[
  {
    "path": ".dockerignore",
    "content": ".git\n/shared-*\nrelease-v*/**\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.md",
    "content": "---\nname: Bug report\nabout: Create a report to help us improve\ntitle: '[Bug]: '\nlabels: [\"bug\", \"needs-triage\"]\ntype: bug\n\n---\n\n_**Important Note: NVIDIA AI Enterprise customers can get support from NVIDIA Enterprise support. Please open a case [here](https://enterprise-support.nvidia.com/s/create-case)**._\n\n**Describe the bug**\nA clear and concise description of what the bug is.\n\n**To Reproduce**\nDetailed steps to reproduce the issue.\n\n**Expected behavior**\nA clear and concise description of what you expected to happen.\n\n**Environment (please provide the following information):**\n - `nvidia-container-toolkit` version: [e.g. `v1.18.2`]\n - NVIDIA Driver Version: [e.g. 580.105.08]\n - Host OS: [e.g. Ubuntu24.04]\n - Kernel Version: [e.g. 6.8.0-generic]\n - Container Runtime Version: [e.g. containerd 2.0.0]\n - CPU Architecture [e.g. `x86_64`, `arm64` ]\n - GPU Model(s) [e.g. A100, L40, RTX 3090]\n\n If applicable, also provide:\n - Kubernetes Distro and Version: [e.g. K8s, OpenShift, Rancher, GKE, EKS]\n - NVIDIA GPU Operator version\n - CUDA Version\n\n**Information to [attach](https://help.github.com/articles/file-attachments-on-issues-and-pull-requests/)** (optional if deemed irrelevant)\n\n- Output of `nvidia-smi`\n- Container logs\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "content": "blank_issues_enabled: false\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.md",
    "content": "---\nname: Feature request\nabout: Submit a feature request\ntitle: \"[Feature]: \"\nlabels: [\"feature\", \"needs-triage\", \"lifecycle/frozen\"]\ntype: enhancement\n\n---\n\n<!--\nA clear and concise description of the feature request.\nPlease include:\n- The motivation for the proposal.\n- Whether it is related to a specific problem (e.g., *\"I'm working on X and would like Y to be possible\"*).\n- Links to any related GitHub issues.\n-->\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/question.md",
    "content": "---\nname: Question / General Discussion\nabout: Ask a question or raise a discussion\ntitle: \"[Question]: \"\nlabels: [\"question\"]\n---\n\n<!-- Ask question(s) or raise a discussion related to nvidia container toolkit -->\n"
  },
  {
    "path": ".github/copy-pr-bot.yaml",
    "content": "# https://docs.gha-runners.nvidia.com/apps/copy-pr-bot/#configuration\n\nenabled: true\n"
  },
  {
    "path": ".github/dependabot.yml",
    "content": "# Please see the documentation for all configuration options:\n# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates\n\nversion: 2\nupdates:\n# main branch\n  - package-ecosystem: \"gomod\"\n    target-branch: main\n    directories:\n    - \"/\"\n    - \"deployments/devel\"\n    - \"tests\"\n    schedule:\n      interval: \"daily\"\n    labels:\n    - dependencies\n    groups:\n      k8sio:\n        patterns:\n        - k8s.io/*\n        exclude-patterns:\n        - k8s.io/klog/*\n\n  - package-ecosystem: \"docker\"\n    target-branch: main\n    directories:\n    # CUDA image\n    - \"/deployments/container\"\n    # Golang version\n    - \"/deployments/devel\"\n    schedule:\n      interval: \"daily\"\n    labels:\n    - dependencies\n\n  - package-ecosystem: \"github-actions\"\n    target-branch: main\n    directory: \"/\"\n    schedule:\n      interval: \"daily\"\n    labels:\n    - dependencies\n\n  # Allow dependabot to update the libnvidia-container submodule.\n  - package-ecosystem: \"gitsubmodule\"\n    target-branch: main\n    directory: \"/\"\n    allow:\n    - dependency-name: \"third_party/libnvidia-container\"\n    schedule:\n      interval: \"daily\"\n    labels:\n    - dependencies\n    - libnvidia-container\n\n# The release branch(es):\n  - package-ecosystem: \"gomod\"\n    target-branch: release-1.18\n    directories:\n    - \"/\"\n    # We don't update development or test dependencies on release branches\n    # - \"deployments/devel\"\n    # - \"tests\"\n    schedule:\n      interval: \"weekly\"\n      day: \"sunday\"\n    labels:\n    - dependencies\n    - maintenance\n    ignore:\n    # For release branches we only consider patch updates.\n    - dependency-name: \"*\"\n      update-types:\n      - version-update:semver-major\n      - version-update:semver-minor\n    groups:\n      k8sio:\n        patterns:\n        - k8s.io/*\n        exclude-patterns:\n        - k8s.io/klog/*\n\n  - package-ecosystem: \"docker\"\n    target-branch: release-1.18\n    directories:\n    # CUDA image\n    - \"/deployments/container\"\n    # Golang version\n    - \"/deployments/devel\"\n    schedule:\n      interval: \"weekly\"\n      day: \"sunday\"\n    ignore:\n    # For release branches we only apply patch updates to the golang version.\n    - dependency-name: \"*golang*\"\n      update-types:\n      - version-update:semver-major\n      - version-update:semver-minor\n    labels:\n    - dependencies\n    - maintenance\n\n  - package-ecosystem: \"github-actions\"\n    target-branch: release-1.18\n    directory: \"/\"\n    schedule:\n      interval: \"weekly\"\n      day: \"sunday\"\n    labels:\n    - dependencies\n    - maintenance\n\n  # Github actions need to be gh-pages branches.\n  - package-ecosystem: \"github-actions\"\n    target-branch: gh-pages\n    directory: \"/\"\n    schedule:\n      interval: \"daily\"\n    labels:\n    - dependencies\n"
  },
  {
    "path": ".github/scripts/add-labels-from-comment.js",
    "content": "/**\n * Copyright 2025 NVIDIA CORPORATION\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nmodule.exports = async ({ github, context, core }) => {\n  const commentBody = context.payload.comment.body;\n  const prNumber = context.payload.issue.number;\n\n  core.info(`Processing comment: ${commentBody}`);\n\n  // Parse comment for /cherry-pick branches\n  const cherryPickPattern = /^\\/cherry-pick\\s+(.+)$/m;\n  const match = commentBody.match(cherryPickPattern);\n\n  if (!match) {\n    core.warning('Comment does not match /cherry-pick pattern');\n    return { success: false, message: 'Invalid format' };\n  }\n\n  // Extract all release branches (space-separated)\n  const branchesText = match[1].trim();\n  const branchPattern = /release-\\d+\\.\\d+(?:\\.\\d+)?/g;\n  const branches = branchesText.match(branchPattern) || [];\n\n  if (branches.length === 0) {\n    core.warning('No valid release branches found in comment');\n    await github.rest.reactions.createForIssueComment({\n      owner: context.repo.owner,\n      repo: context.repo.repo,\n      comment_id: context.payload.comment.id,\n      content: 'confused'\n    });\n    return { success: false, message: 'No valid branches found' };\n  }\n\n  core.info(`Found branches: ${branches.join(', ')}`);\n\n  // Add labels to PR\n  const labels = branches.map(branch => `cherry-pick/${branch}`);\n  \n  try {\n    await github.rest.issues.addLabels({\n      owner: context.repo.owner,\n      repo: context.repo.repo,\n      issue_number: prNumber,\n      labels: labels\n    });\n    core.info(`Added labels: ${labels.join(', ')}`);\n  } catch (error) {\n    core.error(`Failed to add labels: ${error.message}`);\n    await github.rest.reactions.createForIssueComment({\n      owner: context.repo.owner,\n      repo: context.repo.repo,\n      comment_id: context.payload.comment.id,\n      content: '-1'\n    });\n    return { success: false, message: error.message };\n  }\n\n  // React with checkmark emoji\n  await github.rest.reactions.createForIssueComment({\n    owner: context.repo.owner,\n    repo: context.repo.repo,\n    comment_id: context.payload.comment.id,\n    content: '+1'\n  });\n\n  // Check if PR is already merged\n  const { data: pullRequest } = await github.rest.pulls.get({\n    owner: context.repo.owner,\n    repo: context.repo.repo,\n    pull_number: prNumber\n  });\n\n  if (pullRequest.merged) {\n    core.info('PR is already merged - triggering backport immediately');\n    \n    // Set branches in environment and trigger backport\n    process.env.BRANCHES_JSON = JSON.stringify(branches);\n    \n    // Run backport script\n    const backportScript = require('./backport.js');\n    const results = await backportScript({ github, context, core });\n    \n    return { \n      success: true, \n      message: `Labels added and backport triggered for: ${branches.join(', ')}`,\n      backportResults: results\n    };\n  } else {\n    core.info('PR not yet merged - labels added, backport will trigger on merge');\n    return { \n      success: true, \n      message: `Labels added for: ${branches.join(', ')}. Backport will trigger on merge.`\n    };\n  }\n};\n\n"
  },
  {
    "path": ".github/scripts/backport.js",
    "content": "/**\n * Copyright 2025 NVIDIA CORPORATION\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nmodule.exports = async ({ github, context, core }) => {\nconst branches = JSON.parse(process.env.BRANCHES_JSON || '[]');\n\n// Get PR number from event\nconst prNumber = context.payload.pull_request?.number || context.payload.issue.number;\n\n// Fetch full PR data (needed when triggered via issue_comment)\nconst { data: pullRequest } = await github.rest.pulls.get({\n  owner: context.repo.owner,\n  repo: context.repo.repo,\n  pull_number: prNumber\n});\n\nconst prTitle = pullRequest.title;\nconst prAuthor = pullRequest.user.login;\n\n// Get all commits from the PR\nconst { data: commits } = await github.rest.pulls.listCommits({\n  owner: context.repo.owner,\n  repo: context.repo.repo,\n  pull_number: prNumber\n});\n\nif (commits.length === 0) {\n  core.warning('No commits found in PR - skipping backport');\n  return [];\n}\n\ncore.info(`Backporting PR #${prNumber}: \"${prTitle}\"`);\ncore.info(`Commits to cherry-pick: ${commits.length}`);\ncommits.forEach((commit, index) => {\n  core.info(`  ${index + 1}. ${commit.sha.substring(0, 7)} - ${commit.commit.message.split('\\n')[0]}`);\n});\n\nconst { execSync } = require('child_process');\n\nconst results = [];\n\nfor (const targetBranch of branches) {\n  core.info(`\\n========================================`);\n  core.info(`Backporting to ${targetBranch}`);\n  core.info(`========================================`);\n  const backportBranch = `backport-${prNumber}-to-${targetBranch}`;\n  try {\n    // Create/reset backport branch from target release branch\n    core.info(`Creating/resetting branch ${backportBranch} from ${targetBranch}`);\n    execSync(`git fetch origin ${targetBranch}:${targetBranch}`, { stdio: 'inherit' });\n    execSync(`git checkout -B ${backportBranch} ${targetBranch}`, { stdio: 'inherit' });\n    // Cherry-pick each commit from the PR\n    let hasConflicts = false;\n    for (let i = 0; i < commits.length; i++) {\n      const commit = commits[i];\n      const commitSha = commit.sha;\n      const commitMessage = commit.commit.message.split('\\n')[0];\n      core.info(`Cherry-picking commit ${i + 1}/${commits.length}: ${commitSha.substring(0, 7)} - ${commitMessage}`);\n      try {\n        execSync(`git cherry-pick -m 1 -x ${commitSha}`, { \n          encoding: 'utf-8',\n          stdio: 'pipe'\n        });\n      } catch (error) {\n        // Check if it's a conflict\n        const status = execSync('git status', { encoding: 'utf-8' });\n        if (status.includes('Unmerged paths') || status.includes('both modified')) {\n          hasConflicts = true;\n          core.warning(`Cherry-pick has conflicts for commit ${commitSha.substring(0, 7)}.`);\n          // Add all files (including conflicted ones) and commit\n          execSync('git add .', { stdio: 'inherit' });\n          try {\n            execSync(`git -c core.editor=true cherry-pick --continue`, { stdio: 'inherit' });\n          } catch (e) {\n            // If continue fails, make a simple commit\n            execSync(`git commit --no-edit --allow-empty-message || git commit -m \"Cherry-pick ${commitSha} (with conflicts)\"`, { stdio: 'inherit' });\n          }\n        } else if (error.message && error.message.includes('previous cherry-pick is now empty')) {\n          // Handle empty commits (changes already exist in target branch)\n          core.info(`Commit ${commitSha.substring(0, 7)} is empty (changes already in target branch), skipping`);\n          execSync('git cherry-pick --skip', { stdio: 'inherit' });\n        } else {\n          throw error;\n        }\n      }\n    }\n    // Push the backport branch (force to handle updates)\n    core.info(`Pushing ${backportBranch} to origin`);\n    execSync(`git push --force-with-lease origin ${backportBranch}`, { stdio: 'inherit' });\n    \n    // Check if a PR already exists for this backport branch\n    const { data: existingPRs } = await github.rest.pulls.list({\n      owner: context.repo.owner,\n      repo: context.repo.repo,\n      head: `${context.repo.owner}:${backportBranch}`,\n      base: targetBranch,\n      state: 'open'\n    });\n    const existingPR = existingPRs.length > 0 ? existingPRs[0] : null;\n    \n    // Create pull request\n    const commitList = commits.map(c => `- \\`${c.sha.substring(0, 7)}\\` ${c.commit.message.split('\\n')[0]}`).join('\\n');\n    \n    // Build PR body based on conflict status\n    let prBody = `🤖 **Automated backport of #${prNumber} to \\`${targetBranch}\\`**\\n\\n`;\n    \n    if (hasConflicts) {\n      prBody += `⚠️ **This PR has merge conflicts that need manual resolution.**\n\nOriginal PR: #${prNumber}\nOriginal Author: @${prAuthor}\n\n**Cherry-picked commits (${commits.length}):**\n${commitList}\n\n**Next Steps:**\n1. Review the conflicts in the \"Files changed\" tab\n2. Check out this branch locally: \\`git fetch origin ${backportBranch} && git checkout ${backportBranch}\\`\n3. Resolve conflicts manually\n4. Push the resolution: \\`git push --force-with-lease origin ${backportBranch}\\`\n\n---\n<details>\n<summary>Instructions for resolving conflicts</summary>\n\n\\`\\`\\`bash\ngit fetch origin ${backportBranch}\ngit checkout ${backportBranch}\n# Resolve conflicts in your editor\ngit add .\ngit commit\ngit push --force-with-lease origin ${backportBranch}\n\\`\\`\\`\n</details>`;\n    } else {\n      prBody += `✅ Cherry-pick completed successfully with no conflicts.\n\nOriginal PR: #${prNumber}\nOriginal Author: @${prAuthor}\n\n**Cherry-picked commits (${commits.length}):**\n${commitList}\n\nThis backport was automatically created by the backport bot.`;\n    }\n\n    if (existingPR) {\n      // Update existing PR\n      core.info(`Found existing PR #${existingPR.number}, updating it`);\n      await github.rest.pulls.update({\n        owner: context.repo.owner,\n        repo: context.repo.repo,\n        pull_number: existingPR.number,\n        body: prBody,\n        draft: hasConflicts\n      });\n      \n      // Update labels\n      const currentLabels = existingPR.labels.map(l => l.name);\n      const desiredLabels = ['backport', hasConflicts ? 'needs-manual-resolution' : 'auto-backport'];\n      \n      // Remove old labels if conflict status changed\n      if (hasConflicts && currentLabels.includes('auto-backport')) {\n        await github.rest.issues.removeLabel({\n          owner: context.repo.owner,\n          repo: context.repo.repo,\n          issue_number: existingPR.number,\n          name: 'auto-backport'\n        }).catch(() => {}); // Ignore if label doesn't exist\n      } else if (!hasConflicts && currentLabels.includes('needs-manual-resolution')) {\n        await github.rest.issues.removeLabel({\n          owner: context.repo.owner,\n          repo: context.repo.repo,\n          issue_number: existingPR.number,\n          name: 'needs-manual-resolution'\n        }).catch(() => {}); // Ignore if label doesn't exist\n      }\n      \n      // Add current labels\n      await github.rest.issues.addLabels({\n        owner: context.repo.owner,\n        repo: context.repo.repo,\n        issue_number: existingPR.number,\n        labels: desiredLabels\n      });\n      \n      // Comment about the update\n      await github.rest.issues.createComment({\n        owner: context.repo.owner,\n        repo: context.repo.repo,\n        issue_number: prNumber,\n        body: `🤖 Updated existing backport PR for \\`${targetBranch}\\`: #${existingPR.number} ${hasConflicts ? '⚠️ (has conflicts)' : '✅'}`\n      });\n      \n      results.push({\n        branch: targetBranch,\n        success: true,\n        prNumber: existingPR.number,\n        prUrl: existingPR.html_url,\n        hasConflicts,\n        updated: true\n      });\n      core.info(`✅ Successfully updated backport PR #${existingPR.number}`);\n    } else {\n      // Create new PR\n      const newPR = await github.rest.pulls.create({\n        owner: context.repo.owner,\n        repo: context.repo.repo,\n        title: `[${targetBranch}] ${prTitle}`,\n        head: backportBranch,\n        base: targetBranch,\n        body: prBody,\n        draft: hasConflicts\n      });\n      // Add labels\n      await github.rest.issues.addLabels({\n        owner: context.repo.owner,\n        repo: context.repo.repo,\n        issue_number: newPR.data.number,\n        labels: ['backport', hasConflicts ? 'needs-manual-resolution' : 'auto-backport']\n      });\n      // Link to original PR\n      await github.rest.issues.createComment({\n        owner: context.repo.owner,\n        repo: context.repo.repo,\n        issue_number: prNumber,\n        body: `🤖 Backport PR created for \\`${targetBranch}\\`: #${newPR.data.number} ${hasConflicts ? '⚠️ (has conflicts)' : '✅'}`\n      });\n      results.push({\n        branch: targetBranch,\n        success: true,\n        prNumber: newPR.data.number,\n        prUrl: newPR.data.html_url,\n        hasConflicts,\n        updated: false\n      });\n      core.info(`✅ Successfully created backport PR #${newPR.data.number}`);\n    }\n  } catch (error) {\n    core.error(`❌ Failed to backport to ${targetBranch}: ${error.message}`);\n    // Comment on original PR about the failure\n    await github.rest.issues.createComment({\n      owner: context.repo.owner,\n      repo: context.repo.repo,\n      issue_number: prNumber,\n      body: `❌ Failed to create backport PR for \\`${targetBranch}\\`\\n\\nError: ${error.message}\\n\\nPlease backport manually.`\n    });\n    results.push({\n      branch: targetBranch,\n      success: false,\n      error: error.message\n    });\n  } finally {\n    // Clean up: go back to main branch\n    try {\n      execSync('git checkout main', { stdio: 'inherit' });\n      execSync(`git branch -D ${backportBranch} 2>/dev/null || true`, { stdio: 'inherit' });\n    } catch (e) {\n      // Ignore cleanup errors\n    }\n  }\n}\n\n// Summary (console only)\ncore.info('\\n========================================');\ncore.info('Backport Summary');\ncore.info('========================================');\nfor (const result of results) {\n  if (result.success) {\n    const action = result.updated ? 'Updated' : 'Created';\n    core.info(`✅ ${result.branch}: ${action} PR #${result.prNumber} ${result.hasConflicts ? '(has conflicts)' : ''}`);\n  } else {\n    core.error(`❌ ${result.branch}: ${result.error}`);\n  }\n}\nreturn results;\n};\n"
  },
  {
    "path": ".github/scripts/extract-branches.js",
    "content": "/**\n * Copyright 2025 NVIDIA CORPORATION\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nmodule.exports = async ({ github, context, core }) => {\n  let branches = [];\n\n  // Get PR labels\n  const labels = context.payload.pull_request?.labels || [];\n\n  if (labels.length === 0) {\n    core.info('No labels found on PR - skipping backport');\n    return [];\n  }\n\n  // Extract branches from cherry-pick/* labels\n  const cherryPickPattern = /^cherry-pick\\/(release-\\d+\\.\\d+(?:\\.\\d+)?)$/;\n  \n  for (const label of labels) {\n    const match = label.name.match(cherryPickPattern);\n    if (match) {\n      branches.push(match[1]);\n      core.info(`Found cherry-pick label: ${label.name} -> ${match[1]}`);\n    }\n  }\n\n  if (branches.length === 0) {\n    core.info('No cherry-pick labels found - skipping backport');\n    return [];\n  }\n\n  core.info(`Target branches: ${branches.join(', ')}`);\n  return branches;\n};\n"
  },
  {
    "path": ".github/workflows/cherrypick.yml",
    "content": "# Copyright 2025 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nname: Cherry-Pick\n\non:\n  issue_comment:\n    types: [created]\n  pull_request_target:\n    types: [closed]\n\npermissions:\n  contents: write\n  pull-requests: write\n  issues: write\n\njobs:\n  add-labels:\n    name: Add Cherry-Pick Labels from Comment\n    runs-on: ubuntu-latest\n    # Run on /cherry-pick comments on PRs\n    if: |\n      github.event_name == 'issue_comment' &&\n      github.event.issue.pull_request && \n      startsWith(github.event.comment.body, '/cherry-pick')\n    \n    steps:\n      - name: Checkout repository\n        uses: actions/checkout@v6\n        with:\n          fetch-depth: 0\n          token: ${{ secrets.GITHUB_TOKEN }}\n\n      - name: Configure git\n        run: |\n          git config user.name \"github-actions[bot]\"\n          git config user.email \"41898282+github-actions[bot]@users.noreply.github.com\"\n\n      - name: Add labels and handle backport\n        uses: actions/github-script@v8\n        with:\n          script: |\n            const run = require('./.github/scripts/add-labels-from-comment.js');\n            return await run({ github, context, core });\n\n  backport:\n    name: Backport PR\n    runs-on: ubuntu-latest\n    # Run when PR is merged and has cherry-pick labels\n    if: |\n      github.event_name == 'pull_request_target' &&\n      github.event.pull_request.merged == true &&\n      contains(join(github.event.pull_request.labels.*.name, ','), 'cherry-pick/')\n    \n    steps:\n      - name: Checkout base branch repository\n        uses: actions/checkout@v6\n        with:\n          fetch-depth: 0\n          ref: ${{ github.event.pull_request.base.ref }}\n          token: ${{ secrets.GITHUB_TOKEN }}\n\n      - name: Extract target branches from PR labels\n        id: extract-branches\n        uses: actions/github-script@v8\n        with:\n          script: |\n            const run = require('./.github/scripts/extract-branches.js');\n            return await run({ github, context, core });\n\n      - name: Configure git\n        if: steps.extract-branches.outputs.result != '[]'\n        run: |\n          git config user.name \"nvidia-backport-bot\"\n          git config user.email \"noreply@nvidia.com\"\n\n      - name: Backport to release branches\n        id: backport\n        if: steps.extract-branches.outputs.result != '[]'\n        uses: actions/github-script@v8\n        env:\n          BRANCHES_JSON: ${{ steps.extract-branches.outputs.result }}\n        with:\n          script: |\n            const run = require('./.github/scripts/backport.js');\n            return await run({ github, context, core });\n"
  },
  {
    "path": ".github/workflows/ci.yaml",
    "content": "# Copyright 2025 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nname: CI Pipeline\n\non:\n  push:\n    branches:\n      - \"pull-request/[0-9]+\"\n      - main\n      - release-*\n\njobs:\n  code-scanning:\n    uses: ./.github/workflows/code_scanning.yaml\n\n  variables:\n    runs-on: ubuntu-latest\n    outputs:\n      version: ${{ steps.version.outputs.version }}\n    steps:\n      - name: Generate Commit Short SHA\n        id: version\n        run: echo \"version=$(echo $GITHUB_SHA | cut -c1-8)\" >> \"$GITHUB_OUTPUT\"\n\n  golang:\n    secrets: inherit\n    uses: ./.github/workflows/golang.yaml\n\n  image:\n    uses: ./.github/workflows/image.yaml\n    needs: [variables, golang, code-scanning]\n    secrets: inherit\n    with:\n      version: ${{ needs.variables.outputs.version }}\n      build_multi_arch_images: ${{ github.ref_name == 'main' || startsWith(github.ref_name, 'release-') }}\n\n  e2e-test:\n    needs: [image, variables]\n    secrets: inherit\n    uses: ./.github/workflows/e2e.yaml\n    with:\n      version: ${{ needs.variables.outputs.version }}\n"
  },
  {
    "path": ".github/workflows/code_scanning.yaml",
    "content": "# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nname: \"CodeQL\"\n\non:\n  workflow_call: {}\n  pull_request:\n    types:\n      - opened\n      - synchronize\n    branches:\n      - main\n      - release-*\n\njobs:\n  analyze:\n    name: Analyze Go code with CodeQL\n    runs-on: ubuntu-latest\n    timeout-minutes: 360\n    permissions:\n      security-events: write\n      packages: read\n    steps:\n    - name: Checkout repository\n      uses: actions/checkout@v6\n    - name: Initialize CodeQL\n      uses: github/codeql-action/init@v4\n      with:\n        languages: go\n        build-mode: manual\n    - shell: bash\n      run: |\n        make build\n    - name: Perform CodeQL Analysis\n      uses: github/codeql-action/analyze@v4\n      with:\n        category: \"/language:go\"\n"
  },
  {
    "path": ".github/workflows/e2e.yaml",
    "content": "# Copyright 2025 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nname: End-to-end Tests\n\non:\n  workflow_call:\n    inputs:\n      version:\n        required: true\n        type: string\n    secrets:\n      AWS_ACCESS_KEY_ID:\n        required: true\n      AWS_SECRET_ACCESS_KEY:\n        required: true\n      AWS_SSH_KEY:\n        required: true\n      E2E_SSH_USER:\n        required: true\n      SLACK_BOT_TOKEN:\n        required: true\n      SLACK_CHANNEL_ID:\n        required: true\n\njobs:\n  e2e-tests:\n    runs-on: linux-amd64-cpu4\n    strategy:\n      matrix:\n        ispr:\n          - ${{ github.ref_name != 'main' && !startsWith( github.ref_name, 'release-' ) }}\n        driver_branch:\n          # LTS branch. EOL June 2026\n          - 535\n          # Production branch. EOL February 2026\n          - 570\n          # LTS branch. EOL August 2028\n          - 580\n        exclude:\n          - ispr: true\n            driver_branch: 570\n          - ispr: true\n            driver_branch: 580\n    steps:\n      - name: Check out code\n        uses: actions/checkout@v6\n\n      - name: Calculate build vars\n        id: vars\n        run: |\n          echo \"COMMIT_SHORT_SHA=${GITHUB_SHA:0:8}\" >> $GITHUB_ENV\n          echo \"LOWERCASE_REPO_OWNER=$(echo \"${GITHUB_REPOSITORY_OWNER}\" | awk '{print tolower($0)}')\" >> $GITHUB_ENV\n          GOLANG_VERSION=$(./hack/golang-version.sh)\n          echo \"GOLANG_VERSION=${GOLANG_VERSION##GOLANG_VERSION := }\" >> $GITHUB_ENV\n\n      - name: Install Go\n        uses: actions/setup-go@v6\n        with:\n          go-version: ${{ env.GOLANG_VERSION }}\n\n      - name: Set up Holodeck (${{ matrix.driver_branch }})\n        uses: NVIDIA/holodeck@v0.2.13\n        with:\n          aws_access_key_id: ${{ secrets.AWS_ACCESS_KEY_ID }}\n          aws_secret_access_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}\n          aws_ssh_key: ${{ secrets.AWS_SSH_KEY }}\n          holodeck_config: tests/e2e/infra/driver-branch-${{ matrix.driver_branch }}.yaml\n\n      - name: Get public dns name\n        id: holodeck_public_dns_name\n        uses: mikefarah/yq@master\n        with:\n          cmd: yq '.status.properties[] | select(.name == \"public-dns-name\") | .value' /github/workspace/.cache/holodeck.yaml\n\n      - name: Run e2e tests (${{ matrix.driver_branch }})\n        env:\n          E2E_INSTALL_CTK: \"true\"\n          E2E_IMAGE_NAME: ghcr.io/nvidia/container-toolkit\n          E2E_IMAGE_TAG: ${{ inputs.version }}\n          E2E_SSH_USER: ${{ secrets.E2E_SSH_USER }}\n          E2E_SSH_HOST: ${{ steps.holodeck_public_dns_name.outputs.result }}\n        run: |\n          e2e_ssh_key=$(mktemp)\n          echo \"${{ secrets.AWS_SSH_KEY }}\" > \"$e2e_ssh_key\"\n          chmod 600 \"$e2e_ssh_key\"\n          export E2E_SSH_KEY=\"$e2e_ssh_key\"\n\n          make -f tests/e2e/Makefile test\n\n      - name: Archive Ginkgo logs\n        uses: actions/upload-artifact@v7\n        with:\n          name: ginkgo-logs-${{ matrix.driver_branch }}\n          path: ginkgo.json\n          retention-days: 15\n\n      - name: Send Slack alert notification\n        if: ${{ failure() }}\n        uses: slackapi/slack-github-action@v2.1.1\n        with:\n          method: chat.postMessage\n          token: ${{ secrets.SLACK_BOT_TOKEN }}\n          payload: |\n            channel: ${{ secrets.SLACK_CHANNEL_ID }}\n            text: |\n              :x: On repository ${{ github.repository }}, the Workflow *${{ github.workflow }}-driver-branch-${{ matrix.driver_branch }}* has failed.\n\n              Details: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}\n"
  },
  {
    "path": ".github/workflows/golang.yaml",
    "content": "# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nname: Golang\n\non:\n  workflow_call: {}\n  pull_request:\n    types:\n      - opened\n      - synchronize\n    branches:\n      - main\n      - release-*\n\njobs:\n  check:\n    runs-on: ubuntu-latest\n    steps:\n    - uses: actions/checkout@v6\n      name: Checkout code\n\n    - name: Get Golang version\n      id: vars\n      run: |\n        GOLANG_VERSION=$(./hack/golang-version.sh)\n        echo \"GOLANG_VERSION=${GOLANG_VERSION##GOLANG_VERSION := }\" >> $GITHUB_ENV\n\n    - name: Install Go\n      uses: actions/setup-go@v6\n      with:\n        go-version: ${{ env.GOLANG_VERSION }}\n\n    - name: Lint\n      uses: golangci/golangci-lint-action@v9\n      with:\n        version: latest\n        args: -v --timeout 5m\n        skip-cache: true\n\n    - name: Check golang modules\n      run: |\n        make check-vendor\n        make -C deployments/devel check-modules\n\n  test:\n    name: Unit test\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout code\n        uses: actions/checkout@v6\n\n      - name: Get Golang version\n        id: vars\n        run: |\n          GOLANG_VERSION=$(./hack/golang-version.sh)\n          echo \"GOLANG_VERSION=${GOLANG_VERSION##GOLANG_VERSION := }\" >> $GITHUB_ENV\n\n      - name: Install Go\n        uses: actions/setup-go@v6\n        with:\n          go-version: ${{ env.GOLANG_VERSION }}\n\n      - name: Run unit tests and generate coverage report\n        run: make coverage\n\n      - name: Upload to Coveralls\n        continue-on-error: true\n        uses: coverallsapp/github-action@v2\n        with:\n          github-token: ${{ secrets.GITHUB_TOKEN }}\n          file: coverage.out\n\n  build:\n    name: Build\n    runs-on: ${{ ( github.event_name == 'pull_request' ) && 'ubuntu-latest' || 'linux-amd64-cpu4' }}\n    permissions:\n      contents: read\n      id-token: write\n    steps:\n      - name: Checkout code\n        uses: actions/checkout@v6\n\n      - name: Get Golang version\n        id: vars\n        run: |\n          GOLANG_VERSION=$(./hack/golang-version.sh)\n          echo \"GOLANG_VERSION=${GOLANG_VERSION##GOLANG_VERSION ?= }\" >> $GITHUB_ENV\n\n      - name: Install Go\n        uses: actions/setup-go@v6\n        with:\n          go-version: ${{ env.GOLANG_VERSION }}\n\n      - name: Setup Go Proxy\n        if: ${{ !( github.event_name == 'pull_request' ) }}\n        id: setup-go-proxy\n        uses: nv-gha-runners/setup-artifactory-go-proxy@main\n\n      - env:\n          GOPROXY: ${{ ( github.event_name == 'pull_request' )  && '' || steps.setup-go-proxy.outputs.goproxy-url }}\n        run: |\n          make build\n"
  },
  {
    "path": ".github/workflows/image.yaml",
    "content": "# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Run this workflow on pull requests\nname: image\n\non:\n  workflow_call:\n    inputs:\n      version:\n        required: true\n        type: string\n      build_multi_arch_images:\n        required: true\n        type: string\n\njobs:\n  packages:\n    runs-on: ubuntu-latest\n    strategy:\n      matrix:\n        target:\n          - ubuntu18.04-arm64\n          - ubuntu18.04-amd64\n          - centos7-aarch64\n          - centos7-x86_64\n        ispr:\n          - ${{ github.ref_name != 'main' && !startsWith( github.ref_name, 'release-' ) }}\n        exclude:\n          - ispr: true\n            target: ubuntu18.04-arm64\n          - ispr: true\n            target: centos7-aarch64\n      fail-fast: false\n\n    steps:\n      - uses: actions/checkout@v6\n        name: Check out code\n\n      - name: Set up QEMU\n        uses: docker/setup-qemu-action@v3\n        with:\n          image: tonistiigi/binfmt:master\n\n      - name: Set up Docker Buildx\n        uses: docker/setup-buildx-action@v3\n\n      - name: build ${{ matrix.target }} packages\n        run: |\n          sudo apt-get install -y coreutils build-essential sed git bash make\n          echo \"Building packages\"\n          ./scripts/build-packages.sh ${{ matrix.target }}\n\n      - name: 'Upload Artifacts'\n        uses: actions/upload-artifact@v7\n        with:\n          compression-level: 0\n          name: toolkit-container-${{ matrix.target }}-${{ github.run_id }}\n          path: ${{ github.workspace }}/dist/*\n\n  image:\n    runs-on: linux-amd64-cpu4\n    permissions:\n      contents: read\n      id-token: write\n      packages: write\n    strategy:\n      matrix:\n        target:\n          - application\n          - packaging\n    needs: packages\n    steps:\n      - uses: actions/checkout@v6\n        name: Check out code\n\n      - name: Set up QEMU\n        uses: docker/setup-qemu-action@v3\n        with:\n          image: tonistiigi/binfmt:master\n\n      - name: Set up Docker Buildx\n        uses: docker/setup-buildx-action@v3\n\n      - name: Get built packages\n        uses: actions/download-artifact@v8\n        with:\n          path: ${{ github.workspace }}/dist/\n          pattern: toolkit-container-*-${{ github.run_id }}\n          merge-multiple: true\n\n      - name: Login to GitHub Container Registry\n        uses: docker/login-action@v3\n        with:\n          registry: ghcr.io\n          username: ${{ github.actor }}\n          password: ${{ secrets.GITHUB_TOKEN }}\n\n      - name: Setup Go Proxy\n        id: setup-go-proxy\n        uses: nv-gha-runners/setup-artifactory-go-proxy@main\n\n      - name: Build image\n        env:\n          IMAGE_NAME: ghcr.io/nvidia/container-toolkit\n          VERSION: ${{ inputs.version }}\n          PUSH_ON_BUILD: \"true\"\n          BUILD_MULTI_ARCH_IMAGES: ${{ inputs.build_multi_arch_images }}\n          GOPROXY: ${{ steps.setup-go-proxy.outputs.goproxy-url }}\n        run: |\n          echo \"${VERSION}\"\n          make -f deployments/container/Makefile build-${{ matrix.target }}\n"
  },
  {
    "path": ".github/workflows/release.yaml",
    "content": "# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Run this workflow on new tags\nname: Release\n\non:\n  push:\n    tags:\n      - v*\n\njobs:\n  release:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v6\n        name: Check out code\n\n      - name: Prepare Artifacts\n        run: |\n          ./hack/prepare-artifacts.sh ${{ github.ref_name }}\n\n      - name: Create Draft Release\n        env:\n          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n        run: |\n          ./hack/create-release.sh ${{ github.ref_name }}\n"
  },
  {
    "path": ".github/workflows/stale.yaml",
    "content": "name: Stale issues\n\non:\n  workflow_dispatch:\n  schedule:\n  - cron: \"21 4 * * *\"\n\njobs:\n  stale:\n    permissions:\n      actions: write\n      issues: write\n    runs-on: ubuntu-latest\n\n    steps:\n    - uses: actions/stale@v10\n      with:\n        stale-issue-message: 'This issue is stale because it has been open 90 days with no activity. This issue will be closed in 30 days unless new comments are made or the stale label is removed. To skip these checks, apply the \"lifecycle/frozen\" label.'\n        stale-issue-label: 'lifecycle/stale'\n        exempt-issue-labels: 'lifecycle/frozen,feature,enhancement'\n        days-before-stale: 90\n        close-issue-message: 'This issue was automatically closed due to inactivity.'\n        days-before-issue-close: 30\n        remove-stale-when-updated: true\n        operations-per-run: 1000\n"
  },
  {
    "path": ".gitignore",
    "content": "/dist\n/artifacts\n*.swp\n*.swo\n/coverage.out*\n/tests/output/\n/nvidia-*\n/shared-*\n/release-*\n/bin\n/toolkit-test\n"
  },
  {
    "path": ".gitmodules",
    "content": "[submodule \"third_party/libnvidia-container\"]\n\tpath = third_party/libnvidia-container\n\turl = https://github.com/NVIDIA/libnvidia-container.git\n\tbranch = main\n"
  },
  {
    "path": ".golangci.yml",
    "content": "# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nversion: \"2\"\nlinters:\n  enable:\n    - contextcheck\n    - gocritic\n    - gosec\n    - misspell\n    - unconvert\n  exclusions:\n    generated: lax\n    presets:\n      - comments\n      - common-false-positives\n      - legacy\n      - std-error-handling\n    rules:\n      # Exclude the gocritic dupSubExpr issue for cgo files.\n      - linters:\n          - gocritic\n        path: internal/dxcore/dxcore.go\n        text: dupSubExpr\n      # Exclude the checks for usage of returns to config.Delete(Path) in the\n      # crio and containerd config packages.\n      - linters:\n          - errcheck\n        path: pkg/config/engine/\n        text: config.Delete\n      # RENDERD refers to the Render Device and not the past tense of render.\n      - linters:\n          - misspell\n        path: .*.go\n        text: '`RENDERD` is a misspelling of `RENDERED`'\n      # The legacy hook relies on spec.Hooks.Prestart, which is deprecated as of\n      # the v1.2.0 OCI runtime spec.\n      - path: (.+)\\.go$\n        text: SA1019:(.+).Prestart is deprecated(.+)\n      # TODO: We should address each of the following integer overflows.\n      - path: (.+)\\.go$\n        text: 'G115: integer overflow conversion(.+)'\n    paths:\n      - third_party$\n      - builtin$\n      - examples$\nformatters:\n  enable:\n    - gofmt\n    - goimports\n  settings:\n    goimports:\n      local-prefixes:\n        - github.com/NVIDIA/nvidia-container-toolkit\n  exclusions:\n    generated: lax\n    paths:\n      - third_party$\n      - builtin$\n      - examples$\n"
  },
  {
    "path": ".nvidia-ci.yml",
    "content": "# Copyright (c) 2021-2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\ndefault:\n  image: docker\n  services:\n    - name: docker:dind\n      command: [\"--experimental\"]\n  tags:\n    - cnt\n    - container-dev\n    - docker/multi-arch\n    - docker/privileged\n    - os/linux\n    - type/docker\n\nvariables:\n  GIT_SUBMODULE_STRATEGY: recursive\n\n  DOCKER_DRIVER: overlay2\n  DOCKER_TLS_CERTDIR: \"/certs\"\n  # Release \"devel\"-tagged images off the main branch\n  RELEASE_DEVEL_BRANCH: \"main\"\n  DEVEL_RELEASE_IMAGE_VERSION: \"devel\"\n  # On the multi-arch builder we don't need the qemu setup.\n  SKIP_QEMU_SETUP: \"1\"\n  # Define the public staging registry\n  STAGING_REGISTRY: ghcr.io/nvidia\n  STAGING_VERSION: ${CI_COMMIT_SHORT_SHA}\n  ARTIFACTORY_REPO_BASE: \"https://urm.nvidia.com/artifactory/sw-gpu-cloudnative\"\n  KITMAKER_RELEASE_FOLDER: \"kitmaker\"\n  PACKAGE_ARCHIVE_RELEASE_FOLDER: \"releases\"\n\nstages:\n  - pull\n  - scan\n  - release\n  - ngc-publish\n\n.pipeline-trigger-rules:\n  rules:\n    # We trigger the pipeline if started manually\n    - if: $CI_PIPELINE_SOURCE == \"web\"\n    # We trigger the pipeline on the main branch\n    - if: $CI_COMMIT_BRANCH == \"main\"\n    # We trigger the pipeline on the release- branches\n    - if: $CI_COMMIT_BRANCH =~ /^release-.*$/\n    # We trigger the pipeline on tags\n    - if: $CI_COMMIT_TAG && $CI_COMMIT_TAG != \"\"\n\nworkflow:\n  rules:\n    # We trigger the pipeline on a merge request\n    - if: $CI_PIPELINE_SOURCE == 'merge_request_event'\n    # We then add all the regular triggers\n    - !reference [.pipeline-trigger-rules, rules]\n\n# Download the regctl binary for use in the release steps\n.regctl-setup:\n  before_script:\n    - export REGCTL_VERSION=v0.4.5\n    - apk add --no-cache curl\n    - mkdir -p bin\n    - curl -sSLo bin/regctl https://github.com/regclient/regclient/releases/download/${REGCTL_VERSION}/regctl-linux-amd64\n    - chmod a+x bin/regctl\n    - export PATH=$(pwd)/bin:${PATH}\n\n# .copy-images copies the required application and packaging images from the\n# IN_IMAGE=\"${IN_IMAGE_NAME}:${IN_IMAGE_TAG}${TAG_SUFFIX}\"\n# to\n# OUT_IMAGE=\"${OUT_IMAGE_NAME}:${OUT_IMAGE_TAG}${TAG_SUFFIX}\"\n# The script also logs into IN_REGISTRY and OUT_REGISTRY using the supplied\n# username and tokens.\n.copy-images:\n  parallel:\n    matrix:\n      - TAG_SUFFIX: [\"\", \"-packaging\"]\n  before_script:\n    - !reference [.regctl-setup, before_script]\n    - apk add --no-cache make bash\n  variables:\n    REGCTL: regctl\n  script:\n    - |\n      if [ -n ${IN_REGISTRY} ] && [ -n ${IN_REGISTRY_USER} ]; then\n        echo \"Logging in to ${IN_REGISTRY}\"\n        ${REGCTL} registry login \"${IN_REGISTRY}\" -u \"${IN_REGISTRY_USER}\" -p \"${IN_REGISTRY_TOKEN}\" || exit 1\n      fi\n\n      if [ -n ${OUT_REGISTRY} ] && [ -n ${OUT_REGISTRY_USER} ] && [ \"${IN_REGISTRY}\" != \"${OUT_REGISTRY}\" ]; then\n        echo \"Logging in to ${OUT_REGISTRY}\"\n        ${REGCTL} registry login \"${OUT_REGISTRY}\" -u \"${OUT_REGISTRY_USER}\" -p \"${OUT_REGISTRY_TOKEN}\" || exit 1\n      fi\n\n      export IN_IMAGE=\"${IN_IMAGE_NAME}:${IN_IMAGE_TAG}${TAG_SUFFIX}\"\n      export OUT_IMAGE=\"${OUT_IMAGE_NAME}:${OUT_IMAGE_TAG}${TAG_SUFFIX}\"\n\n      echo \"Copying ${IN_IMAGE} to ${OUT_IMAGE}\"\n      ${REGCTL} image copy ${IN_IMAGE} ${OUT_IMAGE}\n\n# pull-images pulls images from the public CI registry to the internal CI registry.\npull-images:\n  extends:\n    - .copy-images\n  stage: pull\n  variables:\n    IN_REGISTRY: \"${STAGING_REGISTRY}\"\n    IN_IMAGE_NAME: ${STAGING_REGISTRY}/container-toolkit\n    IN_IMAGE_TAG: \"${STAGING_VERSION}\"\n\n    OUT_REGISTRY: \"${CI_REGISTRY}\"\n    OUT_REGISTRY_USER: \"${CI_REGISTRY_USER}\"\n    OUT_REGISTRY_TOKEN: \"${CI_REGISTRY_PASSWORD}\"\n    OUT_IMAGE_NAME: \"${CI_REGISTRY_IMAGE}/container-toolkit\"\n    OUT_IMAGE_TAG: \"${CI_COMMIT_SHORT_SHA}\"\n  # We delay the job start to allow the public pipeline to generate the required images.\n  rules:\n    # If the pipeline is triggered from a tag or the WEB UI we don't delay the\n    # start of the pipeline.\n    - if: $CI_COMMIT_TAG || $CI_PIPELINE_SOURCE == \"web\"\n    # If the pipeline is triggered through other means (i.e. a branch or MR)\n    # we add a 30 minute delay to ensure that the images are available in the\n    # public CI registry.\n    - when: delayed\n      start_in: 30 minutes\n  timeout: 30 minutes\n  retry:\n    max: 2\n    when:\n      - job_execution_timeout\n      - stuck_or_timeout_failure\n\n# We skip the integration tests for the internal CI:\n.integration:\n  stage: test\n  before_script:\n    - echo \"Skipped in internal CI\"\n  script:\n    - echo \"Skipped in internal CI\"\n\n# The .scan step forms the base of the image scan operation performed before releasing\n# images.\nscan-images:\n  stage: scan\n  needs:\n  - pull-images\n  image: \"${PULSE_IMAGE}\"\n  parallel:\n    matrix:\n      - TAG_SUFFIX: [\"\"]\n        PLATFORM: [\"linux/amd64\", \"linux/arm64\"]\n      - TAG_SUFFIX: \"-packaging\"\n        PLATFORM: \"linux/amd64\"\n  variables:\n    IMAGE: \"${CI_REGISTRY_IMAGE}/container-toolkit:${CI_COMMIT_SHORT_SHA}\"\n    IMAGE_ARCHIVE: \"container-toolkit-${CI_JOB_ID}.tar\"\n  allow_failure: true\n  script:\n    - |\n      docker login -u \"${CI_REGISTRY_USER}\" -p \"${CI_REGISTRY_PASSWORD}\" \"${CI_REGISTRY}\"\n      export SCAN_IMAGE=${IMAGE}${TAG_SUFFIX}\n      echo \"Scanning image ${SCAN_IMAGE} for ${PLATFORM}\"\n      docker pull --platform=\"${PLATFORM}\" \"${SCAN_IMAGE}\"\n      docker save \"${SCAN_IMAGE}\" -o \"${IMAGE_ARCHIVE}\"\n      AuthHeader=$(echo -n $SSA_CLIENT_ID:$SSA_CLIENT_SECRET | base64 -w0)\n      export SSA_TOKEN=$(curl --request POST --header \"Authorization: Basic $AuthHeader\" --header \"Content-Type: application/x-www-form-urlencoded\" ${SSA_ISSUER_URL} | jq \".access_token\" |  tr -d '\"')\n      if [ -z \"$SSA_TOKEN\" ]; then exit 1; else echo \"SSA_TOKEN set!\"; fi\n\n      pulse-cli -n $NSPECT_ID --ssa $SSA_TOKEN scan -i $IMAGE_ARCHIVE -p $CONTAINER_POLICY -o\n      rm -f \"${IMAGE_ARCHIVE}\"\n  artifacts:\n    when: always\n    expire_in: 1 week\n    paths:\n      - pulse-cli.log\n      - licenses.json\n      - sbom.json\n      - vulns.json\n      - policy_evaluation.json\n\nupload-kitmaker-packages:\n  stage: release\n  needs:\n    - pull-images\n  variables:\n    VERSION: \"${CI_COMMIT_SHORT_SHA}\"\n    PACKAGE_REGISTRY: \"${CI_REGISTRY}\"\n    PACKAGE_REGISTRY_USER: \"${CI_REGISTRY_USER}\"\n    PACKAGE_REGISTRY_TOKEN: \"${CI_REGISTRY_PASSWORD}\"\n    PACKAGE_IMAGE_NAME: \"${CI_REGISTRY_IMAGE}/container-toolkit\"\n    PACKAGE_IMAGE_TAG: \"${CI_COMMIT_SHORT_SHA}-packaging\"\n    KITMAKER_ARTIFACTORY_REPO: \"${ARTIFACTORY_REPO_BASE}-generic-local/${KITMAKER_RELEASE_FOLDER}\"\n    ARTIFACTS_DIR: \"${CI_PROJECT_DIR}/artifacts\"\n  script:\n    - !reference [.regctl-setup, before_script]\n    - apk add --no-cache bash git\n    - regctl registry login \"${PACKAGE_REGISTRY}\" -u \"${PACKAGE_REGISTRY_USER}\" -p \"${PACKAGE_REGISTRY_TOKEN}\"\n    - ./scripts/extract-packages.sh \"${PACKAGE_IMAGE_NAME}:${PACKAGE_IMAGE_TAG}\"\n    - ./scripts/release-kitmaker-artifactory.sh \"${KITMAKER_ARTIFACTORY_REPO}\"\n    - rm -rf ${ARTIFACTS_DIR}\n\npush-images-to-staging:\n  extends:\n    - .copy-images\n  stage: release\n  needs:\n    - scan-images\n  variables:\n    IN_REGISTRY: \"${CI_REGISTRY}\"\n    IN_REGISTRY_USER: \"${CI_REGISTRY_USER}\"\n    IN_REGISTRY_TOKEN: \"${CI_REGISTRY_PASSWORD}\"\n    IN_IMAGE_NAME: \"${CI_REGISTRY_IMAGE}/container-toolkit\"\n    IN_IMAGE_TAG: \"${CI_COMMIT_SHORT_SHA}\"\n\n    OUT_REGISTRY: \"${NGC_REGISTRY}\"\n    OUT_REGISTRY_USER: \"${NGC_REGISTRY_USER}\"\n    OUT_REGISTRY_TOKEN: \"${NGC_REGISTRY_TOKEN}\"\n    OUT_IMAGE_NAME: \"${NGC_STAGING_REGISTRY}/container-toolkit\"\n    OUT_IMAGE_TAG: \"${CI_COMMIT_SHORT_SHA}\"\n\n.publish-images:\n  stage: ngc-publish\n  needs:\n    - scan-images\n    - push-images-to-staging\n  image:\n    name: \"${CNT_NGC_PUBLISH_IMAGE}\"\n    pull_policy: always\n  variables:\n\n  variables:\n    GITLAB_ACCESS_TOKEN: \"${CNT_GITLAB_TOKEN}\"\n\n    IN_IMAGE_TAG: \"${CI_COMMIT_SHORT_SHA}\"\n    OUT_IMAGE_TAG: \"${CI_COMMIT_TAG}\"\n\n    VERSION_FILE: \"build-info-${CI_PIPELINE_ID}.txt\"\n    PROJECT_NAME: \"nvidia-container-toolkit\"\n  before_script:\n    - |\n      if [ -n \"${OVERRIDE_PUBLISHING_PROJECT_PATH}\" ]; then\n        NGC_PUBLISHING_PROJECT_PATH=\"${OVERRIDE_PUBLISHING_PROJECT_PATH}\"\n      fi\n\n      if [ -z \"${NGC_PUBLISHING_PROJECT_PATH}\" ]; then\n        echo \"NGC_PUBLISHING_PROJECT_PATH not set\"\n        exit 1\n      fi\n\n      echo \"publishing to ${NGC_PUBLISHING_PROJECT_PATH}\"\n\n      rm -f ${VERSION_FILE}\n      echo \"${IN_IMAGE_TAG} ${OUT_IMAGE_TAG}\" >> ${VERSION_FILE}\n      echo \"${IN_IMAGE_TAG}-packaging ${OUT_IMAGE_TAG}-packaging\" >> ${VERSION_FILE}\n      cat ${VERSION_FILE}\n  script:\n    - cnt-ngc-publish render --project-name \"${PROJECT_NAME}\" --versions-file \"${VERSION_FILE}\" --output \"${PROJECT_NAME}\".yaml\n    - cnt-ngc-publish merge-request --files \"${PROJECT_NAME}.yaml\"\n  artifacts:\n    paths:\n      - \"${VERSION_FILE}\"\n      - \"${PROJECT_NAME}.yaml\"\n\n\npublish-images-to-ngc:\n  extends:\n    - .publish-images\n  rules:\n    - if: $CI_COMMIT_TAG\n\n# We create a dummy MR that exercises the publishing logic.\n# TODO: This MR should be closed automatically.\npublish-images-dummy:\n  extends:\n    - .publish-images\n  variables:\n    OVERRIDE_PUBLISHING_PROJECT_PATH: \"dl/container-dev/ngc-automation\"\n    OUT_IMAGE_TAG: \"publish-${CI_COMMIT_SHORT_SHA}\"\n  rules:\n    - if: $CI_COMMIT_TAG == null || $CI_COMMIT_TAG == \"\"\n"
  },
  {
    "path": "CHANGELOG.md",
    "content": "# NVIDIA Container Toolkit Changelog\n\n## v1.19.0\n- Promote v1.19.0-rc.7 to v1.19.0\n\n## v1.19.0-rc.7\n- fix: Reuse instantiated editsFactory in CDI\n- fix: Don't use driver version in ELF header for compat check\n- Use jit-cdi modifier for gated modifiers\n- refactor: Use automatic CDI modifier for CSV\n- fix: Use driver.Root instead of config option in modifier Factory\n- test: Improve csv modifier tests\n- test: Add IsOverrideApplied function to devices package\n- chore: Run goimports on mocks\n- fix: Ensure that CUDA Compat Container path is set by default\n- chore: Update isIntegratedGPU for readability\n- chore: Rename isIntegratedGPUID function to isOrinGPUID\n- fix: Use correct version when updating versions.mk\n\n## v1.19.0-rc.6\n\n- Use host CUDA version for all CSV compat checks\n\n## v1.19.0-rc.5\n\n- Remove dlopen locator added in v1.19.0-rc.4\n\n### Changes in the Toolkit Container\n\n- build(deps): Bump nvidia/distroless/go to v4.0.2-dev in /deployments/container\n\n## v1.19.0-rc.4\n\n- Add a Dlopen-based library locator\n- Add support for injecting additional GIDs\n- Add support for CUDA forward compat on Orin systems\n\n## v1.19.0-rc.3\n- Remove restart logic from nvidia-cdi-refresh.service.\n- fix: Set device node GID in CDI specs\n- fix: Log actual CDI spec version\n- Make internal/system packages public\n- Move config to api\n- Make internal lookup package exportable\n- fix: Allow config options to be set to default values\n- test: Add failing test for setting debug log\n- test: Adjust e2e test for Docker 29.2.0\n\n### Changes in the Toolkit Container\n\n- build(deps): Bump nvidia/distroless/go to v4.0.1-dev in /deployments/container\n- Replace repackaging using fpm with rpmrebuild\n\n### Changes in libnvidia-container\n\n- Add libnvidia-tileiras.so to the list of compute libs\n\n## v1.19.0-rc.2\n\n- fix: Ensure that iGPU device nodes includes /dev/nvidia2\n- restrict NRI injection of CDI devices to pods in the toolkit's namespace\n- test: Add test for CSV-based device spec generation\n- fix: Add docker swarm support to jit-cdi mode\n- feat: Check ELF note for CUDA compat\n- Refactor enable-cuda-compat hook\n- fix: Allow nvidia-cdi-refresh.service to be restarted\n- fix: permissions sync\n- fix(discover): remove ro mount option from IPC sockets\n- Simplify logger.Interface\n- Add --no-runtime-config option to toolkit installer\n- Add interface for runtime configuration to installer\n- implement NRI plugin server to inject management CDI devices\n- Generate none device spec\n- fix: Fix arguments when creating DRM device symlinks\n- fix: Skip device node injection if NVIDIA_VISIBLE_DEVICES=none\n- test: Add failing test for NVIDIA_VISIBLE_DEVICES=none\n- Fix library paths in Apline containers\n- fix: Use pure CSV mode when a single device is found\n- fix: Don't filter device nodes when disable-multiple-csv-devices is enabled\n- trim extraneous whitespaces when parsing comma-separated config sources\n- fix: Return error on JIT CDI spec generation failure\n\n### Changes in the Toolkit Container\n\n- Bump nvidia/distroless/go in /deployments/container\n- Bump nvidia/distroless/go in /deployments/container\n\n### Changes in libnvidia-container\n\n- Add tooling to auto-bump golang version\n- Allow GOLANG_VERSION to be overridden\n\n## v1.19.0-rc.1\n\n- Add enable-cuda-compat on Tegra-based systems\n- Add --cuda-compat-container-root\n- Add --device-id flag to nvidia-ctk cdi generate command\n- Handle multiple GPUs in CDI spec generation from CSV\n- Fix trigger of CDI refresh service\n- Add --no-all-device option to nvidia-ctk cd generate\n- Default to strict decoding of OCI runtime spec\n- Load minimal spec to extract container root\n- Allow update-ldcache to work when pivot-root is not supported\n- Extract device information from host path if possible\n- Fix update of ldcache for non-matching host and container distros\n- Use enable-cuda-compat hook when ldcache does not exist\n- ldconfig: Create ld.so.conf file if missing\n- ldconfig: Determine container \"debian-ness\" after root pivot\n- Add missing return in `getSystemSearchPaths` for debian like containers\n- Use requested devices for CSV CDI spec generation\n- Also consider libnvidia-ml.so for extracting driver version\n- Switch to go 1.25 os.Root\n- Filter already tracked directories from ldcache update\n- Correct typo in nvsandboxutils feature flag\n- Allow nvcdi FeatureFlags to be configured for jit-cdi mode\n- Fix duplicate specs for jit-cdi mode\n- Fix trigger of CDI refresh service\n- Update rpm package to have 256bit digests\n- Fix generate tests when cdi hook exists in path\n- Fix containerd drop-in config path\n- Redirect log message to stderr in nvidia runtime wrapper script\n- chore: fix issues raised by govet and gocritic\n- Fix handling of existing imports in containerd\n- Don't read cdi generate mode from runtime mode\n- Fix bug in create-dev-char-symlinks command\n- Fix typo in nvidia-container-runtime's README\n\n### Changes in the Toolkit Container\n\n- Update rpm package to have 256bit digests\n- Bump nvidia/distroless/go in /deployments/container\n- Bump nvidia/distroless/go in /deployments/container\n\n## v1.18.0\n- Fix bug in device selection in jit-cdi mode\n- Make list of explicit driver libraries opt-in\n\n### Changes in the Toolkit Container\n- Invoke the actual default low-level runtime in the nvidia-ctk wrapper script\n- Remove default_runtime from cri-o config on cleanup\n- Do not remove cri-o drop-in file on shutdown.\n\n## v1.18.0-rc.6\n- Remove ppc64le artifacts from build\n- Add support for building artifacts with custom GOPROXY\n- Always update the ldcache in the container.\n\n### Changes in the Toolkit Container\n\n- Bump nvidia/distroless/go to v3.1.13-dev in /deployments/container\n- Allow config sources to be specified for containerd and crio\n- Allow file for config source to be specified explicitly\n\n## Changes in libnvidia-container\n- Add clock_gettime to the set of allowed syscalls under seccomp.\n\n## v1.18.0-rc.5\n- Fix handling of unrecognised hooks\n- Disable generation of coherent CDI specs by default\n- Update go-nvlib to restrict nvidia.com/gpu.coherent devices to devices with an ATS addressing mode.\n- Deprecate the hook config mode for cri-o\n\n### Changes in the Toolkit Container\n- Deprecate the hook config mode for cri-o\n- Add CRI plugin config from source containerd config to drop-in file\n- Add support for drop-in config files in a container\n\n## v1.18.0-rc.4\n\n- Add drop-in file support for containerd and crio\n- Add support for IMEX_CHANNELS to jit-cdi mode\n- Refactor IMEX channel requests from image\n- Remove redundant CDI annotations\n- support running and degraded systemd state during install\n- Don't inject enable-cuda-compat hook in CSV mode\n- Cleanup default runtime in runtime config when setAsDefault=false\n\n### Changes in the Toolkit Container\n\n- Bump nvidia/distroless/go to v3.1.12-dev in /deployments/container\n\n## v1.18.0-rc.3\n\n- Generate separate specs for coherent and noncoherent devices\n- Disable chmod hook by default\n- Add support for gated modifications jit-cdi mode\n- Add support for nvswitch mode to nvcdi API\n- Add support for gdrcopy mode to nvcdi API\n- Consolidate CDI spec generation of gated modes\n- Add missing imex mode to Valid modes\n- Add explicitLibs list to libs discovery\n- Consolidate logic to determine driver version\n- Fix: Enable local YUM repo by default in CentOS8 and Fedora35 entrypoints\n\n### Changes in the Toolkit Container\n\n- Bump nvidia/distroless/go to v3.1.11-dev in /deployments/container\n\n## v1.18.0-rc.2\n\n- Ensure that .so symlinks are created for driver libraries in the container\n- Load settings from config.toml file during CDI generation\n- Use securejoin to resolve /proc\n- Refactor nvml CDI spec generation for consistency\n- Simplify nvcdi interface\n- Add SpecGenerator interface\n- Ensure that modified params file mount does not leak to host\n- Add test for leaking mounts with shared mount propagation\n\n### Changes in the Toolkit Container\n\n- Bump nvidia/distroless/go to v3.1.10-dev in /deployments/container\n- Bump nvidia/cuda to 12.9.1-base-ubi9 in /deployments/container\n\n## v1.18.0-rc.1\n\n- Add create-soname-symlinks hook\n- Require matching version of libnvidia-container-tools\n- Add envvar for libcuda.so parent dir to CDI spec\n- Add EnvVar to Discover interface\n- Resolve to legacy by default in nvidia-container-runtime-hook\n- Default to jit-cdi mode in the nvidia runtime\n- Use functional options to construct runtime mode resolver\n- Add NVIDIA_CTK_CONFIG_FILE_PATH envvar\n- Switch to cuda ubi9 base image\n- Use single version tag for image\n- BUGFIX: modifier: respect GPU volume-mount device requests\n- Ensure consistent sorting of annotation devices\n- Extract deb and rpm packages to single image\n- Remove docker-run as default runtime candidate\n- Return annotation devices from VisibleDevices\n- Make CDI device requests consistent with other methods\n- Construct container info once\n- Add logic to extract annotation device requests to image type\n- Add IsPrivileged function to CUDA container type\n- Add device IDs to nvcdi.GetSpec API\n- Refactor extracting requested devices from the container image\n- Add EnvVars option for all nvidia-ctk cdi commands\n- Add nvidia-cdi-refresh service\n- Add discovery of arch-specific vulkan ICD\n- Add disabled-device-node-modification hook to CDI spec\n- Add a hook to disable device node creation in a container\n- Remove redundant deduplication of search paths for WSL\n- Added ability to disable specific (or all) CDI hooks\n- Consolidate HookName functionality on internal/discover pkg\n- Add envvar to control debug logging in CDI hooks\n- Add FeatureFlags to the nvcdi API\n- Reenable nvsandboxutils for driver discovery\n- Edit discover.mounts to have a deterministic output\n- Refactor the way we create CDI Hooks\n- Issue warning on unsupported CDI hook\n- Run update-ldcache in isolated namespaces\n- Add cuda-compat-mode config option\n- Fix mode detection on Thor-based systems\n- Add rprivate to CDI mount options\n- Skip nil discoverers in merge\n- bump runc go dep to v1.3.0\n- Fix resolution of libs in LDCache on ARM\n- Updated .release:staging to stage images in nvstaging\n- Refactor toolkit installer\n- Allow container runtime executable path to be specified\n- Add support for building ubuntu22.04 on arm64\n- Fix race condition in mounts cache\n- Add support for building ubuntu22.04 on amd64\n- Fix update-ldcache arguments\n- Remove positional arguments from nvidia-ctk-installer\n- Remove deprecated --runtime-args from nvidia-ctk-installer\n- Add version info to nvidia-ctk-installer\n- Update nvidia-ctk-installer app name to match binary name\n- Allow nvidia-ctk config --set to accept comma-separated lists\n- Disable enable-cuda-compat hook for management containers\n- Allow enable-cuda-compat hook to be disabled in CDI spec generation\n- Add disable-cuda-compat-lib-hook feature flag\n- Add basic integration tests for forward compat\n- Ensure that mode hook is executed last\n- Add enable-cuda-compat hook to CDI spec generation\n- Add ldconfig hook in legacy mode\n- Add enable-cuda-compat hook if required\n- Add enable-cuda-compat hook to allow compat libs to be discovered\n- Use libcontainer execseal to run ldconfig\n- Add ignore-imex-channel-requests feature flag\n- Disable nvsandboxutils in nvcdi API\n- Allow cdi mode to work with --gpus flag\n- Add E2E GitHub Action for Container Toolkit\n- Add remote-test option for E2E\n- Enable CDI in runtime if CDI_ENABLED is set\n- Fix overwriting docker feature flags\n- Add option in toolkit container to enable CDI in runtime\n- Remove Set from engine config API\n- Add EnableCDI() method to engine.Interface\n- Add IMEX binaries to CDI discovery\n- Rename test folder to tests\n- Add allow-cuda-compat-libs-from-container feature flag\n- Disable mounting of compat libs from container\n- Skip graphics modifier in CSV mode\n- Move nvidia-toolkit to nvidia-ctk-installer\n- Automated regression testing for the NVIDIA Container Toolkit\n- Add support for containerd version 3 config\n- Remove watch option from create-dev-char-symlinks\n- Add string TOML source\n- Improve the implementation for UseLegacyConfig\n- Properly pass configSearchPaths to a Driver constructor\n- Fix create-device-node test when devices exist\n- Add imex mode to CDI spec generation\n- Only allow host-relative LDConfig paths\n- Fix NVIDIA_IMEX_CHANNELS handling on legacy images\n- Fix bug in default config file path\n- Fix fsnotify.Remove logic function.\n- Force symlink creation in create-symlink hook\n\n### Changes in the Toolkit Container\n\n- Create /work/nvidia-toolkit symlink\n- Use Apache license for images\n- Switch to golang distroless image\n- Switch to cuda ubi9 base image\n- Use single version tag for image\n- Extract deb and rpm packages to single image\n- Bump nvidia/cuda in /deployments/container\n- Bump nvidia/cuda in /deployments/container\n- Add E2E GitHub Action for Container Toolkit\n- Bump nvidia/cuda in /deployments/container\n- Move nvidia-toolkit to nvidia-ctk-installer\n- Add support for containerd version 3 config\n- Improve the implementation for UseLegacyConfig\n- Bump nvidia/cuda in /deployments/container\n- Add imex mode to CDI spec generation\n- Only allow host-relative LDConfig paths\n- Fallback to file for runtime config\n\n### Changes in libnvidia-container\n\n- Fix pointer accessing local variable out of scope\n- Require version match between libnvidia-container-tools and libnvidia-container1\n- Add libnvidia-gpucomp.so to the list of compute libs\n- Use VERSION_ prefix for version parts in makefiles\n- Add additional logging\n- Do not discard container flags when --cuda-compat-mode is not specified\n- Remove unneeded --no-cntlibs argument from list command\n- Add cuda-compat-mode flag to configure command\n- Skip files when user has insufficient permissions\n- Fix building with Go 1.24\n- Add no-cntlibs CLI option to nvidia-container-cli\n- Fix always using fallback\n- Add fallback for systems without memfd_create()\n- Create virtual copy of host ldconfig binary before calling fexecve()\n- Fix some typos in text.\n\n\n## v1.17.0\n- Promote v1.17.0-rc.2 to v1.17.0\n- Fix bug when using just-in-time CDI spec generation\n- Check for valid paths in create-symlinks hook\n\n## v1.17.0-rc.2\n- Fix bug in locating libcuda.so from ldcache\n- Fix bug in sorting of symlink chain\n- Remove unsupported print-ldcache command\n- Remove csv-filename support from create-symlinks\n\n### Changes in the Toolkit Container\n- Fallback to `crio-status` if `crio status` does not work when configuring the crio runtime\n\n## v1.17.0-rc.1\n- Allow IMEX channels to be requested as volume mounts\n- Fix typo in error message\n- Add disable-imex-channel-creation feature flag\n- Add -z,lazy to LDFLAGS\n- Add imex channels to management CDI spec\n- Add support to fetch current container runtime config from the command line.\n- Add creation of select driver symlinks to CDI spec generation.\n- Remove support for config overrides when configuring runtimes.\n- Skip explicit creation of libnvidia-allocator.so.1 symlink\n- Add vdpau as as a driver library search path.\n- Add support for using libnvsandboxutils to generate CDI specifications.\n\n### Changes in the Toolkit Container\n\n- Allow opt-in features to be selected when deploying the toolkit-container.\n- Bump CUDA base image version to 12.6.2\n- Remove support for config overrides when configuring runtimes.\n\n### Changes in libnvidia-container\n\n- Add no-create-imex-channels command line option.\n\n## v1.16.2\n- Exclude libnvidia-allocator from graphics mounts. This fixes a bug that leaks mounts when a container is started with bi-directional mount propagation.\n- Use empty string for default runtime-config-override. This removes a redundant warning for runtimes (e.g. Docker) where this is not applicable.\n\n### Changes in the Toolkit Container\n- Bump CUDA base image version to 12.6.0\n\n### Changes in libnvidia-container\n- Add no-gsp-firmware command line option\n- Add no-fabricmanager command line option\n- Add no-persistenced command line option\n- Skip directories and symlinks when mounting libraries.\n\n## v1.16.1\n- Fix bug with processing errors during CDI spec generation for MIG devices\n\n## v1.16.0\n- Promote v1.16.0-rc.2 to v1.16.0\n\n### Changes in the Toolkit Container\n- Bump CUDA base image version to 12.5.1\n\n## v1.16.0-rc.2\n- Use relative path to locate driver libraries\n- Add RelativeToRoot function to Driver\n- Inject additional libraries for full X11 functionality\n- Extract options from default runtime if runc does not exist\n- Avoid using map pointers as maps are always passed by reference\n- Reduce logging for the NVIDIA Container runtime\n- Fix bug in argument parsing for logger creation\n\n## v1.16.0-rc.1\n\n- Support vulkan ICD files directly in a driver root. This allows for the discovery of vulkan files in GKE driver installations.\n- Increase priority of ld.so.conf.d config file injected into container. This ensures that injected libraries are preferred over libraries present in the container.\n- Set default CDI spec permissions to 644. This fixes permission issues when using the `nvidia-ctk cdi transform` functions.\n- Add `dev-root` option to `nvidia-ctk system create-device-nodes` command.\n- Fix location of `libnvidia-ml.so.1` when a non-standard driver root is used. This enabled CDI spec generation when using the driver container on a host.\n- Recalculate minimum required CDI spec version on save.\n- Move `nvidia-ctk hook` commands to a separate `nvidia-cdi-hook` binary. The same subcommands are supported.\n- Use `:` as an `nvidia-ctk config --set` list separator. This fixes a bug when trying to set config options that are lists.\n\n- [toolkit-container] Bump CUDA base image version to 12.5.0\n- [toolkit-container] Allow the path to `toolkit.pid` to be specified directly.\n- [toolkit-container] Remove provenance information from image manifests.\n- [toolkit-container] Add `dev-root` option when configuring the toolkit. This adds support for GKE driver installations.\n\n## v1.15.0\n\n* Remove `nvidia-container-runtime` and `nvidia-docker2` packages.\n* Use `XDG_DATA_DIRS` environment variable when locating config files such as graphics config files.\n* Add support for v0.7.0 Container Device Interface (CDI) specification.\n* Add `--config-search-path` option to `nvidia-ctk cdi generate` command. These paths are used when locating driver files such as graphics config files.\n* Use D3DKMTEnumAdapters3 to enumerate adpaters on WSL2 if available.\n* Add support for v1.2.0 OCI Runtime specification.\n* Explicitly set `NVIDIA_VISIBLE_DEVICES=void` in generated CDI specifications. This prevents the NVIDIA Container Runtime from making additional modifications.\n\n* [libnvidia-container] Use D3DKMTEnumAdapters3 to enumerate adpaters on WSL2 if available.\n\n* [toolkit-container] Bump CUDA base image version to 12.4.1\n\n## v1.15.0-rc.4\n* Add a `--spec-dir` option to the `nvidia-ctk cdi generate` command. This allows specs outside of `/etc/cdi` and `/var/run/cdi` to be processed.\n* Add support for extracting device major number from `/proc/devices` if `nvidia` is used as a device name over `nvidia-frontend`.\n* Allow multiple device naming strategies for `nvidia-ctk cdi generate` command. This allows a single\n  CDI spec to be generated that includes GPUs by index and UUID.\n* Set the default `--device-name-strategy` for the `nvidia-ctk cdi generate` command to `[index, uuid]`.\n* Remove `libnvidia-container0` jetpack dependency included for legacy Tegra-based systems.\n* Add `NVIDIA_VISIBLE_DEVICES=void` to generated CDI specifications.\n\n* [toolkit-container] Remove centos7 image. The ubi8 image can be used on all RPM-based platforms.\n* [toolkit-container] Bump CUDA base image version to 12.3.2\n\n## v1.15.0-rc.3\n* Fix bug in `nvidia-ctk hook update-ldcache` where default `--ldconfig-path` value was not applied.\n\n## v1.15.0-rc.2\n* Extend the `runtime.nvidia.com/gpu` CDI kind to support full-GPUs and MIG devices specified by index or UUID.\n* Fix bug when specifying `--dev-root` for Tegra-based systems.\n* Log explicitly requested runtime mode.\n* Remove package dependency on libseccomp.\n* Added detection of libnvdxgdmal.so.1 on WSL2\n* Use devRoot to resolve MIG device nodes.\n* Fix bug in determining default nvidia-container-runtime.user config value on SUSE-based systems.\n* Add `crun` to the list of configured low-level runtimes.\n* Added support for `--ldconfig-path` to `nvidia-ctk cdi generate` command.\n* Fix `nvidia-ctk runtime configure --cdi.enabled` for Docker.\n* Add discovery of the GDRCopy device (`gdrdrv`) if the `NVIDIA_GDRCOPY` environment variable of the container is set to `enabled`\n\n* [toolkit-container] Bump CUDA base image version to 12.3.1.\n\n## v1.15.0-rc.1\n* Skip update of ldcache in containers without ldconfig. The .so.SONAME symlinks are still created.\n* Normalize ldconfig path on use. This automatically adjust the ldconfig setting applied to ldconfig.real on systems where this exists.\n* Include `nvidia/nvoptix.bin` in list of graphics mounts.\n* Include `vulkan/icd.d/nvidia_layers.json` in list of graphics mounts.\n* Add support for `--library-search-paths` to `nvidia-ctk cdi generate` command.\n* Add support for injecting /dev/nvidia-nvswitch* devices if the NVIDIA_NVSWITCH=enabled envvar is specified.\n* Added support for `nvidia-ctk runtime configure --enable-cdi` for the `docker` runtime. Note that this requires Docker >= 25.\n* Fixed bug in `nvidia-ctk config` command when using `--set`. The types of applied config options are now applied correctly.\n* Add `--relative-to` option to `nvidia-ctk transform root` command. This controls whether the root transformation is applied to host or container paths.\n* Added automatic CDI spec generation when the `runtime.nvidia.com/gpu=all` device is requested by a container.\n\n* [libnvidia-container] Fix device permission check when using cgroupv2 (fixes #227)\n\n## v1.14.3\n* [toolkit-container] Bump CUDA base image version to 12.2.2.\n\n## v1.14.2\n* Fix bug on Tegra-based systems where symlinks were not created in containers.\n* Add --csv.ignore-pattern command line option to nvidia-ctk cdi generate command.\n\n## v1.14.1\n* Fixed bug where contents of `/etc/nvidia-container-runtime/config.toml` is ignored by the NVIDIA Container Runtime Hook.\n\n* [libnvidia-container] Use libelf.so on RPM-based systems due to removed mageia repositories hosting pmake and bmake.\n\n## v1.14.0\n* Promote v1.14.0-rc.3 to v1.14.0\n\n## v1.14.0-rc.3\n* Added support for generating OCI hook JSON file to `nvidia-ctk runtime configure` command.\n* Remove installation of OCI hook JSON from RPM package.\n* Refactored config for `nvidia-container-runtime-hook`.\n* Added a `nvidia-ctk config` command which supports setting config options using a `--set` flag.\n* Added `--library-search-path` option to `nvidia-ctk cdi generate` command in `csv` mode. This allows folders where\n  libraries are located to be specified explicitly.\n* Updated go-nvlib to support devices which are not present in the PCI device database. This allows the creation of dev/char symlinks on systems with such devices installed.\n* Added `UsesNVGPUModule` info function for more robust platform detection. This is required on Tegra-based systems where libnvidia-ml.so is also supported.\n\n* [toolkit-container] Set `NVIDIA_VISIBLE_DEVICES=void` to prevent injection of NVIDIA devices and drivers into the NVIDIA Container Toolkit container.\n\n## v1.14.0-rc.2\n* Fix bug causing incorrect nvidia-smi symlink to be created on WSL2 systems with multiple driver roots.\n* Remove dependency on coreutils when installing package on RPM-based systems.\n* Create output folders if required when running `nvidia-ctk runtime configure`\n* Generate default config as post-install step.\n* Added support for detecting GSP firmware at custom paths when generating CDI specifications.\n* Added logic to skip the extraction of image requirements if `NVIDIA_DISABLE_REQUIRES` is set to `true`.\n\n* [libnvidia-container] Include Shared Compiler Library (libnvidia-gpucomp.so) in the list of compute libaries.\n\n* [toolkit-container] Ensure that common envvars have higher priority when configuring the container engines.\n* [toolkit-container] Bump CUDA base image version to 12.2.0.\n* [toolkit-container] Remove installation of nvidia-experimental runtime. This is superceded by the NVIDIA Container Runtime in CDI mode.\n\n## v1.14.0-rc.1\n\n* Add support for updating containerd configs to the `nvidia-ctk runtime configure` command.\n* Create file in `etc/ld.so.conf.d` with permissions `644` to support non-root containers.\n* Generate CDI specification files with `644` permissions to allow rootless applications (e.g. podman)\n* Add `nvidia-ctk cdi list` command to show the known CDI devices.\n* Add support for generating merged devices (e.g. `all` device) to the nvcdi API.\n* Use *.* pattern to locate libcuda.so when generating a CDI specification to support platforms where a patch version is not specified.\n* Update go-nvlib to skip devices that are not MIG capable when generating CDI specifications.\n* Add `nvidia-container-runtime-hook.path` config option to specify NVIDIA Container Runtime Hook path explicitly.\n* Fix bug in creation of `/dev/char` symlinks by failing operation if kernel modules are not loaded.\n* Add option to load kernel modules when creating device nodes\n* Add option to create device nodes when creating `/dev/char` symlinks\n\n* [libnvidia-container] Support OpenSSL 3 with the Encrypt/Decrypt library\n\n* [toolkit-container] Allow same envars for all runtime configs\n\n## v1.13.1\n\n* Update `update-ldcache` hook to only update ldcache if it exists.\n* Update `update-ldcache` hook to create `/etc/ld.so.conf.d` folder if it doesn't exist.\n* Fix failure when libcuda cannot be located during XOrg library discovery.\n* Fix CDI spec generation on systems that use `/etc/alternatives` (e.g. Debian)\n\n## v1.13.0\n\n* Promote 1.13.0-rc.3 to 1.13.0\n\n## v1.13.0-rc.3\n\n* Only initialize NVML for modes that require it when runing `nvidia-ctk cdi generate`.\n* Prefer /run over /var/run when locating nvidia-persistenced and nvidia-fabricmanager sockets.\n* Fix the generation of CDI specifications for management containers when the driver libraries are not in the LDCache.\n* Add transformers to deduplicate and simplify CDI specifications.\n* Generate a simplified CDI specification by default. This means that entities in the common edits in a spec are not included in device definitions.\n* Also return an error from the nvcdi.New constructor instead of panicing.\n* Detect XOrg libraries for injection and CDI spec generation.\n* Add `nvidia-ctk system create-device-nodes` command to create control devices.\n* Add `nvidia-ctk cdi transform` command to apply transforms to CDI specifications.\n* Add `--vendor` and `--class` options to `nvidia-ctk cdi generate`\n\n* [libnvidia-container] Fix segmentation fault when RPC initialization fails.\n* [libnvidia-container] Build centos variants of the NVIDIA Container Library with static libtirpc v1.3.2.\n* [libnvidia-container] Remove make targets for fedora35 as the centos8 packages are compatible.\n\n* [toolkit-container] Add `nvidia-container-runtime.modes.cdi.annotation-prefixes` config option that allows the CDI annotation prefixes that are read to be overridden.\n* [toolkit-container] Create device nodes when generating CDI specification for management containers.\n* [toolkit-container] Add `nvidia-container-runtime.runtimes` config option to set the low-level runtime for the NVIDIA Container Runtime\n\n## v1.13.0-rc.2\n\n* Don't fail chmod hook if paths are not injected\n* Only create `by-path` symlinks if CDI devices are actually requested.\n* Fix possible blank `nvidia-ctk` path in generated CDI specifications\n* Fix error in postun scriplet on RPM-based systems\n* Only check `NVIDIA_VISIBLE_DEVICES` for environment variables if no annotations are specified.\n* Add `cdi.default-kind` config option for constructing fully-qualified CDI device names in CDI mode\n* Add support for `accept-nvidia-visible-devices-envvar-unprivileged` config setting in CDI mode\n* Add `nvidia-container-runtime-hook.skip-mode-detection` config option to bypass mode detection. This allows `legacy` and `cdi` mode, for example, to be used at the same time.\n* Add support for generating CDI specifications for GDS and MOFED devices\n* Ensure CDI specification is validated on save when generating a spec\n* Rename `--discovery-mode` argument to `--mode` for `nvidia-ctk cdi generate`\n* [libnvidia-container] Fix segfault on WSL2 systems\n* [toolkit-container] Add `--cdi-enabled` flag to toolkit config\n* [toolkit-container] Install `nvidia-ctk` from toolkit container\n* [toolkit-container] Use installed `nvidia-ctk` path in NVIDIA Container Toolkit config\n* [toolkit-container] Bump CUDA base images to 12.1.0\n* [toolkit-container] Set `nvidia-ctk` path in the\n* [toolkit-container] Add `cdi.k8s.io/*` to set of allowed annotations in containerd config\n* [toolkit-container] Generate CDI specification for use in management containers\n* [toolkit-container] Install experimental runtime as `nvidia-container-runtime.experimental` instead of `nvidia-container-runtime-experimental`\n* [toolkit-container] Install and configure mode-specific runtimes for `cdi` and `legacy` modes\n\n## v1.13.0-rc.1\n\n* Include MIG-enabled devices as GPUs when generating CDI specification\n* Fix missing NVML symbols when running `nvidia-ctk` on some platforms [#49]\n* Add CDI spec generation for WSL2-based systems to `nvidia-ctk cdi generate` command\n* Add `auto` mode to `nvidia-ctk cdi generate` command to automatically detect a WSL2-based system over a standard NVML-based system.\n* Add mode-specific (`.cdi` and `.legacy`) NVIDIA Container Runtime binaries for use in the GPU Operator\n* Discover all `gsb*.bin` GSP firmware files when generating CDI specification.\n* Align `.deb` and `.rpm` release candidate package versions\n* Remove `fedora35` packaging targets\n* [libnvidia-container] Include all `gsp*.bin` firmware files if present\n* [libnvidia-container] Align `.deb` and `.rpm` release candidate package versions\n* [libnvidia-container] Remove `fedora35` packaging targets\n* [toolkit-container] Install `nvidia-container-toolkit-operator-extensions` package for mode-specific executables.\n* [toolkit-container] Allow `nvidia-container-runtime.mode` to be set when configuring the NVIDIA Container Toolkit\n\n## v1.12.0\n\n* Promote `v1.12.0-rc.5` to `v1.12.0`\n* Rename `nvidia cdi generate` `--root` flag to `--driver-root` to better indicate intent\n* [libnvidia-container] Add nvcubins.bin to DriverStore components under WSL2\n* [toolkit-container] Bump CUDA base images to 12.0.1\n\n## v1.12.0-rc.5\n\n* Fix bug here the `nvidia-ctk` path was not properly resolved. This causes failures to run containers when the runtime is configured in `csv` mode or if the `NVIDIA_DRIVER_CAPABILITIES` includes `graphics` or `display` (e.g. `all`).\n\n## v1.12.0-rc.4\n\n* Generate a minimum CDI spec version for improved compatibility.\n* Add `--device-name-strategy` options to the `nvidia-ctk cdi generate` command that can be used to control how device names are constructed.\n* Set default for CDI device name generation to `index` to generate device names such as `nvidia.com/gpu=0` or `nvidia.com/gpu=1:0` by default.\n\n## v1.12.0-rc.3\n\n* Don't fail if by-path symlinks for DRM devices do not exist\n* Replace the --json flag with a --format [json|yaml] flag for the nvidia-ctk cdi generate command\n* Ensure that the CDI output folder is created if required\n* When generating a CDI specification use a blank host path for devices to ensure compatibility with the v0.4.0 CDI specification\n* Add injection of Wayland JSON files\n* Add GSP firmware paths to generated CDI specification\n* Add --root flag to nvidia-ctk cdi generate command\n\n## v1.12.0-rc.2\n\n* Inject Direct Rendering Manager (DRM) devices into a container using the NVIDIA Container Runtime\n* Improve logging of errors from the NVIDIA Container Runtime\n* Improve CDI specification generation to support rootless podman\n* Use `nvidia-ctk cdi generate` to generate CDI specifications instead of `nvidia-ctk info generate-cdi`\n* [libnvidia-container] Skip creation of existing files when these are already mounted\n\n## v1.12.0-rc.1\n\n* Add support for multiple Docker Swarm resources\n* Improve injection of Vulkan configurations and libraries\n* Add `nvidia-ctk info generate-cdi` command to generated CDI specification for available devices\n* [libnvidia-container] Include NVVM compiler library in compute libs\n\n## v1.11.0\n\n* Promote v1.11.0-rc.3 to v1.11.0\n\n## v1.11.0-rc.3\n\n* Build fedora35 packages\n* Introduce an `nvidia-container-toolkit-base` package for better dependency management\n* Fix removal of `nvidia-container-runtime-hook` on RPM-based systems\n* Inject platform files into container on Tegra-based systems\n* [toolkit container] Update CUDA base images to 11.7.1\n* [libnvidia-container] Preload libgcc_s.so.1 on arm64 systems\n\n## v1.11.0-rc.2\n\n* Allow `accept-nvidia-visible-devices-*` config options to be set by toolkit container\n* [libnvidia-container] Fix bug where LDCache was not updated when the `--no-pivot-root` option was specified\n\n## v1.11.0-rc.1\n\n* Add discovery of GPUDirect Storage (`nvidia-fs*`) devices if the `NVIDIA_GDS` environment variable of the container is set to `enabled`\n* Add discovery of MOFED Infiniband devices if the `NVIDIA_MOFED` environment variable of the container is set to `enabled`\n* Fix bug in CSV mode where libraries listed as `sym` entries in mount specification are not added to the LDCache.\n* Rename `nvidia-container-toolkit` executable to `nvidia-container-runtime-hook` and create `nvidia-container-toolkit` as a symlink to `nvidia-container-runtime-hook` instead.\n* Add `nvidia-ctk runtime configure` command to configure the Docker config file (e.g. `/etc/docker/daemon.json`) for use with the NVIDIA Container Runtime.\n\n## v1.10.0\n\n* Promote v1.10.0-rc.3 to v1.10.0\n\n## v1.10.0-rc.3\n\n* Use default config instead of raising an error if config file cannot be found\n* Ignore NVIDIA_REQUIRE_JETPACK* environment variables for requirement checks\n* Fix bug in detection of Tegra systems where `/sys/devices/soc0/family` is ignored\n* Fix bug where links to devices were detected as devices\n* [libnvida-container] Fix bug introduced when adding libcudadebugger.so to list of libraries\n\n## v1.10.0-rc.2\n\n* Add support for NVIDIA_REQUIRE_* checks for cuda version and arch to csv mode\n* Switch to debug logging to reduce log verbosity\n* Support logging to logs requested in command line\n* Fix bug when launching containers with relative root path (e.g. using containerd)\n* Allow low-level runtime path to be set explicitly as nvidia-container-runtime.runtimes option\n* Fix failure to locate low-level runtime if PATH envvar is unset\n* Replace experimental option for NVIDIA Container Runtime with nvidia-container-runtime.mode = csv option\n* Use csv as default mode on Tegra systems without NVML\n* Add --version flag to all CLIs\n* [libnvidia-container] Bump libtirpc to 1.3.2\n* [libnvidia-container] Fix bug when running host ldconfig using glibc compiled with a non-standard prefix\n* [libnvidia-container] Add libcudadebugger.so to list of compute libraries\n\n## v1.10.0-rc.1\n\n* Include nvidia-ctk CLI in installed binaries\n* Add experimental option to NVIDIA Container Runtime\n\n## v1.9.0\n\n* [libnvidia-container] Add additional check for Tegra in /sys/.../family file in CLI\n* [libnvidia-container] Update jetpack-specific CLI option to only load Base CSV files by default\n* [libnvidia-container] Fix bug (from 1.8.0) when mounting GSP firmware into containers without /lib to /usr/lib symlinks\n* [libnvidia-container] Update nvml.h to CUDA 11.6.1 nvML_DEV 11.6.55\n* [libnvidia-container] Update switch statement to include new brands from latest nvml.h\n* [libnvidia-container] Process all --require flags on Jetson platforms\n* [libnvidia-container] Fix long-standing issue with running ldconfig on Debian systems\n\n## v1.8.1\n\n* [libnvidia-container] Fix bug in determining cgroup root when running in nested containers\n* [libnvidia-container] Fix permission issue when determining cgroup version\n\n## v1.8.0\n\n* Promote 1.8.0-rc.2-1 to 1.8.0\n\n## v1.8.0-rc.2\n\n* Remove support for building amazonlinux1 packages\n\n## v1.8.0-rc.1\n\n* [libnvidia-container] Add support for cgroupv2\n* Release toolkit-container images from nvidia-container-toolkit repository\n\n## v1.7.0\n\n* Promote 1.7.0-rc.1-1 to 1.7.0\n * Bump Golang version to 1.16.4\n\n## v1.7.0-rc.1\n\n* Specify containerd runtime type as string in config tools to remove dependency on containerd package\n* Add supported-driver-capabilities config option to allow for a subset of all driver capabilities to be specified\n\n## v1.6.0\n\n* Promote 1.6.0-rc.3-1 to 1.6.0\n * Fix unnecessary logging to stderr instead of configured nvidia-container-runtime log file\n\n## v1.6.0-rc.3\n\n* Add supported-driver-capabilities config option to the nvidia-container-toolkit\n* Move OCI and command line checks for runtime to internal oci package\n\n## v1.6.0-rc.2\n\n* Use relative path to OCI specification file (config.json) if bundle path is not specified as an argument to the nvidia-container-runtime\n\n## v1.6.0-rc.1\n\n* Add AARCH64 package for Amazon Linux 2\n* Include nvidia-container-runtime into nvidia-container-toolkit package\n\n## v1.5.1\n\n* Fix bug where Docker Swarm device selection is ignored if NVIDIA_VISIBLE_DEVICES is also set\n* Improve unit testing by using require package and adding coverage reports\n* Remove unneeded go dependencies by running go mod tidy\n* Move contents of pkg directory to cmd for CLI tools\n* Ensure make binary target explicitly sets GOOS\n\n## v1.5.0\n\n* Add dependence on libnvidia-container-tools >= 1.4.0\n* Add golang check targets to Makefile\n* Add Jenkinsfile definition for build targets\n* Move docker.mk to docker folder\n\n## v1.4.2\n\n* Add dependence on libnvidia-container-tools >= 1.3.3\n\n## v1.4.1\n\n* Ignore NVIDIA_VISIBLE_DEVICES for containers with insufficent privileges\n* Add dependence on libnvidia-container-tools >= 1.3.2\n\n## v1.4.0\n\n* Add 'compute' capability to list of defaults\n* Add dependence on libnvidia-container-tools >= 1.3.1\n\n## v1.3.0\n\n* Promote 1.3.0-rc.2-1 to 1.3.0\n* Add dependence on libnvidia-container-tools >= 1.3.0\n\n## v1.3.0-rc.2\n\n* 2c180947 Add more tests for new semantics with device list from volume mounts\n* 7c003857 Refactor accepting device lists from volume mounts as a boolean\n\n## v1.3.0-rc.1\n\n* b50d86c1 Update build system to accept a TAG variable for things like rc.x\n* fe65573b Add common CI tests for things like golint, gofmt, unit tests, etc.\n* da6fbb34 Revert \"Add ability to merge envars of the form NVIDIA_VISIBLE_DEVICES_*\"\n* a7fb3330 Flip build-all targets to run automatically on merge requests\n* 8b248b66 Rename github.com/NVIDIA/container-toolkit to nvidia-container-toolkit\n* da36874e Add new config options to pull device list from mounted files instead of ENVVAR\n\n## v1.2.1\n\n* 4e6e0ed4 Add 'ngx' to list of*all* driver capabilities\n* 2f4af743 List config.toml as a config file in the RPM SPEC\n\n## v1.2.0\n\n*  8e0aab46 Fix repo listed in changelog for debian distributions\n*  320bb6e4 Update dependence on libnvidia-container to 1.2.0\n*  6cfc8097 Update package license to match source license\n*  e7dc3cbb Fix debian copyright file\n*  d3aee3e0 Add the 'ngx' driver capability\n\n## v1.1.2\n\n* c32237f3 Add support for parsing Linux Capabilities for older OCI specs\n\n## v1.1.1\n\n* d202aded Update dependence to libnvidia-container 1.1.1\n\n## v1.1.0\n\n* 4e4de762 Update build system to support multi-arch builds\n* fcc1d116 Add support for MIG (Multi-Instance GPUs)\n* d4ff0416 Add ability to merge envars of the form NVIDIA_VISIBLE_DEVICES_*\n* 60f165ad Add no-pivot option to toolkit\n\n## v1.0.5\n\n* Initial release. Replaces older package nvidia-container-runtime-hook. (Closes: #XXXXXX)\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "# Contribute to the NVIDIA Container Toolkit\n\nWant to hack on the NVIDIA Container Toolkit Project? Awesome!\nWe only require you to sign your work, the below section describes this!\n\n## Sign your work\n\nThe sign-off is a simple line at the end of the explanation for the patch. Your\nsignature certifies that you wrote the patch or otherwise have the right to pass\nit on as an open-source patch. The rules are pretty simple: if you can certify\nthe below (from [developercertificate.org](http://developercertificate.org/)):\n\n```\nDeveloper Certificate of Origin\nVersion 1.1\n\nCopyright (C) 2004, 2006 The Linux Foundation and its contributors.\n1 Letterman Drive\nSuite D4700\nSan Francisco, CA, 94129\n\nEveryone is permitted to copy and distribute verbatim copies of this\nlicense document, but changing it is not allowed.\n\nDeveloper's Certificate of Origin 1.1\n\nBy making a contribution to this project, I certify that:\n\n(a) The contribution was created in whole or in part by me and I\n    have the right to submit it under the open source license\n    indicated in the file; or\n\n(b) The contribution is based upon previous work that, to the best\n    of my knowledge, is covered under an appropriate open source\n    license and I have the right under that license to submit that\n    work with modifications, whether created in whole or in part\n    by me, under the same open source license (unless I am\n    permitted to submit under a different license), as indicated\n    in the file; or\n\n(c) The contribution was provided directly to me by some other\n    person who certified (a), (b) or (c) and I have not modified\n    it.\n\n(d) I understand and agree that this project and the contribution\n    are public and that a record of the contribution (including all\n    personal information I submit with it, including my sign-off) is\n    maintained indefinitely and may be redistributed consistent with\n    this project or the open source license(s) involved.\n```\n\nThen you just add a line to every git commit message:\n\n    Signed-off-by: Joe Smith <joe.smith@email.com>\n\nUse your real name (sorry, no pseudonyms or anonymous contributions.)\n\nIf you set your `user.name` and `user.email` git configs, you can sign your\ncommit automatically with `git commit -s`.\n\n"
  },
  {
    "path": "DEVELOPMENT.md",
    "content": "# NVIDIA Container Toolkit Release Tooling\n\nThis repository allows for the components of the NVIDIA container stack to be\nbuilt and released as the NVIDIA Container Toolkit from a single repository. The components:\n* `libnvidia-container`\n* `nvidia-container-runtime`\n* `nvidia-docker`\nare included as submodules in the `third_party` folder.\n\nThe `nvidia-container-toolkit` resides in this repo directly.\n\n## Building\n\nIn oder to build the packages, the following command is executed\n```sh\n./scripts/build-packages.sh TARGET\n```\nwhere `TARGET` is a make target that is valid for each of the sub-components.\n\nThese include:\n* `ubuntu18.04-amd64`\n* `centos7-x86_64`\n\nIf no `TARGET` is specified, all valid release targets are built.\n\nThe packages are generated in the `dist` folder.\n\n## Testing local changes\n\nIn oder to use the same build logic to be used to generate packages with local changes,\nthe location of the individual components can be overridded using the: `LIBNVIDIA_CONTAINER_ROOT`,\n`NVIDIA_CONTAINER_TOOLKIT_ROOT`, `NVIDIA_CONTAINER_RUNTIME_ROOT`, and `NVIDIA_DOCKER_ROOT`\nenvironment variables.\n\n## Testing packages locally\n\nThe [tests/release](./tests/release/) folder contains documentation on how the installation of local or staged packages can be tested.\n\n\n## Releasing\n\nIn order to release packages required for a release, a utility script\n[`scripts/release-packages.sh`](./scripts/release-packages.sh) is provided.\nThis script can be executed as follows:\n\n```bash\nGPG_LOCAL_USER=\"GPG_USER\" \\\nMASTER_KEY_PATH=/path/to/gpg-master.key \\\nSUB_KEY_PATH=/path/to/gpg-subkey.key \\\n    ./scripts/release-packages.sh REPO PACKAGE_REPO_ROOT [REFERENCE]\n```\n\nWhere `REPO` is one of `stable` or `experimental`, `PACKAGE_REPO_ROOT` is the local path to the `libnvidia-container` repository checked out to the `gh-pages` branch, and `REFERENCE` is the git SHA that is to be released. If reference is not specified `HEAD` is assumed.\n\nThis scripts performs the following basic functions:\n* Pulls the package image defined by the `REFERENCE` git SHA from the staging registry,\n* Copies the required packages to the package repository at `PACKAGE_REPO_ROOT/REPO`,\n* Signs the packages using the specified GPG keys\n\nWhile the last two are performed, commits are added to the package repository. These can be pushed to the relevant repository.\n\n"
  },
  {
    "path": "LICENSE",
    "content": "\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "Makefile",
    "content": "# Copyright (c) 2017-2021, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nDOCKER   ?= docker\nMKDIR    ?= mkdir\nDIST_DIR ?= $(CURDIR)/dist\n\ninclude $(CURDIR)/versions.mk\n\nMODULE := github.com/NVIDIA/nvidia-container-toolkit\n\n# By default run all native docker-based targets\ndocker-native:\ninclude $(CURDIR)/docker/docker.mk\n\nifeq ($(IMAGE_NAME),)\nREGISTRY ?= nvidia\nIMAGE_NAME = $(REGISTRY)/container-toolkit\nendif\n\nBUILDIMAGE_TAG ?= golang$(GOLANG_VERSION)\nBUILDIMAGE ?= $(IMAGE_NAME)-build:$(BUILDIMAGE_TAG)\n\nEXAMPLES := $(patsubst ./examples/%/,%,$(sort $(dir $(wildcard ./examples/*/))))\nEXAMPLE_TARGETS := $(patsubst %,example-%, $(EXAMPLES))\n\nCMDS := $(patsubst ./cmd/%/,%,$(sort $(dir $(wildcard ./cmd/*/))))\nCMD_TARGETS := $(patsubst %,cmd-%, $(CMDS))\n\nCHECK_TARGETS := lint\nMAKE_TARGETS := binaries build check fmt test examples cmds coverage generate licenses vendor check-vendor $(CHECK_TARGETS)\n\nTARGETS := $(MAKE_TARGETS) $(EXAMPLE_TARGETS) $(CMD_TARGETS)\n\nDOCKER_TARGETS := $(patsubst %,docker-%, $(TARGETS))\n.PHONY: $(TARGETS) $(DOCKER_TARGETS)\n\nifeq ($(VERSION),)\nCLI_VERSION = $(LIB_VERSION)$(if $(LIB_TAG),-$(LIB_TAG))\nelse\nCLI_VERSION = $(VERSION)\nendif\nCLI_VERSION_PACKAGE = github.com/NVIDIA/nvidia-container-toolkit/internal/info\n\nbinaries: cmds\nifneq ($(PREFIX),)\ncmd-%: COMMAND_BUILD_OPTIONS = -o $(PREFIX)/$(*)\nendif\ncmds: $(CMD_TARGETS)\n\nifneq ($(shell uname),Darwin)\nEXTLDFLAGS = -Wl,--export-dynamic -Wl,--unresolved-symbols=ignore-in-object-files -Wl,-z,lazy\nelse\nEXTLDFLAGS = -Wl,-undefined,dynamic_lookup\nendif\n$(CMD_TARGETS): cmd-%:\n\tgo build -ldflags \"-s -w '-extldflags=$(EXTLDFLAGS)' -X $(CLI_VERSION_PACKAGE).gitCommit=$(GIT_COMMIT) -X $(CLI_VERSION_PACKAGE).version=$(CLI_VERSION)\" $(COMMAND_BUILD_OPTIONS) $(MODULE)/cmd/$(*)\n\nbuild:\n\tgo build ./...\n\nexamples: $(EXAMPLE_TARGETS)\n$(EXAMPLE_TARGETS): example-%:\n\tgo build ./examples/$(*)\n\nall: check test build binary\ncheck: $(CHECK_TARGETS)\n\n# Apply go fmt to the codebase\nfmt:\n\tgo list -f '{{.Dir}}' $(MODULE)/... \\\n\t\t| xargs gofmt -s -l -w\n\n# Apply goimports -local github.com/NVIDIA/container-toolkit to the codebase\ngoimports:\n\tgo list -f {{.Dir}} $(MODULE)/... \\\n\t\t| xargs goimports -local $(MODULE) -w\n\nlint:\n\tgolangci-lint run ./...\n\nvendor:  | mod-tidy mod-vendor mod-verify\n\nmod-tidy:\n\t@for mod in $$(find . -name go.mod -not -path \"./testdata/*\" -not -path \"./third_party/*\"); do \\\n\t    echo \"Tidying $$mod...\"; ( \\\n\t        cd $$(dirname $$mod) && go mod tidy \\\n            ) || exit 1; \\\n\tdone\n\nmod-vendor:\n\t@for mod in $$(find . -name go.mod -not -path \"./testdata/*\" -not -path \"./third_party/*\" -not -path \"./deployments/*\"); do \\\n\t\techo \"Vendoring $$mod...\"; ( \\\n\t\t\tcd $$(dirname $$mod) && go mod vendor \\\n\t\t\t) || exit 1; \\\n\tdone\n\nmod-verify:\n\t@for mod in $$(find . -name go.mod -not -path \"./testdata/*\" -not -path \"./third_party/*\"); do \\\n\t    echo \"Verifying $$mod...\"; ( \\\n\t        cd $$(dirname $$mod) && go mod verify | sed 's/^/  /g' \\\n\t    ) || exit 1; \\\n\tdone\n\n\ncheck-vendor: vendor\n\tgit diff --exit-code HEAD -- go.mod go.sum vendor\n\nlicenses:\n\tgo-licenses csv $(MODULE)/...\n\nCOVERAGE_FILE := coverage.out\ntest: build cmds\n\tgo test -coverprofile=$(COVERAGE_FILE).with-mocks $(MODULE)/...\n\ncoverage: test\n\tcat $(COVERAGE_FILE).with-mocks | grep -v \"_mock.go\" > $(COVERAGE_FILE)\n\tgo tool cover -func=$(COVERAGE_FILE)\n\ngenerate:\n\tgo generate $(MODULE)/...\n\n# Generate an image for containerized builds\n# Note: This image is local only\n.PHONY: .build-image\n.build-image:\n\tmake -f deployments/devel/Makefile .build-image\n\nifeq ($(BUILD_DEVEL_IMAGE),yes)\n$(DOCKER_TARGETS): .build-image\n.shell: .build-image\nendif\n\n$(DOCKER_TARGETS): docker-%:\n\t@echo \"Running 'make $(*)' in container image $(BUILDIMAGE)\"\n\t$(DOCKER) run \\\n\t\t--rm \\\n\t\t-e GOCACHE=/tmp/.cache/go \\\n\t\t-e GOMODCACHE=/tmp/.cache/gomod \\\n\t\t-e GOLANGCI_LINT_CACHE=/tmp/.cache/golangci-lint \\\n\t\t-v $(PWD):/work \\\n\t\t-w /work \\\n\t\t--user $$(id -u):$$(id -g) \\\n\t\t$(BUILDIMAGE) \\\n\t\t\tmake $(*)\n\n# Start an interactive shell using the development image.\nPHONY: .shell\n.shell:\n\t$(DOCKER) run \\\n\t\t--rm \\\n\t\t-ti \\\n\t\t-e GOCACHE=/tmp/.cache/go \\\n\t\t-e GOMODCACHE=/tmp/.cache/gomod \\\n\t\t-e GOLANGCI_LINT_CACHE=/tmp/.cache/golangci-lint \\\n\t\t-v $(PWD):/work \\\n\t\t-w /work \\\n\t\t--user $$(id -u):$$(id -g) \\\n\t\t$(BUILDIMAGE)\n"
  },
  {
    "path": "README.md",
    "content": "# NVIDIA Container Toolkit\n\n[![GitHub license](https://img.shields.io/github/license/NVIDIA/nvidia-container-toolkit?style=flat-square)](https://raw.githubusercontent.com/NVIDIA/nvidia-container-toolkit/main/LICENSE)\n[![Documentation](https://img.shields.io/badge/documentation-wiki-blue.svg?style=flat-square)](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/overview.html)\n[![Package repository](https://img.shields.io/badge/packages-repository-b956e8.svg?style=flat-square)](https://nvidia.github.io/libnvidia-container)\n\n![nvidia-container-stack](https://cloud.githubusercontent.com/assets/3028125/12213714/5b208976-b632-11e5-8406-38d379ec46aa.png)\n\n## Introduction\n\nThe NVIDIA Container Toolkit allows users to build and run GPU-accelerated containers. The toolkit includes a container runtime [library](https://github.com/NVIDIA/libnvidia-container) and utilities to automatically configure containers to leverage NVIDIA GPUs.\n\nProduct documentation including an architecture overview, platform support, and installation and usage guides can be found in the [documentation repository](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/overview.html).\n\n## Getting Started\n\n**Make sure you have installed the [NVIDIA driver](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#nvidia-drivers) for your Linux Distribution**\n**Note that you do not need to install the CUDA Toolkit on the host system, but the NVIDIA driver needs to be installed**\n\nFor instructions on getting started with the NVIDIA Container Toolkit, refer to the [installation guide](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#installation-guide).\n\n## Usage\n\nThe [user guide](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/user-guide.html) provides information on the configuration and command line options available when running GPU containers with Docker.\n\n## Issues and Contributing\n\n[Checkout the Contributing document!](CONTRIBUTING.md)\n\n* Please let us know by [filing a new issue](https://github.com/NVIDIA/nvidia-container-toolkit/issues/new)\n* You can contribute by creating a [pull request](https://github.com/NVIDIA/nvidia-container-toolkit/compare) to our public GitHub repository\n"
  },
  {
    "path": "RELEASE.md",
    "content": "# Release Process\n\nThe NVIDIA Container Toolkit consists of the following artifacts:\n- The NVIDIA Container Toolkit container\n- Packages for debian-based systems\n- Packages for rpm-based systems\n\n# Release Process Checklist:\n- [ ] Create a release PR:\n    - [ ] Run the `./hack/prepare-release.sh` script to update the version in all the needed files. This also creates a [release issue](https://github.com/NVIDIA/nvidia-container-toolkit/issues?q=is%3Aissue+is%3Aopen+label%3Arelease)\n    - [ ] Run the `./hack/generate-changelog.sh` script to generate the a draft changelog and update `CHANGELOG.md` with the changes.\n    - [ ] Create a PR from the created `bump-release-{{ .VERSION }}` branch.\n- [ ] Merge the release PR\n- [ ] Tag the release and push the tag to the `internal` mirror:\n- [ ] Wait for the image release to complete.\n- [ ] Push the tag to the the upstream GitHub repo.\n- [ ] Wait for the [`Release`](https://github.com/NVIDIA/nvidia-container-toolkit/actions/workflows/release.yaml) GitHub Action to complete\n- [ ] Publish the [draft release](https://github.com/NVIDIA/nvidia-container-toolkit/releases) created by the GitHub Action\n- [ ] Publish the packages to the gh-pages branch of the libnvidia-container repo\n- [ ] Create a KitPick\n- [ ] For non-experimental releases, schedule the package for publication to the CUDA Downloads repositories.\n\n## Troubleshooting\n\n*Note*: This assumes that we have the release tag checked out locally.\n\n- If the `Release` GitHub Action fails:\n    - Check the logs for the error first.\n    - Create the helm packages locally by running:\n      ```bash\n      ./hack/prepare-artifacts.sh {{ .VERSION }}\n      ```\n    - Create the draft release by running:\n      ```bash\n      ./hack/create-release.sh {{ .VERSION }}\n      ```\n"
  },
  {
    "path": "SECURITY.md",
    "content": "# Security\n\nNVIDIA is dedicated to the security and trust of our software products and services, including all source code repositories managed through our organization.\n\nIf you need to report a security issue, please use the appropriate contact points outlined below. **Please do not report security vulnerabilities through GitHub.**\n\n## Reporting Potential Security Vulnerability in an NVIDIA Product\n\nTo report a potential security vulnerability in any NVIDIA product:\n- Web: [Security Vulnerability Submission Form](https://www.nvidia.com/object/submit-security-vulnerability.html)\n- E-Mail: psirt@nvidia.com\n    - We encourage you to use the following PGP key for secure email communication: [NVIDIA public PGP Key for communication](https://www.nvidia.com/en-us/security/pgp-key)\n    - Please include the following information:\n        - Product/Driver name and version/branch that contains the vulnerability\n     - Type of vulnerability (code execution, denial of service, buffer overflow, etc.)\n        - Instructions to reproduce the vulnerability\n        - Proof-of-concept or exploit code\n        - Potential impact of the vulnerability, including how an attacker could exploit the vulnerability\n\nWhile NVIDIA currently does not have a bug bounty program, we do offer acknowledgement when an externally reported security issue is addressed under our coordinated vulnerability disclosure policy. Please visit our [Product Security Incident Response Team (PSIRT)](https://www.nvidia.com/en-us/security/psirt-policies/) policies page for more information.\n\n## NVIDIA Product Security\n\nFor all security-related concerns, please visit NVIDIA's Product Security portal at https://www.nvidia.com/en-us/security\n"
  },
  {
    "path": "api/config/v1/cli.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage config\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"strings\"\n)\n\n// ContainerCLIConfig stores the options for the nvidia-container-cli\ntype ContainerCLIConfig struct {\n\tRoot        string   `toml:\"root\"`\n\tPath        string   `toml:\"path\"`\n\tEnvironment []string `toml:\"environment\"`\n\tDebug       string   `toml:\"debug\"`\n\tLdcache     string   `toml:\"ldcache\"`\n\tLoadKmods   bool     `toml:\"load-kmods\"`\n\t// NoPivot disables the pivot root operation in the NVIDIA Container CLI.\n\t// This is not exposed in the config if not set.\n\tNoPivot   bool   `toml:\"no-pivot,omitempty\"`\n\tNoCgroups bool   `toml:\"no-cgroups\"`\n\tUser      string `toml:\"user\"`\n\t// Ldconfig represents the path to the ldconfig binary to be used to update\n\t// the ldcache in a container as it is being created.\n\t// If this path starts with a '@' the path is relative to the host and if\n\t// not it is treated as a container path.\n\t//\n\t// Note that the use of container paths are disabled by default and if this\n\t// is required, the features.allow-ldconfig-from-container feature gate must\n\t// be enabled explicitly.\n\tLdconfig ldconfigPath `toml:\"ldconfig\"`\n}\n\n// NormalizeLDConfigPath returns the resolved path of the configured LDConfig binary.\n// This is only done for host LDConfigs and is required to handle systems where\n// /sbin/ldconfig is a wrapper around /sbin/ldconfig.real.\nfunc (c *ContainerCLIConfig) NormalizeLDConfigPath() string {\n\treturn string(c.Ldconfig.normalize())\n}\n\n// An ldconfigPath is used to represent the path to ldconfig.\ntype ldconfigPath string\n\nfunc (p ldconfigPath) assertValid(allowContainerRelativePath bool) error {\n\tif p.isHostRelative() {\n\t\treturn nil\n\t}\n\tif allowContainerRelativePath {\n\t\treturn nil\n\t}\n\treturn fmt.Errorf(\"nvidia-container-cli.ldconfig value %q is not host-relative (does not start with a '@')\", p)\n}\n\nfunc (p ldconfigPath) isHostRelative() bool {\n\treturn strings.HasPrefix(string(p), \"@\")\n}\n\n// normalize returns the resolved path of the configured LDConfig binary.\n// This is only done for host LDConfigs and is required to handle systems where\n// /sbin/ldconfig is a wrapper around /sbin/ldconfig.real.\nfunc (p ldconfigPath) normalize() ldconfigPath {\n\tif !p.isHostRelative() {\n\t\treturn p\n\t}\n\n\tpath := string(p)\n\ttrimmedPath := strings.TrimSuffix(strings.TrimPrefix(path, \"@\"), \".real\")\n\t// If the .real path exists, we return that.\n\tif _, err := os.Stat(trimmedPath + \".real\"); err == nil {\n\t\treturn ldconfigPath(\"@\" + trimmedPath + \".real\")\n\t}\n\t// If the .real path does not exists (or cannot be read) we return the non-.real path.\n\treturn ldconfigPath(\"@\" + trimmedPath)\n}\n\n// NormalizeLDConfigPath returns the resolved path of the configured LDConfig binary.\n// This is only done for host LDConfigs and is required to handle systems where\n// /sbin/ldconfig is a wrapper around /sbin/ldconfig.real.\nfunc NormalizeLDConfigPath(path string) string {\n\treturn string(ldconfigPath(path).normalize())\n}\n"
  },
  {
    "path": "api/config/v1/cli_test.go",
    "content": "/**\n# Copyright 2023 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage config\n\nimport (\n\t\"os\"\n\t\"path/filepath\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestNormalizeLDConfigPath(t *testing.T) {\n\ttestDir := t.TempDir()\n\n\tf, err := os.Create(filepath.Join(testDir, \"exists.real\"))\n\trequire.NoError(t, err)\n\t_ = f.Close()\n\n\ttestCases := []struct {\n\t\tdescription string\n\t\tldconfig    ldconfigPath\n\t\texpected    string\n\t}{\n\t\t{\n\t\t\tdescription: \"empty input\",\n\t\t},\n\t\t{\n\t\t\tdescription: \"non-host with .real suffix returns as is\",\n\t\t\tldconfig:    \"/some/path/ldconfig.real\",\n\t\t\texpected:    \"/some/path/ldconfig.real\",\n\t\t},\n\t\t{\n\t\t\tdescription: \"non-host without .real suffix returns as is\",\n\t\t\tldconfig:    \"/some/path/ldconfig\",\n\t\t\texpected:    \"/some/path/ldconfig\",\n\t\t},\n\t\t{\n\t\t\tdescription: \"host .real file exists is returned\",\n\t\t\tldconfig:    ldconfigPath(\"@\" + filepath.Join(testDir, \"exists.real\")),\n\t\t\texpected:    \"@\" + filepath.Join(testDir, \"exists.real\"),\n\t\t},\n\t\t{\n\t\t\tdescription: \"host resolves .real file\",\n\t\t\tldconfig:    ldconfigPath(\"@\" + filepath.Join(testDir, \"exists\")),\n\t\t\texpected:    \"@\" + filepath.Join(testDir, \"exists.real\"),\n\t\t},\n\t\t{\n\t\t\tdescription: \"host .real file not exists strips suffix\",\n\t\t\tldconfig:    \"@/does/not/exist.real\",\n\t\t\texpected:    \"@/does/not/exist\",\n\t\t},\n\t\t{\n\t\t\tdescription: \"host file returned as is if no .real file exsits\",\n\t\t\tldconfig:    \"@/does/not/exist\",\n\t\t\texpected:    \"@/does/not/exist\",\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\tc := ContainerCLIConfig{\n\t\t\t\tLdconfig: tc.ldconfig,\n\t\t\t}\n\n\t\t\trequire.Equal(t, tc.expected, c.NormalizeLDConfigPath())\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "api/config/v1/config.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage config\n\nimport (\n\t\"bufio\"\n\t\"errors\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"tags.cncf.io/container-device-interface/pkg/cdi\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/config/image\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/lookup\"\n)\n\nconst (\n\tFilePathOverrideEnvVar = \"NVIDIA_CTK_CONFIG_FILE_PATH\"\n\tRelativeFilePath       = \"nvidia-container-runtime/config.toml\"\n\n\tconfigRootOverride = \"XDG_CONFIG_HOME\"\n\n\tnvidiaCTKExecutable          = \"nvidia-ctk\"\n\tnvidiaCTKDefaultFilePath     = \"/usr/bin/nvidia-ctk\"\n\tnvidiaCDIHookDefaultFilePath = \"/usr/bin/nvidia-cdi-hook\"\n\n\tnvidiaContainerRuntimeHookExecutable  = \"nvidia-container-runtime-hook\"\n\tnvidiaContainerRuntimeHookDefaultPath = \"/usr/bin/nvidia-container-runtime-hook\"\n)\n\nvar (\n\t// DefaultExecutableDir specifies the default path to use for executables if they cannot be located in the path.\n\tDefaultExecutableDir = \"/usr/bin\"\n\n\t// NVIDIAContainerRuntimeHookExecutable is the executable name for the NVIDIA Container Runtime Hook\n\tNVIDIAContainerRuntimeHookExecutable = \"nvidia-container-runtime-hook\"\n\t// NVIDIAContainerToolkitExecutable is the executable name for the NVIDIA Container Toolkit (an alias for the NVIDIA Container Runtime Hook)\n\tNVIDIAContainerToolkitExecutable = \"nvidia-container-toolkit\"\n)\n\nvar errInvalidConfig = errors.New(\"invalid config value\")\n\n// Config represents the contents of the config.toml file for the NVIDIA Container Toolkit\n// Note: This is currently duplicated by the HookConfig in cmd/nvidia-container-toolkit/hook_config.go\ntype Config struct {\n\tDisableRequire                 bool   `toml:\"disable-require\"`\n\tSwarmResource                  string `toml:\"swarm-resource\"`\n\tAcceptEnvvarUnprivileged       bool   `toml:\"accept-nvidia-visible-devices-envvar-when-unprivileged\"`\n\tAcceptDeviceListAsVolumeMounts bool   `toml:\"accept-nvidia-visible-devices-as-volume-mounts\"`\n\tSupportedDriverCapabilities    string `toml:\"supported-driver-capabilities\"`\n\n\tNVIDIAContainerCLIConfig         ContainerCLIConfig `toml:\"nvidia-container-cli\"`\n\tNVIDIACTKConfig                  CTKConfig          `toml:\"nvidia-ctk\"`\n\tNVIDIAContainerRuntimeConfig     RuntimeConfig      `toml:\"nvidia-container-runtime\"`\n\tNVIDIAContainerRuntimeHookConfig RuntimeHookConfig  `toml:\"nvidia-container-runtime-hook\"`\n\n\t// Features allows for finer control over optional features.\n\tFeatures features `toml:\"features,omitempty\"`\n}\n\n// GetConfigFilePath returns the path to the config file for the configured system\nfunc GetConfigFilePath() string {\n\tif configFilePathOverride := os.Getenv(FilePathOverrideEnvVar); configFilePathOverride != \"\" {\n\t\treturn configFilePathOverride\n\t}\n\tconfigRoot := \"/etc\"\n\tif XDGConfigDir := os.Getenv(configRootOverride); len(XDGConfigDir) != 0 {\n\t\tconfigRoot = XDGConfigDir\n\t}\n\n\treturn filepath.Join(configRoot, RelativeFilePath)\n}\n\n// GetConfig sets up the config struct. Values are read from a toml file\n// or set via the environment.\nfunc GetConfig() (*Config, error) {\n\tcfg, err := New(\n\t\tWithConfigFile(GetConfigFilePath()),\n\t)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn cfg.Config()\n}\n\n// GetDefault defines the default values for the config\nfunc GetDefault() (*Config, error) {\n\td := Config{\n\t\tAcceptEnvvarUnprivileged:    true,\n\t\tSupportedDriverCapabilities: image.SupportedDriverCapabilities.String(),\n\t\tNVIDIAContainerCLIConfig: ContainerCLIConfig{\n\t\t\tLoadKmods: true,\n\t\t\tLdconfig:  getLdConfigPath(),\n\t\t\tUser:      getUserGroup(),\n\t\t},\n\t\tNVIDIACTKConfig: CTKConfig{\n\t\t\tPath: nvidiaCTKExecutable,\n\t\t},\n\t\tNVIDIAContainerRuntimeConfig: RuntimeConfig{\n\t\t\tDebugFilePath: \"/dev/null\",\n\t\t\tLogLevel:      \"info\",\n\t\t\tRuntimes:      []string{\"runc\", \"crun\"},\n\t\t\tMode:          \"auto\",\n\t\t\tModes: modesConfig{\n\t\t\t\tCSV: csvModeConfig{\n\t\t\t\t\tMountSpecPath: \"/etc/nvidia-container-runtime/host-files-for-container.d\",\n\t\t\t\t},\n\t\t\t\tCDI: cdiModeConfig{\n\t\t\t\t\tDefaultKind:        \"nvidia.com/gpu\",\n\t\t\t\t\tAnnotationPrefixes: []string{cdi.AnnotationPrefix},\n\t\t\t\t\tSpecDirs:           cdi.DefaultSpecDirs,\n\t\t\t\t},\n\t\t\t\tLegacy: legacyModeConfig{\n\t\t\t\t\tCUDACompatMode: defaultCUDACompatMode,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tNVIDIAContainerRuntimeHookConfig: RuntimeHookConfig{\n\t\t\tPath: NVIDIAContainerRuntimeHookExecutable,\n\t\t},\n\t}\n\treturn &d, nil\n}\n\n// assertValid checks for a valid config.\nfunc (c *Config) assertValid() error {\n\terr := c.NVIDIAContainerCLIConfig.Ldconfig.assertValid(c.Features.AllowLDConfigFromContainer.IsEnabled())\n\tif err != nil {\n\t\treturn errors.Join(err, errInvalidConfig)\n\t}\n\treturn nil\n}\n\n// getLdConfigPath allows us to override this function for testing.\nvar getLdConfigPath = getLdConfigPathStub\n\nfunc getLdConfigPathStub() ldconfigPath {\n\treturn ldconfigPath(\"@/sbin/ldconfig\").normalize()\n}\n\nfunc getUserGroup() string {\n\tif isSuse() {\n\t\treturn \"root:video\"\n\t}\n\treturn \"\"\n}\n\n// isSuse returns whether a SUSE-based distribution was detected.\nfunc isSuse() bool {\n\tsuseDists := map[string]bool{\n\t\t\"suse\":     true,\n\t\t\"opensuse\": true,\n\t}\n\n\tidsLike := getDistIDLike()\n\tfor _, id := range idsLike {\n\t\tif suseDists[id] {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// getDistIDLike returns the ID_LIKE field from /etc/os-release.\n// We can override this for testing.\nvar getDistIDLike = func() []string {\n\treleaseFile, err := os.Open(\"/etc/os-release\")\n\tif err != nil {\n\t\treturn nil\n\t}\n\tdefer releaseFile.Close()\n\n\tscanner := bufio.NewScanner(releaseFile)\n\tfor scanner.Scan() {\n\t\tline := scanner.Text()\n\t\tif strings.HasPrefix(line, \"ID_LIKE=\") {\n\t\t\tvalue := strings.Trim(strings.TrimPrefix(line, \"ID_LIKE=\"), \"\\\"\")\n\t\t\treturn strings.Split(value, \" \")\n\t\t}\n\t}\n\treturn nil\n}\n\n// ResolveNVIDIACTKPath resolves the path to the nvidia-ctk binary.\n// This executable is used in hooks and needs to be an absolute path.\n// If the path is specified as an absolute path, it is used directly\n// without checking for existence of an executable at that path.\n//\n// Deprecated: Use ResolveNVIDIACDIHookPath directly instead.\nfunc ResolveNVIDIACTKPath(logger logger.Interface, nvidiaCTKPath string) string {\n\treturn resolveWithDefault(\n\t\tlogger,\n\t\t\"NVIDIA Container Toolkit CLI\",\n\t\tnvidiaCTKPath,\n\t\tnvidiaCTKDefaultFilePath,\n\t)\n}\n\n// ResolveNVIDIACDIHookPath resolves the path to the nvidia-cdi-hook binary.\n// This executable is used in hooks and needs to be an absolute path.\n// If the path is specified as an absolute path, it is used directly\n// without checking for existence of an executable at that path.\nfunc ResolveNVIDIACDIHookPath(logger logger.Interface, nvidiaCDIHookPath string) string {\n\tif filepath.Base(nvidiaCDIHookPath) == \"nvidia-ctk\" {\n\t\treturn resolveWithDefault(\n\t\t\tlogger,\n\t\t\t\"NVIDIA Container Toolkit CLI\",\n\t\t\tnvidiaCDIHookPath,\n\t\t\tnvidiaCTKDefaultFilePath,\n\t\t)\n\t}\n\treturn resolveWithDefault(\n\t\tlogger,\n\t\t\"NVIDIA CDI Hook CLI\",\n\t\tnvidiaCDIHookPath,\n\t\tnvidiaCDIHookDefaultFilePath,\n\t)\n}\n\n// ResolveNVIDIAContainerRuntimeHookPath resolves the path the nvidia-container-runtime-hook binary.\nfunc ResolveNVIDIAContainerRuntimeHookPath(logger logger.Interface, nvidiaContainerRuntimeHookPath string) string {\n\treturn resolveWithDefault(\n\t\tlogger,\n\t\t\"NVIDIA Container Runtime Hook\",\n\t\tnvidiaContainerRuntimeHookPath,\n\t\tnvidiaContainerRuntimeHookDefaultPath,\n\t)\n}\n\n// resolveWithDefault resolves the path to the specified binary.\n// If an absolute path is specified, it is used directly without searching for the binary.\n// If the binary cannot be found in the path, the specified default is used instead.\nfunc resolveWithDefault(logger logger.Interface, label string, path string, defaultPath string) string {\n\tif filepath.IsAbs(path) {\n\t\tlogger.Debugf(\"Using specified %v path %v\", label, path)\n\t\treturn path\n\t}\n\n\tif path == \"\" {\n\t\tpath = filepath.Base(defaultPath)\n\t}\n\tlogger.Debugf(\"Locating %v as %v\", label, path)\n\tlookup := lookup.NewExecutableLocator(logger, \"\")\n\n\tresolvedPath := defaultPath\n\ttargets, err := lookup.Locate(path)\n\tif err != nil {\n\t\tlogger.Warningf(\"Failed to locate %v: %v\", path, err)\n\t} else {\n\t\tlogger.Debugf(\"Found %v candidates: %v\", path, targets)\n\t\tresolvedPath = targets[0]\n\t}\n\tlogger.Debugf(\"Using %v path %v\", label, path)\n\n\treturn resolvedPath\n}\n"
  },
  {
    "path": "api/config/v1/config_test.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage config\n\nimport (\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/test/to\"\n)\n\nfunc TestGetConfigWithCustomConfig(t *testing.T) {\n\ttestDir := t.TempDir()\n\tt.Setenv(configRootOverride, testDir)\n\n\tfilename := filepath.Join(testDir, RelativeFilePath)\n\n\t// By default debug is disabled\n\tcontents := []byte(\"[nvidia-container-runtime]\\ndebug = \\\"/nvidia-container-toolkit.log\\\"\")\n\n\trequire.NoError(t, os.MkdirAll(filepath.Dir(filename), 0766))\n\trequire.NoError(t, os.WriteFile(filename, contents, 0600))\n\n\tcfg, err := GetConfig()\n\trequire.NoError(t, err)\n\trequire.Equal(t, \"/nvidia-container-toolkit.log\", cfg.NVIDIAContainerRuntimeConfig.DebugFilePath)\n}\n\nfunc TestGetConfigWithConfigFilePathOverride(t *testing.T) {\n\ttestDir := t.TempDir()\n\tfilename := filepath.Join(testDir, RelativeFilePath)\n\n\tt.Setenv(FilePathOverrideEnvVar, filename)\n\n\t// By default debug is disabled\n\tcontents := []byte(\"[nvidia-container-runtime]\\ndebug = \\\"/nvidia-container-toolkit.log\\\"\")\n\n\trequire.NoError(t, os.MkdirAll(filepath.Dir(filename), 0766))\n\trequire.NoError(t, os.WriteFile(filename, contents, 0600))\n\n\tcfg, err := GetConfig()\n\trequire.NoError(t, err)\n\trequire.Equal(t, \"/nvidia-container-toolkit.log\", cfg.NVIDIAContainerRuntimeConfig.DebugFilePath)\n}\n\nfunc TestGetConfig(t *testing.T) {\n\ttestCases := []struct {\n\t\tdescription    string\n\t\tcontents       []string\n\t\texpectedError  error\n\t\tdistIdsLike    []string\n\t\texpectedConfig *Config\n\t}{\n\t\t{\n\t\t\tdescription: \"empty config is default\",\n\t\t\texpectedConfig: &Config{\n\t\t\t\tAcceptEnvvarUnprivileged:    true,\n\t\t\t\tSupportedDriverCapabilities: \"compat32,compute,display,graphics,ngx,utility,video\",\n\t\t\t\tNVIDIAContainerCLIConfig: ContainerCLIConfig{\n\t\t\t\t\tRoot:      \"\",\n\t\t\t\t\tLoadKmods: true,\n\t\t\t\t\tLdconfig:  \"@/test/ld/config/path\",\n\t\t\t\t},\n\t\t\t\tNVIDIAContainerRuntimeConfig: RuntimeConfig{\n\t\t\t\t\tDebugFilePath: \"/dev/null\",\n\t\t\t\t\tLogLevel:      \"info\",\n\t\t\t\t\tRuntimes:      []string{\"runc\", \"crun\"},\n\t\t\t\t\tMode:          \"auto\",\n\t\t\t\t\tModes: modesConfig{\n\t\t\t\t\t\tCSV: csvModeConfig{\n\t\t\t\t\t\t\tMountSpecPath: \"/etc/nvidia-container-runtime/host-files-for-container.d\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tCDI: cdiModeConfig{\n\t\t\t\t\t\t\tDefaultKind:        \"nvidia.com/gpu\",\n\t\t\t\t\t\t\tAnnotationPrefixes: []string{\"cdi.k8s.io/\"},\n\t\t\t\t\t\t\tSpecDirs:           []string{\"/etc/cdi\", \"/var/run/cdi\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tLegacy: legacyModeConfig{\n\t\t\t\t\t\t\tCUDACompatMode: \"ldconfig\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tNVIDIAContainerRuntimeHookConfig: RuntimeHookConfig{\n\t\t\t\t\tPath: \"nvidia-container-runtime-hook\",\n\t\t\t\t},\n\t\t\t\tNVIDIACTKConfig: CTKConfig{\n\t\t\t\t\tPath: \"nvidia-ctk\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"config options set inline\",\n\t\t\tcontents: []string{\n\t\t\t\t\"accept-nvidia-visible-devices-envvar-when-unprivileged = false\",\n\t\t\t\t\"supported-driver-capabilities = \\\"compute,utility\\\"\",\n\t\t\t\t\"nvidia-container-cli.root = \\\"/bar/baz\\\"\",\n\t\t\t\t\"nvidia-container-cli.load-kmods = false\",\n\t\t\t\t\"nvidia-container-cli.ldconfig = \\\"@/foo/bar/ldconfig\\\"\",\n\t\t\t\t\"nvidia-container-cli.user = \\\"foo:bar\\\"\",\n\t\t\t\t\"nvidia-container-cli.cuda-compat-mode = \\\"mount\\\"\",\n\t\t\t\t\"nvidia-container-runtime.debug = \\\"/foo/bar\\\"\",\n\t\t\t\t\"nvidia-container-runtime.discover-mode = \\\"not-legacy\\\"\",\n\t\t\t\t\"nvidia-container-runtime.log-level = \\\"debug\\\"\",\n\t\t\t\t\"nvidia-container-runtime.runtimes = [\\\"/some/runtime\\\",]\",\n\t\t\t\t\"nvidia-container-runtime.mode = \\\"not-auto\\\"\",\n\t\t\t\t\"nvidia-container-runtime.modes.cdi.default-kind = \\\"example.vendor.com/device\\\"\",\n\t\t\t\t\"nvidia-container-runtime.modes.cdi.annotation-prefixes = [\\\"cdi.k8s.io/\\\", \\\"example.vendor.com/\\\",]\",\n\t\t\t\t\"nvidia-container-runtime.modes.cdi.spec-dirs = [\\\"/except/etc/cdi\\\", \\\"/not/var/run/cdi\\\",]\",\n\t\t\t\t\"nvidia-container-runtime.modes.csv.mount-spec-path = \\\"/not/etc/nvidia-container-runtime/host-files-for-container.d\\\"\",\n\t\t\t\t\"nvidia-container-runtime.modes.legacy.cuda-compat-mode = \\\"mount\\\"\",\n\t\t\t\t\"nvidia-container-runtime-hook.path = \\\"/foo/bar/nvidia-container-runtime-hook\\\"\",\n\t\t\t\t\"nvidia-ctk.path = \\\"/foo/bar/nvidia-ctk\\\"\",\n\t\t\t},\n\t\t\texpectedConfig: &Config{\n\t\t\t\tAcceptEnvvarUnprivileged:    false,\n\t\t\t\tSupportedDriverCapabilities: \"compute,utility\",\n\t\t\t\tNVIDIAContainerCLIConfig: ContainerCLIConfig{\n\t\t\t\t\tRoot:      \"/bar/baz\",\n\t\t\t\t\tLoadKmods: false,\n\t\t\t\t\tLdconfig:  \"@/foo/bar/ldconfig\",\n\t\t\t\t\tUser:      \"foo:bar\",\n\t\t\t\t},\n\t\t\t\tNVIDIAContainerRuntimeConfig: RuntimeConfig{\n\t\t\t\t\tDebugFilePath: \"/foo/bar\",\n\t\t\t\t\tLogLevel:      \"debug\",\n\t\t\t\t\tRuntimes:      []string{\"/some/runtime\"},\n\t\t\t\t\tMode:          \"not-auto\",\n\t\t\t\t\tModes: modesConfig{\n\t\t\t\t\t\tCSV: csvModeConfig{\n\t\t\t\t\t\t\tMountSpecPath: \"/not/etc/nvidia-container-runtime/host-files-for-container.d\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tCDI: cdiModeConfig{\n\t\t\t\t\t\t\tDefaultKind: \"example.vendor.com/device\",\n\t\t\t\t\t\t\tAnnotationPrefixes: []string{\n\t\t\t\t\t\t\t\t\"cdi.k8s.io/\",\n\t\t\t\t\t\t\t\t\"example.vendor.com/\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tSpecDirs: []string{\n\t\t\t\t\t\t\t\t\"/except/etc/cdi\",\n\t\t\t\t\t\t\t\t\"/not/var/run/cdi\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tLegacy: legacyModeConfig{\n\t\t\t\t\t\t\tCUDACompatMode: \"mount\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tNVIDIAContainerRuntimeHookConfig: RuntimeHookConfig{\n\t\t\t\t\tPath: \"/foo/bar/nvidia-container-runtime-hook\",\n\t\t\t\t},\n\t\t\t\tNVIDIACTKConfig: CTKConfig{\n\t\t\t\t\tPath: \"/foo/bar/nvidia-ctk\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"feature allows ldconfig to be overridden\",\n\t\t\tcontents: []string{\n\t\t\t\t\"[nvidia-container-cli]\",\n\t\t\t\t\"ldconfig = \\\"/foo/bar/ldconfig\\\"\",\n\t\t\t\t\"[features]\",\n\t\t\t\t\"allow-ldconfig-from-container = true\",\n\t\t\t},\n\t\t\texpectedConfig: &Config{\n\t\t\t\tAcceptEnvvarUnprivileged:    true,\n\t\t\t\tSupportedDriverCapabilities: \"compat32,compute,display,graphics,ngx,utility,video\",\n\t\t\t\tNVIDIAContainerCLIConfig: ContainerCLIConfig{\n\t\t\t\t\tLdconfig:  \"/foo/bar/ldconfig\",\n\t\t\t\t\tLoadKmods: true,\n\t\t\t\t},\n\t\t\t\tNVIDIAContainerRuntimeConfig: RuntimeConfig{\n\t\t\t\t\tDebugFilePath: \"/dev/null\",\n\t\t\t\t\tLogLevel:      \"info\",\n\t\t\t\t\tRuntimes:      []string{\"runc\", \"crun\"},\n\t\t\t\t\tMode:          \"auto\",\n\t\t\t\t\tModes: modesConfig{\n\t\t\t\t\t\tCSV: csvModeConfig{\n\t\t\t\t\t\t\tMountSpecPath: \"/etc/nvidia-container-runtime/host-files-for-container.d\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tCDI: cdiModeConfig{\n\t\t\t\t\t\t\tDefaultKind: \"nvidia.com/gpu\",\n\t\t\t\t\t\t\tAnnotationPrefixes: []string{\n\t\t\t\t\t\t\t\t\"cdi.k8s.io/\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tSpecDirs: []string{\n\t\t\t\t\t\t\t\t\"/etc/cdi\",\n\t\t\t\t\t\t\t\t\"/var/run/cdi\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tLegacy: legacyModeConfig{\n\t\t\t\t\t\t\tCUDACompatMode: \"ldconfig\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tNVIDIAContainerRuntimeHookConfig: RuntimeHookConfig{\n\t\t\t\t\tPath: \"nvidia-container-runtime-hook\",\n\t\t\t\t},\n\t\t\t\tNVIDIACTKConfig: CTKConfig{\n\t\t\t\t\tPath: \"nvidia-ctk\",\n\t\t\t\t},\n\t\t\t\tFeatures: features{\n\t\t\t\t\tAllowLDConfigFromContainer: to.Ptr(feature(true)),\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"config options set in section\",\n\t\t\tcontents: []string{\n\t\t\t\t\"accept-nvidia-visible-devices-envvar-when-unprivileged = false\",\n\t\t\t\t\"supported-driver-capabilities = \\\"compute,utility\\\"\",\n\t\t\t\t\"[nvidia-container-cli]\",\n\t\t\t\t\"root = \\\"/bar/baz\\\"\",\n\t\t\t\t\"load-kmods = false\",\n\t\t\t\t\"ldconfig = \\\"@/foo/bar/ldconfig\\\"\",\n\t\t\t\t\"cuda-compat-mode = \\\"mount\\\"\",\n\t\t\t\t\"user = \\\"foo:bar\\\"\",\n\t\t\t\t\"[nvidia-container-runtime]\",\n\t\t\t\t\"debug = \\\"/foo/bar\\\"\",\n\t\t\t\t\"discover-mode = \\\"not-legacy\\\"\",\n\t\t\t\t\"log-level = \\\"debug\\\"\",\n\t\t\t\t\"runtimes = [\\\"/some/runtime\\\",]\",\n\t\t\t\t\"mode = \\\"not-auto\\\"\",\n\t\t\t\t\"[nvidia-container-runtime.modes.cdi]\",\n\t\t\t\t\"default-kind = \\\"example.vendor.com/device\\\"\",\n\t\t\t\t\"annotation-prefixes = [\\\"cdi.k8s.io/\\\", \\\"example.vendor.com/\\\",]\",\n\t\t\t\t\"spec-dirs = [\\\"/except/etc/cdi\\\", \\\"/not/var/run/cdi\\\",]\",\n\t\t\t\t\"[nvidia-container-runtime.modes.csv]\",\n\t\t\t\t\"mount-spec-path = \\\"/not/etc/nvidia-container-runtime/host-files-for-container.d\\\"\",\n\t\t\t\t\"[nvidia-container-runtime.modes.legacy]\",\n\t\t\t\t\"cuda-compat-mode = \\\"mount\\\"\",\n\t\t\t\t\"[nvidia-container-runtime-hook]\",\n\t\t\t\t\"path = \\\"/foo/bar/nvidia-container-runtime-hook\\\"\",\n\t\t\t\t\"[nvidia-ctk]\",\n\t\t\t\t\"path = \\\"/foo/bar/nvidia-ctk\\\"\",\n\t\t\t},\n\t\t\texpectedConfig: &Config{\n\t\t\t\tAcceptEnvvarUnprivileged:    false,\n\t\t\t\tSupportedDriverCapabilities: \"compute,utility\",\n\t\t\t\tNVIDIAContainerCLIConfig: ContainerCLIConfig{\n\t\t\t\t\tRoot:      \"/bar/baz\",\n\t\t\t\t\tLoadKmods: false,\n\t\t\t\t\tLdconfig:  \"@/foo/bar/ldconfig\",\n\t\t\t\t\tUser:      \"foo:bar\",\n\t\t\t\t},\n\t\t\t\tNVIDIAContainerRuntimeConfig: RuntimeConfig{\n\t\t\t\t\tDebugFilePath: \"/foo/bar\",\n\t\t\t\t\tLogLevel:      \"debug\",\n\t\t\t\t\tRuntimes:      []string{\"/some/runtime\"},\n\t\t\t\t\tMode:          \"not-auto\",\n\t\t\t\t\tModes: modesConfig{\n\t\t\t\t\t\tCSV: csvModeConfig{\n\t\t\t\t\t\t\tMountSpecPath: \"/not/etc/nvidia-container-runtime/host-files-for-container.d\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tCDI: cdiModeConfig{\n\t\t\t\t\t\t\tDefaultKind: \"example.vendor.com/device\",\n\t\t\t\t\t\t\tAnnotationPrefixes: []string{\n\t\t\t\t\t\t\t\t\"cdi.k8s.io/\",\n\t\t\t\t\t\t\t\t\"example.vendor.com/\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tSpecDirs: []string{\n\t\t\t\t\t\t\t\t\"/except/etc/cdi\",\n\t\t\t\t\t\t\t\t\"/not/var/run/cdi\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tLegacy: legacyModeConfig{\n\t\t\t\t\t\t\tCUDACompatMode: \"mount\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tNVIDIAContainerRuntimeHookConfig: RuntimeHookConfig{\n\t\t\t\t\tPath: \"/foo/bar/nvidia-container-runtime-hook\",\n\t\t\t\t},\n\t\t\t\tNVIDIACTKConfig: CTKConfig{\n\t\t\t\t\tPath: \"/foo/bar/nvidia-ctk\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"suse config\",\n\t\t\tdistIdsLike: []string{\"suse\", \"opensuse\"},\n\t\t\texpectedConfig: &Config{\n\t\t\t\tAcceptEnvvarUnprivileged:    true,\n\t\t\t\tSupportedDriverCapabilities: \"compat32,compute,display,graphics,ngx,utility,video\",\n\t\t\t\tNVIDIAContainerCLIConfig: ContainerCLIConfig{\n\t\t\t\t\tRoot:      \"\",\n\t\t\t\t\tLoadKmods: true,\n\t\t\t\t\tLdconfig:  \"@/test/ld/config/path\",\n\t\t\t\t\tUser:      \"root:video\",\n\t\t\t\t},\n\t\t\t\tNVIDIAContainerRuntimeConfig: RuntimeConfig{\n\t\t\t\t\tDebugFilePath: \"/dev/null\",\n\t\t\t\t\tLogLevel:      \"info\",\n\t\t\t\t\tRuntimes:      []string{\"runc\", \"crun\"},\n\t\t\t\t\tMode:          \"auto\",\n\t\t\t\t\tModes: modesConfig{\n\t\t\t\t\t\tCSV: csvModeConfig{\n\t\t\t\t\t\t\tMountSpecPath: \"/etc/nvidia-container-runtime/host-files-for-container.d\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tCDI: cdiModeConfig{\n\t\t\t\t\t\t\tDefaultKind:        \"nvidia.com/gpu\",\n\t\t\t\t\t\t\tAnnotationPrefixes: []string{\"cdi.k8s.io/\"},\n\t\t\t\t\t\t\tSpecDirs:           []string{\"/etc/cdi\", \"/var/run/cdi\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tLegacy: legacyModeConfig{\n\t\t\t\t\t\t\tCUDACompatMode: \"ldconfig\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tNVIDIAContainerRuntimeHookConfig: RuntimeHookConfig{\n\t\t\t\t\tPath: \"nvidia-container-runtime-hook\",\n\t\t\t\t},\n\t\t\t\tNVIDIACTKConfig: CTKConfig{\n\t\t\t\t\tPath: \"nvidia-ctk\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"suse config overrides user\",\n\t\t\tdistIdsLike: []string{\"suse\", \"opensuse\"},\n\t\t\tcontents: []string{\n\t\t\t\t\"nvidia-container-cli.user = \\\"foo:bar\\\"\",\n\t\t\t},\n\t\t\texpectedConfig: &Config{\n\t\t\t\tAcceptEnvvarUnprivileged:    true,\n\t\t\t\tSupportedDriverCapabilities: \"compat32,compute,display,graphics,ngx,utility,video\",\n\t\t\t\tNVIDIAContainerCLIConfig: ContainerCLIConfig{\n\t\t\t\t\tRoot:      \"\",\n\t\t\t\t\tLoadKmods: true,\n\t\t\t\t\tLdconfig:  \"@/test/ld/config/path\",\n\t\t\t\t\tUser:      \"foo:bar\",\n\t\t\t\t},\n\t\t\t\tNVIDIAContainerRuntimeConfig: RuntimeConfig{\n\t\t\t\t\tDebugFilePath: \"/dev/null\",\n\t\t\t\t\tLogLevel:      \"info\",\n\t\t\t\t\tRuntimes:      []string{\"runc\", \"crun\"},\n\t\t\t\t\tMode:          \"auto\",\n\t\t\t\t\tModes: modesConfig{\n\t\t\t\t\t\tCSV: csvModeConfig{\n\t\t\t\t\t\t\tMountSpecPath: \"/etc/nvidia-container-runtime/host-files-for-container.d\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tCDI: cdiModeConfig{\n\t\t\t\t\t\t\tDefaultKind:        \"nvidia.com/gpu\",\n\t\t\t\t\t\t\tAnnotationPrefixes: []string{\"cdi.k8s.io/\"},\n\t\t\t\t\t\t\tSpecDirs:           []string{\"/etc/cdi\", \"/var/run/cdi\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tLegacy: legacyModeConfig{\n\t\t\t\t\t\t\tCUDACompatMode: \"ldconfig\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tNVIDIAContainerRuntimeHookConfig: RuntimeHookConfig{\n\t\t\t\t\tPath: \"nvidia-container-runtime-hook\",\n\t\t\t\t},\n\t\t\t\tNVIDIACTKConfig: CTKConfig{\n\t\t\t\t\tPath: \"nvidia-ctk\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\tdefer setGetLdConfigPathForTest()()\n\t\t\tdefer setGetDistIDLikeForTest(tc.distIdsLike)()\n\t\t\treader := strings.NewReader(strings.Join(tc.contents, \"\\n\"))\n\n\t\t\ttomlCfg, err := loadConfigTomlFrom(reader)\n\t\t\tif tc.expectedError != nil {\n\t\t\t\trequire.Error(t, err)\n\t\t\t} else {\n\t\t\t\trequire.NoError(t, err)\n\t\t\t}\n\t\t\tcfg, err := tomlCfg.Config()\n\t\t\trequire.NoError(t, err)\n\n\t\t\trequire.EqualValues(t, tc.expectedConfig, cfg)\n\t\t})\n\t}\n}\n\nfunc TestAssertValid(t *testing.T) {\n\tdefer setGetLdConfigPathForTest()()\n\n\ttestCases := []struct {\n\t\tdescription   string\n\t\tconfig        *Config\n\t\texpectedError error\n\t}{\n\t\t{\n\t\t\tdescription: \"default is valid\",\n\t\t\tconfig: func() *Config {\n\t\t\t\tconfig, _ := GetDefault()\n\t\t\t\treturn config\n\t\t\t}(),\n\t\t},\n\t\t{\n\t\t\tdescription: \"alternative host ldconfig path is valid\",\n\t\t\tconfig: &Config{\n\t\t\t\tNVIDIAContainerCLIConfig: ContainerCLIConfig{\n\t\t\t\t\tLdconfig: \"@/some/host/path\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"non-host path is invalid\",\n\t\t\tconfig: &Config{\n\t\t\t\tNVIDIAContainerCLIConfig: ContainerCLIConfig{\n\t\t\t\t\tLdconfig: \"/non/host/path\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedError: errInvalidConfig,\n\t\t},\n\t\t{\n\t\t\tdescription: \"feature flag allows non-host path\",\n\t\t\tconfig: &Config{\n\t\t\t\tNVIDIAContainerCLIConfig: ContainerCLIConfig{\n\t\t\t\t\tLdconfig: \"/non/host/path\",\n\t\t\t\t},\n\t\t\t\tFeatures: features{\n\t\t\t\t\tAllowLDConfigFromContainer: to.Ptr(feature(true)),\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\trequire.ErrorIs(t, tc.config.assertValid(), tc.expectedError)\n\t\t})\n\t}\n}\n\n// setGetDistIDsLikeForTest overrides the distribution IDs that would normally be read from the /etc/os-release file.\nfunc setGetDistIDLikeForTest(ids []string) func() {\n\tif ids == nil {\n\t\treturn func() {}\n\t}\n\toriginal := getDistIDLike\n\n\tgetDistIDLike = func() []string {\n\t\treturn ids\n\t}\n\n\treturn func() {\n\t\tgetDistIDLike = original\n\t}\n}\n\nfunc setGetLdConfigPathForTest() func() {\n\tprevious := getLdConfigPath\n\tgetLdConfigPath = func() ldconfigPath {\n\t\treturn \"@/test/ld/config/path\"\n\t}\n\treturn func() {\n\t\tgetLdConfigPath = previous\n\t}\n}\n"
  },
  {
    "path": "api/config/v1/features.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage config\n\n// features specifies a set of named features.\ntype features struct {\n\t// AllowCUDACompatLibsFromContainer allows CUDA compat libs from a container\n\t// to override certain driver library mounts from the host.\n\tAllowCUDACompatLibsFromContainer *feature `toml:\"allow-cuda-compat-libs-from-container,omitempty\"`\n\t// AllowLDConfigFromContainer allows non-host ldconfig paths to be used.\n\t// If this feature flag is not set to 'true' only host-rooted config paths\n\t// (i.e. paths starting with an '@' are considered valid)\n\tAllowLDConfigFromContainer *feature `toml:\"allow-ldconfig-from-container,omitempty\"`\n\t// AllowUnknownOCISpecFields allows the nvidia-container-runtime to ignore\n\t// unknown fields when loading the config (OCI spec) associated with a\n\t// container.\n\t// If this is enabled, these fields are silently dropped.\n\tAllowUnknownOCISpecFields *feature `toml:\"allow-unknown-oci-spec-fields,omitempty\"`\n\t// DisableCUDACompatLibHook, when enabled skips the injection of a specific\n\t// hook to process CUDA compatibility libraries.\n\t//\n\t// Note: Since this mechanism replaces the logic in the `nvidia-container-cli`,\n\t// toggling this feature has no effect if `allow-cuda-compat-libs-from-container` is enabled.\n\tDisableCUDACompatLibHook *feature `toml:\"disable-cuda-compat-lib-hook,omitempty\"`\n\t// DisableImexChannelCreation ensures that the implicit creation of\n\t// requested IMEX channels is skipped when invoking the nvidia-container-cli.\n\tDisableImexChannelCreation *feature `toml:\"disable-imex-channel-creation,omitempty\"`\n\t// IgnoreImexChannelRequests configures the NVIDIA Container Toolkit to\n\t// ignore IMEX channel requests through the NVIDIA_IMEX_CHANNELS envvar or\n\t// volume mounts.\n\t// This ensures that the NVIDIA Container Toolkit cannot be used to provide\n\t// access to an IMEX channel by simply specifying an environment variable,\n\t// possibly bypassing other checks by an orchestration system such as\n\t// kubernetes.\n\tIgnoreImexChannelRequests *feature `toml:\"ignore-imex-channel-requests,omitempty\"`\n\t// NoAdditionalGIDsForDeviceNodes disables the injection of additional GIDs\n\t// for a device node when the node is not readable and writeable by the user.\n\tNoAdditionalGIDsForDeviceNodes *feature `toml:\"no-additional-gids-for-device-nodes,omitempty\"`\n}\n\ntype feature bool\n\n// IsEnabled checks whether a feature is explicitly enabled.\nfunc (f *feature) IsEnabled() bool {\n\tif f != nil {\n\t\treturn bool(*f)\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "api/config/v1/hook.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage config\n\n// RuntimeHookConfig stores the config options for the NVIDIA Container Runtime\ntype RuntimeHookConfig struct {\n\t// Path specifies the path to the NVIDIA Container Runtime hook binary.\n\t// If an executable name is specified, this will be resolved in the path.\n\tPath string `toml:\"path\"`\n\t// SkipModeDetection disables the mode check for the runtime hook.\n\tSkipModeDetection bool `toml:\"skip-mode-detection\"`\n}\n"
  },
  {
    "path": "api/config/v1/runtime.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage config\n\nimport \"github.com/NVIDIA/nvidia-container-toolkit/pkg/nvcdi\"\n\n// RuntimeConfig stores the config options for the NVIDIA Container Runtime\ntype RuntimeConfig struct {\n\tDebugFilePath string `toml:\"debug\"`\n\t// LogLevel defines the logging level for the application\n\tLogLevel string `toml:\"log-level\"`\n\t// Runtimes defines the candidates for the low-level runtime\n\tRuntimes []string    `toml:\"runtimes\"`\n\tMode     string      `toml:\"mode\"`\n\tModes    modesConfig `toml:\"modes\"`\n}\n\n// modesConfig defines (optional) per-mode configs\ntype modesConfig struct {\n\tCSV    csvModeConfig    `toml:\"csv\"`\n\tCDI    cdiModeConfig    `toml:\"cdi\"`\n\tJitCDI jitCDIModeConfig `toml:\"jit-cdi,omitempty\"`\n\tLegacy legacyModeConfig `toml:\"legacy\"`\n}\n\ntype cdiModeConfig struct {\n\t// SpecDirs allows for the default spec dirs for CDI to be overridden\n\tSpecDirs []string `toml:\"spec-dirs\"`\n\t// DefaultKind sets the default kind to be used when constructing fully-qualified CDI device names\n\tDefaultKind string `toml:\"default-kind\"`\n\t// AnnotationPrefixes sets the allowed prefixes for CDI annotation-based device injection\n\tAnnotationPrefixes []string `toml:\"annotation-prefixes\"`\n}\n\ntype jitCDIModeConfig struct {\n\t// NVCDIFeatureFlags sets a list of nvcdi features explicitly.\n\tNVCDIFeatureFlags []nvcdi.FeatureFlag `toml:\"nvcdi-feature-flags,omitempty\"`\n}\n\ntype csvModeConfig struct {\n\tMountSpecPath string `toml:\"mount-spec-path\"`\n\t// CompatContainerRoot specifies the compat root used when the the standard\n\t// CUDA compat libraries should not be used.\n\tCompatContainerRoot string `toml:\"compat-container-root,omitempty\"`\n}\n\ntype legacyModeConfig struct {\n\t// CUDACompatMode sets the mode to be used to make CUDA Forward Compat\n\t// libraries discoverable in the container.\n\tCUDACompatMode cudaCompatMode `toml:\"cuda-compat-mode,omitempty\"`\n}\n\ntype cudaCompatMode string\n\nconst (\n\tdefaultCUDACompatMode = CUDACompatModeLdconfig\n\t// CUDACompatModeDisabled explicitly disables the handling of CUDA Forward\n\t// Compatibility in the NVIDIA Container Runtime and NVIDIA Container\n\t// Runtime Hook.\n\tCUDACompatModeDisabled = cudaCompatMode(\"disabled\")\n\t// CUDACompatModeHook uses a container lifecycle hook to implement CUDA\n\t// Forward Compatibility support. This requires the use of the NVIDIA\n\t// Container Runtime and is not compatible with use cases where only the\n\t// NVIDIA Container Runtime Hook is used (e.g. the Docker --gpus flag).\n\tCUDACompatModeHook = cudaCompatMode(\"hook\")\n\t// CUDACompatModeLdconfig adds the folders containing CUDA Forward Compat\n\t// libraries to the ldconfig command invoked from the NVIDIA Container\n\t// Runtime Hook.\n\tCUDACompatModeLdconfig = cudaCompatMode(\"ldconfig\")\n\t// CUDACompatModeMount mounts CUDA Forward Compat folders from the container\n\t// to the container when using the NVIDIA Container Runtime Hook.\n\tCUDACompatModeMount = cudaCompatMode(\"mount\")\n)\n"
  },
  {
    "path": "api/config/v1/toml.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage config\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"regexp\"\n\n\t\"github.com/pelletier/go-toml\"\n)\n\n// Toml is a type for the TOML representation of a config.\ntype Toml struct {\n\ttree *toml.Tree\n\t// valuesSet allows us to trac expliclitly set values so that we can\n\t// properly uncomment defaults.\n\tvaluesSet map[string]bool\n}\n\nfunc TreeFromMap(m map[string]any) (*Toml, error) {\n\ttree, err := toml.TreeFromMap(m)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn fromTree(tree), nil\n}\n\nfunc fromTree(t *toml.Tree) *Toml {\n\treturn &Toml{tree: t, valuesSet: make(map[string]bool)}\n}\n\ntype options struct {\n\tconfigFile string\n\trequired   bool\n}\n\n// Option is a functional option for loading TOML config files.\ntype Option func(*options)\n\n// WithConfigFile sets the config file option.\nfunc WithConfigFile(configFile string) Option {\n\treturn func(o *options) {\n\t\to.configFile = configFile\n\t}\n}\n\n// WithRequired sets the required option.\n// If this is set to true, a failure to open the specified file is treated as an error\nfunc WithRequired(required bool) Option {\n\treturn func(o *options) {\n\t\to.required = required\n\t}\n}\n\n// New creates a new toml tree based on the provided options\nfunc New(opts ...Option) (*Toml, error) {\n\to := &options{}\n\tfor _, opt := range opts {\n\t\topt(o)\n\t}\n\n\treturn o.loadConfigToml()\n}\n\nfunc (o options) loadConfigToml() (*Toml, error) {\n\tfilename := o.configFile\n\tif filename == \"\" {\n\t\treturn defaultToml()\n\t}\n\n\t_, err := os.Stat(filename)\n\tif os.IsNotExist(err) && o.required {\n\t\treturn nil, os.ErrNotExist\n\t}\n\n\ttomlFile, err := os.Open(filename)\n\tif os.IsNotExist(err) {\n\t\treturn defaultToml()\n\t} else if err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to load specified config file: %w\", err)\n\t}\n\tdefer tomlFile.Close()\n\n\treturn loadConfigTomlFrom(tomlFile)\n\n}\n\nfunc defaultToml() (*Toml, error) {\n\tcfg, err := GetDefault()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tcontents, err := toml.Marshal(cfg)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn loadConfigTomlFrom(bytes.NewReader(contents))\n}\n\nfunc loadConfigTomlFrom(reader io.Reader) (*Toml, error) {\n\ttree, err := toml.LoadReader(reader)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tt := &Toml{\n\t\ttree:      tree,\n\t\tvaluesSet: make(map[string]bool),\n\t}\n\n\treturn t, nil\n}\n\n// Config returns the typed config associated with the toml tree.\nfunc (t *Toml) Config() (*Config, error) {\n\tcfg, err := t.configNoOverrides()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif err := cfg.assertValid(); err != nil {\n\t\treturn nil, err\n\t}\n\treturn cfg, nil\n}\n\n// configNoOverrides returns the typed config associated with the toml tree.\n// This config does not include feature-specific overrides.\nfunc (t *Toml) configNoOverrides() (*Config, error) {\n\tcfg, err := GetDefault()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif t == nil {\n\t\treturn cfg, nil\n\t}\n\tif err := t.Unmarshal(cfg); err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to unmarshal config: %v\", err)\n\t}\n\treturn cfg, nil\n}\n\n// Unmarshal wraps the toml.Tree Unmarshal function.\nfunc (t *Toml) Unmarshal(v interface{}) error {\n\treturn t.tree.Unmarshal(v)\n}\n\n// Save saves the config to the specified Writer.\nfunc (t *Toml) Save(w io.Writer) (int64, error) {\n\tcontents, err := t.contents()\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\tn, err := w.Write(contents)\n\treturn int64(n), err\n}\n\n// contents returns the config TOML as a byte slice.\n// Any required formatting is applied.\nfunc (t Toml) contents() ([]byte, error) {\n\tcommented := t.commentDefaults()\n\n\tbuffer := bytes.NewBuffer(nil)\n\n\tenc := toml.NewEncoder(buffer).Indentation(\"\")\n\tif err := enc.Encode(commented.tree); err != nil {\n\t\treturn nil, fmt.Errorf(\"invalid config: %v\", err)\n\t}\n\treturn t.format(buffer.Bytes())\n}\n\n// format fixes the comments for the config to ensure that they start in column\n// 1 and are not followed by a space.\nfunc (t Toml) format(contents []byte) ([]byte, error) {\n\tr := regexp.MustCompile(`(\\n*)\\s*?#\\s*(\\S.*)`)\n\treplaced := r.ReplaceAll(contents, []byte(\"$1#$2\"))\n\n\treturn replaced, nil\n}\n\n// Delete deletes the specified key from the TOML config.\nfunc (t *Toml) Delete(key string) error {\n\tdelete(t.valuesSet, key)\n\treturn t.tree.Delete(key)\n}\n\n// Get returns the value for the specified key.\nfunc (t *Toml) Get(key string) interface{} {\n\treturn t.tree.Get(key)\n}\n\n// GetDefault returns the value for the specified key and falls back to the default value if the Get call fails\nfunc (t *Toml) GetDefault(key string, def interface{}) interface{} {\n\treturn t.tree.GetDefault(key, def)\n}\n\n// Set sets the specified key to the specified value in the TOML config.\nfunc (t *Toml) Set(key string, value interface{}) {\n\tt.tree.Set(key, value)\n\tt.valuesSet[key] = true\n}\n\n// WriteTo encode the Tree as Toml and writes it to the writer w.\n// Returns the number of bytes written in case of success, or an error if anything happened.\nfunc (t *Toml) WriteTo(w io.Writer) (int64, error) {\n\treturn t.tree.WriteTo(w)\n}\n\n// commentDefaults applies the required comments for default values to the Toml.\nfunc (t *Toml) commentDefaults() *Toml {\n\tasToml := t.tree\n\tcommentedDefaults := map[string]interface{}{\n\t\t\"swarm-resource\": \"DOCKER_RESOURCE_GPU\",\n\t\t\"accept-nvidia-visible-devices-envvar-when-unprivileged\": true,\n\t\t\"accept-nvidia-visible-devices-as-volume-mounts\":         false,\n\t\t\"nvidia-container-cli.root\":                              \"/run/nvidia/driver\",\n\t\t\"nvidia-container-cli.path\":                              \"/usr/bin/nvidia-container-cli\",\n\t\t\"nvidia-container-cli.debug\":                             \"/var/log/nvidia-container-toolkit.log\",\n\t\t\"nvidia-container-cli.ldcache\":                           \"/etc/ld.so.cache\",\n\t\t\"nvidia-container-cli.no-cgroups\":                        false,\n\t\t\"nvidia-container-cli.user\":                              \"root:video\",\n\t\t\"nvidia-container-runtime.debug\":                         \"/var/log/nvidia-container-runtime.log\",\n\t}\n\tfor k, v := range commentedDefaults {\n\t\t// If a value has been explicitly set, we don't check whether it should\n\t\t// be commented.\n\t\tif t.valuesSet[k] {\n\t\t\tcontinue\n\t\t}\n\t\tset := asToml.Get(k)\n\t\tif !shouldComment(k, v, set) {\n\t\t\tcontinue\n\t\t}\n\t\tasToml.SetWithComment(k, \"\", true, v)\n\t}\n\tt.tree = asToml\n\treturn t\n}\n\nfunc shouldComment(key string, defaultValue interface{}, setTo interface{}) bool {\n\tif key == \"nvidia-container-cli.user\" && defaultValue == setTo && isSuse() {\n\t\treturn false\n\t}\n\tif key == \"nvidia-container-runtime.debug\" && setTo == \"/dev/null\" {\n\t\treturn true\n\t}\n\tif setTo == nil || defaultValue == setTo || setTo == \"\" {\n\t\treturn true\n\t}\n\n\treturn false\n}\n"
  },
  {
    "path": "api/config/v1/toml_test.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage config\n\nimport (\n\t\"bytes\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/test/to\"\n)\n\nfunc TestTomlSave(t *testing.T) {\n\ttestCases := []struct {\n\t\tdescription string\n\t\tconfig      *Toml\n\t\texpected    string\n\t}{\n\t\t{\n\t\t\tdescription: \"defaultConfig\",\n\t\t\tconfig: func() *Toml {\n\t\t\t\tt, _ := defaultToml()\n\t\t\t\t// TODO: We handle the ldconfig path specifically, since this is platform\n\t\t\t\t// dependent.\n\t\t\t\tt.Set(\"nvidia-container-cli.ldconfig\", \"OVERRIDDEN\")\n\t\t\t\treturn t\n\t\t\t}(),\n\t\t\texpected: `\n#accept-nvidia-visible-devices-as-volume-mounts = false\n#accept-nvidia-visible-devices-envvar-when-unprivileged = true\ndisable-require = false\nsupported-driver-capabilities = \"compat32,compute,display,graphics,ngx,utility,video\"\n#swarm-resource = \"DOCKER_RESOURCE_GPU\"\n\n[nvidia-container-cli]\n#debug = \"/var/log/nvidia-container-toolkit.log\"\nenvironment = []\n#ldcache = \"/etc/ld.so.cache\"\nldconfig = \"OVERRIDDEN\"\nload-kmods = true\n#no-cgroups = false\n#path = \"/usr/bin/nvidia-container-cli\"\n#root = \"/run/nvidia/driver\"\n#user = \"root:video\"\n\n[nvidia-container-runtime]\n#debug = \"/var/log/nvidia-container-runtime.log\"\nlog-level = \"info\"\nmode = \"auto\"\nruntimes = [\"runc\", \"crun\"]\n\n[nvidia-container-runtime.modes]\n\n[nvidia-container-runtime.modes.cdi]\nannotation-prefixes = [\"cdi.k8s.io/\"]\ndefault-kind = \"nvidia.com/gpu\"\nspec-dirs = [\"/etc/cdi\", \"/var/run/cdi\"]\n\n[nvidia-container-runtime.modes.csv]\nmount-spec-path = \"/etc/nvidia-container-runtime/host-files-for-container.d\"\n\n[nvidia-container-runtime.modes.legacy]\ncuda-compat-mode = \"ldconfig\"\n\n[nvidia-container-runtime-hook]\npath = \"nvidia-container-runtime-hook\"\nskip-mode-detection = false\n\n[nvidia-ctk]\npath = \"nvidia-ctk\"\n`,\n\t\t},\n\t\t{\n\t\t\tdescription: \"set debug to default uncomments\",\n\t\t\tconfig: func() *Toml {\n\t\t\t\tt, _ := defaultToml()\n\t\t\t\t// TODO: We handle the ldconfig path specifically, since this is platform\n\t\t\t\t// dependent.\n\t\t\t\tt.Set(\"nvidia-container-cli.ldconfig\", \"OVERRIDDEN\")\n\t\t\t\tt.Set(\"nvidia-container-cli.debug\", \"/var/log/nvidia-container-toolkit.log\")\n\t\t\t\tt.Set(\"nvidia-container-runtime.debug\", \"/var/log/nvidia-container-runtime.log\")\n\t\t\t\treturn t\n\t\t\t}(),\n\t\t\texpected: `\n#accept-nvidia-visible-devices-as-volume-mounts = false\n#accept-nvidia-visible-devices-envvar-when-unprivileged = true\ndisable-require = false\nsupported-driver-capabilities = \"compat32,compute,display,graphics,ngx,utility,video\"\n#swarm-resource = \"DOCKER_RESOURCE_GPU\"\n\n[nvidia-container-cli]\ndebug = \"/var/log/nvidia-container-toolkit.log\"\nenvironment = []\n#ldcache = \"/etc/ld.so.cache\"\nldconfig = \"OVERRIDDEN\"\nload-kmods = true\n#no-cgroups = false\n#path = \"/usr/bin/nvidia-container-cli\"\n#root = \"/run/nvidia/driver\"\n#user = \"root:video\"\n\n[nvidia-container-runtime]\ndebug = \"/var/log/nvidia-container-runtime.log\"\nlog-level = \"info\"\nmode = \"auto\"\nruntimes = [\"runc\", \"crun\"]\n\n[nvidia-container-runtime.modes]\n\n[nvidia-container-runtime.modes.cdi]\nannotation-prefixes = [\"cdi.k8s.io/\"]\ndefault-kind = \"nvidia.com/gpu\"\nspec-dirs = [\"/etc/cdi\", \"/var/run/cdi\"]\n\n[nvidia-container-runtime.modes.csv]\nmount-spec-path = \"/etc/nvidia-container-runtime/host-files-for-container.d\"\n\n[nvidia-container-runtime.modes.legacy]\ncuda-compat-mode = \"ldconfig\"\n\n[nvidia-container-runtime-hook]\npath = \"nvidia-container-runtime-hook\"\nskip-mode-detection = false\n\n[nvidia-ctk]\npath = \"nvidia-ctk\"\n`,\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\tbuffer := new(bytes.Buffer)\n\t\t\t_, err := tc.config.Save(buffer)\n\t\t\trequire.NoError(t, err)\n\n\t\t\trequire.EqualValues(t,\n\t\t\t\tstrings.TrimSpace(tc.expected),\n\t\t\t\tstrings.TrimSpace(buffer.String()),\n\t\t\t)\n\t\t})\n\t}\n}\n\nfunc TestFormat(t *testing.T) {\n\ttestCases := []struct {\n\t\tinput    string\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tinput:    \"# comment\",\n\t\t\texpected: \"#comment\",\n\t\t},\n\t\t{\n\t\t\tinput:    \" #comment\",\n\t\t\texpected: \"#comment\",\n\t\t},\n\t\t{\n\t\t\tinput:    \" # comment\",\n\t\t\texpected: \"#comment\",\n\t\t},\n\t\t{\n\t\t\tinput: strings.Join([]string{\n\t\t\t\t\"some\",\n\t\t\t\t\"# comment\",\n\t\t\t\t\" # comment\",\n\t\t\t\t\" #comment\",\n\t\t\t\t\"other\"}, \"\\n\"),\n\t\t\texpected: strings.Join([]string{\n\t\t\t\t\"some\",\n\t\t\t\t\"#comment\",\n\t\t\t\t\"#comment\",\n\t\t\t\t\"#comment\",\n\t\t\t\t\"other\"}, \"\\n\"),\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.input, func(t *testing.T) {\n\t\t\tactual, _ := (Toml{}).format([]byte(tc.input))\n\t\t\trequire.Equal(t, tc.expected, string(actual))\n\t\t})\n\t}\n}\n\nfunc TestGetFormattedConfig(t *testing.T) {\n\texpectedLines := []string{\n\t\t\"#no-cgroups = false\",\n\t\t\"#debug = \\\"/var/log/nvidia-container-toolkit.log\\\"\",\n\t\t\"#debug = \\\"/var/log/nvidia-container-runtime.log\\\"\",\n\t}\n\n\tcontents, err := createEmpty().contents()\n\trequire.NoError(t, err)\n\tlines := strings.Split(string(contents), \"\\n\")\n\n\tfor _, line := range expectedLines {\n\t\trequire.Contains(t, lines, line)\n\t}\n}\n\nfunc TestTomlContents(t *testing.T) {\n\ttestCases := []struct {\n\t\tdescription string\n\t\tcontents    map[string]interface{}\n\t\texpected    string\n\t}{\n\t\t{\n\t\t\tdescription: \"empty config returns commented defaults\",\n\t\t\texpected: `\n#accept-nvidia-visible-devices-as-volume-mounts = false\n#accept-nvidia-visible-devices-envvar-when-unprivileged = true\n#swarm-resource = \"DOCKER_RESOURCE_GPU\"\n\n[nvidia-container-cli]\n#debug = \"/var/log/nvidia-container-toolkit.log\"\n#ldcache = \"/etc/ld.so.cache\"\n#no-cgroups = false\n#path = \"/usr/bin/nvidia-container-cli\"\n#root = \"/run/nvidia/driver\"\n#user = \"root:video\"\n\n[nvidia-container-runtime]\n#debug = \"/var/log/nvidia-container-runtime.log\"`,\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\tcfg, err := TreeFromMap(tc.contents)\n\t\t\trequire.NoError(t, err)\n\t\t\tcontents, err := cfg.contents()\n\t\t\trequire.NoError(t, err)\n\n\t\t\trequire.EqualValues(t,\n\t\t\t\tstrings.TrimSpace(tc.expected),\n\t\t\t\tstrings.TrimSpace(string(contents)),\n\t\t\t)\n\t\t})\n\t}\n}\n\nfunc TestConfigFromToml(t *testing.T) {\n\tdefer setGetLdConfigPathForTest()()\n\n\ttestCases := []struct {\n\t\tdescription    string\n\t\tcontents       map[string]interface{}\n\t\texpectedError  error\n\t\texpectedConfig *Config\n\t}{\n\t\t{\n\t\t\tdescription: \"empty config returns default config\",\n\t\t\tcontents:    nil,\n\t\t\texpectedConfig: func() *Config {\n\t\t\t\tc, _ := GetDefault()\n\t\t\t\treturn c\n\t\t\t}(),\n\t\t},\n\t\t{\n\t\t\tdescription: \"contents overrides default\",\n\t\t\tcontents: map[string]interface{}{\n\t\t\t\t\"nvidia-container-runtime\": map[string]interface{}{\n\t\t\t\t\t\"debug\": \"/some/log/file.log\",\n\t\t\t\t\t\"mode\":  \"csv\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedConfig: func() *Config {\n\t\t\t\tc, _ := GetDefault()\n\t\t\t\tc.NVIDIAContainerRuntimeConfig.DebugFilePath = \"/some/log/file.log\"\n\t\t\t\tc.NVIDIAContainerRuntimeConfig.Mode = \"csv\"\n\t\t\t\treturn c\n\t\t\t}(),\n\t\t},\n\t\t{\n\t\t\tdescription: \"invalid ldconfig value raises error\",\n\t\t\tcontents: map[string]interface{}{\n\t\t\t\t\"nvidia-container-cli\": map[string]interface{}{\n\t\t\t\t\t\"ldconfig\": \"/some/ldconfig/path\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedError: errInvalidConfig,\n\t\t},\n\t\t{\n\t\t\tdescription: \"feature allows ldconfig override\",\n\t\t\tcontents: map[string]interface{}{\n\t\t\t\t\"nvidia-container-cli\": map[string]interface{}{\n\t\t\t\t\t\"ldconfig\": \"/some/ldconfig/path\",\n\t\t\t\t},\n\t\t\t\t\"features\": map[string]interface{}{\n\t\t\t\t\t\"allow-ldconfig-from-container\": true,\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedConfig: func() *Config {\n\t\t\t\tc, _ := GetDefault()\n\t\t\t\tc.NVIDIAContainerCLIConfig.Ldconfig = \"/some/ldconfig/path\"\n\t\t\t\tc.Features.AllowLDConfigFromContainer = to.Ptr(feature(true))\n\t\t\t\treturn c\n\t\t\t}(),\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\ttomlCfg, _ := TreeFromMap(tc.contents)\n\t\t\tconfig, err := tomlCfg.Config()\n\t\t\trequire.ErrorIs(t, err, tc.expectedError)\n\t\t\trequire.EqualValues(t, tc.expectedConfig, config)\n\t\t})\n\t}\n}\n\nfunc createEmpty() *Toml {\n\tt, _ := TreeFromMap(nil)\n\treturn t\n}\n"
  },
  {
    "path": "api/config/v1/toolkit-cli.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage config\n\n// CTKConfig stores the config options for the NVIDIA Container Toolkit CLI (nvidia-ctk)\ntype CTKConfig struct {\n\tPath string `toml:\"path\"`\n}\n"
  },
  {
    "path": "cmd/nvidia-cdi-hook/README.md",
    "content": "# NVIDIA CDI Hook\n\nThe CLI `nvidia-cdi-hook` provides container device runtime hook capabilities when\ncalled by a container runtime, as specific in a\n[Container Device Interface](https://tags.cncf.io/container-device-interface/blob/main/SPEC.md)\nfile.\n\n## Generating a CDI\n\nThe CDI itself is created for an NVIDIA-capable device using the\n[`nvidia-ctk cdi generate`](../nvidia-ctk/) command.\n\nWhen `nvidia-ctk cdi generate` is run, the CDI specification is generated as a yaml file.\nThe CDI specification provides instructions for a container runtime to set up devices, files and\nother resources for the container prior to starting it. Those instructions\nmay include executing command-line tools to prepare the filesystem. The execution\nof such command-line tools is called a hook.\n\n`nvidia-cdi-hook` is the CLI tool that is expected to be called by the container runtime,\nwhen specified by the CDI file.\n\nSee the [`nvidia-ctk` documentation](../nvidia-ctk/README.md) for more information\non generating a CDI file.\n\n## Functionality\n\nThe `nvidia-cdi-hook` CLI provides the following functionality:\n\n* `chmod` - Change the permissions of a file or directory inside the directory path to be mounted into a container.\n* `create-symlinks` - Create symlinks inside the directory path to be mounted into a container.\n* `update-ldcache` - Update the dynamic linker cache inside the directory path to be mounted into a container.\n"
  },
  {
    "path": "cmd/nvidia-cdi-hook/chmod/chmod.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage chmod\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io/fs\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/urfave/cli/v3\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/oci\"\n)\n\ntype command struct {\n\tlogger logger.Interface\n}\n\ntype config struct {\n\tpaths         []string\n\tmodeStr       string\n\tmode          fs.FileMode\n\tcontainerSpec string\n}\n\n// NewCommand constructs a chmod command with the specified logger\nfunc NewCommand(logger logger.Interface) *cli.Command {\n\tc := command{\n\t\tlogger: logger,\n\t}\n\treturn c.build()\n}\n\n// build the chmod command\nfunc (m command) build() *cli.Command {\n\tcfg := config{}\n\n\t// Create the 'chmod' command\n\tc := cli.Command{\n\t\tName:  \"chmod\",\n\t\tUsage: \"Set the permissions of folders in the container by running chmod. The container root is prefixed to the specified paths.\",\n\t\tBefore: func(ctx context.Context, cmd *cli.Command) (context.Context, error) {\n\t\t\treturn ctx, m.validateFlags(cmd, &cfg)\n\t\t},\n\t\tAction: func(ctx context.Context, cmd *cli.Command) error {\n\t\t\treturn m.run(cmd, &cfg)\n\t\t},\n\t\tFlags: []cli.Flag{\n\t\t\t&cli.StringSliceFlag{\n\t\t\t\tName:        \"path\",\n\t\t\t\tUsage:       \"Specify a path to apply the specified mode to\",\n\t\t\t\tDestination: &cfg.paths,\n\t\t\t},\n\t\t\t&cli.StringFlag{\n\t\t\t\tName:        \"mode\",\n\t\t\t\tUsage:       \"Specify the file mode\",\n\t\t\t\tDestination: &cfg.modeStr,\n\t\t\t},\n\t\t\t&cli.StringFlag{\n\t\t\t\tName:        \"container-spec\",\n\t\t\t\tUsage:       \"Specify the path to the OCI container spec. If empty or '-' the spec will be read from STDIN\",\n\t\t\t\tDestination: &cfg.containerSpec,\n\t\t\t},\n\t\t},\n\t}\n\n\treturn &c\n}\n\nfunc (m command) validateFlags(_ *cli.Command, cfg *config) error {\n\tif strings.TrimSpace(cfg.modeStr) == \"\" {\n\t\treturn fmt.Errorf(\"a non-empty mode must be specified\")\n\t}\n\n\tmodeInt, err := strconv.ParseUint(cfg.modeStr, 8, 32)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to parse mode as octal: %v\", err)\n\t}\n\tcfg.mode = fs.FileMode(modeInt)\n\n\tfor _, p := range cfg.paths {\n\t\tif strings.TrimSpace(p) == \"\" {\n\t\t\treturn fmt.Errorf(\"paths must not be empty\")\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc (m command) run(_ *cli.Command, cfg *config) error {\n\ts, err := oci.LoadContainerState(cfg.containerSpec)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to load container state: %v\", err)\n\t}\n\n\tcontainerRoot, err := s.GetContainerRoot()\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to determined container root: %v\", err)\n\t}\n\tif containerRoot == \"\" {\n\t\treturn fmt.Errorf(\"empty container root detected\")\n\t}\n\n\tpaths := m.getPaths(containerRoot, cfg.paths, cfg.mode)\n\tif len(paths) == 0 {\n\t\tm.logger.Debugf(\"No paths specified; exiting\")\n\t\treturn nil\n\t}\n\n\tfor _, path := range paths {\n\t\terr = os.Chmod(path, cfg.mode)\n\t\t// in some cases this is not an issue (e.g. whole /dev mounted), see #143\n\t\tif errors.Is(err, fs.ErrPermission) {\n\t\t\tm.logger.Debugf(\"Ignoring permission error with chmod: %v\", err)\n\t\t\terr = nil\n\t\t}\n\t}\n\n\treturn err\n}\n\n// getPaths updates the specified paths relative to the root.\nfunc (m command) getPaths(root string, paths []string, desiredMode fs.FileMode) []string {\n\tvar pathsInRoot []string\n\tfor _, f := range paths {\n\t\tpath := filepath.Join(root, f)\n\t\tstat, err := os.Stat(path)\n\t\tif err != nil {\n\t\t\tm.logger.Debugf(\"Skipping path %q: %v\", path, err)\n\t\t\tcontinue\n\t\t}\n\t\tif (stat.Mode()&(fs.ModePerm|fs.ModeSetuid|fs.ModeSetgid|fs.ModeSticky))^desiredMode == 0 {\n\t\t\tm.logger.Debugf(\"Skipping path %q: already desired mode\", path)\n\t\t\tcontinue\n\t\t}\n\t\tpathsInRoot = append(pathsInRoot, path)\n\t}\n\n\treturn pathsInRoot\n}\n"
  },
  {
    "path": "cmd/nvidia-cdi-hook/commands/commands.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage commands\n\nimport (\n\t\"context\"\n\t\"strings\"\n\n\t\"github.com/urfave/cli/v3\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-cdi-hook/chmod\"\n\tsymlinks \"github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-cdi-hook/create-symlinks\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-cdi-hook/cudacompat\"\n\tdisabledevicenodemodification \"github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-cdi-hook/disable-device-node-modification\"\n\tldcache \"github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-cdi-hook/update-ldcache\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n)\n\n// ConfigureCDIHookCommand configures a base command with supported CDI hooks\n// and error handling for unsupported hooks.\n// This allows the same command to be used for the nvidia-cdi-hook and\n// nvidia-ctk hook commands.\nfunc ConfigureCDIHookCommand(logger logger.Interface, base *cli.Command) *cli.Command {\n\t// We set the default action for the command to issue a warning and exit\n\t// with no error.\n\t// This means that if an unsupported hook is run, a container will not fail\n\t// to launch. An unsupported hook could be the result of a CDI specification\n\t// referring to a new hook that is not yet supported by an older NVIDIA\n\t// Container Toolkit version or a hook that has been removed in newer\n\t// version.\n\tbase.Action = func(ctx context.Context, cmd *cli.Command) error {\n\t\treturn issueUnsupportedHookWarning(logger, cmd)\n\t}\n\t// CommandNotFound is triggered when an unrecognised (sub)command is detected.\n\t// We assume that an unrecognised (sub)command represents an unsupported hook\n\t// (usually a hook that was added or removed)\n\tbase.CommandNotFound = func(ctx context.Context, cmd *cli.Command, commandName string) {\n\t\t_ = issueUnsupportedHookWarning(logger, cmd)\n\t}\n\t// OnUsageError is triggered when an unexpected flag is detected.\n\t// We check the invoked command to determine whether it is an expected\n\t// hook, and assume that this is an unsupported hook otherwise.\n\tbase.OnUsageError = func(ctx context.Context, cmd *cli.Command, err error, isSubcommand bool) error {\n\t\t// If this is not an error that comes from parsing an unrecognised flag,\n\t\t// return it as is.\n\t\tif !strings.HasPrefix(err.Error(), \"flag provided but not defined: -\") {\n\t\t\treturn err\n\t\t}\n\n\t\t// If the first argument is a recognised command, we return the error as\n\t\t// is since it represents an incorrect argument to the specific hook.\n\t\tvar subcommandName string\n\t\tfor _, arg := range cmd.Args().Slice() {\n\t\t\tif strings.HasPrefix(arg, \"-\") {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tsubcommandName = arg\n\t\t\tbreak\n\t\t}\n\t\t// If a subcommand is detected and is a recognised subcommand, we return\n\t\t// the error as is.\n\t\tif subcommandName != \"\" && cmd.Command(subcommandName) != nil {\n\t\t\treturn err\n\t\t}\n\n\t\t// At this point either no args have been supplied or the (sub)command\n\t\t// (first arg) is not regognised.\n\t\t// We issue a warning and returun nil.\n\t\treturn issueUnsupportedHookWarning(logger, cmd)\n\t}\n\n\t// Define the supported hooks.\n\tbase.Commands = []*cli.Command{\n\t\tldcache.NewCommand(logger),\n\t\tsymlinks.NewCommand(logger),\n\t\tchmod.NewCommand(logger),\n\t\tcudacompat.NewCommand(logger),\n\t\tdisabledevicenodemodification.NewCommand(logger),\n\t\t{\n\t\t\tName:   \"noop\",\n\t\t\tUsage:  \"The noop hook performs no actions and is only added to facilitate basic testing of the CLI\",\n\t\t\tHidden: true,\n\t\t\tAction: func(_ context.Context, _ *cli.Command) error {\n\t\t\t\treturn nil\n\t\t\t},\n\t\t},\n\t}\n\n\treturn base\n}\n\n// issueUnsupportedHookWarning logs a warning that no hook or an unsupported\n// hook has been specified.\n// This happens if a subcommand is provided that does not match one of the\n// subcommands that has been explicitly specified.\nfunc issueUnsupportedHookWarning(logger logger.Interface, c *cli.Command) error {\n\targs := c.Args().Slice()\n\tif len(args) == 0 {\n\t\tlogger.Warningf(\"No CDI hook specified\")\n\t} else {\n\t\tlogger.Warningf(\"Unsupported CDI hook: %v\", args[0])\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "cmd/nvidia-cdi-hook/create-symlinks/create-symlinks.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage symlinks\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"github.com/moby/sys/symlink\"\n\t\"github.com/urfave/cli/v3\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/oci\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/lookup/symlinks\"\n)\n\ntype command struct {\n\tlogger logger.Interface\n}\n\ntype config struct {\n\tlinks         []string\n\tcontainerSpec string\n}\n\n// NewCommand constructs a hook command with the specified logger\nfunc NewCommand(logger logger.Interface) *cli.Command {\n\tc := command{\n\t\tlogger: logger,\n\t}\n\treturn c.build()\n}\n\n// build creates the create-symlink command.\nfunc (m command) build() *cli.Command {\n\tcfg := config{}\n\n\tc := cli.Command{\n\t\tName:  \"create-symlinks\",\n\t\tUsage: \"A hook to create symlinks in the container.\",\n\t\tAction: func(_ context.Context, cmd *cli.Command) error {\n\t\t\treturn m.run(cmd, &cfg)\n\t\t},\n\t\tFlags: []cli.Flag{\n\t\t\t&cli.StringSliceFlag{\n\t\t\t\tName:        \"link\",\n\t\t\t\tUsage:       \"Specify a specific link to create. The link is specified as target::link. If the link exists in the container root, it is removed.\",\n\t\t\t\tDestination: &cfg.links,\n\t\t\t},\n\t\t\t// The following flags are testing-only flags.\n\t\t\t&cli.StringFlag{\n\t\t\t\tName:        \"container-spec\",\n\t\t\t\tUsage:       \"Specify the path to the OCI container spec. If empty or '-' the spec will be read from STDIN. This is only intended for testing.\",\n\t\t\t\tDestination: &cfg.containerSpec,\n\t\t\t\tHidden:      true,\n\t\t\t},\n\t\t},\n\t}\n\n\treturn &c\n}\n\nfunc (m command) run(_ *cli.Command, cfg *config) error {\n\ts, err := oci.LoadContainerState(cfg.containerSpec)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to load container state: %v\", err)\n\t}\n\n\tcontainerRoot, err := s.GetContainerRoot()\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to determined container root: %v\", err)\n\t}\n\n\tcreated := make(map[string]bool)\n\tfor _, l := range cfg.links {\n\t\tif created[l] {\n\t\t\tm.logger.Debugf(\"Link %v already processed\", l)\n\t\t\tcontinue\n\t\t}\n\t\tparts := strings.Split(l, \"::\")\n\t\tif len(parts) != 2 {\n\t\t\treturn fmt.Errorf(\"invalid symlink specification %v\", l)\n\t\t}\n\n\t\terr := m.createLink(containerRoot, parts[0], parts[1])\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"failed to create link %v: %w\", parts, err)\n\t\t}\n\t\tcreated[l] = true\n\t}\n\treturn nil\n}\n\n// createLink creates a symbolic link in the specified container root.\n// This is equivalent to:\n//\n//\tchroot {{ .containerRoot }} ln -f -s {{ .target }} {{ .link }}\n//\n// If the specified link already exists and points to the same target, this\n// operation is a no-op.\n// If a file exists at the link path or the link points to a different target\n// this file is removed before creating the link.\n//\n// Note that if the link path resolves to an absolute path oudside of the\n// specified root, this is treated as an absolute path in this root.\nfunc (m command) createLink(containerRoot string, targetPath string, link string) error {\n\tlinkPath := filepath.Join(containerRoot, link)\n\n\texists, err := linkExists(targetPath, linkPath)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to check if link exists: %w\", err)\n\t}\n\tif exists {\n\t\tm.logger.Debugf(\"Link %s already exists\", linkPath)\n\t\treturn nil\n\t}\n\n\t// We resolve the parent of the symlink that we're creating in the container root.\n\t// If we resolve the full link path, an existing link at the location itself\n\t// is also resolved here and we are unable to force create the link.\n\tresolvedLinkParent, err := symlink.FollowSymlinkInScope(filepath.Dir(linkPath), containerRoot)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to follow path for link %v relative to %v: %w\", link, containerRoot, err)\n\t}\n\tresolvedLinkPath := filepath.Join(resolvedLinkParent, filepath.Base(linkPath))\n\n\tm.logger.Infof(\"Symlinking %v to %v\", resolvedLinkPath, targetPath)\n\terr = os.MkdirAll(filepath.Dir(resolvedLinkPath), 0755)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to create directory: %v\", err)\n\t}\n\terr = symlinks.ForceCreate(targetPath, resolvedLinkPath)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to create symlink: %v\", err)\n\t}\n\n\treturn nil\n}\n\n// linkExists checks whether the specified link exists.\n// A link exists if the path exists, is a symlink, and points to the specified target.\nfunc linkExists(target string, link string) (bool, error) {\n\tcurrentTarget, err := symlinks.Resolve(link)\n\tif errors.Is(err, os.ErrNotExist) {\n\t\treturn false, nil\n\t}\n\tif err != nil {\n\t\treturn false, fmt.Errorf(\"failed to resolve existing symlink %s: %w\", link, err)\n\t}\n\tif currentTarget == target {\n\t\treturn true, nil\n\t}\n\treturn false, nil\n}\n"
  },
  {
    "path": "cmd/nvidia-cdi-hook/create-symlinks/create-symlinks_test.go",
    "content": "package symlinks\n\nimport (\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"testing\"\n\n\ttestlog \"github.com/sirupsen/logrus/hooks/test\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/lookup/symlinks\"\n)\n\nfunc TestLinkExist(t *testing.T) {\n\ttmpDir := t.TempDir()\n\trequire.NoError(\n\t\tt,\n\t\tmakeFs(tmpDir,\n\t\t\tdirOrLink{path: \"/a/b/c\", target: \"d\"},\n\t\t\tdirOrLink{path: \"/a/b/e\", target: \"/a/b/f\"},\n\t\t),\n\t)\n\n\texists, err := linkExists(\"d\", filepath.Join(tmpDir, \"/a/b/c\"))\n\trequire.NoError(t, err)\n\trequire.True(t, exists)\n\n\texists, err = linkExists(\"/a/b/f\", filepath.Join(tmpDir, \"/a/b/e\"))\n\trequire.NoError(t, err)\n\trequire.True(t, exists)\n\n\texists, err = linkExists(\"different-target\", filepath.Join(tmpDir, \"/a/b/c\"))\n\trequire.NoError(t, err)\n\trequire.False(t, exists)\n\n\texists, err = linkExists(\"/a/b/d\", filepath.Join(tmpDir, \"/a/b/c\"))\n\trequire.NoError(t, err)\n\trequire.False(t, exists)\n\n\texists, err = linkExists(\"foo\", filepath.Join(tmpDir, \"/a/b/does-not-exist\"))\n\trequire.NoError(t, err)\n\trequire.False(t, exists)\n}\n\nfunc TestCreateLink(t *testing.T) {\n\ttype link struct {\n\t\tpath   string\n\t\ttarget string\n\t}\n\ttype expectedLink struct {\n\t\tlink\n\t\terr error\n\t}\n\n\ttestCases := []struct {\n\t\tdescription         string\n\t\tcontainerContents   []dirOrLink\n\t\tlink                link\n\t\texpectedCreateError error\n\t\texpectedLinks       []expectedLink\n\t}{\n\t\t{\n\t\t\tdescription: \"link to / resolves to container root\",\n\t\t\tcontainerContents: []dirOrLink{\n\t\t\t\t{path: \"/lib/foo\", target: \"/\"},\n\t\t\t},\n\t\t\tlink: link{\n\t\t\t\tpath:   \"/lib/foo/libfoo.so\",\n\t\t\t\ttarget: \"libfoo.so.1\",\n\t\t\t},\n\t\t\texpectedLinks: []expectedLink{\n\t\t\t\t{\n\t\t\t\t\tlink: link{\n\t\t\t\t\t\tpath:   \"{{ .containerRoot }}/libfoo.so\",\n\t\t\t\t\t\ttarget: \"libfoo.so.1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"link to / resolves to container root; parent relative link\",\n\t\t\tcontainerContents: []dirOrLink{\n\t\t\t\t{path: \"/lib/foo\", target: \"/\"},\n\t\t\t},\n\t\t\tlink: link{\n\t\t\t\tpath:   \"/lib/foo/libfoo.so\",\n\t\t\t\ttarget: \"../libfoo.so.1\",\n\t\t\t},\n\t\t\texpectedLinks: []expectedLink{\n\t\t\t\t{\n\t\t\t\t\tlink: link{\n\t\t\t\t\t\tpath:   \"{{ .containerRoot }}/libfoo.so\",\n\t\t\t\t\t\ttarget: \"../libfoo.so.1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"link to / resolves to container root; absolute link\",\n\t\t\tcontainerContents: []dirOrLink{\n\t\t\t\t{path: \"/lib/foo\", target: \"/\"},\n\t\t\t},\n\t\t\tlink: link{\n\t\t\t\tpath:   \"/lib/foo/libfoo.so\",\n\t\t\t\ttarget: \"/a-path-in-container/foo/libfoo.so.1\",\n\t\t\t},\n\t\t\texpectedLinks: []expectedLink{\n\t\t\t\t{\n\t\t\t\t\tlink: link{\n\t\t\t\t\t\tpath:   \"{{ .containerRoot }}/libfoo.so\",\n\t\t\t\t\t\ttarget: \"/a-path-in-container/foo/libfoo.so.1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t// We also check that the target is NOT created.\n\t\t\t\t\tlink: link{\n\t\t\t\t\t\tpath: \"{{ .containerRoot }}/a-path-in-container/foo/libfoo.so.1\",\n\t\t\t\t\t},\n\t\t\t\t\terr: os.ErrNotExist,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\ttmpDir := t.TempDir()\n\t\t\thostRoot := filepath.Join(tmpDir, \"/host-root/\")\n\t\t\tcontainerRoot := filepath.Join(tmpDir, \"/container-root\")\n\n\t\t\trequire.NoError(t, makeFs(hostRoot))\n\t\t\trequire.NoError(t, makeFs(containerRoot, tc.containerContents...))\n\n\t\t\t// nvidia-cdi-hook create-symlinks --link linkSpec\n\t\t\terr := getTestCommand().createLink(containerRoot, tc.link.target, tc.link.path)\n\t\t\t// TODO: We may be able to replace this with require.ErrorIs.\n\t\t\tif tc.expectedCreateError != nil {\n\t\t\t\trequire.Error(t, err)\n\t\t\t} else {\n\t\t\t\trequire.NoError(t, err)\n\t\t\t}\n\n\t\t\tfor _, expectedLink := range tc.expectedLinks {\n\t\t\t\tpath := strings.ReplaceAll(expectedLink.path, \"{{ .containerRoot }}\", containerRoot)\n\t\t\t\tpath = strings.ReplaceAll(path, \"{{ .hostRoot }}\", hostRoot)\n\t\t\t\tif expectedLink.target != \"\" {\n\t\t\t\t\ttarget, err := symlinks.Resolve(path)\n\t\t\t\t\trequire.ErrorIs(t, err, expectedLink.err)\n\t\t\t\t\trequire.Equal(t, expectedLink.target, target)\n\t\t\t\t} else {\n\t\t\t\t\t_, err := os.Stat(path)\n\t\t\t\t\trequire.ErrorIs(t, err, expectedLink.err)\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestCreateLinkRelativePath(t *testing.T) {\n\ttmpDir := t.TempDir()\n\thostRoot := filepath.Join(tmpDir, \"/host-root/\")\n\tcontainerRoot := filepath.Join(tmpDir, \"/container-root\")\n\n\trequire.NoError(t, makeFs(hostRoot))\n\trequire.NoError(t, makeFs(containerRoot, dirOrLink{path: \"/lib/\"}))\n\n\t// nvidia-cdi-hook create-symlinks --link libfoo.so.1::/lib/libfoo.so\n\terr := getTestCommand().createLink(containerRoot, \"libfoo.so.1\", \"/lib/libfoo.so\")\n\trequire.NoError(t, err)\n\n\ttarget, err := symlinks.Resolve(filepath.Join(containerRoot, \"/lib/libfoo.so\"))\n\trequire.NoError(t, err)\n\trequire.Equal(t, \"libfoo.so.1\", target)\n}\n\nfunc TestCreateLinkAbsolutePath(t *testing.T) {\n\ttmpDir := t.TempDir()\n\thostRoot := filepath.Join(tmpDir, \"/host-root/\")\n\tcontainerRoot := filepath.Join(tmpDir, \"/container-root\")\n\n\trequire.NoError(t, makeFs(hostRoot))\n\trequire.NoError(t, makeFs(containerRoot, dirOrLink{path: \"/lib/\"}))\n\n\t// nvidia-cdi-hook create-symlinks --link /lib/libfoo.so.1::/lib/libfoo.so\n\terr := getTestCommand().createLink(containerRoot, \"/lib/libfoo.so.1\", \"/lib/libfoo.so\")\n\trequire.NoError(t, err)\n\n\ttarget, err := symlinks.Resolve(filepath.Join(containerRoot, \"/lib/libfoo.so\"))\n\trequire.NoError(t, err)\n\trequire.Equal(t, \"/lib/libfoo.so.1\", target)\n}\n\nfunc TestCreateLinkAlreadyExists(t *testing.T) {\n\ttestCases := []struct {\n\t\tdescription       string\n\t\tcontainerContents []dirOrLink\n\t\tshouldExist       []string\n\t}{\n\t\t{\n\t\t\tdescription:       \"link already exists with correct target\",\n\t\t\tcontainerContents: []dirOrLink{{path: \"/lib/libfoo.so\", target: \"libfoo.so.1\"}},\n\t\t\tshouldExist:       []string{},\n\t\t},\n\t\t{\n\t\t\tdescription:       \"link already exists with different target\",\n\t\t\tcontainerContents: []dirOrLink{{path: \"/lib/libfoo.so\", target: \"different-target\"}, {path: \"different-target\"}},\n\t\t\tshouldExist:       []string{\"{{ .containerRoot }}/different-target\"},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\ttmpDir := t.TempDir()\n\t\t\thostRoot := filepath.Join(tmpDir, \"/host-root/\")\n\t\t\tcontainerRoot := filepath.Join(tmpDir, \"/container-root\")\n\t\t\trequire.NoError(t, makeFs(hostRoot))\n\t\t\trequire.NoError(t, makeFs(containerRoot, tc.containerContents...))\n\n\t\t\t// nvidia-cdi-hook create-symlinks --link libfoo.so.1::/lib/libfoo.so\n\t\t\terr := getTestCommand().createLink(containerRoot, \"libfoo.so.1\", \"/lib/libfoo.so\")\n\t\t\trequire.NoError(t, err)\n\t\t\ttarget, err := symlinks.Resolve(filepath.Join(containerRoot, \"lib/libfoo.so\"))\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.Equal(t, \"libfoo.so.1\", target)\n\n\t\t\tfor _, p := range tc.shouldExist {\n\t\t\t\trequire.DirExists(t, strings.ReplaceAll(p, \"{{ .containerRoot }}\", containerRoot))\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestCreateLinkOutOfBounds(t *testing.T) {\n\ttmpDir := t.TempDir()\n\thostRoot := filepath.Join(tmpDir, \"/host-root\")\n\tcontainerRoot := filepath.Join(tmpDir, \"/container-root\")\n\n\trequire.NoError(t,\n\t\tmakeFs(hostRoot,\n\t\t\tdirOrLink{path: \"libfoo.so\"},\n\t\t),\n\t)\n\trequire.NoError(t,\n\t\tmakeFs(containerRoot,\n\t\t\tdirOrLink{path: \"/lib\"},\n\t\t\tdirOrLink{path: \"/lib/foo\", target: hostRoot},\n\t\t),\n\t)\n\n\tpath, err := symlinks.Resolve(filepath.Join(containerRoot, \"/lib/foo\"))\n\trequire.NoError(t, err)\n\trequire.Equal(t, hostRoot, path)\n\n\t// nvidia-cdi-hook create-symlinks --link ../libfoo.so.1::/lib/foo/libfoo.so\n\t_ = getTestCommand().createLink(containerRoot, \"../libfoo.so.1\", \"/lib/foo/libfoo.so\")\n\trequire.NoError(t, err)\n\n\ttarget, err := symlinks.Resolve(filepath.Join(containerRoot, hostRoot, \"libfoo.so\"))\n\trequire.NoError(t, err)\n\trequire.Equal(t, \"../libfoo.so.1\", target)\n\n\trequire.DirExists(t, filepath.Join(hostRoot, \"libfoo.so\"))\n}\n\ntype dirOrLink struct {\n\tpath   string\n\ttarget string\n}\n\nfunc makeFs(tmpdir string, fs ...dirOrLink) error {\n\tif err := os.MkdirAll(tmpdir, 0o755); err != nil {\n\t\treturn err\n\t}\n\tfor _, s := range fs {\n\t\ts.path = filepath.Join(tmpdir, s.path)\n\t\tif s.target == \"\" {\n\t\t\t_ = os.MkdirAll(s.path, 0o755)\n\t\t\tcontinue\n\t\t}\n\t\tif err := os.MkdirAll(filepath.Dir(s.path), 0o755); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif err := os.Symlink(s.target, s.path); err != nil && !os.IsExist(err) {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\n// getTestCommand creates a command for running tests against.\nfunc getTestCommand() *command {\n\tlogger, _ := testlog.NewNullLogger()\n\treturn &command{\n\t\tlogger: logger,\n\t}\n}\n"
  },
  {
    "path": "cmd/nvidia-cdi-hook/cudacompat/container-root.go",
    "content": "/**\n# Copyright (c) 2025, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage cudacompat\n\nimport (\n\t\"os\"\n\t\"path/filepath\"\n\n\t\"github.com/moby/sys/symlink\"\n)\n\n// A containerRoot represents the root filesystem of a container.\ntype containerRoot string\n\n// hasPath checks whether the specified path exists in the root.\nfunc (r containerRoot) hasPath(path string) bool {\n\tresolved, err := r.resolve(path)\n\tif err != nil {\n\t\treturn false\n\t}\n\tif _, err := os.Stat(resolved); err != nil && os.IsNotExist(err) {\n\t\treturn false\n\t}\n\treturn true\n}\n\n// globFiles matches the specified pattern in the root.\n// The files that match must be regular files.\nfunc (r containerRoot) globFiles(pattern string) ([]string, error) {\n\tpatternPath, err := r.resolve(pattern)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tmatches, err := filepath.Glob(patternPath)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tvar files []string\n\tfor _, match := range matches {\n\t\tinfo, err := os.Lstat(match)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\t// Ignore symlinks.\n\t\tif info.Mode()&os.ModeSymlink != 0 {\n\t\t\tcontinue\n\t\t}\n\t\t// Ignore directories.\n\t\tif info.IsDir() {\n\t\t\tcontinue\n\t\t}\n\t\tfiles = append(files, match)\n\t}\n\treturn files, nil\n}\n\n// resolve returns the absolute path including root path.\n// Symlinks are resolved, but are guaranteed to resolve in the root.\nfunc (r containerRoot) resolve(path string) (string, error) {\n\tabsolute := filepath.Clean(filepath.Join(string(r), path))\n\treturn symlink.FollowSymlinkInScope(absolute, string(r))\n}\n"
  },
  {
    "path": "cmd/nvidia-cdi-hook/cudacompat/cuda-elf-header.go",
    "content": "/**\n# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage cudacompat\n\nimport (\n\t\"bytes\"\n\t\"debug/elf\"\n\t\"encoding/binary\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"os\"\n\t\"strings\"\n\n\t\"golang.org/x/mod/semver\"\n)\n\ntype compatElfHeader struct {\n\tFormat      int\n\tCUDAVersion cudaVersion `json:\"CUDA Version\"`\n\tDriver      []int\n\tDevice      []int\n}\n\n// Elf32_Nhdr defines the header information for an ELF note.\n// See https://man7.org/linux/man-pages/man5/elf.5.html#:~:text=by%20the%20linker.-,Notes,-(Nhdr)%0A%20%20%20%20%20%20%20ELF\n// for the definition of an elf note.\n// TODO: When should a 64-bit header be used?\ntype elf32_Nhdr struct {\n\tNameSize uint32\n\tDescSize uint32\n\tDescType uint32\n}\n\nfunc (h elf32_Nhdr) sizeof() int {\n\treturn 12\n}\n\nfunc GetCUDACompatElfHeader(libraryPath string) (*compatElfHeader, error) {\n\tlib, err := elf.Open(libraryPath)\n\tif os.IsNotExist(err) {\n\t\treturn nil, nil\n\t}\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to load elf info for %q: %w\", libraryPath, err)\n\t}\n\tdefer func() {\n\t\t_ = lib.Close()\n\t}()\n\n\ts := getCUDAFwdCompatibilitySection(lib)\n\tif s == nil {\n\t\treturn nil, nil\n\t}\n\tdata, err := s.Data()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tnote := elf32_Nhdr{}\n\tr := bytes.NewReader(data)\n\tif err := binary.Read(r, lib.ByteOrder, &note); err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to read data header: %w\", err)\n\t}\n\n\tif note.NameSize == 0 || note.DescSize == 0 {\n\t\treturn nil, nil\n\t}\n\n\tname := string(trim(data, note.sizeof(), alignUp(note.NameSize, s.Addralign)))\n\tif name != \"NVIDIA Corporation\" {\n\t\treturn nil, nil\n\t}\n\n\tdescription := trim(data, note.sizeof()+alignUp(note.NameSize, s.Addralign), int(note.DescSize))\n\th := &compatElfHeader{}\n\tif err := json.Unmarshal(description, h); err != nil {\n\t\treturn nil, fmt.Errorf(\"could not unmarshal JSON data: %w\", err)\n\t}\n\n\treturn h, err\n}\n\nfunc alignUp[T uint32 | uint64, S uint64](size T, to S) int {\n\treturn int((size + T(to) - 1) &^ (T(to) - 1))\n}\n\nfunc trim(data []byte, from int, len int) []byte {\n\treturn bytes.Trim(data[from:from+len], \"\\x00\")\n}\n\nfunc getCUDAFwdCompatibilitySection(lib *elf.File) *elf.Section {\n\tfor _, s := range lib.Sections {\n\t\tif s.Type != elf.SHT_NOTE {\n\t\t\tcontinue\n\t\t}\n\t\tif s.Name != \".note.cuda.fwd_compatibility\" {\n\t\t\tcontinue\n\t\t}\n\t\treturn s\n\t}\n\treturn nil\n}\n\n// UseCompat checks whether the CUDA compat libraries with the specified elf\n// header should be used given the specified host versions.\n// This is done by comparing the host CUDA version with the CUDA version\n// specified in the ELF header.\nfunc (h *compatElfHeader) UseCompat(hostCUDAVersion string) bool {\n\tif h == nil {\n\t\treturn false\n\t}\n\n\treturn h.CUDAVersion.UseCompat(hostCUDAVersion)\n}\n\ntype cudaVersion string\n\n// UseCompat is true if the container CUDA version is strictly greater than the\n// host CUDA version.\nfunc (containerVersion cudaVersion) UseCompat(hostVersion string) bool {\n\tif containerVersion == \"\" || hostVersion == \"\" {\n\t\treturn false\n\t}\n\n\treturn semver.Compare(normalizeVersion(containerVersion), normalizeVersion(hostVersion)) > 0\n}\n\nfunc normalizeVersion[T string | cudaVersion](v T) string {\n\treturn \"v\" + strings.TrimPrefix(string(v), \"v\")\n}\n"
  },
  {
    "path": "cmd/nvidia-cdi-hook/cudacompat/cuda-elf-header_test.go",
    "content": "/**\n# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage cudacompat\n\nimport (\n\t\"path/filepath\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/test\"\n)\n\nfunc TestGetCUDACompatElfHeader(t *testing.T) {\n\tmoduleRoot, err := test.GetModuleRoot()\n\trequire.NoError(t, err)\n\n\tdataRoot := filepath.Join(moduleRoot, \"testdata\", \"compat\")\n\n\ttestCases := []struct {\n\t\tdescription string\n\t\tfilename    string\n\t\texpected    *compatElfHeader\n\t}{\n\t\t{\n\t\t\tdescription: \"wip\",\n\t\t\tfilename:    \"libcuda.so.575.57.08\",\n\t\t\texpected: &compatElfHeader{\n\t\t\t\tFormat:      1,\n\t\t\t\tCUDAVersion: \"12.9\",\n\t\t\t\tDriver:      []int{535, 550, 560, 565, 570, 575},\n\t\t\t\tDevice:      []int{1, 2, 7, 8, 9, 10, 11, 12, 13, 14},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"wip\",\n\t\t\tfilename:    \"libcuda.so.590.44.01\",\n\t\t\texpected: &compatElfHeader{\n\t\t\t\tFormat:      1,\n\t\t\t\tCUDAVersion: \"13.1\",\n\t\t\t\tDriver:      []int{535, 550, 570, 575, 580, 590},\n\t\t\t\tDevice:      []int{1, 2, 7, 8, 9, 10, 11, 12, 13, 14},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\tlibpath := filepath.Join(dataRoot, tc.filename)\n\n\t\t\th, err := GetCUDACompatElfHeader(libpath)\n\t\t\trequire.NoError(t, err)\n\n\t\t\trequire.EqualValues(t, tc.expected, h)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "cmd/nvidia-cdi-hook/cudacompat/cudacompat.go",
    "content": "/**\n# Copyright (c) 2025, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage cudacompat\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/urfave/cli/v3\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/oci\"\n)\n\nconst (\n\tdefaultCudaCompatPath = \"/usr/local/cuda/compat\"\n\t// cudaCompatLdsoconfdFilenamePattern specifies the pattern for the filename\n\t// in ld.so.conf.d that includes a reference to the CUDA compat path.\n\t// The 00-compat prefix is chosen to ensure that these libraries have a\n\t// higher precedence than other libraries on the system.\n\tcudaCompatLdsoconfdFilenamePattern = \"00-compat-*.conf\"\n)\n\ntype command struct {\n\tlogger logger.Interface\n}\n\ntype options struct {\n\tcudaCompatContainerRoot string\n\thostDriverVersion       string\n\thostCudaVersion         string\n\t// containerSpec allows the path to the container spec to be specified for\n\t// testing.\n\tcontainerSpec string\n}\n\n// NewCommand constructs a cuda-compat command with the specified logger\nfunc NewCommand(logger logger.Interface) *cli.Command {\n\tc := command{\n\t\tlogger: logger,\n\t}\n\treturn c.build()\n}\n\n// build the enable-cuda-compat command\nfunc (m command) build() *cli.Command {\n\toptions := &options{}\n\n\t// Create the 'enable-cuda-compat' command\n\tc := cli.Command{\n\t\tName:  \"enable-cuda-compat\",\n\t\tUsage: \"This hook ensures that the folder containing the CUDA compat libraries is added to the ldconfig search path if required.\",\n\t\tBefore: func(ctx context.Context, cmd *cli.Command) (context.Context, error) {\n\t\t\treturn ctx, m.validateFlags(cmd, options)\n\t\t},\n\t\tAction: func(ctx context.Context, cmd *cli.Command) error {\n\t\t\treturn m.run(cmd, options)\n\t\t},\n\t\tFlags: []cli.Flag{\n\t\t\t&cli.StringFlag{\n\t\t\t\tName:        \"host-driver-version\",\n\t\t\t\tUsage:       \"Specify the host driver version. If the CUDA compat libraries detected in the container do not have a higher MAJOR version, the hook is a no-op.\",\n\t\t\t\tDestination: &options.hostDriverVersion,\n\t\t\t},\n\t\t\t&cli.StringFlag{\n\t\t\t\tName:        \"host-cuda-version\",\n\t\t\t\tUsage:       \"Specify the CUDA version supported by the host driver.\",\n\t\t\t\tDestination: &options.hostCudaVersion,\n\t\t\t},\n\t\t\t&cli.StringFlag{\n\t\t\t\tName:        \"cuda-compat-container-root\",\n\t\t\t\tUsage:       \"Specify the folder in which CUDA compat libraries are located in the container\",\n\t\t\t\tValue:       defaultCudaCompatPath,\n\t\t\t\tDestination: &options.cudaCompatContainerRoot,\n\t\t\t},\n\t\t\t&cli.StringFlag{\n\t\t\t\tName:        \"container-spec\",\n\t\t\t\tHidden:      true,\n\t\t\t\tCategory:    \"testing-only\",\n\t\t\t\tUsage:       \"Specify the path to the OCI container spec. If empty or '-' the spec will be read from STDIN\",\n\t\t\t\tDestination: &options.containerSpec,\n\t\t\t},\n\t\t},\n\t}\n\n\treturn &c\n}\n\nfunc (m command) validateFlags(_ *cli.Command, _ *options) error {\n\treturn nil\n}\n\nfunc (m command) run(_ *cli.Command, o *options) error {\n\t// If neither the host driver version nor the host cuda version is specified\n\t// the hook is a no-op.\n\tif o.hostDriverVersion == \"\" && o.hostCudaVersion == \"\" {\n\t\treturn nil\n\t}\n\n\ts, err := oci.LoadContainerState(o.containerSpec)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to load container state: %w\", err)\n\t}\n\n\tcontainerRootDir, err := s.GetContainerRoot()\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to determined container root: %w\", err)\n\t}\n\n\tcontainerForwardCompatDir, err := m.getContainerForwardCompatDir(containerRoot(containerRootDir), o)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to get container forward compat directory: %w\", err)\n\t}\n\tif containerForwardCompatDir == \"\" {\n\t\treturn nil\n\t}\n\n\treturn m.createLdsoconfdFile(containerRoot(containerRootDir), cudaCompatLdsoconfdFilenamePattern, containerForwardCompatDir)\n}\n\nfunc (m command) getContainerForwardCompatDir(containerRoot containerRoot, o *options) (string, error) {\n\tif o.hostDriverVersion == \"\" && o.hostCudaVersion == \"\" {\n\t\tm.logger.Debugf(\"Neither a host driver version nor a host CUDA version was specified\")\n\t\treturn \"\", nil\n\t}\n\tif !containerRoot.hasPath(o.cudaCompatContainerRoot) {\n\t\tm.logger.Debugf(\"No CUDA forward compatibility libraries directory in container\")\n\t\treturn \"\", nil\n\t}\n\n\tlibs, err := containerRoot.globFiles(filepath.Join(o.cudaCompatContainerRoot, \"libcuda.so.*.*\"))\n\tif err != nil {\n\t\tm.logger.Warningf(\"Failed to find CUDA compat library: %w\", err)\n\t\treturn \"\", nil\n\t}\n\n\tif len(libs) == 0 {\n\t\tm.logger.Debugf(\"No CUDA forward compatibility libraries container\")\n\t\treturn \"\", nil\n\t}\n\n\tif len(libs) != 1 {\n\t\tm.logger.Warningf(\"Unexpected number of CUDA compat libraries in container: %v\", libs)\n\t\treturn \"\", nil\n\t}\n\n\tlibCudaCompatPath := libs[0]\n\n\tuseCompatLibs, err := m.useCompatLibraries(libCudaCompatPath, o.hostDriverVersion, o.hostCudaVersion)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tif !useCompatLibs {\n\t\treturn \"\", nil\n\t}\n\n\tresolvedCompatDir := strings.TrimPrefix(filepath.Dir(libCudaCompatPath), string(containerRoot))\n\treturn resolvedCompatDir, nil\n}\n\nfunc (m command) useCompatLibraries(libcudaCompatPath string, hostDriverVersion string, hostCUDAVersion string) (bool, error) {\n\t// If the host CUDA version is specified, we need to inspect the ELF header\n\t// of the compat libraries in the container to determine whether these\n\t// should be used.\n\tif hostCUDAVersion != \"\" {\n\t\tcudaCompatHeader, _ := GetCUDACompatElfHeader(libcudaCompatPath)\n\t\tif cudaCompatHeader != nil {\n\t\t\treturn cudaCompatHeader.UseCompat(hostCUDAVersion), nil\n\t\t}\n\t\t// If we were unable to read the CUDA header, we do not use the compat\n\t\t// libraries.\n\t\treturn false, nil\n\t}\n\n\t// If neither a host driver version nor a host CUDA version is specified,\n\t// we don't use the CUDA compat libraries in the container.\n\tif hostDriverVersion == \"\" {\n\t\treturn false, nil\n\t}\n\n\tdriverMajor, err := extractMajorVersion(hostDriverVersion)\n\tif err != nil {\n\t\treturn false, fmt.Errorf(\"failed to extract major version from %q: %v\", hostDriverVersion, err)\n\t}\n\n\tcompatDriverVersion := strings.TrimPrefix(filepath.Base(libcudaCompatPath), \"libcuda.so.\")\n\tcompatMajor, err := extractMajorVersion(compatDriverVersion)\n\tif err != nil {\n\t\treturn false, fmt.Errorf(\"failed to extract major version from %q: %v\", compatDriverVersion, err)\n\t}\n\n\tif driverMajor < compatMajor {\n\t\treturn true, nil\n\t}\n\n\tm.logger.Debugf(\"Compat major version is not greater than the host driver major version (%v >= %v)\", hostDriverVersion, compatDriverVersion)\n\treturn false, nil\n}\n\n// createLdsoconfdFile creates a file at /etc/ld.so.conf.d/ in the specified root.\n// The file is created at /etc/ld.so.conf.d/{{ .pattern }} using `CreateTemp` and\n// contains the specified directories on each line.\nfunc (m command) createLdsoconfdFile(in containerRoot, pattern string, dirs ...string) error {\n\tif len(dirs) == 0 {\n\t\tm.logger.Debugf(\"No directories to add to /etc/ld.so.conf\")\n\t\treturn nil\n\t}\n\n\tldsoconfdDir, err := in.resolve(\"/etc/ld.so.conf.d\")\n\tif err != nil {\n\t\treturn err\n\t}\n\tif err := os.MkdirAll(ldsoconfdDir, 0755); err != nil {\n\t\treturn fmt.Errorf(\"failed to create ld.so.conf.d: %w\", err)\n\t}\n\n\tconfigFile, err := os.CreateTemp(ldsoconfdDir, pattern)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to create config file: %w\", err)\n\t}\n\tdefer configFile.Close()\n\n\tm.logger.Debugf(\"Adding directories %v to %v\", dirs, configFile.Name())\n\n\tadded := make(map[string]bool)\n\tfor _, dir := range dirs {\n\t\tif added[dir] {\n\t\t\tcontinue\n\t\t}\n\t\t_, err = fmt.Fprintf(configFile, \"%s\\n\", dir)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"failed to update config file: %w\", err)\n\t\t}\n\t\tadded[dir] = true\n\t}\n\n\t// The created file needs to be world readable for the cases where the container is run as a non-root user.\n\tif err := configFile.Chmod(0644); err != nil {\n\t\treturn fmt.Errorf(\"failed to chmod config file: %w\", err)\n\t}\n\n\treturn nil\n}\n\n// extractMajorVersion parses a version string and returns the major version as an int.\nfunc extractMajorVersion(version string) (int, error) {\n\tif version == \"\" {\n\t\treturn 0, nil\n\t}\n\tmajorString := strings.SplitN(version, \".\", 2)[0]\n\treturn strconv.Atoi(majorString)\n}\n"
  },
  {
    "path": "cmd/nvidia-cdi-hook/cudacompat/cudacompat_test.go",
    "content": "/*\n# Copyright (c) 2025, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n*/\n\npackage cudacompat\n\nimport (\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"testing\"\n\n\ttestlog \"github.com/sirupsen/logrus/hooks/test\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestCompatLibs(t *testing.T) {\n\tlogger, _ := testlog.NewNullLogger()\n\n\ttestCases := []struct {\n\t\tdescription                       string\n\t\tcontents                          map[string]string\n\t\toptions                           options\n\t\texpectedContainerForwardCompatDir string\n\t}{\n\t\t{\n\t\t\tdescription: \"empty root\",\n\t\t\toptions: options{\n\t\t\t\thostDriverVersion: \"222.55.66\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"compat lib is newer; no ldcache\",\n\t\t\tcontents: map[string]string{\n\t\t\t\t\"/usr/local/cuda/compat/libcuda.so.333.88.99\": \"\",\n\t\t\t},\n\t\t\toptions: options{\n\t\t\t\thostDriverVersion: \"222.55.66\",\n\t\t\t},\n\t\t\texpectedContainerForwardCompatDir: \"/usr/local/cuda/compat\",\n\t\t},\n\t\t{\n\t\t\tdescription: \"compat lib is newer; ldcache\",\n\t\t\tcontents: map[string]string{\n\t\t\t\t\"/etc/ld.so.cache\": \"\",\n\t\t\t\t\"/usr/local/cuda/compat/libcuda.so.333.88.99\": \"\",\n\t\t\t},\n\t\t\toptions: options{\n\t\t\t\thostDriverVersion: \"222.55.66\",\n\t\t\t},\n\t\t\texpectedContainerForwardCompatDir: \"/usr/local/cuda/compat\",\n\t\t},\n\t\t{\n\t\t\tdescription: \"compat lib is older; ldcache\",\n\t\t\tcontents: map[string]string{\n\t\t\t\t\"/etc/ld.so.cache\": \"\",\n\t\t\t\t\"/usr/local/cuda/compat/libcuda.so.111.88.99\": \"\",\n\t\t\t},\n\t\t\toptions: options{\n\t\t\t\thostDriverVersion: \"222.55.66\",\n\t\t\t},\n\t\t\texpectedContainerForwardCompatDir: \"\",\n\t\t},\n\t\t{\n\t\t\tdescription: \"compat lib has same major version; ldcache\",\n\t\t\tcontents: map[string]string{\n\t\t\t\t\"/etc/ld.so.cache\": \"\",\n\t\t\t\t\"/usr/local/cuda/compat/libcuda.so.222.88.99\": \"\",\n\t\t\t},\n\t\t\toptions: options{\n\t\t\t\thostDriverVersion: \"222.55.66\",\n\t\t\t},\n\t\t\texpectedContainerForwardCompatDir: \"\",\n\t\t},\n\t\t{\n\t\t\tdescription: \"numeric comparison is used; ldcache\",\n\t\t\tcontents: map[string]string{\n\t\t\t\t\"/etc/ld.so.cache\": \"\",\n\t\t\t\t\"/usr/local/cuda/compat/libcuda.so.222.88.99\": \"\",\n\t\t\t},\n\t\t\toptions: options{\n\t\t\t\thostDriverVersion: \"99.55.66\",\n\t\t\t},\n\t\t\texpectedContainerForwardCompatDir: \"/usr/local/cuda/compat\",\n\t\t},\n\t\t{\n\t\t\tdescription: \"driver version empty; ldcache\",\n\t\t\tcontents: map[string]string{\n\t\t\t\t\"/etc/ld.so.cache\": \"\",\n\t\t\t\t\"/usr/local/cuda/compat/libcuda.so.222.88.99\": \"\",\n\t\t\t},\n\t\t\toptions: options{\n\t\t\t\thostDriverVersion: \"\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"symlinks are followed\",\n\t\t\tcontents: map[string]string{\n\t\t\t\t\"/etc/ld.so.cache\": \"\",\n\t\t\t\t\"/etc/alternatives/cuda/compat/libcuda.so.333.88.99\": \"\",\n\t\t\t\t\"/usr/local/cuda\": \"symlink=/etc/alternatives/cuda\",\n\t\t\t},\n\t\t\toptions: options{\n\t\t\t\thostDriverVersion: \"222.55.66\",\n\t\t\t},\n\t\t\texpectedContainerForwardCompatDir: \"/etc/alternatives/cuda/compat\",\n\t\t},\n\t\t{\n\t\t\tdescription: \"symlinks stay in container\",\n\t\t\tcontents: map[string]string{\n\t\t\t\t\"/etc/ld.so.cache\":             \"\",\n\t\t\t\t\"/compat/libcuda.so.333.88.99\": \"\",\n\t\t\t\t\"/usr/local/cuda\":              \"symlink=../../../../../../\",\n\t\t\t},\n\t\t\toptions: options{\n\t\t\t\thostDriverVersion: \"222.55.66\",\n\t\t\t},\n\t\t\texpectedContainerForwardCompatDir: \"/compat\",\n\t\t},\n\t\t{\n\t\t\tdescription: \"specified compat path is used\",\n\t\t\tcontents: map[string]string{\n\t\t\t\t\"/usr/local/cuda/compat/libcuda.so.111.88.99\":       \"\",\n\t\t\t\t\"/usr/local/cuda/compat-other/libcuda.so.333.88.99\": \"\",\n\t\t\t},\n\t\t\toptions: options{\n\t\t\t\tcudaCompatContainerRoot: \"/usr/local/cuda/compat-other\",\n\t\t\t\thostDriverVersion:       \"222.55.66\",\n\t\t\t},\n\t\t\texpectedContainerForwardCompatDir: \"/usr/local/cuda/compat-other\",\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tif tc.options.cudaCompatContainerRoot == \"\" {\n\t\t\ttc.options.cudaCompatContainerRoot = defaultCudaCompatPath\n\t\t}\n\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\tcontainerRootDir := t.TempDir()\n\t\t\tfor name, contents := range tc.contents {\n\t\t\t\ttarget := filepath.Join(containerRootDir, name)\n\t\t\t\trequire.NoError(t, os.MkdirAll(filepath.Dir(target), 0755))\n\n\t\t\t\tif strings.HasPrefix(contents, \"symlink=\") {\n\t\t\t\t\trequire.NoError(t, os.Symlink(strings.TrimPrefix(contents, \"symlink=\"), target))\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\trequire.NoError(t, os.WriteFile(target, []byte(contents), 0600))\n\t\t\t}\n\n\t\t\tc := command{\n\t\t\t\tlogger: logger,\n\t\t\t}\n\t\t\tcontainerForwardCompatDir, err := c.getContainerForwardCompatDir(containerRoot(containerRootDir), &tc.options)\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.EqualValues(t, tc.expectedContainerForwardCompatDir, containerForwardCompatDir)\n\t\t})\n\t}\n}\n\nfunc TestUpdateLdconfig(t *testing.T) {\n\tlogger, _ := testlog.NewNullLogger()\n\ttestCases := []struct {\n\t\tdescription      string\n\t\tfolders          []string\n\t\texpectedContents string\n\t}{\n\t\t{\n\t\t\tdescription: \"no folders; have no contents\",\n\t\t},\n\t\t{\n\t\t\tdescription:      \"single folder is added\",\n\t\t\tfolders:          []string{\"/usr/local/cuda/compat\"},\n\t\t\texpectedContents: \"/usr/local/cuda/compat\\n\",\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\tcontainerRootDir := t.TempDir()\n\t\t\tc := command{\n\t\t\t\tlogger: logger,\n\t\t\t}\n\t\t\terr := c.createLdsoconfdFile(containerRoot(containerRootDir), cudaCompatLdsoconfdFilenamePattern, tc.folders...)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tmatches, err := filepath.Glob(filepath.Join(containerRootDir, \"/etc/ld.so.conf.d/00-compat-*.conf\"))\n\t\t\trequire.NoError(t, err)\n\n\t\t\tif tc.expectedContents == \"\" {\n\t\t\t\trequire.Empty(t, matches)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\trequire.Len(t, matches, 1)\n\t\t\tcontents, err := os.ReadFile(matches[0])\n\t\t\trequire.NoError(t, err)\n\n\t\t\trequire.EqualValues(t, tc.expectedContents, string(contents))\n\t\t})\n\t}\n\n}\n"
  },
  {
    "path": "cmd/nvidia-cdi-hook/disable-device-node-modification/disable-device-node-modification.go",
    "content": "/**\n# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage disabledevicenodemodification\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"strings\"\n\n\t\"github.com/urfave/cli/v3\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/oci\"\n)\n\nconst (\n\tnvidiaDriverParamsPath = \"/proc/driver/nvidia/params\"\n)\n\ntype options struct {\n\tcontainerSpec string\n}\n\n// NewCommand constructs an disable-device-node-modification subcommand with the specified logger\nfunc NewCommand(logger logger.Interface) *cli.Command {\n\tcfg := options{}\n\n\tc := cli.Command{\n\t\tName:  \"disable-device-node-modification\",\n\t\tUsage: \"Ensure that the /proc/driver/nvidia/params file present in the container does not allow device node modifications.\",\n\t\tBefore: func(ctx context.Context, cmd *cli.Command) (context.Context, error) {\n\t\t\treturn ctx, validateFlags(cmd, &cfg)\n\t\t},\n\t\tAction: func(ctx context.Context, cmd *cli.Command) error {\n\t\t\treturn run(ctx, cmd, &cfg)\n\t\t},\n\t\tFlags: []cli.Flag{\n\t\t\t&cli.StringFlag{\n\t\t\t\tName:        \"container-spec\",\n\t\t\t\tHidden:      true,\n\t\t\t\tUsage:       \"Specify the path to the OCI container spec. If empty or '-' the spec will be read from STDIN\",\n\t\t\t\tDestination: &cfg.containerSpec,\n\t\t\t},\n\t\t},\n\t}\n\n\treturn &c\n}\n\nfunc validateFlags(_ *cli.Command, _ *options) error {\n\treturn nil\n}\n\nfunc run(_ context.Context, _ *cli.Command, cfg *options) error {\n\tmodifiedParamsFileContents, err := getModifiedNVIDIAParamsContents()\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to get modified params file contents: %w\", err)\n\t}\n\tif len(modifiedParamsFileContents) == 0 {\n\t\treturn nil\n\t}\n\n\ts, err := oci.LoadContainerState(cfg.containerSpec)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to load container state: %w\", err)\n\t}\n\n\tcontainerRootDirPath, err := s.GetContainerRoot()\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to determined container root: %w\", err)\n\t}\n\n\tcontainerRoot, err := os.OpenRoot(containerRootDirPath)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to open root: %w\", err)\n\t}\n\tdefer containerRoot.Close()\n\n\treturn createParamsFileInContainer(containerRoot, modifiedParamsFileContents)\n}\n\nfunc getModifiedNVIDIAParamsContents() ([]byte, error) {\n\thostNvidiaParamsFile, err := os.Open(nvidiaDriverParamsPath)\n\tif errors.Is(err, os.ErrNotExist) {\n\t\treturn nil, nil\n\t}\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to load params file: %w\", err)\n\t}\n\tdefer hostNvidiaParamsFile.Close()\n\n\tmodifiedContents, err := getModifiedParamsFileContentsFromReader(hostNvidiaParamsFile)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to get modfied params file contents: %w\", err)\n\t}\n\n\treturn modifiedContents, nil\n}\n\n// getModifiedParamsFileContentsFromReader returns the contents of a modified params file from the specified reader.\nfunc getModifiedParamsFileContentsFromReader(r io.Reader) ([]byte, error) {\n\tvar modified bytes.Buffer\n\tscanner := bufio.NewScanner(r)\n\n\tvar requiresModification bool\n\tfor scanner.Scan() {\n\t\tline := scanner.Text()\n\t\tif strings.HasPrefix(line, \"ModifyDeviceFiles: \") {\n\t\t\tif line == \"ModifyDeviceFiles: 0\" {\n\t\t\t\treturn nil, nil\n\t\t\t}\n\t\t\tif line == \"ModifyDeviceFiles: 1\" {\n\t\t\t\tline = \"ModifyDeviceFiles: 0\"\n\t\t\t\trequiresModification = true\n\t\t\t}\n\t\t}\n\t\tif _, err := modified.WriteString(line + \"\\n\"); err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed to create output buffer: %w\", err)\n\t\t}\n\t}\n\tif err := scanner.Err(); err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to read params file: %w\", err)\n\t}\n\n\tif !requiresModification {\n\t\treturn nil, nil\n\t}\n\n\treturn modified.Bytes(), nil\n}\n"
  },
  {
    "path": "cmd/nvidia-cdi-hook/disable-device-node-modification/disable-device-node-modification_test.go",
    "content": "/**\n# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage disabledevicenodemodification\n\nimport (\n\t\"bytes\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestGetModifiedParamsFileContentsFromReader(t *testing.T) {\n\ttestCases := map[string]struct {\n\t\tcontents         []byte\n\t\texpectedError    error\n\t\texpectedContents []byte\n\t}{\n\t\t\"no contents\": {\n\t\t\tcontents:         nil,\n\t\t\texpectedError:    nil,\n\t\t\texpectedContents: nil,\n\t\t},\n\t\t\"other contents are ignored\": {\n\t\t\tcontents: []byte(`# Some other content\n\t\t\tthat we don't care about\n\t\t\t`),\n\t\t\texpectedError:    nil,\n\t\t\texpectedContents: nil,\n\t\t},\n\t\t\"already zero requires no modification\": {\n\t\t\tcontents:         []byte(\"ModifyDeviceFiles: 0\"),\n\t\t\texpectedError:    nil,\n\t\t\texpectedContents: nil,\n\t\t},\n\t\t\"leading spaces require no modification\": {\n\t\t\tcontents: []byte(\"  ModifyDeviceFiles: 1\"),\n\t\t},\n\t\t\"Trailing spaces require no modification\": {\n\t\t\tcontents: []byte(\"ModifyDeviceFiles: 1  \"),\n\t\t},\n\t\t\"Not 1 require no modification\": {\n\t\t\tcontents: []byte(\"ModifyDeviceFiles: 11\"),\n\t\t},\n\t\t\"single line requires modification\": {\n\t\t\tcontents:         []byte(\"ModifyDeviceFiles: 1\"),\n\t\t\texpectedError:    nil,\n\t\t\texpectedContents: []byte(\"ModifyDeviceFiles: 0\\n\"),\n\t\t},\n\t\t\"single line with trailing newline requires modification\": {\n\t\t\tcontents:         []byte(\"ModifyDeviceFiles: 1\\n\"),\n\t\t\texpectedError:    nil,\n\t\t\texpectedContents: []byte(\"ModifyDeviceFiles: 0\\n\"),\n\t\t},\n\t\t\"other content is maintained\": {\n\t\t\tcontents: []byte(`ModifyDeviceFiles: 1\n\t\t\tother content\n\t\t\tthat\n\t\t\tis maintained`),\n\t\t\texpectedError: nil,\n\t\t\texpectedContents: []byte(`ModifyDeviceFiles: 0\n\t\t\tother content\n\t\t\tthat\n\t\t\tis maintained\n`),\n\t\t},\n\t}\n\n\tfor description, tc := range testCases {\n\t\tt.Run(description, func(t *testing.T) {\n\t\t\tcontents, err := getModifiedParamsFileContentsFromReader(bytes.NewReader(tc.contents))\n\t\t\trequire.EqualValues(t, tc.expectedError, err)\n\t\t\trequire.EqualValues(t, string(tc.expectedContents), string(contents))\n\t\t})\n\t}\n\n}\n"
  },
  {
    "path": "cmd/nvidia-cdi-hook/disable-device-node-modification/params_linux.go",
    "content": "//go:build linux\n\n/**\n# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage disabledevicenodemodification\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\n\t\"github.com/google/uuid\"\n\t\"github.com/opencontainers/runc/libcontainer/utils\"\n\t\"golang.org/x/sys/unix\"\n)\n\nfunc createParamsFileInContainer(containerRoot *os.Root, contents []byte) error {\n\tcontainerRootDirPath := containerRoot.Name()\n\n\thookScratchDirPath := \"/run/nvidia-ctk-hook\" + uuid.NewString()\n\tif err := containerRoot.MkdirAll(hookScratchDirPath[1:], 0755); err != nil {\n\t\treturn fmt.Errorf(\"error creating hook scratch folder: %w\", err)\n\t}\n\n\t//nolint:staticcheck // TODO (ArangoGutierrez): Remove the nolint:staticcheck and properly fix the deprecation warning.\n\terr := utils.WithProcfd(containerRootDirPath, hookScratchDirPath, func(hookScratchDirFdPath string) error {\n\t\treturn createTmpFs(hookScratchDirFdPath, len(contents))\n\t})\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to create tmpfs mount for params file: %w\", err)\n\t}\n\n\tmodifiedParamsFilePath := filepath.Join(hookScratchDirPath, \"nvct-params\")\n\tif _, err := containerRoot.OpenFile(modifiedParamsFilePath[1:], os.O_CREATE|os.O_RDONLY|os.O_TRUNC, 0444); err != nil {\n\t\treturn fmt.Errorf(\"error creating modified params file: %w\", err)\n\t}\n\n\t//nolint:staticcheck // TODO (ArangoGutierrez): Remove the nolint:staticcheck and properly fix the deprecation warning.\n\terr = utils.WithProcfd(containerRootDirPath, modifiedParamsFilePath, func(modifiedParamsFileFdPath string) error {\n\t\tmodifiedParamsFile, err := os.OpenFile(modifiedParamsFileFdPath, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0444)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"failed to open modified params file: %w\", err)\n\t\t}\n\t\tdefer modifiedParamsFile.Close()\n\n\t\tif _, err := modifiedParamsFile.Write(contents); err != nil {\n\t\t\treturn fmt.Errorf(\"failed to write temporary params file: %w\", err)\n\t\t}\n\n\t\t//nolint:staticcheck // TODO (ArangoGutierrez): Remove the nolint:staticcheck and properly fix the deprecation warning.\n\t\terr = utils.WithProcfd(containerRootDirPath, nvidiaDriverParamsPath, func(nvidiaDriverParamsFdPath string) error {\n\t\t\treturn unix.Mount(modifiedParamsFileFdPath, nvidiaDriverParamsFdPath, \"\", unix.MS_BIND|unix.MS_RDONLY|unix.MS_NODEV|unix.MS_PRIVATE|unix.MS_NOSYMFOLLOW, \"\")\n\t\t})\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"failed to mount modified params file: %w\", err)\n\t\t}\n\n\t\treturn nil\n\t})\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\nfunc createTmpFs(target string, size int) error {\n\treturn unix.Mount(\"tmpfs\", target, \"tmpfs\", 0, fmt.Sprintf(\"size=%d\", size))\n}\n"
  },
  {
    "path": "cmd/nvidia-cdi-hook/disable-device-node-modification/params_other.go",
    "content": "//go:build !linux\n\n/**\n# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage disabledevicenodemodification\n\nimport (\n\t\"fmt\"\n\t\"os\"\n)\n\nfunc createParamsFileInContainer(containerRootDirPath *os.Root, contents []byte) error {\n\treturn fmt.Errorf(\"not supported\")\n}\n"
  },
  {
    "path": "cmd/nvidia-cdi-hook/main.go",
    "content": "/**\n# Copyright (c) 2024, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage main\n\nimport (\n\t\"context\"\n\t\"os\"\n\n\t\"github.com/sirupsen/logrus\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/info\"\n\n\tcli \"github.com/urfave/cli/v3\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-cdi-hook/commands\"\n)\n\n// options defines the options that can be set for the CLI through config files,\n// environment variables, or command line flags\ntype options struct {\n\t// Debug indicates whether the CLI is started in \"debug\" mode\n\tDebug bool\n\t// Quiet indicates whether the CLI is started in \"quiet\" mode\n\tQuiet bool\n}\n\nfunc main() {\n\tlogger := logrus.New()\n\n\t// Create a options struct to hold the parsed environment variables or command line flags\n\topts := options{}\n\n\t// Create the top-level CLI\n\tc := commands.ConfigureCDIHookCommand(logger, &cli.Command{\n\t\tName:    \"NVIDIA CDI Hook\",\n\t\tUsage:   \"Command to structure files for usage inside a container, called as hooks from a container runtime, defined in a CDI yaml file\",\n\t\tVersion: info.GetVersionString(),\n\t\t// Set log-level for all subcommands\n\t\tBefore: func(ctx context.Context, cmd *cli.Command) (context.Context, error) {\n\t\t\tlogLevel := logrus.InfoLevel\n\t\t\tif opts.Debug {\n\t\t\t\tlogLevel = logrus.DebugLevel\n\t\t\t}\n\t\t\tif opts.Quiet {\n\t\t\t\tlogLevel = logrus.ErrorLevel\n\t\t\t}\n\t\t\tlogger.SetLevel(logLevel)\n\t\t\treturn ctx, nil\n\t\t},\n\t\tFlags: []cli.Flag{\n\t\t\t&cli.BoolFlag{\n\t\t\t\tName:        \"debug\",\n\t\t\t\tAliases:     []string{\"d\"},\n\t\t\t\tUsage:       \"Enable debug-level logging\",\n\t\t\t\tDestination: &opts.Debug,\n\t\t\t\t// TODO: Support for NVIDIA_CDI_DEBUG is deprecated and NVIDIA_CTK_DEBUG should be used instead.\n\t\t\t\tSources: cli.EnvVars(\"NVIDIA_CTK_DEBUG\", \"NVIDIA_CDI_DEBUG\"),\n\t\t\t},\n\t\t\t&cli.BoolFlag{\n\t\t\t\tName:        \"quiet\",\n\t\t\t\tUsage:       \"Suppress all output except for errors; overrides --debug\",\n\t\t\t\tDestination: &opts.Quiet,\n\t\t\t\t// TODO: Support for NVIDIA_CDI_QUIET is deprecated and NVIDIA_CTK_QUIET should be used instead.\n\t\t\t\tSources: cli.EnvVars(\"NVIDIA_CTK_QUIET\", \"NVIDIA_CDI_QUIET\"),\n\t\t\t},\n\t\t},\n\t})\n\n\t// Run the CLI\n\terr := c.Run(context.Background(), os.Args)\n\tif err != nil {\n\t\tlogger.Errorf(\"%v\", err)\n\t\tos.Exit(1)\n\t}\n}\n"
  },
  {
    "path": "cmd/nvidia-cdi-hook/update-ldcache/update-ldcache.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage ldcache\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"log\"\n\t\"os\"\n\n\t\"github.com/moby/sys/reexec\"\n\t\"github.com/urfave/cli/v3\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/ldconfig\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/oci\"\n)\n\nconst (\n\treexecUpdateLdCacheCommandName = \"reexec-update-ldcache\"\n)\n\ntype command struct {\n\tlogger logger.Interface\n}\n\ntype options struct {\n\tfolders       []string\n\tldconfigPath  string\n\tcontainerSpec string\n}\n\nfunc init() {\n\treexec.Register(reexecUpdateLdCacheCommandName, updateLdCacheHandler)\n\tif reexec.Init() {\n\t\tos.Exit(0)\n\t}\n}\n\n// NewCommand constructs an update-ldcache command with the specified logger\nfunc NewCommand(logger logger.Interface) *cli.Command {\n\tc := command{\n\t\tlogger: logger,\n\t}\n\treturn c.build()\n}\n\n// build the update-ldcache command\nfunc (m command) build() *cli.Command {\n\tcfg := options{}\n\n\t// Create the 'update-ldcache' command\n\tc := cli.Command{\n\t\tName:  \"update-ldcache\",\n\t\tUsage: \"Update ldcache in a container by running ldconfig\",\n\t\tBefore: func(ctx context.Context, cmd *cli.Command) (context.Context, error) {\n\t\t\treturn ctx, m.validateFlags(cmd, &cfg)\n\t\t},\n\t\tAction: func(_ context.Context, cmd *cli.Command) error {\n\t\t\treturn m.run(cmd, &cfg)\n\t\t},\n\t\tFlags: []cli.Flag{\n\t\t\t&cli.StringSliceFlag{\n\t\t\t\tName:        \"folder\",\n\t\t\t\tUsage:       \"Specify a folder to add to /etc/ld.so.conf before updating the ld cache\",\n\t\t\t\tDestination: &cfg.folders,\n\t\t\t},\n\t\t\t&cli.StringFlag{\n\t\t\t\tName:        \"ldconfig-path\",\n\t\t\t\tUsage:       \"Specify the path to the ldconfig program\",\n\t\t\t\tDestination: &cfg.ldconfigPath,\n\t\t\t\tValue:       \"/sbin/ldconfig\",\n\t\t\t},\n\t\t\t&cli.StringFlag{\n\t\t\t\tName:        \"container-spec\",\n\t\t\t\tUsage:       \"Specify the path to the OCI container spec. If empty or '-' the spec will be read from STDIN\",\n\t\t\t\tDestination: &cfg.containerSpec,\n\t\t\t},\n\t\t},\n\t}\n\n\treturn &c\n}\n\nfunc (m command) validateFlags(_ *cli.Command, cfg *options) error {\n\tif cfg.ldconfigPath == \"\" {\n\t\treturn errors.New(\"ldconfig-path must be specified\")\n\t}\n\treturn nil\n}\n\nfunc (m command) run(_ *cli.Command, cfg *options) error {\n\ts, err := oci.LoadContainerState(cfg.containerSpec)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to load container state: %v\", err)\n\t}\n\n\tcontainerRootDir, err := s.GetContainerRoot()\n\tif err != nil || containerRootDir == \"\" || containerRootDir == \"/\" {\n\t\treturn fmt.Errorf(\"failed to determined container root: %v\", err)\n\t}\n\n\trunner, err := ldconfig.NewRunner(\n\t\treexecUpdateLdCacheCommandName,\n\t\tcfg.ldconfigPath,\n\t\tcontainerRootDir,\n\t\tcfg.folders...,\n\t)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn runner.Run()\n}\n\n// updateLdCacheHandler wraps updateLdCache with error handling.\nfunc updateLdCacheHandler() {\n\tif err := updateLdCache(os.Args); err != nil {\n\t\tlog.Printf(\"Error updating ldcache: %v\", err)\n\t\tos.Exit(1)\n\t}\n}\n\n// updateLdCache ensures that the ldcache in the container is updated to include\n// libraries that are mounted from the host.\n// It is invoked from a reexec'd handler and provides namespace isolation for\n// the operations performed by this hook. At the point where this is invoked,\n// we are in a new mount namespace that is cloned from the parent.\nfunc updateLdCache(args []string) error {\n\tldconfig, err := ldconfig.NewFromArgs(args...)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to construct ldconfig runner: %w\", err)\n\t}\n\n\treturn ldconfig.UpdateLDCache()\n}\n"
  },
  {
    "path": "cmd/nvidia-container-runtime/README.md",
    "content": "# The NVIDIA Container Runtime\n\nThe NVIDIA Container Runtime is a shim for OCI-compliant low-level runtimes such as [runc](https://github.com/opencontainers/runc). When a `create` command is detected, the incoming [OCI runtime specification](https://github.com/opencontainers/runtime-spec) is modified in place and the command is forwarded to the low-level runtime.\n\n## Configuration\n\nThe NVIDIA Container Runtime uses file-based configuration, with the config stored in `/etc/nvidia-container-runtime/config.toml`. The `/etc` path can be overridden using the `XDG_CONFIG_HOME` environment variable with the `${XDG_CONFIG_HOME}/nvidia-container-runtime/config.toml` file used instead if this environment variable is set.\n\nThis config file may contain options for other components of the NVIDIA container stack and for the NVIDIA Container Runtime, the relevant config section is `nvidia-container-runtime`\n\n### Logging\n\nThe `log-level` config option (default: `\"info\"`) specifies the log level to use and the `debug` option, if set, specifies a log file to which logs for the NVIDIA Container Runtime must be written.\n\nIn addition to this, the NVIDIA Container Runtime considers the value of `--log` and `--log-format` flags that may be passed to it by a container runtime such as docker or containerd. If the `--debug` flag is present the log-level specified in the config file is overridden as `\"debug\"`.\n\n### Low-level Runtime Path\n\nThe `runtimes` config option allows for the low-level runtime to be specified. The first entry in this list that is an existing executable file is used as the low-level runtime. If the entry is not a path, the `PATH` is searched for a matching executable. If the entry is a path this is checked instead.\n\nThe default value for this setting is:\n```toml\nruntimes = [\n    \"runc\",\n    \"crun\",\n]\n```\n\nand if, for example, `crun` is to be used instead this can be changed to:\n```toml\nruntimes = [\n    \"crun\",\n]\n```\n\n### Runtime Mode\n\nThe `mode` config option (default `\"auto\"`) controls the high-level behaviour of the runtime.\n\n#### Auto Mode\n\nWhen `mode` is set to `\"auto\"`, the runtime employs heuristics to determine which mode to use based on, for example, the platform where the runtime is being run.\n\n#### Legacy Mode\n\nWhen `mode` is set to `\"legacy\"`, the NVIDIA Container Runtime adds a [`prestart` hook](https://github.com/opencontainers/runtime-spec/blob/master/config.md#prestart) to the incomming OCI specification that invokes the NVIDIA Container Runtime Hook for all containers created. This hook checks whether NVIDIA devices are requested and ensures GPU access is configured using the `nvidia-container-cli` from the [libnvidia-container](https://github.com/NVIDIA/libnvidia-container) project.\n\n#### CSV Mode\n\nWhen `mode` is set to `\"csv\"`, CSV files at `/etc/nvidia-container-runtime/host-files-for-container.d` define the devices and mounts that are to be injected into a container when it is created. The search path for the files can be overridden by modifying the `nvidia-container-runtime.modes.csv.mount-spec-path` in the config as below:\n\n```toml\n[nvidia-container-runtime]\n    [nvidia-container-runtime.modes.csv]\n    mount-spec-path = \"/etc/nvidia-container-runtime/host-files-for-container.d\"\n```\n\nThis mode is primarily targeted at Tegra-based systems without NVML available.\n\n### Notes on using the docker CLI\n\nNote that only the `\"legacy\"` NVIDIA Container Runtime mode is directly compatible with the `--gpus` flag implemented by the `docker` CLI (assuming the NVIDIA Container Runtime is not used). The reason for this is that `docker` inserts the same NVIDIA Container Runtime Hook into the OCI runtime specification.\n\n\nIf a different mode is explicitly set or detected, the NVIDIA Container Runtime Hook will raise the following error when `--gpus` is set:\n```\n$ docker run --rm --gpus all ubuntu:18.04\ndocker: Error response from daemon: failed to create shim: OCI runtime create failed: container_linux.go:380: starting container process caused: process_linux.go:545: container init caused: Running hook #0:: error running hook: exit status 1, stdout: , stderr: Auto-detected mode as 'csv'\ninvoking the NVIDIA Container Runtime Hook directly (e.g. specifying the docker --gpus flag) is not supported. Please use the NVIDIA Container Runtime instead.: unknown.\n```\nHere NVIDIA Container Runtime must be used explicitly. The recommended way to do this is to specify the `--runtime=nvidia` command line argument as part of the `docker run` commmand as follows:\n```\n$ docker run --rm --gpus all --runtime=nvidia ubuntu:18.04\n```\n\nAlternatively the NVIDIA Container Runtime can be set as the default runtime for docker. This can be done by modifying the `/etc/docker/daemon.json` file as follows:\n```json\n{\n    \"default-runtime\": \"nvidia\",\n    \"runtimes\": {\n        \"nvidia\": {\n            \"path\": \"nvidia-container-runtime\",\n            \"runtimeArgs\": []\n        }\n    }\n}\n```\n\n## Environment variables (OCI spec)\n\nEach environment variable maps to a command-line argument for `nvidia-container-cli` from [libnvidia-container](https://github.com/NVIDIA/libnvidia-container).\nThese variables are already set in our [official CUDA images](https://hub.docker.com/r/nvidia/cuda/).\n\n### `NVIDIA_VISIBLE_DEVICES`\nThis variable controls which GPUs will be made accessible inside the container.\n\n#### Possible values\n* `0,1,2`, `GPU-fef8089b` …: a comma-separated list of GPU UUID(s) or index(es).\n* `all`: all GPUs will be accessible, this is the default value in our container images.\n* `none`: no GPU will be accessible, but driver capabilities will be enabled.\n* `void` or *empty* or *unset*: `nvidia-container-runtime` will have the same behavior as `runc`.\n\n**Note**: When running on a MIG capable device, the following values will also be available:\n* `0:0,0:1,1:0`, `MIG-GPU-fef8089b/0/1` …: a comma-separated list of MIG Device UUID(s) or index(es).\n\nWhere the MIG device indices have the form `<GPU Device Index>:<MIG Device Index>` as seen in the example output:\n```\n$ nvidia-smi -L\nGPU 0: Graphics Device (UUID: GPU-b8ea3855-276c-c9cb-b366-c6fa655957c5)\n  MIG Device 0: (UUID: MIG-GPU-b8ea3855-276c-c9cb-b366-c6fa655957c5/1/0)\n  MIG Device 1: (UUID: MIG-GPU-b8ea3855-276c-c9cb-b366-c6fa655957c5/1/1)\n  MIG Device 2: (UUID: MIG-GPU-b8ea3855-276c-c9cb-b366-c6fa655957c5/11/0)\n```\n\n### `NVIDIA_MIG_CONFIG_DEVICES`\nThis variable controls which of the visible GPUs can have their MIG\nconfiguration managed from within the container. This includes enabling and\ndisabling MIG mode, creating and destroying GPU Instances and Compute\nInstances, etc.\n\n#### Possible values\n* `all`: Allow all MIG-capable GPUs in the visible device list to have their\n  MIG configurations managed.\n\n**Note**:\n* This feature is only available on MIG capable devices (e.g. the A100).\n* To use this feature, the container must be started with `CAP_SYS_ADMIN` privileges.\n* When not running as `root`, the container user must have read access to the\n  `/proc/driver/nvidia/capabilities/mig/config` file on the host.\n\n### `NVIDIA_MIG_MONITOR_DEVICES`\nThis variable controls which of the visible GPUs can have aggregate information\nabout all of their MIG devices monitored from within the container. This\nincludes inspecting the aggregate memory usage, listing the aggregate running\nprocesses, etc.\n\n#### Possible values\n* `all`: Allow all MIG-capable GPUs in the visible device list to have their\n  MIG devices monitored.\n\n**Note**:\n* This feature is only available on MIG capable devices (e.g. the A100).\n* To use this feature, the container must be started with `CAP_SYS_ADMIN` privileges.\n* When not running as `root`, the container user must have read access to the\n  `/proc/driver/nvidia/capabilities/mig/monitor` file on the host.\n\n### `NVIDIA_DRIVER_CAPABILITIES`\nThis option controls which driver libraries/binaries will be mounted inside the container.\n\n#### Possible values\n* `compute,video`, `graphics,utility` …: a comma-separated list of driver features the container needs.\n* `all`: enable all available driver capabilities.\n* *empty* or *unset*: use default driver capability: `utility,compute`.\n\n#### Supported driver capabilities\n* `compute`: required for CUDA and OpenCL applications.\n* `compat32`: required for running 32-bit applications.\n* `graphics`: required for running OpenGL and Vulkan applications.\n* `utility`: required for using `nvidia-smi` and NVML.\n* `video`: required for using the Video Codec SDK.\n* `display`: required for leveraging X11 display.\n\n### `NVIDIA_REQUIRE_*`\nA logical expression to define constraints on the configurations supported by the container.\n\n#### Supported constraints\n* `cuda`: constraint on the CUDA driver version.\n* `driver`: constraint on the driver version.\n* `arch`: constraint on the compute architectures of the selected GPUs.\n* `brand`: constraint on the brand of the selected GPUs (e.g. GeForce, Tesla, GRID).\n\n#### Expressions\nMultiple constraints can be expressed in a single environment variable: space-separated constraints are ORed, comma-separated constraints are ANDed.\nMultiple environment variables of the form `NVIDIA_REQUIRE_*` are ANDed together.\n\n### `NVIDIA_DISABLE_REQUIRE`\nSingle switch to disable all the constraints of the form `NVIDIA_REQUIRE_*`.\n\n### `NVIDIA_REQUIRE_CUDA`\n\nThe version of the CUDA toolkit used by the container. It is an instance of the generic `NVIDIA_REQUIRE_*` case and it is set by official CUDA images.\nIf the version of the NVIDIA driver is insufficient to run this version of CUDA, the container will not be started.\n\n#### Possible values\n* `cuda>=7.5`, `cuda>=8.0`, `cuda>=9.0` …: any valid CUDA version in the form `major.minor`.\n\n### `CUDA_VERSION`\nSimilar to `NVIDIA_REQUIRE_CUDA`, for legacy CUDA images.\nIn addition, if `NVIDIA_REQUIRE_CUDA` is not set, `NVIDIA_VISIBLE_DEVICES` and `NVIDIA_DRIVER_CAPABILITIES` will default to `all`.\n\n## Usage example\n\n**NOTE:** The use of the `nvidia-container-runtime` as CLI replacement for `runc` is uncommon and is only provided for completeness.\n\nAlthough the `nvidia-container-runtime` is typically configured as a replacement for `runc` or `crun` in various container engines, it can also be\ninvoked from the command line as `runc` would. For example:\n\n```sh\n# Setup a rootfs based on Ubuntu 16.04\ncd $(mktemp -d) && mkdir rootfs\ncurl -sS http://cdimage.ubuntu.com/ubuntu-base/releases/16.04/release/ubuntu-base-16.04.6-base-amd64.tar.gz | tar --exclude 'dev/*' -C rootfs -xz\n\n# Create an OCI runtime spec\nnvidia-container-runtime spec\nsed -i 's;\"sh\";\"nvidia-smi\";' config.json\nsed -i 's;\\(\"TERM=xterm\"\\);\\1, \"NVIDIA_VISIBLE_DEVICES=0\";' config.json\n\n# Run the container\nsudo nvidia-container-runtime run nvidia_smi\n```\n"
  },
  {
    "path": "cmd/nvidia-container-runtime/main.go",
    "content": "package main\n\nimport (\n\t\"os\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/runtime\"\n)\n\nfunc main() {\n\tr := runtime.New()\n\terr := r.Run(os.Args)\n\tif err != nil {\n\t\tos.Exit(1)\n\t}\n}\n"
  },
  {
    "path": "cmd/nvidia-container-runtime/main_test.go",
    "content": "package main\n\nimport (\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n\t\"os\"\n\t\"os/exec\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/opencontainers/runtime-spec/specs-go\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/test\"\n)\n\nconst (\n\tnvidiaRuntime            = \"nvidia-container-runtime\"\n\tnvidiaHook               = \"nvidia-container-runtime-hook\"\n\tbundlePathSuffix         = \"tests/output/bundle/\"\n\tspecFile                 = \"config.json\"\n\tunmodifiedSpecFileSuffix = \"tests/input/test_spec.json\"\n)\n\nconst (\n\truncExecutableName = \"runc\"\n)\n\ntype testConfig struct {\n\troot    string\n\tbinPath string\n}\n\nvar cfg *testConfig\n\nfunc TestMain(m *testing.M) {\n\t// TEST SETUP\n\t// Determine the module root and the test binary path\n\tvar err error\n\tmoduleRoot, err := test.GetModuleRoot()\n\tif err != nil {\n\t\tlog.Fatalf(\"error in test setup: could not get module root: %v\", err)\n\t}\n\ttestBinPath := filepath.Join(moduleRoot, \"tests\", \"bin\")\n\ttestInputPath := filepath.Join(moduleRoot, \"tests\", \"input\")\n\n\t// Set the environment variables for the test\n\tos.Setenv(\"PATH\", test.PrependToPath(testBinPath, moduleRoot))\n\tos.Setenv(\"XDG_CONFIG_HOME\", testInputPath)\n\n\t// Confirm that the environment is configured correctly\n\truncPath, err := exec.LookPath(runcExecutableName)\n\tif err != nil || filepath.Join(testBinPath, runcExecutableName) != runcPath {\n\t\tlog.Fatalf(\"error in test setup: mock runc path set incorrectly in TestMain(): %v\", err)\n\t}\n\thookPath, err := exec.LookPath(nvidiaHook)\n\tif err != nil || filepath.Join(testBinPath, nvidiaHook) != hookPath {\n\t\tlog.Fatalf(\"error in test setup: mock hook path set incorrectly in TestMain(): %v\", err)\n\t}\n\n\t// Store the root and binary paths in the test Config\n\tcfg = &testConfig{\n\t\troot:    moduleRoot,\n\t\tbinPath: testBinPath,\n\t}\n\n\t// RUN TESTS\n\texitCode := m.Run()\n\n\t// TEST CLEANUP\n\tos.Remove(specFile)\n\n\tos.Exit(exitCode)\n}\n\n// case 1) nvidia-container-runtime run --bundle\n// case 2) nvidia-container-runtime create --bundle\n//   - Confirm the runtime handles bad input correctly\nfunc TestBadInput(t *testing.T) {\n\terr := cfg.generateNewRuntimeSpec()\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\t//nolint:gosec // TODO: Can we harden this so that there is less risk of command injection\n\tcmdCreate := exec.Command(nvidiaRuntime, \"create\", \"--bundle\")\n\tt.Logf(\"executing: %s\\n\", strings.Join(cmdCreate.Args, \" \"))\n\terr = cmdCreate.Run()\n\trequire.Error(t, err, \"runtime should return an error\")\n}\n\n// case 1) nvidia-container-runtime run --bundle <bundle-name> <ctr-name>\n//   - Confirm the runtime runs with no errors\n//\n// case 2) nvidia-container-runtime create --bundle <bundle-name> <ctr-name>\n//   - Confirm the runtime inserts the NVIDIA prestart hook correctly\nfunc TestGoodInput(t *testing.T) {\n\terr := cfg.generateNewRuntimeSpec()\n\tif err != nil {\n\t\tt.Fatalf(\"error generating runtime spec: %v\", err)\n\t}\n\n\t//nolint:gosec // TODO: Can we harden this so that there is less risk of command injection\n\tcmdRun := exec.Command(nvidiaRuntime, \"run\", \"--bundle\", cfg.bundlePath(), \"testcontainer\")\n\tt.Logf(\"executing: %s\\n\", strings.Join(cmdRun.Args, \" \"))\n\toutput, err := cmdRun.CombinedOutput()\n\trequire.NoErrorf(t, err, \"runtime should not return an error\", \"output=%v\", string(output))\n\n\t// Check config.json and confirm there are no hooks\n\tspec, err := cfg.getRuntimeSpec()\n\trequire.NoError(t, err, \"should be no errors when reading and parsing spec from config.json\")\n\trequire.Empty(t, spec.Hooks, \"there should be no hooks in config.json\")\n\n\t//nolint:gosec // TODO: Can we harden this so that there is less risk of command injection\n\tcmdCreate := exec.Command(nvidiaRuntime, \"create\", \"--bundle\", cfg.bundlePath(), \"testcontainer\")\n\tt.Logf(\"executing: %s\\n\", strings.Join(cmdCreate.Args, \" \"))\n\terr = cmdCreate.Run()\n\trequire.NoError(t, err, \"runtime should not return an error\")\n\n\t// Check config.json to ensure that the NVIDIA prestart was not inserted.\n\tspec, err = cfg.getRuntimeSpec()\n\trequire.NoError(t, err, \"should be no errors when reading and parsing spec from config.json\")\n\trequire.Empty(t, spec.Hooks, \"there should be no hooks in config.json\")\n}\n\n// NVIDIA prestart hook already present in config file\nfunc TestDuplicateHook(t *testing.T) {\n\terr := cfg.generateNewRuntimeSpec()\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tvar spec specs.Spec\n\tspec, err = cfg.getRuntimeSpec()\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tt.Logf(\"inserting nvidia prestart hook to config.json\")\n\tif err = addNVIDIAHook(&spec); err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tjsonOutput, err := json.MarshalIndent(spec, \"\", \"\\t\")\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tjsonFile, err := os.OpenFile(cfg.specFilePath(), os.O_RDWR, 0644)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\t_, err = jsonFile.WriteAt(jsonOutput, 0)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\t// Test how runtime handles already existing prestart hook in config.json\n\t//nolint:gosec // TODO: Can we harden this so that there is less risk of command injection\n\tcmdCreate := exec.Command(nvidiaRuntime, \"create\", \"--bundle\", cfg.bundlePath(), \"testcontainer\")\n\tt.Logf(\"executing: %s\\n\", strings.Join(cmdCreate.Args, \" \"))\n\toutput, err := cmdCreate.CombinedOutput()\n\trequire.NoErrorf(t, err, \"runtime should not return an error\", \"output=%v\", string(output))\n\n\t// Check config.json to ensure that the NVIDIA prestart hook was removed.\n\tspec, err = cfg.getRuntimeSpec()\n\trequire.NoError(t, err, \"should be no errors when reading and parsing spec from config.json\")\n\trequire.Empty(t, spec.Hooks, \"there should be no hooks in config.json\")\n}\n\n// addNVIDIAHook is a basic wrapper for an addHookModifier that is used for\n// testing.\nfunc addNVIDIAHook(spec *specs.Spec) error {\n\tif spec.Hooks != nil {\n\t\treturn fmt.Errorf(\"expected empty spec\")\n\t}\n\tspec.Hooks = &specs.Hooks{\n\t\tPrestart: []specs.Hook{\n\t\t\t{\n\t\t\t\tPath: nvidiaHook,\n\t\t\t\tArgs: []string{filepath.Base(nvidiaHook), \"prestart\"},\n\t\t\t},\n\t\t},\n\t}\n\treturn nil\n}\n\nfunc (c testConfig) getRuntimeSpec() (specs.Spec, error) {\n\tfilePath := c.specFilePath()\n\n\tvar spec specs.Spec\n\tjsonFile, err := os.OpenFile(filePath, os.O_RDWR, 0644)\n\tif err != nil {\n\t\treturn spec, err\n\t}\n\tdefer jsonFile.Close()\n\n\tjsonContent, err := io.ReadAll(jsonFile)\n\tswitch {\n\tcase err != nil:\n\t\treturn spec, err\n\tcase json.Valid(jsonContent):\n\t\terr = json.Unmarshal(jsonContent, &spec)\n\t\tif err != nil {\n\t\t\treturn spec, err\n\t\t}\n\tdefault:\n\t\terr = json.NewDecoder(bytes.NewReader(jsonContent)).Decode(&spec)\n\t\tif err != nil {\n\t\t\treturn spec, err\n\t\t}\n\t}\n\n\treturn spec, err\n}\n\nfunc (c testConfig) bundlePath() string {\n\treturn filepath.Join(c.root, bundlePathSuffix)\n}\n\nfunc (c testConfig) specFilePath() string {\n\treturn filepath.Join(c.bundlePath(), specFile)\n}\n\nfunc (c testConfig) unmodifiedSpecFile() string {\n\treturn filepath.Join(c.root, unmodifiedSpecFileSuffix)\n}\n\nfunc (c testConfig) generateNewRuntimeSpec() error {\n\tvar err error\n\n\terr = os.MkdirAll(c.bundlePath(), 0755)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t//nolint:gosec // TODO: Can we harden this so that there is less risk of command injection\n\tcmd := exec.Command(\"cp\", c.unmodifiedSpecFile(), c.specFilePath())\n\terr = cmd.Run()\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "cmd/nvidia-container-runtime-hook/capabilities.go",
    "content": "package main\n\nimport (\n\t\"log\"\n)\n\nfunc capabilityToCLI(cap string) string {\n\tswitch cap {\n\tcase \"compute\":\n\t\treturn \"--compute\"\n\tcase \"compat32\":\n\t\treturn \"--compat32\"\n\tcase \"graphics\":\n\t\treturn \"--graphics\"\n\tcase \"utility\":\n\t\treturn \"--utility\"\n\tcase \"video\":\n\t\treturn \"--video\"\n\tcase \"display\":\n\t\treturn \"--display\"\n\tcase \"ngx\":\n\t\treturn \"--ngx\"\n\tdefault:\n\t\tlog.Panicln(\"unknown driver capability:\", cap)\n\t}\n\treturn \"\"\n}\n"
  },
  {
    "path": "cmd/nvidia-container-runtime-hook/container_config.go",
    "content": "package main\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"log\"\n\t\"os\"\n\t\"path\"\n\n\t\"github.com/opencontainers/runtime-spec/specs-go\"\n\t\"golang.org/x/mod/semver\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/config/image\"\n)\n\ntype nvidiaConfig struct {\n\tDevices            []string\n\tMigConfigDevices   string\n\tMigMonitorDevices  string\n\tImexChannels       []string\n\tDriverCapabilities string\n\t// Requirements defines the requirements DSL for the container to run.\n\t// This is empty if no specific requirements are needed, or if requirements are\n\t// explicitly disabled.\n\tRequirements []string\n}\n\ntype containerConfig struct {\n\tPid    int\n\tRootfs string\n\tImage  image.CUDA\n\tNvidia *nvidiaConfig\n}\n\n// Root from OCI runtime spec\n// github.com/opencontainers/runtime-spec/blob/v1.0.0/specs-go/config.go#L94-L100\ntype Root struct {\n\tPath string `json:\"path\"`\n}\n\n// Process from OCI runtime spec\n// github.com/opencontainers/runtime-spec/blob/v1.0.0/specs-go/config.go#L30-L57\ntype Process struct {\n\tEnv          []string         `json:\"env,omitempty\"`\n\tCapabilities *json.RawMessage `json:\"capabilities,omitempty\" platform:\"linux\"`\n}\n\n// LinuxCapabilities from OCI runtime spec\n// https://github.com/opencontainers/runtime-spec/blob/v1.0.0/specs-go/config.go#L61\ntype LinuxCapabilities struct {\n\tBounding    []string `json:\"bounding,omitempty\" platform:\"linux\"`\n\tEffective   []string `json:\"effective,omitempty\" platform:\"linux\"`\n\tInheritable []string `json:\"inheritable,omitempty\" platform:\"linux\"`\n\tPermitted   []string `json:\"permitted,omitempty\" platform:\"linux\"`\n\tAmbient     []string `json:\"ambient,omitempty\" platform:\"linux\"`\n}\n\n// Spec from OCI runtime spec\n// We use pointers to structs, similarly to the latest version of runtime-spec:\n// https://github.com/opencontainers/runtime-spec/blob/v1.0.0/specs-go/config.go#L5-L28\ntype Spec struct {\n\tVersion *string       `json:\"ociVersion\"`\n\tProcess *Process      `json:\"process,omitempty\"`\n\tRoot    *Root         `json:\"root,omitempty\"`\n\tMounts  []specs.Mount `json:\"mounts,omitempty\"`\n}\n\n// HookState holds state information about the hook\ntype HookState struct {\n\tPid int `json:\"pid,omitempty\"`\n\t// After 17.06, runc is using the runtime spec:\n\t// github.com/docker/runc/blob/17.06/libcontainer/configs/config.go#L262-L263\n\t// github.com/opencontainers/runtime-spec/blob/v1.0.0/specs-go/state.go#L3-L17\n\tBundle string `json:\"bundle\"`\n\t// Before 17.06, runc used a custom struct that didn't conform to the spec:\n\t// github.com/docker/runc/blob/17.03.x/libcontainer/configs/config.go#L245-L252\n\tBundlePath string `json:\"bundlePath\"`\n}\n\nfunc loadSpec(path string) (spec *Spec) {\n\tf, err := os.Open(path)\n\tif err != nil {\n\t\tlog.Panicln(\"could not open OCI spec:\", err)\n\t}\n\tdefer f.Close()\n\n\tif err = json.NewDecoder(f).Decode(&spec); err != nil {\n\t\tlog.Panicln(\"could not decode OCI spec:\", err)\n\t}\n\tif spec.Version == nil {\n\t\tlog.Panicln(\"Version is empty in OCI spec\")\n\t}\n\tif spec.Process == nil {\n\t\tlog.Panicln(\"Process is empty in OCI spec\")\n\t}\n\tif spec.Root == nil {\n\t\tlog.Panicln(\"Root is empty in OCI spec\")\n\t}\n\treturn\n}\n\nfunc (s *Spec) GetCapabilities() []string {\n\tif s == nil || s.Process == nil || s.Process.Capabilities == nil {\n\t\treturn nil\n\t}\n\n\tvar caps []string\n\t// If v1.0.0-rc1 <= OCI version < v1.0.0-rc5 parse s.Process.Capabilities as:\n\t// github.com/opencontainers/runtime-spec/blob/v1.0.0-rc1/specs-go/config.go#L30-L54\n\trc1cmp := semver.Compare(\"v\"+*s.Version, \"v1.0.0-rc1\")\n\trc5cmp := semver.Compare(\"v\"+*s.Version, \"v1.0.0-rc5\")\n\tif (rc1cmp == 1 || rc1cmp == 0) && (rc5cmp == -1) {\n\t\terr := json.Unmarshal(*s.Process.Capabilities, &caps)\n\t\tif err != nil {\n\t\t\tlog.Panicln(\"could not decode Process.Capabilities in OCI spec:\", err)\n\t\t}\n\t\treturn caps\n\t}\n\n\t// Otherwise, parse s.Process.Capabilities as:\n\t// github.com/opencontainers/runtime-spec/blob/v1.0.0/specs-go/config.go#L30-L54\n\tcapabilities := specs.LinuxCapabilities{}\n\terr := json.Unmarshal(*s.Process.Capabilities, &capabilities)\n\tif err != nil {\n\t\tlog.Panicln(\"could not decode Process.Capabilities in OCI spec:\", err)\n\t}\n\n\treturn image.OCISpecCapabilities(capabilities).GetCapabilities()\n}\n\nfunc isPrivileged(s *Spec) bool {\n\treturn image.IsPrivileged(s)\n}\n\nfunc getMigConfigDevices(i image.CUDA) *string {\n\treturn getMigDevices(i, image.EnvVarNvidiaMigConfigDevices)\n}\n\nfunc getMigMonitorDevices(i image.CUDA) *string {\n\treturn getMigDevices(i, image.EnvVarNvidiaMigMonitorDevices)\n}\n\nfunc getMigDevices(image image.CUDA, envvar string) *string {\n\tif !image.HasEnvvar(envvar) {\n\t\treturn nil\n\t}\n\tdevices := image.Getenv(envvar)\n\treturn &devices\n}\n\nfunc (hookConfig *hookConfig) getDriverCapabilities(cudaImage image.CUDA, legacyImage bool) image.DriverCapabilities {\n\t// We use the default driver capabilities by default. This is filtered to only include the\n\t// supported capabilities\n\tsupportedDriverCapabilities := image.NewDriverCapabilities(hookConfig.SupportedDriverCapabilities)\n\tcapabilities := supportedDriverCapabilities.Intersection(image.DefaultDriverCapabilities)\n\n\tcapsEnvSpecified := cudaImage.HasEnvvar(image.EnvVarNvidiaDriverCapabilities)\n\tcapsEnv := cudaImage.Getenv(image.EnvVarNvidiaDriverCapabilities)\n\n\tif !capsEnvSpecified && legacyImage {\n\t\t// Environment variable unset with legacy image: set all capabilities.\n\t\treturn supportedDriverCapabilities\n\t}\n\n\tif capsEnvSpecified && len(capsEnv) > 0 {\n\t\t// If the envvironment variable is specified and is non-empty, use the capabilities value\n\t\tenvCapabilities := image.NewDriverCapabilities(capsEnv)\n\t\tcapabilities = supportedDriverCapabilities.Intersection(envCapabilities)\n\t\tif !envCapabilities.IsAll() && len(capabilities) != len(envCapabilities) {\n\t\t\tlog.Panicln(fmt.Errorf(\"unsupported capabilities found in '%v' (allowed '%v')\", envCapabilities, capabilities))\n\t\t}\n\t}\n\n\treturn capabilities\n}\n\nfunc (hookConfig *hookConfig) getNvidiaConfig(image image.CUDA, privileged bool) *nvidiaConfig {\n\tlegacyImage := image.IsLegacy()\n\n\tdevices := image.VisibleDevices()\n\tif len(devices) == 0 {\n\t\t// empty devices means this is not a GPU container.\n\t\treturn nil\n\t}\n\n\tvar migConfigDevices string\n\tif d := getMigConfigDevices(image); d != nil {\n\t\tmigConfigDevices = *d\n\t}\n\tif !privileged && migConfigDevices != \"\" {\n\t\tlog.Panicln(\"cannot set MIG_CONFIG_DEVICES in non privileged container\")\n\t}\n\n\tvar migMonitorDevices string\n\tif d := getMigMonitorDevices(image); d != nil {\n\t\tmigMonitorDevices = *d\n\t}\n\tif !privileged && migMonitorDevices != \"\" {\n\t\tlog.Panicln(\"cannot set MIG_MONITOR_DEVICES in non privileged container\")\n\t}\n\n\tdriverCapabilities := hookConfig.getDriverCapabilities(image, legacyImage).String()\n\n\trequirements, err := image.GetRequirements()\n\tif err != nil {\n\t\tlog.Panicln(\"failed to get requirements\", err)\n\t}\n\n\treturn &nvidiaConfig{\n\t\tDevices:            devices,\n\t\tMigConfigDevices:   migConfigDevices,\n\t\tMigMonitorDevices:  migMonitorDevices,\n\t\tImexChannels:       image.ImexChannelRequests(),\n\t\tDriverCapabilities: driverCapabilities,\n\t\tRequirements:       requirements,\n\t}\n}\n\nfunc (hookConfig *hookConfig) getContainerConfig() (config *containerConfig) {\n\thookConfig.Lock()\n\tdefer hookConfig.Unlock()\n\n\tif hookConfig.containerConfig != nil {\n\t\treturn hookConfig.containerConfig\n\t}\n\n\tvar h HookState\n\td := json.NewDecoder(os.Stdin)\n\tif err := d.Decode(&h); err != nil {\n\t\tlog.Panicln(\"could not decode container state:\", err)\n\t}\n\n\tb := h.Bundle\n\tif len(b) == 0 {\n\t\tb = h.BundlePath\n\t}\n\n\ts := loadSpec(path.Join(b, \"config.json\"))\n\n\tprivileged := isPrivileged(s)\n\n\ti, err := image.New(\n\t\timage.WithEnv(s.Process.Env),\n\t\timage.WithMounts(s.Mounts),\n\t\timage.WithPrivileged(privileged),\n\t\timage.WithDisableRequire(hookConfig.DisableRequire),\n\t\timage.WithAcceptDeviceListAsVolumeMounts(hookConfig.AcceptDeviceListAsVolumeMounts),\n\t\timage.WithAcceptEnvvarUnprivileged(hookConfig.AcceptEnvvarUnprivileged),\n\t\timage.WithPreferredVisibleDevicesEnvVars(hookConfig.getSwarmResource()),\n\t\timage.WithIgnoreImexChannelRequests(hookConfig.Features.IgnoreImexChannelRequests.IsEnabled()),\n\t)\n\tif err != nil {\n\t\tlog.Panicln(err)\n\t}\n\n\tcc := containerConfig{\n\t\tPid:    h.Pid,\n\t\tRootfs: s.Root.Path,\n\t\tImage:  i,\n\t\tNvidia: hookConfig.getNvidiaConfig(i, privileged),\n\t}\n\thookConfig.containerConfig = &cc\n\n\treturn hookConfig.containerConfig\n}\n"
  },
  {
    "path": "cmd/nvidia-container-runtime-hook/container_config_test.go",
    "content": "package main\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/api/config/v1\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/config/image\"\n)\n\nfunc TestGetNvidiaConfig(t *testing.T) {\n\tvar tests = []struct {\n\t\tdescription    string\n\t\tenv            map[string]string\n\t\tprivileged     bool\n\t\thookConfig     *hookConfig\n\t\texpectedConfig *nvidiaConfig\n\t\texpectedPanic  bool\n\t}{\n\t\t{\n\t\t\tdescription:    \"No environment, unprivileged\",\n\t\t\tenv:            map[string]string{},\n\t\t\tprivileged:     false,\n\t\t\texpectedConfig: nil,\n\t\t},\n\t\t{\n\t\t\tdescription:    \"No environment, privileged\",\n\t\t\tenv:            map[string]string{},\n\t\t\tprivileged:     true,\n\t\t\texpectedConfig: nil,\n\t\t},\n\t\t{\n\t\t\tdescription: \"Legacy image, no devices, no capabilities, no requirements\",\n\t\t\tenv: map[string]string{\n\t\t\t\timage.EnvVarCudaVersion: \"9.0\",\n\t\t\t},\n\t\t\tprivileged: false,\n\t\t\texpectedConfig: &nvidiaConfig{\n\t\t\t\tDevices:            []string{\"all\"},\n\t\t\t\tDriverCapabilities: image.SupportedDriverCapabilities.String(),\n\t\t\t\tRequirements:       []string{\"cuda>=9.0\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"Legacy image, devices 'all', no capabilities, no requirements\",\n\t\t\tenv: map[string]string{\n\t\t\t\timage.EnvVarCudaVersion:          \"9.0\",\n\t\t\t\timage.EnvVarNvidiaVisibleDevices: \"all\",\n\t\t\t},\n\t\t\tprivileged: false,\n\t\t\texpectedConfig: &nvidiaConfig{\n\t\t\t\tDevices:            []string{\"all\"},\n\t\t\t\tDriverCapabilities: image.SupportedDriverCapabilities.String(),\n\t\t\t\tRequirements:       []string{\"cuda>=9.0\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"Legacy image, devices 'empty', no capabilities, no requirements\",\n\t\t\tenv: map[string]string{\n\t\t\t\timage.EnvVarCudaVersion:          \"9.0\",\n\t\t\t\timage.EnvVarNvidiaVisibleDevices: \"\",\n\t\t\t},\n\t\t\tprivileged:     false,\n\t\t\texpectedConfig: nil,\n\t\t},\n\t\t{\n\t\t\tdescription: \"Legacy image, devices 'void', no capabilities, no requirements\",\n\t\t\tenv: map[string]string{\n\t\t\t\timage.EnvVarCudaVersion:          \"9.0\",\n\t\t\t\timage.EnvVarNvidiaVisibleDevices: \"void\",\n\t\t\t},\n\t\t\tprivileged:     false,\n\t\t\texpectedConfig: nil,\n\t\t},\n\t\t{\n\t\t\tdescription: \"Legacy image, devices 'none', no capabilities, no requirements\",\n\t\t\tenv: map[string]string{\n\t\t\t\timage.EnvVarCudaVersion:          \"9.0\",\n\t\t\t\timage.EnvVarNvidiaVisibleDevices: \"none\",\n\t\t\t},\n\t\t\tprivileged: false,\n\t\t\texpectedConfig: &nvidiaConfig{\n\t\t\t\tDevices:            []string{\"\"},\n\t\t\t\tDriverCapabilities: image.SupportedDriverCapabilities.String(),\n\t\t\t\tRequirements:       []string{\"cuda>=9.0\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"Legacy image, devices set, no capabilities, no requirements\",\n\t\t\tenv: map[string]string{\n\t\t\t\timage.EnvVarCudaVersion:          \"9.0\",\n\t\t\t\timage.EnvVarNvidiaVisibleDevices: \"gpu0,gpu1\",\n\t\t\t},\n\t\t\tprivileged: false,\n\t\t\texpectedConfig: &nvidiaConfig{\n\t\t\t\tDevices:            []string{\"gpu0\", \"gpu1\"},\n\t\t\t\tDriverCapabilities: image.SupportedDriverCapabilities.String(),\n\t\t\t\tRequirements:       []string{\"cuda>=9.0\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"Legacy image, devices set, capabilities 'empty', no requirements\",\n\t\t\tenv: map[string]string{\n\t\t\t\timage.EnvVarCudaVersion:              \"9.0\",\n\t\t\t\timage.EnvVarNvidiaVisibleDevices:     \"gpu0,gpu1\",\n\t\t\t\timage.EnvVarNvidiaDriverCapabilities: \"\",\n\t\t\t},\n\t\t\tprivileged: false,\n\t\t\texpectedConfig: &nvidiaConfig{\n\t\t\t\tDevices:            []string{\"gpu0\", \"gpu1\"},\n\t\t\t\tDriverCapabilities: image.DefaultDriverCapabilities.String(),\n\t\t\t\tRequirements:       []string{\"cuda>=9.0\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"Legacy image, devices set, capabilities 'all', no requirements\",\n\t\t\tenv: map[string]string{\n\t\t\t\timage.EnvVarCudaVersion:              \"9.0\",\n\t\t\t\timage.EnvVarNvidiaVisibleDevices:     \"gpu0,gpu1\",\n\t\t\t\timage.EnvVarNvidiaDriverCapabilities: \"all\",\n\t\t\t},\n\t\t\tprivileged: false,\n\t\t\texpectedConfig: &nvidiaConfig{\n\t\t\t\tDevices:            []string{\"gpu0\", \"gpu1\"},\n\t\t\t\tDriverCapabilities: image.SupportedDriverCapabilities.String(),\n\t\t\t\tRequirements:       []string{\"cuda>=9.0\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"Legacy image, devices set, capabilities set, no requirements\",\n\t\t\tenv: map[string]string{\n\t\t\t\timage.EnvVarCudaVersion:              \"9.0\",\n\t\t\t\timage.EnvVarNvidiaVisibleDevices:     \"gpu0,gpu1\",\n\t\t\t\timage.EnvVarNvidiaDriverCapabilities: \"video,display\",\n\t\t\t},\n\t\t\tprivileged: false,\n\t\t\texpectedConfig: &nvidiaConfig{\n\t\t\t\tDevices:            []string{\"gpu0\", \"gpu1\"},\n\t\t\t\tDriverCapabilities: \"display,video\",\n\t\t\t\tRequirements:       []string{\"cuda>=9.0\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"Legacy image, devices set, capabilities set, requirements set\",\n\t\t\tenv: map[string]string{\n\t\t\t\timage.EnvVarCudaVersion:              \"9.0\",\n\t\t\t\timage.EnvVarNvidiaVisibleDevices:     \"gpu0,gpu1\",\n\t\t\t\timage.EnvVarNvidiaDriverCapabilities: \"video,display\",\n\t\t\t\timage.NvidiaRequirePrefix + \"REQ0\":   \"req0=true\",\n\t\t\t\timage.NvidiaRequirePrefix + \"REQ1\":   \"req1=false\",\n\t\t\t},\n\t\t\tprivileged: false,\n\t\t\texpectedConfig: &nvidiaConfig{\n\t\t\t\tDevices:            []string{\"gpu0\", \"gpu1\"},\n\t\t\t\tDriverCapabilities: \"display,video\",\n\t\t\t\tRequirements:       []string{\"cuda>=9.0\", \"req0=true\", \"req1=false\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"Legacy image, devices set, capabilities set, requirements set, disable requirements\",\n\t\t\tenv: map[string]string{\n\t\t\t\timage.EnvVarCudaVersion:              \"9.0\",\n\t\t\t\timage.EnvVarNvidiaVisibleDevices:     \"gpu0,gpu1\",\n\t\t\t\timage.EnvVarNvidiaDriverCapabilities: \"video,display\",\n\t\t\t\timage.NvidiaRequirePrefix + \"REQ0\":   \"req0=true\",\n\t\t\t\timage.NvidiaRequirePrefix + \"REQ1\":   \"req1=false\",\n\t\t\t\timage.EnvVarNvidiaDisableRequire:     \"true\",\n\t\t\t},\n\t\t\tprivileged: false,\n\t\t\texpectedConfig: &nvidiaConfig{\n\t\t\t\tDevices:            []string{\"gpu0\", \"gpu1\"},\n\t\t\t\tDriverCapabilities: \"display,video\",\n\t\t\t\tRequirements:       []string{},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"Modern image, no devices, no capabilities, no requirements, no image.EnvVarCudaVersion\",\n\t\t\tenv: map[string]string{\n\t\t\t\timage.EnvVarNvidiaRequireCuda: \"cuda>=9.0\",\n\t\t\t},\n\t\t\tprivileged:     false,\n\t\t\texpectedConfig: nil,\n\t\t},\n\t\t{\n\t\t\tdescription: \"Modern image, no devices, no capabilities, no requirement, image.EnvVarCudaVersion set\",\n\t\t\tenv: map[string]string{\n\t\t\t\timage.EnvVarCudaVersion:       \"9.0\",\n\t\t\t\timage.EnvVarNvidiaRequireCuda: \"cuda>=9.0\",\n\t\t\t},\n\t\t\tprivileged:     false,\n\t\t\texpectedConfig: nil,\n\t\t},\n\t\t{\n\t\t\tdescription: \"Modern image, devices 'all', no capabilities, no requirements\",\n\t\t\tenv: map[string]string{\n\t\t\t\timage.EnvVarNvidiaRequireCuda:    \"cuda>=9.0\",\n\t\t\t\timage.EnvVarNvidiaVisibleDevices: \"all\",\n\t\t\t},\n\t\t\tprivileged: false,\n\t\t\texpectedConfig: &nvidiaConfig{\n\t\t\t\tDevices:            []string{\"all\"},\n\t\t\t\tDriverCapabilities: image.DefaultDriverCapabilities.String(),\n\t\t\t\tRequirements:       []string{\"cuda>=9.0\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"Modern image, devices 'empty', no capabilities, no requirements\",\n\t\t\tenv: map[string]string{\n\t\t\t\timage.EnvVarNvidiaRequireCuda:    \"cuda>=9.0\",\n\t\t\t\timage.EnvVarNvidiaVisibleDevices: \"\",\n\t\t\t},\n\t\t\tprivileged:     false,\n\t\t\texpectedConfig: nil,\n\t\t},\n\t\t{\n\t\t\tdescription: \"Modern image, devices 'void', no capabilities, no requirements\",\n\t\t\tenv: map[string]string{\n\t\t\t\timage.EnvVarNvidiaRequireCuda:    \"cuda>=9.0\",\n\t\t\t\timage.EnvVarNvidiaVisibleDevices: \"void\",\n\t\t\t},\n\t\t\tprivileged:     false,\n\t\t\texpectedConfig: nil,\n\t\t},\n\t\t{\n\t\t\tdescription: \"Modern image, devices 'none', no capabilities, no requirements\",\n\t\t\tenv: map[string]string{\n\t\t\t\timage.EnvVarNvidiaRequireCuda:    \"cuda>=9.0\",\n\t\t\t\timage.EnvVarNvidiaVisibleDevices: \"none\",\n\t\t\t},\n\t\t\tprivileged: false,\n\t\t\texpectedConfig: &nvidiaConfig{\n\t\t\t\tDevices:            []string{\"\"},\n\t\t\t\tDriverCapabilities: image.DefaultDriverCapabilities.String(),\n\t\t\t\tRequirements:       []string{\"cuda>=9.0\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"Modern image, devices set, no capabilities, no requirements\",\n\t\t\tenv: map[string]string{\n\t\t\t\timage.EnvVarNvidiaRequireCuda:    \"cuda>=9.0\",\n\t\t\t\timage.EnvVarNvidiaVisibleDevices: \"gpu0,gpu1\",\n\t\t\t},\n\t\t\tprivileged: false,\n\t\t\texpectedConfig: &nvidiaConfig{\n\t\t\t\tDevices:            []string{\"gpu0\", \"gpu1\"},\n\t\t\t\tDriverCapabilities: image.DefaultDriverCapabilities.String(),\n\t\t\t\tRequirements:       []string{\"cuda>=9.0\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"Modern image, devices set, capabilities 'empty', no requirements\",\n\t\t\tenv: map[string]string{\n\t\t\t\timage.EnvVarNvidiaRequireCuda:        \"cuda>=9.0\",\n\t\t\t\timage.EnvVarNvidiaVisibleDevices:     \"gpu0,gpu1\",\n\t\t\t\timage.EnvVarNvidiaDriverCapabilities: \"\",\n\t\t\t},\n\t\t\tprivileged: false,\n\t\t\texpectedConfig: &nvidiaConfig{\n\t\t\t\tDevices:            []string{\"gpu0\", \"gpu1\"},\n\t\t\t\tDriverCapabilities: image.DefaultDriverCapabilities.String(),\n\t\t\t\tRequirements:       []string{\"cuda>=9.0\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"Modern image, devices set, capabilities 'all', no requirements\",\n\t\t\tenv: map[string]string{\n\t\t\t\timage.EnvVarNvidiaRequireCuda:        \"cuda>=9.0\",\n\t\t\t\timage.EnvVarNvidiaVisibleDevices:     \"gpu0,gpu1\",\n\t\t\t\timage.EnvVarNvidiaDriverCapabilities: \"all\",\n\t\t\t},\n\t\t\tprivileged: false,\n\t\t\texpectedConfig: &nvidiaConfig{\n\t\t\t\tDevices:            []string{\"gpu0\", \"gpu1\"},\n\t\t\t\tDriverCapabilities: image.SupportedDriverCapabilities.String(),\n\t\t\t\tRequirements:       []string{\"cuda>=9.0\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"Modern image, devices set, capabilities set, no requirements\",\n\t\t\tenv: map[string]string{\n\t\t\t\timage.EnvVarNvidiaRequireCuda:        \"cuda>=9.0\",\n\t\t\t\timage.EnvVarNvidiaVisibleDevices:     \"gpu0,gpu1\",\n\t\t\t\timage.EnvVarNvidiaDriverCapabilities: \"video,display\",\n\t\t\t},\n\t\t\tprivileged: false,\n\t\t\texpectedConfig: &nvidiaConfig{\n\t\t\t\tDevices:            []string{\"gpu0\", \"gpu1\"},\n\t\t\t\tDriverCapabilities: \"display,video\",\n\t\t\t\tRequirements:       []string{\"cuda>=9.0\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"Modern image, devices set, capabilities set, requirements set\",\n\t\t\tenv: map[string]string{\n\t\t\t\timage.EnvVarNvidiaRequireCuda:        \"cuda>=9.0\",\n\t\t\t\timage.EnvVarNvidiaVisibleDevices:     \"gpu0,gpu1\",\n\t\t\t\timage.EnvVarNvidiaDriverCapabilities: \"video,display\",\n\t\t\t\timage.NvidiaRequirePrefix + \"REQ0\":   \"req0=true\",\n\t\t\t\timage.NvidiaRequirePrefix + \"REQ1\":   \"req1=false\",\n\t\t\t},\n\t\t\tprivileged: false,\n\t\t\texpectedConfig: &nvidiaConfig{\n\t\t\t\tDevices:            []string{\"gpu0\", \"gpu1\"},\n\t\t\t\tDriverCapabilities: \"display,video\",\n\t\t\t\tRequirements:       []string{\"cuda>=9.0\", \"req0=true\", \"req1=false\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"Modern image, devices set, capabilities set, requirements set, disable requirements\",\n\t\t\tenv: map[string]string{\n\t\t\t\timage.EnvVarNvidiaRequireCuda:        \"cuda>=9.0\",\n\t\t\t\timage.EnvVarNvidiaVisibleDevices:     \"gpu0,gpu1\",\n\t\t\t\timage.EnvVarNvidiaDriverCapabilities: \"video,display\",\n\t\t\t\timage.NvidiaRequirePrefix + \"REQ0\":   \"req0=true\",\n\t\t\t\timage.NvidiaRequirePrefix + \"REQ1\":   \"req1=false\",\n\t\t\t\timage.EnvVarNvidiaDisableRequire:     \"true\",\n\t\t\t},\n\t\t\tprivileged: false,\n\t\t\texpectedConfig: &nvidiaConfig{\n\t\t\t\tDevices:            []string{\"gpu0\", \"gpu1\"},\n\t\t\t\tDriverCapabilities: \"display,video\",\n\t\t\t\tRequirements:       []string{},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"No cuda envs, devices 'all'\",\n\t\t\tenv: map[string]string{\n\t\t\t\timage.EnvVarNvidiaVisibleDevices: \"all\",\n\t\t\t},\n\t\t\tprivileged: false,\n\n\t\t\texpectedConfig: &nvidiaConfig{\n\t\t\t\tDevices:            []string{\"all\"},\n\t\t\t\tDriverCapabilities: image.DefaultDriverCapabilities.String(),\n\t\t\t\tRequirements:       []string{},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"Modern image, devices 'all', migConfig set, privileged\",\n\t\t\tenv: map[string]string{\n\t\t\t\timage.EnvVarNvidiaRequireCuda:      \"cuda>=9.0\",\n\t\t\t\timage.EnvVarNvidiaVisibleDevices:   \"all\",\n\t\t\t\timage.EnvVarNvidiaMigConfigDevices: \"mig0,mig1\",\n\t\t\t},\n\t\t\tprivileged: true,\n\t\t\texpectedConfig: &nvidiaConfig{\n\t\t\t\tDevices:            []string{\"all\"},\n\t\t\t\tMigConfigDevices:   \"mig0,mig1\",\n\t\t\t\tDriverCapabilities: image.DefaultDriverCapabilities.String(),\n\t\t\t\tRequirements:       []string{\"cuda>=9.0\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"Modern image, devices 'all', migConfig set, unprivileged\",\n\t\t\tenv: map[string]string{\n\t\t\t\timage.EnvVarNvidiaRequireCuda:      \"cuda>=9.0\",\n\t\t\t\timage.EnvVarNvidiaVisibleDevices:   \"all\",\n\t\t\t\timage.EnvVarNvidiaMigConfigDevices: \"mig0,mig1\",\n\t\t\t},\n\t\t\tprivileged:    false,\n\t\t\texpectedPanic: true,\n\t\t},\n\t\t{\n\t\t\tdescription: \"Modern image, devices 'all', migMonitor set, privileged\",\n\t\t\tenv: map[string]string{\n\t\t\t\timage.EnvVarNvidiaRequireCuda:       \"cuda>=9.0\",\n\t\t\t\timage.EnvVarNvidiaVisibleDevices:    \"all\",\n\t\t\t\timage.EnvVarNvidiaMigMonitorDevices: \"mig0,mig1\",\n\t\t\t},\n\t\t\tprivileged: true,\n\t\t\texpectedConfig: &nvidiaConfig{\n\t\t\t\tDevices:            []string{\"all\"},\n\t\t\t\tMigMonitorDevices:  \"mig0,mig1\",\n\t\t\t\tDriverCapabilities: image.DefaultDriverCapabilities.String(),\n\t\t\t\tRequirements:       []string{\"cuda>=9.0\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"Modern image, devices 'all', migMonitor set, unprivileged\",\n\t\t\tenv: map[string]string{\n\t\t\t\timage.EnvVarNvidiaRequireCuda:       \"cuda>=9.0\",\n\t\t\t\timage.EnvVarNvidiaVisibleDevices:    \"all\",\n\t\t\t\timage.EnvVarNvidiaMigMonitorDevices: \"mig0,mig1\",\n\t\t\t},\n\t\t\tprivileged:    false,\n\t\t\texpectedPanic: true,\n\t\t},\n\t\t{\n\t\t\tdescription: \"Hook config set as driver-capabilities-all\",\n\t\t\tenv: map[string]string{\n\t\t\t\timage.EnvVarNvidiaVisibleDevices:     \"all\",\n\t\t\t\timage.EnvVarNvidiaDriverCapabilities: \"all\",\n\t\t\t},\n\t\t\tprivileged: true,\n\t\t\thookConfig: &hookConfig{\n\t\t\t\tConfig: &config.Config{\n\t\t\t\t\tSupportedDriverCapabilities: \"video,display\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedConfig: &nvidiaConfig{\n\t\t\t\tDevices:            []string{\"all\"},\n\t\t\t\tDriverCapabilities: \"display,video\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"Hook config set, envvar sets driver-capabilities\",\n\t\t\tenv: map[string]string{\n\t\t\t\timage.EnvVarNvidiaVisibleDevices:     \"all\",\n\t\t\t\timage.EnvVarNvidiaDriverCapabilities: \"video,display\",\n\t\t\t},\n\t\t\tprivileged: true,\n\t\t\thookConfig: &hookConfig{\n\t\t\t\tConfig: &config.Config{\n\t\t\t\t\tSupportedDriverCapabilities: \"video,display,compute,utility\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedConfig: &nvidiaConfig{\n\t\t\t\tDevices:            []string{\"all\"},\n\t\t\t\tDriverCapabilities: \"display,video\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"Hook config set, envvar unset sets default driver-capabilities\",\n\t\t\tenv: map[string]string{\n\t\t\t\timage.EnvVarNvidiaVisibleDevices: \"all\",\n\t\t\t},\n\t\t\tprivileged: true,\n\t\t\thookConfig: &hookConfig{\n\t\t\t\tConfig: &config.Config{\n\t\t\t\t\tSupportedDriverCapabilities: \"video,display,utility,compute\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedConfig: &nvidiaConfig{\n\t\t\t\tDevices:            []string{\"all\"},\n\t\t\t\tDriverCapabilities: image.DefaultDriverCapabilities.String(),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"Hook config set, swarmResource overrides device selection\",\n\t\t\tenv: map[string]string{\n\t\t\t\timage.EnvVarNvidiaVisibleDevices: \"all\",\n\t\t\t\t\"DOCKER_SWARM_RESOURCE\":          \"GPU1,GPU2\",\n\t\t\t},\n\t\t\tprivileged: true,\n\t\t\thookConfig: &hookConfig{\n\t\t\t\tConfig: &config.Config{\n\t\t\t\t\tSwarmResource:               \"DOCKER_SWARM_RESOURCE\",\n\t\t\t\t\tSupportedDriverCapabilities: \"video,display,utility,compute\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedConfig: &nvidiaConfig{\n\t\t\t\tDevices:            []string{\"GPU1\", \"GPU2\"},\n\t\t\t\tDriverCapabilities: image.DefaultDriverCapabilities.String(),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"Hook config set, comma separated swarmResource is split and overrides device selection\",\n\t\t\tenv: map[string]string{\n\t\t\t\timage.EnvVarNvidiaVisibleDevices: \"all\",\n\t\t\t\t\"DOCKER_SWARM_RESOURCE\":          \"GPU1,GPU2\",\n\t\t\t},\n\t\t\tprivileged: true,\n\t\t\thookConfig: &hookConfig{\n\t\t\t\tConfig: &config.Config{\n\t\t\t\t\tSwarmResource:               \"NOT_DOCKER_SWARM_RESOURCE,DOCKER_SWARM_RESOURCE\",\n\t\t\t\t\tSupportedDriverCapabilities: \"video,display,utility,compute\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedConfig: &nvidiaConfig{\n\t\t\t\tDevices:            []string{\"GPU1\", \"GPU2\"},\n\t\t\t\tDriverCapabilities: image.DefaultDriverCapabilities.String(),\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tc := range tests {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\timage, _ := image.New(\n\t\t\t\timage.WithEnvMap(tc.env),\n\t\t\t\timage.WithPrivileged(tc.privileged),\n\t\t\t\timage.WithPreferredVisibleDevicesEnvVars(tc.hookConfig.getSwarmResource()),\n\t\t\t)\n\n\t\t\t// Wrap the call to getNvidiaConfig() in a closure.\n\t\t\tvar cfg *nvidiaConfig\n\t\t\tgetConfig := func() {\n\t\t\t\thookCfg := tc.hookConfig\n\t\t\t\tif hookCfg == nil {\n\t\t\t\t\tdefaultConfig, _ := config.GetDefault()\n\t\t\t\t\thookCfg = &hookConfig{Config: defaultConfig}\n\t\t\t\t}\n\t\t\t\tcfg = hookCfg.getNvidiaConfig(image, tc.privileged)\n\t\t\t}\n\n\t\t\t// For any tests that are expected to panic, make sure they do.\n\t\t\tif tc.expectedPanic {\n\t\t\t\trequire.Panics(t, getConfig)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// For all other tests, just grab the config\n\t\t\tgetConfig()\n\n\t\t\t// And start comparing the test results to the expected results.\n\t\t\tif tc.expectedConfig == nil {\n\t\t\t\trequire.Nil(t, cfg, tc.description)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\trequire.NotNil(t, cfg, tc.description)\n\n\t\t\trequire.Equal(t, tc.expectedConfig.Devices, cfg.Devices)\n\t\t\trequire.Equal(t, tc.expectedConfig.MigConfigDevices, cfg.MigConfigDevices)\n\t\t\trequire.Equal(t, tc.expectedConfig.MigMonitorDevices, cfg.MigMonitorDevices)\n\t\t\trequire.Equal(t, tc.expectedConfig.DriverCapabilities, cfg.DriverCapabilities)\n\n\t\t\trequire.ElementsMatch(t, tc.expectedConfig.Requirements, cfg.Requirements)\n\t\t})\n\t}\n}\n\nfunc TestGetDriverCapabilities(t *testing.T) {\n\n\tsupportedCapabilities := \"compute,display,utility,video\"\n\n\ttestCases := []struct {\n\t\tdescription           string\n\t\tenv                   map[string]string\n\t\tlegacyImage           bool\n\t\tsupportedCapabilities string\n\t\texpectedPanic         bool\n\t\texpectedCapabilities  string\n\t}{\n\t\t{\n\t\t\tdescription: \"Env is set for legacy image\",\n\t\t\tenv: map[string]string{\n\t\t\t\timage.EnvVarNvidiaDriverCapabilities: \"display,video\",\n\t\t\t},\n\t\t\tlegacyImage:           true,\n\t\t\tsupportedCapabilities: supportedCapabilities,\n\t\t\texpectedCapabilities:  \"display,video\",\n\t\t},\n\t\t{\n\t\t\tdescription: \"Env is all for legacy image\",\n\t\t\tenv: map[string]string{\n\t\t\t\timage.EnvVarNvidiaDriverCapabilities: \"all\",\n\t\t\t},\n\t\t\tlegacyImage:           true,\n\t\t\tsupportedCapabilities: supportedCapabilities,\n\t\t\texpectedCapabilities:  supportedCapabilities,\n\t\t},\n\t\t{\n\t\t\tdescription: \"Env is empty for legacy image\",\n\t\t\tenv: map[string]string{\n\t\t\t\timage.EnvVarNvidiaDriverCapabilities: \"\",\n\t\t\t},\n\t\t\tlegacyImage:           true,\n\t\t\tsupportedCapabilities: supportedCapabilities,\n\t\t\texpectedCapabilities:  image.DefaultDriverCapabilities.String(),\n\t\t},\n\t\t{\n\t\t\tdescription:           \"Env unset for legacy image is 'all'\",\n\t\t\tenv:                   map[string]string{},\n\t\t\tlegacyImage:           true,\n\t\t\tsupportedCapabilities: supportedCapabilities,\n\t\t\texpectedCapabilities:  supportedCapabilities,\n\t\t},\n\t\t{\n\t\t\tdescription: \"Env is set for modern image\",\n\t\t\tenv: map[string]string{\n\t\t\t\timage.EnvVarNvidiaDriverCapabilities: \"display,video\",\n\t\t\t},\n\t\t\tlegacyImage:           false,\n\t\t\tsupportedCapabilities: supportedCapabilities,\n\t\t\texpectedCapabilities:  \"display,video\",\n\t\t},\n\t\t{\n\t\t\tdescription:           \"Env unset for modern image is default\",\n\t\t\tenv:                   map[string]string{},\n\t\t\tlegacyImage:           false,\n\t\t\tsupportedCapabilities: supportedCapabilities,\n\t\t\texpectedCapabilities:  image.DefaultDriverCapabilities.String(),\n\t\t},\n\t\t{\n\t\t\tdescription: \"Env is all for modern image\",\n\t\t\tenv: map[string]string{\n\t\t\t\timage.EnvVarNvidiaDriverCapabilities: \"all\",\n\t\t\t},\n\t\t\tlegacyImage:           false,\n\t\t\tsupportedCapabilities: supportedCapabilities,\n\t\t\texpectedCapabilities:  supportedCapabilities,\n\t\t},\n\t\t{\n\t\t\tdescription: \"Env is empty for modern image\",\n\t\t\tenv: map[string]string{\n\t\t\t\timage.EnvVarNvidiaDriverCapabilities: \"\",\n\t\t\t},\n\t\t\tlegacyImage:           false,\n\t\t\tsupportedCapabilities: supportedCapabilities,\n\t\t\texpectedCapabilities:  image.DefaultDriverCapabilities.String(),\n\t\t},\n\t\t{\n\t\t\tdescription: \"Invalid capabilities panic\",\n\t\t\tenv: map[string]string{\n\t\t\t\timage.EnvVarNvidiaDriverCapabilities: \"compute,utility\",\n\t\t\t},\n\t\t\tsupportedCapabilities: \"not-compute,not-utility\",\n\t\t\texpectedPanic:         true,\n\t\t},\n\t\t{\n\t\t\tdescription:           \"Default is restricted for modern image\",\n\t\t\tlegacyImage:           false,\n\t\t\tsupportedCapabilities: \"compute\",\n\t\t\texpectedCapabilities:  \"compute\",\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\tvar capabilities string\n\n\t\t\tc := hookConfig{\n\t\t\t\tConfig: &config.Config{\n\t\t\t\t\tSupportedDriverCapabilities: tc.supportedCapabilities,\n\t\t\t\t},\n\t\t\t}\n\n\t\t\timage, _ := image.New(\n\t\t\t\timage.WithEnvMap(tc.env),\n\t\t\t)\n\t\t\tgetDriverCapabilities := func() {\n\t\t\t\tcapabilities = c.getDriverCapabilities(image, tc.legacyImage).String()\n\t\t\t}\n\n\t\t\tif tc.expectedPanic {\n\t\t\t\trequire.Panics(t, getDriverCapabilities)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tgetDriverCapabilities()\n\t\t\trequire.EqualValues(t, tc.expectedCapabilities, capabilities)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "cmd/nvidia-container-runtime-hook/hook_config.go",
    "content": "package main\n\nimport (\n\t\"fmt\"\n\t\"log\"\n\t\"os\"\n\t\"reflect\"\n\t\"sync\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/api/config/v1\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/config/image\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/info\"\n)\n\n// hookConfig wraps the toolkit config.\n// This allows for functions to be defined on the local type.\ntype hookConfig struct {\n\tsync.Mutex\n\t*config.Config\n\tcontainerConfig *containerConfig\n}\n\n// loadConfig loads the required paths for the hook config.\nfunc loadConfig() (*config.Config, error) {\n\tconfigFilePath, required := getConfigFilePath()\n\tcfg, err := config.New(\n\t\tconfig.WithConfigFile(configFilePath),\n\t\tconfig.WithRequired(true),\n\t)\n\tif err == nil {\n\t\treturn cfg.Config()\n\t} else if os.IsNotExist(err) && !required {\n\t\treturn config.GetDefault()\n\t}\n\treturn nil, fmt.Errorf(\"couldn't open required configuration file: %v\", err)\n}\n\nfunc getConfigFilePath() (string, bool) {\n\tif configFromFlag := *configflag; configFromFlag != \"\" {\n\t\treturn configFromFlag, true\n\t}\n\tif configFromEnvvar := os.Getenv(config.FilePathOverrideEnvVar); configFromEnvvar != \"\" {\n\t\treturn configFromEnvvar, true\n\t}\n\treturn config.GetConfigFilePath(), false\n}\n\nfunc getHookConfig() (*hookConfig, error) {\n\tcfg, err := loadConfig()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to load config: %v\", err)\n\t}\n\tconfig := &hookConfig{Config: cfg}\n\n\tallSupportedDriverCapabilities := image.SupportedDriverCapabilities\n\tif config.SupportedDriverCapabilities == \"all\" {\n\t\tconfig.SupportedDriverCapabilities = allSupportedDriverCapabilities.String()\n\t}\n\tconfiguredCapabilities := image.NewDriverCapabilities(config.SupportedDriverCapabilities)\n\t// We ensure that the configured value is a subset of all supported capabilities\n\tif !allSupportedDriverCapabilities.IsSuperset(configuredCapabilities) {\n\t\tconfigName := config.getConfigOption(\"SupportedDriverCapabilities\")\n\t\tlog.Panicf(\"Invalid value for config option '%v'; %v (supported: %v)\\n\", configName, config.SupportedDriverCapabilities, allSupportedDriverCapabilities.String())\n\t}\n\n\treturn config, nil\n}\n\n// getConfigOption returns the toml config option associated with the\n// specified struct field.\nfunc (c *hookConfig) getConfigOption(fieldName string) string {\n\tt := reflect.TypeOf(&c)\n\tf, ok := t.FieldByName(fieldName)\n\tif !ok {\n\t\treturn fieldName\n\t}\n\tv, ok := f.Tag.Lookup(\"toml\")\n\tif !ok {\n\t\treturn fieldName\n\t}\n\treturn v\n}\n\n// getSwarmResource returns the swarm resource envvars for the config.\nfunc (c *hookConfig) getSwarmResource() string {\n\tif c == nil {\n\t\treturn \"\"\n\t}\n\treturn c.SwarmResource\n}\n\n// nvidiaContainerCliCUDACompatModeFlags returns required --cuda-compat-mode\n// flag(s) depending on the hook and runtime configurations.\nfunc (c *hookConfig) nvidiaContainerCliCUDACompatModeFlags() []string {\n\tvar flag string\n\tswitch c.NVIDIAContainerRuntimeConfig.Modes.Legacy.CUDACompatMode {\n\tcase config.CUDACompatModeLdconfig:\n\t\tflag = \"--cuda-compat-mode=ldconfig\"\n\tcase config.CUDACompatModeMount:\n\t\tflag = \"--cuda-compat-mode=mount\"\n\tcase config.CUDACompatModeDisabled, config.CUDACompatModeHook:\n\t\tflag = \"--cuda-compat-mode=disabled\"\n\tdefault:\n\t\tif !c.Features.AllowCUDACompatLibsFromContainer.IsEnabled() {\n\t\t\tflag = \"--cuda-compat-mode=disabled\"\n\t\t}\n\t}\n\n\tif flag == \"\" {\n\t\treturn nil\n\t}\n\treturn []string{flag}\n}\n\nfunc (c *hookConfig) assertModeIsLegacy() error {\n\tif c.NVIDIAContainerRuntimeHookConfig.SkipModeDetection {\n\t\treturn nil\n\t}\n\n\tmr := info.NewRuntimeModeResolver(\n\t\tinfo.WithLogger(&logInterceptor{}),\n\t\tinfo.WithImage(&c.containerConfig.Image),\n\t\tinfo.WithDefaultMode(info.LegacyRuntimeMode),\n\t)\n\n\tmode := mr.ResolveRuntimeMode(c.NVIDIAContainerRuntimeConfig.Mode)\n\tif mode == \"legacy\" {\n\t\treturn nil\n\t}\n\treturn fmt.Errorf(\"invoking the NVIDIA Container Runtime Hook directly (e.g. specifying the docker --gpus flag) is not supported. Please use the NVIDIA Container Runtime (e.g. specify the --runtime=nvidia flag) instead\")\n}\n"
  },
  {
    "path": "cmd/nvidia-container-runtime-hook/hook_config_test.go",
    "content": "/**\n# Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage main\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/config/image\"\n)\n\nfunc TestGetHookConfig(t *testing.T) {\n\ttestCases := []struct {\n\t\tlines                      []string\n\t\texpectedPanic              bool\n\t\texpectedDriverCapabilities string\n\t}{\n\t\t{\n\t\t\texpectedDriverCapabilities: image.SupportedDriverCapabilities.String(),\n\t\t},\n\t\t{\n\t\t\tlines: []string{\n\t\t\t\t\"supported-driver-capabilities = \\\"all\\\"\",\n\t\t\t},\n\t\t\texpectedDriverCapabilities: image.SupportedDriverCapabilities.String(),\n\t\t},\n\t\t{\n\t\t\tlines: []string{\n\t\t\t\t\"supported-driver-capabilities = \\\"compute,utility,not-compute\\\"\",\n\t\t\t},\n\t\t\texpectedPanic: true,\n\t\t},\n\t\t{\n\t\t\tlines:                      []string{},\n\t\t\texpectedDriverCapabilities: image.SupportedDriverCapabilities.String(),\n\t\t},\n\t\t{\n\t\t\tlines: []string{\n\t\t\t\t\"supported-driver-capabilities = \\\"\\\"\",\n\t\t\t},\n\t\t\texpectedDriverCapabilities: \"\",\n\t\t},\n\t\t{\n\t\t\tlines: []string{\n\t\t\t\t\"supported-driver-capabilities = \\\"compute,utility\\\"\",\n\t\t\t},\n\t\t\texpectedDriverCapabilities: \"compute,utility\",\n\t\t},\n\t}\n\n\tfor i, tc := range testCases {\n\t\tt.Run(fmt.Sprintf(\"test case %d\", i), func(t *testing.T) {\n\t\t\tvar filename string\n\t\t\tdefer func() {\n\t\t\t\tif len(filename) > 0 {\n\t\t\t\t\tos.Remove(filename)\n\t\t\t\t}\n\t\t\t\tconfigflag = nil\n\t\t\t}()\n\n\t\t\tif tc.lines != nil {\n\t\t\t\tconfigFile, err := os.CreateTemp(\"\", \"*.toml\")\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\tdefer configFile.Close()\n\n\t\t\t\tfilename = configFile.Name()\n\t\t\t\tconfigflag = &filename\n\n\t\t\t\tfor _, line := range tc.lines {\n\t\t\t\t\t_, err := fmt.Fprintf(configFile, \"%s\\n\", line)\n\t\t\t\t\trequire.NoError(t, err)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar cfg *hookConfig\n\t\t\tgetHookConfig := func() {\n\t\t\t\tc, _ := getHookConfig()\n\t\t\t\tcfg = c\n\t\t\t}\n\n\t\t\tif tc.expectedPanic {\n\t\t\t\trequire.Panics(t, getHookConfig)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tgetHookConfig()\n\n\t\t\trequire.EqualValues(t, tc.expectedDriverCapabilities, cfg.SupportedDriverCapabilities)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "cmd/nvidia-container-runtime-hook/hook_test.go",
    "content": "package main\n\nimport (\n\t\"encoding/json\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestIsPrivileged(t *testing.T) {\n\tvar tests = []struct {\n\t\tspec     string\n\t\texpected bool\n\t}{\n\t\t{\n\t\t\t`\n\t\t\t{\n\t\t\t\t\"ociVersion\": \"1.0.0\",\n\t\t\t\t\"process\": {\n\t\t\t\t\t\"capabilities\": {\n\t\t\t\t\t\t\"bounding\": [ \"CAP_SYS_ADMIN\" ]\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t`,\n\t\t\ttrue,\n\t\t},\n\t\t{\n\t\t\t`\n\t\t\t{\n\t\t\t\t\"ociVersion\": \"1.0.0\",\n\t\t\t\t\"process\": {\n\t\t\t\t\t\"capabilities\": {\n\t\t\t\t\t\t\"bounding\": [ \"CAP_SYS_OTHER\" ]\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t`,\n\t\t\tfalse,\n\t\t},\n\t\t{\n\t\t\t`\n\t\t\t{\n\t\t\t\t\"ociVersion\": \"1.0.0\",\n\t\t\t\t\"process\": {}\n\t\t\t}\n\t\t\t`,\n\t\t\tfalse,\n\t\t},\n\t\t{\n\t\t\t`\n\t\t\t{\n\t\t\t\t\"ociVersion\": \"1.0.0-rc2-dev\",\n\t\t\t\t\"process\": {\n\t\t\t\t\t\"capabilities\": [ \"CAP_SYS_ADMIN\" ]\n\t\t\t\t}\n\t\t\t}\n\t\t\t`,\n\t\t\ttrue,\n\t\t},\n\t\t{\n\t\t\t`\n\t\t\t{\n\t\t\t\t\"ociVersion\": \"1.0.0-rc2-dev\",\n\t\t\t\t\"process\": {\n\t\t\t\t\t\"capabilities\": [ \"CAP_SYS_OTHER\" ]\n\t\t\t\t}\n\t\t\t}\n\t\t\t`,\n\t\t\tfalse,\n\t\t},\n\t\t{\n\t\t\t`\n\t\t\t{\n\t\t\t\t\"ociVersion\": \"1.0.0-rc2-dev\",\n\t\t\t\t\"process\": {}\n\t\t\t}\n\t\t\t`,\n\t\t\tfalse,\n\t\t},\n\t}\n\tfor i, tc := range tests {\n\t\tvar spec Spec\n\t\t_ = json.Unmarshal([]byte(tc.spec), &spec)\n\t\tprivileged := isPrivileged(&spec)\n\n\t\trequire.Equal(t, tc.expected, privileged, \"%d: %v\", i, tc)\n\t}\n}\n"
  },
  {
    "path": "cmd/nvidia-container-runtime-hook/main.go",
    "content": "package main\n\nimport (\n\t\"flag\"\n\t\"fmt\"\n\t\"log\"\n\t\"os\"\n\t\"os/exec\"\n\t\"path/filepath\"\n\t\"runtime\"\n\t\"runtime/debug\"\n\t\"strconv\"\n\t\"strings\"\n\t\"syscall\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/api/config/v1\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/info\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/lookup\"\n)\n\nvar (\n\tdebugflag   = flag.Bool(\"debug\", false, \"enable debug output\")\n\tversionflag = flag.Bool(\"version\", false, \"enable version output\")\n\tconfigflag  = flag.String(\"config\", \"\", \"configuration file\")\n)\n\nfunc exit() {\n\tif err := recover(); err != nil {\n\t\tif _, ok := err.(runtime.Error); ok {\n\t\t\tlog.Println(err)\n\t\t}\n\t\tif *debugflag {\n\t\t\tlog.Printf(\"%s\", debug.Stack())\n\t\t}\n\t\tos.Exit(1)\n\t}\n\tos.Exit(0)\n}\n\nfunc getCLIPath(config config.ContainerCLIConfig) string {\n\tif config.Path != \"\" {\n\t\treturn config.Path\n\t}\n\n\tif err := os.Setenv(\"PATH\", lookup.GetPath(config.Root)); err != nil {\n\t\tlog.Panicln(\"couldn't set PATH variable:\", err)\n\t}\n\n\tpath, err := exec.LookPath(\"nvidia-container-cli\")\n\tif err != nil {\n\t\tlog.Panicf(\"couldn't find binary nvidia-container-cli in PATH: %v\", err)\n\t}\n\treturn path\n}\n\n// getRootfsPath returns an absolute path. We don't need to resolve symlinks for now.\nfunc getRootfsPath(config *containerConfig) string {\n\trootfs, err := filepath.Abs(config.Rootfs)\n\tif err != nil {\n\t\tlog.Panicln(err)\n\t}\n\treturn rootfs\n}\n\nfunc doPrestart() {\n\tvar err error\n\n\tdefer exit()\n\tlog.SetFlags(0)\n\n\thook, err := getHookConfig()\n\tif err != nil || hook == nil {\n\t\tlog.Panicln(\"error getting hook config:\", err)\n\t}\n\tcli := hook.NVIDIAContainerCLIConfig\n\n\tcontainer := hook.getContainerConfig()\n\tnvidia := container.Nvidia\n\tif nvidia == nil {\n\t\t// Not a GPU container, nothing to do.\n\t\treturn\n\t}\n\n\tif err := hook.assertModeIsLegacy(); err != nil {\n\t\tlog.Panicf(\"%v\", err)\n\t}\n\n\trootfs := getRootfsPath(container)\n\n\targs := []string{getCLIPath(cli)}\n\tif cli.Root != \"\" {\n\t\targs = append(args, fmt.Sprintf(\"--root=%s\", cli.Root))\n\t}\n\tif cli.LoadKmods {\n\t\targs = append(args, \"--load-kmods\")\n\t}\n\tif hook.Features.DisableImexChannelCreation.IsEnabled() {\n\t\targs = append(args, \"--no-create-imex-channels\")\n\t}\n\tif cli.NoPivot {\n\t\targs = append(args, \"--no-pivot\")\n\t}\n\tif *debugflag {\n\t\targs = append(args, \"--debug=/dev/stderr\")\n\t} else if cli.Debug != \"\" {\n\t\targs = append(args, fmt.Sprintf(\"--debug=%s\", cli.Debug))\n\t}\n\tif cli.Ldcache != \"\" {\n\t\targs = append(args, fmt.Sprintf(\"--ldcache=%s\", cli.Ldcache))\n\t}\n\tif cli.User != \"\" {\n\t\targs = append(args, fmt.Sprintf(\"--user=%s\", cli.User))\n\t}\n\targs = append(args, \"configure\")\n\n\targs = append(args, hook.nvidiaContainerCliCUDACompatModeFlags()...)\n\n\tif ldconfigPath := cli.NormalizeLDConfigPath(); ldconfigPath != \"\" {\n\t\targs = append(args, fmt.Sprintf(\"--ldconfig=%s\", ldconfigPath))\n\t}\n\tif cli.NoCgroups {\n\t\targs = append(args, \"--no-cgroups\")\n\t}\n\tif devicesString := strings.Join(nvidia.Devices, \",\"); len(devicesString) > 0 {\n\t\targs = append(args, fmt.Sprintf(\"--device=%s\", devicesString))\n\t}\n\tif len(nvidia.MigConfigDevices) > 0 {\n\t\targs = append(args, fmt.Sprintf(\"--mig-config=%s\", nvidia.MigConfigDevices))\n\t}\n\tif len(nvidia.MigMonitorDevices) > 0 {\n\t\targs = append(args, fmt.Sprintf(\"--mig-monitor=%s\", nvidia.MigMonitorDevices))\n\t}\n\tif imexString := strings.Join(nvidia.ImexChannels, \",\"); len(imexString) > 0 {\n\t\targs = append(args, fmt.Sprintf(\"--imex-channel=%s\", imexString))\n\t}\n\n\tfor _, cap := range strings.Split(nvidia.DriverCapabilities, \",\") {\n\t\tif len(cap) == 0 {\n\t\t\tbreak\n\t\t}\n\t\targs = append(args, capabilityToCLI(cap))\n\t}\n\n\tfor _, req := range nvidia.Requirements {\n\t\targs = append(args, fmt.Sprintf(\"--require=%s\", req))\n\t}\n\n\targs = append(args, fmt.Sprintf(\"--pid=%s\", strconv.FormatUint(uint64(container.Pid), 10)))\n\targs = append(args, rootfs)\n\n\tenv := append(os.Environ(), cli.Environment...)\n\t//nolint:gosec // TODO: Can we harden this so that there is less risk of command injection?\n\terr = syscall.Exec(args[0], args, env)\n\tlog.Panicln(\"exec failed:\", err)\n}\n\nfunc usage() {\n\tfmt.Fprintf(os.Stderr, \"Usage of nvidia-container-runtime-hook:\\n\")\n\tflag.PrintDefaults()\n\tfmt.Fprintf(os.Stderr, \"\\nCommands:\\n\")\n\tfmt.Fprintf(os.Stderr, \"  prestart\\n        run the prestart hook\\n\")\n\tfmt.Fprintf(os.Stderr, \"  poststart\\n        no-op\\n\")\n\tfmt.Fprintf(os.Stderr, \"  poststop\\n        no-op\\n\")\n}\n\nfunc main() {\n\tflag.Usage = usage\n\tflag.Parse()\n\n\tif *versionflag {\n\t\tfmt.Printf(\"%v version %v\\n\", \"NVIDIA Container Runtime Hook\", info.GetVersionString())\n\t\treturn\n\t}\n\n\targs := flag.Args()\n\tif len(args) == 0 {\n\t\tflag.Usage()\n\t\tos.Exit(2)\n\t}\n\n\tswitch args[0] {\n\tcase \"prestart\":\n\t\tdoPrestart()\n\t\tos.Exit(0)\n\tcase \"poststart\":\n\t\tfallthrough\n\tcase \"poststop\":\n\t\tos.Exit(0)\n\tdefault:\n\t\tflag.Usage()\n\t\tos.Exit(2)\n\t}\n}\n\n// logInterceptor implements the logger.Interface to allow for logging from executable.\ntype logInterceptor struct {\n\tlogger.NullLogger\n}\n\nfunc (l *logInterceptor) Infof(format string, args ...interface{}) {\n\tlog.Printf(format, args...)\n}\n"
  },
  {
    "path": "cmd/nvidia-container-runtime.cdi/main.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage main\n\nimport (\n\t\"os\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/runtime\"\n)\n\nfunc main() {\n\trt := runtime.New(\n\t\truntime.WithModeOverride(\"cdi\"),\n\t)\n\n\terr := rt.Run(os.Args)\n\tif err != nil {\n\t\tos.Exit(1)\n\t}\n}\n"
  },
  {
    "path": "cmd/nvidia-container-runtime.legacy/main.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage main\n\nimport (\n\t\"os\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/runtime\"\n)\n\nfunc main() {\n\trt := runtime.New(\n\t\truntime.WithModeOverride(\"legacy\"),\n\t)\n\n\terr := rt.Run(os.Args)\n\tif err != nil {\n\t\tos.Exit(1)\n\t}\n}\n"
  },
  {
    "path": "cmd/nvidia-ctk/README.md",
    "content": "# NVIDIA Container Toolkit CLI\n\nThe NVIDIA Container Toolkit CLI `nvidia-ctk` provides a number of utilities that are useful for working with the NVIDIA Container Toolkit.\n\n## Functionality\n\n### Configure runtimes\n\nThe `runtime` command of the `nvidia-ctk` CLI provides a set of utilities to related to the configuration\nand management of supported container engines.\n\nFor example, running the following command:\n```bash\nnvidia-ctk runtime configure --set-as-default\n```\nwill ensure that the NVIDIA Container Runtime is added as the default runtime to the default container\nengine.\n\n## Configure the NVIDIA Container Toolkit\n\nThe `config` command of the `nvidia-ctk` CLI allows a user to display and manipulate the NVIDIA Container Toolkit\nconfiguration.\n\nFor example, running the following command:\n```bash\nnvidia-ctk config default\n```\nwill display the default config for the detected platform.\n\nWhereas\n```bash\nnvidia-ctk config\n```\nwill display the effective NVIDIA Container Toolkit config using the configured config file, and running:\n\nIndividual config options can be set by specifying these are key-value pairs to the `--set` argument:\n\n```bash\nnvidia-ctk config --set nvidia-container-cli.no-cgroups=true\n```\n\nBy default, all commands output to `STDOUT`, but specifying the `--output` flag writes the config to the specified file.\n\n### Generate CDI specifications\n\nThe [Container Device Interface (CDI)](https://tags.cncf.io/container-device-interface) provides\na vendor-agnostic mechanism to make arbitrary devices accessible in containerized environments. To allow NVIDIA devices to be\nused in these environments, the NVIDIA Container Toolkit CLI includes functionality to generate a CDI specification for the\navailable NVIDIA GPUs in a system.\n\nIn order to generate the CDI specification for the available devices, run the following command:\\\n```bash\nnvidia-ctk cdi generate\n```\n\nThe default is to print the specification to STDOUT and a filename can be specified using the `--output` flag.\n\nThe specification will contain a device entries as follows (where applicable):\n* An `nvidia.com/gpu=gpu{INDEX}` device for each non-MIG-enabled full GPU in the system\n* An `nvidia.com/gpu=mig{GPU_INDEX}:{MIG_INDEX}` device for each MIG-device in the system\n* A special device called `nvidia.com/gpu=all` which represents all available devices.\n\nFor example, to generate the CDI specification in the default location where CDI-enabled tools such as `podman`, `containerd`, `cri-o`, or the NVIDIA Container Runtime can be configured to load it, the following command can be run:\n\n```bash\nsudo nvidia-ctk cdi generate --output=/etc/cdi/nvidia.yaml\n```\n(Note that `sudo` is used to ensure the correct permissions to write to the `/etc/cdi` folder)\n\nWith the specification generated, a GPU can be requested by specifying the fully-qualified CDI device name. With `podman` as an exmaple:\n```bash\npodman run --rm -ti --device=nvidia.com/gpu=gpu0 ubuntu nvidia-smi -L\n```\n"
  },
  {
    "path": "cmd/nvidia-ctk/cdi/cdi.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage cdi\n\nimport (\n\t\"github.com/urfave/cli/v3\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk/cdi/generate\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk/cdi/list\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk/cdi/transform\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n)\n\ntype command struct {\n\tlogger         logger.Interface\n\tconfigFilePath *string\n}\n\n// NewCommand constructs a cdi command with the specified logger\nfunc NewCommand(logger logger.Interface, configFilePath *string) *cli.Command {\n\tc := command{\n\t\tlogger:         logger,\n\t\tconfigFilePath: configFilePath,\n\t}\n\treturn c.build()\n}\n\n// build\nfunc (m command) build() *cli.Command {\n\t// Create the 'cdi' command\n\tcdi := cli.Command{\n\t\tName:  \"cdi\",\n\t\tUsage: \"Provide tools for interacting with Container Device Interface specifications\",\n\t\tCommands: []*cli.Command{\n\t\t\tgenerate.NewCommand(m.logger, m.configFilePath),\n\t\t\tlist.NewCommand(m.logger),\n\t\t\ttransform.NewCommand(m.logger),\n\t\t},\n\t}\n\n\treturn &cdi\n}\n"
  },
  {
    "path": "cmd/nvidia-ctk/cdi/generate/config.go",
    "content": "/**\n# Copyright (c) 2025, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage generate\n\nimport (\n\t\"fmt\"\n\t\"sync\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/api/config/v1\"\n\n\taltsrc \"github.com/urfave/cli-altsrc/v3\"\n\t\"github.com/urfave/cli/v3\"\n)\n\n// New sets the source for the config file path.\n// It uses a string pointer to the config file path option.\nfunc New(config *string) *configAsValueSource {\n\treturn &configAsValueSource{\n\t\tsource: altsrc.NewStringPtrSourcer(config),\n\t}\n}\n\n// configAsValueSource provides flag values from a TOML configuration file, acting as a factory for specific cli.ValueSource instances.\n// It uses an altsrc.Sourcer to find the configuration file path and loads it on demand.\ntype configAsValueSource struct {\n\tsync.Mutex\n\tsource altsrc.Sourcer\n\t*config.Toml\n}\n\n// ValueFrom returns a cli.ValueSource for the given key.\n// This can be used in the Sources chain for a cli.Flag.\nfunc (c *configAsValueSource) ValueFrom(key string) cli.ValueSource {\n\treturn &configValueLookup{\n\t\tkey:  key,\n\t\tfrom: c,\n\t}\n}\n\nfunc (c *configAsValueSource) Get(key string) interface{} {\n\tc.Lock()\n\tdefer c.Unlock()\n\n\tif c.Toml == nil {\n\t\tif err := c.loadFromConfig(); err != nil {\n\t\t\treturn nil\n\t\t}\n\t}\n\n\tif c.Toml == nil {\n\t\treturn nil\n\t}\n\n\treturn c.Toml.Get(key)\n}\n\n// loadFromConfig loads the config file if it has not already been loaded.\n// If the config file path is not specified, it uses the default config file path.\nfunc (c *configAsValueSource) loadFromConfig() error {\n\tif c.Toml != nil {\n\t\treturn nil\n\t}\n\n\tconfigFilePath := c.source.SourceURI()\n\tif configFilePath == \"\" {\n\t\tconfigFilePath = config.GetConfigFilePath()\n\t}\n\tconfigToml, err := config.New(\n\t\tconfig.WithConfigFile(configFilePath),\n\t)\n\tif err != nil {\n\t\treturn err\n\t}\n\tc.Toml = configToml\n\n\treturn nil\n}\n\n// configValueLookup is a cli.ValueSource that looks up values from a configAsValueSource.\ntype configValueLookup struct {\n\tkey  string\n\tfrom *configAsValueSource\n}\n\n// Lookup returns the value for the key from the config file.\nfunc (c *configValueLookup) Lookup() (string, bool) {\n\tif c == nil || c.from == nil {\n\t\treturn \"\", false\n\t}\n\tif value := c.from.Get(c.key); value != nil {\n\t\treturn fmt.Sprintf(\"%v\", value), true\n\t}\n\n\treturn \"\", false\n}\n\n// GoString returns a Go-syntax representation of the configuration source.\nfunc (c *configValueLookup) GoString() string {\n\treturn c.String()\n}\n\n// String returns a string representation of the configuration source.\nfunc (c *configValueLookup) String() string {\n\tif c.from == nil || c.from.source == nil {\n\t\treturn \"config file\"\n\t}\n\tconfigFile := c.from.source.SourceURI()\n\tif configFile == \"\" {\n\t\tconfigFile = config.GetConfigFilePath()\n\t}\n\tif configFile == \"\" {\n\t\treturn \"config file\"\n\t}\n\treturn fmt.Sprintf(\"config file %q\", configFile)\n}\n"
  },
  {
    "path": "cmd/nvidia-ctk/cdi/generate/generate.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage generate\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"slices\"\n\t\"strings\"\n\n\t\"github.com/urfave/cli/v3\"\n\n\tcdi \"tags.cncf.io/container-device-interface/pkg/parser\"\n\t\"tags.cncf.io/container-device-interface/specs-go\"\n\n\t\"github.com/NVIDIA/go-nvml/pkg/nvml\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/api/config/v1\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/platform-support/tegra/csv\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/nvcdi\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/nvcdi/spec\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/nvcdi/transform\"\n)\n\nconst (\n\tallDeviceName = \"all\"\n)\n\ntype command struct {\n\tlogger logger.Interface\n\n\tconfig *configAsValueSource\n}\n\ntype options struct {\n\toutput               string\n\tformat               string\n\tdeviceNameStrategies []string\n\tdriverRoot           string\n\tdevRoot              string\n\tnvidiaCDIHookPath    string\n\tldconfigPath         string\n\tmode                 string\n\tvendor               string\n\tclass                string\n\n\tconfigSearchPaths  []string\n\tlibrarySearchPaths []string\n\tdisabledHooks      []string\n\tenabledHooks       []string\n\n\tfeatureFlags []string\n\n\tcsv struct {\n\t\tfiles               []string\n\t\tignorePatterns      []string\n\t\tCompatContainerRoot string\n\t}\n\n\tnoAllDevice bool\n\tdeviceIDs   []string\n\n\t// the following are used for dependency injection during spec generation.\n\tnvmllib nvml.Interface\n}\n\n// NewCommand constructs a generate-cdi command with the specified logger\nfunc NewCommand(logger logger.Interface, configFilePath *string) *cli.Command {\n\tc := command{\n\t\tlogger: logger,\n\t\tconfig: New(configFilePath),\n\t}\n\treturn c.build()\n}\n\n// build creates the CLI command\nfunc (m command) build() *cli.Command {\n\topts := options{}\n\n\t// Create the 'generate-cdi' command\n\tc := cli.Command{\n\t\tName:                   \"generate\",\n\t\tUsage:                  \"Generate CDI specifications for use with CDI-enabled runtimes\",\n\t\tUseShortOptionHandling: true,\n\t\tEnableShellCompletion:  true,\n\t\tBefore: func(ctx context.Context, cmd *cli.Command) (context.Context, error) {\n\t\t\treturn ctx, m.validateFlags(cmd, &opts)\n\t\t},\n\t\tAction: func(ctx context.Context, cmd *cli.Command) error {\n\t\t\treturn m.run(&opts)\n\t\t},\n\t\tFlags: []cli.Flag{\n\t\t\t&cli.StringSliceFlag{\n\t\t\t\tName:        \"config-search-path\",\n\t\t\t\tUsage:       \"Specify the path to search for config files when discovering the entities that should be included in the CDI specification.\",\n\t\t\t\tDestination: &opts.configSearchPaths,\n\t\t\t\tSources:     cli.EnvVars(\"NVIDIA_CTK_CDI_GENERATE_CONFIG_SEARCH_PATHS\"),\n\t\t\t},\n\t\t\t&cli.StringFlag{\n\t\t\t\tName:        \"output\",\n\t\t\t\tUsage:       \"Specify the file to output the generated CDI specification to. If this is '' the specification is output to STDOUT\",\n\t\t\t\tDestination: &opts.output,\n\t\t\t\tSources:     cli.EnvVars(\"NVIDIA_CTK_CDI_OUTPUT_FILE_PATH\"),\n\t\t\t},\n\t\t\t&cli.StringFlag{\n\t\t\t\tName:        \"format\",\n\t\t\t\tUsage:       \"The output format for the generated spec [json | yaml]. This overrides the format defined by the output file extension (if specified).\",\n\t\t\t\tValue:       spec.FormatYAML,\n\t\t\t\tDestination: &opts.format,\n\t\t\t\tSources:     cli.EnvVars(\"NVIDIA_CTK_CDI_GENERATE_OUTPUT_FORMAT\"),\n\t\t\t},\n\t\t\t&cli.StringFlag{\n\t\t\t\tName:    \"mode\",\n\t\t\t\tAliases: []string{\"discovery-mode\"},\n\t\t\t\tUsage: \"The mode to use when discovering the available entities. \" +\n\t\t\t\t\t\"One of [\" + strings.Join(nvcdi.AllModes[string](), \" | \") + \"]. \" +\n\t\t\t\t\t\"If mode is set to 'auto' the mode will be determined based on the system configuration.\",\n\t\t\t\tValue:       string(nvcdi.ModeAuto),\n\t\t\t\tDestination: &opts.mode,\n\t\t\t\tSources: cli.NewValueSourceChain(\n\t\t\t\t\tcli.EnvVar(\"NVIDIA_CTK_CDI_GENERATE_MODE\"),\n\t\t\t\t),\n\t\t\t},\n\t\t\t&cli.StringFlag{\n\t\t\t\tName:        \"dev-root\",\n\t\t\t\tUsage:       \"Specify the root where `/dev` is located. If this is not specified, the driver-root is assumed.\",\n\t\t\t\tDestination: &opts.devRoot,\n\t\t\t\tSources:     cli.EnvVars(\"NVIDIA_CTK_DEV_ROOT\"),\n\t\t\t},\n\t\t\t&cli.StringSliceFlag{\n\t\t\t\tName:        \"device-name-strategy\",\n\t\t\t\tUsage:       \"Specify the strategy for generating device names. If this is specified multiple times, the devices will be duplicated for each strategy. One of [index | uuid | type-index]\",\n\t\t\t\tValue:       []string{nvcdi.DeviceNameStrategyIndex, nvcdi.DeviceNameStrategyUUID},\n\t\t\t\tDestination: &opts.deviceNameStrategies,\n\t\t\t\tSources:     cli.EnvVars(\"NVIDIA_CTK_CDI_GENERATE_DEVICE_NAME_STRATEGIES\"),\n\t\t\t},\n\t\t\t&cli.StringFlag{\n\t\t\t\tName:        \"driver-root\",\n\t\t\t\tUsage:       \"Specify the NVIDIA GPU driver root to use when discovering the entities that should be included in the CDI specification.\",\n\t\t\t\tDestination: &opts.driverRoot,\n\t\t\t\tSources: cli.NewValueSourceChain(\n\t\t\t\t\tcli.EnvVar(\"NVIDIA_CTK_DRIVER_ROOT\"),\n\t\t\t\t\tm.config.ValueFrom(\"nvidia-container-cli.root\"),\n\t\t\t\t),\n\t\t\t},\n\t\t\t&cli.StringSliceFlag{\n\t\t\t\tName:        \"library-search-path\",\n\t\t\t\tUsage:       \"Specify the path to search for libraries when discovering the entities that should be included in the CDI specification.\\n\\tNote: This option only applies to CSV mode.\",\n\t\t\t\tDestination: &opts.librarySearchPaths,\n\t\t\t\tSources:     cli.EnvVars(\"NVIDIA_CTK_CDI_GENERATE_LIBRARY_SEARCH_PATHS\"),\n\t\t\t},\n\t\t\t&cli.StringFlag{\n\t\t\t\tName:    \"nvidia-cdi-hook-path\",\n\t\t\t\tAliases: []string{\"nvidia-ctk-path\"},\n\t\t\t\tUsage: \"Specify the path to use for the nvidia-cdi-hook in the generated CDI specification. \" +\n\t\t\t\t\t\"If not specified, the PATH will be searched for `nvidia-cdi-hook`. \" +\n\t\t\t\t\t\"NOTE: That if this is specified as `nvidia-ctk`, the PATH will be searched for `nvidia-ctk` instead.\",\n\t\t\t\tDestination: &opts.nvidiaCDIHookPath,\n\t\t\t\tSources:     cli.EnvVars(\"NVIDIA_CTK_CDI_HOOK_PATH\"),\n\t\t\t},\n\t\t\t&cli.StringFlag{\n\t\t\t\tName:        \"ldconfig-path\",\n\t\t\t\tUsage:       \"Specify the path to use for ldconfig in the generated CDI specification\",\n\t\t\t\tDestination: &opts.ldconfigPath,\n\t\t\t\tSources: cli.NewValueSourceChain(\n\t\t\t\t\tcli.EnvVar(\"NVIDIA_CTK_CDI_GENERATE_LDCONFIG_PATH\"),\n\t\t\t\t),\n\t\t\t},\n\t\t\t&cli.StringFlag{\n\t\t\t\tName:        \"vendor\",\n\t\t\t\tAliases:     []string{\"cdi-vendor\"},\n\t\t\t\tUsage:       \"the vendor string to use for the generated CDI specification.\",\n\t\t\t\tValue:       \"nvidia.com\",\n\t\t\t\tDestination: &opts.vendor,\n\t\t\t\tSources:     cli.EnvVars(\"NVIDIA_CTK_CDI_GENERATE_VENDOR\"),\n\t\t\t},\n\t\t\t&cli.StringFlag{\n\t\t\t\tName:        \"class\",\n\t\t\t\tAliases:     []string{\"cdi-class\"},\n\t\t\t\tUsage:       \"the class string to use for the generated CDI specification.\",\n\t\t\t\tValue:       \"gpu\",\n\t\t\t\tDestination: &opts.class,\n\t\t\t\tSources:     cli.EnvVars(\"NVIDIA_CTK_CDI_GENERATE_CLASS\"),\n\t\t\t},\n\t\t\t&cli.StringSliceFlag{\n\t\t\t\tName:        \"csv.file\",\n\t\t\t\tUsage:       \"The path to the list of CSV files to use when generating the CDI specification in CSV mode.\",\n\t\t\t\tValue:       csv.DefaultFileList(),\n\t\t\t\tDestination: &opts.csv.files,\n\t\t\t\tSources:     cli.EnvVars(\"NVIDIA_CTK_CDI_GENERATE_CSV_FILES\"),\n\t\t\t},\n\t\t\t&cli.StringSliceFlag{\n\t\t\t\tName:        \"csv.ignore-pattern\",\n\t\t\t\tUsage:       \"specify a pattern the CSV mount specifications.\",\n\t\t\t\tDestination: &opts.csv.ignorePatterns,\n\t\t\t\tSources:     cli.EnvVars(\"NVIDIA_CTK_CDI_GENERATE_CSV_IGNORE_PATTERNS\"),\n\t\t\t},\n\t\t\t&cli.StringFlag{\n\t\t\t\tName:        \"csv.compat-container-root\",\n\t\t\t\tUsage:       \"specify the container folder to use for CUDA Forward Compatibility in non-standard containers\",\n\t\t\t\tDestination: &opts.csv.CompatContainerRoot,\n\t\t\t\tSources:     cli.EnvVars(\"NVIDIA_CTK_CDI_GENERATE_CSV_CONTAINER_COMPAT_ROOT\"),\n\t\t\t},\n\t\t\t&cli.StringSliceFlag{\n\t\t\t\tName:    \"disable-hook\",\n\t\t\t\tAliases: []string{\"disable-hooks\"},\n\t\t\t\tUsage: \"specify a specific hook to skip when generating CDI \" +\n\t\t\t\t\t\"specifications. This can be specified multiple times and the \" +\n\t\t\t\t\t\"special hook name 'all' can be used ensure that the generated \" +\n\t\t\t\t\t\"CDI specification does not include any hooks.\",\n\t\t\t\tDestination: &opts.disabledHooks,\n\t\t\t\tSources:     cli.EnvVars(\"NVIDIA_CTK_CDI_GENERATE_DISABLED_HOOKS\"),\n\t\t\t},\n\t\t\t&cli.StringSliceFlag{\n\t\t\t\tName:        \"enable-hook\",\n\t\t\t\tAliases:     []string{\"enable-hooks\"},\n\t\t\t\tUsage:       \"Explicitly enable a hook in the generated CDI specification. This overrides disabled hooks. This can be specified multiple times.\",\n\t\t\t\tDestination: &opts.enabledHooks,\n\t\t\t\tSources:     cli.EnvVars(\"NVIDIA_CTK_CDI_GENERATE_ENABLED_HOOKS\"),\n\t\t\t},\n\t\t\t&cli.StringSliceFlag{\n\t\t\t\tName:        \"feature-flag\",\n\t\t\t\tAliases:     []string{\"feature-flags\"},\n\t\t\t\tUsage:       \"specify feature flags for CDI spec generation\",\n\t\t\t\tDestination: &opts.featureFlags,\n\t\t\t\tSources:     cli.EnvVars(\"NVIDIA_CTK_CDI_GENERATE_FEATURE_FLAGS\"),\n\t\t\t},\n\t\t\t&cli.BoolFlag{\n\t\t\t\tName:        \"no-all-device\",\n\t\t\t\tUsage:       \"Don't generate an `all` device for the resultant spec\",\n\t\t\t\tDestination: &opts.noAllDevice,\n\t\t\t\tSources:     cli.EnvVars(\"NVIDIA_CTK_CDI_GENERATE_NO_ALL_DEVICE\"),\n\t\t\t},\n\t\t\t&cli.StringSliceFlag{\n\t\t\t\tName:        \"device-id\",\n\t\t\t\tAliases:     []string{\"device-ids\", \"device\", \"devices\"},\n\t\t\t\tUsage:       \"Restrict generation to the specified device identifiers\",\n\t\t\t\tValue:       []string{\"all\"},\n\t\t\t\tDestination: &opts.deviceIDs,\n\t\t\t\tSources:     cli.EnvVars(\"NVIDIA_CTK_CDI_GENERATE_DEVICE_IDS\"),\n\t\t\t},\n\t\t},\n\t}\n\n\treturn &c\n}\n\nfunc (m command) validateFlags(c *cli.Command, opts *options) error {\n\topts.format = strings.ToLower(opts.format)\n\tswitch opts.format {\n\tcase spec.FormatJSON:\n\tcase spec.FormatYAML:\n\tdefault:\n\t\treturn fmt.Errorf(\"invalid output format: %v\", opts.format)\n\t}\n\n\topts.mode = strings.ToLower(opts.mode)\n\tif !nvcdi.IsValidMode(opts.mode) {\n\t\treturn fmt.Errorf(\"invalid discovery mode: %v\", opts.mode)\n\t}\n\n\tfor _, strategy := range opts.deviceNameStrategies {\n\t\t_, err := nvcdi.NewDeviceNamer(strategy)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\topts.nvidiaCDIHookPath = config.ResolveNVIDIACDIHookPath(m.logger, opts.nvidiaCDIHookPath)\n\n\tif outputFileFormat := formatFromFilename(opts.output); outputFileFormat != \"\" {\n\t\tm.logger.Debugf(\"Inferred output format as %q from output file name\", outputFileFormat)\n\t\tif !c.IsSet(\"format\") {\n\t\t\topts.format = outputFileFormat\n\t\t} else if outputFileFormat != opts.format {\n\t\t\tm.logger.Warningf(\"Requested output format %q does not match format implied by output file name: %q\", opts.format, outputFileFormat)\n\t\t}\n\t}\n\n\tif err := cdi.ValidateVendorName(opts.vendor); err != nil {\n\t\treturn fmt.Errorf(\"invalid CDI vendor name: %v\", err)\n\t}\n\tif err := cdi.ValidateClassName(opts.class); err != nil {\n\t\treturn fmt.Errorf(\"invalid CDI class name: %v\", err)\n\t}\n\n\tfor _, hook := range opts.enabledHooks {\n\t\tif hook == \"all\" {\n\t\t\treturn fmt.Errorf(\"enabling all hooks is not supported\")\n\t\t}\n\t}\n\n\tif slices.Contains(opts.deviceIDs, \"none\") && !opts.noAllDevice {\n\t\tm.logger.Warningf(\"Disabling generation of 'all' device\")\n\t\topts.noAllDevice = true\n\t}\n\treturn nil\n}\n\nfunc (m command) run(opts *options) error {\n\tspecs, err := m.generateSpecs(opts)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to generate CDI spec: %v\", err)\n\t}\n\n\tvar errs error\n\tfor _, spec := range specs {\n\t\terrs = errors.Join(errs, spec.Save(opts.output))\n\t\t// We query the raw spec version after calling spec.Save since this may\n\t\t// update the spec version to the minimum required version.\n\t\tm.logger.Infof(\"Generated CDI spec with version %v\", spec.Raw().Version)\n\t}\n\n\treturn errs\n}\n\nfunc formatFromFilename(filename string) string {\n\text := filepath.Ext(filename)\n\tswitch strings.ToLower(ext) {\n\tcase \".json\":\n\t\treturn spec.FormatJSON\n\tcase \".yaml\", \".yml\":\n\t\treturn spec.FormatYAML\n\t}\n\n\treturn \"\"\n}\n\ntype generatedSpecs struct {\n\tspec.Interface\n\tfilenameInfix string\n}\n\nfunc (g *generatedSpecs) Save(filename string) error {\n\tfilename = g.updateFilename(filename)\n\n\tif filename == \"\" {\n\t\t_, err := g.WriteTo(os.Stdout)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"failed to write CDI spec to STDOUT: %v\", err)\n\t\t}\n\t\treturn nil\n\t}\n\n\treturn g.Interface.Save(filename)\n}\n\nfunc (g generatedSpecs) updateFilename(filename string) string {\n\tif g.filenameInfix == \"\" || filename == \"\" {\n\t\treturn filename\n\t}\n\text := filepath.Ext(filepath.Base(filename))\n\treturn strings.TrimSuffix(filename, ext) + g.filenameInfix + ext\n}\n\nfunc (m command) generateSpecs(opts *options) ([]generatedSpecs, error) {\n\tvar deviceNamers []nvcdi.DeviceNamer\n\tfor _, strategy := range opts.deviceNameStrategies {\n\t\tdeviceNamer, err := nvcdi.NewDeviceNamer(strategy)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed to create device namer: %v\", err)\n\t\t}\n\t\tdeviceNamers = append(deviceNamers, deviceNamer)\n\t}\n\n\tcdiOptions := []nvcdi.Option{\n\t\tnvcdi.WithLogger(m.logger),\n\t\tnvcdi.WithDriverRoot(opts.driverRoot),\n\t\tnvcdi.WithDevRoot(opts.devRoot),\n\t\tnvcdi.WithNVIDIACDIHookPath(opts.nvidiaCDIHookPath),\n\t\tnvcdi.WithLdconfigPath(opts.ldconfigPath),\n\t\tnvcdi.WithDeviceNamers(deviceNamers...),\n\t\tnvcdi.WithMode(opts.mode),\n\t\tnvcdi.WithConfigSearchPaths(opts.configSearchPaths),\n\t\tnvcdi.WithLibrarySearchPaths(opts.librarySearchPaths),\n\t\tnvcdi.WithCSVFiles(opts.csv.files),\n\t\tnvcdi.WithCSVIgnorePatterns(opts.csv.ignorePatterns),\n\t\tnvcdi.WithCSVCompatContainerRoot(opts.csv.CompatContainerRoot),\n\t\tnvcdi.WithDisabledHooks(opts.disabledHooks...),\n\t\tnvcdi.WithEnabledHooks(opts.enabledHooks...),\n\t\tnvcdi.WithFeatureFlags(opts.featureFlags...),\n\t\t// We set the following to allow for dependency injection:\n\t\tnvcdi.WithNvmlLib(opts.nvmllib),\n\t}\n\n\tcdilib, err := nvcdi.New(cdiOptions...)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to create CDI library: %v\", err)\n\t}\n\n\tallDeviceSpecs, err := cdilib.GetDeviceSpecsByID(opts.deviceIDs...)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to create device CDI specs: %v\", err)\n\t}\n\n\tcommonEdits, err := cdilib.GetCommonEdits()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to create edits common for entities: %v\", err)\n\t}\n\n\tcommonSpecOptions := []spec.Option{\n\t\tspec.WithVendor(opts.vendor),\n\t\tspec.WithEdits(*commonEdits.ContainerEdits),\n\t\tspec.WithFormat(opts.format),\n\t\tspec.WithPermissions(0644),\n\t}\n\n\tif !opts.noAllDevice {\n\t\tcommonSpecOptions = append(commonSpecOptions,\n\t\t\tspec.WithMergedDeviceOptions(\n\t\t\t\ttransform.WithName(allDeviceName),\n\t\t\t\ttransform.WithSkipIfExists(true),\n\t\t\t),\n\t\t)\n\t}\n\n\tfullSpec, err := spec.New(\n\t\tappend(commonSpecOptions,\n\t\t\tspec.WithClass(opts.class),\n\t\t\tspec.WithDeviceSpecs(allDeviceSpecs),\n\t\t)...,\n\t)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tvar allSpecs []generatedSpecs\n\n\tallSpecs = append(allSpecs, generatedSpecs{Interface: fullSpec, filenameInfix: \"\"})\n\n\tdeviceSpecsByDeviceCoherence := (deviceSpecs)(allDeviceSpecs).splitOnAnnotation(\"gpu.nvidia.com/coherent\")\n\n\tif coherentDeviceSpecs := deviceSpecsByDeviceCoherence[\"gpu.nvidia.com/coherent=true\"]; len(coherentDeviceSpecs) > 0 {\n\t\tinfix := \".coherent\"\n\t\tcoherentSpecs, err := spec.New(\n\t\t\tappend(commonSpecOptions,\n\t\t\t\tspec.WithClass(opts.class+infix),\n\t\t\t\tspec.WithDeviceSpecs(coherentDeviceSpecs),\n\t\t\t)...,\n\t\t)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tallSpecs = append(allSpecs, generatedSpecs{Interface: coherentSpecs, filenameInfix: infix})\n\t}\n\n\tif noncoherentDeviceSpecs := deviceSpecsByDeviceCoherence[\"gpu.nvidia.com/coherent=false\"]; len(noncoherentDeviceSpecs) > 0 {\n\t\tinfix := \".noncoherent\"\n\t\tnoncoherentSpecs, err := spec.New(\n\t\t\tappend(commonSpecOptions,\n\t\t\t\tspec.WithClass(opts.class+infix),\n\t\t\t\tspec.WithDeviceSpecs(noncoherentDeviceSpecs),\n\t\t\t)...,\n\t\t)\n\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tallSpecs = append(allSpecs, generatedSpecs{Interface: noncoherentSpecs, filenameInfix: infix})\n\t}\n\n\treturn allSpecs, nil\n}\n\ntype deviceSpecs []specs.Device\n\nfunc (d deviceSpecs) splitOnAnnotation(key string) map[string][]specs.Device {\n\tsplitSpecs := make(map[string][]specs.Device)\n\n\tvar specsToRemoveAnnotations []*specs.Device\n\tfor _, deviceSpec := range d {\n\t\tvalue, ok := deviceSpec.Annotations[key]\n\t\tif !ok {\n\t\t\tcontinue\n\t\t}\n\t\tsplitSpecs[key+\"=\"+value] = append(splitSpecs[key+\"=\"+value], deviceSpec)\n\t\tspecsToRemoveAnnotations = append(specsToRemoveAnnotations, &deviceSpec)\n\t}\n\n\t// We also remove the annotations that were used to split the devices:\n\tfor _, deviceSpec := range specsToRemoveAnnotations {\n\t\tif _, ok := deviceSpec.Annotations[key]; !ok {\n\t\t\tcontinue\n\t\t}\n\t\tdelete(deviceSpec.Annotations, key)\n\t}\n\n\treturn splitSpecs\n}\n"
  },
  {
    "path": "cmd/nvidia-ctk/cdi/generate/generate_test.go",
    "content": "/**\n# Copyright (c) 2025, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage generate\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/NVIDIA/go-nvml/pkg/nvml\"\n\t\"github.com/NVIDIA/go-nvml/pkg/nvml/mock/dgxa100\"\n\ttestlog \"github.com/sirupsen/logrus/hooks/test\"\n\t\"github.com/stretchr/testify/require\"\n\t\"tags.cncf.io/container-device-interface/specs-go\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/devices\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/test\"\n)\n\nfunc TestGenerateSpec(t *testing.T) {\n\tdefer devices.SetAllForTest()()\n\n\tmoduleRoot, err := test.GetModuleRoot()\n\trequire.NoError(t, err)\n\n\tdriverRoot := filepath.Join(moduleRoot, \"testdata\", \"lookup\", \"rootfs-1\")\n\n\tlogger, _ := testlog.NewNullLogger()\n\ttestCases := []struct {\n\t\tdescription           string\n\t\toptions               options\n\t\texpectedValidateError error\n\t\texpectedOptions       options\n\t\texpectedError         error\n\t\texpectedSpec          string\n\t}{\n\t\t{\n\t\t\tdescription: \"invalid device id\",\n\t\t\toptions: options{\n\t\t\t\tformat:     \"yaml\",\n\t\t\t\tmode:       \"nvml\",\n\t\t\t\tvendor:     \"example.com\",\n\t\t\t\tclass:      \"device\",\n\t\t\t\tdeviceIDs:  []string{\"99\"},\n\t\t\t\tdriverRoot: driverRoot,\n\t\t\t},\n\t\t\texpectedOptions: options{\n\t\t\t\tformat:            \"yaml\",\n\t\t\t\tmode:              \"nvml\",\n\t\t\t\tvendor:            \"example.com\",\n\t\t\t\tclass:             \"device\",\n\t\t\t\tnvidiaCDIHookPath: \"/usr/bin/nvidia-cdi-hook\",\n\t\t\t\tdeviceIDs:         []string{\"99\"},\n\t\t\t\tdriverRoot:        driverRoot,\n\t\t\t},\n\t\t\texpectedError: fmt.Errorf(\"failed to create device CDI specs: failed to construct device spec generators: failed to get device handle from index: ERROR_INVALID_ARGUMENT\"),\n\t\t},\n\t\t{\n\t\t\tdescription: \"default\",\n\t\t\toptions: options{\n\t\t\t\tformat:     \"yaml\",\n\t\t\t\tmode:       \"nvml\",\n\t\t\t\tvendor:     \"example.com\",\n\t\t\t\tclass:      \"device\",\n\t\t\t\tdriverRoot: driverRoot,\n\t\t\t},\n\t\t\texpectedOptions: options{\n\t\t\t\tformat:            \"yaml\",\n\t\t\t\tmode:              \"nvml\",\n\t\t\t\tvendor:            \"example.com\",\n\t\t\t\tclass:             \"device\",\n\t\t\t\tnvidiaCDIHookPath: \"/usr/bin/nvidia-cdi-hook\",\n\t\t\t\tdriverRoot:        driverRoot,\n\t\t\t},\n\t\t\texpectedSpec: `---\ncdiVersion: 0.5.0\nkind: example.com/device\ndevices:\n    - name: \"0\"\n      containerEdits:\n        deviceNodes:\n            - path: /dev/nvidia0\n              hostPath: {{ .driverRoot }}/dev/nvidia0\n    - name: all\n      containerEdits:\n        deviceNodes:\n            - path: /dev/nvidia0\n              hostPath: {{ .driverRoot }}/dev/nvidia0\ncontainerEdits:\n    env:\n        - NVIDIA_CTK_LIBCUDA_DIR=/lib/x86_64-linux-gnu\n        - NVIDIA_VISIBLE_DEVICES=void\n    deviceNodes:\n        - path: /dev/nvidiactl\n          hostPath: {{ .driverRoot }}/dev/nvidiactl\n    hooks:\n        - hookName: createContainer\n          path: /usr/bin/nvidia-cdi-hook\n          args:\n            - nvidia-cdi-hook\n            - create-symlinks\n            - --link\n            - libcuda.so.1::/lib/x86_64-linux-gnu/libcuda.so\n          env:\n            - NVIDIA_CTK_DEBUG=false\n        - hookName: createContainer\n          path: /usr/bin/nvidia-cdi-hook\n          args:\n            - nvidia-cdi-hook\n            - enable-cuda-compat\n            - --host-driver-version=999.88.77\n          env:\n            - NVIDIA_CTK_DEBUG=false\n        - hookName: createContainer\n          path: /usr/bin/nvidia-cdi-hook\n          args:\n            - nvidia-cdi-hook\n            - update-ldcache\n            - --folder\n            - /lib/x86_64-linux-gnu\n            - --folder\n            - /lib/x86_64-linux-gnu/vdpau\n          env:\n            - NVIDIA_CTK_DEBUG=false\n        - hookName: createContainer\n          path: /usr/bin/nvidia-cdi-hook\n          args:\n            - nvidia-cdi-hook\n            - disable-device-node-modification\n          env:\n            - NVIDIA_CTK_DEBUG=false\n    mounts:\n        - hostPath: {{ .driverRoot }}/lib/x86_64-linux-gnu/libcuda.so.999.88.77\n          containerPath: /lib/x86_64-linux-gnu/libcuda.so.999.88.77\n          options:\n            - ro\n            - nosuid\n            - nodev\n            - rbind\n            - rprivate\n        - hostPath: {{ .driverRoot }}/lib/x86_64-linux-gnu/vdpau/libvdpau_nvidia.so.999.88.77\n          containerPath: /lib/x86_64-linux-gnu/vdpau/libvdpau_nvidia.so.999.88.77\n          options:\n            - ro\n            - nosuid\n            - nodev\n            - rbind\n            - rprivate\n`,\n\t\t},\n\t\t{\n\t\t\tdescription: \"disableHooks1\",\n\t\t\toptions: options{\n\t\t\t\tformat:        \"yaml\",\n\t\t\t\tmode:          \"nvml\",\n\t\t\t\tvendor:        \"example.com\",\n\t\t\t\tclass:         \"device\",\n\t\t\t\tdriverRoot:    driverRoot,\n\t\t\t\tdisabledHooks: []string{\"enable-cuda-compat\"},\n\t\t\t},\n\t\t\texpectedOptions: options{\n\t\t\t\tformat:            \"yaml\",\n\t\t\t\tmode:              \"nvml\",\n\t\t\t\tvendor:            \"example.com\",\n\t\t\t\tclass:             \"device\",\n\t\t\t\tnvidiaCDIHookPath: \"/usr/bin/nvidia-cdi-hook\",\n\t\t\t\tdriverRoot:        driverRoot,\n\t\t\t\tdisabledHooks:     []string{\"enable-cuda-compat\"},\n\t\t\t},\n\t\t\texpectedSpec: `---\ncdiVersion: 0.5.0\nkind: example.com/device\ndevices:\n    - name: \"0\"\n      containerEdits:\n        deviceNodes:\n            - path: /dev/nvidia0\n              hostPath: {{ .driverRoot }}/dev/nvidia0\n    - name: all\n      containerEdits:\n        deviceNodes:\n            - path: /dev/nvidia0\n              hostPath: {{ .driverRoot }}/dev/nvidia0\ncontainerEdits:\n    env:\n        - NVIDIA_CTK_LIBCUDA_DIR=/lib/x86_64-linux-gnu\n        - NVIDIA_VISIBLE_DEVICES=void\n    deviceNodes:\n        - path: /dev/nvidiactl\n          hostPath: {{ .driverRoot }}/dev/nvidiactl\n    hooks:\n        - hookName: createContainer\n          path: /usr/bin/nvidia-cdi-hook\n          args:\n            - nvidia-cdi-hook\n            - create-symlinks\n            - --link\n            - libcuda.so.1::/lib/x86_64-linux-gnu/libcuda.so\n          env:\n            - NVIDIA_CTK_DEBUG=false\n        - hookName: createContainer\n          path: /usr/bin/nvidia-cdi-hook\n          args:\n            - nvidia-cdi-hook\n            - update-ldcache\n            - --folder\n            - /lib/x86_64-linux-gnu\n            - --folder\n            - /lib/x86_64-linux-gnu/vdpau\n          env:\n            - NVIDIA_CTK_DEBUG=false\n        - hookName: createContainer\n          path: /usr/bin/nvidia-cdi-hook\n          args:\n            - nvidia-cdi-hook\n            - disable-device-node-modification\n          env:\n            - NVIDIA_CTK_DEBUG=false\n    mounts:\n        - hostPath: {{ .driverRoot }}/lib/x86_64-linux-gnu/libcuda.so.999.88.77\n          containerPath: /lib/x86_64-linux-gnu/libcuda.so.999.88.77\n          options:\n            - ro\n            - nosuid\n            - nodev\n            - rbind\n            - rprivate\n        - hostPath: {{ .driverRoot }}/lib/x86_64-linux-gnu/vdpau/libvdpau_nvidia.so.999.88.77\n          containerPath: /lib/x86_64-linux-gnu/vdpau/libvdpau_nvidia.so.999.88.77\n          options:\n            - ro\n            - nosuid\n            - nodev\n            - rbind\n            - rprivate\n`,\n\t\t},\n\t\t{\n\t\t\tdescription: \"disableHooks2\",\n\t\t\toptions: options{\n\t\t\t\tformat:        \"yaml\",\n\t\t\t\tmode:          \"nvml\",\n\t\t\t\tvendor:        \"example.com\",\n\t\t\t\tclass:         \"device\",\n\t\t\t\tdriverRoot:    driverRoot,\n\t\t\t\tdisabledHooks: []string{\"enable-cuda-compat\", \"update-ldcache\"},\n\t\t\t},\n\t\t\texpectedOptions: options{\n\t\t\t\tformat:            \"yaml\",\n\t\t\t\tmode:              \"nvml\",\n\t\t\t\tvendor:            \"example.com\",\n\t\t\t\tclass:             \"device\",\n\t\t\t\tnvidiaCDIHookPath: \"/usr/bin/nvidia-cdi-hook\",\n\t\t\t\tdriverRoot:        driverRoot,\n\t\t\t\tdisabledHooks:     []string{\"enable-cuda-compat\", \"update-ldcache\"},\n\t\t\t},\n\t\t\texpectedSpec: `---\ncdiVersion: 0.5.0\nkind: example.com/device\ndevices:\n    - name: \"0\"\n      containerEdits:\n        deviceNodes:\n            - path: /dev/nvidia0\n              hostPath: {{ .driverRoot }}/dev/nvidia0\n    - name: all\n      containerEdits:\n        deviceNodes:\n            - path: /dev/nvidia0\n              hostPath: {{ .driverRoot }}/dev/nvidia0\ncontainerEdits:\n    env:\n        - NVIDIA_CTK_LIBCUDA_DIR=/lib/x86_64-linux-gnu\n        - NVIDIA_VISIBLE_DEVICES=void\n    deviceNodes:\n        - path: /dev/nvidiactl\n          hostPath: {{ .driverRoot }}/dev/nvidiactl\n    hooks:\n        - hookName: createContainer\n          path: /usr/bin/nvidia-cdi-hook\n          args:\n            - nvidia-cdi-hook\n            - create-symlinks\n            - --link\n            - libcuda.so.1::/lib/x86_64-linux-gnu/libcuda.so\n          env:\n            - NVIDIA_CTK_DEBUG=false\n        - hookName: createContainer\n          path: /usr/bin/nvidia-cdi-hook\n          args:\n            - nvidia-cdi-hook\n            - disable-device-node-modification\n          env:\n            - NVIDIA_CTK_DEBUG=false\n    mounts:\n        - hostPath: {{ .driverRoot }}/lib/x86_64-linux-gnu/libcuda.so.999.88.77\n          containerPath: /lib/x86_64-linux-gnu/libcuda.so.999.88.77\n          options:\n            - ro\n            - nosuid\n            - nodev\n            - rbind\n            - rprivate\n        - hostPath: {{ .driverRoot }}/lib/x86_64-linux-gnu/vdpau/libvdpau_nvidia.so.999.88.77\n          containerPath: /lib/x86_64-linux-gnu/vdpau/libvdpau_nvidia.so.999.88.77\n          options:\n            - ro\n            - nosuid\n            - nodev\n            - rbind\n            - rprivate\n`,\n\t\t},\n\t\t{\n\t\t\tdescription: \"disableHooksAll\",\n\t\t\toptions: options{\n\t\t\t\tformat:        \"yaml\",\n\t\t\t\tmode:          \"nvml\",\n\t\t\t\tvendor:        \"example.com\",\n\t\t\t\tclass:         \"device\",\n\t\t\t\tdriverRoot:    driverRoot,\n\t\t\t\tdisabledHooks: []string{\"all\"},\n\t\t\t},\n\t\t\texpectedOptions: options{\n\t\t\t\tformat:            \"yaml\",\n\t\t\t\tmode:              \"nvml\",\n\t\t\t\tvendor:            \"example.com\",\n\t\t\t\tclass:             \"device\",\n\t\t\t\tnvidiaCDIHookPath: \"/usr/bin/nvidia-cdi-hook\",\n\t\t\t\tdriverRoot:        driverRoot,\n\t\t\t\tdisabledHooks:     []string{\"all\"},\n\t\t\t},\n\t\t\texpectedSpec: `---\ncdiVersion: 0.5.0\nkind: example.com/device\ndevices:\n    - name: \"0\"\n      containerEdits:\n        deviceNodes:\n            - path: /dev/nvidia0\n              hostPath: {{ .driverRoot }}/dev/nvidia0\n    - name: all\n      containerEdits:\n        deviceNodes:\n            - path: /dev/nvidia0\n              hostPath: {{ .driverRoot }}/dev/nvidia0\ncontainerEdits:\n    env:\n        - NVIDIA_CTK_LIBCUDA_DIR=/lib/x86_64-linux-gnu\n        - NVIDIA_VISIBLE_DEVICES=void\n    deviceNodes:\n        - path: /dev/nvidiactl\n          hostPath: {{ .driverRoot }}/dev/nvidiactl\n    mounts:\n        - hostPath: {{ .driverRoot }}/lib/x86_64-linux-gnu/libcuda.so.999.88.77\n          containerPath: /lib/x86_64-linux-gnu/libcuda.so.999.88.77\n          options:\n            - ro\n            - nosuid\n            - nodev\n            - rbind\n            - rprivate\n        - hostPath: {{ .driverRoot }}/lib/x86_64-linux-gnu/vdpau/libvdpau_nvidia.so.999.88.77\n          containerPath: /lib/x86_64-linux-gnu/vdpau/libvdpau_nvidia.so.999.88.77\n          options:\n            - ro\n            - nosuid\n            - nodev\n            - rbind\n            - rprivate\n`,\n\t\t},\n\t\t{\n\t\t\tdescription: \"enableChmodHook\",\n\t\t\toptions: options{\n\t\t\t\tformat:        \"yaml\",\n\t\t\t\tmode:          \"management\",\n\t\t\t\tvendor:        \"example.com\",\n\t\t\t\tclass:         \"device\",\n\t\t\t\tdriverRoot:    driverRoot,\n\t\t\t\tenabledHooks:  []string{\"chmod\"},\n\t\t\t\tdisabledHooks: []string{\"enable-cuda-compat\", \"update-ldcache\", \"disable-device-node-modification\"},\n\t\t\t},\n\t\t\texpectedOptions: options{\n\t\t\t\tformat:            \"yaml\",\n\t\t\t\tmode:              \"management\",\n\t\t\t\tvendor:            \"example.com\",\n\t\t\t\tclass:             \"device\",\n\t\t\t\tnvidiaCDIHookPath: \"/usr/bin/nvidia-cdi-hook\",\n\t\t\t\tdriverRoot:        driverRoot,\n\t\t\t\tenabledHooks:      []string{\"chmod\"},\n\t\t\t\tdisabledHooks:     []string{\"enable-cuda-compat\", \"update-ldcache\", \"disable-device-node-modification\"},\n\t\t\t},\n\t\t\texpectedSpec: `---\ncdiVersion: 0.5.0\nkind: example.com/device\ndevices:\n    - name: all\n      containerEdits:\n        deviceNodes:\n            - path: /dev/nvidia0\n              hostPath: {{ .driverRoot }}/dev/nvidia0\n            - path: /dev/nvidiactl\n              hostPath: {{ .driverRoot }}/dev/nvidiactl\n            - path: /dev/nvidia-caps-imex-channels/channel0\n              hostPath: {{ .driverRoot }}/dev/nvidia-caps-imex-channels/channel0\n            - path: /dev/nvidia-caps-imex-channels/channel1\n              hostPath: {{ .driverRoot }}/dev/nvidia-caps-imex-channels/channel1\n            - path: /dev/nvidia-caps-imex-channels/channel2047\n              hostPath: {{ .driverRoot }}/dev/nvidia-caps-imex-channels/channel2047\n            - path: /dev/nvidia-caps/nvidia-cap1\n              hostPath: {{ .driverRoot }}/dev/nvidia-caps/nvidia-cap1\n        hooks:\n            - hookName: createContainer\n              path: /usr/bin/nvidia-cdi-hook\n              args:\n                - nvidia-cdi-hook\n                - chmod\n                - --mode\n                - \"755\"\n                - --path\n                - /dev/nvidia-caps\n              env:\n                - NVIDIA_CTK_DEBUG=false\ncontainerEdits:\n    env:\n        - NVIDIA_CTK_LIBCUDA_DIR=/lib/x86_64-linux-gnu\n        - NVIDIA_VISIBLE_DEVICES=void\n    hooks:\n        - hookName: createContainer\n          path: /usr/bin/nvidia-cdi-hook\n          args:\n            - nvidia-cdi-hook\n            - create-symlinks\n            - --link\n            - libcuda.so.1::/lib/x86_64-linux-gnu/libcuda.so\n          env:\n            - NVIDIA_CTK_DEBUG=false\n    mounts:\n        - hostPath: {{ .driverRoot }}/lib/x86_64-linux-gnu/libcuda.so.999.88.77\n          containerPath: /lib/x86_64-linux-gnu/libcuda.so.999.88.77\n          options:\n            - ro\n            - nosuid\n            - nodev\n            - rbind\n            - rprivate\n        - hostPath: {{ .driverRoot }}/lib/x86_64-linux-gnu/vdpau/libvdpau_nvidia.so.999.88.77\n          containerPath: /lib/x86_64-linux-gnu/vdpau/libvdpau_nvidia.so.999.88.77\n          options:\n            - ro\n            - nosuid\n            - nodev\n            - rbind\n            - rprivate\n`,\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\t// Apply overrides for all test cases:\n\t\ttc.options.nvidiaCDIHookPath = \"/usr/bin/nvidia-cdi-hook\"\n\t\tif tc.options.deviceIDs == nil {\n\t\t\ttc.options.deviceIDs = []string{\"all\"}\n\t\t\ttc.expectedOptions.deviceIDs = []string{\"all\"}\n\t\t}\n\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\tc := command{\n\t\t\t\tlogger: logger,\n\t\t\t}\n\n\t\t\terr := c.validateFlags(nil, &tc.options)\n\t\t\trequire.ErrorIs(t, err, tc.expectedValidateError)\n\t\t\trequire.EqualValues(t, tc.expectedOptions, tc.options)\n\n\t\t\t// Set up a mock server, reusing the DGX A100 mock.\n\t\t\tserver := dgxa100.New()\n\t\t\t// Override the driver version to match the version in our mock filesystem.\n\t\t\tserver.SystemGetDriverVersionFunc = func() (string, nvml.Return) {\n\t\t\t\treturn \"999.88.77\", nvml.SUCCESS\n\t\t\t}\n\t\t\t// Set the device count to 1 explicitly since we only have a single device node.\n\t\t\tserver.DeviceGetCountFunc = func() (int, nvml.Return) {\n\t\t\t\treturn 1, nvml.SUCCESS\n\t\t\t}\n\t\t\tfor _, d := range server.Devices {\n\t\t\t\t// TODO: This is not implemented in the mock.\n\t\t\t\t(d.(*dgxa100.Device)).GetMaxMigDeviceCountFunc = func() (int, nvml.Return) {\n\t\t\t\t\treturn 0, nvml.SUCCESS\n\t\t\t\t}\n\t\t\t}\n\t\t\ttc.options.nvmllib = server\n\n\t\t\tspecs, err := c.generateSpecs(&tc.options)\n\t\t\trequire.EqualValues(t, err, tc.expectedError)\n\n\t\t\tvar buf bytes.Buffer\n\t\t\tfor _, spec := range specs {\n\t\t\t\t_, err = spec.WriteTo(&buf)\n\t\t\t\trequire.NoError(t, err)\n\t\t\t}\n\n\t\t\trequire.Equal(t, strings.ReplaceAll(tc.expectedSpec, \"{{ .driverRoot }}\", driverRoot), buf.String())\n\t\t})\n\t}\n}\n\nfunc TestSplitOnAnnotation(t *testing.T) {\n\ttestCases := []struct {\n\t\tdescription            string\n\t\tinput                  deviceSpecs\n\t\tannotation             string\n\t\texpectedInputPostSplit deviceSpecs\n\t\texpectedOutput         map[string][]specs.Device\n\t}{\n\t\t{\n\t\t\tdescription: \"non-matching annotation\",\n\t\t\tinput: deviceSpecs{\n\t\t\t\tspecs.Device{\n\t\t\t\t\tName: \"foo\",\n\t\t\t\t\tAnnotations: map[string]string{\n\t\t\t\t\t\t\"key\": \"value\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tannotation: \"not-key\",\n\t\t\texpectedInputPostSplit: deviceSpecs{\n\t\t\t\tspecs.Device{\n\t\t\t\t\tName: \"foo\",\n\t\t\t\t\tAnnotations: map[string]string{\n\t\t\t\t\t\t\"key\": \"value\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedOutput: map[string][]specs.Device{},\n\t\t},\n\t\t{\n\t\t\tdescription: \"single annotation present\",\n\t\t\tinput: deviceSpecs{\n\t\t\t\tspecs.Device{\n\t\t\t\t\tName: \"foo\",\n\t\t\t\t\tAnnotations: map[string]string{\n\t\t\t\t\t\t\"key\": \"value\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tannotation: \"key\",\n\t\t\texpectedInputPostSplit: deviceSpecs{\n\t\t\t\tspecs.Device{\n\t\t\t\t\tName:        \"foo\",\n\t\t\t\t\tAnnotations: map[string]string{},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedOutput: map[string][]specs.Device{\n\t\t\t\t\"key=value\": {\n\t\t\t\t\t{\n\t\t\t\t\t\tName:        \"foo\",\n\t\t\t\t\t\tAnnotations: map[string]string{},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"non-matching annotations are not removed\",\n\t\t\tinput: deviceSpecs{\n\t\t\t\tspecs.Device{\n\t\t\t\t\tName: \"foo\",\n\t\t\t\t\tAnnotations: map[string]string{\n\t\t\t\t\t\t\"key\":     \"value\",\n\t\t\t\t\t\t\"another\": \"foo\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tannotation: \"key\",\n\t\t\texpectedInputPostSplit: deviceSpecs{\n\t\t\t\tspecs.Device{\n\t\t\t\t\tName:        \"foo\",\n\t\t\t\t\tAnnotations: map[string]string{\"another\": \"foo\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedOutput: map[string][]specs.Device{\n\t\t\t\t\"key=value\": {\n\t\t\t\t\t{\n\t\t\t\t\t\tName:        \"foo\",\n\t\t\t\t\t\tAnnotations: map[string]string{\"another\": \"foo\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"duplicated annotations different names\",\n\t\t\tinput: func() deviceSpecs {\n\t\t\t\tannotations := map[string]string{\n\t\t\t\t\t\"key\": \"value\",\n\t\t\t\t}\n\t\t\t\treturn deviceSpecs{\n\t\t\t\t\t{Name: \"0\", Annotations: annotations},\n\t\t\t\t\t{Name: \"first\", Annotations: annotations},\n\t\t\t\t}\n\t\t\t}(),\n\t\t\tannotation: \"key\",\n\t\t\texpectedInputPostSplit: deviceSpecs{\n\t\t\t\tspecs.Device{Name: \"0\", Annotations: map[string]string{}},\n\t\t\t\tspecs.Device{Name: \"first\", Annotations: map[string]string{}},\n\t\t\t},\n\t\t\texpectedOutput: map[string][]specs.Device{\n\t\t\t\t\"key=value\": {\n\t\t\t\t\t{Name: \"0\", Annotations: map[string]string{}},\n\t\t\t\t\t{Name: \"first\", Annotations: map[string]string{}},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"annotation with different values\",\n\t\t\tinput: deviceSpecs{\n\t\t\t\tspecs.Device{\n\t\t\t\t\tName: \"foo\",\n\t\t\t\t\tAnnotations: map[string]string{\n\t\t\t\t\t\t\"key\": \"value\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tspecs.Device{\n\t\t\t\t\tName: \"bar\",\n\t\t\t\t\tAnnotations: map[string]string{\n\t\t\t\t\t\t\"key\": \"another\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tannotation: \"key\",\n\t\t\texpectedInputPostSplit: deviceSpecs{\n\t\t\t\tspecs.Device{\n\t\t\t\t\tName:        \"foo\",\n\t\t\t\t\tAnnotations: map[string]string{},\n\t\t\t\t},\n\t\t\t\tspecs.Device{\n\t\t\t\t\tName:        \"bar\",\n\t\t\t\t\tAnnotations: map[string]string{},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedOutput: map[string][]specs.Device{\n\t\t\t\t\"key=value\": {\n\t\t\t\t\t{\n\t\t\t\t\t\tName:        \"foo\",\n\t\t\t\t\t\tAnnotations: map[string]string{},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\"key=another\": {\n\t\t\t\t\t{\n\t\t\t\t\t\tName:        \"bar\",\n\t\t\t\t\t\tAnnotations: map[string]string{},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\tresult := tc.input.splitOnAnnotation(tc.annotation)\n\n\t\t\trequire.EqualValues(t, tc.expectedOutput, result)\n\t\t\trequire.EqualValues(t, tc.expectedInputPostSplit, tc.input)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "cmd/nvidia-ctk/cdi/list/list.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage list\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\n\t\"github.com/urfave/cli/v3\"\n\t\"tags.cncf.io/container-device-interface/pkg/cdi\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n)\n\ntype command struct {\n\tlogger logger.Interface\n}\n\ntype config struct {\n\tcdiSpecDirs []string\n}\n\n// NewCommand constructs a cdi list command with the specified logger\nfunc NewCommand(logger logger.Interface) *cli.Command {\n\tc := command{\n\t\tlogger: logger,\n\t}\n\treturn c.build()\n}\n\n// build creates the CLI command\nfunc (m command) build() *cli.Command {\n\tcfg := config{}\n\n\t// Create the command\n\tc := cli.Command{\n\t\tName:  \"list\",\n\t\tUsage: \"List the available CDI devices\",\n\t\tBefore: func(ctx context.Context, cmd *cli.Command) (context.Context, error) {\n\t\t\treturn ctx, m.validateFlags(&cfg)\n\t\t},\n\t\tAction: func(ctx context.Context, cmd *cli.Command) error {\n\t\t\treturn m.run(&cfg)\n\t\t},\n\t\tFlags: []cli.Flag{\n\t\t\t&cli.StringSliceFlag{\n\t\t\t\tName:        \"spec-dir\",\n\t\t\t\tUsage:       \"specify the directories to scan for CDI specifications\",\n\t\t\t\tValue:       cdi.DefaultSpecDirs,\n\t\t\t\tDestination: &cfg.cdiSpecDirs,\n\t\t\t\tSources:     cli.EnvVars(\"NVIDIA_CTK_CDI_SPEC_DIRS\"),\n\t\t\t},\n\t\t},\n\t}\n\n\treturn &c\n}\n\nfunc (m command) validateFlags(cfg *config) error {\n\tif len(cfg.cdiSpecDirs) == 0 {\n\t\treturn errors.New(\"at least one CDI specification directory must be specified\")\n\t}\n\treturn nil\n}\n\nfunc (m command) run(cfg *config) error {\n\tregistry, err := cdi.NewCache(\n\t\tcdi.WithAutoRefresh(false),\n\t\tcdi.WithSpecDirs(cfg.cdiSpecDirs...),\n\t)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to create CDI cache: %v\", err)\n\t}\n\n\t_ = registry.Refresh()\n\tif errors := registry.GetErrors(); len(errors) > 0 {\n\t\tm.logger.Warningf(\"The following registry errors were reported:\")\n\t\tfor k, err := range errors {\n\t\t\tm.logger.Warningf(\"%v: %v\", k, err)\n\t\t}\n\t}\n\n\tdevices := registry.ListDevices()\n\tm.logger.Infof(\"Found %d CDI devices\", len(devices))\n\tfor _, device := range devices {\n\t\tfmt.Printf(\"%s\\n\", device)\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "cmd/nvidia-ctk/cdi/transform/root/root.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage root\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\n\t\"github.com/urfave/cli/v3\"\n\t\"tags.cncf.io/container-device-interface/pkg/cdi\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/nvcdi/spec\"\n\ttransformroot \"github.com/NVIDIA/nvidia-container-toolkit/pkg/nvcdi/transform/root\"\n)\n\ntype command struct {\n\tlogger logger.Interface\n}\n\ntype transformOptions struct {\n\tinput  string\n\toutput string\n}\n\ntype options struct {\n\ttransformOptions\n\tfrom       string\n\tto         string\n\trelativeTo string\n}\n\n// NewCommand constructs a generate-cdi command with the specified logger\nfunc NewCommand(logger logger.Interface) *cli.Command {\n\tc := command{\n\t\tlogger: logger,\n\t}\n\treturn c.build()\n}\n\n// build creates the CLI command\nfunc (m command) build() *cli.Command {\n\topts := options{}\n\n\tc := cli.Command{\n\t\tName:                   \"root\",\n\t\tUsage:                  \"Apply a root transform to a CDI specification\",\n\t\tUseShortOptionHandling: true,\n\t\tEnableShellCompletion:  true,\n\t\tBefore: func(ctx context.Context, cmd *cli.Command) (context.Context, error) {\n\t\t\treturn ctx, m.validateFlags(&opts)\n\t\t},\n\t\tAction: func(ctx context.Context, cmd *cli.Command) error {\n\t\t\treturn m.run(&opts)\n\t\t},\n\t\tFlags: []cli.Flag{\n\t\t\t&cli.StringFlag{\n\t\t\t\tName:        \"from\",\n\t\t\t\tUsage:       \"specify the root to be transformed\",\n\t\t\t\tDestination: &opts.from,\n\t\t\t},\n\t\t\t&cli.StringFlag{\n\t\t\t\tName:        \"input\",\n\t\t\t\tUsage:       \"Specify the file to read the CDI specification from. If this is '-' the specification is read from STDIN\",\n\t\t\t\tValue:       \"-\",\n\t\t\t\tDestination: &opts.input,\n\t\t\t},\n\t\t\t&cli.StringFlag{\n\t\t\t\tName:        \"output\",\n\t\t\t\tUsage:       \"Specify the file to output the generated CDI specification to. If this is '' the specification is output to STDOUT\",\n\t\t\t\tDestination: &opts.output,\n\t\t\t},\n\t\t\t&cli.StringFlag{\n\t\t\t\tName:        \"relative-to\",\n\t\t\t\tUsage:       \"specify whether the transform is relative to the host or to the container. One of [ host | container ]\",\n\t\t\t\tValue:       \"host\",\n\t\t\t\tDestination: &opts.relativeTo,\n\t\t\t},\n\t\t\t&cli.StringFlag{\n\t\t\t\tName:        \"to\",\n\t\t\t\tUsage:       \"specify the replacement root. If this is the same as the from root, the transform is a no-op.\",\n\t\t\t\tValue:       \"\",\n\t\t\t\tDestination: &opts.to,\n\t\t\t},\n\t\t},\n\t}\n\n\treturn &c\n}\n\nfunc (m command) validateFlags(opts *options) error {\n\tswitch opts.relativeTo {\n\tcase \"host\":\n\tcase \"container\":\n\tdefault:\n\t\treturn fmt.Errorf(\"invalid --relative-to value: %v\", opts.relativeTo)\n\t}\n\treturn nil\n}\n\nfunc (m command) run(opts *options) error {\n\tspec, err := opts.Load()\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to load CDI specification: %w\", err)\n\t}\n\n\terr = transformroot.New(\n\t\ttransformroot.WithRoot(opts.from),\n\t\ttransformroot.WithTargetRoot(opts.to),\n\t\ttransformroot.WithRelativeTo(opts.relativeTo),\n\t).Transform(spec.Raw())\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to transform CDI specification: %w\", err)\n\t}\n\n\treturn opts.Save(spec)\n}\n\n// Load lodas the input CDI specification\nfunc (o transformOptions) Load() (spec.Interface, error) {\n\tcontents, err := o.getContents()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to read spec contents: %v\", err)\n\t}\n\n\traw, err := cdi.ParseSpec(contents)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to parse CDI spec: %v\", err)\n\t}\n\n\treturn spec.New(\n\t\tspec.WithRawSpec(raw),\n\t)\n}\n\nfunc (o transformOptions) getContents() ([]byte, error) {\n\tif o.input == \"-\" {\n\t\treturn io.ReadAll(os.Stdin)\n\t}\n\n\treturn os.ReadFile(o.input)\n}\n\n// Save saves the CDI specification to the output file\nfunc (o transformOptions) Save(s spec.Interface) error {\n\tif o.output == \"\" {\n\t\t_, err := s.WriteTo(os.Stdout)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"failed to write CDI spec to STDOUT: %v\", err)\n\t\t}\n\t\treturn nil\n\t}\n\n\treturn s.Save(o.output)\n}\n"
  },
  {
    "path": "cmd/nvidia-ctk/cdi/transform/transform.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage transform\n\nimport (\n\t\"github.com/urfave/cli/v3\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk/cdi/transform/root\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n)\n\ntype command struct {\n\tlogger logger.Interface\n}\n\n// NewCommand constructs a command with the specified logger\nfunc NewCommand(logger logger.Interface) *cli.Command {\n\tc := command{\n\t\tlogger: logger,\n\t}\n\treturn c.build()\n}\n\n// build creates the CLI command\nfunc (m command) build() *cli.Command {\n\tc := cli.Command{\n\t\tName:  \"transform\",\n\t\tUsage: \"Apply a transform to a CDI specification\",\n\t\tCommands: []*cli.Command{\n\t\t\troot.NewCommand(m.logger),\n\t\t},\n\t}\n\n\treturn &c\n}\n"
  },
  {
    "path": "cmd/nvidia-ctk/config/config.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage config\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"reflect\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/urfave/cli/v3\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/api/config/v1\"\n\tcreatedefault \"github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk/config/create-default\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk/config/flags\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n)\n\ntype command struct {\n\tlogger logger.Interface\n}\n\n// options stores the subcommand options\ntype options struct {\n\tflags.Options\n\tsetListSeparator string\n\tsets             []string\n}\n\n// NewCommand constructs an config command with the specified logger\nfunc NewCommand(logger logger.Interface) *cli.Command {\n\tc := command{\n\t\tlogger: logger,\n\t}\n\treturn c.build()\n}\n\n// build\nfunc (m command) build() *cli.Command {\n\topts := options{}\n\n\t// Create the 'config' command\n\tc := cli.Command{\n\t\tName:                   \"config\",\n\t\tUsage:                  \"Interact with the NVIDIA Container Toolkit configuration\",\n\t\tUseShortOptionHandling: true,\n\t\tEnableShellCompletion:  true,\n\t\tBefore: func(ctx context.Context, cmd *cli.Command) (context.Context, error) {\n\t\t\treturn ctx, m.validateFlags(&opts)\n\t\t},\n\t\tAction: func(ctx context.Context, cmd *cli.Command) error {\n\t\t\treturn m.run(&opts)\n\t\t},\n\t\tCommands: []*cli.Command{\n\t\t\tcreatedefault.NewCommand(m.logger),\n\t\t},\n\t\tFlags: []cli.Flag{\n\t\t\t&cli.StringFlag{\n\t\t\t\tName:        \"config-file\",\n\t\t\t\tAliases:     []string{\"config\", \"c\"},\n\t\t\t\tUsage:       \"Specify the config file to modify.\",\n\t\t\t\tValue:       config.GetConfigFilePath(),\n\t\t\t\tDestination: &opts.Config,\n\t\t\t},\n\t\t\t&cli.StringSliceFlag{\n\t\t\t\tName: \"set\",\n\t\t\t\tUsage: \"Set a config value using the pattern 'key[=value]'. \" +\n\t\t\t\t\t\"Specifying only 'key' is equivalent to 'key=true' for boolean settings. \" +\n\t\t\t\t\t\"This flag can be specified multiple times, but only the last value for a specific \" +\n\t\t\t\t\t\"config option is applied. \" +\n\t\t\t\t\t\"If the setting represents a list, the elements are colon-separated.\",\n\t\t\t\tDestination: &opts.sets,\n\t\t\t},\n\t\t\t&cli.StringFlag{\n\t\t\t\tName:        \"set-list-separator\",\n\t\t\t\tUsage:       \"Specify a separator for lists applied using the set command.\",\n\t\t\t\tHidden:      true,\n\t\t\t\tValue:       \":\",\n\t\t\t\tDestination: &opts.setListSeparator,\n\t\t\t},\n\t\t\t&cli.BoolFlag{\n\t\t\t\tName:        \"in-place\",\n\t\t\t\tAliases:     []string{\"i\"},\n\t\t\t\tUsage:       \"Modify the config file in-place\",\n\t\t\t\tDestination: &opts.InPlace,\n\t\t\t},\n\t\t\t&cli.StringFlag{\n\t\t\t\tName:        \"output\",\n\t\t\t\tAliases:     []string{\"o\"},\n\t\t\t\tUsage:       \"Specify the output file to write to; If not specified, the output is written to stdout\",\n\t\t\t\tDestination: &opts.Output,\n\t\t\t},\n\t\t},\n\t}\n\n\treturn &c\n}\n\nfunc (m command) validateFlags(opts *options) error {\n\tif opts.setListSeparator == \"\" {\n\t\treturn fmt.Errorf(\"set-list-separator must be set\")\n\t}\n\treturn nil\n}\n\nfunc (m command) run(opts *options) error {\n\tcfgToml, err := config.New(\n\t\tconfig.WithConfigFile(opts.Config),\n\t)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to create config: %v\", err)\n\t}\n\n\tfor _, set := range opts.sets {\n\t\tkey, value, err := setFlagToKeyValue(set, opts.setListSeparator)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"invalid --set option %v: %w\", set, err)\n\t\t}\n\t\tif value == nil {\n\t\t\t_ = cfgToml.Delete(key)\n\t\t} else {\n\t\t\tcfgToml.Set(key, value)\n\t\t}\n\t}\n\n\tif err := opts.EnsureOutputFolder(); err != nil {\n\t\treturn fmt.Errorf(\"failed to create output directory: %v\", err)\n\t}\n\toutput, err := opts.CreateOutput()\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to open output file: %v\", err)\n\t}\n\tdefer output.Close()\n\n\tif _, err := cfgToml.Save(output); err != nil {\n\t\treturn fmt.Errorf(\"failed to save config: %v\", err)\n\t}\n\n\treturn nil\n}\n\nvar errInvalidConfigOption = errors.New(\"invalid config option\")\nvar errUndefinedField = errors.New(\"undefined field\")\nvar errInvalidFormat = errors.New(\"invalid format\")\n\n// setFlagToKeyValue converts a --set flag to a key-value pair.\n// The set flag is of the form key[=value], with the value being optional if key refers to a\n// boolean config option.\nfunc setFlagToKeyValue(setFlag string, setListSeparator string) (string, interface{}, error) {\n\tsetParts := strings.SplitN(setFlag, \"=\", 2)\n\tkey := setParts[0]\n\n\tfield, err := getField(key)\n\tif err != nil {\n\t\treturn key, nil, fmt.Errorf(\"%w: %w\", errInvalidConfigOption, err)\n\t}\n\n\tkind := field.Kind()\n\tif len(setParts) != 2 {\n\t\tif kind == reflect.Bool || (kind == reflect.Pointer && field.Elem().Kind() == reflect.Bool) {\n\t\t\treturn key, true, nil\n\t\t}\n\t\treturn key, nil, fmt.Errorf(\"%w: expected key=value; got %v\", errInvalidFormat, setFlag)\n\t}\n\n\tvalue := setParts[1]\n\tif kind == reflect.Pointer && value != \"nil\" {\n\t\tkind = field.Elem().Kind()\n\t}\n\tswitch kind {\n\tcase reflect.Pointer:\n\t\treturn key, nil, nil\n\tcase reflect.Bool:\n\t\tb, err := strconv.ParseBool(value)\n\t\tif err != nil {\n\t\t\treturn key, value, fmt.Errorf(\"%w: %w\", errInvalidFormat, err)\n\t\t}\n\t\treturn key, b, nil\n\tcase reflect.String:\n\t\treturn key, value, nil\n\tcase reflect.Slice:\n\t\tvalueParts := []string{value}\n\t\tfor _, sep := range []string{setListSeparator, \",\"} {\n\t\t\tif !strings.Contains(value, sep) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tvalueParts = strings.Split(value, sep)\n\t\t\tbreak\n\t\t}\n\t\tswitch field.Elem().Kind() {\n\t\tcase reflect.String:\n\t\t\treturn key, valueParts, nil\n\t\tcase reflect.Int:\n\t\t\tvar output []int64\n\t\t\tfor _, v := range valueParts {\n\t\t\t\tvi, err := strconv.ParseInt(v, 10, 0)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn key, nil, fmt.Errorf(\"%w: %w\", errInvalidFormat, err)\n\t\t\t\t}\n\t\t\t\toutput = append(output, vi)\n\t\t\t}\n\t\t\treturn key, output, nil\n\t\t}\n\t}\n\treturn key, nil, fmt.Errorf(\"unsupported type for %v (%v)\", setParts, kind)\n}\n\nfunc getField(key string) (reflect.Type, error) {\n\ts, err := getStruct(reflect.TypeOf(config.Config{}), strings.Split(key, \".\")...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn s.Type, err\n}\n\nfunc getStruct(current reflect.Type, paths ...string) (reflect.StructField, error) {\n\tif len(paths) < 1 {\n\t\treturn reflect.StructField{}, fmt.Errorf(\"%w: no fields selected\", errUndefinedField)\n\t}\n\ttomlField := paths[0]\n\tfor i := 0; i < current.NumField(); i++ {\n\t\tf := current.Field(i)\n\t\tv, ok := f.Tag.Lookup(\"toml\")\n\t\tif !ok {\n\t\t\tcontinue\n\t\t}\n\t\tif strings.SplitN(v, \",\", 2)[0] != tomlField {\n\t\t\tcontinue\n\t\t}\n\t\tif len(paths) == 1 {\n\t\t\treturn f, nil\n\t\t}\n\t\treturn getStruct(f.Type, paths[1:]...)\n\t}\n\treturn reflect.StructField{}, fmt.Errorf(\"%w: %q\", errUndefinedField, tomlField)\n}\n"
  },
  {
    "path": "cmd/nvidia-ctk/config/config_test.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage config\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestSetFlagToKeyValue(t *testing.T) {\n\ttestCases := []struct {\n\t\tdescription      string\n\t\tsetFlag          string\n\t\tsetListSeparator string\n\t\texpectedKey      string\n\t\texpectedValue    interface{}\n\t\texpectedError    error\n\t}{\n\t\t{\n\t\t\tdescription:   \"option not present returns an error\",\n\t\t\tsetFlag:       \"undefined=new-value\",\n\t\t\texpectedKey:   \"undefined\",\n\t\t\texpectedError: errInvalidConfigOption,\n\t\t},\n\t\t{\n\t\t\tdescription:   \"undefined nexted option returns error\",\n\t\t\tsetFlag:       \"nvidia-container-cli.undefined\",\n\t\t\texpectedKey:   \"nvidia-container-cli.undefined\",\n\t\t\texpectedError: errInvalidConfigOption,\n\t\t},\n\t\t{\n\t\t\tdescription:   \"boolean option assumes true\",\n\t\t\tsetFlag:       \"disable-require\",\n\t\t\texpectedKey:   \"disable-require\",\n\t\t\texpectedValue: true,\n\t\t},\n\t\t{\n\t\t\tdescription:   \"boolean option returns true\",\n\t\t\tsetFlag:       \"disable-require=true\",\n\t\t\texpectedKey:   \"disable-require\",\n\t\t\texpectedValue: true,\n\t\t},\n\t\t{\n\t\t\tdescription:   \"boolean option returns false\",\n\t\t\tsetFlag:       \"disable-require=false\",\n\t\t\texpectedKey:   \"disable-require\",\n\t\t\texpectedValue: false,\n\t\t},\n\t\t{\n\t\t\tdescription:   \"invalid boolean option returns error\",\n\t\t\tsetFlag:       \"disable-require=something\",\n\t\t\texpectedKey:   \"disable-require\",\n\t\t\texpectedValue: \"something\",\n\t\t\texpectedError: errInvalidFormat,\n\t\t},\n\t\t{\n\t\t\tdescription:   \"string option requires value\",\n\t\t\tsetFlag:       \"swarm-resource\",\n\t\t\texpectedKey:   \"swarm-resource\",\n\t\t\texpectedValue: nil,\n\t\t\texpectedError: errInvalidFormat,\n\t\t},\n\t\t{\n\t\t\tdescription:   \"string option returns value\",\n\t\t\tsetFlag:       \"swarm-resource=string-value\",\n\t\t\texpectedKey:   \"swarm-resource\",\n\t\t\texpectedValue: \"string-value\",\n\t\t},\n\t\t{\n\t\t\tdescription:   \"string option returns value with equals\",\n\t\t\tsetFlag:       \"swarm-resource=string-value=more\",\n\t\t\texpectedKey:   \"swarm-resource\",\n\t\t\texpectedValue: \"string-value=more\",\n\t\t},\n\t\t{\n\t\t\tdescription:   \"string option treats bool value as string\",\n\t\t\tsetFlag:       \"swarm-resource=true\",\n\t\t\texpectedKey:   \"swarm-resource\",\n\t\t\texpectedValue: \"true\",\n\t\t},\n\t\t{\n\t\t\tdescription:   \"string option treats int value as string\",\n\t\t\tsetFlag:       \"swarm-resource=5\",\n\t\t\texpectedKey:   \"swarm-resource\",\n\t\t\texpectedValue: \"5\",\n\t\t},\n\t\t{\n\t\t\tdescription:   \"[]string option returns single value\",\n\t\t\tsetFlag:       \"nvidia-container-cli.environment=string-value\",\n\t\t\texpectedKey:   \"nvidia-container-cli.environment\",\n\t\t\texpectedValue: []string{\"string-value\"},\n\t\t},\n\t\t{\n\t\t\tdescription:      \"[]string option returns multiple values\",\n\t\t\tsetFlag:          \"nvidia-container-cli.environment=first,second\",\n\t\t\tsetListSeparator: \",\",\n\t\t\texpectedKey:      \"nvidia-container-cli.environment\",\n\t\t\texpectedValue:    []string{\"first\", \"second\"},\n\t\t},\n\t\t{\n\t\t\tdescription:      \"[]string option returns values with equals\",\n\t\t\tsetFlag:          \"nvidia-container-cli.environment=first=1,second=2\",\n\t\t\tsetListSeparator: \",\",\n\t\t\texpectedKey:      \"nvidia-container-cli.environment\",\n\t\t\texpectedValue:    []string{\"first=1\", \"second=2\"},\n\t\t},\n\t\t{\n\t\t\tdescription:      \"[]string option returns multiple values semi-colon\",\n\t\t\tsetFlag:          \"nvidia-container-cli.environment=first;second\",\n\t\t\tsetListSeparator: \";\",\n\t\t\texpectedKey:      \"nvidia-container-cli.environment\",\n\t\t\texpectedValue:    []string{\"first\", \"second\"},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\tif tc.setListSeparator == \"\" {\n\t\t\t\ttc.setListSeparator = \",\"\n\t\t\t}\n\t\t\tk, v, err := setFlagToKeyValue(tc.setFlag, tc.setListSeparator)\n\t\t\trequire.ErrorIs(t, err, tc.expectedError)\n\t\t\trequire.EqualValues(t, tc.expectedKey, k)\n\t\t\trequire.EqualValues(t, tc.expectedValue, v)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "cmd/nvidia-ctk/config/create-default/create-default.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage createdefault\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\t\"github.com/urfave/cli/v3\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/api/config/v1\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk/config/flags\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n)\n\ntype command struct {\n\tlogger logger.Interface\n}\n\n// NewCommand constructs a default command with the specified logger\nfunc NewCommand(logger logger.Interface) *cli.Command {\n\tc := command{\n\t\tlogger: logger,\n\t}\n\treturn c.build()\n}\n\n// build\nfunc (m command) build() *cli.Command {\n\topts := flags.Options{}\n\n\t// Create the 'default' command\n\tc := cli.Command{\n\t\tName:    \"default\",\n\t\tAliases: []string{\"create-default\", \"generate-default\"},\n\t\tUsage:   \"Generate the default NVIDIA Container Toolkit configuration file\",\n\t\tBefore: func(ctx context.Context, cmd *cli.Command) (context.Context, error) {\n\t\t\treturn ctx, m.validateFlags(cmd, &opts)\n\t\t},\n\t\tAction: func(ctx context.Context, cmd *cli.Command) error {\n\t\t\treturn m.run(cmd, &opts)\n\t\t},\n\t\tFlags: []cli.Flag{\n\t\t\t&cli.StringFlag{\n\t\t\t\tName:        \"output\",\n\t\t\t\tAliases:     []string{\"o\"},\n\t\t\t\tUsage:       \"Specify the output file to write to; If not specified, the output is written to stdout\",\n\t\t\t\tDestination: &opts.Output,\n\t\t\t},\n\t\t},\n\t}\n\n\treturn &c\n}\n\nfunc (m command) validateFlags(c *cli.Command, opts *flags.Options) error {\n\treturn nil\n}\n\nfunc (m command) run(c *cli.Command, opts *flags.Options) error {\n\tcfgToml, err := config.New()\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to create default config: %v\", err)\n\t}\n\n\toutput, err := opts.CreateOutput()\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to open output file: %v\", err)\n\t}\n\tdefer output.Close()\n\n\tif _, err := cfgToml.Save(output); err != nil {\n\t\treturn fmt.Errorf(\"failed to save config: %v\", err)\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "cmd/nvidia-ctk/config/flags/options.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage flags\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"path/filepath\"\n)\n\n// Options stores options for the config commands\ntype Options struct {\n\tConfig  string\n\tOutput  string\n\tInPlace bool\n}\n\n// Validate checks whether the options are valid.\nfunc (o Options) Validate() error {\n\tif o.InPlace && o.Output != \"\" {\n\t\treturn fmt.Errorf(\"cannot specify both --in-place and --output\")\n\t}\n\n\treturn nil\n}\n\n// GetOutput returns the effective output\nfunc (o Options) GetOutput() string {\n\tif o.InPlace {\n\t\treturn o.Config\n\t}\n\n\treturn o.Output\n}\n\n// EnsureOutputFolder creates the output folder if it does not exist.\n// If the output folder is not specified (i.e. output to STDOUT), it is ignored.\nfunc (o Options) EnsureOutputFolder() error {\n\toutput := o.GetOutput()\n\tif output == \"\" {\n\t\treturn nil\n\t}\n\tif dir := filepath.Dir(output); dir != \"\" {\n\t\treturn os.MkdirAll(dir, 0755)\n\t}\n\treturn nil\n}\n\n// CreateOutput creates the writer for the output.\nfunc (o Options) CreateOutput() (io.WriteCloser, error) {\n\toutput := o.GetOutput()\n\tif output == \"\" {\n\t\treturn nullCloser{os.Stdout}, nil\n\t}\n\n\treturn os.Create(output)\n}\n\n// nullCloser is a writer that does nothing on Close.\ntype nullCloser struct {\n\tio.Writer\n}\n\n// Close is a no-op for a nullCloser.\nfunc (d nullCloser) Close() error {\n\treturn nil\n}\n"
  },
  {
    "path": "cmd/nvidia-ctk/hook/hook.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage hook\n\nimport (\n\t\"github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-cdi-hook/commands\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\n\t\"github.com/urfave/cli/v3\"\n)\n\ntype hookCommand struct {\n\tlogger logger.Interface\n}\n\n// NewCommand constructs CLI subcommand for handling CDI hooks.\nfunc NewCommand(logger logger.Interface) *cli.Command {\n\tc := hookCommand{\n\t\tlogger: logger,\n\t}\n\treturn c.build()\n}\n\n// build\nfunc (m hookCommand) build() *cli.Command {\n\treturn commands.ConfigureCDIHookCommand(m.logger, &cli.Command{\n\t\tName:  \"hook\",\n\t\tUsage: \"A collection of hooks that may be injected into an OCI spec\",\n\t})\n}\n"
  },
  {
    "path": "cmd/nvidia-ctk/info/info.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage info\n\nimport (\n\t\"github.com/urfave/cli/v3\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n)\n\ntype command struct {\n\tlogger logger.Interface\n}\n\n// NewCommand constructs an info command with the specified logger\nfunc NewCommand(logger logger.Interface) *cli.Command {\n\tc := command{\n\t\tlogger: logger,\n\t}\n\treturn c.build()\n}\n\n// build\nfunc (m command) build() *cli.Command {\n\t// Create the 'info' command\n\tinfo := cli.Command{\n\t\tName:  \"info\",\n\t\tUsage: \"Provide information about the system\",\n\t}\n\n\treturn &info\n}\n"
  },
  {
    "path": "cmd/nvidia-ctk/main.go",
    "content": "/**\n# Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage main\n\nimport (\n\t\"context\"\n\t\"os\"\n\n\t\"github.com/sirupsen/logrus\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk/cdi\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk/config\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk/hook\"\n\tinfoCLI \"github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk/info\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk/runtime\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk/system\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/info\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\n\tcli \"github.com/urfave/cli/v3\"\n)\n\n// options defines the options that can be set for the CLI through config files,\n// environment variables, or command line flags\ntype options struct {\n\t// Debug indicates whether the CLI is started in \"debug\" mode\n\tDebug bool\n\t// Quiet indicates whether the CLI is started in \"quiet\" mode\n\tQuiet bool\n\t// Config specifies the path to the config file\n\tConfig string\n}\n\nfunc main() {\n\tlogger := logrus.New()\n\n\t// Create a options struct to hold the parsed environment variables or command line flags\n\topts := options{}\n\n\t// Create the top-level CLI\n\tc := cli.Command{\n\t\tDisableSliceFlagSeparator: true,\n\t\tName:                      \"NVIDIA Container Toolkit CLI\",\n\t\tUseShortOptionHandling:    true,\n\t\tEnableShellCompletion:     true,\n\t\tUsage:                     \"Tools to configure the NVIDIA Container Toolkit\",\n\t\tVersion:                   info.GetVersionString(),\n\t\t// Set log-level for all subcommands\n\t\tBefore: func(ctx context.Context, cmd *cli.Command) (context.Context, error) {\n\t\t\tlogLevel := logrus.InfoLevel\n\t\t\tif opts.Debug {\n\t\t\t\tlogLevel = logrus.DebugLevel\n\t\t\t}\n\t\t\tif opts.Quiet {\n\t\t\t\tlogLevel = logrus.ErrorLevel\n\t\t\t}\n\t\t\tlogger.SetLevel(logLevel)\n\n\t\t\treturn ctx, nil\n\t\t},\n\t\t// Define the subcommands\n\t\tCommands: getCommands(logger, &opts.Config),\n\t\tFlags: []cli.Flag{\n\t\t\t&cli.BoolFlag{\n\t\t\t\tName:        \"debug\",\n\t\t\t\tAliases:     []string{\"d\"},\n\t\t\t\tUsage:       \"Enable debug-level logging\",\n\t\t\t\tDestination: &opts.Debug,\n\t\t\t\tSources:     cli.EnvVars(\"NVIDIA_CTK_DEBUG\"),\n\t\t\t},\n\t\t\t&cli.BoolFlag{\n\t\t\t\tName:        \"quiet\",\n\t\t\t\tUsage:       \"Suppress all output except for errors; overrides --debug\",\n\t\t\t\tDestination: &opts.Quiet,\n\t\t\t\tSources:     cli.EnvVars(\"NVIDIA_CTK_QUIET\"),\n\t\t\t},\n\t\t\t&cli.StringFlag{\n\t\t\t\tName:        \"config\",\n\t\t\t\tUsage:       \"Path to the config file\",\n\t\t\t\tDestination: &opts.Config,\n\t\t\t\tSources:     cli.EnvVars(\"NVIDIA_CTK_CONFIG\"),\n\t\t\t},\n\t\t},\n\t}\n\n\t// Run the CLI\n\terr := c.Run(context.Background(), os.Args)\n\tif err != nil {\n\t\tlogger.Errorf(\"%v\", err)\n\t\tos.Exit(1)\n\t}\n}\n\nfunc getCommands(logger logger.Interface, configFilePath *string) []*cli.Command {\n\treturn []*cli.Command{\n\t\thook.NewCommand(logger),\n\t\truntime.NewCommand(logger),\n\t\tinfoCLI.NewCommand(logger),\n\t\tcdi.NewCommand(logger, configFilePath),\n\t\tsystem.NewCommand(logger),\n\t\tconfig.NewCommand(logger),\n\t}\n}\n"
  },
  {
    "path": "cmd/nvidia-ctk/runtime/configure/configure.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage configure\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"path/filepath\"\n\n\t\"github.com/urfave/cli/v3\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/config/engine\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/config/engine/containerd\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/config/engine/crio\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/config/engine/docker\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/config/ocihook\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/config/toml\"\n)\n\nconst (\n\tdefaultRuntime = \"docker\"\n\n\t// defaultNVIDIARuntimeName is the default name to use in configs for the NVIDIA Container Runtime\n\tdefaultNVIDIARuntimeName = \"nvidia\"\n\t// defaultNVIDIARuntimeExecutable is the default NVIDIA Container Runtime executable file name\n\tdefaultNVIDIARuntimeExecutable          = \"nvidia-container-runtime\"\n\tdefaultNVIDIARuntimeExpecutablePath     = \"/usr/bin/nvidia-container-runtime\"\n\tdefaultNVIDIARuntimeHookExpecutablePath = \"/usr/bin/nvidia-container-runtime-hook\"\n\n\tdefaultContainerdConfigFilePath = \"/etc/containerd/config.toml\"\n\tdefaultCrioConfigFilePath       = \"/etc/crio/crio.conf\"\n\tdefaultDockerConfigFilePath     = \"/etc/docker/daemon.json\"\n\n\tdefaultContainerdDropInConfigFilePath = \"/etc/containerd/conf.d/99-nvidia.toml\"\n\tdefaultCrioDropInConfigFilePath       = \"/etc/crio/conf.d/99-nvidia.toml\"\n\n\tdefaultConfigSource = configSourceFile\n\tconfigSourceCommand = \"command\"\n\tconfigSourceFile    = \"file\"\n\n\t// TODO: We may want to spend some time unifying the handling of config\n\t// files here with the Setup-Cleanup logic in nvidia-ctk-installer.\n\truntimeSpecificDefault = \"RUNTIME_SPECIFIC_DEFAULT\"\n)\n\ntype command struct {\n\tlogger logger.Interface\n}\n\n// NewCommand constructs a configure command with the specified logger\nfunc NewCommand(logger logger.Interface) *cli.Command {\n\tc := command{\n\t\tlogger: logger,\n\t}\n\treturn c.build()\n}\n\n// config defines the options that can be set for the CLI through config files,\n// environment variables, or command line config\ntype config struct {\n\tdryRun           bool\n\truntime          string\n\tconfigFilePath   string\n\tdropInConfigPath string\n\texecutablePath   string\n\tconfigSource     string\n\tmode             string\n\thookFilePath     string\n\n\tnvidiaRuntime struct {\n\t\tname         string\n\t\tpath         string\n\t\thookPath     string\n\t\tsetAsDefault bool\n\t}\n\n\t// cdi-specific options\n\tcdi struct {\n\t\tenabled bool\n\t}\n}\n\nfunc (m command) build() *cli.Command {\n\t// Create a config struct to hold the parsed environment variables or command line flags\n\tconfig := config{}\n\n\t// Create the 'configure' command\n\tconfigure := cli.Command{\n\t\tName:  \"configure\",\n\t\tUsage: \"Add a runtime to the specified container engine\",\n\t\tBefore: func(ctx context.Context, cmd *cli.Command) (context.Context, error) {\n\t\t\treturn ctx, m.validateFlags(&config)\n\t\t},\n\t\tAction: func(ctx context.Context, cmd *cli.Command) error {\n\t\t\treturn m.configureWrapper(&config)\n\t\t},\n\t\tFlags: []cli.Flag{\n\t\t\t&cli.BoolFlag{\n\t\t\t\tName:        \"dry-run\",\n\t\t\t\tUsage:       \"update the runtime configuration as required but don't write changes to disk\",\n\t\t\t\tDestination: &config.dryRun,\n\t\t\t},\n\t\t\t&cli.StringFlag{\n\t\t\t\tName:        \"runtime\",\n\t\t\t\tUsage:       \"the target runtime engine; one of [containerd, crio, docker]\",\n\t\t\t\tValue:       defaultRuntime,\n\t\t\t\tDestination: &config.runtime,\n\t\t\t},\n\t\t\t&cli.StringFlag{\n\t\t\t\tName:        \"config\",\n\t\t\t\tUsage:       \"path to the config file for the target runtime\",\n\t\t\t\tDestination: &config.configFilePath,\n\t\t\t},\n\t\t\t&cli.StringFlag{\n\t\t\t\tName:        \"drop-in-config\",\n\t\t\t\tUsage:       \"path to the NVIDIA-specific config file to create. When specified, runtime configurations are saved to this file instead of modifying the main config file\",\n\t\t\t\tValue:       runtimeSpecificDefault,\n\t\t\t\tDestination: &config.dropInConfigPath,\n\t\t\t},\n\t\t\t&cli.StringFlag{\n\t\t\t\tName:        \"executable-path\",\n\t\t\t\tUsage:       \"The path to the runtime executable. This is used to extract the current config\",\n\t\t\t\tDestination: &config.executablePath,\n\t\t\t},\n\t\t\t&cli.StringFlag{\n\t\t\t\tName:        \"config-mode\",\n\t\t\t\tUsage:       \"the config mode for runtimes that support multiple configuration mechanisms\",\n\t\t\t\tDestination: &config.mode,\n\t\t\t},\n\t\t\t&cli.StringFlag{\n\t\t\t\tName:        \"config-source\",\n\t\t\t\tUsage:       \"the source to retrieve the container runtime configuration; one of [command, file]\\\"\",\n\t\t\t\tDestination: &config.configSource,\n\t\t\t\tValue:       defaultConfigSource,\n\t\t\t},\n\t\t\t&cli.StringFlag{\n\t\t\t\tName:        \"oci-hook-path\",\n\t\t\t\tUsage:       \"the path to the OCI runtime hook to create if --config-mode=oci-hook is specified. If no path is specified, the generated hook is output to STDOUT.\\n\\tNote: The use of OCI hooks is deprecated.\",\n\t\t\t\tDestination: &config.hookFilePath,\n\t\t\t},\n\t\t\t&cli.StringFlag{\n\t\t\t\tName:        \"nvidia-runtime-name\",\n\t\t\t\tUsage:       \"specify the name of the NVIDIA runtime that will be added\",\n\t\t\t\tValue:       defaultNVIDIARuntimeName,\n\t\t\t\tDestination: &config.nvidiaRuntime.name,\n\t\t\t},\n\t\t\t&cli.StringFlag{\n\t\t\t\tName:        \"nvidia-runtime-path\",\n\t\t\t\tAliases:     []string{\"runtime-path\"},\n\t\t\t\tUsage:       \"specify the path to the NVIDIA runtime executable\",\n\t\t\t\tValue:       defaultNVIDIARuntimeExecutable,\n\t\t\t\tDestination: &config.nvidiaRuntime.path,\n\t\t\t},\n\t\t\t&cli.StringFlag{\n\t\t\t\tName:        \"nvidia-runtime-hook-path\",\n\t\t\t\tUsage:       \"specify the path to the NVIDIA Container Runtime hook executable\",\n\t\t\t\tValue:       defaultNVIDIARuntimeHookExpecutablePath,\n\t\t\t\tDestination: &config.nvidiaRuntime.hookPath,\n\t\t\t},\n\t\t\t&cli.BoolFlag{\n\t\t\t\tName:        \"nvidia-set-as-default\",\n\t\t\t\tAliases:     []string{\"set-as-default\"},\n\t\t\t\tUsage:       \"set the NVIDIA runtime as the default runtime\",\n\t\t\t\tDestination: &config.nvidiaRuntime.setAsDefault,\n\t\t\t},\n\t\t\t&cli.BoolFlag{\n\t\t\t\tName:        \"cdi.enabled\",\n\t\t\t\tAliases:     []string{\"cdi.enable\", \"enable-cdi\"},\n\t\t\t\tUsage:       \"Enable CDI in the configured runtime\",\n\t\t\t\tDestination: &config.cdi.enabled,\n\t\t\t},\n\t\t},\n\t}\n\n\treturn &configure\n}\n\nfunc (m command) validateFlags(config *config) error {\n\tif config.mode == \"oci-hook\" || config.mode == \"hook\" {\n\t\tm.logger.Warningf(\"The %q config-mode is deprecated\", config.mode)\n\t\tif !filepath.IsAbs(config.nvidiaRuntime.hookPath) {\n\t\t\treturn fmt.Errorf(\"the NVIDIA runtime hook path %q is not an absolute path\", config.nvidiaRuntime.hookPath)\n\t\t}\n\t\treturn nil\n\t}\n\tif config.mode != \"\" && config.mode != \"config-file\" && config.mode != \"config\" {\n\t\tm.logger.Warningf(\"Ignoring unsupported config mode for %v: %q\", config.runtime, config.mode)\n\t}\n\tconfig.mode = \"config-file\"\n\n\tswitch config.runtime {\n\tcase \"containerd\", \"crio\", \"docker\":\n\t\tbreak\n\tdefault:\n\t\treturn fmt.Errorf(\"unrecognized runtime '%v'\", config.runtime)\n\t}\n\n\tswitch config.runtime {\n\tcase \"containerd\", \"crio\":\n\t\tif config.nvidiaRuntime.path == defaultNVIDIARuntimeExecutable {\n\t\t\tconfig.nvidiaRuntime.path = defaultNVIDIARuntimeExpecutablePath\n\t\t}\n\t\tif !filepath.IsAbs(config.nvidiaRuntime.path) {\n\t\t\treturn fmt.Errorf(\"the NVIDIA runtime path %q is not an absolute path\", config.nvidiaRuntime.path)\n\t\t}\n\t}\n\n\tif config.runtime != \"containerd\" && config.runtime != \"docker\" {\n\t\tif config.cdi.enabled {\n\t\t\tm.logger.Warningf(\"Ignoring cdi.enabled flag for %v\", config.runtime)\n\t\t}\n\t\tconfig.cdi.enabled = false\n\t}\n\n\tif config.executablePath != \"\" && config.runtime == \"docker\" {\n\t\tm.logger.Warningf(\"Ignoring executable-path=%q flag for %v\", config.executablePath, config.runtime)\n\t\tconfig.executablePath = \"\"\n\t}\n\n\tswitch config.configSource {\n\tcase configSourceCommand:\n\t\tif config.runtime == \"docker\" {\n\t\t\tm.logger.Warningf(\"A %v Config Source is not supported for %v; using %v\", config.configSource, config.runtime, configSourceFile)\n\t\t\tconfig.configSource = configSourceFile\n\t\t}\n\tcase configSourceFile:\n\t\tbreak\n\tdefault:\n\t\treturn fmt.Errorf(\"unrecognized Config Source: %v\", config.configSource)\n\t}\n\n\tif config.configFilePath == \"\" {\n\t\tswitch config.runtime {\n\t\tcase \"containerd\":\n\t\t\tconfig.configFilePath = defaultContainerdConfigFilePath\n\t\tcase \"crio\":\n\t\t\tconfig.configFilePath = defaultCrioConfigFilePath\n\t\tcase \"docker\":\n\t\t\tconfig.configFilePath = defaultDockerConfigFilePath\n\t\t}\n\t}\n\n\tif config.dropInConfigPath == runtimeSpecificDefault {\n\t\tswitch config.runtime {\n\t\tcase \"containerd\":\n\t\t\tconfig.dropInConfigPath = defaultContainerdDropInConfigFilePath\n\t\tcase \"crio\":\n\t\t\tconfig.dropInConfigPath = defaultCrioDropInConfigFilePath\n\t\tcase \"docker\":\n\t\t\tconfig.dropInConfigPath = \"\"\n\t\t}\n\t}\n\n\tif config.dropInConfigPath != \"\" && config.runtime == \"docker\" {\n\t\treturn fmt.Errorf(\"runtime %v does not support drop-in configs\", config.runtime)\n\t}\n\n\tif config.dropInConfigPath != \"\" && !filepath.IsAbs(config.dropInConfigPath) {\n\t\treturn fmt.Errorf(\"the drop-in-config path %q is not an absolute path\", config.dropInConfigPath)\n\t}\n\n\treturn nil\n}\n\n// configureWrapper updates the specified container engine config to enable the NVIDIA runtime\nfunc (m command) configureWrapper(config *config) error {\n\tswitch config.mode {\n\tcase \"oci-hook\", \"hook\":\n\t\treturn m.configureOCIHook(config)\n\tcase \"config-file\", \"config\":\n\t\treturn m.configureConfigFile(config)\n\t}\n\treturn fmt.Errorf(\"unsupported config-mode: %v\", config.mode)\n}\n\n// configureConfigFile updates the specified container engine config file to enable the NVIDIA runtime.\nfunc (m command) configureConfigFile(config *config) error {\n\tconfigSource, err := config.resolveConfigSource()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tvar cfg engine.Interface\n\tswitch config.runtime {\n\tcase \"containerd\":\n\t\tcfg, err = containerd.New(\n\t\t\tcontainerd.WithLogger(m.logger),\n\t\t\tcontainerd.WithTopLevelConfigPath(config.configFilePath),\n\t\t\tcontainerd.WithConfigSource(configSource),\n\t\t)\n\tcase \"crio\":\n\t\tcfg, err = crio.New(\n\t\t\tcrio.WithLogger(m.logger),\n\t\t\tcrio.WithTopLevelConfigPath(config.configFilePath),\n\t\t\tcrio.WithConfigSource(configSource),\n\t\t)\n\tcase \"docker\":\n\t\tcfg, err = docker.New(\n\t\t\tdocker.WithLogger(m.logger),\n\t\t\tdocker.WithPath(config.configFilePath),\n\t\t)\n\tdefault:\n\t\terr = fmt.Errorf(\"unrecognized runtime '%v'\", config.runtime)\n\t}\n\tif err != nil || cfg == nil {\n\t\treturn fmt.Errorf(\"unable to load config for runtime %v: %v\", config.runtime, err)\n\t}\n\n\terr = cfg.AddRuntime(\n\t\tconfig.nvidiaRuntime.name,\n\t\tconfig.nvidiaRuntime.path,\n\t\tconfig.nvidiaRuntime.setAsDefault,\n\t)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to update config: %v\", err)\n\t}\n\n\tif config.cdi.enabled {\n\t\tcfg.EnableCDI()\n\t}\n\n\toutputPath := config.getOutputConfigPath()\n\tn, err := cfg.Save(outputPath)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to flush config: %v\", err)\n\t}\n\n\tif outputPath != \"\" {\n\t\tif n == 0 {\n\t\t\tm.logger.Infof(\"Removed empty config from %v\", outputPath)\n\t\t} else {\n\t\t\tm.logger.Infof(\"Wrote updated config to %v\", outputPath)\n\t\t}\n\t\tm.logger.Infof(\"It is recommended that %v daemon be restarted.\", config.runtime)\n\t}\n\n\treturn nil\n}\n\n// resolveConfigSource returns the default config source or the user provided config source\nfunc (c *config) resolveConfigSource() (toml.Loader, error) {\n\tswitch c.configSource {\n\tcase configSourceCommand:\n\t\treturn c.getCommandConfigSource(), nil\n\tcase configSourceFile:\n\t\treturn toml.FromFile(c.configFilePath), nil\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"unrecognized config source: %s\", c.configSource)\n\t}\n}\n\n// getConfigSourceCommand returns the default cli command to fetch the current runtime config\nfunc (c *config) getCommandConfigSource() toml.Loader {\n\tswitch c.runtime {\n\tcase \"containerd\":\n\t\treturn containerd.CommandLineSource(\"\", c.executablePath)\n\tcase \"crio\":\n\t\treturn crio.CommandLineSource(\"\", c.executablePath)\n\t}\n\treturn toml.Empty\n}\n\n// getOutputConfigPath returns the configured config path or \"\" if dry-run is enabled\nfunc (c *config) getOutputConfigPath() string {\n\tif c.dryRun {\n\t\treturn engine.SaveToSTDOUT\n\t}\n\tif c.dropInConfigPath != \"\" {\n\t\treturn c.dropInConfigPath\n\t}\n\treturn c.configFilePath\n}\n\n// configureOCIHook creates and configures the OCI hook for the NVIDIA runtime\nfunc (m *command) configureOCIHook(config *config) error {\n\terr := ocihook.CreateHook(config.hookFilePath, config.nvidiaRuntime.hookPath)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"error creating OCI hook: %v\", err)\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "cmd/nvidia-ctk/runtime/configure/configure_test.go",
    "content": "/**\n# Copyright (c) 2025, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage configure\n\nimport (\n\t\"context\"\n\t\"encoding/json\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"testing\"\n\n\ttestlog \"github.com/sirupsen/logrus/hooks/test\"\n\t\"github.com/stretchr/testify/require\"\n\t\"github.com/urfave/cli/v3\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/devices\"\n)\n\n// TestConfigureLifecycle tests the complete configure command lifecycle for all runtimes\nfunc TestConfigureLifecycle(t *testing.T) {\n\tdefer devices.SetAllForTest()()\n\n\tlogger, _ := testlog.NewNullLogger()\n\n\ttestCases := []struct {\n\t\tdescription        string\n\t\targs               []string\n\t\tprepareEnvironment func(*testing.T, string) error\n\t\texpectedError      error\n\t\tassertConditions   func(*testing.T, string) error\n\t}{\n\t\t// Containerd v2 test cases\n\t\t{\n\t\t\tdescription: \"containerd: config exists with imports\",\n\t\t\targs: []string{\n\t\t\t\t\"--runtime\", \"containerd\",\n\t\t\t\t\"--config\", \"{{ .testRoot }}/etc/containerd/config.toml\",\n\t\t\t\t\"--drop-in-config\", \"{{ .testRoot }}/etc/containerd/conf.d/99-nvidia.toml\",\n\t\t\t},\n\t\t\tprepareEnvironment: func(t *testing.T, testRoot string) error {\n\t\t\t\tconfigPath := filepath.Join(testRoot, \"etc/containerd/config.toml\")\n\t\t\t\trequire.NoError(t, os.MkdirAll(filepath.Dir(configPath), 0755))\n\n\t\t\t\tinitialConfig := `version = 2\nimports = [\"/foo/bar/*.toml\"]\n`\n\t\t\t\treturn os.WriteFile(configPath, []byte(initialConfig), 0600)\n\t\t\t},\n\t\t\tassertConditions: func(t *testing.T, testRoot string) error {\n\t\t\t\tmainConfig := filepath.Join(testRoot, \"etc/containerd/config.toml\")\n\t\t\t\tcontent, err := os.ReadFile(mainConfig)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\texpectedTemplate := `imports = [\"/foo/bar/*.toml\", \"{{ .testRoot }}/etc/containerd/conf.d/*.toml\"]\nversion = 2\n`\n\t\t\t\texpected := strings.ReplaceAll(expectedTemplate, \"{{ .testRoot }}\", testRoot)\n\n\t\t\t\trequire.Equal(t, expected, string(content))\n\t\t\t\treturn nil\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"containerd: v2 config does not exist with drop-in\",\n\t\t\targs: []string{\n\t\t\t\t\"--runtime\", \"containerd\",\n\t\t\t\t\"--config\", \"{{ .testRoot }}/etc/containerd/config.toml\",\n\t\t\t\t\"--drop-in-config\", \"{{ .testRoot }}/etc/containerd/conf.d/99-nvidia.toml\",\n\t\t\t},\n\t\t\tassertConditions: func(t *testing.T, testRoot string) error {\n\t\t\t\t// Verify main config was created with imports\n\t\t\t\tmainConfig := filepath.Join(testRoot, \"etc/containerd/config.toml\")\n\t\t\t\trequire.FileExists(t, mainConfig)\n\n\t\t\t\tcontent, err := os.ReadFile(mainConfig)\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\trequire.Contains(t, string(content), \"imports\")\n\t\t\t\trequire.Contains(t, string(content), \"version = 2\")\n\n\t\t\t\t// Verify drop-in was created\n\t\t\t\tdropIn := filepath.Join(testRoot, \"etc/containerd/conf.d/99-nvidia.toml\")\n\t\t\t\trequire.FileExists(t, dropIn)\n\n\t\t\t\tdropInContent, err := os.ReadFile(dropIn)\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\trequire.Contains(t, string(dropInContent), \"[plugins.\\\"io.containerd.grpc.v1.cri\\\".containerd.runtimes.nvidia]\")\n\t\t\t\trequire.Contains(t, string(dropInContent), \"BinaryName = \\\"/usr/bin/nvidia-container-runtime\\\"\")\n\n\t\t\t\treturn nil\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"containerd: v2 existing config without nvidia runtime\",\n\t\t\targs: []string{\n\t\t\t\t\"--runtime\", \"containerd\",\n\t\t\t\t\"--config\", \"{{ .testRoot }}/etc/containerd/config.toml\",\n\t\t\t\t\"--drop-in-config\", \"{{ .testRoot }}/etc/containerd/conf.d/99-nvidia.toml\",\n\t\t\t\t\"--nvidia-set-as-default\",\n\t\t\t},\n\t\t\tprepareEnvironment: func(t *testing.T, testRoot string) error {\n\t\t\t\tconfigPath := filepath.Join(testRoot, \"etc/containerd/config.toml\")\n\t\t\t\trequire.NoError(t, os.MkdirAll(filepath.Dir(configPath), 0755))\n\n\t\t\t\tinitialConfig := `version = 2\n\n[plugins]\n  [plugins.\"io.containerd.grpc.v1.cri\"]\n    [plugins.\"io.containerd.grpc.v1.cri\".containerd]\n      default_runtime_name = \"runc\"\n\n      [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes]\n        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc.options]\n            BinaryName = \"/usr/bin/runc\"\n`\n\t\t\t\treturn os.WriteFile(configPath, []byte(initialConfig), 0600)\n\t\t\t},\n\t\t\tassertConditions: func(t *testing.T, testRoot string) error {\n\t\t\t\t// Verify main config now has imports\n\t\t\t\tmainConfig := filepath.Join(testRoot, \"etc/containerd/config.toml\")\n\t\t\t\tcontent, err := os.ReadFile(mainConfig)\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\trequire.Contains(t, string(content), \"imports\")\n\n\t\t\t\t// Verify drop-in was created with nvidia as default\n\t\t\t\tdropIn := filepath.Join(testRoot, \"etc/containerd/conf.d/99-nvidia.toml\")\n\t\t\t\trequire.FileExists(t, dropIn)\n\n\t\t\t\tdropInContent, err := os.ReadFile(dropIn)\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\trequire.Contains(t, string(dropInContent), \"default_runtime_name = \\\"nvidia\\\"\")\n\t\t\t\trequire.Contains(t, string(dropInContent), \"[plugins.\\\"io.containerd.grpc.v1.cri\\\".containerd.runtimes.nvidia]\")\n\n\t\t\t\treturn nil\n\t\t\t},\n\t\t},\n\t\t// TODO: v1 config behavior is complex and differs between nvidia-ctk and installer\n\t\t// The installer modifies v1 configs directly, while nvidia-ctk appears to only\n\t\t// create drop-ins. This test is commented out until the expected behavior is clarified.\n\t\t/*\n\t\t\t\t\t{\n\t\t\t\t\t\tdescription: \"containerd: v1 existing config\",\n\t\t\t\t\t\targs: []string{\n\t\t\t\t\t\t\t\"--runtime\", \"containerd\",\n\t\t\t\t\t\t\t\"--config\", \"{{ .testRoot }}/etc/containerd/config.toml\",\n\t\t\t\t\t\t\t\"--drop-in-config\", \"{{ .testRoot }}/etc/containerd/conf.d/99-nvidia.toml\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tprepareEnvironment: func(t *testing.T, testRoot string) error {\n\t\t\t\t\t\t\tconfigPath := filepath.Join(testRoot, \"etc/containerd/config.toml\")\n\t\t\t\t\t\t\trequire.NoError(t, os.MkdirAll(filepath.Dir(configPath), 0755))\n\n\t\t\t\t\t\t\t// v1 config\n\t\t\t\t\t\t\tinitialConfig := `version = 1\n\n\t\t\t[plugins]\n\t\t\t  [plugins.cri]\n\t\t\t    [plugins.cri.containerd]\n\t\t\t      default_runtime_name = \"runc\"\n\n\t\t\t      [plugins.cri.containerd.runtimes]\n\t\t\t        [plugins.cri.containerd.runtimes.runc]\n\t\t\t          runtime_type = \"io.containerd.runtime.v1.linux\"\n\n\t\t\t          [plugins.cri.containerd.runtimes.runc.options]\n\t\t\t            Runtime = \"/usr/bin/runc\"\n\t\t\t`\n\t\t\t\t\t\t\treturn os.WriteFile(configPath, []byte(initialConfig), 0600)\n\t\t\t\t\t\t},\n\t\t\t\t\t\tassertConditions: func(t *testing.T, testRoot string) error {\n\t\t\t\t\t\t\t// The behavior for v1 configs needs clarification\n\t\t\t\t\t\t\treturn nil\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t*/\n\t\t{\n\t\t\tdescription: \"containerd: enable CDI\",\n\t\t\targs: []string{\n\t\t\t\t\"--runtime\", \"containerd\",\n\t\t\t\t\"--config\", \"{{ .testRoot }}/etc/containerd/config.toml\",\n\t\t\t\t\"--drop-in-config\", \"{{ .testRoot }}/etc/containerd/conf.d/99-nvidia.toml\",\n\t\t\t\t\"--cdi.enabled\",\n\t\t\t},\n\t\t\tassertConditions: func(t *testing.T, testRoot string) error {\n\t\t\t\tdropIn := filepath.Join(testRoot, \"etc/containerd/conf.d/99-nvidia.toml\")\n\t\t\t\tcontent, err := os.ReadFile(dropIn)\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\trequire.Contains(t, string(content), \"enable_cdi = true\")\n\t\t\t\treturn nil\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"containerd: custom runtime name and path\",\n\t\t\targs: []string{\n\t\t\t\t\"--runtime\", \"containerd\",\n\t\t\t\t\"--config\", \"{{ .testRoot }}/etc/containerd/config.toml\",\n\t\t\t\t\"--drop-in-config\", \"{{ .testRoot }}/etc/containerd/conf.d/99-nvidia.toml\",\n\t\t\t\t\"--nvidia-runtime-name\", \"gpu\",\n\t\t\t\t\"--nvidia-runtime-path\", \"/custom/path/nvidia-container-runtime\",\n\t\t\t},\n\t\t\tassertConditions: func(t *testing.T, testRoot string) error {\n\t\t\t\tdropIn := filepath.Join(testRoot, \"etc/containerd/conf.d/99-nvidia.toml\")\n\t\t\t\tcontent, err := os.ReadFile(dropIn)\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\trequire.Contains(t, string(content), \"[plugins.\\\"io.containerd.grpc.v1.cri\\\".containerd.runtimes.gpu]\")\n\t\t\t\trequire.Contains(t, string(content), \"BinaryName = \\\"/custom/path/nvidia-container-runtime\\\"\")\n\t\t\t\t// Should NOT have legacy runtimes - only the single specified runtime is added\n\t\t\t\trequire.NotContains(t, string(content), \"gpu-cdi\")\n\t\t\t\trequire.NotContains(t, string(content), \"gpu-legacy\")\n\t\t\t\treturn nil\n\t\t\t},\n\t\t},\n\n\t\t// CRI-O test cases\n\t\t{\n\t\t\tdescription: \"crio: config does not exist with drop-in\",\n\t\t\targs: []string{\n\t\t\t\t\"--runtime\", \"crio\",\n\t\t\t\t\"--config\", \"{{ .testRoot }}/etc/crio/crio.conf\",\n\t\t\t\t\"--drop-in-config\", \"{{ .testRoot }}/etc/crio/conf.d/99-nvidia.toml\",\n\t\t\t},\n\t\t\tassertConditions: func(t *testing.T, testRoot string) error {\n\t\t\t\t// Main config should not exist for crio when using drop-in\n\t\t\t\tmainConfig := filepath.Join(testRoot, \"etc/crio/crio.conf\")\n\t\t\t\trequire.NoFileExists(t, mainConfig)\n\n\t\t\t\t// Verify drop-in was created\n\t\t\t\tdropIn := filepath.Join(testRoot, \"etc/crio/conf.d/99-nvidia.toml\")\n\t\t\t\trequire.FileExists(t, dropIn)\n\n\t\t\t\tcontent, err := os.ReadFile(dropIn)\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\trequire.Contains(t, string(content), \"[crio.runtime.runtimes.nvidia]\")\n\t\t\t\trequire.Contains(t, string(content), \"runtime_path = \\\"/usr/bin/nvidia-container-runtime\\\"\")\n\t\t\t\t// Should NOT have legacy runtimes - only the single specified runtime is added\n\t\t\t\trequire.NotContains(t, string(content), \"nvidia-cdi\")\n\t\t\t\trequire.NotContains(t, string(content), \"nvidia-legacy\")\n\n\t\t\t\treturn nil\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"crio: existing config with nvidia runtime\",\n\t\t\targs: []string{\n\t\t\t\t\"--runtime\", \"crio\",\n\t\t\t\t\"--config\", \"{{ .testRoot }}/etc/crio/crio.conf\",\n\t\t\t\t\"--drop-in-config\", \"{{ .testRoot }}/etc/crio/conf.d/99-nvidia.toml\",\n\t\t\t\t\"--nvidia-set-as-default\",\n\t\t\t},\n\t\t\tprepareEnvironment: func(t *testing.T, testRoot string) error {\n\t\t\t\tconfigPath := filepath.Join(testRoot, \"etc/crio/crio.conf\")\n\t\t\t\trequire.NoError(t, os.MkdirAll(filepath.Dir(configPath), 0755))\n\n\t\t\t\tconfigContent := `[crio]\n[crio.runtime]\ndefault_runtime = \"runc\"\n\n[crio.runtime.runtimes.runc]\nruntime_path = \"/usr/bin/runc\"\nruntime_type = \"oci\"\n\n[crio.runtime.runtimes.nvidia]\nruntime_path = \"/old/path/nvidia-container-runtime\"\nruntime_type = \"oci\"\n`\n\t\t\t\treturn os.WriteFile(configPath, []byte(configContent), 0600)\n\t\t\t},\n\t\t\tassertConditions: func(t *testing.T, testRoot string) error {\n\t\t\t\t// Original config should remain unchanged\n\t\t\t\tmainConfig := filepath.Join(testRoot, \"etc/crio/crio.conf\")\n\t\t\t\tcontent, err := os.ReadFile(mainConfig)\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\trequire.Contains(t, string(content), \"/old/path/nvidia-container-runtime\")\n\n\t\t\t\t// Drop-in should override settings\n\t\t\t\tdropIn := filepath.Join(testRoot, \"etc/crio/conf.d/99-nvidia.toml\")\n\t\t\t\tdropInContent, err := os.ReadFile(dropIn)\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\trequire.Contains(t, string(dropInContent), \"default_runtime = \\\"nvidia\\\"\")\n\t\t\t\trequire.Contains(t, string(dropInContent), \"runtime_path = \\\"/usr/bin/nvidia-container-runtime\\\"\")\n\n\t\t\t\treturn nil\n\t\t\t},\n\t\t},\n\n\t\t// Docker test cases\n\t\t{\n\t\t\tdescription: \"docker: new JSON config\",\n\t\t\targs: []string{\n\t\t\t\t\"--runtime\", \"docker\",\n\t\t\t\t\"--config\", \"{{ .testRoot }}/etc/docker/daemon.json\",\n\t\t\t},\n\t\t\tassertConditions: func(t *testing.T, testRoot string) error {\n\t\t\t\tconfigPath := filepath.Join(testRoot, \"etc/docker/daemon.json\")\n\t\t\t\trequire.FileExists(t, configPath)\n\n\t\t\t\tcontent, err := os.ReadFile(configPath)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\tvar dockerConfig map[string]interface{}\n\t\t\t\terr = json.Unmarshal(content, &dockerConfig)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\truntimes := dockerConfig[\"runtimes\"].(map[string]interface{})\n\t\t\t\trequire.Contains(t, runtimes, \"nvidia\")\n\t\t\t\t// Should NOT have legacy runtimes - only the single specified runtime is added\n\t\t\t\trequire.NotContains(t, runtimes, \"nvidia-cdi\")\n\t\t\t\trequire.NotContains(t, runtimes, \"nvidia-legacy\")\n\n\t\t\t\treturn nil\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"docker: existing config with set as default\",\n\t\t\targs: []string{\n\t\t\t\t\"--runtime\", \"docker\",\n\t\t\t\t\"--config\", \"{{ .testRoot }}/etc/docker/daemon.json\",\n\t\t\t\t\"--nvidia-set-as-default\",\n\t\t\t},\n\t\t\tprepareEnvironment: func(t *testing.T, testRoot string) error {\n\t\t\t\tconfigPath := filepath.Join(testRoot, \"etc/docker/daemon.json\")\n\t\t\t\trequire.NoError(t, os.MkdirAll(filepath.Dir(configPath), 0755))\n\n\t\t\t\texistingConfig := map[string]interface{}{\n\t\t\t\t\t\"log-driver\": \"json-file\",\n\t\t\t\t\t\"log-opts\": map[string]string{\n\t\t\t\t\t\t\"max-size\": \"100m\",\n\t\t\t\t\t},\n\t\t\t\t\t\"storage-driver\": \"overlay2\",\n\t\t\t\t}\n\n\t\t\t\tcontent, err := json.MarshalIndent(existingConfig, \"\", \"    \")\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\treturn os.WriteFile(configPath, content, 0600)\n\t\t\t},\n\t\t\tassertConditions: func(t *testing.T, testRoot string) error {\n\t\t\t\tconfigPath := filepath.Join(testRoot, \"etc/docker/daemon.json\")\n\t\t\t\tcontent, err := os.ReadFile(configPath)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\tvar dockerConfig map[string]interface{}\n\t\t\t\terr = json.Unmarshal(content, &dockerConfig)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\t// Verify existing settings preserved\n\t\t\t\trequire.Equal(t, \"json-file\", dockerConfig[\"log-driver\"])\n\t\t\t\trequire.Equal(t, \"overlay2\", dockerConfig[\"storage-driver\"])\n\n\t\t\t\t// Verify nvidia runtime added and set as default\n\t\t\t\trequire.Equal(t, \"nvidia\", dockerConfig[\"default-runtime\"])\n\t\t\t\truntimes := dockerConfig[\"runtimes\"].(map[string]interface{})\n\t\t\t\trequire.Contains(t, runtimes, \"nvidia\")\n\n\t\t\t\treturn nil\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"docker: enable CDI\",\n\t\t\targs: []string{\n\t\t\t\t\"--runtime\", \"docker\",\n\t\t\t\t\"--config\", \"{{ .testRoot }}/etc/docker/daemon.json\",\n\t\t\t\t\"--cdi.enabled\",\n\t\t\t},\n\t\t\tassertConditions: func(t *testing.T, testRoot string) error {\n\t\t\t\tconfigPath := filepath.Join(testRoot, \"etc/docker/daemon.json\")\n\t\t\t\tcontent, err := os.ReadFile(configPath)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\tvar dockerConfig map[string]interface{}\n\t\t\t\terr = json.Unmarshal(content, &dockerConfig)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\tfeatures := dockerConfig[\"features\"].(map[string]interface{})\n\t\t\t\trequire.Equal(t, true, features[\"cdi\"])\n\n\t\t\t\treturn nil\n\t\t\t},\n\t\t},\n\n\t\t// OCI Hook mode tests\n\t\t{\n\t\t\tdescription: \"oci-hook: create hook file\",\n\t\t\targs: []string{\n\t\t\t\t\"--config-mode\", \"oci-hook\",\n\t\t\t\t\"--oci-hook-path\", \"{{ .testRoot }}/etc/containers/oci/hooks.d/99-nvidia.json\",\n\t\t\t},\n\t\t\tassertConditions: func(t *testing.T, testRoot string) error {\n\t\t\t\thookPath := filepath.Join(testRoot, \"etc/containers/oci/hooks.d/99-nvidia.json\")\n\t\t\t\trequire.FileExists(t, hookPath)\n\n\t\t\t\tcontent, err := os.ReadFile(hookPath)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\tvar hook map[string]interface{}\n\t\t\t\terr = json.Unmarshal(content, &hook)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\trequire.Equal(t, \"1.0.0\", hook[\"version\"])\n\t\t\t\trequire.Contains(t, hook[\"stages\"], \"prestart\")\n\n\t\t\t\thookSpec := hook[\"hook\"].(map[string]interface{})\n\t\t\t\trequire.Equal(t, defaultNVIDIARuntimeHookExpecutablePath, hookSpec[\"path\"])\n\n\t\t\t\twhen := hook[\"when\"].(map[string]interface{})\n\t\t\t\trequire.Equal(t, true, when[\"always\"])\n\n\t\t\t\treturn nil\n\t\t\t},\n\t\t},\n\n\t\t// Dry-run test\n\t\t{\n\t\t\tdescription: \"dry-run: no files written\",\n\t\t\targs: []string{\n\t\t\t\t\"--dry-run\",\n\t\t\t\t\"--runtime\", \"containerd\",\n\t\t\t\t\"--config\", \"{{ .testRoot }}/etc/containerd/config.toml\",\n\t\t\t\t\"--drop-in-config\", \"{{ .testRoot }}/etc/containerd/conf.d/99-nvidia.toml\",\n\t\t\t},\n\t\t\tassertConditions: func(t *testing.T, testRoot string) error {\n\t\t\t\t// Verify no files were created\n\t\t\t\tmainConfig := filepath.Join(testRoot, \"etc/containerd/config.toml\")\n\t\t\t\trequire.NoFileExists(t, mainConfig)\n\n\t\t\t\tdropIn := filepath.Join(testRoot, \"etc/containerd/conf.d/99-nvidia.toml\")\n\t\t\t\trequire.NoFileExists(t, dropIn)\n\n\t\t\t\treturn nil\n\t\t\t},\n\t\t},\n\n\t\t// Error cases\n\t\t{\n\t\t\tdescription:   \"invalid runtime\",\n\t\t\targs:          []string{\"--runtime\", \"invalid\"},\n\t\t\texpectedError: errUnrecognizedRuntime(\"invalid\"),\n\t\t},\n\t\t{\n\t\t\tdescription: \"invalid config-mode falls back to config-file\",\n\t\t\targs: []string{\n\t\t\t\t\"--config-mode\", \"invalid\",\n\t\t\t\t\"--runtime\", \"docker\",\n\t\t\t\t\"--config\", \"{{ .testRoot }}/etc/docker/daemon.json\",\n\t\t\t},\n\t\t\tassertConditions: func(t *testing.T, testRoot string) error {\n\t\t\t\t// Invalid mode should be converted to config-file mode\n\t\t\t\tconfigPath := filepath.Join(testRoot, \"etc/docker/daemon.json\")\n\t\t\t\trequire.FileExists(t, configPath)\n\n\t\t\t\tcontent, err := os.ReadFile(configPath)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\tvar dockerConfig map[string]interface{}\n\t\t\t\terr = json.Unmarshal(content, &dockerConfig)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\t// Should have nvidia runtime added\n\t\t\t\truntimes := dockerConfig[\"runtimes\"].(map[string]interface{})\n\t\t\t\trequire.Contains(t, runtimes, \"nvidia\")\n\n\t\t\t\treturn nil\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\t// Create a temporary directory for the test\n\t\t\ttestRoot := t.TempDir()\n\n\t\t\t// Replace placeholders in args\n\t\t\targs := make([]string, len(tc.args))\n\t\t\tfor i, arg := range tc.args {\n\t\t\t\targs[i] = strings.ReplaceAll(arg, \"{{ .testRoot }}\", testRoot)\n\t\t\t}\n\n\t\t\t// Prepare the environment\n\t\t\tif tc.prepareEnvironment != nil {\n\t\t\t\trequire.NoError(t, tc.prepareEnvironment(t, testRoot))\n\t\t\t}\n\n\t\t\t// Create and run the command\n\t\t\tcmd := NewCommand(logger)\n\t\t\tapp := &cli.Command{\n\t\t\t\tName:     \"test\",\n\t\t\t\tCommands: []*cli.Command{cmd},\n\t\t\t}\n\n\t\t\t// Prepend app name and command to args\n\t\t\tfullArgs := append([]string{\"test\", \"configure\"}, args...)\n\n\t\t\terr := app.Run(context.Background(), fullArgs)\n\n\t\t\tif tc.expectedError != nil {\n\t\t\t\trequire.Error(t, err)\n\t\t\t\trequire.Contains(t, err.Error(), tc.expectedError.Error())\n\t\t\t} else {\n\t\t\t\trequire.NoError(t, err)\n\t\t\t}\n\n\t\t\tif tc.assertConditions != nil {\n\t\t\t\trequire.NoError(t, tc.assertConditions(t, testRoot))\n\t\t\t}\n\t\t})\n\t}\n}\n\n// TestConfigureCommandLineSource tests using command source for config\nfunc TestConfigureCommandLineSource(t *testing.T) {\n\tdefer devices.SetAllForTest()()\n\n\tlogger, _ := testlog.NewNullLogger()\n\n\ttestCases := []struct {\n\t\tdescription        string\n\t\truntime            string\n\t\targs               []string\n\t\tprepareEnvironment func(*testing.T, string) error\n\t\texpectedError      error\n\t\tassertConditions   func(*testing.T, string) error\n\t}{\n\t\t{\n\t\t\tdescription: \"containerd: config from command\",\n\t\t\truntime:     \"containerd\",\n\t\t\targs: []string{\n\t\t\t\t\"--runtime\", \"containerd\",\n\t\t\t\t\"--config-source\", \"command\",\n\t\t\t\t\"--executable-path\", \"{{ .testRoot }}/bin/containerd\",\n\t\t\t\t\"--config\", \"{{ .testRoot }}/etc/containerd/config.toml\",\n\t\t\t\t\"--drop-in-config\", \"{{ .testRoot }}/etc/containerd/conf.d/99-nvidia.toml\",\n\t\t\t},\n\t\t\tprepareEnvironment: func(t *testing.T, testRoot string) error {\n\t\t\t\t// Create a mock containerd executable that outputs config\n\t\t\t\tbinPath := filepath.Join(testRoot, \"bin/containerd\")\n\t\t\t\trequire.NoError(t, os.MkdirAll(filepath.Dir(binPath), 0755)) //nolint:gosec\n\n\t\t\t\tmockScript := `#!/bin/sh\nif [ \"$1\" = \"config\" ] && [ \"$2\" = \"dump\" ]; then\ncat <<EOF\nversion = 2\n\n[plugins]\n  [plugins.\"io.containerd.grpc.v1.cri\"]\n    [plugins.\"io.containerd.grpc.v1.cri\".containerd]\n      default_runtime_name = \"runc\"\n\n      [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes]\n        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc]\n          runtime_type = \"io.containerd.runc.v2\"\nEOF\nfi\n`\n\t\t\t\terr := os.WriteFile(binPath, []byte(mockScript), 0755) //nolint:gosec\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\t// Create the config file path so the top-level config has a valid path to save to\n\t\t\t\tconfigPath := filepath.Join(testRoot, \"etc/containerd/config.toml\")\n\t\t\t\trequire.NoError(t, os.MkdirAll(filepath.Dir(configPath), 0755))\n\t\t\t\trequire.NoError(t, os.WriteFile(configPath, []byte(\"version = 2\\n\"), 0644)) //nolint:gosec\n\n\t\t\t\t// Also create the drop-in config directory\n\t\t\t\tdropInDir := filepath.Join(testRoot, \"etc/containerd/config.d\")\n\t\t\t\trequire.NoError(t, os.MkdirAll(dropInDir, 0755)) //nolint:gosec\n\n\t\t\t\treturn nil\n\t\t\t},\n\t\t\tassertConditions: func(t *testing.T, testRoot string) error {\n\t\t\t\t// Should create drop-in with nvidia runtime\n\t\t\t\tdropIn := filepath.Join(testRoot, \"etc/containerd/conf.d/99-nvidia.toml\")\n\t\t\t\trequire.FileExists(t, dropIn)\n\n\t\t\t\tcontent, err := os.ReadFile(dropIn)\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\trequire.Contains(t, string(content), \"nvidia\")\n\n\t\t\t\t// Check that the top-level config was updated with imports\n\t\t\t\tconfigPath := filepath.Join(testRoot, \"etc/containerd/config.toml\")\n\t\t\t\trequire.FileExists(t, configPath)\n\n\t\t\t\tconfigContent, err := os.ReadFile(configPath)\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\trequire.Contains(t, string(configContent), \"imports\")\n\t\t\t\trequire.Contains(t, string(configContent), \"*.toml\")\n\n\t\t\t\treturn nil\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\ttestRoot := t.TempDir()\n\n\t\t\t// Replace placeholders in args\n\t\t\targs := make([]string, len(tc.args))\n\t\t\tfor i, arg := range tc.args {\n\t\t\t\targs[i] = strings.ReplaceAll(arg, \"{{ .testRoot }}\", testRoot)\n\t\t\t}\n\n\t\t\tif tc.prepareEnvironment != nil {\n\t\t\t\trequire.NoError(t, tc.prepareEnvironment(t, testRoot))\n\t\t\t}\n\n\t\t\tcmd := NewCommand(logger)\n\t\t\tapp := &cli.Command{\n\t\t\t\tName:     \"test\",\n\t\t\t\tCommands: []*cli.Command{cmd},\n\t\t\t}\n\n\t\t\tfullArgs := append([]string{\"test\", \"configure\"}, args...)\n\t\t\terr := app.Run(context.Background(), fullArgs)\n\n\t\t\tif tc.expectedError != nil {\n\t\t\t\trequire.Error(t, err)\n\t\t\t\trequire.Contains(t, err.Error(), tc.expectedError.Error())\n\t\t\t} else {\n\t\t\t\trequire.NoError(t, err)\n\t\t\t}\n\n\t\t\tif tc.assertConditions != nil {\n\t\t\t\trequire.NoError(t, tc.assertConditions(t, testRoot))\n\t\t\t}\n\t\t})\n\t}\n}\n\n// Helper functions for expected errors\nfunc errUnrecognizedRuntime(runtime string) error {\n\treturn cli.Exit(\"unrecognized runtime '\"+runtime+\"'\", 1)\n}\n"
  },
  {
    "path": "cmd/nvidia-ctk/runtime/runtime.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage runtime\n\nimport (\n\t\"github.com/urfave/cli/v3\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk/runtime/configure\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n)\n\ntype runtimeCommand struct {\n\tlogger logger.Interface\n}\n\n// NewCommand constructs a runtime command with the specified logger\nfunc NewCommand(logger logger.Interface) *cli.Command {\n\tc := runtimeCommand{\n\t\tlogger: logger,\n\t}\n\treturn c.build()\n}\n\nfunc (m runtimeCommand) build() *cli.Command {\n\t// Create the 'runtime' command\n\truntime := cli.Command{\n\t\tName:  \"runtime\",\n\t\tUsage: \"A collection of runtime-related utilities for the NVIDIA Container Toolkit\",\n\t\tCommands: []*cli.Command{\n\t\t\tconfigure.NewCommand(m.logger),\n\t\t},\n\t}\n\n\treturn &runtime\n}\n"
  },
  {
    "path": "cmd/nvidia-ctk/system/create-dev-char-symlinks/all.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage devchar\n\nimport (\n\t\"fmt\"\n\t\"path/filepath\"\n\n\t\"github.com/NVIDIA/go-nvlib/pkg/nvpci\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/info/proc/devices\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/nvcaps\"\n)\n\ntype allPossible struct {\n\tlogger       logger.Interface\n\tdevRoot      string\n\tdeviceMajors devices.Devices\n\tmigCaps      nvcaps.MigCaps\n}\n\n// newAllPossible returns a new allPossible device node lister.\n// This lister lists all possible device nodes for NVIDIA GPUs, control devices, and capability devices.\nfunc newAllPossible(logger logger.Interface, devRoot string) (nodeLister, error) {\n\tdeviceMajors, err := devices.GetNVIDIADevices()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed reading device majors: %v\", err)\n\t}\n\n\tvar requiredMajors []devices.Name\n\tmigCaps, err := nvcaps.NewMigCaps()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to read MIG caps: %v\", err)\n\t}\n\tif migCaps == nil {\n\t\tmigCaps = make(nvcaps.MigCaps)\n\t} else {\n\t\trequiredMajors = append(requiredMajors, devices.NVIDIACaps)\n\t}\n\n\trequiredMajors = append(requiredMajors, devices.NVIDIAGPU, devices.NVIDIAUVM)\n\tfor _, name := range requiredMajors {\n\t\tif !deviceMajors.Exists(name) {\n\t\t\treturn nil, fmt.Errorf(\"missing required device major %s\", name)\n\t\t}\n\t}\n\n\tl := allPossible{\n\t\tlogger:       logger,\n\t\tdevRoot:      devRoot,\n\t\tdeviceMajors: deviceMajors,\n\t\tmigCaps:      migCaps,\n\t}\n\n\treturn l, nil\n}\n\n// DeviceNodes returns a list of all possible device nodes for NVIDIA GPUs, control devices, and capability devices.\nfunc (m allPossible) DeviceNodes() ([]deviceNode, error) {\n\tgpus, err := nvpci.New(\n\t\tnvpci.WithPCIDevicesRoot(filepath.Join(m.devRoot, nvpci.PCIDevicesRoot)),\n\t\tnvpci.WithLogger(m.logger),\n\t).GetGPUs()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to get GPU information: %v\", err)\n\t}\n\n\tcount := len(gpus)\n\tif count == 0 {\n\t\tm.logger.Infof(\"No NVIDIA devices found in %s\", m.devRoot)\n\t\treturn nil, nil\n\t}\n\n\tdeviceNodes, err := m.getControlDeviceNodes()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to get control device nodes: %v\", err)\n\t}\n\n\tfor gpu := 0; gpu < count; gpu++ {\n\t\tdeviceNodes = append(deviceNodes, m.getGPUDeviceNodes(gpu)...)\n\t\tdeviceNodes = append(deviceNodes, m.getNVCapDeviceNodes(gpu)...)\n\t}\n\n\treturn deviceNodes, nil\n}\n\n// getControlDeviceNodes generates a list of control devices\nfunc (m allPossible) getControlDeviceNodes() ([]deviceNode, error) {\n\tvar deviceNodes []deviceNode\n\n\t// Define the control devices for standard GPUs.\n\tcontrolDevices := []deviceNode{\n\t\tm.newDeviceNode(devices.NVIDIAGPU, \"/dev/nvidia-modeset\", devices.NVIDIAModesetMinor),\n\t\tm.newDeviceNode(devices.NVIDIAGPU, \"/dev/nvidiactl\", devices.NVIDIACTLMinor),\n\t\tm.newDeviceNode(devices.NVIDIAUVM, \"/dev/nvidia-uvm\", devices.NVIDIAUVMMinor),\n\t\tm.newDeviceNode(devices.NVIDIAUVM, \"/dev/nvidia-uvm-tools\", devices.NVIDIAUVMToolsMinor),\n\t}\n\n\tdeviceNodes = append(deviceNodes, controlDevices...)\n\n\tfor _, migControlDevice := range []nvcaps.MigCap{\"config\", \"monitor\"} {\n\t\tmigControlMinor, exist := m.migCaps[migControlDevice]\n\t\tif !exist {\n\t\t\tcontinue\n\t\t}\n\n\t\td := m.newDeviceNode(\n\t\t\tdevices.NVIDIACaps,\n\t\t\tmigControlMinor.DevicePath(),\n\t\t\tint(migControlMinor),\n\t\t)\n\n\t\tdeviceNodes = append(deviceNodes, d)\n\t}\n\n\treturn deviceNodes, nil\n}\n\n// getGPUDeviceNodes generates a list of device nodes for a given GPU.\nfunc (m allPossible) getGPUDeviceNodes(gpu int) []deviceNode {\n\td := m.newDeviceNode(\n\t\tdevices.NVIDIAGPU,\n\t\tfmt.Sprintf(\"/dev/nvidia%d\", gpu),\n\t\tgpu,\n\t)\n\n\treturn []deviceNode{d}\n}\n\n// getNVCapDeviceNodes generates a list of cap device nodes for a given GPU.\nfunc (m allPossible) getNVCapDeviceNodes(gpu int) []deviceNode {\n\tvar selectedCapMinors []nvcaps.MigMinor\n\tfor gi := 0; ; gi++ {\n\t\tgiCap := nvcaps.NewGPUInstanceCap(gpu, gi)\n\t\tgiMinor, exist := m.migCaps[giCap]\n\t\tif !exist {\n\t\t\tbreak\n\t\t}\n\t\tselectedCapMinors = append(selectedCapMinors, giMinor)\n\t\tfor ci := 0; ; ci++ {\n\t\t\tciCap := nvcaps.NewComputeInstanceCap(gpu, gi, ci)\n\t\t\tciMinor, exist := m.migCaps[ciCap]\n\t\t\tif !exist {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tselectedCapMinors = append(selectedCapMinors, ciMinor)\n\t\t}\n\t}\n\n\tvar deviceNodes []deviceNode\n\tfor _, capMinor := range selectedCapMinors {\n\t\td := m.newDeviceNode(\n\t\t\tdevices.NVIDIACaps,\n\t\t\tcapMinor.DevicePath(),\n\t\t\tint(capMinor),\n\t\t)\n\t\tdeviceNodes = append(deviceNodes, d)\n\t}\n\n\treturn deviceNodes\n}\n\n// newDeviceNode creates a new device node with the specified path and major/minor numbers.\n// The path is adjusted for the specified driver root.\nfunc (m allPossible) newDeviceNode(deviceName devices.Name, path string, minor int) deviceNode {\n\tmajor, _ := m.deviceMajors.Get(deviceName)\n\n\treturn deviceNode{\n\t\tpath:  filepath.Join(m.devRoot, path),\n\t\tmajor: uint32(major),\n\t\tminor: uint32(minor),\n\t}\n}\n"
  },
  {
    "path": "cmd/nvidia-ctk/system/create-dev-char-symlinks/create-dev-char-symlinks.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage devchar\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\n\t\"github.com/urfave/cli/v3\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/system/nvdevices\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/system/nvmodules\"\n)\n\nconst (\n\tdefaultDevCharPath = \"/dev/char\"\n)\n\ntype command struct {\n\tlogger logger.Interface\n}\n\ntype config struct {\n\tdevCharPath       string\n\tdriverRoot        string\n\tdryRun            bool\n\tcreateAll         bool\n\tcreateDeviceNodes bool\n\tloadKernelModules bool\n}\n\n// NewCommand constructs a command sub-command with the specified logger\nfunc NewCommand(logger logger.Interface) *cli.Command {\n\tc := command{\n\t\tlogger: logger,\n\t}\n\treturn c.build()\n}\n\n// build\nfunc (m command) build() *cli.Command {\n\tcfg := config{}\n\n\t// Create the 'create-dev-char-symlinks' command\n\tc := cli.Command{\n\t\tName:  \"create-dev-char-symlinks\",\n\t\tUsage: \"A utility to create symlinks to possible /dev/nv* devices in /dev/char\",\n\t\tBefore: func(ctx context.Context, cmd *cli.Command) (context.Context, error) {\n\t\t\treturn ctx, m.validateFlags(&cfg)\n\t\t},\n\t\tAction: func(ctx context.Context, cmd *cli.Command) error {\n\t\t\treturn m.run(&cfg)\n\t\t},\n\t\tFlags: []cli.Flag{\n\t\t\t&cli.StringFlag{\n\t\t\t\tName:        \"dev-char-path\",\n\t\t\t\tUsage:       \"The path at which the symlinks will be created. Symlinks will be created as `DEV_CHAR`/MAJOR:MINOR where MAJOR and MINOR are the major and minor numbers of a corresponding device node.\",\n\t\t\t\tValue:       defaultDevCharPath,\n\t\t\t\tDestination: &cfg.devCharPath,\n\t\t\t\tSources:     cli.EnvVars(\"DEV_CHAR_PATH\"),\n\t\t\t},\n\t\t\t&cli.StringFlag{\n\t\t\t\tName:        \"driver-root\",\n\t\t\t\tUsage:       \"The path to the driver root. `DRIVER_ROOT`/dev is searched for NVIDIA device nodes.\",\n\t\t\t\tValue:       \"/\",\n\t\t\t\tDestination: &cfg.driverRoot,\n\t\t\t\tSources:     cli.EnvVars(\"NVIDIA_DRIVER_ROOT\", \"DRIVER_ROOT\"),\n\t\t\t},\n\t\t\t&cli.BoolFlag{\n\t\t\t\tName:        \"create-all\",\n\t\t\t\tUsage:       \"Create all possible /dev/char symlinks instead of limiting these to existing device nodes.\",\n\t\t\t\tDestination: &cfg.createAll,\n\t\t\t\tSources:     cli.EnvVars(\"CREATE_ALL\"),\n\t\t\t},\n\t\t\t&cli.BoolFlag{\n\t\t\t\tName:        \"load-kernel-modules\",\n\t\t\t\tUsage:       \"Load the NVIDIA kernel modules before creating symlinks. This is only applicable when --create-all is set.\",\n\t\t\t\tDestination: &cfg.loadKernelModules,\n\t\t\t\tSources:     cli.EnvVars(\"LOAD_KERNEL_MODULES\"),\n\t\t\t},\n\t\t\t&cli.BoolFlag{\n\t\t\t\tName:        \"create-device-nodes\",\n\t\t\t\tUsage:       \"Create the NVIDIA control device nodes in the driver root if they do not exist. This is only applicable when --create-all is set\",\n\t\t\t\tDestination: &cfg.createDeviceNodes,\n\t\t\t\tSources:     cli.EnvVars(\"CREATE_DEVICE_NODES\"),\n\t\t\t},\n\t\t\t&cli.BoolFlag{\n\t\t\t\tName:        \"dry-run\",\n\t\t\t\tUsage:       \"If set, the command will not create any symlinks.\",\n\t\t\t\tValue:       false,\n\t\t\t\tDestination: &cfg.dryRun,\n\t\t\t\tSources:     cli.EnvVars(\"DRY_RUN\"),\n\t\t\t},\n\t\t},\n\t}\n\n\treturn &c\n}\n\nfunc (m command) validateFlags(cfg *config) error {\n\tif cfg.loadKernelModules && !cfg.createAll {\n\t\tm.logger.Warningf(\"load-kernel-modules is only applicable when create-all is set; ignoring\")\n\t\tcfg.loadKernelModules = false\n\t}\n\n\tif cfg.createDeviceNodes && !cfg.createAll {\n\t\tm.logger.Warningf(\"create-device-nodes is only applicable when create-all is set; ignoring\")\n\t\tcfg.createDeviceNodes = false\n\t}\n\n\treturn nil\n}\n\nfunc (m command) run(cfg *config) error {\n\tl, err := NewSymlinkCreator(\n\t\tWithLogger(m.logger),\n\t\tWithDevCharPath(cfg.devCharPath),\n\t\tWithDriverRoot(cfg.driverRoot),\n\t\tWithDryRun(cfg.dryRun),\n\t\tWithCreateAll(cfg.createAll),\n\t\tWithLoadKernelModules(cfg.loadKernelModules),\n\t\tWithCreateDeviceNodes(cfg.createDeviceNodes),\n\t)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to create symlink creator: %v\", err)\n\t}\n\n\terr = l.CreateLinks()\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to create links: %v\", err)\n\t}\n\treturn nil\n}\n\ntype linkCreator struct {\n\tlogger            logger.Interface\n\tlister            nodeLister\n\tdriverRoot        string\n\tdevRoot           string\n\tdevCharPath       string\n\tdryRun            bool\n\tcreateAll         bool\n\tcreateDeviceNodes bool\n\tloadKernelModules bool\n}\n\n// Creator is an interface for creating symlinks to /dev/nv* devices in /dev/char.\ntype Creator interface {\n\tCreateLinks() error\n}\n\n// Option is a functional option for configuring the linkCreator.\ntype Option func(*linkCreator)\n\n// NewSymlinkCreator creates a new linkCreator.\nfunc NewSymlinkCreator(opts ...Option) (Creator, error) {\n\tc := linkCreator{}\n\tfor _, opt := range opts {\n\t\topt(&c)\n\t}\n\tif c.logger == nil {\n\t\tc.logger = logger.New()\n\t}\n\tif c.driverRoot == \"\" {\n\t\tc.driverRoot = \"/\"\n\t}\n\tif c.devRoot == \"\" {\n\t\tc.devRoot = \"/\"\n\t}\n\tif c.devCharPath == \"\" {\n\t\tc.devCharPath = defaultDevCharPath\n\t}\n\n\tif err := c.setup(); err != nil {\n\t\treturn nil, err\n\t}\n\n\tif c.createAll {\n\t\tlister, err := newAllPossible(c.logger, c.devRoot)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed to create all possible device lister: %v\", err)\n\t\t}\n\t\tc.lister = lister\n\t} else {\n\t\tc.lister = existing{c.logger, c.devRoot}\n\t}\n\treturn c, nil\n}\n\nfunc (m linkCreator) setup() error {\n\tif !m.loadKernelModules && !m.createDeviceNodes {\n\t\treturn nil\n\t}\n\n\tif m.loadKernelModules {\n\t\tmodules := nvmodules.New(\n\t\t\tnvmodules.WithLogger(m.logger),\n\t\t\tnvmodules.WithDryRun(m.dryRun),\n\t\t\tnvmodules.WithRoot(m.driverRoot),\n\t\t)\n\t\tif err := modules.LoadAll(); err != nil {\n\t\t\treturn fmt.Errorf(\"failed to load NVIDIA kernel modules: %v\", err)\n\t\t}\n\t}\n\n\tif m.createDeviceNodes {\n\t\tdevices, err := nvdevices.New(\n\t\t\tnvdevices.WithLogger(m.logger),\n\t\t\tnvdevices.WithDryRun(m.dryRun),\n\t\t\tnvdevices.WithDevRoot(m.devRoot),\n\t\t)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif err := devices.CreateNVIDIAControlDevices(); err != nil {\n\t\t\treturn fmt.Errorf(\"failed to create NVIDIA device nodes: %v\", err)\n\t\t}\n\t}\n\treturn nil\n}\n\n// WithDriverRoot sets the driver root path.\n// This is the path in which kernel modules must be loaded.\nfunc WithDriverRoot(root string) Option {\n\treturn func(c *linkCreator) {\n\t\tc.driverRoot = root\n\t}\n}\n\n// WithDevRoot sets the root path for the /dev directory.\nfunc WithDevRoot(root string) Option {\n\treturn func(c *linkCreator) {\n\t\tc.devRoot = root\n\t}\n}\n\n// WithDevCharPath sets the path at which the symlinks will be created.\nfunc WithDevCharPath(path string) Option {\n\treturn func(c *linkCreator) {\n\t\tc.devCharPath = path\n\t}\n}\n\n// WithDryRun sets the dry run flag.\nfunc WithDryRun(dryRun bool) Option {\n\treturn func(c *linkCreator) {\n\t\tc.dryRun = dryRun\n\t}\n}\n\n// WithLogger sets the logger.\nfunc WithLogger(logger logger.Interface) Option {\n\treturn func(c *linkCreator) {\n\t\tc.logger = logger\n\t}\n}\n\n// WithCreateAll sets the createAll flag for the linkCreator.\nfunc WithCreateAll(createAll bool) Option {\n\treturn func(lc *linkCreator) {\n\t\tlc.createAll = createAll\n\t}\n}\n\n// WithLoadKernelModules sets the loadKernelModules flag for the linkCreator.\nfunc WithLoadKernelModules(loadKernelModules bool) Option {\n\treturn func(lc *linkCreator) {\n\t\tlc.loadKernelModules = loadKernelModules\n\t}\n}\n\n// WithCreateDeviceNodes sets the createDeviceNodes flag for the linkCreator.\nfunc WithCreateDeviceNodes(createDeviceNodes bool) Option {\n\treturn func(lc *linkCreator) {\n\t\tlc.createDeviceNodes = createDeviceNodes\n\t}\n}\n\n// CreateLinks creates symlinks for all NVIDIA device nodes found in the driver root.\nfunc (m linkCreator) CreateLinks() error {\n\tdeviceNodes, err := m.lister.DeviceNodes()\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to get device nodes: %v\", err)\n\t}\n\n\tif len(deviceNodes) != 0 && !m.dryRun {\n\t\terr := os.MkdirAll(m.devCharPath, 0755)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"failed to create directory %s: %v\", m.devCharPath, err)\n\t\t}\n\t}\n\n\tfor _, deviceNode := range deviceNodes {\n\t\ttarget := deviceNode.path\n\t\tlinkPath := filepath.Join(m.devCharPath, deviceNode.devCharName())\n\n\t\tm.logger.Infof(\"Creating link %s => %s\", linkPath, target)\n\t\tif m.dryRun {\n\t\t\tcontinue\n\t\t}\n\n\t\terr = os.Symlink(target, linkPath)\n\t\tif err != nil {\n\t\t\tm.logger.Warningf(\"Could not create symlink: %v\", err)\n\t\t}\n\t}\n\n\treturn nil\n}\n\ntype deviceNode struct {\n\tpath  string\n\tmajor uint32\n\tminor uint32\n}\n\nfunc (d deviceNode) devCharName() string {\n\treturn fmt.Sprintf(\"%d:%d\", d.major, d.minor)\n}\n"
  },
  {
    "path": "cmd/nvidia-ctk/system/create-dev-char-symlinks/existing.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage devchar\n\nimport (\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"golang.org/x/sys/unix\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/lookup\"\n)\n\ntype nodeLister interface {\n\tDeviceNodes() ([]deviceNode, error)\n}\n\ntype existing struct {\n\tlogger  logger.Interface\n\tdevRoot string\n}\n\n// DeviceNodes returns a list of NVIDIA device nodes in the specified root.\n// The nvidia-nvswitch* and nvidia-nvlink devices are excluded.\nfunc (m existing) DeviceNodes() ([]deviceNode, error) {\n\tlocator := lookup.AsOptional(\n\t\tlookup.NewCharDeviceLocator(\n\t\t\tlookup.WithLogger(m.logger),\n\t\t\tlookup.WithRoot(m.devRoot),\n\t\t),\n\t)\n\n\tdevices, err := locator.Locate(\"/dev/nvidia*\")\n\tif err != nil {\n\t\tm.logger.Warningf(\"Error while locating device: %v\", err)\n\t}\n\n\tcapDevices, err := locator.Locate(\"/dev/nvidia-caps/nvidia-*\")\n\tif err != nil {\n\t\tm.logger.Warningf(\"Error while locating caps device: %v\", err)\n\t}\n\n\tif len(devices) == 0 && len(capDevices) == 0 {\n\t\tm.logger.Infof(\"No NVIDIA devices found in %s\", m.devRoot)\n\t\treturn nil, nil\n\t}\n\n\tvar deviceNodes []deviceNode\n\tfor _, d := range append(devices, capDevices...) {\n\t\tif m.nodeIsBlocked(d) {\n\t\t\tcontinue\n\t\t}\n\t\tvar stat unix.Stat_t\n\t\terr := unix.Stat(d, &stat)\n\t\tif err != nil {\n\t\t\tm.logger.Warningf(\"Could not stat device: %v\", err)\n\t\t\tcontinue\n\t\t}\n\t\tdeviceNodes = append(deviceNodes, newDeviceNode(d, stat))\n\t}\n\n\treturn deviceNodes, nil\n}\n\n// nodeIsBlocked returns true if the specified device node should be ignored.\nfunc (m existing) nodeIsBlocked(path string) bool {\n\tblockedPrefixes := []string{\"nvidia-fs\", \"nvidia-nvswitch\", \"nvidia-nvlink\"}\n\tnodeName := filepath.Base(path)\n\tfor _, prefix := range blockedPrefixes {\n\t\tif strings.HasPrefix(nodeName, prefix) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "cmd/nvidia-ctk/system/create-dev-char-symlinks/existing_linux.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage devchar\n\nimport \"golang.org/x/sys/unix\"\n\nfunc newDeviceNode(d string, stat unix.Stat_t) deviceNode {\n\tdeviceNode := deviceNode{\n\t\tpath:  d,\n\t\tmajor: unix.Major(stat.Rdev),\n\t\tminor: unix.Minor(stat.Rdev),\n\t}\n\treturn deviceNode\n}\n"
  },
  {
    "path": "cmd/nvidia-ctk/system/create-dev-char-symlinks/existing_other.go",
    "content": "//go:build !linux\n\n/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage devchar\n\nimport \"golang.org/x/sys/unix\"\n\nfunc newDeviceNode(d string, stat unix.Stat_t) deviceNode {\n\tdeviceNode := deviceNode{\n\t\tpath:  d,\n\t\tmajor: unix.Major(uint64(stat.Rdev)),\n\t\tminor: unix.Minor(uint64(stat.Rdev)),\n\t}\n\treturn deviceNode\n}\n"
  },
  {
    "path": "cmd/nvidia-ctk/system/create-device-nodes/create-device-nodes.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage createdevicenodes\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\t\"github.com/urfave/cli/v3\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/system/nvdevices\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/system/nvmodules\"\n)\n\ntype command struct {\n\tlogger logger.Interface\n}\n\ntype options struct {\n\troot    string\n\tdevRoot string\n\n\tdryRun bool\n\n\tcontrol bool\n\n\tloadKernelModules bool\n}\n\n// NewCommand constructs a command sub-command with the specified logger\nfunc NewCommand(logger logger.Interface) *cli.Command {\n\tc := command{\n\t\tlogger: logger,\n\t}\n\treturn c.build()\n}\n\n// build\nfunc (m command) build() *cli.Command {\n\topts := options{}\n\n\tc := cli.Command{\n\t\tName:  \"create-device-nodes\",\n\t\tUsage: \"A utility to create NVIDIA device nodes\",\n\t\tBefore: func(ctx context.Context, cmd *cli.Command) (context.Context, error) {\n\t\t\treturn ctx, m.validateFlags(&opts)\n\t\t},\n\t\tAction: func(ctx context.Context, cmd *cli.Command) error {\n\t\t\treturn m.run(&opts)\n\t\t},\n\t\tFlags: []cli.Flag{\n\t\t\t&cli.StringFlag{\n\t\t\t\tName: \"root\",\n\t\t\t\t// TODO: Remove this alias\n\t\t\t\tAliases: []string{\"driver-root\"},\n\t\t\t\tUsage: \"the path to to the root to use to load the kernel modules. This root must be a chrootable path. \" +\n\t\t\t\t\t\"If device nodes to be created these will be created at `ROOT`/dev unless an alternative path is specified\",\n\t\t\t\tValue:       \"/\",\n\t\t\t\tDestination: &opts.root,\n\t\t\t\t// TODO: Remove the NVIDIA_DRIVER_ROOT and DRIVER_ROOT envvars.\n\t\t\t\tSources: cli.EnvVars(\"ROOT\", \"NVIDIA_DRIVER_ROOT\", \"DRIVER_ROOT\"),\n\t\t\t},\n\t\t\t&cli.StringFlag{\n\t\t\t\tName:        \"dev-root\",\n\t\t\t\tUsage:       \"specify the root where `/dev` is located. If this is not specified, the root is assumed.\",\n\t\t\t\tDestination: &opts.devRoot,\n\t\t\t\tSources:     cli.EnvVars(\"NVIDIA_DEV_ROOT\", \"DEV_ROOT\"),\n\t\t\t},\n\t\t\t&cli.BoolFlag{\n\t\t\t\tName:        \"control-devices\",\n\t\t\t\tUsage:       \"create all control device nodes: nvidiactl, nvidia-modeset, nvidia-uvm, nvidia-uvm-tools\",\n\t\t\t\tDestination: &opts.control,\n\t\t\t},\n\t\t\t&cli.BoolFlag{\n\t\t\t\tName:        \"load-kernel-modules\",\n\t\t\t\tUsage:       \"load the NVIDIA Kernel Modules before creating devices nodes\",\n\t\t\t\tDestination: &opts.loadKernelModules,\n\t\t\t},\n\t\t\t&cli.BoolFlag{\n\t\t\t\tName:        \"dry-run\",\n\t\t\t\tUsage:       \"if set, the command will not perform any operations\",\n\t\t\t\tValue:       false,\n\t\t\t\tDestination: &opts.dryRun,\n\t\t\t\tSources:     cli.EnvVars(\"DRY_RUN\"),\n\t\t\t},\n\t\t},\n\t}\n\n\treturn &c\n}\n\nfunc (m command) validateFlags(opts *options) error {\n\tif opts.devRoot == \"\" && opts.root != \"\" {\n\t\tm.logger.Infof(\"Using dev-root %q\", opts.root)\n\t\topts.devRoot = opts.root\n\t}\n\treturn nil\n}\n\nfunc (m command) run(opts *options) error {\n\tif opts.loadKernelModules {\n\t\tmodules := nvmodules.New(\n\t\t\tnvmodules.WithLogger(m.logger),\n\t\t\tnvmodules.WithDryRun(opts.dryRun),\n\t\t\tnvmodules.WithRoot(opts.root),\n\t\t)\n\t\tif err := modules.LoadAll(); err != nil {\n\t\t\treturn fmt.Errorf(\"failed to load NVIDIA kernel modules: %v\", err)\n\t\t}\n\t}\n\n\tif opts.control {\n\t\tdevices, err := nvdevices.New(\n\t\t\tnvdevices.WithLogger(m.logger),\n\t\t\tnvdevices.WithDryRun(opts.dryRun),\n\t\t\tnvdevices.WithDevRoot(opts.devRoot),\n\t\t)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tm.logger.Infof(\"Creating control device nodes at %s\", opts.devRoot)\n\t\tif err := devices.CreateNVIDIAControlDevices(); err != nil {\n\t\t\treturn fmt.Errorf(\"failed to create NVIDIA control device nodes: %v\", err)\n\t\t}\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "cmd/nvidia-ctk/system/system.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage system\n\nimport (\n\t\"github.com/urfave/cli/v3\"\n\n\tdevchar \"github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk/system/create-dev-char-symlinks\"\n\tdevicenodes \"github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk/system/create-device-nodes\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n)\n\ntype command struct {\n\tlogger logger.Interface\n}\n\n// NewCommand constructs a runtime command with the specified logger\nfunc NewCommand(logger logger.Interface) *cli.Command {\n\tc := command{\n\t\tlogger: logger,\n\t}\n\treturn c.build()\n}\n\nfunc (m command) build() *cli.Command {\n\t// Create the 'system' command\n\tsystem := cli.Command{\n\t\tName:  \"system\",\n\t\tUsage: \"A collection of system-related utilities for the NVIDIA Container Toolkit\",\n\t\tCommands: []*cli.Command{\n\t\t\tdevchar.NewCommand(m.logger),\n\t\t\tdevicenodes.NewCommand(m.logger),\n\t\t},\n\t}\n\n\treturn &system\n}\n"
  },
  {
    "path": "cmd/nvidia-ctk-installer/container/README.md",
    "content": "## Introduction\n\nThis repository contains tools that allow docker, containerd, or cri-o to be configured to use the NVIDIA Container Toolkit.\n\n*Note*: These were copied from the [`container-config` repository](https://gitlab.com/nvidia/container-toolkit/container-config/-/tree/383587f766a55177ede0e39e3810a974043e503e) are being migrated to commands installed with the NVIDIA Container Toolkit.\n\nThese will be migrated into an upcoming `nvidia-ctk` CLI as required.\n\n### Docker\n\nAfter building the `docker` binary, run:\n```bash\ndocker setup \\\n    --runtime-name NAME \\\n        /run/nvidia/toolkit\n```\n\nConfigure the `nvidia-container-runtime` as a docker runtime named `NAME`. If the `--runtime-name` flag is not specified, this runtime would be called `nvidia`.\n\nSince `--set-as-default` is enabled by default, the specified runtime name will also be set as the default docker runtime. This can be disabled by explicityly specifying `--set-as-default=false`.\n\nThe following table describes the behaviour for different `--runtime-name` and `--set-as-default` flag combinations.\n\n| Flags                                                       | Installed Runtimes              | Default Runtime       |\n|-------------------------------------------------------------|:--------------------------------|:----------------------|\n| **NONE SPECIFIED**                                          | `nvidia`                        | `nvidia`              |\n| `--runtime-name nvidia`                                     | `nvidia`                        | `nvidia`              |\n| `--runtime-name NAME`                                       | `NAME`                          | `NAME`                |\n| `--set-as-default`                                          | `nvidia`                        | `nvidia`              |\n| `--set-as-default --runtime-name nvidia`                    | `nvidia`                        | `nvidia`              |\n| `--set-as-default --runtime-name NAME`                      | `NAME`                          | `NAME`                |\n| `--set-as-default=false`                                    | `nvidia`                        | **NOT SET**           |\n| `--set-as-default=false --runtime-name NAME`                | `NAME`                          | **NOT SET**           |\n| `--set-as-default=false --runtime-name nvidia`              | `nvidia`                        | **NOT SET**           |\n\nThese combinations also hold for the environment variables that map to the command line flags: `DOCKER_RUNTIME_NAME`, `DOCKER_SET_AS_DEFAULT`.\n\n### Containerd\nAfter running the `containerd` binary, run:\n```bash\ncontainerd setup \\\n    --runtime-class NAME \\\n        /run/nvidia/toolkit\n```\n\nConfigure the `nvidia-container-runtime` as a runtime class named `NAME`. If the `--runtime-class` flag is not specified, this runtime would be called `nvidia`.\n\nAdding the `--set-as-default` flag as follows:\n```bash\ncontainerd setup \\\n    --runtime-class NAME \\\n    --set-as-default \\\n        /run/nvidia/toolkit\n```\nwill set the runtime class `NAME` (or `nvidia` if not specified) as the default runtime class.\n\nThe following table describes the behaviour for different `--runtime-class` and `--set-as-default` flag combinations.\n\n| Flags                                                  | Installed Runtime Classes       | Default Runtime Class |\n|--------------------------------------------------------|:--------------------------------|:----------------------|\n| **NONE SPECIFIED**                                     | `nvidia`                        | **NOT SET**           |\n| `--runtime-class NAME`                                 | `NAME`                          | **NOT SET**           |\n| `--runtime-class nvidia`                               | `nvidia`                        | **NOT SET**           |\n| `--set-as-default`                                     | `nvidia`                        | `nvidia`              |\n| `--set-as-default --runtime-class NAME`                | `NAME`                          | `NAME`                |\n| `--set-as-default --runtime-class nvidia`              | `nvidia`                        | `nvidia`              |\n\nThese combinations also hold for the environment variables that map to the command line flags.\n"
  },
  {
    "path": "cmd/nvidia-ctk-installer/container/container.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage container\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"os\"\n\t\"os/exec\"\n\t\"strings\"\n\n\t\"github.com/sirupsen/logrus\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk-installer/container/operator\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/config/engine\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/config/toml\"\n)\n\nconst (\n\trestartModeNone    = \"none\"\n\trestartModeSignal  = \"signal\"\n\trestartModeSystemd = \"systemd\"\n)\n\n// Options defines the shared options for the CLIs to configure containers runtimes.\ntype Options struct {\n\tDropInConfig         string\n\tDropInConfigHostPath string\n\t// TopLevelConfigPath stores the path to the top-level config for the runtime.\n\tTopLevelConfigPath string\n\tSocket             string\n\t// ExecutablePath specifies the path to the container runtime executable.\n\t// This is used to extract the current config, for example.\n\t// If a HostRootMount is specified, this path is relative to the host root\n\t// mount.\n\tExecutablePath string\n\t// EnabledCDI indicates whether CDI should be enabled.\n\tEnableCDI     bool\n\tRuntimeName   string\n\tRuntimeDir    string\n\tSetAsDefault  bool\n\tRestartMode   string\n\tHostRootMount string\n\n\tConfigSources []string\n}\n\n// Configure applies the options to the specified config\nfunc (o Options) Configure(cfg engine.Interface) error {\n\terr := o.UpdateConfig(cfg)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to update config: %v\", err)\n\t}\n\treturn o.Flush(cfg)\n}\n\n// Unconfigure removes the options from the specified config\nfunc (o Options) Unconfigure(cfg engine.Interface) error {\n\terr := o.RevertConfig(cfg)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to update config: %v\", err)\n\t}\n\n\tif err := o.Flush(cfg); err != nil {\n\t\treturn err\n\t}\n\n\tif o.DropInConfig == \"\" {\n\t\treturn nil\n\t}\n\t// When a drop-in config is used, we remove the drop-in file explicitly.\n\t// This is require for cases where we may have to include other contents\n\t// in the drop-in file and as such it may not be empty when we flush it.\n\terr = os.Remove(o.DropInConfig)\n\tif err != nil && !errors.Is(err, os.ErrNotExist) {\n\t\treturn fmt.Errorf(\"failed to remove drop-in config file: %w\", err)\n\t}\n\n\treturn nil\n}\n\n// Flush flushes the specified config to disk\nfunc (o Options) Flush(cfg engine.Interface) error {\n\tfilepath := o.DropInConfig\n\tif filepath == \"\" {\n\t\tfilepath = o.TopLevelConfigPath\n\t}\n\tlogrus.Infof(\"Flushing config to %v\", filepath)\n\tn, err := cfg.Save(filepath)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to flush config: %v\", err)\n\t}\n\tif n == 0 {\n\t\tlogrus.Infof(\"Config file is empty, removed\")\n\t}\n\treturn nil\n}\n\n// UpdateConfig updates the specified config to include the nvidia runtimes\nfunc (o Options) UpdateConfig(cfg engine.Interface) error {\n\truntimes := operator.GetRuntimes(\n\t\toperator.WithNvidiaRuntimeName(o.RuntimeName),\n\t\toperator.WithSetAsDefault(o.SetAsDefault),\n\t\toperator.WithRoot(o.RuntimeDir),\n\t)\n\tfor name, runtime := range runtimes {\n\t\terr := cfg.AddRuntime(name, runtime.Path, runtime.SetAsDefault)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"failed to update runtime %q: %v\", name, err)\n\t\t}\n\t}\n\n\tif o.EnableCDI {\n\t\tcfg.EnableCDI()\n\t}\n\n\treturn nil\n}\n\n// RevertConfig reverts the specified config to remove the nvidia runtimes\nfunc (o Options) RevertConfig(cfg engine.Interface) error {\n\truntimes := operator.GetRuntimes(\n\t\toperator.WithNvidiaRuntimeName(o.RuntimeName),\n\t\toperator.WithSetAsDefault(o.SetAsDefault),\n\t\toperator.WithRoot(o.RuntimeDir),\n\t)\n\tfor name := range runtimes {\n\t\terr := cfg.RemoveRuntime(name)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"failed to remove runtime %q: %v\", name, err)\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// Restart restarts the specified service\nfunc (o Options) Restart(service string, withSignal func(string) error) error {\n\tswitch o.RestartMode {\n\tcase restartModeNone:\n\t\tlogrus.Warningf(\"Skipping restart of %v due to --restart-mode=%v\", service, o.RestartMode)\n\t\treturn nil\n\tcase restartModeSignal:\n\t\treturn withSignal(o.Socket)\n\tcase restartModeSystemd:\n\t\treturn o.SystemdRestart(service)\n\t}\n\n\treturn fmt.Errorf(\"invalid restart mode specified: %v\", o.RestartMode)\n}\n\n// SystemdRestart restarts the specified service using systemd\nfunc (o Options) SystemdRestart(service string) error {\n\tvar args []string\n\tvar msg string\n\tif o.HostRootMount != \"\" {\n\t\tmsg = \" on host\"\n\t\targs = append(args, \"chroot\", o.HostRootMount)\n\t}\n\targs = append(args, \"systemctl\", \"restart\", service)\n\n\tlogrus.Infof(\"Restarting %v%v using systemd: %v\", service, msg, args)\n\n\t//nolint:gosec // TODO: Can we harden this so that there is less risk of command injection\n\tcmd := exec.Command(args[0], args[1:]...)\n\tcmd.Stdout = os.Stdout\n\tcmd.Stderr = os.Stderr\n\terr := cmd.Run()\n\tif err != nil {\n\t\treturn fmt.Errorf(\"error restarting %v using systemd: %v\", service, err)\n\t}\n\n\treturn nil\n}\n\n// GetConfigLoaders returns the loaders for the requested config sources.\n// Supported config sources can be specified as:\n//\n// * 'file[=path/to/file]': The specified file or the top-level config path is used.\n// * command: The runtime-specific function supplied as an argument is used.\nfunc (o Options) GetConfigLoaders(commandSourceFunc func(string, string) toml.Loader) ([]toml.Loader, error) {\n\tif len(o.ConfigSources) == 0 {\n\t\treturn []toml.Loader{toml.Empty}, nil\n\t}\n\tvar loaders []toml.Loader\n\tfor _, configSource := range o.ConfigSources {\n\t\tparts := strings.SplitN(configSource, \"=\", 2)\n\t\tsource := strings.TrimSpace(parts[0])\n\t\tswitch source {\n\t\tcase \"file\":\n\t\t\tfileSourcePath := o.TopLevelConfigPath\n\t\t\tif len(parts) > 1 {\n\t\t\t\tfileSourcePath = strings.TrimSpace(parts[1])\n\t\t\t}\n\t\t\tloaders = append(loaders, toml.FromFile(fileSourcePath))\n\t\tcase \"command\":\n\t\t\tif commandSourceFunc == nil {\n\t\t\t\tlogrus.Warnf(\"Ignoring command config source\")\n\t\t\t}\n\t\t\tif len(parts) > 1 {\n\t\t\t\tlogrus.Warnf(\"Ignoring additional command argument %q\", parts[1])\n\t\t\t}\n\t\t\tloaders = append(loaders, commandSourceFunc(o.HostRootMount, o.ExecutablePath))\n\t\tdefault:\n\t\t\treturn nil, fmt.Errorf(\"unsupported config source %q\", configSource)\n\t\t}\n\t}\n\treturn loaders, nil\n}\n"
  },
  {
    "path": "cmd/nvidia-ctk-installer/container/operator/operator.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage operator\n\nimport \"path/filepath\"\n\nconst (\n\tdefaultRuntimeName = \"nvidia\"\n)\n\n// Runtime defines a runtime to be configured.\n// The path and whether the runtime is the default runtime can be specified\ntype Runtime struct {\n\tname         string\n\tPath         string\n\tSetAsDefault bool\n}\n\n// Runtimes defines a set of runtimes to be configured for use in the GPU Operator\ntype Runtimes map[string]Runtime\n\ntype config struct {\n\troot              string\n\tnvidiaRuntimeName string\n\tsetAsDefault      bool\n}\n\n// GetRuntimes returns the set of runtimes to be configured for use with the GPU Operator.\nfunc GetRuntimes(opts ...Option) Runtimes {\n\tc := &config{}\n\tfor _, opt := range opts {\n\t\topt(c)\n\t}\n\n\tif c.nvidiaRuntimeName == \"\" {\n\t\tc.nvidiaRuntimeName = defaultRuntimeName\n\t}\n\n\truntimes := make(Runtimes)\n\truntimes.add(c.nvidiaRuntime())\n\n\tmodes := []string{\"cdi\", \"legacy\"}\n\tfor _, mode := range modes {\n\t\truntimes.add(c.modeRuntime(mode))\n\t}\n\treturn runtimes\n}\n\n// DefaultRuntimeName returns the name of the default runtime.\nfunc (r Runtimes) DefaultRuntimeName() string {\n\tfor _, runtime := range r {\n\t\tif runtime.SetAsDefault {\n\t\t\treturn runtime.name\n\t\t}\n\t}\n\treturn \"\"\n}\n\n// Add a runtime to the set of runtimes.\nfunc (r Runtimes) add(runtime Runtime) {\n\tr[runtime.name] = runtime\n}\n\n// nvidiaRuntime creates a runtime that corresponds to the nvidia runtime.\n// If name is equal to one of the predefined runtimes, `nvidia` is used as the runtime name instead.\nfunc (c config) nvidiaRuntime() Runtime {\n\tpredefinedRuntimes := map[string]struct{}{\n\t\t\"nvidia-cdi\":    {},\n\t\t\"nvidia-legacy\": {},\n\t}\n\tname := c.nvidiaRuntimeName\n\tif _, isPredefinedRuntime := predefinedRuntimes[name]; isPredefinedRuntime {\n\t\tname = defaultRuntimeName\n\t}\n\treturn c.newRuntime(name, \"nvidia-container-runtime\")\n}\n\n// modeRuntime creates a runtime for the specified mode.\nfunc (c config) modeRuntime(mode string) Runtime {\n\treturn c.newRuntime(\"nvidia-\"+mode, \"nvidia-container-runtime.\"+mode)\n}\n\n// newRuntime creates a runtime based on the configuration\nfunc (c config) newRuntime(name string, binary string) Runtime {\n\treturn Runtime{\n\t\tname:         name,\n\t\tPath:         filepath.Join(c.root, binary),\n\t\tSetAsDefault: c.setAsDefault && name == c.nvidiaRuntimeName,\n\t}\n}\n\n// Option is a functional option for configuring set of runtimes.\ntype Option func(*config)\n\n// WithRoot sets the root directory for the runtime binaries.\nfunc WithRoot(root string) Option {\n\treturn func(c *config) {\n\t\tc.root = root\n\t}\n}\n\n// WithNvidiaRuntimeName sets the name of the nvidia runtime.\nfunc WithNvidiaRuntimeName(name string) Option {\n\treturn func(c *config) {\n\t\tc.nvidiaRuntimeName = name\n\t}\n}\n\n// WithSetAsDefault sets the default runtime to the nvidia runtime.\nfunc WithSetAsDefault(set bool) Option {\n\treturn func(c *config) {\n\t\tc.setAsDefault = set\n\t}\n}\n"
  },
  {
    "path": "cmd/nvidia-ctk-installer/container/operator/operator_test.go",
    "content": "/**\n# Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n*/\n\npackage operator\n\nimport (\n\t\"fmt\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestOptions(t *testing.T) {\n\ttestCases := []struct {\n\t\tsetAsDefault           bool\n\t\tnvidiaRuntimeName      string\n\t\texpectedDefaultRuntime string\n\t\texpectedRuntimes       Runtimes\n\t}{\n\t\t{\n\t\t\texpectedRuntimes: Runtimes{\n\t\t\t\t\"nvidia\": Runtime{\n\t\t\t\t\tname: \"nvidia\",\n\t\t\t\t\tPath: \"/usr/bin/nvidia-container-runtime\",\n\t\t\t\t},\n\t\t\t\t\"nvidia-cdi\": Runtime{\n\t\t\t\t\tname: \"nvidia-cdi\",\n\t\t\t\t\tPath: \"/usr/bin/nvidia-container-runtime.cdi\",\n\t\t\t\t},\n\t\t\t\t\"nvidia-legacy\": Runtime{\n\t\t\t\t\tname: \"nvidia-legacy\",\n\t\t\t\t\tPath: \"/usr/bin/nvidia-container-runtime.legacy\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tsetAsDefault:           true,\n\t\t\texpectedDefaultRuntime: \"nvidia\",\n\t\t\texpectedRuntimes: Runtimes{\n\t\t\t\t\"nvidia\": Runtime{\n\t\t\t\t\tname:         \"nvidia\",\n\t\t\t\t\tPath:         \"/usr/bin/nvidia-container-runtime\",\n\t\t\t\t\tSetAsDefault: true,\n\t\t\t\t},\n\t\t\t\t\"nvidia-cdi\": Runtime{\n\t\t\t\t\tname: \"nvidia-cdi\",\n\t\t\t\t\tPath: \"/usr/bin/nvidia-container-runtime.cdi\",\n\t\t\t\t},\n\t\t\t\t\"nvidia-legacy\": Runtime{\n\t\t\t\t\tname: \"nvidia-legacy\",\n\t\t\t\t\tPath: \"/usr/bin/nvidia-container-runtime.legacy\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tsetAsDefault:           true,\n\t\t\tnvidiaRuntimeName:      \"nvidia\",\n\t\t\texpectedDefaultRuntime: \"nvidia\",\n\t\t\texpectedRuntimes: Runtimes{\n\t\t\t\t\"nvidia\": Runtime{\n\t\t\t\t\tname:         \"nvidia\",\n\t\t\t\t\tPath:         \"/usr/bin/nvidia-container-runtime\",\n\t\t\t\t\tSetAsDefault: true,\n\t\t\t\t},\n\t\t\t\t\"nvidia-cdi\": Runtime{\n\t\t\t\t\tname: \"nvidia-cdi\",\n\t\t\t\t\tPath: \"/usr/bin/nvidia-container-runtime.cdi\",\n\t\t\t\t},\n\t\t\t\t\"nvidia-legacy\": Runtime{\n\t\t\t\t\tname: \"nvidia-legacy\",\n\t\t\t\t\tPath: \"/usr/bin/nvidia-container-runtime.legacy\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tsetAsDefault:           true,\n\t\t\tnvidiaRuntimeName:      \"NAME\",\n\t\t\texpectedDefaultRuntime: \"NAME\",\n\t\t\texpectedRuntimes: Runtimes{\n\t\t\t\t\"NAME\": Runtime{\n\t\t\t\t\tname:         \"NAME\",\n\t\t\t\t\tPath:         \"/usr/bin/nvidia-container-runtime\",\n\t\t\t\t\tSetAsDefault: true,\n\t\t\t\t},\n\t\t\t\t\"nvidia-cdi\": Runtime{\n\t\t\t\t\tname: \"nvidia-cdi\",\n\t\t\t\t\tPath: \"/usr/bin/nvidia-container-runtime.cdi\",\n\t\t\t\t},\n\t\t\t\t\"nvidia-legacy\": Runtime{\n\t\t\t\t\tname: \"nvidia-legacy\",\n\t\t\t\t\tPath: \"/usr/bin/nvidia-container-runtime.legacy\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tsetAsDefault:      false,\n\t\t\tnvidiaRuntimeName: \"NAME\",\n\t\t\texpectedRuntimes: Runtimes{\n\t\t\t\t\"NAME\": Runtime{\n\t\t\t\t\tname: \"NAME\",\n\t\t\t\t\tPath: \"/usr/bin/nvidia-container-runtime\",\n\t\t\t\t},\n\t\t\t\t\"nvidia-cdi\": Runtime{\n\t\t\t\t\tname: \"nvidia-cdi\",\n\t\t\t\t\tPath: \"/usr/bin/nvidia-container-runtime.cdi\",\n\t\t\t\t},\n\t\t\t\t\"nvidia-legacy\": Runtime{\n\t\t\t\t\tname: \"nvidia-legacy\",\n\t\t\t\t\tPath: \"/usr/bin/nvidia-container-runtime.legacy\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor i, tc := range testCases {\n\t\tt.Run(fmt.Sprintf(\"%d\", i), func(t *testing.T) {\n\t\t\truntimes := GetRuntimes(\n\t\t\t\tWithNvidiaRuntimeName(tc.nvidiaRuntimeName),\n\t\t\t\tWithSetAsDefault(tc.setAsDefault),\n\t\t\t\tWithRoot(\"/usr/bin\"),\n\t\t\t)\n\n\t\t\trequire.EqualValues(t, tc.expectedRuntimes, runtimes)\n\t\t\trequire.Equal(t, tc.expectedDefaultRuntime, runtimes.DefaultRuntimeName())\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "cmd/nvidia-ctk-installer/container/runtime/containerd/config_test.go",
    "content": "/*\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n*/\n\npackage containerd\n\nimport (\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\tcli \"github.com/urfave/cli/v3\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk-installer/container\"\n)\n\n// TestContainerdConfigLifecycle tests the complete Setup->Cleanup lifecycle for both v1 and v2 configs.\nfunc TestContainerdConfigLifecycle(t *testing.T) {\n\tc := &cli.Command{\n\t\tName: \"test\",\n\t}\n\n\t// TODO: Add test case for v1 and DropInConfig. This should fail.\n\ttestCases := []struct {\n\t\tdescription                 string\n\t\tcontainerOptions            container.Options\n\t\toptions                     Options\n\t\tprepareEnvironment          func(*testing.T, *container.Options, *Options) error\n\t\texpectedSetupError          error\n\t\tassertSetupPostConditions   func(*testing.T, *container.Options, *Options) error\n\t\texpectedCleanupError        error\n\t\tassertCleanupPostConditions func(*testing.T, *container.Options, *Options) error\n\t}{\n\t\t// V1 test cases\n\t\t// Note: We don't test \"v1: top-level config does not exist\" because new configs\n\t\t// are always created as v2 configs by the containerd package\n\t\t{\n\t\t\tdescription: \"v1: existing config without nvidia runtime\",\n\t\t\tcontainerOptions: container.Options{\n\t\t\t\tTopLevelConfigPath: \"{{ .testRoot }}/etc/containerd/config.toml\",\n\t\t\t\tRuntimeName:        \"nvidia\",\n\t\t\t\tRuntimeDir:         \"/usr/bin\",\n\t\t\t\tEnableCDI:          true,\n\t\t\t\tSetAsDefault:       false,\n\t\t\t\tRestartMode:        \"none\",\n\t\t\t\tExecutablePath:     \"not-containerd\",\n\t\t\t},\n\t\t\toptions: Options{\n\t\t\t\truntimeType: \"io.containerd.runc.v2\",\n\t\t\t},\n\t\t\tprepareEnvironment: func(t *testing.T, co *container.Options, o *Options) error {\n\t\t\t\trequire.NoError(t, os.MkdirAll(filepath.Dir(co.TopLevelConfigPath), 0755))\n\n\t\t\t\t// Write initial v1 config\n\t\t\t\tinitialConfig := `version = 1\n\n[plugins]\n  [plugins.cri]\n    [plugins.cri.containerd]\n      default_runtime_name = \"runc\"\n\n      [plugins.cri.containerd.runtimes]\n        [plugins.cri.containerd.runtimes.runc]\n          runtime_type = \"io.containerd.runtime.v1.linux\"\n\n          [plugins.cri.containerd.runtimes.runc.options]\n            Runtime = \"/usr/bin/runc\"\n`\n\t\t\t\trequire.NoError(t, os.WriteFile(co.TopLevelConfigPath, []byte(initialConfig), 0600))\n\t\t\t\treturn nil\n\t\t\t},\n\t\t\tassertSetupPostConditions: func(t *testing.T, co *container.Options, o *Options) error {\n\t\t\t\trequire.FileExists(t, co.TopLevelConfigPath)\n\n\t\t\t\tactual, err := os.ReadFile(co.TopLevelConfigPath)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\texpected := `version = 1\n\n[plugins]\n\n  [plugins.cri]\n\n    [plugins.cri.containerd]\n      default_runtime_name = \"runc\"\n      enable_cdi = true\n\n      [plugins.cri.containerd.runtimes]\n\n        [plugins.cri.containerd.runtimes.nvidia]\n          runtime_type = \"io.containerd.runtime.v1.linux\"\n\n          [plugins.cri.containerd.runtimes.nvidia.options]\n            BinaryName = \"/usr/bin/nvidia-container-runtime\"\n            Runtime = \"/usr/bin/nvidia-container-runtime\"\n\n        [plugins.cri.containerd.runtimes.nvidia-cdi]\n          runtime_type = \"io.containerd.runtime.v1.linux\"\n\n          [plugins.cri.containerd.runtimes.nvidia-cdi.options]\n            BinaryName = \"/usr/bin/nvidia-container-runtime.cdi\"\n            Runtime = \"/usr/bin/nvidia-container-runtime.cdi\"\n\n        [plugins.cri.containerd.runtimes.nvidia-legacy]\n          runtime_type = \"io.containerd.runtime.v1.linux\"\n\n          [plugins.cri.containerd.runtimes.nvidia-legacy.options]\n            BinaryName = \"/usr/bin/nvidia-container-runtime.legacy\"\n            Runtime = \"/usr/bin/nvidia-container-runtime.legacy\"\n\n        [plugins.cri.containerd.runtimes.runc]\n          runtime_type = \"io.containerd.runtime.v1.linux\"\n\n          [plugins.cri.containerd.runtimes.runc.options]\n            Runtime = \"/usr/bin/runc\"\n`\n\t\t\t\trequire.Equal(t, expected, string(actual))\n\t\t\t\treturn nil\n\t\t\t},\n\t\t\tassertCleanupPostConditions: func(t *testing.T, co *container.Options, o *Options) error {\n\t\t\t\trequire.FileExists(t, co.TopLevelConfigPath)\n\n\t\t\t\tactual, err := os.ReadFile(co.TopLevelConfigPath)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\texpected := `version = 1\n\n[plugins]\n\n  [plugins.cri]\n\n    [plugins.cri.containerd]\n      default_runtime_name = \"runc\"\n      enable_cdi = true\n\n      [plugins.cri.containerd.runtimes]\n\n        [plugins.cri.containerd.runtimes.runc]\n          runtime_type = \"io.containerd.runtime.v1.linux\"\n\n          [plugins.cri.containerd.runtimes.runc.options]\n            Runtime = \"/usr/bin/runc\"\n`\n\t\t\t\trequire.Equal(t, expected, string(actual))\n\t\t\t\treturn nil\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"v1: existing config with default_runtime_name and OPTIONS inheritance\",\n\t\t\tcontainerOptions: container.Options{\n\t\t\t\tTopLevelConfigPath: \"{{ .testRoot }}/etc/containerd/config.toml\",\n\t\t\t\tRuntimeName:        \"nvidia\",\n\t\t\t\tRuntimeDir:         \"/usr/bin\",\n\t\t\t\tSetAsDefault:       true,\n\t\t\t\tRestartMode:        \"none\",\n\t\t\t\tExecutablePath:     \"not-containerd\",\n\t\t\t},\n\t\t\toptions: Options{\n\t\t\t\truntimeType: \"io.containerd.runc.v2\",\n\t\t\t},\n\t\t\tprepareEnvironment: func(t *testing.T, co *container.Options, o *Options) error {\n\t\t\t\trequire.NoError(t, os.MkdirAll(filepath.Dir(co.TopLevelConfigPath), 0755))\n\n\t\t\t\t// Write initial v1 config without a default runtime set\n\t\t\t\t// This tests OPTIONS inheritance from an existing runtime\n\t\t\t\tinitialConfig := `version = 1\n\n[plugins]\n  [plugins.cri]\n    [plugins.cri.containerd]\n      [plugins.cri.containerd.runtimes]\n        [plugins.cri.containerd.runtimes.runc]\n          runtime_type = \"io.containerd.runtime.v1.linux\"\n\n          [plugins.cri.containerd.runtimes.runc.options]\n            Runtime = \"/usr/bin/runc\"\n            Root = \"/run/containerd/runc\"\n            ShimDebug = true\n            SystemdCgroup = true\n            NoPivotRoot = false\n`\n\t\t\t\trequire.NoError(t, os.WriteFile(co.TopLevelConfigPath, []byte(initialConfig), 0600))\n\t\t\t\treturn nil\n\t\t\t},\n\t\t\tassertSetupPostConditions: func(t *testing.T, co *container.Options, o *Options) error {\n\t\t\t\trequire.FileExists(t, co.TopLevelConfigPath)\n\n\t\t\t\tactual, err := os.ReadFile(co.TopLevelConfigPath)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\texpected := `version = 1\n\n[plugins]\n\n  [plugins.cri]\n\n    [plugins.cri.containerd]\n      default_runtime_name = \"nvidia\"\n\n      [plugins.cri.containerd.runtimes]\n\n        [plugins.cri.containerd.runtimes.nvidia]\n          runtime_type = \"io.containerd.runtime.v1.linux\"\n\n          [plugins.cri.containerd.runtimes.nvidia.options]\n            BinaryName = \"/usr/bin/nvidia-container-runtime\"\n            NoPivotRoot = false\n            Root = \"/run/containerd/runc\"\n            Runtime = \"/usr/bin/nvidia-container-runtime\"\n            ShimDebug = true\n            SystemdCgroup = true\n\n        [plugins.cri.containerd.runtimes.nvidia-cdi]\n          runtime_type = \"io.containerd.runtime.v1.linux\"\n\n          [plugins.cri.containerd.runtimes.nvidia-cdi.options]\n            BinaryName = \"/usr/bin/nvidia-container-runtime.cdi\"\n            NoPivotRoot = false\n            Root = \"/run/containerd/runc\"\n            Runtime = \"/usr/bin/nvidia-container-runtime.cdi\"\n            ShimDebug = true\n            SystemdCgroup = true\n\n        [plugins.cri.containerd.runtimes.nvidia-legacy]\n          runtime_type = \"io.containerd.runtime.v1.linux\"\n\n          [plugins.cri.containerd.runtimes.nvidia-legacy.options]\n            BinaryName = \"/usr/bin/nvidia-container-runtime.legacy\"\n            NoPivotRoot = false\n            Root = \"/run/containerd/runc\"\n            Runtime = \"/usr/bin/nvidia-container-runtime.legacy\"\n            ShimDebug = true\n            SystemdCgroup = true\n\n        [plugins.cri.containerd.runtimes.runc]\n          runtime_type = \"io.containerd.runtime.v1.linux\"\n\n          [plugins.cri.containerd.runtimes.runc.options]\n            NoPivotRoot = false\n            Root = \"/run/containerd/runc\"\n            Runtime = \"/usr/bin/runc\"\n            ShimDebug = true\n            SystemdCgroup = true\n`\n\t\t\t\trequire.Equal(t, expected, string(actual))\n\t\t\t\treturn nil\n\t\t\t},\n\t\t\tassertCleanupPostConditions: func(t *testing.T, co *container.Options, o *Options) error {\n\t\t\t\trequire.FileExists(t, co.TopLevelConfigPath)\n\n\t\t\t\tactual, err := os.ReadFile(co.TopLevelConfigPath)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\texpected := `version = 1\n\n[plugins]\n\n  [plugins.cri]\n\n    [plugins.cri.containerd]\n\n      [plugins.cri.containerd.runtimes]\n\n        [plugins.cri.containerd.runtimes.runc]\n          runtime_type = \"io.containerd.runtime.v1.linux\"\n\n          [plugins.cri.containerd.runtimes.runc.options]\n            NoPivotRoot = false\n            Root = \"/run/containerd/runc\"\n            Runtime = \"/usr/bin/runc\"\n            ShimDebug = true\n            SystemdCgroup = true\n`\n\t\t\t\trequire.Equal(t, expected, string(actual))\n\t\t\t\treturn nil\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"v1: OPTIONS inheritance from default runtime specified by default_runtime_name\",\n\t\t\tcontainerOptions: container.Options{\n\t\t\t\tTopLevelConfigPath: \"{{ .testRoot }}/etc/containerd/config.toml\",\n\t\t\t\tRuntimeName:        \"nvidia\",\n\t\t\t\tRuntimeDir:         \"/usr/bin\",\n\t\t\t\tSetAsDefault:       false, // Don't change the default runtime\n\t\t\t\tRestartMode:        \"none\",\n\t\t\t\tExecutablePath:     \"not-containerd\",\n\t\t\t},\n\t\t\toptions: Options{\n\t\t\t\truntimeType: \"io.containerd.runc.v2\",\n\t\t\t},\n\t\t\tprepareEnvironment: func(t *testing.T, co *container.Options, o *Options) error {\n\t\t\t\trequire.NoError(t, os.MkdirAll(filepath.Dir(co.TopLevelConfigPath), 0755))\n\n\t\t\t\t// Create config with default_runtime_name pointing to custom runtime\n\t\t\t\t// This tests that OPTIONS are inherited from the default runtime\n\t\t\t\tinitialConfig := `version = 1\n\n[plugins]\n  [plugins.cri]\n    [plugins.cri.containerd]\n      default_runtime_name = \"custom\"\n\n      [plugins.cri.containerd.runtimes]\n        [plugins.cri.containerd.runtimes.custom]\n          runtime_type = \"io.containerd.runtime.v1.linux\"\n\n          [plugins.cri.containerd.runtimes.custom.options]\n            Runtime = \"/usr/bin/custom-runtime\"\n            Root = \"/custom/root\"\n            ShimDebug = false\n            SystemdCgroup = true\n            NoPivotRoot = true\n            CustomOption = \"custom-value\"\n\n        [plugins.cri.containerd.runtimes.runc]\n          runtime_type = \"io.containerd.runtime.v1.linux\"\n\n          [plugins.cri.containerd.runtimes.runc.options]\n            Runtime = \"/usr/bin/runc\"\n`\n\t\t\t\trequire.NoError(t, os.WriteFile(co.TopLevelConfigPath, []byte(initialConfig), 0600))\n\t\t\t\treturn nil\n\t\t\t},\n\t\t\tassertSetupPostConditions: func(t *testing.T, co *container.Options, o *Options) error {\n\t\t\t\trequire.FileExists(t, co.TopLevelConfigPath)\n\n\t\t\t\tactual, err := os.ReadFile(co.TopLevelConfigPath)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\t// Verify that nvidia runtimes inherit OPTIONS from the default runtime (custom)\n\t\t\t\texpected := `version = 1\n\n[plugins]\n\n  [plugins.cri]\n\n    [plugins.cri.containerd]\n      default_runtime_name = \"custom\"\n\n      [plugins.cri.containerd.runtimes]\n\n        [plugins.cri.containerd.runtimes.custom]\n          runtime_type = \"io.containerd.runtime.v1.linux\"\n\n          [plugins.cri.containerd.runtimes.custom.options]\n            CustomOption = \"custom-value\"\n            NoPivotRoot = true\n            Root = \"/custom/root\"\n            Runtime = \"/usr/bin/custom-runtime\"\n            ShimDebug = false\n            SystemdCgroup = true\n\n        [plugins.cri.containerd.runtimes.nvidia]\n          runtime_type = \"io.containerd.runtime.v1.linux\"\n\n          [plugins.cri.containerd.runtimes.nvidia.options]\n            BinaryName = \"/usr/bin/nvidia-container-runtime\"\n            CustomOption = \"custom-value\"\n            NoPivotRoot = true\n            Root = \"/custom/root\"\n            Runtime = \"/usr/bin/nvidia-container-runtime\"\n            ShimDebug = false\n            SystemdCgroup = true\n\n        [plugins.cri.containerd.runtimes.nvidia-cdi]\n          runtime_type = \"io.containerd.runtime.v1.linux\"\n\n          [plugins.cri.containerd.runtimes.nvidia-cdi.options]\n            BinaryName = \"/usr/bin/nvidia-container-runtime.cdi\"\n            CustomOption = \"custom-value\"\n            NoPivotRoot = true\n            Root = \"/custom/root\"\n            Runtime = \"/usr/bin/nvidia-container-runtime.cdi\"\n            ShimDebug = false\n            SystemdCgroup = true\n\n        [plugins.cri.containerd.runtimes.nvidia-legacy]\n          runtime_type = \"io.containerd.runtime.v1.linux\"\n\n          [plugins.cri.containerd.runtimes.nvidia-legacy.options]\n            BinaryName = \"/usr/bin/nvidia-container-runtime.legacy\"\n            CustomOption = \"custom-value\"\n            NoPivotRoot = true\n            Root = \"/custom/root\"\n            Runtime = \"/usr/bin/nvidia-container-runtime.legacy\"\n            ShimDebug = false\n            SystemdCgroup = true\n\n        [plugins.cri.containerd.runtimes.runc]\n          runtime_type = \"io.containerd.runtime.v1.linux\"\n\n          [plugins.cri.containerd.runtimes.runc.options]\n            Runtime = \"/usr/bin/runc\"\n`\n\t\t\t\trequire.Equal(t, expected, string(actual))\n\t\t\t\treturn nil\n\t\t\t},\n\t\t\tassertCleanupPostConditions: func(t *testing.T, co *container.Options, o *Options) error {\n\t\t\t\trequire.FileExists(t, co.TopLevelConfigPath)\n\n\t\t\t\tactual, err := os.ReadFile(co.TopLevelConfigPath)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\t// After cleanup, should return to original state\n\t\t\t\texpected := `version = 1\n\n[plugins]\n\n  [plugins.cri]\n\n    [plugins.cri.containerd]\n      default_runtime_name = \"custom\"\n\n      [plugins.cri.containerd.runtimes]\n\n        [plugins.cri.containerd.runtimes.custom]\n          runtime_type = \"io.containerd.runtime.v1.linux\"\n\n          [plugins.cri.containerd.runtimes.custom.options]\n            CustomOption = \"custom-value\"\n            NoPivotRoot = true\n            Root = \"/custom/root\"\n            Runtime = \"/usr/bin/custom-runtime\"\n            ShimDebug = false\n            SystemdCgroup = true\n\n        [plugins.cri.containerd.runtimes.runc]\n          runtime_type = \"io.containerd.runtime.v1.linux\"\n\n          [plugins.cri.containerd.runtimes.runc.options]\n            Runtime = \"/usr/bin/runc\"\n`\n\t\t\t\trequire.Equal(t, expected, string(actual))\n\t\t\t\treturn nil\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"v1: existing config with default_runtime_name set and restoration on cleanup\",\n\t\t\tcontainerOptions: container.Options{\n\t\t\t\tTopLevelConfigPath: \"{{ .testRoot }}/etc/containerd/config.toml\",\n\t\t\t\tRuntimeName:        \"nvidia\",\n\t\t\t\tRuntimeDir:         \"/usr/bin\",\n\t\t\t\tSetAsDefault:       true,\n\t\t\t\tRestartMode:        \"none\",\n\t\t\t\tExecutablePath:     \"not-containerd\",\n\t\t\t},\n\t\t\toptions: Options{\n\t\t\t\truntimeType: \"io.containerd.runc.v2\",\n\t\t\t},\n\t\t\tprepareEnvironment: func(t *testing.T, co *container.Options, o *Options) error {\n\t\t\t\trequire.NoError(t, os.MkdirAll(filepath.Dir(co.TopLevelConfigPath), 0755))\n\n\t\t\t\t// Write initial v1 config with default_runtime_name set to \"runc\"\n\t\t\t\tinitialConfig := `version = 1\n\n[plugins]\n  [plugins.cri]\n    [plugins.cri.containerd]\n      default_runtime_name = \"runc\"\n\n      [plugins.cri.containerd.runtimes]\n        [plugins.cri.containerd.runtimes.runc]\n          runtime_type = \"io.containerd.runtime.v1.linux\"\n\n          [plugins.cri.containerd.runtimes.runc.options]\n            Runtime = \"/usr/bin/runc\"\n`\n\t\t\t\trequire.NoError(t, os.WriteFile(co.TopLevelConfigPath, []byte(initialConfig), 0600))\n\t\t\t\treturn nil\n\t\t\t},\n\t\t\tassertSetupPostConditions: func(t *testing.T, co *container.Options, o *Options) error {\n\t\t\t\trequire.FileExists(t, co.TopLevelConfigPath)\n\n\t\t\t\tactual, err := os.ReadFile(co.TopLevelConfigPath)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\texpected := `version = 1\n\n[plugins]\n\n  [plugins.cri]\n\n    [plugins.cri.containerd]\n      default_runtime_name = \"nvidia\"\n\n      [plugins.cri.containerd.runtimes]\n\n        [plugins.cri.containerd.runtimes.nvidia]\n          runtime_type = \"io.containerd.runtime.v1.linux\"\n\n          [plugins.cri.containerd.runtimes.nvidia.options]\n            BinaryName = \"/usr/bin/nvidia-container-runtime\"\n            Runtime = \"/usr/bin/nvidia-container-runtime\"\n\n        [plugins.cri.containerd.runtimes.nvidia-cdi]\n          runtime_type = \"io.containerd.runtime.v1.linux\"\n\n          [plugins.cri.containerd.runtimes.nvidia-cdi.options]\n            BinaryName = \"/usr/bin/nvidia-container-runtime.cdi\"\n            Runtime = \"/usr/bin/nvidia-container-runtime.cdi\"\n\n        [plugins.cri.containerd.runtimes.nvidia-legacy]\n          runtime_type = \"io.containerd.runtime.v1.linux\"\n\n          [plugins.cri.containerd.runtimes.nvidia-legacy.options]\n            BinaryName = \"/usr/bin/nvidia-container-runtime.legacy\"\n            Runtime = \"/usr/bin/nvidia-container-runtime.legacy\"\n\n        [plugins.cri.containerd.runtimes.runc]\n          runtime_type = \"io.containerd.runtime.v1.linux\"\n\n          [plugins.cri.containerd.runtimes.runc.options]\n            Runtime = \"/usr/bin/runc\"\n`\n\t\t\t\trequire.Equal(t, expected, string(actual))\n\t\t\t\treturn nil\n\t\t\t},\n\t\t\tassertCleanupPostConditions: func(t *testing.T, co *container.Options, o *Options) error {\n\t\t\t\trequire.FileExists(t, co.TopLevelConfigPath)\n\n\t\t\t\tactual, err := os.ReadFile(co.TopLevelConfigPath)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\t// Current implementation limitation: default_runtime_name is deleted entirely\n\t\t\t\t// when the default runtime is removed, rather than being restored\n\t\t\t\texpected := `version = 1\n\n[plugins]\n\n  [plugins.cri]\n\n    [plugins.cri.containerd]\n\n      [plugins.cri.containerd.runtimes]\n\n        [plugins.cri.containerd.runtimes.runc]\n          runtime_type = \"io.containerd.runtime.v1.linux\"\n\n          [plugins.cri.containerd.runtimes.runc.options]\n            Runtime = \"/usr/bin/runc\"\n`\n\t\t\t\trequire.Equal(t, expected, string(actual))\n\t\t\t\treturn nil\n\t\t\t},\n\t\t},\n\t\t// V2 test cases\n\t\t{\n\t\t\tdescription: \"v2: top-level config does not exist\",\n\t\t\tcontainerOptions: container.Options{\n\t\t\t\tTopLevelConfigPath: \"{{ .testRoot }}/etc/containerd/config.toml\",\n\t\t\t\tDropInConfig:       \"{{ .testRoot }}/conf.d/99-nvidia.toml\",\n\t\t\t\tRuntimeName:        \"nvidia\",\n\t\t\t\tRuntimeDir:         \"/usr/bin\",\n\t\t\t\tSetAsDefault:       false,\n\t\t\t\tRestartMode:        \"none\",\n\t\t\t\tExecutablePath:     \"not-containerd\",\n\t\t\t},\n\t\t\toptions: Options{\n\t\t\t\truntimeType: \"io.containerd.runc.v2\",\n\t\t\t},\n\t\t\tassertSetupPostConditions: func(t *testing.T, co *container.Options, o *Options) error {\n\t\t\t\trequire.FileExists(t, co.TopLevelConfigPath)\n\n\t\t\t\tactual, err := os.ReadFile(co.TopLevelConfigPath)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\texpected := `imports = [\"` + filepath.Dir(co.DropInConfig) + `/*.toml\"]\nversion = 2\n`\n\t\t\t\trequire.Equal(t, expected, string(actual))\n\n\t\t\t\trequire.FileExists(t, co.DropInConfig)\n\n\t\t\t\tactualDropIn, err := os.ReadFile(co.DropInConfig)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\texpectedDropIn := `version = 2\n\n[plugins]\n\n  [plugins.\"io.containerd.grpc.v1.cri\"]\n\n    [plugins.\"io.containerd.grpc.v1.cri\".containerd]\n\n      [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes]\n\n        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.nvidia]\n          privileged_without_host_devices = false\n          runtime_engine = \"\"\n          runtime_root = \"\"\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.nvidia.options]\n            BinaryName = \"/usr/bin/nvidia-container-runtime\"\n\n        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.nvidia-cdi]\n          privileged_without_host_devices = false\n          runtime_engine = \"\"\n          runtime_root = \"\"\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.nvidia-cdi.options]\n            BinaryName = \"/usr/bin/nvidia-container-runtime.cdi\"\n\n        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.nvidia-legacy]\n          privileged_without_host_devices = false\n          runtime_engine = \"\"\n          runtime_root = \"\"\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.nvidia-legacy.options]\n            BinaryName = \"/usr/bin/nvidia-container-runtime.legacy\"\n`\n\t\t\t\trequire.Equal(t, expectedDropIn, string(actualDropIn))\n\t\t\t\treturn nil\n\t\t\t},\n\t\t\tassertCleanupPostConditions: func(t *testing.T, co *container.Options, o *Options) error {\n\t\t\t\trequire.NoFileExists(t, co.TopLevelConfigPath)\n\t\t\t\trequire.NoFileExists(t, co.DropInConfig)\n\t\t\t\treturn nil\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"v2: top-level config does not exist with drop-in-config-host-path\",\n\t\t\tcontainerOptions: container.Options{\n\t\t\t\tTopLevelConfigPath:   \"{{ .testRoot }}/etc/containerd/config.toml\",\n\t\t\t\tDropInConfig:         \"{{ .testRoot }}/conf.d/99-nvidia.toml\",\n\t\t\t\tDropInConfigHostPath: \"/some/host/path/conf.d/99-nvidia.toml\",\n\t\t\t\tRuntimeName:          \"nvidia\",\n\t\t\t\tRuntimeDir:           \"/usr/bin\",\n\t\t\t\tSetAsDefault:         false,\n\t\t\t\tRestartMode:          \"none\",\n\t\t\t\tExecutablePath:       \"not-containerd\",\n\t\t\t},\n\t\t\toptions: Options{\n\t\t\t\truntimeType: \"io.containerd.runc.v2\",\n\t\t\t},\n\t\t\tassertSetupPostConditions: func(t *testing.T, co *container.Options, o *Options) error {\n\t\t\t\trequire.FileExists(t, co.TopLevelConfigPath)\n\n\t\t\t\tactual, err := os.ReadFile(co.TopLevelConfigPath)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\texpected := `imports = [\"/some/host/path/conf.d/*.toml\"]\nversion = 2\n`\n\t\t\t\trequire.Equal(t, expected, string(actual))\n\n\t\t\t\trequire.NoFileExists(t, co.DropInConfigHostPath)\n\t\t\t\trequire.FileExists(t, co.DropInConfig)\n\n\t\t\t\tactualDropIn, err := os.ReadFile(co.DropInConfig)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\texpectedDropIn := `version = 2\n\n[plugins]\n\n  [plugins.\"io.containerd.grpc.v1.cri\"]\n\n    [plugins.\"io.containerd.grpc.v1.cri\".containerd]\n\n      [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes]\n\n        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.nvidia]\n          privileged_without_host_devices = false\n          runtime_engine = \"\"\n          runtime_root = \"\"\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.nvidia.options]\n            BinaryName = \"/usr/bin/nvidia-container-runtime\"\n\n        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.nvidia-cdi]\n          privileged_without_host_devices = false\n          runtime_engine = \"\"\n          runtime_root = \"\"\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.nvidia-cdi.options]\n            BinaryName = \"/usr/bin/nvidia-container-runtime.cdi\"\n\n        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.nvidia-legacy]\n          privileged_without_host_devices = false\n          runtime_engine = \"\"\n          runtime_root = \"\"\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.nvidia-legacy.options]\n            BinaryName = \"/usr/bin/nvidia-container-runtime.legacy\"\n`\n\t\t\t\trequire.Equal(t, expectedDropIn, string(actualDropIn))\n\t\t\t\treturn nil\n\t\t\t},\n\t\t\tassertCleanupPostConditions: func(t *testing.T, co *container.Options, o *Options) error {\n\t\t\t\trequire.NoFileExists(t, co.TopLevelConfigPath)\n\t\t\t\trequire.NoFileExists(t, co.DropInConfig)\n\t\t\t\treturn nil\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"v2: existing config without nvidia runtime and CDI enabled\",\n\t\t\tcontainerOptions: container.Options{\n\t\t\t\tTopLevelConfigPath: \"{{ .testRoot }}/etc/containerd/config.toml\",\n\t\t\t\tDropInConfig:       \"{{ .testRoot }}/conf.d/99-nvidia.toml\",\n\t\t\t\tRuntimeName:        \"nvidia\",\n\t\t\t\tRuntimeDir:         \"/usr/bin\",\n\t\t\t\tEnableCDI:          true,\n\t\t\t\tSetAsDefault:       false,\n\t\t\t\tRestartMode:        \"none\",\n\t\t\t\tExecutablePath:     \"not-containerd\",\n\t\t\t},\n\t\t\toptions: Options{\n\t\t\t\truntimeType: \"io.containerd.runc.v2\",\n\t\t\t},\n\t\t\tprepareEnvironment: func(t *testing.T, co *container.Options, o *Options) error {\n\t\t\t\trequire.NoError(t, os.MkdirAll(filepath.Dir(co.TopLevelConfigPath), 0755))\n\n\t\t\t\t// Write initial config\n\t\t\t\tinitialConfig := `version = 2\n\n[plugins]\n  [plugins.\"io.containerd.grpc.v1.cri\"]\n    [plugins.\"io.containerd.grpc.v1.cri\".containerd]\n      default_runtime_name = \"runc\"\n\n      [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes]\n        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc.options]\n            BinaryName = \"/usr/bin/runc\"\n`\n\t\t\t\trequire.NoError(t, os.WriteFile(co.TopLevelConfigPath, []byte(initialConfig), 0600))\n\t\t\t\treturn nil\n\t\t\t},\n\t\t\tassertSetupPostConditions: func(t *testing.T, co *container.Options, o *Options) error {\n\t\t\t\trequire.FileExists(t, co.TopLevelConfigPath)\n\n\t\t\t\tactual, err := os.ReadFile(co.TopLevelConfigPath)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\texpected := `imports = [\"` + filepath.Dir(co.DropInConfig) + `/*.toml\"]\nversion = 2\n\n[plugins]\n\n  [plugins.\"io.containerd.grpc.v1.cri\"]\n\n    [plugins.\"io.containerd.grpc.v1.cri\".containerd]\n      default_runtime_name = \"runc\"\n\n      [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes]\n\n        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc.options]\n            BinaryName = \"/usr/bin/runc\"\n`\n\n\t\t\t\t// TODO (follow-up): Add a function to compare toml files by contents.\n\t\t\t\trequire.Equal(t, expected, string(actual))\n\n\t\t\t\trequire.FileExists(t, co.DropInConfig)\n\n\t\t\t\tactualDropIn, err := os.ReadFile(co.DropInConfig)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\texpectedDropIn := `version = 2\n\n[plugins]\n\n  [plugins.\"io.containerd.grpc.v1.cri\"]\n    enable_cdi = true\n\n    [plugins.\"io.containerd.grpc.v1.cri\".containerd]\n      default_runtime_name = \"runc\"\n\n      [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes]\n\n        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.nvidia]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.nvidia.options]\n            BinaryName = \"/usr/bin/nvidia-container-runtime\"\n\n        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.nvidia-cdi]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.nvidia-cdi.options]\n            BinaryName = \"/usr/bin/nvidia-container-runtime.cdi\"\n\n        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.nvidia-legacy]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.nvidia-legacy.options]\n            BinaryName = \"/usr/bin/nvidia-container-runtime.legacy\"\n\n        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc.options]\n            BinaryName = \"/usr/bin/runc\"\n`\n\t\t\t\trequire.Equal(t, expectedDropIn, string(actualDropIn))\n\t\t\t\treturn nil\n\t\t\t},\n\t\t\tassertCleanupPostConditions: func(t *testing.T, co *container.Options, o *Options) error {\n\t\t\t\trequire.FileExists(t, co.TopLevelConfigPath)\n\n\t\t\t\tactual, err := os.ReadFile(co.TopLevelConfigPath)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\t// TODO: What is the expectation here? Do we expect that the imports \\\n\t\t\t\t// are updated.\n\t\t\t\t// TODO: Add a test case, where the original config consists of only imports and version\n\t\t\t\t// with the imports referring to another location.\n\t\t\t\texpected := `imports = [\"` + filepath.Dir(co.DropInConfig) + `/*.toml\"]\nversion = 2\n\n[plugins]\n\n  [plugins.\"io.containerd.grpc.v1.cri\"]\n\n    [plugins.\"io.containerd.grpc.v1.cri\".containerd]\n      default_runtime_name = \"runc\"\n\n      [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes]\n\n        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc.options]\n            BinaryName = \"/usr/bin/runc\"\n`\n\t\t\t\trequire.Equal(t, expected, string(actual))\n\n\t\t\t\trequire.NoFileExists(t, co.DropInConfig)\n\n\t\t\t\treturn nil\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"v2: existing config with nvidia runtime using old path already present\",\n\t\t\tcontainerOptions: container.Options{\n\t\t\t\tTopLevelConfigPath: \"{{ .testRoot }}/etc/containerd/config.toml\",\n\t\t\t\tDropInConfig:       \"{{ .testRoot }}/conf.d/99-nvidia.toml\",\n\t\t\t\tRuntimeName:        \"nvidia\",\n\t\t\t\tRuntimeDir:         \"/usr/bin\",\n\t\t\t\tSetAsDefault:       true,\n\t\t\t\tRestartMode:        \"none\",\n\t\t\t\tExecutablePath:     \"not-containerd\",\n\t\t\t},\n\t\t\toptions: Options{\n\t\t\t\truntimeType: \"io.containerd.runc.v2\",\n\t\t\t},\n\t\t\tprepareEnvironment: func(t *testing.T, co *container.Options, o *Options) error {\n\t\t\t\trequire.NoError(t, os.MkdirAll(filepath.Dir(co.TopLevelConfigPath), 0755))\n\n\t\t\t\tinitialConfig := `version = 2\n\n[plugins]\n  [plugins.\"io.containerd.grpc.v1.cri\"]\n    [plugins.\"io.containerd.grpc.v1.cri\".containerd]\n      default_runtime_name = \"nvidia\"\n\n      [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes]\n        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.nvidia]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.nvidia.options]\n            BinaryName = \"/old/path/nvidia-container-runtime\"\n\n        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc.options]\n            BinaryName = \"/usr/bin/runc\"\n`\n\t\t\t\trequire.NoError(t, os.WriteFile(co.TopLevelConfigPath, []byte(initialConfig), 0600))\n\t\t\t\treturn nil\n\t\t\t},\n\t\t\tassertSetupPostConditions: func(t *testing.T, co *container.Options, o *Options) error {\n\t\t\t\trequire.FileExists(t, co.TopLevelConfigPath)\n\n\t\t\t\tactual, err := os.ReadFile(co.TopLevelConfigPath)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\texpected := `imports = [\"` + filepath.Dir(co.DropInConfig) + `/*.toml\"]\nversion = 2\n\n[plugins]\n\n  [plugins.\"io.containerd.grpc.v1.cri\"]\n\n    [plugins.\"io.containerd.grpc.v1.cri\".containerd]\n      default_runtime_name = \"nvidia\"\n\n      [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes]\n\n        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.nvidia]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.nvidia.options]\n            BinaryName = \"/old/path/nvidia-container-runtime\"\n\n        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc.options]\n            BinaryName = \"/usr/bin/runc\"\n`\n\n\t\t\t\trequire.Equal(t, expected, string(actual))\n\n\t\t\t\trequire.FileExists(t, co.DropInConfig)\n\n\t\t\t\tactualDropIn, err := os.ReadFile(co.DropInConfig)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\texpectedDropIn := `version = 2\n\n[plugins]\n\n  [plugins.\"io.containerd.grpc.v1.cri\"]\n\n    [plugins.\"io.containerd.grpc.v1.cri\".containerd]\n      default_runtime_name = \"nvidia\"\n\n      [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes]\n\n        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.nvidia]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.nvidia.options]\n            BinaryName = \"/usr/bin/nvidia-container-runtime\"\n\n        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.nvidia-cdi]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.nvidia-cdi.options]\n            BinaryName = \"/usr/bin/nvidia-container-runtime.cdi\"\n\n        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.nvidia-legacy]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.nvidia-legacy.options]\n            BinaryName = \"/usr/bin/nvidia-container-runtime.legacy\"\n\n        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc.options]\n            BinaryName = \"/usr/bin/runc\"\n`\n\t\t\t\trequire.Equal(t, expectedDropIn, string(actualDropIn))\n\t\t\t\treturn nil\n\t\t\t},\n\t\t\tassertCleanupPostConditions: func(t *testing.T, co *container.Options, o *Options) error {\n\t\t\t\trequire.FileExists(t, co.TopLevelConfigPath)\n\n\t\t\t\t// If file exists, verify nvidia runtimes were removed\n\t\t\t\tactual, err := os.ReadFile(co.TopLevelConfigPath)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\t// TODO: Do we expect that the default_runtime = nvidia be removed?\n\t\t\t\t// TODO: Should the `nvidia` runtimes be removed from the top-level config?\n\t\t\t\texpected := `imports = [\"` + filepath.Dir(co.DropInConfig) + `/*.toml\"]\nversion = 2\n\n[plugins]\n\n  [plugins.\"io.containerd.grpc.v1.cri\"]\n\n    [plugins.\"io.containerd.grpc.v1.cri\".containerd]\n\n      [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes]\n\n        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc.options]\n            BinaryName = \"/usr/bin/runc\"\n`\n\n\t\t\t\trequire.Equal(t, expected, string(actual))\n\n\t\t\t\trequire.NoFileExists(t, co.DropInConfig)\n\n\t\t\t\treturn nil\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"v2: complex config with multiple plugins and settings\",\n\t\t\tcontainerOptions: container.Options{\n\t\t\t\tTopLevelConfigPath: \"{{ .testRoot }}/etc/containerd/config.toml\",\n\t\t\t\tDropInConfig:       \"{{ .testRoot }}/conf.d/99-nvidia.toml\",\n\t\t\t\tRuntimeName:        \"nvidia\",\n\t\t\t\tRuntimeDir:         \"/usr/bin\",\n\t\t\t\tEnableCDI:          true,\n\t\t\t\tSetAsDefault:       false,\n\t\t\t\tRestartMode:        \"none\",\n\t\t\t\tExecutablePath:     \"not-containerd\",\n\t\t\t},\n\t\t\toptions: Options{\n\t\t\t\truntimeType: \"io.containerd.runc.v2\",\n\t\t\t\tContainerRuntimeModesCDIAnnotationPrefixes: []string{\"cdi.k8s.io\"},\n\t\t\t},\n\t\t\tprepareEnvironment: func(t *testing.T, co *container.Options, o *Options) error {\n\t\t\t\trequire.NoError(t, os.MkdirAll(filepath.Dir(co.TopLevelConfigPath), 0755))\n\n\t\t\t\t// Write initial complex config\n\t\t\t\tinitialConfig := `version = 2\nroot = \"/var/lib/containerd\"\nstate = \"/run/containerd\"\n\n[plugins]\n  [plugins.\"io.containerd.grpc.v1.cri\"]\n    [plugins.\"io.containerd.grpc.v1.cri\".containerd]\n      default_runtime_name = \"runc\"\n      snapshotter = \"overlayfs\"\n\n      [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes]\n        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.custom]\n          runtime_type = \"io.containerd.custom.v1\"\n\n          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.custom.options]\n            TypeUrl = \"custom.runtime/options\"\n\n        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc.options]\n            BinaryName = \"/usr/bin/runc\"\n            SystemdCgroup = true\n\n    [plugins.\"io.containerd.grpc.v1.cri\".registry]\n      [plugins.\"io.containerd.grpc.v1.cri\".registry.mirrors]\n        [plugins.\"io.containerd.grpc.v1.cri\".registry.mirrors.\"docker.io\"]\n          endpoint = [\"https://registry-1.docker.io\"]\n\n  [plugins.\"io.containerd.internal.v1.opt\"]\n    path = \"/opt/containerd\"\n`\n\t\t\t\trequire.NoError(t, os.WriteFile(co.TopLevelConfigPath, []byte(initialConfig), 0600))\n\t\t\t\treturn nil\n\t\t\t},\n\t\t\tassertSetupPostConditions: func(t *testing.T, co *container.Options, o *Options) error {\n\t\t\t\trequire.FileExists(t, co.TopLevelConfigPath)\n\n\t\t\t\tactual, err := os.ReadFile(co.TopLevelConfigPath)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\texpected := `imports = [\"` + filepath.Dir(co.DropInConfig) + `/*.toml\"]\nroot = \"/var/lib/containerd\"\nstate = \"/run/containerd\"\nversion = 2\n\n[plugins]\n\n  [plugins.\"io.containerd.grpc.v1.cri\"]\n\n    [plugins.\"io.containerd.grpc.v1.cri\".containerd]\n      default_runtime_name = \"runc\"\n      snapshotter = \"overlayfs\"\n\n      [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes]\n\n        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.custom]\n          runtime_type = \"io.containerd.custom.v1\"\n\n          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.custom.options]\n            TypeUrl = \"custom.runtime/options\"\n\n        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc.options]\n            BinaryName = \"/usr/bin/runc\"\n            SystemdCgroup = true\n\n    [plugins.\"io.containerd.grpc.v1.cri\".registry]\n\n      [plugins.\"io.containerd.grpc.v1.cri\".registry.mirrors]\n\n        [plugins.\"io.containerd.grpc.v1.cri\".registry.mirrors.\"docker.io\"]\n          endpoint = [\"https://registry-1.docker.io\"]\n\n  [plugins.\"io.containerd.internal.v1.opt\"]\n    path = \"/opt/containerd\"\n`\n\t\t\t\trequire.Equal(t, expected, string(actual))\n\n\t\t\t\trequire.FileExists(t, co.DropInConfig)\n\n\t\t\t\tactualDropIn, err := os.ReadFile(co.DropInConfig)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\texpectedDropIn := `version = 2\n\n[plugins]\n\n  [plugins.\"io.containerd.grpc.v1.cri\"]\n    enable_cdi = true\n\n    [plugins.\"io.containerd.grpc.v1.cri\".containerd]\n      default_runtime_name = \"runc\"\n      snapshotter = \"overlayfs\"\n\n      [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes]\n\n        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.custom]\n          runtime_type = \"io.containerd.custom.v1\"\n\n          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.custom.options]\n            TypeUrl = \"custom.runtime/options\"\n\n        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.nvidia]\n          container_annotations = [\"cdi.k8s.io*\"]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.nvidia.options]\n            BinaryName = \"/usr/bin/nvidia-container-runtime\"\n            SystemdCgroup = true\n\n        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.nvidia-cdi]\n          container_annotations = [\"cdi.k8s.io*\"]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.nvidia-cdi.options]\n            BinaryName = \"/usr/bin/nvidia-container-runtime.cdi\"\n            SystemdCgroup = true\n\n        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.nvidia-legacy]\n          container_annotations = [\"cdi.k8s.io*\"]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.nvidia-legacy.options]\n            BinaryName = \"/usr/bin/nvidia-container-runtime.legacy\"\n            SystemdCgroup = true\n\n        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc.options]\n            BinaryName = \"/usr/bin/runc\"\n            SystemdCgroup = true\n\n    [plugins.\"io.containerd.grpc.v1.cri\".registry]\n\n      [plugins.\"io.containerd.grpc.v1.cri\".registry.mirrors]\n\n        [plugins.\"io.containerd.grpc.v1.cri\".registry.mirrors.\"docker.io\"]\n          endpoint = [\"https://registry-1.docker.io\"]\n`\n\t\t\t\trequire.Equal(t, expectedDropIn, string(actualDropIn))\n\t\t\t\treturn nil\n\t\t\t},\n\t\t\tassertCleanupPostConditions: func(t *testing.T, co *container.Options, o *Options) error {\n\t\t\t\trequire.FileExists(t, co.TopLevelConfigPath)\n\n\t\t\t\tactual, err := os.ReadFile(co.TopLevelConfigPath)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\texpected := `imports = [\"` + filepath.Dir(co.DropInConfig) + `/*.toml\"]\nroot = \"/var/lib/containerd\"\nstate = \"/run/containerd\"\nversion = 2\n\n[plugins]\n\n  [plugins.\"io.containerd.grpc.v1.cri\"]\n\n    [plugins.\"io.containerd.grpc.v1.cri\".containerd]\n      default_runtime_name = \"runc\"\n      snapshotter = \"overlayfs\"\n\n      [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes]\n\n        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.custom]\n          runtime_type = \"io.containerd.custom.v1\"\n\n          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.custom.options]\n            TypeUrl = \"custom.runtime/options\"\n\n        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc.options]\n            BinaryName = \"/usr/bin/runc\"\n            SystemdCgroup = true\n\n    [plugins.\"io.containerd.grpc.v1.cri\".registry]\n\n      [plugins.\"io.containerd.grpc.v1.cri\".registry.mirrors]\n\n        [plugins.\"io.containerd.grpc.v1.cri\".registry.mirrors.\"docker.io\"]\n          endpoint = [\"https://registry-1.docker.io\"]\n\n  [plugins.\"io.containerd.internal.v1.opt\"]\n    path = \"/opt/containerd\"\n`\n\t\t\t\trequire.Equal(t, expected, string(actual))\n\n\t\t\t\trequire.NoFileExists(t, co.DropInConfig)\n\n\t\t\t\treturn nil\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"v2: existing config without default runtime (SetAsDefault=false)\",\n\t\t\tcontainerOptions: container.Options{\n\t\t\t\tTopLevelConfigPath: \"{{ .testRoot }}/etc/containerd/config.toml\",\n\t\t\t\tDropInConfig:       \"{{ .testRoot }}/conf.d/99-nvidia.toml\",\n\t\t\t\tRuntimeName:        \"nvidia\",\n\t\t\t\tRuntimeDir:         \"/usr/bin\",\n\t\t\t\tSetAsDefault:       false,\n\t\t\t\tRestartMode:        \"none\",\n\t\t\t\tExecutablePath:     \"not-containerd\",\n\t\t\t},\n\t\t\toptions: Options{\n\t\t\t\truntimeType: \"io.containerd.runc.v2\",\n\t\t\t},\n\t\t\tprepareEnvironment: func(t *testing.T, co *container.Options, o *Options) error {\n\t\t\t\trequire.NoError(t, os.MkdirAll(filepath.Dir(co.TopLevelConfigPath), 0755))\n\n\t\t\t\t// Write initial config without any default runtime\n\t\t\t\tinitialConfig := `version = 2\n\n[plugins]\n  [plugins.\"io.containerd.grpc.v1.cri\"]\n    [plugins.\"io.containerd.grpc.v1.cri\".containerd]\n\n      [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes]\n        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc.options]\n            BinaryName = \"/usr/bin/runc\"\n`\n\t\t\t\trequire.NoError(t, os.WriteFile(co.TopLevelConfigPath, []byte(initialConfig), 0600))\n\t\t\t\treturn nil\n\t\t\t},\n\t\t\tassertSetupPostConditions: func(t *testing.T, co *container.Options, o *Options) error {\n\t\t\t\trequire.FileExists(t, co.TopLevelConfigPath)\n\n\t\t\t\tactual, err := os.ReadFile(co.TopLevelConfigPath)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\texpected := `imports = [\"` + filepath.Dir(co.DropInConfig) + `/*.toml\"]\nversion = 2\n\n[plugins]\n\n  [plugins.\"io.containerd.grpc.v1.cri\"]\n\n    [plugins.\"io.containerd.grpc.v1.cri\".containerd]\n\n      [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes]\n\n        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc.options]\n            BinaryName = \"/usr/bin/runc\"\n`\n\t\t\t\trequire.Equal(t, expected, string(actual))\n\n\t\t\t\trequire.FileExists(t, co.DropInConfig)\n\n\t\t\t\tactualDropIn, err := os.ReadFile(co.DropInConfig)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\texpectedDropIn := `version = 2\n\n[plugins]\n\n  [plugins.\"io.containerd.grpc.v1.cri\"]\n\n    [plugins.\"io.containerd.grpc.v1.cri\".containerd]\n\n      [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes]\n\n        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.nvidia]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.nvidia.options]\n            BinaryName = \"/usr/bin/nvidia-container-runtime\"\n\n        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.nvidia-cdi]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.nvidia-cdi.options]\n            BinaryName = \"/usr/bin/nvidia-container-runtime.cdi\"\n\n        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.nvidia-legacy]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.nvidia-legacy.options]\n            BinaryName = \"/usr/bin/nvidia-container-runtime.legacy\"\n\n        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc.options]\n            BinaryName = \"/usr/bin/runc\"\n`\n\n\t\t\t\trequire.Equal(t, expectedDropIn, string(actualDropIn))\n\n\t\t\t\treturn nil\n\t\t\t},\n\t\t\tassertCleanupPostConditions: func(t *testing.T, co *container.Options, o *Options) error {\n\t\t\t\trequire.FileExists(t, co.TopLevelConfigPath)\n\n\t\t\t\tactual, err := os.ReadFile(co.TopLevelConfigPath)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\texpected := `imports = [\"` + filepath.Dir(co.DropInConfig) + `/*.toml\"]\nversion = 2\n\n[plugins]\n\n  [plugins.\"io.containerd.grpc.v1.cri\"]\n\n    [plugins.\"io.containerd.grpc.v1.cri\".containerd]\n\n      [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes]\n\n        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc.options]\n            BinaryName = \"/usr/bin/runc\"\n`\n\t\t\t\trequire.Equal(t, expected, string(actual))\n\n\t\t\t\trequire.NoFileExists(t, co.DropInConfig)\n\n\t\t\t\treturn nil\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"v2: existing config without default runtime (SetAsDefault=true)\",\n\t\t\tcontainerOptions: container.Options{\n\t\t\t\tTopLevelConfigPath: \"{{ .testRoot }}/etc/containerd/config.toml\",\n\t\t\t\tDropInConfig:       \"{{ .testRoot }}/conf.d/99-nvidia.toml\",\n\t\t\t\tRuntimeName:        \"nvidia\",\n\t\t\t\tRuntimeDir:         \"/usr/bin\",\n\t\t\t\tSetAsDefault:       true,\n\t\t\t\tRestartMode:        \"none\",\n\t\t\t\tExecutablePath:     \"not-containerd\",\n\t\t\t},\n\t\t\toptions: Options{\n\t\t\t\truntimeType: \"io.containerd.runc.v2\",\n\t\t\t},\n\t\t\tprepareEnvironment: func(t *testing.T, co *container.Options, o *Options) error {\n\t\t\t\trequire.NoError(t, os.MkdirAll(filepath.Dir(co.TopLevelConfigPath), 0755))\n\n\t\t\t\t// Write initial config without any default runtime\n\t\t\t\tinitialConfig := `version = 2\n\n[plugins]\n  [plugins.\"io.containerd.grpc.v1.cri\"]\n    [plugins.\"io.containerd.grpc.v1.cri\".containerd]\n\n      [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes]\n        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc.options]\n            BinaryName = \"/usr/bin/runc\"\n`\n\t\t\t\trequire.NoError(t, os.WriteFile(co.TopLevelConfigPath, []byte(initialConfig), 0600))\n\t\t\t\treturn nil\n\t\t\t},\n\t\t\tassertSetupPostConditions: func(t *testing.T, co *container.Options, o *Options) error {\n\t\t\t\trequire.FileExists(t, co.TopLevelConfigPath)\n\n\t\t\t\tactual, err := os.ReadFile(co.TopLevelConfigPath)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\texpected := `imports = [\"` + filepath.Dir(co.DropInConfig) + `/*.toml\"]\nversion = 2\n\n[plugins]\n\n  [plugins.\"io.containerd.grpc.v1.cri\"]\n\n    [plugins.\"io.containerd.grpc.v1.cri\".containerd]\n\n      [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes]\n\n        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc.options]\n            BinaryName = \"/usr/bin/runc\"\n`\n\n\t\t\t\trequire.Equal(t, expected, string(actual))\n\n\t\t\t\trequire.FileExists(t, co.DropInConfig)\n\n\t\t\t\tactualDropIn, err := os.ReadFile(co.DropInConfig)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\texpectedDropIn := `version = 2\n\n[plugins]\n\n  [plugins.\"io.containerd.grpc.v1.cri\"]\n\n    [plugins.\"io.containerd.grpc.v1.cri\".containerd]\n      default_runtime_name = \"nvidia\"\n\n      [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes]\n\n        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.nvidia]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.nvidia.options]\n            BinaryName = \"/usr/bin/nvidia-container-runtime\"\n\n        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.nvidia-cdi]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.nvidia-cdi.options]\n            BinaryName = \"/usr/bin/nvidia-container-runtime.cdi\"\n\n        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.nvidia-legacy]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.nvidia-legacy.options]\n            BinaryName = \"/usr/bin/nvidia-container-runtime.legacy\"\n\n        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc.options]\n            BinaryName = \"/usr/bin/runc\"\n`\n\t\t\t\trequire.Equal(t, expectedDropIn, string(actualDropIn))\n\t\t\t\treturn nil\n\t\t\t},\n\t\t\tassertCleanupPostConditions: func(t *testing.T, co *container.Options, o *Options) error {\n\t\t\t\trequire.FileExists(t, co.TopLevelConfigPath)\n\n\t\t\t\tactual, err := os.ReadFile(co.TopLevelConfigPath)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\t// TODO: Add test where imports are already specified.\n\t\t\t\texpected := `imports = [\"` + filepath.Dir(co.DropInConfig) + `/*.toml\"]\nversion = 2\n\n[plugins]\n\n  [plugins.\"io.containerd.grpc.v1.cri\"]\n\n    [plugins.\"io.containerd.grpc.v1.cri\".containerd]\n\n      [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes]\n\n        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc.options]\n            BinaryName = \"/usr/bin/runc\"\n`\n\t\t\t\trequire.Equal(t, expected, string(actual))\n\n\t\t\t\trequire.NoFileExists(t, co.DropInConfig)\n\n\t\t\t\treturn nil\n\t\t\t},\n\t\t},\n\t\t// V3 test cases\n\t\t{\n\t\t\tdescription: \"v3: minimal config without nvidia runtime\",\n\t\t\tcontainerOptions: container.Options{\n\t\t\t\tTopLevelConfigPath: \"{{ .testRoot }}/etc/containerd/config.toml\",\n\t\t\t\tDropInConfig:       \"{{ .testRoot }}/conf.d/99-nvidia.toml\",\n\t\t\t\tRuntimeName:        \"nvidia\",\n\t\t\t\tRuntimeDir:         \"/usr/bin\",\n\t\t\t\tSetAsDefault:       false,\n\t\t\t\tRestartMode:        \"none\",\n\t\t\t\tExecutablePath:     \"not-containerd\",\n\t\t\t},\n\t\t\toptions: Options{\n\t\t\t\truntimeType: \"io.containerd.runc.v2\",\n\t\t\t},\n\t\t\tprepareEnvironment: func(t *testing.T, co *container.Options, o *Options) error {\n\t\t\t\trequire.NoError(t, os.MkdirAll(filepath.Dir(co.TopLevelConfigPath), 0755))\n\n\t\t\t\t// Write v3 config with runc runtime\n\t\t\t\tinitialConfig := `version = 3\n\n[plugins]\n  [plugins.\"io.containerd.cri.v1.runtime\"]\n    [plugins.\"io.containerd.cri.v1.runtime\".containerd]\n      [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes]\n        [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.runc]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.runc.options]\n            BinaryName = \"/usr/bin/runc\"\n`\n\t\t\t\trequire.NoError(t, os.WriteFile(co.TopLevelConfigPath, []byte(initialConfig), 0600))\n\t\t\t\treturn nil\n\t\t\t},\n\t\t\tassertSetupPostConditions: func(t *testing.T, co *container.Options, o *Options) error {\n\t\t\t\trequire.FileExists(t, co.TopLevelConfigPath)\n\n\t\t\t\tactual, err := os.ReadFile(co.TopLevelConfigPath)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\texpected := `imports = [\"` + filepath.Dir(co.DropInConfig) + `/*.toml\"]\nversion = 3\n\n[plugins]\n\n  [plugins.\"io.containerd.cri.v1.runtime\"]\n\n    [plugins.\"io.containerd.cri.v1.runtime\".containerd]\n\n      [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes]\n\n        [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.runc]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.runc.options]\n            BinaryName = \"/usr/bin/runc\"\n`\n\t\t\t\trequire.Equal(t, expected, string(actual))\n\n\t\t\t\trequire.FileExists(t, co.DropInConfig)\n\n\t\t\t\tactualDropIn, err := os.ReadFile(co.DropInConfig)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\texpectedDropIn := `version = 3\n\n[plugins]\n\n  [plugins.\"io.containerd.cri.v1.runtime\"]\n\n    [plugins.\"io.containerd.cri.v1.runtime\".containerd]\n\n      [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes]\n\n        [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.nvidia]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.nvidia.options]\n            BinaryName = \"/usr/bin/nvidia-container-runtime\"\n\n        [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.nvidia-cdi]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.nvidia-cdi.options]\n            BinaryName = \"/usr/bin/nvidia-container-runtime.cdi\"\n\n        [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.nvidia-legacy]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.nvidia-legacy.options]\n            BinaryName = \"/usr/bin/nvidia-container-runtime.legacy\"\n\n        [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.runc]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.runc.options]\n            BinaryName = \"/usr/bin/runc\"\n`\n\t\t\t\trequire.Equal(t, expectedDropIn, string(actualDropIn))\n\n\t\t\t\treturn nil\n\t\t\t},\n\t\t\tassertCleanupPostConditions: func(t *testing.T, co *container.Options, o *Options) error {\n\t\t\t\trequire.FileExists(t, co.TopLevelConfigPath)\n\n\t\t\t\tactual, err := os.ReadFile(co.TopLevelConfigPath)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\t// Should return to original v3 config with just runc\n\t\t\t\texpected := `imports = [\"` + filepath.Dir(co.DropInConfig) + `/*.toml\"]\nversion = 3\n\n[plugins]\n\n  [plugins.\"io.containerd.cri.v1.runtime\"]\n\n    [plugins.\"io.containerd.cri.v1.runtime\".containerd]\n\n      [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes]\n\n        [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.runc]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.runc.options]\n            BinaryName = \"/usr/bin/runc\"\n`\n\t\t\t\trequire.Equal(t, expected, string(actual))\n\n\t\t\t\trequire.NoFileExists(t, co.DropInConfig)\n\n\t\t\t\treturn nil\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"v3: existing config with runtime and OPTIONS inheritance\",\n\t\t\tcontainerOptions: container.Options{\n\t\t\t\tTopLevelConfigPath: \"{{ .testRoot }}/etc/containerd/config.toml\",\n\t\t\t\tDropInConfig:       \"{{ .testRoot }}/conf.d/99-nvidia.toml\",\n\t\t\t\tRuntimeName:        \"nvidia\",\n\t\t\t\tRuntimeDir:         \"/usr/bin\",\n\t\t\t\tSetAsDefault:       true,\n\t\t\t\tRestartMode:        \"none\",\n\t\t\t\tExecutablePath:     \"not-containerd\",\n\t\t\t},\n\t\t\toptions: Options{\n\t\t\t\truntimeType: \"io.containerd.runc.v2\",\n\t\t\t},\n\t\t\tprepareEnvironment: func(t *testing.T, co *container.Options, o *Options) error {\n\t\t\t\trequire.NoError(t, os.MkdirAll(filepath.Dir(co.TopLevelConfigPath), 0755))\n\n\t\t\t\t// Write initial v3 config with a runtime that has custom OPTIONS\n\t\t\t\tinitialConfig := `version = 3\n\n[plugins]\n  [plugins.\"io.containerd.cri.v1.runtime\"]\n    [plugins.\"io.containerd.cri.v1.runtime\".containerd]\n      default_runtime_name = \"runc\"\n\n      [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes]\n        [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.runc]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.runc.options]\n            BinaryName = \"/usr/bin/runc\"\n            SystemdCgroup = true\n            NoPivotRoot = false\n            Root = \"/run/containerd/runc\"\n`\n\t\t\t\trequire.NoError(t, os.WriteFile(co.TopLevelConfigPath, []byte(initialConfig), 0600))\n\t\t\t\treturn nil\n\t\t\t},\n\t\t\tassertSetupPostConditions: func(t *testing.T, co *container.Options, o *Options) error {\n\t\t\t\trequire.FileExists(t, co.TopLevelConfigPath)\n\n\t\t\t\tactual, err := os.ReadFile(co.TopLevelConfigPath)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\texpected := `imports = [\"` + filepath.Dir(co.DropInConfig) + `/*.toml\"]\nversion = 3\n\n[plugins]\n\n  [plugins.\"io.containerd.cri.v1.runtime\"]\n\n    [plugins.\"io.containerd.cri.v1.runtime\".containerd]\n      default_runtime_name = \"runc\"\n\n      [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes]\n\n        [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.runc]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.runc.options]\n            BinaryName = \"/usr/bin/runc\"\n            NoPivotRoot = false\n            Root = \"/run/containerd/runc\"\n            SystemdCgroup = true\n`\n\t\t\t\trequire.Equal(t, expected, string(actual))\n\n\t\t\t\trequire.FileExists(t, co.DropInConfig)\n\n\t\t\t\tactualDropIn, err := os.ReadFile(co.DropInConfig)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\texpectedDropIn := `version = 3\n\n[plugins]\n\n  [plugins.\"io.containerd.cri.v1.runtime\"]\n\n    [plugins.\"io.containerd.cri.v1.runtime\".containerd]\n      default_runtime_name = \"nvidia\"\n\n      [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes]\n\n        [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.nvidia]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.nvidia.options]\n            BinaryName = \"/usr/bin/nvidia-container-runtime\"\n            NoPivotRoot = false\n            Root = \"/run/containerd/runc\"\n            SystemdCgroup = true\n\n        [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.nvidia-cdi]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.nvidia-cdi.options]\n            BinaryName = \"/usr/bin/nvidia-container-runtime.cdi\"\n            NoPivotRoot = false\n            Root = \"/run/containerd/runc\"\n            SystemdCgroup = true\n\n        [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.nvidia-legacy]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.nvidia-legacy.options]\n            BinaryName = \"/usr/bin/nvidia-container-runtime.legacy\"\n            NoPivotRoot = false\n            Root = \"/run/containerd/runc\"\n            SystemdCgroup = true\n\n        [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.runc]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.runc.options]\n            BinaryName = \"/usr/bin/runc\"\n            NoPivotRoot = false\n            Root = \"/run/containerd/runc\"\n            SystemdCgroup = true\n`\n\t\t\t\trequire.Equal(t, expectedDropIn, string(actualDropIn))\n\n\t\t\t\treturn nil\n\t\t\t},\n\t\t\tassertCleanupPostConditions: func(t *testing.T, co *container.Options, o *Options) error {\n\t\t\t\trequire.FileExists(t, co.TopLevelConfigPath)\n\n\t\t\t\tactual, err := os.ReadFile(co.TopLevelConfigPath)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\t// After cleanup, should return to original state\n\t\t\t\texpected := `imports = [\"` + filepath.Dir(co.DropInConfig) + `/*.toml\"]\nversion = 3\n\n[plugins]\n\n  [plugins.\"io.containerd.cri.v1.runtime\"]\n\n    [plugins.\"io.containerd.cri.v1.runtime\".containerd]\n      default_runtime_name = \"runc\"\n\n      [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes]\n\n        [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.runc]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.runc.options]\n            BinaryName = \"/usr/bin/runc\"\n            NoPivotRoot = false\n            Root = \"/run/containerd/runc\"\n            SystemdCgroup = true\n`\n\t\t\t\trequire.Equal(t, expected, string(actual))\n\n\t\t\t\trequire.NoFileExists(t, co.DropInConfig)\n\n\t\t\t\treturn nil\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"v3: minimal config using runtime config sources with extraneous spaces\",\n\t\t\tcontainerOptions: container.Options{\n\t\t\t\tTopLevelConfigPath: \"{{ .testRoot }}/etc/containerd/config.toml\",\n\t\t\t\tDropInConfig:       \"{{ .testRoot }}/conf.d/99-nvidia.toml\",\n\t\t\t\tRuntimeName:        \"nvidia\",\n\t\t\t\tRuntimeDir:         \"/usr/bin\",\n\t\t\t\tSetAsDefault:       false,\n\t\t\t\tRestartMode:        \"none\",\n\t\t\t\tExecutablePath:     \"not-containerd\",\n\t\t\t\tConfigSources:      []string{\"   command\", \"file   \"},\n\t\t\t},\n\t\t\toptions: Options{\n\t\t\t\truntimeType: \"io.containerd.runc.v2\",\n\t\t\t},\n\t\t\tprepareEnvironment: func(t *testing.T, co *container.Options, o *Options) error {\n\t\t\t\trequire.NoError(t, os.MkdirAll(filepath.Dir(co.TopLevelConfigPath), 0755))\n\n\t\t\t\t// Write v3 config with runc runtime\n\t\t\t\tinitialConfig := `version = 3\n\n[plugins]\n  [plugins.\"io.containerd.cri.v1.runtime\"]\n    [plugins.\"io.containerd.cri.v1.runtime\".containerd]\n      [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes]\n        [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.runc]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.runc.options]\n            BinaryName = \"/usr/bin/runc\"\n`\n\t\t\t\trequire.NoError(t, os.WriteFile(co.TopLevelConfigPath, []byte(initialConfig), 0600))\n\t\t\t\treturn nil\n\t\t\t},\n\t\t\tassertSetupPostConditions: func(t *testing.T, co *container.Options, o *Options) error {\n\t\t\t\trequire.FileExists(t, co.TopLevelConfigPath)\n\n\t\t\t\tactual, err := os.ReadFile(co.TopLevelConfigPath)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\texpected := `imports = [\"` + filepath.Dir(co.DropInConfig) + `/*.toml\"]\nversion = 3\n\n[plugins]\n\n  [plugins.\"io.containerd.cri.v1.runtime\"]\n\n    [plugins.\"io.containerd.cri.v1.runtime\".containerd]\n\n      [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes]\n\n        [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.runc]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.runc.options]\n            BinaryName = \"/usr/bin/runc\"\n`\n\t\t\t\trequire.Equal(t, expected, string(actual))\n\n\t\t\t\trequire.FileExists(t, co.DropInConfig)\n\n\t\t\t\tactualDropIn, err := os.ReadFile(co.DropInConfig)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\texpectedDropIn := `version = 3\n\n[plugins]\n\n  [plugins.\"io.containerd.cri.v1.runtime\"]\n\n    [plugins.\"io.containerd.cri.v1.runtime\".containerd]\n\n      [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes]\n\n        [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.nvidia]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.nvidia.options]\n            BinaryName = \"/usr/bin/nvidia-container-runtime\"\n\n        [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.nvidia-cdi]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.nvidia-cdi.options]\n            BinaryName = \"/usr/bin/nvidia-container-runtime.cdi\"\n\n        [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.nvidia-legacy]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.nvidia-legacy.options]\n            BinaryName = \"/usr/bin/nvidia-container-runtime.legacy\"\n\n        [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.runc]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.runc.options]\n            BinaryName = \"/usr/bin/runc\"\n`\n\t\t\t\trequire.Equal(t, expectedDropIn, string(actualDropIn))\n\n\t\t\t\treturn nil\n\t\t\t},\n\t\t\tassertCleanupPostConditions: func(t *testing.T, co *container.Options, o *Options) error {\n\t\t\t\trequire.FileExists(t, co.TopLevelConfigPath)\n\n\t\t\t\tactual, err := os.ReadFile(co.TopLevelConfigPath)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\t// Should return to original v3 config with just runc\n\t\t\t\texpected := `imports = [\"` + filepath.Dir(co.DropInConfig) + `/*.toml\"]\nversion = 3\n\n[plugins]\n\n  [plugins.\"io.containerd.cri.v1.runtime\"]\n\n    [plugins.\"io.containerd.cri.v1.runtime\".containerd]\n\n      [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes]\n\n        [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.runc]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.runc.options]\n            BinaryName = \"/usr/bin/runc\"\n`\n\t\t\t\trequire.Equal(t, expected, string(actual))\n\n\t\t\t\trequire.NoFileExists(t, co.DropInConfig)\n\n\t\t\t\treturn nil\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"v3: minimal config using runtime config sources with extraneous spaces in the config file name\",\n\t\t\tcontainerOptions: container.Options{\n\t\t\t\tTopLevelConfigPath: \"{{ .testRoot }}/etc/containerd/config.toml\",\n\t\t\t\tDropInConfig:       \"{{ .testRoot }}/conf.d/99-nvidia.toml\",\n\t\t\t\tRuntimeName:        \"nvidia\",\n\t\t\t\tRuntimeDir:         \"/usr/bin\",\n\t\t\t\tSetAsDefault:       false,\n\t\t\t\tRestartMode:        \"none\",\n\t\t\t\tExecutablePath:     \"not-containerd\",\n\t\t\t\tConfigSources:      []string{\"command\", \"file= {{ .testRoot }}/etc/containerd/config.toml  \"},\n\t\t\t},\n\t\t\toptions: Options{\n\t\t\t\truntimeType: \"io.containerd.runc.v2\",\n\t\t\t},\n\t\t\tprepareEnvironment: func(t *testing.T, co *container.Options, o *Options) error {\n\t\t\t\trequire.NoError(t, os.MkdirAll(filepath.Dir(co.TopLevelConfigPath), 0755))\n\n\t\t\t\t// Write v3 config with runc runtime\n\t\t\t\tinitialConfig := `version = 3\n\n[plugins]\n  [plugins.\"io.containerd.cri.v1.runtime\"]\n    [plugins.\"io.containerd.cri.v1.runtime\".containerd]\n      [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes]\n        [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.runc]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.runc.options]\n            BinaryName = \"/usr/bin/runc\"\n`\n\t\t\t\trequire.NoError(t, os.WriteFile(co.TopLevelConfigPath, []byte(initialConfig), 0600))\n\t\t\t\treturn nil\n\t\t\t},\n\t\t\tassertSetupPostConditions: func(t *testing.T, co *container.Options, o *Options) error {\n\t\t\t\trequire.FileExists(t, co.TopLevelConfigPath)\n\n\t\t\t\tactual, err := os.ReadFile(co.TopLevelConfigPath)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\texpected := `imports = [\"` + filepath.Dir(co.DropInConfig) + `/*.toml\"]\nversion = 3\n\n[plugins]\n\n  [plugins.\"io.containerd.cri.v1.runtime\"]\n\n    [plugins.\"io.containerd.cri.v1.runtime\".containerd]\n\n      [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes]\n\n        [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.runc]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.runc.options]\n            BinaryName = \"/usr/bin/runc\"\n`\n\t\t\t\trequire.Equal(t, expected, string(actual))\n\n\t\t\t\trequire.FileExists(t, co.DropInConfig)\n\n\t\t\t\tactualDropIn, err := os.ReadFile(co.DropInConfig)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\texpectedDropIn := `version = 3\n\n[plugins]\n\n  [plugins.\"io.containerd.cri.v1.runtime\"]\n\n    [plugins.\"io.containerd.cri.v1.runtime\".containerd]\n\n      [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes]\n\n        [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.nvidia]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.nvidia.options]\n            BinaryName = \"/usr/bin/nvidia-container-runtime\"\n\n        [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.nvidia-cdi]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.nvidia-cdi.options]\n            BinaryName = \"/usr/bin/nvidia-container-runtime.cdi\"\n\n        [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.nvidia-legacy]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.nvidia-legacy.options]\n            BinaryName = \"/usr/bin/nvidia-container-runtime.legacy\"\n\n        [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.runc]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.runc.options]\n            BinaryName = \"/usr/bin/runc\"\n`\n\t\t\t\trequire.Equal(t, expectedDropIn, string(actualDropIn))\n\n\t\t\t\treturn nil\n\t\t\t},\n\t\t\tassertCleanupPostConditions: func(t *testing.T, co *container.Options, o *Options) error {\n\t\t\t\trequire.FileExists(t, co.TopLevelConfigPath)\n\n\t\t\t\tactual, err := os.ReadFile(co.TopLevelConfigPath)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\t// Should return to original v3 config with just runc\n\t\t\t\texpected := `imports = [\"` + filepath.Dir(co.DropInConfig) + `/*.toml\"]\nversion = 3\n\n[plugins]\n\n  [plugins.\"io.containerd.cri.v1.runtime\"]\n\n    [plugins.\"io.containerd.cri.v1.runtime\".containerd]\n\n      [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes]\n\n        [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.runc]\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.runc.options]\n            BinaryName = \"/usr/bin/runc\"\n`\n\t\t\t\trequire.Equal(t, expected, string(actual))\n\n\t\t\t\trequire.NoFileExists(t, co.DropInConfig)\n\n\t\t\t\treturn nil\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\t// Set default options that would normally be set by the CLI.\n\t\tif tc.containerOptions.ConfigSources == nil {\n\t\t\ttc.containerOptions.ConfigSources = []string{\"command\", \"file\"}\n\t\t}\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\t// Create a temporary directory for the test\n\t\t\ttestRoot := t.TempDir()\n\n\t\t\t// Update paths\n\t\t\ttc.containerOptions.TopLevelConfigPath = strings.ReplaceAll(tc.containerOptions.TopLevelConfigPath, \"{{ .testRoot }}\", testRoot)\n\t\t\ttc.containerOptions.DropInConfig = strings.ReplaceAll(tc.containerOptions.DropInConfig, \"{{ .testRoot }}\", testRoot)\n\t\t\ttc.containerOptions.RuntimeDir = strings.ReplaceAll(tc.containerOptions.RuntimeDir, \"{{ .testRoot }}\", testRoot)\n\t\t\tvar testConfigSources []string\n\t\t\tfor _, configSource := range tc.containerOptions.ConfigSources {\n\t\t\t\ttestConfigSources = append(testConfigSources, strings.ReplaceAll(configSource, \"{{ .testRoot }}\", testRoot))\n\t\t\t}\n\t\t\ttc.containerOptions.ConfigSources = testConfigSources\n\n\t\t\t// Prepare the environment\n\t\t\tif tc.prepareEnvironment != nil {\n\t\t\t\trequire.NoError(t, tc.prepareEnvironment(t, &tc.containerOptions, &tc.options))\n\t\t\t}\n\n\t\t\terr := Setup(c, &tc.containerOptions, &tc.options)\n\t\t\trequire.EqualValues(t, tc.expectedSetupError, err)\n\n\t\t\tif tc.assertSetupPostConditions != nil {\n\t\t\t\trequire.NoError(t, tc.assertSetupPostConditions(t, &tc.containerOptions, &tc.options))\n\t\t\t}\n\n\t\t\terr = Cleanup(c, &tc.containerOptions, &tc.options)\n\t\t\trequire.EqualValues(t, tc.expectedCleanupError, err)\n\n\t\t\tif tc.assertCleanupPostConditions != nil {\n\t\t\t\trequire.NoError(t, tc.assertCleanupPostConditions(t, &tc.containerOptions, &tc.options))\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "cmd/nvidia-ctk-installer/container/runtime/containerd/containerd.go",
    "content": "/**\n# Copyright (c) 2020-2021, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n*/\n\npackage containerd\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"path/filepath\"\n\n\tlog \"github.com/sirupsen/logrus\"\n\tcli \"github.com/urfave/cli/v3\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk-installer/container\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/config/engine\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/config/engine/containerd\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/config/toml\"\n)\n\nconst (\n\tName = \"containerd\"\n\n\tDefaultConfig       = \"/etc/containerd/config.toml\"\n\tDefaultDropInConfig = \"/etc/containerd/conf.d/99-nvidia.toml\"\n\n\tDefaultSocket      = \"/run/containerd/containerd.sock\"\n\tDefaultRestartMode = \"signal\"\n\n\tdefaultRuntimeType = \"io.containerd.runc.v2\"\n)\n\n// Options stores the containerd-specific options\ntype Options struct {\n\tuseLegacyConfig bool\n\truntimeType     string\n\n\tContainerRuntimeModesCDIAnnotationPrefixes []string\n\n\truntimeConfigOverrideJSON string\n}\n\nfunc Flags(opts *Options) []cli.Flag {\n\tflags := []cli.Flag{\n\t\t&cli.BoolFlag{\n\t\t\tName: \"use-legacy-config\",\n\t\t\tUsage: \"Specify whether a legacy (pre v1.3) config should be used. \" +\n\t\t\t\t\"This ensures that a version 1 container config is created by default and that the \" +\n\t\t\t\t\"containerd.runtimes.default_runtime config section is used to define the default \" +\n\t\t\t\t\"runtime instead of container.default_runtime_name.\",\n\t\t\tDestination: &opts.useLegacyConfig,\n\t\t\tSources:     cli.EnvVars(\"CONTAINERD_USE_LEGACY_CONFIG\"),\n\t\t},\n\t\t&cli.StringFlag{\n\t\t\tName:        \"runtime-type\",\n\t\t\tUsage:       \"The runtime_type to use for the configured runtime classes\",\n\t\t\tValue:       defaultRuntimeType,\n\t\t\tDestination: &opts.runtimeType,\n\t\t\tSources:     cli.EnvVars(\"CONTAINERD_RUNTIME_TYPE\"),\n\t\t},\n\t\t&cli.StringSliceFlag{\n\t\t\tName:        \"nvidia-container-runtime-modes.cdi.annotation-prefixes\",\n\t\t\tDestination: &opts.ContainerRuntimeModesCDIAnnotationPrefixes,\n\t\t\tSources:     cli.EnvVars(\"NVIDIA_CONTAINER_RUNTIME_MODES_CDI_ANNOTATION_PREFIXES\"),\n\t\t},\n\t\t&cli.StringFlag{\n\t\t\tName:        \"runtime-config-override\",\n\t\t\tDestination: &opts.runtimeConfigOverrideJSON,\n\t\t\tUsage:       \"specify additional runtime options as a JSON string. The paths are relative to the runtime config.\",\n\t\t\tValue:       \"{}\",\n\t\t\tSources:     cli.EnvVars(\"RUNTIME_CONFIG_OVERRIDE\", \"CONTAINERD_RUNTIME_CONFIG_OVERRIDE\"),\n\t\t},\n\t}\n\n\treturn flags\n}\n\n// Setup updates a containerd configuration to include the nvidia-containerd-runtime and reloads it\nfunc Setup(c *cli.Command, o *container.Options, co *Options) error {\n\tlog.Infof(\"Starting 'setup' for %v\", c.Name)\n\n\tcfg, err := getRuntimeConfig(o, co)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to load config: %v\", err)\n\t}\n\n\terr = o.Configure(cfg)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to configure containerd: %v\", err)\n\t}\n\n\terr = RestartContainerd(o)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to restart containerd: %v\", err)\n\t}\n\n\tlog.Infof(\"Completed 'setup' for %v\", c.Name)\n\n\treturn nil\n}\n\n// Cleanup reverts a containerd configuration to remove the nvidia-containerd-runtime and reloads it\nfunc Cleanup(c *cli.Command, o *container.Options, co *Options) error {\n\tlog.Infof(\"Starting 'cleanup' for %v\", c.Name)\n\n\tcfg, err := getRuntimeConfig(o, co)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to load config: %v\", err)\n\t}\n\n\terr = o.Unconfigure(cfg)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to unconfigure containerd: %v\", err)\n\t}\n\n\terr = RestartContainerd(o)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to restart containerd: %v\", err)\n\t}\n\n\tlog.Infof(\"Completed 'cleanup' for %v\", c.Name)\n\n\treturn nil\n}\n\n// RestartContainerd restarts containerd depending on the value of restartModeFlag\nfunc RestartContainerd(o *container.Options) error {\n\treturn o.Restart(\"containerd\", SignalContainerd)\n}\n\n// containerAnnotationsFromCDIPrefixes returns the container annotations to set for the given CDI prefixes.\nfunc (o *Options) containerAnnotationsFromCDIPrefixes() []string {\n\tvar annotations []string\n\tfor _, prefix := range o.ContainerRuntimeModesCDIAnnotationPrefixes {\n\t\tannotations = append(annotations, prefix+\"*\")\n\t}\n\n\treturn annotations\n}\n\nfunc (o *Options) runtimeConfigOverride() (map[string]interface{}, error) {\n\tif o.runtimeConfigOverrideJSON == \"\" {\n\t\treturn nil, nil\n\t}\n\n\truntimeOptions := make(map[string]interface{})\n\tif err := json.Unmarshal([]byte(o.runtimeConfigOverrideJSON), &runtimeOptions); err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to read %v as JSON: %w\", o.runtimeConfigOverrideJSON, err)\n\t}\n\n\treturn runtimeOptions, nil\n}\n\nfunc GetLowlevelRuntimePaths(o *container.Options, co *Options) ([]string, error) {\n\tcfg, err := getRuntimeConfig(o, co)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to load containerd config: %w\", err)\n\t}\n\treturn engine.GetBinaryPathsForRuntimes(cfg), nil\n}\n\nfunc getRuntimeConfig(o *container.Options, co *Options) (engine.Interface, error) {\n\tloaders, err := o.GetConfigLoaders(containerd.CommandLineSource)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\toptions := []containerd.Option{\n\t\tcontainerd.WithTopLevelConfigPath(o.TopLevelConfigPath),\n\t\tcontainerd.WithConfigSource(\n\t\t\ttoml.LoadFirst(\n\t\t\t\tloaders...,\n\t\t\t),\n\t\t),\n\t\tcontainerd.WithRuntimeType(co.runtimeType),\n\t\tcontainerd.WithUseLegacyConfig(co.useLegacyConfig),\n\t\tcontainerd.WithContainerAnnotations(co.containerAnnotationsFromCDIPrefixes()...),\n\t}\n\tif o.DropInConfigHostPath != \"\" && o.DropInConfig != \"\" {\n\t\toptions = append(options,\n\t\t\tcontainerd.WithContainerPathAsHostPath(filepath.Dir(o.DropInConfig), filepath.Dir(o.DropInConfigHostPath)),\n\t\t)\n\t}\n\n\treturn containerd.New(options...)\n}\n"
  },
  {
    "path": "cmd/nvidia-ctk-installer/container/runtime/containerd/containerd_linux.go",
    "content": "/**\n# Copyright 2020-2023 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage containerd\n\nimport (\n\t\"fmt\"\n\t\"net\"\n\t\"syscall\"\n\t\"time\"\n\n\tlog \"github.com/sirupsen/logrus\"\n)\n\nconst (\n\treloadBackoff     = 5 * time.Second\n\tmaxReloadAttempts = 6\n\n\tsocketMessageToGetPID = \"\"\n)\n\n// SignalContainerd sends a SIGHUP signal to the containerd daemon\nfunc SignalContainerd(socket string) error {\n\tlog.Infof(\"Sending SIGHUP signal to containerd\")\n\n\t// Wrap the logic to perform the SIGHUP in a function so we can retry it on failure\n\tretriable := func() error {\n\t\tconn, err := net.Dial(\"unix\", socket)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"unable to dial: %v\", err)\n\t\t}\n\t\tdefer conn.Close()\n\n\t\tsconn, err := conn.(*net.UnixConn).SyscallConn()\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"unable to get syscall connection: %v\", err)\n\t\t}\n\n\t\terr1 := sconn.Control(func(fd uintptr) {\n\t\t\terr = syscall.SetsockoptInt(int(fd), syscall.SOL_SOCKET, syscall.SO_PASSCRED, 1)\n\t\t})\n\t\tif err1 != nil {\n\t\t\treturn fmt.Errorf(\"unable to issue call on socket fd: %v\", err1)\n\t\t}\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"unable to SetsockoptInt on socket fd: %v\", err)\n\t\t}\n\n\t\t_, _, err = conn.(*net.UnixConn).WriteMsgUnix([]byte(socketMessageToGetPID), nil, nil)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"unable to WriteMsgUnix on socket fd: %v\", err)\n\t\t}\n\n\t\toob := make([]byte, 1024)\n\t\t_, oobn, _, _, err := conn.(*net.UnixConn).ReadMsgUnix(nil, oob)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"unable to ReadMsgUnix on socket fd: %v\", err)\n\t\t}\n\n\t\toob = oob[:oobn]\n\t\tscm, err := syscall.ParseSocketControlMessage(oob)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"unable to ParseSocketControlMessage from message received on socket fd: %v\", err)\n\t\t}\n\n\t\tucred, err := syscall.ParseUnixCredentials(&scm[0])\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"unable to ParseUnixCredentials from message received on socket fd: %v\", err)\n\t\t}\n\n\t\terr = syscall.Kill(int(ucred.Pid), syscall.SIGHUP)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"unable to send SIGHUP to 'containerd' process: %v\", err)\n\t\t}\n\n\t\treturn nil\n\t}\n\n\t// Try to send a SIGHUP up to maxReloadAttempts times\n\tvar err error\n\tfor i := 0; i < maxReloadAttempts; i++ {\n\t\terr = retriable()\n\t\tif err == nil {\n\t\t\tbreak\n\t\t}\n\t\tif i == maxReloadAttempts-1 {\n\t\t\tbreak\n\t\t}\n\t\tlog.Warningf(\"Error signaling containerd, attempt %v/%v: %v\", i+1, maxReloadAttempts, err)\n\t\ttime.Sleep(reloadBackoff)\n\t}\n\tif err != nil {\n\t\tlog.Warningf(\"Max retries reached %v/%v, aborting\", maxReloadAttempts, maxReloadAttempts)\n\t\treturn err\n\t}\n\n\tlog.Infof(\"Successfully signaled containerd\")\n\n\treturn nil\n}\n"
  },
  {
    "path": "cmd/nvidia-ctk-installer/container/runtime/containerd/containerd_other.go",
    "content": "//go:build !linux\n\n/**\n# Copyright 2023 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage containerd\n\nimport (\n\t\"errors\"\n)\n\n// SignalContainerd is unsupported on non-linux platforms.\nfunc SignalContainerd(socket string) error {\n\treturn errors.New(\"SignalContainerd is unsupported on non-linux platforms\")\n}\n"
  },
  {
    "path": "cmd/nvidia-ctk-installer/container/runtime/containerd/containerd_test.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage containerd\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestRuntimeOptions(t *testing.T) {\n\ttestCases := []struct {\n\t\tdescription   string\n\t\toptions       Options\n\t\texpected      map[string]interface{}\n\t\texpectedError error\n\t}{\n\t\t{\n\t\t\tdescription: \"empty is nil\",\n\t\t},\n\t\t{\n\t\t\tdescription: \"empty json\",\n\t\t\toptions: Options{\n\t\t\t\truntimeConfigOverrideJSON: \"{}\",\n\t\t\t},\n\t\t\texpected:      map[string]interface{}{},\n\t\t\texpectedError: nil,\n\t\t},\n\t\t{\n\t\t\tdescription: \"SystemdCgroup is true\",\n\t\t\toptions: Options{\n\t\t\t\truntimeConfigOverrideJSON: \"{\\\"SystemdCgroup\\\": true}\",\n\t\t\t},\n\t\t\texpected: map[string]interface{}{\n\t\t\t\t\"SystemdCgroup\": true,\n\t\t\t},\n\t\t\texpectedError: nil,\n\t\t},\n\t\t{\n\t\t\tdescription: \"SystemdCgroup is false\",\n\t\t\toptions: Options{\n\t\t\t\truntimeConfigOverrideJSON: \"{\\\"SystemdCgroup\\\": false}\",\n\t\t\t},\n\t\t\texpected: map[string]interface{}{\n\t\t\t\t\"SystemdCgroup\": false,\n\t\t\t},\n\t\t\texpectedError: nil,\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\truntimeOptions, err := tc.options.runtimeConfigOverride()\n\t\t\trequire.ErrorIs(t, tc.expectedError, err)\n\t\t\trequire.EqualValues(t, tc.expected, runtimeOptions)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "cmd/nvidia-ctk-installer/container/runtime/crio/config_test.go",
    "content": "/**\n# Copyright (c) 2025, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n*/\n\npackage crio\n\nimport (\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\tcli \"github.com/urfave/cli/v3\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk-installer/container\"\n)\n\n// TestCrioConfigLifecycle tests the complete Setup->Cleanup lifecycle for both config and hook modes\nfunc TestCrioConfigLifecycle(t *testing.T) {\n\tc := &cli.Command{\n\t\tName: \"test\",\n\t}\n\n\ttestCases := []struct {\n\t\tdescription                 string\n\t\tcontainerOptions            container.Options\n\t\toptions                     Options\n\t\tprepareEnvironment          func(*testing.T, *container.Options, *Options) error\n\t\texpectedSetupError          error\n\t\tassertSetupPostConditions   func(*testing.T, *container.Options, *Options) error\n\t\texpectedCleanupError        error\n\t\tassertCleanupPostConditions func(*testing.T, *container.Options, *Options) error\n\t}{\n\t\t{\n\t\t\tdescription: \"config mode: top-level config does not exist\",\n\t\t\tcontainerOptions: container.Options{\n\t\t\t\tTopLevelConfigPath: \"{{ .testRoot }}/etc/crio/crio.conf\",\n\t\t\t\tDropInConfig:       \"{{ .testRoot }}/conf.d/99-nvidia.toml\",\n\t\t\t\tRuntimeName:        \"nvidia\",\n\t\t\t\tRuntimeDir:         \"/usr/bin\",\n\t\t\t\tSetAsDefault:       false,\n\t\t\t\tRestartMode:        \"none\",\n\t\t\t},\n\t\t\toptions: Options{\n\t\t\t\tconfigMode: \"config\",\n\t\t\t},\n\t\t\tassertSetupPostConditions: func(t *testing.T, co *container.Options, _ *Options) error {\n\t\t\t\trequire.NoFileExists(t, co.TopLevelConfigPath)\n\t\t\t\trequire.FileExists(t, co.DropInConfig)\n\n\t\t\t\tactual, err := os.ReadFile(co.DropInConfig)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\texpected := `\n[crio]\n\n  [crio.runtime]\n\n    [crio.runtime.runtimes]\n\n      [crio.runtime.runtimes.nvidia]\n        runtime_path = \"/usr/bin/nvidia-container-runtime\"\n        runtime_type = \"oci\"\n\n      [crio.runtime.runtimes.nvidia-cdi]\n        runtime_path = \"/usr/bin/nvidia-container-runtime.cdi\"\n        runtime_type = \"oci\"\n\n      [crio.runtime.runtimes.nvidia-legacy]\n        runtime_path = \"/usr/bin/nvidia-container-runtime.legacy\"\n        runtime_type = \"oci\"\n`\n\t\t\t\trequire.Equal(t, expected, string(actual))\n\t\t\t\treturn nil\n\t\t\t},\n\t\t\tassertCleanupPostConditions: func(t *testing.T, co *container.Options, _ *Options) error {\n\t\t\t\trequire.NoFileExists(t, co.TopLevelConfigPath)\n\t\t\t\t// drop-in file not removed on cleanup\n\t\t\t\tactual, err := os.ReadFile(co.DropInConfig)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\texpected := `\n[crio]\n\n  [crio.runtime]\n\n    [crio.runtime.runtimes]\n\n      [crio.runtime.runtimes.nvidia]\n        runtime_path = \"/usr/bin/nvidia-container-runtime\"\n        runtime_type = \"oci\"\n\n      [crio.runtime.runtimes.nvidia-cdi]\n        runtime_path = \"/usr/bin/nvidia-container-runtime.cdi\"\n        runtime_type = \"oci\"\n\n      [crio.runtime.runtimes.nvidia-legacy]\n        runtime_path = \"/usr/bin/nvidia-container-runtime.legacy\"\n        runtime_type = \"oci\"\n`\n\t\t\t\trequire.Equal(t, expected, string(actual))\n\t\t\t\treturn nil\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"config mode: existing config without nvidia runtime\",\n\t\t\tcontainerOptions: container.Options{\n\t\t\t\tTopLevelConfigPath: \"{{ .testRoot }}/etc/crio/crio.conf\",\n\t\t\t\tDropInConfig:       \"{{ .testRoot }}/conf.d/99-nvidia.toml\",\n\t\t\t\tRuntimeName:        \"nvidia\",\n\t\t\t\tRuntimeDir:         \"/usr/bin\",\n\t\t\t\tSetAsDefault:       false,\n\t\t\t\tRestartMode:        \"none\",\n\t\t\t},\n\t\t\toptions: Options{\n\t\t\t\tconfigMode: \"config\",\n\t\t\t},\n\t\t\tprepareEnvironment: func(t *testing.T, co *container.Options, _ *Options) error {\n\t\t\t\trequire.NoError(t, os.MkdirAll(filepath.Dir(co.TopLevelConfigPath), 0755))\n\n\t\t\t\tconfigContent := `[crio]\n[crio.runtime]\ndefault_runtime = \"crun\"\n\n[crio.runtime.runtimes.crun]\nruntime_path = \"/usr/bin/crun\"\nruntime_type = \"oci\"\nruntime_root = \"/run/crun\"\nmonitor_path = \"/usr/libexec/crio/conmon\"\n\n[crio.image]\nsignature_policy = \"/etc/crio/policy.json\"\n`\n\t\t\t\terr := os.WriteFile(co.TopLevelConfigPath, []byte(configContent), 0600)\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\treturn nil\n\t\t\t},\n\t\t\tassertSetupPostConditions: func(t *testing.T, co *container.Options, _ *Options) error {\n\t\t\t\trequire.FileExists(t, co.TopLevelConfigPath)\n\n\t\t\t\tactualTopLevel, err := os.ReadFile(co.TopLevelConfigPath)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\texpectedTopLevel := `[crio]\n[crio.runtime]\ndefault_runtime = \"crun\"\n\n[crio.runtime.runtimes.crun]\nruntime_path = \"/usr/bin/crun\"\nruntime_type = \"oci\"\nruntime_root = \"/run/crun\"\nmonitor_path = \"/usr/libexec/crio/conmon\"\n\n[crio.image]\nsignature_policy = \"/etc/crio/policy.json\"\n`\n\n\t\t\t\trequire.Equal(t, expectedTopLevel, string(actualTopLevel))\n\n\t\t\t\trequire.FileExists(t, co.DropInConfig)\n\t\t\t\tactual, err := os.ReadFile(co.DropInConfig)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\texpected := `\n[crio]\n\n  [crio.runtime]\n\n    [crio.runtime.runtimes]\n\n      [crio.runtime.runtimes.nvidia]\n        monitor_path = \"/usr/libexec/crio/conmon\"\n        runtime_path = \"/usr/bin/nvidia-container-runtime\"\n        runtime_root = \"/run/crun\"\n        runtime_type = \"oci\"\n\n      [crio.runtime.runtimes.nvidia-cdi]\n        monitor_path = \"/usr/libexec/crio/conmon\"\n        runtime_path = \"/usr/bin/nvidia-container-runtime.cdi\"\n        runtime_root = \"/run/crun\"\n        runtime_type = \"oci\"\n\n      [crio.runtime.runtimes.nvidia-legacy]\n        monitor_path = \"/usr/libexec/crio/conmon\"\n        runtime_path = \"/usr/bin/nvidia-container-runtime.legacy\"\n        runtime_root = \"/run/crun\"\n        runtime_type = \"oci\"\n`\n\t\t\t\trequire.Equal(t, expected, string(actual))\n\t\t\t\treturn nil\n\t\t\t},\n\t\t\tassertCleanupPostConditions: func(t *testing.T, co *container.Options, o *Options) error {\n\t\t\t\trequire.FileExists(t, co.TopLevelConfigPath)\n\n\t\t\t\tactualTopLevel, err := os.ReadFile(co.TopLevelConfigPath)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\t// Leaves original config unchanged\n\t\t\t\texpectedTopLevel := `[crio]\n[crio.runtime]\ndefault_runtime = \"crun\"\n\n[crio.runtime.runtimes.crun]\nruntime_path = \"/usr/bin/crun\"\nruntime_type = \"oci\"\nruntime_root = \"/run/crun\"\nmonitor_path = \"/usr/libexec/crio/conmon\"\n\n[crio.image]\nsignature_policy = \"/etc/crio/policy.json\"\n`\n\t\t\t\trequire.Equal(t, expectedTopLevel, string(actualTopLevel))\n\n\t\t\t\t// drop-in file not removed on cleanup\n\t\t\t\trequire.FileExists(t, co.DropInConfig)\n\t\t\t\tactual, err := os.ReadFile(co.DropInConfig)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\texpected := `\n[crio]\n\n  [crio.runtime]\n\n    [crio.runtime.runtimes]\n\n      [crio.runtime.runtimes.nvidia]\n        monitor_path = \"/usr/libexec/crio/conmon\"\n        runtime_path = \"/usr/bin/nvidia-container-runtime\"\n        runtime_root = \"/run/crun\"\n        runtime_type = \"oci\"\n\n      [crio.runtime.runtimes.nvidia-cdi]\n        monitor_path = \"/usr/libexec/crio/conmon\"\n        runtime_path = \"/usr/bin/nvidia-container-runtime.cdi\"\n        runtime_root = \"/run/crun\"\n        runtime_type = \"oci\"\n\n      [crio.runtime.runtimes.nvidia-legacy]\n        monitor_path = \"/usr/libexec/crio/conmon\"\n        runtime_path = \"/usr/bin/nvidia-container-runtime.legacy\"\n        runtime_root = \"/run/crun\"\n        runtime_type = \"oci\"\n`\n\t\t\t\trequire.Equal(t, expected, string(actual))\n\t\t\t\treturn nil\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"config mode: existing config with nvidia runtime already present\",\n\t\t\tcontainerOptions: container.Options{\n\t\t\t\tTopLevelConfigPath: \"{{ .testRoot }}/etc/crio/crio.conf\",\n\t\t\t\tDropInConfig:       \"{{ .testRoot }}/conf.d/99-nvidia.toml\",\n\t\t\t\tRuntimeName:        \"nvidia\",\n\t\t\t\tRuntimeDir:         \"/usr/bin\",\n\t\t\t\tSetAsDefault:       true,\n\t\t\t\tRestartMode:        \"none\",\n\t\t\t},\n\t\t\toptions: Options{\n\t\t\t\tconfigMode: \"config\",\n\t\t\t},\n\t\t\tprepareEnvironment: func(t *testing.T, co *container.Options, _ *Options) error {\n\t\t\t\trequire.NoError(t, os.MkdirAll(filepath.Dir(co.TopLevelConfigPath), 0755))\n\n\t\t\t\tconfigContent := `[crio]\n[crio.runtime]\ndefault_runtime = \"nvidia\"\n\n[crio.runtime.runtimes.crun]\nruntime_path = \"/usr/bin/crun\"\nruntime_type = \"oci\"\n\n[crio.runtime.runtimes.nvidia]\nruntime_path = \"/old/path/nvidia-container-runtime\"\nruntime_type = \"oci\"\n`\n\t\t\t\terr := os.WriteFile(co.TopLevelConfigPath, []byte(configContent), 0600)\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\treturn nil\n\t\t\t},\n\t\t\tassertSetupPostConditions: func(t *testing.T, co *container.Options, _ *Options) error {\n\t\t\t\trequire.FileExists(t, co.TopLevelConfigPath)\n\n\t\t\t\tactualTopLevel, err := os.ReadFile(co.TopLevelConfigPath)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\t// TODO: Do we expect the top-level config to change? i.e. Should\n\t\t\t\t// we REMOVE the default_runtime = \"nvidia\" setting?\n\t\t\t\texpectedTopLevel := `[crio]\n[crio.runtime]\ndefault_runtime = \"nvidia\"\n\n[crio.runtime.runtimes.crun]\nruntime_path = \"/usr/bin/crun\"\nruntime_type = \"oci\"\n\n[crio.runtime.runtimes.nvidia]\nruntime_path = \"/old/path/nvidia-container-runtime\"\nruntime_type = \"oci\"\n`\n\n\t\t\t\trequire.Equal(t, expectedTopLevel, string(actualTopLevel))\n\n\t\t\t\trequire.FileExists(t, co.DropInConfig)\n\n\t\t\t\tactual, err := os.ReadFile(co.DropInConfig)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\texpected := `\n[crio]\n\n  [crio.runtime]\n    default_runtime = \"nvidia\"\n\n    [crio.runtime.runtimes]\n\n      [crio.runtime.runtimes.nvidia]\n        runtime_path = \"/usr/bin/nvidia-container-runtime\"\n        runtime_type = \"oci\"\n\n      [crio.runtime.runtimes.nvidia-cdi]\n        runtime_path = \"/usr/bin/nvidia-container-runtime.cdi\"\n        runtime_type = \"oci\"\n\n      [crio.runtime.runtimes.nvidia-legacy]\n        runtime_path = \"/usr/bin/nvidia-container-runtime.legacy\"\n        runtime_type = \"oci\"\n`\n\t\t\t\trequire.Equal(t, expected, string(actual))\n\t\t\t\treturn nil\n\t\t\t},\n\t\t\tassertCleanupPostConditions: func(t *testing.T, co *container.Options, o *Options) error {\n\t\t\t\trequire.FileExists(t, co.TopLevelConfigPath)\n\n\t\t\t\tactualTopLevel, err := os.ReadFile(co.TopLevelConfigPath)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\t// TODO: Do we expect the top-level config to change? i.e. Should\n\t\t\t\t// we REMOVE the default_runtime = \"nvidia\" setting?\n\t\t\t\texpectedTopLevel := `[crio]\n[crio.runtime]\ndefault_runtime = \"nvidia\"\n\n[crio.runtime.runtimes.crun]\nruntime_path = \"/usr/bin/crun\"\nruntime_type = \"oci\"\n\n[crio.runtime.runtimes.nvidia]\nruntime_path = \"/old/path/nvidia-container-runtime\"\nruntime_type = \"oci\"\n`\n\n\t\t\t\trequire.Equal(t, expectedTopLevel, string(actualTopLevel))\n\n\t\t\t\t// drop-in file not removed on cleanup\n\t\t\t\t// default_runtime setting removed from drop-in\n\t\t\t\trequire.FileExists(t, co.DropInConfig)\n\t\t\t\tactual, err := os.ReadFile(co.DropInConfig)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\texpected := `\n[crio]\n\n  [crio.runtime]\n\n    [crio.runtime.runtimes]\n\n      [crio.runtime.runtimes.nvidia]\n        runtime_path = \"/usr/bin/nvidia-container-runtime\"\n        runtime_type = \"oci\"\n\n      [crio.runtime.runtimes.nvidia-cdi]\n        runtime_path = \"/usr/bin/nvidia-container-runtime.cdi\"\n        runtime_type = \"oci\"\n\n      [crio.runtime.runtimes.nvidia-legacy]\n        runtime_path = \"/usr/bin/nvidia-container-runtime.legacy\"\n        runtime_type = \"oci\"\n`\n\n\t\t\t\trequire.Equal(t, expected, string(actual))\n\t\t\t\treturn nil\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"config mode: complex config with multiple settings\",\n\t\t\tcontainerOptions: container.Options{\n\t\t\t\tTopLevelConfigPath: \"{{ .testRoot }}/etc/crio/crio.conf\",\n\t\t\t\tDropInConfig:       \"{{ .testRoot }}/conf.d/99-nvidia.toml\",\n\t\t\t\tRuntimeName:        \"nvidia\",\n\t\t\t\tRuntimeDir:         \"/usr/bin\",\n\t\t\t\tSetAsDefault:       false,\n\t\t\t\tRestartMode:        \"none\",\n\t\t\t},\n\t\t\toptions: Options{\n\t\t\t\tconfigMode: \"config\",\n\t\t\t},\n\t\t\tprepareEnvironment: func(t *testing.T, co *container.Options, _ *Options) error {\n\t\t\t\trequire.NoError(t, os.MkdirAll(filepath.Dir(co.TopLevelConfigPath), 0755))\n\n\t\t\t\tconfigContent := `[crio]\n[crio.runtime]\ndefault_runtime = \"crun\"\nconmon = \"/usr/libexec/crio/conmon\"\nconmon_cgroup = \"pod\"\nselinux = true\n\n[crio.runtime.runtimes.crun]\nruntime_path = \"/usr/bin/crun\"\nruntime_type = \"oci\"\nruntime_root = \"/run/crun\"\nmonitor_path = \"/usr/libexec/crio/conmon\"\n\n[crio.runtime.runtimes.runc]\nruntime_path = \"/usr/bin/runc\"\nruntime_type = \"oci\"\nruntime_root = \"/run/runc\"\n\n[crio.image]\nsignature_policy = \"/etc/crio/policy.json\"\ninsecure_registries = [\n  \"localhost:5000\"\n]\n\n[crio.network]\nnetwork_dir = \"/etc/cni/net.d/\"\nplugin_dirs = [\n  \"/opt/cni/bin\",\n  \"/usr/libexec/cni\"\n]\n`\n\t\t\t\terr := os.WriteFile(co.TopLevelConfigPath, []byte(configContent), 0600)\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\treturn nil\n\t\t\t},\n\t\t\tassertSetupPostConditions: func(t *testing.T, co *container.Options, _ *Options) error {\n\t\t\t\trequire.FileExists(t, co.TopLevelConfigPath)\n\n\t\t\t\tactual, err := os.ReadFile(co.TopLevelConfigPath)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\texpected := `[crio]\n[crio.runtime]\ndefault_runtime = \"crun\"\nconmon = \"/usr/libexec/crio/conmon\"\nconmon_cgroup = \"pod\"\nselinux = true\n\n[crio.runtime.runtimes.crun]\nruntime_path = \"/usr/bin/crun\"\nruntime_type = \"oci\"\nruntime_root = \"/run/crun\"\nmonitor_path = \"/usr/libexec/crio/conmon\"\n\n[crio.runtime.runtimes.runc]\nruntime_path = \"/usr/bin/runc\"\nruntime_type = \"oci\"\nruntime_root = \"/run/runc\"\n\n[crio.image]\nsignature_policy = \"/etc/crio/policy.json\"\ninsecure_registries = [\n  \"localhost:5000\"\n]\n\n[crio.network]\nnetwork_dir = \"/etc/cni/net.d/\"\nplugin_dirs = [\n  \"/opt/cni/bin\",\n  \"/usr/libexec/cni\"\n]\n`\n\t\t\t\trequire.Equal(t, expected, string(actual))\n\n\t\t\t\trequire.FileExists(t, co.DropInConfig)\n\n\t\t\t\tactualDropIn, err := os.ReadFile(co.DropInConfig)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\texpectedDropIn := `\n[crio]\n\n  [crio.runtime]\n\n    [crio.runtime.runtimes]\n\n      [crio.runtime.runtimes.nvidia]\n        monitor_path = \"/usr/libexec/crio/conmon\"\n        runtime_path = \"/usr/bin/nvidia-container-runtime\"\n        runtime_root = \"/run/crun\"\n        runtime_type = \"oci\"\n\n      [crio.runtime.runtimes.nvidia-cdi]\n        monitor_path = \"/usr/libexec/crio/conmon\"\n        runtime_path = \"/usr/bin/nvidia-container-runtime.cdi\"\n        runtime_root = \"/run/crun\"\n        runtime_type = \"oci\"\n\n      [crio.runtime.runtimes.nvidia-legacy]\n        monitor_path = \"/usr/libexec/crio/conmon\"\n        runtime_path = \"/usr/bin/nvidia-container-runtime.legacy\"\n        runtime_root = \"/run/crun\"\n        runtime_type = \"oci\"\n`\n\t\t\t\trequire.Equal(t, expectedDropIn, string(actualDropIn))\n\t\t\t\treturn nil\n\t\t\t},\n\t\t\tassertCleanupPostConditions: func(t *testing.T, co *container.Options, o *Options) error {\n\t\t\t\trequire.FileExists(t, co.TopLevelConfigPath)\n\n\t\t\t\tactual, err := os.ReadFile(co.TopLevelConfigPath)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\t// Should restore to original complex config\n\t\t\t\texpected := `[crio]\n[crio.runtime]\ndefault_runtime = \"crun\"\nconmon = \"/usr/libexec/crio/conmon\"\nconmon_cgroup = \"pod\"\nselinux = true\n\n[crio.runtime.runtimes.crun]\nruntime_path = \"/usr/bin/crun\"\nruntime_type = \"oci\"\nruntime_root = \"/run/crun\"\nmonitor_path = \"/usr/libexec/crio/conmon\"\n\n[crio.runtime.runtimes.runc]\nruntime_path = \"/usr/bin/runc\"\nruntime_type = \"oci\"\nruntime_root = \"/run/runc\"\n\n[crio.image]\nsignature_policy = \"/etc/crio/policy.json\"\ninsecure_registries = [\n  \"localhost:5000\"\n]\n\n[crio.network]\nnetwork_dir = \"/etc/cni/net.d/\"\nplugin_dirs = [\n  \"/opt/cni/bin\",\n  \"/usr/libexec/cni\"\n]\n`\n\t\t\t\trequire.Equal(t, expected, string(actual))\n\n\t\t\t\t// drop-in file not removed on cleanup\n\t\t\t\trequire.FileExists(t, co.DropInConfig)\n\t\t\t\tactualDropIn, err := os.ReadFile(co.DropInConfig)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\texpectedDropIn := `\n[crio]\n\n  [crio.runtime]\n\n    [crio.runtime.runtimes]\n\n      [crio.runtime.runtimes.nvidia]\n        monitor_path = \"/usr/libexec/crio/conmon\"\n        runtime_path = \"/usr/bin/nvidia-container-runtime\"\n        runtime_root = \"/run/crun\"\n        runtime_type = \"oci\"\n\n      [crio.runtime.runtimes.nvidia-cdi]\n        monitor_path = \"/usr/libexec/crio/conmon\"\n        runtime_path = \"/usr/bin/nvidia-container-runtime.cdi\"\n        runtime_root = \"/run/crun\"\n        runtime_type = \"oci\"\n\n      [crio.runtime.runtimes.nvidia-legacy]\n        monitor_path = \"/usr/libexec/crio/conmon\"\n        runtime_path = \"/usr/bin/nvidia-container-runtime.legacy\"\n        runtime_root = \"/run/crun\"\n        runtime_type = \"oci\"\n`\n\t\t\t\trequire.Equal(t, expectedDropIn, string(actualDropIn))\n\n\t\t\t\treturn nil\n\t\t\t},\n\t\t},\n\t\t// Hook mode test cases\n\t\t{\n\t\t\tdescription: \"hook mode: no existing hook\",\n\t\t\tcontainerOptions: container.Options{\n\t\t\t\tRuntimeName: \"nvidia\",\n\t\t\t\tRuntimeDir:  \"/usr/bin\",\n\t\t\t\tRestartMode: \"none\",\n\t\t\t},\n\t\t\toptions: Options{\n\t\t\t\tconfigMode:   \"hook\",\n\t\t\t\thooksDir:     \"{{ .testRoot }}/etc/crio/hooks.d\",\n\t\t\t\thookFilename: \"99-nvidia.json\",\n\t\t\t},\n\t\t\tassertSetupPostConditions: func(t *testing.T, co *container.Options, o *Options) error {\n\t\t\t\thookPath := filepath.Join(o.hooksDir, o.hookFilename)\n\t\t\t\trequire.FileExists(t, hookPath)\n\n\t\t\t\tactual, err := os.ReadFile(hookPath)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\texpected := `{\n  \"version\": \"1.0.0\",\n  \"hook\": {\n    \"path\": \"/usr/bin/nvidia-container-runtime-hook\",\n    \"args\": [\n      \"nvidia-container-runtime-hook\",\n      \"prestart\"\n    ],\n    \"env\": [\n      \"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\"\n    ]\n  },\n  \"when\": {\n    \"always\": true,\n    \"commands\": [\n      \".*\"\n    ]\n  },\n  \"stages\": [\n    \"prestart\"\n  ]\n}\n`\n\n\t\t\t\trequire.Equal(t, expected, string(actual))\n\n\t\t\t\treturn nil\n\t\t\t},\n\t\t\tassertCleanupPostConditions: func(t *testing.T, co *container.Options, o *Options) error {\n\t\t\t\thookPath := filepath.Join(o.hooksDir, o.hookFilename)\n\t\t\t\trequire.NoFileExists(t, hookPath)\n\t\t\t\treturn nil\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"hook mode: existing hook file\",\n\t\t\tcontainerOptions: container.Options{\n\t\t\t\tRuntimeName: \"nvidia\",\n\t\t\t\tRuntimeDir:  \"/usr/bin\",\n\t\t\t\tRestartMode: \"none\",\n\t\t\t},\n\t\t\toptions: Options{\n\t\t\t\tconfigMode:   \"hook\",\n\t\t\t\thooksDir:     \"{{ .testRoot }}/etc/crio/hooks.d\",\n\t\t\t\thookFilename: \"99-nvidia.json\",\n\t\t\t},\n\t\t\tprepareEnvironment: func(t *testing.T, co *container.Options, o *Options) error {\n\t\t\t\thookPath := filepath.Join(o.hooksDir, o.hookFilename)\n\t\t\t\trequire.NoError(t, os.MkdirAll(filepath.Dir(hookPath), 0755))\n\n\t\t\t\t// Create existing hook with old path\n\t\t\t\texistingHookJSON := `{\n  \"version\": \"1.0.0\",\n  \"hook\": {\n    \"path\": \"/old/path/nvidia-container-runtime-hook\",\n    \"args\": [\n      \"nvidia-container-runtime-hook\",\n      \"prestart\"\n    ]\n  },\n  \"when\": {\n    \"always\": true\n  },\n  \"stages\": [\n    \"prestart\"\n  ]\n}`\n\n\t\t\t\terr := os.WriteFile(hookPath, []byte(existingHookJSON), 0600)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\treturn nil\n\t\t\t},\n\t\t\tassertSetupPostConditions: func(t *testing.T, co *container.Options, o *Options) error {\n\t\t\t\thookPath := filepath.Join(o.hooksDir, o.hookFilename)\n\t\t\t\trequire.FileExists(t, hookPath)\n\n\t\t\t\tactual, err := os.ReadFile(hookPath)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\texpected := `{\n  \"version\": \"1.0.0\",\n  \"hook\": {\n    \"path\": \"/usr/bin/nvidia-container-runtime-hook\",\n    \"args\": [\n      \"nvidia-container-runtime-hook\",\n      \"prestart\"\n    ],\n    \"env\": [\n      \"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\"\n    ]\n  },\n  \"when\": {\n    \"always\": true,\n    \"commands\": [\n      \".*\"\n    ]\n  },\n  \"stages\": [\n    \"prestart\"\n  ]\n}\n`\n\n\t\t\t\trequire.Equal(t, expected, string(actual))\n\n\t\t\t\treturn nil\n\t\t\t},\n\t\t\tassertCleanupPostConditions: func(t *testing.T, co *container.Options, o *Options) error {\n\t\t\t\thookPath := filepath.Join(o.hooksDir, o.hookFilename)\n\t\t\t\trequire.NoFileExists(t, hookPath)\n\t\t\t\treturn nil\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\t// Set default options that would normally be set by the CLI.\n\t\tif tc.containerOptions.ConfigSources == nil {\n\t\t\ttc.containerOptions.ConfigSources = []string{\"command\", \"file\"}\n\t\t}\n\t\ttc.options.hookFilename = \"99-nvidia.json\"\n\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\t// Update any paths as required\n\t\t\ttestRoot := t.TempDir()\n\t\t\ttc.containerOptions.TopLevelConfigPath = strings.ReplaceAll(tc.containerOptions.TopLevelConfigPath, \"{{ .testRoot }}\", testRoot)\n\t\t\ttc.containerOptions.DropInConfig = strings.ReplaceAll(tc.containerOptions.DropInConfig, \"{{ .testRoot }}\", testRoot)\n\t\t\ttc.options.hooksDir = strings.ReplaceAll(tc.options.hooksDir, \"{{ .testRoot }}\", testRoot)\n\t\t\tvar testConfigSources []string\n\t\t\tfor _, configSource := range tc.containerOptions.ConfigSources {\n\t\t\t\ttestConfigSources = append(testConfigSources, strings.ReplaceAll(configSource, \"{{ .testRoot }}\", testRoot))\n\t\t\t}\n\t\t\ttc.containerOptions.ConfigSources = testConfigSources\n\n\t\t\t// Prepare the test environment\n\t\t\tif tc.prepareEnvironment != nil {\n\t\t\t\trequire.NoError(t, tc.prepareEnvironment(t, &tc.containerOptions, &tc.options))\n\t\t\t}\n\n\t\t\terr := Setup(c, &tc.containerOptions, &tc.options)\n\t\t\trequire.EqualValues(t, tc.expectedSetupError, err)\n\n\t\t\tif tc.assertSetupPostConditions != nil {\n\t\t\t\trequire.NoError(t, tc.assertSetupPostConditions(t, &tc.containerOptions, &tc.options))\n\t\t\t}\n\n\t\t\terr = Cleanup(c, &tc.containerOptions, &tc.options)\n\t\t\trequire.EqualValues(t, tc.expectedCleanupError, err)\n\n\t\t\tif tc.assertCleanupPostConditions != nil {\n\t\t\t\trequire.NoError(t, tc.assertCleanupPostConditions(t, &tc.containerOptions, &tc.options))\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "cmd/nvidia-ctk-installer/container/runtime/crio/crio.go",
    "content": "/**\n# Copyright (c) 2021-2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage crio\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\n\tlog \"github.com/sirupsen/logrus\"\n\tcli \"github.com/urfave/cli/v3\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/api/config/v1\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk-installer/container\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/config/engine\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/config/engine/crio\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/config/ocihook\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/config/toml\"\n)\n\nconst (\n\tName = \"crio\"\n\n\tdefaultConfigMode = configModeConfig\n\n\tconfigModeConfig = \"config\"\n\tconfigModeHook   = \"hook\"\n\n\t// Hook-based settings\n\tdefaultHooksDir     = \"/usr/share/containers/oci/hooks.d\"\n\tdefaultHookFilename = \"oci-nvidia-hook.json\"\n\n\t// Config-based settings\n\tDefaultConfig       = \"/etc/crio/crio.conf\"\n\tDefaultDropInConfig = \"/etc/crio/conf.d/99-nvidia.toml\"\n\n\tDefaultSocket      = \"/var/run/crio/crio.sock\"\n\tDefaultRestartMode = \"systemd\"\n)\n\n// Options defines the cri-o specific options.\ntype Options struct {\n\tconfigMode string\n\n\t// hook-specific options\n\thooksDir     string\n\thookFilename string\n}\n\nfunc Flags(opts *Options) []cli.Flag {\n\tflags := []cli.Flag{\n\t\t&cli.StringFlag{\n\t\t\tName:        \"hooks-dir\",\n\t\t\tUsage:       \"path to the cri-o hooks directory\",\n\t\t\tValue:       defaultHooksDir,\n\t\t\tDestination: &opts.hooksDir,\n\t\t\tSources:     cli.EnvVars(\"CRIO_HOOKS_DIR\"),\n\t\t\tDefaultText: defaultHooksDir,\n\t\t},\n\t\t&cli.StringFlag{\n\t\t\tName:        \"hook-filename\",\n\t\t\tUsage:       \"filename of the cri-o hook that will be created / removed in the hooks directory\",\n\t\t\tValue:       defaultHookFilename,\n\t\t\tDestination: &opts.hookFilename,\n\t\t\tSources:     cli.EnvVars(\"CRIO_HOOK_FILENAME\"),\n\t\t\tDefaultText: defaultHookFilename,\n\t\t},\n\t\t&cli.StringFlag{\n\t\t\tName:        \"config-mode\",\n\t\t\tUsage:       \"the configuration mode to use. One of [hook | config]\",\n\t\t\tValue:       defaultConfigMode,\n\t\t\tDestination: &opts.configMode,\n\t\t\tSources:     cli.EnvVars(\"CRIO_CONFIG_MODE\"),\n\t\t},\n\t}\n\n\treturn flags\n}\n\nfunc (opts *Options) Validate(logger logger.Interface, _ *cli.Command) error {\n\tif opts.configMode != configModeConfig && opts.configMode != configModeHook {\n\t\treturn fmt.Errorf(\"invalid cri-o config mode: %q\", opts.configMode)\n\t}\n\tif opts.configMode == configModeHook {\n\t\tlogger.Warningf(\"The %q config for cri-o is deprecated\", opts.configMode)\n\t}\n\treturn nil\n}\n\n// Setup installs the prestart hook required to launch GPU-enabled containers\nfunc Setup(c *cli.Command, o *container.Options, co *Options) error {\n\tlog.Infof(\"Starting 'setup' for %v\", c.Name)\n\n\tswitch co.configMode {\n\tcase \"hook\":\n\t\treturn setupHook(o, co)\n\tcase \"config\":\n\t\treturn setupConfig(o)\n\tdefault:\n\t\treturn fmt.Errorf(\"invalid config-mode '%v'\", co.configMode)\n\t}\n}\n\n// setupHook installs the prestart hook required to launch GPU-enabled containers\nfunc setupHook(o *container.Options, co *Options) error {\n\tlog.Infof(\"Installing prestart hook\")\n\n\thookPath := filepath.Join(co.hooksDir, co.hookFilename)\n\terr := ocihook.CreateHook(hookPath, filepath.Join(o.RuntimeDir, config.NVIDIAContainerRuntimeHookExecutable))\n\tif err != nil {\n\t\treturn fmt.Errorf(\"error creating hook: %v\", err)\n\t}\n\n\treturn nil\n}\n\n// setupConfig updates the cri-o config for the NVIDIA container runtime\nfunc setupConfig(o *container.Options) error {\n\tlog.Infof(\"Updating config file\")\n\n\tcfg, err := getRuntimeConfig(o, false)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to load config: %v\", err)\n\t}\n\n\terr = o.Configure(cfg)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to configure cri-o: %v\", err)\n\t}\n\n\terr = RestartCrio(o)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to restart crio: %v\", err)\n\t}\n\n\treturn nil\n}\n\n// Cleanup removes the specified prestart hook\nfunc Cleanup(c *cli.Command, o *container.Options, co *Options) error {\n\tlog.Infof(\"Starting 'cleanup' for %v\", c.Name)\n\n\tswitch co.configMode {\n\tcase \"hook\":\n\t\treturn cleanupHook(co)\n\tcase \"config\":\n\t\treturn cleanupConfig(o)\n\tdefault:\n\t\treturn fmt.Errorf(\"invalid config-mode '%v'\", co.configMode)\n\t}\n}\n\n// cleanupHook removes the prestart hook\nfunc cleanupHook(co *Options) error {\n\tlog.Infof(\"Removing prestart hook\")\n\n\thookPath := filepath.Join(co.hooksDir, co.hookFilename)\n\terr := os.Remove(hookPath)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"error removing hook '%v': %v\", hookPath, err)\n\t}\n\n\treturn nil\n}\n\n// cleanupConfig removes the NVIDIA container runtime from the cri-o config\nfunc cleanupConfig(o *container.Options) error {\n\tif !o.SetAsDefault {\n\t\treturn nil\n\t}\n\n\tlog.Infof(\"Reverting config file modifications\")\n\n\tcfg, err := getRuntimeConfig(o, true)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to load config: %v\", err)\n\t}\n\n\terr = cfg.UpdateDefaultRuntime(o.RuntimeName, engine.UpdateActionUnset)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to unset %q as the default runtime: %w\", o.RuntimeName, err)\n\t}\n\n\tif err := o.Flush(cfg); err != nil {\n\t\treturn err\n\t}\n\n\terr = RestartCrio(o)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to restart crio: %v\", err)\n\t}\n\n\treturn nil\n}\n\n// RestartCrio restarts crio depending on the value of restartModeFlag\nfunc RestartCrio(o *container.Options) error {\n\treturn o.Restart(\"crio\", func(string) error { return fmt.Errorf(\"supporting crio via signal is unsupported\") })\n}\n\nfunc GetLowlevelRuntimePaths(o *container.Options) ([]string, error) {\n\tcfg, err := getRuntimeConfig(o, false)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to load crio config: %w\", err)\n\t}\n\treturn engine.GetBinaryPathsForRuntimes(cfg), nil\n}\n\nfunc getRuntimeConfig(o *container.Options, loadDestinationConfig bool) (engine.Interface, error) {\n\tloaders, err := o.GetConfigLoaders(crio.CommandLineSource)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\toptions := []crio.Option{\n\t\tcrio.WithTopLevelConfigPath(o.TopLevelConfigPath),\n\t\tcrio.WithConfigSource(\n\t\t\ttoml.LoadFirst(\n\t\t\t\tloaders...,\n\t\t\t),\n\t\t),\n\t}\n\n\tif loadDestinationConfig {\n\t\tdestinationConfigPath := o.TopLevelConfigPath\n\t\tif o.DropInConfig != \"\" {\n\t\t\tdestinationConfigPath = o.DropInConfig\n\t\t}\n\t\toptions = append(options, crio.WithConfigDestination(toml.FromFile(destinationConfigPath)))\n\t}\n\n\treturn crio.New(options...)\n}\n"
  },
  {
    "path": "cmd/nvidia-ctk-installer/container/runtime/docker/docker.go",
    "content": "/**\n# Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n*/\n\npackage docker\n\nimport (\n\t\"fmt\"\n\n\tlog \"github.com/sirupsen/logrus\"\n\tcli \"github.com/urfave/cli/v3\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk-installer/container\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/config/engine\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/config/engine/docker\"\n)\n\nconst (\n\tName = \"docker\"\n\n\tDefaultConfig      = \"/etc/docker/daemon.json\"\n\tDefaultSocket      = \"/var/run/docker.sock\"\n\tDefaultRestartMode = \"signal\"\n)\n\ntype Options struct{}\n\nfunc Flags(opts *Options) []cli.Flag {\n\treturn nil\n}\n\n// Setup updates docker configuration to include the nvidia runtime and reloads it\nfunc Setup(c *cli.Command, o *container.Options) error {\n\tlog.Infof(\"Starting 'setup' for %v\", c.Name)\n\n\tcfg, err := getRuntimeConfig(o)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to load config: %v\", err)\n\t}\n\n\terr = o.Configure(cfg)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to configure docker: %v\", err)\n\t}\n\n\terr = RestartDocker(o)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to restart docker: %v\", err)\n\t}\n\n\tlog.Infof(\"Completed 'setup' for %v\", c.Name)\n\n\treturn nil\n}\n\n// Cleanup reverts docker configuration to remove the nvidia runtime and reloads it\nfunc Cleanup(c *cli.Command, o *container.Options) error {\n\tlog.Infof(\"Starting 'cleanup' for %v\", c.Name)\n\n\tcfg, err := getRuntimeConfig(o)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to load config: %v\", err)\n\t}\n\n\terr = o.Unconfigure(cfg)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to unconfigure docker: %v\", err)\n\t}\n\n\terr = RestartDocker(o)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to signal docker: %v\", err)\n\t}\n\n\tlog.Infof(\"Completed 'cleanup' for %v\", c.Name)\n\n\treturn nil\n}\n\n// RestartDocker restarts docker depending on the value of restartModeFlag\nfunc RestartDocker(o *container.Options) error {\n\treturn o.Restart(\"docker\", SignalDocker)\n}\n\nfunc GetLowlevelRuntimePaths(o *container.Options) ([]string, error) {\n\tcfg, err := docker.New(\n\t\tdocker.WithPath(o.TopLevelConfigPath),\n\t)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to load docker config: %w\", err)\n\t}\n\treturn engine.GetBinaryPathsForRuntimes(cfg), nil\n}\n\nfunc getRuntimeConfig(o *container.Options) (engine.Interface, error) {\n\treturn docker.New(\n\t\tdocker.WithPath(o.TopLevelConfigPath),\n\t)\n}\n"
  },
  {
    "path": "cmd/nvidia-ctk-installer/container/runtime/docker/docker_linux.go",
    "content": "/**\n# Copyright 2021-2023 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage docker\n\nimport (\n\t\"fmt\"\n\t\"net\"\n\t\"syscall\"\n\t\"time\"\n\n\tlog \"github.com/sirupsen/logrus\"\n)\n\nconst (\n\treloadBackoff     = 5 * time.Second\n\tmaxReloadAttempts = 6\n\n\tsocketMessageToGetPID = \"GET /info HTTP/1.0\\r\\n\\r\\n\"\n)\n\n// SignalDocker sends a SIGHUP signal to docker daemon\nfunc SignalDocker(socket string) error {\n\tlog.Infof(\"Sending SIGHUP signal to docker\")\n\n\t// Wrap the logic to perform the SIGHUP in a function so we can retry it on failure\n\tretriable := func() error {\n\t\tconn, err := net.Dial(\"unix\", socket)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"unable to dial: %v\", err)\n\t\t}\n\t\tdefer conn.Close()\n\n\t\tsconn, err := conn.(*net.UnixConn).SyscallConn()\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"unable to get syscall connection: %v\", err)\n\t\t}\n\n\t\terr1 := sconn.Control(func(fd uintptr) {\n\t\t\terr = syscall.SetsockoptInt(int(fd), syscall.SOL_SOCKET, syscall.SO_PASSCRED, 1)\n\t\t})\n\t\tif err1 != nil {\n\t\t\treturn fmt.Errorf(\"unable to issue call on socket fd: %v\", err1)\n\t\t}\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"unable to SetsockoptInt on socket fd: %v\", err)\n\t\t}\n\n\t\t_, _, err = conn.(*net.UnixConn).WriteMsgUnix([]byte(socketMessageToGetPID), nil, nil)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"unable to WriteMsgUnix on socket fd: %v\", err)\n\t\t}\n\n\t\toob := make([]byte, 1024)\n\t\t_, oobn, _, _, err := conn.(*net.UnixConn).ReadMsgUnix(nil, oob)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"unable to ReadMsgUnix on socket fd: %v\", err)\n\t\t}\n\n\t\toob = oob[:oobn]\n\t\tscm, err := syscall.ParseSocketControlMessage(oob)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"unable to ParseSocketControlMessage from message received on socket fd: %v\", err)\n\t\t}\n\n\t\tucred, err := syscall.ParseUnixCredentials(&scm[0])\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"unable to ParseUnixCredentials from message received on socket fd: %v\", err)\n\t\t}\n\n\t\terr = syscall.Kill(int(ucred.Pid), syscall.SIGHUP)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"unable to send SIGHUP to 'docker' process: %v\", err)\n\t\t}\n\n\t\treturn nil\n\t}\n\n\t// Try to send a SIGHUP up to maxReloadAttempts times\n\tvar err error\n\tfor i := 0; i < maxReloadAttempts; i++ {\n\t\terr = retriable()\n\t\tif err == nil {\n\t\t\tbreak\n\t\t}\n\t\tif i == maxReloadAttempts-1 {\n\t\t\tbreak\n\t\t}\n\t\tlog.Warningf(\"Error signaling docker, attempt %v/%v: %v\", i+1, maxReloadAttempts, err)\n\t\ttime.Sleep(reloadBackoff)\n\t}\n\tif err != nil {\n\t\tlog.Warningf(\"Max retries reached %v/%v, aborting\", maxReloadAttempts, maxReloadAttempts)\n\t\treturn err\n\t}\n\n\tlog.Infof(\"Successfully signaled docker\")\n\n\treturn nil\n}\n"
  },
  {
    "path": "cmd/nvidia-ctk-installer/container/runtime/docker/docker_other.go",
    "content": "//go:build !linux\n\n/**\n# Copyright 2023 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage docker\n\nimport (\n\t\"errors\"\n)\n\n// SignalDocker is unsupported on non-linux platforms.\nfunc SignalDocker(socket string) error {\n\treturn errors.New(\"SignalDocker is unsupported on non-linux platforms\")\n}\n"
  },
  {
    "path": "cmd/nvidia-ctk-installer/container/runtime/docker/docker_test.go",
    "content": "/**\n# Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n*/\n\npackage docker\n\nimport (\n\t\"encoding/json\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk-installer/container\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/config/engine/docker\"\n)\n\nfunc TestUpdateConfigDefaultRuntime(t *testing.T) {\n\tconst runtimeDir = \"/test/runtime/dir\"\n\n\ttestCases := []struct {\n\t\tsetAsDefault               bool\n\t\truntimeName                string\n\t\texpectedDefaultRuntimeName interface{}\n\t}{\n\t\t{},\n\t\t{\n\t\t\tsetAsDefault:               false,\n\t\t\texpectedDefaultRuntimeName: nil,\n\t\t},\n\t\t{\n\t\t\tsetAsDefault:               true,\n\t\t\truntimeName:                \"NAME\",\n\t\t\texpectedDefaultRuntimeName: \"NAME\",\n\t\t},\n\t\t{\n\t\t\tsetAsDefault:               true,\n\t\t\truntimeName:                \"nvidia\",\n\t\t\texpectedDefaultRuntimeName: \"nvidia\",\n\t\t},\n\t}\n\n\tfor i, tc := range testCases {\n\t\to := &container.Options{\n\t\t\tRuntimeName:  tc.runtimeName,\n\t\t\tRuntimeDir:   runtimeDir,\n\t\t\tSetAsDefault: tc.setAsDefault,\n\t\t}\n\n\t\tconfig := docker.Config(map[string]interface{}{})\n\n\t\terr := o.UpdateConfig(&config)\n\t\trequire.NoError(t, err, \"%d: %v\", i, tc)\n\n\t\tdefaultRuntimeName := config[\"default-runtime\"]\n\t\trequire.EqualValues(t, tc.expectedDefaultRuntimeName, defaultRuntimeName, \"%d: %v\", i, tc)\n\t}\n}\n\nfunc TestUpdateConfig(t *testing.T) {\n\tconst runtimeDir = \"/test/runtime/dir\"\n\n\ttestCases := []struct {\n\t\tconfig         docker.Config\n\t\tsetAsDefault   bool\n\t\truntimeName    string\n\t\texpectedConfig map[string]interface{}\n\t}{\n\t\t{\n\t\t\tconfig:       map[string]interface{}{},\n\t\t\tsetAsDefault: false,\n\t\t\texpectedConfig: map[string]interface{}{\n\t\t\t\t\"runtimes\": map[string]interface{}{\n\t\t\t\t\t\"nvidia\": map[string]interface{}{\n\t\t\t\t\t\t\"path\": \"/test/runtime/dir/nvidia-container-runtime\",\n\t\t\t\t\t\t\"args\": []string{},\n\t\t\t\t\t},\n\t\t\t\t\t\"nvidia-cdi\": map[string]interface{}{\n\t\t\t\t\t\t\"path\": \"/test/runtime/dir/nvidia-container-runtime.cdi\",\n\t\t\t\t\t\t\"args\": []string{},\n\t\t\t\t\t},\n\t\t\t\t\t\"nvidia-legacy\": map[string]interface{}{\n\t\t\t\t\t\t\"path\": \"/test/runtime/dir/nvidia-container-runtime.legacy\",\n\t\t\t\t\t\t\"args\": []string{},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tconfig:       map[string]interface{}{},\n\t\t\tsetAsDefault: false,\n\t\t\truntimeName:  \"NAME\",\n\t\t\texpectedConfig: map[string]interface{}{\n\t\t\t\t\"runtimes\": map[string]interface{}{\n\t\t\t\t\t\"NAME\": map[string]interface{}{\n\t\t\t\t\t\t\"path\": \"/test/runtime/dir/nvidia-container-runtime\",\n\t\t\t\t\t\t\"args\": []string{},\n\t\t\t\t\t},\n\t\t\t\t\t\"nvidia-cdi\": map[string]interface{}{\n\t\t\t\t\t\t\"path\": \"/test/runtime/dir/nvidia-container-runtime.cdi\",\n\t\t\t\t\t\t\"args\": []string{},\n\t\t\t\t\t},\n\t\t\t\t\t\"nvidia-legacy\": map[string]interface{}{\n\t\t\t\t\t\t\"path\": \"/test/runtime/dir/nvidia-container-runtime.legacy\",\n\t\t\t\t\t\t\"args\": []string{},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tconfig: map[string]interface{}{\n\t\t\t\t\"runtimes\": map[string]interface{}{\n\t\t\t\t\t\"nvidia\": map[string]interface{}{\n\t\t\t\t\t\t\"path\": \"nvidia-container-runtime\",\n\t\t\t\t\t\t\"args\": []string{},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tsetAsDefault: false,\n\t\t\texpectedConfig: map[string]interface{}{\n\t\t\t\t\"runtimes\": map[string]interface{}{\n\t\t\t\t\t\"nvidia\": map[string]interface{}{\n\t\t\t\t\t\t\"path\": \"/test/runtime/dir/nvidia-container-runtime\",\n\t\t\t\t\t\t\"args\": []string{},\n\t\t\t\t\t},\n\t\t\t\t\t\"nvidia-cdi\": map[string]interface{}{\n\t\t\t\t\t\t\"path\": \"/test/runtime/dir/nvidia-container-runtime.cdi\",\n\t\t\t\t\t\t\"args\": []string{},\n\t\t\t\t\t},\n\t\t\t\t\t\"nvidia-legacy\": map[string]interface{}{\n\t\t\t\t\t\t\"path\": \"/test/runtime/dir/nvidia-container-runtime.legacy\",\n\t\t\t\t\t\t\"args\": []string{},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tconfig: map[string]interface{}{\n\t\t\t\t\"runtimes\": map[string]interface{}{\n\t\t\t\t\t\"not-nvidia\": map[string]interface{}{\n\t\t\t\t\t\t\"path\": \"some-other-path\",\n\t\t\t\t\t\t\"args\": []string{},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedConfig: map[string]interface{}{\n\t\t\t\t\"runtimes\": map[string]interface{}{\n\t\t\t\t\t\"not-nvidia\": map[string]interface{}{\n\t\t\t\t\t\t\"path\": \"some-other-path\",\n\t\t\t\t\t\t\"args\": []string{},\n\t\t\t\t\t},\n\t\t\t\t\t\"nvidia\": map[string]interface{}{\n\t\t\t\t\t\t\"path\": \"/test/runtime/dir/nvidia-container-runtime\",\n\t\t\t\t\t\t\"args\": []string{},\n\t\t\t\t\t},\n\t\t\t\t\t\"nvidia-cdi\": map[string]interface{}{\n\t\t\t\t\t\t\"path\": \"/test/runtime/dir/nvidia-container-runtime.cdi\",\n\t\t\t\t\t\t\"args\": []string{},\n\t\t\t\t\t},\n\t\t\t\t\t\"nvidia-legacy\": map[string]interface{}{\n\t\t\t\t\t\t\"path\": \"/test/runtime/dir/nvidia-container-runtime.legacy\",\n\t\t\t\t\t\t\"args\": []string{},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tconfig: map[string]interface{}{\n\t\t\t\t\"default-runtime\": \"runc\",\n\t\t\t},\n\t\t\tsetAsDefault: true,\n\t\t\truntimeName:  \"nvidia\",\n\t\t\texpectedConfig: map[string]interface{}{\n\t\t\t\t\"default-runtime\": \"nvidia\",\n\t\t\t\t\"runtimes\": map[string]interface{}{\n\t\t\t\t\t\"nvidia\": map[string]interface{}{\n\t\t\t\t\t\t\"path\": \"/test/runtime/dir/nvidia-container-runtime\",\n\t\t\t\t\t\t\"args\": []string{},\n\t\t\t\t\t},\n\t\t\t\t\t\"nvidia-cdi\": map[string]interface{}{\n\t\t\t\t\t\t\"path\": \"/test/runtime/dir/nvidia-container-runtime.cdi\",\n\t\t\t\t\t\t\"args\": []string{},\n\t\t\t\t\t},\n\t\t\t\t\t\"nvidia-legacy\": map[string]interface{}{\n\t\t\t\t\t\t\"path\": \"/test/runtime/dir/nvidia-container-runtime.legacy\",\n\t\t\t\t\t\t\"args\": []string{},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tconfig: map[string]interface{}{\n\t\t\t\t\"exec-opts\":  []string{\"native.cgroupdriver=systemd\"},\n\t\t\t\t\"log-driver\": \"json-file\",\n\t\t\t\t\"log-opts\": map[string]string{\n\t\t\t\t\t\"max-size\": \"100m\",\n\t\t\t\t},\n\t\t\t\t\"storage-driver\": \"overlay2\",\n\t\t\t},\n\t\t\texpectedConfig: map[string]interface{}{\n\t\t\t\t\"exec-opts\":  []string{\"native.cgroupdriver=systemd\"},\n\t\t\t\t\"log-driver\": \"json-file\",\n\t\t\t\t\"log-opts\": map[string]string{\n\t\t\t\t\t\"max-size\": \"100m\",\n\t\t\t\t},\n\t\t\t\t\"storage-driver\": \"overlay2\",\n\t\t\t\t\"runtimes\": map[string]interface{}{\n\t\t\t\t\t\"nvidia\": map[string]interface{}{\n\t\t\t\t\t\t\"path\": \"/test/runtime/dir/nvidia-container-runtime\",\n\t\t\t\t\t\t\"args\": []string{},\n\t\t\t\t\t},\n\t\t\t\t\t\"nvidia-cdi\": map[string]interface{}{\n\t\t\t\t\t\t\"path\": \"/test/runtime/dir/nvidia-container-runtime.cdi\",\n\t\t\t\t\t\t\"args\": []string{},\n\t\t\t\t\t},\n\t\t\t\t\t\"nvidia-legacy\": map[string]interface{}{\n\t\t\t\t\t\t\"path\": \"/test/runtime/dir/nvidia-container-runtime.legacy\",\n\t\t\t\t\t\t\"args\": []string{},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor i, tc := range testCases {\n\t\ttc := tc\n\n\t\to := &container.Options{\n\t\t\tRuntimeName:  tc.runtimeName,\n\t\t\tRuntimeDir:   runtimeDir,\n\t\t\tSetAsDefault: tc.setAsDefault,\n\t\t}\n\n\t\terr := o.UpdateConfig(&tc.config)\n\t\trequire.NoError(t, err, \"%d: %v\", i, tc)\n\n\t\tconfigContent, err := json.MarshalIndent(tc.config, \"\", \"    \")\n\t\trequire.NoError(t, err)\n\n\t\texpectedContent, err := json.MarshalIndent(tc.expectedConfig, \"\", \"    \")\n\t\trequire.NoError(t, err)\n\n\t\trequire.EqualValues(t, string(expectedContent), string(configContent), \"%d: %v\", i, tc)\n\t}\n}\n\nfunc TestRevertConfig(t *testing.T) {\n\ttestCases := []struct {\n\t\tconfig         docker.Config\n\t\texpectedConfig map[string]interface{}\n\t}{\n\t\t{\n\t\t\tconfig:         map[string]interface{}{},\n\t\t\texpectedConfig: map[string]interface{}{},\n\t\t},\n\t\t{\n\t\t\tconfig: map[string]interface{}{\n\t\t\t\t\"runtimes\": map[string]interface{}{\n\t\t\t\t\t\"nvidia\": map[string]interface{}{\n\t\t\t\t\t\t\"path\": \"/test/runtime/dir/nvidia-container-runtime\",\n\t\t\t\t\t\t\"args\": []string{},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedConfig: map[string]interface{}{},\n\t\t},\n\t\t{\n\t\t\tconfig: map[string]interface{}{\n\t\t\t\t\"runtimes\": map[string]interface{}{\n\t\t\t\t\t\"nvidia\": map[string]interface{}{\n\t\t\t\t\t\t\"path\": \"/test/runtime/dir/nvidia-container-runtime\",\n\t\t\t\t\t\t\"args\": []string{},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedConfig: map[string]interface{}{},\n\t\t},\n\t\t{\n\t\t\tconfig: map[string]interface{}{\n\t\t\t\t\"runtimes\": map[string]interface{}{\n\t\t\t\t\t\"nvidia\": map[string]interface{}{\n\t\t\t\t\t\t\"path\": \"/test/runtime/dir/nvidia-container-runtime\",\n\t\t\t\t\t\t\"args\": []string{},\n\t\t\t\t\t},\n\t\t\t\t\t\"nvidia-cdi\": map[string]interface{}{\n\t\t\t\t\t\t\"path\": \"/test/runtime/dir/nvidia-container-runtime.cdi\",\n\t\t\t\t\t\t\"args\": []string{},\n\t\t\t\t\t},\n\t\t\t\t\t\"nvidia-legacy\": map[string]interface{}{\n\t\t\t\t\t\t\"path\": \"/test/runtime/dir/nvidia-container-runtime.legacy\",\n\t\t\t\t\t\t\"args\": []string{},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedConfig: map[string]interface{}{},\n\t\t},\n\t\t{\n\t\t\tconfig: map[string]interface{}{\n\t\t\t\t\"default-runtime\": \"nvidia\",\n\t\t\t\t\"runtimes\": map[string]interface{}{\n\t\t\t\t\t\"nvidia\": map[string]interface{}{\n\t\t\t\t\t\t\"path\": \"/test/runtime/dir/nvidia-container-runtime\",\n\t\t\t\t\t\t\"args\": []string{},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedConfig: map[string]interface{}{\n\t\t\t\t\"default-runtime\": \"runc\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tconfig: map[string]interface{}{\n\t\t\t\t\"default-runtime\": \"not-nvidia\",\n\t\t\t\t\"runtimes\": map[string]interface{}{\n\t\t\t\t\t\"nvidia\": map[string]interface{}{\n\t\t\t\t\t\t\"path\": \"/test/runtime/dir/nvidia-container-runtime\",\n\t\t\t\t\t\t\"args\": []string{},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedConfig: map[string]interface{}{\n\t\t\t\t\"default-runtime\": \"not-nvidia\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tconfig: map[string]interface{}{\n\t\t\t\t\"exec-opts\":  []string{\"native.cgroupdriver=systemd\"},\n\t\t\t\t\"log-driver\": \"json-file\",\n\t\t\t\t\"log-opts\": map[string]string{\n\t\t\t\t\t\"max-size\": \"100m\",\n\t\t\t\t},\n\t\t\t\t\"storage-driver\": \"overlay2\",\n\t\t\t\t\"runtimes\": map[string]interface{}{\n\t\t\t\t\t\"nvidia\": map[string]interface{}{\n\t\t\t\t\t\t\"path\": \"/test/runtime/dir/nvidia-container-runtime\",\n\t\t\t\t\t\t\"args\": []string{},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedConfig: map[string]interface{}{\n\t\t\t\t\"exec-opts\":  []string{\"native.cgroupdriver=systemd\"},\n\t\t\t\t\"log-driver\": \"json-file\",\n\t\t\t\t\"log-opts\": map[string]string{\n\t\t\t\t\t\"max-size\": \"100m\",\n\t\t\t\t},\n\t\t\t\t\"storage-driver\": \"overlay2\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor i, tc := range testCases {\n\t\ttc := tc\n\t\to := &container.Options{}\n\t\terr := o.RevertConfig(&tc.config)\n\n\t\trequire.NoError(t, err, \"%d: %v\", i, tc)\n\n\t\tconfigContent, err := json.MarshalIndent(tc.config, \"\", \"    \")\n\t\trequire.NoError(t, err)\n\n\t\texpectedContent, err := json.MarshalIndent(tc.expectedConfig, \"\", \"    \")\n\t\trequire.NoError(t, err)\n\n\t\trequire.EqualValues(t, string(expectedContent), string(configContent), \"%d: %v\", i, tc)\n\t}\n}\n"
  },
  {
    "path": "cmd/nvidia-ctk-installer/container/runtime/nri/logger.go",
    "content": "package nri\n\nimport (\n\t\"context\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n)\n\ntype toNriLogger struct {\n\tlogger.Interface\n}\n\nfunc (l toNriLogger) Debugf(_ context.Context, fmt string, args ...interface{}) {\n\tl.Interface.Debugf(fmt, args...)\n}\n\nfunc (l toNriLogger) Errorf(_ context.Context, fmt string, args ...interface{}) {\n\tl.Interface.Errorf(fmt, args...)\n}\n\nfunc (l toNriLogger) Infof(_ context.Context, fmt string, args ...interface{}) {\n\tl.Interface.Infof(fmt, args...)\n}\n\nfunc (l toNriLogger) Warnf(_ context.Context, fmt string, args ...interface{}) {\n\tl.Warningf(fmt, args...)\n}\n"
  },
  {
    "path": "cmd/nvidia-ctk-installer/container/runtime/nri/plugin.go",
    "content": "/**\n# Copyright (c) 2025, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage nri\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"os\"\n\t\"strings\"\n\n\t\"github.com/containerd/nri/pkg/api\"\n\t\"github.com/containerd/nri/pkg/plugin\"\n\t\"github.com/containerd/nri/pkg/stub\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n)\n\n// Compile-time interface checks\nvar (\n\t_ stub.Plugin = (*Plugin)(nil)\n)\n\nconst (\n\t// nriCDIAnnotationDomain is the domain name used for CDI device annotations\n\tnriCDIAnnotationDomain = \"nvidia.cdi.k8s.io\"\n)\n\ntype Plugin struct {\n\tctx    context.Context\n\tlogger logger.Interface\n\n\tnamespace string\n\tstub      stub.Stub\n}\n\n// NewPlugin creates a new NRI plugin for injecting CDI devices\nfunc NewPlugin(ctx context.Context, logger logger.Interface, namespace string) *Plugin {\n\treturn &Plugin{\n\t\tctx:       ctx,\n\t\tlogger:    logger,\n\t\tnamespace: namespace,\n\t}\n}\n\n// CreateContainer handles container creation requests.\nfunc (p *Plugin) CreateContainer(_ context.Context, pod *api.PodSandbox, ctr *api.Container) (*api.ContainerAdjustment, []*api.ContainerUpdate, error) {\n\tadjust := &api.ContainerAdjustment{}\n\n\tif err := p.injectCDIDevices(pod, ctr, adjust); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\treturn adjust, nil, nil\n}\n\nfunc (p *Plugin) injectCDIDevices(pod *api.PodSandbox, ctr *api.Container, a *api.ContainerAdjustment) error {\n\tctx := p.ctx\n\tpluginLogger := p.stub.Logger()\n\n\tdevices := p.parseCDIDevices(pod, nriCDIAnnotationDomain, ctr.Name)\n\tif len(devices) == 0 {\n\t\tpluginLogger.Debugf(ctx, \"%s: no CDI devices annotated...\", containerName(pod, ctr))\n\t\treturn nil\n\t}\n\n\tpluginLogger.Infof(ctx, \"%s: injecting CDI devices %v...\", containerName(pod, ctr), devices)\n\tfor _, name := range devices {\n\t\ta.AddCDIDevice(\n\t\t\t&api.CDIDevice{\n\t\t\t\tName: name,\n\t\t\t},\n\t\t)\n\t}\n\n\treturn nil\n}\n\n// parseCDIDevices processes the podSpec and determines which containers which need CDI devices injected to them\nfunc (p *Plugin) parseCDIDevices(pod *api.PodSandbox, key, container string) []string {\n\tif p.namespace != pod.Namespace {\n\t\tp.logger.Debugf(\"pod %s/%s is not in the toolkit's namespace %s. Skipping CDI device injection...\", pod.Namespace, pod.Name, p.namespace)\n\t\treturn nil\n\t}\n\n\tcdiDeviceNames, ok := plugin.GetEffectiveAnnotation(pod, key, container)\n\tif !ok {\n\t\treturn nil\n\t}\n\n\tcdiDevices := strings.Split(cdiDeviceNames, \",\")\n\treturn cdiDevices\n}\n\n// Construct a container name for log messages.\nfunc containerName(pod *api.PodSandbox, container *api.Container) string {\n\tif pod != nil {\n\t\treturn pod.Name + \"/\" + container.Name\n\t}\n\treturn container.Name\n}\n\n// Start starts the NRI plugin\nfunc (p *Plugin) Start(ctx context.Context, nriSocketPath, nriPluginIdx string) error {\n\tpluginOpts := []stub.Option{\n\t\tstub.WithPluginIdx(nriPluginIdx),\n\t\tstub.WithLogger(toNriLogger{p.logger}),\n\t\tstub.WithOnClose(func() {\n\t\t\tp.logger.Infof(\"NRI ttrpc connection to %s is down. NRI plugin stopped.\", nriSocketPath)\n\t\t}),\n\t}\n\tif len(nriSocketPath) > 0 {\n\t\t_, err := os.Stat(nriSocketPath)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"failed to find valid nri socket at %s: %w\", nriSocketPath, err)\n\t\t}\n\t\tpluginOpts = append(pluginOpts, stub.WithSocketPath(nriSocketPath))\n\t}\n\n\tvar err error\n\tif p.stub, err = stub.New(p, pluginOpts...); err != nil {\n\t\treturn fmt.Errorf(\"failed to initialise plugin at %s: %w\", nriSocketPath, err)\n\t}\n\terr = p.stub.Start(ctx)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"plugin exited with error: %w\", err)\n\t}\n\treturn nil\n}\n\n// Stop stops the NRI plugin\nfunc (p *Plugin) Stop() {\n\tif p == nil || p.stub == nil {\n\t\treturn\n\t}\n\tp.stub.Stop()\n}\n"
  },
  {
    "path": "cmd/nvidia-ctk-installer/container/runtime/runtime.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage runtime\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/urfave/cli/v3\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk-installer/container\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk-installer/container/runtime/containerd\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk-installer/container/runtime/crio\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk-installer/container/runtime/docker\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk-installer/toolkit\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n)\n\nconst (\n\tdefaultSetAsDefault = true\n\t// defaultRuntimeName specifies the NVIDIA runtime to be use as the default runtime if setting the default runtime is enabled\n\tdefaultRuntimeName   = \"nvidia\"\n\tdefaultHostRootMount = \"/host\"\n\n\truntimeSpecificDefault = \"RUNTIME_SPECIFIC_DEFAULT\"\n)\n\ntype Options struct {\n\tcontainer.Options\n\n\tcontainerdOptions containerd.Options\n\tcrioOptions       crio.Options\n}\n\nfunc Flags(opts *Options) []cli.Flag {\n\tflags := []cli.Flag{\n\t\t&cli.StringFlag{\n\t\t\tName:        \"config\",\n\t\t\tUsage:       \"Path to the runtime config file\",\n\t\t\tValue:       runtimeSpecificDefault,\n\t\t\tDestination: &opts.TopLevelConfigPath,\n\t\t\tSources:     cli.EnvVars(\"RUNTIME_CONFIG\", \"CONTAINERD_CONFIG\", \"DOCKER_CONFIG\"),\n\t\t},\n\t\t&cli.StringFlag{\n\t\t\tName:        \"drop-in-config\",\n\t\t\tUsage:       \"Path to the NVIDIA-specific drop-in config file\",\n\t\t\tValue:       runtimeSpecificDefault,\n\t\t\tDestination: &opts.DropInConfig,\n\t\t\tSources:     cli.EnvVars(\"RUNTIME_DROP_IN_CONFIG\"),\n\t\t},\n\t\t&cli.StringFlag{\n\t\t\tName: \"drop-in-config-host-path\",\n\t\t\tUsage: \"When running in a container, this is the path to the drop-in config (--drop-in-config) on the host. \" +\n\t\t\t\t\"This is required to correctly update the top-level config if required since paths there must be host-relative.\",\n\t\t\tDestination: &opts.DropInConfigHostPath,\n\t\t\tSources:     cli.EnvVars(\"RUNTIME_DROP_IN_CONFIG_HOST_PATH\"),\n\t\t},\n\t\t&cli.StringFlag{\n\t\t\tName:        \"executable-path\",\n\t\t\tUsage:       \"The path to the runtime executable. This is used to extract the current config\",\n\t\t\tDestination: &opts.ExecutablePath,\n\t\t\tSources:     cli.EnvVars(\"RUNTIME_EXECUTABLE_PATH\"),\n\t\t},\n\t\t&cli.StringFlag{\n\t\t\tName:        \"socket\",\n\t\t\tUsage:       \"Path to the runtime socket file\",\n\t\t\tValue:       runtimeSpecificDefault,\n\t\t\tDestination: &opts.Socket,\n\t\t\tSources:     cli.EnvVars(\"RUNTIME_SOCKET\", \"CONTAINERD_SOCKET\", \"DOCKER_SOCKET\"),\n\t\t},\n\t\t&cli.StringFlag{\n\t\t\tName:        \"restart-mode\",\n\t\t\tUsage:       \"Specify how the runtime should be restarted; If 'none' is selected it will not be restarted [signal | systemd | none ]\",\n\t\t\tValue:       runtimeSpecificDefault,\n\t\t\tDestination: &opts.RestartMode,\n\t\t\tSources:     cli.EnvVars(\"RUNTIME_RESTART_MODE\"),\n\t\t},\n\t\t&cli.BoolFlag{\n\t\t\tName:        \"enable-cdi-in-runtime\",\n\t\t\tUsage:       \"Enable CDI in the configured runt\time\",\n\t\t\tDestination: &opts.EnableCDI,\n\t\t\tSources:     cli.EnvVars(\"RUNTIME_ENABLE_CDI\"),\n\t\t},\n\t\t&cli.StringFlag{\n\t\t\tName:        \"host-root\",\n\t\t\tUsage:       \"Specify the path to the host root to be used when restarting the runtime using systemd\",\n\t\t\tValue:       defaultHostRootMount,\n\t\t\tDestination: &opts.HostRootMount,\n\t\t\tSources:     cli.EnvVars(\"HOST_ROOT_MOUNT\"),\n\t\t},\n\t\t&cli.StringFlag{\n\t\t\tName:        \"runtime-name\",\n\t\t\tAliases:     []string{\"nvidia-runtime-name\", \"runtime-class\"},\n\t\t\tUsage:       \"Specify the name of the `nvidia` runtime. If set-as-default is selected, the runtime is used as the default runtime.\",\n\t\t\tValue:       defaultRuntimeName,\n\t\t\tDestination: &opts.RuntimeName,\n\t\t\tSources:     cli.EnvVars(\"NVIDIA_RUNTIME_NAME\", \"CONTAINERD_RUNTIME_CLASS\", \"DOCKER_RUNTIME_NAME\"),\n\t\t},\n\t\t&cli.BoolFlag{\n\t\t\tName:        \"set-as-default\",\n\t\t\tUsage:       \"Set the `nvidia` runtime as the default runtime.\",\n\t\t\tValue:       defaultSetAsDefault,\n\t\t\tDestination: &opts.SetAsDefault,\n\t\t\tSources:     cli.EnvVars(\"NVIDIA_RUNTIME_SET_AS_DEFAULT\", \"CONTAINERD_SET_AS_DEFAULT\", \"DOCKER_SET_AS_DEFAULT\"),\n\t\t\tHidden:      true,\n\t\t},\n\t\t&cli.StringSliceFlag{\n\t\t\tName:    \"config-source\",\n\t\t\tAliases: []string{\"config-sources\"},\n\t\t\tUsage: \"Specify the config sources for the container runtime. Any combination of \" +\n\t\t\t\t\"[command | file]. \" +\n\t\t\t\t\"When `file` is specified, the absolute path to the file to be used as a config source can \" +\n\t\t\t\t\"be specified as `file=/path/to/source/config.toml\",\n\t\t\tValue:       []string{\"command\", \"file\"},\n\t\t\tDestination: &opts.ConfigSources,\n\t\t\tSources:     cli.EnvVars(\"RUNTIME_CONFIG_SOURCES\", \"RUNTIME_CONFIG_SOURCE\"),\n\t\t},\n\t}\n\n\tflags = append(flags, containerd.Flags(&opts.containerdOptions)...)\n\tflags = append(flags, crio.Flags(&opts.crioOptions)...)\n\n\treturn flags\n}\n\n// Validate checks whether the specified options are valid\nfunc (opts *Options) Validate(logger logger.Interface, c *cli.Command, runtime string, toolkitRoot string, to *toolkit.Options) error {\n\t// Check that the specified runtime is supported.\n\tswitch runtime {\n\tcase containerd.Name:\n\tcase crio.Name:\n\tcase docker.Name:\n\tdefault:\n\t\treturn fmt.Errorf(\"invalid runtime %q; expected one of [containerd | crio | docker]\", runtime)\n\t}\n\n\t// We set this option here to ensure that it is available in future calls.\n\topts.RuntimeDir = toolkitRoot\n\n\tif !c.IsSet(\"enable-cdi-in-runtime\") {\n\t\topts.EnableCDI = to.CDI.Enabled\n\t}\n\n\tswitch runtime {\n\tcase docker.Name:\n\t\tif opts.ExecutablePath != \"\" {\n\t\t\tlogger.Warningf(\"Ignoring executable-path=%q flag for %v\", opts.ExecutablePath, opts.RuntimeName)\n\t\t\topts.ExecutablePath = \"\"\n\t\t}\n\t\tif opts.DropInConfig != \"\" && opts.DropInConfig != runtimeSpecificDefault {\n\t\t\tlogger.Warningf(\"Ignoring drop-in-config=%q flag for %v\", opts.DropInConfig, opts.RuntimeName)\n\t\t\topts.DropInConfig = \"\"\n\t\t}\n\t\topts.ConfigSources = []string{\"file\"}\n\tcase containerd.Name:\n\tcase crio.Name:\n\t\tif err := opts.crioOptions.Validate(logger, c); err != nil {\n\t\t\treturn fmt.Errorf(\"invalid cri-o config: %w\", err)\n\t\t}\n\t}\n\n\t// Apply the runtime-specific config changes.\n\tswitch runtime {\n\tcase containerd.Name:\n\t\tif opts.TopLevelConfigPath == runtimeSpecificDefault {\n\t\t\topts.TopLevelConfigPath = containerd.DefaultConfig\n\t\t}\n\t\tif opts.DropInConfig == runtimeSpecificDefault {\n\t\t\topts.DropInConfig = containerd.DefaultDropInConfig\n\t\t}\n\t\tif opts.Socket == runtimeSpecificDefault {\n\t\t\topts.Socket = containerd.DefaultSocket\n\t\t}\n\t\tif opts.RestartMode == runtimeSpecificDefault {\n\t\t\topts.RestartMode = containerd.DefaultRestartMode\n\t\t}\n\tcase crio.Name:\n\t\tif opts.TopLevelConfigPath == runtimeSpecificDefault {\n\t\t\topts.TopLevelConfigPath = crio.DefaultConfig\n\t\t}\n\t\tif opts.DropInConfig == runtimeSpecificDefault {\n\t\t\topts.DropInConfig = crio.DefaultDropInConfig\n\t\t}\n\t\tif opts.Socket == runtimeSpecificDefault {\n\t\t\topts.Socket = crio.DefaultSocket\n\t\t}\n\t\tif opts.RestartMode == runtimeSpecificDefault {\n\t\t\topts.RestartMode = crio.DefaultRestartMode\n\t\t}\n\tcase docker.Name:\n\t\tif opts.TopLevelConfigPath == runtimeSpecificDefault {\n\t\t\topts.TopLevelConfigPath = docker.DefaultConfig\n\t\t}\n\t\t// Docker does not support drop-in configs.\n\t\tif opts.DropInConfig == runtimeSpecificDefault {\n\t\t\topts.DropInConfig = \"\"\n\t\t}\n\t\tif opts.Socket == runtimeSpecificDefault {\n\t\t\topts.Socket = docker.DefaultSocket\n\t\t}\n\t\tif opts.RestartMode == runtimeSpecificDefault {\n\t\t\topts.RestartMode = docker.DefaultRestartMode\n\t\t}\n\tdefault:\n\t\treturn fmt.Errorf(\"undefined runtime %v\", runtime)\n\t}\n\n\treturn nil\n}\n\ntype Configurer interface {\n\tCleanup(*cli.Command, *Options) error\n\tGetLowlevelRuntimePaths(*Options) ([]string, error)\n\tSetup(*cli.Command, *Options) error\n}\n\ntype runtime string\ntype noopRuntimeConfigurer struct{}\n\n// NewConfigurer is a factory method for creating a runtime configurer.\nfunc NewConfigurer(name string, noConfigureRuntime bool, nriEnabled bool) Configurer {\n\tif noConfigureRuntime || nriEnabled {\n\t\treturn &noopRuntimeConfigurer{}\n\t}\n\treturn runtime(name)\n}\n\nfunc (r runtime) Setup(c *cli.Command, opts *Options) error {\n\tswitch string(r) {\n\tcase containerd.Name:\n\t\treturn containerd.Setup(c, &opts.Options, &opts.containerdOptions)\n\tcase crio.Name:\n\t\treturn crio.Setup(c, &opts.Options, &opts.crioOptions)\n\tcase docker.Name:\n\t\treturn docker.Setup(c, &opts.Options)\n\tdefault:\n\t\treturn fmt.Errorf(\"undefined runtime %v\", r)\n\t}\n}\n\nfunc (r runtime) Cleanup(c *cli.Command, opts *Options) error {\n\tswitch string(r) {\n\tcase containerd.Name:\n\t\treturn containerd.Cleanup(c, &opts.Options, &opts.containerdOptions)\n\tcase crio.Name:\n\t\treturn crio.Cleanup(c, &opts.Options, &opts.crioOptions)\n\tcase docker.Name:\n\t\treturn docker.Cleanup(c, &opts.Options)\n\tdefault:\n\t\treturn fmt.Errorf(\"undefined runtime %v\", r)\n\t}\n}\n\nfunc (r runtime) GetLowlevelRuntimePaths(opts *Options) ([]string, error) {\n\tswitch string(r) {\n\tcase containerd.Name:\n\t\treturn containerd.GetLowlevelRuntimePaths(&opts.Options, &opts.containerdOptions)\n\tcase crio.Name:\n\t\treturn crio.GetLowlevelRuntimePaths(&opts.Options)\n\tcase docker.Name:\n\t\treturn docker.GetLowlevelRuntimePaths(&opts.Options)\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"undefined runtime %v\", r)\n\t}\n}\n\nfunc (r noopRuntimeConfigurer) Cleanup(_ *cli.Command, _ *Options) error {\n\treturn nil\n}\n\nfunc (r noopRuntimeConfigurer) GetLowlevelRuntimePaths(_ *Options) ([]string, error) {\n\treturn nil, nil\n}\n\nfunc (r noopRuntimeConfigurer) Setup(_ *cli.Command, _ *Options) error {\n\treturn nil\n}\n"
  },
  {
    "path": "cmd/nvidia-ctk-installer/main.go",
    "content": "package main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"os\"\n\t\"os/signal\"\n\t\"path/filepath\"\n\t\"syscall\"\n\t\"time\"\n\n\tnriapi \"github.com/containerd/nri/pkg/api\"\n\t\"github.com/sirupsen/logrus\"\n\t\"github.com/urfave/cli/v3\"\n\t\"golang.org/x/sys/unix\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk-installer/container/runtime\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk-installer/container/runtime/nri\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk-installer/toolkit\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/info\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/lookup\"\n)\n\nconst (\n\ttoolkitPidFilename = \"toolkit.pid\"\n\tdefaultPidFile     = \"/run/nvidia/toolkit/\" + toolkitPidFilename\n\n\tdefaultToolkitInstallDir = \"/usr/local/nvidia\"\n\ttoolkitSubDir            = \"toolkit\"\n\n\tdefaultRuntime = \"docker\"\n\n\tdefaultNRIPluginIdx uint = 10\n)\n\nvar (\n\tdefaultLowLevelRuntimes = []string{\"runc\", \"crun\"}\n\twaitingForSignal        = make(chan bool, 1)\n\tsignalReceived          = make(chan bool, 1)\n)\n\n// options stores the command line arguments\ntype options struct {\n\ttoolkitInstallDir string\n\n\tnoDaemon    bool\n\tpidFile     string\n\tsourceRoot  string\n\tpackageType string\n\n\tenableNRIPlugin bool\n\tnriPluginIndex  uint\n\tnriSocket       string\n\tnriNamespace    string\n\n\ttoolkitOptions toolkit.Options\n\n\tdebug bool\n\n\tnoRuntimeConfig bool\n\truntime         string\n\truntimeOptions  runtime.Options\n}\n\nfunc (o options) toolkitRoot() string {\n\treturn filepath.Join(o.toolkitInstallDir, toolkitSubDir)\n}\n\nfunc main() {\n\tlogger := logrus.New()\n\tc := NewApp(logger)\n\n\t// Run the CLI\n\tlogger.Infof(\"Starting %v\", c.Name)\n\tif err := c.Run(context.Background(), os.Args); err != nil {\n\t\tlogger.Errorf(\"error running %v: %v\", c.Name, err)\n\t\tos.Exit(1)\n\t}\n\n\tlogger.Infof(\"Completed %v\", c.Name)\n}\n\n// An app represents the nvidia-ctk-installer.\ntype app struct {\n\tlogger *logrus.Logger\n\n\ttoolkit *toolkit.Installer\n}\n\n// NewApp creates the CLI app from the specified options.\nfunc NewApp(logger *logrus.Logger) *cli.Command {\n\ta := app{\n\t\tlogger: logger,\n\t}\n\treturn a.build()\n}\n\nfunc (a app) build() *cli.Command {\n\toptions := options{\n\t\ttoolkitOptions: toolkit.Options{},\n\t}\n\t// Create the top-level CLI\n\tc := cli.Command{\n\t\tName:    \"nvidia-ctk-installer\",\n\t\tUsage:   \"Install the NVIDIA Container Toolkit and configure the specified runtime to use the `nvidia` runtime.\",\n\t\tVersion: info.GetVersionString(),\n\t\tBefore: func(ctx context.Context, cmd *cli.Command) (context.Context, error) {\n\t\t\treturn ctx, a.Before(cmd, &options)\n\t\t},\n\t\tAction: func(ctx context.Context, cmd *cli.Command) error {\n\t\t\treturn a.Run(ctx, cmd, &options)\n\t\t},\n\t\tFlags: []cli.Flag{\n\t\t\t&cli.BoolFlag{\n\t\t\t\tName:        \"no-daemon\",\n\t\t\t\tAliases:     []string{\"n\"},\n\t\t\t\tUsage:       \"terminate immediately after setting up the runtime. Note that no cleanup will be performed\",\n\t\t\t\tDestination: &options.noDaemon,\n\t\t\t\tSources:     cli.EnvVars(\"NO_DAEMON\"),\n\t\t\t},\n\t\t\t&cli.BoolFlag{\n\t\t\t\tName: \"no-runtime-config\",\n\t\t\t\tUsage: \"Disables the configuration of a container runtime. This is used in cases where the runtime has \" +\n\t\t\t\t\t\"already been configured for use with the toolkit, and the installer is only used to deploy the \" +\n\t\t\t\t\t\"components of the NVIDIA Container Toolkit.\",\n\t\t\t\tDestination: &options.noRuntimeConfig,\n\t\t\t\tSources:     cli.EnvVars(\"NO_RUNTIME_CONFIG\"),\n\t\t\t},\n\t\t\t&cli.BoolFlag{\n\t\t\t\tName:    \"enable-nri-plugin\",\n\t\t\t\tAliases: []string{\"p\"},\n\t\t\t\tUsage: \"if set to true, the toolkit will stand up an NRI Plugin server used to inject CDI devices \" +\n\t\t\t\t\t\"to containers. Note that this option will be ignored if --no-daemon is set.\",\n\t\t\t\tDestination: &options.enableNRIPlugin,\n\t\t\t\tSources:     cli.EnvVars(\"ENABLE_NRI_PLUGIN\"),\n\t\t\t},\n\t\t\t&cli.UintFlag{\n\t\t\t\tName:        \"nri-plugin-index\",\n\t\t\t\tUsage:       \"Specify the plugin index to register to NRI\",\n\t\t\t\tValue:       defaultNRIPluginIdx,\n\t\t\t\tDestination: &options.nriPluginIndex,\n\t\t\t\tSources:     cli.EnvVars(\"NRI_PLUGIN_INDEX\"),\n\t\t\t\tAction: func(ctx context.Context, c *cli.Command, u uint) error {\n\t\t\t\t\tif u > 99 {\n\t\t\t\t\t\treturn fmt.Errorf(\"nri-plugin-index must be in the range [0,99]\")\n\t\t\t\t\t}\n\t\t\t\t\treturn nil\n\t\t\t\t},\n\t\t\t},\n\t\t\t&cli.StringFlag{\n\t\t\t\tName:        \"nri-socket\",\n\t\t\t\tUsage:       \"Specify the path to the NRI socket file to register the NRI plugin server\",\n\t\t\t\tValue:       nriapi.DefaultSocketPath,\n\t\t\t\tDestination: &options.nriSocket,\n\t\t\t\tSources:     cli.EnvVars(\"NRI_SOCKET\"),\n\t\t\t},\n\t\t\t&cli.StringFlag{\n\t\t\t\tName:        \"nri-namespace\",\n\t\t\t\tUsage:       \"Specify the kubernetes namespace the toolkit's NRI plugin is running in.\",\n\t\t\t\tDestination: &options.nriNamespace,\n\t\t\t\tSources:     cli.EnvVars(\"NRI_NAMESPACE\"),\n\t\t\t},\n\t\t\t&cli.StringFlag{\n\t\t\t\tName:    \"runtime\",\n\t\t\t\tAliases: []string{\"r\"},\n\t\t\t\tUsage: \"the runtime to setup on this node. One of {'docker', 'crio', 'containerd'}. \" +\n\t\t\t\t\t\"This setting is ignored if --no-runtime-config is specified.\",\n\t\t\t\tValue:       defaultRuntime,\n\t\t\t\tDestination: &options.runtime,\n\t\t\t\tSources:     cli.EnvVars(\"RUNTIME\"),\n\t\t\t},\n\t\t\t&cli.StringFlag{\n\t\t\t\tName:    \"toolkit-install-dir\",\n\t\t\t\tAliases: []string{\"root\"},\n\t\t\t\tUsage: \"The directory where the NVIDIA Container Toolkit is to be installed. \" +\n\t\t\t\t\t\"The components of the toolkit will be installed to `ROOT`/toolkit. \" +\n\t\t\t\t\t\"Note that in the case of a containerized installer, this is the path in the container and it is \" +\n\t\t\t\t\t\"recommended that this match the path on the host.\",\n\t\t\t\tValue:       defaultToolkitInstallDir,\n\t\t\t\tDestination: &options.toolkitInstallDir,\n\t\t\t\tSources:     cli.EnvVars(\"TOOLKIT_INSTALL_DIR\", \"ROOT\"),\n\t\t\t},\n\t\t\t&cli.StringFlag{\n\t\t\t\tName:        \"toolkit-source-root\",\n\t\t\t\tUsage:       \"The folder where the required toolkit artifacts can be found. If this is not specified, the path /artifacts/{{ .ToolkitPackageType }} is used where ToolkitPackageType is the resolved package type\",\n\t\t\t\tDestination: &options.sourceRoot,\n\t\t\t\tSources:     cli.EnvVars(\"TOOLKIT_SOURCE_ROOT\"),\n\t\t\t},\n\t\t\t&cli.StringFlag{\n\t\t\t\tName:        \"toolkit-package-type\",\n\t\t\t\tUsage:       \"specify the package type to use for the toolkit. One of ['deb', 'rpm', 'auto', '']. If 'auto' or '' are used, the type is inferred automatically.\",\n\t\t\t\tValue:       \"auto\",\n\t\t\t\tDestination: &options.packageType,\n\t\t\t\tSources:     cli.EnvVars(\"TOOLKIT_PACKAGE_TYPE\"),\n\t\t\t},\n\t\t\t&cli.StringFlag{\n\t\t\t\tName:        \"pid-file\",\n\t\t\t\tValue:       defaultPidFile,\n\t\t\t\tUsage:       \"the path to a toolkit.pid file to ensure that only a single configuration instance is running\",\n\t\t\t\tDestination: &options.pidFile,\n\t\t\t\tSources:     cli.EnvVars(\"TOOLKIT_PID_FILE\", \"PID_FILE\"),\n\t\t\t},\n\t\t\t&cli.BoolFlag{\n\t\t\t\tName:        \"debug\",\n\t\t\t\tValue:       false,\n\t\t\t\tUsage:       \"enable debug-level log in the toolkit installer\",\n\t\t\t\tDestination: &options.debug,\n\t\t\t\tSources:     cli.EnvVars(\"TOOLKIT_DEBUG\"),\n\t\t\t},\n\t\t},\n\t}\n\n\t// Add the additional flags specific to the toolkit and runtime config.\n\tc.Flags = append(c.Flags, toolkit.Flags(&options.toolkitOptions)...)\n\tc.Flags = append(c.Flags, runtime.Flags(&options.runtimeOptions)...)\n\n\treturn &c\n}\n\nfunc (a *app) Before(c *cli.Command, o *options) error {\n\tif o.debug && a.logger != nil {\n\t\ta.logger.SetLevel(logrus.DebugLevel)\n\t}\n\tif o.sourceRoot == \"\" {\n\t\tsourceRoot, err := a.resolveSourceRoot(o.runtimeOptions.HostRootMount, o.packageType)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"failed to resolve source root: %v\", err)\n\t\t}\n\t\ta.logger.Infof(\"Resolved source root to %v\", sourceRoot)\n\t\to.sourceRoot = sourceRoot\n\t}\n\n\ta.toolkit = toolkit.NewInstaller(\n\t\ttoolkit.WithLogger(a.logger),\n\t\ttoolkit.WithSourceRoot(o.sourceRoot),\n\t\ttoolkit.WithToolkitRoot(o.toolkitRoot()),\n\t)\n\treturn a.validateFlags(c, o)\n}\n\nfunc (a *app) validateFlags(c *cli.Command, o *options) error {\n\tif o.toolkitInstallDir == \"\" {\n\t\treturn fmt.Errorf(\"the install root must be specified\")\n\t}\n\tif filepath.Base(o.pidFile) != toolkitPidFilename {\n\t\treturn fmt.Errorf(\"invalid toolkit.pid path %v\", o.pidFile)\n\t}\n\n\tif o.enableNRIPlugin && len(o.nriNamespace) == 0 {\n\t\treturn fmt.Errorf(\"the NRI namespace must be specified when the NRI plugin is enabled\")\n\t}\n\n\tif err := a.toolkit.ValidateOptions(&o.toolkitOptions); err != nil {\n\t\treturn err\n\t}\n\n\tif err := o.runtimeOptions.Validate(a.logger, c, o.runtime, o.toolkitRoot(), &o.toolkitOptions); err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\n// Run installs the NVIDIA Container Toolkit and updates the requested runtime.\n// If the application is run as a daemon, the application waits and unconfigures\n// the runtime on termination.\nfunc (a *app) Run(ctx context.Context, c *cli.Command, o *options) error {\n\terr := a.initialize(o.pidFile)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to initialize: %v\", err)\n\t}\n\tdefer a.shutdown(o.pidFile)\n\n\truntimeConfigurer := runtime.NewConfigurer(o.runtime, o.noRuntimeConfig, o.enableNRIPlugin)\n\n\tif len(o.toolkitOptions.ContainerRuntimeRuntimes) == 0 {\n\t\tlowlevelRuntimePaths, err := runtimeConfigurer.GetLowlevelRuntimePaths(&o.runtimeOptions)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"unable to determine runtime options: %w\", err)\n\t\t}\n\t\tlowlevelRuntimePaths = append(lowlevelRuntimePaths, defaultLowLevelRuntimes...)\n\n\t\to.toolkitOptions.ContainerRuntimeRuntimes = lowlevelRuntimePaths\n\t}\n\n\terr = a.toolkit.Install(c, &o.toolkitOptions, o.runtime)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to install toolkit: %v\", err)\n\t}\n\n\terr = runtimeConfigurer.Setup(c, &o.runtimeOptions)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to setup runtime: %w\", err)\n\t}\n\n\tif o.noDaemon {\n\t\treturn nil\n\t}\n\n\tif o.enableNRIPlugin {\n\t\tnriPlugin, err := a.startNRIPluginServer(ctx, o)\n\t\tif err != nil {\n\t\t\ta.logger.Errorf(\"unable to start NRI plugin server: %v\", err)\n\t\t}\n\t\tdefer nriPlugin.Stop()\n\t}\n\n\terr = a.waitForSignal()\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to wait for signal: %v\", err)\n\t}\n\n\terr = runtimeConfigurer.Cleanup(c, &o.runtimeOptions)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to cleanup runtime: %v\", err)\n\t}\n\n\treturn nil\n}\n\nfunc (a *app) initialize(pidFile string) error {\n\ta.logger.Infof(\"Initializing\")\n\n\tif dir := filepath.Dir(pidFile); dir != \"\" {\n\t\terr := os.MkdirAll(dir, 0755)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"unable to create folder for pidfile: %w\", err)\n\t\t}\n\t}\n\n\tf, err := os.Create(pidFile)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to create pidfile: %v\", err)\n\t}\n\n\terr = unix.Flock(int(f.Fd()), unix.LOCK_EX|unix.LOCK_NB)\n\tif err != nil {\n\t\ta.logger.Warningf(\"Unable to get exclusive lock on '%v'\", pidFile)\n\t\ta.logger.Warningf(\"This normally means an instance of the NVIDIA toolkit Container is already running, aborting\")\n\t\treturn fmt.Errorf(\"unable to get flock on pidfile: %v\", err)\n\t}\n\n\t_, err = fmt.Fprintf(f, \"%v\\n\", os.Getpid())\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to write PID to pidfile: %v\", err)\n\t}\n\n\tsigs := make(chan os.Signal, 1)\n\tsignal.Notify(sigs, syscall.SIGHUP, syscall.SIGINT, syscall.SIGQUIT, syscall.SIGPIPE, syscall.SIGTERM)\n\tgo func() {\n\t\t<-sigs\n\t\tselect {\n\t\tcase <-waitingForSignal:\n\t\t\tsignalReceived <- true\n\t\tdefault:\n\t\t\ta.logger.Infof(\"Signal received, exiting early\")\n\t\t\ta.shutdown(pidFile)\n\t\t\tos.Exit(0)\n\t\t}\n\t}()\n\n\treturn nil\n}\n\nfunc (a *app) waitForSignal() error {\n\ta.logger.Infof(\"Waiting for signal\")\n\twaitingForSignal <- true\n\t<-signalReceived\n\treturn nil\n}\n\nfunc (a *app) startNRIPluginServer(ctx context.Context, opts *options) (*nri.Plugin, error) {\n\ta.logger.Infof(\"Starting the NRI Plugin server....\")\n\n\tconst (\n\t\tmaxRetryAttempts = 5\n\t\tretryBackoff     = 2 * time.Second\n\t)\n\n\tplugin := nri.NewPlugin(ctx, a.logger, opts.nriNamespace)\n\tretriable := func() error {\n\t\treturn plugin.Start(ctx, opts.nriSocket, fmt.Sprintf(\"%02d\", opts.nriPluginIndex))\n\t}\n\tvar err error\n\tfor i := 0; i < maxRetryAttempts; i++ {\n\t\terr = retriable()\n\t\tif err == nil {\n\t\t\tbreak\n\t\t}\n\t\ta.logger.Warningf(\"Attempt %d - error starting the NRI plugin: %v\", i+1, err)\n\t\tif i == maxRetryAttempts-1 {\n\t\t\tbreak\n\t\t}\n\t\ttime.Sleep(retryBackoff)\n\t}\n\tif err != nil {\n\t\ta.logger.Errorf(\"Max retries reached %d/%d, aborting\", maxRetryAttempts, maxRetryAttempts)\n\t\treturn nil, err\n\t}\n\treturn plugin, nil\n}\n\nfunc (a *app) shutdown(pidFile string) {\n\ta.logger.Infof(\"Shutting Down\")\n\n\terr := os.Remove(pidFile)\n\tif err != nil {\n\t\ta.logger.Warningf(\"Unable to remove pidfile: %v\", err)\n\t}\n}\n\nfunc (a *app) resolveSourceRoot(hostRoot string, packageType string) (string, error) {\n\tresolvedPackageType, err := a.resolvePackageType(hostRoot, packageType)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tswitch resolvedPackageType {\n\tcase \"deb\":\n\t\treturn \"/artifacts/deb\", nil\n\tcase \"rpm\":\n\t\treturn \"/artifacts/rpm\", nil\n\tdefault:\n\t\treturn \"\", fmt.Errorf(\"invalid package type: %v\", resolvedPackageType)\n\t}\n}\n\nfunc (a *app) resolvePackageType(hostRoot string, packageType string) (rPackageTypes string, rerr error) {\n\tif packageType != \"\" && packageType != \"auto\" {\n\t\treturn packageType, nil\n\t}\n\n\tlocator := lookup.NewExecutableLocator(a.logger, hostRoot)\n\tif candidates, err := locator.Locate(\"/usr/bin/rpm\"); err == nil && len(candidates) > 0 {\n\t\treturn \"rpm\", nil\n\t}\n\n\tif candidates, err := locator.Locate(\"/usr/bin/dpkg\"); err == nil && len(candidates) > 0 {\n\t\treturn \"deb\", nil\n\t}\n\n\treturn \"deb\", nil\n}\n"
  },
  {
    "path": "cmd/nvidia-ctk-installer/main_test.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage main\n\nimport (\n\t\"context\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"testing\"\n\n\ttestlog \"github.com/sirupsen/logrus/hooks/test\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/devices\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/test\"\n)\n\nfunc TestApp(t *testing.T) {\n\tdefer devices.SetAllForTest()()\n\n\tlogger, _ := testlog.NewNullLogger()\n\n\tmoduleRoot, err := test.GetModuleRoot()\n\trequire.NoError(t, err)\n\n\tartifactRoot := filepath.Join(moduleRoot, \"testdata\", \"installer\", \"artifacts\")\n\thostRoot := filepath.Join(moduleRoot, \"testdata\", \"lookup\", \"rootfs-1\")\n\n\ttestCases := []struct {\n\t\tdescription                 string\n\t\targs                        []string\n\t\texpectedToolkitConfig       string\n\t\texpectedRuntimeConfig       string\n\t\texpectedDropInRuntimeConfig string\n\t}{\n\t\t{\n\t\t\tdescription: \"no args\",\n\t\t\texpectedToolkitConfig: `accept-nvidia-visible-devices-as-volume-mounts = false\naccept-nvidia-visible-devices-envvar-when-unprivileged = true\ndisable-require = false\nsupported-driver-capabilities = \"compat32,compute,display,graphics,ngx,utility,video\"\nswarm-resource = \"\"\n\n[nvidia-container-cli]\n  debug = \"\"\n  environment = []\n  ldcache = \"\"\n  ldconfig = \"@/run/nvidia/driver/sbin/ldconfig\"\n  load-kmods = true\n  no-cgroups = false\n  path = \"{{ .toolkitRoot }}/toolkit/nvidia-container-cli\"\n  root = \"/run/nvidia/driver\"\n  user = \"\"\n\n[nvidia-container-runtime]\n  debug = \"/dev/null\"\n  log-level = \"info\"\n  mode = \"auto\"\n  runtimes = [\"runc\", \"crun\"]\n\n  [nvidia-container-runtime.modes]\n\n    [nvidia-container-runtime.modes.cdi]\n      annotation-prefixes = [\"cdi.k8s.io/\"]\n      default-kind = \"nvidia.com/gpu\"\n      spec-dirs = [\"/etc/cdi\", \"/var/run/cdi\"]\n\n    [nvidia-container-runtime.modes.csv]\n      mount-spec-path = \"/etc/nvidia-container-runtime/host-files-for-container.d\"\n\n    [nvidia-container-runtime.modes.legacy]\n      cuda-compat-mode = \"ldconfig\"\n\n[nvidia-container-runtime-hook]\n  path = \"{{ .toolkitRoot }}/toolkit/nvidia-container-runtime-hook\"\n  skip-mode-detection = true\n\n[nvidia-ctk]\n  path = \"{{ .toolkitRoot }}/toolkit/nvidia-ctk\"\n`,\n\t\t\texpectedRuntimeConfig: `{\n    \"default-runtime\": \"nvidia\",\n    \"runtimes\": {\n        \"nvidia\": {\n            \"args\": [],\n            \"path\": \"{{ .toolkitRoot }}/toolkit/nvidia-container-runtime\"\n        },\n        \"nvidia-cdi\": {\n            \"args\": [],\n            \"path\": \"{{ .toolkitRoot }}/toolkit/nvidia-container-runtime.cdi\"\n        },\n        \"nvidia-legacy\": {\n            \"args\": [],\n            \"path\": \"{{ .toolkitRoot }}/toolkit/nvidia-container-runtime.legacy\"\n        }\n    }\n}`,\n\t\t},\n\t\t{\n\t\t\tdescription: \"CDI enabled enables CDI in docker\",\n\t\t\targs:        []string{\"--cdi-enabled\", \"--create-device-nodes=none\"},\n\t\t\texpectedToolkitConfig: `accept-nvidia-visible-devices-as-volume-mounts = false\naccept-nvidia-visible-devices-envvar-when-unprivileged = true\ndisable-require = false\nsupported-driver-capabilities = \"compat32,compute,display,graphics,ngx,utility,video\"\nswarm-resource = \"\"\n\n[nvidia-container-cli]\n  debug = \"\"\n  environment = []\n  ldcache = \"\"\n  ldconfig = \"@/run/nvidia/driver/sbin/ldconfig\"\n  load-kmods = true\n  no-cgroups = false\n  path = \"{{ .toolkitRoot }}/toolkit/nvidia-container-cli\"\n  root = \"/run/nvidia/driver\"\n  user = \"\"\n\n[nvidia-container-runtime]\n  debug = \"/dev/null\"\n  log-level = \"info\"\n  mode = \"auto\"\n  runtimes = [\"runc\", \"crun\"]\n\n  [nvidia-container-runtime.modes]\n\n    [nvidia-container-runtime.modes.cdi]\n      annotation-prefixes = [\"cdi.k8s.io/\"]\n      default-kind = \"nvidia.com/gpu\"\n      spec-dirs = [\"/etc/cdi\", \"/var/run/cdi\"]\n\n    [nvidia-container-runtime.modes.csv]\n      mount-spec-path = \"/etc/nvidia-container-runtime/host-files-for-container.d\"\n\n    [nvidia-container-runtime.modes.legacy]\n      cuda-compat-mode = \"ldconfig\"\n\n[nvidia-container-runtime-hook]\n  path = \"{{ .toolkitRoot }}/toolkit/nvidia-container-runtime-hook\"\n  skip-mode-detection = true\n\n[nvidia-ctk]\n  path = \"{{ .toolkitRoot }}/toolkit/nvidia-ctk\"\n`,\n\t\t\texpectedRuntimeConfig: `{\n    \"default-runtime\": \"nvidia\",\n    \"features\": {\n        \"cdi\": true\n    },\n    \"runtimes\": {\n        \"nvidia\": {\n            \"args\": [],\n            \"path\": \"{{ .toolkitRoot }}/toolkit/nvidia-container-runtime\"\n        },\n        \"nvidia-cdi\": {\n            \"args\": [],\n            \"path\": \"{{ .toolkitRoot }}/toolkit/nvidia-container-runtime.cdi\"\n        },\n        \"nvidia-legacy\": {\n            \"args\": [],\n            \"path\": \"{{ .toolkitRoot }}/toolkit/nvidia-container-runtime.legacy\"\n        }\n    }\n}`,\n\t\t},\n\t\t{\n\t\t\tdescription: \"--enable-cdi-in-runtime=false overrides --cdi-enabled in Docker\",\n\t\t\targs:        []string{\"--cdi-enabled\", \"--create-device-nodes=none\", \"--enable-cdi-in-runtime=false\"},\n\t\t\texpectedToolkitConfig: `accept-nvidia-visible-devices-as-volume-mounts = false\naccept-nvidia-visible-devices-envvar-when-unprivileged = true\ndisable-require = false\nsupported-driver-capabilities = \"compat32,compute,display,graphics,ngx,utility,video\"\nswarm-resource = \"\"\n\n[nvidia-container-cli]\n  debug = \"\"\n  environment = []\n  ldcache = \"\"\n  ldconfig = \"@/run/nvidia/driver/sbin/ldconfig\"\n  load-kmods = true\n  no-cgroups = false\n  path = \"{{ .toolkitRoot }}/toolkit/nvidia-container-cli\"\n  root = \"/run/nvidia/driver\"\n  user = \"\"\n\n[nvidia-container-runtime]\n  debug = \"/dev/null\"\n  log-level = \"info\"\n  mode = \"auto\"\n  runtimes = [\"runc\", \"crun\"]\n\n  [nvidia-container-runtime.modes]\n\n    [nvidia-container-runtime.modes.cdi]\n      annotation-prefixes = [\"cdi.k8s.io/\"]\n      default-kind = \"nvidia.com/gpu\"\n      spec-dirs = [\"/etc/cdi\", \"/var/run/cdi\"]\n\n    [nvidia-container-runtime.modes.csv]\n      mount-spec-path = \"/etc/nvidia-container-runtime/host-files-for-container.d\"\n\n    [nvidia-container-runtime.modes.legacy]\n      cuda-compat-mode = \"ldconfig\"\n\n[nvidia-container-runtime-hook]\n  path = \"{{ .toolkitRoot }}/toolkit/nvidia-container-runtime-hook\"\n  skip-mode-detection = true\n\n[nvidia-ctk]\n  path = \"{{ .toolkitRoot }}/toolkit/nvidia-ctk\"\n`,\n\t\t\texpectedRuntimeConfig: `{\n    \"default-runtime\": \"nvidia\",\n    \"runtimes\": {\n        \"nvidia\": {\n            \"args\": [],\n            \"path\": \"{{ .toolkitRoot }}/toolkit/nvidia-container-runtime\"\n        },\n        \"nvidia-cdi\": {\n            \"args\": [],\n            \"path\": \"{{ .toolkitRoot }}/toolkit/nvidia-container-runtime.cdi\"\n        },\n        \"nvidia-legacy\": {\n            \"args\": [],\n            \"path\": \"{{ .toolkitRoot }}/toolkit/nvidia-container-runtime.legacy\"\n        }\n    }\n}`,\n\t\t},\n\t\t{\n\t\t\tdescription: \"CDI enabled enables CDI in containerd\",\n\t\t\targs:        []string{\"--cdi-enabled\", \"--runtime=containerd\"},\n\t\t\texpectedToolkitConfig: `accept-nvidia-visible-devices-as-volume-mounts = false\naccept-nvidia-visible-devices-envvar-when-unprivileged = true\ndisable-require = false\nsupported-driver-capabilities = \"compat32,compute,display,graphics,ngx,utility,video\"\nswarm-resource = \"\"\n\n[nvidia-container-cli]\n  debug = \"\"\n  environment = []\n  ldcache = \"\"\n  ldconfig = \"@/run/nvidia/driver/sbin/ldconfig\"\n  load-kmods = true\n  no-cgroups = false\n  path = \"{{ .toolkitRoot }}/toolkit/nvidia-container-cli\"\n  root = \"/run/nvidia/driver\"\n  user = \"\"\n\n[nvidia-container-runtime]\n  debug = \"/dev/null\"\n  log-level = \"info\"\n  mode = \"auto\"\n  runtimes = [\"runc\", \"crun\"]\n\n  [nvidia-container-runtime.modes]\n\n    [nvidia-container-runtime.modes.cdi]\n      annotation-prefixes = [\"cdi.k8s.io/\"]\n      default-kind = \"nvidia.com/gpu\"\n      spec-dirs = [\"/etc/cdi\", \"/var/run/cdi\"]\n\n    [nvidia-container-runtime.modes.csv]\n      mount-spec-path = \"/etc/nvidia-container-runtime/host-files-for-container.d\"\n\n    [nvidia-container-runtime.modes.legacy]\n      cuda-compat-mode = \"ldconfig\"\n\n[nvidia-container-runtime-hook]\n  path = \"{{ .toolkitRoot }}/toolkit/nvidia-container-runtime-hook\"\n  skip-mode-detection = true\n\n[nvidia-ctk]\n  path = \"{{ .toolkitRoot }}/toolkit/nvidia-ctk\"\n`,\n\t\t\texpectedRuntimeConfig: `imports = [\"{{ .testRoot }}/conf.d/*.toml\"]\nversion = 2\n`,\n\t\t\texpectedDropInRuntimeConfig: `version = 2\n\n[plugins]\n\n  [plugins.\"io.containerd.grpc.v1.cri\"]\n    enable_cdi = true\n\n    [plugins.\"io.containerd.grpc.v1.cri\".containerd]\n      default_runtime_name = \"nvidia\"\n\n      [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes]\n\n        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.nvidia]\n          privileged_without_host_devices = false\n          runtime_engine = \"\"\n          runtime_root = \"\"\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.nvidia.options]\n            BinaryName = \"{{ .toolkitRoot }}/toolkit/nvidia-container-runtime\"\n\n        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.nvidia-cdi]\n          privileged_without_host_devices = false\n          runtime_engine = \"\"\n          runtime_root = \"\"\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.nvidia-cdi.options]\n            BinaryName = \"{{ .toolkitRoot }}/toolkit/nvidia-container-runtime.cdi\"\n\n        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.nvidia-legacy]\n          privileged_without_host_devices = false\n          runtime_engine = \"\"\n          runtime_root = \"\"\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.nvidia-legacy.options]\n            BinaryName = \"{{ .toolkitRoot }}/toolkit/nvidia-container-runtime.legacy\"\n`,\n\t\t},\n\t\t{\n\t\t\tdescription: \"--enable-cdi-in-runtime=false overrides --cdi-enabled in containerd\",\n\t\t\targs:        []string{\"--cdi-enabled\", \"--create-device-nodes=none\", \"--enable-cdi-in-runtime=false\", \"--runtime=containerd\"},\n\t\t\texpectedToolkitConfig: `accept-nvidia-visible-devices-as-volume-mounts = false\naccept-nvidia-visible-devices-envvar-when-unprivileged = true\ndisable-require = false\nsupported-driver-capabilities = \"compat32,compute,display,graphics,ngx,utility,video\"\nswarm-resource = \"\"\n\n[nvidia-container-cli]\n  debug = \"\"\n  environment = []\n  ldcache = \"\"\n  ldconfig = \"@/run/nvidia/driver/sbin/ldconfig\"\n  load-kmods = true\n  no-cgroups = false\n  path = \"{{ .toolkitRoot }}/toolkit/nvidia-container-cli\"\n  root = \"/run/nvidia/driver\"\n  user = \"\"\n\n[nvidia-container-runtime]\n  debug = \"/dev/null\"\n  log-level = \"info\"\n  mode = \"auto\"\n  runtimes = [\"runc\", \"crun\"]\n\n  [nvidia-container-runtime.modes]\n\n    [nvidia-container-runtime.modes.cdi]\n      annotation-prefixes = [\"cdi.k8s.io/\"]\n      default-kind = \"nvidia.com/gpu\"\n      spec-dirs = [\"/etc/cdi\", \"/var/run/cdi\"]\n\n    [nvidia-container-runtime.modes.csv]\n      mount-spec-path = \"/etc/nvidia-container-runtime/host-files-for-container.d\"\n\n    [nvidia-container-runtime.modes.legacy]\n      cuda-compat-mode = \"ldconfig\"\n\n[nvidia-container-runtime-hook]\n  path = \"{{ .toolkitRoot }}/toolkit/nvidia-container-runtime-hook\"\n  skip-mode-detection = true\n\n[nvidia-ctk]\n  path = \"{{ .toolkitRoot }}/toolkit/nvidia-ctk\"\n`,\n\t\t\texpectedRuntimeConfig: `imports = [\"{{ .testRoot }}/conf.d/*.toml\"]\nversion = 2\n`,\n\t\t\texpectedDropInRuntimeConfig: `version = 2\n\n[plugins]\n\n  [plugins.\"io.containerd.grpc.v1.cri\"]\n\n    [plugins.\"io.containerd.grpc.v1.cri\".containerd]\n      default_runtime_name = \"nvidia\"\n\n      [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes]\n\n        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.nvidia]\n          privileged_without_host_devices = false\n          runtime_engine = \"\"\n          runtime_root = \"\"\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.nvidia.options]\n            BinaryName = \"{{ .toolkitRoot }}/toolkit/nvidia-container-runtime\"\n\n        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.nvidia-cdi]\n          privileged_without_host_devices = false\n          runtime_engine = \"\"\n          runtime_root = \"\"\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.nvidia-cdi.options]\n            BinaryName = \"{{ .toolkitRoot }}/toolkit/nvidia-container-runtime.cdi\"\n\n        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.nvidia-legacy]\n          privileged_without_host_devices = false\n          runtime_engine = \"\"\n          runtime_root = \"\"\n          runtime_type = \"io.containerd.runc.v2\"\n\n          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.nvidia-legacy.options]\n            BinaryName = \"{{ .toolkitRoot }}/toolkit/nvidia-container-runtime.legacy\"\n`,\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\ttestRoot := t.TempDir()\n\n\t\t\tcdiOutputDir := filepath.Join(testRoot, \"/var/run/cdi\")\n\t\t\truntimeConfigFile := filepath.Join(testRoot, \"config.file\")\n\t\t\truntimeDropInConfigFile := filepath.Join(testRoot, \"conf.d/config.toml\")\n\n\t\t\ttoolkitRoot := filepath.Join(testRoot, \"toolkit-test\")\n\t\t\ttoolkitConfigFile := filepath.Join(toolkitRoot, \"toolkit/.config/nvidia-container-runtime/config.toml\")\n\n\t\t\tapp := NewApp(logger)\n\n\t\t\ttestArgs := []string{\n\t\t\t\t\"nvidia-ctk-installer\",\n\t\t\t\t\"--toolkit-install-dir=\" + toolkitRoot,\n\t\t\t\t\"--no-daemon\",\n\t\t\t\t\"--enable-nri-plugin=false\",\n\t\t\t\t\"--cdi-output-dir=\" + cdiOutputDir,\n\t\t\t\t\"--config=\" + runtimeConfigFile,\n\t\t\t\t\"--drop-in-config=\" + runtimeDropInConfigFile,\n\t\t\t\t\"--create-device-nodes=none\",\n\t\t\t\t\"--driver-root-ctr-path=\" + hostRoot,\n\t\t\t\t\"--pid-file=\" + filepath.Join(testRoot, \"toolkit.pid\"),\n\t\t\t\t\"--restart-mode=none\",\n\t\t\t\t\"--toolkit-source-root=\" + filepath.Join(artifactRoot, \"deb\"),\n\t\t\t}\n\n\t\t\terr := app.Run(context.Background(), append(testArgs, tc.args...))\n\n\t\t\trequire.NoError(t, err)\n\n\t\t\trequire.FileExists(t, toolkitConfigFile)\n\t\t\ttoolkitConfigFileContents, err := os.ReadFile(toolkitConfigFile)\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.EqualValues(t, strings.ReplaceAll(tc.expectedToolkitConfig, \"{{ .toolkitRoot }}\", toolkitRoot), string(toolkitConfigFileContents))\n\n\t\t\tif len(tc.expectedRuntimeConfig) > 0 {\n\t\t\t\trequire.FileExists(t, runtimeConfigFile)\n\t\t\t\truntimeConfigFileContents, err := os.ReadFile(runtimeConfigFile)\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\texpected := strings.ReplaceAll(tc.expectedRuntimeConfig, \"{{ .testRoot }}\", testRoot)\n\t\t\t\trequire.Equal(t, strings.ReplaceAll(expected, \"{{ .toolkitRoot }}\", toolkitRoot), string(runtimeConfigFileContents))\n\t\t\t} else {\n\t\t\t\trequire.NoFileExists(t, runtimeConfigFile)\n\t\t\t}\n\n\t\t\tif len(tc.expectedDropInRuntimeConfig) > 0 {\n\t\t\t\trequire.FileExists(t, runtimeDropInConfigFile)\n\t\t\t\truntimeDropInConfigFileContents, err := os.ReadFile(runtimeDropInConfigFile)\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\trequire.Equal(t, strings.ReplaceAll(tc.expectedDropInRuntimeConfig, \"{{ .toolkitRoot }}\", toolkitRoot), string(runtimeDropInConfigFileContents))\n\t\t\t} else {\n\t\t\t\trequire.NoFileExists(t, runtimeDropInConfigFile)\n\t\t\t}\n\t\t})\n\t}\n\n}\n"
  },
  {
    "path": "cmd/nvidia-ctk-installer/toolkit/installer/artifact-root.go",
    "content": "/**\n# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage installer\n\nimport (\n\t\"fmt\"\n\t\"path/filepath\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/lookup\"\n)\n\n// An artifactRoot is used as a source for installed artifacts.\n// It is refined by a directory path, a library locator, and an executable locator.\ntype artifactRoot struct {\n\tpath        string\n\tlibraries   lookup.Locator\n\texecutables lookup.Locator\n}\n\nfunc newArtifactRoot(logger logger.Interface, rootDirectoryPath string) (*artifactRoot, error) {\n\trelativeLibrarySearchPaths := []string{\n\t\t\"/usr/lib64\",\n\t\t\"/usr/lib/x86_64-linux-gnu\",\n\t\t\"/usr/lib/aarch64-linux-gnu\",\n\t}\n\tvar librarySearchPaths []string\n\tfor _, l := range relativeLibrarySearchPaths {\n\t\tlibrarySearchPaths = append(librarySearchPaths, filepath.Join(rootDirectoryPath, l))\n\t}\n\n\ta := artifactRoot{\n\t\tpath: rootDirectoryPath,\n\t\tlibraries: lookup.NewLibraryLocator(\n\t\t\tlookup.WithLogger(logger),\n\t\t\tlookup.WithCount(1),\n\t\t\tlookup.WithSearchPaths(librarySearchPaths...),\n\t\t),\n\t\texecutables: lookup.NewExecutableLocator(\n\t\t\tlogger,\n\t\t\trootDirectoryPath,\n\t\t),\n\t}\n\n\treturn &a, nil\n}\n\nfunc (r *artifactRoot) findLibrary(name string) (string, error) {\n\tcandidates, err := r.libraries.Locate(name)\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"error locating library: %w\", err)\n\t}\n\tif len(candidates) == 0 {\n\t\treturn \"\", fmt.Errorf(\"library %v not found\", name)\n\t}\n\n\treturn candidates[0], nil\n}\n\nfunc (r *artifactRoot) findExecutable(name string) (string, error) {\n\tcandidates, err := r.executables.Locate(name)\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"error locating executable: %w\", err)\n\t}\n\tif len(candidates) == 0 {\n\t\treturn \"\", fmt.Errorf(\"executable %v not found\", name)\n\t}\n\n\treturn candidates[0], nil\n}\n"
  },
  {
    "path": "cmd/nvidia-ctk-installer/toolkit/installer/directory.go",
    "content": "/**\n# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage installer\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n)\n\ntype createDirectory struct {\n\tlogger logger.Interface\n}\n\nfunc (t *ToolkitInstaller) createDirectory() Installer {\n\treturn &createDirectory{\n\t\tlogger: t.logger,\n\t}\n}\n\nfunc (d *createDirectory) Install(dir string) error {\n\tif dir == \"\" {\n\t\treturn nil\n\t}\n\td.logger.Infof(\"Creating directory '%v'\", dir)\n\terr := os.MkdirAll(dir, 0755)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"error creating directory: %v\", err)\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "cmd/nvidia-ctk-installer/toolkit/installer/executables.go",
    "content": "/**\n# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage installer\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"html/template\"\n\t\"io\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\tlog \"github.com/sirupsen/logrus\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/api/config/v1\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk-installer/container/operator\"\n)\n\ntype executable struct {\n\trequiresKernelModule bool\n\tpath                 string\n\tsymlink              string\n\tenv                  map[string]string\n}\n\nfunc (t *ToolkitInstaller) collectExecutables(destDir string) ([]Installer, error) {\n\tconfigFilePath := t.ConfigFilePath(destDir)\n\n\texecutables := []executable{\n\t\t{\n\t\t\tpath: \"nvidia-ctk\",\n\t\t},\n\t\t{\n\t\t\tpath: \"nvidia-cdi-hook\",\n\t\t},\n\t}\n\tfor _, runtime := range operator.GetRuntimes() {\n\t\te := executable{\n\t\t\tpath:                 runtime.Path,\n\t\t\trequiresKernelModule: true,\n\t\t\tenv: map[string]string{\n\t\t\t\tconfig.FilePathOverrideEnvVar: configFilePath,\n\t\t\t},\n\t\t}\n\t\texecutables = append(executables, e)\n\t}\n\texecutables = append(executables,\n\t\texecutable{\n\t\t\tpath: \"nvidia-container-cli\",\n\t\t\tenv:  map[string]string{\"LD_LIBRARY_PATH\": destDir + \":$LD_LIBRARY_PATH\"},\n\t\t},\n\t)\n\n\texecutables = append(executables,\n\t\texecutable{\n\t\t\tpath:    \"nvidia-container-runtime-hook\",\n\t\t\tsymlink: \"nvidia-container-toolkit\",\n\t\t\tenv: map[string]string{\n\t\t\t\tconfig.FilePathOverrideEnvVar: configFilePath,\n\t\t\t},\n\t\t},\n\t)\n\n\tvar installers []Installer\n\tfor _, executable := range executables {\n\t\texecutablePath, err := t.artifactRoot.findExecutable(executable.path)\n\t\tif err != nil {\n\t\t\tif t.ignoreErrors {\n\t\t\t\tlog.Errorf(\"Ignoring error: %v\", err)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\treturn nil, err\n\t\t}\n\n\t\twrappedExecutableFilename := filepath.Base(executablePath)\n\t\tdotRealFilename := wrappedExecutableFilename + \".real\"\n\n\t\tw := &wrapper{\n\t\t\tSource:            executablePath,\n\t\t\tWrappedExecutable: dotRealFilename,\n\t\t\tCheckModules:      executable.requiresKernelModule,\n\t\t\tEnvvars: map[string]string{\n\t\t\t\t\"PATH\": strings.Join([]string{destDir, \"$PATH\"}, \":\"),\n\t\t\t},\n\t\t}\n\t\tfor k, v := range executable.env {\n\t\t\tw.Envvars[k] = v\n\t\t}\n\n\t\tif len(t.defaultRuntimeExecutablePath) > 0 {\n\t\t\tw.DefaultRuntimeExecutablePath = t.defaultRuntimeExecutablePath\n\t\t} else {\n\t\t\tw.DefaultRuntimeExecutablePath = \"runc\"\n\t\t}\n\n\t\tinstallers = append(installers, w)\n\n\t\tif executable.symlink == \"\" {\n\t\t\tcontinue\n\t\t}\n\t\tlink := symlink{\n\t\t\tlinkname: executable.symlink,\n\t\t\ttarget:   filepath.Base(executablePath),\n\t\t}\n\t\tinstallers = append(installers, link)\n\t}\n\n\treturn installers, nil\n\n}\n\ntype wrapper struct {\n\tSource                       string\n\tEnvvars                      map[string]string\n\tWrappedExecutable            string\n\tCheckModules                 bool\n\tDefaultRuntimeExecutablePath string\n}\n\ntype render struct {\n\t*wrapper\n\tDestDir string\n}\n\nfunc (w *wrapper) Install(destDir string) error {\n\t// Copy the executable with a .real extension.\n\tmode, err := installFile(w.Source, filepath.Join(destDir, w.WrappedExecutable))\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// Create a wrapper file.\n\tr := render{\n\t\twrapper: w,\n\t\tDestDir: destDir,\n\t}\n\tcontent, err := r.render()\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to render wrapper: %w\", err)\n\t}\n\twrapperFile := filepath.Join(destDir, filepath.Base(w.Source))\n\treturn installContent(content, wrapperFile, mode|0111)\n}\n\nfunc (w *render) render() (io.Reader, error) {\n\twrapperTemplate := `#! /bin/sh\n{{- if (.CheckModules) }}\ncat /proc/modules | grep -e \"^nvidia \" >/dev/null 2>&1\nif [ \"${?}\" != \"0\" ]; then\n\techo \"nvidia driver modules are not yet loaded, invoking {{ .DefaultRuntimeExecutablePath }} directly\" >&2\n\texec {{ .DefaultRuntimeExecutablePath }} \"$@\"\nfi\n{{- end }}\n{{- range $key, $value := .Envvars }}\n{{$key}}={{$value}} \\\n{{- end }}\n\t{{ .DestDir }}/{{ .WrappedExecutable }} \\\n\t\t\"$@\"\n`\n\n\tvar content bytes.Buffer\n\ttmpl, err := template.New(\"wrapper\").Parse(wrapperTemplate)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif err := tmpl.Execute(&content, w); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &content, nil\n}\n"
  },
  {
    "path": "cmd/nvidia-ctk-installer/toolkit/installer/executables_test.go",
    "content": "/**\n# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage installer\n\nimport (\n\t\"bytes\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestWrapperRender(t *testing.T) {\n\ttestCases := []struct {\n\t\tdescription string\n\t\tw           *wrapper\n\t\texpected    string\n\t}{\n\t\t{\n\t\t\tdescription: \"executable is added\",\n\t\t\tw: &wrapper{\n\t\t\t\tWrappedExecutable:            \"some-runtime\",\n\t\t\t\tDefaultRuntimeExecutablePath: \"runc\",\n\t\t\t},\n\t\t\texpected: `#! /bin/sh\n\t/dest-dir/some-runtime \\\n\t\t\"$@\"\n`,\n\t\t},\n\t\t{\n\t\t\tdescription: \"module check is added\",\n\t\t\tw: &wrapper{\n\t\t\t\tWrappedExecutable:            \"some-runtime\",\n\t\t\t\tCheckModules:                 true,\n\t\t\t\tDefaultRuntimeExecutablePath: \"runc\",\n\t\t\t},\n\t\t\texpected: `#! /bin/sh\ncat /proc/modules | grep -e \"^nvidia \" >/dev/null 2>&1\nif [ \"${?}\" != \"0\" ]; then\n\techo \"nvidia driver modules are not yet loaded, invoking runc directly\" >&2\n\texec runc \"$@\"\nfi\n\t/dest-dir/some-runtime \\\n\t\t\"$@\"\n`,\n\t\t},\n\t\t{\n\t\t\tdescription: \"environment is added\",\n\t\t\tw: &wrapper{\n\t\t\t\tWrappedExecutable: \"some-runtime\",\n\t\t\t\tEnvvars: map[string]string{\n\t\t\t\t\t\"PATH\": \"/foo/bar/baz\",\n\t\t\t\t},\n\t\t\t\tDefaultRuntimeExecutablePath: \"runc\",\n\t\t\t},\n\t\t\texpected: `#! /bin/sh\nPATH=/foo/bar/baz \\\n\t/dest-dir/some-runtime \\\n\t\t\"$@\"\n`,\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\tr := render{\n\t\t\t\twrapper: tc.w,\n\t\t\t\tDestDir: \"/dest-dir\",\n\t\t\t}\n\t\t\treader, err := r.render()\n\t\t\trequire.NoError(t, err)\n\n\t\t\tvar content bytes.Buffer\n\t\t\t_, err = content.ReadFrom(reader)\n\t\t\trequire.NoError(t, err)\n\n\t\t\trequire.Equal(t, tc.expected, content.String())\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "cmd/nvidia-ctk-installer/toolkit/installer/file-installer_mock.go",
    "content": "// Code generated by moq; DO NOT EDIT.\n// github.com/matryer/moq\n\npackage installer\n\nimport (\n\t\"io\"\n\t\"os\"\n\t\"sync\"\n)\n\n// Ensure, that fileInstallerMock does implement fileInstaller.\n// If this is not the case, regenerate this file with moq.\nvar _ fileInstaller = &fileInstallerMock{}\n\n// fileInstallerMock is a mock implementation of fileInstaller.\n//\n//\tfunc TestSomethingThatUsesfileInstaller(t *testing.T) {\n//\n//\t\t// make and configure a mocked fileInstaller\n//\t\tmockedfileInstaller := &fileInstallerMock{\n//\t\t\tinstallContentFunc: func(reader io.Reader, s string, v os.FileMode) error {\n//\t\t\t\tpanic(\"mock out the installContent method\")\n//\t\t\t},\n//\t\t\tinstallFileFunc: func(s1 string, s2 string) (os.FileMode, error) {\n//\t\t\t\tpanic(\"mock out the installFile method\")\n//\t\t\t},\n//\t\t\tinstallSymlinkFunc: func(s1 string, s2 string) error {\n//\t\t\t\tpanic(\"mock out the installSymlink method\")\n//\t\t\t},\n//\t\t}\n//\n//\t\t// use mockedfileInstaller in code that requires fileInstaller\n//\t\t// and then make assertions.\n//\n//\t}\ntype fileInstallerMock struct {\n\t// installContentFunc mocks the installContent method.\n\tinstallContentFunc func(reader io.Reader, s string, v os.FileMode) error\n\n\t// installFileFunc mocks the installFile method.\n\tinstallFileFunc func(s1 string, s2 string) (os.FileMode, error)\n\n\t// installSymlinkFunc mocks the installSymlink method.\n\tinstallSymlinkFunc func(s1 string, s2 string) error\n\n\t// calls tracks calls to the methods.\n\tcalls struct {\n\t\t// installContent holds details about calls to the installContent method.\n\t\tinstallContent []struct {\n\t\t\t// Reader is the reader argument value.\n\t\t\tReader io.Reader\n\t\t\t// S is the s argument value.\n\t\t\tS string\n\t\t\t// V is the v argument value.\n\t\t\tV os.FileMode\n\t\t}\n\t\t// installFile holds details about calls to the installFile method.\n\t\tinstallFile []struct {\n\t\t\t// S1 is the s1 argument value.\n\t\t\tS1 string\n\t\t\t// S2 is the s2 argument value.\n\t\t\tS2 string\n\t\t}\n\t\t// installSymlink holds details about calls to the installSymlink method.\n\t\tinstallSymlink []struct {\n\t\t\t// S1 is the s1 argument value.\n\t\t\tS1 string\n\t\t\t// S2 is the s2 argument value.\n\t\t\tS2 string\n\t\t}\n\t}\n\tlockinstallContent sync.RWMutex\n\tlockinstallFile    sync.RWMutex\n\tlockinstallSymlink sync.RWMutex\n}\n\n// installContent calls installContentFunc.\nfunc (mock *fileInstallerMock) installContent(reader io.Reader, s string, v os.FileMode) error {\n\tif mock.installContentFunc == nil {\n\t\tpanic(\"fileInstallerMock.installContentFunc: method is nil but fileInstaller.installContent was just called\")\n\t}\n\tcallInfo := struct {\n\t\tReader io.Reader\n\t\tS      string\n\t\tV      os.FileMode\n\t}{\n\t\tReader: reader,\n\t\tS:      s,\n\t\tV:      v,\n\t}\n\tmock.lockinstallContent.Lock()\n\tmock.calls.installContent = append(mock.calls.installContent, callInfo)\n\tmock.lockinstallContent.Unlock()\n\treturn mock.installContentFunc(reader, s, v)\n}\n\n// installContentCalls gets all the calls that were made to installContent.\n// Check the length with:\n//\n//\tlen(mockedfileInstaller.installContentCalls())\nfunc (mock *fileInstallerMock) installContentCalls() []struct {\n\tReader io.Reader\n\tS      string\n\tV      os.FileMode\n} {\n\tvar calls []struct {\n\t\tReader io.Reader\n\t\tS      string\n\t\tV      os.FileMode\n\t}\n\tmock.lockinstallContent.RLock()\n\tcalls = mock.calls.installContent\n\tmock.lockinstallContent.RUnlock()\n\treturn calls\n}\n\n// installFile calls installFileFunc.\nfunc (mock *fileInstallerMock) installFile(s1 string, s2 string) (os.FileMode, error) {\n\tif mock.installFileFunc == nil {\n\t\tpanic(\"fileInstallerMock.installFileFunc: method is nil but fileInstaller.installFile was just called\")\n\t}\n\tcallInfo := struct {\n\t\tS1 string\n\t\tS2 string\n\t}{\n\t\tS1: s1,\n\t\tS2: s2,\n\t}\n\tmock.lockinstallFile.Lock()\n\tmock.calls.installFile = append(mock.calls.installFile, callInfo)\n\tmock.lockinstallFile.Unlock()\n\treturn mock.installFileFunc(s1, s2)\n}\n\n// installFileCalls gets all the calls that were made to installFile.\n// Check the length with:\n//\n//\tlen(mockedfileInstaller.installFileCalls())\nfunc (mock *fileInstallerMock) installFileCalls() []struct {\n\tS1 string\n\tS2 string\n} {\n\tvar calls []struct {\n\t\tS1 string\n\t\tS2 string\n\t}\n\tmock.lockinstallFile.RLock()\n\tcalls = mock.calls.installFile\n\tmock.lockinstallFile.RUnlock()\n\treturn calls\n}\n\n// installSymlink calls installSymlinkFunc.\nfunc (mock *fileInstallerMock) installSymlink(s1 string, s2 string) error {\n\tif mock.installSymlinkFunc == nil {\n\t\tpanic(\"fileInstallerMock.installSymlinkFunc: method is nil but fileInstaller.installSymlink was just called\")\n\t}\n\tcallInfo := struct {\n\t\tS1 string\n\t\tS2 string\n\t}{\n\t\tS1: s1,\n\t\tS2: s2,\n\t}\n\tmock.lockinstallSymlink.Lock()\n\tmock.calls.installSymlink = append(mock.calls.installSymlink, callInfo)\n\tmock.lockinstallSymlink.Unlock()\n\treturn mock.installSymlinkFunc(s1, s2)\n}\n\n// installSymlinkCalls gets all the calls that were made to installSymlink.\n// Check the length with:\n//\n//\tlen(mockedfileInstaller.installSymlinkCalls())\nfunc (mock *fileInstallerMock) installSymlinkCalls() []struct {\n\tS1 string\n\tS2 string\n} {\n\tvar calls []struct {\n\t\tS1 string\n\t\tS2 string\n\t}\n\tmock.lockinstallSymlink.RLock()\n\tcalls = mock.calls.installSymlink\n\tmock.lockinstallSymlink.RUnlock()\n\treturn calls\n}\n"
  },
  {
    "path": "cmd/nvidia-ctk-installer/toolkit/installer/installer.go",
    "content": "/**\n# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage installer\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/fs\"\n\t\"os\"\n\t\"path/filepath\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n)\n\n//go:generate moq -rm -fmt=goimports -out installer_mock.go . Installer\ntype Installer interface {\n\tInstall(string) error\n}\n\ntype ToolkitInstaller struct {\n\tlogger       logger.Interface\n\tignoreErrors bool\n\tsourceRoot   string\n\n\tartifactRoot *artifactRoot\n\n\tensureTargetDirectory Installer\n\n\tdefaultRuntimeExecutablePath string\n}\n\nvar _ Installer = (*ToolkitInstaller)(nil)\n\n// New creates a toolkit installer with the specified options.\nfunc New(opts ...Option) (*ToolkitInstaller, error) {\n\tt := &ToolkitInstaller{\n\t\tsourceRoot: \"/\",\n\t}\n\tfor _, opt := range opts {\n\t\topt(t)\n\t}\n\n\tif t.logger == nil {\n\t\tt.logger = logger.New()\n\t}\n\tif t.artifactRoot == nil {\n\t\tartifactRoot, err := newArtifactRoot(t.logger, t.sourceRoot)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tt.artifactRoot = artifactRoot\n\t}\n\n\tif t.ensureTargetDirectory == nil {\n\t\tt.ensureTargetDirectory = t.createDirectory()\n\t}\n\n\treturn t, nil\n}\n\n// Install ensures that the required toolkit files are installed in the specified directory.\nfunc (t *ToolkitInstaller) Install(destDir string) error {\n\tvar installers []Installer\n\n\tinstallers = append(installers, t.ensureTargetDirectory)\n\n\tlibraries, err := t.collectLibraries()\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to collect libraries: %w\", err)\n\t}\n\tinstallers = append(installers, libraries...)\n\n\texecutables, err := t.collectExecutables(destDir)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to collect executables: %w\", err)\n\t}\n\tinstallers = append(installers, executables...)\n\n\tvar errs error\n\tfor _, i := range installers {\n\t\terrs = errors.Join(errs, i.Install(destDir))\n\t}\n\n\treturn errs\n}\n\nfunc (t *ToolkitInstaller) ConfigFilePath(destDir string) string {\n\ttoolkitConfigDir := filepath.Join(destDir, \".config\", \"nvidia-container-runtime\")\n\treturn filepath.Join(toolkitConfigDir, \"config.toml\")\n}\n\ntype symlink struct {\n\tlinkname string\n\ttarget   string\n}\n\nfunc (s symlink) Install(destDir string) error {\n\tsymlinkPath := filepath.Join(destDir, s.linkname)\n\treturn installSymlink(s.target, symlinkPath)\n}\n\n//go:generate moq -rm -fmt=goimports -out file-installer_mock.go . fileInstaller\ntype fileInstaller interface {\n\tinstallContent(io.Reader, string, os.FileMode) error\n\tinstallFile(string, string) (os.FileMode, error)\n\tinstallSymlink(string, string) error\n}\n\nvar installSymlink = installSymlinkStub\n\nfunc installSymlinkStub(target string, link string) error {\n\terr := os.Symlink(target, link)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"error creating symlink '%v' => '%v': %v\", link, target, err)\n\t}\n\treturn nil\n}\n\nvar installFile = installFileStub\n\nfunc installFileStub(src string, dest string) (os.FileMode, error) {\n\tsourceInfo, err := os.Stat(src)\n\tif err != nil {\n\t\treturn 0, fmt.Errorf(\"error getting file info for '%v': %v\", src, err)\n\t}\n\n\tsource, err := os.Open(src)\n\tif err != nil {\n\t\treturn 0, fmt.Errorf(\"error opening source: %w\", err)\n\t}\n\tdefer source.Close()\n\n\tmode := sourceInfo.Mode()\n\tif err := installContent(source, dest, mode); err != nil {\n\t\treturn 0, err\n\t}\n\treturn mode, nil\n}\n\nvar installContent = installContentStub\n\nfunc installContentStub(content io.Reader, dest string, mode fs.FileMode) error {\n\tdestination, err := os.Create(dest)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"error creating destination: %w\", err)\n\t}\n\tdefer destination.Close()\n\n\t_, err = io.Copy(destination, content)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"error copying file: %w\", err)\n\t}\n\terr = os.Chmod(dest, mode)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"error setting mode for '%v': %v\", dest, err)\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "cmd/nvidia-ctk-installer/toolkit/installer/installer_mock.go",
    "content": "// Code generated by moq; DO NOT EDIT.\n// github.com/matryer/moq\n\npackage installer\n\nimport (\n\t\"sync\"\n)\n\n// Ensure, that InstallerMock does implement Installer.\n// If this is not the case, regenerate this file with moq.\nvar _ Installer = &InstallerMock{}\n\n// InstallerMock is a mock implementation of Installer.\n//\n//\tfunc TestSomethingThatUsesInstaller(t *testing.T) {\n//\n//\t\t// make and configure a mocked Installer\n//\t\tmockedInstaller := &InstallerMock{\n//\t\t\tInstallFunc: func(s string) error {\n//\t\t\t\tpanic(\"mock out the Install method\")\n//\t\t\t},\n//\t\t}\n//\n//\t\t// use mockedInstaller in code that requires Installer\n//\t\t// and then make assertions.\n//\n//\t}\ntype InstallerMock struct {\n\t// InstallFunc mocks the Install method.\n\tInstallFunc func(s string) error\n\n\t// calls tracks calls to the methods.\n\tcalls struct {\n\t\t// Install holds details about calls to the Install method.\n\t\tInstall []struct {\n\t\t\t// S is the s argument value.\n\t\t\tS string\n\t\t}\n\t}\n\tlockInstall sync.RWMutex\n}\n\n// Install calls InstallFunc.\nfunc (mock *InstallerMock) Install(s string) error {\n\tif mock.InstallFunc == nil {\n\t\tpanic(\"InstallerMock.InstallFunc: method is nil but Installer.Install was just called\")\n\t}\n\tcallInfo := struct {\n\t\tS string\n\t}{\n\t\tS: s,\n\t}\n\tmock.lockInstall.Lock()\n\tmock.calls.Install = append(mock.calls.Install, callInfo)\n\tmock.lockInstall.Unlock()\n\treturn mock.InstallFunc(s)\n}\n\n// InstallCalls gets all the calls that were made to Install.\n// Check the length with:\n//\n//\tlen(mockedInstaller.InstallCalls())\nfunc (mock *InstallerMock) InstallCalls() []struct {\n\tS string\n} {\n\tvar calls []struct {\n\t\tS string\n\t}\n\tmock.lockInstall.RLock()\n\tcalls = mock.calls.Install\n\tmock.lockInstall.RUnlock()\n\treturn calls\n}\n"
  },
  {
    "path": "cmd/nvidia-ctk-installer/toolkit/installer/installer_test.go",
    "content": "/**\n# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage installer\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/fs\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"testing\"\n\n\ttestlog \"github.com/sirupsen/logrus/hooks/test\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/lookup\"\n)\n\nfunc TestToolkitInstaller(t *testing.T) {\n\tlogger, _ := testlog.NewNullLogger()\n\n\ttype contentCall struct {\n\t\twrapper string\n\t\tpath    string\n\t\tmode    fs.FileMode\n\t}\n\tvar contentCalls []contentCall\n\n\tinstaller := &fileInstallerMock{\n\t\tinstallFileFunc: func(s1, s2 string) (os.FileMode, error) {\n\t\t\treturn 0666, nil\n\t\t},\n\t\tinstallContentFunc: func(reader io.Reader, s string, fileMode fs.FileMode) error {\n\t\t\tvar b bytes.Buffer\n\t\t\tif _, err := b.ReadFrom(reader); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tcontents := contentCall{\n\t\t\t\twrapper: b.String(),\n\t\t\t\tpath:    s,\n\t\t\t\tmode:    fileMode,\n\t\t\t}\n\n\t\t\tcontentCalls = append(contentCalls, contents)\n\t\t\treturn nil\n\t\t},\n\t\tinstallSymlinkFunc: func(s1, s2 string) error {\n\t\t\treturn nil\n\t\t},\n\t}\n\tinstallFile = installer.installFile\n\tinstallContent = installer.installContent\n\tinstallSymlink = installer.installSymlink\n\n\troot := \"/artifacts/test\"\n\tlibraries := &lookup.LocatorMock{\n\t\tLocateFunc: func(s string) ([]string, error) {\n\t\t\tswitch s {\n\t\t\tcase \"libnvidia-container.so.1\":\n\t\t\t\treturn []string{filepath.Join(root, \"libnvidia-container.so.987.65.43\")}, nil\n\t\t\tcase \"libnvidia-container-go.so.1\":\n\t\t\t\treturn []string{filepath.Join(root, \"libnvidia-container-go.so.1.23.4\")}, nil\n\t\t\t}\n\t\t\treturn nil, fmt.Errorf(\"%v not found\", s)\n\t\t},\n\t}\n\texecutables := &lookup.LocatorMock{\n\t\tLocateFunc: func(s string) ([]string, error) {\n\t\t\tswitch s {\n\t\t\tcase \"nvidia-container-runtime.cdi\":\n\t\t\t\tfallthrough\n\t\t\tcase \"nvidia-container-runtime.legacy\":\n\t\t\t\tfallthrough\n\t\t\tcase \"nvidia-container-runtime\":\n\t\t\t\tfallthrough\n\t\t\tcase \"nvidia-ctk\":\n\t\t\t\tfallthrough\n\t\t\tcase \"nvidia-container-cli\":\n\t\t\t\tfallthrough\n\t\t\tcase \"nvidia-container-runtime-hook\":\n\t\t\t\tfallthrough\n\t\t\tcase \"nvidia-cdi-hook\":\n\t\t\t\treturn []string{filepath.Join(root, \"usr/bin\", s)}, nil\n\t\t\t}\n\t\t\treturn nil, fmt.Errorf(\"%v not found\", s)\n\t\t},\n\t}\n\n\tr := &artifactRoot{\n\t\tlibraries:   libraries,\n\t\texecutables: executables,\n\t}\n\n\tcreateDirectory := &InstallerMock{\n\t\tInstallFunc: func(c string) error {\n\t\t\treturn nil\n\t\t},\n\t}\n\ti := ToolkitInstaller{\n\t\tlogger:                       logger,\n\t\tartifactRoot:                 r,\n\t\tensureTargetDirectory:        createDirectory,\n\t\tdefaultRuntimeExecutablePath: \"runc\",\n\t}\n\n\terr := i.Install(\"/foo/bar/baz\")\n\trequire.NoError(t, err)\n\n\trequire.ElementsMatch(t,\n\t\t[]struct {\n\t\t\tS string\n\t\t}{\n\t\t\t{\"/foo/bar/baz\"},\n\t\t},\n\t\tcreateDirectory.InstallCalls(),\n\t)\n\n\trequire.ElementsMatch(t,\n\t\tinstaller.installFileCalls(),\n\t\t[]struct {\n\t\t\tS1 string\n\t\t\tS2 string\n\t\t}{\n\t\t\t{\"/artifacts/test/libnvidia-container-go.so.1.23.4\", \"/foo/bar/baz/libnvidia-container-go.so.1.23.4\"},\n\t\t\t{\"/artifacts/test/libnvidia-container.so.987.65.43\", \"/foo/bar/baz/libnvidia-container.so.987.65.43\"},\n\t\t\t{\"/artifacts/test/usr/bin/nvidia-container-runtime.cdi\", \"/foo/bar/baz/nvidia-container-runtime.cdi.real\"},\n\t\t\t{\"/artifacts/test/usr/bin/nvidia-container-runtime.legacy\", \"/foo/bar/baz/nvidia-container-runtime.legacy.real\"},\n\t\t\t{\"/artifacts/test/usr/bin/nvidia-container-runtime\", \"/foo/bar/baz/nvidia-container-runtime.real\"},\n\t\t\t{\"/artifacts/test/usr/bin/nvidia-ctk\", \"/foo/bar/baz/nvidia-ctk.real\"},\n\t\t\t{\"/artifacts/test/usr/bin/nvidia-cdi-hook\", \"/foo/bar/baz/nvidia-cdi-hook.real\"},\n\t\t\t{\"/artifacts/test/usr/bin/nvidia-container-cli\", \"/foo/bar/baz/nvidia-container-cli.real\"},\n\t\t\t{\"/artifacts/test/usr/bin/nvidia-container-runtime-hook\", \"/foo/bar/baz/nvidia-container-runtime-hook.real\"},\n\t\t},\n\t)\n\n\trequire.ElementsMatch(t,\n\t\tinstaller.installSymlinkCalls(),\n\t\t[]struct {\n\t\t\tS1 string\n\t\t\tS2 string\n\t\t}{\n\t\t\t{\"libnvidia-container-go.so.1.23.4\", \"/foo/bar/baz/libnvidia-container-go.so.1\"},\n\t\t\t{\"libnvidia-container.so.987.65.43\", \"/foo/bar/baz/libnvidia-container.so.1\"},\n\t\t\t{\"nvidia-container-runtime-hook\", \"/foo/bar/baz/nvidia-container-toolkit\"},\n\t\t},\n\t)\n\n\trequire.ElementsMatch(t,\n\t\tcontentCalls,\n\t\t[]contentCall{\n\t\t\t{\n\t\t\t\tpath: \"/foo/bar/baz/nvidia-container-runtime\",\n\t\t\t\tmode: 0777,\n\t\t\t\twrapper: `#! /bin/sh\ncat /proc/modules | grep -e \"^nvidia \" >/dev/null 2>&1\nif [ \"${?}\" != \"0\" ]; then\n\techo \"nvidia driver modules are not yet loaded, invoking runc directly\" >&2\n\texec runc \"$@\"\nfi\nNVIDIA_CTK_CONFIG_FILE_PATH=/foo/bar/baz/.config/nvidia-container-runtime/config.toml \\\nPATH=/foo/bar/baz:$PATH \\\n\t/foo/bar/baz/nvidia-container-runtime.real \\\n\t\t\"$@\"\n`,\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: \"/foo/bar/baz/nvidia-container-runtime.cdi\",\n\t\t\t\tmode: 0777,\n\t\t\t\twrapper: `#! /bin/sh\ncat /proc/modules | grep -e \"^nvidia \" >/dev/null 2>&1\nif [ \"${?}\" != \"0\" ]; then\n\techo \"nvidia driver modules are not yet loaded, invoking runc directly\" >&2\n\texec runc \"$@\"\nfi\nNVIDIA_CTK_CONFIG_FILE_PATH=/foo/bar/baz/.config/nvidia-container-runtime/config.toml \\\nPATH=/foo/bar/baz:$PATH \\\n\t/foo/bar/baz/nvidia-container-runtime.cdi.real \\\n\t\t\"$@\"\n`,\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: \"/foo/bar/baz/nvidia-container-runtime.legacy\",\n\t\t\t\tmode: 0777,\n\t\t\t\twrapper: `#! /bin/sh\ncat /proc/modules | grep -e \"^nvidia \" >/dev/null 2>&1\nif [ \"${?}\" != \"0\" ]; then\n\techo \"nvidia driver modules are not yet loaded, invoking runc directly\" >&2\n\texec runc \"$@\"\nfi\nNVIDIA_CTK_CONFIG_FILE_PATH=/foo/bar/baz/.config/nvidia-container-runtime/config.toml \\\nPATH=/foo/bar/baz:$PATH \\\n\t/foo/bar/baz/nvidia-container-runtime.legacy.real \\\n\t\t\"$@\"\n`,\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: \"/foo/bar/baz/nvidia-ctk\",\n\t\t\t\tmode: 0777,\n\t\t\t\twrapper: `#! /bin/sh\nPATH=/foo/bar/baz:$PATH \\\n\t/foo/bar/baz/nvidia-ctk.real \\\n\t\t\"$@\"\n`,\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: \"/foo/bar/baz/nvidia-cdi-hook\",\n\t\t\t\tmode: 0777,\n\t\t\t\twrapper: `#! /bin/sh\nPATH=/foo/bar/baz:$PATH \\\n\t/foo/bar/baz/nvidia-cdi-hook.real \\\n\t\t\"$@\"\n`,\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: \"/foo/bar/baz/nvidia-container-cli\",\n\t\t\t\tmode: 0777,\n\t\t\t\twrapper: `#! /bin/sh\nLD_LIBRARY_PATH=/foo/bar/baz:$LD_LIBRARY_PATH \\\nPATH=/foo/bar/baz:$PATH \\\n\t/foo/bar/baz/nvidia-container-cli.real \\\n\t\t\"$@\"\n`,\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: \"/foo/bar/baz/nvidia-container-runtime-hook\",\n\t\t\t\tmode: 0777,\n\t\t\t\twrapper: `#! /bin/sh\nNVIDIA_CTK_CONFIG_FILE_PATH=/foo/bar/baz/.config/nvidia-container-runtime/config.toml \\\nPATH=/foo/bar/baz:$PATH \\\n\t/foo/bar/baz/nvidia-container-runtime-hook.real \\\n\t\t\"$@\"\n`,\n\t\t\t},\n\t\t},\n\t)\n}\n"
  },
  {
    "path": "cmd/nvidia-ctk-installer/toolkit/installer/libraries.go",
    "content": "/**\n# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage installer\n\nimport (\n\t\"path/filepath\"\n\n\tlog \"github.com/sirupsen/logrus\"\n)\n\n// collectLibraries locates and installs the libraries that are part of\n// the nvidia-container-toolkit.\n// A predefined set of library candidates are considered, with the first one\n// resulting in success being installed to the toolkit folder. The install process\n// resolves the symlink for the library and copies the versioned library itself.\nfunc (t *ToolkitInstaller) collectLibraries() ([]Installer, error) {\n\trequiredLibraries := []string{\n\t\t\"libnvidia-container.so.1\",\n\t\t\"libnvidia-container-go.so.1\",\n\t}\n\n\tvar installers []Installer\n\tfor _, l := range requiredLibraries {\n\t\tlibraryPath, err := t.artifactRoot.findLibrary(l)\n\t\tif err != nil {\n\t\t\tif t.ignoreErrors {\n\t\t\t\tlog.Errorf(\"Ignoring error: %v\", err)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\treturn nil, err\n\t\t}\n\n\t\tinstallers = append(installers, library(libraryPath))\n\n\t\tif filepath.Base(libraryPath) == l {\n\t\t\tcontinue\n\t\t}\n\n\t\tlink := symlink{\n\t\t\tlinkname: l,\n\t\t\ttarget:   filepath.Base(libraryPath),\n\t\t}\n\t\tinstallers = append(installers, link)\n\t}\n\n\treturn installers, nil\n}\n\ntype library string\n\n// Install copies the library l to the destination folder.\n// The same basename is used in the destination folder.\nfunc (l library) Install(destinationDir string) error {\n\tdest := filepath.Join(destinationDir, filepath.Base(string(l)))\n\n\t_, err := installFile(string(l), dest)\n\treturn err\n}\n"
  },
  {
    "path": "cmd/nvidia-ctk-installer/toolkit/installer/options.go",
    "content": "/**\n# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage installer\n\nimport \"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\ntype Option func(*ToolkitInstaller)\n\nfunc WithLogger(logger logger.Interface) Option {\n\treturn func(ti *ToolkitInstaller) {\n\t\tti.logger = logger\n\t}\n}\n\nfunc WithArtifactRoot(artifactRoot *artifactRoot) Option {\n\treturn func(ti *ToolkitInstaller) {\n\t\tti.artifactRoot = artifactRoot\n\t}\n}\n\nfunc WithIgnoreErrors(ignoreErrors bool) Option {\n\treturn func(ti *ToolkitInstaller) {\n\t\tti.ignoreErrors = ignoreErrors\n\t}\n}\n\n// WithSourceRoot sets the root directory for locating artifacts to be installed.\nfunc WithSourceRoot(sourceRoot string) Option {\n\treturn func(ti *ToolkitInstaller) {\n\t\tti.sourceRoot = sourceRoot\n\t}\n}\n\nfunc WithDefaultRuntimeExecutablePath(path string) Option {\n\treturn func(ti *ToolkitInstaller) {\n\t\tti.defaultRuntimeExecutablePath = path\n\t}\n}\n"
  },
  {
    "path": "cmd/nvidia-ctk-installer/toolkit/options.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage toolkit\n\nimport \"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\n// An Option provides a mechanism to configure an Installer.\ntype Option func(*Installer)\n\nfunc WithLogger(logger logger.Interface) Option {\n\treturn func(i *Installer) {\n\t\ti.logger = logger\n\t}\n}\n\nfunc WithToolkitRoot(toolkitRoot string) Option {\n\treturn func(i *Installer) {\n\t\ti.toolkitRoot = toolkitRoot\n\t}\n}\n\nfunc WithSourceRoot(sourceRoot string) Option {\n\treturn func(i *Installer) {\n\t\ti.sourceRoot = sourceRoot\n\t}\n}\n"
  },
  {
    "path": "cmd/nvidia-ctk-installer/toolkit/toolkit.go",
    "content": "/**\n# Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n*/\n\npackage toolkit\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"github.com/urfave/cli/v3\"\n\t\"tags.cncf.io/container-device-interface/pkg/cdi\"\n\t\"tags.cncf.io/container-device-interface/pkg/parser\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/api/config/v1\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk-installer/container/runtime/crio\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk-installer/toolkit/installer\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/nvcdi\"\n\ttransformroot \"github.com/NVIDIA/nvidia-container-toolkit/pkg/nvcdi/transform/root\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/system/nvdevices\"\n)\n\nconst (\n\t// DefaultNvidiaDriverRoot specifies the default NVIDIA driver run directory\n\tDefaultNvidiaDriverRoot = \"/run/nvidia/driver\"\n)\n\ntype cdiOptions struct {\n\tEnabled   bool\n\toutputDir string\n\tkind      string\n\tvendor    string\n\tclass     string\n}\n\ntype Options struct {\n\tDriverRoot        string\n\tDevRoot           string\n\tDriverRootCtrPath string\n\tDevRootCtrPath    string\n\n\tContainerRuntimeMode     string\n\tContainerRuntimeDebug    string\n\tContainerRuntimeLogLevel string\n\n\tContainerRuntimeModesCdiDefaultKind        string\n\tContainerRuntimeModesCDIAnnotationPrefixes []string\n\n\tContainerRuntimeRuntimes []string\n\n\tContainerRuntimeHookSkipModeDetection bool\n\n\tContainerCLIDebug string\n\n\t// CDI stores the CDI options for the toolkit.\n\tCDI cdiOptions\n\n\tcreateDeviceNodes []string\n\n\tacceptNVIDIAVisibleDevicesWhenUnprivileged bool\n\tacceptNVIDIAVisibleDevicesAsVolumeMounts   bool\n\n\tignoreErrors bool\n\n\toptInFeatures []string\n}\n\nfunc Flags(opts *Options) []cli.Flag {\n\tflags := []cli.Flag{\n\t\t&cli.StringFlag{\n\t\t\tName:        \"driver-root\",\n\t\t\tAliases:     []string{\"nvidia-driver-root\"},\n\t\t\tValue:       DefaultNvidiaDriverRoot,\n\t\t\tDestination: &opts.DriverRoot,\n\t\t\tSources:     cli.EnvVars(\"NVIDIA_DRIVER_ROOT\", \"DRIVER_ROOT\"),\n\t\t},\n\t\t&cli.StringFlag{\n\t\t\tName:        \"driver-root-ctr-path\",\n\t\t\tValue:       DefaultNvidiaDriverRoot,\n\t\t\tDestination: &opts.DriverRootCtrPath,\n\t\t\tSources:     cli.EnvVars(\"DRIVER_ROOT_CTR_PATH\"),\n\t\t},\n\t\t&cli.StringFlag{\n\t\t\tName:        \"dev-root\",\n\t\t\tUsage:       \"Specify the root where `/dev` is located. If this is not specified, the driver-root is assumed.\",\n\t\t\tDestination: &opts.DevRoot,\n\t\t\tSources:     cli.EnvVars(\"NVIDIA_DEV_ROOT\", \"DEV_ROOT\"),\n\t\t},\n\t\t&cli.StringFlag{\n\t\t\tName:        \"dev-root-ctr-path\",\n\t\t\tUsage:       \"Specify the root where `/dev` is located in the container. If this is not specified, the driver-root-ctr-path is assumed.\",\n\t\t\tDestination: &opts.DevRootCtrPath,\n\t\t\tSources:     cli.EnvVars(\"DEV_ROOT_CTR_PATH\"),\n\t\t},\n\t\t&cli.StringFlag{\n\t\t\tName:        \"nvidia-container-runtime.debug\",\n\t\t\tAliases:     []string{\"nvidia-container-runtime-debug\"},\n\t\t\tUsage:       \"Specify the location of the debug log file for the NVIDIA Container Runtime\",\n\t\t\tDestination: &opts.ContainerRuntimeDebug,\n\t\t\tSources:     cli.EnvVars(\"NVIDIA_CONTAINER_RUNTIME_DEBUG\"),\n\t\t},\n\t\t&cli.StringFlag{\n\t\t\tName:        \"nvidia-container-runtime.log-level\",\n\t\t\tAliases:     []string{\"nvidia-container-runtime-debug-log-level\"},\n\t\t\tDestination: &opts.ContainerRuntimeLogLevel,\n\t\t\tSources:     cli.EnvVars(\"NVIDIA_CONTAINER_RUNTIME_LOG_LEVEL\"),\n\t\t},\n\t\t&cli.StringFlag{\n\t\t\tName:        \"nvidia-container-runtime.mode\",\n\t\t\tAliases:     []string{\"nvidia-container-runtime-mode\"},\n\t\t\tDestination: &opts.ContainerRuntimeMode,\n\t\t\tSources:     cli.EnvVars(\"NVIDIA_CONTAINER_RUNTIME_MODE\"),\n\t\t},\n\t\t&cli.StringFlag{\n\t\t\tName:        \"nvidia-container-runtime.modes.cdi.default-kind\",\n\t\t\tDestination: &opts.ContainerRuntimeModesCdiDefaultKind,\n\t\t\tSources:     cli.EnvVars(\"NVIDIA_CONTAINER_RUNTIME_MODES_CDI_DEFAULT_KIND\"),\n\t\t},\n\t\t&cli.StringSliceFlag{\n\t\t\tName:        \"nvidia-container-runtime.modes.cdi.annotation-prefixes\",\n\t\t\tDestination: &opts.ContainerRuntimeModesCDIAnnotationPrefixes,\n\t\t\tSources:     cli.EnvVars(\"NVIDIA_CONTAINER_RUNTIME_MODES_CDI_ANNOTATION_PREFIXES\"),\n\t\t},\n\t\t&cli.StringSliceFlag{\n\t\t\tName:        \"nvidia-container-runtime.runtimes\",\n\t\t\tDestination: &opts.ContainerRuntimeRuntimes,\n\t\t\tSources:     cli.EnvVars(\"NVIDIA_CONTAINER_RUNTIME_RUNTIMES\"),\n\t\t},\n\t\t&cli.BoolFlag{\n\t\t\tName:        \"nvidia-container-runtime-hook.skip-mode-detection\",\n\t\t\tValue:       true,\n\t\t\tDestination: &opts.ContainerRuntimeHookSkipModeDetection,\n\t\t\tSources:     cli.EnvVars(\"NVIDIA_CONTAINER_RUNTIME_HOOK_SKIP_MODE_DETECTION\"),\n\t\t},\n\t\t&cli.StringFlag{\n\t\t\tName:        \"nvidia-container-cli.debug\",\n\t\t\tAliases:     []string{\"nvidia-container-cli-debug\"},\n\t\t\tUsage:       \"Specify the location of the debug log file for the NVIDIA Container CLI\",\n\t\t\tDestination: &opts.ContainerCLIDebug,\n\t\t\tSources:     cli.EnvVars(\"NVIDIA_CONTAINER_CLI_DEBUG\"),\n\t\t},\n\t\t&cli.BoolFlag{\n\t\t\tName:        \"accept-nvidia-visible-devices-envvar-when-unprivileged\",\n\t\t\tUsage:       \"Set the accept-nvidia-visible-devices-envvar-when-unprivileged config option\",\n\t\t\tValue:       true,\n\t\t\tDestination: &opts.acceptNVIDIAVisibleDevicesWhenUnprivileged,\n\t\t\tSources:     cli.EnvVars(\"ACCEPT_NVIDIA_VISIBLE_DEVICES_ENVVAR_WHEN_UNPRIVILEGED\"),\n\t\t},\n\t\t&cli.BoolFlag{\n\t\t\tName:        \"accept-nvidia-visible-devices-as-volume-mounts\",\n\t\t\tUsage:       \"Set the accept-nvidia-visible-devices-as-volume-mounts config option\",\n\t\t\tDestination: &opts.acceptNVIDIAVisibleDevicesAsVolumeMounts,\n\t\t\tSources:     cli.EnvVars(\"ACCEPT_NVIDIA_VISIBLE_DEVICES_AS_VOLUME_MOUNTS\"),\n\t\t},\n\t\t&cli.BoolFlag{\n\t\t\tName:        \"cdi-enabled\",\n\t\t\tAliases:     []string{\"enable-cdi\"},\n\t\t\tUsage:       \"enable the generation of a CDI specification\",\n\t\t\tDestination: &opts.CDI.Enabled,\n\t\t\tSources:     cli.EnvVars(\"CDI_ENABLED\", \"ENABLE_CDI\"),\n\t\t},\n\t\t&cli.StringFlag{\n\t\t\tName:        \"cdi-output-dir\",\n\t\t\tUsage:       \"the directory where the CDI output files are to be written. If this is set to '', no CDI specification is generated.\",\n\t\t\tValue:       \"/var/run/cdi\",\n\t\t\tDestination: &opts.CDI.outputDir,\n\t\t\tSources:     cli.EnvVars(\"CDI_OUTPUT_DIR\"),\n\t\t},\n\t\t&cli.StringFlag{\n\t\t\tName:        \"cdi-kind\",\n\t\t\tUsage:       \"the vendor string to use for the generated CDI specification\",\n\t\t\tValue:       \"management.nvidia.com/gpu\",\n\t\t\tDestination: &opts.CDI.kind,\n\t\t\tSources:     cli.EnvVars(\"CDI_KIND\"),\n\t\t},\n\t\t&cli.BoolFlag{\n\t\t\tName:        \"ignore-errors\",\n\t\t\tUsage:       \"ignore errors when installing the NVIDIA Container toolkit. This is used for testing purposes only.\",\n\t\t\tHidden:      true,\n\t\t\tDestination: &opts.ignoreErrors,\n\t\t},\n\t\t&cli.StringSliceFlag{\n\t\t\tName:        \"create-device-nodes\",\n\t\t\tUsage:       \"(Only applicable with --cdi-enabled) specifies which device nodes should be created. If any one of the options is set to '' or 'none', no device nodes will be created.\",\n\t\t\tValue:       []string{\"control\"},\n\t\t\tDestination: &opts.createDeviceNodes,\n\t\t\tSources:     cli.EnvVars(\"CREATE_DEVICE_NODES\"),\n\t\t},\n\t\t&cli.StringSliceFlag{\n\t\t\tName:        \"opt-in-features\",\n\t\t\tHidden:      true,\n\t\t\tDestination: &opts.optInFeatures,\n\t\t\tSources:     cli.EnvVars(\"NVIDIA_CONTAINER_TOOLKIT_OPT_IN_FEATURES\"),\n\t\t},\n\t}\n\n\treturn flags\n}\n\n// An Installer is used to install the NVIDIA Container Toolkit from the toolkit container.\ntype Installer struct {\n\tlogger logger.Interface\n\n\tsourceRoot string\n\t// toolkitRoot specifies the destination path at which the toolkit is installed.\n\ttoolkitRoot string\n}\n\n// NewInstaller creates an installer for the NVIDIA Container Toolkit.\nfunc NewInstaller(opts ...Option) *Installer {\n\ti := &Installer{}\n\tfor _, opt := range opts {\n\t\topt(i)\n\t}\n\n\tif i.logger == nil {\n\t\ti.logger = logger.New()\n\t}\n\n\treturn i\n}\n\n// ValidateOptions checks whether the specified options are valid\nfunc (t *Installer) ValidateOptions(opts *Options) error {\n\tif t == nil {\n\t\treturn fmt.Errorf(\"toolkit installer is not initilized\")\n\t}\n\tif t.toolkitRoot == \"\" {\n\t\treturn fmt.Errorf(\"invalid --toolkit-root option: %v\", t.toolkitRoot)\n\t}\n\n\tvendor, class := parser.ParseQualifier(opts.CDI.kind)\n\tif err := parser.ValidateVendorName(vendor); err != nil {\n\t\treturn fmt.Errorf(\"invalid CDI vendor name: %v\", err)\n\t}\n\tif err := parser.ValidateClassName(class); err != nil {\n\t\treturn fmt.Errorf(\"invalid CDI class name: %v\", err)\n\t}\n\topts.CDI.vendor = vendor\n\topts.CDI.class = class\n\n\tif opts.CDI.Enabled && opts.CDI.outputDir == \"\" {\n\t\tt.logger.Warningf(\"Skipping CDI spec generation (no output directory specified)\")\n\t\topts.CDI.Enabled = false\n\t}\n\n\tisDisabled := false\n\tfor _, mode := range opts.createDeviceNodes {\n\t\tif mode != \"\" && mode != \"none\" && mode != \"control\" {\n\t\t\treturn fmt.Errorf(\"invalid --create-device-nodes value: %v\", mode)\n\t\t}\n\t\tif mode == \"\" || mode == \"none\" {\n\t\t\tisDisabled = true\n\t\t\tbreak\n\t\t}\n\t}\n\tif !opts.CDI.Enabled && !isDisabled {\n\t\tt.logger.Infof(\"disabling device node creation since --cdi-enabled=false\")\n\t\tisDisabled = true\n\t}\n\tif isDisabled {\n\t\topts.createDeviceNodes = []string{}\n\t}\n\n\treturn nil\n}\n\n// Install installs the components of the NVIDIA container toolkit.\n// Any existing installation is removed.\nfunc (t *Installer) Install(cli *cli.Command, opts *Options, runtime string) error {\n\tif t == nil {\n\t\treturn fmt.Errorf(\"toolkit installer is not initilized\")\n\t}\n\tt.logger.Infof(\"Installing NVIDIA container toolkit to '%v'\", t.toolkitRoot)\n\n\tt.logger.Infof(\"Removing existing NVIDIA container toolkit installation\")\n\terr := os.RemoveAll(t.toolkitRoot)\n\tif err != nil && !opts.ignoreErrors {\n\t\treturn fmt.Errorf(\"error removing toolkit directory: %v\", err)\n\t} else if err != nil {\n\t\tt.logger.Errorf(\"Ignoring error: %v\", fmt.Errorf(\"error removing toolkit directory: %v\", err))\n\t}\n\n\tvar defaultRuntimeExecutable string\n\tif len(opts.ContainerRuntimeRuntimes) > 0 {\n\t\tdefaultRuntimeExecutable = opts.ContainerRuntimeRuntimes[0]\n\t}\n\n\t// If opts.ContainerRuntimeRuntimes is empty (highly unlikely), we fall back to either runc or crun\n\t// depending on the runtime\n\tif len(defaultRuntimeExecutable) == 0 {\n\t\tif runtime == crio.Name {\n\t\t\tdefaultRuntimeExecutable = \"crun\"\n\t\t} else {\n\t\t\tdefaultRuntimeExecutable = \"runc\"\n\t\t}\n\t}\n\n\t// Create a toolkit installer to actually install the toolkit components.\n\ttoolkit, err := installer.New(\n\t\tinstaller.WithLogger(t.logger),\n\t\tinstaller.WithSourceRoot(t.sourceRoot),\n\t\tinstaller.WithIgnoreErrors(opts.ignoreErrors),\n\t\tinstaller.WithDefaultRuntimeExecutablePath(defaultRuntimeExecutable),\n\t)\n\tif err != nil {\n\t\tif !opts.ignoreErrors {\n\t\t\treturn fmt.Errorf(\"could not create toolkit installer: %w\", err)\n\t\t}\n\t\tt.logger.Errorf(\"Ignoring error: %v\", fmt.Errorf(\"could not create toolkit installer: %w\", err))\n\t}\n\n\tif err := toolkit.Install(t.toolkitRoot); err != nil {\n\t\tif !opts.ignoreErrors {\n\t\t\treturn fmt.Errorf(\"could not install toolkit components: %w\", err)\n\t\t}\n\t\tt.logger.Errorf(\"Ignoring error: %v\", fmt.Errorf(\"could not install toolkit components: %w\", err))\n\t}\n\n\terr = t.installToolkitConfig(cli, opts, toolkit.ConfigFilePath(t.toolkitRoot))\n\tif err != nil && !opts.ignoreErrors {\n\t\treturn fmt.Errorf(\"error installing NVIDIA container toolkit config: %v\", err)\n\t} else if err != nil {\n\t\tt.logger.Errorf(\"Ignoring error: %v\", fmt.Errorf(\"error installing NVIDIA container toolkit config: %v\", err))\n\t}\n\n\terr = t.createDeviceNodes(opts)\n\tif err != nil && !opts.ignoreErrors {\n\t\treturn fmt.Errorf(\"error creating device nodes: %v\", err)\n\t} else if err != nil {\n\t\tt.logger.Errorf(\"Ignoring error: %v\", fmt.Errorf(\"error creating device nodes: %v\", err))\n\t}\n\n\tnvidiaCDIHookPath := filepath.Join(t.toolkitRoot, \"nvidia-cdi-hook\")\n\terr = t.generateCDISpec(opts, nvidiaCDIHookPath)\n\tif err != nil && !opts.ignoreErrors {\n\t\treturn fmt.Errorf(\"error generating CDI specification: %v\", err)\n\t} else if err != nil {\n\t\tt.logger.Errorf(\"Ignoring error: %v\", fmt.Errorf(\"error generating CDI specification: %v\", err))\n\t}\n\n\treturn nil\n}\n\n// installToolkitConfig installs the config file for the NVIDIA container toolkit ensuring\n// that the settings are updated to match the desired install and nvidia driver directories.\nfunc (t *Installer) installToolkitConfig(c *cli.Command, opts *Options, toolkitConfigPath string) error {\n\n\tt.logger.Infof(\"Installing NVIDIA container toolkit config '%v'\", toolkitConfigPath)\n\n\terr := t.createDirectories(filepath.Dir(toolkitConfigPath))\n\tif err != nil && !opts.ignoreErrors {\n\t\treturn fmt.Errorf(\"could not create required directories: %v\", err)\n\t} else if err != nil {\n\t\tt.logger.Errorf(\"Ignoring error: %v\", fmt.Errorf(\"could not create required directories: %v\", err))\n\t}\n\tnvidiaContainerCliExecutablePath := filepath.Join(t.toolkitRoot, \"nvidia-container-cli\")\n\tnvidiaCTKPath := filepath.Join(t.toolkitRoot, \"nvidia-ctk\")\n\tnvidiaContainerRuntimeHookPath := filepath.Join(t.toolkitRoot, \"nvidia-container-runtime-hook\")\n\n\tcfg, err := config.New()\n\tif err != nil {\n\t\treturn fmt.Errorf(\"could not open source config file: %v\", err)\n\t}\n\n\ttargetConfig, err := os.Create(toolkitConfigPath)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"could not create target config file: %v\", err)\n\t}\n\tdefer targetConfig.Close()\n\n\t// Read the ldconfig path from the config as this may differ per platform\n\t// On ubuntu-based systems this ends in `.real`\n\tldconfigPath := fmt.Sprintf(\"%s\", cfg.GetDefault(\"nvidia-container-cli.ldconfig\", \"/sbin/ldconfig\"))\n\t// Use the driver run root as the root:\n\tdriverLdconfigPath := config.NormalizeLDConfigPath(\"@\" + filepath.Join(opts.DriverRoot, strings.TrimPrefix(ldconfigPath, \"@/\")))\n\n\tconfigValues := map[string]interface{}{\n\t\t// Set the options in the root toml table\n\t\t\"accept-nvidia-visible-devices-envvar-when-unprivileged\": opts.acceptNVIDIAVisibleDevicesWhenUnprivileged,\n\t\t\"accept-nvidia-visible-devices-as-volume-mounts\":         opts.acceptNVIDIAVisibleDevicesAsVolumeMounts,\n\t\t// Set the nvidia-container-cli options\n\t\t\"nvidia-container-cli.root\":     opts.DriverRoot,\n\t\t\"nvidia-container-cli.path\":     nvidiaContainerCliExecutablePath,\n\t\t\"nvidia-container-cli.ldconfig\": driverLdconfigPath,\n\t\t// Set nvidia-ctk options\n\t\t\"nvidia-ctk.path\": nvidiaCTKPath,\n\t\t// Set the nvidia-container-runtime-hook options\n\t\t\"nvidia-container-runtime-hook.path\":                nvidiaContainerRuntimeHookPath,\n\t\t\"nvidia-container-runtime-hook.skip-mode-detection\": opts.ContainerRuntimeHookSkipModeDetection,\n\t}\n\n\ttoolkitRuntimeList := opts.ContainerRuntimeRuntimes\n\tif len(toolkitRuntimeList) > 0 {\n\t\tconfigValues[\"nvidia-container-runtime.runtimes\"] = toolkitRuntimeList\n\t}\n\n\tfor _, optInFeature := range opts.optInFeatures {\n\t\tconfigValues[\"features.\"+optInFeature] = true\n\t}\n\n\tfor key, value := range configValues {\n\t\tcfg.Set(key, value)\n\t}\n\n\t// Set the optional config options\n\toptionalConfigValues := map[string]interface{}{\n\t\t\"nvidia-container-runtime.debug\":                         opts.ContainerRuntimeDebug,\n\t\t\"nvidia-container-runtime.log-level\":                     opts.ContainerRuntimeLogLevel,\n\t\t\"nvidia-container-runtime.mode\":                          opts.ContainerRuntimeMode,\n\t\t\"nvidia-container-runtime.modes.cdi.annotation-prefixes\": opts.ContainerRuntimeModesCDIAnnotationPrefixes,\n\t\t\"nvidia-container-runtime.modes.cdi.default-kind\":        opts.ContainerRuntimeModesCdiDefaultKind,\n\t\t\"nvidia-container-runtime.runtimes\":                      opts.ContainerRuntimeRuntimes,\n\t\t\"nvidia-container-cli.debug\":                             opts.ContainerCLIDebug,\n\t}\n\n\tfor key, value := range optionalConfigValues {\n\t\tif !c.IsSet(key) {\n\t\t\tt.logger.Infof(\"Skipping unset option: %v\", key)\n\t\t\tcontinue\n\t\t}\n\t\tif value == nil {\n\t\t\tt.logger.Infof(\"Skipping option with nil value: %v\", key)\n\t\t\tcontinue\n\t\t}\n\n\t\tswitch v := value.(type) {\n\t\tcase string:\n\t\t\tif v == \"\" {\n\t\t\t\tcontinue\n\t\t\t}\n\t\tcase cli.StringSlice:\n\t\t\tif len(v.Value()) == 0 {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tvalue = v.Value()\n\t\tdefault:\n\t\t\tt.logger.Warningf(\"Unexpected type for option %v=%v: %T\", key, value, v)\n\t\t}\n\n\t\tcfg.Set(key, value)\n\t}\n\n\tif _, err := cfg.WriteTo(targetConfig); err != nil {\n\t\treturn fmt.Errorf(\"error writing config: %v\", err)\n\t}\n\n\tos.Stdout.WriteString(\"Using config:\\n\")\n\tif _, err = cfg.WriteTo(os.Stdout); err != nil {\n\t\tt.logger.Warningf(\"Failed to output config to STDOUT: %v\", err)\n\t}\n\n\treturn nil\n}\n\nfunc (t *Installer) createDirectories(dir ...string) error {\n\tfor _, d := range dir {\n\t\tt.logger.Infof(\"Creating directory '%v'\", d)\n\t\terr := os.MkdirAll(d, 0755)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"error creating directory: %v\", err)\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (t *Installer) createDeviceNodes(opts *Options) error {\n\tmodes := opts.createDeviceNodes\n\tif len(modes) == 0 {\n\t\treturn nil\n\t}\n\n\tdevices, err := nvdevices.New(\n\t\tnvdevices.WithDevRoot(opts.DevRootCtrPath),\n\t)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to create library: %v\", err)\n\t}\n\n\tfor _, mode := range modes {\n\t\tt.logger.Infof(\"Creating %v device nodes at %v\", mode, opts.DevRootCtrPath)\n\t\tif mode != \"control\" {\n\t\t\tt.logger.Warningf(\"Unrecognised device mode: %v\", mode)\n\t\t\tcontinue\n\t\t}\n\t\tif err := devices.CreateNVIDIAControlDevices(); err != nil {\n\t\t\treturn fmt.Errorf(\"failed to create control device nodes: %v\", err)\n\t\t}\n\t}\n\treturn nil\n}\n\n// generateCDISpec generates a CDI spec for use in management containers\nfunc (t *Installer) generateCDISpec(opts *Options, nvidiaCDIHookPath string) error {\n\tif !opts.CDI.Enabled {\n\t\treturn nil\n\t}\n\tt.logger.Infof(\"Generating CDI spec for management containers\")\n\tcdilib, err := nvcdi.New(\n\t\tnvcdi.WithLogger(t.logger),\n\t\tnvcdi.WithMode(nvcdi.ModeManagement),\n\t\tnvcdi.WithDriverRoot(opts.DriverRootCtrPath),\n\t\tnvcdi.WithDevRoot(opts.DevRootCtrPath),\n\t\tnvcdi.WithNVIDIACDIHookPath(nvidiaCDIHookPath),\n\t\tnvcdi.WithVendor(opts.CDI.vendor),\n\t\tnvcdi.WithClass(opts.CDI.class),\n\t)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to create CDI library for management containers: %v\", err)\n\t}\n\n\tspec, err := cdilib.GetSpec()\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to genereate CDI spec for management containers: %v\", err)\n\t}\n\n\ttransformer := transformroot.NewDriverTransformer(\n\t\ttransformroot.WithDriverRoot(opts.DriverRootCtrPath),\n\t\ttransformroot.WithTargetDriverRoot(opts.DriverRoot),\n\t\ttransformroot.WithDevRoot(opts.DevRootCtrPath),\n\t\ttransformroot.WithTargetDevRoot(opts.DevRoot),\n\t)\n\tif err := transformer.Transform(spec.Raw()); err != nil {\n\t\treturn fmt.Errorf(\"failed to transform driver root in CDI spec: %v\", err)\n\t}\n\n\tname, err := cdi.GenerateNameForSpec(spec.Raw())\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to generate CDI name for management containers: %v\", err)\n\t}\n\terr = spec.Save(filepath.Join(opts.CDI.outputDir, name))\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to save CDI spec for management containers: %v\", err)\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "cmd/nvidia-ctk-installer/toolkit/toolkit_test.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage toolkit\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"testing\"\n\n\ttestlog \"github.com/sirupsen/logrus/hooks/test\"\n\t\"github.com/stretchr/testify/require\"\n\t\"github.com/urfave/cli/v3\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/api/config/v1\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/devices\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/test\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/lookup/symlinks\"\n)\n\nfunc TestInstall(t *testing.T) {\n\tdefer devices.SetAllForTest()()\n\tlogger, _ := testlog.NewNullLogger()\n\n\tmoduleRoot, err := test.GetModuleRoot()\n\trequire.NoError(t, err)\n\n\tartifactRoot := filepath.Join(moduleRoot, \"testdata\", \"installer\", \"artifacts\")\n\n\ttestCases := []struct {\n\t\tdescription     string\n\t\thostRoot        string\n\t\tpackageType     string\n\t\tcdiEnabled      bool\n\t\texpectedError   error\n\t\texpectedCdiSpec string\n\t}{\n\t\t{\n\t\t\thostRoot:    \"rootfs-empty\",\n\t\t\tpackageType: \"deb\",\n\t\t},\n\t\t{\n\t\t\thostRoot:    \"rootfs-empty\",\n\t\t\tpackageType: \"rpm\",\n\t\t},\n\t\t{\n\t\t\thostRoot:      \"rootfs-empty\",\n\t\t\tpackageType:   \"deb\",\n\t\t\tcdiEnabled:    true,\n\t\t\texpectedError: fmt.Errorf(\"no NVIDIA device nodes found\"),\n\t\t},\n\t\t{\n\t\t\thostRoot:    \"rootfs-1\",\n\t\t\tpackageType: \"deb\",\n\t\t\tcdiEnabled:  true,\n\t\t\texpectedCdiSpec: `---\ncdiVersion: 0.5.0\nkind: example.com/class\ndevices:\n    - name: all\n      containerEdits:\n        deviceNodes:\n            - path: /dev/nvidia0\n              hostPath: /host/driver/root/dev/nvidia0\n            - path: /dev/nvidiactl\n              hostPath: /host/driver/root/dev/nvidiactl\n            - path: /dev/nvidia-caps-imex-channels/channel0\n              hostPath: /host/driver/root/dev/nvidia-caps-imex-channels/channel0\n            - path: /dev/nvidia-caps-imex-channels/channel1\n              hostPath: /host/driver/root/dev/nvidia-caps-imex-channels/channel1\n            - path: /dev/nvidia-caps-imex-channels/channel2047\n              hostPath: /host/driver/root/dev/nvidia-caps-imex-channels/channel2047\n            - path: /dev/nvidia-caps/nvidia-cap1\n              hostPath: /host/driver/root/dev/nvidia-caps/nvidia-cap1\ncontainerEdits:\n    env:\n        - NVIDIA_CTK_LIBCUDA_DIR=/lib/x86_64-linux-gnu\n        - NVIDIA_VISIBLE_DEVICES=void\n    hooks:\n        - hookName: createContainer\n          path: {{ .toolkitRoot }}/nvidia-cdi-hook\n          args:\n            - nvidia-cdi-hook\n            - create-symlinks\n            - --link\n            - libcuda.so.1::/lib/x86_64-linux-gnu/libcuda.so\n          env:\n            - NVIDIA_CTK_DEBUG=false\n        - hookName: createContainer\n          path: {{ .toolkitRoot }}/nvidia-cdi-hook\n          args:\n            - nvidia-cdi-hook\n            - update-ldcache\n            - --folder\n            - /lib/x86_64-linux-gnu\n            - --folder\n            - /lib/x86_64-linux-gnu/vdpau\n          env:\n            - NVIDIA_CTK_DEBUG=false\n    mounts:\n        - hostPath: /host/driver/root/lib/x86_64-linux-gnu/libcuda.so.999.88.77\n          containerPath: /lib/x86_64-linux-gnu/libcuda.so.999.88.77\n          options:\n            - ro\n            - nosuid\n            - nodev\n            - rbind\n            - rprivate\n        - hostPath: /host/driver/root/lib/x86_64-linux-gnu/vdpau/libvdpau_nvidia.so.999.88.77\n          containerPath: /lib/x86_64-linux-gnu/vdpau/libvdpau_nvidia.so.999.88.77\n          options:\n            - ro\n            - nosuid\n            - nodev\n            - rbind\n            - rprivate\n`,\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\t// hostRoot := filepath.Join(moduleRoot, \"testdata\", \"lookup\", tc.hostRoot)\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\ttestRoot := t.TempDir()\n\t\t\ttoolkitRoot := filepath.Join(testRoot, \"toolkit-test\")\n\t\t\tcdiOutputDir := filepath.Join(moduleRoot, \"toolkit-test\", \"/var/cdi\")\n\t\t\tsourceRoot := filepath.Join(artifactRoot, tc.packageType)\n\t\t\toptions := Options{\n\t\t\t\tDriverRoot:        \"/host/driver/root\",\n\t\t\t\tDriverRootCtrPath: filepath.Join(moduleRoot, \"testdata\", \"lookup\", tc.hostRoot),\n\t\t\t\tCDI: cdiOptions{\n\t\t\t\t\tEnabled:   tc.cdiEnabled,\n\t\t\t\t\toutputDir: cdiOutputDir,\n\t\t\t\t\tkind:      \"example.com/class\",\n\t\t\t\t},\n\t\t\t}\n\n\t\t\tti := NewInstaller(\n\t\t\t\tWithLogger(logger),\n\t\t\t\tWithToolkitRoot(toolkitRoot),\n\t\t\t\tWithSourceRoot(sourceRoot),\n\t\t\t)\n\t\t\trequire.NoError(t, ti.ValidateOptions(&options))\n\n\t\t\terr := ti.Install(&cli.Command{}, &options, \"containerd\")\n\t\t\tif tc.expectedError == nil {\n\t\t\t\trequire.NoError(t, err)\n\t\t\t} else {\n\t\t\t\trequire.Contains(t, err.Error(), tc.expectedError.Error())\n\t\t\t}\n\n\t\t\trequire.DirExists(t, toolkitRoot)\n\t\t\trequireSymlink(t, toolkitRoot, \"libnvidia-container.so.1\", \"libnvidia-container.so.99.88.77\")\n\t\t\trequireSymlink(t, toolkitRoot, \"libnvidia-container-go.so.1\", \"libnvidia-container-go.so.99.88.77\")\n\n\t\t\trequireWrappedExecutable(t, toolkitRoot, \"nvidia-cdi-hook\")\n\t\t\trequireWrappedExecutable(t, toolkitRoot, \"nvidia-container-cli\")\n\t\t\trequireWrappedExecutable(t, toolkitRoot, \"nvidia-container-runtime\")\n\t\t\trequireWrappedExecutable(t, toolkitRoot, \"nvidia-container-runtime-hook\")\n\t\t\trequireWrappedExecutable(t, toolkitRoot, \"nvidia-container-runtime.cdi\")\n\t\t\trequireWrappedExecutable(t, toolkitRoot, \"nvidia-container-runtime.legacy\")\n\t\t\trequireWrappedExecutable(t, toolkitRoot, \"nvidia-ctk\")\n\n\t\t\trequireSymlink(t, toolkitRoot, \"nvidia-container-toolkit\", \"nvidia-container-runtime-hook\")\n\n\t\t\t// TODO: Add checks for wrapper contents\n\t\t\t// grep -q -E \"nvidia driver modules are not yet loaded, invoking runc directly\" \"${shared_dir}/usr/local/nvidia/toolkit/nvidia-container-runtime\"\n\t\t\t// grep -q -E \"exec runc \\\".@\\\"\" \"${shared_dir}/usr/local/nvidia/toolkit/nvidia-container-runtime\"\n\n\t\t\trequire.DirExists(t, filepath.Join(toolkitRoot, \".config\"))\n\t\t\trequire.DirExists(t, filepath.Join(toolkitRoot, \".config\", \"nvidia-container-runtime\"))\n\t\t\trequire.FileExists(t, filepath.Join(toolkitRoot, \".config\", \"nvidia-container-runtime\", \"config.toml\"))\n\n\t\t\tcfgToml, err := config.New(config.WithConfigFile(filepath.Join(toolkitRoot, \".config\", \"nvidia-container-runtime\", \"config.toml\")))\n\t\t\trequire.NoError(t, err)\n\n\t\t\tcfg, err := cfgToml.Config()\n\t\t\trequire.NoError(t, err)\n\n\t\t\t// Ensure that the config file has the required contents.\n\t\t\t// TODO: Add checks for additional config options.\n\t\t\trequire.Equal(t, \"/host/driver/root\", cfg.NVIDIAContainerCLIConfig.Root)\n\t\t\trequire.Equal(t, \"@/host/driver/root/sbin/ldconfig\", string(cfg.NVIDIAContainerCLIConfig.Ldconfig))\n\t\t\trequire.EqualValues(t, filepath.Join(toolkitRoot, \"nvidia-container-cli\"), cfg.NVIDIAContainerCLIConfig.Path)\n\t\t\trequire.EqualValues(t, filepath.Join(toolkitRoot, \"nvidia-ctk\"), cfg.NVIDIACTKConfig.Path)\n\n\t\t\tif len(tc.expectedCdiSpec) > 0 {\n\t\t\t\tcdiSpecFile := filepath.Join(cdiOutputDir, \"example.com-class.yaml\")\n\t\t\t\trequire.FileExists(t, cdiSpecFile)\n\t\t\t\tinfo, err := os.Stat(cdiSpecFile)\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\trequire.NotZero(t, info.Mode()&0004)\n\t\t\t\tcontents, err := os.ReadFile(cdiSpecFile)\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\trequire.Equal(t, strings.ReplaceAll(tc.expectedCdiSpec, \"{{ .toolkitRoot }}\", toolkitRoot), string(contents))\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc requireWrappedExecutable(t *testing.T, toolkitRoot string, expectedExecutable string) {\n\trequireExecutable(t, toolkitRoot, expectedExecutable)\n\trequireExecutable(t, toolkitRoot, expectedExecutable+\".real\")\n}\n\nfunc requireExecutable(t *testing.T, toolkitRoot string, expectedExecutable string) {\n\texecutable := filepath.Join(toolkitRoot, expectedExecutable)\n\trequire.FileExists(t, executable)\n\tinfo, err := os.Lstat(executable)\n\trequire.NoError(t, err)\n\trequire.Zero(t, info.Mode()&os.ModeSymlink)\n\trequire.NotZero(t, info.Mode()&0111)\n}\n\nfunc requireSymlink(t *testing.T, toolkitRoot string, expectedLink string, expectedTarget string) {\n\tlink := filepath.Join(toolkitRoot, expectedLink)\n\trequire.FileExists(t, link)\n\ttarget, err := symlinks.Resolve(link)\n\trequire.NoError(t, err)\n\trequire.Equal(t, expectedTarget, target)\n}\n"
  },
  {
    "path": "deployments/container/Dockerfile",
    "content": "# SPDX-FileCopyrightText: Copyright (c) 2019 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nARG GOLANG_VERSION=x.x.x\nARG VERSION=\"N/A\"\n\nFROM nvcr.io/nvidia/cuda:12.9.1-base-ubi9 AS build\n\nRUN rm -f /etc/yum.repos.d/cuda.repo && rm -f /etc/ld.so.conf.d/nvidia.conf\n\nRUN dnf install -y \\\n    wget make git gcc \\\n     && \\\n    rm -rf /var/cache/yum/*\n\nARG GOLANG_VERSION=x.x.x\nRUN set -eux; \\\n    \\\n    arch=\"$(uname -m)\"; \\\n    case \"${arch##*-}\" in \\\n        x86_64 | amd64) ARCH='amd64' ;; \\\n        ppc64el | ppc64le) ARCH='ppc64le' ;; \\\n        aarch64 | arm64) ARCH='arm64' ;; \\\n        *) echo \"unsupported architecture\" ; exit 1 ;; \\\n    esac; \\\n    wget -nv -O - https://go.dev/dl/go${GOLANG_VERSION}.linux-${ARCH}.tar.gz \\\n    | tar -C /usr/local -xz\n\n\nENV GOPATH=/go\nENV PATH=$GOPATH/bin:/usr/local/go/bin:$PATH\n\nARG GOPROXY=\"https://proxy.golang.org,direct\"\nENV GOPROXY=$GOPROXY\n\nWORKDIR /build\nCOPY . .\n\nRUN mkdir -p /artifacts/bin\nARG VERSION=\"N/A\"\nARG GIT_COMMIT=\"unknown\"\nRUN make PREFIX=/artifacts/bin cmd-nvidia-ctk-installer\n\n# The packaging stage collects the deb and rpm packages built for\n# supported architectures.\nFROM nvcr.io/nvidia/distroless/go:v4.0.2-dev AS packaging\n\nUSER 0:0\nSHELL [\"/busybox/sh\", \"-c\"]\nRUN ln -s /busybox/sh /bin/sh\n\nARG ARTIFACTS_ROOT\nCOPY ${ARTIFACTS_ROOT}/ubuntu18.04 /artifacts/packages/ubuntu18.04\nCOPY ${ARTIFACTS_ROOT}/centos7 /artifacts/packages/centos7\n\n# build-args are added to the manifest.txt file below.\nARG PACKAGE_VERSION\nARG GIT_BRANCH\nARG GIT_COMMIT\nARG GIT_COMMIT_SHORT\nARG SOURCE_DATE_EPOCH\nARG VERSION\n\n# Create a manifest.txt file with the absolute paths of all deb and rpm packages in the container\nRUN echo \"#IMAGE_EPOCH=$(date '+%s')\" > /artifacts/manifest.txt && \\\n    env | sed 's/^/#/g' >> /artifacts/manifest.txt && \\\n    find /artifacts/packages -iname '*.deb' -o -iname '*.rpm' >> /artifacts/manifest.txt\n\nLABEL name=\"NVIDIA Container Toolkit Packages\"\nLABEL vendor=\"NVIDIA\"\nLABEL version=\"${VERSION}\"\nLABEL release=\"N/A\"\nLABEL summary=\"deb and rpm packages for the NVIDIA Container Toolkit\"\nLABEL description=\"See summary\"\n\nCOPY LICENSE /licenses/\n\n# The debpackages stage is used to extract the contents of deb packages.\nFROM nvcr.io/nvidia/cuda:12.9.1-base-ubuntu20.04 AS debpackages\n\nRUN rm -f /etc/apt/sources.list.d/cuda.list\n\nARG TARGETARCH\nARG PACKAGE_DIST_DEB=ubuntu18.04\n\nCOPY --from=packaging /artifacts/packages/${PACKAGE_DIST_DEB} /deb-packages\n\nRUN mkdir -p /artifacts/deb\nRUN set -eux; \\\n    \\\n    case \"${TARGETARCH}\" in \\\n        x86_64 | amd64) ARCH='amd64' ;; \\\n        ppc64el | ppc64le) ARCH='ppc64le' ;; \\\n        aarch64 | arm64) ARCH='arm64' ;; \\\n        *) echo \"unsupported architecture\" ; exit 1 ;; \\\n    esac; \\\n    for p in $(ls /deb-packages/${ARCH}/*.deb); do dpkg-deb -xv $p /artifacts/deb/; done\n\n# The rpmpackages stage is used to extract the contents of the rpm packages.\nFROM nvcr.io/nvidia/cuda:12.9.1-base-ubi9 AS rpmpackages\n\nRUN rm -f /etc/yum.repos.d/cuda.repo && rm -f /etc/ld.so.conf.d/nvidia.conf\n\nRUN dnf install -y cpio\n\nARG TARGETARCH\nARG PACKAGE_DIST_RPM=centos7\n\nCOPY --from=packaging /artifacts/packages/${PACKAGE_DIST_RPM} /rpm-packages\n\nRUN mkdir -p /artifacts/rpm\nRUN set -eux; \\\n    \\\n    case \"${TARGETARCH}\" in \\\n        x86_64 | amd64) ARCH='x86_64' ;; \\\n        ppc64el | ppc64le) ARCH='ppc64le' ;; \\\n        aarch64 | arm64) ARCH='aarch64' ;; \\\n        *) echo \"unsupported architecture\" ; exit 1 ;; \\\n    esac; \\\n    for p in $(ls /rpm-packages/${ARCH}/*.rpm); do rpm2cpio $p | cpio -idmv -D /artifacts/rpm; done\n\n# The artifacts image serves as an intermediate stage to collect the artifacts\n# From the previous stages:\n# - The extracted deb packages\n# - The extracted rpm packages\n# - The nvidia-ctk-installer binary\nFROM scratch AS artifacts\n\nCOPY --from=rpmpackages /artifacts/rpm /artifacts/rpm\nCOPY --from=debpackages /artifacts/deb /artifacts/deb\nCOPY --from=build /artifacts/bin /artifacts/build\n\n# The application stage contains the application used as a GPU Operator\n# operand.\nFROM nvcr.io/nvidia/distroless/go:v4.0.2-dev AS application\n\nUSER 0:0\nSHELL [\"/busybox/sh\", \"-c\"]\nRUN ln -s /busybox/sh /bin/sh\n\nENV NVIDIA_DISABLE_REQUIRE=\"true\"\nENV NVIDIA_VISIBLE_DEVICES=void\nENV NVIDIA_DRIVER_CAPABILITIES=utility\n\nCOPY --from=artifacts /artifacts/rpm /artifacts/rpm\nCOPY --from=artifacts /artifacts/deb /artifacts/deb\nCOPY --from=artifacts /artifacts/build /work\n\nWORKDIR /work\nENV PATH=/work:$PATH\n\nARG VERSION\nLABEL io.k8s.display-name=\"NVIDIA Container Runtime Config\"\nLABEL name=\"NVIDIA Container Runtime Config\"\nLABEL vendor=\"NVIDIA\"\nLABEL version=\"${VERSION}\"\nLABEL release=\"N/A\"\nLABEL summary=\"Automatically Configure your Container Runtime for GPU support.\"\nLABEL description=\"See summary\"\n\nCOPY LICENSE /licenses/\n\nENTRYPOINT [\"/work/nvidia-ctk-installer\"]\n\n# The GPU Operator exec's nvidia-toolkit in its entrypoint.\n# We create a symlink here to ensure compatibility with older\n# GPU Operator versions.\nRUN ln -s /work/nvidia-ctk-installer /work/nvidia-toolkit\n"
  },
  {
    "path": "deployments/container/Dockerfile.rpmrebuild",
    "content": "# SPDX-FileCopyrightText: Copyright (c) NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nFROM nvcr.io/nvidia/cuda:13.0.1-base-ubi9\n\nRUN dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm \\\n    && \\\n    dnf install -y rpmrebuild\n\nARG arch\nENV arch=${arch}\nCMD for src_package in $(ls *.rpm); do \\\n        rpmrebuild -pn --directory=/updated --define \"_build_id_links none\" ${src_package}; \\\n    done; \\\n    cp -f /updated/${arch}/*.rpm /dist/\n"
  },
  {
    "path": "deployments/container/Makefile",
    "content": "# Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nBUILD_MULTI_ARCH_IMAGES ?= false\nDOCKER ?= docker\nREGCTL ?= regctl\n\nBUILDX =\nifeq ($(BUILD_MULTI_ARCH_IMAGES),true)\nBUILDX = buildx\nendif\n\nMKDIR    ?= mkdir\nDIST_DIR ?= $(CURDIR)/dist\n\n##### Global variables #####\ninclude $(CURDIR)/versions.mk\n\nGOPROXY ?= https://proxy.golang.org,direct\n\nIMAGE_VERSION := $(VERSION)\n\nIMAGE_TAG ?= $(VERSION)\nIMAGE = $(IMAGE_NAME):$(IMAGE_TAG)\n\nOUT_IMAGE_NAME ?= $(IMAGE_NAME)\nOUT_IMAGE_VERSION ?= $(IMAGE_VERSION)\nOUT_IMAGE_TAG = $(OUT_IMAGE_VERSION)\nOUT_IMAGE = $(OUT_IMAGE_NAME):$(OUT_IMAGE_TAG)\n\n##### Public rules #####\nDEFAULT_PUSH_TARGET := application\nDISTRIBUTIONS := $(DEFAULT_PUSH_TARGET)\n\nMETA_TARGETS := packaging\n\nIMAGE_TARGETS := $(patsubst %,image-%,$(DISTRIBUTIONS) $(META_TARGETS))\nBUILD_TARGETS := $(patsubst %,build-%,$(DISTRIBUTIONS) $(META_TARGETS))\nPUSH_TARGETS := $(patsubst %,push-%,$(DISTRIBUTIONS) $(META_TARGETS))\nTEST_TARGETS := $(patsubst %,test-%,$(DISTRIBUTIONS))\n\n.PHONY: $(DISTRIBUTIONS) $(PUSH_TARGETS) $(BUILD_TARGETS) $(TEST_TARGETS)\n\nifneq ($(BUILD_MULTI_ARCH_IMAGES),true)\ninclude $(CURDIR)/deployments/container/native-only.mk\nelse\ninclude $(CURDIR)/deployments/container/multi-arch.mk\nendif\n\n# Define the push targets\n$(PUSH_TARGETS): push-%:\n\t$(CURDIR)/scripts/publish-image.sh $(IMAGE) $(OUT_IMAGE)\n\nDOCKERFILE = $(CURDIR)/deployments/container/Dockerfile\n\n# For packaging targets we set the output image tag to include the -packaging suffix.\n%-packaging: INTERMEDIATE_TARGET := --target=packaging\n%-packaging: IMAGE_TAG = $(IMAGE_VERSION)-packaging\n%-packaging: OUT_IMAGE_TAG = $(IMAGE_VERSION)-packaging\n\nARTIFACTS_ROOT ?= $(shell realpath --relative-to=$(CURDIR) $(DIST_DIR))\n\n# Use a generic build target to build the relevant images\n$(IMAGE_TARGETS): image-%: $(ARTIFACTS_ROOT)\n\tDOCKER_BUILDKIT=1 \\\n\t\t$(DOCKER) $(BUILDX) build --pull \\\n\t\t--provenance=false --sbom=false \\\n\t\t$(DOCKER_BUILD_OPTIONS) \\\n\t\t$(DOCKER_BUILD_PLATFORM_OPTIONS) \\\n\t\t$(INTERMEDIATE_TARGET) \\\n\t\t--tag $(IMAGE) \\\n\t\t--build-arg ARTIFACTS_ROOT=\"$(ARTIFACTS_ROOT)\" \\\n\t\t--build-arg GOLANG_VERSION=\"$(GOLANG_VERSION)\" \\\n\t\t--build-arg PACKAGE_DIST_DEB=\"$(PACKAGE_DIST_DEB)\" \\\n\t\t--build-arg PACKAGE_DIST_RPM=\"$(PACKAGE_DIST_RPM)\" \\\n\t\t--build-arg PACKAGE_VERSION=\"$(PACKAGE_VERSION)\" \\\n\t\t--build-arg VERSION=\"$(VERSION)\" \\\n\t\t--build-arg GIT_COMMIT=\"$(GIT_COMMIT)\" \\\n\t\t--build-arg GIT_COMMIT_SHORT=\"$(GIT_COMMIT_SHORT)\" \\\n\t\t--build-arg GIT_BRANCH=\"$(GIT_BRANCH)\" \\\n\t\t--build-arg SOURCE_DATE_EPOCH=\"$(SOURCE_DATE_EPOCH)\" \\\n\t\t--build-arg GOPROXY=\"$(GOPROXY)\" \\\n\t\t-f $(DOCKERFILE) \\\n\t\t$(CURDIR)\n\n\nPACKAGE_DIST_DEB = ubuntu18.04\n# TODO: This needs to be set to centos8 for ppc64le builds\nPACKAGE_DIST_RPM = centos7\n\n# Handle the default build target.\n.PHONY: build push\nbuild: build-$(DEFAULT_PUSH_TARGET)\npush: push-$(DEFAULT_PUSH_TARGET)\n\n# Test targets\nTEST_CASES ?= docker crio containerd\n$(TEST_TARGETS): test-%:\n\tTEST_CASES=\"$(TEST_CASES)\" bash -x $(CURDIR)/test/container/main.sh run \\\n\t\t$(CURDIR)/shared-$(*) \\\n\t\t$(IMAGE) \\\n\t\t\t--no-cleanup-on-error\n\n.PHONY: test-packaging\ntest-packaging: DIST = packaging\ntest-packaging:\n\t@echo \"Testing package image contents\"\n\t@$(DOCKER) run --rm $(IMAGE) test -d \"/artifacts/packages/centos7/aarch64\" || echo \"Missing centos7/aarch64\"\n\t@$(DOCKER) run --rm $(IMAGE) test -d \"/artifacts/packages/centos7/x86_64\" || echo \"Missing centos7/x86_64\"\n\t@$(DOCKER) run --rm $(IMAGE) test -d \"/artifacts/packages/ubuntu18.04/amd64\" || echo \"Missing ubuntu18.04/amd64\"\n\t@$(DOCKER) run --rm $(IMAGE) test -d \"/artifacts/packages/ubuntu18.04/arm64\" || echo \"Missing ubuntu18.04/arm64\"\n"
  },
  {
    "path": "deployments/container/README.md",
    "content": "# NVIDIA Container Toolkit Container\n\nThis folder contains make and docker files for building the NVIDIA Container Toolkit Container.\n\n"
  },
  {
    "path": "deployments/container/multi-arch.mk",
    "content": "# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nPUSH_ON_BUILD ?= false\nDOCKER_BUILD_OPTIONS = --output=type=image,push=$(PUSH_ON_BUILD)\nDOCKER_BUILD_PLATFORM_OPTIONS = --platform=linux/amd64,linux/arm64\n\n$(BUILD_TARGETS): build-%: image-%\n\n# We only generate a single image for packaging targets\nbuild-packaging: DOCKER_BUILD_PLATFORM_OPTIONS = --platform=linux/amd64\n"
  },
  {
    "path": "deployments/container/native-only.mk",
    "content": "# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nPUSH_ON_BUILD ?= false\nARCH ?= $(shell uname -m)\nDOCKER_BUILD_PLATFORM_OPTIONS = --platform=linux/$(ARCH)\n\nifeq ($(PUSH_ON_BUILD),true)\nDOCKER_BUILD_OPTIONS = --output=type=image,push=$(PUSH_ON_BUILD)\n$(BUILD_TARGETS): build-%: image-%\n\t$(DOCKER) push \"$(IMAGE)\"\nelse\n$(BUILD_TARGETS): build-%: image-%\nendif\n"
  },
  {
    "path": "deployments/devel/Dockerfile",
    "content": "# Copyright (c) 2024, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# This Dockerfile is also used to define the golang version used in this project\n# This allows dependabot to manage this version in addition to other images.\nFROM golang:1.26.0\n\nWORKDIR /work\nCOPY * .\n\nRUN make install-tools\n\n# We need to set the /work directory as a safe directory.\n# This allows git commands to run in the container.\nRUN git config --file=/.gitconfig --add safe.directory /work\n\n"
  },
  {
    "path": "deployments/devel/Makefile",
    "content": "# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\ndownload:\n\t@echo Download go.mod dependencies\n\t@go mod download\n\ninstall-tools: download\n\t@echo Installing tools from tools.go\n\t@cat tools.go | grep _ | awk -F'\"' '{print $$2}' | xargs -tI % go install %\n\n\nDOCKER ?= docker\n-include $(CURDIR)/versions.mk\n\nDOCKERFILE_DEVEL = deployments/devel/Dockerfile\nDOCKERFILE_CONTEXT = deployments/devel\n\n.PHONY: .build-image\n.build-image:\n\t$(DOCKER) build \\\n\t\t--progress=plain \\\n\t\t--tag $(BUILDIMAGE) \\\n\t\t-f $(DOCKERFILE_DEVEL) \\\n\t\t$(DOCKERFILE_CONTEXT)\n\nmodules:\n\tgo mod tidy\n\tgo mod verify\n\ncheck-modules: modules\n\tgit diff --quiet HEAD -- go.mod go.sum\n"
  },
  {
    "path": "deployments/devel/go.mod",
    "content": "module github.com/NVIDIA/k8s-device-plugin/deployments/devel\n\ngo 1.25\n\nrequire github.com/matryer/moq v0.6.0\n\nrequire (\n\tgithub.com/google/go-cmp v0.7.0 // indirect\n\tgolang.org/x/mod v0.24.0 // indirect\n\tgolang.org/x/sync v0.12.0 // indirect\n\tgolang.org/x/tools v0.31.0 // indirect\n)\n"
  },
  {
    "path": "deployments/devel/go.sum",
    "content": "github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=\ngithub.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=\ngithub.com/matryer/moq v0.6.0 h1:FCccG09c3o4cg3gnrZ+7ty5Pa/sjmN24BMHp/0pwhjQ=\ngithub.com/matryer/moq v0.6.0/go.mod h1:iEVhY/XBwFG/nbRyEf0oV+SqnTHZJ5wectzx7yT+y98=\ngithub.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=\ngithub.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=\ngolang.org/x/mod v0.24.0 h1:ZfthKaKaT4NrhGVZHO1/WDTwGES4De8KtWO0SIbNJMU=\ngolang.org/x/mod v0.24.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww=\ngolang.org/x/sync v0.12.0 h1:MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw=\ngolang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=\ngolang.org/x/tools v0.31.0 h1:0EedkvKDbh+qistFTd0Bcwe/YLh4vHwWEkiI0toFIBU=\ngolang.org/x/tools v0.31.0/go.mod h1:naFTU+Cev749tSJRXJlna0T3WxKvb1kWEx15xA4SdmQ=\n"
  },
  {
    "path": "deployments/devel/tools.go",
    "content": "//go:build tools\n// +build tools\n\n/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage main\n\n// Define the tooling required to build the device plugin.\nimport (\n\t_ \"github.com/matryer/moq\"\n)\n"
  },
  {
    "path": "deployments/systemd/nvidia-cdi-refresh.env",
    "content": "# This file can be used to override the configuration of the\n#   nvidia-ctk cdi generate\n# command invoked by the nvidia-cdi-refresh.service.\n#\n# This is done by specifying the name and value of the environment variables in\n# this file as follows:\n#\n# ENVVAR=value\n#\n# For a list of envvars that can be set set the output of:\n#\n#   nvidia-ctk --help\n#\n# and\n#\n#   nvidia-ctk cdi generate --help\n#\n# For example, to change the for the generated CDI specification update and\n# uncomment the following line:\n# NVIDIA_CTK_CDI_OUTPUT_FILE_PATH=/var/run/cdi/nvidia.yaml\n"
  },
  {
    "path": "deployments/systemd/nvidia-cdi-refresh.path",
    "content": "# Copyright (c) 2025, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n[Unit]\nDescription=Trigger CDI refresh on NVIDIA driver or toolkit install / upgrade events\n\n[Path]\nPathChanged=/lib/modules/%v/modules.dep\nPathChanged=/lib/modules/%v/modules.dep.bin\nPathChanged=/usr/bin/nvidia-ctk\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "deployments/systemd/nvidia-cdi-refresh.service",
    "content": "# Copyright (c) 2025, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n[Unit]\nDescription=Refresh NVIDIA CDI specification file\nConditionPathExists=|/usr/bin/nvidia-smi\nConditionPathExists=|/usr/sbin/nvidia-smi\nConditionPathExists=/usr/bin/nvidia-ctk\nAfter=multi-user.target\n\n[Service]\nType=oneshot\n# Values from Environment will be replaced if defined in EnvironmentFile\nEnvironment=NVIDIA_CTK_CDI_OUTPUT_FILE_PATH=/var/run/cdi/nvidia.yaml\nEnvironmentFile=-/etc/nvidia-container-toolkit/nvidia-cdi-refresh.env\nExecCondition=/usr/bin/grep -qE '/(nvidia|nvidia-current)\\\\.ko' /lib/modules/%v/modules.dep\nExecStart=/usr/bin/nvidia-ctk cdi generate\nCapabilityBoundingSet=CAP_SYS_MODULE CAP_SYS_ADMIN CAP_MKNOD\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "docker/Dockerfile.debian",
    "content": "ARG BASEIMAGE\nFROM ${BASEIMAGE}\n\nENV DEBIAN_FRONTEND=noninteractive\nRUN apt-get update && apt-get install -y --no-install-recommends \\\n        wget \\\n        ca-certificates \\\n        git \\\n        build-essential \\\n        dh-make \\\n        fakeroot \\\n        devscripts \\\n        lsb-release && \\\n    rm -rf /var/lib/apt/lists/*\n\nRUN echo \"deb http://ftp.debian.org/debian $(lsb_release -cs)-backports main\" > /etc/apt/sources.list.d/backports.list\n\nARG GOLANG_VERSION=0.0.0\nRUN set -eux; \\\n    \\\n    arch=\"$(uname -m)\"; \\\n    case \"${arch##*-}\" in \\\n        x86_64 | amd64) ARCH='amd64' ;; \\\n        ppc64el | ppc64le) ARCH='ppc64le' ;; \\\n        aarch64 | arm64) ARCH='arm64' ;; \\\n        *) echo \"unsupported architecture\" ; exit 1 ;; \\\n    esac; \\\n    wget -nv -O - https://go.dev/dl/go${GOLANG_VERSION}.linux-${ARCH}.tar.gz \\\n    | tar -C /usr/local -xz\n\nENV GOPATH /go\nENV PATH $GOPATH/bin:/usr/local/go/bin:$PATH\n\n# packaging\nARG PKG_NAME\nARG PKG_VERS\nARG PKG_REV\n\nENV DEBFULLNAME \"NVIDIA CORPORATION\"\nENV DEBEMAIL \"cudatools@nvidia.com\"\nENV REVISION \"$PKG_VERS-$PKG_REV\"\nENV SECTION \"\"\n\n# output directory\nENV DIST_DIR=/tmp/nvidia-container-toolkit-$PKG_VERS\nRUN mkdir -p $DIST_DIR /dist\n\n# nvidia-container-toolkit\nWORKDIR $GOPATH/src/nvidia-container-toolkit\nCOPY . .\n\nARG GIT_COMMIT\nENV GIT_COMMIT ${GIT_COMMIT}\nRUN make PREFIX=${DIST_DIR} cmds\n\nWORKDIR $DIST_DIR\nCOPY packaging/debian ./debian\nCOPY deployments/systemd/ .\n\nRUN dch --create --package=\"${PKG_NAME}\" \\\n        --newversion \"${REVISION}\" \\\n            \"See https://github.com/NVIDIA/nvidia-container-toolkit/blob/${GIT_COMMIT}/CHANGELOG.md for the changelog\" && \\\n    dch --append \"Bump libnvidia-container dependency to ${LIBNVIDIA_CONTAINER1_VERSION}\" && \\\n    dch -r \"\" && \\\n    if [ \"$REVISION\" != \"$(dpkg-parsechangelog --show-field=Version)\" ]; then exit 1; fi\n\nCMD export DISTRIB=\"$(lsb_release -cs)\" && \\\n    debuild -eDISTRIB -eSECTION -eVERSION=\"${REVISION}\" \\\n    --dpkg-buildpackage-hook='sh debian/prepare' -i -us -uc -b && \\\n    mv /tmp/*.deb /dist\n"
  },
  {
    "path": "docker/Dockerfile.devel",
    "content": "# Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\nARG GOLANG_VERSION=x.x.x\nARG GOLANGCI_LINT_VERSION=v1.54.1\nFROM golang:${GOLANG_VERSION}\n\nRUN go install golang.org/x/lint/golint@6edffad5e6160f5949cdefc81710b2706fbcd4f6\nRUN go install github.com/matryer/moq@latest\nRUN go install github.com/gordonklaus/ineffassign@d2c82e48359b033cde9cf1307f6d5550b8d61321\nRUN go install github.com/client9/misspell/cmd/misspell@latest\nRUN go install github.com/google/go-licenses@latest\nRUN curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin ${GOLANGCI_LINT_VERSION}\n\n# We need to set the /work directory as a safe directory.\n# This allows git commands to run in the container.\nRUN git config --file=/.gitconfig --add safe.directory /work\n"
  },
  {
    "path": "docker/Dockerfile.opensuse-leap",
    "content": "ARG BASEIMAGE\nFROM ${BASEIMAGE}\n\nRUN zypper install -y \\\n    ca-certificates \\\n    wget \\\n    git \\\n    rpm-build && \\\n    rm -rf /var/cache/zypp/*\n\nARG GOLANG_VERSION=0.0.0\nRUN set -eux; \\\n    \\\n    arch=\"$(uname -m)\"; \\\n    case \"${arch##*-}\" in \\\n        x86_64 | amd64) ARCH='amd64' ;; \\\n        ppc64el | ppc64le) ARCH='ppc64le' ;; \\\n        aarch64 | arm64) ARCH='arm64' ;; \\\n        *) echo \"unsupported architecture\"; exit 1 ;; \\\n    esac; \\\n    wget -nv -O - https://go.dev/dl/go${GOLANG_VERSION}.linux-${ARCH}.tar.gz \\\n    | tar -C /usr/local -xz\n\nENV GOPATH /go\nENV PATH $GOPATH/bin:/usr/local/go/bin:$PATH\n\n# packaging\nARG PKG_NAME\nARG PKG_VERS\nARG PKG_REV\nENV PKG_NAME ${PKG_NAME}\nENV PKG_VERS ${PKG_VERS}\nENV PKG_REV ${PKG_REV}\n\n# output directory\nENV DIST_DIR=/tmp/nvidia-container-toolkit-$PKG_VERS/SOURCES\nRUN mkdir -p $DIST_DIR /dist\n\n# nvidia-container-toolkit\nWORKDIR $GOPATH/src/nvidia-container-toolkit\nCOPY . .\n\nARG GIT_COMMIT\nENV GIT_COMMIT ${GIT_COMMIT}\nRUN make PREFIX=${DIST_DIR} cmds\n\nWORKDIR $DIST_DIR/..\nCOPY packaging/rpm .\nCOPY deployments/systemd/ .\n\nCMD arch=$(uname -m) && \\\n    rpmbuild --clean --target=$arch -bb \\\n             -D \"_topdir $PWD\" \\\n             -D \"release_date $(date +'%a %b %d %Y')\" \\\n             -D \"git_commit ${GIT_COMMIT}\" \\\n             -D \"version ${PKG_VERS}\" \\\n             -D \"release ${PKG_REV}\" \\\n             SPECS/nvidia-container-toolkit.spec && \\\n    mv RPMS/$arch/*.rpm /dist\n"
  },
  {
    "path": "docker/Dockerfile.rpm-yum",
    "content": "# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# This is the dockerfile for building packages on yum-based RPM systems.\n\nARG BASEIMAGE\nFROM ${BASEIMAGE}\n\n# centos:stream8 is EOL.\n# We switch to the vault repositories for this base image.\nARG BASEIMAGE\nRUN sed -i -e \"s|mirrorlist=|#mirrorlist=|g\" \\\n            -e \"s|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g\" \\\n                /etc/yum.repos.d/CentOS-*\n\nRUN yum install -y \\\n        ca-certificates \\\n        gcc \\\n        wget \\\n        git \\\n        make \\\n        rpm-build && \\\n    rm -rf /var/cache/yum/*\n\nARG GOLANG_VERSION=0.0.0\nRUN set -eux; \\\n    \\\n    arch=\"$(uname -m)\"; \\\n    case \"${arch##*-}\" in \\\n        x86_64 | amd64) ARCH='amd64' ;; \\\n        ppc64el | ppc64le) ARCH='ppc64le' ;; \\\n        aarch64 | arm64) ARCH='arm64' ;; \\\n        *) echo \"unsupported architecture\"; exit 1 ;; \\\n    esac; \\\n    wget -nv -O - https://go.dev/dl/go${GOLANG_VERSION}.linux-${ARCH}.tar.gz \\\n    | tar -C /usr/local -xz\n\nENV GOPATH /go\nENV PATH $GOPATH/bin:/usr/local/go/bin:$PATH\n\n# packaging\nARG PKG_NAME\nARG PKG_VERS\nARG PKG_REV\nENV PKG_NAME ${PKG_NAME}\nENV PKG_VERS ${PKG_VERS}\nENV PKG_REV ${PKG_REV}\n\n# output directory\nENV DIST_DIR=/tmp/nvidia-container-toolkit-$PKG_VERS/SOURCES\nRUN mkdir -p $DIST_DIR /dist\n\n# nvidia-container-toolkit\nWORKDIR $GOPATH/src/nvidia-container-toolkit\nCOPY . .\n\nARG GIT_COMMIT\nENV GIT_COMMIT ${GIT_COMMIT}\nRUN make PREFIX=${DIST_DIR} cmds\n\nWORKDIR $DIST_DIR/..\nCOPY packaging/rpm .\nCOPY deployments/systemd/ ${DIST_DIR}/\n\nCMD arch=$(uname -m) && \\\n    rpmbuild --clean --target=$arch -bb \\\n             -D \"_topdir $PWD\" \\\n             -D \"release_date $(date +'%a %b %d %Y')\" \\\n             -D \"git_commit ${GIT_COMMIT}\" \\\n             -D \"version ${PKG_VERS}\" \\\n             -D \"release ${PKG_REV}\" \\\n             SPECS/nvidia-container-toolkit.spec && \\\n    mv RPMS/$arch/*.rpm /dist\n"
  },
  {
    "path": "docker/Dockerfile.ubuntu",
    "content": "ARG BASEIMAGE\nFROM ${BASEIMAGE}\n\nENV DEBIAN_FRONTEND=noninteractive\nRUN apt-get update && apt-get install -y --no-install-recommends \\\n        wget \\\n        ca-certificates \\\n        git \\\n        build-essential \\\n        dh-make \\\n        fakeroot \\\n        devscripts \\\n        lsb-release && \\\n    rm -rf /var/lib/apt/lists/*\n\nARG GOLANG_VERSION=0.0.0\nRUN set -eux; \\\n    \\\n    arch=\"$(uname -m)\"; \\\n    case \"${arch##*-}\" in \\\n        x86_64 | amd64) ARCH='amd64' ;; \\\n        ppc64el | ppc64le) ARCH='ppc64le' ;; \\\n        aarch64 | arm64) ARCH='arm64' ;; \\\n        *) echo \"unsupported architecture\" ; exit 1 ;; \\\n    esac; \\\n    wget -nv -O - https://go.dev/dl/go${GOLANG_VERSION}.linux-${ARCH}.tar.gz \\\n    | tar -C /usr/local -xz\n\nENV GOPATH /go\nENV PATH $GOPATH/bin:/usr/local/go/bin:$PATH\n\n# packaging\nARG PKG_NAME\nARG PKG_VERS\nARG PKG_REV\n\nENV DEBFULLNAME \"NVIDIA CORPORATION\"\nENV DEBEMAIL \"cudatools@nvidia.com\"\nENV REVISION \"$PKG_VERS-$PKG_REV\"\nENV SECTION \"\"\n\n# output directory\nENV DIST_DIR=/tmp/nvidia-container-toolkit-$PKG_VERS\nRUN mkdir -p $DIST_DIR /dist\n\n# nvidia-container-toolkit\nWORKDIR $GOPATH/src/nvidia-container-toolkit\nCOPY . .\n\nARG GIT_COMMIT\nENV GIT_COMMIT ${GIT_COMMIT}\nRUN make PREFIX=${DIST_DIR} cmds\n\nWORKDIR $DIST_DIR\nCOPY packaging/debian ./debian\nCOPY deployments/systemd/ .\n\nRUN dch --create --package=\"${PKG_NAME}\" \\\n        --newversion \"${REVISION}\" \\\n            \"See https://github.com/NVIDIA/nvidia-container-toolkit/blob/${GIT_COMMIT}/CHANGELOG.md for the changelog\" && \\\n    dch --append \"Bump libnvidia-container dependency to ${REVISION}\" && \\\n    dch -r \"\" && \\\n    if [ \"$REVISION\" != \"$(dpkg-parsechangelog --show-field=Version)\" ]; then exit 1; fi\n\nCMD export DISTRIB=\"$(lsb_release -cs)\" && \\\n    debuild -eDISTRIB -eSECTION -eVERSION=\"${REVISION}\" \\\n    --dpkg-buildpackage-hook='sh debian/prepare' -i -us -uc -b && \\\n    mv /tmp/*.deb /dist\n"
  },
  {
    "path": "docker/docker.mk",
    "content": "# Copyright (c) 2017-2021, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Supported OSs by architecture\nAMD64_TARGETS := ubuntu22.04 ubuntu20.04 ubuntu18.04 ubuntu16.04 debian10 debian9\nX86_64_TARGETS := centos7 centos8 rhel7 rhel8 amazonlinux2 opensuse-leap15.1\nPPC64LE_TARGETS := ubuntu18.04 ubuntu16.04 centos7 centos8 rhel7 rhel8\nARM64_TARGETS := ubuntu22.04 ubuntu20.04 ubuntu18.04\nAARCH64_TARGETS := centos7 centos8 rhel8 amazonlinux2\n\n# Define top-level build targets\ndocker%: SHELL:=/bin/bash\n\n# Native targets\nPLATFORM ?= $(shell uname -m)\nifeq ($(PLATFORM),x86_64)\nNATIVE_TARGETS := $(AMD64_TARGETS) $(X86_64_TARGETS)\n$(AMD64_TARGETS): %: %-amd64\n$(X86_64_TARGETS): %: %-x86_64\nelse ifeq ($(PLATFORM),ppc64le)\nNATIVE_TARGETS := $(PPC64LE_TARGETS)\n$(PPC64LE_TARGETS): %: %-ppc64le\nelse ifeq ($(PLATFORM),aarch64)\nNATIVE_TARGETS := $(ARM64_TARGETS) $(AARCH64_TARGETS)\n$(ARM64_TARGETS): %: %-arm64\n$(AARCH64_TARGETS): %: %-aarch64\nendif\ndocker-native: $(NATIVE_TARGETS)\n\n# amd64 targets\nAMD64_TARGETS := $(patsubst %, %-amd64, $(AMD64_TARGETS))\n$(AMD64_TARGETS): ARCH := amd64\n$(AMD64_TARGETS): %: --%\ndocker-amd64: $(AMD64_TARGETS)\n\n# x86_64 targets\nX86_64_TARGETS := $(patsubst %, %-x86_64, $(X86_64_TARGETS))\n$(X86_64_TARGETS): ARCH := x86_64\n$(X86_64_TARGETS): %: --%\ndocker-x86_64: $(X86_64_TARGETS)\n\n# arm64 targets\nARM64_TARGETS := $(patsubst %, %-arm64, $(ARM64_TARGETS))\n$(ARM64_TARGETS): ARCH := arm64\n$(ARM64_TARGETS): %: --%\ndocker-arm64: $(ARM64_TARGETS)\n\n# aarch64 targets\nAARCH64_TARGETS := $(patsubst %, %-aarch64, $(AARCH64_TARGETS))\n$(AARCH64_TARGETS): ARCH := aarch64\n$(AARCH64_TARGETS): %: --%\ndocker-aarch64: $(AARCH64_TARGETS)\n\n# ppc64le targets\nPPC64LE_TARGETS := $(patsubst %, %-ppc64le, $(PPC64LE_TARGETS))\n$(PPC64LE_TARGETS): ARCH := ppc64le\n$(PPC64LE_TARGETS): WITH_LIBELF := yes\n$(PPC64LE_TARGETS): %: --%\ndocker-ppc64le: $(PPC64LE_TARGETS)\n\n# docker target to build for all os/arch combinations\ndocker-all: $(AMD64_TARGETS) $(X86_64_TARGETS) \\\n            $(ARM64_TARGETS) $(AARCH64_TARGETS) \\\n            $(PPC64LE_TARGETS)\n\n# Default variables for all private '--' targets below.\n# One private target is defined for each OS we support.\n--%: TARGET_PLATFORM = $(*)\n--%: VERSION = $(patsubst $(OS)%-$(ARCH),%,$(TARGET_PLATFORM))\n--%: BASEIMAGE = $(OS):$(VERSION)\n--%: BUILDIMAGE = nvidia/$(LIB_NAME)/$(OS)$(VERSION)-$(ARCH)\n--%: DOCKERFILE = $(CURDIR)/docker/Dockerfile.$(OS)\n--%: ARTIFACTS_DIR = $(DIST_DIR)/$(OS)$(VERSION)/$(ARCH)\n--%: docker-build-%\n\t@\n\n# private ubuntu target\n--ubuntu%: OS := ubuntu\n\n# private debian target\n--debian%: OS := debian\n\n# private centos target\n--centos%: OS := centos\n--centos%: DOCKERFILE = $(CURDIR)/docker/Dockerfile.rpm-yum\n--centos8%: BASEIMAGE = quay.io/centos/centos:stream8\n\n# private amazonlinux target\n--amazonlinux%: OS := amazonlinux\n--amazonlinux%: DOCKERFILE = $(CURDIR)/docker/Dockerfile.rpm-yum\n\n# private opensuse-leap target\n--opensuse-leap%: OS = opensuse-leap\n--opensuse-leap%: BASEIMAGE = opensuse/leap:$(VERSION)\n\n# private rhel target (actually built on centos)\n--rhel%: OS := centos\n--rhel%: VERSION = $(patsubst rhel%-$(ARCH),%,$(TARGET_PLATFORM))\n--rhel%: ARTIFACTS_DIR = $(DIST_DIR)/rhel$(VERSION)/$(ARCH)\n--rhel%: DOCKERFILE = $(CURDIR)/docker/Dockerfile.rpm-yum\n--rhel8%: BASEIMAGE = quay.io/centos/centos:stream8\n\n\ndocker-build-%:\n\t@echo \"Building for $(TARGET_PLATFORM)\"\n\tdocker pull --platform=linux/$(ARCH) $(BASEIMAGE)\n\tDOCKER_BUILDKIT=1 \\\n\t$(DOCKER) build \\\n\t    --platform=linux/$(ARCH) \\\n\t    --progress=plain \\\n\t    --build-arg BASEIMAGE=\"$(BASEIMAGE)\" \\\n\t    --build-arg GOLANG_VERSION=\"$(GOLANG_VERSION)\" \\\n\t    --build-arg PKG_NAME=\"$(LIB_NAME)\" \\\n\t    --build-arg PKG_VERS=\"$(PACKAGE_VERSION)\" \\\n\t    --build-arg PKG_REV=\"$(PACKAGE_REVISION)\" \\\n\t    --build-arg GIT_COMMIT=\"$(GIT_COMMIT)\" \\\n\t    --tag $(BUILDIMAGE) \\\n\t    --file $(DOCKERFILE) .\n\t$(DOCKER) run \\\n\t    --platform=linux/$(ARCH) \\\n\t    -e DISTRIB \\\n\t    -e SECTION \\\n\t    -v $(ARTIFACTS_DIR):/dist \\\n\t    $(BUILDIMAGE)\n\ndocker-clean:\n\tIMAGES=$$(docker images \"nvidia/$(LIB_NAME)/*\" --format=\"{{.ID}}\"); \\\n\tif [ \"$${IMAGES}\" != \"\" ]; then \\\n\t    docker rmi -f $${IMAGES}; \\\n\tfi\n\ndistclean:\n\trm -rf $(DIST_DIR)\n"
  },
  {
    "path": "go.mod",
    "content": "module github.com/NVIDIA/nvidia-container-toolkit\n\ngo 1.25.0\n\nrequire (\n\tgithub.com/NVIDIA/go-nvlib v0.9.1-0.20251202135446-d0f42ba016dd\n\tgithub.com/NVIDIA/go-nvml v0.13.0-1.0.20260212130905-92cf8c963449\n\tgithub.com/containerd/nri v0.11.0\n\tgithub.com/google/uuid v1.6.0\n\tgithub.com/moby/sys/mountinfo v0.7.2\n\tgithub.com/moby/sys/reexec v0.1.0\n\tgithub.com/moby/sys/symlink v0.3.0\n\tgithub.com/opencontainers/cgroups v0.0.6\n\tgithub.com/opencontainers/runc v1.4.0\n\tgithub.com/opencontainers/runtime-spec v1.3.0\n\tgithub.com/pelletier/go-toml v1.9.5\n\tgithub.com/prometheus/procfs v0.19.2\n\tgithub.com/sirupsen/logrus v1.9.4\n\tgithub.com/stretchr/testify v1.11.1\n\tgithub.com/urfave/cli-altsrc/v3 v3.1.0\n\tgithub.com/urfave/cli/v3 v3.6.2\n\tgolang.org/x/mod v0.33.0\n\tgolang.org/x/sys v0.41.0\n\ttags.cncf.io/container-device-interface v1.1.0\n\ttags.cncf.io/container-device-interface/specs-go v1.1.0\n)\n\nrequire (\n\tcyphar.com/go-pathrs v0.2.1 // indirect\n\tgithub.com/containerd/log v0.1.0 // indirect\n\tgithub.com/containerd/ttrpc v1.2.7 // indirect\n\tgithub.com/cyphar/filepath-securejoin v0.6.1 // indirect\n\tgithub.com/davecgh/go-spew v1.1.1 // indirect\n\tgithub.com/fsnotify/fsnotify v1.7.0 // indirect\n\tgithub.com/golang/protobuf v1.5.3 // indirect\n\tgithub.com/hashicorp/errwrap v1.1.0 // indirect\n\tgithub.com/knqyf263/go-plugin v0.9.0 // indirect\n\tgithub.com/kr/text v0.2.0 // indirect\n\tgithub.com/moby/sys/capability v0.4.0 // indirect\n\tgithub.com/opencontainers/runtime-tools v0.9.1-0.20251114084447-edf4cb3d2116 // indirect\n\tgithub.com/pmezard/go-difflib v1.0.0 // indirect\n\tgithub.com/rogpeppe/go-internal v1.11.0 // indirect\n\tgithub.com/tetratelabs/wazero v1.10.1 // indirect\n\tgithub.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect\n\tgoogle.golang.org/genproto/googleapis/rpc v0.0.0-20230731190214-cbb8c96f2d6d // indirect\n\tgoogle.golang.org/grpc v1.57.1 // indirect\n\tgoogle.golang.org/protobuf v1.36.8 // indirect\n\tgopkg.in/yaml.v3 v3.0.1 // indirect\n\tsigs.k8s.io/yaml v1.4.0 // indirect\n)\n"
  },
  {
    "path": "go.sum",
    "content": "cyphar.com/go-pathrs v0.2.1 h1:9nx1vOgwVvX1mNBWDu93+vaceedpbsDqo+XuBGL40b8=\ncyphar.com/go-pathrs v0.2.1/go.mod h1:y8f1EMG7r+hCuFf/rXsKqMJrJAUoADZGNh5/vZPKcGc=\ngithub.com/NVIDIA/go-nvlib v0.9.1-0.20251202135446-d0f42ba016dd h1:MC1w/VYuo9Zt0se4SSx9BVid4a46ai+voN3knRvVWjE=\ngithub.com/NVIDIA/go-nvlib v0.9.1-0.20251202135446-d0f42ba016dd/go.mod h1:7mzx9FSdO9fXWP9NKuZmWkCwhkEcSWQFe2tmFwtLb9c=\ngithub.com/NVIDIA/go-nvml v0.13.0-1.0.20260212130905-92cf8c963449 h1:UrArFAaPhj9av2yzEN35CvzWw68BeQjp2MaQFUIoJSU=\ngithub.com/NVIDIA/go-nvml v0.13.0-1.0.20260212130905-92cf8c963449/go.mod h1:ahi2psRYoa+wYUBIrZPRO+wJs9lcvMhxSSkjjvsJJNQ=\ngithub.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM=\ngithub.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ=\ngithub.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I=\ngithub.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo=\ngithub.com/containerd/nri v0.11.0 h1:26mcQwNG58AZn0YkOrlJQ0yxQVmyZooflnVWJTqQrqQ=\ngithub.com/containerd/nri v0.11.0/go.mod h1:bjGTLdUA58WgghKHg8azFMGXr05n1wDHrt3NSVBHiGI=\ngithub.com/containerd/ttrpc v1.2.7 h1:qIrroQvuOL9HQ1X6KHe2ohc7p+HP/0VE6XPU7elJRqQ=\ngithub.com/containerd/ttrpc v1.2.7/go.mod h1:YCXHsb32f+Sq5/72xHubdiJRQY9inL4a4ZQrAbN1q9o=\ngithub.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=\ngithub.com/cyphar/filepath-securejoin v0.6.1 h1:5CeZ1jPXEiYt3+Z6zqprSAgSWiggmpVyciv8syjIpVE=\ngithub.com/cyphar/filepath-securejoin v0.6.1/go.mod h1:A8hd4EnAeyujCJRrICiOWqjS1AX0a9kM5XL+NwKoYSc=\ngithub.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=\ngithub.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA=\ngithub.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM=\ngithub.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=\ngithub.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=\ngithub.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI=\ngithub.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8=\ngithub.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=\ngithub.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=\ngithub.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=\ngithub.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=\ngithub.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=\ngithub.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=\ngithub.com/google/pprof v0.0.0-20240424215950-a892ee059fd6 h1:k7nVchz72niMH6YLQNvHSdIE7iqsQxK1P41mySCvssg=\ngithub.com/google/pprof v0.0.0-20240424215950-a892ee059fd6/go.mod h1:kf6iHlnVGwgKolg33glAes7Yg/8iWP8ukqeldJSO7jw=\ngithub.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=\ngithub.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=\ngithub.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I=\ngithub.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=\ngithub.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo=\ngithub.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM=\ngithub.com/knqyf263/go-plugin v0.9.0 h1:CQs2+lOPIlkZVtcb835ZYDEoyyWJWLbSTWeCs0EwTwI=\ngithub.com/knqyf263/go-plugin v0.9.0/go.mod h1:2z5lCO1/pez6qGo8CvCxSlBFSEat4MEp1DrnA+f7w8Q=\ngithub.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=\ngithub.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=\ngithub.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=\ngithub.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=\ngithub.com/moby/sys/capability v0.4.0 h1:4D4mI6KlNtWMCM1Z/K0i7RV1FkX+DBDHKVJpCndZoHk=\ngithub.com/moby/sys/capability v0.4.0/go.mod h1:4g9IK291rVkms3LKCDOoYlnV8xKwoDTpIrNEE35Wq0I=\ngithub.com/moby/sys/mountinfo v0.7.2 h1:1shs6aH5s4o5H2zQLn796ADW1wMrIwHsyJ2v9KouLrg=\ngithub.com/moby/sys/mountinfo v0.7.2/go.mod h1:1YOa8w8Ih7uW0wALDUgT1dTTSBrZ+HiBLGws92L2RU4=\ngithub.com/moby/sys/reexec v0.1.0 h1:RrBi8e0EBTLEgfruBOFcxtElzRGTEUkeIFaVXgU7wok=\ngithub.com/moby/sys/reexec v0.1.0/go.mod h1:EqjBg8F3X7iZe5pU6nRZnYCMUTXoxsjiIfHup5wYIN8=\ngithub.com/moby/sys/symlink v0.3.0 h1:GZX89mEZ9u53f97npBy4Rc3vJKj7JBDj/PN2I22GrNU=\ngithub.com/moby/sys/symlink v0.3.0/go.mod h1:3eNdhduHmYPcgsJtZXW1W4XUJdZGBIkttZ8xKqPUJq0=\ngithub.com/onsi/ginkgo/v2 v2.19.1 h1:QXgq3Z8Crl5EL1WBAC98A5sEBHARrAJNzAmMxzLcRF0=\ngithub.com/onsi/ginkgo/v2 v2.19.1/go.mod h1:O3DtEWQkPa/F7fBMgmZQKKsluAy8pd3rEQdrjkPb9zA=\ngithub.com/onsi/gomega v1.34.0 h1:eSSPsPNp6ZpsG8X1OVmOTxig+CblTc4AxpPBykhe2Os=\ngithub.com/onsi/gomega v1.34.0/go.mod h1:MIKI8c+f+QLWk+hxbePD4i0LMJSExPaZOVfkoex4cAo=\ngithub.com/opencontainers/cgroups v0.0.6 h1:tfZFWTIIGaUUFImTyuTg+Mr5x8XRiSdZESgEBW7UxuI=\ngithub.com/opencontainers/cgroups v0.0.6/go.mod h1:oWVzJsKK0gG9SCRBfTpnn16WcGEqDI8PAcpMGbqWxcs=\ngithub.com/opencontainers/runc v1.4.0 h1:FG1Hw0GBYPsNki+mBz1QOrSzbwbAcerhrAD2r097QCc=\ngithub.com/opencontainers/runc v1.4.0/go.mod h1:sch3Bh3c1NlyAkALoAUz5Br9ubMLZzFcxuovZbnkErk=\ngithub.com/opencontainers/runtime-spec v1.3.0 h1:YZupQUdctfhpZy3TM39nN9Ika5CBWT5diQ8ibYCRkxg=\ngithub.com/opencontainers/runtime-spec v1.3.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0=\ngithub.com/opencontainers/runtime-tools v0.9.1-0.20251114084447-edf4cb3d2116 h1:tAKu3NkKWZYpqBSOJKwTxT1wIGueiF7gcmcNgr5pNTY=\ngithub.com/opencontainers/runtime-tools v0.9.1-0.20251114084447-edf4cb3d2116/go.mod h1:DKDEfzxvRkoQ6n9TGhxQgg2IM1lY4aM0eaQP4e3oElw=\ngithub.com/opencontainers/selinux v1.13.0 h1:Zza88GWezyT7RLql12URvoxsbLfjFx988+LGaWfbL84=\ngithub.com/opencontainers/selinux v1.13.0/go.mod h1:XxWTed+A/s5NNq4GmYScVy+9jzXhGBVEOAyucdRUY8s=\ngithub.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8=\ngithub.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=\ngithub.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=\ngithub.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=\ngithub.com/prometheus/procfs v0.19.2 h1:zUMhqEW66Ex7OXIiDkll3tl9a1ZdilUOd/F6ZXw4Vws=\ngithub.com/prometheus/procfs v0.19.2/go.mod h1:M0aotyiemPhBCM0z5w87kL22CxfcH05ZpYlu+b4J7mw=\ngithub.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M=\ngithub.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA=\ngithub.com/sirupsen/logrus v1.9.4 h1:TsZE7l11zFCLZnZ+teH4Umoq5BhEIfIzfRDZ1Uzql2w=\ngithub.com/sirupsen/logrus v1.9.4/go.mod h1:ftWc9WdOfJ0a92nsE2jF5u5ZwH8Bv2zdeOC42RjbV2g=\ngithub.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=\ngithub.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=\ngithub.com/tetratelabs/wazero v1.10.1 h1:2DugeJf6VVk58KTPszlNfeeN8AhhpwcZqkJj2wwFuH8=\ngithub.com/tetratelabs/wazero v1.10.1/go.mod h1:DRm5twOQ5Gr1AoEdSi0CLjDQF1J9ZAuyqFIjl1KKfQU=\ngithub.com/urfave/cli-altsrc/v3 v3.1.0 h1:6E5+kXeAWmRxXlPgdEVf9VqVoTJ2MJci0UMpUi/w/bA=\ngithub.com/urfave/cli-altsrc/v3 v3.1.0/go.mod h1:VcWVTGXcL3nrXUDJZagHAeUX702La3PKeWav7KpISqA=\ngithub.com/urfave/cli/v3 v3.6.2 h1:lQuqiPrZ1cIz8hz+HcrG0TNZFxU70dPZ3Yl+pSrH9A8=\ngithub.com/urfave/cli/v3 v3.6.2/go.mod h1:ysVLtOEmg2tOy6PknnYVhDoouyC/6N42TMeoMzskhso=\ngithub.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb h1:zGWFAtiMcyryUHoUjUJX0/lt1H2+i2Ka2n+D3DImSNo=\ngithub.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU=\ngithub.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0=\ngithub.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ=\ngithub.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74=\ngithub.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y=\ngolang.org/x/mod v0.33.0 h1:tHFzIWbBifEmbwtGz65eaWyGiGZatSrT9prnU8DbVL8=\ngolang.org/x/mod v0.33.0/go.mod h1:swjeQEj+6r7fODbD2cqrnje9PnziFuw4bmLbBZFrQ5w=\ngolang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE=\ngolang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg=\ngolang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k=\ngolang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=\ngolang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY=\ngolang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4=\ngolang.org/x/tools v0.41.0 h1:a9b8iMweWG+S0OBnlU36rzLp20z1Rp10w+IY2czHTQc=\ngolang.org/x/tools v0.41.0/go.mod h1:XSY6eDqxVNiYgezAVqqCeihT4j1U2CCsqvH3WhQpnlg=\ngolang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngoogle.golang.org/genproto/googleapis/rpc v0.0.0-20230731190214-cbb8c96f2d6d h1:pgIUhmqwKOUlnKna4r6amKdUngdL8DrkpFeV8+VBElY=\ngoogle.golang.org/genproto/googleapis/rpc v0.0.0-20230731190214-cbb8c96f2d6d/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM=\ngoogle.golang.org/grpc v1.57.1 h1:upNTNqv0ES+2ZOOqACwVtS3Il8M12/+Hz41RCPzAjQg=\ngoogle.golang.org/grpc v1.57.1/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo=\ngoogle.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=\ngoogle.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=\ngoogle.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc=\ngoogle.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU=\ngopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=\ngopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=\ngopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=\ngopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=\ngopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=\nsigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E=\nsigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY=\ntags.cncf.io/container-device-interface v1.1.0 h1:RnxNhxF1JOu6CJUVpetTYvrXHdxw9j9jFYgZpI+anSY=\ntags.cncf.io/container-device-interface v1.1.0/go.mod h1:76Oj0Yqp9FwTx/pySDc8Bxjpg+VqXfDb50cKAXVJ34Q=\ntags.cncf.io/container-device-interface/specs-go v1.1.0 h1:QRZVeAceQM+zTZe12eyfuJuuzp524EKYwhmvLd+h+yQ=\ntags.cncf.io/container-device-interface/specs-go v1.1.0/go.mod h1:u86hoFWqnh3hWz3esofRFKbI261bUlvUfLKGrDhJkgQ=\n"
  },
  {
    "path": "hack/create-release.sh",
    "content": "# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nif [ -z \"$1\" ]; then\n  VERSION=$(awk -F= '/^VERSION/ { print $2 }' versions.mk | tr -d '[:space:]')\nelse\n  VERSION=$1\nfi\n\n\nPRERELEASE_FLAG=\"\"\nREPO=\"stable\"\nif [[ ${VERSION} == v*-rc.* ]]; then\n    PRERELEASE_FLAG=\"--prerelease\"\n    REPO=\"experimental\"\nfi\n\nREPOSITORY=NVIDIA/nvidia-container-toolkit\n\necho \"Creating draft release\"\ngh release create ${VERSION} \\\n            --draft \\\n            --title \"${VERSION}\" \\\n            -R \"${REPOSITORY}\" \\\n            --verify-tag \\\n            --prerelease\n\necho \"Uploading release artifacts for ${VERSION}\"\n\nPACKAGE_ROOT=release-${VERSION}-${REPO}\n\ngh release upload ${VERSION} \\\n    ${PACKAGE_ROOT}/nvidia-container-toolkit_${VERSION#v}_*.tar.gz \\\n    ${PACKAGE_ROOT}/nvidia-container-toolkit_${VERSION#v}_checksums.txt \\\n    --clobber \\\n    -R ${REPOSITORY}\n"
  },
  {
    "path": "hack/generate-changelog.sh",
    "content": "#!/usr/bin/env bash\n\n# Copyright (c) 2024, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nset -o pipefail\nthis=`basename $0`\n\nusage () {\ncat << EOF\nGenerate a changelog for an NVIDIA Container Toolkit release\n\nUsage: $this [-h] --previous-version <previous_version> --version <version>\n\nOptions:\n  --previous-version    specify the previous version\n  --version             specify the version for this release.\n  --help/-h   show this help and exit\n\nEOF\n}\n\nversion=\nprevious_version=\n# Parse command line options\nwhile [[ $# -gt 0 ]]; do\n    key=\"$1\"\n    case $key in\n        --previous-version)\n        previous_version=\"$2\"\n        shift 2\n        ;;\n        --version)\n        version=\"$2\"\n        shift 2\n        ;;\n        --help/-h)\n            usage\n            exit 0\n            ;;\n        *)  usage\n            exit 1\n            ;;\n    esac\ndone\n\n# Check that the required args were provided.\nif [ -z ${version} ]; then\n    echo -e \"ERROR: --version is required\"\n    usage\n    exit 1\nfi\n\nif [ -z ${previous_version} ]; then\n    echo -e \"ERROR: --previous-version is required\"\n    usage\n    exit 1\nfi\n\n>&2 echo \"version=$version, previous_version=$previous_version\"\n\n# Fetch the latest tags from the remote\nremote=$( git remote -v | grep -E \"NVIDIA/nvidia-container-toolkit(\\.git)?\\s\" | grep -oE \"^[a-z]+\" | sort -u )\n>&2 echo \"Detected remote as '${remote}'\"\ngit fetch ${remote} --tags\n\nSHA=$(git rev-parse ${version})\nif [[ $? -ne 0 ]]; then\n    SHA=\"HEAD\"\nfi\n\n>&2 echo \"Using ${previous_version} as previous version\"\n\n# Print the changelog\necho \"## What's Changed\"\necho \"\"\nif [[ ${version} != v*-rc.* && ${previous_version} == v*-rc.* ]]; then\necho \"- Promote ${previous_version} to $version\"\nfi\n\n# Iterate over the commit messages and ignore the ones that start with \"Merge\" or \"Bump\"\ngit log --pretty=format:\"%s\" ${previous_version}..$SHA -- ':!deployments/container' ':!tools' | grep -Ev \"(^Merge )|(^Bump)|(no-rel-?note)|(^---)\" |  sed 's/^\\(.*\\)/- \\1/g'\n\necho \"\"\necho \"### Changes in the Toolkit Container\"\necho \"\"\ngit log --pretty=format:\"%s\" ${previous_version}..$SHA -- deployments/container tools | grep -Ev \"(^Merge )|(no-rel-?note)|(^---)\" |  sed 's/^\\(.*\\)/- \\1/g'\n\nLIB_NVIDIA_CONTAINER_REFERENCE=$( git ls-tree ${previous_version} third_party/libnvidia-container --object-only )\nLIB_NVIDIA_CONTAINER_VERSION=$( git ls-tree $SHA third_party/libnvidia-container --object-only )\n\necho \"\"\nif [[ \"${LIB_NVIDIA_CONTAINER_REFERENCE}\" != \"${LIB_NVIDIA_CONTAINER_VERSION}\" ]] && [[ $(git -C third_party/libnvidia-container log --pretty=format:\"%s\" $LIB_NVIDIA_CONTAINER_REFERENCE..$LIB_NVIDIA_CONTAINER_VERSION | grep -Ev \"(^Merge )|(^Bump)|(no-rel-?note)|(^---)\" |  sed 's/^\\(.*\\)/- \\1/g' | wc -l) -gt 0  ]]; then\necho \"### Changes in libnvidia-container\"\necho \"\"\ngit -C third_party/libnvidia-container log --pretty=format:\"%s\" $LIB_NVIDIA_CONTAINER_REFERENCE..$LIB_NVIDIA_CONTAINER_VERSION | grep -Ev \"(^Merge )|(^Bump)|(no-rel-?note)|(^---)\" |  sed 's/^\\(.*\\)/- \\1/g'\necho \"\"\nfi\n\necho \"**Full Changelog**: https://github.com/NVIDIA/nvidia-container-toolkit/compare/${previous_version}...${version}\"\necho \"\"\n"
  },
  {
    "path": "hack/golang-version.sh",
    "content": "#!/bin/bash\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nSCRIPTS_DIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\"/../hack && pwd )\"\n\nDOCKERFILE_ROOT=${SCRIPTS_DIR}/../deployments/devel\n\nGOLANG_VERSION=$(grep -E \"^FROM golang:.*$\" ${DOCKERFILE_ROOT}/Dockerfile | grep -oE \"[0-9\\.]+\")\n\necho $GOLANG_VERSION\n"
  },
  {
    "path": "hack/prepare-artifacts.sh",
    "content": "#!/bin/bash -e\n\n# Copyright (c) 2023, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nset -o pipefail\n\n# if arg1 is set, it will be used as the version number\nif [ -z \"$1\" ]; then\n  VERSION=$(awk -F= '/^VERSION/ { print $2 }' versions.mk | tr -d '[:space:]')\nelse\n  VERSION=$1\nfi\n\nif [[ -z ${VERSION} ]]; then\n  echo \"VERSION must be specified\"\n  exit 1\nfi\n\nSHA=$(git rev-parse --short=8 ${VERSION}^{commit})\n\nIMAGE_NAME=\"ghcr.io/nvidia/container-toolkit\"\nIMAGE_TAG=${SHA}-packaging\n\nREPO=\"experimental\"\nif [[ ${VERSION/rc./} == ${VERSION} ]]; then\n    REPO=\"stable\"\nfi\n\nPACKAGE_ROOT=release-${VERSION}-${REPO}\n\n./hack/pull-packages.sh \\\n    ${IMAGE_NAME}:${IMAGE_TAG} \\\n    ${PACKAGE_ROOT}\n\nPACKAGE_VERSION=${VERSION/-/\\~}\nPACKAGE_VERSION=${PACKAGE_VERSION#v}\n\ntar -czvf ${PACKAGE_ROOT}/nvidia-container-toolkit_${VERSION#v}_deb_amd64.tar.gz ${PACKAGE_ROOT}/packages/ubuntu18.04/amd64/*_${PACKAGE_VERSION}-1_amd64.deb\ntar -czvf ${PACKAGE_ROOT}/nvidia-container-toolkit_${VERSION#v}_deb_arm64.tar.gz ${PACKAGE_ROOT}/packages/ubuntu18.04/arm64/*_${PACKAGE_VERSION}-1_arm64.deb\ntar -czvf ${PACKAGE_ROOT}/nvidia-container-toolkit_${VERSION#v}_rpm_aarch64.tar.gz ${PACKAGE_ROOT}/packages/centos7/aarch64/*-${PACKAGE_VERSION}-1.aarch64.rpm\ntar -czvf ${PACKAGE_ROOT}/nvidia-container-toolkit_${VERSION#v}_rpm_x86_64.tar.gz ${PACKAGE_ROOT}/packages/centos7/x86_64/*-${PACKAGE_VERSION}-1.x86_64.rpm\n\nis_command() (\n  command -v \"$1\" >/dev/null\n)\n\nhash_sha256() (\n  TARGET=${1:-/dev/stdin}\n  if is_command gsha256sum; then\n    hash=$(gsha256sum \"$TARGET\") || return 1\n    echo \"$hash\" | cut -d ' ' -f 1\n  elif is_command sha256sum; then\n    hash=$(sha256sum \"$TARGET\") || return 1\n    echo \"$hash\" | cut -d ' ' -f 1\n  elif is_command shasum; then\n    hash=$(shasum -a 256 \"$TARGET\" 2>/dev/null) || return 1\n    echo \"$hash\" | cut -d ' ' -f 1\n  elif is_command openssl; then\n    hash=$(openssl -dst openssl dgst -sha256 \"$TARGET\") || return 1\n    echo \"$hash\" | cut -d ' ' -f a\n  else\n    log_err \"hash_sha256 unable to find command to compute sha-256 hash\"\n    return 1\n  fi\n)\n\nfiles=$( ls ${PACKAGE_ROOT}/nvidia-container-toolkit_${VERSION#v}_*.tar.gz )\n\nCHECKSUM_FILE=${PACKAGE_ROOT}/nvidia-container-toolkit_${VERSION#v}_checksums.txt\nrm -f ${CHECKSUM_FILE}\n\nset -e\nfor f in ${files}; do\n  hash_f=$(hash_sha256 $f)\n  echo \"${hash_f}  $f\" >> $CHECKSUM_FILE\ndone\n"
  },
  {
    "path": "hack/prepare-release.sh",
    "content": "#!/usr/bin/env bash\n\n# Copyright (c) 2024, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nset -o pipefail\n\nthis=`basename $0`\n\nusage () {\ncat << EOF\nPrepare for an NVIDIA Container Toolkit release\n\nUsage: $this [-h] --previous-version <previous_version> --version <version>\n\nOptions:\n  --previous-version    specify the previous version\n  --version             specify the version for this release.\n  --help/-h             show this help and exit\n\nExample:\n\n  $this --previous-version {{ PREVIOUS_VERSION}} --version {{ VERSION }}\n\nEOF\n}\n\n# Parse command line options\nprevious_version=\nversion=\nwhile [[ $# -gt 0 ]]; do\n    key=\"$1\"\n    case $key in\n        --previous-version)\n            previous_version=\"$2\"\n            shift 2\n            ;;\n        --version)\n            version=\"$2\"\n            shift 2\n            ;;\n        --help/-h)\n            usage\n            exit 0\n            ;;\n        *)  usage\n            exit 1\n            ;;\n    esac\ndone\n\n# Check that the required args were provided.\nif [ -z ${version} ]; then\n    echo -e \"ERROR: --version is required\"\n    usage\n    exit 1\nfi\n\nif [ -z ${previous_version} ]; then\n    echo -e \"ERROR: --previous-version is required\"\n    usage\n    exit 1\nfi\n\n>&2 echo \"version=$version, previous_version=$previous_version\"\n\n#\n# Modify files in the repo to point to new release\n#\n# Darwin or Linux\nDOCKER=\"docker\"\nif [[ \"$(uname)\" == \"Darwin\" ]]; then\n    SED=\"$DOCKER run -i --rm -v $(PWD):$(PWD) -w $(PWD) alpine:latest sed\"\nelse\n    SED=\"sed\"\nfi\n\nif [[ \"$FORCE\" != \"yes\" ]]; then\n    current_head=$(git rev-parse --abbrev-ref HEAD)\n    if [[ \"${current_head}\" != \"main\" && \"${current_head}\" != release-* ]]; then\n        echo \"Release scripts should be run on 'main' or on a 'release-*' branch\"\n        exit 1\n    fi\n    git fetch\n    git diff --quiet FETCH_HEAD\n    if [[ $? -ne 0 ]]; then\n        echo \"Local changes detected:\"\n        git diff FETCH_HEAD | cat\n        echo \"Exiting\"\n        exit 1\n    fi\nfi\n\n# Create a release issue.\necho \"Creating release tracking issue\"\ncat RELEASE.md | sed \"s/{{ .VERSION }}/${version}/g\" | \\\n    gh issue create -F - \\\n        -R NVIDIA/nvidia-container-toolkit \\\n        --title \"Release nvidia-container-toolkit ${version}\" \\\n        --label release \\\n        --milestone ${version}\n\necho \"Creating a version bump branch: bump-release-${version}\"\ngit checkout -f -b bump-release-${version}\n\n# Patch versions.mk\nLIB_VERSION=${version%-*}\nLIB_VERSION=${LIB_VERSION#v}\nif [[ ${version} == v*-rc.* ]]; then\n    LIB_TAG_STRING=\" ${version#*-}\"\nelse\n    LIB_TAG_STRING=\nfi\n\necho Patching versions.mk to refer to ${version}\n$SED -i \"s/^LIB_VERSION.*$/LIB_VERSION := $LIB_VERSION/\" versions.mk\n$SED -i \"s/^LIB_TAG.*$/LIB_TAG :=$LIB_TAG_STRING/\" versions.mk\n\ngit add versions.mk\ngit commit -s -m \"Bump version for ${version} release\"\n\nif [[ ${version} != *-rc.* ]]; then\n    # Patch README.md\n    echo Patching README.md to refer to ${version}\n    $SED -E -i -e \"s/([^[:space:]])$previous_version([^[:alnum:]]|$)/\\1${version}\\2/g\" README.md\n    $SED -E -i -e \"s/$pre_semver/$semver/g\" README.md\n\n    git add -u README.md\n    git commit -s -m \"Bump version to ${version} in README\"\nelse\n    echo \"Skipping README update for prerelease version\"\nfi\n\necho \"Please validated changes and create a pull request\"\n"
  },
  {
    "path": "hack/pull-packages.sh",
    "content": "#!/bin/bash\n\n# Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nfunction assert_usage() {\n    echo \"Incorrect arguments: $*\"\n    echo \"$(basename ${BASH_SOURCE[0]}) IMAGE DIST_DIR\"\n    exit 1\n}\n\nset -e -x\n\nSCRIPTS_DIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\"/../scripts && pwd )\"\nPROJECT_ROOT=\"$( cd ${SCRIPTS_DIR}/.. && pwd )\"\n\nif [[ $# -ne 2 ]]; then\n    assert_usage $*\nfi\n\nIMAGE=$1\nDIST_DIR=$2\n\nif [[ -z ${IMAGE} ]]; then\n    echo \"ERROR: IMAGE must be non-empty\"\n    exit 1\nfi\n\nif [[ -z ${DIST_DIR} ]]; then\n    echo \"ERROR: DIST_DIR must be non-empty\"\n    exit 1\nfi\n\nif [[ x\"${IGNORE_DIST_DIR}\" != x\"yes\" && -e ${DIST_DIR} ]]; then\n    echo \"ERROR: The specified DIST_DIR ${DIST_DIR} exists.\"\n    exit 1\nfi\n\necho \"Copying package files from ${IMAGE} to ${DIST_DIR}\"\nmkdir -p ${DIST_DIR}\ndocker run --rm \\\n    -v $(pwd):$(pwd) \\\n    -w $(pwd) \\\n    -u $(id -u):$(id -g) \\\n    --entrypoint=\"sh\" \\\n        ${IMAGE} \\\n        -c \"cp -p -R /artifacts/* ${DIST_DIR}\"\n"
  },
  {
    "path": "internal/config/image/builder.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage image\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\t\"github.com/opencontainers/runtime-spec/specs-go\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n)\n\ntype builder struct {\n\tCUDA\n\n\tdisableRequire bool\n}\n\n// Option is a functional option for creating a CUDA image.\ntype Option func(*builder) error\n\n// New creates a new CUDA image from the input options.\nfunc New(opt ...Option) (CUDA, error) {\n\tb := &builder{\n\t\tCUDA: CUDA{\n\t\t\tacceptEnvvarUnprivileged: true,\n\t\t},\n\t}\n\tfor _, o := range opt {\n\t\tif err := o(b); err != nil {\n\t\t\treturn CUDA{}, err\n\t\t}\n\t}\n\n\tif b.logger == nil {\n\t\tb.logger = logger.New()\n\t}\n\tif b.env == nil {\n\t\tb.env = make(map[string]string)\n\t}\n\n\treturn b.build()\n}\n\n// build creates a CUDA image from the builder.\nfunc (b builder) build() (CUDA, error) {\n\tif b.disableRequire {\n\t\tb.env[EnvVarNvidiaDisableRequire] = \"true\"\n\t}\n\n\treturn b.CUDA, nil\n}\n\nfunc WithAcceptDeviceListAsVolumeMounts(acceptDeviceListAsVolumeMounts bool) Option {\n\treturn func(b *builder) error {\n\t\tb.acceptDeviceListAsVolumeMounts = acceptDeviceListAsVolumeMounts\n\t\treturn nil\n\t}\n}\n\nfunc WithAcceptEnvvarUnprivileged(acceptEnvvarUnprivileged bool) Option {\n\treturn func(b *builder) error {\n\t\tb.acceptEnvvarUnprivileged = acceptEnvvarUnprivileged\n\t\treturn nil\n\t}\n}\n\nfunc WithAnnotations(annotations map[string]string) Option {\n\treturn func(b *builder) error {\n\t\tb.annotations = annotations\n\t\treturn nil\n\t}\n}\n\nfunc WithAnnotationsPrefixes(annotationsPrefixes ...string) Option {\n\treturn func(b *builder) error {\n\t\tb.annotationsPrefixes = annotationsPrefixes\n\t\treturn nil\n\t}\n}\n\n// WithDisableRequire sets the disable require option.\nfunc WithDisableRequire(disableRequire bool) Option {\n\treturn func(b *builder) error {\n\t\tb.disableRequire = disableRequire\n\t\treturn nil\n\t}\n}\n\n// WithEnv sets the environment variables to use when creating the CUDA image.\n// Note that this also overwrites the values set with WithEnvMap.\nfunc WithEnv(env []string) Option {\n\treturn func(b *builder) error {\n\t\tenvmap := make(map[string]string)\n\t\tfor _, e := range env {\n\t\t\tparts := strings.SplitN(e, \"=\", 2)\n\t\t\tif len(parts) != 2 {\n\t\t\t\treturn fmt.Errorf(\"invalid environment variable: %v\", e)\n\t\t\t}\n\t\t\tenvmap[parts[0]] = parts[1]\n\t\t}\n\t\treturn WithEnvMap(envmap)(b)\n\t}\n}\n\n// WithEnvMap sets the environment variable map to use when creating the CUDA image.\n// Note that this also overwrites the values set with WithEnv.\nfunc WithEnvMap(env map[string]string) Option {\n\treturn func(b *builder) error {\n\t\tb.env = env\n\t\treturn nil\n\t}\n}\n\n// WithIgnoreImexChannelRequests sets whether per-container IMEX channel\n// requests are supported.\nfunc WithIgnoreImexChannelRequests(ignoreImexChannelRequests bool) Option {\n\treturn func(b *builder) error {\n\t\tb.ignoreImexChannelRequests = ignoreImexChannelRequests\n\t\treturn nil\n\t}\n}\n\n// WithLogger sets the logger to use when creating the CUDA image.\nfunc WithLogger(logger logger.Interface) Option {\n\treturn func(b *builder) error {\n\t\tb.logger = logger\n\t\treturn nil\n\t}\n}\n\n// WithMounts sets the mounts associated with the CUDA image.\nfunc WithMounts(mounts []specs.Mount) Option {\n\treturn func(b *builder) error {\n\t\tb.mounts = mounts\n\t\treturn nil\n\t}\n}\n\n// WithPreferredVisibleDevicesEnvVars sets the environment variables that\n// should take precedence over the default NVIDIA_VISIBLE_DEVICES.\nfunc WithPreferredVisibleDevicesEnvVars(preferredVisibleDeviceEnvVars ...string) Option {\n\treturn func(b *builder) error {\n\t\tvar normalized []string\n\t\tfor _, e := range preferredVisibleDeviceEnvVars {\n\t\t\tcandidates := strings.Split(e, \",\")\n\t\t\tfor _, c := range candidates {\n\t\t\t\ttrimmed := strings.TrimSpace(c)\n\t\t\t\tif len(trimmed) > 0 {\n\t\t\t\t\tnormalized = append(normalized, trimmed)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tb.preferredVisibleDeviceEnvVars = normalized\n\t\treturn nil\n\t}\n}\n\n// WithPrivileged sets whether an image is privileged or not.\nfunc WithPrivileged(isPrivileged bool) Option {\n\treturn func(b *builder) error {\n\t\tb.isPrivileged = isPrivileged\n\t\treturn nil\n\t}\n}\n"
  },
  {
    "path": "internal/config/image/capabilities.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage image\n\nimport (\n\t\"sort\"\n\t\"strings\"\n)\n\n// DriverCapability represents the possible values of NVIDIA_DRIVER_CAPABILITIES\ntype DriverCapability string\n\n// Constants for the supported driver capabilities\nconst (\n\tDriverCapabilityAll      DriverCapability = \"all\"\n\tDriverCapabilityNone     DriverCapability = \"none\"\n\tDriverCapabilityCompat32 DriverCapability = \"compat32\"\n\tDriverCapabilityCompute  DriverCapability = \"compute\"\n\tDriverCapabilityDisplay  DriverCapability = \"display\"\n\tDriverCapabilityGraphics DriverCapability = \"graphics\"\n\tDriverCapabilityNgx      DriverCapability = \"ngx\"\n\tDriverCapabilityUtility  DriverCapability = \"utility\"\n\tDriverCapabilityVideo    DriverCapability = \"video\"\n)\n\nvar (\n\tdriverCapabilitiesNone = NewDriverCapabilities()\n\tdriverCapabilitiesAll  = NewDriverCapabilities(\"all\")\n\n\t// DefaultDriverCapabilities sets the value for driver capabilities if no value is set.\n\tDefaultDriverCapabilities = NewDriverCapabilities(\"utility,compute\")\n\t// SupportedDriverCapabilities defines the set of all supported driver capabilities.\n\tSupportedDriverCapabilities = NewDriverCapabilities(\"compute,compat32,graphics,utility,video,display,ngx\")\n)\n\n// NewDriverCapabilities creates a set of driver capabilities from the specified capabilities\nfunc NewDriverCapabilities(capabilities ...string) DriverCapabilities {\n\tdc := make(DriverCapabilities)\n\tfor _, capability := range capabilities {\n\t\tfor _, c := range strings.Split(capability, \",\") {\n\t\t\ttrimmed := strings.TrimSpace(c)\n\t\t\tif trimmed == \"\" {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tdc[DriverCapability(trimmed)] = true\n\t\t}\n\t}\n\treturn dc\n}\n\n// DriverCapabilities represents the NVIDIA_DRIVER_CAPABILITIES set for the specified image.\ntype DriverCapabilities map[DriverCapability]bool\n\n// Has check whether the specified capability is selected.\nfunc (c DriverCapabilities) Has(capability DriverCapability) bool {\n\tif c.IsAll() {\n\t\treturn true\n\t}\n\treturn c[capability]\n}\n\n// Any checks whether any of the specified capabilities are set\nfunc (c DriverCapabilities) Any(capabilities ...DriverCapability) bool {\n\tif c.IsAll() {\n\t\treturn true\n\t}\n\tfor _, cap := range capabilities {\n\t\tif c.Has(cap) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// List returns the list of driver capabilities.\n// The list is sorted.\nfunc (c DriverCapabilities) List() []string {\n\tvar capabilities []string\n\tfor capability := range c {\n\t\tcapabilities = append(capabilities, string(capability))\n\t}\n\tsort.Strings(capabilities)\n\treturn capabilities\n}\n\n// String returns the string repesentation of the driver capabilities.\nfunc (c DriverCapabilities) String() string {\n\tif c.IsAll() {\n\t\treturn \"all\"\n\t}\n\treturn strings.Join(c.List(), \",\")\n}\n\n// IsAll indicates whether the set of capabilities is `all`\nfunc (c DriverCapabilities) IsAll() bool {\n\treturn c[DriverCapabilityAll]\n}\n\n// Intersection returns a new set which includes the item in BOTH d and s2.\n// For example: d = {a1, a2} s2 = {a2, a3} s1.Intersection(s2) = {a2}\nfunc (c DriverCapabilities) Intersection(s2 DriverCapabilities) DriverCapabilities {\n\tif s2.IsAll() {\n\t\treturn c\n\t}\n\tif c.IsAll() {\n\t\treturn s2\n\t}\n\n\tintersection := make(DriverCapabilities)\n\tfor capability := range s2 {\n\t\tif c[capability] {\n\t\t\tintersection[capability] = true\n\t\t}\n\t}\n\n\treturn intersection\n}\n\n// IsSuperset returns true if and only if d is a superset of s2.\nfunc (c DriverCapabilities) IsSuperset(s2 DriverCapabilities) bool {\n\tif c.IsAll() {\n\t\treturn true\n\t}\n\n\tfor capability := range s2 {\n\t\tif !c[capability] {\n\t\t\treturn false\n\t\t}\n\t}\n\n\treturn true\n}\n"
  },
  {
    "path": "internal/config/image/capabilities_test.go",
    "content": "/**\n# Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage image\n\nimport (\n\t\"fmt\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestDriverCapabilitiesIntersection(t *testing.T) {\n\ttestCases := []struct {\n\t\tcapabilities          DriverCapabilities\n\t\tsupportedCapabilities DriverCapabilities\n\t\texpectedIntersection  DriverCapabilities\n\t}{\n\t\t{\n\t\t\tcapabilities:          driverCapabilitiesNone,\n\t\t\tsupportedCapabilities: driverCapabilitiesNone,\n\t\t\texpectedIntersection:  driverCapabilitiesNone,\n\t\t},\n\t\t{\n\t\t\tcapabilities:          driverCapabilitiesAll,\n\t\t\tsupportedCapabilities: driverCapabilitiesNone,\n\t\t\texpectedIntersection:  driverCapabilitiesNone,\n\t\t},\n\t\t{\n\t\t\tcapabilities:          driverCapabilitiesAll,\n\t\t\tsupportedCapabilities: SupportedDriverCapabilities,\n\t\t\texpectedIntersection:  SupportedDriverCapabilities,\n\t\t},\n\t\t{\n\t\t\tcapabilities:          SupportedDriverCapabilities,\n\t\t\tsupportedCapabilities: driverCapabilitiesAll,\n\t\t\texpectedIntersection:  SupportedDriverCapabilities,\n\t\t},\n\t\t{\n\t\t\tcapabilities:          driverCapabilitiesNone,\n\t\t\tsupportedCapabilities: driverCapabilitiesAll,\n\t\t\texpectedIntersection:  driverCapabilitiesNone,\n\t\t},\n\t\t{\n\t\t\tcapabilities:          driverCapabilitiesNone,\n\t\t\tsupportedCapabilities: NewDriverCapabilities(\"cap1\"),\n\t\t\texpectedIntersection:  driverCapabilitiesNone,\n\t\t},\n\t\t{\n\t\t\tcapabilities:          NewDriverCapabilities(\"cap0,cap1\"),\n\t\t\tsupportedCapabilities: NewDriverCapabilities(\"cap1,cap0\"),\n\t\t\texpectedIntersection:  NewDriverCapabilities(\"cap0,cap1\"),\n\t\t},\n\t\t{\n\t\t\tcapabilities:          DefaultDriverCapabilities,\n\t\t\tsupportedCapabilities: SupportedDriverCapabilities,\n\t\t\texpectedIntersection:  DefaultDriverCapabilities,\n\t\t},\n\t\t{\n\t\t\tcapabilities:          NewDriverCapabilities(\"compute,compat32,graphics,utility,video,display\"),\n\t\t\tsupportedCapabilities: NewDriverCapabilities(\"compute,compat32,graphics,utility,video,display,ngx\"),\n\t\t\texpectedIntersection:  NewDriverCapabilities(\"compute,compat32,graphics,utility,video,display\"),\n\t\t},\n\t\t{\n\t\t\tcapabilities:          NewDriverCapabilities(\"cap1\"),\n\t\t\tsupportedCapabilities: driverCapabilitiesNone,\n\t\t\texpectedIntersection:  driverCapabilitiesNone,\n\t\t},\n\t\t{\n\t\t\tcapabilities:          NewDriverCapabilities(\"compute,compat32,graphics,utility,video,display,ngx\"),\n\t\t\tsupportedCapabilities: NewDriverCapabilities(\"compute,compat32,graphics,utility,video,display\"),\n\t\t\texpectedIntersection:  NewDriverCapabilities(\"compute,compat32,graphics,utility,video,display\"),\n\t\t},\n\t}\n\n\tfor i, tc := range testCases {\n\t\tt.Run(fmt.Sprintf(\"test case %d\", i), func(t *testing.T) {\n\t\t\tintersection := tc.supportedCapabilities.Intersection(tc.capabilities)\n\t\t\trequire.EqualValues(t, tc.expectedIntersection, intersection)\n\t\t})\n\t}\n}\n\nfunc TestDriverCapabilitiesList(t *testing.T) {\n\ttestCases := []struct {\n\t\tcapabilities DriverCapabilities\n\t\texpected     []string\n\t}{\n\t\t{\n\t\t\tcapabilities: NewDriverCapabilities(\"\"),\n\t\t},\n\t\t{\n\t\t\tcapabilities: NewDriverCapabilities(\"  \"),\n\t\t},\n\t\t{\n\t\t\tcapabilities: NewDriverCapabilities(\",\"),\n\t\t},\n\t\t{\n\t\t\tcapabilities: NewDriverCapabilities(\",cap\"),\n\t\t\texpected:     []string{\"cap\"},\n\t\t},\n\t\t{\n\t\t\tcapabilities: NewDriverCapabilities(\"cap,\"),\n\t\t\texpected:     []string{\"cap\"},\n\t\t},\n\t\t{\n\t\t\tcapabilities: NewDriverCapabilities(\"cap0,,cap1\"),\n\t\t\texpected:     []string{\"cap0\", \"cap1\"},\n\t\t},\n\t\t{\n\t\t\tcapabilities: NewDriverCapabilities(\"cap1,cap0,cap3\"),\n\t\t\texpected:     []string{\"cap0\", \"cap1\", \"cap3\"},\n\t\t},\n\t}\n\n\tfor i, tc := range testCases {\n\t\tt.Run(fmt.Sprintf(\"test case %d\", i), func(t *testing.T) {\n\t\t\trequire.EqualValues(t, tc.expected, tc.capabilities.List())\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/config/image/cuda_image.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage image\n\nimport (\n\t\"fmt\"\n\t\"path/filepath\"\n\t\"slices\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/opencontainers/runtime-spec/specs-go\"\n\t\"golang.org/x/mod/semver\"\n\t\"tags.cncf.io/container-device-interface/pkg/parser\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n)\n\nconst (\n\tDeviceListAsVolumeMountsRoot = \"/var/run/nvidia-container-devices\"\n\n\tvolumeMountDevicePrefixCDI  = \"cdi/\"\n\tvolumeMountDevicePrefixImex = \"imex/\"\n)\n\n// CUDA represents a CUDA image that can be used for GPU computing. This wraps\n// a map of environment variable to values that can be used to perform lookups\n// such as requirements.\ntype CUDA struct {\n\tlogger logger.Interface\n\n\tannotations  map[string]string\n\tenv          map[string]string\n\tisPrivileged bool\n\tmounts       []specs.Mount\n\n\tannotationsPrefixes            []string\n\tacceptDeviceListAsVolumeMounts bool\n\tacceptEnvvarUnprivileged       bool\n\tignoreImexChannelRequests      bool\n\tpreferredVisibleDeviceEnvVars  []string\n}\n\n// NewCUDAImageFromSpec creates a CUDA image from the input OCI runtime spec.\n// The process environment is read (if present) to construc the CUDA Image.\nfunc NewCUDAImageFromSpec(spec *specs.Spec, opts ...Option) (CUDA, error) {\n\tif spec == nil {\n\t\treturn New(opts...)\n\t}\n\n\tvar env []string\n\tif spec.Process != nil {\n\t\tenv = spec.Process.Env\n\t}\n\n\tspecOpts := []Option{\n\t\tWithAnnotations(spec.Annotations),\n\t\tWithEnv(env),\n\t\tWithMounts(spec.Mounts),\n\t\tWithPrivileged(IsPrivileged((*OCISpec)(spec))),\n\t}\n\n\treturn New(append(opts, specOpts...)...)\n}\n\n// newCUDAImageFromEnv creates a CUDA image from the input environment. The environment\n// is a list of strings of the form ENVAR=VALUE.\nfunc newCUDAImageFromEnv(env []string) (CUDA, error) {\n\treturn New(WithEnv(env))\n}\n\n// Getenv returns the value of the specified environment variable.\n// If the environment variable is not specified, an empty string is returned.\nfunc (i CUDA) Getenv(key string) string {\n\treturn i.env[key]\n}\n\n// HasEnvvar checks whether the specified envvar is defined in the image.\nfunc (i CUDA) HasEnvvar(key string) bool {\n\t_, exists := i.env[key]\n\treturn exists\n}\n\n// IsLegacy returns whether the associated CUDA image is a \"legacy\" image. An\n// image is considered legacy if it has a CUDA_VERSION environment variable defined\n// and no NVIDIA_REQUIRE_CUDA environment variable defined.\nfunc (i CUDA) IsLegacy() bool {\n\tlegacyCudaVersion := i.env[EnvVarCudaVersion]\n\tcudaRequire := i.env[EnvVarNvidiaRequireCuda]\n\treturn len(legacyCudaVersion) > 0 && len(cudaRequire) == 0\n}\n\nfunc (i CUDA) IsPrivileged() bool {\n\treturn i.isPrivileged\n}\n\n// GetRequirements returns the requirements from all NVIDIA_REQUIRE_ environment\n// variables.\nfunc (i CUDA) GetRequirements() ([]string, error) {\n\tif i.HasDisableRequire() {\n\t\treturn nil, nil\n\t}\n\n\t// All variables with the \"NVIDIA_REQUIRE_\" prefix are passed to nvidia-container-cli\n\tvar requirements []string\n\tfor name, value := range i.env {\n\t\tif strings.HasPrefix(name, NvidiaRequirePrefix) && !strings.HasPrefix(name, EnvVarNvidiaRequireJetpack) {\n\t\t\trequirements = append(requirements, value)\n\t\t}\n\t}\n\tif i.IsLegacy() {\n\t\tv, err := i.legacyVersion()\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed to get version: %v\", err)\n\t\t}\n\t\tcudaRequire := fmt.Sprintf(\"cuda>=%s\", v)\n\t\trequirements = append(requirements, cudaRequire)\n\t}\n\treturn requirements, nil\n}\n\n// HasDisableRequire checks for the value of the NVIDIA_DISABLE_REQUIRE. If set\n// to a valid (true) boolean value this can be used to disable the requirement checks\nfunc (i CUDA) HasDisableRequire() bool {\n\tif disable, exists := i.env[EnvVarNvidiaDisableRequire]; exists {\n\t\t// i.logger.Debugf(\"NVIDIA_DISABLE_REQUIRE=%v; skipping requirement checks\", disable)\n\t\td, _ := strconv.ParseBool(disable)\n\t\treturn d\n\t}\n\n\treturn false\n}\n\n// devicesFromEnvvars returns the devices requested by the image through environment variables\nfunc (i CUDA) devicesFromEnvvars(envVars ...string) []string {\n\t// We concantenate all the devices from the specified env.\n\tvar isSet bool\n\tvar devices []string\n\trequested := make(map[string]bool)\n\tfor _, envVar := range envVars {\n\t\tif devs, ok := i.env[envVar]; ok {\n\t\t\tisSet = true\n\t\t\tfor _, d := range strings.Split(devs, \",\") {\n\t\t\t\ttrimmed := strings.TrimSpace(d)\n\t\t\t\tif len(trimmed) == 0 {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tdevices = append(devices, trimmed)\n\t\t\t\trequested[trimmed] = true\n\t\t\t}\n\t\t}\n\t}\n\n\t// Environment variable unset with legacy image: default to \"all\".\n\tif !isSet && len(devices) == 0 && i.IsLegacy() {\n\t\tdevices = []string{\"all\"}\n\t}\n\n\t// Environment variable unset or empty or \"void\": return nil\n\tif len(devices) == 0 || requested[\"void\"] {\n\t\tdevices = []string{\"void\"}\n\t}\n\n\treturn NewVisibleDevices(devices...).List()\n}\n\n// GetDriverCapabilities returns the requested driver capabilities.\nfunc (i CUDA) GetDriverCapabilities() DriverCapabilities {\n\tenv := i.env[EnvVarNvidiaDriverCapabilities]\n\n\tcapabilities := make(DriverCapabilities)\n\tfor _, c := range strings.Split(env, \",\") {\n\t\tcapabilities[DriverCapability(c)] = true\n\t}\n\n\treturn capabilities\n}\n\nfunc (i CUDA) legacyVersion() (string, error) {\n\tcudaVersion := i.env[EnvVarCudaVersion]\n\tmajorMinor, err := parseMajorMinorVersion(cudaVersion)\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"invalid CUDA version %v: %v\", cudaVersion, err)\n\t}\n\n\treturn majorMinor, nil\n}\n\nfunc parseMajorMinorVersion(version string) (string, error) {\n\tvVersion := \"v\" + strings.TrimPrefix(version, \"v\")\n\n\tif !semver.IsValid(vVersion) {\n\t\treturn \"\", fmt.Errorf(\"invalid version string\")\n\t}\n\n\tmajorMinor := strings.TrimPrefix(semver.MajorMinor(vVersion), \"v\")\n\tparts := strings.Split(majorMinor, \".\")\n\n\tvar err error\n\t_, err = strconv.ParseUint(parts[0], 10, 32)\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"invalid major version\")\n\t}\n\t_, err = strconv.ParseUint(parts[1], 10, 32)\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"invalid minor version\")\n\t}\n\treturn majorMinor, nil\n}\n\n// OnlyFullyQualifiedCDIDevices returns true if all devices requested in the image are requested as CDI devices/\nfunc (i CUDA) OnlyFullyQualifiedCDIDevices() bool {\n\tvar hasCDIdevice bool\n\tfor _, device := range i.VisibleDevices() {\n\t\tif !parser.IsQualifiedName(device) {\n\t\t\treturn false\n\t\t}\n\t\thasCDIdevice = true\n\t}\n\treturn hasCDIdevice\n}\n\n// visibleEnvVars returns the environment variables that are used to determine device visibility.\n// It returns the preferred environment variables that are set, or NVIDIA_VISIBLE_DEVICES if none are set.\nfunc (i CUDA) visibleEnvVars() []string {\n\tvar envVars []string\n\tfor _, envVar := range i.preferredVisibleDeviceEnvVars {\n\t\tif !i.HasEnvvar(envVar) {\n\t\t\tcontinue\n\t\t}\n\t\tenvVars = append(envVars, envVar)\n\t}\n\tif len(envVars) > 0 {\n\t\treturn envVars\n\t}\n\treturn []string{EnvVarNvidiaVisibleDevices}\n}\n\n// VisibleDevices returns a list of devices requested in the container image.\n// If volume mount requests are enabled these are returned if requested,\n// otherwise device requests through environment variables are considered.\n// In cases where environment variable requests required privileged containers,\n// such devices requests are ignored.\nfunc (i CUDA) VisibleDevices() []string {\n\t// If annotation device requests are present, these are preferred.\n\tannotationDeviceRequests := i.cdiDeviceRequestsFromAnnotations()\n\tif len(annotationDeviceRequests) > 0 {\n\t\treturn annotationDeviceRequests\n\t}\n\n\t// If enabled, try and get the device list from volume mounts first\n\tif i.acceptDeviceListAsVolumeMounts {\n\t\tvolumeMountDeviceRequests := i.visibleDevicesFromMounts()\n\t\tif len(volumeMountDeviceRequests) > 0 {\n\t\t\treturn volumeMountDeviceRequests\n\t\t}\n\t}\n\n\t// Get the Fallback to reading from the environment variable if privileges are correct\n\tenvVarDeviceRequests := i.visibleDevicesFromEnvVar()\n\tif len(envVarDeviceRequests) == 0 {\n\t\treturn nil\n\t}\n\n\t// If the container is privileged, or environment variable requests are\n\t// allowed for unprivileged containers, these devices are returned.\n\tif i.isPrivileged || i.acceptEnvvarUnprivileged {\n\t\treturn envVarDeviceRequests\n\t}\n\n\t// We log a warning if we are ignoring the environment variable requests.\n\tenvVars := i.visibleEnvVars()\n\tif len(envVars) > 0 {\n\t\ti.logger.Warningf(\"Ignoring devices requested by environment variable(s) in unprivileged container: %v\", envVars)\n\t}\n\n\treturn nil\n}\n\n// cdiDeviceRequestsFromAnnotations returns a list of devices specified in the\n// annotations.\n// Keys starting with the specified prefixes are considered and expected to\n// contain a comma-separated list of fully-qualified CDI devices names.\n// The format of the requested devices is not checked and the list is not\n// deduplicated.\nfunc (i CUDA) cdiDeviceRequestsFromAnnotations() []string {\n\tif len(i.annotationsPrefixes) == 0 || len(i.annotations) == 0 {\n\t\treturn nil\n\t}\n\n\tvar annotationKeys []string\n\tfor key := range i.annotations {\n\t\tfor _, prefix := range i.annotationsPrefixes {\n\t\t\tif strings.HasPrefix(key, prefix) {\n\t\t\t\tannotationKeys = append(annotationKeys, key)\n\t\t\t\t// There is no need to check additional prefixes since we\n\t\t\t\t// typically deduplicate devices in any case.\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\t// We sort the annotationKeys for consistent results.\n\tslices.Sort(annotationKeys)\n\n\tvar devices []string\n\tfor _, key := range annotationKeys {\n\t\tdevices = append(devices, strings.Split(i.annotations[key], \",\")...)\n\t}\n\treturn devices\n}\n\n// visibleDevicesFromEnvVar returns the set of visible devices requested through environment variables.\n// If any of the preferredVisibleDeviceEnvVars are present in the image, they\n// are used to determine the visible devices. If this is not the case, the\n// NVIDIA_VISIBLE_DEVICES environment variable is used.\nfunc (i CUDA) visibleDevicesFromEnvVar() []string {\n\tenvVars := i.visibleEnvVars()\n\treturn i.devicesFromEnvvars(envVars...)\n}\n\n// visibleDevicesFromMounts returns the set of visible devices requested as mounts.\nfunc (i CUDA) visibleDevicesFromMounts() []string {\n\tvar devices []string\n\tfor _, device := range i.requestsFromMounts() {\n\t\tswitch {\n\t\tcase strings.HasPrefix(device, volumeMountDevicePrefixImex):\n\t\t\tcontinue\n\t\tcase strings.HasPrefix(device, volumeMountDevicePrefixCDI):\n\t\t\tname, err := cdiDeviceMountRequest(device).qualifiedName()\n\t\t\tif err != nil {\n\t\t\t\ti.logger.Warningf(\"Ignoring invalid mount request for CDI device %v: %v\", device, err)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tdevices = append(devices, name)\n\t\tdefault:\n\t\t\tdevices = append(devices, device)\n\t\t}\n\n\t}\n\treturn devices\n}\n\n// requestsFromMounts returns a list of device specified as mounts.\nfunc (i CUDA) requestsFromMounts() []string {\n\troot := filepath.Clean(DeviceListAsVolumeMountsRoot)\n\tseen := make(map[string]bool)\n\tvar devices []string\n\tfor _, m := range i.mounts {\n\t\tsource := filepath.Clean(m.Source)\n\t\t// Only consider mounts who's host volume is /dev/null\n\t\tif source != \"/dev/null\" {\n\t\t\tcontinue\n\t\t}\n\n\t\tdestination := filepath.Clean(m.Destination)\n\t\tif seen[destination] {\n\t\t\tcontinue\n\t\t}\n\t\tseen[destination] = true\n\n\t\t// Only consider container mount points that begin with 'root'\n\t\tif !strings.HasPrefix(destination, root) {\n\t\t\tcontinue\n\t\t}\n\n\t\t// Grab the full path beyond 'root' and add it to the list of devices\n\t\tdevice := strings.Trim(strings.TrimPrefix(destination, root), \"/\")\n\t\tif len(device) == 0 {\n\t\t\tcontinue\n\t\t}\n\t\tdevices = append(devices, device)\n\t}\n\treturn devices\n}\n\n// a cdiDeviceMountRequest represents a CDI device requests as a mount.\n// Here the host path /dev/null is mounted to a particular path in the container.\n// The container path has the form:\n// /var/run/nvidia-container-devices/cdi/<vendor>/<class>/<device>\n// or\n// /var/run/nvidia-container-devices/cdi/<vendor>/<class>=<device>\ntype cdiDeviceMountRequest string\n\n// qualifiedName returns the fully-qualified name of the CDI device.\nfunc (m cdiDeviceMountRequest) qualifiedName() (string, error) {\n\tif !strings.HasPrefix(string(m), volumeMountDevicePrefixCDI) {\n\t\treturn \"\", fmt.Errorf(\"invalid mount CDI device request: %s\", m)\n\t}\n\n\trequestedDevice := strings.TrimPrefix(string(m), volumeMountDevicePrefixCDI)\n\tif parser.IsQualifiedName(requestedDevice) {\n\t\treturn requestedDevice, nil\n\t}\n\n\tparts := strings.SplitN(requestedDevice, \"/\", 3)\n\tif len(parts) != 3 {\n\t\treturn \"\", fmt.Errorf(\"invalid mount CDI device request: %s\", m)\n\t}\n\treturn fmt.Sprintf(\"%s/%s=%s\", parts[0], parts[1], parts[2]), nil\n}\n\nfunc (i CUDA) ImexChannelRequests() []string {\n\tif i.ignoreImexChannelRequests {\n\t\treturn nil\n\t}\n\n\t// If enabled, try and get the device list from volume mounts first\n\tif i.acceptDeviceListAsVolumeMounts {\n\t\tvolumeMountDeviceRequests := i.imexChannelsFromMounts()\n\t\tif len(volumeMountDeviceRequests) > 0 {\n\t\t\treturn volumeMountDeviceRequests\n\t\t}\n\t}\n\n\t// Get the Fallback to reading from the environment variable if privileges are correct\n\tenvVarDeviceRequests := i.imexChannelsFromEnvVar()\n\tif len(envVarDeviceRequests) == 0 {\n\t\treturn nil\n\t}\n\n\t// If the container is privileged, or environment variable requests are\n\t// allowed for unprivileged containers, these devices are returned.\n\tif i.isPrivileged || i.acceptEnvvarUnprivileged {\n\t\treturn envVarDeviceRequests\n\t}\n\n\t// We log a warning if we are ignoring the environment variable requests.\n\tenvVars := []string{EnvVarNvidiaImexChannels}\n\tif len(envVars) > 0 {\n\t\ti.logger.Warningf(\"Ignoring request by environment variable(s) in unprivileged container: %v\", envVars)\n\t}\n\n\treturn nil\n}\n\n// imexChannelsFromEnvVar returns the list of IMEX channels requested for the image.\nfunc (i CUDA) imexChannelsFromEnvVar() []string {\n\timexChannels := i.devicesFromEnvvars(EnvVarNvidiaImexChannels)\n\tif len(imexChannels) == 1 && imexChannels[0] == \"all\" {\n\t\treturn nil\n\t}\n\treturn imexChannels\n}\n\n// imexChannelsFromMounts returns the list of IMEX channels requested for the image.\nfunc (i CUDA) imexChannelsFromMounts() []string {\n\tvar channels []string\n\tfor _, mountDevice := range i.requestsFromMounts() {\n\t\tif !strings.HasPrefix(mountDevice, volumeMountDevicePrefixImex) {\n\t\t\tcontinue\n\t\t}\n\t\tchannels = append(channels, strings.TrimPrefix(mountDevice, volumeMountDevicePrefixImex))\n\t}\n\treturn channels\n}\n"
  },
  {
    "path": "internal/config/image/cuda_image_test.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage image\n\nimport (\n\t\"path/filepath\"\n\t\"testing\"\n\n\t\"github.com/opencontainers/runtime-spec/specs-go\"\n\ttestlog \"github.com/sirupsen/logrus/hooks/test\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestNewCUDAImageFromSpec(t *testing.T) {\n\tlogger, _ := testlog.NewNullLogger()\n\n\ttestCases := []struct {\n\t\tdescription string\n\t\tspec        *specs.Spec\n\t\toptions     []Option\n\t\texpected    CUDA\n\t}{\n\t\t{\n\t\t\tdescription: \"no env vars\",\n\t\t\tspec: &specs.Spec{\n\t\t\t\tProcess: &specs.Process{\n\t\t\t\t\tEnv: []string{},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: CUDA{\n\t\t\t\tlogger:                   logger,\n\t\t\t\tenv:                      map[string]string{},\n\t\t\t\tacceptEnvvarUnprivileged: true,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"NVIDIA_VISIBLE_DEVICES=all\",\n\t\t\tspec: &specs.Spec{\n\t\t\t\tProcess: &specs.Process{\n\t\t\t\t\tEnv: []string{\"NVIDIA_VISIBLE_DEVICES=all\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: CUDA{\n\t\t\t\tlogger:                   logger,\n\t\t\t\tenv:                      map[string]string{\"NVIDIA_VISIBLE_DEVICES\": \"all\"},\n\t\t\t\tacceptEnvvarUnprivileged: true,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"Spec overrides options\",\n\t\t\tspec: &specs.Spec{\n\t\t\t\tProcess: &specs.Process{\n\t\t\t\t\tEnv: []string{\"NVIDIA_VISIBLE_DEVICES=all\"},\n\t\t\t\t},\n\t\t\t\tMounts: []specs.Mount{\n\t\t\t\t\t{\n\t\t\t\t\t\tSource:      \"/spec-source\",\n\t\t\t\t\t\tDestination: \"/spec-destination\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\toptions: []Option{\n\t\t\t\tWithEnvMap(map[string]string{\"OTHER\": \"value\"}),\n\t\t\t\tWithMounts([]specs.Mount{\n\t\t\t\t\t{\n\t\t\t\t\t\tSource:      \"/option-source\",\n\t\t\t\t\t\tDestination: \"/option-destination\",\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t},\n\t\t\texpected: CUDA{\n\t\t\t\tlogger: logger,\n\t\t\t\tenv:    map[string]string{\"NVIDIA_VISIBLE_DEVICES\": \"all\"},\n\t\t\t\tmounts: []specs.Mount{\n\t\t\t\t\t{\n\t\t\t\t\t\tSource:      \"/spec-source\",\n\t\t\t\t\t\tDestination: \"/spec-destination\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tacceptEnvvarUnprivileged: true,\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\toptions := append([]Option{WithLogger(logger)}, tc.options...)\n\t\t\timage, err := NewCUDAImageFromSpec(tc.spec, options...)\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.EqualValues(t, tc.expected, image)\n\t\t})\n\t}\n}\n\nfunc TestParseMajorMinorVersionValid(t *testing.T) {\n\tvar tests = []struct {\n\t\tversion  string\n\t\texpected string\n\t}{\n\t\t{\"0\", \"0.0\"},\n\t\t{\"8\", \"8.0\"},\n\t\t{\"7.5\", \"7.5\"},\n\t\t{\"9.0.116\", \"9.0\"},\n\t\t{\"4294967295.4294967295.4294967295\", \"4294967295.4294967295\"},\n\t\t{\"v11.6\", \"11.6\"},\n\t}\n\tfor _, c := range tests {\n\t\tt.Run(c.version, func(t *testing.T) {\n\t\t\tversion, err := parseMajorMinorVersion(c.version)\n\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.Equal(t, c.expected, version)\n\t\t})\n\t}\n}\n\nfunc TestParseMajorMinorVersionInvalid(t *testing.T) {\n\tvar tests = []string{\n\t\t\"foo\",\n\t\t\"foo.5.10\",\n\t\t\"9.0.116.50\",\n\t\t\"9.0.116foo\",\n\t\t\"7.foo\",\n\t\t\"9.0.bar\",\n\t\t\"9.4294967296\",\n\t\t\"9.0.116.\",\n\t\t\"9..0\",\n\t\t\"9.\",\n\t\t\".5.10\",\n\t\t\"-9\",\n\t\t\"+9\",\n\t\t\"-9.1.116\",\n\t\t\"-9.-1.-116\",\n\t}\n\tfor _, c := range tests {\n\t\tt.Run(c, func(t *testing.T) {\n\t\t\t_, err := parseMajorMinorVersion(c)\n\t\t\trequire.Error(t, err)\n\t\t})\n\t}\n}\n\nfunc TestGetRequirements(t *testing.T) {\n\ttestCases := []struct {\n\t\tdescription  string\n\t\tenv          []string\n\t\trequirements []string\n\t}{\n\t\t{\n\t\t\tdescription:  \"NVIDIA_REQUIRE_JETPACK is ignored\",\n\t\t\tenv:          []string{\"NVIDIA_REQUIRE_JETPACK=csv-mounts=all\"},\n\t\t\trequirements: nil,\n\t\t},\n\t\t{\n\t\t\tdescription:  \"NVIDIA_REQUIRE_JETPACK_HOST_MOUNTS is ignored\",\n\t\t\tenv:          []string{\"NVIDIA_REQUIRE_JETPACK_HOST_MOUNTS=base-only\"},\n\t\t\trequirements: nil,\n\t\t},\n\t\t{\n\t\t\tdescription:  \"single requirement set\",\n\t\t\tenv:          []string{\"NVIDIA_REQUIRE_CUDA=cuda>=11.6\"},\n\t\t\trequirements: []string{\"cuda>=11.6\"},\n\t\t},\n\t\t{\n\t\t\tdescription:  \"requirements are concatenated requirement set\",\n\t\t\tenv:          []string{\"NVIDIA_REQUIRE_CUDA=cuda>=11.6\", \"NVIDIA_REQUIRE_BRAND=brand=tesla\"},\n\t\t\trequirements: []string{\"cuda>=11.6\", \"brand=tesla\"},\n\t\t},\n\t\t{\n\t\t\tdescription:  \"legacy image\",\n\t\t\tenv:          []string{\"CUDA_VERSION=11.6\"},\n\t\t\trequirements: []string{\"cuda>=11.6\"},\n\t\t},\n\t\t{\n\t\t\tdescription:  \"legacy image with additional requirement\",\n\t\t\tenv:          []string{\"CUDA_VERSION=11.6\", \"NVIDIA_REQUIRE_BRAND=brand=tesla\"},\n\t\t\trequirements: []string{\"cuda>=11.6\", \"brand=tesla\"},\n\t\t},\n\t\t{\n\t\t\tdescription:  \"NVIDIA_DISABLE_REQUIRE ignores requirements\",\n\t\t\tenv:          []string{\"NVIDIA_REQUIRE_CUDA=cuda>=11.6\", \"NVIDIA_REQUIRE_BRAND=brand=tesla\", \"NVIDIA_DISABLE_REQUIRE=true\"},\n\t\t\trequirements: []string{},\n\t\t},\n\t\t{\n\t\t\tdescription:  \"NVIDIA_DISABLE_REQUIRE ignores legacy image requirements\",\n\t\t\tenv:          []string{\"CUDA_VERSION=11.6\", \"NVIDIA_REQUIRE_BRAND=brand=tesla\", \"NVIDIA_DISABLE_REQUIRE=true\"},\n\t\t\trequirements: []string{},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\timage, err := newCUDAImageFromEnv(tc.env)\n\t\t\trequire.NoError(t, err)\n\n\t\t\trequirements, err := image.GetRequirements()\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.ElementsMatch(t, tc.requirements, requirements)\n\t\t})\n\n\t}\n}\n\nfunc TestGetDevicesFromEnvvar(t *testing.T) {\n\tenvDockerResourceGPUs := \"DOCKER_RESOURCE_GPUS\"\n\tgpuID := \"GPU-12345\"\n\tanotherGPUID := \"GPU-67890\"\n\tthirdGPUID := \"MIG-12345\"\n\n\tvar tests = []struct {\n\t\tdescription                   string\n\t\tpreferredVisibleDeviceEnvVars []string\n\t\tenv                           map[string]string\n\t\texpectedDevices               []string\n\t}{\n\t\t{\n\t\t\tdescription: \"empty env returns nil for non-legacy image\",\n\t\t},\n\t\t{\n\t\t\tdescription: \"blank NVIDIA_VISIBLE_DEVICES returns nil for non-legacy image\",\n\t\t\tenv: map[string]string{\n\t\t\t\tEnvVarNvidiaVisibleDevices: \"\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"'void' NVIDIA_VISIBLE_DEVICES returns nil for non-legacy image\",\n\t\t\tenv: map[string]string{\n\t\t\t\tEnvVarNvidiaVisibleDevices: \"void\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"'none' NVIDIA_VISIBLE_DEVICES returns empty for non-legacy image\",\n\t\t\tenv: map[string]string{\n\t\t\t\tEnvVarNvidiaVisibleDevices: \"none\",\n\t\t\t},\n\t\t\texpectedDevices: []string{\"\"},\n\t\t},\n\t\t{\n\t\t\tdescription: \"NVIDIA_VISIBLE_DEVICES set returns value for non-legacy image\",\n\t\t\tenv: map[string]string{\n\t\t\t\tEnvVarNvidiaVisibleDevices: gpuID,\n\t\t\t},\n\t\t\texpectedDevices: []string{gpuID},\n\t\t},\n\t\t{\n\t\t\tdescription: \"NVIDIA_VISIBLE_DEVICES set returns value for legacy image\",\n\t\t\tenv: map[string]string{\n\t\t\t\tEnvVarNvidiaVisibleDevices: gpuID,\n\t\t\t\tEnvVarCudaVersion:          \"legacy\",\n\t\t\t},\n\t\t\texpectedDevices: []string{gpuID},\n\t\t},\n\t\t{\n\t\t\tdescription: \"empty env returns all for legacy image\",\n\t\t\tenv: map[string]string{\n\t\t\t\tEnvVarCudaVersion: \"legacy\",\n\t\t\t},\n\t\t\texpectedDevices: []string{\"all\"},\n\t\t},\n\t\t// Add the `DOCKER_RESOURCE_GPUS` envvar and ensure that this is ignored when\n\t\t// not enabled\n\t\t{\n\t\t\tdescription: \"missing NVIDIA_VISIBLE_DEVICES returns nil for non-legacy image\",\n\t\t\tenv: map[string]string{\n\t\t\t\tenvDockerResourceGPUs: anotherGPUID,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"blank NVIDIA_VISIBLE_DEVICES returns nil for non-legacy image\",\n\t\t\tenv: map[string]string{\n\t\t\t\tEnvVarNvidiaVisibleDevices: \"\",\n\t\t\t\tenvDockerResourceGPUs:      anotherGPUID,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"'void' NVIDIA_VISIBLE_DEVICES returns nil for non-legacy image\",\n\t\t\tenv: map[string]string{\n\t\t\t\tEnvVarNvidiaVisibleDevices: \"void\",\n\t\t\t\tenvDockerResourceGPUs:      anotherGPUID,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"'none' NVIDIA_VISIBLE_DEVICES returns empty for non-legacy image\",\n\t\t\tenv: map[string]string{\n\t\t\t\tEnvVarNvidiaVisibleDevices: \"none\",\n\t\t\t\tenvDockerResourceGPUs:      anotherGPUID,\n\t\t\t},\n\t\t\texpectedDevices: []string{\"\"},\n\t\t},\n\t\t{\n\t\t\tdescription: \"NVIDIA_VISIBLE_DEVICES set returns value for non-legacy image\",\n\t\t\tenv: map[string]string{\n\t\t\t\tEnvVarNvidiaVisibleDevices: gpuID,\n\t\t\t\tenvDockerResourceGPUs:      anotherGPUID,\n\t\t\t},\n\t\t\texpectedDevices: []string{gpuID},\n\t\t},\n\t\t{\n\t\t\tdescription: \"NVIDIA_VISIBLE_DEVICES set returns value for legacy image\",\n\t\t\tenv: map[string]string{\n\t\t\t\tEnvVarNvidiaVisibleDevices: gpuID,\n\t\t\t\tenvDockerResourceGPUs:      anotherGPUID,\n\t\t\t\tEnvVarCudaVersion:          \"legacy\",\n\t\t\t},\n\t\t\texpectedDevices: []string{gpuID},\n\t\t},\n\t\t{\n\t\t\tdescription: \"empty env returns all for legacy image\",\n\t\t\tenv: map[string]string{\n\t\t\t\tenvDockerResourceGPUs: anotherGPUID,\n\t\t\t\tEnvVarCudaVersion:     \"legacy\",\n\t\t\t},\n\t\t\texpectedDevices: []string{\"all\"},\n\t\t},\n\t\t// Add the `DOCKER_RESOURCE_GPUS` envvar and ensure that this is selected when\n\t\t// enabled\n\t\t{\n\t\t\tdescription:                   \"empty env returns nil for non-legacy image\",\n\t\t\tpreferredVisibleDeviceEnvVars: []string{envDockerResourceGPUs},\n\t\t},\n\t\t{\n\t\t\tdescription:                   \"blank DOCKER_RESOURCE_GPUS returns nil for non-legacy image\",\n\t\t\tpreferredVisibleDeviceEnvVars: []string{envDockerResourceGPUs},\n\t\t\tenv: map[string]string{\n\t\t\t\tenvDockerResourceGPUs: \"\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription:                   \"'void' DOCKER_RESOURCE_GPUS returns nil for non-legacy image\",\n\t\t\tpreferredVisibleDeviceEnvVars: []string{envDockerResourceGPUs},\n\t\t\tenv: map[string]string{\n\t\t\t\tenvDockerResourceGPUs: \"void\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription:                   \"'none' DOCKER_RESOURCE_GPUS returns empty for non-legacy image\",\n\t\t\tpreferredVisibleDeviceEnvVars: []string{envDockerResourceGPUs},\n\t\t\tenv: map[string]string{\n\t\t\t\tenvDockerResourceGPUs: \"none\",\n\t\t\t},\n\t\t\texpectedDevices: []string{\"\"},\n\t\t},\n\t\t{\n\t\t\tdescription:                   \"DOCKER_RESOURCE_GPUS set returns value for non-legacy image\",\n\t\t\tpreferredVisibleDeviceEnvVars: []string{envDockerResourceGPUs},\n\t\t\tenv: map[string]string{\n\t\t\t\tenvDockerResourceGPUs: gpuID,\n\t\t\t},\n\t\t\texpectedDevices: []string{gpuID},\n\t\t},\n\t\t{\n\t\t\tdescription:                   \"DOCKER_RESOURCE_GPUS set returns value for legacy image\",\n\t\t\tpreferredVisibleDeviceEnvVars: []string{envDockerResourceGPUs},\n\t\t\tenv: map[string]string{\n\t\t\t\tenvDockerResourceGPUs: gpuID,\n\t\t\t\tEnvVarCudaVersion:     \"legacy\",\n\t\t\t},\n\t\t\texpectedDevices: []string{gpuID},\n\t\t},\n\t\t{\n\t\t\tdescription:                   \"DOCKER_RESOURCE_GPUS is selected if present\",\n\t\t\tpreferredVisibleDeviceEnvVars: []string{envDockerResourceGPUs},\n\t\t\tenv: map[string]string{\n\t\t\t\tenvDockerResourceGPUs: anotherGPUID,\n\t\t\t},\n\t\t\texpectedDevices: []string{anotherGPUID},\n\t\t},\n\t\t{\n\t\t\tdescription:                   \"DOCKER_RESOURCE_GPUS overrides NVIDIA_VISIBLE_DEVICES if present\",\n\t\t\tpreferredVisibleDeviceEnvVars: []string{envDockerResourceGPUs},\n\t\t\tenv: map[string]string{\n\t\t\t\tEnvVarNvidiaVisibleDevices: gpuID,\n\t\t\t\tenvDockerResourceGPUs:      anotherGPUID,\n\t\t\t},\n\t\t\texpectedDevices: []string{anotherGPUID},\n\t\t},\n\t\t{\n\t\t\tdescription:                   \"DOCKER_RESOURCE_GPUS_ADDITIONAL overrides NVIDIA_VISIBLE_DEVICES if present\",\n\t\t\tpreferredVisibleDeviceEnvVars: []string{\"DOCKER_RESOURCE_GPUS_ADDITIONAL\"},\n\t\t\tenv: map[string]string{\n\t\t\t\tEnvVarNvidiaVisibleDevices:        gpuID,\n\t\t\t\t\"DOCKER_RESOURCE_GPUS_ADDITIONAL\": anotherGPUID,\n\t\t\t},\n\t\t\texpectedDevices: []string{anotherGPUID},\n\t\t},\n\t\t{\n\t\t\tdescription:                   \"All available swarm resource envvars are selected and override NVIDIA_VISIBLE_DEVICES if present\",\n\t\t\tpreferredVisibleDeviceEnvVars: []string{\"DOCKER_RESOURCE_GPUS\", \"DOCKER_RESOURCE_GPUS_ADDITIONAL\"},\n\t\t\tenv: map[string]string{\n\t\t\t\tEnvVarNvidiaVisibleDevices:        gpuID,\n\t\t\t\t\"DOCKER_RESOURCE_GPUS\":            thirdGPUID,\n\t\t\t\t\"DOCKER_RESOURCE_GPUS_ADDITIONAL\": anotherGPUID,\n\t\t\t},\n\t\t\texpectedDevices: []string{thirdGPUID, anotherGPUID},\n\t\t},\n\t\t{\n\t\t\tdescription:                   \"DOCKER_RESOURCE_GPUS_ADDITIONAL or DOCKER_RESOURCE_GPUS override NVIDIA_VISIBLE_DEVICES if present\",\n\t\t\tpreferredVisibleDeviceEnvVars: []string{\"DOCKER_RESOURCE_GPUS\", \"DOCKER_RESOURCE_GPUS_ADDITIONAL\"},\n\t\t\tenv: map[string]string{\n\t\t\t\tEnvVarNvidiaVisibleDevices:        gpuID,\n\t\t\t\t\"DOCKER_RESOURCE_GPUS_ADDITIONAL\": anotherGPUID,\n\t\t\t},\n\t\t\texpectedDevices: []string{anotherGPUID},\n\t\t},\n\t}\n\n\tfor _, tc := range tests {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\timage, err := New(\n\t\t\t\tWithEnvMap(tc.env),\n\t\t\t\tWithPrivileged(true),\n\t\t\t\tWithAcceptDeviceListAsVolumeMounts(false),\n\t\t\t\tWithAcceptEnvvarUnprivileged(false),\n\t\t\t\tWithPreferredVisibleDevicesEnvVars(tc.preferredVisibleDeviceEnvVars...),\n\t\t\t)\n\n\t\t\trequire.NoError(t, err)\n\t\t\tdevices := image.visibleDevicesFromEnvVar()\n\t\t\trequire.EqualValues(t, tc.expectedDevices, devices)\n\t\t})\n\t}\n}\n\nfunc TestGetVisibleDevicesFromMounts(t *testing.T) {\n\tvar tests = []struct {\n\t\tdescription     string\n\t\tmounts          []specs.Mount\n\t\texpectedDevices []string\n\t}{\n\t\t{\n\t\t\tdescription:     \"No mounts\",\n\t\t\tmounts:          nil,\n\t\t\texpectedDevices: nil,\n\t\t},\n\t\t{\n\t\t\tdescription: \"Host path is not /dev/null\",\n\t\t\tmounts: []specs.Mount{\n\t\t\t\t{\n\t\t\t\t\tSource:      \"/not/dev/null\",\n\t\t\t\t\tDestination: filepath.Join(DeviceListAsVolumeMountsRoot, \"GPU0\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedDevices: nil,\n\t\t},\n\t\t{\n\t\t\tdescription: \"Container path is not prefixed by 'root'\",\n\t\t\tmounts: []specs.Mount{\n\t\t\t\t{\n\t\t\t\t\tSource:      \"/dev/null\",\n\t\t\t\t\tDestination: filepath.Join(\"/other/prefix\", \"GPU0\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedDevices: nil,\n\t\t},\n\t\t{\n\t\t\tdescription: \"Container path is only 'root'\",\n\t\t\tmounts: []specs.Mount{\n\t\t\t\t{\n\t\t\t\t\tSource:      \"/dev/null\",\n\t\t\t\t\tDestination: DeviceListAsVolumeMountsRoot,\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedDevices: nil,\n\t\t},\n\t\t{\n\t\t\tdescription:     \"Discover 2 devices\",\n\t\t\tmounts:          makeTestMounts(\"GPU0\", \"GPU1\"),\n\t\t\texpectedDevices: []string{\"GPU0\", \"GPU1\"},\n\t\t},\n\t\t{\n\t\t\tdescription:     \"Discover 2 devices with slashes in the name\",\n\t\t\tmounts:          makeTestMounts(\"GPU0-MIG0/0/1\", \"GPU1-MIG0/0/1\"),\n\t\t\texpectedDevices: []string{\"GPU0-MIG0/0/1\", \"GPU1-MIG0/0/1\"},\n\t\t},\n\t\t{\n\t\t\tdescription:     \"cdi devices are included\",\n\t\t\tmounts:          makeTestMounts(\"GPU0\", \"nvidia.com/gpu=all\", \"GPU1\"),\n\t\t\texpectedDevices: []string{\"GPU0\", \"nvidia.com/gpu=all\", \"GPU1\"},\n\t\t},\n\t\t{\n\t\t\tdescription:     \"imex devices are ignored\",\n\t\t\tmounts:          makeTestMounts(\"GPU0\", \"imex/0\", \"GPU1\"),\n\t\t\texpectedDevices: []string{\"GPU0\", \"GPU1\"},\n\t\t},\n\t}\n\tfor _, tc := range tests {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\timage, err := New(WithMounts(tc.mounts))\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.Equal(t, tc.expectedDevices, image.visibleDevicesFromMounts())\n\t\t})\n\t}\n}\n\nfunc TestVisibleDevices(t *testing.T) {\n\tvar tests = []struct {\n\t\tdescription                   string\n\t\tmountDevices                  []specs.Mount\n\t\tenvvarDevices                 string\n\t\tprivileged                    bool\n\t\tacceptUnprivileged            bool\n\t\tacceptMounts                  bool\n\t\tpreferredVisibleDeviceEnvVars []string\n\t\tenv                           map[string]string\n\t\texpectedDevices               []string\n\t}{\n\t\t{\n\t\t\tdescription: \"Mount devices, unprivileged, no accept unprivileged\",\n\t\t\tmountDevices: []specs.Mount{\n\t\t\t\t{\n\t\t\t\t\tSource:      \"/dev/null\",\n\t\t\t\t\tDestination: filepath.Join(DeviceListAsVolumeMountsRoot, \"GPU0\"),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tSource:      \"/dev/null\",\n\t\t\t\t\tDestination: filepath.Join(DeviceListAsVolumeMountsRoot, \"GPU1\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tenvvarDevices:      \"GPU2,GPU3\",\n\t\t\tprivileged:         false,\n\t\t\tacceptUnprivileged: false,\n\t\t\tacceptMounts:       true,\n\t\t\texpectedDevices:    []string{\"GPU0\", \"GPU1\"},\n\t\t},\n\t\t{\n\t\t\tdescription:        \"No mount devices, unprivileged, no accept unprivileged\",\n\t\t\tmountDevices:       nil,\n\t\t\tenvvarDevices:      \"GPU0,GPU1\",\n\t\t\tprivileged:         false,\n\t\t\tacceptUnprivileged: false,\n\t\t\tacceptMounts:       true,\n\t\t\texpectedDevices:    nil,\n\t\t},\n\t\t{\n\t\t\tdescription:        \"No mount devices, privileged, no accept unprivileged\",\n\t\t\tmountDevices:       nil,\n\t\t\tenvvarDevices:      \"GPU0,GPU1\",\n\t\t\tprivileged:         true,\n\t\t\tacceptUnprivileged: false,\n\t\t\tacceptMounts:       true,\n\t\t\texpectedDevices:    []string{\"GPU0\", \"GPU1\"},\n\t\t},\n\t\t{\n\t\t\tdescription:        \"No mount devices, unprivileged, accept unprivileged\",\n\t\t\tmountDevices:       nil,\n\t\t\tenvvarDevices:      \"GPU0,GPU1\",\n\t\t\tprivileged:         false,\n\t\t\tacceptUnprivileged: true,\n\t\t\tacceptMounts:       true,\n\t\t\texpectedDevices:    []string{\"GPU0\", \"GPU1\"},\n\t\t},\n\t\t{\n\t\t\tdescription: \"Mount devices, unprivileged, accept unprivileged, no accept mounts\",\n\t\t\tmountDevices: []specs.Mount{\n\t\t\t\t{\n\t\t\t\t\tSource:      \"/dev/null\",\n\t\t\t\t\tDestination: filepath.Join(DeviceListAsVolumeMountsRoot, \"GPU0\"),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tSource:      \"/dev/null\",\n\t\t\t\t\tDestination: filepath.Join(DeviceListAsVolumeMountsRoot, \"GPU1\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tenvvarDevices:      \"GPU2,GPU3\",\n\t\t\tprivileged:         false,\n\t\t\tacceptUnprivileged: true,\n\t\t\tacceptMounts:       false,\n\t\t\texpectedDevices:    []string{\"GPU2\", \"GPU3\"},\n\t\t},\n\t\t{\n\t\t\tdescription: \"Mount devices, unprivileged, no accept unprivileged, no accept mounts\",\n\t\t\tmountDevices: []specs.Mount{\n\t\t\t\t{\n\t\t\t\t\tSource:      \"/dev/null\",\n\t\t\t\t\tDestination: filepath.Join(DeviceListAsVolumeMountsRoot, \"GPU0\"),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tSource:      \"/dev/null\",\n\t\t\t\t\tDestination: filepath.Join(DeviceListAsVolumeMountsRoot, \"GPU1\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tenvvarDevices:      \"GPU2,GPU3\",\n\t\t\tprivileged:         false,\n\t\t\tacceptUnprivileged: false,\n\t\t\tacceptMounts:       false,\n\t\t\texpectedDevices:    nil,\n\t\t},\n\t\t// New test cases for visibleEnvVars functionality\n\t\t{\n\t\t\tdescription:                   \"preferred env var set and present in env, privileged\",\n\t\t\tmountDevices:                  nil,\n\t\t\tenvvarDevices:                 \"\",\n\t\t\tprivileged:                    true,\n\t\t\tacceptUnprivileged:            false,\n\t\t\tacceptMounts:                  true,\n\t\t\tpreferredVisibleDeviceEnvVars: []string{\"DOCKER_RESOURCE_GPUS\"},\n\t\t\tenv: map[string]string{\n\t\t\t\t\"DOCKER_RESOURCE_GPUS\": \"GPU-12345\",\n\t\t\t},\n\t\t\texpectedDevices: []string{\"GPU-12345\"},\n\t\t},\n\t\t{\n\t\t\tdescription:                   \"preferred env var set and present in env, unprivileged but accepted\",\n\t\t\tmountDevices:                  nil,\n\t\t\tenvvarDevices:                 \"\",\n\t\t\tprivileged:                    false,\n\t\t\tacceptUnprivileged:            true,\n\t\t\tacceptMounts:                  true,\n\t\t\tpreferredVisibleDeviceEnvVars: []string{\"DOCKER_RESOURCE_GPUS\"},\n\t\t\tenv: map[string]string{\n\t\t\t\t\"DOCKER_RESOURCE_GPUS\": \"GPU-12345\",\n\t\t\t},\n\t\t\texpectedDevices: []string{\"GPU-12345\"},\n\t\t},\n\t\t{\n\t\t\tdescription:                   \"preferred env var set and present in env, unprivileged and not accepted\",\n\t\t\tmountDevices:                  nil,\n\t\t\tenvvarDevices:                 \"\",\n\t\t\tprivileged:                    false,\n\t\t\tacceptUnprivileged:            false,\n\t\t\tacceptMounts:                  true,\n\t\t\tpreferredVisibleDeviceEnvVars: []string{\"DOCKER_RESOURCE_GPUS\"},\n\t\t\tenv: map[string]string{\n\t\t\t\t\"DOCKER_RESOURCE_GPUS\": \"GPU-12345\",\n\t\t\t},\n\t\t\texpectedDevices: nil,\n\t\t},\n\t\t{\n\t\t\tdescription:                   \"multiple preferred env vars, both present, privileged\",\n\t\t\tmountDevices:                  nil,\n\t\t\tenvvarDevices:                 \"\",\n\t\t\tprivileged:                    true,\n\t\t\tacceptUnprivileged:            false,\n\t\t\tacceptMounts:                  true,\n\t\t\tpreferredVisibleDeviceEnvVars: []string{\"DOCKER_RESOURCE_GPUS\", \"DOCKER_RESOURCE_GPUS_ADDITIONAL\"},\n\t\t\tenv: map[string]string{\n\t\t\t\t\"DOCKER_RESOURCE_GPUS\":            \"GPU-12345\",\n\t\t\t\t\"DOCKER_RESOURCE_GPUS_ADDITIONAL\": \"GPU-67890\",\n\t\t\t},\n\t\t\texpectedDevices: []string{\"GPU-12345\", \"GPU-67890\"},\n\t\t},\n\t\t{\n\t\t\tdescription:                   \"preferred env var not present, fallback to NVIDIA_VISIBLE_DEVICES, privileged\",\n\t\t\tmountDevices:                  nil,\n\t\t\tenvvarDevices:                 \"GPU-12345\",\n\t\t\tprivileged:                    true,\n\t\t\tacceptUnprivileged:            false,\n\t\t\tacceptMounts:                  true,\n\t\t\tpreferredVisibleDeviceEnvVars: []string{\"DOCKER_RESOURCE_GPUS\"},\n\t\t\tenv: map[string]string{\n\t\t\t\tEnvVarNvidiaVisibleDevices: \"GPU-12345\",\n\t\t\t},\n\t\t\texpectedDevices: []string{\"GPU-12345\"},\n\t\t},\n\t}\n\tfor _, tc := range tests {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\t// Create env map with both NVIDIA_VISIBLE_DEVICES and any additional env vars\n\t\t\tenv := make(map[string]string)\n\t\t\tif tc.envvarDevices != \"\" {\n\t\t\t\tenv[EnvVarNvidiaVisibleDevices] = tc.envvarDevices\n\t\t\t}\n\t\t\tfor k, v := range tc.env {\n\t\t\t\tenv[k] = v\n\t\t\t}\n\n\t\t\timage, err := New(\n\t\t\t\tWithEnvMap(env),\n\t\t\t\tWithMounts(tc.mountDevices),\n\t\t\t\tWithPrivileged(tc.privileged),\n\t\t\t\tWithAcceptDeviceListAsVolumeMounts(tc.acceptMounts),\n\t\t\t\tWithAcceptEnvvarUnprivileged(tc.acceptUnprivileged),\n\t\t\t\tWithPreferredVisibleDevicesEnvVars(tc.preferredVisibleDeviceEnvVars...),\n\t\t\t)\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.Equal(t, tc.expectedDevices, image.VisibleDevices())\n\t\t})\n\t}\n}\n\nfunc TestImexChannelsFromEnvVar(t *testing.T) {\n\ttestCases := []struct {\n\t\tdescription string\n\t\tenv         []string\n\t\texpected    []string\n\t}{\n\t\t{\n\t\t\tdescription: \"no imex channels specified\",\n\t\t},\n\t\t{\n\t\t\tdescription: \"imex channel specified\",\n\t\t\tenv: []string{\n\t\t\t\t\"NVIDIA_IMEX_CHANNELS=3,4\",\n\t\t\t},\n\t\t\texpected: []string{\"3\", \"4\"},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tfor id, baseEnvvars := range map[string][]string{\"\": nil, \"legacy\": {\"CUDA_VERSION=1.2.3\"}} {\n\t\t\tt.Run(tc.description+id, func(t *testing.T) {\n\t\t\t\ti, err := newCUDAImageFromEnv(append(baseEnvvars, tc.env...))\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\tchannels := i.imexChannelsFromEnvVar()\n\t\t\t\trequire.EqualValues(t, tc.expected, channels)\n\t\t\t})\n\t\t}\n\t}\n}\n\nfunc TestCDIDeviceRequestsFromAnnotations(t *testing.T) {\n\ttestCases := []struct {\n\t\tdescription     string\n\t\tprefixes        []string\n\t\tannotations     map[string]string\n\t\texpectedDevices []string\n\t}{\n\t\t{\n\t\t\tdescription: \"no annotations\",\n\t\t},\n\t\t{\n\t\t\tdescription: \"no matching annotations\",\n\t\t\tprefixes:    []string{\"not-prefix/\"},\n\t\t\tannotations: map[string]string{\n\t\t\t\t\"prefix/foo\": \"example.com/device=bar\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"single matching annotation\",\n\t\t\tprefixes:    []string{\"prefix/\"},\n\t\t\tannotations: map[string]string{\n\t\t\t\t\"prefix/foo\": \"example.com/device=bar\",\n\t\t\t},\n\t\t\texpectedDevices: []string{\"example.com/device=bar\"},\n\t\t},\n\t\t{\n\t\t\tdescription: \"multiple matching annotations\",\n\t\t\tprefixes:    []string{\"prefix/\", \"another-prefix/\"},\n\t\t\tannotations: map[string]string{\n\t\t\t\t\"prefix/foo\":         \"example.com/device=bar\",\n\t\t\t\t\"another-prefix/bar\": \"example.com/device=baz\",\n\t\t\t},\n\t\t\texpectedDevices: []string{\"example.com/device=bar\", \"example.com/device=baz\"},\n\t\t},\n\t\t{\n\t\t\tdescription: \"multiple matching annotations with duplicate devices\",\n\t\t\tprefixes:    []string{\"prefix/\", \"another-prefix/\"},\n\t\t\tannotations: map[string]string{\n\t\t\t\t\"prefix/foo\":         \"example.com/device=bar\",\n\t\t\t\t\"another-prefix/bar\": \"example.com/device=bar\",\n\t\t\t},\n\t\t\texpectedDevices: []string{\"example.com/device=bar\", \"example.com/device=bar\"},\n\t\t},\n\t\t{\n\t\t\tdescription: \"invalid devices are returned as is\",\n\t\t\tprefixes:    []string{\"prefix/\"},\n\t\t\tannotations: map[string]string{\n\t\t\t\t\"prefix/foo\": \"example.com/device\",\n\t\t\t},\n\t\t\texpectedDevices: []string{\"example.com/device\"},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\timage, err := New(\n\t\t\t\tWithAnnotationsPrefixes(tc.prefixes...),\n\t\t\t\tWithAnnotations(tc.annotations),\n\t\t\t)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tdevices := image.cdiDeviceRequestsFromAnnotations()\n\t\t\trequire.ElementsMatch(t, tc.expectedDevices, devices)\n\t\t})\n\t}\n}\n\nfunc makeTestMounts(paths ...string) []specs.Mount {\n\tvar mounts []specs.Mount\n\tfor _, path := range paths {\n\t\tmount := specs.Mount{\n\t\t\tSource:      \"/dev/null\",\n\t\t\tDestination: filepath.Join(DeviceListAsVolumeMountsRoot, path),\n\t\t}\n\t\tmounts = append(mounts, mount)\n\t}\n\treturn mounts\n}\n"
  },
  {
    "path": "internal/config/image/devices.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage image\n\nimport (\n\t\"strings\"\n)\n\n// VisibleDevices represents the devices selected in a container image\n// through the NVIDIA_VISIBLE_DEVICES or other environment variables\ntype VisibleDevices interface {\n\tList() []string\n\tHas(string) bool\n}\n\nvar _ VisibleDevices = (*all)(nil)\nvar _ VisibleDevices = (*none)(nil)\nvar _ VisibleDevices = (*void)(nil)\nvar _ VisibleDevices = (*devices)(nil)\n\n// NewVisibleDevices creates a VisibleDevices based on the value of the specified envvar.\nfunc NewVisibleDevices(envvars ...string) VisibleDevices {\n\tfor _, envvar := range envvars {\n\t\tif envvar == \"all\" {\n\t\t\treturn all{}\n\t\t}\n\t\tif envvar == \"none\" {\n\t\t\treturn none{}\n\t\t}\n\t\tif envvar == \"\" || envvar == \"void\" {\n\t\t\treturn void{}\n\t\t}\n\t}\n\n\treturn newDevices(envvars...)\n}\n\ntype all struct{}\n\n// List returns [\"all\"] for all devices\nfunc (a all) List() []string {\n\treturn []string{\"all\"}\n}\n\n// Has for all devices is true for any id except the empty ID\nfunc (a all) Has(id string) bool {\n\treturn id != \"\"\n}\n\ntype none struct{}\n\n// List returns [\"\"] for the none devices\nfunc (n none) List() []string {\n\treturn []string{\"\"}\n}\n\n// Has for none devices is false for any id\nfunc (n none) Has(id string) bool {\n\treturn false\n}\n\ntype void struct {\n\tnone\n}\n\n// List returns nil for the void devices\nfunc (v void) List() []string {\n\treturn nil\n}\n\ntype devices struct {\n\tlen    int\n\tlookup map[string]int\n}\n\nfunc newDevices(idOrCommaSeparated ...string) devices {\n\tlookup := make(map[string]int)\n\n\ti := 0\n\tfor _, commaSeparated := range idOrCommaSeparated {\n\t\tfor _, id := range strings.Split(commaSeparated, \",\") {\n\t\t\tlookup[id] = i\n\t\t\ti++\n\t\t}\n\t}\n\n\td := devices{\n\t\tlen:    i,\n\t\tlookup: lookup,\n\t}\n\treturn d\n}\n\n// List returns the list of requested devices\nfunc (d devices) List() []string {\n\tlist := make([]string, d.len)\n\n\tfor id, i := range d.lookup {\n\t\tlist[i] = id\n\t}\n\n\treturn list\n}\n\n// Has checks whether the specified ID is in the set of requested devices\nfunc (d devices) Has(id string) bool {\n\tif id == \"\" {\n\t\treturn false\n\t}\n\n\t_, exist := d.lookup[id]\n\treturn exist\n}\n"
  },
  {
    "path": "internal/config/image/envvars.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage image\n\nconst (\n\tEnvVarCudaVersion              = \"CUDA_VERSION\"\n\tEnvVarNvidiaDisableRequire     = \"NVIDIA_DISABLE_REQUIRE\"\n\tEnvVarNvidiaDriverCapabilities = \"NVIDIA_DRIVER_CAPABILITIES\"\n\tEnvVarNvidiaImexChannels       = \"NVIDIA_IMEX_CHANNELS\"\n\tEnvVarNvidiaMigConfigDevices   = \"NVIDIA_MIG_CONFIG_DEVICES\"\n\tEnvVarNvidiaMigMonitorDevices  = \"NVIDIA_MIG_MONITOR_DEVICES\"\n\tEnvVarNvidiaRequireCuda        = NvidiaRequirePrefix + \"CUDA\"\n\tEnvVarNvidiaRequireJetpack     = NvidiaRequirePrefix + \"JETPACK\"\n\tEnvVarNvidiaVisibleDevices     = \"NVIDIA_VISIBLE_DEVICES\"\n\n\tNvidiaRequirePrefix = \"NVIDIA_REQUIRE_\"\n)\n"
  },
  {
    "path": "internal/config/image/privileged.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage image\n\nimport (\n\t\"github.com/opencontainers/runtime-spec/specs-go\"\n)\n\nconst (\n\tcapSysAdmin = \"CAP_SYS_ADMIN\"\n)\n\ntype CapabilitiesGetter interface {\n\tGetCapabilities() []string\n}\n\ntype OCISpec specs.Spec\n\ntype OCISpecCapabilities specs.LinuxCapabilities\n\n// IsPrivileged returns true if the container is a privileged container.\nfunc IsPrivileged(s CapabilitiesGetter) bool {\n\tif s == nil {\n\t\treturn false\n\t}\n\tfor _, c := range s.GetCapabilities() {\n\t\tif c == capSysAdmin {\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn false\n}\n\nfunc (s OCISpec) GetCapabilities() []string {\n\tif s.Process == nil || s.Process.Capabilities == nil {\n\t\treturn nil\n\t}\n\treturn (*OCISpecCapabilities)(s.Process.Capabilities).GetCapabilities()\n}\n\nfunc (c OCISpecCapabilities) GetCapabilities() []string {\n\t// We only make sure that the bounding capability set has\n\t// CAP_SYS_ADMIN. This allows us to make sure that the container was\n\t// actually started as '--privileged', but also allow non-root users to\n\t// access the privileged NVIDIA capabilities.\n\treturn c.Bounding\n}\n"
  },
  {
    "path": "internal/config/image/privileged_test.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage image\n\nimport (\n\t\"testing\"\n\n\t\"github.com/opencontainers/runtime-spec/specs-go\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestIsPrivileged(t *testing.T) {\n\tvar tests = []struct {\n\t\tspec     specs.Spec\n\t\texpected bool\n\t}{\n\t\t{\n\t\t\tspecs.Spec{\n\t\t\t\tProcess: &specs.Process{\n\t\t\t\t\tCapabilities: &specs.LinuxCapabilities{\n\t\t\t\t\t\tBounding: []string{\"CAP_SYS_ADMIN\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\ttrue,\n\t\t},\n\t\t{\n\t\t\tspecs.Spec{\n\t\t\t\tProcess: &specs.Process{\n\t\t\t\t\tCapabilities: &specs.LinuxCapabilities{\n\t\t\t\t\t\tBounding: []string{\"CAP_SYS_FOO\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tfalse,\n\t\t},\n\t}\n\tfor i, tc := range tests {\n\t\tprivileged := IsPrivileged((*OCISpec)(&tc.spec))\n\n\t\trequire.Equal(t, tc.expected, privileged, \"%d: %v\", i, tc)\n\t}\n}\n"
  },
  {
    "path": "internal/cuda/cuda.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage cuda\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/NVIDIA/go-nvml/pkg/dl\"\n)\n\n/*\n#cgo linux LDFLAGS: -Wl,--export-dynamic -Wl,--unresolved-symbols=ignore-in-object-files\n#cgo darwin LDFLAGS: -Wl,-undefined,dynamic_lookup\n\n#ifdef _WIN32\n#define CUDAAPI __stdcall\n#else\n#define CUDAAPI\n#endif\n\ntypedef int CUdevice;\n\ntypedef enum CUdevice_attribute_enum {\n    CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MAJOR = 75,\n    CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MINOR = 76\n} CUdevice_attribute;\n\ntypedef enum cudaError_enum {\n\tCUDA_SUCCESS = 0\n} CUresult;\n\nCUresult CUDAAPI cuInit(unsigned int Flags);\nCUresult CUDAAPI cuDriverGetVersion(int *driverVersion);\nCUresult CUDAAPI cuDeviceGet(CUdevice *device, int ordinal);\nCUresult CUDAAPI cuDeviceGetAttribute(int *pi, CUdevice_attribute attrib, CUdevice dev);\n*/\nimport \"C\"\n\nconst (\n\tlibraryName      = \"libcuda.so.1\"\n\tlibraryLoadFlags = dl.RTLD_LAZY | dl.RTLD_GLOBAL\n)\n\n// cuda stores a reference the cuda dynamic library\nvar lib *dl.DynamicLibrary\n\n// Version returns the CUDA version of the driver as a string or an error if this\n// cannot be determined.\nfunc Version() (string, error) {\n\tlib, err := load()\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tdefer lib.Close()\n\n\tif err := lib.Lookup(\"cuDriverGetVersion\"); err != nil {\n\t\treturn \"\", fmt.Errorf(\"failed to lookup symbol: %v\", err)\n\t}\n\n\tvar version C.int\n\tif result := C.cuDriverGetVersion(&version); result != C.CUDA_SUCCESS {\n\t\treturn \"\", fmt.Errorf(\"failed to get CUDA version: result=%v\", result)\n\t}\n\n\tmajor := version / 1000\n\tminor := version % 100 / 10\n\n\treturn fmt.Sprintf(\"%d.%d\", major, minor), nil\n}\n\n// ComputeCapability returns the CUDA compute capability of a device with the specified index as a string\n// or an error if this cannot be determined.\nfunc ComputeCapability(index int) (string, error) {\n\tlib, err := load()\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tdefer lib.Close()\n\n\tif err := lib.Lookup(\"cuInit\"); err != nil {\n\t\treturn \"\", fmt.Errorf(\"failed to lookup symbol: %v\", err)\n\t}\n\tif err := lib.Lookup(\"cuDeviceGet\"); err != nil {\n\t\treturn \"\", fmt.Errorf(\"failed to lookup symbol: %v\", err)\n\t}\n\tif err := lib.Lookup(\"cuDeviceGetAttribute\"); err != nil {\n\t\treturn \"\", fmt.Errorf(\"failed to lookup symbol: %v\", err)\n\t}\n\n\tif result := C.cuInit(C.uint(0)); result != C.CUDA_SUCCESS {\n\t\treturn \"\", fmt.Errorf(\"failed to initialize CUDA: result=%v\", result)\n\t}\n\n\tvar device C.CUdevice\n\t// NOTE: We only query the first device\n\tif result := C.cuDeviceGet(&device, C.int(index)); result != C.CUDA_SUCCESS {\n\t\treturn \"\", fmt.Errorf(\"failed to get CUDA device %v: result=%v\", 0, result)\n\t}\n\n\tvar major C.int\n\tif result := C.cuDeviceGetAttribute(&major, C.CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MAJOR, device); result != C.CUDA_SUCCESS {\n\t\treturn \"\", fmt.Errorf(\"failed to get CUDA compute capability major for device %v : result=%v\", 0, result)\n\t}\n\n\tvar minor C.int\n\tif result := C.cuDeviceGetAttribute(&minor, C.CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MINOR, device); result != C.CUDA_SUCCESS {\n\t\treturn \"\", fmt.Errorf(\"failed to get CUDA compute capability minor for device %v: result=%v\", 0, result)\n\t}\n\n\treturn fmt.Sprintf(\"%d.%d\", major, minor), nil\n}\n\nfunc load() (*dl.DynamicLibrary, error) {\n\tlib := dl.New(libraryName, libraryLoadFlags)\n\tif lib == nil {\n\t\treturn nil, fmt.Errorf(\"error instantiating DynamicLibrary for CUDA\")\n\t}\n\terr := lib.Open()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error opening DynamicLibrary for CUDA: %v\", err)\n\t}\n\n\treturn lib, nil\n}\n"
  },
  {
    "path": "internal/devices/devices.go",
    "content": "/**\n# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage devices\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\n\t\"github.com/opencontainers/cgroups/devices/config\"\n\t\"github.com/opencontainers/runc/libcontainer/devices\"\n)\n\ntype Device config.Device\n\n// DeviceFromPath is a wrapper for libcontainer/devices.DeviceFromPath.\n// It allows for overriding functionality during tests.\nfunc DeviceFromPath(path string, permissions string) (*Device, error) {\n\treturn deviceFromPathStub(path, permissions)\n}\n\nvar deviceFromPathStub = func(path string, permissions string) (*Device, error) {\n\td, err := devices.DeviceFromPath(path, permissions)\n\treturn (*Device)(d), err\n}\n\n// AssertCharDevice checks whether the specified path is a char device and returns an error if this is not the case.\nfunc AssertCharDevice(path string) error {\n\treturn assertCharDeviceStub(path)\n}\n\nvar assertCharDeviceStub = func(path string) error {\n\tinfo, err := os.Lstat(path)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"error getting info: %v\", err)\n\t}\n\tif info.Mode()&os.ModeCharDevice == 0 {\n\t\treturn fmt.Errorf(\"%v is not a char device\", path)\n\t}\n\treturn nil\n}\n\nfunc IsOverrideApplied() bool {\n\treturn isOverrideAppliedStub()\n}\n\nvar isOverrideAppliedStub = func() bool {\n\treturn false\n}\n"
  },
  {
    "path": "internal/devices/devices_mock.go",
    "content": "// Code generated by moq; DO NOT EDIT.\n// github.com/matryer/moq\n\npackage devices\n\nimport (\n\t\"sync\"\n)\n\n// Ensure, that InterfaceMock does implement Interface.\n// If this is not the case, regenerate this file with moq.\nvar _ Interface = &InterfaceMock{}\n\n// InterfaceMock is a mock implementation of Interface.\n//\n//\tfunc TestSomethingThatUsesInterface(t *testing.T) {\n//\n//\t\t// make and configure a mocked Interface\n//\t\tmockedInterface := &InterfaceMock{\n//\t\t\tAssertCharDeviceFunc: func(s string) error {\n//\t\t\t\tpanic(\"mock out the AssertCharDevice method\")\n//\t\t\t},\n//\t\t\tDeviceFromPathFunc: func(s1 string, s2 string) (*Device, error) {\n//\t\t\t\tpanic(\"mock out the DeviceFromPath method\")\n//\t\t\t},\n//\t\t\tIsOverrideAppliedFunc: func() bool {\n//\t\t\t\tpanic(\"mock out the IsOverrideApplied method\")\n//\t\t\t},\n//\t\t}\n//\n//\t\t// use mockedInterface in code that requires Interface\n//\t\t// and then make assertions.\n//\n//\t}\ntype InterfaceMock struct {\n\t// AssertCharDeviceFunc mocks the AssertCharDevice method.\n\tAssertCharDeviceFunc func(s string) error\n\n\t// DeviceFromPathFunc mocks the DeviceFromPath method.\n\tDeviceFromPathFunc func(s1 string, s2 string) (*Device, error)\n\n\t// IsOverrideAppliedFunc mocks the IsOverrideApplied method.\n\tIsOverrideAppliedFunc func() bool\n\n\t// calls tracks calls to the methods.\n\tcalls struct {\n\t\t// AssertCharDevice holds details about calls to the AssertCharDevice method.\n\t\tAssertCharDevice []struct {\n\t\t\t// S is the s argument value.\n\t\t\tS string\n\t\t}\n\t\t// DeviceFromPath holds details about calls to the DeviceFromPath method.\n\t\tDeviceFromPath []struct {\n\t\t\t// S1 is the s1 argument value.\n\t\t\tS1 string\n\t\t\t// S2 is the s2 argument value.\n\t\t\tS2 string\n\t\t}\n\t\t// IsOverrideApplied holds details about calls to the IsOverrideApplied method.\n\t\tIsOverrideApplied []struct {\n\t\t}\n\t}\n\tlockAssertCharDevice  sync.RWMutex\n\tlockDeviceFromPath    sync.RWMutex\n\tlockIsOverrideApplied sync.RWMutex\n}\n\n// AssertCharDevice calls AssertCharDeviceFunc.\nfunc (mock *InterfaceMock) AssertCharDevice(s string) error {\n\tif mock.AssertCharDeviceFunc == nil {\n\t\tpanic(\"InterfaceMock.AssertCharDeviceFunc: method is nil but Interface.AssertCharDevice was just called\")\n\t}\n\tcallInfo := struct {\n\t\tS string\n\t}{\n\t\tS: s,\n\t}\n\tmock.lockAssertCharDevice.Lock()\n\tmock.calls.AssertCharDevice = append(mock.calls.AssertCharDevice, callInfo)\n\tmock.lockAssertCharDevice.Unlock()\n\treturn mock.AssertCharDeviceFunc(s)\n}\n\n// AssertCharDeviceCalls gets all the calls that were made to AssertCharDevice.\n// Check the length with:\n//\n//\tlen(mockedInterface.AssertCharDeviceCalls())\nfunc (mock *InterfaceMock) AssertCharDeviceCalls() []struct {\n\tS string\n} {\n\tvar calls []struct {\n\t\tS string\n\t}\n\tmock.lockAssertCharDevice.RLock()\n\tcalls = mock.calls.AssertCharDevice\n\tmock.lockAssertCharDevice.RUnlock()\n\treturn calls\n}\n\n// DeviceFromPath calls DeviceFromPathFunc.\nfunc (mock *InterfaceMock) DeviceFromPath(s1 string, s2 string) (*Device, error) {\n\tif mock.DeviceFromPathFunc == nil {\n\t\tpanic(\"InterfaceMock.DeviceFromPathFunc: method is nil but Interface.DeviceFromPath was just called\")\n\t}\n\tcallInfo := struct {\n\t\tS1 string\n\t\tS2 string\n\t}{\n\t\tS1: s1,\n\t\tS2: s2,\n\t}\n\tmock.lockDeviceFromPath.Lock()\n\tmock.calls.DeviceFromPath = append(mock.calls.DeviceFromPath, callInfo)\n\tmock.lockDeviceFromPath.Unlock()\n\treturn mock.DeviceFromPathFunc(s1, s2)\n}\n\n// DeviceFromPathCalls gets all the calls that were made to DeviceFromPath.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceFromPathCalls())\nfunc (mock *InterfaceMock) DeviceFromPathCalls() []struct {\n\tS1 string\n\tS2 string\n} {\n\tvar calls []struct {\n\t\tS1 string\n\t\tS2 string\n\t}\n\tmock.lockDeviceFromPath.RLock()\n\tcalls = mock.calls.DeviceFromPath\n\tmock.lockDeviceFromPath.RUnlock()\n\treturn calls\n}\n\n// IsOverrideApplied calls IsOverrideAppliedFunc.\nfunc (mock *InterfaceMock) IsOverrideApplied() bool {\n\tif mock.IsOverrideAppliedFunc == nil {\n\t\tpanic(\"InterfaceMock.IsOverrideAppliedFunc: method is nil but Interface.IsOverrideApplied was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockIsOverrideApplied.Lock()\n\tmock.calls.IsOverrideApplied = append(mock.calls.IsOverrideApplied, callInfo)\n\tmock.lockIsOverrideApplied.Unlock()\n\treturn mock.IsOverrideAppliedFunc()\n}\n\n// IsOverrideAppliedCalls gets all the calls that were made to IsOverrideApplied.\n// Check the length with:\n//\n//\tlen(mockedInterface.IsOverrideAppliedCalls())\nfunc (mock *InterfaceMock) IsOverrideAppliedCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockIsOverrideApplied.RLock()\n\tcalls = mock.calls.IsOverrideApplied\n\tmock.lockIsOverrideApplied.RUnlock()\n\treturn calls\n}\n"
  },
  {
    "path": "internal/devices/devices_tests.go",
    "content": "/**\n# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage devices\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"os\"\n\n\t\"github.com/opencontainers/cgroups/devices/config\"\n)\n\n//go:generate moq -rm -fmt=goimports -out devices_mock.go . Interface\ntype Interface interface {\n\tDeviceFromPath(string, string) (*Device, error)\n\tAssertCharDevice(string) error\n\tIsOverrideApplied() bool\n}\n\ntype testDefaults struct{}\n\nvar _ Interface = (*testDefaults)(nil)\n\nfunc SetAllForTest() func() {\n\td := &testDefaults{}\n\treturn SetInterfaceForTests(d)\n}\n\nfunc SetInterfaceForTests(m Interface) func() {\n\tif m == nil {\n\t\treturn SetAllForTest()\n\t}\n\tfuncs := []func(){\n\t\tSetDeviceFromPathForTest(m.DeviceFromPath),\n\t\tSetAssertCharDeviceForTest(m.AssertCharDevice),\n\t\tSetIsOverrideAppliedForTest(m.IsOverrideApplied),\n\t}\n\treturn func() {\n\t\tfor _, f := range funcs {\n\t\t\tf()\n\t\t}\n\t}\n}\n\nfunc SetDeviceFromPathForTest(testFunc func(string, string) (*Device, error)) func() {\n\tcurrent := deviceFromPathStub\n\tdeviceFromPathStub = testFunc\n\treturn func() {\n\t\tdeviceFromPathStub = current\n\t}\n}\n\nfunc SetAssertCharDeviceForTest(testFunc func(string) error) func() {\n\tcurrent := assertCharDeviceStub\n\tassertCharDeviceStub = testFunc\n\treturn func() {\n\t\tassertCharDeviceStub = current\n\t}\n}\n\nfunc SetIsOverrideAppliedForTest(testFunc func() bool) func() {\n\tcurrent := isOverrideAppliedStub\n\tisOverrideAppliedStub = testFunc\n\treturn func() {\n\t\tisOverrideAppliedStub = current\n\t}\n}\n\ntype testDevice struct {\n\tDevice\n}\n\nfunc (t *testDevice) load() error {\n\tdeviceFile, err := os.Open(t.Path)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer deviceFile.Close()\n\n\tdecoder := json.NewDecoder(deviceFile)\n\treturn decoder.Decode(&t)\n}\n\nfunc (t *testDefaults) DeviceFromPath(path string, permissions string) (*Device, error) {\n\tdevice := testDevice{\n\t\tDevice: Device{\n\t\t\tPath: path,\n\t\t\tRule: config.Rule{\n\t\t\t\tPermissions: config.Permissions(permissions),\n\t\t\t},\n\t\t},\n\t}\n\n\tif err := device.load(); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &device.Device, nil\n}\n\nfunc (t *testDefaults) AssertCharDevice(path string) error {\n\tinfo, err := os.Stat(path)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"error getting info for %v: %v\", path, err)\n\t}\n\n\tif info.IsDir() {\n\t\treturn fmt.Errorf(\"specified path '%v' is a directory\", path)\n\t}\n\n\treturn nil\n}\n\nfunc (t *testDefaults) IsOverrideApplied() bool {\n\treturn true\n}\n"
  },
  {
    "path": "internal/discover/cache.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage discover\n\nimport \"sync\"\n\ntype cache struct {\n\td Discover\n\n\tsync.Mutex\n\tdevices []Device\n\tenvVars []EnvVar\n\thooks   []Hook\n\tmounts  []Mount\n}\n\nvar _ Discover = (*cache)(nil)\n\n// WithCache decorates the specified disoverer with a cache.\nfunc WithCache(d Discover) Discover {\n\tif d == nil {\n\t\treturn None{}\n\t}\n\treturn &cache{d: d}\n}\n\nfunc (c *cache) Devices() ([]Device, error) {\n\tc.Lock()\n\tdefer c.Unlock()\n\n\tif c.devices == nil {\n\t\tdevices, err := c.d.Devices()\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tc.devices = devices\n\t}\n\treturn c.devices, nil\n}\n\nfunc (c *cache) EnvVars() ([]EnvVar, error) {\n\tc.Lock()\n\tdefer c.Unlock()\n\n\tif c.envVars == nil {\n\t\tenvVars, err := c.d.EnvVars()\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tc.envVars = envVars\n\t}\n\treturn c.envVars, nil\n}\n\nfunc (c *cache) Hooks() ([]Hook, error) {\n\tc.Lock()\n\tdefer c.Unlock()\n\n\tif c.hooks == nil {\n\t\thooks, err := c.d.Hooks()\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tc.hooks = hooks\n\t}\n\treturn c.hooks, nil\n}\n\nfunc (c *cache) Mounts() ([]Mount, error) {\n\tc.Lock()\n\tdefer c.Unlock()\n\n\tif c.mounts == nil {\n\t\tmounts, err := c.d.Mounts()\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tc.mounts = mounts\n\t}\n\treturn c.mounts, nil\n}\n"
  },
  {
    "path": "internal/discover/char_devices.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage discover\n\nimport (\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/lookup\"\n)\n\n// charDevices is a discover for a list of character devices\ntype charDevices mounts\n\nvar _ Discover = (*charDevices)(nil)\n\n// NewCharDeviceDiscoverer creates a discoverer which locates the specified set of device nodes.\nfunc NewCharDeviceDiscoverer(logger logger.Interface, devRoot string, devices []string) Discover {\n\tlocator := lookup.NewCharDeviceLocator(\n\t\tlookup.WithLogger(logger),\n\t\tlookup.WithRoot(devRoot),\n\t)\n\n\treturn (*charDevices)(newMounts(logger, locator, devRoot, devices))\n}\n\n// Mounts returns the discovered mounts for the charDevices.\n// Since this explicitly specifies a device list, the mounts are nil.\nfunc (d *charDevices) Mounts() ([]Mount, error) {\n\treturn nil, nil\n}\n\n// Devices returns the discovered devices for the charDevices.\n// Here the device nodes are first discovered as mounts and these are converted to devices.\nfunc (d *charDevices) Devices() ([]Device, error) {\n\tdevicesAsMounts, err := (*mounts)(d).Mounts()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tvar devices []Device\n\tfor _, mount := range devicesAsMounts {\n\t\tdevice := Device{\n\t\t\tHostPath: mount.HostPath,\n\t\t\tPath:     mount.Path,\n\t\t}\n\t\tdevices = append(devices, device)\n\t}\n\n\treturn devices, nil\n}\n"
  },
  {
    "path": "internal/discover/char_devices_test.go",
    "content": "/**\n# Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage discover\n\nimport (\n\t\"fmt\"\n\t\"testing\"\n\n\ttestlog \"github.com/sirupsen/logrus/hooks/test\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/lookup\"\n)\n\nfunc TestCharDevices(t *testing.T) {\n\tlogger, logHook := testlog.NewNullLogger()\n\n\ttestCases := []struct {\n\t\tdescription          string\n\t\tinput                *charDevices\n\t\texpectedMounts       []Mount\n\t\texpectedMountsError  error\n\t\texpectedDevicesError error\n\t\texpectedDevices      []Device\n\t}{\n\t\t{\n\t\t\tdescription: \"dev mounts are empty\",\n\t\t\tinput: (*charDevices)(\n\t\t\t\t&mounts{\n\t\t\t\t\tlookup: &lookup.LocatorMock{\n\t\t\t\t\t\tLocateFunc: func(string) ([]string, error) {\n\t\t\t\t\t\t\treturn []string{\"located\"}, nil\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\trequired: []string{\"required\"},\n\t\t\t\t},\n\t\t\t),\n\t\t\texpectedDevices: []Device{{Path: \"located\", HostPath: \"located\"}},\n\t\t},\n\t\t{\n\t\t\tdescription:          \"dev devices returns error for nil lookup\",\n\t\t\tinput:                &charDevices{},\n\t\t\texpectedDevicesError: fmt.Errorf(\"no lookup defined\"),\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tlogHook.Reset()\n\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\ttc.input.logger = logger\n\n\t\t\tmounts, err := tc.input.Mounts()\n\t\t\tif tc.expectedMountsError != nil {\n\t\t\t\trequire.Error(t, err)\n\t\t\t} else {\n\t\t\t\trequire.NoError(t, err)\n\t\t\t}\n\t\t\trequire.ElementsMatch(t, tc.expectedMounts, mounts)\n\n\t\t\tdevices, err := tc.input.Devices()\n\t\t\tif tc.expectedDevicesError != nil {\n\t\t\t\trequire.Error(t, err)\n\t\t\t} else {\n\t\t\t\trequire.NoError(t, err)\n\t\t\t}\n\t\t\trequire.ElementsMatch(t, tc.expectedDevices, devices)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/discover/compat_libs.go",
    "content": "package discover\n\nimport (\n\t\"strings\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n)\n\n// EnableCUDACompatHookOptions defines the options that can be specified\n// when creating the enable-cuda-compat hook.\ntype EnableCUDACompatHookOptions struct {\n\tHostDriverVersion       string\n\tHostCUDAVersion         string\n\tCUDACompatContainerRoot string\n}\n\n// NewCUDACompatHookDiscoverer creates a discoverer for a enable-cuda-compat hook.\n// This hook is responsible for setting up CUDA compatibility in the container and depends on the host driver version.\nfunc NewCUDACompatHookDiscoverer(logger logger.Interface, hookCreator HookCreator, o *EnableCUDACompatHookOptions) Discover {\n\treturn hookCreator.Create(EnableCudaCompatHook, o.args()...)\n}\n\nfunc (o *EnableCUDACompatHookOptions) args() []string {\n\tif o == nil {\n\t\treturn nil\n\t}\n\tvar args []string\n\tif o.HostDriverVersion != \"\" && !strings.Contains(o.HostDriverVersion, \"*\") {\n\t\targs = append(args, \"--host-driver-version=\"+o.HostDriverVersion)\n\t}\n\tif o.HostCUDAVersion != \"\" {\n\t\targs = append(args, \"--host-cuda-version=\"+o.HostCUDAVersion)\n\t}\n\tif o.CUDACompatContainerRoot != \"\" {\n\t\targs = append(args, \"--cuda-compat-container-root=\"+o.CUDACompatContainerRoot)\n\t}\n\treturn args\n}\n"
  },
  {
    "path": "internal/discover/discover.go",
    "content": "/*\n# Copyright (c) 2021-2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n*/\n\npackage discover\n\n// Device represents a discovered character device.\ntype Device struct {\n\tHostPath string\n\tPath     string\n}\n\n// EnvVar represents a discovered environment variable.\ntype EnvVar struct {\n\tName  string\n\tValue string\n}\n\n// Mount represents a discovered mount.\ntype Mount struct {\n\tHostPath string\n\tPath     string\n\tOptions  []string\n}\n\n// Hook represents a discovered hook.\ntype Hook struct {\n\tLifecycle string\n\tPath      string\n\tArgs      []string\n\tEnv       []string\n}\n\n// Discover defines an interface for discovering the devices, mounts, and hooks available on a system\n//\n//go:generate moq -rm -fmt=goimports -stub -out discover_mock.go . Discover\ntype Discover interface {\n\tDevices() ([]Device, error)\n\tEnvVars() ([]EnvVar, error)\n\tMounts() ([]Mount, error)\n\tHooks() ([]Hook, error)\n}\n"
  },
  {
    "path": "internal/discover/discover_mock.go",
    "content": "// Code generated by moq; DO NOT EDIT.\n// github.com/matryer/moq\n\npackage discover\n\nimport (\n\t\"sync\"\n)\n\n// Ensure, that DiscoverMock does implement Discover.\n// If this is not the case, regenerate this file with moq.\nvar _ Discover = &DiscoverMock{}\n\n// DiscoverMock is a mock implementation of Discover.\n//\n//\tfunc TestSomethingThatUsesDiscover(t *testing.T) {\n//\n//\t\t// make and configure a mocked Discover\n//\t\tmockedDiscover := &DiscoverMock{\n//\t\t\tDevicesFunc: func() ([]Device, error) {\n//\t\t\t\tpanic(\"mock out the Devices method\")\n//\t\t\t},\n//\t\t\tEnvVarsFunc: func() ([]EnvVar, error) {\n//\t\t\t\tpanic(\"mock out the EnvVars method\")\n//\t\t\t},\n//\t\t\tHooksFunc: func() ([]Hook, error) {\n//\t\t\t\tpanic(\"mock out the Hooks method\")\n//\t\t\t},\n//\t\t\tMountsFunc: func() ([]Mount, error) {\n//\t\t\t\tpanic(\"mock out the Mounts method\")\n//\t\t\t},\n//\t\t}\n//\n//\t\t// use mockedDiscover in code that requires Discover\n//\t\t// and then make assertions.\n//\n//\t}\ntype DiscoverMock struct {\n\t// DevicesFunc mocks the Devices method.\n\tDevicesFunc func() ([]Device, error)\n\n\t// EnvVarsFunc mocks the EnvVars method.\n\tEnvVarsFunc func() ([]EnvVar, error)\n\n\t// HooksFunc mocks the Hooks method.\n\tHooksFunc func() ([]Hook, error)\n\n\t// MountsFunc mocks the Mounts method.\n\tMountsFunc func() ([]Mount, error)\n\n\t// calls tracks calls to the methods.\n\tcalls struct {\n\t\t// Devices holds details about calls to the Devices method.\n\t\tDevices []struct {\n\t\t}\n\t\t// EnvVars holds details about calls to the EnvVars method.\n\t\tEnvVars []struct {\n\t\t}\n\t\t// Hooks holds details about calls to the Hooks method.\n\t\tHooks []struct {\n\t\t}\n\t\t// Mounts holds details about calls to the Mounts method.\n\t\tMounts []struct {\n\t\t}\n\t}\n\tlockDevices sync.RWMutex\n\tlockEnvVars sync.RWMutex\n\tlockHooks   sync.RWMutex\n\tlockMounts  sync.RWMutex\n}\n\n// Devices calls DevicesFunc.\nfunc (mock *DiscoverMock) Devices() ([]Device, error) {\n\tcallInfo := struct {\n\t}{}\n\tmock.lockDevices.Lock()\n\tmock.calls.Devices = append(mock.calls.Devices, callInfo)\n\tmock.lockDevices.Unlock()\n\tif mock.DevicesFunc == nil {\n\t\tvar (\n\t\t\tdevicesOut []Device\n\t\t\terrOut     error\n\t\t)\n\t\treturn devicesOut, errOut\n\t}\n\treturn mock.DevicesFunc()\n}\n\n// DevicesCalls gets all the calls that were made to Devices.\n// Check the length with:\n//\n//\tlen(mockedDiscover.DevicesCalls())\nfunc (mock *DiscoverMock) DevicesCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockDevices.RLock()\n\tcalls = mock.calls.Devices\n\tmock.lockDevices.RUnlock()\n\treturn calls\n}\n\n// EnvVars calls EnvVarsFunc.\nfunc (mock *DiscoverMock) EnvVars() ([]EnvVar, error) {\n\tcallInfo := struct {\n\t}{}\n\tmock.lockEnvVars.Lock()\n\tmock.calls.EnvVars = append(mock.calls.EnvVars, callInfo)\n\tmock.lockEnvVars.Unlock()\n\tif mock.EnvVarsFunc == nil {\n\t\tvar (\n\t\t\tenvVarsOut []EnvVar\n\t\t\terrOut     error\n\t\t)\n\t\treturn envVarsOut, errOut\n\t}\n\treturn mock.EnvVarsFunc()\n}\n\n// EnvVarsCalls gets all the calls that were made to EnvVars.\n// Check the length with:\n//\n//\tlen(mockedDiscover.EnvVarsCalls())\nfunc (mock *DiscoverMock) EnvVarsCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockEnvVars.RLock()\n\tcalls = mock.calls.EnvVars\n\tmock.lockEnvVars.RUnlock()\n\treturn calls\n}\n\n// Hooks calls HooksFunc.\nfunc (mock *DiscoverMock) Hooks() ([]Hook, error) {\n\tcallInfo := struct {\n\t}{}\n\tmock.lockHooks.Lock()\n\tmock.calls.Hooks = append(mock.calls.Hooks, callInfo)\n\tmock.lockHooks.Unlock()\n\tif mock.HooksFunc == nil {\n\t\tvar (\n\t\t\thooksOut []Hook\n\t\t\terrOut   error\n\t\t)\n\t\treturn hooksOut, errOut\n\t}\n\treturn mock.HooksFunc()\n}\n\n// HooksCalls gets all the calls that were made to Hooks.\n// Check the length with:\n//\n//\tlen(mockedDiscover.HooksCalls())\nfunc (mock *DiscoverMock) HooksCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockHooks.RLock()\n\tcalls = mock.calls.Hooks\n\tmock.lockHooks.RUnlock()\n\treturn calls\n}\n\n// Mounts calls MountsFunc.\nfunc (mock *DiscoverMock) Mounts() ([]Mount, error) {\n\tcallInfo := struct {\n\t}{}\n\tmock.lockMounts.Lock()\n\tmock.calls.Mounts = append(mock.calls.Mounts, callInfo)\n\tmock.lockMounts.Unlock()\n\tif mock.MountsFunc == nil {\n\t\tvar (\n\t\t\tmountsOut []Mount\n\t\t\terrOut    error\n\t\t)\n\t\treturn mountsOut, errOut\n\t}\n\treturn mock.MountsFunc()\n}\n\n// MountsCalls gets all the calls that were made to Mounts.\n// Check the length with:\n//\n//\tlen(mockedDiscover.MountsCalls())\nfunc (mock *DiscoverMock) MountsCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockMounts.RLock()\n\tcalls = mock.calls.Mounts\n\tmock.lockMounts.RUnlock()\n\treturn calls\n}\n"
  },
  {
    "path": "internal/discover/envvar.go",
    "content": "/**\n# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage discover\n\nvar _ Discover = (*EnvVar)(nil)\n\n// Devices returns an empty list of devices for a EnvVar discoverer.\nfunc (e EnvVar) Devices() ([]Device, error) {\n\treturn nil, nil\n}\n\n// EnvVars returns an empty list of envs for a EnvVar discoverer.\nfunc (e EnvVar) EnvVars() ([]EnvVar, error) {\n\treturn []EnvVar{e}, nil\n}\n\n// Mounts returns an empty list of mounts for a EnvVar discoverer.\nfunc (e EnvVar) Mounts() ([]Mount, error) {\n\treturn nil, nil\n}\n\n// Hooks allows the Hook type to also implement the Discoverer interface.\n// It returns a single hook\nfunc (e EnvVar) Hooks() ([]Hook, error) {\n\treturn nil, nil\n}\n"
  },
  {
    "path": "internal/discover/filter.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage discover\n\nimport \"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\n// Filter defines an interface for filtering discovered entities\ntype Filter interface {\n\tDeviceIsSelected(device Device) bool\n}\n\n// filtered represents a filtered discoverer\ntype filtered struct {\n\tDiscover\n\tlogger logger.Interface\n\tfilter Filter\n}\n\n// newFilteredDiscoverer creates a discoverer that applies the specified filter to the returned entities of the discoverer\nfunc newFilteredDiscoverer(logger logger.Interface, applyTo Discover, filter Filter) Discover {\n\treturn filtered{\n\t\tDiscover: applyTo,\n\t\tlogger:   logger,\n\t\tfilter:   filter,\n\t}\n}\n\n// Devices returns a filtered list of devices based on the specified filter.\nfunc (d filtered) Devices() ([]Device, error) {\n\tdevices, err := d.Discover.Devices()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif d.filter == nil {\n\t\treturn devices, nil\n\t}\n\n\tvar selected []Device\n\tfor _, device := range devices {\n\t\tif d.filter.DeviceIsSelected(device) {\n\t\t\tselected = append(selected, device)\n\t\t}\n\t\td.logger.Debugf(\"skipping device %v\", device)\n\t}\n\n\treturn selected, nil\n}\n"
  },
  {
    "path": "internal/discover/first-valid.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage discover\n\nimport \"errors\"\n\ntype firstOf []Discover\n\n// FirstValid returns a discoverer that returns the first non-error result from a list of discoverers.\nfunc FirstValid(discoverers ...Discover) Discover {\n\tvar f firstOf\n\tfor _, d := range discoverers {\n\t\tif d == nil {\n\t\t\tcontinue\n\t\t}\n\t\tf = append(f, d)\n\t}\n\treturn f\n}\n\nfunc (f firstOf) Devices() ([]Device, error) {\n\tvar errs error\n\tfor _, d := range f {\n\t\tdevices, err := d.Devices()\n\t\tif err != nil {\n\t\t\terrs = errors.Join(errs, err)\n\t\t\tcontinue\n\t\t}\n\t\treturn devices, nil\n\t}\n\treturn nil, errs\n}\n\nfunc (f firstOf) EnvVars() ([]EnvVar, error) {\n\tvar errs error\n\tfor _, d := range f {\n\t\tenvs, err := d.EnvVars()\n\t\tif err != nil {\n\t\t\terrs = errors.Join(errs, err)\n\t\t\tcontinue\n\t\t}\n\t\treturn envs, nil\n\t}\n\treturn nil, errs\n}\n\nfunc (f firstOf) Hooks() ([]Hook, error) {\n\tvar errs error\n\tfor _, d := range f {\n\t\thooks, err := d.Hooks()\n\t\tif err != nil {\n\t\t\terrs = errors.Join(errs, err)\n\t\t\tcontinue\n\t\t}\n\t\treturn hooks, nil\n\t}\n\treturn nil, errs\n}\n\nfunc (f firstOf) Mounts() ([]Mount, error) {\n\tvar errs error\n\tfor _, d := range f {\n\t\tmounts, err := d.Mounts()\n\t\tif err != nil {\n\t\t\terrs = errors.Join(errs, err)\n\t\t\tcontinue\n\t\t}\n\t\treturn mounts, nil\n\t}\n\treturn nil, nil\n}\n"
  },
  {
    "path": "internal/discover/gdrcopy.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage discover\n\nimport (\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/lookup/root\"\n)\n\nfunc NewGDRCopyDiscoverer(logger logger.Interface, driver *root.Driver) (Discover, error) {\n\treturn NewCharDeviceDiscoverer(\n\t\tlogger,\n\t\tdriver.DevRoot,\n\t\t[]string{\"/dev/gdrdrv\"},\n\t), nil\n}\n"
  },
  {
    "path": "internal/discover/gdrcopy_test.go",
    "content": "/**\n# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage discover_test\n\nimport (\n\t\"path/filepath\"\n\t\"testing\"\n\n\ttestlog \"github.com/sirupsen/logrus/hooks/test\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/devices\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/discover\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/lookup/root\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/test\"\n)\n\nfunc TestNewGDRCopyDiscoverer(t *testing.T) {\n\tlogger, _ := testlog.NewNullLogger()\n\n\tdefer devices.SetAllForTest()()\n\n\tmoduleRoot, err := test.GetModuleRoot()\n\trequire.NoError(t, err)\n\n\tlookupRoot := filepath.Join(moduleRoot, \"testdata\", \"lookup\")\n\n\ttestCases := []struct {\n\t\tdescription     string\n\t\trootfs          string\n\t\texpectedDevices []discover.Device\n\t}{\n\t\t{\n\t\t\tdescription: \"empty rootfs returns no devices\",\n\t\t\trootfs:      \"rootfs-empty\",\n\t\t},\n\t\t{\n\t\t\tdescription: \"rootfs with device nodes returns device\",\n\t\t\trootfs:      \"rootfs-1\",\n\t\t\texpectedDevices: []discover.Device{\n\t\t\t\t{Path: \"/dev/gdrdrv\", HostPath: \"/dev/gdrdrv\"},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\tdevRoot := filepath.Join(lookupRoot, tc.rootfs)\n\t\t\tdriver := root.New(root.WithDevRoot(devRoot))\n\t\t\td, err := discover.NewGDRCopyDiscoverer(logger, driver)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tdevices, err := d.Devices()\n\t\t\trequire.NoError(t, err)\n\n\t\t\trequire.EqualValues(t, tc.expectedDevices, test.StripRoot(devices, devRoot))\n\n\t\t\tmounts, err := d.Mounts()\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.Empty(t, mounts)\n\n\t\t\thooks, err := d.Hooks()\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.Empty(t, hooks)\n\n\t\t\tenvVars, err := d.EnvVars()\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.Empty(t, envVars)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/discover/gds.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage discover\n\nimport (\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/lookup/root\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/lookup\"\n)\n\ntype gdsDeviceDiscoverer struct {\n\tNone\n\tlogger  logger.Interface\n\tdevices Discover\n\tmounts  Discover\n}\n\n// NewGDSDiscoverer creates a discoverer for GPUDirect Storage devices and mounts.\nfunc NewGDSDiscoverer(logger logger.Interface, driver *root.Driver) (Discover, error) {\n\tdevices := NewCharDeviceDiscoverer(\n\t\tlogger,\n\t\tdriver.DevRoot,\n\t\t[]string{\"/dev/nvidia-fs*\"},\n\t)\n\n\tudev := NewMounts(\n\t\tlogger,\n\t\tlookup.NewDirectoryLocator(lookup.WithLogger(logger), lookup.WithRoot(driver.Root)),\n\t\tdriver.Root,\n\t\t[]string{\"/run/udev\"},\n\t)\n\n\tcufile := NewMounts(\n\t\tlogger,\n\t\tlookup.NewFileLocator(\n\t\t\tlookup.WithLogger(logger),\n\t\t\tlookup.WithRoot(driver.Root),\n\t\t),\n\t\tdriver.Root,\n\t\t[]string{\"/etc/cufile.json\"},\n\t)\n\n\td := gdsDeviceDiscoverer{\n\t\tlogger:  logger,\n\t\tdevices: devices,\n\t\tmounts:  Merge(udev, cufile),\n\t}\n\n\treturn &d, nil\n}\n\n// Devices discovers the nvidia-fs device nodes for use with GPUDirect Storage\nfunc (d *gdsDeviceDiscoverer) Devices() ([]Device, error) {\n\treturn d.devices.Devices()\n}\n\n// Mounts discovers the required mounts for GPUDirect Storage.\n// If no devices are discovered the discovered mounts are empty\nfunc (d *gdsDeviceDiscoverer) Mounts() ([]Mount, error) {\n\tdevices, err := d.Devices()\n\tif err != nil || len(devices) == 0 {\n\t\td.logger.Debugf(\"No nvidia-fs devices detected; skipping detection of mounts\")\n\t\treturn nil, nil\n\t}\n\n\treturn d.mounts.Mounts()\n}\n"
  },
  {
    "path": "internal/discover/gds_test.go",
    "content": "/**\n# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage discover_test\n\nimport (\n\t\"path/filepath\"\n\t\"testing\"\n\n\ttestlog \"github.com/sirupsen/logrus/hooks/test\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/devices\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/discover\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/lookup/root\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/test\"\n)\n\nfunc TestNewGDSDiscoverer(t *testing.T) {\n\tlogger, _ := testlog.NewNullLogger()\n\n\tdefer devices.SetAllForTest()()\n\n\tmoduleRoot, err := test.GetModuleRoot()\n\trequire.NoError(t, err)\n\n\tlookupRoot := filepath.Join(moduleRoot, \"testdata\", \"lookup\")\n\n\ttestCases := []struct {\n\t\tdescription     string\n\t\tdriverRootfs    string\n\t\tdevRootfs       string\n\t\texpectedDevices []discover.Device\n\t\texpectedMounts  []discover.Mount\n\t}{\n\t\t{\n\t\t\tdescription:  \"empty rootfs returns no devices\",\n\t\t\tdriverRootfs: \"rootfs-empty\",\n\t\t},\n\t\t{\n\t\t\tdescription:  \"single rootfs\",\n\t\t\tdriverRootfs: \"rootfs-1\",\n\t\t\texpectedDevices: []discover.Device{\n\t\t\t\t{Path: \"/dev/nvidia-fs0\", HostPath: \"/dev/nvidia-fs0\"},\n\t\t\t},\n\t\t\texpectedMounts: []discover.Mount{\n\t\t\t\t{Path: \"/run/udev\", HostPath: \"/run/udev\", Options: []string{\"ro\", \"nosuid\", \"nodev\", \"rbind\", \"rprivate\"}},\n\t\t\t\t{Path: \"/etc/cufile.json\", HostPath: \"/etc/cufile.json\", Options: []string{\"ro\", \"nosuid\", \"nodev\", \"rbind\", \"rprivate\"}},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription:  \"split rootfs\",\n\t\t\tdriverRootfs: \"rootfs-split/driver-root\",\n\t\t\tdevRootfs:    \"rootfs-split/dev-root\",\n\t\t\texpectedDevices: []discover.Device{\n\t\t\t\t{Path: \"/dev/nvidia-fs0\", HostPath: \"/dev/nvidia-fs0\"},\n\t\t\t},\n\t\t\texpectedMounts: []discover.Mount{\n\t\t\t\t{Path: \"/run/udev\", HostPath: \"/run/udev\", Options: []string{\"ro\", \"nosuid\", \"nodev\", \"rbind\", \"rprivate\"}},\n\t\t\t\t{Path: \"/etc/cufile.json\", HostPath: \"/etc/cufile.json\", Options: []string{\"ro\", \"nosuid\", \"nodev\", \"rbind\", \"rprivate\"}},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tif tc.devRootfs == \"\" {\n\t\t\ttc.devRootfs = tc.driverRootfs\n\t\t}\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\tdriverRoot := filepath.Join(lookupRoot, tc.driverRootfs)\n\t\t\tdevRoot := filepath.Join(lookupRoot, tc.devRootfs)\n\t\t\tdriver := root.New(root.WithDriverRoot(driverRoot), root.WithDevRoot(devRoot))\n\t\t\td, err := discover.NewGDSDiscoverer(logger, driver)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tdevices, err := d.Devices()\n\t\t\trequire.NoError(t, err)\n\n\t\t\trequire.EqualValues(t, tc.expectedDevices, test.StripRoot(devices, devRoot))\n\n\t\t\tmounts, err := d.Mounts()\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.EqualValues(t, tc.expectedMounts, test.StripRoot(mounts, driverRoot))\n\n\t\t\thooks, err := d.Hooks()\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.Empty(t, hooks)\n\n\t\t\tenvVars, err := d.EnvVars()\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.Empty(t, envVars)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/discover/graphics.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage discover\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"runtime\"\n\t\"strings\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/config/image\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/info/drm\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/info/proc\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/lookup/root\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/lookup\"\n)\n\n// NewDRMNodesDiscoverer returns a discoverer for the DRM device nodes associated with the specified visible devices.\n//\n// TODO: The logic for creating DRM devices should be consolidated between this\n// and the logic for generating CDI specs for a single device. This is only used\n// when applying OCI spec modifications to an incoming spec in \"legacy\" mode.\nfunc NewDRMNodesDiscoverer(logger logger.Interface, devices image.VisibleDevices, devRoot string, hookCreator HookCreator) (Discover, error) {\n\tdrmDeviceNodes, err := newDRMDeviceDiscoverer(logger, devices, devRoot)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to create DRM device discoverer: %v\", err)\n\t}\n\n\tdrmByPathSymlinks := newCreateDRMByPathSymlinks(logger, drmDeviceNodes, devRoot, hookCreator)\n\n\tdiscover := Merge(drmDeviceNodes, drmByPathSymlinks)\n\treturn discover, nil\n}\n\n// NewGraphicsMountsDiscoverer creates a discoverer for the mounts required by graphics tools such as vulkan.\nfunc NewGraphicsMountsDiscoverer(logger logger.Interface, driver *root.Driver, hookCreator HookCreator) (Discover, error) {\n\tlibraries, err := newGraphicsLibrariesDiscoverer(logger, driver, hookCreator)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to construct discoverer for graphics libraries: %w\", err)\n\t}\n\n\tconfigs := NewMounts(\n\t\tlogger,\n\t\tdriver.Configs(),\n\t\tdriver.Root,\n\t\t[]string{\n\t\t\t\"glvnd/egl_vendor.d/10_nvidia.json\",\n\t\t\t\"egl/egl_external_platform.d/15_nvidia_gbm.json\",\n\t\t\t\"egl/egl_external_platform.d/10_nvidia_wayland.json\",\n\t\t\t\"nvidia/nvoptix.bin\",\n\t\t\t\"X11/xorg.conf.d/10-nvidia.conf\",\n\t\t\t\"X11/xorg.conf.d/nvidia-drm-outputclass.conf\",\n\t\t},\n\t)\n\n\tdiscover := Merge(\n\t\tlibraries,\n\t\tconfigs,\n\t\tnewVulkanConfigsDiscover(logger, driver),\n\t)\n\n\treturn discover, nil\n}\n\n// newVulkanConfigsDiscover creates a discoverer for vulkan ICD files.\n// For these files we search the standard driver config paths as well as the\n// driver root itself. This allows us to support GKE installations where the\n// vulkan ICD files are at {{ .driverRoot }}/vulkan instead of in /etc/vulkan.\nfunc newVulkanConfigsDiscover(logger logger.Interface, driver *root.Driver) Discover {\n\tlocator := lookup.First(driver.Configs(), driver.Files())\n\n\trequired := []string{\n\t\t\"vulkan/icd.d/nvidia_icd.json\",\n\t\t\"vulkan/icd.d/nvidia_layers.json\",\n\t\t\"vulkan/implicit_layer.d/nvidia_layers.json\",\n\t}\n\t// For some RPM-based driver packages, the vulkan ICD files are installed to\n\t// /usr/share/vulkan/icd.d/nvidia_icd.%{_target_cpu}.json\n\t// We also include this in the list of candidates for the ICD file.\n\tswitch runtime.GOARCH {\n\tcase \"amd64\":\n\t\trequired = append(required, \"vulkan/icd.d/nvidia_icd.x86_64.json\")\n\tcase \"arm64\":\n\t\trequired = append(required, \"vulkan/icd.d/nvidia_icd.aarch64.json\")\n\t}\n\treturn &mountsToContainerPath{\n\t\tlogger:        logger,\n\t\tlocator:       locator,\n\t\trequired:      required,\n\t\tcontainerRoot: \"/etc\",\n\t}\n}\n\ntype graphicsDriverLibraries struct {\n\tDiscover\n\tlogger      logger.Interface\n\thookCreator HookCreator\n}\n\nvar _ Discover = (*graphicsDriverLibraries)(nil)\n\nfunc newGraphicsLibrariesDiscoverer(logger logger.Interface, driver *root.Driver, hookCreator HookCreator) (Discover, error) {\n\tcudaVersionPattern, err := driver.Version()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to get driver version: %w\", err)\n\t}\n\tcudaLibRoot, err := driver.GetDriverLibDirectory()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to get libcuda.so parent directory: %w\", err)\n\t}\n\n\tlibraries := NewMounts(\n\t\tlogger,\n\t\tdriver.Libraries(),\n\t\tdriver.Root,\n\t\t[]string{\n\t\t\t// The libnvidia-egl-gbm and libnvidia-egl-wayland libraries do not\n\t\t\t// have the RM version. Use the *.* pattern to match X.Y.Z versions.\n\t\t\t\"libnvidia-egl-gbm.so.*.*\",\n\t\t\t\"libnvidia-egl-wayland.so.*.*\",\n\t\t\t// We include the following libraries to have them available for\n\t\t\t// symlink creation below:\n\t\t\t// If CDI injection is used, these should already be detected as:\n\t\t\t// * libnvidia-allocator.so.RM_VERSION\n\t\t\t// * libnvidia-vulkan-producer.so.RM_VERSION\n\t\t\t// but need to be handled for the legacy case too.\n\t\t\t\"libnvidia-allocator.so.\" + cudaVersionPattern,\n\t\t\t\"libnvidia-vulkan-producer.so.\" + cudaVersionPattern,\n\t\t},\n\t)\n\n\txorgLibraries := NewMounts(\n\t\tlogger,\n\t\tlookup.NewFileLocator(\n\t\t\tlookup.WithLogger(logger),\n\t\t\tlookup.WithRoot(driver.Root),\n\t\t\tlookup.WithSearchPaths(buildXOrgSearchPaths(cudaLibRoot)...),\n\t\t\tlookup.WithCount(1),\n\t\t),\n\t\tdriver.Root,\n\t\t[]string{\n\t\t\t\"nvidia_drv.so\",\n\t\t\t\"libglxserver_nvidia.so.\" + cudaVersionPattern,\n\t\t},\n\t)\n\n\treturn &graphicsDriverLibraries{\n\t\tDiscover:    Merge(libraries, xorgLibraries),\n\t\tlogger:      logger,\n\t\thookCreator: hookCreator,\n\t}, nil\n}\n\n// Mounts discovers the required libraries and filters out libnvidia-allocator.so.\n// The library libnvidia-allocator.so is already handled by either the *.RM_VERSION\n// injection or by libnvidia-container. We therefore filter it out here as a\n// workaround for the case where libnvidia-container will re-mount this in the\n// container, which causes issues with shared mount propagation.\nfunc (d graphicsDriverLibraries) Mounts() ([]Mount, error) {\n\tmounts, err := d.Discover.Mounts()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to get library mounts: %v\", err)\n\t}\n\n\tvar filtered []Mount\n\tfor _, mount := range mounts {\n\t\tif d.isDriverLibrary(filepath.Base(mount.Path), \"libnvidia-allocator.so\") {\n\t\t\tcontinue\n\t\t}\n\t\tfiltered = append(filtered, mount)\n\t}\n\treturn filtered, nil\n}\n\n// Create necessary library symlinks for graphics drivers\nfunc (d graphicsDriverLibraries) Hooks() ([]Hook, error) {\n\tmounts, err := d.Discover.Mounts()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to get library mounts: %v\", err)\n\t}\n\n\tvar links []string\n\tfor _, mount := range mounts {\n\t\tdir, filename := filepath.Split(mount.Path)\n\t\tswitch {\n\t\tcase d.isDriverLibrary(filename, \"libnvidia-allocator.so\"):\n\t\t\t// gbm/nvidia-drm_gbm.so is a symlink to ../libnvidia-allocator.so.1 which\n\t\t\t// in turn symlinks to libnvidia-allocator.so.RM_VERSION.\n\t\t\t// The libnvidia-allocator.so.1 -> libnvidia-allocator.so.RM_VERSION symlink\n\t\t\t// is created when ldconfig is run against the container and there\n\t\t\t// is no explicit need to create it.\n\t\t\t// create gbm/nvidia-drm_gbm.so -> ../libnvidia-allocate.so.1 symlink\n\t\t\tlinkPath := filepath.Join(dir, \"gbm\", \"nvidia-drm_gbm.so\")\n\t\t\tlinks = append(links, fmt.Sprintf(\"%s::%s\", \"../libnvidia-allocator.so.1\", linkPath))\n\t\tcase d.isDriverLibrary(filename, \"libnvidia-vulkan-producer.so\"):\n\t\t\t// libnvidia-vulkan-producer.so is a drirect symlink to libnvidia-vulkan-producer.so.RM_VERSION\n\t\t\t// create libnvidia-vulkan-producer.so -> libnvidia-vulkan-producer.so.RM_VERSION symlink\n\t\t\tlinkPath := filepath.Join(dir, \"libnvidia-vulkan-producer.so\")\n\t\t\tlinks = append(links, fmt.Sprintf(\"%s::%s\", filename, linkPath))\n\t\tcase d.isDriverLibrary(filename, \"libglxserver_nvidia.so\"):\n\t\t\t// libglxserver_nvidia.so is a directl symlink to libglxserver_nvidia.so.RM_VERSION\n\t\t\t// create libglxserver_nvidia.so -> libglxserver_nvidia.so.RM_VERSION symlink\n\t\t\tlinkPath := filepath.Join(dir, \"libglxserver_nvidia.so\")\n\t\t\tlinks = append(links, fmt.Sprintf(\"%s::%s\", filename, linkPath))\n\t\t}\n\t}\n\tif len(links) == 0 {\n\t\treturn nil, nil\n\t}\n\n\thook := d.hookCreator.Create(\"create-symlinks\", links...)\n\n\treturn hook.Hooks()\n}\n\n// isDriverLibrary checks whether the specified filename is a specific driver library.\nfunc (d graphicsDriverLibraries) isDriverLibrary(filename string, libraryName string) bool {\n\t// TODO: Instead of `.*.*` we could use the driver version.\n\tpattern := strings.TrimSuffix(libraryName, \".\") + \".*.*\"\n\tmatch, _ := filepath.Match(pattern, filename)\n\treturn match\n}\n\n// buildXOrgSearchPaths returns the ordered list of search paths for XOrg files.\nfunc buildXOrgSearchPaths(libRoot string) []string {\n\tvar paths []string\n\tif libRoot != \"\" {\n\t\tpaths = append(paths,\n\t\t\tfilepath.Join(libRoot, \"nvidia/xorg\"),\n\t\t\tfilepath.Join(libRoot, \"xorg\", \"modules\", \"drivers\"),\n\t\t\tfilepath.Join(libRoot, \"xorg\", \"modules\", \"extensions\"),\n\t\t\tfilepath.Join(libRoot, \"xorg\", \"modules/updates\", \"drivers\"),\n\t\t\tfilepath.Join(libRoot, \"xorg\", \"modules/updates\", \"extensions\"),\n\t\t)\n\t}\n\n\treturn append(paths,\n\t\tfilepath.Join(\"/usr/lib/xorg\", \"modules\", \"drivers\"),\n\t\tfilepath.Join(\"/usr/lib/xorg\", \"modules\", \"extensions\"),\n\t\tfilepath.Join(\"/usr/lib/xorg\", \"modules/updates\", \"drivers\"),\n\t\tfilepath.Join(\"/usr/lib/xorg\", \"modules/updates\", \"extensions\"),\n\t\tfilepath.Join(\"/usr/lib64/xorg\", \"modules\", \"drivers\"),\n\t\tfilepath.Join(\"/usr/lib64/xorg\", \"modules\", \"extensions\"),\n\t\tfilepath.Join(\"/usr/lib64/xorg\", \"modules/updates\", \"drivers\"),\n\t\tfilepath.Join(\"/usr/lib64/xorg\", \"modules/updates\", \"extensions\"),\n\t\tfilepath.Join(\"/usr/X11R6/lib\", \"modules\", \"drivers\"),\n\t\tfilepath.Join(\"/usr/X11R6/lib\", \"modules\", \"extensions\"),\n\t\tfilepath.Join(\"/usr/X11R6/lib\", \"modules/updates\", \"drivers\"),\n\t\tfilepath.Join(\"/usr/X11R6/lib\", \"modules/updates\", \"extensions\"),\n\t\tfilepath.Join(\"/usr/X11R6/lib64\", \"modules\", \"drivers\"),\n\t\tfilepath.Join(\"/usr/X11R6/lib64\", \"modules\", \"extensions\"),\n\t\tfilepath.Join(\"/usr/X11R6/lib64\", \"modules/updates\", \"drivers\"),\n\t\tfilepath.Join(\"/usr/X11R6/lib64\", \"modules/updates\", \"extensions\"),\n\t)\n}\n\ntype drmDevicesByPath struct {\n\tNone\n\tlogger      logger.Interface\n\thookCreator HookCreator\n\tdevRoot     string\n\tdevicesFrom Discover\n}\n\n// newCreateDRMByPathSymlinks creates a discoverer for a hook to create the by-path symlinks for DRM devices discovered by the specified devices discoverer\nfunc newCreateDRMByPathSymlinks(logger logger.Interface, devices Discover, devRoot string, hookCreator HookCreator) Discover {\n\td := drmDevicesByPath{\n\t\tlogger:      logger,\n\t\thookCreator: hookCreator,\n\t\tdevRoot:     devRoot,\n\t\tdevicesFrom: devices,\n\t}\n\n\treturn &d\n}\n\n// Hooks returns a hook to create the symlinks from the required CSV files\nfunc (d drmDevicesByPath) Hooks() ([]Hook, error) {\n\tdevices, err := d.devicesFrom.Devices()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to discover devices for by-path symlinks: %v\", err)\n\t}\n\tif len(devices) == 0 {\n\t\treturn nil, nil\n\t}\n\tlinks, err := d.getSpecificLinkArgs(devices)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to determine specific links: %v\", err)\n\t}\n\tif len(links) == 0 {\n\t\treturn nil, nil\n\t}\n\n\thook := d.hookCreator.Create(\"create-symlinks\", links...)\n\n\treturn hook.Hooks()\n}\n\n// getSpecificLinkArgs returns the required specific links that need to be created\nfunc (d drmDevicesByPath) getSpecificLinkArgs(devices []Device) ([]string, error) {\n\tselectedDevices := make(map[string]bool)\n\tfor _, d := range devices {\n\t\tselectedDevices[filepath.Base(d.HostPath)] = true\n\t}\n\n\tlinkLocator := lookup.NewFileLocator(\n\t\tlookup.WithLogger(d.logger),\n\t\tlookup.WithRoot(d.devRoot),\n\t)\n\tcandidates, err := linkLocator.Locate(\"/dev/dri/by-path/pci-*-*\")\n\tif err != nil {\n\t\td.logger.Warningf(\"Failed to locate by-path links: %v; ignoring\", err)\n\t\treturn nil, nil\n\t}\n\n\tvar links []string\n\tfor _, c := range candidates {\n\t\tdevice, err := os.Readlink(c)\n\t\tif err != nil {\n\t\t\td.logger.Warningf(\"Failed to evaluate symlink %v; ignoring\", c)\n\t\t\tcontinue\n\t\t}\n\n\t\tif selectedDevices[filepath.Base(device)] {\n\t\t\td.logger.Debugf(\"adding device symlink %v -> %v\", c, device)\n\t\t\tlinks = append(links, fmt.Sprintf(\"%v::%v\", device, c))\n\t\t}\n\t}\n\n\treturn links, nil\n}\n\n// newDRMDeviceDiscoverer creates a discoverer for the DRM devices associated with the requested devices.\nfunc newDRMDeviceDiscoverer(logger logger.Interface, devices image.VisibleDevices, devRoot string) (Discover, error) {\n\tallDevices := NewCharDeviceDiscoverer(\n\t\tlogger,\n\t\tdevRoot,\n\t\t[]string{\n\t\t\t\"/dev/dri/card*\",\n\t\t\t\"/dev/dri/renderD*\",\n\t\t},\n\t)\n\n\tfilter, err := newDRMDeviceFilter(devices, devRoot)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to construct DRM device filter: %v\", err)\n\t}\n\n\t// We return a discoverer that applies the DRM device filter created above to all discovered DRM device nodes.\n\td := newFilteredDiscoverer(\n\t\tlogger,\n\t\tallDevices,\n\t\tfilter,\n\t)\n\n\treturn d, err\n}\n\n// newDRMDeviceFilter creates a filter that matches DRM devices nodes for the visible devices.\nfunc newDRMDeviceFilter(devices image.VisibleDevices, devRoot string) (Filter, error) {\n\tgpuInformationPaths, err := proc.GetInformationFilePaths(devRoot)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to read GPU information: %v\", err)\n\t}\n\n\tvar selectedBusIds []string\n\tfor _, f := range gpuInformationPaths {\n\t\tinfo, err := proc.ParseGPUInformationFile(f)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed to parse %v: %v\", f, err)\n\t\t}\n\t\tuuid := info[proc.GPUInfoGPUUUID]\n\t\tbusID := info[proc.GPUInfoBusLocation]\n\t\tminor := info[proc.GPUInfoDeviceMinor]\n\n\t\tif devices.Has(minor) || devices.Has(uuid) || devices.Has(busID) {\n\t\t\tselectedBusIds = append(selectedBusIds, busID)\n\t\t}\n\t}\n\n\tfilter := make(selectDeviceByPath)\n\tfor _, busID := range selectedBusIds {\n\t\tdrmDeviceNodes, err := drm.GetDeviceNodesByBusID(busID)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed to determine DRM devices for %v: %v\", busID, err)\n\t\t}\n\t\tfor _, drmDeviceNode := range drmDeviceNodes {\n\t\t\tfilter[drmDeviceNode] = true\n\t\t}\n\t}\n\n\treturn filter, nil\n}\n\n// selectDeviceByPath is a filter that allows devices to be selected by the path\ntype selectDeviceByPath map[string]bool\n\nvar _ Filter = (*selectDeviceByPath)(nil)\n\n// DeviceIsSelected determines whether the device's path has been selected\nfunc (s selectDeviceByPath) DeviceIsSelected(device Device) bool {\n\treturn s[device.Path]\n}\n\n// MountIsSelected is always true\nfunc (s selectDeviceByPath) MountIsSelected(Mount) bool {\n\treturn true\n}\n\n// HookIsSelected is always true\nfunc (s selectDeviceByPath) HookIsSelected(Hook) bool {\n\treturn true\n}\n"
  },
  {
    "path": "internal/discover/graphics_test.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage discover\n\nimport (\n\t\"path/filepath\"\n\t\"strings\"\n\t\"testing\"\n\n\ttestlog \"github.com/sirupsen/logrus/hooks/test\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/devices\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/test\"\n)\n\nfunc TestGraphicsLibrariesDiscoverer(t *testing.T) {\n\tlogger, _ := testlog.NewNullLogger()\n\thookCreator := NewHookCreator()\n\n\ttestCases := []struct {\n\t\tdescription    string\n\t\tlibraries      *DiscoverMock\n\t\texpectedMounts []Mount\n\t\texpectedHooks  []Hook\n\t}{\n\t\t{\n\t\t\tdescription: \"none discovered\",\n\t\t\tlibraries: &DiscoverMock{\n\t\t\t\tMountsFunc: func() ([]Mount, error) {\n\t\t\t\t\tmounts := []Mount{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/usr/lib64/libnvidia-egl-gbm.so.123.45.67\",\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t\treturn mounts, nil\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedMounts: []Mount{\n\t\t\t\t{\n\t\t\t\t\tPath: \"/usr/lib64/libnvidia-egl-gbm.so.123.45.67\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"libnvidia-allocator discovered\",\n\t\t\tlibraries: &DiscoverMock{\n\t\t\t\tMountsFunc: func() ([]Mount, error) {\n\t\t\t\t\tmounts := []Mount{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/usr/lib64/libnvidia-allocator.so.123.45.67\",\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t\treturn mounts, nil\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedMounts: nil,\n\t\t\texpectedHooks: []Hook{\n\t\t\t\t{\n\t\t\t\t\tLifecycle: \"createContainer\",\n\t\t\t\t\tPath:      \"/usr/bin/nvidia-cdi-hook\",\n\t\t\t\t\tArgs: []string{\"nvidia-cdi-hook\", \"create-symlinks\",\n\t\t\t\t\t\t\"--link\", \"../libnvidia-allocator.so.1::/usr/lib64/gbm/nvidia-drm_gbm.so\",\n\t\t\t\t\t},\n\t\t\t\t\tEnv: []string{\"NVIDIA_CTK_DEBUG=false\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"libnvidia-vulkan-producer discovered\",\n\t\t\tlibraries: &DiscoverMock{\n\t\t\t\tMountsFunc: func() ([]Mount, error) {\n\t\t\t\t\tmounts := []Mount{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/usr/lib64/libnvidia-vulkan-producer.so.123.45.67\",\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t\treturn mounts, nil\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedMounts: []Mount{\n\t\t\t\t{\n\t\t\t\t\tPath: \"/usr/lib64/libnvidia-vulkan-producer.so.123.45.67\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedHooks: []Hook{\n\t\t\t\t{\n\t\t\t\t\tLifecycle: \"createContainer\",\n\t\t\t\t\tPath:      \"/usr/bin/nvidia-cdi-hook\",\n\t\t\t\t\tArgs: []string{\"nvidia-cdi-hook\", \"create-symlinks\",\n\t\t\t\t\t\t\"--link\", \"libnvidia-vulkan-producer.so.123.45.67::/usr/lib64/libnvidia-vulkan-producer.so\",\n\t\t\t\t\t},\n\t\t\t\t\tEnv: []string{\"NVIDIA_CTK_DEBUG=false\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"libnvidia-allocator and libnvidia-vulkan-producer discovered\",\n\t\t\tlibraries: &DiscoverMock{\n\t\t\t\tMountsFunc: func() ([]Mount, error) {\n\t\t\t\t\tmounts := []Mount{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/usr/lib64/libnvidia-allocator.so.123.45.67\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/usr/lib64/libnvidia-vulkan-producer.so.123.45.67\",\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t\treturn mounts, nil\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedMounts: []Mount{\n\t\t\t\t{\n\t\t\t\t\tPath: \"/usr/lib64/libnvidia-vulkan-producer.so.123.45.67\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedHooks: []Hook{\n\t\t\t\t{\n\t\t\t\t\tLifecycle: \"createContainer\",\n\t\t\t\t\tPath:      \"/usr/bin/nvidia-cdi-hook\",\n\t\t\t\t\tArgs: []string{\"nvidia-cdi-hook\", \"create-symlinks\",\n\t\t\t\t\t\t\"--link\", \"../libnvidia-allocator.so.1::/usr/lib64/gbm/nvidia-drm_gbm.so\",\n\t\t\t\t\t\t\"--link\", \"libnvidia-vulkan-producer.so.123.45.67::/usr/lib64/libnvidia-vulkan-producer.so\",\n\t\t\t\t\t},\n\t\t\t\t\tEnv: []string{\"NVIDIA_CTK_DEBUG=false\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\td := &graphicsDriverLibraries{\n\t\t\t\tDiscover:    tc.libraries,\n\t\t\t\tlogger:      logger,\n\t\t\t\thookCreator: hookCreator,\n\t\t\t}\n\n\t\t\tdevices, err := d.Devices()\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.Empty(t, devices)\n\t\t\trequire.Len(t, tc.libraries.calls.Devices, 1)\n\n\t\t\tmounts, err := d.Mounts()\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.EqualValues(t, tc.expectedMounts, mounts)\n\t\t\trequire.Len(t, tc.libraries.calls.Mounts, 1)\n\n\t\t\thooks, err := d.Hooks()\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.EqualValues(t, tc.expectedHooks, hooks)\n\t\t\trequire.Len(t, tc.libraries.calls.Mounts, 2)\n\t\t\trequire.Len(t, tc.libraries.calls.Hooks, 0)\n\t\t})\n\t}\n}\n\nfunc TestDrmDevicesByPath(t *testing.T) {\n\tdefer devices.SetAllForTest()()\n\tmoduleRoot, err := test.GetModuleRoot()\n\trequire.NoError(t, err)\n\tdevRoot := filepath.Join(moduleRoot, \"testdata\", \"lookup\", \"rootfs-drm\")\n\n\tlogger, _ := testlog.NewNullLogger()\n\thookCreator := NewHookCreator()\n\n\ttestCases := []struct {\n\t\tdescription   string\n\t\tdevices       Discover\n\t\tdevRoot       string\n\t\texpectedError error\n\t\texpectedHooks []Hook\n\t}{\n\t\t{\n\t\t\tdescription: \"no devices\",\n\t\t\tdevices:     &DiscoverMock{},\n\t\t},\n\t\t{\n\t\t\tdescription: \"single device\",\n\t\t\tdevices: &DiscoverMock{\n\t\t\t\tDevicesFunc: func() ([]Device, error) {\n\t\t\t\t\tdevices := []Device{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHostPath: \"/dev/dri/card0\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHostPath: \"/dev/dri/renderD128\",\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t\treturn devices, nil\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedHooks: []Hook{\n\t\t\t\t{\n\t\t\t\t\tLifecycle: \"createContainer\",\n\t\t\t\t\tPath:      \"/usr/bin/nvidia-cdi-hook\",\n\t\t\t\t\tArgs: []string{\n\t\t\t\t\t\t\"nvidia-cdi-hook\", \"create-symlinks\",\n\t\t\t\t\t\t\"--link\", \"../card0::{{ .DevRoot }}/dev/dri/by-path/pci-0000:07:00.0-card\",\n\t\t\t\t\t\t\"--link\", \"../renderD128::{{ .DevRoot }}/dev/dri/by-path/pci-0000:07:00.0-render\",\n\t\t\t\t\t},\n\t\t\t\t\tEnv: []string{\"NVIDIA_CTK_DEBUG=false\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\n\t\tfor _, h := range tc.expectedHooks {\n\t\t\tfor i := range h.Args {\n\t\t\t\th.Args[i] = strings.ReplaceAll(h.Args[i], \"{{ .DevRoot }}\", devRoot)\n\t\t\t}\n\t\t}\n\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\td := newCreateDRMByPathSymlinks(logger, tc.devices, devRoot, hookCreator)\n\n\t\t\tdevices, err := d.Devices()\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.Empty(t, devices)\n\n\t\t\tenvVars, err := d.EnvVars()\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.Empty(t, envVars)\n\n\t\t\tmounts, err := d.Mounts()\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.Empty(t, mounts)\n\n\t\t\thooks, err := d.Hooks()\n\t\t\trequire.EqualValues(t, tc.expectedError, err)\n\n\t\t\trequire.EqualValues(t, tc.expectedHooks, hooks)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/discover/hooks.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage discover\n\nimport (\n\t\"fmt\"\n\t\"path/filepath\"\n\n\t\"tags.cncf.io/container-device-interface/pkg/cdi\"\n)\n\n// A HookName represents a supported CDI hooks.\ntype HookName string\n\nconst (\n\t// AllHooks is a special hook name that allows all hooks to be matched.\n\tAllHooks = HookName(\"all\")\n\n\t// A ChmodHook is used to set the file mode of the specified paths.\n\t//\n\t// Deprecated: The chmod hook is deprecated and will be removed in a future release.\n\tChmodHook = HookName(\"chmod\")\n\t// A CreateSymlinksHook is used to create symlinks in the container.\n\tCreateSymlinksHook = HookName(\"create-symlinks\")\n\t// DisableDeviceNodeModificationHook refers to the hook used to ensure that\n\t// device nodes are not created by libnvidia-ml.so or nvidia-smi in a\n\t// container.\n\t// Added in v1.17.8\n\tDisableDeviceNodeModificationHook = HookName(\"disable-device-node-modification\")\n\t// An EnableCudaCompatHook is used to enabled CUDA Forward Compatibility.\n\t// Added in v1.17.5\n\tEnableCudaCompatHook = HookName(\"enable-cuda-compat\")\n\t// An UpdateLDCacheHook is the hook used to update the ldcache in the\n\t// container. This allows injected libraries to be discoverable.\n\tUpdateLDCacheHook = HookName(\"update-ldcache\")\n\n\tdefaultNvidiaCDIHookPath = \"/usr/bin/nvidia-cdi-hook\"\n)\n\n// defaultDisabledHooks defines hooks that are disabled by default.\n// These hooks can be explicitly enabled using the WithEnabledHooks option.\nvar defaultDisabledHooks = []HookName{\n\t// ChmodHook is disabled by default as it was a workaround for older\n\t// versions of crun that has since been fixed.\n\tChmodHook,\n}\n\nvar _ Discover = (*Hook)(nil)\n\n// Devices returns an empty list of devices for a Hook discoverer.\nfunc (h *Hook) Devices() ([]Device, error) {\n\treturn nil, nil\n}\n\n// EnvVars returns an empty list of envs for a Hook discoverer.\nfunc (h *Hook) EnvVars() ([]EnvVar, error) {\n\treturn nil, nil\n}\n\n// Mounts returns an empty list of mounts for a Hook discoverer.\nfunc (h *Hook) Mounts() ([]Mount, error) {\n\treturn nil, nil\n}\n\n// Hooks allows the Hook type to also implement the Discoverer interface.\n// It returns a single hook\nfunc (h *Hook) Hooks() ([]Hook, error) {\n\tif h == nil {\n\t\treturn nil, nil\n\t}\n\n\treturn []Hook{*h}, nil\n}\n\ntype hookCreatorOptions struct {\n\tnvidiaCDIHookPath string\n\tldconfigPath      string\n\tdisabledHooks     []HookName\n\tenabledHooks      []HookName\n\tdebugLogging      bool\n}\n\ntype Option func(*hookCreatorOptions)\n\ntype cdiHookCreator struct {\n\tnvidiaCDIHookPath string\n\tldconfigPath      string\n\tdisabledHooks     map[HookName]bool\n\n\tfixedArgs    []string\n\tdebugLogging bool\n}\n\n// An allDisabledHookCreator is a HookCreator that does not create any hooks.\ntype allDisabledHookCreator struct{}\n\n// Create returns nil for all hooks for an allDisabledHookCreator.\nfunc (a *allDisabledHookCreator) Create(name HookName, args ...string) *Hook {\n\treturn nil\n}\n\n// A HookCreator defines an interface for creating discover hooks.\ntype HookCreator interface {\n\tCreate(HookName, ...string) *Hook\n}\n\nfunc WithDebugLogging(debugLogging bool) Option {\n\treturn func(hco *hookCreatorOptions) {\n\t\thco.debugLogging = debugLogging\n\t}\n}\n\n// WithDisabledHooks explicitly disables the specified hooks.\n// This can be specified multiple times.\nfunc WithDisabledHooks(hooks ...HookName) Option {\n\treturn func(c *hookCreatorOptions) {\n\t\tc.disabledHooks = append(c.disabledHooks, hooks...)\n\t}\n}\n\n// WithEnabledHooks explicitly enables the specified hooks.\n// This is useful for enabling hooks that are disabled by default.\nfunc WithEnabledHooks(hooks ...HookName) Option {\n\treturn func(c *hookCreatorOptions) {\n\t\tc.enabledHooks = append(c.enabledHooks, hooks...)\n\t}\n}\n\nfunc WithLdconfigPath(ldconfigPath string) Option {\n\treturn func(c *hookCreatorOptions) {\n\t\tc.ldconfigPath = ldconfigPath\n\t}\n}\n\n// WithNVIDIACDIHookPath sets the path to the nvidia-cdi-hook binary.\nfunc WithNVIDIACDIHookPath(nvidiaCDIHookPath string) Option {\n\treturn func(c *hookCreatorOptions) {\n\t\tc.nvidiaCDIHookPath = nvidiaCDIHookPath\n\t}\n}\n\nfunc NewHookCreator(opts ...Option) HookCreator {\n\to := &hookCreatorOptions{\n\t\tnvidiaCDIHookPath: defaultNvidiaCDIHookPath,\n\t}\n\tfor _, opt := range opts {\n\t\topt(o)\n\t}\n\n\to.disabledHooks = append(o.disabledHooks, defaultDisabledHooks...)\n\n\tdisabledHooks := make(map[HookName]bool)\n\tfor _, h := range o.disabledHooks {\n\t\tdisabledHooks[h] = true\n\t}\n\n\tif disabledHooks[AllHooks] && len(o.enabledHooks) == 0 {\n\t\treturn &allDisabledHookCreator{}\n\t}\n\n\tfor _, h := range o.enabledHooks {\n\t\tdisabledHooks[h] = false\n\t}\n\n\tc := &cdiHookCreator{\n\t\tnvidiaCDIHookPath: o.nvidiaCDIHookPath,\n\t\tldconfigPath:      o.ldconfigPath,\n\t\tdisabledHooks:     disabledHooks,\n\t\tfixedArgs:         getFixedArgsForCDIHookCLI(o.nvidiaCDIHookPath),\n\t\tdebugLogging:      o.debugLogging,\n\t}\n\n\treturn c\n}\n\n// Create creates a new hook with the given name and arguments.\n// If a hook is disabled, a nil hook is returned.\nfunc (c cdiHookCreator) Create(name HookName, args ...string) *Hook {\n\tif c.isDisabled(name, args...) {\n\t\treturn nil\n\t}\n\n\treturn &Hook{\n\t\tLifecycle: cdi.CreateContainerHook,\n\t\tPath:      c.nvidiaCDIHookPath,\n\t\tArgs:      append(c.requiredArgs(name), c.transformArgs(name, args...)...),\n\t\tEnv:       []string{fmt.Sprintf(\"NVIDIA_CTK_DEBUG=%v\", c.debugLogging)},\n\t}\n}\n\nfunc (c cdiHookCreator) isDisabled(name HookName, args ...string) bool {\n\tdisabled, ok := c.disabledHooks[name]\n\tif ok {\n\t\treturn disabled\n\t}\n\tif c.disabledHooks[AllHooks] {\n\t\treturn true\n\t}\n\n\t// still reject hooks that require args if none were provided\n\tswitch name {\n\tcase CreateSymlinksHook, ChmodHook:\n\t\treturn len(args) == 0\n\t}\n\treturn false\n}\n\nfunc (c cdiHookCreator) requiredArgs(name HookName) []string {\n\treturn append(c.fixedArgs, string(name))\n}\n\nfunc (c cdiHookCreator) transformArgs(name HookName, args ...string) []string {\n\tvar transformedArgs []string\n\tswitch name {\n\tcase CreateSymlinksHook:\n\t\tfor _, arg := range args {\n\t\t\ttransformedArgs = append(transformedArgs, \"--link\", arg)\n\t\t}\n\tcase ChmodHook:\n\t\ttransformedArgs = append(transformedArgs, \"--mode\", \"755\")\n\t\tfor _, arg := range args {\n\t\t\ttransformedArgs = append(transformedArgs, \"--path\", arg)\n\t\t}\n\tcase UpdateLDCacheHook:\n\t\tif c.ldconfigPath != \"\" {\n\t\t\ttransformedArgs = append(transformedArgs, \"--ldconfig-path\", c.ldconfigPath)\n\t\t}\n\t\tfor _, arg := range args {\n\t\t\ttransformedArgs = append(transformedArgs, \"--folder\", arg)\n\t\t}\n\tdefault:\n\t\treturn args\n\t}\n\treturn transformedArgs\n}\n\n// getFixedArgsForCDIHookCLI returns the fixed arguments for the hook CLI.\n// If the nvidia-ctk binary is used, hooks are implemented under the hook\n// subcommand.\n// For the nvidia-cdi-hook binary, the hooks are implemented as subcommands of\n// the top-level CLI.\nfunc getFixedArgsForCDIHookCLI(nvidiaCDIHookPath string) []string {\n\tbase := filepath.Base(nvidiaCDIHookPath)\n\tif base == \"nvidia-ctk\" {\n\t\treturn []string{base, \"hook\"}\n\t}\n\treturn []string{base}\n}\n"
  },
  {
    "path": "internal/discover/hooks_test.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage discover\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestNewHookCreator(t *testing.T) {\n\ttestCases := []struct {\n\t\tname     string\n\t\topts     []Option\n\t\texpected HookCreator\n\t}{\n\t\t{\n\t\t\tname: \"default creates cdiHookCreator with default path\",\n\t\t\topts: nil,\n\t\t\texpected: &cdiHookCreator{\n\t\t\t\tnvidiaCDIHookPath: defaultNvidiaCDIHookPath,\n\t\t\t\tfixedArgs:         []string{\"nvidia-cdi-hook\"},\n\t\t\t\tdisabledHooks: map[HookName]bool{\n\t\t\t\t\tChmodHook: true, // ChmodHook is disabled by default\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"custom nvidia-cdi-hook path\",\n\t\t\topts: []Option{\n\t\t\t\tWithNVIDIACDIHookPath(\"/custom/path/nvidia-cdi-hook\"),\n\t\t\t},\n\t\t\texpected: &cdiHookCreator{\n\t\t\t\tnvidiaCDIHookPath: \"/custom/path/nvidia-cdi-hook\",\n\t\t\t\tfixedArgs:         []string{\"nvidia-cdi-hook\"},\n\t\t\t\tdisabledHooks: map[HookName]bool{\n\t\t\t\t\tChmodHook: true,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"AllHooks disabled returns allDisabledHookCreator\",\n\t\t\topts: []Option{\n\t\t\t\tWithDisabledHooks(AllHooks),\n\t\t\t},\n\t\t\texpected: &allDisabledHookCreator{},\n\t\t},\n\t\t{\n\t\t\tname: \"AllHooks disabled but UpdateLDCacheHook enabled\",\n\t\t\topts: []Option{\n\t\t\t\tWithDisabledHooks(AllHooks),\n\t\t\t\tWithEnabledHooks(UpdateLDCacheHook),\n\t\t\t},\n\t\t\texpected: &cdiHookCreator{\n\t\t\t\tnvidiaCDIHookPath: defaultNvidiaCDIHookPath,\n\t\t\t\tfixedArgs:         []string{\"nvidia-cdi-hook\"},\n\t\t\t\tdisabledHooks: map[HookName]bool{\n\t\t\t\t\tAllHooks:          true,\n\t\t\t\t\tUpdateLDCacheHook: false,\n\t\t\t\t\tChmodHook:         true,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"multiple hooks disabled and enabled\",\n\t\t\topts: []Option{\n\t\t\t\tWithDisabledHooks(UpdateLDCacheHook, CreateSymlinksHook, EnableCudaCompatHook, DisableDeviceNodeModificationHook),\n\t\t\t\tWithEnabledHooks(ChmodHook, UpdateLDCacheHook),\n\t\t\t},\n\t\t\texpected: &cdiHookCreator{\n\t\t\t\tnvidiaCDIHookPath: defaultNvidiaCDIHookPath,\n\t\t\t\tfixedArgs:         []string{\"nvidia-cdi-hook\"},\n\t\t\t\tdisabledHooks: map[HookName]bool{\n\t\t\t\t\tUpdateLDCacheHook:                 false,\n\t\t\t\t\tCreateSymlinksHook:                true,\n\t\t\t\t\tEnableCudaCompatHook:              true,\n\t\t\t\t\tChmodHook:                         false,\n\t\t\t\t\tDisableDeviceNodeModificationHook: true,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"WithDisabledHooks can be called multiple times\",\n\t\t\topts: []Option{\n\t\t\t\tWithDisabledHooks(UpdateLDCacheHook),\n\t\t\t\tWithDisabledHooks(CreateSymlinksHook),\n\t\t\t\tWithDisabledHooks(EnableCudaCompatHook),\n\t\t\t},\n\t\t\texpected: &cdiHookCreator{\n\t\t\t\tnvidiaCDIHookPath: defaultNvidiaCDIHookPath,\n\t\t\t\tfixedArgs:         []string{\"nvidia-cdi-hook\"},\n\t\t\t\tdisabledHooks: map[HookName]bool{\n\t\t\t\t\tUpdateLDCacheHook:    true,\n\t\t\t\t\tCreateSymlinksHook:   true,\n\t\t\t\t\tEnableCudaCompatHook: true,\n\t\t\t\t\tChmodHook:            true, // Default disabled\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"WithEnabledHooks overrides defaultDisabledHooks\",\n\t\t\topts: []Option{\n\t\t\t\tWithEnabledHooks(ChmodHook),\n\t\t\t},\n\t\t\texpected: &cdiHookCreator{\n\t\t\t\tnvidiaCDIHookPath: defaultNvidiaCDIHookPath,\n\t\t\t\tfixedArgs:         []string{\"nvidia-cdi-hook\"},\n\t\t\t\tdisabledHooks: map[HookName]bool{\n\t\t\t\t\tChmodHook: false, // ChmodHook is enabled\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"nvidia-ctk binary path affects fixed args\",\n\t\t\topts: []Option{\n\t\t\t\tWithNVIDIACDIHookPath(\"/usr/bin/nvidia-ctk\"),\n\t\t\t},\n\t\t\texpected: &cdiHookCreator{\n\t\t\t\tnvidiaCDIHookPath: \"/usr/bin/nvidia-ctk\",\n\t\t\t\tfixedArgs:         []string{\"nvidia-ctk\", \"hook\"},\n\t\t\t\tdisabledHooks: map[HookName]bool{\n\t\t\t\t\tChmodHook: true,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"nvidia-ctk in custom NVIDIA toolkit path\",\n\t\t\topts: []Option{\n\t\t\t\tWithNVIDIACDIHookPath(\"/usr/local/nvidia/toolkit/nvidia-ctk\"),\n\t\t\t},\n\t\t\texpected: &cdiHookCreator{\n\t\t\t\tnvidiaCDIHookPath: \"/usr/local/nvidia/toolkit/nvidia-ctk\",\n\t\t\t\tfixedArgs:         []string{\"nvidia-ctk\", \"hook\"},\n\t\t\t\tdisabledHooks: map[HookName]bool{\n\t\t\t\t\tChmodHook: true,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\thookCreator := NewHookCreator(tc.opts...)\n\n\t\t\trequire.EqualValues(t, tc.expected, hookCreator)\n\t\t})\n\t}\n}\nfunc TestCDIHookCreator_Create(t *testing.T) {\n\ttestCases := []struct {\n\t\tname         string\n\t\thookCreator  HookCreator\n\t\thookName     HookName\n\t\targs         []string\n\t\texpectedHook *Hook\n\t}{\n\t\t{\n\t\t\tname:        \"CreateSymlinksHook with args\",\n\t\t\thookCreator: NewHookCreator(WithNVIDIACDIHookPath(defaultNvidiaCDIHookPath)),\n\t\t\thookName:    CreateSymlinksHook,\n\t\t\targs:        []string{\"/source::/target\", \"/source2::/target2\"},\n\t\t\texpectedHook: &Hook{\n\t\t\t\tLifecycle: \"createContainer\",\n\t\t\t\tPath:      \"/usr/bin/nvidia-cdi-hook\",\n\t\t\t\tArgs:      []string{\"nvidia-cdi-hook\", \"create-symlinks\", \"--link\", \"/source::/target\", \"--link\", \"/source2::/target2\"},\n\t\t\t\tEnv:       []string{\"NVIDIA_CTK_DEBUG=false\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:         \"CreateSymlinksHook without args returns nil\",\n\t\t\thookCreator:  NewHookCreator(WithNVIDIACDIHookPath(defaultNvidiaCDIHookPath)),\n\t\t\thookName:     CreateSymlinksHook,\n\t\t\targs:         []string{},\n\t\t\texpectedHook: nil,\n\t\t},\n\t\t{\n\t\t\tname: \"ChmodHook with args (when enabled)\",\n\t\t\thookCreator: NewHookCreator(\n\t\t\t\tWithNVIDIACDIHookPath(defaultNvidiaCDIHookPath),\n\t\t\t\tWithEnabledHooks(ChmodHook),\n\t\t\t),\n\t\t\thookName: ChmodHook,\n\t\t\targs:     []string{\"/path/to/file1\", \"/path/to/file2\"},\n\t\t\texpectedHook: &Hook{\n\t\t\t\tLifecycle: \"createContainer\",\n\t\t\t\tPath:      defaultNvidiaCDIHookPath,\n\t\t\t\tArgs:      []string{\"nvidia-cdi-hook\", \"chmod\", \"--mode\", \"755\", \"--path\", \"/path/to/file1\", \"--path\", \"/path/to/file2\"},\n\t\t\t\tEnv:       []string{\"NVIDIA_CTK_DEBUG=false\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:         \"ChmodHook disabled by default returns nil\",\n\t\t\thookCreator:  NewHookCreator(WithNVIDIACDIHookPath(defaultNvidiaCDIHookPath)),\n\t\t\thookName:     ChmodHook,\n\t\t\targs:         []string{\"/path/to/file\"},\n\t\t\texpectedHook: nil, // ChmodHook is disabled by default\n\t\t},\n\t\t{\n\t\t\tname:        \"UpdateLDCacheHook with no args\",\n\t\t\thookCreator: NewHookCreator(WithNVIDIACDIHookPath(defaultNvidiaCDIHookPath)),\n\t\t\thookName:    UpdateLDCacheHook,\n\t\t\targs:        []string{},\n\t\t\texpectedHook: &Hook{\n\t\t\t\tLifecycle: \"createContainer\",\n\t\t\t\tPath:      defaultNvidiaCDIHookPath,\n\t\t\t\tArgs:      []string{\"nvidia-cdi-hook\", \"update-ldcache\"},\n\t\t\t\tEnv:       []string{\"NVIDIA_CTK_DEBUG=false\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:        \"UpdateLDCacheHook with args\",\n\t\t\thookCreator: NewHookCreator(WithNVIDIACDIHookPath(defaultNvidiaCDIHookPath)),\n\t\t\thookName:    UpdateLDCacheHook,\n\t\t\targs:        []string{\"/usr/lib64\"},\n\t\t\texpectedHook: &Hook{\n\t\t\t\tLifecycle: \"createContainer\",\n\t\t\t\tPath:      defaultNvidiaCDIHookPath,\n\t\t\t\tArgs:      []string{\"nvidia-cdi-hook\", \"update-ldcache\", \"--folder\", \"/usr/lib64\"},\n\t\t\t\tEnv:       []string{\"NVIDIA_CTK_DEBUG=false\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:        \"EnableCudaCompatHook\",\n\t\t\thookCreator: NewHookCreator(),\n\t\t\thookName:    EnableCudaCompatHook,\n\t\t\targs:        []string{\"--root\", \"/some/root\"},\n\t\t\texpectedHook: &Hook{\n\t\t\t\tLifecycle: \"createContainer\",\n\t\t\t\tPath:      defaultNvidiaCDIHookPath,\n\t\t\t\tArgs:      []string{\"nvidia-cdi-hook\", \"enable-cuda-compat\", \"--root\", \"/some/root\"},\n\t\t\t\tEnv:       []string{\"NVIDIA_CTK_DEBUG=false\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:        \"DisableDeviceNodeModificationHook\",\n\t\t\thookCreator: NewHookCreator(WithNVIDIACDIHookPath(defaultNvidiaCDIHookPath)),\n\t\t\thookName:    DisableDeviceNodeModificationHook,\n\t\t\targs:        []string{},\n\t\t\texpectedHook: &Hook{\n\t\t\t\tLifecycle: \"createContainer\",\n\t\t\t\tPath:      defaultNvidiaCDIHookPath,\n\t\t\t\tArgs:      []string{\"nvidia-cdi-hook\", \"disable-device-node-modification\"},\n\t\t\t\tEnv:       []string{\"NVIDIA_CTK_DEBUG=false\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:        \"nvidia-ctk binary uses different args format\",\n\t\t\thookCreator: NewHookCreator(WithNVIDIACDIHookPath(\"/usr/bin/nvidia-ctk\")),\n\t\t\thookName:    UpdateLDCacheHook,\n\t\t\targs:        []string{},\n\t\t\texpectedHook: &Hook{\n\t\t\t\tLifecycle: \"createContainer\",\n\t\t\t\tPath:      \"/usr/bin/nvidia-ctk\",\n\t\t\t\tArgs:      []string{\"nvidia-ctk\", \"hook\", \"update-ldcache\"},\n\t\t\t\tEnv:       []string{\"NVIDIA_CTK_DEBUG=false\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"nvidia-ctk in custom NVIDIA toolkit path\",\n\t\t\thookCreator: NewHookCreator(\n\t\t\t\tWithNVIDIACDIHookPath(\"/usr/local/nvidia/toolkit/nvidia-ctk\"),\n\t\t\t),\n\t\t\thookName: EnableCudaCompatHook,\n\t\t\targs:     []string{\"--root\", \"/some/root\"},\n\t\t\texpectedHook: &Hook{\n\t\t\t\tLifecycle: \"createContainer\",\n\t\t\t\tPath:      \"/usr/local/nvidia/toolkit/nvidia-ctk\",\n\t\t\t\tArgs:      []string{\"nvidia-ctk\", \"hook\", \"enable-cuda-compat\", \"--root\", \"/some/root\"},\n\t\t\t\tEnv:       []string{\"NVIDIA_CTK_DEBUG=false\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:         \"hook disabled when in disabledHooks list\",\n\t\t\thookCreator:  NewHookCreator(WithDisabledHooks(UpdateLDCacheHook)),\n\t\t\thookName:     UpdateLDCacheHook,\n\t\t\targs:         []string{},\n\t\t\texpectedHook: nil,\n\t\t},\n\t\t{\n\t\t\tname:         \"allDisabled with unknown hook\",\n\t\t\thookCreator:  &allDisabledHookCreator{},\n\t\t\thookName:     HookName(\"unknown-hook\"),\n\t\t\targs:         []string{},\n\t\t\texpectedHook: nil,\n\t\t},\n\t\t{\n\t\t\tname:         \"allDisabled with defined hook\",\n\t\t\thookCreator:  &allDisabledHookCreator{},\n\t\t\thookName:     UpdateLDCacheHook,\n\t\t\targs:         []string{},\n\t\t\texpectedHook: nil,\n\t\t},\n\t\t{\n\t\t\tname:        \"debug logging enabled\",\n\t\t\thookCreator: NewHookCreator(WithDebugLogging(true)),\n\t\t\thookName:    UpdateLDCacheHook,\n\t\t\targs:        []string{},\n\t\t\texpectedHook: &Hook{\n\t\t\t\tLifecycle: \"createContainer\",\n\t\t\t\tPath:      defaultNvidiaCDIHookPath,\n\t\t\t\tArgs:      []string{\"nvidia-cdi-hook\", \"update-ldcache\"},\n\t\t\t\tEnv:       []string{\"NVIDIA_CTK_DEBUG=true\"},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\thookCreator := tc.hookCreator\n\n\t\t\thook := hookCreator.Create(tc.hookName, tc.args...)\n\t\t\trequire.Equal(t, tc.expectedHook, hook)\n\t\t})\n\t}\n}\n\nfunc TestCDIHookCreator_isDisabled(t *testing.T) {\n\ttests := []struct {\n\t\tname           string\n\t\tdisabledHooks  []HookName\n\t\tenabledHooks   []HookName\n\t\thookName       HookName\n\t\targs           []string\n\t\texpectedResult bool\n\t}{\n\t\t{\n\t\t\tname:           \"hook explicitly disabled\",\n\t\t\tdisabledHooks:  []HookName{ChmodHook},\n\t\t\thookName:       ChmodHook,\n\t\t\targs:           []string{\"/path/to/file\"},\n\t\t\texpectedResult: true, // ChmodHook is disabled by default and explicitly disabled\n\t\t},\n\t\t{\n\t\t\tname:           \"hook explicitly enabled overrides disabled\",\n\t\t\tdisabledHooks:  []HookName{ChmodHook},\n\t\t\tenabledHooks:   []HookName{ChmodHook},\n\t\t\thookName:       ChmodHook,\n\t\t\targs:           []string{\"/path/to/file\"},\n\t\t\texpectedResult: false,\n\t\t},\n\t\t{\n\t\t\tname:           \"hook not in disabled map and not AllHooks disabled\",\n\t\t\tdisabledHooks:  []HookName{ChmodHook},\n\t\t\thookName:       UpdateLDCacheHook,\n\t\t\targs:           []string{},\n\t\t\texpectedResult: false,\n\t\t},\n\t\t{\n\t\t\tname:           \"CreateSymlinksHook requires args - no args provided\",\n\t\t\tdisabledHooks:  []HookName{},\n\t\t\thookName:       CreateSymlinksHook,\n\t\t\targs:           []string{},\n\t\t\texpectedResult: true,\n\t\t},\n\t\t{\n\t\t\tname:           \"CreateSymlinksHook requires args - args provided\",\n\t\t\tdisabledHooks:  []HookName{},\n\t\t\thookName:       CreateSymlinksHook,\n\t\t\targs:           []string{\"/path/to/symlink\"},\n\t\t\texpectedResult: false,\n\t\t},\n\t\t{\n\t\t\tname:           \"ChmodHook requires args - no args provided\",\n\t\t\tdisabledHooks:  []HookName{},\n\t\t\thookName:       ChmodHook,\n\t\t\targs:           []string{},\n\t\t\texpectedResult: true,\n\t\t},\n\t\t{\n\t\t\tname:           \"ChmodHook requires args - args provided\",\n\t\t\tdisabledHooks:  []HookName{},\n\t\t\tenabledHooks:   []HookName{ChmodHook}, // Enable ChmodHook since it's disabled by default\n\t\t\thookName:       ChmodHook,\n\t\t\targs:           []string{\"/path/to/file\"},\n\t\t\texpectedResult: false,\n\t\t},\n\t\t{\n\t\t\tname:           \"UpdateLDCacheHook doesn't require args - no args provided\",\n\t\t\tdisabledHooks:  []HookName{},\n\t\t\thookName:       UpdateLDCacheHook,\n\t\t\targs:           []string{},\n\t\t\texpectedResult: false,\n\t\t},\n\t\t{\n\t\t\tname:           \"UpdateLDCacheHook doesn't require args - args provided\",\n\t\t\tdisabledHooks:  []HookName{},\n\t\t\thookName:       UpdateLDCacheHook,\n\t\t\targs:           []string{\"arg1\", \"arg2\"},\n\t\t\texpectedResult: false,\n\t\t},\n\t\t{\n\t\t\tname:           \"EnableCudaCompatHook doesn't require args - no args provided\",\n\t\t\tdisabledHooks:  []HookName{},\n\t\t\thookName:       EnableCudaCompatHook,\n\t\t\targs:           []string{},\n\t\t\texpectedResult: false,\n\t\t},\n\t\t{\n\t\t\tname:           \"DisableDeviceNodeModificationHook doesn't require args - no args provided\",\n\t\t\tdisabledHooks:  []HookName{},\n\t\t\thookName:       DisableDeviceNodeModificationHook,\n\t\t\targs:           []string{},\n\t\t\texpectedResult: false,\n\t\t},\n\t\t// Edge cases\n\t\t{\n\t\t\tname:           \"nil disabled hooks map\",\n\t\t\tdisabledHooks:  nil,\n\t\t\thookName:       UpdateLDCacheHook,\n\t\t\targs:           []string{},\n\t\t\texpectedResult: false,\n\t\t},\n\t\t{\n\t\t\tname:           \"unknown hook name\",\n\t\t\tdisabledHooks:  []HookName{ChmodHook},\n\t\t\thookName:       HookName(\"unknown-hook\"),\n\t\t\targs:           []string{},\n\t\t\texpectedResult: false,\n\t\t},\n\t\t// Multiple args tests\n\t\t{\n\t\t\tname:           \"CreateSymlinksHook with multiple args\",\n\t\t\tdisabledHooks:  []HookName{},\n\t\t\thookName:       CreateSymlinksHook,\n\t\t\targs:           []string{\"/path1\", \"/path2\", \"/path3\"},\n\t\t\texpectedResult: false,\n\t\t},\n\t\t{\n\t\t\tname:           \"ChmodHook with multiple args\",\n\t\t\tdisabledHooks:  []HookName{},\n\t\t\tenabledHooks:   []HookName{ChmodHook}, // Enable ChmodHook since it's disabled by default\n\t\t\thookName:       ChmodHook,\n\t\t\targs:           []string{\"/path1\", \"/path2\"},\n\t\t\texpectedResult: false,\n\t\t},\n\t\t{\n\t\t\tname:           \"UpdateLDCacheHook with multiple args\",\n\t\t\tdisabledHooks:  []HookName{},\n\t\t\thookName:       UpdateLDCacheHook,\n\t\t\targs:           []string{\"arg1\", \"arg2\", \"arg3\"},\n\t\t\texpectedResult: false,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\ttestCreator := NewHookCreator(\n\t\t\t\tWithDisabledHooks(tt.disabledHooks...),\n\t\t\t\tWithEnabledHooks(tt.enabledHooks...),\n\t\t\t)\n\n\t\t\trequire.Equal(t, testCreator.(*cdiHookCreator).isDisabled(tt.hookName, tt.args...), tt.expectedResult)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/discover/ipc.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage discover\n\nimport (\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/lookup\"\n)\n\n// ipcMountOptions defines the mount options for IPC sockets.\nvar ipcMountOptions = []string{\n\t\"nosuid\",\n\t\"nodev\",\n\t\"rbind\",\n\t\"rprivate\",\n\t\"noexec\",\n}\n\ntype ipcMounts mounts\n\n// NewIPCDiscoverer creats a discoverer for NVIDIA IPC sockets.\nfunc NewIPCDiscoverer(logger logger.Interface, driverRoot string) (Discover, error) {\n\tsockets := newMounts(\n\t\tlogger,\n\t\tlookup.NewFileLocator(\n\t\t\tlookup.WithLogger(logger),\n\t\t\tlookup.WithRoot(driverRoot),\n\t\t\tlookup.WithSearchPaths(\"/run\", \"/var/run\"),\n\t\t\tlookup.WithCount(1),\n\t\t),\n\t\tdriverRoot,\n\t\t[]string{\n\t\t\t\"/nvidia-persistenced/socket\",\n\t\t\t\"/nvidia-fabricmanager/socket\",\n\t\t},\n\t)\n\n\tmps := newMounts(\n\t\tlogger,\n\t\tlookup.NewFileLocator(\n\t\t\tlookup.WithLogger(logger),\n\t\t\tlookup.WithRoot(driverRoot),\n\t\t\tlookup.WithCount(1),\n\t\t),\n\t\tdriverRoot,\n\t\t[]string{\n\t\t\t\"/tmp/nvidia-mps\",\n\t\t},\n\t)\n\n\td := Merge(\n\t\t(*ipcMounts)(sockets),\n\t\t(*ipcMounts)(mps),\n\t)\n\treturn d, nil\n}\n\n// Mounts returns the discovered mounts with IPC-specific mount options.\nfunc (d *ipcMounts) Mounts() ([]Mount, error) {\n\tmounts, err := (*mounts)(d).Mounts()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar modifiedMounts []Mount\n\tfor _, m := range mounts {\n\t\tmount := m\n\t\tmount.Options = ipcMountOptions\n\t\tmodifiedMounts = append(modifiedMounts, mount)\n\t}\n\n\treturn modifiedMounts, nil\n}\n"
  },
  {
    "path": "internal/discover/ipc_test.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage discover\n\nimport (\n\t\"testing\"\n\n\ttestlog \"github.com/sirupsen/logrus/hooks/test\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/lookup\"\n)\n\nfunc TestIPCMounts(t *testing.T) {\n\tlogger, _ := testlog.NewNullLogger()\n\tl := ipcMounts(\n\t\tmounts{\n\t\t\tlogger: logger,\n\t\t\tlookup: &lookup.LocatorMock{\n\t\t\t\tLocateFunc: func(path string) ([]string, error) {\n\t\t\t\t\treturn []string{\"/host/path\"}, nil\n\t\t\t\t},\n\t\t\t},\n\t\t\trequired: []string{\"target\"},\n\t\t},\n\t)\n\n\tmounts, err := l.Mounts()\n\trequire.NoError(t, err)\n\n\trequire.EqualValues(\n\t\tt,\n\t\t[]Mount{\n\t\t\t{\n\t\t\t\tHostPath: \"/host/path\",\n\t\t\t\tPath:     \"/host/path\",\n\t\t\t\tOptions: []string{\n\t\t\t\t\t\"nosuid\",\n\t\t\t\t\t\"nodev\",\n\t\t\t\t\t\"rbind\",\n\t\t\t\t\t\"rprivate\",\n\t\t\t\t\t\"noexec\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tmounts,\n\t)\n}\n"
  },
  {
    "path": "internal/discover/ldconfig.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage discover\n\nimport (\n\t\"fmt\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n)\n\n// NewLDCacheUpdateHook creates a discoverer that updates the ldcache for the specified mounts. A logger can also be specified\nfunc NewLDCacheUpdateHook(logger logger.Interface, mounts Discover, hookCreator HookCreator) (Discover, error) {\n\td := ldconfig{\n\t\tlogger:      logger,\n\t\thookCreator: hookCreator,\n\t\tmountsFrom:  mounts,\n\t}\n\n\treturn &d, nil\n}\n\ntype ldconfig struct {\n\tNone\n\tlogger      logger.Interface\n\thookCreator HookCreator\n\tmountsFrom  Discover\n}\n\n// Hooks checks the required mounts for libraries and returns a hook to update the LDcache for the discovered paths.\nfunc (d ldconfig) Hooks() ([]Hook, error) {\n\tmounts, err := d.mountsFrom.Mounts()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to discover mounts for ldcache update: %v\", err)\n\t}\n\n\tlibraryFolders := uniqueFolders(getLibraryPaths(mounts))\n\n\treturn d.hookCreator.Create(UpdateLDCacheHook, libraryFolders...).Hooks()\n}\n\n// getLibraryPaths extracts the library dirs from the specified mounts\nfunc getLibraryPaths(mounts []Mount) []string {\n\tvar paths []string\n\tfor _, m := range mounts {\n\t\tif !isLibName(m.Path) {\n\t\t\tcontinue\n\t\t}\n\t\tpaths = append(paths, m.Path)\n\t}\n\treturn paths\n}\n\n// isLibName checks if the specified filename is a library (i.e. ends in `.so*`)\nfunc isLibName(filename string) bool {\n\tbase := filepath.Base(filename)\n\n\tisLib, err := filepath.Match(\"lib?*.so*\", base)\n\tif !isLib || err != nil {\n\t\treturn false\n\t}\n\n\tparts := strings.Split(base, \".so\")\n\tif len(parts) == 1 {\n\t\treturn true\n\t}\n\n\treturn parts[len(parts)-1] == \"\" || strings.HasPrefix(parts[len(parts)-1], \".\")\n}\n\n// uniqueFolders returns the unique set of folders for the specified files\nfunc uniqueFolders(libraries []string) []string {\n\tvar paths []string\n\tchecked := make(map[string]bool)\n\n\tfor _, l := range libraries {\n\t\tdir := filepath.Dir(l)\n\t\tif dir == \"\" {\n\t\t\tcontinue\n\t\t}\n\t\tif checked[dir] {\n\t\t\tcontinue\n\t\t}\n\t\tchecked[dir] = true\n\t\tpaths = append(paths, dir)\n\t}\n\treturn paths\n}\n"
  },
  {
    "path": "internal/discover/ldconfig_test.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage discover\n\nimport (\n\t\"fmt\"\n\t\"testing\"\n\n\ttestlog \"github.com/sirupsen/logrus/hooks/test\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nconst (\n\ttestNvidiaCDIHookPath = \"/foo/bar/nvidia-cdi-hook\"\n\ttestLdconfigPath      = \"/bar/baz/ldconfig\"\n)\n\nfunc TestLDCacheUpdateHook(t *testing.T) {\n\tlogger, _ := testlog.NewNullLogger()\n\n\ttestCases := []struct {\n\t\tdescription   string\n\t\tldconfigPath  string\n\t\tmounts        []Mount\n\t\tmountError    error\n\t\texpectedError error\n\t\texpectedHooks []Hook\n\t}{\n\t\t{\n\t\t\tdescription: \"empty mounts\",\n\t\t\texpectedHooks: []Hook{\n\t\t\t\t{\n\t\t\t\t\tLifecycle: \"createContainer\",\n\t\t\t\t\tPath:      testNvidiaCDIHookPath,\n\t\t\t\t\tArgs:      []string{\"nvidia-cdi-hook\", \"update-ldcache\"},\n\t\t\t\t\tEnv:       []string{\"NVIDIA_CTK_DEBUG=false\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription:   \"mount error\",\n\t\t\tmountError:    fmt.Errorf(\"mountError\"),\n\t\t\texpectedError: fmt.Errorf(\"mountError\"),\n\t\t},\n\t\t{\n\t\t\tdescription: \"library folders are added to args\",\n\t\t\tmounts: []Mount{\n\t\t\t\t{\n\t\t\t\t\tPath: \"/usr/local/lib/libfoo.so\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tPath: \"/usr/bin/notlib\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tPath: \"/usr/local/libother/libfoo.so\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tPath: \"/usr/local/lib/libbar.so\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedHooks: []Hook{\n\t\t\t\t{\n\t\t\t\t\tLifecycle: \"createContainer\",\n\t\t\t\t\tPath:      testNvidiaCDIHookPath,\n\t\t\t\t\tArgs:      []string{\"nvidia-cdi-hook\", \"update-ldcache\", \"--folder\", \"/usr/local/lib\", \"--folder\", \"/usr/local/libother\"},\n\t\t\t\t\tEnv:       []string{\"NVIDIA_CTK_DEBUG=false\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"host paths are ignored\",\n\t\t\tmounts: []Mount{\n\t\t\t\t{\n\t\t\t\t\tHostPath: \"/usr/local/other/libfoo.so\",\n\t\t\t\t\tPath:     \"/usr/local/lib/libfoo.so\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedHooks: []Hook{\n\t\t\t\t{\n\t\t\t\t\tLifecycle: \"createContainer\",\n\t\t\t\t\tPath:      testNvidiaCDIHookPath,\n\t\t\t\t\tArgs:      []string{\"nvidia-cdi-hook\", \"update-ldcache\", \"--folder\", \"/usr/local/lib\"},\n\t\t\t\t\tEnv:       []string{\"NVIDIA_CTK_DEBUG=false\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription:  \"explicit ldconfig path is passed\",\n\t\t\tldconfigPath: testLdconfigPath,\n\t\t\texpectedHooks: []Hook{\n\t\t\t\t{\n\t\t\t\t\tLifecycle: \"createContainer\",\n\t\t\t\t\tPath:      testNvidiaCDIHookPath,\n\t\t\t\t\tArgs:      []string{\"nvidia-cdi-hook\", \"update-ldcache\", \"--ldconfig-path\", testLdconfigPath},\n\t\t\t\t\tEnv:       []string{\"NVIDIA_CTK_DEBUG=false\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\thookCreator := NewHookCreator(\n\t\t\t\tWithNVIDIACDIHookPath(testNvidiaCDIHookPath),\n\t\t\t\tWithLdconfigPath(tc.ldconfigPath),\n\t\t\t)\n\t\t\tmountMock := &DiscoverMock{\n\t\t\t\tMountsFunc: func() ([]Mount, error) {\n\t\t\t\t\treturn tc.mounts, tc.mountError\n\t\t\t\t},\n\t\t\t}\n\t\t\td, err := NewLDCacheUpdateHook(logger, mountMock, hookCreator)\n\t\t\trequire.NoError(t, err)\n\n\t\t\thooks, err := d.Hooks()\n\t\t\trequire.Len(t, mountMock.MountsCalls(), 1)\n\t\t\trequire.Len(t, mountMock.DevicesCalls(), 0)\n\t\t\trequire.Len(t, mountMock.HooksCalls(), 0)\n\t\t\tif tc.expectedError != nil {\n\t\t\t\trequire.Error(t, err)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.EqualValues(t, tc.expectedHooks, hooks)\n\n\t\t\tdevices, err := d.Devices()\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.Empty(t, devices)\n\n\t\t\tmounts, err := d.Mounts()\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.Empty(t, mounts)\n\t\t})\n\t}\n}\n\nfunc TestIsLibName(t *testing.T) {\n\ttestCases := []struct {\n\t\tname  string\n\t\tisLib bool\n\t}{\n\t\t{\n\t\t\tname:  \"\",\n\t\t\tisLib: false,\n\t\t},\n\t\t{\n\t\t\tname:  \"lib/not/.so\",\n\t\t\tisLib: false,\n\t\t},\n\t\t{\n\t\t\tname:  \"lib.so\",\n\t\t\tisLib: false,\n\t\t},\n\t\t{\n\t\t\tname:  \"notlibcuda.so\",\n\t\t\tisLib: false,\n\t\t},\n\t\t{\n\t\t\tname:  \"libcuda.so\",\n\t\t\tisLib: true,\n\t\t},\n\t\t{\n\t\t\tname:  \"libcuda.so.1\",\n\t\t\tisLib: true,\n\t\t},\n\t\t{\n\t\t\tname:  \"libcuda.soNOT\",\n\t\t\tisLib: false,\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\trequire.Equal(t, tc.isLib, isLibName(tc.name))\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/discover/list.go",
    "content": "/*\n# Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n*/\n\npackage discover\n\nimport \"fmt\"\n\n// list is a discoverer that contains a list of Discoverers. The output of the\n// Mounts functions is the concatenation of the output for each of the\n// elements in the list.\ntype list []Discover\n\nvar _ Discover = (*list)(nil)\n\n// Merge creates a discoverer that is the composite of a list of discoverers.\nfunc Merge(discoverers ...Discover) Discover {\n\tvar l list\n\tfor _, d := range discoverers {\n\t\tif d == nil {\n\t\t\tcontinue\n\t\t}\n\t\tl = append(l, d)\n\t}\n\n\treturn l\n}\n\n// Devices returns all devices from the included discoverers\nfunc (d list) Devices() ([]Device, error) {\n\tvar allDevices []Device\n\n\tfor i, di := range d {\n\t\tdevices, err := di.Devices()\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"error discovering devices for discoverer %v: %v\", i, err)\n\t\t}\n\t\tallDevices = append(allDevices, devices...)\n\t}\n\n\treturn allDevices, nil\n}\n\n// EnvVars returns all environment variables from the included discoverers.\nfunc (d list) EnvVars() ([]EnvVar, error) {\n\tvar allEnvs []EnvVar\n\n\tfor i, di := range d {\n\t\tenvs, err := di.EnvVars()\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"error discovering envs for discoverer %v: %w\", i, err)\n\t\t}\n\t\tallEnvs = append(allEnvs, envs...)\n\t}\n\n\treturn allEnvs, nil\n}\n\n// Mounts returns all mounts from the included discoverers\nfunc (d list) Mounts() ([]Mount, error) {\n\tvar allMounts []Mount\n\n\tfor i, di := range d {\n\t\tmounts, err := di.Mounts()\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"error discovering mounts for discoverer %v: %v\", i, err)\n\t\t}\n\t\tallMounts = append(allMounts, mounts...)\n\t}\n\n\treturn allMounts, nil\n}\n\n// Hooks returns all Hooks from the included discoverers\nfunc (d list) Hooks() ([]Hook, error) {\n\tvar allHooks []Hook\n\n\tfor i, di := range d {\n\t\thooks, err := di.Hooks()\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"error discovering hooks for discoverer %v: %v\", i, err)\n\t\t}\n\t\tallHooks = append(allHooks, hooks...)\n\t}\n\n\treturn allHooks, nil\n}\n"
  },
  {
    "path": "internal/discover/mofed.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage discover\n\nimport (\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/lookup/root\"\n)\n\n// NewMOFEDDiscoverer creates a discoverer for MOFED devices.\nfunc NewMOFEDDiscoverer(logger logger.Interface, driver *root.Driver) (Discover, error) {\n\tdevices := NewCharDeviceDiscoverer(\n\t\tlogger,\n\t\tdriver.DevRoot,\n\t\t[]string{\n\t\t\t\"/dev/infiniband/uverbs*\",\n\t\t\t\"/dev/infiniband/rdma_cm\",\n\t\t},\n\t)\n\n\treturn devices, nil\n}\n"
  },
  {
    "path": "internal/discover/mofed_test.go",
    "content": "/**\n# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage discover_test\n\nimport (\n\t\"path/filepath\"\n\t\"testing\"\n\n\ttestlog \"github.com/sirupsen/logrus/hooks/test\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/devices\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/discover\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/lookup/root\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/test\"\n)\n\nfunc TestNewMOFEDDiscoverer(t *testing.T) {\n\tlogger, _ := testlog.NewNullLogger()\n\n\tdefer devices.SetAllForTest()()\n\n\tmoduleRoot, err := test.GetModuleRoot()\n\trequire.NoError(t, err)\n\n\tlookupRoot := filepath.Join(moduleRoot, \"testdata\", \"lookup\")\n\n\ttestCases := []struct {\n\t\tdescription     string\n\t\trootfs          string\n\t\texpectedDevices []discover.Device\n\t}{\n\t\t{\n\t\t\tdescription: \"empty rootfs returns no devices\",\n\t\t\trootfs:      \"rootfs-empty\",\n\t\t},\n\t\t{\n\t\t\tdescription: \"rootfs with device nodes returns devices\",\n\t\t\trootfs:      \"rootfs-1\",\n\t\t\texpectedDevices: []discover.Device{\n\t\t\t\t{Path: \"/dev/infiniband/uverbs0\", HostPath: \"/dev/infiniband/uverbs0\"},\n\t\t\t\t{Path: \"/dev/infiniband/rdma_cm\", HostPath: \"/dev/infiniband/rdma_cm\"},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\tdevRoot := filepath.Join(lookupRoot, tc.rootfs)\n\t\t\tdriver := root.New(root.WithDevRoot(devRoot))\n\t\t\td, err := discover.NewMOFEDDiscoverer(logger, driver)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tdevices, err := d.Devices()\n\t\t\trequire.NoError(t, err)\n\n\t\t\trequire.EqualValues(t, tc.expectedDevices, test.StripRoot(devices, devRoot))\n\n\t\t\tmounts, err := d.Mounts()\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.Empty(t, mounts)\n\n\t\t\thooks, err := d.Hooks()\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.Empty(t, hooks)\n\n\t\t\tenvVars, err := d.EnvVars()\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.Empty(t, envVars)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/discover/mounts-to-container-path.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage discover\n\nimport (\n\t\"fmt\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/lookup\"\n)\n\n// mountsToContainerPath defines a Discoverer for a required set of mounts.\n// When these are discovered by a locator the specified container root is used\n// to construct the container path for the mount returned.\ntype mountsToContainerPath struct {\n\tNone\n\tlogger        logger.Interface\n\tlocator       lookup.Locator\n\trequired      []string\n\tcontainerRoot string\n}\n\nfunc (d *mountsToContainerPath) Mounts() ([]Mount, error) {\n\tseen := make(map[string]bool)\n\tvar mounts []Mount\n\tfor _, target := range d.required {\n\t\tif strings.Contains(target, \"*\") {\n\t\t\t// TODO: We could relax this condition.\n\t\t\treturn nil, fmt.Errorf(\"wildcard patterns are not supported: %s\", target)\n\t\t}\n\t\tcandidates, err := d.locator.Locate(target)\n\t\tif err != nil {\n\t\t\td.logger.Warningf(\"Could not locate %v: %v\", target, err)\n\t\t\tcontinue\n\t\t}\n\t\tif len(candidates) == 0 {\n\t\t\td.logger.Warningf(\"Missing %v\", target)\n\t\t\tcontinue\n\t\t}\n\t\thostPath := candidates[0]\n\t\tif seen[hostPath] {\n\t\t\td.logger.Debugf(\"Skipping duplicate mount %v\", hostPath)\n\t\t\tcontinue\n\t\t}\n\t\tseen[hostPath] = true\n\t\td.logger.Debugf(\"Located %v as %v\", target, hostPath)\n\n\t\tcontainerPath := filepath.Join(d.containerRoot, target)\n\t\td.logger.Infof(\"Selecting %v as %v\", hostPath, containerPath)\n\n\t\tmount := Mount{\n\t\t\tHostPath: hostPath,\n\t\t\tPath:     containerPath,\n\t\t\tOptions: []string{\n\t\t\t\t\"ro\",\n\t\t\t\t\"nosuid\",\n\t\t\t\t\"nodev\",\n\t\t\t\t\"rbind\",\n\t\t\t\t\"rprivate\",\n\t\t\t},\n\t\t}\n\t\tmounts = append(mounts, mount)\n\t}\n\n\treturn mounts, nil\n}\n"
  },
  {
    "path": "internal/discover/mounts-to-container-path_test.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage discover\n\nimport (\n\t\"errors\"\n\t\"testing\"\n\n\ttestlog \"github.com/sirupsen/logrus/hooks/test\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/lookup\"\n)\n\nfunc TestMountsToContainerPath(t *testing.T) {\n\tlogger, _ := testlog.NewNullLogger()\n\tmountOptions := []string{\n\t\t\"ro\",\n\t\t\"nosuid\",\n\t\t\"nodev\",\n\t\t\"rbind\",\n\t\t\"rprivate\",\n\t}\n\n\ttestCases := []struct {\n\t\tdescription    string\n\t\trequired       []string\n\t\tlocator        lookup.Locator\n\t\tcontainerRoot  string\n\t\texpectedMounts []Mount\n\t\texpectedError  error\n\t}{\n\t\t{\n\t\t\tdescription: \"containerRoot is prepended\",\n\t\t\trequired:    []string{\"a/path/exists.txt\", \"another/path/exists.txt\"},\n\t\t\tlocator: &lookup.LocatorMock{\n\t\t\t\tLocateFunc: func(s string) ([]string, error) {\n\t\t\t\t\treturn []string{\"/located/root/\" + s}, nil\n\t\t\t\t},\n\t\t\t},\n\t\t\tcontainerRoot: \"/container\",\n\t\t\texpectedMounts: []Mount{\n\t\t\t\t{\n\t\t\t\t\tHostPath: \"/located/root/a/path/exists.txt\",\n\t\t\t\t\tPath:     \"/container/a/path/exists.txt\",\n\t\t\t\t\tOptions:  mountOptions,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tHostPath: \"/located/root/another/path/exists.txt\",\n\t\t\t\t\tPath:     \"/container/another/path/exists.txt\",\n\t\t\t\t\tOptions:  mountOptions,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"duplicate mounts are skipped\",\n\t\t\trequired:    []string{\"a/path/exists.txt\", \"another/path/exists.txt\"},\n\t\t\tlocator: &lookup.LocatorMock{\n\t\t\t\tLocateFunc: func(s string) ([]string, error) {\n\t\t\t\t\treturn []string{\"/located/root/single.txt\"}, nil\n\t\t\t\t},\n\t\t\t},\n\t\t\tcontainerRoot: \"/container\",\n\t\t\texpectedMounts: []Mount{\n\t\t\t\t{\n\t\t\t\t\tHostPath: \"/located/root/single.txt\",\n\t\t\t\t\tPath:     \"/container/a/path/exists.txt\",\n\t\t\t\t\tOptions:  mountOptions,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"locator errors are ignored\",\n\t\t\trequired:    []string{\"a/path/exists.txt\"},\n\t\t\tlocator: &lookup.LocatorMock{\n\t\t\t\tLocateFunc: func(s string) ([]string, error) {\n\t\t\t\t\treturn nil, errors.New(\"not found\")\n\t\t\t\t},\n\t\t\t},\n\t\t\tcontainerRoot:  \"/container\",\n\t\t\texpectedMounts: []Mount{},\n\t\t},\n\t\t{\n\t\t\tdescription: \"not located are ignored\",\n\t\t\trequired:    []string{\"a/path/exists.txt\"},\n\t\t\tlocator: &lookup.LocatorMock{\n\t\t\t\tLocateFunc: func(s string) ([]string, error) {\n\t\t\t\t\treturn nil, nil\n\t\t\t\t},\n\t\t\t},\n\t\t\tcontainerRoot:  \"/container\",\n\t\t\texpectedMounts: []Mount{},\n\t\t},\n\t\t{\n\t\t\tdescription: \"second candidate is ignored\",\n\t\t\trequired:    []string{\"a/path/exists.txt\"},\n\t\t\tlocator: &lookup.LocatorMock{\n\t\t\t\tLocateFunc: func(s string) ([]string, error) {\n\t\t\t\t\treturn []string{\"/located/root/\" + s, \"/located2/root/\" + s}, nil\n\t\t\t\t},\n\t\t\t},\n\t\t\tcontainerRoot: \"/container\",\n\t\t\texpectedMounts: []Mount{\n\t\t\t\t{\n\t\t\t\t\tHostPath: \"/located/root/a/path/exists.txt\",\n\t\t\t\t\tPath:     \"/container/a/path/exists.txt\",\n\t\t\t\t\tOptions:  mountOptions,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\td := mountsToContainerPath{\n\t\t\t\tlogger:        logger,\n\t\t\t\tlocator:       tc.locator,\n\t\t\t\trequired:      tc.required,\n\t\t\t\tcontainerRoot: tc.containerRoot,\n\t\t\t}\n\n\t\t\tdevices, err := d.Devices()\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.Empty(t, devices)\n\n\t\t\thooks, err := d.Hooks()\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.Empty(t, hooks)\n\n\t\t\tmounts, err := d.Mounts()\n\t\t\trequire.ErrorIs(t, err, tc.expectedError)\n\t\t\trequire.ElementsMatch(t, tc.expectedMounts, mounts)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/discover/mounts.go",
    "content": "/*\n# Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n*/\n\npackage discover\n\nimport (\n\t\"fmt\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/lookup\"\n)\n\n// mounts is a generic discoverer for Mounts. It is customized by specifying the\n// required entities as a list and a Locator that is used to find the target mounts\n// based on the entry in the list.\ntype mounts struct {\n\tNone\n\tlogger   logger.Interface\n\tlookup   lookup.Locator\n\troot     string\n\trequired []string\n}\n\nvar _ Discover = (*mounts)(nil)\n\n// NewMounts creates a discoverer for the required mounts using the specified locator.\nfunc NewMounts(logger logger.Interface, lookup lookup.Locator, root string, required []string) Discover {\n\treturn WithCache(newMounts(logger, lookup, root, required))\n}\n\n// newMounts creates a discoverer for the required mounts using the specified locator.\nfunc newMounts(logger logger.Interface, lookup lookup.Locator, root string, required []string) *mounts {\n\treturn &mounts{\n\t\tlogger:   logger,\n\t\tlookup:   lookup,\n\t\troot:     filepath.Join(\"/\", root),\n\t\trequired: required,\n\t}\n}\n\nfunc (d *mounts) Mounts() ([]Mount, error) {\n\tif d.lookup == nil {\n\t\treturn nil, fmt.Errorf(\"no lookup defined\")\n\t}\n\n\tvar mounts []Mount\n\tseen := make(map[string]bool)\n\tfor _, candidate := range d.required {\n\t\td.logger.Debugf(\"Locating %v\", candidate)\n\t\tlocated, err := d.lookup.Locate(candidate)\n\t\tif err != nil {\n\t\t\td.logger.Warningf(\"Could not locate %v: %v\", candidate, err)\n\t\t\tcontinue\n\t\t}\n\t\tif len(located) == 0 {\n\t\t\td.logger.Warningf(\"Missing %v\", candidate)\n\t\t\tcontinue\n\t\t}\n\t\td.logger.Debugf(\"Located %v as %v\", candidate, located)\n\t\tfor _, p := range located {\n\t\t\tif seen[p] {\n\t\t\t\td.logger.Debugf(\"Skipping duplicate mount %v\", p)\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tr := d.relativeTo(p)\n\t\t\tif r == \"\" {\n\t\t\t\tr = p\n\t\t\t}\n\n\t\t\td.logger.Infof(\"Selecting %v as %v\", p, r)\n\t\t\tmount := Mount{\n\t\t\t\tHostPath: p,\n\t\t\t\tPath:     r,\n\t\t\t\tOptions: []string{\n\t\t\t\t\t\"ro\",\n\t\t\t\t\t\"nosuid\",\n\t\t\t\t\t\"nodev\",\n\t\t\t\t\t\"rbind\",\n\t\t\t\t\t\"rprivate\",\n\t\t\t\t},\n\t\t\t}\n\t\t\tmounts = append(mounts, mount)\n\t\t\tseen[p] = true\n\t\t}\n\t}\n\n\treturn mounts, nil\n}\n\n// relativeTo returns the path relative to the root for the file locator\nfunc (d *mounts) relativeTo(path string) string {\n\tif d.root == \"/\" {\n\t\treturn path\n\t}\n\n\treturn strings.TrimPrefix(path, d.root)\n}\n"
  },
  {
    "path": "internal/discover/mounts_test.go",
    "content": "/*\n# Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n*/\n\npackage discover\n\nimport (\n\t\"fmt\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/lookup\"\n\n\ttestlog \"github.com/sirupsen/logrus/hooks/test\"\n)\n\nfunc TestMountsReturnsEmptyDevices(t *testing.T) {\n\td := mounts{}\n\tdevices, err := d.Devices()\n\n\trequire.NoError(t, err)\n\trequire.Empty(t, devices)\n}\n\nfunc TestMounts(t *testing.T) {\n\n\tmountOptions := []string{\n\t\t\"ro\",\n\t\t\"nosuid\",\n\t\t\"nodev\",\n\t\t\"rbind\",\n\t\t\"rprivate\",\n\t}\n\n\tlogger, _ := testlog.NewNullLogger()\n\n\ttestCases := []struct {\n\t\tdescription    string\n\t\texpectedError  error\n\t\texpectedMounts []Mount\n\t\tinput          *mounts\n\t\trepeat         int\n\t}{\n\t\t{\n\t\t\tdescription:   \"nill lookup returns error\",\n\t\t\texpectedError: fmt.Errorf(\"no lookup defined\"),\n\t\t\tinput:         &mounts{},\n\t\t},\n\t\t{\n\t\t\tdescription:   \"empty required returns no mounts\",\n\t\t\texpectedError: nil,\n\t\t\tinput: &mounts{\n\t\t\t\tlookup: &lookup.LocatorMock{\n\t\t\t\t\tLocateFunc: func(string) ([]string, error) {\n\t\t\t\t\t\treturn []string{\"located\"}, nil\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription:   \"required returns located\",\n\t\t\texpectedError: nil,\n\t\t\tinput: &mounts{\n\t\t\t\tlookup: &lookup.LocatorMock{\n\t\t\t\t\tLocateFunc: func(string) ([]string, error) {\n\t\t\t\t\t\treturn []string{\"located\"}, nil\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\trequired: []string{\"required\"},\n\t\t\t},\n\t\t\texpectedMounts: []Mount{{Path: \"located\", HostPath: \"located\", Options: mountOptions}},\n\t\t},\n\t\t{\n\t\t\tdescription:   \"mounts removes located duplicates\",\n\t\t\texpectedError: nil,\n\t\t\tinput: &mounts{\n\t\t\t\tlookup: &lookup.LocatorMock{\n\t\t\t\t\tLocateFunc: func(string) ([]string, error) {\n\t\t\t\t\t\treturn []string{\"located\"}, nil\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\trequired: []string{\"required0\", \"required1\"},\n\t\t\t},\n\t\t\texpectedMounts: []Mount{{Path: \"located\", HostPath: \"located\", Options: mountOptions}},\n\t\t},\n\t\t{\n\t\t\tdescription: \"mounts skips located errors\",\n\t\t\tinput: &mounts{\n\t\t\t\tlookup: &lookup.LocatorMock{\n\t\t\t\t\tLocateFunc: func(s string) ([]string, error) {\n\t\t\t\t\t\tif s == \"error\" {\n\t\t\t\t\t\t\treturn nil, fmt.Errorf(\"error\")\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn []string{s}, nil\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\trequired: []string{\"required0\", \"error\", \"required1\"},\n\t\t\t},\n\t\t\texpectedMounts: []Mount{{Path: \"required0\", HostPath: \"required0\", Options: mountOptions}, {Path: \"required1\", HostPath: \"required1\", Options: mountOptions}},\n\t\t},\n\t\t{\n\t\t\tdescription: \"mounts skips unlocated\",\n\t\t\tinput: &mounts{\n\t\t\t\tlookup: &lookup.LocatorMock{\n\t\t\t\t\tLocateFunc: func(s string) ([]string, error) {\n\t\t\t\t\t\tif s == \"empty\" {\n\t\t\t\t\t\t\treturn nil, nil\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn []string{s}, nil\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\trequired: []string{\"required0\", \"empty\", \"required1\"},\n\t\t\t},\n\t\t\texpectedMounts: []Mount{{Path: \"required0\", HostPath: \"required0\", Options: mountOptions}, {Path: \"required1\", HostPath: \"required1\", Options: mountOptions}},\n\t\t},\n\t\t{\n\t\t\tdescription: \"mounts adds multiple\",\n\t\t\tinput: &mounts{\n\t\t\t\tlookup: &lookup.LocatorMock{\n\t\t\t\t\tLocateFunc: func(s string) ([]string, error) {\n\t\t\t\t\t\tif s == \"multiple\" {\n\t\t\t\t\t\t\treturn []string{\"multiple0\", \"multiple1\"}, nil\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn []string{s}, nil\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\trequired: []string{\"required0\", \"multiple\", \"required1\"},\n\t\t\t},\n\t\t\texpectedMounts: []Mount{\n\t\t\t\t{Path: \"required0\", HostPath: \"required0\", Options: mountOptions},\n\t\t\t\t{Path: \"multiple0\", HostPath: \"multiple0\", Options: mountOptions},\n\t\t\t\t{Path: \"multiple1\", HostPath: \"multiple1\", Options: mountOptions},\n\t\t\t\t{Path: \"required1\", HostPath: \"required1\", Options: mountOptions},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"mounts uses relative path\",\n\t\t\tinput: &mounts{\n\t\t\t\tlookup: &lookup.LocatorMock{\n\t\t\t\t\tLocateFunc: func(s string) ([]string, error) {\n\t\t\t\t\t\treturn []string{\"/some/root/located\"}, nil\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\troot:     \"/some/root\",\n\t\t\t\trequired: []string{\"required0\", \"multiple\", \"required1\"},\n\t\t\t},\n\t\t\texpectedMounts: []Mount{\n\t\t\t\t{Path: \"/located\", HostPath: \"/some/root/located\", Options: mountOptions},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"multiple mounts ordering\",\n\t\t\tinput: &mounts{\n\t\t\t\tlookup: &lookup.LocatorMock{\n\t\t\t\t\tLocateFunc: func(s string) ([]string, error) {\n\t\t\t\t\t\treturn []string{\n\t\t\t\t\t\t\t\"first\",\n\t\t\t\t\t\t\t\"second\",\n\t\t\t\t\t\t\t\"third\",\n\t\t\t\t\t\t\t\"fourth\",\n\t\t\t\t\t\t\t\"second\",\n\t\t\t\t\t\t\t\"second\",\n\t\t\t\t\t\t\t\"second\",\n\t\t\t\t\t\t\t\"fifth\",\n\t\t\t\t\t\t\t\"sixth\"}, nil\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\trequired: []string{\"\"},\n\t\t\t},\n\t\t\texpectedMounts: []Mount{\n\t\t\t\t{Path: \"first\", HostPath: \"first\", Options: mountOptions},\n\t\t\t\t{Path: \"second\", HostPath: \"second\", Options: mountOptions},\n\t\t\t\t{Path: \"third\", HostPath: \"third\", Options: mountOptions},\n\t\t\t\t{Path: \"fourth\", HostPath: \"fourth\", Options: mountOptions},\n\t\t\t\t{Path: \"fifth\", HostPath: \"fifth\", Options: mountOptions},\n\t\t\t\t{Path: \"sixth\", HostPath: \"sixth\", Options: mountOptions},\n\t\t\t},\n\t\t\trepeat: 10,\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tfor i := 1; ; i++ {\n\t\t\ttest_name := tc.description\n\t\t\tif tc.repeat > 1 {\n\t\t\t\ttest_name += fmt.Sprintf(\"/%d\", i)\n\t\t\t}\n\t\t\tsuccess := t.Run(test_name, func(t *testing.T) {\n\t\t\t\ttc.input.logger = logger\n\t\t\t\tmounts, err := tc.input.Mounts()\n\n\t\t\t\tif tc.expectedError != nil {\n\t\t\t\t\trequire.Error(t, err)\n\t\t\t\t} else {\n\t\t\t\t\trequire.NoError(t, err)\n\t\t\t\t}\n\t\t\t\trequire.EqualValues(t, tc.expectedMounts, mounts)\n\n\t\t\t\t// We check that the mock is called for each element of required\n\t\t\t\tif i == 1 && tc.input.lookup != nil {\n\t\t\t\t\tmock := tc.input.lookup.(*lookup.LocatorMock)\n\t\t\t\t\trequire.Len(t, mock.LocateCalls(), len(tc.input.required))\n\t\t\t\t\tvar args []string\n\t\t\t\t\tfor _, c := range mock.LocateCalls() {\n\t\t\t\t\t\targs = append(args, c.S)\n\t\t\t\t\t}\n\t\t\t\t\trequire.EqualValues(t, args, tc.input.required)\n\t\t\t\t}\n\t\t\t})\n\t\t\tif !success || i >= tc.repeat {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "internal/discover/none.go",
    "content": "/*\n# Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n*/\n\npackage discover\n\n// None is a null discoverer that returns an empty list of devices and\n// mounts.\ntype None struct{}\n\nvar _ Discover = (*None)(nil)\n\n// Devices returns an empty list of devices\nfunc (e None) Devices() ([]Device, error) {\n\treturn nil, nil\n}\n\n// EnvVars returns an empty list of devices\nfunc (e None) EnvVars() ([]EnvVar, error) {\n\treturn nil, nil\n}\n\n// Mounts returns an empty list of mounts\nfunc (e None) Mounts() ([]Mount, error) {\n\treturn nil, nil\n}\n\n// Hooks returns an empty list of hooks\nfunc (e None) Hooks() ([]Hook, error) {\n\treturn nil, nil\n}\n"
  },
  {
    "path": "internal/discover/none_test.go",
    "content": "/*\n# Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n*/\n\npackage discover\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestNone(t *testing.T) {\n\td := None{}\n\n\tmounts, err := d.Mounts()\n\trequire.NoError(t, err)\n\trequire.Empty(t, mounts)\n}\n"
  },
  {
    "path": "internal/discover/nvswitch.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage discover\n\nimport (\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/lookup/root\"\n)\n\n// NewNvSwitchDiscoverer creates a discoverer for NVSWITCH devices.\nfunc NewNvSwitchDiscoverer(logger logger.Interface, driver *root.Driver) (Discover, error) {\n\tdevices := NewCharDeviceDiscoverer(\n\t\tlogger,\n\t\tdriver.DevRoot,\n\t\t[]string{\n\t\t\t\"/dev/nvidia-nvswitchctl\",\n\t\t\t\"/dev/nvidia-nvswitch*\",\n\t\t},\n\t)\n\n\treturn devices, nil\n}\n"
  },
  {
    "path": "internal/discover/nvswitch_test.go",
    "content": "/**\n# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage discover_test\n\nimport (\n\t\"path/filepath\"\n\t\"testing\"\n\n\ttestlog \"github.com/sirupsen/logrus/hooks/test\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/devices\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/discover\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/lookup/root\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/test\"\n)\n\nfunc TestNewNvSwitchDiscoverer(t *testing.T) {\n\tlogger, _ := testlog.NewNullLogger()\n\n\tdefer devices.SetAllForTest()()\n\n\tmoduleRoot, err := test.GetModuleRoot()\n\trequire.NoError(t, err)\n\n\tlookupRoot := filepath.Join(moduleRoot, \"testdata\", \"lookup\")\n\n\ttestCases := []struct {\n\t\tdescription     string\n\t\trootfs          string\n\t\texpectedDevices []discover.Device\n\t}{\n\t\t{\n\t\t\tdescription: \"empty rootfs returns no devices\",\n\t\t\trootfs:      \"rootfs-empty\",\n\t\t},\n\t\t{\n\t\t\tdescription: \"rootfs with device nodes returns devices\",\n\t\t\trootfs:      \"rootfs-1\",\n\t\t\texpectedDevices: []discover.Device{\n\t\t\t\t{Path: \"/dev/nvidia-nvswitchctl\", HostPath: \"/dev/nvidia-nvswitchctl\"},\n\t\t\t\t{Path: \"/dev/nvidia-nvswitch0\", HostPath: \"/dev/nvidia-nvswitch0\"},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\tdevRoot := filepath.Join(lookupRoot, tc.rootfs)\n\t\t\tdriver := root.New(root.WithDevRoot(devRoot))\n\t\t\td, err := discover.NewNvSwitchDiscoverer(logger, driver)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tdevices, err := d.Devices()\n\t\t\trequire.NoError(t, err)\n\n\t\t\trequire.EqualValues(t, tc.expectedDevices, test.StripRoot(devices, devRoot))\n\n\t\t\tmounts, err := d.Mounts()\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.Empty(t, mounts)\n\n\t\t\thooks, err := d.Hooks()\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.Empty(t, hooks)\n\n\t\t\tenvVars, err := d.EnvVars()\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.Empty(t, envVars)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/discover/symlinks.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage discover\n\nimport (\n\t\"debug/elf\"\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n)\n\ntype Symlink struct {\n\ttarget string\n\tlink   string\n}\n\nfunc (s *Symlink) String() string {\n\treturn fmt.Sprintf(\"%s::%s\", s.target, s.link)\n}\n\ntype additionalSymlinks struct {\n\tlogger logger.Interface\n\tDiscover\n\tversion     string\n\thookCreator HookCreator\n}\n\n// WithDriverDotSoSymlinks decorates the provided discoverer.\n// A hook is added that checks for specific driver symlinks that need to be created.\nfunc WithDriverDotSoSymlinks(logger logger.Interface, mounts Discover, version string, hookCreator HookCreator) Discover {\n\tif version == \"\" {\n\t\tversion = \"*.*\"\n\t}\n\treturn &additionalSymlinks{\n\t\tlogger:      logger,\n\t\tDiscover:    mounts,\n\t\thookCreator: hookCreator,\n\t\tversion:     version,\n\t}\n}\n\n// Hooks returns a hook to create the additional symlinks based on the mounts.\nfunc (d *additionalSymlinks) Hooks() ([]Hook, error) {\n\tmounts, err := d.Mounts()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to get library mounts: %v\", err)\n\t}\n\thooks, err := d.Discover.Hooks()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to get hooks: %v\", err)\n\t}\n\n\tvar links []string\n\tprocessedPaths := make(map[string]bool)\n\tprocessedLinks := make(map[string]bool)\n\tfor _, mount := range mounts {\n\t\tif processedPaths[mount.Path] {\n\t\t\tcontinue\n\t\t}\n\t\tprocessedPaths[mount.Path] = true\n\n\t\tlinksForMount := d.getLinksForMount(mount.Path)\n\t\tsoSymlinks, err := d.getDotSoSymlinks(mount.HostPath, mount.Path)\n\t\tif err != nil {\n\t\t\td.logger.Warningf(\"Failed to get soname symlinks for %+v: %v\", mount, err)\n\t\t}\n\t\tlinksForMount = append(linksForMount, soSymlinks...)\n\n\t\tfor _, link := range linksForMount {\n\t\t\tif processedLinks[link] {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tprocessedLinks[link] = true\n\t\t\tlinks = append(links, link)\n\t\t}\n\t}\n\n\tif len(links) == 0 {\n\t\treturn hooks, nil\n\t}\n\n\tcreateSymlinkHooks, err := d.hookCreator.Create(\"create-symlinks\", links...).Hooks()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to create symlink hook: %v\", err)\n\t}\n\n\treturn append(hooks, createSymlinkHooks...), nil\n}\n\n// getLinksForMount maps the path to created links if any.\nfunc (d additionalSymlinks) getLinksForMount(path string) []string {\n\tdir, filename := filepath.Split(path)\n\tswitch {\n\tcase d.isDriverLibrary(\"libcuda.so\", filename):\n\t\t// XXX Many applications wrongly assume that libcuda.so exists (e.g. with dlopen).\n\t\t// create libcuda.so -> libcuda.so.1 symlink\n\t\tlink := fmt.Sprintf(\"%s::%s\", \"libcuda.so.1\", filepath.Join(dir, \"libcuda.so\"))\n\t\treturn []string{link}\n\tcase d.isDriverLibrary(\"libGLX_nvidia.so\", filename):\n\t\t// XXX GLVND requires this symlink for indirect GLX support.\n\t\t// create libGLX_indirect.so.0 -> libGLX_nvidia.so.VERSION symlink\n\t\tlink := fmt.Sprintf(\"%s::%s\", filename, filepath.Join(dir, \"libGLX_indirect.so.0\"))\n\t\treturn []string{link}\n\tcase d.isDriverLibrary(\"libnvidia-opticalflow.so\", filename):\n\t\t// XXX Fix missing symlink for libnvidia-opticalflow.so.\n\t\t// create libnvidia-opticalflow.so -> libnvidia-opticalflow.so.1 symlink\n\t\tlink := fmt.Sprintf(\"%s::%s\", \"libnvidia-opticalflow.so.1\", filepath.Join(dir, \"libnvidia-opticalflow.so\"))\n\t\treturn []string{link}\n\t}\n\treturn nil\n}\n\n// isDriverLibrary checks whether the specified filename is a specific driver library.\nfunc (d additionalSymlinks) isDriverLibrary(libraryName string, filename string) bool {\n\tpattern := libraryName + \".\" + d.version\n\tmatch, _ := filepath.Match(pattern, filename)\n\treturn match\n}\n\nfunc (d *additionalSymlinks) getDotSoSymlinks(hostLibraryPath string, libraryContainerPath string) ([]string, error) {\n\thostLibraryDir := filepath.Dir(hostLibraryPath)\n\tcontainerLibraryDir, libraryName := filepath.Split(libraryContainerPath)\n\tif !d.isDriverLibrary(\"*\", libraryName) {\n\t\treturn nil, nil\n\t}\n\n\tsoname, err := getSoname(hostLibraryPath)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar soSymlinks []string\n\t// Create the SONAME -> libraryName symlink.\n\t// If the soname matches the library path, or the expected SONAME link does\n\t// not exist on the host, we do not create it in the container.\n\tif soname != libraryName && d.linkExistsInDir(hostLibraryDir, soname) {\n\t\ts := Symlink{\n\t\t\ttarget: libraryName,\n\t\t\tlink:   filepath.Join(containerLibraryDir, soname),\n\t\t}\n\t\tsoSymlinks = append(soSymlinks, s.String())\n\t}\n\n\tsoTarget := soname\n\tif soTarget == \"\" {\n\t\tsoTarget = libraryName\n\t}\n\t// Create the .so -> SONAME symlink.\n\t// If the .so link name matches the SONAME link, or the expected .so link\n\t// does not exist on the host, we do not create it in the container.\n\tif soLink := getSoLink(soTarget); soLink != soTarget && d.linkExistsInDir(hostLibraryDir, soLink) {\n\t\ts := Symlink{\n\t\t\ttarget: soTarget,\n\t\t\tlink:   filepath.Join(containerLibraryDir, soLink),\n\t\t}\n\t\tsoSymlinks = append(soSymlinks, s.String())\n\t}\n\treturn soSymlinks, nil\n}\n\nfunc (d *additionalSymlinks) linkExistsInDir(dir string, link string) bool {\n\tif link == \"\" {\n\t\treturn false\n\t}\n\tlinkPath := filepath.Join(dir, link)\n\texists, err := linkExists(linkPath)\n\tif err != nil {\n\t\td.logger.Warningf(\"Failed to check symlink %q: %v\", linkPath, err)\n\t\treturn false\n\t}\n\treturn exists\n}\n\n// linkExists returns true if the specified symlink exists.\n// We use a function variable here to allow this to be overridden for testing.\nvar linkExists = func(linkPath string) (bool, error) {\n\tinfo, err := os.Lstat(linkPath)\n\tif os.IsNotExist(err) {\n\t\treturn false, nil\n\t}\n\tif err != nil {\n\t\treturn false, err\n\t}\n\t// The linkPath is a symlink.\n\tif info.Mode()&os.ModeSymlink != 0 {\n\t\treturn true, nil\n\t}\n\n\treturn false, nil\n}\n\n// getSoname returns the soname for the specified library path.\n// We use a function variable here to allow this to be overridden for testing.\nvar getSoname = func(libraryPath string) (string, error) {\n\tlib, err := elf.Open(libraryPath)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tdefer lib.Close()\n\n\tsonames, err := lib.DynString(elf.DT_SONAME)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tif len(sonames) > 1 {\n\t\treturn \"\", fmt.Errorf(\"multiple SONAMEs detected for %v: %v\", libraryPath, sonames)\n\t}\n\tif len(sonames) == 0 {\n\t\treturn filepath.Base(libraryPath), nil\n\t}\n\treturn sonames[0], nil\n}\n\n// getSoLink returns the filename for the .so symlink that should point to the\n// soname symlink for the specified library.\n// If the soname / library name does not end in a `.so[.*]` then an empty string\n// is returned.\nfunc getSoLink(soname string) string {\n\text := filepath.Ext(soname)\n\tif ext == \"\" {\n\t\treturn \"\"\n\t}\n\tif ext == \".so\" {\n\t\treturn soname\n\t}\n\treturn getSoLink(strings.TrimSuffix(soname, ext))\n}\n"
  },
  {
    "path": "internal/discover/symlinks_test.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage discover\n\nimport (\n\t\"strings\"\n\t\"testing\"\n\n\ttestlog \"github.com/sirupsen/logrus/hooks/test\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestWithWithDriverDotSoSymlinks(t *testing.T) {\n\tlogger, _ := testlog.NewNullLogger()\n\ttestCases := []struct {\n\t\tdescription          string\n\t\tdiscover             Discover\n\t\tversion              string\n\t\texpectedDevices      []Device\n\t\texpectedDevicesError error\n\t\texpectedHooks        []Hook\n\t\texpectedHooksError   error\n\t\texpectedMounts       []Mount\n\t\texpectedMountsError  error\n\t}{\n\t\t{\n\t\t\tdescription: \"empty discoverer remains empty\",\n\t\t\tdiscover:    None{},\n\t\t},\n\t\t{\n\t\t\tdescription: \"non-matching discoverer remains unchanged\",\n\t\t\tdiscover: &DiscoverMock{\n\t\t\t\tDevicesFunc: func() ([]Device, error) {\n\t\t\t\t\tdevices := []Device{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/dev/dev1\",\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t\treturn devices, nil\n\t\t\t\t},\n\t\t\t\tHooksFunc: func() ([]Hook, error) {\n\t\t\t\t\thooks := []Hook{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tLifecycle: \"prestart\",\n\t\t\t\t\t\t\tPath:      \"/path/to/a/hook\",\n\t\t\t\t\t\t\tArgs:      []string{\"hook\", \"arg1\", \"arg2\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t\treturn hooks, nil\n\t\t\t\t},\n\t\t\t\tMountsFunc: func() ([]Mount, error) {\n\t\t\t\t\tmounts := []Mount{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/usr/lib/libnotcuda.so.1.2.3\",\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t\treturn mounts, nil\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedDevices: []Device{\n\t\t\t\t{\n\t\t\t\t\tPath: \"/dev/dev1\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedHooks: []Hook{\n\t\t\t\t{\n\t\t\t\t\tLifecycle: \"prestart\",\n\t\t\t\t\tPath:      \"/path/to/a/hook\",\n\t\t\t\t\tArgs:      []string{\"hook\", \"arg1\", \"arg2\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedMounts: []Mount{\n\t\t\t\t{\n\t\t\t\t\tPath: \"/usr/lib/libnotcuda.so.1.2.3\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"libcuda.so.RM_VERSION is matched\",\n\t\t\tdiscover: &DiscoverMock{\n\t\t\t\tDevicesFunc: func() ([]Device, error) {\n\t\t\t\t\treturn nil, nil\n\t\t\t\t},\n\t\t\t\tHooksFunc: func() ([]Hook, error) {\n\t\t\t\t\treturn nil, nil\n\t\t\t\t},\n\t\t\t\tMountsFunc: func() ([]Mount, error) {\n\t\t\t\t\tmounts := []Mount{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/usr/lib/libcuda.so.1.2.3\",\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t\treturn mounts, nil\n\t\t\t\t},\n\t\t\t},\n\t\t\tversion: \"1.2.3\",\n\t\t\texpectedMounts: []Mount{\n\t\t\t\t{\n\t\t\t\t\tPath: \"/usr/lib/libcuda.so.1.2.3\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedHooks: []Hook{\n\t\t\t\t{\n\t\t\t\t\tLifecycle: \"createContainer\",\n\t\t\t\t\tPath:      \"/usr/bin/nvidia-cdi-hook\",\n\t\t\t\t\tArgs:      []string{\"nvidia-cdi-hook\", \"create-symlinks\", \"--link\", \"libcuda.so.1::/usr/lib/libcuda.so\"},\n\t\t\t\t\tEnv:       []string{\"NVIDIA_CTK_DEBUG=false\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"libcuda.so.RM_VERSION is matched by pattern\",\n\t\t\tdiscover: &DiscoverMock{\n\t\t\t\tDevicesFunc: func() ([]Device, error) {\n\t\t\t\t\treturn nil, nil\n\t\t\t\t},\n\t\t\t\tHooksFunc: func() ([]Hook, error) {\n\t\t\t\t\treturn nil, nil\n\t\t\t\t},\n\t\t\t\tMountsFunc: func() ([]Mount, error) {\n\t\t\t\t\tmounts := []Mount{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/usr/lib/libcuda.so.1.2.3\",\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t\treturn mounts, nil\n\t\t\t\t},\n\t\t\t},\n\t\t\tversion: \"\",\n\t\t\texpectedMounts: []Mount{\n\t\t\t\t{\n\t\t\t\t\tPath: \"/usr/lib/libcuda.so.1.2.3\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedHooks: []Hook{\n\t\t\t\t{\n\t\t\t\t\tLifecycle: \"createContainer\",\n\t\t\t\t\tPath:      \"/usr/bin/nvidia-cdi-hook\",\n\t\t\t\t\tArgs:      []string{\"nvidia-cdi-hook\", \"create-symlinks\", \"--link\", \"libcuda.so.1::/usr/lib/libcuda.so\"},\n\t\t\t\t\tEnv:       []string{\"NVIDIA_CTK_DEBUG=false\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"beta libcuda.so.RM_VERSION is matched\",\n\t\t\tdiscover: &DiscoverMock{\n\t\t\t\tDevicesFunc: func() ([]Device, error) {\n\t\t\t\t\treturn nil, nil\n\t\t\t\t},\n\t\t\t\tHooksFunc: func() ([]Hook, error) {\n\t\t\t\t\treturn nil, nil\n\t\t\t\t},\n\t\t\t\tMountsFunc: func() ([]Mount, error) {\n\t\t\t\t\tmounts := []Mount{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/usr/lib/libcuda.so.1.2\",\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t\treturn mounts, nil\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedMounts: []Mount{\n\t\t\t\t{\n\t\t\t\t\tPath: \"/usr/lib/libcuda.so.1.2\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedHooks: []Hook{\n\t\t\t\t{\n\t\t\t\t\tLifecycle: \"createContainer\",\n\t\t\t\t\tPath:      \"/usr/bin/nvidia-cdi-hook\",\n\t\t\t\t\tArgs:      []string{\"nvidia-cdi-hook\", \"create-symlinks\", \"--link\", \"libcuda.so.1::/usr/lib/libcuda.so\"},\n\t\t\t\t\tEnv:       []string{\"NVIDIA_CTK_DEBUG=false\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"non-matching libcuda.so.RM_VERSION is ignored\",\n\t\t\tdiscover: &DiscoverMock{\n\t\t\t\tDevicesFunc: func() ([]Device, error) {\n\t\t\t\t\treturn nil, nil\n\t\t\t\t},\n\t\t\t\tHooksFunc: func() ([]Hook, error) {\n\t\t\t\t\treturn nil, nil\n\t\t\t\t},\n\t\t\t\tMountsFunc: func() ([]Mount, error) {\n\t\t\t\t\tmounts := []Mount{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/usr/lib/libcuda.so.1.2.3\",\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t\treturn mounts, nil\n\t\t\t\t},\n\t\t\t},\n\t\t\tversion: \"4.5.6\",\n\t\t\texpectedMounts: []Mount{\n\t\t\t\t{\n\t\t\t\t\tPath: \"/usr/lib/libcuda.so.1.2.3\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"hooks are extended\",\n\t\t\tdiscover: &DiscoverMock{\n\t\t\t\tDevicesFunc: func() ([]Device, error) {\n\t\t\t\t\treturn nil, nil\n\t\t\t\t},\n\t\t\t\tHooksFunc: func() ([]Hook, error) {\n\t\t\t\t\thooks := []Hook{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tLifecycle: \"prestart\",\n\t\t\t\t\t\t\tPath:      \"/path/to/a/hook\",\n\t\t\t\t\t\t\tArgs:      []string{\"hook\", \"arg1\", \"arg2\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t\treturn hooks, nil\n\t\t\t\t},\n\t\t\t\tMountsFunc: func() ([]Mount, error) {\n\t\t\t\t\tmounts := []Mount{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/usr/lib/libcuda.so.1.2.3\",\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t\treturn mounts, nil\n\t\t\t\t},\n\t\t\t},\n\t\t\tversion: \"1.2.3\",\n\t\t\texpectedMounts: []Mount{\n\t\t\t\t{\n\t\t\t\t\tPath: \"/usr/lib/libcuda.so.1.2.3\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedHooks: []Hook{\n\t\t\t\t{\n\t\t\t\t\tLifecycle: \"prestart\",\n\t\t\t\t\tPath:      \"/path/to/a/hook\",\n\t\t\t\t\tArgs:      []string{\"hook\", \"arg1\", \"arg2\"},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tLifecycle: \"createContainer\",\n\t\t\t\t\tPath:      \"/usr/bin/nvidia-cdi-hook\",\n\t\t\t\t\tArgs:      []string{\"nvidia-cdi-hook\", \"create-symlinks\", \"--link\", \"libcuda.so.1::/usr/lib/libcuda.so\"},\n\t\t\t\t\tEnv:       []string{\"NVIDIA_CTK_DEBUG=false\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"all driver so symlinks are matched\",\n\t\t\tdiscover: &DiscoverMock{\n\t\t\t\tDevicesFunc: func() ([]Device, error) {\n\t\t\t\t\treturn nil, nil\n\t\t\t\t},\n\t\t\t\tHooksFunc: func() ([]Hook, error) {\n\t\t\t\t\treturn nil, nil\n\t\t\t\t},\n\t\t\t\tMountsFunc: func() ([]Mount, error) {\n\t\t\t\t\tmounts := []Mount{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/usr/lib/libcuda.so.1.2.3\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/usr/lib/libGLX_nvidia.so.1.2.3\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/usr/lib/libnvidia-opticalflow.so.1.2.3\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/usr/lib/libanother.so.1.2.3\",\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t\treturn mounts, nil\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedMounts: []Mount{\n\t\t\t\t{\n\t\t\t\t\tPath: \"/usr/lib/libcuda.so.1.2.3\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tPath: \"/usr/lib/libGLX_nvidia.so.1.2.3\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tPath: \"/usr/lib/libnvidia-opticalflow.so.1.2.3\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tPath: \"/usr/lib/libanother.so.1.2.3\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedHooks: []Hook{\n\t\t\t\t{\n\t\t\t\t\tLifecycle: \"createContainer\",\n\t\t\t\t\tPath:      \"/usr/bin/nvidia-cdi-hook\",\n\t\t\t\t\tArgs: []string{\n\t\t\t\t\t\t\"nvidia-cdi-hook\", \"create-symlinks\",\n\t\t\t\t\t\t\"--link\", \"libcuda.so.1::/usr/lib/libcuda.so\",\n\t\t\t\t\t\t\"--link\", \"libGLX_nvidia.so.1.2.3::/usr/lib/libGLX_indirect.so.0\",\n\t\t\t\t\t\t\"--link\", \"libnvidia-opticalflow.so.1::/usr/lib/libnvidia-opticalflow.so\",\n\t\t\t\t\t},\n\t\t\t\t\tEnv: []string{\"NVIDIA_CTK_DEBUG=false\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\thookCreator := NewHookCreator()\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\td := WithDriverDotSoSymlinks(\n\t\t\t\tlogger,\n\t\t\t\ttc.discover,\n\t\t\t\ttc.version,\n\t\t\t\thookCreator,\n\t\t\t)\n\n\t\t\tdevices, err := d.Devices()\n\t\t\trequire.ErrorIs(t, err, tc.expectedDevicesError)\n\t\t\trequire.EqualValues(t, tc.expectedDevices, devices)\n\n\t\t\thooks, err := d.Hooks()\n\t\t\trequire.ErrorIs(t, err, tc.expectedHooksError)\n\t\t\trequire.EqualValues(t, tc.expectedHooks, hooks)\n\n\t\t\tmounts, err := d.Mounts()\n\t\t\trequire.ErrorIs(t, err, tc.expectedMountsError)\n\t\t\trequire.EqualValues(t, tc.expectedMounts, mounts)\n\t\t})\n\t}\n}\n\nfunc TestGetDotSoSymlinks(t *testing.T) {\n\ttestCases := []struct {\n\t\tdescription          string\n\t\thostLibraryPath      string\n\t\tcontainerLibraryPath string\n\t\tgetSonameFunc        func(string) (string, error)\n\t\tlinkExistsFunc       func(string) (bool, error)\n\t\texpectedError        error\n\t\texpectedSymlinks     []string\n\t}{\n\t\t{\n\t\t\tdescription:     \"libcuda.soname links\",\n\t\t\thostLibraryPath: \"/usr/lib/libcuda.so.999.88.77\",\n\t\t\tgetSonameFunc: func(s string) (string, error) {\n\t\t\t\treturn \"libcuda.so.1\", nil\n\t\t\t},\n\t\t\texpectedError: nil,\n\t\t\texpectedSymlinks: []string{\n\t\t\t\t\"libcuda.so.999.88.77::/usr/lib/libcuda.so.1\",\n\t\t\t\t\"libcuda.so.1::/usr/lib/libcuda.so\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription:          \"libcuda.soname links uses container path\",\n\t\t\thostLibraryPath:      \"/usr/lib/libcuda.so.999.88.77\",\n\t\t\tcontainerLibraryPath: \"/some/container/path/libcuda.so.999.88.77\",\n\t\t\tgetSonameFunc: func(s string) (string, error) {\n\t\t\t\treturn \"libcuda.so.1\", nil\n\t\t\t},\n\t\t\texpectedError: nil,\n\t\t\texpectedSymlinks: []string{\n\t\t\t\t\"libcuda.so.999.88.77::/some/container/path/libcuda.so.1\",\n\t\t\t\t\"libcuda.so.1::/some/container/path/libcuda.so\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription:     \"equal soname uses library path\",\n\t\t\thostLibraryPath: \"/usr/lib/libcuda.so.999.88.77\",\n\t\t\tgetSonameFunc: func(s string) (string, error) {\n\t\t\t\treturn \"libcuda.so.999.88.77\", nil\n\t\t\t},\n\t\t\texpectedError: nil,\n\t\t\texpectedSymlinks: []string{\n\t\t\t\t\"libcuda.so.999.88.77::/usr/lib/libcuda.so\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription:     \"nonexistent symlink is ignored\",\n\t\t\thostLibraryPath: \"/usr/lib/libcuda.so.999.88.77\",\n\t\t\tgetSonameFunc: func(s string) (string, error) {\n\t\t\t\treturn \"libcuda.so.1\", nil\n\t\t\t},\n\t\t\texpectedError: nil,\n\t\t\tlinkExistsFunc: func(s string) (bool, error) {\n\t\t\t\treturn strings.HasSuffix(s, \"libcuda.so.1\"), nil\n\t\t\t},\n\t\t\texpectedSymlinks: []string{\n\t\t\t\t\"libcuda.so.999.88.77::/usr/lib/libcuda.so.1\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription:     \"soname is skipped\",\n\t\t\thostLibraryPath: \"/usr/lib/libcuda.so.999.88.77\",\n\t\t\tgetSonameFunc: func(s string) (string, error) {\n\t\t\t\treturn \"\", nil\n\t\t\t},\n\t\t\texpectedError: nil,\n\t\t\tlinkExistsFunc: func(s string) (bool, error) {\n\t\t\t\treturn strings.HasSuffix(s, \"libcuda.so\"), nil\n\t\t\t},\n\t\t\texpectedSymlinks: []string{\n\t\t\t\t\"libcuda.so.999.88.77::/usr/lib/libcuda.so\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tif tc.containerLibraryPath == \"\" {\n\t\t\ttc.containerLibraryPath = tc.hostLibraryPath\n\t\t}\n\t\tif tc.linkExistsFunc == nil {\n\t\t\ttc.linkExistsFunc = func(string) (bool, error) {\n\t\t\t\treturn true, nil\n\t\t\t}\n\t\t}\n\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\tdefer setGetSoname(tc.getSonameFunc)()\n\t\t\tdefer setLinkExists(tc.linkExistsFunc)()\n\n\t\t\tsut := &additionalSymlinks{version: \"*.*\"}\n\t\t\tsymlinks, err := sut.getDotSoSymlinks(tc.hostLibraryPath, tc.containerLibraryPath)\n\n\t\t\tif tc.expectedError == nil {\n\t\t\t\trequire.NoError(t, err)\n\t\t\t} else {\n\t\t\t\trequire.EqualError(t, err, tc.expectedError.Error())\n\t\t\t}\n\n\t\t\trequire.EqualValues(t, tc.expectedSymlinks, symlinks)\n\t\t})\n\t}\n}\n\nfunc TestGetSoLink(t *testing.T) {\n\ttestCases := []struct {\n\t\tdescription    string\n\t\tinput          string\n\t\texpectedSoLink string\n\t}{\n\t\t{\n\t\t\tdescription:    \"empty string\",\n\t\t\tinput:          \"\",\n\t\t\texpectedSoLink: \"\",\n\t\t},\n\t\t{\n\t\t\tdescription:    \"cuda driver library\",\n\t\t\tinput:          \"libcuda.so.999.88.77\",\n\t\t\texpectedSoLink: \"libcuda.so\",\n\t\t},\n\t\t{\n\t\t\tdescription:    \"beta cuda driver library\",\n\t\t\tinput:          \"libcuda.so.999.88\",\n\t\t\texpectedSoLink: \"libcuda.so\",\n\t\t},\n\t\t{\n\t\t\tdescription:    \"no .so in libname\",\n\t\t\tinput:          \"foo.bar.baz\",\n\t\t\texpectedSoLink: \"\",\n\t\t},\n\t\t{\n\t\t\tdescription:    \"multiple .so in libname\",\n\t\t\tinput:          \"foo.so.so.566\",\n\t\t\texpectedSoLink: \"foo.so.so\",\n\t\t},\n\t\t{\n\t\t\tdescription:    \"no suffix after so\",\n\t\t\tinput:          \"foo.so\",\n\t\t\texpectedSoLink: \"foo.so\",\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\n\t\t\tsoLink := getSoLink(tc.input)\n\n\t\t\trequire.Equal(t, tc.expectedSoLink, soLink)\n\t\t})\n\t}\n}\n\nfunc setGetSoname(override func(string) (string, error)) func() {\n\toriginal := getSoname\n\tgetSoname = override\n\n\treturn func() {\n\t\tgetSoname = original\n\t}\n}\n\nfunc setLinkExists(override func(string) (bool, error)) func() {\n\toriginal := linkExists\n\tlinkExists = override\n\n\treturn func() {\n\t\tlinkExists = original\n\t}\n}\n"
  },
  {
    "path": "internal/dxcore/api.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage dxcore\n\n// dxcore stores a reference the dxcore dynamic library\nvar dxcore *context\n\n// Init initializes the dxcore dynamic library\nfunc Init() error {\n\tc, err := initContext()\n\tif err != nil {\n\t\treturn err\n\t}\n\tdxcore = c\n\treturn nil\n}\n\n// Shutdown closes the dxcore dynamic library\nfunc Shutdown() error {\n\tif dxcore != nil && dxcore.initialized != 0 {\n\t\tdxcore.deinitContext()\n\t}\n\treturn nil\n}\n\n// GetDriverStorePaths returns the list of driver store paths\nfunc GetDriverStorePaths() []string {\n\tvar paths []string\n\tselected := make(map[string]bool)\n\n\tfor i := 0; i < dxcore.getAdapterCount(); i++ {\n\t\tpath := dxcore.getAdapter(i).getDriverStorePath()\n\t\tif selected[path] {\n\t\t\tcontinue\n\t\t}\n\t\tselected[path] = true\n\t\tpaths = append(paths, path)\n\t}\n\n\treturn paths\n}\n"
  },
  {
    "path": "internal/dxcore/dxcore.c",
    "content": "/*\n * Copyright (c) 2020, NVIDIA CORPORATION. All rights reserved.\n */\n\n#include <dlfcn.h>\n#include <stdlib.h>\n\n#include \"dxcore.h\"\n\n// We define log_write as an empty macro to allow dxcore to remain unchanged.\n#define log_write(...)\n\n// We define the following macros to allow dxcore to remain largely unchanged.\n#define log_info(msg) log_write('I', __FILE__, __LINE__, msg)\n#define log_warn(msg) log_write('W', __FILE__, __LINE__, msg)\n#define log_err(msg)  log_write('E', __FILE__, __LINE__, msg)\n#define log_infof(fmt, ...) log_write('I', __FILE__, __LINE__, fmt, __VA_ARGS__)\n#define log_warnf(fmt, ...) log_write('W', __FILE__, __LINE__, fmt, __VA_ARGS__)\n#define log_errf(fmt, ...)  log_write('E', __FILE__, __LINE__, fmt, __VA_ARGS__)\n\n\n#define DXCORE_MAX_PATH 260\n\n/*\n * List of components we expect to find in the driver store that we need to mount\n */\nstatic const char * const dxcore_nvidia_driver_store_components[] = {\n        \"libcuda.so.1.1\",                   /* Core library for cuda support */\n        \"libcuda_loader.so\",                /* Core library for cuda support on WSL */\n        \"libnvidia-ptxjitcompiler.so.1\",    /* Core library for PTX Jit support */\n        \"libnvidia-ml.so.1\",                /* Core library for nvml */\n        \"libnvidia-ml_loader.so\",           /* Core library for nvml on WSL */\n        \"nvidia-smi\",                       /* nvidia-smi binary*/\n        \"nvcubins.bin\",                     /* Binary containing GPU code for cuda */\n};\n\n\n/*\n * List of functions and structures we need to communicate with libdxcore.\n * Documentation on these functions can be found on docs.microsoft.com in d3dkmthk.\n */\n\nstruct dxcore_enumAdapters2;\nstruct dxcore_enumAdapters3;\nstruct dxcore_queryAdapterInfo;\n\ntypedef int(*pfnDxcoreEnumAdapters2)(struct dxcore_enumAdapters2* pParams);\ntypedef int(*pfnDxcoreEnumAdapters3)(struct dxcore_enumAdapters3* pParams);\ntypedef int(*pfnDxcoreQueryAdapterInfo)(struct dxcore_queryAdapterInfo* pParams);\n\nstruct dxcore_lib {\n        void* hDxcoreLib;\n        pfnDxcoreEnumAdapters2 pDxcoreEnumAdapters2;\n        pfnDxcoreEnumAdapters3 pDxcoreEnumAdapters3;\n        pfnDxcoreQueryAdapterInfo pDxcoreQueryAdapterInfo;\n};\n\nstruct dxcore_adapterInfo\n{\n        unsigned int              hAdapter;\n        struct dxcore_luid        AdapterLuid;\n        unsigned int              NumOfSources;\n        unsigned int              bPresentMoveRegionsPreferred;\n};\n\nstruct dxcore_enumAdapters2\n{\n        unsigned int                   NumAdapters;\n        struct dxcore_adapterInfo     *pAdapters;\n};\n\n#define ENUMADAPTER3_FILTER_COMPUTE_ONLY (0x0000000000000001)\n\nstruct dxcore_enumAdapters3\n{\n        unsigned long long             Filter;\n        unsigned int                   NumAdapters;\n        struct dxcore_adapterInfo     *pAdapters;\n};\n\nenum dxcore_kmtqueryAdapterInfoType\n{\n        DXCORE_QUERYDRIVERVERSION = 13,\n        DXCORE_QUERYREGISTRY = 48,\n};\n\nenum dxcore_queryregistry_type {\n        DXCORE_QUERYREGISTRY_DRIVERSTOREPATH = 2,\n        DXCORE_QUERYREGISTRY_DRIVERIMAGEPATH = 3,\n};\n\nenum dxcore_queryregistry_status {\n        DXCORE_QUERYREGISTRY_STATUS_SUCCESS = 0,\n        DXCORE_QUERYREGISTRY_STATUS_BUFFER_OVERFLOW = 1,\n        DXCORE_QUERYREGISTRY_STATUS_FAIL = 2,\n};\n\nstruct dxcore_queryregistry_info {\n        enum dxcore_queryregistry_type        QueryType;\n        unsigned int                          QueryFlags;\n        wchar_t                               ValueName[DXCORE_MAX_PATH];\n        unsigned int                          ValueType;\n        unsigned int                          PhysicalAdapterIndex;\n        unsigned int                          OutputValueSize;\n        enum dxcore_queryregistry_status      Status;\n        union {\n                unsigned long long                    OutputQword;\n                wchar_t                               Output;\n        };\n};\n\nstruct dxcore_queryAdapterInfo\n{\n        unsigned int                           hAdapter;\n        enum dxcore_kmtqueryAdapterInfoType    Type;\n        void                                   *pPrivateDriverData;\n        unsigned int                           PrivateDriverDataSize;\n};\n\nstatic int dxcore_query_adapter_info_helper(struct dxcore_lib* pLib,\n                                            unsigned int hAdapter,\n                                            enum dxcore_kmtqueryAdapterInfoType type,\n                                            void* pPrivateDriverDate,\n                                            unsigned int privateDriverDataSize)\n{\n        struct dxcore_queryAdapterInfo queryAdapterInfo = { 0 };\n\n        queryAdapterInfo.hAdapter = hAdapter;\n        queryAdapterInfo.Type = type;\n        queryAdapterInfo.pPrivateDriverData = pPrivateDriverDate;\n        queryAdapterInfo.PrivateDriverDataSize = privateDriverDataSize;\n\n        return pLib->pDxcoreQueryAdapterInfo(&queryAdapterInfo);\n}\n\nstatic int dxcore_query_adapter_wddm_version(struct dxcore_lib* pLib, unsigned int hAdapter, unsigned int* version)\n{\n        return dxcore_query_adapter_info_helper(pLib,\n                                                hAdapter,\n                                                DXCORE_QUERYDRIVERVERSION,\n                                                (void*)version,\n                                                sizeof(*version));\n}\n\nstatic int dxcore_query_adapter_driverstore(struct dxcore_lib* pLib, unsigned int hAdapter, char** ppDriverStorePath)\n{\n        struct dxcore_queryregistry_info params = {0};\n        struct dxcore_queryregistry_info* pValue = NULL;\n        wchar_t* pOutput;\n        size_t outputSizeInBytes;\n        size_t outputSize;\n\n        params.QueryType = DXCORE_QUERYREGISTRY_DRIVERSTOREPATH;\n\n        if (dxcore_query_adapter_info_helper(pLib,\n                                             hAdapter,\n                                             DXCORE_QUERYREGISTRY,\n                                             (void*)&params,\n                                             sizeof(params)))\n        {\n                log_err(\"Failed to query driver store path size for the WDDM Adapter\");\n                return (-1);\n        }\n\n        if (params.OutputValueSize > DXCORE_MAX_PATH * sizeof(wchar_t)) {\n                log_err(\"The driver store path size returned by dxcore is not valid\");\n                return (-1);\n        }\n\n        outputSizeInBytes = (size_t)params.OutputValueSize;\n        outputSize = outputSizeInBytes / sizeof(wchar_t);\n\n        pValue = calloc(sizeof(struct dxcore_queryregistry_info) + outputSizeInBytes + sizeof(wchar_t), 1);\n        if (!pValue) {\n                log_err(\"Out of memory while allocating temp buffer to query adapter info\");\n                return (-1);\n        }\n\n        pValue->QueryType = DXCORE_QUERYREGISTRY_DRIVERSTOREPATH;\n        pValue->OutputValueSize = (unsigned int)outputSizeInBytes;\n\n        if (dxcore_query_adapter_info_helper(pLib,\n                                            hAdapter,\n                                            DXCORE_QUERYREGISTRY,\n                                            (void*)pValue,\n                                            (unsigned int)(sizeof(struct dxcore_queryregistry_info) + outputSizeInBytes)))\n        {\n                log_err(\"Failed to query driver store path data for the WDDM Adapter\");\n                free(pValue);\n                return (-1);\n        }\n        pOutput = (wchar_t*)(&pValue->Output);\n\n        // Make sure no matter what happened the wchar_t string is null terminated\n        pOutput[outputSize] = L'\\0';\n\n        // Convert the output into a regular c string\n        *ppDriverStorePath = (char*)calloc(outputSize + 1, sizeof(char));\n        if (!*ppDriverStorePath) {\n                log_err(\"Out of memory while allocating the buffer for the driver store path\");\n                free(pValue);\n                return (-1);\n        }\n        wcstombs(*ppDriverStorePath, pOutput, outputSize);\n\n        free(pValue);\n\n    return 0;\n}\n\nstatic void dxcore_add_adapter(struct dxcore_context* pCtx, struct dxcore_lib* pLib, struct dxcore_adapterInfo *pAdapterInfo)\n{\n        unsigned int wddmVersion = 0;\n        char* driverStorePath = NULL;\n\n        log_infof(\"Creating a new WDDM Adapter for hAdapter:%x luid:%llx\", pAdapterInfo->hAdapter, *((unsigned long long*)&pAdapterInfo->AdapterLuid));\n\n        if (dxcore_query_adapter_wddm_version(pLib, pAdapterInfo->hAdapter, &wddmVersion)) {\n                log_err(\"Failed to query the WDDM version for the specified adapter. Skipping it.\");\n                return;\n        }\n\n        if (wddmVersion < 2700) {\n                log_err(\"Found a WDDM adapter running a driver with pre-WDDM 2.7 . Skipping it.\");\n                return;\n        }\n\n        if (dxcore_query_adapter_driverstore(pLib, pAdapterInfo->hAdapter, &driverStorePath)) {\n                log_err(\"Failed to query driver store path for the WDDM Adapter . Skipping it.\");\n                return;\n        }\n\n        // We got all the info we needed. Adding it to the tracking structure.\n        {\n                struct dxcore_adapter* newList;\n                newList = realloc(pCtx->adapterList, sizeof(struct dxcore_adapter) * (pCtx->adapterCount + 1));\n                if (!newList) {\n                        log_err(\"Out of memory when trying to add a new WDDM Adapter to the list of valid adapters\");\n                        free(driverStorePath);\n                        return;\n                }\n\n                pCtx->adapterList = newList;\n\n                pCtx->adapterList[pCtx->adapterCount].hAdapter = pAdapterInfo->hAdapter;\n                pCtx->adapterList[pCtx->adapterCount].pDriverStorePath = driverStorePath;\n                pCtx->adapterList[pCtx->adapterCount].wddmVersion = wddmVersion;\n                pCtx->adapterCount++;\n        }\n\n        log_infof(\"Adding new adapter via dxcore hAdapter:%x luid:%llx wddm version:%d\", pAdapterInfo->hAdapter, *((unsigned long long*)&pAdapterInfo->AdapterLuid), wddmVersion);\n}\n\nstatic int dxcore_enum_adapters3(struct dxcore_context* pCtx, struct dxcore_lib* pLib)\n{\n        struct dxcore_enumAdapters3 params = {0};\n        unsigned int adapterIndex = 0;\n\n        // Include compute-only in addition to display+compute adapters\n        params.Filter = ENUMADAPTER3_FILTER_COMPUTE_ONLY;\n        params.NumAdapters = 0;\n        params.pAdapters = NULL;\n\n        if (pLib->pDxcoreEnumAdapters3(&params)) {\n                log_err(\"Failed to enumerate adapters via enumAdapers3\");\n                return 1;\n        }\n\n        params.pAdapters = malloc(sizeof(struct dxcore_adapterInfo) * params.NumAdapters);\n        if (pLib->pDxcoreEnumAdapters3(&params)) {\n                free(params.pAdapters);\n                log_err(\"Failed to enumerate adapters via enumAdapers3\");\n                return 1;\n        }\n\n        for (adapterIndex = 0; adapterIndex < params.NumAdapters; adapterIndex++) {\n                dxcore_add_adapter(pCtx, pLib, &params.pAdapters[adapterIndex]);\n        }\n\n        free(params.pAdapters);\n        return 0;\n}\n\nstatic int dxcore_enum_adapters2(struct dxcore_context* pCtx, struct dxcore_lib* pLib)\n{\n        struct dxcore_enumAdapters2 params = {0};\n        unsigned int adapterIndex = 0;\n\n        params.NumAdapters = 0;\n        params.pAdapters = NULL;\n\n        if (pLib->pDxcoreEnumAdapters2(&params)) {\n                log_err(\"Failed to enumerate adapters via enumAdapters2\");\n                return 1;\n        }\n\n        params.pAdapters = malloc(sizeof(struct dxcore_adapterInfo) * params.NumAdapters);\n        if (pLib->pDxcoreEnumAdapters2(&params)) {\n                free(params.pAdapters);\n                log_err(\"Failed to enumerate adapters via enumAdapters2\");\n                return 1;\n        }\n\n        for (adapterIndex = 0; adapterIndex < params.NumAdapters; adapterIndex++) {\n                dxcore_add_adapter(pCtx, pLib, &params.pAdapters[adapterIndex]);\n        }\n\n        free(params.pAdapters);\n        return 0;\n}\n\nstatic void dxcore_enum_adapters(struct dxcore_context* pCtx, struct dxcore_lib* pLib)\n{\n        int status;\n        if (pLib->pDxcoreEnumAdapters3) {\n                status = dxcore_enum_adapters3(pCtx, pLib);\n                if (status == 0) {\n                    return;\n                }\n        }\n\n        // Fall back to EnumAdapters2 if the OS doesn't support EnumAdapters3\n        if (pLib->pDxcoreEnumAdapters2) {\n                status = dxcore_enum_adapters2(pCtx, pLib);\n                if (status == 0) {\n                    return;\n                }\n        }\n        log_err(\"Failed to enumerate adapters via dxcore\");\n}\n\nint dxcore_init_context(struct dxcore_context* pCtx)\n{\n        struct dxcore_lib lib = {0};\n\n        pCtx->initialized = 0;\n        pCtx->adapterCount = 0;\n        pCtx->adapterList = NULL;\n\n        lib.hDxcoreLib = dlopen(\"libdxcore.so\", RTLD_LAZY);\n        if (!lib.hDxcoreLib) {\n                goto error;\n        }\n\n        lib.pDxcoreEnumAdapters2 = (pfnDxcoreEnumAdapters2)dlsym(lib.hDxcoreLib, \"D3DKMTEnumAdapters2\");\n        lib.pDxcoreEnumAdapters3 = (pfnDxcoreEnumAdapters3)dlsym(lib.hDxcoreLib, \"D3DKMTEnumAdapters3\");\n        if (!lib.pDxcoreEnumAdapters2 && !lib.pDxcoreEnumAdapters3) {\n                log_err(\"dxcore library is present but the symbols D3DKMTEnumAdapters2 and D3DKMTEnumAdapters3 are missing\");\n                goto error;\n        }\n\n        lib.pDxcoreQueryAdapterInfo = (pfnDxcoreQueryAdapterInfo)dlsym(lib.hDxcoreLib, \"D3DKMTQueryAdapterInfo\");\n        if (!lib.pDxcoreQueryAdapterInfo) {\n                log_err(\"dxcore library is present but the symbol D3DKMTQueryAdapterInfo is missing\");\n                goto error;\n        }\n\n        dxcore_enum_adapters(pCtx, &lib);\n\n        log_info(\"dxcore layer initialized successfully\");\n        pCtx->initialized = 1;\n\n        dlclose(lib.hDxcoreLib);\n\n        return 0;\n\nerror:\n        dxcore_deinit_context(pCtx);\n\n        if (lib.hDxcoreLib)\n                dlclose(lib.hDxcoreLib);\n\n        return (-1);\n}\n\nstatic void dxcore_deinit_adapter(struct dxcore_adapter* pAdapter)\n{\n        if (!pAdapter)\n            return;\n\n        free(pAdapter->pDriverStorePath);\n}\n\nvoid dxcore_deinit_context(struct dxcore_context* pCtx)\n{\n        unsigned int adapterIndex = 0;\n\n        if (!pCtx)\n                return;\n\n        for (adapterIndex = 0; adapterIndex < pCtx->adapterCount; adapterIndex++) {\n                dxcore_deinit_adapter(&pCtx->adapterList[adapterIndex]);\n        }\n\n        free(pCtx->adapterList);\n\n        pCtx->initialized = 0;\n}\n"
  },
  {
    "path": "internal/dxcore/dxcore.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage dxcore\n\n/*\n#cgo linux LDFLAGS: -Wl,--export-dynamic -Wl,--unresolved-symbols=ignore-in-object-files\n#cgo darwin LDFLAGS: -Wl,-undefined,dynamic_lookup\n\n#include <dxcore.h>\n*/\nimport \"C\"\nimport (\n\t\"fmt\"\n\t\"unsafe\"\n)\n\ntype context C.struct_dxcore_context\ntype adapter C.struct_dxcore_adapter\n\n// initContext initializes the dxcore context and populates the list of adapters.\nfunc initContext() (*context, error) {\n\tcContext := C.struct_dxcore_context{}\n\tif C.dxcore_init_context(&cContext) != 0 {\n\t\treturn nil, fmt.Errorf(\"failed to initialize dxcore context\")\n\t}\n\tc := (*context)(&cContext)\n\treturn c, nil\n}\n\n// deinitContext deinitializes the dxcore context and frees the list of adapters.\nfunc (c context) deinitContext() {\n\tcContext := C.struct_dxcore_context(c)\n\tC.dxcore_deinit_context(&cContext)\n}\n\nfunc (c context) getAdapterCount() int {\n\treturn int(c.adapterCount)\n}\n\nfunc (c context) getAdapter(index int) adapter {\n\tarrayPointer := (*[1 << 30]C.struct_dxcore_adapter)(unsafe.Pointer(c.adapterList))\n\treturn adapter(arrayPointer[index])\n}\n\nfunc (a adapter) getDriverStorePath() string {\n\treturn C.GoString(a.pDriverStorePath)\n}\n"
  },
  {
    "path": "internal/dxcore/dxcore.h",
    "content": "/*\n * Copyright (c) 2020, NVIDIA CORPORATION. All rights reserved.\n */\n\n#ifndef HEADER_DXCORE_H_\n#define HEADER_DXCORE_H_\n\n#define MAX_DXCORE_DRIVERSTORE_LIBRAIRIES (16)\n\nstruct dxcore_luid\n{\n        unsigned int lowPart;\n        int highPart;\n};\n\nstruct dxcore_adapter\n{\n        unsigned int             hAdapter;\n        unsigned int             wddmVersion;\n        char*                    pDriverStorePath;\n        unsigned int             driverStoreComponentCount;\n        const char*              pDriverStoreComponents[MAX_DXCORE_DRIVERSTORE_LIBRAIRIES];\n        struct dxcore_context    *pContext;\n};\n\nstruct dxcore_context\n{\n        unsigned int adapterCount;\n        struct dxcore_adapter *adapterList;\n\n        int initialized;\n};\n\n\n\nint dxcore_init_context(struct dxcore_context* pDxcore_context);\nvoid dxcore_deinit_context(struct dxcore_context* pDxcore_context);\n\n#endif // HEADER_DXCORE_H_\n"
  },
  {
    "path": "internal/edits/device.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage edits\n\nimport (\n\t\"io/fs\"\n\t\"os\"\n\n\t\"tags.cncf.io/container-device-interface/pkg/cdi\"\n\t\"tags.cncf.io/container-device-interface/specs-go\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/devices\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/discover\"\n)\n\ntype device struct {\n\tdiscover.Device\n\tnoAdditionalGIDs bool\n}\n\n// toEdits converts a discovered device to CDI Container Edits.\nfunc (d device) toEdits() (*cdi.ContainerEdits, error) {\n\tdeviceNode, err := d.toSpec()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\te := cdi.ContainerEdits{\n\t\tContainerEdits: &specs.ContainerEdits{\n\t\t\tDeviceNodes:    []*specs.DeviceNode{deviceNode},\n\t\t\tAdditionalGIDs: d.getAdditionalGIDs(deviceNode),\n\t\t},\n\t}\n\treturn &e, nil\n}\n\n// toSpec converts a discovered Device to a CDI Spec Device. Note\n// that missing info is filled in when edits are applied by querying the Device node.\nfunc (d device) toSpec() (*specs.DeviceNode, error) {\n\ts := d.fromPathOrDefault()\n\t// The HostPath field was added in the v0.5.0 CDI specification.\n\t// The cdi package uses strict unmarshalling when loading specs from file causing failures for\n\t// unexpected fields.\n\t// Since the behaviour for HostPath == \"\" and HostPath == Path are equivalent, we clear HostPath\n\t// if it is equal to Path to ensure compatibility with the widest range of specs.\n\tif s.HostPath == d.Path {\n\t\ts.HostPath = \"\"\n\t}\n\n\treturn s, nil\n}\n\n// fromPathOrDefault attempts to return the returns the information about the\n// CDI device from the specified host path.\n// If this fails a minimal device is returned so that this information can be\n// queried by the container runtime such as containerd.\nfunc (d device) fromPathOrDefault() *specs.DeviceNode {\n\tpath := d.HostPath\n\tif path == \"\" {\n\t\tpath = d.Path\n\t}\n\tdn, err := devices.DeviceFromPath(path, \"rwm\")\n\tif err != nil {\n\t\treturn &specs.DeviceNode{\n\t\t\tHostPath: d.HostPath,\n\t\t\tPath:     d.Path,\n\t\t}\n\t}\n\n\t// We construct a CDI spec DeviceNode with the information retrieved.\n\t// Note that in addition to the fields that we specify here the following\n\t// are not taken from the extracted information:\n\t//\n\t// * dn.Rule.Allow: This has no equivalent in the CDI spec and is used for\n\t//\t\t\t\t\tspecifying cgroup rules in a container.\n\t// * dn.Rule.Type:  This could be translated to the DeviceNode.Type, but is\n\t//\t\t\t\t\tnot done. In the toolkit we only consider char devices\n\t//\t\t\t\t\t(Type = 'c') and these are the default for device nodes\n\t//\t\t\t\t\tin OCI compliant runtimes.\n\t// * dn.UID:\t\tThis is ignored so as to allow the UID of the container\n\t//\t\t\t\t\tuser to be applied when making modifications to the OCI\n\t//\t\t\t\t\truntime specification. Note that for most NVIDIA devices\n\t//\t\t\t\t\tthis would be 0 and as such the target UID pointer will\n\t//\t\t\t\t\tremain `nil`.\n\t//\t\t\t\t\tSee: https://github.com/cncf-tags/container-device-interface/blob/e2632194760242fc74a30c3803107f9c1ba5718b/pkg/cdi/container-edits.go#L96-L100\n\treturn &specs.DeviceNode{\n\t\tHostPath:    d.HostPath,\n\t\tPath:        d.Path,\n\t\tMajor:       dn.Major,\n\t\tMinor:       dn.Minor,\n\t\tFileMode:    ptrIfNonZero(dn.FileMode),\n\t\tPermissions: string(dn.Permissions),\n\t\tGID:         ptrIfNonZero(dn.Gid),\n\t}\n}\n\nfunc ptrIfNonZero[T uint32 | os.FileMode](id T) *T {\n\tvar zero T\n\tif id == zero {\n\t\treturn nil\n\t}\n\treturn &id\n}\n\n// getAdditionalGIDs returns the group id of the device if the device is not world read/writable.\n// If the information cannot be extracted or an error occurs, 0 is returned.\nfunc (d *device) getAdditionalGIDs(dn *specs.DeviceNode) []uint32 {\n\tif d.noAdditionalGIDs {\n\t\treturn nil\n\t}\n\t// Handle the underdefined cases where we do not have enough information to\n\t// extract the GID for the device OR whether the additional GID is required.\n\tif dn == nil || dn.GID == nil || *dn.GID == 0 {\n\t\treturn nil\n\t}\n\tif dn.FileMode == nil {\n\t\treturn nil\n\t}\n\tif dn.FileMode.Type()&os.ModeCharDevice == 0 {\n\t\treturn nil\n\t}\n\tif permission := dn.FileMode.Perm(); isWorldReadable(permission) && isWorldWriteable(permission) {\n\t\treturn nil\n\t}\n\treturn []uint32{*dn.GID}\n}\n\nfunc isWorldReadable(m fs.FileMode) bool {\n\treturn m&04 != 0\n}\n\nfunc isWorldWriteable(m fs.FileMode) bool {\n\treturn m&02 != 0\n}\n"
  },
  {
    "path": "internal/edits/device_test.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage edits\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"testing\"\n\n\t\"github.com/opencontainers/cgroups/devices/config\"\n\t\"github.com/stretchr/testify/require\"\n\t\"tags.cncf.io/container-device-interface/specs-go\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/devices\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/discover\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/test/to\"\n)\n\nfunc TestDeviceToSpec(t *testing.T) {\n\ttestCases := []struct {\n\t\tdescription string\n\t\tdevice      discover.Device\n\t\tdeviceslib  devices.Interface\n\t\texpected    *specs.DeviceNode\n\t}{\n\t\t{\n\t\t\tdevice: discover.Device{\n\t\t\t\tPath: \"/foo\",\n\t\t\t},\n\t\t\texpected: &specs.DeviceNode{\n\t\t\t\tPath: \"/foo\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdevice: discover.Device{\n\t\t\t\tPath:     \"/foo\",\n\t\t\t\tHostPath: \"/foo\",\n\t\t\t},\n\t\t\texpected: &specs.DeviceNode{\n\t\t\t\tPath: \"/foo\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdevice: discover.Device{\n\t\t\t\tPath:     \"/foo\",\n\t\t\t\tHostPath: \"/not/foo\",\n\t\t\t},\n\t\t\texpected: &specs.DeviceNode{\n\t\t\t\tPath:     \"/foo\",\n\t\t\t\tHostPath: \"/not/foo\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"device with device properties\",\n\t\t\tdevice: discover.Device{\n\t\t\t\tPath: \"/foo\",\n\t\t\t},\n\t\t\tdeviceslib: &devices.InterfaceMock{\n\t\t\t\tDeviceFromPathFunc: func(path, permissions string) (*devices.Device, error) {\n\t\t\t\t\tif path != \"/foo\" {\n\t\t\t\t\t\treturn nil, fmt.Errorf(\"not found %v\", path)\n\t\t\t\t\t}\n\t\t\t\t\tcd := &config.Device{\n\t\t\t\t\t\tRule: config.Rule{\n\t\t\t\t\t\t\tMajor:       100,\n\t\t\t\t\t\t\tMinor:       200,\n\t\t\t\t\t\t\tPermissions: config.Permissions(\"w\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tUid: 11,\n\t\t\t\t\t\tGid: 44,\n\t\t\t\t\t}\n\n\t\t\t\t\treturn (*devices.Device)(cd), nil\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: &specs.DeviceNode{\n\t\t\t\tPath:        \"/foo\",\n\t\t\t\tHostPath:    \"\",\n\t\t\t\tPermissions: \"w\",\n\t\t\t\tMajor:       100,\n\t\t\t\tMinor:       200,\n\t\t\t\tGID:         ptrIfNonZero[uint32](44),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"device with additional GIDs\",\n\t\t\tdevice: discover.Device{\n\t\t\t\tPath: \"/foo\",\n\t\t\t},\n\t\t\tdeviceslib: &devices.InterfaceMock{\n\t\t\t\tDeviceFromPathFunc: func(path, permissions string) (*devices.Device, error) {\n\t\t\t\t\tif path != \"/foo\" {\n\t\t\t\t\t\treturn nil, fmt.Errorf(\"not found %v\", path)\n\t\t\t\t\t}\n\t\t\t\t\tcd := &config.Device{\n\t\t\t\t\t\tRule: config.Rule{\n\t\t\t\t\t\t\tMajor:       100,\n\t\t\t\t\t\t\tMinor:       200,\n\t\t\t\t\t\t\tPermissions: config.Permissions(\"w\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tFileMode: 0660 | os.ModeCharDevice,\n\t\t\t\t\t\tUid:      11,\n\t\t\t\t\t\tGid:      44,\n\t\t\t\t\t}\n\n\t\t\t\t\treturn (*devices.Device)(cd), nil\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: &specs.DeviceNode{\n\t\t\t\tPath:        \"/foo\",\n\t\t\t\tHostPath:    \"\",\n\t\t\t\tPermissions: \"w\",\n\t\t\t\tMajor:       100,\n\t\t\t\tMinor:       200,\n\t\t\t\tFileMode:    to.Ptr(0660 | os.ModeCharDevice),\n\t\t\t\tGID:         ptrIfNonZero[uint32](44),\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tf := factory{}\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\tdefer devices.SetInterfaceForTests(tc.deviceslib)()\n\t\t\tspec, err := f.device(tc.device).toSpec()\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.EqualValues(t, tc.expected, spec)\n\t\t})\n\t}\n}\n\nfunc TestGetAdditionalGIDs(t *testing.T) {\n\ttestCases := []struct {\n\t\tdescription            string\n\t\tdevice                 *device\n\t\tdeviceNode             *specs.DeviceNode\n\t\texpectedAdditionalGIDs []uint32\n\t}{\n\t\t{\n\t\t\tdescription: \"feature disabled\",\n\t\t\tdevice:      &device{noAdditionalGIDs: true},\n\t\t},\n\t\t{\n\t\t\tdescription: \"device node has no GID\",\n\t\t\tdevice:      &device{},\n\t\t},\n\t\t{\n\t\t\tdescription: \"device node has zero GID\",\n\t\t\tdevice:      &device{},\n\t\t\tdeviceNode: &specs.DeviceNode{\n\t\t\t\tGID: to.Ptr[uint32](0),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"filemode not specified\",\n\t\t\tdevice:      &device{},\n\t\t\tdeviceNode: &specs.DeviceNode{\n\t\t\t\tGID: to.Ptr[uint32](1),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"device node is not a character device\",\n\t\t\tdevice:      &device{},\n\t\t\tdeviceNode: &specs.DeviceNode{\n\t\t\t\tGID:      to.Ptr[uint32](1),\n\t\t\t\tFileMode: to.Ptr(0666 | os.ModeSymlink),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"character device is world read-writeable\",\n\t\t\tdevice:      &device{},\n\t\t\tdeviceNode: &specs.DeviceNode{\n\t\t\t\tGID:      to.Ptr[uint32](1),\n\t\t\t\tFileMode: to.Ptr(0666 | os.ModeCharDevice),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"character device is only world readable\",\n\t\t\tdevice:      &device{},\n\t\t\tdeviceNode: &specs.DeviceNode{\n\t\t\t\tGID:      to.Ptr[uint32](1),\n\t\t\t\tFileMode: to.Ptr(0664 | os.ModeCharDevice),\n\t\t\t},\n\t\t\texpectedAdditionalGIDs: []uint32{1},\n\t\t},\n\t\t{\n\t\t\tdescription: \"character device is only world writeable\",\n\t\t\tdevice:      &device{},\n\t\t\tdeviceNode: &specs.DeviceNode{\n\t\t\t\tGID:      to.Ptr[uint32](1),\n\t\t\t\tFileMode: to.Ptr(0662 | os.ModeCharDevice),\n\t\t\t},\n\t\t\texpectedAdditionalGIDs: []uint32{1},\n\t\t},\n\t\t{\n\t\t\tdescription: \"character device is not world read-writeable\",\n\t\t\tdevice:      &device{},\n\t\t\tdeviceNode: &specs.DeviceNode{\n\t\t\t\tGID:      to.Ptr[uint32](1),\n\t\t\t\tFileMode: to.Ptr(0660 | os.ModeCharDevice),\n\t\t\t},\n\t\t\texpectedAdditionalGIDs: []uint32{1},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\tadditionalGIDs := tc.device.getAdditionalGIDs(tc.deviceNode)\n\n\t\t\trequire.EqualValues(t, tc.expectedAdditionalGIDs, additionalGIDs)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/edits/edits.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage edits\n\nimport (\n\t\"fmt\"\n\n\t\"tags.cncf.io/container-device-interface/pkg/cdi\"\n\t\"tags.cncf.io/container-device-interface/specs-go\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/discover\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n)\n\nconst (\n\t// An EmptyFactory is an edits factory that always returns empty CDI\n\t// container edits.\n\tEmptyFactory = empty(\"empty\")\n)\n\ntype Factory interface {\n\tNew() *cdi.ContainerEdits\n\tFromDiscoverer(discover.Discover) (*cdi.ContainerEdits, error)\n}\n\ntype empty string\n\ntype factory struct {\n\tlogger                         logger.Interface\n\tnoAdditionalGIDsForDeviceNodes bool\n}\n\nvar _ Factory = (*empty)(nil)\nvar _ Factory = (*factory)(nil)\n\ntype Option func(*factory)\n\nfunc NewFactory(opts ...Option) Factory {\n\tf := &factory{\n\t\tlogger: &logger.NullLogger{},\n\t}\n\tfor _, opt := range opts {\n\t\topt(f)\n\t}\n\treturn f\n}\n\nfunc (f *factory) New() *cdi.ContainerEdits {\n\treturn EmptyFactory.New()\n}\n\nfunc (f *factory) FromDiscoverer(d discover.Discover) (*cdi.ContainerEdits, error) {\n\tdevices, err := d.Devices()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to discover devices: %v\", err)\n\t}\n\n\tenvs, err := d.EnvVars()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to discover environment variables: %w\", err)\n\t}\n\n\tmounts, err := d.Mounts()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to discover mounts: %v\", err)\n\t}\n\n\thooks, err := d.Hooks()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to discover hooks: %v\", err)\n\t}\n\n\tc := EmptyFactory.New()\n\tfor _, d := range devices {\n\t\tedits, err := f.device(d).toEdits()\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed to created container edits for device: %v\", err)\n\t\t}\n\t\tc.Append(edits)\n\t}\n\n\tfor _, e := range envs {\n\t\tc.Append(envvar(e).toEdits())\n\t}\n\n\tfor _, m := range mounts {\n\t\tc.Append(mount(m).toEdits())\n\t}\n\n\tfor _, h := range hooks {\n\t\tc.Append(hook(h).toEdits())\n\t}\n\n\treturn c, nil\n}\n\nfunc (f *factory) device(d discover.Device) *device {\n\treturn &device{\n\t\tDevice:           d,\n\t\tnoAdditionalGIDs: f.noAdditionalGIDsForDeviceNodes,\n\t}\n}\n\n// New creates a set of empty CDI container edits for an empty factory.\nfunc (e empty) New() *cdi.ContainerEdits {\n\tc := cdi.ContainerEdits{\n\t\tContainerEdits: &specs.ContainerEdits{},\n\t}\n\treturn &c\n}\n\n// FromDiscoverer creates a set of empty CDI container edits for ANY discoverer.\nfunc (e empty) FromDiscoverer(_ discover.Discover) (*cdi.ContainerEdits, error) {\n\treturn e.New(), nil\n}\n\nfunc WithLogger(logger logger.Interface) Option {\n\treturn func(f *factory) {\n\t\tf.logger = logger\n\t}\n}\n\nfunc WithNoAdditionalGIDsForDeviceNodes(noAdditionalGIDsForDeviceNodes bool) Option {\n\treturn func(f *factory) {\n\t\tf.noAdditionalGIDsForDeviceNodes = noAdditionalGIDsForDeviceNodes\n\t}\n}\n"
  },
  {
    "path": "internal/edits/edits_test.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage edits\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/discover\"\n)\n\n// TODO: This test doesn't actually do anything.\nfunc TestFromDiscovererAllowsMountsToIterate(t *testing.T) {\n\tt.Skip(\"This test does not test anything significant\")\n\tedits, err := NewFactory().FromDiscoverer(discover.None{})\n\trequire.NoError(t, err)\n\n\trequire.Empty(t, edits.Mounts)\n}\n"
  },
  {
    "path": "internal/edits/envvar.go",
    "content": "/**\n# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage edits\n\nimport (\n\t\"fmt\"\n\n\t\"tags.cncf.io/container-device-interface/pkg/cdi\"\n\t\"tags.cncf.io/container-device-interface/specs-go\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/discover\"\n)\n\ntype envvar discover.EnvVar\n\n// toEdits converts a discovered envvar to CDI Container Edits.\nfunc (d envvar) toEdits() *cdi.ContainerEdits {\n\te := cdi.ContainerEdits{\n\t\tContainerEdits: &specs.ContainerEdits{\n\t\t\tEnv: []string{fmt.Sprintf(\"%s=%s\", d.Name, d.Value)},\n\t\t},\n\t}\n\treturn &e\n}\n"
  },
  {
    "path": "internal/edits/hook.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage edits\n\nimport (\n\t\"tags.cncf.io/container-device-interface/pkg/cdi\"\n\t\"tags.cncf.io/container-device-interface/specs-go\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/discover\"\n)\n\ntype hook discover.Hook\n\n// toEdits converts a discovered hook to CDI Container Edits.\nfunc (d hook) toEdits() *cdi.ContainerEdits {\n\te := cdi.ContainerEdits{\n\t\tContainerEdits: &specs.ContainerEdits{\n\t\t\tHooks: []*specs.Hook{d.toSpec()},\n\t\t},\n\t}\n\treturn &e\n}\n\n// toSpec converts a discovered Hook to a CDI Spec Hook. Note\n// that missing info is filled in when edits are applied by querying the Hook node.\nfunc (d hook) toSpec() *specs.Hook {\n\ts := specs.Hook{\n\t\tHookName: d.Lifecycle,\n\t\tPath:     d.Path,\n\t\tArgs:     d.Args,\n\t\tEnv:      d.Env,\n\t}\n\n\treturn &s\n}\n"
  },
  {
    "path": "internal/edits/mount.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage edits\n\nimport (\n\t\"tags.cncf.io/container-device-interface/pkg/cdi\"\n\t\"tags.cncf.io/container-device-interface/specs-go\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/discover\"\n)\n\ntype mount discover.Mount\n\n// toEdits converts a discovered mount to CDI Container Edits.\nfunc (d mount) toEdits() *cdi.ContainerEdits {\n\te := cdi.ContainerEdits{\n\t\tContainerEdits: &specs.ContainerEdits{\n\t\t\tMounts: []*specs.Mount{d.toSpec()},\n\t\t},\n\t}\n\treturn &e\n}\n\n// toSpec converts a discovered Mount to a CDI Spec Mount. Note\n// that missing info is filled in when edits are applied by querying the Mount node.\nfunc (d mount) toSpec() *specs.Mount {\n\ts := specs.Mount{\n\t\tHostPath:      d.HostPath,\n\t\tContainerPath: d.Path,\n\t\tOptions:       d.Options,\n\t}\n\n\treturn &s\n}\n"
  },
  {
    "path": "internal/info/additional_info.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage info\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\t\"github.com/NVIDIA/go-nvlib/pkg/nvlib/device\"\n\t\"github.com/NVIDIA/go-nvlib/pkg/nvlib/info\"\n\t\"github.com/NVIDIA/go-nvml/pkg/nvml\"\n)\n\n// additionalInfo allows for the info.Interface to be extened to implement the infoInterface.\ntype additionalInfo struct {\n\tinfo.Interface\n\tnvmllib   nvml.Interface\n\tdevicelib device.Interface\n}\n\n// UsesNVGPUModule checks whether the nvgpu module is used.\n// We use the device name to signal this, since devices that use the nvgpu module have their device\n// names as:\n//\n//\tGPU 0: Orin (nvgpu) (UUID: 54d0709b-558d-5a59-9c65-0c5fc14a21a4)\n//\n// This function returns true if ALL devices use the nvgpu module.\nfunc (i additionalInfo) UsesNVGPUModule() (uses bool, reason string) {\n\t// We ensure that this function never panics\n\tdefer func() {\n\t\tif err := recover(); err != nil {\n\t\t\tuses = false\n\t\t\treason = fmt.Sprintf(\"panic: %v\", err)\n\t\t}\n\t}()\n\n\tret := i.nvmllib.Init()\n\tif ret != nvml.SUCCESS {\n\t\treturn false, fmt.Sprintf(\"failed to initialize nvml: %v\", ret)\n\t}\n\tdefer func() {\n\t\t_ = i.nvmllib.Shutdown()\n\t}()\n\n\tvar names []string\n\n\terr := i.devicelib.VisitDevices(func(i int, d device.Device) error {\n\t\tname, ret := d.GetName()\n\t\tif ret != nvml.SUCCESS {\n\t\t\treturn fmt.Errorf(\"device %v: %v\", i, ret)\n\t\t}\n\t\tnames = append(names, name)\n\t\treturn nil\n\t})\n\tif err != nil {\n\t\treturn false, fmt.Sprintf(\"failed to get device names: %v\", err)\n\t}\n\n\tif len(names) == 0 {\n\t\treturn false, \"no devices found\"\n\t}\n\n\tfor _, name := range names {\n\t\tif !strings.Contains(name, \"(nvgpu)\") {\n\t\t\treturn false, fmt.Sprintf(\"device %q does not use nvgpu module\", name)\n\t\t}\n\t}\n\treturn true, \"all devices use nvgpu module\"\n}\n"
  },
  {
    "path": "internal/info/additional_info_test.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage info\n\nimport (\n\t\"testing\"\n\n\t\"github.com/NVIDIA/go-nvlib/pkg/nvlib/device\"\n\t\"github.com/NVIDIA/go-nvml/pkg/nvml\"\n\t\"github.com/NVIDIA/go-nvml/pkg/nvml/mock\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestUsesNVGPUModule(t *testing.T) {\n\ttestCases := []struct {\n\t\tdescription string\n\t\tnvmllib     nvml.Interface\n\t\texpected    bool\n\t}{\n\t\t{\n\t\t\tdescription: \"init failure returns false\",\n\t\t\tnvmllib: &mock.Interface{\n\t\t\t\tInitFunc: func() nvml.Return {\n\t\t\t\t\treturn nvml.ERROR_LIBRARY_NOT_FOUND\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: false,\n\t\t},\n\t\t{\n\t\t\tdescription: \"no devices returns false\",\n\t\t\tnvmllib: &mock.Interface{\n\t\t\t\tInitFunc: func() nvml.Return {\n\t\t\t\t\treturn nvml.SUCCESS\n\t\t\t\t},\n\t\t\t\tShutdownFunc: func() nvml.Return {\n\t\t\t\t\treturn nvml.SUCCESS\n\t\t\t\t},\n\t\t\t\tDeviceGetCountFunc: func() (int, nvml.Return) {\n\t\t\t\t\treturn 0, nvml.SUCCESS\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: false,\n\t\t},\n\t\t{\n\t\t\tdescription: \"DeviceGetCount error returns false\",\n\t\t\tnvmllib: &mock.Interface{\n\t\t\t\tInitFunc: func() nvml.Return {\n\t\t\t\t\treturn nvml.SUCCESS\n\t\t\t\t},\n\t\t\t\tShutdownFunc: func() nvml.Return {\n\t\t\t\t\treturn nvml.SUCCESS\n\t\t\t\t},\n\t\t\t\tDeviceGetCountFunc: func() (int, nvml.Return) {\n\t\t\t\t\treturn 0, nvml.ERROR_UNKNOWN\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: false,\n\t\t},\n\t\t{\n\t\t\tdescription: \"Failure to get device name returns false\",\n\t\t\tnvmllib: &mock.Interface{\n\t\t\t\tInitFunc: func() nvml.Return {\n\t\t\t\t\treturn nvml.SUCCESS\n\t\t\t\t},\n\t\t\t\tShutdownFunc: func() nvml.Return {\n\t\t\t\t\treturn nvml.SUCCESS\n\t\t\t\t},\n\t\t\t\tDeviceGetCountFunc: func() (int, nvml.Return) {\n\t\t\t\t\treturn 1, nvml.SUCCESS\n\t\t\t\t},\n\t\t\t\tDeviceGetHandleByIndexFunc: func(index int) (nvml.Device, nvml.Return) {\n\t\t\t\t\tdevice := &mock.Device{\n\t\t\t\t\t\tGetNameFunc: func() (string, nvml.Return) {\n\t\t\t\t\t\t\treturn \"\", nvml.ERROR_UNKNOWN\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t\treturn device, nvml.SUCCESS\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: false,\n\t\t},\n\t\t{\n\t\t\tdescription: \"nested panic returns false\",\n\t\t\tnvmllib: &mock.Interface{\n\t\t\t\tInitFunc: func() nvml.Return {\n\t\t\t\t\treturn nvml.SUCCESS\n\t\t\t\t},\n\t\t\t\tShutdownFunc: func() nvml.Return {\n\t\t\t\t\treturn nvml.SUCCESS\n\t\t\t\t},\n\t\t\t\tDeviceGetCountFunc: func() (int, nvml.Return) {\n\t\t\t\t\treturn 1, nvml.SUCCESS\n\t\t\t\t},\n\t\t\t\tDeviceGetHandleByIndexFunc: func(index int) (nvml.Device, nvml.Return) {\n\t\t\t\t\tdevice := &mock.Device{\n\t\t\t\t\t\tGetNameFunc: func() (string, nvml.Return) {\n\t\t\t\t\t\t\tpanic(\"deep panic\")\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t\treturn device, nvml.SUCCESS\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: false,\n\t\t},\n\t\t{\n\t\t\tdescription: \"Single device name with no nvgpu\",\n\t\t\tnvmllib: &mock.Interface{\n\t\t\t\tInitFunc: func() nvml.Return {\n\t\t\t\t\treturn nvml.SUCCESS\n\t\t\t\t},\n\t\t\t\tShutdownFunc: func() nvml.Return {\n\t\t\t\t\treturn nvml.SUCCESS\n\t\t\t\t},\n\t\t\t\tDeviceGetCountFunc: func() (int, nvml.Return) {\n\t\t\t\t\treturn 1, nvml.SUCCESS\n\t\t\t\t},\n\t\t\t\tDeviceGetHandleByIndexFunc: func(index int) (nvml.Device, nvml.Return) {\n\t\t\t\t\tdevice := &mock.Device{\n\t\t\t\t\t\tGetNameFunc: func() (string, nvml.Return) {\n\t\t\t\t\t\t\treturn \"NVIDIA A100-SXM4-40GB\", nvml.SUCCESS\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t\treturn device, nvml.SUCCESS\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: false,\n\t\t},\n\t\t{\n\t\t\tdescription: \"Single device name with nvgpu\",\n\t\t\tnvmllib: &mock.Interface{\n\t\t\t\tInitFunc: func() nvml.Return {\n\t\t\t\t\treturn nvml.SUCCESS\n\t\t\t\t},\n\t\t\t\tShutdownFunc: func() nvml.Return {\n\t\t\t\t\treturn nvml.SUCCESS\n\t\t\t\t},\n\t\t\t\tDeviceGetCountFunc: func() (int, nvml.Return) {\n\t\t\t\t\treturn 1, nvml.SUCCESS\n\t\t\t\t},\n\t\t\t\tDeviceGetHandleByIndexFunc: func(index int) (nvml.Device, nvml.Return) {\n\t\t\t\t\tdevice := &mock.Device{\n\t\t\t\t\t\tGetNameFunc: func() (string, nvml.Return) {\n\t\t\t\t\t\t\treturn \"Orin (nvgpu)\", nvml.SUCCESS\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t\treturn device, nvml.SUCCESS\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: true,\n\t\t},\n\t\t{\n\t\t\tdescription: \"Multiple device names with no nvgpu\",\n\t\t\tnvmllib: &mock.Interface{\n\t\t\t\tInitFunc: func() nvml.Return {\n\t\t\t\t\treturn nvml.SUCCESS\n\t\t\t\t},\n\t\t\t\tShutdownFunc: func() nvml.Return {\n\t\t\t\t\treturn nvml.SUCCESS\n\t\t\t\t},\n\t\t\t\tDeviceGetCountFunc: func() (int, nvml.Return) {\n\t\t\t\t\treturn 2, nvml.SUCCESS\n\t\t\t\t},\n\t\t\t\tDeviceGetHandleByIndexFunc: func(index int) (nvml.Device, nvml.Return) {\n\t\t\t\t\tdevice := &mock.Device{\n\t\t\t\t\t\tGetNameFunc: func() (string, nvml.Return) {\n\t\t\t\t\t\t\treturn \"NVIDIA A100-SXM4-40GB\", nvml.SUCCESS\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t\treturn device, nvml.SUCCESS\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: false,\n\t\t},\n\t\t{\n\t\t\tdescription: \"Multiple device names with nvgpu\",\n\t\t\tnvmllib: &mock.Interface{\n\t\t\t\tInitFunc: func() nvml.Return {\n\t\t\t\t\treturn nvml.SUCCESS\n\t\t\t\t},\n\t\t\t\tShutdownFunc: func() nvml.Return {\n\t\t\t\t\treturn nvml.SUCCESS\n\t\t\t\t},\n\t\t\t\tDeviceGetCountFunc: func() (int, nvml.Return) {\n\t\t\t\t\treturn 2, nvml.SUCCESS\n\t\t\t\t},\n\t\t\t\tDeviceGetHandleByIndexFunc: func(index int) (nvml.Device, nvml.Return) {\n\t\t\t\t\tdevice := &mock.Device{\n\t\t\t\t\t\tGetNameFunc: func() (string, nvml.Return) {\n\t\t\t\t\t\t\treturn \"Orin (nvgpu)\", nvml.SUCCESS\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t\treturn device, nvml.SUCCESS\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: true,\n\t\t},\n\t\t{\n\t\t\tdescription: \"Mixed device names\",\n\t\t\tnvmllib: &mock.Interface{\n\t\t\t\tInitFunc: func() nvml.Return {\n\t\t\t\t\treturn nvml.SUCCESS\n\t\t\t\t},\n\t\t\t\tShutdownFunc: func() nvml.Return {\n\t\t\t\t\treturn nvml.SUCCESS\n\t\t\t\t},\n\t\t\t\tDeviceGetCountFunc: func() (int, nvml.Return) {\n\t\t\t\t\treturn 2, nvml.SUCCESS\n\t\t\t\t},\n\t\t\t\tDeviceGetHandleByIndexFunc: func(index int) (nvml.Device, nvml.Return) {\n\t\t\t\t\tvar deviceName string\n\t\t\t\t\tif index == 0 {\n\t\t\t\t\t\tdeviceName = \"NVIDIA A100-SXM4-40GB\"\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdeviceName = \"Orin (nvgpu)\"\n\t\t\t\t\t}\n\t\t\t\t\tdevice := &mock.Device{\n\t\t\t\t\t\tGetNameFunc: func() (string, nvml.Return) {\n\t\t\t\t\t\t\treturn deviceName, nvml.SUCCESS\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t\treturn device, nvml.SUCCESS\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: false,\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\tsut := additionalInfo{\n\t\t\t\tnvmllib:   tc.nvmllib,\n\t\t\t\tdevicelib: device.New(tc.nvmllib),\n\t\t\t}\n\n\t\t\tflag, _ := sut.UsesNVGPUModule()\n\t\t\trequire.Equal(t, tc.expected, flag)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/info/auto.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage info\n\nimport (\n\t\"github.com/NVIDIA/go-nvlib/pkg/nvlib/info\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/config/image\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n)\n\n// A RuntimeMode is used to select a specific mode of operation for the NVIDIA Container Runtime.\ntype RuntimeMode string\n\nconst (\n\t// In LegacyRuntimeMode the nvidia-container-runtime injects the\n\t// nvidia-container-runtime-hook as a prestart hook into the incoming\n\t// container config. This hook invokes the nvidia-container-cli to perform\n\t// the required modifications to the container.\n\tLegacyRuntimeMode = RuntimeMode(\"legacy\")\n\t// In CSVRuntimeMode the nvidia-container-runtime processes a set of CSV\n\t// files to determine which container modification are required. The\n\t// contents of these CSV files are used to generate an in-memory CDI\n\t// specification which is used to modify the container config.\n\tCSVRuntimeMode = RuntimeMode(\"csv\")\n\t// In CDIRuntimeMode the nvidia-container-runtime applies the modifications\n\t// to the container config required for the requested CDI devices in the\n\t// same way that other CDI clients would.\n\tCDIRuntimeMode = RuntimeMode(\"cdi\")\n\t// In JitCDIRuntimeMode the nvidia-container-runtime generates in-memory CDI\n\t// specifications for requested NVIDIA devices.\n\tJitCDIRuntimeMode = RuntimeMode(\"jit-cdi\")\n)\n\ntype RuntimeModeResolver interface {\n\tResolveRuntimeMode(string) RuntimeMode\n}\n\ntype modeResolver struct {\n\tlogger logger.Interface\n\t// TODO: This only needs to consider the requested devices.\n\timage             *image.CUDA\n\tpropertyExtractor info.PropertyExtractor\n\tdefaultMode       RuntimeMode\n}\n\ntype Option func(*modeResolver)\n\nfunc WithDefaultMode(defaultMode RuntimeMode) Option {\n\treturn func(mr *modeResolver) {\n\t\tmr.defaultMode = defaultMode\n\t}\n}\n\nfunc WithLogger(logger logger.Interface) Option {\n\treturn func(mr *modeResolver) {\n\t\tmr.logger = logger\n\t}\n}\n\nfunc WithImage(image *image.CUDA) Option {\n\treturn func(mr *modeResolver) {\n\t\tmr.image = image\n\t}\n}\n\nfunc WithPropertyExtractor(propertyExtractor info.PropertyExtractor) Option {\n\treturn func(mr *modeResolver) {\n\t\tmr.propertyExtractor = propertyExtractor\n\t}\n}\n\nfunc NewRuntimeModeResolver(opts ...Option) RuntimeModeResolver {\n\tr := &modeResolver{\n\t\tdefaultMode: JitCDIRuntimeMode,\n\t}\n\tfor _, opt := range opts {\n\t\topt(r)\n\t}\n\tif r.logger == nil {\n\t\tr.logger = &logger.NullLogger{}\n\t}\n\n\treturn r\n}\n\n// ResolveAutoMode determines the correct mode for the platform if set to \"auto\"\nfunc ResolveAutoMode(logger logger.Interface, mode string, image image.CUDA) (rmode RuntimeMode) {\n\tr := modeResolver{\n\t\tlogger:            logger,\n\t\timage:             &image,\n\t\tpropertyExtractor: nil,\n\t}\n\treturn r.ResolveRuntimeMode(mode)\n}\n\nfunc (m *modeResolver) ResolveRuntimeMode(mode string) (rmode RuntimeMode) {\n\tif mode != \"auto\" {\n\t\tm.logger.Infof(\"Using requested mode '%s'\", mode)\n\t\treturn RuntimeMode(mode)\n\t}\n\tdefer func() {\n\t\tm.logger.Infof(\"Auto-detected mode as '%v'\", rmode)\n\t}()\n\n\tif m.image.OnlyFullyQualifiedCDIDevices() {\n\t\treturn CDIRuntimeMode\n\t}\n\n\tnvinfo := info.New(\n\t\tinfo.WithLogger(m.logger),\n\t\tinfo.WithPropertyExtractor(m.propertyExtractor),\n\t)\n\n\tswitch nvinfo.ResolvePlatform() {\n\tcase info.PlatformNVML, info.PlatformWSL:\n\t\treturn m.defaultMode\n\tcase info.PlatformTegra:\n\t\treturn CSVRuntimeMode\n\t}\n\treturn m.defaultMode\n}\n"
  },
  {
    "path": "internal/info/auto_test.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage info\n\nimport (\n\t\"testing\"\n\n\t\"github.com/NVIDIA/go-nvlib/pkg/nvlib/info\"\n\t\"github.com/opencontainers/runtime-spec/specs-go\"\n\ttestlog \"github.com/sirupsen/logrus/hooks/test\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/config/image\"\n)\n\nfunc TestResolveAutoMode(t *testing.T) {\n\tlogger, _ := testlog.NewNullLogger()\n\n\ttestCases := []struct {\n\t\tdescription  string\n\t\tmode         string\n\t\texpectedMode string\n\t\tinfo         map[string]bool\n\t\tenvmap       map[string]string\n\t\tmounts       []string\n\t}{\n\t\t{\n\t\t\tdescription:  \"non-auto resolves to input\",\n\t\t\tmode:         \"not-auto\",\n\t\t\texpectedMode: \"not-auto\",\n\t\t},\n\t\t{\n\t\t\tdescription:  \"legacy resolves to legacy\",\n\t\t\tmode:         \"legacy\",\n\t\t\texpectedMode: \"legacy\",\n\t\t},\n\t\t{\n\t\t\tdescription:  \"no info defaults to legacy\",\n\t\t\tmode:         \"auto\",\n\t\t\tinfo:         map[string]bool{},\n\t\t\texpectedMode: \"jit-cdi\",\n\t\t},\n\t\t{\n\t\t\tdescription: \"non-nvml, non-tegra, nvgpu resolves to csv\",\n\t\t\tmode:        \"auto\",\n\t\t\tinfo: map[string]bool{\n\t\t\t\t\"nvml\":  false,\n\t\t\t\t\"tegra\": false,\n\t\t\t\t\"nvgpu\": true,\n\t\t\t},\n\t\t\texpectedMode: \"csv\",\n\t\t},\n\t\t{\n\t\t\tdescription: \"non-nvml, tegra, non-nvgpu resolves to csv\",\n\t\t\tmode:        \"auto\",\n\t\t\tinfo: map[string]bool{\n\t\t\t\t\"nvml\":  false,\n\t\t\t\t\"tegra\": true,\n\t\t\t\t\"nvgpu\": false,\n\t\t\t},\n\t\t\texpectedMode: \"csv\",\n\t\t},\n\t\t{\n\t\t\tdescription: \"non-nvml, tegra, nvgpu resolves to csv\",\n\t\t\tmode:        \"auto\",\n\t\t\tinfo: map[string]bool{\n\t\t\t\t\"nvml\":  false,\n\t\t\t\t\"tegra\": true,\n\t\t\t\t\"nvgpu\": true,\n\t\t\t},\n\t\t\texpectedMode: \"csv\",\n\t\t},\n\t\t{\n\t\t\tdescription: \"nvml, non-tegra, non-nvgpu resolves to jit-cdi\",\n\t\t\tmode:        \"auto\",\n\t\t\tinfo: map[string]bool{\n\t\t\t\t\"nvml\":  true,\n\t\t\t\t\"tegra\": false,\n\t\t\t\t\"nvgpu\": false,\n\t\t\t},\n\t\t\texpectedMode: \"jit-cdi\",\n\t\t},\n\t\t{\n\t\t\tdescription: \"nvml, non-tegra, nvgpu resolves to csv\",\n\t\t\tmode:        \"auto\",\n\t\t\tinfo: map[string]bool{\n\t\t\t\t\"nvml\":  true,\n\t\t\t\t\"tegra\": false,\n\t\t\t\t\"nvgpu\": true,\n\t\t\t},\n\t\t\texpectedMode: \"csv\",\n\t\t},\n\t\t{\n\t\t\tdescription: \"nvml, tegra, non-nvgpu resolves to jit-cdi\",\n\t\t\tmode:        \"auto\",\n\t\t\tinfo: map[string]bool{\n\t\t\t\t\"nvml\":  true,\n\t\t\t\t\"tegra\": true,\n\t\t\t\t\"nvgpu\": false,\n\t\t\t},\n\t\t\texpectedMode: \"jit-cdi\",\n\t\t},\n\t\t{\n\t\t\tdescription: \"nvml, tegra, nvgpu resolves to csv\",\n\t\t\tmode:        \"auto\",\n\t\t\tinfo: map[string]bool{\n\t\t\t\t\"nvml\":  true,\n\t\t\t\t\"tegra\": true,\n\t\t\t\t\"nvgpu\": true,\n\t\t\t},\n\t\t\texpectedMode: \"csv\",\n\t\t},\n\t\t{\n\t\t\tdescription:  \"cdi devices resolves to cdi\",\n\t\t\tmode:         \"auto\",\n\t\t\texpectedMode: \"cdi\",\n\t\t\tenvmap: map[string]string{\n\t\t\t\t\"NVIDIA_VISIBLE_DEVICES\": \"nvidia.com/gpu=all\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription:  \"multiple cdi devices resolves to cdi\",\n\t\t\tmode:         \"auto\",\n\t\t\texpectedMode: \"cdi\",\n\t\t\tenvmap: map[string]string{\n\t\t\t\t\"NVIDIA_VISIBLE_DEVICES\": \"nvidia.com/gpu=0,nvidia.com/gpu=1\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"at least one non-cdi device resolves to jit-cdi\",\n\t\t\tmode:        \"auto\",\n\t\t\tenvmap: map[string]string{\n\t\t\t\t\"NVIDIA_VISIBLE_DEVICES\": \"nvidia.com/gpu=0,0\",\n\t\t\t},\n\t\t\tinfo: map[string]bool{\n\t\t\t\t\"nvml\":  true,\n\t\t\t\t\"tegra\": false,\n\t\t\t\t\"nvgpu\": false,\n\t\t\t},\n\t\t\texpectedMode: \"jit-cdi\",\n\t\t},\n\t\t{\n\t\t\tdescription: \"at least one non-cdi device resolves to csv\",\n\t\t\tmode:        \"auto\",\n\t\t\tenvmap: map[string]string{\n\t\t\t\t\"NVIDIA_VISIBLE_DEVICES\": \"nvidia.com/gpu=0,0\",\n\t\t\t},\n\t\t\tinfo: map[string]bool{\n\t\t\t\t\"nvml\":  false,\n\t\t\t\t\"tegra\": true,\n\t\t\t\t\"nvgpu\": false,\n\t\t\t},\n\t\t\texpectedMode: \"csv\",\n\t\t},\n\t\t{\n\t\t\tdescription: \"cdi mount devices resolves to CDI\",\n\t\t\tmode:        \"auto\",\n\t\t\tmounts: []string{\n\t\t\t\t\"/var/run/nvidia-container-devices/cdi/nvidia.com/gpu/0\",\n\t\t\t},\n\t\t\texpectedMode: \"cdi\",\n\t\t},\n\t\t{\n\t\t\tdescription: \"cdi mount and non-CDI devices resolves to jit-cdi\",\n\t\t\tmode:        \"auto\",\n\t\t\tmounts: []string{\n\t\t\t\t\"/var/run/nvidia-container-devices/cdi/nvidia.com/gpu/0\",\n\t\t\t\t\"/var/run/nvidia-container-devices/all\",\n\t\t\t},\n\t\t\tinfo: map[string]bool{\n\t\t\t\t\"nvml\":  true,\n\t\t\t\t\"tegra\": false,\n\t\t\t\t\"nvgpu\": false,\n\t\t\t},\n\t\t\texpectedMode: \"jit-cdi\",\n\t\t},\n\t\t{\n\t\t\tdescription: \"cdi mount and non-CDI envvar resolves to cdi\",\n\t\t\tmode:        \"auto\",\n\t\t\tenvmap: map[string]string{\n\t\t\t\t\"NVIDIA_VISIBLE_DEVICES\": \"0\",\n\t\t\t},\n\t\t\tmounts: []string{\n\t\t\t\t\"/var/run/nvidia-container-devices/cdi/nvidia.com/gpu/0\",\n\t\t\t},\n\t\t\tinfo: map[string]bool{\n\t\t\t\t\"nvml\":  true,\n\t\t\t\t\"tegra\": false,\n\t\t\t\t\"nvgpu\": false,\n\t\t\t},\n\t\t\texpectedMode: \"cdi\",\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\tproperties := &info.PropertyExtractorMock{\n\t\t\t\tHasNvmlFunc: func() (bool, string) {\n\t\t\t\t\treturn tc.info[\"nvml\"], \"nvml\"\n\t\t\t\t},\n\t\t\t\tHasDXCoreFunc: func() (bool, string) {\n\t\t\t\t\treturn tc.info[\"dxcore\"], \"dxcore\"\n\t\t\t\t},\n\t\t\t\tHasTegraFilesFunc: func() (bool, string) {\n\t\t\t\t\treturn tc.info[\"tegra\"], \"tegra\"\n\t\t\t\t},\n\t\t\t\tHasAnIntegratedGPUFunc: func() (bool, string) {\n\t\t\t\t\treturn tc.info[\"nvgpu\"], \"nvgpu\"\n\t\t\t\t},\n\t\t\t}\n\n\t\t\tvar mounts []specs.Mount\n\t\t\tfor _, d := range tc.mounts {\n\t\t\t\tmount := specs.Mount{\n\t\t\t\t\tSource:      \"/dev/null\",\n\t\t\t\t\tDestination: d,\n\t\t\t\t}\n\t\t\t\tmounts = append(mounts, mount)\n\t\t\t}\n\t\t\timage, _ := image.New(\n\t\t\t\timage.WithEnvMap(tc.envmap),\n\t\t\t\timage.WithMounts(mounts),\n\t\t\t\timage.WithAcceptDeviceListAsVolumeMounts(true),\n\t\t\t\timage.WithAcceptEnvvarUnprivileged(true),\n\t\t\t)\n\t\t\tmr := NewRuntimeModeResolver(\n\t\t\t\tWithLogger(logger),\n\t\t\t\tWithImage(&image),\n\t\t\t\tWithPropertyExtractor(properties),\n\t\t\t)\n\t\t\tmode := mr.ResolveRuntimeMode(tc.mode)\n\t\t\trequire.EqualValues(t, tc.expectedMode, mode)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/info/drm/drm_devices.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage drm\n\nimport (\n\t\"fmt\"\n\t\"path/filepath\"\n)\n\n// GetDeviceNodesByBusID returns the DRM devices associated with the specified PCI bus ID\nfunc GetDeviceNodesByBusID(busID string) ([]string, error) {\n\tdrmRoot := filepath.Join(\"/sys/bus/pci/devices\", busID, \"drm\")\n\tmatches, err := filepath.Glob(fmt.Sprintf(\"%s/*\", drmRoot))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar drmDeviceNodes []string\n\tfor _, m := range matches {\n\t\tdrmDeviceNode := filepath.Join(\"/dev/dri\", filepath.Base(m))\n\t\tdrmDeviceNodes = append(drmDeviceNodes, drmDeviceNode)\n\t}\n\n\treturn drmDeviceNodes, nil\n}\n"
  },
  {
    "path": "internal/info/proc/devices/builder.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage devices\n\ntype builder struct {\n\tasMap  devices\n\tfilter func(string) bool\n}\n\n// New creates a new devices struct with the specified options.\nfunc New(opts ...Option) Devices {\n\tb := &builder{}\n\tfor _, opt := range opts {\n\t\topt(b)\n\t}\n\n\tif b.filter == nil {\n\t\tb.filter = func(string) bool { return false }\n\t}\n\n\tdevices := make(devices)\n\tfor k, v := range b.asMap {\n\t\tif b.filter(string(k)) {\n\t\t\tcontinue\n\t\t}\n\t\tdevices[k] = v\n\t}\n\treturn devices\n}\n\ntype Option func(*builder)\n\n// WithDeviceToMajor specifies an explicit device name to major number map.\nfunc WithDeviceToMajor(deviceToMajor map[string]int) Option {\n\treturn func(b *builder) {\n\t\tb.asMap = make(devices)\n\t\tfor name, major := range deviceToMajor {\n\t\t\tb.asMap[Name(name)] = Major(major)\n\t\t}\n\t}\n}\n\n// WithFilter specifies a filter to exclude devices.\nfunc WithFilter(filter func(string) bool) Option {\n\treturn func(b *builder) {\n\t\tb.filter = filter\n\t}\n}\n"
  },
  {
    "path": "internal/info/proc/devices/devices.go",
    "content": "/*\n# Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n*/\n\npackage devices\n\nimport (\n\t\"bufio\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"strings\"\n)\n\n// Device major numbers and device names for NVIDIA devices\nconst (\n\tNVIDIAUVMMinor      = 0\n\tNVIDIAUVMToolsMinor = 1\n\tNVIDIACTLMinor      = 255\n\tNVIDIAModesetMinor  = 254\n\n\tNVIDIAFrontend = Name(\"nvidia-frontend\")\n\tNVIDIAGPU      = Name(\"nvidia\")\n\tNVIDIACaps     = Name(\"nvidia-caps\")\n\tNVIDIAUVM      = Name(\"nvidia-uvm\")\n\n\tprocDevicesPath    = \"/proc/devices\"\n\tnvidiaDevicePrefix = \"nvidia\"\n)\n\n// Name represents the name of a device as specified under /proc/devices\ntype Name string\n\n// Major represents a device major as specified under /proc/devices\ntype Major int\n\n// Devices represents the set of devices under /proc/devices\n//\n//go:generate moq -rm -fmt=goimports -stub -out devices_mock.go . Devices\ntype Devices interface {\n\tExists(Name) bool\n\tGet(Name) (Major, bool)\n\tCount() int\n}\n\ntype devices map[Name]Major\n\nvar _ Devices = devices(nil)\n\n// Count returns the number of devices defined.\nfunc (d devices) Count() int {\n\treturn len(d)\n}\n\n// Exists checks if a Device with a given name exists or not\nfunc (d devices) Exists(name Name) bool {\n\t_, exists := d.Get(name)\n\treturn exists\n}\n\n// Get a Device from Devices. It also has fallback logic to ensure device name changes in /proc/devices are handled\n// For e.g:- For GPU drivers 550.40.x or greater, the gpu device has been renamed from  \"nvidia-frontend\" to \"nvidia\".\nfunc (d devices) Get(name Name) (Major, bool) {\n\tfor _, n := range name.getWithFallback() {\n\t\tdevice, exists := d[n]\n\t\tif exists {\n\t\t\treturn device, true\n\t\t}\n\t}\n\treturn 0, false\n}\n\n// getWithFallback returns a prioritised list of device names for a specific name.\n// This allows multiple names to be associated with a single name to support various driver versions.\nfunc (n Name) getWithFallback() []Name {\n\tif n == NVIDIAGPU || n == NVIDIAFrontend {\n\t\treturn []Name{NVIDIAGPU, NVIDIAFrontend}\n\t}\n\treturn []Name{n}\n}\n\n// GetNVIDIADevices returns the set of NVIDIA Devices on the machine\nfunc GetNVIDIADevices() (Devices, error) {\n\treturn nvidiaDevices(procDevicesPath)\n}\n\n// nvidiaDevices returns the set of NVIDIA Devices from the specified devices file.\n// This is useful for testing since we may be testing on a system where `/proc/devices` does\n// contain a reference to NVIDIA devices.\nfunc nvidiaDevices(devicesPath string) (Devices, error) {\n\tdevicesFile, err := os.Open(devicesPath)\n\tif os.IsNotExist(err) {\n\t\treturn nil, nil\n\t}\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error opening devices file: %v\", err)\n\t}\n\tdefer devicesFile.Close()\n\n\treturn nvidiaDeviceFrom(devicesFile)\n}\n\nvar errNoNvidiaDevices = errors.New(\"no NVIDIA devices found\")\n\nfunc nvidiaDeviceFrom(reader io.Reader) (Devices, error) {\n\tallDevices := devicesFrom(reader)\n\n\tnvidiaDevices := New(\n\t\tWithDeviceToMajor(allDevices),\n\t\tWithFilter(func(n string) bool {\n\t\t\treturn !strings.HasPrefix(n, nvidiaDevicePrefix)\n\t\t}),\n\t)\n\tif nvidiaDevices.Count() == 0 {\n\t\treturn nil, errNoNvidiaDevices\n\t}\n\treturn nvidiaDevices, nil\n}\n\nfunc devicesFrom(reader io.Reader) map[string]int {\n\tallDevices := make(map[string]int)\n\tscanner := bufio.NewScanner(reader)\n\tfor scanner.Scan() {\n\t\tdevice, major, err := processProcDeviceLine(scanner.Text())\n\t\tif err != nil {\n\t\t\tcontinue\n\t\t}\n\t\tallDevices[device] = major\n\t}\n\treturn allDevices\n}\n\nfunc processProcDeviceLine(line string) (string, int, error) {\n\ttrimmed := strings.TrimSpace(line)\n\n\tvar name string\n\tvar major int\n\n\tn, _ := fmt.Sscanf(trimmed, \"%d %s\", &major, &name)\n\tif n == 2 {\n\t\treturn name, major, nil\n\t}\n\n\treturn \"\", 0, fmt.Errorf(\"unparsable line: %v\", line)\n}\n"
  },
  {
    "path": "internal/info/proc/devices/devices_mock.go",
    "content": "// Code generated by moq; DO NOT EDIT.\n// github.com/matryer/moq\n\npackage devices\n\nimport (\n\t\"sync\"\n)\n\n// Ensure, that DevicesMock does implement Devices.\n// If this is not the case, regenerate this file with moq.\nvar _ Devices = &DevicesMock{}\n\n// DevicesMock is a mock implementation of Devices.\n//\n//\tfunc TestSomethingThatUsesDevices(t *testing.T) {\n//\n//\t\t// make and configure a mocked Devices\n//\t\tmockedDevices := &DevicesMock{\n//\t\t\tCountFunc: func() int {\n//\t\t\t\tpanic(\"mock out the Count method\")\n//\t\t\t},\n//\t\t\tExistsFunc: func(name Name) bool {\n//\t\t\t\tpanic(\"mock out the Exists method\")\n//\t\t\t},\n//\t\t\tGetFunc: func(name Name) (Major, bool) {\n//\t\t\t\tpanic(\"mock out the Get method\")\n//\t\t\t},\n//\t\t}\n//\n//\t\t// use mockedDevices in code that requires Devices\n//\t\t// and then make assertions.\n//\n//\t}\ntype DevicesMock struct {\n\t// CountFunc mocks the Count method.\n\tCountFunc func() int\n\n\t// ExistsFunc mocks the Exists method.\n\tExistsFunc func(name Name) bool\n\n\t// GetFunc mocks the Get method.\n\tGetFunc func(name Name) (Major, bool)\n\n\t// calls tracks calls to the methods.\n\tcalls struct {\n\t\t// Count holds details about calls to the Count method.\n\t\tCount []struct {\n\t\t}\n\t\t// Exists holds details about calls to the Exists method.\n\t\tExists []struct {\n\t\t\t// Name is the name argument value.\n\t\t\tName Name\n\t\t}\n\t\t// Get holds details about calls to the Get method.\n\t\tGet []struct {\n\t\t\t// Name is the name argument value.\n\t\t\tName Name\n\t\t}\n\t}\n\tlockCount  sync.RWMutex\n\tlockExists sync.RWMutex\n\tlockGet    sync.RWMutex\n}\n\n// Count calls CountFunc.\nfunc (mock *DevicesMock) Count() int {\n\tcallInfo := struct {\n\t}{}\n\tmock.lockCount.Lock()\n\tmock.calls.Count = append(mock.calls.Count, callInfo)\n\tmock.lockCount.Unlock()\n\tif mock.CountFunc == nil {\n\t\tvar (\n\t\t\tnOut int\n\t\t)\n\t\treturn nOut\n\t}\n\treturn mock.CountFunc()\n}\n\n// CountCalls gets all the calls that were made to Count.\n// Check the length with:\n//\n//\tlen(mockedDevices.CountCalls())\nfunc (mock *DevicesMock) CountCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockCount.RLock()\n\tcalls = mock.calls.Count\n\tmock.lockCount.RUnlock()\n\treturn calls\n}\n\n// Exists calls ExistsFunc.\nfunc (mock *DevicesMock) Exists(name Name) bool {\n\tcallInfo := struct {\n\t\tName Name\n\t}{\n\t\tName: name,\n\t}\n\tmock.lockExists.Lock()\n\tmock.calls.Exists = append(mock.calls.Exists, callInfo)\n\tmock.lockExists.Unlock()\n\tif mock.ExistsFunc == nil {\n\t\tvar (\n\t\t\tbOut bool\n\t\t)\n\t\treturn bOut\n\t}\n\treturn mock.ExistsFunc(name)\n}\n\n// ExistsCalls gets all the calls that were made to Exists.\n// Check the length with:\n//\n//\tlen(mockedDevices.ExistsCalls())\nfunc (mock *DevicesMock) ExistsCalls() []struct {\n\tName Name\n} {\n\tvar calls []struct {\n\t\tName Name\n\t}\n\tmock.lockExists.RLock()\n\tcalls = mock.calls.Exists\n\tmock.lockExists.RUnlock()\n\treturn calls\n}\n\n// Get calls GetFunc.\nfunc (mock *DevicesMock) Get(name Name) (Major, bool) {\n\tcallInfo := struct {\n\t\tName Name\n\t}{\n\t\tName: name,\n\t}\n\tmock.lockGet.Lock()\n\tmock.calls.Get = append(mock.calls.Get, callInfo)\n\tmock.lockGet.Unlock()\n\tif mock.GetFunc == nil {\n\t\tvar (\n\t\t\tmajorOut Major\n\t\t\tbOut     bool\n\t\t)\n\t\treturn majorOut, bOut\n\t}\n\treturn mock.GetFunc(name)\n}\n\n// GetCalls gets all the calls that were made to Get.\n// Check the length with:\n//\n//\tlen(mockedDevices.GetCalls())\nfunc (mock *DevicesMock) GetCalls() []struct {\n\tName Name\n} {\n\tvar calls []struct {\n\t\tName Name\n\t}\n\tmock.lockGet.RLock()\n\tcalls = mock.calls.Get\n\tmock.lockGet.RUnlock()\n\treturn calls\n}\n"
  },
  {
    "path": "internal/info/proc/devices/devices_test.go",
    "content": "/*\n# Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n*/\n\npackage devices\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestNvidiaDevices(t *testing.T) {\n\tperDriverDeviceMaps := map[string]map[string]int{\n\t\t\"pre550\": {\n\t\t\t\"nvidia-frontend\": 195,\n\t\t\t\"nvidia-nvlink\":   234,\n\t\t\t\"nvidia-caps\":     235,\n\t\t\t\"nvidia-uvm\":      510,\n\t\t\t\"nvidia-nvswitch\": 511,\n\t\t},\n\t\t\"post550\": {\n\t\t\t\"nvidia\":          195,\n\t\t\t\"nvidia-nvlink\":   234,\n\t\t\t\"nvidia-caps\":     235,\n\t\t\t\"nvidia-uvm\":      510,\n\t\t\t\"nvidia-nvswitch\": 511,\n\t\t},\n\t}\n\n\tfor k, devices := range perDriverDeviceMaps {\n\t\tnvidiaDevices := New(WithDeviceToMajor(devices))\n\t\tt.Run(k, func(t *testing.T) {\n\t\t\t// Each of the expected devices needs to exist.\n\t\t\tfor name, major := range devices {\n\t\t\t\tdevice, exists := nvidiaDevices.Get(Name(name))\n\t\t\t\trequire.True(t, exists)\n\t\t\t\trequire.Equal(t, device, Major(major))\n\t\t\t}\n\t\t\t// An unexpected device cannot exist\n\t\t\t_, exists := nvidiaDevices.Get(\"bogus\")\n\t\t\trequire.False(t, exists)\n\n\t\t\t// Regardles of the driver version, the nvidia and nvidia-frontend\n\t\t\t// names are supported and have the same value.\n\t\t\tnvidia, exists := nvidiaDevices.Get(NVIDIAGPU)\n\t\t\trequire.True(t, exists)\n\t\t\tnvidiaFrontend, exists := nvidiaDevices.Get(NVIDIAFrontend)\n\t\t\trequire.True(t, exists)\n\t\t\trequire.Equal(t, nvidia, nvidiaFrontend)\n\t\t})\n\n\t}\n}\n\nfunc TestProcessDeviceFile(t *testing.T) {\n\ttestCases := []struct {\n\t\tlines         []string\n\t\texpected      devices\n\t\texpectedError error\n\t}{\n\t\t{lines: []string{}, expectedError: errNoNvidiaDevices},\n\t\t{lines: []string{\"Not a valid line:\"}, expectedError: errNoNvidiaDevices},\n\t\t{lines: []string{\"195 nvidia-frontend\"}, expected: devices{\"nvidia-frontend\": 195}},\n\t\t{lines: []string{\"195 nvidia\"}, expected: devices{\"nvidia\": 195}},\n\t\t{lines: []string{\"195 nvidia-frontend\", \"235 nvidia-caps\"}, expected: devices{\"nvidia-frontend\": 195, \"nvidia-caps\": 235}},\n\t\t{lines: []string{\"  195 nvidia-frontend\"}, expected: devices{\"nvidia-frontend\": 195}},\n\t\t{lines: []string{\"Not a valid line:\", \"\", \"195 nvidia-frontend\"}, expected: devices{\"nvidia-frontend\": 195}},\n\t\t{lines: []string{\"195 not-nvidia-frontend\"}, expectedError: errNoNvidiaDevices},\n\t}\n\tfor i, tc := range testCases {\n\t\tt.Run(fmt.Sprintf(\"testcase %d\", i), func(t *testing.T) {\n\t\t\tcontents := strings.NewReader(strings.Join(tc.lines, \"\\n\"))\n\t\t\td, err := nvidiaDeviceFrom(contents)\n\t\t\trequire.ErrorIs(t, err, tc.expectedError)\n\n\t\t\tif tc.expectedError == nil {\n\t\t\t\trequire.EqualValues(t, tc.expected, d.(devices))\n\t\t\t}\n\n\t\t})\n\t}\n}\n\nfunc TestProcessDeviceFileLine(t *testing.T) {\n\ttestCases := []struct {\n\t\tline  string\n\t\tname  string\n\t\tmajor int\n\t\terr   bool\n\t}{\n\t\t{\"\", \"\", 0, true},\n\t\t{\"0\", \"\", 0, true},\n\t\t{\"notint nvidia-frontend\", \"\", 0, true},\n\t\t{\"195 nvidia-frontend\", \"nvidia-frontend\", 195, false},\n\t\t{\"   195 nvidia-frontend\", \"nvidia-frontend\", 195, false},\n\t}\n\n\tfor i, tc := range testCases {\n\t\tt.Run(fmt.Sprintf(\"testcase %d\", i), func(t *testing.T) {\n\t\t\tname, major, err := processProcDeviceLine(tc.line)\n\n\t\t\trequire.Equal(t, tc.name, name)\n\t\t\trequire.Equal(t, tc.major, major)\n\t\t\tif tc.err {\n\t\t\t\trequire.Error(t, err)\n\t\t\t} else {\n\t\t\t\trequire.NoError(t, err)\n\t\t\t}\n\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/info/proc/information_files.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage proc\n\nimport (\n\t\"bufio\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n)\n\n// GPUInfoField represents the field name for information specified in a GPU's information file\ntype GPUInfoField string\n\n// The following constants define the fields of interest from the GPU information file\nconst (\n\tGPUInfoModel       = GPUInfoField(\"Model\")\n\tGPUInfoGPUUUID     = GPUInfoField(\"GPU UUID\")\n\tGPUInfoBusLocation = GPUInfoField(\"Bus Location\")\n\tGPUInfoDeviceMinor = GPUInfoField(\"Device Minor\")\n)\n\n// GPUInfo stores the information for a GPU as determined from its associated information file\ntype GPUInfo map[GPUInfoField]string\n\n// GetInformationFilePaths returns the list of information files associated with NVIDIA GPUs.\nfunc GetInformationFilePaths(root string) ([]string, error) {\n\treturn filepath.Glob(filepath.Join(root, \"/proc/driver/nvidia/gpus/*/information\"))\n}\n\n// ParseGPUInformationFile parses the specified GPU information file and constructs a GPUInfo structure\nfunc ParseGPUInformationFile(path string) (GPUInfo, error) {\n\tinfoFile, err := os.Open(path)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to open %v: %v\", path, err)\n\t}\n\tdefer infoFile.Close()\n\n\treturn gpuInfoFrom(infoFile), nil\n}\n\n// gpuInfoFrom parses a GPUInfo struct from the specified reader\n// An information file has the following structure:\n// $ cat /proc/driver/nvidia/gpus/0000\\:06\\:00.0/information\n// Model:           Tesla V100-SXM2-16GB\n// IRQ:             408\n// GPU UUID:        GPU-edfee158-11c1-52b8-0517-92f30e7fac88\n// Video BIOS:      88.00.41.00.01\n// Bus Type:        PCIe\n// DMA Size:        47 bits\n// DMA Mask:        0x7fffffffffff\n// Bus Location:    0000:06:00.0\n// Device Minor:    0\n// GPU Excluded:    No\nfunc gpuInfoFrom(reader io.Reader) GPUInfo {\n\tinfo := make(GPUInfo)\n\tscanner := bufio.NewScanner(reader)\n\tfor scanner.Scan() {\n\t\tline := scanner.Text()\n\n\t\tparts := strings.SplitN(line, \":\", 2)\n\t\tif len(parts) != 2 {\n\t\t\tcontinue\n\t\t}\n\n\t\tfield := GPUInfoField(parts[0])\n\t\tvalue := strings.TrimSpace(parts[1])\n\n\t\tinfo[field] = value\n\t}\n\n\treturn info\n}\n"
  },
  {
    "path": "internal/info/version.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage info\n\nimport \"strings\"\n\n// version must be set by go build's -X main.version= option in the Makefile.\nvar version = \"unknown\"\n\n// gitCommit will be the hash that the binary was built from\n// and will be populated by the Makefile\nvar gitCommit = \"\"\n\n// GetVersionParts returns the different version components\nfunc GetVersionParts() []string {\n\tv := []string{version}\n\n\tif gitCommit != \"\" {\n\t\tv = append(v, \"commit: \"+gitCommit)\n\t}\n\n\treturn v\n}\n\n// GetVersionString returns the string representation of the version\nfunc GetVersionString(more ...string) string {\n\tv := append(GetVersionParts(), more...)\n\treturn strings.Join(v, \"\\n\")\n}\n"
  },
  {
    "path": "internal/ldcache/ldcache.go",
    "content": "/*\n# Copyright (c) 2021-2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n*/\n\n// Adapted from https://github.com/rai-project/ldcache\n\npackage ldcache\n\nimport (\n\t\"bytes\"\n\t\"encoding/binary\"\n\t\"errors\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"syscall\"\n\t\"unsafe\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n)\n\nconst ldcachePath = \"/etc/ld.so.cache\"\n\nconst (\n\tmagicString1 = \"ld.so-1.7.0\"\n\tmagicString2 = \"glibc-ld.so.cache\"\n\tmagicVersion = \"1.1\"\n)\n\nconst (\n\tflagTypeMask = 0x00ff\n\tflagTypeELF  = 0x0001\n\n\tflagArchMask    = 0xff00\n\tflagArchI386    = 0x0000\n\tflagArchX8664   = 0x0300\n\tflagArchX32     = 0x0800\n\tflagArchPpc64le = 0x0500\n\n\t// flagArch_ARM_LIBHF is the flag value for 32-bit ARM libs using hard-float.\n\tflagArch_ARM_LIBHF = 0x0900\n\t// flagArch_AARCH64_LIB64 is the flag value for 64-bit ARM libs.\n\tflagArch_AARCH64_LIB64 = 0x0a00\n)\n\nvar errInvalidCache = errors.New(\"invalid ld.so.cache file\")\n\ntype header1 struct {\n\tMagic [len(magicString1) + 1]byte // include null delimiter\n\tNLibs uint32\n}\n\ntype entry1 struct {\n\tFlags      int32\n\tKey, Value uint32\n}\n\ntype header2 struct {\n\tMagic     [len(magicString2)]byte\n\tVersion   [len(magicVersion)]byte\n\tNLibs     uint32\n\tTableSize uint32\n\t_         [3]uint32 // unused\n\t_         uint64    // force 8 byte alignment\n}\n\ntype entry2 struct {\n\tFlags      int32\n\tKey, Value uint32\n\tOSVersion  uint32\n\tHWCap      uint64\n}\n\n// LDCache represents the interface for performing lookups into the LDCache\n//\n//go:generate moq -rm -fmt=goimports -out ldcache_mock.go . LDCache\ntype LDCache interface {\n\tList() ([]string, []string)\n}\n\ntype ldcache struct {\n\t*bytes.Reader\n\n\tdata, libs []byte\n\theader     header2\n\tentries    []entry2\n\n\troot   string\n\tlogger logger.Interface\n}\n\n// New creates a new LDCache with the specified logger and root.\nfunc New(logger logger.Interface, root string) (LDCache, error) {\n\tpath := filepath.Join(root, ldcachePath)\n\n\tlogger.Debugf(\"Opening ld.conf at %v\", path)\n\tf, err := os.Open(path)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer f.Close()\n\n\tfi, err := f.Stat()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\td, err := syscall.Mmap(int(f.Fd()), 0, int(fi.Size()),\n\t\tsyscall.PROT_READ, syscall.MAP_PRIVATE)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tcache := &ldcache{\n\t\tdata:   d,\n\t\tReader: bytes.NewReader(d),\n\t\troot:   root,\n\t\tlogger: logger,\n\t}\n\treturn cache, cache.parse()\n}\n\nfunc (c *ldcache) Close() error {\n\treturn syscall.Munmap(c.data)\n}\n\nfunc (c *ldcache) Magic() string {\n\treturn string(c.header.Magic[:])\n}\n\nfunc (c *ldcache) Version() string {\n\treturn string(c.header.Version[:])\n}\n\nfunc strn(b []byte, n int) string {\n\treturn string(b[:n])\n}\n\nfunc (c *ldcache) parse() error {\n\tvar header header1\n\n\t// Check for the old format (< glibc-2.2)\n\tif c.Len() <= int(unsafe.Sizeof(header)) {\n\t\treturn errInvalidCache\n\t}\n\tif strn(c.data, len(magicString1)) == magicString1 {\n\t\tif err := binary.Read(c, binary.LittleEndian, &header); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tn := int64(header.NLibs) * int64(unsafe.Sizeof(entry1{}))\n\t\toffset, err := c.Seek(n, 1) // skip old entries\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tn = (-offset) & int64(unsafe.Alignof(c.header)-1)\n\t\t_, err = c.Seek(n, 1) // skip padding\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tc.libs = c.data[c.Size()-int64(c.Len()):] // kv offsets start here\n\tif err := binary.Read(c, binary.LittleEndian, &c.header); err != nil {\n\t\treturn err\n\t}\n\tif c.Magic() != magicString2 || c.Version() != magicVersion {\n\t\treturn errInvalidCache\n\t}\n\tc.entries = make([]entry2, c.header.NLibs)\n\tif err := binary.Read(c, binary.LittleEndian, &c.entries); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\ntype entry struct {\n\tlibname string\n\tbits    int\n\tvalue   string\n}\n\n// getEntries returns the entires of the ldcache in a go-friendly struct.\nfunc (c *ldcache) getEntries() []entry {\n\tvar entries []entry\n\tfor _, e := range c.entries {\n\t\tbits := 0\n\t\tif ((e.Flags & flagTypeMask) & flagTypeELF) == 0 {\n\t\t\tcontinue\n\t\t}\n\t\tswitch e.Flags & flagArchMask {\n\t\tcase flagArchX8664:\n\t\t\tfallthrough\n\t\tcase flagArch_AARCH64_LIB64:\n\t\t\tfallthrough\n\t\tcase flagArchPpc64le:\n\t\t\tbits = 64\n\t\tcase flagArchX32:\n\t\t\tfallthrough\n\t\tcase flagArch_ARM_LIBHF:\n\t\t\tfallthrough\n\t\tcase flagArchI386:\n\t\t\tbits = 32\n\t\tdefault:\n\t\t\tcontinue\n\t\t}\n\t\tif e.Key > uint32(len(c.libs)) || e.Value > uint32(len(c.libs)) {\n\t\t\tcontinue\n\t\t}\n\t\tlib := bytesToString(c.libs[e.Key:])\n\t\tif lib == \"\" {\n\t\t\tc.logger.Debugf(\"Skipping invalid lib\")\n\t\t\tcontinue\n\t\t}\n\t\tvalue := bytesToString(c.libs[e.Value:])\n\t\tif value == \"\" {\n\t\t\tc.logger.Debugf(\"Skipping invalid value for lib %v\", lib)\n\t\t\tcontinue\n\t\t}\n\t\te := entry{\n\t\t\tlibname: lib,\n\t\t\tbits:    bits,\n\t\t\tvalue:   value,\n\t\t}\n\t\tentries = append(entries, e)\n\t}\n\treturn entries\n}\n\n// List creates a list of libraries in the ldcache.\n// The 32-bit and 64-bit libraries are returned separately.\nfunc (c *ldcache) List() ([]string, []string) {\n\tpaths := make(map[int][]string)\n\tprocessed := make(map[string]bool)\n\n\tfor _, e := range c.getEntries() {\n\t\tpath := filepath.Join(c.root, e.value)\n\t\tif processed[path] {\n\t\t\tcontinue\n\t\t}\n\t\tpaths[e.bits] = append(paths[e.bits], path)\n\t\tprocessed[path] = true\n\t}\n\n\treturn paths[32], paths[64]\n}\n\n// bytesToString converts a byte slice to a string.\n// This assumes that the byte slice is null-terminated\nfunc bytesToString(value []byte) string {\n\tn := bytes.IndexByte(value, 0)\n\tif n < 0 {\n\t\treturn \"\"\n\t}\n\n\treturn strn(value, n)\n}\n"
  },
  {
    "path": "internal/ldcache/ldcache_mock.go",
    "content": "// Code generated by moq; DO NOT EDIT.\n// github.com/matryer/moq\n\npackage ldcache\n\nimport (\n\t\"sync\"\n)\n\n// Ensure, that LDCacheMock does implement LDCache.\n// If this is not the case, regenerate this file with moq.\nvar _ LDCache = &LDCacheMock{}\n\n// LDCacheMock is a mock implementation of LDCache.\n//\n//\tfunc TestSomethingThatUsesLDCache(t *testing.T) {\n//\n//\t\t// make and configure a mocked LDCache\n//\t\tmockedLDCache := &LDCacheMock{\n//\t\t\tListFunc: func() ([]string, []string) {\n//\t\t\t\tpanic(\"mock out the List method\")\n//\t\t\t},\n//\t\t}\n//\n//\t\t// use mockedLDCache in code that requires LDCache\n//\t\t// and then make assertions.\n//\n//\t}\ntype LDCacheMock struct {\n\t// ListFunc mocks the List method.\n\tListFunc func() ([]string, []string)\n\n\t// calls tracks calls to the methods.\n\tcalls struct {\n\t\t// List holds details about calls to the List method.\n\t\tList []struct {\n\t\t}\n\t}\n\tlockList sync.RWMutex\n}\n\n// List calls ListFunc.\nfunc (mock *LDCacheMock) List() ([]string, []string) {\n\tif mock.ListFunc == nil {\n\t\tpanic(\"LDCacheMock.ListFunc: method is nil but LDCache.List was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockList.Lock()\n\tmock.calls.List = append(mock.calls.List, callInfo)\n\tmock.lockList.Unlock()\n\treturn mock.ListFunc()\n}\n\n// ListCalls gets all the calls that were made to List.\n// Check the length with:\n//\n//\tlen(mockedLDCache.ListCalls())\nfunc (mock *LDCacheMock) ListCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockList.RLock()\n\tcalls = mock.calls.List\n\tmock.lockList.RUnlock()\n\treturn calls\n}\n"
  },
  {
    "path": "internal/ldconfig/ldconfig.go",
    "content": "/**\n# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage ldconfig\n\nimport (\n\t\"bufio\"\n\t\"flag\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"os/exec\"\n\t\"path/filepath\"\n\t\"runtime\"\n\t\"strings\"\n\n\t\"github.com/prometheus/procfs\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/api/config/v1\"\n)\n\nconst (\n\t// ldsoconfdFilenamePattern specifies the pattern for the filename\n\t// in ld.so.conf.d that includes references to the specified directories.\n\t// The 00-nvcr prefix is chosen to ensure that these libraries have a\n\t// higher precedence than other libraries on the system, but lower than\n\t// the 00-cuda-compat that is included in some containers.\n\tldsoconfdFilenamePattern = \"00-nvcr-*.conf\"\n\t// ldsoconfdSystemDirsFilenamePattern specifies the filename pattern for the drop-in conf file\n\t// that includes the expected system directories for the container.\n\t// This is chosen to have a high likelihood of being lexicographically last in\n\t// in the list of config files, since system search paths should be\n\t// considered last.\n\tldsoconfdSystemDirsFilenamePattern = \"zz-nvcr-*.conf\"\n\t// defaultTopLevelLdsoconfFilePath is the standard location of the top-level ld.so.conf file.\n\t// Most container images based on a distro will have this file, but distroless container images\n\t// may not.\n\tdefaultTopLevelLdsoconfFilePath = \"/etc/ld.so.conf\"\n\t// defaultLdsoconfdDir is the standard location for the ld.so.conf.d drop-in directory. Most\n\t// container images based on a distro will have this directory included by the top-level\n\t// ld.so.conf file, but some may not. And some container images may not have a top-level\n\t// ld.so.conf file at all.\n\tdefaultLdsoconfdDir = \"/etc/ld.so.conf.d\"\n)\n\ntype Ldconfig struct {\n\tldconfigPath          string\n\tinRoot                string\n\tisDebianLikeHost      bool\n\tisDebianLikeContainer bool\n\tnoPivotRoot           bool\n\tdirectories           []string\n}\n\n// NewRunner creates an exec.Cmd that can be used to run ldconfig.\nfunc NewRunner(id string, ldconfigPath string, containerRoot string, additionalargs ...string) (*exec.Cmd, error) {\n\targs := []string{\n\t\tid,\n\t\t\"--ldconfig-path\", strings.TrimPrefix(config.NormalizeLDConfigPath(\"@\"+ldconfigPath), \"@\"),\n\t\t\"--container-root\", containerRoot,\n\t}\n\tif isDebianLike() {\n\t\targs = append(args, \"--is-debian-like-host\")\n\t}\n\n\tif noPivotRoot() {\n\t\targs = append(args, \"--no-pivot\")\n\t}\n\n\targs = append(args, additionalargs...)\n\n\treturn createReexecCommand(args)\n}\n\n// NewFromArgs creates an Ldconfig struct from the args passed to the Cmd\n// above.\n// This struct is used to perform operations on the ldcache and libraries in a\n// particular root (e.g. a container).\n//\n// args[0] is the reexec initializer function name and is required.\n//\n// The following flags are required:\n//\n//\t--ldconfig-path=LDCONFIG_PATH\tthe path to ldconfig on the host\n//\t--container-root=CONTAINER_ROOT\tthe path in which ldconfig must be run\n//\n// The following flags are optional:\n//\n//\t--is-debian-like-host\tIndicates that the host system is debian-like (e.g. Debian, Ubuntu)\n//\t                     \tas opposed to non-Debian-like (e.g. RHEL, Fedora)\n//\t                     \tSee https://github.com/NVIDIA/nvidia-container-toolkit/pull/1444\n//\t--no-pivot           \tpivot_root should not be used to provide process isolation.\n//\n// The remaining args are folders where soname symlinks need to be created.\nfunc NewFromArgs(args ...string) (*Ldconfig, error) {\n\tif len(args) < 1 {\n\t\treturn nil, fmt.Errorf(\"incorrect arguments: %v\", args)\n\t}\n\tfs := flag.NewFlagSet(\"ldconfig-options\", flag.ExitOnError)\n\tldconfigPath := fs.String(\"ldconfig-path\", \"\", \"the path to ldconfig on the host\")\n\tcontainerRoot := fs.String(\"container-root\", \"\", \"the path in which ldconfig must be run\")\n\tisDebianLikeHost := fs.Bool(\"is-debian-like-host\", false, `indicates that the host system is debian-based.\nThis allows us to handle the case where there are  differences in behavior\nbetween the ldconfig from the host (as executed from an update-ldcache hook) and\nldconfig in the container. Such differences include system search paths.`)\n\tnoPivot := fs.Bool(\"no-pivot\", false, \"don't use pivot_root to perform isolation\")\n\tif err := fs.Parse(args[1:]); err != nil {\n\t\treturn nil, err\n\t}\n\n\tif *ldconfigPath == \"\" {\n\t\treturn nil, fmt.Errorf(\"an ldconfig path must be specified\")\n\t}\n\tif *containerRoot == \"\" || *containerRoot == \"/\" {\n\t\treturn nil, fmt.Errorf(\"ldconfig must be run in the non-system root\")\n\t}\n\n\tl := &Ldconfig{\n\t\tldconfigPath:     *ldconfigPath,\n\t\tinRoot:           *containerRoot,\n\t\tisDebianLikeHost: *isDebianLikeHost,\n\t\tnoPivotRoot:      *noPivot,\n\t\tdirectories:      fs.Args(),\n\t}\n\treturn l, nil\n}\n\nfunc (l *Ldconfig) UpdateLDCache() error {\n\tldconfigPath, err := l.prepareRoot()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// `prepareRoot` pivots to the container root, so can now set the container \"debian-ness\".\n\tl.isDebianLikeContainer = isDebianLike()\n\n\t// Ensure that the top-level config file used specifies includes the\n\t// defaultLdsoconfDir drop-in config folder.\n\tif err := ensureLdsoconfFile(defaultTopLevelLdsoconfFilePath, defaultLdsoconfdDir); err != nil {\n\t\treturn fmt.Errorf(\"failed to ensure ld.so.conf file: %w\", err)\n\t}\n\n\tfilteredDirectories, err := l.filterDirectories(defaultTopLevelLdsoconfFilePath, l.directories...)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\targs := []string{\n\t\tfilepath.Base(ldconfigPath),\n\t\t\"-f\", defaultTopLevelLdsoconfFilePath,\n\t\t\"-C\", \"/etc/ld.so.cache\",\n\t}\n\n\tif err := createLdsoconfdFile(defaultLdsoconfdDir, ldsoconfdFilenamePattern, filteredDirectories...); err != nil {\n\t\treturn fmt.Errorf(\"failed to write %s drop-in: %w\", ldsoconfdFilenamePattern, err)\n\t}\n\n\tsystemSearchPaths := l.getSystemSearchPaths()\n\t// In most cases, the hook will be executing a host ldconfig that may be configured widely\n\t// differently from what the container image expects.\n\t// The common case is Debian-like (e.g. Debian, Ubuntu) vs non-Debian-like (e.g. RHEL, Fedora).\n\t// But there are also hosts that configure ldconfig to search in a glibc prefix\n\t// (e.g. /usr/lib/glibc). To avoid all these cases, write the container's expected system search\n\t// paths to a drop-in conf file that is likely to be last in lexicographic order. Entries in the\n\t// top-level ld.so.conf file may be processed after this drop-in, but this hook does not modify\n\t// the top-level file if it exists.\n\tif err := createLdsoconfdFile(defaultLdsoconfdDir, ldsoconfdSystemDirsFilenamePattern, systemSearchPaths...); err != nil {\n\t\treturn fmt.Errorf(\"failed to write %s drop-in: %w\", ldsoconfdSystemDirsFilenamePattern, err)\n\t}\n\n\t// Also output the folders to the alpine .path file as required.\n\tif err := createMuslPathFileIfRequired(append(filteredDirectories, systemSearchPaths...)...); err != nil {\n\t\treturn fmt.Errorf(\"failed to update .path file for musl: %w\", err)\n\t}\n\n\treturn SafeExec(ldconfigPath, args, nil)\n}\n\nfunc (l *Ldconfig) prepareRoot() (string, error) {\n\troot, err := os.OpenRoot(l.inRoot)\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"failed to open root: %w\", err)\n\t}\n\tdefer root.Close()\n\n\t// To prevent leaking the parent proc filesystem, we create a new proc mount\n\t// in the specified root.\n\tif err := mountProc(root); err != nil {\n\t\treturn \"\", fmt.Errorf(\"error mounting /proc: %w\", err)\n\t}\n\n\t// We mount the host ldconfig before we pivot root since host paths are not\n\t// visible after the pivot root operation.\n\tldconfigPath, err := mountLdConfig(l.ldconfigPath, root)\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"error mounting host ldconfig: %w\", err)\n\t}\n\n\t// We pivot to the container root for the new process, this further limits\n\t// access to the host.\n\tif err := l.pivotRoot(root); err != nil {\n\t\treturn \"\", fmt.Errorf(\"error running pivot_root: %w\", err)\n\t}\n\n\treturn ldconfigPath, nil\n}\n\nfunc (l *Ldconfig) filterDirectories(configFilePath string, directories ...string) ([]string, error) {\n\tldconfigDirs, err := l.getLdsoconfDirectories(configFilePath)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar filtered []string\n\tfor _, d := range directories {\n\t\tif _, ok := ldconfigDirs[d]; ok {\n\t\t\tcontinue\n\t\t}\n\t\tfiltered = append(filtered, d)\n\t\tldconfigDirs[d] = struct{}{}\n\t}\n\treturn filtered, nil\n}\n\n// createLdsoconfdFile creates a ld.so.conf.d drop-in file with the specified directories on each\n// line. The file is created at `ldsoconfdDir`/{{ .pattern }} using `CreateTemp`.\nfunc createLdsoconfdFile(ldsoconfdDir, pattern string, dirs ...string) error {\n\tif len(dirs) == 0 {\n\t\treturn nil\n\t}\n\tif err := os.MkdirAll(ldsoconfdDir, 0755); err != nil {\n\t\treturn fmt.Errorf(\"failed to create ld.so.conf.d: %w\", err)\n\t}\n\tconfigFile, err := os.CreateTemp(ldsoconfdDir, pattern)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to create config file: %w\", err)\n\t}\n\tdefer func() {\n\t\t_ = configFile.Close()\n\t}()\n\n\tif err := outputListToFile(configFile, dirs...); err != nil {\n\t\treturn err\n\t}\n\n\t// The created file needs to be world readable for the cases where the container is run as a non-root user.\n\tif err := configFile.Chmod(0644); err != nil {\n\t\treturn fmt.Errorf(\"failed to chmod config file: %w\", err)\n\t}\n\n\treturn nil\n}\n\nfunc outputListToFile(w io.Writer, dirs ...string) error {\n\tadded := make(map[string]bool)\n\tfor _, dir := range dirs {\n\t\tif added[dir] {\n\t\t\tcontinue\n\t\t}\n\t\t_, err := fmt.Fprintf(w, \"%s\\n\", dir)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"failed to update config file: %w\", err)\n\t\t}\n\t\tadded[dir] = true\n\t}\n\treturn nil\n}\n\n// ensureLdsoconfFile creates a \"standard\" top-level ld.so.conf file if none exists.\n//\n// The created file will contain a single include statement for \"`ldsoconfdDir`/*.conf\".\nfunc ensureLdsoconfFile(topLevelLdsoconfFilePath, ldsoconfdDir string) error {\n\tconfigFile, err := os.OpenFile(topLevelLdsoconfFilePath, os.O_RDWR|os.O_CREATE|os.O_EXCL, 0644)\n\tif err != nil {\n\t\tif os.IsExist(err) {\n\t\t\treturn nil\n\t\t}\n\t\treturn fmt.Errorf(\"failed to create top-level ld.so.conf file: %w\", err)\n\t}\n\tdefer configFile.Close()\n\t_, err = configFile.WriteString(\"include \" + ldsoconfdDir + \"/*.conf\\n\")\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to write to top-level ld.so.conf file: %w\", err)\n\t}\n\treturn nil\n}\n\n// getLdsoconfDirectories returns a map of ldsoconf directories to the conf\n// files that refer to the directory.\nfunc (l *Ldconfig) getLdsoconfDirectories(configFilePath string) (map[string]struct{}, error) {\n\tldconfigDirs := make(map[string]struct{})\n\tfor _, d := range l.getSystemSearchPaths() {\n\t\tldconfigDirs[d] = struct{}{}\n\t}\n\n\tprocessedConfFiles := make(map[string]bool)\n\tldsoconfFilenames := []string{configFilePath}\n\tfor len(ldsoconfFilenames) > 0 {\n\t\tldsoconfFilename := ldsoconfFilenames[0]\n\t\tldsoconfFilenames = ldsoconfFilenames[1:]\n\t\tif processedConfFiles[ldsoconfFilename] {\n\t\t\tcontinue\n\t\t}\n\t\tprocessedConfFiles[ldsoconfFilename] = true\n\n\t\tif len(ldsoconfFilename) == 0 {\n\t\t\tcontinue\n\t\t}\n\t\tdirectories, includedFilenames, err := processLdsoconfFile(ldsoconfFilename)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tldsoconfFilenames = append(ldsoconfFilenames, includedFilenames...)\n\t\tfor _, d := range directories {\n\t\t\tldconfigDirs[d] = struct{}{}\n\t\t}\n\t}\n\treturn ldconfigDirs, nil\n}\n\nfunc (l *Ldconfig) getSystemSearchPaths() []string {\n\tif l.isDebianLikeContainer {\n\t\treturn debianSystemSearchPaths()\n\t}\n\treturn nonDebianSystemSearchPaths()\n}\n\n// processLdsoconfFile extracts the list of directories and included configs\n// from the specified file.\nfunc processLdsoconfFile(ldsoconfFilename string) ([]string, []string, error) {\n\tldsoconf, err := os.Open(ldsoconfFilename)\n\tif os.IsNotExist(err) {\n\t\treturn nil, nil, nil\n\t}\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer ldsoconf.Close()\n\n\tvar directories []string\n\tvar includedFilenames []string\n\tscanner := bufio.NewScanner(ldsoconf)\n\tfor scanner.Scan() {\n\t\tline := strings.TrimSpace(scanner.Text())\n\t\tswitch {\n\t\tcase strings.HasPrefix(line, \"#\") || len(line) == 0:\n\t\t\tcontinue\n\t\tcase strings.HasPrefix(line, \"include \"):\n\t\t\tinclude, err := filepath.Glob(strings.TrimPrefix(line, \"include \"))\n\t\t\tif err != nil {\n\t\t\t\t// We ignore invalid includes.\n\t\t\t\t// TODO: How does ldconfig handle this?\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tincludedFilenames = append(includedFilenames, include...)\n\t\tdefault:\n\t\t\tdirectories = append(directories, line)\n\t\t}\n\t}\n\treturn directories, includedFilenames, nil\n}\n\n// createMuslPathFileIfRequired creates a musl .path file that allows libraries\n// from the specified directories to be discovered on the system.\n// This is required because systems that use musl do not rely on the ldcache to\n// discover libraries.\nfunc createMuslPathFileIfRequired(dirs ...string) error {\n\tif len(dirs) == 0 || !isMusl() {\n\t\treturn nil\n\t}\n\n\tvar pathFileName string\n\tswitch runtime.GOARCH {\n\tcase \"amd64\":\n\t\tpathFileName = \"/etc/ld-musl-x86_64.path\"\n\tcase \"arm64\":\n\t\tpathFileName = \"/etc/ld-musl-aarch64.path\"\n\t}\n\n\tpathFile, err := os.OpenFile(pathFileName, os.O_CREATE|os.O_APPEND|os.O_RDWR, 0644)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"could not open .path file: %w\", err)\n\t}\n\tdefer func() {\n\t\t_ = pathFile.Close()\n\t}()\n\n\treturn outputListToFile(pathFile, dirs...)\n}\n\n// isMusl checks whether the container is running musl instead of glibc.\n// Note that for the time being we only check whether `/etc/alpine-release` is\n// present in the container.\nfunc isMusl() bool {\n\tinfo, err := os.Stat(\"/etc/alpine-release\")\n\tif err != nil {\n\t\treturn false\n\t}\n\treturn !info.IsDir()\n}\n\n// isDebianLike returns true if a Debian-like distribution is detected.\n// Debian-like distributions include Debian and Ubuntu, whereas non-Debian-like\n// distributions include RHEL and Fedora.\nfunc isDebianLike() bool {\n\tinfo, err := os.Stat(\"/etc/debian_version\")\n\tif err != nil {\n\t\treturn false\n\t}\n\treturn !info.IsDir()\n}\n\n// nonDebianSystemSearchPaths returns the system search paths for non-Debian-like systems.\n// (note that Debian-like systems include Ubuntu systems)\n//\n// glibc ldconfig's calls `add_system_dir` with `SLIBDIR` and `LIBDIR` (if they are not equal). On\n// aarch64 and x86_64, `add_system_dir` is a macro that scans the provided path. If the path ends\n// with \"/lib64\" (or \"/libx32\", x86_64 only), it strips those suffixes. Then it registers the\n// resulting path. Then if the path ends with \"/lib\", it registers \"path\"+\"64\" (and \"path\"+\"x32\",\n// x86_64 only).\n//\n// By default, \"LIBDIR\" is \"/usr/lib\" and \"SLIBDIR\" is \"/lib\". Note that on modern distributions,\n// \"/lib\" is usually a symlink to \"/usr/lib\" and \"/lib64\" to \"/usr/lib64\". ldconfig resolves\n// symlinks and skips duplicate directory entries.\n//\n// To get the list of system paths, you can invoke the dynamic linker with `--list-diagnostics` and\n// look for \"path.system_dirs\". For example\n//\n// $ docker run --rm -ti fedora bash -c \"uname -m;\\$(find . | grep /ld-linux) --list-diagnostics | grep path.system_dirs\"\n// x86_64\n// path.system_dirs[0x0]=\"/lib64/\"\n// path.system_dirs[0x1]=\"/usr/lib64/\"\n//\n// $ docker run --rm -ti redhat/ubi9 bash -c \"uname -m;\\$(find . | grep /ld-linux) --list-diagnostics | grep path.system_dirs\"\n// x86_64\n// path.system_dirs[0x0]=\"/lib64/\"\n// path.system_dirs[0x1]=\"/usr/lib64/\"\n//\n// On most distributions, including Fedora and derivatives, this yields the following\n// ldconfig system search paths.\n//\n// TODO: Add other architectures that have custom `add_system_dir` macros (e.g. riscv)\n// TODO: Replace with executing the container's dynamlic linker with `--list-diagnostics`?\nfunc nonDebianSystemSearchPaths() []string {\n\tvar paths []string\n\tpaths = append(paths, \"/lib\", \"/usr/lib\")\n\tswitch runtime.GOARCH {\n\tcase \"amd64\":\n\t\tpaths = append(paths,\n\t\t\t\"/lib64\",\n\t\t\t\"/usr/lib64\",\n\t\t\t\"/libx32\",\n\t\t\t\"/usr/libx32\",\n\t\t)\n\tcase \"arm64\":\n\t\tpaths = append(paths,\n\t\t\t\"/lib64\",\n\t\t\t\"/usr/lib64\",\n\t\t)\n\t}\n\treturn paths\n}\n\n// debianSystemSearchPaths returns the system search paths for Debian-like systems.\n// (note that Debian-like systems include Ubuntu systems)\n//\n// Debian (and derivatives) apply their multi-arch patch to glibc, which modifies ldconfig to\n// use the same set of system paths as the dynamic linker. These paths are going to include the\n// multi-arch directory _and_ by default \"/lib\" and \"/usr/lib\" for compatibility.\n//\n// To get the list of system paths, you can invoke the dynamic linker with `--list-diagnostics` and\n// look for \"path.system_dirs\". For example\n//\n// $ docker run --rm -ti ubuntu bash -c \"uname -m;\\$(find . | grep /ld-linux | head -1) --list-diagnostics | grep path.system_dirs\"\n// x86_64\n// path.system_dirs[0x0]=\"/lib/x86_64-linux-gnu/\"\n// path.system_dirs[0x1]=\"/usr/lib/x86_64-linux-gnu/\"\n// path.system_dirs[0x2]=\"/lib/\"\n// path.system_dirs[0x3]=\"/usr/lib/\"\n//\n// $ docker run --rm -ti debian  bash -c \"uname -m;\\$(find . | grep /ld-linux | head -1) --list-diagnostics | grep path.system_dirs\"\n// x86_64\n// path.system_dirs[0x0]=\"/lib/x86_64-linux-gnu/\"\n// path.system_dirs[0x1]=\"/usr/lib/x86_64-linux-gnu/\"\n// path.system_dirs[0x2]=\"/lib/\"\n// path.system_dirs[0x3]=\"/usr/lib/\"\n//\n// This yields the following ldconfig system search paths.\n//\n// TODO: Add other architectures that have custom `add_system_dir` macros (e.g. riscv)\n// TODO: Replace with executing the container's dynamlic linker with `--list-diagnostics`?\nfunc debianSystemSearchPaths() []string {\n\tvar paths []string\n\tswitch runtime.GOARCH {\n\tcase \"amd64\":\n\t\tpaths = append(paths,\n\t\t\t\"/lib/x86_64-linux-gnu\",\n\t\t\t\"/usr/lib/x86_64-linux-gnu\",\n\t\t)\n\tcase \"arm64\":\n\t\tpaths = append(paths,\n\t\t\t\"/lib/aarch64-linux-gnu\",\n\t\t\t\"/usr/lib/aarch64-linux-gnu\",\n\t\t)\n\t}\n\tpaths = append(paths, \"/lib\", \"/usr/lib\")\n\treturn paths\n}\n\nfunc (l *Ldconfig) pivotRoot(root *os.Root) error {\n\trootDir := root.Name()\n\t// We select the function to pivot the root based on whether pivot_root is\n\t// supported.\n\t// See https://github.com/opencontainers/runc/blob/c3d127f6e8d9f6c06d78b8329cafa8dd39f6236e/libcontainer/rootfs_linux.go#L207-L216\n\tif l.noPivotRoot {\n\t\treturn msMoveRoot(rootDir)\n\t}\n\treturn pivotRoot(rootDir)\n}\n\n// noPivotRoot checks whether the current root filesystem supports a pivot_root.\n// See https://github.com/opencontainers/runc/blob/main/libcontainer/SPEC.md#filesystem\n// for a discussion on when this is not the case.\n// If we fail to detect whether pivot-root is supported, we assume that it is supported.\n// The logic to check for support is adapted from kata-containers:\n//\n//\thttps://github.com/kata-containers/kata-containers/blob/e7b9eddcede4bbe2edeb9c3af7b2358dc65da76f/src/agent/src/sandbox.rs#L150\n//\n// and checks whether \"/\" is mounted as a rootfs.\nfunc noPivotRoot() bool {\n\trootFsType, err := getRootfsType(\"/\")\n\tif err != nil {\n\t\treturn false\n\t}\n\treturn rootFsType == \"rootfs\"\n}\n\nfunc getRootfsType(path string) (string, error) {\n\tprocSelf, err := procfs.Self()\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tmountStats, err := procSelf.MountStats()\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tfor _, mountStat := range mountStats {\n\t\tif mountStat.Mount == path {\n\t\t\treturn mountStat.Type, nil\n\t\t}\n\t}\n\treturn \"\", fmt.Errorf(\"mount stats for %q not found\", path)\n}\n"
  },
  {
    "path": "internal/ldconfig/ldconfig_linux.go",
    "content": "//go:build linux\n\n/**\n# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage ldconfig\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"os\"\n\t\"os/exec\"\n\t\"path/filepath\"\n\t\"strconv\"\n\t\"strings\"\n\t\"syscall\"\n\n\t\"github.com/google/uuid\"\n\t\"github.com/moby/sys/mountinfo\"\n\t\"github.com/moby/sys/reexec\"\n\n\t\"github.com/opencontainers/runc/libcontainer/utils\"\n\t\"golang.org/x/sys/unix\"\n)\n\n// pivotRoot will call pivot_root such that rootfs becomes the new root\n// filesystem, and everything else is cleaned up.\n// This is adapted from the implementation here:\n//\n//\thttps://github.com/opencontainers/runc/blob/e89a29929c775025419ab0d218a43588b4c12b9a/libcontainer/rootfs_linux.go#L1056-L1113\n//\n// With the `mount` and `unmount` calls changed to direct unix.Mount and unix.Unmount calls.\nfunc pivotRoot(rootfs string) error {\n\t// While the documentation may claim otherwise, pivot_root(\".\", \".\") is\n\t// actually valid. What this results in is / being the new root but\n\t// /proc/self/cwd being the old root. Since we can play around with the cwd\n\t// with pivot_root this allows us to pivot without creating directories in\n\t// the rootfs. Shout-outs to the LXC developers for giving us this idea.\n\n\toldroot, err := unix.Open(\"/\", unix.O_DIRECTORY|unix.O_RDONLY, 0)\n\tif err != nil {\n\t\treturn &os.PathError{Op: \"open\", Path: \"/\", Err: err}\n\t}\n\tdefer unix.Close(oldroot) //nolint: errcheck\n\n\tnewroot, err := unix.Open(rootfs, unix.O_DIRECTORY|unix.O_RDONLY, 0)\n\tif err != nil {\n\t\treturn &os.PathError{Op: \"open\", Path: rootfs, Err: err}\n\t}\n\tdefer unix.Close(newroot) //nolint: errcheck\n\n\t// Change to the new root so that the pivot_root actually acts on it.\n\tif err := unix.Fchdir(newroot); err != nil {\n\t\treturn &os.PathError{Op: \"fchdir\", Path: \"fd \" + strconv.Itoa(newroot), Err: err}\n\t}\n\n\tif err := unix.PivotRoot(\".\", \".\"); err != nil {\n\t\treturn &os.PathError{Op: \"pivot_root\", Path: \".\", Err: err}\n\t}\n\n\t// Currently our \".\" is oldroot (according to the current kernel code).\n\t// However, purely for safety, we will fchdir(oldroot) since there isn't\n\t// really any guarantee from the kernel what /proc/self/cwd will be after a\n\t// pivot_root(2).\n\n\tif err := unix.Fchdir(oldroot); err != nil {\n\t\treturn &os.PathError{Op: \"fchdir\", Path: \"fd \" + strconv.Itoa(oldroot), Err: err}\n\t}\n\n\t// Make oldroot rslave to make sure our unmounts don't propagate to the\n\t// host (and thus bork the machine). We don't use rprivate because this is\n\t// known to cause issues due to races where we still have a reference to a\n\t// mount while a process in the host namespace are trying to operate on\n\t// something they think has no mounts (devicemapper in particular).\n\tif err := unix.Mount(\"\", \".\", \"\", unix.MS_SLAVE|unix.MS_REC, \"\"); err != nil {\n\t\treturn err\n\t}\n\t// Perform the unmount. MNT_DETACH allows us to unmount /proc/self/cwd.\n\tif err := unix.Unmount(\".\", unix.MNT_DETACH); err != nil {\n\t\treturn err\n\t}\n\n\t// Switch back to our shiny new root.\n\tif err := unix.Chdir(\"/\"); err != nil {\n\t\treturn &os.PathError{Op: \"chdir\", Path: \"/\", Err: err}\n\t}\n\treturn nil\n}\n\n// msMoveRoot is used in cases where pivot root is not supported.\n// This includes initramfs filesystems where the root is read-only.\n// This is adapted from the implementation here:\n//\n//\thttps://github.com/opencontainers/runc/blob/e89a29929c775025419ab0d218a43588b4c12b9a/libcontainer/rootfs_linux.go#L1115\n//\n// With the `mount` and `unmount` calls changed to direct unix.Mount and unix.Unmount calls.\nfunc msMoveRoot(rootfs string) error {\n\t// Before we move the root and chroot we have to mask all \"full\" sysfs and\n\t// procfs mounts which exist on the host. This is because while the kernel\n\t// has protections against mounting procfs if it has masks, when using\n\t// chroot(2) the *host* procfs mount is still reachable in the mount\n\t// namespace and the kernel permits procfs mounts inside --no-pivot\n\t// containers.\n\t//\n\t// Users shouldn't be using --no-pivot except in exceptional circumstances,\n\t// but to avoid such a trivial security flaw we apply a best-effort\n\t// protection here. The kernel only allows a mount of a pseudo-filesystem\n\t// like procfs or sysfs if there is a *full* mount (the root of the\n\t// filesystem is mounted) without any other locked mount points covering a\n\t// subtree of the mount.\n\t//\n\t// So we try to unmount (or mount tmpfs on top of) any mountpoint which is\n\t// a full mount of either sysfs or procfs (since those are the most\n\t// concerning filesystems to us).\n\tmountinfos, err := mountinfo.GetMounts(func(info *mountinfo.Info) (skip, stop bool) {\n\t\t// Collect every sysfs and procfs filesystem, except for those which\n\t\t// are non-full mounts or are inside the rootfs of the container.\n\t\tif info.Root != \"/\" ||\n\t\t\t(info.FSType != \"proc\" && info.FSType != \"sysfs\") ||\n\t\t\tstrings.HasPrefix(info.Mountpoint, rootfs) {\n\t\t\tskip = true\n\t\t}\n\t\treturn\n\t})\n\tif err != nil {\n\t\treturn err\n\t}\n\tfor _, info := range mountinfos {\n\t\tp := info.Mountpoint\n\t\t// Be sure umount events are not propagated to the host.\n\t\tif err := unix.Mount(\"\", p, \"\", unix.MS_SLAVE|unix.MS_REC, \"\"); err != nil {\n\t\t\tif errors.Is(err, unix.ENOENT) {\n\t\t\t\t// If the mountpoint doesn't exist that means that we've\n\t\t\t\t// already blasted away some parent directory of the mountpoint\n\t\t\t\t// and so we don't care about this error.\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\treturn err\n\t\t}\n\t\tif err := unix.Unmount(p, unix.MNT_DETACH); err != nil {\n\t\t\tif !errors.Is(err, unix.EINVAL) && !errors.Is(err, unix.EPERM) {\n\t\t\t\treturn err\n\t\t\t} else {\n\t\t\t\t// If we have not privileges for umounting (e.g. rootless), then\n\t\t\t\t// cover the path.\n\t\t\t\tif err := unix.Mount(\"tmpfs\", p, \"tmpfs\", 0, \"\"); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Move the rootfs on top of \"/\" in our mount namespace.\n\tif err := unix.Mount(rootfs, \"/\", \"\", unix.MS_MOVE, \"\"); err != nil {\n\t\treturn err\n\t}\n\treturn chroot()\n}\n\nfunc chroot() error {\n\tif err := unix.Chroot(\".\"); err != nil {\n\t\treturn &os.PathError{Op: \"chroot\", Path: \".\", Err: err}\n\t}\n\tif err := unix.Chdir(\"/\"); err != nil {\n\t\treturn &os.PathError{Op: \"chdir\", Path: \"/\", Err: err}\n\t}\n\treturn nil\n}\n\n// mountLdConfig mounts the host ldconfig to the mount namespace of the hook.\n// We use WithProcfd to perform the mount operations to ensure that the changes\n// are persisted across the pivot root.\nfunc mountLdConfig(hostLdconfigPath string, containerRoot *os.Root) (string, error) {\n\tcontainerRootDirPath := containerRoot.Name()\n\n\thostLdconfigInfo, err := os.Stat(hostLdconfigPath)\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"error reading host ldconfig: %w\", err)\n\t}\n\n\thookScratchDirPath := \"/run/nvidia-ctk-hook/\" + uuid.NewString()\n\tldconfigPath := filepath.Join(hookScratchDirPath, \"ldconfig\")\n\tif err := containerRoot.MkdirAll(hookScratchDirPath[1:], 0755); err != nil {\n\t\treturn \"\", fmt.Errorf(\"error creating hook scratch folder: %w\", err)\n\t}\n\n\t//nolint:staticcheck // TODO (ArangoGutierrez): Remove the nolint:staticcheck and properly fix the deprecation warning.\n\terr = utils.WithProcfd(containerRootDirPath, hookScratchDirPath, func(hookScratchDirFdPath string) error {\n\t\treturn createTmpFs(hookScratchDirFdPath, int(hostLdconfigInfo.Size()))\n\t})\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"error creating tmpfs: %w\", err)\n\t}\n\n\tif _, err := containerRoot.OpenFile(ldconfigPath[1:], os.O_CREATE|os.O_RDWR|os.O_TRUNC, hostLdconfigInfo.Mode()); err != nil {\n\t\treturn \"\", fmt.Errorf(\"error creating ldconfig: %w\", err)\n\t}\n\n\t//nolint:staticcheck // TODO (ArangoGutierrez): Remove the nolint:staticcheck and properly fix the deprecation warning.\n\terr = utils.WithProcfd(containerRootDirPath, ldconfigPath, func(ldconfigFdPath string) error {\n\t\treturn unix.Mount(hostLdconfigPath, ldconfigFdPath, \"\", unix.MS_BIND|unix.MS_RDONLY|unix.MS_NODEV|unix.MS_PRIVATE|unix.MS_NOSYMFOLLOW, \"\")\n\t})\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"error bind mounting host ldconfig: %w\", err)\n\t}\n\n\treturn ldconfigPath, nil\n}\n\n// mountProc mounts a clean proc filesystem in the new root.\nfunc mountProc(newroot *os.Root) error {\n\tif err := newroot.MkdirAll(\"proc\", 0755); err != nil {\n\t\treturn err\n\t}\n\n\ttarget := filepath.Join(newroot.Name(), \"proc\")\n\treturn unix.Mount(\"proc\", target, \"proc\", 0, \"\")\n}\n\n// createTmpFs creates a tmpfs at the specified location with the specified size.\nfunc createTmpFs(target string, size int) error {\n\treturn unix.Mount(\"tmpfs\", target, \"tmpfs\", 0, fmt.Sprintf(\"size=%d\", size))\n}\n\n// createReexecCommand creates a command that can be used to trigger the reexec\n// initializer.\n// On linux this command runs in new namespaces.\nfunc createReexecCommand(args []string) (*exec.Cmd, error) {\n\tcmd := reexec.Command(args...)\n\tcmd.Stdin = os.Stdin\n\tcmd.Stdout = os.Stdout\n\tcmd.Stderr = os.Stderr\n\n\tcmd.SysProcAttr = &syscall.SysProcAttr{\n\t\tCloneflags: syscall.CLONE_NEWNS |\n\t\t\tsyscall.CLONE_NEWUTS |\n\t\t\tsyscall.CLONE_NEWIPC |\n\t\t\tsyscall.CLONE_NEWPID |\n\t\t\tsyscall.CLONE_NEWNET,\n\t}\n\n\treturn cmd, nil\n}\n"
  },
  {
    "path": "internal/ldconfig/ldconfig_other.go",
    "content": "//go:build !linux\n\n/**\n# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage ldconfig\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"os/exec\"\n)\n\nfunc pivotRoot(newroot string) error {\n\treturn fmt.Errorf(\"not supported\")\n}\n\nfunc msMoveRoot(rootfs string) error {\n\treturn fmt.Errorf(\"not supported\")\n}\n\nfunc mountLdConfig(hostLdconfigPath string, containerRoot *os.Root) (string, error) {\n\treturn \"\", fmt.Errorf(\"not supported\")\n}\n\nfunc mountProc(newroot *os.Root) error {\n\treturn fmt.Errorf(\"not supported\")\n}\n\nfunc createReexecCommand(args []string) (*exec.Cmd, error) {\n\treturn nil, fmt.Errorf(\"not supported\")\n}\n"
  },
  {
    "path": "internal/ldconfig/ldconfig_test.go",
    "content": "/**\n# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage ldconfig\n\nimport (\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestFilterDirectories(t *testing.T) {\n\tconst topLevelConf = \"TOPLEVEL.conf\"\n\n\ttestCases := []struct {\n\t\tdescription string\n\t\tconfs       map[string]string // map[filename]content, must have topLevelConf key\n\t\tinput       []string\n\t\texpected    []string\n\t}{\n\t\t{\n\t\t\tdescription: \"all filtered\",\n\t\t\tconfs: map[string]string{\n\t\t\t\ttopLevelConf: `\n# some comment\n/tmp/libdir1\n/tmp/libdir2\n`,\n\t\t\t},\n\t\t\tinput:    []string{\"/tmp/libdir1\", \"/tmp/libdir2\"},\n\t\t\texpected: nil,\n\t\t},\n\t\t{\n\t\t\tdescription: \"partially filtered\",\n\t\t\tconfs: map[string]string{\n\t\t\t\ttopLevelConf: `\n/tmp/libdir1\n`,\n\t\t\t},\n\t\t\tinput:    []string{\"/tmp/libdir1\", \"/tmp/libdir2\"},\n\t\t\texpected: []string{\"/tmp/libdir2\"},\n\t\t},\n\t\t{\n\t\t\tdescription: \"none filtered\",\n\t\t\tconfs: map[string]string{\n\t\t\t\ttopLevelConf: `\n# empty config\n`,\n\t\t\t},\n\t\t\tinput:    []string{\"/tmp/libdir1\", \"/tmp/libdir2\"},\n\t\t\texpected: []string{\"/tmp/libdir1\", \"/tmp/libdir2\"},\n\t\t},\n\t\t{\n\t\t\tdescription: \"filter with include and comments\",\n\t\t\tconfs: map[string]string{\n\t\t\t\ttopLevelConf: `\n# comment\n/tmp/libdir1\ninclude /nonexistent/pattern*\n`,\n\t\t\t},\n\t\t\tinput:    []string{\"/tmp/libdir1\", \"/tmp/libdir2\"},\n\t\t\texpected: []string{\"/tmp/libdir2\"},\n\t\t},\n\t\t{\n\t\t\tdescription: \"include directive picks up more dirs to filter\",\n\t\t\tconfs: map[string]string{\n\t\t\t\ttopLevelConf: `\n# top-level\ninclude INCLUDED_PATTERN*\n/tmp/libdir3\n`,\n\t\t\t\t\"INCLUDED_PATTERN0.conf\": `\n/tmp/libdir2\n# another comment\n/tmp/libdir4\n`,\n\t\t\t\t\"INCLUDED_PATTERN1.conf\": `\n/tmp/libdir1\n`,\n\t\t\t},\n\t\t\tinput:    []string{\"/tmp/libdir1\", \"/tmp/libdir2\", \"/tmp/libdir3\", \"/tmp/libdir4\", \"/tmp/libdir5\"},\n\t\t\texpected: []string{\"/tmp/libdir5\"},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\ttmpDir := t.TempDir()\n\n\t\t\t// Prepare file contents, adjusting include globs to be absolute and unique within tmpDir\n\t\t\tfor name, content := range tc.confs {\n\t\t\t\tif name == topLevelConf && len(tc.confs) > 1 {\n\t\t\t\t\tcontent = strings.ReplaceAll(content, \"include INCLUDED_PATTERN*\", \"include \"+tmpDir+\"/INCLUDED_PATTERN*\")\n\t\t\t\t}\n\t\t\t\terr := os.WriteFile(tmpDir+\"/\"+name, []byte(content), 0600)\n\t\t\t\trequire.NoError(t, err)\n\t\t\t}\n\n\t\t\ttopLevelConfPath := tmpDir + \"/\" + topLevelConf\n\t\t\tl := &Ldconfig{\n\t\t\t\tisDebianLikeContainer: true,\n\t\t\t}\n\t\t\tfiltered, err := l.filterDirectories(topLevelConfPath, tc.input...)\n\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.Equal(t, tc.expected, filtered)\n\t\t})\n\t}\n}\n\nfunc TestCreateLdsoconfdFile(t *testing.T) {\n\ttestCases := []struct {\n\t\tdescription     string\n\t\tpattern         string\n\t\tdirs            []string\n\t\texpectedContent []string\n\t}{\n\t\t{\n\t\t\tdescription:     \"empty directories\",\n\t\t\tpattern:         \"test-*.conf\",\n\t\t\tdirs:            []string{},\n\t\t\texpectedContent: nil,\n\t\t},\n\t\t{\n\t\t\tdescription: \"single directory\",\n\t\t\tpattern:     \"test-*.conf\",\n\t\t\tdirs:        []string{\"/usr/local/lib\"},\n\t\t\texpectedContent: []string{\n\t\t\t\t\"/usr/local/lib\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"multiple directories\",\n\t\t\tpattern:     \"test-*.conf\",\n\t\t\tdirs:        []string{\"/usr/local/lib\", \"/opt/lib\", \"/usr/lib64\"},\n\t\t\texpectedContent: []string{\n\t\t\t\t\"/usr/local/lib\",\n\t\t\t\t\"/opt/lib\",\n\t\t\t\t\"/usr/lib64\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"duplicate directories\",\n\t\t\tpattern:     \"test-*.conf\",\n\t\t\tdirs:        []string{\"/usr/local/lib\", \"/opt/lib\", \"/usr/local/lib\"},\n\t\t\texpectedContent: []string{\n\t\t\t\t\"/usr/local/lib\",\n\t\t\t\t\"/opt/lib\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\ttmpDir := t.TempDir()\n\n\t\t\terr := createLdsoconfdFile(tmpDir, tc.pattern, tc.dirs...)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tif len(tc.expectedContent) == 0 {\n\t\t\t\tentries, err := os.ReadDir(tmpDir)\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\trequire.Empty(t, entries)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tentries, err := os.ReadDir(tmpDir)\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.Len(t, entries, 1)\n\t\t\tcreatedFile := filepath.Join(tmpDir, entries[0].Name())\n\n\t\t\tinfo, err := os.Stat(createdFile)\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.Equal(t, os.FileMode(0644), info.Mode().Perm())\n\n\t\t\tcontent, err := os.ReadFile(createdFile)\n\t\t\trequire.NoError(t, err)\n\t\t\tlines := strings.Split(strings.TrimSpace(string(content)), \"\\n\")\n\t\t\trequire.Equal(t, tc.expectedContent, lines)\n\t\t})\n\t}\n}\n\nfunc TestEnsureLdsoconfFile(t *testing.T) {\n\ttestCases := []struct {\n\t\tdescription     string\n\t\texistingContent string\n\t\tldsoconfdDir    string\n\t\texpectCreation  bool\n\t\texpectedContent string\n\t}{\n\t\t{\n\t\t\tdescription:     \"creates file when none exists\",\n\t\t\texistingContent: \"\",\n\t\t\tldsoconfdDir:    \"/custom/ld.so.conf.d\",\n\t\t\texpectCreation:  true,\n\t\t\texpectedContent: \"include /custom/ld.so.conf.d/*.conf\\n\",\n\t\t},\n\t\t{\n\t\t\tdescription:     \"does not modify existing file\",\n\t\t\texistingContent: \"# custom config\\n/usr/local/lib\\n\",\n\t\t\tldsoconfdDir:    \"/etc/ld.so.conf.d\",\n\t\t\texpectCreation:  false,\n\t\t\texpectedContent: \"# custom config\\n/usr/local/lib\\n\",\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\ttmpDir := t.TempDir()\n\t\t\tconfFilePath := filepath.Join(tmpDir, \"ld.so.conf\")\n\n\t\t\tif tc.existingContent != \"\" {\n\t\t\t\terr := os.WriteFile(confFilePath, []byte(tc.existingContent), 0644) //nolint:gosec\n\t\t\t\trequire.NoError(t, err)\n\t\t\t}\n\n\t\t\terr := ensureLdsoconfFile(confFilePath, tc.ldsoconfdDir)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tinfo, err := os.Stat(confFilePath)\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.Equal(t, os.FileMode(0644), info.Mode().Perm())\n\n\t\t\tcontent, err := os.ReadFile(confFilePath)\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.Equal(t, tc.expectedContent, string(content))\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/ldconfig/safe-exec_linux.go",
    "content": "//go:build linux\n\n/**\n# Copyright (c) 2025, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage ldconfig\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"strconv\"\n\t\"syscall\"\n\n\t\"github.com/opencontainers/runc/libcontainer/exeseal\"\n)\n\n// SafeExec attempts to clone the specified binary (as an memfd, for example) before executing it.\nfunc SafeExec(path string, args []string, envv []string) error {\n\tsafeExe, err := cloneBinary(path)\n\tif err != nil {\n\t\t//nolint:gosec // TODO: Can we harden this so that there is less risk of command injection\n\t\treturn syscall.Exec(path, args, envv)\n\t}\n\tdefer safeExe.Close()\n\n\texePath := \"/proc/self/fd/\" + strconv.Itoa(int(safeExe.Fd()))\n\t//nolint:gosec // TODO: Can we harden this so that there is less risk of command injection\n\treturn syscall.Exec(exePath, args, envv)\n}\n\nfunc cloneBinary(path string) (*os.File, error) {\n\texe, err := os.Open(path)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"opening current binary: %w\", err)\n\t}\n\tdefer exe.Close()\n\n\tstat, err := exe.Stat()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"checking %v size: %w\", path, err)\n\t}\n\tsize := stat.Size()\n\n\treturn exeseal.CloneBinary(exe, size, path, os.TempDir())\n}\n"
  },
  {
    "path": "internal/ldconfig/safe-exec_other.go",
    "content": "//go:build !linux\n\n/**\n# Copyright (c) 2025, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage ldconfig\n\nimport \"syscall\"\n\n// SafeExec is not implemented on non-linux systems and forwards directly to the\n// Exec syscall.\nfunc SafeExec(path string, args []string, envv []string) error {\n\t//nolint:gosec // TODO: Can we harden this so that there is less risk of command injection\n\treturn syscall.Exec(path, args, envv)\n}\n"
  },
  {
    "path": "internal/logger/api.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage logger\n\n// Interface defines the API for the logger package\ntype Interface interface {\n\tDebugf(string, ...interface{})\n\tErrorf(string, ...interface{})\n\tInfof(string, ...interface{})\n\tWarningf(string, ...interface{})\n\tTracef(string, ...interface{})\n}\n"
  },
  {
    "path": "internal/logger/lib.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage logger\n\nimport \"github.com/sirupsen/logrus\"\n\n// New returns a new logger\nfunc New() Interface {\n\treturn logrus.StandardLogger()\n}\n\n// NullLogger is a logger that does nothing\ntype NullLogger struct{}\n\nvar _ Interface = (*NullLogger)(nil)\n\n// Debugf is a no-op for the null logger\nfunc (l *NullLogger) Debugf(string, ...interface{}) {}\n\n// Errorf is a no-op for the null logger\nfunc (l *NullLogger) Errorf(string, ...interface{}) {}\n\n// Infof is a no-op for the null logger\nfunc (l *NullLogger) Infof(string, ...interface{}) {}\n\n// Warningf is a no-op for the null logger\nfunc (l *NullLogger) Warningf(string, ...interface{}) {}\n\n// Tracef is a no-op for the null logger\nfunc (l *NullLogger) Tracef(string, ...interface{}) {}\n"
  },
  {
    "path": "internal/lookup/root/cuda_test.go",
    "content": "/**\n# Copyright 2023 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage root\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"testing\"\n\n\ttestlog \"github.com/sirupsen/logrus/hooks/test\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/lookup\"\n)\n\nfunc TestLocate(t *testing.T) {\n\tlogger, _ := testlog.NewNullLogger()\n\n\ttestCases := []struct {\n\t\tdescription   string\n\t\tlibcudaPath   string\n\t\texpected      string\n\t\texpectedError error\n\t}{\n\t\t{\n\t\t\tdescription:   \"no libcuda does not resolve library\",\n\t\t\tlibcudaPath:   \"\",\n\t\t\texpected:      \"\",\n\t\t\texpectedError: lookup.ErrNotFound,\n\t\t},\n\t\t{\n\t\t\tdescription:   \"no-ldcache searches /usr/lib64\",\n\t\t\tlibcudaPath:   \"/usr/lib64/libcuda.so.123.34\",\n\t\t\texpected:      \"/usr/lib64\",\n\t\t\texpectedError: nil,\n\t\t},\n\t\t{\n\t\t\tdescription:   \"no-ldcache searches /usr/lib64 for libnvidia-ml.so.\",\n\t\t\tlibcudaPath:   \"/usr/lib64/libnvidia-ml.so.123.34\",\n\t\t\texpected:      \"/usr/lib64\",\n\t\t\texpectedError: nil,\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\tdriverRoot, err := setupDriverRoot(t, tc.libcudaPath)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tl := New(\n\t\t\t\tWithLogger(logger),\n\t\t\t\tWithDriverRoot(driverRoot),\n\t\t\t)\n\n\t\t\tdriverLibraryPath, err := l.GetDriverLibDirectory()\n\t\t\trequire.ErrorIs(t, err, tc.expectedError)\n\n\t\t\t// NOTE: We need to strip `/private` on MacOs due to symlink resolution\n\t\t\tstripped := strings.TrimPrefix(driverLibraryPath, \"/private\")\n\n\t\t\trequire.Equal(t, tc.expected, stripped)\n\t\t})\n\t}\n}\n\n// setupDriverRoot creates a folder that can be used to represent a driver root.\n// The path to libcuda can be specified and an empty file is created at this location in the driver root.\nfunc setupDriverRoot(t *testing.T, libCudaPath string) (string, error) {\n\tdriverRoot := t.TempDir()\n\n\tif libCudaPath == \"\" {\n\t\treturn driverRoot, nil\n\t}\n\n\tif err := os.MkdirAll(filepath.Join(driverRoot, filepath.Dir(libCudaPath)), 0755); err != nil {\n\t\treturn \"\", fmt.Errorf(\"falied to create required driver root folder: %w\", err)\n\t}\n\n\tlibCuda, err := os.Create(filepath.Join(driverRoot, libCudaPath))\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"failed to create dummy libcuda.so: %w\", err)\n\t}\n\tdefer libCuda.Close()\n\n\treturn filepath.EvalSymlinks(driverRoot)\n}\n"
  },
  {
    "path": "internal/lookup/root/options.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage root\n\nimport \"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\ntype options struct {\n\tlogger logger.Interface\n\t// Root represents the root from the perspective of the driver libraries and binaries.\n\tRoot string\n\t// DevRoot represents the root for device nodes for the driver.\n\tDevRoot string\n\t// librarySearchPaths specifies explicit search paths for discovering libraries.\n\tlibrarySearchPaths []string\n\t// configSearchPaths specified explicit search paths for discovering driver config files.\n\tconfigSearchPaths []string\n\tversioner         Versioner\n}\n\ntype Option func(*options)\n\nfunc WithLogger(logger logger.Interface) Option {\n\treturn func(o *options) {\n\t\to.logger = logger\n\t}\n}\n\nfunc WithDevRoot(devRoot string) Option {\n\treturn func(o *options) {\n\t\to.DevRoot = devRoot\n\t}\n}\n\nfunc WithDriverRoot(root string) Option {\n\treturn func(o *options) {\n\t\to.Root = root\n\t}\n}\n\nfunc WithLibrarySearchPaths(paths ...string) Option {\n\treturn func(o *options) {\n\t\to.librarySearchPaths = paths\n\t}\n}\n\nfunc WithConfigSearchPaths(paths ...string) Option {\n\treturn func(o *options) {\n\t\to.configSearchPaths = paths\n\t}\n}\n\nfunc WithVersioner(versioner Versioner) Option {\n\treturn func(o *options) {\n\t\to.versioner = versioner\n\t}\n}\n"
  },
  {
    "path": "internal/lookup/root/root.go",
    "content": "/**\n# Copyright 2023 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage root\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/lookup\"\n)\n\n// Driver represents a filesystem in which a set of drivers or devices is defined.\ntype Driver struct {\n\tsync.Mutex\n\tlogger logger.Interface\n\t// Root represents the root from the perspective of the driver libraries and binaries.\n\tRoot string\n\t// DevRoot represents the root for device nodes for the driver.\n\tDevRoot string\n\t// librarySearchPaths specifies explicit search paths for discovering libraries.\n\tlibrarySearchPaths []string\n\t// configSearchPaths specified explicit search paths for discovering driver config files.\n\tconfigSearchPaths []string\n\n\t// version caches the driver version.\n\tversion string\n\t// driverLibDirectory caches the path to parent of the driver libraries\n\tdriverLibDirectory string\n}\n\n// New creates a new Driver root using the specified options.\nfunc New(opts ...Option) *Driver {\n\to := &options{}\n\tfor _, opt := range opts {\n\t\topt(o)\n\t}\n\tif o.logger == nil {\n\t\to.logger = logger.New()\n\t}\n\tif o.DevRoot == \"\" {\n\t\to.DevRoot = o.Root\n\t}\n\n\tvar driverVersion string\n\tif o.versioner != nil {\n\t\tversion, err := o.versioner.Version()\n\t\tif err != nil {\n\t\t\to.logger.Warningf(\"Could not determine driver version: %v\", err)\n\t\t}\n\t\tdriverVersion = version\n\t}\n\n\td := &Driver{\n\t\tlogger:             o.logger,\n\t\tRoot:               o.Root,\n\t\tDevRoot:            o.DevRoot,\n\t\tlibrarySearchPaths: o.librarySearchPaths,\n\t\tconfigSearchPaths:  o.configSearchPaths,\n\t\tversion:            driverVersion,\n\t\tdriverLibDirectory: \"\",\n\t}\n\n\treturn d\n}\n\n// Version returns the cached driver version if possible.\n// If this has not yet been initialised, the version is first updated and then returned.\nfunc (r *Driver) Version() (string, error) {\n\tr.Lock()\n\tdefer r.Unlock()\n\n\tif r.version == \"\" {\n\t\tif err := r.updateInfo(); err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t}\n\n\treturn r.version, nil\n}\n\n// GetDriverLibDirectory returns the cached directory where the driver libs are\n// found if possible.\n// If this has not yet been initialized, the path is first detected and then returned.\nfunc (r *Driver) GetDriverLibDirectory() (string, error) {\n\tr.Lock()\n\tdefer r.Unlock()\n\n\tif r.driverLibDirectory == \"\" {\n\t\tif err := r.updateInfo(); err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t}\n\n\treturn r.driverLibDirectory, nil\n}\n\nfunc (r *Driver) DriverLibraryLocator(additionalDirs ...string) (lookup.Locator, error) {\n\tlibcudasoParentDirPath, err := r.GetDriverLibDirectory()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to get libcuda.so parent directory: %w\", err)\n\t}\n\n\tsearchPaths := []string{libcudasoParentDirPath}\n\tfor _, dir := range additionalDirs {\n\t\tif strings.HasPrefix(dir, \"/\") {\n\t\t\tsearchPaths = append(searchPaths, dir)\n\t\t} else {\n\t\t\tsearchPaths = append(searchPaths, filepath.Join(libcudasoParentDirPath, dir))\n\t\t}\n\t}\n\n\tl := lookup.AsOptional(\n\t\tlookup.NewSymlinkLocator(\n\t\t\tlookup.WithRoot(r.Root),\n\t\t\tlookup.WithLogger(r.logger),\n\t\t\tlookup.WithSearchPaths(\n\t\t\t\tsearchPaths...,\n\t\t\t),\n\t\t),\n\t)\n\treturn l, nil\n}\n\nfunc (r *Driver) updateInfo() error {\n\tdriverLibPath, version, err := r.inferVersion()\n\tif err != nil {\n\t\treturn err\n\t}\n\tif r.version != \"\" && r.version != version {\n\t\treturn fmt.Errorf(\"unexpected version detected: %v != %v\", r.version, version)\n\t}\n\n\tr.version = version\n\tr.driverLibDirectory = r.RelativeToRoot(filepath.Dir(driverLibPath))\n\n\treturn nil\n}\n\n// inferVersion attempts to infer the driver version from the libcuda.so or\n// libnvidia-ml.so driver library suffixes.\nfunc (r *Driver) inferVersion() (string, string, error) {\n\tversionSuffix := r.version\n\tif versionSuffix == \"\" {\n\t\tversionSuffix = \"*.*\"\n\t}\n\n\tvar errs error\n\tfor _, driverLib := range []string{\"libcuda.so.\", \"libnvidia-ml.so.\"} {\n\t\tdriverLibPaths, err := r.Libraries().Locate(driverLib + versionSuffix)\n\t\tif err != nil {\n\t\t\terrs = errors.Join(errs, fmt.Errorf(\"failed to locate libcuda.so: %w\", err))\n\t\t\tcontinue\n\t\t}\n\t\tdriverLibPath := driverLibPaths[0]\n\t\tversion := strings.TrimPrefix(filepath.Base(driverLibPath), driverLib)\n\t\tif version == \"\" {\n\t\t\terrs = errors.Join(errs, fmt.Errorf(\"failed to extract version from path %v\", driverLibPath))\n\t\t\tcontinue\n\t\t}\n\t\treturn driverLibPath, version, nil\n\t}\n\n\treturn \"\", \"\", errs\n}\n\n// RelativeToRoot returns the specified path relative to the driver root.\nfunc (r *Driver) RelativeToRoot(path string) string {\n\tif r.Root == \"\" || r.Root == \"/\" {\n\t\treturn path\n\t}\n\tif !filepath.IsAbs(path) {\n\t\treturn path\n\t}\n\n\treturn strings.TrimPrefix(path, r.Root)\n}\n\n// Files returns a Locator for arbitrary driver files.\nfunc (r *Driver) Files(opts ...lookup.Option) lookup.Locator {\n\treturn lookup.NewFileLocator(\n\t\tappend(opts,\n\t\t\tlookup.WithLogger(r.logger),\n\t\t\tlookup.WithRoot(r.Root),\n\t\t)...,\n\t)\n}\n\n// Libraries returns a Locator for driver libraries.\nfunc (r *Driver) Libraries() lookup.Locator {\n\treturn lookup.NewLibraryLocator(\n\t\tlookup.WithLogger(r.logger),\n\t\tlookup.WithRoot(r.Root),\n\t\tlookup.WithSearchPaths(r.librarySearchPaths...),\n\t)\n}\n\n// Configs returns a locator for driver configs.\n// If configSearchPaths is specified, these paths are used as absolute paths,\n// otherwise, /etc and /usr/share are searched.\nfunc (r *Driver) Configs() lookup.Locator {\n\treturn lookup.NewFileLocator(r.configSearchOptions()...)\n}\n\nfunc (r *Driver) configSearchOptions() []lookup.Option {\n\tif len(r.configSearchPaths) > 0 {\n\t\treturn []lookup.Option{\n\t\t\tlookup.WithLogger(r.logger),\n\t\t\tlookup.WithRoot(\"/\"),\n\t\t\tlookup.WithSearchPaths(r.configSearchPaths...),\n\t\t}\n\t}\n\tsearchPaths := []string{\"/etc\"}\n\tsearchPaths = append(searchPaths, xdgDataDirs()...)\n\treturn []lookup.Option{\n\t\tlookup.WithLogger(r.logger),\n\t\tlookup.WithRoot(r.Root),\n\t\tlookup.WithSearchPaths(searchPaths...),\n\t}\n}\n\n// xdgDataDirs finds the paths as specified in the environment variable XDG_DATA_DIRS.\n// See https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html.\nfunc xdgDataDirs() []string {\n\tif dirs, exists := os.LookupEnv(\"XDG_DATA_DIRS\"); exists && dirs != \"\" {\n\t\treturn lookup.NormalizePaths(dirs)\n\t}\n\n\treturn []string{\"/usr/local/share\", \"/usr/share\"}\n}\n"
  },
  {
    "path": "internal/lookup/root/root_test.go",
    "content": "/**\n# Copyright 2023 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage root\n\nimport (\n\t\"path/filepath\"\n\t\"testing\"\n\n\ttestlog \"github.com/sirupsen/logrus/hooks/test\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/test\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/lookup\"\n)\n\nfunc TestDriverLibrariesLocate(t *testing.T) {\n\tlogger, _ := testlog.NewNullLogger()\n\n\tmoduleRoot, err := test.GetModuleRoot()\n\trequire.NoError(t, err)\n\n\ttestCases := []struct {\n\t\trootFs        string\n\t\tinputs        []string\n\t\texpected      string\n\t\texpectedError error\n\t}{\n\t\t{\n\t\t\trootFs:        \"rootfs-empty\",\n\t\t\tinputs:        []string{\"libcuda.so.1\", \"libcuda.so.*\", \"libcuda.so.*.*\", \"libcuda.so.999.88.77\"},\n\t\t\texpectedError: lookup.ErrNotFound,\n\t\t},\n\t\t{\n\t\t\trootFs:   \"rootfs-no-cache-lib64\",\n\t\t\tinputs:   []string{\"libcuda.so.1\", \"libcuda.so.*\", \"libcuda.so.*.*\", \"libcuda.so.999.88.77\"},\n\t\t\texpected: \"/usr/lib64/libcuda.so.999.88.77\",\n\t\t},\n\t\t{\n\t\t\trootFs:   \"rootfs-1\",\n\t\t\tinputs:   []string{\"libcuda.so.1\", \"libcuda.so.*\", \"libcuda.so.*.*\", \"libcuda.so.999.88.77\"},\n\t\t\texpected: \"/lib/x86_64-linux-gnu/libcuda.so.999.88.77\",\n\t\t},\n\t\t{\n\t\t\trootFs:   \"rootfs-2\",\n\t\t\tinputs:   []string{\"libcuda.so.1\", \"libcuda.so.*\", \"libcuda.so.*.*\", \"libcuda.so.999.88.77\"},\n\t\t\texpected: \"/var/lib/nvidia/lib64/libcuda.so.999.88.77\",\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tfor _, input := range tc.inputs {\n\t\t\tt.Run(tc.rootFs+input, func(t *testing.T) {\n\t\t\t\trootfs := filepath.Join(moduleRoot, \"testdata\", \"lookup\", tc.rootFs)\n\t\t\t\tdriver := New(\n\t\t\t\t\tWithLogger(logger),\n\t\t\t\t\tWithDriverRoot(rootfs),\n\t\t\t\t)\n\n\t\t\t\tcandidates, err := driver.Libraries().Locate(input)\n\t\t\t\trequire.ErrorIs(t, err, tc.expectedError)\n\t\t\t\tif tc.expectedError == nil {\n\t\t\t\t\trequire.Equal(t, []string{filepath.Join(rootfs, tc.expected)}, candidates)\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "internal/lookup/root/version.go",
    "content": "/**\n# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage root\n\nimport \"errors\"\n\ntype Versioner interface {\n\tVersion() (string, error)\n}\n\nfunc FirstOf(v ...Versioner) Versioner {\n\treturn firstVersion(v)\n}\n\ntype firstVersion []Versioner\n\nvar _ Versioner = (firstVersion)(nil)\n\nfunc (f firstVersion) Version() (string, error) {\n\tvar errs error\n\tfor _, v := range f {\n\t\tif v == nil {\n\t\t\tcontinue\n\t\t}\n\t\tversion, err := v.Version()\n\t\tif err == nil {\n\t\t\treturn version, nil\n\t\t}\n\n\t\terrs = errors.Join(errs, err)\n\t}\n\n\treturn \"\", errs\n}\n"
  },
  {
    "path": "internal/modifier/cdi/builder.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage cdi\n\nimport (\n\t\"fmt\"\n\n\t\"tags.cncf.io/container-device-interface/pkg/cdi\"\n\t\"tags.cncf.io/container-device-interface/specs-go\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/oci\"\n)\n\ntype builder struct {\n\tlogger   logger.Interface\n\tspecDirs []string\n\tdevices  []string\n\tcdiSpec  *specs.Spec\n}\n\n// Option represents a functional option for creating a CDI mofifier.\ntype Option func(*builder)\n\n// New creates a new CDI modifier.\nfunc New(opts ...Option) (oci.SpecModifier, error) {\n\tb := &builder{}\n\tfor _, opt := range opts {\n\t\topt(b)\n\t}\n\tif b.logger == nil {\n\t\tb.logger = logger.New()\n\t}\n\treturn b.build()\n}\n\n// build uses the applied options and constructs a CDI modifier using the builder.\nfunc (m builder) build() (oci.SpecModifier, error) {\n\tif len(m.devices) == 0 && m.cdiSpec == nil {\n\t\treturn nil, nil\n\t}\n\n\tif m.cdiSpec != nil {\n\t\tmodifier := fromCDISpec{\n\t\t\tcdiSpec: &cdi.Spec{Spec: m.cdiSpec},\n\t\t}\n\t\treturn modifier, nil\n\t}\n\n\tregistry, err := cdi.NewCache(\n\t\tcdi.WithAutoRefresh(false),\n\t\tcdi.WithSpecDirs(m.specDirs...),\n\t)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to create CDI registry: %v\", err)\n\t}\n\n\tmodifier := fromRegistry{\n\t\tlogger:   m.logger,\n\t\tregistry: registry,\n\t\tdevices:  m.devices,\n\t}\n\n\treturn modifier, nil\n}\n\n// WithLogger sets the logger for the CDI modifier builder.\nfunc WithLogger(logger logger.Interface) Option {\n\treturn func(b *builder) {\n\t\tb.logger = logger\n\t}\n}\n\n// WithSpecDirs sets the spec directories for the CDI modifier builder.\nfunc WithSpecDirs(specDirs ...string) Option {\n\treturn func(b *builder) {\n\t\tb.specDirs = specDirs\n\t}\n}\n\n// WithDevices sets the devices for the CDI modifier builder.\nfunc WithDevices(devices ...string) Option {\n\treturn func(b *builder) {\n\t\tb.devices = devices\n\t}\n}\n\n// WithSpec sets the spec for the CDI modifier builder.\nfunc WithSpec(spec *specs.Spec) Option {\n\treturn func(b *builder) {\n\t\tb.cdiSpec = spec\n\t}\n}\n"
  },
  {
    "path": "internal/modifier/cdi/registry.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage cdi\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\n\t\"github.com/opencontainers/runtime-spec/specs-go\"\n\t\"tags.cncf.io/container-device-interface/pkg/cdi\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/oci\"\n)\n\n// fromRegistry represents the modifications performed using a CDI registry.\ntype fromRegistry struct {\n\tlogger   logger.Interface\n\tregistry *cdi.Cache\n\tdevices  []string\n}\n\nvar _ oci.SpecModifier = (*fromRegistry)(nil)\n\n// Modify applies the modifications defined by the CDI registry to the incoming OCI spec.\nfunc (m fromRegistry) Modify(spec *specs.Spec) error {\n\tif err := m.registry.Refresh(); err != nil {\n\t\tm.logger.Debugf(\"The following error was triggered when refreshing the CDI registry: %v\", err)\n\t}\n\n\tm.logger.Debugf(\"Injecting devices using CDI: %v\", m.devices)\n\tunresolvedDevices, err := m.registry.InjectDevices(spec, m.devices...)\n\tif unresolvedDevices != nil {\n\t\tm.logger.Warningf(\"could not resolve CDI devices: %v\", unresolvedDevices)\n\t}\n\tif err != nil {\n\t\tvar refreshErrors []error\n\t\tfor _, rerrs := range m.registry.GetErrors() {\n\t\t\trefreshErrors = append(refreshErrors, rerrs...)\n\t\t}\n\t\tif rerr := errors.Join(refreshErrors...); rerr != nil {\n\t\t\t// We log the errors that may have been generated while refreshing the CDI registry.\n\t\t\t// These may be due to malformed specifications or device name conflicts that could be\n\t\t\t// the cause of an injection failure.\n\t\t\tm.logger.Warningf(\"Refreshing the CDI registry generated errors: %v\", rerr)\n\t\t}\n\n\t\treturn fmt.Errorf(\"failed to inject CDI devices: %v\", err)\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "internal/modifier/cdi/spec.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage cdi\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/opencontainers/runtime-spec/specs-go\"\n\tcdiapi \"tags.cncf.io/container-device-interface/pkg/cdi\"\n\tcdi \"tags.cncf.io/container-device-interface/specs-go\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/devices\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/oci\"\n)\n\n// fromCDISpec represents the modifications performed from a raw CDI spec.\ntype fromCDISpec struct {\n\tcdiSpec *cdiapi.Spec\n}\n\nvar _ oci.SpecModifier = (*fromCDISpec)(nil)\n\n// Modify applies the mofiications defined by the raw CDI spec to the incomming OCI spec.\nfunc (m fromCDISpec) Modify(spec *specs.Spec) error {\n\tfor _, device := range m.cdiSpec.Devices {\n\t\tdevice := m.enrichDevice(device)\n\t\tcdiDevice := cdiapi.Device{\n\t\t\tDevice: &device,\n\t\t}\n\t\tif err := cdiDevice.ApplyEdits(spec); err != nil {\n\t\t\treturn fmt.Errorf(\"failed to apply edits for device %q: %v\", m.cdiSpec.Kind+\"=\"+device.Name, err)\n\t\t}\n\t}\n\n\treturn m.cdiSpec.ApplyEdits(spec)\n}\n\nfunc (m fromCDISpec) enrichDevice(device cdi.Device) cdi.Device {\n\tif !devices.IsOverrideApplied() {\n\t\treturn device\n\t}\n\t// For testing we need to override the device node information to ensure\n\t// that we don't trigger the CDI modification that requires the device node\n\t// to exist and be a character device.\n\t// The following condition is used to determine whether a failure to get\n\t// the info is fatal:\n\t// hasMinimalSpecification := d.Type != \"\" && (d.Major != 0 || d.Type == fifoDevice)\n\tfor i, dn := range device.ContainerEdits.DeviceNodes {\n\t\tdn.Type = \"c\"\n\t\tif dn.Major == 0 {\n\t\t\tdn.Major = 99\n\t\t}\n\t\tdevice.ContainerEdits.DeviceNodes[i] = dn\n\t}\n\treturn device\n}\n"
  },
  {
    "path": "internal/modifier/cdi.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage modifier\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\t\"tags.cncf.io/container-device-interface/pkg/parser\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/config/image\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/modifier/cdi\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/oci\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/platform-support/tegra/csv\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/nvcdi\"\n)\n\nconst (\n\tautomaticDeviceVendor = \"runtime.nvidia.com\"\n\tautomaticDeviceClass  = \"gpu\"\n\tautomaticDeviceKind   = automaticDeviceVendor + \"/\" + automaticDeviceClass\n\tautomaticDevicePrefix = automaticDeviceKind + \"=\"\n)\n\n// newCDIModifier creates an OCI spec modifier that determines the modifications to make based on the\n// CDI specifications available on the system. The NVIDIA_VISIBLE_DEVICES environment variable is\n// used to select the devices to include.\nfunc (f *Factory) newCDIModifier(isJitCDI bool) (oci.SpecModifier, error) {\n\tdefaultKind := f.cfg.NVIDIAContainerRuntimeConfig.Modes.CDI.DefaultKind\n\tif isJitCDI {\n\t\tdefaultKind = automaticDeviceKind\n\t}\n\tdeviceRequestor := newCDIDeviceRequestor(\n\t\tf.logger,\n\t\tf.image,\n\t\tdefaultKind,\n\t)\n\tdevices := deviceRequestor.DeviceRequests()\n\tif len(devices) == 0 {\n\t\tf.logger.Debugf(\"No devices requested; no modification required.\")\n\t\treturn nil, nil\n\t}\n\n\tautomaticDevices := filterAutomaticDevices(devices)\n\tif len(automaticDevices) != len(devices) && len(automaticDevices) > 0 {\n\t\treturn nil, fmt.Errorf(\"requesting a CDI device with vendor 'runtime.nvidia.com' is not supported when requesting other CDI devices\")\n\t}\n\tif len(automaticDevices) > 0 {\n\t\tf.logger.Debugf(\"Using automatic CDI modfier for devices %v\", automaticDevices)\n\t\tmodifier, err := f.newJitCDIModifier(automaticDevices)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed to create the automatic CDI modifier: %w\", err)\n\t\t}\n\t\treturn modifier, nil\n\t}\n\n\tf.logger.Debugf(\"Creating CDI modifier for devices: %v\", devices)\n\treturn cdi.New(\n\t\tcdi.WithLogger(f.logger),\n\t\tcdi.WithDevices(devices...),\n\t\tcdi.WithSpecDirs(f.cfg.NVIDIAContainerRuntimeConfig.Modes.CDI.SpecDirs...),\n\t)\n}\n\n// newJitCDIModifier creates a modifier that for a generated in-memory CDI spec for the specified CDI devices.\nfunc (f *Factory) newJitCDIModifier(automaticDevices []string) (oci.SpecModifier, error) {\n\tif f.image != nil {\n\t\tautomaticDevices = append(automaticDevices, withUniqueDevices(gatedDevices(*f.image)).DeviceRequests()...)\n\t\tautomaticDevices = append(automaticDevices, withUniqueDevices(imexDevices(*f.image)).DeviceRequests()...)\n\t}\n\treturn f.newAutomaticCDISpecModifier(automaticDevices)\n}\n\ntype deviceRequestor interface {\n\tDeviceRequests() []string\n}\n\ntype cdiDeviceRequestor struct {\n\tlogger      logger.Interface\n\timage       *image.CUDA\n\tdefaultKind string\n}\n\nfunc newCDIDeviceRequestor(logger logger.Interface, image *image.CUDA, defaultKind string) deviceRequestor {\n\tc := &cdiDeviceRequestor{\n\t\tlogger:      logger,\n\t\timage:       image,\n\t\tdefaultKind: defaultKind,\n\t}\n\treturn withUniqueDevices(c)\n}\n\nfunc (c *cdiDeviceRequestor) DeviceRequests() []string {\n\tif c == nil {\n\t\treturn nil\n\t}\n\tvar devices []string\n\tfor _, name := range c.image.VisibleDevices() {\n\t\tif name == \"\" {\n\t\t\tname = \"none\"\n\t\t}\n\t\tif !parser.IsQualifiedName(name) {\n\t\t\tname = fmt.Sprintf(\"%s=%s\", c.defaultKind, name)\n\t\t}\n\t\tdevices = append(devices, name)\n\t}\n\n\treturn devices\n}\n\ntype gatedDevices image.CUDA\n\n// DeviceRequests returns a list of devices that are required for gated devices.\nfunc (g gatedDevices) DeviceRequests() []string {\n\ti := (image.CUDA)(g)\n\n\tvar devices []string\n\tif i.Getenv(\"NVIDIA_GDS\") == \"enabled\" {\n\t\tdevices = append(devices, \"mode=gds\")\n\t}\n\tif i.Getenv(\"NVIDIA_MOFED\") == \"enabled\" {\n\t\tdevices = append(devices, \"mode=mofed\")\n\t}\n\tif i.Getenv(\"NVIDIA_GDRCOPY\") == \"enabled\" {\n\t\tdevices = append(devices, \"mode=gdrcopy\")\n\t}\n\tif i.Getenv(\"NVIDIA_NVSWITCH\") == \"enabled\" {\n\t\tdevices = append(devices, \"mode=nvswitch\")\n\t}\n\n\treturn devices\n}\n\ntype imexDevices image.CUDA\n\nfunc (d imexDevices) DeviceRequests() []string {\n\tvar devices []string\n\ti := (image.CUDA)(d)\n\tfor _, channelID := range i.ImexChannelRequests() {\n\t\tdevices = append(devices, \"mode=imex,id=\"+channelID)\n\t}\n\treturn devices\n}\n\n// filterAutomaticDevices searches for \"automatic\" device names in the input slice.\n// \"Automatic\" devices are a well-defined list of CDI device names which, when requested,\n// trigger the generation of a CDI spec at runtime. This removes the need to generate a\n// CDI spec on the system a-priori as well as keep it up-to-date.\nfunc filterAutomaticDevices(devices []string) []string {\n\tvar automatic []string\n\tfor _, device := range devices {\n\t\tif !strings.HasPrefix(device, automaticDevicePrefix) {\n\t\t\tcontinue\n\t\t}\n\t\tautomatic = append(automatic, device)\n\t}\n\treturn automatic\n}\n\nfunc (f *Factory) newAutomaticCDISpecModifier(devices []string) (oci.SpecModifier, error) {\n\tf.logger.Debugf(\"Generating in-memory CDI specs for devices %v\", devices)\n\n\tcsvFiles, err := csv.GetFileList(f.cfg.NVIDIAContainerRuntimeConfig.Modes.CSV.MountSpecPath)\n\tif err != nil {\n\t\tf.logger.Warningf(\"Failed to get the list of CSV files: %v\", err)\n\t}\n\tif f.image.Getenv(image.EnvVarNvidiaRequireJetpack) != \"csv-mounts=all\" {\n\t\tcsvFiles = csv.BaseFilesOnly(csvFiles)\n\t}\n\n\tcdiModeIdentifiers := cdiModeIdentfiersFromDevices(devices...)\n\tf.logger.Debugf(\"Per-mode identifiers: %v\", cdiModeIdentifiers)\n\tvar modifiers oci.SpecModifiers\n\tfor _, mode := range cdiModeIdentifiers.modes {\n\t\tcdilib, err := nvcdi.New(\n\t\t\tnvcdi.WithLogger(f.logger),\n\t\t\tnvcdi.WithNVIDIACDIHookPath(f.cfg.NVIDIACTKConfig.Path),\n\t\t\tnvcdi.WithDriverRoot(f.driver.Root),\n\t\t\tnvcdi.WithDevRoot(f.driver.DevRoot),\n\t\t\tnvcdi.WithEditsFactory(f.editsFactory),\n\t\t\tnvcdi.WithVendor(automaticDeviceVendor),\n\t\t\tnvcdi.WithClass(cdiModeIdentifiers.deviceClassByMode[mode]),\n\t\t\tnvcdi.WithMode(mode),\n\t\t\tnvcdi.WithFeatureFlags(f.cfg.NVIDIAContainerRuntimeConfig.Modes.JitCDI.NVCDIFeatureFlags...),\n\t\t\tnvcdi.WithCSVCompatContainerRoot(f.cfg.NVIDIAContainerRuntimeConfig.Modes.CSV.CompatContainerRoot),\n\t\t\tnvcdi.WithCSVFiles(csvFiles),\n\t\t)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed to construct CDI library for mode %q: %w\", mode, err)\n\t\t}\n\n\t\tspec, err := cdilib.GetSpec(cdiModeIdentifiers.idsByMode[mode]...)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed to generate CDI spec for mode %q: %w\", mode, err)\n\t\t}\n\n\t\tcdiDeviceRequestor, err := cdi.New(\n\t\t\tcdi.WithLogger(f.logger),\n\t\t\tcdi.WithSpec(spec.Raw()),\n\t\t)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed to construct CDI modifier for mode %q: %w\", mode, err)\n\t\t}\n\n\t\tmodifiers = append(modifiers, cdiDeviceRequestor)\n\t}\n\n\treturn modifiers, nil\n}\n\ntype cdiModeIdentifiers struct {\n\tmodes             []string\n\tidsByMode         map[string][]string\n\tdeviceClassByMode map[string]string\n}\n\nfunc cdiModeIdentfiersFromDevices(devices ...string) *cdiModeIdentifiers {\n\tperModeIdentifiers := make(map[string][]string)\n\tperModeDeviceClass := map[string]string{\"auto\": automaticDeviceClass}\n\tvar uniqueModes []string\n\tseen := make(map[string]bool)\n\tfor _, device := range devices {\n\t\tmode, id := getModeIdentifier(device)\n\t\tif !seen[mode] {\n\t\t\tuniqueModes = append(uniqueModes, mode)\n\t\t\tseen[mode] = true\n\t\t}\n\t\tif id != \"\" {\n\t\t\tperModeIdentifiers[mode] = append(perModeIdentifiers[mode], id)\n\t\t}\n\t}\n\n\treturn &cdiModeIdentifiers{\n\t\tmodes:             uniqueModes,\n\t\tidsByMode:         perModeIdentifiers,\n\t\tdeviceClassByMode: perModeDeviceClass,\n\t}\n}\n\nfunc getModeIdentifier(device string) (string, string) {\n\tif !strings.HasPrefix(device, \"mode=\") {\n\t\treturn \"auto\", strings.TrimPrefix(device, automaticDevicePrefix)\n\t}\n\tparts := strings.SplitN(device, \",\", 2)\n\tmode := strings.TrimPrefix(parts[0], \"mode=\")\n\tif len(parts) == 2 {\n\t\treturn mode, strings.TrimPrefix(parts[1], \"id=\")\n\t}\n\treturn mode, \"\"\n}\n\ntype deduplicatedDeviceRequestor struct {\n\tdeviceRequestor\n}\n\nfunc withUniqueDevices(deviceRequestor deviceRequestor) deviceRequestor {\n\treturn &deduplicatedDeviceRequestor{deviceRequestor: deviceRequestor}\n}\n\nfunc (d *deduplicatedDeviceRequestor) DeviceRequests() []string {\n\tif d == nil {\n\t\treturn nil\n\t}\n\tseen := make(map[string]bool)\n\tvar devices []string\n\tfor _, device := range d.deviceRequestor.DeviceRequests() {\n\t\tif seen[device] {\n\t\t\tcontinue\n\t\t}\n\t\tseen[device] = true\n\t\tdevices = append(devices, device)\n\t}\n\treturn devices\n}\n"
  },
  {
    "path": "internal/modifier/cdi_test.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage modifier\n\nimport (\n\t\"testing\"\n\n\t\"github.com/opencontainers/runtime-spec/specs-go\"\n\ttestlog \"github.com/sirupsen/logrus/hooks/test\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/config/image\"\n)\n\nfunc TestDeviceRequests(t *testing.T) {\n\tlogger, _ := testlog.NewNullLogger()\n\n\ttestCases := []struct {\n\t\tdescription     string\n\t\tinput           cdiDeviceRequestor\n\t\tspec            *specs.Spec\n\t\timageOptions    []image.Option\n\t\texpectedDevices []string\n\t}{\n\t\t{\n\t\t\tdescription: \"empty spec yields no devices\",\n\t\t},\n\t\t{\n\t\t\tdescription: \"cdi devices from mounts\",\n\t\t\tinput: cdiDeviceRequestor{\n\t\t\t\tdefaultKind: \"nvidia.com/gpu\",\n\t\t\t},\n\t\t\tspec: &specs.Spec{\n\t\t\t\tMounts: []specs.Mount{\n\t\t\t\t\t{\n\t\t\t\t\t\tDestination: \"/var/run/nvidia-container-devices/cdi/nvidia.com/gpu/0\",\n\t\t\t\t\t\tSource:      \"/dev/null\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tDestination: \"/var/run/nvidia-container-devices/cdi/nvidia.com/gpu/1\",\n\t\t\t\t\t\tSource:      \"/dev/null\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedDevices: []string{\"nvidia.com/gpu=0\", \"nvidia.com/gpu=1\"},\n\t\t},\n\t\t{\n\t\t\tdescription: \"cdi devices from envvar\",\n\t\t\tinput: cdiDeviceRequestor{\n\t\t\t\tdefaultKind: \"nvidia.com/gpu\",\n\t\t\t},\n\t\t\tspec: &specs.Spec{\n\t\t\t\tProcess: &specs.Process{\n\t\t\t\t\tEnv: []string{\"NVIDIA_VISIBLE_DEVICES=0,example.com/class=device\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedDevices: []string{\"nvidia.com/gpu=0\", \"example.com/class=device\"},\n\t\t},\n\t\t{\n\t\t\tdescription: \"cdi devices from envvar with default kind\",\n\t\t\tinput: cdiDeviceRequestor{\n\t\t\t\tdefaultKind: \"runtime.nvidia.com/gpu\",\n\t\t\t},\n\t\t\tspec: &specs.Spec{\n\t\t\t\tProcess: &specs.Process{\n\t\t\t\t\tEnv: []string{\"NVIDIA_VISIBLE_DEVICES=all\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedDevices: []string{\"runtime.nvidia.com/gpu=all\"},\n\t\t},\n\t\t{\n\t\t\tdescription: \"no matching annotations\",\n\t\t\timageOptions: []image.Option{\n\t\t\t\timage.WithAnnotationsPrefixes(\"not-prefix/\"),\n\t\t\t},\n\t\t\tspec: &specs.Spec{\n\t\t\t\tAnnotations: map[string]string{\n\t\t\t\t\t\"prefix/foo\": \"example.com/device=bar\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"single matching annotation\",\n\t\t\timageOptions: []image.Option{\n\t\t\t\timage.WithAnnotationsPrefixes(\"prefix/\"),\n\t\t\t},\n\t\t\tspec: &specs.Spec{\n\t\t\t\tAnnotations: map[string]string{\n\t\t\t\t\t\"prefix/foo\": \"example.com/device=bar\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedDevices: []string{\"example.com/device=bar\"},\n\t\t},\n\t\t{\n\t\t\tdescription: \"multiple matching annotations\",\n\t\t\timageOptions: []image.Option{\n\t\t\t\timage.WithAnnotationsPrefixes(\"prefix/\", \"another-prefix/\"),\n\t\t\t},\n\t\t\tspec: &specs.Spec{\n\t\t\t\tAnnotations: map[string]string{\n\t\t\t\t\t\"prefix/foo\":         \"example.com/device=bar\",\n\t\t\t\t\t\"another-prefix/bar\": \"example.com/device=baz\",\n\t\t\t\t},\n\t\t\t},\n\n\t\t\texpectedDevices: []string{\"example.com/device=baz\", \"example.com/device=bar\"},\n\t\t},\n\t\t{\n\t\t\tdescription: \"multiple matching annotations with duplicate devices\",\n\t\t\timageOptions: []image.Option{\n\t\t\t\timage.WithAnnotationsPrefixes(\"prefix/\", \"another-prefix/\"),\n\t\t\t},\n\t\t\tspec: &specs.Spec{\n\t\t\t\tAnnotations: map[string]string{\n\t\t\t\t\t\"prefix/foo\":         \"example.com/device=bar\",\n\t\t\t\t\t\"another-prefix/bar\": \"example.com/device=bar\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedDevices: []string{\"example.com/device=bar\", \"example.com/device=bar\"},\n\t\t},\n\t\t{\n\t\t\tdescription: \"devices in annotations are expanded\",\n\t\t\tinput: cdiDeviceRequestor{\n\t\t\t\tdefaultKind: \"nvidia.com/gpu\",\n\t\t\t},\n\t\t\timageOptions: []image.Option{\n\t\t\t\timage.WithAnnotationsPrefixes(\"prefix/\"),\n\t\t\t},\n\t\t\tspec: &specs.Spec{\n\t\t\t\tAnnotations: map[string]string{\n\t\t\t\t\t\"prefix/foo\": \"device\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedDevices: []string{\"nvidia.com/gpu=device\"},\n\t\t},\n\t\t{\n\t\t\tdescription: \"invalid devices in annotations are treated as strings\",\n\t\t\tinput: cdiDeviceRequestor{\n\t\t\t\tdefaultKind: \"nvidia.com/gpu\",\n\t\t\t},\n\t\t\timageOptions: []image.Option{\n\t\t\t\timage.WithAnnotationsPrefixes(\"prefix/\"),\n\t\t\t},\n\t\t\tspec: &specs.Spec{\n\t\t\t\tAnnotations: map[string]string{\n\t\t\t\t\t\"prefix/foo\": \"example.com/device\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedDevices: []string{\"nvidia.com/gpu=example.com/device\"},\n\t\t},\n\t\t{\n\t\t\tdescription: \"NVIDIA_VISIBLE_DEVICES=none\",\n\t\t\tinput: cdiDeviceRequestor{\n\t\t\t\tdefaultKind: \"runtime.nvidia.com/gpu\",\n\t\t\t},\n\t\t\tspec: &specs.Spec{\n\t\t\t\tProcess: &specs.Process{\n\t\t\t\t\tEnv: []string{\"NVIDIA_VISIBLE_DEVICES=none\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedDevices: []string{\"runtime.nvidia.com/gpu=none\"},\n\t\t},\n\t\t{\n\t\t\tdescription: \"SWARM_RESOURCE envvar is used over NVIDIA_VISIBLE_DEVICES\",\n\t\t\tinput: cdiDeviceRequestor{\n\t\t\t\tdefaultKind: \"runtime.nvidia.com/gpu\",\n\t\t\t},\n\t\t\timageOptions: []image.Option{\n\t\t\t\timage.WithPreferredVisibleDevicesEnvVars(\"SWARM_RESOURCE\"),\n\t\t\t},\n\t\t\tspec: &specs.Spec{\n\t\t\t\tProcess: &specs.Process{\n\t\t\t\t\tEnv: []string{\"NVIDIA_VISIBLE_DEVICES=all\", \"SWARM_RESOURCE=GPU1\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedDevices: []string{\"runtime.nvidia.com/gpu=GPU1\"},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\ttc.input.logger = logger\n\n\t\timage, err := image.NewCUDAImageFromSpec(\n\t\t\ttc.spec,\n\t\t\tappend(\n\t\t\t\t[]image.Option{\n\t\t\t\t\t// TODO: We should pull these into the testcase options.\n\t\t\t\t\timage.WithAcceptDeviceListAsVolumeMounts(true),\n\t\t\t\t\timage.WithAcceptEnvvarUnprivileged(true),\n\t\t\t\t},\n\t\t\t\ttc.imageOptions...)...,\n\t\t)\n\t\trequire.NoError(t, err)\n\t\ttc.input.image = &image\n\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\tdevices := tc.input.DeviceRequests()\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.EqualValues(t, tc.expectedDevices, devices)\n\t\t})\n\t}\n}\n\nfunc Test_cdiModeIdentfiersFromDevices(t *testing.T) {\n\ttestCases := []struct {\n\t\tdescription string\n\t\tdevices     []string\n\t\texpected    *cdiModeIdentifiers\n\t}{\n\t\t{\n\t\t\tdescription: \"empty device list\",\n\t\t\tdevices:     []string{},\n\t\t\texpected: &cdiModeIdentifiers{\n\t\t\t\tmodes:             nil,\n\t\t\t\tidsByMode:         map[string][]string{},\n\t\t\t\tdeviceClassByMode: map[string]string{\"auto\": \"gpu\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"single automatic device\",\n\t\t\tdevices:     []string{\"0\"},\n\t\t\texpected: &cdiModeIdentifiers{\n\t\t\t\tmodes:             []string{\"auto\"},\n\t\t\t\tidsByMode:         map[string][]string{\"auto\": {\"0\"}},\n\t\t\t\tdeviceClassByMode: map[string]string{\"auto\": \"gpu\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"multiple automatic devices\",\n\t\t\tdevices:     []string{\"0\", \"1\"},\n\t\t\texpected: &cdiModeIdentifiers{\n\t\t\t\tmodes:             []string{\"auto\"},\n\t\t\t\tidsByMode:         map[string][]string{\"auto\": {\"0\", \"1\"}},\n\t\t\t\tdeviceClassByMode: map[string]string{\"auto\": \"gpu\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"device with explicit mode\",\n\t\t\tdevices:     []string{\"mode=gds,id=foo\"},\n\t\t\texpected: &cdiModeIdentifiers{\n\t\t\t\tmodes:             []string{\"gds\"},\n\t\t\t\tidsByMode:         map[string][]string{\"gds\": {\"foo\"}},\n\t\t\t\tdeviceClassByMode: map[string]string{\"auto\": \"gpu\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"mixed auto and explicit\",\n\t\t\tdevices:     []string{\"0\", \"mode=gds,id=foo\", \"mode=gdrcopy,id=bar\"},\n\t\t\texpected: &cdiModeIdentifiers{\n\t\t\t\tmodes: []string{\"auto\", \"gds\", \"gdrcopy\"},\n\t\t\t\tidsByMode: map[string][]string{\n\t\t\t\t\t\"auto\":    {\"0\"},\n\t\t\t\t\t\"gds\":     {\"foo\"},\n\t\t\t\t\t\"gdrcopy\": {\"bar\"},\n\t\t\t\t},\n\t\t\t\tdeviceClassByMode: map[string]string{\"auto\": \"gpu\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"device with only mode, no id\",\n\t\t\tdevices:     []string{\"mode=nvswitch\"},\n\t\t\texpected: &cdiModeIdentifiers{\n\t\t\t\tmodes:             []string{\"nvswitch\"},\n\t\t\t\tidsByMode:         map[string][]string{},\n\t\t\t\tdeviceClassByMode: map[string]string{\"auto\": \"gpu\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"duplicate modes\",\n\t\t\tdevices:     []string{\"mode=gds,id=x\", \"mode=gds,id=y\", \"mode=gds\"},\n\t\t\texpected: &cdiModeIdentifiers{\n\t\t\t\tmodes:             []string{\"gds\"},\n\t\t\t\tidsByMode:         map[string][]string{\"gds\": {\"x\", \"y\"}},\n\t\t\t\tdeviceClassByMode: map[string]string{\"auto\": \"gpu\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"NVIDIA_VISIBLE_DEVICES=none\",\n\t\t\tdevices:     []string{\"none\"},\n\t\t\texpected: &cdiModeIdentifiers{\n\t\t\t\tmodes:             []string{\"auto\"},\n\t\t\t\tidsByMode:         map[string][]string{\"auto\": {\"none\"}},\n\t\t\t\tdeviceClassByMode: map[string]string{\"auto\": \"gpu\"},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\tresult := cdiModeIdentfiersFromDevices(tc.devices...)\n\t\t\trequire.EqualValues(t, tc.expected, result)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/modifier/csv.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage modifier\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/config/image\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/cuda\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/oci\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/requirements\"\n)\n\n// newCSVModifier creates a modifier that applies modications to an OCI spec if required by the runtime wrapper.\n// The modifications are defined by CSV MountSpecs.\nfunc (f *Factory) newCSVModifier() (oci.SpecModifier, error) {\n\tdevices := withUniqueDevices(csvDevices(*f.image)).DeviceRequests()\n\tif len(devices) == 0 {\n\t\tf.logger.Infof(\"No modification required; no devices requested\")\n\t\treturn nil, nil\n\t}\n\tf.logger.Infof(\"Constructing modifier from config: %+v\", *f.cfg)\n\n\tif err := checkRequirements(f.logger, f.image); err != nil {\n\t\treturn nil, fmt.Errorf(\"requirements not met: %v\", err)\n\t}\n\n\treturn f.newAutomaticCDISpecModifier(devices)\n}\n\nfunc checkRequirements(logger logger.Interface, image *image.CUDA) error {\n\tif image == nil || image.HasDisableRequire() {\n\t\t// TODO: We could print the real value here instead\n\t\tlogger.Debugf(\"NVIDIA_DISABLE_REQUIRE=%v; skipping requirement checks\", true)\n\t\treturn nil\n\t}\n\n\timageRequirements, err := image.GetRequirements()\n\tif err != nil {\n\t\t//  TODO: Should we treat this as a failure, or just issue a warning?\n\t\treturn fmt.Errorf(\"failed to get image requirements: %v\", err)\n\t}\n\n\tr := requirements.New(logger, imageRequirements)\n\n\tcudaVersion, err := cuda.Version()\n\tif err != nil {\n\t\tlogger.Warningf(\"Failed to get CUDA version: %v\", err)\n\t} else {\n\t\tr.AddVersionProperty(requirements.CUDA, cudaVersion)\n\t}\n\n\tcompteCapability, err := cuda.ComputeCapability(0)\n\tif err != nil {\n\t\tlogger.Warningf(\"Failed to get CUDA Compute Capability: %v\", err)\n\t} else {\n\t\tr.AddVersionProperty(requirements.ARCH, compteCapability)\n\t}\n\n\treturn r.Assert()\n}\n\ntype csvDevices image.CUDA\n\nfunc (d csvDevices) DeviceRequests() []string {\n\tvar devices []string\n\ti := (image.CUDA)(d)\n\tfor _, deviceID := range i.VisibleDevices() {\n\t\tdevices = append(devices, \"mode=csv,id=\"+deviceID)\n\t}\n\treturn devices\n}\n"
  },
  {
    "path": "internal/modifier/csv_test.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage modifier\n\nimport (\n\t\"path/filepath\"\n\t\"testing\"\n\n\t\"github.com/opencontainers/runtime-spec/specs-go\"\n\ttestlog \"github.com/sirupsen/logrus/hooks/test\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/api/config/v1\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/config/image\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/devices\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/lookup/root\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/test\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/test/to\"\n)\n\nfunc TestNewCSVModifier(t *testing.T) {\n\tlogger, _ := testlog.NewNullLogger()\n\n\tdefer devices.SetAllForTest()()\n\n\tmoduleRoot, err := test.GetModuleRoot()\n\trequire.NoError(t, err)\n\n\tlookupRoot := filepath.Join(moduleRoot, \"testdata\", \"lookup\")\n\n\ttestCases := []struct {\n\t\tdescription         string\n\t\tcfg                 config.Config\n\t\tenvmap              map[string]string\n\t\tdriverRootfs        string\n\t\tdevRootfs           string\n\t\texpectedErrorString string\n\t\texpectedSpec        specs.Spec\n\t}{\n\t\t{\n\t\t\tdescription: \"visible devices not set returns nil\",\n\t\t\tenvmap:      map[string]string{},\n\t\t},\n\t\t{\n\t\t\tdescription: \"visible devices empty returns nil\",\n\t\t\tenvmap:      map[string]string{\"NVIDIA_VISIBLE_DEVICES\": \"\"},\n\t\t},\n\t\t{\n\t\t\tdescription: \"visible devices 'void' returns nil\",\n\t\t\tenvmap:      map[string]string{\"NVIDIA_VISIBLE_DEVICES\": \"void\"},\n\t\t},\n\t\t{\n\t\t\tdescription:  \"visible devices all\",\n\t\t\tenvmap:       map[string]string{\"NVIDIA_VISIBLE_DEVICES\": \"all\"},\n\t\t\tdriverRootfs: \"rootfs-orin\",\n\t\t\texpectedSpec: specs.Spec{\n\t\t\t\tProcess: &specs.Process{\n\t\t\t\t\tEnv: []string{\"NVIDIA_VISIBLE_DEVICES=void\"},\n\t\t\t\t},\n\t\t\t\tMounts: []specs.Mount{\n\t\t\t\t\t{Source: \"/usr/lib/aarch64-linux-gnu/nvidia/libcuda.so.1.1\", Destination: \"/usr/lib/aarch64-linux-gnu/nvidia/libcuda.so.1.1\", Options: []string{\"ro\", \"nosuid\", \"nodev\", \"rbind\", \"rprivate\"}},\n\t\t\t\t\t{Source: \"/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-ml.so.1\", Destination: \"/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-ml.so.1\", Options: []string{\"ro\", \"nosuid\", \"nodev\", \"rbind\", \"rprivate\"}},\n\t\t\t\t},\n\t\t\t\tHooks: &specs.Hooks{\n\t\t\t\t\tCreateContainer: []specs.Hook{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/usr/bin/nvidia-cdi-hook\",\n\t\t\t\t\t\t\tArgs: []string{\"nvidia-cdi-hook\", \"create-symlinks\", \"--link\", \"libcuda.so.1::/usr/lib/aarch64-linux-gnu/nvidia/libcuda.so\"},\n\t\t\t\t\t\t\tEnv:  []string{\"NVIDIA_CTK_DEBUG=false\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/usr/bin/nvidia-cdi-hook\",\n\t\t\t\t\t\t\tArgs: []string{\"nvidia-cdi-hook\", \"update-ldcache\", \"--folder\", \"/usr/lib/aarch64-linux-gnu/nvidia\"},\n\t\t\t\t\t\t\tEnv:  []string{\"NVIDIA_CTK_DEBUG=false\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tLinux: &specs.Linux{\n\t\t\t\t\tDevices: []specs.LinuxDevice{\n\t\t\t\t\t\t{Path: \"/dev/nvidia0\", Type: \"c\", Major: 99},\n\t\t\t\t\t},\n\t\t\t\t\tResources: &specs.LinuxResources{\n\t\t\t\t\t\tDevices: []specs.LinuxDeviceCgroup{\n\t\t\t\t\t\t\t{Allow: true, Type: \"c\", Major: to.Ptr[int64](99), Minor: to.Ptr[int64](0), Access: \"rwm\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\timage, _ := image.New(\n\t\t\t\timage.WithEnvMap(tc.envmap),\n\t\t\t)\n\t\t\tdriverRoot := tc.driverRootfs\n\t\t\tif driverRoot != \"\" {\n\t\t\t\tdriverRoot = filepath.Join(lookupRoot, tc.driverRootfs)\n\t\t\t}\n\t\t\tdevRoot := tc.devRootfs\n\t\t\tif devRoot != \"\" {\n\t\t\t\tdevRoot = filepath.Join(lookupRoot, tc.devRootfs)\n\t\t\t}\n\t\t\tdriver := root.New(root.WithDriverRoot(driverRoot), root.WithDevRoot(devRoot))\n\t\t\t// Override the CSV file search path for this root.\n\t\t\ttc.cfg.NVIDIAContainerRuntimeConfig.Modes.CSV.MountSpecPath = filepath.Join(driverRoot, \"/etc/nvidia-container-runtime/host-files-for-container.d\")\n\t\t\ttc.cfg.NVIDIACTKConfig.Path = \"/usr/bin/nvidia-cdi-hook\"\n\n\t\t\tf := createFactory(\n\t\t\t\tWithLogger(logger),\n\t\t\t\tWithDriver(driver),\n\t\t\t\tWithConfig(&tc.cfg),\n\t\t\t\tWithImage(&image),\n\t\t\t)\n\t\t\tm, err := f.newCSVModifier()\n\t\t\tif tc.expectedErrorString == \"\" {\n\t\t\t\trequire.NoError(t, err)\n\t\t\t} else {\n\t\t\t\trequire.EqualError(t, err, tc.expectedErrorString)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\ts := specs.Spec{}\n\t\t\terr = list{m}.Modify(&s)\n\t\t\trequire.NoError(t, err)\n\n\t\t\trequire.EqualValues(t, tc.expectedSpec, test.StripRoot(s, driverRoot))\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/modifier/discover.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage modifier\n\nimport (\n\t\"fmt\"\n\n\tocispecs \"github.com/opencontainers/runtime-spec/specs-go\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/discover\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/edits\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/oci\"\n)\n\ntype discoverModifier struct {\n\tlogger       logger.Interface\n\teditsFactory edits.Factory\n\tdiscoverer   discover.Discover\n}\n\n// newModifierFromDiscoverer creates a modifier that applies the discovered\n// modifications to an OCI spec if required by the runtime wrapper.\nfunc (f *Factory) newModifierFromDiscoverer(d discover.Discover) (oci.SpecModifier, error) {\n\tm := discoverModifier{\n\t\tlogger:       f.logger,\n\t\teditsFactory: f.editsFactory,\n\t\tdiscoverer:   d,\n\t}\n\treturn &m, nil\n}\n\n// Modify applies the modifications required by discoverer to the incomming OCI spec.\n// These modifications are applied in-place.\nfunc (m discoverModifier) Modify(spec *ocispecs.Spec) error {\n\tspecEdits, err := m.editsFactory.FromDiscoverer(m.discoverer)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to get required container edits: %v\", err)\n\t}\n\n\tm.logger.Infof(\"Mounts:\")\n\tfor _, mount := range specEdits.Mounts {\n\t\tm.logger.Infof(\"Mounting %v at %v\", mount.HostPath, mount.ContainerPath)\n\t}\n\tm.logger.Infof(\"Devices:\")\n\tfor _, device := range specEdits.DeviceNodes {\n\t\tm.logger.Infof(\"Injecting %v\", device.Path)\n\t}\n\tm.logger.Infof(\"Hooks:\")\n\tfor _, hook := range specEdits.Hooks {\n\t\tm.logger.Infof(\"Injecting %v %v\", hook.Path, hook.Args)\n\t}\n\n\treturn specEdits.Apply(spec)\n}\n"
  },
  {
    "path": "internal/modifier/discover_test.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage modifier\n\nimport (\n\t\"fmt\"\n\t\"testing\"\n\n\t\"github.com/opencontainers/runtime-spec/specs-go\"\n\ttestlog \"github.com/sirupsen/logrus/hooks/test\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/api/config/v1\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/discover\"\n)\n\nfunc TestDiscoverModifier(t *testing.T) {\n\tlogger, _ := testlog.NewNullLogger()\n\n\ttestCases := []struct {\n\t\tdescription   string\n\t\tdiscover      *discover.DiscoverMock\n\t\tspec          *specs.Spec\n\t\texpectedError error\n\t\texpectedSpec  *specs.Spec\n\t}{\n\t\t{\n\t\t\tdescription:  \"empty discoverer does not modify spec\",\n\t\t\tspec:         &specs.Spec{},\n\t\t\tdiscover:     &discover.DiscoverMock{},\n\t\t\texpectedSpec: &specs.Spec{},\n\t\t},\n\t\t{\n\t\t\tdescription: \"failed hooks discoverer returns error\",\n\t\t\tdiscover: &discover.DiscoverMock{\n\t\t\t\tHooksFunc: func() ([]discover.Hook, error) {\n\t\t\t\t\treturn nil, fmt.Errorf(\"discover.Hooks error\")\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedError: fmt.Errorf(\"discover.Hooks error\"),\n\t\t},\n\t\t{\n\t\t\tdescription: \"discovered hooks are injected into spec\",\n\t\t\tspec:        &specs.Spec{},\n\t\t\tdiscover: &discover.DiscoverMock{\n\t\t\t\tHooksFunc: func() ([]discover.Hook, error) {\n\t\t\t\t\thooks := []discover.Hook{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tLifecycle: \"prestart\",\n\t\t\t\t\t\t\tPath:      \"/hook/a\",\n\t\t\t\t\t\t\tArgs:      []string{\"/hook/a\", \"arga\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tLifecycle: \"createContainer\",\n\t\t\t\t\t\t\tPath:      \"/hook/b\",\n\t\t\t\t\t\t\tArgs:      []string{\"/hook/b\", \"argb\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t\treturn hooks, nil\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedSpec: &specs.Spec{\n\t\t\t\tHooks: &specs.Hooks{\n\t\t\t\t\tPrestart: []specs.Hook{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/hook/a\",\n\t\t\t\t\t\t\tArgs: []string{\"/hook/a\", \"arga\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tCreateContainer: []specs.Hook{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/hook/b\",\n\t\t\t\t\t\t\tArgs: []string{\"/hook/b\", \"argb\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"existing hooks are maintained\",\n\t\t\tspec: &specs.Spec{\n\t\t\t\tHooks: &specs.Hooks{\n\t\t\t\t\tPrestart: []specs.Hook{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/hook/a\",\n\t\t\t\t\t\t\tArgs: []string{\"/hook/a\", \"arga\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tdiscover: &discover.DiscoverMock{\n\t\t\t\tHooksFunc: func() ([]discover.Hook, error) {\n\t\t\t\t\thooks := []discover.Hook{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tLifecycle: \"prestart\",\n\t\t\t\t\t\t\tPath:      \"/hook/b\",\n\t\t\t\t\t\t\tArgs:      []string{\"/hook/b\", \"argb\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t\treturn hooks, nil\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedSpec: &specs.Spec{\n\t\t\t\tHooks: &specs.Hooks{\n\t\t\t\t\tPrestart: []specs.Hook{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/hook/a\",\n\t\t\t\t\t\t\tArgs: []string{\"/hook/a\", \"arga\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/hook/b\",\n\t\t\t\t\t\t\tArgs: []string{\"/hook/b\", \"argb\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfactory := createFactory(\n\t\tWithLogger(logger),\n\t\tWithConfig(&config.Config{}),\n\t)\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\tm, err := factory.newModifierFromDiscoverer(tc.discover)\n\t\t\trequire.NoError(t, err)\n\n\t\t\terr = m.Modify(tc.spec)\n\t\t\tif tc.expectedError != nil {\n\t\t\t\trequire.Error(t, err)\n\t\t\t} else {\n\t\t\t\trequire.NoError(t, err)\n\t\t\t}\n\n\t\t\trequire.EqualValues(t, tc.expectedSpec, tc.spec)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/modifier/factory.go",
    "content": "/**\n# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage modifier\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/opencontainers/runtime-spec/specs-go\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/api/config/v1\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/config/image\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/discover\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/edits\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/info\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/lookup/root\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/oci\"\n)\n\n// factoryOptions define the set of options that must be set when constructing\n// a modifier factory.\ntype factoryOptions struct {\n\tlogger      logger.Interface\n\tcfg         *config.Config\n\tdriver      *root.Driver\n\thookCreator discover.HookCreator\n\timage       *image.CUDA\n\truntimeMode info.RuntimeMode\n}\n\ntype Factory struct {\n\tfactoryOptions\n\t// An editsFactory is created at construction.\n\teditsFactory edits.Factory\n}\n\n// A Factory also implements the oci.SpecModifier interface.\nvar _ oci.SpecModifier = (*Factory)(nil)\n\n// New is a factory method for creating a modifier Factory.\nfunc New(opts ...Option) (oci.SpecModifier, error) {\n\tf := createFactory(opts...)\n\tif err := f.validate(); err != nil {\n\t\treturn nil, err\n\t}\n\treturn f, nil\n}\n\n// createFactory is an internal constructor to allow validation to be bypassed\n// for internal tests.\nfunc createFactory(opts ...Option) *Factory {\n\tf := &Factory{}\n\tfor _, opt := range opts {\n\t\topt(&f.factoryOptions)\n\t}\n\n\tf.editsFactory = edits.NewFactory(\n\t\tedits.WithLogger(f.logger),\n\t\tedits.WithNoAdditionalGIDsForDeviceNodes(f.cfg.Features.NoAdditionalGIDsForDeviceNodes.IsEnabled()),\n\t)\n\n\treturn f\n}\n\nfunc (f *Factory) validate() error {\n\tif f.driver == nil {\n\t\treturn fmt.Errorf(\"a driver must be specified\")\n\t}\n\tswitch string(f.runtimeMode) {\n\tcase \"\":\n\t\treturn fmt.Errorf(\"a mode must be specified\")\n\tcase \"legacy\", \"csv\", \"jit-cdi\", \"cdi\":\n\t\treturn nil\n\tdefault:\n\t\treturn fmt.Errorf(\"invalid mode %q\", f.runtimeMode)\n\t}\n}\n\n// Modify creates the configured modifier and applies it to the supplied OCI\n// specification.\nfunc (f *Factory) Modify(s *specs.Spec) error {\n\tm, err := f.create()\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn m.Modify(s)\n}\n\n// create a modifier based on the modifier factory configuration.\nfunc (f *Factory) create() (oci.SpecModifier, error) {\n\tvar modifiers list\n\tfor _, modifierType := range supportedModifierTypes(f.runtimeMode) {\n\t\tswitch modifierType {\n\t\tcase \"mode\":\n\t\t\tmodeModifier, err := f.newModeModifier()\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tmodifiers = append(modifiers, modeModifier)\n\t\tcase \"nvidia-hook-remover\":\n\t\t\tmodifiers = append(modifiers, f.newNvidiaContainerRuntimeHookRemover())\n\t\tcase \"graphics\":\n\t\t\tgraphicsModifier, err := f.newGraphicsModifier()\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tmodifiers = append(modifiers, graphicsModifier)\n\t\tcase \"feature-gated\":\n\t\t\tfeatureGatedModifier, err := f.newFeatureGatedModifier()\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tmodifiers = append(modifiers, featureGatedModifier)\n\t\tdefault:\n\t\t\tf.logger.Debugf(\"Ignoring unknown modifier type %q\", modifierType)\n\t\t}\n\t}\n\treturn modifiers, nil\n}\n\ntype Option func(*factoryOptions)\n\nfunc WithConfig(cfg *config.Config) Option {\n\treturn func(f *factoryOptions) {\n\t\tf.cfg = cfg\n\t}\n}\n\nfunc WithDriver(driver *root.Driver) Option {\n\treturn func(f *factoryOptions) {\n\t\tf.driver = driver\n\t}\n}\nfunc WithHookCreator(hookCreator discover.HookCreator) Option {\n\treturn func(f *factoryOptions) {\n\t\tf.hookCreator = hookCreator\n\t}\n}\n\nfunc WithImage(image *image.CUDA) Option {\n\treturn func(f *factoryOptions) {\n\t\tf.image = image\n\t}\n}\n\nfunc WithLogger(logger logger.Interface) Option {\n\treturn func(f *factoryOptions) {\n\t\tf.logger = logger\n\t}\n}\n\nfunc WithRuntimeMode(runtimeMode info.RuntimeMode) Option {\n\treturn func(f *factoryOptions) {\n\t\tf.runtimeMode = runtimeMode\n\t}\n}\n"
  },
  {
    "path": "internal/modifier/gated.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage modifier\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/api/config/v1\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/discover\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/oci\"\n)\n\n// newFeatureGatedModifier creates the modifiers for optional features.\n// These include:\n//\n//\tNVIDIA_GDS=enabled\n//\tNVIDIA_MOFED=enabled\n//\tNVIDIA_NVSWITCH=enabled\n//\tNVIDIA_GDRCOPY=enabled\n//\n// If not devices are selected, no changes are made.\nfunc (f *Factory) newFeatureGatedModifier() (oci.SpecModifier, error) {\n\tif devices := f.image.VisibleDevices(); len(devices) == 0 {\n\t\tf.logger.Infof(\"No modification required; no devices requested\")\n\t\treturn nil, nil\n\t}\n\n\tvar modifers list\n\tif gatedDeviceRequests := withUniqueDevices(gatedDevices(*f.image)).DeviceRequests(); len(gatedDeviceRequests) != 0 {\n\t\tfeatureGatedModifier, err := f.newAutomaticCDISpecModifier(gatedDeviceRequests)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tmodifers = append(modifers, featureGatedModifier)\n\t}\n\n\t// If the feature flag has explicitly been toggled, we don't make any modification.\n\tif !f.cfg.Features.DisableCUDACompatLibHook.IsEnabled() {\n\t\tcudaCompatModifer, err := f.getCudaCompatModeModifier()\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed to construct CUDA Compat discoverer: %w\", err)\n\t\t}\n\t\tmodifers = append(modifers, cudaCompatModifer)\n\t}\n\n\treturn modifers, nil\n}\n\nfunc (f *Factory) getCudaCompatModeModifier() (oci.SpecModifier, error) {\n\t// We don't support the enable-cuda-compat hook in CSV mode.\n\tif f.cfg.NVIDIAContainerRuntimeConfig.Mode == \"csv\" {\n\t\treturn nil, nil\n\t}\n\n\t// For legacy mode, we only include the enable-cuda-compat hook if cuda-compat-mode is set to hook.\n\tif f.cfg.NVIDIAContainerRuntimeConfig.Mode == \"legacy\" && f.cfg.NVIDIAContainerRuntimeConfig.Modes.Legacy.CUDACompatMode != config.CUDACompatModeHook {\n\t\treturn nil, nil\n\t}\n\n\tversion, err := f.driver.Version()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to get driver version: %w\", err)\n\t}\n\n\tcompatLibHookDiscoverer := discover.NewCUDACompatHookDiscoverer(f.logger, f.hookCreator, &discover.EnableCUDACompatHookOptions{HostDriverVersion: version})\n\t// For non-legacy modes we return the hook as is. These modes *should* already include the update-ldcache hook.\n\tif f.cfg.NVIDIAContainerRuntimeConfig.Mode != \"legacy\" {\n\t\treturn f.newModifierFromDiscoverer(compatLibHookDiscoverer)\n\t}\n\n\t// For legacy mode, we also need to inject a hook to update the LDCache\n\t// after we have modifed the configuration.\n\tldcacheUpdateHookDiscoverer, err := discover.NewLDCacheUpdateHook(\n\t\tf.logger,\n\t\tdiscover.None{},\n\t\tf.hookCreator,\n\t)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to construct ldcache update discoverer: %w\", err)\n\t}\n\n\treturn f.newModifierFromDiscoverer(discover.Merge(compatLibHookDiscoverer, ldcacheUpdateHookDiscoverer))\n}\n"
  },
  {
    "path": "internal/modifier/graphics.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage modifier\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/config/image\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/discover\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/oci\"\n)\n\n// newGraphicsModifier constructs a modifier that injects graphics-related modifications into an OCI runtime specification.\n// The value of the NVIDIA_DRIVER_CAPABILITIES environment variable is checked to determine if this modification should be made.\nfunc (f *Factory) newGraphicsModifier() (oci.SpecModifier, error) {\n\tdevices, reason := requiresGraphicsModifier(*f.image)\n\tif len(devices) == 0 {\n\t\tf.logger.Infof(\"No graphics modifier required; %v\", reason)\n\t\treturn nil, nil\n\t}\n\n\tmounts, err := discover.NewGraphicsMountsDiscoverer(\n\t\tf.logger,\n\t\tf.driver,\n\t\tf.hookCreator,\n\t)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to create mounts discoverer: %v\", err)\n\t}\n\n\t// In standard usage, the devRoot is the same as the driver.Root.\n\tdevRoot := f.driver.Root\n\tdrmNodes, err := discover.NewDRMNodesDiscoverer(\n\t\tf.logger,\n\t\timage.NewVisibleDevices(devices...),\n\t\tdevRoot,\n\t\tf.hookCreator,\n\t)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to construct discoverer: %v\", err)\n\t}\n\n\td := discover.Merge(\n\t\tdrmNodes,\n\t\tmounts,\n\t)\n\treturn f.newModifierFromDiscoverer(d)\n}\n\n// requiresGraphicsModifier determines whether a graphics modifier is required.\nfunc requiresGraphicsModifier(cudaImage image.CUDA) ([]string, string) {\n\tdevices := cudaImage.VisibleDevices()\n\tif len(devices) == 0 {\n\t\treturn nil, \"no devices requested\"\n\t}\n\n\tif !cudaImage.GetDriverCapabilities().Any(image.DriverCapabilityGraphics, image.DriverCapabilityDisplay) {\n\t\treturn nil, \"no required capabilities requested\"\n\t}\n\n\treturn devices, \"\"\n}\n"
  },
  {
    "path": "internal/modifier/graphics_test.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage modifier\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/config/image\"\n)\n\nfunc TestGraphicsModifier(t *testing.T) {\n\ttestCases := []struct {\n\t\tdescription     string\n\t\tenvmap          map[string]string\n\t\texpectedDevices []string\n\t}{\n\t\t{\n\t\t\tdescription: \"empty image does not create modifier\",\n\t\t},\n\t\t{\n\t\t\tdescription: \"devices with no capabilities does not create modifier\",\n\t\t\tenvmap: map[string]string{\n\t\t\t\t\"NVIDIA_VISIBLE_DEVICES\": \"all\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"devices with no non-graphics does not create modifier\",\n\t\t\tenvmap: map[string]string{\n\t\t\t\t\"NVIDIA_VISIBLE_DEVICES\":     \"all\",\n\t\t\t\t\"NVIDIA_DRIVER_CAPABILITIES\": \"compute\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"devices with all capabilities creates modifier\",\n\t\t\tenvmap: map[string]string{\n\t\t\t\t\"NVIDIA_VISIBLE_DEVICES\":     \"all\",\n\t\t\t\t\"NVIDIA_DRIVER_CAPABILITIES\": \"all\",\n\t\t\t},\n\t\t\texpectedDevices: []string{\"all\"},\n\t\t},\n\t\t{\n\t\t\tdescription: \"devices with graphics capability creates modifier\",\n\t\t\tenvmap: map[string]string{\n\t\t\t\t\"NVIDIA_VISIBLE_DEVICES\":     \"all\",\n\t\t\t\t\"NVIDIA_DRIVER_CAPABILITIES\": \"graphics\",\n\t\t\t},\n\t\t\texpectedDevices: []string{\"all\"},\n\t\t},\n\t\t{\n\t\t\tdescription: \"devices with compute,graphics capability creates modifier\",\n\t\t\tenvmap: map[string]string{\n\t\t\t\t\"NVIDIA_VISIBLE_DEVICES\":     \"all\",\n\t\t\t\t\"NVIDIA_DRIVER_CAPABILITIES\": \"compute,graphics\",\n\t\t\t},\n\t\t\texpectedDevices: []string{\"all\"},\n\t\t},\n\t\t{\n\t\t\tdescription: \"devices with display capability creates modifier\",\n\t\t\tenvmap: map[string]string{\n\t\t\t\t\"NVIDIA_VISIBLE_DEVICES\":     \"all\",\n\t\t\t\t\"NVIDIA_DRIVER_CAPABILITIES\": \"display\",\n\t\t\t},\n\t\t\texpectedDevices: []string{\"all\"},\n\t\t},\n\t\t{\n\t\t\tdescription: \"devices with display,graphics capability creates modifier\",\n\t\t\tenvmap: map[string]string{\n\t\t\t\t\"NVIDIA_VISIBLE_DEVICES\":     \"all\",\n\t\t\t\t\"NVIDIA_DRIVER_CAPABILITIES\": \"display,graphics\",\n\t\t\t},\n\t\t\texpectedDevices: []string{\"all\"},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\timage, _ := image.New(\n\t\t\t\timage.WithEnvMap(tc.envmap),\n\t\t\t)\n\t\t\trequired, _ := requiresGraphicsModifier(image)\n\t\t\trequire.EqualValues(t, tc.expectedDevices, required)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/modifier/hook_remover.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage modifier\n\nimport (\n\t\"path/filepath\"\n\n\t\"github.com/opencontainers/runtime-spec/specs-go\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/api/config/v1\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/oci\"\n)\n\n// nvidiaContainerRuntimeHookRemover is a spec modifer that detects and removes inserted nvidia-container-runtime hooks\ntype nvidiaContainerRuntimeHookRemover struct {\n\tlogger logger.Interface\n}\n\nvar _ oci.SpecModifier = (*nvidiaContainerRuntimeHookRemover)(nil)\n\n// newNvidiaContainerRuntimeHookRemover creates a modifier that removes any NVIDIA Container Runtime hooks from the provided spec.\nfunc (f *Factory) newNvidiaContainerRuntimeHookRemover() oci.SpecModifier {\n\treturn nvidiaContainerRuntimeHookRemover{\n\t\tlogger: f.logger,\n\t}\n}\n\n// Modify removes any NVIDIA Container Runtime hooks from the provided spec\nfunc (m nvidiaContainerRuntimeHookRemover) Modify(spec *specs.Spec) error {\n\tif spec == nil {\n\t\treturn nil\n\t}\n\n\tif spec.Hooks == nil {\n\t\treturn nil\n\t}\n\n\tif len(spec.Hooks.Prestart) == 0 {\n\t\treturn nil\n\t}\n\n\tvar newPrestart []specs.Hook\n\n\tfor _, hook := range spec.Hooks.Prestart {\n\t\thook := hook\n\t\tif isNVIDIAContainerRuntimeHook(&hook) {\n\t\t\tm.logger.Debugf(\"Removing hook %v\", hook)\n\t\t\tcontinue\n\t\t}\n\t\tnewPrestart = append(newPrestart, hook)\n\t}\n\n\tif len(newPrestart) != len(spec.Hooks.Prestart) {\n\t\tm.logger.Debugf(\"Updating 'prestart' hooks to %v\", newPrestart)\n\t\tspec.Hooks.Prestart = newPrestart\n\t}\n\n\treturn nil\n}\n\n// isNVIDIAContainerRuntimeHook checks if the provided hook is an nvidia-container-runtime-hook\n// or nvidia-container-toolkit hook. These are included, for example, by the non-experimental\n// nvidia-container-runtime or docker when specifying the --gpus flag.\nfunc isNVIDIAContainerRuntimeHook(hook *specs.Hook) bool {\n\tbins := map[string]struct{}{\n\t\tconfig.NVIDIAContainerRuntimeHookExecutable: {},\n\t\tconfig.NVIDIAContainerToolkitExecutable:     {},\n\t}\n\n\t_, exists := bins[filepath.Base(hook.Path)]\n\n\treturn exists\n}\n"
  },
  {
    "path": "internal/modifier/hook_remover_test.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage modifier\n\nimport (\n\t\"testing\"\n\n\t\"github.com/opencontainers/runtime-spec/specs-go\"\n\ttestlog \"github.com/sirupsen/logrus/hooks/test\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestHookRemover(t *testing.T) {\n\tlogger, _ := testlog.NewNullLogger()\n\n\ttestCases := []struct {\n\t\tdescription   string\n\t\tspec          *specs.Spec\n\t\texpectedError error\n\t\texpectedSpec  *specs.Spec\n\t}{\n\t\t{\n\t\t\tdescription: \"existing hooks are maintained\",\n\t\t\tspec: &specs.Spec{\n\t\t\t\tHooks: &specs.Hooks{\n\t\t\t\t\tPrestart: []specs.Hook{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/hook/a\",\n\t\t\t\t\t\t\tArgs: []string{\"/hook/a\", \"arga\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedSpec: &specs.Spec{\n\t\t\t\tHooks: &specs.Hooks{\n\t\t\t\t\tPrestart: []specs.Hook{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/hook/a\",\n\t\t\t\t\t\t\tArgs: []string{\"/hook/a\", \"arga\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"modification removes existing nvidia-container-runtime-hook\",\n\t\t\tspec: &specs.Spec{\n\t\t\t\tHooks: &specs.Hooks{\n\t\t\t\t\tPrestart: []specs.Hook{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/path/to/nvidia-container-runtime-hook\",\n\t\t\t\t\t\t\tArgs: []string{\"/path/to/nvidia-container-runtime-hook\", \"prestart\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedSpec: &specs.Spec{\n\t\t\t\tHooks: &specs.Hooks{\n\t\t\t\t\tPrestart: nil,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"modification removes existing nvidia-container-toolkit\",\n\t\t\tspec: &specs.Spec{\n\t\t\t\tHooks: &specs.Hooks{\n\t\t\t\t\tPrestart: []specs.Hook{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/path/to/nvidia-container-toolkit\",\n\t\t\t\t\t\t\tArgs: []string{\"/path/to/nvidia-container-toolkit\", \"prestart\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedSpec: &specs.Spec{\n\t\t\t\tHooks: &specs.Hooks{\n\t\t\t\t\tPrestart: nil,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\tm := nvidiaContainerRuntimeHookRemover{logger: logger}\n\n\t\t\terr := m.Modify(tc.spec)\n\t\t\tif tc.expectedError != nil {\n\t\t\t\trequire.Error(t, err)\n\t\t\t} else {\n\t\t\t\trequire.NoError(t, err)\n\t\t\t}\n\n\t\t\trequire.EqualValues(t, tc.expectedSpec, tc.spec)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/modifier/list.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage modifier\n\nimport (\n\t\"github.com/opencontainers/runtime-spec/specs-go\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/oci\"\n)\n\ntype list []oci.SpecModifier\n\n// Modify applies a list of modifiers in sequence and returns on any errors encountered.\nfunc (m list) Modify(spec *specs.Spec) error {\n\tfor _, mm := range m {\n\t\tif mm == nil {\n\t\t\tcontinue\n\t\t}\n\t\terr := mm.Modify(spec)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "internal/modifier/mode.go",
    "content": "package modifier\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/info\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/oci\"\n)\n\n// newModeModifier creates a modifier for the configure runtime mode.\nfunc (f *Factory) newModeModifier() (oci.SpecModifier, error) {\n\tswitch f.runtimeMode {\n\tcase info.LegacyRuntimeMode:\n\t\treturn f.newStableRuntimeModifier(), nil\n\tcase info.CSVRuntimeMode:\n\t\treturn f.newCSVModifier()\n\tcase info.CDIRuntimeMode, info.JitCDIRuntimeMode:\n\t\treturn f.newCDIModifier(f.runtimeMode == info.JitCDIRuntimeMode)\n\t}\n\treturn nil, fmt.Errorf(\"invalid runtime mode: %v\", f.runtimeMode)\n}\n\n// supportedModifierTypes returns the modifiers supported for a specific runtime mode.\nfunc supportedModifierTypes(mode info.RuntimeMode) []string {\n\tswitch mode {\n\tcase info.CDIRuntimeMode, info.JitCDIRuntimeMode:\n\t\t// For CDI mode we make no additional modifications.\n\t\treturn []string{\"nvidia-hook-remover\", \"mode\"}\n\tcase info.CSVRuntimeMode:\n\t\t// For CSV mode we support mode and feature-gated modification.\n\t\treturn []string{\"nvidia-hook-remover\", \"feature-gated\", \"mode\"}\n\tdefault:\n\t\treturn []string{\"feature-gated\", \"graphics\", \"mode\"}\n\t}\n}\n"
  },
  {
    "path": "internal/modifier/stable.go",
    "content": "/*\n# Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n*/\n\npackage modifier\n\nimport (\n\t\"path/filepath\"\n\n\t\"github.com/opencontainers/runtime-spec/specs-go\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/oci\"\n)\n\n// newStableRuntimeModifier creates an OCI spec modifier that inserts the NVIDIA Container Runtime Hook into an OCI\n// spec. The specified logger is used to capture log output.\nfunc (f *Factory) newStableRuntimeModifier() oci.SpecModifier {\n\tm := stableRuntimeModifier{\n\t\tlogger:                         f.logger,\n\t\tnvidiaContainerRuntimeHookPath: f.cfg.NVIDIAContainerRuntimeHookConfig.Path,\n\t}\n\n\treturn &m\n}\n\n// stableRuntimeModifier modifies an OCI spec inplace, inserting the nvidia-container-runtime-hook as a\n// prestart hook. If the hook is already present, no modification is made.\ntype stableRuntimeModifier struct {\n\tlogger                         logger.Interface\n\tnvidiaContainerRuntimeHookPath string\n}\n\n// Modify applies the required modification to the incoming OCI spec, inserting the nvidia-container-runtime-hook\n// as a prestart hook.\nfunc (m stableRuntimeModifier) Modify(spec *specs.Spec) error {\n\t// If an NVIDIA Container Runtime Hook already exists, we don't make any modifications to the spec.\n\tif spec.Hooks != nil {\n\t\tfor _, hook := range spec.Hooks.Prestart {\n\t\t\thook := hook\n\t\t\tif isNVIDIAContainerRuntimeHook(&hook) {\n\t\t\t\tm.logger.Infof(\"Existing nvidia prestart hook (%v) found in OCI spec\", hook.Path)\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\n\tpath := m.nvidiaContainerRuntimeHookPath\n\tm.logger.Infof(\"Using prestart hook path: %v\", path)\n\targs := []string{filepath.Base(path)}\n\tif spec.Hooks == nil {\n\t\tspec.Hooks = &specs.Hooks{}\n\t}\n\tspec.Hooks.Prestart = append(spec.Hooks.Prestart, specs.Hook{\n\t\tPath: path,\n\t\tArgs: append(args, \"prestart\"),\n\t})\n\n\treturn nil\n}\n"
  },
  {
    "path": "internal/modifier/stable_test.go",
    "content": "/*\n# Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n*/\n\npackage modifier\n\nimport (\n\t\"log\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"testing\"\n\n\t\"github.com/opencontainers/runtime-spec/specs-go\"\n\ttestlog \"github.com/sirupsen/logrus/hooks/test\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/api/config/v1\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/test\"\n)\n\ntype testConfig struct {\n\troot    string\n\tbinPath string\n}\n\nvar cfg *testConfig\n\nfunc TestMain(m *testing.M) {\n\t// TEST SETUP\n\t// Determine the module root and the test binary path\n\tvar err error\n\tmoduleRoot, err := test.GetModuleRoot()\n\tif err != nil {\n\t\tlog.Fatalf(\"error in test setup: could not get module root: %v\", err)\n\t}\n\ttestBinPath := filepath.Join(moduleRoot, \"test\", \"bin\")\n\n\t// Set the environment variables for the test\n\tos.Setenv(\"PATH\", test.PrependToPath(testBinPath, moduleRoot))\n\n\t// Store the root and binary paths in the test Config\n\tcfg = &testConfig{\n\t\troot:    moduleRoot,\n\t\tbinPath: testBinPath,\n\t}\n\n\t// RUN TESTS\n\texitCode := m.Run()\n\n\tos.Exit(exitCode)\n}\n\nfunc TestAddHookModifier(t *testing.T) {\n\tlogger, _ := testlog.NewNullLogger()\n\n\ttestHookPath := filepath.Join(cfg.binPath, \"nvidia-container-runtime-hook\")\n\n\ttestCases := []struct {\n\t\tdescription   string\n\t\tspec          specs.Spec\n\t\texpectedError error\n\t\texpectedSpec  specs.Spec\n\t}{\n\t\t{\n\t\t\tdescription: \"empty spec adds hook\",\n\t\t\tspec:        specs.Spec{},\n\t\t\texpectedSpec: specs.Spec{\n\t\t\t\tHooks: &specs.Hooks{\n\t\t\t\t\tPrestart: []specs.Hook{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: testHookPath,\n\t\t\t\t\t\t\tArgs: []string{\"nvidia-container-runtime-hook\", \"prestart\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"spec with empty hooks adds hook\",\n\t\t\tspec: specs.Spec{\n\t\t\t\tHooks: &specs.Hooks{},\n\t\t\t},\n\t\t\texpectedSpec: specs.Spec{\n\t\t\t\tHooks: &specs.Hooks{\n\t\t\t\t\tPrestart: []specs.Hook{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: testHookPath,\n\t\t\t\t\t\t\tArgs: []string{\"nvidia-container-runtime-hook\", \"prestart\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"hook is not replaced\",\n\t\t\tspec: specs.Spec{\n\t\t\t\tHooks: &specs.Hooks{\n\t\t\t\t\tPrestart: []specs.Hook{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"nvidia-container-runtime-hook\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedSpec: specs.Spec{\n\t\t\t\tHooks: &specs.Hooks{\n\t\t\t\t\tPrestart: []specs.Hook{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"nvidia-container-runtime-hook\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"other hooks are not replaced\",\n\t\t\tspec: specs.Spec{\n\t\t\t\tHooks: &specs.Hooks{\n\t\t\t\t\tPrestart: []specs.Hook{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"some-hook\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedSpec: specs.Spec{\n\t\t\t\tHooks: &specs.Hooks{\n\t\t\t\t\tPrestart: []specs.Hook{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"some-hook\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: testHookPath,\n\t\t\t\t\t\t\tArgs: []string{\"nvidia-container-runtime-hook\", \"prestart\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tcfg := &config.Config{}\n\tcfg.NVIDIAContainerRuntimeHookConfig.Path = testHookPath\n\tfactory := createFactory(\n\t\tWithLogger(logger),\n\t\tWithConfig(cfg),\n\t)\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\tm := factory.newStableRuntimeModifier()\n\n\t\t\terr := m.Modify(&tc.spec)\n\t\t\tif tc.expectedError != nil {\n\t\t\t\trequire.Error(t, err)\n\t\t\t} else {\n\t\t\t\trequire.NoError(t, err)\n\t\t\t}\n\n\t\t\trequire.EqualValues(t, tc.expectedSpec, tc.spec)\n\t\t})\n\t}\n\n}\n"
  },
  {
    "path": "internal/nvcaps/nvcaps.go",
    "content": "/*\n# Copyright (c) 2021-2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n*/\n\npackage nvcaps\n\nimport (\n\t\"bufio\"\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strconv\"\n\t\"strings\"\n)\n\nconst (\n\tnvidiaProcDriverPath   = \"/proc/driver/nvidia\"\n\tnvidiaCapabilitiesPath = nvidiaProcDriverPath + \"/capabilities\"\n\n\tnvcapsProcDriverPath = \"/proc/driver/nvidia-caps\"\n\tnvcapsMigMinorsPath  = nvcapsProcDriverPath + \"/mig-minors\"\n\tnvcapsDevicePath     = \"/dev/nvidia-caps\"\n)\n\n// MigMinor represents the minor number of a MIG device\ntype MigMinor int\n\n// MigCap represents the path to a MIG cap file\ntype MigCap string\n\n// MigCaps stores a map of MIG cap file paths to MIG minors\ntype MigCaps map[MigCap]MigMinor\n\n// NewGPUInstanceCap creates a MigCap for the specified MIG GPU instance.\n// A GPU instance is uniquely defined by the GPU minor number and GI instance ID.\nfunc NewGPUInstanceCap(gpu, gi int) MigCap {\n\treturn MigCap(fmt.Sprintf(\"gpu%d/gi%d/access\", gpu, gi))\n}\n\n// NewComputeInstanceCap creates a MigCap for the specified MIG Compute instance.\n// A GPU instance is uniquely defined by the GPU minor number, GI instance ID, and CI instance ID.\nfunc NewComputeInstanceCap(gpu, gi, ci int) MigCap {\n\treturn MigCap(fmt.Sprintf(\"gpu%d/gi%d/ci%d/access\", gpu, gi, ci))\n}\n\n// GetCapDevicePath returns the path to the cap device for the specified cap.\n// An error is returned if the cap is invalid.\nfunc (m MigCaps) GetCapDevicePath(cap MigCap) (string, error) {\n\tminor, exists := m[cap]\n\tif !exists {\n\t\treturn \"\", fmt.Errorf(\"invalid MIG capability path %v\", cap)\n\t}\n\treturn minor.DevicePath(), nil\n}\n\n// NewMigCaps creates a MigCaps structure based on the contents of the MIG minors file.\nfunc NewMigCaps() (MigCaps, error) {\n\t// Open nvcapsMigMinorsPath for walking.\n\t// If the nvcapsMigMinorsPath does not exist, then we are not on a MIG\n\t// capable machine, so there is nothing to do.\n\t// The format of this file is discussed in:\n\t//     https://docs.nvidia.com/datacenter/tesla/mig-user-guide/index.html#unique_1576522674\n\tminorsFile, err := os.Open(nvcapsMigMinorsPath)\n\tif os.IsNotExist(err) {\n\t\treturn nil, nil\n\t}\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error opening MIG minors file: %v\", err)\n\t}\n\tdefer minorsFile.Close()\n\n\treturn processMinorsFile(minorsFile), nil\n}\n\nfunc processMinorsFile(minorsFile io.Reader) MigCaps {\n\t// Walk each line of nvcapsMigMinorsPath and construct a mapping of nvidia\n\t// capabilities path to device minor for that capability\n\tmigCaps := make(MigCaps)\n\tscanner := bufio.NewScanner(minorsFile)\n\tfor scanner.Scan() {\n\t\tcap, minor, err := processMigMinorsLine(scanner.Text())\n\t\tif err != nil {\n\t\t\tlog.Printf(\"Skipping line in MIG minors file: %v\", err)\n\t\t\tcontinue\n\t\t}\n\t\tmigCaps[cap] = minor\n\t}\n\treturn migCaps\n}\n\nfunc processMigMinorsLine(line string) (MigCap, MigMinor, error) {\n\tparts := strings.Split(line, \" \")\n\tif len(parts) != 2 {\n\t\treturn \"\", 0, fmt.Errorf(\"error processing line: %v\", line)\n\t}\n\n\tmigCap := MigCap(parts[0])\n\tif !migCap.isValid() {\n\t\treturn \"\", 0, fmt.Errorf(\"invalid MIG minors line: '%v'\", line)\n\t}\n\n\tminor, err := strconv.Atoi(parts[1])\n\tif err != nil {\n\t\treturn \"\", 0, fmt.Errorf(\"error reading MIG minor from '%v': %v\", line, err)\n\t}\n\n\treturn migCap, MigMinor(minor), nil\n}\n\nfunc (m MigCap) isValid() bool {\n\tcap := string(m)\n\tswitch cap {\n\tcase \"config\", \"monitor\":\n\t\treturn true\n\tdefault:\n\t\tvar gpu int\n\t\tvar gi int\n\t\tvar ci int\n\t\t// Look for a CI access file\n\t\tn, _ := fmt.Sscanf(cap, \"gpu%d/gi%d/ci%d/access\", &gpu, &gi, &ci)\n\t\tif n == 3 {\n\t\t\treturn true\n\t\t}\n\t\t// Look for a GI access file\n\t\tn, _ = fmt.Sscanf(cap, \"gpu%d/gi%d/access %d\", &gpu, &gi)\n\t\tif n == 2 {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// ProcPath returns the proc path associated with the MIG capability\nfunc (m MigCap) ProcPath() string {\n\tid := string(m)\n\n\tvar path string\n\tswitch id {\n\tcase \"config\", \"monitor\":\n\t\tpath = \"mig/\" + id\n\tdefault:\n\t\tparts := strings.SplitN(id, \"/\", 2)\n\t\tpath = strings.Join([]string{parts[0], \"mig\", parts[1]}, \"/\")\n\t}\n\treturn filepath.Join(nvidiaCapabilitiesPath, path)\n}\n\n// DevicePath returns the path for the nvidia-caps device with the specified\n// minor number\nfunc (m MigMinor) DevicePath() string {\n\treturn fmt.Sprintf(nvcapsDevicePath+\"/nvidia-cap%d\", m)\n}\n"
  },
  {
    "path": "internal/nvcaps/nvcaps_test.go",
    "content": "/*\n# Copyright (c) 2021-2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n*/\n\npackage nvcaps\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestProcessMinorsFile(t *testing.T) {\n\ttestCases := []struct {\n\t\tlines    []string\n\t\texpected MigCaps\n\t}{\n\t\t{[]string{}, MigCaps{}},\n\t\t{[]string{\"invalidLine\"}, MigCaps{}},\n\t\t{[]string{\"config 1\"}, MigCaps{\"config\": 1}},\n\t\t{[]string{\"gpu0/gi0/ci0/access 4\"}, MigCaps{\"gpu0/gi0/ci0/access\": 4}},\n\t\t{[]string{\"config 1\", \"invalidLine\"}, MigCaps{\"config\": 1}},\n\t\t{[]string{\"config 1\", \"gpu0/gi0/ci0/access 4\"}, MigCaps{\"config\": 1, \"gpu0/gi0/ci0/access\": 4}},\n\t}\n\tfor i, tc := range testCases {\n\t\tt.Run(fmt.Sprintf(\"testcase %d\", i), func(t *testing.T) {\n\t\t\tcontents := strings.NewReader(strings.Join(tc.lines, \"\\n\"))\n\t\t\td := processMinorsFile(contents)\n\t\t\trequire.Equal(t, tc.expected, d)\n\t\t})\n\t}\n}\n\nfunc TestProcessMigMinorsLine(t *testing.T) {\n\ttestCases := []struct {\n\t\tline  string\n\t\tcap   MigCap\n\t\tminor MigMinor\n\t\terr   bool\n\t}{\n\t\t{\"config 1\", \"config\", 1, false},\n\t\t{\"monitor 2\", \"monitor\", 2, false},\n\t\t{\"gpu0/gi0/access 3\", \"gpu0/gi0/access\", 3, false},\n\t\t{\"gpu0/gi0/ci0/access 4\", \"gpu0/gi0/ci0/access\", 4, false},\n\t\t{\"notconfig 99\", \"\", 0, true},\n\t\t{\"config notanint\", \"\", 0, true},\n\t\t{\"\", \"\", 0, true},\n\t}\n\n\tfor i, tc := range testCases {\n\t\tt.Run(fmt.Sprintf(\"testcase %d\", i), func(t *testing.T) {\n\t\t\tcap, minor, err := processMigMinorsLine(tc.line)\n\n\t\t\trequire.Equal(t, tc.cap, cap)\n\t\t\trequire.Equal(t, tc.minor, minor)\n\t\t\tif tc.err {\n\t\t\t\trequire.Error(t, err)\n\t\t\t} else {\n\t\t\t\trequire.NoError(t, err)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestMigCapProcPaths(t *testing.T) {\n\ttestCases := []struct {\n\t\tinput    string\n\t\texpected string\n\t}{\n\t\t{\"config\", \"/proc/driver/nvidia/capabilities/mig/config\"},\n\t\t{\"monitor\", \"/proc/driver/nvidia/capabilities/mig/monitor\"},\n\t\t{\"gpu0/gi0/access\", \"/proc/driver/nvidia/capabilities/gpu0/mig/gi0/access\"},\n\t\t{\"gpu0/gi0/ci0/access\", \"/proc/driver/nvidia/capabilities/gpu0/mig/gi0/ci0/access\"},\n\t}\n\tfor i, tc := range testCases {\n\t\tt.Run(fmt.Sprintf(\"testcase %d\", i), func(t *testing.T) {\n\t\t\tm := MigCap(tc.input)\n\t\t\trequire.Equal(t, tc.expected, m.ProcPath())\n\t\t})\n\t}\n}\n\nfunc TestMigMinorDevicePath(t *testing.T) {\n\tm := MigMinor(0)\n\trequire.Equal(t, \"/dev/nvidia-caps/nvidia-cap0\", m.DevicePath())\n}\n"
  },
  {
    "path": "internal/nvsandboxutils/api.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage nvsandboxutils\n\n// libraryOptions hold the parameters than can be set by a LibraryOption\ntype libraryOptions struct {\n\tpath  string\n\tflags int\n}\n\n// LibraryOption represents a functional option to configure the underlying nvsandboxutils library\ntype LibraryOption func(*libraryOptions)\n\n// WithLibraryPath provides an option to set the library name to be used by the nvsandboxutils library.\nfunc WithLibraryPath(path string) LibraryOption {\n\treturn func(o *libraryOptions) {\n\t\to.path = path\n\t}\n}\n\n// SetLibraryOptions applies the specified options to the nvsandboxutils library.\n// If this is called when a library is already loaded, an error is raised.\nfunc SetLibraryOptions(opts ...LibraryOption) error {\n\tlibnvsandboxutils.Lock()\n\tdefer libnvsandboxutils.Unlock()\n\tif libnvsandboxutils.refcount != 0 {\n\t\treturn errLibraryAlreadyLoaded\n\t}\n\tlibnvsandboxutils.init(opts...)\n\treturn nil\n}\n"
  },
  {
    "path": "internal/nvsandboxutils/cgo_helpers.h",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\n// WARNING: THIS FILE WAS AUTOMATICALLY GENERATED.\n// Code generated by https://git.io/c-for-go. DO NOT EDIT.\n\n#include \"nvsandboxutils.h\"\n#include <stdlib.h>\n#pragma once\n\n#define __CGOGEN 1\n\n"
  },
  {
    "path": "internal/nvsandboxutils/cgo_helpers_static.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage nvsandboxutils\n\nvar cgoAllocsUnknown = new(struct{})\n\nfunc clen(n []byte) int {\n\tfor i := 0; i < len(n); i++ {\n\t\tif n[i] == 0 {\n\t\t\treturn i\n\t\t}\n\t}\n\treturn len(n)\n}\n\n// Creates an int8 array of fixed input length to store the Go string.\n// TODO: Add error check if input string has a length greater than INPUT_LENGTH\nfunc convertStringToFixedArray(str string) [INPUT_LENGTH]int8 {\n\tvar output [INPUT_LENGTH]int8\n\tfor i, s := range str {\n\t\toutput[i] = int8(s)\n\t}\n\treturn output\n}\n"
  },
  {
    "path": "internal/nvsandboxutils/const.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\n// WARNING: THIS FILE WAS AUTOMATICALLY GENERATED.\n// Code generated by https://git.io/c-for-go. DO NOT EDIT.\n\npackage nvsandboxutils\n\n/*\n#cgo linux LDFLAGS: -Wl,--export-dynamic -Wl,--unresolved-symbols=ignore-in-object-files\n#cgo darwin LDFLAGS: -Wl,-undefined,dynamic_lookup\n#include \"nvsandboxutils.h\"\n#include <stdlib.h>\n#include \"cgo_helpers.h\"\n*/\nimport \"C\"\n\nconst (\n\t// INPUT_LENGTH as defined in nvsandboxutils/nvsandboxutils.h\n\tINPUT_LENGTH = 256\n\t// MAX_FILE_PATH as defined in nvsandboxutils/nvsandboxutils.h\n\tMAX_FILE_PATH = 256\n\t// MAX_NAME_LENGTH as defined in nvsandboxutils/nvsandboxutils.h\n\tMAX_NAME_LENGTH = 256\n)\n\n// Ret as declared in nvsandboxutils/nvsandboxutils.h\ntype Ret int32\n\n// Ret enumeration from nvsandboxutils/nvsandboxutils.h\nconst (\n\tSUCCESS                     Ret = iota\n\tERROR_UNINITIALIZED         Ret = 1\n\tERROR_NOT_SUPPORTED         Ret = 2\n\tERROR_INVALID_ARG           Ret = 3\n\tERROR_INSUFFICIENT_SIZE     Ret = 4\n\tERROR_VERSION_NOT_SUPPORTED Ret = 5\n\tERROR_LIBRARY_LOAD          Ret = 6\n\tERROR_FUNCTION_NOT_FOUND    Ret = 7\n\tERROR_DEVICE_NOT_FOUND      Ret = 8\n\tERROR_NVML_LIB_CALL         Ret = 9\n\tERROR_OUT_OF_MEMORY         Ret = 10\n\tERROR_FILEPATH_NOT_FOUND    Ret = 11\n\tERROR_UNKNOWN               Ret = 65535\n)\n\n// LogLevel as declared in nvsandboxutils/nvsandboxutils.h\ntype LogLevel int32\n\n// LogLevel enumeration from nvsandboxutils/nvsandboxutils.h\nconst (\n\tLOG_LEVEL_FATAL LogLevel = iota\n\tLOG_LEVEL_ERROR LogLevel = 1\n\tLOG_LEVEL_WARN  LogLevel = 2\n\tLOG_LEVEL_DEBUG LogLevel = 3\n\tLOG_LEVEL_INFO  LogLevel = 4\n\tLOG_LEVEL_NONE  LogLevel = 65535\n)\n\n// RootfsInputType as declared in nvsandboxutils/nvsandboxutils.h\ntype RootfsInputType int32\n\n// RootfsInputType enumeration from nvsandboxutils/nvsandboxutils.h\nconst (\n\tNV_ROOTFS_DEFAULT RootfsInputType = iota\n\tNV_ROOTFS_PATH    RootfsInputType = 1\n\tNV_ROOTFS_PID     RootfsInputType = 2\n)\n\n// FileType as declared in nvsandboxutils/nvsandboxutils.h\ntype FileType int32\n\n// FileType enumeration from nvsandboxutils/nvsandboxutils.h\nconst (\n\tNV_DEV  FileType = iota\n\tNV_PROC FileType = 1\n\tNV_SYS  FileType = 2\n)\n\n// FileSystemSubType as declared in nvsandboxutils/nvsandboxutils.h\ntype FileSystemSubType int32\n\n// FileSystemSubType enumeration from nvsandboxutils/nvsandboxutils.h\nconst (\n\tNV_DEV_NVIDIA                                         FileSystemSubType = iota\n\tNV_DEV_DRI_CARD                                       FileSystemSubType = 1\n\tNV_DEV_DRI_RENDERD                                    FileSystemSubType = 2\n\tNV_DEV_DRI_CARD_SYMLINK                               FileSystemSubType = 3\n\tNV_DEV_DRI_RENDERD_SYMLINK                            FileSystemSubType = 4\n\tNV_DEV_NVIDIA_UVM                                     FileSystemSubType = 5\n\tNV_DEV_NVIDIA_UVM_TOOLS                               FileSystemSubType = 6\n\tNV_DEV_NVIDIA_MODESET                                 FileSystemSubType = 7\n\tNV_DEV_NVIDIA_CTL                                     FileSystemSubType = 8\n\tNV_DEV_GDRDRV                                         FileSystemSubType = 9\n\tNV_DEV_NVIDIA_CAPS_NVIDIA_CAP                         FileSystemSubType = 10\n\tNV_PROC_DRIVER_NVIDIA_GPUS_PCIBUSID                   FileSystemSubType = 11\n\tNV_PROC_DRIVER_NVIDIA_GPUS                            FileSystemSubType = 12\n\tNV_PROC_NVIDIA_PARAMS                                 FileSystemSubType = 13\n\tNV_PROC_NVIDIA_CAPS_MIG_MINORS                        FileSystemSubType = 14\n\tNV_PROC_DRIVER_NVIDIA_CAPABILITIES_GPU                FileSystemSubType = 15\n\tNV_PROC_DRIVER_NVIDIA_CAPABILITIES                    FileSystemSubType = 16\n\tNV_PROC_DRIVER_NVIDIA_CAPABILITIIES_GPU_MIG_CI_ACCESS FileSystemSubType = 17\n\tNV_SYS_MODULE_NVIDIA_DRIVER_PCIBUSID                  FileSystemSubType = 18\n\tNV_SYS_MODULE_NVIDIA_DRIVER                           FileSystemSubType = 19\n\tNV_NUM_SUBTYPE                                        FileSystemSubType = 20\n)\n\n// FileModule as declared in nvsandboxutils/nvsandboxutils.h\ntype FileModule int32\n\n// FileModule enumeration from nvsandboxutils/nvsandboxutils.h\nconst (\n\tNV_GPU                   FileModule = iota\n\tNV_MIG                   FileModule = 1\n\tNV_DRIVER_NVIDIA         FileModule = 2\n\tNV_DRIVER_NVIDIA_UVM     FileModule = 3\n\tNV_DRIVER_NVIDIA_MODESET FileModule = 4\n\tNV_DRIVER_GDRDRV         FileModule = 5\n\tNV_SYSTEM                FileModule = 6\n)\n\n// FileFlag as declared in nvsandboxutils/nvsandboxutils.h\ntype FileFlag int32\n\n// FileFlag enumeration from nvsandboxutils/nvsandboxutils.h\nconst (\n\tNV_FILE_FLAG_HINT        FileFlag = 1\n\tNV_FILE_FLAG_MASKOUT     FileFlag = 2\n\tNV_FILE_FLAG_CONTENT     FileFlag = 4\n\tNV_FILE_FLAG_DEPRECTATED FileFlag = 8\n\tNV_FILE_FLAG_CANDIDATES  FileFlag = 16\n)\n\n// GpuInputType as declared in nvsandboxutils/nvsandboxutils.h\ntype GpuInputType int32\n\n// GpuInputType enumeration from nvsandboxutils/nvsandboxutils.h\nconst (\n\tNV_GPU_INPUT_GPU_UUID  GpuInputType = iota\n\tNV_GPU_INPUT_MIG_UUID  GpuInputType = 1\n\tNV_GPU_INPUT_PCI_ID    GpuInputType = 2\n\tNV_GPU_INPUT_PCI_INDEX GpuInputType = 3\n)\n"
  },
  {
    "path": "internal/nvsandboxutils/doc.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\n// WARNING: THIS FILE WAS AUTOMATICALLY GENERATED.\n// Code generated by https://git.io/c-for-go. DO NOT EDIT.\n\n/*\nPackage NVSANDBOXUTILS bindings\n*/\npackage nvsandboxutils\n"
  },
  {
    "path": "internal/nvsandboxutils/dynamicLibrary_mock.go",
    "content": "// Code generated by moq; DO NOT EDIT.\n// github.com/matryer/moq\n\npackage nvsandboxutils\n\nimport (\n\t\"sync\"\n)\n\n// Ensure, that dynamicLibraryMock does implement dynamicLibrary.\n// If this is not the case, regenerate this file with moq.\nvar _ dynamicLibrary = &dynamicLibraryMock{}\n\n// dynamicLibraryMock is a mock implementation of dynamicLibrary.\n//\n//\tfunc TestSomethingThatUsesdynamicLibrary(t *testing.T) {\n//\n//\t\t// make and configure a mocked dynamicLibrary\n//\t\tmockeddynamicLibrary := &dynamicLibraryMock{\n//\t\t\tCloseFunc: func() error {\n//\t\t\t\tpanic(\"mock out the Close method\")\n//\t\t\t},\n//\t\t\tLookupFunc: func(s string) error {\n//\t\t\t\tpanic(\"mock out the Lookup method\")\n//\t\t\t},\n//\t\t\tOpenFunc: func() error {\n//\t\t\t\tpanic(\"mock out the Open method\")\n//\t\t\t},\n//\t\t}\n//\n//\t\t// use mockeddynamicLibrary in code that requires dynamicLibrary\n//\t\t// and then make assertions.\n//\n//\t}\ntype dynamicLibraryMock struct {\n\t// CloseFunc mocks the Close method.\n\tCloseFunc func() error\n\n\t// LookupFunc mocks the Lookup method.\n\tLookupFunc func(s string) error\n\n\t// OpenFunc mocks the Open method.\n\tOpenFunc func() error\n\n\t// calls tracks calls to the methods.\n\tcalls struct {\n\t\t// Close holds details about calls to the Close method.\n\t\tClose []struct {\n\t\t}\n\t\t// Lookup holds details about calls to the Lookup method.\n\t\tLookup []struct {\n\t\t\t// S is the s argument value.\n\t\t\tS string\n\t\t}\n\t\t// Open holds details about calls to the Open method.\n\t\tOpen []struct {\n\t\t}\n\t}\n\tlockClose  sync.RWMutex\n\tlockLookup sync.RWMutex\n\tlockOpen   sync.RWMutex\n}\n\n// Close calls CloseFunc.\nfunc (mock *dynamicLibraryMock) Close() error {\n\tcallInfo := struct {\n\t}{}\n\tmock.lockClose.Lock()\n\tmock.calls.Close = append(mock.calls.Close, callInfo)\n\tmock.lockClose.Unlock()\n\tif mock.CloseFunc == nil {\n\t\tvar (\n\t\t\terrOut error\n\t\t)\n\t\treturn errOut\n\t}\n\treturn mock.CloseFunc()\n}\n\n// CloseCalls gets all the calls that were made to Close.\n// Check the length with:\n//\n//\tlen(mockeddynamicLibrary.CloseCalls())\nfunc (mock *dynamicLibraryMock) CloseCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockClose.RLock()\n\tcalls = mock.calls.Close\n\tmock.lockClose.RUnlock()\n\treturn calls\n}\n\n// Lookup calls LookupFunc.\nfunc (mock *dynamicLibraryMock) Lookup(s string) error {\n\tcallInfo := struct {\n\t\tS string\n\t}{\n\t\tS: s,\n\t}\n\tmock.lockLookup.Lock()\n\tmock.calls.Lookup = append(mock.calls.Lookup, callInfo)\n\tmock.lockLookup.Unlock()\n\tif mock.LookupFunc == nil {\n\t\tvar (\n\t\t\terrOut error\n\t\t)\n\t\treturn errOut\n\t}\n\treturn mock.LookupFunc(s)\n}\n\n// LookupCalls gets all the calls that were made to Lookup.\n// Check the length with:\n//\n//\tlen(mockeddynamicLibrary.LookupCalls())\nfunc (mock *dynamicLibraryMock) LookupCalls() []struct {\n\tS string\n} {\n\tvar calls []struct {\n\t\tS string\n\t}\n\tmock.lockLookup.RLock()\n\tcalls = mock.calls.Lookup\n\tmock.lockLookup.RUnlock()\n\treturn calls\n}\n\n// Open calls OpenFunc.\nfunc (mock *dynamicLibraryMock) Open() error {\n\tcallInfo := struct {\n\t}{}\n\tmock.lockOpen.Lock()\n\tmock.calls.Open = append(mock.calls.Open, callInfo)\n\tmock.lockOpen.Unlock()\n\tif mock.OpenFunc == nil {\n\t\tvar (\n\t\t\terrOut error\n\t\t)\n\t\treturn errOut\n\t}\n\treturn mock.OpenFunc()\n}\n\n// OpenCalls gets all the calls that were made to Open.\n// Check the length with:\n//\n//\tlen(mockeddynamicLibrary.OpenCalls())\nfunc (mock *dynamicLibraryMock) OpenCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockOpen.RLock()\n\tcalls = mock.calls.Open\n\tmock.lockOpen.RUnlock()\n\treturn calls\n}\n"
  },
  {
    "path": "internal/nvsandboxutils/gen/generate-bindings.sh",
    "content": "#!/bin/bash\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# This file generates bindings for nvsandboxutils by calling c-for-go.\n\nset -x -e\n\nPWD=$(pwd)\nGEN_DIR=\"$PWD/gen\"\nPKG_DIR=\"$PWD\"\nGEN_BINDINGS_DIR=\"$GEN_DIR/nvsandboxutils\"\nPKG_BINDINGS_DIR=\"$PKG_DIR\"\n\nSOURCES=$(find \"$GEN_BINDINGS_DIR\" -type f)\n\nmkdir -p \"$PKG_BINDINGS_DIR\"\n\ncp \"$GEN_BINDINGS_DIR/nvsandboxutils.h\" \"$PKG_BINDINGS_DIR/nvsandboxutils.h\"\nspatch --in-place --very-quiet --sp-file \"$GEN_BINDINGS_DIR/anonymous_structs.cocci\" \"$PKG_BINDINGS_DIR/nvsandboxutils.h\" > /dev/null\n\necho \"Generating the bindings...\"\nc-for-go -out \"$PKG_DIR/..\" \"$GEN_BINDINGS_DIR/nvsandboxutils.yml\"\ncd \"$PKG_BINDINGS_DIR\"\ngo tool cgo -godefs types.go > types_gen.go\ngo fmt types_gen.go\ncd - > /dev/null\nrm -rf \"$PKG_BINDINGS_DIR/cgo_helpers.go\" \"$PKG_BINDINGS_DIR/types.go\" \"$PKG_BINDINGS_DIR/_obj\"\ngo run \"$GEN_BINDINGS_DIR/generateapi.go\" --sourceDir \"$PKG_BINDINGS_DIR\" --output \"$PKG_BINDINGS_DIR/zz_generated.api.go\"\n# go fmt \"$PKG_BINDINGS_DIR\"\n\nSED_SEARCH_STRING='// WARNING: This file has automatically been generated on'\nSED_REPLACE_STRING='// WARNING: THIS FILE WAS AUTOMATICALLY GENERATED.'\ngrep -l -R \"$SED_SEARCH_STRING\" \"$PKG_DIR\" | grep -v \"/gen/\" | xargs sed -i -E \"s#$SED_SEARCH_STRING.*\\$#$SED_REPLACE_STRING#g\"\n\nSED_SEARCH_STRING='// (.*) nvsandboxutils/nvsandboxutils.h:[0-9]+'\nSED_REPLACE_STRING='// \\1 nvsandboxutils/nvsandboxutils.h'\ngrep -l -RE \"$SED_SEARCH_STRING\" \"$PKG_DIR\" | grep -v \"/gen/\" | xargs sed -i -E \"s#$SED_SEARCH_STRING\\$#$SED_REPLACE_STRING#g\"\n\n"
  },
  {
    "path": "internal/nvsandboxutils/gen/nvsandboxutils/anonymous_structs.cocci",
    "content": "@patch@\ntype WRAPPER_TYPE;\nfield list FIELDS;\nidentifier V;\nexpression E;\nfresh identifier ST = \"nvSandboxUtilsGenerated_struct___\";\nfresh identifier TEMP_VAR = \"nvSandboxUtilsGenerated_variable___\" ## V;\n@@\n\n++ struct ST {\n++    WRAPPER_TYPE TEMP_VAR;\n++    FIELDS\n++ };\n+\n\nWRAPPER_TYPE\n{\n    ...\n(\n-    struct {\n-       FIELDS\n-   } V[E];\n+   struct ST V[E];\n\n|\n\n-    struct {\n-       FIELDS\n-   } V;\n+   struct ST V;\n)\n    ...\n};\n\n@capture@\ntype WRAPPER_TYPE;\nidentifier TEMP_VAR;\nidentifier ST =~ \"^nvSandboxUtilsGenerated_struct___\";\n@@\n\nstruct ST {\n  WRAPPER_TYPE TEMP_VAR;\n  ...\n};\n\n@script:python concat@\nWRAPPER_TYPE << capture.WRAPPER_TYPE;\nTEMP_VAR << capture.TEMP_VAR;\nST << capture.ST;\nT;\n@@\n\ndef removePrefix(string, prefix):\n    if string.startswith(prefix):\n        return string[len(prefix):]\n    return string\n\ndef removeSuffix(string, suffix):\n    if string.endswith(suffix):\n        return string[:-len(suffix)]\n    return string\n\nWRAPPER_TYPE = removeSuffix(WRAPPER_TYPE, \"_t\")\nTEMP_VAR = removePrefix(TEMP_VAR, \"nvSandboxUtilsGenerated_variable___\")\ncoccinelle.T = cocci.make_type(WRAPPER_TYPE + TEMP_VAR[0].upper() + TEMP_VAR[1:] + \"_t\")\n\n@add_typedef@\nidentifier capture.ST;\ntype concat.T;\ntype WRAPPER_TYPE;\nidentifier TEMP_VAR;\n@@\n\n- struct ST {\n+ typedef struct {\n- WRAPPER_TYPE TEMP_VAR;\n  ...\n- };\n+ } T;\n\n@update@\nidentifier capture.ST;\ntype concat.T;\nidentifier V;\nexpression E;\ntype WRAPPER_TYPE;\n@@\n\nWRAPPER_TYPE\n{\n    ...\n(\n-   struct ST V[E];\n+   T V[E];\n|\n-   struct ST V;\n+   T V;\n)\n    ...\n};\n"
  },
  {
    "path": "internal/nvsandboxutils/gen/nvsandboxutils/generateapi.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage main\n\nimport (\n\t\"flag\"\n\t\"fmt\"\n\t\"go/ast\"\n\t\"go/parser\"\n\t\"go/token\"\n\t\"io\"\n\t\"io/fs\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"slices\"\n\t\"sort\"\n\t\"strings\"\n\t\"unicode\"\n)\n\ntype GeneratableInterfacePoperties struct {\n\tType                      string\n\tInterface                 string\n\tExclude                   []string\n\tPackageMethodsAliasedFrom string\n}\n\nvar GeneratableInterfaces = []GeneratableInterfacePoperties{\n\t{\n\t\tType:                      \"library\",\n\t\tInterface:                 \"Interface\",\n\t\tPackageMethodsAliasedFrom: \"libnvsandboxutils\",\n\t},\n}\n\nfunc main() {\n\tsourceDir := flag.String(\"sourceDir\", \"\", \"Path to the source directory for all go files\")\n\toutput := flag.String(\"output\", \"\", \"Path to the output file (default: stdout)\")\n\tflag.Parse()\n\n\t// Check if required flags are provided\n\tif *sourceDir == \"\" {\n\t\tflag.Usage()\n\t\treturn\n\t}\n\n\twriter, closer, err := getWriter(*output)\n\tif err != nil {\n\t\tfmt.Printf(\"Error: %v\", err)\n\t\treturn\n\t}\n\tdefer func() {\n\t\t_ = closer()\n\t}()\n\n\theader, err := generateHeader()\n\tif err != nil {\n\t\tfmt.Printf(\"Error: %v\", err)\n\t\treturn\n\t}\n\tfmt.Fprint(writer, header)\n\n\tfor i, p := range GeneratableInterfaces {\n\t\tif p.PackageMethodsAliasedFrom != \"\" {\n\t\t\tcomment, err := generatePackageMethodsComment(p)\n\t\t\tif err != nil {\n\t\t\t\tfmt.Printf(\"Error: %v\", err)\n\t\t\t\treturn\n\t\t\t}\n\t\t\tfmt.Fprint(writer, comment)\n\n\t\t\toutput, err := generatePackageMethods(*sourceDir, p)\n\t\t\tif err != nil {\n\t\t\t\tfmt.Printf(\"Error: %v\", err)\n\t\t\t\treturn\n\t\t\t}\n\t\t\tfmt.Fprintf(writer, \"%s\\n\", output)\n\t\t}\n\n\t\tcomment, err := generateInterfaceComment(p)\n\t\tif err != nil {\n\t\t\tfmt.Printf(\"Error: %v\", err)\n\t\t\treturn\n\t\t}\n\t\tfmt.Fprint(writer, comment)\n\n\t\toutput, err := generateInterface(*sourceDir, p)\n\t\tif err != nil {\n\t\t\tfmt.Printf(\"Error: %v\", err)\n\t\t\treturn\n\t\t}\n\t\tfmt.Fprint(writer, output)\n\n\t\tif i < (len(GeneratableInterfaces) - 1) {\n\t\t\tfmt.Fprint(writer, \"\\n\")\n\t\t}\n\t}\n}\n\nfunc getWriter(outputFile string) (io.Writer, func() error, error) {\n\tif outputFile == \"\" {\n\t\treturn os.Stdout, func() error { return nil }, nil\n\t}\n\n\tfile, err := os.Create(outputFile)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\treturn file, file.Close, nil\n}\n\nfunc generateHeader() (string, error) {\n\tlines := []string{\n\t\t\"/**\",\n\t\t\"# Copyright 2024 NVIDIA CORPORATION\",\n\t\t\"#\",\n\t\t\"# Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\",\n\t\t\"# you may not use this file except in compliance with the License.\",\n\t\t\"# You may obtain a copy of the License at\",\n\t\t\"#\",\n\t\t\"#     http://www.apache.org/licenses/LICENSE-2.0\",\n\t\t\"#\",\n\t\t\"# Unless required by applicable law or agreed to in writing, software\",\n\t\t\"# distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\",\n\t\t\"# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\",\n\t\t\"# See the License for the specific language governing permissions and\",\n\t\t\"# limitations under the License.\",\n\t\t\"**/\",\n\t\t\"\",\n\t\t\"// Generated Code; DO NOT EDIT.\",\n\t\t\"\",\n\t\t\"package nvsandboxutils\",\n\t\t\"\",\n\t\t\"\",\n\t}\n\treturn strings.Join(lines, \"\\n\"), nil\n}\n\nfunc generatePackageMethodsComment(input GeneratableInterfacePoperties) (string, error) {\n\tcommentFmt := []string{\n\t\t\"// The variables below represent package level methods from the %s type.\",\n\t}\n\n\tsignature := &strings.Builder{}\n\tcomment := strings.Join(commentFmt, \"\\n\")\n\tcomment = fmt.Sprintf(comment, input.Type)\n\tfmt.Fprintf(signature, \"%s\\n\", comment)\n\treturn signature.String(), nil\n}\n\nfunc generateInterfaceComment(input GeneratableInterfacePoperties) (string, error) {\n\tcommentFmt := []string{\n\t\t\"// %s represents the interface for the %s type.\",\n\t\t\"//\",\n\t\t\"//go:generate moq -rm -fmt=goimports -out mock/%s.go -pkg mock . %s:%s\",\n\t}\n\n\tsignature := &strings.Builder{}\n\tcomment := strings.Join(commentFmt, \"\\n\")\n\tcomment = fmt.Sprintf(comment, input.Interface, input.Type, strings.ToLower(input.Interface), input.Interface, input.Interface)\n\tfmt.Fprintf(signature, \"%s\\n\", comment)\n\treturn signature.String(), nil\n}\n\nfunc generatePackageMethods(sourceDir string, input GeneratableInterfacePoperties) (string, error) {\n\tsignature := &strings.Builder{}\n\n\tfmt.Fprintf(signature, \"var (\\n\")\n\n\tmethods, err := extractMethodsFromPackage(sourceDir, input)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tfor _, method := range methods {\n\t\tname := method.Name.Name\n\t\tfmt.Fprintf(signature, \"\\t%s = %s.%s\\n\", name, input.PackageMethodsAliasedFrom, name)\n\t}\n\n\tfmt.Fprintf(signature, \")\\n\")\n\n\treturn signature.String(), nil\n}\n\nfunc generateInterface(sourceDir string, input GeneratableInterfacePoperties) (string, error) {\n\tsignature := &strings.Builder{}\n\n\tfmt.Fprintf(signature, \"type %s interface {\\n\", input.Interface)\n\n\tmethods, err := extractMethodsFromPackage(sourceDir, input)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tfor _, method := range methods {\n\t\tfmt.Fprintf(signature, \"\\t%s\\n\", formatMethodSignature(method))\n\t}\n\n\tfmt.Fprintf(signature, \"}\\n\")\n\n\treturn signature.String(), nil\n}\n\nfunc getGoFiles(sourceDir string) (map[string][]byte, error) {\n\tgofiles := make(map[string][]byte)\n\n\terr := filepath.WalkDir(sourceDir, func(path string, d fs.DirEntry, err error) error {\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif d.IsDir() || filepath.Ext(path) != \".go\" {\n\t\t\treturn nil\n\t\t}\n\n\t\t//nolint:gosec  // Since we are only using this during code generation\n\t\t// we are not concerned with possible TOUTOC race conditions.\n\t\tcontent, err := os.ReadFile(path)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tgofiles[path] = content\n\n\t\treturn nil\n\t})\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"walking %s: %w\", sourceDir, err)\n\t}\n\n\treturn gofiles, nil\n}\n\nfunc extractMethodsFromPackage(sourceDir string, input GeneratableInterfacePoperties) ([]*ast.FuncDecl, error) {\n\tgofiles, err := getGoFiles(sourceDir)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar methods []*ast.FuncDecl\n\tfor file, content := range gofiles {\n\t\tm, err := extractMethods(file, content, input)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tmethods = append(methods, m...)\n\t}\n\n\tsort.Slice(methods, func(i, j int) bool {\n\t\treturn methods[i].Name.Name < methods[j].Name.Name\n\t})\n\n\treturn methods, nil\n}\n\nfunc extractMethods(sourceFile string, sourceContent []byte, input GeneratableInterfacePoperties) ([]*ast.FuncDecl, error) {\n\t// Parse source file\n\tfset := token.NewFileSet()\n\tnode, err := parser.ParseFile(fset, sourceFile, sourceContent, parser.ParseComments)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Traverse AST to find type declarations and associated methods\n\tvar methods []*ast.FuncDecl\n\tfor _, decl := range node.Decls {\n\t\tfuncDecl, ok := decl.(*ast.FuncDecl)\n\t\tif !ok {\n\t\t\tcontinue\n\t\t}\n\n\t\t// Check if the function is a method associated with the specified type\n\t\tif receiverType := funcDecl.Recv; receiverType != nil {\n\t\t\tvar ident *ast.Ident\n\n\t\t\tfor _, field := range receiverType.List {\n\t\t\t\tswitch fieldType := field.Type.(type) {\n\t\t\t\tcase *ast.Ident:\n\t\t\t\t\tident = fieldType\n\t\t\t\tcase *ast.StarExpr:\n\t\t\t\t\t// Update ident if it's a *ast.StarExpr\n\t\t\t\t\tif newIdent, ok := fieldType.X.(*ast.Ident); ok {\n\t\t\t\t\t\t// If the inner type is an *ast.Ident, update ident\n\t\t\t\t\t\tident = newIdent\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// No identifier found\n\t\t\t\tif ident == nil {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\t// Identifier is not the one we are looking for\n\t\t\t\tif ident.Name != input.Type {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\t// Ignore non-public methods\n\t\t\t\tif !isPublic(funcDecl.Name.Name) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\t// Ignore method in the exclude list\n\t\t\t\tif slices.Contains(input.Exclude, funcDecl.Name.Name) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tmethods = append(methods, funcDecl)\n\t\t\t}\n\t\t}\n\t}\n\n\treturn methods, nil\n}\n\nfunc formatMethodSignature(decl *ast.FuncDecl) string {\n\tsignature := &strings.Builder{}\n\n\t// Write method name\n\tfmt.Fprint(signature, decl.Name.Name)\n\tfmt.Fprintf(signature, \"(\")\n\n\t// Write parameters\n\tif decl.Type.Params != nil {\n\t\tfor i, param := range decl.Type.Params.List {\n\t\t\tif i > 0 {\n\t\t\t\tfmt.Fprintf(signature, \", \")\n\t\t\t}\n\t\t\tfmt.Fprint(signature, formatFieldList(param))\n\t\t}\n\t}\n\n\tfmt.Fprintf(signature, \")\")\n\n\t// Write return types\n\tif decl.Type.Results != nil {\n\t\tfmt.Fprintf(signature, \" \")\n\t\tif len(decl.Type.Results.List) > 1 {\n\t\t\tfmt.Fprintf(signature, \"(\")\n\t\t}\n\t\tfor i, result := range decl.Type.Results.List {\n\t\t\tif i > 0 {\n\t\t\t\tfmt.Fprintf(signature, \", \")\n\t\t\t}\n\t\t\tfmt.Fprint(signature, formatFieldList(result))\n\t\t}\n\t\tif len(decl.Type.Results.List) > 1 {\n\t\t\tfmt.Fprintf(signature, \")\")\n\t\t}\n\t}\n\n\treturn signature.String()\n}\n\nfunc formatFieldList(field *ast.Field) string {\n\tbuilder := &strings.Builder{}\n\tswitch fieldType := field.Type.(type) {\n\tcase *ast.Ident:\n\t\tfmt.Fprint(builder, fieldType.Name)\n\tcase *ast.ArrayType:\n\t\tfmt.Fprintf(builder, \"[]\")\n\t\tfmt.Fprint(builder, formatFieldList(&ast.Field{Type: fieldType.Elt}))\n\tcase *ast.StarExpr:\n\t\tfmt.Fprintf(builder, \"*\")\n\t\tfmt.Fprint(builder, formatFieldList(&ast.Field{Type: fieldType.X}))\n\t}\n\treturn builder.String()\n}\n\nfunc isPublic(name string) bool {\n\tif len(name) == 0 {\n\t\treturn false\n\t}\n\treturn unicode.IsUpper([]rune(name)[0])\n}\n"
  },
  {
    "path": "internal/nvsandboxutils/gen/nvsandboxutils/nvsandboxutils.h",
    "content": "/*\n * SPDX-FileCopyrightText: Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#ifndef __NVSANDBOXUTILS_H__\n#define __NVSANDBOXUTILS_H__\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#define INPUT_LENGTH 256\n#define MAX_FILE_PATH 256\n#define MAX_NAME_LENGTH 256\n\n/***************************************************************************************************/\n/** @defgroup enums Enumerations\n *  @{\n */\n/***************************************************************************************************/\n\n/**\n * Return types\n */\ntypedef enum\n{\n    NVSANDBOXUTILS_SUCCESS                              = 0,         //!< The operation was successful\n    NVSANDBOXUTILS_ERROR_UNINITIALIZED                  = 1,         //!< The library wasn't successfully initialized\n    NVSANDBOXUTILS_ERROR_NOT_SUPPORTED                  = 2,         //!< The requested operation is not supported on target device\n    NVSANDBOXUTILS_ERROR_INVALID_ARG                    = 3,         //!< A supplied argument is invalid\n    NVSANDBOXUTILS_ERROR_INSUFFICIENT_SIZE              = 4,         //!< A supplied argument is not large enough\n    NVSANDBOXUTILS_ERROR_VERSION_NOT_SUPPORTED          = 5,         //!< Requested library version is not supported\n    NVSANDBOXUTILS_ERROR_LIBRARY_LOAD                   = 6,         //!< The library load failed\n    NVSANDBOXUTILS_ERROR_FUNCTION_NOT_FOUND             = 7,         //!< Called function was not found\n    NVSANDBOXUTILS_ERROR_DEVICE_NOT_FOUND               = 8,         //!< Target device was not found\n    NVSANDBOXUTILS_ERROR_NVML_LIB_CALL                  = 9,         //!< NVML library call failed\n    NVSANDBOXUTILS_ERROR_OUT_OF_MEMORY                  = 10,        //!< There is insufficient memory\n    NVSANDBOXUTILS_ERROR_FILEPATH_NOT_FOUND             = 11,        //!< A supplied file path was not found\n    NVSANDBOXUTILS_ERROR_UNKNOWN                        = 0xFFFF,    //!< Unknown error occurred\n} nvSandboxUtilsRet_t;\n\n/**\n * Return if there is an error \n */\n#define RETURN_ON_SANDBOX_ERROR(result) \\\n    if ((result) != NVSANDBOXUTILS_SUCCESS) { \\\n        NVSANDBOXUTILS_ERROR_MSG(\"%s %d result=%d\", __func__, __LINE__, result); \\\n        return result; \\\n    }\n\n/**\n * Log levels\n */\ntypedef enum\n{\n    NVSANDBOXUTILS_LOG_LEVEL_FATAL         = 0,                       //!< Log fatal errors\n    NVSANDBOXUTILS_LOG_LEVEL_ERROR         = 1,                       //!< Log all errors\n    NVSANDBOXUTILS_LOG_LEVEL_WARN          = 2,                       //!< Log all warnings\n    NVSANDBOXUTILS_LOG_LEVEL_DEBUG         = 3,                       //!< Log all debug messages\n    NVSANDBOXUTILS_LOG_LEVEL_INFO          = 4,                       //!< Log all info messages\n    NVSANDBOXUTILS_LOG_LEVEL_NONE          = 0xFFFF,                  //!< Log none\n} nvSandboxUtilsLogLevel_t;\n\n/**\n * Input rootfs to help access files inside the driver container\n */ \ntypedef enum\n{\n    NV_ROOTFS_DEFAULT,                                               //!< Default no rootfs \n    NV_ROOTFS_PATH,                                                  //!< /run/nvidia/driver\n    NV_ROOTFS_PID,                                                   //!< /proc/PID/mountinfo\n} nvSandboxUtilsRootfsInputType_t;\n\n/**\n * File type\n */\ntypedef enum\n{\n    NV_DEV,                                                          //!< /dev file system\n    NV_PROC,                                                         //!< /proc file system\n    NV_SYS,                                                          //!< /sys file system\n} nvSandboxUtilsFileType_t;\n\n/**\n * File subtype  \n */\ntypedef enum\n{\n    NV_DEV_NVIDIA,                                                   //!< /dev/nvidia0\n    NV_DEV_DRI_CARD,                                                 //!< /dev/dri/card1\n    NV_DEV_DRI_RENDERD,                                              //!< /dev/dri/renderD128\n    NV_DEV_DRI_CARD_SYMLINK,                                         //!< /dev/dri/by-path/pci-0000:41:00.0-card\n    NV_DEV_DRI_RENDERD_SYMLINK,                                      //!< /dev/dri/by-path/pci-0000:41:00.0-render\n    NV_DEV_NVIDIA_UVM,                                               //!< /dev/nvidia-uvm\n    NV_DEV_NVIDIA_UVM_TOOLS,                                         //!< /dev/nvidia-uvm-tools\n    NV_DEV_NVIDIA_MODESET,                                           //!< /dev/nvidia-uvm-modeset\n    NV_DEV_NVIDIA_CTL,                                               //!< /dev/nvidiactl\n    NV_DEV_GDRDRV,                                                   //!< /dev/gdrdrv\n    NV_DEV_NVIDIA_CAPS_NVIDIA_CAP,                                   //!< /dev/nvidia-caps/nvidia-cap22\n    NV_PROC_DRIVER_NVIDIA_GPUS_PCIBUSID,                             //!< /proc/driver/nvidia/gpus/0000:2d:00.0\n    NV_PROC_DRIVER_NVIDIA_GPUS,                                      //!< /proc/driver/nvidia/gpus (for mask out)\n    NV_PROC_NVIDIA_PARAMS,                                           //!< /proc/driver/nvidia/params\n    NV_PROC_NVIDIA_CAPS_MIG_MINORS,                                  //!< /proc/driver/nvidia-caps/mig-minors\n    NV_PROC_DRIVER_NVIDIA_CAPABILITIES_GPU,                          //!< /proc/driver/nvidia/capabilities/gpu0\n    NV_PROC_DRIVER_NVIDIA_CAPABILITIES,                              //!< /proc/driver/nvidia/capabilities (for mask out)\n    NV_PROC_DRIVER_NVIDIA_CAPABILITIIES_GPU_MIG_CI_ACCESS,           //!< proc/driver/nvidia/capabilities/gpu0/mig/gi2/ci0/access\n    NV_SYS_MODULE_NVIDIA_DRIVER_PCIBUSID,                            //!< /sys/module/nvidia/drivers/pci:nvidia/0000:2d:00.0\n    NV_SYS_MODULE_NVIDIA_DRIVER,                                     //!< /sys/module/nvidia/drivers/pci:nvidia (for mask out)\n    NV_NUM_SUBTYPE, // always at the end.\n} nvSandboxUtilsFileSystemSubType_t;\n\n/**\n * File module\n */\ntypedef enum\n{\n    NV_GPU,                                                           //!< Target device\n    NV_MIG,                                                           //!< Target device- MIG\n    NV_DRIVER_NVIDIA,                                                 //!< NVIDIA kernel driver\n    NV_DRIVER_NVIDIA_UVM,                                             //!< NVIDIA kernel driver-UVM\n    NV_DRIVER_NVIDIA_MODESET,                                         //!< NVIDIA kernel driver-modeset\n    NV_DRIVER_GDRDRV,                                                 //!< GDRDRV driver\n    NV_SYSTEM,                                                        //!< System module\n} nvSandboxUtilsFileModule_t;\n\n/**\n * Flag to provide additional details about the file\n */\ntypedef enum\n{\n    NV_FILE_FLAG_HINT            = (1 << 0),                         //!< Default no hint\n    NV_FILE_FLAG_MASKOUT         = (1 << 1),                         //!< For /proc/driver/nvidia/gpus\n    NV_FILE_FLAG_CONTENT         = (1 << 2),                         //!< For /proc/driver/nvidia/params\n                                                                     //!< For SYMLINK\n                                                                     //!< Use \\p nvSandboxUtilsGetFileContent to get name of the linked file\n    NV_FILE_FLAG_DEPRECTATED     = (1 << 3),                         //!< For all the FIRMWARE GSP file\n    NV_FILE_FLAG_CANDIDATES      = (1 << 4),                         //!< For libcuda.so\n} nvSandboxUtilsFileFlag_t;\n\n/**\n * Input type of the target device\n */\ntypedef enum\n{\n    NV_GPU_INPUT_GPU_UUID,                                           //!< GPU UUID\n    NV_GPU_INPUT_MIG_UUID,                                           //!< MIG UUID\n    NV_GPU_INPUT_PCI_ID,                                             //!< PCIe DBDF ID\n    NV_GPU_INPUT_PCI_INDEX,                                          //!< PCIe bus order (0 points to the GPU that has lowest PCIe BDF)\n} nvSandboxUtilsGpuInputType_t;\n\n/** @} */\n\n/***************************************************************************************************/\n/** @defgroup dataTypes Structures and Unions\n *  @{\n */\n/***************************************************************************************************/\n\n/**\n * Initalization input v1\n */\ntypedef struct\n{\n    unsigned int version;                                            //!< Version for the structure\n    nvSandboxUtilsRootfsInputType_t type;                            //!< One of \\p nvSandboxUtilsRootfsInputType_t\n    char value[INPUT_LENGTH];                                        //!< String representation of input\n} nvSandboxUtilsInitInput_v1_t;\n\ntypedef nvSandboxUtilsInitInput_v1_t nvSandboxUtilsInitInput_t;\n\n/**\n * File system information \n */\ntypedef struct nvSandboxUtilsGpuFileInfo_v1_t\n{\n    struct nvSandboxUtilsGpuFileInfo_v1_t *next;                     //!< Pointer to the next node in the linked list\n    nvSandboxUtilsFileType_t fileType;                               //!< One of \\p nvSandboxUtilsFileType_t\n    nvSandboxUtilsFileSystemSubType_t fileSubType;                   //!< One of \\p nvSandboxUtilsFileSystemSubType_t\n    nvSandboxUtilsFileModule_t module;                               //!< One of \\p nvSandboxUtilsFileModule_t\n    nvSandboxUtilsFileFlag_t flags;                                  //!< One of \\p nvSandboxUtilsFileFlag_t\n    char *filePath;                                                  //!< Relative file path to rootfs\n}nvSandboxUtilsGpuFileInfo_v1_t;\n\n/**\n * GPU resource request v1\n */\ntypedef struct\n{\n     unsigned int version;                                           //!< Version for the structure\n     nvSandboxUtilsGpuInputType_t inputType;                         //!< One of \\p nvSandboxUtilsGpuInputType_t\n     char input[INPUT_LENGTH];                                       //!< String representation of input\n     nvSandboxUtilsGpuFileInfo_v1_t *files;                          //!< Linked list of \\ref nvSandboxUtilsGpuFileInfo_v1_t\n} nvSandboxUtilsGpuRes_v1_t;\n\ntypedef nvSandboxUtilsGpuRes_v1_t nvSandboxUtilsGpuRes_t;\n\n/** @} */\n\n/***************************************************************************************************/\n/** @defgroup funcs Functions\n *  @{\n */\n/***************************************************************************************************/\n\n/* *************************************************\n * Initialize library\n * *************************************************\n */\n/**\n * Prepare library resources before library API can be used.\n * This initialization will not fail if one of the initialization prerequisites fails.\n * @param           input  Reference to the called-supplied input struct that has initialization fields  \n *\n * @returns         @ref NVSANDBOXUTILS_SUCCESS                      on success\n * @returns         @ref NVSANDBOXUTILS_ERROR_INVALID_ARG            if \\p input->value isn't a valid rootfs path\n * @returns         @ref NVSANDBOXUTILS_ERROR_VERSION_NOT_SUPPORTED  if \\p input->version isn't supported by the library\n * @returns         @ref NVSANDBOXUTILS_ERROR_FILEPATH_NOT_FOUND     if any of the required file paths are not found during initialization\n * @returns         @ref NVSANDBOXUTILS_ERROR_OUT_OF_MEMORY          if there is insufficient system memory during initialization\n * @returns         @ref NVSANDBOXUTILS_ERROR_LIBRARY_LOAD           on any error during loading the library\n */\nnvSandboxUtilsRet_t nvSandboxUtilsInit(nvSandboxUtilsInitInput_t *input);\n\n/* *************************************************\n * Shutdown library\n * *************************************************\n */\n/**\n * Clean up library resources created by init call\n *\n * @returns         @ref NVSANDBOXUTILS_SUCCESS                      on success\n */\nnvSandboxUtilsRet_t nvSandboxUtilsShutdown(void);\n\n/* *************************************************\n * Get NVIDIA RM driver version\n * *************************************************\n */\n/**\n * Get NVIDIA RM driver version\n * @param           version  Reference to caller-supplied buffer to return driver version string\n * @param           length   The maximum allowed length of the string returned in \\p version\n *\n * @returns         @ref NVSANDBOXUTILS_SUCCESS                      on success\n * @returns         @ref NVSANDBOXUTILS_ERROR_INVALID_ARG            if \\p version is NULL\n * @returns         @ref NVSANDBOXUTILS_ERROR_NVML_LIB_CALL          on any error during driver version query from NVML\n */\nnvSandboxUtilsRet_t nvSandboxUtilsGetDriverVersion(char *version, unsigned int length);\n\n/* *************************************************\n * Get /dev, /proc, /sys file system information\n * *************************************************\n */\n/**\n * Get /dev, /proc, /sys file system information\n * @param           request  Reference to caller-supplied request struct to return the file system information \n *\n * @returns         @ref NVSANDBOXUTILS_SUCCESS                      on success\n * @returns         @ref NVSANDBOXUTILS_ERROR_INVALID_ARG            if \\p request->input doesn't match any device\n * @returns         @ref NVSANDBOXUTILS_ERROR_VERSION_NOT_SUPPORTED  if \\p request->version isn't supported by the library\n */\nnvSandboxUtilsRet_t nvSandboxUtilsGetGpuResource(nvSandboxUtilsGpuRes_t *request);\n\n/* *************************************************\n * Get content of given file path\n * *************************************************\n */\n/**\n * Get file content of input file path\n * @param           filePath     Reference to the file path\n * @param           content      Reference to the caller-supplied buffer to return the file content\n * @param           contentSize  Reference to the maximum allowed size of content. It is updated to the actual size of the content on return\n *\n * @returns         @ref NVSANDBOXUTILS_SUCCESS                      on success\n * @returns         @ref NVSANDBOXUTILS_ERROR_INVALID_ARG            if \\p filePath or \\p content is NULL\n * @returns         @ref NVSANDBOXUTILS_ERROR_INSUFFICIENT_SIZE      if \\p contentSize is too small\n * @returns         @ref NVSANDBOXUTILS_ERROR_FILEPATH_NOT_FOUND     on an error while obtaining the content for the file path\n */\nnvSandboxUtilsRet_t nvSandboxUtilsGetFileContent(char *filePath, char *content, unsigned int *contentSize);\n\n/** @} */\n\n#ifdef __cplusplus\n}\n#endif\n#endif // __NVSANDBOXUTILS_H__\n"
  },
  {
    "path": "internal/nvsandboxutils/gen/nvsandboxutils/nvsandboxutils.yml",
    "content": "# Copyright (c) 2024, NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n---\nGENERATOR:\n  PackageName: nvsandboxutils\n  PackageDescription: \"Package NVSANDBOXUTILS bindings\"\n  PackageLicense: |-\n    Copyright (c) 2024, NVIDIA CORPORATION\n\n    Licensed under the Apache License, Version 2.0 (the \"License\");\n    you may not use this file except in compliance with the License.\n    You may obtain a copy of the License at\n\n        http://www.apache.org/licenses/LICENSE-2.0\n\n    Unless required by applicable law or agreed to in writing, software\n    distributed under the License is distributed on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    See the License for the specific language governing permissions and\n    limitations under the License.\n  Includes: [\"nvsandboxutils.h\"]\n  FlagGroups:\n    - {name: \"LDFLAGS\", traits: [\"linux\"], flags: [\"-Wl,--export-dynamic\",\"-Wl,--unresolved-symbols=ignore-in-object-files\"]}\n    - {name: \"LDFLAGS\", traits: [\"darwin\"], flags: [\"-Wl,-undefined,dynamic_lookup\"]}\nPARSER:\n  SourcesPaths: [\"nvsandboxutils.h\"]\nTRANSLATOR:\n  ConstRules:\n    defines: eval\n    enum: eval\n  PtrTips:\n    function:\n      - {target: \"^nvSandboxUtils\", default: \"sref\"}\n  MemTips:\n    - {target: \"^nvSandboxUtils\", default: \"raw\"}\n  Rules:\n    const:\n      - {action: accept, from: \"^NVSANDBOXUTILS_\"}\n      - {action: accept, from: \"^nvSandboxUtils\"}\n      - {action: replace, from: \"^NVSANDBOXUTILS_\"}\n      - {action: replace, from: \"^nvSandboxUtils\"}\n      - {action: accept, from: \"^NV\"}\n      - {action: accept, from: \"^MAX\"}\n      - {action: accept, from: \"^INPUT\"}\n      - {action: replace, from: \"_t$\"}\n      - {transform: export}\n    type:\n      - {action: accept, from: \"^nvSandboxUtils\"}\n      - {action: replace, from: \"^nvSandboxUtils\"}\n      - {action: replace, from: \"_t$\"}\n      - {transform: export}\n    function:\n      - {action: accept, from: \"^nvSandboxUtils\"}\n      - {transform: unexport}\n"
  },
  {
    "path": "internal/nvsandboxutils/gen/update-bindings.sh",
    "content": "#!/bin/bash\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# This file allows for the nvsandboxutils bindings to be updated using the tooling\n# implemented in https://github.com/NVIDIA/go-nvml.\n# To run this:\n#   cd internal/nvsandboxutils\n#   ./update-bindings.sh\n\nset -e\n\nBUILDIMAGE=bindings\n\ndocker build \\\n    --build-arg GOLANG_VERSION=1.22.1 \\\n    --build-arg C_FOR_GO_TAG=8eeee8c3b71f9c3c90c4a73db54ed08b0bba971d \\\n    -t ${BUILDIMAGE} \\\n    -f docker/Dockerfile.devel \\\n    https://github.com/NVIDIA/go-nvml.git\n\n\ndocker run --rm -ti \\\n\t\t-e GOCACHE=/tmp/.cache/go \\\n\t\t-e GOMODCACHE=/tmp/.cache/gomod \\\n    -v $(pwd):/nvsandboxutils \\\n    -w /nvsandboxutils \\\n    -u $(id -u):$(id -g) \\\n    ${BUILDIMAGE} \\\n    ./gen/generate-bindings.sh\n"
  },
  {
    "path": "internal/nvsandboxutils/gpu-resources.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage nvsandboxutils\n\nimport (\n\t\"strings\"\n\t\"unsafe\"\n)\n\nimport \"C\"\n\ntype GpuResource struct {\n\tVersion uint32\n}\n\ntype GpuFileInfo struct {\n\tPath    string\n\tType    FileType\n\tSubType FileSystemSubType\n\tModule  FileModule\n\tFlags   FileFlag\n}\n\nfunc (l *library) GetGpuResource(uuid string) ([]GpuFileInfo, Ret) {\n\tdeviceType := NV_GPU_INPUT_GPU_UUID\n\tif strings.HasPrefix(uuid, \"MIG-\") {\n\t\tdeviceType = NV_GPU_INPUT_MIG_UUID\n\t}\n\n\trequest := GpuRes{\n\t\tVersion:   1,\n\t\tInputType: uint32(deviceType),\n\t\tInput:     convertStringToFixedArray(uuid),\n\t}\n\n\tret := nvSandboxUtilsGetGpuResource(&request)\n\tif ret != SUCCESS {\n\t\treturn nil, ret\n\t}\n\n\tvar fileInfos []GpuFileInfo\n\tfor fileInfo := request.Files; fileInfo != nil; fileInfo = fileInfo.Next {\n\t\tfi := GpuFileInfo{\n\t\t\tPath:    C.GoString((*C.char)(unsafe.Pointer(fileInfo.FilePath))),\n\t\t\tType:    FileType(fileInfo.FileType),\n\t\t\tSubType: FileSystemSubType(fileInfo.FileSubType),\n\t\t\tModule:  FileModule(fileInfo.Module),\n\t\t\tFlags:   FileFlag(fileInfo.Flags),\n\t\t}\n\t\tfileInfos = append(fileInfos, fi)\n\t}\n\treturn fileInfos, SUCCESS\n}\n"
  },
  {
    "path": "internal/nvsandboxutils/impl.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage nvsandboxutils\n\nimport \"C\"\n\nfunc (l *library) Init(path string) Ret {\n\tif err := l.load(); err != nil {\n\t\treturn ERROR_LIBRARY_LOAD\n\t}\n\n\tinput := InitInput{\n\t\tVersion: 1,\n\t\tType:    uint32(NV_ROOTFS_PATH),\n\t\tValue:   convertStringToFixedArray(path),\n\t}\n\n\treturn nvSandboxUtilsInit(&input)\n}\n\nfunc (l *library) Shutdown() Ret {\n\tret := nvSandboxUtilsShutdown()\n\tif ret != SUCCESS {\n\t\treturn ret\n\t}\n\n\terr := l.close()\n\tif err != nil {\n\t\treturn ERROR_UNKNOWN\n\t}\n\n\treturn ret\n}\n\n// TODO: Is this length specified in the header file?\nconst VERSION_LENGTH = 100\n\nfunc (l *library) GetDriverVersion() (string, Ret) {\n\tVersion := make([]byte, VERSION_LENGTH)\n\tret := nvSandboxUtilsGetDriverVersion(&Version[0], VERSION_LENGTH)\n\treturn string(Version[:clen(Version)]), ret\n}\n\nfunc (l *library) GetFileContent(path string) (string, Ret) {\n\tContent := make([]byte, MAX_FILE_PATH)\n\tFilePath := []byte(path + string(byte(0)))\n\tSize := uint32(MAX_FILE_PATH)\n\tret := nvSandboxUtilsGetFileContent(&FilePath[0], &Content[0], &Size)\n\treturn string(Content[:clen(Content)]), ret\n}\n"
  },
  {
    "path": "internal/nvsandboxutils/lib.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage nvsandboxutils\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"sync\"\n\n\t\"github.com/NVIDIA/go-nvml/pkg/dl\"\n)\n\nconst (\n\tdefaultNvSandboxUtilsLibraryName      = \"libnvidia-sandboxutils.so.1\"\n\tdefaultNvSandboxUtilsLibraryLoadFlags = dl.RTLD_LAZY | dl.RTLD_GLOBAL\n)\n\nvar errLibraryNotLoaded = errors.New(\"library not loaded\")\nvar errLibraryAlreadyLoaded = errors.New(\"library already loaded\")\n\n// dynamicLibrary is an interface for abstacting the underlying library.\n// This also allows for mocking and testing.\n\n//go:generate moq -rm -fmt=goimports -stub -out dynamicLibrary_mock.go . dynamicLibrary\ntype dynamicLibrary interface {\n\tLookup(string) error\n\tOpen() error\n\tClose() error\n}\n\n// library represents an nvsandboxutils library.\n// This includes a reference to the underlying DynamicLibrary\ntype library struct {\n\tsync.Mutex\n\tpath     string\n\trefcount refcount\n\tdl       dynamicLibrary\n}\n\n// libnvsandboxutils is a global instance of the nvsandboxutils library.\nvar libnvsandboxutils = newLibrary()\n\nfunc New(opts ...LibraryOption) Interface {\n\treturn newLibrary(opts...)\n}\n\nfunc newLibrary(opts ...LibraryOption) *library {\n\tl := &library{}\n\tl.init(opts...)\n\treturn l\n}\n\nfunc (l *library) init(opts ...LibraryOption) {\n\to := libraryOptions{}\n\tfor _, opt := range opts {\n\t\topt(&o)\n\t}\n\n\tif o.path == \"\" {\n\t\to.path = defaultNvSandboxUtilsLibraryName\n\t}\n\tif o.flags == 0 {\n\t\to.flags = defaultNvSandboxUtilsLibraryLoadFlags\n\t}\n\n\tl.path = o.path\n\tl.dl = dl.New(o.path, o.flags)\n}\n\n// LookupSymbol checks whether the specified library symbol exists in the library.\n// Note that this requires that the library be loaded.\nfunc (l *library) LookupSymbol(name string) error {\n\tif l == nil || l.refcount == 0 {\n\t\treturn fmt.Errorf(\"error looking up %s: %w\", name, errLibraryNotLoaded)\n\t}\n\treturn l.dl.Lookup(name)\n}\n\n// load initializes the library and updates the versioned symbols.\n// Multiple calls to an already loaded library will return without error.\nfunc (l *library) load() (rerr error) {\n\tl.Lock()\n\tdefer l.Unlock()\n\n\tdefer func() { l.refcount.IncOnNoError(rerr) }()\n\tif l.refcount > 0 {\n\t\treturn nil\n\t}\n\n\tif err := l.dl.Open(); err != nil {\n\t\treturn fmt.Errorf(\"error opening %s: %w\", l.path, err)\n\t}\n\n\t// Update the errorStringFunc to point to nvsandboxutils.ErrorString\n\terrorStringFunc = nvsanboxutilsErrorString\n\n\t// Update all versioned symbols\n\tl.updateVersionedSymbols()\n\n\treturn nil\n}\n\n// close the underlying library and ensure that the global pointer to the\n// library is set to nil to ensure that subsequent calls to open will reinitialize it.\n// Multiple calls to an already closed nvsandboxutils library will return without error.\nfunc (l *library) close() (rerr error) {\n\tl.Lock()\n\tdefer l.Unlock()\n\n\tdefer func() { l.refcount.DecOnNoError(rerr) }()\n\tif l.refcount != 1 {\n\t\treturn nil\n\t}\n\n\tif err := l.dl.Close(); err != nil {\n\t\treturn fmt.Errorf(\"error closing %s: %w\", l.path, err)\n\t}\n\n\t// Update the errorStringFunc to point to defaultErrorStringFunc\n\terrorStringFunc = defaultErrorStringFunc\n\n\treturn nil\n}\n\n// Default all versioned APIs to v1 (to infer the types)\nvar (\n// Insert default versions for APIs here.\n// Example:\n// nvsandboxUtilsFunction = nvsandboxUtilsFunction_v1\n)\n\n// updateVersionedSymbols checks for versioned symbols in the loaded dynamic library.\n// If newer versioned symbols exist, these replace the default `v1` symbols initialized above.\n// When new versioned symbols are added, these would have to be initialized above and have\n// corresponding checks and subsequent assignments added below.\nfunc (l *library) updateVersionedSymbols() {\n\t// Example:\n\t// err := l.dl.Lookup(\"nvsandboxUtilsFunction_v2\")\n\t// if err == nil {\n\t// \tnvsandboxUtilsFunction = nvsandboxUtilsFunction_v2\n\t// }\n}\n"
  },
  {
    "path": "internal/nvsandboxutils/lib_test.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage nvsandboxutils\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc newTestLibrary(dl dynamicLibrary) *library {\n\treturn &library{dl: dl}\n}\n\nfunc TestLookupFromDefault(t *testing.T) {\n\terrClose := errors.New(\"close error\")\n\terrOpen := errors.New(\"open error\")\n\terrLookup := errors.New(\"lookup error\")\n\n\ttestCases := []struct {\n\t\tdescription          string\n\t\tdl                   dynamicLibrary\n\t\tskipLoadLibrary      bool\n\t\texpectedLoadError    error\n\t\texpectedLookupErrror error\n\t\texpectedCloseError   error\n\t}{\n\t\t{\n\t\t\tdescription:          \"library not loaded yields error\",\n\t\t\tdl:                   &dynamicLibraryMock{},\n\t\t\tskipLoadLibrary:      true,\n\t\t\texpectedLookupErrror: errLibraryNotLoaded,\n\t\t},\n\t\t{\n\t\t\tdescription: \"open error is returned\",\n\t\t\tdl: &dynamicLibraryMock{\n\t\t\t\tOpenFunc: func() error {\n\t\t\t\t\treturn errOpen\n\t\t\t\t},\n\t\t\t},\n\n\t\t\texpectedLoadError:    errOpen,\n\t\t\texpectedLookupErrror: errLibraryNotLoaded,\n\t\t},\n\t\t{\n\t\t\tdescription: \"lookup error is returned\",\n\t\t\tdl: &dynamicLibraryMock{\n\t\t\t\tOpenFunc: func() error {\n\t\t\t\t\treturn nil\n\t\t\t\t},\n\t\t\t\tLookupFunc: func(s string) error {\n\t\t\t\t\treturn fmt.Errorf(\"%w: %s\", errLookup, s)\n\t\t\t\t},\n\t\t\t\tCloseFunc: func() error {\n\t\t\t\t\treturn nil\n\t\t\t\t},\n\t\t\t},\n\n\t\t\texpectedLookupErrror: errLookup,\n\t\t},\n\t\t{\n\t\t\tdescription: \"lookup succeeds\",\n\t\t\tdl: &dynamicLibraryMock{\n\t\t\t\tOpenFunc: func() error {\n\t\t\t\t\treturn nil\n\t\t\t\t},\n\t\t\t\tLookupFunc: func(s string) error {\n\t\t\t\t\treturn nil\n\t\t\t\t},\n\t\t\t\tCloseFunc: func() error {\n\t\t\t\t\treturn nil\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"lookup succeeds\",\n\t\t\tdl: &dynamicLibraryMock{\n\t\t\t\tOpenFunc: func() error {\n\t\t\t\t\treturn nil\n\t\t\t\t},\n\t\t\t\tLookupFunc: func(s string) error {\n\t\t\t\t\treturn nil\n\t\t\t\t},\n\t\t\t\tCloseFunc: func() error {\n\t\t\t\t\treturn nil\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"close error is returned\",\n\t\t\tdl: &dynamicLibraryMock{\n\t\t\t\tOpenFunc: func() error {\n\t\t\t\t\treturn nil\n\t\t\t\t},\n\t\t\t\tLookupFunc: func(s string) error {\n\t\t\t\t\treturn nil\n\t\t\t\t},\n\t\t\t\tCloseFunc: func() error {\n\t\t\t\t\treturn errClose\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedCloseError: errClose,\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\tl := newTestLibrary(tc.dl)\n\t\t\tif !tc.skipLoadLibrary {\n\t\t\t\trequire.ErrorIs(t, l.load(), tc.expectedLoadError)\n\t\t\t}\n\t\t\trequire.ErrorIs(t, l.LookupSymbol(\"symbol\"), tc.expectedLookupErrror)\n\t\t\trequire.ErrorIs(t, l.close(), tc.expectedCloseError)\n\t\t\tif tc.expectedCloseError == nil {\n\t\t\t\trequire.Equal(t, 0, int(l.refcount))\n\t\t\t} else {\n\t\t\t\trequire.Equal(t, 1, int(l.refcount))\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestLoadAndCloseNesting(t *testing.T) {\n\tdl := &dynamicLibraryMock{\n\t\tOpenFunc: func() error {\n\t\t\treturn nil\n\t\t},\n\t\tCloseFunc: func() error {\n\t\t\treturn nil\n\t\t},\n\t}\n\n\tl := newTestLibrary(dl)\n\n\t// When calling close before opening the library nothing happens.\n\trequire.Equal(t, 0, len(dl.calls.Close))\n\trequire.Nil(t, l.close())\n\trequire.Equal(t, 0, len(dl.calls.Close))\n\n\t// When calling load twice, the library was only opened once\n\trequire.Equal(t, 0, len(dl.calls.Open))\n\trequire.Nil(t, l.load())\n\trequire.Equal(t, 1, len(dl.calls.Open))\n\trequire.Nil(t, l.load())\n\trequire.Equal(t, 1, len(dl.calls.Open))\n\n\t// Only after calling close twice, was the library closed\n\trequire.Equal(t, 0, len(dl.calls.Close))\n\trequire.Nil(t, l.close())\n\trequire.Equal(t, 0, len(dl.calls.Close))\n\trequire.Nil(t, l.close())\n\trequire.Equal(t, 1, len(dl.calls.Close))\n\n\t// Calling close again doesn't attempt to close the library again\n\trequire.Nil(t, l.close())\n\trequire.Equal(t, 1, len(dl.calls.Close))\n}\n\nfunc TestLoadAndCloseWithErrors(t *testing.T) {\n\ttestCases := []struct {\n\t\tdescription           string\n\t\tdl                    dynamicLibrary\n\t\texpectedLoadRefcount  refcount\n\t\texpectedCloseRefcount refcount\n\t}{\n\t\t{\n\t\t\tdescription: \"regular flow\",\n\t\t\tdl: &dynamicLibraryMock{\n\t\t\t\tOpenFunc: func() error {\n\t\t\t\t\treturn nil\n\t\t\t\t},\n\t\t\t\tCloseFunc: func() error {\n\t\t\t\t\treturn nil\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedLoadRefcount:  1,\n\t\t\texpectedCloseRefcount: 0,\n\t\t},\n\t\t{\n\t\t\tdescription: \"open error\",\n\t\t\tdl: &dynamicLibraryMock{\n\t\t\t\tOpenFunc: func() error {\n\t\t\t\t\treturn errors.New(\"\")\n\t\t\t\t},\n\t\t\t\tCloseFunc: func() error {\n\t\t\t\t\treturn nil\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedLoadRefcount:  0,\n\t\t\texpectedCloseRefcount: 0,\n\t\t},\n\t\t{\n\t\t\tdescription: \"close error\",\n\t\t\tdl: &dynamicLibraryMock{\n\t\t\t\tOpenFunc: func() error {\n\t\t\t\t\treturn nil\n\t\t\t\t},\n\t\t\t\tCloseFunc: func() error {\n\t\t\t\t\treturn errors.New(\"\")\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedLoadRefcount:  1,\n\t\t\texpectedCloseRefcount: 1,\n\t\t},\n\t\t{\n\t\t\tdescription: \"open and close error\",\n\t\t\tdl: &dynamicLibraryMock{\n\t\t\t\tOpenFunc: func() error {\n\t\t\t\t\treturn errors.New(\"\")\n\t\t\t\t},\n\t\t\t\tCloseFunc: func() error {\n\t\t\t\t\treturn errors.New(\"\")\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedLoadRefcount:  0,\n\t\t\texpectedCloseRefcount: 0,\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\tl := newTestLibrary(tc.dl)\n\t\t\t_ = l.load()\n\t\t\trequire.Equal(t, tc.expectedLoadRefcount, l.refcount)\n\t\t\t_ = l.close()\n\t\t\trequire.Equal(t, tc.expectedCloseRefcount, l.refcount)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/nvsandboxutils/mock/interface.go",
    "content": "// Code generated by moq; DO NOT EDIT.\n// github.com/matryer/moq\n\npackage mock\n\nimport (\n\t\"sync\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/nvsandboxutils\"\n)\n\n// Ensure, that Interface does implement nvsandboxutils.Interface.\n// If this is not the case, regenerate this file with moq.\nvar _ nvsandboxutils.Interface = &Interface{}\n\n// Interface is a mock implementation of nvsandboxutils.Interface.\n//\n//\tfunc TestSomethingThatUsesInterface(t *testing.T) {\n//\n//\t\t// make and configure a mocked nvsandboxutils.Interface\n//\t\tmockedInterface := &Interface{\n//\t\t\tErrorStringFunc: func(ret nvsandboxutils.Ret) string {\n//\t\t\t\tpanic(\"mock out the ErrorString method\")\n//\t\t\t},\n//\t\t\tGetDriverVersionFunc: func() (string, nvsandboxutils.Ret) {\n//\t\t\t\tpanic(\"mock out the GetDriverVersion method\")\n//\t\t\t},\n//\t\t\tGetFileContentFunc: func(s string) (string, nvsandboxutils.Ret) {\n//\t\t\t\tpanic(\"mock out the GetFileContent method\")\n//\t\t\t},\n//\t\t\tGetGpuResourceFunc: func(s string) ([]nvsandboxutils.GpuFileInfo, nvsandboxutils.Ret) {\n//\t\t\t\tpanic(\"mock out the GetGpuResource method\")\n//\t\t\t},\n//\t\t\tInitFunc: func(s string) nvsandboxutils.Ret {\n//\t\t\t\tpanic(\"mock out the Init method\")\n//\t\t\t},\n//\t\t\tLookupSymbolFunc: func(s string) error {\n//\t\t\t\tpanic(\"mock out the LookupSymbol method\")\n//\t\t\t},\n//\t\t\tShutdownFunc: func() nvsandboxutils.Ret {\n//\t\t\t\tpanic(\"mock out the Shutdown method\")\n//\t\t\t},\n//\t\t}\n//\n//\t\t// use mockedInterface in code that requires nvsandboxutils.Interface\n//\t\t// and then make assertions.\n//\n//\t}\ntype Interface struct {\n\t// ErrorStringFunc mocks the ErrorString method.\n\tErrorStringFunc func(ret nvsandboxutils.Ret) string\n\n\t// GetDriverVersionFunc mocks the GetDriverVersion method.\n\tGetDriverVersionFunc func() (string, nvsandboxutils.Ret)\n\n\t// GetFileContentFunc mocks the GetFileContent method.\n\tGetFileContentFunc func(s string) (string, nvsandboxutils.Ret)\n\n\t// GetGpuResourceFunc mocks the GetGpuResource method.\n\tGetGpuResourceFunc func(s string) ([]nvsandboxutils.GpuFileInfo, nvsandboxutils.Ret)\n\n\t// InitFunc mocks the Init method.\n\tInitFunc func(s string) nvsandboxutils.Ret\n\n\t// LookupSymbolFunc mocks the LookupSymbol method.\n\tLookupSymbolFunc func(s string) error\n\n\t// ShutdownFunc mocks the Shutdown method.\n\tShutdownFunc func() nvsandboxutils.Ret\n\n\t// calls tracks calls to the methods.\n\tcalls struct {\n\t\t// ErrorString holds details about calls to the ErrorString method.\n\t\tErrorString []struct {\n\t\t\t// Ret is the ret argument value.\n\t\t\tRet nvsandboxutils.Ret\n\t\t}\n\t\t// GetDriverVersion holds details about calls to the GetDriverVersion method.\n\t\tGetDriverVersion []struct {\n\t\t}\n\t\t// GetFileContent holds details about calls to the GetFileContent method.\n\t\tGetFileContent []struct {\n\t\t\t// S is the s argument value.\n\t\t\tS string\n\t\t}\n\t\t// GetGpuResource holds details about calls to the GetGpuResource method.\n\t\tGetGpuResource []struct {\n\t\t\t// S is the s argument value.\n\t\t\tS string\n\t\t}\n\t\t// Init holds details about calls to the Init method.\n\t\tInit []struct {\n\t\t\t// S is the s argument value.\n\t\t\tS string\n\t\t}\n\t\t// LookupSymbol holds details about calls to the LookupSymbol method.\n\t\tLookupSymbol []struct {\n\t\t\t// S is the s argument value.\n\t\t\tS string\n\t\t}\n\t\t// Shutdown holds details about calls to the Shutdown method.\n\t\tShutdown []struct {\n\t\t}\n\t}\n\tlockErrorString      sync.RWMutex\n\tlockGetDriverVersion sync.RWMutex\n\tlockGetFileContent   sync.RWMutex\n\tlockGetGpuResource   sync.RWMutex\n\tlockInit             sync.RWMutex\n\tlockLookupSymbol     sync.RWMutex\n\tlockShutdown         sync.RWMutex\n}\n\n// ErrorString calls ErrorStringFunc.\nfunc (mock *Interface) ErrorString(ret nvsandboxutils.Ret) string {\n\tif mock.ErrorStringFunc == nil {\n\t\tpanic(\"Interface.ErrorStringFunc: method is nil but Interface.ErrorString was just called\")\n\t}\n\tcallInfo := struct {\n\t\tRet nvsandboxutils.Ret\n\t}{\n\t\tRet: ret,\n\t}\n\tmock.lockErrorString.Lock()\n\tmock.calls.ErrorString = append(mock.calls.ErrorString, callInfo)\n\tmock.lockErrorString.Unlock()\n\treturn mock.ErrorStringFunc(ret)\n}\n\n// ErrorStringCalls gets all the calls that were made to ErrorString.\n// Check the length with:\n//\n//\tlen(mockedInterface.ErrorStringCalls())\nfunc (mock *Interface) ErrorStringCalls() []struct {\n\tRet nvsandboxutils.Ret\n} {\n\tvar calls []struct {\n\t\tRet nvsandboxutils.Ret\n\t}\n\tmock.lockErrorString.RLock()\n\tcalls = mock.calls.ErrorString\n\tmock.lockErrorString.RUnlock()\n\treturn calls\n}\n\n// GetDriverVersion calls GetDriverVersionFunc.\nfunc (mock *Interface) GetDriverVersion() (string, nvsandboxutils.Ret) {\n\tif mock.GetDriverVersionFunc == nil {\n\t\tpanic(\"Interface.GetDriverVersionFunc: method is nil but Interface.GetDriverVersion was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetDriverVersion.Lock()\n\tmock.calls.GetDriverVersion = append(mock.calls.GetDriverVersion, callInfo)\n\tmock.lockGetDriverVersion.Unlock()\n\treturn mock.GetDriverVersionFunc()\n}\n\n// GetDriverVersionCalls gets all the calls that were made to GetDriverVersion.\n// Check the length with:\n//\n//\tlen(mockedInterface.GetDriverVersionCalls())\nfunc (mock *Interface) GetDriverVersionCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetDriverVersion.RLock()\n\tcalls = mock.calls.GetDriverVersion\n\tmock.lockGetDriverVersion.RUnlock()\n\treturn calls\n}\n\n// GetFileContent calls GetFileContentFunc.\nfunc (mock *Interface) GetFileContent(s string) (string, nvsandboxutils.Ret) {\n\tif mock.GetFileContentFunc == nil {\n\t\tpanic(\"Interface.GetFileContentFunc: method is nil but Interface.GetFileContent was just called\")\n\t}\n\tcallInfo := struct {\n\t\tS string\n\t}{\n\t\tS: s,\n\t}\n\tmock.lockGetFileContent.Lock()\n\tmock.calls.GetFileContent = append(mock.calls.GetFileContent, callInfo)\n\tmock.lockGetFileContent.Unlock()\n\treturn mock.GetFileContentFunc(s)\n}\n\n// GetFileContentCalls gets all the calls that were made to GetFileContent.\n// Check the length with:\n//\n//\tlen(mockedInterface.GetFileContentCalls())\nfunc (mock *Interface) GetFileContentCalls() []struct {\n\tS string\n} {\n\tvar calls []struct {\n\t\tS string\n\t}\n\tmock.lockGetFileContent.RLock()\n\tcalls = mock.calls.GetFileContent\n\tmock.lockGetFileContent.RUnlock()\n\treturn calls\n}\n\n// GetGpuResource calls GetGpuResourceFunc.\nfunc (mock *Interface) GetGpuResource(s string) ([]nvsandboxutils.GpuFileInfo, nvsandboxutils.Ret) {\n\tif mock.GetGpuResourceFunc == nil {\n\t\tpanic(\"Interface.GetGpuResourceFunc: method is nil but Interface.GetGpuResource was just called\")\n\t}\n\tcallInfo := struct {\n\t\tS string\n\t}{\n\t\tS: s,\n\t}\n\tmock.lockGetGpuResource.Lock()\n\tmock.calls.GetGpuResource = append(mock.calls.GetGpuResource, callInfo)\n\tmock.lockGetGpuResource.Unlock()\n\treturn mock.GetGpuResourceFunc(s)\n}\n\n// GetGpuResourceCalls gets all the calls that were made to GetGpuResource.\n// Check the length with:\n//\n//\tlen(mockedInterface.GetGpuResourceCalls())\nfunc (mock *Interface) GetGpuResourceCalls() []struct {\n\tS string\n} {\n\tvar calls []struct {\n\t\tS string\n\t}\n\tmock.lockGetGpuResource.RLock()\n\tcalls = mock.calls.GetGpuResource\n\tmock.lockGetGpuResource.RUnlock()\n\treturn calls\n}\n\n// Init calls InitFunc.\nfunc (mock *Interface) Init(s string) nvsandboxutils.Ret {\n\tif mock.InitFunc == nil {\n\t\tpanic(\"Interface.InitFunc: method is nil but Interface.Init was just called\")\n\t}\n\tcallInfo := struct {\n\t\tS string\n\t}{\n\t\tS: s,\n\t}\n\tmock.lockInit.Lock()\n\tmock.calls.Init = append(mock.calls.Init, callInfo)\n\tmock.lockInit.Unlock()\n\treturn mock.InitFunc(s)\n}\n\n// InitCalls gets all the calls that were made to Init.\n// Check the length with:\n//\n//\tlen(mockedInterface.InitCalls())\nfunc (mock *Interface) InitCalls() []struct {\n\tS string\n} {\n\tvar calls []struct {\n\t\tS string\n\t}\n\tmock.lockInit.RLock()\n\tcalls = mock.calls.Init\n\tmock.lockInit.RUnlock()\n\treturn calls\n}\n\n// LookupSymbol calls LookupSymbolFunc.\nfunc (mock *Interface) LookupSymbol(s string) error {\n\tif mock.LookupSymbolFunc == nil {\n\t\tpanic(\"Interface.LookupSymbolFunc: method is nil but Interface.LookupSymbol was just called\")\n\t}\n\tcallInfo := struct {\n\t\tS string\n\t}{\n\t\tS: s,\n\t}\n\tmock.lockLookupSymbol.Lock()\n\tmock.calls.LookupSymbol = append(mock.calls.LookupSymbol, callInfo)\n\tmock.lockLookupSymbol.Unlock()\n\treturn mock.LookupSymbolFunc(s)\n}\n\n// LookupSymbolCalls gets all the calls that were made to LookupSymbol.\n// Check the length with:\n//\n//\tlen(mockedInterface.LookupSymbolCalls())\nfunc (mock *Interface) LookupSymbolCalls() []struct {\n\tS string\n} {\n\tvar calls []struct {\n\t\tS string\n\t}\n\tmock.lockLookupSymbol.RLock()\n\tcalls = mock.calls.LookupSymbol\n\tmock.lockLookupSymbol.RUnlock()\n\treturn calls\n}\n\n// Shutdown calls ShutdownFunc.\nfunc (mock *Interface) Shutdown() nvsandboxutils.Ret {\n\tif mock.ShutdownFunc == nil {\n\t\tpanic(\"Interface.ShutdownFunc: method is nil but Interface.Shutdown was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockShutdown.Lock()\n\tmock.calls.Shutdown = append(mock.calls.Shutdown, callInfo)\n\tmock.lockShutdown.Unlock()\n\treturn mock.ShutdownFunc()\n}\n\n// ShutdownCalls gets all the calls that were made to Shutdown.\n// Check the length with:\n//\n//\tlen(mockedInterface.ShutdownCalls())\nfunc (mock *Interface) ShutdownCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockShutdown.RLock()\n\tcalls = mock.calls.Shutdown\n\tmock.lockShutdown.RUnlock()\n\treturn calls\n}\n"
  },
  {
    "path": "internal/nvsandboxutils/nvsandboxutils.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\n// WARNING: THIS FILE WAS AUTOMATICALLY GENERATED.\n// Code generated by https://git.io/c-for-go. DO NOT EDIT.\n\npackage nvsandboxutils\n\n/*\n#cgo linux LDFLAGS: -Wl,--export-dynamic -Wl,--unresolved-symbols=ignore-in-object-files\n#cgo darwin LDFLAGS: -Wl,-undefined,dynamic_lookup\n#include \"nvsandboxutils.h\"\n#include <stdlib.h>\n#include \"cgo_helpers.h\"\n*/\nimport \"C\"\nimport \"unsafe\"\n\n// nvSandboxUtilsInit function as declared in nvsandboxutils/nvsandboxutils.h\nfunc nvSandboxUtilsInit(Input *InitInput) Ret {\n\tcInput, _ := (*C.nvSandboxUtilsInitInput_t)(unsafe.Pointer(Input)), cgoAllocsUnknown\n\t__ret := C.nvSandboxUtilsInit(cInput)\n\t__v := (Ret)(__ret)\n\treturn __v\n}\n\n// nvSandboxUtilsShutdown function as declared in nvsandboxutils/nvsandboxutils.h\nfunc nvSandboxUtilsShutdown() Ret {\n\t__ret := C.nvSandboxUtilsShutdown()\n\t__v := (Ret)(__ret)\n\treturn __v\n}\n\n// nvSandboxUtilsGetDriverVersion function as declared in nvsandboxutils/nvsandboxutils.h\nfunc nvSandboxUtilsGetDriverVersion(Version *byte, Length uint32) Ret {\n\tcVersion, _ := (*C.char)(unsafe.Pointer(Version)), cgoAllocsUnknown\n\tcLength, _ := (C.uint)(Length), cgoAllocsUnknown\n\t__ret := C.nvSandboxUtilsGetDriverVersion(cVersion, cLength)\n\t__v := (Ret)(__ret)\n\treturn __v\n}\n\n// nvSandboxUtilsGetGpuResource function as declared in nvsandboxutils/nvsandboxutils.h\nfunc nvSandboxUtilsGetGpuResource(Request *GpuRes) Ret {\n\tcRequest, _ := (*C.nvSandboxUtilsGpuRes_t)(unsafe.Pointer(Request)), cgoAllocsUnknown\n\t__ret := C.nvSandboxUtilsGetGpuResource(cRequest)\n\t__v := (Ret)(__ret)\n\treturn __v\n}\n\n// nvSandboxUtilsGetFileContent function as declared in nvsandboxutils/nvsandboxutils.h\nfunc nvSandboxUtilsGetFileContent(FilePath *byte, Content *byte, ContentSize *uint32) Ret {\n\tcFilePath, _ := (*C.char)(unsafe.Pointer(FilePath)), cgoAllocsUnknown\n\tcContent, _ := (*C.char)(unsafe.Pointer(Content)), cgoAllocsUnknown\n\tcContentSize, _ := (*C.uint)(unsafe.Pointer(ContentSize)), cgoAllocsUnknown\n\t__ret := C.nvSandboxUtilsGetFileContent(cFilePath, cContent, cContentSize)\n\t__v := (Ret)(__ret)\n\treturn __v\n}\n"
  },
  {
    "path": "internal/nvsandboxutils/nvsandboxutils.h",
    "content": "/*\n * SPDX-FileCopyrightText: Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#ifndef __NVSANDBOXUTILS_H__\n#define __NVSANDBOXUTILS_H__\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#define INPUT_LENGTH 256\n#define MAX_FILE_PATH 256\n#define MAX_NAME_LENGTH 256\n\n/***************************************************************************************************/\n/** @defgroup enums Enumerations\n *  @{\n */\n/***************************************************************************************************/\n\n/**\n * Return types\n */\ntypedef enum\n{\n    NVSANDBOXUTILS_SUCCESS                              = 0,         //!< The operation was successful\n    NVSANDBOXUTILS_ERROR_UNINITIALIZED                  = 1,         //!< The library wasn't successfully initialized\n    NVSANDBOXUTILS_ERROR_NOT_SUPPORTED                  = 2,         //!< The requested operation is not supported on target device\n    NVSANDBOXUTILS_ERROR_INVALID_ARG                    = 3,         //!< A supplied argument is invalid\n    NVSANDBOXUTILS_ERROR_INSUFFICIENT_SIZE              = 4,         //!< A supplied argument is not large enough\n    NVSANDBOXUTILS_ERROR_VERSION_NOT_SUPPORTED          = 5,         //!< Requested library version is not supported\n    NVSANDBOXUTILS_ERROR_LIBRARY_LOAD                   = 6,         //!< The library load failed\n    NVSANDBOXUTILS_ERROR_FUNCTION_NOT_FOUND             = 7,         //!< Called function was not found\n    NVSANDBOXUTILS_ERROR_DEVICE_NOT_FOUND               = 8,         //!< Target device was not found\n    NVSANDBOXUTILS_ERROR_NVML_LIB_CALL                  = 9,         //!< NVML library call failed\n    NVSANDBOXUTILS_ERROR_OUT_OF_MEMORY                  = 10,        //!< There is insufficient memory\n    NVSANDBOXUTILS_ERROR_FILEPATH_NOT_FOUND             = 11,        //!< A supplied file path was not found\n    NVSANDBOXUTILS_ERROR_UNKNOWN                        = 0xFFFF,    //!< Unknown error occurred\n} nvSandboxUtilsRet_t;\n\n/**\n * Return if there is an error\n */\n#define RETURN_ON_SANDBOX_ERROR(result) \\\n    if ((result) != NVSANDBOXUTILS_SUCCESS) { \\\n        NVSANDBOXUTILS_ERROR_MSG(\"%s %d result=%d\", __func__, __LINE__, result); \\\n        return result; \\\n    }\n\n/**\n * Log levels\n */\ntypedef enum\n{\n    NVSANDBOXUTILS_LOG_LEVEL_FATAL         = 0,                       //!< Log fatal errors\n    NVSANDBOXUTILS_LOG_LEVEL_ERROR         = 1,                       //!< Log all errors\n    NVSANDBOXUTILS_LOG_LEVEL_WARN          = 2,                       //!< Log all warnings\n    NVSANDBOXUTILS_LOG_LEVEL_DEBUG         = 3,                       //!< Log all debug messages\n    NVSANDBOXUTILS_LOG_LEVEL_INFO          = 4,                       //!< Log all info messages\n    NVSANDBOXUTILS_LOG_LEVEL_NONE          = 0xFFFF,                  //!< Log none\n} nvSandboxUtilsLogLevel_t;\n\n/**\n * Input rootfs to help access files inside the driver container\n */\ntypedef enum\n{\n    NV_ROOTFS_DEFAULT,                                               //!< Default no rootfs\n    NV_ROOTFS_PATH,                                                  //!< /run/nvidia/driver\n    NV_ROOTFS_PID,                                                   //!< /proc/PID/mountinfo\n} nvSandboxUtilsRootfsInputType_t;\n\n/**\n * File type\n */\ntypedef enum\n{\n    NV_DEV,                                                          //!< /dev file system\n    NV_PROC,                                                         //!< /proc file system\n    NV_SYS,                                                          //!< /sys file system\n} nvSandboxUtilsFileType_t;\n\n/**\n * File subtype\n */\ntypedef enum\n{\n    NV_DEV_NVIDIA,                                                   //!< /dev/nvidia0\n    NV_DEV_DRI_CARD,                                                 //!< /dev/dri/card1\n    NV_DEV_DRI_RENDERD,                                              //!< /dev/dri/renderD128\n    NV_DEV_DRI_CARD_SYMLINK,                                         //!< /dev/dri/by-path/pci-0000:41:00.0-card\n    NV_DEV_DRI_RENDERD_SYMLINK,                                      //!< /dev/dri/by-path/pci-0000:41:00.0-render\n    NV_DEV_NVIDIA_UVM,                                               //!< /dev/nvidia-uvm\n    NV_DEV_NVIDIA_UVM_TOOLS,                                         //!< /dev/nvidia-uvm-tools\n    NV_DEV_NVIDIA_MODESET,                                           //!< /dev/nvidia-uvm-modeset\n    NV_DEV_NVIDIA_CTL,                                               //!< /dev/nvidiactl\n    NV_DEV_GDRDRV,                                                   //!< /dev/gdrdrv\n    NV_DEV_NVIDIA_CAPS_NVIDIA_CAP,                                   //!< /dev/nvidia-caps/nvidia-cap22\n    NV_PROC_DRIVER_NVIDIA_GPUS_PCIBUSID,                             //!< /proc/driver/nvidia/gpus/0000:2d:00.0\n    NV_PROC_DRIVER_NVIDIA_GPUS,                                      //!< /proc/driver/nvidia/gpus (for mask out)\n    NV_PROC_NVIDIA_PARAMS,                                           //!< /proc/driver/nvidia/params\n    NV_PROC_NVIDIA_CAPS_MIG_MINORS,                                  //!< /proc/driver/nvidia-caps/mig-minors\n    NV_PROC_DRIVER_NVIDIA_CAPABILITIES_GPU,                          //!< /proc/driver/nvidia/capabilities/gpu0\n    NV_PROC_DRIVER_NVIDIA_CAPABILITIES,                              //!< /proc/driver/nvidia/capabilities (for mask out)\n    NV_PROC_DRIVER_NVIDIA_CAPABILITIIES_GPU_MIG_CI_ACCESS,           //!< proc/driver/nvidia/capabilities/gpu0/mig/gi2/ci0/access\n    NV_SYS_MODULE_NVIDIA_DRIVER_PCIBUSID,                            //!< /sys/module/nvidia/drivers/pci:nvidia/0000:2d:00.0\n    NV_SYS_MODULE_NVIDIA_DRIVER,                                     //!< /sys/module/nvidia/drivers/pci:nvidia (for mask out)\n    NV_NUM_SUBTYPE, // always at the end.\n} nvSandboxUtilsFileSystemSubType_t;\n\n/**\n * File module\n */\ntypedef enum\n{\n    NV_GPU,                                                           //!< Target device\n    NV_MIG,                                                           //!< Target device- MIG\n    NV_DRIVER_NVIDIA,                                                 //!< NVIDIA kernel driver\n    NV_DRIVER_NVIDIA_UVM,                                             //!< NVIDIA kernel driver-UVM\n    NV_DRIVER_NVIDIA_MODESET,                                         //!< NVIDIA kernel driver-modeset\n    NV_DRIVER_GDRDRV,                                                 //!< GDRDRV driver\n    NV_SYSTEM,                                                        //!< System module\n} nvSandboxUtilsFileModule_t;\n\n/**\n * Flag to provide additional details about the file\n */\ntypedef enum\n{\n    NV_FILE_FLAG_HINT            = (1 << 0),                         //!< Default no hint\n    NV_FILE_FLAG_MASKOUT         = (1 << 1),                         //!< For /proc/driver/nvidia/gpus\n    NV_FILE_FLAG_CONTENT         = (1 << 2),                         //!< For /proc/driver/nvidia/params\n                                                                     //!< For SYMLINK\n                                                                     //!< Use \\p nvSandboxUtilsGetFileContent to get name of the linked file\n    NV_FILE_FLAG_DEPRECTATED     = (1 << 3),                         //!< For all the FIRMWARE GSP file\n    NV_FILE_FLAG_CANDIDATES      = (1 << 4),                         //!< For libcuda.so\n} nvSandboxUtilsFileFlag_t;\n\n/**\n * Input type of the target device\n */\ntypedef enum\n{\n    NV_GPU_INPUT_GPU_UUID,                                           //!< GPU UUID\n    NV_GPU_INPUT_MIG_UUID,                                           //!< MIG UUID\n    NV_GPU_INPUT_PCI_ID,                                             //!< PCIe DBDF ID\n    NV_GPU_INPUT_PCI_INDEX,                                          //!< PCIe bus order (0 points to the GPU that has lowest PCIe BDF)\n} nvSandboxUtilsGpuInputType_t;\n\n/** @} */\n\n/***************************************************************************************************/\n/** @defgroup dataTypes Structures and Unions\n *  @{\n */\n/***************************************************************************************************/\n\n/**\n * Initalization input v1\n */\ntypedef struct\n{\n    unsigned int version;                                            //!< Version for the structure\n    nvSandboxUtilsRootfsInputType_t type;                            //!< One of \\p nvSandboxUtilsRootfsInputType_t\n    char value[INPUT_LENGTH];                                        //!< String representation of input\n} nvSandboxUtilsInitInput_v1_t;\n\ntypedef nvSandboxUtilsInitInput_v1_t nvSandboxUtilsInitInput_t;\n\n/**\n * File system information\n */\ntypedef struct nvSandboxUtilsGpuFileInfo_v1_t\n{\n    struct nvSandboxUtilsGpuFileInfo_v1_t *next;                     //!< Pointer to the next node in the linked list\n    nvSandboxUtilsFileType_t fileType;                               //!< One of \\p nvSandboxUtilsFileType_t\n    nvSandboxUtilsFileSystemSubType_t fileSubType;                   //!< One of \\p nvSandboxUtilsFileSystemSubType_t\n    nvSandboxUtilsFileModule_t module;                               //!< One of \\p nvSandboxUtilsFileModule_t\n    nvSandboxUtilsFileFlag_t flags;                                  //!< One of \\p nvSandboxUtilsFileFlag_t\n    char *filePath;                                                  //!< Relative file path to rootfs\n}nvSandboxUtilsGpuFileInfo_v1_t;\n\n/**\n * GPU resource request v1\n */\ntypedef struct\n{\n     unsigned int version;                                           //!< Version for the structure\n     nvSandboxUtilsGpuInputType_t inputType;                         //!< One of \\p nvSandboxUtilsGpuInputType_t\n     char input[INPUT_LENGTH];                                       //!< String representation of input\n     nvSandboxUtilsGpuFileInfo_v1_t *files;                          //!< Linked list of \\ref nvSandboxUtilsGpuFileInfo_v1_t\n} nvSandboxUtilsGpuRes_v1_t;\n\ntypedef nvSandboxUtilsGpuRes_v1_t nvSandboxUtilsGpuRes_t;\n\n/** @} */\n\n/***************************************************************************************************/\n/** @defgroup funcs Functions\n *  @{\n */\n/***************************************************************************************************/\n\n/* *************************************************\n * Initialize library\n * *************************************************\n */\n/**\n * Prepare library resources before library API can be used.\n * This initialization will not fail if one of the initialization prerequisites fails.\n * @param           input  Reference to the called-supplied input struct that has initialization fields\n *\n * @returns         @ref NVSANDBOXUTILS_SUCCESS                      on success\n * @returns         @ref NVSANDBOXUTILS_ERROR_INVALID_ARG            if \\p input->value isn't a valid rootfs path\n * @returns         @ref NVSANDBOXUTILS_ERROR_VERSION_NOT_SUPPORTED  if \\p input->version isn't supported by the library\n * @returns         @ref NVSANDBOXUTILS_ERROR_FILEPATH_NOT_FOUND     if any of the required file paths are not found during initialization\n * @returns         @ref NVSANDBOXUTILS_ERROR_OUT_OF_MEMORY          if there is insufficient system memory during initialization\n * @returns         @ref NVSANDBOXUTILS_ERROR_LIBRARY_LOAD           on any error during loading the library\n */\nnvSandboxUtilsRet_t nvSandboxUtilsInit(nvSandboxUtilsInitInput_t *input);\n\n/* *************************************************\n * Shutdown library\n * *************************************************\n */\n/**\n * Clean up library resources created by init call\n *\n * @returns         @ref NVSANDBOXUTILS_SUCCESS                      on success\n */\nnvSandboxUtilsRet_t nvSandboxUtilsShutdown(void);\n\n/* *************************************************\n * Get NVIDIA RM driver version\n * *************************************************\n */\n/**\n * Get NVIDIA RM driver version\n * @param           version  Reference to caller-supplied buffer to return driver version string\n * @param           length   The maximum allowed length of the string returned in \\p version\n *\n * @returns         @ref NVSANDBOXUTILS_SUCCESS                      on success\n * @returns         @ref NVSANDBOXUTILS_ERROR_INVALID_ARG            if \\p version is NULL\n * @returns         @ref NVSANDBOXUTILS_ERROR_NVML_LIB_CALL          on any error during driver version query from NVML\n */\nnvSandboxUtilsRet_t nvSandboxUtilsGetDriverVersion(char *version, unsigned int length);\n\n/* *************************************************\n * Get /dev, /proc, /sys file system information\n * *************************************************\n */\n/**\n * Get /dev, /proc, /sys file system information\n * @param           request  Reference to caller-supplied request struct to return the file system information\n *\n * @returns         @ref NVSANDBOXUTILS_SUCCESS                      on success\n * @returns         @ref NVSANDBOXUTILS_ERROR_INVALID_ARG            if \\p request->input doesn't match any device\n * @returns         @ref NVSANDBOXUTILS_ERROR_VERSION_NOT_SUPPORTED  if \\p request->version isn't supported by the library\n */\nnvSandboxUtilsRet_t nvSandboxUtilsGetGpuResource(nvSandboxUtilsGpuRes_t *request);\n\n/* *************************************************\n * Get content of given file path\n * *************************************************\n */\n/**\n * Get file content of input file path\n * @param           filePath     Reference to the file path\n * @param           content      Reference to the caller-supplied buffer to return the file content\n * @param           contentSize  Reference to the maximum allowed size of content. It is updated to the actual size of the content on return\n *\n * @returns         @ref NVSANDBOXUTILS_SUCCESS                      on success\n * @returns         @ref NVSANDBOXUTILS_ERROR_INVALID_ARG            if \\p filePath or \\p content is NULL\n * @returns         @ref NVSANDBOXUTILS_ERROR_INSUFFICIENT_SIZE      if \\p contentSize is too small\n * @returns         @ref NVSANDBOXUTILS_ERROR_FILEPATH_NOT_FOUND     on an error while obtaining the content for the file path\n */\nnvSandboxUtilsRet_t nvSandboxUtilsGetFileContent(char *filePath, char *content, unsigned int *contentSize);\n\n/** @} */\n\n#ifdef __cplusplus\n}\n#endif\n#endif // __NVSANDBOXUTILS_H__\n"
  },
  {
    "path": "internal/nvsandboxutils/refcount.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage nvsandboxutils\n\ntype refcount int\n\nfunc (r *refcount) IncOnNoError(err error) {\n\tif err == nil {\n\t\t(*r)++\n\t}\n}\n\nfunc (r *refcount) DecOnNoError(err error) {\n\tif err == nil && (*r) > 0 {\n\t\t(*r)--\n\t}\n}\n"
  },
  {
    "path": "internal/nvsandboxutils/refcount_test.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage nvsandboxutils\n\nimport (\n\t\"errors\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestRefcount(t *testing.T) {\n\ttestCases := []struct {\n\t\tdescription      string\n\t\tworkload         func(r *refcount)\n\t\texpectedRefcount refcount\n\t}{\n\t\t{\n\t\t\tdescription:      \"No inc or dec\",\n\t\t\tworkload:         func(r *refcount) {},\n\t\t\texpectedRefcount: refcount(0),\n\t\t},\n\t\t{\n\t\t\tdescription: \"Single inc, no error\",\n\t\t\tworkload: func(r *refcount) {\n\t\t\t\tr.IncOnNoError(nil)\n\t\t\t},\n\t\t\texpectedRefcount: refcount(1),\n\t\t},\n\t\t{\n\t\t\tdescription: \"Single inc, with error\",\n\t\t\tworkload: func(r *refcount) {\n\t\t\t\tr.IncOnNoError(errors.New(\"\"))\n\t\t\t},\n\t\t\texpectedRefcount: refcount(0),\n\t\t},\n\t\t{\n\t\t\tdescription: \"Double inc, no error\",\n\t\t\tworkload: func(r *refcount) {\n\t\t\t\tr.IncOnNoError(nil)\n\t\t\t\tr.IncOnNoError(nil)\n\t\t\t},\n\t\t\texpectedRefcount: refcount(2),\n\t\t},\n\t\t{\n\t\t\tdescription: \"Double inc, one with error\",\n\t\t\tworkload: func(r *refcount) {\n\t\t\t\tr.IncOnNoError(nil)\n\t\t\t\tr.IncOnNoError(errors.New(\"\"))\n\t\t\t},\n\t\t\texpectedRefcount: refcount(1),\n\t\t},\n\t\t{\n\t\t\tdescription: \"Single dec, no error\",\n\t\t\tworkload: func(r *refcount) {\n\t\t\t\tr.DecOnNoError(nil)\n\t\t\t},\n\t\t\texpectedRefcount: refcount(0),\n\t\t},\n\t\t{\n\t\t\tdescription: \"Single dec, with error\",\n\t\t\tworkload: func(r *refcount) {\n\t\t\t\tr.DecOnNoError(errors.New(\"\"))\n\t\t\t},\n\t\t\texpectedRefcount: refcount(0),\n\t\t},\n\t\t{\n\t\t\tdescription: \"Single inc, single dec, no errors\",\n\t\t\tworkload: func(r *refcount) {\n\t\t\t\tr.IncOnNoError(nil)\n\t\t\t\tr.DecOnNoError(nil)\n\t\t\t},\n\t\t\texpectedRefcount: refcount(0),\n\t\t},\n\t\t{\n\t\t\tdescription: \"Double inc, Double dec, no errors\",\n\t\t\tworkload: func(r *refcount) {\n\t\t\t\tr.IncOnNoError(nil)\n\t\t\t\tr.IncOnNoError(nil)\n\t\t\t\tr.DecOnNoError(nil)\n\t\t\t\tr.DecOnNoError(nil)\n\t\t\t},\n\t\t\texpectedRefcount: refcount(0),\n\t\t},\n\t\t{\n\t\t\tdescription: \"Double inc, Double dec, one inc error\",\n\t\t\tworkload: func(r *refcount) {\n\t\t\t\tr.IncOnNoError(nil)\n\t\t\t\tr.IncOnNoError(errors.New(\"\"))\n\t\t\t\tr.DecOnNoError(nil)\n\t\t\t\tr.DecOnNoError(nil)\n\t\t\t},\n\t\t\texpectedRefcount: refcount(0),\n\t\t},\n\t\t{\n\t\t\tdescription: \"Double inc, Double dec, one dec error\",\n\t\t\tworkload: func(r *refcount) {\n\t\t\t\tr.IncOnNoError(nil)\n\t\t\t\tr.IncOnNoError(nil)\n\t\t\t\tr.DecOnNoError(nil)\n\t\t\t\tr.DecOnNoError(errors.New(\"\"))\n\t\t\t},\n\t\t\texpectedRefcount: refcount(1),\n\t\t},\n\t\t{\n\t\t\tdescription: \"Double inc, Tripple dec, one dec error early on\",\n\t\t\tworkload: func(r *refcount) {\n\t\t\t\tr.IncOnNoError(nil)\n\t\t\t\tr.IncOnNoError(nil)\n\t\t\t\tr.DecOnNoError(errors.New(\"\"))\n\t\t\t\tr.DecOnNoError(nil)\n\t\t\t\tr.DecOnNoError(nil)\n\t\t\t},\n\t\t\texpectedRefcount: refcount(0),\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\tvar r refcount\n\t\t\ttc.workload(&r)\n\t\t\trequire.Equal(t, tc.expectedRefcount, r)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/nvsandboxutils/return.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage nvsandboxutils\n\nimport (\n\t\"fmt\"\n)\n\n// nvsandboxutils.ErrorString()\nfunc (l *library) ErrorString(r Ret) string {\n\treturn r.Error()\n}\n\n// String returns the string representation of a Ret.\nfunc (r Ret) String() string {\n\treturn r.Error()\n}\n\n// Error returns the string representation of a Ret.\nfunc (r Ret) Error() string {\n\treturn errorStringFunc(r)\n}\n\n// Assigned to nvsandboxutils.ErrorString if the system nvsandboxutils library is in use.\nvar errorStringFunc = defaultErrorStringFunc\n\n// nvsanboxutilsErrorString is an alias for the default error string function.\nvar nvsanboxutilsErrorString = defaultErrorStringFunc\n\n// defaultErrorStringFunc provides a basic nvsandboxutils.ErrorString implementation.\n// This allows the nvsandboxutils.ErrorString function to be used even if the nvsandboxutils library\n// is not loaded.\nvar defaultErrorStringFunc = func(r Ret) string {\n\tswitch r {\n\tcase SUCCESS:\n\t\treturn \"SUCCESS\"\n\tcase ERROR_UNINITIALIZED:\n\t\treturn \"ERROR_UNINITIALIZED\"\n\tcase ERROR_NOT_SUPPORTED:\n\t\treturn \"ERROR_NOT_SUPPORTED\"\n\tcase ERROR_INVALID_ARG:\n\t\treturn \"ERROR_INVALID_ARG\"\n\tcase ERROR_INSUFFICIENT_SIZE:\n\t\treturn \"ERROR_INSUFFICIENT_SIZE\"\n\tcase ERROR_VERSION_NOT_SUPPORTED:\n\t\treturn \"ERROR_VERSION_NOT_SUPPORTED\"\n\tcase ERROR_LIBRARY_LOAD:\n\t\treturn \"ERROR_LIBRARY_LOAD\"\n\tcase ERROR_FUNCTION_NOT_FOUND:\n\t\treturn \"ERROR_FUNCTION_NOT_FOUND\"\n\tcase ERROR_DEVICE_NOT_FOUND:\n\t\treturn \"ERROR_DEVICE_NOT_FOUND\"\n\tcase ERROR_NVML_LIB_CALL:\n\t\treturn \"ERROR_NVML_LIB_CALL\"\n\tcase ERROR_UNKNOWN:\n\t\treturn \"ERROR_UNKNOWN\"\n\tdefault:\n\t\treturn fmt.Sprintf(\"unknown return value: %d\", r)\n\t}\n}\n"
  },
  {
    "path": "internal/nvsandboxutils/types_gen.go",
    "content": "// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs types.go\n\npackage nvsandboxutils\n\ntype InitInput_v1 struct {\n\tVersion uint32\n\tType    uint32\n\tValue   [256]int8\n}\n\ntype InitInput struct {\n\tVersion uint32\n\tType    uint32\n\tValue   [256]int8\n}\n\ntype GpuFileInfo_v1 struct {\n\tNext        *GpuFileInfo_v1\n\tFileType    uint32\n\tFileSubType uint32\n\tModule      uint32\n\tFlags       uint32\n\tFilePath    *int8\n}\n\ntype GpuRes_v1 struct {\n\tVersion   uint32\n\tInputType uint32\n\tInput     [256]int8\n\tFiles     *GpuFileInfo_v1\n}\n\ntype GpuRes struct {\n\tVersion   uint32\n\tInputType uint32\n\tInput     [256]int8\n\tFiles     *GpuFileInfo_v1\n}\n"
  },
  {
    "path": "internal/nvsandboxutils/zz_generated.api.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\n// Generated Code; DO NOT EDIT.\n\npackage nvsandboxutils\n\n// The variables below represent package level methods from the library type.\nvar (\n\tErrorString = libnvsandboxutils.ErrorString\n\tGetDriverVersion = libnvsandboxutils.GetDriverVersion\n\tGetFileContent = libnvsandboxutils.GetFileContent\n\tGetGpuResource = libnvsandboxutils.GetGpuResource\n\tInit = libnvsandboxutils.Init\n\tLookupSymbol = libnvsandboxutils.LookupSymbol\n\tShutdown = libnvsandboxutils.Shutdown\n)\n\n// Interface represents the interface for the library type.\n//\n//go:generate moq -rm -fmt=goimports -out mock/interface.go -pkg mock . Interface:Interface\ntype Interface interface {\n\tErrorString(Ret) string\n\tGetDriverVersion() (string, Ret)\n\tGetFileContent(string) (string, Ret)\n\tGetGpuResource(string) ([]GpuFileInfo, Ret)\n\tInit(string) Ret\n\tLookupSymbol(string) error\n\tShutdown() Ret\n}\n"
  },
  {
    "path": "internal/oci/args.go",
    "content": "/*\n# Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n*/\n\npackage oci\n\nimport (\n\t\"fmt\"\n\t\"path/filepath\"\n\t\"strings\"\n)\n\nconst (\n\tspecFileName = \"config.json\"\n)\n\n// GetBundleDir returns the bundle directory or default depending on the\n// supplied command line arguments.\nfunc GetBundleDir(args []string) (string, error) {\n\tbundleDir, err := GetBundleDirFromArgs(args)\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"error getting bundle dir from args: %v\", err)\n\t}\n\n\treturn bundleDir, nil\n}\n\n// GetBundleDirFromArgs checks the specified slice of strings (argv) for a 'bundle' flag as allowed by runc.\n// The following are supported:\n// --bundle{{SEP}}BUNDLE_PATH\n// -bundle{{SEP}}BUNDLE_PATH\n// -b{{SEP}}BUNDLE_PATH\n// where {{SEP}} is either ' ' or '='\nfunc GetBundleDirFromArgs(args []string) (string, error) {\n\tvar bundleDir string\n\n\tfor i := 0; i < len(args); i++ {\n\t\tparam := args[i]\n\n\t\tparts := strings.SplitN(param, \"=\", 2)\n\t\tif !IsBundleFlag(parts[0]) {\n\t\t\tcontinue\n\t\t}\n\n\t\t// The flag has the format --bundle=/path\n\t\tif len(parts) == 2 {\n\t\t\tbundleDir = parts[1]\n\t\t\tcontinue\n\t\t}\n\n\t\t// The flag has the format --bundle /path\n\t\tif i+1 < len(args) {\n\t\t\tbundleDir = args[i+1]\n\t\t\ti++\n\t\t\tcontinue\n\t\t}\n\n\t\t// --bundle / -b was the last element of args\n\t\treturn \"\", fmt.Errorf(\"bundle option requires an argument\")\n\t}\n\n\treturn bundleDir, nil\n}\n\n// GetSpecFilePath returns the expected path to the OCI specification file for the given\n// bundle directory.\nfunc GetSpecFilePath(bundleDir string) string {\n\tspecFilePath := filepath.Join(bundleDir, specFileName)\n\treturn specFilePath\n}\n\n// IsBundleFlag is a helper function that checks wither the specified argument represents\n// a bundle flag (--bundle or -b)\nfunc IsBundleFlag(arg string) bool {\n\tif !strings.HasPrefix(arg, \"-\") {\n\t\treturn false\n\t}\n\n\ttrimmed := strings.TrimLeft(arg, \"-\")\n\treturn trimmed == \"b\" || trimmed == \"bundle\"\n}\n\n// HasCreateSubcommand checks the supplied arguments for a 'create' subcommand\nfunc HasCreateSubcommand(args []string) bool {\n\tvar previousWasBundle bool\n\tfor _, a := range args {\n\t\t// We check for '--bundle create' explicitly to ensure that we\n\t\t// don't inadvertently trigger a modification if the bundle directory\n\t\t// is specified as `create`\n\t\tif !previousWasBundle && IsBundleFlag(a) {\n\t\t\tpreviousWasBundle = true\n\t\t\tcontinue\n\t\t}\n\n\t\tif !previousWasBundle && a == \"create\" {\n\t\t\treturn true\n\t\t}\n\n\t\tpreviousWasBundle = false\n\t}\n\n\treturn false\n}\n"
  },
  {
    "path": "internal/oci/args_test.go",
    "content": "package oci\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestGetBundleDir(t *testing.T) {\n\ttype expected struct {\n\t\tbundle  string\n\t\tisError bool\n\t}\n\ttestCases := []struct {\n\t\targv     []string\n\t\texpected expected\n\t}{\n\t\t{\n\t\t\targv: []string{},\n\t\t\texpected: expected{\n\t\t\t\tbundle: \"\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\targv: []string{\"create\"},\n\t\t\texpected: expected{\n\t\t\t\tbundle: \"\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\targv: []string{\"--bundle\"},\n\t\t\texpected: expected{\n\t\t\t\tisError: true,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\targv: []string{\"-b\"},\n\t\t\texpected: expected{\n\t\t\t\tisError: true,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\targv: []string{\"--bundle\", \"/foo/bar\"},\n\t\t\texpected: expected{\n\t\t\t\tbundle: \"/foo/bar\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\targv: []string{\"--not-bundle\", \"/foo/bar\"},\n\t\t\texpected: expected{\n\t\t\t\tbundle: \"\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\targv: []string{\"--\"},\n\t\t\texpected: expected{\n\t\t\t\tbundle: \"\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\targv: []string{\"-bundle\", \"/foo/bar\"},\n\t\t\texpected: expected{\n\t\t\t\tbundle: \"/foo/bar\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\targv: []string{\"--bundle=/foo/bar\"},\n\t\t\texpected: expected{\n\t\t\t\tbundle: \"/foo/bar\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\targv: []string{\"-b=/foo/bar\"},\n\t\t\texpected: expected{\n\t\t\t\tbundle: \"/foo/bar\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\targv: []string{\"-b=/foo/=bar\"},\n\t\t\texpected: expected{\n\t\t\t\tbundle: \"/foo/=bar\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\targv: []string{\"-b\", \"/foo/bar\"},\n\t\t\texpected: expected{\n\t\t\t\tbundle: \"/foo/bar\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\targv: []string{\"create\", \"-b\", \"/foo/bar\"},\n\t\t\texpected: expected{\n\t\t\t\tbundle: \"/foo/bar\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\targv: []string{\"-b\", \"create\", \"create\"},\n\t\t\texpected: expected{\n\t\t\t\tbundle: \"create\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\targv: []string{\"-b=create\", \"create\"},\n\t\t\texpected: expected{\n\t\t\t\tbundle: \"create\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\targv: []string{\"-b\", \"create\"},\n\t\t\texpected: expected{\n\t\t\t\tbundle: \"create\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor i, tc := range testCases {\n\t\tbundle, err := GetBundleDir(tc.argv)\n\n\t\tif tc.expected.isError {\n\t\t\trequire.Errorf(t, err, \"%d: %v\", i, tc)\n\t\t} else {\n\t\t\trequire.NoErrorf(t, err, \"%d: %v\", i, tc)\n\t\t}\n\n\t\trequire.Equalf(t, tc.expected.bundle, bundle, \"%d: %v\", i, tc)\n\t}\n}\n\nfunc TestGetSpecFilePathAppendsFilename(t *testing.T) {\n\ttestCases := []struct {\n\t\tbundleDir string\n\t\texpected  string\n\t}{\n\t\t{\n\t\t\tbundleDir: \"\",\n\t\t\texpected:  \"config.json\",\n\t\t},\n\t\t{\n\t\t\tbundleDir: \"/not/empty/\",\n\t\t\texpected:  \"/not/empty/config.json\",\n\t\t},\n\t\t{\n\t\t\tbundleDir: \"not/absolute\",\n\t\t\texpected:  \"not/absolute/config.json\",\n\t\t},\n\t}\n\n\tfor i, tc := range testCases {\n\t\tspecPath := GetSpecFilePath(tc.bundleDir)\n\n\t\trequire.Equalf(t, tc.expected, specPath, \"%d: %v\", i, tc)\n\t}\n}\n\nfunc TestHasCreateSubcommand(t *testing.T) {\n\ttestCases := []struct {\n\t\targs         []string\n\t\tshouldModify bool\n\t}{\n\t\t{\n\t\t\tshouldModify: false,\n\t\t},\n\t\t{\n\t\t\targs:         []string{\"create\"},\n\t\t\tshouldModify: true,\n\t\t},\n\t\t{\n\t\t\targs:         []string{\"--bundle=create\"},\n\t\t\tshouldModify: false,\n\t\t},\n\t\t{\n\t\t\targs:         []string{\"--bundle\", \"create\"},\n\t\t\tshouldModify: false,\n\t\t},\n\t\t{\n\t\t\targs:         []string{\"create\"},\n\t\t\tshouldModify: true,\n\t\t},\n\t}\n\n\tfor i, tc := range testCases {\n\t\trequire.Equal(t, tc.shouldModify, HasCreateSubcommand(tc.args), \"%d: %v\", i, tc)\n\t}\n}\n"
  },
  {
    "path": "internal/oci/options.go",
    "content": "/**\n# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage oci\n\nimport \"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\ntype options struct {\n\tlogger            logger.Interface\n\tallowUnkownFields bool\n}\n\ntype Option func(*options)\n\nfunc WithLogger(logger logger.Interface) Option {\n\treturn func(o *options) {\n\t\to.logger = logger\n\t}\n}\n\nfunc WithAllowUnknownFields(allowUnknownFields bool) Option {\n\treturn func(o *options) {\n\t\to.allowUnkownFields = allowUnknownFields\n\t}\n}\n"
  },
  {
    "path": "internal/oci/runtime.go",
    "content": "/*\n# Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n*/\n\npackage oci\n\n// Runtime is an interface for a runtime shim. The Exec method accepts a list\n// of command line arguments, and returns an error / nil.\n//\n//go:generate moq -rm -fmt=goimports -stub -out runtime_mock.go . Runtime\ntype Runtime interface {\n\tExec([]string) error\n\tString() string\n}\n"
  },
  {
    "path": "internal/oci/runtime_low_level.go",
    "content": "/*\n# Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n*/\n\npackage oci\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/lookup\"\n)\n\n// NewLowLevelRuntime creates a Runtime that wraps a low-level runtime executable.\n// The executable specified is taken from the list of supplied candidates, with the first match\n// present in the PATH being selected. A logger is also specified.\nfunc NewLowLevelRuntime(logger logger.Interface, candidates []string) (Runtime, error) {\n\truntimePath, err := findRuntime(logger, candidates)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error locating runtime: %v\", err)\n\t}\n\treturn NewRuntimeForPath(logger, runtimePath)\n}\n\n// findRuntime checks elements in a list of supplied candidates for a matching executable in the PATH.\n// The absolute path to the first match is returned.\nfunc findRuntime(logger logger.Interface, candidates []string) (string, error) {\n\tif len(candidates) == 0 {\n\t\treturn \"\", fmt.Errorf(\"at least one runtime candidate must be specified\")\n\t}\n\n\tlocator := lookup.NewExecutableLocator(logger, \"/\")\n\tfor _, candidate := range candidates {\n\t\tlogger.Tracef(\"Looking for runtime binary '%v'\", candidate)\n\t\ttargets, err := locator.Locate(candidate)\n\t\tif err == nil && len(targets) > 0 {\n\t\t\tlogger.Tracef(\"Found runtime binary '%v'\", targets)\n\t\t\treturn targets[0], nil\n\t\t}\n\t}\n\n\treturn \"\", fmt.Errorf(\"no runtime binary found from candidate list: %v\", candidates)\n}\n"
  },
  {
    "path": "internal/oci/runtime_mock.go",
    "content": "// Code generated by moq; DO NOT EDIT.\n// github.com/matryer/moq\n\npackage oci\n\nimport (\n\t\"sync\"\n)\n\n// Ensure, that RuntimeMock does implement Runtime.\n// If this is not the case, regenerate this file with moq.\nvar _ Runtime = &RuntimeMock{}\n\n// RuntimeMock is a mock implementation of Runtime.\n//\n//\tfunc TestSomethingThatUsesRuntime(t *testing.T) {\n//\n//\t\t// make and configure a mocked Runtime\n//\t\tmockedRuntime := &RuntimeMock{\n//\t\t\tExecFunc: func(strings []string) error {\n//\t\t\t\tpanic(\"mock out the Exec method\")\n//\t\t\t},\n//\t\t\tStringFunc: func() string {\n//\t\t\t\tpanic(\"mock out the String method\")\n//\t\t\t},\n//\t\t}\n//\n//\t\t// use mockedRuntime in code that requires Runtime\n//\t\t// and then make assertions.\n//\n//\t}\ntype RuntimeMock struct {\n\t// ExecFunc mocks the Exec method.\n\tExecFunc func(strings []string) error\n\n\t// StringFunc mocks the String method.\n\tStringFunc func() string\n\n\t// calls tracks calls to the methods.\n\tcalls struct {\n\t\t// Exec holds details about calls to the Exec method.\n\t\tExec []struct {\n\t\t\t// Strings is the strings argument value.\n\t\t\tStrings []string\n\t\t}\n\t\t// String holds details about calls to the String method.\n\t\tString []struct {\n\t\t}\n\t}\n\tlockExec   sync.RWMutex\n\tlockString sync.RWMutex\n}\n\n// Exec calls ExecFunc.\nfunc (mock *RuntimeMock) Exec(strings []string) error {\n\tcallInfo := struct {\n\t\tStrings []string\n\t}{\n\t\tStrings: strings,\n\t}\n\tmock.lockExec.Lock()\n\tmock.calls.Exec = append(mock.calls.Exec, callInfo)\n\tmock.lockExec.Unlock()\n\tif mock.ExecFunc == nil {\n\t\tvar (\n\t\t\terrOut error\n\t\t)\n\t\treturn errOut\n\t}\n\treturn mock.ExecFunc(strings)\n}\n\n// ExecCalls gets all the calls that were made to Exec.\n// Check the length with:\n//\n//\tlen(mockedRuntime.ExecCalls())\nfunc (mock *RuntimeMock) ExecCalls() []struct {\n\tStrings []string\n} {\n\tvar calls []struct {\n\t\tStrings []string\n\t}\n\tmock.lockExec.RLock()\n\tcalls = mock.calls.Exec\n\tmock.lockExec.RUnlock()\n\treturn calls\n}\n\n// String calls StringFunc.\nfunc (mock *RuntimeMock) String() string {\n\tcallInfo := struct {\n\t}{}\n\tmock.lockString.Lock()\n\tmock.calls.String = append(mock.calls.String, callInfo)\n\tmock.lockString.Unlock()\n\tif mock.StringFunc == nil {\n\t\tvar (\n\t\t\tsOut string\n\t\t)\n\t\treturn sOut\n\t}\n\treturn mock.StringFunc()\n}\n\n// StringCalls gets all the calls that were made to String.\n// Check the length with:\n//\n//\tlen(mockedRuntime.StringCalls())\nfunc (mock *RuntimeMock) StringCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockString.RLock()\n\tcalls = mock.calls.String\n\tmock.lockString.RUnlock()\n\treturn calls\n}\n"
  },
  {
    "path": "internal/oci/runtime_modifier.go",
    "content": "/*\n# Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n*/\n\npackage oci\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n)\n\ntype modifyingRuntimeWrapper struct {\n\tlogger   logger.Interface\n\truntime  Runtime\n\tociSpec  Spec\n\tmodifier SpecModifier\n}\n\nvar _ Runtime = (*modifyingRuntimeWrapper)(nil)\n\n// NewModifyingRuntimeWrapper creates a runtime wrapper that applies the specified modifier to the OCI specification\n// before invoking the wrapped runtime. If the modifier is nil, the input runtime is returned.\nfunc NewModifyingRuntimeWrapper(logger logger.Interface, runtime Runtime, spec Spec, modifier SpecModifier) Runtime {\n\tif modifier == nil {\n\t\tlogger.Tracef(\"Using low-level runtime with no modification\")\n\t\treturn runtime\n\t}\n\n\trt := modifyingRuntimeWrapper{\n\t\tlogger:   logger,\n\t\truntime:  runtime,\n\t\tociSpec:  spec,\n\t\tmodifier: modifier,\n\t}\n\treturn &rt\n}\n\n// Exec checks whether a modification of the OCI specification is required and modifies it accordingly before exec-ing\n// into the wrapped runtime.\nfunc (r *modifyingRuntimeWrapper) Exec(args []string) error {\n\tif HasCreateSubcommand(args) {\n\t\tr.logger.Debugf(\"Create command detected; applying OCI specification modifications\")\n\t\terr := r.modify()\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"could not apply required modification to OCI specification: %w\", err)\n\t\t}\n\t\tr.logger.Debugf(\"Applied required modification to OCI specification\")\n\t}\n\n\tr.logger.Debugf(\"Forwarding command to runtime %v\", r.runtime.String())\n\treturn r.runtime.Exec(args)\n}\n\n// modify loads, modifies, and flushes the OCI specification using the defined Modifier\nfunc (r *modifyingRuntimeWrapper) modify() error {\n\t_, err := r.ociSpec.Load()\n\tif err != nil {\n\t\treturn fmt.Errorf(\"error loading OCI specification for modification: %v\", err)\n\t}\n\n\terr = r.ociSpec.Modify(r.modifier)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"error modifying OCI spec: %v\", err)\n\t}\n\n\terr = r.ociSpec.Flush()\n\tif err != nil {\n\t\treturn fmt.Errorf(\"error writing modified OCI specification: %v\", err)\n\t}\n\treturn nil\n}\n\n// String returns a string representation of the runtime.\nfunc (r *modifyingRuntimeWrapper) String() string {\n\treturn fmt.Sprintf(\"modify on-create and forward to %s\", r.runtime.String())\n}\n"
  },
  {
    "path": "internal/oci/runtime_modifier_test.go",
    "content": "/*\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n*/\n\npackage oci\n\nimport (\n\t\"fmt\"\n\t\"testing\"\n\n\t\"github.com/opencontainers/runtime-spec/specs-go\"\n\ttestlog \"github.com/sirupsen/logrus/hooks/test\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestExec(t *testing.T) {\n\tlogger, hook := testlog.NewNullLogger()\n\n\ttestCases := []struct {\n\t\tdescription   string\n\t\tshouldLoad    bool\n\t\tshouldModify  bool\n\t\tshouldFlush   bool\n\t\tshouldForward bool\n\t\targs          []string\n\t\tmodifyError   error\n\t\twriteError    error\n\t\tmodifer       SpecModifier\n\t}{\n\t\t{\n\t\t\tdescription:   \"no args forwards\",\n\t\t\tshouldLoad:    false,\n\t\t\tshouldModify:  false,\n\t\t\tshouldFlush:   false,\n\t\t\tshouldForward: true,\n\t\t\tmodifer:       &modiferMock{},\n\t\t},\n\t\t{\n\t\t\tdescription:   \"create modifies\",\n\t\t\targs:          []string{\"create\"},\n\t\t\tshouldLoad:    true,\n\t\t\tshouldModify:  true,\n\t\t\tshouldFlush:   true,\n\t\t\tshouldForward: true,\n\t\t\tmodifer:       &modiferMock{},\n\t\t},\n\t\t{\n\t\t\tdescription:   \"modify error does not write or forward\",\n\t\t\targs:          []string{\"create\"},\n\t\t\tmodifyError:   fmt.Errorf(\"error modifying\"),\n\t\t\tshouldLoad:    true,\n\t\t\tshouldModify:  true,\n\t\t\tshouldFlush:   false,\n\t\t\tshouldForward: false,\n\t\t\tmodifer:       &modiferMock{},\n\t\t},\n\t\t{\n\t\t\tdescription:   \"write error does not forward\",\n\t\t\targs:          []string{\"create\"},\n\t\t\twriteError:    fmt.Errorf(\"error writing\"),\n\t\t\tshouldLoad:    true,\n\t\t\tshouldModify:  true,\n\t\t\tshouldFlush:   true,\n\t\t\tshouldForward: false,\n\t\t\tmodifer:       &modiferMock{},\n\t\t},\n\t\t{\n\t\t\tdescription:   \"nil modifier forwards on create\",\n\t\t\targs:          []string{\"create\"},\n\t\t\tshouldLoad:    false,\n\t\t\tshouldModify:  false,\n\t\t\tshouldFlush:   false,\n\t\t\tshouldForward: true,\n\t\t\tmodifer:       nil,\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\thook.Reset()\n\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\truntimeMock := &RuntimeMock{}\n\t\t\tspecMock := &SpecMock{\n\t\t\t\tModifyFunc: func(specModifier SpecModifier) error {\n\t\t\t\t\treturn tc.modifyError\n\t\t\t\t},\n\t\t\t\tFlushFunc: func() error {\n\t\t\t\t\treturn tc.writeError\n\t\t\t\t},\n\t\t\t}\n\n\t\t\tshim := NewModifyingRuntimeWrapper(\n\t\t\t\tlogger,\n\t\t\t\truntimeMock,\n\t\t\t\tspecMock,\n\t\t\t\t// TODO: We should test the interactions with the SpecModifier too\n\t\t\t\ttc.modifer,\n\t\t\t)\n\n\t\t\terr := shim.Exec(tc.args)\n\t\t\tif tc.modifyError != nil || tc.writeError != nil {\n\t\t\t\trequire.Error(t, err)\n\t\t\t} else {\n\t\t\t\trequire.NoError(t, err)\n\t\t\t}\n\n\t\t\tif tc.shouldLoad {\n\t\t\t\trequire.Equal(t, 1, len(specMock.LoadCalls()))\n\t\t\t} else {\n\t\t\t\trequire.Equal(t, 0, len(specMock.LoadCalls()))\n\t\t\t}\n\t\t\tif tc.shouldModify {\n\t\t\t\trequire.Equal(t, 1, len(specMock.ModifyCalls()))\n\t\t\t} else {\n\t\t\t\trequire.Equal(t, 0, len(specMock.ModifyCalls()))\n\t\t\t}\n\t\t\tif tc.shouldFlush {\n\t\t\t\trequire.Equal(t, 1, len(specMock.FlushCalls()))\n\t\t\t} else {\n\t\t\t\trequire.Equal(t, 0, len(specMock.FlushCalls()))\n\t\t\t}\n\t\t\tif tc.shouldForward {\n\t\t\t\trequire.Equal(t, 1, len(runtimeMock.ExecCalls()))\n\t\t\t} else {\n\t\t\t\trequire.Equal(t, 0, len(runtimeMock.ExecCalls()))\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestNilModiferReturnsRuntime(t *testing.T) {\n\tlogger, _ := testlog.NewNullLogger()\n\n\truntimeMock := &RuntimeMock{}\n\tspecMock := &SpecMock{}\n\n\tshim := NewModifyingRuntimeWrapper(\n\t\tlogger,\n\t\truntimeMock,\n\t\tspecMock,\n\t\tnil,\n\t)\n\n\trequire.Equal(t, runtimeMock, shim)\n}\n\ntype modiferMock struct{}\n\nfunc (m modiferMock) Modify(*specs.Spec) error {\n\treturn nil\n}\n"
  },
  {
    "path": "internal/oci/runtime_path.go",
    "content": "/*\n# Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n*/\n\npackage oci\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n)\n\n// pathRuntime wraps the path that a binary and defines the semantics for how to exec into it.\n// This can be used to wrap an OCI-compliant low-level runtime binary, allowing it to be used through the\n// Runtime internface.\ntype pathRuntime struct {\n\tlogger      logger.Interface\n\tpath        string\n\texecRuntime Runtime\n}\n\nvar _ Runtime = (*pathRuntime)(nil)\n\n// NewRuntimeForPath creates a Runtime for the specified logger and path\nfunc NewRuntimeForPath(logger logger.Interface, path string) (Runtime, error) {\n\tinfo, err := os.Stat(path)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"invalid path '%v': %v\", path, err)\n\t}\n\tif info.IsDir() || info.Mode()&0111 == 0 {\n\t\treturn nil, fmt.Errorf(\"specified path '%v' is not an executable file\", path)\n\t}\n\n\tshim := pathRuntime{\n\t\tlogger:      logger,\n\t\tpath:        path,\n\t\texecRuntime: syscallExec{},\n\t}\n\n\treturn &shim, nil\n}\n\n// Exec exces into the binary at the path from the pathRuntime struct, passing it the supplied arguments\n// after ensuring that the first argument is the path of the target binary.\nfunc (s pathRuntime) Exec(args []string) error {\n\truntimeArgs := []string{s.path}\n\tif len(args) > 1 {\n\t\truntimeArgs = append(runtimeArgs, args[1:]...)\n\t}\n\n\treturn s.execRuntime.Exec(runtimeArgs)\n}\n\n// String returns the path to the specified runtime as the string representation.\nfunc (s pathRuntime) String() string {\n\treturn s.path\n}\n"
  },
  {
    "path": "internal/oci/runtime_path_test.go",
    "content": "/*\n# Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n*/\npackage oci\n\nimport (\n\t\"fmt\"\n\t\"testing\"\n\n\ttestlog \"github.com/sirupsen/logrus/hooks/test\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestPathRuntimeConstructor(t *testing.T) {\n\tlogger, _ := testlog.NewNullLogger()\n\n\tr, err := NewRuntimeForPath(logger, \"////an/invalid/path\")\n\trequire.Error(t, err)\n\trequire.Nil(t, r)\n\n\tr, err = NewRuntimeForPath(logger, \"/tmp\")\n\trequire.Error(t, err)\n\trequire.Nil(t, r)\n\n\tr, err = NewRuntimeForPath(logger, \"/dev/null\")\n\trequire.Error(t, err)\n\trequire.Nil(t, r)\n\n\tr, err = NewRuntimeForPath(logger, \"/bin/sh\")\n\trequire.NoError(t, err)\n\n\tf, ok := r.(*pathRuntime)\n\trequire.True(t, ok)\n\n\trequire.Equal(t, \"/bin/sh\", f.path)\n}\n\nfunc TestPathRuntimeForwardsArgs(t *testing.T) {\n\tlogger, _ := testlog.NewNullLogger()\n\n\ttestCases := []struct {\n\t\texecRuntimeError error\n\t\targs             []string\n\t}{\n\t\t{},\n\t\t{\n\t\t\targs: []string{\"shouldBeReplaced\"},\n\t\t},\n\t\t{\n\t\t\targs: []string{\"shouldBeReplaced\", \"arg1\"},\n\t\t},\n\t\t{\n\t\t\texecRuntimeError: fmt.Errorf(\"exec error\"),\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tmockedRuntime := &RuntimeMock{\n\t\t\tExecFunc: func(strings []string) error {\n\t\t\t\treturn tc.execRuntimeError\n\t\t\t},\n\t\t}\n\t\tr := pathRuntime{\n\t\t\tlogger:      logger,\n\t\t\tpath:        \"runtime\",\n\t\t\texecRuntime: mockedRuntime,\n\t\t}\n\t\terr := r.Exec(tc.args)\n\n\t\trequire.ErrorIs(t, err, tc.execRuntimeError)\n\n\t\tcalls := mockedRuntime.ExecCalls()\n\t\trequire.Len(t, calls, 1)\n\n\t\tnumArgs := len(tc.args)\n\t\tif numArgs == 0 {\n\t\t\tnumArgs = 1\n\t\t}\n\n\t\trequire.Len(t, calls[0].Strings, numArgs)\n\t\trequire.Equal(t, \"runtime\", calls[0].Strings[0])\n\n\t\tif numArgs > 1 {\n\t\t\trequire.EqualValues(t, tc.args[1:], calls[0].Strings[1:])\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "internal/oci/runtime_syscall_exec.go",
    "content": "/*\n# Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n*/\n\npackage oci\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"syscall\"\n)\n\ntype syscallExec struct{}\n\nvar _ Runtime = (*syscallExec)(nil)\n\nfunc (r syscallExec) Exec(args []string) error {\n\t//nolint:gosec // TODO: Can we harden this so that there is less risk of command injection\n\terr := syscall.Exec(args[0], args, os.Environ())\n\tif err != nil {\n\t\treturn fmt.Errorf(\"could not exec '%v': %v\", args[0], err)\n\t}\n\n\t// syscall.Exec is not expected to return. This is an error state regardless of whether\n\t// err is nil or not.\n\treturn fmt.Errorf(\"unexpected return from exec '%v'\", args[0])\n}\n\nfunc (r syscallExec) String() string {\n\treturn \"exec\"\n}\n"
  },
  {
    "path": "internal/oci/spec.go",
    "content": "/*\n# Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n*/\n\npackage oci\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/opencontainers/runtime-spec/specs-go\"\n)\n\n// SpecModifier defines an interface for modifying a (raw) OCI spec\ntype SpecModifier interface {\n\t// Modify is a method that accepts a pointer to an OCI Spec and returns an\n\t// error. The intention is that the function would modify the spec in-place.\n\tModify(*specs.Spec) error\n}\n\n// SpecModifiers is a collection of OCI Spec modifiers that can be treated as a\n// single modifier.\ntype SpecModifiers []SpecModifier\n\nvar _ SpecModifier = (SpecModifiers)(nil)\n\n// Spec defines the operations to be performed on an OCI specification\n//\n//go:generate moq -rm -fmt=goimports -stub -out spec_mock.go . Spec\ntype Spec interface {\n\tLoad() (*specs.Spec, error)\n\tFlush() error\n\tModify(SpecModifier) error\n\tLookupEnv(string) (string, bool)\n}\n\n// NewSpec creates fileSpec based on the command line arguments passed to the\n// application using the specified logger.\nfunc NewSpec(args []string, opts ...Option) (Spec, error) {\n\to := &options{\n\t\tallowUnkownFields: false,\n\t}\n\tfor _, opt := range opts {\n\t\topt(o)\n\t}\n\n\tbundleDir, err := GetBundleDir(args)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error getting bundle directory: %v\", err)\n\t}\n\to.logger.Debugf(\"Using bundle directory: %v\", bundleDir)\n\n\tociSpecPath := GetSpecFilePath(bundleDir)\n\to.logger.Infof(\"Using OCI specification file path: %v\", ociSpecPath)\n\n\tociSpec := NewFileSpec(ociSpecPath, !o.allowUnkownFields)\n\n\treturn ociSpec, nil\n}\n\n// Modify a spec based on a collection of modifiers.\nfunc (ms SpecModifiers) Modify(s *specs.Spec) error {\n\tfor _, m := range ms {\n\t\tif m == nil {\n\t\t\tcontinue\n\t\t}\n\t\tif err := m.Modify(s); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "internal/oci/spec_file.go",
    "content": "/*\n# Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n*/\n\npackage oci\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\n\t\"github.com/opencontainers/runtime-spec/specs-go\"\n)\n\ntype fileSpec struct {\n\tmemorySpec\n\tpath string\n\tloader\n}\n\ntype loader bool\n\nconst (\n\tstrictLoader = loader(true)\n)\n\nvar _ Spec = (*fileSpec)(nil)\n\n// NewFileSpec creates an object that encapsulates a file-backed OCI spec.\n// This can be used to read from the file, modify the spec, and write to the\n// same file.\nfunc NewFileSpec(filepath string, isStrict bool) Spec {\n\tvar loader loader\n\tif isStrict {\n\t\tloader = strictLoader\n\t}\n\toci := fileSpec{\n\t\tpath:   filepath,\n\t\tloader: loader,\n\t}\n\n\treturn &oci\n}\n\n// Load reads the contents of an OCI spec from file to be referenced internally.\n// The file is opened \"read-only\"\nfunc (s *fileSpec) Load() (*specs.Spec, error) {\n\tspecFile, err := os.Open(s.path)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error opening OCI specification file: %v\", err)\n\t}\n\tdefer specFile.Close()\n\n\tspec, err := s.loadFrom(specFile)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error loading OCI specification from file: %v\", err)\n\t}\n\ts.Spec = spec\n\treturn s.Spec, nil\n}\n\n// LoadFrom reads the contents of the OCI spec from the specified io.Reader.\nfunc (isStrict loader) loadFrom(reader io.Reader) (*specs.Spec, error) {\n\tdecoder := json.NewDecoder(reader)\n\tif isStrict {\n\t\tdecoder.DisallowUnknownFields()\n\t}\n\n\tvar spec specs.Spec\n\n\terr := decoder.Decode(&spec)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error reading OCI specification: %v\", err)\n\t}\n\n\treturn &spec, nil\n}\n\n// Modify applies the specified SpecModifier to the stored OCI specification.\nfunc (s *fileSpec) Modify(m SpecModifier) error {\n\treturn s.memorySpec.Modify(m)\n}\n\n// Flush writes the stored OCI specification to the filepath specified by the path member.\n// The file is truncated upon opening, overwriting any existing contents.\nfunc (s fileSpec) Flush() error {\n\tif s.Spec == nil {\n\t\treturn fmt.Errorf(\"no OCI specification loaded\")\n\t}\n\n\tspecFile, err := os.Create(s.path)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"error opening OCI specification file: %v\", err)\n\t}\n\tdefer specFile.Close()\n\n\treturn flushTo(s.Spec, specFile)\n}\n\n// flushTo writes the stored OCI specification to the specified io.Writer.\nfunc flushTo(spec *specs.Spec, writer io.Writer) error {\n\tif spec == nil {\n\t\treturn nil\n\t}\n\tencoder := json.NewEncoder(writer)\n\n\terr := encoder.Encode(spec)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"error writing OCI specification: %v\", err)\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "internal/oci/spec_file_test.go",
    "content": "/*\n# Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n*/\n\npackage oci\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"testing\"\n\n\t\"github.com/opencontainers/runtime-spec/specs-go\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestLoadFrom(t *testing.T) {\n\ttestCases := []struct {\n\t\tcontents []byte\n\t\tisError  bool\n\t\tspec     *specs.Spec\n\t}{\n\t\t{\n\t\t\tcontents: []byte{},\n\t\t\tisError:  true,\n\t\t},\n\t\t{\n\t\t\tcontents: []byte(\"{}\"),\n\t\t\tisError:  false,\n\t\t\tspec:     &specs.Spec{},\n\t\t},\n\t}\n\n\tfor i, tc := range testCases {\n\t\tvar spec *specs.Spec\n\t\tspec, err := strictLoader.loadFrom(bytes.NewReader(tc.contents))\n\n\t\tif tc.isError {\n\t\t\trequire.Error(t, err, \"%d: %v\", i, tc)\n\t\t} else {\n\t\t\trequire.NoError(t, err, \"%d: %v\", i, tc)\n\t\t}\n\n\t\tif tc.spec == nil {\n\t\t\trequire.Nil(t, spec, \"%d: %v\", i, tc)\n\t\t} else {\n\t\t\trequire.EqualValues(t, tc.spec, spec, \"%d: %v\", i, tc)\n\t\t}\n\t}\n}\n\nfunc TestFlushTo(t *testing.T) {\n\ttestCases := []struct {\n\t\tisError  bool\n\t\tspec     *specs.Spec\n\t\tcontents string\n\t}{\n\t\t{\n\t\t\tspec: nil,\n\t\t},\n\t\t{\n\t\t\tspec:     &specs.Spec{},\n\t\t\tcontents: \"{\\\"ociVersion\\\":\\\"\\\"}\\n\",\n\t\t},\n\t}\n\n\tfor i, tc := range testCases {\n\t\tbuffer := bytes.Buffer{}\n\n\t\terr := flushTo(tc.spec, &buffer)\n\n\t\tif tc.isError {\n\t\t\trequire.Error(t, err, \"%d: %v\", i, tc)\n\t\t} else {\n\t\t\trequire.NoError(t, err, \"%d: %v\", i, tc)\n\t\t}\n\n\t\trequire.EqualValues(t, tc.contents, buffer.String(), \"%d: %v\", i, tc)\n\t}\n\n\t// Add a simple test for a writer that returns an error when writing\n\terr := flushTo(&specs.Spec{}, errorWriter{})\n\trequire.Error(t, err)\n}\n\n// errorWriter implements the io.Writer interface, always returning an error when\n// writing.\ntype errorWriter struct{}\n\nfunc (e errorWriter) Write([]byte) (int, error) {\n\treturn 0, fmt.Errorf(\"error writing\")\n}\n"
  },
  {
    "path": "internal/oci/spec_memory.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage oci\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\t\"github.com/opencontainers/runtime-spec/specs-go\"\n)\n\ntype memorySpec struct {\n\t*specs.Spec\n}\n\n// NewMemorySpec creates a Spec instance from the specified OCI spec\nfunc NewMemorySpec(spec *specs.Spec) Spec {\n\ts := memorySpec{\n\t\tSpec: spec,\n\t}\n\n\treturn &s\n}\n\n// Load is a no-op for the memorySpec spec\nfunc (s *memorySpec) Load() (*specs.Spec, error) {\n\treturn s.Spec, nil\n}\n\n// Flush is a no-op for the memorySpec spec\nfunc (s *memorySpec) Flush() error {\n\treturn nil\n}\n\n// Modify applies the specified SpecModifier to the stored OCI specification.\nfunc (s *memorySpec) Modify(m SpecModifier) error {\n\tif s.Spec == nil {\n\t\treturn fmt.Errorf(\"cannot modify nil spec\")\n\t}\n\treturn m.Modify(s.Spec)\n}\n\n// LookupEnv mirrors os.LookupEnv for the OCI specification. It\n// retrieves the value of the environment variable named\n// by the key. If the variable is present in the environment the\n// value (which may be empty) is returned and the boolean is true.\n// Otherwise the returned value will be empty and the boolean will\n// be false.\nfunc (s memorySpec) LookupEnv(key string) (string, bool) {\n\tif s.Spec == nil || s.Process == nil {\n\t\treturn \"\", false\n\t}\n\n\tfor _, env := range s.Process.Env {\n\t\tif !strings.HasPrefix(env, key) {\n\t\t\tcontinue\n\t\t}\n\n\t\tparts := strings.SplitN(env, \"=\", 2)\n\t\tif parts[0] == key {\n\t\t\tif len(parts) < 2 {\n\t\t\t\treturn \"\", true\n\t\t\t}\n\t\t\treturn parts[1], true\n\t\t}\n\t}\n\n\treturn \"\", false\n}\n"
  },
  {
    "path": "internal/oci/spec_memory_test.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage oci\n\nimport (\n\t\"fmt\"\n\t\"testing\"\n\n\t\"github.com/opencontainers/runtime-spec/specs-go\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestLookupEnv(t *testing.T) {\n\tconst envName = \"TEST_ENV\"\n\ttestCases := []struct {\n\t\tspec          *specs.Spec\n\t\texpectedValue string\n\t\texpectedExits bool\n\t}{\n\t\t{\n\t\t\t// nil spec\n\t\t\tspec:          nil,\n\t\t\texpectedValue: \"\",\n\t\t\texpectedExits: false,\n\t\t},\n\t\t{\n\t\t\t// nil process\n\t\t\tspec:          &specs.Spec{},\n\t\t\texpectedValue: \"\",\n\t\t\texpectedExits: false,\n\t\t},\n\t\t{\n\t\t\t// nil env\n\t\t\tspec: &specs.Spec{\n\t\t\t\tProcess: &specs.Process{},\n\t\t\t},\n\t\t\texpectedValue: \"\",\n\t\t\texpectedExits: false,\n\t\t},\n\t\t{\n\t\t\t// empty env\n\t\t\tspec: &specs.Spec{\n\t\t\t\tProcess: &specs.Process{Env: []string{}},\n\t\t\t},\n\t\t\texpectedValue: \"\",\n\t\t\texpectedExits: false,\n\t\t},\n\t\t{\n\t\t\t// different env set\n\t\t\tspec: &specs.Spec{\n\t\t\t\tProcess: &specs.Process{Env: []string{\"SOMETHING_ELSE=foo\"}},\n\t\t\t},\n\t\t\texpectedValue: \"\",\n\t\t\texpectedExits: false,\n\t\t},\n\t\t{\n\t\t\t// same prefix\n\t\t\tspec: &specs.Spec{\n\t\t\t\tProcess: &specs.Process{Env: []string{\"TEST_ENV_BUT_NOT=foo\"}},\n\t\t\t},\n\t\t\texpectedValue: \"\",\n\t\t\texpectedExits: false,\n\t\t},\n\t\t{\n\t\t\t// same suffix\n\t\t\tspec: &specs.Spec{\n\t\t\t\tProcess: &specs.Process{Env: []string{\"NOT_TEST_ENV=foo\"}},\n\t\t\t},\n\t\t\texpectedValue: \"\",\n\t\t\texpectedExits: false,\n\t\t},\n\t\t{\n\t\t\t// set blank\n\t\t\tspec: &specs.Spec{\n\t\t\t\tProcess: &specs.Process{Env: []string{\"TEST_ENV=\"}},\n\t\t\t},\n\t\t\texpectedValue: \"\",\n\t\t\texpectedExits: true,\n\t\t},\n\t\t{\n\t\t\t// set no-equals\n\t\t\tspec: &specs.Spec{\n\t\t\t\tProcess: &specs.Process{Env: []string{\"TEST_ENV\"}},\n\t\t\t},\n\t\t\texpectedValue: \"\",\n\t\t\texpectedExits: true,\n\t\t},\n\t\t{\n\t\t\t// set value\n\t\t\tspec: &specs.Spec{\n\t\t\t\tProcess: &specs.Process{Env: []string{\"TEST_ENV=something\"}},\n\t\t\t},\n\t\t\texpectedValue: \"something\",\n\t\t\texpectedExits: true,\n\t\t},\n\t\t{\n\t\t\t// set with equals\n\t\t\tspec: &specs.Spec{\n\t\t\t\tProcess: &specs.Process{Env: []string{\"TEST_ENV=something=somethingelse\"}},\n\t\t\t},\n\t\t\texpectedValue: \"something=somethingelse\",\n\t\t\texpectedExits: true,\n\t\t},\n\t}\n\n\tfor i, tc := range testCases {\n\t\tspec := memorySpec{\n\t\t\tSpec: tc.spec,\n\t\t}\n\n\t\tvalue, exists := spec.LookupEnv(envName)\n\n\t\trequire.Equal(t, tc.expectedValue, value, \"%d: %v\", i, tc)\n\t\trequire.Equal(t, tc.expectedExits, exists, \"%d: %v\", i, tc)\n\t}\n}\n\nfunc TestModify(t *testing.T) {\n\n\ttestCases := []struct {\n\t\tspec          *specs.Spec\n\t\tmodifierError error\n\t}{\n\t\t{\n\t\t\tspec: nil,\n\t\t},\n\t\t{\n\t\t\tspec: &specs.Spec{},\n\t\t},\n\t\t{\n\t\t\tspec:          &specs.Spec{},\n\t\t\tmodifierError: fmt.Errorf(\"error in modifier\"),\n\t\t},\n\t}\n\n\tfor i, tc := range testCases {\n\t\tspec := NewMemorySpec(tc.spec).(*memorySpec)\n\n\t\terr := spec.Modify(modifier{tc.modifierError})\n\n\t\tswitch {\n\t\tcase tc.spec == nil:\n\t\t\trequire.Error(t, err, \"%d: %v\", i, tc)\n\t\tcase tc.modifierError != nil:\n\t\t\trequire.EqualError(t, err, tc.modifierError.Error(), \"%d: %v\", i, tc)\n\t\t\trequire.EqualValues(t, &specs.Spec{}, spec.Spec, \"%d: %v\", i, tc)\n\t\tdefault:\n\t\t\trequire.NoError(t, err, \"%d: %v\", i, tc)\n\t\t\trequire.Equal(t, \"updated\", spec.Version, \"%d: %v\", i, tc)\n\t\t}\n\t}\n}\n\n// TODO: Ideally we would generated a mock for the SpecModifer too. This causes\n// an import cycle and we define a local type as a work-around.\ntype modifier struct {\n\tmodifierError error\n}\n\nfunc (m modifier) Modify(spec *specs.Spec) error {\n\tif m.modifierError == nil {\n\t\tspec.Version = \"updated\"\n\t}\n\treturn m.modifierError\n}\n"
  },
  {
    "path": "internal/oci/spec_mock.go",
    "content": "// Code generated by moq; DO NOT EDIT.\n// github.com/matryer/moq\n\npackage oci\n\nimport (\n\t\"sync\"\n\n\t\"github.com/opencontainers/runtime-spec/specs-go\"\n)\n\n// Ensure, that SpecMock does implement Spec.\n// If this is not the case, regenerate this file with moq.\nvar _ Spec = &SpecMock{}\n\n// SpecMock is a mock implementation of Spec.\n//\n//\tfunc TestSomethingThatUsesSpec(t *testing.T) {\n//\n//\t\t// make and configure a mocked Spec\n//\t\tmockedSpec := &SpecMock{\n//\t\t\tFlushFunc: func() error {\n//\t\t\t\tpanic(\"mock out the Flush method\")\n//\t\t\t},\n//\t\t\tLoadFunc: func() (*specs.Spec, error) {\n//\t\t\t\tpanic(\"mock out the Load method\")\n//\t\t\t},\n//\t\t\tLookupEnvFunc: func(s string) (string, bool) {\n//\t\t\t\tpanic(\"mock out the LookupEnv method\")\n//\t\t\t},\n//\t\t\tModifyFunc: func(specModifier SpecModifier) error {\n//\t\t\t\tpanic(\"mock out the Modify method\")\n//\t\t\t},\n//\t\t}\n//\n//\t\t// use mockedSpec in code that requires Spec\n//\t\t// and then make assertions.\n//\n//\t}\ntype SpecMock struct {\n\t// FlushFunc mocks the Flush method.\n\tFlushFunc func() error\n\n\t// LoadFunc mocks the Load method.\n\tLoadFunc func() (*specs.Spec, error)\n\n\t// LookupEnvFunc mocks the LookupEnv method.\n\tLookupEnvFunc func(s string) (string, bool)\n\n\t// ModifyFunc mocks the Modify method.\n\tModifyFunc func(specModifier SpecModifier) error\n\n\t// calls tracks calls to the methods.\n\tcalls struct {\n\t\t// Flush holds details about calls to the Flush method.\n\t\tFlush []struct {\n\t\t}\n\t\t// Load holds details about calls to the Load method.\n\t\tLoad []struct {\n\t\t}\n\t\t// LookupEnv holds details about calls to the LookupEnv method.\n\t\tLookupEnv []struct {\n\t\t\t// S is the s argument value.\n\t\t\tS string\n\t\t}\n\t\t// Modify holds details about calls to the Modify method.\n\t\tModify []struct {\n\t\t\t// SpecModifier is the specModifier argument value.\n\t\t\tSpecModifier SpecModifier\n\t\t}\n\t}\n\tlockFlush     sync.RWMutex\n\tlockLoad      sync.RWMutex\n\tlockLookupEnv sync.RWMutex\n\tlockModify    sync.RWMutex\n}\n\n// Flush calls FlushFunc.\nfunc (mock *SpecMock) Flush() error {\n\tcallInfo := struct {\n\t}{}\n\tmock.lockFlush.Lock()\n\tmock.calls.Flush = append(mock.calls.Flush, callInfo)\n\tmock.lockFlush.Unlock()\n\tif mock.FlushFunc == nil {\n\t\tvar (\n\t\t\terrOut error\n\t\t)\n\t\treturn errOut\n\t}\n\treturn mock.FlushFunc()\n}\n\n// FlushCalls gets all the calls that were made to Flush.\n// Check the length with:\n//\n//\tlen(mockedSpec.FlushCalls())\nfunc (mock *SpecMock) FlushCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockFlush.RLock()\n\tcalls = mock.calls.Flush\n\tmock.lockFlush.RUnlock()\n\treturn calls\n}\n\n// Load calls LoadFunc.\nfunc (mock *SpecMock) Load() (*specs.Spec, error) {\n\tcallInfo := struct {\n\t}{}\n\tmock.lockLoad.Lock()\n\tmock.calls.Load = append(mock.calls.Load, callInfo)\n\tmock.lockLoad.Unlock()\n\tif mock.LoadFunc == nil {\n\t\tvar (\n\t\t\tspecOut *specs.Spec\n\t\t\terrOut  error\n\t\t)\n\t\treturn specOut, errOut\n\t}\n\treturn mock.LoadFunc()\n}\n\n// LoadCalls gets all the calls that were made to Load.\n// Check the length with:\n//\n//\tlen(mockedSpec.LoadCalls())\nfunc (mock *SpecMock) LoadCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockLoad.RLock()\n\tcalls = mock.calls.Load\n\tmock.lockLoad.RUnlock()\n\treturn calls\n}\n\n// LookupEnv calls LookupEnvFunc.\nfunc (mock *SpecMock) LookupEnv(s string) (string, bool) {\n\tcallInfo := struct {\n\t\tS string\n\t}{\n\t\tS: s,\n\t}\n\tmock.lockLookupEnv.Lock()\n\tmock.calls.LookupEnv = append(mock.calls.LookupEnv, callInfo)\n\tmock.lockLookupEnv.Unlock()\n\tif mock.LookupEnvFunc == nil {\n\t\tvar (\n\t\t\tsOut string\n\t\t\tbOut bool\n\t\t)\n\t\treturn sOut, bOut\n\t}\n\treturn mock.LookupEnvFunc(s)\n}\n\n// LookupEnvCalls gets all the calls that were made to LookupEnv.\n// Check the length with:\n//\n//\tlen(mockedSpec.LookupEnvCalls())\nfunc (mock *SpecMock) LookupEnvCalls() []struct {\n\tS string\n} {\n\tvar calls []struct {\n\t\tS string\n\t}\n\tmock.lockLookupEnv.RLock()\n\tcalls = mock.calls.LookupEnv\n\tmock.lockLookupEnv.RUnlock()\n\treturn calls\n}\n\n// Modify calls ModifyFunc.\nfunc (mock *SpecMock) Modify(specModifier SpecModifier) error {\n\tcallInfo := struct {\n\t\tSpecModifier SpecModifier\n\t}{\n\t\tSpecModifier: specModifier,\n\t}\n\tmock.lockModify.Lock()\n\tmock.calls.Modify = append(mock.calls.Modify, callInfo)\n\tmock.lockModify.Unlock()\n\tif mock.ModifyFunc == nil {\n\t\tvar (\n\t\t\terrOut error\n\t\t)\n\t\treturn errOut\n\t}\n\treturn mock.ModifyFunc(specModifier)\n}\n\n// ModifyCalls gets all the calls that were made to Modify.\n// Check the length with:\n//\n//\tlen(mockedSpec.ModifyCalls())\nfunc (mock *SpecMock) ModifyCalls() []struct {\n\tSpecModifier SpecModifier\n} {\n\tvar calls []struct {\n\t\tSpecModifier SpecModifier\n\t}\n\tmock.lockModify.RLock()\n\tcalls = mock.calls.Modify\n\tmock.lockModify.RUnlock()\n\treturn calls\n}\n"
  },
  {
    "path": "internal/oci/spec_test.go",
    "content": "package oci\n\nimport (\n\t\"os\"\n\t\"path/filepath\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/test\"\n)\n\nfunc TestMaintainSpec(t *testing.T) {\n\tmoduleRoot, err := test.GetModuleRoot()\n\trequire.NoError(t, err)\n\n\tfiles := []string{\n\t\t\"config.clone3.json\",\n\t}\n\n\tfor _, f := range files {\n\t\tinputSpecPath := filepath.Join(moduleRoot, \"tests/input\", f)\n\n\t\tspec := NewFileSpec(inputSpecPath, true).(*fileSpec)\n\n\t\t_, err := spec.Load()\n\t\trequire.NoError(t, err)\n\n\t\toutputSpecPath := filepath.Join(moduleRoot, \"tests/output\", f)\n\t\tspec.path = outputSpecPath\n\t\tspec.Flush()\n\n\t\tinputContents, err := os.ReadFile(inputSpecPath)\n\t\trequire.NoError(t, err)\n\n\t\toutputContents, err := os.ReadFile(outputSpecPath)\n\t\trequire.NoError(t, err)\n\n\t\trequire.JSONEq(t, string(inputContents), string(outputContents))\n\t}\n}\n"
  },
  {
    "path": "internal/oci/state.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage oci\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"path/filepath\"\n\n\t\"github.com/opencontainers/runtime-spec/specs-go\"\n)\n\n// State stores an OCI container state. This includes the spec path and the environment\ntype State specs.State\n\n// LoadContainerState loads the container state from the specified filename. If the filename is empty or '-' the state is loaded from STDIN\nfunc LoadContainerState(filename string) (*State, error) {\n\tif filename == \"\" || filename == \"-\" {\n\t\treturn ReadContainerState(os.Stdin)\n\t}\n\n\tinputFile, err := os.Open(filename)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to open file: %v\", err)\n\t}\n\tdefer inputFile.Close()\n\n\treturn ReadContainerState(inputFile)\n}\n\n// ReadContainerState reads the container state from the specified reader\nfunc ReadContainerState(reader io.Reader) (*State, error) {\n\tvar s State\n\n\td := json.NewDecoder(reader)\n\tif err := d.Decode(&s); err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to decode container state: %v\", err)\n\t}\n\n\treturn &s, nil\n}\n\n// GetContainerRoot returns the root for the container from the associated spec. If the spec is not yet loaded, it is\n// loaded and cached.\nfunc (s *State) GetContainerRoot() (string, error) {\n\tspec, err := s.loadMinimalSpec()\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tvar containerRoot string\n\tif spec.Root != nil {\n\t\tcontainerRoot = spec.Root.Path\n\t}\n\n\tif filepath.IsAbs(containerRoot) {\n\t\treturn containerRoot, nil\n\t}\n\n\treturn filepath.Join(s.Bundle, containerRoot), nil\n}\n\n// loadMinimalSpec loads a reduced OCI spec associated with the container state.\nfunc (s *State) loadMinimalSpec() (*minimalSpec, error) {\n\tspecFilePath := GetSpecFilePath(s.Bundle)\n\tspecFile, err := os.Open(specFilePath)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to open OCI spec file: %v\", err)\n\t}\n\tdefer specFile.Close()\n\n\tms := &minimalSpec{}\n\tif err := json.NewDecoder(specFile).Decode(ms); err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to load minimal OCI spec: %v\", err)\n\t}\n\treturn ms, nil\n}\n\n// A minimalSpec is used to return desired properties from the container config.\n// We define this here instead of using specs.Spec as is to avoid decoding\n// unneeded fields in container lifecycle hooks.\ntype minimalSpec struct {\n\t// Root configures the container's root filesystem.\n\tRoot *specs.Root `json:\"root,omitempty\"`\n}\n"
  },
  {
    "path": "internal/platform-support/dgpu/by-path-hooks.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage dgpu\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/discover\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n)\n\n// byPathHookDiscoverer discovers the entities required for injecting by-path DRM device links\ntype byPathHookDiscoverer struct {\n\tlogger      logger.Interface\n\tdevRoot     string\n\thookCreator discover.HookCreator\n\tpciBusID    string\n\tdeviceNodes discover.Discover\n}\n\nvar _ discover.Discover = (*byPathHookDiscoverer)(nil)\n\n// Devices returns the empty list for the by-path hook discoverer\nfunc (d *byPathHookDiscoverer) Devices() ([]discover.Device, error) {\n\treturn nil, nil\n}\n\n// EnvVars returns the empty list for the by-path hook discoverer\nfunc (d *byPathHookDiscoverer) EnvVars() ([]discover.EnvVar, error) {\n\treturn nil, nil\n}\n\n// Hooks returns the hooks for the GPU device.\n// The following hooks are detected:\n//  1. A hook to create /dev/dri/by-path symlinks\nfunc (d *byPathHookDiscoverer) Hooks() ([]discover.Hook, error) {\n\tlinks, err := d.deviceNodeLinks()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to discover DRA device links: %v\", err)\n\t}\n\tif len(links) == 0 {\n\t\treturn nil, nil\n\t}\n\n\thook := d.hookCreator.Create(\"create-symlinks\", links...)\n\n\treturn hook.Hooks()\n}\n\n// Mounts returns an empty slice for a full GPU\nfunc (d *byPathHookDiscoverer) Mounts() ([]discover.Mount, error) {\n\treturn nil, nil\n}\n\nfunc (d *byPathHookDiscoverer) deviceNodeLinks() ([]string, error) {\n\tdevices, err := d.deviceNodes.Devices()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to discover device nodes: %v\", err)\n\t}\n\n\tif len(devices) == 0 {\n\t\treturn nil, nil\n\t}\n\n\tselectedDevices := make(map[string]bool)\n\tfor _, d := range devices {\n\t\tselectedDevices[d.HostPath] = true\n\t}\n\n\tcandidates := []string{\n\t\tfmt.Sprintf(\"/dev/dri/by-path/pci-%s-card\", d.pciBusID),\n\t\tfmt.Sprintf(\"/dev/dri/by-path/pci-%s-render\", d.pciBusID),\n\t}\n\n\tvar links []string\n\tfor _, c := range candidates {\n\t\tlinkPath := filepath.Join(d.devRoot, c)\n\t\tdevice, err := os.Readlink(linkPath)\n\t\tif err != nil {\n\t\t\td.logger.Warningf(\"Failed to evaluate symlink %v; ignoring\", linkPath)\n\t\t\tcontinue\n\t\t}\n\n\t\tdeviceNode := device\n\t\tif !filepath.IsAbs(device) {\n\t\t\tdeviceNode = filepath.Join(filepath.Dir(linkPath), device)\n\t\t}\n\t\tif !selectedDevices[deviceNode] {\n\t\t\td.logger.Debugf(\"ignoring device symlink %v -> %v since %v is not mounted\", linkPath, device, deviceNode)\n\t\t\tcontinue\n\t\t}\n\t\td.logger.Debugf(\"adding device symlink %v -> %v\", linkPath, device)\n\t\tlinks = append(links, fmt.Sprintf(\"%v::%v\", device, linkPath))\n\t}\n\n\treturn links, nil\n}\n"
  },
  {
    "path": "internal/platform-support/dgpu/dgpu.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage dgpu\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\n\t\"github.com/NVIDIA/go-nvlib/pkg/nvlib/device\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/discover\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/nvcaps\"\n)\n\n// NewForDevice creates a discoverer for the specified Device.\n// nvsandboxutils is used for discovery if specified, otherwise NVML is used.\nfunc NewForDevice(d device.Device, opts ...Option) (discover.Discover, error) {\n\to, err := new(opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar discoverers []discover.Discover\n\tvar errs error\n\tnvsandboxutilsDiscoverer, err := o.newNvsandboxutilsDGPUDiscoverer(d)\n\tif err != nil {\n\t\t// TODO: Log a warning\n\t\terrs = errors.Join(errs, err)\n\t} else if nvsandboxutilsDiscoverer != nil {\n\t\tdiscoverers = append(discoverers, nvsandboxutilsDiscoverer)\n\t}\n\n\tnvmlDiscoverer, err := o.newNvmlDGPUDiscoverer(&toRequiredInfo{d})\n\tif err != nil {\n\t\t// TODO: Log a warning\n\t\terrs = errors.Join(errs, err)\n\t} else if nvmlDiscoverer != nil {\n\t\tdiscoverers = append(discoverers, nvmlDiscoverer)\n\t}\n\n\tif len(discoverers) == 0 {\n\t\treturn nil, errs\n\t}\n\n\treturn discover.WithCache(\n\t\tdiscover.FirstValid(\n\t\t\tdiscoverers...,\n\t\t),\n\t), nil\n}\n\n// NewForMigDevice creates a discoverer for the specified device and its associated MIG device.\n// nvsandboxutils is used for discovery if specified, otherwise NVML is used.\nfunc NewForMigDevice(d device.Device, mig device.MigDevice, opts ...Option) (discover.Discover, error) {\n\to, err := new(opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\to.isMigDevice = true\n\n\tvar discoverers []discover.Discover\n\tvar errs error\n\tnvsandboxutilsDiscoverer, err := o.newNvsandboxutilsDGPUDiscoverer(mig)\n\tif err != nil {\n\t\t// TODO: Log a warning\n\t\terrs = errors.Join(errs, err)\n\t} else if nvsandboxutilsDiscoverer != nil {\n\t\tdiscoverers = append(discoverers, nvsandboxutilsDiscoverer)\n\t}\n\n\tnvmlDiscoverer, err := o.newNvmlMigDiscoverer(\n\t\t&toRequiredMigInfo{\n\t\t\tMigDevice: mig,\n\t\t\tparent:    &toRequiredInfo{d},\n\t\t},\n\t)\n\tif err != nil {\n\t\t// TODO: Log a warning\n\t\terrs = errors.Join(errs, err)\n\t} else if nvmlDiscoverer != nil {\n\t\tdiscoverers = append(discoverers, nvmlDiscoverer)\n\t}\n\n\tif len(discoverers) == 0 {\n\t\treturn nil, errs\n\t}\n\n\treturn discover.WithCache(\n\t\tdiscover.FirstValid(\n\t\t\tdiscoverers...,\n\t\t),\n\t), nil\n\n}\n\nfunc new(opts ...Option) (*options, error) {\n\to := &options{}\n\tfor _, opt := range opts {\n\t\topt(o)\n\t}\n\tif o.driver == nil {\n\t\treturn nil, fmt.Errorf(\"a driver must be specified\")\n\t}\n\n\tif o.logger == nil {\n\t\to.logger = logger.New()\n\t}\n\n\tif o.migCaps == nil {\n\t\tmigCaps, err := nvcaps.NewMigCaps()\n\t\tif err != nil {\n\t\t\to.logger.Debugf(\"ignoring error getting MIG capability device paths: %v\", err)\n\t\t\to.migCapsError = err\n\t\t} else {\n\t\t\to.migCaps = migCaps\n\t\t}\n\t}\n\n\treturn o, nil\n}\n"
  },
  {
    "path": "internal/platform-support/dgpu/dgpu_test.go",
    "content": "/**\n# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage dgpu_test\n\nimport (\n\t\"path/filepath\"\n\t\"testing\"\n\n\ttestlog \"github.com/sirupsen/logrus/hooks/test\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/NVIDIA/go-nvlib/pkg/nvlib/device\"\n\t\"github.com/NVIDIA/go-nvml/pkg/nvml\"\n\t\"github.com/NVIDIA/go-nvml/pkg/nvml/mock/dgxa100\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/devices\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/discover\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/lookup/root\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/platform-support/dgpu\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/test\"\n)\n\nfunc TestNewForDevice(t *testing.T) {\n\tlogger, _ := testlog.NewNullLogger()\n\n\tdefer devices.SetAllForTest()()\n\n\tmoduleRoot, err := test.GetModuleRoot()\n\trequire.NoError(t, err)\n\n\tlookupRoot := filepath.Join(moduleRoot, \"testdata\", \"lookup\")\n\n\ttestCase := []struct {\n\t\tdescription string\n\t\tmocks\n\t\tdriverRootfs        string\n\t\tdevRootfs           string\n\t\texpectedErrorString string\n\t\texpectedDevices     []discover.Device\n\t\texpectedMounts      []discover.Mount\n\t\texpectedHooks       []discover.Hook\n\t}{\n\t\t{\n\t\t\tdescription: \"single full gpu\",\n\t\t\tmocks:       mocksServerForTest(),\n\t\t\tdevRootfs:   \"rootfs-1\",\n\t\t\texpectedDevices: []discover.Device{\n\t\t\t\t{Path: \"/dev/nvidia0\", HostPath: \"/dev/nvidia0\"},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tc := range testCase {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\tdriverRoot := tc.driverRootfs\n\t\t\tif driverRoot != \"\" {\n\t\t\t\tdriverRoot = filepath.Join(lookupRoot, tc.driverRootfs)\n\t\t\t}\n\t\t\tdevRoot := tc.devRootfs\n\t\t\tif devRoot != \"\" {\n\t\t\t\tdevRoot = filepath.Join(lookupRoot, tc.devRootfs)\n\t\t\t}\n\t\t\tdriver := root.New(root.WithDriverRoot(driverRoot), root.WithDevRoot(devRoot))\n\n\t\t\tdevicelib := device.New(tc.nvmllib)\n\t\t\tdevice, err := devicelib.NewDevice(tc.device)\n\t\t\trequire.NoError(t, err)\n\n\t\t\td, err := dgpu.NewForDevice(device,\n\t\t\t\tdgpu.WithLogger(logger),\n\t\t\t\tdgpu.WithDriver(driver),\n\t\t\t)\n\t\t\tif tc.expectedErrorString == \"\" {\n\t\t\t\trequire.NoError(t, err)\n\t\t\t} else {\n\t\t\t\trequire.EqualError(t, err, tc.expectedErrorString)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif devRoot == \"\" {\n\t\t\t\tdevRoot = driverRoot\n\t\t\t}\n\n\t\t\tdevices, err := d.Devices()\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.EqualValues(t, tc.expectedDevices, test.StripRoot(devices, devRoot))\n\n\t\t\tmounts, err := d.Mounts()\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.EqualValues(t, tc.expectedMounts, test.StripRoot(mounts, driverRoot))\n\n\t\t\thooks, err := d.Hooks()\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.EqualValues(t, tc.expectedHooks, test.StripRoot(hooks, driverRoot))\n\n\t\t\tenvVars, err := d.EnvVars()\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.Empty(t, envVars)\n\t\t})\n\n\t}\n}\n\ntype mocks struct {\n\tnvmllib nvml.Interface\n\tdevice  nvml.Device\n}\n\nfunc mocksServerForTest() mocks {\n\tserver := dgxa100.New()\n\n\treturn mocks{\n\t\tnvmllib: server,\n\t\tdevice:  server.Devices[0],\n\t}\n}\n"
  },
  {
    "path": "internal/platform-support/dgpu/nvml.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage dgpu\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/NVIDIA/go-nvlib/pkg/nvlib/device\"\n\t\"github.com/NVIDIA/go-nvml/pkg/nvml\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/discover\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/info/drm\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/nvcaps\"\n)\n\ntype requiredInfo interface {\n\tGetMinorNumber() (int, error)\n\tGetPCIBusID() (string, error)\n\tgetDevNodePath() (string, error)\n}\n\nfunc (o *options) newNvmlDGPUDiscoverer(d requiredInfo) (discover.Discover, error) {\n\tpath, err := d.getDevNodePath()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error getting device node path: %w\", err)\n\t}\n\n\tpciBusID, err := d.GetPCIBusID()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error getting PCI info for device: %w\", err)\n\t}\n\n\tdrmDeviceNodes, err := drm.GetDeviceNodesByBusID(pciBusID)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to determine DRM devices for %v: %v\", pciBusID, err)\n\t}\n\n\tdeviceNodePaths := append([]string{path}, drmDeviceNodes...)\n\n\tdeviceNodes := discover.NewCharDeviceDiscoverer(\n\t\to.logger,\n\t\to.driver.DevRoot,\n\t\tdeviceNodePaths,\n\t)\n\n\tbyPathHooks := &byPathHookDiscoverer{\n\t\tlogger:      o.logger,\n\t\tdevRoot:     o.driver.DevRoot,\n\t\thookCreator: o.hookCreator,\n\t\tpciBusID:    pciBusID,\n\t\tdeviceNodes: deviceNodes,\n\t}\n\n\tdd := discover.Merge(\n\t\tdeviceNodes,\n\t\tbyPathHooks,\n\t)\n\treturn dd, nil\n}\n\ntype requiredMigInfo interface {\n\tgetPlacementInfo() (int, int, int, error)\n\tgetDevNodePath() (string, error)\n}\n\nfunc (o *options) newNvmlMigDiscoverer(d requiredMigInfo) (discover.Discover, error) {\n\tif o.migCaps == nil || o.migCapsError != nil {\n\t\treturn nil, fmt.Errorf(\"error getting MIG capability device paths: %v\", o.migCapsError)\n\t}\n\n\tgpu, gi, ci, err := d.getPlacementInfo()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error getting placement info: %w\", err)\n\t}\n\n\tgiCap := nvcaps.NewGPUInstanceCap(gpu, gi)\n\tgiCapDevicePath, err := o.migCaps.GetCapDevicePath(giCap)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to get GI cap device path: %v\", err)\n\t}\n\n\tciCap := nvcaps.NewComputeInstanceCap(gpu, gi, ci)\n\tciCapDevicePath, err := o.migCaps.GetCapDevicePath(ciCap)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to get CI cap device path: %v\", err)\n\t}\n\n\tparentPath, err := d.getDevNodePath()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tdeviceNodes := discover.NewCharDeviceDiscoverer(\n\t\to.logger,\n\t\to.driver.DevRoot,\n\t\t[]string{\n\t\t\tparentPath,\n\t\t\tgiCapDevicePath,\n\t\t\tciCapDevicePath,\n\t\t},\n\t)\n\n\treturn deviceNodes, nil\n}\n\ntype toRequiredInfo struct {\n\tdevice.Device\n}\n\nfunc (d *toRequiredInfo) GetMinorNumber() (int, error) {\n\tminor, ret := d.Device.GetMinorNumber()\n\tif ret != nvml.SUCCESS {\n\t\treturn 0, ret\n\t}\n\treturn minor, nil\n}\n\nfunc (d *toRequiredInfo) getDevNodePath() (string, error) {\n\tminor, err := d.GetMinorNumber()\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"error getting GPU device minor number: %w\", err)\n\t}\n\tpath := fmt.Sprintf(\"/dev/nvidia%d\", minor)\n\treturn path, nil\n}\n\ntype toRequiredMigInfo struct {\n\tdevice.MigDevice\n\tparent requiredInfo\n}\n\nfunc (d *toRequiredMigInfo) getPlacementInfo() (int, int, int, error) {\n\tgpu, err := d.parent.GetMinorNumber()\n\tif err != nil {\n\t\treturn 0, 0, 0, fmt.Errorf(\"error getting GPU minor: %w\", err)\n\t}\n\n\tgi, ret := d.GetGpuInstanceId()\n\tif ret != nvml.SUCCESS {\n\t\treturn 0, 0, 0, fmt.Errorf(\"error getting GPU Instance ID: %v\", ret)\n\t}\n\n\tci, ret := d.GetComputeInstanceId()\n\tif ret != nvml.SUCCESS {\n\t\treturn 0, 0, 0, fmt.Errorf(\"error getting Compute Instance ID: %v\", ret)\n\t}\n\n\treturn gpu, gi, ci, nil\n}\n\nfunc (d *toRequiredMigInfo) getDevNodePath() (string, error) {\n\treturn d.parent.getDevNodePath()\n}\n"
  },
  {
    "path": "internal/platform-support/dgpu/nvml_test.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage dgpu\n\nimport (\n\t\"testing\"\n\n\t\"github.com/NVIDIA/go-nvlib/pkg/nvlib/device\"\n\t\"github.com/NVIDIA/go-nvml/pkg/nvml\"\n\t\"github.com/NVIDIA/go-nvml/pkg/nvml/mock\"\n\ttestlog \"github.com/sirupsen/logrus/hooks/test\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/discover\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/lookup/root\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/nvcaps\"\n)\n\n// TODO: In order to properly test this, we need a mechanism to inject /\n// override the char device discoverer.\nfunc TestNewNvmlDGPUDiscoverer(t *testing.T) {\n\tlogger, _ := testlog.NewNullLogger()\n\n\tnvmllib := &mock.Interface{}\n\tdevicelib := device.New(\n\t\tnvmllib,\n\t)\n\n\ttestCases := []struct {\n\t\tdescription     string\n\t\tdevice          nvml.Device\n\t\texpectedError   error\n\t\texpectedDevices []discover.Device\n\t\texpectedHooks   []discover.Hook\n\t\texpectedMounts  []discover.Mount\n\t}{\n\t\t{\n\t\t\tdescription: \"\",\n\t\t\tdevice: &mock.Device{\n\t\t\t\tGetMinorNumberFunc: func() (int, nvml.Return) {\n\t\t\t\t\treturn 3, nvml.SUCCESS\n\t\t\t\t},\n\t\t\t\tGetPciInfoFunc: func() (nvml.PciInfo, nvml.Return) {\n\t\t\t\t\tvar busID [32]uint8\n\t\t\t\t\tfor i, b := range []byte(\"00000000:45:00:00\") {\n\t\t\t\t\t\tbusID[i] = b\n\t\t\t\t\t}\n\t\t\t\t\tinfo := nvml.PciInfo{\n\t\t\t\t\t\tBusId: busID,\n\t\t\t\t\t}\n\t\t\t\t\treturn info, nvml.SUCCESS\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\to, err := new(WithLogger(logger), WithDriver(root.New()))\n\t\t\trequire.NoError(t, err)\n\n\t\t\tdevice, err := devicelib.NewDevice(tc.device)\n\t\t\trequire.NoError(t, err)\n\n\t\t\td, err := o.newNvmlDGPUDiscoverer(&toRequiredInfo{device})\n\t\t\trequire.ErrorIs(t, err, tc.expectedError)\n\n\t\t\tdevices, _ := d.Devices()\n\t\t\trequire.EqualValues(t, tc.expectedDevices, devices)\n\t\t\thooks, _ := d.Hooks()\n\t\t\trequire.EqualValues(t, tc.expectedHooks, hooks)\n\t\t\tmounts, _ := d.Mounts()\n\t\t\trequire.EqualValues(t, tc.expectedMounts, mounts)\n\t\t})\n\t}\n}\n\nfunc TestNewNvmlMIGDiscoverer(t *testing.T) {\n\tlogger, _ := testlog.NewNullLogger()\n\n\tnvmllib := &mock.Interface{}\n\tdevicelib := device.New(\n\t\tnvmllib,\n\t)\n\n\ttestCases := []struct {\n\t\tdescription     string\n\t\tmig             *mock.Device\n\t\tparent          nvml.Device\n\t\tmigCaps         nvcaps.MigCaps\n\t\texpectedError   error\n\t\texpectedDevices []discover.Device\n\t\texpectedHooks   []discover.Hook\n\t\texpectedMounts  []discover.Mount\n\t}{\n\t\t{\n\t\t\tdescription: \"\",\n\t\t\tmig: &mock.Device{\n\t\t\t\tIsMigDeviceHandleFunc: func() (bool, nvml.Return) {\n\t\t\t\t\treturn true, nvml.SUCCESS\n\t\t\t\t},\n\t\t\t\tGetGpuInstanceIdFunc: func() (int, nvml.Return) {\n\t\t\t\t\treturn 1, nvml.SUCCESS\n\t\t\t\t},\n\t\t\t\tGetComputeInstanceIdFunc: func() (int, nvml.Return) {\n\t\t\t\t\treturn 2, nvml.SUCCESS\n\t\t\t\t},\n\t\t\t},\n\t\t\tparent: &mock.Device{\n\t\t\t\tGetMinorNumberFunc: func() (int, nvml.Return) {\n\t\t\t\t\treturn 3, nvml.SUCCESS\n\t\t\t\t},\n\t\t\t\tGetPciInfoFunc: func() (nvml.PciInfo, nvml.Return) {\n\t\t\t\t\tvar busID [32]uint8\n\t\t\t\t\tfor i, b := range []byte(\"00000000:45:00:00\") {\n\t\t\t\t\t\tbusID[i] = b\n\t\t\t\t\t}\n\t\t\t\t\tinfo := nvml.PciInfo{\n\t\t\t\t\t\tBusId: busID,\n\t\t\t\t\t}\n\t\t\t\t\treturn info, nvml.SUCCESS\n\t\t\t\t},\n\t\t\t},\n\t\t\tmigCaps: nvcaps.MigCaps{\n\t\t\t\t\"gpu3/gi1/access\":     31,\n\t\t\t\t\"gpu3/gi1/ci2/access\": 312,\n\t\t\t},\n\t\t\texpectedDevices: nil,\n\t\t\texpectedMounts:  nil,\n\t\t\texpectedHooks:   nil,\n\t\t},\n\t}\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\n\t\t\ttc.mig.GetDeviceHandleFromMigDeviceHandleFunc = func() (nvml.Device, nvml.Return) {\n\t\t\t\treturn tc.parent, nvml.SUCCESS\n\t\t\t}\n\t\t\tparent, err := devicelib.NewDevice(tc.parent)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tmig, err := devicelib.NewMigDevice(tc.mig)\n\t\t\trequire.NoError(t, err)\n\n\t\t\td, err := NewForMigDevice(parent, mig,\n\t\t\t\tWithLogger(logger),\n\t\t\t\tWithDriver(root.New()),\n\t\t\t\tWithMIGCaps(tc.migCaps),\n\t\t\t)\n\t\t\trequire.ErrorIs(t, err, tc.expectedError)\n\n\t\t\tdevices, _ := d.Devices()\n\t\t\trequire.EqualValues(t, tc.expectedDevices, devices)\n\t\t\thooks, _ := d.Hooks()\n\t\t\trequire.EqualValues(t, tc.expectedHooks, hooks)\n\t\t\tmounts, _ := d.Mounts()\n\t\t\trequire.EqualValues(t, tc.expectedMounts, mounts)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/platform-support/dgpu/nvsandboxutils.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage dgpu\n\nimport (\n\t\"fmt\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"github.com/NVIDIA/go-nvml/pkg/nvml\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/discover\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/nvsandboxutils\"\n)\n\ntype nvsandboxutilsDGPU struct {\n\tlib         nvsandboxutils.Interface\n\tuuid        string\n\tdevRoot     string\n\tisMig       bool\n\thookCreator discover.HookCreator\n\tdeviceLinks []string\n}\n\nvar _ discover.Discover = (*nvsandboxutilsDGPU)(nil)\n\ntype UUIDer interface {\n\tGetUUID() (string, nvml.Return)\n}\n\nfunc (o *options) newNvsandboxutilsDGPUDiscoverer(d UUIDer) (discover.Discover, error) {\n\tif o.nvsandboxutilslib == nil {\n\t\treturn nil, nil\n\t}\n\n\tuuid, nvmlRet := d.GetUUID()\n\tif nvmlRet != nvml.SUCCESS {\n\t\treturn nil, fmt.Errorf(\"failed to get device UUID: %w\", nvmlRet)\n\t}\n\n\tnvd := nvsandboxutilsDGPU{\n\t\tlib:         o.nvsandboxutilslib,\n\t\tuuid:        uuid,\n\t\tdevRoot:     strings.TrimSuffix(filepath.Clean(o.driver.DevRoot), \"/dev\"),\n\t\tisMig:       o.isMigDevice,\n\t\thookCreator: o.hookCreator,\n\t}\n\n\treturn &nvd, nil\n}\n\nfunc (d *nvsandboxutilsDGPU) Devices() ([]discover.Device, error) {\n\tgpuFileInfos, ret := d.lib.GetGpuResource(d.uuid)\n\tif ret != nvsandboxutils.SUCCESS {\n\t\treturn nil, fmt.Errorf(\"failed to get GPU resource: %w\", ret)\n\t}\n\n\tvar devices []discover.Device\n\tfor _, info := range gpuFileInfos {\n\t\tswitch info.SubType {\n\t\tcase nvsandboxutils.NV_DEV_DRI_CARD, nvsandboxutils.NV_DEV_DRI_RENDERD:\n\t\t\tif d.isMig {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tfallthrough\n\t\tcase nvsandboxutils.NV_DEV_NVIDIA, nvsandboxutils.NV_DEV_NVIDIA_CAPS_NVIDIA_CAP:\n\t\t\tcontainerPath := info.Path\n\t\t\tif d.devRoot != \"/\" {\n\t\t\t\tcontainerPath = strings.TrimPrefix(containerPath, d.devRoot)\n\t\t\t}\n\n\t\t\t// TODO: Extend discover.Device with additional information.\n\t\t\tdevice := discover.Device{\n\t\t\t\tHostPath: info.Path,\n\t\t\t\tPath:     containerPath,\n\t\t\t}\n\t\t\tdevices = append(devices, device)\n\t\tcase nvsandboxutils.NV_DEV_DRI_CARD_SYMLINK, nvsandboxutils.NV_DEV_DRI_RENDERD_SYMLINK:\n\t\t\tif d.isMig {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif info.Flags == nvsandboxutils.NV_FILE_FLAG_CONTENT {\n\t\t\t\ttargetPath, ret := d.lib.GetFileContent(info.Path)\n\t\t\t\tif ret != nvsandboxutils.SUCCESS {\n\t\t\t\t\treturn nil, fmt.Errorf(\"failed to get symlink: %w\", ret)\n\t\t\t\t}\n\t\t\t\td.deviceLinks = append(d.deviceLinks, fmt.Sprintf(\"%v::%v\", targetPath, info.Path))\n\t\t\t}\n\t\t}\n\t}\n\n\treturn devices, nil\n}\n\nfunc (d *nvsandboxutilsDGPU) EnvVars() ([]discover.EnvVar, error) {\n\treturn nil, nil\n}\n\n// Hooks returns a hook to create the by-path symlinks for the discovered devices.\nfunc (d *nvsandboxutilsDGPU) Hooks() ([]discover.Hook, error) {\n\tif len(d.deviceLinks) == 0 {\n\t\treturn nil, nil\n\t}\n\n\thook := d.hookCreator.Create(\"create-symlinks\", d.deviceLinks...)\n\n\treturn hook.Hooks()\n}\n\nfunc (d *nvsandboxutilsDGPU) Mounts() ([]discover.Mount, error) {\n\treturn nil, nil\n}\n"
  },
  {
    "path": "internal/platform-support/dgpu/nvsandboxutils_test.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage dgpu\n\nimport (\n\t\"testing\"\n\n\t\"github.com/NVIDIA/go-nvlib/pkg/nvlib/device\"\n\t\"github.com/NVIDIA/go-nvml/pkg/nvml\"\n\tmocknvml \"github.com/NVIDIA/go-nvml/pkg/nvml/mock\"\n\ttestlog \"github.com/sirupsen/logrus/hooks/test\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/discover\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/lookup/root\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/nvsandboxutils\"\n\tmocknvsandboxutils \"github.com/NVIDIA/nvidia-container-toolkit/internal/nvsandboxutils/mock\"\n)\n\nfunc TestNewNvsandboxutilsDGPUDiscoverer(t *testing.T) {\n\tlogger, _ := testlog.NewNullLogger()\n\n\tnvmllib := &mocknvml.Interface{}\n\tdevicelib := device.New(\n\t\tnvmllib,\n\t)\n\n\ttestCases := []struct {\n\t\tdescription     string\n\t\tdevRoot         string\n\t\tdevice          nvml.Device\n\t\tnvsandboxutils  nvsandboxutils.Interface\n\t\texpectedError   error\n\t\texpectedDevices []discover.Device\n\t\texpectedHooks   []discover.Hook\n\t\texpectedMounts  []discover.Mount\n\t}{\n\t\t{\n\t\t\tdescription: \"detects host devices\",\n\t\t\tdevice: &mocknvml.Device{\n\t\t\t\tGetUUIDFunc: func() (string, nvml.Return) {\n\t\t\t\t\treturn \"GPU-1234\", nvml.SUCCESS\n\t\t\t\t},\n\t\t\t},\n\t\t\tnvsandboxutils: &mocknvsandboxutils.Interface{\n\t\t\t\tGetGpuResourceFunc: func(s string) ([]nvsandboxutils.GpuFileInfo, nvsandboxutils.Ret) {\n\t\t\t\t\tinfos := []nvsandboxutils.GpuFileInfo{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/dev/nvidia0\",\n\t\t\t\t\t\t\tType: nvsandboxutils.NV_DEV,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/dev/nvidiactl\",\n\t\t\t\t\t\t\tType: nvsandboxutils.NV_DEV,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/dev/nvidia-uvm\",\n\t\t\t\t\t\t\tType: nvsandboxutils.NV_DEV,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/dev/nvidia-uvm-tools\",\n\t\t\t\t\t\t\tType: nvsandboxutils.NV_DEV,\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t\treturn infos, nvsandboxutils.SUCCESS\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedDevices: []discover.Device{\n\t\t\t\t{\n\t\t\t\t\tPath:     \"/dev/nvidia0\",\n\t\t\t\t\tHostPath: \"/dev/nvidia0\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tPath:     \"/dev/nvidiactl\",\n\t\t\t\t\tHostPath: \"/dev/nvidiactl\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tPath:     \"/dev/nvidia-uvm\",\n\t\t\t\t\tHostPath: \"/dev/nvidia-uvm\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tPath:     \"/dev/nvidia-uvm-tools\",\n\t\t\t\t\tHostPath: \"/dev/nvidia-uvm-tools\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"detects container devices\",\n\t\t\tdevRoot:     \"/some/root\",\n\t\t\tdevice: &mocknvml.Device{\n\t\t\t\tGetUUIDFunc: func() (string, nvml.Return) {\n\t\t\t\t\treturn \"GPU-1234\", nvml.SUCCESS\n\t\t\t\t},\n\t\t\t},\n\t\t\tnvsandboxutils: &mocknvsandboxutils.Interface{\n\t\t\t\tGetGpuResourceFunc: func(s string) ([]nvsandboxutils.GpuFileInfo, nvsandboxutils.Ret) {\n\t\t\t\t\tinfos := []nvsandboxutils.GpuFileInfo{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/some/root/dev/nvidia0\",\n\t\t\t\t\t\t\tType: nvsandboxutils.NV_DEV,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/some/root/dev/nvidiactl\",\n\t\t\t\t\t\t\tType: nvsandboxutils.NV_DEV,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/some/root/dev/nvidia-uvm\",\n\t\t\t\t\t\t\tType: nvsandboxutils.NV_DEV,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/some/root/dev/nvidia-uvm-tools\",\n\t\t\t\t\t\t\tType: nvsandboxutils.NV_DEV,\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t\treturn infos, nvsandboxutils.SUCCESS\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedDevices: []discover.Device{\n\t\t\t\t{\n\t\t\t\t\tPath:     \"/dev/nvidia0\",\n\t\t\t\t\tHostPath: \"/some/root/dev/nvidia0\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tPath:     \"/dev/nvidiactl\",\n\t\t\t\t\tHostPath: \"/some/root/dev/nvidiactl\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tPath:     \"/dev/nvidia-uvm\",\n\t\t\t\t\tHostPath: \"/some/root/dev/nvidia-uvm\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tPath:     \"/dev/nvidia-uvm-tools\",\n\t\t\t\t\tHostPath: \"/some/root/dev/nvidia-uvm-tools\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\to, err := new(\n\t\t\t\tWithLogger(logger),\n\t\t\t\tWithDriver(root.New(root.WithDevRoot(tc.devRoot))),\n\t\t\t\tWithNvsandboxuitilsLib(tc.nvsandboxutils),\n\t\t\t)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tdevice, err := devicelib.NewDevice(tc.device)\n\t\t\trequire.NoError(t, err)\n\n\t\t\td, err := o.newNvsandboxutilsDGPUDiscoverer(device)\n\t\t\trequire.ErrorIs(t, err, tc.expectedError)\n\n\t\t\tdevices, _ := d.Devices()\n\t\t\trequire.EqualValues(t, tc.expectedDevices, devices)\n\t\t\thooks, _ := d.Hooks()\n\t\t\trequire.EqualValues(t, tc.expectedHooks, hooks)\n\t\t\tmounts, _ := d.Mounts()\n\t\t\trequire.EqualValues(t, tc.expectedMounts, mounts)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/platform-support/dgpu/options.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage dgpu\n\nimport (\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/discover\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/lookup/root\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/nvcaps\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/nvsandboxutils\"\n)\n\ntype options struct {\n\tlogger      logger.Interface\n\tdriver      *root.Driver\n\thookCreator discover.HookCreator\n\n\tisMigDevice bool\n\t// migCaps stores the MIG capabilities for the system.\n\t// If MIG is not available, this is nil.\n\tmigCaps      nvcaps.MigCaps\n\tmigCapsError error\n\n\tnvsandboxutilslib nvsandboxutils.Interface\n}\n\ntype Option func(*options)\n\n// WithDriver sets the driver root.\nfunc WithDriver(driver *root.Driver) Option {\n\treturn func(l *options) {\n\t\tl.driver = driver\n\t}\n}\n\n// WithLogger sets the logger for the library\nfunc WithLogger(logger logger.Interface) Option {\n\treturn func(l *options) {\n\t\tl.logger = logger\n\t}\n}\n\n// WithHookCreator sets the hook creator for the library\nfunc WithHookCreator(hookCreator discover.HookCreator) Option {\n\treturn func(l *options) {\n\t\tl.hookCreator = hookCreator\n\t}\n}\n\n// WithMIGCaps sets the MIG capabilities.\nfunc WithMIGCaps(migCaps nvcaps.MigCaps) Option {\n\treturn func(l *options) {\n\t\tl.migCaps = migCaps\n\t}\n}\n\n// WithNvsandboxuitilsLib sets the nvsandboxutils library implementation.\nfunc WithNvsandboxuitilsLib(nvsandboxutilslib nvsandboxutils.Interface) Option {\n\treturn func(l *options) {\n\t\tl.nvsandboxutilslib = nvsandboxutilslib\n\t}\n}\n"
  },
  {
    "path": "internal/platform-support/tegra/csv/csv.go",
    "content": "/**\n# Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage csv\n\nimport (\n\t\"bufio\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n)\n\nconst (\n\t// DefaultMountSpecPath is default location of CSV files that define the modifications required to the OCI spec\n\tDefaultMountSpecPath = \"/etc/nvidia-container-runtime/host-files-for-container.d\"\n)\n\n// DefaultFileList returns the list of CSV files that are used by default.\nfunc DefaultFileList() []string {\n\tfiles := []string{\n\t\t\"devices.csv\",\n\t\t\"drivers.csv\",\n\t\t\"l4t.csv\",\n\t}\n\n\tvar paths []string\n\tfor _, file := range files {\n\t\tpaths = append(paths, filepath.Join(DefaultMountSpecPath, file))\n\t}\n\n\treturn paths\n}\n\n// GetFileList returns the (non-recursive) list of CSV files in the specified\n// folder\nfunc GetFileList(root string) ([]string, error) {\n\tcontents, err := os.ReadDir(root)\n\tif err != nil && errors.Is(err, os.ErrNotExist) {\n\t\treturn nil, nil\n\t} else if err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to read the contents of %v: %v\", root, err)\n\t}\n\n\tvar csvFilePaths []string\n\tfor _, c := range contents {\n\t\tif c.IsDir() {\n\t\t\tcontinue\n\t\t}\n\t\tif c.Name() == \".csv\" {\n\t\t\tcontinue\n\t\t}\n\t\text := strings.ToLower(filepath.Ext(c.Name()))\n\t\tif ext != \".csv\" {\n\t\t\tcontinue\n\t\t}\n\n\t\tcsvFilePaths = append(csvFilePaths, filepath.Join(root, c.Name()))\n\t}\n\n\treturn csvFilePaths, nil\n}\n\n// BaseFilesOnly filters out non-base CSV files from the list of CSV files.\nfunc BaseFilesOnly(filenames []string) []string {\n\tfilter := map[string]bool{\n\t\t\"l4t.csv\":     true,\n\t\t\"drivers.csv\": true,\n\t\t\"devices.csv\": true,\n\t}\n\n\tvar selected []string\n\tfor _, file := range filenames {\n\t\tbase := filepath.Base(file)\n\t\tif filter[base] {\n\t\t\tselected = append(selected, file)\n\t\t}\n\t}\n\n\treturn selected\n}\n\n// Parser specifies an interface for parsing MountSpecs\ntype Parser interface {\n\tParse() ([]*MountSpec, error)\n}\n\ntype csv struct {\n\tlogger   logger.Interface\n\tfilename string\n}\n\n// NewCSVFileParser creates a new parser for reading MountSpecs from the specified CSV file\nfunc NewCSVFileParser(logger logger.Interface, filename string) Parser {\n\tp := csv{\n\t\tlogger:   logger,\n\t\tfilename: filename,\n\t}\n\n\treturn &p\n}\n\n// Parse parses the csv file and returns a list of MountSpecs in the file\nfunc (p csv) Parse() ([]*MountSpec, error) {\n\treader, err := os.Open(p.filename)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to open %v for reading: %v\", p.filename, err)\n\t}\n\tdefer reader.Close()\n\n\treturn p.parseFromReader(reader), nil\n}\n\n// parseFromReader parses the specified file and returns a list of required jetson mounts\nfunc (p csv) parseFromReader(reader io.Reader) []*MountSpec {\n\tvar targets []*MountSpec\n\n\tscanner := bufio.NewScanner(reader)\n\tfor scanner.Scan() {\n\t\tline := scanner.Text()\n\t\ttarget, err := NewMountSpecFromLine(line)\n\t\tif err != nil {\n\t\t\tp.logger.Debugf(\"Skipping invalid mount spec '%v': %v\", line, err)\n\t\t\tcontinue\n\t\t}\n\t\ttargets = append(targets, target)\n\t}\n\n\treturn targets\n}\n"
  },
  {
    "path": "internal/platform-support/tegra/csv/csv_test.go",
    "content": "/**\n# Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage csv\n\nimport (\n\t\"path/filepath\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/test\"\n)\n\nfunc TestGetFileList(t *testing.T) {\n\tmoduleRoot, _ := test.GetModuleRoot()\n\n\ttestCases := []struct {\n\t\tdescription   string\n\t\troot          string\n\t\tfiles         []string\n\t\texpectedError error\n\t}{\n\t\t{\n\t\t\tdescription: \"returns list of CSV files\",\n\t\t\troot:        \"tests/input/csv_samples/\",\n\t\t\tfiles: []string{\n\t\t\t\t\"jetson.csv\",\n\t\t\t\t\"simple_wrong.csv\",\n\t\t\t\t\"simple.csv\",\n\t\t\t\t\"spaced.csv\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"handles empty folder\",\n\t\t\troot:        \"tests/input/csv_samples/empty\",\n\t\t},\n\t\t{\n\t\t\tdescription: \"handles non-existent folder\",\n\t\t\troot:        \"tests/input/csv_samples/NONEXISTENT\",\n\t\t},\n\t\t{\n\t\t\tdescription: \"handles non-existent folder root\",\n\t\t\troot:        \"/NONEXISTENT/tests/input/csv_samples/\",\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\troot := filepath.Join(moduleRoot, tc.root)\n\t\t\tfiles, err := GetFileList(root)\n\n\t\t\tif tc.expectedError != nil {\n\t\t\t\trequire.Error(t, err)\n\t\t\t\trequire.Empty(t, files)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\trequire.NoError(t, err)\n\n\t\t\tvar foundFiles []string\n\t\t\tfor _, f := range files {\n\t\t\t\trequire.Equal(t, root, filepath.Dir(f))\n\t\t\t\trequire.Equal(t, \".csv\", filepath.Ext(f))\n\t\t\t\tfoundFiles = append(foundFiles, filepath.Base(f))\n\t\t\t}\n\n\t\t\trequire.ElementsMatch(t, tc.files, foundFiles)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/platform-support/tegra/csv/mount_spec.go",
    "content": "/**\n# Copyright (c) 2021-2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage csv\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n)\n\n// MountSpecType defines the mount types allowed in a CSV file\ntype MountSpecType string\n\nconst (\n\t// MountSpecDev is used for character devices\n\tMountSpecDev = MountSpecType(\"dev\")\n\t// MountSpecDir is used for directories\n\tMountSpecDir = MountSpecType(\"dir\")\n\t// MountSpecLib is used for libraries or regular files\n\tMountSpecLib = MountSpecType(\"lib\")\n\t// MountSpecSym is used for symlinks.\n\tMountSpecSym = MountSpecType(\"sym\")\n)\n\n// MountSpec represents a Jetson mount consisting of a type and a path.\ntype MountSpec struct {\n\tType MountSpecType\n\tPath string\n}\n\n// NewMountSpecFromLine parses the specified line and returns the MountSpec or an error if the line is malformed\nfunc NewMountSpecFromLine(line string) (*MountSpec, error) {\n\tparts := strings.SplitN(strings.TrimSpace(line), \",\", 2)\n\tif len(parts) < 2 {\n\t\treturn nil, fmt.Errorf(\"failed to parse line: %v\", line)\n\t}\n\tmountType := strings.TrimSpace(parts[0])\n\tpath := strings.TrimSpace(parts[1])\n\n\treturn NewMountSpec(mountType, path)\n}\n\n// NewMountSpec creates a MountSpec with the specified type and path. An error is returned if the type is invalid.\nfunc NewMountSpec(mountType string, path string) (*MountSpec, error) {\n\tmt := MountSpecType(mountType)\n\tswitch mt {\n\tcase MountSpecDev, MountSpecLib, MountSpecSym, MountSpecDir:\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"unexpected mount type: %v\", mt)\n\t}\n\tif path == \"\" {\n\t\treturn nil, fmt.Errorf(\"invalid path: %v\", path)\n\t}\n\n\tmount := MountSpec{\n\t\tType: mt,\n\t\tPath: path,\n\t}\n\n\treturn &mount, nil\n}\n"
  },
  {
    "path": "internal/platform-support/tegra/csv/mount_spec_test.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage csv\n\nimport (\n\t\"fmt\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestNewMountSpecFromLine(t *testing.T) {\n\tparseError := fmt.Errorf(\"failed to parse line\")\n\tunexpectedError := fmt.Errorf(\"unexpected mount type\")\n\n\ttestCases := []struct {\n\t\tline          string\n\t\texpectedError error\n\t\texpectedValue MountSpec\n\t}{\n\t\t{\n\t\t\tline:          \"\",\n\t\t\texpectedError: parseError,\n\t\t},\n\t\t{\n\t\t\tline:          \"\\t\",\n\t\t\texpectedError: parseError,\n\t\t},\n\t\t{\n\t\t\tline:          \",\",\n\t\t\texpectedError: parseError,\n\t\t},\n\t\t{\n\t\t\tline:          \"dev,\",\n\t\t\texpectedError: parseError,\n\t\t},\n\t\t{\n\t\t\tline: \"dev ,/a/path\",\n\t\t\texpectedValue: MountSpec{\n\t\t\t\tPath: \"/a/path\",\n\t\t\t\tType: \"dev\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tline: \"dev ,/a/path,with,commas\",\n\t\t\texpectedValue: MountSpec{\n\t\t\t\tPath: \"/a/path,with,commas\",\n\t\t\t\tType: \"dev\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tline:          \"not-dev ,/a/path\",\n\t\t\texpectedError: unexpectedError,\n\t\t},\n\t}\n\n\tfor i, tc := range testCases {\n\t\tt.Run(fmt.Sprintf(\"test case %d\", i), func(t *testing.T) {\n\t\t\ttc := tc\n\t\t\ttarget, err := NewMountSpecFromLine(tc.line)\n\t\t\tif tc.expectedError != nil {\n\t\t\t\trequire.Error(t, err)\n\t\t\t\treturn\n\t\t\t}\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.EqualValues(t, &tc.expectedValue, target)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/platform-support/tegra/csv.go",
    "content": "/**\n# Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage tegra\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/discover\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/platform-support/tegra/csv\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/lookup\"\n)\n\n// newDiscovererFromMountSpecs creates a discoverer for the specified mount specs.\nfunc (o options) newDiscovererFromMountSpecs(targetsByType MountSpecPathsByType) discover.Discover {\n\tif len(targetsByType) == 0 {\n\t\to.logger.Warningf(\"No mount specs specified\")\n\t\treturn discover.None{}\n\t}\n\n\tdevices := discover.NewCharDeviceDiscoverer(\n\t\to.logger,\n\t\to.driver.DevRoot,\n\t\ttargetsByType[csv.MountSpecDev],\n\t)\n\n\tdirectories := discover.NewMounts(\n\t\to.logger,\n\t\tlookup.NewDirectoryLocator(lookup.WithLogger(o.logger), lookup.WithRoot(o.driver.Root)),\n\t\to.driver.Root,\n\t\ttargetsByType[csv.MountSpecDir],\n\t)\n\n\t// We create a discoverer for mounted libraries and add additional .so\n\t// symlinks for the driver.\n\tlibraries := discover.WithDriverDotSoSymlinks(\n\t\to.logger,\n\t\tdiscover.NewMounts(\n\t\t\to.logger,\n\t\t\to.symlinkLocator,\n\t\t\to.driver.Root,\n\t\t\ttargetsByType[csv.MountSpecLib],\n\t\t),\n\t\t\"\",\n\t\to.hookCreator,\n\t)\n\n\t// We process the explicitly requested symlinks.\n\tsymlinks := discover.NewMounts(\n\t\to.logger,\n\t\to.symlinkLocator,\n\t\to.driver.Root,\n\t\ttargetsByType[csv.MountSpecSym],\n\t)\n\tcreateSymlinks := o.createCSVSymlinkHooks(targetsByType[csv.MountSpecSym])\n\n\treturn discover.Merge(\n\t\tdevices,\n\t\tdirectories,\n\t\tlibraries,\n\t\tsymlinks,\n\t\tcreateSymlinks,\n\t)\n}\n\n// MountSpecsFromCSVFiles returns a MountSpecPathsByTyper for the specified list\n// of CSV files.\nfunc MountSpecsFromCSVFiles(logger logger.Interface, csvFilePaths ...string) MountSpecPathsByType {\n\tvar mountSpecs mountSpecPathsByTypers\n\n\tfor _, filename := range csvFilePaths {\n\t\ttargets, err := loadCSVFile(logger, filename)\n\t\tif err != nil {\n\t\t\tlogger.Warningf(\"Skipping CSV file %v: %v\", filename, err)\n\t\t\tcontinue\n\t\t}\n\t\ttargetsByType := make(MountSpecPathsByType)\n\t\tfor _, t := range targets {\n\t\t\ttargetsByType[t.Type] = append(targetsByType[t.Type], t.Path)\n\t\t}\n\t\tmountSpecs = append(mountSpecs, targetsByType)\n\t}\n\treturn mountSpecs.MountSpecPathsByType()\n}\n\n// loadCSVFile loads the specified CSV file and returns the list of mount specs\nfunc loadCSVFile(logger logger.Interface, filename string) ([]*csv.MountSpec, error) {\n\t// Create a discoverer for each file-kind combination\n\ttargets, err := csv.NewCSVFileParser(logger, filename).Parse()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to parse CSV file: %v\", err)\n\t}\n\tif len(targets) == 0 {\n\t\treturn nil, fmt.Errorf(\"CSV file is empty\")\n\t}\n\n\treturn targets, nil\n}\n"
  },
  {
    "path": "internal/platform-support/tegra/csv_test.go",
    "content": "/**\n# Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage tegra\n\nimport (\n\t\"fmt\"\n\t\"testing\"\n\n\ttestlog \"github.com/sirupsen/logrus/hooks/test\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/discover\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/lookup/root\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/lookup\"\n)\n\nfunc TestDiscovererFromCSVFiles(t *testing.T) {\n\tlogger, _ := testlog.NewNullLogger()\n\ttestCases := []struct {\n\t\tdescription         string\n\t\tmoutSpecs           MountSpecPathsByType\n\t\tignorePatterns      []string\n\t\tsymlinkLocator      lookup.Locator\n\t\tsymlinkChainLocator lookup.Locator\n\t\tsymlinkResolver     func(string) (string, error)\n\t\texpectedError       error\n\t\texpectedMounts      []discover.Mount\n\t\texpectedMountsError error\n\t\texpectedHooks       []discover.Hook\n\t\texpectedHooksError  error\n\t}{\n\t\t{\n\t\t\t// TODO: This current resolves to two mounts that are the same.\n\t\t\t// These are deduplicated at a later stage. We could consider deduplicating earlier in the pipeline.\n\t\t\tdescription: \"symlink is resolved to target; mounts and symlink are created\",\n\t\t\tmoutSpecs: MountSpecPathsByType{\n\t\t\t\t\"lib\": {\"/usr/lib/aarch64-linux-gnu/tegra/libv4l2_nvargus.so\"},\n\t\t\t\t\"sym\": {\"/usr/lib/aarch64-linux-gnu/libv4l/plugins/nv/libv4l2_nvargus.so\"},\n\t\t\t},\n\t\t\tsymlinkLocator: &lookup.LocatorMock{\n\t\t\t\tLocateFunc: func(path string) ([]string, error) {\n\t\t\t\t\tif path == \"/usr/lib/aarch64-linux-gnu/libv4l/plugins/nv/libv4l2_nvargus.so\" {\n\t\t\t\t\t\treturn []string{\"/usr/lib/aarch64-linux-gnu/tegra/libv4l2_nvargus.so\"}, nil\n\t\t\t\t\t}\n\t\t\t\t\treturn []string{path}, nil\n\t\t\t\t},\n\t\t\t},\n\t\t\tsymlinkChainLocator: &lookup.LocatorMock{\n\t\t\t\tLocateFunc: func(path string) ([]string, error) {\n\t\t\t\t\tif path == \"/usr/lib/aarch64-linux-gnu/libv4l/plugins/nv/libv4l2_nvargus.so\" {\n\t\t\t\t\t\treturn []string{\"/usr/lib/aarch64-linux-gnu/libv4l/plugins/nv/libv4l2_nvargus.so\", \"/usr/lib/aarch64-linux-gnu/tegra/libv4l2_nvargus.so\"}, nil\n\t\t\t\t\t}\n\t\t\t\t\treturn nil, fmt.Errorf(\"Unexpected path: %v\", path)\n\t\t\t\t},\n\t\t\t},\n\t\t\tsymlinkResolver: func(path string) (string, error) {\n\t\t\t\tif path == \"/usr/lib/aarch64-linux-gnu/libv4l/plugins/nv/libv4l2_nvargus.so\" {\n\t\t\t\t\treturn \"/usr/lib/aarch64-linux-gnu/tegra/libv4l2_nvargus.so\", nil\n\t\t\t\t}\n\t\t\t\treturn path, nil\n\t\t\t},\n\t\t\texpectedMounts: []discover.Mount{\n\t\t\t\t{\n\t\t\t\t\tPath:     \"/usr/lib/aarch64-linux-gnu/tegra/libv4l2_nvargus.so\",\n\t\t\t\t\tHostPath: \"/usr/lib/aarch64-linux-gnu/tegra/libv4l2_nvargus.so\",\n\t\t\t\t\tOptions:  []string{\"ro\", \"nosuid\", \"nodev\", \"rbind\", \"rprivate\"},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tPath:     \"/usr/lib/aarch64-linux-gnu/tegra/libv4l2_nvargus.so\",\n\t\t\t\t\tHostPath: \"/usr/lib/aarch64-linux-gnu/tegra/libv4l2_nvargus.so\",\n\t\t\t\t\tOptions:  []string{\"ro\", \"nosuid\", \"nodev\", \"rbind\", \"rprivate\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedHooks: []discover.Hook{\n\t\t\t\t{\n\t\t\t\t\tLifecycle: \"createContainer\",\n\t\t\t\t\tPath:      \"/usr/bin/nvidia-cdi-hook\",\n\t\t\t\t\tArgs: []string{\n\t\t\t\t\t\t\"nvidia-cdi-hook\",\n\t\t\t\t\t\t\"create-symlinks\",\n\t\t\t\t\t\t\"--link\",\n\t\t\t\t\t\t\"/usr/lib/aarch64-linux-gnu/tegra/libv4l2_nvargus.so::/usr/lib/aarch64-linux-gnu/libv4l/plugins/nv/libv4l2_nvargus.so\",\n\t\t\t\t\t},\n\t\t\t\t\tEnv: []string{\"NVIDIA_CTK_DEBUG=false\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t// TODO: This current resolves to two mounts that are the same.\n\t\t\t// These are deduplicated at a later stage. We could consider deduplicating earlier in the pipeline.\n\t\t\tdescription: \"single glob filter does not remove symlink mounts\",\n\t\t\tmoutSpecs: MountSpecPathsByType{\n\t\t\t\t\"lib\": {\"/usr/lib/aarch64-linux-gnu/tegra/libv4l2_nvargus.so\"},\n\t\t\t\t\"sym\": {\"/usr/lib/aarch64-linux-gnu/libv4l/plugins/nv/libv4l2_nvargus.so\"},\n\t\t\t},\n\t\t\tignorePatterns: []string{\"*.so\"},\n\t\t\tsymlinkLocator: &lookup.LocatorMock{\n\t\t\t\tLocateFunc: func(path string) ([]string, error) {\n\t\t\t\t\tif path == \"/usr/lib/aarch64-linux-gnu/libv4l/plugins/nv/libv4l2_nvargus.so\" {\n\t\t\t\t\t\treturn []string{\"/usr/lib/aarch64-linux-gnu/tegra/libv4l2_nvargus.so\"}, nil\n\t\t\t\t\t}\n\t\t\t\t\treturn []string{path}, nil\n\t\t\t\t},\n\t\t\t},\n\t\t\tsymlinkChainLocator: &lookup.LocatorMock{\n\t\t\t\tLocateFunc: func(path string) ([]string, error) {\n\t\t\t\t\tif path == \"/usr/lib/aarch64-linux-gnu/libv4l/plugins/nv/libv4l2_nvargus.so\" {\n\t\t\t\t\t\treturn []string{\"/usr/lib/aarch64-linux-gnu/libv4l/plugins/nv/libv4l2_nvargus.so\", \"/usr/lib/aarch64-linux-gnu/tegra/libv4l2_nvargus.so\"}, nil\n\t\t\t\t\t}\n\t\t\t\t\treturn nil, fmt.Errorf(\"Unexpected path: %v\", path)\n\t\t\t\t},\n\t\t\t},\n\t\t\tsymlinkResolver: func(path string) (string, error) {\n\t\t\t\tif path == \"/usr/lib/aarch64-linux-gnu/libv4l/plugins/nv/libv4l2_nvargus.so\" {\n\t\t\t\t\treturn \"/usr/lib/aarch64-linux-gnu/tegra/libv4l2_nvargus.so\", nil\n\t\t\t\t}\n\t\t\t\treturn path, nil\n\t\t\t},\n\t\t\texpectedMounts: []discover.Mount{\n\t\t\t\t{\n\t\t\t\t\tPath:     \"/usr/lib/aarch64-linux-gnu/tegra/libv4l2_nvargus.so\",\n\t\t\t\t\tHostPath: \"/usr/lib/aarch64-linux-gnu/tegra/libv4l2_nvargus.so\",\n\t\t\t\t\tOptions:  []string{\"ro\", \"nosuid\", \"nodev\", \"rbind\", \"rprivate\"},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tPath:     \"/usr/lib/aarch64-linux-gnu/tegra/libv4l2_nvargus.so\",\n\t\t\t\t\tHostPath: \"/usr/lib/aarch64-linux-gnu/tegra/libv4l2_nvargus.so\",\n\t\t\t\t\tOptions:  []string{\"ro\", \"nosuid\", \"nodev\", \"rbind\", \"rprivate\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedHooks: []discover.Hook{\n\t\t\t\t{\n\t\t\t\t\tLifecycle: \"createContainer\",\n\t\t\t\t\tPath:      \"/usr/bin/nvidia-cdi-hook\",\n\t\t\t\t\tArgs: []string{\n\t\t\t\t\t\t\"nvidia-cdi-hook\",\n\t\t\t\t\t\t\"create-symlinks\",\n\t\t\t\t\t\t\"--link\",\n\t\t\t\t\t\t\"/usr/lib/aarch64-linux-gnu/tegra/libv4l2_nvargus.so::/usr/lib/aarch64-linux-gnu/libv4l/plugins/nv/libv4l2_nvargus.so\",\n\t\t\t\t\t},\n\t\t\t\t\tEnv: []string{\"NVIDIA_CTK_DEBUG=false\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"** filter removes symlink mounts\",\n\t\t\tmoutSpecs: MountSpecPathsByType{\n\t\t\t\t\"lib\": {\"/usr/lib/aarch64-linux-gnu/tegra/libv4l2_nvargus.so\"},\n\t\t\t\t\"sym\": {\"/usr/lib/aarch64-linux-gnu/libv4l/plugins/nv/libv4l2_nvargus.so\"},\n\t\t\t},\n\t\t\tsymlinkLocator: &lookup.LocatorMock{\n\t\t\t\tLocateFunc: func(path string) ([]string, error) {\n\t\t\t\t\tif path == \"/usr/lib/aarch64-linux-gnu/libv4l/plugins/nv/libv4l2_nvargus.so\" {\n\t\t\t\t\t\treturn []string{\"/usr/lib/aarch64-linux-gnu/tegra/libv4l2_nvargus.so\"}, nil\n\t\t\t\t\t}\n\t\t\t\t\treturn []string{path}, nil\n\t\t\t\t},\n\t\t\t},\n\t\t\tignorePatterns: []string{\"**/*.so\"},\n\t\t\texpectedMounts: []discover.Mount{\n\t\t\t\t{\n\t\t\t\t\tPath:     \"/usr/lib/aarch64-linux-gnu/tegra/libv4l2_nvargus.so\",\n\t\t\t\t\tHostPath: \"/usr/lib/aarch64-linux-gnu/tegra/libv4l2_nvargus.so\",\n\t\t\t\t\tOptions:  []string{\"ro\", \"nosuid\", \"nodev\", \"rbind\", \"rprivate\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\thookCreator := discover.NewHookCreator()\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\to := options{\n\t\t\t\tlogger:              logger,\n\t\t\t\tdriver:              root.New(),\n\t\t\t\thookCreator:         hookCreator,\n\t\t\t\tsymlinkLocator:      tc.symlinkLocator,\n\t\t\t\tsymlinkChainLocator: tc.symlinkChainLocator,\n\t\t\t\tresolveSymlink:      tc.symlinkResolver,\n\n\t\t\t\tmountSpecs: Transform(\n\t\t\t\t\ttc.moutSpecs,\n\t\t\t\t\tIgnoreSymlinkMountSpecsByPattern(tc.ignorePatterns...),\n\t\t\t\t),\n\t\t\t}\n\n\t\t\td := o.newDiscovererFromMountSpecs(o.mountSpecs.MountSpecPathsByType())\n\n\t\t\thooks, err := d.Hooks()\n\t\t\trequire.ErrorIs(t, err, tc.expectedHooksError)\n\t\t\trequire.EqualValues(t, tc.expectedHooks, hooks)\n\n\t\t\tmounts, err := d.Mounts()\n\t\t\trequire.ErrorIs(t, err, tc.expectedMountsError)\n\t\t\trequire.EqualValues(t, tc.expectedMounts, mounts)\n\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/platform-support/tegra/filter.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage tegra\n\nimport (\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/platform-support/tegra/csv\"\n)\n\ntype ignoreSymlinkMountSpecPatterns []string\n\nfunc (d ignoreSymlinkMountSpecPatterns) match(name string) bool {\n\tfor _, pattern := range d {\n\t\ttarget := name\n\t\tif strings.HasPrefix(pattern, \"**/\") {\n\t\t\ttarget = filepath.Base(name)\n\t\t\tpattern = strings.TrimPrefix(pattern, \"**/\")\n\t\t}\n\t\tif match, _ := filepath.Match(pattern, target); match {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc (d ignoreSymlinkMountSpecPatterns) filter(input ...string) []string {\n\tvar filtered []string\n\tfor _, name := range input {\n\t\tif d.match(name) {\n\t\t\tcontinue\n\t\t}\n\t\tfiltered = append(filtered, name)\n\t}\n\treturn filtered\n}\n\nfunc (d ignoreSymlinkMountSpecPatterns) Apply(input MountSpecPathsByTyper) MountSpecPathsByTyper {\n\tms := input.MountSpecPathsByType()\n\n\tif symlinks, ok := ms[csv.MountSpecSym]; ok {\n\t\tms[csv.MountSpecSym] = d.filter(symlinks...)\n\t}\n\n\treturn ms\n}\n\n// A filter removes elements from an input list and returns the remaining\n// elements.\ntype filter interface {\n\tapply(...string) []string\n}\n\n// A stringMatcher implements the MatchString function.\ntype stringMatcher interface {\n\tMatchString(string) bool\n}\n\n// A matcherAsFilter is used to ensure that a string matcher can be used as a filter.\ntype matcherAsFilter struct {\n\tstringMatcher\n}\n\ntype filterByMountSpecType map[csv.MountSpecType]filter\ntype filterByMountSpecPathsByTyper struct {\n\tMountSpecPathsByTyper\n}\n\ntype pathPatterns []string\ntype pathPattern string\ntype basenamePattern string\n\n// MatchString for a set of path patterns returns true if any of the patterns\n// matches against the input string.\nfunc (d pathPatterns) MatchString(input string) bool {\n\tfor _, pattern := range d {\n\t\tif match := pathPattern(pattern).MatchString(input); match {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// MatchString attempts to match a path pattern to the specified input string.\n// If the pattern starts with `**/` the input is treated as a path and only\n// the basenames are matched using regular glob rules.\nfunc (d pathPattern) MatchString(input string) bool {\n\tif strings.HasPrefix(string(d), \"**/\") {\n\t\treturn basenamePattern(d).MatchString(input)\n\t}\n\tmatch, _ := filepath.Match(string(d), input)\n\treturn match\n}\n\n// MatchString for a basename pattern applies the specified pattern against the\n// basename of the input.\n// If the pattern starts with **/, this is stripped before attempting to match.\nfunc (d basenamePattern) MatchString(input string) bool {\n\tpattern := strings.TrimPrefix(string(d), \"**/\")\n\tmatch, _ := filepath.Match(pattern, filepath.Base(input))\n\treturn match\n}\n\n// Apply the specified per-type filters to the input mount specs.\nfunc (p filterByMountSpecType) Apply(input MountSpecPathsByTyper) MountSpecPathsByTyper {\n\tms := input.MountSpecPathsByType()\n\tfor t, filter := range p {\n\t\tif len(ms[t]) == 0 {\n\t\t\tcontinue\n\t\t}\n\t\tms[t] = filter.apply(ms[t]...)\n\t}\n\treturn ms\n}\n\nfunc (p filterByMountSpecPathsByTyper) Apply(input MountSpecPathsByTyper) MountSpecPathsByTyper {\n\tf := make(filterByMountSpecType)\n\tfor t, paths := range p.MountSpecPathsByType() {\n\t\tf[t] = &matcherAsFilter{pathPatterns(paths)}\n\t}\n\treturn f.Apply(input)\n}\n\n// apply uses a matcher to filter an input string.\n// Each element in the input that matches is skipped and the remaining elements\n// are returned.\nfunc (f *matcherAsFilter) apply(input ...string) []string {\n\tvar filtered []string\n\tfor _, path := range input {\n\t\tif f.MatchString(path) {\n\t\t\tcontinue\n\t\t}\n\t\tfiltered = append(filtered, path)\n\t}\n\treturn filtered\n}\n\n// removeAll is a filter that will not return any inputs.\ntype removeAll struct{}\n\nfunc (a removeAll) apply(...string) []string {\n\treturn nil\n}\n"
  },
  {
    "path": "internal/platform-support/tegra/filter_test.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage tegra\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestIgnorePatterns(t *testing.T) {\n\ttestCases := []struct {\n\t\tdescription   string\n\t\tblockedFilter pathPatterns\n\t\tinput         []string\n\t\texpected      []string\n\t}{\n\t\t{\n\t\t\tdescription: \"nil slice\",\n\t\t\tinput:       []string{\"something\", \"somethingelse\"},\n\t\t\texpected:    []string{\"something\", \"somethingelse\"},\n\t\t},\n\t\t{\n\t\t\tdescription:   \"match libraries full path and so symlinks using globs\",\n\t\t\tblockedFilter: []string{\"*.so\", \"*.so.[0-9]\"},\n\t\t\tinput:         []string{\"/foo/bar/libsomething.so\", \"libsometing.so\", \"libsometing.so.1\", \"libsometing.so.1.2.3\"},\n\t\t\texpected:      []string{\"/foo/bar/libsomething.so\", \"libsometing.so.1.2.3\"},\n\t\t},\n\t\t{\n\t\t\tdescription:   \"match libraries full path and so symlinks using globs with any path prefix\",\n\t\t\tblockedFilter: []string{\"**/*.so\", \"**/*.so.[0-9]\"},\n\t\t\tinput:         []string{\"/foo/bar/libsomething.so\", \"libsometing.so\", \"libsometing.so.1\", \"libsometing.so.1.2.3\"},\n\t\t\texpected:      []string{\"libsometing.so.1.2.3\"},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\tfiltered := ignoreSymlinkMountSpecPatterns(tc.blockedFilter).filter(tc.input...)\n\t\t\trequire.ElementsMatch(t, tc.expected, filtered)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/platform-support/tegra/mount_specs.go",
    "content": "/**\n# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage tegra\n\nimport (\n\t\"regexp\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/platform-support/tegra/csv\"\n)\n\ntype MountSpecPathsByTyper interface {\n\tMountSpecPathsByType() MountSpecPathsByType\n}\n\n// moutSpecPathsByTypers represents a collection of MountSpecPathsByTyper\ntype mountSpecPathsByTypers []MountSpecPathsByTyper\n\n// MountSpecPathsByType define the per-type paths that define the entities\n// (e.g. device nodes, directories, libraries, symlinks) that are required for\n// gpu use on Tegra-based systems.\n// These are typically populated from CSV files defined by the platform owner.\ntype MountSpecPathsByType map[csv.MountSpecType][]string\n\nvar _ MountSpecPathsByTyper = (MountSpecPathsByType)(nil)\nvar _ MountSpecPathsByTyper = (mountSpecPathsByTypers)(nil)\n\n// MountSpecPathsByType for a variable of type MountSpecPathsByType returns the\n// underlying data structure.\n// This allows for using this type in functions such as Merge and Filter.\nfunc (m MountSpecPathsByType) MountSpecPathsByType() MountSpecPathsByType {\n\treturn m\n}\n\n// MountSpecPathsByType returns the combination of mount specs by type for the\n// collection.\nfunc (collection mountSpecPathsByTypers) MountSpecPathsByType() MountSpecPathsByType {\n\tmerged := make(MountSpecPathsByType)\n\tfor _, t := range collection {\n\t\tif t == nil {\n\t\t\tcontinue\n\t\t}\n\t\tfor tType, targets := range t.MountSpecPathsByType() {\n\t\t\tmerged[tType] = append(merged[tType], targets...)\n\t\t}\n\t}\n\treturn merged\n\n}\n\n// A Transformer modifies a specified set of mount specs by type.\n// The output of a transformer is itself a set of mount specs by type.\ntype Transformer interface {\n\tApply(MountSpecPathsByTyper) MountSpecPathsByTyper\n}\n\n// Transform applies the specified transforms to a set of mount specs by type.\n// The result is itself a set of mount specs by type.\nfunc Transform(input MountSpecPathsByTyper, t ...Transformer) MountSpecPathsByTyper {\n\treturn transformMountSpecByPathsByType{\n\t\tTransformer: allTransformers(t),\n\t\tinput:       input,\n\t}\n}\n\ntype allTransformers []Transformer\n\nfunc (ts allTransformers) Apply(input MountSpecPathsByTyper) MountSpecPathsByTyper {\n\tfor _, t := range ts {\n\t\tif t == nil {\n\t\t\tcontinue\n\t\t}\n\t\tinput = t.Apply(input)\n\t}\n\treturn input\n}\n\ntype transformMountSpecByPathsByType struct {\n\tTransformer\n\tinput MountSpecPathsByTyper\n}\n\ntype merge []MountSpecPathsByTyper\n\n// Merge combines the MountSpecPathsByType for the specified sources.\nfunc Merge(sources ...MountSpecPathsByTyper) MountSpecPathsByTyper {\n\treturn merge(sources)\n}\n\n// MountSpecPathsByType for a set of merged mount specs combines the list of\n// paths per type.\nfunc (ts merge) MountSpecPathsByType() MountSpecPathsByType {\n\ttargetsByType := make(MountSpecPathsByType)\n\tfor _, t := range ts {\n\t\tif t == nil {\n\t\t\tcontinue\n\t\t}\n\t\tfor tType, targets := range t.MountSpecPathsByType() {\n\t\t\ttargetsByType[tType] = append(targetsByType[tType], targets...)\n\t\t}\n\t}\n\treturn targetsByType\n}\n\nfunc (m transformMountSpecByPathsByType) MountSpecPathsByType() MountSpecPathsByType {\n\treturn m.Apply(m.input).MountSpecPathsByType()\n}\n\nfunc IgnoreSymlinkMountSpecsByPattern(ignorePatterns ...string) Transformer {\n\treturn ignoreSymlinkMountSpecPatterns(ignorePatterns)\n}\n\n// OnlyDeviceNodes creates a transformer that will remove any input mounts specs\n// that are not of the `MountSpecDev` type.\nfunc OnlyDeviceNodes() Transformer {\n\treturn filterByMountSpecType{\n\t\tcsv.MountSpecDir: removeAll{},\n\t\tcsv.MountSpecLib: removeAll{},\n\t\tcsv.MountSpecSym: removeAll{},\n\t}\n}\n\n// WithoutDeviceNodes creates a transformer that will remove entries with type\n// MountSpecDevice from the input.\nfunc WithoutDeviceNodes() Transformer {\n\treturn filterByMountSpecType{\n\t\tcsv.MountSpecDev: removeAll{},\n\t}\n}\n\nfunc Without(m MountSpecPathsByTyper) Transformer {\n\treturn filterByMountSpecPathsByTyper{m}\n}\n\n// WithoutRegularDeviceNodes creates a transfomer which removes\n// regular `/dev/nvidia[0-9]+` device nodes from the source.\nfunc WithoutRegularDeviceNodes() Transformer {\n\treturn filterByMountSpecType{\n\t\tcsv.MountSpecDev: &matcherAsFilter{regexp.MustCompile(\"^/dev/nvidia[0-9]+$\")},\n\t}\n}\n\n// DeviceNodes creates a set of MountSpecPaths for the specified device nodes.\n// These have the MoutSpecDev type.\nfunc DeviceNodes(dn ...string) MountSpecPathsByTyper {\n\treturn MountSpecPathsByType{\n\t\tcsv.MountSpecDev: dn,\n\t}\n}\n\n// DeviceNodes creates a set of MountSpecPaths for the specified symlinks.\n// These have the MountSpecSym type.\nfunc Symlinks(s ...string) MountSpecPathsByTyper {\n\treturn MountSpecPathsByType{\n\t\tcsv.MountSpecSym: s,\n\t}\n}\n"
  },
  {
    "path": "internal/platform-support/tegra/options.go",
    "content": "/**\n# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage tegra\n\nimport (\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/discover\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/lookup/root\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/lookup\"\n)\n\ntype options struct {\n\tlogger             logger.Interface\n\tdriver             *root.Driver\n\thookCreator        discover.HookCreator\n\tlibrarySearchPaths []string\n\n\t// The following can be overridden for testing\n\tsymlinkLocator      lookup.Locator\n\tsymlinkChainLocator lookup.Locator\n\t// TODO: This should be replaced by a regular mock\n\tresolveSymlink func(string) (string, error)\n\n\tmountSpecs MountSpecPathsByTyper\n}\n\n// Option defines a functional option for configuring a Tegra discoverer.\ntype Option func(*options)\n\n// WithLogger sets the logger for the discoverer.\nfunc WithLogger(logger logger.Interface) Option {\n\treturn func(o *options) {\n\t\to.logger = logger\n\t}\n}\n\n// WithDriverRoot sets the driver root for the discoverer.\nfunc WithDriver(driver *root.Driver) Option {\n\treturn func(o *options) {\n\t\to.driver = driver\n\t}\n}\n\n// WithHookCreator sets the hook creator for the discoverer.\nfunc WithHookCreator(hookCreator discover.HookCreator) Option {\n\treturn func(o *options) {\n\t\to.hookCreator = hookCreator\n\t}\n}\n\n// WithLibrarySearchPaths sets the library search paths for the discoverer.\nfunc WithLibrarySearchPaths(librarySearchPaths ...string) Option {\n\treturn func(o *options) {\n\t\to.librarySearchPaths = librarySearchPaths\n\t}\n}\n\nfunc WithMountSpecs(mountSpecs ...MountSpecPathsByTyper) Option {\n\treturn func(o *options) {\n\t\to.mountSpecs = mountSpecPathsByTypers(mountSpecs)\n\t}\n}\n"
  },
  {
    "path": "internal/platform-support/tegra/symlinks.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage tegra\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/discover\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/lookup\"\n)\n\ntype symlinkHook struct {\n\tdiscover.None\n\tlogger      logger.Interface\n\thookCreator discover.HookCreator\n\ttargets     []string\n\n\t// The following can be overridden for testing\n\tsymlinkChainLocator lookup.Locator\n\tresolveSymlink      func(string) (string, error)\n}\n\n// createCSVSymlinkHooks creates a discoverer for a hook that creates required symlinks in the container\nfunc (o options) createCSVSymlinkHooks(targets []string) discover.Discover {\n\treturn symlinkHook{\n\t\tlogger:              o.logger,\n\t\thookCreator:         o.hookCreator,\n\t\ttargets:             targets,\n\t\tsymlinkChainLocator: o.symlinkChainLocator,\n\t\tresolveSymlink:      o.resolveSymlink,\n\t}\n}\n\n// Hooks returns a hook to create the symlinks from the required CSV files\nfunc (d symlinkHook) Hooks() ([]discover.Hook, error) {\n\treturn d.hookCreator.Create(\"create-symlinks\", d.getCSVFileSymlinks()...).Hooks()\n}\n\n// getSymlinkCandidates returns a list of symlinks that are candidates for being created.\nfunc (d symlinkHook) getSymlinkCandidates() []string {\n\tvar candidates []string\n\tfor _, target := range d.targets {\n\t\treslovedSymlinkChain, err := d.symlinkChainLocator.Locate(target)\n\t\tif err != nil {\n\t\t\td.logger.Warningf(\"Failed to locate symlink %v\", target)\n\t\t\tcontinue\n\t\t}\n\t\tcandidates = append(candidates, reslovedSymlinkChain...)\n\t}\n\treturn candidates\n}\n\nfunc (d symlinkHook) getCSVFileSymlinks() []string {\n\tvar links []string\n\tcreated := make(map[string]bool)\n\t// candidates is a list of absolute paths to symlinks in a chain, or the final target of the chain.\n\tfor _, candidate := range d.getSymlinkCandidates() {\n\t\ttarget, err := d.resolveSymlink(candidate)\n\t\tif err != nil {\n\t\t\td.logger.Debugf(\"Skipping invalid link: %v\", err)\n\t\t\tcontinue\n\t\t} else if target == candidate {\n\t\t\td.logger.Debugf(\"%v is not a symlink\", candidate)\n\t\t\tcontinue\n\t\t}\n\n\t\tlink := fmt.Sprintf(\"%v::%v\", target, candidate)\n\t\tif created[link] {\n\t\t\td.logger.Debugf(\"skipping duplicate link: %v\", link)\n\t\t\tcontinue\n\t\t}\n\t\tcreated[link] = true\n\n\t\tlinks = append(links, link)\n\t}\n\n\treturn links\n}\n"
  },
  {
    "path": "internal/platform-support/tegra/tegra.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage tegra\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/discover\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/lookup\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/lookup/symlinks\"\n)\n\n// New creates a new tegra discoverer using the supplied functional options.\nfunc New(opts ...Option) (discover.Discover, error) {\n\to := &options{\n\t\tlogger:     &logger.NullLogger{},\n\t\tmountSpecs: mountSpecPathsByTypers{},\n\t}\n\tfor _, opt := range opts {\n\t\topt(o)\n\t}\n\tif o.driver == nil {\n\t\treturn nil, fmt.Errorf(\"a driver must be specified\")\n\t}\n\n\tif o.symlinkLocator == nil {\n\t\to.symlinkLocator = lookup.NewSymlinkLocator(\n\t\t\tlookup.WithLogger(o.logger),\n\t\t\tlookup.WithRoot(o.driver.Root),\n\t\t\tlookup.WithSearchPaths(append(o.librarySearchPaths, \"/\")...),\n\t\t)\n\t}\n\n\tif o.symlinkChainLocator == nil {\n\t\to.symlinkChainLocator = lookup.NewSymlinkChainLocator(\n\t\t\tlookup.WithLogger(o.logger),\n\t\t\tlookup.WithRoot(o.driver.Root),\n\t\t)\n\t}\n\n\tif o.resolveSymlink == nil {\n\t\to.resolveSymlink = symlinks.Resolve\n\t}\n\n\tmountSpecDiscoverer := o.newDiscovererFromMountSpecs(o.mountSpecs.MountSpecPathsByType())\n\n\ttegraSystemMounts := discover.NewMounts(\n\t\to.logger,\n\t\tlookup.NewFileLocator(lookup.WithLogger(o.logger)),\n\t\t\"\",\n\t\t[]string{\n\t\t\t\"/etc/nv_tegra_release\",\n\t\t},\n\t)\n\n\td := discover.Merge(\n\t\tmountSpecDiscoverer,\n\t\ttegraSystemMounts,\n\t)\n\n\treturn d, nil\n}\n"
  },
  {
    "path": "internal/platform-support/tegra/tegra_test.go",
    "content": "/**\n# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage tegra_test\n\nimport (\n\t\"path/filepath\"\n\t\"testing\"\n\n\ttestlog \"github.com/sirupsen/logrus/hooks/test\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/devices\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/discover\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/lookup/root\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/platform-support/tegra\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/platform-support/tegra/csv\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/test\"\n)\n\nfunc TestTegraNew(t *testing.T) {\n\tlogger, _ := testlog.NewNullLogger()\n\n\tdefer devices.SetAllForTest()()\n\n\tmoduleRoot, err := test.GetModuleRoot()\n\trequire.NoError(t, err)\n\n\tlookupRoot := filepath.Join(moduleRoot, \"testdata\", \"lookup\")\n\n\ttestCases := []struct {\n\t\tdescription     string\n\t\tdriverRootfs    string\n\t\tdevRootfs       string\n\t\texpectedDevices []discover.Device\n\t\texpectedMounts  []discover.Mount\n\t\texpectedHooks   []discover.Hook\n\t}{\n\t\t{\n\t\t\tdescription:  \"empty rootfs returns no devices\",\n\t\t\tdriverRootfs: \"rootfs-empty\",\n\t\t},\n\t\t{\n\t\t\tdescription:  \"rootfs with device nodes returns devices\",\n\t\t\tdriverRootfs: \"rootfs-orin\",\n\t\t\texpectedDevices: []discover.Device{\n\t\t\t\t{Path: \"/dev/nvidia0\", HostPath: \"/dev/nvidia0\"},\n\t\t\t},\n\t\t\texpectedMounts: []discover.Mount{\n\t\t\t\t{Path: \"/usr/lib/aarch64-linux-gnu/nvidia/libcuda.so.1.1\", HostPath: \"/usr/lib/aarch64-linux-gnu/nvidia/libcuda.so.1.1\", Options: []string{\"ro\", \"nosuid\", \"nodev\", \"rbind\", \"rprivate\"}},\n\t\t\t\t{Path: \"/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-ml.so.1\", HostPath: \"/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-ml.so.1\", Options: []string{\"ro\", \"nosuid\", \"nodev\", \"rbind\", \"rprivate\"}},\n\t\t\t},\n\t\t\texpectedHooks: []discover.Hook{\n\t\t\t\t{\n\t\t\t\t\tLifecycle: \"createContainer\",\n\t\t\t\t\tPath:      \"/usr/bin/nvidia-cdi-hook\",\n\t\t\t\t\tArgs:      []string{\"nvidia-cdi-hook\", \"create-symlinks\", \"--link\", \"libcuda.so.1::/usr/lib/aarch64-linux-gnu/nvidia/libcuda.so\"},\n\t\t\t\t\tEnv:       []string{\"NVIDIA_CTK_DEBUG=false\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription:  \"split rootfs\",\n\t\t\tdriverRootfs: \"rootfs-orin\",\n\t\t\tdevRootfs:    \"rootfs-split/dev-root\",\n\t\t\texpectedDevices: []discover.Device{\n\t\t\t\t{Path: \"/dev/nvidia0\", HostPath: \"/dev/nvidia0\"},\n\t\t\t\t{Path: \"/dev/nvidiactl\", HostPath: \"/dev/nvidiactl\"},\n\t\t\t},\n\t\t\texpectedMounts: []discover.Mount{\n\t\t\t\t{Path: \"/usr/lib/aarch64-linux-gnu/nvidia/libcuda.so.1.1\", HostPath: \"/usr/lib/aarch64-linux-gnu/nvidia/libcuda.so.1.1\", Options: []string{\"ro\", \"nosuid\", \"nodev\", \"rbind\", \"rprivate\"}},\n\t\t\t\t{Path: \"/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-ml.so.1\", HostPath: \"/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-ml.so.1\", Options: []string{\"ro\", \"nosuid\", \"nodev\", \"rbind\", \"rprivate\"}},\n\t\t\t},\n\t\t\texpectedHooks: []discover.Hook{\n\t\t\t\t{\n\t\t\t\t\tLifecycle: \"createContainer\",\n\t\t\t\t\tPath:      \"/usr/bin/nvidia-cdi-hook\",\n\t\t\t\t\tArgs:      []string{\"nvidia-cdi-hook\", \"create-symlinks\", \"--link\", \"libcuda.so.1::/usr/lib/aarch64-linux-gnu/nvidia/libcuda.so\"},\n\t\t\t\t\tEnv:       []string{\"NVIDIA_CTK_DEBUG=false\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\thookCreator := discover.NewHookCreator()\n\n\t// We use the same csv file list for all test cases.\n\tvar csvFiles []string\n\tfor _, csvFile := range csv.DefaultFileList() {\n\t\tcsvFiles = append(csvFiles, filepath.Join(lookupRoot, \"rootfs-orin\", csvFile))\n\t}\n\tmountSpecs := tegra.MountSpecsFromCSVFiles(logger, csvFiles...)\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\tdriverRoot := tc.driverRootfs\n\t\t\tif driverRoot != \"\" {\n\t\t\t\tdriverRoot = filepath.Join(lookupRoot, tc.driverRootfs)\n\t\t\t}\n\t\t\tdevRoot := tc.devRootfs\n\t\t\tif devRoot != \"\" {\n\t\t\t\tdevRoot = filepath.Join(lookupRoot, tc.devRootfs)\n\t\t\t}\n\t\t\tdriver := root.New(root.WithDriverRoot(driverRoot), root.WithDevRoot(devRoot))\n\t\t\td, err := tegra.New(\n\t\t\t\ttegra.WithLogger(logger),\n\t\t\t\ttegra.WithDriver(driver),\n\t\t\t\ttegra.WithHookCreator(hookCreator),\n\t\t\t\ttegra.WithMountSpecs(mountSpecs),\n\t\t\t)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tdevices, err := d.Devices()\n\t\t\trequire.NoError(t, err)\n\n\t\t\tif devRoot == \"\" {\n\t\t\t\tdevRoot = driverRoot\n\t\t\t}\n\t\t\trequire.EqualValues(t, tc.expectedDevices, test.StripRoot(devices, devRoot))\n\n\t\t\tmounts, err := d.Mounts()\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.EqualValues(t, tc.expectedMounts, test.StripRoot(mounts, driverRoot))\n\n\t\t\thooks, err := d.Hooks()\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.EqualValues(t, tc.expectedHooks, test.StripRoot(hooks, driverRoot))\n\n\t\t\tenvVars, err := d.EnvVars()\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.Empty(t, envVars)\n\t\t})\n\t}\n}\n\nfunc TestOptions(t *testing.T) {\n\ttestCases := []struct {\n\t\tdescription         string\n\t\tdriver              *root.Driver\n\t\texpectedErrorstring string\n\t}{\n\t\t{\n\t\t\tdescription:         \"nill driver returns an error\",\n\t\t\texpectedErrorstring: \"a driver must be specified\",\n\t\t},\n\t\t{\n\t\t\tdescription: \"valid driver\",\n\t\t\tdriver:      root.New(),\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\t_, err := tegra.New(\n\t\t\t\ttegra.WithDriver(tc.driver),\n\t\t\t)\n\t\t\tif tc.expectedErrorstring == \"\" {\n\t\t\t\trequire.NoError(t, err)\n\t\t\t} else {\n\t\t\t\trequire.EqualError(t, err, tc.expectedErrorstring)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/requirements/constants.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage requirements\n\n// A list of supported requirements / properties\nconst (\n\tARCH   = \"arch\"\n\tBRAND  = \"brand\"\n\tCUDA   = \"cuda\"\n\tDRIVER = \"driver\"\n)\n"
  },
  {
    "path": "internal/requirements/constraints/binary.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage constraints\n\nimport (\n\t\"fmt\"\n)\n\n// binary represents a binary operation. This can be used to compare a specified\n// property to a value\ntype binary struct {\n\tleft     Property\n\toperator string\n\tright    string\n}\n\n// String returns the string representation of the binary comparator\nfunc (c binary) String() string {\n\treturn fmt.Sprintf(\"%v%v%v\", c.left.Name(), c.operator, c.right)\n}\n\n// Assert compares the property to the required value using the supplied comparator\nfunc (c binary) Assert() error {\n\tsatisfied, err := c.eval()\n\tif err != nil {\n\t\treturn err\n\t}\n\tif satisfied {\n\t\treturn nil\n\t}\n\n\t// error_setx(err, \"unsatisfied condition: %s, please update your driver to a newer version, or use an earlier cuda container\", predicate_format);\n\treturn fmt.Errorf(\"unsatisfied condition: %v (%v)\", c.String(), c.left.String())\n}\n\nfunc (c binary) eval() (bool, error) {\n\tif c.left == nil {\n\t\treturn true, nil\n\t}\n\n\tcompare, err := c.left.CompareTo(c.right)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\n\tswitch c.operator {\n\tcase equal:\n\t\treturn compare == 0, nil\n\tcase notEqual:\n\t\treturn compare != 0, nil\n\tcase less:\n\t\treturn compare < 0, nil\n\tcase lessEqual:\n\t\treturn compare <= 0, nil\n\tcase greater:\n\t\treturn compare > 0, nil\n\tcase greaterEqual:\n\t\treturn compare >= 0, nil\n\t}\n\n\treturn false, fmt.Errorf(\"invalid operator %v\", c.operator)\n}\n"
  },
  {
    "path": "internal/requirements/constraints/constants.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage constraints\n\nconst (\n\tequal        = \"=\"\n\tnotEqual     = \"!=\"\n\tless         = \"<\"\n\tlessEqual    = \"<=\"\n\tgreater      = \">\"\n\tgreaterEqual = \">=\"\n)\n\n// always is a constraint that is always met\ntype always struct{}\n\nfunc (c always) Assert() error {\n\treturn nil\n}\n\nfunc (c always) String() string {\n\treturn \"true\"\n}\n"
  },
  {
    "path": "internal/requirements/constraints/constraint_mock.go",
    "content": "// Code generated by moq; DO NOT EDIT.\n// github.com/matryer/moq\n\npackage constraints\n\nimport (\n\t\"sync\"\n)\n\n// Ensure, that ConstraintMock does implement Constraint.\n// If this is not the case, regenerate this file with moq.\nvar _ Constraint = &ConstraintMock{}\n\n// ConstraintMock is a mock implementation of Constraint.\n//\n//\tfunc TestSomethingThatUsesConstraint(t *testing.T) {\n//\n//\t\t// make and configure a mocked Constraint\n//\t\tmockedConstraint := &ConstraintMock{\n//\t\t\tAssertFunc: func() error {\n//\t\t\t\tpanic(\"mock out the Assert method\")\n//\t\t\t},\n//\t\t\tStringFunc: func() string {\n//\t\t\t\tpanic(\"mock out the String method\")\n//\t\t\t},\n//\t\t}\n//\n//\t\t// use mockedConstraint in code that requires Constraint\n//\t\t// and then make assertions.\n//\n//\t}\ntype ConstraintMock struct {\n\t// AssertFunc mocks the Assert method.\n\tAssertFunc func() error\n\n\t// StringFunc mocks the String method.\n\tStringFunc func() string\n\n\t// calls tracks calls to the methods.\n\tcalls struct {\n\t\t// Assert holds details about calls to the Assert method.\n\t\tAssert []struct {\n\t\t}\n\t\t// String holds details about calls to the String method.\n\t\tString []struct {\n\t\t}\n\t}\n\tlockAssert sync.RWMutex\n\tlockString sync.RWMutex\n}\n\n// Assert calls AssertFunc.\nfunc (mock *ConstraintMock) Assert() error {\n\tcallInfo := struct {\n\t}{}\n\tmock.lockAssert.Lock()\n\tmock.calls.Assert = append(mock.calls.Assert, callInfo)\n\tmock.lockAssert.Unlock()\n\tif mock.AssertFunc == nil {\n\t\tvar (\n\t\t\terrOut error\n\t\t)\n\t\treturn errOut\n\t}\n\treturn mock.AssertFunc()\n}\n\n// AssertCalls gets all the calls that were made to Assert.\n// Check the length with:\n//\n//\tlen(mockedConstraint.AssertCalls())\nfunc (mock *ConstraintMock) AssertCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockAssert.RLock()\n\tcalls = mock.calls.Assert\n\tmock.lockAssert.RUnlock()\n\treturn calls\n}\n\n// String calls StringFunc.\nfunc (mock *ConstraintMock) String() string {\n\tcallInfo := struct {\n\t}{}\n\tmock.lockString.Lock()\n\tmock.calls.String = append(mock.calls.String, callInfo)\n\tmock.lockString.Unlock()\n\tif mock.StringFunc == nil {\n\t\tvar (\n\t\t\tsOut string\n\t\t)\n\t\treturn sOut\n\t}\n\treturn mock.StringFunc()\n}\n\n// StringCalls gets all the calls that were made to String.\n// Check the length with:\n//\n//\tlen(mockedConstraint.StringCalls())\nfunc (mock *ConstraintMock) StringCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockString.RLock()\n\tcalls = mock.calls.String\n\tmock.lockString.RUnlock()\n\treturn calls\n}\n"
  },
  {
    "path": "internal/requirements/constraints/constraints.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage constraints\n\n// Constraint represents a constraint that is to be evaluated\n//\n//go:generate moq -rm -fmt=goimports -stub -out constraint_mock.go . Constraint\ntype Constraint interface {\n\tString() string\n\tAssert() error\n}\n"
  },
  {
    "path": "internal/requirements/constraints/constraints_test.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage constraints\n"
  },
  {
    "path": "internal/requirements/constraints/factory.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage constraints\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n)\n\ntype factory struct {\n\tlogger     logger.Interface\n\tproperties map[string]Property\n}\n\n// New creates a new constraint for the supplied requirements and properties\nfunc New(logger logger.Interface, requirements []string, properties map[string]Property) (Constraint, error) {\n\tif len(requirements) == 0 {\n\t\treturn &always{}, nil\n\t}\n\n\tf := factory{\n\t\tlogger:     logger,\n\t\tproperties: properties,\n\t}\n\n\tvar constraints []Constraint\n\tfor _, r := range requirements {\n\t\tc, err := f.newConstraintFromRequirement(r)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif c == nil {\n\t\t\tcontinue\n\t\t}\n\t\tconstraints = append(constraints, c)\n\t}\n\n\treturn AND(constraints), nil\n}\n\n// newConstraintFromRequirement takes a requirement string and generates\n// the associated constraint(s). Invalid constraints are ignored.\n// Each requirement can consist of multiple constraints, with space-separated constraints being ORed\n// together and comma-separated constraints being ANDed together.\nfunc (r factory) newConstraintFromRequirement(requirement string) (Constraint, error) {\n\tconst (\n\t\torSeparator  = \" \"\n\t\tandSeparator = \",\"\n\t)\n\tif strings.TrimSpace(requirement) == \"\" {\n\t\treturn nil, nil\n\t}\n\n\tvar terms []Constraint\n\tfor _, term := range strings.Split(requirement, orSeparator) {\n\t\tvar factors []Constraint\n\t\tfor _, factor := range strings.Split(term, andSeparator) {\n\t\t\tf, err := r.parse(factor)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tif f == nil {\n\t\t\t\tr.logger.Debugf(\"Skipping unsupported constraint: %v\", factor)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tfactors = append(factors, f)\n\t\t}\n\n\t\tif len(factors) == 0 {\n\t\t\tcontinue\n\t\t}\n\n\t\tif len(factors) == 1 {\n\t\t\tterms = append(terms, factors[0])\n\t\t} else {\n\t\t\tterms = append(terms, and(factors))\n\t\t}\n\t}\n\n\treturn OR(terms), nil\n}\n\n// parse constructs a constraint from the specified string.\n// The string is expected to be of the form [PROPERTY][OPERATOR][VALUE]\nfunc (r factory) parse(condition string) (Constraint, error) {\n\tif strings.TrimSpace(condition) == \"\" {\n\t\treturn nil, nil\n\t}\n\n\toperators := []string{\n\t\tnotEqual,\n\t\tlessEqual,\n\t\tgreaterEqual,\n\t\tequal,\n\t\tless,\n\t\tgreater,\n\t}\n\n\tpropertyEnd := strings.IndexAny(condition, \"<>=!\")\n\tif propertyEnd == -1 {\n\t\treturn nil, fmt.Errorf(\"invalid constraint: %v\", condition)\n\t}\n\n\tproperty := condition[:propertyEnd]\n\tcondition = strings.TrimPrefix(condition, property)\n\n\tp, ok := r.properties[property]\n\tif !ok || p == nil {\n\t\treturn nil, nil\n\t}\n\n\tvar op string\n\tfor _, o := range operators {\n\t\tif strings.HasPrefix(condition, o) {\n\t\t\top = o\n\t\t\tbreak\n\t\t}\n\t}\n\tvalue := strings.TrimPrefix(condition, op)\n\n\tc := binary{\n\t\tleft:     p,\n\t\tright:    value,\n\t\toperator: op,\n\t}\n\treturn c, p.Validate(value)\n}\n"
  },
  {
    "path": "internal/requirements/constraints/factory_test.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage constraints\n\nimport (\n\t\"testing\"\n\n\ttestlog \"github.com/sirupsen/logrus/hooks/test\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestParse(t *testing.T) {\n\tlogger, _ := testlog.NewNullLogger()\n\n\tcuda := NewVersionProperty(\"cuda\", \"\")\n\n\tf := factory{\n\t\tlogger: logger,\n\t\tproperties: map[string]Property{\n\t\t\t\"cuda\": cuda,\n\t\t},\n\t}\n\n\ttestCases := []struct {\n\t\tdescription   string\n\t\tcondition     string\n\t\texpectedError bool\n\t\texpected      Constraint\n\t}{\n\t\t{\n\t\t\tdescription: \"empty is nil\",\n\t\t\tcondition:   \"\",\n\t\t\texpected:    nil,\n\t\t},\n\t\t{\n\t\t\tdescription:   \"missing operator is invalid\",\n\t\t\tcondition:     \"notvalid\",\n\t\t\texpectedError: true,\n\t\t},\n\t\t{\n\t\t\tdescription: \"invalid property is invalid\",\n\t\t\tcondition:   \"foo=45\",\n\t\t\texpected:    nil,\n\t\t},\n\t\t{\n\t\t\tdescription:   \"cuda must be semver\",\n\t\t\tcondition:     \"cuda=foo\",\n\t\t\texpectedError: true,\n\t\t\texpected:      binary{cuda, equal, \"foo\"},\n\t\t},\n\t\t{\n\t\t\tdescription: \"cuda greater than equal\",\n\t\t\tcondition:   \"cuda>=11.6\",\n\t\t\texpected:    binary{cuda, greaterEqual, \"11.6\"},\n\t\t},\n\t\t{\n\t\t\tdescription: \"cuda greater than\",\n\t\t\tcondition:   \"cuda>11.6\",\n\t\t\texpected:    binary{cuda, greater, \"11.6\"},\n\t\t},\n\t\t{\n\t\t\tdescription: \"cuda less than equal\",\n\t\t\tcondition:   \"cuda<=11.6\",\n\t\t\texpected:    binary{cuda, lessEqual, \"11.6\"},\n\t\t},\n\t\t{\n\t\t\tdescription: \"cuda less than\",\n\t\t\tcondition:   \"cuda<11.6\",\n\t\t\texpected:    binary{cuda, less, \"11.6\"},\n\t\t},\n\t\t{\n\t\t\tdescription: \"cuda equal\",\n\t\t\tcondition:   \"cuda=11.6\",\n\t\t\texpected:    binary{cuda, equal, \"11.6\"},\n\t\t},\n\t\t{\n\t\t\tdescription: \"cuda not equal\",\n\t\t\tcondition:   \"cuda!=11.6\",\n\t\t\texpected:    binary{cuda, notEqual, \"11.6\"},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\tc, err := f.parse(tc.condition)\n\t\t\tif tc.expectedError {\n\t\t\t\trequire.Error(t, err)\n\t\t\t} else {\n\t\t\t\trequire.NoError(t, err)\n\t\t\t}\n\t\t\trequire.EqualValues(t, tc.expected, c)\n\t\t})\n\t}\n}\n\nfunc TestNewConstraintFromRequirement(t *testing.T) {\n\tlogger, _ := testlog.NewNullLogger()\n\n\tcuda := &PropertyMock{}\n\tarch := &PropertyMock{}\n\n\tf := factory{\n\t\tlogger: logger,\n\t\tproperties: map[string]Property{\n\t\t\t\"cuda\": cuda,\n\t\t\t\"arch\": arch,\n\t\t},\n\t}\n\n\ttestCases := []struct {\n\t\tdescription   string\n\t\trequirement   string\n\t\texpectedError bool\n\t\texpected      Constraint\n\t}{\n\t\t{\n\t\t\tdescription: \"empty is nil\",\n\t\t\trequirement: \"\",\n\t\t\texpected:    nil,\n\t\t},\n\t\t{\n\t\t\tdescription:   \"malformed constraint is invalid\",\n\t\t\trequirement:   \"notvalid\",\n\t\t\texpectedError: true,\n\t\t\texpected:      nil,\n\t\t},\n\t\t{\n\t\t\tdescription: \"unsupported property is ignored\",\n\t\t\trequirement: \"cuda>=11.6 foo=bar\",\n\t\t\texpected:    binary{cuda, greaterEqual, \"11.6\"},\n\t\t},\n\t\t{\n\t\t\tdescription: \"space-separated is and\",\n\t\t\trequirement: \"cuda>=11.6 arch=5.3\",\n\t\t\texpected: and([]Constraint{\n\t\t\t\tbinary{cuda, greaterEqual, \"11.6\"},\n\t\t\t\tbinary{arch, equal, \"5.3\"},\n\t\t\t}),\n\t\t},\n\t\t{\n\t\t\tdescription: \"comma-separated is or\",\n\t\t\trequirement: \"cuda>=11.6,arch=5.3\",\n\t\t\texpected: or([]Constraint{\n\t\t\t\tbinary{cuda, greaterEqual, \"11.6\"},\n\t\t\t\tbinary{arch, equal, \"5.3\"},\n\t\t\t}),\n\t\t},\n\t\t{\n\t\t\tdescription: \"and takes precedence\",\n\t\t\trequirement: \"cuda<13.6 cuda>=11.6,arch=5.3\",\n\t\t\texpected: or([]Constraint{\n\t\t\t\tbinary{cuda, less, \"13.6\"},\n\t\t\t\tand([]Constraint{\n\t\t\t\t\tbinary{cuda, greaterEqual, \"11.6\"},\n\t\t\t\t\tbinary{arch, equal, \"5.3\"},\n\t\t\t\t}),\n\t\t\t}),\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\tc, err := f.newConstraintFromRequirement(tc.requirement)\n\t\t\tif tc.expectedError {\n\t\t\t\trequire.Error(t, err)\n\t\t\t} else {\n\t\t\t\trequire.NoError(t, err)\n\t\t\t}\n\t\t\trequire.EqualValues(t, tc.expected, c)\n\t\t})\n\t}\n\n}\n"
  },
  {
    "path": "internal/requirements/constraints/logical.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage constraints\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n)\n\n// or represents an OR operation on a set of constraints\ntype or []Constraint\n\n// and represents an AND (ALL) operation on a set of contraints\ntype and []Constraint\n\n// AND constructs a new constraint that is the logical AND of the supplied constraints\nfunc AND(constraints []Constraint) Constraint {\n\tif len(constraints) == 0 {\n\t\treturn &always{}\n\t}\n\tif len(constraints) == 1 {\n\t\treturn constraints[0]\n\t}\n\treturn and(constraints)\n}\n\n// OR constructs a new constrant that is the logical OR of the supplied constraints\nfunc OR(constraints []Constraint) Constraint {\n\tif len(constraints) == 0 {\n\t\treturn nil\n\t}\n\tif len(constraints) == 1 {\n\t\treturn constraints[0]\n\t}\n\n\treturn or(constraints)\n}\n\nfunc (operands or) Assert() error {\n\tfor _, o := range operands {\n\t\t// We stop on the first nil\n\t\tif err := o.Assert(); err == nil {\n\t\t\treturn nil\n\t\t}\n\t}\n\treturn fmt.Errorf(\"%v not met\", operands)\n}\n\nfunc (operands or) String() string {\n\tvar terms []string\n\n\tfor _, o := range operands {\n\t\tterms = append(terms, o.String())\n\t}\n\n\treturn strings.Join(terms, \"||\")\n}\n\nfunc (operands and) Assert() error {\n\tfor _, o := range operands {\n\t\t// We stop on the first Assert\n\t\tif err := o.Assert(); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (operands and) String() string {\n\tvar terms []string\n\n\tfor _, o := range operands {\n\t\tterms = append(terms, o.String())\n\t}\n\n\treturn strings.Join(terms, \"&&\")\n}\n"
  },
  {
    "path": "internal/requirements/constraints/logical_test.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage constraints\n\nimport (\n\t\"fmt\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestANDConstraint(t *testing.T) {\n\n\tnever := ConstraintMock{AssertFunc: func() error { return fmt.Errorf(\"false\") }}\n\n\ttestCases := []struct {\n\t\tdescription string\n\t\tconstraints []Constraint\n\t\texpected    bool\n\t}{\n\t\t{\n\t\t\tdescription: \"empty is always true\",\n\t\t\tconstraints: []Constraint{},\n\t\t\texpected:    true,\n\t\t},\n\t\t{\n\t\t\tdescription: \"single true constraint is true\",\n\t\t\tconstraints: []Constraint{\n\t\t\t\t&always{},\n\t\t\t},\n\t\t\texpected: true,\n\t\t},\n\t\t{\n\t\t\tdescription: \"single false constraint is false\",\n\t\t\tconstraints: []Constraint{\n\t\t\t\t&never,\n\t\t\t},\n\t\t\texpected: false,\n\t\t},\n\t\t{\n\t\t\tdescription: \"multiple true constraints are true\",\n\t\t\tconstraints: []Constraint{\n\t\t\t\t&always{}, &always{},\n\t\t\t},\n\t\t\texpected: true,\n\t\t},\n\t\t{\n\t\t\tdescription: \"mixed constraints are false (first is true)\",\n\t\t\tconstraints: []Constraint{\n\t\t\t\t&always{}, &never,\n\t\t\t},\n\t\t\texpected: false,\n\t\t},\n\t\t{\n\t\t\tdescription: \"mixed constraints are false (last is true)\",\n\t\t\tconstraints: []Constraint{\n\t\t\t\t&never, &always{},\n\t\t\t},\n\t\t\texpected: false,\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\terr := and(tc.constraints).Assert()\n\t\t\tif tc.expected {\n\t\t\t\trequire.NoError(t, err)\n\t\t\t} else {\n\t\t\t\trequire.Error(t, err)\n\t\t\t}\n\t\t})\n\t}\n\n}\n\nfunc TestORConstraint(t *testing.T) {\n\n\tnever := ConstraintMock{AssertFunc: func() error { return fmt.Errorf(\"false\") }}\n\n\ttestCases := []struct {\n\t\tdescription string\n\t\tconstraints []Constraint\n\t\texpected    bool\n\t}{\n\t\t{\n\t\t\tdescription: \"empty is always false\",\n\t\t\tconstraints: []Constraint{},\n\t\t\texpected:    false,\n\t\t},\n\t\t{\n\t\t\tdescription: \"single true constraint is true\",\n\t\t\tconstraints: []Constraint{\n\t\t\t\t&always{},\n\t\t\t},\n\t\t\texpected: true,\n\t\t},\n\t\t{\n\t\t\tdescription: \"single false constraint is false\",\n\t\t\tconstraints: []Constraint{\n\t\t\t\t&never,\n\t\t\t},\n\t\t\texpected: false,\n\t\t},\n\t\t{\n\t\t\tdescription: \"multiple true constraints are true\",\n\t\t\tconstraints: []Constraint{\n\t\t\t\t&always{}, &always{},\n\t\t\t},\n\t\t\texpected: true,\n\t\t},\n\t\t{\n\t\t\tdescription: \"mixed constraints are true (first is true)\",\n\t\t\tconstraints: []Constraint{\n\t\t\t\t&always{}, &never,\n\t\t\t},\n\t\t\texpected: true,\n\t\t},\n\t\t{\n\t\t\tdescription: \"mixed constraints are true (last is true)\",\n\t\t\tconstraints: []Constraint{\n\t\t\t\t&never, &always{},\n\t\t\t},\n\t\t\texpected: true,\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\terr := or(tc.constraints).Assert()\n\t\t\tif tc.expected {\n\t\t\t\trequire.NoError(t, err)\n\t\t\t} else {\n\t\t\t\trequire.Error(t, err)\n\t\t\t}\n\t\t})\n\t}\n\n}\n"
  },
  {
    "path": "internal/requirements/constraints/property.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage constraints\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\t\"golang.org/x/mod/semver\"\n)\n\n// Property represents a property that is used to check requirements\n//\n//go:generate moq -rm -fmt=goimports -stub -out property_mock.go . Property\ntype Property interface {\n\tName() string\n\tValue() (string, error)\n\tString() string\n\tCompareTo(string) (int, error)\n\tValidate(string) error\n}\n\n// NewStringProperty creates a string property based on the name-value pair\nfunc NewStringProperty(name string, value string) Property {\n\tp := stringProperty{\n\t\tname:  name,\n\t\tvalue: value,\n\t}\n\n\treturn p\n}\n\n// NewVersionProperty creates a property representing a semantic version based on the name-value pair\nfunc NewVersionProperty(name string, value string) Property {\n\tp := versionProperty{\n\t\tstringProperty: stringProperty{\n\t\t\tname:  name,\n\t\t\tvalue: value,\n\t\t},\n\t}\n\n\treturn p\n}\n\n// stringProperty represents a property that is used to check requirements\ntype stringProperty struct {\n\tname  string\n\tvalue string\n}\n\ntype versionProperty struct {\n\tstringProperty\n}\n\n// Name returns a stringProperty's name\nfunc (p stringProperty) Name() string {\n\treturn p.name\n}\n\n// Value returns a stringProperty's value or an error if this cannot be determined\nfunc (p stringProperty) Value() (string, error) {\n\treturn p.value, nil\n}\n\n// CompareTo compares two strings to each other\nfunc (p stringProperty) CompareTo(other string) (int, error) {\n\tvalue := p.value\n\n\tif value < other {\n\t\treturn -1, nil\n\t}\n\n\tif value > other {\n\t\treturn 1, nil\n\t}\n\n\treturn 0, nil\n}\n\n// Validate returns nil for all input strings\nfunc (p stringProperty) Validate(string) error {\n\treturn nil\n}\n\n// String returns the string representation of the name value combination\nfunc (p stringProperty) String() string {\n\tv, err := p.Value()\n\tif err != nil {\n\t\treturn fmt.Sprintf(\"invalid %v: %v\", p.name, err)\n\t}\n\treturn fmt.Sprintf(\"%v=%v\", p.name, v)\n}\n\n// CompareTo compares two versions to each other as semantic versions\nfunc (p versionProperty) CompareTo(other string) (int, error) {\n\tif err := p.Validate(other); err != nil {\n\t\treturn 0, fmt.Errorf(\"invailid value for %v: %v\", p.name, err)\n\t}\n\n\tvValue := ensurePrefix(p.value, \"v\")\n\tvOther := ensurePrefix(other, \"v\")\n\treturn semver.Compare(vValue, vOther), nil\n}\n\n// Validate checks whether the supplied value is a valid semantic version\nfunc (p versionProperty) Validate(value string) error {\n\tif !semver.IsValid(ensurePrefix(value, \"v\")) {\n\t\treturn fmt.Errorf(\"invailid value %v; expected a valid version string\", value)\n\t}\n\n\treturn nil\n}\n\nfunc ensurePrefix(s string, prefix string) string {\n\treturn prefix + strings.TrimPrefix(s, prefix)\n}\n"
  },
  {
    "path": "internal/requirements/constraints/property_mock.go",
    "content": "// Code generated by moq; DO NOT EDIT.\n// github.com/matryer/moq\n\npackage constraints\n\nimport (\n\t\"sync\"\n)\n\n// Ensure, that PropertyMock does implement Property.\n// If this is not the case, regenerate this file with moq.\nvar _ Property = &PropertyMock{}\n\n// PropertyMock is a mock implementation of Property.\n//\n//\tfunc TestSomethingThatUsesProperty(t *testing.T) {\n//\n//\t\t// make and configure a mocked Property\n//\t\tmockedProperty := &PropertyMock{\n//\t\t\tCompareToFunc: func(s string) (int, error) {\n//\t\t\t\tpanic(\"mock out the CompareTo method\")\n//\t\t\t},\n//\t\t\tNameFunc: func() string {\n//\t\t\t\tpanic(\"mock out the Name method\")\n//\t\t\t},\n//\t\t\tStringFunc: func() string {\n//\t\t\t\tpanic(\"mock out the String method\")\n//\t\t\t},\n//\t\t\tValidateFunc: func(s string) error {\n//\t\t\t\tpanic(\"mock out the Validate method\")\n//\t\t\t},\n//\t\t\tValueFunc: func() (string, error) {\n//\t\t\t\tpanic(\"mock out the Value method\")\n//\t\t\t},\n//\t\t}\n//\n//\t\t// use mockedProperty in code that requires Property\n//\t\t// and then make assertions.\n//\n//\t}\ntype PropertyMock struct {\n\t// CompareToFunc mocks the CompareTo method.\n\tCompareToFunc func(s string) (int, error)\n\n\t// NameFunc mocks the Name method.\n\tNameFunc func() string\n\n\t// StringFunc mocks the String method.\n\tStringFunc func() string\n\n\t// ValidateFunc mocks the Validate method.\n\tValidateFunc func(s string) error\n\n\t// ValueFunc mocks the Value method.\n\tValueFunc func() (string, error)\n\n\t// calls tracks calls to the methods.\n\tcalls struct {\n\t\t// CompareTo holds details about calls to the CompareTo method.\n\t\tCompareTo []struct {\n\t\t\t// S is the s argument value.\n\t\t\tS string\n\t\t}\n\t\t// Name holds details about calls to the Name method.\n\t\tName []struct {\n\t\t}\n\t\t// String holds details about calls to the String method.\n\t\tString []struct {\n\t\t}\n\t\t// Validate holds details about calls to the Validate method.\n\t\tValidate []struct {\n\t\t\t// S is the s argument value.\n\t\t\tS string\n\t\t}\n\t\t// Value holds details about calls to the Value method.\n\t\tValue []struct {\n\t\t}\n\t}\n\tlockCompareTo sync.RWMutex\n\tlockName      sync.RWMutex\n\tlockString    sync.RWMutex\n\tlockValidate  sync.RWMutex\n\tlockValue     sync.RWMutex\n}\n\n// CompareTo calls CompareToFunc.\nfunc (mock *PropertyMock) CompareTo(s string) (int, error) {\n\tcallInfo := struct {\n\t\tS string\n\t}{\n\t\tS: s,\n\t}\n\tmock.lockCompareTo.Lock()\n\tmock.calls.CompareTo = append(mock.calls.CompareTo, callInfo)\n\tmock.lockCompareTo.Unlock()\n\tif mock.CompareToFunc == nil {\n\t\tvar (\n\t\t\tnOut   int\n\t\t\terrOut error\n\t\t)\n\t\treturn nOut, errOut\n\t}\n\treturn mock.CompareToFunc(s)\n}\n\n// CompareToCalls gets all the calls that were made to CompareTo.\n// Check the length with:\n//\n//\tlen(mockedProperty.CompareToCalls())\nfunc (mock *PropertyMock) CompareToCalls() []struct {\n\tS string\n} {\n\tvar calls []struct {\n\t\tS string\n\t}\n\tmock.lockCompareTo.RLock()\n\tcalls = mock.calls.CompareTo\n\tmock.lockCompareTo.RUnlock()\n\treturn calls\n}\n\n// Name calls NameFunc.\nfunc (mock *PropertyMock) Name() string {\n\tcallInfo := struct {\n\t}{}\n\tmock.lockName.Lock()\n\tmock.calls.Name = append(mock.calls.Name, callInfo)\n\tmock.lockName.Unlock()\n\tif mock.NameFunc == nil {\n\t\tvar (\n\t\t\tsOut string\n\t\t)\n\t\treturn sOut\n\t}\n\treturn mock.NameFunc()\n}\n\n// NameCalls gets all the calls that were made to Name.\n// Check the length with:\n//\n//\tlen(mockedProperty.NameCalls())\nfunc (mock *PropertyMock) NameCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockName.RLock()\n\tcalls = mock.calls.Name\n\tmock.lockName.RUnlock()\n\treturn calls\n}\n\n// String calls StringFunc.\nfunc (mock *PropertyMock) String() string {\n\tcallInfo := struct {\n\t}{}\n\tmock.lockString.Lock()\n\tmock.calls.String = append(mock.calls.String, callInfo)\n\tmock.lockString.Unlock()\n\tif mock.StringFunc == nil {\n\t\tvar (\n\t\t\tsOut string\n\t\t)\n\t\treturn sOut\n\t}\n\treturn mock.StringFunc()\n}\n\n// StringCalls gets all the calls that were made to String.\n// Check the length with:\n//\n//\tlen(mockedProperty.StringCalls())\nfunc (mock *PropertyMock) StringCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockString.RLock()\n\tcalls = mock.calls.String\n\tmock.lockString.RUnlock()\n\treturn calls\n}\n\n// Validate calls ValidateFunc.\nfunc (mock *PropertyMock) Validate(s string) error {\n\tcallInfo := struct {\n\t\tS string\n\t}{\n\t\tS: s,\n\t}\n\tmock.lockValidate.Lock()\n\tmock.calls.Validate = append(mock.calls.Validate, callInfo)\n\tmock.lockValidate.Unlock()\n\tif mock.ValidateFunc == nil {\n\t\tvar (\n\t\t\terrOut error\n\t\t)\n\t\treturn errOut\n\t}\n\treturn mock.ValidateFunc(s)\n}\n\n// ValidateCalls gets all the calls that were made to Validate.\n// Check the length with:\n//\n//\tlen(mockedProperty.ValidateCalls())\nfunc (mock *PropertyMock) ValidateCalls() []struct {\n\tS string\n} {\n\tvar calls []struct {\n\t\tS string\n\t}\n\tmock.lockValidate.RLock()\n\tcalls = mock.calls.Validate\n\tmock.lockValidate.RUnlock()\n\treturn calls\n}\n\n// Value calls ValueFunc.\nfunc (mock *PropertyMock) Value() (string, error) {\n\tcallInfo := struct {\n\t}{}\n\tmock.lockValue.Lock()\n\tmock.calls.Value = append(mock.calls.Value, callInfo)\n\tmock.lockValue.Unlock()\n\tif mock.ValueFunc == nil {\n\t\tvar (\n\t\t\tsOut   string\n\t\t\terrOut error\n\t\t)\n\t\treturn sOut, errOut\n\t}\n\treturn mock.ValueFunc()\n}\n\n// ValueCalls gets all the calls that were made to Value.\n// Check the length with:\n//\n//\tlen(mockedProperty.ValueCalls())\nfunc (mock *PropertyMock) ValueCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockValue.RLock()\n\tcalls = mock.calls.Value\n\tmock.lockValue.RUnlock()\n\treturn calls\n}\n"
  },
  {
    "path": "internal/requirements/requirements.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage requirements\n\nimport (\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/requirements/constraints\"\n)\n\n// Requirements represents a collection of requirements that can be compared to properties\ntype Requirements struct {\n\tlogger       logger.Interface\n\trequirements []string\n\tproperties   map[string]constraints.Property\n}\n\n// New creates a new set of requirements\nfunc New(logger logger.Interface, requirements []string) *Requirements {\n\tr := Requirements{\n\t\tlogger:       logger,\n\t\trequirements: requirements,\n\t\tproperties: map[string]constraints.Property{\n\t\t\t// Set up the supported properties. These are overridden with actual values.\n\t\t\tCUDA:   constraints.NewVersionProperty(CUDA, \"\"),\n\t\t\tARCH:   constraints.NewVersionProperty(ARCH, \"\"),\n\t\t\tDRIVER: constraints.NewVersionProperty(DRIVER, \"\"),\n\t\t\tBRAND:  constraints.NewStringProperty(BRAND, \"\"),\n\t\t},\n\t}\n\n\treturn &r\n}\n\n// AddVersionProperty adds the specified property (name, value pair) to the requirements\nfunc (r *Requirements) AddVersionProperty(name string, value string) {\n\tr.properties[name] = constraints.NewVersionProperty(name, value)\n}\n\n// AddStringProperty adds the specified property (name, value pair) to the requirements\nfunc (r *Requirements) AddStringProperty(name string, value string) {\n\tr.properties[name] = constraints.NewStringProperty(name, value)\n}\n\n// Assert checks the specified requirements\nfunc (r Requirements) Assert() error {\n\tif len(r.requirements) == 0 {\n\t\treturn nil\n\t}\n\n\tr.logger.Debugf(\"Checking properties %+v against requirements %v\", r.properties, r.requirements)\n\tc, err := constraints.New(r.logger, r.requirements, r.properties)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn c.Assert()\n}\n"
  },
  {
    "path": "internal/runtime/api.go",
    "content": "package runtime\n\ntype rt struct {\n\tlogger       *Logger\n\tmodeOverride string\n}\n\n// Interface is the interface for the runtime library.\ntype Interface interface {\n\tRun([]string) error\n}\n\n// Option is a function that configures the runtime.\ntype Option func(*rt)\n\n// New creates a runtime with the specified options.\nfunc New(opts ...Option) Interface {\n\tr := rt{}\n\tfor _, opt := range opts {\n\t\topt(&r)\n\t}\n\tif r.logger == nil {\n\t\tr.logger = NewLogger()\n\t}\n\treturn &r\n}\n\n// WithModeOverride allows for overriding the mode specified in the config.\nfunc WithModeOverride(mode string) Option {\n\treturn func(r *rt) {\n\t\tr.modeOverride = mode\n\t}\n}\n"
  },
  {
    "path": "internal/runtime/logger.go",
    "content": "/*\n# Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n*/\n\npackage runtime\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"runtime\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/sirupsen/logrus\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n)\n\n// Logger adds a way to manage output to a log file to a logrus.Logger\ntype Logger struct {\n\tlogger.Interface\n\tpreviousLogger logger.Interface\n\tlogFiles       []*os.File\n}\n\n// NewLogger creates an empty logger\nfunc NewLogger() *Logger {\n\treturn &Logger{\n\t\tInterface: logrus.New(),\n\t}\n}\n\n// Update constructs a Logger with a preddefined formatter\nfunc (l *Logger) Update(filename string, logLevel string, argv []string) {\n\n\tconfigFromArgs := parseArgs(argv)\n\n\tlevel, logLevelError := configFromArgs.getLevel(logLevel)\n\tdefer func() {\n\t\tif logLevelError != nil {\n\t\t\tl.Warningf(\"Error getting log level: %v\", logLevelError)\n\t\t}\n\t}()\n\n\tvar logFiles []*os.File\n\tvar argLogFileError error\n\n\t// We don't create log files if the version argument is supplied\n\tif !configFromArgs.version {\n\t\tconfigLogFile, err := createLogFile(filename)\n\t\tif err != nil {\n\t\t\targLogFileError = errors.Join(argLogFileError, err)\n\t\t}\n\t\tif configLogFile != nil {\n\t\t\tlogFiles = append(logFiles, configLogFile)\n\t\t}\n\n\t\targLogFile, err := createLogFile(configFromArgs.file)\n\t\tif argLogFile != nil {\n\t\t\tlogFiles = append(logFiles, argLogFile)\n\t\t}\n\t\targLogFileError = errors.Join(argLogFileError, err)\n\t}\n\tdefer func() {\n\t\tif argLogFileError != nil {\n\t\t\tl.Warningf(\"Failed to open log file: %v\", argLogFileError)\n\t\t}\n\t}()\n\n\tnewLogger := logrus.New()\n\n\tnewLogger.SetLevel(level)\n\tif level == logrus.DebugLevel {\n\t\tlogrus.SetReportCaller(true)\n\t\t// Shorten function and file names reported by the logger, by\n\t\t// trimming common \"github.com/opencontainers/runc\" prefix.\n\t\t// This is only done for text formatter.\n\t\t_, file, _, _ := runtime.Caller(0)\n\t\tprefix := filepath.Dir(file) + \"/\"\n\t\tlogrus.SetFormatter(&logrus.TextFormatter{\n\t\t\tCallerPrettyfier: func(f *runtime.Frame) (string, string) {\n\t\t\t\tfunction := strings.TrimPrefix(f.Function, prefix) + \"()\"\n\t\t\t\tfileLine := strings.TrimPrefix(f.File, prefix) + \":\" + strconv.Itoa(f.Line)\n\t\t\t\treturn function, fileLine\n\t\t\t},\n\t\t})\n\t}\n\n\tif configFromArgs.format == \"json\" {\n\t\tnewLogger.SetFormatter(new(logrus.JSONFormatter))\n\t}\n\n\tswitch len(logFiles) {\n\tcase 0:\n\t\tnewLogger.SetOutput(io.Discard)\n\tcase 1:\n\t\tnewLogger.SetOutput(logFiles[0])\n\tdefault:\n\t\tvar writers []io.Writer\n\t\tfor _, f := range logFiles {\n\t\t\twriters = append(writers, f)\n\t\t}\n\t\tnewLogger.SetOutput(io.MultiWriter(writers...))\n\t}\n\n\t*l = Logger{\n\t\tInterface:      newLogger,\n\t\tpreviousLogger: l.Interface,\n\t\tlogFiles:       logFiles,\n\t}\n}\n\n// Reset closes the log file (if any) and resets the logger output to what it\n// was before UpdateLogger was called.\nfunc (l *Logger) Reset() error {\n\tdefer func() {\n\t\tprevious := l.previousLogger\n\t\tif previous == nil {\n\t\t\tprevious = logrus.New()\n\t\t}\n\t\tl.Interface = previous\n\t\tl.previousLogger = nil\n\t\tl.logFiles = nil\n\t}()\n\n\tvar errs []error\n\tfor _, f := range l.logFiles {\n\t\terr := f.Close()\n\t\tif err != nil {\n\t\t\terrs = append(errs, err)\n\t\t}\n\t}\n\n\tvar err error\n\tfor _, e := range errs {\n\t\tif err == nil {\n\t\t\terr = e\n\t\t\tcontinue\n\t\t}\n\t\treturn fmt.Errorf(\"%v; %w\", e, err)\n\t}\n\n\treturn err\n}\n\nfunc createLogFile(filename string) (*os.File, error) {\n\tif filename == \"\" || filename == os.DevNull {\n\t\treturn nil, nil\n\t}\n\tif dir := filepath.Dir(filepath.Clean(filename)); dir != \".\" {\n\t\terr := os.MkdirAll(dir, 0755)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\treturn os.OpenFile(filename, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)\n}\n\ntype loggerConfig struct {\n\tfile    string\n\tformat  string\n\tdebug   bool\n\tversion bool\n}\n\nfunc (c loggerConfig) getLevel(logLevel string) (logrus.Level, error) {\n\tif c.debug {\n\t\treturn logrus.DebugLevel, nil\n\t}\n\n\tif logLevel, err := logrus.ParseLevel(logLevel); err == nil {\n\t\treturn logLevel, nil\n\t}\n\n\treturn logrus.InfoLevel, fmt.Errorf(\"invalid log-level '%v'\", logLevel)\n}\n\n// Informed by Taken from https://github.com/opencontainers/runc/blob/7fd8b57001f5bfa102e89cb434d96bf71f7c1d35/main.go#L182\nfunc parseArgs(args []string) loggerConfig {\n\tc := loggerConfig{}\n\n\texpected := map[string]*string{\n\t\t\"log-format\": &c.format,\n\t\t\"log\":        &c.file,\n\t}\n\n\tfound := make(map[string]bool)\n\n\tfor i := 0; i < len(args); i++ {\n\t\tif len(found) == 4 {\n\t\t\tbreak\n\t\t}\n\n\t\tparam := args[i]\n\n\t\tparts := strings.SplitN(param, \"=\", 2)\n\t\ttrimmed := strings.TrimLeft(parts[0], \"-\")\n\t\t// If this is not a flag we continue\n\t\tif parts[0] == trimmed {\n\t\t\tcontinue\n\t\t}\n\n\t\t// Check the version flag\n\t\tif trimmed == \"version\" {\n\t\t\tc.version = true\n\t\t\tfound[\"version\"] = true\n\t\t\t// For the version flag we don't process any other flags\n\t\t\tcontinue\n\t\t}\n\n\t\t// Check the debug flag\n\t\tif trimmed == \"debug\" {\n\t\t\tc.debug = true\n\t\t\tfound[\"debug\"] = true\n\t\t\tcontinue\n\t\t}\n\n\t\tdestination, exists := expected[trimmed]\n\t\tif !exists {\n\t\t\tcontinue\n\t\t}\n\n\t\tvar value string\n\t\tswitch {\n\t\tcase len(parts) == 2:\n\t\t\tvalue = parts[1]\n\t\tcase i+1 < len(args):\n\t\t\tvalue = args[i+1]\n\t\t\ti++\n\t\tdefault:\n\t\t\tcontinue\n\t\t}\n\n\t\t*destination = value\n\t\tfound[trimmed] = true\n\t}\n\n\treturn c\n}\n"
  },
  {
    "path": "internal/runtime/logger_test.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage runtime\n\nimport (\n\t\"testing\"\n\n\t\"github.com/sirupsen/logrus\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestLogger(t *testing.T) {\n\tl := NewLogger()\n\n\tl.Update(\"\", \"debug\", nil)\n\n\tll := l.Interface.(*logrus.Logger)\n\trequire.Equal(t, logrus.DebugLevel, ll.Level)\n\n\tlp := l.previousLogger.(*logrus.Logger)\n\trequire.Equal(t, logrus.InfoLevel, lp.Level)\n}\n"
  },
  {
    "path": "internal/runtime/runtime.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage runtime\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"strings\"\n\n\t\"github.com/opencontainers/runtime-spec/specs-go\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/api/config/v1\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/info\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/lookup/root\"\n)\n\n// Run is an entry point that allows for idiomatic handling of errors\n// when calling from the main function.\nfunc (r rt) Run(argv []string) (rerr error) {\n\tdefer func() {\n\t\tif rerr != nil {\n\t\t\tr.logger.Errorf(\"%v\", rerr)\n\t\t}\n\t}()\n\n\tprintVersion := hasVersionFlag(argv)\n\tif printVersion {\n\t\tfmt.Printf(\"%v version %v\\n\", \"NVIDIA Container Runtime\", info.GetVersionString(fmt.Sprintf(\"spec: %v\", specs.Version)))\n\t}\n\n\tcfg, err := config.GetConfig()\n\tif err != nil {\n\t\treturn fmt.Errorf(\"error loading config: %v\", err)\n\t}\n\tr.logger.Update(\n\t\tcfg.NVIDIAContainerRuntimeConfig.DebugFilePath,\n\t\tcfg.NVIDIAContainerRuntimeConfig.LogLevel,\n\t\targv,\n\t)\n\tdefer func() {\n\t\tif rerr != nil {\n\t\t\tr.logger.Errorf(\"%v\", rerr)\n\t\t}\n\t\tif err := r.logger.Reset(); err != nil {\n\t\t\trerr = errors.Join(rerr, fmt.Errorf(\"failed to reset logger: %v\", err))\n\t\t}\n\t}()\n\n\t// We apply some config updates here to ensure that the config is valid in\n\t// all cases.\n\tif r.modeOverride != \"\" {\n\t\tcfg.NVIDIAContainerRuntimeConfig.Mode = r.modeOverride\n\t}\n\t//nolint:staticcheck  // TODO(elezar): We should swith the nvidia-container-runtime from using nvidia-ctk to using nvidia-cdi-hook.\n\tcfg.NVIDIACTKConfig.Path = config.ResolveNVIDIACTKPath(&logger.NullLogger{}, cfg.NVIDIACTKConfig.Path)\n\tcfg.NVIDIAContainerRuntimeHookConfig.Path = config.ResolveNVIDIAContainerRuntimeHookPath(&logger.NullLogger{}, cfg.NVIDIAContainerRuntimeHookConfig.Path)\n\n\t// Log the config at Trace to allow for debugging if required.\n\tr.logger.Tracef(\"Running with config: %+v\", cfg)\n\n\tdriver := root.New(\n\t\troot.WithLogger(r.logger),\n\t\troot.WithDriverRoot(cfg.NVIDIAContainerCLIConfig.Root),\n\t\troot.WithDevRoot(cfg.NVIDIAContainerCLIConfig.Root),\n\t)\n\n\tr.logger.Tracef(\"Command line arguments: %v\", argv)\n\truntime, err := newNVIDIAContainerRuntime(r.logger, driver, cfg, argv)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to create NVIDIA Container Runtime: %v\", err)\n\t}\n\n\tif printVersion {\n\t\tfmt.Print(\"\\n\")\n\t}\n\treturn runtime.Exec(argv)\n}\n\nfunc (r rt) Errorf(format string, args ...interface{}) {\n\tr.logger.Errorf(format, args...)\n}\n\n// TODO: This should be refactored / combined with parseArgs in logger.\nfunc hasVersionFlag(args []string) bool {\n\tfor i := 0; i < len(args); i++ {\n\t\tparam := args[i]\n\n\t\tparts := strings.SplitN(param, \"=\", 2)\n\t\ttrimmed := strings.TrimLeft(parts[0], \"-\")\n\t\t// If this is not a flag we continue\n\t\tif parts[0] == trimmed {\n\t\t\tcontinue\n\t\t}\n\n\t\t// Check the version flag\n\t\tif trimmed == \"version\" {\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn false\n}\n"
  },
  {
    "path": "internal/runtime/runtime_factory.go",
    "content": "/*\n# Copyright (c) 2021-2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n*/\n\npackage runtime\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/api/config/v1\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/config/image\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/discover\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/info\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/lookup/root\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/modifier\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/oci\"\n)\n\n// newNVIDIAContainerRuntime is a factory method that constructs a runtime based on the selected configuration and specified logger\nfunc newNVIDIAContainerRuntime(logger logger.Interface, driver *root.Driver, cfg *config.Config, argv []string) (oci.Runtime, error) {\n\tlowLevelRuntime, err := oci.NewLowLevelRuntime(logger, cfg.NVIDIAContainerRuntimeConfig.Runtimes)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error constructing low-level runtime: %v\", err)\n\t}\n\n\tlogger.Tracef(\"Using low-level runtime %v\", lowLevelRuntime.String())\n\tif !oci.HasCreateSubcommand(argv) {\n\t\tlogger.Tracef(\"Skipping modifier for non-create subcommand\")\n\t\treturn lowLevelRuntime, nil\n\t}\n\n\tociSpec, err := oci.NewSpec(argv,\n\t\toci.WithLogger(logger),\n\t\toci.WithAllowUnknownFields(cfg.Features.AllowUnknownOCISpecFields.IsEnabled()),\n\t)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error constructing OCI specification: %v\", err)\n\t}\n\n\tspecModifier, err := newSpecModifier(logger, driver, cfg, ociSpec)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to construct OCI spec modifier: %v\", err)\n\t}\n\n\t// Create the wrapping runtime with the specified modifier.\n\tr := oci.NewModifyingRuntimeWrapper(\n\t\tlogger,\n\t\tlowLevelRuntime,\n\t\tociSpec,\n\t\tspecModifier,\n\t)\n\n\treturn r, nil\n}\n\n// newSpecModifier is a factory method that creates constructs an OCI spec modifer based on the provided config.\nfunc newSpecModifier(logger logger.Interface, driver *root.Driver, cfg *config.Config, ociSpec oci.Spec) (oci.SpecModifier, error) {\n\tmode, image, err := initRuntimeModeAndImage(logger, cfg, ociSpec)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\thookCreator := discover.NewHookCreator(discover.WithNVIDIACDIHookPath(cfg.NVIDIACTKConfig.Path))\n\treturn modifier.New(\n\t\tmodifier.WithLogger(logger),\n\t\tmodifier.WithConfig(cfg),\n\t\tmodifier.WithImage(image),\n\t\tmodifier.WithDriver(driver),\n\t\tmodifier.WithHookCreator(hookCreator),\n\t\tmodifier.WithRuntimeMode(mode),\n\t)\n}\n\n// initRuntimeModeAndImage constructs an image from the specified OCI runtime\n// specification and runtime config.\n// The image is also used to determine the runtime mode to apply.\n// If a non-CDI mode is detected we ensure that the image does not process\n// annotation devices.\nfunc initRuntimeModeAndImage(logger logger.Interface, cfg *config.Config, ociSpec oci.Spec) (info.RuntimeMode, *image.CUDA, error) {\n\trawSpec, err := ociSpec.Load()\n\tif err != nil {\n\t\treturn \"\", nil, fmt.Errorf(\"failed to load OCI spec: %v\", err)\n\t}\n\n\timage, err := image.NewCUDAImageFromSpec(\n\t\trawSpec,\n\t\timage.WithLogger(logger),\n\t\timage.WithAcceptDeviceListAsVolumeMounts(cfg.AcceptDeviceListAsVolumeMounts),\n\t\timage.WithAcceptEnvvarUnprivileged(cfg.AcceptEnvvarUnprivileged),\n\t\timage.WithAnnotationsPrefixes(cfg.NVIDIAContainerRuntimeConfig.Modes.CDI.AnnotationPrefixes...),\n\t\timage.WithPreferredVisibleDevicesEnvVars(cfg.SwarmResource),\n\t\timage.WithIgnoreImexChannelRequests(cfg.Features.IgnoreImexChannelRequests.IsEnabled()),\n\t)\n\tif err != nil {\n\t\treturn \"\", nil, err\n\t}\n\n\tmodeResolver := info.NewRuntimeModeResolver(\n\t\tinfo.WithLogger(logger),\n\t\tinfo.WithImage(&image),\n\t)\n\tmode := modeResolver.ResolveRuntimeMode(cfg.NVIDIAContainerRuntimeConfig.Mode)\n\t// We update the mode here so that we can continue passing just the config to other functions.\n\tcfg.NVIDIAContainerRuntimeConfig.Mode = string(mode)\n\n\tif mode == \"cdi\" || len(cfg.NVIDIAContainerRuntimeConfig.Modes.CDI.AnnotationPrefixes) == 0 {\n\t\treturn mode, &image, nil\n\t}\n\n\t// For non-cdi modes we explicitly set the annotation prefixes to nil and\n\t// call this function again to force a reconstruction of the image.\n\t// Note that since the mode is now explicitly set, we will effectively skip\n\t// the mode resolution.\n\tcfg.NVIDIAContainerRuntimeConfig.Modes.CDI.AnnotationPrefixes = nil\n\n\treturn initRuntimeModeAndImage(logger, cfg, ociSpec)\n}\n"
  },
  {
    "path": "internal/runtime/runtime_factory_test.go",
    "content": "/*\n# Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n*/\n\npackage runtime\n\nimport (\n\t\"encoding/json\"\n\t\"log\"\n\t\"os\"\n\t\"os/exec\"\n\t\"path/filepath\"\n\t\"testing\"\n\n\t\"github.com/opencontainers/runtime-spec/specs-go\"\n\ttestlog \"github.com/sirupsen/logrus/hooks/test\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/api/config/v1\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/config/image\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/info\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/lookup/root\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/oci\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/test\"\n)\n\nconst (\n\truncExecutableName = \"runc\"\n)\n\nfunc TestMain(m *testing.M) {\n\t// TEST SETUP\n\t// Determine the module root and the test binary path\n\tvar err error\n\tmoduleRoot, err := test.GetModuleRoot()\n\tif err != nil {\n\t\tlog.Fatalf(\"error in test setup: could not get module root: %v\", err)\n\t}\n\ttestBinPath := filepath.Join(moduleRoot, \"tests\", \"bin\")\n\n\t// Set the environment variables for the test\n\tos.Setenv(\"PATH\", test.PrependToPath(testBinPath, moduleRoot))\n\n\t// Confirm that the environment is configured correctly\n\truncPath, err := exec.LookPath(runcExecutableName)\n\tif err != nil || filepath.Join(testBinPath, runcExecutableName) != runcPath {\n\t\tlog.Fatalf(\"error in test setup: mock runc path set incorrectly in TestMain(): %v\", err)\n\t}\n\n\t// RUN TESTS\n\texitCode := m.Run()\n\n\tos.Exit(exitCode)\n}\n\nfunc TestFactoryMethod(t *testing.T) {\n\tlogger, _ := testlog.NewNullLogger()\n\tdriver := root.New(\n\t\troot.WithDriverRoot(\"/nvidia/driver/root\"),\n\t)\n\n\ttestCases := []struct {\n\t\tdescription   string\n\t\tcfg           *config.Config\n\t\tspec          *specs.Spec\n\t\texpectedError bool\n\t}{\n\t\t{\n\t\t\tdescription: \"empty config raises error\",\n\t\t\tcfg: &config.Config{\n\t\t\t\tNVIDIAContainerRuntimeConfig: config.RuntimeConfig{},\n\t\t\t},\n\t\t\texpectedError: true,\n\t\t},\n\t\t{\n\t\t\tdescription: \"config with runtime raises no error\",\n\t\t\tcfg: &config.Config{\n\t\t\t\tNVIDIAContainerRuntimeConfig: config.RuntimeConfig{\n\t\t\t\t\tRuntimes: []string{\"runc\"},\n\t\t\t\t\tMode:     \"legacy\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"csv mode is supported\",\n\t\t\tcfg: &config.Config{\n\t\t\t\tNVIDIAContainerRuntimeConfig: config.RuntimeConfig{\n\t\t\t\t\tRuntimes: []string{\"runc\"},\n\t\t\t\t\tMode:     \"csv\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tspec: &specs.Spec{\n\t\t\t\tProcess: &specs.Process{\n\t\t\t\t\tEnv: []string{\n\t\t\t\t\t\t\"NVIDIA_VISIBLE_DEVICES=all\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"non-legacy discover mode raises error\",\n\t\t\tcfg: &config.Config{\n\t\t\t\tNVIDIAContainerRuntimeConfig: config.RuntimeConfig{\n\t\t\t\t\tRuntimes: []string{\"runc\"},\n\t\t\t\t\tMode:     \"non-legacy\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedError: true,\n\t\t},\n\t\t{\n\t\t\tdescription: \"legacy discover mode returns modifier\",\n\t\t\tcfg: &config.Config{\n\t\t\t\tNVIDIAContainerRuntimeConfig: config.RuntimeConfig{\n\t\t\t\t\tRuntimes: []string{\"runc\"},\n\t\t\t\t\tMode:     \"legacy\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"csv discover mode returns modifier\",\n\t\t\tcfg: &config.Config{\n\t\t\t\tNVIDIAContainerRuntimeConfig: config.RuntimeConfig{\n\t\t\t\t\tRuntimes: []string{\"runc\"},\n\t\t\t\t\tMode:     \"csv\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"empty mode raises error\",\n\t\t\tcfg: &config.Config{\n\t\t\t\tNVIDIAContainerRuntimeConfig: config.RuntimeConfig{\n\t\t\t\t\tRuntimes: []string{\"runc\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedError: true,\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\n\t\t\tbundleDir := t.TempDir()\n\n\t\t\tspecFile, err := os.Create(filepath.Join(bundleDir, \"config.json\"))\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.NoError(t, json.NewEncoder(specFile).Encode(tc.spec))\n\n\t\t\targv := []string{\"--bundle\", bundleDir, \"create\"}\n\n\t\t\t_, err = newNVIDIAContainerRuntime(logger, driver, tc.cfg, argv)\n\t\t\tif tc.expectedError {\n\t\t\t\trequire.Error(t, err)\n\t\t\t} else {\n\t\t\t\trequire.NoError(t, err)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestNewSpecModifier(t *testing.T) {\n\tlogger, _ := testlog.NewNullLogger()\n\tdriver := root.New(\n\t\troot.WithDriverRoot(\"/nvidia/driver/root\"),\n\t)\n\ttestCases := []struct {\n\t\tdescription  string\n\t\tconfig       *config.Config\n\t\tspec         *specs.Spec\n\t\texpectedSpec *specs.Spec\n\t}{\n\t\t{\n\t\t\tdescription: \"csv mode removes nvidia-container-runtime-hook\",\n\t\t\tconfig: &config.Config{\n\t\t\t\tNVIDIAContainerRuntimeConfig: config.RuntimeConfig{\n\t\t\t\t\tMode: \"csv\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tspec: &specs.Spec{\n\t\t\t\tHooks: &specs.Hooks{\n\t\t\t\t\tPrestart: []specs.Hook{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/path/to/nvidia-container-runtime-hook\",\n\t\t\t\t\t\t\tArgs: []string{\"/path/to/nvidia-container-runtime-hook\", \"prestart\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedSpec: &specs.Spec{\n\t\t\t\tHooks: &specs.Hooks{\n\t\t\t\t\tPrestart: nil,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"csv mode removes nvidia-container-toolkit\",\n\t\t\tconfig: &config.Config{\n\t\t\t\tNVIDIAContainerRuntimeConfig: config.RuntimeConfig{\n\t\t\t\t\tMode: \"csv\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tspec: &specs.Spec{\n\t\t\t\tHooks: &specs.Hooks{\n\t\t\t\t\tPrestart: []specs.Hook{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/path/to/nvidia-container-toolkit\",\n\t\t\t\t\t\t\tArgs: []string{\"/path/to/nvidia-container-toolkit\", \"prestart\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedSpec: &specs.Spec{\n\t\t\t\tHooks: &specs.Hooks{\n\t\t\t\t\tPrestart: nil,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"cdi mode removes nvidia-container-runtime-hook\",\n\t\t\tconfig: &config.Config{\n\t\t\t\tNVIDIAContainerRuntimeConfig: config.RuntimeConfig{\n\t\t\t\t\tMode: \"cdi\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tspec: &specs.Spec{\n\t\t\t\tHooks: &specs.Hooks{\n\t\t\t\t\tPrestart: []specs.Hook{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/path/to/nvidia-container-runtime-hook\",\n\t\t\t\t\t\t\tArgs: []string{\"/path/to/nvidia-container-runtime-hook\", \"prestart\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedSpec: &specs.Spec{\n\t\t\t\tHooks: &specs.Hooks{\n\t\t\t\t\tPrestart: nil,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"cdi mode removes nvidia-container-toolkit\",\n\t\t\tconfig: &config.Config{\n\t\t\t\tNVIDIAContainerRuntimeConfig: config.RuntimeConfig{\n\t\t\t\t\tMode: \"cdi\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tspec: &specs.Spec{\n\t\t\t\tHooks: &specs.Hooks{\n\t\t\t\t\tPrestart: []specs.Hook{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/path/to/nvidia-container-toolkit\",\n\t\t\t\t\t\t\tArgs: []string{\"/path/to/nvidia-container-toolkit\", \"prestart\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedSpec: &specs.Spec{\n\t\t\t\tHooks: &specs.Hooks{\n\t\t\t\t\tPrestart: nil,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"legacy mode keeps nvidia-container-runtime-hook\",\n\t\t\tconfig: &config.Config{\n\t\t\t\tNVIDIAContainerRuntimeConfig: config.RuntimeConfig{\n\t\t\t\t\tMode: \"legacy\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tspec: &specs.Spec{\n\t\t\t\tHooks: &specs.Hooks{\n\t\t\t\t\tPrestart: []specs.Hook{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/path/to/nvidia-container-runtime-hook\",\n\t\t\t\t\t\t\tArgs: []string{\"/path/to/nvidia-container-runtime-hook\", \"prestart\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedSpec: &specs.Spec{\n\t\t\t\tHooks: &specs.Hooks{\n\t\t\t\t\tPrestart: []specs.Hook{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/path/to/nvidia-container-runtime-hook\",\n\t\t\t\t\t\t\tArgs: []string{\"/path/to/nvidia-container-runtime-hook\", \"prestart\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"legacy mode keeps nvidia-container-toolkit\",\n\t\t\tconfig: &config.Config{\n\t\t\t\tNVIDIAContainerRuntimeConfig: config.RuntimeConfig{\n\t\t\t\t\tMode: \"legacy\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tspec: &specs.Spec{\n\t\t\t\tHooks: &specs.Hooks{\n\t\t\t\t\tPrestart: []specs.Hook{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/path/to/nvidia-container-toolkit\",\n\t\t\t\t\t\t\tArgs: []string{\"/path/to/nvidia-container-toolkit\", \"prestart\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedSpec: &specs.Spec{\n\t\t\t\tHooks: &specs.Hooks{\n\t\t\t\t\tPrestart: []specs.Hook{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/path/to/nvidia-container-toolkit\",\n\t\t\t\t\t\t\tArgs: []string{\"/path/to/nvidia-container-toolkit\", \"prestart\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\tspec := &oci.SpecMock{\n\t\t\t\tLoadFunc: func() (*specs.Spec, error) {\n\t\t\t\t\treturn tc.spec, nil\n\t\t\t\t},\n\t\t\t}\n\t\t\tm, err := newSpecModifier(logger, driver, tc.config, spec)\n\t\t\trequire.NoError(t, err)\n\n\t\t\terr = m.Modify(tc.spec)\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.EqualValues(t, tc.expectedSpec, tc.spec)\n\t\t})\n\t}\n}\n\nfunc TestInitRuntimeModeAndImage(t *testing.T) {\n\tlogger, _ := testlog.NewNullLogger()\n\n\ttestCases := []struct {\n\t\tdecription       string\n\t\tconfig           config.Config\n\t\tociSpec          oci.Spec\n\t\texpectedError    error\n\t\texpectedMode     info.RuntimeMode\n\t\tassertValidImage func(*testing.T, *image.CUDA)\n\t}{\n\t\t{\n\t\t\tdecription: \"image with NVIDIA visible devices\",\n\t\t\tconfig: config.Config{\n\t\t\t\tAcceptEnvvarUnprivileged: true,\n\t\t\t\tNVIDIAContainerRuntimeConfig: config.RuntimeConfig{\n\t\t\t\t\tMode: \"nvml\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tociSpec: &oci.SpecMock{\n\t\t\t\tLoadFunc: func() (*specs.Spec, error) {\n\t\t\t\t\ts := &specs.Spec{\n\t\t\t\t\t\tProcess: &specs.Process{\n\t\t\t\t\t\t\tEnv: []string{\"NVIDIA_VISIBLE_DEVICES=all\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t\treturn s, nil\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedMode: \"nvml\",\n\t\t\tassertValidImage: func(t *testing.T, c *image.CUDA) {\n\t\t\t\trequire.EqualValues(t, []string{\"all\"}, c.VisibleDevices())\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdecription: \"image with DOCKER_SWARM envars\",\n\t\t\tconfig: config.Config{\n\t\t\t\tAcceptEnvvarUnprivileged: true,\n\t\t\t\tSwarmResource:            \"DOCKER_SWARM\",\n\t\t\t\tNVIDIAContainerRuntimeConfig: config.RuntimeConfig{\n\t\t\t\t\tMode: \"nvml\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tociSpec: &oci.SpecMock{\n\t\t\t\tLoadFunc: func() (*specs.Spec, error) {\n\t\t\t\t\ts := &specs.Spec{\n\t\t\t\t\t\tProcess: &specs.Process{\n\t\t\t\t\t\t\tEnv: []string{\"NVIDIA_VISIBLE_DEVICES=all\", \"DOCKER_SWARM=GPU1\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t\treturn s, nil\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedMode: \"nvml\",\n\t\t\tassertValidImage: func(t *testing.T, c *image.CUDA) {\n\t\t\t\trequire.EqualValues(t, []string{\"GPU1\"}, c.VisibleDevices())\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdecription: \"image with multiple DOCKER_SWARM envars\",\n\t\t\tconfig: config.Config{\n\t\t\t\tAcceptEnvvarUnprivileged: true,\n\t\t\t\tSwarmResource:            \"DOCKER_SWARM,ANOTHER_SWARM\",\n\t\t\t\tNVIDIAContainerRuntimeConfig: config.RuntimeConfig{\n\t\t\t\t\tMode: \"nvml\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tociSpec: &oci.SpecMock{\n\t\t\t\tLoadFunc: func() (*specs.Spec, error) {\n\t\t\t\t\ts := &specs.Spec{\n\t\t\t\t\t\tProcess: &specs.Process{\n\t\t\t\t\t\t\tEnv: []string{\"NVIDIA_VISIBLE_DEVICES=all\", \"DOCKER_SWARM=GPU1\", \"ANOTHER_SWARM=GPU2\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t\treturn s, nil\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedMode: \"nvml\",\n\t\t\tassertValidImage: func(t *testing.T, c *image.CUDA) {\n\t\t\t\trequire.EqualValues(t, []string{\"GPU1\", \"GPU2\"}, c.VisibleDevices())\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.decription, func(t *testing.T) {\n\t\t\tmode, cudaImage, err := initRuntimeModeAndImage(logger, &tc.config, tc.ociSpec)\n\n\t\t\trequire.EqualValues(t, tc.expectedError, err)\n\t\t\trequire.EqualValues(t, tc.expectedMode, mode)\n\n\t\t\tif tc.assertValidImage != nil {\n\t\t\t\ttc.assertValidImage(t, cudaImage)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/test/test.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage test\n\nimport (\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"runtime\"\n\t\"strings\"\n)\n\n// GetModuleRoot returns the path to the root of the go module\nfunc GetModuleRoot() (string, error) {\n\t_, filename, _, _ := runtime.Caller(0)\n\n\treturn hasGoMod(filename)\n}\n\n// PrependToPath prefixes the specified additional paths to the PATH environment variable\nfunc PrependToPath(additionalPaths ...string) string {\n\tif currentPath := strings.TrimSpace(os.Getenv(\"PATH\")); currentPath != \"\" {\n\t\tadditionalPaths = append(additionalPaths, currentPath)\n\t}\n\treturn strings.Join(additionalPaths, \":\")\n}\n\nfunc hasGoMod(dir string) (string, error) {\n\tif dir == \"\" || dir == \"/\" {\n\t\treturn \"\", fmt.Errorf(\"module root not found\")\n\t}\n\n\t_, err := os.Stat(filepath.Join(dir, \"go.mod\"))\n\tif err != nil {\n\t\treturn hasGoMod(filepath.Dir(dir))\n\t}\n\treturn dir, nil\n}\n\n// Strip root is used to remove the specified root from the string\n// representation of any type.\nfunc StripRoot[T any](v T, root string) T {\n\tstringRep, err := json.Marshal(v)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tstringRep = bytes.ReplaceAll(stringRep, []byte(root), []byte(\"\"))\n\n\tvar modified T\n\terr = json.Unmarshal(stringRep, &modified)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn modified\n}\n"
  },
  {
    "path": "internal/test/to/to.go",
    "content": "/**\n# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage to\n\n// Ptr returns a pointer to a value of any type.\nfunc Ptr[T any](x T) *T {\n\treturn &x\n}\n"
  },
  {
    "path": "packaging/debian/changelog.old",
    "content": "nvidia-container-runtime-hook (1.4.0-1) UNRELEASED; urgency=medium\n\n  * 2f562d5 Add support for the --no-cgroups argument\n  * 25bd7c4 Add flag to specify configuration file\n  * 300aaf9 Add support for the --user argument\n\n -- NVIDIA CORPORATION <cudatools@nvidia.com>  Thu, 21 Jun 2018 18:15:20 +0000\n\nnvidia-container-runtime-hook (1.3.0-1) UNRELEASED; urgency=medium\n\n  * b4d7682 Search for nvidia-container-cli in the custom root directory\n  * 6e589e0 Add support for display capability\n  * b406749 Add support for Ubuntu 14.04, Debian Jessie and Amazon Linux 2\n\n -- NVIDIA CORPORATION <cudatools@nvidia.com>  Thu, 08 Mar 2018 04:17:34 +0000\n\nnvidia-container-runtime-hook (1.2.1-1) UNRELEASED; urgency=medium\n\n  * Extract hook from nvidia-container-runtime package\n\n -- NVIDIA CORPORATION <cudatools@nvidia.com>  Wed, 07 Mar 2018 02:43:03 +0000\n"
  },
  {
    "path": "packaging/debian/compat",
    "content": "9\n"
  },
  {
    "path": "packaging/debian/control",
    "content": "Source: nvidia-container-toolkit\nSection: @SECTION@utils\nPriority: optional\nMaintainer: NVIDIA CORPORATION <cudatools@nvidia.com>\nStandards-Version: 3.9.8\nHomepage: https://github.com/NVIDIA/nvidia-container-toolkit\nVcs-Git: https://github.com/NVIDIA/nvidia-container-toolkit\nVcs-Browser: https://github.com/NVIDIA/nvidia-container-toolkit\nBuild-Depends: debhelper (>= 9)\n\nPackage: nvidia-container-toolkit\nArchitecture: any\nDepends: ${misc:Depends}, nvidia-container-toolkit-base (= @VERSION@), libnvidia-container-tools (= @VERSION@), libnvidia-container-tools (<< 2.0.0)\nBreaks: nvidia-container-runtime (<= 3.5.0-1), nvidia-container-runtime-hook\nReplaces: nvidia-container-runtime (<= 3.5.0-1), nvidia-container-runtime-hook\nDescription: NVIDIA Container toolkit\n Provides tools and utilities to enable GPU support in containers.\n\nPackage: nvidia-container-toolkit-base\nArchitecture: any\nDepends: ${misc:Depends}\nBreaks: nvidia-container-runtime (<= 3.5.0-1), nvidia-container-runtime-hook, nvidia-container-toolkit (<= 1.10.0-1)\nReplaces: nvidia-container-runtime (<= 3.5.0-1), nvidia-container-runtime-hook\nDescription: NVIDIA Container Toolkit Base\n Provides tools such as the NVIDIA Container Runtime and NVIDIA Container Toolkit CLI to enable GPU support in containers.\n\nPackage: nvidia-container-toolkit-operator-extensions\nArchitecture: any\nDepends: ${misc:Depends}, nvidia-container-toolkit-base (= @VERSION@)\nDescription: NVIDIA Container Toolkit Operator Extensions\n Provides tools for using the NVIDIA Container Toolkit with the GPU Operator\n"
  },
  {
    "path": "packaging/debian/copyright",
    "content": "Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/\nUpstream-Name: nvidia-container-toolkit\nSource: https://github.com/NVIDIA/nvidia-container-toolkit\n\nFiles: *\nCopyright: 2017-2020 NVIDIA CORPORATION <cudatools@nvidia.com>\nLicense: Apache-2.0\n\nLicense: Apache-2.0\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n"
  },
  {
    "path": "packaging/debian/nvidia-container-toolkit-base.install",
    "content": "nvidia-container-runtime /usr/bin\nnvidia-ctk /usr/bin\nnvidia-cdi-hook /usr/bin\nnvidia-cdi-refresh.service /etc/systemd/system/\nnvidia-cdi-refresh.path /etc/systemd/system/\nnvidia-cdi-refresh.env /etc/nvidia-container-toolkit/\n"
  },
  {
    "path": "packaging/debian/nvidia-container-toolkit-base.postinst",
    "content": "#!/bin/sh\n\nset -e\n\ncase \"$1\" in\n    configure)\n        /usr/bin/nvidia-ctk --quiet config --config-file=/etc/nvidia-container-runtime/config.toml --in-place\n\n        # Enable nvidia-cdi-refresh services on both install and upgrade\n        # Support running and degraded systemd states\n        if command -v systemctl >/dev/null 2>&1; then\n          SYSTEMD_STATE=$(systemctl is-system-running 2>/dev/null || true)\n          case \"$SYSTEMD_STATE\" in\n            running|degraded)\n              systemctl daemon-reload || echo \"Warning: Failed to reload systemd daemon\" >&2\n              systemctl enable --now nvidia-cdi-refresh.path || echo \"Warning: Failed to enable nvidia-cdi-refresh.path\" >&2\n              systemctl enable --now nvidia-cdi-refresh.service || echo \"Warning: Failed to enable nvidia-cdi-refresh.service\" >&2\n              \n              # Trigger CDI spec regeneration immediately after install/upgrade\n              echo \"Regenerating NVIDIA CDI specification...\"\n              systemctl start nvidia-cdi-refresh.service || echo \"Warning: Failed to trigger CDI refresh\" >&2\n              ;;\n          esac\n        fi\n    ;;\n\n    abort-upgrade|abort-remove|abort-deconfigure)\n    ;;\n\n    *)\n        echo \"postinst called with unknown argument \\`$1'\" >&2\n        exit 1\n    ;;\nesac\n\n#DEBHELPER#\n\nexit 0\n"
  },
  {
    "path": "packaging/debian/nvidia-container-toolkit-operator-extensions.install",
    "content": "nvidia-container-runtime.cdi /usr/bin\nnvidia-container-runtime.legacy /usr/bin"
  },
  {
    "path": "packaging/debian/nvidia-container-toolkit.install",
    "content": "nvidia-container-runtime-hook /usr/bin\n"
  },
  {
    "path": "packaging/debian/nvidia-container-toolkit.lintian-overrides",
    "content": "new-package-should-close-itp-bug\nbinary-without-manpage\nstatically-linked-binary\ndescription-is-pkg-name\n"
  },
  {
    "path": "packaging/debian/nvidia-container-toolkit.postinst",
    "content": "#!/bin/sh\n\nset -e\n\nNVIDIA_CONTAINER_RUNTIME_HOOK=/usr/bin/nvidia-container-runtime-hook\nNVIDIA_CONTAINER_TOOLKIT=/usr/bin/nvidia-container-toolkit\n\ncase \"$1\" in\n    configure)\n        if [ -f \"${NVIDIA_CONTAINER_RUNTIME_HOOK}\" ]; then\n\t\tif [ ! -e \"${NVIDIA_CONTAINER_TOOLKIT}\" ]; then\n\t\t\tln -s ${NVIDIA_CONTAINER_RUNTIME_HOOK} ${NVIDIA_CONTAINER_TOOLKIT}\n\t\tfi\n        fi\n    ;;\n\n    abort-upgrade|abort-remove|abort-deconfigure)\n    ;;\n\n    *)\n        echo \"postinst called with unknown argument \\`$1'\" >&2\n        exit 1\n    ;;\nesac\n\n#DEBHELPER#\n\nexit 0\n"
  },
  {
    "path": "packaging/debian/nvidia-container-toolkit.postrm",
    "content": "#!/bin/sh\n\nset -e\n\nNVIDIA_CONTAINER_RUNTIME_HOOK=/usr/bin/nvidia-container-runtime-hook\nNVIDIA_CONTAINER_TOOLKIT=/usr/bin/nvidia-container-toolkit\n\ncase \"$1\" in\n    purge)\n        [ -L \"${NVIDIA_CONTAINER_TOOLKIT}\" ] && rm ${NVIDIA_CONTAINER_TOOLKIT}\n    ;;\n\n    upgrade|failed-upgrade|remove|abort-install|abort-upgrade|disappear)\n    ;;\n\n    *)\n        echo \"postrm called with unknown argument \\`$1'\" >&2\n        exit 1\n    ;;\nesac\n\n#DEBHELPER#\n\nexit 0\n"
  },
  {
    "path": "packaging/debian/prepare",
    "content": "#! /bin/bash\n\nset -e\n\nsed -i \"s;@SECTION@;${SECTION:+$SECTION/};g\" debian/control\nsed -i \"s;@VERSION@;${VERSION:+$VERSION};g\" debian/control\n\nif [ -n \"$DISTRIB\" ]; then\n    sed -i \"s;UNRELEASED;$DISTRIB;\" debian/changelog\nfi\n"
  },
  {
    "path": "packaging/debian/rules",
    "content": "#!/usr/bin/make -f\n# -*- makefile -*-\n\n#export DH_VERBOSE=1\n\n%:\n\tdh $@\n\noverride_dh_fixperms:\n\tdh_fixperms\n\tchmod 755 debian/$(shell dh_listpackages)/usr/bin/nvidia-container-runtime-hook || true\n\tchmod 755 debian/$(shell dh_listpackages)/usr/bin/nvidia-container-runtime || true\n\tchmod 755 debian/$(shell dh_listpackages)/usr/bin/nvidia-container-runtime.cdi || true\n\tchmod 755 debian/$(shell dh_listpackages)/usr/bin/nvidia-container-runtime.legacy || true\n\tchmod 755 debian/$(shell dh_listpackages)/usr/bin/nvidia-ctk || true\n\tchmod 755 debian/$(shell dh_listpackages)/usr/bin/nvidia-cdi-hook || true\n\tchmod 644 debian/$(shell dh_listpackages)/etc/systemd/system/nvidia-cdi-refresh.service || true\n\tchmod 644 debian/$(shell dh_listpackages)/etc/systemd/system/nvidia-cdi-refresh.path || true\n"
  },
  {
    "path": "packaging/rpm/SOURCES/LICENSE",
    "content": "\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "packaging/rpm/SPECS/nvidia-container-toolkit.spec",
    "content": "Name: nvidia-container-toolkit\nVersion: %{version}\nRelease: %{release}\nGroup: Development Tools\n\nVendor: NVIDIA CORPORATION\nPackager: NVIDIA CORPORATION <cudatools@nvidia.com>\n\nSummary: NVIDIA Container Toolkit\nURL: https://github.com/NVIDIA/nvidia-container-toolkit\nLicense: Apache-2.0\n\nSource0: nvidia-container-runtime-hook\nSource1: nvidia-ctk\nSource2: LICENSE\nSource3: nvidia-container-runtime\nSource4: nvidia-container-runtime.cdi\nSource5: nvidia-container-runtime.legacy\nSource6: nvidia-cdi-hook\nSource7: nvidia-cdi-refresh.service\nSource8: nvidia-cdi-refresh.path\nSource9: nvidia-cdi-refresh.env\n\nObsoletes: nvidia-container-runtime <= 3.5.0-1, nvidia-container-runtime-hook <= 1.4.0-2\nProvides: nvidia-container-runtime\nProvides: nvidia-container-runtime-hook\nRequires: libnvidia-container-tools == %{version}-%{release}, libnvidia-container-tools < 2.0.0\nRequires: nvidia-container-toolkit-base == %{version}-%{release}\n\n%description\nProvides tools and utilities to enable GPU support in containers.\n\n%prep\ncp %{SOURCE0} %{SOURCE1} %{SOURCE2} %{SOURCE3} %{SOURCE4} %{SOURCE5} %{SOURCE6} %{SOURCE7} %{SOURCE8} %{SOURCE9} .\n\n%install\nmkdir -p %{buildroot}%{_bindir}\nmkdir -p %{buildroot}%{_sysconfdir}/systemd/system/\nmkdir -p %{buildroot}%{_sysconfdir}/nvidia-container-toolkit\n\ninstall -m 755 -t %{buildroot}%{_bindir} nvidia-container-runtime-hook\ninstall -m 755 -t %{buildroot}%{_bindir} nvidia-container-runtime\ninstall -m 755 -t %{buildroot}%{_bindir} nvidia-container-runtime.cdi\ninstall -m 755 -t %{buildroot}%{_bindir} nvidia-container-runtime.legacy\ninstall -m 755 -t %{buildroot}%{_bindir} nvidia-ctk\ninstall -m 755 -t %{buildroot}%{_bindir} nvidia-cdi-hook\ninstall -m 644 -t %{buildroot}%{_sysconfdir}/systemd/system nvidia-cdi-refresh.service\ninstall -m 644 -t %{buildroot}%{_sysconfdir}/systemd/system nvidia-cdi-refresh.path\ninstall -m 644 -t %{buildroot}%{_sysconfdir}/nvidia-container-toolkit nvidia-cdi-refresh.env\n\n%post\nif [ $1 -gt 1 ]; then  # only on package upgrade\n  mkdir -p %{_localstatedir}/lib/rpm-state/nvidia-container-toolkit\n  cp -af %{_bindir}/nvidia-container-runtime-hook %{_localstatedir}/lib/rpm-state/nvidia-container-toolkit\nfi\n\n%posttrans\nif [ ! -e %{_bindir}/nvidia-container-runtime-hook ]; then\n  # repairing lost file nvidia-container-runtime-hook\n  cp -avf %{_localstatedir}/lib/rpm-state/nvidia-container-toolkit/nvidia-container-runtime-hook %{_bindir}\nfi\nrm -rf %{_localstatedir}/lib/rpm-state/nvidia-container-toolkit\nln -sf %{_bindir}/nvidia-container-runtime-hook %{_bindir}/nvidia-container-toolkit\n\n%postun\nif [ \"$1\" = 0 ]; then  # package is uninstalled, not upgraded\n  if [ -L %{_bindir}/nvidia-container-toolkit ]; then rm -f %{_bindir}/nvidia-container-toolkit; fi\nfi\n\n%files\n%license LICENSE\n%{_bindir}/nvidia-container-runtime-hook\n\n%changelog\n# As of 1.10.0-1 we generate the release information automatically\n* %{release_date} NVIDIA CORPORATION <cudatools@nvidia.com> %{version}-%{release}\n- See https://github.com/NVIDIA/nvidia-container-toolkit/blob/%{git_commit}/CHANGELOG.md\n- Bump libnvidia-container dependency to libnvidia-container-tools == %{version}-%{release}\n\n# The BASE package consists of the NVIDIA Container Runtime and the NVIDIA Container Toolkit CLI.\n# This allows the package to be installed on systems where no NVIDIA Container CLI is available.\n%package base\nSummary: NVIDIA Container Toolkit Base\nObsoletes: nvidia-container-runtime <= 3.5.0-1, nvidia-container-runtime-hook <= 1.4.0-2\nProvides: nvidia-container-runtime\n# Since this package allows certain components of the NVIDIA Container Toolkit to be installed separately\n# it conflicts with older versions of the nvidia-container-toolkit package that also provide these files.\nConflicts: nvidia-container-toolkit <= 1.10.0-1\n\n%description base\nProvides tools such as the NVIDIA Container Runtime and NVIDIA Container Toolkit CLI to enable GPU support in containers.\n\n%post base\n# Generate the default config; If this file already exists no changes are made.\n%{_bindir}/nvidia-ctk --quiet config --config-file=%{_sysconfdir}/nvidia-container-runtime/config.toml --in-place\n\n# Reload systemd unit cache and enable nvidia-cdi-refresh services on both install and upgrade\nif command -v systemctl >/dev/null 2>&1; then\n  SYSTEMD_STATE=$(systemctl is-system-running 2>/dev/null || true)\n  case \"$SYSTEMD_STATE\" in\n    running|degraded)\n      systemctl daemon-reload || echo \"Warning: Failed to reload systemd daemon\" >&2\n      systemctl enable --now nvidia-cdi-refresh.path || echo \"Warning: Failed to enable nvidia-cdi-refresh.path\" >&2\n      systemctl enable --now nvidia-cdi-refresh.service || echo \"Warning: Failed to enable nvidia-cdi-refresh.service\" >&2\n      \n      # Trigger CDI spec regeneration immediately after install/upgrade\n      echo \"Regenerating NVIDIA CDI specification...\"\n      systemctl start nvidia-cdi-refresh.service || echo \"Warning: Failed to trigger CDI refresh\" >&2\n      ;;\n  esac\nfi\n\n%files base\n%license LICENSE\n%{_bindir}/nvidia-container-runtime\n%{_bindir}/nvidia-ctk\n%{_bindir}/nvidia-cdi-hook\n%{_sysconfdir}/systemd/system/nvidia-cdi-refresh.service\n%{_sysconfdir}/systemd/system/nvidia-cdi-refresh.path\n%config(noreplace) %{_sysconfdir}/nvidia-container-toolkit/nvidia-cdi-refresh.env\n\n# The OPERATOR EXTENSIONS package consists of components that are required to enable GPU support in Kubernetes.\n# This package is not distributed as part of the NVIDIA Container Toolkit RPMs.\n%package operator-extensions\nSummary: NVIDIA Container Toolkit Operator Extensions\nRequires: nvidia-container-toolkit-base == %{version}-%{release}\n\n%description operator-extensions\nProvides tools for using the NVIDIA Container Toolkit with the GPU Operator\n\n%files operator-extensions\n%license LICENSE\n%{_bindir}/nvidia-container-runtime.cdi\n%{_bindir}/nvidia-container-runtime.legacy\n"
  },
  {
    "path": "pkg/config/engine/api.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage engine\n\nconst (\n\t// SaveToSTDOUT is used to write the specified config to stdout instead of\n\t// to a file on disk.\n\tSaveToSTDOUT = \"\"\n\t// UpdateActionSet is used as an argument to UpdateDefaultRuntime\n\t// when setting a runtime handler as the default in the config\n\tUpdateActionSet = \"set\"\n\t// UpdateActionUnset is used as an argument to UpdateDefaultRuntime\n\t// when unsetting a runtime handler as the default in the config\n\tUpdateActionUnset = \"unset\"\n)\n\n// Interface defines the API for a runtime config updater.\ntype Interface interface {\n\tAddRuntime(string, string, bool) error\n\tDefaultRuntime() string\n\tEnableCDI()\n\tGetRuntimeConfig(string) (RuntimeConfig, error)\n\tRemoveRuntime(string) error\n\tUpdateDefaultRuntime(string, string) error\n\tSave(string) (int64, error)\n\tString() string\n}\n\n// RuntimeConfig defines the interface to query container runtime handler configuration\ntype RuntimeConfig interface {\n\tGetBinaryPath() string\n}\n"
  },
  {
    "path": "pkg/config/engine/config.go",
    "content": "/**\n# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage engine\n\n// A Config represents a config for a container engine.\n// These include container, cri-o, and docker.\n// The config is logically split into a Source and Destination. This allows an\n// existing config to be updated (Source == Destination) or runtime-specific\n// settings to be written to a new config. The latter is useful when creation\n// NVIDIA-specific drop-in files for container engines that support this.\ntype Config struct {\n\tSource      RuntimeConfigSource\n\tDestination RuntimeConfigDestination\n}\n\n// A RuntimeConfigSource allows runtime-specific settings to be READ from a\n// config.\ntype RuntimeConfigSource interface {\n\tDefaultRuntime() string\n\tGetRuntimeConfig(string) (RuntimeConfig, error)\n\tGetDefaultRuntimeOptions() interface{}\n\tString() string\n}\n\n// A RuntimeConfigDestination allows a runtime with specific settings to be\n// WRITTEN to a config.\ntype RuntimeConfigDestination interface {\n\tAddRuntimeWithOptions(string, string, bool, interface{}) error\n\tEnableCDI()\n\tRemoveRuntime(string) error\n\tUpdateDefaultRuntime(string, string) error\n\tSave(string) (int64, error)\n\tString() string\n}\n\n// AddRuntime adds a runtime to the destination config and optionally sets it as the default.\n// The options to apply to the added runtime are read from the source config\n// default runtime.\nfunc (c *Config) AddRuntime(name string, path string, setAsDefault bool) error {\n\toptions := c.Source.GetDefaultRuntimeOptions()\n\treturn c.Destination.AddRuntimeWithOptions(name, path, setAsDefault, options)\n}\n\n// RemoveRuntime removes a runtime from the destination config.\nfunc (c *Config) RemoveRuntime(runtime string) error {\n\treturn c.Destination.RemoveRuntime(runtime)\n}\n\n// UpdateDefaultRuntime updates the default runtime setting in the destination config.\n// When action is 'set' the provided runtime name is set as the default.\n// When action is 'unset' we make sure the provided runtime name is not\n// the default.\nfunc (c *Config) UpdateDefaultRuntime(runtime string, action string) error {\n\treturn c.Destination.UpdateDefaultRuntime(runtime, action)\n}\n\n// EnableCDI enables CDI in the destination config.\nfunc (c *Config) EnableCDI() {\n\tc.Destination.EnableCDI()\n}\n\n// DefaultRuntime returns the default runtime for the source config.\nfunc (c *Config) DefaultRuntime() string {\n\treturn c.Source.DefaultRuntime()\n}\n\n// GetRuntimeConfig returns the source config for the specified runtime.\nfunc (c *Config) GetRuntimeConfig(runtime string) (RuntimeConfig, error) {\n\treturn c.Source.GetRuntimeConfig(runtime)\n}\n\n// Save saves the destination runtime to the specified path.\nfunc (c *Config) Save(path string) (int64, error) {\n\treturn c.Destination.Save(path)\n}\n\nfunc (c *Config) String() string {\n\treturn c.Destination.String()\n}\n"
  },
  {
    "path": "pkg/config/engine/containerd/config.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage containerd\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/config/engine\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/config/toml\"\n)\n\n// AddRuntime adds a runtime to the containerd config\nfunc (c *Config) AddRuntime(name string, path string, setAsDefault bool) error {\n\tif c == nil || c.Tree == nil {\n\t\treturn fmt.Errorf(\"config is nil\")\n\t}\n\tdefaultRuntimeOptions := c.GetDefaultRuntimeOptions()\n\treturn c.AddRuntimeWithOptions(name, path, setAsDefault, defaultRuntimeOptions)\n}\n\nfunc (c *Config) GetDefaultRuntimeOptions() interface{} {\n\truntimeNamesForConfig := engine.GetLowLevelRuntimes(c)\n\tfor _, r := range runtimeNamesForConfig {\n\t\toptions := c.GetSubtreeByPath([]string{\"plugins\", c.CRIRuntimePluginName, \"containerd\", \"runtimes\", r})\n\t\tif options != nil {\n\t\t\tc.Logger.Debugf(\"Using options from runtime %v: %v\", r, options)\n\t\t\treturn options.Copy()\n\t\t}\n\t}\n\tc.Logger.Warningf(\"Could not infer options from runtimes %v\", runtimeNamesForConfig)\n\toptions, _ := toml.TreeFromMap(map[string]interface{}{\n\t\t\"runtime_type\":                    c.RuntimeType,\n\t\t\"runtime_root\":                    \"\",\n\t\t\"runtime_engine\":                  \"\",\n\t\t\"privileged_without_host_devices\": false,\n\t})\n\treturn options\n}\n\nfunc (c *Config) AddRuntimeWithOptions(name string, path string, setAsDefault bool, options interface{}) error {\n\tconfig := *c.Tree\n\n\tconfig.Set(\"version\", c.Version)\n\n\tif options != nil {\n\t\tconfig.SetPath([]string{\"plugins\", c.CRIRuntimePluginName, \"containerd\", \"runtimes\", name}, options)\n\t}\n\tif len(c.ContainerAnnotations) > 0 {\n\t\tannotations, err := c.getStringArrayValue([]string{\"plugins\", c.CRIRuntimePluginName, \"containerd\", \"runtimes\", name, \"container_annotations\"})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tannotations = append(c.ContainerAnnotations, annotations...)\n\t\tconfig.SetPath([]string{\"plugins\", c.CRIRuntimePluginName, \"containerd\", \"runtimes\", name, \"container_annotations\"}, annotations)\n\t}\n\n\tconfig.SetPath([]string{\"plugins\", c.CRIRuntimePluginName, \"containerd\", \"runtimes\", name, \"options\", \"BinaryName\"}, path)\n\n\tif setAsDefault {\n\t\tconfig.SetPath([]string{\"plugins\", c.CRIRuntimePluginName, \"containerd\", \"default_runtime_name\"}, name)\n\t} else {\n\t\tdefaultRuntime, ok := config.GetPath([]string{\"plugins\", c.CRIRuntimePluginName, \"containerd\", \"default_runtime_name\"}).(string)\n\t\tif ok && defaultRuntime == name {\n\t\t\tconfig.DeletePath([]string{\"plugins\", c.CRIRuntimePluginName, \"containerd\", \"default_runtime_name\"})\n\t\t}\n\t}\n\t*c.Tree = config\n\treturn nil\n}\n\nfunc (c *Config) getStringArrayValue(path []string) ([]string, error) {\n\tif c == nil || c.Tree == nil {\n\t\treturn nil, nil\n\t}\n\n\tconfig := *c.Tree\n\tif !config.HasPath(path) {\n\t\treturn nil, nil\n\t}\n\tannotationsI, ok := config.GetPath(path).([]interface{})\n\tif !ok {\n\t\treturn nil, fmt.Errorf(\"invalid annotations: %v\", annotationsI)\n\t}\n\n\tvar annotations []string\n\tfor _, annotation := range annotationsI {\n\t\ta, ok := annotation.(string)\n\t\tif !ok {\n\t\t\treturn nil, fmt.Errorf(\"invalid annotation: %v\", annotation)\n\t\t}\n\t\tannotations = append(annotations, a)\n\t}\n\n\treturn annotations, nil\n}\n\n// DefaultRuntime returns the default runtime for the containerd config.\nfunc (c Config) DefaultRuntime() string {\n\tif runtime, ok := c.GetPath([]string{\"plugins\", c.CRIRuntimePluginName, \"containerd\", \"default_runtime_name\"}).(string); ok {\n\t\treturn runtime\n\t}\n\treturn \"\"\n}\n\n// EnableCDI sets the enable_cdi field in the Containerd config to true.\nfunc (c *Config) EnableCDI() {\n\tconfig := *c.Tree\n\tconfig.SetPath([]string{\"plugins\", c.CRIRuntimePluginName, \"enable_cdi\"}, true)\n\t*c.Tree = config\n}\n\n// RemoveRuntime removes a runtime from the containerd config\nfunc (c *Config) RemoveRuntime(name string) error {\n\tif c == nil || c.Tree == nil {\n\t\treturn nil\n\t}\n\n\tconfig := *c.Tree\n\n\tconfig.DeletePath([]string{\"plugins\", c.CRIRuntimePluginName, \"containerd\", \"runtimes\", name})\n\tif runtime, ok := config.GetPath([]string{\"plugins\", c.CRIRuntimePluginName, \"containerd\", \"default_runtime_name\"}).(string); ok {\n\t\tif runtime == name {\n\t\t\tconfig.DeletePath([]string{\"plugins\", c.CRIRuntimePluginName, \"containerd\", \"default_runtime_name\"})\n\t\t}\n\t}\n\n\truntimePath := []string{\"plugins\", c.CRIRuntimePluginName, \"containerd\", \"runtimes\", name}\n\tfor i := 0; i < len(runtimePath); i++ {\n\t\tif runtimes, ok := config.GetPath(runtimePath[:len(runtimePath)-i]).(*toml.Tree); ok {\n\t\t\tif len(runtimes.Keys()) == 0 {\n\t\t\t\tconfig.DeletePath(runtimePath[:len(runtimePath)-i])\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(config.Keys()) == 1 && config.Keys()[0] == \"version\" {\n\t\tconfig.Delete(\"version\")\n\t}\n\n\t*c.Tree = config\n\treturn nil\n}\n\n// UpdateDefaultRuntime updates the default runtime setting in the config.\n// When action is 'set' the provided runtime name is set as the default.\n// When action is 'unset' we make sure the provided runtime name is not\n// the default.\nfunc (c *Config) UpdateDefaultRuntime(name string, action string) error {\n\tif action != engine.UpdateActionSet && action != engine.UpdateActionUnset {\n\t\treturn fmt.Errorf(\"invalid action %q, valid actions are %q and %q\", action, engine.UpdateActionSet, engine.UpdateActionUnset)\n\t}\n\n\tif c == nil || c.Tree == nil {\n\t\tif action == engine.UpdateActionSet {\n\t\t\treturn fmt.Errorf(\"config toml is nil\")\n\t\t}\n\t\treturn nil\n\t}\n\n\tconfig := *c.Tree\n\tif action == engine.UpdateActionSet {\n\t\tconfig.SetPath([]string{\"plugins\", c.CRIRuntimePluginName, \"containerd\", \"default_runtime_name\"}, name)\n\t} else {\n\t\tdefaultRuntime, ok := config.GetPath([]string{\"plugins\", c.CRIRuntimePluginName, \"containerd\", \"default_runtime_name\"}).(string)\n\t\tif ok && defaultRuntime == name {\n\t\t\tconfig.DeletePath([]string{\"plugins\", c.CRIRuntimePluginName, \"containerd\", \"default_runtime_name\"})\n\t\t}\n\t}\n\n\t*c.Tree = config\n\treturn nil\n}\n"
  },
  {
    "path": "pkg/config/engine/containerd/config_drop_in.go",
    "content": "/**\n# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage containerd\n\nimport (\n\t\"fmt\"\n\t\"path/filepath\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/config/engine\"\n)\n\n// A ConfigWithDropIn represents a pair of containerd configs.\n// The first is the top-level config and the second is an in-memory drop-in config\n// that only contains modifications made to the config.\ntype ConfigWithDropIn struct {\n\tlogger         logger.Interface\n\ttopLevelConfig *topLevelConfig\n\tengine.Interface\n}\n\nvar _ engine.Interface = (*ConfigWithDropIn)(nil)\n\n// A topLevelConfig stores the original on-disk top-level config.\n// The path to the config is also stored to allow it to be modified if required.\ntype topLevelConfig struct {\n\tlogger                 logger.Interface\n\tpath                   string\n\tcontainerToHostPathMap map[string]string\n\tconfig                 *Config\n}\n\nfunc NewConfigWithDropIn(logger logger.Interface, topLevelConfigPath string, containerToHostPathMap map[string]string, tlConfig *Config, dropInConfig engine.Interface) *ConfigWithDropIn {\n\treturn &ConfigWithDropIn{\n\t\tlogger: logger,\n\t\ttopLevelConfig: &topLevelConfig{\n\t\t\tlogger:                 logger,\n\t\t\tpath:                   topLevelConfigPath,\n\t\t\tcontainerToHostPathMap: containerToHostPathMap,\n\t\t\tconfig:                 tlConfig,\n\t\t},\n\t\tInterface: dropInConfig,\n\t}\n}\n\n// Save the drop-in config to the specified path.\n// The top-level config is optionally updated to include the required imports\n// to allow the drop-in-file to be created.\nfunc (c *ConfigWithDropIn) Save(dropInPath string) (int64, error) {\n\tif dropInPath == engine.SaveToSTDOUT {\n\t\tc.logger.Infof(\"Drop-in config:\")\n\t}\n\tbytesWritten, err := c.Interface.Save(dropInPath)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\tswitch {\n\tcase bytesWritten == 0:\n\t\t// If the drop-in config is empty, we try to simplify the config.\n\t\tc.topLevelConfig.simplify(dropInPath)\n\tcase bytesWritten > 0:\n\t\t// If the drop-in config has contents, we need to ensure that the\n\t\t// drop-in path is included in the imports.\n\t\tc.topLevelConfig.ensureImports(dropInPath)\n\t}\n\n\t// TODO: Only do this if we've actually modified the config.\n\tif _, err := c.topLevelConfig.Save(dropInPath); err != nil {\n\t\treturn 0, fmt.Errorf(\"failed to save top-level config: %w\", err)\n\t}\n\n\treturn bytesWritten, nil\n}\n\n// RemoveRuntime removes the runtime from both configs.\nfunc (c *ConfigWithDropIn) RemoveRuntime(name string) error {\n\tif err := c.topLevelConfig.RemoveRuntime(name); err != nil {\n\t\treturn err\n\t}\n\treturn c.Interface.RemoveRuntime(name)\n}\n\n// UpdateDefaultRuntime updates the default runtime setting in the drop-in config.\n// When action is 'set' the provided runtime name is set as the default.\n// When action is 'unset' we make sure the provided runtime name is not\n// the default.\nfunc (c *ConfigWithDropIn) UpdateDefaultRuntime(name string, action string) error {\n\treturn c.Interface.UpdateDefaultRuntime(name, action)\n}\n\n// flush saves the top-level config to its path.\n// If the config is empty, the file will be deleted.\nfunc (c *topLevelConfig) Save(dropInPath string) (int64, error) {\n\tsaveToPath := c.path\n\tif dropInPath == engine.SaveToSTDOUT {\n\t\tsaveToPath = engine.SaveToSTDOUT\n\t\tc.logger.Infof(\"Top-level config:\")\n\t}\n\treturn c.config.Save(saveToPath)\n}\n\nfunc (c *topLevelConfig) simplify(dropInFilename string) {\n\tc.removeImports(dropInFilename)\n\tc.removeVersion()\n}\n\n// removeImports removes the imports specified in the file if the only entry\n// corresponds to the path for the drop-in-file and the only other field in the\n// file is the version field.\nfunc (c *topLevelConfig) removeImports(dropInFilename string) {\n\tif len(c.config.Keys()) != 2 {\n\t\treturn\n\t}\n\tif c.config.Get(\"version\") == nil || c.config.Get(\"imports\") == nil {\n\t\treturn\n\t}\n\n\tcurrentImports, _ := c.config.getStringArrayValue([]string{\"imports\"})\n\tif len(currentImports) != 1 {\n\t\treturn\n\t}\n\n\trequiredImport := c.importPattern(dropInFilename)\n\tif currentImports[0] != requiredImport {\n\t\treturn\n\t}\n\tc.config.Delete(\"imports\")\n}\n\nfunc (c *topLevelConfig) importPattern(dropInFilename string) string {\n\t// TODO: If we make output to STDOUT a property of the config itself, then\n\t// we can actually generate the correct import statement.\n\tif dropInFilename == engine.SaveToSTDOUT {\n\t\treturn \"/etc/containerd/conf.d/*.toml\"\n\t}\n\treturn c.asHostPath(filepath.Dir(dropInFilename)) + \"/*.toml\"\n}\n\nfunc (c *topLevelConfig) asHostPath(path string) string {\n\tif c.containerToHostPathMap == nil {\n\t\treturn path\n\t}\n\tif hostPath, ok := c.containerToHostPathMap[path]; ok {\n\t\treturn hostPath\n\t}\n\treturn path\n}\n\n// removeVersion removes the version if it is the ONLY field in the file.\nfunc (c *topLevelConfig) removeVersion() {\n\tif len(c.config.Keys()) > 1 {\n\t\treturn\n\t}\n\tif c.config.Get(\"version\") == nil {\n\t\treturn\n\t}\n\tc.config.Delete(\"version\")\n}\n\nfunc (c *topLevelConfig) getCurrentImports() []string {\n\trawImports := c.config.Get(\"imports\")\n\tif rawImports == nil {\n\t\treturn nil\n\t}\n\n\tif importsStringSlice, ok := rawImports.([]string); ok {\n\t\treturn importsStringSlice\n\t}\n\n\timportsAnySlice, ok := rawImports.([]any)\n\tif !ok {\n\t\treturn nil\n\t}\n\tvar importsStringSlice []string\n\tfor _, importAny := range importsAnySlice {\n\t\timportString, ok := importAny.(string)\n\t\tif !ok {\n\t\t\tcontinue\n\t\t}\n\t\timportsStringSlice = append(importsStringSlice, importString)\n\t}\n\n\treturn importsStringSlice\n}\n\nfunc (c *topLevelConfig) ensureImports(dropInFilename string) {\n\tconfig := c.config.Tree\n\tcurrentImports := c.getCurrentImports()\n\n\trequiredImport := c.importPattern(dropInFilename)\n\tfor _, currentImport := range currentImports {\n\t\t// If the requiredImport is already present, then we need not update the config.\n\t\tif currentImport == requiredImport {\n\t\t\treturn\n\t\t}\n\t}\n\n\tcurrentImports = append(currentImports, requiredImport)\n\n\t// If the config is empty we need to set the version too.\n\tif len(config.Keys()) == 0 {\n\t\tconfig.Set(\"version\", c.config.Version)\n\t}\n\tconfig.Set(\"imports\", currentImports)\n}\n\n// RemoveRuntime removes the specified runtime from the top-level config.\nfunc (c *topLevelConfig) RemoveRuntime(name string) error {\n\treturn c.config.RemoveRuntime(name)\n}\n"
  },
  {
    "path": "pkg/config/engine/containerd/config_drop_in_test.go",
    "content": "/**\n# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage containerd\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/config/toml\"\n)\n\nfunc TestEnsureImports(t *testing.T) {\n\ttestCases := []struct {\n\t\tdescription     string\n\t\tconfigMap       map[string]any\n\t\tpath            string\n\t\texpectedImports []string\n\t}{\n\t\t{\n\t\t\tdescription:     \"empty\",\n\t\t\tpath:            \"/another/path/file.toml\",\n\t\t\texpectedImports: []string{\"/another/path/*.toml\"},\n\t\t},\n\t\t{\n\t\t\tdescription: \"existing imports as string slice\",\n\t\t\tconfigMap: map[string]any{\n\t\t\t\t\"imports\": []string{\"/foo/bar/*.toml\"},\n\t\t\t},\n\t\t\tpath:            \"/another/path/file.toml\",\n\t\t\texpectedImports: []string{\"/foo/bar/*.toml\", \"/another/path/*.toml\"},\n\t\t},\n\t\t{\n\t\t\tdescription: \"existing imports as any slice\",\n\t\t\tconfigMap: map[string]any{\n\t\t\t\t\"imports\": []any{\"/foo/bar/*.toml\"},\n\t\t\t},\n\t\t\tpath:            \"/another/path/file.toml\",\n\t\t\texpectedImports: []string{\"/foo/bar/*.toml\", \"/another/path/*.toml\"},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\tcut := topLevelConfig{\n\t\t\t\tconfig: &Config{\n\t\t\t\t\tTree: func() *toml.Tree {\n\t\t\t\t\t\tt, _ := toml.FromMap(tc.configMap).Load()\n\t\t\t\t\t\treturn t\n\t\t\t\t\t}(),\n\t\t\t\t},\n\t\t\t}\n\n\t\t\tcut.ensureImports(\"/another/path/file.toml\")\n\t\t\trequire.EqualValues(t, tc.expectedImports, cut.config.Get(\"imports\"))\n\t\t})\n\t}\n\n}\n"
  },
  {
    "path": "pkg/config/engine/containerd/config_test.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage containerd\n\nimport (\n\t\"testing\"\n\n\ttestlog \"github.com/sirupsen/logrus/hooks/test\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/config/toml\"\n)\n\nfunc TestAddRuntime(t *testing.T) {\n\tlogger, _ := testlog.NewNullLogger()\n\ttestCases := []struct {\n\t\tdescription    string\n\t\tconfig         string\n\t\tsetAsDefault   bool\n\t\texpectedConfig string\n\t\texpectedError  error\n\t}{\n\t\t{\n\t\t\tdescription: \"empty config not default runtime\",\n\t\t\texpectedConfig: `\n\t\t\tversion = 2\n\t\t\t[plugins]\n\t\t\t[plugins.\"io.containerd.grpc.v1.cri\"]\n\t\t\t\t[plugins.\"io.containerd.grpc.v1.cri\".containerd]\n\t\t\t\t[plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes]\n\t\t\t\t\t[plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.test]\n\t\t\t\t\tprivileged_without_host_devices = false\n\t\t\t\t\truntime_engine = \"\"\n\t\t\t\t\truntime_root = \"\"\n\t\t\t\t\truntime_type = \"io.containerd.runc.v2\"\n\t\t\t\t\t[plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.test.options]\n\t\t\t\t\t\tBinaryName = \"/usr/bin/test\"\n\t\t\t`,\n\t\t\texpectedError: nil,\n\t\t},\n\t\t{\n\t\t\tdescription:  \"empty config, set as default runtime\",\n\t\t\tsetAsDefault: true,\n\t\t\texpectedConfig: `\n\t\t\tversion = 2\n\t\t\t[plugins]\n\t\t\t[plugins.\"io.containerd.grpc.v1.cri\"]\n\t\t\t\t[plugins.\"io.containerd.grpc.v1.cri\".containerd]\n\t\t\t\tdefault_runtime_name = \"test\"\n\t\t\t\t[plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes]\n\t\t\t\t\t[plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.test]\n\t\t\t\t\tprivileged_without_host_devices = false\n\t\t\t\t\truntime_engine = \"\"\n\t\t\t\t\truntime_root = \"\"\n\t\t\t\t\truntime_type = \"io.containerd.runc.v2\"\n\t\t\t\t\t[plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.test.options]\n\t\t\t\t\t\tBinaryName = \"/usr/bin/test\"\n\t\t\t`,\n\t\t\texpectedError: nil,\n\t\t},\n\t\t{\n\t\t\tdescription: \"options from runc are imported\",\n\t\t\tconfig: `\n\t\t\tversion = 2\n\t\t\t[plugins]\n\t\t\t[plugins.\"io.containerd.grpc.v1.cri\"]\n\t\t\t\t[plugins.\"io.containerd.grpc.v1.cri\".containerd]\n\t\t\t\t[plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes]\n\t\t\t\t\t[plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc]\n\t\t\t\t\tprivileged_without_host_devices = true\n\t\t\t\t\truntime_engine = \"engine\"\n\t\t\t\t\truntime_root = \"root\"\n\t\t\t\t\truntime_type = \"type\"\n\t\t\t\t\t[plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc.options]\n\t\t\t\t\t\tBinaryName = \"/usr/bin/runc\"\n\t\t\t\t\t\tSystemdCgroup = true\n\t\t\t`,\n\t\t\texpectedConfig: `\n\t\t\tversion = 2\n\t\t\t[plugins]\n\t\t\t[plugins.\"io.containerd.grpc.v1.cri\"]\n\t\t\t\t[plugins.\"io.containerd.grpc.v1.cri\".containerd]\n                    [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes]\n                    [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc]\n\t\t\t\t\tprivileged_without_host_devices = true\n\t\t\t\t\truntime_engine = \"engine\"\n\t\t\t\t\truntime_root = \"root\"\n\t\t\t\t\truntime_type = \"type\"\n\t\t\t\t\t[plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc.options]\n\t\t\t\t\t\tBinaryName = \"/usr/bin/runc\"\n\t\t\t\t\t\tSystemdCgroup = true\n\t\t\t\t\t[plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.test]\n\t\t\t\t\tprivileged_without_host_devices = true\n\t\t\t\t\truntime_engine = \"engine\"\n\t\t\t\t\truntime_root = \"root\"\n\t\t\t\t\truntime_type = \"type\"\n\t\t\t\t\t[plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.test.options]\n\t\t\t\t\t\tBinaryName = \"/usr/bin/test\"\n\t\t\t\t\t\tSystemdCgroup = true\n\t\t\t\t`,\n\t\t},\n\t\t{\n\t\t\tdescription: \"options from default runtime are imported\",\n\t\t\tconfig: `\n\t\t\tversion = 2\n\t\t\t[plugins]\n\t\t\t[plugins.\"io.containerd.grpc.v1.cri\"]\n\t\t\t\t[plugins.\"io.containerd.grpc.v1.cri\".containerd]\n\t\t\t\tdefault_runtime_name = \"default\"\n\t\t\t\t[plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes]\n\t\t\t\t\t[plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.default]\n\t\t\t\t\tprivileged_without_host_devices = true\n\t\t\t\t\truntime_engine = \"engine\"\n\t\t\t\t\truntime_root = \"root\"\n\t\t\t\t\truntime_type = \"type\"\n\t\t\t\t\t[plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.default.options]\n\t\t\t\t\t\tBinaryName = \"/usr/bin/default\"\n\t\t\t\t\t\tSystemdCgroup = true\n\t\t\t`,\n\t\t\texpectedConfig: `\n\t\t\tversion = 2\n\t\t\t[plugins]\n\t\t\t[plugins.\"io.containerd.grpc.v1.cri\"]\n\t\t\t\t[plugins.\"io.containerd.grpc.v1.cri\".containerd]\n\t\t\t\tdefault_runtime_name = \"default\"\n\t\t\t\t[plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes]\n\t\t\t\t\t[plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.default]\n\t\t\t\t\tprivileged_without_host_devices = true\n\t\t\t\t\truntime_engine = \"engine\"\n\t\t\t\t\truntime_root = \"root\"\n\t\t\t\t\truntime_type = \"type\"\n\t\t\t\t\t[plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.default.options]\n\t\t\t\t\t\tBinaryName = \"/usr/bin/default\"\n\t\t\t\t\t\tSystemdCgroup = true\n\t\t\t\t\t[plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.test]\n\t\t\t\t\tprivileged_without_host_devices = true\n\t\t\t\t\truntime_engine = \"engine\"\n\t\t\t\t\truntime_root = \"root\"\n\t\t\t\t\truntime_type = \"type\"\n\t\t\t\t\t[plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.test.options]\n\t\t\t\t\t\tBinaryName = \"/usr/bin/test\"\n\t\t\t\t\t\tSystemdCgroup = true\n\t\t\t\t`,\n\t\t},\n\t\t{\n\t\t\tdescription: \"options from the default runtime take precedence over runc\",\n\t\t\tconfig: `\n\t\t\tversion = 2\n\t\t\t[plugins]\n\t\t\t[plugins.\"io.containerd.grpc.v1.cri\"]\n\t\t\t\t[plugins.\"io.containerd.grpc.v1.cri\".containerd]\n\t\t\t\tdefault_runtime_name = \"default\"\n\t\t\t\t[plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes]\n\t\t\t\t\t[plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc]\n\t\t\t\t\tprivileged_without_host_devices = true\n\t\t\t\t\truntime_engine = \"engine\"\n\t\t\t\t\truntime_root = \"root\"\n\t\t\t\t\truntime_type = \"type\"\n\t\t\t\t\t[plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc.options]\n\t\t\t\t\t\tBinaryName = \"/usr/bin/runc\"\n\t\t\t\t\t\tSystemdCgroup = true\n\t\t\t\t\t[plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.default]\n\t\t\t\t\tprivileged_without_host_devices = false\n\t\t\t\t\truntime_engine = \"defaultengine\"\n\t\t\t\t\truntime_root = \"defaultroot\"\n\t\t\t\t\truntime_type = \"defaulttype\"\n\t\t\t\t\t[plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.default.options]\n\t\t\t\t\t\tBinaryName = \"/usr/bin/default\"\n\t\t\t\t\t\tSystemdCgroup = false\n\t\t\t`,\n\t\t\texpectedConfig: `\n\t\t\tversion = 2\n\t\t\t[plugins]\n\t\t\t[plugins.\"io.containerd.grpc.v1.cri\"]\n\t\t\t\t[plugins.\"io.containerd.grpc.v1.cri\".containerd]\n\t\t\t\tdefault_runtime_name = \"default\"\n\t\t\t\t[plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes]\n\t\t\t\t\t[plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc]\n\t\t\t\t\tprivileged_without_host_devices = true\n\t\t\t\t\truntime_engine = \"engine\"\n\t\t\t\t\truntime_root = \"root\"\n\t\t\t\t\truntime_type = \"type\"\n\t\t\t\t\t[plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc.options]\n\t\t\t\t\t\tBinaryName = \"/usr/bin/runc\"\n\t\t\t\t\t\tSystemdCgroup = true\n\t\t\t\t\t[plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.default]\n\t\t\t\t\tprivileged_without_host_devices = false\n\t\t\t\t\truntime_engine = \"defaultengine\"\n\t\t\t\t\truntime_root = \"defaultroot\"\n\t\t\t\t\truntime_type = \"defaulttype\"\n\t\t\t\t\t[plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.default.options]\n\t\t\t\t\t\tBinaryName = \"/usr/bin/default\"\n\t\t\t\t\t\tSystemdCgroup = false\n\t\t\t\t\t[plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.test]\n\t\t\t\t\tprivileged_without_host_devices = false\n\t\t\t\t\truntime_engine = \"defaultengine\"\n\t\t\t\t\truntime_root = \"defaultroot\"\n\t\t\t\t\truntime_type = \"defaulttype\"\n\t\t\t\t\t[plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.test.options]\n\t\t\t\t\t\tBinaryName = \"/usr/bin/test\"\n\t\t\t\t\t\tSystemdCgroup = false\n\t\t\t\t`,\n\t\t},\n\t\t{\n\t\t\tdescription: \"empty v3 spec is supported\",\n\t\t\tconfig: `\n\t\t\tversion = 3\n\t\t\t`,\n\t\t\texpectedConfig: `\n\t\t\tversion = 3\n\t\t\t[plugins]\n\t\t\t[plugins.\"io.containerd.cri.v1.runtime\"]\n\t\t\t\t[plugins.\"io.containerd.cri.v1.runtime\".containerd]\n\t\t\t\t[plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes]\n\t\t\t\t\t[plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.test]\n\t\t\t\t\tprivileged_without_host_devices = false\n\t\t\t\t\truntime_engine = \"\"\n\t\t\t\t\truntime_root = \"\"\n\t\t\t\t\truntime_type = \"io.containerd.runc.v2\"\n\t\t\t\t\t[plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.test.options]\n\t\t\t\t\t\tBinaryName = \"/usr/bin/test\"\n\t\t\t`,\n\t\t\texpectedError: nil,\n\t\t},\n\t\t{\n\t\t\tdescription: \"v3 spec is supported\",\n\t\t\tconfig: `\n\t\t\tversion = 3\n\t\t\t[plugins]\n\t\t\t[plugins.\"io.containerd.cri.v1.runtime\"]\n\t\t\t\t[plugins.\"io.containerd.cri.v1.runtime\".containerd]\n\t\t\t\t[plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes]\n\t\t\t\t\t[plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.runc]\n\t\t\t\t\tprivileged_without_host_devices = true\n\t\t\t\t\truntime_engine = \"engine\"\n\t\t\t\t\truntime_root = \"root\"\n\t\t\t\t\truntime_type = \"type\"\n\t\t\t\t\t[plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.runc.options]\n\t\t\t\t\t\tBinaryName = \"/usr/bin/runc\"\n\t\t\t\t\t\tSystemdCgroup = true\n\t\t\t`,\n\t\t\texpectedConfig: `\n\t\t\tversion = 3\n\t\t\t[plugins]\n\t\t\t[plugins.\"io.containerd.cri.v1.runtime\"]\n\t\t\t\t[plugins.\"io.containerd.cri.v1.runtime\".containerd]\n\t\t\t\t[plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes]\n\t\t\t\t\t[plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.runc]\n\t\t\t\t\tprivileged_without_host_devices = true\n\t\t\t\t\truntime_engine = \"engine\"\n\t\t\t\t\truntime_root = \"root\"\n\t\t\t\t\truntime_type = \"type\"\n\t\t\t\t\t[plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.runc.options]\n\t\t\t\t\t\tBinaryName = \"/usr/bin/runc\"\n\t\t\t\t\t\tSystemdCgroup = true\n\t\t\t\t\t[plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.test]\n\t\t\t\t\tprivileged_without_host_devices = true\n\t\t\t\t\truntime_engine = \"engine\"\n\t\t\t\t\truntime_root = \"root\"\n\t\t\t\t\truntime_type = \"type\"\n\t\t\t\t\t[plugins.\"io.containerd.cri.v1.runtime\".containerd.runtimes.test.options]\n\t\t\t\t\t\tBinaryName = \"/usr/bin/test\"\n\t\t\t\t\t\tSystemdCgroup = true\n\t\t\t\t`,\n\t\t},\n\t\t{\n\t\t\tdescription:  \"runtime already exists in config, default runtime\",\n\t\t\tsetAsDefault: true,\n\t\t\tconfig: `\n\t\t\tversion = 2\n\t\t\t[plugins]\n\t\t\t[plugins.\"io.containerd.grpc.v1.cri\"]\n\t\t\t\t[plugins.\"io.containerd.grpc.v1.cri\".containerd]\n\t\t\t\tdefault_runtime_name = \"test\"\n\t\t\t\t[plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes]\n\t\t\t\t\t[plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.test]\n\t\t\t\t\tprivileged_without_host_devices = false\n\t\t\t\t\truntime_engine = \"\"\n\t\t\t\t\truntime_root = \"\"\n\t\t\t\t\truntime_type = \"io.containerd.runc.v2\"\n\t\t\t\t\t[plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.test.options]\n\t\t\t\t\t\tBinaryName = \"/usr/bin/test\"\n\t\t\t`,\n\t\t\texpectedConfig: `\n\t\t\tversion = 2\n\t\t\t[plugins]\n\t\t\t[plugins.\"io.containerd.grpc.v1.cri\"]\n\t\t\t\t[plugins.\"io.containerd.grpc.v1.cri\".containerd]\n\t\t\t\tdefault_runtime_name = \"test\"\n\t\t\t\t[plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes]\n\t\t\t\t\t[plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.test]\n\t\t\t\t\tprivileged_without_host_devices = false\n\t\t\t\t\truntime_engine = \"\"\n\t\t\t\t\truntime_root = \"\"\n\t\t\t\t\truntime_type = \"io.containerd.runc.v2\"\n\t\t\t\t\t[plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.test.options]\n\t\t\t\t\t\tBinaryName = \"/usr/bin/test\"\n\t\t\t`,\n\t\t\texpectedError: nil,\n\t\t},\n\t\t{\n\t\t\tdescription:  \"runtime already exists in config, not default runtime\",\n\t\t\tsetAsDefault: false,\n\t\t\tconfig: `\n\t\t\tversion = 2\n\t\t\t[plugins]\n\t\t\t[plugins.\"io.containerd.grpc.v1.cri\"]\n\t\t\t\t[plugins.\"io.containerd.grpc.v1.cri\".containerd]\n\t\t\t\tdefault_runtime_name = \"test\"\n\t\t\t\t[plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes]\n\t\t\t\t\t[plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.test]\n\t\t\t\t\tprivileged_without_host_devices = false\n\t\t\t\t\truntime_engine = \"\"\n\t\t\t\t\truntime_root = \"\"\n\t\t\t\t\truntime_type = \"io.containerd.runc.v2\"\n\t\t\t\t\t[plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.test.options]\n\t\t\t\t\t\tBinaryName = \"/usr/bin/test\"\n\t\t\t`,\n\t\t\texpectedConfig: `\n\t\t\tversion = 2\n\t\t\t[plugins]\n\t\t\t[plugins.\"io.containerd.grpc.v1.cri\"]\n\t\t\t\t[plugins.\"io.containerd.grpc.v1.cri\".containerd]\n\t\t\t\t[plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes]\n\t\t\t\t\t[plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.test]\n\t\t\t\t\tprivileged_without_host_devices = false\n\t\t\t\t\truntime_engine = \"\"\n\t\t\t\t\truntime_root = \"\"\n\t\t\t\t\truntime_type = \"io.containerd.runc.v2\"\n\t\t\t\t\t[plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.test.options]\n\t\t\t\t\t\tBinaryName = \"/usr/bin/test\"\n\t\t\t`,\n\t\t\texpectedError: nil,\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\texpectedConfig, err := toml.Load(tc.expectedConfig)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tc, err := New(\n\t\t\t\tWithLogger(logger),\n\t\t\t\tWithConfigSource(toml.FromString(tc.config)),\n\t\t\t)\n\t\t\trequire.NoError(t, err)\n\n\t\t\terr = c.AddRuntime(\"test\", \"/usr/bin/test\", tc.setAsDefault)\n\t\t\trequire.NoError(t, err)\n\n\t\t\trequire.EqualValues(t, expectedConfig.String(), c.String())\n\t\t})\n\t}\n}\n\nfunc TestGetRuntimeConfig(t *testing.T) {\n\tlogger, _ := testlog.NewNullLogger()\n\tconfig := `\n\tversion = 2\n\t[plugins]\n\t[plugins.\"io.containerd.grpc.v1.cri\"]\n    [plugins.\"io.containerd.grpc.v1.cri\".containerd]\n      default_runtime_name = \"nvidia\"\n      disable_snapshot_annotations = true\n      discard_unpacked_layers = false\n      ignore_blockio_not_enabled_errors = false\n      ignore_rdt_not_enabled_errors = false\n      no_pivot = false\n      snapshotter = \"overlayfs\"\n\n      [plugins.\"io.containerd.grpc.v1.cri\".containerd.default_runtime]\n        base_runtime_spec = \"\"\n        cni_conf_dir = \"\"\n        cni_max_conf_num = 0\n        container_annotations = []\n        pod_annotations = []\n        privileged_without_host_devices = false\n        privileged_without_host_devices_all_devices_allowed = false\n        runtime_engine = \"\"\n        runtime_path = \"\"\n        runtime_root = \"\"\n        runtime_type = \"\"\n        sandbox_mode = \"\"\n        snapshotter = \"\"\n\n      [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes]\n\n        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc]\n          base_runtime_spec = \"\"\n          cni_conf_dir = \"\"\n          cni_max_conf_num = 0\n          container_annotations = []\n          pod_annotations = []\n          privileged_without_host_devices = false\n          privileged_without_host_devices_all_devices_allowed = false\n          runtime_engine = \"\"\n          runtime_path = \"\"\n          runtime_root = \"\"\n          runtime_type = \"io.containerd.runc.v2\"\n          sandbox_mode = \"podsandbox\"\n          snapshotter = \"\"\n\n          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc.options]\n            BinaryName = \"/usr/bin/runc\"\n            CriuImagePath = \"\"\n            CriuPath = \"\"\n            CriuWorkPath = \"\"\n            IoGid = 0\n            IoUid = 0\n            NoNewKeyring = false\n            NoPivotRoot = false\n            Root = \"\"\n            ShimCgroup = \"\"\n            SystemdCgroup = false\n`\n\ttestCases := []struct {\n\t\tdescription   string\n\t\truntime       string\n\t\texpected      string\n\t\texpectedError error\n\t}{\n\t\t{\n\t\t\tdescription:   \"valid runtime config, existing runtime\",\n\t\t\truntime:       \"runc\",\n\t\t\texpected:      \"/usr/bin/runc\",\n\t\t\texpectedError: nil,\n\t\t},\n\t\t{\n\t\t\tdescription:   \"valid runtime config, non-existing runtime\",\n\t\t\truntime:       \"some-other-runtime\",\n\t\t\texpected:      \"\",\n\t\t\texpectedError: nil,\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\n\t\t\tc, err := New(\n\t\t\t\tWithLogger(logger),\n\t\t\t\tWithConfigSource(toml.FromString(config)),\n\t\t\t)\n\t\t\trequire.NoError(t, err)\n\n\t\t\trc, err := c.GetRuntimeConfig(tc.runtime)\n\t\t\trequire.Equal(t, tc.expectedError, err)\n\t\t\trequire.Equal(t, tc.expected, rc.GetBinaryPath())\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "pkg/config/engine/containerd/config_v1.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage containerd\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/config/engine\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/config/toml\"\n)\n\n// ConfigV1 represents a version 1 containerd config\ntype ConfigV1 Config\n\nvar _ engine.Interface = (*ConfigV1)(nil)\n\n// AddRuntime adds a runtime to the containerd config\nfunc (c *ConfigV1) AddRuntime(name string, path string, setAsDefault bool) error {\n\tif c == nil || c.Tree == nil {\n\t\treturn fmt.Errorf(\"config is nil\")\n\t}\n\tdefaultRuntimeOptions := c.GetDefaultRuntimeOptions()\n\treturn c.AddRuntimeWithOptions(name, path, setAsDefault, defaultRuntimeOptions)\n}\n\nfunc (c *ConfigV1) GetDefaultRuntimeOptions() interface{} {\n\treturn (*Config)(c).GetDefaultRuntimeOptions()\n}\n\nfunc (c *ConfigV1) AddRuntimeWithOptions(name string, path string, setAsDefault bool, options interface{}) error {\n\tif err := (*Config)(c).AddRuntimeWithOptions(name, path, setAsDefault && !c.UseLegacyConfig, options); err != nil {\n\t\treturn err\n\t}\n\tconfig := *c.Tree\n\tconfig.SetPath([]string{\"plugins\", \"cri\", \"containerd\", \"runtimes\", name, \"options\", \"Runtime\"}, path)\n\t*c.Tree = config\n\n\tif !c.UseLegacyConfig || !setAsDefault {\n\t\treturn nil\n\t}\n\n\tconfig = *c.Tree\n\t// Note: This is deprecated in containerd 1.4.0 and will be removed in 1.5.0\n\tif config.GetPath([]string{\"plugins\", \"cri\", \"containerd\", \"default_runtime\"}) == nil {\n\t\tconfig.SetPath([]string{\"plugins\", \"cri\", \"containerd\", \"default_runtime\", \"runtime_type\"}, c.RuntimeType)\n\t\tconfig.SetPath([]string{\"plugins\", \"cri\", \"containerd\", \"default_runtime\", \"runtime_root\"}, \"\")\n\t\tconfig.SetPath([]string{\"plugins\", \"cri\", \"containerd\", \"default_runtime\", \"runtime_engine\"}, \"\")\n\t\tconfig.SetPath([]string{\"plugins\", \"cri\", \"containerd\", \"default_runtime\", \"privileged_without_host_devices\"}, false)\n\t}\n\tconfig.SetPath([]string{\"plugins\", \"cri\", \"containerd\", \"default_runtime\", \"options\", \"BinaryName\"}, path)\n\tconfig.SetPath([]string{\"plugins\", \"cri\", \"containerd\", \"default_runtime\", \"options\", \"Runtime\"}, path)\n\t*c.Tree = config\n\treturn nil\n}\n\n// DefaultRuntime returns the default runtime for the containerd config.\nfunc (c ConfigV1) DefaultRuntime() string {\n\tif runtime, ok := c.GetPath([]string{\"plugins\", \"cri\", \"containerd\", \"default_runtime_name\"}).(string); ok {\n\t\treturn runtime\n\t}\n\treturn \"\"\n}\n\n// RemoveRuntime removes a runtime from the containerd config.\nfunc (c *ConfigV1) RemoveRuntime(name string) error {\n\tif c == nil || c.Tree == nil {\n\t\treturn nil\n\t}\n\n\tconfig := *c.Tree\n\n\t// If the specified runtime was set as the default runtime we need to remove the default runtime too.\n\truntimePath, ok := config.GetPath([]string{\"plugins\", \"cri\", \"containerd\", \"runtimes\", name, \"options\", \"BinaryName\"}).(string)\n\tif !ok || runtimePath == \"\" {\n\t\truntimePath, _ = config.GetPath([]string{\"plugins\", \"cri\", \"containerd\", \"runtimes\", name, \"options\", \"Runtime\"}).(string)\n\t}\n\tdefaultRuntimePath, ok := config.GetPath([]string{\"plugins\", \"cri\", \"containerd\", \"default_runtime\", \"options\", \"BinaryName\"}).(string)\n\tif !ok || defaultRuntimePath == \"\" {\n\t\tdefaultRuntimePath, _ = config.GetPath([]string{\"plugins\", \"cri\", \"containerd\", \"default_runtime\", \"options\", \"Runtime\"}).(string)\n\t}\n\tif runtimePath != \"\" && defaultRuntimePath != \"\" && runtimePath == defaultRuntimePath {\n\t\tconfig.DeletePath([]string{\"plugins\", \"cri\", \"containerd\", \"default_runtime\"})\n\t}\n\n\tconfig.DeletePath([]string{\"plugins\", \"cri\", \"containerd\", \"runtimes\", name})\n\tif runtime, ok := config.GetPath([]string{\"plugins\", \"cri\", \"containerd\", \"default_runtime_name\"}).(string); ok {\n\t\tif runtime == name {\n\t\t\tconfig.DeletePath([]string{\"plugins\", \"cri\", \"containerd\", \"default_runtime_name\"})\n\t\t}\n\t}\n\n\truntimeConfigPath := []string{\"plugins\", \"cri\", \"containerd\", \"runtimes\", name}\n\tfor i := 0; i < len(runtimeConfigPath); i++ {\n\t\tif runtimes, ok := config.GetPath(runtimeConfigPath[:len(runtimeConfigPath)-i]).(*toml.Tree); ok {\n\t\t\tif len(runtimes.Keys()) == 0 {\n\t\t\t\tconfig.DeletePath(runtimeConfigPath[:len(runtimeConfigPath)-i])\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(config.Keys()) == 1 && config.Keys()[0] == \"version\" {\n\t\tconfig.Delete(\"version\")\n\t}\n\n\t*c.Tree = config\n\treturn nil\n}\n\nfunc (c *ConfigV1) UpdateDefaultRuntime(name string, action string) error {\n\treturn fmt.Errorf(\"this method is not implemented\")\n}\n\n// Save writes the config to a file\nfunc (c ConfigV1) Save(path string) (int64, error) {\n\treturn (Config)(c).Save(path)\n}\n\nfunc (c *ConfigV1) GetRuntimeConfig(name string) (engine.RuntimeConfig, error) {\n\tif c == nil || c.Tree == nil {\n\t\treturn nil, fmt.Errorf(\"config is nil\")\n\t}\n\truntimeData := c.GetSubtreeByPath([]string{\"plugins\", \"cri\", \"containerd\", \"runtimes\", name})\n\n\treturn &containerdCfgRuntime{\n\t\ttree: runtimeData,\n\t}, nil\n}\n\nfunc (c *ConfigV1) EnableCDI() {\n\tconfig := *c.Tree\n\tconfig.SetPath([]string{\"plugins\", \"cri\", \"containerd\", \"enable_cdi\"}, true)\n\t*c.Tree = config\n}\n"
  },
  {
    "path": "pkg/config/engine/containerd/config_v1_test.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage containerd\n\nimport (\n\t\"testing\"\n\n\ttestlog \"github.com/sirupsen/logrus/hooks/test\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/config/toml\"\n)\n\nfunc TestAddRuntimeV1(t *testing.T) {\n\tlogger, _ := testlog.NewNullLogger()\n\ttestCases := []struct {\n\t\tdescription    string\n\t\tconfig         string\n\t\tsetAsDefault   bool\n\t\texpectedConfig string\n\t\texpectedError  error\n\t}{\n\t\t{\n\t\t\tdescription: \"empty config not default runtime\",\n\t\t\texpectedConfig: `\n\t\t\tversion = 1\n\t\t\t[plugins]\n\t\t\t[plugins.cri]\n\t\t\t\t[plugins.cri.containerd]\n\t\t\t\t[plugins.cri.containerd.runtimes]\n\t\t\t\t\t[plugins.cri.containerd.runtimes.test]\n\t\t\t\t\tprivileged_without_host_devices = false\n\t\t\t\t\truntime_engine = \"\"\n\t\t\t\t\truntime_root = \"\"\n\t\t\t\t\truntime_type = \"\"\n\t\t\t\t\t[plugins.cri.containerd.runtimes.test.options]\n\t\t\t\t\t\tBinaryName = \"/usr/bin/test\"\n\t\t\t\t\t\tRuntime = \"/usr/bin/test\"\n\t\t\t`,\n\t\t\texpectedError: nil,\n\t\t},\n\t\t{\n\t\t\tdescription: \"options from runc are imported\",\n\t\t\tconfig: `\n\t\t\t[plugins]\n\t\t\t[plugins.cri]\n\t\t\t\t[plugins.cri.containerd]\n\t\t\t\t[plugins.cri.containerd.runtimes]\n\t\t\t\t\t[plugins.cri.containerd.runtimes.runc]\n\t\t\t\t\tprivileged_without_host_devices = true\n\t\t\t\t\truntime_engine = \"engine\"\n\t\t\t\t\truntime_root = \"root\"\n\t\t\t\t\truntime_type = \"type\"\n\t\t\t\t\t[plugins.cri.containerd.runtimes.runc.options]\n\t\t\t\t\t\tBinaryName = \"/usr/bin/runc\"\n\t\t\t\t\t\tSystemdCgroup = true\n\t\t\t`,\n\t\t\texpectedConfig: `\n\t\t\tversion = 1\n\t\t\t[plugins]\n\t\t\t[plugins.cri]\n\t\t\t\t[plugins.cri.containerd]\n\t\t\t\t[plugins.cri.containerd.runtimes]\n\t\t\t\t\t[plugins.cri.containerd.runtimes.runc]\n\t\t\t\t\tprivileged_without_host_devices = true\n\t\t\t\t\truntime_engine = \"engine\"\n\t\t\t\t\truntime_root = \"root\"\n\t\t\t\t\truntime_type = \"type\"\n\t\t\t\t\t[plugins.cri.containerd.runtimes.runc.options]\n\t\t\t\t\t\tBinaryName = \"/usr/bin/runc\"\n\t\t\t\t\t\tSystemdCgroup = true\n\t\t\t\t\t[plugins.cri.containerd.runtimes.test]\n\t\t\t\t\tprivileged_without_host_devices = true\n\t\t\t\t\truntime_engine = \"engine\"\n\t\t\t\t\truntime_root = \"root\"\n\t\t\t\t\truntime_type = \"type\"\n\t\t\t\t\t[plugins.cri.containerd.runtimes.test.options]\n\t\t\t\t\t\tBinaryName = \"/usr/bin/test\"\n\t\t\t\t\t\tRuntime = \"/usr/bin/test\"\n\t\t\t\t\t\tSystemdCgroup = true\n\t\t\t\t`,\n\t\t},\n\t\t{\n\t\t\tdescription: \"options from default runtime are imported\",\n\t\t\tconfig: `\n\t\t\t[plugins]\n\t\t\t[plugins.cri]\n\t\t\t\t[plugins.cri.containerd]\n\t\t\t\tdefault_runtime_name = \"default\"\n\t\t\t\t[plugins.cri.containerd.runtimes]\n\t\t\t\t\t[plugins.cri.containerd.runtimes.default]\n\t\t\t\t\tprivileged_without_host_devices = true\n\t\t\t\t\truntime_engine = \"engine\"\n\t\t\t\t\truntime_root = \"root\"\n\t\t\t\t\truntime_type = \"type\"\n\t\t\t\t\t[plugins.cri.containerd.runtimes.default.options]\n\t\t\t\t\t\tBinaryName = \"/usr/bin/default\"\n\t\t\t\t\t\tSystemdCgroup = true\n\t\t\t`,\n\t\t\texpectedConfig: `\n\t\t\tversion = 1\n\t\t\t[plugins]\n\t\t\t[plugins.cri]\n\t\t\t\t[plugins.cri.containerd]\n\t\t\t\tdefault_runtime_name = \"default\"\n\t\t\t\t[plugins.cri.containerd.runtimes]\n\t\t\t\t\t[plugins.cri.containerd.runtimes.default]\n\t\t\t\t\tprivileged_without_host_devices = true\n\t\t\t\t\truntime_engine = \"engine\"\n\t\t\t\t\truntime_root = \"root\"\n\t\t\t\t\truntime_type = \"type\"\n\t\t\t\t\t[plugins.cri.containerd.runtimes.default.options]\n\t\t\t\t\t\tBinaryName = \"/usr/bin/default\"\n\t\t\t\t\t\tSystemdCgroup = true\n\t\t\t\t\t[plugins.cri.containerd.runtimes.test]\n\t\t\t\t\tprivileged_without_host_devices = true\n\t\t\t\t\truntime_engine = \"engine\"\n\t\t\t\t\truntime_root = \"root\"\n\t\t\t\t\truntime_type = \"type\"\n\t\t\t\t\t[plugins.cri.containerd.runtimes.test.options]\n\t\t\t\t\t\tBinaryName = \"/usr/bin/test\"\n\t\t\t\t\t\tRuntime = \"/usr/bin/test\"\n\t\t\t\t\t\tSystemdCgroup = true\n\t\t\t\t`,\n\t\t},\n\t\t{\n\t\t\tdescription: \"options from the default runtime take precedence over runc\",\n\t\t\tconfig: `\n\t\t\t[plugins]\n\t\t\t[plugins.cri]\n\t\t\t\t[plugins.cri.containerd]\n\t\t\t\tdefault_runtime_name = \"default\"\n\t\t\t\t[plugins.cri.containerd.runtimes]\n\t\t\t\t\t[plugins.cri.containerd.runtimes.runc]\n\t\t\t\t\tprivileged_without_host_devices = true\n\t\t\t\t\truntime_engine = \"engine\"\n\t\t\t\t\truntime_root = \"root\"\n\t\t\t\t\truntime_type = \"type\"\n\t\t\t\t\t[plugins.cri.containerd.runtimes.runc.options]\n\t\t\t\t\t\tBinaryName = \"/usr/bin/runc\"\n\t\t\t\t\t\tSystemdCgroup = true\n\t\t\t\t\t[plugins.cri.containerd.runtimes.default]\n\t\t\t\t\tprivileged_without_host_devices = false\n\t\t\t\t\truntime_engine = \"defaultengine\"\n\t\t\t\t\truntime_root = \"defaultroot\"\n\t\t\t\t\truntime_type = \"defaulttype\"\n\t\t\t\t\t[plugins.cri.containerd.runtimes.default.options]\n\t\t\t\t\t\tBinaryName = \"/usr/bin/default\"\n\t\t\t\t\t\tSystemdCgroup = false\n\t\t\t`,\n\t\t\texpectedConfig: `\n\t\t\tversion = 1\n\t\t\t[plugins]\n\t\t\t[plugins.cri]\n\t\t\t\t[plugins.cri.containerd]\n\t\t\t\tdefault_runtime_name = \"default\"\n\t\t\t\t[plugins.cri.containerd.runtimes]\n\t\t\t\t\t[plugins.cri.containerd.runtimes.runc]\n\t\t\t\t\tprivileged_without_host_devices = true\n\t\t\t\t\truntime_engine = \"engine\"\n\t\t\t\t\truntime_root = \"root\"\n\t\t\t\t\truntime_type = \"type\"\n\t\t\t\t\t[plugins.cri.containerd.runtimes.runc.options]\n\t\t\t\t\t\tBinaryName = \"/usr/bin/runc\"\n\t\t\t\t\t\tSystemdCgroup = true\n\t\t\t\t\t[plugins.cri.containerd.runtimes.default]\n\t\t\t\t\tprivileged_without_host_devices = false\n\t\t\t\t\truntime_engine = \"defaultengine\"\n\t\t\t\t\truntime_root = \"defaultroot\"\n\t\t\t\t\truntime_type = \"defaulttype\"\n\t\t\t\t\t[plugins.cri.containerd.runtimes.default.options]\n\t\t\t\t\t\tBinaryName = \"/usr/bin/default\"\n\t\t\t\t\t\tSystemdCgroup = false\n\t\t\t\t\t[plugins.cri.containerd.runtimes.test]\n\t\t\t\t\tprivileged_without_host_devices = false\n\t\t\t\t\truntime_engine = \"defaultengine\"\n\t\t\t\t\truntime_root = \"defaultroot\"\n\t\t\t\t\truntime_type = \"defaulttype\"\n\t\t\t\t\t[plugins.cri.containerd.runtimes.test.options]\n\t\t\t\t\t\tBinaryName = \"/usr/bin/test\"\n\t\t\t\t\t\tRuntime = \"/usr/bin/test\"\n\t\t\t\t\t\tSystemdCgroup = false\n\t\t\t\t`,\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\texpectedConfig, err := toml.Load(tc.expectedConfig)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tc, err := New(\n\t\t\t\tWithLogger(logger),\n\t\t\t\tWithConfigSource(toml.FromString(tc.config)),\n\t\t\t\tWithUseLegacyConfig(true),\n\t\t\t\tWithRuntimeType(\"\"),\n\t\t\t)\n\t\t\trequire.NoError(t, err)\n\n\t\t\terr = c.AddRuntime(\"test\", \"/usr/bin/test\", tc.setAsDefault)\n\t\t\trequire.NoError(t, err)\n\n\t\t\trequire.EqualValues(t, expectedConfig.String(), c.String())\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "pkg/config/engine/containerd/containerd.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage containerd\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/config/engine\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/config/toml\"\n)\n\nconst (\n\tdefaultConfigVersion = 2\n\tdefaultRuntimeType   = \"io.containerd.runc.v2\"\n)\n\n// Config represents the containerd config\ntype Config struct {\n\t*toml.Tree\n\tconfigOptions\n}\n\ntype configOptions struct {\n\tVersion              int64\n\tLogger               logger.Interface\n\tRuntimeType          string\n\tContainerAnnotations []string\n\t// UseLegacyConfig indicates whether a config file pre v1.3 should be generated.\n\t// For version 1 config prior to containerd v1.4 the default runtime was\n\t// specified in a containerd.runtimes.default_runtime section.\n\t// This was deprecated in v1.4 in favour of containerd.default_runtime_name.\n\t// Support for this section has been removed in v2.0.\n\tUseLegacyConfig bool\n\t// CRIRuntimePluginName represents the fully qualified name of the containerd plugin\n\t// for the CRI runtime service. The name of this plugin was changed in v3 of the\n\t// containerd configuration file.\n\tCRIRuntimePluginName string\n}\n\nvar _ engine.Interface = (*Config)(nil)\n\ntype containerdCfgRuntime struct {\n\ttree *toml.Tree\n}\n\nvar _ engine.RuntimeConfig = (*containerdCfgRuntime)(nil)\n\n// GetBinaryPath retrieves the path to the low-level runtime binary for a runtime.\n// If no path is available, the empty string is returned.\nfunc (c *containerdCfgRuntime) GetBinaryPath() string {\n\tif c == nil || c.tree == nil {\n\t\treturn \"\"\n\t}\n\n\tbinPath, _ := c.tree.GetPath([]string{\"options\", \"BinaryName\"}).(string)\n\treturn binPath\n}\n\n// New creates a containerd config with the specified options\nfunc New(opts ...Option) (engine.Interface, error) {\n\tb := &builder{\n\t\tconfigVersion: defaultConfigVersion,\n\t\truntimeType:   defaultRuntimeType,\n\t}\n\tfor _, opt := range opts {\n\t\topt(b)\n\t}\n\tif b.logger == nil {\n\t\tb.logger = logger.New()\n\t}\n\tif b.configSource == nil {\n\t\tb.configSource = toml.FromFile(b.topLevelConfigPath)\n\t}\n\n\tsourceConfigTree, err := b.configSource.Load()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to load config: %v\", err)\n\t}\n\n\tconfigVersion, err := b.parseVersion(sourceConfigTree)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to parse config version: %w\", err)\n\t}\n\tb.logger.Infof(\"Using config version %v\", configVersion)\n\n\tcriRuntimePluginName, err := b.criRuntimePluginName(configVersion)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to get CRI runtime plugin name: %w\", err)\n\t}\n\tb.logger.Infof(\"Using CRI runtime plugin name %q\", criRuntimePluginName)\n\n\tsourceConfigOptions := configOptions{\n\t\tVersion:              configVersion,\n\t\tCRIRuntimePluginName: criRuntimePluginName,\n\t\tLogger:               b.logger,\n\t\tRuntimeType:          b.runtimeType,\n\t\tUseLegacyConfig:      b.useLegacyConfig,\n\t\tContainerAnnotations: b.containerAnnotations,\n\t}\n\tsourceConfig := &Config{\n\t\tTree:          sourceConfigTree,\n\t\tconfigOptions: sourceConfigOptions,\n\t}\n\tswitch configVersion {\n\tcase 1:\n\t\t// Version 1 configs do not support imports / drop-in files.\n\t\t// We return the sourceConfig as is.\n\t\treturn (*ConfigV1)(sourceConfig), nil\n\tdefault:\n\t\t// For other versions, we create a DropInConfig with a reference to the\n\t\t// top-level config if present.\n\t\ttopLevelConfig := &Config{\n\t\t\tTree: func() *toml.Tree {\n\t\t\t\tt, _ := toml.FromFile(b.topLevelConfigPath).Load()\n\t\t\t\treturn t\n\t\t\t}(),\n\t\t\tconfigOptions: sourceConfigOptions,\n\t\t}\n\t\tdropInConfig := &engine.Config{\n\t\t\tSource: sourceConfig,\n\t\t\t// The destinationConfig is a minimal config with the same options\n\t\t\t// as the source config. The starting content of the destinationConfig\n\t\t\t// is the entire plugins.\"io.containerd.grpc.v1.cri\" section of the source\n\t\t\t// config. This is needed due to how containerd merges configuration from\n\t\t\t// multiple files. In particular, plugins are overridden by key and the\n\t\t\t// content is not merged. This issue is fixed starting in containerd 2.1\n\t\t\t// Reference: https://github.com/containerd/containerd/issues/5837\n\t\t\tDestination: &Config{\n\t\t\t\tTree:          getBaseDropInConfigTree(sourceConfig),\n\t\t\t\tconfigOptions: sourceConfigOptions,\n\t\t\t},\n\t\t}\n\n\t\tcfg := NewConfigWithDropIn(b.logger, b.topLevelConfigPath, b.containerToHostPathMap, topLevelConfig, dropInConfig)\n\t\treturn cfg, nil\n\t}\n}\n\n// parseVersion returns the version of the config\nfunc (b *builder) parseVersion(c *toml.Tree) (int64, error) {\n\tif c == nil || len(c.Keys()) == 0 {\n\t\t// No config exists, or the config file is empty.\n\t\tif b.useLegacyConfig {\n\t\t\t// If a legacy config is explicitly requested, we default to a v1 config.\n\t\t\treturn 1, nil\n\t\t}\n\t\t// Use the requested version.\n\t\treturn int64(b.configVersion), nil\n\t}\n\n\tswitch v := c.Get(\"version\").(type) {\n\tcase nil:\n\t\treturn 1, nil\n\tcase int64:\n\t\treturn v, nil\n\tdefault:\n\t\treturn -1, fmt.Errorf(\"unsupported type for version field: %v\", v)\n\t}\n}\n\nfunc (b *builder) criRuntimePluginName(configVersion int64) (string, error) {\n\tswitch configVersion {\n\tcase 1:\n\t\treturn \"cri\", nil\n\tcase 2:\n\t\treturn \"io.containerd.grpc.v1.cri\", nil\n\tdefault:\n\t\treturn \"io.containerd.cri.v1.runtime\", nil\n\t}\n}\n\nfunc (c *Config) GetRuntimeConfig(name string) (engine.RuntimeConfig, error) {\n\tif c == nil || c.Tree == nil {\n\t\treturn nil, fmt.Errorf(\"config is nil\")\n\t}\n\truntimeData := c.GetSubtreeByPath([]string{\"plugins\", c.CRIRuntimePluginName, \"containerd\", \"runtimes\", name})\n\treturn &containerdCfgRuntime{\n\t\ttree: runtimeData,\n\t}, nil\n}\n\n// CommandLineSource returns the CLI-based containerd config loader\nfunc CommandLineSource(hostRoot string, executablePath string) toml.Loader {\n\tif executablePath == \"\" {\n\t\texecutablePath = \"containerd\"\n\t}\n\treturn toml.FromCommandLine(chrootIfRequired(hostRoot, executablePath, \"config\", \"dump\")...)\n}\n\nfunc chrootIfRequired(hostRoot string, commandLine ...string) []string {\n\tif hostRoot == \"\" || hostRoot == \"/\" {\n\t\treturn commandLine\n\t}\n\n\treturn append([]string{\"chroot\", hostRoot}, commandLine...)\n}\n\n// getBaseDropInConfigTree returns the base config to use for the drop-in config file.\n// For older containerd versions (e.g. 1.7) the plugins section of multiple\n// configs are not fully merged, but merged by key instead. This means that we\n// need to duplicate the entire plugin-specific config in the drop in file so as\n// to not override settings applied in the base config.\nfunc getBaseDropInConfigTree(sourceConfig *Config) *toml.Tree {\n\tbaseDropInConfigTree := toml.NewEmpty()\n\tcriPlugin := sourceConfig.GetSubtreeByPath([]string{\"plugins\", sourceConfig.CRIRuntimePluginName})\n\tif criPlugin != nil {\n\t\tbaseDropInConfigTree.SetPath([]string{\"plugins\", sourceConfig.CRIRuntimePluginName}, criPlugin)\n\t}\n\treturn baseDropInConfigTree\n}\n"
  },
  {
    "path": "pkg/config/engine/containerd/option.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage containerd\n\nimport (\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/config/toml\"\n)\n\ntype builder struct {\n\tlogger               logger.Interface\n\tconfigSource         toml.Loader\n\tconfigVersion        int\n\tuseLegacyConfig      bool\n\ttopLevelConfigPath   string\n\truntimeType          string\n\tcontainerAnnotations []string\n\n\tcontainerToHostPathMap map[string]string\n}\n\n// Option defines a function that can be used to configure the config builder\ntype Option func(*builder)\n\n// WithContainerPathAsHostPath maps a given container path to a host path.\nfunc WithContainerPathAsHostPath(containerPath string, hostPath string) Option {\n\treturn func(b *builder) {\n\t\tif containerPath == \"\" || hostPath == \"\" || containerPath == hostPath {\n\t\t\treturn\n\t\t}\n\t\tif b.containerToHostPathMap == nil {\n\t\t\tb.containerToHostPathMap = make(map[string]string)\n\t\t}\n\t\tb.containerToHostPathMap[containerPath] = hostPath\n\t}\n}\n\n// WithLogger sets the logger for the config builder\nfunc WithLogger(logger logger.Interface) Option {\n\treturn func(b *builder) {\n\t\tb.logger = logger\n\t}\n}\n\n// WithTopLevelConfigPath sets the path for the top-level containerd config.\nfunc WithTopLevelConfigPath(path string) Option {\n\treturn func(b *builder) {\n\t\tb.topLevelConfigPath = path\n\t}\n}\n\n// WithConfigSource sets the source for the config.\nfunc WithConfigSource(configSource toml.Loader) Option {\n\treturn func(b *builder) {\n\t\tb.configSource = configSource\n\t}\n}\n\n// WithRuntimeType sets the runtime type for the config builder\nfunc WithRuntimeType(runtimeType string) Option {\n\treturn func(b *builder) {\n\t\tb.runtimeType = runtimeType\n\t}\n}\n\n// WithUseLegacyConfig sets the useLegacyConfig flag for the config builder.\nfunc WithUseLegacyConfig(useLegacyConfig bool) Option {\n\treturn func(b *builder) {\n\t\tb.useLegacyConfig = useLegacyConfig\n\t}\n}\n\n// WithConfigVersion sets the config version for the config builder\nfunc WithConfigVersion(configVersion int) Option {\n\treturn func(b *builder) {\n\t\tb.configVersion = configVersion\n\t}\n}\n\n// WithContainerAnnotations sets the container annotations for the config builder\nfunc WithContainerAnnotations(containerAnnotations ...string) Option {\n\treturn func(b *builder) {\n\t\tb.containerAnnotations = containerAnnotations\n\t}\n}\n"
  },
  {
    "path": "pkg/config/engine/crio/crio.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage crio\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/config/engine\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/config/toml\"\n)\n\n// Config represents the cri-o config\ntype Config struct {\n\t*toml.Tree\n\tLogger logger.Interface\n}\n\ntype crioRuntime struct {\n\ttree *toml.Tree\n}\n\nvar _ engine.RuntimeConfig = (*crioRuntime)(nil)\n\n// GetBinaryPath retrieves the path to the low-level runtime binary for a runtime.\n// If no path is available, the empty string is returned.\nfunc (c *crioRuntime) GetBinaryPath() string {\n\tif c.tree != nil {\n\t\tif binaryPath, ok := c.tree.GetPath([]string{\"runtime_path\"}).(string); ok {\n\t\t\treturn binaryPath\n\t\t}\n\t}\n\treturn \"\"\n}\n\nvar _ engine.Interface = (*Config)(nil)\n\n// New creates a cri-o config with the specified options\nfunc New(opts ...Option) (engine.Interface, error) {\n\tb := &builder{}\n\tfor _, opt := range opts {\n\t\topt(b)\n\t}\n\tif b.logger == nil {\n\t\tb.logger = logger.New()\n\t}\n\tif b.configSource == nil {\n\t\tb.configSource = toml.FromFile(b.topLevelConfigPath)\n\t}\n\n\tsourceConfig, err := b.configSource.Load()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar destinationConfig *toml.Tree\n\tif b.configDestination != nil {\n\t\tdestinationConfig, err = b.configDestination.Load()\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t} else {\n\t\tdestinationConfig = toml.NewEmpty()\n\t}\n\n\tcfg := &engine.Config{\n\t\tSource: &Config{\n\t\t\tTree:   sourceConfig,\n\t\t\tLogger: b.logger,\n\t\t},\n\t\tDestination: &Config{\n\t\t\tTree:   destinationConfig,\n\t\t\tLogger: b.logger,\n\t\t},\n\t}\n\n\treturn cfg, nil\n}\n\n// AddRuntime adds a new runtime to the crio config.\n// The runtime options are extracted from the default runtime and the applicable\n// settings are overridden.\nfunc (c *Config) AddRuntime(name string, path string, setAsDefault bool) error {\n\tif c == nil || c.Tree == nil {\n\t\treturn fmt.Errorf(\"config is nil\")\n\t}\n\tdefaultRuntimeOptions := c.GetDefaultRuntimeOptions()\n\treturn c.AddRuntimeWithOptions(name, path, setAsDefault, defaultRuntimeOptions)\n}\n\nfunc (c *Config) GetDefaultRuntimeOptions() interface{} {\n\truntimeNamesForConfig := engine.GetLowLevelRuntimes(c)\n\tfor _, r := range runtimeNamesForConfig {\n\t\toptions := c.GetSubtreeByPath([]string{\"crio\", \"runtime\", \"runtimes\", r})\n\t\tif options != nil {\n\t\t\tc.Logger.Debugf(\"Using options from runtime %v: %v\", r, options)\n\t\t\treturn options.Copy()\n\t\t}\n\t}\n\tc.Logger.Warningf(\"Could not infer options from runtimes %v\", runtimeNamesForConfig)\n\treturn nil\n}\n\nfunc (c *Config) AddRuntimeWithOptions(name string, path string, setAsDefault bool, options interface{}) error {\n\tconfig := *c.Tree\n\n\tif options != nil {\n\t\tconfig.SetPath([]string{\"crio\", \"runtime\", \"runtimes\", name}, options)\n\t}\n\tconfig.SetPath([]string{\"crio\", \"runtime\", \"runtimes\", name, \"runtime_path\"}, path)\n\tconfig.SetPath([]string{\"crio\", \"runtime\", \"runtimes\", name, \"runtime_type\"}, \"oci\")\n\n\tif setAsDefault {\n\t\tconfig.SetPath([]string{\"crio\", \"runtime\", \"default_runtime\"}, name)\n\t} else {\n\t\tif defaultRuntime, ok := config.GetPath([]string{\"crio\", \"runtime\", \"default_runtime\"}).(string); ok {\n\t\t\tif defaultRuntime == name {\n\t\t\t\tconfig.DeletePath([]string{\"crio\", \"runtime\", \"default_runtime\"})\n\t\t\t}\n\t\t}\n\t}\n\t*c.Tree = config\n\treturn nil\n}\n\n// DefaultRuntime returns the default runtime for the cri-o config\nfunc (c *Config) DefaultRuntime() string {\n\tif c == nil || c.Tree == nil {\n\t\treturn \"\"\n\t}\n\tif runtime, ok := c.GetPath([]string{\"crio\", \"runtime\", \"default_runtime\"}).(string); ok {\n\t\treturn runtime\n\t}\n\treturn \"\"\n}\n\n// RemoveRuntime removes a runtime from the cri-o config\nfunc (c *Config) RemoveRuntime(name string) error {\n\tif c == nil {\n\t\treturn nil\n\t}\n\n\tconfig := *c.Tree\n\tif runtime, ok := config.GetPath([]string{\"crio\", \"runtime\", \"default_runtime\"}).(string); ok {\n\t\tif runtime == name {\n\t\t\tconfig.DeletePath([]string{\"crio\", \"runtime\", \"default_runtime\"})\n\t\t}\n\t}\n\n\truntimeClassPath := []string{\"crio\", \"runtime\", \"runtimes\", name}\n\tconfig.DeletePath(runtimeClassPath)\n\tfor i := 0; i < len(runtimeClassPath); i++ {\n\t\tremainingPath := runtimeClassPath[:len(runtimeClassPath)-i]\n\t\tif entry, ok := config.GetPath(remainingPath).(*toml.Tree); ok {\n\t\t\tif len(entry.Keys()) != 0 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tconfig.DeletePath(remainingPath)\n\t\t}\n\t}\n\n\t*c.Tree = config\n\treturn nil\n}\n\n// UpdateDefaultRuntime updates the default runtime setting in the config.\n// When action is 'set' the provided runtime name is set as the default.\n// When action is 'unset' we make sure the provided runtime name is not\n// the default.\nfunc (c *Config) UpdateDefaultRuntime(name string, action string) error {\n\tif action != engine.UpdateActionSet && action != engine.UpdateActionUnset {\n\t\treturn fmt.Errorf(\"invalid action %q, valid actions are %q and %q\", action, engine.UpdateActionSet, engine.UpdateActionUnset)\n\t}\n\n\tif c == nil || c.Tree == nil {\n\t\tif action == engine.UpdateActionSet {\n\t\t\treturn fmt.Errorf(\"config toml is nil\")\n\t\t}\n\t\treturn nil\n\t}\n\n\tconfig := *c.Tree\n\n\tif action == engine.UpdateActionSet {\n\t\tconfig.SetPath([]string{\"crio\", \"runtime\", \"default_runtime\"}, name)\n\t} else {\n\t\tif runtime, ok := config.GetPath([]string{\"crio\", \"runtime\", \"default_runtime\"}).(string); ok {\n\t\t\tif runtime == name {\n\t\t\t\tconfig.DeletePath([]string{\"crio\", \"runtime\", \"default_runtime\"})\n\t\t\t}\n\t\t}\n\t}\n\n\t*c.Tree = config\n\treturn nil\n}\n\nfunc (c *Config) GetRuntimeConfig(name string) (engine.RuntimeConfig, error) {\n\tif c == nil || c.Tree == nil {\n\t\treturn nil, fmt.Errorf(\"config is nil\")\n\t}\n\truntimeData := c.GetSubtreeByPath([]string{\"crio\", \"runtime\", \"runtimes\", name})\n\treturn &crioRuntime{\n\t\ttree: runtimeData,\n\t}, nil\n}\n\n// EnableCDI is a no-op for CRI-O since it always enabled where supported.\nfunc (c *Config) EnableCDI() {}\n\n// CommandLineSource returns the CLI-based crio config loader\nfunc CommandLineSource(hostRoot string, executablePath string) toml.Loader {\n\tif executablePath == \"\" {\n\t\texecutablePath = \"crio\"\n\t}\n\treturn toml.LoadFirst(\n\t\ttoml.FromCommandLine(chrootIfRequired(hostRoot, executablePath, \"status\", \"config\")...),\n\t\ttoml.FromCommandLine(chrootIfRequired(hostRoot, \"crio-status\", \"config\")...),\n\t)\n}\n\nfunc chrootIfRequired(hostRoot string, commandLine ...string) []string {\n\tif hostRoot == \"\" || hostRoot == \"/\" {\n\t\treturn commandLine\n\t}\n\n\treturn append([]string{\"chroot\", hostRoot}, commandLine...)\n}\n"
  },
  {
    "path": "pkg/config/engine/crio/crio_test.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage crio\n\nimport (\n\t\"testing\"\n\n\ttestlog \"github.com/sirupsen/logrus/hooks/test\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/config/toml\"\n)\n\nfunc TestAddRuntime(t *testing.T) {\n\tlogger, _ := testlog.NewNullLogger()\n\ttestCases := []struct {\n\t\tdescription    string\n\t\tconfig         string\n\t\tsetAsDefault   bool\n\t\texpectedConfig string\n\t\texpectedError  error\n\t}{\n\t\t{\n\t\t\tdescription: \"empty config not default runtime\",\n\t\t\texpectedConfig: `\n\t\t\t[crio]\n\t\t\t[crio.runtime.runtimes.test]\n\t\t\truntime_path = \"/usr/bin/test\"\n\t\t\truntime_type = \"oci\"\n\t\t\t`,\n\t\t\texpectedError: nil,\n\t\t},\n\t\t{\n\t\t\tdescription:  \"empty config, set as default runtime\",\n\t\t\tsetAsDefault: true,\n\t\t\texpectedConfig: `\n\t\t\t[crio]\n\t\t\t[crio.runtime]\n\t\t\tdefault_runtime = \"test\"\n\t\t\t[crio.runtime.runtimes.test]\n\t\t\truntime_path = \"/usr/bin/test\"\n\t\t\truntime_type = \"oci\"\n\t\t\t`,\n\t\t\texpectedError: nil,\n\t\t},\n\t\t{\n\t\t\tdescription: \"options from runc are imported\",\n\t\t\tconfig: `\n\t\t\t[crio]\n\t\t\t[crio.runtime.runtimes.runc]\n\t\t\truntime_path = \"/usr/bin/runc\"\n\t\t\truntime_type = \"runcoci\"\n\t\t\trunc_option = \"option\"\n\t\t\t`,\n\t\t\texpectedConfig: `\n\t\t\t[crio]\n\t\t\t[crio.runtime.runtimes.test]\n\t\t\truntime_path = \"/usr/bin/test\"\n\t\t\truntime_type = \"oci\"\n\t\t\trunc_option = \"option\"\n\t\t\t`,\n\t\t},\n\t\t{\n\t\t\tdescription: \"options from default runtime are imported\",\n\t\t\tconfig: `\n\t\t\t[crio]\n\t\t\t[crio.runtime]\n\t\t\tdefault_runtime = \"default\"\n\t\t\t[crio.runtime.runtimes.default]\n\t\t\truntime_path = \"/usr/bin/default\"\n\t\t\truntime_type = \"defaultoci\"\n\t\t\tdefault_option = \"option\"\n\t\t\t`,\n\t\t\texpectedConfig: `\n\t\t\t[crio]\n\t\t\t[crio.runtime]\n\t\t\t[crio.runtime.runtimes.test]\n\t\t\truntime_path = \"/usr/bin/test\"\n\t\t\truntime_type = \"oci\"\n\t\t\tdefault_option = \"option\"\n\t\t\t`,\n\t\t},\n\t\t{\n\t\t\tdescription: \"options from the default runtime take precedence over runc\",\n\t\t\tconfig: `\n\t\t\t[crio]\n\t\t\t[crio.runtime]\n\t\t\tdefault_runtime = \"default\"\n\t\t\t[crio.runtime.runtimes.default]\n\t\t\truntime_path = \"/usr/bin/default\"\n\t\t\truntime_type = \"defaultoci\"\n\t\t\tdefault_option = \"option\"\n\t\t\t[crio.runtime.runtimes.runc]\n\t\t\truntime_path = \"/usr/bin/runc\"\n\t\t\truntime_type = \"runcoci\"\n\t\t\trunc_option = \"option\"\n\t\t\t`,\n\t\t\texpectedConfig: `\n\t\t\t[crio]\n\t\t\t[crio.runtime]\n\t\t\t[crio.runtime.runtimes.test]\n\t\t\truntime_path = \"/usr/bin/test\"\n\t\t\truntime_type = \"oci\"\n\t\t\tdefault_option = \"option\"\n\t\t\t`,\n\t\t},\n\t\t{\n\t\t\tdescription:  \"runtime already exists in config, default runtime\",\n\t\t\tsetAsDefault: true,\n\t\t\tconfig: `\n\t\t\t[crio]\n\t\t\t[crio.runtime]\n\t\t\tdefault_runtime = \"test\"\n\t\t\t[crio.runtime.runtimes.test]\n\t\t\truntime_path = \"/usr/bin/test\"\n\t\t\truntime_type = \"oci\"\n\t\t\t`,\n\t\t\texpectedConfig: `\n\t\t\t[crio]\n\t\t\t[crio.runtime]\n\t\t\tdefault_runtime = \"test\"\n\t\t\t[crio.runtime.runtimes.test]\n\t\t\truntime_path = \"/usr/bin/test\"\n\t\t\truntime_type = \"oci\"\n\t\t\t`,\n\t\t\texpectedError: nil,\n\t\t},\n\t\t{\n\t\t\tdescription:  \"runtime already exists in config, not default runtime\",\n\t\t\tsetAsDefault: false,\n\t\t\tconfig: `\n\t\t\t[crio]\n\t\t\t[crio.runtime]\n\t\t\tdefault_runtime = \"test\"\n\t\t\t[crio.runtime.runtimes.test]\n\t\t\truntime_path = \"/usr/bin/test\"\n\t\t\truntime_type = \"oci\"\n\t\t\t`,\n\t\t\texpectedConfig: `\n\t\t\t[crio]\n\t\t\t[crio.runtime]\n\t\t\t[crio.runtime.runtimes.test]\n\t\t\truntime_path = \"/usr/bin/test\"\n\t\t\truntime_type = \"oci\"\n\t\t\t`,\n\t\t\texpectedError: nil,\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\texpectedConfig, err := toml.Load(tc.expectedConfig)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tc, err := New(\n\t\t\t\tWithLogger(logger),\n\t\t\t\tWithConfigSource(toml.FromString(tc.config)),\n\t\t\t)\n\t\t\trequire.NoError(t, err)\n\n\t\t\terr = c.AddRuntime(\"test\", \"/usr/bin/test\", tc.setAsDefault)\n\t\t\trequire.NoError(t, err)\n\n\t\t\trequire.EqualValues(t, expectedConfig.String(), c.String())\n\t\t})\n\t}\n}\n\nfunc TestGetRuntimeConfig(t *testing.T) {\n\tlogger, _ := testlog.NewNullLogger()\n\tconfig := `\n[crio.image]\nsignature_policy = \"/etc/crio/policy.json\"\n\n[crio.runtime]\ndefault_runtime = \"crun\"\n\n[crio.runtime.runtimes.crun]\nruntime_path = \"/usr/libexec/crio/crun\"\nruntime_root = \"/run/crun\"\nmonitor_path = \"/usr/libexec/crio/conmon\"\nallowed_annotations = [\n    \"io.containers.trace-syscall\",\n]\n\n[crio.runtime.runtimes.runc]\nruntime_path = \"/usr/libexec/crio/runc\"\nruntime_root = \"/run/runc\"\nmonitor_path = \"/usr/libexec/crio/conmon\"\n`\n\ttestCases := []struct {\n\t\tdescription   string\n\t\truntime       string\n\t\texpected      string\n\t\texpectedError error\n\t}{\n\t\t{\n\t\t\tdescription:   \"valid runtime config, existing runtime\",\n\t\t\truntime:       \"crun\",\n\t\t\texpected:      \"/usr/libexec/crio/crun\",\n\t\t\texpectedError: nil,\n\t\t},\n\t\t{\n\t\t\tdescription:   \"valid runtime config, non-existing runtime\",\n\t\t\truntime:       \"some-other-runtime\",\n\t\t\texpected:      \"\",\n\t\t\texpectedError: nil,\n\t\t},\n\t}\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\tc, err := New(\n\t\t\t\tWithLogger(logger),\n\t\t\t\tWithConfigSource(toml.FromString(config)),\n\t\t\t)\n\t\t\trequire.NoError(t, err)\n\n\t\t\trc, err := c.GetRuntimeConfig(tc.runtime)\n\t\t\trequire.Equal(t, tc.expectedError, err)\n\t\t\trequire.Equal(t, tc.expected, rc.GetBinaryPath())\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "pkg/config/engine/crio/option.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage crio\n\nimport (\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/config/toml\"\n)\n\ntype builder struct {\n\tlogger             logger.Interface\n\tconfigSource       toml.Loader\n\tconfigDestination  toml.Loader\n\ttopLevelConfigPath string\n}\n\n// Option defines a function that can be used to configure the config builder\ntype Option func(*builder)\n\n// WithLogger sets the logger for the config builder\nfunc WithLogger(logger logger.Interface) Option {\n\treturn func(b *builder) {\n\t\tb.logger = logger\n\t}\n}\n\n// WithTopLevelConfigPath sets the path for the top-level containerd config.\nfunc WithTopLevelConfigPath(path string) Option {\n\treturn func(b *builder) {\n\t\tb.topLevelConfigPath = path\n\t}\n}\n\n// WithConfigSource sets the TOML source for the config.\nfunc WithConfigSource(configSource toml.Loader) Option {\n\treturn func(b *builder) {\n\t\tb.configSource = configSource\n\t}\n}\n\n// WithConfigDestination sets the TOML destination for the config.\nfunc WithConfigDestination(configDestination toml.Loader) Option {\n\treturn func(b *builder) {\n\t\tb.configDestination = configDestination\n\t}\n}\n"
  },
  {
    "path": "pkg/config/engine/docker/docker.go",
    "content": "/**\n# Copyright (c) 2021-2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n*/\n\npackage docker\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/config\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/config/engine\"\n)\n\nconst (\n\tdefaultDockerRuntime = \"runc\"\n)\n\n// Config defines a docker config file.\n// TODO: This should not be public, but we need to access it from the tests in tools/container/docker\ntype Config map[string]interface{}\n\nvar _ engine.Interface = (*Config)(nil)\n\ntype dockerRuntime map[string]interface{}\n\nvar _ engine.RuntimeConfig = (*dockerRuntime)(nil)\n\n// GetBinaryPath retrieves the path to the low-level runtime binary for a runtime.\n// If no path is available, the empty string is returned.\nfunc (d dockerRuntime) GetBinaryPath() string {\n\tif d == nil {\n\t\treturn \"\"\n\t}\n\n\tpath, _ := d[\"path\"].(string)\n\treturn path\n}\n\n// New creates a docker config with the specified options\nfunc New(opts ...Option) (engine.Interface, error) {\n\tb := &builder{}\n\tfor _, opt := range opts {\n\t\topt(b)\n\t}\n\n\tif b.logger == nil {\n\t\tb.logger = logger.New()\n\t}\n\n\treturn b.build()\n}\n\n// AddRuntime adds a new runtime to the docker config\nfunc (c *Config) AddRuntime(name string, path string, setAsDefault bool) error {\n\tif c == nil {\n\t\treturn fmt.Errorf(\"config is nil\")\n\t}\n\n\tconfig := *c\n\n\t// Read the existing runtimes\n\truntimes := make(map[string]interface{})\n\tif _, exists := config[\"runtimes\"]; exists {\n\t\truntimes = config[\"runtimes\"].(map[string]interface{})\n\t}\n\n\t// Add / update the runtime definitions\n\truntimes[name] = map[string]interface{}{\n\t\t\"path\": path,\n\t\t\"args\": []string{},\n\t}\n\n\tconfig[\"runtimes\"] = runtimes\n\n\tif setAsDefault {\n\t\tconfig[\"default-runtime\"] = name\n\t}\n\n\t*c = config\n\treturn nil\n}\n\n// DefaultRuntime returns the default runtime for the docker config\nfunc (c Config) DefaultRuntime() string {\n\tr, ok := c[\"default-runtime\"].(string)\n\tif !ok {\n\t\treturn \"\"\n\t}\n\treturn r\n}\n\n// EnableCDI sets features.cdi to true in the docker config.\nfunc (c *Config) EnableCDI() {\n\tif c == nil {\n\t\treturn\n\t}\n\tconfig := *c\n\n\tfeatures, ok := config[\"features\"].(map[string]bool)\n\tif !ok {\n\t\tfeatures = make(map[string]bool)\n\t}\n\tfeatures[\"cdi\"] = true\n\n\tconfig[\"features\"] = features\n\n\t*c = config\n}\n\n// RemoveRuntime removes a runtime from the docker config\nfunc (c *Config) RemoveRuntime(name string) error {\n\tif c == nil {\n\t\treturn nil\n\t}\n\tconfig := *c\n\n\tif _, exists := config[\"default-runtime\"]; exists {\n\t\tdefaultRuntime := config[\"default-runtime\"].(string)\n\t\tif defaultRuntime == name {\n\t\t\tconfig[\"default-runtime\"] = defaultDockerRuntime\n\t\t}\n\t}\n\n\tif _, exists := config[\"runtimes\"]; exists {\n\t\truntimes := config[\"runtimes\"].(map[string]interface{})\n\n\t\tdelete(runtimes, name)\n\n\t\tif len(runtimes) == 0 {\n\t\t\tdelete(config, \"runtimes\")\n\t\t}\n\t}\n\n\t*c = config\n\n\treturn nil\n}\n\n// UpdateDefaultRuntime updates the default runtime setting in the config.\n// When action is 'set' the provided runtime name is set as the default.\n// When action is 'unset' we make sure the provided runtime name is not\n// the default.\nfunc (c *Config) UpdateDefaultRuntime(name string, action string) error {\n\tif action != engine.UpdateActionSet && action != engine.UpdateActionUnset {\n\t\treturn fmt.Errorf(\"invalid action %q, valid actions are %q and %q\", action, engine.UpdateActionSet, engine.UpdateActionUnset)\n\t}\n\n\tif c == nil {\n\t\tif action == engine.UpdateActionSet {\n\t\t\treturn fmt.Errorf(\"config toml is nil\")\n\t\t}\n\t\treturn nil\n\t}\n\n\tconfig := *c\n\n\tif action == engine.UpdateActionSet {\n\t\tconfig[\"default-runtime\"] = name\n\t} else {\n\t\tif _, exists := config[\"default-runtime\"]; exists {\n\t\t\tdefaultRuntime := config[\"default-runtime\"].(string)\n\t\t\tif defaultRuntime == name {\n\t\t\t\tconfig[\"default-runtime\"] = defaultDockerRuntime\n\t\t\t}\n\t\t}\n\t}\n\n\t*c = config\n\treturn nil\n}\n\n// Save writes the config to the specified path\nfunc (c Config) Save(path string) (int64, error) {\n\toutput, err := json.MarshalIndent(c, \"\", \"    \")\n\tif err != nil {\n\t\treturn 0, fmt.Errorf(\"unable to convert to JSON: %v\", err)\n\t}\n\n\tn, err := config.Raw(path).Write(output)\n\treturn int64(n), err\n}\n\n// GetRuntimeConfig returns the runtime info of the runtime passed as input\nfunc (c *Config) GetRuntimeConfig(name string) (engine.RuntimeConfig, error) {\n\tif c == nil {\n\t\treturn nil, fmt.Errorf(\"config is nil\")\n\t}\n\n\tcfg := *c\n\n\tvar runtimes map[string]interface{}\n\tif _, ok := cfg[\"runtimes\"]; ok {\n\t\truntimes = cfg[\"runtimes\"].(map[string]interface{})\n\t\tif r, ok := runtimes[name]; ok {\n\t\t\tdr := dockerRuntime(r.(map[string]interface{}))\n\t\t\treturn &dr, nil\n\t\t}\n\t}\n\treturn &dockerRuntime{}, nil\n}\n\n// String returns the string representation of the JSON config.\nfunc (c Config) String() string {\n\toutput, err := json.MarshalIndent(c, \"\", \"    \")\n\tif err != nil {\n\t\treturn fmt.Sprintf(\"invalid JSON: %v\", err)\n\t}\n\n\treturn string(output)\n}\n"
  },
  {
    "path": "pkg/config/engine/docker/docker_test.go",
    "content": "/**\n# Copyright (c) 2021-2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n*/\n\npackage docker\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestUpdateConfigDefaultRuntime(t *testing.T) {\n\ttestCases := []struct {\n\t\tconfig                     Config\n\t\truntimeName                string\n\t\tsetAsDefault               bool\n\t\texpectedDefaultRuntimeName interface{}\n\t}{\n\t\t{\n\t\t\tsetAsDefault:               false,\n\t\t\texpectedDefaultRuntimeName: nil,\n\t\t},\n\t\t{\n\t\t\truntimeName:                \"NAME\",\n\t\t\tsetAsDefault:               true,\n\t\t\texpectedDefaultRuntimeName: \"NAME\",\n\t\t},\n\t\t{\n\t\t\tconfig: map[string]interface{}{\n\t\t\t\t\"default-runtime\": \"ALREADY_SET\",\n\t\t\t},\n\t\t\truntimeName:                \"NAME\",\n\t\t\tsetAsDefault:               false,\n\t\t\texpectedDefaultRuntimeName: \"ALREADY_SET\",\n\t\t},\n\t\t{\n\t\t\tconfig: map[string]interface{}{\n\t\t\t\t\"default-runtime\": \"ALREADY_SET\",\n\t\t\t},\n\t\t\truntimeName:                \"NAME\",\n\t\t\tsetAsDefault:               true,\n\t\t\texpectedDefaultRuntimeName: \"NAME\",\n\t\t},\n\t}\n\n\tfor i, tc := range testCases {\n\t\tt.Run(fmt.Sprintf(\"test case %d\", i), func(t *testing.T) {\n\t\t\tif tc.config == nil {\n\t\t\t\ttc.config = make(map[string]interface{})\n\t\t\t}\n\t\t\terr := tc.config.AddRuntime(tc.runtimeName, \"\", tc.setAsDefault)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tdefaultRuntimeName := tc.config[\"default-runtime\"]\n\t\t\trequire.EqualValues(t, tc.expectedDefaultRuntimeName, defaultRuntimeName)\n\t\t})\n\t}\n}\n\nfunc TestUpdateConfigRuntimes(t *testing.T) {\n\ttestCases := []struct {\n\t\tconfig         Config\n\t\truntimes       map[string]string\n\t\texpectedConfig map[string]interface{}\n\t}{\n\t\t{\n\t\t\tconfig: map[string]interface{}{},\n\t\t\truntimes: map[string]string{\n\t\t\t\t\"runtime1\": \"/test/runtime/dir/runtime1\",\n\t\t\t\t\"runtime2\": \"/test/runtime/dir/runtime2\",\n\t\t\t},\n\t\t\texpectedConfig: map[string]interface{}{\n\t\t\t\t\"runtimes\": map[string]interface{}{\n\t\t\t\t\t\"runtime1\": map[string]interface{}{\n\t\t\t\t\t\t\"path\": \"/test/runtime/dir/runtime1\",\n\t\t\t\t\t\t\"args\": []string{},\n\t\t\t\t\t},\n\t\t\t\t\t\"runtime2\": map[string]interface{}{\n\t\t\t\t\t\t\"path\": \"/test/runtime/dir/runtime2\",\n\t\t\t\t\t\t\"args\": []string{},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tconfig: map[string]interface{}{\n\t\t\t\t\"runtimes\": map[string]interface{}{\n\t\t\t\t\t\"runtime1\": map[string]interface{}{\n\t\t\t\t\t\t\"path\": \"runtime1\",\n\t\t\t\t\t\t\"args\": []string{},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\truntimes: map[string]string{\n\t\t\t\t\"runtime1\": \"/test/runtime/dir/runtime1\",\n\t\t\t\t\"runtime2\": \"/test/runtime/dir/runtime2\",\n\t\t\t},\n\t\t\texpectedConfig: map[string]interface{}{\n\t\t\t\t\"runtimes\": map[string]interface{}{\n\t\t\t\t\t\"runtime1\": map[string]interface{}{\n\t\t\t\t\t\t\"path\": \"/test/runtime/dir/runtime1\",\n\t\t\t\t\t\t\"args\": []string{},\n\t\t\t\t\t},\n\t\t\t\t\t\"runtime2\": map[string]interface{}{\n\t\t\t\t\t\t\"path\": \"/test/runtime/dir/runtime2\",\n\t\t\t\t\t\t\"args\": []string{},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tconfig: map[string]interface{}{\n\t\t\t\t\"runtimes\": map[string]interface{}{\n\t\t\t\t\t\"not-nvidia\": map[string]interface{}{\n\t\t\t\t\t\t\"path\": \"some-other-path\",\n\t\t\t\t\t\t\"args\": []string{},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\truntimes: map[string]string{\n\t\t\t\t\"runtime1\": \"/test/runtime/dir/runtime1\",\n\t\t\t},\n\t\t\texpectedConfig: map[string]interface{}{\n\t\t\t\t\"runtimes\": map[string]interface{}{\n\t\t\t\t\t\"not-nvidia\": map[string]interface{}{\n\t\t\t\t\t\t\"path\": \"some-other-path\",\n\t\t\t\t\t\t\"args\": []string{},\n\t\t\t\t\t},\n\t\t\t\t\t\"runtime1\": map[string]interface{}{\n\t\t\t\t\t\t\"path\": \"/test/runtime/dir/runtime1\",\n\t\t\t\t\t\t\"args\": []string{},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tconfig: map[string]interface{}{\n\t\t\t\t\"exec-opts\":  []string{\"native.cgroupdriver=systemd\"},\n\t\t\t\t\"log-driver\": \"json-file\",\n\t\t\t\t\"log-opts\": map[string]string{\n\t\t\t\t\t\"max-size\": \"100m\",\n\t\t\t\t},\n\t\t\t\t\"storage-driver\": \"overlay2\",\n\t\t\t},\n\t\t\truntimes: map[string]string{\n\t\t\t\t\"runtime1\": \"/test/runtime/dir/runtime1\",\n\t\t\t},\n\t\t\texpectedConfig: map[string]interface{}{\n\t\t\t\t\"exec-opts\":  []string{\"native.cgroupdriver=systemd\"},\n\t\t\t\t\"log-driver\": \"json-file\",\n\t\t\t\t\"log-opts\": map[string]string{\n\t\t\t\t\t\"max-size\": \"100m\",\n\t\t\t\t},\n\t\t\t\t\"storage-driver\": \"overlay2\",\n\t\t\t\t\"runtimes\": map[string]interface{}{\n\t\t\t\t\t\"runtime1\": map[string]interface{}{\n\t\t\t\t\t\t\"path\": \"/test/runtime/dir/runtime1\",\n\t\t\t\t\t\t\"args\": []string{},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tconfig: map[string]interface{}{\n\t\t\t\t\"exec-opts\":  []string{\"native.cgroupdriver=systemd\"},\n\t\t\t\t\"log-driver\": \"json-file\",\n\t\t\t\t\"log-opts\": map[string]string{\n\t\t\t\t\t\"max-size\": \"100m\",\n\t\t\t\t},\n\t\t\t\t\"storage-driver\": \"overlay2\",\n\t\t\t},\n\t\t\texpectedConfig: map[string]interface{}{\n\t\t\t\t\"exec-opts\":  []string{\"native.cgroupdriver=systemd\"},\n\t\t\t\t\"log-driver\": \"json-file\",\n\t\t\t\t\"log-opts\": map[string]string{\n\t\t\t\t\t\"max-size\": \"100m\",\n\t\t\t\t},\n\t\t\t\t\"storage-driver\": \"overlay2\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor i, tc := range testCases {\n\t\tt.Run(fmt.Sprintf(\"test case %d\", i), func(t *testing.T) {\n\t\t\tfor runtimeName, runtimePath := range tc.runtimes {\n\t\t\t\terr := tc.config.AddRuntime(runtimeName, runtimePath, false)\n\t\t\t\trequire.NoError(t, err)\n\t\t\t}\n\n\t\t\tconfigContent, err := json.MarshalIndent(tc.config, \"\", \"    \")\n\t\t\trequire.NoError(t, err)\n\n\t\t\texpectedContent, err := json.MarshalIndent(tc.expectedConfig, \"\", \"    \")\n\t\t\trequire.NoError(t, err)\n\n\t\t\trequire.EqualValues(t, string(expectedContent), string(configContent))\n\t\t})\n\n\t}\n}\n\nfunc TestGetRuntimeConfig(t *testing.T) {\n\tc := map[string]interface{}{\n\t\t\"runtimes\": map[string]interface{}{\n\t\t\t\"nvidia\": map[string]interface{}{\n\t\t\t\t\"path\": \"nvidia-container-runtime\",\n\t\t\t\t\"args\": []string{},\n\t\t\t},\n\t\t},\n\t}\n\tcfg := Config(c)\n\n\ttestCases := []struct {\n\t\tdescription string\n\t\truntime     string\n\t\texpected    string\n\t}{\n\t\t{\n\t\t\tdescription: \"existing runtime\",\n\t\t\truntime:     \"nvidia\",\n\t\t\texpected:    \"nvidia-container-runtime\",\n\t\t},\n\t\t{\n\t\t\tdescription: \"non-existent runtime\",\n\t\t\truntime:     \"some-other-runtime\",\n\t\t\texpected:    \"\",\n\t\t},\n\t}\n\tfor _, tc := range testCases {\n\t\trc, err := cfg.GetRuntimeConfig(tc.runtime)\n\t\trequire.NoError(t, err)\n\t\trequire.Equal(t, tc.expected, rc.GetBinaryPath())\n\t}\n}\n"
  },
  {
    "path": "pkg/config/engine/docker/option.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage docker\n\nimport (\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"os\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n)\n\ntype builder struct {\n\tlogger logger.Interface\n\tpath   string\n}\n\n// Option defines a function that can be used to configure the config builder\ntype Option func(*builder)\n\n// WithLogger sets the logger for the config builder\nfunc WithLogger(logger logger.Interface) Option {\n\treturn func(b *builder) {\n\t\tb.logger = logger\n\t}\n}\n\n// WithPath sets the path for the config builder\nfunc WithPath(path string) Option {\n\treturn func(b *builder) {\n\t\tb.path = path\n\t}\n}\n\nfunc (b *builder) build() (*Config, error) {\n\tif b.path == \"\" {\n\t\tempty := make(Config)\n\t\treturn &empty, nil\n\t}\n\n\treturn b.loadConfig(b.path)\n}\n\n// loadConfig loads the docker config from disk\nfunc (b *builder) loadConfig(config string) (*Config, error) {\n\tinfo, err := os.Stat(config)\n\tif os.IsExist(err) && info.IsDir() {\n\t\treturn nil, fmt.Errorf(\"config file is a directory\")\n\t}\n\n\tcfg := make(Config)\n\n\tif os.IsNotExist(err) {\n\t\tb.logger.Infof(\"Config file does not exist; using empty config\")\n\t\treturn &cfg, nil\n\t}\n\n\tb.logger.Infof(\"Loading config from %v\", config)\n\treadBytes, err := os.ReadFile(config)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to read config: %v\", err)\n\t}\n\n\treader := bytes.NewReader(readBytes)\n\tif err := json.NewDecoder(reader).Decode(&cfg); err != nil {\n\t\treturn nil, err\n\t}\n\treturn &cfg, nil\n}\n"
  },
  {
    "path": "pkg/config/engine/engine.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage engine\n\nimport \"strings\"\n\n// GetBinaryPathsForRuntimes returns the list of binary paths for common runtimes.\n// The following list of runtimes is considered:\n//\n//\tthe default runtime, \"runc\", and \"crun\"\n//\n// If an nvidia* runtime is set as the default runtime, this is ignored.\nfunc GetBinaryPathsForRuntimes(cfg defaultRuntimesGetter) []string {\n\n\tvar binaryPaths []string\n\tseen := make(map[string]bool)\n\tfor _, runtime := range GetLowLevelRuntimes(cfg) {\n\t\truntimeConfig, err := cfg.GetRuntimeConfig(runtime)\n\t\tif err != nil {\n\t\t\t// TODO: It will be useful to log the error when GetRuntimeConfig fails for a runtime\n\t\t\tcontinue\n\t\t}\n\t\tbinaryPath := runtimeConfig.GetBinaryPath()\n\t\tif binaryPath == \"\" || seen[binaryPath] {\n\t\t\tcontinue\n\t\t}\n\t\tseen[binaryPath] = true\n\t\tbinaryPaths = append(binaryPaths, binaryPath)\n\t}\n\n\treturn binaryPaths\n}\n\ntype defaultRuntimesGetter interface {\n\tDefaultRuntime() string\n\tGetRuntimeConfig(string) (RuntimeConfig, error)\n}\n\n// GetLowLevelRuntimes returns a predefined list low-level runtimes from the specified config.\n// nvidia* runtimes are ignored.\nfunc GetLowLevelRuntimes(cfg defaultRuntimesGetter) []string {\n\tvar runtimes []string\n\tisValidDefault := func(s string) bool {\n\t\tif s == \"\" {\n\t\t\treturn false\n\t\t}\n\t\t// ignore nvidia* runtimes.\n\t\treturn !strings.HasPrefix(s, \"nvidia\")\n\t}\n\tif defaultRuntime := cfg.DefaultRuntime(); isValidDefault(defaultRuntime) {\n\t\truntimes = append(runtimes, defaultRuntime)\n\t}\n\treturn append(runtimes, \"runc\", \"crun\")\n}\n"
  },
  {
    "path": "pkg/config/ocihook/hooks.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage ocihook\n\n// podmanHook is the hook configuration structure.\n// This is taken from `Hook` at https://github.com/containers/podman/blob/3c53200e9d61fdf95fe1da825bb2a89372551350/pkg/hooks/1.0.0/hook.go#L18\ntype podmanHook struct {\n\tVersion string   `json:\"version\"`\n\tHook    specHook `json:\"hook\"`\n\tWhen    When     `json:\"when\"`\n\tStages  []string `json:\"stages\"`\n}\n\n// specHook specifies a command that is run at a particular event in the lifecycle of a container\n// This is taken from `Hook` at https://github.com/opencontainers/runtime-spec/blob/9ee22abf867e374c5464c7bbe0d0db01482254ab/specs-go/config.go#L128\ntype specHook struct {\n\tPath    string   `json:\"path\"`\n\tArgs    []string `json:\"args,omitempty\"`\n\tEnv     []string `json:\"env,omitempty\"`\n\tTimeout *int     `json:\"timeout,omitempty\"`\n}\n\n// When holds hook-injection conditions.\n// This is taken from `When` at https://github.com/containers/podman/blob/3c53200e9d61fdf95fe1da825bb2a89372551350/pkg/hooks/1.0.0/when.go#L11\ntype When struct {\n\tAlways        *bool             `json:\"always,omitempty\"`\n\tAnnotations   map[string]string `json:\"annotations,omitempty\"`\n\tCommands      []string          `json:\"commands,omitempty\"`\n\tHasBindMounts *bool             `json:\"hasBindMounts,omitempty\"`\n\n\t// Or enables any-of matching.\n\t//\n\t// Deprecated: this property is for is backwards-compatibility with\n\t// 0.1.0 hooks.  It will be removed when we drop support for them.\n\tOr bool `json:\"-\"`\n}\n"
  },
  {
    "path": "pkg/config/ocihook/oci-hook.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage ocihook\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n)\n\n// CreateHook creates an OCI hook file for the specified NVIDIA Container Runtime hook path\nfunc CreateHook(hookFilePath string, nvidiaContainerRuntimeHookExecutablePath string) error {\n\tvar output io.Writer\n\tif hookFilePath == \"\" {\n\t\toutput = os.Stdout\n\t} else {\n\t\tif hooksDir := filepath.Dir(hookFilePath); hooksDir != \"\" {\n\t\t\terr := os.MkdirAll(hooksDir, 0755)\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"error creating hooks directory %v: %v\", hooksDir, err)\n\t\t\t}\n\t\t}\n\n\t\thookFile, err := os.Create(hookFilePath)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"error creating hook file '%v': %v\", hookFilePath, err)\n\t\t}\n\t\tdefer hookFile.Close()\n\t\toutput = hookFile\n\t}\n\n\tencoder := json.NewEncoder(output)\n\tencoder.SetIndent(\"\", \"  \")\n\tif err := encoder.Encode(generateOciHook(nvidiaContainerRuntimeHookExecutablePath)); err != nil {\n\t\treturn fmt.Errorf(\"error writing hook file: %v\", err)\n\t}\n\treturn nil\n}\n\nfunc generateOciHook(executablePath string) podmanHook {\n\tpathParts := []string{\"/usr/local/sbin\", \"/usr/local/bin\", \"/usr/sbin\", \"/usr/bin\", \"/sbin\", \"/bin\"}\n\n\tdir := filepath.Dir(executablePath)\n\tvar found bool\n\tfor _, pathPart := range pathParts {\n\t\tif pathPart == dir {\n\t\t\tfound = true\n\t\t\tbreak\n\t\t}\n\t}\n\tif !found {\n\t\tpathParts = append(pathParts, dir)\n\t}\n\n\tenvPath := \"PATH=\" + strings.Join(pathParts, \":\")\n\talways := true\n\n\thook := podmanHook{\n\t\tVersion: \"1.0.0\",\n\t\tStages:  []string{\"prestart\"},\n\t\tHook: specHook{\n\t\t\tPath: executablePath,\n\t\t\tArgs: []string{filepath.Base(executablePath), \"prestart\"},\n\t\t\tEnv:  []string{envPath},\n\t\t},\n\t\tWhen: When{\n\t\t\tAlways:   &always,\n\t\t\tCommands: []string{\".*\"},\n\t\t},\n\t}\n\treturn hook\n}\n"
  },
  {
    "path": "pkg/config/raw.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage config\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n)\n\n// Raw represents a raw config file\ntype Raw string\n\n// Write writes the specified contents to a config file.\nfunc (c Raw) Write(output []byte) (int, error) {\n\tpath := string(c)\n\tif path == \"\" {\n\t\tn, err := os.Stdout.Write(output)\n\t\tif err == nil {\n\t\t\tos.Stdout.WriteString(\"\\n\")\n\t\t}\n\t\treturn n, err\n\t}\n\n\tif len(output) == 0 {\n\t\terr := os.Remove(path)\n\t\tif err != nil {\n\t\t\treturn 0, fmt.Errorf(\"unable to remove empty file: %v\", err)\n\t\t}\n\t\treturn 0, nil\n\t}\n\n\tif dir := filepath.Dir(path); dir != \"\" {\n\t\terr := os.MkdirAll(dir, 0755)\n\t\tif err != nil {\n\t\t\treturn 0, fmt.Errorf(\"unable to create directory %v: %v\", dir, err)\n\t\t}\n\t}\n\n\tf, err := os.Create(path)\n\tif err != nil {\n\t\treturn 0, fmt.Errorf(\"unable to open %v for writing: %v\", path, err)\n\t}\n\tdefer f.Close()\n\n\treturn f.Write(output)\n}\n"
  },
  {
    "path": "pkg/config/toml/list.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage toml\n\nimport \"errors\"\n\ntype firstOf []Loader\n\nfunc LoadFirst(loaders ...Loader) Loader {\n\treturn firstOf(loaders)\n}\n\nfunc (loaders firstOf) Load() (*Tree, error) {\n\tvar errs error\n\tfor _, loader := range loaders {\n\t\tif loader == nil {\n\t\t\tcontinue\n\t\t}\n\t\ttree, err := loader.Load()\n\t\tif err != nil {\n\t\t\terrs = errors.Join(errs, err)\n\t\t\tcontinue\n\t\t}\n\t\treturn tree, nil\n\t}\n\treturn nil, errs\n}\n"
  },
  {
    "path": "pkg/config/toml/source-cli.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage toml\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"os/exec\"\n)\n\ntype tomlCliSource struct {\n\tcommand string\n\targs    []string\n}\n\nfunc (c tomlCliSource) Load() (*Tree, error) {\n\t//nolint:gosec  // Subprocess launched with a potential tainted input or cmd arguments\n\tcmd := exec.Command(c.command, c.args...)\n\n\tvar outb bytes.Buffer\n\tvar errb bytes.Buffer\n\n\tcmd.Stdout = &outb\n\tcmd.Stderr = &errb\n\tif err := cmd.Run(); err != nil {\n\t\t// TODO: Log to stderr in case of failure\n\t\treturn nil, fmt.Errorf(\"failed to run command %v %v: %w\", c.command, c.args, err)\n\t}\n\n\treturn LoadBytes(outb.Bytes())\n}\n"
  },
  {
    "path": "pkg/config/toml/source-empty.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage toml\n\nimport (\n\t\"github.com/pelletier/go-toml\"\n)\n\ntype empty string\n\nvar _ Loader = (*empty)(nil)\n\n// Load is a no-op for an empty source.\nfunc (e empty) Load() (*Tree, error) {\n\treturn NewEmpty(), nil\n}\n\nfunc NewEmpty() *Tree {\n\ttomlTree, _ := toml.TreeFromMap(nil)\n\treturn (*Tree)(tomlTree)\n}\n"
  },
  {
    "path": "pkg/config/toml/source-file.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage toml\n\nimport (\n\t\"fmt\"\n\t\"os\"\n)\n\ntype tomlFile string\n\nvar _ Loader = (*tomlFile)(nil)\n\n// Load loads the contents of the specified TOML file as a map.\nfunc (f tomlFile) Load() (*Tree, error) {\n\tinfo, err := os.Stat(string(f))\n\tif os.IsExist(err) && info.IsDir() {\n\t\treturn nil, fmt.Errorf(\"config file %s is a directory\", string(f))\n\t}\n\n\tif os.IsNotExist(err) {\n\t\treturn Empty.Load()\n\t}\n\n\treturn LoadFile(string(f))\n}\n"
  },
  {
    "path": "pkg/config/toml/source-map.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage toml\n\ntype tomlMap map[string]interface{}\n\nvar _ Loader = (*tomlFile)(nil)\n\n// Load loads the contents of the specified TOML file as a map.\nfunc (l tomlMap) Load() (*Tree, error) {\n\treturn LoadMap(l)\n}\n"
  },
  {
    "path": "pkg/config/toml/source-string.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage toml\n\ntype tomlString string\n\nvar _ Loader = (*tomlFile)(nil)\n\n// Load loads the contents of the specified TOML file as a map.\nfunc (l tomlString) Load() (*Tree, error) {\n\treturn Load(string(l))\n}\n"
  },
  {
    "path": "pkg/config/toml/source.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage toml\n\nconst (\n\tEmpty = empty(\"\")\n)\n\n// Loader represents a source for a toml config.\ntype Loader interface {\n\tLoad() (*Tree, error)\n}\n\n// FromCommandLine creates a TOML source from the output of a shell command and its corresponding args.\n// If the command is empty, an empty config is returned.\nfunc FromCommandLine(cmds ...string) Loader {\n\tif len(cmds) == 0 {\n\t\treturn Empty\n\t}\n\treturn &tomlCliSource{\n\t\tcommand: cmds[0],\n\t\targs:    cmds[1:],\n\t}\n}\n\n// FromFile creates a TOML source from the specified file.\n// If an empty string is passed an empty toml config is used.\nfunc FromFile(path string) Loader {\n\tif path == \"\" {\n\t\treturn Empty\n\t}\n\treturn tomlFile(path)\n}\n\n// FromMap creates a TOML source for the specified map.\n// If an empty map is passed and empty tomly config is used.\nfunc FromMap(m map[string]interface{}) Loader {\n\tif m == nil {\n\t\treturn Empty\n\t}\n\treturn tomlMap(m)\n}\n\n// FromString creates a TOML source for the specified contents.\n// If an empty string is passed an empty toml config is used.\nfunc FromString(contents string) Loader {\n\tif contents == \"\" {\n\t\treturn Empty\n\t}\n\treturn tomlString(contents)\n}\n"
  },
  {
    "path": "pkg/config/toml/toml.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage toml\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pelletier/go-toml\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/config\"\n)\n\ntype Tree toml.Tree\n\n// Copy produces a copy of the contents of the Tree.\nfunc (t *Tree) Copy() *Tree {\n\tcopy, _ := Load(t.String())\n\treturn copy\n}\n\nfunc (t *Tree) GetSubtreeByPath(keys []string) *Tree {\n\tsubtree := t.GetPath(keys)\n\tif subtree == nil {\n\t\treturn nil\n\t}\n\n\tswitch subtree := subtree.(type) {\n\tcase *toml.Tree:\n\t\treturn (*Tree)(subtree)\n\tcase *Tree:\n\t\treturn subtree\n\tdefault:\n\t\tpanic(fmt.Errorf(\"invalid subtree type %T\", subtree))\n\t}\n}\n\nfunc (t *Tree) DeletePath(keys []string) error {\n\treturn (*toml.Tree)(t).DeletePath(keys)\n}\n\nfunc (t *Tree) HasPath(keys []string) bool {\n\treturn (*toml.Tree)(t).HasPath(keys)\n}\n\nfunc (t *Tree) Get(key string) interface{} {\n\treturn toTreeFromRaw((*toml.Tree)(t).Get(key))\n}\n\nfunc (t *Tree) GetPath(keys []string) interface{} {\n\treturn toTreeFromRaw((*toml.Tree)(t).GetPath(keys))\n}\n\nfunc (t *Tree) SetPath(keys []string, value interface{}) {\n\t(*toml.Tree)(t).SetPath(keys, toRawFromTree(value))\n}\n\nfunc (t *Tree) Set(key string, value interface{}) {\n\t(*toml.Tree)(t).Set(key, toRawFromTree(value))\n}\n\nfunc (t *Tree) Delete(key string) error {\n\treturn (*toml.Tree)(t).Delete(key)\n}\n\nfunc (t *Tree) Keys() []string {\n\treturn (*toml.Tree)(t).Keys()\n}\n\nfunc (t *Tree) String() string {\n\treturn (*toml.Tree)(t).String()\n}\n\nfunc (t *Tree) ToMap() map[string]interface{} {\n\treturn (*toml.Tree)(t).ToMap()\n}\n\nfunc (t *Tree) Raw() *toml.Tree {\n\treturn (*toml.Tree)(t)\n}\n\nfunc toRawFromTree(value interface{}) interface{} {\n\tif tree, ok := value.(*Tree); ok {\n\t\treturn (*toml.Tree)(tree)\n\t}\n\treturn value\n}\n\nfunc toTreeFromRaw(value interface{}) interface{} {\n\tif tree, ok := value.(*toml.Tree); ok {\n\t\treturn (*Tree)(tree)\n\t}\n\treturn value\n}\n\nfunc TreeFromMap(m map[string]interface{}) (*Tree, error) {\n\treturn new(func() (*toml.Tree, error) {\n\t\treturn toml.TreeFromMap(m)\n\t})\n}\n\nfunc Load(content string) (*Tree, error) {\n\treturn new(func() (*toml.Tree, error) {\n\t\treturn toml.Load(content)\n\t})\n}\n\nfunc LoadBytes(b []byte) (*Tree, error) {\n\treturn new(func() (*toml.Tree, error) {\n\t\treturn toml.LoadBytes(b)\n\t})\n}\n\nfunc LoadFile(path string) (*Tree, error) {\n\treturn new(func() (*toml.Tree, error) {\n\t\treturn toml.LoadFile(path)\n\t})\n}\n\nfunc LoadMap(m map[string]interface{}) (*Tree, error) {\n\treturn TreeFromMap(m)\n}\n\nfunc Marshal(v interface{}) ([]byte, error) {\n\treturn toml.Marshal(v)\n}\n\nfunc new(construct func() (*toml.Tree, error)) (*Tree, error) {\n\ttomlTree, err := construct()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn (*Tree)(tomlTree), nil\n}\n\n// Save writes the config to the specified path\nfunc (t *Tree) Save(path string) (int64, error) {\n\tcfg := (*toml.Tree)(t)\n\toutput, err := cfg.Marshal()\n\tif err != nil {\n\t\treturn 0, fmt.Errorf(\"unable to convert to TOML: %v\", err)\n\t}\n\n\tn, err := config.Raw(path).Write(output)\n\treturn int64(n), err\n}\n"
  },
  {
    "path": "pkg/lookup/device.go",
    "content": "/**\n# Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage lookup\n\nimport (\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/devices\"\n)\n\n// NewCharDeviceLocator creates a Locator that can be used to find char devices at the specified root. A logger is\n// also specified.\nfunc NewCharDeviceLocator(opts ...Option) Locator {\n\tfilter := devices.AssertCharDevice\n\n\topts = append(opts,\n\t\t// Device nodes can be specified by their full path e.g. /dev/nvidia0 or\n\t\t// by the name of the device node e.g nvidia0.\n\t\t// We thus set the search path to include \"/\" and \"/dev\" to cover both\n\t\t// cases.\n\t\tWithSearchPaths(\"/\", \"/dev\"),\n\t\tWithFilter(filter),\n\t)\n\treturn NewFactory(opts...).NewFileLocator()\n}\n"
  },
  {
    "path": "pkg/lookup/device_test.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage lookup\n\nimport (\n\t\"fmt\"\n\t\"testing\"\n\n\ttestlog \"github.com/sirupsen/logrus/hooks/test\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestCharDeviceLocator(t *testing.T) {\n\tlogger, _ := testlog.NewNullLogger()\n\n\ttestCases := []struct {\n\t\troot             string\n\t\texpectedPrefixes []string\n\t}{\n\t\t{\n\t\t\troot:             \"\",\n\t\t\texpectedPrefixes: []string{\"/\", \"/dev\"},\n\t\t},\n\t\t{\n\t\t\troot:             \"/\",\n\t\t\texpectedPrefixes: []string{\"/\", \"/dev\"},\n\t\t},\n\t\t{\n\t\t\troot:             \"/some/root\",\n\t\t\texpectedPrefixes: []string{\"/some/root\", \"/some/root/dev\"},\n\t\t},\n\t}\n\n\tfor i, tc := range testCases {\n\t\tt.Run(fmt.Sprintf(\"%d\", i), func(t *testing.T) {\n\t\t\trequired, ok := NewCharDeviceLocator(\n\t\t\t\tWithLogger(logger),\n\t\t\t\tWithRoot(tc.root),\n\t\t\t).(*requiredLocator)\n\t\t\trequire.True(t, ok)\n\n\t\t\tf, ok := required.wraps.(*file)\n\t\t\trequire.True(t, ok)\n\n\t\t\trequire.EqualValues(t, tc.expectedPrefixes, f.prefixes)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "pkg/lookup/dir.go",
    "content": "/*\n# Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n*/\n\npackage lookup\n\nimport (\n\t\"fmt\"\n\t\"os\"\n)\n\n// NewDirectoryLocator creates a Locator that can be used to find directories at the specified root.\nfunc NewDirectoryLocator(opts ...Option) Locator {\n\treturn NewFactory(\n\t\tappend(\n\t\t\topts,\n\t\t\tWithFilter(assertDirectory),\n\t\t)...,\n\t).NewFileLocator()\n}\n\n// assertDirectory checks wither the specified path is a directory.\nfunc assertDirectory(filename string) error {\n\tinfo, err := os.Stat(filename)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"error getting info for %v: %v\", filename, err)\n\t}\n\n\tif !info.IsDir() {\n\t\treturn fmt.Errorf(\"specified path '%v' is not a directory\", filename)\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "pkg/lookup/executable.go",
    "content": "/*\n# Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n*/\n\npackage lookup\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"strings\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n)\n\ntype executable struct {\n\tLocator\n}\n\n// NewExecutableLocator creates a locator to fine executable files in the path. A logger can also be specified.\nfunc NewExecutableLocator(logger logger.Interface, root string) Locator {\n\tpaths := GetPaths(root)\n\n\treturn newExecutableLocator(logger, root, paths...)\n}\n\nfunc newExecutableLocator(logger logger.Interface, root string, paths ...string) *executable {\n\tf := NewFactory(\n\t\tWithLogger(logger),\n\t\tWithRoot(root),\n\t\tWithSearchPaths(paths...),\n\t\tWithFilter(assertExecutable),\n\t\tWithCount(1),\n\t)\n\n\te := &executable{\n\t\tLocator: f.NewFileLocator(),\n\t}\n\treturn e\n}\n\nvar _ Locator = (*executable)(nil)\n\n// Locate finds executable files with the specified pattern in the path.\n// If a relative or absolute path is specified, the prefix paths are not considered.\nfunc (p executable) Locate(pattern string) ([]string, error) {\n\t// For absolute paths we ensure that it is executable\n\tif strings.Contains(pattern, \"/\") {\n\t\terr := assertExecutable(pattern)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"absolute path %v is not an executable file: %v\", pattern, err)\n\t\t}\n\t\treturn []string{pattern}, nil\n\t}\n\n\treturn p.Locator.Locate(pattern)\n}\n\n// assertExecutable checks whether the specified path is an execuable file.\nfunc assertExecutable(filename string) error {\n\terr := assertFile(filename)\n\tif err != nil {\n\t\treturn err\n\t}\n\tinfo, err := os.Stat(filename)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif info.Mode()&0111 == 0 {\n\t\treturn fmt.Errorf(\"specified file '%v' is not executable\", filename)\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "pkg/lookup/executable_test.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage lookup\n\nimport (\n\t\"fmt\"\n\t\"testing\"\n\n\ttestlog \"github.com/sirupsen/logrus/hooks/test\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestExecutableLocator(t *testing.T) {\n\tlogger, _ := testlog.NewNullLogger()\n\n\ttestCases := []struct {\n\t\troot             string\n\t\tpaths            []string\n\t\texpectedPrefixes []string\n\t}{\n\t\t{\n\t\t\troot:             \"\",\n\t\t\texpectedPrefixes: []string{\"\"},\n\t\t},\n\t\t{\n\t\t\troot:             \"\",\n\t\t\tpaths:            []string{\"/\"},\n\t\t\texpectedPrefixes: []string{\"/\"},\n\t\t},\n\t\t{\n\t\t\troot:             \"\",\n\t\t\tpaths:            []string{\"/\", \"/bin\"},\n\t\t\texpectedPrefixes: []string{\"/\", \"/bin\"},\n\t\t},\n\t\t{\n\t\t\troot:             \"/\",\n\t\t\texpectedPrefixes: []string{\"/\"},\n\t\t},\n\t\t{\n\t\t\troot:             \"/\",\n\t\t\tpaths:            []string{\"/\"},\n\t\t\texpectedPrefixes: []string{\"/\"},\n\t\t},\n\t\t{\n\t\t\troot:             \"/\",\n\t\t\tpaths:            []string{\"/\", \"/bin\"},\n\t\t\texpectedPrefixes: []string{\"/\", \"/bin\"},\n\t\t},\n\t\t{\n\t\t\troot:             \"/some/path\",\n\t\t\tpaths:            []string{\"/\", \"/bin\"},\n\t\t\texpectedPrefixes: []string{\"/some/path\", \"/some/path/bin\"},\n\t\t},\n\t}\n\n\tfor i, tc := range testCases {\n\t\tt.Run(fmt.Sprintf(\"%d\", i), func(t *testing.T) {\n\t\t\trequired, ok := newExecutableLocator(logger, tc.root, tc.paths...).Locator.(*requiredLocator)\n\t\t\trequire.True(t, ok)\n\n\t\t\tf, ok := required.wraps.(*file)\n\t\t\trequire.True(t, ok)\n\n\t\t\trequire.True(t, ok)\n\t\t\trequire.EqualValues(t, tc.expectedPrefixes, f.prefixes)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "pkg/lookup/factory.go",
    "content": "/**\n# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage lookup\n\nimport \"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\n// Factory defines a builder for locators.\ntype Factory struct {\n\tlogger      logger.Interface\n\troot        string\n\tsearchPaths []string\n\tfilter      func(string) error\n\tcount       int\n}\n\ntype Option func(*Factory)\n\nfunc NewFactory(opts ...Option) *Factory {\n\to := &Factory{}\n\tfor _, opt := range opts {\n\t\topt(o)\n\t}\n\tif o.logger == nil {\n\t\to.logger = logger.New()\n\t}\n\tif o.filter == nil {\n\t\to.filter = assertFile\n\t}\n\treturn o\n}\n\n// WithRoot sets the root for the file locator\nfunc WithRoot(root string) Option {\n\treturn func(f *Factory) {\n\t\tf.root = root\n\t}\n}\n\n// WithLogger sets the logger for the file locator\nfunc WithLogger(logger logger.Interface) Option {\n\treturn func(f *Factory) {\n\t\tf.logger = logger\n\t}\n}\n\n// WithSearchPaths sets the search paths for the file locator.\nfunc WithSearchPaths(paths ...string) Option {\n\treturn func(f *Factory) {\n\t\tf.searchPaths = NormalizePaths(paths...)\n\t}\n}\n\n// WithFilter sets the filter for the file locator\n// The filter is called for each candidate file and candidates that return nil are considered.\nfunc WithFilter(assert func(string) error) Option {\n\treturn func(f *Factory) {\n\t\tf.filter = assert\n\t}\n}\n\n// WithCount sets the maximum number of candidates to discover\nfunc WithCount(count int) Option {\n\treturn func(f *Factory) {\n\t\tf.count = count\n\t}\n}\n"
  },
  {
    "path": "pkg/lookup/factory_test.go",
    "content": "/**\n# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage lookup\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestNewFactory(t *testing.T) {\n\ttestCases := []struct {\n\t\tdesciption          string\n\t\toptions             []Option\n\t\texpectedSearchPaths []string\n\t}{\n\t\t{\n\t\t\tdesciption: \"search paths are expanded\",\n\t\t\toptions: []Option{\n\t\t\t\tWithSearchPaths(\"/foo:/bar\", \"/baz\"),\n\t\t\t},\n\t\t\texpectedSearchPaths: []string{\"/foo\", \"/bar\", \"/baz\"},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.desciption, func(t *testing.T) {\n\t\t\tf := NewFactory(\n\t\t\t\ttc.options...,\n\t\t\t)\n\t\t\trequire.EqualValues(t, tc.expectedSearchPaths, f.searchPaths)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "pkg/lookup/file.go",
    "content": "/*\n# Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n*/\n\npackage lookup\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n)\n\n// file can be used to locate file (or file-like elements) at a specified set of\n// prefixes. The validity of a file is determined by a filter function.\ntype file struct {\n\tlogger   logger.Interface\n\tcount    int\n\tfilter   func(string) error\n\tprefixes []string\n}\n\n// NewFileLocator creates a Locator that can be used to find files with the specified builder.\nfunc NewFileLocator(opts ...Option) Locator {\n\treturn NewFactory(opts...).NewFileLocator()\n}\n\nfunc (o Factory) NewFileLocator() Locator {\n\tf := file{\n\t\tlogger: o.logger,\n\t\tfilter: o.filter,\n\t\tcount:  o.count,\n\t\t// Since the `Locate` implementations rely on the root already being specified we update\n\t\t// the prefixes to include the root.\n\t\tprefixes: getSearchPrefixes(o.root, o.searchPaths...),\n\t}\n\treturn asRequired(&f)\n}\n\n// getSearchPrefixes generates a list of unique paths to be searched by a file locator.\n//\n// For each of the unique prefixes <p> specified, the path <root><p> is searched, where <root> is the\n// specified root. If no prefixes are specified, <root> is returned as the only search prefix.\n//\n// Note that an empty root is equivalent to searching relative to the current working directory, and\n// if the root filesystem should be searched instead, root should be specified as \"/\" explicitly.\n//\n// Also, a prefix of \"\" forces the root to be included in returned set of paths. This means that if\n// the root in addition to another prefix must be searched the function should be called with:\n//\n//\tgetSearchPrefixes(\"/root\", \"\", \"another/path\")\n//\n// and will result in the search paths []{\"/root\", \"/root/another/path\"} being returned.\nfunc getSearchPrefixes(root string, prefixes ...string) []string {\n\tseen := make(map[string]bool)\n\tvar uniquePrefixes []string\n\tfor _, p := range prefixes {\n\t\tif seen[p] {\n\t\t\tcontinue\n\t\t}\n\t\tseen[p] = true\n\t\tuniquePrefixes = append(uniquePrefixes, filepath.Join(root, p))\n\t}\n\n\tif len(uniquePrefixes) == 0 {\n\t\tuniquePrefixes = append(uniquePrefixes, root)\n\t}\n\n\treturn uniquePrefixes\n}\n\nvar _ Locator = (*file)(nil)\n\n// Locate attempts to find files with names matching the specified pattern.\n// All prefixes are searched and any matching candidates are returned. If no matches are found, an error is returned.\nfunc (p file) Locate(pattern string) ([]string, error) {\n\tvar filenames []string\n\n\tp.logger.Debugf(\"Locating %q in %v\", pattern, p.prefixes)\nvisit:\n\tfor _, prefix := range p.prefixes {\n\t\tpathPattern := filepath.Join(prefix, pattern)\n\t\tcandidates, err := filepath.Glob(pathPattern)\n\t\tif err != nil {\n\t\t\tp.logger.Debugf(\"Checking pattern '%v' failed: %v\", pathPattern, err)\n\t\t}\n\n\t\tfor _, candidate := range candidates {\n\t\t\tp.logger.Debugf(\"Checking candidate '%v'\", candidate)\n\t\t\terr := p.filter(candidate)\n\t\t\tif err != nil {\n\t\t\t\tp.logger.Debugf(\"Candidate '%v' does not meet requirements: %v\", candidate, err)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tfilenames = append(filenames, candidate)\n\t\t\tif p.count > 0 && len(filenames) == p.count {\n\t\t\t\tp.logger.Debugf(\"Found %d candidates; ignoring further candidates\", len(filenames))\n\t\t\t\tbreak visit\n\t\t\t}\n\t\t}\n\t}\n\n\treturn filenames, nil\n}\n\n// assertFile checks whether the specified path is a regular file\nfunc assertFile(filename string) error {\n\tinfo, err := os.Stat(filename)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"error getting info for %v: %v\", filename, err)\n\t}\n\n\tif info.IsDir() {\n\t\treturn fmt.Errorf(\"specified path '%v' is a directory\", filename)\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "pkg/lookup/file_test.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage lookup\n\nimport (\n\t\"fmt\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestGetSearchPrefixes(t *testing.T) {\n\ttestCases := []struct {\n\t\troot             string\n\t\tprefixes         []string\n\t\texpectedPrefixes []string\n\t}{\n\t\t{\n\t\t\troot:             \"\",\n\t\t\texpectedPrefixes: []string{\"\"},\n\t\t},\n\t\t{\n\t\t\troot:             \"/\",\n\t\t\texpectedPrefixes: []string{\"/\"},\n\t\t},\n\t\t{\n\t\t\troot:             \"/some/root\",\n\t\t\texpectedPrefixes: []string{\"/some/root\"},\n\t\t},\n\t\t{\n\t\t\troot:             \"\",\n\t\t\tprefixes:         []string{\"foo\", \"bar\"},\n\t\t\texpectedPrefixes: []string{\"foo\", \"bar\"},\n\t\t},\n\t\t{\n\t\t\troot:             \"/\",\n\t\t\tprefixes:         []string{\"foo\", \"bar\"},\n\t\t\texpectedPrefixes: []string{\"/foo\", \"/bar\"},\n\t\t},\n\t\t{\n\t\t\troot:             \"/\",\n\t\t\tprefixes:         []string{\"/foo\", \"/bar\"},\n\t\t\texpectedPrefixes: []string{\"/foo\", \"/bar\"},\n\t\t},\n\t\t{\n\t\t\troot:             \"/some/root\",\n\t\t\tprefixes:         []string{\"foo\", \"bar\"},\n\t\t\texpectedPrefixes: []string{\"/some/root/foo\", \"/some/root/bar\"},\n\t\t},\n\t\t{\n\t\t\troot:             \"\",\n\t\t\tprefixes:         []string{\"foo\", \"bar\", \"bar\", \"foo\"},\n\t\t\texpectedPrefixes: []string{\"foo\", \"bar\"},\n\t\t},\n\t\t{\n\t\t\troot:             \"/some/root\",\n\t\t\tprefixes:         []string{\"foo\", \"bar\", \"foo\", \"bar\"},\n\t\t\texpectedPrefixes: []string{\"/some/root/foo\", \"/some/root/bar\"},\n\t\t},\n\t}\n\n\tfor i, tc := range testCases {\n\t\tt.Run(fmt.Sprintf(\"%d\", i), func(t *testing.T) {\n\t\t\tprefixes := getSearchPrefixes(tc.root, tc.prefixes...)\n\t\t\trequire.EqualValues(t, tc.expectedPrefixes, prefixes)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "pkg/lookup/ldcache.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage lookup\n\nimport (\n\t\"fmt\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/ldcache\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/lookup/symlinks\"\n)\n\ntype ldcacheLocator struct {\n\tlogger logger.Interface\n\troot   string\n\n\tlibraries []string\n}\n\nvar _ Locator = (*ldcacheLocator)(nil)\n\n// newLdcacheLocator creates a locator that allows libraries to be found using\n// the ldcache.\nfunc (f *Factory) newLdcacheLocator() Locator {\n\tcache, err := ldcache.New(f.logger, f.root)\n\tif err != nil {\n\t\tf.logger.Warningf(\"Failed to load ldcache: %v\", err)\n\t\treturn notFound\n\t}\n\n\tvar libraries []string\n\t_, libs64 := cache.List()\n\tfor _, library := range libs64 {\n\t\tchain, err := symlinks.ResolveChain(library)\n\t\tif err != nil {\n\t\t\tf.logger.Warningf(\"Failed to resolve symlink chain for library %q: %v\", library, err)\n\t\t\tcontinue\n\t\t}\n\t\tlibraries = append(libraries, chain...)\n\t}\n\n\tl := &ldcacheLocator{\n\t\tlogger:    f.logger,\n\t\troot:      f.root,\n\t\tlibraries: libraries,\n\t}\n\n\treturn AsUnique(WithEvaluatedSymlinks(l))\n}\n\n// Locate finds the specified pattern in the libraries in the ldcache.\n// If the pattern is a path (includes a slash), the locator root is prefixed to\n// the pattern and libraries in the ldcache that match this pattern are\n// returned. If the pattern is a filename, the pattern is compared to the\n// basename of the libraries in the ldcache instead.\nfunc (l *ldcacheLocator) Locate(pattern string) ([]string, error) {\n\tmatcher := l.newPathPatternMatcher(pattern)\n\n\tvar matches []string\n\tfor _, library := range l.libraries {\n\t\tif !matcher.Match(library) {\n\t\t\tcontinue\n\t\t}\n\t\tmatches = append(matches, library)\n\t}\n\n\tif len(matches) == 0 {\n\t\treturn nil, fmt.Errorf(\"%s: %w\", pattern, ErrNotFound)\n\t}\n\n\treturn matches, nil\n}\n\ntype fullMatcher string\ntype basenameMatcher string\ntype matcher interface {\n\tMatch(string) bool\n}\n\nfunc (l *ldcacheLocator) newPathPatternMatcher(pattern string) matcher {\n\tif strings.Contains(pattern, \"/\") {\n\t\treturn fullMatcher(filepath.Join(l.root, pattern))\n\t}\n\treturn basenameMatcher(pattern)\n}\n\nfunc (m fullMatcher) Match(input string) bool {\n\tmatches, err := filepath.Match(string(m), input)\n\tif err != nil {\n\t\treturn false\n\t}\n\treturn matches\n}\n\nfunc (m basenameMatcher) Match(input string) bool {\n\treturn (fullMatcher)(m).Match(filepath.Base(input))\n}\n"
  },
  {
    "path": "pkg/lookup/ldcache_test.go",
    "content": "package lookup\n\nimport (\n\t\"path/filepath\"\n\t\"testing\"\n\n\ttestlog \"github.com/sirupsen/logrus/hooks/test\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/test\"\n)\n\nfunc TestLDCacheLookup(t *testing.T) {\n\tlogger, _ := testlog.NewNullLogger()\n\n\tmoduleRoot, err := test.GetModuleRoot()\n\trequire.NoError(t, err)\n\n\ttestCases := []struct {\n\t\trootFs        string\n\t\tinputs        []string\n\t\texpected      string\n\t\texpectedError error\n\t}{\n\t\t{\n\t\t\trootFs:        \"rootfs-empty\",\n\t\t\tinputs:        []string{\"libcuda.so.1\", \"libcuda.so.*\", \"libcuda.so.*.*\", \"libcuda.so.999.88.77\"},\n\t\t\texpectedError: ErrNotFound,\n\t\t},\n\t\t{\n\t\t\trootFs: \"rootfs-1\",\n\t\t\tinputs: []string{\n\t\t\t\t\"libcuda.so.1\",\n\t\t\t\t\"libcuda.so.*\",\n\t\t\t\t\"libcuda.so.*.*\",\n\t\t\t\t\"libcuda.so.999.88.77\",\n\t\t\t\t\"/lib/x86_64-linux-gnu/libcuda.so.1\",\n\t\t\t\t\"/lib/x86_64-linux-gnu/libcuda.so.*\",\n\t\t\t\t\"/lib/x86_64-linux-gnu/libcuda.so.*.*\",\n\t\t\t\t\"/lib/x86_64-linux-gnu/libcuda.so.999.88.77\",\n\t\t\t},\n\t\t\texpected: \"/lib/x86_64-linux-gnu/libcuda.so.999.88.77\",\n\t\t},\n\t\t{\n\t\t\trootFs: \"rootfs-2\",\n\t\t\tinputs: []string{\n\t\t\t\t\"libcuda.so.1\",\n\t\t\t\t\"libcuda.so.*\",\n\t\t\t\t\"libcuda.so.*.*\",\n\t\t\t\t\"libcuda.so.999.88.77\",\n\t\t\t\t\"/var/lib/nvidia/lib64/libcuda.so.1\",\n\t\t\t\t\"/var/lib/nvidia/lib64/libcuda.so.*\",\n\t\t\t\t\"/var/lib/nvidia/lib64/libcuda.so.*.*\",\n\t\t\t\t\"/var/lib/nvidia/lib64/libcuda.so.999.88.77\",\n\t\t\t},\n\t\t\texpected: \"/var/lib/nvidia/lib64/libcuda.so.999.88.77\",\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tfor _, input := range tc.inputs {\n\t\t\tt.Run(tc.rootFs+\" \"+input, func(t *testing.T) {\n\t\t\t\trootfs := filepath.Join(moduleRoot, \"testdata\", \"lookup\", tc.rootFs)\n\t\t\t\tl := NewFactory(\n\t\t\t\t\tWithLogger(logger),\n\t\t\t\t\tWithRoot(rootfs),\n\t\t\t\t).newLdcacheLocator()\n\n\t\t\t\tcandidates, err := l.Locate(input)\n\t\t\t\trequire.ErrorIs(t, err, tc.expectedError)\n\t\t\t\tif tc.expectedError == nil {\n\t\t\t\t\trequire.Equal(t, []string{filepath.Join(rootfs, tc.expected)}, candidates)\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "pkg/lookup/library.go",
    "content": "/*\n# Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n*/\n\npackage lookup\n\n// NewLibraryLocator creates a library locator using the specified options.\n// If search paths (WithSearchPaths(path1, path2, ...)) are explicitly specified\n// a library locator using these as absolute paths are used. Otherwise the\n// library is constructed using the following ordering, returning the first\n// successful result:\n//   - attempt to locate the library / pattern using dlopen\n//   - attempt to locate the library from a set of predefined search paths.\n//   - attempt to locate the library from the ldcache.\nfunc NewLibraryLocator(opts ...Option) Locator {\n\tf := NewFactory(opts...)\n\n\t// If search paths are already specified, we return a locator for the specified search paths.\n\tif len(f.searchPaths) > 0 {\n\t\treturn NewSymlinkLocator(\n\t\t\tWithLogger(f.logger),\n\t\t\tWithSearchPaths(f.searchPaths...),\n\t\t\tWithRoot(\"/\"),\n\t\t)\n\t}\n\topts = append(opts,\n\t\tWithSearchPaths([]string{\n\t\t\t\"/\",\n\t\t\t\"/usr/lib64\",\n\t\t\t\"/usr/lib/x86_64-linux-gnu\",\n\t\t\t\"/usr/lib/aarch64-linux-gnu\",\n\t\t\t\"/usr/lib/x86_64-linux-gnu/nvidia/current\",\n\t\t\t\"/usr/lib/aarch64-linux-gnu/nvidia/current\",\n\t\t\t\"/lib64\",\n\t\t\t\"/lib/x86_64-linux-gnu\",\n\t\t\t\"/lib/aarch64-linux-gnu\",\n\t\t\t\"/lib/x86_64-linux-gnu/nvidia/current\",\n\t\t\t\"/lib/aarch64-linux-gnu/nvidia/current\",\n\t\t}...),\n\t)\n\tl := First(\n\t\tNewSymlinkLocator(opts...),\n\t\tf.newLdcacheLocator(),\n\t)\n\treturn l\n}\n"
  },
  {
    "path": "pkg/lookup/library_test.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage lookup\n\nimport (\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"testing\"\n\n\ttestlog \"github.com/sirupsen/logrus/hooks/test\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestLibraryLocator(t *testing.T) {\n\tlogger, _ := testlog.NewNullLogger()\n\n\ttestDir := t.TempDir()\n\tsymlinkDir := filepath.Join(testDir, \"/lib/symlink\")\n\trequire.NoError(t, os.MkdirAll(symlinkDir, 0755))\n\n\tversionLib := filepath.Join(symlinkDir, \"libcuda.so.1.2.3\")\n\tsoLink := filepath.Join(symlinkDir, \"libcuda.so\")\n\tsonameLink := filepath.Join(symlinkDir, \"libcuda.so.1\")\n\n\tf, err := os.Create(versionLib)\n\trequire.NoError(t, err)\n\tf.Close()\n\trequire.NoError(t, os.Symlink(versionLib, sonameLink))\n\trequire.NoError(t, os.Symlink(sonameLink, soLink))\n\n\t// We create a set of symlinks for duplicate resolution\n\tlibTarget1 := filepath.Join(symlinkDir, \"libtarget.so.1.2.3\")\n\tsource1 := filepath.Join(symlinkDir, \"libsource1.so\")\n\tsource2 := filepath.Join(symlinkDir, \"libsource2.so\")\n\n\ttarget1, err := os.Create(libTarget1)\n\trequire.NoError(t, err)\n\ttarget1.Close()\n\trequire.NoError(t, os.Symlink(libTarget1, source1))\n\trequire.NoError(t, os.Symlink(source1, source2))\n\n\ttestCases := []struct {\n\t\tdescription        string\n\t\tlibname            string\n\t\tlibrarySearchPaths []string\n\t\texpected           []string\n\t\texpectedError      error\n\t}{\n\t\t{\n\t\t\tdescription: \"slash in path resoves symlink\",\n\t\t\tlibname:     \"/lib/symlink/libcuda.so\",\n\t\t\texpected:    []string{filepath.Join(testDir, \"/lib/symlink/libcuda.so.1.2.3\")},\n\t\t},\n\t\t{\n\t\t\tdescription: \"slash in path resoves symlink\",\n\t\t\tlibname:     \"/lib/symlink/libcuda.so.1\",\n\t\t\texpected:    []string{filepath.Join(testDir, \"/lib/symlink/libcuda.so.1.2.3\")},\n\t\t},\n\t\t{\n\t\t\tdescription: \"slash in path with pattern resolves symlinks\",\n\t\t\tlibname:     \"/lib/symlink/libcuda.so.*\",\n\t\t\texpected:    []string{filepath.Join(testDir, \"/lib/symlink/libcuda.so.1.2.3\")},\n\t\t},\n\t\t{\n\t\t\tdescription:   \"library not found returns error\",\n\t\t\tlibname:       \"/lib/symlink/libnotcuda.so\",\n\t\t\texpectedError: ErrNotFound,\n\t\t},\n\t\t{\n\t\t\tdescription: \"slash in path with pattern resoves symlink\",\n\t\t\tlibname:     \"/lib/symlink/libcuda.so.*.*.*\",\n\t\t\texpected:    []string{filepath.Join(testDir, \"/lib/symlink/libcuda.so.1.2.3\")},\n\t\t},\n\t\t{\n\t\t\tdescription: \"symlinks are deduplicated\",\n\t\t\tlibname:     \"/lib/symlink/libsource*.so\",\n\t\t\texpected:    []string{filepath.Join(testDir, \"/lib/symlink/libtarget.so.1.2.3\")},\n\t\t},\n\t\t{\n\t\t\tdescription: \"pattern resolves to multiple targets\",\n\t\t\tlibname:     \"/lib/symlink/lib*.so.1.2.3\",\n\t\t\texpected: []string{\n\t\t\t\tfilepath.Join(testDir, \"/lib/symlink/libcuda.so.1.2.3\"),\n\t\t\t\tfilepath.Join(testDir, \"/lib/symlink/libtarget.so.1.2.3\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription:        \"search paths are searched\",\n\t\t\tlibname:            \"lib*.so.1.2.3\",\n\t\t\tlibrarySearchPaths: []string{filepath.Join(testDir, \"/lib/symlink\")},\n\t\t\texpected: []string{\n\t\t\t\tfilepath.Join(testDir, \"/lib/symlink/libcuda.so.1.2.3\"),\n\t\t\t\tfilepath.Join(testDir, \"/lib/symlink/libtarget.so.1.2.3\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription:        \"search paths are absolute to root\",\n\t\t\tlibname:            \"lib*.so.1.2.3\",\n\t\t\tlibrarySearchPaths: []string{\"/lib/symlink\"},\n\t\t\texpectedError:      ErrNotFound,\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\tlut := NewLibraryLocator(\n\t\t\t\tWithLogger(logger),\n\t\t\t\tWithRoot(testDir),\n\t\t\t\tWithSearchPaths(tc.librarySearchPaths...),\n\t\t\t)\n\n\t\t\tcandidates, err := lut.Locate(tc.libname)\n\t\t\trequire.ErrorIs(t, err, tc.expectedError)\n\n\t\t\tvar cleanedCandidates []string\n\t\t\tfor _, c := range candidates {\n\t\t\t\t// On MacOS /var and /tmp symlink to /private/var and /private/tmp which is included in the resolved path.\n\t\t\t\tcleanedCandidates = append(cleanedCandidates, strings.TrimPrefix(c, \"/private\"))\n\t\t\t}\n\t\t\trequire.EqualValues(t, tc.expected, cleanedCandidates)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "pkg/lookup/locator.go",
    "content": "/*\n# Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n*/\n\npackage lookup\n\nimport \"errors\"\n\n//go:generate moq -rm -fmt=goimports -stub -out locator_mock.go . Locator\n\n// Locator defines the interface for locating files on a system.\ntype Locator interface {\n\tLocate(string) ([]string, error)\n}\n\n// ErrNotFound indicates that a specified pattern or file could not be found.\nvar ErrNotFound = errors.New(\"not found\")\n"
  },
  {
    "path": "pkg/lookup/locator_mock.go",
    "content": "// Code generated by moq; DO NOT EDIT.\n// github.com/matryer/moq\n\npackage lookup\n\nimport (\n\t\"sync\"\n)\n\n// Ensure, that LocatorMock does implement Locator.\n// If this is not the case, regenerate this file with moq.\nvar _ Locator = &LocatorMock{}\n\n// LocatorMock is a mock implementation of Locator.\n//\n//\tfunc TestSomethingThatUsesLocator(t *testing.T) {\n//\n//\t\t// make and configure a mocked Locator\n//\t\tmockedLocator := &LocatorMock{\n//\t\t\tLocateFunc: func(s string) ([]string, error) {\n//\t\t\t\tpanic(\"mock out the Locate method\")\n//\t\t\t},\n//\t\t}\n//\n//\t\t// use mockedLocator in code that requires Locator\n//\t\t// and then make assertions.\n//\n//\t}\ntype LocatorMock struct {\n\t// LocateFunc mocks the Locate method.\n\tLocateFunc func(s string) ([]string, error)\n\n\t// calls tracks calls to the methods.\n\tcalls struct {\n\t\t// Locate holds details about calls to the Locate method.\n\t\tLocate []struct {\n\t\t\t// S is the s argument value.\n\t\t\tS string\n\t\t}\n\t}\n\tlockLocate sync.RWMutex\n}\n\n// Locate calls LocateFunc.\nfunc (mock *LocatorMock) Locate(s string) ([]string, error) {\n\tcallInfo := struct {\n\t\tS string\n\t}{\n\t\tS: s,\n\t}\n\tmock.lockLocate.Lock()\n\tmock.calls.Locate = append(mock.calls.Locate, callInfo)\n\tmock.lockLocate.Unlock()\n\tif mock.LocateFunc == nil {\n\t\tvar (\n\t\t\tstringsOut []string\n\t\t\terrOut     error\n\t\t)\n\t\treturn stringsOut, errOut\n\t}\n\treturn mock.LocateFunc(s)\n}\n\n// LocateCalls gets all the calls that were made to Locate.\n// Check the length with:\n//\n//\tlen(mockedLocator.LocateCalls())\nfunc (mock *LocatorMock) LocateCalls() []struct {\n\tS string\n} {\n\tvar calls []struct {\n\t\tS string\n\t}\n\tmock.lockLocate.RLock()\n\tcalls = mock.calls.Locate\n\tmock.lockLocate.RUnlock()\n\treturn calls\n}\n"
  },
  {
    "path": "pkg/lookup/merge.go",
    "content": "/**\n# Copyright 2023 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage lookup\n\nimport (\n\t\"errors\"\n)\n\ntype first []Locator\n\ntype unique struct {\n\tlocator Locator\n}\n\n// First returns a locator that returns the first non-empty match\nfunc First(locators ...Locator) Locator {\n\tvar f first\n\tfor _, l := range locators {\n\t\tif l == nil {\n\t\t\tcontinue\n\t\t}\n\t\tf = append(f, l)\n\t}\n\treturn f\n}\n\n// Locate returns the results for the first locator that returns a non-empty non-error result.\nfunc (f first) Locate(pattern string) ([]string, error) {\n\tvar allErrors []error\n\tfor _, l := range f {\n\t\tif l == nil {\n\t\t\tcontinue\n\t\t}\n\t\tcandidates, err := l.Locate(pattern)\n\t\tif err != nil {\n\t\t\tallErrors = append(allErrors, err)\n\t\t\tcontinue\n\t\t}\n\t\tif len(candidates) > 0 {\n\t\t\treturn candidates, nil\n\t\t}\n\t}\n\n\treturn nil, errors.Join(allErrors...)\n}\n\nfunc AsUnique(locator Locator) Locator {\n\treturn &unique{\n\t\tlocator: locator,\n\t}\n}\n\n// Locate returns the unique candidates from the wrapped Locator.\nfunc (l *unique) Locate(pattern string) ([]string, error) {\n\tcandidates, err := l.locator.Locate(pattern)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar uniqueCandidates []string\n\tseen := make(map[string]bool)\n\tfor _, candidate := range candidates {\n\t\tif seen[candidate] {\n\t\t\tcontinue\n\t\t}\n\t\tseen[candidate] = true\n\t\tuniqueCandidates = append(uniqueCandidates, candidate)\n\t}\n\n\treturn uniqueCandidates, nil\n}\n"
  },
  {
    "path": "pkg/lookup/null.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage lookup\n\nimport \"fmt\"\n\nconst (\n\tnotFound = notFoundLocator(\"\")\n)\n\n// A notFoundLocator always returns an ErrNotFound error.\ntype notFoundLocator string\n\nfunc (l notFoundLocator) Locate(s string) ([]string, error) {\n\treturn nil, l.NewError(s)\n}\n\nfunc (l notFoundLocator) NewError(s string) error {\n\treturn fmt.Errorf(\"%s: %w\", s, ErrNotFound)\n}\n"
  },
  {
    "path": "pkg/lookup/optional.go",
    "content": "/**\n# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage lookup\n\nimport (\n\t\"errors\"\n)\n\ntype optionalLocator struct {\n\twraps Locator\n}\n\n// AsOptional converts the specified Locator to a Locator that does not raise an\n// error if no candidate can be found for a specified pattern.\nfunc AsOptional(l Locator) Locator {\n\treturn &optionalLocator{\n\t\twraps: l,\n\t}\n}\n\nfunc (l *optionalLocator) Locate(pattern string) ([]string, error) {\n\tcandidates, err := l.wraps.Locate(pattern)\n\tif errors.Is(err, ErrNotFound) {\n\t\treturn nil, nil\n\t}\n\treturn candidates, err\n}\n\ntype requiredLocator struct {\n\twraps Locator\n}\n\nfunc asRequired(l Locator) Locator {\n\treturn &requiredLocator{\n\t\twraps: l,\n\t}\n}\n\nfunc (l *requiredLocator) Locate(pattern string) ([]string, error) {\n\tcandidates, err := l.wraps.Locate(pattern)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif len(candidates) == 0 {\n\t\treturn nil, notFound.NewError(pattern)\n\t}\n\treturn candidates, nil\n}\n"
  },
  {
    "path": "pkg/lookup/path.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage lookup\n\nimport (\n\t\"os\"\n\t\"path\"\n\t\"path/filepath\"\n\t\"strings\"\n)\n\nconst (\n\tenvPath = \"PATH\"\n)\n\nvar (\n\tdefaultPATH = []string{\"/usr/local/sbin\", \"/usr/local/bin\", \"/usr/sbin\", \"/usr/bin\", \"/sbin\", \"/bin\"}\n)\n\n// GetPaths returns a list of paths for a specified root. These are constructed from the\n// PATH environment variable, a default path list, and the supplied root.\nfunc GetPaths(root string) []string {\n\tdirs := NormalizePaths(os.Getenv(envPath))\n\n\tinDirs := make(map[string]bool)\n\tfor _, d := range dirs {\n\t\tinDirs[d] = true\n\t}\n\n\t// directories from the environment have higher precedence\n\tfor _, d := range defaultPATH {\n\t\tif inDirs[d] {\n\t\t\t// We don't add paths that are already included\n\t\t\tcontinue\n\t\t}\n\t\tdirs = append(dirs, d)\n\t}\n\n\tif root != \"\" && root != \"/\" {\n\t\trootDirs := []string{}\n\t\tfor _, dir := range dirs {\n\t\t\trootDirs = append(rootDirs, path.Join(root, dir))\n\t\t}\n\t\t// directories with the root prefix have higher precedence\n\t\tdirs = append(rootDirs, dirs...)\n\t}\n\n\treturn dirs\n}\n\n// GetPath returns a colon-separated path value that can be used to set the PATH\n// environment variable\nfunc GetPath(root string) string {\n\treturn strings.Join(GetPaths(root), \":\")\n}\n\n// NormalizePaths takes a list of paths and normalizes these.\n// Each of the elements in the list is expanded, meaning that if it consists of\n// strings separated by the platform-specific path separator, the element is\n// converted to a list by splitting on the separator.\n// This allows for the contents of envvironment variables such as `PATH` or\n// `LD_LIBRARY_PATH` to be processed allongside other explicit strings.\nfunc NormalizePaths(paths ...string) []string {\n\tvar normalized []string\n\tfor _, path := range paths {\n\t\tnormalized = append(normalized, filepath.SplitList(path)...)\n\t}\n\treturn normalized\n}\n"
  },
  {
    "path": "pkg/lookup/symlinks/symlink.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage symlinks\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n)\n\n// Resolve returns the link target of the specified filename or the filename if it is not a link.\nfunc Resolve(filename string) (string, error) {\n\tinfo, err := os.Lstat(filename)\n\tif err != nil {\n\t\treturn filename, fmt.Errorf(\"failed to get file info: %w\", err)\n\t}\n\tif info.Mode()&os.ModeSymlink == 0 {\n\t\treturn filename, nil\n\t}\n\n\treturn os.Readlink(filename)\n}\n\n// ResolveChain returns the resolved symlink chain starting with the specified\n// link.\n// The symlink chain for a regular file consists of only the regular file.\nfunc ResolveChain(filename string) ([]string, error) {\n\tseen := make(map[string]bool)\n\tvar chain []string\n\n\tfor {\n\t\ttarget, err := Resolve(filename)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif seen[filename] {\n\t\t\treturn chain, nil\n\t\t}\n\t\tseen[filename] = true\n\t\tchain = append(chain, filename)\n\t\tif !filepath.IsAbs(target) {\n\t\t\ttarget, err = filepath.Abs(filepath.Join(filepath.Dir(filename), target))\n\t\t\tif err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"failed to construct absolute path: %v\", err)\n\t\t\t}\n\t\t}\n\t\tfilename = target\n\t}\n}\n\n// ForceCreate creates a specified symlink.\n// If a file (or empty directory) exists at the path it is removed.\nfunc ForceCreate(target string, link string) error {\n\t_, err := os.Lstat(link)\n\tif err != nil && !os.IsNotExist(err) {\n\t\treturn fmt.Errorf(\"failed to get file info: %w\", err)\n\t}\n\tif !os.IsNotExist(err) {\n\t\tif err := os.Remove(link); err != nil {\n\t\t\treturn fmt.Errorf(\"failed to remove existing file: %w\", err)\n\t\t}\n\t}\n\treturn os.Symlink(target, link)\n}\n"
  },
  {
    "path": "pkg/lookup/symlinks.go",
    "content": "/**\n# Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage lookup\n\nimport (\n\t\"fmt\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/lookup/symlinks\"\n)\n\ntype symlinkChain struct {\n\tlogger  logger.Interface\n\tlocator Locator\n}\n\ntype symlink struct {\n\tlocator Locator\n}\n\n// NewSymlinkChainLocator creats a locator that can be used for locating files through symlinks.\nfunc NewSymlinkChainLocator(opts ...Option) Locator {\n\tf := NewFactory(opts...)\n\tl := &symlinkChain{\n\t\tlogger:  f.logger,\n\t\tlocator: f.NewFileLocator(),\n\t}\n\n\treturn l\n}\n\n// NewSymlinkLocator creats a locator that can be used for locating files through symlinks.\nfunc NewSymlinkLocator(opts ...Option) Locator {\n\tf := NewFactory(opts...)\n\treturn AsUnique(WithEvaluatedSymlinks(f.NewFileLocator()))\n}\n\n// WithEvaluatedSymlinks wraps a locator in one that ensures that returned\n// symlinks are resolved.\nfunc WithEvaluatedSymlinks(locator Locator) Locator {\n\tl := symlink{\n\t\tlocator: locator,\n\t}\n\treturn &l\n}\n\n// Locate finds the specified pattern at the specified root.\n// If the file is a symlink, the link is followed and all candidates to the final target are returned.\nfunc (p symlinkChain) Locate(pattern string) ([]string, error) {\n\tcandidates, err := p.locator.Locate(pattern)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tvar filenames []string\n\tfound := make(map[string]bool)\n\n\tfor _, candidate := range candidates {\n\t\tif found[candidate] {\n\t\t\tcontinue\n\t\t}\n\t\ttargets, err := symlinks.ResolveChain(candidate)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"error resolving symlink chain: %w\", err)\n\t\t}\n\t\tif len(targets) > 0 {\n\t\t\tp.logger.Debugf(\"Resolved link: %v\", strings.Join(targets, \" => \"))\n\t\t}\n\t\tfor _, target := range targets {\n\t\t\tif found[target] {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tfound[target] = true\n\t\t\tfilenames = append(filenames, target)\n\t\t}\n\t}\n\treturn filenames, nil\n}\n\n// Locate finds the specified pattern at the specified root.\n// If the file is a symlink, the link is resolved and the target returned.\nfunc (p symlink) Locate(pattern string) ([]string, error) {\n\tcandidates, err := p.locator.Locate(pattern)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar targets []string\n\tfor _, candidate := range candidates {\n\t\ttarget, err := filepath.EvalSymlinks(candidate)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed to resolve link: %w\", err)\n\t\t}\n\t\ttargets = append(targets, target)\n\t}\n\treturn targets, err\n}\n"
  },
  {
    "path": "pkg/nvcdi/api.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage nvcdi\n\nimport (\n\t\"tags.cncf.io/container-device-interface/pkg/cdi\"\n\t\"tags.cncf.io/container-device-interface/specs-go\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/discover\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/nvcdi/spec\"\n)\n\n// Interface defines the API for the nvcdi package\ntype Interface interface {\n\tSpecGenerator\n\tGetCommonEdits() (*cdi.ContainerEdits, error)\n\tGetDeviceSpecsByID(...string) ([]specs.Device, error)\n\t// Deprecated: GetAllDeviceSpecs is deprecated. Use GetDeviceSpecsByID(\"all\") instead.\n\tGetAllDeviceSpecs() ([]specs.Device, error)\n}\n\n// A SpecGenerator is used to generate a complete CDI spec for a collected set\n// of devices.\ntype SpecGenerator interface {\n\tGetSpec(...string) (spec.Interface, error)\n}\n\n// A DeviceSpecGenerator is used to generate the specs for one or more devices.\ntype DeviceSpecGenerator interface {\n\tGetDeviceSpecs() ([]specs.Device, error)\n}\n\n// A HookName represents one of the predefined NVIDIA CDI hooks.\ntype HookName = discover.HookName\n\nconst (\n\t// AllHooks is a special hook name that allows all hooks to be matched.\n\tAllHooks = discover.AllHooks\n\n\t// A CreateSymlinksHook is used to create symlinks in the container.\n\tCreateSymlinksHook = discover.CreateSymlinksHook\n\t// DisableDeviceNodeModificationHook refers to the hook used to ensure that\n\t// device nodes are not created by libnvidia-ml.so or nvidia-smi in a\n\t// container.\n\t// Added in v1.17.8\n\tDisableDeviceNodeModificationHook = discover.DisableDeviceNodeModificationHook\n\t// An EnableCudaCompatHook is used to enabled CUDA Forward Compatibility.\n\t// Added in v1.17.5\n\tEnableCudaCompatHook = discover.EnableCudaCompatHook\n\t// An UpdateLDCacheHook is used to update the ldcache in the container.\n\tUpdateLDCacheHook = discover.UpdateLDCacheHook\n\n\t// Deprecated: Use CreateSymlinksHook instead.\n\tHookCreateSymlinks = CreateSymlinksHook\n\t// Deprecated: Use EnableCudaCompatHook instead.\n\tHookEnableCudaCompat = EnableCudaCompatHook\n\t// Deprecated: Use UpdateLDCacheHook instead.\n\tHookUpdateLDCache = UpdateLDCacheHook\n)\n\n// A FeatureFlag refers to a specific feature that can be toggled in the CDI api.\n// All features are off by default.\ntype FeatureFlag string\n\nconst (\n\t// FeatureEnableExplicitDriverLibraries enables the inclusion of a list of\n\t// explicit driver libraries.\n\tFeatureEnableExplicitDriverLibraries = FeatureFlag(\"enable-explicit-driver-libraries\")\n\n\t// FeatureDisableNvsandboxUtils disables the use of nvsandboxutils when\n\t// querying devices.\n\tFeatureDisableNvsandboxUtils = FeatureFlag(\"disable-nvsandboxutils\")\n\n\t// FeatureEnableCoherentAnnotations enables the addition of annotations\n\t// coherent or non-coherent devices.\n\tFeatureEnableCoherentAnnotations = FeatureFlag(\"enable-coherent-annotations\")\n\n\t// FeatureDisableMultipleCSVDevices disables the handling of multiple devices\n\t// in CSV mode.\n\tFeatureDisableMultipleCSVDevices = FeatureFlag(\"disable-multiple-csv-devices\")\n\n\t// FeatureNoAdditionalGIDsForDeviceNodes disables the injection of additional GIDs\n\t// for a device node when the node is not readable and writable by the user.\n\tFeatureNoAdditionalGIDsForDeviceNodes = FeatureFlag(\"no-additional-gids-for-device-nodes\")\n)\n"
  },
  {
    "path": "pkg/nvcdi/common-nvml.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage nvcdi\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/discover\"\n)\n\n// newCommonNVMLDiscoverer returns a discoverer for entities that are not associated with a specific CDI device.\n// This includes driver libraries and meta devices, for example.\nfunc (l *nvmllib) newCommonNVMLDiscoverer() (discover.Discover, error) {\n\tmetaDevices := l.controlDeviceNodeDiscoverer()\n\n\tgraphicsMounts, err := discover.NewGraphicsMountsDiscoverer(l.logger, l.driver, l.hookCreator)\n\tif err != nil {\n\t\tl.logger.Warningf(\"failed to create discoverer for graphics mounts: %v\", err)\n\t}\n\n\tdriverFiles, err := l.NewDriverDiscoverer()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to create discoverer for driver files: %v\", err)\n\t}\n\n\td := discover.Merge(\n\t\tmetaDevices,\n\t\tgraphicsMounts,\n\t\tdriverFiles,\n\t)\n\n\treturn d, nil\n}\n\nfunc (l *nvmllib) controlDeviceNodeDiscoverer() discover.Discover {\n\treturn discover.NewCharDeviceDiscoverer(\n\t\tl.logger,\n\t\tl.driver.DevRoot,\n\t\t[]string{\n\t\t\t\"/dev/nvidia-modeset\",\n\t\t\t\"/dev/nvidia-uvm-tools\",\n\t\t\t\"/dev/nvidia-uvm\",\n\t\t\t\"/dev/nvidiactl\",\n\t\t},\n\t)\n}\n"
  },
  {
    "path": "pkg/nvcdi/device-wsl.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage nvcdi\n\nimport (\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/discover\"\n)\n\nconst (\n\tdxgDeviceNode = \"/dev/dxg\"\n)\n\n// newDXGDeviceDiscoverer returns a Discoverer for DXG devices under WSL2.\nfunc (l *wsllib) newDXGDeviceDiscoverer() discover.Discover {\n\tdeviceNodes := discover.NewCharDeviceDiscoverer(\n\t\tl.logger,\n\t\tl.driver.DevRoot,\n\t\t[]string{dxgDeviceNode},\n\t)\n\n\treturn deviceNodes\n}\n"
  },
  {
    "path": "pkg/nvcdi/driver-nvml.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage nvcdi\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"golang.org/x/sys/unix\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/discover\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/lookup\"\n)\n\n// NewDriverDiscoverer creates a discoverer for the libraries and binaries associated with a driver installation.\n// The supplied NVML Library is used to query the expected driver version.\nfunc (l *nvmllib) NewDriverDiscoverer() (discover.Discover, error) {\n\treturn (*nvcdilib)(l).newDriverVersionDiscoverer()\n}\n\nfunc (l *nvcdilib) newDriverVersionDiscoverer() (discover.Discover, error) {\n\tversion, err := l.driver.Version()\n\tif err != nil || version == \"\" || version == \"*.*\" {\n\t\treturn nil, fmt.Errorf(\"failed to determine driver version (%q): %w\", version, err)\n\t}\n\n\tlibcudasoParentDirPath, err := l.driver.GetDriverLibDirectory()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to get libcuda.so parent path: %w\", err)\n\t}\n\n\tlibraries, err := l.NewDriverLibraryDiscoverer(version, libcudasoParentDirPath)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to create discoverer for driver libraries: %v\", err)\n\t}\n\n\tipcs, err := discover.NewIPCDiscoverer(l.logger, l.driver.Root)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to create discoverer for IPC sockets: %v\", err)\n\t}\n\n\tfirmwares, err := l.newDriverFirmwareDiscoverer(version)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to create discoverer for GSP firmware: %v\", err)\n\t}\n\n\tbinaries := l.newDriverBinariesDiscoverer()\n\n\td := discover.Merge(\n\t\tlibraries,\n\t\tipcs,\n\t\tfirmwares,\n\t\tbinaries,\n\t)\n\n\treturn d, nil\n}\n\n// NewDriverLibraryDiscoverer creates a discoverer for the libraries associated with the specified driver version.\nfunc (l *nvcdilib) NewDriverLibraryDiscoverer(version string, libcudaSoParentDirPath string) (discover.Discover, error) {\n\tversionSuffixLibraryMounts, err := l.getVersionSuffixDriverLibraryMounts(version)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\texplicitLibraryMounts, err := l.getExplicitDriverLibraryMounts()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tlibraries := discover.Merge(\n\t\tversionSuffixLibraryMounts,\n\t\texplicitLibraryMounts,\n\t)\n\n\tvar discoverers []discover.Discover\n\n\tdriverDotSoSymlinksDiscoverer := discover.WithDriverDotSoSymlinks(\n\t\tl.logger,\n\t\tlibraries,\n\t\t// Since we don't only match version suffixes, we now need to match on wildcards.\n\t\t\"\",\n\t\tl.hookCreator,\n\t)\n\tdiscoverers = append(discoverers, driverDotSoSymlinksDiscoverer)\n\n\tcudaCompatLibHookDiscoverer := discover.NewCUDACompatHookDiscoverer(l.logger, l.hookCreator, &discover.EnableCUDACompatHookOptions{HostDriverVersion: version})\n\tdiscoverers = append(discoverers, cudaCompatLibHookDiscoverer)\n\n\tupdateLDCache, _ := discover.NewLDCacheUpdateHook(l.logger, libraries, l.hookCreator)\n\tdiscoverers = append(discoverers, updateLDCache)\n\n\tdisableDeviceNodeModification := l.hookCreator.Create(DisableDeviceNodeModificationHook)\n\tdiscoverers = append(discoverers, disableDeviceNodeModification)\n\n\tdriverLibDirectory, err := l.driver.GetDriverLibDirectory()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to get libcuda.so parent directory path: %w\", err)\n\t}\n\tenvironmentVariable := &discover.EnvVar{\n\t\tName:  \"NVIDIA_CTK_LIBCUDA_DIR\",\n\t\tValue: driverLibDirectory,\n\t}\n\tdiscoverers = append(discoverers, environmentVariable)\n\n\td := discover.Merge(discoverers...)\n\n\treturn d, nil\n}\n\nfunc (l *nvcdilib) getVersionSuffixDriverLibraryMounts(version string) (discover.Discover, error) {\n\tversionSuffixLibraryPaths, err := l.getVersionLibs(version)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to get libraries for driver version: %v\", err)\n\t}\n\n\tmounts := discover.NewMounts(\n\t\tl.logger,\n\t\tlookup.NewFileLocator(\n\t\t\tlookup.WithLogger(l.logger),\n\t\t\tlookup.WithRoot(l.driver.Root),\n\t\t),\n\t\tl.driver.Root,\n\t\tversionSuffixLibraryPaths,\n\t)\n\n\treturn mounts, nil\n}\n\nfunc (l *nvcdilib) getExplicitDriverLibraryMounts() (discover.Discover, error) {\n\tif !l.featureFlags[FeatureEnableExplicitDriverLibraries] {\n\t\treturn nil, nil\n\t}\n\n\t// List of explicit libraries to locate\n\t// TODO(ArangoGutierrez): we should load the version of the libraries from\n\t// the sandboxutils-filelist or have a way to allow users to specify the\n\t// libraries to mount from the config file.\n\texplicitLibraries := []string{\n\t\t\"libEGL.so\",\n\t\t\"libGL.so\",\n\t\t\"libGLESv1_CM.so\",\n\t\t\"libGLESv2.so\",\n\t\t\"libGLX.so\",\n\t\t\"libGLdispatch.so\",\n\t\t\"libOpenCL.so\",\n\t\t\"libOpenGL.so\",\n\t\t\"libnvidia-api.so\",\n\t\t\"libnvidia-egl-xcb.so\",\n\t\t\"libnvidia-egl-xlib.so\",\n\t}\n\n\tdriverLibraryLocator, err := l.driver.DriverLibraryLocator()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to get driver library locator: %w\", err)\n\t}\n\tmounts := discover.NewMounts(\n\t\tl.logger,\n\t\tdriverLibraryLocator,\n\t\tl.driver.Root,\n\t\texplicitLibraries,\n\t)\n\n\treturn mounts, nil\n\n}\n\nfunc getUTSRelease() (string, error) {\n\tutsname := &unix.Utsname{}\n\tif err := unix.Uname(utsname); err != nil {\n\t\treturn \"\", err\n\t}\n\treturn unix.ByteSliceToString(utsname.Release[:]), nil\n}\n\nfunc getFirmwareSearchPaths(logger logger.Interface) ([]string, error) {\n\n\tvar firmwarePaths []string\n\tif p := getCustomFirmwareClassPath(logger); p != \"\" {\n\t\tlogger.Debugf(\"using custom firmware class path: %s\", p)\n\t\tfirmwarePaths = append(firmwarePaths, p)\n\t}\n\n\tutsRelease, err := getUTSRelease()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to get UTS_RELEASE: %v\", err)\n\t}\n\n\tstandardPaths := []string{\n\t\tfilepath.Join(\"/lib/firmware/updates/\", utsRelease),\n\t\t\"/lib/firmware/updates/\",\n\t\tfilepath.Join(\"/lib/firmware/\", utsRelease),\n\t\t\"/lib/firmware/\",\n\t}\n\n\treturn append(firmwarePaths, standardPaths...), nil\n}\n\n// getCustomFirmwareClassPath returns the custom firmware class path if it exists.\nfunc getCustomFirmwareClassPath(logger logger.Interface) string {\n\tcustomFirmwareClassPath, err := os.ReadFile(\"/sys/module/firmware_class/parameters/path\")\n\tif err != nil {\n\t\tlogger.Warningf(\"failed to get custom firmware class path: %v\", err)\n\t\treturn \"\"\n\t}\n\n\treturn strings.TrimSpace(string(customFirmwareClassPath))\n}\n\n// newDriverFirmwareDiscoverer creates a discoverer for GSP firmware associated with the specified driver version.\nfunc (l *nvcdilib) newDriverFirmwareDiscoverer(version string) (discover.Discover, error) {\n\tgspFirmwareSearchPaths, err := getFirmwareSearchPaths(l.logger)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to get firmware search paths: %v\", err)\n\t}\n\tgspFirmwarePaths := filepath.Join(\"nvidia\", version, \"gsp*.bin\")\n\treturn discover.NewMounts(\n\t\tl.logger,\n\t\tlookup.NewFileLocator(\n\t\t\tlookup.WithLogger(l.logger),\n\t\t\tlookup.WithRoot(l.driver.Root),\n\t\t\tlookup.WithSearchPaths(gspFirmwareSearchPaths...),\n\t\t),\n\t\tl.driver.Root,\n\t\t[]string{gspFirmwarePaths},\n\t), nil\n}\n\n// newDriverBinariesDiscoverer creates a discoverer for GSP firmware associated with the GPU driver.\nfunc (l *nvcdilib) newDriverBinariesDiscoverer() discover.Discover {\n\treturn discover.NewMounts(\n\t\tl.logger,\n\t\tlookup.NewExecutableLocator(l.logger, l.driver.Root),\n\t\tl.driver.Root,\n\t\t[]string{\n\t\t\t\"nvidia-smi\",              /* System management interface */\n\t\t\t\"nvidia-debugdump\",        /* GPU coredump utility */\n\t\t\t\"nvidia-persistenced\",     /* Persistence mode utility */\n\t\t\t\"nvidia-cuda-mps-control\", /* Multi process service CLI */\n\t\t\t\"nvidia-cuda-mps-server\",  /* Multi process service server */\n\t\t\t\"nvidia-imex\",             /* NVIDIA IMEX Daemon */\n\t\t\t\"nvidia-imex-ctl\",         /* NVIDIA IMEX control */\n\t\t},\n\t)\n}\n\n// getVersionLibs checks the LDCache for libraries ending in the specified driver version.\n// Although the ldcache at the specified driverRoot is queried, the paths are returned relative to this driverRoot.\n// This allows the standard mount location logic to be used for resolving the mounts.\nfunc (l *nvcdilib) getVersionLibs(version string) ([]string, error) {\n\tl.logger.Infof(\"Using driver version %v\", version)\n\n\tlibraries, err := l.driver.DriverLibraryLocator(\"vdpau\")\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to get driver library locator: %w\", err)\n\t}\n\n\tlibs, err := libraries.Locate(\"*.so.\" + version)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to locate libraries for driver version %v: %v\", version, err)\n\t}\n\n\tif l.driver.Root == \"/\" || l.driver.Root == \"\" {\n\t\treturn libs, nil\n\t}\n\n\tvar relative []string\n\tfor _, lib := range libs {\n\t\trelative = append(relative, strings.TrimPrefix(lib, l.driver.Root))\n\t}\n\n\treturn relative, nil\n}\n"
  },
  {
    "path": "pkg/nvcdi/driver-wsl.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage nvcdi\n\nimport (\n\t\"fmt\"\n\t\"path/filepath\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/discover\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/dxcore\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/lookup\"\n)\n\nvar requiredDriverStoreFiles = []string{\n\t\"libcuda.so.1.1\",                /* Core library for cuda support */\n\t\"libcuda_loader.so\",             /* Core library for cuda support on WSL */\n\t\"libnvidia-ptxjitcompiler.so.1\", /* Core library for PTX Jit support */\n\t\"libnvidia-ml.so.1\",             /* Core library for nvml */\n\t\"libnvidia-ml_loader.so\",        /* Core library for nvml on WSL */\n\t\"libdxcore.so\",                  /* Core library for dxcore support */\n\t\"libnvdxgdmal.so.1\",             /* dxgdmal library for cuda */\n\t\"nvcubins.bin\",                  /* Binary containing GPU code for cuda */\n\t\"nvidia-smi\",                    /* nvidia-smi binary*/\n}\n\n// newWSLDriverDiscoverer returns a Discoverer for WSL2 drivers.\nfunc (l *wsllib) newWSLDriverDiscoverer() (discover.Discover, error) {\n\tif err := dxcore.Init(); err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to initialize dxcore: %w\", err)\n\t}\n\tdefer func() {\n\t\tif err := dxcore.Shutdown(); err != nil {\n\t\t\tl.logger.Warningf(\"failed to shutdown dxcore: %w\", err)\n\t\t}\n\t}()\n\n\tdriverStorePaths := dxcore.GetDriverStorePaths()\n\tif len(driverStorePaths) == 0 {\n\t\treturn nil, fmt.Errorf(\"no driver store paths found\")\n\t}\n\tif len(driverStorePaths) > 1 {\n\t\tl.logger.Warningf(\"Found multiple driver store paths: %v\", driverStorePaths)\n\t}\n\tl.logger.Infof(\"Using WSL driver store paths: %v\", driverStorePaths)\n\n\tdriverStorePaths = append(driverStorePaths, \"/usr/lib/wsl/lib\")\n\n\tdriverStoreMounts := discover.NewMounts(\n\t\tl.logger,\n\t\tlookup.NewFileLocator(\n\t\t\tlookup.WithLogger(l.logger),\n\t\t\tlookup.WithSearchPaths(\n\t\t\t\tdriverStorePaths...,\n\t\t\t),\n\t\t\tlookup.WithCount(1),\n\t\t),\n\t\tl.driver.Root,\n\t\trequiredDriverStoreFiles,\n\t)\n\n\tsymlinkHook := nvidiaSMISimlinkHook{\n\t\tlogger:      l.logger,\n\t\tmountsFrom:  driverStoreMounts,\n\t\thookCreator: l.hookCreator,\n\t}\n\n\tldcacheHook, _ := discover.NewLDCacheUpdateHook(l.logger, driverStoreMounts, l.hookCreator)\n\n\td := discover.Merge(\n\t\tdriverStoreMounts,\n\t\tsymlinkHook,\n\t\tldcacheHook,\n\t)\n\n\treturn d, nil\n}\n\ntype nvidiaSMISimlinkHook struct {\n\tdiscover.None\n\tlogger      logger.Interface\n\tmountsFrom  discover.Discover\n\thookCreator discover.HookCreator\n}\n\n// Hooks returns a hook that creates a symlink to nvidia-smi in the driver store.\n// On WSL2 the driver store location is used unchanged, for this reason we need\n// to create a symlink from /usr/bin/nvidia-smi to the nvidia-smi binary in the\n// driver store.\nfunc (m nvidiaSMISimlinkHook) Hooks() ([]discover.Hook, error) {\n\tmounts, err := m.mountsFrom.Mounts()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to discover mounts: %w\", err)\n\t}\n\n\tvar target string\n\tfor _, mount := range mounts {\n\t\tif filepath.Base(mount.Path) == \"nvidia-smi\" {\n\t\t\ttarget = mount.Path\n\t\t\tbreak\n\t\t}\n\t}\n\n\tif target == \"\" {\n\t\tm.logger.Warningf(\"Failed to find nvidia-smi in mounts: %v\", mounts)\n\t\treturn nil, nil\n\t}\n\tlink := \"/usr/bin/nvidia-smi\"\n\tlinks := []string{fmt.Sprintf(\"%s::%s\", target, link)}\n\tsymlinkHook := m.hookCreator.Create(CreateSymlinksHook, links...)\n\n\treturn symlinkHook.Hooks()\n}\n"
  },
  {
    "path": "pkg/nvcdi/driver-wsl_test.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage nvcdi\n\nimport (\n\t\"errors\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/discover\"\n\n\ttestlog \"github.com/sirupsen/logrus/hooks/test\"\n)\n\nfunc TestNvidiaSMISymlinkHook(t *testing.T) {\n\tlogger, _ := testlog.NewNullLogger()\n\thookCreator := discover.NewHookCreator()\n\n\terrMounts := errors.New(\"mounts error\")\n\n\ttestCases := []struct {\n\t\tdescription   string\n\t\tmounts        discover.Discover\n\t\texpectedError error\n\t\texpectedHooks []discover.Hook\n\t}{\n\t\t{\n\t\t\tdescription: \"mounts error is returned\",\n\t\t\tmounts: &discover.DiscoverMock{\n\t\t\t\tMountsFunc: func() ([]discover.Mount, error) {\n\t\t\t\t\treturn nil, errMounts\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedError: errMounts,\n\t\t},\n\t\t{\n\t\t\tdescription: \"no mounts returns no hooks\",\n\t\t\tmounts: &discover.DiscoverMock{\n\t\t\t\tMountsFunc: func() ([]discover.Mount, error) {\n\t\t\t\t\treturn nil, nil\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"no nvidia-smi returns no hooks\",\n\t\t\tmounts: &discover.DiscoverMock{\n\t\t\t\tMountsFunc: func() ([]discover.Mount, error) {\n\t\t\t\t\tmounts := []discover.Mount{\n\t\t\t\t\t\t{Path: \"/not-nvidia-smi\"},\n\t\t\t\t\t\t{Path: \"/also-not-nvidia-smi\"},\n\t\t\t\t\t}\n\t\t\t\t\treturn mounts, nil\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"nvidia-smi must be in path\",\n\t\t\tmounts: &discover.DiscoverMock{\n\t\t\t\tMountsFunc: func() ([]discover.Mount, error) {\n\t\t\t\t\tmounts := []discover.Mount{\n\t\t\t\t\t\t{Path: \"/not-nvidia-smi\", HostPath: \"nvidia-smi\"},\n\t\t\t\t\t\t{Path: \"/also-not-nvidia-smi\", HostPath: \"not-nvidia-smi\"},\n\t\t\t\t\t}\n\t\t\t\t\treturn mounts, nil\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"nvidia-smi returns hook\",\n\t\t\tmounts: &discover.DiscoverMock{\n\t\t\t\tMountsFunc: func() ([]discover.Mount, error) {\n\t\t\t\t\tmounts := []discover.Mount{\n\t\t\t\t\t\t{Path: \"nvidia-smi\"},\n\t\t\t\t\t}\n\t\t\t\t\treturn mounts, nil\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedHooks: []discover.Hook{\n\t\t\t\t{\n\t\t\t\t\tLifecycle: \"createContainer\",\n\t\t\t\t\tPath:      \"/usr/bin/nvidia-cdi-hook\",\n\t\t\t\t\tArgs: []string{\"nvidia-cdi-hook\", \"create-symlinks\",\n\t\t\t\t\t\t\"--link\", \"nvidia-smi::/usr/bin/nvidia-smi\"},\n\t\t\t\t\tEnv: []string{\"NVIDIA_CTK_DEBUG=false\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"checks basename\",\n\t\t\tmounts: &discover.DiscoverMock{\n\t\t\t\tMountsFunc: func() ([]discover.Mount, error) {\n\t\t\t\t\tmounts := []discover.Mount{\n\t\t\t\t\t\t{Path: \"/some/path/nvidia-smi\"},\n\t\t\t\t\t\t{Path: \"/nvidia-smi/but-not\"},\n\t\t\t\t\t}\n\t\t\t\t\treturn mounts, nil\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedHooks: []discover.Hook{\n\t\t\t\t{\n\t\t\t\t\tLifecycle: \"createContainer\",\n\t\t\t\t\tPath:      \"/usr/bin/nvidia-cdi-hook\",\n\t\t\t\t\tArgs: []string{\"nvidia-cdi-hook\", \"create-symlinks\",\n\t\t\t\t\t\t\"--link\", \"/some/path/nvidia-smi::/usr/bin/nvidia-smi\"},\n\t\t\t\t\tEnv: []string{\"NVIDIA_CTK_DEBUG=false\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"returns first match\",\n\t\t\tmounts: &discover.DiscoverMock{\n\t\t\t\tMountsFunc: func() ([]discover.Mount, error) {\n\t\t\t\t\tmounts := []discover.Mount{\n\t\t\t\t\t\t{Path: \"/some/path/nvidia-smi\"},\n\t\t\t\t\t\t{Path: \"/another/path/nvidia-smi\"},\n\t\t\t\t\t}\n\t\t\t\t\treturn mounts, nil\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedHooks: []discover.Hook{\n\t\t\t\t{\n\t\t\t\t\tLifecycle: \"createContainer\",\n\t\t\t\t\tPath:      \"/usr/bin/nvidia-cdi-hook\",\n\t\t\t\t\tArgs: []string{\"nvidia-cdi-hook\", \"create-symlinks\",\n\t\t\t\t\t\t\"--link\", \"/some/path/nvidia-smi::/usr/bin/nvidia-smi\"},\n\t\t\t\t\tEnv: []string{\"NVIDIA_CTK_DEBUG=false\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\tm := nvidiaSMISimlinkHook{\n\t\t\t\tlogger:      logger,\n\t\t\t\tmountsFrom:  tc.mounts,\n\t\t\t\thookCreator: hookCreator,\n\t\t\t}\n\n\t\t\tdevices, err := m.Devices()\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.Empty(t, devices)\n\n\t\t\tmounts, err := m.Mounts()\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.Empty(t, mounts)\n\n\t\t\thooks, err := m.Hooks()\n\t\t\trequire.ErrorIs(t, err, tc.expectedError)\n\t\t\trequire.Equal(t, tc.expectedHooks, hooks)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "pkg/nvcdi/full-gpu-nvml.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage nvcdi\n\nimport (\n\t\"fmt\"\n\n\t\"tags.cncf.io/container-device-interface/pkg/cdi\"\n\t\"tags.cncf.io/container-device-interface/specs-go\"\n\n\t\"github.com/NVIDIA/go-nvlib/pkg/nvlib/device\"\n\t\"github.com/NVIDIA/go-nvml/pkg/nvml\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/discover\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/platform-support/dgpu\"\n)\n\n// A fullGPUDeviceSpecGenerator generates the CDI device specifications for a\n// single full GPU.\ntype fullGPUDeviceSpecGenerator struct {\n\t*nvmllib\n\tuuid  string\n\tindex int\n\n\tfeatureFlags          map[FeatureFlag]bool\n\tadditionalDiscoverers []discover.Discover\n}\n\nvar _ DeviceSpecGenerator = (*fullGPUDeviceSpecGenerator)(nil)\n\nfunc (l *fullGPUDeviceSpecGenerator) GetUUID() (string, error) {\n\treturn l.uuid, nil\n}\n\nfunc (l *nvmllib) newFullGPUDeviceSpecGeneratorFromDevice(index int, d device.Device, featureFlags map[FeatureFlag]bool) (*fullGPUDeviceSpecGenerator, error) {\n\tuuid, ret := d.GetUUID()\n\tif ret != nvml.SUCCESS {\n\t\treturn nil, fmt.Errorf(\"failed to get device UUID: %v\", ret)\n\t}\n\te := &fullGPUDeviceSpecGenerator{\n\t\tnvmllib: l,\n\t\tuuid:    uuid,\n\t\tindex:   index,\n\n\t\tfeatureFlags: featureFlags,\n\t}\n\n\treturn e, nil\n}\n\nfunc (l *nvmllib) newFullGPUDeviceSpecGeneratorFromNVMLDevice(uuid string, nvmlDevice nvml.Device, featureFlags map[FeatureFlag]bool) (DeviceSpecGenerator, error) {\n\tindex, ret := nvmlDevice.GetIndex()\n\tif ret != nvml.SUCCESS {\n\t\treturn nil, fmt.Errorf(\"failed to get device index: %v\", ret)\n\t}\n\n\te := &fullGPUDeviceSpecGenerator{\n\t\tnvmllib: l,\n\t\tuuid:    uuid,\n\t\tindex:   index,\n\n\t\tfeatureFlags: featureFlags,\n\t}\n\treturn e, nil\n}\n\nfunc (l *fullGPUDeviceSpecGenerator) GetDeviceSpecs() ([]specs.Device, error) {\n\tdeviceEdits, err := l.getDeviceEdits()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to get CDI device edits: %w\", err)\n\t}\n\n\tnames, err := l.getNames()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to get device names: %w\", err)\n\t}\n\n\tannotations, err := l.getDeviceAnnotations()\n\tif err != nil {\n\t\tl.logger.Warningf(\"Ignoring error getting device annotations for device(s) %v: %v\", names, err)\n\t\tannotations = nil\n\t}\n\tvar deviceSpecs []specs.Device\n\tfor _, name := range names {\n\t\tdeviceSpec := specs.Device{\n\t\t\tName:           name,\n\t\t\tContainerEdits: *deviceEdits.ContainerEdits,\n\t\t\tAnnotations:    annotations,\n\t\t}\n\t\tdeviceSpecs = append(deviceSpecs, deviceSpec)\n\t}\n\n\treturn deviceSpecs, nil\n}\n\nfunc (l *fullGPUDeviceSpecGenerator) device() (device.Device, error) {\n\treturn l.devicelib.NewDeviceByUUID(l.uuid)\n}\n\nfunc (l *fullGPUDeviceSpecGenerator) getDeviceAnnotations() (map[string]string, error) {\n\tif !l.featureFlags[FeatureEnableCoherentAnnotations] {\n\t\treturn nil, nil\n\t}\n\n\tdevice, err := l.device()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// TODO: Should we distinguish between not-supported and disabled?\n\tisCoherent, err := device.IsCoherent()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to check device coherence: %w\", err)\n\t}\n\n\tannotations := map[string]string{\n\t\t\"gpu.nvidia.com/coherent\": fmt.Sprintf(\"%v\", isCoherent),\n\t}\n\n\treturn annotations, nil\n}\n\n// GetGPUDeviceEdits returns the CDI edits for the full GPU represented by 'device'.\nfunc (l *fullGPUDeviceSpecGenerator) getDeviceEdits() (*cdi.ContainerEdits, error) {\n\tdevice, err := l.device()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tdeviceDiscoverer, err := l.newFullGPUDiscoverer(device)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to create device discoverer: %v\", err)\n\t}\n\teditsForDevice, err := l.editsFactory.FromDiscoverer(deviceDiscoverer)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to create container edits for device: %v\", err)\n\t}\n\n\treturn editsForDevice, nil\n}\n\nfunc (l *fullGPUDeviceSpecGenerator) getNames() ([]string, error) {\n\treturn l.deviceNamers.GetDeviceNames(l.index, l)\n}\n\n// newFullGPUDiscoverer creates a discoverer for the full GPU defined by the specified device.\nfunc (l *fullGPUDeviceSpecGenerator) newFullGPUDiscoverer(d device.Device) (discover.Discover, error) {\n\tdeviceNodes, err := dgpu.NewForDevice(d,\n\t\tdgpu.WithDriver(l.driver),\n\t\tdgpu.WithLogger(l.logger),\n\t\tdgpu.WithHookCreator(l.hookCreator),\n\t\tdgpu.WithNvsandboxuitilsLib(l.nvsandboxutilslib),\n\t)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to create device discoverer: %v\", err)\n\t}\n\n\tdeviceFolderPermissionHooks := (*nvcdilib)(l.nvmllib).newDeviceFolderPermissionHookDiscoverer(\n\t\tdeviceNodes,\n\t)\n\n\tvar discoverers []discover.Discover\n\n\tdiscoverers = append(discoverers,\n\t\tdeviceNodes,\n\t\tdeviceFolderPermissionHooks,\n\t)\n\n\tdiscoverers = append(discoverers, l.additionalDiscoverers...)\n\n\tdd := discover.Merge(\n\t\tdiscoverers...,\n\t)\n\n\treturn dd, nil\n}\n"
  },
  {
    "path": "pkg/nvcdi/gated.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage nvcdi\n\nimport (\n\t\"fmt\"\n\n\t\"tags.cncf.io/container-device-interface/pkg/cdi\"\n\t\"tags.cncf.io/container-device-interface/specs-go\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/discover\"\n)\n\ntype gatedlib struct {\n\t*nvcdilib\n\tmode Mode\n}\n\nvar _ deviceSpecGeneratorFactory = (*gatedlib)(nil)\n\nfunc (l *gatedlib) DeviceSpecGenerators(...string) (DeviceSpecGenerator, error) {\n\treturn l, nil\n}\n\n// GetDeviceSpecs returns the CDI device specs for a single all device.\nfunc (l *gatedlib) GetDeviceSpecs() ([]specs.Device, error) {\n\tdiscoverer, err := l.getModeDiscoverer()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to create discoverer for mode %q: %w\", l.mode, err)\n\t}\n\tedits, err := l.editsFactory.FromDiscoverer(discoverer)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to create container edits: %w\", err)\n\t}\n\n\tdeviceSpec := specs.Device{\n\t\tName:           \"all\",\n\t\tContainerEdits: *edits.ContainerEdits,\n\t}\n\n\treturn []specs.Device{deviceSpec}, nil\n}\n\nfunc (l *gatedlib) getModeDiscoverer() (discover.Discover, error) {\n\tswitch l.mode {\n\tcase ModeGdrcopy:\n\t\treturn discover.NewGDRCopyDiscoverer(l.logger, l.driver)\n\tcase ModeGds:\n\t\treturn discover.NewGDSDiscoverer(l.logger, l.driver)\n\tcase ModeMofed:\n\t\treturn discover.NewMOFEDDiscoverer(l.logger, l.driver)\n\tcase ModeNvswitch:\n\t\treturn discover.NewNvSwitchDiscoverer(l.logger, l.driver)\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"unrecognized mode\")\n\t}\n}\n\n// GetCommonEdits generates a CDI specification that can be used for ANY devices\nfunc (l *gatedlib) GetCommonEdits() (*cdi.ContainerEdits, error) {\n\treturn l.editsFactory.FromDiscoverer(discover.None{})\n}\n"
  },
  {
    "path": "pkg/nvcdi/info-interface_mock.go",
    "content": "// Code generated by moq; DO NOT EDIT.\n// github.com/matryer/moq\n\npackage nvcdi\n\nimport (\n\t\"sync\"\n\n\t\"github.com/NVIDIA/go-nvlib/pkg/nvlib/info\"\n)\n\n// Ensure, that infoInterfaceMock does implement infoInterface.\n// If this is not the case, regenerate this file with moq.\nvar _ infoInterface = &infoInterfaceMock{}\n\n// infoInterfaceMock is a mock implementation of infoInterface.\n//\n//\tfunc TestSomethingThatUsesinfoInterface(t *testing.T) {\n//\n//\t\t// make and configure a mocked infoInterface\n//\t\tmockedinfoInterface := &infoInterfaceMock{\n//\t\t\tHasAnIntegratedGPUFunc: func() (bool, string) {\n//\t\t\t\tpanic(\"mock out the HasAnIntegratedGPU method\")\n//\t\t\t},\n//\t\t\tHasDXCoreFunc: func() (bool, string) {\n//\t\t\t\tpanic(\"mock out the HasDXCore method\")\n//\t\t\t},\n//\t\t\tHasNvmlFunc: func() (bool, string) {\n//\t\t\t\tpanic(\"mock out the HasNvml method\")\n//\t\t\t},\n//\t\t\tHasTegraFilesFunc: func() (bool, string) {\n//\t\t\t\tpanic(\"mock out the HasTegraFiles method\")\n//\t\t\t},\n//\t\t\tResolvePlatformFunc: func() info.Platform {\n//\t\t\t\tpanic(\"mock out the ResolvePlatform method\")\n//\t\t\t},\n//\t\t}\n//\n//\t\t// use mockedinfoInterface in code that requires infoInterface\n//\t\t// and then make assertions.\n//\n//\t}\ntype infoInterfaceMock struct {\n\t// HasAnIntegratedGPUFunc mocks the HasAnIntegratedGPU method.\n\tHasAnIntegratedGPUFunc func() (bool, string)\n\n\t// HasDXCoreFunc mocks the HasDXCore method.\n\tHasDXCoreFunc func() (bool, string)\n\n\t// HasNvmlFunc mocks the HasNvml method.\n\tHasNvmlFunc func() (bool, string)\n\n\t// HasTegraFilesFunc mocks the HasTegraFiles method.\n\tHasTegraFilesFunc func() (bool, string)\n\n\t// ResolvePlatformFunc mocks the ResolvePlatform method.\n\tResolvePlatformFunc func() info.Platform\n\n\t// calls tracks calls to the methods.\n\tcalls struct {\n\t\t// HasAnIntegratedGPU holds details about calls to the HasAnIntegratedGPU method.\n\t\tHasAnIntegratedGPU []struct {\n\t\t}\n\t\t// HasDXCore holds details about calls to the HasDXCore method.\n\t\tHasDXCore []struct {\n\t\t}\n\t\t// HasNvml holds details about calls to the HasNvml method.\n\t\tHasNvml []struct {\n\t\t}\n\t\t// HasTegraFiles holds details about calls to the HasTegraFiles method.\n\t\tHasTegraFiles []struct {\n\t\t}\n\t\t// ResolvePlatform holds details about calls to the ResolvePlatform method.\n\t\tResolvePlatform []struct {\n\t\t}\n\t}\n\tlockHasAnIntegratedGPU sync.RWMutex\n\tlockHasDXCore          sync.RWMutex\n\tlockHasNvml            sync.RWMutex\n\tlockHasTegraFiles      sync.RWMutex\n\tlockResolvePlatform    sync.RWMutex\n}\n\n// HasAnIntegratedGPU calls HasAnIntegratedGPUFunc.\nfunc (mock *infoInterfaceMock) HasAnIntegratedGPU() (bool, string) {\n\tcallInfo := struct {\n\t}{}\n\tmock.lockHasAnIntegratedGPU.Lock()\n\tmock.calls.HasAnIntegratedGPU = append(mock.calls.HasAnIntegratedGPU, callInfo)\n\tmock.lockHasAnIntegratedGPU.Unlock()\n\tif mock.HasAnIntegratedGPUFunc == nil {\n\t\tvar (\n\t\t\tbOut bool\n\t\t\tsOut string\n\t\t)\n\t\treturn bOut, sOut\n\t}\n\treturn mock.HasAnIntegratedGPUFunc()\n}\n\n// HasAnIntegratedGPUCalls gets all the calls that were made to HasAnIntegratedGPU.\n// Check the length with:\n//\n//\tlen(mockedinfoInterface.HasAnIntegratedGPUCalls())\nfunc (mock *infoInterfaceMock) HasAnIntegratedGPUCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockHasAnIntegratedGPU.RLock()\n\tcalls = mock.calls.HasAnIntegratedGPU\n\tmock.lockHasAnIntegratedGPU.RUnlock()\n\treturn calls\n}\n\n// HasDXCore calls HasDXCoreFunc.\nfunc (mock *infoInterfaceMock) HasDXCore() (bool, string) {\n\tcallInfo := struct {\n\t}{}\n\tmock.lockHasDXCore.Lock()\n\tmock.calls.HasDXCore = append(mock.calls.HasDXCore, callInfo)\n\tmock.lockHasDXCore.Unlock()\n\tif mock.HasDXCoreFunc == nil {\n\t\tvar (\n\t\t\tbOut bool\n\t\t\tsOut string\n\t\t)\n\t\treturn bOut, sOut\n\t}\n\treturn mock.HasDXCoreFunc()\n}\n\n// HasDXCoreCalls gets all the calls that were made to HasDXCore.\n// Check the length with:\n//\n//\tlen(mockedinfoInterface.HasDXCoreCalls())\nfunc (mock *infoInterfaceMock) HasDXCoreCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockHasDXCore.RLock()\n\tcalls = mock.calls.HasDXCore\n\tmock.lockHasDXCore.RUnlock()\n\treturn calls\n}\n\n// HasNvml calls HasNvmlFunc.\nfunc (mock *infoInterfaceMock) HasNvml() (bool, string) {\n\tcallInfo := struct {\n\t}{}\n\tmock.lockHasNvml.Lock()\n\tmock.calls.HasNvml = append(mock.calls.HasNvml, callInfo)\n\tmock.lockHasNvml.Unlock()\n\tif mock.HasNvmlFunc == nil {\n\t\tvar (\n\t\t\tbOut bool\n\t\t\tsOut string\n\t\t)\n\t\treturn bOut, sOut\n\t}\n\treturn mock.HasNvmlFunc()\n}\n\n// HasNvmlCalls gets all the calls that were made to HasNvml.\n// Check the length with:\n//\n//\tlen(mockedinfoInterface.HasNvmlCalls())\nfunc (mock *infoInterfaceMock) HasNvmlCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockHasNvml.RLock()\n\tcalls = mock.calls.HasNvml\n\tmock.lockHasNvml.RUnlock()\n\treturn calls\n}\n\n// HasTegraFiles calls HasTegraFilesFunc.\nfunc (mock *infoInterfaceMock) HasTegraFiles() (bool, string) {\n\tcallInfo := struct {\n\t}{}\n\tmock.lockHasTegraFiles.Lock()\n\tmock.calls.HasTegraFiles = append(mock.calls.HasTegraFiles, callInfo)\n\tmock.lockHasTegraFiles.Unlock()\n\tif mock.HasTegraFilesFunc == nil {\n\t\tvar (\n\t\t\tbOut bool\n\t\t\tsOut string\n\t\t)\n\t\treturn bOut, sOut\n\t}\n\treturn mock.HasTegraFilesFunc()\n}\n\n// HasTegraFilesCalls gets all the calls that were made to HasTegraFiles.\n// Check the length with:\n//\n//\tlen(mockedinfoInterface.HasTegraFilesCalls())\nfunc (mock *infoInterfaceMock) HasTegraFilesCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockHasTegraFiles.RLock()\n\tcalls = mock.calls.HasTegraFiles\n\tmock.lockHasTegraFiles.RUnlock()\n\treturn calls\n}\n\n// ResolvePlatform calls ResolvePlatformFunc.\nfunc (mock *infoInterfaceMock) ResolvePlatform() info.Platform {\n\tcallInfo := struct {\n\t}{}\n\tmock.lockResolvePlatform.Lock()\n\tmock.calls.ResolvePlatform = append(mock.calls.ResolvePlatform, callInfo)\n\tmock.lockResolvePlatform.Unlock()\n\tif mock.ResolvePlatformFunc == nil {\n\t\tvar (\n\t\t\tplatformOut info.Platform\n\t\t)\n\t\treturn platformOut\n\t}\n\treturn mock.ResolvePlatformFunc()\n}\n\n// ResolvePlatformCalls gets all the calls that were made to ResolvePlatform.\n// Check the length with:\n//\n//\tlen(mockedinfoInterface.ResolvePlatformCalls())\nfunc (mock *infoInterfaceMock) ResolvePlatformCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockResolvePlatform.RLock()\n\tcalls = mock.calls.ResolvePlatform\n\tmock.lockResolvePlatform.RUnlock()\n\treturn calls\n}\n"
  },
  {
    "path": "pkg/nvcdi/lib-csv.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage nvcdi\n\nimport (\n\t\"fmt\"\n\t\"slices\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"tags.cncf.io/container-device-interface/pkg/cdi\"\n\t\"tags.cncf.io/container-device-interface/specs-go\"\n\n\t\"github.com/NVIDIA/go-nvlib/pkg/nvlib/device\"\n\t\"github.com/NVIDIA/go-nvlib/pkg/nvlib/info\"\n\t\"github.com/NVIDIA/go-nvml/pkg/nvml\"\n\t\"github.com/google/uuid\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/discover\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/platform-support/tegra\"\n)\n\nconst (\n\tdefaultOrinCompatContainerRoot = \"/usr/local/cuda/compat_orin\"\n)\n\ntype csvOptions struct {\n\tFiles               []string\n\tIgnorePatterns      []string\n\tCompatContainerRoot string\n}\n\ntype csvlib nvcdilib\ntype mixedcsvlib nvcdilib\n\nvar _ deviceSpecGeneratorFactory = (*csvlib)(nil)\n\n// DeviceSpecGenerators creates a set of generators for the specified set of\n// devices.\n// If NVML is not available or the disable-multiple-csv-devices feature flag is\n// enabled, a single device is assumed.\nfunc (l *csvlib) DeviceSpecGenerators(ids ...string) (DeviceSpecGenerator, error) {\n\tif l.usePureCSVDeviceSpecGenerator() {\n\t\treturn l.purecsvDeviceSpecGenerators(ids...)\n\t}\n\tmixed, err := l.mixedDeviceSpecGenerators(ids...)\n\tif err != nil {\n\t\tl.logger.Warningf(\"Failed to create mixed CSV spec generator; falling back to pure CSV implementation: %v\", err)\n\t\treturn l.purecsvDeviceSpecGenerators(ids...)\n\t}\n\treturn mixed, nil\n}\n\nfunc (l *csvlib) usePureCSVDeviceSpecGenerator() bool {\n\tif l.featureFlags[FeatureDisableMultipleCSVDevices] {\n\t\treturn true\n\t}\n\thasNVML, _ := l.infolib.HasNvml()\n\tif !hasNVML {\n\t\treturn true\n\t}\n\tasNvmlLib := (*nvmllib)(l)\n\terr := asNvmlLib.init()\n\tif err != nil {\n\t\treturn true\n\t}\n\tdefer asNvmlLib.tryShutdown()\n\n\tnumDevices, ret := l.nvmllib.DeviceGetCount()\n\tif ret != nvml.SUCCESS {\n\t\treturn true\n\t}\n\n\treturn numDevices <= 1\n}\n\nfunc (l *csvlib) purecsvDeviceSpecGenerators(ids ...string) (DeviceSpecGenerator, error) {\n\tfor _, id := range ids {\n\t\tswitch id {\n\t\tcase \"all\":\n\t\tcase \"0\":\n\t\tdefault:\n\t\t\treturn nil, fmt.Errorf(\"unsupported device id: %v\", id)\n\t\t}\n\t}\n\tg := &csvDeviceGenerator{\n\t\tcsvlib: l,\n\t\tindex:  0,\n\t\tuuid:   \"\",\n\t}\n\treturn g, nil\n}\n\nfunc (l *csvlib) mixedDeviceSpecGenerators(ids ...string) (DeviceSpecGenerator, error) {\n\treturn (*mixedcsvlib)(l).DeviceSpecGenerators(ids...)\n}\n\n// A csvDeviceGenerator generates CDI specs for a device based on a set of\n// platform-specific CSV files.\ntype csvDeviceGenerator struct {\n\t*csvlib\n\tindex int\n\tuuid  string\n\tmode  csvGeneratorMode\n}\n\ntype csvGeneratorMode string\n\nconst (\n\tiGPUGeneratorMode = csvGeneratorMode(\"igpu\")\n\tdGPUGeneratorMode = csvGeneratorMode(\"dgpu\")\n)\n\nfunc (l *csvDeviceGenerator) GetUUID() (string, error) {\n\treturn l.uuid, nil\n}\n\n// GetDeviceSpecs returns the CDI device specs for a single device.\nfunc (l *csvDeviceGenerator) GetDeviceSpecs() ([]specs.Device, error) {\n\tdeviceNodeDiscoverer, err := l.deviceNodeDiscoverer()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to create discoverer for device nodes from CSV files: %w\", err)\n\t}\n\te, err := l.editsFactory.FromDiscoverer(deviceNodeDiscoverer)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to create container edits for CSV files: %w\", err)\n\t}\n\n\tnames, err := l.deviceNamers.GetDeviceNames(l.index, l)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to get device name: %w\", err)\n\t}\n\tvar deviceSpecs []specs.Device\n\tfor _, name := range names {\n\t\tdeviceSpec := specs.Device{\n\t\t\tName:           name,\n\t\t\tContainerEdits: *e.ContainerEdits,\n\t\t}\n\t\tdeviceSpecs = append(deviceSpecs, deviceSpec)\n\t}\n\n\treturn deviceSpecs, nil\n}\n\n// deviceNodeDiscoverer creates a discoverer for the device nodes associated\n// with the specified device.\n// The CSV mount specs are used as the source for which device nodes are\n// required with the following additions:\n//\n//   - Any regular device nodes (i.e. /dev/nvidia[0-9]+) are removed from the\n//     input set.\n//   - The device node (i.e. /dev/nvidia{{ .index }}) associated with this\n//     particular device is added to the set of device nodes to be discovered.\nfunc (l *csvDeviceGenerator) deviceNodeDiscoverer() (discover.Discover, error) {\n\treturn tegra.New(\n\t\ttegra.WithLogger(l.logger),\n\t\ttegra.WithDriver(l.driver),\n\t\ttegra.WithHookCreator(l.hookCreator),\n\t\ttegra.WithLibrarySearchPaths(l.librarySearchPaths...),\n\t\ttegra.WithMountSpecs(l.deviceNodeMountSpecs()),\n\t)\n}\n\nfunc (l *csvDeviceGenerator) deviceNodeMountSpecs() tegra.MountSpecPathsByTyper {\n\tmountSpecs := tegra.Transform(\n\t\ttegra.MountSpecsFromCSVFiles(l.logger, l.csv.Files...),\n\t\t// We remove non-device nodes.\n\t\ttegra.OnlyDeviceNodes(),\n\t)\n\tswitch l.mode {\n\tcase dGPUGeneratorMode:\n\t\treturn tegra.Transform(\n\t\t\tmountSpecs,\n\t\t\t// For a dGPU we remove all regular device nodes (nvidia[0-9]+)\n\t\t\t// from the list of device nodes taken from the CSV mount specs.\n\t\t\t// The device nodes for the GPU are discovered for the full GPU.\n\t\t\ttegra.WithoutRegularDeviceNodes(),\n\t\t\t// We also ignore control device nodes since these are included in\n\t\t\t// the full GPU spec generator.\n\t\t\ttegra.Without(\n\t\t\t\ttegra.DeviceNodes(\n\t\t\t\t\t\"/dev/nvidia-modeset\",\n\t\t\t\t\t\"/dev/nvidia-uvm-tools\",\n\t\t\t\t\t\"/dev/nvidia-uvm\",\n\t\t\t\t\t\"/dev/nvidiactl\",\n\t\t\t\t),\n\t\t\t),\n\t\t)\n\tcase iGPUGeneratorMode:\n\t\treturn tegra.Merge(\n\t\t\ttegra.Transform(\n\t\t\t\tmountSpecs,\n\t\t\t\t// We remove the /dev/nvidia1 device node.\n\t\t\t\t// TODO: This assumes that the dGPU has the index 1 and remove\n\t\t\t\t// it from the set of device nodes.\n\t\t\t\ttegra.Without(tegra.DeviceNodes(\"/dev/nvidia1\")),\n\t\t\t),\n\t\t\t// We add the display device from the iGPU.\n\t\t\ttegra.DeviceNodes(\"/dev/nvidia2\"),\n\t\t)\n\tdefault:\n\t\treturn mountSpecs\n\t}\n}\n\n// GetCommonEdits generates a CDI specification that can be used for ANY devices\n// These explicitly do not include any device nodes.\nfunc (l *csvlib) GetCommonEdits() (*cdi.ContainerEdits, error) {\n\tdriverDiscoverer, err := l.driverDiscoverer()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to create driver discoverer from CSV files: %w\", err)\n\t}\n\treturn l.editsFactory.FromDiscoverer(driverDiscoverer)\n}\n\nfunc (l *mixedcsvlib) DeviceSpecGenerators(ids ...string) (DeviceSpecGenerator, error) {\n\tasNvmlLib := (*nvmllib)(l)\n\terr := asNvmlLib.init()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to initialize nvml: %w\", err)\n\t}\n\tdefer asNvmlLib.tryShutdown()\n\n\tif slices.Contains(ids, \"all\") {\n\t\tids, err = l.getAllDeviceIndices()\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed to get device indices: %w\", err)\n\t\t}\n\t}\n\n\tvar DeviceSpecGenerators DeviceSpecGenerators\n\tfor _, id := range ids {\n\t\tgenerator, err := l.deviceSpecGeneratorForId(device.Identifier(id))\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed to create device spec generator for device %q: %w\", id, err)\n\t\t}\n\t\tDeviceSpecGenerators = append(DeviceSpecGenerators, generator)\n\t}\n\n\treturn DeviceSpecGenerators, nil\n}\n\nfunc (l *mixedcsvlib) getAllDeviceIndices() ([]string, error) {\n\tnumDevices, ret := l.nvmllib.DeviceGetCount()\n\tif ret != nvml.SUCCESS {\n\t\treturn nil, fmt.Errorf(\"faled to get device count: %v\", ret)\n\t}\n\n\tvar allIndices []string\n\tfor index := range numDevices {\n\t\tallIndices = append(allIndices, fmt.Sprintf(\"%d\", index))\n\t}\n\treturn allIndices, nil\n}\n\nfunc (l *mixedcsvlib) deviceSpecGeneratorForId(id device.Identifier) (DeviceSpecGenerator, error) {\n\tswitch {\n\tcase id.IsGpuUUID(), isOrinGPUID(id):\n\t\tuuid := string(id)\n\t\tdevice, ret := l.nvmllib.DeviceGetHandleByUUID(uuid)\n\t\tif ret != nvml.SUCCESS {\n\t\t\treturn nil, fmt.Errorf(\"failed to get device handle from UUID %q: %v\", uuid, ret)\n\t\t}\n\t\tindex, ret := device.GetIndex()\n\t\tif ret != nvml.SUCCESS {\n\t\t\treturn nil, fmt.Errorf(\"failed to get device index: %v\", ret)\n\t\t}\n\t\treturn l.csvDeviceSpecGenerator(index, uuid, device)\n\tcase id.IsGpuIndex():\n\t\tindex, err := strconv.Atoi(string(id))\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed to convert device index to an int: %w\", err)\n\t\t}\n\t\tdevice, ret := l.nvmllib.DeviceGetHandleByIndex(index)\n\t\tif ret != nvml.SUCCESS {\n\t\t\treturn nil, fmt.Errorf(\"failed to get device handle from index: %v\", ret)\n\t\t}\n\t\tuuid, ret := device.GetUUID()\n\t\tif ret != nvml.SUCCESS {\n\t\t\treturn nil, fmt.Errorf(\"failed to get UUID: %v\", ret)\n\t\t}\n\t\treturn l.csvDeviceSpecGenerator(index, uuid, device)\n\tcase id.IsMigUUID():\n\t\tfallthrough\n\tcase id.IsMigIndex():\n\t\treturn nil, fmt.Errorf(\"generating a CDI spec for MIG id %q is not supported in CSV mode\", id)\n\t}\n\treturn nil, fmt.Errorf(\"identifier is not a valid UUID or index: %q\", id)\n}\n\nfunc (l *mixedcsvlib) csvDeviceSpecGenerator(index int, uuid string, device nvml.Device) (DeviceSpecGenerator, error) {\n\tisIntegrated, err := isIntegratedGPU(device)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"is-integrated check failed for device (index=%v,uuid=%v)\", index, uuid)\n\t}\n\n\tif isIntegrated {\n\t\treturn l.iGPUDeviceSpecGenerator(index, uuid)\n\t}\n\n\treturn l.dGPUDeviceSpecGenerator(index, uuid)\n}\n\nfunc (l *mixedcsvlib) dGPUDeviceSpecGenerator(index int, uuid string) (DeviceSpecGenerator, error) {\n\tif index != 1 {\n\t\treturn nil, fmt.Errorf(\"unexpected device index for dGPU: %d\", index)\n\t}\n\tg := &csvDeviceGenerator{\n\t\tcsvlib: (*csvlib)(l),\n\t\tindex:  index,\n\t\tuuid:   uuid,\n\t\tmode:   dGPUGeneratorMode,\n\t}\n\n\tcsvDeviceNodeDiscoverer, err := g.deviceNodeDiscoverer()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to create discoverer for devices nodes: %w\", err)\n\t}\n\n\t// If this is not an integrated GPU, we also create a spec generator for\n\t// the full GPU.\n\tdgpu := (*nvmllib)(l).withInit(&fullGPUDeviceSpecGenerator{\n\t\tnvmllib: (*nvmllib)(l),\n\t\tuuid:    uuid,\n\t\tindex:   index,\n\t\t// For the CSV case, we include the control device nodes at a\n\t\t// device level.\n\t\tadditionalDiscoverers: []discover.Discover{\n\t\t\t(*nvmllib)(l).controlDeviceNodeDiscoverer(),\n\t\t\tcsvDeviceNodeDiscoverer,\n\t\t},\n\t\tfeatureFlags: l.featureFlags,\n\t})\n\treturn dgpu, nil\n}\n\nfunc (l *mixedcsvlib) iGPUDeviceSpecGenerator(index int, uuid string) (DeviceSpecGenerator, error) {\n\tif index != 0 {\n\t\treturn nil, fmt.Errorf(\"unexpected device index for iGPU: %d\", index)\n\t}\n\tg := &csvDeviceGenerator{\n\t\tcsvlib: (*csvlib)(l),\n\t\tindex:  index,\n\t\tuuid:   uuid,\n\t\tmode:   iGPUGeneratorMode,\n\t}\n\treturn g, nil\n}\n\n// isOrinGPUID returns true if the specified device identifier represents\n// an Orin iGPU uuid (as opposed to a discrete GPU).\n// Based on practical examples, the identifier for an Orin iGPU is a standard\n// hexadecimal UUID in the 8-4-4-4-12 format, whereas discrete GPU UUIDs have\n// the prefix `GPU-` or `MIG-` for full GPUs or MIG devices, respectively. Thor\n// iGPUs follow the same format as discrete GPUs.\nfunc isOrinGPUID(id device.Identifier) bool {\n\t_, err := uuid.Parse(string(id))\n\treturn err == nil\n}\n\n// isIntegratedGPU checks whether the specified device is an integrated GPU.\n// The following heuristic is followed:\n//   - If the device does not support getting PCI bus information, we fall back to\n//     checking the device name and consider Orin and Thor devices iGPUs.\n//   - If the device does support PCI bus information, we check for a specific\n//     bus ID that is associated with Thor devices.\n//\n// TODO: This should be replaced by an explicit NVML call once available.\nfunc isIntegratedGPU(d nvml.Device) (bool, error) {\n\tpciInfo, ret := d.GetPciInfo()\n\tif ret == nvml.ERROR_NOT_SUPPORTED {\n\t\tname, ret := d.GetName()\n\t\tif ret != nvml.SUCCESS {\n\t\t\treturn false, fmt.Errorf(\"failed to get device name: %v\", ret)\n\t\t}\n\t\treturn info.IsIntegratedGPUName(name), nil\n\t}\n\tif ret != nvml.SUCCESS {\n\t\treturn false, fmt.Errorf(\"failed to get PCI info: %v\", ret)\n\t}\n\n\t// On Thor-based systems, the iGPU always has the PCI bus ID '0000:01:00.0'.\n\t// We explicitly handle this case.\n\tif pciInfo.Domain == 0 && pciInfo.Bus == 1 && pciInfo.Device == 0 {\n\t\treturn true, nil\n\t}\n\treturn false, nil\n}\n\nfunc (l *csvlib) driverDiscoverer() (discover.Discover, error) {\n\tmountSpecs := tegra.Transform(\n\t\ttegra.Transform(\n\t\t\ttegra.MountSpecsFromCSVFiles(l.logger, l.csv.Files...),\n\t\t\ttegra.WithoutDeviceNodes(),\n\t\t),\n\t\ttegra.IgnoreSymlinkMountSpecsByPattern(l.csv.IgnorePatterns...),\n\t)\n\tdriverDiscoverer, err := tegra.New(\n\t\ttegra.WithLogger(l.logger),\n\t\ttegra.WithDriver(l.driver),\n\t\ttegra.WithHookCreator(l.hookCreator),\n\t\ttegra.WithLibrarySearchPaths(l.librarySearchPaths...),\n\t\ttegra.WithMountSpecs(mountSpecs),\n\t)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to create discoverer from CSV files: %w\", err)\n\t}\n\n\tcudaCompatDiscoverer := l.cudaCompatDiscoverer()\n\n\tldcacheUpdateHook, err := discover.NewLDCacheUpdateHook(l.logger, driverDiscoverer, l.hookCreator)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to create ldcache update hook discoverer: %w\", err)\n\t}\n\n\td := discover.Merge(\n\t\tdriverDiscoverer,\n\t\tcudaCompatDiscoverer,\n\t\t// The ldcacheUpdateHook is added last to ensure that the created symlinks are included\n\t\tldcacheUpdateHook,\n\t)\n\treturn d, nil\n}\n\n// cudaCompatDiscoverer returns a discoverer for the CUDA forward compat hook\n// on Tegra-based systems.\n// If the system has NVML available, this is used to determine the driver\n// version to be passed to the hook.\n// On Orin-based systems, the compat library root in the container is also set.\nfunc (l *csvlib) cudaCompatDiscoverer() discover.Discover {\n\tc, err := l.getEnableCUDACompatHookOptions()\n\tif err != nil {\n\t\tl.logger.Warningf(\"Skipping CUDA Forward Compat hook creation: %v\", err)\n\t}\n\tif c == nil {\n\t\treturn nil\n\t}\n\n\treturn discover.NewCUDACompatHookDiscoverer(l.logger, l.hookCreator, c)\n}\n\nfunc (l *csvlib) getEnableCUDACompatHookOptions() (*discover.EnableCUDACompatHookOptions, error) {\n\thasNvml, _ := l.infolib.HasNvml()\n\tif !hasNvml {\n\t\treturn nil, nil\n\t}\n\n\tret := l.nvmllib.Init()\n\tif ret != nvml.SUCCESS {\n\t\treturn nil, fmt.Errorf(\"failed to initialize NVML: %v\", ret)\n\t}\n\tdefer func() {\n\t\t_ = l.nvmllib.Shutdown()\n\t}()\n\n\tvar cudaCompatContainerRoot string\n\tif l.hasOrinDevices() {\n\t\t// For Orin devices we need to use a different container compat root.\n\t\t// We allow this to be overridden by the user.\n\t\tcudaCompatContainerRoot = l.csv.CompatContainerRoot\n\t}\n\n\thostCUDAVersion, err := l.getCUDAVersionString()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to get host CUDA version: %v\", ret)\n\t}\n\n\tf := &discover.EnableCUDACompatHookOptions{\n\t\tHostCUDAVersion:         hostCUDAVersion,\n\t\tCUDACompatContainerRoot: cudaCompatContainerRoot,\n\t}\n\treturn f, nil\n}\n\nfunc (l *csvlib) hasOrinDevices() bool {\n\tvar names []string\n\terr := l.devicelib.VisitDevices(func(i int, d device.Device) error {\n\t\tname, ret := d.GetName()\n\t\tif ret != nvml.SUCCESS {\n\t\t\treturn fmt.Errorf(\"device %v: %v\", i, ret)\n\t\t}\n\t\tnames = append(names, name)\n\t\treturn nil\n\t})\n\tif err != nil {\n\t\tl.logger.Warningf(\"Failed to get device names: %v; assuming non-orin devices\", err)\n\t\treturn false\n\t}\n\n\tfor _, name := range names {\n\t\tif strings.Contains(name, \"Orin (nvgpu)\") {\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn false\n}\n\nfunc (l *csvlib) getCUDAVersionString() (string, error) {\n\tv, ret := l.nvmllib.SystemGetCudaDriverVersion()\n\tif ret != nvml.SUCCESS {\n\t\treturn \"\", ret\n\t}\n\tmajor := v / 1000\n\tminor := v % 1000 / 10\n\n\treturn fmt.Sprintf(\"%d.%d\", major, minor), nil\n}\n"
  },
  {
    "path": "pkg/nvcdi/lib-csv_test.go",
    "content": "/**\n# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage nvcdi\n\nimport (\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"testing\"\n\n\t\"github.com/NVIDIA/go-nvlib/pkg/nvlib/device\"\n\t\"github.com/NVIDIA/go-nvml/pkg/nvml\"\n\t\"github.com/NVIDIA/go-nvml/pkg/nvml/mock\"\n\ttestlog \"github.com/sirupsen/logrus/hooks/test\"\n\t\"github.com/stretchr/testify/require\"\n\t\"tags.cncf.io/container-device-interface/pkg/cdi\"\n\t\"tags.cncf.io/container-device-interface/specs-go\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/devices\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/discover\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/edits\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/lookup/root\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/test\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/test/to\"\n)\n\nfunc TestDeviceSpecGenerators(t *testing.T) {\n\tdefer devices.SetAllForTest()()\n\n\tmoduleRoot, err := test.GetModuleRoot()\n\trequire.NoError(t, err)\n\n\tlogger, _ := testlog.NewNullLogger()\n\n\tlookupRoot := filepath.Join(moduleRoot, \"testdata\", \"lookup\")\n\n\ttestCases := []struct {\n\t\tdescription string\n\n\t\trootfsFolder string\n\n\t\tlib                 *csvlib\n\t\texpectedError       error\n\t\texpectedSpecError   error\n\t\texpectedDeviceSpecs []specs.Device\n\t\texpectedCommonEdits *cdi.ContainerEdits\n\t}{\n\t\t{\n\t\t\tdescription:  \"single orin CSV device\",\n\t\t\trootfsFolder: \"rootfs-orin\",\n\t\t\tlib: &csvlib{\n\t\t\t\tplatformlibs: platformlibs{\n\t\t\t\t\t// test-case specific\n\t\t\t\t\tinfolib: &infoInterfaceMock{\n\t\t\t\t\t\tHasNvmlFunc: func() (bool, string) { return true, \"forced\" },\n\t\t\t\t\t},\n\t\t\t\t\tnvmllib: mockOrinServer(),\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedDeviceSpecs: []specs.Device{\n\t\t\t\t{\n\t\t\t\t\tName: \"0\",\n\t\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\t\tDeviceNodes: []*specs.DeviceNode{\n\t\t\t\t\t\t\t{Path: \"/dev/nvidia0\", HostPath: \"/dev/nvidia0\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedCommonEdits: &cdi.ContainerEdits{\n\t\t\t\tContainerEdits: &specs.ContainerEdits{\n\t\t\t\t\tMounts: []*specs.Mount{\n\t\t\t\t\t\t{HostPath: \"/usr/lib/aarch64-linux-gnu/nvidia/libcuda.so.1.1\", ContainerPath: \"/usr/lib/aarch64-linux-gnu/nvidia/libcuda.so.1.1\", Options: []string{\"ro\", \"nosuid\", \"nodev\", \"rbind\", \"rprivate\"}},\n\t\t\t\t\t\t{HostPath: \"/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-ml.so.1\", ContainerPath: \"/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-ml.so.1\", Options: []string{\"ro\", \"nosuid\", \"nodev\", \"rbind\", \"rprivate\"}},\n\t\t\t\t\t},\n\t\t\t\t\tHooks: []*specs.Hook{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHookName: \"createContainer\",\n\t\t\t\t\t\t\tPath:     \"/usr/bin/nvidia-cdi-hook\",\n\t\t\t\t\t\t\tArgs:     []string{\"nvidia-cdi-hook\", \"create-symlinks\", \"--link\", \"libcuda.so.1::/usr/lib/aarch64-linux-gnu/nvidia/libcuda.so\"},\n\t\t\t\t\t\t\tEnv:      []string{\"NVIDIA_CTK_DEBUG=false\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHookName: \"createContainer\",\n\t\t\t\t\t\t\tPath:     \"/usr/bin/nvidia-cdi-hook\",\n\t\t\t\t\t\t\tArgs:     []string{\"nvidia-cdi-hook\", \"enable-cuda-compat\", \"--host-cuda-version=13.1\", \"--cuda-compat-container-root=/usr/local/cuda/compat_orin\"},\n\t\t\t\t\t\t\tEnv:      []string{\"NVIDIA_CTK_DEBUG=false\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHookName: \"createContainer\",\n\t\t\t\t\t\t\tPath:     \"/usr/bin/nvidia-cdi-hook\",\n\t\t\t\t\t\t\tArgs:     []string{\"nvidia-cdi-hook\", \"update-ldcache\", \"--folder\", \"/usr/lib/aarch64-linux-gnu/nvidia\"},\n\t\t\t\t\t\t\tEnv:      []string{\"NVIDIA_CTK_DEBUG=false\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription:  \"single orin CSV device; custom container compat root\",\n\t\t\trootfsFolder: \"rootfs-orin\",\n\t\t\tlib: &csvlib{\n\t\t\t\tplatformlibs: platformlibs{\n\t\t\t\t\t// test-case specific\n\t\t\t\t\tinfolib: &infoInterfaceMock{\n\t\t\t\t\t\tHasNvmlFunc: func() (bool, string) { return true, \"forced\" },\n\t\t\t\t\t},\n\t\t\t\t\tnvmllib: mockOrinServer(),\n\t\t\t\t},\n\t\t\t\tcsv: csvOptions{\n\t\t\t\t\tCompatContainerRoot: \"/another/compat/root\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedDeviceSpecs: []specs.Device{\n\t\t\t\t{\n\t\t\t\t\tName: \"0\",\n\t\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\t\tDeviceNodes: []*specs.DeviceNode{\n\t\t\t\t\t\t\t{Path: \"/dev/nvidia0\", HostPath: \"/dev/nvidia0\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedCommonEdits: &cdi.ContainerEdits{\n\t\t\t\tContainerEdits: &specs.ContainerEdits{\n\t\t\t\t\tMounts: []*specs.Mount{\n\t\t\t\t\t\t{HostPath: \"/usr/lib/aarch64-linux-gnu/nvidia/libcuda.so.1.1\", ContainerPath: \"/usr/lib/aarch64-linux-gnu/nvidia/libcuda.so.1.1\", Options: []string{\"ro\", \"nosuid\", \"nodev\", \"rbind\", \"rprivate\"}},\n\t\t\t\t\t\t{HostPath: \"/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-ml.so.1\", ContainerPath: \"/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-ml.so.1\", Options: []string{\"ro\", \"nosuid\", \"nodev\", \"rbind\", \"rprivate\"}},\n\t\t\t\t\t},\n\t\t\t\t\tHooks: []*specs.Hook{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHookName: \"createContainer\",\n\t\t\t\t\t\t\tPath:     \"/usr/bin/nvidia-cdi-hook\",\n\t\t\t\t\t\t\tArgs:     []string{\"nvidia-cdi-hook\", \"create-symlinks\", \"--link\", \"libcuda.so.1::/usr/lib/aarch64-linux-gnu/nvidia/libcuda.so\"},\n\t\t\t\t\t\t\tEnv:      []string{\"NVIDIA_CTK_DEBUG=false\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHookName: \"createContainer\",\n\t\t\t\t\t\t\tPath:     \"/usr/bin/nvidia-cdi-hook\",\n\t\t\t\t\t\t\tArgs:     []string{\"nvidia-cdi-hook\", \"enable-cuda-compat\", \"--host-cuda-version=13.1\", \"--cuda-compat-container-root=/another/compat/root\"},\n\t\t\t\t\t\t\tEnv:      []string{\"NVIDIA_CTK_DEBUG=false\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHookName: \"createContainer\",\n\t\t\t\t\t\t\tPath:     \"/usr/bin/nvidia-cdi-hook\",\n\t\t\t\t\t\t\tArgs:     []string{\"nvidia-cdi-hook\", \"update-ldcache\", \"--folder\", \"/usr/lib/aarch64-linux-gnu/nvidia\"},\n\t\t\t\t\t\t\tEnv:      []string{\"NVIDIA_CTK_DEBUG=false\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription:  \"thor device with dGPU\",\n\t\t\trootfsFolder: \"rootfs-thor-dgpu\",\n\t\t\tlib: &csvlib{\n\t\t\t\tplatformlibs: platformlibs{\n\t\t\t\t\t// test-case specific\n\t\t\t\t\tinfolib: &infoInterfaceMock{\n\t\t\t\t\t\tHasNvmlFunc: func() (bool, string) { return true, \"forced\" },\n\t\t\t\t\t},\n\t\t\t\t\tnvmllib: mockIGXServer(),\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedDeviceSpecs: []specs.Device{\n\t\t\t\t{\n\t\t\t\t\tName: \"0\",\n\t\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\t\tDeviceNodes: []*specs.DeviceNode{\n\t\t\t\t\t\t\t{Path: \"/dev/nvidia0\", HostPath: \"/dev/nvidia0\"},\n\t\t\t\t\t\t\t{Path: \"/dev/nvidiactl\", HostPath: \"/dev/nvidiactl\"},\n\t\t\t\t\t\t\t{Path: \"/dev/nvmap\", HostPath: \"/dev/nvmap\", FileMode: to.Ptr(os.FileMode(0400)), Permissions: \"rwm\", GID: to.Ptr[uint32](44)},\n\t\t\t\t\t\t\t{Path: \"/dev/nvidia2\", HostPath: \"/dev/nvidia2\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName: \"1\",\n\t\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\t\tDeviceNodes: []*specs.DeviceNode{\n\t\t\t\t\t\t\t{Path: \"/dev/nvidia1\", HostPath: \"/dev/nvidia1\"},\n\t\t\t\t\t\t\t{Path: \"/dev/nvidiactl\", HostPath: \"/dev/nvidiactl\"},\n\t\t\t\t\t\t\t{Path: \"/dev/nvmap\", HostPath: \"/dev/nvmap\", FileMode: to.Ptr(os.FileMode(0400)), Permissions: \"rwm\", GID: to.Ptr[uint32](44)},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedCommonEdits: &cdi.ContainerEdits{\n\t\t\t\tContainerEdits: &specs.ContainerEdits{\n\t\t\t\t\tHooks: []*specs.Hook{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHookName: \"createContainer\",\n\t\t\t\t\t\t\tPath:     \"/usr/bin/nvidia-cdi-hook\",\n\t\t\t\t\t\t\tArgs:     []string{\"nvidia-cdi-hook\", \"enable-cuda-compat\", \"--host-cuda-version=13.1\"},\n\t\t\t\t\t\t\tEnv:      []string{\"NVIDIA_CTK_DEBUG=false\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHookName: \"createContainer\",\n\t\t\t\t\t\t\tPath:     \"/usr/bin/nvidia-cdi-hook\",\n\t\t\t\t\t\t\tArgs:     []string{\"nvidia-cdi-hook\", \"update-ldcache\"},\n\t\t\t\t\t\t\tEnv:      []string{\"NVIDIA_CTK_DEBUG=false\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tdriverRoot := filepath.Join(lookupRoot, tc.rootfsFolder)\n\n\t\ttc.lib.logger = logger\n\t\ttc.lib.editsFactory = edits.NewFactory(edits.WithLogger(logger))\n\t\ttc.lib.deviceNamers = []DeviceNamer{deviceNameIndex{}}\n\t\ttc.lib.hookCreator = discover.NewHookCreator()\n\n\t\ttc.lib.devicelib = device.New(tc.lib.nvmllib)\n\n\t\ttc.lib.driver = root.New(root.WithDriverRoot(driverRoot))\n\t\ttc.lib.devRoot = driverRoot\n\t\ttc.lib.driver = root.New(root.WithDriverRoot(driverRoot), root.WithDevRoot(driverRoot))\n\t\ttc.lib.csv.Files = []string{\n\t\t\tfilepath.Join(driverRoot, \"/etc/nvidia-container-runtime/host-files-for-container.d/devices.csv\"),\n\t\t\tfilepath.Join(driverRoot, \"/etc/nvidia-container-runtime/host-files-for-container.d/drivers.csv\"),\n\t\t}\n\t\tif tc.lib.csv.CompatContainerRoot == \"\" {\n\t\t\ttc.lib.csv.CompatContainerRoot = defaultOrinCompatContainerRoot\n\t\t}\n\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\tgenerator, err := tc.lib.DeviceSpecGenerators(\"all\")\n\n\t\t\trequire.EqualValues(t, tc.expectedError, err)\n\n\t\t\tif tc.expectedError != nil {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tdeviceSpecs, err := generator.GetDeviceSpecs()\n\t\t\trequire.EqualValues(t, tc.expectedSpecError, err)\n\t\t\trequire.EqualValues(t, tc.expectedDeviceSpecs, stripRoot(driverRoot, deviceSpecs))\n\n\t\t\tcommonEdits, err := tc.lib.GetCommonEdits()\n\t\t\trequire.NoError(t, err)\n\n\t\t\trequire.EqualValues(t, tc.expectedCommonEdits, stripRoot(driverRoot, commonEdits))\n\t\t})\n\t}\n\n}\n\nfunc stripRoot[T any](root string, v T) T {\n\tstringRep, err := json.Marshal(v)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tstringRep = bytes.ReplaceAll(stringRep, []byte(root), []byte(\"\"))\n\n\tvar modified T\n\terr = json.Unmarshal(stringRep, &modified)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn modified\n}\n\n// TODO: We should move this mock to go-nvml/mock\nfunc mockOrinServer() nvml.Interface {\n\treturn &mock.Interface{\n\t\tInitFunc: func() nvml.Return {\n\t\t\treturn nvml.SUCCESS\n\t\t},\n\t\tShutdownFunc: func() nvml.Return {\n\t\t\treturn nvml.SUCCESS\n\t\t},\n\t\tSystemGetDriverVersionFunc: func() (string, nvml.Return) {\n\t\t\treturn \"540.3.0\", nvml.SUCCESS\n\t\t},\n\t\tSystemGetCudaDriverVersionFunc: func() (int, nvml.Return) {\n\t\t\treturn 13010, nvml.SUCCESS\n\t\t},\n\t\tDeviceGetCountFunc: func() (int, nvml.Return) {\n\t\t\treturn 1, nvml.SUCCESS\n\t\t},\n\t\tDeviceGetHandleByIndexFunc: func(n int) (nvml.Device, nvml.Return) {\n\t\t\tif n != 0 {\n\t\t\t\treturn nil, nvml.ERROR_INVALID_ARGUMENT\n\t\t\t}\n\t\t\tdevice := &mock.Device{\n\t\t\t\tGetUUIDFunc: func() (string, nvml.Return) {\n\t\t\t\t\treturn \"GPU-orin\", nvml.SUCCESS\n\t\t\t\t},\n\t\t\t\tGetNameFunc: func() (string, nvml.Return) {\n\t\t\t\t\treturn \"Orin (nvgpu)\", nvml.SUCCESS\n\t\t\t\t},\n\t\t\t\tGetPciInfoFunc: func() (nvml.PciInfo, nvml.Return) {\n\t\t\t\t\treturn nvml.PciInfo{}, nvml.ERROR_NOT_SUPPORTED\n\t\t\t\t},\n\t\t\t}\n\t\t\treturn device, nvml.SUCCESS\n\t\t},\n\t}\n}\n\n// TODO: We should move this mock to go-nvml/mock\nfunc mockIGXServer() nvml.Interface {\n\tthor := &mock.Device{\n\t\tGetNameFunc: func() (string, nvml.Return) {\n\t\t\treturn \"NVIDIA Thor\", nvml.SUCCESS\n\t\t},\n\t\tGetUUIDFunc: func() (string, nvml.Return) {\n\t\t\treturn \"GPU-0\", nvml.SUCCESS\n\t\t},\n\t\tGetPciInfoFunc: func() (nvml.PciInfo, nvml.Return) {\n\t\t\treturn nvml.PciInfo{\n\t\t\t\tBus: 1,\n\t\t\t}, nvml.SUCCESS\n\t\t},\n\t}\n\trtx := &mock.Device{\n\t\tGetNameFunc: func() (string, nvml.Return) {\n\t\t\treturn \"RTX Pro 6000\", nvml.SUCCESS\n\t\t},\n\t\tGetUUIDFunc: func() (string, nvml.Return) {\n\t\t\treturn \"GPU-1\", nvml.SUCCESS\n\t\t},\n\t\tGetPciInfoFunc: func() (nvml.PciInfo, nvml.Return) {\n\t\t\treturn nvml.PciInfo{\n\t\t\t\tBus: 3,\n\t\t\t}, nvml.SUCCESS\n\t\t},\n\t\tGetMinorNumberFunc: func() (int, nvml.Return) {\n\t\t\treturn 1, nvml.SUCCESS\n\t\t},\n\t}\n\n\treturn &mock.Interface{\n\t\tInitFunc: func() nvml.Return {\n\t\t\treturn nvml.SUCCESS\n\t\t},\n\t\tShutdownFunc: func() nvml.Return {\n\t\t\treturn nvml.SUCCESS\n\t\t},\n\t\tSystemGetDriverVersionFunc: func() (string, nvml.Return) {\n\t\t\treturn \"540.3.0\", nvml.SUCCESS\n\t\t},\n\t\tSystemGetCudaDriverVersionFunc: func() (int, nvml.Return) {\n\t\t\treturn 13010, nvml.SUCCESS\n\t\t},\n\t\tDeviceGetCountFunc: func() (int, nvml.Return) {\n\t\t\treturn 2, nvml.SUCCESS\n\t\t},\n\t\tDeviceGetHandleByIndexFunc: func(n int) (nvml.Device, nvml.Return) {\n\t\t\tswitch n {\n\t\t\tcase 0:\n\t\t\t\treturn thor, nvml.SUCCESS\n\t\t\tcase 1:\n\t\t\t\treturn rtx, nvml.SUCCESS\n\t\t\t}\n\t\t\treturn nil, nvml.ERROR_INVALID_ARGUMENT\n\t\t},\n\t\tDeviceGetHandleByUUIDFunc: func(s string) (nvml.Device, nvml.Return) {\n\t\t\tswitch s {\n\t\t\tcase \"GPU-0\":\n\t\t\t\treturn thor, nvml.SUCCESS\n\t\t\tcase \"GPU-1\":\n\t\t\t\treturn rtx, nvml.SUCCESS\n\t\t\t}\n\t\t\treturn nil, nvml.ERROR_INVALID_ARGUMENT\n\t\t},\n\t}\n}\n"
  },
  {
    "path": "pkg/nvcdi/lib-imex.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage nvcdi\n\nimport (\n\t\"fmt\"\n\t\"path/filepath\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"tags.cncf.io/container-device-interface/pkg/cdi\"\n\t\"tags.cncf.io/container-device-interface/specs-go\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/discover\"\n)\n\ntype imexlib nvcdilib\n\ntype imexChannel struct {\n\tid      string\n\tdevRoot string\n}\n\nvar _ deviceSpecGeneratorFactory = (*imexlib)(nil)\n\nconst (\n\tclassImexChannel = \"imex-channel\"\n)\n\n// GetCommonEdits returns an empty set of edits for IMEX devices.\nfunc (l *imexlib) GetCommonEdits() (*cdi.ContainerEdits, error) {\n\treturn l.editsFactory.FromDiscoverer(discover.None{})\n}\n\n// DeviceSpecGenerators returns the CDI device spec generators for the specified\n// imex channel IDs.\n// Valid IDs are:\n// * numeric channel IDs\n// * channel<numericChannelID>\n// * the special ID 'all'\nfunc (l *imexlib) DeviceSpecGenerators(ids ...string) (DeviceSpecGenerator, error) {\n\tchannelsIDs, err := l.getChannelIDs(ids...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar deviceSpecGenerators DeviceSpecGenerators\n\tfor _, id := range channelsIDs {\n\t\tdeviceSpecGenerators = append(deviceSpecGenerators, &imexChannel{id: id, devRoot: l.driver.DevRoot})\n\t}\n\n\treturn deviceSpecGenerators, nil\n}\n\nfunc (l *imexlib) getChannelIDs(ids ...string) ([]string, error) {\n\tvar channelIDs []string\n\tfor _, id := range ids {\n\t\ttrimmed := strings.TrimPrefix(id, \"channel\")\n\t\tif trimmed == \"all\" {\n\t\t\treturn l.getAllChannelIDs()\n\t\t}\n\t\t_, err := strconv.ParseUint(trimmed, 10, 64)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"invalid channel ID %v: %w\", id, err)\n\t\t}\n\t\tchannelIDs = append(channelIDs, trimmed)\n\t}\n\treturn channelIDs, nil\n}\n\n// getAllChannelIDs returns the device IDs for all available IMEX channels.\nfunc (l *imexlib) getAllChannelIDs() ([]string, error) {\n\tchannelsDiscoverer := discover.NewCharDeviceDiscoverer(\n\t\tl.logger,\n\t\tl.driver.DevRoot,\n\t\t[]string{\"/dev/nvidia-caps-imex-channels/channel*\"},\n\t)\n\n\tchannels, err := channelsDiscoverer.Devices()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar channelIDs []string\n\tfor _, channel := range channels {\n\t\tchannelID := filepath.Base(channel.Path)\n\t\tchannelIDs = append(channelIDs, strings.TrimPrefix(channelID, \"channel\"))\n\t}\n\n\treturn channelIDs, nil\n}\n\n// GetDeviceSpecs returns the CDI device specs the specified IMEX channel.\nfunc (l *imexChannel) GetDeviceSpecs() ([]specs.Device, error) {\n\tpath := \"/dev/nvidia-caps-imex-channels/channel\" + l.id\n\tdeviceSpec := specs.Device{\n\t\tName: l.id,\n\t\tContainerEdits: specs.ContainerEdits{\n\t\t\tDeviceNodes: []*specs.DeviceNode{\n\t\t\t\t{\n\t\t\t\t\tPath:     path,\n\t\t\t\t\tHostPath: filepath.Join(l.devRoot, path),\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\treturn []specs.Device{deviceSpec}, nil\n}\n"
  },
  {
    "path": "pkg/nvcdi/lib-imex_test.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage nvcdi\n\nimport (\n\t\"bytes\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"testing\"\n\n\ttestlog \"github.com/sirupsen/logrus/hooks/test\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/devices\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/test\"\n)\n\nfunc TestImexMode(t *testing.T) {\n\tdefer devices.SetAllForTest()()\n\n\tlogger, _ := testlog.NewNullLogger()\n\n\tmoduleRoot, err := test.GetModuleRoot()\n\trequire.NoError(t, err)\n\thostRoot := filepath.Join(moduleRoot, \"testdata\", \"lookup\", \"rootfs-1\")\n\n\texpectedSpec := `---\ncdiVersion: 0.5.0\nkind: nvidia.com/imex-channel\ndevices:\n    - name: \"0\"\n      containerEdits:\n        deviceNodes:\n            - path: /dev/nvidia-caps-imex-channels/channel0\n              hostPath: {{ .hostRoot }}/dev/nvidia-caps-imex-channels/channel0\n    - name: \"1\"\n      containerEdits:\n        deviceNodes:\n            - path: /dev/nvidia-caps-imex-channels/channel1\n              hostPath: {{ .hostRoot }}/dev/nvidia-caps-imex-channels/channel1\n    - name: \"2047\"\n      containerEdits:\n        deviceNodes:\n            - path: /dev/nvidia-caps-imex-channels/channel2047\n              hostPath: {{ .hostRoot }}/dev/nvidia-caps-imex-channels/channel2047\ncontainerEdits:\n    env:\n        - NVIDIA_VISIBLE_DEVICES=void\n`\n\texpectedSpec = strings.ReplaceAll(expectedSpec, \"{{ .hostRoot }}\", hostRoot)\n\n\tlib, err := New(\n\t\tWithLogger(logger),\n\t\tWithMode(ModeImex),\n\t\tWithDriverRoot(hostRoot),\n\t)\n\trequire.NoError(t, err)\n\n\tspec, err := lib.GetSpec()\n\trequire.NoError(t, err)\n\n\tvar b bytes.Buffer\n\n\t_, err = spec.WriteTo(&b)\n\trequire.NoError(t, err)\n\trequire.Equal(t, expectedSpec, b.String())\n}\n"
  },
  {
    "path": "pkg/nvcdi/lib-nvml.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage nvcdi\n\nimport (\n\t\"fmt\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/NVIDIA/go-nvlib/pkg/nvlib/device\"\n\t\"github.com/NVIDIA/go-nvml/pkg/nvml\"\n\t\"tags.cncf.io/container-device-interface/pkg/cdi\"\n\t\"tags.cncf.io/container-device-interface/specs-go\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/nvsandboxutils\"\n)\n\ntype nvmllib nvcdilib\n\nvar _ deviceSpecGeneratorFactory = (*nvmllib)(nil)\n\n// GetCommonEdits generates a CDI specification that can be used for ANY devices\nfunc (l *nvmllib) GetCommonEdits() (*cdi.ContainerEdits, error) {\n\tcommon, err := l.newCommonNVMLDiscoverer()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to create discoverer for common entities: %v\", err)\n\t}\n\n\treturn l.editsFactory.FromDiscoverer(common)\n}\n\n// DeviceSpecGenerators returns the CDI device spec generators for NVML devices\n// with the specified IDs.\n// Supported IDs are:\n// * an index of a GPU or MIG device\n// * a UUID of a GPU or MIG device\n// * the special ID 'all'\nfunc (l *nvmllib) DeviceSpecGenerators(ids ...string) (DeviceSpecGenerator, error) {\n\tif err := l.init(); err != nil {\n\t\treturn nil, err\n\t}\n\tdefer l.tryShutdown()\n\n\tdsgs, err := l.getDeviceSpecGeneratorsForIDs(ids...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn l.withInit(dsgs), nil\n}\n\nfunc (l *nvmllib) getDeviceSpecGeneratorsForIDs(ids ...string) (DeviceSpecGenerator, error) {\n\tvar identifiers []device.Identifier\n\tfor _, id := range ids {\n\t\tif id == \"none\" {\n\t\t\treturn emptyDeviceSpecGenerator(\"none\"), nil\n\t\t}\n\t\tif id == \"all\" {\n\t\t\treturn l.getDeviceSpecGeneratorsForAllDevices()\n\t\t}\n\t\tidentifiers = append(identifiers, device.Identifier(id))\n\t}\n\n\tuuids, err := l.normalizeDeviceIDs(identifiers...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar DeviceSpecGenerators DeviceSpecGenerators\n\tfor _, uuid := range uuids {\n\t\tdevice, ret := l.nvmllib.DeviceGetHandleByUUID(string(uuid))\n\t\tif ret != nvml.SUCCESS {\n\t\t\treturn nil, fmt.Errorf(\"failed to get device handle from UUID: %v\", ret)\n\t\t}\n\t\tgenerator, err := l.newDeviceSpecGeneratorFromNVMLDevice(string(uuid), device)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tDeviceSpecGenerators = append(DeviceSpecGenerators, generator)\n\t}\n\n\treturn DeviceSpecGenerators, nil\n}\n\nfunc (l *nvmllib) newDeviceSpecGeneratorFromNVMLDevice(id string, nvmlDevice nvml.Device) (DeviceSpecGenerator, error) {\n\tisMig, ret := nvmlDevice.IsMigDeviceHandle()\n\tif ret != nvml.SUCCESS {\n\t\treturn nil, fmt.Errorf(\"%v\", ret)\n\t}\n\tif isMig {\n\t\treturn l.newMIGDeviceSpecGeneratorFromNVMLDevice(id, nvmlDevice)\n\t}\n\n\treturn l.newFullGPUDeviceSpecGeneratorFromNVMLDevice(id, nvmlDevice, l.featureFlags)\n}\n\n// getDeviceSpecGeneratorsForAllDevices returns the CDI device spec generators\n// for all NVML devices detected on the system.\n// This includes full GPUs as well as MIG devices.\nfunc (l *nvmllib) getDeviceSpecGeneratorsForAllDevices() (DeviceSpecGenerator, error) {\n\tvar DeviceSpecGenerators DeviceSpecGenerators\n\terr := l.devicelib.VisitDevices(func(i int, d device.Device) error {\n\t\tisMigEnabled, err := d.IsMigEnabled()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif isMigEnabled {\n\t\t\treturn nil\n\t\t}\n\t\tfullGPU, err := l.newFullGPUDeviceSpecGeneratorFromDevice(i, d, l.featureFlags)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tDeviceSpecGenerators = append(DeviceSpecGenerators, fullGPU)\n\t\treturn nil\n\t})\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to get full GPU device editors: %w\", err)\n\t}\n\n\terr = l.devicelib.VisitMigDevices(func(i int, d device.Device, j int, mig device.MigDevice) error {\n\t\tmigDevice, err := l.newMIGDeviceSpecGeneratorFromDevice(i, d, j, mig)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tDeviceSpecGenerators = append(DeviceSpecGenerators, migDevice)\n\t\treturn nil\n\t})\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to get MIG device editors: %w\", err)\n\t}\n\n\treturn DeviceSpecGenerators, nil\n}\n\n// TODO: move this to go-nvlib?\n// normalizeDeviceID returns the UUIDs of the devices specified by the identifier.\nfunc (l *nvmllib) normalizeDeviceIDs(identifiers ...device.Identifier) ([]device.Identifier, error) {\n\tvar uuids []device.Identifier\n\tfor _, id := range identifiers {\n\t\tuuid, err := l.normalizeDeviceID(id)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tuuids = append(uuids, uuid)\n\t}\n\treturn uuids, nil\n}\n\nfunc (l *nvmllib) normalizeDeviceID(id device.Identifier) (device.Identifier, error) {\n\tvar err error\n\n\tif id.IsUUID() {\n\t\treturn id, nil\n\t}\n\n\tif id.IsGpuIndex() {\n\t\tidx, err := strconv.Atoi(string(id))\n\t\tif err != nil {\n\t\t\treturn \"\", fmt.Errorf(\"failed to convert device index to an int: %w\", err)\n\t\t}\n\t\tdev, ret := l.nvmllib.DeviceGetHandleByIndex(idx)\n\t\tif ret != nvml.SUCCESS {\n\t\t\treturn \"\", fmt.Errorf(\"failed to get device handle from index: %v\", ret)\n\t\t}\n\t\tuuid, ret := dev.GetUUID()\n\t\tif ret != nvml.SUCCESS {\n\t\t\treturn \"\", fmt.Errorf(\"failed to get device UUID: %v\", ret)\n\t\t}\n\t\treturn device.Identifier(uuid), nil\n\t}\n\n\tif id.IsMigIndex() {\n\t\tvar gpuIdx, migIdx int\n\t\tvar parent nvml.Device\n\t\tsplit := strings.SplitN(string(id), \":\", 2)\n\t\tif gpuIdx, err = strconv.Atoi(split[0]); err != nil {\n\t\t\treturn \"\", fmt.Errorf(\"failed to convert device index to an int: %w\", err)\n\t\t}\n\t\tif migIdx, err = strconv.Atoi(split[1]); err != nil {\n\t\t\treturn \"\", fmt.Errorf(\"failed to convert device index to an int: %w\", err)\n\t\t}\n\t\tparent, ret := l.nvmllib.DeviceGetHandleByIndex(gpuIdx)\n\t\tif ret != nvml.SUCCESS {\n\t\t\treturn \"\", fmt.Errorf(\"failed to get parent device handle: %v\", ret)\n\t\t}\n\t\tmig, ret := parent.GetMigDeviceHandleByIndex(migIdx)\n\t\tif ret != nvml.SUCCESS {\n\t\t\treturn \"\", fmt.Errorf(\"failed to get MIG handle by index: %v\", ret)\n\t\t}\n\t\tuuid, ret := mig.GetUUID()\n\t\tif ret != nvml.SUCCESS {\n\t\t\treturn \"\", fmt.Errorf(\"failed to get MIG UUID: %v\", ret)\n\t\t}\n\t\treturn device.Identifier(uuid), nil\n\t}\n\n\treturn \"\", fmt.Errorf(\"identifier is not a valid UUID or index: %q\", id)\n}\n\nfunc (l *nvmllib) init() error {\n\tif r := l.nvmllib.Init(); r != nvml.SUCCESS {\n\t\treturn fmt.Errorf(\"failed to initialize NVML: %w\", r)\n\t}\n\n\tif l.nvsandboxutilslib == nil {\n\t\treturn nil\n\t}\n\tif r := l.nvsandboxutilslib.Init(l.driver.Root); r != nvsandboxutils.SUCCESS {\n\t\tl.logger.Warningf(\"Failed to init nvsandboxutils: %v; ignoring\", r)\n\t\tl.nvsandboxutilslib = nil\n\t}\n\treturn nil\n}\n\nfunc (l *nvmllib) tryShutdown() {\n\tif l.nvsandboxutilslib != nil {\n\t\tif r := l.nvsandboxutilslib.Shutdown(); r != nvsandboxutils.SUCCESS {\n\t\t\tl.logger.Warningf(\"failed to shutdown nvsandboxutils: %v\", r)\n\t\t}\n\t}\n\tif r := l.nvmllib.Shutdown(); r != nvml.SUCCESS {\n\t\tl.logger.Warningf(\"failed to shutdown NVML: %v\", r)\n\t}\n}\n\ntype deviceSpecGeneratorsWithAndShutdown struct {\n\t*nvmllib\n\tDeviceSpecGenerator\n}\n\nfunc (l *nvmllib) withInit(dsg DeviceSpecGenerator) DeviceSpecGenerator {\n\treturn &deviceSpecGeneratorsWithAndShutdown{\n\t\tnvmllib:             l,\n\t\tDeviceSpecGenerator: dsg,\n\t}\n}\n\n// GetDeviceSpecs ensures that the init and shutdown are called before (and\n// after) generating the required device specs.\nfunc (d *deviceSpecGeneratorsWithAndShutdown) GetDeviceSpecs() ([]specs.Device, error) {\n\tif err := d.init(); err != nil {\n\t\treturn nil, err\n\t}\n\tdefer d.tryShutdown()\n\n\treturn d.DeviceSpecGenerator.GetDeviceSpecs()\n}\n\ntype emptyDeviceSpecGenerator string\n\nfunc (d emptyDeviceSpecGenerator) GetDeviceSpecs() ([]specs.Device, error) {\n\t// Since the CDI specification does not allow devices to have no edits, we\n\t// add a dummy envvar to the container edits for an \"empty\" device.\n\tnoneDevice := specs.Device{\n\t\tName: string(d),\n\t\tContainerEdits: specs.ContainerEdits{\n\t\t\tEnv: []string{\"NVCT_EMPTY_DEVICE=\"},\n\t\t},\n\t}\n\treturn []specs.Device{noneDevice}, nil\n}\n"
  },
  {
    "path": "pkg/nvcdi/lib-nvml_test.go",
    "content": "/**\n# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage nvcdi\n\nimport (\n\t\"testing\"\n\n\t\"github.com/NVIDIA/go-nvml/pkg/nvml\"\n\tmocknvml \"github.com/NVIDIA/go-nvml/pkg/nvml/mock\"\n\t\"github.com/NVIDIA/go-nvml/pkg/nvml/mock/dgxa100\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/NVIDIA/go-nvlib/pkg/nvlib/device\"\n)\n\nfunc TestNvmllibGetDeviceSpecGeneratorsForIDs(t *testing.T) {\n\ttestCases := []struct {\n\t\tname               string\n\t\tids                []string\n\t\tsetupMock          func(*dgxa100.Server)\n\t\texpectedError      error\n\t\texpectedLength     int\n\t\texpectedGenerators DeviceSpecGenerators\n\t}{\n\t\t{\n\t\t\tname:           \"all devices\",\n\t\t\tids:            []string{\"all\"},\n\t\t\texpectedError:  nil,\n\t\t\texpectedLength: 8,\n\t\t},\n\t\t{\n\t\t\tname: \"single GPU index\",\n\t\t\tids:  []string{\"0\"},\n\t\t\tsetupMock: func(server *dgxa100.Server) {\n\t\t\t\tfor _, d := range server.Devices {\n\t\t\t\t\t// TODO: This is not implemented in the mock.\n\t\t\t\t\t(d.(*dgxa100.Device)).IsMigDeviceHandleFunc = func() (bool, nvml.Return) {\n\t\t\t\t\t\treturn false, nvml.SUCCESS\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\texpectedError:  nil,\n\t\t\texpectedLength: 1,\n\t\t},\n\t\t{\n\t\t\tname: \"single UUID\",\n\t\t\tids:  []string{\"GPU-12345678-1234-1234-1234-123456789abc\"},\n\t\t\tsetupMock: func(server *dgxa100.Server) {\n\t\t\t\tfor _, d := range server.Devices {\n\t\t\t\t\t// TODO: This is not implemented in the mock.\n\t\t\t\t\t(d.(*dgxa100.Device)).IsMigDeviceHandleFunc = func() (bool, nvml.Return) {\n\t\t\t\t\t\treturn false, nvml.SUCCESS\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tserver.DeviceGetHandleByUUIDFunc = func(s string) (nvml.Device, nvml.Return) {\n\t\t\t\t\tif s == \"GPU-12345678-1234-1234-1234-123456789abc\" {\n\t\t\t\t\t\treturn server.Devices[3], nvml.SUCCESS\n\t\t\t\t\t}\n\t\t\t\t\treturn server.Devices[0], nvml.SUCCESS\n\t\t\t\t}\n\t\t\t},\n\t\t\texpectedError:  nil,\n\t\t\texpectedLength: 1,\n\t\t},\n\t\t{\n\t\t\tname: \"MIG device index\",\n\t\t\tids:  []string{\"0:0\"},\n\t\t\tsetupMock: func(server *dgxa100.Server) {\n\t\t\t\tmig := &mocknvml.Device{\n\t\t\t\t\tIsMigDeviceHandleFunc: func() (bool, nvml.Return) {\n\t\t\t\t\t\treturn true, nvml.SUCCESS\n\t\t\t\t\t},\n\t\t\t\t\tGetDeviceHandleFromMigDeviceHandleFunc: func() (nvml.Device, nvml.Return) {\n\t\t\t\t\t\treturn server.Devices[0], nvml.SUCCESS\n\t\t\t\t\t},\n\t\t\t\t\tGetIndexFunc: func() (int, nvml.Return) {\n\t\t\t\t\t\treturn 0, nvml.SUCCESS\n\t\t\t\t\t},\n\t\t\t\t\tGetUUIDFunc: func() (string, nvml.Return) {\n\t\t\t\t\t\treturn \"MIG-foo\", nvml.SUCCESS\n\t\t\t\t\t},\n\t\t\t\t}\n\n\t\t\t\tserver.Devices[0].(*dgxa100.Device).GetMigDeviceHandleByIndexFunc = func(n int) (nvml.Device, nvml.Return) {\n\t\t\t\t\tif n != 0 {\n\t\t\t\t\t\treturn nil, nvml.ERROR_INVALID_ARGUMENT\n\t\t\t\t\t}\n\n\t\t\t\t\treturn mig, nvml.SUCCESS\n\t\t\t\t}\n\n\t\t\t\tserver.DeviceGetHandleByUUIDFunc = func(s string) (nvml.Device, nvml.Return) {\n\t\t\t\t\tif s == \"MIG-foo\" {\n\t\t\t\t\t\treturn mig, nvml.SUCCESS\n\t\t\t\t\t}\n\t\t\t\t\treturn nil, nvml.ERROR_INVALID_ARGUMENT\n\t\t\t\t}\n\t\t\t},\n\t\t\texpectedError:  nil,\n\t\t\texpectedLength: 1,\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\t// Set up a mock server, using the DGX A100 mock.\n\t\t\tmockNvml := dgxa100.New()\n\t\t\tmockOverrides(mockNvml)\n\t\t\tif tc.setupMock != nil {\n\t\t\t\ttc.setupMock(mockNvml)\n\t\t\t}\n\n\t\t\tmockDev := device.New(mockNvml)\n\n\t\t\tl := &nvmllib{\n\t\t\t\tplatformlibs: platformlibs{\n\t\t\t\t\tnvmllib:   mockNvml,\n\t\t\t\t\tdevicelib: mockDev,\n\t\t\t\t},\n\t\t\t}\n\t\t\t// Call the function under test\n\t\t\tgenerators, err := l.getDeviceSpecGeneratorsForIDs(tc.ids...)\n\n\t\t\trequire.EqualValues(t, tc.expectedError, err)\n\t\t\trequire.Len(t, generators, tc.expectedLength)\n\t\t})\n\t}\n}\n\n// TODO: These need to be implemented in go-nvlib\nfunc mockOverrides(server *dgxa100.Server) {\n\tfor i, d := range server.Devices {\n\t\t// TODO: This is not implemented in the mock.\n\t\t(d.(*dgxa100.Device)).GetMaxMigDeviceCountFunc = func() (int, nvml.Return) {\n\t\t\treturn 0, nvml.SUCCESS\n\t\t}\n\t\t(d.(*dgxa100.Device)).GetIndexFunc = func() (int, nvml.Return) {\n\t\t\treturn i, nvml.SUCCESS\n\t\t}\n\t\t(d.(*dgxa100.Device)).GetUUIDFunc = func() (string, nvml.Return) {\n\t\t\treturn d.(*dgxa100.Device).UUID, nvml.SUCCESS\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "pkg/nvcdi/lib-wsl.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage nvcdi\n\nimport (\n\t\"fmt\"\n\n\t\"tags.cncf.io/container-device-interface/pkg/cdi\"\n\t\"tags.cncf.io/container-device-interface/specs-go\"\n)\n\ntype wsllib nvcdilib\n\nvar _ deviceSpecGeneratorFactory = (*wsllib)(nil)\n\nfunc (l *wsllib) DeviceSpecGenerators(...string) (DeviceSpecGenerator, error) {\n\treturn l, nil\n}\n\n// GetDeviceSpecs returns the CDI device specs for a single all device.\nfunc (l *wsllib) GetDeviceSpecs() ([]specs.Device, error) {\n\tdevice := l.newDXGDeviceDiscoverer()\n\tdeviceEdits, err := l.editsFactory.FromDiscoverer(device)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to create container edits for DXG device: %v\", err)\n\t}\n\n\tdeviceSpec := specs.Device{\n\t\tName:           \"all\",\n\t\tContainerEdits: *deviceEdits.ContainerEdits,\n\t}\n\n\treturn []specs.Device{deviceSpec}, nil\n}\n\n// GetCommonEdits generates a CDI specification that can be used for ANY devices\nfunc (l *wsllib) GetCommonEdits() (*cdi.ContainerEdits, error) {\n\tdriver, err := l.newWSLDriverDiscoverer()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to create discoverer for WSL driver: %v\", err)\n\t}\n\n\treturn l.editsFactory.FromDiscoverer(driver)\n}\n"
  },
  {
    "path": "pkg/nvcdi/lib.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage nvcdi\n\nimport (\n\t\"fmt\"\n\t\"slices\"\n\n\t\"github.com/NVIDIA/go-nvml/pkg/nvml\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/discover\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/edits\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/lookup/root\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/nvsandboxutils\"\n)\n\ntype nvcdilib struct {\n\tlogger logger.Interface\n\tplatformlibs\n\tdeviceNamers DeviceNamers\n\t// TODO: We should use the devRoot associated with the driver.\n\tdevRoot            string\n\tlibrarySearchPaths []string\n\n\tcsv csvOptions\n\n\tdriver *root.Driver\n\n\tfeatureFlags map[FeatureFlag]bool\n\n\thookCreator  discover.HookCreator\n\teditsFactory edits.Factory\n}\n\n// New creates a new nvcdi library\nfunc New(opts ...Option) (Interface, error) {\n\to := populateOptions(opts...)\n\n\tl := &nvcdilib{\n\t\tlogger:       o.logger,\n\t\tplatformlibs: o.platformlibs,\n\t\tdriver: root.New(\n\t\t\to.getDriverOptions()...,\n\t\t),\n\t\tdevRoot:      o.devRoot,\n\t\tdeviceNamers: o.deviceNamers,\n\n\t\tlibrarySearchPaths: slices.Clone(o.librarySearchPaths),\n\t\tfeatureFlags:       o.featureFlags,\n\n\t\tcsv: o.csv,\n\n\t\thookCreator: discover.NewHookCreator(\n\t\t\tdiscover.WithNVIDIACDIHookPath(o.nvidiaCDIHookPath),\n\t\t\tdiscover.WithEnabledHooks(o.enabledHooks...),\n\t\t\tdiscover.WithLdconfigPath(o.ldconfigPath),\n\t\t\tdiscover.WithDisabledHooks(o.disabledHooks...),\n\t\t),\n\t\teditsFactory: o.editsFactory,\n\t}\n\n\tvar factory deviceSpecGeneratorFactory\n\tswitch o.mode {\n\tcase ModeCSV:\n\t\tfactory = (*csvlib)(l)\n\tcase ModeManagement:\n\t\tfactory = (*managementlib)(l)\n\tcase ModeNvml:\n\t\tfactory = (*nvmllib)(l)\n\tcase ModeWsl:\n\t\tfactory = (*wsllib)(l)\n\tcase ModeGdrcopy, ModeGds, ModeMofed, ModeNvswitch:\n\t\tfactory = &gatedlib{\n\t\t\tnvcdilib: l,\n\t\t\tmode:     o.mode,\n\t\t}\n\tcase ModeImex:\n\t\tfactory = (*imexlib)(l)\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"unknown mode %q\", o.mode)\n\t}\n\n\tw := wrapper{\n\t\tfactory:             factory,\n\t\tvendor:              o.getVendorOrDefault(),\n\t\tclass:               o.getClassOrDefault(),\n\t\tmergedDeviceOptions: o.mergedDeviceOptions,\n\t}\n\treturn &w, nil\n}\n\ntype nvmllibAsVersioner struct {\n\tnvml.Interface\n}\n\nfunc nvmllibWithVersion(nvmllib nvml.Interface) *nvmllibAsVersioner {\n\tif nvmllib == nil {\n\t\treturn nil\n\t}\n\treturn &nvmllibAsVersioner{\n\t\tInterface: nvmllib,\n\t}\n}\n\nfunc (l *nvmllibAsVersioner) Version() (string, error) {\n\tif l == nil || l.Interface == nil {\n\t\treturn \"\", fmt.Errorf(\"nvml library not initialized\")\n\t}\n\n\tr := l.Init()\n\tif r != nvml.SUCCESS {\n\t\treturn \"\", fmt.Errorf(\"failed to initialize nvml: %v\", r)\n\t}\n\tdefer func() {\n\t\t_ = l.Shutdown()\n\t}()\n\n\tversion, r := l.SystemGetDriverVersion()\n\tif r != nvml.SUCCESS {\n\t\treturn \"\", fmt.Errorf(\"failed to get driver version: %v\", r)\n\t}\n\treturn version, nil\n}\n\ntype nvsandboxutilslibAsVersioner struct {\n\tnvsandboxutils.Interface\n}\n\nfunc nvsandboxutilslibWithVersion(nvsandboxutilslib nvsandboxutils.Interface) *nvsandboxutilslibAsVersioner {\n\tif nvsandboxutilslib == nil {\n\t\treturn nil\n\t}\n\treturn &nvsandboxutilslibAsVersioner{\n\t\tInterface: nvsandboxutilslib,\n\t}\n}\n\nfunc (l *nvsandboxutilslibAsVersioner) Version() (string, error) {\n\tif l == nil || l.Interface == nil {\n\t\treturn \"\", fmt.Errorf(\"libnvsandboxutils is not available\")\n\t}\n\n\t// Sandboxutils initialization should happen before this function is called\n\tversion, ret := l.GetDriverVersion()\n\tif ret != nvsandboxutils.SUCCESS {\n\t\treturn \"\", fmt.Errorf(\"%v\", ret)\n\t}\n\treturn version, nil\n}\n\nfunc (o *options) getNvmlLib() nvml.Interface {\n\tif o.nvmllib != nil {\n\t\treturn o.nvmllib\n\t}\n\n\tvar nvmlOpts []nvml.LibraryOption\n\tcandidates, err := o.driverLibraryLocator().Locate(\"libnvidia-ml.so.1\")\n\tif err != nil {\n\t\to.logger.Warningf(\"Ignoring error in locating libnvidia-ml.so.1: %v\", err)\n\t} else {\n\t\tlibNvidiaMlPath := candidates[0]\n\t\to.logger.Infof(\"Using %v\", libNvidiaMlPath)\n\t\tnvmlOpts = append(nvmlOpts, nvml.WithLibraryPath(libNvidiaMlPath))\n\t}\n\treturn nvml.New(nvmlOpts...)\n}\n\n// getNvsandboxUtilsLib returns the nvsandboxutilslib to use for CDI spec\n// generation.\nfunc (o *options) getNvsandboxUtilsLib() nvsandboxutils.Interface {\n\tif o.featureFlags[FeatureDisableNvsandboxUtils] {\n\t\treturn nil\n\t}\n\tif o.nvsandboxutilslib != nil {\n\t\treturn o.nvsandboxutilslib\n\t}\n\n\tvar nvsandboxutilsOpts []nvsandboxutils.LibraryOption\n\t// Set the library path for libnvidia-sandboxutils\n\tcandidates, err := o.driverLibraryLocator().Locate(\"libnvidia-sandboxutils.so.1\")\n\tif err != nil {\n\t\to.logger.Warningf(\"Ignoring error in locating libnvidia-sandboxutils.so.1: %v\", err)\n\t} else {\n\t\tlibNvidiaSandboxutilsPath := candidates[0]\n\t\to.logger.Infof(\"Using %v\", libNvidiaSandboxutilsPath)\n\t\tnvsandboxutilsOpts = append(nvsandboxutilsOpts, nvsandboxutils.WithLibraryPath(libNvidiaSandboxutilsPath))\n\t}\n\n\t// We try to initialize the library once to ensure that we have a valid installation.\n\tlib := nvsandboxutils.New(nvsandboxutilsOpts...)\n\t// TODO: Should this accept the driver root or the devRoot?\n\tif r := lib.Init(o.driverRoot); r != nvsandboxutils.SUCCESS {\n\t\to.logger.Warningf(\"Failed to init nvsandboxutils: %v; ignoring\", r)\n\t\treturn nil\n\t}\n\tdefer func() {\n\t\t_ = lib.Shutdown()\n\t}()\n\n\treturn lib\n}\n\nfunc (o *options) getDriverOptions() []root.Option {\n\treturn []root.Option{\n\t\troot.WithLogger(o.logger),\n\t\troot.WithDriverRoot(o.driverRoot),\n\t\troot.WithDevRoot(o.devRoot),\n\t\troot.WithLibrarySearchPaths(o.librarySearchPaths...),\n\t\troot.WithConfigSearchPaths(o.configSearchPaths...),\n\t\troot.WithVersioner(\n\t\t\troot.FirstOf(\n\t\t\t\tnvsandboxutilslibWithVersion(o.nvsandboxutilslib),\n\t\t\t\tnvmllibWithVersion(o.nvmllib),\n\t\t\t),\n\t\t),\n\t}\n}\n"
  },
  {
    "path": "pkg/nvcdi/lib_test.go",
    "content": "/**\n# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage nvcdi\n\nimport (\n\t\"path/filepath\"\n\t\"testing\"\n\n\ttestlog \"github.com/sirupsen/logrus/hooks/test\"\n\t\"github.com/stretchr/testify/require\"\n\t\"tags.cncf.io/container-device-interface/specs-go\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/devices\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/test\"\n)\n\nfunc TestNew(t *testing.T) {\n\tlogger, _ := testlog.NewNullLogger()\n\n\tdefer devices.SetAllForTest()()\n\n\tmoduleRoot, err := test.GetModuleRoot()\n\trequire.NoError(t, err)\n\n\tlookupRoot := filepath.Join(moduleRoot, \"testdata\", \"lookup\")\n\n\ttestCases := []struct {\n\t\tdescription       string\n\t\tmode              string\n\t\tadditionalOptions []Option\n\t\tdriverRootfs      string\n\t\tdevRootfs         string\n\t\texpectedInitError error\n\n\t\texpectedSpec      *specs.Spec\n\t\texpectedSpecError error\n\t}{\n\t\t{\n\t\t\tdescription:  \"nvswitch mode is supported\",\n\t\t\tmode:         \"nvswitch\",\n\t\t\tdriverRootfs: \"rootfs-with-nvswitch\",\n\t\t\texpectedSpec: &specs.Spec{\n\t\t\t\tVersion: specs.CurrentVersion,\n\t\t\t\tKind:    \"nvidia.com/nvswitch\",\n\t\t\t\tDevices: []specs.Device{\n\t\t\t\t\t{\n\t\t\t\t\t\tName: \"all\",\n\t\t\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\t\t\tDeviceNodes: []*specs.DeviceNode{\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tPath:     \"/dev/nvidia-nvswitch0\",\n\t\t\t\t\t\t\t\t\tHostPath: \"/dev/nvidia-nvswitch0\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tPath:     \"/dev/nvidia-nvswitch1\",\n\t\t\t\t\t\t\t\t\tHostPath: \"/dev/nvidia-nvswitch1\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tPath:     \"/dev/nvidia-nvswitchctl\",\n\t\t\t\t\t\t\t\t\tHostPath: \"/dev/nvidia-nvswitchctl\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\tEnv: []string{\n\t\t\t\t\t\t\"NVIDIA_VISIBLE_DEVICES=void\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription:  \"gds mode is supported\",\n\t\t\tmode:         \"gds\",\n\t\t\tdriverRootfs: \"rootfs-1\",\n\t\t\texpectedSpec: &specs.Spec{\n\t\t\t\tVersion: specs.CurrentVersion,\n\t\t\t\tKind:    \"nvidia.com/gds\",\n\t\t\t\tDevices: []specs.Device{\n\t\t\t\t\t{\n\t\t\t\t\t\tName: \"all\",\n\t\t\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\t\t\tDeviceNodes: []*specs.DeviceNode{\n\t\t\t\t\t\t\t\t{Path: \"/dev/nvidia-fs0\", HostPath: \"/dev/nvidia-fs0\"},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tMounts: []*specs.Mount{\n\t\t\t\t\t\t\t\t{ContainerPath: \"/etc/cufile.json\", HostPath: \"/etc/cufile.json\", Options: []string{\"ro\", \"nosuid\", \"nodev\", \"rbind\", \"rprivate\"}},\n\t\t\t\t\t\t\t\t{ContainerPath: \"/run/udev\", HostPath: \"/run/udev\", Options: []string{\"ro\", \"nosuid\", \"nodev\", \"rbind\", \"rprivate\"}},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\tEnv: []string{\n\t\t\t\t\t\t\"NVIDIA_VISIBLE_DEVICES=void\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription:  \"gdrcopy mode is supported\",\n\t\t\tmode:         \"gdrcopy\",\n\t\t\tdriverRootfs: \"rootfs-1\",\n\t\t\texpectedSpec: &specs.Spec{\n\t\t\t\tVersion: specs.CurrentVersion,\n\t\t\t\tKind:    \"nvidia.com/gdrcopy\",\n\t\t\t\tDevices: []specs.Device{\n\t\t\t\t\t{\n\t\t\t\t\t\tName: \"all\",\n\t\t\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\t\t\tDeviceNodes: []*specs.DeviceNode{\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tPath:     \"/dev/gdrdrv\",\n\t\t\t\t\t\t\t\t\tHostPath: \"/dev/gdrdrv\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\tEnv: []string{\n\t\t\t\t\t\t\"NVIDIA_VISIBLE_DEVICES=void\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription:  \"mofed mode is supported\",\n\t\t\tmode:         \"mofed\",\n\t\t\tdriverRootfs: \"rootfs-1\",\n\t\t\texpectedSpec: &specs.Spec{\n\t\t\t\tVersion: specs.CurrentVersion,\n\t\t\t\tKind:    \"nvidia.com/mofed\",\n\t\t\t\tDevices: []specs.Device{\n\t\t\t\t\t{\n\t\t\t\t\t\tName: \"all\",\n\t\t\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\t\t\tDeviceNodes: []*specs.DeviceNode{\n\t\t\t\t\t\t\t\t{Path: \"/dev/infiniband/rdma_cm\", HostPath: \"/dev/infiniband/rdma_cm\"},\n\t\t\t\t\t\t\t\t{Path: \"/dev/infiniband/uverbs0\", HostPath: \"/dev/infiniband/uverbs0\"},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\tEnv: []string{\n\t\t\t\t\t\t\"NVIDIA_VISIBLE_DEVICES=void\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription:  \"management mode is supported\",\n\t\t\tmode:         \"management\",\n\t\t\tdriverRootfs: \"rootfs-1\",\n\t\t\texpectedSpec: &specs.Spec{\n\t\t\t\tVersion: specs.CurrentVersion,\n\t\t\t\tKind:    \"management.nvidia.com/gpu\",\n\t\t\t\tDevices: []specs.Device{\n\t\t\t\t\t{\n\t\t\t\t\t\tName: \"all\",\n\t\t\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\t\t\tDeviceNodes: []*specs.DeviceNode{\n\t\t\t\t\t\t\t\t{Path: \"/dev/nvidia0\", HostPath: \"/dev/nvidia0\"},\n\t\t\t\t\t\t\t\t{Path: \"/dev/nvidiactl\", HostPath: \"/dev/nvidiactl\"},\n\t\t\t\t\t\t\t\t{Path: \"/dev/nvidia-caps-imex-channels/channel0\", HostPath: \"/dev/nvidia-caps-imex-channels/channel0\"},\n\t\t\t\t\t\t\t\t{Path: \"/dev/nvidia-caps-imex-channels/channel1\", HostPath: \"/dev/nvidia-caps-imex-channels/channel1\"},\n\t\t\t\t\t\t\t\t{Path: \"/dev/nvidia-caps-imex-channels/channel2047\", HostPath: \"/dev/nvidia-caps-imex-channels/channel2047\"},\n\t\t\t\t\t\t\t\t{Path: \"/dev/nvidia-caps/nvidia-cap1\", HostPath: \"/dev/nvidia-caps/nvidia-cap1\"},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\tEnv: []string{\n\t\t\t\t\t\t\"NVIDIA_CTK_LIBCUDA_DIR=/lib/x86_64-linux-gnu\",\n\t\t\t\t\t\t\"NVIDIA_VISIBLE_DEVICES=void\",\n\t\t\t\t\t},\n\t\t\t\t\tMounts: []*specs.Mount{\n\t\t\t\t\t\t{ContainerPath: \"/lib/x86_64-linux-gnu/libcuda.so.999.88.77\", HostPath: \"/lib/x86_64-linux-gnu/libcuda.so.999.88.77\", Options: []string{\"ro\", \"nosuid\", \"nodev\", \"rbind\", \"rprivate\"}},\n\t\t\t\t\t\t{ContainerPath: \"/lib/x86_64-linux-gnu/vdpau/libvdpau_nvidia.so.999.88.77\", HostPath: \"/lib/x86_64-linux-gnu/vdpau/libvdpau_nvidia.so.999.88.77\", Options: []string{\"ro\", \"nosuid\", \"nodev\", \"rbind\", \"rprivate\"}},\n\t\t\t\t\t},\n\t\t\t\t\tHooks: []*specs.Hook{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHookName: \"createContainer\",\n\t\t\t\t\t\t\tPath:     \"/usr/bin/nvidia-cdi-hook\",\n\t\t\t\t\t\t\tArgs:     []string{\"nvidia-cdi-hook\", \"create-symlinks\", \"--link\", \"libcuda.so.1::/lib/x86_64-linux-gnu/libcuda.so\"},\n\t\t\t\t\t\t\tEnv:      []string{\"NVIDIA_CTK_DEBUG=false\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHookName: \"createContainer\",\n\t\t\t\t\t\t\tPath:     \"/usr/bin/nvidia-cdi-hook\",\n\t\t\t\t\t\t\tArgs:     []string{\"nvidia-cdi-hook\", \"update-ldcache\", \"--folder\", \"/lib/x86_64-linux-gnu\", \"--folder\", \"/lib/x86_64-linux-gnu/vdpau\"},\n\t\t\t\t\t\t\tEnv:      []string{\"NVIDIA_CTK_DEBUG=false\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription:  \"management mode is supported in split root\",\n\t\t\tmode:         \"management\",\n\t\t\tdriverRootfs: \"rootfs-split/driver-root\",\n\t\t\tdevRootfs:    \"rootfs-split/dev-root\",\n\t\t\texpectedSpec: &specs.Spec{\n\t\t\t\tVersion: specs.CurrentVersion,\n\t\t\t\tKind:    \"management.nvidia.com/gpu\",\n\t\t\t\tDevices: []specs.Device{\n\t\t\t\t\t{\n\t\t\t\t\t\tName: \"all\",\n\t\t\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\t\t\tDeviceNodes: []*specs.DeviceNode{\n\t\t\t\t\t\t\t\t{Path: \"/dev/nvidia0\", HostPath: \"/dev/nvidia0\"},\n\t\t\t\t\t\t\t\t{Path: \"/dev/nvidiactl\", HostPath: \"/dev/nvidiactl\"},\n\t\t\t\t\t\t\t\t{Path: \"/dev/nvidia-caps-imex-channels/channel0\", HostPath: \"/dev/nvidia-caps-imex-channels/channel0\"},\n\t\t\t\t\t\t\t\t{Path: \"/dev/nvidia-caps-imex-channels/channel1\", HostPath: \"/dev/nvidia-caps-imex-channels/channel1\"},\n\t\t\t\t\t\t\t\t{Path: \"/dev/nvidia-caps-imex-channels/channel2047\", HostPath: \"/dev/nvidia-caps-imex-channels/channel2047\"},\n\t\t\t\t\t\t\t\t{Path: \"/dev/nvidia-caps/nvidia-cap1\", HostPath: \"/dev/nvidia-caps/nvidia-cap1\"},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\tEnv: []string{\n\t\t\t\t\t\t\"NVIDIA_CTK_LIBCUDA_DIR=/lib/x86_64-linux-gnu\",\n\t\t\t\t\t\t\"NVIDIA_VISIBLE_DEVICES=void\",\n\t\t\t\t\t},\n\t\t\t\t\tMounts: []*specs.Mount{\n\t\t\t\t\t\t{ContainerPath: \"/lib/x86_64-linux-gnu/libcuda.so.999.88.77\", HostPath: \"/lib/x86_64-linux-gnu/libcuda.so.999.88.77\", Options: []string{\"ro\", \"nosuid\", \"nodev\", \"rbind\", \"rprivate\"}},\n\t\t\t\t\t\t{ContainerPath: \"/lib/x86_64-linux-gnu/vdpau/libvdpau_nvidia.so.999.88.77\", HostPath: \"/lib/x86_64-linux-gnu/vdpau/libvdpau_nvidia.so.999.88.77\", Options: []string{\"ro\", \"nosuid\", \"nodev\", \"rbind\", \"rprivate\"}},\n\t\t\t\t\t},\n\t\t\t\t\tHooks: []*specs.Hook{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHookName: \"createContainer\",\n\t\t\t\t\t\t\tPath:     \"/usr/bin/nvidia-cdi-hook\",\n\t\t\t\t\t\t\tArgs:     []string{\"nvidia-cdi-hook\", \"create-symlinks\", \"--link\", \"libcuda.so.1::/lib/x86_64-linux-gnu/libcuda.so\"},\n\t\t\t\t\t\t\tEnv:      []string{\"NVIDIA_CTK_DEBUG=false\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHookName: \"createContainer\",\n\t\t\t\t\t\t\tPath:     \"/usr/bin/nvidia-cdi-hook\",\n\t\t\t\t\t\t\tArgs:     []string{\"nvidia-cdi-hook\", \"update-ldcache\", \"--folder\", \"/lib/x86_64-linux-gnu\", \"--folder\", \"/lib/x86_64-linux-gnu/vdpau\"},\n\t\t\t\t\t\t\tEnv:      []string{\"NVIDIA_CTK_DEBUG=false\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription:  \"imex mode\",\n\t\t\tmode:         \"imex\",\n\t\t\tdriverRootfs: \"rootfs-1\",\n\t\t\texpectedSpec: &specs.Spec{\n\t\t\t\tVersion: specs.CurrentVersion,\n\t\t\t\tKind:    \"nvidia.com/imex-channel\",\n\t\t\t\tDevices: []specs.Device{\n\t\t\t\t\t{\n\t\t\t\t\t\tName: \"0\",\n\t\t\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\t\t\tDeviceNodes: []*specs.DeviceNode{\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tPath:     \"/dev/nvidia-caps-imex-channels/channel0\",\n\t\t\t\t\t\t\t\t\tHostPath: \"/dev/nvidia-caps-imex-channels/channel0\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tName: \"1\",\n\t\t\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\t\t\tDeviceNodes: []*specs.DeviceNode{\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tPath:     \"/dev/nvidia-caps-imex-channels/channel1\",\n\t\t\t\t\t\t\t\t\tHostPath: \"/dev/nvidia-caps-imex-channels/channel1\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tName: \"2047\",\n\t\t\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\t\t\tDeviceNodes: []*specs.DeviceNode{\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tPath:     \"/dev/nvidia-caps-imex-channels/channel2047\",\n\t\t\t\t\t\t\t\t\tHostPath: \"/dev/nvidia-caps-imex-channels/channel2047\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\tEnv: []string{\"NVIDIA_VISIBLE_DEVICES=void\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription:  \"csv mode\",\n\t\t\tmode:         \"csv\",\n\t\t\tdriverRootfs: \"rootfs-orin\",\n\t\t\tadditionalOptions: []Option{\n\t\t\t\tWithCSVFiles([]string{\n\t\t\t\t\tfilepath.Join(lookupRoot, \"rootfs-orin\", \"/etc/nvidia-container-runtime/host-files-for-container.d/devices.csv\"),\n\t\t\t\t\tfilepath.Join(lookupRoot, \"rootfs-orin\", \"/etc/nvidia-container-runtime/host-files-for-container.d/drivers.csv\"),\n\t\t\t\t}),\n\t\t\t},\n\t\t\texpectedSpec: &specs.Spec{\n\t\t\t\tVersion: specs.CurrentVersion,\n\t\t\t\tKind:    \"nvidia.com/gpu\",\n\t\t\t\tDevices: []specs.Device{\n\t\t\t\t\t{\n\t\t\t\t\t\tName: \"0\",\n\t\t\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\t\t\tDeviceNodes: []*specs.DeviceNode{\n\t\t\t\t\t\t\t\t{Path: \"/dev/nvidia0\", HostPath: \"/dev/nvidia0\"},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\tEnv: []string{\"NVIDIA_VISIBLE_DEVICES=void\"},\n\t\t\t\t\tMounts: []*specs.Mount{\n\t\t\t\t\t\t{HostPath: \"/usr/lib/aarch64-linux-gnu/nvidia/libcuda.so.1.1\", ContainerPath: \"/usr/lib/aarch64-linux-gnu/nvidia/libcuda.so.1.1\", Options: []string{\"ro\", \"nosuid\", \"nodev\", \"rbind\", \"rprivate\"}},\n\t\t\t\t\t\t{HostPath: \"/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-ml.so.1\", ContainerPath: \"/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-ml.so.1\", Options: []string{\"ro\", \"nosuid\", \"nodev\", \"rbind\", \"rprivate\"}},\n\t\t\t\t\t},\n\t\t\t\t\tHooks: []*specs.Hook{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHookName: \"createContainer\",\n\t\t\t\t\t\t\tPath:     \"/usr/bin/nvidia-cdi-hook\",\n\t\t\t\t\t\t\tArgs:     []string{\"nvidia-cdi-hook\", \"create-symlinks\", \"--link\", \"libcuda.so.1::/usr/lib/aarch64-linux-gnu/nvidia/libcuda.so\"},\n\t\t\t\t\t\t\tEnv:      []string{\"NVIDIA_CTK_DEBUG=false\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHookName: \"createContainer\",\n\t\t\t\t\t\t\tPath:     \"/usr/bin/nvidia-cdi-hook\",\n\t\t\t\t\t\t\tArgs:     []string{\"nvidia-cdi-hook\", \"update-ldcache\", \"--folder\", \"/usr/lib/aarch64-linux-gnu/nvidia\"},\n\t\t\t\t\t\t\tEnv:      []string{\"NVIDIA_CTK_DEBUG=false\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\tdriverRoot := tc.driverRootfs\n\t\t\tif driverRoot != \"\" {\n\t\t\t\tdriverRoot = filepath.Join(lookupRoot, tc.driverRootfs)\n\t\t\t}\n\t\t\tdevRoot := tc.devRootfs\n\t\t\tif devRoot != \"\" {\n\t\t\t\tdevRoot = filepath.Join(lookupRoot, tc.devRootfs)\n\t\t\t}\n\n\t\t\tl, err := New(\n\t\t\t\tappend([]Option{\n\t\t\t\t\tWithLogger(logger),\n\t\t\t\t\tWithMode(tc.mode),\n\t\t\t\t\tWithDriverRoot(driverRoot),\n\t\t\t\t\tWithDevRoot(devRoot),\n\t\t\t\t}, tc.additionalOptions...)...,\n\t\t\t)\n\t\t\trequire.EqualValues(t, tc.expectedInitError, err)\n\n\t\t\ts, err := l.GetSpec()\n\t\t\trequire.EqualValues(t, tc.expectedSpecError, err)\n\n\t\t\trequire.EqualValues(t, tc.expectedSpec, test.StripRoot(test.StripRoot(s.Raw(), driverRoot), devRoot))\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "pkg/nvcdi/management.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage nvcdi\n\nimport (\n\t\"fmt\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"tags.cncf.io/container-device-interface/pkg/cdi\"\n\t\"tags.cncf.io/container-device-interface/specs-go\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/discover\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/nvsandboxutils\"\n)\n\ntype managementlib nvcdilib\n\nvar _ deviceSpecGeneratorFactory = (*managementlib)(nil)\n\nfunc (l *managementlib) DeviceSpecGenerators(...string) (DeviceSpecGenerator, error) {\n\treturn l, nil\n}\n\n// GetDeviceSpecs returns the CDI device specs for a single all device.\nfunc (l *managementlib) GetDeviceSpecs() ([]specs.Device, error) {\n\tdevices, err := l.newManagementDeviceDiscoverer()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to create device discoverer: %v\", err)\n\t}\n\n\tedits, err := l.editsFactory.FromDiscoverer(devices)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to create edits from discoverer: %v\", err)\n\t}\n\n\tif len(edits.DeviceNodes) == 0 {\n\t\treturn nil, fmt.Errorf(\"no NVIDIA device nodes found\")\n\t}\n\n\tdevice := specs.Device{\n\t\tName:           \"all\",\n\t\tContainerEdits: *edits.ContainerEdits,\n\t}\n\treturn []specs.Device{device}, nil\n}\n\n// GetCommonEdits returns the common edits for use in managementlib containers.\nfunc (l *managementlib) GetCommonEdits() (*cdi.ContainerEdits, error) {\n\tif l.nvsandboxutilslib != nil {\n\t\tif r := l.nvsandboxutilslib.Init(l.driver.Root); r != nvsandboxutils.SUCCESS {\n\t\t\tl.logger.Warningf(\"Failed to init nvsandboxutils: %v; ignoring\", r)\n\t\t\tl.nvsandboxutilslib = nil\n\t\t}\n\t\tdefer func() {\n\t\t\tif l.nvsandboxutilslib == nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t\t_ = l.nvsandboxutilslib.Shutdown()\n\t\t}()\n\t}\n\n\tdriver, err := (*nvcdilib)(l).newDriverVersionDiscoverer()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to create driver library discoverer: %v\", err)\n\t}\n\n\tedits, err := l.editsFactory.FromDiscoverer(driver)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to create edits from discoverer: %v\", err)\n\t}\n\n\treturn edits, nil\n}\n\ntype managementDiscoverer struct {\n\tdiscover.Discover\n}\n\n// newManagementDeviceDiscoverer returns a discover.Discover that discovers device nodes for use in managementlib containers.\n// NVML is not used to query devices and all device nodes are returned.\nfunc (l *managementlib) newManagementDeviceDiscoverer() (discover.Discover, error) {\n\tdeviceNodes := discover.NewCharDeviceDiscoverer(\n\t\tl.logger,\n\t\tl.driver.DevRoot,\n\t\t[]string{\n\t\t\t\"/dev/nvidia*\",\n\t\t\t\"/dev/nvidia-caps/nvidia-cap*\",\n\t\t\t\"/dev/nvidia-modeset\",\n\t\t\t\"/dev/nvidia-uvm-tools\",\n\t\t\t\"/dev/nvidia-uvm\",\n\t\t\t\"/dev/nvidiactl\",\n\t\t\t\"/dev/nvidia-caps-imex-channels/channel*\",\n\t\t},\n\t)\n\n\tdeviceFolderPermissionHooks := (*nvcdilib)(l).newDeviceFolderPermissionHookDiscoverer(\n\t\tdeviceNodes,\n\t)\n\n\td := discover.Merge(\n\t\t&managementDiscoverer{deviceNodes},\n\t\tdeviceFolderPermissionHooks,\n\t)\n\treturn d, nil\n}\n\nfunc (m *managementDiscoverer) Devices() ([]discover.Device, error) {\n\tdevices, err := m.Discover.Devices()\n\tif err != nil {\n\t\treturn devices, err\n\t}\n\n\tvar filteredDevices []discover.Device\n\tfor _, device := range devices {\n\t\tif m.nodeIsBlocked(device.HostPath) {\n\t\t\tcontinue\n\t\t}\n\t\tfilteredDevices = append(filteredDevices, device)\n\t}\n\n\treturn filteredDevices, nil\n}\n\n// nodeIsBlocked returns true if the specified device node should be ignored.\nfunc (m managementDiscoverer) nodeIsBlocked(path string) bool {\n\tblockedPrefixes := []string{\"nvidia-fs\", \"nvidia-nvswitch\", \"nvidia-nvlink\"}\n\tnodeName := filepath.Base(path)\n\tfor _, prefix := range blockedPrefixes {\n\t\tif strings.HasPrefix(nodeName, prefix) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "pkg/nvcdi/mig-device-nvml.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage nvcdi\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/NVIDIA/go-nvlib/pkg/nvlib/device\"\n\t\"github.com/NVIDIA/go-nvml/pkg/nvml\"\n\t\"tags.cncf.io/container-device-interface/pkg/cdi\"\n\t\"tags.cncf.io/container-device-interface/specs-go\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/platform-support/dgpu\"\n)\n\ntype migDeviceSpecGenerator struct {\n\t*fullGPUDeviceSpecGenerator\n\tmigIndex int\n\tmigUUID  string\n}\n\nvar _ DeviceSpecGenerator = (*migDeviceSpecGenerator)(nil)\n\nfunc (l *migDeviceSpecGenerator) GetUUID() (string, error) {\n\treturn l.migUUID, nil\n}\n\nfunc (l *nvmllib) newMIGDeviceSpecGeneratorFromDevice(i int, d device.Device, j int, m device.MigDevice) (*migDeviceSpecGenerator, error) {\n\tparent, err := l.newFullGPUDeviceSpecGeneratorFromDevice(i, d, make(map[FeatureFlag]bool))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tmigUUID, ret := m.GetUUID()\n\tif ret != nvml.SUCCESS {\n\t\treturn nil, fmt.Errorf(\"failed to get MIG UUID: %v\", ret)\n\t}\n\n\te := &migDeviceSpecGenerator{\n\t\tfullGPUDeviceSpecGenerator: parent,\n\t\tmigIndex:                   j,\n\t\tmigUUID:                    migUUID,\n\t}\n\n\treturn e, nil\n}\n\nfunc (l *nvmllib) newMIGDeviceSpecGeneratorFromNVMLDevice(uuid string, nvmlMIGDevice nvml.Device) (DeviceSpecGenerator, error) {\n\tmigDevice, err := l.devicelib.NewMigDevice(nvmlMIGDevice)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tnvmlParentDevice, ret := migDevice.GetDeviceHandleFromMigDeviceHandle()\n\tif ret != nvml.SUCCESS {\n\t\treturn nil, fmt.Errorf(\"failed to get parent device handle: %v\", ret)\n\t}\n\tparentDevice, err := l.devicelib.NewDevice(nvmlParentDevice)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tparentIndex, ret := parentDevice.GetIndex()\n\tif ret != nvml.SUCCESS {\n\t\treturn nil, fmt.Errorf(\"failed to get parent device index: %v\", ret)\n\t}\n\n\tmigDeviceIndex, ret := nvmlMIGDevice.GetIndex()\n\tif ret != nvml.SUCCESS {\n\t\treturn nil, fmt.Errorf(\"failed to get MIG device index: %w\", ret)\n\t}\n\n\treturn l.newMIGDeviceSpecGeneratorFromDevice(parentIndex, parentDevice, migDeviceIndex, migDevice)\n}\n\nfunc (l *migDeviceSpecGenerator) GetDeviceSpecs() ([]specs.Device, error) {\n\tdeviceEdits, err := l.getDeviceEdits()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to get CDI device edits: %w\", err)\n\t}\n\n\tnames, err := l.getNames()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to get device names: %w\", err)\n\t}\n\n\tvar deviceSpecs []specs.Device\n\tfor _, name := range names {\n\t\tdeviceSpec := specs.Device{\n\t\t\tName:           name,\n\t\t\tContainerEdits: *deviceEdits.ContainerEdits,\n\t\t}\n\t\tdeviceSpecs = append(deviceSpecs, deviceSpec)\n\t}\n\n\treturn deviceSpecs, nil\n}\n\nfunc (l *migDeviceSpecGenerator) migDevice() (device.MigDevice, error) {\n\treturn l.devicelib.NewMigDeviceByUUID(l.migUUID)\n}\n\n// GetMIGDeviceEdits returns the CDI edits for the MIG device represented by 'mig' on 'parent'.\nfunc (l *migDeviceSpecGenerator) getDeviceEdits() (*cdi.ContainerEdits, error) {\n\tdevice, err := l.device()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tmigDevice, err := l.migDevice()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdeviceNodes, err := dgpu.NewForMigDevice(device, migDevice,\n\t\tdgpu.WithDriver(l.driver),\n\t\tdgpu.WithLogger(l.logger),\n\t\tdgpu.WithHookCreator(l.hookCreator),\n\t\tdgpu.WithNvsandboxuitilsLib(l.nvsandboxutilslib),\n\t)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to create device discoverer: %v\", err)\n\t}\n\n\teditsForDevice, err := l.editsFactory.FromDiscoverer(deviceNodes)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to create container edits for Compute Instance: %v\", err)\n\t}\n\n\treturn editsForDevice, nil\n}\n\nfunc (l *migDeviceSpecGenerator) getNames() ([]string, error) {\n\treturn l.deviceNamers.GetMigDeviceNames(l.index, l.fullGPUDeviceSpecGenerator, l.migIndex, l)\n}\n"
  },
  {
    "path": "pkg/nvcdi/mocks.go",
    "content": "/**\n# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage nvcdi\n\nimport \"github.com/NVIDIA/go-nvlib/pkg/nvlib/info\"\n\n//go:generate moq -rm -fmt=goimports -stub -out info-interface_mock.go . infoInterface\ntype infoInterface info.Interface\n"
  },
  {
    "path": "pkg/nvcdi/mode.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage nvcdi\n\nimport (\n\t\"sync\"\n\n\t\"github.com/NVIDIA/go-nvlib/pkg/nvlib/info\"\n)\n\ntype Mode string\n\nconst (\n\t// ModeAuto configures the CDI spec generator to automatically detect the system configuration\n\tModeAuto = Mode(\"auto\")\n\t// ModeNvml configures the CDI spec generator to use the NVML library.\n\tModeNvml = Mode(\"nvml\")\n\t// ModeWsl configures the CDI spec generator to generate a WSL spec.\n\tModeWsl = Mode(\"wsl\")\n\t// ModeManagement configures the CDI spec generator to generate a management spec.\n\tModeManagement = Mode(\"management\")\n\t// ModeGdrcopy configures the CDI spec generator to generate a GDR Copy spec.\n\tModeGdrcopy = Mode(\"gdrcopy\")\n\t// ModeGds configures the CDI spec generator to generate a GDS spec.\n\tModeGds = Mode(\"gds\")\n\t// ModeMofed configures the CDI spec generator to generate a MOFED spec.\n\tModeMofed = Mode(\"mofed\")\n\t// ModeCSV configures the CDI spec generator to generate a spec based on the contents of CSV\n\t// mountspec files.\n\tModeCSV = Mode(\"csv\")\n\t// ModeImex configures the CDI spec generator to generate a spec for the available IMEX channels.\n\tModeImex = Mode(\"imex\")\n\t// ModeNvswitch configures the CDI spec generator to generate a spec for the available nvswitch devices.\n\tModeNvswitch = Mode(\"nvswitch\")\n)\n\ntype modeConstraint interface {\n\tstring | Mode\n}\n\ntype modes struct {\n\tlookup map[Mode]bool\n\tall    []Mode\n}\n\nvar validModes modes\nvar validModesOnce sync.Once\n\nfunc getModes() modes {\n\tvalidModesOnce.Do(func() {\n\t\tall := []Mode{\n\t\t\tModeAuto,\n\t\t\tModeCSV,\n\t\t\tModeGdrcopy,\n\t\t\tModeGds,\n\t\t\tModeImex,\n\t\t\tModeManagement,\n\t\t\tModeMofed,\n\t\t\tModeNvml,\n\t\t\tModeNvswitch,\n\t\t\tModeWsl,\n\t\t}\n\t\tlookup := make(map[Mode]bool)\n\n\t\tfor _, m := range all {\n\t\t\tlookup[m] = true\n\t\t}\n\n\t\tvalidModes = modes{\n\t\t\tlookup: lookup,\n\t\t\tall:    all,\n\t\t}\n\t},\n\t)\n\treturn validModes\n}\n\n// AllModes returns the set of valid modes.\nfunc AllModes[T modeConstraint]() []T {\n\tvar output []T\n\tfor _, m := range getModes().all {\n\t\toutput = append(output, T(m))\n\t}\n\treturn output\n}\n\n// IsValidMode checks whether a specified mode is valid.\nfunc IsValidMode[T modeConstraint](mode T) bool {\n\treturn getModes().lookup[Mode(mode)]\n}\n\n// resolveMode resolves the mode for CDI spec generation based on the current system.\nfunc (o *options) resolveMode() (rmode Mode) {\n\tif o.mode != ModeAuto {\n\t\treturn o.mode\n\t}\n\tdefer func() {\n\t\to.logger.Infof(\"Auto-detected mode as '%v'\", rmode)\n\t}()\n\n\tplatform := o.infolib.ResolvePlatform()\n\tswitch platform {\n\tcase info.PlatformNVML:\n\t\treturn ModeNvml\n\tcase info.PlatformTegra:\n\t\treturn ModeCSV\n\tcase info.PlatformWSL:\n\t\treturn ModeWsl\n\t}\n\to.logger.Warningf(\"Unsupported platform detected: %v; assuming %v\", platform, ModeNvml)\n\treturn ModeNvml\n}\n"
  },
  {
    "path": "pkg/nvcdi/namer.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage nvcdi\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\n\t\"github.com/NVIDIA/go-nvml/pkg/nvml\"\n)\n\n// UUIDer is an interface for getting UUIDs.\ntype UUIDer interface {\n\tGetUUID() (string, error)\n}\n\n// DeviceNamers represents a list of device namers\ntype DeviceNamers []DeviceNamer\n\n// DeviceNamer is an interface for getting device names\ntype DeviceNamer interface {\n\tGetDeviceName(int, UUIDer) (string, error)\n\tGetMigDeviceName(int, UUIDer, int, UUIDer) (string, error)\n}\n\n// Supported device naming strategies\nconst (\n\t// DeviceNameStrategyIndex generates devices names such as 0 or 1:0\n\tDeviceNameStrategyIndex = \"index\"\n\t// DeviceNameStrategyTypeIndex generates devices names such as gpu0 or mig1:0\n\tDeviceNameStrategyTypeIndex = \"type-index\"\n\t// DeviceNameStrategyUUID uses the device UUID as the name\n\tDeviceNameStrategyUUID = \"uuid\"\n)\n\ntype deviceNameIndex struct {\n\tgpuPrefix string\n\tmigPrefix string\n}\ntype deviceNameUUID struct{}\n\n// NewDeviceNamer creates a Device Namer based on the supplied strategy.\n// This namer can be used to construct the names for MIG and GPU devices when generating the CDI spec.\nfunc NewDeviceNamer(strategy string) (DeviceNamer, error) {\n\tswitch strategy {\n\tcase DeviceNameStrategyIndex:\n\t\treturn deviceNameIndex{}, nil\n\tcase DeviceNameStrategyTypeIndex:\n\t\treturn deviceNameIndex{gpuPrefix: \"gpu\", migPrefix: \"mig\"}, nil\n\tcase DeviceNameStrategyUUID:\n\t\treturn deviceNameUUID{}, nil\n\t}\n\n\treturn nil, fmt.Errorf(\"invalid device name strategy: %v\", strategy)\n}\n\n// GetDeviceName returns the name for the specified device based on the naming strategy\nfunc (s deviceNameIndex) GetDeviceName(i int, _ UUIDer) (string, error) {\n\treturn fmt.Sprintf(\"%s%d\", s.gpuPrefix, i), nil\n}\n\n// GetMigDeviceName returns the name for the specified device based on the naming strategy\nfunc (s deviceNameIndex) GetMigDeviceName(i int, _ UUIDer, j int, _ UUIDer) (string, error) {\n\treturn fmt.Sprintf(\"%s%d:%d\", s.migPrefix, i, j), nil\n}\n\n// GetDeviceName returns the name for the specified device based on the naming strategy\nfunc (s deviceNameUUID) GetDeviceName(i int, d UUIDer) (string, error) {\n\tuuid, err := d.GetUUID()\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"failed to get device UUID: %v\", err)\n\t}\n\treturn uuid, nil\n}\n\n// GetMigDeviceName returns the name for the specified device based on the naming strategy\nfunc (s deviceNameUUID) GetMigDeviceName(i int, _ UUIDer, j int, mig UUIDer) (string, error) {\n\tuuid, err := mig.GetUUID()\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"failed to get device UUID: %v\", err)\n\t}\n\treturn uuid, nil\n}\n\n//go:generate moq -rm -fmt=goimports -stub -out namer_nvml_mock.go . nvmlUUIDer\ntype nvmlUUIDer interface {\n\tGetUUID() (string, nvml.Return)\n}\n\ntype convert struct {\n\tnvmlUUIDer\n}\n\ntype uuidUnsupported struct{}\n\nfunc (m convert) GetUUID() (string, error) {\n\tif m.nvmlUUIDer == nil {\n\t\treturn uuidUnsupported{}.GetUUID()\n\t}\n\tuuid, ret := m.nvmlUUIDer.GetUUID()\n\tif ret != nvml.SUCCESS {\n\t\treturn \"\", ret\n\t}\n\treturn uuid, nil\n}\n\nvar errUUIDUnsupported = errors.New(\"GetUUID is not supported\")\n\nfunc (m uuidUnsupported) GetUUID() (string, error) {\n\treturn \"\", errUUIDUnsupported\n}\n\nfunc (l DeviceNamers) GetDeviceNames(i int, d UUIDer) ([]string, error) {\n\tvar names []string\n\tfor _, namer := range l {\n\t\tname, err := namer.GetDeviceName(i, d)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif name == \"\" {\n\t\t\tcontinue\n\t\t}\n\t\tnames = append(names, name)\n\t}\n\tif len(names) == 0 {\n\t\treturn nil, errors.New(\"no names defined\")\n\t}\n\treturn names, nil\n}\n\nfunc (l DeviceNamers) GetMigDeviceNames(i int, d UUIDer, j int, mig UUIDer) ([]string, error) {\n\tvar names []string\n\tfor _, namer := range l {\n\t\tname, err := namer.GetMigDeviceName(i, d, j, mig)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif name == \"\" {\n\t\t\tcontinue\n\t\t}\n\t\tnames = append(names, name)\n\t}\n\tif len(names) == 0 {\n\t\treturn nil, errors.New(\"no names defined\")\n\t}\n\treturn names, nil\n}\n"
  },
  {
    "path": "pkg/nvcdi/namer_nvml_mock.go",
    "content": "// Code generated by moq; DO NOT EDIT.\n// github.com/matryer/moq\n\npackage nvcdi\n\nimport (\n\t\"sync\"\n\n\t\"github.com/NVIDIA/go-nvml/pkg/nvml\"\n)\n\n// Ensure, that nvmlUUIDerMock does implement nvmlUUIDer.\n// If this is not the case, regenerate this file with moq.\nvar _ nvmlUUIDer = &nvmlUUIDerMock{}\n\n// nvmlUUIDerMock is a mock implementation of nvmlUUIDer.\n//\n//\tfunc TestSomethingThatUsesnvmlUUIDer(t *testing.T) {\n//\n//\t\t// make and configure a mocked nvmlUUIDer\n//\t\tmockednvmlUUIDer := &nvmlUUIDerMock{\n//\t\t\tGetUUIDFunc: func() (string, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetUUID method\")\n//\t\t\t},\n//\t\t}\n//\n//\t\t// use mockednvmlUUIDer in code that requires nvmlUUIDer\n//\t\t// and then make assertions.\n//\n//\t}\ntype nvmlUUIDerMock struct {\n\t// GetUUIDFunc mocks the GetUUID method.\n\tGetUUIDFunc func() (string, nvml.Return)\n\n\t// calls tracks calls to the methods.\n\tcalls struct {\n\t\t// GetUUID holds details about calls to the GetUUID method.\n\t\tGetUUID []struct {\n\t\t}\n\t}\n\tlockGetUUID sync.RWMutex\n}\n\n// GetUUID calls GetUUIDFunc.\nfunc (mock *nvmlUUIDerMock) GetUUID() (string, nvml.Return) {\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetUUID.Lock()\n\tmock.calls.GetUUID = append(mock.calls.GetUUID, callInfo)\n\tmock.lockGetUUID.Unlock()\n\tif mock.GetUUIDFunc == nil {\n\t\tvar (\n\t\t\tsOut      string\n\t\t\treturnOut nvml.Return\n\t\t)\n\t\treturn sOut, returnOut\n\t}\n\treturn mock.GetUUIDFunc()\n}\n\n// GetUUIDCalls gets all the calls that were made to GetUUID.\n// Check the length with:\n//\n//\tlen(mockednvmlUUIDer.GetUUIDCalls())\nfunc (mock *nvmlUUIDerMock) GetUUIDCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetUUID.RLock()\n\tcalls = mock.calls.GetUUID\n\tmock.lockGetUUID.RUnlock()\n\treturn calls\n}\n"
  },
  {
    "path": "pkg/nvcdi/namer_test.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage nvcdi\n\nimport (\n\t\"testing\"\n\n\t\"github.com/NVIDIA/go-nvml/pkg/nvml\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestConvert(t *testing.T) {\n\ttestCases := []struct {\n\t\tdescription   string\n\t\tnvml          nvmlUUIDer\n\t\texpectedError error\n\t\texpecteUUID   string\n\t}{\n\t\t{\n\t\t\tdescription:   \"empty UUIDer returns error\",\n\t\t\texpectedError: errUUIDUnsupported,\n\t\t\texpecteUUID:   \"\",\n\t\t},\n\t\t{\n\t\t\tdescription: \"nvmlUUIDer returns UUID\",\n\t\t\tnvml: &nvmlUUIDerMock{\n\t\t\t\tGetUUIDFunc: func() (string, nvml.Return) {\n\t\t\t\t\treturn \"SOME_UUID\", nvml.SUCCESS\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedError: nil,\n\t\t\texpecteUUID:   \"SOME_UUID\",\n\t\t},\n\t\t{\n\t\t\tdescription: \"nvmlUUIDer returns error\",\n\t\t\tnvml: &nvmlUUIDerMock{\n\t\t\t\tGetUUIDFunc: func() (string, nvml.Return) {\n\t\t\t\t\treturn \"SOME_UUID\", nvml.ERROR_UNKNOWN\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedError: nvml.ERROR_UNKNOWN,\n\t\t\texpecteUUID:   \"\",\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\tuuid, err := convert{tc.nvml}.GetUUID()\n\t\t\trequire.ErrorIs(t, err, tc.expectedError)\n\t\t\trequire.Equal(t, tc.expecteUUID, uuid)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "pkg/nvcdi/options.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage nvcdi\n\nimport (\n\t\"github.com/NVIDIA/go-nvlib/pkg/nvlib/device\"\n\t\"github.com/NVIDIA/go-nvlib/pkg/nvlib/info\"\n\t\"github.com/NVIDIA/go-nvml/pkg/nvml\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/discover\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/edits\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/nvsandboxutils\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/platform-support/tegra/csv\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/lookup\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/nvcdi/transform\"\n)\n\ntype options struct {\n\tlogger logger.Interface\n\tplatformlibs\n\tmode               Mode\n\tdeviceNamers       DeviceNamers\n\tdriverRoot         string\n\tdevRoot            string\n\tnvidiaCDIHookPath  string\n\tldconfigPath       string\n\tconfigSearchPaths  []string\n\tlibrarySearchPaths []string\n\n\tcsv csvOptions\n\n\tvendor string\n\tclass  string\n\n\tmergedDeviceOptions []transform.MergedDeviceOption\n\n\tfeatureFlags map[FeatureFlag]bool\n\n\tdisabledHooks []discover.HookName\n\tenabledHooks  []discover.HookName\n\n\teditsFactory edits.Factory\n}\n\ntype platformlibs struct {\n\tnvmllib   nvml.Interface\n\tdevicelib device.Interface\n\tinfolib   info.Interface\n\n\tnvsandboxutilslib nvsandboxutils.Interface\n}\n\n// populateOptions applies the functional options and resolves the required\n// defaults.\nfunc populateOptions(opts ...Option) *options {\n\to := &options{\n\t\tmode:              ModeAuto,\n\t\tdriverRoot:        \"/\",\n\t\tnvidiaCDIHookPath: \"/usr/bin/nvidia-cdi-hook\",\n\t}\n\tfor _, opt := range opts {\n\t\topt(o)\n\t}\n\tif o.logger == nil {\n\t\to.logger = logger.New()\n\t}\n\tif len(o.deviceNamers) == 0 {\n\t\tindexNamer, _ := NewDeviceNamer(DeviceNameStrategyIndex)\n\t\to.deviceNamers = []DeviceNamer{indexNamer}\n\t}\n\tif o.devRoot == \"\" {\n\t\to.devRoot = o.driverRoot\n\t}\n\tif o.nvsandboxutilslib == nil {\n\t\to.nvsandboxutilslib = o.getNvsandboxUtilsLib()\n\t}\n\tif o.nvmllib == nil {\n\t\to.nvmllib = o.getNvmlLib()\n\t}\n\tif o.devicelib == nil {\n\t\to.devicelib = device.New(o.nvmllib)\n\t}\n\tif o.infolib == nil {\n\t\to.infolib = info.New(\n\t\t\tinfo.WithRoot(o.driverRoot),\n\t\t\tinfo.WithLogger(o.logger),\n\t\t\tinfo.WithNvmlLib(o.nvmllib),\n\t\t\tinfo.WithDeviceLib(o.devicelib),\n\t\t)\n\t}\n\to.mode = o.resolveMode()\n\n\tif o.mode == ModeCSV && len(o.csv.Files) == 0 {\n\t\to.csv.Files = csv.DefaultFileList()\n\t}\n\n\tif o.mode == ModeCSV && o.csv.CompatContainerRoot == \"\" {\n\t\to.csv.CompatContainerRoot = defaultOrinCompatContainerRoot\n\t}\n\n\tif o.mode == ModeManagement {\n\t\t// For management mode we explicitly disable the hooks that enable CUDA\n\t\t// compatibility and disable device node modifications.\n\t\to.disabledHooks = append(o.disabledHooks, HookEnableCudaCompat, DisableDeviceNodeModificationHook)\n\t}\n\n\tif o.editsFactory == nil {\n\t\to.editsFactory = edits.NewFactory(\n\t\t\tedits.WithLogger(o.logger),\n\t\t\tedits.WithNoAdditionalGIDsForDeviceNodes(o.featureFlags[FeatureNoAdditionalGIDsForDeviceNodes]),\n\t\t)\n\t}\n\n\treturn o\n}\n\nfunc (o *options) driverLibraryLocator() lookup.Locator {\n\treturn lookup.NewLibraryLocator(\n\t\tlookup.WithLogger(o.logger),\n\t\tlookup.WithRoot(o.driverRoot),\n\t\tlookup.WithSearchPaths(o.librarySearchPaths...),\n\t)\n}\n\nfunc (o *options) getVendorOrDefault() string {\n\tif o.vendor != \"\" {\n\t\treturn o.vendor\n\t}\n\tswitch o.mode {\n\tcase ModeManagement:\n\t\treturn \"management.nvidia.com\"\n\tdefault:\n\t\treturn \"nvidia.com\"\n\t}\n}\n\nfunc (o *options) getClassOrDefault() string {\n\tif o.class != \"\" {\n\t\treturn o.class\n\t}\n\tswitch o.mode {\n\tcase ModeImex:\n\t\treturn classImexChannel\n\tcase ModeGdrcopy, ModeGds, ModeMofed, ModeNvswitch:\n\t\treturn string(o.mode)\n\tdefault:\n\t\treturn \"gpu\"\n\t}\n}\n\n// Option is a function that configures the nvcdi library options.\ntype Option func(*options)\n\n// WithDeviceLib sets the device library for the library\nfunc WithDeviceLib(devicelib device.Interface) Option {\n\treturn func(l *options) {\n\t\tl.devicelib = devicelib\n\t}\n}\n\n// WithInfoLib sets the info library for CDI spec generation.\nfunc WithInfoLib(infolib info.Interface) Option {\n\treturn func(l *options) {\n\t\tl.infolib = infolib\n\t}\n}\n\n// WithDeviceNamers sets the device namer for the library\nfunc WithDeviceNamers(namers ...DeviceNamer) Option {\n\treturn func(l *options) {\n\t\tl.deviceNamers = namers\n\t}\n}\n\n// WithDriverRoot sets the driver root for the library\nfunc WithDriverRoot(root string) Option {\n\treturn func(l *options) {\n\t\tl.driverRoot = root\n\t}\n}\n\n// WithDevRoot sets the root where /dev is located.\nfunc WithDevRoot(root string) Option {\n\treturn func(l *options) {\n\t\tl.devRoot = root\n\t}\n}\n\nfunc WithEditsFactory(editsFactory edits.Factory) Option {\n\treturn func(l *options) {\n\t\tl.editsFactory = editsFactory\n\t}\n}\n\n// WithLogger sets the logger for the library\nfunc WithLogger(logger logger.Interface) Option {\n\treturn func(l *options) {\n\t\tl.logger = logger\n\t}\n}\n\n// WithNVIDIACTKPath sets the path to the NVIDIA Container Toolkit CLI path for the library\n//\n// Deprecated: Use WithNVIDIACDIHookPath instead.\nfunc WithNVIDIACTKPath(path string) Option {\n\treturn WithNVIDIACDIHookPath(path)\n}\n\n// WithNVIDIACDIHookPath sets the path to the NVIDIA Container Toolkit CLI path for the library\nfunc WithNVIDIACDIHookPath(path string) Option {\n\treturn func(l *options) {\n\t\tl.nvidiaCDIHookPath = path\n\t}\n}\n\n// WithLdconfigPath sets the path to the ldconfig program\nfunc WithLdconfigPath(path string) Option {\n\treturn func(l *options) {\n\t\tl.ldconfigPath = path\n\t}\n}\n\n// WithNvmlLib sets the nvml library for the library\nfunc WithNvmlLib(nvmllib nvml.Interface) Option {\n\treturn func(l *options) {\n\t\tl.nvmllib = nvmllib\n\t}\n}\n\n// WithMode sets the discovery mode for the library\nfunc WithMode[m modeConstraint](mode m) Option {\n\treturn func(l *options) {\n\t\tl.mode = Mode(mode)\n\t}\n}\n\n// WithVendor sets the vendor for the library\nfunc WithVendor(vendor string) Option {\n\treturn func(o *options) {\n\t\to.vendor = vendor\n\t}\n}\n\n// WithClass sets the class for the library\nfunc WithClass(class string) Option {\n\treturn func(o *options) {\n\t\to.class = class\n\t}\n}\n\n// WithMergedDeviceOptions sets the merged device options for the library\n// If these are not set, no merged device will be generated.\nfunc WithMergedDeviceOptions(opts ...transform.MergedDeviceOption) Option {\n\treturn func(o *options) {\n\t\to.mergedDeviceOptions = opts\n\t}\n}\n\n// WithCSVFiles sets the CSV files for the library\nfunc WithCSVFiles(csvFiles []string) Option {\n\treturn func(o *options) {\n\t\to.csv.Files = csvFiles\n\t}\n}\n\n// WithCSVIgnorePatterns sets the ignore patterns for entries in the CSV files.\nfunc WithCSVIgnorePatterns(csvIgnorePatterns []string) Option {\n\treturn func(o *options) {\n\t\to.csv.IgnorePatterns = csvIgnorePatterns\n\t}\n}\n\n// WithCSVCompatContainerRoot sets the compat root to use for the container in\n// the case of nvgpu-only devices.\nfunc WithCSVCompatContainerRoot(csvCompatContainerRoot string) Option {\n\treturn func(o *options) {\n\t\to.csv.CompatContainerRoot = csvCompatContainerRoot\n\t}\n}\n\n// WithConfigSearchPaths sets the search paths for config files.\nfunc WithConfigSearchPaths(paths []string) Option {\n\treturn func(o *options) {\n\t\to.configSearchPaths = paths\n\t}\n}\n\n// WithLibrarySearchPaths sets the library search paths.\n// This is currently only used for CSV-mode.\nfunc WithLibrarySearchPaths(paths []string) Option {\n\treturn func(o *options) {\n\t\to.librarySearchPaths = paths\n\t}\n}\n\n// WithDisabledHooks allows specific hooks to be disabled.\nfunc WithDisabledHooks[T string | HookName](hooks ...T) Option {\n\treturn func(o *options) {\n\t\tfor _, hook := range hooks {\n\t\t\to.disabledHooks = append(o.disabledHooks, discover.HookName(hook))\n\t\t}\n\t}\n}\n\n// WithEnabledHooks explicitly enables a specific set of hooks.\n// If a hook is explicitly enabled, this takes precedence over it being disabled.\nfunc WithEnabledHooks[T string | HookName](hooks ...T) Option {\n\treturn func(o *options) {\n\t\tfor _, hook := range hooks {\n\t\t\to.enabledHooks = append(o.enabledHooks, discover.HookName(hook))\n\t\t}\n\t}\n}\n\n// WithFeatureFlags allows the specified set of features to be toggled on.\nfunc WithFeatureFlags[T string | FeatureFlag](featureFlags ...T) Option {\n\treturn func(o *options) {\n\t\tif o.featureFlags == nil {\n\t\t\to.featureFlags = make(map[FeatureFlag]bool)\n\t\t}\n\t\tfor _, featureFlag := range featureFlags {\n\t\t\t// The initial release of the FeatureDisableNvsandboxUtils feature\n\t\t\t// flag included a typo which we handle here.\n\t\t\tif string(featureFlag) == \"disable-nvsandbox-utils\" {\n\t\t\t\tfeatureFlag = T(FeatureDisableNvsandboxUtils)\n\t\t\t}\n\t\t\to.featureFlags[FeatureFlag(featureFlag)] = true\n\t\t}\n\t}\n}\n\n// WithDisabledHook allows specific hooks to be disabled.\n// This option can be specified multiple times for each hook.\n//\n// Deprecated: Use WithDisabledHooks instead\nfunc WithDisabledHook[T string | HookName](hook T) Option {\n\treturn WithDisabledHooks(hook)\n}\n\n// WithFeatureFlag allows specified features to be toggled on.\n// This option can be specified multiple times for each feature flag.\n//\n// Deprecated: Use WithFeatureFlags\nfunc WithFeatureFlag[T string | FeatureFlag](featureFlag T) Option {\n\treturn WithFeatureFlags(featureFlag)\n}\n"
  },
  {
    "path": "pkg/nvcdi/spec/api.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage spec\n\nimport (\n\t\"io\"\n\n\t\"tags.cncf.io/container-device-interface/specs-go\"\n)\n\nconst (\n\t// DetectMinimumVersion is a constant that triggers a spec to detect the minimum required version.\n\t//\n\t// Deprecated: DetectMinimumVersion is deprecated and will be removed.\n\tDetectMinimumVersion = \"DETECT_MINIMUM_VERSION\"\n\n\t// FormatJSON indicates a JSON output format\n\tFormatJSON = \"json\"\n\t// FormatYAML indicates a YAML output format\n\tFormatYAML = \"yaml\"\n)\n\n// Interface is the interface for the spec API\ntype Interface interface {\n\tio.WriterTo\n\tSave(string) error\n\tRaw() *specs.Spec\n}\n"
  },
  {
    "path": "pkg/nvcdi/spec/builder.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage spec\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\n\t\"tags.cncf.io/container-device-interface/pkg/parser\"\n\tcdi \"tags.cncf.io/container-device-interface/specs-go\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/nvcdi/transform\"\n)\n\ntype builder struct {\n\traw         *cdi.Spec\n\tversion     string\n\tvendor      string\n\tclass       string\n\tdeviceSpecs []cdi.Device\n\tedits       cdi.ContainerEdits\n\tformat      string\n\n\tmergedDeviceOptions []transform.MergedDeviceOption\n\tnoSimplify          bool\n\tpermissions         os.FileMode\n\n\ttransformOnSave transform.Transformer\n}\n\n// newBuilder creates a new spec builder with the supplied options\nfunc newBuilder(opts ...Option) *builder {\n\ts := &builder{}\n\tfor _, opt := range opts {\n\t\topt(s)\n\t}\n\n\tif s.raw != nil {\n\t\ts.noSimplify = true\n\t\tvendor, class := parser.ParseQualifier(s.raw.Kind)\n\t\tif s.vendor == \"\" {\n\t\t\ts.vendor = vendor\n\t\t}\n\t\tif s.class == \"\" {\n\t\t\ts.class = class\n\t\t}\n\t\tif s.version == \"\" || s.version == DetectMinimumVersion {\n\t\t\ts.version = s.raw.Version\n\t\t}\n\t}\n\tif s.version == \"\" || s.version == DetectMinimumVersion {\n\t\ts.transformOnSave = &setMinimumRequiredVersion{}\n\t\ts.version = cdi.CurrentVersion\n\t}\n\tif s.vendor == \"\" {\n\t\ts.vendor = \"nvidia.com\"\n\t}\n\tif s.class == \"\" {\n\t\ts.class = \"gpu\"\n\t}\n\tif s.format == \"\" {\n\t\ts.format = FormatYAML\n\t}\n\tif s.permissions == 0 {\n\t\ts.permissions = 0644\n\t}\n\treturn s\n}\n\n// Build builds a CDI spec form the spec builder.\nfunc (o *builder) Build() (*spec, error) {\n\traw := o.raw\n\tif raw == nil {\n\t\traw = &cdi.Spec{\n\t\t\tVersion:        o.version,\n\t\t\tKind:           fmt.Sprintf(\"%s/%s\", o.vendor, o.class),\n\t\t\tDevices:        o.deviceSpecs,\n\t\t\tContainerEdits: o.edits,\n\t\t}\n\t}\n\tif raw.Version == \"\" {\n\t\traw.Version = o.version\n\t}\n\n\tif !o.noSimplify {\n\t\terr := transform.NewSimplifier().Transform(raw)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed to simplify spec: %v\", err)\n\t\t}\n\t}\n\n\tif len(o.mergedDeviceOptions) > 0 {\n\t\tmerge, err := transform.NewMergedDevice(o.mergedDeviceOptions...)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed to create merged device transformer: %v\", err)\n\t\t}\n\t\tif err := merge.Transform(raw); err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed to merge devices: %v\", err)\n\t\t}\n\t}\n\n\ts := spec{\n\t\tSpec:            raw,\n\t\tformat:          o.format,\n\t\tpermissions:     o.permissions,\n\t\ttransformOnSave: o.transformOnSave,\n\t}\n\treturn &s, nil\n}\n\n// Option defines a function that can be used to configure the spec builder.\ntype Option func(*builder)\n\n// WithDeviceSpecs sets the device specs for the spec builder\nfunc WithDeviceSpecs(deviceSpecs []cdi.Device) Option {\n\treturn func(o *builder) {\n\t\to.deviceSpecs = deviceSpecs\n\t}\n}\n\n// WithEdits sets the container edits for the spec builder\nfunc WithEdits(edits cdi.ContainerEdits) Option {\n\treturn func(o *builder) {\n\t\to.edits = edits\n\t}\n}\n\n// WithVersion sets the version for the spec builder\nfunc WithVersion(version string) Option {\n\treturn func(o *builder) {\n\t\to.version = version\n\t}\n}\n\n// WithVendor sets the vendor for the spec builder\nfunc WithVendor(vendor string) Option {\n\treturn func(o *builder) {\n\t\to.vendor = vendor\n\t}\n}\n\n// WithClass sets the class for the spec builder\nfunc WithClass(class string) Option {\n\treturn func(o *builder) {\n\t\to.class = class\n\t}\n}\n\n// WithFormat sets the output file format\nfunc WithFormat(format string) Option {\n\treturn func(o *builder) {\n\t\to.format = format\n\t}\n}\n\n// WithNoSimplify sets whether the spec must be simplified\nfunc WithNoSimplify(noSimplify bool) Option {\n\treturn func(o *builder) {\n\t\to.noSimplify = noSimplify\n\t}\n}\n\n// WithRawSpec sets the raw spec for the spec builder\nfunc WithRawSpec(raw *cdi.Spec) Option {\n\treturn func(o *builder) {\n\t\to.raw = raw\n\t}\n}\n\n// WithPermissions sets the permissions for the generated spec file\nfunc WithPermissions(permissions os.FileMode) Option {\n\treturn func(o *builder) {\n\t\to.permissions = permissions\n\t}\n}\n\n// WithMergedDeviceOptions sets the options for generating a merged device.\nfunc WithMergedDeviceOptions(opts ...transform.MergedDeviceOption) Option {\n\treturn func(o *builder) {\n\t\to.mergedDeviceOptions = opts\n\t}\n}\n"
  },
  {
    "path": "pkg/nvcdi/spec/set-minimum-version.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage spec\n\nimport (\n\t\"fmt\"\n\n\t\"tags.cncf.io/container-device-interface/pkg/cdi\"\n\t\"tags.cncf.io/container-device-interface/specs-go\"\n)\n\ntype setMinimumRequiredVersion struct{}\n\nfunc (d setMinimumRequiredVersion) Transform(spec *specs.Spec) error {\n\tminVersion, err := cdi.MinimumRequiredVersion(spec)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to get minimum required CDI spec version: %v\", err)\n\t}\n\tspec.Version = minVersion\n\treturn nil\n}\n"
  },
  {
    "path": "pkg/nvcdi/spec/spec.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage spec\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"path/filepath\"\n\n\t\"tags.cncf.io/container-device-interface/pkg/cdi\"\n\t\"tags.cncf.io/container-device-interface/specs-go\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/nvcdi/transform\"\n)\n\ntype spec struct {\n\t*specs.Spec\n\tformat          string\n\tpermissions     os.FileMode\n\ttransformOnSave transform.Transformer\n}\n\nvar _ Interface = (*spec)(nil)\n\n// New creates a new spec with the specified options.\nfunc New(opts ...Option) (Interface, error) {\n\treturn newBuilder(opts...).Build()\n}\n\n// Save writes the spec to the specified path and overwrites the file if it exists.\nfunc (s *spec) Save(path string) error {\n\tif s.transformOnSave != nil {\n\t\terr := s.transformOnSave.Transform(s.Raw())\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"error applying transform: %w\", err)\n\t\t}\n\t}\n\tpath, err := s.normalizePath(path)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to normalize path: %w\", err)\n\t}\n\n\tspecDir, filename := filepath.Split(path)\n\tcache, _ := cdi.NewCache(\n\t\tcdi.WithAutoRefresh(false),\n\t\tcdi.WithSpecDirs(specDir),\n\t)\n\tif err := cache.WriteSpec(s.Raw(), filename); err != nil {\n\t\treturn fmt.Errorf(\"failed to write spec: %w\", err)\n\t}\n\n\tspecDirAsRoot, err := os.OpenRoot(specDir)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to open root: %w\", err)\n\t}\n\tdefer specDirAsRoot.Close()\n\n\tif err := specDirAsRoot.Chmod(filename, s.permissions); err != nil {\n\t\treturn fmt.Errorf(\"failed to set permissions on spec file: %w\", err)\n\t}\n\n\treturn nil\n}\n\n// WriteTo writes the spec to the specified writer.\nfunc (s *spec) WriteTo(w io.Writer) (int64, error) {\n\ttmpFile, err := os.CreateTemp(\"\", \"nvcdi-spec-*\"+s.extension())\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\ttmpDir, tmpFileName := filepath.Split(tmpFile.Name())\n\n\ttmpDirRoot, err := os.OpenRoot(tmpDir)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tdefer tmpDirRoot.Close()\n\tdefer func() {\n\t\t_ = tmpDirRoot.Remove(tmpFileName)\n\t}()\n\n\tif err := s.Save(tmpFile.Name()); err != nil {\n\t\treturn 0, err\n\t}\n\n\tif err := tmpFile.Close(); err != nil {\n\t\treturn 0, fmt.Errorf(\"failed to close temporary file: %w\", err)\n\t}\n\n\tsavedFile, err := tmpDirRoot.Open(tmpFileName)\n\tif err != nil {\n\t\treturn 0, fmt.Errorf(\"failed to open temporary file: %w\", err)\n\t}\n\tdefer savedFile.Close()\n\n\treturn savedFile.WriteTo(w)\n}\n\n// Raw returns a pointer to the raw spec.\nfunc (s *spec) Raw() *specs.Spec {\n\treturn s.Spec\n}\n\n// normalizePath ensures that the specified path has a supported extension\nfunc (s *spec) normalizePath(path string) (string, error) {\n\tif ext := filepath.Ext(path); ext != \".yaml\" && ext != \".json\" {\n\t\tpath += s.extension()\n\t}\n\n\tif filepath.Clean(filepath.Dir(path)) == \".\" {\n\t\tpwd, err := os.Getwd()\n\t\tif err != nil {\n\t\t\treturn path, fmt.Errorf(\"failed to get current working directory: %v\", err)\n\t\t}\n\t\tpath = filepath.Join(pwd, path)\n\t}\n\n\treturn path, nil\n}\n\nfunc (s *spec) extension() string {\n\tswitch s.format {\n\tcase FormatJSON:\n\t\treturn \".json\"\n\tcase FormatYAML:\n\t\treturn \".yaml\"\n\t}\n\n\treturn \".yaml\"\n}\n"
  },
  {
    "path": "pkg/nvcdi/spec/spec_test.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage spec\n\nimport (\n\t\"bytes\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\t\"tags.cncf.io/container-device-interface/specs-go\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/nvcdi/transform\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/nvcdi/transform/root\"\n)\n\nfunc TestSpec(t *testing.T) {\n\tminimalSpec := &specs.Spec{\n\t\tKind: \"nvidia.com/gpu\",\n\t\tDevices: []specs.Device{\n\t\t\t{\n\t\t\t\tName: \"one\",\n\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\tEnv: []string{\"DEVICE_FOO=bar\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\ttestCases := []struct {\n\t\tdescription      string\n\t\toptions          []Option\n\t\texpectedNewError error\n\t\ttransform        transform.Transformer\n\t\texpectedSpec     string\n\t}{\n\t\t{\n\t\t\tdescription: \"version is overridden\",\n\t\t\toptions:     []Option{WithVersion(\"0.8.0\"), WithRawSpec(minimalSpec)},\n\t\t\texpectedSpec: `---\ncdiVersion: 0.8.0\nkind: nvidia.com/gpu\ndevices:\n    - name: one\n      containerEdits:\n        env:\n            - DEVICE_FOO=bar\n`,\n\t\t},\n\t\t{\n\t\t\tdescription: \"raw spec is used as is\",\n\t\t\toptions: []Option{WithRawSpec(\n\t\t\t\t&specs.Spec{\n\t\t\t\t\tVersion: \"0.5.0\",\n\t\t\t\t\tKind:    \"nvidia.com/gpu\",\n\t\t\t\t\tDevices: []specs.Device{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tName: \"one\",\n\t\t\t\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\t\t\t\tEnv: []string{\"DEVICE_FOO=bar\"},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t)},\n\t\t\texpectedSpec: `---\ncdiVersion: 0.5.0\nkind: nvidia.com/gpu\ndevices:\n    - name: one\n      containerEdits:\n        env:\n            - DEVICE_FOO=bar\n`,\n\t\t},\n\t\t{\n\t\t\tdescription: \"raw spec with no version uses minimum version\",\n\t\t\toptions: []Option{WithRawSpec(\n\t\t\t\t&specs.Spec{\n\t\t\t\t\tKind: \"nvidia.com/gpu\",\n\t\t\t\t\tDevices: []specs.Device{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tName: \"one\",\n\t\t\t\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\t\t\t\tEnv: []string{\"DEVICE_FOO=bar\"},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t)},\n\t\t\texpectedSpec: `---\ncdiVersion: 0.3.0\nkind: nvidia.com/gpu\ndevices:\n    - name: one\n      containerEdits:\n        env:\n            - DEVICE_FOO=bar\n`,\n\t\t},\n\t\t{\n\t\t\tdescription: \"spec with host dev path uses 0.5.0 version\",\n\t\t\toptions: []Option{WithRawSpec(\n\t\t\t\t&specs.Spec{\n\t\t\t\t\tKind: \"nvidia.com/gpu\",\n\t\t\t\t\tDevices: []specs.Device{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tName: \"one\",\n\t\t\t\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\t\t\t\tEnv: []string{\"DEVICE_FOO=bar\"},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\t\tDeviceNodes: []*specs.DeviceNode{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tHostPath: \"/some/dev/dev0\",\n\t\t\t\t\t\t\t\tPath:     \"/dev/dev0\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t)},\n\t\t\texpectedSpec: `---\ncdiVersion: 0.5.0\nkind: nvidia.com/gpu\ndevices:\n    - name: one\n      containerEdits:\n        env:\n            - DEVICE_FOO=bar\ncontainerEdits:\n    deviceNodes:\n        - path: /dev/dev0\n          hostPath: /some/dev/dev0\n`,\n\t\t},\n\t\t{\n\t\t\tdescription: \"transformed spec uses minimum version\",\n\t\t\toptions: []Option{WithRawSpec(\n\t\t\t\t&specs.Spec{\n\t\t\t\t\tKind: \"nvidia.com/gpu\",\n\t\t\t\t\tDevices: []specs.Device{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tName: \"one\",\n\t\t\t\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\t\t\t\tEnv: []string{\"DEVICE_FOO=bar\"},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\t\tDeviceNodes: []*specs.DeviceNode{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tHostPath: \"/some/dev/dev0\",\n\t\t\t\t\t\t\t\tPath:     \"/dev/dev0\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t)},\n\t\t\ttransform: transform.Merge(\n\t\t\t\troot.New(\n\t\t\t\t\troot.WithRoot(\"/some/dev/\"),\n\t\t\t\t\troot.WithTargetRoot(\"/dev/\"),\n\t\t\t\t\troot.WithRelativeTo(\"host\"),\n\t\t\t\t),\n\t\t\t\ttransform.NewSimplifier(),\n\t\t\t),\n\t\t\texpectedSpec: `---\ncdiVersion: 0.5.0\nkind: nvidia.com/gpu\ndevices:\n    - name: one\n      containerEdits:\n        env:\n            - DEVICE_FOO=bar\ncontainerEdits:\n    deviceNodes:\n        - path: /dev/dev0\n          hostPath: /dev/dev0\n`,\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\n\t\t\ts, err := New(tc.options...)\n\t\t\trequire.ErrorIs(t, err, tc.expectedNewError)\n\n\t\t\tif tc.transform != nil {\n\t\t\t\terr := tc.transform.Transform(s.Raw())\n\t\t\t\trequire.NoError(t, err)\n\t\t\t}\n\n\t\t\tbuf := new(bytes.Buffer)\n\n\t\t\t_, err = s.WriteTo(buf)\n\t\t\trequire.NoError(t, err)\n\n\t\t\trequire.EqualValues(t, tc.expectedSpec, buf.String())\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "pkg/nvcdi/transform/api.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage transform\n\nimport \"tags.cncf.io/container-device-interface/specs-go\"\n\n// Transformer defines the API for applying arbitrary transforms to a spec in-place\ntype Transformer interface {\n\tTransform(*specs.Spec) error\n}\n"
  },
  {
    "path": "pkg/nvcdi/transform/deduplicate.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage transform\n\nimport (\n\t\"slices\"\n\n\t\"tags.cncf.io/container-device-interface/specs-go\"\n)\n\ntype dedupe struct{}\n\nvar _ Transformer = (*dedupe)(nil)\n\n// NewDedupe creates a transformer that deduplicates container edits.\nfunc NewDedupe() (Transformer, error) {\n\treturn &dedupe{}, nil\n}\n\n// Transform removes duplicate entris from devices and common container edits.\nfunc (d dedupe) Transform(spec *specs.Spec) error {\n\tif spec == nil {\n\t\treturn nil\n\t}\n\tif err := d.transformEdits(&spec.ContainerEdits); err != nil {\n\t\treturn err\n\t}\n\tvar updatedDevices []specs.Device\n\tfor _, device := range spec.Devices {\n\t\tdevice := device\n\t\tif err := d.transformEdits(&device.ContainerEdits); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tupdatedDevices = append(updatedDevices, device)\n\t}\n\tspec.Devices = updatedDevices\n\treturn nil\n}\n\nfunc (d dedupe) transformEdits(edits *specs.ContainerEdits) error {\n\tadditionalGIDs, err := d.deduplicateAdditionalGIDs(edits.AdditionalGIDs)\n\tif err != nil {\n\t\treturn err\n\t}\n\tedits.AdditionalGIDs = additionalGIDs\n\n\tdeviceNodes, err := d.deduplicateDeviceNodes(edits.DeviceNodes)\n\tif err != nil {\n\t\treturn err\n\t}\n\tedits.DeviceNodes = deviceNodes\n\n\tenvs, err := d.deduplicateEnvs(edits.Env)\n\tif err != nil {\n\t\treturn err\n\t}\n\tedits.Env = envs\n\n\thooks, err := d.deduplicateHooks(edits.Hooks)\n\tif err != nil {\n\t\treturn err\n\t}\n\tedits.Hooks = hooks\n\n\tmounts, err := d.deduplicateMounts(edits.Mounts)\n\tif err != nil {\n\t\treturn err\n\t}\n\tedits.Mounts = mounts\n\n\treturn nil\n}\n\nfunc (d dedupe) deduplicateDeviceNodes(entities []*specs.DeviceNode) ([]*specs.DeviceNode, error) {\n\tseen := make(map[string]bool)\n\tvar deviceNodes []*specs.DeviceNode\n\tfor _, e := range entities {\n\t\tif e == nil {\n\t\t\tcontinue\n\t\t}\n\t\tid, err := deviceNode(*e).id()\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif seen[id] {\n\t\t\tcontinue\n\t\t}\n\t\tseen[id] = true\n\t\tdeviceNodes = append(deviceNodes, e)\n\t}\n\treturn deviceNodes, nil\n}\n\nfunc (d dedupe) deduplicateEnvs(entities []string) ([]string, error) {\n\tseen := make(map[string]bool)\n\tvar envs []string\n\tfor _, e := range entities {\n\t\tid := e\n\t\tif seen[id] {\n\t\t\tcontinue\n\t\t}\n\t\tseen[id] = true\n\t\tenvs = append(envs, e)\n\t}\n\treturn envs, nil\n}\n\nfunc (d dedupe) deduplicateHooks(entities []*specs.Hook) ([]*specs.Hook, error) {\n\tseen := make(map[string]bool)\n\tvar hooks []*specs.Hook\n\tfor _, e := range entities {\n\t\tif e == nil {\n\t\t\tcontinue\n\t\t}\n\t\tid, err := hook(*e).id()\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif seen[id] {\n\t\t\tcontinue\n\t\t}\n\t\tseen[id] = true\n\t\thooks = append(hooks, e)\n\t}\n\treturn hooks, nil\n}\n\nfunc (d dedupe) deduplicateMounts(entities []*specs.Mount) ([]*specs.Mount, error) {\n\tseen := make(map[string]bool)\n\tvar mounts []*specs.Mount\n\tfor _, e := range entities {\n\t\tif e == nil {\n\t\t\tcontinue\n\t\t}\n\t\tid, err := mount(*e).id()\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif seen[id] {\n\t\t\tcontinue\n\t\t}\n\t\tseen[id] = true\n\t\tmounts = append(mounts, e)\n\t}\n\treturn mounts, nil\n}\n\nfunc (d dedupe) deduplicateAdditionalGIDs(entities []uint32) ([]uint32, error) {\n\tseen := make(map[uint32]bool)\n\tvar additionalGIDs []uint32\n\tfor _, e := range entities {\n\t\tif seen[e] {\n\t\t\tcontinue\n\t\t}\n\t\tseen[e] = true\n\t\tadditionalGIDs = append(additionalGIDs, e)\n\t}\n\n\tslices.Sort(additionalGIDs)\n\n\treturn additionalGIDs, nil\n}\n"
  },
  {
    "path": "pkg/nvcdi/transform/deduplicate_test.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage transform\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\t\"tags.cncf.io/container-device-interface/specs-go\"\n)\n\nfunc TestDeduplicate(t *testing.T) {\n\ttestCases := []struct {\n\t\tdescription   string\n\t\tspec          *specs.Spec\n\t\texpectedError error\n\t\texpectedSpec  *specs.Spec\n\t}{\n\t\t{\n\t\t\tdescription: \"nil spec\",\n\t\t},\n\t\t{\n\t\t\tdescription: \"duplicate deviceNode is removed\",\n\t\t\tspec: &specs.Spec{\n\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\tDeviceNodes: []*specs.DeviceNode{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/dev/gpu0\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/dev/gpu0\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedSpec: &specs.Spec{\n\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\tDeviceNodes: []*specs.DeviceNode{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/dev/gpu0\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"duplicate deviceNode is remved from device edits\",\n\t\t\tspec: &specs.Spec{\n\t\t\t\tDevices: []specs.Device{\n\t\t\t\t\t{\n\t\t\t\t\t\tName: \"device0\",\n\t\t\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\t\t\tDeviceNodes: []*specs.DeviceNode{\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tPath: \"/dev/gpu0\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tPath: \"/dev/gpu0\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedSpec: &specs.Spec{\n\t\t\t\tDevices: []specs.Device{\n\t\t\t\t\t{\n\t\t\t\t\t\tName: \"device0\",\n\t\t\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\t\t\tDeviceNodes: []*specs.DeviceNode{\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tPath: \"/dev/gpu0\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"duplicate hook is removed\",\n\t\t\tspec: &specs.Spec{\n\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\tHooks: []*specs.Hook{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHookName: \"createContainer\",\n\t\t\t\t\t\t\tPath:     \"/usr/bin/nvidia-cdi-hook\",\n\t\t\t\t\t\t\tArgs:     []string{\"nvidia-cdi-hook\", \"chmod\", \"--mode\", \"755\", \"--path\", \"/dev/dri\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHookName: \"createContainer\",\n\t\t\t\t\t\t\tPath:     \"/usr/bin/nvidia-cdi-hook\",\n\t\t\t\t\t\t\tArgs:     []string{\"nvidia-cdi-hook\", \"chmod\", \"--mode\", \"755\", \"--path\", \"/dev/dri\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedSpec: &specs.Spec{\n\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\tHooks: []*specs.Hook{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHookName: \"createContainer\",\n\t\t\t\t\t\t\tPath:     \"/usr/bin/nvidia-cdi-hook\",\n\t\t\t\t\t\t\tArgs:     []string{\"nvidia-cdi-hook\", \"chmod\", \"--mode\", \"755\", \"--path\", \"/dev/dri\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"duplicate mount is removed\",\n\t\t\tspec: &specs.Spec{\n\t\t\t\tDevices: []specs.Device{\n\t\t\t\t\t{\n\t\t\t\t\t\tName: \"device0\",\n\t\t\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\t\t\tMounts: []*specs.Mount{\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tHostPath:      \"/host/mount2\",\n\t\t\t\t\t\t\t\t\tContainerPath: \"/mount2\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tHostPath:      \"/host/mount2\",\n\t\t\t\t\t\t\t\t\tContainerPath: \"/mount2\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tHostPath:      \"/host/mount1\",\n\t\t\t\t\t\t\t\t\tContainerPath: \"/mount1\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\tMounts: []*specs.Mount{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHostPath:      \"/host/mount1\",\n\t\t\t\t\t\t\tContainerPath: \"/mount1\",\n\t\t\t\t\t\t\tOptions:       []string{\"bind\", \"ro\"},\n\t\t\t\t\t\t\tType:          \"tmpfs\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHostPath:      \"/host/mount1\",\n\t\t\t\t\t\t\tContainerPath: \"/mount1\",\n\t\t\t\t\t\t\tOptions:       []string{\"bind\", \"ro\"},\n\t\t\t\t\t\t\tType:          \"tmpfs\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHostPath:      \"/host/mount1\",\n\t\t\t\t\t\t\tContainerPath: \"/mount1\",\n\t\t\t\t\t\t\tOptions:       []string{\"bind\", \"ro\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedSpec: &specs.Spec{\n\t\t\t\tDevices: []specs.Device{\n\t\t\t\t\t{\n\t\t\t\t\t\tName: \"device0\",\n\t\t\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\t\t\tMounts: []*specs.Mount{\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tHostPath:      \"/host/mount2\",\n\t\t\t\t\t\t\t\t\tContainerPath: \"/mount2\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tHostPath:      \"/host/mount1\",\n\t\t\t\t\t\t\t\t\tContainerPath: \"/mount1\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\tMounts: []*specs.Mount{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHostPath:      \"/host/mount1\",\n\t\t\t\t\t\t\tContainerPath: \"/mount1\",\n\t\t\t\t\t\t\tOptions:       []string{\"bind\", \"ro\"},\n\t\t\t\t\t\t\tType:          \"tmpfs\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHostPath:      \"/host/mount1\",\n\t\t\t\t\t\t\tContainerPath: \"/mount1\",\n\t\t\t\t\t\t\tOptions:       []string{\"bind\", \"ro\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"duplicate env is removed\",\n\t\t\tspec: &specs.Spec{\n\t\t\t\tDevices: []specs.Device{\n\t\t\t\t\t{\n\t\t\t\t\t\tName: \"device0\",\n\t\t\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\t\t\tEnv: []string{\"ENV1=VAL1\", \"ENV1=VAL1\", \"ENV2=ONE_VALUE\", \"ENV2=ANOTHER_VALUE\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\tEnv: []string{\"ENV1=VAL1\", \"ENV1=VAL1\", \"ENV2=ONE_VALUE\", \"ENV2=ANOTHER_VALUE\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedSpec: &specs.Spec{\n\t\t\t\tDevices: []specs.Device{\n\t\t\t\t\t{\n\t\t\t\t\t\tName: \"device0\",\n\t\t\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\t\t\tEnv: []string{\"ENV1=VAL1\", \"ENV2=ONE_VALUE\", \"ENV2=ANOTHER_VALUE\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\tEnv: []string{\"ENV1=VAL1\", \"ENV2=ONE_VALUE\", \"ENV2=ANOTHER_VALUE\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\td := dedupe{}\n\n\t\t\terr := d.Transform(tc.spec)\n\t\t\tif tc.expectedError != nil {\n\t\t\t\trequire.Error(t, err)\n\t\t\t\treturn\n\t\t\t}\n\t\t\trequire.NoError(t, err)\n\n\t\t\trequire.EqualValues(t, tc.expectedSpec, tc.spec)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "pkg/nvcdi/transform/edits.go",
    "content": "/*\n*\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage transform\n\nimport (\n\t\"encoding/json\"\n\n\t\"tags.cncf.io/container-device-interface/specs-go\"\n)\n\ntype containerEdits specs.ContainerEdits\n\n// IsEmpty returns true if the edits are empty.\nfunc (e containerEdits) IsEmpty() bool {\n\t// Devices with empty edits are invalid\n\tif len(e.DeviceNodes) > 0 {\n\t\treturn false\n\t}\n\tif len(e.Env) > 0 {\n\t\treturn false\n\t}\n\tif len(e.Hooks) > 0 {\n\t\treturn false\n\t}\n\tif len(e.Mounts) > 0 {\n\t\treturn false\n\t}\n\n\treturn true\n}\n\nfunc (e *containerEdits) getEntityIds() ([]string, error) {\n\tif e == nil {\n\t\treturn nil, nil\n\t}\n\tuniqueIDs := make(map[string]bool)\n\n\tdeviceNodes, err := e.getDeviceNodeIDs()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tfor k := range deviceNodes {\n\t\tuniqueIDs[k] = true\n\t}\n\n\tenvs, err := e.getEnvIDs()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tfor k := range envs {\n\t\tuniqueIDs[k] = true\n\t}\n\n\thooks, err := e.getHookIDs()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tfor k := range hooks {\n\t\tuniqueIDs[k] = true\n\t}\n\n\tmounts, err := e.getMountIDs()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tfor k := range mounts {\n\t\tuniqueIDs[k] = true\n\t}\n\n\tvar ids []string\n\tfor k := range uniqueIDs {\n\t\tids = append(ids, k)\n\t}\n\n\treturn ids, nil\n}\n\nfunc (e *containerEdits) getDeviceNodeIDs() (map[string]bool, error) {\n\tdeviceIDs := make(map[string]bool)\n\tfor _, entity := range e.DeviceNodes {\n\t\tid, err := deviceNode(*entity).id()\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tdeviceIDs[id] = true\n\t}\n\treturn deviceIDs, nil\n}\n\nfunc (e *containerEdits) getEnvIDs() (map[string]bool, error) {\n\tenvIDs := make(map[string]bool)\n\tfor _, entity := range e.Env {\n\t\tid, err := env(entity).id()\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tenvIDs[id] = true\n\t}\n\treturn envIDs, nil\n}\n\nfunc (e *containerEdits) getHookIDs() (map[string]bool, error) {\n\thookIDs := make(map[string]bool)\n\tfor _, entity := range e.Hooks {\n\t\tid, err := hook(*entity).id()\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\thookIDs[id] = true\n\t}\n\treturn hookIDs, nil\n}\n\nfunc (e *containerEdits) getMountIDs() (map[string]bool, error) {\n\tmountIDs := make(map[string]bool)\n\tfor _, entity := range e.Mounts {\n\t\tid, err := mount(*entity).id()\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tmountIDs[id] = true\n\t}\n\treturn mountIDs, nil\n}\n\ntype deviceNode specs.DeviceNode\n\nfunc (dn deviceNode) id() (string, error) {\n\tb, err := json.Marshal(dn)\n\treturn string(b), err\n}\n\ntype env string\n\nfunc (e env) id() (string, error) {\n\treturn string(e), nil\n}\n\ntype mount specs.Mount\n\nfunc (m mount) id() (string, error) {\n\tb, err := json.Marshal(m)\n\treturn string(b), err\n}\n\ntype hook specs.Hook\n\nfunc (m hook) id() (string, error) {\n\tb, err := json.Marshal(m)\n\treturn string(b), err\n}\n"
  },
  {
    "path": "pkg/nvcdi/transform/merge.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage transform\n\nimport \"tags.cncf.io/container-device-interface/specs-go\"\n\ntype merged []Transformer\n\n// Merge creates a merged transofrmer from the specified transformers.\nfunc Merge(transformers ...Transformer) Transformer {\n\treturn merged(transformers)\n}\n\n// Transform applies all the transformers in the merged set.\nfunc (t merged) Transform(spec *specs.Spec) error {\n\tfor _, transformer := range t {\n\t\tif err := transformer.Transform(spec); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "pkg/nvcdi/transform/merged-device.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage transform\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/edits\"\n\n\t\"tags.cncf.io/container-device-interface/pkg/cdi\"\n\t\"tags.cncf.io/container-device-interface/pkg/parser\"\n\t\"tags.cncf.io/container-device-interface/specs-go\"\n)\n\nconst (\n\tallDeviceName = \"all\"\n)\n\ntype mergedDevice struct {\n\tname         string\n\tskipIfExists bool\n\tsimplifier   Transformer\n}\n\nvar _ Transformer = (*mergedDevice)(nil)\n\n// MergedDeviceOption is a function that configures a merged device\ntype MergedDeviceOption func(*mergedDevice)\n\n// WithName sets the name of the merged device\nfunc WithName(name string) MergedDeviceOption {\n\treturn func(m *mergedDevice) {\n\t\tm.name = name\n\t}\n}\n\n// WithSkipIfExists sets whether to skip adding the merged device if it already exists\nfunc WithSkipIfExists(skipIfExists bool) MergedDeviceOption {\n\treturn func(m *mergedDevice) {\n\t\tm.skipIfExists = skipIfExists\n\t}\n}\n\n// NewMergedDevice creates a transformer with the specified options\nfunc NewMergedDevice(opts ...MergedDeviceOption) (Transformer, error) {\n\tm := &mergedDevice{}\n\tfor _, opt := range opts {\n\t\topt(m)\n\t}\n\tif m.name == \"\" {\n\t\tm.name = allDeviceName\n\t}\n\tm.simplifier = NewSimplifier()\n\n\tif err := parser.ValidateDeviceName(m.name); err != nil {\n\t\treturn nil, fmt.Errorf(\"invalid device name %q: %v\", m.name, err)\n\t}\n\n\treturn m, nil\n}\n\n// Transform adds a merged device to the spec\nfunc (m mergedDevice) Transform(spec *specs.Spec) error {\n\tif spec == nil {\n\t\treturn nil\n\t}\n\n\tmergedDevice, err := mergeDeviceSpecs(spec.Devices, m.name)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to generate merged device %q: %v\", m.name, err)\n\t}\n\tif mergedDevice == nil {\n\t\tif m.skipIfExists {\n\t\t\treturn nil\n\t\t}\n\t\treturn fmt.Errorf(\"device %q already exists\", m.name)\n\t}\n\n\tspec.Devices = append(spec.Devices, *mergedDevice)\n\n\tif err := m.simplifier.Transform(spec); err != nil {\n\t\treturn fmt.Errorf(\"failed to simplify spec after merging device %q: %v\", m.name, err)\n\t}\n\n\treturn nil\n}\n\n// mergeDeviceSpecs creates a device with the specified name which combines the edits from the previous devices.\n// If a device of the specified name already exists, no device is created and nil is returned.\nfunc mergeDeviceSpecs(deviceSpecs []specs.Device, mergedDeviceName string) (*specs.Device, error) {\n\tfor _, d := range deviceSpecs {\n\t\tif d.Name == mergedDeviceName {\n\t\t\treturn nil, nil\n\t\t}\n\t}\n\n\tmergedEdits := edits.EmptyFactory.New()\n\n\tfor _, d := range deviceSpecs {\n\t\td := d\n\t\tedit := cdi.ContainerEdits{\n\t\t\tContainerEdits: &d.ContainerEdits,\n\t\t}\n\t\tmergedEdits.Append(&edit)\n\t}\n\n\tmerged := specs.Device{\n\t\tName:           mergedDeviceName,\n\t\tContainerEdits: *mergedEdits.ContainerEdits,\n\t}\n\treturn &merged, nil\n}\n"
  },
  {
    "path": "pkg/nvcdi/transform/merged-device_test.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage transform\n\nimport (\n\t\"fmt\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\t\"tags.cncf.io/container-device-interface/specs-go\"\n)\n\nfunc TestMergeDeviceSpecs(t *testing.T) {\n\ttestCases := []struct {\n\t\tdescription      string\n\t\tdeviceSpecs      []specs.Device\n\t\tmergedDeviceName string\n\t\tcreateError      error\n\t\texpectedError    error\n\t\texpected         *specs.Device\n\t}{\n\t\t{\n\t\t\tdescription:      \"no devices\",\n\t\t\tmergedDeviceName: \"all\",\n\t\t\texpected: &specs.Device{\n\t\t\t\tName: \"all\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription:      \"one device\",\n\t\t\tmergedDeviceName: \"all\",\n\t\t\tdeviceSpecs: []specs.Device{\n\t\t\t\t{\n\t\t\t\t\tName: \"gpu0\",\n\t\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\t\tEnv: []string{\"GPU=0\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: &specs.Device{\n\t\t\t\tName: \"all\",\n\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\tEnv: []string{\"GPU=0\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription:      \"two devices\",\n\t\t\tmergedDeviceName: \"all\",\n\t\t\tdeviceSpecs: []specs.Device{\n\t\t\t\t{\n\t\t\t\t\tName: \"gpu0\",\n\t\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\t\tEnv: []string{\"GPU=0\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName: \"gpu1\",\n\t\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\t\tEnv: []string{\"GPU=1\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: &specs.Device{\n\t\t\t\tName: \"all\",\n\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\tEnv: []string{\"GPU=0\", \"GPU=1\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription:      \"has merged device\",\n\t\t\tmergedDeviceName: \"gpu0\",\n\t\t\tdeviceSpecs: []specs.Device{\n\t\t\t\t{\n\t\t\t\t\tName: \"gpu0\",\n\t\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\t\tEnv: []string{\"GPU=0\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription:      \"invalid merged device name\",\n\t\t\tmergedDeviceName: \".-not-valid\",\n\t\t\tcreateError:      fmt.Errorf(\"invalid device name %q\", \".-not-valid\"),\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\t_, err := NewMergedDevice(\n\t\t\t\tWithName(tc.mergedDeviceName),\n\t\t\t)\n\t\t\tif tc.createError != nil {\n\t\t\t\trequire.Error(t, err)\n\t\t\t\treturn\n\t\t\t}\n\t\t\trequire.NoError(t, err)\n\n\t\t\tdevice, err := mergeDeviceSpecs(tc.deviceSpecs, tc.mergedDeviceName)\n\t\t\tif tc.expectedError != nil {\n\t\t\t\trequire.Error(t, err)\n\t\t\t\treturn\n\t\t\t}\n\t\t\trequire.NoError(t, err)\n\n\t\t\trequire.EqualValues(t, tc.expected, device)\n\t\t})\n\t}\n}\n\nfunc TestMergedDevice(t *testing.T) {\n\ttestCases := []struct {\n\t\tdescription   string\n\t\tspec          *specs.Spec\n\t\texpectedError error\n\t\texpectedSpec  *specs.Spec\n\t}{\n\t\t{\n\t\t\tdescription: \"duplicate hooks are removed\",\n\t\t\tspec: &specs.Spec{\n\t\t\t\tDevices: []specs.Device{\n\t\t\t\t\t{\n\t\t\t\t\t\tName: \"gpu0\",\n\t\t\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\t\t\tHooks: []*specs.Hook{\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tHookName: \"createContainer\",\n\t\t\t\t\t\t\t\t\tPath:     \"/usr/bin/nvidia-cdi-hook\",\n\t\t\t\t\t\t\t\t\tArgs:     []string{\"nvidia-cdi-hook\", \"chmod\", \"--mode\", \"755\", \"--path\", \"/dev/dri\"},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tName: \"gpu1\",\n\t\t\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\t\t\tHooks: []*specs.Hook{\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tHookName: \"createContainer\",\n\t\t\t\t\t\t\t\t\tPath:     \"/usr/bin/nvidia-cdi-hook\",\n\t\t\t\t\t\t\t\t\tArgs:     []string{\"nvidia-cdi-hook\", \"chmod\", \"--mode\", \"755\", \"--path\", \"/dev/dri\"},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedSpec: &specs.Spec{\n\t\t\t\tDevices: []specs.Device{\n\t\t\t\t\t{\n\t\t\t\t\t\tName: \"all\",\n\t\t\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\t\t\tHooks: []*specs.Hook{\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tHookName: \"createContainer\",\n\t\t\t\t\t\t\t\t\tPath:     \"/usr/bin/nvidia-cdi-hook\",\n\t\t\t\t\t\t\t\t\tArgs:     []string{\"nvidia-cdi-hook\", \"chmod\", \"--mode\", \"755\", \"--path\", \"/dev/dri\"},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tName: \"gpu0\",\n\t\t\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\t\t\tHooks: []*specs.Hook{\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tHookName: \"createContainer\",\n\t\t\t\t\t\t\t\t\tPath:     \"/usr/bin/nvidia-cdi-hook\",\n\t\t\t\t\t\t\t\t\tArgs:     []string{\"nvidia-cdi-hook\", \"chmod\", \"--mode\", \"755\", \"--path\", \"/dev/dri\"},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tName: \"gpu1\",\n\t\t\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\t\t\tHooks: []*specs.Hook{\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tHookName: \"createContainer\",\n\t\t\t\t\t\t\t\t\tPath:     \"/usr/bin/nvidia-cdi-hook\",\n\t\t\t\t\t\t\t\t\tArgs:     []string{\"nvidia-cdi-hook\", \"chmod\", \"--mode\", \"755\", \"--path\", \"/dev/dri\"},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\tm, err := NewMergedDevice()\n\t\t\trequire.NoError(t, err)\n\n\t\t\terr = m.Transform(tc.spec)\n\t\t\tif tc.expectedError != nil {\n\t\t\t\trequire.Error(t, err)\n\t\t\t\treturn\n\t\t\t}\n\t\t\trequire.NoError(t, err)\n\n\t\t\trequire.EqualValues(t, tc.expectedSpec, tc.spec)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "pkg/nvcdi/transform/noop/no-op.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage noop\n\nimport (\n\t\"tags.cncf.io/container-device-interface/specs-go\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/nvcdi/transform\"\n)\n\ntype noop struct{}\n\nvar _ transform.Transformer = (*noop)(nil)\n\n// New returns a no-op transformer.\nfunc New() transform.Transformer {\n\treturn noop{}\n}\n\n// Transform is a no-op for a noop transformer.\nfunc (n noop) Transform(spec *specs.Spec) error {\n\treturn nil\n}\n"
  },
  {
    "path": "pkg/nvcdi/transform/remove.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage transform\n\nimport (\n\t\"fmt\"\n\n\t\"tags.cncf.io/container-device-interface/specs-go\"\n)\n\ntype remove map[string]bool\n\nfunc newRemover(ids ...string) Transformer {\n\tr := make(remove)\n\tfor _, id := range ids {\n\t\tr[id] = true\n\t}\n\treturn r\n}\n\n// Transform remove the specified entities from the spec.\nfunc (r remove) Transform(spec *specs.Spec) error {\n\tif spec == nil {\n\t\treturn nil\n\t}\n\n\tfor _, device := range spec.Devices {\n\t\tdevice := device\n\t\tif err := r.transformEdits(&device.ContainerEdits); err != nil {\n\t\t\treturn fmt.Errorf(\"failed to remove edits from device %q: %w\", device.Name, err)\n\t\t}\n\t}\n\n\treturn r.transformEdits(&spec.ContainerEdits)\n}\n\nfunc (r remove) transformEdits(edits *specs.ContainerEdits) error {\n\tif edits == nil {\n\t\treturn nil\n\t}\n\n\tvar deviceNodes []*specs.DeviceNode\n\tfor _, entity := range edits.DeviceNodes {\n\t\tid, err := deviceNode(*entity).id()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif r[id] {\n\t\t\tcontinue\n\t\t}\n\t\tdeviceNodes = append(deviceNodes, entity)\n\t}\n\tedits.DeviceNodes = deviceNodes\n\n\tvar envs []string\n\tfor _, entity := range edits.Env {\n\t\tid := entity\n\t\tif r[id] {\n\t\t\tcontinue\n\t\t}\n\t\tenvs = append(envs, entity)\n\t}\n\tedits.Env = envs\n\n\tvar hooks []*specs.Hook\n\tfor _, entity := range edits.Hooks {\n\t\tid, err := hook(*entity).id()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif r[id] {\n\t\t\tcontinue\n\t\t}\n\t\thooks = append(hooks, entity)\n\t}\n\tedits.Hooks = hooks\n\n\tvar mounts []*specs.Mount\n\tfor _, entity := range edits.Mounts {\n\t\tid, err := mount(*entity).id()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif r[id] {\n\t\t\tcontinue\n\t\t}\n\t\tmounts = append(mounts, entity)\n\t}\n\tedits.Mounts = mounts\n\n\treturn nil\n}\n"
  },
  {
    "path": "pkg/nvcdi/transform/root/builder.go",
    "content": "/**\n# Copyright 2023 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage root\n\nimport (\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/nvcdi/transform\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/nvcdi/transform/noop\"\n)\n\ntype builder struct {\n\ttransformer\n\trelativeTo string\n}\n\nfunc (b *builder) build() transform.Transformer {\n\tif b.root == b.targetRoot {\n\t\treturn noop.New()\n\t}\n\n\tif b.relativeTo == \"container\" {\n\t\treturn containerRootTransformer(b.transformer)\n\t}\n\treturn hostRootTransformer(b.transformer)\n}\n"
  },
  {
    "path": "pkg/nvcdi/transform/root/container-root.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage root\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\t\"tags.cncf.io/container-device-interface/specs-go\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/nvcdi/transform\"\n)\n\n// containerRootTransformer transforms the roots of container paths in a CDI spec.\ntype containerRootTransformer transformer\n\nvar _ transform.Transformer = (*containerRootTransformer)(nil)\n\n// Transform replaces the root in a spec with a new root.\n// It walks the spec and replaces all container paths that start with root with the target root.\nfunc (t containerRootTransformer) Transform(spec *specs.Spec) error {\n\tif spec == nil {\n\t\treturn nil\n\t}\n\n\tfor _, d := range spec.Devices {\n\t\td := d\n\t\tif err := t.applyToEdits(&d.ContainerEdits); err != nil {\n\t\t\treturn fmt.Errorf(\"failed to apply root transform to device %s: %w\", d.Name, err)\n\t\t}\n\t}\n\n\tif err := t.applyToEdits(&spec.ContainerEdits); err != nil {\n\t\treturn fmt.Errorf(\"failed to apply root transform to spec: %w\", err)\n\t}\n\treturn nil\n}\n\nfunc (t containerRootTransformer) applyToEdits(edits *specs.ContainerEdits) error {\n\tfor i, dn := range edits.DeviceNodes {\n\t\tedits.DeviceNodes[i] = t.transformDeviceNode(dn)\n\t}\n\n\tfor i, hook := range edits.Hooks {\n\t\tedits.Hooks[i] = t.transformHook(hook)\n\t}\n\n\tfor i, mount := range edits.Mounts {\n\t\tedits.Mounts[i] = t.transformMount(mount)\n\t}\n\n\treturn nil\n}\n\nfunc (t containerRootTransformer) transformDeviceNode(dn *specs.DeviceNode) *specs.DeviceNode {\n\tdn.Path = t.transformPath(dn.Path)\n\n\treturn dn\n}\n\nfunc (t containerRootTransformer) transformHook(hook *specs.Hook) *specs.Hook {\n\t// The Path in the startContainer hook MUST resolve in the container namespace.\n\tif hook.HookName == \"startContainer\" {\n\t\thook.Path = t.transformPath(hook.Path)\n\t}\n\n\t// The createContainer and startContainer hooks MUST execute in the container namespace.\n\tif hook.HookName != \"createContainer\" && hook.HookName != \"startContainer\" {\n\t\treturn hook\n\t}\n\n\tvar args []string\n\tfor _, arg := range hook.Args {\n\t\tif !strings.Contains(arg, \"::\") {\n\t\t\targs = append(args, t.transformPath(arg))\n\t\t\tcontinue\n\t\t}\n\n\t\t// For the 'create-symlinks' hook, special care is taken for the\n\t\t// '--link' flag argument which takes the form <target>::<link>.\n\t\t// Both paths, the target and link paths, are transformed.\n\t\tsplit := strings.SplitN(arg, \"::\", 2)\n\t\tsplit[0] = t.transformPath(split[0])\n\t\tsplit[1] = t.transformPath(split[1])\n\t\targs = append(args, strings.Join(split, \"::\"))\n\t}\n\thook.Args = args\n\n\treturn hook\n}\n\nfunc (t containerRootTransformer) transformMount(mount *specs.Mount) *specs.Mount {\n\tmount.ContainerPath = t.transformPath(mount.ContainerPath)\n\treturn mount\n}\n\nfunc (t containerRootTransformer) transformPath(path string) string {\n\treturn (transformer)(t).transformPath(path)\n}\n"
  },
  {
    "path": "pkg/nvcdi/transform/root/container-root_test.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage root\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\t\"tags.cncf.io/container-device-interface/specs-go\"\n)\n\nfunc TestContainerRootTransformer(t *testing.T) {\n\ttestCases := []struct {\n\t\tdescription  string\n\t\troot         string\n\t\ttargetRoot   string\n\t\tspec         *specs.Spec\n\t\texpectedSpec *specs.Spec\n\t}{\n\t\t{\n\t\t\tdescription:  \"nil spec\",\n\t\t\troot:         \"/root\",\n\t\t\ttargetRoot:   \"/target-root\",\n\t\t\tspec:         nil,\n\t\t\texpectedSpec: nil,\n\t\t},\n\t\t{\n\t\t\tdescription:  \"empty spec\",\n\t\t\troot:         \"/root\",\n\t\t\ttargetRoot:   \"/target-root\",\n\t\t\tspec:         &specs.Spec{},\n\t\t\texpectedSpec: &specs.Spec{},\n\t\t},\n\t\t{\n\t\t\tdescription: \"device nodes\",\n\t\t\troot:        \"/root\",\n\t\t\ttargetRoot:  \"/target-root\",\n\t\t\tspec: &specs.Spec{\n\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\tDeviceNodes: []*specs.DeviceNode{\n\t\t\t\t\t\t{HostPath: \"/root/dev/nvidia0\", Path: \"/root/dev/nvidia0\"},\n\t\t\t\t\t\t{HostPath: \"/target-root/dev/nvidia1\", Path: \"/target-root/dev/nvidia1\"},\n\t\t\t\t\t\t{HostPath: \"/different-root/dev/nvidia2\", Path: \"/different-root/dev/nvidia2\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedSpec: &specs.Spec{\n\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\tDeviceNodes: []*specs.DeviceNode{\n\t\t\t\t\t\t{HostPath: \"/root/dev/nvidia0\", Path: \"/target-root/dev/nvidia0\"},\n\t\t\t\t\t\t{HostPath: \"/target-root/dev/nvidia1\", Path: \"/target-root/dev/nvidia1\"},\n\t\t\t\t\t\t{HostPath: \"/different-root/dev/nvidia2\", Path: \"/different-root/dev/nvidia2\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"mounts\",\n\t\t\troot:        \"/root\",\n\t\t\ttargetRoot:  \"/target-root\",\n\t\t\tspec: &specs.Spec{\n\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\tMounts: []*specs.Mount{\n\t\t\t\t\t\t{HostPath: \"/root/lib/lib1.so\", ContainerPath: \"/root/lib/lib1.so\"},\n\t\t\t\t\t\t{HostPath: \"/target-root/lib/lib2.so\", ContainerPath: \"/target-root/lib/lib2.so\"},\n\t\t\t\t\t\t{HostPath: \"/different-root/lib/lib3.so\", ContainerPath: \"/different-root/lib/lib3.so\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedSpec: &specs.Spec{\n\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\tMounts: []*specs.Mount{\n\t\t\t\t\t\t{HostPath: \"/root/lib/lib1.so\", ContainerPath: \"/target-root/lib/lib1.so\"},\n\t\t\t\t\t\t{HostPath: \"/target-root/lib/lib2.so\", ContainerPath: \"/target-root/lib/lib2.so\"},\n\t\t\t\t\t\t{HostPath: \"/different-root/lib/lib3.so\", ContainerPath: \"/different-root/lib/lib3.so\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"hooks\",\n\t\t\troot:        \"/root\",\n\t\t\ttargetRoot:  \"/target-root\",\n\t\t\tspec: &specs.Spec{\n\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\tHooks: []*specs.Hook{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHookName: \"createContainer\",\n\t\t\t\t\t\t\tPath:     \"/root/usr/bin/nvidia-ctk\",\n\t\t\t\t\t\t\tArgs: []string{\n\t\t\t\t\t\t\t\t\"--link\",\n\t\t\t\t\t\t\t\t\"/root/path/to/target::/root/path/to/link\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHookName: \"createContainer\",\n\t\t\t\t\t\t\tPath:     \"/target-root/usr/bin/nvidia-ctk\",\n\t\t\t\t\t\t\tArgs: []string{\n\t\t\t\t\t\t\t\t\"--link\",\n\t\t\t\t\t\t\t\t\"/target-root/path/to/target::/target-root/path/to/link\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHookName: \"createContainer\",\n\t\t\t\t\t\t\tPath:     \"/different-root/usr/bin/nvidia-ctk\",\n\t\t\t\t\t\t\tArgs: []string{\n\t\t\t\t\t\t\t\t\"--link\",\n\t\t\t\t\t\t\t\t\"/different-root/path/to/target::/different-root/path/to/link\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedSpec: &specs.Spec{\n\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\tHooks: []*specs.Hook{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHookName: \"createContainer\",\n\t\t\t\t\t\t\tPath:     \"/root/usr/bin/nvidia-ctk\",\n\t\t\t\t\t\t\tArgs: []string{\n\t\t\t\t\t\t\t\t\"--link\",\n\t\t\t\t\t\t\t\t\"/target-root/path/to/target::/target-root/path/to/link\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHookName: \"createContainer\",\n\t\t\t\t\t\t\tPath:     \"/target-root/usr/bin/nvidia-ctk\",\n\t\t\t\t\t\t\tArgs: []string{\n\t\t\t\t\t\t\t\t\"--link\",\n\t\t\t\t\t\t\t\t\"/target-root/path/to/target::/target-root/path/to/link\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHookName: \"createContainer\",\n\t\t\t\t\t\t\tPath:     \"/different-root/usr/bin/nvidia-ctk\",\n\t\t\t\t\t\t\tArgs: []string{\n\t\t\t\t\t\t\t\t\"--link\",\n\t\t\t\t\t\t\t\t\"/different-root/path/to/target::/different-root/path/to/link\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"update ldcache hooks\",\n\t\t\troot:        \"/root\",\n\t\t\ttargetRoot:  \"/target-root\",\n\t\t\tspec: &specs.Spec{\n\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\tHooks: []*specs.Hook{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHookName: \"createContainer\",\n\t\t\t\t\t\t\tPath:     \"/root/usr/bin/nvidia-cdi-hook\",\n\t\t\t\t\t\t\tArgs: []string{\n\t\t\t\t\t\t\t\t\"nvidia-cdi-hook\", \"update-ldcache\",\n\t\t\t\t\t\t\t\t\"--folder\",\n\t\t\t\t\t\t\t\t\"/root/path/to/target\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHookName: \"createContainer\",\n\t\t\t\t\t\t\tPath:     \"/target-root/usr/bin/nvidia-cdi-hook\",\n\t\t\t\t\t\t\tArgs: []string{\n\t\t\t\t\t\t\t\t\"nvidia-cdi-hook\", \"update-ldcache\",\n\t\t\t\t\t\t\t\t\"--folder\",\n\t\t\t\t\t\t\t\t\"/target-root/path/to/target\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHookName: \"createContainer\",\n\t\t\t\t\t\t\tPath:     \"/different-root/usr/bin/nvidia-cdi-hook\",\n\t\t\t\t\t\t\tArgs: []string{\n\t\t\t\t\t\t\t\t\"nvidia-cdi-hook\", \"update-ldcache\",\n\t\t\t\t\t\t\t\t\"--folder\",\n\t\t\t\t\t\t\t\t\"/different-root/path/to/target\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedSpec: &specs.Spec{\n\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\tHooks: []*specs.Hook{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHookName: \"createContainer\",\n\t\t\t\t\t\t\tPath:     \"/root/usr/bin/nvidia-cdi-hook\",\n\t\t\t\t\t\t\tArgs: []string{\n\t\t\t\t\t\t\t\t\"nvidia-cdi-hook\", \"update-ldcache\",\n\t\t\t\t\t\t\t\t\"--folder\",\n\t\t\t\t\t\t\t\t\"/target-root/path/to/target\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHookName: \"createContainer\",\n\t\t\t\t\t\t\tPath:     \"/target-root/usr/bin/nvidia-cdi-hook\",\n\t\t\t\t\t\t\tArgs: []string{\n\t\t\t\t\t\t\t\t\"nvidia-cdi-hook\", \"update-ldcache\",\n\t\t\t\t\t\t\t\t\"--folder\",\n\t\t\t\t\t\t\t\t\"/target-root/path/to/target\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHookName: \"createContainer\",\n\t\t\t\t\t\t\tPath:     \"/different-root/usr/bin/nvidia-cdi-hook\",\n\t\t\t\t\t\t\tArgs: []string{\n\t\t\t\t\t\t\t\t\"nvidia-cdi-hook\", \"update-ldcache\",\n\t\t\t\t\t\t\t\t\"--folder\",\n\t\t\t\t\t\t\t\t\"/different-root/path/to/target\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"startContainer hook updates path and arguments\",\n\t\t\troot:        \"/root\",\n\t\t\ttargetRoot:  \"/target-root\",\n\t\t\tspec: &specs.Spec{\n\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\tHooks: []*specs.Hook{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHookName: \"startContainer\",\n\t\t\t\t\t\t\tPath:     \"/root/usr/bin/nvidia-cdi-hook\",\n\t\t\t\t\t\t\tArgs: []string{\n\t\t\t\t\t\t\t\t\"--link\",\n\t\t\t\t\t\t\t\t\"/root/path/to/target::/root/path/to/link\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedSpec: &specs.Spec{\n\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\tHooks: []*specs.Hook{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHookName: \"startContainer\",\n\t\t\t\t\t\t\tPath:     \"/target-root/usr/bin/nvidia-cdi-hook\",\n\t\t\t\t\t\t\tArgs: []string{\n\t\t\t\t\t\t\t\t\"--link\",\n\t\t\t\t\t\t\t\t\"/target-root/path/to/target::/target-root/path/to/link\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"createContainer hook skips path but updates arguments\",\n\t\t\troot:        \"/root\",\n\t\t\ttargetRoot:  \"/target-root\",\n\t\t\tspec: &specs.Spec{\n\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\tHooks: []*specs.Hook{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHookName: \"createContainer\",\n\t\t\t\t\t\t\tPath:     \"/root/usr/bin/nvidia-cdi-hook\",\n\t\t\t\t\t\t\tArgs: []string{\n\t\t\t\t\t\t\t\t\"--link\",\n\t\t\t\t\t\t\t\t\"/root/path/to/target::/root/path/to/link\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedSpec: &specs.Spec{\n\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\tHooks: []*specs.Hook{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHookName: \"createContainer\",\n\t\t\t\t\t\t\tPath:     \"/root/usr/bin/nvidia-cdi-hook\",\n\t\t\t\t\t\t\tArgs: []string{\n\t\t\t\t\t\t\t\t\"--link\",\n\t\t\t\t\t\t\t\t\"/target-root/path/to/target::/target-root/path/to/link\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"createRuntime hook skips path and arguments\",\n\t\t\troot:        \"/root\",\n\t\t\ttargetRoot:  \"/target-root\",\n\t\t\tspec: &specs.Spec{\n\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\tHooks: []*specs.Hook{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHookName: \"createRuntime\",\n\t\t\t\t\t\t\tPath:     \"/root/usr/bin/nvidia-cdi-hook\",\n\t\t\t\t\t\t\tArgs: []string{\n\t\t\t\t\t\t\t\t\"--link\",\n\t\t\t\t\t\t\t\t\"/root/path/to/target::/root/path/to/link\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedSpec: &specs.Spec{\n\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\tHooks: []*specs.Hook{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHookName: \"createRuntime\",\n\t\t\t\t\t\t\tPath:     \"/root/usr/bin/nvidia-cdi-hook\",\n\t\t\t\t\t\t\tArgs: []string{\n\t\t\t\t\t\t\t\t\"--link\",\n\t\t\t\t\t\t\t\t\"/root/path/to/target::/root/path/to/link\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\terr := New(\n\t\t\t\tWithRoot(tc.root),\n\t\t\t\tWithTargetRoot(tc.targetRoot),\n\t\t\t\tWithRelativeTo(\"container\"),\n\t\t\t).Transform(tc.spec)\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.Equal(t, tc.spec, tc.expectedSpec)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "pkg/nvcdi/transform/root/driver-root.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage root\n\nimport (\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/nvcdi/transform\"\n)\n\ntype DriverOption func(*driverOptions)\n\nfunc WithDriverRoot(root string) DriverOption {\n\treturn func(do *driverOptions) {\n\t\tdo.driverRoot = root\n\t}\n}\n\nfunc WithTargetDriverRoot(root string) DriverOption {\n\treturn func(do *driverOptions) {\n\t\tdo.targetDriverRoot = root\n\t}\n}\n\nfunc WithDevRoot(root string) DriverOption {\n\treturn func(do *driverOptions) {\n\t\tdo.devRoot = root\n\t}\n}\n\nfunc WithTargetDevRoot(root string) DriverOption {\n\treturn func(do *driverOptions) {\n\t\tdo.targetDevRoot = root\n\t}\n}\n\ntype driverOptions struct {\n\tdriverRoot       string\n\ttargetDriverRoot string\n\tdevRoot          string\n\ttargetDevRoot    string\n}\n\n// NewDriverTransformer creates a transformer for transforming driver specifications.\nfunc NewDriverTransformer(opts ...DriverOption) transform.Transformer {\n\td := &driverOptions{}\n\tfor _, opt := range opts {\n\t\topt(d)\n\t}\n\tif d.driverRoot == \"\" {\n\t\td.driverRoot = \"/\"\n\t}\n\tif d.targetDriverRoot == \"\" {\n\t\td.targetDriverRoot = \"/\"\n\t}\n\tif d.devRoot == \"\" {\n\t\td.devRoot = d.driverRoot\n\t}\n\tif d.targetDevRoot == \"\" {\n\t\td.targetDevRoot = d.targetDriverRoot\n\t}\n\n\tvar transformers []transform.Transformer\n\n\tif d.targetDevRoot != d.targetDriverRoot {\n\t\tdevRootTransformer := New(\n\t\t\tWithRoot(ensureDev(d.devRoot)),\n\t\t\tWithTargetRoot(ensureDev(d.targetDevRoot)),\n\t\t)\n\t\ttransformers = append(transformers, devRootTransformer)\n\t}\n\n\tdriverRootTransformer := New(\n\t\tWithRoot(d.driverRoot),\n\t\tWithTargetRoot(d.targetDriverRoot),\n\t)\n\ttransformers = append(transformers, driverRootTransformer)\n\n\treturn transform.Merge(transformers...)\n}\n\nfunc ensureDev(p string) string {\n\treturn filepath.Join(strings.TrimSuffix(filepath.Clean(p), \"/dev\"), \"/dev\")\n}\n"
  },
  {
    "path": "pkg/nvcdi/transform/root/driver-root_test.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage root\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\t\"tags.cncf.io/container-device-interface/specs-go\"\n)\n\nfunc TestDriverTransformer(t *testing.T) {\n\ttestCases := []struct {\n\t\tdescription      string\n\t\tdriverRoot       string\n\t\ttargetDriverRoot string\n\t\tdevRoot          string\n\t\ttargetDevRoot    string\n\t\tspec             *specs.Spec\n\t\texpectedError    error\n\t\texpectedSpec     *specs.Spec\n\t}{\n\t\t{\n\t\t\tdescription:      \"dev root not specified\",\n\t\t\tdriverRoot:       \"/driver-root\",\n\t\t\ttargetDriverRoot: \"/host/driver/root/\",\n\t\t\tspec: &specs.Spec{\n\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\tMounts: []*specs.Mount{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHostPath:      \"/driver-root/host/path\",\n\t\t\t\t\t\t\tContainerPath: \"/driver-root/container/path\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tDeviceNodes: []*specs.DeviceNode{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHostPath: \"/driver-root/dev/host/path\",\n\t\t\t\t\t\t\tPath:     \"/driver-root/dev/container/path\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedSpec: &specs.Spec{\n\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\tMounts: []*specs.Mount{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHostPath:      \"/host/driver/root/host/path\",\n\t\t\t\t\t\t\tContainerPath: \"/driver-root/container/path\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tDeviceNodes: []*specs.DeviceNode{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHostPath: \"/host/driver/root/dev/host/path\",\n\t\t\t\t\t\t\tPath:     \"/driver-root/dev/container/path\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription:      \"dev driver root matches\",\n\t\t\tdriverRoot:       \"/driver-root\",\n\t\t\ttargetDriverRoot: \"/host/driver/root/\",\n\t\t\tdevRoot:          \"/driver-root\",\n\t\t\ttargetDevRoot:    \"/host/driver/root/\",\n\t\t\tspec: &specs.Spec{\n\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\tMounts: []*specs.Mount{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHostPath:      \"/driver-root/host/path\",\n\t\t\t\t\t\t\tContainerPath: \"/driver-root/container/path\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tDeviceNodes: []*specs.DeviceNode{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHostPath: \"/driver-root/dev/host/path\",\n\t\t\t\t\t\t\tPath:     \"/driver-root/dev/container/path\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedSpec: &specs.Spec{\n\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\tMounts: []*specs.Mount{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHostPath:      \"/host/driver/root/host/path\",\n\t\t\t\t\t\t\tContainerPath: \"/driver-root/container/path\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tDeviceNodes: []*specs.DeviceNode{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHostPath: \"/host/driver/root/dev/host/path\",\n\t\t\t\t\t\t\tPath:     \"/driver-root/dev/container/path\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription:      \"dev driver root matches separate target dev root\",\n\t\t\tdriverRoot:       \"/driver-root\",\n\t\t\ttargetDriverRoot: \"/host/driver/root/\",\n\t\t\tdevRoot:          \"/driver-root\",\n\t\t\ttargetDevRoot:    \"/host/dev/root/\",\n\t\t\tspec: &specs.Spec{\n\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\tMounts: []*specs.Mount{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHostPath:      \"/driver-root/host/path\",\n\t\t\t\t\t\t\tContainerPath: \"/driver-root/container/path\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tDeviceNodes: []*specs.DeviceNode{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHostPath: \"/driver-root/dev/host/path\",\n\t\t\t\t\t\t\tPath:     \"/driver-root/dev/container/path\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedSpec: &specs.Spec{\n\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\tMounts: []*specs.Mount{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHostPath:      \"/host/driver/root/host/path\",\n\t\t\t\t\t\t\tContainerPath: \"/driver-root/container/path\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tDeviceNodes: []*specs.DeviceNode{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHostPath: \"/host/dev/root/dev/host/path\",\n\t\t\t\t\t\t\tPath:     \"/driver-root/dev/container/path\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription:      \"dev root specified with explicit target\",\n\t\t\tdriverRoot:       \"/driver-root\",\n\t\t\ttargetDriverRoot: \"/host/driver/root/\",\n\t\t\tdevRoot:          \"/\",\n\t\t\ttargetDevRoot:    \"/dev/root/\",\n\t\t\tspec: &specs.Spec{\n\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\tMounts: []*specs.Mount{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHostPath:      \"/driver-root/host/path\",\n\t\t\t\t\t\t\tContainerPath: \"/driver-root/container/path\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tDeviceNodes: []*specs.DeviceNode{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHostPath: \"/dev/host/path\",\n\t\t\t\t\t\t\tPath:     \"/dev/container/path\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedSpec: &specs.Spec{\n\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\tMounts: []*specs.Mount{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHostPath:      \"/host/driver/root/host/path\",\n\t\t\t\t\t\t\tContainerPath: \"/driver-root/container/path\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tDeviceNodes: []*specs.DeviceNode{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHostPath: \"/dev/root/dev/host/path\",\n\t\t\t\t\t\t\tPath:     \"/dev/container/path\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\ttransformer := NewDriverTransformer(\n\t\t\t\tWithDriverRoot(tc.driverRoot),\n\t\t\t\tWithTargetDriverRoot(tc.targetDriverRoot),\n\t\t\t\tWithDevRoot(tc.devRoot),\n\t\t\t\tWithTargetDevRoot(tc.targetDevRoot),\n\t\t\t)\n\n\t\t\terr := transformer.Transform(tc.spec)\n\n\t\t\trequire.ErrorIs(t, err, tc.expectedError)\n\t\t\trequire.EqualValues(t, tc.expectedSpec, tc.spec)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "pkg/nvcdi/transform/root/host-root.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage root\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\t\"tags.cncf.io/container-device-interface/specs-go\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/nvcdi/transform\"\n)\n\n// hostRootTransformer transforms the roots of host paths in a CDI spec.\ntype hostRootTransformer transformer\n\nvar _ transform.Transformer = (*hostRootTransformer)(nil)\n\n// Transform replaces the root in a spec with a new root.\n// It walks the spec and replaces all host paths that start with root with the target root.\nfunc (t hostRootTransformer) Transform(spec *specs.Spec) error {\n\tif spec == nil {\n\t\treturn nil\n\t}\n\n\tfor _, d := range spec.Devices {\n\t\td := d\n\t\tif err := t.applyToEdits(&d.ContainerEdits); err != nil {\n\t\t\treturn fmt.Errorf(\"failed to apply root transform to device %s: %w\", d.Name, err)\n\t\t}\n\t}\n\n\tif err := t.applyToEdits(&spec.ContainerEdits); err != nil {\n\t\treturn fmt.Errorf(\"failed to apply root transform to spec: %w\", err)\n\t}\n\treturn nil\n}\n\nfunc (t hostRootTransformer) applyToEdits(edits *specs.ContainerEdits) error {\n\tfor i, dn := range edits.DeviceNodes {\n\t\tedits.DeviceNodes[i] = t.transformDeviceNode(dn)\n\t}\n\n\tfor i, hook := range edits.Hooks {\n\t\tedits.Hooks[i] = t.transformHook(hook)\n\t}\n\n\tfor i, mount := range edits.Mounts {\n\t\tedits.Mounts[i] = t.transformMount(mount)\n\t}\n\n\treturn nil\n}\n\nfunc (t hostRootTransformer) transformDeviceNode(dn *specs.DeviceNode) *specs.DeviceNode {\n\tif dn.HostPath == \"\" {\n\t\tdn.HostPath = dn.Path\n\t}\n\tdn.HostPath = t.transformPath(dn.HostPath)\n\n\treturn dn\n}\n\nfunc (t hostRootTransformer) transformHook(hook *specs.Hook) *specs.Hook {\n\t// The Path in the startContainer hook MUST resolve in the container namespace.\n\tif hook.HookName != \"startContainer\" {\n\t\thook.Path = t.transformPath(hook.Path)\n\t}\n\n\t// The createContainer and startContainer hooks MUST execute in the container namespace.\n\tif hook.HookName == \"createContainer\" || hook.HookName == \"startContainer\" {\n\t\treturn hook\n\t}\n\n\tvar args []string\n\tfor _, arg := range hook.Args {\n\t\tif !strings.Contains(arg, \"::\") {\n\t\t\targs = append(args, t.transformPath(arg))\n\t\t\tcontinue\n\t\t}\n\n\t\t// For the 'create-symlinks' hook, special care is taken for the\n\t\t// '--link' flag argument which takes the form <target>::<link>.\n\t\t// Both paths, the target and link paths, are transformed.\n\t\tsplit := strings.SplitN(arg, \"::\", 2)\n\t\tsplit[0] = t.transformPath(split[0])\n\t\tsplit[1] = t.transformPath(split[1])\n\t\targs = append(args, strings.Join(split, \"::\"))\n\t}\n\thook.Args = args\n\n\treturn hook\n}\n\nfunc (t hostRootTransformer) transformMount(mount *specs.Mount) *specs.Mount {\n\tmount.HostPath = t.transformPath(mount.HostPath)\n\treturn mount\n}\n\nfunc (t hostRootTransformer) transformPath(path string) string {\n\treturn (transformer)(t).transformPath(path)\n}\n"
  },
  {
    "path": "pkg/nvcdi/transform/root/host-root_test.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage root\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\t\"tags.cncf.io/container-device-interface/specs-go\"\n)\n\nfunc TestHostRootTransformer(t *testing.T) {\n\ttestCases := []struct {\n\t\tdescription  string\n\t\troot         string\n\t\ttargetRoot   string\n\t\tspec         *specs.Spec\n\t\texpectedSpec *specs.Spec\n\t}{\n\t\t{\n\t\t\tdescription:  \"nil spec\",\n\t\t\troot:         \"/root\",\n\t\t\ttargetRoot:   \"/target-root\",\n\t\t\tspec:         nil,\n\t\t\texpectedSpec: nil,\n\t\t},\n\t\t{\n\t\t\tdescription:  \"empty spec\",\n\t\t\troot:         \"/root\",\n\t\t\ttargetRoot:   \"/target-root\",\n\t\t\tspec:         &specs.Spec{},\n\t\t\texpectedSpec: &specs.Spec{},\n\t\t},\n\t\t{\n\t\t\tdescription: \"device nodes\",\n\t\t\troot:        \"/root\",\n\t\t\ttargetRoot:  \"/target-root\",\n\t\t\tspec: &specs.Spec{\n\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\tDeviceNodes: []*specs.DeviceNode{\n\t\t\t\t\t\t{HostPath: \"/root/dev/nvidia0\", Path: \"/root/dev/nvidia0\"},\n\t\t\t\t\t\t{HostPath: \"/target-root/dev/nvidia1\", Path: \"/target-root/dev/nvidia1\"},\n\t\t\t\t\t\t{HostPath: \"/different-root/dev/nvidia2\", Path: \"/different-root/dev/nvidia2\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedSpec: &specs.Spec{\n\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\tDeviceNodes: []*specs.DeviceNode{\n\t\t\t\t\t\t{HostPath: \"/target-root/dev/nvidia0\", Path: \"/root/dev/nvidia0\"},\n\t\t\t\t\t\t{HostPath: \"/target-root/dev/nvidia1\", Path: \"/target-root/dev/nvidia1\"},\n\t\t\t\t\t\t{HostPath: \"/different-root/dev/nvidia2\", Path: \"/different-root/dev/nvidia2\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"mounts\",\n\t\t\troot:        \"/root\",\n\t\t\ttargetRoot:  \"/target-root\",\n\t\t\tspec: &specs.Spec{\n\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\tMounts: []*specs.Mount{\n\t\t\t\t\t\t{HostPath: \"/root/lib/lib1.so\", ContainerPath: \"/root/lib/lib1.so\"},\n\t\t\t\t\t\t{HostPath: \"/target-root/lib/lib2.so\", ContainerPath: \"/target-root/lib/lib2.so\"},\n\t\t\t\t\t\t{HostPath: \"/different-root/lib/lib3.so\", ContainerPath: \"/different-root/lib/lib3.so\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedSpec: &specs.Spec{\n\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\tMounts: []*specs.Mount{\n\t\t\t\t\t\t{HostPath: \"/target-root/lib/lib1.so\", ContainerPath: \"/root/lib/lib1.so\"},\n\t\t\t\t\t\t{HostPath: \"/target-root/lib/lib2.so\", ContainerPath: \"/target-root/lib/lib2.so\"},\n\t\t\t\t\t\t{HostPath: \"/different-root/lib/lib3.so\", ContainerPath: \"/different-root/lib/lib3.so\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"hooks\",\n\t\t\troot:        \"/root\",\n\t\t\ttargetRoot:  \"/target-root\",\n\t\t\tspec: &specs.Spec{\n\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\tHooks: []*specs.Hook{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/root/usr/bin/nvidia-ctk\",\n\t\t\t\t\t\t\tArgs: []string{\n\t\t\t\t\t\t\t\t\"--link\",\n\t\t\t\t\t\t\t\t\"/root/path/to/target::/root/path/to/link\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/target-root/usr/bin/nvidia-ctk\",\n\t\t\t\t\t\t\tArgs: []string{\n\t\t\t\t\t\t\t\t\"--link\",\n\t\t\t\t\t\t\t\t\"/target-root/path/to/target::/target-root/path/to/link\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/different-root/usr/bin/nvidia-ctk\",\n\t\t\t\t\t\t\tArgs: []string{\n\t\t\t\t\t\t\t\t\"--link\",\n\t\t\t\t\t\t\t\t\"/different-root/path/to/target::/different-root/path/to/link\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedSpec: &specs.Spec{\n\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\tHooks: []*specs.Hook{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/target-root/usr/bin/nvidia-ctk\",\n\t\t\t\t\t\t\tArgs: []string{\n\t\t\t\t\t\t\t\t\"--link\",\n\t\t\t\t\t\t\t\t\"/target-root/path/to/target::/target-root/path/to/link\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/target-root/usr/bin/nvidia-ctk\",\n\t\t\t\t\t\t\tArgs: []string{\n\t\t\t\t\t\t\t\t\"--link\",\n\t\t\t\t\t\t\t\t\"/target-root/path/to/target::/target-root/path/to/link\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/different-root/usr/bin/nvidia-ctk\",\n\t\t\t\t\t\t\tArgs: []string{\n\t\t\t\t\t\t\t\t\"--link\",\n\t\t\t\t\t\t\t\t\"/different-root/path/to/target::/different-root/path/to/link\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"createContainer hook skips arguments\",\n\t\t\troot:        \"/root\",\n\t\t\ttargetRoot:  \"/target-root\",\n\t\t\tspec: &specs.Spec{\n\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\tHooks: []*specs.Hook{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHookName: \"createContainer\",\n\t\t\t\t\t\t\tPath:     \"/root/usr/bin/nvidia-ctk\",\n\t\t\t\t\t\t\tArgs: []string{\n\t\t\t\t\t\t\t\t\"--link\",\n\t\t\t\t\t\t\t\t\"/root/path/to/target::/root/path/to/link\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedSpec: &specs.Spec{\n\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\tHooks: []*specs.Hook{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHookName: \"createContainer\",\n\t\t\t\t\t\t\tPath:     \"/target-root/usr/bin/nvidia-ctk\",\n\t\t\t\t\t\t\tArgs: []string{\n\t\t\t\t\t\t\t\t\"--link\",\n\t\t\t\t\t\t\t\t\"/root/path/to/target::/root/path/to/link\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"startContainer hook skips path and arguments\",\n\t\t\troot:        \"/root\",\n\t\t\ttargetRoot:  \"/target-root\",\n\t\t\tspec: &specs.Spec{\n\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\tHooks: []*specs.Hook{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHookName: \"startContainer\",\n\t\t\t\t\t\t\tPath:     \"/root/usr/bin/nvidia-ctk\",\n\t\t\t\t\t\t\tArgs: []string{\n\t\t\t\t\t\t\t\t\"--link\",\n\t\t\t\t\t\t\t\t\"/root/path/to/target::/root/path/to/link\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedSpec: &specs.Spec{\n\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\tHooks: []*specs.Hook{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHookName: \"startContainer\",\n\t\t\t\t\t\t\tPath:     \"/root/usr/bin/nvidia-ctk\",\n\t\t\t\t\t\t\tArgs: []string{\n\t\t\t\t\t\t\t\t\"--link\",\n\t\t\t\t\t\t\t\t\"/root/path/to/target::/root/path/to/link\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"createRuntime hook updates path and arguments\",\n\t\t\troot:        \"/root\",\n\t\t\ttargetRoot:  \"/target-root\",\n\t\t\tspec: &specs.Spec{\n\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\tHooks: []*specs.Hook{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHookName: \"createRuntime\",\n\t\t\t\t\t\t\tPath:     \"/root/usr/bin/nvidia-ctk\",\n\t\t\t\t\t\t\tArgs: []string{\n\t\t\t\t\t\t\t\t\"--link\",\n\t\t\t\t\t\t\t\t\"/root/path/to/target::/root/path/to/link\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedSpec: &specs.Spec{\n\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\tHooks: []*specs.Hook{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tHookName: \"createRuntime\",\n\t\t\t\t\t\t\tPath:     \"/target-root/usr/bin/nvidia-ctk\",\n\t\t\t\t\t\t\tArgs: []string{\n\t\t\t\t\t\t\t\t\"--link\",\n\t\t\t\t\t\t\t\t\"/target-root/path/to/target::/target-root/path/to/link\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\terr := New(\n\t\t\t\tWithRoot(tc.root),\n\t\t\t\tWithTargetRoot(tc.targetRoot),\n\t\t\t).Transform(tc.spec)\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.Equal(t, tc.spec, tc.expectedSpec)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "pkg/nvcdi/transform/root/options.go",
    "content": "/**\n# Copyright 2023 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage root\n\n// Option defines a functional option for configuring a transormer.\ntype Option func(*builder)\n\n// WithRoot sets the (from) root for the root transformer.\nfunc WithRoot(root string) Option {\n\treturn func(b *builder) {\n\t\tb.root = root\n\t}\n}\n\n// WithTargetRoot sets the (to) target root for the root transformer.\nfunc WithTargetRoot(root string) Option {\n\treturn func(b *builder) {\n\t\tb.targetRoot = root\n\t}\n}\n\n// WithRelativeTo sets whether the specified root is relative to the host or container.\nfunc WithRelativeTo(relativeTo string) Option {\n\treturn func(b *builder) {\n\t\tb.relativeTo = relativeTo\n\t}\n}\n"
  },
  {
    "path": "pkg/nvcdi/transform/root/root.go",
    "content": "/**\n# Copyright 2023 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage root\n\nimport (\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/nvcdi/transform\"\n)\n\n// transformer transforms roots of paths.\ntype transformer struct {\n\troot       string\n\ttargetRoot string\n}\n\n// New creates a root transformer using the specified options.\nfunc New(opts ...Option) transform.Transformer {\n\tb := &builder{}\n\tfor _, opt := range opts {\n\t\topt(b)\n\t}\n\treturn b.build()\n}\n\nfunc (t transformer) transformPath(path string) string {\n\tif !strings.HasPrefix(path, t.root) {\n\t\treturn path\n\t}\n\n\treturn filepath.Join(t.targetRoot, strings.TrimPrefix(path, t.root))\n}\n"
  },
  {
    "path": "pkg/nvcdi/transform/simplify.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage transform\n\nimport (\n\t\"fmt\"\n\n\t\"tags.cncf.io/container-device-interface/specs-go\"\n)\n\ntype simplify struct{}\n\nvar _ Transformer = (*simplify)(nil)\n\n// NewSimplifier creates a simplifier transformer.\n// This transoformer ensures that entities in the spec are deduplicated and that common edits are removed from device-specific edits.\nfunc NewSimplifier() Transformer {\n\treturn Merge(\n\t\tdedupe{},\n\t\tsimplify{},\n\t\tsorter{},\n\t)\n}\n\n// Transform simplifies the supplied spec.\n// Edits that are present in the common edits are removed from device-specific edits.\nfunc (s simplify) Transform(spec *specs.Spec) error {\n\tif spec == nil {\n\t\treturn nil\n\t}\n\n\tdedupe := dedupe{}\n\tif err := dedupe.Transform(spec); err != nil {\n\t\treturn err\n\t}\n\n\tcommonEntityIDs, err := (*containerEdits)(&spec.ContainerEdits).getEntityIds()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\ttoRemove := newRemover(commonEntityIDs...)\n\tvar updatedDevices []specs.Device\n\tfor _, device := range spec.Devices {\n\t\tdeviceAsSpec := specs.Spec{\n\t\t\tContainerEdits: device.ContainerEdits,\n\t\t}\n\t\terr := toRemove.Transform(&deviceAsSpec)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"failed to transform device edits: %w\", err)\n\t\t}\n\n\t\tif !(containerEdits)(deviceAsSpec.ContainerEdits).IsEmpty() {\n\t\t\t// Devices with empty edits are invalid.\n\t\t\t// We only update the container edits for the device if this would\n\t\t\t// result in a valid device.\n\t\t\tdevice.ContainerEdits = deviceAsSpec.ContainerEdits\n\t\t}\n\t\tupdatedDevices = append(updatedDevices, device)\n\t}\n\tspec.Devices = updatedDevices\n\n\treturn nil\n}\n"
  },
  {
    "path": "pkg/nvcdi/transform/simplify_test.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage transform\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\t\"tags.cncf.io/container-device-interface/specs-go\"\n)\n\nfunc TestSimplify(t *testing.T) {\n\ttestCases := []struct {\n\t\tdescription   string\n\t\tspec          *specs.Spec\n\t\texpectedError error\n\t\texpectedSpec  *specs.Spec\n\t}{\n\t\t{\n\t\t\tdescription: \"nil spec is a no-op\",\n\t\t},\n\t\t{\n\t\t\tdescription:  \"empty spec is simplified\",\n\t\t\tspec:         &specs.Spec{},\n\t\t\texpectedSpec: &specs.Spec{},\n\t\t},\n\t\t{\n\t\t\tdescription: \"simplify does not allow empty device\",\n\t\t\tspec: &specs.Spec{\n\t\t\t\tDevices: []specs.Device{\n\t\t\t\t\t{\n\t\t\t\t\t\tName: \"device0\",\n\t\t\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\t\t\tEnv: []string{\"FOO=BAR\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\tEnv: []string{\"FOO=BAR\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedSpec: &specs.Spec{\n\t\t\t\tDevices: []specs.Device{\n\t\t\t\t\t{\n\t\t\t\t\t\tName: \"device0\",\n\t\t\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\t\t\tEnv: []string{\"FOO=BAR\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\tEnv: []string{\"FOO=BAR\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"simplify removes common entities\",\n\t\t\tspec: &specs.Spec{\n\t\t\t\tDevices: []specs.Device{\n\t\t\t\t\t{\n\t\t\t\t\t\tName: \"device0\",\n\t\t\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\t\t\tEnv: []string{\"FOO=BAR\"},\n\t\t\t\t\t\t\tDeviceNodes: []*specs.DeviceNode{\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tPath: \"/dev/gpu0\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\tEnv: []string{\"FOO=BAR\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedSpec: &specs.Spec{\n\t\t\t\tDevices: []specs.Device{\n\t\t\t\t\t{\n\t\t\t\t\t\tName: \"device0\",\n\t\t\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\t\t\tDeviceNodes: []*specs.DeviceNode{\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tPath: \"/dev/gpu0\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\tEnv: []string{\"FOO=BAR\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"simplify removes hooks\",\n\t\t\tspec: &specs.Spec{\n\t\t\t\tDevices: []specs.Device{\n\t\t\t\t\t{\n\t\t\t\t\t\tName: \"gpu0\",\n\t\t\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\t\t\tHooks: []*specs.Hook{\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tHookName: \"createContainer\",\n\t\t\t\t\t\t\t\t\tPath:     \"/usr/bin/nvidia-cdi-hook\",\n\t\t\t\t\t\t\t\t\tArgs:     []string{\"nvidia-cdi-hook\", \"chmod\", \"--mode\", \"755\", \"--path\", \"/dev/dri\"},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tName: \"gpu1\",\n\t\t\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\t\t\tHooks: []*specs.Hook{\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tHookName: \"createContainer\",\n\t\t\t\t\t\t\t\t\tPath:     \"/usr/bin/nvidia-cdi-hook\",\n\t\t\t\t\t\t\t\t\tArgs:     []string{\"nvidia-cdi-hook\", \"chmod\", \"--mode\", \"755\", \"--path\", \"/dev/dri\"},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tName: \"all\",\n\t\t\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\t\t\tHooks: []*specs.Hook{\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tHookName: \"createContainer\",\n\t\t\t\t\t\t\t\t\tPath:     \"/usr/bin/nvidia-cdi-hook\",\n\t\t\t\t\t\t\t\t\tArgs:     []string{\"nvidia-cdi-hook\", \"chmod\", \"--mode\", \"755\", \"--path\", \"/dev/dri\"},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tHookName: \"createContainer\",\n\t\t\t\t\t\t\t\t\tPath:     \"/usr/bin/nvidia-cdi-hook\",\n\t\t\t\t\t\t\t\t\tArgs:     []string{\"nvidia-cdi-hook\", \"chmod\", \"--mode\", \"755\", \"--path\", \"/dev/dri\"},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedSpec: &specs.Spec{\n\t\t\t\tDevices: []specs.Device{\n\t\t\t\t\t{\n\t\t\t\t\t\tName: \"gpu0\",\n\t\t\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\t\t\tHooks: []*specs.Hook{\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tHookName: \"createContainer\",\n\t\t\t\t\t\t\t\t\tPath:     \"/usr/bin/nvidia-cdi-hook\",\n\t\t\t\t\t\t\t\t\tArgs:     []string{\"nvidia-cdi-hook\", \"chmod\", \"--mode\", \"755\", \"--path\", \"/dev/dri\"},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tName: \"gpu1\",\n\t\t\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\t\t\tHooks: []*specs.Hook{\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tHookName: \"createContainer\",\n\t\t\t\t\t\t\t\t\tPath:     \"/usr/bin/nvidia-cdi-hook\",\n\t\t\t\t\t\t\t\t\tArgs:     []string{\"nvidia-cdi-hook\", \"chmod\", \"--mode\", \"755\", \"--path\", \"/dev/dri\"},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tName: \"all\",\n\t\t\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\t\t\tHooks: []*specs.Hook{\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tHookName: \"createContainer\",\n\t\t\t\t\t\t\t\t\tPath:     \"/usr/bin/nvidia-cdi-hook\",\n\t\t\t\t\t\t\t\t\tArgs:     []string{\"nvidia-cdi-hook\", \"chmod\", \"--mode\", \"755\", \"--path\", \"/dev/dri\"},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\ts := simplify{}\n\n\t\t\terr := s.Transform(tc.spec)\n\t\t\tif tc.expectedError != nil {\n\t\t\t\trequire.Error(t, err)\n\t\t\t\treturn\n\t\t\t}\n\t\t\trequire.NoError(t, err)\n\n\t\t\trequire.EqualValues(t, tc.expectedSpec, tc.spec)\n\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "pkg/nvcdi/transform/sorter.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage transform\n\nimport (\n\t\"os\"\n\t\"path/filepath\"\n\t\"sort\"\n\t\"strings\"\n\n\t\"tags.cncf.io/container-device-interface/specs-go\"\n)\n\ntype sorter struct{}\n\nvar _ Transformer = (*sorter)(nil)\n\n// NewSorter creates a transformer that sorts container edits.\nfunc NewSorter() Transformer {\n\treturn nil\n}\n\n// Transform sorts the entities in the specified CDI specification.\nfunc (d sorter) Transform(spec *specs.Spec) error {\n\tif spec == nil {\n\t\treturn nil\n\t}\n\tif err := d.transformEdits(&spec.ContainerEdits); err != nil {\n\t\treturn err\n\t}\n\tvar updatedDevices []specs.Device\n\tfor _, device := range spec.Devices {\n\t\tdevice := device\n\t\tif err := d.transformEdits(&device.ContainerEdits); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tupdatedDevices = append(updatedDevices, device)\n\t}\n\tspec.Devices = d.sortDevices(updatedDevices)\n\treturn nil\n}\n\nfunc (d sorter) transformEdits(edits *specs.ContainerEdits) error {\n\tedits.DeviceNodes = d.sortDeviceNodes(edits.DeviceNodes)\n\tedits.Mounts = d.sortMounts(edits.Mounts)\n\treturn nil\n}\n\nfunc (d sorter) sortDevices(devices []specs.Device) []specs.Device {\n\tsort.Slice(devices, func(i, j int) bool {\n\t\treturn devices[i].Name < devices[j].Name\n\t})\n\treturn devices\n}\n\n// sortDeviceNodes sorts the specified device nodes by container path.\n// If two device nodes have the same container path, the host path is used to break ties.\nfunc (d sorter) sortDeviceNodes(entities []*specs.DeviceNode) []*specs.DeviceNode {\n\tsort.Slice(entities, func(i, j int) bool {\n\t\tip := strings.Count(filepath.Clean(entities[i].Path), string(os.PathSeparator))\n\t\tjp := strings.Count(filepath.Clean(entities[j].Path), string(os.PathSeparator))\n\t\tif ip == jp {\n\t\t\treturn entities[i].Path < entities[j].Path\n\t\t}\n\t\treturn ip < jp\n\t})\n\treturn entities\n}\n\n// sortMounts sorts the specified mounts by container path.\n// If two mounts have the same mount path, the host path is used to break ties.\nfunc (d sorter) sortMounts(entities []*specs.Mount) []*specs.Mount {\n\tsort.Slice(entities, func(i, j int) bool {\n\t\tip := strings.Count(filepath.Clean(entities[i].ContainerPath), string(os.PathSeparator))\n\t\tjp := strings.Count(filepath.Clean(entities[j].ContainerPath), string(os.PathSeparator))\n\t\tif ip == jp {\n\t\t\treturn entities[i].ContainerPath < entities[j].ContainerPath\n\t\t}\n\t\treturn ip < jp\n\t})\n\treturn entities\n}\n"
  },
  {
    "path": "pkg/nvcdi/transform/sorter_test.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage transform\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\t\"tags.cncf.io/container-device-interface/specs-go\"\n)\n\nfunc TestSortSpec(t *testing.T) {\n\ttestCases := []struct {\n\t\tdescription string\n\t\tspec        *specs.Spec\n\t\texpected    *specs.Spec\n\t}{\n\t\t{\n\t\t\tdescription: \"sort sorts devices by name and device edits\",\n\t\t\tspec: &specs.Spec{\n\t\t\t\tDevices: []specs.Device{\n\t\t\t\t\t{\n\t\t\t\t\t\tName: \"device2\",\n\t\t\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\t\t\tDeviceNodes: []*specs.DeviceNode{\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tPath: \"/dev/device2/dev0\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tPath: \"/dev/device2/dev1\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tMounts: []*specs.Mount{\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tContainerPath: \"/lib/device2/mount1\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tContainerPath: \"/lib/device2/mount0\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tName: \"device1\",\n\t\t\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\t\t\tDeviceNodes: []*specs.DeviceNode{\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tPath: \"/dev/device1/dev1\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tPath: \"/dev/device1/dev0\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tMounts: []*specs.Mount{\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tContainerPath: \"/lib/device1/mount0\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tContainerPath: \"/lib/device1/mount1\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: &specs.Spec{\n\t\t\t\tDevices: []specs.Device{\n\t\t\t\t\t{\n\t\t\t\t\t\tName: \"device1\",\n\t\t\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\t\t\tDeviceNodes: []*specs.DeviceNode{\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tPath: \"/dev/device1/dev0\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tPath: \"/dev/device1/dev1\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tMounts: []*specs.Mount{\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tContainerPath: \"/lib/device1/mount0\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tContainerPath: \"/lib/device1/mount1\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tName: \"device2\",\n\t\t\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\t\t\tDeviceNodes: []*specs.DeviceNode{\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tPath: \"/dev/device2/dev0\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tPath: \"/dev/device2/dev1\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tMounts: []*specs.Mount{\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tContainerPath: \"/lib/device2/mount0\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tContainerPath: \"/lib/device2/mount1\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"sort sorts common edits\",\n\t\t\tspec: &specs.Spec{\n\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\tDeviceNodes: []*specs.DeviceNode{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/dev/device2/dev0\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/dev/device2/dev1\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/dev/device1/dev1\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/dev/device1/dev0\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tMounts: []*specs.Mount{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tContainerPath: \"/lib/device2/mount1\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tContainerPath: \"/lib/device2/mount0\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tContainerPath: \"/lib/device1/mount0\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tContainerPath: \"/lib/device1/mount1\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: &specs.Spec{\n\t\t\t\tContainerEdits: specs.ContainerEdits{\n\t\t\t\t\tDeviceNodes: []*specs.DeviceNode{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/dev/device1/dev0\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/dev/device1/dev1\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/dev/device2/dev0\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/dev/device2/dev1\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tMounts: []*specs.Mount{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tContainerPath: \"/lib/device1/mount0\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tContainerPath: \"/lib/device1/mount1\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tContainerPath: \"/lib/device2/mount0\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tContainerPath: \"/lib/device2/mount1\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\ts := sorter{}\n\t\t\terr := s.Transform(tc.spec)\n\t\t\trequire.NoError(t, err)\n\n\t\t\trequire.EqualValues(t, tc.expected, tc.spec)\n\t\t})\n\t}\n}\n\nfunc TestSortDeviceNodes(t *testing.T) {\n\ttestCases := []struct {\n\t\tdescription         string\n\t\tdeviceNodes         []*specs.DeviceNode\n\t\texpectedDeviceNodes []*specs.DeviceNode\n\t}{\n\t\t{\n\t\t\tdescription: \"sorted remains sorted\",\n\t\t\tdeviceNodes: []*specs.DeviceNode{\n\t\t\t\t{\n\t\t\t\t\tPath: \"/dev/nvidia0\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tPath: \"/dev/nvidia1\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedDeviceNodes: []*specs.DeviceNode{\n\t\t\t\t{\n\t\t\t\t\tPath: \"/dev/nvidia0\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tPath: \"/dev/nvidia1\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"unsorted gets sorted\",\n\t\t\tdeviceNodes: []*specs.DeviceNode{\n\t\t\t\t{\n\t\t\t\t\tPath: \"/dev/nvidia1\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tPath: \"/dev/nvidia0\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedDeviceNodes: []*specs.DeviceNode{\n\t\t\t\t{\n\t\t\t\t\tPath: \"/dev/nvidia0\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tPath: \"/dev/nvidia1\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"shorter paths are first\",\n\t\t\tdeviceNodes: []*specs.DeviceNode{\n\t\t\t\t{\n\t\t\t\t\tPath: \"/dev/nvidia0/another\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tPath: \"/dev/nvidia0\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedDeviceNodes: []*specs.DeviceNode{\n\t\t\t\t{\n\t\t\t\t\tPath: \"/dev/nvidia0\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tPath: \"/dev/nvidia0/another\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\ts := sorter{}\n\t\t\tsorted := s.sortDeviceNodes(tc.deviceNodes)\n\n\t\t\trequire.EqualValues(t, tc.expectedDeviceNodes, sorted)\n\t\t})\n\t}\n}\n\nfunc TestStortMounts(t *testing.T) {\n\ttestCases := []struct {\n\t\tdescription    string\n\t\tmounts         []*specs.Mount\n\t\texpectedMounts []*specs.Mount\n\t}{\n\t\t{\n\t\t\tdescription: \"sorted remains sorted\",\n\t\t\tmounts: []*specs.Mount{\n\t\t\t\t{\n\t\t\t\t\tContainerPath: \"/lib/nvidia0\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tContainerPath: \"/lib/nvidia1\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedMounts: []*specs.Mount{\n\t\t\t\t{\n\t\t\t\t\tContainerPath: \"/lib/nvidia0\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tContainerPath: \"/lib/nvidia1\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"unsorted gets sorted\",\n\t\t\tmounts: []*specs.Mount{\n\t\t\t\t{\n\t\t\t\t\tContainerPath: \"/lib/nvidia1\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tContainerPath: \"/lib/nvidia0\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedMounts: []*specs.Mount{\n\t\t\t\t{\n\t\t\t\t\tContainerPath: \"/lib/nvidia0\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tContainerPath: \"/lib/nvidia1\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"shorter paths are first\",\n\t\t\tmounts: []*specs.Mount{\n\t\t\t\t{\n\t\t\t\t\tContainerPath: \"/lib/nvidia0/another\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tContainerPath: \"/lib/nvidia0\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedMounts: []*specs.Mount{\n\t\t\t\t{\n\t\t\t\t\tContainerPath: \"/lib/nvidia0\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tContainerPath: \"/lib/nvidia0/another\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\ts := sorter{}\n\t\t\tsorted := s.sortMounts(tc.mounts)\n\n\t\t\trequire.EqualValues(t, tc.expectedMounts, sorted)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "pkg/nvcdi/workarounds-device-folder-permissions.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage nvcdi\n\nimport (\n\t\"fmt\"\n\t\"path/filepath\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/discover\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n)\n\ntype deviceFolderPermissions struct {\n\tlogger      logger.Interface\n\tdevRoot     string\n\tdevices     discover.Discover\n\thookCreator discover.HookCreator\n}\n\nvar _ discover.Discover = (*deviceFolderPermissions)(nil)\n\n// newDeviceFolderPermissionHookDiscoverer creates a discoverer that can be used to update the permissions for the parent folders of nested device nodes from the specified set of device specs.\n// This works around an issue with rootless podman when using crun as a low-level runtime.\n// See https://github.com/containers/crun/issues/1047\n// The nested devices that are applicable to the NVIDIA GPU devices are:\n//   - DRM devices at /dev/dri/*\n//   - NVIDIA Caps devices at /dev/nvidia-caps/*\nfunc (l *nvcdilib) newDeviceFolderPermissionHookDiscoverer(devices discover.Discover) discover.Discover {\n\td := &deviceFolderPermissions{\n\t\tlogger:      l.logger,\n\t\tdevRoot:     l.driver.DevRoot,\n\t\thookCreator: l.hookCreator,\n\t\tdevices:     devices,\n\t}\n\n\treturn d\n}\n\n// Devices are empty for this discoverer\nfunc (d *deviceFolderPermissions) Devices() ([]discover.Device, error) {\n\treturn nil, nil\n}\n\n// EnvVars are empty for this discoverer\nfunc (d *deviceFolderPermissions) EnvVars() ([]discover.EnvVar, error) {\n\treturn nil, nil\n}\n\n// Hooks returns a set of hooks that sets the file mode to 755 of parent folders for nested device nodes.\nfunc (d *deviceFolderPermissions) Hooks() ([]discover.Hook, error) {\n\tfolders, err := d.getDeviceSubfolders()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to get device subfolders: %v\", err)\n\t}\n\n\t//nolint:staticcheck // The ChmodHook is deprecated and will be removed in a future release.\n\treturn d.hookCreator.Create(discover.ChmodHook, folders...).Hooks()\n}\n\nfunc (d *deviceFolderPermissions) getDeviceSubfolders() ([]string, error) {\n\t// For now we only consider the following special case paths\n\tallowedPaths := map[string]bool{\n\t\t\"/dev/dri\":         true,\n\t\t\"/dev/nvidia-caps\": true,\n\t}\n\n\tdevices, err := d.devices.Devices()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to get devices: %v\", err)\n\t}\n\n\tvar folders []string\n\tseen := make(map[string]bool)\n\tfor _, device := range devices {\n\t\tdf := filepath.Dir(device.Path)\n\t\tif seen[df] {\n\t\t\tcontinue\n\t\t}\n\t\t// We only consider the special case paths\n\t\tif !allowedPaths[df] {\n\t\t\tcontinue\n\t\t}\n\t\tfolders = append(folders, df)\n\t\tseen[df] = true\n\t\tif len(folders) == len(allowedPaths) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn folders, nil\n}\n\n// Mounts are empty for this discoverer\nfunc (d *deviceFolderPermissions) Mounts() ([]discover.Mount, error) {\n\treturn nil, nil\n}\n"
  },
  {
    "path": "pkg/nvcdi/wrapper.go",
    "content": "/**\n# Copyright 2025 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage nvcdi\n\nimport (\n\t\"fmt\"\n\n\t\"tags.cncf.io/container-device-interface/pkg/cdi\"\n\t\"tags.cncf.io/container-device-interface/specs-go\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/config/image\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/nvcdi/spec\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/pkg/nvcdi/transform\"\n)\n\ntype wrapper struct {\n\tfactory deviceSpecGeneratorFactory\n\n\tvendor string\n\tclass  string\n\n\tmergedDeviceOptions []transform.MergedDeviceOption\n}\n\n// TODO: Rename this type\ntype deviceSpecGeneratorFactory interface {\n\tDeviceSpecGenerators(...string) (DeviceSpecGenerator, error)\n\tGetCommonEdits() (*cdi.ContainerEdits, error)\n}\n\n// DeviceSpecGenerators can be used to combine multiple device spec generators.\n// This type also implements the DeviceSpecGenerator interface.\ntype DeviceSpecGenerators []DeviceSpecGenerator\n\nvar _ DeviceSpecGenerator = (DeviceSpecGenerators)(nil)\n\n// GetSpec combines the device specs and common edits from the wrapped Interface to a single spec.Interface.\nfunc (l *wrapper) GetSpec(devices ...string) (spec.Interface, error) {\n\tif len(devices) == 0 {\n\t\tdevices = append(devices, \"all\")\n\t}\n\tdeviceSpecs, err := l.GetDeviceSpecsByID(devices...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tedits, err := l.GetCommonEdits()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn spec.New(\n\t\tspec.WithDeviceSpecs(deviceSpecs),\n\t\tspec.WithEdits(*edits.ContainerEdits),\n\t\tspec.WithVendor(l.vendor),\n\t\tspec.WithClass(l.class),\n\t\tspec.WithMergedDeviceOptions(l.mergedDeviceOptions...),\n\t)\n}\n\n// GetDeviceSpecsByID returns the CDI device specs for devices with the\n// specified IDs.\n// The device IDs are interpreted by the configured factory.\nfunc (l *wrapper) GetDeviceSpecsByID(devices ...string) ([]specs.Device, error) {\n\tgenerators, err := l.factory.DeviceSpecGenerators(devices...)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to construct device spec generators: %w\", err)\n\t}\n\treturn generators.GetDeviceSpecs()\n}\n\n// GetAllDeviceSpecs returns the device specs for all available devices.\n//\n// Deprecated: Use GetDeviceSpecsByID(\"all\") instead.\nfunc (l *wrapper) GetAllDeviceSpecs() ([]specs.Device, error) {\n\treturn l.GetDeviceSpecsByID(\"all\")\n}\n\n// GetCommonEdits returns the wrapped edits and adds additional edits on top.\nfunc (m *wrapper) GetCommonEdits() (*cdi.ContainerEdits, error) {\n\tedits, err := m.factory.GetCommonEdits()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tedits.Env = append(edits.Env, image.EnvVarNvidiaVisibleDevices+\"=void\")\n\n\treturn edits, nil\n}\n\n// GetDeviceSpecs returns the combined specs for each device spec generator.\nfunc (g DeviceSpecGenerators) GetDeviceSpecs() ([]specs.Device, error) {\n\tvar allDeviceSpecs []specs.Device\n\tfor _, dsg := range g {\n\t\tif dsg == nil {\n\t\t\tcontinue\n\t\t}\n\t\tdeviceSpecs, err := dsg.GetDeviceSpecs()\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tallDeviceSpecs = append(allDeviceSpecs, deviceSpecs...)\n\t}\n\n\treturn allDeviceSpecs, nil\n}\n"
  },
  {
    "path": "pkg/system/nvdevices/devices.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATIOm.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage nvdevices\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/info/proc/devices\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n)\n\nvar errInvalidDeviceNode = errors.New(\"invalid device node\")\n\n// Interface provides a set of utilities for interacting with NVIDIA devices on the system.\ntype Interface struct {\n\tdevices.Devices\n\n\tlogger logger.Interface\n\n\tdryRun bool\n\t// devRoot is the root directory where device nodes are expected to exist.\n\tdevRoot string\n\n\tmknoder\n}\n\n// New constructs a new Interface struct with the specified options.\nfunc New(opts ...Option) (*Interface, error) {\n\ti := &Interface{}\n\tfor _, opt := range opts {\n\t\topt(i)\n\t}\n\n\tif i.logger == nil {\n\t\ti.logger = logger.New()\n\t}\n\tif i.devRoot == \"\" {\n\t\ti.devRoot = \"/\"\n\t}\n\tif i.Devices == nil {\n\t\tdevices, err := devices.GetNVIDIADevices()\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed to create devices info: %v\", err)\n\t\t}\n\t\ti.Devices = devices\n\t}\n\n\tif i.dryRun {\n\t\ti.mknoder = &mknodLogger{i.logger}\n\t} else {\n\t\ti.mknoder = &mknodUnix{i.logger}\n\t}\n\treturn i, nil\n}\n\n// CreateNVIDIAControlDevices creates the NVIDIA control device nodes at the configured devRoot.\nfunc (m *Interface) CreateNVIDIAControlDevices() error {\n\tcontrolNodes := []string{\"nvidiactl\", \"nvidia-modeset\", \"nvidia-uvm\", \"nvidia-uvm-tools\"}\n\tfor _, node := range controlNodes {\n\t\terr := m.CreateNVIDIADevice(node)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"failed to create device node %s: %w\", node, err)\n\t\t}\n\t}\n\treturn nil\n}\n\n// CreateNVIDIADevice creates the specified NVIDIA device node at the configured devRoot.\nfunc (m *Interface) CreateNVIDIADevice(node string) error {\n\tnode = filepath.Base(node)\n\tif !strings.HasPrefix(node, \"nvidia\") {\n\t\treturn fmt.Errorf(\"invalid device node %q: %w\", node, errInvalidDeviceNode)\n\t}\n\n\tmajor, err := m.Major(node)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to determine major: %w\", err)\n\t}\n\n\tminor, err := m.Minor(node)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to determine minor: %w\", err)\n\t}\n\n\treturn m.createDeviceNode(filepath.Join(\"dev\", node), int(major), int(minor))\n}\n\n// createDeviceNode creates the specified device node with the require major and minor numbers.\n// If a devRoot is configured, this is prepended to the path.\nfunc (m *Interface) createDeviceNode(path string, major int, minor int) error {\n\tpath = filepath.Join(m.devRoot, path)\n\treturn m.Mknode(path, major, minor)\n}\n\n// Major returns the major number for the specified NVIDIA device node.\n// If the device node is not supported, an error is returned.\nfunc (m *Interface) Major(node string) (int64, error) {\n\tvar valid bool\n\tvar major devices.Major\n\tswitch node {\n\tcase \"nvidia-uvm\", \"nvidia-uvm-tools\":\n\t\tmajor, valid = m.Get(devices.NVIDIAUVM)\n\tcase \"nvidia-modeset\", \"nvidiactl\":\n\t\tmajor, valid = m.Get(devices.NVIDIAGPU)\n\t}\n\n\tif valid {\n\t\treturn int64(major), nil\n\t}\n\n\treturn 0, errInvalidDeviceNode\n}\n\n// Minor returns the minor number for the specified NVIDIA device node.\n// If the device node is not supported, an error is returned.\nfunc (m *Interface) Minor(node string) (int64, error) {\n\tswitch node {\n\tcase \"nvidia-modeset\":\n\t\treturn devices.NVIDIAModesetMinor, nil\n\tcase \"nvidia-uvm-tools\":\n\t\treturn devices.NVIDIAUVMToolsMinor, nil\n\tcase \"nvidia-uvm\":\n\t\treturn devices.NVIDIAUVMMinor, nil\n\tcase \"nvidiactl\":\n\t\treturn devices.NVIDIACTLMinor, nil\n\t}\n\n\treturn 0, errInvalidDeviceNode\n}\n"
  },
  {
    "path": "pkg/system/nvdevices/devices_test.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage nvdevices\n\nimport (\n\t\"errors\"\n\t\"testing\"\n\n\ttestlog \"github.com/sirupsen/logrus/hooks/test\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/info/proc/devices\"\n)\n\nfunc TestCreateControlDevices(t *testing.T) {\n\tlogger, _ := testlog.NewNullLogger()\n\n\tnvidiaDevices := devices.New(\n\t\tdevices.WithDeviceToMajor(map[string]int{\n\t\t\t\"nvidia-frontend\": 195,\n\t\t\t\"nvidia-uvm\":      243,\n\t\t}),\n\t)\n\tnvidia550Devices := devices.New(\n\t\tdevices.WithDeviceToMajor(map[string]int{\n\t\t\t\"nvidia\":     195,\n\t\t\t\"nvidia-uvm\": 243,\n\t\t}),\n\t)\n\n\tmknodeError := errors.New(\"mknode error\")\n\n\ttestCases := []struct {\n\t\tdescription   string\n\t\troot          string\n\t\tdevices       devices.Devices\n\t\tmknodeError   error\n\t\texpectedError error\n\t\texpectedCalls []struct {\n\t\t\tS  string\n\t\t\tN1 int\n\t\t\tN2 int\n\t\t}\n\t}{\n\t\t{\n\t\t\tdescription: \"no root specified; pre 550 driver\",\n\t\t\troot:        \"\",\n\t\t\tdevices:     nvidiaDevices,\n\t\t\tmknodeError: nil,\n\t\t\texpectedCalls: []struct {\n\t\t\t\tS  string\n\t\t\t\tN1 int\n\t\t\t\tN2 int\n\t\t\t}{\n\t\t\t\t{\"/dev/nvidiactl\", 195, 255},\n\t\t\t\t{\"/dev/nvidia-modeset\", 195, 254},\n\t\t\t\t{\"/dev/nvidia-uvm\", 243, 0},\n\t\t\t\t{\"/dev/nvidia-uvm-tools\", 243, 1},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"no root specified; 550 driver\",\n\t\t\troot:        \"\",\n\t\t\tdevices:     nvidia550Devices,\n\t\t\tmknodeError: nil,\n\t\t\texpectedCalls: []struct {\n\t\t\t\tS  string\n\t\t\t\tN1 int\n\t\t\t\tN2 int\n\t\t\t}{\n\t\t\t\t{\"/dev/nvidiactl\", 195, 255},\n\t\t\t\t{\"/dev/nvidia-modeset\", 195, 254},\n\t\t\t\t{\"/dev/nvidia-uvm\", 243, 0},\n\t\t\t\t{\"/dev/nvidia-uvm-tools\", 243, 1},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"some root specified\",\n\t\t\troot:        \"/some/root\",\n\t\t\tdevices:     nvidiaDevices,\n\t\t\tmknodeError: nil,\n\t\t\texpectedCalls: []struct {\n\t\t\t\tS  string\n\t\t\t\tN1 int\n\t\t\t\tN2 int\n\t\t\t}{\n\t\t\t\t{\"/some/root/dev/nvidiactl\", 195, 255},\n\t\t\t\t{\"/some/root/dev/nvidia-modeset\", 195, 254},\n\t\t\t\t{\"/some/root/dev/nvidia-uvm\", 243, 0},\n\t\t\t\t{\"/some/root/dev/nvidia-uvm-tools\", 243, 1},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription:   \"mknod error returns error\",\n\t\t\tdevices:       nvidiaDevices,\n\t\t\tmknodeError:   mknodeError,\n\t\t\texpectedError: mknodeError,\n\t\t\t// We expect the first call to this to fail, and the rest to be skipped\n\t\t\texpectedCalls: []struct {\n\t\t\t\tS  string\n\t\t\t\tN1 int\n\t\t\t\tN2 int\n\t\t\t}{\n\t\t\t\t{\"/dev/nvidiactl\", 195, 255},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"missing major returns error\",\n\t\t\tdevices: &devices.DevicesMock{\n\t\t\t\tGetFunc: func(name devices.Name) (devices.Major, bool) {\n\t\t\t\t\treturn 0, false\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedError: errInvalidDeviceNode,\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\tmknode := &mknoderMock{\n\t\t\t\tMknodeFunc: func(string, int, int) error {\n\t\t\t\t\treturn tc.mknodeError\n\t\t\t\t},\n\t\t\t}\n\n\t\t\td, _ := New(\n\t\t\t\tWithLogger(logger),\n\t\t\t\tWithDevRoot(tc.root),\n\t\t\t\tWithDevices(tc.devices),\n\t\t\t)\n\t\t\td.mknoder = mknode\n\n\t\t\terr := d.CreateNVIDIAControlDevices()\n\t\t\trequire.ErrorIs(t, err, tc.expectedError)\n\t\t\trequire.EqualValues(t, tc.expectedCalls, mknode.MknodeCalls())\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "pkg/system/nvdevices/mknod.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage nvdevices\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\n\t\"golang.org/x/sys/unix\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n)\n\n//go:generate moq -rm -fmt=goimports -stub -out mknod_mock.go . mknoder\ntype mknoder interface {\n\tMknode(string, int, int) error\n}\n\ntype mknodLogger struct {\n\tlogger.Interface\n}\n\nfunc (m *mknodLogger) Mknode(path string, major, minor int) error {\n\tm.Infof(\"Running: mknod --mode=0666 %s c %d %d\", path, major, minor)\n\treturn nil\n}\n\ntype mknodUnix struct {\n\tlogger logger.Interface\n}\n\nfunc (m *mknodUnix) Mknode(path string, major, minor int) error {\n\t// TODO: Ensure that the existing device node has the correct properties.\n\tif _, err := os.Stat(path); err == nil {\n\t\tm.logger.Infof(\"Skipping: %s already exists\", path)\n\t\treturn nil\n\t} else if !os.IsNotExist(err) {\n\t\treturn fmt.Errorf(\"failed to stat %s: %v\", path, err)\n\t}\n\n\terr := unix.Mknod(path, unix.S_IFCHR, int(unix.Mkdev(uint32(major), uint32(minor))))\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn unix.Chmod(path, 0666)\n}\n"
  },
  {
    "path": "pkg/system/nvdevices/mknod_mock.go",
    "content": "// Code generated by moq; DO NOT EDIT.\n// github.com/matryer/moq\n\npackage nvdevices\n\nimport (\n\t\"sync\"\n)\n\n// Ensure, that mknoderMock does implement mknoder.\n// If this is not the case, regenerate this file with moq.\nvar _ mknoder = &mknoderMock{}\n\n// mknoderMock is a mock implementation of mknoder.\n//\n//\tfunc TestSomethingThatUsesmknoder(t *testing.T) {\n//\n//\t\t// make and configure a mocked mknoder\n//\t\tmockedmknoder := &mknoderMock{\n//\t\t\tMknodeFunc: func(s string, n1 int, n2 int) error {\n//\t\t\t\tpanic(\"mock out the Mknode method\")\n//\t\t\t},\n//\t\t}\n//\n//\t\t// use mockedmknoder in code that requires mknoder\n//\t\t// and then make assertions.\n//\n//\t}\ntype mknoderMock struct {\n\t// MknodeFunc mocks the Mknode method.\n\tMknodeFunc func(s string, n1 int, n2 int) error\n\n\t// calls tracks calls to the methods.\n\tcalls struct {\n\t\t// Mknode holds details about calls to the Mknode method.\n\t\tMknode []struct {\n\t\t\t// S is the s argument value.\n\t\t\tS string\n\t\t\t// N1 is the n1 argument value.\n\t\t\tN1 int\n\t\t\t// N2 is the n2 argument value.\n\t\t\tN2 int\n\t\t}\n\t}\n\tlockMknode sync.RWMutex\n}\n\n// Mknode calls MknodeFunc.\nfunc (mock *mknoderMock) Mknode(s string, n1 int, n2 int) error {\n\tcallInfo := struct {\n\t\tS  string\n\t\tN1 int\n\t\tN2 int\n\t}{\n\t\tS:  s,\n\t\tN1: n1,\n\t\tN2: n2,\n\t}\n\tmock.lockMknode.Lock()\n\tmock.calls.Mknode = append(mock.calls.Mknode, callInfo)\n\tmock.lockMknode.Unlock()\n\tif mock.MknodeFunc == nil {\n\t\tvar (\n\t\t\terrOut error\n\t\t)\n\t\treturn errOut\n\t}\n\treturn mock.MknodeFunc(s, n1, n2)\n}\n\n// MknodeCalls gets all the calls that were made to Mknode.\n// Check the length with:\n//\n//\tlen(mockedmknoder.MknodeCalls())\nfunc (mock *mknoderMock) MknodeCalls() []struct {\n\tS  string\n\tN1 int\n\tN2 int\n} {\n\tvar calls []struct {\n\t\tS  string\n\t\tN1 int\n\t\tN2 int\n\t}\n\tmock.lockMknode.RLock()\n\tcalls = mock.calls.Mknode\n\tmock.lockMknode.RUnlock()\n\treturn calls\n}\n"
  },
  {
    "path": "pkg/system/nvdevices/options.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage nvdevices\n\nimport (\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/info/proc/devices\"\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n)\n\n// Option is a function that sets an option on the Interface struct.\ntype Option func(*Interface)\n\n// WithDryRun sets the dry run option for the Interface struct.\nfunc WithDryRun(dryRun bool) Option {\n\treturn func(i *Interface) {\n\t\ti.dryRun = dryRun\n\t}\n}\n\n// WithLogger sets the logger for the Interface struct.\nfunc WithLogger(logger logger.Interface) Option {\n\treturn func(i *Interface) {\n\t\ti.logger = logger\n\t}\n}\n\n// WithDevRoot sets the root directory for the NVIDIA device nodes.\nfunc WithDevRoot(devRoot string) Option {\n\treturn func(i *Interface) {\n\t\ti.devRoot = devRoot\n\t}\n}\n\n// WithDevices sets the devices for the Interface struct.\nfunc WithDevices(devices devices.Devices) Option {\n\treturn func(i *Interface) {\n\t\ti.Devices = devices\n\t}\n}\n"
  },
  {
    "path": "pkg/system/nvmodules/cmd.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage nvmodules\n\nimport (\n\t\"fmt\"\n\t\"os/exec\"\n\t\"strings\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n)\n\n//go:generate moq -rm -fmt=goimports -stub -out cmd_mock.go . cmder\ntype cmder interface {\n\t// Run executes the command and returns the stdout, stderr, and an error if any\n\tRun(string, ...string) error\n}\n\ntype cmderLogger struct {\n\tlogger.Interface\n}\n\nfunc (c *cmderLogger) Run(cmd string, args ...string) error {\n\tc.Infof(\"Running: %v %v\", cmd, strings.Join(args, \" \"))\n\treturn nil\n}\n\ntype cmderExec struct{}\n\nfunc (c *cmderExec) Run(cmd string, args ...string) error {\n\tif output, err := exec.Command(cmd, args...).CombinedOutput(); err != nil {\n\t\treturn fmt.Errorf(\"%w; output=%v\", err, string(output))\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "pkg/system/nvmodules/cmd_mock.go",
    "content": "// Code generated by moq; DO NOT EDIT.\n// github.com/matryer/moq\n\npackage nvmodules\n\nimport (\n\t\"sync\"\n)\n\n// Ensure, that cmderMock does implement cmder.\n// If this is not the case, regenerate this file with moq.\nvar _ cmder = &cmderMock{}\n\n// cmderMock is a mock implementation of cmder.\n//\n//\tfunc TestSomethingThatUsescmder(t *testing.T) {\n//\n//\t\t// make and configure a mocked cmder\n//\t\tmockedcmder := &cmderMock{\n//\t\t\tRunFunc: func(s string, strings ...string) error {\n//\t\t\t\tpanic(\"mock out the Run method\")\n//\t\t\t},\n//\t\t}\n//\n//\t\t// use mockedcmder in code that requires cmder\n//\t\t// and then make assertions.\n//\n//\t}\ntype cmderMock struct {\n\t// RunFunc mocks the Run method.\n\tRunFunc func(s string, strings ...string) error\n\n\t// calls tracks calls to the methods.\n\tcalls struct {\n\t\t// Run holds details about calls to the Run method.\n\t\tRun []struct {\n\t\t\t// S is the s argument value.\n\t\t\tS string\n\t\t\t// Strings is the strings argument value.\n\t\t\tStrings []string\n\t\t}\n\t}\n\tlockRun sync.RWMutex\n}\n\n// Run calls RunFunc.\nfunc (mock *cmderMock) Run(s string, strings ...string) error {\n\tcallInfo := struct {\n\t\tS       string\n\t\tStrings []string\n\t}{\n\t\tS:       s,\n\t\tStrings: strings,\n\t}\n\tmock.lockRun.Lock()\n\tmock.calls.Run = append(mock.calls.Run, callInfo)\n\tmock.lockRun.Unlock()\n\tif mock.RunFunc == nil {\n\t\tvar (\n\t\t\terrOut error\n\t\t)\n\t\treturn errOut\n\t}\n\treturn mock.RunFunc(s, strings...)\n}\n\n// RunCalls gets all the calls that were made to Run.\n// Check the length with:\n//\n//\tlen(mockedcmder.RunCalls())\nfunc (mock *cmderMock) RunCalls() []struct {\n\tS       string\n\tStrings []string\n} {\n\tvar calls []struct {\n\t\tS       string\n\t\tStrings []string\n\t}\n\tmock.lockRun.RLock()\n\tcalls = mock.calls.Run\n\tmock.lockRun.RUnlock()\n\treturn calls\n}\n"
  },
  {
    "path": "pkg/system/nvmodules/modules.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage nvmodules\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\t\"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n)\n\n// Interface provides a set of utilities for interacting with NVIDIA modules on the system.\ntype Interface struct {\n\tlogger logger.Interface\n\n\tdryRun bool\n\troot   string\n\n\tcmder\n}\n\n// New constructs a new Interface struct with the specified options.\nfunc New(opts ...Option) *Interface {\n\tm := &Interface{}\n\tfor _, opt := range opts {\n\t\topt(m)\n\t}\n\n\tif m.logger == nil {\n\t\tm.logger = logger.New()\n\t}\n\tif m.root == \"\" {\n\t\tm.root = \"/\"\n\t}\n\n\tif m.dryRun {\n\t\tm.cmder = &cmderLogger{m.logger}\n\t} else {\n\t\tm.cmder = &cmderExec{}\n\t}\n\treturn m\n}\n\n// LoadAll loads all the NVIDIA kernel modules.\nfunc (m *Interface) LoadAll() error {\n\tmodules := []string{\"nvidia\", \"nvidia-uvm\", \"nvidia-modeset\"}\n\n\tfor _, module := range modules {\n\t\tif err := m.Load(module); err != nil {\n\t\t\treturn fmt.Errorf(\"failed to load module %s: %w\", module, err)\n\t\t}\n\t}\n\treturn nil\n}\n\nvar errInvalidModule = fmt.Errorf(\"invalid module\")\n\n// Load loads the specified NVIDIA kernel module.\n// If the root is specified we first chroot into this root.\nfunc (m *Interface) Load(module string) error {\n\tif !strings.HasPrefix(module, \"nvidia\") {\n\t\treturn errInvalidModule\n\t}\n\n\tvar args []string\n\tif m.root != \"/\" {\n\t\targs = append(args, \"chroot\", m.root)\n\t}\n\targs = append(args, \"/sbin/modprobe\", module)\n\n\tm.logger.Debugf(\"Loading kernel module %s: %v\", module, args)\n\terr := m.Run(args[0], args[1:]...)\n\tif err != nil {\n\t\tm.logger.Debugf(\"Failed to load kernel module %s: %v\", module, err)\n\t\treturn err\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "pkg/system/nvmodules/modules_test.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage nvmodules\n\nimport (\n\t\"errors\"\n\t\"testing\"\n\n\ttestlog \"github.com/sirupsen/logrus/hooks/test\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestLoadAll(t *testing.T) {\n\tlogger, _ := testlog.NewNullLogger()\n\n\trunError := errors.New(\"run error\")\n\n\ttestCases := []struct {\n\t\tdescription   string\n\t\troot          string\n\t\trunError      error\n\t\texpectedError error\n\t\texpectedCalls []struct {\n\t\t\tS       string\n\t\t\tStrings []string\n\t\t}\n\t}{\n\t\t{\n\t\t\tdescription: \"no root specified\",\n\t\t\troot:        \"\",\n\t\t\texpectedCalls: []struct {\n\t\t\t\tS       string\n\t\t\t\tStrings []string\n\t\t\t}{\n\t\t\t\t{\"/sbin/modprobe\", []string{\"nvidia\"}},\n\t\t\t\t{\"/sbin/modprobe\", []string{\"nvidia-uvm\"}},\n\t\t\t\t{\"/sbin/modprobe\", []string{\"nvidia-modeset\"}},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"root causes chroot\",\n\t\t\troot:        \"/some/root\",\n\t\t\texpectedCalls: []struct {\n\t\t\t\tS       string\n\t\t\t\tStrings []string\n\t\t\t}{\n\t\t\t\t{\"chroot\", []string{\"/some/root\", \"/sbin/modprobe\", \"nvidia\"}},\n\t\t\t\t{\"chroot\", []string{\"/some/root\", \"/sbin/modprobe\", \"nvidia-uvm\"}},\n\t\t\t\t{\"chroot\", []string{\"/some/root\", \"/sbin/modprobe\", \"nvidia-modeset\"}},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription:   \"run failure is returned\",\n\t\t\troot:          \"\",\n\t\t\trunError:      runError,\n\t\t\texpectedError: runError,\n\t\t\texpectedCalls: []struct {\n\t\t\t\tS       string\n\t\t\t\tStrings []string\n\t\t\t}{\n\t\t\t\t{\"/sbin/modprobe\", []string{\"nvidia\"}},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\tcmder := &cmderMock{\n\t\t\t\tRunFunc: func(cmd string, args ...string) error {\n\t\t\t\t\treturn tc.runError\n\t\t\t\t},\n\t\t\t}\n\t\t\tm := New(\n\t\t\t\tWithLogger(logger),\n\t\t\t\tWithRoot(tc.root),\n\t\t\t)\n\t\t\tm.cmder = cmder\n\n\t\t\terr := m.LoadAll()\n\t\t\trequire.ErrorIs(t, err, tc.expectedError)\n\n\t\t\trequire.EqualValues(t, tc.expectedCalls, cmder.RunCalls())\n\t\t})\n\t}\n}\n\nfunc TestLoad(t *testing.T) {\n\tlogger, _ := testlog.NewNullLogger()\n\n\trunError := errors.New(\"run error\")\n\n\ttestCases := []struct {\n\t\tdescription   string\n\t\troot          string\n\t\tmodule        string\n\t\trunError      error\n\t\texpectedError error\n\t\texpectedCalls []struct {\n\t\t\tS       string\n\t\t\tStrings []string\n\t\t}\n\t}{\n\t\t{\n\t\t\tdescription: \"no root specified\",\n\t\t\troot:        \"\",\n\t\t\tmodule:      \"nvidia\",\n\t\t\texpectedCalls: []struct {\n\t\t\t\tS       string\n\t\t\t\tStrings []string\n\t\t\t}{\n\t\t\t\t{\"/sbin/modprobe\", []string{\"nvidia\"}},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"root causes chroot\",\n\t\t\troot:        \"/some/root\",\n\t\t\tmodule:      \"nvidia\",\n\t\t\texpectedCalls: []struct {\n\t\t\t\tS       string\n\t\t\t\tStrings []string\n\t\t\t}{\n\t\t\t\t{\"chroot\", []string{\"/some/root\", \"/sbin/modprobe\", \"nvidia\"}},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription:   \"run failure is returned\",\n\t\t\troot:          \"\",\n\t\t\tmodule:        \"nvidia\",\n\t\t\trunError:      runError,\n\t\t\texpectedError: runError,\n\t\t\texpectedCalls: []struct {\n\t\t\t\tS       string\n\t\t\t\tStrings []string\n\t\t\t}{\n\t\t\t\t{\"/sbin/modprobe\", []string{\"nvidia\"}},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription:   \"module prefis is checked\",\n\t\t\tmodule:        \"not-nvidia\",\n\t\t\texpectedError: errInvalidModule,\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.description, func(t *testing.T) {\n\t\t\tcmder := &cmderMock{\n\t\t\t\tRunFunc: func(cmd string, args ...string) error {\n\t\t\t\t\treturn tc.runError\n\t\t\t\t},\n\t\t\t}\n\t\t\tm := New(\n\t\t\t\tWithLogger(logger),\n\t\t\t\tWithRoot(tc.root),\n\t\t\t)\n\t\t\tm.cmder = cmder\n\n\t\t\terr := m.Load(tc.module)\n\t\t\trequire.ErrorIs(t, err, tc.expectedError)\n\n\t\t\trequire.EqualValues(t, tc.expectedCalls, cmder.RunCalls())\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "pkg/system/nvmodules/options.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage nvmodules\n\nimport \"github.com/NVIDIA/nvidia-container-toolkit/internal/logger\"\n\n// Option is a function that sets an option on the Interface struct.\ntype Option func(*Interface)\n\n// WithDryRun sets the dry run option for the Interface struct.\nfunc WithDryRun(dryRun bool) Option {\n\treturn func(i *Interface) {\n\t\ti.dryRun = dryRun\n\t}\n}\n\n// WithLogger sets the logger for the Interface struct.\nfunc WithLogger(logger logger.Interface) Option {\n\treturn func(i *Interface) {\n\t\ti.logger = logger\n\t}\n}\n\n// WithRoot sets the root directory for the NVIDIA device nodes.\nfunc WithRoot(root string) Option {\n\treturn func(i *Interface) {\n\t\ti.root = root\n\t}\n}\n"
  },
  {
    "path": "scripts/Dockerfile.sign.deb",
    "content": "FROM ubuntu:18.04\n\nRUN apt-get update && \\\n    apt-get install -y apt-utils gpg xz-utils\n"
  },
  {
    "path": "scripts/Dockerfile.sign.rpm",
    "content": "FROM quay.io/centos/centos:stream9\n\nRUN yum install -y createrepo rpm-sign pinentry\n"
  },
  {
    "path": "scripts/build-all-components.sh",
    "content": "#!/usr/bin/env bash\n\n# Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# This script is used to build the packages for the components of the NVIDIA\n# Container Stack. These include the nvidia-container-toolkit in this repository\n# as well as the components included in the third_party folder.\n# All required packages are generated in the specified dist folder.\n\nfunction assert_usage() {\n    echo \"Missing argument $1\"\n    echo \"$(basename \"${BASH_SOURCE[0]}\") TARGET\"\n    exit 1\n}\n\nset -e\n\nSCRIPTS_DIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\"/../scripts && pwd )\"\nPROJECT_ROOT=\"$( cd \"${SCRIPTS_DIR}\"/.. && pwd )\"\n\nif [[ $# -ne 1 ]]; then\n    assert_usage \"TARGET\"\nfi\n\nTARGET=$1\n\nsource \"${SCRIPTS_DIR}\"/utils.sh\n\n: \"${DIST_DIR:=${PROJECT_ROOT}/dist}\"\nexport DIST_DIR\n\necho \"Building ${TARGET} for all packages to ${DIST_DIR}\"\n\n: \"${LIBNVIDIA_CONTAINER_ROOT:=${PROJECT_ROOT}/third_party/libnvidia-container}\"\n: \"${NVIDIA_CONTAINER_TOOLKIT_ROOT:=${PROJECT_ROOT}}\"\n\n\nif [[ -z \"${NVIDIA_CONTAINER_TOOLKIT_VERSION}\" || -z \"${LIBNVIDIA_CONTAINER_VERSION}\" ]]; then\neval $(${SCRIPTS_DIR}/get-component-versions.sh)\nfi\n\nif [[ -z \"${GOLANG_VERSION}\" ]]; then\n    GOLANG_VERSION=$(${PROJECT_ROOT}/hack/golang-version.sh)\nfi\n\n# Build libnvidia-container\nif [[ -z ${SKIP_LIBNVIDIA_CONTAINER} ]]; then\n    make -C \"${LIBNVIDIA_CONTAINER_ROOT}\" -f mk/docker.mk \\\n        LIB_VERSION=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \\\n        LIB_TAG=${NVIDIA_CONTAINER_TOOLKIT_TAG} \\\n        GOLANG_VERSION=${GOLANG_VERSION} \\\n        \"${TARGET}\"\nfi\n\nif [[ -z ${SKIP_NVIDIA_CONTAINER_TOOLKIT} ]]; then\n# Build nvidia-container-toolkit\nmake -C \"${NVIDIA_CONTAINER_TOOLKIT_ROOT}\" \\\n    LIBNVIDIA_CONTAINER_VERSION=\"${NVIDIA_CONTAINER_TOOLKIT_VERSION}\" \\\n    LIBNVIDIA_CONTAINER_TAG=\"${NVIDIA_CONTAINER_TOOLKIT_TAG}\" \\\n        \"${TARGET}\"\nfi\n\n# Repackage RPMs if required.\n\"${SCRIPTS_DIR}/repackage-rpms.sh\" \"${TARGET}\"\n"
  },
  {
    "path": "scripts/build-packages.sh",
    "content": "#!/usr/bin/env bash\n\n# Copyright (c) 2021-2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# This script is used to build the packages for the components of the NVIDIA\n# Container Stack. These include the nvidia-container-toolkit in this repository\n# as well as the components included in the third_party folder.\n# All required packages are generated in the specified dist folder.\n\nset -e\n\nSCRIPTS_DIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\"/../scripts && pwd )\"\n\nsource \"${SCRIPTS_DIR}\"/utils.sh\n\nif [[ $# -gt 0 ]]; then\n    targets=($*)\nelse\n    targets=${all[@]}\nfi\n\ngit submodule update --init\ngit submodule status\n\neval $(${SCRIPTS_DIR}/get-component-versions.sh)\n\nexport NVIDIA_CONTAINER_TOOLKIT_VERSION\nexport NVIDIA_CONTAINER_TOOLKIT_TAG\n\nfor target in ${targets[@]}; do\n    \"${SCRIPTS_DIR}/build-all-components.sh\" \"${target}\"\ndone\n"
  },
  {
    "path": "scripts/extract-packages.sh",
    "content": "#!/usr/bin/env bash\n\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nfunction assert_usage() {\n    echo \"Incorrect arguments: $*\" >&2\n    echo \"$(basename \"${BASH_SOURCE[0]}\") PACKAGE_IMAGE_NAME:PACKAGE_IMAGE_TAG\" >&2\n    echo -e \"\\\\tPACKAGE_IMAGE: container image holding packages [e.g. ghcr.io/nvidia/container-toolkit]\" >&2\n    echo -e \"\\\\tPACKAGE_TAG: tag for container image holding packages. [e.g. 1a2b3c4-packaging]\" >&2\n    exit 1\n}\n\nset -e\n\nSCRIPTS_DIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\"/../scripts && pwd )\"\nPROJECT_ROOT=\"$( cd \"${SCRIPTS_DIR}/..\" && pwd )\"\n\nif [[ $# -ne 1 ]]; then\n    assert_usage \"$@\"\nfi\n\nPACKAGE_IMAGE=$1\n\n# TODO: accept ARTIFACTS_DIR as a command-line argument\n: \"${ARTIFACTS_DIR=\"${PROJECT_ROOT}/artifacts\"}\"\n\n# For release-candidates we skip certain packages.\n# This function returns 0 if a package should be skipped and 1 otherwise.\nfunction skip-for-release-candidate() {\n    # We always skip nvidia-container-toolkit-operator-extensions packages\n    if [[ \"${package_name/\"nvidia-container-toolkit-operator-extensions\"/}\" != \"${package_name}\" ]]; then\n        return 0\n    fi\n\n    local is_non_patch_full_release=1\n    # We allow all other packages for non-rc and non-patch release versions.\n    if [[ \"${VERSION/rc./}\" != \"${VERSION}\" ]]; then\n        is_non_patch_full_release=0\n    fi\n    if [[ \"${VERSION%.0}\" == \"${VERSION}\" ]]; then\n        is_non_patch_full_release=0\n    fi\n    return 1\n}\n\n# extract-file copies a file from a specified image.\n# If regctl is available this is used, otherwise a docker container is run and the file is copied from\n# there.\nfunction copy-file() {\n    local image=$1\n    local path_in_image=$2\n    local path_on_host=$3\n    if command -v regctl; then\n        regctl image get-file \"${image}\" \"${path_in_image}\" \"${path_on_host}\"\n    else\n        # Note this will only work for destinations where the `path_on_host` is in `pwd`\n        docker run --rm \\\n        -v \"$(pwd):$(pwd)\" \\\n        -w \"$(pwd)\" \\\n        -u \"$(id -u):$(id -g)\" \\\n        --entrypoint=\"sh\" \\\n            \"${image}\" \\\n            -c \"cp -p ${path_in_image} ${path_on_host}\"\n    fi\n}\n\neval $(${SCRIPTS_DIR}/get-component-versions.sh)\n\n# extract-all extracts all package for the specified distribution from the package image.\n# The manifest.txt file in the image is used to detemine the applicable files for the combination.\n# Files are extracted to ${ARTIFACTS_DIR}/artifacts/packages/${dist}/${arch}\nfunction extract-all() {\n    local dist=$1\n\n    echo \"Extracting packages for ${dist} from ${PACKAGE_IMAGE}\"\n    # Extract every file for the specified dist-arch combiniation in MANIFEST.txt\n    grep \"/${dist}/\" \"${ARTIFACTS_DIR}/manifest.txt\" | while read -r f ; do\n        package_name=\"$(basename \"$f\")\"\n        # For release-candidates, we skip certain packages\n        if skip-for-release-candidate \"${package_name}\"; then\n            echo \"Skipping $f for release-candidate ${VERSION}\"\n            continue\n        fi\n        target=\"${ARTIFACTS_DIR}/${f##/artifacts/}\"\n        mkdir -p \"$(dirname \"$target\")\"\n        copy-file \"${PACKAGE_IMAGE}\" \"${f}\" \"${target}\"\n    done\n}\n\nmkdir -p \"${ARTIFACTS_DIR}\"\ncopy-file \"${PACKAGE_IMAGE}\" \"/artifacts/manifest.txt\" \"${ARTIFACTS_DIR}/manifest.txt\"\n\nextract-all ubuntu18.04\nextract-all centos7\n"
  },
  {
    "path": "scripts/get-component-versions.sh",
    "content": "#!/usr/bin/env bash\n\n# Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# This script is used to build the packages for the components of the NVIDIA\n# Container Stack. These include the nvidia-container-toolkit in this repository\n# as well as the components included in the third_party folder.\n# All required packages are generated in the specified dist folder.\n\nfunction assert_usage() {\n    exit 1\n}\n\nset -e\n\nSCRIPTS_DIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\"/../scripts && pwd )\"\nPROJECT_ROOT=\"$( cd ${SCRIPTS_DIR}/.. && pwd )\"\n\nNVIDIA_CONTAINER_TOOLKIT_ROOT=${PROJECT_ROOT}\n\nversions_makefile=${NVIDIA_CONTAINER_TOOLKIT_ROOT}/versions.mk\n# Get version for nvidia-container-toolit\nnvidia_container_toolkit_version=$(grep -m 1 \"^LIB_VERSION := \" ${versions_makefile} | sed -e 's/LIB_VERSION :=[[:space:]]\\(.*\\)[[:space:]]*/\\1/')\nnvidia_container_toolkit_tag=$(grep -m 1 \"^LIB_TAG .= \" ${versions_makefile} | sed -e 's/LIB_TAG .=[[:space:]]\\(.*\\)[[:space:]]*/\\1/')\nnvidia_container_toolkit_version_tag=\"${nvidia_container_toolkit_version}${nvidia_container_toolkit_tag:+~${nvidia_container_toolkit_tag}}\"\n\necho \"NVIDIA_CONTAINER_TOOLKIT_VERSION=${nvidia_container_toolkit_version}\"\necho \"NVIDIA_CONTAINER_TOOLKIT_TAG=${nvidia_container_toolkit_tag}\"\necho \"NVIDIA_CONTAINER_TOOLKIT_PACKAGE_VERSION=${nvidia_container_toolkit_version_tag//\\~/-}\"\n"
  },
  {
    "path": "scripts/packages-sign-all.sh",
    "content": "#!/usr/bin/env bash\n\n: \"${ALL_DEBS:? Must set ALL_DEBS}\"\n: \"${ALL_RPMS:? Must set ALL_RPMS}\"\n: \"${GPG_LOCAL_USER:? Must set GPG_LOCAL_USER}\"\n: \"${TARGETS:? Must set TARGETS}\"\n\nset -x -e\n\nfunction deb-sign {\n    local last_found\n    for r in \"$@\"; do\n        if [ -f \"./${r}\" ]; then\n            last_found=${r}\n        fi\n    done\n    if [[ -z ${last_found} ]]; then\n        echo \"WARNING: No expected package found in $(pwd); skipping signing of repo;\"\n        return\n    fi\n    apt-ftparchive packages . \\\n        | tee Packages \\\n        | xz > Packages.xz\n    apt-ftparchive -c repo.conf release . \\\n        | gpg --batch --yes --expert --clearsign \\\n            --armor \\\n            --no-emit-version \\\n            --no-comments \\\n            --personal-digest-preferences sha512 \\\n            --local-user \"${GPG_LOCAL_USER}\" \\\n        > InRelease\n}\n\nfunction rpm-sign {\n    for r in \"$@\"; do\n        if [ -f \"./${r}\" ]; then\n            rpmsign --addsign --key-id A04EA552 --digest-algo=sha512 \"${r}\"\n        fi\n    done\n    createrepo -v --no-database -s sha512 --compress-type xz --revision \"1.0\" .\n    gpg2 --batch --yes --expert --sign --detach-sign \\\n        --armor \\\n        --no-emit-version \\\n        --no-comments --personal-digest-preferences sha512 \\\n        --local-user \"${GPG_LOCAL_USER}\" \\\n    repodata/repomd.xml\n}\n\nfunction sign() {\n    local target=$1\n    local dst_root=$2\n    local by_package_type=$3\n\n    local src_dist=${target%-*}\n    local dst_dist=${src_dist/amazonlinux/amzn}\n\n    local pkg_type=unknown\n    local arch=${target##*-}\n    local dst_arch=${arch}\n\n    case ${src_dist} in\n    amazonlinux*) pkg_type=rpm\n        ;;\n    centos* | rpm) pkg_type=rpm\n        ;;\n    debian*) pkg_type=deb\n        ;;\n    fedora*) pkg_type=rpm\n        ;;\n    opensuse-leap*) pkg_type=rpm\n        ;;\n    ubuntu* | deb) pkg_type=deb\n        arch=${arch//ppc64le/ppc64el}\n        ;;\n    *) echo \"ERROR: unexpected distribution ${src_dist}\"\n        ;;\n    esac\n\n    if [[ x\"${by_package_type}\" == x\"true\" ]]; then\n        dst_dist=${pkg_type}\n    fi\n\n    local dst=${dst_root}/${dst_dist}/${arch}\n\n    if [[ ! -d ${dst} ]]; then\n        echo \"Directory ${dst} not found. Skipping\"\n        return\n    fi\n\n    cd \"${dst}\"\n    if [[ -f \"/etc/debian_version\" ]]; then\n        [[ \"${pkg_type}\" == \"deb\" ]] && deb-sign ${ALL_DEBS}\n    else\n        [[ \"${pkg_type}\" == \"rpm\" ]] && rpm-sign ${ALL_RPMS}\n    fi\n    cd -\n}\n\nfor target in ${TARGETS[@]}; do\n    echo \"checking target=${target}\"\n    by_package_type=\n    case ${target} in\n    ubuntu18.04-* | centos7-*)\n        by_package_type=\"true\"\n        ;;\n    *)\n        echo \"Skipping target ${target}\"\n        continue\n        ;;\n    esac\n    sign \"${target}\" \"$(pwd)\" ${by_package_type}\ndone\n"
  },
  {
    "path": "scripts/publish-image.sh",
    "content": "#!/usr/bin/env bash\n\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# This script is used to publish images to a registry. It checks whether the image\n# already exists in the registry and skips publishing if it does. This can be overridden\n# using the FORCE_PUBLISH_IMAGES environment variable.\n\nset -ex\n\n: ${DOCKER=docker}\n: ${REGCTL=regctl}\n\nINPUT_IMAGE=$1\nOUTPUT_IMAGE=$2\n\nfunction publish_docker() {\n    ${DOCKER} tag ${1} ${2}\n    ${DOCKER} push ${2}\n}\n\nfunction publish_regctl() {\n    ${REGCTL} image copy ${1} ${2}\n}\n\nfunction publish() {\n    if [[ x\"${BUILD_MULTI_ARCH_IMAGES}\" == x\"true\" || $(command -v ${REGCTL}) ]]; then\n        publish_regctl $@\n    else\n        publish_docker $@\n    fi\n}\n\n# image_exists returns 0 if the image exists in a registry and a non-zero return\n# code if this is not the case.\nfunction image_exists() {\n    local image=$1\n    ${DOCKER} manifest inspect ${image}\n}\n\nif [[ -z ${FORCE_PUBLISH_IMAGES} && $(image_exists ${OUTPUT_IMAGE}) ]]; then\n    echo \"Skipping publishing of ${INPUT_IMAGE} as ${OUTPUT_IMAGE} already exists\"\n    exit 0\nfi\n\necho \"Publishing ${INPUT_IMAGE} as ${OUTPUT_IMAGE}\"\npublish ${INPUT_IMAGE} ${OUTPUT_IMAGE}\n"
  },
  {
    "path": "scripts/release-kitmaker-artifactory.sh",
    "content": "#!/bin/bash\n\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nfunction assert_usage() {\ncat >&2 << EOF\nIncorrect arguments: $*\n$(basename \"${BASH_SOURCE[0]}\") KITMAKER_ARTIFACTORY_REPO\n    KITMAKER_ARTIFACTORY_REPO must contain repo path for package, including hostname.\n\nEnvironment Variables\n    ARTIFACTORY_TOKEN: must contain an auth token. [required]\nEOF\n    exit 1\n}\n\nset -e\n\nSCRIPTS_DIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\"/../scripts && pwd )\"\nPROJECT_ROOT=\"$( cd \"${SCRIPTS_DIR}/..\" && pwd )\"\n\nif [[ $# -ne 1 ]]; then\n    assert_usage \"$@\"\nfi\n\nsource \"${SCRIPTS_DIR}\"/utils.sh\n\n# KITMAKER_ARTIFACTORY_REPO=https://urm.nvidia.com/artifactory/sw-gpu-cloudnative-generic-local/testing\nKITMAKER_ARTIFACTORY_REPO=$1\n\n: ${CURL:=curl}\n\n# ARTIFACTS_DIR represents the root of the artifacts (deb and rpm packages)\n# extracted from the packaging image.\n# TODO: accept ARTIFACTS_DIR as a command-line argument\n: \"${ARTIFACTS_DIR=\"${PROJECT_ROOT}/artifacts\"}\"\n\nif [[ ! -d \"${ARTIFACTS_DIR}\" ]]; then\n    echo \"ERROR: ARTIFACTS_DIR does not exist.\" >&2\n    assert_usage \"$@\"\nfi\n\nif [[ ! -f \"${ARTIFACTS_DIR}/manifest.txt\" ]]; then\n    echo \"ERROR: Manifest file not found.\" >&2\n    assert_usage \"$@\"\nfi\n\nif [[ -z \"${ARTIFACTORY_TOKEN}\" ]]; then\n    echo \"ERROR: ARTIFACTORY_TOKEN must be defined.\" >&2\n    assert_usage \"$@\"\nfi\n\n# TODO: accept KITMAKER_DIR as a command-line argument\n: \"${KITMAKER_DIR=\"${PROJECT_ROOT}/artifacts/kitmaker\"}\"\n\nKITMAKER_SCRATCH=\"${KITMAKER_DIR}/.scratch\"\n\nIMAGE_EPOCH=$(extract_info \"IMAGE_EPOCH\")\nGIT_COMMIT=$(extract_info \"GIT_COMMIT\")\nGIT_COMMIT_SHORT=$(extract_info \"GIT_COMMIT_SHORT\")\nVERSION=$(extract_info \"PACKAGE_VERSION\")\n\n\n# add_distro adds the specified component, os, and arch to the .package folder from which a kitmaker archive is generated.\nfunction add_distro() {\n    local component=$1\n    local branch=$2\n    local os=$3\n    local arch=$4\n\n    local package_dist=$5\n    local package_arch=$6\n\n    local name=\"${component}-${os}-${arch}\"\n\n    local scratch_dir=\"${KITMAKER_SCRATCH}/${name}/${branch}/${component}\"\n    local packages_dir=\"${scratch_dir}/.packages\"\n\n    mkdir -p \"${packages_dir}\"\n\n    # Copy the extracted files to the .packages directory so that a kitmaker file can be created.\n    source=\"${ARTIFACTS_DIR}/packages/${package_dist}/${package_arch}\"\n    cp -r \"${source}/\"* \"${packages_dir}/\"\n}\n\n# create_archive creates a kitmaker archive for the specified component, os, and arch.\nfunction create_archive() {\n    local component=$1\n    local branch=$2\n    local os=$3\n    local arch=$4\n    local version=$5\n\n    local name=\"${component}-${os}-${arch}\"\n    local archive=\"${KITMAKER_DIR}/${branch}/${name}-${version}.tar.gz\"\n\n    local scratch_dir=\"${KITMAKER_SCRATCH}/${name}/${branch}/${component}\"\n    local packages_dir=\"${scratch_dir}/.packages/\"\n\n    mkdir -p $(dirname \"${archive}\")\n\n    tar zcvf \"${archive}\" -C \"${scratch_dir}/..\" \"${component}\"\n    echo \"Created: ${archive}\"\n    ls -l \"${archive}\"\n    echo \"With contents:\"\n    tar -tzvf \"${archive}\"\n    echo \"\"\n\n    # Clean up the scratch directories:\n    rm -f \"${scratch_dir}/.packages/\"*\n    rmdir \"${scratch_dir}/.packages\"\n    rmdir \"${scratch_dir}\"\n}\n\nfunction optionally_add_property() {\n    local property=$1\n    local value=$2\n    if [[ -n \"${value}\" ]]; then\n        props+=(\"${property}=${value}\")\n    fi\n}\n\nfunction upload_archive() {\n    local component=$1\n    local branch=$2\n    local os=$3\n    local arch=$4\n    local version=$5\n    local package_builds=$(join_by , ${@:6})\n\n    local name=\"${component}-${os}-${arch}\"\n    local archive=\"${KITMAKER_DIR}/${branch}/${name}-${version}.tar.gz\"\n\n    if [ ! -r \"${archive}\" ]; then\n        echo \"ERROR: File not found or not readable: ${archive}\"\n        exit 1\n    fi\n    local sha1_checksum=$(sha1sum -b \"${archive}\" | awk '{ print $1 }')\n\n    local upload_url=\"${KITMAKER_ARTIFACTORY_REPO}/${branch}/${component}/${os}-${arch}/${version}/$(basename ${archive})\"\n\n    local props=()\n    # Required KITMAKER properties:\n    props+=(\"component_name=${component}\")\n    props+=(\"version=${version}\")\n    props+=(\"os=${os}\")\n    props+=(\"arch=${arch}\")\n    props+=(\"platform=${os}-${arch}\")\n    props+=(\"changelist=${GIT_COMMIT_SHORT}\")\n    props+=(\"branch=${branch}\")\n    props+=(\"source=https://github.com/NVIDIA/nvidia-container-toolkit\")\n    # Package properties:\n    props+=(\"package.epoch=${IMAGE_EPOCH}\")\n    props+=(\"package.version=${VERSION}\")\n    props+=(\"package.commit=${GIT_COMMIT}\")\n    optionally_add_property \"package.builds\" \"${package_builds}\"\n\n    for var in \"CI_PROJECT_ID\" \"CI_PIPELINE_ID\" \"CI_JOB_ID\" \"CI_JOB_URL\" \"CI_PROJECT_PATH\"; do\n        if [ -n \"${!var}\" ]; then\n            optionally_add_property \"${var}\" \"${!var}\"\n        fi\n    done\n    local PROPS=$(join_by \";\" \"${props[@]}\")\n\n    echo \"Uploading ${upload_url} from ${archive}\"\n    echo -H \"X-JFrog-Art-Api: REDACTED\" \\\n        -H \"X-Checksum-Sha1: ${sha1_checksum}\" \\\n        ${archive:+-T ${archive}} -X PUT \\\n        \"${upload_url};${PROPS}\"\n    if ! ${CURL} -f \\\n        -H \"X-JFrog-Art-Api: ${ARTIFACTORY_TOKEN}\" \\\n        -H \"X-Checksum-Sha1: ${sha1_checksum}\" \\\n        ${archive:+-T ${archive}} -X PUT \\\n        \"${upload_url};${PROPS}\" ;\n    then\n        echo \"ERROR: upload file failed: ${archive}\"\n        exit 1\n    fi\n}\n\ncomponent=\"nvidia_container_toolkit\"\nversion=\"${VERSION%~rc.*}\"\nversion_suffix=$(date -r \"${IMAGE_EPOCH}\" '+%Y.%m.%d.%s' || date -d @\"${IMAGE_EPOCH}\" '+%Y.%m.%d.%s')\nkitmaker_version=\"${VERSION%~rc.*}.${version_suffix}\"\nkitmaker_os=\"linux\"\n\n# create_and_upload creates a kitmaker archive for the specified component, os, and arch and uploads it.\nfunction create_and_upload() {\n    local branch=$1\n    local kitmaker_arch=$2\n    local builds=${@:3}\n\n    for build in ${builds}; do\n        local package_dist=$(echo ${build} | cut -d- -f1)\n        local package_arch=$(echo ${build} | cut -d- -f2)\n\n        add_distro \"${component}\" \"${branch}\" \"${kitmaker_os}\" \"${kitmaker_arch}\" \"${package_dist}\" \"${package_arch}\"\n    done\n\n    create_archive \"${component}\" \"${branch}\" \"${kitmaker_os}\" \"${kitmaker_arch}\" \"${kitmaker_version}\"\n    upload_archive \"${component}\" \"${branch}\" \"${kitmaker_os}\" \"${kitmaker_arch}\" \"${kitmaker_version}\" ${builds}\n}\n\n# Create archive for x86_64 linux distributions\ncreate_and_upload \"main\" \"x86_64\" \"ubuntu18.04-amd64\" \"centos7-x86_64\"\n\n# Create archive for sbsa linux distributions\ncreate_and_upload \"main\" \"sbsa\" \"ubuntu18.04-arm64\" \"centos7-aarch64\"\n# Create archive for aarch64 linux distributions\n# NOTE: From the perspective of the NVIDIA Container Toolkit aarch64 is just a duplicate of sbsa\ncreate_and_upload \"main\" \"aarch64\" \"ubuntu18.04-arm64\" \"centos7-aarch64\"\n"
  },
  {
    "path": "scripts/release-packages-artifactory.sh",
    "content": "#!/usr/bin/env bash\n\n# Copyright (c) 2021-2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Dependencies:\n#   regctl\n#\n\nfunction assert_usage() {\ncat >&2 << EOF\nIncorrect arguments: $*\n$(basename \"${BASH_SOURCE[0]}\") DIST-ARCH\n    DIST: The distribution.\n    ARCH: The architecture.\n\nEnvironment Variables\n    ARTIFACTORY_TOKEN: must contain an auth token. [required]\n    LIB_TAG: optional package tag.\n    CI_COMMIT_REF_NAME: provided by CI/CD system.\n    CI_COMMIT_SHA: provided by CI/CD system.\nEOF\n    exit 1\n}\n\nSCRIPTS_DIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\"/../scripts && pwd )\"\nPROJECT_ROOT=\"$( cd \"${SCRIPTS_DIR}/..\" && pwd )\"\n\nsource \"${SCRIPTS_DIR}\"/utils.sh\n\nif [[ $# -ne 1 ]]; then\n    assert_usage \"$@\"\nfi\n\nDISTARCH=$1\nARTIFACTORY_PATH=$2\nDIST=${DISTARCH%-*}\nARCH=${DISTARCH##*-}\n\nCURL=${CURL:-curl}\n\nif [[ -z \"${DIST}\" || -z \"${ARCH}\" ]]; then\n    echo \"ERROR: Distro and Architecture must be specified.\" >&2\n    assert_usage \"$@\"\nfi\n\nif [[ -z \"${ARTIFACTORY_PATH}\" ]]; then\n    echo \"ERROR: Package repo must be specified.\" >&2\n    assert_usage \"$@\"\nfi\n\nif [[ -z \"${ARTIFACTORY_TOKEN}\" ]]; then\n    echo \"ERROR: ARTIFACTORY_TOKEN must be defined.\" >&2\n    assert_usage \"$@\"\nfi\n\n# TODO: accept PACKAGES_DIR as a command-line argument\n: \"${ARTIFACTS_DIR=\"${PROJECT_ROOT}/artifacts\"}\"\n: \"${PACKAGES_DIR=\"${ARTIFACTS_DIR}/packages\"}\"\n\neval $(${SCRIPTS_DIR}/get-component-versions.sh)\n\n# Returns the key=value property if the value isn't empty\n# Prepends with \";\" if needed\nset_prop_value() {\n    local key=$1\n    local value=$2\n    if [ -n \"${value}\" ]; then\n        if [ -z \"${PROPS}\" ]; then\n            echo \"${key}=${value}\"\n        else\n            echo \";${key}=${value}\"\n        fi\n    fi\n}\n\nprocess_props() {\n    local dist=$1\n    local arch=$2\n    local file=$3\n    local component_name=\"${file%%.*}\"\n    component_name=\"${component_name%-*}\"\n    local pkg_type=\"$(package_type $dist)\"\n\n    ## Component owner is free to define these\n    # PROPS+=$(set_prop_value \"version\" \"${VERSION}\")\n    # PROPS+=$(set_prop_value \"lws_version\" \"${LWS_VER}\")\n    # PROPS+=$(set_prop_value \"platform\" \"${DISTARCH}\")\n\n    # TODO: Use `git describe` to get this information if it's not available.\n    PROPS+=$(set_prop_value \"changelist\" \"${CI_COMMIT_SHA}\")\n    PROPS+=$(set_prop_value \"branch\" \"${CI_COMMIT_REF_NAME}\")\n\n    # PROPS+=$(set_prop_value \"category\" \"utils\")\n    # PROPS+=$(set_prop_value \"platform\" \"${DISTARCH}\")\n\n    # Gitlab variables to expose\n    for var in CI_PROJECT_ID CI_PIPELINE_ID CI_JOB_ID CI_JOB_URL CI_PROJECT_PATH; do\n        if [ -n \"${!var}\" ]; then\n            PROPS+=$(set_prop_value \"${var}\" \"${!var}\")\n        fi\n    done\n\n    # We also set the package-specific properties to allow this to be used for other artifactory repositories\n    PROPS+=$(set_prop_value \"${pkg_type}.distribution\" \"${dist}\")\n    PROPS+=$(set_prop_value \"${pkg_type}.architecture\" \"${arch}\")\n    PROPS+=$(set_prop_value \"${pkg_type}.component\" \"${component_name}\")\n}\n\n# Uploads file ARTIFACTORY_PATH\n# Relies on global variables: DIST, ARCH, ARTIFACTORY_TOKEN, ARTIFACTORY_PATH\nupload_file() {\n    local dist=$1\n    local arch=$2\n    local file=$3\n\n    # TODO: These should be set by envvars\n    local artifactory_host=\"urm.nvidia.com\"\n    local artifactory_repo=\"$(get_artifactory_repository $dist)\"\n\n    if [ ! -r \"${file}\" ]; then\n        echo \"ERROR: File not found or not readable: ${file}\"\n        exit 1\n    fi\n\n    local PROPS\n    process_props \"${dist}\" \"${arch}\" \"${file}\"\n\n    # Collect sum\n    SHA1_SUM=$(sha1sum -b \"${file}\" | awk '{ print $1 }')\n\n    url=\"https://${artifactory_host}/artifactory/${artifactory_repo}/${dist}/${arch}/$(basename \"${file}\")\"\n    # NOTE: The URL to set the properties through the API is:\n    # \"https://${artifactory_host}/artifactory/api/storage/${artifactory_repo}/${dist}/${arch}/$(basename ${file})\"\n\n    echo \"Uploading ${file} to ${url}\"\n    if ! ${CURL} -f \\\n          -H \"X-JFrog-Art-Api: ${ARTIFACTORY_TOKEN}\" \\\n          -H \"X-Checksum-Sha1: ${SHA1_SUM}\" \\\n          ${file:+-T ${file}} -X PUT \\\n            \"${url};${PROPS}\" ;\n        then\n            echo \"ERROR: upload file failed: ${file}\"\n            exit 1\n    fi\n}\n\nfunction push-artifactory() {\n    local dist=\"$1\"\n    local arch=\"$2\"\n\n    source=\"${ARTIFACTS_DIR}/packages/${dist}/${arch}\"\n\n    find \"${source}\" -maxdepth 1 | while read -r f ; do\n        upload_file \"$dist\" \"$arch\" \"$f\"\n    done\n}\n\n# TODO: use this to adapt as a general purpose command-line tool\n# case \"${COMMAND}\" in\n#   set)\n#     set_props\n#     ;;\n#   upload)\n#     if [ -z \"${UPLOAD_FILE}\" ]; then\n#       echo \"ERROR: Upload package filename must be set using -f\"\n#       usage\n#     fi\n#\n#     upload_file\n#     ;;\n#   *)\n#     echo \"ERROR: Invalid command ${COMMAND}\"\n#     usage\n#     ;;\n# esac\n\npush-artifactory \"${DIST}\" \"${ARCH}\"\n"
  },
  {
    "path": "scripts/release-packages.sh",
    "content": "#!/usr/bin/env bash\n\n# Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nfunction assert_usage() {\n    echo \"Incorrect arguments: $*\"\n    echo \"$(basename ${BASH_SOURCE[0]}) PACKAGE_REPO_ROOT [SHA]\"\n    echo \"\\tPACKAGE_REPO_ROOT: The path to the libnvidia-container repository\"\n    echo \"\\tSHA: The SHA / reference to release. [Default: HEAD]\"\n    exit 1\n}\n\nset -e\n\nSCRIPTS_DIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\"/../scripts && pwd )\"\nPROJECT_ROOT=\"$( cd ${SCRIPTS_DIR}/.. && pwd )\"\n\nif [[ $# -lt 1 || $# -gt 2 ]]; then\n    assert_usage $*\nfi\n\nsource \"${SCRIPTS_DIR}\"/utils.sh\n\nPACKAGE_REPO_ROOT=$1\nif [[ ! -d ${PACKAGE_REPO_ROOT} ]]; then\n    echo \"The specified PACKAGE_REPO_ROOT '${PACKAGE_REPO_ROOT}' must exist\"\n    exit 1\nfi\n\n: ${REFERENCE:=\"HEAD\"}\nif [[ $# -ge 2 ]]; then\n    REFERENCE=$2\nfi\n\nSHA=$(git rev-parse --short=8 ${REFERENCE})\nIMAGE_NAME=\"ghcr.io/nvidia/container-toolkit\"\nIMAGE_TAG=${SHA}-packaging\n\n: ${VERSION:=\"$(get_version_from_image ${IMAGE_NAME}:${IMAGE_TAG} ${SHA})\"}\n\nREPO=\"experimental\"\nif [[ ${VERSION/rc./} == ${VERSION} ]]; then\n    REPO=\"stable\"\nfi\n\nPACKAGE_CACHE=release-${VERSION}-${REPO}\n\necho \"Fetching packages with SHA '${SHA}' as tag '${VERSION}' to ${PACKAGE_CACHE}\"\n${SCRIPTS_DIR}/../hack/pull-packages.sh \\\n    ${IMAGE_NAME}:${IMAGE_TAG} \\\n    ${PACKAGE_CACHE}\n\n: ${ALL_RPMS:=\"$(find ${PACKAGE_CACHE} -name \"*.rpm\" -exec basename {} \\; | sort | uniq)\"}\n: ${ALL_DEBS:=\"$(find ${PACKAGE_CACHE} -name \"*.deb\" -exec basename {} \\; | sort | uniq)\"}\n\n\nPACKAGE_REPO_ROOT=$(cd \"${PACKAGE_REPO_ROOT}\" && pwd)\necho \"Updating ${REPO} repo at ${PACKAGE_REPO_ROOT}\"\n\ndocker build \\\n    -t nvidia/toolkit-deb-pkg-signer \\\n    -f ${SCRIPTS_DIR}/Dockerfile.sign.deb \\\n        ${SCRIPTS_DIR}\n\ndocker build \\\n    -t nvidia/toolkit-rpm-pkg-signer \\\n    -f ${SCRIPTS_DIR}/Dockerfile.sign.rpm \\\n        ${SCRIPTS_DIR}\n\nfunction sync() {\n    local target=$1\n    local src_root=$2\n    local dst_root=$3\n    local by_package_type=$4\n\n    local src_dist=${target%-*}\n    local dst_dist=${src_dist/amazonlinux/amzn}\n\n    local pkg_type=unknown\n    local arch=${target##*-}\n    local dst_arch=${arch}\n\n    case ${src_dist} in\n    amazonlinux*) pkg_type=rpm\n        ;;\n    centos*) pkg_type=rpm\n        ;;\n    debian*) pkg_type=deb\n        ;;\n    fedora*) pkg_type=rpm\n        ;;\n    opensuse-leap*) pkg_type=rpm\n        ;;\n    ubuntu*) pkg_type=deb\n        dst_arch=${arch//ppc64le/ppc64el}\n        ;;\n    *) echo \"ERROR: unexpected distribution ${src_dist}\"\n       exit 1\n        ;;\n    esac\n\n    if [[ x\"${by_package_type}\" == x\"true\" ]]; then\n        dst_dist=${pkg_type}\n    fi\n\n    local src=${src_root}/${src_dist}/${arch}\n    local dst=${dst_root}/${dst_dist}/${dst_arch}\n\n    if [[ ! -d ${src} || -z $(ls ${src}/*.${pkg_type}) ]]; then\n        echo \"Skipping ${src}\"\n        return\n    fi\n    mkdir -p ${dst}\n\n    for f in $(ls ${src}/libnvidia-container*.${pkg_type} ${src}/nvidia-container-toolkit*.${pkg_type}); do\n        # We never release nvidia-container-toolkit-operator-extensions packages\n        if [[ \"${f/\"nvidia-container-toolkit-operator-extensions\"/}\" != \"${f}\" ]]; then\n            echo \"Skipping ${f}\"\n            continue\n        fi\n\n        df=${dst}/$(basename ${f})\n        df_stable=${df//\"/experimental/\"/\"/stable/\"}\n        if [[ -f \"${df}\" ]]; then\n            echo \"${df} already exists; skipping\"\n        elif [[ ${REPO} == \"experimental\" && -f ${df_stable} ]]; then\n            echo \"${df_stable} already exists; skipping\"\n        else\n            cp ${f} ${df}\n        fi\n\n    done\n}\n\ntargets=${all[@]}\n\n_current_branch=$(git -C ${PACKAGE_REPO_ROOT} rev-parse --abbrev-ref HEAD)\nif [[ x\"${_current_branch}\" != x\"gh-pages\" ]]; then\n    echo \"It is expected that the gh-pages branch be checked out\"\n    exit 1\nfi\n\n: ${UPSTREAM_REMOTE:=\"origin\"}\n\n: ${UPSTREAM_REFERENCE:=\"${UPSTREAM_REMOTE}/gh-pages\"}\ngit -C ${PACKAGE_REPO_ROOT} reset --hard ${UPSTREAM_REFERENCE}\ngit -C ${PACKAGE_REPO_ROOT} clean -fdx ${REPO}\n\nfor target in ${targets[@]}; do\n    echo \"checking target=${target}\"\n    by_package_type=\n    case ${target} in\n    ubuntu18.04-* | centos7-*)\n        by_package_type=\"true\"\n        ;;\n    *)\n        echo \"Skipping target ${target}\"\n        continue\n        ;;\n    esac\n    sync ${target} ${PACKAGE_CACHE}/packages ${PACKAGE_REPO_ROOT}/${REPO} ${by_package_type}\ndone\n\ngit -C ${PACKAGE_REPO_ROOT} add ${REPO}\n\n# Experimental / release candidate release\ngit -C ${PACKAGE_REPO_ROOT} commit -s -F- <<EOF\nAdd packages for NVIDIA Container Toolkit ${VERSION} ${REPO} release\n\nThese include:\n* libnvidia-container* ${LIBNVIDIA_CONTAINER_PACKAGE_VERSION}\n* nvidia-container-toolkit ${NVIDIA_CONTAINER_TOOLKIT_PACKAGE_VERSION}\nEOF\n\n: ${MASTER_KEY_PATH:? Path to master key MASTER_KEY_PATH must be set}\n: ${SUB_KEY_PATH:? Path to sub key SUB_KEY_PATH must be set}\n: ${GPG_LOCAL_USER:? GPG_LOCAL_USER must be set}\n: ${GNUPG_CONF:=$(mktemp -d -t nvidia-container-toolkit-package-XXXXXXXXXX)}\n\nfunction sign() {\n    local pkg_type=$1\n    docker run -it --rm \\\n        -e ALL_DEBS=\"${ALL_DEBS}\" \\\n        -e ALL_RPMS=\"${ALL_RPMS}\" \\\n        -e GPG_LOCAL_USER=\"${GPG_LOCAL_USER}\" \\\n        -e TARGETS=\"${targets}\" \\\n        -v ${PACKAGE_REPO_ROOT}/${REPO}:/sign-packages \\\n        -v ${MASTER_KEY_PATH}:/keys/master.key:ro \\\n        -v ${SUB_KEY_PATH}:/keys/sub.key:ro \\\n        -v ${SCRIPTS_DIR}:/helpers \\\n        -w /sign-packages \\\n            nvidia/toolkit-${pkg_type}-pkg-signer \\\n        bash -x -c \"\n        export GPG_TTY=\\$(tty);\n        gpg --import /keys/master.key;\n        gpg --import /keys/sub.key;\n        /helpers/packages-sign-all.sh;\n        \"\n}\n\nsign deb\n\ngit -C ${PACKAGE_REPO_ROOT} add ${REPO}\ngit -C ${PACKAGE_REPO_ROOT} commit -s -m \"fixup! Add packages for NVIDIA Container Toolkit ${VERSION} ${REPO} release\"\n\nsign rpm\n\ngit -C ${PACKAGE_REPO_ROOT} add ${REPO}\ngit -C ${PACKAGE_REPO_ROOT} commit -s -m \"fixup! Add packages for NVIDIA Container Toolkit ${VERSION} ${REPO} release\"\n\necho \"To publish changes, go to ${PACKAGE_REPO_ROOT} and run:\"\necho \"   git rebase -i ${UPSTREAM_REFERENCE}\"\n"
  },
  {
    "path": "scripts/repackage-rpms.sh",
    "content": "# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nfunction assert_usage() {\n    echo \"Missing argument $1\"\n    echo \"$(basename \"${BASH_SOURCE[0]}\") TARGET\"\n    exit 1\n}\n\nset -e\n\n\nif [ -n \"${SKIP_REPACKAGE_RPMS}\" ]; then\n    exit 0\nfi\n\nSCRIPTS_DIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\"/../scripts && pwd )\"\nPROJECT_ROOT=\"$( cd \"${SCRIPTS_DIR}\"/.. && pwd )\"\n\nif [[ $# -ne 1 ]]; then\n    assert_usage \"TARGET\"\nfi\n\nTARGET=$1\n\nsource \"${SCRIPTS_DIR}\"/utils.sh\n\n: \"${DIST_DIR:=${PROJECT_ROOT}/dist}\"\nexport DIST_DIR\n\ncase ${TARGET} in\n    centos7-aarch64) platform=\"linux/aarch64\"\n        ;;\n    centos7-x86_64) platform=\"linux/x86_64\"\n        ;;\n    *) exit 0\n        ;;\nesac\n\narch=\"${TARGET/centos7-/}\"\nplatform=\"${TARGET/centos7-/linux/}\"\npackage_root=\"${DIST_DIR}/${TARGET/-//}\"\n\n# We build and rpmrebuild:${arch} image with no context.\ndocker build \\\n    --platform=${platform} \\\n    --build-arg arch=\"${arch}\" \\\n    --tag rpmrebuild:${arch} \\\n    - < ${PROJECT_ROOT}/deployments/container/Dockerfile.rpmrebuild\n\n\nupdated=$(mktemp -d)\necho \"Repackaging RPMs from ${package_root} to ${updated}:\"\ndocker run \\\n    --platform=${platform} \\\n    --rm \\\n    -v ${package_root}:/dist \\\n    -v ${updated}:/updated \\\n    -w /dist \\\n        rpmrebuild:${arch}\n"
  },
  {
    "path": "scripts/update-components.sh",
    "content": "#!/usr/bin/env bash\n\n# Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nset -e -x\n\nSCRIPTS_DIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\"/../scripts && pwd )\"\nPROJECT_ROOT=\"$( cd ${SCRIPTS_DIR}/.. && pwd )\"\n\ngit submodule update --init\n\necho \"Component status before update\"\ngit submodule status\n\n# We update all submodules from their respective remotes\n# NOTE: Appending `-- [PATH]` will limit the update to a specific component\ngit submodule update --remote\n\nif [[ -z $(git status -s third_party) ]]; then\n    echo \"Components already up to date\"\nelse\n    echo \"Components updated\"\n    git submodule status\nfi\n"
  },
  {
    "path": "scripts/utils.sh",
    "content": "# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# This list represents the distribution-architecture pairs that are actually published\n# to the relevant repositories. This targets forwarded to the build-all-components script\n# can be overridden by specifying command line arguments.\nall=(\n    centos7-aarch64\n    centos7-x86_64\n    centos8-aarch64\n    centos8-ppc64le\n    centos8-x86_64\n    ubuntu18.04-amd64\n    ubuntu18.04-arm64\n    ubuntu18.04-ppc64le\n)\n\n# package_type returns the packaging type (deb or rpm) for the specfied distribution.\n# An error is returned if the ditribution is unsupported.\nfunction package_type() {\n    local pkg_type\n    case ${1} in\n    amazonlinux*) pkg_type=rpm\n        ;;\n    centos*) pkg_type=rpm\n        ;;\n    debian*) pkg_type=deb\n        ;;\n    fedora*) pkg_type=rpm\n        ;;\n    opensuse-leap*) pkg_type=rpm\n        ;;\n    ubuntu*) pkg_type=deb\n        ;;\n    deb) pkg_type=deb\n        ;;\n    rpm) pkg_type=rpm\n        ;;\n    *) exit 1\n        ;;\n    esac\n    echo \"${pkg_type}\"\n}\n\nfunction get_artifactory_repository() {\n    local pkg_type=$(package_type $1)\n\n    case ${pkg_type} in\n    deb) echo \"sw-gpu-cloudnative-debian-local\"\n        ;;\n    rpm) echo \"sw-gpu-cloudnative-rpm-local\"\n        ;;\n    *) echo \"sw-gpu-cloudnative-generic-local\"\n        ;;\n    esac\n}\n\nfunction get_package_target() {\n    local target=$1\n    local dist=${target%-*}\n    local arch=${target##*-}\n\n    case ${target} in\n    deb) echo \"\"\n        ;;\n    rpm) echo \"\"\n        ;;\n    *) echo \"${dist}/${arch}\"\n        ;;\n    esac\n}\n\n# extract-file copies a file from a specified image.\n# If regctl is available this is used, otherwise a docker container is run and the file is copied from\n# there.\nfunction copy_file() {\n    local image=$1\n    local path_in_image=$2\n    local path_on_host=$3\n    if command -v regctl > /dev/null; then\n        regctl image get-file \"${image}\" \"${path_in_image}\" \"${path_on_host}\"\n    else\n        # Note this will only work for destinations where the `path_on_host` is in `pwd`\n        docker run --rm \\\n        -v \"$(pwd):$(pwd)\" \\\n        -w \"$(pwd)\" \\\n        -u \"$(id -u):$(id -g)\" \\\n        --entrypoint=\"sh\" \\\n            \"${image}\" \\\n            -c \"cp -p ${path_in_image} ${path_on_host}\"\n    fi\n}\n\n# extract_info extracts the value of the specified variable from the manifest.txt file.\nfunction extract_from_manifest() {\n    local variable=$1\n    local manifest=$2\n    local value=$(cat ${manifest} | grep \"#${variable}=\" | sed -e \"s/#${variable}=//\" | tr -d '\\r')\n    echo $value\n}\n\n# extract_info extracts the value of the specified variable from the manifest.txt file.\nfunction extract_info() {\n    extract_from_manifest $1 \"${ARTIFACTS_DIR}/manifest.txt\"\n}\n\nfunction get_version_from_image() {\n    local image=$1\n    local manifest=\"manifest-${2}.txt\"\n    copy_file ${image} \"/artifacts/manifest.txt\" ${manifest}\n    version=$(extract_from_manifest \"PACKAGE_VERSION\" ${manifest})\n    echo \"v${version/\\~/-}\"\n    rm -f ${manifest}\n}\n\nfunction join_by { local IFS=\"$1\"; shift; echo \"$*\"; }"
  },
  {
    "path": "testdata/go.mod",
    "content": ""
  },
  {
    "path": "testdata/installer/artifacts/deb/usr/bin/nvidia-cdi-hook",
    "content": "nvidia-cdi-hook\n"
  },
  {
    "path": "testdata/installer/artifacts/deb/usr/bin/nvidia-container-cli",
    "content": "nvidia-container-cli\n"
  },
  {
    "path": "testdata/installer/artifacts/deb/usr/bin/nvidia-container-runtime",
    "content": "nvidia-container-runtime\n"
  },
  {
    "path": "testdata/installer/artifacts/deb/usr/bin/nvidia-container-runtime-hook",
    "content": "nvidia-container-runtime-hook\n"
  },
  {
    "path": "testdata/installer/artifacts/deb/usr/bin/nvidia-container-runtime.cdi",
    "content": "nvidia-container-runtime.cdi\n"
  },
  {
    "path": "testdata/installer/artifacts/deb/usr/bin/nvidia-container-runtime.legacy",
    "content": "nvidia-container-runtime.legacy\n"
  },
  {
    "path": "testdata/installer/artifacts/deb/usr/bin/nvidia-ctk",
    "content": "nvidia-ctk\n"
  },
  {
    "path": "testdata/installer/artifacts/deb/usr/lib/x86_64-linux-gnu/libnvidia-container-go.so.99.88.77",
    "content": ""
  },
  {
    "path": "testdata/installer/artifacts/deb/usr/lib/x86_64-linux-gnu/libnvidia-container.so.99.88.77",
    "content": ""
  },
  {
    "path": "testdata/installer/artifacts/rpm/usr/bin/nvidia-cdi-hook",
    "content": "nvidia-cdi-hook\n"
  },
  {
    "path": "testdata/installer/artifacts/rpm/usr/bin/nvidia-container-cli",
    "content": "nvidia-container-cli\n"
  },
  {
    "path": "testdata/installer/artifacts/rpm/usr/bin/nvidia-container-runtime",
    "content": "nvidia-container-runtime\n"
  },
  {
    "path": "testdata/installer/artifacts/rpm/usr/bin/nvidia-container-runtime-hook",
    "content": "nvidia-container-runtime-hook\n"
  },
  {
    "path": "testdata/installer/artifacts/rpm/usr/bin/nvidia-container-runtime.cdi",
    "content": "nvidia-container-runtime.cdi\n"
  },
  {
    "path": "testdata/installer/artifacts/rpm/usr/bin/nvidia-container-runtime.legacy",
    "content": "nvidia-container-runtime.legacy\n"
  },
  {
    "path": "testdata/installer/artifacts/rpm/usr/bin/nvidia-ctk",
    "content": "nvidia-ctk\n"
  },
  {
    "path": "testdata/installer/artifacts/rpm/usr/lib64/libnvidia-container-go.so.99.88.77",
    "content": ""
  },
  {
    "path": "testdata/installer/artifacts/rpm/usr/lib64/libnvidia-container.so.99.88.77",
    "content": ""
  },
  {
    "path": "testdata/lookup/csv-mode/dev/nvidia0",
    "content": ""
  },
  {
    "path": "testdata/lookup/csv-mode/etc/nvidia-container-runtime/host-files-for-container.d/devices.csv",
    "content": "dev, /dev/dri/card*\ndev, /dev/dri/renderD*\ndir, /dev/dri/by-path\ndev, /dev/fb0\ndev, /dev/fb1\ndev, /dev/host1x-fence\ndev, /dev/nvhost-as-gpu\ndev, /dev/nvhost-ctrl-gpu\ndev, /dev/nvhost-ctrl-nvdla0\ndev, /dev/nvhost-ctrl-nvdla1\ndev, /dev/nvhost-ctrl-pva0\ndev, /dev/nvhost-ctxsw-gpu\ndev, /dev/nvhost-dbg-gpu\ndev, /dev/nvhost-gpu\ndev, /dev/nvhost-nvsched-gpu\ndev, /dev/nvhost-power-gpu\ndev, /dev/nvhost-prof-ctx-gpu\ndev, /dev/nvhost-prof-dev-gpu\ndev, /dev/nvhost-prof-gpu\ndev, /dev/nvhost-sched-gpu\ndev, /dev/nvhost-tsg-gpu\ndev, /dev/nvgpu/igpu0/as\ndev, /dev/nvgpu/igpu0/channel\ndev, /dev/nvgpu/igpu0/ctrl\ndev, /dev/nvgpu/igpu0/ctxsw\ndev, /dev/nvgpu/igpu0/dbg\ndev, /dev/nvgpu/igpu0/nvsched\ndev, /dev/nvgpu/igpu0/power\ndev, /dev/nvgpu/igpu0/prof\ndev, /dev/nvgpu/igpu0/prof-ctx\ndev, /dev/nvgpu/igpu0/prof-dev\ndev, /dev/nvgpu/igpu0/sched\ndev, /dev/nvgpu/igpu0/tsg\ndev, /dev/nvidia-modeset\ndev, /dev/nvidia0\ndev, /dev/nvidiactl\ndev, /dev/nvmap\ndev, /dev/nvsciipc\ndev, /dev/v4l2-nvdec\ndev, /dev/v4l2-nvenc\n"
  },
  {
    "path": "testdata/lookup/csv-mode/etc/nvidia-container-runtime/host-files-for-container.d/drivers.csv",
    "content": "lib, /usr/lib/aarch64-linux-gnu/libv4l2.so.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/desktop-shell.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/drm-backend.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/EGLWLInputEventExample\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/EGLWLMockNavigation\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/fullscreen-shell.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/gl-renderer.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/hmi-controller.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/ivi-controller.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/ivi-shell.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/LayerManagerControl\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/libilmClient.so.2.2.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/libilmCommon.so.2.2.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/libilmControl.so.2.2.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/libilmInput.so.2.2.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/libweston-6.so.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/libweston-desktop-6.so.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/simple-weston-client\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/spring-tool\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/wayland-backend.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston-calibrator\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston-clickdot\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston-cliptest\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston-content-protection\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston-debug\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston-desktop-shell\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston-dnd\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston-eventdemo\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston-flower\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston-fullscreen\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston-image\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston-info\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston-ivi-shell-user-interface\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston-keyboard\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston-launch\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston-multi-resource\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston-output-mode\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston-resizor\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston-scaler\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston-screenshooter\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston-simple-dmabuf-egldevice\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston-simple-egl\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston-simple-pattern-hdr\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston-simple-shm\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston-simple-touch\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston-smoke\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston-stacking\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston-subsurfaces\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston-terminal\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston-transformed\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvarguscamerasrc.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvcompositor.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvdrmvideosink.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnveglglessink.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnveglstreamsrc.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvegltransform.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvipcpipeline.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvivafilter.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvjpeg.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvtee.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvv4l2camerasrc.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvvidconv.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvvideo4linux2.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvvideosink.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvvideosinks.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/nvgstcapture-1.0_README.txt\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/nvgstipctestapp-1.0_README.txt\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/nvgstplayer-1.0_README.txt\nlib, /usr/lib/aarch64-linux-gnu/libgstnvegl-1.0.so.0\nlib, /usr/lib/aarch64-linux-gnu/libgstnvexifmeta.so\nlib, /usr/lib/aarch64-linux-gnu/libgstnvivameta.so\nlib, /usr/lib/aarch64-linux-gnu/libnvsample_cudaprocess.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libgstnvcustomhelper.so.1.0.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libgstnvdsseimeta.so.1.0.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnveglstreamproducer.so\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libgstnvcustomhelper.so\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libgstnvdsseimeta.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvdla_compiler.so\nlib, /etc/vulkansc/icd.d/nvidia_icd_vksc.json\nlib, /usr/lib/aarch64-linux-gnu/nvidia/ld.so.conf\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libcuda.so.1.1\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libGLX_nvidia.so.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libjetsonpower.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvargus.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvargus_socketclient.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvargus_socketserver.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvbuf_fdmap.so.1.0.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvbufsurface.so.1.0.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvbufsurftransform.so.1.0.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvcameratools.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvcamerautils.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvcam_imageencoder.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvcamlog.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvcamv4l2.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvcapture.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvcolorutil.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvcucompat.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvcudla.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvcuvidv4l2.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvdc.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvddk_2d_v2.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvddk_vic.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvdecode2eglimage.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvdla_runtime.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvdsbufferpool.so.1.0.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnveventlib.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvexif.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvfnet.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvfnetstoredefog.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvfnetstorehdfx.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvfusacapinterface.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvfusacap.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvgov_boot.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvgov_camera.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvgov_force.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvgov_generic.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvgov_gpucompute.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvgov_graphics.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvgov_il.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvgov_spincircle.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvgov_tbc.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvgov_ui.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-allocator.so.1\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-eglcore.so.540.3.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-egl-gbm.so.1.1.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-egl-wayland.so.1.1.11\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-glcore.so.540.3.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-glsi.so.540.3.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-glvkspirv.so.540.3.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-gpucomp.so.540.3.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-kms.so.540.3.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-ml.so.1\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-nvvm.so.540.3.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-ptxjitcompiler.so.540.3.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-rmapi-tegra.so.540.3.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-rtcore.so.540.3.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-tls.so.540.3.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-vksc-core.so.540.3.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvid_mapper.so.1.0.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvimp.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvisppg.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvisp.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvisp_utils.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvjpeg.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmedia_2d.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmedia2d.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmedia_dla.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmedia_eglstream.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmedia_ide_parser.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmedia_ide_sci.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmedia_iep_sci.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmedia_ijpd_sci.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmedia_ijpe_sci.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmedia_iofa_sci.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmedia_isp_ext.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmedialdc.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmedia.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmedia_tensor.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmm_contentpipe.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmmlite_image.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmmlite.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmmlite_utils.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmmlite_video.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmm_parser.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmm.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmm_utils.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvodm_imager.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvofsdk.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvoggopus.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvomxilclient.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvomx.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvosd.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvos.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvparser.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvphsd.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvphs.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvplayfair.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvpva_algorithms.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvpvaintf.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvpva.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvpvaumd.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvrm_chip.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvrm_gpu.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvrm_host1x.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvrm_mem.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvrm_stream.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvrm_surface.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvrm_sync.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvscf.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvscibuf.so.1\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvscicommon.so.1\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvscievent.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvsciipc.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvscistream.so.1\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvscisync.so.1\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvsocsys.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvtegrahv.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvtracebuf.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvtvmr_2d.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvtvmr.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvv4l2.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvv4lconvert.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvvic.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvvideoencode_ppe.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvvideo.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libsensors.hal-client.nvs.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libsensors_hal.nvs.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libsensors.l4t.no_fusion.nvs.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libtegrav4l2.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libtegrawfd.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libv4l2_nvargus.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libv4l2_nvcuvidvideocodec.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libv4l2_nvvideocodec.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libVkLayer_json_gen.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libVkSCLayer_khronos_validation.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libvulkansc.so.1.0.10\nlib, /usr/lib/aarch64-linux-gnu/nvidia/nvidia_icd.json\nlib, /usr/lib/aarch64-linux-gnu/tegra-egl/ld.so.conf\nlib, /usr/lib/aarch64-linux-gnu/tegra-egl/libEGL_nvidia.so.0\nlib, /usr/lib/aarch64-linux-gnu/tegra-egl/libGLESv1_CM_nvidia.so.1\nlib, /usr/lib/aarch64-linux-gnu/tegra-egl/libGLESv2_nvidia.so.2\nlib, /usr/lib/aarch64-linux-gnu/tegra-egl/nvidia.json\nsym, /etc/vulkan/icd.d/nvidia_icd.json\nsym, /usr/lib/aarch64-linux-gnu/gbm/nvidia-drm_gbm.so\nsym, /usr/lib/aarch64-linux-gnu/gbm/tegra_gbm.so\nsym, /usr/lib/aarch64-linux-gnu/gbm/tegra-udrm_gbm.so\nsym, /usr/lib/aarch64-linux-gnu/libcuda.so\nsym, /usr/lib/aarch64-linux-gnu/libnvcucompat.so\nsym, /usr/lib/aarch64-linux-gnu/libnvcudla.so\nsym, /usr/lib/aarch64-linux-gnu/libv4l2.so.0.0.999999\nsym, /usr/lib/aarch64-linux-gnu/libv4lconvert.so.0.0.999999\nsym, /usr/lib/aarch64-linux-gnu/libv4l/plugins/nv/libv4l2_nvargus.so\nsym, /usr/lib/aarch64-linux-gnu/libv4l/plugins/nv/libv4l2_nvcuvidvideocodec.so\nsym, /usr/lib/aarch64-linux-gnu/libv4l/plugins/nv/libv4l2_nvvideocodec.so\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libcuda.so\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libcuda.so.1\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libnvbufsurface.so\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libnvbufsurftransform.so\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libnvdsbufferpool.so\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-allocator.so\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-egl-gbm.so.1\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-egl-wayland.so.1\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-kms.so\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-nvvm.so.4\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-ptxjitcompiler.so.1\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-vksc-core.so\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-vksc-core.so.1\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libnvid_mapper.so\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libnvscibuf.so\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libnvscicommon.so\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libnvscistream.so\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libnvscisync.so\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libv4l2.so.0\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libv4lconvert.so.0\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libvulkansc.so\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libvulkansc.so.1\nsym, /usr/lib/aarch64-linux-gnu/tegra\nsym, /usr/share/glvnd/egl_vendor.d/10_nvidia.json\nlib, //lib/firmware/tegra19x/nvhost_nvdec040_ns.fw\nlib, /lib/firmware/tegra19x/nvhost_nvdec040_ns.fw\nlib, /lib/firmware/tegra23x/nvhost_nvdec050_desc_prod.bin\nlib, /usr/sbin/nvidia-smi\nlib, /usr/share/doc/nvidia-tegra/LICENSE.nvidia-smi\n"
  },
  {
    "path": "testdata/lookup/rootfs-1/README.md",
    "content": "This rootfs represents a host with the CUDA driver libraries installed in\n/lib/x86_64-linux-gnu. The included /etc/ld.so.cache was copied from such as system."
  },
  {
    "path": "testdata/lookup/rootfs-1/dev/gdrdrv",
    "content": ""
  },
  {
    "path": "testdata/lookup/rootfs-1/dev/infiniband/rdma_cm",
    "content": ""
  },
  {
    "path": "testdata/lookup/rootfs-1/dev/infiniband/uverbs0",
    "content": ""
  },
  {
    "path": "testdata/lookup/rootfs-1/dev/nvidia-caps/nvidia-cap1",
    "content": ""
  },
  {
    "path": "testdata/lookup/rootfs-1/dev/nvidia-caps-imex-channels/channel0",
    "content": ""
  },
  {
    "path": "testdata/lookup/rootfs-1/dev/nvidia-caps-imex-channels/channel1",
    "content": ""
  },
  {
    "path": "testdata/lookup/rootfs-1/dev/nvidia-caps-imex-channels/channel2047",
    "content": ""
  },
  {
    "path": "testdata/lookup/rootfs-1/dev/nvidia-fs0",
    "content": ""
  },
  {
    "path": "testdata/lookup/rootfs-1/dev/nvidia-nvswitch0",
    "content": ""
  },
  {
    "path": "testdata/lookup/rootfs-1/dev/nvidia-nvswitchctl",
    "content": ""
  },
  {
    "path": "testdata/lookup/rootfs-1/dev/nvidia0",
    "content": ""
  },
  {
    "path": "testdata/lookup/rootfs-1/dev/nvidiactl",
    "content": ""
  },
  {
    "path": "testdata/lookup/rootfs-1/etc/cufile.json",
    "content": ""
  },
  {
    "path": "testdata/lookup/rootfs-1/lib/x86_64-linux-gnu/libcuda.so.999.88.77",
    "content": ""
  },
  {
    "path": "testdata/lookup/rootfs-1/lib/x86_64-linux-gnu/vdpau/libvdpau_nvidia.so.999.88.77",
    "content": ""
  },
  {
    "path": "testdata/lookup/rootfs-1/run/udev/.gitkeep",
    "content": ""
  },
  {
    "path": "testdata/lookup/rootfs-2/README.md",
    "content": "This rootfs represents a host with the CUDA driver libraries installed in\n/var/lib/nvidia/lib64. The included /etc/ld.so.cache was generated in a container\nsimulating such as system."
  },
  {
    "path": "testdata/lookup/rootfs-2/var/lib/nvidia/lib64/libcuda.so.999.88.77",
    "content": ""
  },
  {
    "path": "testdata/lookup/rootfs-drm/dev/dri/card0",
    "content": ""
  },
  {
    "path": "testdata/lookup/rootfs-drm/dev/dri/renderD128",
    "content": ""
  },
  {
    "path": "testdata/lookup/rootfs-empty/README.md",
    "content": "The folders represents an empty rootfs.\n"
  },
  {
    "path": "testdata/lookup/rootfs-no-cache-lib64/usr/lib64/libcuda.so.999.88.77",
    "content": ""
  },
  {
    "path": "testdata/lookup/rootfs-orin/dev/nvidia0",
    "content": ""
  },
  {
    "path": "testdata/lookup/rootfs-orin/etc/nvidia-container-runtime/host-files-for-container.d/devices.csv",
    "content": "dev, /dev/dri/card*\ndev, /dev/dri/renderD*\ndir, /dev/dri/by-path\ndev, /dev/fb0\ndev, /dev/fb1\ndev, /dev/host1x-fence\ndev, /dev/nvhost-as-gpu\ndev, /dev/nvhost-ctrl-gpu\ndev, /dev/nvhost-ctrl-nvdla0\ndev, /dev/nvhost-ctrl-nvdla1\ndev, /dev/nvhost-ctrl-pva0\ndev, /dev/nvhost-ctxsw-gpu\ndev, /dev/nvhost-dbg-gpu\ndev, /dev/nvhost-gpu\ndev, /dev/nvhost-nvsched-gpu\ndev, /dev/nvhost-power-gpu\ndev, /dev/nvhost-prof-ctx-gpu\ndev, /dev/nvhost-prof-dev-gpu\ndev, /dev/nvhost-prof-gpu\ndev, /dev/nvhost-sched-gpu\ndev, /dev/nvhost-tsg-gpu\ndev, /dev/nvgpu/igpu0/as\ndev, /dev/nvgpu/igpu0/channel\ndev, /dev/nvgpu/igpu0/ctrl\ndev, /dev/nvgpu/igpu0/ctxsw\ndev, /dev/nvgpu/igpu0/dbg\ndev, /dev/nvgpu/igpu0/nvsched\ndev, /dev/nvgpu/igpu0/power\ndev, /dev/nvgpu/igpu0/prof\ndev, /dev/nvgpu/igpu0/prof-ctx\ndev, /dev/nvgpu/igpu0/prof-dev\ndev, /dev/nvgpu/igpu0/sched\ndev, /dev/nvgpu/igpu0/tsg\ndev, /dev/nvidia-modeset\ndev, /dev/nvidia0\ndev, /dev/nvidiactl\ndev, /dev/nvmap\ndev, /dev/nvsciipc\ndev, /dev/v4l2-nvdec\ndev, /dev/v4l2-nvenc\n"
  },
  {
    "path": "testdata/lookup/rootfs-orin/etc/nvidia-container-runtime/host-files-for-container.d/drivers.csv",
    "content": "lib, /usr/lib/aarch64-linux-gnu/libv4l2.so.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/desktop-shell.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/drm-backend.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/EGLWLInputEventExample\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/EGLWLMockNavigation\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/fullscreen-shell.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/gl-renderer.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/hmi-controller.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/ivi-controller.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/ivi-shell.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/LayerManagerControl\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/libilmClient.so.2.2.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/libilmCommon.so.2.2.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/libilmControl.so.2.2.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/libilmInput.so.2.2.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/libweston-6.so.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/libweston-desktop-6.so.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/simple-weston-client\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/spring-tool\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/wayland-backend.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston-calibrator\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston-clickdot\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston-cliptest\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston-content-protection\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston-debug\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston-desktop-shell\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston-dnd\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston-eventdemo\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston-flower\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston-fullscreen\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston-image\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston-info\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston-ivi-shell-user-interface\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston-keyboard\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston-launch\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston-multi-resource\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston-output-mode\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston-resizor\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston-scaler\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston-screenshooter\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston-simple-dmabuf-egldevice\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston-simple-egl\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston-simple-pattern-hdr\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston-simple-shm\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston-simple-touch\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston-smoke\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston-stacking\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston-subsurfaces\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston-terminal\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston/weston-transformed\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvarguscamerasrc.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvcompositor.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvdrmvideosink.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnveglglessink.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnveglstreamsrc.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvegltransform.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvipcpipeline.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvivafilter.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvjpeg.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvtee.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvv4l2camerasrc.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvvidconv.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvvideo4linux2.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvvideosink.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvvideosinks.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/nvgstcapture-1.0_README.txt\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/nvgstipctestapp-1.0_README.txt\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/nvgstplayer-1.0_README.txt\nlib, /usr/lib/aarch64-linux-gnu/libgstnvegl-1.0.so.0\nlib, /usr/lib/aarch64-linux-gnu/libgstnvexifmeta.so\nlib, /usr/lib/aarch64-linux-gnu/libgstnvivameta.so\nlib, /usr/lib/aarch64-linux-gnu/libnvsample_cudaprocess.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libgstnvcustomhelper.so.1.0.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libgstnvdsseimeta.so.1.0.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnveglstreamproducer.so\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libgstnvcustomhelper.so\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libgstnvdsseimeta.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvdla_compiler.so\nlib, /etc/vulkansc/icd.d/nvidia_icd_vksc.json\nlib, /usr/lib/aarch64-linux-gnu/nvidia/ld.so.conf\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libcuda.so.1.1\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libGLX_nvidia.so.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libjetsonpower.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvargus.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvargus_socketclient.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvargus_socketserver.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvbuf_fdmap.so.1.0.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvbufsurface.so.1.0.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvbufsurftransform.so.1.0.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvcameratools.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvcamerautils.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvcam_imageencoder.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvcamlog.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvcamv4l2.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvcapture.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvcolorutil.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvcucompat.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvcudla.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvcuvidv4l2.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvdc.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvddk_2d_v2.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvddk_vic.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvdecode2eglimage.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvdla_runtime.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvdsbufferpool.so.1.0.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnveventlib.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvexif.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvfnet.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvfnetstoredefog.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvfnetstorehdfx.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvfusacapinterface.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvfusacap.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvgov_boot.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvgov_camera.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvgov_force.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvgov_generic.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvgov_gpucompute.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvgov_graphics.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvgov_il.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvgov_spincircle.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvgov_tbc.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvgov_ui.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-allocator.so.1\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-eglcore.so.540.3.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-egl-gbm.so.1.1.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-egl-wayland.so.1.1.11\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-glcore.so.540.3.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-glsi.so.540.3.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-glvkspirv.so.540.3.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-gpucomp.so.540.3.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-kms.so.540.3.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-ml.so.1\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-nvvm.so.540.3.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-ptxjitcompiler.so.540.3.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-rmapi-tegra.so.540.3.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-rtcore.so.540.3.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-tls.so.540.3.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-vksc-core.so.540.3.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvid_mapper.so.1.0.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvimp.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvisppg.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvisp.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvisp_utils.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvjpeg.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmedia_2d.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmedia2d.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmedia_dla.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmedia_eglstream.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmedia_ide_parser.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmedia_ide_sci.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmedia_iep_sci.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmedia_ijpd_sci.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmedia_ijpe_sci.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmedia_iofa_sci.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmedia_isp_ext.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmedialdc.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmedia.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmedia_tensor.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmm_contentpipe.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmmlite_image.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmmlite.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmmlite_utils.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmmlite_video.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmm_parser.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmm.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmm_utils.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvodm_imager.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvofsdk.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvoggopus.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvomxilclient.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvomx.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvosd.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvos.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvparser.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvphsd.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvphs.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvplayfair.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvpva_algorithms.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvpvaintf.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvpva.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvpvaumd.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvrm_chip.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvrm_gpu.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvrm_host1x.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvrm_mem.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvrm_stream.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvrm_surface.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvrm_sync.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvscf.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvscibuf.so.1\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvscicommon.so.1\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvscievent.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvsciipc.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvscistream.so.1\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvscisync.so.1\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvsocsys.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvtegrahv.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvtracebuf.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvtvmr_2d.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvtvmr.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvv4l2.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvv4lconvert.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvvic.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvvideoencode_ppe.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvvideo.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libsensors.hal-client.nvs.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libsensors_hal.nvs.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libsensors.l4t.no_fusion.nvs.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libtegrav4l2.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libtegrawfd.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libv4l2_nvargus.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libv4l2_nvcuvidvideocodec.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libv4l2_nvvideocodec.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libVkLayer_json_gen.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libVkSCLayer_khronos_validation.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libvulkansc.so.1.0.10\nlib, /usr/lib/aarch64-linux-gnu/nvidia/nvidia_icd.json\nlib, /usr/lib/aarch64-linux-gnu/tegra-egl/ld.so.conf\nlib, /usr/lib/aarch64-linux-gnu/tegra-egl/libEGL_nvidia.so.0\nlib, /usr/lib/aarch64-linux-gnu/tegra-egl/libGLESv1_CM_nvidia.so.1\nlib, /usr/lib/aarch64-linux-gnu/tegra-egl/libGLESv2_nvidia.so.2\nlib, /usr/lib/aarch64-linux-gnu/tegra-egl/nvidia.json\nsym, /etc/vulkan/icd.d/nvidia_icd.json\nsym, /usr/lib/aarch64-linux-gnu/gbm/nvidia-drm_gbm.so\nsym, /usr/lib/aarch64-linux-gnu/gbm/tegra_gbm.so\nsym, /usr/lib/aarch64-linux-gnu/gbm/tegra-udrm_gbm.so\nsym, /usr/lib/aarch64-linux-gnu/libcuda.so\nsym, /usr/lib/aarch64-linux-gnu/libnvcucompat.so\nsym, /usr/lib/aarch64-linux-gnu/libnvcudla.so\nsym, /usr/lib/aarch64-linux-gnu/libv4l2.so.0.0.999999\nsym, /usr/lib/aarch64-linux-gnu/libv4lconvert.so.0.0.999999\nsym, /usr/lib/aarch64-linux-gnu/libv4l/plugins/nv/libv4l2_nvargus.so\nsym, /usr/lib/aarch64-linux-gnu/libv4l/plugins/nv/libv4l2_nvcuvidvideocodec.so\nsym, /usr/lib/aarch64-linux-gnu/libv4l/plugins/nv/libv4l2_nvvideocodec.so\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libcuda.so\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libcuda.so.1\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libnvbufsurface.so\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libnvbufsurftransform.so\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libnvdsbufferpool.so\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-allocator.so\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-egl-gbm.so.1\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-egl-wayland.so.1\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-kms.so\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-nvvm.so.4\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-ptxjitcompiler.so.1\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-vksc-core.so\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-vksc-core.so.1\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libnvid_mapper.so\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libnvscibuf.so\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libnvscicommon.so\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libnvscistream.so\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libnvscisync.so\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libv4l2.so.0\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libv4lconvert.so.0\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libvulkansc.so\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libvulkansc.so.1\nsym, /usr/lib/aarch64-linux-gnu/tegra\nsym, /usr/share/glvnd/egl_vendor.d/10_nvidia.json\nlib, //lib/firmware/tegra19x/nvhost_nvdec040_ns.fw\nlib, /lib/firmware/tegra19x/nvhost_nvdec040_ns.fw\nlib, /lib/firmware/tegra23x/nvhost_nvdec050_desc_prod.bin\nlib, /usr/sbin/nvidia-smi\nlib, /usr/share/doc/nvidia-tegra/LICENSE.nvidia-smi\n"
  },
  {
    "path": "testdata/lookup/rootfs-orin/usr/lib/aarch64-linux-gnu/nvidia/libcuda.so.1.1",
    "content": ""
  },
  {
    "path": "testdata/lookup/rootfs-orin/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-ml.so.1",
    "content": ""
  },
  {
    "path": "testdata/lookup/rootfs-split/dev-root/dev/gdrdrv",
    "content": ""
  },
  {
    "path": "testdata/lookup/rootfs-split/dev-root/dev/nvidia-caps/nvidia-cap1",
    "content": ""
  },
  {
    "path": "testdata/lookup/rootfs-split/dev-root/dev/nvidia-caps-imex-channels/channel0",
    "content": ""
  },
  {
    "path": "testdata/lookup/rootfs-split/dev-root/dev/nvidia-caps-imex-channels/channel1",
    "content": ""
  },
  {
    "path": "testdata/lookup/rootfs-split/dev-root/dev/nvidia-caps-imex-channels/channel2047",
    "content": ""
  },
  {
    "path": "testdata/lookup/rootfs-split/dev-root/dev/nvidia-fs0",
    "content": ""
  },
  {
    "path": "testdata/lookup/rootfs-split/dev-root/dev/nvidia0",
    "content": ""
  },
  {
    "path": "testdata/lookup/rootfs-split/dev-root/dev/nvidiactl",
    "content": ""
  },
  {
    "path": "testdata/lookup/rootfs-split/driver-root/etc/cufile.json",
    "content": ""
  },
  {
    "path": "testdata/lookup/rootfs-split/driver-root/lib/x86_64-linux-gnu/libcuda.so.1",
    "content": ""
  },
  {
    "path": "testdata/lookup/rootfs-split/driver-root/lib/x86_64-linux-gnu/libcuda.so.999.88.77",
    "content": ""
  },
  {
    "path": "testdata/lookup/rootfs-split/driver-root/lib/x86_64-linux-gnu/vdpau/libvdpau_nvidia.so.999.88.77",
    "content": ""
  },
  {
    "path": "testdata/lookup/rootfs-split/driver-root/run/udev/.gitkeep",
    "content": ""
  },
  {
    "path": "testdata/lookup/rootfs-thor-dgpu/dev/nvidia0",
    "content": ""
  },
  {
    "path": "testdata/lookup/rootfs-thor-dgpu/dev/nvidia1",
    "content": ""
  },
  {
    "path": "testdata/lookup/rootfs-thor-dgpu/dev/nvidia2",
    "content": ""
  },
  {
    "path": "testdata/lookup/rootfs-thor-dgpu/dev/nvidiactl",
    "content": ""
  },
  {
    "path": "testdata/lookup/rootfs-thor-dgpu/dev/nvmap",
    "content": "{\n    \"file_mode\": 256,\n    \"gid\": 44\n}"
  },
  {
    "path": "testdata/lookup/rootfs-thor-dgpu/etc/nvidia-container-runtime/host-files-for-container.d/devices.csv",
    "content": "dev, /dev/dri/card*\ndev, /dev/dri/renderD*\ndir, /dev/dri/by-path\ndev, /dev/fb0\ndev, /dev/fb1\ndev, /dev/host1x-fence\ndev, /dev/nvhost-as-gpu\ndev, /dev/nvhost-ctrl-gpu\ndev, /dev/nvhost-ctrl-nvdla0\ndev, /dev/nvhost-ctrl-nvdla1\ndev, /dev/nvhost-ctrl-pva0\ndev, /dev/nvhost-ctxsw-gpu\ndev, /dev/nvhost-dbg-gpu\ndev, /dev/nvhost-gpu\ndev, /dev/nvhost-nvsched-gpu\ndev, /dev/nvhost-power-gpu\ndev, /dev/nvhost-prof-ctx-gpu\ndev, /dev/nvhost-prof-dev-gpu\ndev, /dev/nvhost-prof-gpu\ndev, /dev/nvhost-sched-gpu\ndev, /dev/nvhost-tsg-gpu\ndev, /dev/nvgpu/igpu0/as\ndev, /dev/nvgpu/igpu0/channel\ndev, /dev/nvgpu/igpu0/ctrl\ndev, /dev/nvgpu/igpu0/ctxsw\ndev, /dev/nvgpu/igpu0/dbg\ndev, /dev/nvgpu/igpu0/nvsched\ndev, /dev/nvgpu/igpu0/power\ndev, /dev/nvgpu/igpu0/prof\ndev, /dev/nvgpu/igpu0/prof-ctx\ndev, /dev/nvgpu/igpu0/prof-dev\ndev, /dev/nvgpu/igpu0/sched\ndev, /dev/nvgpu/igpu0/tsg\ndev, /dev/nvidia-modeset\ndev, /dev/nvidia0\ndev, /dev/nvidia1\ndev, /dev/nvidiactl\ndev, /dev/nvmap\ndev, /dev/nvsciipc\ndev, /dev/v4l2-nvdec\ndev, /dev/v4l2-nvenc\n"
  },
  {
    "path": "testdata/lookup/rootfs-thor-dgpu/etc/nvidia-container-runtime/host-files-for-container.d/drivers.csv",
    "content": "lib, /usr/lib/aarch64-linux-gnu/libv4l2.so.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/color-lcms.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/desktop-shell.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/drm-backend.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/EGLWLInputEventExample\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/EGLWLMockNavigation\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/fullscreen-shell.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/gl-renderer.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/headless-backend.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/hmi-controller.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/ivi-controller.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/ivi-shell.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/LayerManagerControl\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/libilmClient.so.2.3.2\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/libilmCommon.so.2.3.2\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/libilmControl.so.2.3.2\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/libilmInput.so.2.3.2\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/libweston-13.so.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/simple-weston-client\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/spring-tool\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/wayland-backend.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-calibrator\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-clickdot\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-cliptest\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-content-protection\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-debug\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-desktop-shell\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-dnd\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-eventdemo\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-flower\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-fullscreen\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-image\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-ivi-shell-user-interface\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-keyboard\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-multi-resource\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-output-mode\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-presentation-shm\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-resizor\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-scaler\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-screenshooter\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-simple-damage\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-simple-dmabuf-egl\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-simple-dmabuf-egldevice\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-simple-dmabuf-feedback\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-simple-egl\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-simple-im\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-simple-shm\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-simple-touch\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-smoke\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-stacking\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-subsurfaces\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-tablet\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-terminal\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-touch-calibrator\nlib, /usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-transformed\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvarguscamerasrc.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvcompositor.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvdrmvideosink.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnveglglessink.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnveglstreamsrc.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvegltransform.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvipcpipeline.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvivafilter.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvjpeg.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvsiplsrc.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvtee.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvunixfd.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvv4l2camerasrc.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvvidconv.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvvideo4linux2.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvvideosink.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvvideosinks.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/nvgstcapture-1.0_README.txt\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/nvgstipctestapp-1.0_README.txt\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/nvgstplayer-1.0_README.txt\nlib, /usr/lib/aarch64-linux-gnu/libgstnvegl-1.0.so.0\nlib, /usr/lib/aarch64-linux-gnu/libgstnvexifmeta.so\nlib, /usr/lib/aarch64-linux-gnu/libgstnvivameta.so\nlib, /usr/lib/aarch64-linux-gnu/libnvsample_cudaprocess.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libgstnvcustomhelper.so.1.0.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libgstnvdsseimeta.so.1.0.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnveglstreamproducer.so\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libgstnvcustomhelper.so\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libgstnvdsseimeta.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvdla_compiler.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvcuvid.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-encode.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-opticalflow.so\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libnvcuvid.so.1\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-encode.so.1\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-opticalflow.so.1\nlib, /etc/vulkansc/icd.d/nvidia_icd_vksc.json\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libcuda_instrumentation.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libcuda.so.1.1\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libdrm.so.2\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libGLX_nvidia.so.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libgnarl-24.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libgnat-24.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libjetsonpower.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvargus.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvargus_socketclient.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvargus_socketserver.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvbuf_fdmap.so.1.0.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvbufsurface_nvsci.so.1.0.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvbufsurface.so.1.0.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvbufsurftransform.so.1.0.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvcamerahal.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvcameratools.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvcamerautils.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvcam_imageencoder.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvcamlog.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvcamv4l2.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvcapture.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvcolorutil.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvcucompat.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvcudla.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvcuextend.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvdc.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvddk_2d_v2.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvddk_vic.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvdecode2eglimage.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvdla_runtime.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvdsbufferpool.so.1.0.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnveventlib.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvexif.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvfnet.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvfnetstoredefog.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvfnetstorehdfx.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvfusacapinterface.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvfusacap.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-allocator.so.1\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-eglcore.so.580.00\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-egl-gbm.so.1.1.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-egl-wayland.so.1.1.11\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-egl-xcb.so.1\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-egl-xlib.so.1\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-glcore.so.580.00\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-glsi.so.580.00\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-glvkspirv.so.580.00\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-gpucomp.so.580.00\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-kms.so.580.00\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-ml.so.1\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-nvvm70.so.580.00\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-nvvm.so.580.00\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-ptxjitcompiler.so.580.00\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-rmapi-tegra.so.580.00\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-rtcore.so.580.00\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-tls.so.580.00\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvid_mapper.so.1.0.0\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvimp.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvisppg.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvisp.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvisp_utils.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvll.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmedia_2d.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmedia2d.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmedia_dla.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmedia_eglstream.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmedia_ide_parser.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmedia_ide_sci.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmedia_iep_sci.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmedia_ijpd_sci.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmedia_ijpe_sci.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmedia_iofa_sci.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmedia_isp_ext.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmedialdc.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmedia.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmedia_tensor.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmm_contentpipe.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmm_jpeg.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmmlite_image.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmmlite.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmmlite_utils.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmmlite_video.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmm_parser.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmm.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvmm_utils.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvodm_imager.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvoggopus.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvomxilclient.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvomx.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvosd.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvos.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvparser.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvplayfair.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvpva_algorithms.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvpvaintf.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvpva.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvpvaumd_core.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvpvaumd_cuda.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvrm_chip.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvrm_gpu.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvrm_host1x.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvrm_mem.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvrm_stream.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvrm_surface.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvrm_sync.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvscf.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvscibuf.so.1\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvscicommon.so.1\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvscievent.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvsciipc.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvscistream.so.1\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvscisync.so.1\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvsipl_control.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvsipl_devblk_cdi.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvsipl_devblk_crypto.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvsipl_devblk_ddi.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvsipl_devblk.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvsipl_pipeline.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvsipl_query.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvsipl.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvsocsys.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvtegrahv.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvtracebuf.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvtvmr_2d.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvtvmr.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvv4l2.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvv4lconvert.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvvic.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvvideoencode_ppe.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvvideo.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libtegrawfd.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libv4l2_nvargus.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libVkLayer_json_gen.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libVkSCLayer_khronos_validation.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libvulkansc.so.1.0.10\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libvulkan.so.1.4.321\nlib, /usr/lib/aarch64-linux-gnu/nvidia/nvidia_icd.json\nlib, /usr/lib/aarch64-linux-gnu/tegra-egl/libEGL_nvidia.so.0\nlib, /usr/lib/aarch64-linux-gnu/tegra-egl/libGLESv1_CM_nvidia.so.1\nlib, /usr/lib/aarch64-linux-gnu/tegra-egl/libGLESv2_nvidia.so.2\nlib, /usr/lib/aarch64-linux-gnu/tegra-egl/nvidia.json\nlib, /usr/lib/nvsipl_drv/libnvsipl_qry_vb1940.so\nlib, /usr/lib/nvsipl_uddf/libnvuddf_eagle_library.so\nsym, /etc/vulkan/icd.d/nvidia_icd.json\nsym, /usr/lib/aarch64-linux-gnu/gbm/nvidia-drm_gbm.so\nsym, /usr/lib/aarch64-linux-gnu/gbm/tegra_gbm.so\nsym, /usr/lib/aarch64-linux-gnu/libcuda_instrumentation.so\nsym, /usr/lib/aarch64-linux-gnu/libcuda.so\nsym, /usr/lib/aarch64-linux-gnu/libnvcucompat.so\nsym, /usr/lib/aarch64-linux-gnu/libnvcudla.so\nsym, /usr/lib/aarch64-linux-gnu/libnvcuextend.so\nsym, /usr/lib/aarch64-linux-gnu/libv4l2.so.0.0.999999\nsym, /usr/lib/aarch64-linux-gnu/libv4lconvert.so.0.0.999999\nsym, /usr/lib/aarch64-linux-gnu/libv4l/plugins/nv/libv4l2_nvargus.so\nsym, /usr/lib/aarch64-linux-gnu/libvulkan.so.1.4.321\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libcuda_instrumentation.so.1\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libcuda.so\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libcuda.so.1\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libgnarl.so\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libgnat.so\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libnvbufsurface_nvsci.so\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libnvbufsurface.so\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libnvbufsurftransform.so\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libnvdsbufferpool.so\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-allocator.so\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-egl-gbm.so.1\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-egl-wayland.so.1\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-kms.so\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-nvvm70.so.4\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-nvvm.so.4\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libnvidia-ptxjitcompiler.so.1\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libnvid_mapper.so\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libnvscibuf.so\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libnvscicommon.so\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libnvscistream.so\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libnvscisync.so\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libv4l2.so.0\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libv4lconvert.so.0\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libvulkansc.so\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libvulkansc.so.1\nsym, /usr/lib/aarch64-linux-gnu/nvidia/libvulkan.so.1\nsym, /usr/lib/aarch64-linux-gnu/tegra\nsym, /usr/share/glvnd/egl_vendor.d/10_nvidia.json\nlib, /lib/firmware/tegra23x/nvhost_nvdec050_desc_prod.bin\nlib, /usr/bin/nvidia-cuda-mps-control\nlib, /usr/bin/nvidia-cuda-mps-server\nlib, /usr/sbin/nvidia-smi\nlib, /usr/share/doc/package_name/LICENSE.nvidia-cuda-mps-control\nlib, /usr/share/doc/package_name/LICENSE.nvidia-cuda-mps-server\nlib, /usr/share/doc/package_name/LICENSE.nvidia-smi\nlib, /var/nvidia/nvcam/settings/ar0234.nito\nlib, /var/nvidia/nvcam/settings/e3333.nito\nlib, /var/nvidia/nvcam/settings/imx185.nito\nlib, /var/nvidia/nvcam/settings/imx219.nito\nlib, /var/nvidia/nvcam/settings/imx274_li.nito\nlib, /var/nvidia/nvcam/settings/imx477.nito\nlib, /var/nvidia/nvcam/settings/sipl/vb1940.nito\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libnvcuvidv4l2.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libv4l2_nvcuvidvideocodec.so\nsym, /usr/lib/aarch64-linux-gnu/libv4l/plugins/nv/libv4l2_nvcuvidvideocodec.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libtegrav4l2.so\nlib, /usr/lib/aarch64-linux-gnu/nvidia/libv4l2_nvvideocodec.so\nsym, /usr/lib/aarch64-linux-gnu/libv4l/plugins/nv/libv4l2_nvvideocodec.so\n"
  },
  {
    "path": "testdata/lookup/rootfs-with-nvswitch/dev/nvidia-nvswitch0",
    "content": ""
  },
  {
    "path": "testdata/lookup/rootfs-with-nvswitch/dev/nvidia-nvswitch1",
    "content": ""
  },
  {
    "path": "testdata/lookup/rootfs-with-nvswitch/dev/nvidia-nvswitchctl",
    "content": ""
  },
  {
    "path": "tests/bin/nvidia-container-runtime-hook",
    "content": "#!/bin/bash\necho mock hook\n"
  },
  {
    "path": "tests/bin/runc",
    "content": "#!/bin/bash\necho mock runc\n"
  },
  {
    "path": "tests/container/common.sh",
    "content": "#! /bin/bash\n# Copyright (c) 2019-2021, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nreadonly CRIO_HOOKS_DIR=\"/usr/share/containers/oci/hooks.d\"\nreadonly CRIO_HOOK_FILENAME=\"oci-nvidia-hook.json\"\n\n# shellcheck disable=SC2015\n[ -t 2 ] && readonly LOG_TTY=1 || readonly LOG_NO_TTY=1\n\nif [ \"${LOG_TTY-0}\" -eq 1 ] && [ \"$(tput colors)\" -ge 15 ]; then\n\treadonly FMT_BOLD=$(tput bold)\n\treadonly FMT_RED=$(tput setaf 1)\n\treadonly FMT_YELLOW=$(tput setaf 3)\n\treadonly FMT_BLUE=$(tput setaf 12)\n\treadonly FMT_CLEAR=$(tput sgr0)\nfi\n\nlog() {\n\tlocal -r level=\"$1\"; shift\n\tlocal -r message=\"$*\"\n\n\tlocal fmt_on=\"${FMT_CLEAR-}\"\n\tlocal -r fmt_off=\"${FMT_CLEAR-}\"\n\n\tcase \"${level}\" in\n\t\tINFO)  fmt_on=\"${FMT_BLUE-}\" ;;\n\t\tWARN)  fmt_on=\"${FMT_YELLOW-}\" ;;\n\t\tERROR) fmt_on=\"${FMT_RED-}\" ;;\n\tesac\n\tprintf \"%s[%s]%s %b\\n\" \"${fmt_on}\" \"${level}\" \"${fmt_off}\" \"${message}\" >&2\n}\n\nwith_retry() {\n\tlocal max_attempts=\"$1\"\n\tlocal delay=\"$2\"\n\tlocal count=0\n\tlocal rc\n\tshift 2\n\n\twhile true; do\n\t\tset +e\n\t\t\"$@\"; rc=\"$?\"\n\t\tset -e\n\n\t\tcount=\"$((count+1))\"\n\n\t\tif [[ \"${rc}\" -eq 0 ]]; then\n\t\t\treturn 0\n\t\tfi\n\n\t\tif [[ \"${max_attempts}\" -le 0 ]] || [[ \"${count}\" -lt \"${max_attempts}\" ]]; then\n\t\t\tsleep \"${delay}\"\n\t\telse\n\t\t\tbreak\n\t\tfi\n\tdone\n\n\treturn 1\n}\n\ntesting::setup() {\n\tcp -Rp ${basedir}/shared ${shared_dir}\n\tmkdir -p \"${shared_dir}/etc/containerd\"\n\tmkdir -p \"${shared_dir}/etc/docker\"\n\tmkdir -p \"${shared_dir}/run/docker/containerd\"\n\tmkdir -p \"${shared_dir}/run/nvidia\"\n\tmkdir -p \"${shared_dir}/usr/local/nvidia\"\n\tmkdir -p \"${shared_dir}${CRIO_HOOKS_DIR}\"\n}\n\ntesting::cleanup() {\n\tif [[ \"${CLEANUP}\" == \"false\" ]]; then\n\t\techo \"Skipping cleanup: CLEANUP=${CLEANUP}\"\n\t\treturn 0\n\tfi\n\tif [[ -e \"${shared_dir}\" ]]; then\n\t\tdocker run --rm \\\n\t\t\t-v \"${shared_dir}:/work\" \\\n\t\t\talpine sh -c 'rm -rf /work/*'\n\t\trmdir \"${shared_dir}\"\n\tfi\n\n\tif [[ \"${test_cases:-\"\"}\" == \"\" ]]; then\n\t\techo \"No test cases defined. Skipping test case cleanup\"\n\t\treturn 0\n\tfi\n\n\tfor tc in ${test_cases}; do\n\t\ttesting::${tc}::cleanup\n\tdone\n}\n\ntesting::docker_run::toolkit::shell() {\n\tdocker run --rm --privileged \\\n\t\t--entrypoint sh \\\n\t\t-v \"${shared_dir}/etc/containerd:/etc/containerd\" \\\n\t\t-v \"${shared_dir}/etc/docker:/etc/docker\" \\\n\t\t-v \"${shared_dir}/run/docker/containerd:/run/docker/containerd\" \\\n\t\t-v \"${shared_dir}/run/nvidia:/run/nvidia\" \\\n\t\t-v \"${shared_dir}/usr/local/nvidia:/usr/local/nvidia\" \\\n\t\t-v \"${shared_dir}${CRIO_HOOKS_DIR}:${CRIO_HOOKS_DIR}\" \\\n\t\t\"${toolkit_container_image}\" \"-c\" \"$*\"\n}\n\n\n"
  },
  {
    "path": "tests/container/containerd_test.sh",
    "content": "#! /bin/bash\n# Copyright (c) 2019, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nreadonly containerd_dind_ctr=\"container-config-containerd-dind-ctr-name\"\nreadonly containerd_test_ctr=\"container-config-containerd-test-ctr-name\"\nreadonly containerd_dind_socket=\"/run/nvidia/docker.sock\"\nreadonly containerd_dind_containerd_dir=\"/run/docker/containerd\"\n\ntesting::containerd::dind::setup() {\n\t# Docker creates /etc/docker when starting\n\t# by default there isn't any config in this directory (even after the daemon starts)\n\tdocker run -d --rm --privileged \\\n\t\t-v \"${shared_dir}/etc/docker:/etc/docker\" \\\n\t\t-v \"${shared_dir}/run/nvidia:/run/nvidia\" \\\n\t\t-v \"${shared_dir}/usr/local/nvidia:/usr/local/nvidia\" \\\n\t\t-v \"${shared_dir}/run/docker/containerd:/run/docker/containerd\" \\\n\t\t--name \"${containerd_dind_ctr}\" \\\n\t\tdocker:dind -H unix://${containerd_dind_socket}\n}\n\ntesting::containerd::dind::exec() {\n\tdocker exec \"${containerd_dind_ctr}\" sh -c \"$*\"\n}\n\ntesting::containerd::toolkit::run() {\n\tlocal version=${1}\n\n\t# We run ctr image list to ensure that containerd has successfully started in the docker-in-docker container\n\twith_retry 5 5s testing::containerd::dind::exec \" \\\n\t\tctr --address=${containerd_dind_containerd_dir}/containerd.sock image list -q\"\n\n\t# Ensure that we can run some non GPU containers from within dind\n\twith_retry 3 5s testing::containerd::dind::exec \" \\\n\t\tctr --address=${containerd_dind_containerd_dir}/containerd.sock image pull nvcr.io/nvidia/cuda:11.1.1-base-ubuntu20.04; \\\n\t\tctr --address=${containerd_dind_containerd_dir}/containerd.sock run --rm --runtime=io.containerd.runtime.v1.linux nvcr.io/nvidia/cuda:11.1.1-base-ubuntu20.04 cuda echo foo\"\n\n\t# Share the volumes so that we can edit the config file and point to the new runtime\n\t# Share the pid so that we can ask docker to reload its config\n\tdocker run --rm --privileged \\\n\t\t--volumes-from \"${containerd_dind_ctr}\" \\\n\t\t-v \"${shared_dir}/etc/containerd/config_${version}.toml:${containerd_dind_containerd_dir}/containerd.toml\" \\\n\t\t--pid \"container:${containerd_dind_ctr}\" \\\n\t\t-e RUNTIME=\"containerd\" \\\n\t\t-e RUNTIME_ARGS=\"--config=${containerd_dind_containerd_dir}/containerd.toml --socket=${containerd_dind_containerd_dir}/containerd.sock\" \\\n\t\t--name \"${containerd_test_ctr}\" \\\n\t\t\"${toolkit_container_image}\" \"/usr/local/nvidia\" \"--no-daemon\"\n\n\t# We run ctr image list to ensure that containerd has successfully started in the docker-in-docker container\n\twith_retry 5 5s testing::containerd::dind::exec \" \\\n\t\tctr --address=${containerd_dind_containerd_dir}/containerd.sock image list -q\"\n\n\t# Ensure that we haven't broken non GPU containers\n\twith_retry 3 5s testing::containerd::dind::exec \" \\\n\t\tctr --address=${containerd_dind_containerd_dir}/containerd.sock image pull nvcr.io/nvidia/cuda:11.1.1-base-ubuntu20.04; \\\n\t\tctr --address=${containerd_dind_containerd_dir}/containerd.sock run --rm --runtime=io.containerd.runtime.v1.linux nvcr.io/nvidia/cuda:11.1.1-base-ubuntu20.04 cuda echo foo\"\n}\n\n# This test runs containerd setup and containerd cleanup in succession to ensure that the\n# config is restored correctly.\ntesting::containerd::toolkit::test_config() {\n\tlocal version=${1}\n\n\t# We run ctr image list to ensure that containerd has successfully started in the docker-in-docker container\n\twith_retry 5 5s testing::containerd::dind::exec \" \\\n\t\tctr --address=${containerd_dind_containerd_dir}/containerd.sock image list -q\"\n\n\tlocal input_config=\"${shared_dir}/etc/containerd/config_${version}.toml\"\n\tlocal output_config=\"${shared_dir}/output/config_${version}.toml\"\n\tlocal output_dir=$(dirname ${output_config})\n\n\tmkdir -p ${output_dir}\n\tcp -p \"${input_config}\" \"${output_config}\"\n\n\tdocker run --rm --privileged \\\n\t\t--volumes-from \"${containerd_dind_ctr}\" \\\n\t\t-v \"${output_dir}:${output_dir}\" \\\n\t\t--name \"${containerd_test_ctr}\" \\\n\t\t--entrypoint sh \\\n\t\t\"${toolkit_container_image}\" -c \"containerd setup \\\n\t\t\t--config=${output_config} \\\n\t\t\t--socket=${containerd_dind_containerd_dir}/containerd.sock \\\n\t\t\t--restart-mode=none \\\n\t\t\t\t/usr/local/nvidia/toolkit\"\n\n\t# As a basic test we check that the config has changed\n\tdiff \"${input_config}\" \"${output_config}\" || test ${?} -ne 0\n\tgrep -q -E \"^version = \\d\" \"${output_config}\"\n\tgrep -q -E \"default_runtime_name = \\\"nvidia\\\"\" \"${output_config}\"\n\n\tdocker run --rm --privileged \\\n\t\t--volumes-from \"${containerd_dind_ctr}\" \\\n\t\t-v \"${output_dir}:${output_dir}\" \\\n\t\t--name \"${containerd_test_ctr}\" \\\n\t\t--entrypoint sh \\\n\t\t\"${toolkit_container_image}\" -c \"containerd cleanup \\\n\t\t\t\t\t--config=${output_config} \\\n\t\t\t--socket=${containerd_dind_containerd_dir}/containerd.sock \\\n\t\t\t--restart-mode=none \\\n\t\t\t\t/usr/local/nvidia/toolkit\"\n\n\tif [[ -s \"${input_config}\" ]]; then\n\t\t# Compare the input and output config. These should be the same.\n\t\tdiff \"${input_config}\" \"${output_config}\" || true\n\telse\n\t\t# If the input config is empty, the output should not exist.\n\t\ttest ! -e \"${output_config}\"\n\tfi\n}\n\ntesting::containerd::main() {\n\ttesting::containerd::dind::setup\n\n\ttesting::containerd::toolkit::test_config empty\n\ttesting::containerd::toolkit::test_config v1\n\ttesting::containerd::toolkit::test_config v2\n\n\ttesting::containerd::cleanup\n\n\ttesting::containerd::dind::setup\n\ttesting::containerd::toolkit::run empty\n\ttesting::containerd::cleanup\n\n\ttesting::containerd::dind::setup\n\ttesting::containerd::toolkit::run v1\n\ttesting::containerd::cleanup\n\n\ttesting::containerd::dind::setup\n\ttesting::containerd::toolkit::run v2\n\ttesting::containerd::cleanup\n}\n\ntesting::containerd::cleanup() {\n\tdocker kill \"${containerd_dind_ctr}\" &> /dev/null || true\n\tdocker kill \"${containerd_test_ctr}\" &> /dev/null || true\n}\n"
  },
  {
    "path": "tests/container/crio_test.sh",
    "content": "#! /bin/bash\n# Copyright (c) 2019, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\ntesting::crio::hook_created() {\n\ttesting::docker_run::toolkit::shell 'crio setup /run/nvidia/toolkit'\n\n\ttest ! -z \"$(ls -A \"${shared_dir}${CRIO_HOOKS_DIR}\")\"\n\n\tcat \"${shared_dir}${CRIO_HOOKS_DIR}/${CRIO_HOOK_FILENAME}\" | \\\n\t\tjq -r '.hook.path' | grep -q \"/run/nvidia/toolkit/\"\n\ttest $? -eq 0\n\tcat \"${shared_dir}${CRIO_HOOKS_DIR}/${CRIO_HOOK_FILENAME}\" | \\\n\t\tjq -r '.hook.env[0]' | grep -q \":/run/nvidia/toolkit\"\n\ttest $? -eq 0\n}\n\ntesting::crio::hook_cleanup() {\n\ttesting::docker_run::toolkit::shell 'crio cleanup --nvidia-runtime-dir /run/nvidia/toolkit/'\n\n\ttest -z \"$(ls -A \"${shared_dir}${CRIO_HOOKS_DIR}\")\"\n}\n\ntesting::crio::main() {\n\ttesting::crio::hook_created\n\ttesting::crio::hook_cleanup\n}\n\ntesting::crio::cleanup() {\n\t:\n}\n"
  },
  {
    "path": "tests/container/docker_test.sh",
    "content": "#! /bin/bash\n# Copyright (c) 2019, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nreadonly docker_dind_ctr=\"container-config-docker-dind-ctr-name\"\nreadonly docker_test_ctr=\"container-config-docker-test-ctr-name\"\nreadonly docker_dind_socket=\"/run/nvidia/docker.sock\"\n\ntesting::docker::dind::setup() {\n\t# Docker creates /etc/docker when starting\n\t# by default there isn't any config in this directory (even after the daemon starts)\n\tdocker run -d --rm --privileged \\\n\t\t-v \"${shared_dir}/etc/docker:/etc/docker\" \\\n\t\t-v \"${shared_dir}/run/nvidia:/run/nvidia\" \\\n\t\t-v \"${shared_dir}/usr/local/nvidia:/usr/local/nvidia\" \\\n\t\t--name \"${docker_dind_ctr}\" \\\n\t\tdocker:dind -H unix://${docker_dind_socket}\n}\n\ntesting::docker::dind::exec() {\n\tdocker exec \"${docker_dind_ctr}\" sh -c \"$*\"\n}\n\ntesting::docker::toolkit::run() {\n\t# Share the volumes so that we can edit the config file and point to the new runtime\n\t# Share the pid so that we can ask docker to reload its config\n\tdocker run -d --rm --privileged \\\n\t\t--volumes-from \"${docker_dind_ctr}\" \\\n\t\t--pid \"container:${docker_dind_ctr}\" \\\n\t\t-e RUNTIME_ARGS=\"--socket ${docker_dind_socket}\" \\\n\t\t--name \"${docker_test_ctr}\" \\\n\t\t\"${toolkit_container_image}\" \"/usr/local/nvidia\" \"--no-daemon\"\n\n\t# Ensure that we haven't broken non GPU containers\n\twith_retry 3 5s testing::docker::dind::exec docker run -t alpine echo foo\n}\n\ntesting::docker::main() {\n\ttesting::docker::dind::setup\n\ttesting::docker::toolkit::run\n}\n\ntesting::docker::cleanup() {\n\tdocker kill \"${docker_dind_ctr}\" &> /dev/null || true\n\tdocker kill \"${docker_test_ctr}\" &> /dev/null || true\n}\n"
  },
  {
    "path": "tests/container/main.sh",
    "content": "#! /bin/bash\n# Copyright (c) 2019, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nset -eEuo pipefail\nshopt -s lastpipe\n\nreadonly basedir=\"$(dirname \"$(realpath \"$0\")\")\"\nsource \"${basedir}/common.sh\"\n\nsource \"${basedir}/docker_test.sh\"\nsource \"${basedir}/crio_test.sh\"\nsource \"${basedir}/containerd_test.sh\"\n\n: ${CLEANUP:=true}\n\nusage() {\n\tcat >&2 <<EOF\nUsage: $0 COMMAND [ARG...]\n\nCommands:\n  run SHARED_DIR TOOLKIT_CONTAINER_IMAGE [-c | --no-cleanup-on-error ]\n  clean SHARED_DIR\nEOF\n}\n\nif [ $# -lt 2 ]; then usage; exit 1; fi\n\n# We defined shared_dir here so that it can be used in cleanup\nreadonly command=${1}; shift\nreadonly shared_dir=\"${1}\"; shift;\n\ncase \"${command}\" in\n\tclean) testing::cleanup; exit 0;;\n\trun) ;;\n\t*) usage; exit 0;;\nesac\n\nif [ $# -eq 0 ]; then usage; exit 1; fi\n\nreadonly toolkit_container_image=\"${1}\"; shift\n\noptions=$(getopt -l no-cleanup-on-error -o c -- \"$@\")\nif [[ \"$?\" -ne 0 ]]; then usage; exit 1; fi\n\n# set options to positional parameters\neval set -- \"${options}\"\nfor opt in ${options}; do\n\tcase \"${opt}\" in\n\tc | --no-cleanup-on-error) CLEANUP=false; shift;;\n\t--) shift; break;;\n\tesac\ndone\n\ntrap '\"$CLEANUP\" && testing::cleanup' ERR\n\nreadonly test_cases=\"${TEST_CASES:-docker crio containerd}\"\n\ntesting::cleanup\nfor tc in ${test_cases}; do\n\tlog INFO \"=================Testing ${tc}=================\"\n\ttesting::setup\n\ttesting::${tc}::main \"$@\"\n\ttesting::cleanup\ndone\n"
  },
  {
    "path": "tests/container/shared/etc/containerd/config_empty.toml",
    "content": ""
  },
  {
    "path": "tests/container/shared/etc/containerd/config_v1.toml",
    "content": "oom_score = 0\nroot = \"/var/lib/containerd\"\nstate = \"/run/containerd\"\n\n[cgroup]\n  path = \"\"\n\n[debug]\n  address = \"/var/run/docker/containerd/containerd-debug.sock\"\n  gid = 0\n  level = \"\"\n  uid = 0\n\n[grpc]\n  address = \"/var/run/docker/containerd/containerd.sock\"\n  gid = 0\n  max_recv_message_size = 16777216\n  max_send_message_size = 16777216\n  uid = 0\n\n[metrics]\n  address = \"\"\n  grpc_histogram = false\n\n[plugins]\n\n  [plugins.cgroups]\n    no_prometheus = false\n\n  [plugins.cri]\n    disable_proc_mount = false\n    enable_selinux = false\n    enable_tls_streaming = false\n    max_container_log_line_size = 16384\n    sandbox_image = \"k8s.gcr.io/pause:3.1\"\n    stats_collect_period = 10\n    stream_server_address = \"127.0.0.1\"\n    stream_server_port = \"0\"\n    systemd_cgroup = false\n\n    [plugins.cri.cni]\n      bin_dir = \"/opt/cni/bin\"\n      conf_dir = \"/etc/cni/net.d\"\n      conf_template = \"\"\n\n    [plugins.cri.containerd]\n      no_pivot = false\n      snapshotter = \"overlayfs\"\n\n      [plugins.cri.containerd.default_runtime]\n        runtime_engine = \"\"\n        runtime_root = \"\"\n        runtime_type = \"io.containerd.runtime.v1.linux\"\n\n      [plugins.cri.containerd.untrusted_workload_runtime]\n        runtime_engine = \"\"\n        runtime_root = \"\"\n        runtime_type = \"\"\n\n    [plugins.cri.registry]\n\n      [plugins.cri.registry.mirrors]\n\n        [plugins.cri.registry.mirrors.\"docker.io\"]\n          endpoint = [\"https://registry-1.docker.io\"]\n\n    [plugins.cri.x509_key_pair_streaming]\n      tls_cert_file = \"\"\n      tls_key_file = \"\"\n\n  [plugins.diff-service]\n    default = [\"walking\"]\n\n  [plugins.linux]\n    no_shim = false\n    runtime = \"runc\"\n    runtime_root = \"/var/lib/docker/runc\"\n    shim = \"containerd-shim\"\n    shim_debug = false\n\n  [plugins.opt]\n    path = \"/opt/containerd\"\n\n  [plugins.restart]\n    interval = \"10s\"\n\n  [plugins.scheduler]\n    deletion_threshold = 0\n    mutation_threshold = 100\n    pause_threshold = 0.02\n    schedule_delay = \"0s\"\n    startup_delay = \"100ms\"\n"
  },
  {
    "path": "tests/container/shared/etc/containerd/config_v2.toml",
    "content": "disabled_plugins = []\noom_score = 0\nplugin_dir = \"\"\nrequired_plugins = []\nroot = \"/var/lib/containerd\"\nstate = \"/run/containerd\"\nversion = 2\n\n[cgroup]\n  path = \"\"\n\n[debug]\n  address = \"/var/run/docker/containerd/containerd-debug.sock\"\n  gid = 0\n  level = \"\"\n  uid = 0\n\n[grpc]\n  address = \"/var/run/docker/containerd/containerd.sock\"\n  gid = 0\n  max_recv_message_size = 16777216\n  max_send_message_size = 16777216\n  tcp_address = \"\"\n  tcp_tls_cert = \"\"\n  tcp_tls_key = \"\"\n  uid = 0\n\n[metrics]\n  address = \"\"\n  grpc_histogram = false\n\n[plugins]\n\n  [plugins.\"io.containerd.gc.v1.scheduler\"]\n    deletion_threshold = 0\n    mutation_threshold = 100\n    pause_threshold = 0.02\n    schedule_delay = \"0s\"\n    startup_delay = \"100ms\"\n\n  [plugins.\"io.containerd.grpc.v1.cri\"]\n    disable_apparmor = false\n    disable_cgroup = false\n    disable_proc_mount = false\n    disable_tcp_service = true\n    enable_selinux = false\n    enable_tls_streaming = false\n    max_concurrent_downloads = 3\n    max_container_log_line_size = 16384\n    restrict_oom_score_adj = false\n    sandbox_image = \"k8s.gcr.io/pause:3.1\"\n    stats_collect_period = 10\n    stream_idle_timeout = \"4h0m0s\"\n    stream_server_address = \"127.0.0.1\"\n    stream_server_port = \"0\"\n    systemd_cgroup = false\n\n    [plugins.\"io.containerd.grpc.v1.cri\".cni]\n      bin_dir = \"/opt/cni/bin\"\n      conf_dir = \"/etc/cni/net.d\"\n      conf_template = \"\"\n      max_conf_num = 1\n\n    [plugins.\"io.containerd.grpc.v1.cri\".containerd]\n      default_runtime_name = \"runc\"\n      no_pivot = false\n      snapshotter = \"overlayfs\"\n\n      [plugins.\"io.containerd.grpc.v1.cri\".containerd.default_runtime]\n        privileged_without_host_devices = false\n        runtime_engine = \"\"\n        runtime_root = \"\"\n        runtime_type = \"\"\n\n      [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes]\n\n        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc]\n          privileged_without_host_devices = false\n          runtime_engine = \"\"\n          runtime_root = \"\"\n          runtime_type = \"io.containerd.runc.v1\"\n\n      [plugins.\"io.containerd.grpc.v1.cri\".containerd.untrusted_workload_runtime]\n        privileged_without_host_devices = false\n        runtime_engine = \"\"\n        runtime_root = \"\"\n        runtime_type = \"\"\n\n    [plugins.\"io.containerd.grpc.v1.cri\".registry]\n\n      [plugins.\"io.containerd.grpc.v1.cri\".registry.mirrors]\n\n        [plugins.\"io.containerd.grpc.v1.cri\".registry.mirrors.\"docker.io\"]\n          endpoint = [\"https://registry-1.docker.io\"]\n\n    [plugins.\"io.containerd.grpc.v1.cri\".x509_key_pair_streaming]\n      tls_cert_file = \"\"\n      tls_key_file = \"\"\n\n  [plugins.\"io.containerd.internal.v1.opt\"]\n    path = \"/opt/containerd\"\n\n  [plugins.\"io.containerd.internal.v1.restart\"]\n    interval = \"10s\"\n\n  [plugins.\"io.containerd.metadata.v1.bolt\"]\n    content_sharing_policy = \"shared\"\n\n  [plugins.\"io.containerd.monitor.v1.cgroups\"]\n    no_prometheus = false\n\n  [plugins.\"io.containerd.runtime.v1.linux\"]\n    no_shim = false\n    runtime = \"runc\"\n    runtime_root = \"/var/lib/docker/runc\"\n    shim = \"containerd-shim\"\n    shim_debug = false\n\n  [plugins.\"io.containerd.runtime.v2.task\"]\n    platforms = [\"linux/amd64\"]\n\n  [plugins.\"io.containerd.service.v1.diff-service\"]\n    default = [\"walking\"]\n\n  [plugins.\"io.containerd.snapshotter.v1.devmapper\"]\n    base_image_size = \"\"\n    pool_name = \"\"\n    root_path = \"\"\n\n[timeouts]\n  \"io.containerd.timeout.shim.cleanup\" = \"5s\"\n  \"io.containerd.timeout.shim.load\" = \"5s\"\n  \"io.containerd.timeout.shim.shutdown\" = \"3s\"\n  \"io.containerd.timeout.task.state\" = \"2s\"\n\n[ttrpc]\n  address = \"\"\n  gid = 0\n  uid = 0\n"
  },
  {
    "path": "tests/container/shared/etc/docker/daemon.json",
    "content": "{\n  \"registry-mirrors\": [\"https://mirror.gcr.io\"]\n}\n"
  },
  {
    "path": "tests/e2e/Makefile",
    "content": "# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n.PHONY: test $(GINKGO_BIN)\n\nGINKGO_ARGS ?=\nLOG_ARTIFACTS_DIR ?= $(CURDIR)/e2e_logs\n\nGINKGO_BIN := $(CURDIR)/bin/ginkgo\n\n# If GINKGO_FOCUS is not set, run all tests\n# current available tests:\n# - nvidia-container-cli\n# - docker\n# - nvidia-cdi-refresh\n# - containerd\nGINKGO_FOCUS ?=\n\ntest: $(GINKGO_BIN)\n\t$(GINKGO_BIN) $(GINKGO_ARGS) -v --json-report ginkgo.json --focus=\"$(GINKGO_FOCUS)\" ./tests/e2e/...\n\n# test-preinstalled runs the test cases against the version of the toolkit that\n# is already installed (and configured for docker) on the host.\n.PHONY: test-preinstalled\ntest-preinstalled: test\ntest-preinstalled: E2E_INSTALL_CTK = false\ntest-preinstalled: E2E_SSH_HOST =\n\nGINKGO_VERSION = $(shell grep -Eo \"github.com/onsi/ginkgo/v2.*$$\" ./tests/go.mod | sed -e 's&github.com/onsi/ginkgo/v2[[:space:]]&&g')\nginkgo: $(GINKGO_BIN)\n$(GINKGO_BIN):\n\tmkdir -p $(CURDIR)/bin\n\tGOBIN=$(CURDIR)/bin go install github.com/onsi/ginkgo/v2/ginkgo@$(GINKGO_VERSION)\n"
  },
  {
    "path": "tests/e2e/e2e_test.go",
    "content": "/**\n# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage e2e\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"os\"\n\t\"strconv\"\n\t\"strings\"\n\t\"testing\"\n\n\t. \"github.com/onsi/ginkgo/v2\"\n\t. \"github.com/onsi/gomega\"\n)\n\n// Test context\nvar (\n\trunner Runner\n\n\tctx context.Context\n\n\tinstallCTK bool\n\n\tnvidiaContainerToolkitImage string\n\n\tsshKey  string\n\tsshUser string\n\tsshHost string\n\tsshPort string\n\n\tlocalCacheDir    string\n\ttoolkitInstaller *ToolkitInstaller\n)\n\nfunc TestMain(t *testing.T) {\n\tsuiteName := \"E2E NVIDIA Container Toolkit\"\n\n\tRegisterFailHandler(Fail)\n\n\tctx = context.Background()\n\n\tRunSpecs(t,\n\t\tsuiteName,\n\t)\n}\n\nvar _ = BeforeSuite(func() {\n\tgetTestEnv()\n\n\trunner = NewRunner(\n\t\tWithHost(sshHost),\n\t\tWithPort(sshPort),\n\t\tWithSshKey(sshKey),\n\t\tWithSshUser(sshUser),\n\t)\n\n\t// Create a tempdir on the runner.\n\ttmpdir, _, err := runner.Run(\"mktemp -d --tmpdir=/tmp nvctk-e2e-test-cacheXXX\")\n\tExpect(err).ToNot(HaveOccurred())\n\tExpect(strings.TrimSpace(tmpdir)).ToNot(BeEmpty())\n\n\tlocalCacheDir = strings.TrimSpace(tmpdir)\n\n\ttoolkitInstaller, err = NewToolkitInstaller(\n\t\tWithToolkitImage(nvidiaContainerToolkitImage),\n\t\tWithCacheDir(localCacheDir),\n\t)\n\tExpect(err).ToNot(HaveOccurred())\n\n\t_, _, err = toolkitInstaller.PrepareCache(runner)\n\tExpect(err).ToNot(HaveOccurred())\n\n\tif installCTK {\n\t\t_, _, err := toolkitInstaller.Install(runner)\n\t\tExpect(err).ToNot(HaveOccurred())\n\n\t\t_, _, err = runner.Run(`sudo nvidia-ctk runtime configure --runtime=docker`)\n\t\tExpect(err).ToNot(HaveOccurred())\n\n\t\t_, _, err = runner.Run(`sudo systemctl restart docker`)\n\t\tExpect(err).ToNot(HaveOccurred())\n\t}\n})\n\n// getTestEnv gets the test environment variables\nfunc getTestEnv() {\n\tdefer GinkgoRecover()\n\n\tinstallCTK = getEnvVarOrDefault(\"E2E_INSTALL_CTK\", false)\n\n\timageName := getRequiredEnvvar[string](\"E2E_IMAGE_NAME\")\n\timageTag := getRequiredEnvvar[string](\"E2E_IMAGE_TAG\")\n\tnvidiaContainerToolkitImage = imageName + \":\" + imageTag\n\n\tsshHost = getEnvVarOrDefault(\"E2E_SSH_HOST\", \"\")\n\tif sshHost != \"\" {\n\t\tsshKey = getRequiredEnvvar[string](\"E2E_SSH_KEY\")\n\t\tsshUser = getRequiredEnvvar[string](\"E2E_SSH_USER\")\n\t\tsshPort = getEnvVarOrDefault(\"E2E_SSH_PORT\", \"22\")\n\t}\n}\n\n// getRequiredEnvvar returns the specified envvar if set or raises an error.\nfunc getRequiredEnvvar[T any](key string) T {\n\tv, err := getEnvVarAs[T](key)\n\tExpect(err).To(BeNil(), \"required environement variable not set\", key)\n\treturn v\n}\n\nfunc getEnvVarAs[T any](key string) (T, error) {\n\tvar zero T\n\tvalue := os.Getenv(key)\n\tif value == \"\" {\n\t\treturn zero, errors.New(\"env var not set\")\n\t}\n\n\tswitch any(zero).(type) {\n\tcase bool:\n\t\tv, err := strconv.ParseBool(value)\n\t\tif err != nil {\n\t\t\treturn zero, err\n\t\t}\n\t\treturn any(v).(T), nil\n\tcase int:\n\t\tv, err := strconv.Atoi(value)\n\t\tif err != nil {\n\t\t\treturn zero, err\n\t\t}\n\t\treturn any(v).(T), nil\n\tcase string:\n\t\treturn any(value).(T), nil\n\tdefault:\n\t\treturn zero, errors.New(\"unsupported type\")\n\t}\n}\n\nfunc getEnvVarOrDefault[T any](key string, defaultValue T) T {\n\tval, err := getEnvVarAs[T](key)\n\tif err != nil {\n\t\treturn defaultValue\n\t}\n\treturn val\n}\n"
  },
  {
    "path": "tests/e2e/infra/driver-branch-535.yaml",
    "content": "apiVersion: holodeck.nvidia.com/v1alpha1\nkind: Environment\nmetadata:\n  name: HOLODECK_NAME\n  description: \"end-to-end test infrastructure\"\nspec:\n  provider: aws\n  auth:\n    keyName: cnt-ci\n    privateKey: HOLODECK_PRIVATE_KEY\n  instance:\n    type: g4dn.xlarge\n    region: us-west-1\n    ingressIpRanges:\n    - 18.190.12.32/32\n    - 3.143.46.93/32\n    - 44.230.241.223/32\n    - 44.235.4.62/32\n    - 52.15.119.136/32\n    - 52.24.205.48/32\n    image:\n      architecture: amd64\n  containerRuntime:\n    install: true\n    name: docker\n  nvidiaContainerToolkit:\n    install: false\n  nvidiaDriver:\n    install: true\n    branch: 550\n"
  },
  {
    "path": "tests/e2e/infra/driver-branch-570.yaml",
    "content": "apiVersion: holodeck.nvidia.com/v1alpha1\nkind: Environment\nmetadata:\n  name: HOLODECK_NAME\n  description: \"end-to-end test infrastructure\"\nspec:\n  provider: aws\n  auth:\n    keyName: cnt-ci\n    privateKey: HOLODECK_PRIVATE_KEY\n  instance:\n    type: g4dn.xlarge\n    region: us-west-1\n    ingressIpRanges:\n    - 18.190.12.32/32\n    - 3.143.46.93/32\n    - 44.230.241.223/32\n    - 44.235.4.62/32\n    - 52.15.119.136/32\n    - 52.24.205.48/32\n    image:\n      architecture: amd64\n  containerRuntime:\n    install: true\n    name: docker\n  nvidiaContainerToolkit:\n    install: false\n  nvidiaDriver:\n    install: true\n    branch: 575\n"
  },
  {
    "path": "tests/e2e/infra/driver-branch-580.yaml",
    "content": "apiVersion: holodeck.nvidia.com/v1alpha1\nkind: Environment\nmetadata:\n  name: HOLODECK_NAME\n  description: \"end-to-end test infrastructure\"\nspec:\n  provider: aws\n  auth:\n    keyName: cnt-ci\n    privateKey: HOLODECK_PRIVATE_KEY\n  instance:\n    type: g4dn.xlarge\n    region: us-west-1\n    ingressIpRanges:\n    - 18.190.12.32/32\n    - 3.143.46.93/32\n    - 44.230.241.223/32\n    - 44.235.4.62/32\n    - 52.15.119.136/32\n    - 52.24.205.48/32\n    image:\n      architecture: amd64\n  containerRuntime:\n    install: true\n    name: docker\n  nvidiaContainerToolkit:\n    install: false\n  nvidiaDriver:\n    install: true\n    branch: 580\n"
  },
  {
    "path": "tests/e2e/installer.go",
    "content": "/*\n* Copyright (c) 2025, NVIDIA CORPORATION.  All rights reserved.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*     http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n */\n\npackage e2e\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"strings\"\n\t\"text/template\"\n)\n\nvar prepareInstallerCacheTemplate = `\nset -xe\n\nmkdir -p {{.CacheDir}}\n\ndocker run --rm -v {{.CacheDir}}:/cache --entrypoint=\"sh\" {{.ToolkitImage}}-packaging -c \"cp -p -R /artifacts/* /cache/\"\n`\n\nvar installFromImageTemplate = `\nset -xe\n\narch=\"$(uname -m)\"\ncase \"${arch##*-}\" in\n\tx86_64 | amd64) ARCH='amd64' ;;\n\tppc64el | ppc64le) ARCH='ppc64le' ;;\n\taarch64 | arm64) ARCH='arm64' ;;\n\t*) echo \"unsupported architecture\" ; exit 1 ;;\nesac\n\ncd {{.CacheDir}}/packages/ubuntu18.04/${ARCH}\n\n{{if .WithSudo }}sudo {{end}}dpkg -i libnvidia-container1_*_${ARCH}.deb \\\n\tlibnvidia-container-tools_*_${ARCH}.deb \\\n\tnvidia-container-toolkit-base_*_${ARCH}.deb \\\n\tnvidia-container-toolkit_*_${ARCH}.deb\n\ncd -\n\nnvidia-container-cli --version\n`\n\ntype ToolkitInstaller struct {\n\tToolkitImage string\n\tCacheDir     string\n}\n\ntype installerOption func(*ToolkitInstaller)\n\nfunc WithToolkitImage(image string) installerOption {\n\treturn func(i *ToolkitInstaller) {\n\t\ti.ToolkitImage = image\n\t}\n}\n\nfunc WithCacheDir(cacheDir string) installerOption {\n\treturn func(i *ToolkitInstaller) {\n\t\ti.CacheDir = cacheDir\n\t}\n}\n\nfunc NewToolkitInstaller(opts ...installerOption) (*ToolkitInstaller, error) {\n\ti := &ToolkitInstaller{}\n\n\tfor _, opt := range opts {\n\t\topt(i)\n\t}\n\n\tif i.ToolkitImage == \"\" {\n\t\treturn nil, fmt.Errorf(\"image is required\")\n\t}\n\n\treturn i, nil\n}\n\n// PrepareCache ensures that the installer (package) cache is created on the runner.\n// The can be used to ensure that docker is not REQUIRED in an inner container.\nfunc (i *ToolkitInstaller) PrepareCache(runner Runner) (string, string, error) {\n\tif i.ToolkitImage == \"disabled:disabled\" {\n\t\treturn \"\", \"\", nil\n\t}\n\trenderedScript, err := i.renderScript(prepareInstallerCacheTemplate, false)\n\tif err != nil {\n\t\treturn \"\", \"\", err\n\t}\n\n\treturn runner.Run(renderedScript)\n}\n\nfunc (i *ToolkitInstaller) Install(runner Runner) (string, string, error) {\n\tuid, _, err := runner.Run(\"id -u\")\n\tif err != nil {\n\t\treturn \"\", \"\", err\n\t}\n\twithSudo := false\n\tif strings.TrimSpace(uid) != \"0\" {\n\t\twithSudo = true\n\t}\n\trenderedScript, err := i.renderScript(installFromImageTemplate, withSudo)\n\tif err != nil {\n\t\treturn \"\", \"\", err\n\t}\n\n\treturn runner.Run(renderedScript)\n}\n\nfunc (i *ToolkitInstaller) renderScript(scriptTemplate string, withSudo bool) (string, error) {\n\t// Parse the combined template\n\ttmpl, err := template.New(\"template\").Parse(scriptTemplate)\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"error parsing template: %w\", err)\n\t}\n\n\ttemplateInfo := struct {\n\t\t*ToolkitInstaller\n\t\tWithSudo bool\n\t}{\n\t\tToolkitInstaller: i,\n\t\tWithSudo:         withSudo,\n\t}\n\t// Execute the template\n\tvar renderedScript bytes.Buffer\n\terr = tmpl.Execute(&renderedScript, templateInfo)\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"error executing template: %w\", err)\n\t}\n\n\treturn renderedScript.String(), nil\n}\n"
  },
  {
    "path": "tests/e2e/nvidia-cdi-refresh_test.go",
    "content": "/*\n * Copyright (c) 2025, NVIDIA CORPORATION.  All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage e2e\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"strings\"\n\t\"time\"\n\n\t. \"github.com/onsi/ginkgo/v2\"\n\t. \"github.com/onsi/gomega\"\n)\n\nconst (\n\tgetSystemStateScript = `systemctl is-system-running 2>/dev/null`\n\n\tsetSystemdDegradedScript = `#!/usr/bin/env bash\n\t# Start the dummy service to force systemd to enter a degraded state\n\tcat <<EOF > /etc/systemd/system/dummy.service\n[Unit]\nDescription=Dummy systemd service\n\n[Service]\nType=oneshot\nExecStart=/usr/bin/sh -c \"exit 1\"\nEOF\n\n\t# We know the dummy service will fail, so we can ignore the error\n\tsystemctl start --now dummy.service 2>/dev/null || true\n\t`\n\n\tfixSystemDegradedScript = `#!/usr/bin/env bash\n\t# Start the dummy service to force systemd to enter a degraded state\n\tcat <<EOF > /etc/systemd/system/dummy.service\n[Unit]\nDescription=Dummy systemd service\n\n[Service]\nType=oneshot\nExecStart=/usr/bin/sh -c \"exit 0\"\nEOF\n\n\tsystemctl daemon-reload\n\n\tsystemctl start --now dummy.service 2>/dev/null || true\n\n\trm -rf /etc/systemd/system/dummy.service\n\tsystemctl daemon-reload\n`\n\n\tnvidiaCdiRefreshPathActiveTemplate = `\n\tif ! systemctl status nvidia-cdi-refresh.path | grep \"Active: active\"; then\n\t\techo \"nvidia-cdi-refresh.path is not Active\"\n\t\texit 1\n\tfi\n\t`\n\tnvidiaCdiRefreshServiceLoadedTemplate = `\n\tif ! systemctl status nvidia-cdi-refresh.service | grep \"Loaded: loaded\"; then\n\t\techo \"nvidia-cdi-refresh.service is not loaded\"\n\t\texit 1\n\tfi\n\t`\n\n\tnvidiaCdiRefreshFileExistsTemplate = `\n\t# is /var/run/cdi/nvidia.yaml exists? and exit with 0 if it does not exist\n\tif [ ! -f /var/run/cdi/nvidia.yaml ]; then\n\t\techo \"nvidia.yaml file does not exist\"\n\t\texit 1\n\tfi\n\n\t# generate the nvidia.yaml file\n\tnvidia-ctk cdi generate --output=/tmp/nvidia.yaml\n\n\t# diff the generated file with the one in /var/run/cdi/nvidia.yaml and exit with 0 if they are the same\n\tif ! diff /var/run/cdi/nvidia.yaml /tmp/nvidia.yaml; then\n\t\techo \"nvidia.yaml file is different\"\n\t\texit 1\n\tfi\n\t`\n\n\tnvidiaCdiRefreshUpgradeTemplate = `\n\t# remove the generated files\n\trm /var/run/cdi/nvidia.yaml /tmp/nvidia.yaml\n\n\t# Touch the nvidia-ctk binary to change the mtime\n\t# This will trigger the nvidia-cdi-refresh.path unit to call the\n\t# nvidia-cdi-refresh.service unit, simulating a change(update/downgrade) in the nvidia-ctk binary.\n\ttouch $(which nvidia-ctk)\n\n\t# wait for 3 seconds\n\tsleep 3\n\n\t# Check if the file /var/run/cdi/nvidia.yaml is created\n\tif [ ! -f /var/run/cdi/nvidia.yaml ]; then\n\t\techo \"nvidia.yaml file is not created after updating the modules.dep file\"\n\t\texit 1\n\tfi\n\n\t# generate the nvidia.yaml file\n\tnvidia-ctk cdi generate --output=/tmp/nvidia.yaml\n\n\t# diff the generated file with the one in /var/run/cdi/nvidia.yaml and exit with 0 if they are the same\n\tif ! diff /var/run/cdi/nvidia.yaml /tmp/nvidia.yaml; then\n\t\techo \"nvidia.yaml file is different\"\n\t\texit 1\n\tfi\n\t`\n)\n\nvar _ = Describe(\"nvidia-cdi-refresh\", Ordered, ContinueOnFailure, Label(\"systemd-unit\"), func() {\n\tvar (\n\t\tcontainerName = \"nvctk-e2e-nvidia-cdi-refresh-tests\"\n\t\tsystemdRunner Runner\n\t\t// TODO(@ArangoGutierrez): https://github.com/NVIDIA/nvidia-container-toolkit/pull/1235/files#r2302013660\n\t\touterContainerImage = \"docker.io/kindest/base:v20250521-31a79fd4\"\n\t)\n\n\tBeforeAll(func(ctx context.Context) {\n\t\tvar err error\n\t\tsystemdRunner, err = NewNestedContainerRunner(runner, outerContainerImage, false, containerName, localCacheDir, true)\n\t\tExpect(err).ToNot(HaveOccurred())\n\t\tfor range 10 {\n\t\t\tstate, _, err := systemdRunner.Run(getSystemStateScript)\n\t\t\tif err == nil {\n\t\t\t\tGinkgoLogr.Info(\"systemd started\", \"state\", state)\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tGinkgoLogr.Error(err, \"systemctl state\")\n\t\t\ttime.Sleep(1 * time.Second)\n\t\t}\n\t})\n\n\tAfterAll(func(ctx context.Context) {\n\t\t// Cleanup: remove the container and the temporary script on the host.\n\t\t// Use || true to ensure cleanup doesn't fail the test\n\t\trunner.Run(fmt.Sprintf(\"docker rm -f %s 2>/dev/null || true\", containerName))\n\t})\n\n\tWhen(\"installing nvidia-container-toolkit\", Ordered, func() {\n\t\tBeforeAll(func(ctx context.Context) {\n\n\t\t\t_, _, err := toolkitInstaller.Install(systemdRunner)\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\n\t\t\toutput, _, err := systemdRunner.Run(\"nvidia-ctk --version\")\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t\tGinkgoLogr.Info(\"using nvidia-ctk\", \"version\", strings.TrimSpace(output))\n\t\t})\n\n\t\tAfterAll(func(ctx context.Context) {\n\t\t\t_, _, err := systemdRunner.Run(\"apt-get purge -y libnvidia-container* nvidia-container-toolkit*\")\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t})\n\n\t\tIt(\"should load the nvidia-cdi-refresh.path unit\", func(ctx context.Context) {\n\t\t\t_, _, err := systemdRunner.Run(nvidiaCdiRefreshPathActiveTemplate)\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t})\n\n\t\tIt(\"should load the nvidia-cdi-refresh.service unit\", func(ctx context.Context) {\n\t\t\t_, _, err := systemdRunner.Run(nvidiaCdiRefreshServiceLoadedTemplate)\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t})\n\n\t\tIt(\"should generate the nvidia.yaml file\", func(ctx context.Context) {\n\t\t\t_, _, err := systemdRunner.Run(nvidiaCdiRefreshFileExistsTemplate)\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t})\n\n\t\tIt(\"should refresh the nvidia.yaml file after upgrading the nvidia-container-toolkit\", func(ctx context.Context) {\n\t\t\t_, _, err := systemdRunner.Run(nvidiaCdiRefreshUpgradeTemplate)\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t})\n\t})\n\n\tWhen(\"installing nvidia-container-toolkit on a system with a degraded systemd\", Ordered, func() {\n\t\tBeforeAll(func(ctx context.Context) {\n\t\t\t_, _, err := systemdRunner.Run(setSystemdDegradedScript)\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\n\t\t\t_, _, err = systemdRunner.Run(getSystemStateScript)\n\t\t\tExpect(err).To(HaveOccurred())\n\t\t\tExpect(err.Error()).To(ContainSubstring(\"degraded\"))\n\t\t})\n\n\t\tAfterAll(func(ctx context.Context) {\n\t\t\t_, _, err := systemdRunner.Run(fixSystemDegradedScript)\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\n\t\t\tstate, _, err := systemdRunner.Run(getSystemStateScript)\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t\tExpect(strings.TrimSpace(state)).To(Equal(\"running\"))\n\t\t})\n\n\t\tIt(\"should load the nvidia-cdi-refresh.path unit\", func(ctx context.Context) {\n\t\t\t_, _, err := systemdRunner.Run(nvidiaCdiRefreshPathActiveTemplate)\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t})\n\n\t\tIt(\"should load the nvidia-cdi-refresh.service unit\", func(ctx context.Context) {\n\t\t\t_, _, err := systemdRunner.Run(nvidiaCdiRefreshServiceLoadedTemplate)\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t})\n\n\t\tIt(\"should generate the nvidia.yaml file\", func(ctx context.Context) {\n\t\t\t_, _, err := systemdRunner.Run(nvidiaCdiRefreshFileExistsTemplate)\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t})\n\n\t\tIt(\"should generate the nvidia.yaml file\", func(ctx context.Context) {\n\t\t\t_, _, err := systemdRunner.Run(nvidiaCdiRefreshFileExistsTemplate)\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t})\n\t})\n})\n"
  },
  {
    "path": "tests/e2e/nvidia-container-cli_test.go",
    "content": "/*\n * Copyright (c) 2025, NVIDIA CORPORATION.  All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage e2e\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"strings\"\n\n\t. \"github.com/onsi/ginkgo/v2\"\n\t. \"github.com/onsi/gomega\"\n)\n\nconst (\n\tlibnvidiaContainerCliTestTemplate = `\n# Create a temporary directory and rootfs path\nTMPDIR=\"$(mktemp -d)\"\nROOTFS=\"${TMPDIR}/rootfs\"\nmkdir -p \"${ROOTFS}\"\n\n# Expose ROOTFS for the child namespace\nexport ROOTFS TMPDIR\n\n# Download Ubuntu base image with error handling\ncurl -fsSL http://cdimage.ubuntu.com/ubuntu-base/releases/22.04/release/ubuntu-base-22.04-base-amd64.tar.gz | tar -C $ROOTFS -xz || {\n    echo \"Failed to download or extract Ubuntu base image\"\n    exit 1\n}\n\n# Enter a new mount + PID namespace so we can pivot_root without touching the\n# container'\\''s original filesystem.\nunshare --mount --pid --fork --propagation private -- sh -eux <<'\\''IN_NS'\\''\n  : \"${ROOTFS:?}\"\n\n  # 1 Bind-mount the new root and make the mount private\n  mount --bind \"$ROOTFS\" \"$ROOTFS\"\n  mount --make-private \"$ROOTFS\"\n  cd \"$ROOTFS\"\n\n  # 2 Minimal virtual filesystems\n  mount -t proc  proc proc\n  mount -t sysfs sys  sys\n  mount -t tmpfs tmp  tmp\n  mount -t tmpfs run  run\n\n  # 3 Configure NVIDIA devices\n  nvidia-container-cli --load-kmods configure --ldconfig=@/sbin/ldconfig.real --no-cgroups --utility --device 0 $(pwd)\n\n  # 4 Switch root into the prepared filesystem\n  pivot_root . mnt\n  umount -l mnt\n  nvidia-smi -L\n\nIN_NS\n`\n)\n\nvar _ = Describe(\"nvidia-container-cli\", Ordered, ContinueOnFailure, Label(\"libnvidia-container\"), func() {\n\tvar (\n\t\tcontainerName         = \"nvct-e2e-nvidia-container-cli-tests\"\n\t\tnestedContainerRunner Runner\n\t\thostOutput            string\n\t)\n\n\tBeforeAll(func(ctx context.Context) {\n\t\tvar err error\n\t\tnestedContainerRunner, err = NewNestedContainerRunner(runner, \"ubuntu\", !installCTK, containerName, localCacheDir, true)\n\t\tExpect(err).ToNot(HaveOccurred())\n\n\t\tif installCTK {\n\t\t\t// We MAY also need to install the toolkit in the nested runner.\n\t\t\t_, _, err = toolkitInstaller.Install(nestedContainerRunner)\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t}\n\n\t\t// Capture the host GPU list.\n\t\thostOutput, _, err = runner.Run(\"nvidia-smi -L\")\n\t\tExpect(err).ToNot(HaveOccurred())\n\n\t\t// Normalize the output once\n\t\thostOutput = strings.TrimSpace(strings.ReplaceAll(hostOutput, \"\\r\", \"\"))\n\t})\n\n\tAfterAll(func(ctx context.Context) {\n\t\t// Cleanup: remove the container and the temporary script on the host.\n\t\t// Use || true to ensure cleanup doesn't fail the test\n\t\trunner.Run(fmt.Sprintf(\"docker rm -f %s 2>/dev/null || true\", containerName)) //nolint:errcheck\n\t})\n\n\tIt(\"should report the same GPUs inside the container as on the host\", func(ctx context.Context) {\n\t\t// Run the test script in the container.\n\t\toutput, _, err := nestedContainerRunner.Run(libnvidiaContainerCliTestTemplate)\n\t\tExpect(err).ToNot(HaveOccurred())\n\t\tExpect(strings.TrimSpace(output)).ToNot(BeEmpty())\n\t\tExpect(hostOutput).To(ContainSubstring(strings.TrimSpace(output)))\n\t})\n})\n"
  },
  {
    "path": "tests/e2e/nvidia-container-toolkit_test.go",
    "content": "/*\n * Copyright (c) 2025, NVIDIA CORPORATION.  All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage e2e\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t. \"github.com/onsi/ginkgo/v2\"\n\t. \"github.com/onsi/gomega\"\n\n\t\"golang.org/x/mod/semver\"\n)\n\n// Integration tests for Docker runtime\nvar _ = Describe(\"docker\", Ordered, ContinueOnFailure, func() {\n\tvar dockerVersion string\n\tvar hostDriverVersion string\n\tvar hostDriverMajor string\n\tvar hostOutput string\n\n\t// Install the NVIDIA Container Toolkit\n\tBeforeAll(func(ctx context.Context) {\n\t\t// Get the docker version output in the form:\n\t\t// Docker version 29.1.3, build f52814d\n\t\tversionOutput, _, err := runner.Run(\"docker --version\")\n\t\tGinkgoLogr.Info(fmt.Sprintf(\"Extracted docker version string as: %q\", versionOutput))\n\t\tExpect(err).ToNot(HaveOccurred())\n\t\tdockerVersion = \"v\" + strings.TrimPrefix(strings.SplitN(versionOutput, \",\", 2)[0], \"Docker version \")\n\n\t\tdriverOutput, _, err := runner.Run(\"nvidia-smi -q | grep \\\"Driver Version\\\"\")\n\t\tExpect(err).ToNot(HaveOccurred())\n\t\tparts := strings.SplitN(driverOutput, \":\", 2)\n\t\tExpect(parts).To(HaveLen(2))\n\n\t\thostDriverVersion = strings.TrimSpace(parts[1])\n\t\tExpect(hostDriverVersion).ToNot(BeEmpty())\n\t\thostDriverMajor = strings.SplitN(hostDriverVersion, \".\", 2)[0]\n\n\t\thostOutput, _, err = runner.Run(\"nvidia-smi -L\")\n\t\tExpect(err).ToNot(HaveOccurred())\n\t})\n\n\t// GPUs are accessible in a container: Running nvidia-smi -L inside the\n\t// container shows the same output inside the container as outside the\n\t// container. This means that the following commands must all produce\n\t// the same output\n\tWhen(\"running nvidia-smi -L\", Ordered, func() {\n\t\tBeforeAll(func(ctx context.Context) {\n\t\t\t_, _, err := runner.Run(\"docker pull ubuntu\")\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t})\n\n\t\tIt(\"should support NVIDIA_VISIBLE_DEVICES\", func(ctx context.Context) {\n\t\t\tcontainerOutput, _, err := runner.Run(\"docker run --rm -i --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=all ubuntu nvidia-smi -L\")\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t\tExpect(containerOutput).To(Equal(hostOutput))\n\t\t})\n\n\t\tIt(\"should support automatic CDI spec generation\", func(ctx context.Context) {\n\t\t\tcontainerOutput, _, err := runner.Run(\"docker run --rm -i --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=runtime.nvidia.com/gpu=all ubuntu nvidia-smi -L\")\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t\tExpect(containerOutput).To(Equal(hostOutput))\n\t\t})\n\n\t\tIt(\"should support automatic CDI spec generation with the --gpus flag\", func(ctx context.Context) {\n\t\t\tcontainerOutput, _, err := runner.Run(\"docker run --rm -i --gpus=all --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=runtime.nvidia.com/gpu=all ubuntu nvidia-smi -L\")\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t\tExpect(containerOutput).To(Equal(hostOutput))\n\t\t})\n\n\t\tIt(\"should support the --gpus flag using the nvidia-container-runtime\", func(ctx context.Context) {\n\t\t\tcontainerOutput, _, err := runner.Run(\"docker run --rm -i --runtime=nvidia --gpus all ubuntu nvidia-smi -L\")\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t\tExpect(containerOutput).To(Equal(hostOutput))\n\t\t})\n\n\t\tIt(\"should support the --gpus flag using the nvidia-container-runtime-hook\", func(ctx context.Context) {\n\t\t\tcontainerOutput, _, err := runner.Run(\"docker run --rm -i --gpus all ubuntu nvidia-smi -L\")\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t\tExpect(containerOutput).To(Equal(hostOutput))\n\t\t})\n\n\t\tIt(\"should show no devices when NVIDIA_VISIBLE_DEVICES=none\", func(ctx context.Context) {\n\t\t\tcontainerOutput, _, err := runner.Run(\"docker run --rm -i --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=none ubuntu nvidia-smi -L\")\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t\tExpect(strings.TrimSpace(containerOutput)).To(Equal(\"No devices found.\"))\n\t\t})\n\t})\n\n\t// A vectorAdd sample runs in a container with access to all GPUs.\n\t// The following should all produce the same result.\n\tWhen(\"Running the cuda-vectorAdd sample\", Ordered, func() {\n\t\tvar referenceOutput string\n\n\t\tBeforeAll(func(ctx context.Context) {\n\t\t\t_, _, err := runner.Run(\"docker pull nvcr.io/nvidia/k8s/cuda-sample:vectoradd-cuda12.5.0\")\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t})\n\n\t\tIt(\"should support NVIDIA_VISIBLE_DEVICES\", func(ctx context.Context) {\n\t\t\tvar err error\n\t\t\treferenceOutput, _, err = runner.Run(\"docker run --rm -i --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=all nvcr.io/nvidia/k8s/cuda-sample:vectoradd-cuda12.5.0\")\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\n\t\t\tExpect(referenceOutput).To(ContainSubstring(\"Test PASSED\"))\n\t\t})\n\n\t\tIt(\"should support automatic CDI spec generation\", func(ctx context.Context) {\n\t\t\tout2, _, err := runner.Run(\"docker run --rm -i --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=runtime.nvidia.com/gpu=all nvcr.io/nvidia/k8s/cuda-sample:vectoradd-cuda12.5.0\")\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t\tExpect(referenceOutput).To(Equal(out2))\n\t\t})\n\n\t\tIt(\"should support the --gpus flag using the nvidia-container-runtime\", func(ctx context.Context) {\n\t\t\tout3, _, err := runner.Run(\"docker run --rm -i --runtime=nvidia --gpus all nvcr.io/nvidia/k8s/cuda-sample:vectoradd-cuda12.5.0\")\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t\tExpect(referenceOutput).To(Equal(out3))\n\t\t})\n\n\t\tIt(\"should support the --gpus flag using the nvidia-container-runtime-hook\", func(ctx context.Context) {\n\t\t\tout4, _, err := runner.Run(\"docker run --rm -i --gpus all nvcr.io/nvidia/k8s/cuda-sample:vectoradd-cuda12.5.0\")\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t\tExpect(referenceOutput).To(Equal(out4))\n\t\t})\n\t})\n\n\t// A deviceQuery sample runs in a container with access to all GPUs\n\t// The following should all produce the same result.\n\tWhen(\"Running the cuda-deviceQuery sample\", Ordered, func() {\n\t\tvar referenceOutput string\n\n\t\tBeforeAll(func(ctx context.Context) {\n\t\t\t_, _, err := runner.Run(\"docker pull nvcr.io/nvidia/k8s/cuda-sample:devicequery-cuda12.5.0\")\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t})\n\n\t\tIt(\"should support NVIDIA_VISIBLE_DEVICES\", func(ctx context.Context) {\n\t\t\tvar err error\n\t\t\treferenceOutput, _, err = runner.Run(\"docker run --rm -i --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=all nvcr.io/nvidia/k8s/cuda-sample:devicequery-cuda12.5.0\")\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t\tExpect(referenceOutput).To(ContainSubstring(\"Result = PASS\"))\n\t\t})\n\n\t\tIt(\"should support automatic CDI spec generation\", func(ctx context.Context) {\n\t\t\tout2, _, err := runner.Run(\"docker run --rm -i --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=runtime.nvidia.com/gpu=all nvcr.io/nvidia/k8s/cuda-sample:devicequery-cuda12.5.0\")\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t\tExpect(referenceOutput).To(Equal(out2))\n\t\t})\n\n\t\tIt(\"should support the --gpus flag using the nvidia-container-runtime\", func(ctx context.Context) {\n\t\t\tout3, _, err := runner.Run(\"docker run --rm -i --runtime=nvidia --gpus all nvcr.io/nvidia/k8s/cuda-sample:devicequery-cuda12.5.0\")\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t\tExpect(referenceOutput).To(Equal(out3))\n\t\t})\n\n\t\tIt(\"should support the --gpus flag using the nvidia-container-runtime-hook\", func(ctx context.Context) {\n\t\t\tout4, _, err := runner.Run(\"docker run --rm -i --gpus all nvcr.io/nvidia/k8s/cuda-sample:devicequery-cuda12.5.0\")\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t\tExpect(referenceOutput).To(Equal(out4))\n\t\t})\n\t})\n\n\tWhen(\"Testing CUDA Forward compatibility\", Ordered, func() {\n\t\tBeforeAll(func(ctx context.Context) {\n\t\t\t_, _, err := runner.Run(\"docker pull nvcr.io/nvidia/cuda:12.9.0-base-ubi8\")\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\n\t\t\tcompatOutput, _, err := runner.Run(\"docker run --rm -i -e NVIDIA_VISIBLE_DEVICES=void nvcr.io/nvidia/cuda:12.9.0-base-ubi8 bash -c \\\"ls /usr/local/cuda/compat/libcuda.*.*\\\"\")\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t\tExpect(compatOutput).ToNot(BeEmpty())\n\n\t\t\tcompatDriverVersion := strings.TrimPrefix(filepath.Base(compatOutput), \"libcuda.so.\")\n\t\t\tcompatMajor := strings.SplitN(compatDriverVersion, \".\", 2)[0]\n\n\t\t\tif hostDriverMajor >= compatMajor {\n\t\t\t\tGinkgoLogr.Info(\"CUDA Forward Compatibility tests require an older driver version\", \"hostDriverVersion\", hostDriverVersion, \"compatDriverVersion\", compatDriverVersion)\n\t\t\t\tSkip(\"CUDA Forward Compatibility tests require an older driver version\")\n\t\t\t}\n\t\t})\n\n\t\tIt(\"should work with the nvidia runtime in legacy mode\", func(ctx context.Context) {\n\t\t\tldconfigOut, _, err := runner.Run(\"docker run --rm -i -e NVIDIA_DISABLE_REQUIRE=true --runtime=nvidia --gpus all nvcr.io/nvidia/cuda:12.9.0-base-ubi8 bash -c \\\"ldconfig -p | grep libcuda.so.1\\\"\")\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t\tExpect(ldconfigOut).To(ContainSubstring(\"/usr/local/cuda-12.9/compat/\"))\n\t\t})\n\n\t\tIt(\"should work with the nvidia runtime in CDI mode\", func(ctx context.Context) {\n\t\t\tldconfigOut, _, err := runner.Run(\"docker run --rm -i -e NVIDIA_DISABLE_REQUIRE=true  --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=runtime.nvidia.com/gpu=all nvcr.io/nvidia/cuda:12.9.0-base-ubi8 bash -c \\\"ldconfig -p | grep libcuda.so.1\\\"\")\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t\tExpect(ldconfigOut).To(ContainSubstring(\"/usr/local/cuda-12.9/compat/\"))\n\t\t})\n\n\t\tIt(\"should work with nvidia-container-runtime-hook\", func(ctx context.Context) {\n\t\t\tldconfigOut, _, err := runner.Run(\"docker run --rm -i -e NVIDIA_DISABLE_REQUIRE=true --runtime=runc --gpus all nvcr.io/nvidia/cuda:12.9.0-base-ubi8 bash -c \\\"ldconfig -p | grep libcuda.so.1\\\"\")\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t\tExpect(ldconfigOut).To(ContainSubstring(\"/usr/local/cuda-12.9/compat/\"))\n\t\t})\n\n\t\tIt(\"should create a single ld.so.conf.d config file\", func(ctx context.Context) {\n\t\t\tlsout, _, err := runner.Run(\"docker run --rm -i -e NVIDIA_DISABLE_REQUIRE=true --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=runtime.nvidia.com/gpu=all nvcr.io/nvidia/cuda:12.9.0-base-ubi8 bash -c \\\"ls -l /etc/ld.so.conf.d/00-compat-*.conf\\\"\")\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t\tExpect(lsout).To(WithTransform(\n\t\t\t\tfunc(s string) []string {\n\t\t\t\t\treturn strings.Split(strings.TrimSpace(s), \"\\n\")\n\t\t\t\t}, HaveLen(1),\n\t\t\t))\n\t\t})\n\t})\n\n\tWhen(\"Disabling device node creation\", Ordered, func() {\n\t\tBeforeAll(func(ctx context.Context) {\n\t\t\t_, _, err := runner.Run(\"docker pull ubuntu\")\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t})\n\n\t\tIt(\"should work with nvidia-container-runtime-hook\", func(ctx context.Context) {\n\t\t\toutput, _, err := runner.Run(\"docker run --rm -i --runtime=runc --gpus=all ubuntu bash -c \\\"grep ModifyDeviceFiles: /proc/driver/nvidia/params\\\"\")\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t\tExpect(output).To(Equal(\"ModifyDeviceFiles: 0\\n\"))\n\t\t})\n\n\t\tIt(\"should work with automatic CDI spec generation\", func(ctx context.Context) {\n\t\t\toutput, _, err := runner.Run(\"docker run --rm -i --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=runtime.nvidia.com/gpu=all ubuntu bash -c \\\"grep ModifyDeviceFiles: /proc/driver/nvidia/params\\\"\")\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t\tExpect(output).To(Equal(\"ModifyDeviceFiles: 0\\n\"))\n\t\t})\n\t})\n\n\tWhen(\"A container is run using CDI\", Ordered, func() {\n\t\tBeforeAll(func(ctx context.Context) {\n\t\t\t_, _, err := runner.Run(\"docker pull ubuntu\")\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t\t_, _, err = runner.Run(\"docker pull busybox\")\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t})\n\n\t\tIt(\"should include libcuda.so in the ldcache\", func(ctx context.Context) {\n\t\t\tldcacheOutput, _, err := runner.Run(\"docker run --rm -i --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=runtime.nvidia.com/gpu=all ubuntu bash -c \\\"ldconfig -p | grep 'libcuda.so'\\\"\")\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t\tExpect(ldcacheOutput).ToNot(BeEmpty())\n\n\t\t\tldcacheLines := strings.Split(ldcacheOutput, \"\\n\")\n\t\t\tvar libs []string\n\t\t\tfor _, line := range ldcacheLines {\n\t\t\t\tparts := strings.SplitN(line, \" (\", 2)\n\t\t\t\tlibs = append(libs, strings.TrimSpace(parts[0]))\n\t\t\t}\n\n\t\t\tExpect(libs).To(ContainElements([]string{\"libcuda.so\", \"libcuda.so.1\"}))\n\t\t})\n\n\t\tIt(\"should include .so and SONAME symlinks\", func(ctx context.Context) {\n\t\t\tsymlinkOutput, _, err := runner.Run(\"docker run --rm -i --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=runtime.nvidia.com/gpu=all busybox ls -l /usr/lib/x86_64-linux-gnu/ | awk '{print $1, $9, $11}'\")\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t\tExpect(symlinkOutput).ToNot(BeEmpty())\n\n\t\t\t// This produces output similar to:\n\t\t\t// We check this to ensure that we have valid driver library symlink\n\t\t\t// chains.\n\t\t\t// lrwxrwxrwx libcuda.so libcuda.so.1\n\t\t\t// lrwxrwxrwx libcuda.so.1 libcuda.so.570.133.20\n\t\t\t// -rw-r--r-- libcuda.so.570.133.20\n\t\t\t// lrwxrwxrwx libcudadebugger.so libcudadebugger.so.1\n\t\t\t// lrwxrwxrwx libcudadebugger.so.1 libcudadebugger.so.570.133.20\n\t\t\t// -rw-r--r-- libcudadebugger.so.570.133.20\n\t\t\t// lrwxrwxrwx libnvidia-ml.so libnvidia-ml.so.1\n\t\t\t// lrwxrwxrwx libnvidia-ml.so.1 libnvidia-ml.so.570.133.20\n\t\t\t// -rw-r--r-- libnvidia-ml.so.570.133.20\n\t\t\t// lrwxrwxrwx libnvidia-nvvm.so libnvidia-nvvm.so.4\n\t\t\t// lrwxrwxrwx libnvidia-nvvm.so.4 libnvidia-nvvm.so.570.133.20\n\t\t\t// -rw-r--r-- libnvidia-nvvm.so.570.133.20\n\t\t\t// lrwxrwxrwx libnvidia-opencl.so libnvidia-opencl.so.1\n\t\t\t// lrwxrwxrwx libnvidia-opencl.so.1 libnvidia-opencl.so.570.133.20\n\t\t\t// -rw-r--r-- libnvidia-opencl.so.570.133.20\n\t\t\t// -rw-r--r-- libnvidia-pkcs11-openssl3.so.570.133.20\n\t\t\t// -rw-r--r-- libnvidia-pkcs11.so.570.133.20\n\t\t\t// lrwxrwxrwx libnvidia-ptxjitcompiler.so libnvidia-ptxjitcompiler.so.1\n\t\t\t// lrwxrwxrwx libnvidia-ptxjitcompiler.so.1 libnvidia-ptxjitcompiler.so.570.133.20\n\t\t\t// -rw-r--r-- libnvidia-ptxjitcompiler.so.570.133.20\n\n\t\t\tsymlinkOutputLines := strings.Split(symlinkOutput, \"\\n\")\n\t\t\tsymlinks := make(map[string][]string)\n\t\t\tvar soSymlink string\n\t\t\tfor _, line := range symlinkOutputLines {\n\t\t\t\ttrimmed := strings.TrimSpace(line)\n\t\t\t\tif trimmed == \"\" {\n\t\t\t\t\tsoSymlink = \"\"\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\t// We only consider links and regular files.\n\t\t\t\tif trimmed[0] != 'l' && trimmed[0] != '-' {\n\t\t\t\t\tsoSymlink = \"\"\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tfmt.Printf(\"trimmed = %q\\n\", trimmed)\n\t\t\t\tparts := strings.SplitN(trimmed, \" \", 3)\n\t\t\t\tpermissionString := parts[0]\n\n\t\t\t\t// If the line represents a symlink we may have to handle a new symlink chain.\n\t\t\t\tif strings.HasPrefix(permissionString, \"l\") && soSymlink == \"\" {\n\t\t\t\t\tif strings.HasSuffix(parts[1], \".so\") {\n\t\t\t\t\t\tsoSymlink = parts[1]\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Keep track of the symlink chain.\n\t\t\t\tsymlinks[soSymlink] = append(symlinks[soSymlink], parts[1:]...)\n\n\t\t\t\t// We assume a regular file is the end of a symlink chain.\n\t\t\t\tif strings.HasPrefix(permissionString, \"-\") {\n\t\t\t\t\tsoSymlink = \"\"\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// The RM_VERSION symlink chains have the pattern:\n\t\t\t// [A.so -> A.so.1 -> A.so.driverVersion]\n\t\t\t// A has the suffix .so.\n\t\t\tExpect(symlinks).ToNot(BeEmpty())\n\t\t\tfor soSymlink, chain := range symlinks {\n\t\t\t\tif soSymlink == \"\" {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tfor _, c := range chain {\n\t\t\t\t\tExpect(c).To(HavePrefix(soSymlink))\n\t\t\t\t}\n\t\t\t\tExpect(chain[0]).To(HaveSuffix(\".so\"))\n\t\t\t\tExpect(chain[1]).ToNot(Equal(soSymlink))\n\t\t\t\tExpect(chain[len(chain)-1]).ToNot(Equal(soSymlink))\n\t\t\t}\n\t\t\tExpect(symlinks).To(And(\n\t\t\t\tHaveKey(\"libcuda.so\"),\n\t\t\t\tHaveKey(\"libnvcuvid.so\"),\n\t\t\t))\n\n\t\t\t// The libnvidia-ml.so symlink was removed in the 560 driver branch.\n\t\t\tif hostDriverMajor < \"560\" {\n\t\t\t\tExpect(symlinks).To(HaveKey(\"libnvidia-ml.so\"))\n\t\t\t}\n\t\t})\n\t})\n\n\tWhen(\"Running containers with shared mount propagation\", Ordered, func() {\n\t\tvar mountsBefore string\n\t\tvar tmpDirPath string\n\n\t\tBeforeAll(func(ctx context.Context) {\n\t\t\t_, _, err := runner.Run(\"docker pull ubuntu\")\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\n\t\t\tstdout, _, err := runner.Run(\"mktemp -d --tmpdir=/tmp\")\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t\tExpect(stdout).ToNot(BeEmpty())\n\t\t\tExpect(stdout).To(HavePrefix(\"/tmp\"))\n\t\t\ttmpDirPath = strings.TrimSpace(stdout)\n\n\t\t\toutput, _, err := runner.Run(\"mount | sort\")\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t\tExpect(output).ToNot(BeEmpty())\n\t\t\tmountsBefore = output\n\t\t})\n\n\t\tAfterEach(func() {\n\t\t\tmountsAfter, _, err := runner.Run(\"mount | sort\")\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t\tExpect(mountsAfter).To(Equal(mountsBefore))\n\t\t})\n\n\t\tIt(\"should not leak mounts when using the nvidia-container-runtime-hook\", Label(\"legacy\"), func(ctx context.Context) {\n\t\t\t_, _, err := runner.Run(\"docker run --rm -i --runtime=runc -e NVIDIA_VISIBLE_DEVICES=all -e NVIDIA_DRIVER_CAPABILITIES=all --mount type=bind,source=\" + tmpDirPath + \",target=/empty,bind-propagation=shared ubuntu true\")\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t})\n\n\t\tIt(\"should not leak mounts when using the nvidia-container-runtime\", func(ctx context.Context) {\n\t\t\t_, _, err := runner.Run(\"docker run --rm -i --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=all -e NVIDIA_DRIVER_CAPABILITIES=all --mount type=bind,source=\" + tmpDirPath + \",target=/empty,bind-propagation=shared ubuntu true\")\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t})\n\n\t\tIt(\"should not leak mounts when using CDI mode\", func(ctx context.Context) {\n\t\t\t_, _, err := runner.Run(\"docker run --rm -i --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=all -e NVIDIA_DRIVER_CAPABILITIES=runtime.nvidia.com/gpu=all --mount type=bind,source=\" + tmpDirPath + \",target=/empty,bind-propagation=shared ubuntu true\")\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t})\n\t})\n\n\tWhen(\"Running a container where the firmware folder resolves outside the container root\", Ordered, func() {\n\t\tvar outputDir string\n\t\tBeforeAll(func(ctx context.Context) {\n\t\t\toutput, _, err := runner.Run(\"mktemp -d -p $(pwd)\")\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t\toutputDir = strings.TrimSpace(output)\n\n\t\t\t_, _, err = runner.Run(\"docker pull ubuntu\")\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\n\t\t\t_, _, err = runner.Run(`docker build -t firmware-test \\\n            --build-arg RM_VERSION=\"$(basename $(ls -d /lib/firmware/nvidia/*.*))\" \\\n            --build-arg CURRENT_DIR=\"` + outputDir + `\" \\\n            - <<EOF\nFROM ubuntu\nRUN mkdir -p /lib/firmware/nvidia/\nARG RM_VERSION\nARG CURRENT_DIR\nRUN ln -s /../../../../../../../../\\$CURRENT_DIR /lib/firmware/nvidia/\\$RM_VERSION\nEOF`)\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t})\n\n\t\tAfterEach(func(ctx context.Context) {\n\t\t\toutput, _, err := runner.Run(\"ls -A \" + outputDir)\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t\tExpect(output).To(BeEmpty())\n\t\t})\n\n\t\tAfterAll(func(ctx context.Context) {\n\t\t\tif outputDir != \"\" {\n\t\t\t\trunner.Run(fmt.Sprintf(\"rm -rf %s\", outputDir))\n\t\t\t}\n\t\t})\n\n\t\tIt(\"should not fail when using CDI\", func(ctx context.Context) {\n\t\t\toutput, _, err := runner.Run(\"docker run --rm --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=runtime.nvidia.com/gpu=all firmware-test\")\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t\tExpect(output).To(BeEmpty())\n\t\t})\n\n\t\tIt(\"should not fail when using the nvidia-container-runtime\", func(ctx context.Context) {\n\t\t\toutput, _, err := runner.Run(\"docker run --rm --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=all -e NVIDIA_DRIVER_CAPABILITIES=all firmware-test\")\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t\tExpect(output).To(BeEmpty())\n\t\t})\n\n\t\tIt(\"should fail when using the nvidia-container-runtime-hook\", Label(\"legacy\"), func(ctx context.Context) {\n\t\t\t// Prior to Docker v29.2.0, the --gpus flag would inject the nvidia-container-runtime-hook.\n\t\t\tif semver.Compare(dockerVersion, \"v29.2.0\") >= 0 {\n\t\t\t\tSkip(fmt.Sprintf(\"This test requires Docker < v29.2.0. Found %s\", dockerVersion))\n\t\t\t}\n\t\t\toutput, stderr, err := runner.Run(\"docker run --rm --runtime=runc --gpus=all firmware-test\")\n\t\t\tExpect(err).To(HaveOccurred())\n\t\t\tExpect(output).To(BeEmpty())\n\t\t\tExpect(stderr).To(ContainSubstring(\": mount error: path error: /lib/firmware/nvidia/\"))\n\t\t})\n\n\t\tIt(\"should not fail when the --gpus flag is handled as a CDI request\", func(ctx context.Context) {\n\t\t\t// As of Docker v29.2.0, the --gpus flag is handled as a CDI\n\t\t\t// device request if CDI specs are available.\n\t\t\tif semver.Compare(dockerVersion, \"v29.2.0\") < 0 {\n\t\t\t\tSkip(fmt.Sprintf(\"This test requires Docker >= v29.2.0. Found %s\", dockerVersion))\n\t\t\t}\n\t\t\toutput, stderr, err := runner.Run(\"docker run --rm --runtime=runc --gpus=all firmware-test\")\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t\tExpect(output).To(BeEmpty())\n\t\t\tExpect(stderr).To(BeEmpty())\n\t\t})\n\t})\n\n\tWhen(\"Running a container with LD_PRELOAD\", Ordered, func() {\n\t\tBeforeAll(func(ctx context.Context) {\n\t\t\t// Create the source for the poc.\n\t\t\t_, _, err := runner.Run(`cat <<EOF > poc.c\n/**\nCode taken from https://youtu.be/56vcNIh35PA?si=gmh7Cx9P-lNTbl4L&t=328\n**/\n#include <stdio.h>\n#include <stdlib.h>\n#include <unistd.h>\n#include <fcntl.h>\n__attribute__((constructor))\nvoid init() {\n// Ultra-minimal exploit just create a marker file\nint fd = open(\"/owned\", O_CREAT | O_WRONLY, 0644);\n\tif (fd >= 0) {\n\t\twrite(fd, \"EXPLOITED\\n\", 10);\n\t\tclose(fd);\n\t}\n}\nEOF`)\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\n\t\t\t// Create the local Dockerfile\n\t\t\t_, _, err = runner.Run(`cat <<EOF > Dockerfile.nvidiascape\nFROM ubuntu AS build\nRUN apt-get update && \\\n\tapt-get install -y gcc \\\n\t&& \\\n\trm -rf /var/lib/apt/lists/*\nADD poc.c .\nRUN gcc -shared -fPIC -o poc.so poc.c\nFROM ubuntu\nENV LD_PRELOAD=/proc/self/cwd/poc.so\nCOPY --from=build poc.so /\nEOF`)\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\n\t\t\t// Build the test image.\n\t\t\t_, _, err = runner.Run(`docker build -t nvidiascape-test -f Dockerfile.nvidiascape .`)\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\n\t\t\t_, _, err = runner.Run(\"rm -f /owned\")\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t})\n\n\t\tAfterAll(func(ctx context.Context) {\n\t\t\t_, _, err := runner.Run(\"rm -f poc.c\")\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\n\t\t\t_, _, err = runner.Run(\"rm -f Dockerfile.nvidiascape\")\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t})\n\n\t\tAfterEach(func(ctx context.Context) {\n\t\t\t_, _, err := runner.Run(\"rm -f /owned\")\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t})\n\n\t\tIt(\"should not escape when using CDI\", func(ctx context.Context) {\n\t\t\t_, _, err := runner.Run(\"docker run --rm --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=runtime.nvidia.com/gpu=all nvidiascape-test\")\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\n\t\t\tstdout, stderr, err := runner.Run(`cat /owned || echo \"Unsuccessful\"`)\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t\tExpect(stderr).To(BeEmpty())\n\t\t\tExpect(strings.TrimSpace(stdout)).To(Equal(\"Unsuccessful\"))\n\t\t})\n\n\t\tIt(\"should not escape when using the nvidia-container-runtime\", func(ctx context.Context) {\n\t\t\t_, _, err := runner.Run(\"docker run --rm --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=all -e NVIDIA_DRIVER_CAPABILITIES=all nvidiascape-test\")\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\n\t\t\tstdout, stderr, err := runner.Run(`cat /owned || echo \"Unsuccessful\"`)\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t\tExpect(stderr).To(BeEmpty())\n\t\t\tExpect(strings.TrimSpace(stdout)).To(Equal(\"Unsuccessful\"))\n\t\t})\n\n\t\tIt(\"should not escape when using the nvidia-container-runtime-hook\", Label(\"legacy\"), func(ctx context.Context) {\n\t\t\t_, _, err := runner.Run(\"docker run --rm --runtime=runc --gpus=all nvidiascape-test\")\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\n\t\t\tstdout, stderr, err := runner.Run(`cat /owned || echo \"Unsuccessful\"`)\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t\tExpect(stderr).To(BeEmpty())\n\t\t\tExpect(strings.TrimSpace(stdout)).To(Equal(\"Unsuccessful\"))\n\t\t})\n\t})\n\n\tWhen(\"Running a container that installs ocl-icd-libopencl1\", Ordered, func() {\n\t\tBeforeAll(func(ctx context.Context) {\n\t\t\t_, _, err := runner.Run(\"docker pull ubuntu\")\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t})\n\t\tIt(\"should succeed when using the nvidia-container-runtime\", func(ctx context.Context) {\n\t\t\t_, _, err := runner.Run(`docker run --rm --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=all -e NVIDIA_DRIVER_CAPABILITIES=all \\\n\t\t\t\tubuntu bash -c \"apt-get update && apt-get install -y ocl-icd-libopencl1\"`)\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t})\n\t\tIt(\"should succeed when using the nvidia-container-runtime-hook\", Label(\"legacy\"), func(ctx context.Context) {\n\t\t\t_, _, err := runner.Run(`docker run --rm --runtime=runc --gpus=all -e NVIDIA_DRIVER_CAPABILITIES=all \\\n\t\t\t\tubuntu bash -c \"apt-get update && apt-get install -y ocl-icd-libopencl1\"`)\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t})\n\t})\n\n\tWhen(\"running a container an ubuntu container with specific ld.so.conf ordering\", Ordered, func() {\n\t\tvar (\n\t\t\texpectedOutput string\n\t\t)\n\t\tBeforeAll(func(ctx context.Context) {\n\t\t\t_, _, err := runner.Run(`docker build -t libordering \\\n            - <<EOF\nFROM ubuntu\nENV NVIDIA_VISIBLE_DEVICES=all\nRUN mkdir -p /extra/lib\nRUN cp /usr/lib/$(uname -m)-linux-gnu/libc.so.? /extra/lib/\nRUN echo \"/extra/lib\" > /etc/ld.so.conf.d/00-xxx.conf\nRUN ldconfig\nEOF`)\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\n\t\t\texpectedOutput, _, err = runner.Run(`docker run --rm --runtime=runc libordering bash -c \"ldconfig -p | grep libc.so.\"`)\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t})\n\n\t\tIt(\"should not change the ordering of libraries\", func(ctx context.Context) {\n\t\t\toutput, _, err := runner.Run(`docker run --rm --runtime=nvidia libordering bash -c \"ldconfig -p | grep libc.so.\"`)\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t\tExpect(output).To(Equal(expectedOutput))\n\t\t})\n\t})\n\n\tWhen(\"running a ubi9 container\", Ordered, func() {\n\t\tvar (\n\t\t\texpectedOutput string\n\t\t)\n\t\tBeforeAll(func(ctx context.Context) {\n\t\t\t_, _, err := runner.Run(`docker pull redhat/ubi9`)\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\n\t\t\texpectedOutput, _, err = runner.Run(`docker run --rm --runtime=runc redhat/ubi9 bash -c \"ldconfig -p | grep libc.so.\"`)\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t})\n\n\t\tIt(\"should include the system libraries when using the nvidia-container-runtime\", func(ctx context.Context) {\n\t\t\toutput, _, err := runner.Run(`docker run --rm --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=all redhat/ubi9 bash -c \"ldconfig -p | grep libc.so.\"`)\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t\tExpect(output).To(Equal(expectedOutput))\n\t\t})\n\t})\n\n\tWhen(\"running an alpine container\", Ordered, func() {\n\t\tBeforeAll(func(ctx context.Context) {\n\t\t\t_, _, err := runner.Run(`docker build -t alpinecompat \\\n            - <<EOF\nFROM alpine\nENV NVIDIA_VISIBLE_DEVICES=all\nRUN apk add --no-cache gcompat\nEOF`)\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t})\n\n\t\tIt(\"nvidia-smi should succeed when using the nvidia-container-runtime\", func(ctx context.Context) {\n\t\t\toutput, _, err := runner.Run(`docker run --rm --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=all \\\n\t\t\t\talpinecompat nvidia-smi -L`)\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t\tExpect(output).To(Equal(hostOutput))\n\t\t})\n\n\t\tIt(\"nvidia-smi should succeed when using the nvidia-container-runtime-hook\", Label(\"legacy\"), func(ctx context.Context) {\n\t\t\toutput, _, err := runner.Run(`docker run --rm --runtime=runc --gpus=all \\\n\t\t\t\talpinecompat nvidia-smi -L`)\n\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t\tExpect(output).To(Equal(hostOutput))\n\t\t})\n\t})\n})\n"
  },
  {
    "path": "tests/e2e/nvidia-ctk_containerd_test.go",
    "content": "/*\n * Copyright (c) 2025, NVIDIA CORPORATION.  All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage e2e\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"strings\"\n\n\t. \"github.com/onsi/ginkgo/v2\"\n\t. \"github.com/onsi/gomega\"\n\t\"github.com/pelletier/go-toml\"\n)\n\nconst (\n\t// restartContainerdScript restarts containerd and waits for it to be ready\n\trestartContainerdScript = `\nsystemctl restart containerd\nsleep 2\ncontainerd --version\n`\n\t// waitForContainerdScript waits for containerd to be ready\n\twaitForContainerdScript = `\nfor i in $(seq 1 10); do\n\tif ctr version > /dev/null 2>&1; then\n\t\techo \"containerd is ready\"\n\t\texit 0\n\tfi\n\techo \"Waiting for containerd to be ready...\"\n\tsleep 1\ndone\necho \"containerd failed to start\"\nexit 1\n`\n)\n\n// containerdTestEnv defines the test environment for different containerd\n// versions\ntype containerdTestEnv struct {\n\tname          string\n\timage         string\n\tconfigVersion int64\n\tpluginName    string\n\t// TODO: We could read this from the original config.\n\tcdiEnabledByDefault bool\n}\n\n// Define both containerd versions to test\nvar containerdEnvs = []*containerdTestEnv{\n\t{\n\t\tname:          \"containerd-1.7\",\n\t\timage:         \"kindest/node:v1.30.0@sha256:047357ac0cfea04663786a612ba1eaba9702bef25227a794b52890dd8bcd692e\",\n\t\tconfigVersion: 2,\n\t\tpluginName:    \"io.containerd.grpc.v1.cri\",\n\t},\n\t{\n\t\tname:          \"containerd-2.1\",\n\t\timage:         \"docker.io/kindest/base:v20250521-31a79fd4\",\n\t\tconfigVersion: 3,\n\t\tpluginName:    \"io.containerd.cri.v1.runtime\",\n\t\t// containerd >= 2.0 has CDI enabled by default\n\t\tcdiEnabledByDefault: true,\n\t},\n}\n\ntype toolkitConfig struct {\n\tsetAsDefault bool\n\tcdiEnabled   bool\n}\n\nvar toolkitConfigVariants = []*toolkitConfig{\n\t{\n\t\tsetAsDefault: true,\n\t\tcdiEnabled:   true,\n\t},\n\t{\n\t\tsetAsDefault: false,\n\t\tcdiEnabled:   true,\n\t},\n\t{\n\t\tsetAsDefault: false,\n\t\tcdiEnabled:   false,\n\t},\n}\n\ntype testConfig struct {\n\t*containerdTestEnv\n\t*toolkitConfig\n}\n\nfunc (c *testConfig) name() string {\n\treturn fmt.Sprintf(\"%s-default=%v-cdi=%v\", c.containerdTestEnv.name, c.setAsDefault, c.cdiEnabled)\n}\n\n// Integration tests for containerd drop-in config functionality.\n// These tests verify that nvidia-ctk runtime configure correctly applies\n// configuration changes while preserving existing settings. The preservation\n// validation is critical for containerd < 2.1 where plugin merge behavior\n// (commit 598c632) requires duplicating the CRI plugin section.\nvar _ = Describe(\"containerd\", Ordered, ContinueOnFailure, Label(\"container-runtime\"), func() {\n\tvar testsConfigs []*testConfig\n\tfor _, env := range containerdEnvs {\n\t\tfor _, variant := range toolkitConfigVariants {\n\t\t\tconfig := &testConfig{\n\t\t\t\tenv,\n\t\t\t\tvariant,\n\t\t\t}\n\t\t\ttestsConfigs = append(testsConfigs, config)\n\t\t}\n\t}\n\n\t// Run all tests for each testConfig\n\tfor _, tc := range testsConfigs {\n\t\tContext(tc.name(), Ordered, func() {\n\t\t\tvar (\n\t\t\t\tnestedContainerRunner  Runner\n\t\t\t\tcontainerName          = \"nvctk-e2e-containerd-tests\"\n\t\t\t\tbaselineConfig         *toml.Tree\n\t\t\t\tbaselineConfigPlugins  *toml.Tree\n\t\t\t\tbaselineConfigRuntimes map[string]any\n\t\t\t)\n\n\t\t\t// restartContainerdAndWait restarts containerd and waits for it\n\t\t\t// to be ready\n\t\t\trestartContainerdAndWait := func(runner Runner) error {\n\t\t\t\t_, _, err := runner.Run(restartContainerdScript)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"failed to restart containerd: %w\", err)\n\t\t\t\t}\n\n\t\t\t\t_, _, err = runner.Run(waitForContainerdScript)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"containerd did not become ready after restart\")\n\t\t\t\t}\n\t\t\t\treturn nil\n\t\t\t}\n\n\t\t\tBeforeAll(func(ctx context.Context) {\n\t\t\t\tvar err error\n\n\t\t\t\t// Create the nested container with the global cache mounted\n\t\t\t\tnestedContainerRunner, err = NewNestedContainerRunner(runner, tc.image, false, containerName, localCacheDir, false)\n\t\t\t\tExpect(err).ToNot(HaveOccurred())\n\n\t\t\t\t// Backup original containerd configuration\n\t\t\t\t_, _, err = nestedContainerRunner.Run(`\n\t\t\t# Backup the original conf.d directory\n\t\t\tif [ -d /etc/containerd/conf.d ]; then\n\t\t\t\tcp -r /etc/containerd/conf.d /tmp/containerd-conf.d.backup\n\t\t\tfi\n\n\t\t\t# Backup the original config.toml\n\t\t\tif [ -f /etc/containerd/config.toml ]; then\n\t\t\t\tcp /etc/containerd/config.toml /tmp/containerd-config.toml.backup\n\t\t\tfi\n\t\t`)\n\t\t\t\tExpect(err).ToNot(HaveOccurred(), \"Failed to backup containerd configuration\")\n\n\t\t\t\t// Restart containerd to ensure clean state before capturing baseline\n\t\t\t\terr = restartContainerdAndWait(nestedContainerRunner)\n\t\t\t\tExpect(err).ToNot(HaveOccurred(), \"Failed to restart containerd before baseline capture\")\n\n\t\t\t\t// CAPTURE BASELINE: Get config BEFORE any modifications\n\t\t\t\tbaselineOutput, _, err := nestedContainerRunner.Run(\"containerd config dump\")\n\t\t\t\tExpect(err).ToNot(HaveOccurred(), \"Failed to dump baseline configuration\")\n\n\t\t\t\tbaselineConfig, err = toml.Load(baselineOutput)\n\t\t\t\tExpect(err).ToNot(HaveOccurred(), \"Failed to parse baseline configuration\")\n\n\t\t\t\t// Get plugin configs for comparison\n\t\t\t\tbaselineConfigPlugins, err = getPluginConfig(baselineConfig, tc.pluginName)\n\t\t\t\tExpect(err).ToNot(HaveOccurred())\n\n\t\t\t\tbaselineConfigRuntimes, err = getRuntimesConfig(baselineConfigPlugins)\n\t\t\t\tExpect(err).ToNot(HaveOccurred())\n\n\t\t\t\t// Install the NVIDIA Container Toolkit packages\n\t\t\t\t_, _, err = toolkitInstaller.Install(nestedContainerRunner)\n\t\t\t\tExpect(err).ToNot(HaveOccurred(), \"Failed to install toolkit for containerd\")\n\t\t\t})\n\n\t\t\tAfterAll(func(ctx context.Context) {\n\t\t\t\t// Cleanup: remove the container\n\t\t\t\t_, _, err := runner.Run(fmt.Sprintf(\"docker rm -f %s 2>/dev/null || true\", containerName))\n\t\t\t\tif err != nil {\n\t\t\t\t\tGinkgoLogr.Error(err, \"failed to cleanup container\", \"container\", containerName)\n\t\t\t\t}\n\t\t\t})\n\n\t\t\tWhen(\"configuring containerd\", func() {\n\t\t\t\tvar (\n\t\t\t\t\tmergedConfig         *toml.Tree\n\t\t\t\t\tmergedConfigPlugins  *toml.Tree\n\t\t\t\t\tmergedConfigRuntimes map[string]any\n\t\t\t\t)\n\n\t\t\t\tBeforeAll(func(ctx context.Context) {\n\t\t\t\t\t// Apply nvidia-ctk configuration\n\t\t\t\t\tcmd := []string{\"nvidia-ctk runtime configure --runtime=containerd\"}\n\n\t\t\t\t\tif tc.setAsDefault {\n\t\t\t\t\t\tcmd = append(cmd, \"--set-as-default\")\n\t\t\t\t\t}\n\t\t\t\t\tif tc.cdiEnabled {\n\t\t\t\t\t\tcmd = append(cmd, \"--cdi.enabled\")\n\t\t\t\t\t}\n\n\t\t\t\t\tGinkgoLogr.Info(\"Applying nvidia-ctk configuration\", \"cmd\", strings.Join(cmd, \" \"))\n\t\t\t\t\t_, _, err := nestedContainerRunner.Run(strings.Join(cmd, \" \"))\n\t\t\t\t\tExpect(err).ToNot(HaveOccurred(), \"Failed to configure containerd\")\n\n\t\t\t\t\t// Restart containerd to apply merged configuration\n\t\t\t\t\terr = restartContainerdAndWait(nestedContainerRunner)\n\t\t\t\t\tExpect(err).ToNot(HaveOccurred(), \"Failed to restart containerd\")\n\n\t\t\t\t\t// Get merged configuration\n\t\t\t\t\tmergedOutput, _, err := nestedContainerRunner.Run(\"containerd config dump\")\n\t\t\t\t\tExpect(err).ToNot(HaveOccurred(), \"Failed to dump merged configuration\")\n\n\t\t\t\t\tmergedConfig, err = toml.Load(mergedOutput)\n\t\t\t\t\tExpect(err).ToNot(HaveOccurred(), \"Failed to parse merged configuration\")\n\n\t\t\t\t\tmergedConfigPlugins, err = getPluginConfig(mergedConfig, tc.pluginName)\n\t\t\t\t\tExpect(err).ToNot(HaveOccurred())\n\n\t\t\t\t\tmergedConfigRuntimes, err = getRuntimesConfig(mergedConfigPlugins)\n\t\t\t\t\tExpect(err).ToNot(HaveOccurred())\n\t\t\t\t})\n\n\t\t\t\tIt(\"existing runtimes should remain unchanged\", func(ctx context.Context) {\n\t\t\t\t\tfor runtimeName, runtimeConfig := range baselineConfigRuntimes {\n\t\t\t\t\t\tExpect(mergedConfigRuntimes).To(HaveKeyWithValue(runtimeName, runtimeConfig))\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\t\tIt(\"the nvidia runtime should be added with the correct options\", func(ctx context.Context) {\n\t\t\t\t\truncToml, err := toml.TreeFromMap(baselineConfigRuntimes[\"runc\"].(map[string]any))\n\t\t\t\t\tExpect(err).ToNot(HaveOccurred())\n\n\t\t\t\t\truncTomlString, err := runcToml.ToTomlString()\n\t\t\t\t\tExpect(err).ToNot(HaveOccurred())\n\n\t\t\t\t\tvar addedRuntimes []string\n\t\t\t\t\tfor runtimeName, runtimeConfig := range mergedConfigRuntimes {\n\t\t\t\t\t\tif _, ok := baselineConfigRuntimes[runtimeName]; ok {\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t}\n\t\t\t\t\t\taddedRuntimes = append(addedRuntimes, runtimeName)\n\n\t\t\t\t\t\tExpect(runtimeConfig).To(\n\t\t\t\t\t\t\tHaveKeyWithValue(\n\t\t\t\t\t\t\t\t\"options\", HaveKeyWithValue(\"BinaryName\", \"/usr/bin/nvidia-container-runtime\"),\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t)\n\n\t\t\t\t\t\truntimeToml, err := toml.TreeFromMap(runtimeConfig.(map[string]any))\n\t\t\t\t\t\tExpect(err).ToNot(HaveOccurred())\n\n\t\t\t\t\t\t// TODO: for some reason the podsandboxer is set to \"\" in the updated config\n\t\t\t\t\t\t// but set to a valid string in the runc config. This is most likely due to\n\t\t\t\t\t\t// the config source that we're implicitly using.\n\t\t\t\t\t\tif runcSandboxer := runcToml.Get(\"sandboxer\"); runcSandboxer != nil {\n\t\t\t\t\t\t\truntimeToml.Set(\"sandboxer\", runcSandboxer)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\truncPath := runcToml.GetPath([]string{\"options\", \"BinaryName\"})\n\t\t\t\t\t\tif runcPath == nil {\n\t\t\t\t\t\t\truntimeToml.DeletePath([]string{\"options\", \"BinaryName\"})\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor _, option := range runcToml.Get(\"options\").(*toml.Tree).Keys() {\n\t\t\t\t\t\t\truncOption := runcToml.GetPath([]string{\"options\", option})\n\t\t\t\t\t\t\tswitch v := runcOption.(type) {\n\t\t\t\t\t\t\tcase int64:\n\t\t\t\t\t\t\t\tif runcOption.(int64) != 0 {\n\t\t\t\t\t\t\t\t\tGinkgoLogr.Info(fmt.Sprintf(\"non-zero option for %v: %+v %T\", option, runcOption, v))\n\t\t\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcase string:\n\t\t\t\t\t\t\t\tif runcOption.(string) != \"\" {\n\t\t\t\t\t\t\t\t\tGinkgoLogr.Info(fmt.Sprintf(\"non-zero option for %v: %+v %T\", option, runcOption, v))\n\t\t\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcase bool:\n\t\t\t\t\t\t\t\tif runcOption.(bool) {\n\t\t\t\t\t\t\t\t\tGinkgoLogr.Info(fmt.Sprintf(\"non-zero option for %v: %+v %T\", option, runcOption, v))\n\t\t\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tpanic(fmt.Sprintf(\"invalid type for option %v: %+v %T\", option, runcOption, v))\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\truntimeToml.SetPath([]string{\"options\", option}, runcOption)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tExpect(runtimeToml.ToTomlString()).To(BeEquivalentTo(runcTomlString))\n\t\t\t\t\t}\n\n\t\t\t\t\tExpect(addedRuntimes).To(Equal([]string{\"nvidia\"}))\n\t\t\t\t})\n\n\t\t\t\tIt(\"should set the default runtime\", func(ctx context.Context) {\n\t\t\t\t\texpectedDefault := \"runc\"\n\t\t\t\t\tif tc.setAsDefault {\n\t\t\t\t\t\texpectedDefault = \"nvidia\"\n\t\t\t\t\t}\n\t\t\t\t\tExpect(mergedConfigPlugins).To(\n\t\t\t\t\t\tWithTransform(\n\t\t\t\t\t\t\tfunc(t *toml.Tree) any {\n\t\t\t\t\t\t\t\treturn t.GetPath([]string{\"containerd\", \"default_runtime_name\"})\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tBeEquivalentTo(expectedDefault),\n\t\t\t\t\t\t),\n\t\t\t\t\t)\n\t\t\t\t})\n\n\t\t\t\tIt(\"should set cdi_enabled as expected\", func(ctx context.Context) {\n\t\t\t\t\tExpect(mergedConfigPlugins).To(\n\t\t\t\t\t\tWithTransform(\n\t\t\t\t\t\t\tfunc(t *toml.Tree) any {\n\t\t\t\t\t\t\t\treturn t.GetPath([]string{\"enable_cdi\"})\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tBeEquivalentTo(tc.cdiEnabledByDefault || tc.cdiEnabled),\n\t\t\t\t\t\t),\n\t\t\t\t\t)\n\t\t\t\t})\n\n\t\t\t\tIt(\"should update the imports as expected\", func(ctx context.Context) {\n\t\t\t\t\tExpect(mergedConfig).To(\n\t\t\t\t\t\tWithTransform(\n\t\t\t\t\t\t\tfunc(t *toml.Tree) any {\n\t\t\t\t\t\t\t\treturn t.Get(\"imports\")\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tContainElement(HavePrefix(\"/etc/containerd/conf.d/\")),\n\t\t\t\t\t\t),\n\t\t\t\t\t)\n\t\t\t\t})\n\n\t\t\t\tIt(\"should preserve the other config options\", func(ctx context.Context) {\n\t\t\t\t\tstrippedMergedConfig, err := toml.TreeFromMap(mergedConfig.ToMap())\n\t\t\t\t\tExpect(err).ToNot(HaveOccurred())\n\n\t\t\t\t\t// We remove the nvidia runtime that was added.\n\t\t\t\t\tstrippedMergedConfig.DeletePath([]string{\"plugins\", tc.pluginName, \"containerd\", \"runtimes\", \"nvidia\"})\n\t\t\t\t\t// We update the settings that we expect to change.\n\t\t\t\t\tfor _, p := range [][]string{\n\t\t\t\t\t\t{\"plugins\", tc.pluginName, \"containerd\", \"default_runtime_name\"},\n\t\t\t\t\t\t{\"plugins\", tc.pluginName, \"enable_cdi\"},\n\t\t\t\t\t\t{\"imports\"},\n\t\t\t\t\t} {\n\t\t\t\t\t\tstrippedMergedConfig.SetPath(p, baselineConfig.GetPath(p))\n\t\t\t\t\t}\n\n\t\t\t\t\tExpect(strippedMergedConfig.ToTomlString()).To(BeEquivalentTo(func() string {\n\t\t\t\t\t\ts, _ := baselineConfig.ToTomlString()\n\t\t\t\t\t\treturn s\n\t\t\t\t\t}()))\n\t\t\t\t})\n\t\t\t})\n\t\t})\n\t}\n})\n\n// getPluginConfig navigates to the appropriate plugin configuration based on\n// containerd version\nfunc getPluginConfig(tree *toml.Tree, pluginName string) (*toml.Tree, error) {\n\tpluginTree := tree.GetPath([]string{\"plugins\", pluginName})\n\tif pluginTree == nil {\n\t\treturn nil, fmt.Errorf(\"plugin %v not found\", pluginName)\n\t}\n\n\tif pt, ok := pluginTree.(*toml.Tree); ok {\n\t\treturn pt, nil\n\t}\n\treturn nil, fmt.Errorf(\"plugin config is not a TOML tree\")\n}\n\n// getRuntimesConfig gets the runtimes configuration from the plugin config\nfunc getRuntimesConfig(pluginConfig *toml.Tree) (map[string]interface{}, error) {\n\truntimes := pluginConfig.GetPath([]string{\"containerd\", \"runtimes\"})\n\tif runtimes == nil {\n\t\treturn nil, fmt.Errorf(\"runtimes section not found\")\n\t}\n\n\t// Handle both map and *toml.Tree types\n\tswitch v := runtimes.(type) {\n\tcase map[string]interface{}:\n\t\treturn v, nil\n\tcase *toml.Tree:\n\t\treturn v.ToMap(), nil\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"runtimes is not a map or toml.Tree, got %T\", runtimes)\n\t}\n}\n"
  },
  {
    "path": "tests/e2e/runner.go",
    "content": "/*\n* Copyright (c) 2025, NVIDIA CORPORATION.  All rights reserved.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*     http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n */\n\npackage e2e\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"os\"\n\t\"os/exec\"\n\t\"strings\"\n\t\"text/template\"\n\t\"time\"\n\n\t\"golang.org/x/crypto/ssh\"\n)\n\nconst (\n\tinstallPrerequisitesScript = `\nset -e\nexport DEBIAN_FRONTEND=noninteractive\n# Install prerequisites\napt-get update\napt-get install -y curl gnupg2\n`\n)\n\ntype localRunner struct{}\ntype remoteRunner struct {\n\tsshKey  string\n\tsshUser string\n\thost    string\n\tport    string\n}\n\ntype nestedContainerRunner struct {\n\trunner        Runner\n\tcontainerName string\n}\n\ntype runnerOption func(*remoteRunner)\n\ntype Runner interface {\n\tRun(script string) (string, string, error)\n}\n\nfunc WithSshKey(key string) runnerOption {\n\treturn func(r *remoteRunner) {\n\t\tr.sshKey = key\n\t}\n}\n\nfunc WithSshUser(user string) runnerOption {\n\treturn func(r *remoteRunner) {\n\t\tr.sshUser = user\n\t}\n}\n\nfunc WithHost(host string) runnerOption {\n\treturn func(r *remoteRunner) {\n\t\tr.host = host\n\t}\n}\n\nfunc WithPort(port string) runnerOption {\n\treturn func(r *remoteRunner) {\n\t\tr.port = port\n\t}\n}\n\nfunc NewRunner(opts ...runnerOption) Runner {\n\tr := &remoteRunner{}\n\tfor _, opt := range opts {\n\t\topt(r)\n\t}\n\n\t// If the Host is empty, return a local runner\n\tif r.host == \"\" {\n\t\treturn localRunner{}\n\t}\n\n\t// Otherwise, return a remote runner\n\treturn r\n}\n\n// NewNestedContainerRunner creates a new nested container runner.\n// A nested container runs a container inside another container based on a\n// given runner (remote or local).\nfunc NewNestedContainerRunner(runner Runner, baseImage string, mountToolkitFromHost bool, containerName string, cacheDir string, requiresGPUs bool) (Runner, error) {\n\t// If a container with the same name exists from a previous test run, remove it first.\n\t// Ignore errors as container might not exist\n\t_, _, err := runner.Run(fmt.Sprintf(\"docker rm -f %s 2>/dev/null || true\", containerName))\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to remove container: %w\", err)\n\t}\n\n\tvar additionalContainerArguments []string\n\n\tif requiresGPUs {\n\t\t// If the container requires access to GPUs we explicitly add the nvidia\n\t\t// runtime and set `NVIDIA_VISIBLE_DEVICES` to trigger jit-cdi spec\n\t\t// generation.\n\t\tadditionalContainerArguments = append(additionalContainerArguments,\n\t\t\t\"--runtime=nvidia\",\n\t\t\t\"-e NVIDIA_VISIBLE_DEVICES=runtime.nvidia.com/gpu=all\",\n\t\t)\n\t}\n\n\tif cacheDir != \"\" {\n\t\tadditionalContainerArguments = append(additionalContainerArguments,\n\t\t\t\"-v \"+cacheDir+\":\"+cacheDir+\":ro\",\n\t\t)\n\t}\n\n\tif mountToolkitFromHost {\n\t\t// TODO: This is actually ONLY needed for the CLI tests.\n\t\t// If installCTK is false, we use the preinstalled toolkit.\n\t\t// This means we need to add toolkit libraries and binaries from the \"host\"\n\n\t\t// TODO: This should be updated for other distributions and other components of the toolkit.\n\t\toutput, _, err := runner.Run(\"ls /lib/**/libnvidia-container*.so.*.*\")\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed to list toolkit libraries: %w\", err)\n\t\t}\n\n\t\toutput = strings.TrimSpace(output)\n\t\tif output == \"\" {\n\t\t\treturn nil, fmt.Errorf(\"no toolkit libraries found\")\n\t\t}\n\n\t\tfor _, lib := range strings.Split(output, \"\\n\") {\n\t\t\tadditionalContainerArguments = append(additionalContainerArguments, \"-v \"+lib+\":\"+lib)\n\t\t}\n\n\t\t// Look for NVIDIA binaries in standard locations and mount them as volumes\n\t\tnvidiaBinaries := []string{\n\t\t\t\"nvidia-container-cli\",\n\t\t\t\"nvidia-container-runtime\",\n\t\t\t\"nvidia-container-runtime-hook\",\n\t\t\t\"nvidia-ctk\",\n\t\t\t\"nvidia-cdi-hook\",\n\t\t\t\"nvidia-container-runtime.cdi\",\n\t\t\t\"nvidia-container-runtime.legacy\",\n\t\t}\n\n\t\tsearchPaths := []string{\n\t\t\t\"/usr/bin\",\n\t\t\t\"/usr/sbin\",\n\t\t\t\"/usr/local/bin\",\n\t\t\t\"/usr/local/sbin\",\n\t\t}\n\n\t\tfor _, binary := range nvidiaBinaries {\n\t\t\tfor _, searchPath := range searchPaths {\n\t\t\t\tbinaryPath := searchPath + \"/\" + binary\n\t\t\t\t// Check if the binary exists at this path\n\t\t\t\tcheckCmd := fmt.Sprintf(\"test -f %s && echo 'exists'\", binaryPath)\n\t\t\t\toutput, _, err := runner.Run(checkCmd)\n\t\t\t\tif err == nil && strings.TrimSpace(output) == \"exists\" {\n\t\t\t\t\t// Binary found, add it as a volume mount\n\t\t\t\t\tadditionalContainerArguments = append(additionalContainerArguments,\n\t\t\t\t\t\tfmt.Sprintf(\"-v %s:%s\", binaryPath, binaryPath))\n\t\t\t\t\tbreak // Move to the next binary once found\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Mount the /lib/modules directory as a volume to enable the nvidia-cdi-refresh service\n\tadditionalContainerArguments = append(additionalContainerArguments, \"-v /lib/modules:/lib/modules\")\n\n\t// Launch the container in detached mode.\n\tcontainer := outerContainer{\n\t\tName:                containerName,\n\t\tBaseImage:           baseImage,\n\t\tAdditionalArguments: additionalContainerArguments,\n\t}\n\n\tscript, err := container.Render()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t_, _, err = runner.Run(script)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to run start container script: %w\", err)\n\t}\n\n\tinContainer := &nestedContainerRunner{\n\t\trunner:        runner,\n\t\tcontainerName: containerName,\n\t}\n\n\t_, _, err = inContainer.Run(installPrerequisitesScript)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to install prerequisites: %w\", err)\n\t}\n\n\treturn inContainer, nil\n}\n\nfunc (l localRunner) Run(script string) (string, string, error) {\n\t// Create a command to run the script using bash\n\tcmd := exec.Command(\"bash\", \"-c\", script)\n\n\t// Buffer to capture standard output\n\tvar stdout bytes.Buffer\n\tcmd.Stdout = &stdout\n\n\t// Buffer to capture standard error\n\tvar stderr bytes.Buffer\n\tcmd.Stderr = &stderr\n\n\t// Run the command\n\terr := cmd.Run()\n\tif err != nil {\n\t\treturn \"\", \"\", fmt.Errorf(\"script execution failed: %v\\nSTDOUT: %s\\nSTDERR: %s\", err, stdout.String(), stderr.String())\n\t}\n\n\t// Return the captured stdout and nil error\n\treturn stdout.String(), \"\", nil\n}\n\nfunc (r remoteRunner) Run(script string) (string, string, error) {\n\t// Create a new SSH connection\n\tclient, err := connectOrDie(r.sshKey, r.sshUser, r.host, r.port)\n\tif err != nil {\n\t\treturn \"\", \"\", fmt.Errorf(\"failed to connect to %s: %v\", r.host, err)\n\t}\n\tdefer client.Close()\n\n\t// Create a session\n\tsession, err := client.NewSession()\n\tif err != nil {\n\t\treturn \"\", \"\", fmt.Errorf(\"failed to create session: %v\", err)\n\t}\n\tdefer session.Close()\n\n\t// Capture stdout and stderr\n\tvar stdout, stderr bytes.Buffer\n\tsession.Stdout = &stdout\n\tsession.Stderr = &stderr\n\n\t// Run the script\n\terr = session.Run(script)\n\tif err != nil {\n\t\treturn \"\", stderr.String(), fmt.Errorf(\"script execution failed: %v\\nSTDOUT: %s\\nSTDERR: %s\", err, stdout.String(), stderr.String())\n\t}\n\n\t// Return stdout as string if no errors\n\treturn stdout.String(), \"\", nil\n}\n\n// Run runs teh specified script in the container using the docker exec command.\n// The script is is run as the root user.\nfunc (r nestedContainerRunner) Run(script string) (string, string, error) {\n\treturn r.runner.Run(`docker exec -u root \"` + r.containerName + `\" bash -c '` + script + `'`)\n}\n\n// createSshClient creates a ssh client, and retries if it fails to connect\nfunc connectOrDie(sshKey, sshUser, host, port string) (*ssh.Client, error) {\n\tvar client *ssh.Client\n\tvar err error\n\tkey, err := os.ReadFile(sshKey)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to read key file: %v\", err)\n\t}\n\tsigner, err := ssh.ParsePrivateKey(key)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to parse private key: %v\", err)\n\t}\n\tsshConfig := &ssh.ClientConfig{\n\t\tUser: sshUser,\n\t\tAuth: []ssh.AuthMethod{\n\t\t\tssh.PublicKeys(signer),\n\t\t},\n\t\tHostKeyCallback: ssh.InsecureIgnoreHostKey(),\n\t}\n\n\tconnectionFailed := false\n\tfor i := 0; i < 20; i++ {\n\t\tclient, err = ssh.Dial(\"tcp\", host+\":\"+port, sshConfig)\n\t\tif err == nil {\n\t\t\treturn client, nil // Connection succeeded, return the client.\n\t\t}\n\t\tconnectionFailed = true\n\t\t// Sleep for a brief moment before retrying.\n\t\t// You can adjust the duration based on your requirements.\n\t\ttime.Sleep(1 * time.Second)\n\t}\n\n\tif connectionFailed {\n\t\treturn nil, fmt.Errorf(\"failed to connect to %s after 10 retries, giving up\", host)\n\t}\n\n\treturn client, nil\n}\n\n// outerContainerTemplate represents a template to start a container with\n// a name specified.\ntype outerContainer struct {\n\tName                string\n\tBaseImage           string\n\tAdditionalArguments []string\n}\n\nfunc (o *outerContainer) Render() (string, error) {\n\ttmpl, err := template.New(\"startContainer\").Parse(`docker run -d --name {{.Name}} --privileged \\\n{{ range $i, $a := .AdditionalArguments -}}\n{{ $a }} \\\n{{ end -}}\n{{.BaseImage}} sleep infinity`)\n\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tvar script strings.Builder\n\terr = tmpl.Execute(&script, o)\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"failed to execute template: %w\", err)\n\t}\n\n\treturn script.String(), nil\n}\n"
  },
  {
    "path": "tests/go.mod",
    "content": "module github.com/NVIDIA/nvidia-container-toolkit/tests\n\ngo 1.24.0\n\ntoolchain go1.24.1\n\nrequire (\n\tgithub.com/onsi/ginkgo/v2 v2.28.1\n\tgithub.com/onsi/gomega v1.39.1\n\tgithub.com/pelletier/go-toml v1.9.5\n\tgolang.org/x/crypto v0.48.0\n\tgolang.org/x/mod v0.33.0\n)\n\nrequire (\n\tgithub.com/Masterminds/semver/v3 v3.4.0 // indirect\n\tgithub.com/go-logr/logr v1.4.3 // indirect\n\tgithub.com/go-task/slim-sprig/v3 v3.0.0 // indirect\n\tgithub.com/google/go-cmp v0.7.0 // indirect\n\tgithub.com/google/pprof v0.0.0-20260115054156-294ebfa9ad83 // indirect\n\tgo.yaml.in/yaml/v3 v3.0.4 // indirect\n\tgolang.org/x/net v0.49.0 // indirect\n\tgolang.org/x/sync v0.19.0 // indirect\n\tgolang.org/x/sys v0.41.0 // indirect\n\tgolang.org/x/text v0.34.0 // indirect\n\tgolang.org/x/tools v0.41.0 // indirect\n)\n"
  },
  {
    "path": "tests/go.sum",
    "content": "github.com/Masterminds/semver/v3 v3.4.0 h1:Zog+i5UMtVoCU8oKka5P7i9q9HgrJeGzI9SA1Xbatp0=\ngithub.com/Masterminds/semver/v3 v3.4.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM=\ngithub.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=\ngithub.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/gkampitakis/ciinfo v0.3.2 h1:JcuOPk8ZU7nZQjdUhctuhQofk7BGHuIy0c9Ez8BNhXs=\ngithub.com/gkampitakis/ciinfo v0.3.2/go.mod h1:1NIwaOcFChN4fa/B0hEBdAb6npDlFL8Bwx4dfRLRqAo=\ngithub.com/gkampitakis/go-diff v1.3.2 h1:Qyn0J9XJSDTgnsgHRdz9Zp24RaJeKMUHg2+PDZZdC4M=\ngithub.com/gkampitakis/go-diff v1.3.2/go.mod h1:LLgOrpqleQe26cte8s36HTWcTmMEur6OPYerdAAS9tk=\ngithub.com/gkampitakis/go-snaps v0.5.15 h1:amyJrvM1D33cPHwVrjo9jQxX8g/7E2wYdZ+01KS3zGE=\ngithub.com/gkampitakis/go-snaps v0.5.15/go.mod h1:HNpx/9GoKisdhw9AFOBT1N7DBs9DiHo/hGheFGBZ+mc=\ngithub.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=\ngithub.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=\ngithub.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI=\ngithub.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8=\ngithub.com/goccy/go-yaml v1.18.0 h1:8W7wMFS12Pcas7KU+VVkaiCng+kG8QiFeFwzFb+rwuw=\ngithub.com/goccy/go-yaml v1.18.0/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA=\ngithub.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=\ngithub.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=\ngithub.com/google/pprof v0.0.0-20260115054156-294ebfa9ad83 h1:z2ogiKUYzX5Is6zr/vP9vJGqPwcdqsWjOt+V8J7+bTc=\ngithub.com/google/pprof v0.0.0-20260115054156-294ebfa9ad83/go.mod h1:MxpfABSjhmINe3F1It9d+8exIHFvUqtLIRCdOGNXqiI=\ngithub.com/joshdk/go-junit v1.0.0 h1:S86cUKIdwBHWwA6xCmFlf3RTLfVXYQfvanM5Uh+K6GE=\ngithub.com/joshdk/go-junit v1.0.0/go.mod h1:TiiV0PqkaNfFXjEiyjWM3XXrhVyCa1K4Zfga6W52ung=\ngithub.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=\ngithub.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=\ngithub.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=\ngithub.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=\ngithub.com/maruel/natural v1.1.1 h1:Hja7XhhmvEFhcByqDoHz9QZbkWey+COd9xWfCfn1ioo=\ngithub.com/maruel/natural v1.1.1/go.mod h1:v+Rfd79xlw1AgVBjbO0BEQmptqb5HvL/k9GRHB7ZKEg=\ngithub.com/mfridman/tparse v0.18.0 h1:wh6dzOKaIwkUGyKgOntDW4liXSo37qg5AXbIhkMV3vE=\ngithub.com/mfridman/tparse v0.18.0/go.mod h1:gEvqZTuCgEhPbYk/2lS3Kcxg1GmTxxU7kTC8DvP0i/A=\ngithub.com/onsi/ginkgo/v2 v2.28.1 h1:S4hj+HbZp40fNKuLUQOYLDgZLwNUVn19N3Atb98NCyI=\ngithub.com/onsi/ginkgo/v2 v2.28.1/go.mod h1:CLtbVInNckU3/+gC8LzkGUb9oF+e8W8TdUsxPwvdOgE=\ngithub.com/onsi/gomega v1.39.1 h1:1IJLAad4zjPn2PsnhH70V4DKRFlrCzGBNrNaru+Vf28=\ngithub.com/onsi/gomega v1.39.1/go.mod h1:hL6yVALoTOxeWudERyfppUcZXjMwIMLnuSfruD2lcfg=\ngithub.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8=\ngithub.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=\ngithub.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=\ngithub.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=\ngithub.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII=\ngithub.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o=\ngithub.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=\ngithub.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=\ngithub.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY=\ngithub.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=\ngithub.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA=\ngithub.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM=\ngithub.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4=\ngithub.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU=\ngithub.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY=\ngithub.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28=\ngo.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc=\ngo.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg=\ngolang.org/x/crypto v0.48.0 h1:/VRzVqiRSggnhY7gNRxPauEQ5Drw9haKdM0jqfcCFts=\ngolang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVos=\ngolang.org/x/mod v0.33.0 h1:tHFzIWbBifEmbwtGz65eaWyGiGZatSrT9prnU8DbVL8=\ngolang.org/x/mod v0.33.0/go.mod h1:swjeQEj+6r7fODbD2cqrnje9PnziFuw4bmLbBZFrQ5w=\ngolang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o=\ngolang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8=\ngolang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4=\ngolang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=\ngolang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k=\ngolang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=\ngolang.org/x/term v0.40.0 h1:36e4zGLqU4yhjlmxEaagx2KuYbJq3EwY8K943ZsHcvg=\ngolang.org/x/term v0.40.0/go.mod h1:w2P8uVp06p2iyKKuvXIm7N/y0UCRt3UfJTfZ7oOpglM=\ngolang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk=\ngolang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA=\ngolang.org/x/tools v0.41.0 h1:a9b8iMweWG+S0OBnlU36rzLp20z1Rp10w+IY2czHTQc=\ngolang.org/x/tools v0.41.0/go.mod h1:XSY6eDqxVNiYgezAVqqCeihT4j1U2CCsqvH3WhQpnlg=\ngoogle.golang.org/protobuf v1.36.7 h1:IgrO7UwFQGJdRNXH/sQux4R1Dj1WAKcLElzeeRaXV2A=\ngoogle.golang.org/protobuf v1.36.7/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY=\ngopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=\ngopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=\ngopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=\ngopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=\ngopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=\n"
  },
  {
    "path": "tests/input/config.clone3.json",
    "content": "{\n  \"ociVersion\": \"1.0.2-dev\",\n  \"process\": {\n    \"terminal\": true,\n    \"user\": {\n      \"uid\": 0,\n      \"gid\": 0\n    },\n    \"args\": [\n      \"sleep\",\n      \"60\"\n    ],\n    \"env\": [\n      \"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\",\n      \"HOSTNAME=8de5efc6a95c\",\n      \"TERM=xterm\"\n    ],\n    \"cwd\": \"/\",\n    \"capabilities\": {\n      \"bounding\": [\n        \"CAP_CHOWN\",\n        \"CAP_DAC_OVERRIDE\",\n        \"CAP_FSETID\",\n        \"CAP_FOWNER\",\n        \"CAP_MKNOD\",\n        \"CAP_NET_RAW\",\n        \"CAP_SETGID\",\n        \"CAP_SETUID\",\n        \"CAP_SETFCAP\",\n        \"CAP_SETPCAP\",\n        \"CAP_NET_BIND_SERVICE\",\n        \"CAP_SYS_CHROOT\",\n        \"CAP_KILL\",\n        \"CAP_AUDIT_WRITE\"\n      ],\n      \"effective\": [\n        \"CAP_CHOWN\",\n        \"CAP_DAC_OVERRIDE\",\n        \"CAP_FSETID\",\n        \"CAP_FOWNER\",\n        \"CAP_MKNOD\",\n        \"CAP_NET_RAW\",\n        \"CAP_SETGID\",\n        \"CAP_SETUID\",\n        \"CAP_SETFCAP\",\n        \"CAP_SETPCAP\",\n        \"CAP_NET_BIND_SERVICE\",\n        \"CAP_SYS_CHROOT\",\n        \"CAP_KILL\",\n        \"CAP_AUDIT_WRITE\"\n      ],\n      \"inheritable\": [\n        \"CAP_CHOWN\",\n        \"CAP_DAC_OVERRIDE\",\n        \"CAP_FSETID\",\n        \"CAP_FOWNER\",\n        \"CAP_MKNOD\",\n        \"CAP_NET_RAW\",\n        \"CAP_SETGID\",\n        \"CAP_SETUID\",\n        \"CAP_SETFCAP\",\n        \"CAP_SETPCAP\",\n        \"CAP_NET_BIND_SERVICE\",\n        \"CAP_SYS_CHROOT\",\n        \"CAP_KILL\",\n        \"CAP_AUDIT_WRITE\"\n      ],\n      \"permitted\": [\n        \"CAP_CHOWN\",\n        \"CAP_DAC_OVERRIDE\",\n        \"CAP_FSETID\",\n        \"CAP_FOWNER\",\n        \"CAP_MKNOD\",\n        \"CAP_NET_RAW\",\n        \"CAP_SETGID\",\n        \"CAP_SETUID\",\n        \"CAP_SETFCAP\",\n        \"CAP_SETPCAP\",\n        \"CAP_NET_BIND_SERVICE\",\n        \"CAP_SYS_CHROOT\",\n        \"CAP_KILL\",\n        \"CAP_AUDIT_WRITE\"\n      ]\n    },\n    \"apparmorProfile\": \"docker-default\",\n    \"oomScoreAdj\": 0\n  },\n  \"root\": {\n    \"path\": \"/var/lib/docker/overlay2/fbf92f54592ddb439159bc7eb25c865b9347a2d71d63b41b7b4e4a471847c84f/merged\"\n  },\n  \"hostname\": \"8de5efc6a95c\",\n  \"mounts\": [\n    {\n      \"destination\": \"/proc\",\n      \"type\": \"proc\",\n      \"source\": \"proc\",\n      \"options\": [\n        \"nosuid\",\n        \"noexec\",\n        \"nodev\"\n      ]\n    },\n    {\n      \"destination\": \"/dev\",\n      \"type\": \"tmpfs\",\n      \"source\": \"tmpfs\",\n      \"options\": [\n        \"nosuid\",\n        \"strictatime\",\n        \"mode=755\",\n        \"size=65536k\"\n      ]\n    },\n    {\n      \"destination\": \"/dev/pts\",\n      \"type\": \"devpts\",\n      \"source\": \"devpts\",\n      \"options\": [\n        \"nosuid\",\n        \"noexec\",\n        \"newinstance\",\n        \"ptmxmode=0666\",\n        \"mode=0620\",\n        \"gid=5\"\n      ]\n    },\n    {\n      \"destination\": \"/sys\",\n      \"type\": \"sysfs\",\n      \"source\": \"sysfs\",\n      \"options\": [\n        \"nosuid\",\n        \"noexec\",\n        \"nodev\",\n        \"ro\"\n      ]\n    },\n    {\n      \"destination\": \"/sys/fs/cgroup\",\n      \"type\": \"cgroup\",\n      \"source\": \"cgroup\",\n      \"options\": [\n        \"ro\",\n        \"nosuid\",\n        \"noexec\",\n        \"nodev\"\n      ]\n    },\n    {\n      \"destination\": \"/dev/mqueue\",\n      \"type\": \"mqueue\",\n      \"source\": \"mqueue\",\n      \"options\": [\n        \"nosuid\",\n        \"noexec\",\n        \"nodev\"\n      ]\n    },\n    {\n      \"destination\": \"/dev/shm\",\n      \"type\": \"tmpfs\",\n      \"source\": \"shm\",\n      \"options\": [\n        \"nosuid\",\n        \"noexec\",\n        \"nodev\",\n        \"mode=1777\",\n        \"size=67108864\"\n      ]\n    },\n    {\n      \"destination\": \"/etc/resolv.conf\",\n      \"type\": \"bind\",\n      \"source\": \"/var/lib/docker/containers/8de5efc6a95c4ddae36dde7beb656ed5c7de912ecec2f628c42dbd0ef7bbeec6/resolv.conf\",\n      \"options\": [\n        \"rbind\",\n        \"rprivate\"\n      ]\n    },\n    {\n      \"destination\": \"/etc/hostname\",\n      \"type\": \"bind\",\n      \"source\": \"/var/lib/docker/containers/8de5efc6a95c4ddae36dde7beb656ed5c7de912ecec2f628c42dbd0ef7bbeec6/hostname\",\n      \"options\": [\n        \"rbind\",\n        \"rprivate\"\n      ]\n    },\n    {\n      \"destination\": \"/etc/hosts\",\n      \"type\": \"bind\",\n      \"source\": \"/var/lib/docker/containers/8de5efc6a95c4ddae36dde7beb656ed5c7de912ecec2f628c42dbd0ef7bbeec6/hosts\",\n      \"options\": [\n        \"rbind\",\n        \"rprivate\"\n      ]\n    }\n  ],\n  \"hooks\": {\n    \"prestart\": [\n      {\n        \"path\": \"/proc/593/exe\",\n        \"args\": [\n          \"libnetwork-setkey\",\n          \"-exec-root=/var/run/docker\",\n          \"8de5efc6a95c4ddae36dde7beb656ed5c7de912ecec2f628c42dbd0ef7bbeec6\",\n          \"9967b9f7c4d4\"\n        ]\n      }\n    ]\n  },\n  \"linux\": {\n    \"sysctl\": {\n      \"net.ipv4.ip_unprivileged_port_start\": \"0\"\n    },\n    \"resources\": {\n      \"devices\": [\n        {\n          \"allow\": false,\n          \"access\": \"rwm\"\n        },\n        {\n          \"allow\": true,\n          \"type\": \"c\",\n          \"major\": 1,\n          \"minor\": 5,\n          \"access\": \"rwm\"\n        },\n        {\n          \"allow\": true,\n          \"type\": \"c\",\n          \"major\": 1,\n          \"minor\": 3,\n          \"access\": \"rwm\"\n        },\n        {\n          \"allow\": true,\n          \"type\": \"c\",\n          \"major\": 1,\n          \"minor\": 9,\n          \"access\": \"rwm\"\n        },\n        {\n          \"allow\": true,\n          \"type\": \"c\",\n          \"major\": 1,\n          \"minor\": 8,\n          \"access\": \"rwm\"\n        },\n        {\n          \"allow\": true,\n          \"type\": \"c\",\n          \"major\": 5,\n          \"minor\": 0,\n          \"access\": \"rwm\"\n        },\n        {\n          \"allow\": true,\n          \"type\": \"c\",\n          \"major\": 5,\n          \"minor\": 1,\n          \"access\": \"rwm\"\n        },\n        {\n          \"allow\": false,\n          \"type\": \"c\",\n          \"major\": 10,\n          \"minor\": 229,\n          \"access\": \"rwm\"\n        }\n      ],\n      \"memory\": {\n        \"disableOOMKiller\": false\n      },\n      \"cpu\": {\n        \"shares\": 0\n      },\n      \"blockIO\": {\n        \"weight\": 0\n      }\n    },\n    \"cgroupsPath\": \"/docker/8de5efc6a95c4ddae36dde7beb656ed5c7de912ecec2f628c42dbd0ef7bbeec6\",\n    \"namespaces\": [\n      {\n        \"type\": \"mount\"\n      },\n      {\n        \"type\": \"network\"\n      },\n      {\n        \"type\": \"uts\"\n      },\n      {\n        \"type\": \"pid\"\n      },\n      {\n        \"type\": \"ipc\"\n      }\n    ],\n    \"seccomp\": {\n      \"defaultAction\": \"SCMP_ACT_ERRNO\",\n      \"architectures\": [\n        \"SCMP_ARCH_X86_64\",\n        \"SCMP_ARCH_X86\",\n        \"SCMP_ARCH_X32\"\n      ],\n      \"syscalls\": [\n        {\n          \"names\": [\n            \"accept\",\n            \"accept4\",\n            \"access\",\n            \"adjtimex\",\n            \"alarm\",\n            \"bind\",\n            \"brk\",\n            \"capget\",\n            \"capset\",\n            \"chdir\",\n            \"chmod\",\n            \"chown\",\n            \"chown32\",\n            \"clock_adjtime\",\n            \"clock_adjtime64\",\n            \"clock_getres\",\n            \"clock_getres_time64\",\n            \"clock_gettime\",\n            \"clock_gettime64\",\n            \"clock_nanosleep\",\n            \"clock_nanosleep_time64\",\n            \"close\",\n            \"close_range\",\n            \"connect\",\n            \"copy_file_range\",\n            \"creat\",\n            \"dup\",\n            \"dup2\",\n            \"dup3\",\n            \"epoll_create\",\n            \"epoll_create1\",\n            \"epoll_ctl\",\n            \"epoll_ctl_old\",\n            \"epoll_pwait\",\n            \"epoll_pwait2\",\n            \"epoll_wait\",\n            \"epoll_wait_old\",\n            \"eventfd\",\n            \"eventfd2\",\n            \"execve\",\n            \"execveat\",\n            \"exit\",\n            \"exit_group\",\n            \"faccessat\",\n            \"faccessat2\",\n            \"fadvise64\",\n            \"fadvise64_64\",\n            \"fallocate\",\n            \"fanotify_mark\",\n            \"fchdir\",\n            \"fchmod\",\n            \"fchmodat\",\n            \"fchown\",\n            \"fchown32\",\n            \"fchownat\",\n            \"fcntl\",\n            \"fcntl64\",\n            \"fdatasync\",\n            \"fgetxattr\",\n            \"flistxattr\",\n            \"flock\",\n            \"fork\",\n            \"fremovexattr\",\n            \"fsetxattr\",\n            \"fstat\",\n            \"fstat64\",\n            \"fstatat64\",\n            \"fstatfs\",\n            \"fstatfs64\",\n            \"fsync\",\n            \"ftruncate\",\n            \"ftruncate64\",\n            \"futex\",\n            \"futex_time64\",\n            \"futimesat\",\n            \"getcpu\",\n            \"getcwd\",\n            \"getdents\",\n            \"getdents64\",\n            \"getegid\",\n            \"getegid32\",\n            \"geteuid\",\n            \"geteuid32\",\n            \"getgid\",\n            \"getgid32\",\n            \"getgroups\",\n            \"getgroups32\",\n            \"getitimer\",\n            \"getpeername\",\n            \"getpgid\",\n            \"getpgrp\",\n            \"getpid\",\n            \"getppid\",\n            \"getpriority\",\n            \"getrandom\",\n            \"getresgid\",\n            \"getresgid32\",\n            \"getresuid\",\n            \"getresuid32\",\n            \"getrlimit\",\n            \"get_robust_list\",\n            \"getrusage\",\n            \"getsid\",\n            \"getsockname\",\n            \"getsockopt\",\n            \"get_thread_area\",\n            \"gettid\",\n            \"gettimeofday\",\n            \"getuid\",\n            \"getuid32\",\n            \"getxattr\",\n            \"inotify_add_watch\",\n            \"inotify_init\",\n            \"inotify_init1\",\n            \"inotify_rm_watch\",\n            \"io_cancel\",\n            \"ioctl\",\n            \"io_destroy\",\n            \"io_getevents\",\n            \"io_pgetevents\",\n            \"io_pgetevents_time64\",\n            \"ioprio_get\",\n            \"ioprio_set\",\n            \"io_setup\",\n            \"io_submit\",\n            \"io_uring_enter\",\n            \"io_uring_register\",\n            \"io_uring_setup\",\n            \"ipc\",\n            \"kill\",\n            \"lchown\",\n            \"lchown32\",\n            \"lgetxattr\",\n            \"link\",\n            \"linkat\",\n            \"listen\",\n            \"listxattr\",\n            \"llistxattr\",\n            \"_llseek\",\n            \"lremovexattr\",\n            \"lseek\",\n            \"lsetxattr\",\n            \"lstat\",\n            \"lstat64\",\n            \"madvise\",\n            \"membarrier\",\n            \"memfd_create\",\n            \"mincore\",\n            \"mkdir\",\n            \"mkdirat\",\n            \"mknod\",\n            \"mknodat\",\n            \"mlock\",\n            \"mlock2\",\n            \"mlockall\",\n            \"mmap\",\n            \"mmap2\",\n            \"mprotect\",\n            \"mq_getsetattr\",\n            \"mq_notify\",\n            \"mq_open\",\n            \"mq_timedreceive\",\n            \"mq_timedreceive_time64\",\n            \"mq_timedsend\",\n            \"mq_timedsend_time64\",\n            \"mq_unlink\",\n            \"mremap\",\n            \"msgctl\",\n            \"msgget\",\n            \"msgrcv\",\n            \"msgsnd\",\n            \"msync\",\n            \"munlock\",\n            \"munlockall\",\n            \"munmap\",\n            \"nanosleep\",\n            \"newfstatat\",\n            \"_newselect\",\n            \"open\",\n            \"openat\",\n            \"openat2\",\n            \"pause\",\n            \"pidfd_open\",\n            \"pidfd_send_signal\",\n            \"pipe\",\n            \"pipe2\",\n            \"poll\",\n            \"ppoll\",\n            \"ppoll_time64\",\n            \"prctl\",\n            \"pread64\",\n            \"preadv\",\n            \"preadv2\",\n            \"prlimit64\",\n            \"pselect6\",\n            \"pselect6_time64\",\n            \"pwrite64\",\n            \"pwritev\",\n            \"pwritev2\",\n            \"read\",\n            \"readahead\",\n            \"readlink\",\n            \"readlinkat\",\n            \"readv\",\n            \"recv\",\n            \"recvfrom\",\n            \"recvmmsg\",\n            \"recvmmsg_time64\",\n            \"recvmsg\",\n            \"remap_file_pages\",\n            \"removexattr\",\n            \"rename\",\n            \"renameat\",\n            \"renameat2\",\n            \"restart_syscall\",\n            \"rmdir\",\n            \"rseq\",\n            \"rt_sigaction\",\n            \"rt_sigpending\",\n            \"rt_sigprocmask\",\n            \"rt_sigqueueinfo\",\n            \"rt_sigreturn\",\n            \"rt_sigsuspend\",\n            \"rt_sigtimedwait\",\n            \"rt_sigtimedwait_time64\",\n            \"rt_tgsigqueueinfo\",\n            \"sched_getaffinity\",\n            \"sched_getattr\",\n            \"sched_getparam\",\n            \"sched_get_priority_max\",\n            \"sched_get_priority_min\",\n            \"sched_getscheduler\",\n            \"sched_rr_get_interval\",\n            \"sched_rr_get_interval_time64\",\n            \"sched_setaffinity\",\n            \"sched_setattr\",\n            \"sched_setparam\",\n            \"sched_setscheduler\",\n            \"sched_yield\",\n            \"seccomp\",\n            \"select\",\n            \"semctl\",\n            \"semget\",\n            \"semop\",\n            \"semtimedop\",\n            \"semtimedop_time64\",\n            \"send\",\n            \"sendfile\",\n            \"sendfile64\",\n            \"sendmmsg\",\n            \"sendmsg\",\n            \"sendto\",\n            \"setfsgid\",\n            \"setfsgid32\",\n            \"setfsuid\",\n            \"setfsuid32\",\n            \"setgid\",\n            \"setgid32\",\n            \"setgroups\",\n            \"setgroups32\",\n            \"setitimer\",\n            \"setpgid\",\n            \"setpriority\",\n            \"setregid\",\n            \"setregid32\",\n            \"setresgid\",\n            \"setresgid32\",\n            \"setresuid\",\n            \"setresuid32\",\n            \"setreuid\",\n            \"setreuid32\",\n            \"setrlimit\",\n            \"set_robust_list\",\n            \"setsid\",\n            \"setsockopt\",\n            \"set_thread_area\",\n            \"set_tid_address\",\n            \"setuid\",\n            \"setuid32\",\n            \"setxattr\",\n            \"shmat\",\n            \"shmctl\",\n            \"shmdt\",\n            \"shmget\",\n            \"shutdown\",\n            \"sigaltstack\",\n            \"signalfd\",\n            \"signalfd4\",\n            \"sigprocmask\",\n            \"sigreturn\",\n            \"socket\",\n            \"socketcall\",\n            \"socketpair\",\n            \"splice\",\n            \"stat\",\n            \"stat64\",\n            \"statfs\",\n            \"statfs64\",\n            \"statx\",\n            \"symlink\",\n            \"symlinkat\",\n            \"sync\",\n            \"sync_file_range\",\n            \"syncfs\",\n            \"sysinfo\",\n            \"tee\",\n            \"tgkill\",\n            \"time\",\n            \"timer_create\",\n            \"timer_delete\",\n            \"timer_getoverrun\",\n            \"timer_gettime\",\n            \"timer_gettime64\",\n            \"timer_settime\",\n            \"timer_settime64\",\n            \"timerfd_create\",\n            \"timerfd_gettime\",\n            \"timerfd_gettime64\",\n            \"timerfd_settime\",\n            \"timerfd_settime64\",\n            \"times\",\n            \"tkill\",\n            \"truncate\",\n            \"truncate64\",\n            \"ugetrlimit\",\n            \"umask\",\n            \"uname\",\n            \"unlink\",\n            \"unlinkat\",\n            \"utime\",\n            \"utimensat\",\n            \"utimensat_time64\",\n            \"utimes\",\n            \"vfork\",\n            \"vmsplice\",\n            \"wait4\",\n            \"waitid\",\n            \"waitpid\",\n            \"write\",\n            \"writev\"\n          ],\n          \"action\": \"SCMP_ACT_ALLOW\"\n        },\n        {\n          \"names\": [\n            \"ptrace\"\n          ],\n          \"action\": \"SCMP_ACT_ALLOW\"\n        },\n        {\n          \"names\": [\n            \"personality\"\n          ],\n          \"action\": \"SCMP_ACT_ALLOW\",\n          \"args\": [\n            {\n              \"index\": 0,\n              \"value\": 0,\n              \"op\": \"SCMP_CMP_EQ\"\n            }\n          ]\n        },\n        {\n          \"names\": [\n            \"personality\"\n          ],\n          \"action\": \"SCMP_ACT_ALLOW\",\n          \"args\": [\n            {\n              \"index\": 0,\n              \"value\": 8,\n              \"op\": \"SCMP_CMP_EQ\"\n            }\n          ]\n        },\n        {\n          \"names\": [\n            \"personality\"\n          ],\n          \"action\": \"SCMP_ACT_ALLOW\",\n          \"args\": [\n            {\n              \"index\": 0,\n              \"value\": 131072,\n              \"op\": \"SCMP_CMP_EQ\"\n            }\n          ]\n        },\n        {\n          \"names\": [\n            \"personality\"\n          ],\n          \"action\": \"SCMP_ACT_ALLOW\",\n          \"args\": [\n            {\n              \"index\": 0,\n              \"value\": 131080,\n              \"op\": \"SCMP_CMP_EQ\"\n            }\n          ]\n        },\n        {\n          \"names\": [\n            \"personality\"\n          ],\n          \"action\": \"SCMP_ACT_ALLOW\",\n          \"args\": [\n            {\n              \"index\": 0,\n              \"value\": 4294967295,\n              \"op\": \"SCMP_CMP_EQ\"\n            }\n          ]\n        },\n        {\n          \"names\": [\n            \"arch_prctl\"\n          ],\n          \"action\": \"SCMP_ACT_ALLOW\"\n        },\n        {\n          \"names\": [\n            \"modify_ldt\"\n          ],\n          \"action\": \"SCMP_ACT_ALLOW\"\n        },\n        {\n          \"names\": [\n            \"clone\"\n          ],\n          \"action\": \"SCMP_ACT_ALLOW\",\n          \"args\": [\n            {\n              \"index\": 0,\n              \"value\": 2114060288,\n              \"op\": \"SCMP_CMP_MASKED_EQ\"\n            }\n          ]\n        },\n        {\n          \"names\": [\n            \"clone3\"\n          ],\n          \"action\": \"SCMP_ACT_ERRNO\",\n          \"errnoRet\": 38\n        },\n        {\n          \"names\": [\n            \"chroot\"\n          ],\n          \"action\": \"SCMP_ACT_ALLOW\"\n        }\n      ]\n    },\n    \"maskedPaths\": [\n      \"/proc/asound\",\n      \"/proc/acpi\",\n      \"/proc/kcore\",\n      \"/proc/keys\",\n      \"/proc/latency_stats\",\n      \"/proc/timer_list\",\n      \"/proc/timer_stats\",\n      \"/proc/sched_debug\",\n      \"/proc/scsi\",\n      \"/sys/firmware\"\n    ],\n    \"readonlyPaths\": [\n      \"/proc/bus\",\n      \"/proc/fs\",\n      \"/proc/irq\",\n      \"/proc/sys\",\n      \"/proc/sysrq-trigger\"\n    ]\n  }\n}"
  },
  {
    "path": "tests/input/csv_samples/.csv",
    "content": ""
  },
  {
    "path": "tests/input/csv_samples/empty/.gitignore",
    "content": ""
  },
  {
    "path": "tests/input/csv_samples/jetson.csv",
    "content": "dev, nvidiactl\ndev, nvhost-gpu\ndev, nvhost-ctrl\ndev, nvhost-nvdec\ndev, nvhost-ctrl-gpu\ndev, nvhost-prof-gpu\ndev, nvhost-dbg-gpu\ndev, nvmap\ndev, tegra_dc_ctrl\ndev, tegra_dc_0\ndev, tegra_dc_1\ndev, nvhost-vic\ndev, nvhost-as-gpu\ndir, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/include\ndir, /usr/lib/aarch64-linux-gnu/tegra-egl\ndir, /usr/src/tensorrt\ndir, /usr/local/cuda\nlib, /usr/lib/aarch64-linux-gnu/libv4l/plugins/libv4l2_nvvidconv.so\nlib, /usr/lib/aarch64-linux-gnu/libv4l/plugins/libv4l2_nvvideocodec.so\nlib, /usr/lib/aarch64-linux-gnu/libv4l1.so.0\nlib, /usr/lib/aarch64-linux-gnu/libv4l2.so\nlib, /usr/lib/aarch64-linux-gnu/libv4lconvert.so.0\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvarguscamerasrc.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvcompositor.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvdrmvideosink.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnveglglessink.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnveglstreamsrc.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvegltransform.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvivafilter.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvjpeg.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvtee.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvvidconv.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvvideo4linux2.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvvideocuda.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvvideosink.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvvideosinks.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstomx.so\nlib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstpulseaudio.so\nlib, /usr/lib/aarch64-linux-gnu/libgstnvivameta.so\nlib, /usr/lib/aarch64-linux-gnu/libgstnvexifmeta.so\nlib, /usr/lib/aarch64-linux-gnu/libgstnvegl-1.0.so.0\nlib, /usr/lib/aarch64-linux-gnu/libnvonnxparser.so\nlib, /usr/lib/aarch64-linux-gnu/libnvinfer.so\nlib, /usr/lib/aarch64-linux-gnu/libnvinfer_plugin.so\nlib, /usr/lib/aarch64-linux-gnu/libnvparsers.so\nlib, /usr/lib/aarch64-linux-gnu/libcudnn.so\nlib, /usr/lib/aarch64-linux-gnu/libnvsample_cudaprocess.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libdrm.so.2\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvapputil.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvargus.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvargus_socketclient.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvargus_socketserver.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvavp.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvbuf_utils.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvcam_imageencoder.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvcameratools.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvcamerautils.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvcamlog.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvcamv4l2.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvcolorutil.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvdc.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvddk_2d_v2.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvddk_vic.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnveglstream_camconsumer.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnveglstreamproducer.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnveventlib.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvexif.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvfnet.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvfnetstoredefog.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvfnetstorehdfx.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvgov_boot.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvgov_camera.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvgov_force.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvgov_generic.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvgov_gpucompute.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvgov_graphics.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvgov_il.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvgov_spincircle.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvgov_tbc.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvgov_ui.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvid_mapper.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvidia-egl-wayland.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvidia-eglcore.so.32.1.0\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvidia-fatbinaryloader.so.32.1.0\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvidia-glcore.so.32.1.0\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvidia-glsi.so.32.1.0\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvidia-glvkspirv.so.32.1.0\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvidia-ptxjitcompiler.so.1\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvidia-rmapi-tegra.so.32.1.0\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvidia-tls.so.32.1.0\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvimp.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvjpeg.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvll.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvmedia.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvmm.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvmm_contentpipe.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvmm_parser.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvmm_utils.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvmmlite.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvmmlite_image.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvmmlite_utils.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvmmlite_video.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvodm_imager.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvomx.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvomxilclient.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvos.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvosd.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvparser.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvphs.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvphsd.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvrm.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvrm_gpu.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvrm_graphics.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvscf.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvtestresults.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvtnr.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvtracebuf.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvtvmr.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvtx_helper.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libnvwinsys.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libsensors.hal-client.nvs.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libsensors.l4t.no_fusion.nvs.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libsensors_hal.nvs.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/libtegrav4l2.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/nvidia_icd.json\nlib, /usr/lib/aarch64-linux-gnu/tegra/weston/EGLWLInputEventExample\nlib, /usr/lib/aarch64-linux-gnu/tegra/weston/EGLWLMockNavigation\nlib, /usr/lib/aarch64-linux-gnu/tegra/weston/LayerManagerControl\nlib, /usr/lib/aarch64-linux-gnu/tegra/weston/desktop-shell.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/weston/drm-backend.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/weston/eglstream-backend.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/weston/gl-renderer.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/weston/hmi-controller.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/weston/ivi-controller.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/weston/ivi-shell.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/weston/libilmClient.so.2.0.0\nlib, /usr/lib/aarch64-linux-gnu/tegra/weston/libilmCommon.so.2.0.0\nlib, /usr/lib/aarch64-linux-gnu/tegra/weston/libilmControl.so.2.0.0\nlib, /usr/lib/aarch64-linux-gnu/tegra/weston/libilmInput.so.2.0.0\nlib, /usr/lib/aarch64-linux-gnu/tegra/weston/libinput.so.10.10.1\nlib, /usr/lib/aarch64-linux-gnu/tegra/weston/spring-tool\nlib, /usr/lib/aarch64-linux-gnu/tegra/weston/wayland-backend.so\nlib, /usr/lib/aarch64-linux-gnu/tegra/weston/weston\nlib, /usr/lib/aarch64-linux-gnu/tegra/weston/weston-calibrator\nlib, /usr/lib/aarch64-linux-gnu/tegra/weston/weston-clickdot\nlib, /usr/lib/aarch64-linux-gnu/tegra/weston/weston-cliptest\nlib, /usr/lib/aarch64-linux-gnu/tegra/weston/weston-desktop-shell\nlib, /usr/lib/aarch64-linux-gnu/tegra/weston/weston-dnd\nlib, /usr/lib/aarch64-linux-gnu/tegra/weston/weston-eventdemo\nlib, /usr/lib/aarch64-linux-gnu/tegra/weston/weston-flower\nlib, /usr/lib/aarch64-linux-gnu/tegra/weston/weston-fullscreen\nlib, /usr/lib/aarch64-linux-gnu/tegra/weston/weston-image\nlib, /usr/lib/aarch64-linux-gnu/tegra/weston/weston-info\nlib, /usr/lib/aarch64-linux-gnu/tegra/weston/weston-ivi-shell-user-interface\nlib, /usr/lib/aarch64-linux-gnu/tegra/weston/weston-keyboard\nlib, /usr/lib/aarch64-linux-gnu/tegra/weston/weston-launch\nlib, /usr/lib/aarch64-linux-gnu/tegra/weston/weston-multi-resource\nlib, /usr/lib/aarch64-linux-gnu/tegra/weston/weston-resizor\nlib, /usr/lib/aarch64-linux-gnu/tegra/weston/weston-scaler\nlib, /usr/lib/aarch64-linux-gnu/tegra/weston/weston-screenshooter\nlib, /usr/lib/aarch64-linux-gnu/tegra/weston/weston-simple-egl\nlib, /usr/lib/aarch64-linux-gnu/tegra/weston/weston-simple-shm\nlib, /usr/lib/aarch64-linux-gnu/tegra/weston/weston-simple-touch\nlib, /usr/lib/aarch64-linux-gnu/tegra/weston/weston-smoke\nlib, /usr/lib/aarch64-linux-gnu/tegra/weston/weston-stacking\nlib, /usr/lib/aarch64-linux-gnu/tegra/weston/weston-subsurfaces\nlib, /usr/lib/aarch64-linux-gnu/tegra/weston/weston-terminal\nlib, /usr/lib/aarch64-linux-gnu/tegra/weston/weston-transformed\nlib, /usr/lib/libvisionworks_tracking.so.0.88\nlib, /usr/lib/libvisionworks_sfm.so.0.90\nlib, /usr/lib/libvisionworks.so\n"
  },
  {
    "path": "tests/input/csv_samples/other.not_csv",
    "content": ""
  },
  {
    "path": "tests/input/csv_samples/simple.csv",
    "content": "lib,/lib/target\ndir,/lib/target\ndev,/dev/null\ndev,full\ndev,/dev/target\nsym,/source\n"
  },
  {
    "path": "tests/input/csv_samples/simple_wrong.csv",
    "content": "dir\n"
  },
  {
    "path": "tests/input/csv_samples/spaced.csv",
    "content": "   dev   , /dev/target \nlib,      /lib/target\n\ndir,/lib/target   \n\nsym, /source\n\n       \n\n"
  },
  {
    "path": "tests/input/nvidia-container-runtime/config.toml",
    "content": ""
  },
  {
    "path": "tests/input/test_spec.json",
    "content": "{\n\t\"ociVersion\": \"1.0.1-dev\",\n\t\"process\": {\n\t\t\"terminal\": true,\n\t\t\"user\": {\n\t\t\t\"uid\": 0,\n\t\t\t\"gid\": 0\n\t\t},\n\t\t\"args\": [\n\t\t\t\"sh\"\n\t\t],\n\t\t\"env\": [\n\t\t\t\"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\",\n\t\t\t\"TERM=xterm\"\n\t\t],\n\t\t\"cwd\": \"/\",\n\t\t\"capabilities\": {\n\t\t\t\"bounding\": [\n\t\t\t\t\"CAP_AUDIT_WRITE\",\n\t\t\t\t\"CAP_KILL\",\n\t\t\t\t\"CAP_NET_BIND_SERVICE\"\n\t\t\t],\n\t\t\t\"effective\": [\n\t\t\t\t\"CAP_AUDIT_WRITE\",\n\t\t\t\t\"CAP_KILL\",\n\t\t\t\t\"CAP_NET_BIND_SERVICE\"\n\t\t\t],\n\t\t\t\"inheritable\": [\n\t\t\t\t\"CAP_AUDIT_WRITE\",\n\t\t\t\t\"CAP_KILL\",\n\t\t\t\t\"CAP_NET_BIND_SERVICE\"\n\t\t\t],\n\t\t\t\"permitted\": [\n\t\t\t\t\"CAP_AUDIT_WRITE\",\n\t\t\t\t\"CAP_KILL\",\n\t\t\t\t\"CAP_NET_BIND_SERVICE\"\n\t\t\t],\n\t\t\t\"ambient\": [\n\t\t\t\t\"CAP_AUDIT_WRITE\",\n\t\t\t\t\"CAP_KILL\",\n\t\t\t\t\"CAP_NET_BIND_SERVICE\"\n\t\t\t]\n\t\t},\n\t\t\"rlimits\": [\n\t\t\t{\n\t\t\t\t\"type\": \"RLIMIT_NOFILE\",\n\t\t\t\t\"hard\": 1024,\n\t\t\t\t\"soft\": 1024\n\t\t\t}\n\t\t],\n\t\t\"noNewPrivileges\": true\n\t},\n\t\"root\": {\n\t\t\"path\": \"rootfs\",\n\t\t\"readonly\": true\n\t},\n\t\"hostname\": \"runc\",\n\t\"mounts\": [\n\t\t{\n\t\t\t\"destination\": \"/proc\",\n\t\t\t\"type\": \"proc\",\n\t\t\t\"source\": \"proc\"\n\t\t},\n\t\t{\n\t\t\t\"destination\": \"/dev\",\n\t\t\t\"type\": \"tmpfs\",\n\t\t\t\"source\": \"tmpfs\",\n\t\t\t\"options\": [\n\t\t\t\t\"nosuid\",\n\t\t\t\t\"strictatime\",\n\t\t\t\t\"mode=755\",\n\t\t\t\t\"size=65536k\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"destination\": \"/dev/pts\",\n\t\t\t\"type\": \"devpts\",\n\t\t\t\"source\": \"devpts\",\n\t\t\t\"options\": [\n\t\t\t\t\"nosuid\",\n\t\t\t\t\"noexec\",\n\t\t\t\t\"newinstance\",\n\t\t\t\t\"ptmxmode=0666\",\n\t\t\t\t\"mode=0620\",\n\t\t\t\t\"gid=5\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"destination\": \"/dev/shm\",\n\t\t\t\"type\": \"tmpfs\",\n\t\t\t\"source\": \"shm\",\n\t\t\t\"options\": [\n\t\t\t\t\"nosuid\",\n\t\t\t\t\"noexec\",\n\t\t\t\t\"nodev\",\n\t\t\t\t\"mode=1777\",\n\t\t\t\t\"size=65536k\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"destination\": \"/dev/mqueue\",\n\t\t\t\"type\": \"mqueue\",\n\t\t\t\"source\": \"mqueue\",\n\t\t\t\"options\": [\n\t\t\t\t\"nosuid\",\n\t\t\t\t\"noexec\",\n\t\t\t\t\"nodev\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"destination\": \"/sys\",\n\t\t\t\"type\": \"sysfs\",\n\t\t\t\"source\": \"sysfs\",\n\t\t\t\"options\": [\n\t\t\t\t\"nosuid\",\n\t\t\t\t\"noexec\",\n\t\t\t\t\"nodev\",\n\t\t\t\t\"ro\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"destination\": \"/sys/fs/cgroup\",\n\t\t\t\"type\": \"cgroup\",\n\t\t\t\"source\": \"cgroup\",\n\t\t\t\"options\": [\n\t\t\t\t\"nosuid\",\n\t\t\t\t\"noexec\",\n\t\t\t\t\"nodev\",\n\t\t\t\t\"relatime\",\n\t\t\t\t\"ro\"\n\t\t\t]\n\t\t}\n\t],\n\t\"linux\": {\n\t\t\"resources\": {\n\t\t\t\"devices\": [\n\t\t\t\t{\n\t\t\t\t\t\"allow\": false,\n\t\t\t\t\t\"access\": \"rwm\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"namespaces\": [\n\t\t\t{\n\t\t\t\t\"type\": \"pid\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"type\": \"network\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"type\": \"ipc\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"type\": \"uts\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"type\": \"mount\"\n\t\t\t}\n\t\t],\n\t\t\"maskedPaths\": [\n\t\t\t\"/proc/kcore\",\n\t\t\t\"/proc/latency_stats\",\n\t\t\t\"/proc/timer_list\",\n\t\t\t\"/proc/timer_stats\",\n\t\t\t\"/proc/sched_debug\",\n\t\t\t\"/sys/firmware\",\n\t\t\t\"/proc/scsi\"\n\t\t],\n\t\t\"readonlyPaths\": [\n\t\t\t\"/proc/asound\",\n\t\t\t\"/proc/bus\",\n\t\t\t\"/proc/fs\",\n\t\t\t\"/proc/irq\",\n\t\t\t\"/proc/sys\",\n\t\t\t\"/proc/sysrq-trigger\"\n\t\t]\n\t}\n}"
  },
  {
    "path": "tests/release/Makefile",
    "content": "# Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nWORKFLOW ?= nvidia-docker\n\nDISTRIBUTIONS := ubuntu20.04 ubuntu18.04 centos8 fedora35\n\nIMAGE_TARGETS := $(patsubst %,image-%, $(DISTRIBUTIONS))\nRUN_TARGETS := $(patsubst %,run-%, $(DISTRIBUTIONS))\nRELEASE_TARGETS := $(patsubst %,release-%, $(DISTRIBUTIONS))\nLOCAL_TARGETS := $(patsubst %,local-%, $(DISTRIBUTIONS))\n\n.PHONY: $(IMAGE_TARGETS) $(RUN_TARGETS)\n\nimage-%: DOCKERFILE = docker/$(*)/Dockerfile\n\nimages: $(IMAGE_TARGETS)\n$(IMAGE_TARGETS): image-%: $(DOCKERFILE)\n\tdocker build ${PLATFORM_ARGS} \\\n    -t nvidia-container-toolkit-repo-test:$(*) \\\n    -f $(DOCKERFILE) \\\n    $(shell dirname $(DOCKERFILE))\n\n\n%-ubuntu20.04: ARCH ?= amd64\n%-ubuntu18.04: ARCH ?= amd64\n%-centos8: ARCH ?= x86_64\n%-fedora35: ARCH ?= x86_64\n\nPLATFORM_ARGS = --platform=linux/${ARCH}\n\nRELEASE_TEST_DIR := $(patsubst %/,%,$(dir $(abspath $(lastword $(MAKEFILE_LIST)))))\nPROJECT_ROOT := $(RELEASE_TEST_DIR)/../..\n\nLOCAL_PACKAGE_ROOT := $(PROJECT_ROOT)/dist\n\nlocal-%: DIST = $(*)\nlocal-%: LOCAL_REPO_ARGS = -v $(LOCAL_PACKAGE_ROOT)/$(DIST)/$(ARCH):/local-repository\n$(LOCAL_TARGETS): local-%: run-%\n\nrun-%: DIST = $(*)\n$(RUN_TARGETS): run-%: image-%\n\tdocker run ${PLATFORM_ARGS} --rm -ti  \\\n    $(LOCAL_REPO_ARGS) \\\n    nvidia-container-toolkit-repo-test:$(*)\n\n# Ensure that the local package root exists\n$(RELEASE_TARGETS): release-%: $(LOCAL_PACKAGE_ROOT)/$(*)/$(ARCH)\n\t$(PROJECT_ROOT)/scripts/build-packages.sh $(*)-$(ARCH)\n"
  },
  {
    "path": "tests/release/README.md",
    "content": "# Testing Packaging Workflows\n\n## Building the Docker images:\n\n```bash\nmake images\n```\n\nThis assumes that the `nvidia-docker` workflow is being tested and that the test packages have been published to the `elezar.github.io` GitHub pages page. These can be overridden\nusing make variables.\n\nValid values for `workflow` are:\n* `nvidia-docker`\n* `nvidia-container-runtime`\n\nThis follows the instructions for setting up the [`nvidia-docker` repostitory](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#setting-up-nvidia-container-toolkit).\n\n\n## Testing local package changes\n\nRunning:\n```bash\nmake local-ubuntu18.04\n```\nwill build the `ubuntu18.04-amd64` packages for release and launch a docker container with these packages added to a local APT repository.\n\nThe various `apt` workflows can then be tested as if the packages were released to the `libnvidia-container` experimental repository.\n\nThe `local-centos8` make target is available for testing the `centos8-x86_64` workflows as representative of `yum`-based installation workflows.\n\n\n### Example\n\nIn the `centos8`-based container above we see the following `nvidia-docker2` packages available with the `local-repository` disabled:\n\n```bash\n$ yum list --showduplicates nvidia-docker2 | tail -2\nnvidia-docker2.noarch           2.5.0-1                            nvidia-docker\nnvidia-docker2.noarch           2.6.0-1                            nvidia-docker\n```\n\nInstalling `nvidia-docker2` shows:\n```bash\n$ yum install -y nvidia-docker2\n```\n\ninstalls the following packages:\n```bash\n$ yum list installed | grep nvidia\nlibnvidia-container-tools.x86_64   1.5.1-1                                 @libnvidia-container\nlibnvidia-container1.x86_64        1.5.1-1                                 @libnvidia-container\nnvidia-container-runtime.x86_64    3.5.0-1                                 @nvidia-container-runtime\nnvidia-container-toolkit.x86_64    1.5.1-2                                 @nvidia-container-runtime\nnvidia-docker2.noarch              2.6.0-1                                 @nvidia-docker\n```\nNote the repositories where these packages were installed from.\n\nWe now enable the `local-repository` to simulate the new packages being published to the `libnvidia-container` experimental repository and check the available `nvidia-docker2` versions:\n```bash\n$ yum-config-manager --enable local-repository\n$ yum list --showduplicates nvidia-docker2 | tail -2\nnvidia-docker2.noarch         2.6.0-1                           nvidia-docker\nnvidia-docker2.noarch         2.6.1-0.1.rc.1                    local-repository\n```\nShowing the new version available in the local repository.\n\nRunning:\n```\n$ yum install nvidia-docker2\nLast metadata expiration check: 0:01:15 ago on Fri Sep 24 12:49:20 2021.\nPackage nvidia-docker2-2.6.0-1.noarch is already installed.\nDependencies resolved.\n===============================================================================================================================\n Package                                Architecture        Version                        Repository                     Size\n===============================================================================================================================\nUpgrading:\n libnvidia-container-tools              x86_64              1.6.0-0.1.rc.1                 local-repository               48 k\n libnvidia-container1                   x86_64              1.6.0-0.1.rc.1                 local-repository               95 k\n nvidia-container-toolkit               x86_64              1.6.0-0.1.rc.1                 local-repository              1.5 M\n     replacing  nvidia-container-runtime.x86_64 3.5.0-1\n nvidia-docker2                         noarch              2.6.1-0.1.rc.1                 local-repository               13 k\n\nTransaction Summary\n===============================================================================================================================\nUpgrade  4 Packages\n\nTotal size: 1.7 M\n```\nShowing that all the components of the stack will be updated with versions from the `local-repository`.\n\nAfter installation the installed packages are shown as:\n```bash\n$ yum list installed | grep nvidia\nlibnvidia-container-tools.x86_64   1.6.0-0.1.rc.1                          @local-repository\nlibnvidia-container1.x86_64        1.6.0-0.1.rc.1                          @local-repository\nnvidia-container-toolkit.x86_64    1.6.0-0.1.rc.1                          @local-repository\nnvidia-docker2.noarch              2.6.1-0.1.rc.1                          @local-repository\n```\nShowing that:\n1. All versions have been installed from the same repository\n2. The `nvidia-container-runtime` package was removed as it is no longer required.\n\nThe `nvidia-container-runtime`  executable is, however, still present on the system:\n```bash\n# ls -l /usr/bin/nvidia-container-runtime\n-rwxr-xr-x 1 root root 2256280 Sep 24 12:42 /usr/bin/nvidia-container-runtime\n```\n"
  },
  {
    "path": "tests/release/docker/centos8/Dockerfile",
    "content": "ARG BASEIMAGE=quay.io/centos/centos:stream8\nFROM ${BASEIMAGE}\n\nRUN yum install -y \\\n    yum-utils \\\n    ruby-devel \\\n    gcc \\\n    make \\\n    rpm-build \\\n    rubygems \\\n    createrepo\n\nRUN gem install --no-document fpm\n\n# We create and install a dummy docker package since these dependencies are out of\n# scope for the tests performed here.\nRUN fpm -s empty \\\n    -t rpm \\\n    --description \"A dummy package for docker-ce_18.06.3.ce-3.el7\" \\\n    -n docker-ce --version 18.06.3.ce-3.el7 \\\n    -p /tmp/docker.rpm \\\n    && \\\n    yum localinstall -y /tmp/docker.rpm \\\n    && \\\n    rm -f /tmp/docker.rpm\n\n\nRUN curl -s -L https://nvidia.github.io/libnvidia-container/stable/rpm/libnvidia-container.repo \\\n    | tee /etc/yum.repos.d/nvidia-container-toolkit.repo\n\nCOPY entrypoint.sh /\nCOPY install_repo.sh /\n\nENTRYPOINT [ \"/entrypoint.sh\" ]"
  },
  {
    "path": "tests/release/docker/centos8/entrypoint.sh",
    "content": "#!/usr/bin/env bash\n\n# Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# This script is used to build the packages for the components of the NVIDIA\n# Container Stack. These include the nvidia-container-toolkit in this repository\n# as well as the components included in the third_party folder.\n# All required packages are generated in the specified dist folder.\n\n: ${LOCAL_REPO_DIRECTORY:=/local-repository}\nif [[ -d ${LOCAL_REPO_DIRECTORY} ]]; then\n    echo \"Setting up local-repository\"\n    createrepo \"${LOCAL_REPO_DIRECTORY}\"\n\n    cat >/etc/yum.repos.d/local.repo <<EOL\n[local-repository]\nname=NVIDIA Container Toolkit Local Packages\nbaseurl=file://${LOCAL_REPO_DIRECTORY}\nenabled=1\ngpgcheck=0\nprotect=1\nEOL\n    \nelif [[ -n ${TEST_REPO} ]]; then\n    ./install_repo.sh ${TEST_REPO}\nelse\n    echo \"Skipping repo setup\"\nfi\n\nexec bash $@\n"
  },
  {
    "path": "tests/release/docker/centos8/install_repo.sh",
    "content": "#!/usr/bin/env bash\n\n# Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# This script is used to build the packages for the components of the NVIDIA\n# Container Stack. These include the nvidia-container-toolkit in this repository\n# as well as the components included in the third_party folder.\n# All required packages are generated in the specified dist folder.\n\ntest_repo=$1\necho \"Setting up TEST repo: ${test_repo}\"\nsed -i -e \"s#nvidia\\.github\\.io/libnvidia-container#${test_repo}/libnvidia-container#g\" /etc/yum.repos.d/nvidia-container-toolkit.repo\nyum-config-manager --enable libnvidia-container-experimental\n"
  },
  {
    "path": "tests/release/docker/fedora35/Dockerfile",
    "content": "ARG BASEIMAGE=fedora:35\nFROM ${BASEIMAGE}\n\nRUN yum install -y \\\n    yum-utils \\\n    ruby-devel \\\n    gcc \\\n    make \\\n    rpm-build \\\n    rubygems \\\n    createrepo\n\nRUN gem install --no-document fpm\n\n# We create and install a dummy docker package since these dependencies are out of\n# scope for the tests performed here.\nRUN fpm -s empty \\\n    -t rpm \\\n    --description \"A dummy package for docker-ce_18.06.3.ce-3.el7\" \\\n    -n docker-ce --version 18.06.3.ce-3.el7 \\\n    -p /tmp/docker.rpm \\\n    && \\\n    yum localinstall -y /tmp/docker.rpm \\\n    && \\\n    rm -f /tmp/docker.rpm\n\n\nRUN curl -s -L https://nvidia.github.io/libnvidia-container/fedora35/libnvidia-container.repo \\\n    | tee /etc/yum.repos.d/nvidia-container-toolkit.repo\n\nCOPY entrypoint.sh /\nCOPY install_repo.sh /\n\nENTRYPOINT [ \"/entrypoint.sh\" ]"
  },
  {
    "path": "tests/release/docker/fedora35/entrypoint.sh",
    "content": "#!/usr/bin/env bash\n\n# Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# This script is used to build the packages for the components of the NVIDIA\n# Container Stack. These include the nvidia-container-toolkit in this repository\n# as well as the components included in the third_party folder.\n# All required packages are generated in the specified dist folder.\n\n: ${LOCAL_REPO_DIRECTORY:=/local-repository}\nif [[ -d ${LOCAL_REPO_DIRECTORY} ]]; then\n    echo \"Setting up local-repository\"\n    createrepo \"${LOCAL_REPO_DIRECTORY}\"\n\n    cat >/etc/yum.repos.d/local.repo <<EOL\n[local-repository]\nname=NVIDIA Container Toolkit Local Packages\nbaseurl=file://${LOCAL_REPO_DIRECTORY}\nenabled=1\ngpgcheck=0\nprotect=1\nEOL\nelif [[ -n ${TEST_REPO} ]]; then\n    ./install_repo.sh ${TEST_REPO}\nelse\n    echo \"Skipping repo setup\"\nfi\n\nexec bash $@\n"
  },
  {
    "path": "tests/release/docker/fedora35/install_repo.sh",
    "content": "#!/usr/bin/env bash\n\n# Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# This script is used to build the packages for the components of the NVIDIA\n# Container Stack. These include the nvidia-container-toolkit in this repository\n# as well as the components included in the third_party folder.\n# All required packages are generated in the specified dist folder.\n\ntest_repo=$1\necho \"Setting up TEST repo: ${test_repo}\"\nsed -i -e \"s#nvidia\\.github\\.io/libnvidia-container#${test_repo}/libnvidia-container#g\" /etc/yum.repos.d/nvidia-container-toolkit.repo\nyum-config-manager --enable libnvidia-container-experimental\n"
  },
  {
    "path": "tests/release/docker/ubuntu18.04/Dockerfile",
    "content": "# Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nFROM ubuntu:18.04\n\nARG DEBIAN_FRONTEND noninteractive\nRUN apt-get update && apt-get install --no-install-recommends -y \\\n    curl \\\n    gnupg2 \\\n    apt-transport-https \\\n    ca-certificates \\\n    apt-utils \\\n    ruby ruby-dev rubygems build-essential\n\nRUN gem install --no-document fpm\n\n# We create and install a dummy docker package since these dependencies are out of\n# scope for the tests performed here.\nRUN fpm -s empty \\\n    -t deb \\\n    --description \"A dummy package for docker.io_18.06.0\" \\\n    -n docker.io --version 18.06.0 \\\n    -p /tmp/docker.deb \\\n    --deb-no-default-config-files \\\n    && \\\n    dpkg -i /tmp/docker.deb \\\n    && \\\n    rm -f /tmp/docker.deb\n\n\nRUN curl -s -L https://nvidia.github.io/libnvidia-container/gpgkey | apt-key add - \\\n   && curl -s -L https://nvidia.github.io/libnvidia-container/ubuntu18.04/libnvidia-container.list | tee /etc/apt/sources.list.d/nvidia-container-toolkit.list \\\n   && apt-get update\n\nCOPY entrypoint.sh /\nCOPY install_repo.sh /\n\nENTRYPOINT [ \"/entrypoint.sh\" ]"
  },
  {
    "path": "tests/release/docker/ubuntu18.04/entrypoint.sh",
    "content": "#!/usr/bin/env bash\n\n# Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# This script is used to build the packages for the components of the NVIDIA\n# Container Stack. These include the nvidia-container-toolkit in this repository\n# as well as the components included in the third_party folder.\n# All required packages are generated in the specified dist folder.\n\n: ${LOCAL_REPO_DIRECTORY:=/local-repository}\nif [[ -d ${LOCAL_REPO_DIRECTORY} ]]; then\n    echo \"Setting up local-repository\"\n    echo \"deb [trusted=yes] file:/local-repository ./\" > /etc/apt/sources.list.d/local.list\n    $(cd /local-repository && apt-ftparchive packages . > Packages)\nelif [[ -n ${TEST_REPO} ]]; then\n    ./install_repo.sh ${TEST_REPO}\nelse\n    echo \"Skipping repo setup\"\nfi\napt-get update\n\nexec bash $@\n"
  },
  {
    "path": "tests/release/docker/ubuntu18.04/install_repo.sh",
    "content": "#!/usr/bin/env bash\n\n# Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# This script is used to build the packages for the components of the NVIDIA\n# Container Stack. These include the nvidia-container-toolkit in this repository\n# as well as the components included in the third_party folder.\n# All required packages are generated in the specified dist folder.\n\ntest_repo=$1\necho \"Setting up TEST repo: ${test_repo}\"\nsed -i -e \"s#nvidia\\.github\\.io/libnvidia-container#${test_repo}/libnvidia-container#g\" /etc/apt/sources.list.d/nvidia-container-toolkit.list\nsed -i -e '/experimental/ s/^#//g' /etc/apt/sources.list.d/nvidia-container-toolkit.list\n"
  },
  {
    "path": "tests/vendor/github.com/Masterminds/semver/v3/.gitignore",
    "content": "_fuzz/"
  },
  {
    "path": "tests/vendor/github.com/Masterminds/semver/v3/.golangci.yml",
    "content": "run:\n  deadline: 2m\n\nlinters:\n  disable-all: true\n  enable:\n    - misspell\n    - govet\n    - staticcheck\n    - errcheck\n    - unparam\n    - ineffassign\n    - nakedret\n    - gocyclo\n    - dupl\n    - goimports\n    - revive\n    - gosec\n    - gosimple\n    - typecheck\n    - unused\n\nlinters-settings:\n  gofmt:\n    simplify: true\n  dupl:\n    threshold: 600\n"
  },
  {
    "path": "tests/vendor/github.com/Masterminds/semver/v3/CHANGELOG.md",
    "content": "# Changelog\n\n## 3.4.0 (2025-06-27)\n\n### Added\n\n- #268: Added property to Constraints to include prereleases for Check and Validate\n\n### Changed\n\n- #263: Updated Go testing for 1.24, 1.23, and 1.22\n- #269: Updated the error message handling for message case and wrapping errors\n- #266: Restore the ability to have leading 0's when parsing with NewVersion.\n  Opt-out of this by setting CoerceNewVersion to false.\n\n### Fixed\n\n- #257: Fixed the CodeQL link (thanks @dmitris)\n- #262: Restored detailed errors when failed to parse with NewVersion. Opt-out\n  of this by setting DetailedNewVersionErrors to false for faster performance.\n- #267: Handle pre-releases for an \"and\" group if one constraint includes them\n\n## 3.3.1 (2024-11-19)\n\n### Fixed\n\n- #253: Fix for allowing some version that were invalid\n\n## 3.3.0 (2024-08-27)\n\n### Added\n\n- #238: Add LessThanEqual and GreaterThanEqual functions (thanks @grosser)\n- #213: nil version equality checking (thanks @KnutZuidema)\n\n### Changed\n\n- #241: Simplify StrictNewVersion parsing (thanks @grosser)\n- Testing support up through Go 1.23\n- Minimum version set to 1.21 as this is what's tested now\n- Fuzz testing now supports caching\n\n## 3.2.1 (2023-04-10)\n\n### Changed\n\n- #198: Improved testing around pre-release names\n- #200: Improved code scanning with addition of CodeQL\n- #201: Testing now includes Go 1.20. Go 1.17 has been dropped\n- #202: Migrated Fuzz testing to Go built-in Fuzzing. CI runs daily\n- #203: Docs updated for security details\n\n### Fixed\n\n- #199: Fixed issue with range transformations\n\n## 3.2.0 (2022-11-28)\n\n### Added\n\n- #190: Added text marshaling and unmarshaling\n- #167: Added JSON marshalling for constraints (thanks @SimonTheLeg)\n- #173: Implement encoding.TextMarshaler and encoding.TextUnmarshaler on Version (thanks @MarkRosemaker)\n- #179: Added New() version constructor (thanks @kazhuravlev)\n\n### Changed\n\n- #182/#183: Updated CI testing setup\n\n### Fixed\n\n- #186: Fixing issue where validation of constraint section gave false positives\n- #176: Fix constraints check with *-0 (thanks @mtt0)\n- #181: Fixed Caret operator (^) gives unexpected results when the minor version in constraint is 0 (thanks @arshchimni)\n- #161: Fixed godoc (thanks @afirth)\n\n## 3.1.1 (2020-11-23)\n\n### Fixed\n\n- #158: Fixed issue with generated regex operation order that could cause problem\n\n## 3.1.0 (2020-04-15)\n\n### Added\n\n- #131: Add support for serializing/deserializing SQL (thanks @ryancurrah)\n\n### Changed\n\n- #148: More accurate validation messages on constraints\n\n## 3.0.3 (2019-12-13)\n\n### Fixed\n\n- #141: Fixed issue with <= comparison\n\n## 3.0.2 (2019-11-14)\n\n### Fixed\n\n- #134: Fixed broken constraint checking with ^0.0 (thanks @krmichelos)\n\n## 3.0.1 (2019-09-13)\n\n### Fixed\n\n- #125: Fixes issue with module path for v3\n\n## 3.0.0 (2019-09-12)\n\nThis is a major release of the semver package which includes API changes. The Go\nAPI is compatible with ^1. The Go API was not changed because many people are using\n`go get` without Go modules for their applications and API breaking changes cause\nerrors which we have or would need to support.\n\nThe changes in this release are the handling based on the data passed into the\nfunctions. These are described in the added and changed sections below.\n\n### Added\n\n- StrictNewVersion function. This is similar to NewVersion but will return an\n  error if the version passed in is not a strict semantic version. For example,\n  1.2.3 would pass but v1.2.3 or 1.2 would fail because they are not strictly\n  speaking semantic versions. This function is faster, performs fewer operations,\n  and uses fewer allocations than NewVersion.\n- Fuzzing has been performed on NewVersion, StrictNewVersion, and NewConstraint.\n  The Makefile contains the operations used. For more information on you can start\n  on Wikipedia at https://en.wikipedia.org/wiki/Fuzzing\n- Now using Go modules\n\n### Changed\n\n- NewVersion has proper prerelease and metadata validation with error messages\n  to signal an issue with either of them\n- ^ now operates using a similar set of rules to npm/js and Rust/Cargo. If the\n  version is >=1 the ^ ranges works the same as v1. For major versions of 0 the\n  rules have changed. The minor version is treated as the stable version unless\n  a patch is specified and then it is equivalent to =. One difference from npm/js\n  is that prereleases there are only to a specific version (e.g. 1.2.3).\n  Prereleases here look over multiple versions and follow semantic version\n  ordering rules. This pattern now follows along with the expected and requested\n  handling of this packaged by numerous users.\n\n## 1.5.0 (2019-09-11)\n\n### Added\n\n- #103: Add basic fuzzing for `NewVersion()` (thanks @jesse-c)\n\n### Changed\n\n- #82: Clarify wildcard meaning in range constraints and update tests for it (thanks @greysteil)\n- #83: Clarify caret operator range for pre-1.0.0 dependencies (thanks @greysteil)\n- #72: Adding docs comment pointing to vert for a cli\n- #71: Update the docs on pre-release comparator handling\n- #89: Test with new go versions (thanks @thedevsaddam)\n- #87: Added $ to ValidPrerelease for better validation (thanks @jeremycarroll)\n\n### Fixed\n\n- #78: Fix unchecked error in example code (thanks @ravron)\n- #70: Fix the handling of pre-releases and the 0.0.0 release edge case\n- #97: Fixed copyright file for proper display on GitHub\n- #107: Fix handling prerelease when sorting alphanum and num\n- #109: Fixed where Validate sometimes returns wrong message on error\n\n## 1.4.2 (2018-04-10)\n\n### Changed\n\n- #72: Updated the docs to point to vert for a console appliaction\n- #71: Update the docs on pre-release comparator handling\n\n### Fixed\n\n- #70: Fix the handling of pre-releases and the 0.0.0 release edge case\n\n## 1.4.1 (2018-04-02)\n\n### Fixed\n\n- Fixed #64: Fix pre-release precedence issue (thanks @uudashr)\n\n## 1.4.0 (2017-10-04)\n\n### Changed\n\n- #61: Update NewVersion to parse ints with a 64bit int size (thanks @zknill)\n\n## 1.3.1 (2017-07-10)\n\n### Fixed\n\n- Fixed #57: number comparisons in prerelease sometimes inaccurate\n\n## 1.3.0 (2017-05-02)\n\n### Added\n\n- #45: Added json (un)marshaling support (thanks @mh-cbon)\n- Stability marker. See https://masterminds.github.io/stability/\n\n### Fixed\n\n- #51: Fix handling of single digit tilde constraint (thanks @dgodd)\n\n### Changed\n\n- #55: The godoc icon moved from png to svg\n\n## 1.2.3 (2017-04-03)\n\n### Fixed\n\n- #46: Fixed 0.x.x and 0.0.x in constraints being treated as *\n\n## Release 1.2.2 (2016-12-13)\n\n### Fixed\n\n- #34: Fixed issue where hyphen range was not working with pre-release parsing.\n\n## Release 1.2.1 (2016-11-28)\n\n### Fixed\n\n- #24: Fixed edge case issue where constraint \"> 0\" does not handle \"0.0.1-alpha\"\n  properly.\n\n## Release 1.2.0 (2016-11-04)\n\n### Added\n\n- #20: Added MustParse function for versions (thanks @adamreese)\n- #15: Added increment methods on versions (thanks @mh-cbon)\n\n### Fixed\n\n- Issue #21: Per the SemVer spec (section 9) a pre-release is unstable and\n  might not satisfy the intended compatibility. The change here ignores pre-releases\n  on constraint checks (e.g., ~ or ^) when a pre-release is not part of the\n  constraint. For example, `^1.2.3` will ignore pre-releases while\n  `^1.2.3-alpha` will include them.\n\n## Release 1.1.1 (2016-06-30)\n\n### Changed\n\n- Issue #9: Speed up version comparison performance (thanks @sdboyer)\n- Issue #8: Added benchmarks (thanks @sdboyer)\n- Updated Go Report Card URL to new location\n- Updated Readme to add code snippet formatting (thanks @mh-cbon)\n- Updating tagging to v[SemVer] structure for compatibility with other tools.\n\n## Release 1.1.0 (2016-03-11)\n\n- Issue #2: Implemented validation to provide reasons a versions failed a\n  constraint.\n\n## Release 1.0.1 (2015-12-31)\n\n- Fixed #1: * constraint failing on valid versions.\n\n## Release 1.0.0 (2015-10-20)\n\n- Initial release\n"
  },
  {
    "path": "tests/vendor/github.com/Masterminds/semver/v3/LICENSE.txt",
    "content": "Copyright (C) 2014-2019, Matt Butcher and Matt Farina\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": "tests/vendor/github.com/Masterminds/semver/v3/Makefile",
    "content": "GOPATH=$(shell go env GOPATH)\nGOLANGCI_LINT=$(GOPATH)/bin/golangci-lint\n\n.PHONY: lint\nlint: $(GOLANGCI_LINT)\n\t@echo \"==> Linting codebase\"\n\t@$(GOLANGCI_LINT) run\n\n.PHONY: test\ntest:\n\t@echo \"==> Running tests\"\n\tGO111MODULE=on go test -v\n\n.PHONY: test-cover\ntest-cover:\n\t@echo \"==> Running Tests with coverage\"\n\tGO111MODULE=on go test -cover .\n\n.PHONY: fuzz\nfuzz:\n\t@echo \"==> Running Fuzz Tests\"\n\tgo env GOCACHE\n\tgo test -fuzz=FuzzNewVersion -fuzztime=15s .\n\tgo test -fuzz=FuzzStrictNewVersion -fuzztime=15s .\n\tgo test -fuzz=FuzzNewConstraint -fuzztime=15s .\n\n$(GOLANGCI_LINT):\n\t# Install golangci-lint. The configuration for it is in the .golangci.yml\n\t# file in the root of the repository\n\techo ${GOPATH}\n\tcurl -sfL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh | sh -s -- -b $(GOPATH)/bin v1.56.2\n"
  },
  {
    "path": "tests/vendor/github.com/Masterminds/semver/v3/README.md",
    "content": "# SemVer\n\nThe `semver` package provides the ability to work with [Semantic Versions](http://semver.org) in Go. Specifically it provides the ability to:\n\n* Parse semantic versions\n* Sort semantic versions\n* Check if a semantic version fits within a set of constraints\n* Optionally work with a `v` prefix\n\n[![Stability:\nActive](https://masterminds.github.io/stability/active.svg)](https://masterminds.github.io/stability/active.html)\n[![](https://github.com/Masterminds/semver/workflows/Tests/badge.svg)](https://github.com/Masterminds/semver/actions)\n[![GoDoc](https://img.shields.io/static/v1?label=godoc&message=reference&color=blue)](https://pkg.go.dev/github.com/Masterminds/semver/v3)\n[![Go Report Card](https://goreportcard.com/badge/github.com/Masterminds/semver)](https://goreportcard.com/report/github.com/Masterminds/semver)\n\n## Package Versions\n\nNote, import `github.com/Masterminds/semver/v3` to use the latest version.\n\nThere are three major versions fo the `semver` package.\n\n* 3.x.x is the stable and active version. This version is focused on constraint\n  compatibility for range handling in other tools from other languages. It has\n  a similar API to the v1 releases. The development of this version is on the master\n  branch. The documentation for this version is below.\n* 2.x was developed primarily for [dep](https://github.com/golang/dep). There are\n  no tagged releases and the development was performed by [@sdboyer](https://github.com/sdboyer).\n  There are API breaking changes from v1. This version lives on the [2.x branch](https://github.com/Masterminds/semver/tree/2.x).\n* 1.x.x is the original release. It is no longer maintained. You should use the\n  v3 release instead. You can read the documentation for the 1.x.x release\n  [here](https://github.com/Masterminds/semver/blob/release-1/README.md).\n\n## Parsing Semantic Versions\n\nThere are two functions that can parse semantic versions. The `StrictNewVersion`\nfunction only parses valid version 2 semantic versions as outlined in the\nspecification. The `NewVersion` function attempts to coerce a version into a\nsemantic version and parse it. For example, if there is a leading v or a version\nlisted without all 3 parts (e.g. `v1.2`) it will attempt to coerce it into a valid\nsemantic version (e.g., 1.2.0). In both cases a `Version` object is returned\nthat can be sorted, compared, and used in constraints.\n\nWhen parsing a version an error is returned if there is an issue parsing the\nversion. For example,\n\n    v, err := semver.NewVersion(\"1.2.3-beta.1+build345\")\n\nThe version object has methods to get the parts of the version, compare it to\nother versions, convert the version back into a string, and get the original\nstring. Getting the original string is useful if the semantic version was coerced\ninto a valid form.\n\nThere are package level variables that affect how `NewVersion` handles parsing.\n\n- `CoerceNewVersion` is `true` by default. When set to `true` it coerces non-compliant\n  versions into SemVer. For example, allowing a leading 0 in a major, minor, or patch\n  part. This enables the use of CalVer in versions even when not compliant with SemVer.\n  When set to `false` less coercion work is done.\n- `DetailedNewVersionErrors` provides more detailed errors. It only has an affect when\n  `CoerceNewVersion` is set to `false`. When `DetailedNewVersionErrors` is set to `true`\n  it can provide some more insight into why a version is invalid. Setting\n  `DetailedNewVersionErrors` to `false` is faster on performance but provides less\n  detailed error messages if a version fails to parse.\n\n## Sorting Semantic Versions\n\nA set of versions can be sorted using the `sort` package from the standard library.\nFor example,\n\n```go\nraw := []string{\"1.2.3\", \"1.0\", \"1.3\", \"2\", \"0.4.2\",}\nvs := make([]*semver.Version, len(raw))\nfor i, r := range raw {\n    v, err := semver.NewVersion(r)\n    if err != nil {\n        t.Errorf(\"Error parsing version: %s\", err)\n    }\n\n    vs[i] = v\n}\n\nsort.Sort(semver.Collection(vs))\n```\n\n## Checking Version Constraints\n\nThere are two methods for comparing versions. One uses comparison methods on\n`Version` instances and the other uses `Constraints`. There are some important\ndifferences to notes between these two methods of comparison.\n\n1. When two versions are compared using functions such as `Compare`, `LessThan`,\n   and others it will follow the specification and always include pre-releases\n   within the comparison. It will provide an answer that is valid with the\n   comparison section of the spec at https://semver.org/#spec-item-11\n2. When constraint checking is used for checks or validation it will follow a\n   different set of rules that are common for ranges with tools like npm/js\n   and Rust/Cargo. This includes considering pre-releases to be invalid if the\n   ranges does not include one. If you want to have it include pre-releases a\n   simple solution is to include `-0` in your range.\n3. Constraint ranges can have some complex rules including the shorthand use of\n   ~ and ^. For more details on those see the options below.\n\nThere are differences between the two methods or checking versions because the\ncomparison methods on `Version` follow the specification while comparison ranges\nare not part of the specification. Different packages and tools have taken it\nupon themselves to come up with range rules. This has resulted in differences.\nFor example, npm/js and Cargo/Rust follow similar patterns while PHP has a\ndifferent pattern for ^. The comparison features in this package follow the\nnpm/js and Cargo/Rust lead because applications using it have followed similar\npatters with their versions.\n\nChecking a version against version constraints is one of the most featureful\nparts of the package.\n\n```go\nc, err := semver.NewConstraint(\">= 1.2.3\")\nif err != nil {\n    // Handle constraint not being parsable.\n}\n\nv, err := semver.NewVersion(\"1.3\")\nif err != nil {\n    // Handle version not being parsable.\n}\n// Check if the version meets the constraints. The variable a will be true.\na := c.Check(v)\n```\n\n### Basic Comparisons\n\nThere are two elements to the comparisons. First, a comparison string is a list\nof space or comma separated AND comparisons. These are then separated by || (OR)\ncomparisons. For example, `\">= 1.2 < 3.0.0 || >= 4.2.3\"` is looking for a\ncomparison that's greater than or equal to 1.2 and less than 3.0.0 or is\ngreater than or equal to 4.2.3.\n\nThe basic comparisons are:\n\n* `=`: equal (aliased to no operator)\n* `!=`: not equal\n* `>`: greater than\n* `<`: less than\n* `>=`: greater than or equal to\n* `<=`: less than or equal to\n\n### Working With Prerelease Versions\n\nPre-releases, for those not familiar with them, are used for software releases\nprior to stable or generally available releases. Examples of pre-releases include\ndevelopment, alpha, beta, and release candidate releases. A pre-release may be\na version such as `1.2.3-beta.1` while the stable release would be `1.2.3`. In the\norder of precedence, pre-releases come before their associated releases. In this\nexample `1.2.3-beta.1 < 1.2.3`.\n\nAccording to the Semantic Version specification, pre-releases may not be\nAPI compliant with their release counterpart. It says,\n\n> A pre-release version indicates that the version is unstable and might not satisfy the intended compatibility requirements as denoted by its associated normal version.\n\nSemVer's comparisons using constraints without a pre-release comparator will skip\npre-release versions. For example, `>=1.2.3` will skip pre-releases when looking\nat a list of releases while `>=1.2.3-0` will evaluate and find pre-releases.\n\nThe reason for the `0` as a pre-release version in the example comparison is\nbecause pre-releases can only contain ASCII alphanumerics and hyphens (along with\n`.` separators), per the spec. Sorting happens in ASCII sort order, again per the\nspec. The lowest character is a `0` in ASCII sort order\n(see an [ASCII Table](http://www.asciitable.com/))\n\nUnderstanding ASCII sort ordering is important because A-Z comes before a-z. That\nmeans `>=1.2.3-BETA` will return `1.2.3-alpha`. What you might expect from case\nsensitivity doesn't apply here. This is due to ASCII sort ordering which is what\nthe spec specifies.\n\nThe `Constraints` instance returned from `semver.NewConstraint()` has a property\n`IncludePrerelease` that, when set to true, will return prerelease versions when calls\nto `Check()` and `Validate()` are made.\n\n### Hyphen Range Comparisons\n\nThere are multiple methods to handle ranges and the first is hyphens ranges.\nThese look like:\n\n* `1.2 - 1.4.5` which is equivalent to `>= 1.2 <= 1.4.5`\n* `2.3.4 - 4.5` which is equivalent to `>= 2.3.4 <= 4.5`\n\nNote that `1.2-1.4.5` without whitespace is parsed completely differently; it's\nparsed as a single constraint `1.2.0` with _prerelease_ `1.4.5`.\n\n### Wildcards In Comparisons\n\nThe `x`, `X`, and `*` characters can be used as a wildcard character. This works\nfor all comparison operators. When used on the `=` operator it falls\nback to the patch level comparison (see tilde below). For example,\n\n* `1.2.x` is equivalent to `>= 1.2.0, < 1.3.0`\n* `>= 1.2.x` is equivalent to `>= 1.2.0`\n* `<= 2.x` is equivalent to `< 3`\n* `*` is equivalent to `>= 0.0.0`\n\n### Tilde Range Comparisons (Patch)\n\nThe tilde (`~`) comparison operator is for patch level ranges when a minor\nversion is specified and major level changes when the minor number is missing.\nFor example,\n\n* `~1.2.3` is equivalent to `>= 1.2.3, < 1.3.0`\n* `~1` is equivalent to `>= 1, < 2`\n* `~2.3` is equivalent to `>= 2.3, < 2.4`\n* `~1.2.x` is equivalent to `>= 1.2.0, < 1.3.0`\n* `~1.x` is equivalent to `>= 1, < 2`\n\n### Caret Range Comparisons (Major)\n\nThe caret (`^`) comparison operator is for major level changes once a stable\n(1.0.0) release has occurred. Prior to a 1.0.0 release the minor versions acts\nas the API stability level. This is useful when comparisons of API versions as a\nmajor change is API breaking. For example,\n\n* `^1.2.3` is equivalent to `>= 1.2.3, < 2.0.0`\n* `^1.2.x` is equivalent to `>= 1.2.0, < 2.0.0`\n* `^2.3` is equivalent to `>= 2.3, < 3`\n* `^2.x` is equivalent to `>= 2.0.0, < 3`\n* `^0.2.3` is equivalent to `>=0.2.3 <0.3.0`\n* `^0.2` is equivalent to `>=0.2.0 <0.3.0`\n* `^0.0.3` is equivalent to `>=0.0.3 <0.0.4`\n* `^0.0` is equivalent to `>=0.0.0 <0.1.0`\n* `^0` is equivalent to `>=0.0.0 <1.0.0`\n\n## Validation\n\nIn addition to testing a version against a constraint, a version can be validated\nagainst a constraint. When validation fails a slice of errors containing why a\nversion didn't meet the constraint is returned. For example,\n\n```go\nc, err := semver.NewConstraint(\"<= 1.2.3, >= 1.4\")\nif err != nil {\n    // Handle constraint not being parseable.\n}\n\nv, err := semver.NewVersion(\"1.3\")\nif err != nil {\n    // Handle version not being parseable.\n}\n\n// Validate a version against a constraint.\na, msgs := c.Validate(v)\n// a is false\nfor _, m := range msgs {\n    fmt.Println(m)\n\n    // Loops over the errors which would read\n    // \"1.3 is greater than 1.2.3\"\n    // \"1.3 is less than 1.4\"\n}\n```\n\n## Contribute\n\nIf you find an issue or want to contribute please file an [issue](https://github.com/Masterminds/semver/issues)\nor [create a pull request](https://github.com/Masterminds/semver/pulls).\n\n## Security\n\nSecurity is an important consideration for this project. The project currently\nuses the following tools to help discover security issues:\n\n* [CodeQL](https://codeql.github.com)\n* [gosec](https://github.com/securego/gosec)\n* Daily Fuzz testing\n\nIf you believe you have found a security vulnerability you can privately disclose\nit through the [GitHub security page](https://github.com/Masterminds/semver/security).\n"
  },
  {
    "path": "tests/vendor/github.com/Masterminds/semver/v3/SECURITY.md",
    "content": "# Security Policy\n\n## Supported Versions\n\nThe following versions of semver are currently supported:\n\n| Version | Supported          |\n| ------- | ------------------ |\n| 3.x     | :white_check_mark: |\n| 2.x     | :x:                |\n| 1.x     | :x:                |\n\nFixes are only released for the latest minor version in the form of a patch release.\n\n## Reporting a Vulnerability\n\nYou can privately disclose a vulnerability through GitHubs\n[private vulnerability reporting](https://github.com/Masterminds/semver/security/advisories)\nmechanism.\n"
  },
  {
    "path": "tests/vendor/github.com/Masterminds/semver/v3/collection.go",
    "content": "package semver\n\n// Collection is a collection of Version instances and implements the sort\n// interface. See the sort package for more details.\n// https://golang.org/pkg/sort/\ntype Collection []*Version\n\n// Len returns the length of a collection. The number of Version instances\n// on the slice.\nfunc (c Collection) Len() int {\n\treturn len(c)\n}\n\n// Less is needed for the sort interface to compare two Version objects on the\n// slice. If checks if one is less than the other.\nfunc (c Collection) Less(i, j int) bool {\n\treturn c[i].LessThan(c[j])\n}\n\n// Swap is needed for the sort interface to replace the Version objects\n// at two different positions in the slice.\nfunc (c Collection) Swap(i, j int) {\n\tc[i], c[j] = c[j], c[i]\n}\n"
  },
  {
    "path": "tests/vendor/github.com/Masterminds/semver/v3/constraints.go",
    "content": "package semver\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"regexp\"\n\t\"strings\"\n)\n\n// Constraints is one or more constraint that a semantic version can be\n// checked against.\ntype Constraints struct {\n\tconstraints [][]*constraint\n\tcontainsPre []bool\n\n\t// IncludePrerelease specifies if pre-releases should be included in\n\t// the results. Note, if a constraint range has a prerelease than\n\t// prereleases will be included for that AND group even if this is\n\t// set to false.\n\tIncludePrerelease bool\n}\n\n// NewConstraint returns a Constraints instance that a Version instance can\n// be checked against. If there is a parse error it will be returned.\nfunc NewConstraint(c string) (*Constraints, error) {\n\n\t// Rewrite - ranges into a comparison operation.\n\tc = rewriteRange(c)\n\n\tors := strings.Split(c, \"||\")\n\tlenors := len(ors)\n\tor := make([][]*constraint, lenors)\n\thasPre := make([]bool, lenors)\n\tfor k, v := range ors {\n\t\t// Validate the segment\n\t\tif !validConstraintRegex.MatchString(v) {\n\t\t\treturn nil, fmt.Errorf(\"improper constraint: %s\", v)\n\t\t}\n\n\t\tcs := findConstraintRegex.FindAllString(v, -1)\n\t\tif cs == nil {\n\t\t\tcs = append(cs, v)\n\t\t}\n\t\tresult := make([]*constraint, len(cs))\n\t\tfor i, s := range cs {\n\t\t\tpc, err := parseConstraint(s)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\n\t\t\t// If one of the constraints has a prerelease record this.\n\t\t\t// This information is used when checking all in an \"and\"\n\t\t\t// group to ensure they all check for prereleases.\n\t\t\tif pc.con.pre != \"\" {\n\t\t\t\thasPre[k] = true\n\t\t\t}\n\n\t\t\tresult[i] = pc\n\t\t}\n\t\tor[k] = result\n\t}\n\n\to := &Constraints{\n\t\tconstraints: or,\n\t\tcontainsPre: hasPre,\n\t}\n\treturn o, nil\n}\n\n// Check tests if a version satisfies the constraints.\nfunc (cs Constraints) Check(v *Version) bool {\n\t// TODO(mattfarina): For v4 of this library consolidate the Check and Validate\n\t// functions as the underlying functions make that possible now.\n\t// loop over the ORs and check the inner ANDs\n\tfor i, o := range cs.constraints {\n\t\tjoy := true\n\t\tfor _, c := range o {\n\t\t\tif check, _ := c.check(v, (cs.IncludePrerelease || cs.containsPre[i])); !check {\n\t\t\t\tjoy = false\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\t\tif joy {\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn false\n}\n\n// Validate checks if a version satisfies a constraint. If not a slice of\n// reasons for the failure are returned in addition to a bool.\nfunc (cs Constraints) Validate(v *Version) (bool, []error) {\n\t// loop over the ORs and check the inner ANDs\n\tvar e []error\n\n\t// Capture the prerelease message only once. When it happens the first time\n\t// this var is marked\n\tvar prerelesase bool\n\tfor i, o := range cs.constraints {\n\t\tjoy := true\n\t\tfor _, c := range o {\n\t\t\t// Before running the check handle the case there the version is\n\t\t\t// a prerelease and the check is not searching for prereleases.\n\t\t\tif !(cs.IncludePrerelease || cs.containsPre[i]) && v.pre != \"\" {\n\t\t\t\tif !prerelesase {\n\t\t\t\t\tem := fmt.Errorf(\"%s is a prerelease version and the constraint is only looking for release versions\", v)\n\t\t\t\t\te = append(e, em)\n\t\t\t\t\tprerelesase = true\n\t\t\t\t}\n\t\t\t\tjoy = false\n\n\t\t\t} else {\n\n\t\t\t\tif _, err := c.check(v, (cs.IncludePrerelease || cs.containsPre[i])); err != nil {\n\t\t\t\t\te = append(e, err)\n\t\t\t\t\tjoy = false\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif joy {\n\t\t\treturn true, []error{}\n\t\t}\n\t}\n\n\treturn false, e\n}\n\nfunc (cs Constraints) String() string {\n\tbuf := make([]string, len(cs.constraints))\n\tvar tmp bytes.Buffer\n\n\tfor k, v := range cs.constraints {\n\t\ttmp.Reset()\n\t\tvlen := len(v)\n\t\tfor kk, c := range v {\n\t\t\ttmp.WriteString(c.string())\n\n\t\t\t// Space separate the AND conditions\n\t\t\tif vlen > 1 && kk < vlen-1 {\n\t\t\t\ttmp.WriteString(\" \")\n\t\t\t}\n\t\t}\n\t\tbuf[k] = tmp.String()\n\t}\n\n\treturn strings.Join(buf, \" || \")\n}\n\n// UnmarshalText implements the encoding.TextUnmarshaler interface.\nfunc (cs *Constraints) UnmarshalText(text []byte) error {\n\ttemp, err := NewConstraint(string(text))\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t*cs = *temp\n\n\treturn nil\n}\n\n// MarshalText implements the encoding.TextMarshaler interface.\nfunc (cs Constraints) MarshalText() ([]byte, error) {\n\treturn []byte(cs.String()), nil\n}\n\nvar constraintOps map[string]cfunc\nvar constraintRegex *regexp.Regexp\nvar constraintRangeRegex *regexp.Regexp\n\n// Used to find individual constraints within a multi-constraint string\nvar findConstraintRegex *regexp.Regexp\n\n// Used to validate an segment of ANDs is valid\nvar validConstraintRegex *regexp.Regexp\n\nconst cvRegex string = `v?([0-9|x|X|\\*]+)(\\.[0-9|x|X|\\*]+)?(\\.[0-9|x|X|\\*]+)?` +\n\t`(-([0-9A-Za-z\\-]+(\\.[0-9A-Za-z\\-]+)*))?` +\n\t`(\\+([0-9A-Za-z\\-]+(\\.[0-9A-Za-z\\-]+)*))?`\n\nfunc init() {\n\tconstraintOps = map[string]cfunc{\n\t\t\"\":   constraintTildeOrEqual,\n\t\t\"=\":  constraintTildeOrEqual,\n\t\t\"!=\": constraintNotEqual,\n\t\t\">\":  constraintGreaterThan,\n\t\t\"<\":  constraintLessThan,\n\t\t\">=\": constraintGreaterThanEqual,\n\t\t\"=>\": constraintGreaterThanEqual,\n\t\t\"<=\": constraintLessThanEqual,\n\t\t\"=<\": constraintLessThanEqual,\n\t\t\"~\":  constraintTilde,\n\t\t\"~>\": constraintTilde,\n\t\t\"^\":  constraintCaret,\n\t}\n\n\tops := `=||!=|>|<|>=|=>|<=|=<|~|~>|\\^`\n\n\tconstraintRegex = regexp.MustCompile(fmt.Sprintf(\n\t\t`^\\s*(%s)\\s*(%s)\\s*$`,\n\t\tops,\n\t\tcvRegex))\n\n\tconstraintRangeRegex = regexp.MustCompile(fmt.Sprintf(\n\t\t`\\s*(%s)\\s+-\\s+(%s)\\s*`,\n\t\tcvRegex, cvRegex))\n\n\tfindConstraintRegex = regexp.MustCompile(fmt.Sprintf(\n\t\t`(%s)\\s*(%s)`,\n\t\tops,\n\t\tcvRegex))\n\n\t// The first time a constraint shows up will look slightly different from\n\t// future times it shows up due to a leading space or comma in a given\n\t// string.\n\tvalidConstraintRegex = regexp.MustCompile(fmt.Sprintf(\n\t\t`^(\\s*(%s)\\s*(%s)\\s*)((?:\\s+|,\\s*)(%s)\\s*(%s)\\s*)*$`,\n\t\tops,\n\t\tcvRegex,\n\t\tops,\n\t\tcvRegex))\n}\n\n// An individual constraint\ntype constraint struct {\n\t// The version used in the constraint check. For example, if a constraint\n\t// is '<= 2.0.0' the con a version instance representing 2.0.0.\n\tcon *Version\n\n\t// The original parsed version (e.g., 4.x from != 4.x)\n\torig string\n\n\t// The original operator for the constraint\n\torigfunc string\n\n\t// When an x is used as part of the version (e.g., 1.x)\n\tminorDirty bool\n\tdirty      bool\n\tpatchDirty bool\n}\n\n// Check if a version meets the constraint\nfunc (c *constraint) check(v *Version, includePre bool) (bool, error) {\n\treturn constraintOps[c.origfunc](v, c, includePre)\n}\n\n// String prints an individual constraint into a string\nfunc (c *constraint) string() string {\n\treturn c.origfunc + c.orig\n}\n\ntype cfunc func(v *Version, c *constraint, includePre bool) (bool, error)\n\nfunc parseConstraint(c string) (*constraint, error) {\n\tif len(c) > 0 {\n\t\tm := constraintRegex.FindStringSubmatch(c)\n\t\tif m == nil {\n\t\t\treturn nil, fmt.Errorf(\"improper constraint: %s\", c)\n\t\t}\n\n\t\tcs := &constraint{\n\t\t\torig:     m[2],\n\t\t\torigfunc: m[1],\n\t\t}\n\n\t\tver := m[2]\n\t\tminorDirty := false\n\t\tpatchDirty := false\n\t\tdirty := false\n\t\tif isX(m[3]) || m[3] == \"\" {\n\t\t\tver = fmt.Sprintf(\"0.0.0%s\", m[6])\n\t\t\tdirty = true\n\t\t} else if isX(strings.TrimPrefix(m[4], \".\")) || m[4] == \"\" {\n\t\t\tminorDirty = true\n\t\t\tdirty = true\n\t\t\tver = fmt.Sprintf(\"%s.0.0%s\", m[3], m[6])\n\t\t} else if isX(strings.TrimPrefix(m[5], \".\")) || m[5] == \"\" {\n\t\t\tdirty = true\n\t\t\tpatchDirty = true\n\t\t\tver = fmt.Sprintf(\"%s%s.0%s\", m[3], m[4], m[6])\n\t\t}\n\n\t\tcon, err := NewVersion(ver)\n\t\tif err != nil {\n\n\t\t\t// The constraintRegex should catch any regex parsing errors. So,\n\t\t\t// we should never get here.\n\t\t\treturn nil, errors.New(\"constraint parser error\")\n\t\t}\n\n\t\tcs.con = con\n\t\tcs.minorDirty = minorDirty\n\t\tcs.patchDirty = patchDirty\n\t\tcs.dirty = dirty\n\n\t\treturn cs, nil\n\t}\n\n\t// The rest is the special case where an empty string was passed in which\n\t// is equivalent to * or >=0.0.0\n\tcon, err := StrictNewVersion(\"0.0.0\")\n\tif err != nil {\n\n\t\t// The constraintRegex should catch any regex parsing errors. So,\n\t\t// we should never get here.\n\t\treturn nil, errors.New(\"constraint parser error\")\n\t}\n\n\tcs := &constraint{\n\t\tcon:        con,\n\t\torig:       c,\n\t\torigfunc:   \"\",\n\t\tminorDirty: false,\n\t\tpatchDirty: false,\n\t\tdirty:      true,\n\t}\n\treturn cs, nil\n}\n\n// Constraint functions\nfunc constraintNotEqual(v *Version, c *constraint, includePre bool) (bool, error) {\n\t// The existence of prereleases is checked at the group level and passed in.\n\t// Exit early if the version has a prerelease but those are to be ignored.\n\tif v.Prerelease() != \"\" && !includePre {\n\t\treturn false, fmt.Errorf(\"%s is a prerelease version and the constraint is only looking for release versions\", v)\n\t}\n\n\tif c.dirty {\n\t\tif c.con.Major() != v.Major() {\n\t\t\treturn true, nil\n\t\t}\n\t\tif c.con.Minor() != v.Minor() && !c.minorDirty {\n\t\t\treturn true, nil\n\t\t} else if c.minorDirty {\n\t\t\treturn false, fmt.Errorf(\"%s is equal to %s\", v, c.orig)\n\t\t} else if c.con.Patch() != v.Patch() && !c.patchDirty {\n\t\t\treturn true, nil\n\t\t} else if c.patchDirty {\n\t\t\t// Need to handle prereleases if present\n\t\t\tif v.Prerelease() != \"\" || c.con.Prerelease() != \"\" {\n\t\t\t\teq := comparePrerelease(v.Prerelease(), c.con.Prerelease()) != 0\n\t\t\t\tif eq {\n\t\t\t\t\treturn true, nil\n\t\t\t\t}\n\t\t\t\treturn false, fmt.Errorf(\"%s is equal to %s\", v, c.orig)\n\t\t\t}\n\t\t\treturn false, fmt.Errorf(\"%s is equal to %s\", v, c.orig)\n\t\t}\n\t}\n\n\teq := v.Equal(c.con)\n\tif eq {\n\t\treturn false, fmt.Errorf(\"%s is equal to %s\", v, c.orig)\n\t}\n\n\treturn true, nil\n}\n\nfunc constraintGreaterThan(v *Version, c *constraint, includePre bool) (bool, error) {\n\n\t// The existence of prereleases is checked at the group level and passed in.\n\t// Exit early if the version has a prerelease but those are to be ignored.\n\tif v.Prerelease() != \"\" && !includePre {\n\t\treturn false, fmt.Errorf(\"%s is a prerelease version and the constraint is only looking for release versions\", v)\n\t}\n\n\tvar eq bool\n\n\tif !c.dirty {\n\t\teq = v.Compare(c.con) == 1\n\t\tif eq {\n\t\t\treturn true, nil\n\t\t}\n\t\treturn false, fmt.Errorf(\"%s is less than or equal to %s\", v, c.orig)\n\t}\n\n\tif v.Major() > c.con.Major() {\n\t\treturn true, nil\n\t} else if v.Major() < c.con.Major() {\n\t\treturn false, fmt.Errorf(\"%s is less than or equal to %s\", v, c.orig)\n\t} else if c.minorDirty {\n\t\t// This is a range case such as >11. When the version is something like\n\t\t// 11.1.0 is it not > 11. For that we would need 12 or higher\n\t\treturn false, fmt.Errorf(\"%s is less than or equal to %s\", v, c.orig)\n\t} else if c.patchDirty {\n\t\t// This is for ranges such as >11.1. A version of 11.1.1 is not greater\n\t\t// which one of 11.2.1 is greater\n\t\teq = v.Minor() > c.con.Minor()\n\t\tif eq {\n\t\t\treturn true, nil\n\t\t}\n\t\treturn false, fmt.Errorf(\"%s is less than or equal to %s\", v, c.orig)\n\t}\n\n\t// If we have gotten here we are not comparing pre-preleases and can use the\n\t// Compare function to accomplish that.\n\teq = v.Compare(c.con) == 1\n\tif eq {\n\t\treturn true, nil\n\t}\n\treturn false, fmt.Errorf(\"%s is less than or equal to %s\", v, c.orig)\n}\n\nfunc constraintLessThan(v *Version, c *constraint, includePre bool) (bool, error) {\n\t// The existence of prereleases is checked at the group level and passed in.\n\t// Exit early if the version has a prerelease but those are to be ignored.\n\tif v.Prerelease() != \"\" && !includePre {\n\t\treturn false, fmt.Errorf(\"%s is a prerelease version and the constraint is only looking for release versions\", v)\n\t}\n\n\teq := v.Compare(c.con) < 0\n\tif eq {\n\t\treturn true, nil\n\t}\n\treturn false, fmt.Errorf(\"%s is greater than or equal to %s\", v, c.orig)\n}\n\nfunc constraintGreaterThanEqual(v *Version, c *constraint, includePre bool) (bool, error) {\n\n\t// The existence of prereleases is checked at the group level and passed in.\n\t// Exit early if the version has a prerelease but those are to be ignored.\n\tif v.Prerelease() != \"\" && !includePre {\n\t\treturn false, fmt.Errorf(\"%s is a prerelease version and the constraint is only looking for release versions\", v)\n\t}\n\n\teq := v.Compare(c.con) >= 0\n\tif eq {\n\t\treturn true, nil\n\t}\n\treturn false, fmt.Errorf(\"%s is less than %s\", v, c.orig)\n}\n\nfunc constraintLessThanEqual(v *Version, c *constraint, includePre bool) (bool, error) {\n\t// The existence of prereleases is checked at the group level and passed in.\n\t// Exit early if the version has a prerelease but those are to be ignored.\n\tif v.Prerelease() != \"\" && !includePre {\n\t\treturn false, fmt.Errorf(\"%s is a prerelease version and the constraint is only looking for release versions\", v)\n\t}\n\n\tvar eq bool\n\n\tif !c.dirty {\n\t\teq = v.Compare(c.con) <= 0\n\t\tif eq {\n\t\t\treturn true, nil\n\t\t}\n\t\treturn false, fmt.Errorf(\"%s is greater than %s\", v, c.orig)\n\t}\n\n\tif v.Major() > c.con.Major() {\n\t\treturn false, fmt.Errorf(\"%s is greater than %s\", v, c.orig)\n\t} else if v.Major() == c.con.Major() && v.Minor() > c.con.Minor() && !c.minorDirty {\n\t\treturn false, fmt.Errorf(\"%s is greater than %s\", v, c.orig)\n\t}\n\n\treturn true, nil\n}\n\n// ~*, ~>* --> >= 0.0.0 (any)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0, <3.0.0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0, <2.1.0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0, <1.3.0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3, <1.3.0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0, <1.3.0\nfunc constraintTilde(v *Version, c *constraint, includePre bool) (bool, error) {\n\t// The existence of prereleases is checked at the group level and passed in.\n\t// Exit early if the version has a prerelease but those are to be ignored.\n\tif v.Prerelease() != \"\" && !includePre {\n\t\treturn false, fmt.Errorf(\"%s is a prerelease version and the constraint is only looking for release versions\", v)\n\t}\n\n\tif v.LessThan(c.con) {\n\t\treturn false, fmt.Errorf(\"%s is less than %s\", v, c.orig)\n\t}\n\n\t// ~0.0.0 is a special case where all constraints are accepted. It's\n\t// equivalent to >= 0.0.0.\n\tif c.con.Major() == 0 && c.con.Minor() == 0 && c.con.Patch() == 0 &&\n\t\t!c.minorDirty && !c.patchDirty {\n\t\treturn true, nil\n\t}\n\n\tif v.Major() != c.con.Major() {\n\t\treturn false, fmt.Errorf(\"%s does not have same major version as %s\", v, c.orig)\n\t}\n\n\tif v.Minor() != c.con.Minor() && !c.minorDirty {\n\t\treturn false, fmt.Errorf(\"%s does not have same major and minor version as %s\", v, c.orig)\n\t}\n\n\treturn true, nil\n}\n\n// When there is a .x (dirty) status it automatically opts in to ~. Otherwise\n// it's a straight =\nfunc constraintTildeOrEqual(v *Version, c *constraint, includePre bool) (bool, error) {\n\t// The existence of prereleases is checked at the group level and passed in.\n\t// Exit early if the version has a prerelease but those are to be ignored.\n\tif v.Prerelease() != \"\" && !includePre {\n\t\treturn false, fmt.Errorf(\"%s is a prerelease version and the constraint is only looking for release versions\", v)\n\t}\n\n\tif c.dirty {\n\t\treturn constraintTilde(v, c, includePre)\n\t}\n\n\teq := v.Equal(c.con)\n\tif eq {\n\t\treturn true, nil\n\t}\n\n\treturn false, fmt.Errorf(\"%s is not equal to %s\", v, c.orig)\n}\n\n// ^*      -->  (any)\n// ^1.2.3  -->  >=1.2.3 <2.0.0\n// ^1.2    -->  >=1.2.0 <2.0.0\n// ^1      -->  >=1.0.0 <2.0.0\n// ^0.2.3  -->  >=0.2.3 <0.3.0\n// ^0.2    -->  >=0.2.0 <0.3.0\n// ^0.0.3  -->  >=0.0.3 <0.0.4\n// ^0.0    -->  >=0.0.0 <0.1.0\n// ^0      -->  >=0.0.0 <1.0.0\nfunc constraintCaret(v *Version, c *constraint, includePre bool) (bool, error) {\n\t// The existence of prereleases is checked at the group level and passed in.\n\t// Exit early if the version has a prerelease but those are to be ignored.\n\tif v.Prerelease() != \"\" && !includePre {\n\t\treturn false, fmt.Errorf(\"%s is a prerelease version and the constraint is only looking for release versions\", v)\n\t}\n\n\t// This less than handles prereleases\n\tif v.LessThan(c.con) {\n\t\treturn false, fmt.Errorf(\"%s is less than %s\", v, c.orig)\n\t}\n\n\tvar eq bool\n\n\t// ^ when the major > 0 is >=x.y.z < x+1\n\tif c.con.Major() > 0 || c.minorDirty {\n\n\t\t// ^ has to be within a major range for > 0. Everything less than was\n\t\t// filtered out with the LessThan call above. This filters out those\n\t\t// that greater but not within the same major range.\n\t\teq = v.Major() == c.con.Major()\n\t\tif eq {\n\t\t\treturn true, nil\n\t\t}\n\t\treturn false, fmt.Errorf(\"%s does not have same major version as %s\", v, c.orig)\n\t}\n\n\t// ^ when the major is 0 and minor > 0 is >=0.y.z < 0.y+1\n\tif c.con.Major() == 0 && v.Major() > 0 {\n\t\treturn false, fmt.Errorf(\"%s does not have same major version as %s\", v, c.orig)\n\t}\n\t// If the con Minor is > 0 it is not dirty\n\tif c.con.Minor() > 0 || c.patchDirty {\n\t\teq = v.Minor() == c.con.Minor()\n\t\tif eq {\n\t\t\treturn true, nil\n\t\t}\n\t\treturn false, fmt.Errorf(\"%s does not have same minor version as %s. Expected minor versions to match when constraint major version is 0\", v, c.orig)\n\t}\n\t// ^ when the minor is 0 and minor > 0 is =0.0.z\n\tif c.con.Minor() == 0 && v.Minor() > 0 {\n\t\treturn false, fmt.Errorf(\"%s does not have same minor version as %s\", v, c.orig)\n\t}\n\n\t// At this point the major is 0 and the minor is 0 and not dirty. The patch\n\t// is not dirty so we need to check if they are equal. If they are not equal\n\teq = c.con.Patch() == v.Patch()\n\tif eq {\n\t\treturn true, nil\n\t}\n\treturn false, fmt.Errorf(\"%s does not equal %s. Expect version and constraint to equal when major and minor versions are 0\", v, c.orig)\n}\n\nfunc isX(x string) bool {\n\tswitch x {\n\tcase \"x\", \"*\", \"X\":\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\nfunc rewriteRange(i string) string {\n\tm := constraintRangeRegex.FindAllStringSubmatch(i, -1)\n\tif m == nil {\n\t\treturn i\n\t}\n\to := i\n\tfor _, v := range m {\n\t\tt := fmt.Sprintf(\">= %s, <= %s \", v[1], v[11])\n\t\to = strings.Replace(o, v[0], t, 1)\n\t}\n\n\treturn o\n}\n"
  },
  {
    "path": "tests/vendor/github.com/Masterminds/semver/v3/doc.go",
    "content": "/*\nPackage semver provides the ability to work with Semantic Versions (http://semver.org) in Go.\n\nSpecifically it provides the ability to:\n\n  - Parse semantic versions\n  - Sort semantic versions\n  - Check if a semantic version fits within a set of constraints\n  - Optionally work with a `v` prefix\n\n# Parsing Semantic Versions\n\nThere are two functions that can parse semantic versions. The `StrictNewVersion`\nfunction only parses valid version 2 semantic versions as outlined in the\nspecification. The `NewVersion` function attempts to coerce a version into a\nsemantic version and parse it. For example, if there is a leading v or a version\nlisted without all 3 parts (e.g. 1.2) it will attempt to coerce it into a valid\nsemantic version (e.g., 1.2.0). In both cases a `Version` object is returned\nthat can be sorted, compared, and used in constraints.\n\nWhen parsing a version an optional error can be returned if there is an issue\nparsing the version. For example,\n\n\tv, err := semver.NewVersion(\"1.2.3-beta.1+b345\")\n\nThe version object has methods to get the parts of the version, compare it to\nother versions, convert the version back into a string, and get the original\nstring. For more details please see the documentation\nat https://godoc.org/github.com/Masterminds/semver.\n\n# Sorting Semantic Versions\n\nA set of versions can be sorted using the `sort` package from the standard library.\nFor example,\n\n\t    raw := []string{\"1.2.3\", \"1.0\", \"1.3\", \"2\", \"0.4.2\",}\n\t    vs := make([]*semver.Version, len(raw))\n\t\tfor i, r := range raw {\n\t\t\tv, err := semver.NewVersion(r)\n\t\t\tif err != nil {\n\t\t\t\tt.Errorf(\"Error parsing version: %s\", err)\n\t\t\t}\n\n\t\t\tvs[i] = v\n\t\t}\n\n\t\tsort.Sort(semver.Collection(vs))\n\n# Checking Version Constraints and Comparing Versions\n\nThere are two methods for comparing versions. One uses comparison methods on\n`Version` instances and the other is using Constraints. There are some important\ndifferences to notes between these two methods of comparison.\n\n 1. When two versions are compared using functions such as `Compare`, `LessThan`,\n    and others it will follow the specification and always include prereleases\n    within the comparison. It will provide an answer valid with the comparison\n    spec section at https://semver.org/#spec-item-11\n 2. When constraint checking is used for checks or validation it will follow a\n    different set of rules that are common for ranges with tools like npm/js\n    and Rust/Cargo. This includes considering prereleases to be invalid if the\n    ranges does not include on. If you want to have it include pre-releases a\n    simple solution is to include `-0` in your range.\n 3. Constraint ranges can have some complex rules including the shorthard use of\n    ~ and ^. For more details on those see the options below.\n\nThere are differences between the two methods or checking versions because the\ncomparison methods on `Version` follow the specification while comparison ranges\nare not part of the specification. Different packages and tools have taken it\nupon themselves to come up with range rules. This has resulted in differences.\nFor example, npm/js and Cargo/Rust follow similar patterns which PHP has a\ndifferent pattern for ^. The comparison features in this package follow the\nnpm/js and Cargo/Rust lead because applications using it have followed similar\npatters with their versions.\n\nChecking a version against version constraints is one of the most featureful\nparts of the package.\n\n\tc, err := semver.NewConstraint(\">= 1.2.3\")\n\tif err != nil {\n\t    // Handle constraint not being parsable.\n\t}\n\n\tv, err := semver.NewVersion(\"1.3\")\n\tif err != nil {\n\t    // Handle version not being parsable.\n\t}\n\t// Check if the version meets the constraints. The a variable will be true.\n\ta := c.Check(v)\n\n# Basic Comparisons\n\nThere are two elements to the comparisons. First, a comparison string is a list\nof comma or space separated AND comparisons. These are then separated by || (OR)\ncomparisons. For example, `\">= 1.2 < 3.0.0 || >= 4.2.3\"` is looking for a\ncomparison that's greater than or equal to 1.2 and less than 3.0.0 or is\ngreater than or equal to 4.2.3. This can also be written as\n`\">= 1.2, < 3.0.0 || >= 4.2.3\"`\n\nThe basic comparisons are:\n\n  - `=`: equal (aliased to no operator)\n  - `!=`: not equal\n  - `>`: greater than\n  - `<`: less than\n  - `>=`: greater than or equal to\n  - `<=`: less than or equal to\n\n# Hyphen Range Comparisons\n\nThere are multiple methods to handle ranges and the first is hyphens ranges.\nThese look like:\n\n  - `1.2 - 1.4.5` which is equivalent to `>= 1.2, <= 1.4.5`\n  - `2.3.4 - 4.5` which is equivalent to `>= 2.3.4 <= 4.5`\n\n# Wildcards In Comparisons\n\nThe `x`, `X`, and `*` characters can be used as a wildcard character. This works\nfor all comparison operators. When used on the `=` operator it falls\nback to the tilde operation. For example,\n\n  - `1.2.x` is equivalent to `>= 1.2.0 < 1.3.0`\n  - `>= 1.2.x` is equivalent to `>= 1.2.0`\n  - `<= 2.x` is equivalent to `<= 3`\n  - `*` is equivalent to `>= 0.0.0`\n\nTilde Range Comparisons (Patch)\n\nThe tilde (`~`) comparison operator is for patch level ranges when a minor\nversion is specified and major level changes when the minor number is missing.\nFor example,\n\n  - `~1.2.3` is equivalent to `>= 1.2.3 < 1.3.0`\n  - `~1` is equivalent to `>= 1, < 2`\n  - `~2.3` is equivalent to `>= 2.3 < 2.4`\n  - `~1.2.x` is equivalent to `>= 1.2.0 < 1.3.0`\n  - `~1.x` is equivalent to `>= 1 < 2`\n\nCaret Range Comparisons (Major)\n\nThe caret (`^`) comparison operator is for major level changes once a stable\n(1.0.0) release has occurred. Prior to a 1.0.0 release the minor versions acts\nas the API stability level. This is useful when comparisons of API versions as a\nmajor change is API breaking. For example,\n\n  - `^1.2.3` is equivalent to `>= 1.2.3, < 2.0.0`\n  - `^1.2.x` is equivalent to `>= 1.2.0, < 2.0.0`\n  - `^2.3` is equivalent to `>= 2.3, < 3`\n  - `^2.x` is equivalent to `>= 2.0.0, < 3`\n  - `^0.2.3` is equivalent to `>=0.2.3 <0.3.0`\n  - `^0.2` is equivalent to `>=0.2.0 <0.3.0`\n  - `^0.0.3` is equivalent to `>=0.0.3 <0.0.4`\n  - `^0.0` is equivalent to `>=0.0.0 <0.1.0`\n  - `^0` is equivalent to `>=0.0.0 <1.0.0`\n\n# Validation\n\nIn addition to testing a version against a constraint, a version can be validated\nagainst a constraint. When validation fails a slice of errors containing why a\nversion didn't meet the constraint is returned. For example,\n\n\tc, err := semver.NewConstraint(\"<= 1.2.3, >= 1.4\")\n\tif err != nil {\n\t    // Handle constraint not being parseable.\n\t}\n\n\tv, _ := semver.NewVersion(\"1.3\")\n\tif err != nil {\n\t    // Handle version not being parseable.\n\t}\n\n\t// Validate a version against a constraint.\n\ta, msgs := c.Validate(v)\n\t// a is false\n\tfor _, m := range msgs {\n\t    fmt.Println(m)\n\n\t    // Loops over the errors which would read\n\t    // \"1.3 is greater than 1.2.3\"\n\t    // \"1.3 is less than 1.4\"\n\t}\n*/\npackage semver\n"
  },
  {
    "path": "tests/vendor/github.com/Masterminds/semver/v3/version.go",
    "content": "package semver\n\nimport (\n\t\"bytes\"\n\t\"database/sql/driver\"\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n)\n\n// The compiled version of the regex created at init() is cached here so it\n// only needs to be created once.\nvar versionRegex *regexp.Regexp\nvar looseVersionRegex *regexp.Regexp\n\n// CoerceNewVersion sets if leading 0's are allowd in the version part. Leading 0's are\n// not allowed in a valid semantic version. When set to true, NewVersion will coerce\n// leading 0's into a valid version.\nvar CoerceNewVersion = true\n\n// DetailedNewVersionErrors specifies if detailed errors are returned from the NewVersion\n// function. This is used when CoerceNewVersion is set to false. If set to false\n// ErrInvalidSemVer is returned for an invalid version. This does not apply to\n// StrictNewVersion. Setting this function to false returns errors more quickly.\nvar DetailedNewVersionErrors = true\n\nvar (\n\t// ErrInvalidSemVer is returned a version is found to be invalid when\n\t// being parsed.\n\tErrInvalidSemVer = errors.New(\"invalid semantic version\")\n\n\t// ErrEmptyString is returned when an empty string is passed in for parsing.\n\tErrEmptyString = errors.New(\"version string empty\")\n\n\t// ErrInvalidCharacters is returned when invalid characters are found as\n\t// part of a version\n\tErrInvalidCharacters = errors.New(\"invalid characters in version\")\n\n\t// ErrSegmentStartsZero is returned when a version segment starts with 0.\n\t// This is invalid in SemVer.\n\tErrSegmentStartsZero = errors.New(\"version segment starts with 0\")\n\n\t// ErrInvalidMetadata is returned when the metadata is an invalid format\n\tErrInvalidMetadata = errors.New(\"invalid metadata string\")\n\n\t// ErrInvalidPrerelease is returned when the pre-release is an invalid format\n\tErrInvalidPrerelease = errors.New(\"invalid prerelease string\")\n)\n\n// semVerRegex is the regular expression used to parse a semantic version.\n// This is not the official regex from the semver spec. It has been modified to allow for loose handling\n// where versions like 2.1 are detected.\nconst semVerRegex string = `v?(0|[1-9]\\d*)(?:\\.(0|[1-9]\\d*))?(?:\\.(0|[1-9]\\d*))?` +\n\t`(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?` +\n\t`(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?`\n\n// looseSemVerRegex is a regular expression that lets invalid semver expressions through\n// with enough detail that certain errors can be checked for.\nconst looseSemVerRegex string = `v?([0-9]+)(\\.[0-9]+)?(\\.[0-9]+)?` +\n\t`(-([0-9A-Za-z\\-]+(\\.[0-9A-Za-z\\-]+)*))?` +\n\t`(\\+([0-9A-Za-z\\-]+(\\.[0-9A-Za-z\\-]+)*))?`\n\n// Version represents a single semantic version.\ntype Version struct {\n\tmajor, minor, patch uint64\n\tpre                 string\n\tmetadata            string\n\toriginal            string\n}\n\nfunc init() {\n\tversionRegex = regexp.MustCompile(\"^\" + semVerRegex + \"$\")\n\tlooseVersionRegex = regexp.MustCompile(\"^\" + looseSemVerRegex + \"$\")\n}\n\nconst (\n\tnum     string = \"0123456789\"\n\tallowed string = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-\" + num\n)\n\n// StrictNewVersion parses a given version and returns an instance of Version or\n// an error if unable to parse the version. Only parses valid semantic versions.\n// Performs checking that can find errors within the version.\n// If you want to coerce a version such as 1 or 1.2 and parse it as the 1.x\n// releases of semver did, use the NewVersion() function.\nfunc StrictNewVersion(v string) (*Version, error) {\n\t// Parsing here does not use RegEx in order to increase performance and reduce\n\t// allocations.\n\n\tif len(v) == 0 {\n\t\treturn nil, ErrEmptyString\n\t}\n\n\t// Split the parts into [0]major, [1]minor, and [2]patch,prerelease,build\n\tparts := strings.SplitN(v, \".\", 3)\n\tif len(parts) != 3 {\n\t\treturn nil, ErrInvalidSemVer\n\t}\n\n\tsv := &Version{\n\t\toriginal: v,\n\t}\n\n\t// Extract build metadata\n\tif strings.Contains(parts[2], \"+\") {\n\t\textra := strings.SplitN(parts[2], \"+\", 2)\n\t\tsv.metadata = extra[1]\n\t\tparts[2] = extra[0]\n\t\tif err := validateMetadata(sv.metadata); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\t// Extract build prerelease\n\tif strings.Contains(parts[2], \"-\") {\n\t\textra := strings.SplitN(parts[2], \"-\", 2)\n\t\tsv.pre = extra[1]\n\t\tparts[2] = extra[0]\n\t\tif err := validatePrerelease(sv.pre); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\t// Validate the number segments are valid. This includes only having positive\n\t// numbers and no leading 0's.\n\tfor _, p := range parts {\n\t\tif !containsOnly(p, num) {\n\t\t\treturn nil, ErrInvalidCharacters\n\t\t}\n\n\t\tif len(p) > 1 && p[0] == '0' {\n\t\t\treturn nil, ErrSegmentStartsZero\n\t\t}\n\t}\n\n\t// Extract major, minor, and patch\n\tvar err error\n\tsv.major, err = strconv.ParseUint(parts[0], 10, 64)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tsv.minor, err = strconv.ParseUint(parts[1], 10, 64)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tsv.patch, err = strconv.ParseUint(parts[2], 10, 64)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn sv, nil\n}\n\n// NewVersion parses a given version and returns an instance of Version or\n// an error if unable to parse the version. If the version is SemVer-ish it\n// attempts to convert it to SemVer. If you want  to validate it was a strict\n// semantic version at parse time see StrictNewVersion().\nfunc NewVersion(v string) (*Version, error) {\n\tif CoerceNewVersion {\n\t\treturn coerceNewVersion(v)\n\t}\n\tm := versionRegex.FindStringSubmatch(v)\n\tif m == nil {\n\n\t\t// Disabling detailed errors is first so that it is in the fast path.\n\t\tif !DetailedNewVersionErrors {\n\t\t\treturn nil, ErrInvalidSemVer\n\t\t}\n\n\t\t// Check for specific errors with the semver string and return a more detailed\n\t\t// error.\n\t\tm = looseVersionRegex.FindStringSubmatch(v)\n\t\tif m == nil {\n\t\t\treturn nil, ErrInvalidSemVer\n\t\t}\n\t\terr := validateVersion(m)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn nil, ErrInvalidSemVer\n\t}\n\n\tsv := &Version{\n\t\tmetadata: m[5],\n\t\tpre:      m[4],\n\t\toriginal: v,\n\t}\n\n\tvar err error\n\tsv.major, err = strconv.ParseUint(m[1], 10, 64)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error parsing version segment: %w\", err)\n\t}\n\n\tif m[2] != \"\" {\n\t\tsv.minor, err = strconv.ParseUint(m[2], 10, 64)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"error parsing version segment: %w\", err)\n\t\t}\n\t} else {\n\t\tsv.minor = 0\n\t}\n\n\tif m[3] != \"\" {\n\t\tsv.patch, err = strconv.ParseUint(m[3], 10, 64)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"error parsing version segment: %w\", err)\n\t\t}\n\t} else {\n\t\tsv.patch = 0\n\t}\n\n\t// Perform some basic due diligence on the extra parts to ensure they are\n\t// valid.\n\n\tif sv.pre != \"\" {\n\t\tif err = validatePrerelease(sv.pre); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\tif sv.metadata != \"\" {\n\t\tif err = validateMetadata(sv.metadata); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\treturn sv, nil\n}\n\nfunc coerceNewVersion(v string) (*Version, error) {\n\tm := looseVersionRegex.FindStringSubmatch(v)\n\tif m == nil {\n\t\treturn nil, ErrInvalidSemVer\n\t}\n\n\tsv := &Version{\n\t\tmetadata: m[8],\n\t\tpre:      m[5],\n\t\toriginal: v,\n\t}\n\n\tvar err error\n\tsv.major, err = strconv.ParseUint(m[1], 10, 64)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error parsing version segment: %w\", err)\n\t}\n\n\tif m[2] != \"\" {\n\t\tsv.minor, err = strconv.ParseUint(strings.TrimPrefix(m[2], \".\"), 10, 64)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"error parsing version segment: %w\", err)\n\t\t}\n\t} else {\n\t\tsv.minor = 0\n\t}\n\n\tif m[3] != \"\" {\n\t\tsv.patch, err = strconv.ParseUint(strings.TrimPrefix(m[3], \".\"), 10, 64)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"error parsing version segment: %w\", err)\n\t\t}\n\t} else {\n\t\tsv.patch = 0\n\t}\n\n\t// Perform some basic due diligence on the extra parts to ensure they are\n\t// valid.\n\n\tif sv.pre != \"\" {\n\t\tif err = validatePrerelease(sv.pre); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\tif sv.metadata != \"\" {\n\t\tif err = validateMetadata(sv.metadata); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\treturn sv, nil\n}\n\n// New creates a new instance of Version with each of the parts passed in as\n// arguments instead of parsing a version string.\nfunc New(major, minor, patch uint64, pre, metadata string) *Version {\n\tv := Version{\n\t\tmajor:    major,\n\t\tminor:    minor,\n\t\tpatch:    patch,\n\t\tpre:      pre,\n\t\tmetadata: metadata,\n\t\toriginal: \"\",\n\t}\n\n\tv.original = v.String()\n\n\treturn &v\n}\n\n// MustParse parses a given version and panics on error.\nfunc MustParse(v string) *Version {\n\tsv, err := NewVersion(v)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn sv\n}\n\n// String converts a Version object to a string.\n// Note, if the original version contained a leading v this version will not.\n// See the Original() method to retrieve the original value. Semantic Versions\n// don't contain a leading v per the spec. Instead it's optional on\n// implementation.\nfunc (v Version) String() string {\n\tvar buf bytes.Buffer\n\n\tfmt.Fprintf(&buf, \"%d.%d.%d\", v.major, v.minor, v.patch)\n\tif v.pre != \"\" {\n\t\tfmt.Fprintf(&buf, \"-%s\", v.pre)\n\t}\n\tif v.metadata != \"\" {\n\t\tfmt.Fprintf(&buf, \"+%s\", v.metadata)\n\t}\n\n\treturn buf.String()\n}\n\n// Original returns the original value passed in to be parsed.\nfunc (v *Version) Original() string {\n\treturn v.original\n}\n\n// Major returns the major version.\nfunc (v Version) Major() uint64 {\n\treturn v.major\n}\n\n// Minor returns the minor version.\nfunc (v Version) Minor() uint64 {\n\treturn v.minor\n}\n\n// Patch returns the patch version.\nfunc (v Version) Patch() uint64 {\n\treturn v.patch\n}\n\n// Prerelease returns the pre-release version.\nfunc (v Version) Prerelease() string {\n\treturn v.pre\n}\n\n// Metadata returns the metadata on the version.\nfunc (v Version) Metadata() string {\n\treturn v.metadata\n}\n\n// originalVPrefix returns the original 'v' prefix if any.\nfunc (v Version) originalVPrefix() string {\n\t// Note, only lowercase v is supported as a prefix by the parser.\n\tif v.original != \"\" && v.original[:1] == \"v\" {\n\t\treturn v.original[:1]\n\t}\n\treturn \"\"\n}\n\n// IncPatch produces the next patch version.\n// If the current version does not have prerelease/metadata information,\n// it unsets metadata and prerelease values, increments patch number.\n// If the current version has any of prerelease or metadata information,\n// it unsets both values and keeps current patch value\nfunc (v Version) IncPatch() Version {\n\tvNext := v\n\t// according to http://semver.org/#spec-item-9\n\t// Pre-release versions have a lower precedence than the associated normal version.\n\t// according to http://semver.org/#spec-item-10\n\t// Build metadata SHOULD be ignored when determining version precedence.\n\tif v.pre != \"\" {\n\t\tvNext.metadata = \"\"\n\t\tvNext.pre = \"\"\n\t} else {\n\t\tvNext.metadata = \"\"\n\t\tvNext.pre = \"\"\n\t\tvNext.patch = v.patch + 1\n\t}\n\tvNext.original = v.originalVPrefix() + \"\" + vNext.String()\n\treturn vNext\n}\n\n// IncMinor produces the next minor version.\n// Sets patch to 0.\n// Increments minor number.\n// Unsets metadata.\n// Unsets prerelease status.\nfunc (v Version) IncMinor() Version {\n\tvNext := v\n\tvNext.metadata = \"\"\n\tvNext.pre = \"\"\n\tvNext.patch = 0\n\tvNext.minor = v.minor + 1\n\tvNext.original = v.originalVPrefix() + \"\" + vNext.String()\n\treturn vNext\n}\n\n// IncMajor produces the next major version.\n// Sets patch to 0.\n// Sets minor to 0.\n// Increments major number.\n// Unsets metadata.\n// Unsets prerelease status.\nfunc (v Version) IncMajor() Version {\n\tvNext := v\n\tvNext.metadata = \"\"\n\tvNext.pre = \"\"\n\tvNext.patch = 0\n\tvNext.minor = 0\n\tvNext.major = v.major + 1\n\tvNext.original = v.originalVPrefix() + \"\" + vNext.String()\n\treturn vNext\n}\n\n// SetPrerelease defines the prerelease value.\n// Value must not include the required 'hyphen' prefix.\nfunc (v Version) SetPrerelease(prerelease string) (Version, error) {\n\tvNext := v\n\tif len(prerelease) > 0 {\n\t\tif err := validatePrerelease(prerelease); err != nil {\n\t\t\treturn vNext, err\n\t\t}\n\t}\n\tvNext.pre = prerelease\n\tvNext.original = v.originalVPrefix() + \"\" + vNext.String()\n\treturn vNext, nil\n}\n\n// SetMetadata defines metadata value.\n// Value must not include the required 'plus' prefix.\nfunc (v Version) SetMetadata(metadata string) (Version, error) {\n\tvNext := v\n\tif len(metadata) > 0 {\n\t\tif err := validateMetadata(metadata); err != nil {\n\t\t\treturn vNext, err\n\t\t}\n\t}\n\tvNext.metadata = metadata\n\tvNext.original = v.originalVPrefix() + \"\" + vNext.String()\n\treturn vNext, nil\n}\n\n// LessThan tests if one version is less than another one.\nfunc (v *Version) LessThan(o *Version) bool {\n\treturn v.Compare(o) < 0\n}\n\n// LessThanEqual tests if one version is less or equal than another one.\nfunc (v *Version) LessThanEqual(o *Version) bool {\n\treturn v.Compare(o) <= 0\n}\n\n// GreaterThan tests if one version is greater than another one.\nfunc (v *Version) GreaterThan(o *Version) bool {\n\treturn v.Compare(o) > 0\n}\n\n// GreaterThanEqual tests if one version is greater or equal than another one.\nfunc (v *Version) GreaterThanEqual(o *Version) bool {\n\treturn v.Compare(o) >= 0\n}\n\n// Equal tests if two versions are equal to each other.\n// Note, versions can be equal with different metadata since metadata\n// is not considered part of the comparable version.\nfunc (v *Version) Equal(o *Version) bool {\n\tif v == o {\n\t\treturn true\n\t}\n\tif v == nil || o == nil {\n\t\treturn false\n\t}\n\treturn v.Compare(o) == 0\n}\n\n// Compare compares this version to another one. It returns -1, 0, or 1 if\n// the version smaller, equal, or larger than the other version.\n//\n// Versions are compared by X.Y.Z. Build metadata is ignored. Prerelease is\n// lower than the version without a prerelease. Compare always takes into account\n// prereleases. If you want to work with ranges using typical range syntaxes that\n// skip prereleases if the range is not looking for them use constraints.\nfunc (v *Version) Compare(o *Version) int {\n\t// Compare the major, minor, and patch version for differences. If a\n\t// difference is found return the comparison.\n\tif d := compareSegment(v.Major(), o.Major()); d != 0 {\n\t\treturn d\n\t}\n\tif d := compareSegment(v.Minor(), o.Minor()); d != 0 {\n\t\treturn d\n\t}\n\tif d := compareSegment(v.Patch(), o.Patch()); d != 0 {\n\t\treturn d\n\t}\n\n\t// At this point the major, minor, and patch versions are the same.\n\tps := v.pre\n\tpo := o.Prerelease()\n\n\tif ps == \"\" && po == \"\" {\n\t\treturn 0\n\t}\n\tif ps == \"\" {\n\t\treturn 1\n\t}\n\tif po == \"\" {\n\t\treturn -1\n\t}\n\n\treturn comparePrerelease(ps, po)\n}\n\n// UnmarshalJSON implements JSON.Unmarshaler interface.\nfunc (v *Version) UnmarshalJSON(b []byte) error {\n\tvar s string\n\tif err := json.Unmarshal(b, &s); err != nil {\n\t\treturn err\n\t}\n\ttemp, err := NewVersion(s)\n\tif err != nil {\n\t\treturn err\n\t}\n\tv.major = temp.major\n\tv.minor = temp.minor\n\tv.patch = temp.patch\n\tv.pre = temp.pre\n\tv.metadata = temp.metadata\n\tv.original = temp.original\n\treturn nil\n}\n\n// MarshalJSON implements JSON.Marshaler interface.\nfunc (v Version) MarshalJSON() ([]byte, error) {\n\treturn json.Marshal(v.String())\n}\n\n// UnmarshalText implements the encoding.TextUnmarshaler interface.\nfunc (v *Version) UnmarshalText(text []byte) error {\n\ttemp, err := NewVersion(string(text))\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t*v = *temp\n\n\treturn nil\n}\n\n// MarshalText implements the encoding.TextMarshaler interface.\nfunc (v Version) MarshalText() ([]byte, error) {\n\treturn []byte(v.String()), nil\n}\n\n// Scan implements the SQL.Scanner interface.\nfunc (v *Version) Scan(value interface{}) error {\n\tvar s string\n\ts, _ = value.(string)\n\ttemp, err := NewVersion(s)\n\tif err != nil {\n\t\treturn err\n\t}\n\tv.major = temp.major\n\tv.minor = temp.minor\n\tv.patch = temp.patch\n\tv.pre = temp.pre\n\tv.metadata = temp.metadata\n\tv.original = temp.original\n\treturn nil\n}\n\n// Value implements the Driver.Valuer interface.\nfunc (v Version) Value() (driver.Value, error) {\n\treturn v.String(), nil\n}\n\nfunc compareSegment(v, o uint64) int {\n\tif v < o {\n\t\treturn -1\n\t}\n\tif v > o {\n\t\treturn 1\n\t}\n\n\treturn 0\n}\n\nfunc comparePrerelease(v, o string) int {\n\t// split the prelease versions by their part. The separator, per the spec,\n\t// is a .\n\tsparts := strings.Split(v, \".\")\n\toparts := strings.Split(o, \".\")\n\n\t// Find the longer length of the parts to know how many loop iterations to\n\t// go through.\n\tslen := len(sparts)\n\tolen := len(oparts)\n\n\tl := slen\n\tif olen > slen {\n\t\tl = olen\n\t}\n\n\t// Iterate over each part of the prereleases to compare the differences.\n\tfor i := 0; i < l; i++ {\n\t\t// Since the lentgh of the parts can be different we need to create\n\t\t// a placeholder. This is to avoid out of bounds issues.\n\t\tstemp := \"\"\n\t\tif i < slen {\n\t\t\tstemp = sparts[i]\n\t\t}\n\n\t\totemp := \"\"\n\t\tif i < olen {\n\t\t\totemp = oparts[i]\n\t\t}\n\n\t\td := comparePrePart(stemp, otemp)\n\t\tif d != 0 {\n\t\t\treturn d\n\t\t}\n\t}\n\n\t// Reaching here means two versions are of equal value but have different\n\t// metadata (the part following a +). They are not identical in string form\n\t// but the version comparison finds them to be equal.\n\treturn 0\n}\n\nfunc comparePrePart(s, o string) int {\n\t// Fastpath if they are equal\n\tif s == o {\n\t\treturn 0\n\t}\n\n\t// When s or o are empty we can use the other in an attempt to determine\n\t// the response.\n\tif s == \"\" {\n\t\tif o != \"\" {\n\t\t\treturn -1\n\t\t}\n\t\treturn 1\n\t}\n\n\tif o == \"\" {\n\t\tif s != \"\" {\n\t\t\treturn 1\n\t\t}\n\t\treturn -1\n\t}\n\n\t// When comparing strings \"99\" is greater than \"103\". To handle\n\t// cases like this we need to detect numbers and compare them. According\n\t// to the semver spec, numbers are always positive. If there is a - at the\n\t// start like -99 this is to be evaluated as an alphanum. numbers always\n\t// have precedence over alphanum. Parsing as Uints because negative numbers\n\t// are ignored.\n\n\toi, n1 := strconv.ParseUint(o, 10, 64)\n\tsi, n2 := strconv.ParseUint(s, 10, 64)\n\n\t// The case where both are strings compare the strings\n\tif n1 != nil && n2 != nil {\n\t\tif s > o {\n\t\t\treturn 1\n\t\t}\n\t\treturn -1\n\t} else if n1 != nil {\n\t\t// o is a string and s is a number\n\t\treturn -1\n\t} else if n2 != nil {\n\t\t// s is a string and o is a number\n\t\treturn 1\n\t}\n\t// Both are numbers\n\tif si > oi {\n\t\treturn 1\n\t}\n\treturn -1\n}\n\n// Like strings.ContainsAny but does an only instead of any.\nfunc containsOnly(s string, comp string) bool {\n\treturn strings.IndexFunc(s, func(r rune) bool {\n\t\treturn !strings.ContainsRune(comp, r)\n\t}) == -1\n}\n\n// From the spec, \"Identifiers MUST comprise only\n// ASCII alphanumerics and hyphen [0-9A-Za-z-]. Identifiers MUST NOT be empty.\n// Numeric identifiers MUST NOT include leading zeroes.\". These segments can\n// be dot separated.\nfunc validatePrerelease(p string) error {\n\teparts := strings.Split(p, \".\")\n\tfor _, p := range eparts {\n\t\tif p == \"\" {\n\t\t\treturn ErrInvalidPrerelease\n\t\t} else if containsOnly(p, num) {\n\t\t\tif len(p) > 1 && p[0] == '0' {\n\t\t\t\treturn ErrSegmentStartsZero\n\t\t\t}\n\t\t} else if !containsOnly(p, allowed) {\n\t\t\treturn ErrInvalidPrerelease\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// From the spec, \"Build metadata MAY be denoted by\n// appending a plus sign and a series of dot separated identifiers immediately\n// following the patch or pre-release version. Identifiers MUST comprise only\n// ASCII alphanumerics and hyphen [0-9A-Za-z-]. Identifiers MUST NOT be empty.\"\nfunc validateMetadata(m string) error {\n\teparts := strings.Split(m, \".\")\n\tfor _, p := range eparts {\n\t\tif p == \"\" {\n\t\t\treturn ErrInvalidMetadata\n\t\t} else if !containsOnly(p, allowed) {\n\t\t\treturn ErrInvalidMetadata\n\t\t}\n\t}\n\treturn nil\n}\n\n// validateVersion checks for common validation issues but may not catch all errors\nfunc validateVersion(m []string) error {\n\tvar err error\n\tvar v string\n\tif m[1] != \"\" {\n\t\tif len(m[1]) > 1 && m[1][0] == '0' {\n\t\t\treturn ErrSegmentStartsZero\n\t\t}\n\t\t_, err = strconv.ParseUint(m[1], 10, 64)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"error parsing version segment: %w\", err)\n\t\t}\n\t}\n\n\tif m[2] != \"\" {\n\t\tv = strings.TrimPrefix(m[2], \".\")\n\t\tif len(v) > 1 && v[0] == '0' {\n\t\t\treturn ErrSegmentStartsZero\n\t\t}\n\t\t_, err = strconv.ParseUint(v, 10, 64)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"error parsing version segment: %w\", err)\n\t\t}\n\t}\n\n\tif m[3] != \"\" {\n\t\tv = strings.TrimPrefix(m[3], \".\")\n\t\tif len(v) > 1 && v[0] == '0' {\n\t\t\treturn ErrSegmentStartsZero\n\t\t}\n\t\t_, err = strconv.ParseUint(v, 10, 64)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"error parsing version segment: %w\", err)\n\t\t}\n\t}\n\n\tif m[5] != \"\" {\n\t\tif err = validatePrerelease(m[5]); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tif m[8] != \"\" {\n\t\tif err = validateMetadata(m[8]); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "tests/vendor/github.com/go-logr/logr/.golangci.yaml",
    "content": "version: \"2\"\n\nrun:\n  timeout: 1m\n  tests: true\n\nlinters:\n  default: none\n  enable: # please keep this alphabetized\n    - asasalint\n    - asciicheck\n    - copyloopvar\n    - dupl\n    - errcheck\n    - forcetypeassert\n    - goconst\n    - gocritic\n    - govet\n    - ineffassign\n    - misspell\n    - musttag\n    - revive\n    - staticcheck\n    - unused\n\nissues:\n  max-issues-per-linter: 0\n  max-same-issues: 10\n"
  },
  {
    "path": "tests/vendor/github.com/go-logr/logr/CHANGELOG.md",
    "content": "# CHANGELOG\n\n## v1.0.0-rc1\n\nThis is the first logged release.  Major changes (including breaking changes)\nhave occurred since earlier tags.\n"
  },
  {
    "path": "tests/vendor/github.com/go-logr/logr/CONTRIBUTING.md",
    "content": "# Contributing\n\nLogr is open to pull-requests, provided they fit within the intended scope of\nthe project.  Specifically, this library aims to be VERY small and minimalist,\nwith no external dependencies.\n\n## Compatibility\n\nThis project intends to follow [semantic versioning](http://semver.org) and\nis very strict about compatibility.  Any proposed changes MUST follow those\nrules.\n\n## Performance\n\nAs a logging library, logr must be as light-weight as possible.  Any proposed\ncode change must include results of running the [benchmark](./benchmark)\nbefore and after the change.\n"
  },
  {
    "path": "tests/vendor/github.com/go-logr/logr/LICENSE",
    "content": "                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"{}\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright {yyyy} {name of copyright owner}\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "tests/vendor/github.com/go-logr/logr/README.md",
    "content": "# A minimal logging API for Go\n\n[![Go Reference](https://pkg.go.dev/badge/github.com/go-logr/logr.svg)](https://pkg.go.dev/github.com/go-logr/logr)\n[![Go Report Card](https://goreportcard.com/badge/github.com/go-logr/logr)](https://goreportcard.com/report/github.com/go-logr/logr)\n[![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/go-logr/logr/badge)](https://securityscorecards.dev/viewer/?platform=github.com&org=go-logr&repo=logr)\n\nlogr offers an(other) opinion on how Go programs and libraries can do logging\nwithout becoming coupled to a particular logging implementation.  This is not\nan implementation of logging - it is an API.  In fact it is two APIs with two\ndifferent sets of users.\n\nThe `Logger` type is intended for application and library authors.  It provides\na relatively small API which can be used everywhere you want to emit logs.  It\ndefers the actual act of writing logs (to files, to stdout, or whatever) to the\n`LogSink` interface.\n\nThe `LogSink` interface is intended for logging library implementers.  It is a\npure interface which can be implemented by logging frameworks to provide the actual logging\nfunctionality.\n\nThis decoupling allows application and library developers to write code in\nterms of `logr.Logger` (which has very low dependency fan-out) while the\nimplementation of logging is managed \"up stack\" (e.g. in or near `main()`.)\nApplication developers can then switch out implementations as necessary.\n\nMany people assert that libraries should not be logging, and as such efforts\nlike this are pointless.  Those people are welcome to convince the authors of\nthe tens-of-thousands of libraries that *DO* write logs that they are all\nwrong.  In the meantime, logr takes a more practical approach.\n\n## Typical usage\n\nSomewhere, early in an application's life, it will make a decision about which\nlogging library (implementation) it actually wants to use.  Something like:\n\n```\n    func main() {\n        // ... other setup code ...\n\n        // Create the \"root\" logger.  We have chosen the \"logimpl\" implementation,\n        // which takes some initial parameters and returns a logr.Logger.\n        logger := logimpl.New(param1, param2)\n\n        // ... other setup code ...\n```\n\nMost apps will call into other libraries, create structures to govern the flow,\netc.  The `logr.Logger` object can be passed to these other libraries, stored\nin structs, or even used as a package-global variable, if needed.  For example:\n\n```\n    app := createTheAppObject(logger)\n    app.Run()\n```\n\nOutside of this early setup, no other packages need to know about the choice of\nimplementation.  They write logs in terms of the `logr.Logger` that they\nreceived:\n\n```\n    type appObject struct {\n        // ... other fields ...\n        logger logr.Logger\n        // ... other fields ...\n    }\n\n    func (app *appObject) Run() {\n        app.logger.Info(\"starting up\", \"timestamp\", time.Now())\n\n        // ... app code ...\n```\n\n## Background\n\nIf the Go standard library had defined an interface for logging, this project\nprobably would not be needed.  Alas, here we are.\n\nWhen the Go developers started developing such an interface with\n[slog](https://github.com/golang/go/issues/56345), they adopted some of the\nlogr design but also left out some parts and changed others:\n\n| Feature | logr | slog |\n|---------|------|------|\n| High-level API | `Logger` (passed by value) | `Logger` (passed by [pointer](https://github.com/golang/go/issues/59126)) |\n| Low-level API | `LogSink` | `Handler` |\n| Stack unwinding | done by `LogSink` | done by `Logger` |\n| Skipping helper functions | `WithCallDepth`, `WithCallStackHelper` | [not supported by Logger](https://github.com/golang/go/issues/59145) |\n| Generating a value for logging on demand | `Marshaler` | `LogValuer` |\n| Log levels | >= 0, higher meaning \"less important\" | positive and negative, with 0 for \"info\" and higher meaning \"more important\" |\n| Error log entries | always logged, don't have a verbosity level | normal log entries with level >= `LevelError` |\n| Passing logger via context | `NewContext`, `FromContext` | no API |\n| Adding a name to a logger | `WithName` | no API |\n| Modify verbosity of log entries in a call chain | `V` | no API |\n| Grouping of key/value pairs | not supported | `WithGroup`, `GroupValue` |\n| Pass context for extracting additional values | no API | API variants like `InfoCtx` |\n\nThe high-level slog API is explicitly meant to be one of many different APIs\nthat can be layered on top of a shared `slog.Handler`. logr is one such\nalternative API, with [interoperability](#slog-interoperability) provided by\nsome conversion functions.\n\n### Inspiration\n\nBefore you consider this package, please read [this blog post by the\ninimitable Dave Cheney][warning-makes-no-sense].  We really appreciate what\nhe has to say, and it largely aligns with our own experiences.\n\n### Differences from Dave's ideas\n\nThe main differences are:\n\n1. Dave basically proposes doing away with the notion of a logging API in favor\nof `fmt.Printf()`.  We disagree, especially when you consider things like output\nlocations, timestamps, file and line decorations, and structured logging.  This\npackage restricts the logging API to just 2 types of logs: info and error.\n\nInfo logs are things you want to tell the user which are not errors.  Error\nlogs are, well, errors.  If your code receives an `error` from a subordinate\nfunction call and is logging that `error` *and not returning it*, use error\nlogs.\n\n2. Verbosity-levels on info logs.  This gives developers a chance to indicate\narbitrary grades of importance for info logs, without assigning names with\nsemantic meaning such as \"warning\", \"trace\", and \"debug.\"  Superficially this\nmay feel very similar, but the primary difference is the lack of semantics.\nBecause verbosity is a numerical value, it's safe to assume that an app running\nwith higher verbosity means more (and less important) logs will be generated.\n\n## Implementations (non-exhaustive)\n\nThere are implementations for the following logging libraries:\n\n- **a function** (can bridge to non-structured libraries): [funcr](https://github.com/go-logr/logr/tree/master/funcr)\n- **a testing.T** (for use in Go tests, with JSON-like output): [testr](https://github.com/go-logr/logr/tree/master/testr)\n- **github.com/google/glog**: [glogr](https://github.com/go-logr/glogr)\n- **k8s.io/klog** (for Kubernetes): [klogr](https://git.k8s.io/klog/klogr)\n- **a testing.T** (with klog-like text output): [ktesting](https://git.k8s.io/klog/ktesting)\n- **go.uber.org/zap**: [zapr](https://github.com/go-logr/zapr)\n- **log** (the Go standard library logger): [stdr](https://github.com/go-logr/stdr)\n- **github.com/sirupsen/logrus**: [logrusr](https://github.com/bombsimon/logrusr)\n- **github.com/wojas/genericr**: [genericr](https://github.com/wojas/genericr) (makes it easy to implement your own backend)\n- **logfmt** (Heroku style [logging](https://www.brandur.org/logfmt)): [logfmtr](https://github.com/iand/logfmtr)\n- **github.com/rs/zerolog**: [zerologr](https://github.com/go-logr/zerologr)\n- **github.com/go-kit/log**: [gokitlogr](https://github.com/tonglil/gokitlogr) (also compatible with github.com/go-kit/kit/log since v0.12.0)\n- **bytes.Buffer** (writing to a buffer): [bufrlogr](https://github.com/tonglil/buflogr) (useful for ensuring values were logged, like during testing)\n\n## slog interoperability\n\nInteroperability goes both ways, using the `logr.Logger` API with a `slog.Handler`\nand using the `slog.Logger` API with a `logr.LogSink`. `FromSlogHandler` and\n`ToSlogHandler` convert between a `logr.Logger` and a `slog.Handler`.\nAs usual, `slog.New` can be used to wrap such a `slog.Handler` in the high-level\nslog API.\n\n### Using a `logr.LogSink` as backend for slog\n\nIdeally, a logr sink implementation should support both logr and slog by\nimplementing both the normal logr interface(s) and `SlogSink`.  Because\nof a conflict in the parameters of the common `Enabled` method, it is [not\npossible to implement both slog.Handler and logr.Sink in the same\ntype](https://github.com/golang/go/issues/59110).\n\nIf both are supported, log calls can go from the high-level APIs to the backend\nwithout the need to convert parameters. `FromSlogHandler` and `ToSlogHandler` can\nconvert back and forth without adding additional wrappers, with one exception:\nwhen `Logger.V` was used to adjust the verbosity for a `slog.Handler`, then\n`ToSlogHandler` has to use a wrapper which adjusts the verbosity for future\nlog calls.\n\nSuch an implementation should also support values that implement specific\ninterfaces from both packages for logging (`logr.Marshaler`, `slog.LogValuer`,\n`slog.GroupValue`). logr does not convert those.\n\nNot supporting slog has several drawbacks:\n- Recording source code locations works correctly if the handler gets called\n  through `slog.Logger`, but may be wrong in other cases. That's because a\n  `logr.Sink` does its own stack unwinding instead of using the program counter\n  provided by the high-level API.\n- slog levels <= 0 can be mapped to logr levels by negating the level without a\n  loss of information. But all slog levels > 0 (e.g. `slog.LevelWarning` as\n  used by `slog.Logger.Warn`) must be mapped to 0 before calling the sink\n  because logr does not support \"more important than info\" levels.\n- The slog group concept is supported by prefixing each key in a key/value\n  pair with the group names, separated by a dot. For structured output like\n  JSON it would be better to group the key/value pairs inside an object.\n- Special slog values and interfaces don't work as expected.\n- The overhead is likely to be higher.\n\nThese drawbacks are severe enough that applications using a mixture of slog and\nlogr should switch to a different backend.\n\n### Using a `slog.Handler` as backend for logr\n\nUsing a plain `slog.Handler` without support for logr works better than the\nother direction:\n- All logr verbosity levels can be mapped 1:1 to their corresponding slog level\n  by negating them.\n- Stack unwinding is done by the `SlogSink` and the resulting program\n  counter is passed to the `slog.Handler`.\n- Names added via `Logger.WithName` are gathered and recorded in an additional\n  attribute with `logger` as key and the names separated by slash as value.\n- `Logger.Error` is turned into a log record with `slog.LevelError` as level\n  and an additional attribute with `err` as key, if an error was provided.\n\nThe main drawback is that `logr.Marshaler` will not be supported. Types should\nideally support both `logr.Marshaler` and `slog.Valuer`. If compatibility\nwith logr implementations without slog support is not important, then\n`slog.Valuer` is sufficient.\n\n### Context support for slog\n\nStoring a logger in a `context.Context` is not supported by\nslog. `NewContextWithSlogLogger` and `FromContextAsSlogLogger` can be\nused to fill this gap. They store and retrieve a `slog.Logger` pointer\nunder the same context key that is also used by `NewContext` and\n`FromContext` for `logr.Logger` value.\n\nWhen `NewContextWithSlogLogger` is followed by `FromContext`, the latter will\nautomatically convert the `slog.Logger` to a\n`logr.Logger`. `FromContextAsSlogLogger` does the same for the other direction.\n\nWith this approach, binaries which use either slog or logr are as efficient as\npossible with no unnecessary allocations. This is also why the API stores a\n`slog.Logger` pointer: when storing a `slog.Handler`, creating a `slog.Logger`\non retrieval would need to allocate one.\n\nThe downside is that switching back and forth needs more allocations. Because\nlogr is the API that is already in use by different packages, in particular\nKubernetes, the recommendation is to use the `logr.Logger` API in code which\nuses contextual logging.\n\nAn alternative to adding values to a logger and storing that logger in the\ncontext is to store the values in the context and to configure a logging\nbackend to extract those values when emitting log entries. This only works when\nlog calls are passed the context, which is not supported by the logr API.\n\nWith the slog API, it is possible, but not\nrequired. https://github.com/veqryn/slog-context is a package for slog which\nprovides additional support code for this approach. It also contains wrappers\nfor the context functions in logr, so developers who prefer to not use the logr\nAPIs directly can use those instead and the resulting code will still be\ninteroperable with logr.\n\n## FAQ\n\n### Conceptual\n\n#### Why structured logging?\n\n- **Structured logs are more easily queryable**: Since you've got\n  key-value pairs, it's much easier to query your structured logs for\n  particular values by filtering on the contents of a particular key --\n  think searching request logs for error codes, Kubernetes reconcilers for\n  the name and namespace of the reconciled object, etc.\n\n- **Structured logging makes it easier to have cross-referenceable logs**:\n  Similarly to searchability, if you maintain conventions around your\n  keys, it becomes easy to gather all log lines related to a particular\n  concept.\n\n- **Structured logs allow better dimensions of filtering**: if you have\n  structure to your logs, you've got more precise control over how much\n  information is logged -- you might choose in a particular configuration\n  to log certain keys but not others, only log lines where a certain key\n  matches a certain value, etc., instead of just having v-levels and names\n  to key off of.\n\n- **Structured logs better represent structured data**: sometimes, the\n  data that you want to log is inherently structured (think tuple-link\n  objects.)  Structured logs allow you to preserve that structure when\n  outputting.\n\n#### Why V-levels?\n\n**V-levels give operators an easy way to control the chattiness of log\noperations**.  V-levels provide a way for a given package to distinguish\nthe relative importance or verbosity of a given log message.  Then, if\na particular logger or package is logging too many messages, the user\nof the package can simply change the v-levels for that library.\n\n#### Why not named levels, like Info/Warning/Error?\n\nRead [Dave Cheney's post][warning-makes-no-sense].  Then read [Differences\nfrom Dave's ideas](#differences-from-daves-ideas).\n\n#### Why not allow format strings, too?\n\n**Format strings negate many of the benefits of structured logs**:\n\n- They're not easily searchable without resorting to fuzzy searching,\n  regular expressions, etc.\n\n- They don't store structured data well, since contents are flattened into\n  a string.\n\n- They're not cross-referenceable.\n\n- They don't compress easily, since the message is not constant.\n\n(Unless you turn positional parameters into key-value pairs with numerical\nkeys, at which point you've gotten key-value logging with meaningless\nkeys.)\n\n### Practical\n\n#### Why key-value pairs, and not a map?\n\nKey-value pairs are *much* easier to optimize, especially around\nallocations.  Zap (a structured logger that inspired logr's interface) has\n[performance measurements](https://github.com/uber-go/zap#performance)\nthat show this quite nicely.\n\nWhile the interface ends up being a little less obvious, you get\npotentially better performance, plus avoid making users type\n`map[string]string{}` every time they want to log.\n\n#### What if my V-levels differ between libraries?\n\nThat's fine.  Control your V-levels on a per-logger basis, and use the\n`WithName` method to pass different loggers to different libraries.\n\nGenerally, you should take care to ensure that you have relatively\nconsistent V-levels within a given logger, however, as this makes deciding\non what verbosity of logs to request easier.\n\n#### But I really want to use a format string!\n\nThat's not actually a question.  Assuming your question is \"how do\nI convert my mental model of logging with format strings to logging with\nconstant messages\":\n\n1. Figure out what the error actually is, as you'd write in a TL;DR style,\n   and use that as a message.\n\n2. For every place you'd write a format specifier, look to the word before\n   it, and add that as a key value pair.\n\nFor instance, consider the following examples (all taken from spots in the\nKubernetes codebase):\n\n- `klog.V(4).Infof(\"Client is returning errors: code %v, error %v\",\n  responseCode, err)` becomes `logger.Error(err, \"client returned an\n  error\", \"code\", responseCode)`\n\n- `klog.V(4).Infof(\"Got a Retry-After %ds response for attempt %d to %v\",\n  seconds, retries, url)` becomes `logger.V(4).Info(\"got a retry-after\n  response when requesting url\", \"attempt\", retries, \"after\n  seconds\", seconds, \"url\", url)`\n\nIf you *really* must use a format string, use it in a key's value, and\ncall `fmt.Sprintf` yourself.  For instance: `log.Printf(\"unable to\nreflect over type %T\")` becomes `logger.Info(\"unable to reflect over\ntype\", \"type\", fmt.Sprintf(\"%T\"))`.  In general though, the cases where\nthis is necessary should be few and far between.\n\n#### How do I choose my V-levels?\n\nThis is basically the only hard constraint: increase V-levels to denote\nmore verbose or more debug-y logs.\n\nOtherwise, you can start out with `0` as \"you always want to see this\",\n`1` as \"common logging that you might *possibly* want to turn off\", and\n`10` as \"I would like to performance-test your log collection stack.\"\n\nThen gradually choose levels in between as you need them, working your way\ndown from 10 (for debug and trace style logs) and up from 1 (for chattier\ninfo-type logs). For reference, slog pre-defines -4 for debug logs\n(corresponds to 4 in logr), which matches what is\n[recommended for Kubernetes](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-instrumentation/logging.md#what-method-to-use).\n\n#### How do I choose my keys?\n\nKeys are fairly flexible, and can hold more or less any string\nvalue. For best compatibility with implementations and consistency\nwith existing code in other projects, there are a few conventions you\nshould consider.\n\n- Make your keys human-readable.\n- Constant keys are generally a good idea.\n- Be consistent across your codebase.\n- Keys should naturally match parts of the message string.\n- Use lower case for simple keys and\n  [lowerCamelCase](https://en.wiktionary.org/wiki/lowerCamelCase) for\n  more complex ones. Kubernetes is one example of a project that has\n  [adopted that\n  convention](https://github.com/kubernetes/community/blob/HEAD/contributors/devel/sig-instrumentation/migration-to-structured-logging.md#name-arguments).\n\nWhile key names are mostly unrestricted (and spaces are acceptable),\nit's generally a good idea to stick to printable ascii characters, or at\nleast match the general character set of your log lines.\n\n#### Why should keys be constant values?\n\nThe point of structured logging is to make later log processing easier.  Your\nkeys are, effectively, the schema of each log message.  If you use different\nkeys across instances of the same log line, you will make your structured logs\nmuch harder to use.  `Sprintf()` is for values, not for keys!\n\n#### Why is this not a pure interface?\n\nThe Logger type is implemented as a struct in order to allow the Go compiler to\noptimize things like high-V `Info` logs that are not triggered.  Not all of\nthese implementations are implemented yet, but this structure was suggested as\na way to ensure they *can* be implemented.  All of the real work is behind the\n`LogSink` interface.\n\n[warning-makes-no-sense]: http://dave.cheney.net/2015/11/05/lets-talk-about-logging\n"
  },
  {
    "path": "tests/vendor/github.com/go-logr/logr/SECURITY.md",
    "content": "# Security Policy\n\nIf you have discovered a security vulnerability in this project, please report it\nprivately. **Do not disclose it as a public issue.** This gives us time to work with you\nto fix the issue before public exposure, reducing the chance that the exploit will be\nused before a patch is released.\n\nYou may submit the report in the following ways:\n\n- send an email to go-logr-security@googlegroups.com\n- send us a [private vulnerability report](https://github.com/go-logr/logr/security/advisories/new)\n\nPlease provide the following information in your report:\n\n- A description of the vulnerability and its impact\n- How to reproduce the issue\n\nWe ask that you give us 90 days to work on a fix before public exposure.\n"
  },
  {
    "path": "tests/vendor/github.com/go-logr/logr/context.go",
    "content": "/*\nCopyright 2023 The logr Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\npackage logr\n\n// contextKey is how we find Loggers in a context.Context. With Go < 1.21,\n// the value is always a Logger value. With Go >= 1.21, the value can be a\n// Logger value or a slog.Logger pointer.\ntype contextKey struct{}\n\n// notFoundError exists to carry an IsNotFound method.\ntype notFoundError struct{}\n\nfunc (notFoundError) Error() string {\n\treturn \"no logr.Logger was present\"\n}\n\nfunc (notFoundError) IsNotFound() bool {\n\treturn true\n}\n"
  },
  {
    "path": "tests/vendor/github.com/go-logr/logr/context_noslog.go",
    "content": "//go:build !go1.21\n// +build !go1.21\n\n/*\nCopyright 2019 The logr Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\npackage logr\n\nimport (\n\t\"context\"\n)\n\n// FromContext returns a Logger from ctx or an error if no Logger is found.\nfunc FromContext(ctx context.Context) (Logger, error) {\n\tif v, ok := ctx.Value(contextKey{}).(Logger); ok {\n\t\treturn v, nil\n\t}\n\n\treturn Logger{}, notFoundError{}\n}\n\n// FromContextOrDiscard returns a Logger from ctx.  If no Logger is found, this\n// returns a Logger that discards all log messages.\nfunc FromContextOrDiscard(ctx context.Context) Logger {\n\tif v, ok := ctx.Value(contextKey{}).(Logger); ok {\n\t\treturn v\n\t}\n\n\treturn Discard()\n}\n\n// NewContext returns a new Context, derived from ctx, which carries the\n// provided Logger.\nfunc NewContext(ctx context.Context, logger Logger) context.Context {\n\treturn context.WithValue(ctx, contextKey{}, logger)\n}\n"
  },
  {
    "path": "tests/vendor/github.com/go-logr/logr/context_slog.go",
    "content": "//go:build go1.21\n// +build go1.21\n\n/*\nCopyright 2019 The logr Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\npackage logr\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"log/slog\"\n)\n\n// FromContext returns a Logger from ctx or an error if no Logger is found.\nfunc FromContext(ctx context.Context) (Logger, error) {\n\tv := ctx.Value(contextKey{})\n\tif v == nil {\n\t\treturn Logger{}, notFoundError{}\n\t}\n\n\tswitch v := v.(type) {\n\tcase Logger:\n\t\treturn v, nil\n\tcase *slog.Logger:\n\t\treturn FromSlogHandler(v.Handler()), nil\n\tdefault:\n\t\t// Not reached.\n\t\tpanic(fmt.Sprintf(\"unexpected value type for logr context key: %T\", v))\n\t}\n}\n\n// FromContextAsSlogLogger returns a slog.Logger from ctx or nil if no such Logger is found.\nfunc FromContextAsSlogLogger(ctx context.Context) *slog.Logger {\n\tv := ctx.Value(contextKey{})\n\tif v == nil {\n\t\treturn nil\n\t}\n\n\tswitch v := v.(type) {\n\tcase Logger:\n\t\treturn slog.New(ToSlogHandler(v))\n\tcase *slog.Logger:\n\t\treturn v\n\tdefault:\n\t\t// Not reached.\n\t\tpanic(fmt.Sprintf(\"unexpected value type for logr context key: %T\", v))\n\t}\n}\n\n// FromContextOrDiscard returns a Logger from ctx.  If no Logger is found, this\n// returns a Logger that discards all log messages.\nfunc FromContextOrDiscard(ctx context.Context) Logger {\n\tif logger, err := FromContext(ctx); err == nil {\n\t\treturn logger\n\t}\n\treturn Discard()\n}\n\n// NewContext returns a new Context, derived from ctx, which carries the\n// provided Logger.\nfunc NewContext(ctx context.Context, logger Logger) context.Context {\n\treturn context.WithValue(ctx, contextKey{}, logger)\n}\n\n// NewContextWithSlogLogger returns a new Context, derived from ctx, which carries the\n// provided slog.Logger.\nfunc NewContextWithSlogLogger(ctx context.Context, logger *slog.Logger) context.Context {\n\treturn context.WithValue(ctx, contextKey{}, logger)\n}\n"
  },
  {
    "path": "tests/vendor/github.com/go-logr/logr/discard.go",
    "content": "/*\nCopyright 2020 The logr Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\npackage logr\n\n// Discard returns a Logger that discards all messages logged to it.  It can be\n// used whenever the caller is not interested in the logs.  Logger instances\n// produced by this function always compare as equal.\nfunc Discard() Logger {\n\treturn New(nil)\n}\n"
  },
  {
    "path": "tests/vendor/github.com/go-logr/logr/funcr/funcr.go",
    "content": "/*\nCopyright 2021 The logr Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n// Package funcr implements formatting of structured log messages and\n// optionally captures the call site and timestamp.\n//\n// The simplest way to use it is via its implementation of a\n// github.com/go-logr/logr.LogSink with output through an arbitrary\n// \"write\" function.  See New and NewJSON for details.\n//\n// # Custom LogSinks\n//\n// For users who need more control, a funcr.Formatter can be embedded inside\n// your own custom LogSink implementation. This is useful when the LogSink\n// needs to implement additional methods, for example.\n//\n// # Formatting\n//\n// This will respect logr.Marshaler, fmt.Stringer, and error interfaces for\n// values which are being logged.  When rendering a struct, funcr will use Go's\n// standard JSON tags (all except \"string\").\npackage funcr\n\nimport (\n\t\"bytes\"\n\t\"encoding\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"path/filepath\"\n\t\"reflect\"\n\t\"runtime\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/go-logr/logr\"\n)\n\n// New returns a logr.Logger which is implemented by an arbitrary function.\nfunc New(fn func(prefix, args string), opts Options) logr.Logger {\n\treturn logr.New(newSink(fn, NewFormatter(opts)))\n}\n\n// NewJSON returns a logr.Logger which is implemented by an arbitrary function\n// and produces JSON output.\nfunc NewJSON(fn func(obj string), opts Options) logr.Logger {\n\tfnWrapper := func(_, obj string) {\n\t\tfn(obj)\n\t}\n\treturn logr.New(newSink(fnWrapper, NewFormatterJSON(opts)))\n}\n\n// Underlier exposes access to the underlying logging function. Since\n// callers only have a logr.Logger, they have to know which\n// implementation is in use, so this interface is less of an\n// abstraction and more of a way to test type conversion.\ntype Underlier interface {\n\tGetUnderlying() func(prefix, args string)\n}\n\nfunc newSink(fn func(prefix, args string), formatter Formatter) logr.LogSink {\n\tl := &fnlogger{\n\t\tFormatter: formatter,\n\t\twrite:     fn,\n\t}\n\t// For skipping fnlogger.Info and fnlogger.Error.\n\tl.AddCallDepth(1) // via Formatter\n\treturn l\n}\n\n// Options carries parameters which influence the way logs are generated.\ntype Options struct {\n\t// LogCaller tells funcr to add a \"caller\" key to some or all log lines.\n\t// This has some overhead, so some users might not want it.\n\tLogCaller MessageClass\n\n\t// LogCallerFunc tells funcr to also log the calling function name.  This\n\t// has no effect if caller logging is not enabled (see Options.LogCaller).\n\tLogCallerFunc bool\n\n\t// LogTimestamp tells funcr to add a \"ts\" key to log lines.  This has some\n\t// overhead, so some users might not want it.\n\tLogTimestamp bool\n\n\t// TimestampFormat tells funcr how to render timestamps when LogTimestamp\n\t// is enabled.  If not specified, a default format will be used.  For more\n\t// details, see docs for Go's time.Layout.\n\tTimestampFormat string\n\n\t// LogInfoLevel tells funcr what key to use to log the info level.\n\t// If not specified, the info level will be logged as \"level\".\n\t// If this is set to \"\", the info level will not be logged at all.\n\tLogInfoLevel *string\n\n\t// Verbosity tells funcr which V logs to produce.  Higher values enable\n\t// more logs.  Info logs at or below this level will be written, while logs\n\t// above this level will be discarded.\n\tVerbosity int\n\n\t// RenderBuiltinsHook allows users to mutate the list of key-value pairs\n\t// while a log line is being rendered.  The kvList argument follows logr\n\t// conventions - each pair of slice elements is comprised of a string key\n\t// and an arbitrary value (verified and sanitized before calling this\n\t// hook).  The value returned must follow the same conventions.  This hook\n\t// can be used to audit or modify logged data.  For example, you might want\n\t// to prefix all of funcr's built-in keys with some string.  This hook is\n\t// only called for built-in (provided by funcr itself) key-value pairs.\n\t// Equivalent hooks are offered for key-value pairs saved via\n\t// logr.Logger.WithValues or Formatter.AddValues (see RenderValuesHook) and\n\t// for user-provided pairs (see RenderArgsHook).\n\tRenderBuiltinsHook func(kvList []any) []any\n\n\t// RenderValuesHook is the same as RenderBuiltinsHook, except that it is\n\t// only called for key-value pairs saved via logr.Logger.WithValues.  See\n\t// RenderBuiltinsHook for more details.\n\tRenderValuesHook func(kvList []any) []any\n\n\t// RenderArgsHook is the same as RenderBuiltinsHook, except that it is only\n\t// called for key-value pairs passed directly to Info and Error.  See\n\t// RenderBuiltinsHook for more details.\n\tRenderArgsHook func(kvList []any) []any\n\n\t// MaxLogDepth tells funcr how many levels of nested fields (e.g. a struct\n\t// that contains a struct, etc.) it may log.  Every time it finds a struct,\n\t// slice, array, or map the depth is increased by one.  When the maximum is\n\t// reached, the value will be converted to a string indicating that the max\n\t// depth has been exceeded.  If this field is not specified, a default\n\t// value will be used.\n\tMaxLogDepth int\n}\n\n// MessageClass indicates which category or categories of messages to consider.\ntype MessageClass int\n\nconst (\n\t// None ignores all message classes.\n\tNone MessageClass = iota\n\t// All considers all message classes.\n\tAll\n\t// Info only considers info messages.\n\tInfo\n\t// Error only considers error messages.\n\tError\n)\n\n// fnlogger inherits some of its LogSink implementation from Formatter\n// and just needs to add some glue code.\ntype fnlogger struct {\n\tFormatter\n\twrite func(prefix, args string)\n}\n\nfunc (l fnlogger) WithName(name string) logr.LogSink {\n\tl.AddName(name) // via Formatter\n\treturn &l\n}\n\nfunc (l fnlogger) WithValues(kvList ...any) logr.LogSink {\n\tl.AddValues(kvList) // via Formatter\n\treturn &l\n}\n\nfunc (l fnlogger) WithCallDepth(depth int) logr.LogSink {\n\tl.AddCallDepth(depth) // via Formatter\n\treturn &l\n}\n\nfunc (l fnlogger) Info(level int, msg string, kvList ...any) {\n\tprefix, args := l.FormatInfo(level, msg, kvList)\n\tl.write(prefix, args)\n}\n\nfunc (l fnlogger) Error(err error, msg string, kvList ...any) {\n\tprefix, args := l.FormatError(err, msg, kvList)\n\tl.write(prefix, args)\n}\n\nfunc (l fnlogger) GetUnderlying() func(prefix, args string) {\n\treturn l.write\n}\n\n// Assert conformance to the interfaces.\nvar _ logr.LogSink = &fnlogger{}\nvar _ logr.CallDepthLogSink = &fnlogger{}\nvar _ Underlier = &fnlogger{}\n\n// NewFormatter constructs a Formatter which emits a JSON-like key=value format.\nfunc NewFormatter(opts Options) Formatter {\n\treturn newFormatter(opts, outputKeyValue)\n}\n\n// NewFormatterJSON constructs a Formatter which emits strict JSON.\nfunc NewFormatterJSON(opts Options) Formatter {\n\treturn newFormatter(opts, outputJSON)\n}\n\n// Defaults for Options.\nconst defaultTimestampFormat = \"2006-01-02 15:04:05.000000\"\nconst defaultMaxLogDepth = 16\n\nfunc newFormatter(opts Options, outfmt outputFormat) Formatter {\n\tif opts.TimestampFormat == \"\" {\n\t\topts.TimestampFormat = defaultTimestampFormat\n\t}\n\tif opts.MaxLogDepth == 0 {\n\t\topts.MaxLogDepth = defaultMaxLogDepth\n\t}\n\tif opts.LogInfoLevel == nil {\n\t\topts.LogInfoLevel = new(string)\n\t\t*opts.LogInfoLevel = \"level\"\n\t}\n\tf := Formatter{\n\t\toutputFormat: outfmt,\n\t\tprefix:       \"\",\n\t\tvalues:       nil,\n\t\tdepth:        0,\n\t\topts:         &opts,\n\t}\n\treturn f\n}\n\n// Formatter is an opaque struct which can be embedded in a LogSink\n// implementation. It should be constructed with NewFormatter. Some of\n// its methods directly implement logr.LogSink.\ntype Formatter struct {\n\toutputFormat outputFormat\n\tprefix       string\n\tvalues       []any\n\tvaluesStr    string\n\tdepth        int\n\topts         *Options\n\tgroupName    string // for slog groups\n\tgroups       []groupDef\n}\n\n// outputFormat indicates which outputFormat to use.\ntype outputFormat int\n\nconst (\n\t// outputKeyValue emits a JSON-like key=value format, but not strict JSON.\n\toutputKeyValue outputFormat = iota\n\t// outputJSON emits strict JSON.\n\toutputJSON\n)\n\n// groupDef represents a saved group.  The values may be empty, but we don't\n// know if we need to render the group until the final record is rendered.\ntype groupDef struct {\n\tname   string\n\tvalues string\n}\n\n// PseudoStruct is a list of key-value pairs that gets logged as a struct.\ntype PseudoStruct []any\n\n// render produces a log line, ready to use.\nfunc (f Formatter) render(builtins, args []any) string {\n\t// Empirically bytes.Buffer is faster than strings.Builder for this.\n\tbuf := bytes.NewBuffer(make([]byte, 0, 1024))\n\n\tif f.outputFormat == outputJSON {\n\t\tbuf.WriteByte('{') // for the whole record\n\t}\n\n\t// Render builtins\n\tvals := builtins\n\tif hook := f.opts.RenderBuiltinsHook; hook != nil {\n\t\tvals = hook(f.sanitize(vals))\n\t}\n\tf.flatten(buf, vals, false) // keys are ours, no need to escape\n\tcontinuing := len(builtins) > 0\n\n\t// Turn the inner-most group into a string\n\targsStr := func() string {\n\t\tbuf := bytes.NewBuffer(make([]byte, 0, 1024))\n\n\t\tvals = args\n\t\tif hook := f.opts.RenderArgsHook; hook != nil {\n\t\t\tvals = hook(f.sanitize(vals))\n\t\t}\n\t\tf.flatten(buf, vals, true) // escape user-provided keys\n\n\t\treturn buf.String()\n\t}()\n\n\t// Render the stack of groups from the inside out.\n\tbodyStr := f.renderGroup(f.groupName, f.valuesStr, argsStr)\n\tfor i := len(f.groups) - 1; i >= 0; i-- {\n\t\tgrp := &f.groups[i]\n\t\tif grp.values == \"\" && bodyStr == \"\" {\n\t\t\t// no contents, so we must elide the whole group\n\t\t\tcontinue\n\t\t}\n\t\tbodyStr = f.renderGroup(grp.name, grp.values, bodyStr)\n\t}\n\n\tif bodyStr != \"\" {\n\t\tif continuing {\n\t\t\tbuf.WriteByte(f.comma())\n\t\t}\n\t\tbuf.WriteString(bodyStr)\n\t}\n\n\tif f.outputFormat == outputJSON {\n\t\tbuf.WriteByte('}') // for the whole record\n\t}\n\n\treturn buf.String()\n}\n\n// renderGroup returns a string representation of the named group with rendered\n// values and args.  If the name is empty, this will return the values and args,\n// joined.  If the name is not empty, this will return a single key-value pair,\n// where the value is a grouping of the values and args.  If the values and\n// args are both empty, this will return an empty string, even if the name was\n// specified.\nfunc (f Formatter) renderGroup(name string, values string, args string) string {\n\tbuf := bytes.NewBuffer(make([]byte, 0, 1024))\n\n\tneedClosingBrace := false\n\tif name != \"\" && (values != \"\" || args != \"\") {\n\t\tbuf.WriteString(f.quoted(name, true)) // escape user-provided keys\n\t\tbuf.WriteByte(f.colon())\n\t\tbuf.WriteByte('{')\n\t\tneedClosingBrace = true\n\t}\n\n\tcontinuing := false\n\tif values != \"\" {\n\t\tbuf.WriteString(values)\n\t\tcontinuing = true\n\t}\n\n\tif args != \"\" {\n\t\tif continuing {\n\t\t\tbuf.WriteByte(f.comma())\n\t\t}\n\t\tbuf.WriteString(args)\n\t}\n\n\tif needClosingBrace {\n\t\tbuf.WriteByte('}')\n\t}\n\n\treturn buf.String()\n}\n\n// flatten renders a list of key-value pairs into a buffer.  If escapeKeys is\n// true, the keys are assumed to have non-JSON-compatible characters in them\n// and must be evaluated for escapes.\n//\n// This function returns a potentially modified version of kvList, which\n// ensures that there is a value for every key (adding a value if needed) and\n// that each key is a string (substituting a key if needed).\nfunc (f Formatter) flatten(buf *bytes.Buffer, kvList []any, escapeKeys bool) []any {\n\t// This logic overlaps with sanitize() but saves one type-cast per key,\n\t// which can be measurable.\n\tif len(kvList)%2 != 0 {\n\t\tkvList = append(kvList, noValue)\n\t}\n\tcopied := false\n\tfor i := 0; i < len(kvList); i += 2 {\n\t\tk, ok := kvList[i].(string)\n\t\tif !ok {\n\t\t\tif !copied {\n\t\t\t\tnewList := make([]any, len(kvList))\n\t\t\t\tcopy(newList, kvList)\n\t\t\t\tkvList = newList\n\t\t\t\tcopied = true\n\t\t\t}\n\t\t\tk = f.nonStringKey(kvList[i])\n\t\t\tkvList[i] = k\n\t\t}\n\t\tv := kvList[i+1]\n\n\t\tif i > 0 {\n\t\t\tif f.outputFormat == outputJSON {\n\t\t\t\tbuf.WriteByte(f.comma())\n\t\t\t} else {\n\t\t\t\t// In theory the format could be something we don't understand.  In\n\t\t\t\t// practice, we control it, so it won't be.\n\t\t\t\tbuf.WriteByte(' ')\n\t\t\t}\n\t\t}\n\n\t\tbuf.WriteString(f.quoted(k, escapeKeys))\n\t\tbuf.WriteByte(f.colon())\n\t\tbuf.WriteString(f.pretty(v))\n\t}\n\treturn kvList\n}\n\nfunc (f Formatter) quoted(str string, escape bool) string {\n\tif escape {\n\t\treturn prettyString(str)\n\t}\n\t// this is faster\n\treturn `\"` + str + `\"`\n}\n\nfunc (f Formatter) comma() byte {\n\tif f.outputFormat == outputJSON {\n\t\treturn ','\n\t}\n\treturn ' '\n}\n\nfunc (f Formatter) colon() byte {\n\tif f.outputFormat == outputJSON {\n\t\treturn ':'\n\t}\n\treturn '='\n}\n\nfunc (f Formatter) pretty(value any) string {\n\treturn f.prettyWithFlags(value, 0, 0)\n}\n\nconst (\n\tflagRawStruct = 0x1 // do not print braces on structs\n)\n\n// TODO: This is not fast. Most of the overhead goes here.\nfunc (f Formatter) prettyWithFlags(value any, flags uint32, depth int) string {\n\tif depth > f.opts.MaxLogDepth {\n\t\treturn `\"<max-log-depth-exceeded>\"`\n\t}\n\n\t// Handle types that take full control of logging.\n\tif v, ok := value.(logr.Marshaler); ok {\n\t\t// Replace the value with what the type wants to get logged.\n\t\t// That then gets handled below via reflection.\n\t\tvalue = invokeMarshaler(v)\n\t}\n\n\t// Handle types that want to format themselves.\n\tswitch v := value.(type) {\n\tcase fmt.Stringer:\n\t\tvalue = invokeStringer(v)\n\tcase error:\n\t\tvalue = invokeError(v)\n\t}\n\n\t// Handling the most common types without reflect is a small perf win.\n\tswitch v := value.(type) {\n\tcase bool:\n\t\treturn strconv.FormatBool(v)\n\tcase string:\n\t\treturn prettyString(v)\n\tcase int:\n\t\treturn strconv.FormatInt(int64(v), 10)\n\tcase int8:\n\t\treturn strconv.FormatInt(int64(v), 10)\n\tcase int16:\n\t\treturn strconv.FormatInt(int64(v), 10)\n\tcase int32:\n\t\treturn strconv.FormatInt(int64(v), 10)\n\tcase int64:\n\t\treturn strconv.FormatInt(int64(v), 10)\n\tcase uint:\n\t\treturn strconv.FormatUint(uint64(v), 10)\n\tcase uint8:\n\t\treturn strconv.FormatUint(uint64(v), 10)\n\tcase uint16:\n\t\treturn strconv.FormatUint(uint64(v), 10)\n\tcase uint32:\n\t\treturn strconv.FormatUint(uint64(v), 10)\n\tcase uint64:\n\t\treturn strconv.FormatUint(v, 10)\n\tcase uintptr:\n\t\treturn strconv.FormatUint(uint64(v), 10)\n\tcase float32:\n\t\treturn strconv.FormatFloat(float64(v), 'f', -1, 32)\n\tcase float64:\n\t\treturn strconv.FormatFloat(v, 'f', -1, 64)\n\tcase complex64:\n\t\treturn `\"` + strconv.FormatComplex(complex128(v), 'f', -1, 64) + `\"`\n\tcase complex128:\n\t\treturn `\"` + strconv.FormatComplex(v, 'f', -1, 128) + `\"`\n\tcase PseudoStruct:\n\t\tbuf := bytes.NewBuffer(make([]byte, 0, 1024))\n\t\tv = f.sanitize(v)\n\t\tif flags&flagRawStruct == 0 {\n\t\t\tbuf.WriteByte('{')\n\t\t}\n\t\tfor i := 0; i < len(v); i += 2 {\n\t\t\tif i > 0 {\n\t\t\t\tbuf.WriteByte(f.comma())\n\t\t\t}\n\t\t\tk, _ := v[i].(string) // sanitize() above means no need to check success\n\t\t\t// arbitrary keys might need escaping\n\t\t\tbuf.WriteString(prettyString(k))\n\t\t\tbuf.WriteByte(f.colon())\n\t\t\tbuf.WriteString(f.prettyWithFlags(v[i+1], 0, depth+1))\n\t\t}\n\t\tif flags&flagRawStruct == 0 {\n\t\t\tbuf.WriteByte('}')\n\t\t}\n\t\treturn buf.String()\n\t}\n\n\tbuf := bytes.NewBuffer(make([]byte, 0, 256))\n\tt := reflect.TypeOf(value)\n\tif t == nil {\n\t\treturn \"null\"\n\t}\n\tv := reflect.ValueOf(value)\n\tswitch t.Kind() {\n\tcase reflect.Bool:\n\t\treturn strconv.FormatBool(v.Bool())\n\tcase reflect.String:\n\t\treturn prettyString(v.String())\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\treturn strconv.FormatInt(int64(v.Int()), 10)\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\treturn strconv.FormatUint(uint64(v.Uint()), 10)\n\tcase reflect.Float32:\n\t\treturn strconv.FormatFloat(float64(v.Float()), 'f', -1, 32)\n\tcase reflect.Float64:\n\t\treturn strconv.FormatFloat(v.Float(), 'f', -1, 64)\n\tcase reflect.Complex64:\n\t\treturn `\"` + strconv.FormatComplex(complex128(v.Complex()), 'f', -1, 64) + `\"`\n\tcase reflect.Complex128:\n\t\treturn `\"` + strconv.FormatComplex(v.Complex(), 'f', -1, 128) + `\"`\n\tcase reflect.Struct:\n\t\tif flags&flagRawStruct == 0 {\n\t\t\tbuf.WriteByte('{')\n\t\t}\n\t\tprintComma := false // testing i>0 is not enough because of JSON omitted fields\n\t\tfor i := 0; i < t.NumField(); i++ {\n\t\t\tfld := t.Field(i)\n\t\t\tif fld.PkgPath != \"\" {\n\t\t\t\t// reflect says this field is only defined for non-exported fields.\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif !v.Field(i).CanInterface() {\n\t\t\t\t// reflect isn't clear exactly what this means, but we can't use it.\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tname := \"\"\n\t\t\tomitempty := false\n\t\t\tif tag, found := fld.Tag.Lookup(\"json\"); found {\n\t\t\t\tif tag == \"-\" {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif comma := strings.Index(tag, \",\"); comma != -1 {\n\t\t\t\t\tif n := tag[:comma]; n != \"\" {\n\t\t\t\t\t\tname = n\n\t\t\t\t\t}\n\t\t\t\t\trest := tag[comma:]\n\t\t\t\t\tif strings.Contains(rest, \",omitempty,\") || strings.HasSuffix(rest, \",omitempty\") {\n\t\t\t\t\t\tomitempty = true\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tname = tag\n\t\t\t\t}\n\t\t\t}\n\t\t\tif omitempty && isEmpty(v.Field(i)) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif printComma {\n\t\t\t\tbuf.WriteByte(f.comma())\n\t\t\t}\n\t\t\tprintComma = true // if we got here, we are rendering a field\n\t\t\tif fld.Anonymous && fld.Type.Kind() == reflect.Struct && name == \"\" {\n\t\t\t\tbuf.WriteString(f.prettyWithFlags(v.Field(i).Interface(), flags|flagRawStruct, depth+1))\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif name == \"\" {\n\t\t\t\tname = fld.Name\n\t\t\t}\n\t\t\t// field names can't contain characters which need escaping\n\t\t\tbuf.WriteString(f.quoted(name, false))\n\t\t\tbuf.WriteByte(f.colon())\n\t\t\tbuf.WriteString(f.prettyWithFlags(v.Field(i).Interface(), 0, depth+1))\n\t\t}\n\t\tif flags&flagRawStruct == 0 {\n\t\t\tbuf.WriteByte('}')\n\t\t}\n\t\treturn buf.String()\n\tcase reflect.Slice, reflect.Array:\n\t\t// If this is outputing as JSON make sure this isn't really a json.RawMessage.\n\t\t// If so just emit \"as-is\" and don't pretty it as that will just print\n\t\t// it as [X,Y,Z,...] which isn't terribly useful vs the string form you really want.\n\t\tif f.outputFormat == outputJSON {\n\t\t\tif rm, ok := value.(json.RawMessage); ok {\n\t\t\t\t// If it's empty make sure we emit an empty value as the array style would below.\n\t\t\t\tif len(rm) > 0 {\n\t\t\t\t\tbuf.Write(rm)\n\t\t\t\t} else {\n\t\t\t\t\tbuf.WriteString(\"null\")\n\t\t\t\t}\n\t\t\t\treturn buf.String()\n\t\t\t}\n\t\t}\n\t\tbuf.WriteByte('[')\n\t\tfor i := 0; i < v.Len(); i++ {\n\t\t\tif i > 0 {\n\t\t\t\tbuf.WriteByte(f.comma())\n\t\t\t}\n\t\t\te := v.Index(i)\n\t\t\tbuf.WriteString(f.prettyWithFlags(e.Interface(), 0, depth+1))\n\t\t}\n\t\tbuf.WriteByte(']')\n\t\treturn buf.String()\n\tcase reflect.Map:\n\t\tbuf.WriteByte('{')\n\t\t// This does not sort the map keys, for best perf.\n\t\tit := v.MapRange()\n\t\ti := 0\n\t\tfor it.Next() {\n\t\t\tif i > 0 {\n\t\t\t\tbuf.WriteByte(f.comma())\n\t\t\t}\n\t\t\t// If a map key supports TextMarshaler, use it.\n\t\t\tkeystr := \"\"\n\t\t\tif m, ok := it.Key().Interface().(encoding.TextMarshaler); ok {\n\t\t\t\ttxt, err := m.MarshalText()\n\t\t\t\tif err != nil {\n\t\t\t\t\tkeystr = fmt.Sprintf(\"<error-MarshalText: %s>\", err.Error())\n\t\t\t\t} else {\n\t\t\t\t\tkeystr = string(txt)\n\t\t\t\t}\n\t\t\t\tkeystr = prettyString(keystr)\n\t\t\t} else {\n\t\t\t\t// prettyWithFlags will produce already-escaped values\n\t\t\t\tkeystr = f.prettyWithFlags(it.Key().Interface(), 0, depth+1)\n\t\t\t\tif t.Key().Kind() != reflect.String {\n\t\t\t\t\t// JSON only does string keys.  Unlike Go's standard JSON, we'll\n\t\t\t\t\t// convert just about anything to a string.\n\t\t\t\t\tkeystr = prettyString(keystr)\n\t\t\t\t}\n\t\t\t}\n\t\t\tbuf.WriteString(keystr)\n\t\t\tbuf.WriteByte(f.colon())\n\t\t\tbuf.WriteString(f.prettyWithFlags(it.Value().Interface(), 0, depth+1))\n\t\t\ti++\n\t\t}\n\t\tbuf.WriteByte('}')\n\t\treturn buf.String()\n\tcase reflect.Ptr, reflect.Interface:\n\t\tif v.IsNil() {\n\t\t\treturn \"null\"\n\t\t}\n\t\treturn f.prettyWithFlags(v.Elem().Interface(), 0, depth)\n\t}\n\treturn fmt.Sprintf(`\"<unhandled-%s>\"`, t.Kind().String())\n}\n\nfunc prettyString(s string) string {\n\t// Avoid escaping (which does allocations) if we can.\n\tif needsEscape(s) {\n\t\treturn strconv.Quote(s)\n\t}\n\tb := bytes.NewBuffer(make([]byte, 0, 1024))\n\tb.WriteByte('\"')\n\tb.WriteString(s)\n\tb.WriteByte('\"')\n\treturn b.String()\n}\n\n// needsEscape determines whether the input string needs to be escaped or not,\n// without doing any allocations.\nfunc needsEscape(s string) bool {\n\tfor _, r := range s {\n\t\tif !strconv.IsPrint(r) || r == '\\\\' || r == '\"' {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc isEmpty(v reflect.Value) bool {\n\tswitch v.Kind() {\n\tcase reflect.Array, reflect.Map, reflect.Slice, reflect.String:\n\t\treturn v.Len() == 0\n\tcase reflect.Bool:\n\t\treturn !v.Bool()\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\treturn v.Int() == 0\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\treturn v.Uint() == 0\n\tcase reflect.Float32, reflect.Float64:\n\t\treturn v.Float() == 0\n\tcase reflect.Complex64, reflect.Complex128:\n\t\treturn v.Complex() == 0\n\tcase reflect.Interface, reflect.Ptr:\n\t\treturn v.IsNil()\n\t}\n\treturn false\n}\n\nfunc invokeMarshaler(m logr.Marshaler) (ret any) {\n\tdefer func() {\n\t\tif r := recover(); r != nil {\n\t\t\tret = fmt.Sprintf(\"<panic: %s>\", r)\n\t\t}\n\t}()\n\treturn m.MarshalLog()\n}\n\nfunc invokeStringer(s fmt.Stringer) (ret string) {\n\tdefer func() {\n\t\tif r := recover(); r != nil {\n\t\t\tret = fmt.Sprintf(\"<panic: %s>\", r)\n\t\t}\n\t}()\n\treturn s.String()\n}\n\nfunc invokeError(e error) (ret string) {\n\tdefer func() {\n\t\tif r := recover(); r != nil {\n\t\t\tret = fmt.Sprintf(\"<panic: %s>\", r)\n\t\t}\n\t}()\n\treturn e.Error()\n}\n\n// Caller represents the original call site for a log line, after considering\n// logr.Logger.WithCallDepth and logr.Logger.WithCallStackHelper.  The File and\n// Line fields will always be provided, while the Func field is optional.\n// Users can set the render hook fields in Options to examine logged key-value\n// pairs, one of which will be {\"caller\", Caller} if the Options.LogCaller\n// field is enabled for the given MessageClass.\ntype Caller struct {\n\t// File is the basename of the file for this call site.\n\tFile string `json:\"file\"`\n\t// Line is the line number in the file for this call site.\n\tLine int `json:\"line\"`\n\t// Func is the function name for this call site, or empty if\n\t// Options.LogCallerFunc is not enabled.\n\tFunc string `json:\"function,omitempty\"`\n}\n\nfunc (f Formatter) caller() Caller {\n\t// +1 for this frame, +1 for Info/Error.\n\tpc, file, line, ok := runtime.Caller(f.depth + 2)\n\tif !ok {\n\t\treturn Caller{\"<unknown>\", 0, \"\"}\n\t}\n\tfn := \"\"\n\tif f.opts.LogCallerFunc {\n\t\tif fp := runtime.FuncForPC(pc); fp != nil {\n\t\t\tfn = fp.Name()\n\t\t}\n\t}\n\n\treturn Caller{filepath.Base(file), line, fn}\n}\n\nconst noValue = \"<no-value>\"\n\nfunc (f Formatter) nonStringKey(v any) string {\n\treturn fmt.Sprintf(\"<non-string-key: %s>\", f.snippet(v))\n}\n\n// snippet produces a short snippet string of an arbitrary value.\nfunc (f Formatter) snippet(v any) string {\n\tconst snipLen = 16\n\n\tsnip := f.pretty(v)\n\tif len(snip) > snipLen {\n\t\tsnip = snip[:snipLen]\n\t}\n\treturn snip\n}\n\n// sanitize ensures that a list of key-value pairs has a value for every key\n// (adding a value if needed) and that each key is a string (substituting a key\n// if needed).\nfunc (f Formatter) sanitize(kvList []any) []any {\n\tif len(kvList)%2 != 0 {\n\t\tkvList = append(kvList, noValue)\n\t}\n\tfor i := 0; i < len(kvList); i += 2 {\n\t\t_, ok := kvList[i].(string)\n\t\tif !ok {\n\t\t\tkvList[i] = f.nonStringKey(kvList[i])\n\t\t}\n\t}\n\treturn kvList\n}\n\n// startGroup opens a new group scope (basically a sub-struct), which locks all\n// the current saved values and starts them anew.  This is needed to satisfy\n// slog.\nfunc (f *Formatter) startGroup(name string) {\n\t// Unnamed groups are just inlined.\n\tif name == \"\" {\n\t\treturn\n\t}\n\n\tn := len(f.groups)\n\tf.groups = append(f.groups[:n:n], groupDef{f.groupName, f.valuesStr})\n\n\t// Start collecting new values.\n\tf.groupName = name\n\tf.valuesStr = \"\"\n\tf.values = nil\n}\n\n// Init configures this Formatter from runtime info, such as the call depth\n// imposed by logr itself.\n// Note that this receiver is a pointer, so depth can be saved.\nfunc (f *Formatter) Init(info logr.RuntimeInfo) {\n\tf.depth += info.CallDepth\n}\n\n// Enabled checks whether an info message at the given level should be logged.\nfunc (f Formatter) Enabled(level int) bool {\n\treturn level <= f.opts.Verbosity\n}\n\n// GetDepth returns the current depth of this Formatter.  This is useful for\n// implementations which do their own caller attribution.\nfunc (f Formatter) GetDepth() int {\n\treturn f.depth\n}\n\n// FormatInfo renders an Info log message into strings.  The prefix will be\n// empty when no names were set (via AddNames), or when the output is\n// configured for JSON.\nfunc (f Formatter) FormatInfo(level int, msg string, kvList []any) (prefix, argsStr string) {\n\targs := make([]any, 0, 64) // using a constant here impacts perf\n\tprefix = f.prefix\n\tif f.outputFormat == outputJSON {\n\t\targs = append(args, \"logger\", prefix)\n\t\tprefix = \"\"\n\t}\n\tif f.opts.LogTimestamp {\n\t\targs = append(args, \"ts\", time.Now().Format(f.opts.TimestampFormat))\n\t}\n\tif policy := f.opts.LogCaller; policy == All || policy == Info {\n\t\targs = append(args, \"caller\", f.caller())\n\t}\n\tif key := *f.opts.LogInfoLevel; key != \"\" {\n\t\targs = append(args, key, level)\n\t}\n\targs = append(args, \"msg\", msg)\n\treturn prefix, f.render(args, kvList)\n}\n\n// FormatError renders an Error log message into strings.  The prefix will be\n// empty when no names were set (via AddNames), or when the output is\n// configured for JSON.\nfunc (f Formatter) FormatError(err error, msg string, kvList []any) (prefix, argsStr string) {\n\targs := make([]any, 0, 64) // using a constant here impacts perf\n\tprefix = f.prefix\n\tif f.outputFormat == outputJSON {\n\t\targs = append(args, \"logger\", prefix)\n\t\tprefix = \"\"\n\t}\n\tif f.opts.LogTimestamp {\n\t\targs = append(args, \"ts\", time.Now().Format(f.opts.TimestampFormat))\n\t}\n\tif policy := f.opts.LogCaller; policy == All || policy == Error {\n\t\targs = append(args, \"caller\", f.caller())\n\t}\n\targs = append(args, \"msg\", msg)\n\tvar loggableErr any\n\tif err != nil {\n\t\tloggableErr = err.Error()\n\t}\n\targs = append(args, \"error\", loggableErr)\n\treturn prefix, f.render(args, kvList)\n}\n\n// AddName appends the specified name.  funcr uses '/' characters to separate\n// name elements.  Callers should not pass '/' in the provided name string, but\n// this library does not actually enforce that.\nfunc (f *Formatter) AddName(name string) {\n\tif len(f.prefix) > 0 {\n\t\tf.prefix += \"/\"\n\t}\n\tf.prefix += name\n}\n\n// AddValues adds key-value pairs to the set of saved values to be logged with\n// each log line.\nfunc (f *Formatter) AddValues(kvList []any) {\n\t// Three slice args forces a copy.\n\tn := len(f.values)\n\tf.values = append(f.values[:n:n], kvList...)\n\n\tvals := f.values\n\tif hook := f.opts.RenderValuesHook; hook != nil {\n\t\tvals = hook(f.sanitize(vals))\n\t}\n\n\t// Pre-render values, so we don't have to do it on each Info/Error call.\n\tbuf := bytes.NewBuffer(make([]byte, 0, 1024))\n\tf.flatten(buf, vals, true) // escape user-provided keys\n\tf.valuesStr = buf.String()\n}\n\n// AddCallDepth increases the number of stack-frames to skip when attributing\n// the log line to a file and line.\nfunc (f *Formatter) AddCallDepth(depth int) {\n\tf.depth += depth\n}\n"
  },
  {
    "path": "tests/vendor/github.com/go-logr/logr/funcr/slogsink.go",
    "content": "//go:build go1.21\n// +build go1.21\n\n/*\nCopyright 2023 The logr Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\npackage funcr\n\nimport (\n\t\"context\"\n\t\"log/slog\"\n\n\t\"github.com/go-logr/logr\"\n)\n\nvar _ logr.SlogSink = &fnlogger{}\n\nconst extraSlogSinkDepth = 3 // 2 for slog, 1 for SlogSink\n\nfunc (l fnlogger) Handle(_ context.Context, record slog.Record) error {\n\tkvList := make([]any, 0, 2*record.NumAttrs())\n\trecord.Attrs(func(attr slog.Attr) bool {\n\t\tkvList = attrToKVs(attr, kvList)\n\t\treturn true\n\t})\n\n\tif record.Level >= slog.LevelError {\n\t\tl.WithCallDepth(extraSlogSinkDepth).Error(nil, record.Message, kvList...)\n\t} else {\n\t\tlevel := l.levelFromSlog(record.Level)\n\t\tl.WithCallDepth(extraSlogSinkDepth).Info(level, record.Message, kvList...)\n\t}\n\treturn nil\n}\n\nfunc (l fnlogger) WithAttrs(attrs []slog.Attr) logr.SlogSink {\n\tkvList := make([]any, 0, 2*len(attrs))\n\tfor _, attr := range attrs {\n\t\tkvList = attrToKVs(attr, kvList)\n\t}\n\tl.AddValues(kvList)\n\treturn &l\n}\n\nfunc (l fnlogger) WithGroup(name string) logr.SlogSink {\n\tl.startGroup(name)\n\treturn &l\n}\n\n// attrToKVs appends a slog.Attr to a logr-style kvList.  It handle slog Groups\n// and other details of slog.\nfunc attrToKVs(attr slog.Attr, kvList []any) []any {\n\tattrVal := attr.Value.Resolve()\n\tif attrVal.Kind() == slog.KindGroup {\n\t\tgroupVal := attrVal.Group()\n\t\tgrpKVs := make([]any, 0, 2*len(groupVal))\n\t\tfor _, attr := range groupVal {\n\t\t\tgrpKVs = attrToKVs(attr, grpKVs)\n\t\t}\n\t\tif attr.Key == \"\" {\n\t\t\t// slog says we have to inline these\n\t\t\tkvList = append(kvList, grpKVs...)\n\t\t} else {\n\t\t\tkvList = append(kvList, attr.Key, PseudoStruct(grpKVs))\n\t\t}\n\t} else if attr.Key != \"\" {\n\t\tkvList = append(kvList, attr.Key, attrVal.Any())\n\t}\n\n\treturn kvList\n}\n\n// levelFromSlog adjusts the level by the logger's verbosity and negates it.\n// It ensures that the result is >= 0. This is necessary because the result is\n// passed to a LogSink and that API did not historically document whether\n// levels could be negative or what that meant.\n//\n// Some example usage:\n//\n//\tlogrV0 := getMyLogger()\n//\tlogrV2 := logrV0.V(2)\n//\tslogV2 := slog.New(logr.ToSlogHandler(logrV2))\n//\tslogV2.Debug(\"msg\") // =~ logrV2.V(4) =~ logrV0.V(6)\n//\tslogV2.Info(\"msg\")  // =~  logrV2.V(0) =~ logrV0.V(2)\n//\tslogv2.Warn(\"msg\")  // =~ logrV2.V(-4) =~ logrV0.V(0)\nfunc (l fnlogger) levelFromSlog(level slog.Level) int {\n\tresult := -level\n\tif result < 0 {\n\t\tresult = 0 // because LogSink doesn't expect negative V levels\n\t}\n\treturn int(result)\n}\n"
  },
  {
    "path": "tests/vendor/github.com/go-logr/logr/logr.go",
    "content": "/*\nCopyright 2019 The logr Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n// This design derives from Dave Cheney's blog:\n//     http://dave.cheney.net/2015/11/05/lets-talk-about-logging\n\n// Package logr defines a general-purpose logging API and abstract interfaces\n// to back that API.  Packages in the Go ecosystem can depend on this package,\n// while callers can implement logging with whatever backend is appropriate.\n//\n// # Usage\n//\n// Logging is done using a Logger instance.  Logger is a concrete type with\n// methods, which defers the actual logging to a LogSink interface.  The main\n// methods of Logger are Info() and Error().  Arguments to Info() and Error()\n// are key/value pairs rather than printf-style formatted strings, emphasizing\n// \"structured logging\".\n//\n// With Go's standard log package, we might write:\n//\n//\tlog.Printf(\"setting target value %s\", targetValue)\n//\n// With logr's structured logging, we'd write:\n//\n//\tlogger.Info(\"setting target\", \"value\", targetValue)\n//\n// Errors are much the same.  Instead of:\n//\n//\tlog.Printf(\"failed to open the pod bay door for user %s: %v\", user, err)\n//\n// We'd write:\n//\n//\tlogger.Error(err, \"failed to open the pod bay door\", \"user\", user)\n//\n// Info() and Error() are very similar, but they are separate methods so that\n// LogSink implementations can choose to do things like attach additional\n// information (such as stack traces) on calls to Error(). Error() messages are\n// always logged, regardless of the current verbosity.  If there is no error\n// instance available, passing nil is valid.\n//\n// # Verbosity\n//\n// Often we want to log information only when the application in \"verbose\n// mode\".  To write log lines that are more verbose, Logger has a V() method.\n// The higher the V-level of a log line, the less critical it is considered.\n// Log-lines with V-levels that are not enabled (as per the LogSink) will not\n// be written.  Level V(0) is the default, and logger.V(0).Info() has the same\n// meaning as logger.Info().  Negative V-levels have the same meaning as V(0).\n// Error messages do not have a verbosity level and are always logged.\n//\n// Where we might have written:\n//\n//\tif flVerbose >= 2 {\n//\t    log.Printf(\"an unusual thing happened\")\n//\t}\n//\n// We can write:\n//\n//\tlogger.V(2).Info(\"an unusual thing happened\")\n//\n// # Logger Names\n//\n// Logger instances can have name strings so that all messages logged through\n// that instance have additional context.  For example, you might want to add\n// a subsystem name:\n//\n//\tlogger.WithName(\"compactor\").Info(\"started\", \"time\", time.Now())\n//\n// The WithName() method returns a new Logger, which can be passed to\n// constructors or other functions for further use.  Repeated use of WithName()\n// will accumulate name \"segments\".  These name segments will be joined in some\n// way by the LogSink implementation.  It is strongly recommended that name\n// segments contain simple identifiers (letters, digits, and hyphen), and do\n// not contain characters that could muddle the log output or confuse the\n// joining operation (e.g. whitespace, commas, periods, slashes, brackets,\n// quotes, etc).\n//\n// # Saved Values\n//\n// Logger instances can store any number of key/value pairs, which will be\n// logged alongside all messages logged through that instance.  For example,\n// you might want to create a Logger instance per managed object:\n//\n// With the standard log package, we might write:\n//\n//\tlog.Printf(\"decided to set field foo to value %q for object %s/%s\",\n//\t    targetValue, object.Namespace, object.Name)\n//\n// With logr we'd write:\n//\n//\t// Elsewhere: set up the logger to log the object name.\n//\tobj.logger = mainLogger.WithValues(\n//\t    \"name\", obj.name, \"namespace\", obj.namespace)\n//\n//\t// later on...\n//\tobj.logger.Info(\"setting foo\", \"value\", targetValue)\n//\n// # Best Practices\n//\n// Logger has very few hard rules, with the goal that LogSink implementations\n// might have a lot of freedom to differentiate.  There are, however, some\n// things to consider.\n//\n// The log message consists of a constant message attached to the log line.\n// This should generally be a simple description of what's occurring, and should\n// never be a format string.  Variable information can then be attached using\n// named values.\n//\n// Keys are arbitrary strings, but should generally be constant values.  Values\n// may be any Go value, but how the value is formatted is determined by the\n// LogSink implementation.\n//\n// Logger instances are meant to be passed around by value. Code that receives\n// such a value can call its methods without having to check whether the\n// instance is ready for use.\n//\n// The zero logger (= Logger{}) is identical to Discard() and discards all log\n// entries. Code that receives a Logger by value can simply call it, the methods\n// will never crash. For cases where passing a logger is optional, a pointer to Logger\n// should be used.\n//\n// # Key Naming Conventions\n//\n// Keys are not strictly required to conform to any specification or regex, but\n// it is recommended that they:\n//   - be human-readable and meaningful (not auto-generated or simple ordinals)\n//   - be constant (not dependent on input data)\n//   - contain only printable characters\n//   - not contain whitespace or punctuation\n//   - use lower case for simple keys and lowerCamelCase for more complex ones\n//\n// These guidelines help ensure that log data is processed properly regardless\n// of the log implementation.  For example, log implementations will try to\n// output JSON data or will store data for later database (e.g. SQL) queries.\n//\n// While users are generally free to use key names of their choice, it's\n// generally best to avoid using the following keys, as they're frequently used\n// by implementations:\n//   - \"caller\": the calling information (file/line) of a particular log line\n//   - \"error\": the underlying error value in the `Error` method\n//   - \"level\": the log level\n//   - \"logger\": the name of the associated logger\n//   - \"msg\": the log message\n//   - \"stacktrace\": the stack trace associated with a particular log line or\n//     error (often from the `Error` message)\n//   - \"ts\": the timestamp for a log line\n//\n// Implementations are encouraged to make use of these keys to represent the\n// above concepts, when necessary (for example, in a pure-JSON output form, it\n// would be necessary to represent at least message and timestamp as ordinary\n// named values).\n//\n// # Break Glass\n//\n// Implementations may choose to give callers access to the underlying\n// logging implementation.  The recommended pattern for this is:\n//\n//\t// Underlier exposes access to the underlying logging implementation.\n//\t// Since callers only have a logr.Logger, they have to know which\n//\t// implementation is in use, so this interface is less of an abstraction\n//\t// and more of way to test type conversion.\n//\ttype Underlier interface {\n//\t    GetUnderlying() <underlying-type>\n//\t}\n//\n// Logger grants access to the sink to enable type assertions like this:\n//\n//\tfunc DoSomethingWithImpl(log logr.Logger) {\n//\t    if underlier, ok := log.GetSink().(impl.Underlier); ok {\n//\t       implLogger := underlier.GetUnderlying()\n//\t       ...\n//\t    }\n//\t}\n//\n// Custom `With*` functions can be implemented by copying the complete\n// Logger struct and replacing the sink in the copy:\n//\n//\t// WithFooBar changes the foobar parameter in the log sink and returns a\n//\t// new logger with that modified sink.  It does nothing for loggers where\n//\t// the sink doesn't support that parameter.\n//\tfunc WithFoobar(log logr.Logger, foobar int) logr.Logger {\n//\t   if foobarLogSink, ok := log.GetSink().(FoobarSink); ok {\n//\t      log = log.WithSink(foobarLogSink.WithFooBar(foobar))\n//\t   }\n//\t   return log\n//\t}\n//\n// Don't use New to construct a new Logger with a LogSink retrieved from an\n// existing Logger. Source code attribution might not work correctly and\n// unexported fields in Logger get lost.\n//\n// Beware that the same LogSink instance may be shared by different logger\n// instances. Calling functions that modify the LogSink will affect all of\n// those.\npackage logr\n\n// New returns a new Logger instance.  This is primarily used by libraries\n// implementing LogSink, rather than end users.  Passing a nil sink will create\n// a Logger which discards all log lines.\nfunc New(sink LogSink) Logger {\n\tlogger := Logger{}\n\tlogger.setSink(sink)\n\tif sink != nil {\n\t\tsink.Init(runtimeInfo)\n\t}\n\treturn logger\n}\n\n// setSink stores the sink and updates any related fields. It mutates the\n// logger and thus is only safe to use for loggers that are not currently being\n// used concurrently.\nfunc (l *Logger) setSink(sink LogSink) {\n\tl.sink = sink\n}\n\n// GetSink returns the stored sink.\nfunc (l Logger) GetSink() LogSink {\n\treturn l.sink\n}\n\n// WithSink returns a copy of the logger with the new sink.\nfunc (l Logger) WithSink(sink LogSink) Logger {\n\tl.setSink(sink)\n\treturn l\n}\n\n// Logger is an interface to an abstract logging implementation.  This is a\n// concrete type for performance reasons, but all the real work is passed on to\n// a LogSink.  Implementations of LogSink should provide their own constructors\n// that return Logger, not LogSink.\n//\n// The underlying sink can be accessed through GetSink and be modified through\n// WithSink. This enables the implementation of custom extensions (see \"Break\n// Glass\" in the package documentation). Normally the sink should be used only\n// indirectly.\ntype Logger struct {\n\tsink  LogSink\n\tlevel int\n}\n\n// Enabled tests whether this Logger is enabled.  For example, commandline\n// flags might be used to set the logging verbosity and disable some info logs.\nfunc (l Logger) Enabled() bool {\n\t// Some implementations of LogSink look at the caller in Enabled (e.g.\n\t// different verbosity levels per package or file), but we only pass one\n\t// CallDepth in (via Init).  This means that all calls from Logger to the\n\t// LogSink's Enabled, Info, and Error methods must have the same number of\n\t// frames.  In other words, Logger methods can't call other Logger methods\n\t// which call these LogSink methods unless we do it the same in all paths.\n\treturn l.sink != nil && l.sink.Enabled(l.level)\n}\n\n// Info logs a non-error message with the given key/value pairs as context.\n//\n// The msg argument should be used to add some constant description to the log\n// line.  The key/value pairs can then be used to add additional variable\n// information.  The key/value pairs must alternate string keys and arbitrary\n// values.\nfunc (l Logger) Info(msg string, keysAndValues ...any) {\n\tif l.sink == nil {\n\t\treturn\n\t}\n\tif l.sink.Enabled(l.level) { // see comment in Enabled\n\t\tif withHelper, ok := l.sink.(CallStackHelperLogSink); ok {\n\t\t\twithHelper.GetCallStackHelper()()\n\t\t}\n\t\tl.sink.Info(l.level, msg, keysAndValues...)\n\t}\n}\n\n// Error logs an error, with the given message and key/value pairs as context.\n// It functions similarly to Info, but may have unique behavior, and should be\n// preferred for logging errors (see the package documentations for more\n// information). The log message will always be emitted, regardless of\n// verbosity level.\n//\n// The msg argument should be used to add context to any underlying error,\n// while the err argument should be used to attach the actual error that\n// triggered this log line, if present. The err parameter is optional\n// and nil may be passed instead of an error instance.\nfunc (l Logger) Error(err error, msg string, keysAndValues ...any) {\n\tif l.sink == nil {\n\t\treturn\n\t}\n\tif withHelper, ok := l.sink.(CallStackHelperLogSink); ok {\n\t\twithHelper.GetCallStackHelper()()\n\t}\n\tl.sink.Error(err, msg, keysAndValues...)\n}\n\n// V returns a new Logger instance for a specific verbosity level, relative to\n// this Logger.  In other words, V-levels are additive.  A higher verbosity\n// level means a log message is less important.  Negative V-levels are treated\n// as 0.\nfunc (l Logger) V(level int) Logger {\n\tif l.sink == nil {\n\t\treturn l\n\t}\n\tif level < 0 {\n\t\tlevel = 0\n\t}\n\tl.level += level\n\treturn l\n}\n\n// GetV returns the verbosity level of the logger. If the logger's LogSink is\n// nil as in the Discard logger, this will always return 0.\nfunc (l Logger) GetV() int {\n\t// 0 if l.sink nil because of the if check in V above.\n\treturn l.level\n}\n\n// WithValues returns a new Logger instance with additional key/value pairs.\n// See Info for documentation on how key/value pairs work.\nfunc (l Logger) WithValues(keysAndValues ...any) Logger {\n\tif l.sink == nil {\n\t\treturn l\n\t}\n\tl.setSink(l.sink.WithValues(keysAndValues...))\n\treturn l\n}\n\n// WithName returns a new Logger instance with the specified name element added\n// to the Logger's name.  Successive calls with WithName append additional\n// suffixes to the Logger's name.  It's strongly recommended that name segments\n// contain only letters, digits, and hyphens (see the package documentation for\n// more information).\nfunc (l Logger) WithName(name string) Logger {\n\tif l.sink == nil {\n\t\treturn l\n\t}\n\tl.setSink(l.sink.WithName(name))\n\treturn l\n}\n\n// WithCallDepth returns a Logger instance that offsets the call stack by the\n// specified number of frames when logging call site information, if possible.\n// This is useful for users who have helper functions between the \"real\" call\n// site and the actual calls to Logger methods.  If depth is 0 the attribution\n// should be to the direct caller of this function.  If depth is 1 the\n// attribution should skip 1 call frame, and so on.  Successive calls to this\n// are additive.\n//\n// If the underlying log implementation supports a WithCallDepth(int) method,\n// it will be called and the result returned.  If the implementation does not\n// support CallDepthLogSink, the original Logger will be returned.\n//\n// To skip one level, WithCallStackHelper() should be used instead of\n// WithCallDepth(1) because it works with implementions that support the\n// CallDepthLogSink and/or CallStackHelperLogSink interfaces.\nfunc (l Logger) WithCallDepth(depth int) Logger {\n\tif l.sink == nil {\n\t\treturn l\n\t}\n\tif withCallDepth, ok := l.sink.(CallDepthLogSink); ok {\n\t\tl.setSink(withCallDepth.WithCallDepth(depth))\n\t}\n\treturn l\n}\n\n// WithCallStackHelper returns a new Logger instance that skips the direct\n// caller when logging call site information, if possible.  This is useful for\n// users who have helper functions between the \"real\" call site and the actual\n// calls to Logger methods and want to support loggers which depend on marking\n// each individual helper function, like loggers based on testing.T.\n//\n// In addition to using that new logger instance, callers also must call the\n// returned function.\n//\n// If the underlying log implementation supports a WithCallDepth(int) method,\n// WithCallDepth(1) will be called to produce a new logger. If it supports a\n// WithCallStackHelper() method, that will be also called. If the\n// implementation does not support either of these, the original Logger will be\n// returned.\nfunc (l Logger) WithCallStackHelper() (func(), Logger) {\n\tif l.sink == nil {\n\t\treturn func() {}, l\n\t}\n\tvar helper func()\n\tif withCallDepth, ok := l.sink.(CallDepthLogSink); ok {\n\t\tl.setSink(withCallDepth.WithCallDepth(1))\n\t}\n\tif withHelper, ok := l.sink.(CallStackHelperLogSink); ok {\n\t\thelper = withHelper.GetCallStackHelper()\n\t} else {\n\t\thelper = func() {}\n\t}\n\treturn helper, l\n}\n\n// IsZero returns true if this logger is an uninitialized zero value\nfunc (l Logger) IsZero() bool {\n\treturn l.sink == nil\n}\n\n// RuntimeInfo holds information that the logr \"core\" library knows which\n// LogSinks might want to know.\ntype RuntimeInfo struct {\n\t// CallDepth is the number of call frames the logr library adds between the\n\t// end-user and the LogSink.  LogSink implementations which choose to print\n\t// the original logging site (e.g. file & line) should climb this many\n\t// additional frames to find it.\n\tCallDepth int\n}\n\n// runtimeInfo is a static global.  It must not be changed at run time.\nvar runtimeInfo = RuntimeInfo{\n\tCallDepth: 1,\n}\n\n// LogSink represents a logging implementation.  End-users will generally not\n// interact with this type.\ntype LogSink interface {\n\t// Init receives optional information about the logr library for LogSink\n\t// implementations that need it.\n\tInit(info RuntimeInfo)\n\n\t// Enabled tests whether this LogSink is enabled at the specified V-level.\n\t// For example, commandline flags might be used to set the logging\n\t// verbosity and disable some info logs.\n\tEnabled(level int) bool\n\n\t// Info logs a non-error message with the given key/value pairs as context.\n\t// The level argument is provided for optional logging.  This method will\n\t// only be called when Enabled(level) is true. See Logger.Info for more\n\t// details.\n\tInfo(level int, msg string, keysAndValues ...any)\n\n\t// Error logs an error, with the given message and key/value pairs as\n\t// context.  See Logger.Error for more details.\n\tError(err error, msg string, keysAndValues ...any)\n\n\t// WithValues returns a new LogSink with additional key/value pairs.  See\n\t// Logger.WithValues for more details.\n\tWithValues(keysAndValues ...any) LogSink\n\n\t// WithName returns a new LogSink with the specified name appended.  See\n\t// Logger.WithName for more details.\n\tWithName(name string) LogSink\n}\n\n// CallDepthLogSink represents a LogSink that knows how to climb the call stack\n// to identify the original call site and can offset the depth by a specified\n// number of frames.  This is useful for users who have helper functions\n// between the \"real\" call site and the actual calls to Logger methods.\n// Implementations that log information about the call site (such as file,\n// function, or line) would otherwise log information about the intermediate\n// helper functions.\n//\n// This is an optional interface and implementations are not required to\n// support it.\ntype CallDepthLogSink interface {\n\t// WithCallDepth returns a LogSink that will offset the call\n\t// stack by the specified number of frames when logging call\n\t// site information.\n\t//\n\t// If depth is 0, the LogSink should skip exactly the number\n\t// of call frames defined in RuntimeInfo.CallDepth when Info\n\t// or Error are called, i.e. the attribution should be to the\n\t// direct caller of Logger.Info or Logger.Error.\n\t//\n\t// If depth is 1 the attribution should skip 1 call frame, and so on.\n\t// Successive calls to this are additive.\n\tWithCallDepth(depth int) LogSink\n}\n\n// CallStackHelperLogSink represents a LogSink that knows how to climb\n// the call stack to identify the original call site and can skip\n// intermediate helper functions if they mark themselves as\n// helper. Go's testing package uses that approach.\n//\n// This is useful for users who have helper functions between the\n// \"real\" call site and the actual calls to Logger methods.\n// Implementations that log information about the call site (such as\n// file, function, or line) would otherwise log information about the\n// intermediate helper functions.\n//\n// This is an optional interface and implementations are not required\n// to support it. Implementations that choose to support this must not\n// simply implement it as WithCallDepth(1), because\n// Logger.WithCallStackHelper will call both methods if they are\n// present. This should only be implemented for LogSinks that actually\n// need it, as with testing.T.\ntype CallStackHelperLogSink interface {\n\t// GetCallStackHelper returns a function that must be called\n\t// to mark the direct caller as helper function when logging\n\t// call site information.\n\tGetCallStackHelper() func()\n}\n\n// Marshaler is an optional interface that logged values may choose to\n// implement. Loggers with structured output, such as JSON, should\n// log the object return by the MarshalLog method instead of the\n// original value.\ntype Marshaler interface {\n\t// MarshalLog can be used to:\n\t//   - ensure that structs are not logged as strings when the original\n\t//     value has a String method: return a different type without a\n\t//     String method\n\t//   - select which fields of a complex type should get logged:\n\t//     return a simpler struct with fewer fields\n\t//   - log unexported fields: return a different struct\n\t//     with exported fields\n\t//\n\t// It may return any value of any type.\n\tMarshalLog() any\n}\n"
  },
  {
    "path": "tests/vendor/github.com/go-logr/logr/sloghandler.go",
    "content": "//go:build go1.21\n// +build go1.21\n\n/*\nCopyright 2023 The logr Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\npackage logr\n\nimport (\n\t\"context\"\n\t\"log/slog\"\n)\n\ntype slogHandler struct {\n\t// May be nil, in which case all logs get discarded.\n\tsink LogSink\n\t// Non-nil if sink is non-nil and implements SlogSink.\n\tslogSink SlogSink\n\n\t// groupPrefix collects values from WithGroup calls. It gets added as\n\t// prefix to value keys when handling a log record.\n\tgroupPrefix string\n\n\t// levelBias can be set when constructing the handler to influence the\n\t// slog.Level of log records. A positive levelBias reduces the\n\t// slog.Level value. slog has no API to influence this value after the\n\t// handler got created, so it can only be set indirectly through\n\t// Logger.V.\n\tlevelBias slog.Level\n}\n\nvar _ slog.Handler = &slogHandler{}\n\n// groupSeparator is used to concatenate WithGroup names and attribute keys.\nconst groupSeparator = \".\"\n\n// GetLevel is used for black box unit testing.\nfunc (l *slogHandler) GetLevel() slog.Level {\n\treturn l.levelBias\n}\n\nfunc (l *slogHandler) Enabled(_ context.Context, level slog.Level) bool {\n\treturn l.sink != nil && (level >= slog.LevelError || l.sink.Enabled(l.levelFromSlog(level)))\n}\n\nfunc (l *slogHandler) Handle(ctx context.Context, record slog.Record) error {\n\tif l.slogSink != nil {\n\t\t// Only adjust verbosity level of log entries < slog.LevelError.\n\t\tif record.Level < slog.LevelError {\n\t\t\trecord.Level -= l.levelBias\n\t\t}\n\t\treturn l.slogSink.Handle(ctx, record)\n\t}\n\n\t// No need to check for nil sink here because Handle will only be called\n\t// when Enabled returned true.\n\n\tkvList := make([]any, 0, 2*record.NumAttrs())\n\trecord.Attrs(func(attr slog.Attr) bool {\n\t\tkvList = attrToKVs(attr, l.groupPrefix, kvList)\n\t\treturn true\n\t})\n\tif record.Level >= slog.LevelError {\n\t\tl.sinkWithCallDepth().Error(nil, record.Message, kvList...)\n\t} else {\n\t\tlevel := l.levelFromSlog(record.Level)\n\t\tl.sinkWithCallDepth().Info(level, record.Message, kvList...)\n\t}\n\treturn nil\n}\n\n// sinkWithCallDepth adjusts the stack unwinding so that when Error or Info\n// are called by Handle, code in slog gets skipped.\n//\n// This offset currently (Go 1.21.0) works for calls through\n// slog.New(ToSlogHandler(...)).  There's no guarantee that the call\n// chain won't change. Wrapping the handler will also break unwinding. It's\n// still better than not adjusting at all....\n//\n// This cannot be done when constructing the handler because FromSlogHandler needs\n// access to the original sink without this adjustment. A second copy would\n// work, but then WithAttrs would have to be called for both of them.\nfunc (l *slogHandler) sinkWithCallDepth() LogSink {\n\tif sink, ok := l.sink.(CallDepthLogSink); ok {\n\t\treturn sink.WithCallDepth(2)\n\t}\n\treturn l.sink\n}\n\nfunc (l *slogHandler) WithAttrs(attrs []slog.Attr) slog.Handler {\n\tif l.sink == nil || len(attrs) == 0 {\n\t\treturn l\n\t}\n\n\tclone := *l\n\tif l.slogSink != nil {\n\t\tclone.slogSink = l.slogSink.WithAttrs(attrs)\n\t\tclone.sink = clone.slogSink\n\t} else {\n\t\tkvList := make([]any, 0, 2*len(attrs))\n\t\tfor _, attr := range attrs {\n\t\t\tkvList = attrToKVs(attr, l.groupPrefix, kvList)\n\t\t}\n\t\tclone.sink = l.sink.WithValues(kvList...)\n\t}\n\treturn &clone\n}\n\nfunc (l *slogHandler) WithGroup(name string) slog.Handler {\n\tif l.sink == nil {\n\t\treturn l\n\t}\n\tif name == \"\" {\n\t\t// slog says to inline empty groups\n\t\treturn l\n\t}\n\tclone := *l\n\tif l.slogSink != nil {\n\t\tclone.slogSink = l.slogSink.WithGroup(name)\n\t\tclone.sink = clone.slogSink\n\t} else {\n\t\tclone.groupPrefix = addPrefix(clone.groupPrefix, name)\n\t}\n\treturn &clone\n}\n\n// attrToKVs appends a slog.Attr to a logr-style kvList.  It handle slog Groups\n// and other details of slog.\nfunc attrToKVs(attr slog.Attr, groupPrefix string, kvList []any) []any {\n\tattrVal := attr.Value.Resolve()\n\tif attrVal.Kind() == slog.KindGroup {\n\t\tgroupVal := attrVal.Group()\n\t\tgrpKVs := make([]any, 0, 2*len(groupVal))\n\t\tprefix := groupPrefix\n\t\tif attr.Key != \"\" {\n\t\t\tprefix = addPrefix(groupPrefix, attr.Key)\n\t\t}\n\t\tfor _, attr := range groupVal {\n\t\t\tgrpKVs = attrToKVs(attr, prefix, grpKVs)\n\t\t}\n\t\tkvList = append(kvList, grpKVs...)\n\t} else if attr.Key != \"\" {\n\t\tkvList = append(kvList, addPrefix(groupPrefix, attr.Key), attrVal.Any())\n\t}\n\n\treturn kvList\n}\n\nfunc addPrefix(prefix, name string) string {\n\tif prefix == \"\" {\n\t\treturn name\n\t}\n\tif name == \"\" {\n\t\treturn prefix\n\t}\n\treturn prefix + groupSeparator + name\n}\n\n// levelFromSlog adjusts the level by the logger's verbosity and negates it.\n// It ensures that the result is >= 0. This is necessary because the result is\n// passed to a LogSink and that API did not historically document whether\n// levels could be negative or what that meant.\n//\n// Some example usage:\n//\n//\tlogrV0 := getMyLogger()\n//\tlogrV2 := logrV0.V(2)\n//\tslogV2 := slog.New(logr.ToSlogHandler(logrV2))\n//\tslogV2.Debug(\"msg\") // =~ logrV2.V(4) =~ logrV0.V(6)\n//\tslogV2.Info(\"msg\")  // =~  logrV2.V(0) =~ logrV0.V(2)\n//\tslogv2.Warn(\"msg\")  // =~ logrV2.V(-4) =~ logrV0.V(0)\nfunc (l *slogHandler) levelFromSlog(level slog.Level) int {\n\tresult := -level\n\tresult += l.levelBias // in case the original Logger had a V level\n\tif result < 0 {\n\t\tresult = 0 // because LogSink doesn't expect negative V levels\n\t}\n\treturn int(result)\n}\n"
  },
  {
    "path": "tests/vendor/github.com/go-logr/logr/slogr.go",
    "content": "//go:build go1.21\n// +build go1.21\n\n/*\nCopyright 2023 The logr Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\npackage logr\n\nimport (\n\t\"context\"\n\t\"log/slog\"\n)\n\n// FromSlogHandler returns a Logger which writes to the slog.Handler.\n//\n// The logr verbosity level is mapped to slog levels such that V(0) becomes\n// slog.LevelInfo and V(4) becomes slog.LevelDebug.\nfunc FromSlogHandler(handler slog.Handler) Logger {\n\tif handler, ok := handler.(*slogHandler); ok {\n\t\tif handler.sink == nil {\n\t\t\treturn Discard()\n\t\t}\n\t\treturn New(handler.sink).V(int(handler.levelBias))\n\t}\n\treturn New(&slogSink{handler: handler})\n}\n\n// ToSlogHandler returns a slog.Handler which writes to the same sink as the Logger.\n//\n// The returned logger writes all records with level >= slog.LevelError as\n// error log entries with LogSink.Error, regardless of the verbosity level of\n// the Logger:\n//\n//\tlogger := <some Logger with 0 as verbosity level>\n//\tslog.New(ToSlogHandler(logger.V(10))).Error(...) -> logSink.Error(...)\n//\n// The level of all other records gets reduced by the verbosity\n// level of the Logger and the result is negated. If it happens\n// to be negative, then it gets replaced by zero because a LogSink\n// is not expected to handled negative levels:\n//\n//\tslog.New(ToSlogHandler(logger)).Debug(...) -> logger.GetSink().Info(level=4, ...)\n//\tslog.New(ToSlogHandler(logger)).Warning(...) -> logger.GetSink().Info(level=0, ...)\n//\tslog.New(ToSlogHandler(logger)).Info(...) -> logger.GetSink().Info(level=0, ...)\n//\tslog.New(ToSlogHandler(logger.V(4))).Info(...) -> logger.GetSink().Info(level=4, ...)\nfunc ToSlogHandler(logger Logger) slog.Handler {\n\tif sink, ok := logger.GetSink().(*slogSink); ok && logger.GetV() == 0 {\n\t\treturn sink.handler\n\t}\n\n\thandler := &slogHandler{sink: logger.GetSink(), levelBias: slog.Level(logger.GetV())}\n\tif slogSink, ok := handler.sink.(SlogSink); ok {\n\t\thandler.slogSink = slogSink\n\t}\n\treturn handler\n}\n\n// SlogSink is an optional interface that a LogSink can implement to support\n// logging through the slog.Logger or slog.Handler APIs better. It then should\n// also support special slog values like slog.Group. When used as a\n// slog.Handler, the advantages are:\n//\n//   - stack unwinding gets avoided in favor of logging the pre-recorded PC,\n//     as intended by slog\n//   - proper grouping of key/value pairs via WithGroup\n//   - verbosity levels > slog.LevelInfo can be recorded\n//   - less overhead\n//\n// Both APIs (Logger and slog.Logger/Handler) then are supported equally\n// well. Developers can pick whatever API suits them better and/or mix\n// packages which use either API in the same binary with a common logging\n// implementation.\n//\n// This interface is necessary because the type implementing the LogSink\n// interface cannot also implement the slog.Handler interface due to the\n// different prototype of the common Enabled method.\n//\n// An implementation could support both interfaces in two different types, but then\n// additional interfaces would be needed to convert between those types in FromSlogHandler\n// and ToSlogHandler.\ntype SlogSink interface {\n\tLogSink\n\n\tHandle(ctx context.Context, record slog.Record) error\n\tWithAttrs(attrs []slog.Attr) SlogSink\n\tWithGroup(name string) SlogSink\n}\n"
  },
  {
    "path": "tests/vendor/github.com/go-logr/logr/slogsink.go",
    "content": "//go:build go1.21\n// +build go1.21\n\n/*\nCopyright 2023 The logr Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\npackage logr\n\nimport (\n\t\"context\"\n\t\"log/slog\"\n\t\"runtime\"\n\t\"time\"\n)\n\nvar (\n\t_ LogSink          = &slogSink{}\n\t_ CallDepthLogSink = &slogSink{}\n\t_ Underlier        = &slogSink{}\n)\n\n// Underlier is implemented by the LogSink returned by NewFromLogHandler.\ntype Underlier interface {\n\t// GetUnderlying returns the Handler used by the LogSink.\n\tGetUnderlying() slog.Handler\n}\n\nconst (\n\t// nameKey is used to log the `WithName` values as an additional attribute.\n\tnameKey = \"logger\"\n\n\t// errKey is used to log the error parameter of Error as an additional attribute.\n\terrKey = \"err\"\n)\n\ntype slogSink struct {\n\tcallDepth int\n\tname      string\n\thandler   slog.Handler\n}\n\nfunc (l *slogSink) Init(info RuntimeInfo) {\n\tl.callDepth = info.CallDepth\n}\n\nfunc (l *slogSink) GetUnderlying() slog.Handler {\n\treturn l.handler\n}\n\nfunc (l *slogSink) WithCallDepth(depth int) LogSink {\n\tnewLogger := *l\n\tnewLogger.callDepth += depth\n\treturn &newLogger\n}\n\nfunc (l *slogSink) Enabled(level int) bool {\n\treturn l.handler.Enabled(context.Background(), slog.Level(-level))\n}\n\nfunc (l *slogSink) Info(level int, msg string, kvList ...interface{}) {\n\tl.log(nil, msg, slog.Level(-level), kvList...)\n}\n\nfunc (l *slogSink) Error(err error, msg string, kvList ...interface{}) {\n\tl.log(err, msg, slog.LevelError, kvList...)\n}\n\nfunc (l *slogSink) log(err error, msg string, level slog.Level, kvList ...interface{}) {\n\tvar pcs [1]uintptr\n\t// skip runtime.Callers, this function, Info/Error, and all helper functions above that.\n\truntime.Callers(3+l.callDepth, pcs[:])\n\n\trecord := slog.NewRecord(time.Now(), level, msg, pcs[0])\n\tif l.name != \"\" {\n\t\trecord.AddAttrs(slog.String(nameKey, l.name))\n\t}\n\tif err != nil {\n\t\trecord.AddAttrs(slog.Any(errKey, err))\n\t}\n\trecord.Add(kvList...)\n\t_ = l.handler.Handle(context.Background(), record)\n}\n\nfunc (l slogSink) WithName(name string) LogSink {\n\tif l.name != \"\" {\n\t\tl.name += \"/\"\n\t}\n\tl.name += name\n\treturn &l\n}\n\nfunc (l slogSink) WithValues(kvList ...interface{}) LogSink {\n\tl.handler = l.handler.WithAttrs(kvListToAttrs(kvList...))\n\treturn &l\n}\n\nfunc kvListToAttrs(kvList ...interface{}) []slog.Attr {\n\t// We don't need the record itself, only its Add method.\n\trecord := slog.NewRecord(time.Time{}, 0, \"\", 0)\n\trecord.Add(kvList...)\n\tattrs := make([]slog.Attr, 0, record.NumAttrs())\n\trecord.Attrs(func(attr slog.Attr) bool {\n\t\tattrs = append(attrs, attr)\n\t\treturn true\n\t})\n\treturn attrs\n}\n"
  },
  {
    "path": "tests/vendor/github.com/google/go-cmp/LICENSE",
    "content": "Copyright (c) 2017 The Go Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n   * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n   * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n   * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
  },
  {
    "path": "tests/vendor/github.com/google/go-cmp/cmp/compare.go",
    "content": "// Copyright 2017, The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package cmp determines equality of values.\n//\n// This package is intended to be a more powerful and safer alternative to\n// [reflect.DeepEqual] for comparing whether two values are semantically equal.\n// It is intended to only be used in tests, as performance is not a goal and\n// it may panic if it cannot compare the values. Its propensity towards\n// panicking means that its unsuitable for production environments where a\n// spurious panic may be fatal.\n//\n// The primary features of cmp are:\n//\n//   - When the default behavior of equality does not suit the test's needs,\n//     custom equality functions can override the equality operation.\n//     For example, an equality function may report floats as equal so long as\n//     they are within some tolerance of each other.\n//\n//   - Types with an Equal method (e.g., [time.Time.Equal]) may use that method\n//     to determine equality. This allows package authors to determine\n//     the equality operation for the types that they define.\n//\n//   - If no custom equality functions are used and no Equal method is defined,\n//     equality is determined by recursively comparing the primitive kinds on\n//     both values, much like [reflect.DeepEqual]. Unlike [reflect.DeepEqual],\n//     unexported fields are not compared by default; they result in panics\n//     unless suppressed by using an [Ignore] option\n//     (see [github.com/google/go-cmp/cmp/cmpopts.IgnoreUnexported])\n//     or explicitly compared using the [Exporter] option.\npackage cmp\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"strings\"\n\n\t\"github.com/google/go-cmp/cmp/internal/diff\"\n\t\"github.com/google/go-cmp/cmp/internal/function\"\n\t\"github.com/google/go-cmp/cmp/internal/value\"\n)\n\n// TODO(≥go1.18): Use any instead of interface{}.\n\n// Equal reports whether x and y are equal by recursively applying the\n// following rules in the given order to x and y and all of their sub-values:\n//\n//   - Let S be the set of all [Ignore], [Transformer], and [Comparer] options that\n//     remain after applying all path filters, value filters, and type filters.\n//     If at least one [Ignore] exists in S, then the comparison is ignored.\n//     If the number of [Transformer] and [Comparer] options in S is non-zero,\n//     then Equal panics because it is ambiguous which option to use.\n//     If S contains a single [Transformer], then use that to transform\n//     the current values and recursively call Equal on the output values.\n//     If S contains a single [Comparer], then use that to compare the current values.\n//     Otherwise, evaluation proceeds to the next rule.\n//\n//   - If the values have an Equal method of the form \"(T) Equal(T) bool\" or\n//     \"(T) Equal(I) bool\" where T is assignable to I, then use the result of\n//     x.Equal(y) even if x or y is nil. Otherwise, no such method exists and\n//     evaluation proceeds to the next rule.\n//\n//   - Lastly, try to compare x and y based on their basic kinds.\n//     Simple kinds like booleans, integers, floats, complex numbers, strings,\n//     and channels are compared using the equivalent of the == operator in Go.\n//     Functions are only equal if they are both nil, otherwise they are unequal.\n//\n// Structs are equal if recursively calling Equal on all fields report equal.\n// If a struct contains unexported fields, Equal panics unless an [Ignore] option\n// (e.g., [github.com/google/go-cmp/cmp/cmpopts.IgnoreUnexported]) ignores that field\n// or the [Exporter] option explicitly permits comparing the unexported field.\n//\n// Slices are equal if they are both nil or both non-nil, where recursively\n// calling Equal on all non-ignored slice or array elements report equal.\n// Empty non-nil slices and nil slices are not equal; to equate empty slices,\n// consider using [github.com/google/go-cmp/cmp/cmpopts.EquateEmpty].\n//\n// Maps are equal if they are both nil or both non-nil, where recursively\n// calling Equal on all non-ignored map entries report equal.\n// Map keys are equal according to the == operator.\n// To use custom comparisons for map keys, consider using\n// [github.com/google/go-cmp/cmp/cmpopts.SortMaps].\n// Empty non-nil maps and nil maps are not equal; to equate empty maps,\n// consider using [github.com/google/go-cmp/cmp/cmpopts.EquateEmpty].\n//\n// Pointers and interfaces are equal if they are both nil or both non-nil,\n// where they have the same underlying concrete type and recursively\n// calling Equal on the underlying values reports equal.\n//\n// Before recursing into a pointer, slice element, or map, the current path\n// is checked to detect whether the address has already been visited.\n// If there is a cycle, then the pointed at values are considered equal\n// only if both addresses were previously visited in the same path step.\nfunc Equal(x, y interface{}, opts ...Option) bool {\n\ts := newState(opts)\n\ts.compareAny(rootStep(x, y))\n\treturn s.result.Equal()\n}\n\n// Diff returns a human-readable report of the differences between two values:\n// y - x. It returns an empty string if and only if Equal returns true for the\n// same input values and options.\n//\n// The output is displayed as a literal in pseudo-Go syntax.\n// At the start of each line, a \"-\" prefix indicates an element removed from x,\n// a \"+\" prefix to indicates an element added from y, and the lack of a prefix\n// indicates an element common to both x and y. If possible, the output\n// uses fmt.Stringer.String or error.Error methods to produce more humanly\n// readable outputs. In such cases, the string is prefixed with either an\n// 's' or 'e' character, respectively, to indicate that the method was called.\n//\n// Do not depend on this output being stable. If you need the ability to\n// programmatically interpret the difference, consider using a custom Reporter.\nfunc Diff(x, y interface{}, opts ...Option) string {\n\ts := newState(opts)\n\n\t// Optimization: If there are no other reporters, we can optimize for the\n\t// common case where the result is equal (and thus no reported difference).\n\t// This avoids the expensive construction of a difference tree.\n\tif len(s.reporters) == 0 {\n\t\ts.compareAny(rootStep(x, y))\n\t\tif s.result.Equal() {\n\t\t\treturn \"\"\n\t\t}\n\t\ts.result = diff.Result{} // Reset results\n\t}\n\n\tr := new(defaultReporter)\n\ts.reporters = append(s.reporters, reporter{r})\n\ts.compareAny(rootStep(x, y))\n\td := r.String()\n\tif (d == \"\") != s.result.Equal() {\n\t\tpanic(\"inconsistent difference and equality results\")\n\t}\n\treturn d\n}\n\n// rootStep constructs the first path step. If x and y have differing types,\n// then they are stored within an empty interface type.\nfunc rootStep(x, y interface{}) PathStep {\n\tvx := reflect.ValueOf(x)\n\tvy := reflect.ValueOf(y)\n\n\t// If the inputs are different types, auto-wrap them in an empty interface\n\t// so that they have the same parent type.\n\tvar t reflect.Type\n\tif !vx.IsValid() || !vy.IsValid() || vx.Type() != vy.Type() {\n\t\tt = anyType\n\t\tif vx.IsValid() {\n\t\t\tvvx := reflect.New(t).Elem()\n\t\t\tvvx.Set(vx)\n\t\t\tvx = vvx\n\t\t}\n\t\tif vy.IsValid() {\n\t\t\tvvy := reflect.New(t).Elem()\n\t\t\tvvy.Set(vy)\n\t\t\tvy = vvy\n\t\t}\n\t} else {\n\t\tt = vx.Type()\n\t}\n\n\treturn &pathStep{t, vx, vy}\n}\n\ntype state struct {\n\t// These fields represent the \"comparison state\".\n\t// Calling statelessCompare must not result in observable changes to these.\n\tresult    diff.Result // The current result of comparison\n\tcurPath   Path        // The current path in the value tree\n\tcurPtrs   pointerPath // The current set of visited pointers\n\treporters []reporter  // Optional reporters\n\n\t// recChecker checks for infinite cycles applying the same set of\n\t// transformers upon the output of itself.\n\trecChecker recChecker\n\n\t// dynChecker triggers pseudo-random checks for option correctness.\n\t// It is safe for statelessCompare to mutate this value.\n\tdynChecker dynChecker\n\n\t// These fields, once set by processOption, will not change.\n\texporters []exporter // List of exporters for structs with unexported fields\n\topts      Options    // List of all fundamental and filter options\n}\n\nfunc newState(opts []Option) *state {\n\t// Always ensure a validator option exists to validate the inputs.\n\ts := &state{opts: Options{validator{}}}\n\ts.curPtrs.Init()\n\ts.processOption(Options(opts))\n\treturn s\n}\n\nfunc (s *state) processOption(opt Option) {\n\tswitch opt := opt.(type) {\n\tcase nil:\n\tcase Options:\n\t\tfor _, o := range opt {\n\t\t\ts.processOption(o)\n\t\t}\n\tcase coreOption:\n\t\ttype filtered interface {\n\t\t\tisFiltered() bool\n\t\t}\n\t\tif fopt, ok := opt.(filtered); ok && !fopt.isFiltered() {\n\t\t\tpanic(fmt.Sprintf(\"cannot use an unfiltered option: %v\", opt))\n\t\t}\n\t\ts.opts = append(s.opts, opt)\n\tcase exporter:\n\t\ts.exporters = append(s.exporters, opt)\n\tcase reporter:\n\t\ts.reporters = append(s.reporters, opt)\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"unknown option %T\", opt))\n\t}\n}\n\n// statelessCompare compares two values and returns the result.\n// This function is stateless in that it does not alter the current result,\n// or output to any registered reporters.\nfunc (s *state) statelessCompare(step PathStep) diff.Result {\n\t// We do not save and restore curPath and curPtrs because all of the\n\t// compareX methods should properly push and pop from them.\n\t// It is an implementation bug if the contents of the paths differ from\n\t// when calling this function to when returning from it.\n\n\toldResult, oldReporters := s.result, s.reporters\n\ts.result = diff.Result{} // Reset result\n\ts.reporters = nil        // Remove reporters to avoid spurious printouts\n\ts.compareAny(step)\n\tres := s.result\n\ts.result, s.reporters = oldResult, oldReporters\n\treturn res\n}\n\nfunc (s *state) compareAny(step PathStep) {\n\t// Update the path stack.\n\ts.curPath.push(step)\n\tdefer s.curPath.pop()\n\tfor _, r := range s.reporters {\n\t\tr.PushStep(step)\n\t\tdefer r.PopStep()\n\t}\n\ts.recChecker.Check(s.curPath)\n\n\t// Cycle-detection for slice elements (see NOTE in compareSlice).\n\tt := step.Type()\n\tvx, vy := step.Values()\n\tif si, ok := step.(SliceIndex); ok && si.isSlice && vx.IsValid() && vy.IsValid() {\n\t\tpx, py := vx.Addr(), vy.Addr()\n\t\tif eq, visited := s.curPtrs.Push(px, py); visited {\n\t\t\ts.report(eq, reportByCycle)\n\t\t\treturn\n\t\t}\n\t\tdefer s.curPtrs.Pop(px, py)\n\t}\n\n\t// Rule 1: Check whether an option applies on this node in the value tree.\n\tif s.tryOptions(t, vx, vy) {\n\t\treturn\n\t}\n\n\t// Rule 2: Check whether the type has a valid Equal method.\n\tif s.tryMethod(t, vx, vy) {\n\t\treturn\n\t}\n\n\t// Rule 3: Compare based on the underlying kind.\n\tswitch t.Kind() {\n\tcase reflect.Bool:\n\t\ts.report(vx.Bool() == vy.Bool(), 0)\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\ts.report(vx.Int() == vy.Int(), 0)\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\ts.report(vx.Uint() == vy.Uint(), 0)\n\tcase reflect.Float32, reflect.Float64:\n\t\ts.report(vx.Float() == vy.Float(), 0)\n\tcase reflect.Complex64, reflect.Complex128:\n\t\ts.report(vx.Complex() == vy.Complex(), 0)\n\tcase reflect.String:\n\t\ts.report(vx.String() == vy.String(), 0)\n\tcase reflect.Chan, reflect.UnsafePointer:\n\t\ts.report(vx.Pointer() == vy.Pointer(), 0)\n\tcase reflect.Func:\n\t\ts.report(vx.IsNil() && vy.IsNil(), 0)\n\tcase reflect.Struct:\n\t\ts.compareStruct(t, vx, vy)\n\tcase reflect.Slice, reflect.Array:\n\t\ts.compareSlice(t, vx, vy)\n\tcase reflect.Map:\n\t\ts.compareMap(t, vx, vy)\n\tcase reflect.Ptr:\n\t\ts.comparePtr(t, vx, vy)\n\tcase reflect.Interface:\n\t\ts.compareInterface(t, vx, vy)\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"%v kind not handled\", t.Kind()))\n\t}\n}\n\nfunc (s *state) tryOptions(t reflect.Type, vx, vy reflect.Value) bool {\n\t// Evaluate all filters and apply the remaining options.\n\tif opt := s.opts.filter(s, t, vx, vy); opt != nil {\n\t\topt.apply(s, vx, vy)\n\t\treturn true\n\t}\n\treturn false\n}\n\nfunc (s *state) tryMethod(t reflect.Type, vx, vy reflect.Value) bool {\n\t// Check if this type even has an Equal method.\n\tm, ok := t.MethodByName(\"Equal\")\n\tif !ok || !function.IsType(m.Type, function.EqualAssignable) {\n\t\treturn false\n\t}\n\n\teq := s.callTTBFunc(m.Func, vx, vy)\n\ts.report(eq, reportByMethod)\n\treturn true\n}\n\nfunc (s *state) callTRFunc(f, v reflect.Value, step Transform) reflect.Value {\n\tif !s.dynChecker.Next() {\n\t\treturn f.Call([]reflect.Value{v})[0]\n\t}\n\n\t// Run the function twice and ensure that we get the same results back.\n\t// We run in goroutines so that the race detector (if enabled) can detect\n\t// unsafe mutations to the input.\n\tc := make(chan reflect.Value)\n\tgo detectRaces(c, f, v)\n\tgot := <-c\n\twant := f.Call([]reflect.Value{v})[0]\n\tif step.vx, step.vy = got, want; !s.statelessCompare(step).Equal() {\n\t\t// To avoid false-positives with non-reflexive equality operations,\n\t\t// we sanity check whether a value is equal to itself.\n\t\tif step.vx, step.vy = want, want; !s.statelessCompare(step).Equal() {\n\t\t\treturn want\n\t\t}\n\t\tpanic(fmt.Sprintf(\"non-deterministic function detected: %s\", function.NameOf(f)))\n\t}\n\treturn want\n}\n\nfunc (s *state) callTTBFunc(f, x, y reflect.Value) bool {\n\tif !s.dynChecker.Next() {\n\t\treturn f.Call([]reflect.Value{x, y})[0].Bool()\n\t}\n\n\t// Swapping the input arguments is sufficient to check that\n\t// f is symmetric and deterministic.\n\t// We run in goroutines so that the race detector (if enabled) can detect\n\t// unsafe mutations to the input.\n\tc := make(chan reflect.Value)\n\tgo detectRaces(c, f, y, x)\n\tgot := <-c\n\twant := f.Call([]reflect.Value{x, y})[0].Bool()\n\tif !got.IsValid() || got.Bool() != want {\n\t\tpanic(fmt.Sprintf(\"non-deterministic or non-symmetric function detected: %s\", function.NameOf(f)))\n\t}\n\treturn want\n}\n\nfunc detectRaces(c chan<- reflect.Value, f reflect.Value, vs ...reflect.Value) {\n\tvar ret reflect.Value\n\tdefer func() {\n\t\trecover() // Ignore panics, let the other call to f panic instead\n\t\tc <- ret\n\t}()\n\tret = f.Call(vs)[0]\n}\n\nfunc (s *state) compareStruct(t reflect.Type, vx, vy reflect.Value) {\n\tvar addr bool\n\tvar vax, vay reflect.Value // Addressable versions of vx and vy\n\n\tvar mayForce, mayForceInit bool\n\tstep := StructField{&structField{}}\n\tfor i := 0; i < t.NumField(); i++ {\n\t\tstep.typ = t.Field(i).Type\n\t\tstep.vx = vx.Field(i)\n\t\tstep.vy = vy.Field(i)\n\t\tstep.name = t.Field(i).Name\n\t\tstep.idx = i\n\t\tstep.unexported = !isExported(step.name)\n\t\tif step.unexported {\n\t\t\tif step.name == \"_\" {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\t// Defer checking of unexported fields until later to give an\n\t\t\t// Ignore a chance to ignore the field.\n\t\t\tif !vax.IsValid() || !vay.IsValid() {\n\t\t\t\t// For retrieveUnexportedField to work, the parent struct must\n\t\t\t\t// be addressable. Create a new copy of the values if\n\t\t\t\t// necessary to make them addressable.\n\t\t\t\taddr = vx.CanAddr() || vy.CanAddr()\n\t\t\t\tvax = makeAddressable(vx)\n\t\t\t\tvay = makeAddressable(vy)\n\t\t\t}\n\t\t\tif !mayForceInit {\n\t\t\t\tfor _, xf := range s.exporters {\n\t\t\t\t\tmayForce = mayForce || xf(t)\n\t\t\t\t}\n\t\t\t\tmayForceInit = true\n\t\t\t}\n\t\t\tstep.mayForce = mayForce\n\t\t\tstep.paddr = addr\n\t\t\tstep.pvx = vax\n\t\t\tstep.pvy = vay\n\t\t\tstep.field = t.Field(i)\n\t\t}\n\t\ts.compareAny(step)\n\t}\n}\n\nfunc (s *state) compareSlice(t reflect.Type, vx, vy reflect.Value) {\n\tisSlice := t.Kind() == reflect.Slice\n\tif isSlice && (vx.IsNil() || vy.IsNil()) {\n\t\ts.report(vx.IsNil() && vy.IsNil(), 0)\n\t\treturn\n\t}\n\n\t// NOTE: It is incorrect to call curPtrs.Push on the slice header pointer\n\t// since slices represents a list of pointers, rather than a single pointer.\n\t// The pointer checking logic must be handled on a per-element basis\n\t// in compareAny.\n\t//\n\t// A slice header (see reflect.SliceHeader) in Go is a tuple of a starting\n\t// pointer P, a length N, and a capacity C. Supposing each slice element has\n\t// a memory size of M, then the slice is equivalent to the list of pointers:\n\t//\t[P+i*M for i in range(N)]\n\t//\n\t// For example, v[:0] and v[:1] are slices with the same starting pointer,\n\t// but they are clearly different values. Using the slice pointer alone\n\t// violates the assumption that equal pointers implies equal values.\n\n\tstep := SliceIndex{&sliceIndex{pathStep: pathStep{typ: t.Elem()}, isSlice: isSlice}}\n\twithIndexes := func(ix, iy int) SliceIndex {\n\t\tif ix >= 0 {\n\t\t\tstep.vx, step.xkey = vx.Index(ix), ix\n\t\t} else {\n\t\t\tstep.vx, step.xkey = reflect.Value{}, -1\n\t\t}\n\t\tif iy >= 0 {\n\t\t\tstep.vy, step.ykey = vy.Index(iy), iy\n\t\t} else {\n\t\t\tstep.vy, step.ykey = reflect.Value{}, -1\n\t\t}\n\t\treturn step\n\t}\n\n\t// Ignore options are able to ignore missing elements in a slice.\n\t// However, detecting these reliably requires an optimal differencing\n\t// algorithm, for which diff.Difference is not.\n\t//\n\t// Instead, we first iterate through both slices to detect which elements\n\t// would be ignored if standing alone. The index of non-discarded elements\n\t// are stored in a separate slice, which diffing is then performed on.\n\tvar indexesX, indexesY []int\n\tvar ignoredX, ignoredY []bool\n\tfor ix := 0; ix < vx.Len(); ix++ {\n\t\tignored := s.statelessCompare(withIndexes(ix, -1)).NumDiff == 0\n\t\tif !ignored {\n\t\t\tindexesX = append(indexesX, ix)\n\t\t}\n\t\tignoredX = append(ignoredX, ignored)\n\t}\n\tfor iy := 0; iy < vy.Len(); iy++ {\n\t\tignored := s.statelessCompare(withIndexes(-1, iy)).NumDiff == 0\n\t\tif !ignored {\n\t\t\tindexesY = append(indexesY, iy)\n\t\t}\n\t\tignoredY = append(ignoredY, ignored)\n\t}\n\n\t// Compute an edit-script for slices vx and vy (excluding ignored elements).\n\tedits := diff.Difference(len(indexesX), len(indexesY), func(ix, iy int) diff.Result {\n\t\treturn s.statelessCompare(withIndexes(indexesX[ix], indexesY[iy]))\n\t})\n\n\t// Replay the ignore-scripts and the edit-script.\n\tvar ix, iy int\n\tfor ix < vx.Len() || iy < vy.Len() {\n\t\tvar e diff.EditType\n\t\tswitch {\n\t\tcase ix < len(ignoredX) && ignoredX[ix]:\n\t\t\te = diff.UniqueX\n\t\tcase iy < len(ignoredY) && ignoredY[iy]:\n\t\t\te = diff.UniqueY\n\t\tdefault:\n\t\t\te, edits = edits[0], edits[1:]\n\t\t}\n\t\tswitch e {\n\t\tcase diff.UniqueX:\n\t\t\ts.compareAny(withIndexes(ix, -1))\n\t\t\tix++\n\t\tcase diff.UniqueY:\n\t\t\ts.compareAny(withIndexes(-1, iy))\n\t\t\tiy++\n\t\tdefault:\n\t\t\ts.compareAny(withIndexes(ix, iy))\n\t\t\tix++\n\t\t\tiy++\n\t\t}\n\t}\n}\n\nfunc (s *state) compareMap(t reflect.Type, vx, vy reflect.Value) {\n\tif vx.IsNil() || vy.IsNil() {\n\t\ts.report(vx.IsNil() && vy.IsNil(), 0)\n\t\treturn\n\t}\n\n\t// Cycle-detection for maps.\n\tif eq, visited := s.curPtrs.Push(vx, vy); visited {\n\t\ts.report(eq, reportByCycle)\n\t\treturn\n\t}\n\tdefer s.curPtrs.Pop(vx, vy)\n\n\t// We combine and sort the two map keys so that we can perform the\n\t// comparisons in a deterministic order.\n\tstep := MapIndex{&mapIndex{pathStep: pathStep{typ: t.Elem()}}}\n\tfor _, k := range value.SortKeys(append(vx.MapKeys(), vy.MapKeys()...)) {\n\t\tstep.vx = vx.MapIndex(k)\n\t\tstep.vy = vy.MapIndex(k)\n\t\tstep.key = k\n\t\tif !step.vx.IsValid() && !step.vy.IsValid() {\n\t\t\t// It is possible for both vx and vy to be invalid if the\n\t\t\t// key contained a NaN value in it.\n\t\t\t//\n\t\t\t// Even with the ability to retrieve NaN keys in Go 1.12,\n\t\t\t// there still isn't a sensible way to compare the values since\n\t\t\t// a NaN key may map to multiple unordered values.\n\t\t\t// The most reasonable way to compare NaNs would be to compare the\n\t\t\t// set of values. However, this is impossible to do efficiently\n\t\t\t// since set equality is provably an O(n^2) operation given only\n\t\t\t// an Equal function. If we had a Less function or Hash function,\n\t\t\t// this could be done in O(n*log(n)) or O(n), respectively.\n\t\t\t//\n\t\t\t// Rather than adding complex logic to deal with NaNs, make it\n\t\t\t// the user's responsibility to compare such obscure maps.\n\t\t\tconst help = \"consider providing a Comparer to compare the map\"\n\t\t\tpanic(fmt.Sprintf(\"%#v has map key with NaNs\\n%s\", s.curPath, help))\n\t\t}\n\t\ts.compareAny(step)\n\t}\n}\n\nfunc (s *state) comparePtr(t reflect.Type, vx, vy reflect.Value) {\n\tif vx.IsNil() || vy.IsNil() {\n\t\ts.report(vx.IsNil() && vy.IsNil(), 0)\n\t\treturn\n\t}\n\n\t// Cycle-detection for pointers.\n\tif eq, visited := s.curPtrs.Push(vx, vy); visited {\n\t\ts.report(eq, reportByCycle)\n\t\treturn\n\t}\n\tdefer s.curPtrs.Pop(vx, vy)\n\n\tvx, vy = vx.Elem(), vy.Elem()\n\ts.compareAny(Indirect{&indirect{pathStep{t.Elem(), vx, vy}}})\n}\n\nfunc (s *state) compareInterface(t reflect.Type, vx, vy reflect.Value) {\n\tif vx.IsNil() || vy.IsNil() {\n\t\ts.report(vx.IsNil() && vy.IsNil(), 0)\n\t\treturn\n\t}\n\tvx, vy = vx.Elem(), vy.Elem()\n\tif vx.Type() != vy.Type() {\n\t\ts.report(false, 0)\n\t\treturn\n\t}\n\ts.compareAny(TypeAssertion{&typeAssertion{pathStep{vx.Type(), vx, vy}}})\n}\n\nfunc (s *state) report(eq bool, rf resultFlags) {\n\tif rf&reportByIgnore == 0 {\n\t\tif eq {\n\t\t\ts.result.NumSame++\n\t\t\trf |= reportEqual\n\t\t} else {\n\t\t\ts.result.NumDiff++\n\t\t\trf |= reportUnequal\n\t\t}\n\t}\n\tfor _, r := range s.reporters {\n\t\tr.Report(Result{flags: rf})\n\t}\n}\n\n// recChecker tracks the state needed to periodically perform checks that\n// user provided transformers are not stuck in an infinitely recursive cycle.\ntype recChecker struct{ next int }\n\n// Check scans the Path for any recursive transformers and panics when any\n// recursive transformers are detected. Note that the presence of a\n// recursive Transformer does not necessarily imply an infinite cycle.\n// As such, this check only activates after some minimal number of path steps.\nfunc (rc *recChecker) Check(p Path) {\n\tconst minLen = 1 << 16\n\tif rc.next == 0 {\n\t\trc.next = minLen\n\t}\n\tif len(p) < rc.next {\n\t\treturn\n\t}\n\trc.next <<= 1\n\n\t// Check whether the same transformer has appeared at least twice.\n\tvar ss []string\n\tm := map[Option]int{}\n\tfor _, ps := range p {\n\t\tif t, ok := ps.(Transform); ok {\n\t\t\tt := t.Option()\n\t\t\tif m[t] == 1 { // Transformer was used exactly once before\n\t\t\t\ttf := t.(*transformer).fnc.Type()\n\t\t\t\tss = append(ss, fmt.Sprintf(\"%v: %v => %v\", t, tf.In(0), tf.Out(0)))\n\t\t\t}\n\t\t\tm[t]++\n\t\t}\n\t}\n\tif len(ss) > 0 {\n\t\tconst warning = \"recursive set of Transformers detected\"\n\t\tconst help = \"consider using cmpopts.AcyclicTransformer\"\n\t\tset := strings.Join(ss, \"\\n\\t\")\n\t\tpanic(fmt.Sprintf(\"%s:\\n\\t%s\\n%s\", warning, set, help))\n\t}\n}\n\n// dynChecker tracks the state needed to periodically perform checks that\n// user provided functions are symmetric and deterministic.\n// The zero value is safe for immediate use.\ntype dynChecker struct{ curr, next int }\n\n// Next increments the state and reports whether a check should be performed.\n//\n// Checks occur every Nth function call, where N is a triangular number:\n//\n//\t0 1 3 6 10 15 21 28 36 45 55 66 78 91 105 120 136 153 171 190 ...\n//\n// See https://en.wikipedia.org/wiki/Triangular_number\n//\n// This sequence ensures that the cost of checks drops significantly as\n// the number of functions calls grows larger.\nfunc (dc *dynChecker) Next() bool {\n\tok := dc.curr == dc.next\n\tif ok {\n\t\tdc.curr = 0\n\t\tdc.next++\n\t}\n\tdc.curr++\n\treturn ok\n}\n\n// makeAddressable returns a value that is always addressable.\n// It returns the input verbatim if it is already addressable,\n// otherwise it creates a new value and returns an addressable copy.\nfunc makeAddressable(v reflect.Value) reflect.Value {\n\tif v.CanAddr() {\n\t\treturn v\n\t}\n\tvc := reflect.New(v.Type()).Elem()\n\tvc.Set(v)\n\treturn vc\n}\n"
  },
  {
    "path": "tests/vendor/github.com/google/go-cmp/cmp/export.go",
    "content": "// Copyright 2017, The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage cmp\n\nimport (\n\t\"reflect\"\n\t\"unsafe\"\n)\n\n// retrieveUnexportedField uses unsafe to forcibly retrieve any field from\n// a struct such that the value has read-write permissions.\n//\n// The parent struct, v, must be addressable, while f must be a StructField\n// describing the field to retrieve. If addr is false,\n// then the returned value will be shallowed copied to be non-addressable.\nfunc retrieveUnexportedField(v reflect.Value, f reflect.StructField, addr bool) reflect.Value {\n\tve := reflect.NewAt(f.Type, unsafe.Pointer(uintptr(unsafe.Pointer(v.UnsafeAddr()))+f.Offset)).Elem()\n\tif !addr {\n\t\t// A field is addressable if and only if the struct is addressable.\n\t\t// If the original parent value was not addressable, shallow copy the\n\t\t// value to make it non-addressable to avoid leaking an implementation\n\t\t// detail of how forcibly exporting a field works.\n\t\tif ve.Kind() == reflect.Interface && ve.IsNil() {\n\t\t\treturn reflect.Zero(f.Type)\n\t\t}\n\t\treturn reflect.ValueOf(ve.Interface()).Convert(f.Type)\n\t}\n\treturn ve\n}\n"
  },
  {
    "path": "tests/vendor/github.com/google/go-cmp/cmp/internal/diff/debug_disable.go",
    "content": "// Copyright 2017, The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build !cmp_debug\n// +build !cmp_debug\n\npackage diff\n\nvar debug debugger\n\ntype debugger struct{}\n\nfunc (debugger) Begin(_, _ int, f EqualFunc, _, _ *EditScript) EqualFunc {\n\treturn f\n}\nfunc (debugger) Update() {}\nfunc (debugger) Finish() {}\n"
  },
  {
    "path": "tests/vendor/github.com/google/go-cmp/cmp/internal/diff/debug_enable.go",
    "content": "// Copyright 2017, The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build cmp_debug\n// +build cmp_debug\n\npackage diff\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n)\n\n// The algorithm can be seen running in real-time by enabling debugging:\n//\tgo test -tags=cmp_debug -v\n//\n// Example output:\n//\t=== RUN   TestDifference/#34\n//\t┌───────────────────────────────┐\n//\t│ \\ · · · · · · · · · · · · · · │\n//\t│ · # · · · · · · · · · · · · · │\n//\t│ · \\ · · · · · · · · · · · · · │\n//\t│ · · \\ · · · · · · · · · · · · │\n//\t│ · · · X # · · · · · · · · · · │\n//\t│ · · · # \\ · · · · · · · · · · │\n//\t│ · · · · · # # · · · · · · · · │\n//\t│ · · · · · # \\ · · · · · · · · │\n//\t│ · · · · · · · \\ · · · · · · · │\n//\t│ · · · · · · · · \\ · · · · · · │\n//\t│ · · · · · · · · · \\ · · · · · │\n//\t│ · · · · · · · · · · \\ · · # · │\n//\t│ · · · · · · · · · · · \\ # # · │\n//\t│ · · · · · · · · · · · # # # · │\n//\t│ · · · · · · · · · · # # # # · │\n//\t│ · · · · · · · · · # # # # # · │\n//\t│ · · · · · · · · · · · · · · \\ │\n//\t└───────────────────────────────┘\n//\t[.Y..M.XY......YXYXY.|]\n//\n// The grid represents the edit-graph where the horizontal axis represents\n// list X and the vertical axis represents list Y. The start of the two lists\n// is the top-left, while the ends are the bottom-right. The '·' represents\n// an unexplored node in the graph. The '\\' indicates that the two symbols\n// from list X and Y are equal. The 'X' indicates that two symbols are similar\n// (but not exactly equal) to each other. The '#' indicates that the two symbols\n// are different (and not similar). The algorithm traverses this graph trying to\n// make the paths starting in the top-left and the bottom-right connect.\n//\n// The series of '.', 'X', 'Y', and 'M' characters at the bottom represents\n// the currently established path from the forward and reverse searches,\n// separated by a '|' character.\n\nconst (\n\tupdateDelay  = 100 * time.Millisecond\n\tfinishDelay  = 500 * time.Millisecond\n\tansiTerminal = true // ANSI escape codes used to move terminal cursor\n)\n\nvar debug debugger\n\ntype debugger struct {\n\tsync.Mutex\n\tp1, p2           EditScript\n\tfwdPath, revPath *EditScript\n\tgrid             []byte\n\tlines            int\n}\n\nfunc (dbg *debugger) Begin(nx, ny int, f EqualFunc, p1, p2 *EditScript) EqualFunc {\n\tdbg.Lock()\n\tdbg.fwdPath, dbg.revPath = p1, p2\n\ttop := \"┌─\" + strings.Repeat(\"──\", nx) + \"┐\\n\"\n\trow := \"│ \" + strings.Repeat(\"· \", nx) + \"│\\n\"\n\tbtm := \"└─\" + strings.Repeat(\"──\", nx) + \"┘\\n\"\n\tdbg.grid = []byte(top + strings.Repeat(row, ny) + btm)\n\tdbg.lines = strings.Count(dbg.String(), \"\\n\")\n\tfmt.Print(dbg)\n\n\t// Wrap the EqualFunc so that we can intercept each result.\n\treturn func(ix, iy int) (r Result) {\n\t\tcell := dbg.grid[len(top)+iy*len(row):][len(\"│ \")+len(\"· \")*ix:][:len(\"·\")]\n\t\tfor i := range cell {\n\t\t\tcell[i] = 0 // Zero out the multiple bytes of UTF-8 middle-dot\n\t\t}\n\t\tswitch r = f(ix, iy); {\n\t\tcase r.Equal():\n\t\t\tcell[0] = '\\\\'\n\t\tcase r.Similar():\n\t\t\tcell[0] = 'X'\n\t\tdefault:\n\t\t\tcell[0] = '#'\n\t\t}\n\t\treturn\n\t}\n}\n\nfunc (dbg *debugger) Update() {\n\tdbg.print(updateDelay)\n}\n\nfunc (dbg *debugger) Finish() {\n\tdbg.print(finishDelay)\n\tdbg.Unlock()\n}\n\nfunc (dbg *debugger) String() string {\n\tdbg.p1, dbg.p2 = *dbg.fwdPath, dbg.p2[:0]\n\tfor i := len(*dbg.revPath) - 1; i >= 0; i-- {\n\t\tdbg.p2 = append(dbg.p2, (*dbg.revPath)[i])\n\t}\n\treturn fmt.Sprintf(\"%s[%v|%v]\\n\\n\", dbg.grid, dbg.p1, dbg.p2)\n}\n\nfunc (dbg *debugger) print(d time.Duration) {\n\tif ansiTerminal {\n\t\tfmt.Printf(\"\\x1b[%dA\", dbg.lines) // Reset terminal cursor\n\t}\n\tfmt.Print(dbg)\n\ttime.Sleep(d)\n}\n"
  },
  {
    "path": "tests/vendor/github.com/google/go-cmp/cmp/internal/diff/diff.go",
    "content": "// Copyright 2017, The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package diff implements an algorithm for producing edit-scripts.\n// The edit-script is a sequence of operations needed to transform one list\n// of symbols into another (or vice-versa). The edits allowed are insertions,\n// deletions, and modifications. The summation of all edits is called the\n// Levenshtein distance as this problem is well-known in computer science.\n//\n// This package prioritizes performance over accuracy. That is, the run time\n// is more important than obtaining a minimal Levenshtein distance.\npackage diff\n\nimport (\n\t\"math/rand\"\n\t\"time\"\n\n\t\"github.com/google/go-cmp/cmp/internal/flags\"\n)\n\n// EditType represents a single operation within an edit-script.\ntype EditType uint8\n\nconst (\n\t// Identity indicates that a symbol pair is identical in both list X and Y.\n\tIdentity EditType = iota\n\t// UniqueX indicates that a symbol only exists in X and not Y.\n\tUniqueX\n\t// UniqueY indicates that a symbol only exists in Y and not X.\n\tUniqueY\n\t// Modified indicates that a symbol pair is a modification of each other.\n\tModified\n)\n\n// EditScript represents the series of differences between two lists.\ntype EditScript []EditType\n\n// String returns a human-readable string representing the edit-script where\n// Identity, UniqueX, UniqueY, and Modified are represented by the\n// '.', 'X', 'Y', and 'M' characters, respectively.\nfunc (es EditScript) String() string {\n\tb := make([]byte, len(es))\n\tfor i, e := range es {\n\t\tswitch e {\n\t\tcase Identity:\n\t\t\tb[i] = '.'\n\t\tcase UniqueX:\n\t\t\tb[i] = 'X'\n\t\tcase UniqueY:\n\t\t\tb[i] = 'Y'\n\t\tcase Modified:\n\t\t\tb[i] = 'M'\n\t\tdefault:\n\t\t\tpanic(\"invalid edit-type\")\n\t\t}\n\t}\n\treturn string(b)\n}\n\n// stats returns a histogram of the number of each type of edit operation.\nfunc (es EditScript) stats() (s struct{ NI, NX, NY, NM int }) {\n\tfor _, e := range es {\n\t\tswitch e {\n\t\tcase Identity:\n\t\t\ts.NI++\n\t\tcase UniqueX:\n\t\t\ts.NX++\n\t\tcase UniqueY:\n\t\t\ts.NY++\n\t\tcase Modified:\n\t\t\ts.NM++\n\t\tdefault:\n\t\t\tpanic(\"invalid edit-type\")\n\t\t}\n\t}\n\treturn\n}\n\n// Dist is the Levenshtein distance and is guaranteed to be 0 if and only if\n// lists X and Y are equal.\nfunc (es EditScript) Dist() int { return len(es) - es.stats().NI }\n\n// LenX is the length of the X list.\nfunc (es EditScript) LenX() int { return len(es) - es.stats().NY }\n\n// LenY is the length of the Y list.\nfunc (es EditScript) LenY() int { return len(es) - es.stats().NX }\n\n// EqualFunc reports whether the symbols at indexes ix and iy are equal.\n// When called by Difference, the index is guaranteed to be within nx and ny.\ntype EqualFunc func(ix int, iy int) Result\n\n// Result is the result of comparison.\n// NumSame is the number of sub-elements that are equal.\n// NumDiff is the number of sub-elements that are not equal.\ntype Result struct{ NumSame, NumDiff int }\n\n// BoolResult returns a Result that is either Equal or not Equal.\nfunc BoolResult(b bool) Result {\n\tif b {\n\t\treturn Result{NumSame: 1} // Equal, Similar\n\t} else {\n\t\treturn Result{NumDiff: 2} // Not Equal, not Similar\n\t}\n}\n\n// Equal indicates whether the symbols are equal. Two symbols are equal\n// if and only if NumDiff == 0. If Equal, then they are also Similar.\nfunc (r Result) Equal() bool { return r.NumDiff == 0 }\n\n// Similar indicates whether two symbols are similar and may be represented\n// by using the Modified type. As a special case, we consider binary comparisons\n// (i.e., those that return Result{1, 0} or Result{0, 1}) to be similar.\n//\n// The exact ratio of NumSame to NumDiff to determine similarity may change.\nfunc (r Result) Similar() bool {\n\t// Use NumSame+1 to offset NumSame so that binary comparisons are similar.\n\treturn r.NumSame+1 >= r.NumDiff\n}\n\nvar randBool = rand.New(rand.NewSource(time.Now().Unix())).Intn(2) == 0\n\n// Difference reports whether two lists of lengths nx and ny are equal\n// given the definition of equality provided as f.\n//\n// This function returns an edit-script, which is a sequence of operations\n// needed to convert one list into the other. The following invariants for\n// the edit-script are maintained:\n//   - eq == (es.Dist()==0)\n//   - nx == es.LenX()\n//   - ny == es.LenY()\n//\n// This algorithm is not guaranteed to be an optimal solution (i.e., one that\n// produces an edit-script with a minimal Levenshtein distance). This algorithm\n// favors performance over optimality. The exact output is not guaranteed to\n// be stable and may change over time.\nfunc Difference(nx, ny int, f EqualFunc) (es EditScript) {\n\t// This algorithm is based on traversing what is known as an \"edit-graph\".\n\t// See Figure 1 from \"An O(ND) Difference Algorithm and Its Variations\"\n\t// by Eugene W. Myers. Since D can be as large as N itself, this is\n\t// effectively O(N^2). Unlike the algorithm from that paper, we are not\n\t// interested in the optimal path, but at least some \"decent\" path.\n\t//\n\t// For example, let X and Y be lists of symbols:\n\t//\tX = [A B C A B B A]\n\t//\tY = [C B A B A C]\n\t//\n\t// The edit-graph can be drawn as the following:\n\t//\t   A B C A B B A\n\t//\t  ┌─────────────┐\n\t//\tC │_|_|\\|_|_|_|_│ 0\n\t//\tB │_|\\|_|_|\\|\\|_│ 1\n\t//\tA │\\|_|_|\\|_|_|\\│ 2\n\t//\tB │_|\\|_|_|\\|\\|_│ 3\n\t//\tA │\\|_|_|\\|_|_|\\│ 4\n\t//\tC │ | |\\| | | | │ 5\n\t//\t  └─────────────┘ 6\n\t//\t   0 1 2 3 4 5 6 7\n\t//\n\t// List X is written along the horizontal axis, while list Y is written\n\t// along the vertical axis. At any point on this grid, if the symbol in\n\t// list X matches the corresponding symbol in list Y, then a '\\' is drawn.\n\t// The goal of any minimal edit-script algorithm is to find a path from the\n\t// top-left corner to the bottom-right corner, while traveling through the\n\t// fewest horizontal or vertical edges.\n\t// A horizontal edge is equivalent to inserting a symbol from list X.\n\t// A vertical edge is equivalent to inserting a symbol from list Y.\n\t// A diagonal edge is equivalent to a matching symbol between both X and Y.\n\n\t// Invariants:\n\t//   - 0 ≤ fwdPath.X ≤ (fwdFrontier.X, revFrontier.X) ≤ revPath.X ≤ nx\n\t//   - 0 ≤ fwdPath.Y ≤ (fwdFrontier.Y, revFrontier.Y) ≤ revPath.Y ≤ ny\n\t//\n\t// In general:\n\t//   - fwdFrontier.X < revFrontier.X\n\t//   - fwdFrontier.Y < revFrontier.Y\n\t//\n\t// Unless, it is time for the algorithm to terminate.\n\tfwdPath := path{+1, point{0, 0}, make(EditScript, 0, (nx+ny)/2)}\n\trevPath := path{-1, point{nx, ny}, make(EditScript, 0)}\n\tfwdFrontier := fwdPath.point // Forward search frontier\n\trevFrontier := revPath.point // Reverse search frontier\n\n\t// Search budget bounds the cost of searching for better paths.\n\t// The longest sequence of non-matching symbols that can be tolerated is\n\t// approximately the square-root of the search budget.\n\tsearchBudget := 4 * (nx + ny) // O(n)\n\n\t// Running the tests with the \"cmp_debug\" build tag prints a visualization\n\t// of the algorithm running in real-time. This is educational for\n\t// understanding how the algorithm works. See debug_enable.go.\n\tf = debug.Begin(nx, ny, f, &fwdPath.es, &revPath.es)\n\n\t// The algorithm below is a greedy, meet-in-the-middle algorithm for\n\t// computing sub-optimal edit-scripts between two lists.\n\t//\n\t// The algorithm is approximately as follows:\n\t//   - Searching for differences switches back-and-forth between\n\t//     a search that starts at the beginning (the top-left corner), and\n\t//     a search that starts at the end (the bottom-right corner).\n\t//     The goal of the search is connect with the search\n\t//     from the opposite corner.\n\t//   - As we search, we build a path in a greedy manner,\n\t//     where the first match seen is added to the path (this is sub-optimal,\n\t//     but provides a decent result in practice). When matches are found,\n\t//     we try the next pair of symbols in the lists and follow all matches\n\t//     as far as possible.\n\t//   - When searching for matches, we search along a diagonal going through\n\t//     through the \"frontier\" point. If no matches are found,\n\t//     we advance the frontier towards the opposite corner.\n\t//   - This algorithm terminates when either the X coordinates or the\n\t//     Y coordinates of the forward and reverse frontier points ever intersect.\n\n\t// This algorithm is correct even if searching only in the forward direction\n\t// or in the reverse direction. We do both because it is commonly observed\n\t// that two lists commonly differ because elements were added to the front\n\t// or end of the other list.\n\t//\n\t// Non-deterministically start with either the forward or reverse direction\n\t// to introduce some deliberate instability so that we have the flexibility\n\t// to change this algorithm in the future.\n\tif flags.Deterministic || randBool {\n\t\tgoto forwardSearch\n\t} else {\n\t\tgoto reverseSearch\n\t}\n\nforwardSearch:\n\t{\n\t\t// Forward search from the beginning.\n\t\tif fwdFrontier.X >= revFrontier.X || fwdFrontier.Y >= revFrontier.Y || searchBudget == 0 {\n\t\t\tgoto finishSearch\n\t\t}\n\t\tfor stop1, stop2, i := false, false, 0; !(stop1 && stop2) && searchBudget > 0; i++ {\n\t\t\t// Search in a diagonal pattern for a match.\n\t\t\tz := zigzag(i)\n\t\t\tp := point{fwdFrontier.X + z, fwdFrontier.Y - z}\n\t\t\tswitch {\n\t\t\tcase p.X >= revPath.X || p.Y < fwdPath.Y:\n\t\t\t\tstop1 = true // Hit top-right corner\n\t\t\tcase p.Y >= revPath.Y || p.X < fwdPath.X:\n\t\t\t\tstop2 = true // Hit bottom-left corner\n\t\t\tcase f(p.X, p.Y).Equal():\n\t\t\t\t// Match found, so connect the path to this point.\n\t\t\t\tfwdPath.connect(p, f)\n\t\t\t\tfwdPath.append(Identity)\n\t\t\t\t// Follow sequence of matches as far as possible.\n\t\t\t\tfor fwdPath.X < revPath.X && fwdPath.Y < revPath.Y {\n\t\t\t\t\tif !f(fwdPath.X, fwdPath.Y).Equal() {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tfwdPath.append(Identity)\n\t\t\t\t}\n\t\t\t\tfwdFrontier = fwdPath.point\n\t\t\t\tstop1, stop2 = true, true\n\t\t\tdefault:\n\t\t\t\tsearchBudget-- // Match not found\n\t\t\t}\n\t\t\tdebug.Update()\n\t\t}\n\t\t// Advance the frontier towards reverse point.\n\t\tif revPath.X-fwdFrontier.X >= revPath.Y-fwdFrontier.Y {\n\t\t\tfwdFrontier.X++\n\t\t} else {\n\t\t\tfwdFrontier.Y++\n\t\t}\n\t\tgoto reverseSearch\n\t}\n\nreverseSearch:\n\t{\n\t\t// Reverse search from the end.\n\t\tif fwdFrontier.X >= revFrontier.X || fwdFrontier.Y >= revFrontier.Y || searchBudget == 0 {\n\t\t\tgoto finishSearch\n\t\t}\n\t\tfor stop1, stop2, i := false, false, 0; !(stop1 && stop2) && searchBudget > 0; i++ {\n\t\t\t// Search in a diagonal pattern for a match.\n\t\t\tz := zigzag(i)\n\t\t\tp := point{revFrontier.X - z, revFrontier.Y + z}\n\t\t\tswitch {\n\t\t\tcase fwdPath.X >= p.X || revPath.Y < p.Y:\n\t\t\t\tstop1 = true // Hit bottom-left corner\n\t\t\tcase fwdPath.Y >= p.Y || revPath.X < p.X:\n\t\t\t\tstop2 = true // Hit top-right corner\n\t\t\tcase f(p.X-1, p.Y-1).Equal():\n\t\t\t\t// Match found, so connect the path to this point.\n\t\t\t\trevPath.connect(p, f)\n\t\t\t\trevPath.append(Identity)\n\t\t\t\t// Follow sequence of matches as far as possible.\n\t\t\t\tfor fwdPath.X < revPath.X && fwdPath.Y < revPath.Y {\n\t\t\t\t\tif !f(revPath.X-1, revPath.Y-1).Equal() {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\trevPath.append(Identity)\n\t\t\t\t}\n\t\t\t\trevFrontier = revPath.point\n\t\t\t\tstop1, stop2 = true, true\n\t\t\tdefault:\n\t\t\t\tsearchBudget-- // Match not found\n\t\t\t}\n\t\t\tdebug.Update()\n\t\t}\n\t\t// Advance the frontier towards forward point.\n\t\tif revFrontier.X-fwdPath.X >= revFrontier.Y-fwdPath.Y {\n\t\t\trevFrontier.X--\n\t\t} else {\n\t\t\trevFrontier.Y--\n\t\t}\n\t\tgoto forwardSearch\n\t}\n\nfinishSearch:\n\t// Join the forward and reverse paths and then append the reverse path.\n\tfwdPath.connect(revPath.point, f)\n\tfor i := len(revPath.es) - 1; i >= 0; i-- {\n\t\tt := revPath.es[i]\n\t\trevPath.es = revPath.es[:i]\n\t\tfwdPath.append(t)\n\t}\n\tdebug.Finish()\n\treturn fwdPath.es\n}\n\ntype path struct {\n\tdir   int // +1 if forward, -1 if reverse\n\tpoint     // Leading point of the EditScript path\n\tes    EditScript\n}\n\n// connect appends any necessary Identity, Modified, UniqueX, or UniqueY types\n// to the edit-script to connect p.point to dst.\nfunc (p *path) connect(dst point, f EqualFunc) {\n\tif p.dir > 0 {\n\t\t// Connect in forward direction.\n\t\tfor dst.X > p.X && dst.Y > p.Y {\n\t\t\tswitch r := f(p.X, p.Y); {\n\t\t\tcase r.Equal():\n\t\t\t\tp.append(Identity)\n\t\t\tcase r.Similar():\n\t\t\t\tp.append(Modified)\n\t\t\tcase dst.X-p.X >= dst.Y-p.Y:\n\t\t\t\tp.append(UniqueX)\n\t\t\tdefault:\n\t\t\t\tp.append(UniqueY)\n\t\t\t}\n\t\t}\n\t\tfor dst.X > p.X {\n\t\t\tp.append(UniqueX)\n\t\t}\n\t\tfor dst.Y > p.Y {\n\t\t\tp.append(UniqueY)\n\t\t}\n\t} else {\n\t\t// Connect in reverse direction.\n\t\tfor p.X > dst.X && p.Y > dst.Y {\n\t\t\tswitch r := f(p.X-1, p.Y-1); {\n\t\t\tcase r.Equal():\n\t\t\t\tp.append(Identity)\n\t\t\tcase r.Similar():\n\t\t\t\tp.append(Modified)\n\t\t\tcase p.Y-dst.Y >= p.X-dst.X:\n\t\t\t\tp.append(UniqueY)\n\t\t\tdefault:\n\t\t\t\tp.append(UniqueX)\n\t\t\t}\n\t\t}\n\t\tfor p.X > dst.X {\n\t\t\tp.append(UniqueX)\n\t\t}\n\t\tfor p.Y > dst.Y {\n\t\t\tp.append(UniqueY)\n\t\t}\n\t}\n}\n\nfunc (p *path) append(t EditType) {\n\tp.es = append(p.es, t)\n\tswitch t {\n\tcase Identity, Modified:\n\t\tp.add(p.dir, p.dir)\n\tcase UniqueX:\n\t\tp.add(p.dir, 0)\n\tcase UniqueY:\n\t\tp.add(0, p.dir)\n\t}\n\tdebug.Update()\n}\n\ntype point struct{ X, Y int }\n\nfunc (p *point) add(dx, dy int) { p.X += dx; p.Y += dy }\n\n// zigzag maps a consecutive sequence of integers to a zig-zag sequence.\n//\n//\t[0 1 2 3 4 5 ...] => [0 -1 +1 -2 +2 ...]\nfunc zigzag(x int) int {\n\tif x&1 != 0 {\n\t\tx = ^x\n\t}\n\treturn x >> 1\n}\n"
  },
  {
    "path": "tests/vendor/github.com/google/go-cmp/cmp/internal/flags/flags.go",
    "content": "// Copyright 2019, The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage flags\n\n// Deterministic controls whether the output of Diff should be deterministic.\n// This is only used for testing.\nvar Deterministic bool\n"
  },
  {
    "path": "tests/vendor/github.com/google/go-cmp/cmp/internal/function/func.go",
    "content": "// Copyright 2017, The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package function provides functionality for identifying function types.\npackage function\n\nimport (\n\t\"reflect\"\n\t\"regexp\"\n\t\"runtime\"\n\t\"strings\"\n)\n\ntype funcType int\n\nconst (\n\t_ funcType = iota\n\n\ttbFunc  // func(T) bool\n\tttbFunc // func(T, T) bool\n\tttiFunc // func(T, T) int\n\ttrbFunc // func(T, R) bool\n\ttibFunc // func(T, I) bool\n\ttrFunc  // func(T) R\n\n\tEqual             = ttbFunc // func(T, T) bool\n\tEqualAssignable   = tibFunc // func(T, I) bool; encapsulates func(T, T) bool\n\tTransformer       = trFunc  // func(T) R\n\tValueFilter       = ttbFunc // func(T, T) bool\n\tLess              = ttbFunc // func(T, T) bool\n\tCompare           = ttiFunc // func(T, T) int\n\tValuePredicate    = tbFunc  // func(T) bool\n\tKeyValuePredicate = trbFunc // func(T, R) bool\n)\n\nvar boolType = reflect.TypeOf(true)\nvar intType = reflect.TypeOf(0)\n\n// IsType reports whether the reflect.Type is of the specified function type.\nfunc IsType(t reflect.Type, ft funcType) bool {\n\tif t == nil || t.Kind() != reflect.Func || t.IsVariadic() {\n\t\treturn false\n\t}\n\tni, no := t.NumIn(), t.NumOut()\n\tswitch ft {\n\tcase tbFunc: // func(T) bool\n\t\tif ni == 1 && no == 1 && t.Out(0) == boolType {\n\t\t\treturn true\n\t\t}\n\tcase ttbFunc: // func(T, T) bool\n\t\tif ni == 2 && no == 1 && t.In(0) == t.In(1) && t.Out(0) == boolType {\n\t\t\treturn true\n\t\t}\n\tcase ttiFunc: // func(T, T) int\n\t\tif ni == 2 && no == 1 && t.In(0) == t.In(1) && t.Out(0) == intType {\n\t\t\treturn true\n\t\t}\n\tcase trbFunc: // func(T, R) bool\n\t\tif ni == 2 && no == 1 && t.Out(0) == boolType {\n\t\t\treturn true\n\t\t}\n\tcase tibFunc: // func(T, I) bool\n\t\tif ni == 2 && no == 1 && t.In(0).AssignableTo(t.In(1)) && t.Out(0) == boolType {\n\t\t\treturn true\n\t\t}\n\tcase trFunc: // func(T) R\n\t\tif ni == 1 && no == 1 {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nvar lastIdentRx = regexp.MustCompile(`[_\\p{L}][_\\p{L}\\p{N}]*$`)\n\n// NameOf returns the name of the function value.\nfunc NameOf(v reflect.Value) string {\n\tfnc := runtime.FuncForPC(v.Pointer())\n\tif fnc == nil {\n\t\treturn \"<unknown>\"\n\t}\n\tfullName := fnc.Name() // e.g., \"long/path/name/mypkg.(*MyType).(long/path/name/mypkg.myMethod)-fm\"\n\n\t// Method closures have a \"-fm\" suffix.\n\tfullName = strings.TrimSuffix(fullName, \"-fm\")\n\n\tvar name string\n\tfor len(fullName) > 0 {\n\t\tinParen := strings.HasSuffix(fullName, \")\")\n\t\tfullName = strings.TrimSuffix(fullName, \")\")\n\n\t\ts := lastIdentRx.FindString(fullName)\n\t\tif s == \"\" {\n\t\t\tbreak\n\t\t}\n\t\tname = s + \".\" + name\n\t\tfullName = strings.TrimSuffix(fullName, s)\n\n\t\tif i := strings.LastIndexByte(fullName, '('); inParen && i >= 0 {\n\t\t\tfullName = fullName[:i]\n\t\t}\n\t\tfullName = strings.TrimSuffix(fullName, \".\")\n\t}\n\treturn strings.TrimSuffix(name, \".\")\n}\n"
  },
  {
    "path": "tests/vendor/github.com/google/go-cmp/cmp/internal/value/name.go",
    "content": "// Copyright 2020, The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage value\n\nimport (\n\t\"reflect\"\n\t\"strconv\"\n)\n\nvar anyType = reflect.TypeOf((*interface{})(nil)).Elem()\n\n// TypeString is nearly identical to reflect.Type.String,\n// but has an additional option to specify that full type names be used.\nfunc TypeString(t reflect.Type, qualified bool) string {\n\treturn string(appendTypeName(nil, t, qualified, false))\n}\n\nfunc appendTypeName(b []byte, t reflect.Type, qualified, elideFunc bool) []byte {\n\t// BUG: Go reflection provides no way to disambiguate two named types\n\t// of the same name and within the same package,\n\t// but declared within the namespace of different functions.\n\n\t// Use the \"any\" alias instead of \"interface{}\" for better readability.\n\tif t == anyType {\n\t\treturn append(b, \"any\"...)\n\t}\n\n\t// Named type.\n\tif t.Name() != \"\" {\n\t\tif qualified && t.PkgPath() != \"\" {\n\t\t\tb = append(b, '\"')\n\t\t\tb = append(b, t.PkgPath()...)\n\t\t\tb = append(b, '\"')\n\t\t\tb = append(b, '.')\n\t\t\tb = append(b, t.Name()...)\n\t\t} else {\n\t\t\tb = append(b, t.String()...)\n\t\t}\n\t\treturn b\n\t}\n\n\t// Unnamed type.\n\tswitch k := t.Kind(); k {\n\tcase reflect.Bool, reflect.String, reflect.UnsafePointer,\n\t\treflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64,\n\t\treflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr,\n\t\treflect.Float32, reflect.Float64, reflect.Complex64, reflect.Complex128:\n\t\tb = append(b, k.String()...)\n\tcase reflect.Chan:\n\t\tif t.ChanDir() == reflect.RecvDir {\n\t\t\tb = append(b, \"<-\"...)\n\t\t}\n\t\tb = append(b, \"chan\"...)\n\t\tif t.ChanDir() == reflect.SendDir {\n\t\t\tb = append(b, \"<-\"...)\n\t\t}\n\t\tb = append(b, ' ')\n\t\tb = appendTypeName(b, t.Elem(), qualified, false)\n\tcase reflect.Func:\n\t\tif !elideFunc {\n\t\t\tb = append(b, \"func\"...)\n\t\t}\n\t\tb = append(b, '(')\n\t\tfor i := 0; i < t.NumIn(); i++ {\n\t\t\tif i > 0 {\n\t\t\t\tb = append(b, \", \"...)\n\t\t\t}\n\t\t\tif i == t.NumIn()-1 && t.IsVariadic() {\n\t\t\t\tb = append(b, \"...\"...)\n\t\t\t\tb = appendTypeName(b, t.In(i).Elem(), qualified, false)\n\t\t\t} else {\n\t\t\t\tb = appendTypeName(b, t.In(i), qualified, false)\n\t\t\t}\n\t\t}\n\t\tb = append(b, ')')\n\t\tswitch t.NumOut() {\n\t\tcase 0:\n\t\t\t// Do nothing\n\t\tcase 1:\n\t\t\tb = append(b, ' ')\n\t\t\tb = appendTypeName(b, t.Out(0), qualified, false)\n\t\tdefault:\n\t\t\tb = append(b, \" (\"...)\n\t\t\tfor i := 0; i < t.NumOut(); i++ {\n\t\t\t\tif i > 0 {\n\t\t\t\t\tb = append(b, \", \"...)\n\t\t\t\t}\n\t\t\t\tb = appendTypeName(b, t.Out(i), qualified, false)\n\t\t\t}\n\t\t\tb = append(b, ')')\n\t\t}\n\tcase reflect.Struct:\n\t\tb = append(b, \"struct{ \"...)\n\t\tfor i := 0; i < t.NumField(); i++ {\n\t\t\tif i > 0 {\n\t\t\t\tb = append(b, \"; \"...)\n\t\t\t}\n\t\t\tsf := t.Field(i)\n\t\t\tif !sf.Anonymous {\n\t\t\t\tif qualified && sf.PkgPath != \"\" {\n\t\t\t\t\tb = append(b, '\"')\n\t\t\t\t\tb = append(b, sf.PkgPath...)\n\t\t\t\t\tb = append(b, '\"')\n\t\t\t\t\tb = append(b, '.')\n\t\t\t\t}\n\t\t\t\tb = append(b, sf.Name...)\n\t\t\t\tb = append(b, ' ')\n\t\t\t}\n\t\t\tb = appendTypeName(b, sf.Type, qualified, false)\n\t\t\tif sf.Tag != \"\" {\n\t\t\t\tb = append(b, ' ')\n\t\t\t\tb = strconv.AppendQuote(b, string(sf.Tag))\n\t\t\t}\n\t\t}\n\t\tif b[len(b)-1] == ' ' {\n\t\t\tb = b[:len(b)-1]\n\t\t} else {\n\t\t\tb = append(b, ' ')\n\t\t}\n\t\tb = append(b, '}')\n\tcase reflect.Slice, reflect.Array:\n\t\tb = append(b, '[')\n\t\tif k == reflect.Array {\n\t\t\tb = strconv.AppendUint(b, uint64(t.Len()), 10)\n\t\t}\n\t\tb = append(b, ']')\n\t\tb = appendTypeName(b, t.Elem(), qualified, false)\n\tcase reflect.Map:\n\t\tb = append(b, \"map[\"...)\n\t\tb = appendTypeName(b, t.Key(), qualified, false)\n\t\tb = append(b, ']')\n\t\tb = appendTypeName(b, t.Elem(), qualified, false)\n\tcase reflect.Ptr:\n\t\tb = append(b, '*')\n\t\tb = appendTypeName(b, t.Elem(), qualified, false)\n\tcase reflect.Interface:\n\t\tb = append(b, \"interface{ \"...)\n\t\tfor i := 0; i < t.NumMethod(); i++ {\n\t\t\tif i > 0 {\n\t\t\t\tb = append(b, \"; \"...)\n\t\t\t}\n\t\t\tm := t.Method(i)\n\t\t\tif qualified && m.PkgPath != \"\" {\n\t\t\t\tb = append(b, '\"')\n\t\t\t\tb = append(b, m.PkgPath...)\n\t\t\t\tb = append(b, '\"')\n\t\t\t\tb = append(b, '.')\n\t\t\t}\n\t\t\tb = append(b, m.Name...)\n\t\t\tb = appendTypeName(b, m.Type, qualified, true)\n\t\t}\n\t\tif b[len(b)-1] == ' ' {\n\t\t\tb = b[:len(b)-1]\n\t\t} else {\n\t\t\tb = append(b, ' ')\n\t\t}\n\t\tb = append(b, '}')\n\tdefault:\n\t\tpanic(\"invalid kind: \" + k.String())\n\t}\n\treturn b\n}\n"
  },
  {
    "path": "tests/vendor/github.com/google/go-cmp/cmp/internal/value/pointer.go",
    "content": "// Copyright 2018, The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage value\n\nimport (\n\t\"reflect\"\n\t\"unsafe\"\n)\n\n// Pointer is an opaque typed pointer and is guaranteed to be comparable.\ntype Pointer struct {\n\tp unsafe.Pointer\n\tt reflect.Type\n}\n\n// PointerOf returns a Pointer from v, which must be a\n// reflect.Ptr, reflect.Slice, or reflect.Map.\nfunc PointerOf(v reflect.Value) Pointer {\n\t// The proper representation of a pointer is unsafe.Pointer,\n\t// which is necessary if the GC ever uses a moving collector.\n\treturn Pointer{unsafe.Pointer(v.Pointer()), v.Type()}\n}\n\n// IsNil reports whether the pointer is nil.\nfunc (p Pointer) IsNil() bool {\n\treturn p.p == nil\n}\n\n// Uintptr returns the pointer as a uintptr.\nfunc (p Pointer) Uintptr() uintptr {\n\treturn uintptr(p.p)\n}\n"
  },
  {
    "path": "tests/vendor/github.com/google/go-cmp/cmp/internal/value/sort.go",
    "content": "// Copyright 2017, The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage value\n\nimport (\n\t\"fmt\"\n\t\"math\"\n\t\"reflect\"\n\t\"sort\"\n)\n\n// SortKeys sorts a list of map keys, deduplicating keys if necessary.\n// The type of each value must be comparable.\nfunc SortKeys(vs []reflect.Value) []reflect.Value {\n\tif len(vs) == 0 {\n\t\treturn vs\n\t}\n\n\t// Sort the map keys.\n\tsort.SliceStable(vs, func(i, j int) bool { return isLess(vs[i], vs[j]) })\n\n\t// Deduplicate keys (fails for NaNs).\n\tvs2 := vs[:1]\n\tfor _, v := range vs[1:] {\n\t\tif isLess(vs2[len(vs2)-1], v) {\n\t\t\tvs2 = append(vs2, v)\n\t\t}\n\t}\n\treturn vs2\n}\n\n// isLess is a generic function for sorting arbitrary map keys.\n// The inputs must be of the same type and must be comparable.\nfunc isLess(x, y reflect.Value) bool {\n\tswitch x.Type().Kind() {\n\tcase reflect.Bool:\n\t\treturn !x.Bool() && y.Bool()\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\treturn x.Int() < y.Int()\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\treturn x.Uint() < y.Uint()\n\tcase reflect.Float32, reflect.Float64:\n\t\t// NOTE: This does not sort -0 as less than +0\n\t\t// since Go maps treat -0 and +0 as equal keys.\n\t\tfx, fy := x.Float(), y.Float()\n\t\treturn fx < fy || math.IsNaN(fx) && !math.IsNaN(fy)\n\tcase reflect.Complex64, reflect.Complex128:\n\t\tcx, cy := x.Complex(), y.Complex()\n\t\trx, ix, ry, iy := real(cx), imag(cx), real(cy), imag(cy)\n\t\tif rx == ry || (math.IsNaN(rx) && math.IsNaN(ry)) {\n\t\t\treturn ix < iy || math.IsNaN(ix) && !math.IsNaN(iy)\n\t\t}\n\t\treturn rx < ry || math.IsNaN(rx) && !math.IsNaN(ry)\n\tcase reflect.Ptr, reflect.UnsafePointer, reflect.Chan:\n\t\treturn x.Pointer() < y.Pointer()\n\tcase reflect.String:\n\t\treturn x.String() < y.String()\n\tcase reflect.Array:\n\t\tfor i := 0; i < x.Len(); i++ {\n\t\t\tif isLess(x.Index(i), y.Index(i)) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tif isLess(y.Index(i), x.Index(i)) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\treturn false\n\tcase reflect.Struct:\n\t\tfor i := 0; i < x.NumField(); i++ {\n\t\t\tif isLess(x.Field(i), y.Field(i)) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tif isLess(y.Field(i), x.Field(i)) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\treturn false\n\tcase reflect.Interface:\n\t\tvx, vy := x.Elem(), y.Elem()\n\t\tif !vx.IsValid() || !vy.IsValid() {\n\t\t\treturn !vx.IsValid() && vy.IsValid()\n\t\t}\n\t\ttx, ty := vx.Type(), vy.Type()\n\t\tif tx == ty {\n\t\t\treturn isLess(x.Elem(), y.Elem())\n\t\t}\n\t\tif tx.Kind() != ty.Kind() {\n\t\t\treturn vx.Kind() < vy.Kind()\n\t\t}\n\t\tif tx.String() != ty.String() {\n\t\t\treturn tx.String() < ty.String()\n\t\t}\n\t\tif tx.PkgPath() != ty.PkgPath() {\n\t\t\treturn tx.PkgPath() < ty.PkgPath()\n\t\t}\n\t\t// This can happen in rare situations, so we fallback to just comparing\n\t\t// the unique pointer for a reflect.Type. This guarantees deterministic\n\t\t// ordering within a program, but it is obviously not stable.\n\t\treturn reflect.ValueOf(vx.Type()).Pointer() < reflect.ValueOf(vy.Type()).Pointer()\n\tdefault:\n\t\t// Must be Func, Map, or Slice; which are not comparable.\n\t\tpanic(fmt.Sprintf(\"%T is not comparable\", x.Type()))\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/github.com/google/go-cmp/cmp/options.go",
    "content": "// Copyright 2017, The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage cmp\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"regexp\"\n\t\"strings\"\n\n\t\"github.com/google/go-cmp/cmp/internal/function\"\n)\n\n// Option configures for specific behavior of [Equal] and [Diff]. In particular,\n// the fundamental Option functions ([Ignore], [Transformer], and [Comparer]),\n// configure how equality is determined.\n//\n// The fundamental options may be composed with filters ([FilterPath] and\n// [FilterValues]) to control the scope over which they are applied.\n//\n// The [github.com/google/go-cmp/cmp/cmpopts] package provides helper functions\n// for creating options that may be used with [Equal] and [Diff].\ntype Option interface {\n\t// filter applies all filters and returns the option that remains.\n\t// Each option may only read s.curPath and call s.callTTBFunc.\n\t//\n\t// An Options is returned only if multiple comparers or transformers\n\t// can apply simultaneously and will only contain values of those types\n\t// or sub-Options containing values of those types.\n\tfilter(s *state, t reflect.Type, vx, vy reflect.Value) applicableOption\n}\n\n// applicableOption represents the following types:\n//\n//\tFundamental: ignore | validator | *comparer | *transformer\n//\tGrouping:    Options\ntype applicableOption interface {\n\tOption\n\n\t// apply executes the option, which may mutate s or panic.\n\tapply(s *state, vx, vy reflect.Value)\n}\n\n// coreOption represents the following types:\n//\n//\tFundamental: ignore | validator | *comparer | *transformer\n//\tFilters:     *pathFilter | *valuesFilter\ntype coreOption interface {\n\tOption\n\tisCore()\n}\n\ntype core struct{}\n\nfunc (core) isCore() {}\n\n// Options is a list of [Option] values that also satisfies the [Option] interface.\n// Helper comparison packages may return an Options value when packing multiple\n// [Option] values into a single [Option]. When this package processes an Options,\n// it will be implicitly expanded into a flat list.\n//\n// Applying a filter on an Options is equivalent to applying that same filter\n// on all individual options held within.\ntype Options []Option\n\nfunc (opts Options) filter(s *state, t reflect.Type, vx, vy reflect.Value) (out applicableOption) {\n\tfor _, opt := range opts {\n\t\tswitch opt := opt.filter(s, t, vx, vy); opt.(type) {\n\t\tcase ignore:\n\t\t\treturn ignore{} // Only ignore can short-circuit evaluation\n\t\tcase validator:\n\t\t\tout = validator{} // Takes precedence over comparer or transformer\n\t\tcase *comparer, *transformer, Options:\n\t\t\tswitch out.(type) {\n\t\t\tcase nil:\n\t\t\t\tout = opt\n\t\t\tcase validator:\n\t\t\t\t// Keep validator\n\t\t\tcase *comparer, *transformer, Options:\n\t\t\t\tout = Options{out, opt} // Conflicting comparers or transformers\n\t\t\t}\n\t\t}\n\t}\n\treturn out\n}\n\nfunc (opts Options) apply(s *state, _, _ reflect.Value) {\n\tconst warning = \"ambiguous set of applicable options\"\n\tconst help = \"consider using filters to ensure at most one Comparer or Transformer may apply\"\n\tvar ss []string\n\tfor _, opt := range flattenOptions(nil, opts) {\n\t\tss = append(ss, fmt.Sprint(opt))\n\t}\n\tset := strings.Join(ss, \"\\n\\t\")\n\tpanic(fmt.Sprintf(\"%s at %#v:\\n\\t%s\\n%s\", warning, s.curPath, set, help))\n}\n\nfunc (opts Options) String() string {\n\tvar ss []string\n\tfor _, opt := range opts {\n\t\tss = append(ss, fmt.Sprint(opt))\n\t}\n\treturn fmt.Sprintf(\"Options{%s}\", strings.Join(ss, \", \"))\n}\n\n// FilterPath returns a new [Option] where opt is only evaluated if filter f\n// returns true for the current [Path] in the value tree.\n//\n// This filter is called even if a slice element or map entry is missing and\n// provides an opportunity to ignore such cases. The filter function must be\n// symmetric such that the filter result is identical regardless of whether the\n// missing value is from x or y.\n//\n// The option passed in may be an [Ignore], [Transformer], [Comparer], [Options], or\n// a previously filtered [Option].\nfunc FilterPath(f func(Path) bool, opt Option) Option {\n\tif f == nil {\n\t\tpanic(\"invalid path filter function\")\n\t}\n\tif opt := normalizeOption(opt); opt != nil {\n\t\treturn &pathFilter{fnc: f, opt: opt}\n\t}\n\treturn nil\n}\n\ntype pathFilter struct {\n\tcore\n\tfnc func(Path) bool\n\topt Option\n}\n\nfunc (f pathFilter) filter(s *state, t reflect.Type, vx, vy reflect.Value) applicableOption {\n\tif f.fnc(s.curPath) {\n\t\treturn f.opt.filter(s, t, vx, vy)\n\t}\n\treturn nil\n}\n\nfunc (f pathFilter) String() string {\n\treturn fmt.Sprintf(\"FilterPath(%s, %v)\", function.NameOf(reflect.ValueOf(f.fnc)), f.opt)\n}\n\n// FilterValues returns a new [Option] where opt is only evaluated if filter f,\n// which is a function of the form \"func(T, T) bool\", returns true for the\n// current pair of values being compared. If either value is invalid or\n// the type of the values is not assignable to T, then this filter implicitly\n// returns false.\n//\n// The filter function must be\n// symmetric (i.e., agnostic to the order of the inputs) and\n// deterministic (i.e., produces the same result when given the same inputs).\n// If T is an interface, it is possible that f is called with two values with\n// different concrete types that both implement T.\n//\n// The option passed in may be an [Ignore], [Transformer], [Comparer], [Options], or\n// a previously filtered [Option].\nfunc FilterValues(f interface{}, opt Option) Option {\n\tv := reflect.ValueOf(f)\n\tif !function.IsType(v.Type(), function.ValueFilter) || v.IsNil() {\n\t\tpanic(fmt.Sprintf(\"invalid values filter function: %T\", f))\n\t}\n\tif opt := normalizeOption(opt); opt != nil {\n\t\tvf := &valuesFilter{fnc: v, opt: opt}\n\t\tif ti := v.Type().In(0); ti.Kind() != reflect.Interface || ti.NumMethod() > 0 {\n\t\t\tvf.typ = ti\n\t\t}\n\t\treturn vf\n\t}\n\treturn nil\n}\n\ntype valuesFilter struct {\n\tcore\n\ttyp reflect.Type  // T\n\tfnc reflect.Value // func(T, T) bool\n\topt Option\n}\n\nfunc (f valuesFilter) filter(s *state, t reflect.Type, vx, vy reflect.Value) applicableOption {\n\tif !vx.IsValid() || !vx.CanInterface() || !vy.IsValid() || !vy.CanInterface() {\n\t\treturn nil\n\t}\n\tif (f.typ == nil || t.AssignableTo(f.typ)) && s.callTTBFunc(f.fnc, vx, vy) {\n\t\treturn f.opt.filter(s, t, vx, vy)\n\t}\n\treturn nil\n}\n\nfunc (f valuesFilter) String() string {\n\treturn fmt.Sprintf(\"FilterValues(%s, %v)\", function.NameOf(f.fnc), f.opt)\n}\n\n// Ignore is an [Option] that causes all comparisons to be ignored.\n// This value is intended to be combined with [FilterPath] or [FilterValues].\n// It is an error to pass an unfiltered Ignore option to [Equal].\nfunc Ignore() Option { return ignore{} }\n\ntype ignore struct{ core }\n\nfunc (ignore) isFiltered() bool                                                     { return false }\nfunc (ignore) filter(_ *state, _ reflect.Type, _, _ reflect.Value) applicableOption { return ignore{} }\nfunc (ignore) apply(s *state, _, _ reflect.Value)                                   { s.report(true, reportByIgnore) }\nfunc (ignore) String() string                                                       { return \"Ignore()\" }\n\n// validator is a sentinel Option type to indicate that some options could not\n// be evaluated due to unexported fields, missing slice elements, or\n// missing map entries. Both values are validator only for unexported fields.\ntype validator struct{ core }\n\nfunc (validator) filter(_ *state, _ reflect.Type, vx, vy reflect.Value) applicableOption {\n\tif !vx.IsValid() || !vy.IsValid() {\n\t\treturn validator{}\n\t}\n\tif !vx.CanInterface() || !vy.CanInterface() {\n\t\treturn validator{}\n\t}\n\treturn nil\n}\nfunc (validator) apply(s *state, vx, vy reflect.Value) {\n\t// Implies missing slice element or map entry.\n\tif !vx.IsValid() || !vy.IsValid() {\n\t\ts.report(vx.IsValid() == vy.IsValid(), 0)\n\t\treturn\n\t}\n\n\t// Unable to Interface implies unexported field without visibility access.\n\tif !vx.CanInterface() || !vy.CanInterface() {\n\t\thelp := \"consider using a custom Comparer; if you control the implementation of type, you can also consider using an Exporter, AllowUnexported, or cmpopts.IgnoreUnexported\"\n\t\tvar name string\n\t\tif t := s.curPath.Index(-2).Type(); t.Name() != \"\" {\n\t\t\t// Named type with unexported fields.\n\t\t\tname = fmt.Sprintf(\"%q.%v\", t.PkgPath(), t.Name()) // e.g., \"path/to/package\".MyType\n\t\t\tisProtoMessage := func(t reflect.Type) bool {\n\t\t\t\tm, ok := reflect.PointerTo(t).MethodByName(\"ProtoReflect\")\n\t\t\t\treturn ok && m.Type.NumIn() == 1 && m.Type.NumOut() == 1 &&\n\t\t\t\t\tm.Type.Out(0).PkgPath() == \"google.golang.org/protobuf/reflect/protoreflect\" &&\n\t\t\t\t\tm.Type.Out(0).Name() == \"Message\"\n\t\t\t}\n\t\t\tif isProtoMessage(t) {\n\t\t\t\thelp = `consider using \"google.golang.org/protobuf/testing/protocmp\".Transform to compare proto.Message types`\n\t\t\t} else if _, ok := reflect.New(t).Interface().(error); ok {\n\t\t\t\thelp = \"consider using cmpopts.EquateErrors to compare error values\"\n\t\t\t} else if t.Comparable() {\n\t\t\t\thelp = \"consider using cmpopts.EquateComparable to compare comparable Go types\"\n\t\t\t}\n\t\t} else {\n\t\t\t// Unnamed type with unexported fields. Derive PkgPath from field.\n\t\t\tvar pkgPath string\n\t\t\tfor i := 0; i < t.NumField() && pkgPath == \"\"; i++ {\n\t\t\t\tpkgPath = t.Field(i).PkgPath\n\t\t\t}\n\t\t\tname = fmt.Sprintf(\"%q.(%v)\", pkgPath, t.String()) // e.g., \"path/to/package\".(struct { a int })\n\t\t}\n\t\tpanic(fmt.Sprintf(\"cannot handle unexported field at %#v:\\n\\t%v\\n%s\", s.curPath, name, help))\n\t}\n\n\tpanic(\"not reachable\")\n}\n\n// identRx represents a valid identifier according to the Go specification.\nconst identRx = `[_\\p{L}][_\\p{L}\\p{N}]*`\n\nvar identsRx = regexp.MustCompile(`^` + identRx + `(\\.` + identRx + `)*$`)\n\n// Transformer returns an [Option] that applies a transformation function that\n// converts values of a certain type into that of another.\n//\n// The transformer f must be a function \"func(T) R\" that converts values of\n// type T to those of type R and is implicitly filtered to input values\n// assignable to T. The transformer must not mutate T in any way.\n//\n// To help prevent some cases of infinite recursive cycles applying the\n// same transform to the output of itself (e.g., in the case where the\n// input and output types are the same), an implicit filter is added such that\n// a transformer is applicable only if that exact transformer is not already\n// in the tail of the [Path] since the last non-[Transform] step.\n// For situations where the implicit filter is still insufficient,\n// consider using [github.com/google/go-cmp/cmp/cmpopts.AcyclicTransformer],\n// which adds a filter to prevent the transformer from\n// being recursively applied upon itself.\n//\n// The name is a user provided label that is used as the [Transform.Name] in the\n// transformation [PathStep] (and eventually shown in the [Diff] output).\n// The name must be a valid identifier or qualified identifier in Go syntax.\n// If empty, an arbitrary name is used.\nfunc Transformer(name string, f interface{}) Option {\n\tv := reflect.ValueOf(f)\n\tif !function.IsType(v.Type(), function.Transformer) || v.IsNil() {\n\t\tpanic(fmt.Sprintf(\"invalid transformer function: %T\", f))\n\t}\n\tif name == \"\" {\n\t\tname = function.NameOf(v)\n\t\tif !identsRx.MatchString(name) {\n\t\t\tname = \"λ\" // Lambda-symbol as placeholder name\n\t\t}\n\t} else if !identsRx.MatchString(name) {\n\t\tpanic(fmt.Sprintf(\"invalid name: %q\", name))\n\t}\n\ttr := &transformer{name: name, fnc: reflect.ValueOf(f)}\n\tif ti := v.Type().In(0); ti.Kind() != reflect.Interface || ti.NumMethod() > 0 {\n\t\ttr.typ = ti\n\t}\n\treturn tr\n}\n\ntype transformer struct {\n\tcore\n\tname string\n\ttyp  reflect.Type  // T\n\tfnc  reflect.Value // func(T) R\n}\n\nfunc (tr *transformer) isFiltered() bool { return tr.typ != nil }\n\nfunc (tr *transformer) filter(s *state, t reflect.Type, _, _ reflect.Value) applicableOption {\n\tfor i := len(s.curPath) - 1; i >= 0; i-- {\n\t\tif t, ok := s.curPath[i].(Transform); !ok {\n\t\t\tbreak // Hit most recent non-Transform step\n\t\t} else if tr == t.trans {\n\t\t\treturn nil // Cannot directly use same Transform\n\t\t}\n\t}\n\tif tr.typ == nil || t.AssignableTo(tr.typ) {\n\t\treturn tr\n\t}\n\treturn nil\n}\n\nfunc (tr *transformer) apply(s *state, vx, vy reflect.Value) {\n\tstep := Transform{&transform{pathStep{typ: tr.fnc.Type().Out(0)}, tr}}\n\tvvx := s.callTRFunc(tr.fnc, vx, step)\n\tvvy := s.callTRFunc(tr.fnc, vy, step)\n\tstep.vx, step.vy = vvx, vvy\n\ts.compareAny(step)\n}\n\nfunc (tr transformer) String() string {\n\treturn fmt.Sprintf(\"Transformer(%s, %s)\", tr.name, function.NameOf(tr.fnc))\n}\n\n// Comparer returns an [Option] that determines whether two values are equal\n// to each other.\n//\n// The comparer f must be a function \"func(T, T) bool\" and is implicitly\n// filtered to input values assignable to T. If T is an interface, it is\n// possible that f is called with two values of different concrete types that\n// both implement T.\n//\n// The equality function must be:\n//   - Symmetric: equal(x, y) == equal(y, x)\n//   - Deterministic: equal(x, y) == equal(x, y)\n//   - Pure: equal(x, y) does not modify x or y\nfunc Comparer(f interface{}) Option {\n\tv := reflect.ValueOf(f)\n\tif !function.IsType(v.Type(), function.Equal) || v.IsNil() {\n\t\tpanic(fmt.Sprintf(\"invalid comparer function: %T\", f))\n\t}\n\tcm := &comparer{fnc: v}\n\tif ti := v.Type().In(0); ti.Kind() != reflect.Interface || ti.NumMethod() > 0 {\n\t\tcm.typ = ti\n\t}\n\treturn cm\n}\n\ntype comparer struct {\n\tcore\n\ttyp reflect.Type  // T\n\tfnc reflect.Value // func(T, T) bool\n}\n\nfunc (cm *comparer) isFiltered() bool { return cm.typ != nil }\n\nfunc (cm *comparer) filter(_ *state, t reflect.Type, _, _ reflect.Value) applicableOption {\n\tif cm.typ == nil || t.AssignableTo(cm.typ) {\n\t\treturn cm\n\t}\n\treturn nil\n}\n\nfunc (cm *comparer) apply(s *state, vx, vy reflect.Value) {\n\teq := s.callTTBFunc(cm.fnc, vx, vy)\n\ts.report(eq, reportByFunc)\n}\n\nfunc (cm comparer) String() string {\n\treturn fmt.Sprintf(\"Comparer(%s)\", function.NameOf(cm.fnc))\n}\n\n// Exporter returns an [Option] that specifies whether [Equal] is allowed to\n// introspect into the unexported fields of certain struct types.\n//\n// Users of this option must understand that comparing on unexported fields\n// from external packages is not safe since changes in the internal\n// implementation of some external package may cause the result of [Equal]\n// to unexpectedly change. However, it may be valid to use this option on types\n// defined in an internal package where the semantic meaning of an unexported\n// field is in the control of the user.\n//\n// In many cases, a custom [Comparer] should be used instead that defines\n// equality as a function of the public API of a type rather than the underlying\n// unexported implementation.\n//\n// For example, the [reflect.Type] documentation defines equality to be determined\n// by the == operator on the interface (essentially performing a shallow pointer\n// comparison) and most attempts to compare *[regexp.Regexp] types are interested\n// in only checking that the regular expression strings are equal.\n// Both of these are accomplished using [Comparer] options:\n//\n//\tComparer(func(x, y reflect.Type) bool { return x == y })\n//\tComparer(func(x, y *regexp.Regexp) bool { return x.String() == y.String() })\n//\n// In other cases, the [github.com/google/go-cmp/cmp/cmpopts.IgnoreUnexported]\n// option can be used to ignore all unexported fields on specified struct types.\nfunc Exporter(f func(reflect.Type) bool) Option {\n\treturn exporter(f)\n}\n\ntype exporter func(reflect.Type) bool\n\nfunc (exporter) filter(_ *state, _ reflect.Type, _, _ reflect.Value) applicableOption {\n\tpanic(\"not implemented\")\n}\n\n// AllowUnexported returns an [Option] that allows [Equal] to forcibly introspect\n// unexported fields of the specified struct types.\n//\n// See [Exporter] for the proper use of this option.\nfunc AllowUnexported(types ...interface{}) Option {\n\tm := make(map[reflect.Type]bool)\n\tfor _, typ := range types {\n\t\tt := reflect.TypeOf(typ)\n\t\tif t.Kind() != reflect.Struct {\n\t\t\tpanic(fmt.Sprintf(\"invalid struct type: %T\", typ))\n\t\t}\n\t\tm[t] = true\n\t}\n\treturn exporter(func(t reflect.Type) bool { return m[t] })\n}\n\n// Result represents the comparison result for a single node and\n// is provided by cmp when calling Report (see [Reporter]).\ntype Result struct {\n\t_     [0]func() // Make Result incomparable\n\tflags resultFlags\n}\n\n// Equal reports whether the node was determined to be equal or not.\n// As a special case, ignored nodes are considered equal.\nfunc (r Result) Equal() bool {\n\treturn r.flags&(reportEqual|reportByIgnore) != 0\n}\n\n// ByIgnore reports whether the node is equal because it was ignored.\n// This never reports true if [Result.Equal] reports false.\nfunc (r Result) ByIgnore() bool {\n\treturn r.flags&reportByIgnore != 0\n}\n\n// ByMethod reports whether the Equal method determined equality.\nfunc (r Result) ByMethod() bool {\n\treturn r.flags&reportByMethod != 0\n}\n\n// ByFunc reports whether a [Comparer] function determined equality.\nfunc (r Result) ByFunc() bool {\n\treturn r.flags&reportByFunc != 0\n}\n\n// ByCycle reports whether a reference cycle was detected.\nfunc (r Result) ByCycle() bool {\n\treturn r.flags&reportByCycle != 0\n}\n\ntype resultFlags uint\n\nconst (\n\t_ resultFlags = (1 << iota) / 2\n\n\treportEqual\n\treportUnequal\n\treportByIgnore\n\treportByMethod\n\treportByFunc\n\treportByCycle\n)\n\n// Reporter is an [Option] that can be passed to [Equal]. When [Equal] traverses\n// the value trees, it calls PushStep as it descends into each node in the\n// tree and PopStep as it ascend out of the node. The leaves of the tree are\n// either compared (determined to be equal or not equal) or ignored and reported\n// as such by calling the Report method.\nfunc Reporter(r interface {\n\t// PushStep is called when a tree-traversal operation is performed.\n\t// The PathStep itself is only valid until the step is popped.\n\t// The PathStep.Values are valid for the duration of the entire traversal\n\t// and must not be mutated.\n\t//\n\t// Equal always calls PushStep at the start to provide an operation-less\n\t// PathStep used to report the root values.\n\t//\n\t// Within a slice, the exact set of inserted, removed, or modified elements\n\t// is unspecified and may change in future implementations.\n\t// The entries of a map are iterated through in an unspecified order.\n\tPushStep(PathStep)\n\n\t// Report is called exactly once on leaf nodes to report whether the\n\t// comparison identified the node as equal, unequal, or ignored.\n\t// A leaf node is one that is immediately preceded by and followed by\n\t// a pair of PushStep and PopStep calls.\n\tReport(Result)\n\n\t// PopStep ascends back up the value tree.\n\t// There is always a matching pop call for every push call.\n\tPopStep()\n}) Option {\n\treturn reporter{r}\n}\n\ntype reporter struct{ reporterIface }\ntype reporterIface interface {\n\tPushStep(PathStep)\n\tReport(Result)\n\tPopStep()\n}\n\nfunc (reporter) filter(_ *state, _ reflect.Type, _, _ reflect.Value) applicableOption {\n\tpanic(\"not implemented\")\n}\n\n// normalizeOption normalizes the input options such that all Options groups\n// are flattened and groups with a single element are reduced to that element.\n// Only coreOptions and Options containing coreOptions are allowed.\nfunc normalizeOption(src Option) Option {\n\tswitch opts := flattenOptions(nil, Options{src}); len(opts) {\n\tcase 0:\n\t\treturn nil\n\tcase 1:\n\t\treturn opts[0]\n\tdefault:\n\t\treturn opts\n\t}\n}\n\n// flattenOptions copies all options in src to dst as a flat list.\n// Only coreOptions and Options containing coreOptions are allowed.\nfunc flattenOptions(dst, src Options) Options {\n\tfor _, opt := range src {\n\t\tswitch opt := opt.(type) {\n\t\tcase nil:\n\t\t\tcontinue\n\t\tcase Options:\n\t\t\tdst = flattenOptions(dst, opt)\n\t\tcase coreOption:\n\t\t\tdst = append(dst, opt)\n\t\tdefault:\n\t\t\tpanic(fmt.Sprintf(\"invalid option type: %T\", opt))\n\t\t}\n\t}\n\treturn dst\n}\n"
  },
  {
    "path": "tests/vendor/github.com/google/go-cmp/cmp/path.go",
    "content": "// Copyright 2017, The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage cmp\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"strings\"\n\t\"unicode\"\n\t\"unicode/utf8\"\n\n\t\"github.com/google/go-cmp/cmp/internal/value\"\n)\n\n// Path is a list of [PathStep] describing the sequence of operations to get\n// from some root type to the current position in the value tree.\n// The first Path element is always an operation-less [PathStep] that exists\n// simply to identify the initial type.\n//\n// When traversing structs with embedded structs, the embedded struct will\n// always be accessed as a field before traversing the fields of the\n// embedded struct themselves. That is, an exported field from the\n// embedded struct will never be accessed directly from the parent struct.\ntype Path []PathStep\n\n// PathStep is a union-type for specific operations to traverse\n// a value's tree structure. Users of this package never need to implement\n// these types as values of this type will be returned by this package.\n//\n// Implementations of this interface:\n//   - [StructField]\n//   - [SliceIndex]\n//   - [MapIndex]\n//   - [Indirect]\n//   - [TypeAssertion]\n//   - [Transform]\ntype PathStep interface {\n\tString() string\n\n\t// Type is the resulting type after performing the path step.\n\tType() reflect.Type\n\n\t// Values is the resulting values after performing the path step.\n\t// The type of each valid value is guaranteed to be identical to Type.\n\t//\n\t// In some cases, one or both may be invalid or have restrictions:\n\t//   - For StructField, both are not interface-able if the current field\n\t//     is unexported and the struct type is not explicitly permitted by\n\t//     an Exporter to traverse unexported fields.\n\t//   - For SliceIndex, one may be invalid if an element is missing from\n\t//     either the x or y slice.\n\t//   - For MapIndex, one may be invalid if an entry is missing from\n\t//     either the x or y map.\n\t//\n\t// The provided values must not be mutated.\n\tValues() (vx, vy reflect.Value)\n}\n\nvar (\n\t_ PathStep = StructField{}\n\t_ PathStep = SliceIndex{}\n\t_ PathStep = MapIndex{}\n\t_ PathStep = Indirect{}\n\t_ PathStep = TypeAssertion{}\n\t_ PathStep = Transform{}\n)\n\nfunc (pa *Path) push(s PathStep) {\n\t*pa = append(*pa, s)\n}\n\nfunc (pa *Path) pop() {\n\t*pa = (*pa)[:len(*pa)-1]\n}\n\n// Last returns the last [PathStep] in the Path.\n// If the path is empty, this returns a non-nil [PathStep]\n// that reports a nil [PathStep.Type].\nfunc (pa Path) Last() PathStep {\n\treturn pa.Index(-1)\n}\n\n// Index returns the ith step in the Path and supports negative indexing.\n// A negative index starts counting from the tail of the Path such that -1\n// refers to the last step, -2 refers to the second-to-last step, and so on.\n// If index is invalid, this returns a non-nil [PathStep]\n// that reports a nil [PathStep.Type].\nfunc (pa Path) Index(i int) PathStep {\n\tif i < 0 {\n\t\ti = len(pa) + i\n\t}\n\tif i < 0 || i >= len(pa) {\n\t\treturn pathStep{}\n\t}\n\treturn pa[i]\n}\n\n// String returns the simplified path to a node.\n// The simplified path only contains struct field accesses.\n//\n// For example:\n//\n//\tMyMap.MySlices.MyField\nfunc (pa Path) String() string {\n\tvar ss []string\n\tfor _, s := range pa {\n\t\tif _, ok := s.(StructField); ok {\n\t\t\tss = append(ss, s.String())\n\t\t}\n\t}\n\treturn strings.TrimPrefix(strings.Join(ss, \"\"), \".\")\n}\n\n// GoString returns the path to a specific node using Go syntax.\n//\n// For example:\n//\n//\t(*root.MyMap[\"key\"].(*mypkg.MyStruct).MySlices)[2][3].MyField\nfunc (pa Path) GoString() string {\n\tvar ssPre, ssPost []string\n\tvar numIndirect int\n\tfor i, s := range pa {\n\t\tvar nextStep PathStep\n\t\tif i+1 < len(pa) {\n\t\t\tnextStep = pa[i+1]\n\t\t}\n\t\tswitch s := s.(type) {\n\t\tcase Indirect:\n\t\t\tnumIndirect++\n\t\t\tpPre, pPost := \"(\", \")\"\n\t\t\tswitch nextStep.(type) {\n\t\t\tcase Indirect:\n\t\t\t\tcontinue // Next step is indirection, so let them batch up\n\t\t\tcase StructField:\n\t\t\t\tnumIndirect-- // Automatic indirection on struct fields\n\t\t\tcase nil:\n\t\t\t\tpPre, pPost = \"\", \"\" // Last step; no need for parenthesis\n\t\t\t}\n\t\t\tif numIndirect > 0 {\n\t\t\t\tssPre = append(ssPre, pPre+strings.Repeat(\"*\", numIndirect))\n\t\t\t\tssPost = append(ssPost, pPost)\n\t\t\t}\n\t\t\tnumIndirect = 0\n\t\t\tcontinue\n\t\tcase Transform:\n\t\t\tssPre = append(ssPre, s.trans.name+\"(\")\n\t\t\tssPost = append(ssPost, \")\")\n\t\t\tcontinue\n\t\t}\n\t\tssPost = append(ssPost, s.String())\n\t}\n\tfor i, j := 0, len(ssPre)-1; i < j; i, j = i+1, j-1 {\n\t\tssPre[i], ssPre[j] = ssPre[j], ssPre[i]\n\t}\n\treturn strings.Join(ssPre, \"\") + strings.Join(ssPost, \"\")\n}\n\ntype pathStep struct {\n\ttyp    reflect.Type\n\tvx, vy reflect.Value\n}\n\nfunc (ps pathStep) Type() reflect.Type             { return ps.typ }\nfunc (ps pathStep) Values() (vx, vy reflect.Value) { return ps.vx, ps.vy }\nfunc (ps pathStep) String() string {\n\tif ps.typ == nil {\n\t\treturn \"<nil>\"\n\t}\n\ts := value.TypeString(ps.typ, false)\n\tif s == \"\" || strings.ContainsAny(s, \"{}\\n\") {\n\t\treturn \"root\" // Type too simple or complex to print\n\t}\n\treturn fmt.Sprintf(\"{%s}\", s)\n}\n\n// StructField is a [PathStep] that represents a struct field access\n// on a field called [StructField.Name].\ntype StructField struct{ *structField }\ntype structField struct {\n\tpathStep\n\tname string\n\tidx  int\n\n\t// These fields are used for forcibly accessing an unexported field.\n\t// pvx, pvy, and field are only valid if unexported is true.\n\tunexported bool\n\tmayForce   bool                // Forcibly allow visibility\n\tpaddr      bool                // Was parent addressable?\n\tpvx, pvy   reflect.Value       // Parent values (always addressable)\n\tfield      reflect.StructField // Field information\n}\n\nfunc (sf StructField) Type() reflect.Type { return sf.typ }\nfunc (sf StructField) Values() (vx, vy reflect.Value) {\n\tif !sf.unexported {\n\t\treturn sf.vx, sf.vy // CanInterface reports true\n\t}\n\n\t// Forcibly obtain read-write access to an unexported struct field.\n\tif sf.mayForce {\n\t\tvx = retrieveUnexportedField(sf.pvx, sf.field, sf.paddr)\n\t\tvy = retrieveUnexportedField(sf.pvy, sf.field, sf.paddr)\n\t\treturn vx, vy // CanInterface reports true\n\t}\n\treturn sf.vx, sf.vy // CanInterface reports false\n}\nfunc (sf StructField) String() string { return fmt.Sprintf(\".%s\", sf.name) }\n\n// Name is the field name.\nfunc (sf StructField) Name() string { return sf.name }\n\n// Index is the index of the field in the parent struct type.\n// See [reflect.Type.Field].\nfunc (sf StructField) Index() int { return sf.idx }\n\n// SliceIndex is a [PathStep] that represents an index operation on\n// a slice or array at some index [SliceIndex.Key].\ntype SliceIndex struct{ *sliceIndex }\ntype sliceIndex struct {\n\tpathStep\n\txkey, ykey int\n\tisSlice    bool // False for reflect.Array\n}\n\nfunc (si SliceIndex) Type() reflect.Type             { return si.typ }\nfunc (si SliceIndex) Values() (vx, vy reflect.Value) { return si.vx, si.vy }\nfunc (si SliceIndex) String() string {\n\tswitch {\n\tcase si.xkey == si.ykey:\n\t\treturn fmt.Sprintf(\"[%d]\", si.xkey)\n\tcase si.ykey == -1:\n\t\t// [5->?] means \"I don't know where X[5] went\"\n\t\treturn fmt.Sprintf(\"[%d->?]\", si.xkey)\n\tcase si.xkey == -1:\n\t\t// [?->3] means \"I don't know where Y[3] came from\"\n\t\treturn fmt.Sprintf(\"[?->%d]\", si.ykey)\n\tdefault:\n\t\t// [5->3] means \"X[5] moved to Y[3]\"\n\t\treturn fmt.Sprintf(\"[%d->%d]\", si.xkey, si.ykey)\n\t}\n}\n\n// Key is the index key; it may return -1 if in a split state\nfunc (si SliceIndex) Key() int {\n\tif si.xkey != si.ykey {\n\t\treturn -1\n\t}\n\treturn si.xkey\n}\n\n// SplitKeys are the indexes for indexing into slices in the\n// x and y values, respectively. These indexes may differ due to the\n// insertion or removal of an element in one of the slices, causing\n// all of the indexes to be shifted. If an index is -1, then that\n// indicates that the element does not exist in the associated slice.\n//\n// [SliceIndex.Key] is guaranteed to return -1 if and only if the indexes\n// returned by SplitKeys are not the same. SplitKeys will never return -1 for\n// both indexes.\nfunc (si SliceIndex) SplitKeys() (ix, iy int) { return si.xkey, si.ykey }\n\n// MapIndex is a [PathStep] that represents an index operation on a map at some index Key.\ntype MapIndex struct{ *mapIndex }\ntype mapIndex struct {\n\tpathStep\n\tkey reflect.Value\n}\n\nfunc (mi MapIndex) Type() reflect.Type             { return mi.typ }\nfunc (mi MapIndex) Values() (vx, vy reflect.Value) { return mi.vx, mi.vy }\nfunc (mi MapIndex) String() string                 { return fmt.Sprintf(\"[%#v]\", mi.key) }\n\n// Key is the value of the map key.\nfunc (mi MapIndex) Key() reflect.Value { return mi.key }\n\n// Indirect is a [PathStep] that represents pointer indirection on the parent type.\ntype Indirect struct{ *indirect }\ntype indirect struct {\n\tpathStep\n}\n\nfunc (in Indirect) Type() reflect.Type             { return in.typ }\nfunc (in Indirect) Values() (vx, vy reflect.Value) { return in.vx, in.vy }\nfunc (in Indirect) String() string                 { return \"*\" }\n\n// TypeAssertion is a [PathStep] that represents a type assertion on an interface.\ntype TypeAssertion struct{ *typeAssertion }\ntype typeAssertion struct {\n\tpathStep\n}\n\nfunc (ta TypeAssertion) Type() reflect.Type             { return ta.typ }\nfunc (ta TypeAssertion) Values() (vx, vy reflect.Value) { return ta.vx, ta.vy }\nfunc (ta TypeAssertion) String() string                 { return fmt.Sprintf(\".(%v)\", value.TypeString(ta.typ, false)) }\n\n// Transform is a [PathStep] that represents a transformation\n// from the parent type to the current type.\ntype Transform struct{ *transform }\ntype transform struct {\n\tpathStep\n\ttrans *transformer\n}\n\nfunc (tf Transform) Type() reflect.Type             { return tf.typ }\nfunc (tf Transform) Values() (vx, vy reflect.Value) { return tf.vx, tf.vy }\nfunc (tf Transform) String() string                 { return fmt.Sprintf(\"%s()\", tf.trans.name) }\n\n// Name is the name of the [Transformer].\nfunc (tf Transform) Name() string { return tf.trans.name }\n\n// Func is the function pointer to the transformer function.\nfunc (tf Transform) Func() reflect.Value { return tf.trans.fnc }\n\n// Option returns the originally constructed [Transformer] option.\n// The == operator can be used to detect the exact option used.\nfunc (tf Transform) Option() Option { return tf.trans }\n\n// pointerPath represents a dual-stack of pointers encountered when\n// recursively traversing the x and y values. This data structure supports\n// detection of cycles and determining whether the cycles are equal.\n// In Go, cycles can occur via pointers, slices, and maps.\n//\n// The pointerPath uses a map to represent a stack; where descension into a\n// pointer pushes the address onto the stack, and ascension from a pointer\n// pops the address from the stack. Thus, when traversing into a pointer from\n// reflect.Ptr, reflect.Slice element, or reflect.Map, we can detect cycles\n// by checking whether the pointer has already been visited. The cycle detection\n// uses a separate stack for the x and y values.\n//\n// If a cycle is detected we need to determine whether the two pointers\n// should be considered equal. The definition of equality chosen by Equal\n// requires two graphs to have the same structure. To determine this, both the\n// x and y values must have a cycle where the previous pointers were also\n// encountered together as a pair.\n//\n// Semantically, this is equivalent to augmenting Indirect, SliceIndex, and\n// MapIndex with pointer information for the x and y values.\n// Suppose px and py are two pointers to compare, we then search the\n// Path for whether px was ever encountered in the Path history of x, and\n// similarly so with py. If either side has a cycle, the comparison is only\n// equal if both px and py have a cycle resulting from the same PathStep.\n//\n// Using a map as a stack is more performant as we can perform cycle detection\n// in O(1) instead of O(N) where N is len(Path).\ntype pointerPath struct {\n\t// mx is keyed by x pointers, where the value is the associated y pointer.\n\tmx map[value.Pointer]value.Pointer\n\t// my is keyed by y pointers, where the value is the associated x pointer.\n\tmy map[value.Pointer]value.Pointer\n}\n\nfunc (p *pointerPath) Init() {\n\tp.mx = make(map[value.Pointer]value.Pointer)\n\tp.my = make(map[value.Pointer]value.Pointer)\n}\n\n// Push indicates intent to descend into pointers vx and vy where\n// visited reports whether either has been seen before. If visited before,\n// equal reports whether both pointers were encountered together.\n// Pop must be called if and only if the pointers were never visited.\n//\n// The pointers vx and vy must be a reflect.Ptr, reflect.Slice, or reflect.Map\n// and be non-nil.\nfunc (p pointerPath) Push(vx, vy reflect.Value) (equal, visited bool) {\n\tpx := value.PointerOf(vx)\n\tpy := value.PointerOf(vy)\n\t_, ok1 := p.mx[px]\n\t_, ok2 := p.my[py]\n\tif ok1 || ok2 {\n\t\tequal = p.mx[px] == py && p.my[py] == px // Pointers paired together\n\t\treturn equal, true\n\t}\n\tp.mx[px] = py\n\tp.my[py] = px\n\treturn false, false\n}\n\n// Pop ascends from pointers vx and vy.\nfunc (p pointerPath) Pop(vx, vy reflect.Value) {\n\tdelete(p.mx, value.PointerOf(vx))\n\tdelete(p.my, value.PointerOf(vy))\n}\n\n// isExported reports whether the identifier is exported.\nfunc isExported(id string) bool {\n\tr, _ := utf8.DecodeRuneInString(id)\n\treturn unicode.IsUpper(r)\n}\n"
  },
  {
    "path": "tests/vendor/github.com/google/go-cmp/cmp/report.go",
    "content": "// Copyright 2017, The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage cmp\n\n// defaultReporter implements the reporter interface.\n//\n// As Equal serially calls the PushStep, Report, and PopStep methods, the\n// defaultReporter constructs a tree-based representation of the compared value\n// and the result of each comparison (see valueNode).\n//\n// When the String method is called, the FormatDiff method transforms the\n// valueNode tree into a textNode tree, which is a tree-based representation\n// of the textual output (see textNode).\n//\n// Lastly, the textNode.String method produces the final report as a string.\ntype defaultReporter struct {\n\troot *valueNode\n\tcurr *valueNode\n}\n\nfunc (r *defaultReporter) PushStep(ps PathStep) {\n\tr.curr = r.curr.PushStep(ps)\n\tif r.root == nil {\n\t\tr.root = r.curr\n\t}\n}\nfunc (r *defaultReporter) Report(rs Result) {\n\tr.curr.Report(rs)\n}\nfunc (r *defaultReporter) PopStep() {\n\tr.curr = r.curr.PopStep()\n}\n\n// String provides a full report of the differences detected as a structured\n// literal in pseudo-Go syntax. String may only be called after the entire tree\n// has been traversed.\nfunc (r *defaultReporter) String() string {\n\tassert(r.root != nil && r.curr == nil)\n\tif r.root.NumDiff == 0 {\n\t\treturn \"\"\n\t}\n\tptrs := new(pointerReferences)\n\ttext := formatOptions{}.FormatDiff(r.root, ptrs)\n\tresolveReferences(text)\n\treturn text.String()\n}\n\nfunc assert(ok bool) {\n\tif !ok {\n\t\tpanic(\"assertion failure\")\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/github.com/google/go-cmp/cmp/report_compare.go",
    "content": "// Copyright 2019, The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage cmp\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n)\n\n// numContextRecords is the number of surrounding equal records to print.\nconst numContextRecords = 2\n\ntype diffMode byte\n\nconst (\n\tdiffUnknown   diffMode = 0\n\tdiffIdentical diffMode = ' '\n\tdiffRemoved   diffMode = '-'\n\tdiffInserted  diffMode = '+'\n)\n\ntype typeMode int\n\nconst (\n\t// emitType always prints the type.\n\temitType typeMode = iota\n\t// elideType never prints the type.\n\telideType\n\t// autoType prints the type only for composite kinds\n\t// (i.e., structs, slices, arrays, and maps).\n\tautoType\n)\n\ntype formatOptions struct {\n\t// DiffMode controls the output mode of FormatDiff.\n\t//\n\t// If diffUnknown,   then produce a diff of the x and y values.\n\t// If diffIdentical, then emit values as if they were equal.\n\t// If diffRemoved,   then only emit x values (ignoring y values).\n\t// If diffInserted,  then only emit y values (ignoring x values).\n\tDiffMode diffMode\n\n\t// TypeMode controls whether to print the type for the current node.\n\t//\n\t// As a general rule of thumb, we always print the type of the next node\n\t// after an interface, and always elide the type of the next node after\n\t// a slice or map node.\n\tTypeMode typeMode\n\n\t// formatValueOptions are options specific to printing reflect.Values.\n\tformatValueOptions\n}\n\nfunc (opts formatOptions) WithDiffMode(d diffMode) formatOptions {\n\topts.DiffMode = d\n\treturn opts\n}\nfunc (opts formatOptions) WithTypeMode(t typeMode) formatOptions {\n\topts.TypeMode = t\n\treturn opts\n}\nfunc (opts formatOptions) WithVerbosity(level int) formatOptions {\n\topts.VerbosityLevel = level\n\topts.LimitVerbosity = true\n\treturn opts\n}\nfunc (opts formatOptions) verbosity() uint {\n\tswitch {\n\tcase opts.VerbosityLevel < 0:\n\t\treturn 0\n\tcase opts.VerbosityLevel > 16:\n\t\treturn 16 // some reasonable maximum to avoid shift overflow\n\tdefault:\n\t\treturn uint(opts.VerbosityLevel)\n\t}\n}\n\nconst maxVerbosityPreset = 6\n\n// verbosityPreset modifies the verbosity settings given an index\n// between 0 and maxVerbosityPreset, inclusive.\nfunc verbosityPreset(opts formatOptions, i int) formatOptions {\n\topts.VerbosityLevel = int(opts.verbosity()) + 2*i\n\tif i > 0 {\n\t\topts.AvoidStringer = true\n\t}\n\tif i >= maxVerbosityPreset {\n\t\topts.PrintAddresses = true\n\t\topts.QualifiedNames = true\n\t}\n\treturn opts\n}\n\n// FormatDiff converts a valueNode tree into a textNode tree, where the later\n// is a textual representation of the differences detected in the former.\nfunc (opts formatOptions) FormatDiff(v *valueNode, ptrs *pointerReferences) (out textNode) {\n\tif opts.DiffMode == diffIdentical {\n\t\topts = opts.WithVerbosity(1)\n\t} else if opts.verbosity() < 3 {\n\t\topts = opts.WithVerbosity(3)\n\t}\n\n\t// Check whether we have specialized formatting for this node.\n\t// This is not necessary, but helpful for producing more readable outputs.\n\tif opts.CanFormatDiffSlice(v) {\n\t\treturn opts.FormatDiffSlice(v)\n\t}\n\n\tvar parentKind reflect.Kind\n\tif v.parent != nil && v.parent.TransformerName == \"\" {\n\t\tparentKind = v.parent.Type.Kind()\n\t}\n\n\t// For leaf nodes, format the value based on the reflect.Values alone.\n\t// As a special case, treat equal []byte as a leaf nodes.\n\tisBytes := v.Type.Kind() == reflect.Slice && v.Type.Elem() == byteType\n\tisEqualBytes := isBytes && v.NumDiff+v.NumIgnored+v.NumTransformed == 0\n\tif v.MaxDepth == 0 || isEqualBytes {\n\t\tswitch opts.DiffMode {\n\t\tcase diffUnknown, diffIdentical:\n\t\t\t// Format Equal.\n\t\t\tif v.NumDiff == 0 {\n\t\t\t\toutx := opts.FormatValue(v.ValueX, parentKind, ptrs)\n\t\t\t\touty := opts.FormatValue(v.ValueY, parentKind, ptrs)\n\t\t\t\tif v.NumIgnored > 0 && v.NumSame == 0 {\n\t\t\t\t\treturn textEllipsis\n\t\t\t\t} else if outx.Len() < outy.Len() {\n\t\t\t\t\treturn outx\n\t\t\t\t} else {\n\t\t\t\t\treturn outy\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Format unequal.\n\t\t\tassert(opts.DiffMode == diffUnknown)\n\t\t\tvar list textList\n\t\t\toutx := opts.WithTypeMode(elideType).FormatValue(v.ValueX, parentKind, ptrs)\n\t\t\touty := opts.WithTypeMode(elideType).FormatValue(v.ValueY, parentKind, ptrs)\n\t\t\tfor i := 0; i <= maxVerbosityPreset && outx != nil && outy != nil && outx.Equal(outy); i++ {\n\t\t\t\topts2 := verbosityPreset(opts, i).WithTypeMode(elideType)\n\t\t\t\toutx = opts2.FormatValue(v.ValueX, parentKind, ptrs)\n\t\t\t\touty = opts2.FormatValue(v.ValueY, parentKind, ptrs)\n\t\t\t}\n\t\t\tif outx != nil {\n\t\t\t\tlist = append(list, textRecord{Diff: '-', Value: outx})\n\t\t\t}\n\t\t\tif outy != nil {\n\t\t\t\tlist = append(list, textRecord{Diff: '+', Value: outy})\n\t\t\t}\n\t\t\treturn opts.WithTypeMode(emitType).FormatType(v.Type, list)\n\t\tcase diffRemoved:\n\t\t\treturn opts.FormatValue(v.ValueX, parentKind, ptrs)\n\t\tcase diffInserted:\n\t\t\treturn opts.FormatValue(v.ValueY, parentKind, ptrs)\n\t\tdefault:\n\t\t\tpanic(\"invalid diff mode\")\n\t\t}\n\t}\n\n\t// Register slice element to support cycle detection.\n\tif parentKind == reflect.Slice {\n\t\tptrRefs := ptrs.PushPair(v.ValueX, v.ValueY, opts.DiffMode, true)\n\t\tdefer ptrs.Pop()\n\t\tdefer func() { out = wrapTrunkReferences(ptrRefs, out) }()\n\t}\n\n\t// Descend into the child value node.\n\tif v.TransformerName != \"\" {\n\t\tout := opts.WithTypeMode(emitType).FormatDiff(v.Value, ptrs)\n\t\tout = &textWrap{Prefix: \"Inverse(\" + v.TransformerName + \", \", Value: out, Suffix: \")\"}\n\t\treturn opts.FormatType(v.Type, out)\n\t} else {\n\t\tswitch k := v.Type.Kind(); k {\n\t\tcase reflect.Struct, reflect.Array, reflect.Slice:\n\t\t\tout = opts.formatDiffList(v.Records, k, ptrs)\n\t\t\tout = opts.FormatType(v.Type, out)\n\t\tcase reflect.Map:\n\t\t\t// Register map to support cycle detection.\n\t\t\tptrRefs := ptrs.PushPair(v.ValueX, v.ValueY, opts.DiffMode, false)\n\t\t\tdefer ptrs.Pop()\n\n\t\t\tout = opts.formatDiffList(v.Records, k, ptrs)\n\t\t\tout = wrapTrunkReferences(ptrRefs, out)\n\t\t\tout = opts.FormatType(v.Type, out)\n\t\tcase reflect.Ptr:\n\t\t\t// Register pointer to support cycle detection.\n\t\t\tptrRefs := ptrs.PushPair(v.ValueX, v.ValueY, opts.DiffMode, false)\n\t\t\tdefer ptrs.Pop()\n\n\t\t\tout = opts.FormatDiff(v.Value, ptrs)\n\t\t\tout = wrapTrunkReferences(ptrRefs, out)\n\t\t\tout = &textWrap{Prefix: \"&\", Value: out}\n\t\tcase reflect.Interface:\n\t\t\tout = opts.WithTypeMode(emitType).FormatDiff(v.Value, ptrs)\n\t\tdefault:\n\t\t\tpanic(fmt.Sprintf(\"%v cannot have children\", k))\n\t\t}\n\t\treturn out\n\t}\n}\n\nfunc (opts formatOptions) formatDiffList(recs []reportRecord, k reflect.Kind, ptrs *pointerReferences) textNode {\n\t// Derive record name based on the data structure kind.\n\tvar name string\n\tvar formatKey func(reflect.Value) string\n\tswitch k {\n\tcase reflect.Struct:\n\t\tname = \"field\"\n\t\topts = opts.WithTypeMode(autoType)\n\t\tformatKey = func(v reflect.Value) string { return v.String() }\n\tcase reflect.Slice, reflect.Array:\n\t\tname = \"element\"\n\t\topts = opts.WithTypeMode(elideType)\n\t\tformatKey = func(reflect.Value) string { return \"\" }\n\tcase reflect.Map:\n\t\tname = \"entry\"\n\t\topts = opts.WithTypeMode(elideType)\n\t\tformatKey = func(v reflect.Value) string { return formatMapKey(v, false, ptrs) }\n\t}\n\n\tmaxLen := -1\n\tif opts.LimitVerbosity {\n\t\tif opts.DiffMode == diffIdentical {\n\t\t\tmaxLen = ((1 << opts.verbosity()) >> 1) << 2 // 0, 4, 8, 16, 32, etc...\n\t\t} else {\n\t\t\tmaxLen = (1 << opts.verbosity()) << 1 // 2, 4, 8, 16, 32, 64, etc...\n\t\t}\n\t\topts.VerbosityLevel--\n\t}\n\n\t// Handle unification.\n\tswitch opts.DiffMode {\n\tcase diffIdentical, diffRemoved, diffInserted:\n\t\tvar list textList\n\t\tvar deferredEllipsis bool // Add final \"...\" to indicate records were dropped\n\t\tfor _, r := range recs {\n\t\t\tif len(list) == maxLen {\n\t\t\t\tdeferredEllipsis = true\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\t// Elide struct fields that are zero value.\n\t\t\tif k == reflect.Struct {\n\t\t\t\tvar isZero bool\n\t\t\t\tswitch opts.DiffMode {\n\t\t\t\tcase diffIdentical:\n\t\t\t\t\tisZero = r.Value.ValueX.IsZero() || r.Value.ValueY.IsZero()\n\t\t\t\tcase diffRemoved:\n\t\t\t\t\tisZero = r.Value.ValueX.IsZero()\n\t\t\t\tcase diffInserted:\n\t\t\t\t\tisZero = r.Value.ValueY.IsZero()\n\t\t\t\t}\n\t\t\t\tif isZero {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Elide ignored nodes.\n\t\t\tif r.Value.NumIgnored > 0 && r.Value.NumSame+r.Value.NumDiff == 0 {\n\t\t\t\tdeferredEllipsis = !(k == reflect.Slice || k == reflect.Array)\n\t\t\t\tif !deferredEllipsis {\n\t\t\t\t\tlist.AppendEllipsis(diffStats{})\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif out := opts.FormatDiff(r.Value, ptrs); out != nil {\n\t\t\t\tlist = append(list, textRecord{Key: formatKey(r.Key), Value: out})\n\t\t\t}\n\t\t}\n\t\tif deferredEllipsis {\n\t\t\tlist.AppendEllipsis(diffStats{})\n\t\t}\n\t\treturn &textWrap{Prefix: \"{\", Value: list, Suffix: \"}\"}\n\tcase diffUnknown:\n\tdefault:\n\t\tpanic(\"invalid diff mode\")\n\t}\n\n\t// Handle differencing.\n\tvar numDiffs int\n\tvar list textList\n\tvar keys []reflect.Value // invariant: len(list) == len(keys)\n\tgroups := coalesceAdjacentRecords(name, recs)\n\tmaxGroup := diffStats{Name: name}\n\tfor i, ds := range groups {\n\t\tif maxLen >= 0 && numDiffs >= maxLen {\n\t\t\tmaxGroup = maxGroup.Append(ds)\n\t\t\tcontinue\n\t\t}\n\n\t\t// Handle equal records.\n\t\tif ds.NumDiff() == 0 {\n\t\t\t// Compute the number of leading and trailing records to print.\n\t\t\tvar numLo, numHi int\n\t\t\tnumEqual := ds.NumIgnored + ds.NumIdentical\n\t\t\tfor numLo < numContextRecords && numLo+numHi < numEqual && i != 0 {\n\t\t\t\tif r := recs[numLo].Value; r.NumIgnored > 0 && r.NumSame+r.NumDiff == 0 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tnumLo++\n\t\t\t}\n\t\t\tfor numHi < numContextRecords && numLo+numHi < numEqual && i != len(groups)-1 {\n\t\t\t\tif r := recs[numEqual-numHi-1].Value; r.NumIgnored > 0 && r.NumSame+r.NumDiff == 0 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tnumHi++\n\t\t\t}\n\t\t\tif numEqual-(numLo+numHi) == 1 && ds.NumIgnored == 0 {\n\t\t\t\tnumHi++ // Avoid pointless coalescing of a single equal record\n\t\t\t}\n\n\t\t\t// Format the equal values.\n\t\t\tfor _, r := range recs[:numLo] {\n\t\t\t\tout := opts.WithDiffMode(diffIdentical).FormatDiff(r.Value, ptrs)\n\t\t\t\tlist = append(list, textRecord{Key: formatKey(r.Key), Value: out})\n\t\t\t\tkeys = append(keys, r.Key)\n\t\t\t}\n\t\t\tif numEqual > numLo+numHi {\n\t\t\t\tds.NumIdentical -= numLo + numHi\n\t\t\t\tlist.AppendEllipsis(ds)\n\t\t\t\tfor len(keys) < len(list) {\n\t\t\t\t\tkeys = append(keys, reflect.Value{})\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor _, r := range recs[numEqual-numHi : numEqual] {\n\t\t\t\tout := opts.WithDiffMode(diffIdentical).FormatDiff(r.Value, ptrs)\n\t\t\t\tlist = append(list, textRecord{Key: formatKey(r.Key), Value: out})\n\t\t\t\tkeys = append(keys, r.Key)\n\t\t\t}\n\t\t\trecs = recs[numEqual:]\n\t\t\tcontinue\n\t\t}\n\n\t\t// Handle unequal records.\n\t\tfor _, r := range recs[:ds.NumDiff()] {\n\t\t\tswitch {\n\t\t\tcase opts.CanFormatDiffSlice(r.Value):\n\t\t\t\tout := opts.FormatDiffSlice(r.Value)\n\t\t\t\tlist = append(list, textRecord{Key: formatKey(r.Key), Value: out})\n\t\t\t\tkeys = append(keys, r.Key)\n\t\t\tcase r.Value.NumChildren == r.Value.MaxDepth:\n\t\t\t\toutx := opts.WithDiffMode(diffRemoved).FormatDiff(r.Value, ptrs)\n\t\t\t\touty := opts.WithDiffMode(diffInserted).FormatDiff(r.Value, ptrs)\n\t\t\t\tfor i := 0; i <= maxVerbosityPreset && outx != nil && outy != nil && outx.Equal(outy); i++ {\n\t\t\t\t\topts2 := verbosityPreset(opts, i)\n\t\t\t\t\toutx = opts2.WithDiffMode(diffRemoved).FormatDiff(r.Value, ptrs)\n\t\t\t\t\touty = opts2.WithDiffMode(diffInserted).FormatDiff(r.Value, ptrs)\n\t\t\t\t}\n\t\t\t\tif outx != nil {\n\t\t\t\t\tlist = append(list, textRecord{Diff: diffRemoved, Key: formatKey(r.Key), Value: outx})\n\t\t\t\t\tkeys = append(keys, r.Key)\n\t\t\t\t}\n\t\t\t\tif outy != nil {\n\t\t\t\t\tlist = append(list, textRecord{Diff: diffInserted, Key: formatKey(r.Key), Value: outy})\n\t\t\t\t\tkeys = append(keys, r.Key)\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tout := opts.FormatDiff(r.Value, ptrs)\n\t\t\t\tlist = append(list, textRecord{Key: formatKey(r.Key), Value: out})\n\t\t\t\tkeys = append(keys, r.Key)\n\t\t\t}\n\t\t}\n\t\trecs = recs[ds.NumDiff():]\n\t\tnumDiffs += ds.NumDiff()\n\t}\n\tif maxGroup.IsZero() {\n\t\tassert(len(recs) == 0)\n\t} else {\n\t\tlist.AppendEllipsis(maxGroup)\n\t\tfor len(keys) < len(list) {\n\t\t\tkeys = append(keys, reflect.Value{})\n\t\t}\n\t}\n\tassert(len(list) == len(keys))\n\n\t// For maps, the default formatting logic uses fmt.Stringer which may\n\t// produce ambiguous output. Avoid calling String to disambiguate.\n\tif k == reflect.Map {\n\t\tvar ambiguous bool\n\t\tseenKeys := map[string]reflect.Value{}\n\t\tfor i, currKey := range keys {\n\t\t\tif currKey.IsValid() {\n\t\t\t\tstrKey := list[i].Key\n\t\t\t\tprevKey, seen := seenKeys[strKey]\n\t\t\t\tif seen && prevKey.CanInterface() && currKey.CanInterface() {\n\t\t\t\t\tambiguous = prevKey.Interface() != currKey.Interface()\n\t\t\t\t\tif ambiguous {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tseenKeys[strKey] = currKey\n\t\t\t}\n\t\t}\n\t\tif ambiguous {\n\t\t\tfor i, k := range keys {\n\t\t\t\tif k.IsValid() {\n\t\t\t\t\tlist[i].Key = formatMapKey(k, true, ptrs)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn &textWrap{Prefix: \"{\", Value: list, Suffix: \"}\"}\n}\n\n// coalesceAdjacentRecords coalesces the list of records into groups of\n// adjacent equal, or unequal counts.\nfunc coalesceAdjacentRecords(name string, recs []reportRecord) (groups []diffStats) {\n\tvar prevCase int // Arbitrary index into which case last occurred\n\tlastStats := func(i int) *diffStats {\n\t\tif prevCase != i {\n\t\t\tgroups = append(groups, diffStats{Name: name})\n\t\t\tprevCase = i\n\t\t}\n\t\treturn &groups[len(groups)-1]\n\t}\n\tfor _, r := range recs {\n\t\tswitch rv := r.Value; {\n\t\tcase rv.NumIgnored > 0 && rv.NumSame+rv.NumDiff == 0:\n\t\t\tlastStats(1).NumIgnored++\n\t\tcase rv.NumDiff == 0:\n\t\t\tlastStats(1).NumIdentical++\n\t\tcase rv.NumDiff > 0 && !rv.ValueY.IsValid():\n\t\t\tlastStats(2).NumRemoved++\n\t\tcase rv.NumDiff > 0 && !rv.ValueX.IsValid():\n\t\t\tlastStats(2).NumInserted++\n\t\tdefault:\n\t\t\tlastStats(2).NumModified++\n\t\t}\n\t}\n\treturn groups\n}\n"
  },
  {
    "path": "tests/vendor/github.com/google/go-cmp/cmp/report_references.go",
    "content": "// Copyright 2020, The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage cmp\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"strings\"\n\n\t\"github.com/google/go-cmp/cmp/internal/flags\"\n\t\"github.com/google/go-cmp/cmp/internal/value\"\n)\n\nconst (\n\tpointerDelimPrefix = \"⟪\"\n\tpointerDelimSuffix = \"⟫\"\n)\n\n// formatPointer prints the address of the pointer.\nfunc formatPointer(p value.Pointer, withDelims bool) string {\n\tv := p.Uintptr()\n\tif flags.Deterministic {\n\t\tv = 0xdeadf00f // Only used for stable testing purposes\n\t}\n\tif withDelims {\n\t\treturn pointerDelimPrefix + formatHex(uint64(v)) + pointerDelimSuffix\n\t}\n\treturn formatHex(uint64(v))\n}\n\n// pointerReferences is a stack of pointers visited so far.\ntype pointerReferences [][2]value.Pointer\n\nfunc (ps *pointerReferences) PushPair(vx, vy reflect.Value, d diffMode, deref bool) (pp [2]value.Pointer) {\n\tif deref && vx.IsValid() {\n\t\tvx = vx.Addr()\n\t}\n\tif deref && vy.IsValid() {\n\t\tvy = vy.Addr()\n\t}\n\tswitch d {\n\tcase diffUnknown, diffIdentical:\n\t\tpp = [2]value.Pointer{value.PointerOf(vx), value.PointerOf(vy)}\n\tcase diffRemoved:\n\t\tpp = [2]value.Pointer{value.PointerOf(vx), value.Pointer{}}\n\tcase diffInserted:\n\t\tpp = [2]value.Pointer{value.Pointer{}, value.PointerOf(vy)}\n\t}\n\t*ps = append(*ps, pp)\n\treturn pp\n}\n\nfunc (ps *pointerReferences) Push(v reflect.Value) (p value.Pointer, seen bool) {\n\tp = value.PointerOf(v)\n\tfor _, pp := range *ps {\n\t\tif p == pp[0] || p == pp[1] {\n\t\t\treturn p, true\n\t\t}\n\t}\n\t*ps = append(*ps, [2]value.Pointer{p, p})\n\treturn p, false\n}\n\nfunc (ps *pointerReferences) Pop() {\n\t*ps = (*ps)[:len(*ps)-1]\n}\n\n// trunkReferences is metadata for a textNode indicating that the sub-tree\n// represents the value for either pointer in a pair of references.\ntype trunkReferences struct{ pp [2]value.Pointer }\n\n// trunkReference is metadata for a textNode indicating that the sub-tree\n// represents the value for the given pointer reference.\ntype trunkReference struct{ p value.Pointer }\n\n// leafReference is metadata for a textNode indicating that the value is\n// truncated as it refers to another part of the tree (i.e., a trunk).\ntype leafReference struct{ p value.Pointer }\n\nfunc wrapTrunkReferences(pp [2]value.Pointer, s textNode) textNode {\n\tswitch {\n\tcase pp[0].IsNil():\n\t\treturn &textWrap{Value: s, Metadata: trunkReference{pp[1]}}\n\tcase pp[1].IsNil():\n\t\treturn &textWrap{Value: s, Metadata: trunkReference{pp[0]}}\n\tcase pp[0] == pp[1]:\n\t\treturn &textWrap{Value: s, Metadata: trunkReference{pp[0]}}\n\tdefault:\n\t\treturn &textWrap{Value: s, Metadata: trunkReferences{pp}}\n\t}\n}\nfunc wrapTrunkReference(p value.Pointer, printAddress bool, s textNode) textNode {\n\tvar prefix string\n\tif printAddress {\n\t\tprefix = formatPointer(p, true)\n\t}\n\treturn &textWrap{Prefix: prefix, Value: s, Metadata: trunkReference{p}}\n}\nfunc makeLeafReference(p value.Pointer, printAddress bool) textNode {\n\tout := &textWrap{Prefix: \"(\", Value: textEllipsis, Suffix: \")\"}\n\tvar prefix string\n\tif printAddress {\n\t\tprefix = formatPointer(p, true)\n\t}\n\treturn &textWrap{Prefix: prefix, Value: out, Metadata: leafReference{p}}\n}\n\n// resolveReferences walks the textNode tree searching for any leaf reference\n// metadata and resolves each against the corresponding trunk references.\n// Since pointer addresses in memory are not particularly readable to the user,\n// it replaces each pointer value with an arbitrary and unique reference ID.\nfunc resolveReferences(s textNode) {\n\tvar walkNodes func(textNode, func(textNode))\n\twalkNodes = func(s textNode, f func(textNode)) {\n\t\tf(s)\n\t\tswitch s := s.(type) {\n\t\tcase *textWrap:\n\t\t\twalkNodes(s.Value, f)\n\t\tcase textList:\n\t\t\tfor _, r := range s {\n\t\t\t\twalkNodes(r.Value, f)\n\t\t\t}\n\t\t}\n\t}\n\n\t// Collect all trunks and leaves with reference metadata.\n\tvar trunks, leaves []*textWrap\n\twalkNodes(s, func(s textNode) {\n\t\tif s, ok := s.(*textWrap); ok {\n\t\t\tswitch s.Metadata.(type) {\n\t\t\tcase leafReference:\n\t\t\t\tleaves = append(leaves, s)\n\t\t\tcase trunkReference, trunkReferences:\n\t\t\t\ttrunks = append(trunks, s)\n\t\t\t}\n\t\t}\n\t})\n\n\t// No leaf references to resolve.\n\tif len(leaves) == 0 {\n\t\treturn\n\t}\n\n\t// Collect the set of all leaf references to resolve.\n\tleafPtrs := make(map[value.Pointer]bool)\n\tfor _, leaf := range leaves {\n\t\tleafPtrs[leaf.Metadata.(leafReference).p] = true\n\t}\n\n\t// Collect the set of trunk pointers that are always paired together.\n\t// This allows us to assign a single ID to both pointers for brevity.\n\t// If a pointer in a pair ever occurs by itself or as a different pair,\n\t// then the pair is broken.\n\tpairedTrunkPtrs := make(map[value.Pointer]value.Pointer)\n\tunpair := func(p value.Pointer) {\n\t\tif !pairedTrunkPtrs[p].IsNil() {\n\t\t\tpairedTrunkPtrs[pairedTrunkPtrs[p]] = value.Pointer{} // invalidate other half\n\t\t}\n\t\tpairedTrunkPtrs[p] = value.Pointer{} // invalidate this half\n\t}\n\tfor _, trunk := range trunks {\n\t\tswitch p := trunk.Metadata.(type) {\n\t\tcase trunkReference:\n\t\t\tunpair(p.p) // standalone pointer cannot be part of a pair\n\t\tcase trunkReferences:\n\t\t\tp0, ok0 := pairedTrunkPtrs[p.pp[0]]\n\t\t\tp1, ok1 := pairedTrunkPtrs[p.pp[1]]\n\t\t\tswitch {\n\t\t\tcase !ok0 && !ok1:\n\t\t\t\t// Register the newly seen pair.\n\t\t\t\tpairedTrunkPtrs[p.pp[0]] = p.pp[1]\n\t\t\t\tpairedTrunkPtrs[p.pp[1]] = p.pp[0]\n\t\t\tcase ok0 && ok1 && p0 == p.pp[1] && p1 == p.pp[0]:\n\t\t\t\t// Exact pair already seen; do nothing.\n\t\t\tdefault:\n\t\t\t\t// Pair conflicts with some other pair; break all pairs.\n\t\t\t\tunpair(p.pp[0])\n\t\t\t\tunpair(p.pp[1])\n\t\t\t}\n\t\t}\n\t}\n\n\t// Correlate each pointer referenced by leaves to a unique identifier,\n\t// and print the IDs for each trunk that matches those pointers.\n\tvar nextID uint\n\tptrIDs := make(map[value.Pointer]uint)\n\tnewID := func() uint {\n\t\tid := nextID\n\t\tnextID++\n\t\treturn id\n\t}\n\tfor _, trunk := range trunks {\n\t\tswitch p := trunk.Metadata.(type) {\n\t\tcase trunkReference:\n\t\t\tif print := leafPtrs[p.p]; print {\n\t\t\t\tid, ok := ptrIDs[p.p]\n\t\t\t\tif !ok {\n\t\t\t\t\tid = newID()\n\t\t\t\t\tptrIDs[p.p] = id\n\t\t\t\t}\n\t\t\t\ttrunk.Prefix = updateReferencePrefix(trunk.Prefix, formatReference(id))\n\t\t\t}\n\t\tcase trunkReferences:\n\t\t\tprint0 := leafPtrs[p.pp[0]]\n\t\t\tprint1 := leafPtrs[p.pp[1]]\n\t\t\tif print0 || print1 {\n\t\t\t\tid0, ok0 := ptrIDs[p.pp[0]]\n\t\t\t\tid1, ok1 := ptrIDs[p.pp[1]]\n\t\t\t\tisPair := pairedTrunkPtrs[p.pp[0]] == p.pp[1] && pairedTrunkPtrs[p.pp[1]] == p.pp[0]\n\t\t\t\tif isPair {\n\t\t\t\t\tvar id uint\n\t\t\t\t\tassert(ok0 == ok1) // must be seen together or not at all\n\t\t\t\t\tif ok0 {\n\t\t\t\t\t\tassert(id0 == id1) // must have the same ID\n\t\t\t\t\t\tid = id0\n\t\t\t\t\t} else {\n\t\t\t\t\t\tid = newID()\n\t\t\t\t\t\tptrIDs[p.pp[0]] = id\n\t\t\t\t\t\tptrIDs[p.pp[1]] = id\n\t\t\t\t\t}\n\t\t\t\t\ttrunk.Prefix = updateReferencePrefix(trunk.Prefix, formatReference(id))\n\t\t\t\t} else {\n\t\t\t\t\tif print0 && !ok0 {\n\t\t\t\t\t\tid0 = newID()\n\t\t\t\t\t\tptrIDs[p.pp[0]] = id0\n\t\t\t\t\t}\n\t\t\t\t\tif print1 && !ok1 {\n\t\t\t\t\t\tid1 = newID()\n\t\t\t\t\t\tptrIDs[p.pp[1]] = id1\n\t\t\t\t\t}\n\t\t\t\t\tswitch {\n\t\t\t\t\tcase print0 && print1:\n\t\t\t\t\t\ttrunk.Prefix = updateReferencePrefix(trunk.Prefix, formatReference(id0)+\",\"+formatReference(id1))\n\t\t\t\t\tcase print0:\n\t\t\t\t\t\ttrunk.Prefix = updateReferencePrefix(trunk.Prefix, formatReference(id0))\n\t\t\t\t\tcase print1:\n\t\t\t\t\t\ttrunk.Prefix = updateReferencePrefix(trunk.Prefix, formatReference(id1))\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Update all leaf references with the unique identifier.\n\tfor _, leaf := range leaves {\n\t\tif id, ok := ptrIDs[leaf.Metadata.(leafReference).p]; ok {\n\t\t\tleaf.Prefix = updateReferencePrefix(leaf.Prefix, formatReference(id))\n\t\t}\n\t}\n}\n\nfunc formatReference(id uint) string {\n\treturn fmt.Sprintf(\"ref#%d\", id)\n}\n\nfunc updateReferencePrefix(prefix, ref string) string {\n\tif prefix == \"\" {\n\t\treturn pointerDelimPrefix + ref + pointerDelimSuffix\n\t}\n\tsuffix := strings.TrimPrefix(prefix, pointerDelimPrefix)\n\treturn pointerDelimPrefix + ref + \": \" + suffix\n}\n"
  },
  {
    "path": "tests/vendor/github.com/google/go-cmp/cmp/report_reflect.go",
    "content": "// Copyright 2019, The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage cmp\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"reflect\"\n\t\"strconv\"\n\t\"strings\"\n\t\"unicode\"\n\t\"unicode/utf8\"\n\n\t\"github.com/google/go-cmp/cmp/internal/value\"\n)\n\nvar (\n\tanyType    = reflect.TypeOf((*interface{})(nil)).Elem()\n\tstringType = reflect.TypeOf((*string)(nil)).Elem()\n\tbytesType  = reflect.TypeOf((*[]byte)(nil)).Elem()\n\tbyteType   = reflect.TypeOf((*byte)(nil)).Elem()\n)\n\ntype formatValueOptions struct {\n\t// AvoidStringer controls whether to avoid calling custom stringer\n\t// methods like error.Error or fmt.Stringer.String.\n\tAvoidStringer bool\n\n\t// PrintAddresses controls whether to print the address of all pointers,\n\t// slice elements, and maps.\n\tPrintAddresses bool\n\n\t// QualifiedNames controls whether FormatType uses the fully qualified name\n\t// (including the full package path as opposed to just the package name).\n\tQualifiedNames bool\n\n\t// VerbosityLevel controls the amount of output to produce.\n\t// A higher value produces more output. A value of zero or lower produces\n\t// no output (represented using an ellipsis).\n\t// If LimitVerbosity is false, then the level is treated as infinite.\n\tVerbosityLevel int\n\n\t// LimitVerbosity specifies that formatting should respect VerbosityLevel.\n\tLimitVerbosity bool\n}\n\n// FormatType prints the type as if it were wrapping s.\n// This may return s as-is depending on the current type and TypeMode mode.\nfunc (opts formatOptions) FormatType(t reflect.Type, s textNode) textNode {\n\t// Check whether to emit the type or not.\n\tswitch opts.TypeMode {\n\tcase autoType:\n\t\tswitch t.Kind() {\n\t\tcase reflect.Struct, reflect.Slice, reflect.Array, reflect.Map:\n\t\t\tif s.Equal(textNil) {\n\t\t\t\treturn s\n\t\t\t}\n\t\tdefault:\n\t\t\treturn s\n\t\t}\n\t\tif opts.DiffMode == diffIdentical {\n\t\t\treturn s // elide type for identical nodes\n\t\t}\n\tcase elideType:\n\t\treturn s\n\t}\n\n\t// Determine the type label, applying special handling for unnamed types.\n\ttypeName := value.TypeString(t, opts.QualifiedNames)\n\tif t.Name() == \"\" {\n\t\t// According to Go grammar, certain type literals contain symbols that\n\t\t// do not strongly bind to the next lexicographical token (e.g., *T).\n\t\tswitch t.Kind() {\n\t\tcase reflect.Chan, reflect.Func, reflect.Ptr:\n\t\t\ttypeName = \"(\" + typeName + \")\"\n\t\t}\n\t}\n\treturn &textWrap{Prefix: typeName, Value: wrapParens(s)}\n}\n\n// wrapParens wraps s with a set of parenthesis, but avoids it if the\n// wrapped node itself is already surrounded by a pair of parenthesis or braces.\n// It handles unwrapping one level of pointer-reference nodes.\nfunc wrapParens(s textNode) textNode {\n\tvar refNode *textWrap\n\tif s2, ok := s.(*textWrap); ok {\n\t\t// Unwrap a single pointer reference node.\n\t\tswitch s2.Metadata.(type) {\n\t\tcase leafReference, trunkReference, trunkReferences:\n\t\t\trefNode = s2\n\t\t\tif s3, ok := refNode.Value.(*textWrap); ok {\n\t\t\t\ts2 = s3\n\t\t\t}\n\t\t}\n\n\t\t// Already has delimiters that make parenthesis unnecessary.\n\t\thasParens := strings.HasPrefix(s2.Prefix, \"(\") && strings.HasSuffix(s2.Suffix, \")\")\n\t\thasBraces := strings.HasPrefix(s2.Prefix, \"{\") && strings.HasSuffix(s2.Suffix, \"}\")\n\t\tif hasParens || hasBraces {\n\t\t\treturn s\n\t\t}\n\t}\n\tif refNode != nil {\n\t\trefNode.Value = &textWrap{Prefix: \"(\", Value: refNode.Value, Suffix: \")\"}\n\t\treturn s\n\t}\n\treturn &textWrap{Prefix: \"(\", Value: s, Suffix: \")\"}\n}\n\n// FormatValue prints the reflect.Value, taking extra care to avoid descending\n// into pointers already in ptrs. As pointers are visited, ptrs is also updated.\nfunc (opts formatOptions) FormatValue(v reflect.Value, parentKind reflect.Kind, ptrs *pointerReferences) (out textNode) {\n\tif !v.IsValid() {\n\t\treturn nil\n\t}\n\tt := v.Type()\n\n\t// Check slice element for cycles.\n\tif parentKind == reflect.Slice {\n\t\tptrRef, visited := ptrs.Push(v.Addr())\n\t\tif visited {\n\t\t\treturn makeLeafReference(ptrRef, false)\n\t\t}\n\t\tdefer ptrs.Pop()\n\t\tdefer func() { out = wrapTrunkReference(ptrRef, false, out) }()\n\t}\n\n\t// Check whether there is an Error or String method to call.\n\tif !opts.AvoidStringer && v.CanInterface() {\n\t\t// Avoid calling Error or String methods on nil receivers since many\n\t\t// implementations crash when doing so.\n\t\tif (t.Kind() != reflect.Ptr && t.Kind() != reflect.Interface) || !v.IsNil() {\n\t\t\tvar prefix, strVal string\n\t\t\tfunc() {\n\t\t\t\t// Swallow and ignore any panics from String or Error.\n\t\t\t\tdefer func() { recover() }()\n\t\t\t\tswitch v := v.Interface().(type) {\n\t\t\t\tcase error:\n\t\t\t\t\tstrVal = v.Error()\n\t\t\t\t\tprefix = \"e\"\n\t\t\t\tcase fmt.Stringer:\n\t\t\t\t\tstrVal = v.String()\n\t\t\t\t\tprefix = \"s\"\n\t\t\t\t}\n\t\t\t}()\n\t\t\tif prefix != \"\" {\n\t\t\t\treturn opts.formatString(prefix, strVal)\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check whether to explicitly wrap the result with the type.\n\tvar skipType bool\n\tdefer func() {\n\t\tif !skipType {\n\t\t\tout = opts.FormatType(t, out)\n\t\t}\n\t}()\n\n\tswitch t.Kind() {\n\tcase reflect.Bool:\n\t\treturn textLine(fmt.Sprint(v.Bool()))\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\treturn textLine(fmt.Sprint(v.Int()))\n\tcase reflect.Uint, reflect.Uint16, reflect.Uint32, reflect.Uint64:\n\t\treturn textLine(fmt.Sprint(v.Uint()))\n\tcase reflect.Uint8:\n\t\tif parentKind == reflect.Slice || parentKind == reflect.Array {\n\t\t\treturn textLine(formatHex(v.Uint()))\n\t\t}\n\t\treturn textLine(fmt.Sprint(v.Uint()))\n\tcase reflect.Uintptr:\n\t\treturn textLine(formatHex(v.Uint()))\n\tcase reflect.Float32, reflect.Float64:\n\t\treturn textLine(fmt.Sprint(v.Float()))\n\tcase reflect.Complex64, reflect.Complex128:\n\t\treturn textLine(fmt.Sprint(v.Complex()))\n\tcase reflect.String:\n\t\treturn opts.formatString(\"\", v.String())\n\tcase reflect.UnsafePointer, reflect.Chan, reflect.Func:\n\t\treturn textLine(formatPointer(value.PointerOf(v), true))\n\tcase reflect.Struct:\n\t\tvar list textList\n\t\tv := makeAddressable(v) // needed for retrieveUnexportedField\n\t\tmaxLen := v.NumField()\n\t\tif opts.LimitVerbosity {\n\t\t\tmaxLen = ((1 << opts.verbosity()) >> 1) << 2 // 0, 4, 8, 16, 32, etc...\n\t\t\topts.VerbosityLevel--\n\t\t}\n\t\tfor i := 0; i < v.NumField(); i++ {\n\t\t\tvv := v.Field(i)\n\t\t\tif vv.IsZero() {\n\t\t\t\tcontinue // Elide fields with zero values\n\t\t\t}\n\t\t\tif len(list) == maxLen {\n\t\t\t\tlist.AppendEllipsis(diffStats{})\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tsf := t.Field(i)\n\t\t\tif !isExported(sf.Name) {\n\t\t\t\tvv = retrieveUnexportedField(v, sf, true)\n\t\t\t}\n\t\t\ts := opts.WithTypeMode(autoType).FormatValue(vv, t.Kind(), ptrs)\n\t\t\tlist = append(list, textRecord{Key: sf.Name, Value: s})\n\t\t}\n\t\treturn &textWrap{Prefix: \"{\", Value: list, Suffix: \"}\"}\n\tcase reflect.Slice:\n\t\tif v.IsNil() {\n\t\t\treturn textNil\n\t\t}\n\n\t\t// Check whether this is a []byte of text data.\n\t\tif t.Elem() == byteType {\n\t\t\tb := v.Bytes()\n\t\t\tisPrintSpace := func(r rune) bool { return unicode.IsPrint(r) || unicode.IsSpace(r) }\n\t\t\tif len(b) > 0 && utf8.Valid(b) && len(bytes.TrimFunc(b, isPrintSpace)) == 0 {\n\t\t\t\tout = opts.formatString(\"\", string(b))\n\t\t\t\tskipType = true\n\t\t\t\treturn opts.FormatType(t, out)\n\t\t\t}\n\t\t}\n\n\t\tfallthrough\n\tcase reflect.Array:\n\t\tmaxLen := v.Len()\n\t\tif opts.LimitVerbosity {\n\t\t\tmaxLen = ((1 << opts.verbosity()) >> 1) << 2 // 0, 4, 8, 16, 32, etc...\n\t\t\topts.VerbosityLevel--\n\t\t}\n\t\tvar list textList\n\t\tfor i := 0; i < v.Len(); i++ {\n\t\t\tif len(list) == maxLen {\n\t\t\t\tlist.AppendEllipsis(diffStats{})\n\t\t\t\tbreak\n\t\t\t}\n\t\t\ts := opts.WithTypeMode(elideType).FormatValue(v.Index(i), t.Kind(), ptrs)\n\t\t\tlist = append(list, textRecord{Value: s})\n\t\t}\n\n\t\tout = &textWrap{Prefix: \"{\", Value: list, Suffix: \"}\"}\n\t\tif t.Kind() == reflect.Slice && opts.PrintAddresses {\n\t\t\theader := fmt.Sprintf(\"ptr:%v, len:%d, cap:%d\", formatPointer(value.PointerOf(v), false), v.Len(), v.Cap())\n\t\t\tout = &textWrap{Prefix: pointerDelimPrefix + header + pointerDelimSuffix, Value: out}\n\t\t}\n\t\treturn out\n\tcase reflect.Map:\n\t\tif v.IsNil() {\n\t\t\treturn textNil\n\t\t}\n\n\t\t// Check pointer for cycles.\n\t\tptrRef, visited := ptrs.Push(v)\n\t\tif visited {\n\t\t\treturn makeLeafReference(ptrRef, opts.PrintAddresses)\n\t\t}\n\t\tdefer ptrs.Pop()\n\n\t\tmaxLen := v.Len()\n\t\tif opts.LimitVerbosity {\n\t\t\tmaxLen = ((1 << opts.verbosity()) >> 1) << 2 // 0, 4, 8, 16, 32, etc...\n\t\t\topts.VerbosityLevel--\n\t\t}\n\t\tvar list textList\n\t\tfor _, k := range value.SortKeys(v.MapKeys()) {\n\t\t\tif len(list) == maxLen {\n\t\t\t\tlist.AppendEllipsis(diffStats{})\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tsk := formatMapKey(k, false, ptrs)\n\t\t\tsv := opts.WithTypeMode(elideType).FormatValue(v.MapIndex(k), t.Kind(), ptrs)\n\t\t\tlist = append(list, textRecord{Key: sk, Value: sv})\n\t\t}\n\n\t\tout = &textWrap{Prefix: \"{\", Value: list, Suffix: \"}\"}\n\t\tout = wrapTrunkReference(ptrRef, opts.PrintAddresses, out)\n\t\treturn out\n\tcase reflect.Ptr:\n\t\tif v.IsNil() {\n\t\t\treturn textNil\n\t\t}\n\n\t\t// Check pointer for cycles.\n\t\tptrRef, visited := ptrs.Push(v)\n\t\tif visited {\n\t\t\tout = makeLeafReference(ptrRef, opts.PrintAddresses)\n\t\t\treturn &textWrap{Prefix: \"&\", Value: out}\n\t\t}\n\t\tdefer ptrs.Pop()\n\n\t\t// Skip the name only if this is an unnamed pointer type.\n\t\t// Otherwise taking the address of a value does not reproduce\n\t\t// the named pointer type.\n\t\tif v.Type().Name() == \"\" {\n\t\t\tskipType = true // Let the underlying value print the type instead\n\t\t}\n\t\tout = opts.FormatValue(v.Elem(), t.Kind(), ptrs)\n\t\tout = wrapTrunkReference(ptrRef, opts.PrintAddresses, out)\n\t\tout = &textWrap{Prefix: \"&\", Value: out}\n\t\treturn out\n\tcase reflect.Interface:\n\t\tif v.IsNil() {\n\t\t\treturn textNil\n\t\t}\n\t\t// Interfaces accept different concrete types,\n\t\t// so configure the underlying value to explicitly print the type.\n\t\treturn opts.WithTypeMode(emitType).FormatValue(v.Elem(), t.Kind(), ptrs)\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"%v kind not handled\", v.Kind()))\n\t}\n}\n\nfunc (opts formatOptions) formatString(prefix, s string) textNode {\n\tmaxLen := len(s)\n\tmaxLines := strings.Count(s, \"\\n\") + 1\n\tif opts.LimitVerbosity {\n\t\tmaxLen = (1 << opts.verbosity()) << 5   // 32, 64, 128, 256, etc...\n\t\tmaxLines = (1 << opts.verbosity()) << 2 //  4, 8, 16, 32, 64, etc...\n\t}\n\n\t// For multiline strings, use the triple-quote syntax,\n\t// but only use it when printing removed or inserted nodes since\n\t// we only want the extra verbosity for those cases.\n\tlines := strings.Split(strings.TrimSuffix(s, \"\\n\"), \"\\n\")\n\tisTripleQuoted := len(lines) >= 4 && (opts.DiffMode == '-' || opts.DiffMode == '+')\n\tfor i := 0; i < len(lines) && isTripleQuoted; i++ {\n\t\tlines[i] = strings.TrimPrefix(strings.TrimSuffix(lines[i], \"\\r\"), \"\\r\") // trim leading/trailing carriage returns for legacy Windows endline support\n\t\tisPrintable := func(r rune) bool {\n\t\t\treturn unicode.IsPrint(r) || r == '\\t' // specially treat tab as printable\n\t\t}\n\t\tline := lines[i]\n\t\tisTripleQuoted = !strings.HasPrefix(strings.TrimPrefix(line, prefix), `\"\"\"`) && !strings.HasPrefix(line, \"...\") && strings.TrimFunc(line, isPrintable) == \"\" && len(line) <= maxLen\n\t}\n\tif isTripleQuoted {\n\t\tvar list textList\n\t\tlist = append(list, textRecord{Diff: opts.DiffMode, Value: textLine(prefix + `\"\"\"`), ElideComma: true})\n\t\tfor i, line := range lines {\n\t\t\tif numElided := len(lines) - i; i == maxLines-1 && numElided > 1 {\n\t\t\t\tcomment := commentString(fmt.Sprintf(\"%d elided lines\", numElided))\n\t\t\t\tlist = append(list, textRecord{Diff: opts.DiffMode, Value: textEllipsis, ElideComma: true, Comment: comment})\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tlist = append(list, textRecord{Diff: opts.DiffMode, Value: textLine(line), ElideComma: true})\n\t\t}\n\t\tlist = append(list, textRecord{Diff: opts.DiffMode, Value: textLine(prefix + `\"\"\"`), ElideComma: true})\n\t\treturn &textWrap{Prefix: \"(\", Value: list, Suffix: \")\"}\n\t}\n\n\t// Format the string as a single-line quoted string.\n\tif len(s) > maxLen+len(textEllipsis) {\n\t\treturn textLine(prefix + formatString(s[:maxLen]) + string(textEllipsis))\n\t}\n\treturn textLine(prefix + formatString(s))\n}\n\n// formatMapKey formats v as if it were a map key.\n// The result is guaranteed to be a single line.\nfunc formatMapKey(v reflect.Value, disambiguate bool, ptrs *pointerReferences) string {\n\tvar opts formatOptions\n\topts.DiffMode = diffIdentical\n\topts.TypeMode = elideType\n\topts.PrintAddresses = disambiguate\n\topts.AvoidStringer = disambiguate\n\topts.QualifiedNames = disambiguate\n\topts.VerbosityLevel = maxVerbosityPreset\n\topts.LimitVerbosity = true\n\ts := opts.FormatValue(v, reflect.Map, ptrs).String()\n\treturn strings.TrimSpace(s)\n}\n\n// formatString prints s as a double-quoted or backtick-quoted string.\nfunc formatString(s string) string {\n\t// Use quoted string if it the same length as a raw string literal.\n\t// Otherwise, attempt to use the raw string form.\n\tqs := strconv.Quote(s)\n\tif len(qs) == 1+len(s)+1 {\n\t\treturn qs\n\t}\n\n\t// Disallow newlines to ensure output is a single line.\n\t// Only allow printable runes for readability purposes.\n\trawInvalid := func(r rune) bool {\n\t\treturn r == '`' || r == '\\n' || !(unicode.IsPrint(r) || r == '\\t')\n\t}\n\tif utf8.ValidString(s) && strings.IndexFunc(s, rawInvalid) < 0 {\n\t\treturn \"`\" + s + \"`\"\n\t}\n\treturn qs\n}\n\n// formatHex prints u as a hexadecimal integer in Go notation.\nfunc formatHex(u uint64) string {\n\tvar f string\n\tswitch {\n\tcase u <= 0xff:\n\t\tf = \"0x%02x\"\n\tcase u <= 0xffff:\n\t\tf = \"0x%04x\"\n\tcase u <= 0xffffff:\n\t\tf = \"0x%06x\"\n\tcase u <= 0xffffffff:\n\t\tf = \"0x%08x\"\n\tcase u <= 0xffffffffff:\n\t\tf = \"0x%010x\"\n\tcase u <= 0xffffffffffff:\n\t\tf = \"0x%012x\"\n\tcase u <= 0xffffffffffffff:\n\t\tf = \"0x%014x\"\n\tcase u <= 0xffffffffffffffff:\n\t\tf = \"0x%016x\"\n\t}\n\treturn fmt.Sprintf(f, u)\n}\n"
  },
  {
    "path": "tests/vendor/github.com/google/go-cmp/cmp/report_slices.go",
    "content": "// Copyright 2019, The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage cmp\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"math\"\n\t\"reflect\"\n\t\"strconv\"\n\t\"strings\"\n\t\"unicode\"\n\t\"unicode/utf8\"\n\n\t\"github.com/google/go-cmp/cmp/internal/diff\"\n)\n\n// CanFormatDiffSlice reports whether we support custom formatting for nodes\n// that are slices of primitive kinds or strings.\nfunc (opts formatOptions) CanFormatDiffSlice(v *valueNode) bool {\n\tswitch {\n\tcase opts.DiffMode != diffUnknown:\n\t\treturn false // Must be formatting in diff mode\n\tcase v.NumDiff == 0:\n\t\treturn false // No differences detected\n\tcase !v.ValueX.IsValid() || !v.ValueY.IsValid():\n\t\treturn false // Both values must be valid\n\tcase v.NumIgnored > 0:\n\t\treturn false // Some ignore option was used\n\tcase v.NumTransformed > 0:\n\t\treturn false // Some transform option was used\n\tcase v.NumCompared > 1:\n\t\treturn false // More than one comparison was used\n\tcase v.NumCompared == 1 && v.Type.Name() != \"\":\n\t\t// The need for cmp to check applicability of options on every element\n\t\t// in a slice is a significant performance detriment for large []byte.\n\t\t// The workaround is to specify Comparer(bytes.Equal),\n\t\t// which enables cmp to compare []byte more efficiently.\n\t\t// If they differ, we still want to provide batched diffing.\n\t\t// The logic disallows named types since they tend to have their own\n\t\t// String method, with nicer formatting than what this provides.\n\t\treturn false\n\t}\n\n\t// Check whether this is an interface with the same concrete types.\n\tt := v.Type\n\tvx, vy := v.ValueX, v.ValueY\n\tif t.Kind() == reflect.Interface && !vx.IsNil() && !vy.IsNil() && vx.Elem().Type() == vy.Elem().Type() {\n\t\tvx, vy = vx.Elem(), vy.Elem()\n\t\tt = vx.Type()\n\t}\n\n\t// Check whether we provide specialized diffing for this type.\n\tswitch t.Kind() {\n\tcase reflect.String:\n\tcase reflect.Array, reflect.Slice:\n\t\t// Only slices of primitive types have specialized handling.\n\t\tswitch t.Elem().Kind() {\n\t\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64,\n\t\t\treflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr,\n\t\t\treflect.Bool, reflect.Float32, reflect.Float64, reflect.Complex64, reflect.Complex128:\n\t\tdefault:\n\t\t\treturn false\n\t\t}\n\n\t\t// Both slice values have to be non-empty.\n\t\tif t.Kind() == reflect.Slice && (vx.Len() == 0 || vy.Len() == 0) {\n\t\t\treturn false\n\t\t}\n\n\t\t// If a sufficient number of elements already differ,\n\t\t// use specialized formatting even if length requirement is not met.\n\t\tif v.NumDiff > v.NumSame {\n\t\t\treturn true\n\t\t}\n\tdefault:\n\t\treturn false\n\t}\n\n\t// Use specialized string diffing for longer slices or strings.\n\tconst minLength = 32\n\treturn vx.Len() >= minLength && vy.Len() >= minLength\n}\n\n// FormatDiffSlice prints a diff for the slices (or strings) represented by v.\n// This provides custom-tailored logic to make printing of differences in\n// textual strings and slices of primitive kinds more readable.\nfunc (opts formatOptions) FormatDiffSlice(v *valueNode) textNode {\n\tassert(opts.DiffMode == diffUnknown)\n\tt, vx, vy := v.Type, v.ValueX, v.ValueY\n\tif t.Kind() == reflect.Interface {\n\t\tvx, vy = vx.Elem(), vy.Elem()\n\t\tt = vx.Type()\n\t\topts = opts.WithTypeMode(emitType)\n\t}\n\n\t// Auto-detect the type of the data.\n\tvar sx, sy string\n\tvar ssx, ssy []string\n\tvar isString, isMostlyText, isPureLinedText, isBinary bool\n\tswitch {\n\tcase t.Kind() == reflect.String:\n\t\tsx, sy = vx.String(), vy.String()\n\t\tisString = true\n\tcase t.Kind() == reflect.Slice && t.Elem() == byteType:\n\t\tsx, sy = string(vx.Bytes()), string(vy.Bytes())\n\t\tisString = true\n\tcase t.Kind() == reflect.Array:\n\t\t// Arrays need to be addressable for slice operations to work.\n\t\tvx2, vy2 := reflect.New(t).Elem(), reflect.New(t).Elem()\n\t\tvx2.Set(vx)\n\t\tvy2.Set(vy)\n\t\tvx, vy = vx2, vy2\n\t}\n\tif isString {\n\t\tvar numTotalRunes, numValidRunes, numLines, lastLineIdx, maxLineLen int\n\t\tfor i, r := range sx + sy {\n\t\t\tnumTotalRunes++\n\t\t\tif (unicode.IsPrint(r) || unicode.IsSpace(r)) && r != utf8.RuneError {\n\t\t\t\tnumValidRunes++\n\t\t\t}\n\t\t\tif r == '\\n' {\n\t\t\t\tif maxLineLen < i-lastLineIdx {\n\t\t\t\t\tmaxLineLen = i - lastLineIdx\n\t\t\t\t}\n\t\t\t\tlastLineIdx = i + 1\n\t\t\t\tnumLines++\n\t\t\t}\n\t\t}\n\t\tisPureText := numValidRunes == numTotalRunes\n\t\tisMostlyText = float64(numValidRunes) > math.Floor(0.90*float64(numTotalRunes))\n\t\tisPureLinedText = isPureText && numLines >= 4 && maxLineLen <= 1024\n\t\tisBinary = !isMostlyText\n\n\t\t// Avoid diffing by lines if it produces a significantly more complex\n\t\t// edit script than diffing by bytes.\n\t\tif isPureLinedText {\n\t\t\tssx = strings.Split(sx, \"\\n\")\n\t\t\tssy = strings.Split(sy, \"\\n\")\n\t\t\tesLines := diff.Difference(len(ssx), len(ssy), func(ix, iy int) diff.Result {\n\t\t\t\treturn diff.BoolResult(ssx[ix] == ssy[iy])\n\t\t\t})\n\t\t\tesBytes := diff.Difference(len(sx), len(sy), func(ix, iy int) diff.Result {\n\t\t\t\treturn diff.BoolResult(sx[ix] == sy[iy])\n\t\t\t})\n\t\t\tefficiencyLines := float64(esLines.Dist()) / float64(len(esLines))\n\t\t\tefficiencyBytes := float64(esBytes.Dist()) / float64(len(esBytes))\n\t\t\tquotedLength := len(strconv.Quote(sx + sy))\n\t\t\tunquotedLength := len(sx) + len(sy)\n\t\t\tescapeExpansionRatio := float64(quotedLength) / float64(unquotedLength)\n\t\t\tisPureLinedText = efficiencyLines < 4*efficiencyBytes || escapeExpansionRatio > 1.1\n\t\t}\n\t}\n\n\t// Format the string into printable records.\n\tvar list textList\n\tvar delim string\n\tswitch {\n\t// If the text appears to be multi-lined text,\n\t// then perform differencing across individual lines.\n\tcase isPureLinedText:\n\t\tlist = opts.formatDiffSlice(\n\t\t\treflect.ValueOf(ssx), reflect.ValueOf(ssy), 1, \"line\",\n\t\t\tfunc(v reflect.Value, d diffMode) textRecord {\n\t\t\t\ts := formatString(v.Index(0).String())\n\t\t\t\treturn textRecord{Diff: d, Value: textLine(s)}\n\t\t\t},\n\t\t)\n\t\tdelim = \"\\n\"\n\n\t\t// If possible, use a custom triple-quote (\"\"\") syntax for printing\n\t\t// differences in a string literal. This format is more readable,\n\t\t// but has edge-cases where differences are visually indistinguishable.\n\t\t// This format is avoided under the following conditions:\n\t\t//   - A line starts with `\"\"\"`\n\t\t//   - A line starts with \"...\"\n\t\t//   - A line contains non-printable characters\n\t\t//   - Adjacent different lines differ only by whitespace\n\t\t//\n\t\t// For example:\n\t\t//\n\t\t//\t\t\"\"\"\n\t\t//\t\t... // 3 identical lines\n\t\t//\t\tfoo\n\t\t//\t\tbar\n\t\t//\t-\tbaz\n\t\t//\t+\tBAZ\n\t\t//\t\t\"\"\"\n\t\tisTripleQuoted := true\n\t\tprevRemoveLines := map[string]bool{}\n\t\tprevInsertLines := map[string]bool{}\n\t\tvar list2 textList\n\t\tlist2 = append(list2, textRecord{Value: textLine(`\"\"\"`), ElideComma: true})\n\t\tfor _, r := range list {\n\t\t\tif !r.Value.Equal(textEllipsis) {\n\t\t\t\tline, _ := strconv.Unquote(string(r.Value.(textLine)))\n\t\t\t\tline = strings.TrimPrefix(strings.TrimSuffix(line, \"\\r\"), \"\\r\") // trim leading/trailing carriage returns for legacy Windows endline support\n\t\t\t\tnormLine := strings.Map(func(r rune) rune {\n\t\t\t\t\tif unicode.IsSpace(r) {\n\t\t\t\t\t\treturn -1 // drop whitespace to avoid visually indistinguishable output\n\t\t\t\t\t}\n\t\t\t\t\treturn r\n\t\t\t\t}, line)\n\t\t\t\tisPrintable := func(r rune) bool {\n\t\t\t\t\treturn unicode.IsPrint(r) || r == '\\t' // specially treat tab as printable\n\t\t\t\t}\n\t\t\t\tisTripleQuoted = !strings.HasPrefix(line, `\"\"\"`) && !strings.HasPrefix(line, \"...\") && strings.TrimFunc(line, isPrintable) == \"\"\n\t\t\t\tswitch r.Diff {\n\t\t\t\tcase diffRemoved:\n\t\t\t\t\tisTripleQuoted = isTripleQuoted && !prevInsertLines[normLine]\n\t\t\t\t\tprevRemoveLines[normLine] = true\n\t\t\t\tcase diffInserted:\n\t\t\t\t\tisTripleQuoted = isTripleQuoted && !prevRemoveLines[normLine]\n\t\t\t\t\tprevInsertLines[normLine] = true\n\t\t\t\t}\n\t\t\t\tif !isTripleQuoted {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tr.Value = textLine(line)\n\t\t\t\tr.ElideComma = true\n\t\t\t}\n\t\t\tif !(r.Diff == diffRemoved || r.Diff == diffInserted) { // start a new non-adjacent difference group\n\t\t\t\tprevRemoveLines = map[string]bool{}\n\t\t\t\tprevInsertLines = map[string]bool{}\n\t\t\t}\n\t\t\tlist2 = append(list2, r)\n\t\t}\n\t\tif r := list2[len(list2)-1]; r.Diff == diffIdentical && len(r.Value.(textLine)) == 0 {\n\t\t\tlist2 = list2[:len(list2)-1] // elide single empty line at the end\n\t\t}\n\t\tlist2 = append(list2, textRecord{Value: textLine(`\"\"\"`), ElideComma: true})\n\t\tif isTripleQuoted {\n\t\t\tvar out textNode = &textWrap{Prefix: \"(\", Value: list2, Suffix: \")\"}\n\t\t\tswitch t.Kind() {\n\t\t\tcase reflect.String:\n\t\t\t\tif t != stringType {\n\t\t\t\t\tout = opts.FormatType(t, out)\n\t\t\t\t}\n\t\t\tcase reflect.Slice:\n\t\t\t\t// Always emit type for slices since the triple-quote syntax\n\t\t\t\t// looks like a string (not a slice).\n\t\t\t\topts = opts.WithTypeMode(emitType)\n\t\t\t\tout = opts.FormatType(t, out)\n\t\t\t}\n\t\t\treturn out\n\t\t}\n\n\t// If the text appears to be single-lined text,\n\t// then perform differencing in approximately fixed-sized chunks.\n\t// The output is printed as quoted strings.\n\tcase isMostlyText:\n\t\tlist = opts.formatDiffSlice(\n\t\t\treflect.ValueOf(sx), reflect.ValueOf(sy), 64, \"byte\",\n\t\t\tfunc(v reflect.Value, d diffMode) textRecord {\n\t\t\t\ts := formatString(v.String())\n\t\t\t\treturn textRecord{Diff: d, Value: textLine(s)}\n\t\t\t},\n\t\t)\n\n\t// If the text appears to be binary data,\n\t// then perform differencing in approximately fixed-sized chunks.\n\t// The output is inspired by hexdump.\n\tcase isBinary:\n\t\tlist = opts.formatDiffSlice(\n\t\t\treflect.ValueOf(sx), reflect.ValueOf(sy), 16, \"byte\",\n\t\t\tfunc(v reflect.Value, d diffMode) textRecord {\n\t\t\t\tvar ss []string\n\t\t\t\tfor i := 0; i < v.Len(); i++ {\n\t\t\t\t\tss = append(ss, formatHex(v.Index(i).Uint()))\n\t\t\t\t}\n\t\t\t\ts := strings.Join(ss, \", \")\n\t\t\t\tcomment := commentString(fmt.Sprintf(\"%c|%v|\", d, formatASCII(v.String())))\n\t\t\t\treturn textRecord{Diff: d, Value: textLine(s), Comment: comment}\n\t\t\t},\n\t\t)\n\n\t// For all other slices of primitive types,\n\t// then perform differencing in approximately fixed-sized chunks.\n\t// The size of each chunk depends on the width of the element kind.\n\tdefault:\n\t\tvar chunkSize int\n\t\tif t.Elem().Kind() == reflect.Bool {\n\t\t\tchunkSize = 16\n\t\t} else {\n\t\t\tswitch t.Elem().Bits() {\n\t\t\tcase 8:\n\t\t\t\tchunkSize = 16\n\t\t\tcase 16:\n\t\t\t\tchunkSize = 12\n\t\t\tcase 32:\n\t\t\t\tchunkSize = 8\n\t\t\tdefault:\n\t\t\t\tchunkSize = 8\n\t\t\t}\n\t\t}\n\t\tlist = opts.formatDiffSlice(\n\t\t\tvx, vy, chunkSize, t.Elem().Kind().String(),\n\t\t\tfunc(v reflect.Value, d diffMode) textRecord {\n\t\t\t\tvar ss []string\n\t\t\t\tfor i := 0; i < v.Len(); i++ {\n\t\t\t\t\tswitch t.Elem().Kind() {\n\t\t\t\t\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\t\t\t\t\tss = append(ss, fmt.Sprint(v.Index(i).Int()))\n\t\t\t\t\tcase reflect.Uint, reflect.Uint16, reflect.Uint32, reflect.Uint64:\n\t\t\t\t\t\tss = append(ss, fmt.Sprint(v.Index(i).Uint()))\n\t\t\t\t\tcase reflect.Uint8, reflect.Uintptr:\n\t\t\t\t\t\tss = append(ss, formatHex(v.Index(i).Uint()))\n\t\t\t\t\tcase reflect.Bool, reflect.Float32, reflect.Float64, reflect.Complex64, reflect.Complex128:\n\t\t\t\t\t\tss = append(ss, fmt.Sprint(v.Index(i).Interface()))\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ts := strings.Join(ss, \", \")\n\t\t\t\treturn textRecord{Diff: d, Value: textLine(s)}\n\t\t\t},\n\t\t)\n\t}\n\n\t// Wrap the output with appropriate type information.\n\tvar out textNode = &textWrap{Prefix: \"{\", Value: list, Suffix: \"}\"}\n\tif !isMostlyText {\n\t\t// The \"{...}\" byte-sequence literal is not valid Go syntax for strings.\n\t\t// Emit the type for extra clarity (e.g. \"string{...}\").\n\t\tif t.Kind() == reflect.String {\n\t\t\topts = opts.WithTypeMode(emitType)\n\t\t}\n\t\treturn opts.FormatType(t, out)\n\t}\n\tswitch t.Kind() {\n\tcase reflect.String:\n\t\tout = &textWrap{Prefix: \"strings.Join(\", Value: out, Suffix: fmt.Sprintf(\", %q)\", delim)}\n\t\tif t != stringType {\n\t\t\tout = opts.FormatType(t, out)\n\t\t}\n\tcase reflect.Slice:\n\t\tout = &textWrap{Prefix: \"bytes.Join(\", Value: out, Suffix: fmt.Sprintf(\", %q)\", delim)}\n\t\tif t != bytesType {\n\t\t\tout = opts.FormatType(t, out)\n\t\t}\n\t}\n\treturn out\n}\n\n// formatASCII formats s as an ASCII string.\n// This is useful for printing binary strings in a semi-legible way.\nfunc formatASCII(s string) string {\n\tb := bytes.Repeat([]byte{'.'}, len(s))\n\tfor i := 0; i < len(s); i++ {\n\t\tif ' ' <= s[i] && s[i] <= '~' {\n\t\t\tb[i] = s[i]\n\t\t}\n\t}\n\treturn string(b)\n}\n\nfunc (opts formatOptions) formatDiffSlice(\n\tvx, vy reflect.Value, chunkSize int, name string,\n\tmakeRec func(reflect.Value, diffMode) textRecord,\n) (list textList) {\n\teq := func(ix, iy int) bool {\n\t\treturn vx.Index(ix).Interface() == vy.Index(iy).Interface()\n\t}\n\tes := diff.Difference(vx.Len(), vy.Len(), func(ix, iy int) diff.Result {\n\t\treturn diff.BoolResult(eq(ix, iy))\n\t})\n\n\tappendChunks := func(v reflect.Value, d diffMode) int {\n\t\tn0 := v.Len()\n\t\tfor v.Len() > 0 {\n\t\t\tn := chunkSize\n\t\t\tif n > v.Len() {\n\t\t\t\tn = v.Len()\n\t\t\t}\n\t\t\tlist = append(list, makeRec(v.Slice(0, n), d))\n\t\t\tv = v.Slice(n, v.Len())\n\t\t}\n\t\treturn n0 - v.Len()\n\t}\n\n\tvar numDiffs int\n\tmaxLen := -1\n\tif opts.LimitVerbosity {\n\t\tmaxLen = (1 << opts.verbosity()) << 2 // 4, 8, 16, 32, 64, etc...\n\t\topts.VerbosityLevel--\n\t}\n\n\tgroups := coalesceAdjacentEdits(name, es)\n\tgroups = coalesceInterveningIdentical(groups, chunkSize/4)\n\tgroups = cleanupSurroundingIdentical(groups, eq)\n\tmaxGroup := diffStats{Name: name}\n\tfor i, ds := range groups {\n\t\tif maxLen >= 0 && numDiffs >= maxLen {\n\t\t\tmaxGroup = maxGroup.Append(ds)\n\t\t\tcontinue\n\t\t}\n\n\t\t// Print equal.\n\t\tif ds.NumDiff() == 0 {\n\t\t\t// Compute the number of leading and trailing equal bytes to print.\n\t\t\tvar numLo, numHi int\n\t\t\tnumEqual := ds.NumIgnored + ds.NumIdentical\n\t\t\tfor numLo < chunkSize*numContextRecords && numLo+numHi < numEqual && i != 0 {\n\t\t\t\tnumLo++\n\t\t\t}\n\t\t\tfor numHi < chunkSize*numContextRecords && numLo+numHi < numEqual && i != len(groups)-1 {\n\t\t\t\tnumHi++\n\t\t\t}\n\t\t\tif numEqual-(numLo+numHi) <= chunkSize && ds.NumIgnored == 0 {\n\t\t\t\tnumHi = numEqual - numLo // Avoid pointless coalescing of single equal row\n\t\t\t}\n\n\t\t\t// Print the equal bytes.\n\t\t\tappendChunks(vx.Slice(0, numLo), diffIdentical)\n\t\t\tif numEqual > numLo+numHi {\n\t\t\t\tds.NumIdentical -= numLo + numHi\n\t\t\t\tlist.AppendEllipsis(ds)\n\t\t\t}\n\t\t\tappendChunks(vx.Slice(numEqual-numHi, numEqual), diffIdentical)\n\t\t\tvx = vx.Slice(numEqual, vx.Len())\n\t\t\tvy = vy.Slice(numEqual, vy.Len())\n\t\t\tcontinue\n\t\t}\n\n\t\t// Print unequal.\n\t\tlen0 := len(list)\n\t\tnx := appendChunks(vx.Slice(0, ds.NumIdentical+ds.NumRemoved+ds.NumModified), diffRemoved)\n\t\tvx = vx.Slice(nx, vx.Len())\n\t\tny := appendChunks(vy.Slice(0, ds.NumIdentical+ds.NumInserted+ds.NumModified), diffInserted)\n\t\tvy = vy.Slice(ny, vy.Len())\n\t\tnumDiffs += len(list) - len0\n\t}\n\tif maxGroup.IsZero() {\n\t\tassert(vx.Len() == 0 && vy.Len() == 0)\n\t} else {\n\t\tlist.AppendEllipsis(maxGroup)\n\t}\n\treturn list\n}\n\n// coalesceAdjacentEdits coalesces the list of edits into groups of adjacent\n// equal or unequal counts.\n//\n// Example:\n//\n//\tInput:  \"..XXY...Y\"\n//\tOutput: [\n//\t\t{NumIdentical: 2},\n//\t\t{NumRemoved: 2, NumInserted 1},\n//\t\t{NumIdentical: 3},\n//\t\t{NumInserted: 1},\n//\t]\nfunc coalesceAdjacentEdits(name string, es diff.EditScript) (groups []diffStats) {\n\tvar prevMode byte\n\tlastStats := func(mode byte) *diffStats {\n\t\tif prevMode != mode {\n\t\t\tgroups = append(groups, diffStats{Name: name})\n\t\t\tprevMode = mode\n\t\t}\n\t\treturn &groups[len(groups)-1]\n\t}\n\tfor _, e := range es {\n\t\tswitch e {\n\t\tcase diff.Identity:\n\t\t\tlastStats('=').NumIdentical++\n\t\tcase diff.UniqueX:\n\t\t\tlastStats('!').NumRemoved++\n\t\tcase diff.UniqueY:\n\t\t\tlastStats('!').NumInserted++\n\t\tcase diff.Modified:\n\t\t\tlastStats('!').NumModified++\n\t\t}\n\t}\n\treturn groups\n}\n\n// coalesceInterveningIdentical coalesces sufficiently short (<= windowSize)\n// equal groups into adjacent unequal groups that currently result in a\n// dual inserted/removed printout. This acts as a high-pass filter to smooth\n// out high-frequency changes within the windowSize.\n//\n// Example:\n//\n//\tWindowSize: 16,\n//\tInput: [\n//\t\t{NumIdentical: 61},              // group 0\n//\t\t{NumRemoved: 3, NumInserted: 1}, // group 1\n//\t\t{NumIdentical: 6},               // ├── coalesce\n//\t\t{NumInserted: 2},                // ├── coalesce\n//\t\t{NumIdentical: 1},               // ├── coalesce\n//\t\t{NumRemoved: 9},                 // └── coalesce\n//\t\t{NumIdentical: 64},              // group 2\n//\t\t{NumRemoved: 3, NumInserted: 1}, // group 3\n//\t\t{NumIdentical: 6},               // ├── coalesce\n//\t\t{NumInserted: 2},                // ├── coalesce\n//\t\t{NumIdentical: 1},               // ├── coalesce\n//\t\t{NumRemoved: 7},                 // ├── coalesce\n//\t\t{NumIdentical: 1},               // ├── coalesce\n//\t\t{NumRemoved: 2},                 // └── coalesce\n//\t\t{NumIdentical: 63},              // group 4\n//\t]\n//\tOutput: [\n//\t\t{NumIdentical: 61},\n//\t\t{NumIdentical: 7, NumRemoved: 12, NumInserted: 3},\n//\t\t{NumIdentical: 64},\n//\t\t{NumIdentical: 8, NumRemoved: 12, NumInserted: 3},\n//\t\t{NumIdentical: 63},\n//\t]\nfunc coalesceInterveningIdentical(groups []diffStats, windowSize int) []diffStats {\n\tgroups, groupsOrig := groups[:0], groups\n\tfor i, ds := range groupsOrig {\n\t\tif len(groups) >= 2 && ds.NumDiff() > 0 {\n\t\t\tprev := &groups[len(groups)-2] // Unequal group\n\t\t\tcurr := &groups[len(groups)-1] // Equal group\n\t\t\tnext := &groupsOrig[i]         // Unequal group\n\t\t\thadX, hadY := prev.NumRemoved > 0, prev.NumInserted > 0\n\t\t\thasX, hasY := next.NumRemoved > 0, next.NumInserted > 0\n\t\t\tif ((hadX || hasX) && (hadY || hasY)) && curr.NumIdentical <= windowSize {\n\t\t\t\t*prev = prev.Append(*curr).Append(*next)\n\t\t\t\tgroups = groups[:len(groups)-1] // Truncate off equal group\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\t\tgroups = append(groups, ds)\n\t}\n\treturn groups\n}\n\n// cleanupSurroundingIdentical scans through all unequal groups, and\n// moves any leading sequence of equal elements to the preceding equal group and\n// moves and trailing sequence of equal elements to the succeeding equal group.\n//\n// This is necessary since coalesceInterveningIdentical may coalesce edit groups\n// together such that leading/trailing spans of equal elements becomes possible.\n// Note that this can occur even with an optimal diffing algorithm.\n//\n// Example:\n//\n//\tInput: [\n//\t\t{NumIdentical: 61},\n//\t\t{NumIdentical: 1 , NumRemoved: 11, NumInserted: 2}, // assume 3 leading identical elements\n//\t\t{NumIdentical: 67},\n//\t\t{NumIdentical: 7, NumRemoved: 12, NumInserted: 3},  // assume 10 trailing identical elements\n//\t\t{NumIdentical: 54},\n//\t]\n//\tOutput: [\n//\t\t{NumIdentical: 64}, // incremented by 3\n//\t\t{NumRemoved: 9},\n//\t\t{NumIdentical: 67},\n//\t\t{NumRemoved: 9},\n//\t\t{NumIdentical: 64}, // incremented by 10\n//\t]\nfunc cleanupSurroundingIdentical(groups []diffStats, eq func(i, j int) bool) []diffStats {\n\tvar ix, iy int // indexes into sequence x and y\n\tfor i, ds := range groups {\n\t\t// Handle equal group.\n\t\tif ds.NumDiff() == 0 {\n\t\t\tix += ds.NumIdentical\n\t\t\tiy += ds.NumIdentical\n\t\t\tcontinue\n\t\t}\n\n\t\t// Handle unequal group.\n\t\tnx := ds.NumIdentical + ds.NumRemoved + ds.NumModified\n\t\tny := ds.NumIdentical + ds.NumInserted + ds.NumModified\n\t\tvar numLeadingIdentical, numTrailingIdentical int\n\t\tfor j := 0; j < nx && j < ny && eq(ix+j, iy+j); j++ {\n\t\t\tnumLeadingIdentical++\n\t\t}\n\t\tfor j := 0; j < nx && j < ny && eq(ix+nx-1-j, iy+ny-1-j); j++ {\n\t\t\tnumTrailingIdentical++\n\t\t}\n\t\tif numIdentical := numLeadingIdentical + numTrailingIdentical; numIdentical > 0 {\n\t\t\tif numLeadingIdentical > 0 {\n\t\t\t\t// Remove leading identical span from this group and\n\t\t\t\t// insert it into the preceding group.\n\t\t\t\tif i-1 >= 0 {\n\t\t\t\t\tgroups[i-1].NumIdentical += numLeadingIdentical\n\t\t\t\t} else {\n\t\t\t\t\t// No preceding group exists, so prepend a new group,\n\t\t\t\t\t// but do so after we finish iterating over all groups.\n\t\t\t\t\tdefer func() {\n\t\t\t\t\t\tgroups = append([]diffStats{{Name: groups[0].Name, NumIdentical: numLeadingIdentical}}, groups...)\n\t\t\t\t\t}()\n\t\t\t\t}\n\t\t\t\t// Increment indexes since the preceding group would have handled this.\n\t\t\t\tix += numLeadingIdentical\n\t\t\t\tiy += numLeadingIdentical\n\t\t\t}\n\t\t\tif numTrailingIdentical > 0 {\n\t\t\t\t// Remove trailing identical span from this group and\n\t\t\t\t// insert it into the succeeding group.\n\t\t\t\tif i+1 < len(groups) {\n\t\t\t\t\tgroups[i+1].NumIdentical += numTrailingIdentical\n\t\t\t\t} else {\n\t\t\t\t\t// No succeeding group exists, so append a new group,\n\t\t\t\t\t// but do so after we finish iterating over all groups.\n\t\t\t\t\tdefer func() {\n\t\t\t\t\t\tgroups = append(groups, diffStats{Name: groups[len(groups)-1].Name, NumIdentical: numTrailingIdentical})\n\t\t\t\t\t}()\n\t\t\t\t}\n\t\t\t\t// Do not increment indexes since the succeeding group will handle this.\n\t\t\t}\n\n\t\t\t// Update this group since some identical elements were removed.\n\t\t\tnx -= numIdentical\n\t\t\tny -= numIdentical\n\t\t\tgroups[i] = diffStats{Name: ds.Name, NumRemoved: nx, NumInserted: ny}\n\t\t}\n\t\tix += nx\n\t\tiy += ny\n\t}\n\treturn groups\n}\n"
  },
  {
    "path": "tests/vendor/github.com/google/go-cmp/cmp/report_text.go",
    "content": "// Copyright 2019, The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage cmp\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"math/rand\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"github.com/google/go-cmp/cmp/internal/flags\"\n)\n\nvar randBool = rand.New(rand.NewSource(time.Now().Unix())).Intn(2) == 0\n\nconst maxColumnLength = 80\n\ntype indentMode int\n\nfunc (n indentMode) appendIndent(b []byte, d diffMode) []byte {\n\t// The output of Diff is documented as being unstable to provide future\n\t// flexibility in changing the output for more humanly readable reports.\n\t// This logic intentionally introduces instability to the exact output\n\t// so that users can detect accidental reliance on stability early on,\n\t// rather than much later when an actual change to the format occurs.\n\tif flags.Deterministic || randBool {\n\t\t// Use regular spaces (U+0020).\n\t\tswitch d {\n\t\tcase diffUnknown, diffIdentical:\n\t\t\tb = append(b, \"  \"...)\n\t\tcase diffRemoved:\n\t\t\tb = append(b, \"- \"...)\n\t\tcase diffInserted:\n\t\t\tb = append(b, \"+ \"...)\n\t\t}\n\t} else {\n\t\t// Use non-breaking spaces (U+00a0).\n\t\tswitch d {\n\t\tcase diffUnknown, diffIdentical:\n\t\t\tb = append(b, \"  \"...)\n\t\tcase diffRemoved:\n\t\t\tb = append(b, \"- \"...)\n\t\tcase diffInserted:\n\t\t\tb = append(b, \"+ \"...)\n\t\t}\n\t}\n\treturn repeatCount(n).appendChar(b, '\\t')\n}\n\ntype repeatCount int\n\nfunc (n repeatCount) appendChar(b []byte, c byte) []byte {\n\tfor ; n > 0; n-- {\n\t\tb = append(b, c)\n\t}\n\treturn b\n}\n\n// textNode is a simplified tree-based representation of structured text.\n// Possible node types are textWrap, textList, or textLine.\ntype textNode interface {\n\t// Len reports the length in bytes of a single-line version of the tree.\n\t// Nested textRecord.Diff and textRecord.Comment fields are ignored.\n\tLen() int\n\t// Equal reports whether the two trees are structurally identical.\n\t// Nested textRecord.Diff and textRecord.Comment fields are compared.\n\tEqual(textNode) bool\n\t// String returns the string representation of the text tree.\n\t// It is not guaranteed that len(x.String()) == x.Len(),\n\t// nor that x.String() == y.String() implies that x.Equal(y).\n\tString() string\n\n\t// formatCompactTo formats the contents of the tree as a single-line string\n\t// to the provided buffer. Any nested textRecord.Diff and textRecord.Comment\n\t// fields are ignored.\n\t//\n\t// However, not all nodes in the tree should be collapsed as a single-line.\n\t// If a node can be collapsed as a single-line, it is replaced by a textLine\n\t// node. Since the top-level node cannot replace itself, this also returns\n\t// the current node itself.\n\t//\n\t// This does not mutate the receiver.\n\tformatCompactTo([]byte, diffMode) ([]byte, textNode)\n\t// formatExpandedTo formats the contents of the tree as a multi-line string\n\t// to the provided buffer. In order for column alignment to operate well,\n\t// formatCompactTo must be called before calling formatExpandedTo.\n\tformatExpandedTo([]byte, diffMode, indentMode) []byte\n}\n\n// textWrap is a wrapper that concatenates a prefix and/or a suffix\n// to the underlying node.\ntype textWrap struct {\n\tPrefix   string      // e.g., \"bytes.Buffer{\"\n\tValue    textNode    // textWrap | textList | textLine\n\tSuffix   string      // e.g., \"}\"\n\tMetadata interface{} // arbitrary metadata; has no effect on formatting\n}\n\nfunc (s *textWrap) Len() int {\n\treturn len(s.Prefix) + s.Value.Len() + len(s.Suffix)\n}\nfunc (s1 *textWrap) Equal(s2 textNode) bool {\n\tif s2, ok := s2.(*textWrap); ok {\n\t\treturn s1.Prefix == s2.Prefix && s1.Value.Equal(s2.Value) && s1.Suffix == s2.Suffix\n\t}\n\treturn false\n}\nfunc (s *textWrap) String() string {\n\tvar d diffMode\n\tvar n indentMode\n\t_, s2 := s.formatCompactTo(nil, d)\n\tb := n.appendIndent(nil, d)      // Leading indent\n\tb = s2.formatExpandedTo(b, d, n) // Main body\n\tb = append(b, '\\n')              // Trailing newline\n\treturn string(b)\n}\nfunc (s *textWrap) formatCompactTo(b []byte, d diffMode) ([]byte, textNode) {\n\tn0 := len(b) // Original buffer length\n\tb = append(b, s.Prefix...)\n\tb, s.Value = s.Value.formatCompactTo(b, d)\n\tb = append(b, s.Suffix...)\n\tif _, ok := s.Value.(textLine); ok {\n\t\treturn b, textLine(b[n0:])\n\t}\n\treturn b, s\n}\nfunc (s *textWrap) formatExpandedTo(b []byte, d diffMode, n indentMode) []byte {\n\tb = append(b, s.Prefix...)\n\tb = s.Value.formatExpandedTo(b, d, n)\n\tb = append(b, s.Suffix...)\n\treturn b\n}\n\n// textList is a comma-separated list of textWrap or textLine nodes.\n// The list may be formatted as multi-lines or single-line at the discretion\n// of the textList.formatCompactTo method.\ntype textList []textRecord\ntype textRecord struct {\n\tDiff       diffMode     // e.g., 0 or '-' or '+'\n\tKey        string       // e.g., \"MyField\"\n\tValue      textNode     // textWrap | textLine\n\tElideComma bool         // avoid trailing comma\n\tComment    fmt.Stringer // e.g., \"6 identical fields\"\n}\n\n// AppendEllipsis appends a new ellipsis node to the list if none already\n// exists at the end. If cs is non-zero it coalesces the statistics with the\n// previous diffStats.\nfunc (s *textList) AppendEllipsis(ds diffStats) {\n\thasStats := !ds.IsZero()\n\tif len(*s) == 0 || !(*s)[len(*s)-1].Value.Equal(textEllipsis) {\n\t\tif hasStats {\n\t\t\t*s = append(*s, textRecord{Value: textEllipsis, ElideComma: true, Comment: ds})\n\t\t} else {\n\t\t\t*s = append(*s, textRecord{Value: textEllipsis, ElideComma: true})\n\t\t}\n\t\treturn\n\t}\n\tif hasStats {\n\t\t(*s)[len(*s)-1].Comment = (*s)[len(*s)-1].Comment.(diffStats).Append(ds)\n\t}\n}\n\nfunc (s textList) Len() (n int) {\n\tfor i, r := range s {\n\t\tn += len(r.Key)\n\t\tif r.Key != \"\" {\n\t\t\tn += len(\": \")\n\t\t}\n\t\tn += r.Value.Len()\n\t\tif i < len(s)-1 {\n\t\t\tn += len(\", \")\n\t\t}\n\t}\n\treturn n\n}\n\nfunc (s1 textList) Equal(s2 textNode) bool {\n\tif s2, ok := s2.(textList); ok {\n\t\tif len(s1) != len(s2) {\n\t\t\treturn false\n\t\t}\n\t\tfor i := range s1 {\n\t\t\tr1, r2 := s1[i], s2[i]\n\t\t\tif !(r1.Diff == r2.Diff && r1.Key == r2.Key && r1.Value.Equal(r2.Value) && r1.Comment == r2.Comment) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\treturn true\n\t}\n\treturn false\n}\n\nfunc (s textList) String() string {\n\treturn (&textWrap{Prefix: \"{\", Value: s, Suffix: \"}\"}).String()\n}\n\nfunc (s textList) formatCompactTo(b []byte, d diffMode) ([]byte, textNode) {\n\ts = append(textList(nil), s...) // Avoid mutating original\n\n\t// Determine whether we can collapse this list as a single line.\n\tn0 := len(b) // Original buffer length\n\tvar multiLine bool\n\tfor i, r := range s {\n\t\tif r.Diff == diffInserted || r.Diff == diffRemoved {\n\t\t\tmultiLine = true\n\t\t}\n\t\tb = append(b, r.Key...)\n\t\tif r.Key != \"\" {\n\t\t\tb = append(b, \": \"...)\n\t\t}\n\t\tb, s[i].Value = r.Value.formatCompactTo(b, d|r.Diff)\n\t\tif _, ok := s[i].Value.(textLine); !ok {\n\t\t\tmultiLine = true\n\t\t}\n\t\tif r.Comment != nil {\n\t\t\tmultiLine = true\n\t\t}\n\t\tif i < len(s)-1 {\n\t\t\tb = append(b, \", \"...)\n\t\t}\n\t}\n\t// Force multi-lined output when printing a removed/inserted node that\n\t// is sufficiently long.\n\tif (d == diffInserted || d == diffRemoved) && len(b[n0:]) > maxColumnLength {\n\t\tmultiLine = true\n\t}\n\tif !multiLine {\n\t\treturn b, textLine(b[n0:])\n\t}\n\treturn b, s\n}\n\nfunc (s textList) formatExpandedTo(b []byte, d diffMode, n indentMode) []byte {\n\talignKeyLens := s.alignLens(\n\t\tfunc(r textRecord) bool {\n\t\t\t_, isLine := r.Value.(textLine)\n\t\t\treturn r.Key == \"\" || !isLine\n\t\t},\n\t\tfunc(r textRecord) int { return utf8.RuneCountInString(r.Key) },\n\t)\n\talignValueLens := s.alignLens(\n\t\tfunc(r textRecord) bool {\n\t\t\t_, isLine := r.Value.(textLine)\n\t\t\treturn !isLine || r.Value.Equal(textEllipsis) || r.Comment == nil\n\t\t},\n\t\tfunc(r textRecord) int { return utf8.RuneCount(r.Value.(textLine)) },\n\t)\n\n\t// Format lists of simple lists in a batched form.\n\t// If the list is sequence of only textLine values,\n\t// then batch multiple values on a single line.\n\tvar isSimple bool\n\tfor _, r := range s {\n\t\t_, isLine := r.Value.(textLine)\n\t\tisSimple = r.Diff == 0 && r.Key == \"\" && isLine && r.Comment == nil\n\t\tif !isSimple {\n\t\t\tbreak\n\t\t}\n\t}\n\tif isSimple {\n\t\tn++\n\t\tvar batch []byte\n\t\temitBatch := func() {\n\t\t\tif len(batch) > 0 {\n\t\t\t\tb = n.appendIndent(append(b, '\\n'), d)\n\t\t\t\tb = append(b, bytes.TrimRight(batch, \" \")...)\n\t\t\t\tbatch = batch[:0]\n\t\t\t}\n\t\t}\n\t\tfor _, r := range s {\n\t\t\tline := r.Value.(textLine)\n\t\t\tif len(batch)+len(line)+len(\", \") > maxColumnLength {\n\t\t\t\temitBatch()\n\t\t\t}\n\t\t\tbatch = append(batch, line...)\n\t\t\tbatch = append(batch, \", \"...)\n\t\t}\n\t\temitBatch()\n\t\tn--\n\t\treturn n.appendIndent(append(b, '\\n'), d)\n\t}\n\n\t// Format the list as a multi-lined output.\n\tn++\n\tfor i, r := range s {\n\t\tb = n.appendIndent(append(b, '\\n'), d|r.Diff)\n\t\tif r.Key != \"\" {\n\t\t\tb = append(b, r.Key+\": \"...)\n\t\t}\n\t\tb = alignKeyLens[i].appendChar(b, ' ')\n\n\t\tb = r.Value.formatExpandedTo(b, d|r.Diff, n)\n\t\tif !r.ElideComma {\n\t\t\tb = append(b, ',')\n\t\t}\n\t\tb = alignValueLens[i].appendChar(b, ' ')\n\n\t\tif r.Comment != nil {\n\t\t\tb = append(b, \" // \"+r.Comment.String()...)\n\t\t}\n\t}\n\tn--\n\n\treturn n.appendIndent(append(b, '\\n'), d)\n}\n\nfunc (s textList) alignLens(\n\tskipFunc func(textRecord) bool,\n\tlenFunc func(textRecord) int,\n) []repeatCount {\n\tvar startIdx, endIdx, maxLen int\n\tlens := make([]repeatCount, len(s))\n\tfor i, r := range s {\n\t\tif skipFunc(r) {\n\t\t\tfor j := startIdx; j < endIdx && j < len(s); j++ {\n\t\t\t\tlens[j] = repeatCount(maxLen - lenFunc(s[j]))\n\t\t\t}\n\t\t\tstartIdx, endIdx, maxLen = i+1, i+1, 0\n\t\t} else {\n\t\t\tif maxLen < lenFunc(r) {\n\t\t\t\tmaxLen = lenFunc(r)\n\t\t\t}\n\t\t\tendIdx = i + 1\n\t\t}\n\t}\n\tfor j := startIdx; j < endIdx && j < len(s); j++ {\n\t\tlens[j] = repeatCount(maxLen - lenFunc(s[j]))\n\t}\n\treturn lens\n}\n\n// textLine is a single-line segment of text and is always a leaf node\n// in the textNode tree.\ntype textLine []byte\n\nvar (\n\ttextNil      = textLine(\"nil\")\n\ttextEllipsis = textLine(\"...\")\n)\n\nfunc (s textLine) Len() int {\n\treturn len(s)\n}\nfunc (s1 textLine) Equal(s2 textNode) bool {\n\tif s2, ok := s2.(textLine); ok {\n\t\treturn bytes.Equal([]byte(s1), []byte(s2))\n\t}\n\treturn false\n}\nfunc (s textLine) String() string {\n\treturn string(s)\n}\nfunc (s textLine) formatCompactTo(b []byte, d diffMode) ([]byte, textNode) {\n\treturn append(b, s...), s\n}\nfunc (s textLine) formatExpandedTo(b []byte, _ diffMode, _ indentMode) []byte {\n\treturn append(b, s...)\n}\n\ntype diffStats struct {\n\tName         string\n\tNumIgnored   int\n\tNumIdentical int\n\tNumRemoved   int\n\tNumInserted  int\n\tNumModified  int\n}\n\nfunc (s diffStats) IsZero() bool {\n\ts.Name = \"\"\n\treturn s == diffStats{}\n}\n\nfunc (s diffStats) NumDiff() int {\n\treturn s.NumRemoved + s.NumInserted + s.NumModified\n}\n\nfunc (s diffStats) Append(ds diffStats) diffStats {\n\tassert(s.Name == ds.Name)\n\ts.NumIgnored += ds.NumIgnored\n\ts.NumIdentical += ds.NumIdentical\n\ts.NumRemoved += ds.NumRemoved\n\ts.NumInserted += ds.NumInserted\n\ts.NumModified += ds.NumModified\n\treturn s\n}\n\n// String prints a humanly-readable summary of coalesced records.\n//\n// Example:\n//\n//\tdiffStats{Name: \"Field\", NumIgnored: 5}.String() => \"5 ignored fields\"\nfunc (s diffStats) String() string {\n\tvar ss []string\n\tvar sum int\n\tlabels := [...]string{\"ignored\", \"identical\", \"removed\", \"inserted\", \"modified\"}\n\tcounts := [...]int{s.NumIgnored, s.NumIdentical, s.NumRemoved, s.NumInserted, s.NumModified}\n\tfor i, n := range counts {\n\t\tif n > 0 {\n\t\t\tss = append(ss, fmt.Sprintf(\"%d %v\", n, labels[i]))\n\t\t}\n\t\tsum += n\n\t}\n\n\t// Pluralize the name (adjusting for some obscure English grammar rules).\n\tname := s.Name\n\tif sum > 1 {\n\t\tname += \"s\"\n\t\tif strings.HasSuffix(name, \"ys\") {\n\t\t\tname = name[:len(name)-2] + \"ies\" // e.g., \"entrys\" => \"entries\"\n\t\t}\n\t}\n\n\t// Format the list according to English grammar (with Oxford comma).\n\tswitch n := len(ss); n {\n\tcase 0:\n\t\treturn \"\"\n\tcase 1, 2:\n\t\treturn strings.Join(ss, \" and \") + \" \" + name\n\tdefault:\n\t\treturn strings.Join(ss[:n-1], \", \") + \", and \" + ss[n-1] + \" \" + name\n\t}\n}\n\ntype commentString string\n\nfunc (s commentString) String() string { return string(s) }\n"
  },
  {
    "path": "tests/vendor/github.com/google/go-cmp/cmp/report_value.go",
    "content": "// Copyright 2019, The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage cmp\n\nimport \"reflect\"\n\n// valueNode represents a single node within a report, which is a\n// structured representation of the value tree, containing information\n// regarding which nodes are equal or not.\ntype valueNode struct {\n\tparent *valueNode\n\n\tType   reflect.Type\n\tValueX reflect.Value\n\tValueY reflect.Value\n\n\t// NumSame is the number of leaf nodes that are equal.\n\t// All descendants are equal only if NumDiff is 0.\n\tNumSame int\n\t// NumDiff is the number of leaf nodes that are not equal.\n\tNumDiff int\n\t// NumIgnored is the number of leaf nodes that are ignored.\n\tNumIgnored int\n\t// NumCompared is the number of leaf nodes that were compared\n\t// using an Equal method or Comparer function.\n\tNumCompared int\n\t// NumTransformed is the number of non-leaf nodes that were transformed.\n\tNumTransformed int\n\t// NumChildren is the number of transitive descendants of this node.\n\t// This counts from zero; thus, leaf nodes have no descendants.\n\tNumChildren int\n\t// MaxDepth is the maximum depth of the tree. This counts from zero;\n\t// thus, leaf nodes have a depth of zero.\n\tMaxDepth int\n\n\t// Records is a list of struct fields, slice elements, or map entries.\n\tRecords []reportRecord // If populated, implies Value is not populated\n\n\t// Value is the result of a transformation, pointer indirect, of\n\t// type assertion.\n\tValue *valueNode // If populated, implies Records is not populated\n\n\t// TransformerName is the name of the transformer.\n\tTransformerName string // If non-empty, implies Value is populated\n}\ntype reportRecord struct {\n\tKey   reflect.Value // Invalid for slice element\n\tValue *valueNode\n}\n\nfunc (parent *valueNode) PushStep(ps PathStep) (child *valueNode) {\n\tvx, vy := ps.Values()\n\tchild = &valueNode{parent: parent, Type: ps.Type(), ValueX: vx, ValueY: vy}\n\tswitch s := ps.(type) {\n\tcase StructField:\n\t\tassert(parent.Value == nil)\n\t\tparent.Records = append(parent.Records, reportRecord{Key: reflect.ValueOf(s.Name()), Value: child})\n\tcase SliceIndex:\n\t\tassert(parent.Value == nil)\n\t\tparent.Records = append(parent.Records, reportRecord{Value: child})\n\tcase MapIndex:\n\t\tassert(parent.Value == nil)\n\t\tparent.Records = append(parent.Records, reportRecord{Key: s.Key(), Value: child})\n\tcase Indirect:\n\t\tassert(parent.Value == nil && parent.Records == nil)\n\t\tparent.Value = child\n\tcase TypeAssertion:\n\t\tassert(parent.Value == nil && parent.Records == nil)\n\t\tparent.Value = child\n\tcase Transform:\n\t\tassert(parent.Value == nil && parent.Records == nil)\n\t\tparent.Value = child\n\t\tparent.TransformerName = s.Name()\n\t\tparent.NumTransformed++\n\tdefault:\n\t\tassert(parent == nil) // Must be the root step\n\t}\n\treturn child\n}\n\nfunc (r *valueNode) Report(rs Result) {\n\tassert(r.MaxDepth == 0) // May only be called on leaf nodes\n\n\tif rs.ByIgnore() {\n\t\tr.NumIgnored++\n\t} else {\n\t\tif rs.Equal() {\n\t\t\tr.NumSame++\n\t\t} else {\n\t\t\tr.NumDiff++\n\t\t}\n\t}\n\tassert(r.NumSame+r.NumDiff+r.NumIgnored == 1)\n\n\tif rs.ByMethod() {\n\t\tr.NumCompared++\n\t}\n\tif rs.ByFunc() {\n\t\tr.NumCompared++\n\t}\n\tassert(r.NumCompared <= 1)\n}\n\nfunc (child *valueNode) PopStep() (parent *valueNode) {\n\tif child.parent == nil {\n\t\treturn nil\n\t}\n\tparent = child.parent\n\tparent.NumSame += child.NumSame\n\tparent.NumDiff += child.NumDiff\n\tparent.NumIgnored += child.NumIgnored\n\tparent.NumCompared += child.NumCompared\n\tparent.NumTransformed += child.NumTransformed\n\tparent.NumChildren += child.NumChildren + 1\n\tif parent.MaxDepth < child.MaxDepth+1 {\n\t\tparent.MaxDepth = child.MaxDepth + 1\n\t}\n\treturn parent\n}\n"
  },
  {
    "path": "tests/vendor/github.com/google/pprof/AUTHORS",
    "content": "# This is the official list of pprof authors for copyright purposes.\n# This file is distinct from the CONTRIBUTORS files.\n# See the latter for an explanation.\n# Names should be added to this file as:\n# Name or Organization <email address>\n# The email address is not required for organizations.\nGoogle Inc."
  },
  {
    "path": "tests/vendor/github.com/google/pprof/CONTRIBUTORS",
    "content": "# People who have agreed to one of the CLAs and can contribute patches.\n# The AUTHORS file lists the copyright holders; this file\n# lists people.  For example, Google employees are listed here\n# but not in AUTHORS, because Google holds the copyright.\n#\n# https://developers.google.com/open-source/cla/individual\n# https://developers.google.com/open-source/cla/corporate\n#\n# Names should be added to this file as:\n#     Name <email address>\nRaul Silvera <rsilvera@google.com>\nTipp Moseley <tipp@google.com>\nHyoun Kyu Cho <netforce@google.com>\nMartin Spier <spiermar@gmail.com>\nTaco de Wolff <tacodewolff@gmail.com>\nAndrew Hunter <andrewhhunter@gmail.com>\n"
  },
  {
    "path": "tests/vendor/github.com/google/pprof/LICENSE",
    "content": "\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "tests/vendor/github.com/google/pprof/profile/encode.go",
    "content": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage profile\n\nimport (\n\t\"errors\"\n\t\"sort\"\n\t\"strings\"\n)\n\nfunc (p *Profile) decoder() []decoder {\n\treturn profileDecoder\n}\n\n// preEncode populates the unexported fields to be used by encode\n// (with suffix X) from the corresponding exported fields. The\n// exported fields are cleared up to facilitate testing.\nfunc (p *Profile) preEncode() {\n\tstrings := make(map[string]int)\n\taddString(strings, \"\")\n\n\tfor _, st := range p.SampleType {\n\t\tst.typeX = addString(strings, st.Type)\n\t\tst.unitX = addString(strings, st.Unit)\n\t}\n\n\tfor _, s := range p.Sample {\n\t\ts.labelX = nil\n\t\tvar keys []string\n\t\tfor k := range s.Label {\n\t\t\tkeys = append(keys, k)\n\t\t}\n\t\tsort.Strings(keys)\n\t\tfor _, k := range keys {\n\t\t\tvs := s.Label[k]\n\t\t\tfor _, v := range vs {\n\t\t\t\ts.labelX = append(s.labelX,\n\t\t\t\t\tlabel{\n\t\t\t\t\t\tkeyX: addString(strings, k),\n\t\t\t\t\t\tstrX: addString(strings, v),\n\t\t\t\t\t},\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t\tvar numKeys []string\n\t\tfor k := range s.NumLabel {\n\t\t\tnumKeys = append(numKeys, k)\n\t\t}\n\t\tsort.Strings(numKeys)\n\t\tfor _, k := range numKeys {\n\t\t\tkeyX := addString(strings, k)\n\t\t\tvs := s.NumLabel[k]\n\t\t\tunits := s.NumUnit[k]\n\t\t\tfor i, v := range vs {\n\t\t\t\tvar unitX int64\n\t\t\t\tif len(units) != 0 {\n\t\t\t\t\tunitX = addString(strings, units[i])\n\t\t\t\t}\n\t\t\t\ts.labelX = append(s.labelX,\n\t\t\t\t\tlabel{\n\t\t\t\t\t\tkeyX:  keyX,\n\t\t\t\t\t\tnumX:  v,\n\t\t\t\t\t\tunitX: unitX,\n\t\t\t\t\t},\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t\ts.locationIDX = make([]uint64, len(s.Location))\n\t\tfor i, loc := range s.Location {\n\t\t\ts.locationIDX[i] = loc.ID\n\t\t}\n\t}\n\n\tfor _, m := range p.Mapping {\n\t\tm.fileX = addString(strings, m.File)\n\t\tm.buildIDX = addString(strings, m.BuildID)\n\t}\n\n\tfor _, l := range p.Location {\n\t\tfor i, ln := range l.Line {\n\t\t\tif ln.Function != nil {\n\t\t\t\tl.Line[i].functionIDX = ln.Function.ID\n\t\t\t} else {\n\t\t\t\tl.Line[i].functionIDX = 0\n\t\t\t}\n\t\t}\n\t\tif l.Mapping != nil {\n\t\t\tl.mappingIDX = l.Mapping.ID\n\t\t} else {\n\t\t\tl.mappingIDX = 0\n\t\t}\n\t}\n\tfor _, f := range p.Function {\n\t\tf.nameX = addString(strings, f.Name)\n\t\tf.systemNameX = addString(strings, f.SystemName)\n\t\tf.filenameX = addString(strings, f.Filename)\n\t}\n\n\tp.dropFramesX = addString(strings, p.DropFrames)\n\tp.keepFramesX = addString(strings, p.KeepFrames)\n\n\tif pt := p.PeriodType; pt != nil {\n\t\tpt.typeX = addString(strings, pt.Type)\n\t\tpt.unitX = addString(strings, pt.Unit)\n\t}\n\n\tp.commentX = nil\n\tfor _, c := range p.Comments {\n\t\tp.commentX = append(p.commentX, addString(strings, c))\n\t}\n\n\tp.defaultSampleTypeX = addString(strings, p.DefaultSampleType)\n\tp.docURLX = addString(strings, p.DocURL)\n\n\tp.stringTable = make([]string, len(strings))\n\tfor s, i := range strings {\n\t\tp.stringTable[i] = s\n\t}\n}\n\nfunc (p *Profile) encode(b *buffer) {\n\tfor _, x := range p.SampleType {\n\t\tencodeMessage(b, 1, x)\n\t}\n\tfor _, x := range p.Sample {\n\t\tencodeMessage(b, 2, x)\n\t}\n\tfor _, x := range p.Mapping {\n\t\tencodeMessage(b, 3, x)\n\t}\n\tfor _, x := range p.Location {\n\t\tencodeMessage(b, 4, x)\n\t}\n\tfor _, x := range p.Function {\n\t\tencodeMessage(b, 5, x)\n\t}\n\tencodeStrings(b, 6, p.stringTable)\n\tencodeInt64Opt(b, 7, p.dropFramesX)\n\tencodeInt64Opt(b, 8, p.keepFramesX)\n\tencodeInt64Opt(b, 9, p.TimeNanos)\n\tencodeInt64Opt(b, 10, p.DurationNanos)\n\tif pt := p.PeriodType; pt != nil && (pt.typeX != 0 || pt.unitX != 0) {\n\t\tencodeMessage(b, 11, p.PeriodType)\n\t}\n\tencodeInt64Opt(b, 12, p.Period)\n\tencodeInt64s(b, 13, p.commentX)\n\tencodeInt64(b, 14, p.defaultSampleTypeX)\n\tencodeInt64Opt(b, 15, p.docURLX)\n}\n\nvar profileDecoder = []decoder{\n\tnil, // 0\n\t// repeated ValueType sample_type = 1\n\tfunc(b *buffer, m message) error {\n\t\tx := new(ValueType)\n\t\tpp := m.(*Profile)\n\t\tpp.SampleType = append(pp.SampleType, x)\n\t\treturn decodeMessage(b, x)\n\t},\n\t// repeated Sample sample = 2\n\tfunc(b *buffer, m message) error {\n\t\tx := new(Sample)\n\t\tpp := m.(*Profile)\n\t\tpp.Sample = append(pp.Sample, x)\n\t\treturn decodeMessage(b, x)\n\t},\n\t// repeated Mapping mapping = 3\n\tfunc(b *buffer, m message) error {\n\t\tx := new(Mapping)\n\t\tpp := m.(*Profile)\n\t\tpp.Mapping = append(pp.Mapping, x)\n\t\treturn decodeMessage(b, x)\n\t},\n\t// repeated Location location = 4\n\tfunc(b *buffer, m message) error {\n\t\tx := new(Location)\n\t\tx.Line = b.tmpLines[:0] // Use shared space temporarily\n\t\tpp := m.(*Profile)\n\t\tpp.Location = append(pp.Location, x)\n\t\terr := decodeMessage(b, x)\n\t\tb.tmpLines = x.Line[:0]\n\t\t// Copy to shrink size and detach from shared space.\n\t\tx.Line = append([]Line(nil), x.Line...)\n\t\treturn err\n\t},\n\t// repeated Function function = 5\n\tfunc(b *buffer, m message) error {\n\t\tx := new(Function)\n\t\tpp := m.(*Profile)\n\t\tpp.Function = append(pp.Function, x)\n\t\treturn decodeMessage(b, x)\n\t},\n\t// repeated string string_table = 6\n\tfunc(b *buffer, m message) error {\n\t\terr := decodeStrings(b, &m.(*Profile).stringTable)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif m.(*Profile).stringTable[0] != \"\" {\n\t\t\treturn errors.New(\"string_table[0] must be ''\")\n\t\t}\n\t\treturn nil\n\t},\n\t// int64 drop_frames = 7\n\tfunc(b *buffer, m message) error { return decodeInt64(b, &m.(*Profile).dropFramesX) },\n\t// int64 keep_frames = 8\n\tfunc(b *buffer, m message) error { return decodeInt64(b, &m.(*Profile).keepFramesX) },\n\t// int64 time_nanos = 9\n\tfunc(b *buffer, m message) error {\n\t\tif m.(*Profile).TimeNanos != 0 {\n\t\t\treturn errConcatProfile\n\t\t}\n\t\treturn decodeInt64(b, &m.(*Profile).TimeNanos)\n\t},\n\t// int64 duration_nanos = 10\n\tfunc(b *buffer, m message) error { return decodeInt64(b, &m.(*Profile).DurationNanos) },\n\t// ValueType period_type = 11\n\tfunc(b *buffer, m message) error {\n\t\tx := new(ValueType)\n\t\tpp := m.(*Profile)\n\t\tpp.PeriodType = x\n\t\treturn decodeMessage(b, x)\n\t},\n\t// int64 period = 12\n\tfunc(b *buffer, m message) error { return decodeInt64(b, &m.(*Profile).Period) },\n\t// repeated int64 comment = 13\n\tfunc(b *buffer, m message) error { return decodeInt64s(b, &m.(*Profile).commentX) },\n\t// int64 defaultSampleType = 14\n\tfunc(b *buffer, m message) error { return decodeInt64(b, &m.(*Profile).defaultSampleTypeX) },\n\t// string doc_link = 15;\n\tfunc(b *buffer, m message) error { return decodeInt64(b, &m.(*Profile).docURLX) },\n}\n\n// postDecode takes the unexported fields populated by decode (with\n// suffix X) and populates the corresponding exported fields.\n// The unexported fields are cleared up to facilitate testing.\nfunc (p *Profile) postDecode() error {\n\tvar err error\n\tmappings := make(map[uint64]*Mapping, len(p.Mapping))\n\tmappingIds := make([]*Mapping, len(p.Mapping)+1)\n\tfor _, m := range p.Mapping {\n\t\tm.File, err = getString(p.stringTable, &m.fileX, err)\n\t\tm.BuildID, err = getString(p.stringTable, &m.buildIDX, err)\n\t\tif m.ID < uint64(len(mappingIds)) {\n\t\t\tmappingIds[m.ID] = m\n\t\t} else {\n\t\t\tmappings[m.ID] = m\n\t\t}\n\n\t\t// If this a main linux kernel mapping with a relocation symbol suffix\n\t\t// (\"[kernel.kallsyms]_text\"), extract said suffix.\n\t\t// It is fairly hacky to handle at this level, but the alternatives appear even worse.\n\t\tconst prefix = \"[kernel.kallsyms]\"\n\t\tif strings.HasPrefix(m.File, prefix) {\n\t\t\tm.KernelRelocationSymbol = m.File[len(prefix):]\n\t\t}\n\t}\n\n\tfunctions := make(map[uint64]*Function, len(p.Function))\n\tfunctionIds := make([]*Function, len(p.Function)+1)\n\tfor _, f := range p.Function {\n\t\tf.Name, err = getString(p.stringTable, &f.nameX, err)\n\t\tf.SystemName, err = getString(p.stringTable, &f.systemNameX, err)\n\t\tf.Filename, err = getString(p.stringTable, &f.filenameX, err)\n\t\tif f.ID < uint64(len(functionIds)) {\n\t\t\tfunctionIds[f.ID] = f\n\t\t} else {\n\t\t\tfunctions[f.ID] = f\n\t\t}\n\t}\n\n\tlocations := make(map[uint64]*Location, len(p.Location))\n\tlocationIds := make([]*Location, len(p.Location)+1)\n\tfor _, l := range p.Location {\n\t\tif id := l.mappingIDX; id < uint64(len(mappingIds)) {\n\t\t\tl.Mapping = mappingIds[id]\n\t\t} else {\n\t\t\tl.Mapping = mappings[id]\n\t\t}\n\t\tl.mappingIDX = 0\n\t\tfor i, ln := range l.Line {\n\t\t\tif id := ln.functionIDX; id != 0 {\n\t\t\t\tl.Line[i].functionIDX = 0\n\t\t\t\tif id < uint64(len(functionIds)) {\n\t\t\t\t\tl.Line[i].Function = functionIds[id]\n\t\t\t\t} else {\n\t\t\t\t\tl.Line[i].Function = functions[id]\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif l.ID < uint64(len(locationIds)) {\n\t\t\tlocationIds[l.ID] = l\n\t\t} else {\n\t\t\tlocations[l.ID] = l\n\t\t}\n\t}\n\n\tfor _, st := range p.SampleType {\n\t\tst.Type, err = getString(p.stringTable, &st.typeX, err)\n\t\tst.Unit, err = getString(p.stringTable, &st.unitX, err)\n\t}\n\n\t// Pre-allocate space for all locations.\n\tnumLocations := 0\n\tfor _, s := range p.Sample {\n\t\tnumLocations += len(s.locationIDX)\n\t}\n\tlocBuffer := make([]*Location, numLocations)\n\n\tfor _, s := range p.Sample {\n\t\tif len(s.labelX) > 0 {\n\t\t\tlabels := make(map[string][]string, len(s.labelX))\n\t\t\tnumLabels := make(map[string][]int64, len(s.labelX))\n\t\t\tnumUnits := make(map[string][]string, len(s.labelX))\n\t\t\tfor _, l := range s.labelX {\n\t\t\t\tvar key, value string\n\t\t\t\tkey, err = getString(p.stringTable, &l.keyX, err)\n\t\t\t\tif l.strX != 0 {\n\t\t\t\t\tvalue, err = getString(p.stringTable, &l.strX, err)\n\t\t\t\t\tlabels[key] = append(labels[key], value)\n\t\t\t\t} else if l.numX != 0 || l.unitX != 0 {\n\t\t\t\t\tnumValues := numLabels[key]\n\t\t\t\t\tunits := numUnits[key]\n\t\t\t\t\tif l.unitX != 0 {\n\t\t\t\t\t\tvar unit string\n\t\t\t\t\t\tunit, err = getString(p.stringTable, &l.unitX, err)\n\t\t\t\t\t\tunits = padStringArray(units, len(numValues))\n\t\t\t\t\t\tnumUnits[key] = append(units, unit)\n\t\t\t\t\t}\n\t\t\t\t\tnumLabels[key] = append(numLabels[key], l.numX)\n\t\t\t\t}\n\t\t\t}\n\t\t\tif len(labels) > 0 {\n\t\t\t\ts.Label = labels\n\t\t\t}\n\t\t\tif len(numLabels) > 0 {\n\t\t\t\ts.NumLabel = numLabels\n\t\t\t\tfor key, units := range numUnits {\n\t\t\t\t\tif len(units) > 0 {\n\t\t\t\t\t\tnumUnits[key] = padStringArray(units, len(numLabels[key]))\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ts.NumUnit = numUnits\n\t\t\t}\n\t\t}\n\n\t\ts.Location = locBuffer[:len(s.locationIDX)]\n\t\tlocBuffer = locBuffer[len(s.locationIDX):]\n\t\tfor i, lid := range s.locationIDX {\n\t\t\tif lid < uint64(len(locationIds)) {\n\t\t\t\ts.Location[i] = locationIds[lid]\n\t\t\t} else {\n\t\t\t\ts.Location[i] = locations[lid]\n\t\t\t}\n\t\t}\n\t\ts.locationIDX = nil\n\t}\n\n\tp.DropFrames, err = getString(p.stringTable, &p.dropFramesX, err)\n\tp.KeepFrames, err = getString(p.stringTable, &p.keepFramesX, err)\n\n\tif pt := p.PeriodType; pt == nil {\n\t\tp.PeriodType = &ValueType{}\n\t}\n\n\tif pt := p.PeriodType; pt != nil {\n\t\tpt.Type, err = getString(p.stringTable, &pt.typeX, err)\n\t\tpt.Unit, err = getString(p.stringTable, &pt.unitX, err)\n\t}\n\n\tfor _, i := range p.commentX {\n\t\tvar c string\n\t\tc, err = getString(p.stringTable, &i, err)\n\t\tp.Comments = append(p.Comments, c)\n\t}\n\n\tp.commentX = nil\n\tp.DefaultSampleType, err = getString(p.stringTable, &p.defaultSampleTypeX, err)\n\tp.DocURL, err = getString(p.stringTable, &p.docURLX, err)\n\tp.stringTable = nil\n\treturn err\n}\n\n// padStringArray pads arr with enough empty strings to make arr\n// length l when arr's length is less than l.\nfunc padStringArray(arr []string, l int) []string {\n\tif l <= len(arr) {\n\t\treturn arr\n\t}\n\treturn append(arr, make([]string, l-len(arr))...)\n}\n\nfunc (p *ValueType) decoder() []decoder {\n\treturn valueTypeDecoder\n}\n\nfunc (p *ValueType) encode(b *buffer) {\n\tencodeInt64Opt(b, 1, p.typeX)\n\tencodeInt64Opt(b, 2, p.unitX)\n}\n\nvar valueTypeDecoder = []decoder{\n\tnil, // 0\n\t// optional int64 type = 1\n\tfunc(b *buffer, m message) error { return decodeInt64(b, &m.(*ValueType).typeX) },\n\t// optional int64 unit = 2\n\tfunc(b *buffer, m message) error { return decodeInt64(b, &m.(*ValueType).unitX) },\n}\n\nfunc (p *Sample) decoder() []decoder {\n\treturn sampleDecoder\n}\n\nfunc (p *Sample) encode(b *buffer) {\n\tencodeUint64s(b, 1, p.locationIDX)\n\tencodeInt64s(b, 2, p.Value)\n\tfor _, x := range p.labelX {\n\t\tencodeMessage(b, 3, x)\n\t}\n}\n\nvar sampleDecoder = []decoder{\n\tnil, // 0\n\t// repeated uint64 location = 1\n\tfunc(b *buffer, m message) error { return decodeUint64s(b, &m.(*Sample).locationIDX) },\n\t// repeated int64 value = 2\n\tfunc(b *buffer, m message) error { return decodeInt64s(b, &m.(*Sample).Value) },\n\t// repeated Label label = 3\n\tfunc(b *buffer, m message) error {\n\t\ts := m.(*Sample)\n\t\tn := len(s.labelX)\n\t\ts.labelX = append(s.labelX, label{})\n\t\treturn decodeMessage(b, &s.labelX[n])\n\t},\n}\n\nfunc (p label) decoder() []decoder {\n\treturn labelDecoder\n}\n\nfunc (p label) encode(b *buffer) {\n\tencodeInt64Opt(b, 1, p.keyX)\n\tencodeInt64Opt(b, 2, p.strX)\n\tencodeInt64Opt(b, 3, p.numX)\n\tencodeInt64Opt(b, 4, p.unitX)\n}\n\nvar labelDecoder = []decoder{\n\tnil, // 0\n\t// optional int64 key = 1\n\tfunc(b *buffer, m message) error { return decodeInt64(b, &m.(*label).keyX) },\n\t// optional int64 str = 2\n\tfunc(b *buffer, m message) error { return decodeInt64(b, &m.(*label).strX) },\n\t// optional int64 num = 3\n\tfunc(b *buffer, m message) error { return decodeInt64(b, &m.(*label).numX) },\n\t// optional int64 num = 4\n\tfunc(b *buffer, m message) error { return decodeInt64(b, &m.(*label).unitX) },\n}\n\nfunc (p *Mapping) decoder() []decoder {\n\treturn mappingDecoder\n}\n\nfunc (p *Mapping) encode(b *buffer) {\n\tencodeUint64Opt(b, 1, p.ID)\n\tencodeUint64Opt(b, 2, p.Start)\n\tencodeUint64Opt(b, 3, p.Limit)\n\tencodeUint64Opt(b, 4, p.Offset)\n\tencodeInt64Opt(b, 5, p.fileX)\n\tencodeInt64Opt(b, 6, p.buildIDX)\n\tencodeBoolOpt(b, 7, p.HasFunctions)\n\tencodeBoolOpt(b, 8, p.HasFilenames)\n\tencodeBoolOpt(b, 9, p.HasLineNumbers)\n\tencodeBoolOpt(b, 10, p.HasInlineFrames)\n}\n\nvar mappingDecoder = []decoder{\n\tnil, // 0\n\tfunc(b *buffer, m message) error { return decodeUint64(b, &m.(*Mapping).ID) },            // optional uint64 id = 1\n\tfunc(b *buffer, m message) error { return decodeUint64(b, &m.(*Mapping).Start) },         // optional uint64 memory_offset = 2\n\tfunc(b *buffer, m message) error { return decodeUint64(b, &m.(*Mapping).Limit) },         // optional uint64 memory_limit = 3\n\tfunc(b *buffer, m message) error { return decodeUint64(b, &m.(*Mapping).Offset) },        // optional uint64 file_offset = 4\n\tfunc(b *buffer, m message) error { return decodeInt64(b, &m.(*Mapping).fileX) },          // optional int64 filename = 5\n\tfunc(b *buffer, m message) error { return decodeInt64(b, &m.(*Mapping).buildIDX) },       // optional int64 build_id = 6\n\tfunc(b *buffer, m message) error { return decodeBool(b, &m.(*Mapping).HasFunctions) },    // optional bool has_functions = 7\n\tfunc(b *buffer, m message) error { return decodeBool(b, &m.(*Mapping).HasFilenames) },    // optional bool has_filenames = 8\n\tfunc(b *buffer, m message) error { return decodeBool(b, &m.(*Mapping).HasLineNumbers) },  // optional bool has_line_numbers = 9\n\tfunc(b *buffer, m message) error { return decodeBool(b, &m.(*Mapping).HasInlineFrames) }, // optional bool has_inline_frames = 10\n}\n\nfunc (p *Location) decoder() []decoder {\n\treturn locationDecoder\n}\n\nfunc (p *Location) encode(b *buffer) {\n\tencodeUint64Opt(b, 1, p.ID)\n\tencodeUint64Opt(b, 2, p.mappingIDX)\n\tencodeUint64Opt(b, 3, p.Address)\n\tfor i := range p.Line {\n\t\tencodeMessage(b, 4, &p.Line[i])\n\t}\n\tencodeBoolOpt(b, 5, p.IsFolded)\n}\n\nvar locationDecoder = []decoder{\n\tnil, // 0\n\tfunc(b *buffer, m message) error { return decodeUint64(b, &m.(*Location).ID) },         // optional uint64 id = 1;\n\tfunc(b *buffer, m message) error { return decodeUint64(b, &m.(*Location).mappingIDX) }, // optional uint64 mapping_id = 2;\n\tfunc(b *buffer, m message) error { return decodeUint64(b, &m.(*Location).Address) },    // optional uint64 address = 3;\n\tfunc(b *buffer, m message) error { // repeated Line line = 4\n\t\tpp := m.(*Location)\n\t\tn := len(pp.Line)\n\t\tpp.Line = append(pp.Line, Line{})\n\t\treturn decodeMessage(b, &pp.Line[n])\n\t},\n\tfunc(b *buffer, m message) error { return decodeBool(b, &m.(*Location).IsFolded) }, // optional bool is_folded = 5;\n}\n\nfunc (p *Line) decoder() []decoder {\n\treturn lineDecoder\n}\n\nfunc (p *Line) encode(b *buffer) {\n\tencodeUint64Opt(b, 1, p.functionIDX)\n\tencodeInt64Opt(b, 2, p.Line)\n\tencodeInt64Opt(b, 3, p.Column)\n}\n\nvar lineDecoder = []decoder{\n\tnil, // 0\n\t// optional uint64 function_id = 1\n\tfunc(b *buffer, m message) error { return decodeUint64(b, &m.(*Line).functionIDX) },\n\t// optional int64 line = 2\n\tfunc(b *buffer, m message) error { return decodeInt64(b, &m.(*Line).Line) },\n\t// optional int64 column = 3\n\tfunc(b *buffer, m message) error { return decodeInt64(b, &m.(*Line).Column) },\n}\n\nfunc (p *Function) decoder() []decoder {\n\treturn functionDecoder\n}\n\nfunc (p *Function) encode(b *buffer) {\n\tencodeUint64Opt(b, 1, p.ID)\n\tencodeInt64Opt(b, 2, p.nameX)\n\tencodeInt64Opt(b, 3, p.systemNameX)\n\tencodeInt64Opt(b, 4, p.filenameX)\n\tencodeInt64Opt(b, 5, p.StartLine)\n}\n\nvar functionDecoder = []decoder{\n\tnil, // 0\n\t// optional uint64 id = 1\n\tfunc(b *buffer, m message) error { return decodeUint64(b, &m.(*Function).ID) },\n\t// optional int64 function_name = 2\n\tfunc(b *buffer, m message) error { return decodeInt64(b, &m.(*Function).nameX) },\n\t// optional int64 function_system_name = 3\n\tfunc(b *buffer, m message) error { return decodeInt64(b, &m.(*Function).systemNameX) },\n\t// repeated int64 filename = 4\n\tfunc(b *buffer, m message) error { return decodeInt64(b, &m.(*Function).filenameX) },\n\t// optional int64 start_line = 5\n\tfunc(b *buffer, m message) error { return decodeInt64(b, &m.(*Function).StartLine) },\n}\n\nfunc addString(strings map[string]int, s string) int64 {\n\ti, ok := strings[s]\n\tif !ok {\n\t\ti = len(strings)\n\t\tstrings[s] = i\n\t}\n\treturn int64(i)\n}\n\nfunc getString(strings []string, strng *int64, err error) (string, error) {\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\ts := int(*strng)\n\tif s < 0 || s >= len(strings) {\n\t\treturn \"\", errMalformed\n\t}\n\t*strng = 0\n\treturn strings[s], nil\n}\n"
  },
  {
    "path": "tests/vendor/github.com/google/pprof/profile/filter.go",
    "content": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage profile\n\n// Implements methods to filter samples from profiles.\n\nimport \"regexp\"\n\n// FilterSamplesByName filters the samples in a profile and only keeps\n// samples where at least one frame matches focus but none match ignore.\n// Returns true is the corresponding regexp matched at least one sample.\nfunc (p *Profile) FilterSamplesByName(focus, ignore, hide, show *regexp.Regexp) (fm, im, hm, hnm bool) {\n\tif focus == nil && ignore == nil && hide == nil && show == nil {\n\t\tfm = true // Missing focus implies a match\n\t\treturn\n\t}\n\tfocusOrIgnore := make(map[uint64]bool)\n\thidden := make(map[uint64]bool)\n\tfor _, l := range p.Location {\n\t\tif ignore != nil && l.matchesName(ignore) {\n\t\t\tim = true\n\t\t\tfocusOrIgnore[l.ID] = false\n\t\t} else if focus == nil || l.matchesName(focus) {\n\t\t\tfm = true\n\t\t\tfocusOrIgnore[l.ID] = true\n\t\t}\n\n\t\tif hide != nil && l.matchesName(hide) {\n\t\t\thm = true\n\t\t\tl.Line = l.unmatchedLines(hide)\n\t\t\tif len(l.Line) == 0 {\n\t\t\t\thidden[l.ID] = true\n\t\t\t}\n\t\t}\n\t\tif show != nil {\n\t\t\tl.Line = l.matchedLines(show)\n\t\t\tif len(l.Line) == 0 {\n\t\t\t\thidden[l.ID] = true\n\t\t\t} else {\n\t\t\t\thnm = true\n\t\t\t}\n\t\t}\n\t}\n\n\ts := make([]*Sample, 0, len(p.Sample))\n\tfor _, sample := range p.Sample {\n\t\tif focusedAndNotIgnored(sample.Location, focusOrIgnore) {\n\t\t\tif len(hidden) > 0 {\n\t\t\t\tvar locs []*Location\n\t\t\t\tfor _, loc := range sample.Location {\n\t\t\t\t\tif !hidden[loc.ID] {\n\t\t\t\t\t\tlocs = append(locs, loc)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif len(locs) == 0 {\n\t\t\t\t\t// Remove sample with no locations (by not adding it to s).\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tsample.Location = locs\n\t\t\t}\n\t\t\ts = append(s, sample)\n\t\t}\n\t}\n\tp.Sample = s\n\n\treturn\n}\n\n// ShowFrom drops all stack frames above the highest matching frame and returns\n// whether a match was found. If showFrom is nil it returns false and does not\n// modify the profile.\n//\n// Example: consider a sample with frames [A, B, C, B], where A is the root.\n// ShowFrom(nil) returns false and has frames [A, B, C, B].\n// ShowFrom(A) returns true and has frames [A, B, C, B].\n// ShowFrom(B) returns true and has frames [B, C, B].\n// ShowFrom(C) returns true and has frames [C, B].\n// ShowFrom(D) returns false and drops the sample because no frames remain.\nfunc (p *Profile) ShowFrom(showFrom *regexp.Regexp) (matched bool) {\n\tif showFrom == nil {\n\t\treturn false\n\t}\n\t// showFromLocs stores location IDs that matched ShowFrom.\n\tshowFromLocs := make(map[uint64]bool)\n\t// Apply to locations.\n\tfor _, loc := range p.Location {\n\t\tif filterShowFromLocation(loc, showFrom) {\n\t\t\tshowFromLocs[loc.ID] = true\n\t\t\tmatched = true\n\t\t}\n\t}\n\t// For all samples, strip locations after the highest matching one.\n\ts := make([]*Sample, 0, len(p.Sample))\n\tfor _, sample := range p.Sample {\n\t\tfor i := len(sample.Location) - 1; i >= 0; i-- {\n\t\t\tif showFromLocs[sample.Location[i].ID] {\n\t\t\t\tsample.Location = sample.Location[:i+1]\n\t\t\t\ts = append(s, sample)\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\tp.Sample = s\n\treturn matched\n}\n\n// filterShowFromLocation tests a showFrom regex against a location, removes\n// lines after the last match and returns whether a match was found. If the\n// mapping is matched, then all lines are kept.\nfunc filterShowFromLocation(loc *Location, showFrom *regexp.Regexp) bool {\n\tif m := loc.Mapping; m != nil && showFrom.MatchString(m.File) {\n\t\treturn true\n\t}\n\tif i := loc.lastMatchedLineIndex(showFrom); i >= 0 {\n\t\tloc.Line = loc.Line[:i+1]\n\t\treturn true\n\t}\n\treturn false\n}\n\n// lastMatchedLineIndex returns the index of the last line that matches a regex,\n// or -1 if no match is found.\nfunc (loc *Location) lastMatchedLineIndex(re *regexp.Regexp) int {\n\tfor i := len(loc.Line) - 1; i >= 0; i-- {\n\t\tif fn := loc.Line[i].Function; fn != nil {\n\t\t\tif re.MatchString(fn.Name) || re.MatchString(fn.Filename) {\n\t\t\t\treturn i\n\t\t\t}\n\t\t}\n\t}\n\treturn -1\n}\n\n// FilterTagsByName filters the tags in a profile and only keeps\n// tags that match show and not hide.\nfunc (p *Profile) FilterTagsByName(show, hide *regexp.Regexp) (sm, hm bool) {\n\tmatchRemove := func(name string) bool {\n\t\tmatchShow := show == nil || show.MatchString(name)\n\t\tmatchHide := hide != nil && hide.MatchString(name)\n\n\t\tif matchShow {\n\t\t\tsm = true\n\t\t}\n\t\tif matchHide {\n\t\t\thm = true\n\t\t}\n\t\treturn !matchShow || matchHide\n\t}\n\tfor _, s := range p.Sample {\n\t\tfor lab := range s.Label {\n\t\t\tif matchRemove(lab) {\n\t\t\t\tdelete(s.Label, lab)\n\t\t\t}\n\t\t}\n\t\tfor lab := range s.NumLabel {\n\t\t\tif matchRemove(lab) {\n\t\t\t\tdelete(s.NumLabel, lab)\n\t\t\t}\n\t\t}\n\t}\n\treturn\n}\n\n// matchesName returns whether the location matches the regular\n// expression. It checks any available function names, file names, and\n// mapping object filename.\nfunc (loc *Location) matchesName(re *regexp.Regexp) bool {\n\tfor _, ln := range loc.Line {\n\t\tif fn := ln.Function; fn != nil {\n\t\t\tif re.MatchString(fn.Name) || re.MatchString(fn.Filename) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t}\n\tif m := loc.Mapping; m != nil && re.MatchString(m.File) {\n\t\treturn true\n\t}\n\treturn false\n}\n\n// unmatchedLines returns the lines in the location that do not match\n// the regular expression.\nfunc (loc *Location) unmatchedLines(re *regexp.Regexp) []Line {\n\tif m := loc.Mapping; m != nil && re.MatchString(m.File) {\n\t\treturn nil\n\t}\n\tvar lines []Line\n\tfor _, ln := range loc.Line {\n\t\tif fn := ln.Function; fn != nil {\n\t\t\tif re.MatchString(fn.Name) || re.MatchString(fn.Filename) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\t\tlines = append(lines, ln)\n\t}\n\treturn lines\n}\n\n// matchedLines returns the lines in the location that match\n// the regular expression.\nfunc (loc *Location) matchedLines(re *regexp.Regexp) []Line {\n\tif m := loc.Mapping; m != nil && re.MatchString(m.File) {\n\t\treturn loc.Line\n\t}\n\tvar lines []Line\n\tfor _, ln := range loc.Line {\n\t\tif fn := ln.Function; fn != nil {\n\t\t\tif !re.MatchString(fn.Name) && !re.MatchString(fn.Filename) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\t\tlines = append(lines, ln)\n\t}\n\treturn lines\n}\n\n// focusedAndNotIgnored looks up a slice of ids against a map of\n// focused/ignored locations. The map only contains locations that are\n// explicitly focused or ignored. Returns whether there is at least\n// one focused location but no ignored locations.\nfunc focusedAndNotIgnored(locs []*Location, m map[uint64]bool) bool {\n\tvar f bool\n\tfor _, loc := range locs {\n\t\tif focus, focusOrIgnore := m[loc.ID]; focusOrIgnore {\n\t\t\tif focus {\n\t\t\t\t// Found focused location. Must keep searching in case there\n\t\t\t\t// is an ignored one as well.\n\t\t\t\tf = true\n\t\t\t} else {\n\t\t\t\t// Found ignored location. Can return false right away.\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t}\n\treturn f\n}\n\n// TagMatch selects tags for filtering\ntype TagMatch func(s *Sample) bool\n\n// FilterSamplesByTag removes all samples from the profile, except\n// those that match focus and do not match the ignore regular\n// expression.\nfunc (p *Profile) FilterSamplesByTag(focus, ignore TagMatch) (fm, im bool) {\n\tsamples := make([]*Sample, 0, len(p.Sample))\n\tfor _, s := range p.Sample {\n\t\tfocused, ignored := true, false\n\t\tif focus != nil {\n\t\t\tfocused = focus(s)\n\t\t}\n\t\tif ignore != nil {\n\t\t\tignored = ignore(s)\n\t\t}\n\t\tfm = fm || focused\n\t\tim = im || ignored\n\t\tif focused && !ignored {\n\t\t\tsamples = append(samples, s)\n\t\t}\n\t}\n\tp.Sample = samples\n\treturn\n}\n"
  },
  {
    "path": "tests/vendor/github.com/google/pprof/profile/index.go",
    "content": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage profile\n\nimport (\n\t\"fmt\"\n\t\"strconv\"\n\t\"strings\"\n)\n\n// SampleIndexByName returns the appropriate index for a value of sample index.\n// If numeric, it returns the number, otherwise it looks up the text in the\n// profile sample types.\nfunc (p *Profile) SampleIndexByName(sampleIndex string) (int, error) {\n\tif sampleIndex == \"\" {\n\t\tif dst := p.DefaultSampleType; dst != \"\" {\n\t\t\tfor i, t := range sampleTypes(p) {\n\t\t\t\tif t == dst {\n\t\t\t\t\treturn i, nil\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// By default select the last sample value\n\t\treturn len(p.SampleType) - 1, nil\n\t}\n\tif i, err := strconv.Atoi(sampleIndex); err == nil {\n\t\tif i < 0 || i >= len(p.SampleType) {\n\t\t\treturn 0, fmt.Errorf(\"sample_index %s is outside the range [0..%d]\", sampleIndex, len(p.SampleType)-1)\n\t\t}\n\t\treturn i, nil\n\t}\n\n\t// Remove the inuse_ prefix to support legacy pprof options\n\t// \"inuse_space\" and \"inuse_objects\" for profiles containing types\n\t// \"space\" and \"objects\".\n\tnoInuse := strings.TrimPrefix(sampleIndex, \"inuse_\")\n\tfor i, t := range p.SampleType {\n\t\tif t.Type == sampleIndex || t.Type == noInuse {\n\t\t\treturn i, nil\n\t\t}\n\t}\n\n\treturn 0, fmt.Errorf(\"sample_index %q must be one of: %v\", sampleIndex, sampleTypes(p))\n}\n\nfunc sampleTypes(p *Profile) []string {\n\ttypes := make([]string, len(p.SampleType))\n\tfor i, t := range p.SampleType {\n\t\ttypes[i] = t.Type\n\t}\n\treturn types\n}\n"
  },
  {
    "path": "tests/vendor/github.com/google/pprof/profile/legacy_java_profile.go",
    "content": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// This file implements parsers to convert java legacy profiles into\n// the profile.proto format.\n\npackage profile\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"path/filepath\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n)\n\nvar (\n\tattributeRx            = regexp.MustCompile(`([\\w ]+)=([\\w ]+)`)\n\tjavaSampleRx           = regexp.MustCompile(` *(\\d+) +(\\d+) +@ +([ x0-9a-f]*)`)\n\tjavaLocationRx         = regexp.MustCompile(`^\\s*0x([[:xdigit:]]+)\\s+(.*)\\s*$`)\n\tjavaLocationFileLineRx = regexp.MustCompile(`^(.*)\\s+\\((.+):(-?[[:digit:]]+)\\)$`)\n\tjavaLocationPathRx     = regexp.MustCompile(`^(.*)\\s+\\((.*)\\)$`)\n)\n\n// javaCPUProfile returns a new Profile from profilez data.\n// b is the profile bytes after the header, period is the profiling\n// period, and parse is a function to parse 8-byte chunks from the\n// profile in its native endianness.\nfunc javaCPUProfile(b []byte, period int64, parse func(b []byte) (uint64, []byte)) (*Profile, error) {\n\tp := &Profile{\n\t\tPeriod:     period * 1000,\n\t\tPeriodType: &ValueType{Type: \"cpu\", Unit: \"nanoseconds\"},\n\t\tSampleType: []*ValueType{{Type: \"samples\", Unit: \"count\"}, {Type: \"cpu\", Unit: \"nanoseconds\"}},\n\t}\n\tvar err error\n\tvar locs map[uint64]*Location\n\tif b, locs, err = parseCPUSamples(b, parse, false, p); err != nil {\n\t\treturn nil, err\n\t}\n\n\tif err = parseJavaLocations(b, locs, p); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Strip out addresses for better merge.\n\tif err = p.Aggregate(true, true, true, true, false, false); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn p, nil\n}\n\n// parseJavaProfile returns a new profile from heapz or contentionz\n// data. b is the profile bytes after the header.\nfunc parseJavaProfile(b []byte) (*Profile, error) {\n\th := bytes.SplitAfterN(b, []byte(\"\\n\"), 2)\n\tif len(h) < 2 {\n\t\treturn nil, errUnrecognized\n\t}\n\n\tp := &Profile{\n\t\tPeriodType: &ValueType{},\n\t}\n\theader := string(bytes.TrimSpace(h[0]))\n\n\tvar err error\n\tvar pType string\n\tswitch header {\n\tcase \"--- heapz 1 ---\":\n\t\tpType = \"heap\"\n\tcase \"--- contentionz 1 ---\":\n\t\tpType = \"contention\"\n\tdefault:\n\t\treturn nil, errUnrecognized\n\t}\n\n\tif b, err = parseJavaHeader(pType, h[1], p); err != nil {\n\t\treturn nil, err\n\t}\n\tvar locs map[uint64]*Location\n\tif b, locs, err = parseJavaSamples(pType, b, p); err != nil {\n\t\treturn nil, err\n\t}\n\tif err = parseJavaLocations(b, locs, p); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Strip out addresses for better merge.\n\tif err = p.Aggregate(true, true, true, true, false, false); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn p, nil\n}\n\n// parseJavaHeader parses the attribute section on a java profile and\n// populates a profile. Returns the remainder of the buffer after all\n// attributes.\nfunc parseJavaHeader(pType string, b []byte, p *Profile) ([]byte, error) {\n\tnextNewLine := bytes.IndexByte(b, byte('\\n'))\n\tfor nextNewLine != -1 {\n\t\tline := string(bytes.TrimSpace(b[0:nextNewLine]))\n\t\tif line != \"\" {\n\t\t\th := attributeRx.FindStringSubmatch(line)\n\t\t\tif h == nil {\n\t\t\t\t// Not a valid attribute, exit.\n\t\t\t\treturn b, nil\n\t\t\t}\n\n\t\t\tattribute, value := strings.TrimSpace(h[1]), strings.TrimSpace(h[2])\n\t\t\tvar err error\n\t\t\tswitch pType + \"/\" + attribute {\n\t\t\tcase \"heap/format\", \"cpu/format\", \"contention/format\":\n\t\t\t\tif value != \"java\" {\n\t\t\t\t\treturn nil, errUnrecognized\n\t\t\t\t}\n\t\t\tcase \"heap/resolution\":\n\t\t\t\tp.SampleType = []*ValueType{\n\t\t\t\t\t{Type: \"inuse_objects\", Unit: \"count\"},\n\t\t\t\t\t{Type: \"inuse_space\", Unit: value},\n\t\t\t\t}\n\t\t\tcase \"contention/resolution\":\n\t\t\t\tp.SampleType = []*ValueType{\n\t\t\t\t\t{Type: \"contentions\", Unit: \"count\"},\n\t\t\t\t\t{Type: \"delay\", Unit: value},\n\t\t\t\t}\n\t\t\tcase \"contention/sampling period\":\n\t\t\t\tp.PeriodType = &ValueType{\n\t\t\t\t\tType: \"contentions\", Unit: \"count\",\n\t\t\t\t}\n\t\t\t\tif p.Period, err = strconv.ParseInt(value, 0, 64); err != nil {\n\t\t\t\t\treturn nil, fmt.Errorf(\"failed to parse attribute %s: %v\", line, err)\n\t\t\t\t}\n\t\t\tcase \"contention/ms since reset\":\n\t\t\t\tmillis, err := strconv.ParseInt(value, 0, 64)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, fmt.Errorf(\"failed to parse attribute %s: %v\", line, err)\n\t\t\t\t}\n\t\t\t\tp.DurationNanos = millis * 1000 * 1000\n\t\t\tdefault:\n\t\t\t\treturn nil, errUnrecognized\n\t\t\t}\n\t\t}\n\t\t// Grab next line.\n\t\tb = b[nextNewLine+1:]\n\t\tnextNewLine = bytes.IndexByte(b, byte('\\n'))\n\t}\n\treturn b, nil\n}\n\n// parseJavaSamples parses the samples from a java profile and\n// populates the Samples in a profile. Returns the remainder of the\n// buffer after the samples.\nfunc parseJavaSamples(pType string, b []byte, p *Profile) ([]byte, map[uint64]*Location, error) {\n\tnextNewLine := bytes.IndexByte(b, byte('\\n'))\n\tlocs := make(map[uint64]*Location)\n\tfor nextNewLine != -1 {\n\t\tline := string(bytes.TrimSpace(b[0:nextNewLine]))\n\t\tif line != \"\" {\n\t\t\tsample := javaSampleRx.FindStringSubmatch(line)\n\t\t\tif sample == nil {\n\t\t\t\t// Not a valid sample, exit.\n\t\t\t\treturn b, locs, nil\n\t\t\t}\n\n\t\t\t// Java profiles have data/fields inverted compared to other\n\t\t\t// profile types.\n\t\t\tvar err error\n\t\t\tvalue1, value2, value3 := sample[2], sample[1], sample[3]\n\t\t\taddrs, err := parseHexAddresses(value3)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, nil, fmt.Errorf(\"malformed sample: %s: %v\", line, err)\n\t\t\t}\n\n\t\t\tvar sloc []*Location\n\t\t\tfor _, addr := range addrs {\n\t\t\t\tloc := locs[addr]\n\t\t\t\tif locs[addr] == nil {\n\t\t\t\t\tloc = &Location{\n\t\t\t\t\t\tAddress: addr,\n\t\t\t\t\t}\n\t\t\t\t\tp.Location = append(p.Location, loc)\n\t\t\t\t\tlocs[addr] = loc\n\t\t\t\t}\n\t\t\t\tsloc = append(sloc, loc)\n\t\t\t}\n\t\t\ts := &Sample{\n\t\t\t\tValue:    make([]int64, 2),\n\t\t\t\tLocation: sloc,\n\t\t\t}\n\n\t\t\tif s.Value[0], err = strconv.ParseInt(value1, 0, 64); err != nil {\n\t\t\t\treturn nil, nil, fmt.Errorf(\"parsing sample %s: %v\", line, err)\n\t\t\t}\n\t\t\tif s.Value[1], err = strconv.ParseInt(value2, 0, 64); err != nil {\n\t\t\t\treturn nil, nil, fmt.Errorf(\"parsing sample %s: %v\", line, err)\n\t\t\t}\n\n\t\t\tswitch pType {\n\t\t\tcase \"heap\":\n\t\t\t\tconst javaHeapzSamplingRate = 524288 // 512K\n\t\t\t\tif s.Value[0] == 0 {\n\t\t\t\t\treturn nil, nil, fmt.Errorf(\"parsing sample %s: second value must be non-zero\", line)\n\t\t\t\t}\n\t\t\t\ts.NumLabel = map[string][]int64{\"bytes\": {s.Value[1] / s.Value[0]}}\n\t\t\t\ts.Value[0], s.Value[1] = scaleHeapSample(s.Value[0], s.Value[1], javaHeapzSamplingRate)\n\t\t\tcase \"contention\":\n\t\t\t\tif period := p.Period; period != 0 {\n\t\t\t\t\ts.Value[0] = s.Value[0] * p.Period\n\t\t\t\t\ts.Value[1] = s.Value[1] * p.Period\n\t\t\t\t}\n\t\t\t}\n\t\t\tp.Sample = append(p.Sample, s)\n\t\t}\n\t\t// Grab next line.\n\t\tb = b[nextNewLine+1:]\n\t\tnextNewLine = bytes.IndexByte(b, byte('\\n'))\n\t}\n\treturn b, locs, nil\n}\n\n// parseJavaLocations parses the location information in a java\n// profile and populates the Locations in a profile. It uses the\n// location addresses from the profile as both the ID of each\n// location.\nfunc parseJavaLocations(b []byte, locs map[uint64]*Location, p *Profile) error {\n\tr := bytes.NewBuffer(b)\n\tfns := make(map[string]*Function)\n\tfor {\n\t\tline, err := r.ReadString('\\n')\n\t\tif err != nil {\n\t\t\tif err != io.EOF {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif line == \"\" {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\t\tif line = strings.TrimSpace(line); line == \"\" {\n\t\t\tcontinue\n\t\t}\n\n\t\tjloc := javaLocationRx.FindStringSubmatch(line)\n\t\tif len(jloc) != 3 {\n\t\t\tcontinue\n\t\t}\n\t\taddr, err := strconv.ParseUint(jloc[1], 16, 64)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"parsing sample %s: %v\", line, err)\n\t\t}\n\t\tloc := locs[addr]\n\t\tif loc == nil {\n\t\t\t// Unused/unseen\n\t\t\tcontinue\n\t\t}\n\t\tvar lineFunc, lineFile string\n\t\tvar lineNo int64\n\n\t\tif fileLine := javaLocationFileLineRx.FindStringSubmatch(jloc[2]); len(fileLine) == 4 {\n\t\t\t// Found a line of the form: \"function (file:line)\"\n\t\t\tlineFunc, lineFile = fileLine[1], fileLine[2]\n\t\t\tif n, err := strconv.ParseInt(fileLine[3], 10, 64); err == nil && n > 0 {\n\t\t\t\tlineNo = n\n\t\t\t}\n\t\t} else if filePath := javaLocationPathRx.FindStringSubmatch(jloc[2]); len(filePath) == 3 {\n\t\t\t// If there's not a file:line, it's a shared library path.\n\t\t\t// The path isn't interesting, so just give the .so.\n\t\t\tlineFunc, lineFile = filePath[1], filepath.Base(filePath[2])\n\t\t} else if strings.Contains(jloc[2], \"generated stub/JIT\") {\n\t\t\tlineFunc = \"STUB\"\n\t\t} else {\n\t\t\t// Treat whole line as the function name. This is used by the\n\t\t\t// java agent for internal states such as \"GC\" or \"VM\".\n\t\t\tlineFunc = jloc[2]\n\t\t}\n\t\tfn := fns[lineFunc]\n\n\t\tif fn == nil {\n\t\t\tfn = &Function{\n\t\t\t\tName:       lineFunc,\n\t\t\t\tSystemName: lineFunc,\n\t\t\t\tFilename:   lineFile,\n\t\t\t}\n\t\t\tfns[lineFunc] = fn\n\t\t\tp.Function = append(p.Function, fn)\n\t\t}\n\t\tloc.Line = []Line{\n\t\t\t{\n\t\t\t\tFunction: fn,\n\t\t\t\tLine:     lineNo,\n\t\t\t},\n\t\t}\n\t\tloc.Address = 0\n\t}\n\n\tp.remapLocationIDs()\n\tp.remapFunctionIDs()\n\tp.remapMappingIDs()\n\n\treturn nil\n}\n"
  },
  {
    "path": "tests/vendor/github.com/google/pprof/profile/legacy_profile.go",
    "content": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// This file implements parsers to convert legacy profiles into the\n// profile.proto format.\n\npackage profile\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"math\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n)\n\nvar (\n\tcountStartRE = regexp.MustCompile(`\\A(\\S+) profile: total \\d+\\z`)\n\tcountRE      = regexp.MustCompile(`\\A(\\d+) @(( 0x[0-9a-f]+)+)\\z`)\n\n\theapHeaderRE = regexp.MustCompile(`heap profile: *(\\d+): *(\\d+) *\\[ *(\\d+): *(\\d+) *\\] *@ *(heap[_a-z0-9]*)/?(\\d*)`)\n\theapSampleRE = regexp.MustCompile(`(-?\\d+): *(-?\\d+) *\\[ *(\\d+): *(\\d+) *] @([ x0-9a-f]*)`)\n\n\tcontentionSampleRE = regexp.MustCompile(`(\\d+) *(\\d+) @([ x0-9a-f]*)`)\n\n\thexNumberRE = regexp.MustCompile(`0x[0-9a-f]+`)\n\n\tgrowthHeaderRE = regexp.MustCompile(`heap profile: *(\\d+): *(\\d+) *\\[ *(\\d+): *(\\d+) *\\] @ growthz?`)\n\n\tfragmentationHeaderRE = regexp.MustCompile(`heap profile: *(\\d+): *(\\d+) *\\[ *(\\d+): *(\\d+) *\\] @ fragmentationz?`)\n\n\tthreadzStartRE = regexp.MustCompile(`--- threadz \\d+ ---`)\n\tthreadStartRE  = regexp.MustCompile(`--- Thread ([[:xdigit:]]+) \\(name: (.*)/(\\d+)\\) stack: ---`)\n\n\t// Regular expressions to parse process mappings. Support the format used by Linux /proc/.../maps and other tools.\n\t// Recommended format:\n\t// Start   End     object file name     offset(optional)   linker build id\n\t// 0x40000-0x80000 /path/to/binary      (@FF00)            abc123456\n\tspaceDigits = `\\s+[[:digit:]]+`\n\thexPair     = `\\s+[[:xdigit:]]+:[[:xdigit:]]+`\n\toSpace      = `\\s*`\n\t// Capturing expressions.\n\tcHex           = `(?:0x)?([[:xdigit:]]+)`\n\tcHexRange      = `\\s*` + cHex + `[\\s-]?` + oSpace + cHex + `:?`\n\tcSpaceString   = `(?:\\s+(\\S+))?`\n\tcSpaceHex      = `(?:\\s+([[:xdigit:]]+))?`\n\tcSpaceAtOffset = `(?:\\s+\\(@([[:xdigit:]]+)\\))?`\n\tcPerm          = `(?:\\s+([-rwxp]+))?`\n\n\tprocMapsRE  = regexp.MustCompile(`^` + cHexRange + cPerm + cSpaceHex + hexPair + spaceDigits + cSpaceString)\n\tbriefMapsRE = regexp.MustCompile(`^` + cHexRange + cPerm + cSpaceString + cSpaceAtOffset + cSpaceHex)\n\n\t// Regular expression to parse log data, of the form:\n\t// ... file:line] msg...\n\tlogInfoRE = regexp.MustCompile(`^[^\\[\\]]+:[0-9]+]\\s`)\n)\n\nfunc isSpaceOrComment(line string) bool {\n\ttrimmed := strings.TrimSpace(line)\n\treturn len(trimmed) == 0 || trimmed[0] == '#'\n}\n\n// parseGoCount parses a Go count profile (e.g., threadcreate or\n// goroutine) and returns a new Profile.\nfunc parseGoCount(b []byte) (*Profile, error) {\n\ts := bufio.NewScanner(bytes.NewBuffer(b))\n\t// Skip comments at the beginning of the file.\n\tfor s.Scan() && isSpaceOrComment(s.Text()) {\n\t}\n\tif err := s.Err(); err != nil {\n\t\treturn nil, err\n\t}\n\tm := countStartRE.FindStringSubmatch(s.Text())\n\tif m == nil {\n\t\treturn nil, errUnrecognized\n\t}\n\tprofileType := m[1]\n\tp := &Profile{\n\t\tPeriodType: &ValueType{Type: profileType, Unit: \"count\"},\n\t\tPeriod:     1,\n\t\tSampleType: []*ValueType{{Type: profileType, Unit: \"count\"}},\n\t}\n\tlocations := make(map[uint64]*Location)\n\tfor s.Scan() {\n\t\tline := s.Text()\n\t\tif isSpaceOrComment(line) {\n\t\t\tcontinue\n\t\t}\n\t\tif strings.HasPrefix(line, \"---\") {\n\t\t\tbreak\n\t\t}\n\t\tm := countRE.FindStringSubmatch(line)\n\t\tif m == nil {\n\t\t\treturn nil, errMalformed\n\t\t}\n\t\tn, err := strconv.ParseInt(m[1], 0, 64)\n\t\tif err != nil {\n\t\t\treturn nil, errMalformed\n\t\t}\n\t\tfields := strings.Fields(m[2])\n\t\tlocs := make([]*Location, 0, len(fields))\n\t\tfor _, stk := range fields {\n\t\t\taddr, err := strconv.ParseUint(stk, 0, 64)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, errMalformed\n\t\t\t}\n\t\t\t// Adjust all frames by -1 to land on top of the call instruction.\n\t\t\taddr--\n\t\t\tloc := locations[addr]\n\t\t\tif loc == nil {\n\t\t\t\tloc = &Location{\n\t\t\t\t\tAddress: addr,\n\t\t\t\t}\n\t\t\t\tlocations[addr] = loc\n\t\t\t\tp.Location = append(p.Location, loc)\n\t\t\t}\n\t\t\tlocs = append(locs, loc)\n\t\t}\n\t\tp.Sample = append(p.Sample, &Sample{\n\t\t\tLocation: locs,\n\t\t\tValue:    []int64{n},\n\t\t})\n\t}\n\tif err := s.Err(); err != nil {\n\t\treturn nil, err\n\t}\n\n\tif err := parseAdditionalSections(s, p); err != nil {\n\t\treturn nil, err\n\t}\n\treturn p, nil\n}\n\n// remapLocationIDs ensures there is a location for each address\n// referenced by a sample, and remaps the samples to point to the new\n// location ids.\nfunc (p *Profile) remapLocationIDs() {\n\tseen := make(map[*Location]bool, len(p.Location))\n\tvar locs []*Location\n\n\tfor _, s := range p.Sample {\n\t\tfor _, l := range s.Location {\n\t\t\tif seen[l] {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tl.ID = uint64(len(locs) + 1)\n\t\t\tlocs = append(locs, l)\n\t\t\tseen[l] = true\n\t\t}\n\t}\n\tp.Location = locs\n}\n\nfunc (p *Profile) remapFunctionIDs() {\n\tseen := make(map[*Function]bool, len(p.Function))\n\tvar fns []*Function\n\n\tfor _, l := range p.Location {\n\t\tfor _, ln := range l.Line {\n\t\t\tfn := ln.Function\n\t\t\tif fn == nil || seen[fn] {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tfn.ID = uint64(len(fns) + 1)\n\t\t\tfns = append(fns, fn)\n\t\t\tseen[fn] = true\n\t\t}\n\t}\n\tp.Function = fns\n}\n\n// remapMappingIDs matches location addresses with existing mappings\n// and updates them appropriately. This is O(N*M), if this ever shows\n// up as a bottleneck, evaluate sorting the mappings and doing a\n// binary search, which would make it O(N*log(M)).\nfunc (p *Profile) remapMappingIDs() {\n\t// Some profile handlers will incorrectly set regions for the main\n\t// executable if its section is remapped. Fix them through heuristics.\n\n\tif len(p.Mapping) > 0 {\n\t\t// Remove the initial mapping if named '/anon_hugepage' and has a\n\t\t// consecutive adjacent mapping.\n\t\tif m := p.Mapping[0]; strings.HasPrefix(m.File, \"/anon_hugepage\") {\n\t\t\tif len(p.Mapping) > 1 && m.Limit == p.Mapping[1].Start {\n\t\t\t\tp.Mapping = p.Mapping[1:]\n\t\t\t}\n\t\t}\n\t}\n\n\t// Subtract the offset from the start of the main mapping if it\n\t// ends up at a recognizable start address.\n\tif len(p.Mapping) > 0 {\n\t\tconst expectedStart = 0x400000\n\t\tif m := p.Mapping[0]; m.Start-m.Offset == expectedStart {\n\t\t\tm.Start = expectedStart\n\t\t\tm.Offset = 0\n\t\t}\n\t}\n\n\t// Associate each location with an address to the corresponding\n\t// mapping. Create fake mapping if a suitable one isn't found.\n\tvar fake *Mapping\nnextLocation:\n\tfor _, l := range p.Location {\n\t\ta := l.Address\n\t\tif l.Mapping != nil || a == 0 {\n\t\t\tcontinue\n\t\t}\n\t\tfor _, m := range p.Mapping {\n\t\t\tif m.Start <= a && a < m.Limit {\n\t\t\t\tl.Mapping = m\n\t\t\t\tcontinue nextLocation\n\t\t\t}\n\t\t}\n\t\t// Work around legacy handlers failing to encode the first\n\t\t// part of mappings split into adjacent ranges.\n\t\tfor _, m := range p.Mapping {\n\t\t\tif m.Offset != 0 && m.Start-m.Offset <= a && a < m.Start {\n\t\t\t\tm.Start -= m.Offset\n\t\t\t\tm.Offset = 0\n\t\t\t\tl.Mapping = m\n\t\t\t\tcontinue nextLocation\n\t\t\t}\n\t\t}\n\t\t// If there is still no mapping, create a fake one.\n\t\t// This is important for the Go legacy handler, which produced\n\t\t// no mappings.\n\t\tif fake == nil {\n\t\t\tfake = &Mapping{\n\t\t\t\tID:    1,\n\t\t\t\tLimit: ^uint64(0),\n\t\t\t}\n\t\t\tp.Mapping = append(p.Mapping, fake)\n\t\t}\n\t\tl.Mapping = fake\n\t}\n\n\t// Reset all mapping IDs.\n\tfor i, m := range p.Mapping {\n\t\tm.ID = uint64(i + 1)\n\t}\n}\n\nvar cpuInts = []func([]byte) (uint64, []byte){\n\tget32l,\n\tget32b,\n\tget64l,\n\tget64b,\n}\n\nfunc get32l(b []byte) (uint64, []byte) {\n\tif len(b) < 4 {\n\t\treturn 0, nil\n\t}\n\treturn uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24, b[4:]\n}\n\nfunc get32b(b []byte) (uint64, []byte) {\n\tif len(b) < 4 {\n\t\treturn 0, nil\n\t}\n\treturn uint64(b[3]) | uint64(b[2])<<8 | uint64(b[1])<<16 | uint64(b[0])<<24, b[4:]\n}\n\nfunc get64l(b []byte) (uint64, []byte) {\n\tif len(b) < 8 {\n\t\treturn 0, nil\n\t}\n\treturn uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56, b[8:]\n}\n\nfunc get64b(b []byte) (uint64, []byte) {\n\tif len(b) < 8 {\n\t\treturn 0, nil\n\t}\n\treturn uint64(b[7]) | uint64(b[6])<<8 | uint64(b[5])<<16 | uint64(b[4])<<24 | uint64(b[3])<<32 | uint64(b[2])<<40 | uint64(b[1])<<48 | uint64(b[0])<<56, b[8:]\n}\n\n// parseCPU parses a profilez legacy profile and returns a newly\n// populated Profile.\n//\n// The general format for profilez samples is a sequence of words in\n// binary format. The first words are a header with the following data:\n//\n//\t1st word -- 0\n//\t2nd word -- 3\n//\t3rd word -- 0 if a c++ application, 1 if a java application.\n//\t4th word -- Sampling period (in microseconds).\n//\t5th word -- Padding.\nfunc parseCPU(b []byte) (*Profile, error) {\n\tvar parse func([]byte) (uint64, []byte)\n\tvar n1, n2, n3, n4, n5 uint64\n\tfor _, parse = range cpuInts {\n\t\tvar tmp []byte\n\t\tn1, tmp = parse(b)\n\t\tn2, tmp = parse(tmp)\n\t\tn3, tmp = parse(tmp)\n\t\tn4, tmp = parse(tmp)\n\t\tn5, tmp = parse(tmp)\n\n\t\tif tmp != nil && n1 == 0 && n2 == 3 && n3 == 0 && n4 > 0 && n5 == 0 {\n\t\t\tb = tmp\n\t\t\treturn cpuProfile(b, int64(n4), parse)\n\t\t}\n\t\tif tmp != nil && n1 == 0 && n2 == 3 && n3 == 1 && n4 > 0 && n5 == 0 {\n\t\t\tb = tmp\n\t\t\treturn javaCPUProfile(b, int64(n4), parse)\n\t\t}\n\t}\n\treturn nil, errUnrecognized\n}\n\n// cpuProfile returns a new Profile from C++ profilez data.\n// b is the profile bytes after the header, period is the profiling\n// period, and parse is a function to parse 8-byte chunks from the\n// profile in its native endianness.\nfunc cpuProfile(b []byte, period int64, parse func(b []byte) (uint64, []byte)) (*Profile, error) {\n\tp := &Profile{\n\t\tPeriod:     period * 1000,\n\t\tPeriodType: &ValueType{Type: \"cpu\", Unit: \"nanoseconds\"},\n\t\tSampleType: []*ValueType{\n\t\t\t{Type: \"samples\", Unit: \"count\"},\n\t\t\t{Type: \"cpu\", Unit: \"nanoseconds\"},\n\t\t},\n\t}\n\tvar err error\n\tif b, _, err = parseCPUSamples(b, parse, true, p); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// If *most* samples have the same second-to-the-bottom frame, it\n\t// strongly suggests that it is an uninteresting artifact of\n\t// measurement -- a stack frame pushed by the signal handler. The\n\t// bottom frame is always correct as it is picked up from the signal\n\t// structure, not the stack. Check if this is the case and if so,\n\t// remove.\n\n\t// Remove up to two frames.\n\tmaxiter := 2\n\t// Allow one different sample for this many samples with the same\n\t// second-to-last frame.\n\tsimilarSamples := 32\n\tmargin := len(p.Sample) / similarSamples\n\n\tfor iter := 0; iter < maxiter; iter++ {\n\t\taddr1 := make(map[uint64]int)\n\t\tfor _, s := range p.Sample {\n\t\t\tif len(s.Location) > 1 {\n\t\t\t\ta := s.Location[1].Address\n\t\t\t\taddr1[a] = addr1[a] + 1\n\t\t\t}\n\t\t}\n\n\t\tfor id1, count := range addr1 {\n\t\t\tif count >= len(p.Sample)-margin {\n\t\t\t\t// Found uninteresting frame, strip it out from all samples\n\t\t\t\tfor _, s := range p.Sample {\n\t\t\t\t\tif len(s.Location) > 1 && s.Location[1].Address == id1 {\n\t\t\t\t\t\ts.Location = append(s.Location[:1], s.Location[2:]...)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\n\tif err := p.ParseMemoryMap(bytes.NewBuffer(b)); err != nil {\n\t\treturn nil, err\n\t}\n\n\tcleanupDuplicateLocations(p)\n\treturn p, nil\n}\n\nfunc cleanupDuplicateLocations(p *Profile) {\n\t// The profile handler may duplicate the leaf frame, because it gets\n\t// its address both from stack unwinding and from the signal\n\t// context. Detect this and delete the duplicate, which has been\n\t// adjusted by -1. The leaf address should not be adjusted as it is\n\t// not a call.\n\tfor _, s := range p.Sample {\n\t\tif len(s.Location) > 1 && s.Location[0].Address == s.Location[1].Address+1 {\n\t\t\ts.Location = append(s.Location[:1], s.Location[2:]...)\n\t\t}\n\t}\n}\n\n// parseCPUSamples parses a collection of profilez samples from a\n// profile.\n//\n// profilez samples are a repeated sequence of stack frames of the\n// form:\n//\n//\t1st word -- The number of times this stack was encountered.\n//\t2nd word -- The size of the stack (StackSize).\n//\t3rd word -- The first address on the stack.\n//\t...\n//\tStackSize + 2 -- The last address on the stack\n//\n// The last stack trace is of the form:\n//\n//\t1st word -- 0\n//\t2nd word -- 1\n//\t3rd word -- 0\n//\n// Addresses from stack traces may point to the next instruction after\n// each call. Optionally adjust by -1 to land somewhere on the actual\n// call (except for the leaf, which is not a call).\nfunc parseCPUSamples(b []byte, parse func(b []byte) (uint64, []byte), adjust bool, p *Profile) ([]byte, map[uint64]*Location, error) {\n\tlocs := make(map[uint64]*Location)\n\tfor len(b) > 0 {\n\t\tvar count, nstk uint64\n\t\tcount, b = parse(b)\n\t\tnstk, b = parse(b)\n\t\tif b == nil || nstk > uint64(len(b)/4) {\n\t\t\treturn nil, nil, errUnrecognized\n\t\t}\n\t\tvar sloc []*Location\n\t\taddrs := make([]uint64, nstk)\n\t\tfor i := 0; i < int(nstk); i++ {\n\t\t\taddrs[i], b = parse(b)\n\t\t}\n\n\t\tif count == 0 && nstk == 1 && addrs[0] == 0 {\n\t\t\t// End of data marker\n\t\t\tbreak\n\t\t}\n\t\tfor i, addr := range addrs {\n\t\t\tif adjust && i > 0 {\n\t\t\t\taddr--\n\t\t\t}\n\t\t\tloc := locs[addr]\n\t\t\tif loc == nil {\n\t\t\t\tloc = &Location{\n\t\t\t\t\tAddress: addr,\n\t\t\t\t}\n\t\t\t\tlocs[addr] = loc\n\t\t\t\tp.Location = append(p.Location, loc)\n\t\t\t}\n\t\t\tsloc = append(sloc, loc)\n\t\t}\n\t\tp.Sample = append(p.Sample,\n\t\t\t&Sample{\n\t\t\t\tValue:    []int64{int64(count), int64(count) * p.Period},\n\t\t\t\tLocation: sloc,\n\t\t\t})\n\t}\n\t// Reached the end without finding the EOD marker.\n\treturn b, locs, nil\n}\n\n// parseHeap parses a heapz legacy or a growthz profile and\n// returns a newly populated Profile.\nfunc parseHeap(b []byte) (p *Profile, err error) {\n\ts := bufio.NewScanner(bytes.NewBuffer(b))\n\tif !s.Scan() {\n\t\tif err := s.Err(); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn nil, errUnrecognized\n\t}\n\tp = &Profile{}\n\n\tsampling := \"\"\n\thasAlloc := false\n\n\tline := s.Text()\n\tp.PeriodType = &ValueType{Type: \"space\", Unit: \"bytes\"}\n\tif header := heapHeaderRE.FindStringSubmatch(line); header != nil {\n\t\tsampling, p.Period, hasAlloc, err = parseHeapHeader(line)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t} else if header = growthHeaderRE.FindStringSubmatch(line); header != nil {\n\t\tp.Period = 1\n\t} else if header = fragmentationHeaderRE.FindStringSubmatch(line); header != nil {\n\t\tp.Period = 1\n\t} else {\n\t\treturn nil, errUnrecognized\n\t}\n\n\tif hasAlloc {\n\t\t// Put alloc before inuse so that default pprof selection\n\t\t// will prefer inuse_space.\n\t\tp.SampleType = []*ValueType{\n\t\t\t{Type: \"alloc_objects\", Unit: \"count\"},\n\t\t\t{Type: \"alloc_space\", Unit: \"bytes\"},\n\t\t\t{Type: \"inuse_objects\", Unit: \"count\"},\n\t\t\t{Type: \"inuse_space\", Unit: \"bytes\"},\n\t\t}\n\t} else {\n\t\tp.SampleType = []*ValueType{\n\t\t\t{Type: \"objects\", Unit: \"count\"},\n\t\t\t{Type: \"space\", Unit: \"bytes\"},\n\t\t}\n\t}\n\n\tlocs := make(map[uint64]*Location)\n\tfor s.Scan() {\n\t\tline := strings.TrimSpace(s.Text())\n\n\t\tif isSpaceOrComment(line) {\n\t\t\tcontinue\n\t\t}\n\n\t\tif isMemoryMapSentinel(line) {\n\t\t\tbreak\n\t\t}\n\n\t\tvalue, blocksize, addrs, err := parseHeapSample(line, p.Period, sampling, hasAlloc)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tvar sloc []*Location\n\t\tfor _, addr := range addrs {\n\t\t\t// Addresses from stack traces point to the next instruction after\n\t\t\t// each call. Adjust by -1 to land somewhere on the actual call.\n\t\t\taddr--\n\t\t\tloc := locs[addr]\n\t\t\tif locs[addr] == nil {\n\t\t\t\tloc = &Location{\n\t\t\t\t\tAddress: addr,\n\t\t\t\t}\n\t\t\t\tp.Location = append(p.Location, loc)\n\t\t\t\tlocs[addr] = loc\n\t\t\t}\n\t\t\tsloc = append(sloc, loc)\n\t\t}\n\n\t\tp.Sample = append(p.Sample, &Sample{\n\t\t\tValue:    value,\n\t\t\tLocation: sloc,\n\t\t\tNumLabel: map[string][]int64{\"bytes\": {blocksize}},\n\t\t})\n\t}\n\tif err := s.Err(); err != nil {\n\t\treturn nil, err\n\t}\n\tif err := parseAdditionalSections(s, p); err != nil {\n\t\treturn nil, err\n\t}\n\treturn p, nil\n}\n\nfunc parseHeapHeader(line string) (sampling string, period int64, hasAlloc bool, err error) {\n\theader := heapHeaderRE.FindStringSubmatch(line)\n\tif header == nil {\n\t\treturn \"\", 0, false, errUnrecognized\n\t}\n\n\tif len(header[6]) > 0 {\n\t\tif period, err = strconv.ParseInt(header[6], 10, 64); err != nil {\n\t\t\treturn \"\", 0, false, errUnrecognized\n\t\t}\n\t}\n\n\tif (header[3] != header[1] && header[3] != \"0\") || (header[4] != header[2] && header[4] != \"0\") {\n\t\thasAlloc = true\n\t}\n\n\tswitch header[5] {\n\tcase \"heapz_v2\", \"heap_v2\":\n\t\treturn \"v2\", period, hasAlloc, nil\n\tcase \"heapprofile\":\n\t\treturn \"\", 1, hasAlloc, nil\n\tcase \"heap\":\n\t\treturn \"v2\", period / 2, hasAlloc, nil\n\tdefault:\n\t\treturn \"\", 0, false, errUnrecognized\n\t}\n}\n\n// parseHeapSample parses a single row from a heap profile into a new Sample.\nfunc parseHeapSample(line string, rate int64, sampling string, includeAlloc bool) (value []int64, blocksize int64, addrs []uint64, err error) {\n\tsampleData := heapSampleRE.FindStringSubmatch(line)\n\tif len(sampleData) != 6 {\n\t\treturn nil, 0, nil, fmt.Errorf(\"unexpected number of sample values: got %d, want 6\", len(sampleData))\n\t}\n\n\t// This is a local-scoped helper function to avoid needing to pass\n\t// around rate, sampling and many return parameters.\n\taddValues := func(countString, sizeString string, label string) error {\n\t\tcount, err := strconv.ParseInt(countString, 10, 64)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"malformed sample: %s: %v\", line, err)\n\t\t}\n\t\tsize, err := strconv.ParseInt(sizeString, 10, 64)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"malformed sample: %s: %v\", line, err)\n\t\t}\n\t\tif count == 0 && size != 0 {\n\t\t\treturn fmt.Errorf(\"%s count was 0 but %s bytes was %d\", label, label, size)\n\t\t}\n\t\tif count != 0 {\n\t\t\tblocksize = size / count\n\t\t\tif sampling == \"v2\" {\n\t\t\t\tcount, size = scaleHeapSample(count, size, rate)\n\t\t\t}\n\t\t}\n\t\tvalue = append(value, count, size)\n\t\treturn nil\n\t}\n\n\tif includeAlloc {\n\t\tif err := addValues(sampleData[3], sampleData[4], \"allocation\"); err != nil {\n\t\t\treturn nil, 0, nil, err\n\t\t}\n\t}\n\n\tif err := addValues(sampleData[1], sampleData[2], \"inuse\"); err != nil {\n\t\treturn nil, 0, nil, err\n\t}\n\n\taddrs, err = parseHexAddresses(sampleData[5])\n\tif err != nil {\n\t\treturn nil, 0, nil, fmt.Errorf(\"malformed sample: %s: %v\", line, err)\n\t}\n\n\treturn value, blocksize, addrs, nil\n}\n\n// parseHexAddresses extracts hex numbers from a string, attempts to convert\n// each to an unsigned 64-bit number and returns the resulting numbers as a\n// slice, or an error if the string contains hex numbers which are too large to\n// handle (which means a malformed profile).\nfunc parseHexAddresses(s string) ([]uint64, error) {\n\thexStrings := hexNumberRE.FindAllString(s, -1)\n\tvar addrs []uint64\n\tfor _, s := range hexStrings {\n\t\tif addr, err := strconv.ParseUint(s, 0, 64); err == nil {\n\t\t\taddrs = append(addrs, addr)\n\t\t} else {\n\t\t\treturn nil, fmt.Errorf(\"failed to parse as hex 64-bit number: %s\", s)\n\t\t}\n\t}\n\treturn addrs, nil\n}\n\n// scaleHeapSample adjusts the data from a heapz Sample to\n// account for its probability of appearing in the collected\n// data. heapz profiles are a sampling of the memory allocations\n// requests in a program. We estimate the unsampled value by dividing\n// each collected sample by its probability of appearing in the\n// profile. heapz v2 profiles rely on a poisson process to determine\n// which samples to collect, based on the desired average collection\n// rate R. The probability of a sample of size S to appear in that\n// profile is 1-exp(-S/R).\nfunc scaleHeapSample(count, size, rate int64) (int64, int64) {\n\tif count == 0 || size == 0 {\n\t\treturn 0, 0\n\t}\n\n\tif rate <= 1 {\n\t\t// if rate==1 all samples were collected so no adjustment is needed.\n\t\t// if rate<1 treat as unknown and skip scaling.\n\t\treturn count, size\n\t}\n\n\tavgSize := float64(size) / float64(count)\n\tscale := 1 / (1 - math.Exp(-avgSize/float64(rate)))\n\n\treturn int64(float64(count) * scale), int64(float64(size) * scale)\n}\n\n// parseContention parses a mutex or contention profile. There are 2 cases:\n// \"--- contentionz \" for legacy C++ profiles (and backwards compatibility)\n// \"--- mutex:\" or \"--- contention:\" for profiles generated by the Go runtime.\nfunc parseContention(b []byte) (*Profile, error) {\n\ts := bufio.NewScanner(bytes.NewBuffer(b))\n\tif !s.Scan() {\n\t\tif err := s.Err(); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn nil, errUnrecognized\n\t}\n\n\tswitch l := s.Text(); {\n\tcase strings.HasPrefix(l, \"--- contentionz \"):\n\tcase strings.HasPrefix(l, \"--- mutex:\"):\n\tcase strings.HasPrefix(l, \"--- contention:\"):\n\tdefault:\n\t\treturn nil, errUnrecognized\n\t}\n\n\tp := &Profile{\n\t\tPeriodType: &ValueType{Type: \"contentions\", Unit: \"count\"},\n\t\tPeriod:     1,\n\t\tSampleType: []*ValueType{\n\t\t\t{Type: \"contentions\", Unit: \"count\"},\n\t\t\t{Type: \"delay\", Unit: \"nanoseconds\"},\n\t\t},\n\t}\n\n\tvar cpuHz int64\n\t// Parse text of the form \"attribute = value\" before the samples.\n\tconst delimiter = \"=\"\n\tfor s.Scan() {\n\t\tline := s.Text()\n\t\tif line = strings.TrimSpace(line); isSpaceOrComment(line) {\n\t\t\tcontinue\n\t\t}\n\t\tif strings.HasPrefix(line, \"---\") {\n\t\t\tbreak\n\t\t}\n\t\tattr := strings.SplitN(line, delimiter, 2)\n\t\tif len(attr) != 2 {\n\t\t\tbreak\n\t\t}\n\t\tkey, val := strings.TrimSpace(attr[0]), strings.TrimSpace(attr[1])\n\t\tvar err error\n\t\tswitch key {\n\t\tcase \"cycles/second\":\n\t\t\tif cpuHz, err = strconv.ParseInt(val, 0, 64); err != nil {\n\t\t\t\treturn nil, errUnrecognized\n\t\t\t}\n\t\tcase \"sampling period\":\n\t\t\tif p.Period, err = strconv.ParseInt(val, 0, 64); err != nil {\n\t\t\t\treturn nil, errUnrecognized\n\t\t\t}\n\t\tcase \"ms since reset\":\n\t\t\tms, err := strconv.ParseInt(val, 0, 64)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, errUnrecognized\n\t\t\t}\n\t\t\tp.DurationNanos = ms * 1000 * 1000\n\t\tcase \"format\":\n\t\t\t// CPP contentionz profiles don't have format.\n\t\t\treturn nil, errUnrecognized\n\t\tcase \"resolution\":\n\t\t\t// CPP contentionz profiles don't have resolution.\n\t\t\treturn nil, errUnrecognized\n\t\tcase \"discarded samples\":\n\t\tdefault:\n\t\t\treturn nil, errUnrecognized\n\t\t}\n\t}\n\tif err := s.Err(); err != nil {\n\t\treturn nil, err\n\t}\n\n\tlocs := make(map[uint64]*Location)\n\tfor {\n\t\tline := strings.TrimSpace(s.Text())\n\t\tif strings.HasPrefix(line, \"---\") {\n\t\t\tbreak\n\t\t}\n\t\tif !isSpaceOrComment(line) {\n\t\t\tvalue, addrs, err := parseContentionSample(line, p.Period, cpuHz)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tvar sloc []*Location\n\t\t\tfor _, addr := range addrs {\n\t\t\t\t// Addresses from stack traces point to the next instruction after\n\t\t\t\t// each call. Adjust by -1 to land somewhere on the actual call.\n\t\t\t\taddr--\n\t\t\t\tloc := locs[addr]\n\t\t\t\tif locs[addr] == nil {\n\t\t\t\t\tloc = &Location{\n\t\t\t\t\t\tAddress: addr,\n\t\t\t\t\t}\n\t\t\t\t\tp.Location = append(p.Location, loc)\n\t\t\t\t\tlocs[addr] = loc\n\t\t\t\t}\n\t\t\t\tsloc = append(sloc, loc)\n\t\t\t}\n\t\t\tp.Sample = append(p.Sample, &Sample{\n\t\t\t\tValue:    value,\n\t\t\t\tLocation: sloc,\n\t\t\t})\n\t\t}\n\t\tif !s.Scan() {\n\t\t\tbreak\n\t\t}\n\t}\n\tif err := s.Err(); err != nil {\n\t\treturn nil, err\n\t}\n\n\tif err := parseAdditionalSections(s, p); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn p, nil\n}\n\n// parseContentionSample parses a single row from a contention profile\n// into a new Sample.\nfunc parseContentionSample(line string, period, cpuHz int64) (value []int64, addrs []uint64, err error) {\n\tsampleData := contentionSampleRE.FindStringSubmatch(line)\n\tif sampleData == nil {\n\t\treturn nil, nil, errUnrecognized\n\t}\n\n\tv1, err := strconv.ParseInt(sampleData[1], 10, 64)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"malformed sample: %s: %v\", line, err)\n\t}\n\tv2, err := strconv.ParseInt(sampleData[2], 10, 64)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"malformed sample: %s: %v\", line, err)\n\t}\n\n\t// Unsample values if period and cpuHz are available.\n\t// - Delays are scaled to cycles and then to nanoseconds.\n\t// - Contentions are scaled to cycles.\n\tif period > 0 {\n\t\tif cpuHz > 0 {\n\t\t\tcpuGHz := float64(cpuHz) / 1e9\n\t\t\tv1 = int64(float64(v1) * float64(period) / cpuGHz)\n\t\t}\n\t\tv2 = v2 * period\n\t}\n\n\tvalue = []int64{v2, v1}\n\taddrs, err = parseHexAddresses(sampleData[3])\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"malformed sample: %s: %v\", line, err)\n\t}\n\n\treturn value, addrs, nil\n}\n\n// parseThread parses a Threadz profile and returns a new Profile.\nfunc parseThread(b []byte) (*Profile, error) {\n\ts := bufio.NewScanner(bytes.NewBuffer(b))\n\t// Skip past comments and empty lines seeking a real header.\n\tfor s.Scan() && isSpaceOrComment(s.Text()) {\n\t}\n\n\tline := s.Text()\n\tif m := threadzStartRE.FindStringSubmatch(line); m != nil {\n\t\t// Advance over initial comments until first stack trace.\n\t\tfor s.Scan() {\n\t\t\tif line = s.Text(); isMemoryMapSentinel(line) || strings.HasPrefix(line, \"-\") {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t} else if t := threadStartRE.FindStringSubmatch(line); len(t) != 4 {\n\t\treturn nil, errUnrecognized\n\t}\n\n\tp := &Profile{\n\t\tSampleType: []*ValueType{{Type: \"thread\", Unit: \"count\"}},\n\t\tPeriodType: &ValueType{Type: \"thread\", Unit: \"count\"},\n\t\tPeriod:     1,\n\t}\n\n\tlocs := make(map[uint64]*Location)\n\t// Recognize each thread and populate profile samples.\n\tfor !isMemoryMapSentinel(line) {\n\t\tif strings.HasPrefix(line, \"---- no stack trace for\") {\n\t\t\tbreak\n\t\t}\n\t\tif t := threadStartRE.FindStringSubmatch(line); len(t) != 4 {\n\t\t\treturn nil, errUnrecognized\n\t\t}\n\n\t\tvar addrs []uint64\n\t\tvar err error\n\t\tline, addrs, err = parseThreadSample(s)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif len(addrs) == 0 {\n\t\t\t// We got a --same as previous threads--. Bump counters.\n\t\t\tif len(p.Sample) > 0 {\n\t\t\t\ts := p.Sample[len(p.Sample)-1]\n\t\t\t\ts.Value[0]++\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\tvar sloc []*Location\n\t\tfor i, addr := range addrs {\n\t\t\t// Addresses from stack traces point to the next instruction after\n\t\t\t// each call. Adjust by -1 to land somewhere on the actual call\n\t\t\t// (except for the leaf, which is not a call).\n\t\t\tif i > 0 {\n\t\t\t\taddr--\n\t\t\t}\n\t\t\tloc := locs[addr]\n\t\t\tif locs[addr] == nil {\n\t\t\t\tloc = &Location{\n\t\t\t\t\tAddress: addr,\n\t\t\t\t}\n\t\t\t\tp.Location = append(p.Location, loc)\n\t\t\t\tlocs[addr] = loc\n\t\t\t}\n\t\t\tsloc = append(sloc, loc)\n\t\t}\n\n\t\tp.Sample = append(p.Sample, &Sample{\n\t\t\tValue:    []int64{1},\n\t\t\tLocation: sloc,\n\t\t})\n\t}\n\n\tif err := parseAdditionalSections(s, p); err != nil {\n\t\treturn nil, err\n\t}\n\n\tcleanupDuplicateLocations(p)\n\treturn p, nil\n}\n\n// parseThreadSample parses a symbolized or unsymbolized stack trace.\n// Returns the first line after the traceback, the sample (or nil if\n// it hits a 'same-as-previous' marker) and an error.\nfunc parseThreadSample(s *bufio.Scanner) (nextl string, addrs []uint64, err error) {\n\tvar line string\n\tsameAsPrevious := false\n\tfor s.Scan() {\n\t\tline = strings.TrimSpace(s.Text())\n\t\tif line == \"\" {\n\t\t\tcontinue\n\t\t}\n\n\t\tif strings.HasPrefix(line, \"---\") {\n\t\t\tbreak\n\t\t}\n\t\tif strings.Contains(line, \"same as previous thread\") {\n\t\t\tsameAsPrevious = true\n\t\t\tcontinue\n\t\t}\n\n\t\tcurAddrs, err := parseHexAddresses(line)\n\t\tif err != nil {\n\t\t\treturn \"\", nil, fmt.Errorf(\"malformed sample: %s: %v\", line, err)\n\t\t}\n\t\taddrs = append(addrs, curAddrs...)\n\t}\n\tif err := s.Err(); err != nil {\n\t\treturn \"\", nil, err\n\t}\n\tif sameAsPrevious {\n\t\treturn line, nil, nil\n\t}\n\treturn line, addrs, nil\n}\n\n// parseAdditionalSections parses any additional sections in the\n// profile, ignoring any unrecognized sections.\nfunc parseAdditionalSections(s *bufio.Scanner, p *Profile) error {\n\tfor !isMemoryMapSentinel(s.Text()) && s.Scan() {\n\t}\n\tif err := s.Err(); err != nil {\n\t\treturn err\n\t}\n\treturn p.ParseMemoryMapFromScanner(s)\n}\n\n// ParseProcMaps parses a memory map in the format of /proc/self/maps.\n// ParseMemoryMap should be called after setting on a profile to\n// associate locations to the corresponding mapping based on their\n// address.\nfunc ParseProcMaps(rd io.Reader) ([]*Mapping, error) {\n\ts := bufio.NewScanner(rd)\n\treturn parseProcMapsFromScanner(s)\n}\n\nfunc parseProcMapsFromScanner(s *bufio.Scanner) ([]*Mapping, error) {\n\tvar mapping []*Mapping\n\n\tvar attrs []string\n\tconst delimiter = \"=\"\n\tr := strings.NewReplacer()\n\tfor s.Scan() {\n\t\tline := r.Replace(removeLoggingInfo(s.Text()))\n\t\tm, err := parseMappingEntry(line)\n\t\tif err != nil {\n\t\t\tif err == errUnrecognized {\n\t\t\t\t// Recognize assignments of the form: attr=value, and replace\n\t\t\t\t// $attr with value on subsequent mappings.\n\t\t\t\tif attr := strings.SplitN(line, delimiter, 2); len(attr) == 2 {\n\t\t\t\t\tattrs = append(attrs, \"$\"+strings.TrimSpace(attr[0]), strings.TrimSpace(attr[1]))\n\t\t\t\t\tr = strings.NewReplacer(attrs...)\n\t\t\t\t}\n\t\t\t\t// Ignore any unrecognized entries\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\treturn nil, err\n\t\t}\n\t\tif m == nil {\n\t\t\tcontinue\n\t\t}\n\t\tmapping = append(mapping, m)\n\t}\n\tif err := s.Err(); err != nil {\n\t\treturn nil, err\n\t}\n\treturn mapping, nil\n}\n\n// removeLoggingInfo detects and removes log prefix entries generated\n// by the glog package. If no logging prefix is detected, the string\n// is returned unmodified.\nfunc removeLoggingInfo(line string) string {\n\tif match := logInfoRE.FindStringIndex(line); match != nil {\n\t\treturn line[match[1]:]\n\t}\n\treturn line\n}\n\n// ParseMemoryMap parses a memory map in the format of\n// /proc/self/maps, and overrides the mappings in the current profile.\n// It renumbers the samples and locations in the profile correspondingly.\nfunc (p *Profile) ParseMemoryMap(rd io.Reader) error {\n\treturn p.ParseMemoryMapFromScanner(bufio.NewScanner(rd))\n}\n\n// ParseMemoryMapFromScanner parses a memory map in the format of\n// /proc/self/maps or a variety of legacy format, and overrides the\n// mappings in the current profile.  It renumbers the samples and\n// locations in the profile correspondingly.\nfunc (p *Profile) ParseMemoryMapFromScanner(s *bufio.Scanner) error {\n\tmapping, err := parseProcMapsFromScanner(s)\n\tif err != nil {\n\t\treturn err\n\t}\n\tp.Mapping = append(p.Mapping, mapping...)\n\tp.massageMappings()\n\tp.remapLocationIDs()\n\tp.remapFunctionIDs()\n\tp.remapMappingIDs()\n\treturn nil\n}\n\nfunc parseMappingEntry(l string) (*Mapping, error) {\n\tvar start, end, perm, file, offset, buildID string\n\tif me := procMapsRE.FindStringSubmatch(l); len(me) == 6 {\n\t\tstart, end, perm, offset, file = me[1], me[2], me[3], me[4], me[5]\n\t} else if me := briefMapsRE.FindStringSubmatch(l); len(me) == 7 {\n\t\tstart, end, perm, file, offset, buildID = me[1], me[2], me[3], me[4], me[5], me[6]\n\t} else {\n\t\treturn nil, errUnrecognized\n\t}\n\n\tvar err error\n\tmapping := &Mapping{\n\t\tFile:    file,\n\t\tBuildID: buildID,\n\t}\n\tif perm != \"\" && !strings.Contains(perm, \"x\") {\n\t\t// Skip non-executable entries.\n\t\treturn nil, nil\n\t}\n\tif mapping.Start, err = strconv.ParseUint(start, 16, 64); err != nil {\n\t\treturn nil, errUnrecognized\n\t}\n\tif mapping.Limit, err = strconv.ParseUint(end, 16, 64); err != nil {\n\t\treturn nil, errUnrecognized\n\t}\n\tif offset != \"\" {\n\t\tif mapping.Offset, err = strconv.ParseUint(offset, 16, 64); err != nil {\n\t\t\treturn nil, errUnrecognized\n\t\t}\n\t}\n\treturn mapping, nil\n}\n\nvar memoryMapSentinels = []string{\n\t\"--- Memory map: ---\",\n\t\"MAPPED_LIBRARIES:\",\n}\n\n// isMemoryMapSentinel returns true if the string contains one of the\n// known sentinels for memory map information.\nfunc isMemoryMapSentinel(line string) bool {\n\tfor _, s := range memoryMapSentinels {\n\t\tif strings.Contains(line, s) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc (p *Profile) addLegacyFrameInfo() {\n\tswitch {\n\tcase isProfileType(p, heapzSampleTypes):\n\t\tp.DropFrames, p.KeepFrames = allocRxStr, allocSkipRxStr\n\tcase isProfileType(p, contentionzSampleTypes):\n\t\tp.DropFrames, p.KeepFrames = lockRxStr, \"\"\n\tdefault:\n\t\tp.DropFrames, p.KeepFrames = cpuProfilerRxStr, \"\"\n\t}\n}\n\nvar heapzSampleTypes = [][]string{\n\t{\"allocations\", \"size\"}, // early Go pprof profiles\n\t{\"objects\", \"space\"},\n\t{\"inuse_objects\", \"inuse_space\"},\n\t{\"alloc_objects\", \"alloc_space\"},\n\t{\"alloc_objects\", \"alloc_space\", \"inuse_objects\", \"inuse_space\"}, // Go pprof legacy profiles\n}\nvar contentionzSampleTypes = [][]string{\n\t{\"contentions\", \"delay\"},\n}\n\nfunc isProfileType(p *Profile, types [][]string) bool {\n\tst := p.SampleType\nnextType:\n\tfor _, t := range types {\n\t\tif len(st) != len(t) {\n\t\t\tcontinue\n\t\t}\n\n\t\tfor i := range st {\n\t\t\tif st[i].Type != t[i] {\n\t\t\t\tcontinue nextType\n\t\t\t}\n\t\t}\n\t\treturn true\n\t}\n\treturn false\n}\n\nvar allocRxStr = strings.Join([]string{\n\t// POSIX entry points.\n\t`calloc`,\n\t`cfree`,\n\t`malloc`,\n\t`free`,\n\t`memalign`,\n\t`do_memalign`,\n\t`(__)?posix_memalign`,\n\t`pvalloc`,\n\t`valloc`,\n\t`realloc`,\n\n\t// TC malloc.\n\t`tcmalloc::.*`,\n\t`tc_calloc`,\n\t`tc_cfree`,\n\t`tc_malloc`,\n\t`tc_free`,\n\t`tc_memalign`,\n\t`tc_posix_memalign`,\n\t`tc_pvalloc`,\n\t`tc_valloc`,\n\t`tc_realloc`,\n\t`tc_new`,\n\t`tc_delete`,\n\t`tc_newarray`,\n\t`tc_deletearray`,\n\t`tc_new_nothrow`,\n\t`tc_newarray_nothrow`,\n\n\t// Memory-allocation routines on OS X.\n\t`malloc_zone_malloc`,\n\t`malloc_zone_calloc`,\n\t`malloc_zone_valloc`,\n\t`malloc_zone_realloc`,\n\t`malloc_zone_memalign`,\n\t`malloc_zone_free`,\n\n\t// Go runtime\n\t`runtime\\..*`,\n\n\t// Other misc. memory allocation routines\n\t`BaseArena::.*`,\n\t`(::)?do_malloc_no_errno`,\n\t`(::)?do_malloc_pages`,\n\t`(::)?do_malloc`,\n\t`DoSampledAllocation`,\n\t`MallocedMemBlock::MallocedMemBlock`,\n\t`_M_allocate`,\n\t`__builtin_(vec_)?delete`,\n\t`__builtin_(vec_)?new`,\n\t`__gnu_cxx::new_allocator::allocate`,\n\t`__libc_malloc`,\n\t`__malloc_alloc_template::allocate`,\n\t`allocate`,\n\t`cpp_alloc`,\n\t`operator new(\\[\\])?`,\n\t`simple_alloc::allocate`,\n}, `|`)\n\nvar allocSkipRxStr = strings.Join([]string{\n\t// Preserve Go runtime frames that appear in the middle/bottom of\n\t// the stack.\n\t`runtime\\.panic`,\n\t`runtime\\.reflectcall`,\n\t`runtime\\.call[0-9]*`,\n}, `|`)\n\nvar cpuProfilerRxStr = strings.Join([]string{\n\t`ProfileData::Add`,\n\t`ProfileData::prof_handler`,\n\t`CpuProfiler::prof_handler`,\n\t`__pthread_sighandler`,\n\t`__restore`,\n}, `|`)\n\nvar lockRxStr = strings.Join([]string{\n\t`RecordLockProfileData`,\n\t`(base::)?RecordLockProfileData.*`,\n\t`(base::)?SubmitMutexProfileData.*`,\n\t`(base::)?SubmitSpinLockProfileData.*`,\n\t`(base::Mutex::)?AwaitCommon.*`,\n\t`(base::Mutex::)?Unlock.*`,\n\t`(base::Mutex::)?UnlockSlow.*`,\n\t`(base::Mutex::)?ReaderUnlock.*`,\n\t`(base::MutexLock::)?~MutexLock.*`,\n\t`(Mutex::)?AwaitCommon.*`,\n\t`(Mutex::)?Unlock.*`,\n\t`(Mutex::)?UnlockSlow.*`,\n\t`(Mutex::)?ReaderUnlock.*`,\n\t`(MutexLock::)?~MutexLock.*`,\n\t`(SpinLock::)?Unlock.*`,\n\t`(SpinLock::)?SlowUnlock.*`,\n\t`(SpinLockHolder::)?~SpinLockHolder.*`,\n}, `|`)\n"
  },
  {
    "path": "tests/vendor/github.com/google/pprof/profile/merge.go",
    "content": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage profile\n\nimport (\n\t\"encoding/binary\"\n\t\"fmt\"\n\t\"slices\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n)\n\n// Compact performs garbage collection on a profile to remove any\n// unreferenced fields. This is useful to reduce the size of a profile\n// after samples or locations have been removed.\nfunc (p *Profile) Compact() *Profile {\n\tp, _ = Merge([]*Profile{p})\n\treturn p\n}\n\n// Merge merges all the profiles in profs into a single Profile.\n// Returns a new profile independent of the input profiles. The merged\n// profile is compacted to eliminate unused samples, locations,\n// functions and mappings. Profiles must have identical profile sample\n// and period types or the merge will fail. profile.Period of the\n// resulting profile will be the maximum of all profiles, and\n// profile.TimeNanos will be the earliest nonzero one. Merges are\n// associative with the caveat of the first profile having some\n// specialization in how headers are combined. There may be other\n// subtleties now or in the future regarding associativity.\nfunc Merge(srcs []*Profile) (*Profile, error) {\n\tif len(srcs) == 0 {\n\t\treturn nil, fmt.Errorf(\"no profiles to merge\")\n\t}\n\tp, err := combineHeaders(srcs)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tpm := &profileMerger{\n\t\tp:         p,\n\t\tsamples:   make(map[sampleKey]*Sample, len(srcs[0].Sample)),\n\t\tlocations: make(map[locationKey]*Location, len(srcs[0].Location)),\n\t\tfunctions: make(map[functionKey]*Function, len(srcs[0].Function)),\n\t\tmappings:  make(map[mappingKey]*Mapping, len(srcs[0].Mapping)),\n\t}\n\n\tfor _, src := range srcs {\n\t\t// Clear the profile-specific hash tables\n\t\tpm.locationsByID = makeLocationIDMap(len(src.Location))\n\t\tpm.functionsByID = make(map[uint64]*Function, len(src.Function))\n\t\tpm.mappingsByID = make(map[uint64]mapInfo, len(src.Mapping))\n\n\t\tif len(pm.mappings) == 0 && len(src.Mapping) > 0 {\n\t\t\t// The Mapping list has the property that the first mapping\n\t\t\t// represents the main binary. Take the first Mapping we see,\n\t\t\t// otherwise the operations below will add mappings in an\n\t\t\t// arbitrary order.\n\t\t\tpm.mapMapping(src.Mapping[0])\n\t\t}\n\n\t\tfor _, s := range src.Sample {\n\t\t\tif !isZeroSample(s) {\n\t\t\t\tpm.mapSample(s)\n\t\t\t}\n\t\t}\n\t}\n\n\tif slices.ContainsFunc(p.Sample, isZeroSample) {\n\t\t// If there are any zero samples, re-merge the profile to GC\n\t\t// them.\n\t\treturn Merge([]*Profile{p})\n\t}\n\n\treturn p, nil\n}\n\n// Normalize normalizes the source profile by multiplying each value in profile by the\n// ratio of the sum of the base profile's values of that sample type to the sum of the\n// source profile's value of that sample type.\nfunc (p *Profile) Normalize(pb *Profile) error {\n\n\tif err := p.compatible(pb); err != nil {\n\t\treturn err\n\t}\n\n\tbaseVals := make([]int64, len(p.SampleType))\n\tfor _, s := range pb.Sample {\n\t\tfor i, v := range s.Value {\n\t\t\tbaseVals[i] += v\n\t\t}\n\t}\n\n\tsrcVals := make([]int64, len(p.SampleType))\n\tfor _, s := range p.Sample {\n\t\tfor i, v := range s.Value {\n\t\t\tsrcVals[i] += v\n\t\t}\n\t}\n\n\tnormScale := make([]float64, len(baseVals))\n\tfor i := range baseVals {\n\t\tif srcVals[i] == 0 {\n\t\t\tnormScale[i] = 0.0\n\t\t} else {\n\t\t\tnormScale[i] = float64(baseVals[i]) / float64(srcVals[i])\n\t\t}\n\t}\n\tp.ScaleN(normScale)\n\treturn nil\n}\n\nfunc isZeroSample(s *Sample) bool {\n\tfor _, v := range s.Value {\n\t\tif v != 0 {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\ntype profileMerger struct {\n\tp *Profile\n\n\t// Memoization tables within a profile.\n\tlocationsByID locationIDMap\n\tfunctionsByID map[uint64]*Function\n\tmappingsByID  map[uint64]mapInfo\n\n\t// Memoization tables for profile entities.\n\tsamples   map[sampleKey]*Sample\n\tlocations map[locationKey]*Location\n\tfunctions map[functionKey]*Function\n\tmappings  map[mappingKey]*Mapping\n}\n\ntype mapInfo struct {\n\tm      *Mapping\n\toffset int64\n}\n\nfunc (pm *profileMerger) mapSample(src *Sample) *Sample {\n\t// Check memoization table\n\tk := pm.sampleKey(src)\n\tif ss, ok := pm.samples[k]; ok {\n\t\tfor i, v := range src.Value {\n\t\t\tss.Value[i] += v\n\t\t}\n\t\treturn ss\n\t}\n\n\t// Make new sample.\n\ts := &Sample{\n\t\tLocation: make([]*Location, len(src.Location)),\n\t\tValue:    make([]int64, len(src.Value)),\n\t\tLabel:    make(map[string][]string, len(src.Label)),\n\t\tNumLabel: make(map[string][]int64, len(src.NumLabel)),\n\t\tNumUnit:  make(map[string][]string, len(src.NumLabel)),\n\t}\n\tfor i, l := range src.Location {\n\t\ts.Location[i] = pm.mapLocation(l)\n\t}\n\tfor k, v := range src.Label {\n\t\tvv := make([]string, len(v))\n\t\tcopy(vv, v)\n\t\ts.Label[k] = vv\n\t}\n\tfor k, v := range src.NumLabel {\n\t\tu := src.NumUnit[k]\n\t\tvv := make([]int64, len(v))\n\t\tuu := make([]string, len(u))\n\t\tcopy(vv, v)\n\t\tcopy(uu, u)\n\t\ts.NumLabel[k] = vv\n\t\ts.NumUnit[k] = uu\n\t}\n\tcopy(s.Value, src.Value)\n\tpm.samples[k] = s\n\tpm.p.Sample = append(pm.p.Sample, s)\n\treturn s\n}\n\nfunc (pm *profileMerger) sampleKey(sample *Sample) sampleKey {\n\t// Accumulate contents into a string.\n\tvar buf strings.Builder\n\tbuf.Grow(64) // Heuristic to avoid extra allocs\n\n\t// encode a number\n\tputNumber := func(v uint64) {\n\t\tvar num [binary.MaxVarintLen64]byte\n\t\tn := binary.PutUvarint(num[:], v)\n\t\tbuf.Write(num[:n])\n\t}\n\n\t// encode a string prefixed with its length.\n\tputDelimitedString := func(s string) {\n\t\tputNumber(uint64(len(s)))\n\t\tbuf.WriteString(s)\n\t}\n\n\tfor _, l := range sample.Location {\n\t\t// Get the location in the merged profile, which may have a different ID.\n\t\tif loc := pm.mapLocation(l); loc != nil {\n\t\t\tputNumber(loc.ID)\n\t\t}\n\t}\n\tputNumber(0) // Delimiter\n\n\tfor _, l := range sortedKeys1(sample.Label) {\n\t\tputDelimitedString(l)\n\t\tvalues := sample.Label[l]\n\t\tputNumber(uint64(len(values)))\n\t\tfor _, v := range values {\n\t\t\tputDelimitedString(v)\n\t\t}\n\t}\n\n\tfor _, l := range sortedKeys2(sample.NumLabel) {\n\t\tputDelimitedString(l)\n\t\tvalues := sample.NumLabel[l]\n\t\tputNumber(uint64(len(values)))\n\t\tfor _, v := range values {\n\t\t\tputNumber(uint64(v))\n\t\t}\n\t\tunits := sample.NumUnit[l]\n\t\tputNumber(uint64(len(units)))\n\t\tfor _, v := range units {\n\t\t\tputDelimitedString(v)\n\t\t}\n\t}\n\n\treturn sampleKey(buf.String())\n}\n\ntype sampleKey string\n\n// sortedKeys1 returns the sorted keys found in a string->[]string map.\n//\n// Note: this is currently non-generic since github pprof runs golint,\n// which does not support generics. When that issue is fixed, it can\n// be merged with sortedKeys2 and made into a generic function.\nfunc sortedKeys1(m map[string][]string) []string {\n\tif len(m) == 0 {\n\t\treturn nil\n\t}\n\tkeys := make([]string, 0, len(m))\n\tfor k := range m {\n\t\tkeys = append(keys, k)\n\t}\n\tsort.Strings(keys)\n\treturn keys\n}\n\n// sortedKeys2 returns the sorted keys found in a string->[]int64 map.\n//\n// Note: this is currently non-generic since github pprof runs golint,\n// which does not support generics. When that issue is fixed, it can\n// be merged with sortedKeys1 and made into a generic function.\nfunc sortedKeys2(m map[string][]int64) []string {\n\tif len(m) == 0 {\n\t\treturn nil\n\t}\n\tkeys := make([]string, 0, len(m))\n\tfor k := range m {\n\t\tkeys = append(keys, k)\n\t}\n\tsort.Strings(keys)\n\treturn keys\n}\n\nfunc (pm *profileMerger) mapLocation(src *Location) *Location {\n\tif src == nil {\n\t\treturn nil\n\t}\n\n\tif l := pm.locationsByID.get(src.ID); l != nil {\n\t\treturn l\n\t}\n\n\tmi := pm.mapMapping(src.Mapping)\n\tl := &Location{\n\t\tID:       uint64(len(pm.p.Location) + 1),\n\t\tMapping:  mi.m,\n\t\tAddress:  uint64(int64(src.Address) + mi.offset),\n\t\tLine:     make([]Line, len(src.Line)),\n\t\tIsFolded: src.IsFolded,\n\t}\n\tfor i, ln := range src.Line {\n\t\tl.Line[i] = pm.mapLine(ln)\n\t}\n\t// Check memoization table. Must be done on the remapped location to\n\t// account for the remapped mapping ID.\n\tk := l.key()\n\tif ll, ok := pm.locations[k]; ok {\n\t\tpm.locationsByID.set(src.ID, ll)\n\t\treturn ll\n\t}\n\tpm.locationsByID.set(src.ID, l)\n\tpm.locations[k] = l\n\tpm.p.Location = append(pm.p.Location, l)\n\treturn l\n}\n\n// key generates locationKey to be used as a key for maps.\nfunc (l *Location) key() locationKey {\n\tkey := locationKey{\n\t\taddr:     l.Address,\n\t\tisFolded: l.IsFolded,\n\t}\n\tif l.Mapping != nil {\n\t\t// Normalizes address to handle address space randomization.\n\t\tkey.addr -= l.Mapping.Start\n\t\tkey.mappingID = l.Mapping.ID\n\t}\n\tlines := make([]string, len(l.Line)*3)\n\tfor i, line := range l.Line {\n\t\tif line.Function != nil {\n\t\t\tlines[i*2] = strconv.FormatUint(line.Function.ID, 16)\n\t\t}\n\t\tlines[i*2+1] = strconv.FormatInt(line.Line, 16)\n\t\tlines[i*2+2] = strconv.FormatInt(line.Column, 16)\n\t}\n\tkey.lines = strings.Join(lines, \"|\")\n\treturn key\n}\n\ntype locationKey struct {\n\taddr, mappingID uint64\n\tlines           string\n\tisFolded        bool\n}\n\nfunc (pm *profileMerger) mapMapping(src *Mapping) mapInfo {\n\tif src == nil {\n\t\treturn mapInfo{}\n\t}\n\n\tif mi, ok := pm.mappingsByID[src.ID]; ok {\n\t\treturn mi\n\t}\n\n\t// Check memoization tables.\n\tmk := src.key()\n\tif m, ok := pm.mappings[mk]; ok {\n\t\tmi := mapInfo{m, int64(m.Start) - int64(src.Start)}\n\t\tpm.mappingsByID[src.ID] = mi\n\t\treturn mi\n\t}\n\tm := &Mapping{\n\t\tID:                     uint64(len(pm.p.Mapping) + 1),\n\t\tStart:                  src.Start,\n\t\tLimit:                  src.Limit,\n\t\tOffset:                 src.Offset,\n\t\tFile:                   src.File,\n\t\tKernelRelocationSymbol: src.KernelRelocationSymbol,\n\t\tBuildID:                src.BuildID,\n\t\tHasFunctions:           src.HasFunctions,\n\t\tHasFilenames:           src.HasFilenames,\n\t\tHasLineNumbers:         src.HasLineNumbers,\n\t\tHasInlineFrames:        src.HasInlineFrames,\n\t}\n\tpm.p.Mapping = append(pm.p.Mapping, m)\n\n\t// Update memoization tables.\n\tpm.mappings[mk] = m\n\tmi := mapInfo{m, 0}\n\tpm.mappingsByID[src.ID] = mi\n\treturn mi\n}\n\n// key generates encoded strings of Mapping to be used as a key for\n// maps.\nfunc (m *Mapping) key() mappingKey {\n\t// Normalize addresses to handle address space randomization.\n\t// Round up to next 4K boundary to avoid minor discrepancies.\n\tconst mapsizeRounding = 0x1000\n\n\tsize := m.Limit - m.Start\n\tsize = size + mapsizeRounding - 1\n\tsize = size - (size % mapsizeRounding)\n\tkey := mappingKey{\n\t\tsize:   size,\n\t\toffset: m.Offset,\n\t}\n\n\tswitch {\n\tcase m.BuildID != \"\":\n\t\tkey.buildIDOrFile = m.BuildID\n\tcase m.File != \"\":\n\t\tkey.buildIDOrFile = m.File\n\tdefault:\n\t\t// A mapping containing neither build ID nor file name is a fake mapping. A\n\t\t// key with empty buildIDOrFile is used for fake mappings so that they are\n\t\t// treated as the same mapping during merging.\n\t}\n\treturn key\n}\n\ntype mappingKey struct {\n\tsize, offset  uint64\n\tbuildIDOrFile string\n}\n\nfunc (pm *profileMerger) mapLine(src Line) Line {\n\tln := Line{\n\t\tFunction: pm.mapFunction(src.Function),\n\t\tLine:     src.Line,\n\t\tColumn:   src.Column,\n\t}\n\treturn ln\n}\n\nfunc (pm *profileMerger) mapFunction(src *Function) *Function {\n\tif src == nil {\n\t\treturn nil\n\t}\n\tif f, ok := pm.functionsByID[src.ID]; ok {\n\t\treturn f\n\t}\n\tk := src.key()\n\tif f, ok := pm.functions[k]; ok {\n\t\tpm.functionsByID[src.ID] = f\n\t\treturn f\n\t}\n\tf := &Function{\n\t\tID:         uint64(len(pm.p.Function) + 1),\n\t\tName:       src.Name,\n\t\tSystemName: src.SystemName,\n\t\tFilename:   src.Filename,\n\t\tStartLine:  src.StartLine,\n\t}\n\tpm.functions[k] = f\n\tpm.functionsByID[src.ID] = f\n\tpm.p.Function = append(pm.p.Function, f)\n\treturn f\n}\n\n// key generates a struct to be used as a key for maps.\nfunc (f *Function) key() functionKey {\n\treturn functionKey{\n\t\tf.StartLine,\n\t\tf.Name,\n\t\tf.SystemName,\n\t\tf.Filename,\n\t}\n}\n\ntype functionKey struct {\n\tstartLine                  int64\n\tname, systemName, fileName string\n}\n\n// combineHeaders checks that all profiles can be merged and returns\n// their combined profile.\nfunc combineHeaders(srcs []*Profile) (*Profile, error) {\n\tfor _, s := range srcs[1:] {\n\t\tif err := srcs[0].compatible(s); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\tvar timeNanos, durationNanos, period int64\n\tvar comments []string\n\tseenComments := map[string]bool{}\n\tvar docURL string\n\tvar defaultSampleType string\n\tfor _, s := range srcs {\n\t\tif timeNanos == 0 || s.TimeNanos < timeNanos {\n\t\t\ttimeNanos = s.TimeNanos\n\t\t}\n\t\tdurationNanos += s.DurationNanos\n\t\tif period == 0 || period < s.Period {\n\t\t\tperiod = s.Period\n\t\t}\n\t\tfor _, c := range s.Comments {\n\t\t\tif seen := seenComments[c]; !seen {\n\t\t\t\tcomments = append(comments, c)\n\t\t\t\tseenComments[c] = true\n\t\t\t}\n\t\t}\n\t\tif defaultSampleType == \"\" {\n\t\t\tdefaultSampleType = s.DefaultSampleType\n\t\t}\n\t\tif docURL == \"\" {\n\t\t\tdocURL = s.DocURL\n\t\t}\n\t}\n\n\tp := &Profile{\n\t\tSampleType: make([]*ValueType, len(srcs[0].SampleType)),\n\n\t\tDropFrames: srcs[0].DropFrames,\n\t\tKeepFrames: srcs[0].KeepFrames,\n\n\t\tTimeNanos:     timeNanos,\n\t\tDurationNanos: durationNanos,\n\t\tPeriodType:    srcs[0].PeriodType,\n\t\tPeriod:        period,\n\n\t\tComments:          comments,\n\t\tDefaultSampleType: defaultSampleType,\n\t\tDocURL:            docURL,\n\t}\n\tcopy(p.SampleType, srcs[0].SampleType)\n\treturn p, nil\n}\n\n// compatible determines if two profiles can be compared/merged.\n// returns nil if the profiles are compatible; otherwise an error with\n// details on the incompatibility.\nfunc (p *Profile) compatible(pb *Profile) error {\n\tif !equalValueType(p.PeriodType, pb.PeriodType) {\n\t\treturn fmt.Errorf(\"incompatible period types %v and %v\", p.PeriodType, pb.PeriodType)\n\t}\n\n\tif len(p.SampleType) != len(pb.SampleType) {\n\t\treturn fmt.Errorf(\"incompatible sample types %v and %v\", p.SampleType, pb.SampleType)\n\t}\n\n\tfor i := range p.SampleType {\n\t\tif !equalValueType(p.SampleType[i], pb.SampleType[i]) {\n\t\t\treturn fmt.Errorf(\"incompatible sample types %v and %v\", p.SampleType, pb.SampleType)\n\t\t}\n\t}\n\treturn nil\n}\n\n// equalValueType returns true if the two value types are semantically\n// equal. It ignores the internal fields used during encode/decode.\nfunc equalValueType(st1, st2 *ValueType) bool {\n\treturn st1.Type == st2.Type && st1.Unit == st2.Unit\n}\n\n// locationIDMap is like a map[uint64]*Location, but provides efficiency for\n// ids that are densely numbered, which is often the case.\ntype locationIDMap struct {\n\tdense  []*Location          // indexed by id for id < len(dense)\n\tsparse map[uint64]*Location // indexed by id for id >= len(dense)\n}\n\nfunc makeLocationIDMap(n int) locationIDMap {\n\treturn locationIDMap{\n\t\tdense:  make([]*Location, n),\n\t\tsparse: map[uint64]*Location{},\n\t}\n}\n\nfunc (lm locationIDMap) get(id uint64) *Location {\n\tif id < uint64(len(lm.dense)) {\n\t\treturn lm.dense[int(id)]\n\t}\n\treturn lm.sparse[id]\n}\n\nfunc (lm locationIDMap) set(id uint64, loc *Location) {\n\tif id < uint64(len(lm.dense)) {\n\t\tlm.dense[id] = loc\n\t\treturn\n\t}\n\tlm.sparse[id] = loc\n}\n\n// CompatibilizeSampleTypes makes profiles compatible to be compared/merged. It\n// keeps sample types that appear in all profiles only and drops/reorders the\n// sample types as necessary.\n//\n// In the case of sample types order is not the same for given profiles the\n// order is derived from the first profile.\n//\n// Profiles are modified in-place.\n//\n// It returns an error if the sample type's intersection is empty.\nfunc CompatibilizeSampleTypes(ps []*Profile) error {\n\tsTypes := commonSampleTypes(ps)\n\tif len(sTypes) == 0 {\n\t\treturn fmt.Errorf(\"profiles have empty common sample type list\")\n\t}\n\tfor _, p := range ps {\n\t\tif err := compatibilizeSampleTypes(p, sTypes); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\n// commonSampleTypes returns sample types that appear in all profiles in the\n// order how they ordered in the first profile.\nfunc commonSampleTypes(ps []*Profile) []string {\n\tif len(ps) == 0 {\n\t\treturn nil\n\t}\n\tsTypes := map[string]int{}\n\tfor _, p := range ps {\n\t\tfor _, st := range p.SampleType {\n\t\t\tsTypes[st.Type]++\n\t\t}\n\t}\n\tvar res []string\n\tfor _, st := range ps[0].SampleType {\n\t\tif sTypes[st.Type] == len(ps) {\n\t\t\tres = append(res, st.Type)\n\t\t}\n\t}\n\treturn res\n}\n\n// compatibilizeSampleTypes drops sample types that are not present in sTypes\n// list and reorder them if needed.\n//\n// It sets DefaultSampleType to sType[0] if it is not in sType list.\n//\n// It assumes that all sample types from the sTypes list are present in the\n// given profile otherwise it returns an error.\nfunc compatibilizeSampleTypes(p *Profile, sTypes []string) error {\n\tif len(sTypes) == 0 {\n\t\treturn fmt.Errorf(\"sample type list is empty\")\n\t}\n\tdefaultSampleType := sTypes[0]\n\treMap, needToModify := make([]int, len(sTypes)), false\n\tfor i, st := range sTypes {\n\t\tif st == p.DefaultSampleType {\n\t\t\tdefaultSampleType = p.DefaultSampleType\n\t\t}\n\t\tidx := searchValueType(p.SampleType, st)\n\t\tif idx < 0 {\n\t\t\treturn fmt.Errorf(\"%q sample type is not found in profile\", st)\n\t\t}\n\t\treMap[i] = idx\n\t\tif idx != i {\n\t\t\tneedToModify = true\n\t\t}\n\t}\n\tif !needToModify && len(sTypes) == len(p.SampleType) {\n\t\treturn nil\n\t}\n\tp.DefaultSampleType = defaultSampleType\n\toldSampleTypes := p.SampleType\n\tp.SampleType = make([]*ValueType, len(sTypes))\n\tfor i, idx := range reMap {\n\t\tp.SampleType[i] = oldSampleTypes[idx]\n\t}\n\tvalues := make([]int64, len(sTypes))\n\tfor _, s := range p.Sample {\n\t\tfor i, idx := range reMap {\n\t\t\tvalues[i] = s.Value[idx]\n\t\t}\n\t\ts.Value = s.Value[:len(values)]\n\t\tcopy(s.Value, values)\n\t}\n\treturn nil\n}\n\nfunc searchValueType(vts []*ValueType, s string) int {\n\tfor i, vt := range vts {\n\t\tif vt.Type == s {\n\t\t\treturn i\n\t\t}\n\t}\n\treturn -1\n}\n"
  },
  {
    "path": "tests/vendor/github.com/google/pprof/profile/profile.go",
    "content": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package profile provides a representation of profile.proto and\n// methods to encode/decode profiles in this format.\npackage profile\n\nimport (\n\t\"bytes\"\n\t\"compress/gzip\"\n\t\"fmt\"\n\t\"io\"\n\t\"math\"\n\t\"path/filepath\"\n\t\"regexp\"\n\t\"slices\"\n\t\"sort\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n)\n\n// Profile is an in-memory representation of profile.proto.\ntype Profile struct {\n\tSampleType        []*ValueType\n\tDefaultSampleType string\n\tSample            []*Sample\n\tMapping           []*Mapping\n\tLocation          []*Location\n\tFunction          []*Function\n\tComments          []string\n\tDocURL            string\n\n\tDropFrames string\n\tKeepFrames string\n\n\tTimeNanos     int64\n\tDurationNanos int64\n\tPeriodType    *ValueType\n\tPeriod        int64\n\n\t// The following fields are modified during encoding and copying,\n\t// so are protected by a Mutex.\n\tencodeMu sync.Mutex\n\n\tcommentX           []int64\n\tdocURLX            int64\n\tdropFramesX        int64\n\tkeepFramesX        int64\n\tstringTable        []string\n\tdefaultSampleTypeX int64\n}\n\n// ValueType corresponds to Profile.ValueType\ntype ValueType struct {\n\tType string // cpu, wall, inuse_space, etc\n\tUnit string // seconds, nanoseconds, bytes, etc\n\n\ttypeX int64\n\tunitX int64\n}\n\n// Sample corresponds to Profile.Sample\ntype Sample struct {\n\tLocation []*Location\n\tValue    []int64\n\t// Label is a per-label-key map to values for string labels.\n\t//\n\t// In general, having multiple values for the given label key is strongly\n\t// discouraged - see docs for the sample label field in profile.proto.  The\n\t// main reason this unlikely state is tracked here is to make the\n\t// decoding->encoding roundtrip not lossy. But we expect that the value\n\t// slices present in this map are always of length 1.\n\tLabel map[string][]string\n\t// NumLabel is a per-label-key map to values for numeric labels. See a note\n\t// above on handling multiple values for a label.\n\tNumLabel map[string][]int64\n\t// NumUnit is a per-label-key map to the unit names of corresponding numeric\n\t// label values. The unit info may be missing even if the label is in\n\t// NumLabel, see the docs in profile.proto for details. When the value is\n\t// slice is present and not nil, its length must be equal to the length of\n\t// the corresponding value slice in NumLabel.\n\tNumUnit map[string][]string\n\n\tlocationIDX []uint64\n\tlabelX      []label\n}\n\n// label corresponds to Profile.Label\ntype label struct {\n\tkeyX int64\n\t// Exactly one of the two following values must be set\n\tstrX int64\n\tnumX int64 // Integer value for this label\n\t// can be set if numX has value\n\tunitX int64\n}\n\n// Mapping corresponds to Profile.Mapping\ntype Mapping struct {\n\tID              uint64\n\tStart           uint64\n\tLimit           uint64\n\tOffset          uint64\n\tFile            string\n\tBuildID         string\n\tHasFunctions    bool\n\tHasFilenames    bool\n\tHasLineNumbers  bool\n\tHasInlineFrames bool\n\n\tfileX    int64\n\tbuildIDX int64\n\n\t// Name of the kernel relocation symbol (\"_text\" or \"_stext\"), extracted from File.\n\t// For linux kernel mappings generated by some tools, correct symbolization depends\n\t// on knowing which of the two possible relocation symbols was used for `Start`.\n\t// This is given to us as a suffix in `File` (e.g. \"[kernel.kallsyms]_stext\").\n\t//\n\t// Note, this public field is not persisted in the proto. For the purposes of\n\t// copying / merging / hashing profiles, it is considered subsumed by `File`.\n\tKernelRelocationSymbol string\n}\n\n// Location corresponds to Profile.Location\ntype Location struct {\n\tID       uint64\n\tMapping  *Mapping\n\tAddress  uint64\n\tLine     []Line\n\tIsFolded bool\n\n\tmappingIDX uint64\n}\n\n// Line corresponds to Profile.Line\ntype Line struct {\n\tFunction *Function\n\tLine     int64\n\tColumn   int64\n\n\tfunctionIDX uint64\n}\n\n// Function corresponds to Profile.Function\ntype Function struct {\n\tID         uint64\n\tName       string\n\tSystemName string\n\tFilename   string\n\tStartLine  int64\n\n\tnameX       int64\n\tsystemNameX int64\n\tfilenameX   int64\n}\n\n// Parse parses a profile and checks for its validity. The input\n// may be a gzip-compressed encoded protobuf or one of many legacy\n// profile formats which may be unsupported in the future.\nfunc Parse(r io.Reader) (*Profile, error) {\n\tdata, err := io.ReadAll(r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn ParseData(data)\n}\n\n// ParseData parses a profile from a buffer and checks for its\n// validity.\nfunc ParseData(data []byte) (*Profile, error) {\n\tvar p *Profile\n\tvar err error\n\tif len(data) >= 2 && data[0] == 0x1f && data[1] == 0x8b {\n\t\tgz, err := gzip.NewReader(bytes.NewBuffer(data))\n\t\tif err == nil {\n\t\t\tdata, err = io.ReadAll(gz)\n\t\t}\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"decompressing profile: %v\", err)\n\t\t}\n\t}\n\tif p, err = ParseUncompressed(data); err != nil && err != errNoData && err != errConcatProfile {\n\t\tp, err = parseLegacy(data)\n\t}\n\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"parsing profile: %v\", err)\n\t}\n\n\tif err := p.CheckValid(); err != nil {\n\t\treturn nil, fmt.Errorf(\"malformed profile: %v\", err)\n\t}\n\treturn p, nil\n}\n\nvar errUnrecognized = fmt.Errorf(\"unrecognized profile format\")\nvar errMalformed = fmt.Errorf(\"malformed profile format\")\nvar errNoData = fmt.Errorf(\"empty input file\")\nvar errConcatProfile = fmt.Errorf(\"concatenated profiles detected\")\n\nfunc parseLegacy(data []byte) (*Profile, error) {\n\tparsers := []func([]byte) (*Profile, error){\n\t\tparseCPU,\n\t\tparseHeap,\n\t\tparseGoCount, // goroutine, threadcreate\n\t\tparseThread,\n\t\tparseContention,\n\t\tparseJavaProfile,\n\t}\n\n\tfor _, parser := range parsers {\n\t\tp, err := parser(data)\n\t\tif err == nil {\n\t\t\tp.addLegacyFrameInfo()\n\t\t\treturn p, nil\n\t\t}\n\t\tif err != errUnrecognized {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\treturn nil, errUnrecognized\n}\n\n// ParseUncompressed parses an uncompressed protobuf into a profile.\nfunc ParseUncompressed(data []byte) (*Profile, error) {\n\tif len(data) == 0 {\n\t\treturn nil, errNoData\n\t}\n\tp := &Profile{}\n\tif err := unmarshal(data, p); err != nil {\n\t\treturn nil, err\n\t}\n\n\tif err := p.postDecode(); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn p, nil\n}\n\nvar libRx = regexp.MustCompile(`([.]so$|[.]so[._][0-9]+)`)\n\n// massageMappings applies heuristic-based changes to the profile\n// mappings to account for quirks of some environments.\nfunc (p *Profile) massageMappings() {\n\t// Merge adjacent regions with matching names, checking that the offsets match\n\tif len(p.Mapping) > 1 {\n\t\tmappings := []*Mapping{p.Mapping[0]}\n\t\tfor _, m := range p.Mapping[1:] {\n\t\t\tlm := mappings[len(mappings)-1]\n\t\t\tif adjacent(lm, m) {\n\t\t\t\tlm.Limit = m.Limit\n\t\t\t\tif m.File != \"\" {\n\t\t\t\t\tlm.File = m.File\n\t\t\t\t}\n\t\t\t\tif m.BuildID != \"\" {\n\t\t\t\t\tlm.BuildID = m.BuildID\n\t\t\t\t}\n\t\t\t\tp.updateLocationMapping(m, lm)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tmappings = append(mappings, m)\n\t\t}\n\t\tp.Mapping = mappings\n\t}\n\n\t// Use heuristics to identify main binary and move it to the top of the list of mappings\n\tfor i, m := range p.Mapping {\n\t\tfile := strings.TrimSpace(strings.ReplaceAll(m.File, \"(deleted)\", \"\"))\n\t\tif len(file) == 0 {\n\t\t\tcontinue\n\t\t}\n\t\tif len(libRx.FindStringSubmatch(file)) > 0 {\n\t\t\tcontinue\n\t\t}\n\t\tif file[0] == '[' {\n\t\t\tcontinue\n\t\t}\n\t\t// Swap what we guess is main to position 0.\n\t\tp.Mapping[0], p.Mapping[i] = p.Mapping[i], p.Mapping[0]\n\t\tbreak\n\t}\n\n\t// Keep the mapping IDs neatly sorted\n\tfor i, m := range p.Mapping {\n\t\tm.ID = uint64(i + 1)\n\t}\n}\n\n// adjacent returns whether two mapping entries represent the same\n// mapping that has been split into two. Check that their addresses are adjacent,\n// and if the offsets match, if they are available.\nfunc adjacent(m1, m2 *Mapping) bool {\n\tif m1.File != \"\" && m2.File != \"\" {\n\t\tif m1.File != m2.File {\n\t\t\treturn false\n\t\t}\n\t}\n\tif m1.BuildID != \"\" && m2.BuildID != \"\" {\n\t\tif m1.BuildID != m2.BuildID {\n\t\t\treturn false\n\t\t}\n\t}\n\tif m1.Limit != m2.Start {\n\t\treturn false\n\t}\n\tif m1.Offset != 0 && m2.Offset != 0 {\n\t\toffset := m1.Offset + (m1.Limit - m1.Start)\n\t\tif offset != m2.Offset {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\nfunc (p *Profile) updateLocationMapping(from, to *Mapping) {\n\tfor _, l := range p.Location {\n\t\tif l.Mapping == from {\n\t\t\tl.Mapping = to\n\t\t}\n\t}\n}\n\nfunc serialize(p *Profile) []byte {\n\tp.encodeMu.Lock()\n\tp.preEncode()\n\tb := marshal(p)\n\tp.encodeMu.Unlock()\n\treturn b\n}\n\n// Write writes the profile as a gzip-compressed marshaled protobuf.\nfunc (p *Profile) Write(w io.Writer) error {\n\tzw := gzip.NewWriter(w)\n\tdefer zw.Close()\n\t_, err := zw.Write(serialize(p))\n\treturn err\n}\n\n// WriteUncompressed writes the profile as a marshaled protobuf.\nfunc (p *Profile) WriteUncompressed(w io.Writer) error {\n\t_, err := w.Write(serialize(p))\n\treturn err\n}\n\n// CheckValid tests whether the profile is valid. Checks include, but are\n// not limited to:\n//   - len(Profile.Sample[n].value) == len(Profile.value_unit)\n//   - Sample.id has a corresponding Profile.Location\nfunc (p *Profile) CheckValid() error {\n\t// Check that sample values are consistent\n\tsampleLen := len(p.SampleType)\n\tif sampleLen == 0 && len(p.Sample) != 0 {\n\t\treturn fmt.Errorf(\"missing sample type information\")\n\t}\n\tfor _, s := range p.Sample {\n\t\tif s == nil {\n\t\t\treturn fmt.Errorf(\"profile has nil sample\")\n\t\t}\n\t\tif len(s.Value) != sampleLen {\n\t\t\treturn fmt.Errorf(\"mismatch: sample has %d values vs. %d types\", len(s.Value), len(p.SampleType))\n\t\t}\n\t\tfor _, l := range s.Location {\n\t\t\tif l == nil {\n\t\t\t\treturn fmt.Errorf(\"sample has nil location\")\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check that all mappings/locations/functions are in the tables\n\t// Check that there are no duplicate ids\n\tmappings := make(map[uint64]*Mapping, len(p.Mapping))\n\tfor _, m := range p.Mapping {\n\t\tif m == nil {\n\t\t\treturn fmt.Errorf(\"profile has nil mapping\")\n\t\t}\n\t\tif m.ID == 0 {\n\t\t\treturn fmt.Errorf(\"found mapping with reserved ID=0\")\n\t\t}\n\t\tif mappings[m.ID] != nil {\n\t\t\treturn fmt.Errorf(\"multiple mappings with same id: %d\", m.ID)\n\t\t}\n\t\tmappings[m.ID] = m\n\t}\n\tfunctions := make(map[uint64]*Function, len(p.Function))\n\tfor _, f := range p.Function {\n\t\tif f == nil {\n\t\t\treturn fmt.Errorf(\"profile has nil function\")\n\t\t}\n\t\tif f.ID == 0 {\n\t\t\treturn fmt.Errorf(\"found function with reserved ID=0\")\n\t\t}\n\t\tif functions[f.ID] != nil {\n\t\t\treturn fmt.Errorf(\"multiple functions with same id: %d\", f.ID)\n\t\t}\n\t\tfunctions[f.ID] = f\n\t}\n\tlocations := make(map[uint64]*Location, len(p.Location))\n\tfor _, l := range p.Location {\n\t\tif l == nil {\n\t\t\treturn fmt.Errorf(\"profile has nil location\")\n\t\t}\n\t\tif l.ID == 0 {\n\t\t\treturn fmt.Errorf(\"found location with reserved id=0\")\n\t\t}\n\t\tif locations[l.ID] != nil {\n\t\t\treturn fmt.Errorf(\"multiple locations with same id: %d\", l.ID)\n\t\t}\n\t\tlocations[l.ID] = l\n\t\tif m := l.Mapping; m != nil {\n\t\t\tif m.ID == 0 || mappings[m.ID] != m {\n\t\t\t\treturn fmt.Errorf(\"inconsistent mapping %p: %d\", m, m.ID)\n\t\t\t}\n\t\t}\n\t\tfor _, ln := range l.Line {\n\t\t\tf := ln.Function\n\t\t\tif f == nil {\n\t\t\t\treturn fmt.Errorf(\"location id: %d has a line with nil function\", l.ID)\n\t\t\t}\n\t\t\tif f.ID == 0 || functions[f.ID] != f {\n\t\t\t\treturn fmt.Errorf(\"inconsistent function %p: %d\", f, f.ID)\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\n// Aggregate merges the locations in the profile into equivalence\n// classes preserving the request attributes. It also updates the\n// samples to point to the merged locations.\nfunc (p *Profile) Aggregate(inlineFrame, function, filename, linenumber, columnnumber, address bool) error {\n\tfor _, m := range p.Mapping {\n\t\tm.HasInlineFrames = m.HasInlineFrames && inlineFrame\n\t\tm.HasFunctions = m.HasFunctions && function\n\t\tm.HasFilenames = m.HasFilenames && filename\n\t\tm.HasLineNumbers = m.HasLineNumbers && linenumber\n\t}\n\n\t// Aggregate functions\n\tif !function || !filename {\n\t\tfor _, f := range p.Function {\n\t\t\tif !function {\n\t\t\t\tf.Name = \"\"\n\t\t\t\tf.SystemName = \"\"\n\t\t\t}\n\t\t\tif !filename {\n\t\t\t\tf.Filename = \"\"\n\t\t\t}\n\t\t}\n\t}\n\n\t// Aggregate locations\n\tif !inlineFrame || !address || !linenumber || !columnnumber {\n\t\tfor _, l := range p.Location {\n\t\t\tif !inlineFrame && len(l.Line) > 1 {\n\t\t\t\tl.Line = l.Line[len(l.Line)-1:]\n\t\t\t}\n\t\t\tif !linenumber {\n\t\t\t\tfor i := range l.Line {\n\t\t\t\t\tl.Line[i].Line = 0\n\t\t\t\t\tl.Line[i].Column = 0\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !columnnumber {\n\t\t\t\tfor i := range l.Line {\n\t\t\t\t\tl.Line[i].Column = 0\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !address {\n\t\t\t\tl.Address = 0\n\t\t\t}\n\t\t}\n\t}\n\n\treturn p.CheckValid()\n}\n\n// NumLabelUnits returns a map of numeric label keys to the units\n// associated with those keys and a map of those keys to any units\n// that were encountered but not used.\n// Unit for a given key is the first encountered unit for that key. If multiple\n// units are encountered for values paired with a particular key, then the first\n// unit encountered is used and all other units are returned in sorted order\n// in map of ignored units.\n// If no units are encountered for a particular key, the unit is then inferred\n// based on the key.\nfunc (p *Profile) NumLabelUnits() (map[string]string, map[string][]string) {\n\tnumLabelUnits := map[string]string{}\n\tignoredUnits := map[string]map[string]bool{}\n\tencounteredKeys := map[string]bool{}\n\n\t// Determine units based on numeric tags for each sample.\n\tfor _, s := range p.Sample {\n\t\tfor k := range s.NumLabel {\n\t\t\tencounteredKeys[k] = true\n\t\t\tfor _, unit := range s.NumUnit[k] {\n\t\t\t\tif unit == \"\" {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif wantUnit, ok := numLabelUnits[k]; !ok {\n\t\t\t\t\tnumLabelUnits[k] = unit\n\t\t\t\t} else if wantUnit != unit {\n\t\t\t\t\tif v, ok := ignoredUnits[k]; ok {\n\t\t\t\t\t\tv[unit] = true\n\t\t\t\t\t} else {\n\t\t\t\t\t\tignoredUnits[k] = map[string]bool{unit: true}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Infer units for keys without any units associated with\n\t// numeric tag values.\n\tfor key := range encounteredKeys {\n\t\tunit := numLabelUnits[key]\n\t\tif unit == \"\" {\n\t\t\tswitch key {\n\t\t\tcase \"alignment\", \"request\":\n\t\t\t\tnumLabelUnits[key] = \"bytes\"\n\t\t\tdefault:\n\t\t\t\tnumLabelUnits[key] = key\n\t\t\t}\n\t\t}\n\t}\n\n\t// Copy ignored units into more readable format\n\tunitsIgnored := make(map[string][]string, len(ignoredUnits))\n\tfor key, values := range ignoredUnits {\n\t\tunits := make([]string, len(values))\n\t\ti := 0\n\t\tfor unit := range values {\n\t\t\tunits[i] = unit\n\t\t\ti++\n\t\t}\n\t\tsort.Strings(units)\n\t\tunitsIgnored[key] = units\n\t}\n\n\treturn numLabelUnits, unitsIgnored\n}\n\n// String dumps a text representation of a profile. Intended mainly\n// for debugging purposes.\nfunc (p *Profile) String() string {\n\tss := make([]string, 0, len(p.Comments)+len(p.Sample)+len(p.Mapping)+len(p.Location))\n\tfor _, c := range p.Comments {\n\t\tss = append(ss, \"Comment: \"+c)\n\t}\n\tif url := p.DocURL; url != \"\" {\n\t\tss = append(ss, fmt.Sprintf(\"Doc: %s\", url))\n\t}\n\tif pt := p.PeriodType; pt != nil {\n\t\tss = append(ss, fmt.Sprintf(\"PeriodType: %s %s\", pt.Type, pt.Unit))\n\t}\n\tss = append(ss, fmt.Sprintf(\"Period: %d\", p.Period))\n\tif p.TimeNanos != 0 {\n\t\tss = append(ss, fmt.Sprintf(\"Time: %v\", time.Unix(0, p.TimeNanos)))\n\t}\n\tif p.DurationNanos != 0 {\n\t\tss = append(ss, fmt.Sprintf(\"Duration: %.4v\", time.Duration(p.DurationNanos)))\n\t}\n\n\tss = append(ss, \"Samples:\")\n\tvar sh1 string\n\tfor _, s := range p.SampleType {\n\t\tdflt := \"\"\n\t\tif s.Type == p.DefaultSampleType {\n\t\t\tdflt = \"[dflt]\"\n\t\t}\n\t\tsh1 = sh1 + fmt.Sprintf(\"%s/%s%s \", s.Type, s.Unit, dflt)\n\t}\n\tss = append(ss, strings.TrimSpace(sh1))\n\tfor _, s := range p.Sample {\n\t\tss = append(ss, s.string())\n\t}\n\n\tss = append(ss, \"Locations\")\n\tfor _, l := range p.Location {\n\t\tss = append(ss, l.string())\n\t}\n\n\tss = append(ss, \"Mappings\")\n\tfor _, m := range p.Mapping {\n\t\tss = append(ss, m.string())\n\t}\n\n\treturn strings.Join(ss, \"\\n\") + \"\\n\"\n}\n\n// string dumps a text representation of a mapping. Intended mainly\n// for debugging purposes.\nfunc (m *Mapping) string() string {\n\tbits := \"\"\n\tif m.HasFunctions {\n\t\tbits = bits + \"[FN]\"\n\t}\n\tif m.HasFilenames {\n\t\tbits = bits + \"[FL]\"\n\t}\n\tif m.HasLineNumbers {\n\t\tbits = bits + \"[LN]\"\n\t}\n\tif m.HasInlineFrames {\n\t\tbits = bits + \"[IN]\"\n\t}\n\treturn fmt.Sprintf(\"%d: %#x/%#x/%#x %s %s %s\",\n\t\tm.ID,\n\t\tm.Start, m.Limit, m.Offset,\n\t\tm.File,\n\t\tm.BuildID,\n\t\tbits)\n}\n\n// string dumps a text representation of a location. Intended mainly\n// for debugging purposes.\nfunc (l *Location) string() string {\n\tss := []string{}\n\tlocStr := fmt.Sprintf(\"%6d: %#x \", l.ID, l.Address)\n\tif m := l.Mapping; m != nil {\n\t\tlocStr = locStr + fmt.Sprintf(\"M=%d \", m.ID)\n\t}\n\tif l.IsFolded {\n\t\tlocStr = locStr + \"[F] \"\n\t}\n\tif len(l.Line) == 0 {\n\t\tss = append(ss, locStr)\n\t}\n\tfor li := range l.Line {\n\t\tlnStr := \"??\"\n\t\tif fn := l.Line[li].Function; fn != nil {\n\t\t\tlnStr = fmt.Sprintf(\"%s %s:%d:%d s=%d\",\n\t\t\t\tfn.Name,\n\t\t\t\tfn.Filename,\n\t\t\t\tl.Line[li].Line,\n\t\t\t\tl.Line[li].Column,\n\t\t\t\tfn.StartLine)\n\t\t\tif fn.Name != fn.SystemName {\n\t\t\t\tlnStr = lnStr + \"(\" + fn.SystemName + \")\"\n\t\t\t}\n\t\t}\n\t\tss = append(ss, locStr+lnStr)\n\t\t// Do not print location details past the first line\n\t\tlocStr = \"             \"\n\t}\n\treturn strings.Join(ss, \"\\n\")\n}\n\n// string dumps a text representation of a sample. Intended mainly\n// for debugging purposes.\nfunc (s *Sample) string() string {\n\tss := []string{}\n\tvar sv string\n\tfor _, v := range s.Value {\n\t\tsv = fmt.Sprintf(\"%s %10d\", sv, v)\n\t}\n\tsv = sv + \": \"\n\tfor _, l := range s.Location {\n\t\tsv = sv + fmt.Sprintf(\"%d \", l.ID)\n\t}\n\tss = append(ss, sv)\n\tconst labelHeader = \"                \"\n\tif len(s.Label) > 0 {\n\t\tss = append(ss, labelHeader+labelsToString(s.Label))\n\t}\n\tif len(s.NumLabel) > 0 {\n\t\tss = append(ss, labelHeader+numLabelsToString(s.NumLabel, s.NumUnit))\n\t}\n\treturn strings.Join(ss, \"\\n\")\n}\n\n// labelsToString returns a string representation of a\n// map representing labels.\nfunc labelsToString(labels map[string][]string) string {\n\tls := []string{}\n\tfor k, v := range labels {\n\t\tls = append(ls, fmt.Sprintf(\"%s:%v\", k, v))\n\t}\n\tsort.Strings(ls)\n\treturn strings.Join(ls, \" \")\n}\n\n// numLabelsToString returns a string representation of a map\n// representing numeric labels.\nfunc numLabelsToString(numLabels map[string][]int64, numUnits map[string][]string) string {\n\tls := []string{}\n\tfor k, v := range numLabels {\n\t\tunits := numUnits[k]\n\t\tvar labelString string\n\t\tif len(units) == len(v) {\n\t\t\tvalues := make([]string, len(v))\n\t\t\tfor i, vv := range v {\n\t\t\t\tvalues[i] = fmt.Sprintf(\"%d %s\", vv, units[i])\n\t\t\t}\n\t\t\tlabelString = fmt.Sprintf(\"%s:%v\", k, values)\n\t\t} else {\n\t\t\tlabelString = fmt.Sprintf(\"%s:%v\", k, v)\n\t\t}\n\t\tls = append(ls, labelString)\n\t}\n\tsort.Strings(ls)\n\treturn strings.Join(ls, \" \")\n}\n\n// SetLabel sets the specified key to the specified value for all samples in the\n// profile.\nfunc (p *Profile) SetLabel(key string, value []string) {\n\tfor _, sample := range p.Sample {\n\t\tif sample.Label == nil {\n\t\t\tsample.Label = map[string][]string{key: value}\n\t\t} else {\n\t\t\tsample.Label[key] = value\n\t\t}\n\t}\n}\n\n// RemoveLabel removes all labels associated with the specified key for all\n// samples in the profile.\nfunc (p *Profile) RemoveLabel(key string) {\n\tfor _, sample := range p.Sample {\n\t\tdelete(sample.Label, key)\n\t}\n}\n\n// HasLabel returns true if a sample has a label with indicated key and value.\nfunc (s *Sample) HasLabel(key, value string) bool {\n\treturn slices.Contains(s.Label[key], value)\n}\n\n// SetNumLabel sets the specified key to the specified value for all samples in the\n// profile. \"unit\" is a slice that describes the units that each corresponding member\n// of \"values\" is measured in (e.g. bytes or seconds).  If there is no relevant\n// unit for a given value, that member of \"unit\" should be the empty string.\n// \"unit\" must either have the same length as \"value\", or be nil.\nfunc (p *Profile) SetNumLabel(key string, value []int64, unit []string) {\n\tfor _, sample := range p.Sample {\n\t\tif sample.NumLabel == nil {\n\t\t\tsample.NumLabel = map[string][]int64{key: value}\n\t\t} else {\n\t\t\tsample.NumLabel[key] = value\n\t\t}\n\t\tif sample.NumUnit == nil {\n\t\t\tsample.NumUnit = map[string][]string{key: unit}\n\t\t} else {\n\t\t\tsample.NumUnit[key] = unit\n\t\t}\n\t}\n}\n\n// RemoveNumLabel removes all numerical labels associated with the specified key for all\n// samples in the profile.\nfunc (p *Profile) RemoveNumLabel(key string) {\n\tfor _, sample := range p.Sample {\n\t\tdelete(sample.NumLabel, key)\n\t\tdelete(sample.NumUnit, key)\n\t}\n}\n\n// DiffBaseSample returns true if a sample belongs to the diff base and false\n// otherwise.\nfunc (s *Sample) DiffBaseSample() bool {\n\treturn s.HasLabel(\"pprof::base\", \"true\")\n}\n\n// Scale multiplies all sample values in a profile by a constant and keeps\n// only samples that have at least one non-zero value.\nfunc (p *Profile) Scale(ratio float64) {\n\tif ratio == 1 {\n\t\treturn\n\t}\n\tratios := make([]float64, len(p.SampleType))\n\tfor i := range p.SampleType {\n\t\tratios[i] = ratio\n\t}\n\tp.ScaleN(ratios)\n}\n\n// ScaleN multiplies each sample values in a sample by a different amount\n// and keeps only samples that have at least one non-zero value.\nfunc (p *Profile) ScaleN(ratios []float64) error {\n\tif len(p.SampleType) != len(ratios) {\n\t\treturn fmt.Errorf(\"mismatched scale ratios, got %d, want %d\", len(ratios), len(p.SampleType))\n\t}\n\tallOnes := true\n\tfor _, r := range ratios {\n\t\tif r != 1 {\n\t\t\tallOnes = false\n\t\t\tbreak\n\t\t}\n\t}\n\tif allOnes {\n\t\treturn nil\n\t}\n\tfillIdx := 0\n\tfor _, s := range p.Sample {\n\t\tkeepSample := false\n\t\tfor i, v := range s.Value {\n\t\t\tif ratios[i] != 1 {\n\t\t\t\tval := int64(math.Round(float64(v) * ratios[i]))\n\t\t\t\ts.Value[i] = val\n\t\t\t\tkeepSample = keepSample || val != 0\n\t\t\t}\n\t\t}\n\t\tif keepSample {\n\t\t\tp.Sample[fillIdx] = s\n\t\t\tfillIdx++\n\t\t}\n\t}\n\tp.Sample = p.Sample[:fillIdx]\n\treturn nil\n}\n\n// HasFunctions determines if all locations in this profile have\n// symbolized function information.\nfunc (p *Profile) HasFunctions() bool {\n\tfor _, l := range p.Location {\n\t\tif l.Mapping != nil && !l.Mapping.HasFunctions {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// HasFileLines determines if all locations in this profile have\n// symbolized file and line number information.\nfunc (p *Profile) HasFileLines() bool {\n\tfor _, l := range p.Location {\n\t\tif l.Mapping != nil && (!l.Mapping.HasFilenames || !l.Mapping.HasLineNumbers) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// Unsymbolizable returns true if a mapping points to a binary for which\n// locations can't be symbolized in principle, at least now. Examples are\n// \"[vdso]\", \"[vsyscall]\" and some others, see the code.\nfunc (m *Mapping) Unsymbolizable() bool {\n\tname := filepath.Base(m.File)\n\tswitch {\n\tcase strings.HasPrefix(name, \"[\"):\n\tcase strings.HasPrefix(name, \"linux-vdso\"):\n\tcase strings.HasPrefix(m.File, \"/dev/dri/\"):\n\tcase m.File == \"//anon\":\n\tcase m.File == \"\":\n\tcase strings.HasPrefix(m.File, \"/memfd:\"):\n\tdefault:\n\t\treturn false\n\t}\n\treturn true\n}\n\n// Copy makes a fully independent copy of a profile.\nfunc (p *Profile) Copy() *Profile {\n\tpp := &Profile{}\n\tif err := unmarshal(serialize(p), pp); err != nil {\n\t\tpanic(err)\n\t}\n\tif err := pp.postDecode(); err != nil {\n\t\tpanic(err)\n\t}\n\n\treturn pp\n}\n"
  },
  {
    "path": "tests/vendor/github.com/google/pprof/profile/proto.go",
    "content": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// This file is a simple protocol buffer encoder and decoder.\n// The format is described at\n// https://developers.google.com/protocol-buffers/docs/encoding\n//\n// A protocol message must implement the message interface:\n//   decoder() []decoder\n//   encode(*buffer)\n//\n// The decode method returns a slice indexed by field number that gives the\n// function to decode that field.\n// The encode method encodes its receiver into the given buffer.\n//\n// The two methods are simple enough to be implemented by hand rather than\n// by using a protocol compiler.\n//\n// See profile.go for examples of messages implementing this interface.\n//\n// There is no support for groups, message sets, or \"has\" bits.\n\npackage profile\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"slices\"\n)\n\ntype buffer struct {\n\tfield    int // field tag\n\ttyp      int // proto wire type code for field\n\tu64      uint64\n\tdata     []byte\n\ttmp      [16]byte\n\ttmpLines []Line // temporary storage used while decoding \"repeated Line\".\n}\n\ntype decoder func(*buffer, message) error\n\ntype message interface {\n\tdecoder() []decoder\n\tencode(*buffer)\n}\n\nfunc marshal(m message) []byte {\n\tvar b buffer\n\tm.encode(&b)\n\treturn b.data\n}\n\nfunc encodeVarint(b *buffer, x uint64) {\n\tfor x >= 128 {\n\t\tb.data = append(b.data, byte(x)|0x80)\n\t\tx >>= 7\n\t}\n\tb.data = append(b.data, byte(x))\n}\n\nfunc encodeLength(b *buffer, tag int, len int) {\n\tencodeVarint(b, uint64(tag)<<3|2)\n\tencodeVarint(b, uint64(len))\n}\n\nfunc encodeUint64(b *buffer, tag int, x uint64) {\n\t// append varint to b.data\n\tencodeVarint(b, uint64(tag)<<3)\n\tencodeVarint(b, x)\n}\n\nfunc encodeUint64s(b *buffer, tag int, x []uint64) {\n\tif len(x) > 2 {\n\t\t// Use packed encoding\n\t\tn1 := len(b.data)\n\t\tfor _, u := range x {\n\t\t\tencodeVarint(b, u)\n\t\t}\n\t\tn2 := len(b.data)\n\t\tencodeLength(b, tag, n2-n1)\n\t\tn3 := len(b.data)\n\t\tcopy(b.tmp[:], b.data[n2:n3])\n\t\tcopy(b.data[n1+(n3-n2):], b.data[n1:n2])\n\t\tcopy(b.data[n1:], b.tmp[:n3-n2])\n\t\treturn\n\t}\n\tfor _, u := range x {\n\t\tencodeUint64(b, tag, u)\n\t}\n}\n\nfunc encodeUint64Opt(b *buffer, tag int, x uint64) {\n\tif x == 0 {\n\t\treturn\n\t}\n\tencodeUint64(b, tag, x)\n}\n\nfunc encodeInt64(b *buffer, tag int, x int64) {\n\tu := uint64(x)\n\tencodeUint64(b, tag, u)\n}\n\nfunc encodeInt64s(b *buffer, tag int, x []int64) {\n\tif len(x) > 2 {\n\t\t// Use packed encoding\n\t\tn1 := len(b.data)\n\t\tfor _, u := range x {\n\t\t\tencodeVarint(b, uint64(u))\n\t\t}\n\t\tn2 := len(b.data)\n\t\tencodeLength(b, tag, n2-n1)\n\t\tn3 := len(b.data)\n\t\tcopy(b.tmp[:], b.data[n2:n3])\n\t\tcopy(b.data[n1+(n3-n2):], b.data[n1:n2])\n\t\tcopy(b.data[n1:], b.tmp[:n3-n2])\n\t\treturn\n\t}\n\tfor _, u := range x {\n\t\tencodeInt64(b, tag, u)\n\t}\n}\n\nfunc encodeInt64Opt(b *buffer, tag int, x int64) {\n\tif x == 0 {\n\t\treturn\n\t}\n\tencodeInt64(b, tag, x)\n}\n\nfunc encodeString(b *buffer, tag int, x string) {\n\tencodeLength(b, tag, len(x))\n\tb.data = append(b.data, x...)\n}\n\nfunc encodeStrings(b *buffer, tag int, x []string) {\n\tfor _, s := range x {\n\t\tencodeString(b, tag, s)\n\t}\n}\n\nfunc encodeBool(b *buffer, tag int, x bool) {\n\tif x {\n\t\tencodeUint64(b, tag, 1)\n\t} else {\n\t\tencodeUint64(b, tag, 0)\n\t}\n}\n\nfunc encodeBoolOpt(b *buffer, tag int, x bool) {\n\tif x {\n\t\tencodeBool(b, tag, x)\n\t}\n}\n\nfunc encodeMessage(b *buffer, tag int, m message) {\n\tn1 := len(b.data)\n\tm.encode(b)\n\tn2 := len(b.data)\n\tencodeLength(b, tag, n2-n1)\n\tn3 := len(b.data)\n\tcopy(b.tmp[:], b.data[n2:n3])\n\tcopy(b.data[n1+(n3-n2):], b.data[n1:n2])\n\tcopy(b.data[n1:], b.tmp[:n3-n2])\n}\n\nfunc unmarshal(data []byte, m message) (err error) {\n\tb := buffer{data: data, typ: 2}\n\treturn decodeMessage(&b, m)\n}\n\nfunc le64(p []byte) uint64 {\n\treturn uint64(p[0]) | uint64(p[1])<<8 | uint64(p[2])<<16 | uint64(p[3])<<24 | uint64(p[4])<<32 | uint64(p[5])<<40 | uint64(p[6])<<48 | uint64(p[7])<<56\n}\n\nfunc le32(p []byte) uint32 {\n\treturn uint32(p[0]) | uint32(p[1])<<8 | uint32(p[2])<<16 | uint32(p[3])<<24\n}\n\nfunc peekNumVarints(data []byte) (numVarints int) {\n\tfor ; len(data) > 0; numVarints++ {\n\t\tvar err error\n\t\tif _, data, err = decodeVarint(data); err != nil {\n\t\t\tbreak\n\t\t}\n\t}\n\treturn numVarints\n}\n\nfunc decodeVarint(data []byte) (uint64, []byte, error) {\n\tvar u uint64\n\tfor i := 0; ; i++ {\n\t\tif i >= 10 || i >= len(data) {\n\t\t\treturn 0, nil, errors.New(\"bad varint\")\n\t\t}\n\t\tu |= uint64(data[i]&0x7F) << uint(7*i)\n\t\tif data[i]&0x80 == 0 {\n\t\t\treturn u, data[i+1:], nil\n\t\t}\n\t}\n}\n\nfunc decodeField(b *buffer, data []byte) ([]byte, error) {\n\tx, data, err := decodeVarint(data)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tb.field = int(x >> 3)\n\tb.typ = int(x & 7)\n\tb.data = nil\n\tb.u64 = 0\n\tswitch b.typ {\n\tcase 0:\n\t\tb.u64, data, err = decodeVarint(data)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\tcase 1:\n\t\tif len(data) < 8 {\n\t\t\treturn nil, errors.New(\"not enough data\")\n\t\t}\n\t\tb.u64 = le64(data[:8])\n\t\tdata = data[8:]\n\tcase 2:\n\t\tvar n uint64\n\t\tn, data, err = decodeVarint(data)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif n > uint64(len(data)) {\n\t\t\treturn nil, errors.New(\"too much data\")\n\t\t}\n\t\tb.data = data[:n]\n\t\tdata = data[n:]\n\tcase 5:\n\t\tif len(data) < 4 {\n\t\t\treturn nil, errors.New(\"not enough data\")\n\t\t}\n\t\tb.u64 = uint64(le32(data[:4]))\n\t\tdata = data[4:]\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"unknown wire type: %d\", b.typ)\n\t}\n\n\treturn data, nil\n}\n\nfunc checkType(b *buffer, typ int) error {\n\tif b.typ != typ {\n\t\treturn errors.New(\"type mismatch\")\n\t}\n\treturn nil\n}\n\nfunc decodeMessage(b *buffer, m message) error {\n\tif err := checkType(b, 2); err != nil {\n\t\treturn err\n\t}\n\tdec := m.decoder()\n\tdata := b.data\n\tfor len(data) > 0 {\n\t\t// pull varint field# + type\n\t\tvar err error\n\t\tdata, err = decodeField(b, data)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif b.field >= len(dec) || dec[b.field] == nil {\n\t\t\tcontinue\n\t\t}\n\t\tif err := dec[b.field](b, m); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc decodeInt64(b *buffer, x *int64) error {\n\tif err := checkType(b, 0); err != nil {\n\t\treturn err\n\t}\n\t*x = int64(b.u64)\n\treturn nil\n}\n\nfunc decodeInt64s(b *buffer, x *[]int64) error {\n\tif b.typ == 2 {\n\t\t// Packed encoding\n\t\tdataLen := peekNumVarints(b.data)\n\t\t*x = slices.Grow(*x, dataLen)\n\n\t\tdata := b.data\n\t\tfor len(data) > 0 {\n\t\t\tvar u uint64\n\t\t\tvar err error\n\n\t\t\tif u, data, err = decodeVarint(data); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\t*x = append(*x, int64(u))\n\t\t}\n\t\treturn nil\n\t}\n\tvar i int64\n\tif err := decodeInt64(b, &i); err != nil {\n\t\treturn err\n\t}\n\t*x = append(*x, i)\n\treturn nil\n}\n\nfunc decodeUint64(b *buffer, x *uint64) error {\n\tif err := checkType(b, 0); err != nil {\n\t\treturn err\n\t}\n\t*x = b.u64\n\treturn nil\n}\n\nfunc decodeUint64s(b *buffer, x *[]uint64) error {\n\tif b.typ == 2 {\n\t\t// Packed encoding\n\t\tdataLen := peekNumVarints(b.data)\n\t\t*x = slices.Grow(*x, dataLen)\n\n\t\tdata := b.data\n\t\tfor len(data) > 0 {\n\t\t\tvar u uint64\n\t\t\tvar err error\n\n\t\t\tif u, data, err = decodeVarint(data); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\t*x = append(*x, u)\n\t\t}\n\t\treturn nil\n\t}\n\tvar u uint64\n\tif err := decodeUint64(b, &u); err != nil {\n\t\treturn err\n\t}\n\t*x = append(*x, u)\n\treturn nil\n}\n\nfunc decodeString(b *buffer, x *string) error {\n\tif err := checkType(b, 2); err != nil {\n\t\treturn err\n\t}\n\t*x = string(b.data)\n\treturn nil\n}\n\nfunc decodeStrings(b *buffer, x *[]string) error {\n\tvar s string\n\tif err := decodeString(b, &s); err != nil {\n\t\treturn err\n\t}\n\t*x = append(*x, s)\n\treturn nil\n}\n\nfunc decodeBool(b *buffer, x *bool) error {\n\tif err := checkType(b, 0); err != nil {\n\t\treturn err\n\t}\n\tif int64(b.u64) == 0 {\n\t\t*x = false\n\t} else {\n\t\t*x = true\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "tests/vendor/github.com/google/pprof/profile/prune.go",
    "content": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Implements methods to remove frames from profiles.\n\npackage profile\n\nimport (\n\t\"fmt\"\n\t\"regexp\"\n\t\"slices\"\n\t\"strings\"\n)\n\nvar (\n\treservedNames = []string{\"(anonymous namespace)\", \"operator()\"}\n\tbracketRx     = func() *regexp.Regexp {\n\t\tvar quotedNames []string\n\t\tfor _, name := range append(reservedNames, \"(\") {\n\t\t\tquotedNames = append(quotedNames, regexp.QuoteMeta(name))\n\t\t}\n\t\treturn regexp.MustCompile(strings.Join(quotedNames, \"|\"))\n\t}()\n)\n\n// simplifyFunc does some primitive simplification of function names.\nfunc simplifyFunc(f string) string {\n\t// Account for leading '.' on the PPC ELF v1 ABI.\n\tfuncName := strings.TrimPrefix(f, \".\")\n\t// Account for unsimplified names -- try  to remove the argument list by trimming\n\t// starting from the first '(', but skipping reserved names that have '('.\n\tfor _, ind := range bracketRx.FindAllStringSubmatchIndex(funcName, -1) {\n\t\tfoundReserved := slices.Contains(reservedNames, funcName[ind[0]:ind[1]])\n\t\tif !foundReserved {\n\t\t\tfuncName = funcName[:ind[0]]\n\t\t\tbreak\n\t\t}\n\t}\n\treturn funcName\n}\n\n// Prune removes all nodes beneath a node matching dropRx, and not\n// matching keepRx. If the root node of a Sample matches, the sample\n// will have an empty stack.\nfunc (p *Profile) Prune(dropRx, keepRx *regexp.Regexp) {\n\tprune := make(map[uint64]bool)\n\tpruneBeneath := make(map[uint64]bool)\n\n\t// simplifyFunc can be expensive, so cache results.\n\t// Note that the same function name can be encountered many times due\n\t// different lines and addresses in the same function.\n\tpruneCache := map[string]bool{} // Map from function to whether or not to prune\n\tpruneFromHere := func(s string) bool {\n\t\tif r, ok := pruneCache[s]; ok {\n\t\t\treturn r\n\t\t}\n\t\tfuncName := simplifyFunc(s)\n\t\tif dropRx.MatchString(funcName) {\n\t\t\tif keepRx == nil || !keepRx.MatchString(funcName) {\n\t\t\t\tpruneCache[s] = true\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\tpruneCache[s] = false\n\t\treturn false\n\t}\n\n\tfor _, loc := range p.Location {\n\t\tvar i int\n\t\tfor i = len(loc.Line) - 1; i >= 0; i-- {\n\t\t\tif fn := loc.Line[i].Function; fn != nil && fn.Name != \"\" {\n\t\t\t\tif pruneFromHere(fn.Name) {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif i >= 0 {\n\t\t\t// Found matching entry to prune.\n\t\t\tpruneBeneath[loc.ID] = true\n\n\t\t\t// Remove the matching location.\n\t\t\tif i == len(loc.Line)-1 {\n\t\t\t\t// Matched the top entry: prune the whole location.\n\t\t\t\tprune[loc.ID] = true\n\t\t\t} else {\n\t\t\t\tloc.Line = loc.Line[i+1:]\n\t\t\t}\n\t\t}\n\t}\n\n\t// Prune locs from each Sample\n\tfor _, sample := range p.Sample {\n\t\t// Scan from the root to the leaves to find the prune location.\n\t\t// Do not prune frames before the first user frame, to avoid\n\t\t// pruning everything.\n\t\tfoundUser := false\n\t\tfor i := len(sample.Location) - 1; i >= 0; i-- {\n\t\t\tid := sample.Location[i].ID\n\t\t\tif !prune[id] && !pruneBeneath[id] {\n\t\t\t\tfoundUser = true\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif !foundUser {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif prune[id] {\n\t\t\t\tsample.Location = sample.Location[i+1:]\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tif pruneBeneath[id] {\n\t\t\t\tsample.Location = sample.Location[i:]\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n}\n\n// RemoveUninteresting prunes and elides profiles using built-in\n// tables of uninteresting function names.\nfunc (p *Profile) RemoveUninteresting() error {\n\tvar keep, drop *regexp.Regexp\n\tvar err error\n\n\tif p.DropFrames != \"\" {\n\t\tif drop, err = regexp.Compile(\"^(\" + p.DropFrames + \")$\"); err != nil {\n\t\t\treturn fmt.Errorf(\"failed to compile regexp %s: %v\", p.DropFrames, err)\n\t\t}\n\t\tif p.KeepFrames != \"\" {\n\t\t\tif keep, err = regexp.Compile(\"^(\" + p.KeepFrames + \")$\"); err != nil {\n\t\t\t\treturn fmt.Errorf(\"failed to compile regexp %s: %v\", p.KeepFrames, err)\n\t\t\t}\n\t\t}\n\t\tp.Prune(drop, keep)\n\t}\n\treturn nil\n}\n\n// PruneFrom removes all nodes beneath the lowest node matching dropRx, not including itself.\n//\n// Please see the example below to understand this method as well as\n// the difference from Prune method.\n//\n// A sample contains Location of [A,B,C,B,D] where D is the top frame and there's no inline.\n//\n// PruneFrom(A) returns [A,B,C,B,D] because there's no node beneath A.\n// Prune(A, nil) returns [B,C,B,D] by removing A itself.\n//\n// PruneFrom(B) returns [B,C,B,D] by removing all nodes beneath the first B when scanning from the bottom.\n// Prune(B, nil) returns [D] because a matching node is found by scanning from the root.\nfunc (p *Profile) PruneFrom(dropRx *regexp.Regexp) {\n\tpruneBeneath := make(map[uint64]bool)\n\n\tfor _, loc := range p.Location {\n\t\tfor i := 0; i < len(loc.Line); i++ {\n\t\t\tif fn := loc.Line[i].Function; fn != nil && fn.Name != \"\" {\n\t\t\t\tfuncName := simplifyFunc(fn.Name)\n\t\t\t\tif dropRx.MatchString(funcName) {\n\t\t\t\t\t// Found matching entry to prune.\n\t\t\t\t\tpruneBeneath[loc.ID] = true\n\t\t\t\t\tloc.Line = loc.Line[i:]\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Prune locs from each Sample\n\tfor _, sample := range p.Sample {\n\t\t// Scan from the bottom leaf to the root to find the prune location.\n\t\tfor i, loc := range sample.Location {\n\t\t\tif pruneBeneath[loc.ID] {\n\t\t\t\tsample.Location = sample.Location[i:]\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/.gitignore",
    "content": ".DS_Store\nTODO\ntmp/**/*\n*.coverprofile\n.vscode\n.idea/\n*.log\n*.test"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/CHANGELOG.md",
    "content": "## 2.28.1\n\nUpdate all dependencies.  This auto-updated the required version of Go to 1.24, consistent with the fact that Go 1.23 has been out of support for almost six months.\n\n## 2.28.0\n\nGinkgo's SemVer filter now supports filtering multiple components by SemVer version:\n\n```go\nIt(\"should work in a specific version range (1.0.0, 2.0.0) and third-party dependency redis in [8.0.0, ~)\", SemVerConstraint(\">= 3.2.0\"), ComponentSemVerConstraint(\"redis\", \">= 8.0.0\") func() {\n    // This test will only run when version is between 1.0.0 (exclusive) and 2.0.0 (exclusive) and redis version is >= 8.0.0\n})\n```\n\ncan be filtered in or out with an invocation like:\n\n```bash\nginkgo --sem-ver-filter=\"2.1.1, redis=8.2.0\"\n```\n\nHuge thanks to @Icarus9913 for working on this!\n\n## 2.27.5\n\n### Fixes\nDon't make a new formatter for each GinkgoT(); that's just silly and uses precious memory\n\n## 2.27.4\n\n### Fixes\n- CurrentTreeConstructionNodeReport: fix for nested container nodes [59bc751]\n\n## 2.27.3\n\n### Fixes\nreport exit result in case of failure [1c9f356]\nfix data race [ece19c8]\n\n## 2.27.2\n\n### Fixes\n- inline automaxprocs to simplify dependencies; this will be removed when Go 1.26 comes out [a69113a]\n\n### Maintenance\n- Fix syntax errors and typo [a99c6e0]\n- Fix paragraph position error [f993df5]\n\n## 2.27.1\n\n### Fixes\n- Fix Ginkgo Reporter slice-bounds panic [606c1cb]\n- Bug Fix: Add GinkoTBWrapper.Attr() and GinkoTBWrapper.Output() [a6463b3]\n\n## 2.27.0\n\n### Features\n\n#### Transforming Nodes during Tree Construction\n\nThis release adds support for `NodeArgsTransformer`s that can be registered with `AddTreeConstructionNodeArgsTransformer`.\n\nThese are called during the tree construction phase as nodes are constructed and can modify the node strings and decorators.  This enables frameworks built on top of Ginkgo to modify Ginkgo nodes and enforce conventions.\n\nLearn more [here](https://onsi.github.io/ginkgo/#advanced-transforming-node-arguments-during-tree-construction).\n\n#### Spec Prioritization\n\nA new `SpecPriority(int)` decorator has been added.  Ginkgo will honor priority when ordering specs, ensuring that higher priority specs start running before lower priority specs\n\nLearn more [here](https://onsi.github.io/ginkgo/#prioritizing-specs).\n\n### Maintenance\n- Bump rexml from 3.4.0 to 3.4.2 in /docs (#1595) [1333dae]\n- Bump github.com/gkampitakis/go-snaps from 0.5.14 to 0.5.15 (#1600) [17ae63e]\n\n## 2.26.0\n\n### Features\n\nGinkgo can now generate json-formatted reports that are compatible with the `go test` json format.  Use `ginkgo --gojson-report=report.go.json`.  This is not intended to be a replacement for Ginkgo's native json format which is more information rich and better models Ginkgo's test structure semantics.\n\n## 2.25.3\n\n### Fixes\n\n- emit --github-output group only for progress report itself [f01aed1]\n\n## 2.25.2\n\n### Fixes\nAdd github output group for progress report content\n\n### Maintenance\nBump Gomega\n\n## 2.25.1\n\n### Fixes\n- fix(types): ignore nameless nodes on FullText() [10866d3]\n- chore: fix some CodeQL warnings [2e42cff]\n\n## 2.25.0\n\n### `AroundNode`\n\nThis release introduces a new decorator to support more complex spec setup usecases.\n\n`AroundNode` registers a function that runs before each individual node.  This is considered a more advanced decorator.\n\nPlease read the [docs](https://onsi.github.io/ginkgo/#advanced-around-node) for more information and some examples.\n\nAllowed signatures:\n\n- `AroundNode(func())` - `func` will be called before the node is run.\n- `AroundNode(func(ctx context.Context) context.Context)` - `func` can wrap the passed in context and return a new one which will be passed on to the node.\n- `AroundNode(func(ctx context.Context, body func(ctx context.Context)))` - `ctx` is the context for the node and `body` is a function that must be called to run the node.  This gives you complete control over what runs before and after the node.\n\nMultiple `AroundNode` decorators can be applied to a single node and they will run in the order they are applied.\n\nUnlike setup nodes like `BeforeEach` and `DeferCleanup`, `AroundNode` is guaranteed to run in the same goroutine as the decorated node.  This is necessary when working with lower-level libraries that must run on a single thread (you can call `runtime.LockOSThread()` in the `AroundNode` to ensure that the node runs on a single thread).\n\nSince `AroundNode` allows you to modify the context you can also use `AroundNode` to implement shared setup that attaches values to the context.\n\nIf applied to a container, `AroundNode` will run before every node in the container.  Including setup nodes like `BeforeEach` and `DeferCleanup`.\n\n`AroundNode` can also be applied to `RunSpecs` to run before every node in the suite.  This opens up new mechanisms for instrumenting individual nodes across an entire suite.\n\n## 2.24.0\n\n### Features\n\nSpecs can now be decorated with (e.g.) `SemVerConstraint(\"2.1.0\")` and `ginkgo --sem-ver-filter=\"2.1.1\"` will only run constrained specs that match the requested version.  Learn more in the docs [here](https://onsi.github.io/ginkgo/#spec-semantic-version-filtering)!  Thanks to @Icarus9913 for the PR.\n\n### Fixes\n\n- remove -o from run command [3f5d379].  fixes [#1582](https://github.com/onsi/ginkgo/issues/1582)\n\n### Maintenance\n\nNumerous dependency bumps and documentation fixes\n\n## 2.23.4\n\nPrior to this release Ginkgo would compute the incorrect number of available CPUs when running with `-p` in a linux container.  Thanks to @emirot for the fix!\n\n### Features\n- Add automaxprocs for using CPUQuota [2b9c428]\n\n### Fixes\n- clarify gotchas about -vet flag [1f59d07]\n\n### Maintenance\n- bump dependencies [2d134d5]\n\n## 2.23.3\n\n### Fixes\n\n- allow `-` as a standalone argument [cfcc1a5]\n- Bug Fix: Add GinkoTBWrapper.Chdir() and GinkoTBWrapper.Context() [feaf292]\n- ignore exit code for symbol test on linux [88e2282]\n\n## 2.23.2\n\n🎉🎉🎉\n\nAt long last, some long-standing performance gaps between `ginkgo` and `go test` have been resolved!\n\nGinkgo operates by running `go test -c` to generate test binaries, and then running those binaries.  It turns out that the compilation step of `go test -c` is slower than `go test`'s compilation step because `go test` strips out debug symbols (`ldflags=-w`) whereas `go test -c` does not.\n\nGinkgo now passes the appropriate `ldflags` to `go test -c` when running specs to strip out symbols.  This is only done when it is safe to do so and symbols are preferred when profiling is enabled and when `ginkgo build` is called explicitly.\n\nThis, coupled, with the [instructions for disabling XProtect on MacOS](https://onsi.github.io/ginkgo/#if-you-are-running-on-macos) yields a much better performance experience with Ginkgo.\n\n## 2.23.1\n\n## 🚨 For users on MacOS 🚨\n\nA long-standing Ginkgo performance issue on MacOS seems to be due to mac's antimalware XProtect.  You can follow the instructions [here](https://onsi.github.io/ginkgo/#if-you-are-running-on-macos) to disable it in your terminal.  Doing so sped up Ginkgo's own test suite from 1m8s to 47s.\n\n### Fixes\n\nGinkgo's CLI is now a bit clearer if you pass flags in incorrectly:\n\n- make it clearer that you need to pass a filename to the various profile flags, not an absolute directory [a0e52ff]\n- emit an error and exit if the ginkgo invocation includes flags after positional arguments [b799d8d]\n\nThis might cause existing CI builds to fail.  If so then it's likely that your CI build was misconfigured and should be corrected.  Open an issue if you need help.\n\n## 2.23.0\n\nGinkgo 2.23.0 adds a handful of methods to `GinkgoT()` to make it compatible with the `testing.TB` interface in Go 1.24.  `GinkgoT().Context()`, in particular, is a useful shorthand for generating a new context that will clean itself up in a `DeferCleanup()`.  This has subtle behavior differences from the golang implementation but should make sense in a Ginkgo... um... context.\n\n### Features\n- bump to go 1.24.0 - support new testing.TB methods and add a test to cover testing.TB regressions [37a511b]\n\n### Fixes\n- fix edge case where build -o is pointing at an explicit file, not a directory [7556a86]\n- Fix binary paths when precompiling multiple suites. [4df06c6]\n\n### Maintenance\n- Fix: Correct Markdown list rendering in MIGRATING_TO_V2.md [cbcf39a]\n- docs: fix test workflow badge (#1512) [9b261ff]\n- Bump golang.org/x/net in /integration/_fixtures/version_mismatch_fixture (#1516) [00f19c8]\n- Bump golang.org/x/tools from 0.28.0 to 0.30.0 (#1515) [e98a4df]\n- Bump activesupport from 6.0.6.1 to 6.1.7.5 in /docs (#1504) [60cc4e2]\n- Bump github-pages from 231 to 232 in /docs (#1447) [fea6f2d]\n- Bump rexml from 3.2.8 to 3.3.9 in /docs (#1497) [31d7813]\n- Bump webrick from 1.8.1 to 1.9.1 in /docs (#1501) [fc3bbd6]\n- Code linting (#1500) [aee0d56]\n- change interface{} to any (#1502) [809a710]\n\n## 2.22.2\n\n### Maintenance\n- Bump github.com/onsi/gomega from 1.36.1 to 1.36.2 (#1499) [cc553ce]\n- Bump golang.org/x/crypto (#1498) [2170370]\n- Bump golang.org/x/net from 0.32.0 to 0.33.0 (#1496) [a96c44f]\n\n## 2.22.1\n\n### Fixes\nFix CSV encoding\n- Update tests [aab3da6]\n- Properly encode CSV rows [c09df39]\n- Add test case for proper csv escaping [96a80fc]\n- Add meta-test [43dad69]\n\n### Maintenance\n- ensure *.test files are gitignored so we don't accidentally commit compiled tests again [c88c634]\n- remove golang.org/x/net/context in favour of stdlib context [4df44bf]\n\n## 2.22.0\n\n### Features\n- Add label to serial nodes [0fcaa08]\n\nThis allows serial tests to be filtered using the `label-filter`\n\n### Maintenance\nVarious doc fixes\n\n## 2.21.0\n\n\n  ### Features\n  - add support for GINKGO_TIME_FORMAT [a69eb39]\n  - add GINKGO_NO_COLOR to disable colors via environment variables [bcab9c8]\n\n  ### Fixes\n  - increase threshold in timeline matcher [e548367]\n  - Fix the document by replacing `SpecsThatWillBeRun` with `SpecsThatWillRun`\n  [c2c4d3c]\n\n  ### Maintenance\n  - bump various dependencies [7e65a00]\n\n## 2.20.2\n\nRequire Go 1.22+\n\n### Maintenance\n- bump go to v1.22 [a671816]\n\n## 2.20.1\n\n### Fixes\n- make BeSpecEvent duration matcher more forgiving [d6f9640]\n\n## 2.20.0\n\n### Features\n- Add buildvcs flag [be5ab95]\n\n### Maintenance\n- Add update-deps to makefile [d303d14]\n- bump all dependencies [7a50221]\n\n## 2.19.1\n\n### Fixes\n- update supported platforms for race conditions [63c8c30]\n- [build] Allow custom name for binaries. [ff41e27]\n\n### Maintenance\n- bump gomega [76f4e0c]\n- Bump rexml from 3.2.6 to 3.2.8 in /docs (#1417) [b69c00d]\n- Bump golang.org/x/sys from 0.20.0 to 0.21.0 (#1425) [f097741]\n\n## 2.19.0\n\n### Features\n\n[Label Sets](https://onsi.github.io/ginkgo/#label-sets) allow for more expressive and flexible label filtering.\n\n## 2.18.0\n\n### Features\n- Add --slience-skips and --force-newlines [f010b65]\n- fail when no tests were run and --fail-on-empty was set [d80eebe]\n\n### Fixes\n- Fix table entry context edge case [42013d6]\n\n### Maintenance\n- Bump golang.org/x/tools from 0.20.0 to 0.21.0 (#1406) [fcf1fd7]\n- Bump github.com/onsi/gomega from 1.33.0 to 1.33.1 (#1399) [8bb14fd]\n- Bump golang.org/x/net from 0.24.0 to 0.25.0 (#1407) [04bfad7]\n\n## 2.17.3\n\n### Fixes\n`ginkgo watch` now ignores hidden files [bde6e00]\n\n## 2.17.2\n\n### Fixes\n- fix: close files [32259c8]\n- fix github output log level for skipped specs [780e7a3]\n\n### Maintenance\n- Bump github.com/google/pprof [d91fe4e]\n- Bump github.com/go-task/slim-sprig to v3 [8cb662e]\n- Bump golang.org/x/net in /integration/_fixtures/version_mismatch_fixture (#1391) [3134422]\n- Bump github-pages from 230 to 231 in /docs (#1384) [eca81b4]\n- Bump golang.org/x/tools from 0.19.0 to 0.20.0 (#1383) [760def8]\n- Bump golang.org/x/net from 0.23.0 to 0.24.0 (#1381) [4ce33f4]\n- Fix test for gomega version bump [f2fcd97]\n- Bump github.com/onsi/gomega from 1.30.0 to 1.33.0 (#1390) [fd622d2]\n- Bump golang.org/x/tools from 0.17.0 to 0.19.0 (#1368) [5474a26]\n- Bump github-pages from 229 to 230 in /docs (#1359) [e6d1170]\n- Bump google.golang.org/protobuf from 1.28.0 to 1.33.0 (#1374) [7f447b2]\n- Bump golang.org/x/net from 0.20.0 to 0.23.0 (#1380) [f15239a]\n\n## 2.17.1\n\n### Fixes\n- If the user sets --seed=0, make sure all parallel nodes get the same seed [af0330d]\n\n## 2.17.0\n\n### Features\n\n- add `--github-output` for nicer output in github actions [e8a2056]\n\n### Maintenance\n\n- fix typo in core_dsl.go [977bc6f]\n- Fix typo in docs [e297e7b]\n\n## 2.16.0\n\n### Features\n- add SpecContext to reporting nodes\n\n### Fixes\n- merge coverages instead of combining them (#1329) (#1340) [23f0cc5]\n- core_dsl: disable Getwd() with environment variable (#1357) [cd418b7]\n\n### Maintenance\n- docs/index.md: Typo [2cebe8d]\n- fix docs [06de431]\n- chore: test with Go 1.22 (#1352) [898cba9]\n- Bump golang.org/x/tools from 0.16.1 to 0.17.0 (#1336) [17ae120]\n- Bump golang.org/x/sys from 0.15.0 to 0.16.0 (#1327) [5a179ed]\n- Bump github.com/go-logr/logr from 1.3.0 to 1.4.1 (#1321) [a1e6b69]\n- Bump github-pages and jekyll-feed in /docs (#1351) [d52951d]\n- Fix docs for handling failures in goroutines (#1339) [4471b2e]\n\n## 2.15.0\n\n### Features\n\n- JUnit reports now interpret Label(owner:X) and set owner to X. [8f3bd70]\n- include cancellation reason when cancelling spec context [96e915c]\n\n### Fixes\n\n- emit output of failed go tool cover invocation so users can try to debug things for themselves [c245d09]\n- fix outline when using nodot in ginkgo v2 [dca77c8]\n- Document areas where GinkgoT() behaves differently from testing.T [dbaf18f]\n- bugfix(docs): use Unsetenv instead of Clearenv (#1337) [6f67a14]\n\n### Maintenance\n\n- Bump to go 1.20 [4fcd0b3]\n\n## 2.14.0\n\n### Features\nYou can now use `GinkgoTB()` when you need an instance of `testing.TB` to pass to a library.\n\nPrior to this release table testing only supported generating individual `It`s for each test entry.  `DescribeTableSubtree` extends table testing support to entire testing subtrees - under the hood `DescrieTableSubtree` generates a new container for each entry and invokes your function to fill our the container.  See the [docs](https://onsi.github.io/ginkgo/#generating-subtree-tables) to learn more.\n\n- Introduce DescribeTableSubtree [65ec56d]\n- add GinkgoTB() to docs [4a2c832]\n- Add GinkgoTB() function (#1333) [92b6744]\n\n### Fixes\n- Fix typo in internal/suite.go (#1332) [beb9507]\n- Fix typo in docs/index.md (#1319) [4ac3a13]\n- allow wasm to compile with ginkgo present (#1311) [b2e5bc5]\n\n### Maintenance\n- Bump golang.org/x/tools from 0.16.0 to 0.16.1 (#1316) [465a8ec]\n- Bump actions/setup-go from 4 to 5 (#1313) [eab0e40]\n- Bump github/codeql-action from 2 to 3 (#1317) [fbf9724]\n- Bump golang.org/x/crypto (#1318) [3ee80ee]\n- Bump golang.org/x/tools from 0.14.0 to 0.16.0 (#1306) [123e1d5]\n- Bump github.com/onsi/gomega from 1.29.0 to 1.30.0 (#1297) [558f6e0]\n- Bump golang.org/x/net from 0.17.0 to 0.19.0 (#1307) [84ff7f3]\n\n## 2.13.2\n\n### Fixes\n- Fix file handler leak (#1309) [e2e81c8]\n- Avoid allocations with `(*regexp.Regexp).MatchString` (#1302) [3b2a2a7]\n\n## 2.13.1\n\n### Fixes\n- # 1296 fix(precompiled test guite): exec bit check omitted on Windows (#1301) [26eea01]\n\n### Maintenance\n- Bump github.com/go-logr/logr from 1.2.4 to 1.3.0 (#1291) [7161a9d]\n- Bump golang.org/x/sys from 0.13.0 to 0.14.0 (#1295) [7fc7b10]\n- Bump golang.org/x/tools from 0.12.0 to 0.14.0 (#1282) [74bbd65]\n- Bump github.com/onsi/gomega from 1.27.10 to 1.29.0 (#1290) [9373633]\n- Bump golang.org/x/net in /integration/_fixtures/version_mismatch_fixture (#1286) [6e3cf65]\n\n## 2.13.0\n\n### Features\n\nAdd PreviewSpect() to enable programmatic preview access to the suite report (fixes #1225)\n\n## 2.12.1\n\n### Fixes\n- Print logr prefix if it exists (#1275) [90d4846]\n\n### Maintenance\n- Bump actions/checkout from 3 to 4 (#1271) [555f543]\n- Bump golang.org/x/sys from 0.11.0 to 0.12.0 (#1270) [d867b7d]\n\n## 2.12.0\n\n### Features\n\n- feat: allow MustPassRepeatedly decorator to be set at suite level (#1266) [05de518]\n\n### Fixes\n\n- fix-errors-in-readme (#1244) [27c2f5d]\n\n### Maintenance\n\nVarious chores/dependency bumps.\n\n## 2.11.0\n\nIn prior versions of Ginkgo specs the CLI filter flags (e.g. `--focus`, `--label-filter`) would _override_ any programmatic focus.  This behavior has proved surprising and confusing in at least the following ways:\n\n- users cannot combine programmatic filters and CLI filters to more efficiently select subsets of tests\n- CLI filters can override programmatic focus on CI systems resulting in an exit code of 0 despite the presence of (incorrectly!) committed focused specs.\n\nGoing forward Ginkgo will AND all programmatic and CLI filters.  Moreover, the presence of any programmatic focused tests will always result in a non-zero exit code.\n\nThis change is technically a change in Ginkgo's external contract and may require some users to make changes to successfully adopt. Specifically: it's possible some users were intentionally using CLI filters to override programmatic focus.  If this is you please open an issue so we can explore solutions to the underlying problem you are trying to solve.\n\n### Fixes\n- Programmatic focus is no longer overwrriten by CLI filters [d6bba86]\n\n### Maintenance\n- Bump github.com/onsi/gomega from 1.27.7 to 1.27.8 (#1218) [4a70a38]\n- Bump golang.org/x/sys from 0.8.0 to 0.9.0 (#1219) [97eda4d]\n\n## 2.10.0\n\n### Features\n- feat(ginkgo/generators): add --tags flag (#1216) [a782a77]\n  adds a new --tags flag to ginkgo generate\n\n### Fixes\n- Fix broken link of MIGRATING_TO_V2.md (#1217) [548d78e]\n\n### Maintenance\n- Bump golang.org/x/tools from 0.9.1 to 0.9.3 (#1215) [2b76a5e]\n\n## 2.9.7\n\n### Fixes\n- fix race when multiple defercleanups are called in goroutines [07fc3a0]\n\n## 2.9.6\n\n### Fixes\n- fix: create parent directory before report files (#1212) [0ac65de]\n\n### Maintenance\n- Bump github.com/onsi/gomega from 1.27.6 to 1.27.7 (#1202) [3e39231]\n\n## 2.9.5\n\n### Fixes\n- ensure the correct deterministic sort order is produced when ordered specs are generated by a helper function [7fa0b6b]\n\n### Maintenance\n- fix generators link (#1200) [9f9d8b9]\n- Bump golang.org/x/tools from 0.8.0 to 0.9.1 (#1196) [150e3f2]\n- fix spelling err in docs (#1199) [0013b1a]\n- Bump golang.org/x/sys from 0.7.0 to 0.8.0 (#1193) [9e9e3e5]\n\n## 2.9.4\n\n### Fixes\n- fix hang with ginkgo -p (#1192) [15d4bdc] - this addresses a _long_ standing issue related to Ginkgo hanging when a child process spawned by the test does not exit.\n\n- fix: fail fast may cause Serial spec or cleanup Node interrupted (#1178) [8dea88b] - prior to this there was a small gap in which specs on other processes might start even if one process has tried to abort the suite.\n\n\n### Maintenance\n- Document run order when multiple setup nodes are at the same nesting level [903be81]\n\n## 2.9.3\n\n### Features\n- Add RenderTimeline to GinkgoT() [c0c77b6]\n\n### Fixes\n- update Measure deprecation message. fixes #1176 [227c662]\n- add newlines to GinkgoLogr (#1170) (#1171) [0de0e7c]\n\n### Maintenance\n- Bump commonmarker from 0.23.8 to 0.23.9 in /docs (#1183) [8b925ab]\n- Bump nokogiri from 1.14.1 to 1.14.3 in /docs (#1184) [e3795a4]\n- Bump golang.org/x/tools from 0.7.0 to 0.8.0 (#1182) [b453793]\n- Bump actions/setup-go from 3 to 4 (#1164) [73ed75b]\n- Bump github.com/onsi/gomega from 1.27.4 to 1.27.6 (#1173) [0a2bc64]\n- Bump github.com/go-logr/logr from 1.2.3 to 1.2.4 (#1174) [f41c557]\n- Bump golang.org/x/sys from 0.6.0 to 0.7.0 (#1179) [8e423e5]\n\n## 2.9.2\n\n### Maintenance\n- Bump github.com/go-task/slim-sprig (#1167) [3fcc5bf]\n- Bump github.com/onsi/gomega from 1.27.3 to 1.27.4 (#1163) [6143ffe]\n\n## 2.9.1\n\n### Fixes\nThis release fixes a longstanding issue where `ginkgo -coverpkg=./...` would not work.  This is now resolved and fixes [#1161](https://github.com/onsi/ginkgo/issues/1161) and [#995](https://github.com/onsi/ginkgo/issues/995)\n- Support -coverpkg=./... [26ca1b5]\n- document coverpkg a bit more clearly [fc44c3b]\n\n### Maintenance\n- bump various dependencies\n- Improve Documentation and fix typo (#1158) [93de676]\n\n## 2.9.0\n\n### Features\n- AttachProgressReporter is an experimental feature that allows users to provide arbitrary information when a ProgressReport is requested [28801fe]\n\n- GinkgoT() has been expanded to include several Ginkgo-specific methods [2bd5a3b]\n\n  The intent is to enable the development of third-party libraries that integrate deeply with Ginkgo using `GinkgoT()` to access Ginkgo's functionality.\n\n## 2.8.4\n\n### Features\n- Add OmitSuiteSetupNodes to JunitReportConfig (#1147) [979fbc2]\n- Add a reference to ginkgolinter in docs.index.md (#1143) [8432589]\n\n### Fixes\n- rename tools hack to see if it fixes things for downstream users [a8bb39a]\n\n### Maintenance\n- Bump golang.org/x/text (#1144) [41b2a8a]\n- Bump github.com/onsi/gomega from 1.27.0 to 1.27.1 (#1142) [7c4f583]\n\n## 2.8.3\n\nReleased to fix security issue in golang.org/x/net dependency\n\n### Maintenance\n\n- Bump golang.org/x/net from 0.6.0 to 0.7.0 (#1141) [fc1a02e]\n- remove tools.go hack from documentation [0718693]\n\n## 2.8.2\n\nGinkgo now includes a `tools.go` file in the root directory of the `ginkgo` package.  This should allow modules that simply `go get github.com/onsi/ginkgo/v2` to also pull in the CLI dependencies.  This obviates the need for consumers of Ginkgo to have their own `tools.go` file and makes it simpler to ensure that the version of the `ginkgo` CLI being used matches the version of the library.  You can simply run `go run github.com/onsi/ginkgo/v2/ginkgo` to run the version of the cli associated with your package go.mod.\n\n### Maintenance\n\n- Bump github.com/onsi/gomega from 1.26.0 to 1.27.0 (#1139) [5767b0a]\n- Fix minor typos (#1138) [e1e9723]\n- Fix link in V2 Migration Guide (#1137) [a588f60]\n\n## 2.8.1\n\n### Fixes\n- lock around default report output to avoid triggering the race detector when calling By from goroutines [2d5075a]\n- don't run ReportEntries through sprintf [febbe38]\n\n### Maintenance\n- Bump golang.org/x/tools from 0.5.0 to 0.6.0 (#1135) [11a4860]\n- test: update matrix for Go 1.20 (#1130) [4890a62]\n- Bump golang.org/x/sys from 0.4.0 to 0.5.0 (#1133) [a774638]\n- Bump github.com/onsi/gomega from 1.25.0 to 1.26.0 (#1120) [3f233bd]\n- Bump github-pages from 227 to 228 in /docs (#1131) [f9b8649]\n- Bump activesupport from 6.0.6 to 6.0.6.1 in /docs (#1127) [6f8c042]\n- Update index.md with instructions on how to upgrade Ginkgo [833a75e]\n\n## 2.8.0\n\n### Features\n\n- Introduce GinkgoHelper() to track and exclude helper functions from potential CodeLocations [e19f556]\n\nModeled after `testing.T.Helper()`.  Now, rather than write code like:\n\n```go\nfunc helper(model Model) {\n    Expect(model).WithOffset(1).To(BeValid())\n    Expect(model.SerialNumber).WithOffset(1).To(MatchRegexp(/[a-f0-9]*/))\n}\n```\n\nyou can stop tracking offsets (which makes nesting composing helpers nearly impossible) and simply write:\n\n```go\nfunc helper(model Model) {\n    GinkgoHelper()\n    Expect(model).To(BeValid())\n    Expect(model.SerialNumber).To(MatchRegexp(/[a-f0-9]*/))\n}\n```\n\n- Introduce GinkgoLabelFilter() and Label().MatchesLabelFilter() to make it possible to programmatically match filters (fixes #1119) [2f6597c]\n\nYou can now write code like this:\n\n```go\nBeforeSuite(func() {\n\tif Label(\"slow\").MatchesLabelFilter(GinkgoLabelFilter()) {\n\t\t// do slow setup\n\t}\n\n\tif Label(\"fast\").MatchesLabelFilter(GinkgoLabelFilter()) {\n\t\t// do fast setup\n\t}\n})\n```\n\nto programmatically check whether a given set of labels will match the configured `--label-filter`.\n\n### Maintenance\n\n- Bump webrick from 1.7.0 to 1.8.1 in /docs (#1125) [ea4966e]\n- cdeql: add ruby language (#1124) [9dd275b]\n- dependabot: add bundler package-ecosystem for docs (#1123) [14e7bdd]\n\n## 2.7.1\n\n### Fixes\n- Bring back SuiteConfig.EmitSpecProgress to avoid compilation issue for consumers that set it manually [d2a1cb0]\n\n### Maintenance\n- Bump github.com/onsi/gomega from 1.24.2 to 1.25.0 (#1118) [cafece6]\n- Bump golang.org/x/tools from 0.4.0 to 0.5.0 (#1111) [eda66c2]\n- Bump golang.org/x/sys from 0.3.0 to 0.4.0 (#1112) [ac5ccaa]\n- Bump github.com/onsi/gomega from 1.24.1 to 1.24.2 (#1097) [eee6480]\n\n## 2.7.0\n\n### Features\n- Introduce ContinueOnFailure for Ordered containers [e0123ca] - Ordered containers that are also decorated with ContinueOnFailure will not stop running specs after the first spec fails.\n- Support for bootstrap commands to use custom data for templates (#1110) [7a2b242]\n- Support for labels and pending decorator in ginkgo outline output (#1113) [e6e3b98]\n- Color aliases for custom color support (#1101) [49fab7a]\n\n### Fixes\n- correctly ensure deterministic spec order, even if specs are generated by iterating over a map [89dda20]\n- Fix a bug where timedout specs were not correctly treated as failures when determining whether or not to run AfterAlls in an Ordered container.\n- Ensure go test coverprofile outputs to the expected location (#1105) [b0bd77b]\n\n## 2.6.1\n\n### Features\n- Override formatter colors from envvars - this is a new feature but an alternative approach involving config files might be taken in the future (#1095) [60240d1]\n\n### Fixes\n- GinkgoRecover now supports ignoring panics that match a specific, hidden, interface [301f3e2]\n\n### Maintenance\n- Bump github.com/onsi/gomega from 1.24.0 to 1.24.1 (#1077) [3643823]\n- Bump golang.org/x/tools from 0.2.0 to 0.4.0 (#1090) [f9f856e]\n- Bump nokogiri from 1.13.9 to 1.13.10 in /docs (#1091) [0d7087e]\n\n## 2.6.0\n\n### Features\n- `ReportBeforeSuite` provides access to the suite report before the suite begins.\n- Add junit config option for omitting leafnodetype (#1088) [956e6d2]\n- Add support to customize junit report config to omit spec labels (#1087) [de44005]\n\n### Fixes\n- Fix stack trace pruning so that it has a chance of working on windows [2165648]\n\n## 2.5.1\n\n### Fixes\n- skipped tests only show as 'S' when running with -v [3ab38ae]\n- Fix typo in docs/index.md (#1082) [55fc58d]\n- Fix typo in docs/index.md (#1081) [8a14f1f]\n- Fix link notation in docs/index.md (#1080) [2669612]\n- Fix typo in `--progress` deprecation message (#1076) [b4b7edc]\n\n### Maintenance\n- chore: Included githubactions in the dependabot config (#976) [baea341]\n- Bump golang.org/x/sys from 0.1.0 to 0.2.0 (#1075) [9646297]\n\n## 2.5.0\n\n### Ginkgo output now includes a timeline-view of the spec\n\nThis commit changes Ginkgo's default output.  Spec details are now\npresented as a **timeline** that includes events that occur during the spec\nlifecycle interleaved with any GinkgoWriter content.  This makes is much easier\nto understand the flow of a spec and where a given failure occurs.\n\nThe --progress, --slow-spec-threshold, --always-emit-ginkgo-writer flags\nand the SuppressProgressReporting decorator have all been deprecated.  Instead\nthe existing -v and -vv flags better capture the level of verbosity to display.  However,\na new --show-node-events flag is added to include node `> Enter` and `< Exit` events\nin the spec timeline.\n\nIn addition, JUnit reports now include the timeline (rendered with -vv) and custom JUnit\nreports can be configured and generated using\n`GenerateJUnitReportWithConfig(report types.Report, dst string, config JunitReportConfig)`\n\nCode should continue to work unchanged with this version of Ginkgo - however if you have tooling that\nwas relying on the specific output format of Ginkgo you _may_ run into issues.  Ginkgo's console output is not guaranteed to be stable for tooling and automation purposes.  You should, instead, use Ginkgo's JSON format\nto build tooling on top of as it has stronger guarantees to be stable from version to version.\n\n### Features\n- Provide details about which timeout expired [0f2fa27]\n\n### Fixes\n- Add Support Policy to docs [c70867a]\n\n### Maintenance\n- Bump github.com/onsi/gomega from 1.22.1 to 1.23.0 (#1070) [bb3b4e2]\n\n## 2.4.0\n\n### Features\n\n- DeferCleanup supports functions with multiple-return values [5e33c75]\n- Add GinkgoLogr (#1067) [bf78c28]\n- Introduction of 'MustPassRepeatedly' decorator (#1051) [047c02f]\n\n### Fixes\n- correcting some typos (#1064) [1403d3c]\n- fix flaky internal_integration interrupt specs [2105ba3]\n- Correct busted link in README [be6b5b9]\n\n### Maintenance\n- Bump actions/checkout from 2 to 3 (#1062) [8a2f483]\n- Bump golang.org/x/tools from 0.1.12 to 0.2.0 (#1065) [529c4e8]\n- Bump github/codeql-action from 1 to 2 (#1061) [da09146]\n- Bump actions/setup-go from 2 to 3 (#1060) [918040d]\n- Bump github.com/onsi/gomega from 1.22.0 to 1.22.1 (#1053) [2098e4d]\n- Bump nokogiri from 1.13.8 to 1.13.9 in /docs (#1066) [1d74122]\n- Add GHA to dependabot config [4442772]\n\n## 2.3.1\n\n## Fixes\nSeveral users were invoking `ginkgo` by installing the latest version of the cli via `go install github.com/onsi/ginkgo/v2/ginkgo@latest`.  When 2.3.0 was released this resulted in an influx of issues as CI systems failed due to a change in the internal contract between the Ginkgo CLI and the Ginkgo library.  Ginkgo only supports running the same version of the library as the cli (which is why both are packaged in the same repository).\n\nWith this patch release, the ginkgo CLI can now identify a version mismatch and emit a helpful error message.\n\n- Ginkgo cli can identify version mismatches and emit a helpful error message [bc4ae2f]\n- further emphasize that a version match is required when running Ginkgo on CI and/or locally [2691dd8]\n\n### Maintenance\n- bump gomega to v1.22.0 [822a937]\n\n## 2.3.0\n\n### Interruptible Nodes and Timeouts\n\nGinkgo now supports per-node and per-spec timeouts on interruptible nodes.  Check out the [documentation for all the details](https://onsi.github.io/ginkgo/#spec-timeouts-and-interruptible-nodes) but the gist is you can now write specs like this:\n\n```go\nIt(\"is interruptible\", func(ctx SpecContext) { // or context.Context instead of SpecContext, both are valid.\n    // do things until `ctx.Done()` is closed, for example:\n    req, err := http.NewRequestWithContext(ctx, \"POST\", \"/build-widgets\", nil)\n    Expect(err).NotTo(HaveOccured())\n    _, err := http.DefaultClient.Do(req)\n    Expect(err).NotTo(HaveOccured())\n\n    Eventually(client.WidgetCount).WithContext(ctx).Should(Equal(17))\n}, NodeTimeout(time.Second*20), GracePeriod(5*time.Second))\n```\n\nand have Ginkgo ensure that the node completes before the timeout elapses.  If it does elapse, or if an external interrupt is received (e.g. `^C`) then Ginkgo will cancel the context and wait for the Grace Period for the node to exit before proceeding with any cleanup nodes associated with the spec.  The `ctx` provided by Ginkgo can also be passed down to Gomega's `Eventually` to have all assertions within the node governed by a single deadline.\n\n### Features\n\n- Ginkgo now records any additional failures that occur during the cleanup of a failed spec.  In prior versions this information was quietly discarded, but the introduction of a more rigorous approach to timeouts and interruptions allows Ginkgo to better track subsequent failures.\n- `SpecContext` also provides a mechanism for third-party libraries to provide additional information when a Progress Report is generated.  Gomega uses this to provide the current state of an `Eventually().WithContext()` assertion when a Progress Report is requested.\n- DescribeTable now exits with an error if it is not passed any Entries [a4c9865]\n\n## Fixes\n- fixes crashes on newer Ruby 3 installations by upgrading github-pages gem dependency [92c88d5]\n- Make the outline command able to use the DSL import [1be2427]\n\n## Maintenance\n- chore(docs): delete no meaning d [57c373c]\n- chore(docs): Fix hyperlinks [30526d5]\n- chore(docs): fix code blocks without language settings [cf611c4]\n- fix intra-doc link [b541bcb]\n\n## 2.2.0\n\n### Generate real-time Progress Reports [f91377c]\n\nGinkgo can now generate Progress Reports to point users at the current running line of code (including a preview of the actual source code) and a best guess at the most relevant subroutines.\n\nThese Progress Reports allow users to debug stuck or slow tests without exiting the Ginkgo process.  A Progress Report can be generated at any time by sending Ginkgo a `SIGINFO` (`^T` on MacOS/BSD) or `SIGUSR1`.\n\nIn addition, the user can specify `--poll-progress-after` and `--poll-progress-interval` to have Ginkgo start periodically emitting progress reports if a given node takes too long.  These can be overriden/set on a per-node basis with the `PollProgressAfter` and `PollProgressInterval` decorators.\n\nProgress Reports are emitted to stdout, and also stored in the machine-redable report formats that Ginkgo supports.\n\nGinkgo also uses this progress reporting infrastructure under the hood when handling timeouts and interrupts.  This yields much more focused, useful, and informative stack traces than previously.\n\n### Features\n- `BeforeSuite`, `AfterSuite`, `SynchronizedBeforeSuite`, `SynchronizedAfterSuite`, and `ReportAfterSuite` now support (the relevant subset of) decorators.  These can be passed in _after_ the callback functions that are usually passed into these nodes.\n\n  As a result the **signature of these methods has changed** and now includes a trailing `args ...any`.  For most users simply using the DSL, this change is transparent.  However if you were assigning one of these functions to a custom variable (or passing it around) then your code may need to change to reflect the new signature.\n\n### Maintenance\n- Modernize the invocation of Ginkgo in github actions [0ffde58]\n- Update reocmmended CI settings in docs [896bbb9]\n- Speed up unnecessarily slow integration test [6d3a90e]\n\n## 2.1.6\n\n### Fixes\n- Add `SuppressProgressReporting` decorator to turn off --progress announcements for a given node [dfef62a]\n- chore: remove duplicate word in comments [7373214]\n\n## 2.1.5\n\n### Fixes\n- drop -mod=mod instructions; fixes #1026 [6ad7138]\n- Ensure `CurrentSpecReport` and `AddReportEntry` are thread-safe [817c09b]\n- remove stale importmap gcflags flag test [3cd8b93]\n- Always emit spec summary [5cf23e2] - even when only one spec has failed\n- Fix ReportAfterSuite usage in docs [b1864ad]\n- fixed typo (#997) [219cc00]\n- TrimRight is not designed to trim Suffix [71ebb74]\n- refactor: replace strings.Replace with strings.ReplaceAll (#978) [143d208]\n- fix syntax in examples (#975) [b69554f]\n\n### Maintenance\n- Bump github.com/onsi/gomega from 1.20.0 to 1.20.1 (#1027) [e5dfce4]\n- Bump tzinfo from 1.2.9 to 1.2.10 in /docs (#1006) [7ae91c4]\n- Bump github.com/onsi/gomega from 1.19.0 to 1.20.0 (#1005) [e87a85a]\n- test: add new Go 1.19 to test matrix (#1014) [bbefe12]\n- Bump golang.org/x/tools from 0.1.11 to 0.1.12 (#1012) [9327906]\n- Bump golang.org/x/tools from 0.1.10 to 0.1.11 (#993) [f44af96]\n- Bump nokogiri from 1.13.3 to 1.13.6 in /docs (#981) [ef336aa]\n\n## 2.1.4\n\n### Fixes\n- Numerous documentation typos\n- Prepend `when` when using `When` (this behavior was in 1.x but unintentionally lost during the 2.0 rewrite) [efce903]\n- improve error message when a parallel process fails to report back [a7bd1fe]\n- guard against concurrent map writes in DeprecationTracker [0976569]\n- Invoke reporting nodes during dry-run (fixes #956 and #935) [aae4480]\n- Fix ginkgo import circle [f779385]\n\n## 2.1.3\n\nSee [https://onsi.github.io/ginkgo/MIGRATING_TO_V2](https://onsi.github.io/ginkgo/MIGRATING_TO_V2) for details on V2.\n\n### Fixes\n- Calling By in a container node now emits a useful error. [ff12cee]\n\n## 2.1.2\n\n### Fixes\n\n- Track location of focused specs correctly in `ginkgo unfocus` [a612ff1]\n- Profiling suites with focused specs no longer generates an erroneous failure message [8fbfa02]\n- Several documentation typos fixed.  Big thanks to everyone who helped catch them and report/fix them!\n\n## 2.1.1\n\nSee [https://onsi.github.io/ginkgo/MIGRATING_TO_V2](https://onsi.github.io/ginkgo/MIGRATING_TO_V2) for details on V2.\n\n### Fixes\n- Suites that only import the new dsl packages are now correctly identified as Ginkgo suites [ec17e17]\n\n## 2.1.0\n\nSee [https://onsi.github.io/ginkgo/MIGRATING_TO_V2](https://onsi.github.io/ginkgo/MIGRATING_TO_V2) for details on V2.\n\n2.1.0 is a minor release with a few tweaks:\n\n- Introduce new DSL packages to enable users to pick-and-choose which portions of the DSL to dot-import. [90868e2]  More details [here](https://onsi.github.io/ginkgo/#alternatives-to-dot-importing-ginkgo).\n- Add error check for invalid/nil parameters to DescribeTable [6f8577e]\n- Myriad docs typos fixed (thanks everyone!) [718542a, ecb7098, 146654c, a8f9913, 6bdffde, 03dcd7e]\n\n## 2.0.0\n\nSee [https://onsi.github.io/ginkgo/MIGRATING_TO_V2](https://onsi.github.io/ginkgo/MIGRATING_TO_V2)\n\n## 1.16.5\n\nGinkgo 2.0 now has a Release Candidate.  1.16.5 advertises the existence of the RC.\n1.16.5 deprecates GinkgoParallelNode in favor of GinkgoParallelProcess\n\nYou can silence the RC advertisement by setting an `ACK_GINKGO_RC=true` environment variable or creating a file in your home directory called `.ack-ginkgo-rc`\n\n## 1.16.4\n\n### Fixes\n1.16.4 retracts 1.16.3.  There are no code changes.  The 1.16.3 tag was associated with the wrong commit and an attempt to change it after-the-fact has proven problematic.  1.16.4 retracts 1.16.3 in Ginkgo's go.mod and creates a new, correctly tagged, release.\n\n## 1.16.3\n\n### Features\n- Measure is now deprecated and emits a deprecation warning.\n\n## 1.16.2\n\n### Fixes\n- Deprecations can be suppressed by setting an `ACK_GINKGO_DEPRECATIONS=<semver>` environment variable.\n\n## 1.16.1\n\n### Fixes\n- Suppress --stream deprecation warning on windows (#793)\n\n## 1.16.0\n\n### Features\n- Advertise Ginkgo 2.0.  Introduce deprecations. [9ef1913]\n    - Update README.md to advertise that Ginkgo 2.0 is coming.\n    - Backport the 2.0 DeprecationTracker and start alerting users\n    about upcoming deprecations.\n\n- Add slim-sprig template functions to bootstrap/generate (#775) [9162b86]\n\n- Fix accidental reference to 1488 (#784) [9fb7fe4]\n\n## 1.15.2\n\n### Fixes\n- ignore blank `-focus` and `-skip` flags (#780) [e90a4a0]\n\n## 1.15.1\n\n### Fixes\n- reporters/junit: Use `system-out` element instead of `passed` (#769) [9eda305]\n\n## 1.15.0\n\n### Features\n- Adds 'outline' command to print the outline of specs/containers in a file (#754) [071c369] [6803cc3] [935b538] [06744e8] [0c40583]\n- Add support for using template to generate tests (#752) [efb9e69]\n- Add a Chinese Doc #755 (#756) [5207632]\n- cli: allow multiple -focus and -skip flags (#736) [9a782fb]\n\n### Fixes\n- Add _internal to filename of tests created with internal flag (#751) [43c12da]\n\n## 1.14.2\n\n### Fixes\n- correct handling windows backslash in import path (#721) [97f3d51]\n- Add additional methods to GinkgoT() to improve compatibility with the testing.TB interface [b5fe44d]\n\n## 1.14.1\n\n### Fixes\n- Discard exported method declaration when running ginkgo bootstrap (#558) [f4b0240]\n\n## 1.14.0\n\n### Features\n- Defer running top-level container nodes until RunSpecs is called [d44dedf]\n- [Document Ginkgo lifecycle](http://onsi.github.io/ginkgo/#understanding-ginkgos-lifecycle)\n- Add `extensions/globals` package (#692) [3295c8f] - this can be helpful in contexts where you are test-driving your test-generation code (see [#692](https://github.com/onsi/ginkgo/pull/692))\n- Print Skip reason in JUnit reporter if one was provided [820dfab]\n\n## 1.13.0\n\n### Features\n- Add a version of table.Entry that allows dumping the entry parameters. (#689) [21eaef2]\n\n### Fixes\n- Ensure integration tests pass in an environment sans GOPATH [606fba2]\n- Add books package (#568) [fc0e44e]\n- doc(readme): installation via \"tools package\" (#677) [83bb20e]\n- Solve the undefined: unix.Dup2 compile error on mips64le (#680) [0624f75]\n- Import package without dot (#687) [6321024]\n- Fix integration tests to stop require GOPATH (#686) [a912ec5]\n\n## 1.12.3\n\n### Fixes\n- Print correct code location of failing table test (#666) [c6d7afb]\n\n## 1.12.2\n\n### Fixes\n- Update dependencies [ea4a036]\n\n## 1.12.1\n\n### Fixes\n- Make unfocus (\"blur\") much faster (#674) [8b18061]\n- Fix typo (#673) [7fdcbe8]\n- Test against 1.14 and remove 1.12 [d5c2ad6]\n- Test if a coverprofile content is empty before checking its latest character (#670) [14d9fa2]\n- replace tail package with maintained one. this fixes go get errors (#667) [4ba33d4]\n- improve ginkgo performance - makes progress on #644 [a14f98e]\n- fix convert integration tests [1f8ba69]\n- fix typo successful -> successful (#663) [1ea49cf]\n- Fix invalid link (#658) [b886136]\n- convert utility : Include comments from source (#657) [1077c6d]\n- Explain what BDD means [d79e7fb]\n- skip race detector test on unsupported platform (#642) [f8ab89d]\n- Use Dup2 from golang.org/x/sys/unix instead of syscallDup (#638) [5d53c55]\n- Fix missing newline in combined coverage file (#641) [6a07ea2]\n- check if a spec is run before returning SpecSummary (#645) [8850000]\n\n## 1.12.0\n\n### Features\n- Add module definition (#630) [78916ab]\n\n## 1.11.0\n\n### Features\n- Add syscall for riscv64 architecture [f66e896]\n- teamcity reporter: output location of test failure as well as test definition (#626) [9869142]\n- teamcity reporter: output newline after every service message (#625) [3cfa02d]\n- Add support for go module when running `generate` command (#578) [9c89e3f]\n\n## 1.10.3\n\n### Fixes\n- Set go_import_path in travis.yml to allow internal packages in forks (#607) [3b721db]\n- Add integration test [d90e0dc]\n- Fix coverage files combining [e5dde8c]\n- A new CLI option: -ginkgo.reportFile <file path> (#601) [034fd25]\n\n## 1.10.2\n\n### Fixes\n- speed up table entry generateIt() (#609) [5049dc5]\n- Fix. Write errors to stderr instead of stdout (#610) [7bb3091]\n\n## 1.10.1\n\n### Fixes\n- stack backtrace: fix skipping (#600) [2a4c0bd]\n\n## 1.10.0\n\n### Fixes\n- stack backtrace: fix alignment and skipping [66915d6]\n- fix typo in documentation [8f97b93]\n\n## 1.9.0\n\n### Features\n- Option to print output into report, when tests have passed [0545415]\n\n### Fixes\n- Fixed typos in comments [0ecbc58]\n- gofmt code [a7f8bfb]\n- Simplify code [7454d00]\n- Simplify concatenation, incrementation and function assignment [4825557]\n- Avoid unnecessary conversions [9d9403c]\n- JUnit: include more detailed information about panic [19cca4b]\n- Print help to stdout when the user asks for help [4cb7441]\n\n\n## 1.8.0\n\n### New Features\n- allow config of the vet flag for `go test` (#562) [3cd45fa]\n- Support projects using go modules [d56ee76]\n\n### Fixes and Minor Improvements\n- chore(godoc): fixes typos in Measurement funcs [dbaca8e]\n- Optimize focus to avoid allocations [f493786]\n- Ensure generated test file names are underscored [505cc35]\n\n## 1.7.0\n\n### New Features\n- Add JustAfterEach (#484) [0d4f080]\n\n### Fixes\n- Correctly round suite time in junit reporter [2445fc1]\n- Avoid using -i argument to go test for Golang 1.10+ [46bbc26]\n\n## 1.6.0\n\n### New Features\n- add --debug flag to emit node output to files (#499) [39febac]\n\n### Fixes\n- fix: for `go vet` to pass [69338ec]\n- docs: fix for contributing instructions [7004cb1]\n- consolidate and streamline contribution docs (#494) [d848015]\n- Make generated Junit file compatible with \"Maven Surefire\" (#488) [e51bee6]\n- all: gofmt [000d317]\n- Increase eventually timeout to 30s [c73579c]\n- Clarify asynchronous test behavior [294d8f4]\n- Travis badge should only show master [26d2143]\n\n## 1.5.0 5/10/2018\n\n### New Features\n- Supports go v1.10 (#443, #446, #451) [e873237, 468e89e, e37dbfe, a37f4c0, c0b857d, bca5260, 4177ca8]\n- Add a When() synonym for Context() (#386) [747514b, 7484dad, 7354a07, dd826c8]\n- Re-add noisySkippings flag [652e15c]\n- Allow coverage to be displayed for focused specs (#367) [11459a8]\n- Handle -outputdir flag (#364) [228e3a8]\n- Handle -coverprofile flag (#355) [43392d5]\n\n### Fixes\n- When using custom reporters register the custom reporters *before* the default reporter.  This allows users to see the output of any print statements in their customer reporters. (#365) [8382b23]\n- When running a test and calculating the coverage using the `-coverprofile` and `-outputdir` flags, Ginkgo fails with an error if the directory does not exist. This is due to an [issue in go 1.10](https://github.com/golang/go/issues/24588) (#446) [b36a6e0]\n- `unfocus` command ignores vendor folder (#459) [e5e551c, c556e43, a3b6351, 9a820dd]\n- Ignore packages whose tests are all ignored by go (#456) [7430ca7, 6d8be98]\n- Increase the threshold when checking time measurements (#455) [2f714bf, 68f622c]\n- Fix race condition in coverage tests (#423) [a5a8ff7, ab9c08b]\n- Add an extra new line after reporting spec run completion for test2json [874520d]\n- added name name field to junit reported testsuite [ae61c63]\n- Do not set the run time of a spec when the dryRun flag is used (#438) [457e2d9, ba8e856]\n- Process FWhen and FSpecify when unfocusing (#434) [9008c7b, ee65bd, df87dfe]\n- Synchronies the access to the state of specs to avoid race conditions (#430) [7d481bc, ae6829d]\n- Added Duration on GinkgoTestDescription (#383) [5f49dad, 528417e, 0747408, 329d7ed]\n- Fix Ginkgo stack trace on failure for Specify (#415) [b977ede, 65ca40e, 6c46eb8]\n- Update README with Go 1.6+, Golang -> Go (#409) [17f6b97, bc14b66, 20d1598]\n- Use fmt.Errorf instead of errors.New(fmt.Sprintf (#401) [a299f56, 44e2eaa]\n- Imports in generated code should follow conventions (#398) [0bec0b0, e8536d8]\n- Prevent data race error when Recording a benchmark value from multiple go routines (#390) [c0c4881, 7a241e9]\n- Replace GOPATH in Environment [4b883f0]\n\n\n## 1.4.0 7/16/2017\n\n- `ginkgo` now provides a hint if you accidentally forget to run `ginkgo bootstrap` to generate a `*_suite_test.go` file that actually invokes the Ginkgo test runner. [#345](https://github.com/onsi/ginkgo/pull/345)\n- thanks to improvements in `go test -c` `ginkgo` no longer needs to fix Go's compilation output to ensure compilation errors are expressed relative to the CWD. [#357]\n- `ginkgo watch -watchRegExp=...` allows you to specify a custom regular expression to watch.  Only files matching the regular expression are watched for changes (the default is `\\.go$`) [#356]\n- `ginkgo` now always emits compilation output.  Previously, only failed compilation output was printed out. [#277]\n- `ginkgo -requireSuite` now fails the test run if there are `*_test.go` files but `go test` fails to detect any tests.  Typically this means you forgot to run `ginkgo bootstrap` to generate a suite file. [#344]\n- `ginkgo -timeout=DURATION` allows you to adjust the timeout for the entire test suite (default is 24 hours) [#248]\n\n## 1.3.0 3/28/2017\n\nImprovements:\n\n- Significantly improved parallel test distribution.  Now instead of pre-sharding test cases across workers (which can result in idle workers and poor test performance) Ginkgo uses a shared queue to keep all workers busy until all tests are complete.  This improves test-time performance and consistency.\n- `Skip(message)` can be used to skip the current test.\n- Added `extensions/table` - a Ginkgo DSL for [Table Driven Tests](http://onsi.github.io/ginkgo/#table-driven-tests)\n- Add `GinkgoRandomSeed()` - shorthand for `config.GinkgoConfig.RandomSeed`\n- Support for retrying flaky tests with `--flakeAttempts`\n- `ginkgo ./...` now recurses as you'd expect\n- Added `Specify` a synonym for `It`\n- Support colorise on Windows\n- Broader support for various go compilation flags in the `ginkgo` CLI\n\nBug Fixes:\n\n- Ginkgo tests now fail when you `panic(nil)` (#167)\n\n## 1.2.0 5/31/2015\n\nImprovements\n\n- `ginkgo -coverpkg` calls down to `go test -coverpkg` (#160)\n- `ginkgo -afterSuiteHook COMMAND` invokes the passed-in `COMMAND` after a test suite completes (#152)\n- Relaxed requirement for Go 1.4+.  `ginkgo` now works with Go v1.3+ (#166)\n\n## 1.2.0-beta\n\nGinkgo now requires Go 1.4+\n\nImprovements:\n\n- Call reporters in reverse order when announcing spec completion -- allows custom reporters to emit output before the default reporter does.\n- Improved focus behavior.  Now, this:\n\n    ```golang\n    FDescribe(\"Some describe\", func() {\n        It(\"A\", func() {})\n\n        FIt(\"B\", func() {})\n    })\n    ```\n\n  will run `B` but *not* `A`.  This tends to be a common usage pattern when in the thick of writing and debugging tests.\n- When `SIGINT` is received, Ginkgo will emit the contents of the `GinkgoWriter` before running the `AfterSuite`.  Useful for debugging stuck tests.\n- When `--progress` is set, Ginkgo will write test progress (in particular, Ginkgo will say when it is about to run a BeforeEach, AfterEach, It, etc...) to the `GinkgoWriter`.  This is useful for debugging stuck tests and tests that generate many logs.\n- Improved output when an error occurs in a setup or teardown block.\n- When `--dryRun` is set, Ginkgo will walk the spec tree and emit to its reporter *without* actually running anything.  Best paired with `-v` to understand which specs will run in which order.\n- Add `By` to help document long `It`s.  `By` simply writes to the `GinkgoWriter`.\n- Add support for precompiled tests:\n    - `ginkgo build <path-to-package>` will now compile the package, producing a file named `package.test`\n    - The compiled `package.test` file can be run directly.  This runs the tests in series.\n    - To run precompiled tests in parallel, you can run: `ginkgo -p package.test`\n- Support `bootstrap`ping and `generate`ing [Agouti](http://agouti.org) specs.\n- `ginkgo generate` and `ginkgo bootstrap` now honor the package name already defined in a given directory\n- The `ginkgo` CLI ignores `SIGQUIT`.  Prevents its stack dump from interlacing with the underlying test suite's stack dump.\n- The `ginkgo` CLI now compiles tests into a temporary directory instead of the package directory.  This necessitates upgrading to Go v1.4+.\n- `ginkgo -notify` now works on Linux\n\nBug Fixes:\n\n- If --skipPackages is used and all packages are skipped, Ginkgo should exit 0.\n- Fix tempfile leak when running in parallel\n- Fix incorrect failure message when a panic occurs during a parallel test run\n- Fixed an issue where a pending test within a focused context (or a focused test within a pending context) would skip all other tests.\n- Be more consistent about handling SIGTERM as well as SIGINT\n- When interrupted while concurrently compiling test suites in the background, Ginkgo now cleans up the compiled artifacts.\n- Fixed a long standing bug where `ginkgo -p` would hang if a process spawned by one of the Ginkgo parallel nodes does not exit. (Hooray!)\n\n## 1.1.0 (8/2/2014)\n\nNo changes, just dropping the beta.\n\n## 1.1.0-beta (7/22/2014)\nNew Features:\n\n- `ginkgo watch` now monitors packages *and their dependencies* for changes.  The depth of the dependency tree can be modified with the `-depth` flag.\n- Test suites with a programmatic focus (`FIt`, `FDescribe`, etc...) exit with non-zero status code, even when they pass.  This allows CI systems to detect accidental commits of focused test suites.\n- `ginkgo -p` runs the testsuite in parallel with an auto-detected number of nodes.\n- `ginkgo -tags=TAG_LIST` passes a list of tags down to the `go build` command.\n- `ginkgo --failFast` aborts the test suite after the first failure.\n- `ginkgo generate file_1 file_2` can take multiple file arguments.\n- Ginkgo now summarizes any spec failures that occurred at the end of the test run.\n- `ginkgo --randomizeSuites` will run tests *suites* in random order using the generated/passed-in seed.\n\nImprovements:\n\n- `ginkgo -skipPackage` now takes a comma-separated list of strings.  If the *relative path* to a package matches one of the entries in the comma-separated list, that package is skipped.\n- `ginkgo --untilItFails` no longer recompiles between attempts.\n- Ginkgo now panics when a runnable node (`It`, `BeforeEach`, `JustBeforeEach`, `AfterEach`, `Measure`) is nested within another runnable node.  This is always a mistake.  Any test suites that panic because of this change should be fixed.\n\nBug Fixes:\n\n- `ginkgo boostrap` and `ginkgo generate` no longer fail when dealing with `hyphen-separated-packages`.\n- parallel specs are now better distributed across nodes - fixed a crashing bug where (for example) distributing 11 tests across 7 nodes would panic\n\n## 1.0.0 (5/24/2014)\nNew Features:\n\n- Add `GinkgoParallelNode()` - shorthand for `config.GinkgoConfig.ParallelNode`\n\nImprovements:\n\n- When compilation fails, the compilation output is rewritten to present a correct *relative* path.  Allows ⌘-clicking in iTerm open the file in your text editor.\n- `--untilItFails` and `ginkgo watch` now generate new random seeds between test runs, unless a particular random seed is specified.\n\nBug Fixes:\n\n- `-cover` now generates a correctly combined coverprofile when running with in parallel with multiple `-node`s.\n- Print out the contents of the `GinkgoWriter` when `BeforeSuite` or `AfterSuite` fail.\n- Fix all remaining race conditions in Ginkgo's test suite.\n\n## 1.0.0-beta (4/14/2014)\nBreaking changes:\n\n- `thirdparty/gomocktestreporter` is gone.  Use `GinkgoT()` instead\n- Modified the Reporter interface\n- `watch` is now a subcommand, not a flag.\n\nDSL changes:\n\n- `BeforeSuite` and `AfterSuite` for setting up and tearing down test suites.\n- `AfterSuite` is triggered on interrupt (`^C`) as well as exit.\n- `SynchronizedBeforeSuite` and `SynchronizedAfterSuite` for setting up and tearing down singleton resources across parallel nodes.\n\nCLI changes:\n\n- `watch` is now a subcommand, not a flag\n- `--nodot` flag can be passed to `ginkgo generate` and `ginkgo bootstrap` to avoid dot imports.  This explicitly imports all exported identifiers in Ginkgo and Gomega.  Refreshing this list can be done by running `ginkgo nodot`\n- Additional arguments can be passed to specs.  Pass them after the `--` separator\n- `--skipPackage` flag takes a regexp and ignores any packages with package names passing said regexp.\n- `--trace` flag prints out full stack traces when errors occur, not just the line at which the error occurs.\n\nMisc:\n\n- Start using semantic versioning\n- Start maintaining changelog\n\nMajor refactor:\n\n- Pull out Ginkgo's internal to `internal`\n- Rename `example` everywhere to `spec`\n- Much more!\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/CONTRIBUTING.md",
    "content": "# Contributing to Ginkgo\n\nYour contributions to Ginkgo are essential for its long-term maintenance and improvement.\n\n- Please **open an issue first** - describe what problem you are trying to solve and give the community a forum for input and feedback ahead of investing time in writing code!\n- Ensure adequate test coverage:\n    - When adding to the Ginkgo library, add unit and/or integration tests (under the `integration` folder).\n    - When adding to the Ginkgo CLI, note that there are very few unit tests.  Please add an integration test.\n- Run `make` or:\n  - Install ginkgo locally via `go install ./...`\n  - Make sure all the tests succeed via `ginkgo -r -p`\n  - Vet your changes via `go vet ./...`\n- Update the documentation. Ginkgo uses `godoc` comments and documentation in `docs/index.md`.  You can run `bundle && bundle exec jekyll serve` in the `docs` directory to preview your changes.\n\nThanks for supporting Ginkgo!\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/LICENSE",
    "content": "Copyright (c) 2013-2014 Onsi Fakhouri\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/Makefile",
    "content": "# default task since it's first\n.PHONY: all\nall:  vet test\n\n.PHONY: test\ntest:\n\tgo run github.com/onsi/ginkgo/v2/ginkgo -r -p -randomize-all -keep-going\n\n.PHONY: vet\nvet:\n\tgo vet ./...\n\n.PHONY: update-deps\nupdate-deps:\n\tgo get -u ./...\n\tgo mod tidy"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/README.md",
    "content": "![Ginkgo](https://onsi.github.io/ginkgo/images/ginkgo.png)\n\n[![test](https://github.com/onsi/ginkgo/actions/workflows/test.yml/badge.svg?branch=master)](https://github.com/onsi/ginkgo/actions?query=workflow%3Atest+branch%3Amaster) | [Ginkgo Docs](https://onsi.github.io/ginkgo/)\n\n---\n\n# Ginkgo\n\nGinkgo is a mature testing framework for Go designed to help you write expressive specs.  Ginkgo builds on top of Go's `testing` foundation and is complemented by the [Gomega](https://github.com/onsi/gomega) matcher library.  Together, Ginkgo and Gomega let you express the intent behind your specs clearly:\n\n```go\nimport (\n    . \"github.com/onsi/ginkgo/v2\"\n    . \"github.com/onsi/gomega\"\n    ...\n)\n\nvar _ = Describe(\"Checking books out of the library\", Label(\"library\"), func() {\n    var library *libraries.Library\n    var book *books.Book\n    var valjean *users.User\n    BeforeEach(func() {\n        library = libraries.NewClient()\n        book = &books.Book{\n            Title: \"Les Miserables\",\n            Author: \"Victor Hugo\",\n        }\n        valjean = users.NewUser(\"Jean Valjean\")\n    })\n\n    When(\"the library has the book in question\", func() {\n        BeforeEach(func(ctx SpecContext) {\n            Expect(library.Store(ctx, book)).To(Succeed())\n        })\n\n        Context(\"and the book is available\", func() {\n            It(\"lends it to the reader\", func(ctx SpecContext) {\n                Expect(valjean.Checkout(ctx, library, \"Les Miserables\")).To(Succeed())\n                Expect(valjean.Books()).To(ContainElement(book))\n                Expect(library.UserWithBook(ctx, book)).To(Equal(valjean))\n            }, SpecTimeout(time.Second * 5))\n        })\n\n        Context(\"but the book has already been checked out\", func() {\n            var javert *users.User\n            BeforeEach(func(ctx SpecContext) {\n                javert = users.NewUser(\"Javert\")\n                Expect(javert.Checkout(ctx, library, \"Les Miserables\")).To(Succeed())\n            })\n\n            It(\"tells the user\", func(ctx SpecContext) {\n                err := valjean.Checkout(ctx, library, \"Les Miserables\")\n                Expect(err).To(MatchError(\"Les Miserables is currently checked out\"))\n            }, SpecTimeout(time.Second * 5))\n\n            It(\"lets the user place a hold and get notified later\", func(ctx SpecContext) {\n                Expect(valjean.Hold(ctx, library, \"Les Miserables\")).To(Succeed())\n                Expect(valjean.Holds(ctx)).To(ContainElement(book))\n\n                By(\"when Javert returns the book\")\n                Expect(javert.Return(ctx, library, book)).To(Succeed())\n\n                By(\"it eventually informs Valjean\")\n                notification := \"Les Miserables is ready for pick up\"\n                Eventually(ctx, valjean.Notifications).Should(ContainElement(notification))\n\n                Expect(valjean.Checkout(ctx, library, \"Les Miserables\")).To(Succeed())\n                Expect(valjean.Books(ctx)).To(ContainElement(book))\n                Expect(valjean.Holds(ctx)).To(BeEmpty())\n            }, SpecTimeout(time.Second * 10))\n        })  \n    })\n\n    When(\"the library does not have the book in question\", func() {\n        It(\"tells the reader the book is unavailable\", func(ctx SpecContext) {\n            err := valjean.Checkout(ctx, library, \"Les Miserables\")\n            Expect(err).To(MatchError(\"Les Miserables is not in the library catalog\"))\n        }, SpecTimeout(time.Second * 5))\n    })\n})\n```\n\nJump to the [docs](https://onsi.github.io/ginkgo/) to learn more.  It's easy to [bootstrap](https://onsi.github.io/ginkgo/#bootstrapping-a-suite) and start writing your [first specs](https://onsi.github.io/ginkgo/#adding-specs-to-a-suite).\n\nIf you have a question, comment, bug report, feature request, etc. please open a [GitHub issue](https://github.com/onsi/ginkgo/issues/new), or visit the [Ginkgo Slack channel](https://app.slack.com/client/T029RQSE6/CQQ50BBNW).\n\n## Capabilities\n\nWhether writing basic unit specs, complex integration specs, or even performance specs - Ginkgo gives you an expressive Domain-Specific Language (DSL) that will be familiar to users coming from frameworks such as [Quick](https://github.com/Quick/Quick), [RSpec](https://rspec.info), [Jasmine](https://jasmine.github.io), and [Busted](https://lunarmodules.github.io/busted/).  This style of testing is sometimes referred to as \"Behavior-Driven Development\" (BDD) though Ginkgo's utility extends beyond acceptance-level testing.\n\nWith Ginkgo's DSL you can use nestable [`Describe`, `Context` and `When` container nodes](https://onsi.github.io/ginkgo/#organizing-specs-with-container-nodes) to help you organize your specs.  [`BeforeEach` and `AfterEach` setup nodes](https://onsi.github.io/ginkgo/#extracting-common-setup-beforeeach) for setup and cleanup.  [`It` and `Specify` subject nodes](https://onsi.github.io/ginkgo/#spec-subjects-it) that hold your assertions. [`BeforeSuite` and `AfterSuite` nodes](https://onsi.github.io/ginkgo/#suite-setup-and-cleanup-beforesuite-and-aftersuite) to prep for and cleanup after a suite... and [much more!](https://onsi.github.io/ginkgo/#writing-specs).\n\nAt runtime, Ginkgo can run your specs in reproducibly [random order](https://onsi.github.io/ginkgo/#spec-randomization) and has sophisticated support for [spec parallelization](https://onsi.github.io/ginkgo/#spec-parallelization).  In fact, running specs in parallel is as easy as\n\n```bash\nginkgo -p\n```\n\nBy following [established patterns for writing parallel specs](https://onsi.github.io/ginkgo/#patterns-for-parallel-integration-specs) you can build even large, complex integration suites that parallelize cleanly and run performantly.  And you don't have to worry about your spec suite hanging or leaving a mess behind - Ginkgo provides a per-node `context.Context` and the capability to interrupt the spec after a set period of time - and then clean up.\n\nAs your suites grow Ginkgo helps you keep your specs organized with [labels](https://onsi.github.io/ginkgo/#spec-labels) and lets you easily run [subsets of specs](https://onsi.github.io/ginkgo/#filtering-specs), either [programmatically](https://onsi.github.io/ginkgo/#focused-specs) or on the [command line](https://onsi.github.io/ginkgo/#combining-filters).  And Ginkgo's reporting infrastructure generates machine-readable output in a [variety of formats](https://onsi.github.io/ginkgo/#generating-machine-readable-reports) _and_ allows you to build your own [custom reporting infrastructure](https://onsi.github.io/ginkgo/#generating-reports-programmatically).\n\nGinkgo ships with `ginkgo`, a [command line tool](https://onsi.github.io/ginkgo/#ginkgo-cli-overview) with support for generating, running, filtering, and profiling Ginkgo suites.  You can even have Ginkgo automatically run your specs when it detects a change with `ginkgo watch`, enabling rapid feedback loops during test-driven development.\n\nAnd that's just Ginkgo!  [Gomega](https://onsi.github.io/gomega/) brings a rich, mature, family of [assertions and matchers](https://onsi.github.io/gomega/#provided-matchers) to your suites.  With Gomega you can easily mix [synchronous and asynchronous assertions](https://onsi.github.io/ginkgo/#patterns-for-asynchronous-testing) in your specs.  You can even build your own set of expressive domain-specific matchers quickly and easily by composing Gomega's [existing building blocks](https://onsi.github.io/ginkgo/#building-custom-matchers).\n\nHappy Testing!\n\n## License\n\nGinkgo is MIT-Licensed\n\n## Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md)\n\n## Sponsors\n\nSponsors commit to a [sponsorship](https://github.com/sponsors/onsi) for a year.  If you're an organization that makes use of Ginkgo please consider becoming a sponsor!\n\n<p style=\"font-size:21px; color:black;\">Browser testing via \n    <a href=\"https://www.testmu.ai/\" target=\"_blank\">\n        <img src=\"https://www.testmu.ai/blue-logo.png\" style=\"vertical-align: middle;\" width=\"250\" height=\"45\" />\n    </a>\n</p>\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/RELEASING.md",
    "content": "A Ginkgo release is a tagged git sha and a GitHub release.  To cut a release:\n\n1. Ensure CHANGELOG.md is up to date.\n  - Use \n    ```bash\n    LAST_VERSION=$(git tag --sort=version:refname | tail -n1)\n    CHANGES=$(git log --pretty=format:'- %s [%h]' HEAD...$LAST_VERSION)\n    echo -e \"## NEXT\\n\\n$CHANGES\\n\\n### Features\\n\\n### Fixes\\n\\n### Maintenance\\n\\n$(cat CHANGELOG.md)\" > CHANGELOG.md\n    ```\n   to update the changelog\n  - Categorize the changes into\n    - Breaking Changes (requires a major version)\n    - New Features (minor version)\n    - Fixes (fix version)\n    - Maintenance (which in general should not be mentioned in `CHANGELOG.md` as they have no user impact)\n1. Update `VERSION` in `types/version.go`\n1. Commit, push, and release:\n  ```\n  git commit -m \"vM.m.p\"\n  git push\n  gh release create \"vM.m.p\"\n  git fetch --tags origin master\n  ```"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/config/deprecated.go",
    "content": "package config\n\n// GinkgoConfigType has been deprecated and its equivalent now lives in\n// the types package.  You can no longer access Ginkgo configuration from the config\n// package.  Instead use the DSL's GinkgoConfiguration() function to get copies of the\n// current configuration\n//\n// GinkgoConfigType is still here so custom V1 reporters do not result in a compilation error\n// It will be removed in a future minor release of Ginkgo\ntype GinkgoConfigType = DeprecatedGinkgoConfigType\ntype DeprecatedGinkgoConfigType struct {\n\tRandomSeed         int64\n\tRandomizeAllSpecs  bool\n\tRegexScansFilePath bool\n\tFocusStrings       []string\n\tSkipStrings        []string\n\tSkipMeasurements   bool\n\tFailOnPending      bool\n\tFailFast           bool\n\tFlakeAttempts      int\n\tEmitSpecProgress   bool\n\tDryRun             bool\n\tDebugParallel      bool\n\n\tParallelNode  int\n\tParallelTotal int\n\tSyncHost      string\n\tStreamHost    string\n}\n\n// DefaultReporterConfigType has been deprecated and its equivalent now lives in\n// the types package.  You can no longer access Ginkgo configuration from the config\n// package.  Instead use the DSL's GinkgoConfiguration() function to get copies of the\n// current configuration\n//\n// DefaultReporterConfigType is still here so custom V1 reporters do not result in a compilation error\n// It will be removed in a future minor release of Ginkgo\ntype DefaultReporterConfigType = DeprecatedDefaultReporterConfigType\ntype DeprecatedDefaultReporterConfigType struct {\n\tNoColor           bool\n\tSlowSpecThreshold float64\n\tNoisyPendings     bool\n\tNoisySkippings    bool\n\tSuccinct          bool\n\tVerbose           bool\n\tFullTrace         bool\n\tReportPassed      bool\n\tReportFile        string\n}\n\n// Sadly there is no way to gracefully deprecate access to these global config variables.\n// Users who need access to Ginkgo's configuration should use the DSL's GinkgoConfiguration() method\n// These new unwieldy type names exist to give users a hint when they try to compile and the compilation fails\ntype GinkgoConfigIsNoLongerAccessibleFromTheConfigPackageUseTheDSLsGinkgoConfigurationFunctionInstead struct{}\n\n// Sadly there is no way to gracefully deprecate access to these global config variables.\n// Users who need access to Ginkgo's configuration should use the DSL's GinkgoConfiguration() method\n// These new unwieldy type names exist to give users a hint when they try to compile and the compilation fails\nvar GinkgoConfig = GinkgoConfigIsNoLongerAccessibleFromTheConfigPackageUseTheDSLsGinkgoConfigurationFunctionInstead{}\n\n// Sadly there is no way to gracefully deprecate access to these global config variables.\n// Users who need access to Ginkgo's configuration should use the DSL's GinkgoConfiguration() method\n// These new unwieldy type names exist to give users a hint when they try to compile and the compilation fails\ntype DefaultReporterConfigIsNoLongerAccessibleFromTheConfigPackageUseTheDSLsGinkgoConfigurationFunctionInstead struct{}\n\n// Sadly there is no way to gracefully deprecate access to these global config variables.\n// Users who need access to Ginkgo's configuration should use the DSL's GinkgoConfiguration() method\n// These new unwieldy type names exist to give users a hint when they try to compile and the compilation fails\nvar DefaultReporterConfig = DefaultReporterConfigIsNoLongerAccessibleFromTheConfigPackageUseTheDSLsGinkgoConfigurationFunctionInstead{}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/core_dsl.go",
    "content": "/*\nGinkgo is a testing framework for Go designed to help you write expressive tests.\nhttps://github.com/onsi/ginkgo\nMIT-Licensed\n\nThe godoc documentation outlines Ginkgo's API.  Since Ginkgo is a Domain-Specific Language it is important to\nbuild a mental model for Ginkgo - the narrative documentation at https://onsi.github.io/ginkgo/ is designed to help you do that.\nYou should start there - even a brief skim will be helpful.  At minimum you should skim through the https://onsi.github.io/ginkgo/#getting-started chapter.\n\nGinkgo's is best paired with the Gomega matcher library: https://github.com/onsi/gomega\n\nYou can run Ginkgo specs with go test - however we recommend using the ginkgo cli.  It enables functionality\nthat go test does not (especially running suites in parallel).  You can learn more at https://onsi.github.io/ginkgo/#ginkgo-cli-overview\nor by running 'ginkgo help'.\n*/\npackage ginkgo\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"slices\"\n\t\"strings\"\n\n\t\"github.com/go-logr/logr\"\n\t\"github.com/onsi/ginkgo/v2/formatter\"\n\t\"github.com/onsi/ginkgo/v2/internal\"\n\t\"github.com/onsi/ginkgo/v2/internal/global\"\n\t\"github.com/onsi/ginkgo/v2/internal/interrupt_handler\"\n\t\"github.com/onsi/ginkgo/v2/internal/parallel_support\"\n\t\"github.com/onsi/ginkgo/v2/reporters\"\n\t\"github.com/onsi/ginkgo/v2/types\"\n)\n\nconst GINKGO_VERSION = types.VERSION\n\nvar flagSet types.GinkgoFlagSet\nvar deprecationTracker = types.NewDeprecationTracker()\nvar suiteConfig = types.NewDefaultSuiteConfig()\nvar reporterConfig = types.NewDefaultReporterConfig()\nvar suiteDidRun = false\nvar outputInterceptor internal.OutputInterceptor\nvar client parallel_support.Client\n\nfunc init() {\n\tvar err error\n\tflagSet, err = types.BuildTestSuiteFlagSet(&suiteConfig, &reporterConfig)\n\texitIfErr(err)\n\twriter := internal.NewWriter(os.Stdout)\n\tGinkgoWriter = writer\n\tGinkgoLogr = internal.GinkgoLogrFunc(writer)\n}\n\nfunc exitIfErr(err error) {\n\tif err != nil {\n\t\tif outputInterceptor != nil {\n\t\t\toutputInterceptor.Shutdown()\n\t\t}\n\t\tif client != nil {\n\t\t\tclient.Close()\n\t\t}\n\t\tfmt.Fprintln(formatter.ColorableStdErr, err.Error())\n\t\tos.Exit(1)\n\t}\n}\n\nfunc exitIfErrors(errors []error) {\n\tif len(errors) > 0 {\n\t\tif outputInterceptor != nil {\n\t\t\toutputInterceptor.Shutdown()\n\t\t}\n\t\tif client != nil {\n\t\t\tclient.Close()\n\t\t}\n\t\tfor _, err := range errors {\n\t\t\tfmt.Fprintln(formatter.ColorableStdErr, err.Error())\n\t\t}\n\t\tos.Exit(1)\n\t}\n}\n\n// The interface implemented by GinkgoWriter\ntype GinkgoWriterInterface interface {\n\tio.Writer\n\n\tPrint(a ...any)\n\tPrintf(format string, a ...any)\n\tPrintln(a ...any)\n\n\tTeeTo(writer io.Writer)\n\tClearTeeWriters()\n}\n\n/*\nSpecContext is the context object passed into nodes that are subject to a timeout or need to be notified of an interrupt.  It implements the standard context.Context interface but also contains additional helpers to provide an extensibility point for Ginkgo.  (As an example, Gomega's Eventually can use the methods defined on SpecContext to provide deeper integration with Ginkgo).\n\nYou can do anything with SpecContext that you do with a typical context.Context including wrapping it with any of the context.With* methods.\n\nGinkgo will cancel the SpecContext when a node is interrupted (e.g. by the user sending an interrupt signal) or when a node has exceeded its allowed run-time.  Note, however, that even in cases where a node has a deadline, SpecContext will not return a deadline via .Deadline().  This is because Ginkgo does not use a WithDeadline() context to model node deadlines as Ginkgo needs control over the precise timing of the context cancellation to ensure it can provide an accurate progress report at the moment of cancellation.\n*/\ntype SpecContext = internal.SpecContext\n\n/*\nGinkgoWriter implements a GinkgoWriterInterface and io.Writer\n\nWhen running in verbose mode (ginkgo -v) any writes to GinkgoWriter will be immediately printed\nto stdout.  Otherwise, GinkgoWriter will buffer any writes produced during the current test and flush them to screen\nonly if the current test fails.\n\nGinkgoWriter also provides convenience Print, Printf and Println methods and allows you to tee to a custom writer via GinkgoWriter.TeeTo(writer).\nWrites to GinkgoWriter are immediately sent to any registered TeeTo() writers.  You can unregister all TeeTo() Writers with GinkgoWriter.ClearTeeWriters()\n\nYou can learn more at https://onsi.github.io/ginkgo/#logging-output\n*/\nvar GinkgoWriter GinkgoWriterInterface\n\n/*\nGinkgoLogr is a logr.Logger that writes to GinkgoWriter\n*/\nvar GinkgoLogr logr.Logger\n\n// The interface by which Ginkgo receives *testing.T\ntype GinkgoTestingT interface {\n\tFail()\n}\n\n/*\nGinkgoConfiguration returns the configuration of the current suite.\n\nThe first return value is the SuiteConfig which controls aspects of how the suite runs,\nthe second return value is the ReporterConfig which controls aspects of how Ginkgo's default\nreporter emits output.\n\nMutating the returned configurations has no effect.  To reconfigure Ginkgo programmatically you need\nto pass in your mutated copies into RunSpecs().\n\nYou can learn more at https://onsi.github.io/ginkgo/#overriding-ginkgos-command-line-configuration-in-the-suite\n*/\nfunc GinkgoConfiguration() (types.SuiteConfig, types.ReporterConfig) {\n\treturn suiteConfig, reporterConfig\n}\n\n/*\nGinkgoRandomSeed returns the seed used to randomize spec execution order.  It is\nuseful for seeding your own pseudorandom number generators to ensure\nconsistent executions from run to run, where your tests contain variability (for\nexample, when selecting random spec data).\n\nYou can learn more at https://onsi.github.io/ginkgo/#spec-randomization\n*/\nfunc GinkgoRandomSeed() int64 {\n\treturn suiteConfig.RandomSeed\n}\n\n/*\nGinkgoParallelProcess returns the parallel process number for the current ginkgo process\nThe process number is 1-indexed.  You can use GinkgoParallelProcess() to shard access to shared\nresources across your suites.  You can learn more about patterns for sharding at https://onsi.github.io/ginkgo/#patterns-for-parallel-integration-specs\n\nFor more on how specs are parallelized in Ginkgo, see http://onsi.github.io/ginkgo/#spec-parallelization\n*/\nfunc GinkgoParallelProcess() int {\n\treturn suiteConfig.ParallelProcess\n}\n\n/*\nGinkgoHelper marks the function it's called in as a test helper.  When a failure occurs inside a helper function, Ginkgo will skip the helper when analyzing the stack trace to identify where the failure occurred.\n\nThis is an alternative, simpler, mechanism to passing in a skip offset when calling Fail or using Gomega.\n*/\nfunc GinkgoHelper() {\n\ttypes.MarkAsHelper(1)\n}\n\n/*\nGinkgoLabelFilter() returns the label filter configured for this suite via `--label-filter`.\n\nYou can use this to manually check if a set of labels would satisfy the filter via:\n\n\tif (Label(\"cat\", \"dog\").MatchesLabelFilter(GinkgoLabelFilter())) {\n\t\t//...\n\t}\n*/\nfunc GinkgoLabelFilter() string {\n\tsuiteConfig, _ := GinkgoConfiguration()\n\treturn suiteConfig.LabelFilter\n}\n\n/*\nGinkgoSemVerFilter() returns the semantic version filter configured for this suite via `--sem-ver-filter`.\n\nYou can use this to manually check if a set of semantic version constraints would satisfy the filter via:\n\n\tif (SemVerConstraint(\"> 2.6.0\", \"< 2.8.0\").MatchesSemVerFilter(GinkgoSemVerFilter())) {\n\t\t//...\n\t}\n*/\nfunc GinkgoSemVerFilter() string {\n\tsuiteConfig, _ := GinkgoConfiguration()\n\treturn suiteConfig.SemVerFilter\n}\n\n/*\nPauseOutputInterception() pauses Ginkgo's output interception.  This is only relevant\nwhen running in parallel and output to stdout/stderr is being intercepted.  You generally\ndon't need to call this function - however there are cases when Ginkgo's output interception\nmechanisms can interfere with external processes launched by the test process.\n\nIn particular, if an external process is launched that has cmd.Stdout/cmd.Stderr set to os.Stdout/os.Stderr\nthen Ginkgo's output interceptor will hang.  To circumvent this, set cmd.Stdout/cmd.Stderr to GinkgoWriter.\nIf, for some reason, you aren't able to do that, you can PauseOutputInterception() before starting the process\nthen ResumeOutputInterception() after starting it.\n\nNote that PauseOutputInterception() does not cause stdout writes to print to the console -\nthis simply stops intercepting and storing stdout writes to an internal buffer.\n*/\nfunc PauseOutputInterception() {\n\tif outputInterceptor == nil {\n\t\treturn\n\t}\n\toutputInterceptor.PauseIntercepting()\n}\n\n// ResumeOutputInterception() - see docs for PauseOutputInterception()\nfunc ResumeOutputInterception() {\n\tif outputInterceptor == nil {\n\t\treturn\n\t}\n\toutputInterceptor.ResumeIntercepting()\n}\n\n/*\nRunSpecs is the entry point for the Ginkgo spec runner.\n\nYou must call this within a Golang testing TestX(t *testing.T) function.\nIf you bootstrapped your suite with \"ginkgo bootstrap\" this is already\ndone for you.\n\nGinkgo is typically configured via command-line flags.  This configuration\ncan be overridden, however, and passed into RunSpecs as optional arguments:\n\n\tfunc TestMySuite(t *testing.T)  {\n\t\tRegisterFailHandler(gomega.Fail)\n\t\t// fetch the current config\n\t\tsuiteConfig, reporterConfig := GinkgoConfiguration()\n\t\t// adjust it\n\t\tsuiteConfig.SkipStrings = []string{\"NEVER-RUN\"}\n\t\treporterConfig.FullTrace = true\n\t\t// pass it in to RunSpecs\n\t\tRunSpecs(t, \"My Suite\", suiteConfig, reporterConfig)\n\t}\n\nNote that some configuration changes can lead to undefined behavior.  For example,\nyou should not change ParallelProcess or ParallelTotal as the Ginkgo CLI is responsible\nfor setting these and orchestrating parallel specs across the parallel processes.  See http://onsi.github.io/ginkgo/#spec-parallelization\nfor more on how specs are parallelized in Ginkgo.\n\nYou can also pass suite-level Label() decorators to RunSpecs.  The passed-in labels will apply to all specs in the suite.\n*/\nfunc RunSpecs(t GinkgoTestingT, description string, args ...any) bool {\n\tif suiteDidRun {\n\t\texitIfErr(types.GinkgoErrors.RerunningSuite())\n\t}\n\tsuiteDidRun = true\n\terr := global.PushClone()\n\tif err != nil {\n\t\texitIfErr(err)\n\t}\n\tdefer global.PopClone()\n\n\tsuiteLabels, suiteSemVerConstraints, suiteComponentSemVerConstraints, suiteAroundNodes := extractSuiteConfiguration(args)\n\n\tvar reporter reporters.Reporter\n\tif suiteConfig.ParallelTotal == 1 {\n\t\treporter = reporters.NewDefaultReporter(reporterConfig, formatter.ColorableStdOut)\n\t\toutputInterceptor = internal.NoopOutputInterceptor{}\n\t\tclient = nil\n\t} else {\n\t\treporter = reporters.NoopReporter{}\n\t\tswitch strings.ToLower(suiteConfig.OutputInterceptorMode) {\n\t\tcase \"swap\":\n\t\t\toutputInterceptor = internal.NewOSGlobalReassigningOutputInterceptor()\n\t\tcase \"none\":\n\t\t\toutputInterceptor = internal.NoopOutputInterceptor{}\n\t\tdefault:\n\t\t\toutputInterceptor = internal.NewOutputInterceptor()\n\t\t}\n\t\tclient = parallel_support.NewClient(suiteConfig.ParallelHost)\n\t\tif !client.Connect() {\n\t\t\tclient = nil\n\t\t\texitIfErr(types.GinkgoErrors.UnreachableParallelHost(suiteConfig.ParallelHost))\n\t\t}\n\t\tdefer client.Close()\n\t}\n\n\twriter := GinkgoWriter.(*internal.Writer)\n\tif reporterConfig.Verbosity().GTE(types.VerbosityLevelVerbose) && suiteConfig.ParallelTotal == 1 {\n\t\twriter.SetMode(internal.WriterModeStreamAndBuffer)\n\t} else {\n\t\twriter.SetMode(internal.WriterModeBufferOnly)\n\t}\n\n\tif reporterConfig.WillGenerateReport() {\n\t\tregisterReportAfterSuiteNodeForAutogeneratedReports(reporterConfig)\n\t}\n\n\terr = global.Suite.BuildTree()\n\texitIfErr(err)\n\tsuitePath, err := getwd()\n\texitIfErr(err)\n\tsuitePath, err = filepath.Abs(suitePath)\n\texitIfErr(err)\n\n\tpassed, hasFocusedTests := global.Suite.Run(description, suiteLabels, suiteSemVerConstraints, suiteComponentSemVerConstraints, suiteAroundNodes, suitePath, global.Failer, reporter, writer, outputInterceptor, interrupt_handler.NewInterruptHandler(client), client, internal.RegisterForProgressSignal, suiteConfig)\n\toutputInterceptor.Shutdown()\n\n\tflagSet.ValidateDeprecations(deprecationTracker)\n\tif deprecationTracker.DidTrackDeprecations() {\n\t\tfmt.Fprintln(formatter.ColorableStdErr, deprecationTracker.DeprecationsReport())\n\t}\n\n\tif !passed {\n\t\tt.Fail()\n\t}\n\n\tif passed && hasFocusedTests && strings.TrimSpace(os.Getenv(\"GINKGO_EDITOR_INTEGRATION\")) == \"\" {\n\t\tfmt.Println(\"PASS | FOCUSED\")\n\t\tos.Exit(types.GINKGO_FOCUS_EXIT_CODE)\n\t}\n\treturn passed\n}\n\nfunc extractSuiteConfiguration(args []any) (Labels, SemVerConstraints, ComponentSemVerConstraints, types.AroundNodes) {\n\tsuiteLabels := Labels{}\n\tsuiteSemVerConstraints := SemVerConstraints{}\n\tsuiteComponentSemVerConstraints := ComponentSemVerConstraints{}\n\taroundNodes := types.AroundNodes{}\n\tconfigErrors := []error{}\n\tfor _, arg := range args {\n\t\tswitch arg := arg.(type) {\n\t\tcase types.SuiteConfig:\n\t\t\tsuiteConfig = arg\n\t\tcase types.ReporterConfig:\n\t\t\treporterConfig = arg\n\t\tcase Labels:\n\t\t\tsuiteLabels = append(suiteLabels, arg...)\n\t\tcase SemVerConstraints:\n\t\t\tsuiteSemVerConstraints = append(suiteSemVerConstraints, arg...)\n\t\tcase ComponentSemVerConstraints:\n\t\t\tfor component, constraints := range arg {\n\t\t\t\tsuiteComponentSemVerConstraints[component] = append(suiteComponentSemVerConstraints[component], constraints...)\n\t\t\t\tsuiteComponentSemVerConstraints[component] = slices.Compact(suiteComponentSemVerConstraints[component])\n\t\t\t}\n\t\tcase types.AroundNodeDecorator:\n\t\t\taroundNodes = append(aroundNodes, arg)\n\t\tdefault:\n\t\t\tconfigErrors = append(configErrors, types.GinkgoErrors.UnknownTypePassedToRunSpecs(arg))\n\t\t}\n\t}\n\texitIfErrors(configErrors)\n\n\tconfigErrors = types.VetConfig(flagSet, suiteConfig, reporterConfig)\n\tif len(configErrors) > 0 {\n\t\tfmt.Fprint(formatter.ColorableStdErr, formatter.F(\"{{red}}Ginkgo detected configuration issues:{{/}}\\n\"))\n\t\tfor _, err := range configErrors {\n\t\t\tfmt.Fprint(formatter.ColorableStdErr, err.Error())\n\t\t}\n\t\tos.Exit(1)\n\t}\n\n\treturn suiteLabels, suiteSemVerConstraints, suiteComponentSemVerConstraints, aroundNodes\n}\n\nfunc getwd() (string, error) {\n\tif !strings.EqualFold(os.Getenv(\"GINKGO_PRESERVE_CACHE\"), \"true\") {\n\t\t// Getwd calls os.Getenv(\"PWD\"), which breaks test caching if the cache\n\t\t// is shared between two different directories with the same test code.\n\t\treturn os.Getwd()\n\t}\n\treturn \"\", nil\n}\n\n/*\nPreviewSpecs walks the testing tree and produces a report without actually invoking the specs.\nSee http://onsi.github.io/ginkgo/#previewing-specs for more information.\n*/\nfunc PreviewSpecs(description string, args ...any) Report {\n\terr := global.PushClone()\n\tif err != nil {\n\t\texitIfErr(err)\n\t}\n\tdefer global.PopClone()\n\n\tsuiteLabels, suiteSemVerConstraints, suiteComponentSemVerConstraints, suiteAroundNodes := extractSuiteConfiguration(args)\n\tpriorDryRun, priorParallelTotal, priorParallelProcess := suiteConfig.DryRun, suiteConfig.ParallelTotal, suiteConfig.ParallelProcess\n\tsuiteConfig.DryRun, suiteConfig.ParallelTotal, suiteConfig.ParallelProcess = true, 1, 1\n\tdefer func() {\n\t\tsuiteConfig.DryRun, suiteConfig.ParallelTotal, suiteConfig.ParallelProcess = priorDryRun, priorParallelTotal, priorParallelProcess\n\t}()\n\treporter := reporters.NoopReporter{}\n\toutputInterceptor = internal.NoopOutputInterceptor{}\n\tclient = nil\n\twriter := GinkgoWriter.(*internal.Writer)\n\n\terr = global.Suite.BuildTree()\n\texitIfErr(err)\n\tsuitePath, err := getwd()\n\texitIfErr(err)\n\tsuitePath, err = filepath.Abs(suitePath)\n\texitIfErr(err)\n\n\tglobal.Suite.Run(description, suiteLabels, suiteSemVerConstraints, suiteComponentSemVerConstraints, suiteAroundNodes, suitePath, global.Failer, reporter, writer, outputInterceptor, interrupt_handler.NewInterruptHandler(client), client, internal.RegisterForProgressSignal, suiteConfig)\n\n\treturn global.Suite.GetPreviewReport()\n}\n\n/*\nSkip instructs Ginkgo to skip the current spec\n\nYou can call Skip in any Setup or Subject node closure.\n\nFor more on how to filter specs in Ginkgo see https://onsi.github.io/ginkgo/#filtering-specs\n*/\nfunc Skip(message string, callerSkip ...int) {\n\tskip := 0\n\tif len(callerSkip) > 0 {\n\t\tskip = callerSkip[0]\n\t}\n\tcl := types.NewCodeLocationWithStackTrace(skip + 1)\n\tglobal.Failer.Skip(message, cl)\n\tpanic(types.GinkgoErrors.UncaughtGinkgoPanic(cl))\n}\n\n/*\nFail notifies Ginkgo that the current spec has failed. (Gomega will call Fail for you automatically when an assertion fails.)\n\nUnder the hood, Fail panics to end execution of the current spec.  Ginkgo will catch this panic and proceed with\nthe subsequent spec.  If you call Fail, or make an assertion, within a goroutine launched by your spec you must\nadd defer GinkgoRecover() to the goroutine to catch the panic emitted by Fail.\n\nYou can call Fail in any Setup or Subject node closure.\n\nYou can learn more about how Ginkgo manages failures here: https://onsi.github.io/ginkgo/#mental-model-how-ginkgo-handles-failure\n*/\nfunc Fail(message string, callerSkip ...int) {\n\tskip := 0\n\tif len(callerSkip) > 0 {\n\t\tskip = callerSkip[0]\n\t}\n\n\tcl := types.NewCodeLocationWithStackTrace(skip + 1)\n\tglobal.Failer.Fail(message, cl)\n\tpanic(types.GinkgoErrors.UncaughtGinkgoPanic(cl))\n}\n\n/*\nAbortSuite instructs Ginkgo to fail the current spec and skip all subsequent specs, thereby aborting the suite.\n\nYou can call AbortSuite in any Setup or Subject node closure.\n\nYou can learn more about how Ginkgo handles suite interruptions here: https://onsi.github.io/ginkgo/#interrupting-aborting-and-timing-out-suites\n*/\nfunc AbortSuite(message string, callerSkip ...int) {\n\tskip := 0\n\tif len(callerSkip) > 0 {\n\t\tskip = callerSkip[0]\n\t}\n\n\tcl := types.NewCodeLocationWithStackTrace(skip + 1)\n\tglobal.Failer.AbortSuite(message, cl)\n\tpanic(types.GinkgoErrors.UncaughtGinkgoPanic(cl))\n}\n\n/*\nignorablePanic is used by Gomega to signal to GinkgoRecover that Goemga is handling\nthe error associated with this panic.  It i used when Eventually/Consistently are passed a func(g Gomega) and the resulting function launches a goroutines that makes a failed assertion.  That failed assertion is registered by Gomega and then panics.  Ordinarily the panic is captured by Gomega.  In the case of a goroutine Gomega can't capture the panic - so we piggy back on GinkgoRecover so users have a single defer GinkgoRecover() pattern to follow.  To do that we need to tell Ginkgo to ignore this panic and not register it as a panic on the global Failer.\n*/\ntype ignorablePanic interface{ GinkgoRecoverShouldIgnoreThisPanic() }\n\n/*\nGinkgoRecover should be deferred at the top of any spawned goroutine that (may) call `Fail`\nSince Gomega assertions call fail, you should throw a `defer GinkgoRecover()` at the top of any goroutine that\ncalls out to Gomega\n\nHere's why: Ginkgo's `Fail` method records the failure and then panics to prevent\nfurther assertions from running.  This panic must be recovered.  Normally, Ginkgo recovers the panic for you,\nhowever if a panic originates on a goroutine *launched* from one of your specs there's no\nway for Ginkgo to rescue the panic.  To do this, you must remember to `defer GinkgoRecover()` at the top of such a goroutine.\n\nYou can learn more about how Ginkgo manages failures here: https://onsi.github.io/ginkgo/#mental-model-how-ginkgo-handles-failure\n*/\nfunc GinkgoRecover() {\n\te := recover()\n\tif e != nil {\n\t\tif _, ok := e.(ignorablePanic); ok {\n\t\t\treturn\n\t\t}\n\t\tglobal.Failer.Panic(types.NewCodeLocationWithStackTrace(1), e)\n\t}\n}\n\n// pushNode is used by the various test construction DSL methods to push nodes onto the suite\n// it handles returned errors, emits a detailed error message to help the user learn what they may have done wrong, then exits\nfunc pushNode(node internal.Node, errors []error) bool {\n\texitIfErrors(errors)\n\texitIfErr(global.Suite.PushNode(node))\n\treturn true\n}\n\n// NodeArgsTransformer is a hook which is called by the test construction DSL methods\n// before creating the new node. If it returns any error, the test suite\n// prints those errors and exits. The text and arguments can be modified,\n// which includes directly changing the args slice that is passed in.\n// Arguments have been flattened already, i.e. none of the entries in args is another []any.\n// The result may be nested.\n//\n// The node type is provided for information and remains the same.\n//\n// The offset is valid for calling NewLocation directly in the\n// implementation of TransformNodeArgs to find the location where\n// the Ginkgo DSL function is called. An additional offset supplied\n// by the caller via args is already included.\n//\n// A NodeArgsTransformer can be registered with AddTreeConstructionNodeArgsTransformer.\ntype NodeArgsTransformer func(nodeType types.NodeType, offset Offset, text string, args []any) (string, []any, []error)\n\n// AddTreeConstructionNodeArgsTransformer registers a NodeArgsTransformer.\n// Only nodes which get created after registering a NodeArgsTransformer\n// are transformed by it. The returned function can be called to\n// unregister the transformer.\n//\n// Both may only be called during the construction phase.\n//\n// If there is more than one registered transformer, then the most\n// recently added ones get called first.\nfunc AddTreeConstructionNodeArgsTransformer(transformer NodeArgsTransformer) func() {\n\t// This conversion could be avoided with a type alias, but type aliases make\n\t// developer documentation less useful.\n\treturn internal.AddTreeConstructionNodeArgsTransformer(internal.NodeArgsTransformer(transformer))\n}\n\n/*\nDescribe nodes are Container nodes that allow you to organize your specs.  A Describe node's closure can contain any number of\nSetup nodes (e.g. BeforeEach, AfterEach, JustBeforeEach), and Subject nodes (i.e. It).\n\nContext and When nodes are aliases for Describe - use whichever gives your suite a better narrative flow.  It is idomatic\nto Describe the behavior of an object or function and, within that Describe, outline a number of Contexts and Whens.\n\nYou can learn more at https://onsi.github.io/ginkgo/#organizing-specs-with-container-nodes\nIn addition, container nodes can be decorated with a variety of decorators.  You can learn more here: https://onsi.github.io/ginkgo/#decorator-reference\n*/\nfunc Describe(text string, args ...any) bool {\n\treturn pushNode(internal.NewNode(internal.TransformNewNodeArgs(exitIfErrors, deprecationTracker, types.NodeTypeContainer, text, args...)))\n}\n\n/*\nFDescribe focuses specs within the Describe block.\n*/\nfunc FDescribe(text string, args ...any) bool {\n\targs = append(args, internal.Focus)\n\treturn pushNode(internal.NewNode(internal.TransformNewNodeArgs(exitIfErrors, deprecationTracker, types.NodeTypeContainer, text, args...)))\n}\n\n/*\nPDescribe marks specs within the Describe block as pending.\n*/\nfunc PDescribe(text string, args ...any) bool {\n\targs = append(args, internal.Pending)\n\treturn pushNode(internal.NewNode(internal.TransformNewNodeArgs(exitIfErrors, deprecationTracker, types.NodeTypeContainer, text, args...)))\n}\n\n/*\nXDescribe marks specs within the Describe block as pending.\n\nXDescribe is an alias for PDescribe\n*/\nvar XDescribe = PDescribe\n\n/* Context is an alias for Describe - it generates the exact same kind of Container node */\nvar Context, FContext, PContext, XContext = Describe, FDescribe, PDescribe, XDescribe\n\n/* When is an alias for Describe - it generates the exact same kind of Container node with \"when \" as prefix for the text. */\nfunc When(text string, args ...any) bool {\n\treturn pushNode(internal.NewNode(internal.TransformNewNodeArgs(exitIfErrors, deprecationTracker, types.NodeTypeContainer, \"when \"+text, args...)))\n}\n\n/* When is an alias for Describe - it generates the exact same kind of Container node with \"when \" as prefix for the text. */\nfunc FWhen(text string, args ...any) bool {\n\targs = append(args, internal.Focus)\n\treturn pushNode(internal.NewNode(internal.TransformNewNodeArgs(exitIfErrors, deprecationTracker, types.NodeTypeContainer, \"when \"+text, args...)))\n}\n\n/* When is an alias for Describe - it generates the exact same kind of Container node */\nfunc PWhen(text string, args ...any) bool {\n\targs = append(args, internal.Pending)\n\treturn pushNode(internal.NewNode(internal.TransformNewNodeArgs(exitIfErrors, deprecationTracker, types.NodeTypeContainer, \"when \"+text, args...)))\n}\n\nvar XWhen = PWhen\n\n/*\nIt nodes are Subject nodes that contain your spec code and assertions.\n\nEach It node corresponds to an individual Ginkgo spec.  You cannot nest any other Ginkgo nodes within an It node's closure.\n\nYou can pass It nodes bare functions (func() {}) or functions that receive a SpecContext or context.Context: func(ctx SpecContext) {} and func (ctx context.Context) {}. If the function takes a context then the It is deemed interruptible and Ginkgo will cancel the context in the event of a timeout (configured via the SpecTimeout() or NodeTimeout() decorators) or of an interrupt signal.\n\nYou can learn more at https://onsi.github.io/ginkgo/#spec-subjects-it\nIn addition, subject nodes can be decorated with a variety of decorators.  You can learn more here: https://onsi.github.io/ginkgo/#decorator-reference\n*/\nfunc It(text string, args ...any) bool {\n\treturn pushNode(internal.NewNode(internal.TransformNewNodeArgs(exitIfErrors, deprecationTracker, types.NodeTypeIt, text, args...)))\n}\n\n/*\nFIt allows you to focus an individual It.\n*/\nfunc FIt(text string, args ...any) bool {\n\targs = append(args, internal.Focus)\n\treturn pushNode(internal.NewNode(internal.TransformNewNodeArgs(exitIfErrors, deprecationTracker, types.NodeTypeIt, text, args...)))\n}\n\n/*\nPIt allows you to mark an individual It as pending.\n*/\nfunc PIt(text string, args ...any) bool {\n\targs = append(args, internal.Pending)\n\treturn pushNode(internal.NewNode(internal.TransformNewNodeArgs(exitIfErrors, deprecationTracker, types.NodeTypeIt, text, args...)))\n}\n\n/*\nXIt allows you to mark an individual It as pending.\n\nXIt is an alias for PIt\n*/\nvar XIt = PIt\n\n/*\nSpecify is an alias for It - it can allow for more natural wording in some context.\n*/\nvar Specify, FSpecify, PSpecify, XSpecify = It, FIt, PIt, XIt\n\n/*\nBy allows you to better document complex Specs.\n\nGenerally you should try to keep your Its short and to the point.  This is not always possible, however,\nespecially in the context of integration tests that capture complex or lengthy workflows.\n\nBy allows you to document such flows.  By may be called within a Setup or Subject node (It, BeforeEach, etc...)\nand will simply log the passed in text to the GinkgoWriter.  If By is handed a function it will immediately run the function.\n\nBy will also generate and attach a ReportEntry to the spec.  This will ensure that By annotations appear in Ginkgo's machine-readable reports.\n\nNote that By does not generate a new Ginkgo node - rather it is simply syntactic sugar around GinkgoWriter and AddReportEntry\nYou can learn more about By here: https://onsi.github.io/ginkgo/#documenting-complex-specs-by\n*/\nfunc By(text string, callback ...func()) {\n\texitIfErr(global.Suite.By(text, callback...))\n}\n\n/*\nBeforeSuite nodes are suite-level Setup nodes that run just once before any specs are run.\nWhen running in parallel, each parallel process will call BeforeSuite.\n\nYou may only register *one* BeforeSuite handler per test suite.  You typically do so in your bootstrap file at the top level.\n\nBeforeSuite can take a func() body, or an interruptible func(SpecContext)/func(context.Context) body.\n\nYou cannot nest any other Ginkgo nodes within a BeforeSuite node's closure.\nYou can learn more here: https://onsi.github.io/ginkgo/#suite-setup-and-cleanup-beforesuite-and-aftersuite\n*/\nfunc BeforeSuite(body any, args ...any) bool {\n\tcombinedArgs := []any{body}\n\tcombinedArgs = append(combinedArgs, args...)\n\treturn pushNode(internal.NewNode(internal.TransformNewNodeArgs(exitIfErrors, deprecationTracker, types.NodeTypeBeforeSuite, \"\", combinedArgs...)))\n}\n\n/*\nAfterSuite nodes are suite-level Setup nodes run after all specs have finished - regardless of whether specs have passed or failed.\nAfterSuite node closures always run, even if Ginkgo receives an interrupt signal (^C), in order to ensure cleanup occurs.\n\nWhen running in parallel, each parallel process will call AfterSuite.\n\nYou may only register *one* AfterSuite handler per test suite.  You typically do so in your bootstrap file at the top level.\n\nAfterSuite can take a func() body, or an interruptible func(SpecContext)/func(context.Context) body.\n\nYou cannot nest any other Ginkgo nodes within an AfterSuite node's closure.\nYou can learn more here: https://onsi.github.io/ginkgo/#suite-setup-and-cleanup-beforesuite-and-aftersuite\n*/\nfunc AfterSuite(body any, args ...any) bool {\n\tcombinedArgs := []any{body}\n\tcombinedArgs = append(combinedArgs, args...)\n\treturn pushNode(internal.NewNode(internal.TransformNewNodeArgs(exitIfErrors, deprecationTracker, types.NodeTypeAfterSuite, \"\", combinedArgs...)))\n}\n\n/*\nSynchronizedBeforeSuite nodes allow you to perform some of the suite setup just once - on parallel process #1 - and then pass information\nfrom that setup to the rest of the suite setup on all processes.  This is useful for performing expensive or singleton setup once, then passing\ninformation from that setup to all parallel processes.\n\nSynchronizedBeforeSuite accomplishes this by taking *two* function arguments and passing data between them.\nThe first function is only run on parallel process #1.  The second is run on all processes, but *only* after the first function completes successfully.  The functions have the following signatures:\n\nThe first function (which only runs on process #1) can have any of the following the signatures:\n\n\tfunc()\n\tfunc(ctx context.Context)\n\tfunc(ctx SpecContext)\n\tfunc() []byte\n\tfunc(ctx context.Context) []byte\n\tfunc(ctx SpecContext) []byte\n\nThe byte array returned by the first function (if present) is then passed to the second function, which can have any of the following signature:\n\n\tfunc()\n\tfunc(ctx context.Context)\n\tfunc(ctx SpecContext)\n\tfunc(data []byte)\n\tfunc(ctx context.Context, data []byte)\n\tfunc(ctx SpecContext, data []byte)\n\nIf either function receives a context.Context/SpecContext it is considered interruptible.\n\nYou cannot nest any other Ginkgo nodes within an SynchronizedBeforeSuite node's closure.\nYou can learn more, and see some examples, here: https://onsi.github.io/ginkgo/#parallel-suite-setup-and-cleanup-synchronizedbeforesuite-and-synchronizedaftersuite\n*/\nfunc SynchronizedBeforeSuite(process1Body any, allProcessBody any, args ...any) bool {\n\tcombinedArgs := []any{process1Body, allProcessBody}\n\tcombinedArgs = append(combinedArgs, args...)\n\n\treturn pushNode(internal.NewNode(internal.TransformNewNodeArgs(exitIfErrors, deprecationTracker, types.NodeTypeSynchronizedBeforeSuite, \"\", combinedArgs...)))\n}\n\n/*\nSynchronizedAfterSuite nodes complement the SynchronizedBeforeSuite nodes in solving the problem of splitting clean up into a piece that runs on all processes\nand a piece that must only run once - on process #1.\n\nSynchronizedAfterSuite accomplishes this by taking *two* function arguments.  The first runs on all processes.  The second runs only on parallel process #1\nand *only* after all other processes have finished and exited.  This ensures that process #1, and any resources it is managing, remain alive until\nall other processes are finished.  These two functions can be bare functions (func()) or interruptible (func(context.Context)/func(SpecContext))\n\nNote that you can also use DeferCleanup() in SynchronizedBeforeSuite to accomplish similar results.\n\nYou cannot nest any other Ginkgo nodes within an SynchronizedAfterSuite node's closure.\nYou can learn more, and see some examples, here: https://onsi.github.io/ginkgo/#parallel-suite-setup-and-cleanup-synchronizedbeforesuite-and-synchronizedaftersuite\n*/\nfunc SynchronizedAfterSuite(allProcessBody any, process1Body any, args ...any) bool {\n\tcombinedArgs := []any{allProcessBody, process1Body}\n\tcombinedArgs = append(combinedArgs, args...)\n\n\treturn pushNode(internal.NewNode(internal.TransformNewNodeArgs(exitIfErrors, deprecationTracker, types.NodeTypeSynchronizedAfterSuite, \"\", combinedArgs...)))\n}\n\n/*\nBeforeEach nodes are Setup nodes whose closures run before It node closures.  When multiple BeforeEach nodes\nare defined in nested Container nodes the outermost BeforeEach node closures are run first.\n\nBeforeEach can take a func() body, or an interruptible func(SpecContext)/func(context.Context) body.\n\nYou cannot nest any other Ginkgo nodes within a BeforeEach node's closure.\nYou can learn more here: https://onsi.github.io/ginkgo/#extracting-common-setup-beforeeach\n*/\nfunc BeforeEach(args ...any) bool {\n\treturn pushNode(internal.NewNode(internal.TransformNewNodeArgs(exitIfErrors, deprecationTracker, types.NodeTypeBeforeEach, \"\", args...)))\n}\n\n/*\nJustBeforeEach nodes are similar to BeforeEach nodes, however they are guaranteed to run *after* all BeforeEach node closures - just before the It node closure.\nThis can allow you to separate configuration from creation of resources for a spec.\n\nJustBeforeEach can take a func() body, or an interruptible func(SpecContext)/func(context.Context) body.\n\nYou cannot nest any other Ginkgo nodes within a JustBeforeEach node's closure.\nYou can learn more and see some examples here: https://onsi.github.io/ginkgo/#separating-creation-and-configuration-justbeforeeach\n*/\nfunc JustBeforeEach(args ...any) bool {\n\treturn pushNode(internal.NewNode(internal.TransformNewNodeArgs(exitIfErrors, deprecationTracker, types.NodeTypeJustBeforeEach, \"\", args...)))\n}\n\n/*\nAfterEach nodes are Setup nodes whose closures run after It node closures.  When multiple AfterEach nodes\nare defined in nested Container nodes the innermost AfterEach node closures are run first.\n\nNote that you can also use DeferCleanup() in other Setup or Subject nodes to accomplish similar results.\n\nAfterEach can take a func() body, or an interruptible func(SpecContext)/func(context.Context) body.\n\nYou cannot nest any other Ginkgo nodes within an AfterEach node's closure.\nYou can learn more here: https://onsi.github.io/ginkgo/#spec-cleanup-aftereach-and-defercleanup\n*/\nfunc AfterEach(args ...any) bool {\n\treturn pushNode(internal.NewNode(internal.TransformNewNodeArgs(exitIfErrors, deprecationTracker, types.NodeTypeAfterEach, \"\", args...)))\n}\n\n/*\nJustAfterEach nodes are similar to AfterEach nodes, however they are guaranteed to run *before* all AfterEach node closures - just after the It node closure. This can allow you to separate diagnostics collection from teardown for a spec.\n\nJustAfterEach can take a func() body, or an interruptible func(SpecContext)/func(context.Context) body.\n\nYou cannot nest any other Ginkgo nodes within a JustAfterEach node's closure.\nYou can learn more and see some examples here: https://onsi.github.io/ginkgo/#separating-diagnostics-collection-and-teardown-justaftereach\n*/\nfunc JustAfterEach(args ...any) bool {\n\treturn pushNode(internal.NewNode(internal.TransformNewNodeArgs(exitIfErrors, deprecationTracker, types.NodeTypeJustAfterEach, \"\", args...)))\n}\n\n/*\nBeforeAll nodes are Setup nodes that can occur inside Ordered containers.  They run just once before any specs in the Ordered container run.\n\nMultiple BeforeAll nodes can be defined in a given Ordered container however they cannot be nested inside any other container.\n\nBeforeAll can take a func() body, or an interruptible func(SpecContext)/func(context.Context) body.\n\nYou cannot nest any other Ginkgo nodes within a BeforeAll node's closure.\nYou can learn more about Ordered Containers at: https://onsi.github.io/ginkgo/#ordered-containers\nAnd you can learn more about BeforeAll at: https://onsi.github.io/ginkgo/#setup-in-ordered-containers-beforeall-and-afterall\n*/\nfunc BeforeAll(args ...any) bool {\n\treturn pushNode(internal.NewNode(internal.TransformNewNodeArgs(exitIfErrors, deprecationTracker, types.NodeTypeBeforeAll, \"\", args...)))\n}\n\n/*\nAfterAll nodes are Setup nodes that can occur inside Ordered containers.  They run just once after all specs in the Ordered container have run.\n\nMultiple AfterAll nodes can be defined in a given Ordered container however they cannot be nested inside any other container.\n\nNote that you can also use DeferCleanup() in a BeforeAll node to accomplish similar behavior.\n\nAfterAll can take a func() body, or an interruptible func(SpecContext)/func(context.Context) body.\n\nYou cannot nest any other Ginkgo nodes within an AfterAll node's closure.\nYou can learn more about Ordered Containers at: https://onsi.github.io/ginkgo/#ordered-containers\nAnd you can learn more about AfterAll at: https://onsi.github.io/ginkgo/#setup-in-ordered-containers-beforeall-and-afterall\n*/\nfunc AfterAll(args ...any) bool {\n\treturn pushNode(internal.NewNode(internal.TransformNewNodeArgs(exitIfErrors, deprecationTracker, types.NodeTypeAfterAll, \"\", args...)))\n}\n\n/*\nDeferCleanup can be called within any Setup or Subject node to register a cleanup callback that Ginkgo will call at the appropriate time to cleanup after the spec.\n\nDeferCleanup can be passed:\n1. A function that takes no arguments and returns no values.\n2. A function that returns multiple values.  `DeferCleanup` will ignore all these return values except for the last one.  If this last return value is a non-nil error `DeferCleanup` will fail the spec).\n3. A function that takes a context.Context or SpecContext (and optionally returns multiple values).  The resulting cleanup node is deemed interruptible and the passed-in context will be cancelled in the event of a timeout or interrupt.\n4. A function that takes arguments (and optionally returns multiple values) followed by a list of arguments to pass to the function.\n5. A function that takes SpecContext and a list of arguments (and optionally returns multiple values) followed by a list of arguments to pass to the function.\n\nFor example:\n\n\tBeforeEach(func() {\n\t    DeferCleanup(os.Setenv, \"FOO\", os.GetEnv(\"FOO\"))\n\t    os.Setenv(\"FOO\", \"BAR\")\n\t})\n\nwill register a cleanup handler that will set the environment variable \"FOO\" to its current value (obtained by os.GetEnv(\"FOO\")) after the spec runs and then sets the environment variable \"FOO\" to \"BAR\" for the current spec.\n\nSimilarly:\n\n\tBeforeEach(func() {\n\t    DeferCleanup(func(ctx SpecContext, path) {\n\t    \treq, err := http.NewRequestWithContext(ctx, \"POST\", path, nil)\n\t    \tExpect(err).NotTo(HaveOccured())\n\t    \t_, err := http.DefaultClient.Do(req)\n\t    \tExpect(err).NotTo(HaveOccured())\n\t    }, \"example.com/cleanup\", NodeTimeout(time.Second*3))\n\t})\n\nwill register a cleanup handler that will have three seconds to successfully complete a request to the specified path. Note that we do not specify a context in the list of arguments passed to DeferCleanup - only in the signature of the function we pass in.  Ginkgo will detect the requested context and supply a SpecContext when it invokes the cleanup node.  If you want to pass in your own context in addition to the Ginkgo-provided SpecContext you must specify the SpecContext as the first argument (e.g. func(ctx SpecContext, otherCtx context.Context)).\n\nWhen DeferCleanup is called in BeforeEach, JustBeforeEach, It, AfterEach, or JustAfterEach the registered callback will be invoked when the spec completes (i.e. it will behave like an AfterEach node)\nWhen DeferCleanup is called in BeforeAll or AfterAll the registered callback will be invoked when the ordered container completes (i.e. it will behave like an AfterAll node)\nWhen DeferCleanup is called in BeforeSuite, SynchronizedBeforeSuite, AfterSuite, or SynchronizedAfterSuite the registered callback will be invoked when the suite completes (i.e. it will behave like an AfterSuite node)\n\nNote that DeferCleanup does not represent a node but rather dynamically generates the appropriate type of cleanup node based on the context in which it is called.  As such you must call DeferCleanup within a Setup or Subject node, and not within a Container node.\nYou can learn more about DeferCleanup here: https://onsi.github.io/ginkgo/#cleaning-up-our-cleanup-code-defercleanup\n*/\nfunc DeferCleanup(args ...any) {\n\tfail := func(message string, cl types.CodeLocation) {\n\t\tglobal.Failer.Fail(message, cl)\n\t}\n\tpushNode(internal.NewCleanupNode(deprecationTracker, fail, args...))\n}\n\n/*\nAttachProgressReporter allows you to register a function that will be called whenever Ginkgo generates a Progress Report.  The contents returned by the function will be included in the report.\n\n**This is an experimental feature and the public-facing interface may change in a future minor version of Ginkgo**\n\nProgress Reports are generated:\n- whenever the user explicitly requests one (via `SIGINFO` or `SIGUSR1`)\n- on nodes decorated  with PollProgressAfter\n- on suites run with --poll-progress-after\n- whenever a test times out\n\nGinkgo uses Progress Reports to convey the current state of the test suite, including any running goroutines.  By attaching a progress reporter you are able to supplement these reports with additional information.\n\n# AttachProgressReporter returns a function that can be called to detach the progress reporter\n\nYou can learn more about AttachProgressReporter here: https://onsi.github.io/ginkgo/#attaching-additional-information-to-progress-reports\n*/\nfunc AttachProgressReporter(reporter func() string) func() {\n\treturn global.Suite.AttachProgressReporter(reporter)\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/decorator_dsl.go",
    "content": "package ginkgo\n\nimport (\n\t\"github.com/onsi/ginkgo/v2/internal\"\n\t\"github.com/onsi/ginkgo/v2/types\"\n)\n\n/*\nOffset(uint) is a decorator that allows you to change the stack-frame offset used when computing the line number of the node in question.\n\nYou can learn more here: https://onsi.github.io/ginkgo/#the-offset-decorator\nYou can learn more about decorators here: https://onsi.github.io/ginkgo/#decorator-reference\n*/\ntype Offset = internal.Offset\n\n/*\nFlakeAttempts(uint N) is a decorator that allows you to mark individual specs or spec containers as flaky. Ginkgo will run them up to `N` times until they pass.\n\nYou can learn more here: https://onsi.github.io/ginkgo/#the-flakeattempts-decorator\nYou can learn more about decorators here: https://onsi.github.io/ginkgo/#decorator-reference\n*/\ntype FlakeAttempts = internal.FlakeAttempts\n\n/*\nMustPassRepeatedly(uint N) is a decorator that allows you to repeat the execution of individual specs or spec containers. Ginkgo will run them up to `N` times until they fail.\n\nYou can learn more here: https://onsi.github.io/ginkgo/#the-mustpassrepeatedly-decorator\nYou can learn more about decorators here: https://onsi.github.io/ginkgo/#decorator-reference\n*/\ntype MustPassRepeatedly = internal.MustPassRepeatedly\n\n/*\nFocus is a decorator that allows you to mark a spec or container as focused.  Identical to FIt and FDescribe.\n\nYou can learn more here: https://onsi.github.io/ginkgo/#filtering-specs\nYou can learn more about decorators here: https://onsi.github.io/ginkgo/#decorator-reference\n*/\nconst Focus = internal.Focus\n\n/*\nPending is a decorator that allows you to mark a spec or container as pending.  Identical to PIt and PDescribe.\n\nYou can learn more here: https://onsi.github.io/ginkgo/#filtering-specs\nYou can learn more about decorators here: https://onsi.github.io/ginkgo/#decorator-reference\n*/\nconst Pending = internal.Pending\n\n/*\nSerial is a decorator that allows you to mark a spec or container as serial.  These specs will never run in parallel with other specs.\nSpecs in ordered containers cannot be marked as serial - mark the ordered container instead.\n\nYou can learn more here: https://onsi.github.io/ginkgo/#serial-specs\nYou can learn more about decorators here: https://onsi.github.io/ginkgo/#decorator-reference\n*/\nconst Serial = internal.Serial\n\n/*\nOrdered is a decorator that allows you to mark a container as ordered.  Specs in the container will always run in the order they appear.\nThey will never be randomized and they will never run in parallel with one another, though they may run in parallel with other specs.\n\nYou can learn more here: https://onsi.github.io/ginkgo/#ordered-containers\nYou can learn more about decorators here: https://onsi.github.io/ginkgo/#decorator-reference\n*/\nconst Ordered = internal.Ordered\n\n/*\nContinueOnFailure is a decorator that allows you to mark an Ordered container to continue running specs even if failures occur.  Ordinarily an ordered container will stop running specs after the first failure occurs.  Note that if a BeforeAll or a BeforeEach/JustBeforeEach annotated with OncePerOrdered fails then no specs will run as the precondition for the Ordered container will consider to be failed.\n\nContinueOnFailure only applies to the outermost Ordered container.  Attempting to place ContinueOnFailure in a nested container will result in an error.\n\nYou can learn more here: https://onsi.github.io/ginkgo/#ordered-containers\nYou can learn more about decorators here: https://onsi.github.io/ginkgo/#decorator-reference\n*/\nconst ContinueOnFailure = internal.ContinueOnFailure\n\n/*\nOncePerOrdered is a decorator that allows you to mark outer BeforeEach, AfterEach, JustBeforeEach, and JustAfterEach setup nodes to run once\nper ordered context.  Normally these setup nodes run around each individual spec, with OncePerOrdered they will run once around the set of specs in an ordered container.\nThe behavior for non-Ordered containers/specs is unchanged.\n\nYou can learn more here: https://onsi.github.io/ginkgo/#setup-around-ordered-containers-the-onceperordered-decorator\nYou can learn more about decorators here: https://onsi.github.io/ginkgo/#decorator-reference\n*/\nconst OncePerOrdered = internal.OncePerOrdered\n\n/*\nLabel decorates specs with Labels.  Multiple labels can be passed to Label and these can be arbitrary strings but must not include the following characters: \"&|!,()/\".\nLabels can be applied to container and subject nodes, but not setup nodes.  You can provide multiple Labels to a given node and a spec's labels is the union of all labels in its node hierarchy.\n\nYou can learn more here: https://onsi.github.io/ginkgo/#spec-labels\nYou can learn more about decorators here: https://onsi.github.io/ginkgo/#decorator-reference\n*/\nfunc Label(labels ...string) Labels {\n\treturn Labels(labels)\n}\n\n/*\nLabels are the type for spec Label decorators.  Use Label(...) to construct Labels.\nYou can learn more here: https://onsi.github.io/ginkgo/#spec-labels\n*/\ntype Labels = internal.Labels\n\n/*\nSemVerConstraint decorates specs with SemVerConstraints. Multiple semantic version constraints can be passed to SemVerConstraint and these strings must follow the semantic version constraint rules.\nSemVerConstraints can be applied to container and subject nodes, but not setup nodes. You can provide multiple SemVerConstraints to a given node and a spec's semantic version constraints is the union of all semantic version constraints in its node hierarchy.\n\nYou can learn more here: https://onsi.github.io/ginkgo/#spec-semantic-version-filtering\nYou can learn more about decorators here: https://onsi.github.io/ginkgo/#decorator-reference\n*/\nfunc SemVerConstraint(semVerConstraints ...string) SemVerConstraints {\n\treturn SemVerConstraints(semVerConstraints)\n}\n\n/*\nSemVerConstraints are the type for spec SemVerConstraint decorators. Use SemVerConstraint(...) to construct SemVerConstraints.\nYou can learn more here: https://onsi.github.io/ginkgo/#spec-semantic-version-filtering\n*/\ntype SemVerConstraints = internal.SemVerConstraints\n\n/*\nComponentSemVerConstraint decorates specs with ComponentSemVerConstraints. Multiple components semantic version constraints can be passed to ComponentSemVerConstraint and the component can't be empy, also the version strings must follow the semantic version constraint rules.\nComponentSemVerConstraints can be applied to container and subject nodes, but not setup nodes. You can provide multiple ComponentSemVerConstraints to a given node and a spec's component semantic version constraints is the union of all component semantic version constraints in its node hierarchy.\n\nYou can learn more here: https://onsi.github.io/ginkgo/#spec-semantic-version-filtering\nYou can learn more about decorators here: https://onsi.github.io/ginkgo/#decorator-reference\n*/\nfunc ComponentSemVerConstraint(component string, semVerConstraints ...string) ComponentSemVerConstraints {\n\tcomponentSemVerConstraints := ComponentSemVerConstraints{\n\t\tcomponent: semVerConstraints,\n\t}\n\n\treturn componentSemVerConstraints\n}\n\n/*\nComponentSemVerConstraints are the type for spec ComponentSemVerConstraint decorators. Use ComponentSemVerConstraint(...) to construct ComponentSemVerConstraints.\nYou can learn more here: https://onsi.github.io/ginkgo/#spec-semantic-version-filtering\n*/\ntype ComponentSemVerConstraints = internal.ComponentSemVerConstraints\n\n/*\nPollProgressAfter allows you to override the configured value for --poll-progress-after for a particular node.\n\nGinkgo will start emitting node progress if the node is still running after a duration of PollProgressAfter.  This allows you to get quicker feedback about the state of a long-running spec.\n*/\ntype PollProgressAfter = internal.PollProgressAfter\n\n/*\nPollProgressInterval allows you to override the configured value for --poll-progress-interval for a particular node.\n\nOnce a node has been running for longer than PollProgressAfter Ginkgo will emit node progress periodically at an interval of PollProgresInterval.\n*/\ntype PollProgressInterval = internal.PollProgressInterval\n\n/*\nNodeTimeout allows you to specify a timeout for an indivdiual node.  The node cannot be a container and must be interruptible (i.e. it must be passed a function that accepts a SpecContext or context.Context).\n\nIf the node does not exit within the specified NodeTimeout its context will be cancelled.  The node wil then have a period of time controlled by the GracePeriod decorator (or global --grace-period command-line argument) to exit.  If the node does not exit within GracePeriod Ginkgo will leak the node and proceed to any clean-up nodes associated with the current spec.\n*/\ntype NodeTimeout = internal.NodeTimeout\n\n/*\nSpecTimeout allows you to specify a timeout for an indivdiual spec.  SpecTimeout can only decorate interruptible It nodes.\n\nAll nodes associated with the It node will need to complete before the SpecTimeout has elapsed.  Individual nodes (e.g. BeforeEach) may be decorated with different NodeTimeouts - but these can only serve to provide a more stringent deadline for the node in question; they cannot extend the deadline past the SpecTimeout.\n\nIf the spec does not complete within the specified SpecTimeout the currently running node will have its context cancelled.  The node wil then have a period of time controlled by that node's GracePeriod decorator (or global --grace-period command-line argument) to exit.  If the node does not exit within GracePeriod Ginkgo will leak the node and proceed to any clean-up nodes associated with the current spec.\n*/\ntype SpecTimeout = internal.SpecTimeout\n\n/*\nGracePeriod denotes the period of time Ginkgo will wait for an interruptible node to exit once an interruption (whether due to a timeout or a user-invoked signal) has occurred.  If both the global --grace-period cli flag and a GracePeriod decorator are specified the value in the decorator will take precedence.\n\nNodes that do not finish within a GracePeriod will be leaked and Ginkgo will proceed to run subsequent nodes.  In the event of a timeout, such leaks will be reported to the user.\n*/\ntype GracePeriod = internal.GracePeriod\n\n/*\nSpecPriority allows you to assign a priority to a spec or container.\n\nSpecs with higher priority will be scheduled to run before specs with lower priority.  The default priority is 0 and negative priorities are allowed.\n*/\ntype SpecPriority = internal.SpecPriority\n\n/*\nSuppressProgressReporting is a decorator that allows you to disable progress reporting of a particular node.  This is useful if `ginkgo -v -progress` is generating too much noise; particularly\nif you have a `ReportAfterEach` node that is running for every skipped spec and is generating lots of progress reports.\n*/\nconst SuppressProgressReporting = internal.SuppressProgressReporting\n\n/*\nAroundNode registers a function that runs before each individual node.  This is considered a more advanced decorator.\n\nPlease read the [docs](https://onsi.github.io/ginkgo/#advanced-around-node) for more information.\n\nAllowed signatures:\n\n- AroundNode(func()) - func will be called before the node is run.\n- AroundNode(func(ctx context.Context) context.Context) - func can wrap the passed in context and return a new one which will be passed on to the node.\n- AroundNode(func(ctx context.Context, body func(ctx context.Context))) - ctx is the context for the node and body is a function that must be called to run the node.  This gives you complete control over what runs before and after the node.\n\nMultiple AroundNode decorators can be applied to a single node and they will run in the order they are applied.\n\nUnlike setup nodes like BeforeEach and DeferCleanup, AroundNode is guaranteed to run in the same goroutine as the decorated node.  This is necessary when working with lower-level libraries that must run on a single thread (you can call runtime.LockOSThread() in the AroundNode to ensure that the node runs on a single thread).\n\nSince AroundNode allows you to modify the context you can also use AroundNode to implement shared setup that attaches values to the context.  You must return a context that inherits from the passed in context.\n\nIf applied to a container, AroundNode will run before every node in the container.  Including setup nodes like BeforeEach and DeferCleanup.\n\nAroundNode can also be applied to RunSpecs to run before every node in the suite.\n*/\nfunc AroundNode[F types.AroundNodeAllowedFuncs](f F) types.AroundNodeDecorator {\n\treturn types.AroundNode(f, types.NewCodeLocation(1))\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/deprecated_dsl.go",
    "content": "package ginkgo\n\nimport (\n\t\"time\"\n\n\t\"github.com/onsi/ginkgo/v2/internal\"\n\t\"github.com/onsi/ginkgo/v2/internal/global\"\n\t\"github.com/onsi/ginkgo/v2/reporters\"\n\t\"github.com/onsi/ginkgo/v2/types\"\n)\n\n/*\nDeprecated: Done Channel for asynchronous testing\n\nThe Done channel pattern is no longer supported in Ginkgo 2.0.\nSee here for better patterns for asynchronous testing: https://onsi.github.io/ginkgo/#patterns-for-asynchronous-testing\n\nFor a migration guide see: https://onsi.github.io/ginkgo/MIGRATING_TO_V2#removed-async-testing\n*/\ntype Done = internal.Done\n\n/*\nDeprecated: Custom Ginkgo test reporters are deprecated in Ginkgo 2.0.\n\nUse Ginkgo's reporting nodes instead and 2.0 reporting infrastructure instead. You can learn more here: https://onsi.github.io/ginkgo/#reporting-infrastructure\nFor a migration guide see: https://onsi.github.io/ginkgo/MIGRATING_TO_V2#removed-custom-reporters\n*/\ntype Reporter = reporters.DeprecatedReporter\n\n/*\nDeprecated: Custom Reporters have been removed in Ginkgo 2.0.  RunSpecsWithDefaultAndCustomReporters will simply call RunSpecs()\n\nUse Ginkgo's reporting nodes instead and 2.0 reporting infrastructure instead. You can learn more here: https://onsi.github.io/ginkgo/#reporting-infrastructure\nFor a migration guide see: https://onsi.github.io/ginkgo/MIGRATING_TO_V2#removed-custom-reporters\n*/\nfunc RunSpecsWithDefaultAndCustomReporters(t GinkgoTestingT, description string, _ []Reporter) bool {\n\tdeprecationTracker.TrackDeprecation(types.Deprecations.CustomReporter())\n\treturn RunSpecs(t, description)\n}\n\n/*\nDeprecated: Custom Reporters have been removed in Ginkgo 2.0.  RunSpecsWithCustomReporters will simply call RunSpecs()\n\nUse Ginkgo's reporting nodes instead and 2.0 reporting infrastructure instead. You can learn more here: https://onsi.github.io/ginkgo/#reporting-infrastructure\nFor a migration guide see: https://onsi.github.io/ginkgo/MIGRATING_TO_V2#removed-custom-reporters\n*/\nfunc RunSpecsWithCustomReporters(t GinkgoTestingT, description string, _ []Reporter) bool {\n\tdeprecationTracker.TrackDeprecation(types.Deprecations.CustomReporter())\n\treturn RunSpecs(t, description)\n}\n\n/*\nDeprecated: GinkgoTestDescription has been replaced with SpecReport.\n\nUse CurrentSpecReport() instead.\nYou can learn more here: https://onsi.github.io/ginkgo/#getting-a-report-for-the-current-spec\nThe SpecReport type is documented here: https://pkg.go.dev/github.com/onsi/ginkgo/v2/types#SpecReport\n*/\ntype DeprecatedGinkgoTestDescription struct {\n\tFullTestText   string\n\tComponentTexts []string\n\tTestText       string\n\n\tFileName   string\n\tLineNumber int\n\n\tFailed   bool\n\tDuration time.Duration\n}\ntype GinkgoTestDescription = DeprecatedGinkgoTestDescription\n\n/*\nDeprecated: CurrentGinkgoTestDescription has been replaced with CurrentSpecReport.\n\nUse CurrentSpecReport() instead.\nYou can learn more here: https://onsi.github.io/ginkgo/#getting-a-report-for-the-current-spec\nThe SpecReport type is documented here: https://pkg.go.dev/github.com/onsi/ginkgo/v2/types#SpecReport\n*/\nfunc CurrentGinkgoTestDescription() DeprecatedGinkgoTestDescription {\n\tdeprecationTracker.TrackDeprecation(\n\t\ttypes.Deprecations.CurrentGinkgoTestDescription(),\n\t\ttypes.NewCodeLocation(1),\n\t)\n\treport := global.Suite.CurrentSpecReport()\n\tif report.State == types.SpecStateInvalid {\n\t\treturn GinkgoTestDescription{}\n\t}\n\tcomponentTexts := []string{}\n\tcomponentTexts = append(componentTexts, report.ContainerHierarchyTexts...)\n\tcomponentTexts = append(componentTexts, report.LeafNodeText)\n\n\treturn DeprecatedGinkgoTestDescription{\n\t\tComponentTexts: componentTexts,\n\t\tFullTestText:   report.FullText(),\n\t\tTestText:       report.LeafNodeText,\n\t\tFileName:       report.LeafNodeLocation.FileName,\n\t\tLineNumber:     report.LeafNodeLocation.LineNumber,\n\t\tFailed:         report.State.Is(types.SpecStateFailureStates),\n\t\tDuration:       report.RunTime,\n\t}\n}\n\n/*\nDeprecated: GinkgoParallelNode() has been renamed to GinkgoParallelProcess()\n*/\nfunc GinkgoParallelNode() int {\n\tdeprecationTracker.TrackDeprecation(\n\t\ttypes.Deprecations.ParallelNode(),\n\t\ttypes.NewCodeLocation(1),\n\t)\n\treturn GinkgoParallelProcess()\n}\n\n/*\nDeprecated: Benchmarker has been removed from Ginkgo 2.0\n\nUse Gomega's gmeasure package instead.\nYou can learn more here: https://onsi.github.io/ginkgo/#benchmarking-code\n*/\ntype Benchmarker interface {\n\tTime(name string, body func(), info ...any) (elapsedTime time.Duration)\n\tRecordValue(name string, value float64, info ...any)\n\tRecordValueWithPrecision(name string, value float64, units string, precision int, info ...any)\n}\n\n/*\nDeprecated: Measure() has been removed from Ginkgo 2.0\n\nUse Gomega's gmeasure package instead.\nYou can learn more here: https://onsi.github.io/ginkgo/#benchmarking-code\n*/\nfunc Measure(_ ...any) bool {\n\tdeprecationTracker.TrackDeprecation(types.Deprecations.Measure(), types.NewCodeLocation(1))\n\treturn true\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/formatter/colorable_others.go",
    "content": "// +build !windows\n\n/*\nThese packages are used for colorize on Windows and contributed by mattn.jp@gmail.com\n\n  * go-colorable: <https://github.com/mattn/go-colorable>\n  * go-isatty: <https://github.com/mattn/go-isatty>\n\nThe MIT License (MIT)\n\nCopyright (c) 2016 Yasuhiro Matsumoto\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 all\ncopies 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 THE\nSOFTWARE.\n*/\n\npackage formatter\n\nimport (\n\t\"io\"\n\t\"os\"\n)\n\nfunc newColorable(file *os.File) io.Writer {\n\treturn file\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/formatter/colorable_windows.go",
    "content": "/*\nThese packages are used for colorize on Windows and contributed by mattn.jp@gmail.com\n\n  * go-colorable: <https://github.com/mattn/go-colorable>\n  * go-isatty: <https://github.com/mattn/go-isatty>\n\nThe MIT License (MIT)\n\nCopyright (c) 2016 Yasuhiro Matsumoto\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 all\ncopies 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 THE\nSOFTWARE.\n*/\n\npackage formatter\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"math\"\n\t\"os\"\n\t\"strconv\"\n\t\"strings\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar (\n\tkernel32                       = syscall.NewLazyDLL(\"kernel32.dll\")\n\tprocGetConsoleScreenBufferInfo = kernel32.NewProc(\"GetConsoleScreenBufferInfo\")\n\tprocSetConsoleTextAttribute    = kernel32.NewProc(\"SetConsoleTextAttribute\")\n\tprocSetConsoleCursorPosition   = kernel32.NewProc(\"SetConsoleCursorPosition\")\n\tprocFillConsoleOutputCharacter = kernel32.NewProc(\"FillConsoleOutputCharacterW\")\n\tprocFillConsoleOutputAttribute = kernel32.NewProc(\"FillConsoleOutputAttribute\")\n\tprocGetConsoleMode             = kernel32.NewProc(\"GetConsoleMode\")\n)\n\nfunc isTerminal(fd uintptr) bool {\n\tvar st uint32\n\tr, _, e := syscall.Syscall(procGetConsoleMode.Addr(), 2, fd, uintptr(unsafe.Pointer(&st)), 0)\n\treturn r != 0 && e == 0\n}\n\nconst (\n\tforegroundBlue      = 0x1\n\tforegroundGreen     = 0x2\n\tforegroundRed       = 0x4\n\tforegroundIntensity = 0x8\n\tforegroundMask      = (foregroundRed | foregroundBlue | foregroundGreen | foregroundIntensity)\n\tbackgroundBlue      = 0x10\n\tbackgroundGreen     = 0x20\n\tbackgroundRed       = 0x40\n\tbackgroundIntensity = 0x80\n\tbackgroundMask      = (backgroundRed | backgroundBlue | backgroundGreen | backgroundIntensity)\n)\n\ntype wchar uint16\ntype short int16\ntype dword uint32\ntype word uint16\n\ntype coord struct {\n\tx short\n\ty short\n}\n\ntype smallRect struct {\n\tleft   short\n\ttop    short\n\tright  short\n\tbottom short\n}\n\ntype consoleScreenBufferInfo struct {\n\tsize              coord\n\tcursorPosition    coord\n\tattributes        word\n\twindow            smallRect\n\tmaximumWindowSize coord\n}\n\ntype writer struct {\n\tout     io.Writer\n\thandle  syscall.Handle\n\tlastbuf bytes.Buffer\n\toldattr word\n}\n\nfunc newColorable(file *os.File) io.Writer {\n\tif file == nil {\n\t\tpanic(\"nil passed instead of *os.File to NewColorable()\")\n\t}\n\n\tif isTerminal(file.Fd()) {\n\t\tvar csbi consoleScreenBufferInfo\n\t\thandle := syscall.Handle(file.Fd())\n\t\tprocGetConsoleScreenBufferInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&csbi)))\n\t\treturn &writer{out: file, handle: handle, oldattr: csbi.attributes}\n\t} else {\n\t\treturn file\n\t}\n}\n\nvar color256 = map[int]int{\n\t0:   0x000000,\n\t1:   0x800000,\n\t2:   0x008000,\n\t3:   0x808000,\n\t4:   0x000080,\n\t5:   0x800080,\n\t6:   0x008080,\n\t7:   0xc0c0c0,\n\t8:   0x808080,\n\t9:   0xff0000,\n\t10:  0x00ff00,\n\t11:  0xffff00,\n\t12:  0x0000ff,\n\t13:  0xff00ff,\n\t14:  0x00ffff,\n\t15:  0xffffff,\n\t16:  0x000000,\n\t17:  0x00005f,\n\t18:  0x000087,\n\t19:  0x0000af,\n\t20:  0x0000d7,\n\t21:  0x0000ff,\n\t22:  0x005f00,\n\t23:  0x005f5f,\n\t24:  0x005f87,\n\t25:  0x005faf,\n\t26:  0x005fd7,\n\t27:  0x005fff,\n\t28:  0x008700,\n\t29:  0x00875f,\n\t30:  0x008787,\n\t31:  0x0087af,\n\t32:  0x0087d7,\n\t33:  0x0087ff,\n\t34:  0x00af00,\n\t35:  0x00af5f,\n\t36:  0x00af87,\n\t37:  0x00afaf,\n\t38:  0x00afd7,\n\t39:  0x00afff,\n\t40:  0x00d700,\n\t41:  0x00d75f,\n\t42:  0x00d787,\n\t43:  0x00d7af,\n\t44:  0x00d7d7,\n\t45:  0x00d7ff,\n\t46:  0x00ff00,\n\t47:  0x00ff5f,\n\t48:  0x00ff87,\n\t49:  0x00ffaf,\n\t50:  0x00ffd7,\n\t51:  0x00ffff,\n\t52:  0x5f0000,\n\t53:  0x5f005f,\n\t54:  0x5f0087,\n\t55:  0x5f00af,\n\t56:  0x5f00d7,\n\t57:  0x5f00ff,\n\t58:  0x5f5f00,\n\t59:  0x5f5f5f,\n\t60:  0x5f5f87,\n\t61:  0x5f5faf,\n\t62:  0x5f5fd7,\n\t63:  0x5f5fff,\n\t64:  0x5f8700,\n\t65:  0x5f875f,\n\t66:  0x5f8787,\n\t67:  0x5f87af,\n\t68:  0x5f87d7,\n\t69:  0x5f87ff,\n\t70:  0x5faf00,\n\t71:  0x5faf5f,\n\t72:  0x5faf87,\n\t73:  0x5fafaf,\n\t74:  0x5fafd7,\n\t75:  0x5fafff,\n\t76:  0x5fd700,\n\t77:  0x5fd75f,\n\t78:  0x5fd787,\n\t79:  0x5fd7af,\n\t80:  0x5fd7d7,\n\t81:  0x5fd7ff,\n\t82:  0x5fff00,\n\t83:  0x5fff5f,\n\t84:  0x5fff87,\n\t85:  0x5fffaf,\n\t86:  0x5fffd7,\n\t87:  0x5fffff,\n\t88:  0x870000,\n\t89:  0x87005f,\n\t90:  0x870087,\n\t91:  0x8700af,\n\t92:  0x8700d7,\n\t93:  0x8700ff,\n\t94:  0x875f00,\n\t95:  0x875f5f,\n\t96:  0x875f87,\n\t97:  0x875faf,\n\t98:  0x875fd7,\n\t99:  0x875fff,\n\t100: 0x878700,\n\t101: 0x87875f,\n\t102: 0x878787,\n\t103: 0x8787af,\n\t104: 0x8787d7,\n\t105: 0x8787ff,\n\t106: 0x87af00,\n\t107: 0x87af5f,\n\t108: 0x87af87,\n\t109: 0x87afaf,\n\t110: 0x87afd7,\n\t111: 0x87afff,\n\t112: 0x87d700,\n\t113: 0x87d75f,\n\t114: 0x87d787,\n\t115: 0x87d7af,\n\t116: 0x87d7d7,\n\t117: 0x87d7ff,\n\t118: 0x87ff00,\n\t119: 0x87ff5f,\n\t120: 0x87ff87,\n\t121: 0x87ffaf,\n\t122: 0x87ffd7,\n\t123: 0x87ffff,\n\t124: 0xaf0000,\n\t125: 0xaf005f,\n\t126: 0xaf0087,\n\t127: 0xaf00af,\n\t128: 0xaf00d7,\n\t129: 0xaf00ff,\n\t130: 0xaf5f00,\n\t131: 0xaf5f5f,\n\t132: 0xaf5f87,\n\t133: 0xaf5faf,\n\t134: 0xaf5fd7,\n\t135: 0xaf5fff,\n\t136: 0xaf8700,\n\t137: 0xaf875f,\n\t138: 0xaf8787,\n\t139: 0xaf87af,\n\t140: 0xaf87d7,\n\t141: 0xaf87ff,\n\t142: 0xafaf00,\n\t143: 0xafaf5f,\n\t144: 0xafaf87,\n\t145: 0xafafaf,\n\t146: 0xafafd7,\n\t147: 0xafafff,\n\t148: 0xafd700,\n\t149: 0xafd75f,\n\t150: 0xafd787,\n\t151: 0xafd7af,\n\t152: 0xafd7d7,\n\t153: 0xafd7ff,\n\t154: 0xafff00,\n\t155: 0xafff5f,\n\t156: 0xafff87,\n\t157: 0xafffaf,\n\t158: 0xafffd7,\n\t159: 0xafffff,\n\t160: 0xd70000,\n\t161: 0xd7005f,\n\t162: 0xd70087,\n\t163: 0xd700af,\n\t164: 0xd700d7,\n\t165: 0xd700ff,\n\t166: 0xd75f00,\n\t167: 0xd75f5f,\n\t168: 0xd75f87,\n\t169: 0xd75faf,\n\t170: 0xd75fd7,\n\t171: 0xd75fff,\n\t172: 0xd78700,\n\t173: 0xd7875f,\n\t174: 0xd78787,\n\t175: 0xd787af,\n\t176: 0xd787d7,\n\t177: 0xd787ff,\n\t178: 0xd7af00,\n\t179: 0xd7af5f,\n\t180: 0xd7af87,\n\t181: 0xd7afaf,\n\t182: 0xd7afd7,\n\t183: 0xd7afff,\n\t184: 0xd7d700,\n\t185: 0xd7d75f,\n\t186: 0xd7d787,\n\t187: 0xd7d7af,\n\t188: 0xd7d7d7,\n\t189: 0xd7d7ff,\n\t190: 0xd7ff00,\n\t191: 0xd7ff5f,\n\t192: 0xd7ff87,\n\t193: 0xd7ffaf,\n\t194: 0xd7ffd7,\n\t195: 0xd7ffff,\n\t196: 0xff0000,\n\t197: 0xff005f,\n\t198: 0xff0087,\n\t199: 0xff00af,\n\t200: 0xff00d7,\n\t201: 0xff00ff,\n\t202: 0xff5f00,\n\t203: 0xff5f5f,\n\t204: 0xff5f87,\n\t205: 0xff5faf,\n\t206: 0xff5fd7,\n\t207: 0xff5fff,\n\t208: 0xff8700,\n\t209: 0xff875f,\n\t210: 0xff8787,\n\t211: 0xff87af,\n\t212: 0xff87d7,\n\t213: 0xff87ff,\n\t214: 0xffaf00,\n\t215: 0xffaf5f,\n\t216: 0xffaf87,\n\t217: 0xffafaf,\n\t218: 0xffafd7,\n\t219: 0xffafff,\n\t220: 0xffd700,\n\t221: 0xffd75f,\n\t222: 0xffd787,\n\t223: 0xffd7af,\n\t224: 0xffd7d7,\n\t225: 0xffd7ff,\n\t226: 0xffff00,\n\t227: 0xffff5f,\n\t228: 0xffff87,\n\t229: 0xffffaf,\n\t230: 0xffffd7,\n\t231: 0xffffff,\n\t232: 0x080808,\n\t233: 0x121212,\n\t234: 0x1c1c1c,\n\t235: 0x262626,\n\t236: 0x303030,\n\t237: 0x3a3a3a,\n\t238: 0x444444,\n\t239: 0x4e4e4e,\n\t240: 0x585858,\n\t241: 0x626262,\n\t242: 0x6c6c6c,\n\t243: 0x767676,\n\t244: 0x808080,\n\t245: 0x8a8a8a,\n\t246: 0x949494,\n\t247: 0x9e9e9e,\n\t248: 0xa8a8a8,\n\t249: 0xb2b2b2,\n\t250: 0xbcbcbc,\n\t251: 0xc6c6c6,\n\t252: 0xd0d0d0,\n\t253: 0xdadada,\n\t254: 0xe4e4e4,\n\t255: 0xeeeeee,\n}\n\nfunc (w *writer) Write(data []byte) (n int, err error) {\n\tvar csbi consoleScreenBufferInfo\n\tprocGetConsoleScreenBufferInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&csbi)))\n\n\ter := bytes.NewBuffer(data)\nloop:\n\tfor {\n\t\tr1, _, err := procGetConsoleScreenBufferInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&csbi)))\n\t\tif r1 == 0 {\n\t\t\tbreak loop\n\t\t}\n\n\t\tc1, _, err := er.ReadRune()\n\t\tif err != nil {\n\t\t\tbreak loop\n\t\t}\n\t\tif c1 != 0x1b {\n\t\t\tfmt.Fprint(w.out, string(c1))\n\t\t\tcontinue\n\t\t}\n\t\tc2, _, err := er.ReadRune()\n\t\tif err != nil {\n\t\t\tw.lastbuf.WriteRune(c1)\n\t\t\tbreak loop\n\t\t}\n\t\tif c2 != 0x5b {\n\t\t\tw.lastbuf.WriteRune(c1)\n\t\t\tw.lastbuf.WriteRune(c2)\n\t\t\tcontinue\n\t\t}\n\n\t\tvar buf bytes.Buffer\n\t\tvar m rune\n\t\tfor {\n\t\t\tc, _, err := er.ReadRune()\n\t\t\tif err != nil {\n\t\t\t\tw.lastbuf.WriteRune(c1)\n\t\t\t\tw.lastbuf.WriteRune(c2)\n\t\t\t\tw.lastbuf.Write(buf.Bytes())\n\t\t\t\tbreak loop\n\t\t\t}\n\t\t\tif ('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z') || c == '@' {\n\t\t\t\tm = c\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tbuf.Write([]byte(string(c)))\n\t\t}\n\n\t\tvar csbi consoleScreenBufferInfo\n\t\tswitch m {\n\t\tcase 'A':\n\t\t\tn, err = strconv.Atoi(buf.String())\n\t\t\tif err != nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tprocGetConsoleScreenBufferInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&csbi)))\n\t\t\tcsbi.cursorPosition.y -= short(n)\n\t\t\tprocSetConsoleCursorPosition.Call(uintptr(w.handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition)))\n\t\tcase 'B':\n\t\t\tn, err = strconv.Atoi(buf.String())\n\t\t\tif err != nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tprocGetConsoleScreenBufferInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&csbi)))\n\t\t\tcsbi.cursorPosition.y += short(n)\n\t\t\tprocSetConsoleCursorPosition.Call(uintptr(w.handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition)))\n\t\tcase 'C':\n\t\t\tn, err = strconv.Atoi(buf.String())\n\t\t\tif err != nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tprocGetConsoleScreenBufferInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&csbi)))\n\t\t\tcsbi.cursorPosition.x -= short(n)\n\t\t\tprocSetConsoleCursorPosition.Call(uintptr(w.handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition)))\n\t\tcase 'D':\n\t\t\tn, err = strconv.Atoi(buf.String())\n\t\t\tif err != nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif n, err = strconv.Atoi(buf.String()); err == nil {\n\t\t\t\tvar csbi consoleScreenBufferInfo\n\t\t\t\tprocGetConsoleScreenBufferInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&csbi)))\n\t\t\t\tcsbi.cursorPosition.x += short(n)\n\t\t\t\tprocSetConsoleCursorPosition.Call(uintptr(w.handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition)))\n\t\t\t}\n\t\tcase 'E':\n\t\t\tn, err = strconv.Atoi(buf.String())\n\t\t\tif err != nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tprocGetConsoleScreenBufferInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&csbi)))\n\t\t\tcsbi.cursorPosition.x = 0\n\t\t\tcsbi.cursorPosition.y += short(n)\n\t\t\tprocSetConsoleCursorPosition.Call(uintptr(w.handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition)))\n\t\tcase 'F':\n\t\t\tn, err = strconv.Atoi(buf.String())\n\t\t\tif err != nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tprocGetConsoleScreenBufferInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&csbi)))\n\t\t\tcsbi.cursorPosition.x = 0\n\t\t\tcsbi.cursorPosition.y -= short(n)\n\t\t\tprocSetConsoleCursorPosition.Call(uintptr(w.handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition)))\n\t\tcase 'G':\n\t\t\tn, err = strconv.Atoi(buf.String())\n\t\t\tif err != nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tprocGetConsoleScreenBufferInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&csbi)))\n\t\t\tcsbi.cursorPosition.x = short(n)\n\t\t\tprocSetConsoleCursorPosition.Call(uintptr(w.handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition)))\n\t\tcase 'H':\n\t\t\ttoken := strings.Split(buf.String(), \";\")\n\t\t\tif len(token) != 2 {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tn1, err := strconv.Atoi(token[0])\n\t\t\tif err != nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tn2, err := strconv.Atoi(token[1])\n\t\t\tif err != nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tcsbi.cursorPosition.x = short(n2)\n\t\t\tcsbi.cursorPosition.x = short(n1)\n\t\t\tprocSetConsoleCursorPosition.Call(uintptr(w.handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition)))\n\t\tcase 'J':\n\t\t\tn, err := strconv.Atoi(buf.String())\n\t\t\tif err != nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tvar cursor coord\n\t\t\tswitch n {\n\t\t\tcase 0:\n\t\t\t\tcursor = coord{x: csbi.cursorPosition.x, y: csbi.cursorPosition.y}\n\t\t\tcase 1:\n\t\t\t\tcursor = coord{x: csbi.window.left, y: csbi.window.top}\n\t\t\tcase 2:\n\t\t\t\tcursor = coord{x: csbi.window.left, y: csbi.window.top}\n\t\t\t}\n\t\t\tvar count, written dword\n\t\t\tcount = dword(csbi.size.x - csbi.cursorPosition.x + (csbi.size.y-csbi.cursorPosition.y)*csbi.size.x)\n\t\t\tprocFillConsoleOutputCharacter.Call(uintptr(w.handle), uintptr(' '), uintptr(count), *(*uintptr)(unsafe.Pointer(&cursor)), uintptr(unsafe.Pointer(&written)))\n\t\t\tprocFillConsoleOutputAttribute.Call(uintptr(w.handle), uintptr(csbi.attributes), uintptr(count), *(*uintptr)(unsafe.Pointer(&cursor)), uintptr(unsafe.Pointer(&written)))\n\t\tcase 'K':\n\t\t\tn, err := strconv.Atoi(buf.String())\n\t\t\tif err != nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tvar cursor coord\n\t\t\tswitch n {\n\t\t\tcase 0:\n\t\t\t\tcursor = coord{x: csbi.cursorPosition.x, y: csbi.cursorPosition.y}\n\t\t\tcase 1:\n\t\t\t\tcursor = coord{x: csbi.window.left, y: csbi.window.top + csbi.cursorPosition.y}\n\t\t\tcase 2:\n\t\t\t\tcursor = coord{x: csbi.window.left, y: csbi.window.top + csbi.cursorPosition.y}\n\t\t\t}\n\t\t\tvar count, written dword\n\t\t\tcount = dword(csbi.size.x - csbi.cursorPosition.x)\n\t\t\tprocFillConsoleOutputCharacter.Call(uintptr(w.handle), uintptr(' '), uintptr(count), *(*uintptr)(unsafe.Pointer(&cursor)), uintptr(unsafe.Pointer(&written)))\n\t\t\tprocFillConsoleOutputAttribute.Call(uintptr(w.handle), uintptr(csbi.attributes), uintptr(count), *(*uintptr)(unsafe.Pointer(&cursor)), uintptr(unsafe.Pointer(&written)))\n\t\tcase 'm':\n\t\t\tattr := csbi.attributes\n\t\t\tcs := buf.String()\n\t\t\tif cs == \"\" {\n\t\t\t\tprocSetConsoleTextAttribute.Call(uintptr(w.handle), uintptr(w.oldattr))\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\ttoken := strings.Split(cs, \";\")\n\t\t\tfor i := 0; i < len(token); i += 1 {\n\t\t\t\tns := token[i]\n\t\t\t\tif n, err = strconv.Atoi(ns); err == nil {\n\t\t\t\t\tswitch {\n\t\t\t\t\tcase n == 0 || n == 100:\n\t\t\t\t\t\tattr = w.oldattr\n\t\t\t\t\tcase 1 <= n && n <= 5:\n\t\t\t\t\t\tattr |= foregroundIntensity\n\t\t\t\t\tcase n == 7:\n\t\t\t\t\t\tattr = ((attr & foregroundMask) << 4) | ((attr & backgroundMask) >> 4)\n\t\t\t\t\tcase 22 == n || n == 25 || n == 25:\n\t\t\t\t\t\tattr |= foregroundIntensity\n\t\t\t\t\tcase n == 27:\n\t\t\t\t\t\tattr = ((attr & foregroundMask) << 4) | ((attr & backgroundMask) >> 4)\n\t\t\t\t\tcase 30 <= n && n <= 37:\n\t\t\t\t\t\tattr = (attr & backgroundMask)\n\t\t\t\t\t\tif (n-30)&1 != 0 {\n\t\t\t\t\t\t\tattr |= foregroundRed\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (n-30)&2 != 0 {\n\t\t\t\t\t\t\tattr |= foregroundGreen\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (n-30)&4 != 0 {\n\t\t\t\t\t\t\tattr |= foregroundBlue\n\t\t\t\t\t\t}\n\t\t\t\t\tcase n == 38: // set foreground color.\n\t\t\t\t\t\tif i < len(token)-2 && (token[i+1] == \"5\" || token[i+1] == \"05\") {\n\t\t\t\t\t\t\tif n256, err := strconv.Atoi(token[i+2]); err == nil {\n\t\t\t\t\t\t\t\tif n256foreAttr == nil {\n\t\t\t\t\t\t\t\t\tn256setup()\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tattr &= backgroundMask\n\t\t\t\t\t\t\t\tattr |= n256foreAttr[n256]\n\t\t\t\t\t\t\t\ti += 2\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tattr = attr & (w.oldattr & backgroundMask)\n\t\t\t\t\t\t}\n\t\t\t\t\tcase n == 39: // reset foreground color.\n\t\t\t\t\t\tattr &= backgroundMask\n\t\t\t\t\t\tattr |= w.oldattr & foregroundMask\n\t\t\t\t\tcase 40 <= n && n <= 47:\n\t\t\t\t\t\tattr = (attr & foregroundMask)\n\t\t\t\t\t\tif (n-40)&1 != 0 {\n\t\t\t\t\t\t\tattr |= backgroundRed\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (n-40)&2 != 0 {\n\t\t\t\t\t\t\tattr |= backgroundGreen\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (n-40)&4 != 0 {\n\t\t\t\t\t\t\tattr |= backgroundBlue\n\t\t\t\t\t\t}\n\t\t\t\t\tcase n == 48: // set background color.\n\t\t\t\t\t\tif i < len(token)-2 && token[i+1] == \"5\" {\n\t\t\t\t\t\t\tif n256, err := strconv.Atoi(token[i+2]); err == nil {\n\t\t\t\t\t\t\t\tif n256backAttr == nil {\n\t\t\t\t\t\t\t\t\tn256setup()\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tattr &= foregroundMask\n\t\t\t\t\t\t\t\tattr |= n256backAttr[n256]\n\t\t\t\t\t\t\t\ti += 2\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tattr = attr & (w.oldattr & foregroundMask)\n\t\t\t\t\t\t}\n\t\t\t\t\tcase n == 49: // reset foreground color.\n\t\t\t\t\t\tattr &= foregroundMask\n\t\t\t\t\t\tattr |= w.oldattr & backgroundMask\n\t\t\t\t\tcase 90 <= n && n <= 97:\n\t\t\t\t\t\tattr = (attr & backgroundMask)\n\t\t\t\t\t\tattr |= foregroundIntensity\n\t\t\t\t\t\tif (n-90)&1 != 0 {\n\t\t\t\t\t\t\tattr |= foregroundRed\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (n-90)&2 != 0 {\n\t\t\t\t\t\t\tattr |= foregroundGreen\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (n-90)&4 != 0 {\n\t\t\t\t\t\t\tattr |= foregroundBlue\n\t\t\t\t\t\t}\n\t\t\t\t\tcase 100 <= n && n <= 107:\n\t\t\t\t\t\tattr = (attr & foregroundMask)\n\t\t\t\t\t\tattr |= backgroundIntensity\n\t\t\t\t\t\tif (n-100)&1 != 0 {\n\t\t\t\t\t\t\tattr |= backgroundRed\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (n-100)&2 != 0 {\n\t\t\t\t\t\t\tattr |= backgroundGreen\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (n-100)&4 != 0 {\n\t\t\t\t\t\t\tattr |= backgroundBlue\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tprocSetConsoleTextAttribute.Call(uintptr(w.handle), uintptr(attr))\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn len(data) - w.lastbuf.Len(), nil\n}\n\ntype consoleColor struct {\n\trgb       int\n\tred       bool\n\tgreen     bool\n\tblue      bool\n\tintensity bool\n}\n\nfunc (c consoleColor) foregroundAttr() (attr word) {\n\tif c.red {\n\t\tattr |= foregroundRed\n\t}\n\tif c.green {\n\t\tattr |= foregroundGreen\n\t}\n\tif c.blue {\n\t\tattr |= foregroundBlue\n\t}\n\tif c.intensity {\n\t\tattr |= foregroundIntensity\n\t}\n\treturn\n}\n\nfunc (c consoleColor) backgroundAttr() (attr word) {\n\tif c.red {\n\t\tattr |= backgroundRed\n\t}\n\tif c.green {\n\t\tattr |= backgroundGreen\n\t}\n\tif c.blue {\n\t\tattr |= backgroundBlue\n\t}\n\tif c.intensity {\n\t\tattr |= backgroundIntensity\n\t}\n\treturn\n}\n\nvar color16 = []consoleColor{\n\tconsoleColor{0x000000, false, false, false, false},\n\tconsoleColor{0x000080, false, false, true, false},\n\tconsoleColor{0x008000, false, true, false, false},\n\tconsoleColor{0x008080, false, true, true, false},\n\tconsoleColor{0x800000, true, false, false, false},\n\tconsoleColor{0x800080, true, false, true, false},\n\tconsoleColor{0x808000, true, true, false, false},\n\tconsoleColor{0xc0c0c0, true, true, true, false},\n\tconsoleColor{0x808080, false, false, false, true},\n\tconsoleColor{0x0000ff, false, false, true, true},\n\tconsoleColor{0x00ff00, false, true, false, true},\n\tconsoleColor{0x00ffff, false, true, true, true},\n\tconsoleColor{0xff0000, true, false, false, true},\n\tconsoleColor{0xff00ff, true, false, true, true},\n\tconsoleColor{0xffff00, true, true, false, true},\n\tconsoleColor{0xffffff, true, true, true, true},\n}\n\ntype hsv struct {\n\th, s, v float32\n}\n\nfunc (a hsv) dist(b hsv) float32 {\n\tdh := a.h - b.h\n\tswitch {\n\tcase dh > 0.5:\n\t\tdh = 1 - dh\n\tcase dh < -0.5:\n\t\tdh = -1 - dh\n\t}\n\tds := a.s - b.s\n\tdv := a.v - b.v\n\treturn float32(math.Sqrt(float64(dh*dh + ds*ds + dv*dv)))\n}\n\nfunc toHSV(rgb int) hsv {\n\tr, g, b := float32((rgb&0xFF0000)>>16)/256.0,\n\t\tfloat32((rgb&0x00FF00)>>8)/256.0,\n\t\tfloat32(rgb&0x0000FF)/256.0\n\tmin, max := minmax3f(r, g, b)\n\th := max - min\n\tif h > 0 {\n\t\tif max == r {\n\t\t\th = (g - b) / h\n\t\t\tif h < 0 {\n\t\t\t\th += 6\n\t\t\t}\n\t\t} else if max == g {\n\t\t\th = 2 + (b-r)/h\n\t\t} else {\n\t\t\th = 4 + (r-g)/h\n\t\t}\n\t}\n\th /= 6.0\n\ts := max - min\n\tif max != 0 {\n\t\ts /= max\n\t}\n\tv := max\n\treturn hsv{h: h, s: s, v: v}\n}\n\ntype hsvTable []hsv\n\nfunc toHSVTable(rgbTable []consoleColor) hsvTable {\n\tt := make(hsvTable, len(rgbTable))\n\tfor i, c := range rgbTable {\n\t\tt[i] = toHSV(c.rgb)\n\t}\n\treturn t\n}\n\nfunc (t hsvTable) find(rgb int) consoleColor {\n\thsv := toHSV(rgb)\n\tn := 7\n\tl := float32(5.0)\n\tfor i, p := range t {\n\t\td := hsv.dist(p)\n\t\tif d < l {\n\t\t\tl, n = d, i\n\t\t}\n\t}\n\treturn color16[n]\n}\n\nfunc minmax3f(a, b, c float32) (min, max float32) {\n\tif a < b {\n\t\tif b < c {\n\t\t\treturn a, c\n\t\t} else if a < c {\n\t\t\treturn a, b\n\t\t} else {\n\t\t\treturn c, b\n\t\t}\n\t} else {\n\t\tif a < c {\n\t\t\treturn b, c\n\t\t} else if b < c {\n\t\t\treturn b, a\n\t\t} else {\n\t\t\treturn c, a\n\t\t}\n\t}\n}\n\nvar n256foreAttr []word\nvar n256backAttr []word\n\nfunc n256setup() {\n\tn256foreAttr = make([]word, 256)\n\tn256backAttr = make([]word, 256)\n\tt := toHSVTable(color16)\n\tfor i, rgb := range color256 {\n\t\tc := t.find(rgb)\n\t\tn256foreAttr[i] = c.foregroundAttr()\n\t\tn256backAttr[i] = c.backgroundAttr()\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/formatter/formatter.go",
    "content": "package formatter\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n)\n\n// ColorableStdOut and ColorableStdErr enable color output support on Windows\nvar ColorableStdOut = newColorable(os.Stdout)\nvar ColorableStdErr = newColorable(os.Stderr)\n\nconst COLS = 80\n\ntype ColorMode uint8\n\nconst (\n\tColorModeNone ColorMode = iota\n\tColorModeTerminal\n\tColorModePassthrough\n)\n\nvar SingletonFormatter = New(ColorModeTerminal)\n\nfunc F(format string, args ...any) string {\n\treturn SingletonFormatter.F(format, args...)\n}\n\nfunc Fi(indentation uint, format string, args ...any) string {\n\treturn SingletonFormatter.Fi(indentation, format, args...)\n}\n\nfunc Fiw(indentation uint, maxWidth uint, format string, args ...any) string {\n\treturn SingletonFormatter.Fiw(indentation, maxWidth, format, args...)\n}\n\ntype Formatter struct {\n\tColorMode                ColorMode\n\tcolors                   map[string]string\n\tstyleRe                  *regexp.Regexp\n\tpreserveColorStylingTags bool\n}\n\nfunc NewWithNoColorBool(noColor bool) Formatter {\n\tif noColor {\n\t\treturn New(ColorModeNone)\n\t}\n\treturn New(ColorModeTerminal)\n}\n\nfunc New(colorMode ColorMode) Formatter {\n\tcolorAliases := map[string]int{\n\t\t\"black\":   0,\n\t\t\"red\":     1,\n\t\t\"green\":   2,\n\t\t\"yellow\":  3,\n\t\t\"blue\":    4,\n\t\t\"magenta\": 5,\n\t\t\"cyan\":    6,\n\t\t\"white\":   7,\n\t}\n\tfor colorAlias, n := range colorAliases {\n\t\tcolorAliases[fmt.Sprintf(\"bright-%s\", colorAlias)] = n + 8\n\t}\n\n\tgetColor := func(color, defaultEscapeCode string) string {\n\t\tcolor = strings.ToUpper(strings.ReplaceAll(color, \"-\", \"_\"))\n\t\tenvVar := fmt.Sprintf(\"GINKGO_CLI_COLOR_%s\", color)\n\t\tenvVarColor := os.Getenv(envVar)\n\t\tif envVarColor == \"\" {\n\t\t\treturn defaultEscapeCode\n\t\t}\n\t\tif colorCode, ok := colorAliases[envVarColor]; ok {\n\t\t\treturn fmt.Sprintf(\"\\x1b[38;5;%dm\", colorCode)\n\t\t}\n\t\tcolorCode, err := strconv.Atoi(envVarColor)\n\t\tif err != nil || colorCode < 0 || colorCode > 255 {\n\t\t\treturn defaultEscapeCode\n\t\t}\n\t\treturn fmt.Sprintf(\"\\x1b[38;5;%dm\", colorCode)\n\t}\n\n\tif _, noColor := os.LookupEnv(\"GINKGO_NO_COLOR\"); noColor {\n\t\tcolorMode = ColorModeNone\n\t}\n\n\tf := Formatter{\n\t\tColorMode: colorMode,\n\t\tcolors: map[string]string{\n\t\t\t\"/\":         \"\\x1b[0m\",\n\t\t\t\"bold\":      \"\\x1b[1m\",\n\t\t\t\"underline\": \"\\x1b[4m\",\n\n\t\t\t\"red\":          getColor(\"red\", \"\\x1b[38;5;9m\"),\n\t\t\t\"orange\":       getColor(\"orange\", \"\\x1b[38;5;214m\"),\n\t\t\t\"coral\":        getColor(\"coral\", \"\\x1b[38;5;204m\"),\n\t\t\t\"magenta\":      getColor(\"magenta\", \"\\x1b[38;5;13m\"),\n\t\t\t\"green\":        getColor(\"green\", \"\\x1b[38;5;10m\"),\n\t\t\t\"dark-green\":   getColor(\"dark-green\", \"\\x1b[38;5;28m\"),\n\t\t\t\"yellow\":       getColor(\"yellow\", \"\\x1b[38;5;11m\"),\n\t\t\t\"light-yellow\": getColor(\"light-yellow\", \"\\x1b[38;5;228m\"),\n\t\t\t\"cyan\":         getColor(\"cyan\", \"\\x1b[38;5;14m\"),\n\t\t\t\"gray\":         getColor(\"gray\", \"\\x1b[38;5;243m\"),\n\t\t\t\"light-gray\":   getColor(\"light-gray\", \"\\x1b[38;5;246m\"),\n\t\t\t\"blue\":         getColor(\"blue\", \"\\x1b[38;5;12m\"),\n\t\t},\n\t}\n\tcolors := []string{}\n\tfor color := range f.colors {\n\t\tcolors = append(colors, color)\n\t}\n\tf.styleRe = regexp.MustCompile(\"{{(\" + strings.Join(colors, \"|\") + \")}}\")\n\treturn f\n}\n\nfunc (f Formatter) F(format string, args ...any) string {\n\treturn f.Fi(0, format, args...)\n}\n\nfunc (f Formatter) Fi(indentation uint, format string, args ...any) string {\n\treturn f.Fiw(indentation, 0, format, args...)\n}\n\nfunc (f Formatter) Fiw(indentation uint, maxWidth uint, format string, args ...any) string {\n\tout := f.style(format)\n\tif len(args) > 0 {\n\t\tout = fmt.Sprintf(out, args...)\n\t}\n\n\tif indentation == 0 && maxWidth == 0 {\n\t\treturn out\n\t}\n\n\tlines := strings.Split(out, \"\\n\")\n\n\tif maxWidth != 0 {\n\t\toutLines := []string{}\n\n\t\tmaxWidth = maxWidth - indentation*2\n\t\tfor _, line := range lines {\n\t\t\tif f.length(line) <= maxWidth {\n\t\t\t\toutLines = append(outLines, line)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\twords := strings.Split(line, \" \")\n\t\t\toutWords := []string{words[0]}\n\t\t\tlength := uint(f.length(words[0]))\n\t\t\tfor _, word := range words[1:] {\n\t\t\t\twordLength := f.length(word)\n\t\t\t\tif length+wordLength+1 <= maxWidth {\n\t\t\t\t\tlength += wordLength + 1\n\t\t\t\t\toutWords = append(outWords, word)\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\toutLines = append(outLines, strings.Join(outWords, \" \"))\n\t\t\t\toutWords = []string{word}\n\t\t\t\tlength = wordLength\n\t\t\t}\n\t\t\tif len(outWords) > 0 {\n\t\t\t\toutLines = append(outLines, strings.Join(outWords, \" \"))\n\t\t\t}\n\t\t}\n\n\t\tlines = outLines\n\t}\n\n\tif indentation == 0 {\n\t\treturn strings.Join(lines, \"\\n\")\n\t}\n\n\tpadding := strings.Repeat(\"  \", int(indentation))\n\tfor i := range lines {\n\t\tif lines[i] != \"\" {\n\t\t\tlines[i] = padding + lines[i]\n\t\t}\n\t}\n\n\treturn strings.Join(lines, \"\\n\")\n}\n\nfunc (f Formatter) length(styled string) uint {\n\tn := uint(0)\n\tinStyle := false\n\tfor _, b := range styled {\n\t\tif inStyle {\n\t\t\tif b == 'm' {\n\t\t\t\tinStyle = false\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\t\tif b == '\\x1b' {\n\t\t\tinStyle = true\n\t\t\tcontinue\n\t\t}\n\t\tn += 1\n\t}\n\treturn n\n}\n\nfunc (f Formatter) CycleJoin(elements []string, joiner string, cycle []string) string {\n\tif len(elements) == 0 {\n\t\treturn \"\"\n\t}\n\tn := len(cycle)\n\tout := \"\"\n\tfor i, text := range elements {\n\t\tout += cycle[i%n] + text\n\t\tif i < len(elements)-1 {\n\t\t\tout += joiner\n\t\t}\n\t}\n\tout += \"{{/}}\"\n\treturn f.style(out)\n}\n\nfunc (f Formatter) style(s string) string {\n\tswitch f.ColorMode {\n\tcase ColorModeNone:\n\t\treturn f.styleRe.ReplaceAllString(s, \"\")\n\tcase ColorModePassthrough:\n\t\treturn s\n\tcase ColorModeTerminal:\n\t\treturn f.styleRe.ReplaceAllStringFunc(s, func(match string) string {\n\t\t\tif out, ok := f.colors[strings.Trim(match, \"{}\")]; ok {\n\t\t\t\treturn out\n\t\t\t}\n\t\t\treturn match\n\t\t})\n\t}\n\n\treturn \"\"\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/automaxprocs/README.md",
    "content": "This entire directory is a lightly modified clone of https://github.com/uber-go/automaxprocs\n\nIt will be removed when Go 1.26 ships and we no longer need to support Go 1.24 (which does not correctly autodetect maxprocs in containers).\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/automaxprocs/automaxprocs.go",
    "content": "// Copyright (c) 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all 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\n// THE SOFTWARE.\n\n// Package maxprocs lets Go programs easily configure runtime.GOMAXPROCS to\n// match the configured Linux CPU quota. Unlike the top-level automaxprocs\n// package, it lets the caller configure logging and handle errors.\npackage automaxprocs\n\nimport (\n\t\"os\"\n\t\"runtime\"\n)\n\nfunc init() {\n\tSet()\n}\n\nconst _maxProcsKey = \"GOMAXPROCS\"\n\ntype config struct {\n\tprocs          func(int, func(v float64) int) (int, CPUQuotaStatus, error)\n\tminGOMAXPROCS  int\n\troundQuotaFunc func(v float64) int\n}\n\n// Set GOMAXPROCS to match the Linux container CPU quota (if any), returning\n// any error encountered and an undo function.\n//\n// Set is a no-op on non-Linux systems and in Linux environments without a\n// configured CPU quota.\nfunc Set() error {\n\tcfg := &config{\n\t\tprocs:          CPUQuotaToGOMAXPROCS,\n\t\troundQuotaFunc: DefaultRoundFunc,\n\t\tminGOMAXPROCS:  1,\n\t}\n\n\t// Honor the GOMAXPROCS environment variable if present. Otherwise, amend\n\t// `runtime.GOMAXPROCS()` with the current process' CPU quota if the OS is\n\t// Linux, and guarantee a minimum value of 1. The minimum guaranteed value\n\t// can be overridden using `maxprocs.Min()`.\n\tif _, exists := os.LookupEnv(_maxProcsKey); exists {\n\t\treturn nil\n\t}\n\tmaxProcs, status, err := cfg.procs(cfg.minGOMAXPROCS, cfg.roundQuotaFunc)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif status == CPUQuotaUndefined {\n\t\treturn nil\n\t}\n\truntime.GOMAXPROCS(maxProcs)\n\treturn nil\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/automaxprocs/cgroup.go",
    "content": "// Copyright (c) 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all 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\n// THE SOFTWARE.\n\n//go:build linux\n// +build linux\n\npackage automaxprocs\n\nimport (\n\t\"bufio\"\n\t\"io\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strconv\"\n)\n\n// CGroup represents the data structure for a Linux control group.\ntype CGroup struct {\n\tpath string\n}\n\n// NewCGroup returns a new *CGroup from a given path.\nfunc NewCGroup(path string) *CGroup {\n\treturn &CGroup{path: path}\n}\n\n// Path returns the path of the CGroup*.\nfunc (cg *CGroup) Path() string {\n\treturn cg.path\n}\n\n// ParamPath returns the path of the given cgroup param under itself.\nfunc (cg *CGroup) ParamPath(param string) string {\n\treturn filepath.Join(cg.path, param)\n}\n\n// readFirstLine reads the first line from a cgroup param file.\nfunc (cg *CGroup) readFirstLine(param string) (string, error) {\n\tparamFile, err := os.Open(cg.ParamPath(param))\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tdefer paramFile.Close()\n\n\tscanner := bufio.NewScanner(paramFile)\n\tif scanner.Scan() {\n\t\treturn scanner.Text(), nil\n\t}\n\tif err := scanner.Err(); err != nil {\n\t\treturn \"\", err\n\t}\n\treturn \"\", io.ErrUnexpectedEOF\n}\n\n// readInt parses the first line from a cgroup param file as int.\nfunc (cg *CGroup) readInt(param string) (int, error) {\n\ttext, err := cg.readFirstLine(param)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\treturn strconv.Atoi(text)\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/automaxprocs/cgroups.go",
    "content": "// Copyright (c) 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all 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\n// THE SOFTWARE.\n\n//go:build linux\n// +build linux\n\npackage automaxprocs\n\nconst (\n\t// _cgroupFSType is the Linux CGroup file system type used in\n\t// `/proc/$PID/mountinfo`.\n\t_cgroupFSType = \"cgroup\"\n\t// _cgroupSubsysCPU is the CPU CGroup subsystem.\n\t_cgroupSubsysCPU = \"cpu\"\n\t// _cgroupSubsysCPUAcct is the CPU accounting CGroup subsystem.\n\t_cgroupSubsysCPUAcct = \"cpuacct\"\n\t// _cgroupSubsysCPUSet is the CPUSet CGroup subsystem.\n\t_cgroupSubsysCPUSet = \"cpuset\"\n\t// _cgroupSubsysMemory is the Memory CGroup subsystem.\n\t_cgroupSubsysMemory = \"memory\"\n\n\t// _cgroupCPUCFSQuotaUsParam is the file name for the CGroup CFS quota\n\t// parameter.\n\t_cgroupCPUCFSQuotaUsParam = \"cpu.cfs_quota_us\"\n\t// _cgroupCPUCFSPeriodUsParam is the file name for the CGroup CFS period\n\t// parameter.\n\t_cgroupCPUCFSPeriodUsParam = \"cpu.cfs_period_us\"\n)\n\nconst (\n\t_procPathCGroup    = \"/proc/self/cgroup\"\n\t_procPathMountInfo = \"/proc/self/mountinfo\"\n)\n\n// CGroups is a map that associates each CGroup with its subsystem name.\ntype CGroups map[string]*CGroup\n\n// NewCGroups returns a new *CGroups from given `mountinfo` and `cgroup` files\n// under for some process under `/proc` file system (see also proc(5) for more\n// information).\nfunc NewCGroups(procPathMountInfo, procPathCGroup string) (CGroups, error) {\n\tcgroupSubsystems, err := parseCGroupSubsystems(procPathCGroup)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tcgroups := make(CGroups)\n\tnewMountPoint := func(mp *MountPoint) error {\n\t\tif mp.FSType != _cgroupFSType {\n\t\t\treturn nil\n\t\t}\n\n\t\tfor _, opt := range mp.SuperOptions {\n\t\t\tsubsys, exists := cgroupSubsystems[opt]\n\t\t\tif !exists {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tcgroupPath, err := mp.Translate(subsys.Name)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tcgroups[opt] = NewCGroup(cgroupPath)\n\t\t}\n\n\t\treturn nil\n\t}\n\n\tif err := parseMountInfo(procPathMountInfo, newMountPoint); err != nil {\n\t\treturn nil, err\n\t}\n\treturn cgroups, nil\n}\n\n// NewCGroupsForCurrentProcess returns a new *CGroups instance for the current\n// process.\nfunc NewCGroupsForCurrentProcess() (CGroups, error) {\n\treturn NewCGroups(_procPathMountInfo, _procPathCGroup)\n}\n\n// CPUQuota returns the CPU quota applied with the CPU cgroup controller.\n// It is a result of `cpu.cfs_quota_us / cpu.cfs_period_us`. If the value of\n// `cpu.cfs_quota_us` was not set (-1), the method returns `(-1, nil)`.\nfunc (cg CGroups) CPUQuota() (float64, bool, error) {\n\tcpuCGroup, exists := cg[_cgroupSubsysCPU]\n\tif !exists {\n\t\treturn -1, false, nil\n\t}\n\n\tcfsQuotaUs, err := cpuCGroup.readInt(_cgroupCPUCFSQuotaUsParam)\n\tif defined := cfsQuotaUs > 0; err != nil || !defined {\n\t\treturn -1, defined, err\n\t}\n\n\tcfsPeriodUs, err := cpuCGroup.readInt(_cgroupCPUCFSPeriodUsParam)\n\tif defined := cfsPeriodUs > 0; err != nil || !defined {\n\t\treturn -1, defined, err\n\t}\n\n\treturn float64(cfsQuotaUs) / float64(cfsPeriodUs), true, nil\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/automaxprocs/cgroups2.go",
    "content": "// Copyright (c) 2022 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all 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\n// THE SOFTWARE.\n\n//go:build linux\n// +build linux\n\npackage automaxprocs\n\nimport (\n\t\"bufio\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"path\"\n\t\"strconv\"\n\t\"strings\"\n)\n\nconst (\n\t// _cgroupv2CPUMax is the file name for the CGroup-V2 CPU max and period\n\t// parameter.\n\t_cgroupv2CPUMax = \"cpu.max\"\n\t// _cgroupFSType is the Linux CGroup-V2 file system type used in\n\t// `/proc/$PID/mountinfo`.\n\t_cgroupv2FSType = \"cgroup2\"\n\n\t_cgroupv2MountPoint = \"/sys/fs/cgroup\"\n\n\t_cgroupV2CPUMaxDefaultPeriod = 100000\n\t_cgroupV2CPUMaxQuotaMax      = \"max\"\n)\n\nconst (\n\t_cgroupv2CPUMaxQuotaIndex = iota\n\t_cgroupv2CPUMaxPeriodIndex\n)\n\n// ErrNotV2 indicates that the system is not using cgroups2.\nvar ErrNotV2 = errors.New(\"not using cgroups2\")\n\n// CGroups2 provides access to cgroups data for systems using cgroups2.\ntype CGroups2 struct {\n\tmountPoint string\n\tgroupPath  string\n\tcpuMaxFile string\n}\n\n// NewCGroups2ForCurrentProcess builds a CGroups2 for the current process.\n//\n// This returns ErrNotV2 if the system is not using cgroups2.\nfunc NewCGroups2ForCurrentProcess() (*CGroups2, error) {\n\treturn newCGroups2From(_procPathMountInfo, _procPathCGroup)\n}\n\nfunc newCGroups2From(mountInfoPath, procPathCGroup string) (*CGroups2, error) {\n\tisV2, err := isCGroupV2(mountInfoPath)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif !isV2 {\n\t\treturn nil, ErrNotV2\n\t}\n\n\tsubsystems, err := parseCGroupSubsystems(procPathCGroup)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Find v2 subsystem by looking for the `0` id\n\tvar v2subsys *CGroupSubsys\n\tfor _, subsys := range subsystems {\n\t\tif subsys.ID == 0 {\n\t\t\tv2subsys = subsys\n\t\t\tbreak\n\t\t}\n\t}\n\n\tif v2subsys == nil {\n\t\treturn nil, ErrNotV2\n\t}\n\n\treturn &CGroups2{\n\t\tmountPoint: _cgroupv2MountPoint,\n\t\tgroupPath:  v2subsys.Name,\n\t\tcpuMaxFile: _cgroupv2CPUMax,\n\t}, nil\n}\n\nfunc isCGroupV2(procPathMountInfo string) (bool, error) {\n\tvar (\n\t\tisV2          bool\n\t\tnewMountPoint = func(mp *MountPoint) error {\n\t\t\tisV2 = isV2 || (mp.FSType == _cgroupv2FSType && mp.MountPoint == _cgroupv2MountPoint)\n\t\t\treturn nil\n\t\t}\n\t)\n\n\tif err := parseMountInfo(procPathMountInfo, newMountPoint); err != nil {\n\t\treturn false, err\n\t}\n\n\treturn isV2, nil\n}\n\n// CPUQuota returns the CPU quota applied with the CPU cgroup2 controller.\n// It is a result of reading cpu quota and period from cpu.max file.\n// It will return `cpu.max / cpu.period`. If cpu.max is set to max, it returns\n// (-1, false, nil)\nfunc (cg *CGroups2) CPUQuota() (float64, bool, error) {\n\tcpuMaxParams, err := os.Open(path.Join(cg.mountPoint, cg.groupPath, cg.cpuMaxFile))\n\tif err != nil {\n\t\tif os.IsNotExist(err) {\n\t\t\treturn -1, false, nil\n\t\t}\n\t\treturn -1, false, err\n\t}\n\tdefer cpuMaxParams.Close()\n\n\tscanner := bufio.NewScanner(cpuMaxParams)\n\tif scanner.Scan() {\n\t\tfields := strings.Fields(scanner.Text())\n\t\tif len(fields) == 0 || len(fields) > 2 {\n\t\t\treturn -1, false, fmt.Errorf(\"invalid format\")\n\t\t}\n\n\t\tif fields[_cgroupv2CPUMaxQuotaIndex] == _cgroupV2CPUMaxQuotaMax {\n\t\t\treturn -1, false, nil\n\t\t}\n\n\t\tmax, err := strconv.Atoi(fields[_cgroupv2CPUMaxQuotaIndex])\n\t\tif err != nil {\n\t\t\treturn -1, false, err\n\t\t}\n\n\t\tvar period int\n\t\tif len(fields) == 1 {\n\t\t\tperiod = _cgroupV2CPUMaxDefaultPeriod\n\t\t} else {\n\t\t\tperiod, err = strconv.Atoi(fields[_cgroupv2CPUMaxPeriodIndex])\n\t\t\tif err != nil {\n\t\t\t\treturn -1, false, err\n\t\t\t}\n\n\t\t\tif period == 0 {\n\t\t\t\treturn -1, false, errors.New(\"zero value for period is not allowed\")\n\t\t\t}\n\t\t}\n\n\t\treturn float64(max) / float64(period), true, nil\n\t}\n\n\tif err := scanner.Err(); err != nil {\n\t\treturn -1, false, err\n\t}\n\n\treturn 0, false, io.ErrUnexpectedEOF\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/automaxprocs/cpu_quota_linux.go",
    "content": "// Copyright (c) 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all 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\n// THE SOFTWARE.\n\n//go:build linux\n// +build linux\n\npackage automaxprocs\n\nimport (\n\t\"errors\"\n)\n\n// CPUQuotaToGOMAXPROCS converts the CPU quota applied to the calling process\n// to a valid GOMAXPROCS value. The quota is converted from float to int using round.\n// If round == nil, DefaultRoundFunc is used.\nfunc CPUQuotaToGOMAXPROCS(minValue int, round func(v float64) int) (int, CPUQuotaStatus, error) {\n\tif round == nil {\n\t\tround = DefaultRoundFunc\n\t}\n\tcgroups, err := _newQueryer()\n\tif err != nil {\n\t\treturn -1, CPUQuotaUndefined, err\n\t}\n\n\tquota, defined, err := cgroups.CPUQuota()\n\tif !defined || err != nil {\n\t\treturn -1, CPUQuotaUndefined, err\n\t}\n\n\tmaxProcs := round(quota)\n\tif minValue > 0 && maxProcs < minValue {\n\t\treturn minValue, CPUQuotaMinUsed, nil\n\t}\n\treturn maxProcs, CPUQuotaUsed, nil\n}\n\ntype queryer interface {\n\tCPUQuota() (float64, bool, error)\n}\n\nvar (\n\t_newCgroups2 = NewCGroups2ForCurrentProcess\n\t_newCgroups  = NewCGroupsForCurrentProcess\n\t_newQueryer  = newQueryer\n)\n\nfunc newQueryer() (queryer, error) {\n\tcgroups, err := _newCgroups2()\n\tif err == nil {\n\t\treturn cgroups, nil\n\t}\n\tif errors.Is(err, ErrNotV2) {\n\t\treturn _newCgroups()\n\t}\n\treturn nil, err\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/automaxprocs/cpu_quota_unsupported.go",
    "content": "// Copyright (c) 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all 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\n// THE SOFTWARE.\n\n//go:build !linux\n// +build !linux\n\npackage automaxprocs\n\n// CPUQuotaToGOMAXPROCS converts the CPU quota applied to the calling process\n// to a valid GOMAXPROCS value. This is Linux-specific and not supported in the\n// current OS.\nfunc CPUQuotaToGOMAXPROCS(_ int, _ func(v float64) int) (int, CPUQuotaStatus, error) {\n\treturn -1, CPUQuotaUndefined, nil\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/automaxprocs/errors.go",
    "content": "// Copyright (c) 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all 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\n// THE SOFTWARE.\n\n//go:build linux\n// +build linux\n\npackage automaxprocs\n\nimport \"fmt\"\n\ntype cgroupSubsysFormatInvalidError struct {\n\tline string\n}\n\ntype mountPointFormatInvalidError struct {\n\tline string\n}\n\ntype pathNotExposedFromMountPointError struct {\n\tmountPoint string\n\troot       string\n\tpath       string\n}\n\nfunc (err cgroupSubsysFormatInvalidError) Error() string {\n\treturn fmt.Sprintf(\"invalid format for CGroupSubsys: %q\", err.line)\n}\n\nfunc (err mountPointFormatInvalidError) Error() string {\n\treturn fmt.Sprintf(\"invalid format for MountPoint: %q\", err.line)\n}\n\nfunc (err pathNotExposedFromMountPointError) Error() string {\n\treturn fmt.Sprintf(\"path %q is not a descendant of mount point root %q and cannot be exposed from %q\", err.path, err.root, err.mountPoint)\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/automaxprocs/mountpoint.go",
    "content": "// Copyright (c) 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all 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\n// THE SOFTWARE.\n\n//go:build linux\n// +build linux\n\npackage automaxprocs\n\nimport (\n\t\"bufio\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strconv\"\n\t\"strings\"\n)\n\nconst (\n\t_mountInfoSep               = \" \"\n\t_mountInfoOptsSep           = \",\"\n\t_mountInfoOptionalFieldsSep = \"-\"\n)\n\nconst (\n\t_miFieldIDMountID = iota\n\t_miFieldIDParentID\n\t_miFieldIDDeviceID\n\t_miFieldIDRoot\n\t_miFieldIDMountPoint\n\t_miFieldIDOptions\n\t_miFieldIDOptionalFields\n\n\t_miFieldCountFirstHalf\n)\n\nconst (\n\t_miFieldOffsetFSType = iota\n\t_miFieldOffsetMountSource\n\t_miFieldOffsetSuperOptions\n\n\t_miFieldCountSecondHalf\n)\n\nconst _miFieldCountMin = _miFieldCountFirstHalf + _miFieldCountSecondHalf\n\n// MountPoint is the data structure for the mount points in\n// `/proc/$PID/mountinfo`. See also proc(5) for more information.\ntype MountPoint struct {\n\tMountID        int\n\tParentID       int\n\tDeviceID       string\n\tRoot           string\n\tMountPoint     string\n\tOptions        []string\n\tOptionalFields []string\n\tFSType         string\n\tMountSource    string\n\tSuperOptions   []string\n}\n\n// NewMountPointFromLine parses a line read from `/proc/$PID/mountinfo` and\n// returns a new *MountPoint.\nfunc NewMountPointFromLine(line string) (*MountPoint, error) {\n\tfields := strings.Split(line, _mountInfoSep)\n\n\tif len(fields) < _miFieldCountMin {\n\t\treturn nil, mountPointFormatInvalidError{line}\n\t}\n\n\tmountID, err := strconv.Atoi(fields[_miFieldIDMountID])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tparentID, err := strconv.Atoi(fields[_miFieldIDParentID])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tfor i, field := range fields[_miFieldIDOptionalFields:] {\n\t\tif field == _mountInfoOptionalFieldsSep {\n\t\t\t// End of optional fields.\n\t\t\tfsTypeStart := _miFieldIDOptionalFields + i + 1\n\n\t\t\t// Now we know where the optional fields end, split the line again with a\n\t\t\t// limit to avoid issues with spaces in super options as present on WSL.\n\t\t\tfields = strings.SplitN(line, _mountInfoSep, fsTypeStart+_miFieldCountSecondHalf)\n\t\t\tif len(fields) != fsTypeStart+_miFieldCountSecondHalf {\n\t\t\t\treturn nil, mountPointFormatInvalidError{line}\n\t\t\t}\n\n\t\t\tmiFieldIDFSType := _miFieldOffsetFSType + fsTypeStart\n\t\t\tmiFieldIDMountSource := _miFieldOffsetMountSource + fsTypeStart\n\t\t\tmiFieldIDSuperOptions := _miFieldOffsetSuperOptions + fsTypeStart\n\n\t\t\treturn &MountPoint{\n\t\t\t\tMountID:        mountID,\n\t\t\t\tParentID:       parentID,\n\t\t\t\tDeviceID:       fields[_miFieldIDDeviceID],\n\t\t\t\tRoot:           fields[_miFieldIDRoot],\n\t\t\t\tMountPoint:     fields[_miFieldIDMountPoint],\n\t\t\t\tOptions:        strings.Split(fields[_miFieldIDOptions], _mountInfoOptsSep),\n\t\t\t\tOptionalFields: fields[_miFieldIDOptionalFields:(fsTypeStart - 1)],\n\t\t\t\tFSType:         fields[miFieldIDFSType],\n\t\t\t\tMountSource:    fields[miFieldIDMountSource],\n\t\t\t\tSuperOptions:   strings.Split(fields[miFieldIDSuperOptions], _mountInfoOptsSep),\n\t\t\t}, nil\n\t\t}\n\t}\n\n\treturn nil, mountPointFormatInvalidError{line}\n}\n\n// Translate converts an absolute path inside the *MountPoint's file system to\n// the host file system path in the mount namespace the *MountPoint belongs to.\nfunc (mp *MountPoint) Translate(absPath string) (string, error) {\n\trelPath, err := filepath.Rel(mp.Root, absPath)\n\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tif relPath == \"..\" || strings.HasPrefix(relPath, \"../\") {\n\t\treturn \"\", pathNotExposedFromMountPointError{\n\t\t\tmountPoint: mp.MountPoint,\n\t\t\troot:       mp.Root,\n\t\t\tpath:       absPath,\n\t\t}\n\t}\n\n\treturn filepath.Join(mp.MountPoint, relPath), nil\n}\n\n// parseMountInfo parses procPathMountInfo (usually at `/proc/$PID/mountinfo`)\n// and yields parsed *MountPoint into newMountPoint.\nfunc parseMountInfo(procPathMountInfo string, newMountPoint func(*MountPoint) error) error {\n\tmountInfoFile, err := os.Open(procPathMountInfo)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer mountInfoFile.Close()\n\n\tscanner := bufio.NewScanner(mountInfoFile)\n\n\tfor scanner.Scan() {\n\t\tmountPoint, err := NewMountPointFromLine(scanner.Text())\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif err := newMountPoint(mountPoint); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn scanner.Err()\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/automaxprocs/runtime.go",
    "content": "// Copyright (c) 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all 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\n// THE SOFTWARE.\n\npackage automaxprocs\n\nimport \"math\"\n\n// CPUQuotaStatus presents the status of how CPU quota is used\ntype CPUQuotaStatus int\n\nconst (\n\t// CPUQuotaUndefined is returned when CPU quota is undefined\n\tCPUQuotaUndefined CPUQuotaStatus = iota\n\t// CPUQuotaUsed is returned when a valid CPU quota can be used\n\tCPUQuotaUsed\n\t// CPUQuotaMinUsed is returned when CPU quota is smaller than the min value\n\tCPUQuotaMinUsed\n)\n\n// DefaultRoundFunc is the default function to convert CPU quota from float to int. It rounds the value down (floor).\nfunc DefaultRoundFunc(v float64) int {\n\treturn int(math.Floor(v))\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/automaxprocs/subsys.go",
    "content": "// Copyright (c) 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all 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\n// THE SOFTWARE.\n\n//go:build linux\n// +build linux\n\npackage automaxprocs\n\nimport (\n\t\"bufio\"\n\t\"os\"\n\t\"strconv\"\n\t\"strings\"\n)\n\nconst (\n\t_cgroupSep       = \":\"\n\t_cgroupSubsysSep = \",\"\n)\n\nconst (\n\t_csFieldIDID = iota\n\t_csFieldIDSubsystems\n\t_csFieldIDName\n\t_csFieldCount\n)\n\n// CGroupSubsys represents the data structure for entities in\n// `/proc/$PID/cgroup`. See also proc(5) for more information.\ntype CGroupSubsys struct {\n\tID         int\n\tSubsystems []string\n\tName       string\n}\n\n// NewCGroupSubsysFromLine returns a new *CGroupSubsys by parsing a string in\n// the format of `/proc/$PID/cgroup`\nfunc NewCGroupSubsysFromLine(line string) (*CGroupSubsys, error) {\n\tfields := strings.SplitN(line, _cgroupSep, _csFieldCount)\n\n\tif len(fields) != _csFieldCount {\n\t\treturn nil, cgroupSubsysFormatInvalidError{line}\n\t}\n\n\tid, err := strconv.Atoi(fields[_csFieldIDID])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tcgroup := &CGroupSubsys{\n\t\tID:         id,\n\t\tSubsystems: strings.Split(fields[_csFieldIDSubsystems], _cgroupSubsysSep),\n\t\tName:       fields[_csFieldIDName],\n\t}\n\n\treturn cgroup, nil\n}\n\n// parseCGroupSubsystems parses procPathCGroup (usually at `/proc/$PID/cgroup`)\n// and returns a new map[string]*CGroupSubsys.\nfunc parseCGroupSubsystems(procPathCGroup string) (map[string]*CGroupSubsys, error) {\n\tcgroupFile, err := os.Open(procPathCGroup)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer cgroupFile.Close()\n\n\tscanner := bufio.NewScanner(cgroupFile)\n\tsubsystems := make(map[string]*CGroupSubsys)\n\n\tfor scanner.Scan() {\n\t\tcgroup, err := NewCGroupSubsysFromLine(scanner.Text())\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tfor _, subsys := range cgroup.Subsystems {\n\t\t\tsubsystems[subsys] = cgroup\n\t\t}\n\t}\n\n\tif err := scanner.Err(); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn subsystems, nil\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/automaxprocs.go",
    "content": "//go:build !go1.25\n// +build !go1.25\n\npackage main\n\nimport (\n\t_ \"github.com/onsi/ginkgo/v2/ginkgo/automaxprocs\"\n)\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/build/build_command.go",
    "content": "package build\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"path\"\n\n\t\"github.com/onsi/ginkgo/v2/ginkgo/command\"\n\t\"github.com/onsi/ginkgo/v2/ginkgo/internal\"\n\t\"github.com/onsi/ginkgo/v2/types\"\n)\n\nfunc BuildBuildCommand() command.Command {\n\tvar cliConfig = types.NewDefaultCLIConfig()\n\tvar goFlagsConfig = types.NewDefaultGoFlagsConfig()\n\n\tflags, err := types.BuildBuildCommandFlagSet(&cliConfig, &goFlagsConfig)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\treturn command.Command{\n\t\tName:     \"build\",\n\t\tFlags:    flags,\n\t\tUsage:    \"ginkgo build <FLAGS> <PACKAGES>\",\n\t\tShortDoc: \"Build the passed in <PACKAGES> (or the package in the current directory if left blank).\",\n\t\tDocLink:  \"precompiling-suites\",\n\t\tCommand: func(args []string, _ []string) {\n\t\t\tvar errors []error\n\t\t\tcliConfig, goFlagsConfig, errors = types.VetAndInitializeCLIAndGoConfig(cliConfig, goFlagsConfig)\n\t\t\tcommand.AbortIfErrors(\"Ginkgo detected configuration issues:\", errors)\n\t\t\tbuildSpecs(args, cliConfig, goFlagsConfig)\n\t\t},\n\t}\n}\n\nfunc buildSpecs(args []string, cliConfig types.CLIConfig, goFlagsConfig types.GoFlagsConfig) {\n\tsuites := internal.FindSuites(args, cliConfig, false).WithoutState(internal.TestSuiteStateSkippedByFilter)\n\tif len(suites) == 0 {\n\t\tcommand.AbortWith(\"Found no test suites\")\n\t}\n\n\tinternal.VerifyCLIAndFrameworkVersion(suites)\n\n\topc := internal.NewOrderedParallelCompiler(cliConfig.ComputedNumCompilers())\n\topc.StartCompiling(suites, goFlagsConfig, true)\n\n\tfor {\n\t\tsuiteIdx, suite := opc.Next()\n\t\tif suiteIdx >= len(suites) {\n\t\t\tbreak\n\t\t}\n\t\tsuites[suiteIdx] = suite\n\t\tif suite.State.Is(internal.TestSuiteStateFailedToCompile) {\n\t\t\tfmt.Println(suite.CompilationError.Error())\n\t\t} else {\n\t\t\tvar testBinPath string\n\t\t\tif len(goFlagsConfig.O) != 0 {\n\t\t\t\tstat, err := os.Stat(goFlagsConfig.O)\n\t\t\t\tif err != nil {\n\t\t\t\t\tpanic(err)\n\t\t\t\t}\n\t\t\t\tif stat.IsDir() {\n\t\t\t\t\ttestBinPath = goFlagsConfig.O + \"/\" + suite.PackageName + \".test\"\n\t\t\t\t} else {\n\t\t\t\t\ttestBinPath = goFlagsConfig.O\n\t\t\t\t}\n\t\t\t}\n\t\t\tif len(testBinPath) == 0 {\n\t\t\t\ttestBinPath = path.Join(suite.Path, suite.PackageName+\".test\")\n\t\t\t}\n\t\t\tfmt.Printf(\"Compiled %s\\n\", testBinPath)\n\t\t}\n\t}\n\n\tif suites.CountWithState(internal.TestSuiteStateFailedToCompile) > 0 {\n\t\tcommand.AbortWith(\"Failed to compile all tests\")\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/command/abort.go",
    "content": "package command\n\nimport \"fmt\"\n\ntype AbortDetails struct {\n\tExitCode  int\n\tError     error\n\tEmitUsage bool\n}\n\nfunc Abort(details AbortDetails) {\n\tpanic(details)\n}\n\nfunc AbortGracefullyWith(format string, args ...any) {\n\tAbort(AbortDetails{\n\t\tExitCode:  0,\n\t\tError:     fmt.Errorf(format, args...),\n\t\tEmitUsage: false,\n\t})\n}\n\nfunc AbortWith(format string, args ...any) {\n\tAbort(AbortDetails{\n\t\tExitCode:  1,\n\t\tError:     fmt.Errorf(format, args...),\n\t\tEmitUsage: false,\n\t})\n}\n\nfunc AbortWithUsage(format string, args ...any) {\n\tAbort(AbortDetails{\n\t\tExitCode:  1,\n\t\tError:     fmt.Errorf(format, args...),\n\t\tEmitUsage: true,\n\t})\n}\n\nfunc AbortIfError(preamble string, err error) {\n\tif err != nil {\n\t\tAbort(AbortDetails{\n\t\t\tExitCode:  1,\n\t\t\tError:     fmt.Errorf(\"%s\\n%s\", preamble, err.Error()),\n\t\t\tEmitUsage: false,\n\t\t})\n\t}\n}\n\nfunc AbortIfErrors(preamble string, errors []error) {\n\tif len(errors) > 0 {\n\t\tout := \"\"\n\t\tfor _, err := range errors {\n\t\t\tout += err.Error()\n\t\t}\n\t\tAbort(AbortDetails{\n\t\t\tExitCode:  1,\n\t\t\tError:     fmt.Errorf(\"%s\\n%s\", preamble, out),\n\t\t\tEmitUsage: false,\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/command/command.go",
    "content": "package command\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"strings\"\n\n\t\"github.com/onsi/ginkgo/v2/formatter\"\n\t\"github.com/onsi/ginkgo/v2/types\"\n)\n\ntype Command struct {\n\tName          string\n\tFlags         types.GinkgoFlagSet\n\tUsage         string\n\tShortDoc      string\n\tDocumentation string\n\tDocLink       string\n\tCommand       func(args []string, additionalArgs []string)\n}\n\nfunc (c Command) Run(args []string, additionalArgs []string) {\n\targs, err := c.Flags.Parse(args)\n\tif err != nil {\n\t\tAbortWithUsage(\"%s\", err.Error())\n\t}\n\tfor _, arg := range args {\n\t\tif len(arg) > 1 && strings.HasPrefix(arg, \"-\") {\n\t\t\tAbortWith(\"%s\", types.GinkgoErrors.FlagAfterPositionalParameter().Error())\n\t\t}\n\t}\n\tc.Command(args, additionalArgs)\n}\n\nfunc (c Command) EmitUsage(writer io.Writer) {\n\tfmt.Fprintln(writer, formatter.F(\"{{bold}}\"+c.Usage+\"{{/}}\"))\n\tfmt.Fprintln(writer, formatter.F(\"{{gray}}%s{{/}}\", strings.Repeat(\"-\", len(c.Usage))))\n\tif c.ShortDoc != \"\" {\n\t\tfmt.Fprintln(writer, formatter.Fiw(0, formatter.COLS, c.ShortDoc))\n\t\tfmt.Fprintln(writer, \"\")\n\t}\n\tif c.Documentation != \"\" {\n\t\tfmt.Fprintln(writer, formatter.Fiw(0, formatter.COLS, c.Documentation))\n\t\tfmt.Fprintln(writer, \"\")\n\t}\n\tif c.DocLink != \"\" {\n\t\tfmt.Fprintln(writer, formatter.Fi(0, \"{{bold}}Learn more at:{{/}} {{cyan}}{{underline}}http://onsi.github.io/ginkgo/#%s{{/}}\", c.DocLink))\n\t\tfmt.Fprintln(writer, \"\")\n\t}\n\tflagUsage := c.Flags.Usage()\n\tif flagUsage != \"\" {\n\t\tfmt.Fprint(writer, formatter.F(flagUsage))\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/command/program.go",
    "content": "package command\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"strings\"\n\n\t\"github.com/onsi/ginkgo/v2/formatter\"\n\t\"github.com/onsi/ginkgo/v2/types\"\n)\n\ntype Program struct {\n\tName               string\n\tHeading            string\n\tCommands           []Command\n\tDefaultCommand     Command\n\tDeprecatedCommands []DeprecatedCommand\n\n\t//For testing - leave as nil in production\n\tOutWriter io.Writer\n\tErrWriter io.Writer\n\tExiter    func(code int)\n}\n\ntype DeprecatedCommand struct {\n\tName        string\n\tDeprecation types.Deprecation\n}\n\nfunc (p Program) RunAndExit(osArgs []string) {\n\tvar command Command\n\tdeprecationTracker := types.NewDeprecationTracker()\n\tif p.Exiter == nil {\n\t\tp.Exiter = os.Exit\n\t}\n\tif p.OutWriter == nil {\n\t\tp.OutWriter = formatter.ColorableStdOut\n\t}\n\tif p.ErrWriter == nil {\n\t\tp.ErrWriter = formatter.ColorableStdErr\n\t}\n\n\tdefer func() {\n\t\texitCode := 0\n\n\t\tif r := recover(); r != nil {\n\t\t\tdetails, ok := r.(AbortDetails)\n\t\t\tif !ok {\n\t\t\t\tpanic(r)\n\t\t\t}\n\n\t\t\tif details.Error != nil {\n\t\t\t\tfmt.Fprintln(p.ErrWriter, formatter.F(\"{{red}}{{bold}}%s %s{{/}} {{red}}failed{{/}}\", p.Name, command.Name))\n\t\t\t\tfmt.Fprintln(p.ErrWriter, formatter.Fi(1, details.Error.Error()))\n\t\t\t}\n\t\t\tif details.EmitUsage {\n\t\t\t\tif details.Error != nil {\n\t\t\t\t\tfmt.Fprintln(p.ErrWriter, \"\")\n\t\t\t\t}\n\t\t\t\tcommand.EmitUsage(p.ErrWriter)\n\t\t\t}\n\t\t\texitCode = details.ExitCode\n\t\t}\n\n\t\tcommand.Flags.ValidateDeprecations(deprecationTracker)\n\t\tif deprecationTracker.DidTrackDeprecations() {\n\t\t\tfmt.Fprintln(p.ErrWriter, deprecationTracker.DeprecationsReport())\n\t\t}\n\t\tp.Exiter(exitCode)\n\t}()\n\n\targs, additionalArgs := []string{}, []string{}\n\n\tfoundDelimiter := false\n\tfor _, arg := range osArgs[1:] {\n\t\tif !foundDelimiter {\n\t\t\tif arg == \"--\" {\n\t\t\t\tfoundDelimiter = true\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\n\t\tif foundDelimiter {\n\t\t\tadditionalArgs = append(additionalArgs, arg)\n\t\t} else {\n\t\t\targs = append(args, arg)\n\t\t}\n\t}\n\n\tcommand = p.DefaultCommand\n\tif len(args) > 0 {\n\t\tp.handleHelpRequestsAndExit(p.OutWriter, args)\n\t\tif command.Name == args[0] {\n\t\t\targs = args[1:]\n\t\t} else {\n\t\t\tfor _, deprecatedCommand := range p.DeprecatedCommands {\n\t\t\t\tif deprecatedCommand.Name == args[0] {\n\t\t\t\t\tdeprecationTracker.TrackDeprecation(deprecatedCommand.Deprecation)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor _, tryCommand := range p.Commands {\n\t\t\t\tif tryCommand.Name == args[0] {\n\t\t\t\t\tcommand, args = tryCommand, args[1:]\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tcommand.Run(args, additionalArgs)\n}\n\nfunc (p Program) handleHelpRequestsAndExit(writer io.Writer, args []string) {\n\tif len(args) == 0 {\n\t\treturn\n\t}\n\n\tmatchesHelpFlag := func(args ...string) bool {\n\t\tfor _, arg := range args {\n\t\t\tif arg == \"--help\" || arg == \"-help\" || arg == \"-h\" || arg == \"--h\" {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\treturn false\n\t}\n\tif len(args) == 1 {\n\t\tif args[0] == \"help\" || matchesHelpFlag(args[0]) {\n\t\t\tp.EmitUsage(writer)\n\t\t\tAbort(AbortDetails{})\n\t\t}\n\t} else {\n\t\tvar name string\n\t\tif args[0] == \"help\" || matchesHelpFlag(args[0]) {\n\t\t\tname = args[1]\n\t\t} else if matchesHelpFlag(args[1:]...) {\n\t\t\tname = args[0]\n\t\t} else {\n\t\t\treturn\n\t\t}\n\n\t\tif p.DefaultCommand.Name == name || p.Name == name {\n\t\t\tp.DefaultCommand.EmitUsage(writer)\n\t\t\tAbort(AbortDetails{})\n\t\t}\n\t\tfor _, command := range p.Commands {\n\t\t\tif command.Name == name {\n\t\t\t\tcommand.EmitUsage(writer)\n\t\t\t\tAbort(AbortDetails{})\n\t\t\t}\n\t\t}\n\n\t\tfmt.Fprintln(writer, formatter.F(\"{{red}}Unknown Command: {{bold}}%s{{/}}\", name))\n\t\tfmt.Fprintln(writer, \"\")\n\t\tp.EmitUsage(writer)\n\t\tAbort(AbortDetails{ExitCode: 1})\n\t}\n}\n\nfunc (p Program) EmitUsage(writer io.Writer) {\n\tfmt.Fprintln(writer, formatter.F(p.Heading))\n\tfmt.Fprintln(writer, formatter.F(\"{{gray}}%s{{/}}\", strings.Repeat(\"-\", len(p.Heading))))\n\tfmt.Fprintln(writer, formatter.F(\"For usage information for a command, run {{bold}}%s help COMMAND{{/}}.\", p.Name))\n\tfmt.Fprintln(writer, formatter.F(\"For usage information for the default command, run {{bold}}%s help %s{{/}} or {{bold}}%s help %s{{/}}.\", p.Name, p.Name, p.Name, p.DefaultCommand.Name))\n\tfmt.Fprintln(writer, \"\")\n\tfmt.Fprintln(writer, formatter.F(\"The following commands are available:\"))\n\n\tfmt.Fprintln(writer, formatter.Fi(1, \"{{bold}}%s{{/}} or %s {{bold}}%s{{/}} - {{gray}}%s{{/}}\", p.Name, p.Name, p.DefaultCommand.Name, p.DefaultCommand.Usage))\n\tif p.DefaultCommand.ShortDoc != \"\" {\n\t\tfmt.Fprintln(writer, formatter.Fi(2, p.DefaultCommand.ShortDoc))\n\t}\n\n\tfor _, command := range p.Commands {\n\t\tfmt.Fprintln(writer, formatter.Fi(1, \"{{bold}}%s{{/}} - {{gray}}%s{{/}}\", command.Name, command.Usage))\n\t\tif command.ShortDoc != \"\" {\n\t\t\tfmt.Fprintln(writer, formatter.Fi(2, command.ShortDoc))\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/generators/boostrap_templates.go",
    "content": "package generators\n\nvar bootstrapText = `package {{.Package}}\n\nimport (\n\t\"testing\"\n\n\t{{.GinkgoImport}}\n\t{{.GomegaImport}}\n)\n\nfunc Test{{.FormattedName}}(t *testing.T) {\n\t{{.GomegaPackage}}RegisterFailHandler({{.GinkgoPackage}}Fail)\n\t{{.GinkgoPackage}}RunSpecs(t, \"{{.FormattedName}} Suite\")\n}\n`\n\nvar agoutiBootstrapText = `package {{.Package}}\n\nimport (\n\t\"testing\"\n\n\t{{.GinkgoImport}}\n\t{{.GomegaImport}}\n\t\"github.com/sclevine/agouti\"\n)\n\nfunc Test{{.FormattedName}}(t *testing.T) {\n\t{{.GomegaPackage}}RegisterFailHandler({{.GinkgoPackage}}Fail)\n\t{{.GinkgoPackage}}RunSpecs(t, \"{{.FormattedName}} Suite\")\n}\n\nvar agoutiDriver *agouti.WebDriver\n\nvar _ = {{.GinkgoPackage}}BeforeSuite(func() {\n\t// Choose a WebDriver:\n\n\tagoutiDriver = agouti.PhantomJS()\n\t// agoutiDriver = agouti.Selenium()\n\t// agoutiDriver = agouti.ChromeDriver()\n\n\t{{.GomegaPackage}}Expect(agoutiDriver.Start()).To({{.GomegaPackage}}Succeed())\n})\n\nvar _ = {{.GinkgoPackage}}AfterSuite(func() {\n\t{{.GomegaPackage}}Expect(agoutiDriver.Stop()).To({{.GomegaPackage}}Succeed())\n})\n`\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/generators/bootstrap_command.go",
    "content": "package generators\n\nimport (\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"os\"\n\t\"text/template\"\n\n\tsprig \"github.com/go-task/slim-sprig/v3\"\n\t\"github.com/onsi/ginkgo/v2/ginkgo/command\"\n\t\"github.com/onsi/ginkgo/v2/ginkgo/internal\"\n\t\"github.com/onsi/ginkgo/v2/types\"\n)\n\nfunc BuildBootstrapCommand() command.Command {\n\tconf := GeneratorsConfig{}\n\tflags, err := types.NewGinkgoFlagSet(\n\t\ttypes.GinkgoFlags{\n\t\t\t{Name: \"agouti\", KeyPath: \"Agouti\",\n\t\t\t\tUsage: \"If set, bootstrap will generate a bootstrap file for writing Agouti tests\"},\n\t\t\t{Name: \"nodot\", KeyPath: \"NoDot\",\n\t\t\t\tUsage: \"If set, bootstrap will generate a bootstrap test file that does not dot-import ginkgo and gomega\"},\n\t\t\t{Name: \"internal\", KeyPath: \"Internal\",\n\t\t\t\tUsage: \"If set, bootstrap will generate a bootstrap test file that uses the regular package name (i.e. `package X`, not `package X_test`)\"},\n\t\t\t{Name: \"template\", KeyPath: \"CustomTemplate\",\n\t\t\t\tUsageArgument: \"template-file\",\n\t\t\t\tUsage:         \"If specified, generate will use the contents of the file passed as the bootstrap template\"},\n\t\t\t{Name: \"template-data\", KeyPath: \"CustomTemplateData\",\n\t\t\t\tUsageArgument: \"template-data-file\",\n\t\t\t\tUsage:         \"If specified, generate will use the contents of the file passed as data to be rendered in the bootstrap template\"},\n\t\t},\n\t\t&conf,\n\t\ttypes.GinkgoFlagSections{},\n\t)\n\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\treturn command.Command{\n\t\tName:     \"bootstrap\",\n\t\tUsage:    \"ginkgo bootstrap\",\n\t\tShortDoc: \"Bootstrap a test suite for the current package\",\n\t\tDocumentation: `Tests written in Ginkgo and Gomega require a small amount of boilerplate to hook into Go's testing infrastructure.\n\n{{bold}}ginkgo bootstrap{{/}} generates this boilerplate for you in a file named X_suite_test.go where X is the name of the package under test.`,\n\t\tDocLink: \"generators\",\n\t\tFlags:   flags,\n\t\tCommand: func(_ []string, _ []string) {\n\t\t\tgenerateBootstrap(conf)\n\t\t},\n\t}\n}\n\ntype bootstrapData struct {\n\tPackage       string\n\tFormattedName string\n\n\tGinkgoImport  string\n\tGomegaImport  string\n\tGinkgoPackage string\n\tGomegaPackage string\n\tCustomData    map[string]any\n}\n\nfunc generateBootstrap(conf GeneratorsConfig) {\n\tpackageName, bootstrapFilePrefix, formattedName := getPackageAndFormattedName()\n\n\tdata := bootstrapData{\n\t\tPackage:       determinePackageName(packageName, conf.Internal),\n\t\tFormattedName: formattedName,\n\n\t\tGinkgoImport:  `. \"github.com/onsi/ginkgo/v2\"`,\n\t\tGomegaImport:  `. \"github.com/onsi/gomega\"`,\n\t\tGinkgoPackage: \"\",\n\t\tGomegaPackage: \"\",\n\t}\n\n\tif conf.NoDot {\n\t\tdata.GinkgoImport = `\"github.com/onsi/ginkgo/v2\"`\n\t\tdata.GomegaImport = `\"github.com/onsi/gomega\"`\n\t\tdata.GinkgoPackage = `ginkgo.`\n\t\tdata.GomegaPackage = `gomega.`\n\t}\n\n\ttargetFile := fmt.Sprintf(\"%s_suite_test.go\", bootstrapFilePrefix)\n\tif internal.FileExists(targetFile) {\n\t\tcommand.AbortWith(\"{{bold}}%s{{/}} already exists\", targetFile)\n\t} else {\n\t\tfmt.Printf(\"Generating ginkgo test suite bootstrap for %s in:\\n\\t%s\\n\", packageName, targetFile)\n\t}\n\n\tf, err := os.Create(targetFile)\n\tcommand.AbortIfError(\"Failed to create file:\", err)\n\tdefer f.Close()\n\n\tvar templateText string\n\tif conf.CustomTemplate != \"\" {\n\t\ttpl, err := os.ReadFile(conf.CustomTemplate)\n\t\tcommand.AbortIfError(\"Failed to read custom bootstrap file:\", err)\n\t\ttemplateText = string(tpl)\n\t\tif conf.CustomTemplateData != \"\" {\n\t\t\tvar tplCustomDataMap map[string]any\n\t\t\ttplCustomData, err := os.ReadFile(conf.CustomTemplateData)\n\t\t\tcommand.AbortIfError(\"Failed to read custom boostrap data file:\", err)\n\t\t\tif !json.Valid([]byte(tplCustomData)) {\n\t\t\t\tcommand.AbortWith(\"Invalid JSON object in custom data file.\")\n\t\t\t}\n\t\t\t//create map from the custom template data\n\t\t\tjson.Unmarshal(tplCustomData, &tplCustomDataMap)\n\t\t\tdata.CustomData = tplCustomDataMap\n\t\t}\n\t} else if conf.Agouti {\n\t\ttemplateText = agoutiBootstrapText\n\t} else {\n\t\ttemplateText = bootstrapText\n\t}\n\n\t//Setting the option to explicitly fail if template is rendered trying to access missing key\n\tbootstrapTemplate, err := template.New(\"bootstrap\").Funcs(sprig.TxtFuncMap()).Option(\"missingkey=error\").Parse(templateText)\n\tcommand.AbortIfError(\"Failed to parse bootstrap template:\", err)\n\n\tbuf := &bytes.Buffer{}\n\t//Being explicit about failing sooner during template rendering\n\t//when accessing custom data rather than during the go fmt command\n\terr = bootstrapTemplate.Execute(buf, data)\n\tcommand.AbortIfError(\"Failed to render bootstrap template:\", err)\n\n\tbuf.WriteTo(f)\n\n\tinternal.GoFmt(targetFile)\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/generators/generate_command.go",
    "content": "package generators\n\nimport (\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strconv\"\n\t\"strings\"\n\t\"text/template\"\n\n\tsprig \"github.com/go-task/slim-sprig/v3\"\n\t\"github.com/onsi/ginkgo/v2/ginkgo/command\"\n\t\"github.com/onsi/ginkgo/v2/ginkgo/internal\"\n\t\"github.com/onsi/ginkgo/v2/types\"\n)\n\nfunc BuildGenerateCommand() command.Command {\n\tconf := GeneratorsConfig{}\n\tflags, err := types.NewGinkgoFlagSet(\n\t\ttypes.GinkgoFlags{\n\t\t\t{Name: \"agouti\", KeyPath: \"Agouti\",\n\t\t\t\tUsage: \"If set, generate will create a test file for writing Agouti tests\"},\n\t\t\t{Name: \"nodot\", KeyPath: \"NoDot\",\n\t\t\t\tUsage: \"If set, generate will create a test file that does not dot-import ginkgo and gomega\"},\n\t\t\t{Name: \"internal\", KeyPath: \"Internal\",\n\t\t\t\tUsage: \"If set, generate will create a test file that uses the regular package name (i.e. `package X`, not `package X_test`)\"},\n\t\t\t{Name: \"template\", KeyPath: \"CustomTemplate\",\n\t\t\t\tUsageArgument: \"template-file\",\n\t\t\t\tUsage:         \"If specified, generate will use the contents of the file passed as the test file template\"},\n\t\t\t{Name: \"template-data\", KeyPath: \"CustomTemplateData\",\n\t\t\t\tUsageArgument: \"template-data-file\",\n\t\t\t\tUsage:         \"If specified, generate will use the contents of the file passed as data to be rendered in the test file template\"},\n\t\t\t{Name: \"tags\", KeyPath: \"Tags\",\n\t\t\t\tUsageArgument: \"build-tags\",\n\t\t\t\tUsage:         \"If specified, generate will create a test file that uses the given build tags (i.e. `--tags e2e,!unit` will add `//go:build e2e,!unit`)\"},\n\t\t},\n\t\t&conf,\n\t\ttypes.GinkgoFlagSections{},\n\t)\n\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\treturn command.Command{\n\t\tName:     \"generate\",\n\t\tUsage:    \"ginkgo generate <filename(s)>\",\n\t\tShortDoc: \"Generate a test file named <filename>_test.go\",\n\t\tDocumentation: `If the optional <filename> argument is omitted, a file named after the package in the current directory will be created.\n\nYou can pass multiple <filename(s)> to generate multiple files simultaneously.  The resulting files are named <filename>_test.go.\n\nYou can also pass a <filename> of the form \"file.go\" and generate will emit \"file_test.go\".`,\n\t\tDocLink: \"generators\",\n\t\tFlags:   flags,\n\t\tCommand: func(args []string, _ []string) {\n\t\t\tgenerateTestFiles(conf, args)\n\t\t},\n\t}\n}\n\ntype specData struct {\n\tBuildTags         string\n\tPackage           string\n\tSubject           string\n\tPackageImportPath string\n\tImportPackage     bool\n\n\tGinkgoImport  string\n\tGomegaImport  string\n\tGinkgoPackage string\n\tGomegaPackage string\n\tCustomData    map[string]any\n}\n\nfunc generateTestFiles(conf GeneratorsConfig, args []string) {\n\tsubjects := args\n\tif len(subjects) == 0 {\n\t\tsubjects = []string{\"\"}\n\t}\n\tfor _, subject := range subjects {\n\t\tgenerateTestFileForSubject(subject, conf)\n\t}\n}\n\nfunc generateTestFileForSubject(subject string, conf GeneratorsConfig) {\n\tpackageName, specFilePrefix, formattedName := getPackageAndFormattedName()\n\tif subject != \"\" {\n\t\tspecFilePrefix = formatSubject(subject)\n\t\tformattedName = prettifyName(specFilePrefix)\n\t}\n\n\tif conf.Internal {\n\t\tspecFilePrefix = specFilePrefix + \"_internal\"\n\t}\n\n\tdata := specData{\n\t\tBuildTags:         getBuildTags(conf.Tags),\n\t\tPackage:           determinePackageName(packageName, conf.Internal),\n\t\tSubject:           formattedName,\n\t\tPackageImportPath: getPackageImportPath(),\n\t\tImportPackage:     !conf.Internal,\n\n\t\tGinkgoImport:  `. \"github.com/onsi/ginkgo/v2\"`,\n\t\tGomegaImport:  `. \"github.com/onsi/gomega\"`,\n\t\tGinkgoPackage: \"\",\n\t\tGomegaPackage: \"\",\n\t}\n\n\tif conf.NoDot {\n\t\tdata.GinkgoImport = `\"github.com/onsi/ginkgo/v2\"`\n\t\tdata.GomegaImport = `\"github.com/onsi/gomega\"`\n\t\tdata.GinkgoPackage = `ginkgo.`\n\t\tdata.GomegaPackage = `gomega.`\n\t}\n\n\ttargetFile := fmt.Sprintf(\"%s_test.go\", specFilePrefix)\n\tif internal.FileExists(targetFile) {\n\t\tcommand.AbortWith(\"{{bold}}%s{{/}} already exists\", targetFile)\n\t} else {\n\t\tfmt.Printf(\"Generating ginkgo test for %s in:\\n  %s\\n\", data.Subject, targetFile)\n\t}\n\n\tf, err := os.Create(targetFile)\n\tcommand.AbortIfError(\"Failed to create test file:\", err)\n\tdefer f.Close()\n\n\tvar templateText string\n\tif conf.CustomTemplate != \"\" {\n\t\ttpl, err := os.ReadFile(conf.CustomTemplate)\n\t\tcommand.AbortIfError(\"Failed to read custom template file:\", err)\n\t\ttemplateText = string(tpl)\n\t\tif conf.CustomTemplateData != \"\" {\n\t\t\tvar tplCustomDataMap map[string]any\n\t\t\ttplCustomData, err := os.ReadFile(conf.CustomTemplateData)\n\t\t\tcommand.AbortIfError(\"Failed to read custom template data file:\", err)\n\t\t\tif !json.Valid([]byte(tplCustomData)) {\n\t\t\t\tcommand.AbortWith(\"Invalid JSON object in custom data file.\")\n\t\t\t}\n\t\t\t//create map from the custom template data\n\t\t\tjson.Unmarshal(tplCustomData, &tplCustomDataMap)\n\t\t\tdata.CustomData = tplCustomDataMap\n\t\t}\n\t} else if conf.Agouti {\n\t\ttemplateText = agoutiSpecText\n\t} else {\n\t\ttemplateText = specText\n\t}\n\n\t//Setting the option to explicitly fail if template is rendered trying to access missing key\n\tspecTemplate, err := template.New(\"spec\").Funcs(sprig.TxtFuncMap()).Option(\"missingkey=error\").Parse(templateText)\n\tcommand.AbortIfError(\"Failed to read parse test template:\", err)\n\n\t//Being explicit about failing sooner during template rendering\n\t//when accessing custom data rather than during the go fmt command\n\terr = specTemplate.Execute(f, data)\n\tcommand.AbortIfError(\"Failed to render bootstrap template:\", err)\n\tinternal.GoFmt(targetFile)\n}\n\nfunc formatSubject(name string) string {\n\tname = strings.ReplaceAll(name, \"-\", \"_\")\n\tname = strings.ReplaceAll(name, \" \", \"_\")\n\tname = strings.Split(name, \".go\")[0]\n\tname = strings.Split(name, \"_test\")[0]\n\treturn name\n}\n\n// moduleName returns module name from go.mod from given module root directory\nfunc moduleName(modRoot string) string {\n\tmodFile, err := os.Open(filepath.Join(modRoot, \"go.mod\"))\n\tif err != nil {\n\t\treturn \"\"\n\t}\n\tdefer modFile.Close()\n\n\tmod := make([]byte, 128)\n\t_, err = modFile.Read(mod)\n\tif err != nil {\n\t\treturn \"\"\n\t}\n\n\tslashSlash := []byte(\"//\")\n\tmoduleStr := []byte(\"module\")\n\n\tfor len(mod) > 0 {\n\t\tline := mod\n\t\tmod = nil\n\t\tif i := bytes.IndexByte(line, '\\n'); i >= 0 {\n\t\t\tline, mod = line[:i], line[i+1:]\n\t\t}\n\t\tif i := bytes.Index(line, slashSlash); i >= 0 {\n\t\t\tline = line[:i]\n\t\t}\n\t\tline = bytes.TrimSpace(line)\n\t\tif !bytes.HasPrefix(line, moduleStr) {\n\t\t\tcontinue\n\t\t}\n\t\tline = line[len(moduleStr):]\n\t\tn := len(line)\n\t\tline = bytes.TrimSpace(line)\n\t\tif len(line) == n || len(line) == 0 {\n\t\t\tcontinue\n\t\t}\n\n\t\tif line[0] == '\"' || line[0] == '`' {\n\t\t\tp, err := strconv.Unquote(string(line))\n\t\t\tif err != nil {\n\t\t\t\treturn \"\" // malformed quoted string or multiline module path\n\t\t\t}\n\t\t\treturn p\n\t\t}\n\n\t\treturn string(line)\n\t}\n\n\treturn \"\" // missing module path\n}\n\nfunc findModuleRoot(dir string) (root string) {\n\tdir = filepath.Clean(dir)\n\n\t// Look for enclosing go.mod.\n\tfor {\n\t\tif fi, err := os.Stat(filepath.Join(dir, \"go.mod\")); err == nil && !fi.IsDir() {\n\t\t\treturn dir\n\t\t}\n\t\td := filepath.Dir(dir)\n\t\tif d == dir {\n\t\t\tbreak\n\t\t}\n\t\tdir = d\n\t}\n\treturn \"\"\n}\n\nfunc getPackageImportPath() string {\n\tworkingDir, err := os.Getwd()\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\n\tsep := string(filepath.Separator)\n\n\t// Try go.mod file first\n\tmodRoot := findModuleRoot(workingDir)\n\tif modRoot != \"\" {\n\t\tmodName := moduleName(modRoot)\n\t\tif modName != \"\" {\n\t\t\tcd := strings.ReplaceAll(workingDir, modRoot, \"\")\n\t\t\tcd = strings.ReplaceAll(cd, sep, \"/\")\n\t\t\treturn modName + cd\n\t\t}\n\t}\n\n\t// Fallback to GOPATH structure\n\tpaths := strings.Split(workingDir, sep+\"src\"+sep)\n\tif len(paths) == 1 {\n\t\tfmt.Printf(\"\\nCouldn't identify package import path.\\n\\n\\tginkgo generate\\n\\nMust be run within a package directory under $GOPATH/src/...\\nYou're going to have to change UNKNOWN_PACKAGE_PATH in the generated file...\\n\\n\")\n\t\treturn \"UNKNOWN_PACKAGE_PATH\"\n\t}\n\treturn filepath.ToSlash(paths[len(paths)-1])\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/generators/generate_templates.go",
    "content": "package generators\n\nvar specText = `{{.BuildTags}}\npackage {{.Package}}\n\nimport (\n\t{{.GinkgoImport}}\n\t{{.GomegaImport}}\n\n\t{{if .ImportPackage}}\"{{.PackageImportPath}}\"{{end}}\n)\n\nvar _ = {{.GinkgoPackage}}Describe(\"{{.Subject}}\", func() {\n\n})\n`\n\nvar agoutiSpecText = `{{.BuildTags}}\npackage {{.Package}}\n\nimport (\n\t{{.GinkgoImport}}\n\t{{.GomegaImport}}\n\t\"github.com/sclevine/agouti\"\n\t. \"github.com/sclevine/agouti/matchers\"\n\n\t{{if .ImportPackage}}\"{{.PackageImportPath}}\"{{end}}\n)\n\nvar _ = {{.GinkgoPackage}}Describe(\"{{.Subject}}\", func() {\n\tvar page *agouti.Page\n\n\t{{.GinkgoPackage}}BeforeEach(func() {\n\t\tvar err error\n\t\tpage, err = agoutiDriver.NewPage()\n\t\t{{.GomegaPackage}}Expect(err).NotTo({{.GomegaPackage}}HaveOccurred())\n\t})\n\n\t{{.GinkgoPackage}}AfterEach(func() {\n\t\t{{.GomegaPackage}}Expect(page.Destroy()).To({{.GomegaPackage}}Succeed())\n\t})\n})\n`\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/generators/generators_common.go",
    "content": "package generators\n\nimport (\n\t\"fmt\"\n\t\"go/build\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/onsi/ginkgo/v2/ginkgo/command\"\n)\n\ntype GeneratorsConfig struct {\n\tAgouti, NoDot, Internal bool\n\tCustomTemplate          string\n\tCustomTemplateData      string\n\tTags                    string\n}\n\nfunc getPackageAndFormattedName() (string, string, string) {\n\tpath, err := os.Getwd()\n\tcommand.AbortIfError(\"Could not get current working directory:\", err)\n\n\tdirName := strings.ReplaceAll(filepath.Base(path), \"-\", \"_\")\n\tdirName = strings.ReplaceAll(dirName, \" \", \"_\")\n\n\tpkg, err := build.ImportDir(path, 0)\n\tpackageName := pkg.Name\n\tif err != nil {\n\t\tpackageName = ensureLegalPackageName(dirName)\n\t}\n\n\tformattedName := prettifyName(filepath.Base(path))\n\treturn packageName, dirName, formattedName\n}\n\nfunc ensureLegalPackageName(name string) string {\n\tif name == \"_\" {\n\t\treturn \"underscore\"\n\t}\n\tif len(name) == 0 {\n\t\treturn \"empty\"\n\t}\n\tn, isDigitErr := strconv.Atoi(string(name[0]))\n\tif isDigitErr == nil {\n\t\treturn []string{\"zero\", \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\"}[n] + name[1:]\n\t}\n\treturn name\n}\n\nfunc prettifyName(name string) string {\n\tname = strings.ReplaceAll(name, \"-\", \" \")\n\tname = strings.ReplaceAll(name, \"_\", \" \")\n\tname = strings.Title(name)\n\tname = strings.ReplaceAll(name, \" \", \"\")\n\treturn name\n}\n\nfunc determinePackageName(name string, internal bool) string {\n\tif internal {\n\t\treturn name\n\t}\n\n\treturn name + \"_test\"\n}\n\n// getBuildTags returns the resultant string to be added.\n// If the input string is not empty, then returns a `//go:build {}` string,\n// otherwise returns an empty string.\nfunc getBuildTags(tags string) string {\n\tif tags != \"\" {\n\t\treturn fmt.Sprintf(\"//go:build %s\\n\", tags)\n\t}\n\treturn \"\"\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/compile.go",
    "content": "package internal\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"os/exec\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"github.com/onsi/ginkgo/v2/types\"\n)\n\nfunc CompileSuite(suite TestSuite, goFlagsConfig types.GoFlagsConfig, preserveSymbols bool) TestSuite {\n\tif suite.PathToCompiledTest != \"\" {\n\t\treturn suite\n\t}\n\n\tsuite.CompilationError = nil\n\n\tpath, err := filepath.Abs(filepath.Join(suite.Path, suite.PackageName+\".test\"))\n\tif err != nil {\n\t\tsuite.State = TestSuiteStateFailedToCompile\n\t\tsuite.CompilationError = fmt.Errorf(\"Failed to compute compilation target path:\\n%s\", err.Error())\n\t\treturn suite\n\t}\n\n\tif len(goFlagsConfig.O) > 0 {\n\t\tuserDefinedPath, err := filepath.Abs(goFlagsConfig.O)\n\t\tif err != nil {\n\t\t\tsuite.State = TestSuiteStateFailedToCompile\n\t\t\tsuite.CompilationError = fmt.Errorf(\"Failed to compute compilation target path %s:\\n%s\", goFlagsConfig.O, err.Error())\n\t\t\treturn suite\n\t\t}\n\t\tpath = userDefinedPath\n\t}\n\n\tgoFlagsConfig.O = path\n\n\tginkgoInvocationPath, _ := os.Getwd()\n\tginkgoInvocationPath, _ = filepath.Abs(ginkgoInvocationPath)\n\tpackagePath := suite.AbsPath()\n\tpathToInvocationPath, err := filepath.Rel(packagePath, ginkgoInvocationPath)\n\tif err != nil {\n\t\tsuite.State = TestSuiteStateFailedToCompile\n\t\tsuite.CompilationError = fmt.Errorf(\"Failed to get relative path from package to the current working directory:\\n%s\", err.Error())\n\t\treturn suite\n\t}\n\targs, err := types.GenerateGoTestCompileArgs(goFlagsConfig, \"./\", pathToInvocationPath, preserveSymbols)\n\tif err != nil {\n\t\tsuite.State = TestSuiteStateFailedToCompile\n\t\tsuite.CompilationError = fmt.Errorf(\"Failed to generate go test compile flags:\\n%s\", err.Error())\n\t\treturn suite\n\t}\n\n\tcmd := exec.Command(\"go\", args...)\n\tcmd.Dir = suite.Path\n\toutput, err := cmd.CombinedOutput()\n\tif err != nil {\n\t\tif len(output) > 0 {\n\t\t\tsuite.State = TestSuiteStateFailedToCompile\n\t\t\tsuite.CompilationError = fmt.Errorf(\"Failed to compile %s:\\n\\n%s\", suite.PackageName, output)\n\t\t} else {\n\t\t\tsuite.State = TestSuiteStateFailedToCompile\n\t\t\tsuite.CompilationError = fmt.Errorf(\"Failed to compile %s\\n%s\", suite.PackageName, err.Error())\n\t\t}\n\t\treturn suite\n\t}\n\n\tif strings.Contains(string(output), \"[no test files]\") {\n\t\tsuite.State = TestSuiteStateSkippedDueToEmptyCompilation\n\t\treturn suite\n\t}\n\n\tif len(output) > 0 {\n\t\tfmt.Println(string(output))\n\t}\n\n\tif !FileExists(path) {\n\t\tsuite.State = TestSuiteStateFailedToCompile\n\t\tsuite.CompilationError = fmt.Errorf(\"Failed to compile %s:\\nOutput file %s could not be found\", suite.PackageName, path)\n\t\treturn suite\n\t}\n\n\tsuite.State = TestSuiteStateCompiled\n\tsuite.PathToCompiledTest = path\n\treturn suite\n}\n\nfunc Cleanup(goFlagsConfig types.GoFlagsConfig, suites ...TestSuite) {\n\tif goFlagsConfig.BinaryMustBePreserved() {\n\t\treturn\n\t}\n\tfor _, suite := range suites {\n\t\tif !suite.Precompiled {\n\t\t\tos.Remove(suite.PathToCompiledTest)\n\t\t}\n\t}\n}\n\ntype parallelSuiteBundle struct {\n\tsuite    TestSuite\n\tcompiled chan TestSuite\n}\n\ntype OrderedParallelCompiler struct {\n\tmutex        *sync.Mutex\n\tstopped      bool\n\tnumCompilers int\n\n\tidx                int\n\tnumSuites          int\n\tcompletionChannels []chan TestSuite\n}\n\nfunc NewOrderedParallelCompiler(numCompilers int) *OrderedParallelCompiler {\n\treturn &OrderedParallelCompiler{\n\t\tmutex:        &sync.Mutex{},\n\t\tnumCompilers: numCompilers,\n\t}\n}\n\nfunc (opc *OrderedParallelCompiler) StartCompiling(suites TestSuites, goFlagsConfig types.GoFlagsConfig, preserveSymbols bool) {\n\topc.stopped = false\n\topc.idx = 0\n\topc.numSuites = len(suites)\n\topc.completionChannels = make([]chan TestSuite, opc.numSuites)\n\n\ttoCompile := make(chan parallelSuiteBundle, opc.numCompilers)\n\tfor compiler := 0; compiler < opc.numCompilers; compiler++ {\n\t\tgo func() {\n\t\t\tfor bundle := range toCompile {\n\t\t\t\tc, suite := bundle.compiled, bundle.suite\n\t\t\t\topc.mutex.Lock()\n\t\t\t\tstopped := opc.stopped\n\t\t\t\topc.mutex.Unlock()\n\t\t\t\tif !stopped {\n\t\t\t\t\tsuite = CompileSuite(suite, goFlagsConfig, preserveSymbols)\n\t\t\t\t}\n\t\t\t\tc <- suite\n\t\t\t}\n\t\t}()\n\t}\n\n\tfor idx, suite := range suites {\n\t\topc.completionChannels[idx] = make(chan TestSuite, 1)\n\t\ttoCompile <- parallelSuiteBundle{suite, opc.completionChannels[idx]}\n\t\tif idx == 0 { //compile first suite serially\n\t\t\tsuite = <-opc.completionChannels[0]\n\t\t\topc.completionChannels[0] <- suite\n\t\t}\n\t}\n\n\tclose(toCompile)\n}\n\nfunc (opc *OrderedParallelCompiler) Next() (int, TestSuite) {\n\tif opc.idx >= opc.numSuites {\n\t\treturn opc.numSuites, TestSuite{}\n\t}\n\n\tidx := opc.idx\n\tsuite := <-opc.completionChannels[idx]\n\topc.idx = opc.idx + 1\n\n\treturn idx, suite\n}\n\nfunc (opc *OrderedParallelCompiler) StopAndDrain() {\n\topc.mutex.Lock()\n\topc.stopped = true\n\topc.mutex.Unlock()\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/gocovmerge.go",
    "content": "// Copyright (c) 2015, Wade Simmons\n// 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 are met:\n\n// 1. Redistributions of source code must retain the above copyright notice, this\n//    list of conditions and the following disclaimer.\n// 2. Redistributions in binary form must reproduce the above copyright notice,\n//    this list of conditions and the following disclaimer in the documentation\n//    and/or other materials provided with the distribution.\n\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\n// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n// ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n// Package gocovmerge takes the results from multiple `go test -coverprofile`\n// runs and merges them into one profile\n\n// this file was originally taken from the gocovmerge project\n// see also: https://go.shabbyrobe.org/gocovmerge\npackage internal\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"sort\"\n\n\t\"golang.org/x/tools/cover\"\n)\n\nfunc AddCoverProfile(profiles []*cover.Profile, p *cover.Profile) []*cover.Profile {\n\ti := sort.Search(len(profiles), func(i int) bool { return profiles[i].FileName >= p.FileName })\n\tif i < len(profiles) && profiles[i].FileName == p.FileName {\n\t\tMergeCoverProfiles(profiles[i], p)\n\t} else {\n\t\tprofiles = append(profiles, nil)\n\t\tcopy(profiles[i+1:], profiles[i:])\n\t\tprofiles[i] = p\n\t}\n\treturn profiles\n}\n\nfunc DumpCoverProfiles(profiles []*cover.Profile, out io.Writer) error {\n\tif len(profiles) == 0 {\n\t\treturn nil\n\t}\n\tif _, err := fmt.Fprintf(out, \"mode: %s\\n\", profiles[0].Mode); err != nil {\n\t\treturn err\n\t}\n\tfor _, p := range profiles {\n\t\tfor _, b := range p.Blocks {\n\t\t\tif _, err := fmt.Fprintf(out, \"%s:%d.%d,%d.%d %d %d\\n\", p.FileName, b.StartLine, b.StartCol, b.EndLine, b.EndCol, b.NumStmt, b.Count); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc MergeCoverProfiles(into *cover.Profile, merge *cover.Profile) error {\n\tif into.Mode != merge.Mode {\n\t\treturn fmt.Errorf(\"cannot merge profiles with different modes\")\n\t}\n\t// Since the blocks are sorted, we can keep track of where the last block\n\t// was inserted and only look at the blocks after that as targets for merge\n\tstartIndex := 0\n\tfor _, b := range merge.Blocks {\n\t\tvar err error\n\t\tstartIndex, err = mergeProfileBlock(into, b, startIndex)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc mergeProfileBlock(p *cover.Profile, pb cover.ProfileBlock, startIndex int) (int, error) {\n\tsortFunc := func(i int) bool {\n\t\tpi := p.Blocks[i+startIndex]\n\t\treturn pi.StartLine >= pb.StartLine && (pi.StartLine != pb.StartLine || pi.StartCol >= pb.StartCol)\n\t}\n\n\ti := 0\n\tif !sortFunc(i) {\n\t\ti = sort.Search(len(p.Blocks)-startIndex, sortFunc)\n\t}\n\n\ti += startIndex\n\tif i < len(p.Blocks) && p.Blocks[i].StartLine == pb.StartLine && p.Blocks[i].StartCol == pb.StartCol {\n\t\tif p.Blocks[i].EndLine != pb.EndLine || p.Blocks[i].EndCol != pb.EndCol {\n\t\t\treturn i, fmt.Errorf(\"gocovmerge: overlapping merge %v %v %v\", p.FileName, p.Blocks[i], pb)\n\t\t}\n\t\tswitch p.Mode {\n\t\tcase \"set\":\n\t\t\tp.Blocks[i].Count |= pb.Count\n\t\tcase \"count\", \"atomic\":\n\t\t\tp.Blocks[i].Count += pb.Count\n\t\tdefault:\n\t\t\treturn i, fmt.Errorf(\"gocovmerge: unsupported covermode '%s'\", p.Mode)\n\t\t}\n\n\t} else {\n\t\tif i > 0 {\n\t\t\tpa := p.Blocks[i-1]\n\t\t\tif pa.EndLine >= pb.EndLine && (pa.EndLine != pb.EndLine || pa.EndCol > pb.EndCol) {\n\t\t\t\treturn i, fmt.Errorf(\"gocovmerge: overlap before %v %v %v\", p.FileName, pa, pb)\n\t\t\t}\n\t\t}\n\t\tif i < len(p.Blocks)-1 {\n\t\t\tpa := p.Blocks[i+1]\n\t\t\tif pa.StartLine <= pb.StartLine && (pa.StartLine != pb.StartLine || pa.StartCol < pb.StartCol) {\n\t\t\t\treturn i, fmt.Errorf(\"gocovmerge: overlap after %v %v %v\", p.FileName, pa, pb)\n\t\t\t}\n\t\t}\n\t\tp.Blocks = append(p.Blocks, cover.ProfileBlock{})\n\t\tcopy(p.Blocks[i+1:], p.Blocks[i:])\n\t\tp.Blocks[i] = pb\n\t}\n\n\treturn i + 1, nil\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/profiles_and_reports.go",
    "content": "package internal\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"os/exec\"\n\t\"path/filepath\"\n\t\"regexp\"\n\t\"strconv\"\n\n\t\"github.com/google/pprof/profile\"\n\t\"github.com/onsi/ginkgo/v2/reporters\"\n\t\"github.com/onsi/ginkgo/v2/types\"\n\t\"golang.org/x/tools/cover\"\n)\n\nfunc AbsPathForGeneratedAsset(assetName string, suite TestSuite, cliConfig types.CLIConfig, process int) string {\n\tsuffix := \"\"\n\tif process != 0 {\n\t\tsuffix = fmt.Sprintf(\".%d\", process)\n\t}\n\tif cliConfig.OutputDir == \"\" {\n\t\treturn filepath.Join(suite.AbsPath(), assetName+suffix)\n\t}\n\toutputDir, _ := filepath.Abs(cliConfig.OutputDir)\n\treturn filepath.Join(outputDir, suite.NamespacedName()+\"_\"+assetName+suffix)\n}\n\nfunc FinalizeProfilesAndReportsForSuites(suites TestSuites, cliConfig types.CLIConfig, suiteConfig types.SuiteConfig, reporterConfig types.ReporterConfig, goFlagsConfig types.GoFlagsConfig) ([]string, error) {\n\tmessages := []string{}\n\tsuitesWithProfiles := suites.WithState(TestSuiteStatePassed, TestSuiteStateFailed) //anything else won't have actually run and generated a profile\n\n\t// merge cover profiles if need be\n\tif goFlagsConfig.Cover && !cliConfig.KeepSeparateCoverprofiles {\n\t\tcoverProfiles := []string{}\n\t\tfor _, suite := range suitesWithProfiles {\n\t\t\tif !suite.HasProgrammaticFocus {\n\t\t\t\tcoverProfiles = append(coverProfiles, AbsPathForGeneratedAsset(goFlagsConfig.CoverProfile, suite, cliConfig, 0))\n\t\t\t}\n\t\t}\n\n\t\tif len(coverProfiles) > 0 {\n\t\t\tdst := goFlagsConfig.CoverProfile\n\t\t\tif cliConfig.OutputDir != \"\" {\n\t\t\t\tdst = filepath.Join(cliConfig.OutputDir, goFlagsConfig.CoverProfile)\n\t\t\t}\n\t\t\terr := MergeAndCleanupCoverProfiles(coverProfiles, dst)\n\t\t\tif err != nil {\n\t\t\t\treturn messages, err\n\t\t\t}\n\t\t\tcoverage, err := GetCoverageFromCoverProfile(dst)\n\t\t\tif err != nil {\n\t\t\t\treturn messages, err\n\t\t\t}\n\t\t\tif coverage == 0 {\n\t\t\t\tmessages = append(messages, \"composite coverage: [no statements]\")\n\t\t\t} else if suitesWithProfiles.AnyHaveProgrammaticFocus() {\n\t\t\t\tmessages = append(messages, fmt.Sprintf(\"composite coverage: %.1f%% of statements however some suites did not contribute because they included programatically focused specs\", coverage))\n\t\t\t} else {\n\t\t\t\tmessages = append(messages, fmt.Sprintf(\"composite coverage: %.1f%% of statements\", coverage))\n\t\t\t}\n\t\t} else {\n\t\t\tmessages = append(messages, \"no composite coverage computed: all suites included programatically focused specs\")\n\t\t}\n\t}\n\n\t// copy binaries if need be\n\tfor _, suite := range suitesWithProfiles {\n\t\tif goFlagsConfig.BinaryMustBePreserved() && cliConfig.OutputDir != \"\" {\n\t\t\tsrc := suite.PathToCompiledTest\n\t\t\tdst := filepath.Join(cliConfig.OutputDir, suite.NamespacedName()+\".test\")\n\t\t\tif suite.Precompiled {\n\t\t\t\tif err := CopyFile(src, dst); err != nil {\n\t\t\t\t\treturn messages, err\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif err := os.Rename(src, dst); err != nil {\n\t\t\t\t\treturn messages, err\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\ttype reportFormat struct {\n\t\tReportName   string\n\t\tGenerateFunc func(types.Report, string) error\n\t\tMergeFunc    func([]string, string) ([]string, error)\n\t}\n\treportFormats := []reportFormat{}\n\tif reporterConfig.JSONReport != \"\" {\n\t\treportFormats = append(reportFormats, reportFormat{ReportName: reporterConfig.JSONReport, GenerateFunc: reporters.GenerateJSONReport, MergeFunc: reporters.MergeAndCleanupJSONReports})\n\t}\n\tif reporterConfig.GoJSONReport != \"\" {\n\t\treportFormats = append(reportFormats, reportFormat{ReportName: reporterConfig.GoJSONReport, GenerateFunc: reporters.GenerateGoTestJSONReport, MergeFunc: reporters.MergeAndCleanupGoTestJSONReports})\n\t}\n\tif reporterConfig.JUnitReport != \"\" {\n\t\treportFormats = append(reportFormats, reportFormat{ReportName: reporterConfig.JUnitReport, GenerateFunc: reporters.GenerateJUnitReport, MergeFunc: reporters.MergeAndCleanupJUnitReports})\n\t}\n\tif reporterConfig.TeamcityReport != \"\" {\n\t\treportFormats = append(reportFormats, reportFormat{ReportName: reporterConfig.TeamcityReport, GenerateFunc: reporters.GenerateTeamcityReport, MergeFunc: reporters.MergeAndCleanupTeamcityReports})\n\t}\n\n\t// Generate reports for suites that failed to run\n\treportableSuites := suites.ThatAreGinkgoSuites()\n\tfor _, suite := range reportableSuites.WithState(TestSuiteStateFailedToCompile, TestSuiteStateFailedDueToTimeout, TestSuiteStateSkippedDueToPriorFailures, TestSuiteStateSkippedDueToEmptyCompilation) {\n\t\treport := types.Report{\n\t\t\tSuitePath:      suite.AbsPath(),\n\t\t\tSuiteConfig:    suiteConfig,\n\t\t\tSuiteSucceeded: false,\n\t\t}\n\t\tswitch suite.State {\n\t\tcase TestSuiteStateFailedToCompile:\n\t\t\treport.SpecialSuiteFailureReasons = append(report.SpecialSuiteFailureReasons, suite.CompilationError.Error())\n\t\tcase TestSuiteStateFailedDueToTimeout:\n\t\t\treport.SpecialSuiteFailureReasons = append(report.SpecialSuiteFailureReasons, TIMEOUT_ELAPSED_FAILURE_REASON)\n\t\tcase TestSuiteStateSkippedDueToPriorFailures:\n\t\t\treport.SpecialSuiteFailureReasons = append(report.SpecialSuiteFailureReasons, PRIOR_FAILURES_FAILURE_REASON)\n\t\tcase TestSuiteStateSkippedDueToEmptyCompilation:\n\t\t\treport.SpecialSuiteFailureReasons = append(report.SpecialSuiteFailureReasons, EMPTY_SKIP_FAILURE_REASON)\n\t\t\treport.SuiteSucceeded = true\n\t\t}\n\n\t\tfor _, format := range reportFormats {\n\t\t\tformat.GenerateFunc(report, AbsPathForGeneratedAsset(format.ReportName, suite, cliConfig, 0))\n\t\t}\n\t}\n\n\t// Merge reports unless we've been asked to keep them separate\n\tif !cliConfig.KeepSeparateReports {\n\t\tfor _, format := range reportFormats {\n\t\t\treports := []string{}\n\t\t\tfor _, suite := range reportableSuites {\n\t\t\t\treports = append(reports, AbsPathForGeneratedAsset(format.ReportName, suite, cliConfig, 0))\n\t\t\t}\n\t\t\tdst := format.ReportName\n\t\t\tif cliConfig.OutputDir != \"\" {\n\t\t\t\tdst = filepath.Join(cliConfig.OutputDir, format.ReportName)\n\t\t\t}\n\t\t\tmergeMessages, err := format.MergeFunc(reports, dst)\n\t\t\tmessages = append(messages, mergeMessages...)\n\t\t\tif err != nil {\n\t\t\t\treturn messages, err\n\t\t\t}\n\t\t}\n\t}\n\n\treturn messages, nil\n}\n\n// loads each profile, merges them, deletes them, stores them in destination\nfunc MergeAndCleanupCoverProfiles(profiles []string, destination string) error {\n\tvar merged []*cover.Profile\n\tfor _, file := range profiles {\n\t\tparsedProfiles, err := cover.ParseProfiles(file)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tos.Remove(file)\n\t\tfor _, p := range parsedProfiles {\n\t\t\tmerged = AddCoverProfile(merged, p)\n\t\t}\n\t}\n\tdst, err := os.OpenFile(destination, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0666)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer dst.Close()\n\terr = DumpCoverProfiles(merged, dst)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc GetCoverageFromCoverProfile(profile string) (float64, error) {\n\tcmd := exec.Command(\"go\", \"tool\", \"cover\", \"-func\", profile)\n\toutput, err := cmd.CombinedOutput()\n\tif err != nil {\n\t\treturn 0, fmt.Errorf(\"Could not process Coverprofile %s: %s - %s\", profile, err.Error(), string(output))\n\t}\n\tre := regexp.MustCompile(`total:\\s*\\(statements\\)\\s*(\\d*\\.\\d*)\\%`)\n\tmatches := re.FindStringSubmatch(string(output))\n\tif matches == nil {\n\t\treturn 0, fmt.Errorf(\"Could not parse Coverprofile to compute coverage percentage\")\n\t}\n\tcoverageString := matches[1]\n\tcoverage, err := strconv.ParseFloat(coverageString, 64)\n\tif err != nil {\n\t\treturn 0, fmt.Errorf(\"Could not parse Coverprofile to compute coverage percentage: %s\", err.Error())\n\t}\n\n\treturn coverage, nil\n}\n\nfunc MergeProfiles(profilePaths []string, destination string) error {\n\tprofiles := []*profile.Profile{}\n\tfor _, profilePath := range profilePaths {\n\t\tproFile, err := os.Open(profilePath)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"Could not open profile: %s\\n%s\", profilePath, err.Error())\n\t\t}\n\t\tprof, err := profile.Parse(proFile)\n\t\t_ = proFile.Close()\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"Could not parse profile: %s\\n%s\", profilePath, err.Error())\n\t\t}\n\t\tprofiles = append(profiles, prof)\n\t\tos.Remove(profilePath)\n\t}\n\n\tmergedProfile, err := profile.Merge(profiles)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"Could not merge profiles:\\n%s\", err.Error())\n\t}\n\n\toutFile, err := os.Create(destination)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"Could not create merged profile %s:\\n%s\", destination, err.Error())\n\t}\n\terr = mergedProfile.Write(outFile)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"Could not write merged profile %s:\\n%s\", destination, err.Error())\n\t}\n\terr = outFile.Close()\n\tif err != nil {\n\t\treturn fmt.Errorf(\"Could not close merged profile %s:\\n%s\", destination, err.Error())\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/run.go",
    "content": "package internal\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"os/exec\"\n\t\"path/filepath\"\n\t\"regexp\"\n\t\"strings\"\n\t\"sync/atomic\"\n\t\"syscall\"\n\t\"time\"\n\n\t\"github.com/onsi/ginkgo/v2/formatter\"\n\t\"github.com/onsi/ginkgo/v2/ginkgo/command\"\n\t\"github.com/onsi/ginkgo/v2/internal/parallel_support\"\n\t\"github.com/onsi/ginkgo/v2/reporters\"\n\t\"github.com/onsi/ginkgo/v2/types\"\n)\n\nfunc RunCompiledSuite(suite TestSuite, ginkgoConfig types.SuiteConfig, reporterConfig types.ReporterConfig, cliConfig types.CLIConfig, goFlagsConfig types.GoFlagsConfig, additionalArgs []string) TestSuite {\n\tsuite.State = TestSuiteStateFailed\n\tsuite.HasProgrammaticFocus = false\n\n\tif suite.PathToCompiledTest == \"\" {\n\t\treturn suite\n\t}\n\n\tif suite.IsGinkgo && cliConfig.ComputedProcs() > 1 {\n\t\tsuite = runParallel(suite, ginkgoConfig, reporterConfig, cliConfig, goFlagsConfig, additionalArgs)\n\t} else if suite.IsGinkgo {\n\t\tsuite = runSerial(suite, ginkgoConfig, reporterConfig, cliConfig, goFlagsConfig, additionalArgs)\n\t} else {\n\t\tsuite = runGoTest(suite, cliConfig, goFlagsConfig)\n\t}\n\trunAfterRunHook(cliConfig.AfterRunHook, reporterConfig.NoColor, suite)\n\treturn suite\n}\n\nfunc buildAndStartCommand(suite TestSuite, args []string, pipeToStdout bool) (*exec.Cmd, *bytes.Buffer) {\n\tbuf := &bytes.Buffer{}\n\tcmd := exec.Command(suite.PathToCompiledTest, args...)\n\tcmd.Dir = suite.Path\n\tif pipeToStdout {\n\t\tcmd.Stderr = io.MultiWriter(os.Stdout, buf)\n\t\tcmd.Stdout = os.Stdout\n\t} else {\n\t\tcmd.Stderr = buf\n\t\tcmd.Stdout = buf\n\t}\n\terr := cmd.Start()\n\tcommand.AbortIfError(\"Failed to start test suite\", err)\n\n\treturn cmd, buf\n}\n\nfunc checkForNoTestsWarning(buf *bytes.Buffer) bool {\n\tif strings.Contains(buf.String(), \"warning: no tests to run\") {\n\t\tfmt.Fprintf(os.Stderr, `Found no test suites, did you forget to run \"ginkgo bootstrap\"?`)\n\t\treturn true\n\t}\n\treturn false\n}\n\nfunc runGoTest(suite TestSuite, cliConfig types.CLIConfig, goFlagsConfig types.GoFlagsConfig) TestSuite {\n\t// As we run the go test from the suite directory, make sure the cover profile is absolute\n\t// and placed into the expected output directory when one is configured.\n\tif goFlagsConfig.Cover && !filepath.IsAbs(goFlagsConfig.CoverProfile) {\n\t\tgoFlagsConfig.CoverProfile = AbsPathForGeneratedAsset(goFlagsConfig.CoverProfile, suite, cliConfig, 0)\n\t}\n\n\targs, err := types.GenerateGoTestRunArgs(goFlagsConfig)\n\tcommand.AbortIfError(\"Failed to generate test run arguments\", err)\n\tcmd, buf := buildAndStartCommand(suite, args, true)\n\n\tcmd.Wait()\n\n\texitStatus := cmd.ProcessState.Sys().(syscall.WaitStatus).ExitStatus()\n\tpassed := (exitStatus == 0) || (exitStatus == types.GINKGO_FOCUS_EXIT_CODE)\n\tpassed = !(checkForNoTestsWarning(buf) && cliConfig.RequireSuite) && passed\n\tif passed {\n\t\tsuite.State = TestSuiteStatePassed\n\t} else {\n\t\tsuite.State = TestSuiteStateFailed\n\t}\n\n\treturn suite\n}\n\nfunc runSerial(suite TestSuite, ginkgoConfig types.SuiteConfig, reporterConfig types.ReporterConfig, cliConfig types.CLIConfig, goFlagsConfig types.GoFlagsConfig, additionalArgs []string) TestSuite {\n\tif goFlagsConfig.Cover {\n\t\tgoFlagsConfig.CoverProfile = AbsPathForGeneratedAsset(goFlagsConfig.CoverProfile, suite, cliConfig, 0)\n\t}\n\tif goFlagsConfig.BlockProfile != \"\" {\n\t\tgoFlagsConfig.BlockProfile = AbsPathForGeneratedAsset(goFlagsConfig.BlockProfile, suite, cliConfig, 0)\n\t}\n\tif goFlagsConfig.CPUProfile != \"\" {\n\t\tgoFlagsConfig.CPUProfile = AbsPathForGeneratedAsset(goFlagsConfig.CPUProfile, suite, cliConfig, 0)\n\t}\n\tif goFlagsConfig.MemProfile != \"\" {\n\t\tgoFlagsConfig.MemProfile = AbsPathForGeneratedAsset(goFlagsConfig.MemProfile, suite, cliConfig, 0)\n\t}\n\tif goFlagsConfig.MutexProfile != \"\" {\n\t\tgoFlagsConfig.MutexProfile = AbsPathForGeneratedAsset(goFlagsConfig.MutexProfile, suite, cliConfig, 0)\n\t}\n\tif reporterConfig.JSONReport != \"\" {\n\t\treporterConfig.JSONReport = AbsPathForGeneratedAsset(reporterConfig.JSONReport, suite, cliConfig, 0)\n\t}\n\tif reporterConfig.GoJSONReport != \"\" {\n\t\treporterConfig.GoJSONReport = AbsPathForGeneratedAsset(reporterConfig.GoJSONReport, suite, cliConfig, 0)\n\t}\n\tif reporterConfig.JUnitReport != \"\" {\n\t\treporterConfig.JUnitReport = AbsPathForGeneratedAsset(reporterConfig.JUnitReport, suite, cliConfig, 0)\n\t}\n\tif reporterConfig.TeamcityReport != \"\" {\n\t\treporterConfig.TeamcityReport = AbsPathForGeneratedAsset(reporterConfig.TeamcityReport, suite, cliConfig, 0)\n\t}\n\n\targs, err := types.GenerateGinkgoTestRunArgs(ginkgoConfig, reporterConfig, goFlagsConfig)\n\tcommand.AbortIfError(\"Failed to generate test run arguments\", err)\n\targs = append([]string{\"--test.timeout=0\"}, args...)\n\targs = append(args, additionalArgs...)\n\n\tcmd, buf := buildAndStartCommand(suite, args, true)\n\n\tcmd.Wait()\n\n\texitStatus := cmd.ProcessState.Sys().(syscall.WaitStatus).ExitStatus()\n\tsuite.HasProgrammaticFocus = (exitStatus == types.GINKGO_FOCUS_EXIT_CODE)\n\tpassed := (exitStatus == 0) || (exitStatus == types.GINKGO_FOCUS_EXIT_CODE)\n\tpassed = !(checkForNoTestsWarning(buf) && cliConfig.RequireSuite) && passed\n\tif passed {\n\t\tsuite.State = TestSuiteStatePassed\n\t} else {\n\t\tsuite.State = TestSuiteStateFailed\n\t}\n\n\tif suite.HasProgrammaticFocus {\n\t\tif goFlagsConfig.Cover {\n\t\t\tfmt.Fprintln(os.Stdout, \"coverage: no coverfile was generated because specs are programmatically focused\")\n\t\t}\n\t\tif goFlagsConfig.BlockProfile != \"\" {\n\t\t\tfmt.Fprintln(os.Stdout, \"no block profile was generated because specs are programmatically focused\")\n\t\t}\n\t\tif goFlagsConfig.CPUProfile != \"\" {\n\t\t\tfmt.Fprintln(os.Stdout, \"no cpu profile was generated because specs are programmatically focused\")\n\t\t}\n\t\tif goFlagsConfig.MemProfile != \"\" {\n\t\t\tfmt.Fprintln(os.Stdout, \"no mem profile was generated because specs are programmatically focused\")\n\t\t}\n\t\tif goFlagsConfig.MutexProfile != \"\" {\n\t\t\tfmt.Fprintln(os.Stdout, \"no mutex profile was generated because specs are programmatically focused\")\n\t\t}\n\t}\n\n\treturn suite\n}\n\nfunc runParallel(suite TestSuite, ginkgoConfig types.SuiteConfig, reporterConfig types.ReporterConfig, cliConfig types.CLIConfig, goFlagsConfig types.GoFlagsConfig, additionalArgs []string) TestSuite {\n\ttype procResult struct {\n\t\tproc                 int\n\t\texitResult           string\n\t\tpassed               bool\n\t\thasProgrammaticFocus bool\n\t}\n\n\tnumProcs := cliConfig.ComputedProcs()\n\tprocOutput := make([]*bytes.Buffer, numProcs)\n\tprocExitResult := make([]string, numProcs)\n\tcoverProfiles := []string{}\n\n\tblockProfiles := []string{}\n\tcpuProfiles := []string{}\n\tmemProfiles := []string{}\n\tmutexProfiles := []string{}\n\n\tprocResults := make(chan procResult)\n\n\tserver, err := parallel_support.NewServer(numProcs, reporters.NewDefaultReporter(reporterConfig, formatter.ColorableStdOut))\n\tcommand.AbortIfError(\"Failed to start parallel spec server\", err)\n\tserver.Start()\n\tdefer server.Close()\n\n\tif reporterConfig.JSONReport != \"\" {\n\t\treporterConfig.JSONReport = AbsPathForGeneratedAsset(reporterConfig.JSONReport, suite, cliConfig, 0)\n\t}\n\tif reporterConfig.GoJSONReport != \"\" {\n\t\treporterConfig.GoJSONReport = AbsPathForGeneratedAsset(reporterConfig.GoJSONReport, suite, cliConfig, 0)\n\t}\n\tif reporterConfig.JUnitReport != \"\" {\n\t\treporterConfig.JUnitReport = AbsPathForGeneratedAsset(reporterConfig.JUnitReport, suite, cliConfig, 0)\n\t}\n\tif reporterConfig.TeamcityReport != \"\" {\n\t\treporterConfig.TeamcityReport = AbsPathForGeneratedAsset(reporterConfig.TeamcityReport, suite, cliConfig, 0)\n\t}\n\n\tfor proc := 1; proc <= numProcs; proc++ {\n\t\tprocGinkgoConfig := ginkgoConfig\n\t\tprocGinkgoConfig.ParallelProcess, procGinkgoConfig.ParallelTotal, procGinkgoConfig.ParallelHost = proc, numProcs, server.Address()\n\n\t\tprocGoFlagsConfig := goFlagsConfig\n\t\tif goFlagsConfig.Cover {\n\t\t\tprocGoFlagsConfig.CoverProfile = AbsPathForGeneratedAsset(goFlagsConfig.CoverProfile, suite, cliConfig, proc)\n\t\t\tcoverProfiles = append(coverProfiles, procGoFlagsConfig.CoverProfile)\n\t\t}\n\t\tif goFlagsConfig.BlockProfile != \"\" {\n\t\t\tprocGoFlagsConfig.BlockProfile = AbsPathForGeneratedAsset(goFlagsConfig.BlockProfile, suite, cliConfig, proc)\n\t\t\tblockProfiles = append(blockProfiles, procGoFlagsConfig.BlockProfile)\n\t\t}\n\t\tif goFlagsConfig.CPUProfile != \"\" {\n\t\t\tprocGoFlagsConfig.CPUProfile = AbsPathForGeneratedAsset(goFlagsConfig.CPUProfile, suite, cliConfig, proc)\n\t\t\tcpuProfiles = append(cpuProfiles, procGoFlagsConfig.CPUProfile)\n\t\t}\n\t\tif goFlagsConfig.MemProfile != \"\" {\n\t\t\tprocGoFlagsConfig.MemProfile = AbsPathForGeneratedAsset(goFlagsConfig.MemProfile, suite, cliConfig, proc)\n\t\t\tmemProfiles = append(memProfiles, procGoFlagsConfig.MemProfile)\n\t\t}\n\t\tif goFlagsConfig.MutexProfile != \"\" {\n\t\t\tprocGoFlagsConfig.MutexProfile = AbsPathForGeneratedAsset(goFlagsConfig.MutexProfile, suite, cliConfig, proc)\n\t\t\tmutexProfiles = append(mutexProfiles, procGoFlagsConfig.MutexProfile)\n\t\t}\n\n\t\targs, err := types.GenerateGinkgoTestRunArgs(procGinkgoConfig, reporterConfig, procGoFlagsConfig)\n\t\tcommand.AbortIfError(\"Failed to generate test run arguments\", err)\n\t\targs = append([]string{\"--test.timeout=0\"}, args...)\n\t\targs = append(args, additionalArgs...)\n\n\t\tcmd, buf := buildAndStartCommand(suite, args, false)\n\t\tvar exited atomic.Bool\n\t\tprocOutput[proc-1] = buf\n\t\tserver.RegisterAlive(proc, func() bool { return !exited.Load() })\n\n\t\tgo func() {\n\t\t\tcmd.Wait()\n\t\t\texitStatus := cmd.ProcessState.Sys().(syscall.WaitStatus).ExitStatus()\n\t\t\tprocResults <- procResult{\n\t\t\t\tproc:                 proc,\n\t\t\t\texitResult:           cmd.ProcessState.String(),\n\t\t\t\tpassed:               (exitStatus == 0) || (exitStatus == types.GINKGO_FOCUS_EXIT_CODE),\n\t\t\t\thasProgrammaticFocus: exitStatus == types.GINKGO_FOCUS_EXIT_CODE,\n\t\t\t}\n\t\t\texited.Store(true)\n\t\t}()\n\t}\n\n\tpassed := true\n\tfor proc := 1; proc <= cliConfig.ComputedProcs(); proc++ {\n\t\tresult := <-procResults\n\t\tpassed = passed && result.passed\n\t\tsuite.HasProgrammaticFocus = suite.HasProgrammaticFocus || result.hasProgrammaticFocus\n\t\tprocExitResult[result.proc-1] = result.exitResult\n\t}\n\tif passed {\n\t\tsuite.State = TestSuiteStatePassed\n\t} else {\n\t\tsuite.State = TestSuiteStateFailed\n\t}\n\n\tselect {\n\tcase <-server.GetSuiteDone():\n\t\tfmt.Println(\"\")\n\tcase <-time.After(time.Second):\n\t\t//one of the nodes never finished reporting to the server.  Something must have gone wrong.\n\t\tfmt.Fprint(formatter.ColorableStdErr, formatter.F(\"\\n{{bold}}{{red}}Ginkgo timed out waiting for all parallel procs to report back{{/}}\\n\"))\n\t\tfmt.Fprint(formatter.ColorableStdErr, formatter.F(\"{{gray}}Test suite:{{/}} %s (%s)\\n\\n\", suite.PackageName, suite.Path))\n\t\tfmt.Fprint(formatter.ColorableStdErr, formatter.Fiw(0, formatter.COLS, \"This occurs if a parallel process exits before it reports its results to the Ginkgo CLI.  The CLI will now print out all the stdout/stderr output it's collected from the running processes.  However you may not see anything useful in these logs because the individual test processes usually intercept output to stdout/stderr in order to capture it in the spec reports.\\n\\nYou may want to try rerunning your test suite with {{light-gray}}--output-interceptor-mode=none{{/}} to see additional output here and debug your suite.\\n\"))\n\t\tfmt.Fprintln(formatter.ColorableStdErr, \"  \")\n\t\tfor proc := 1; proc <= cliConfig.ComputedProcs(); proc++ {\n\t\t\tfmt.Fprint(formatter.ColorableStdErr, formatter.F(\"{{bold}}Output from proc %d:{{/}}\\n\", proc))\n\t\t\tfmt.Fprintln(os.Stderr, formatter.Fi(1, \"%s\", procOutput[proc-1].String()))\n\t\t\tfmt.Fprint(formatter.ColorableStdErr, formatter.F(\"{{bold}}Exit result of proc %d:{{/}}\\n\", proc))\n\t\t\tfmt.Fprintln(os.Stderr, formatter.Fi(1, \"%s\\n\", procExitResult[proc-1]))\n\t\t}\n\t\tfmt.Fprintf(os.Stderr, \"** End **\")\n\t}\n\n\tfor proc := 1; proc <= cliConfig.ComputedProcs(); proc++ {\n\t\toutput := procOutput[proc-1].String()\n\t\tif proc == 1 && checkForNoTestsWarning(procOutput[0]) && cliConfig.RequireSuite {\n\t\t\tsuite.State = TestSuiteStateFailed\n\t\t}\n\t\tif strings.Contains(output, \"deprecated Ginkgo functionality\") {\n\t\t\tfmt.Fprintln(os.Stderr, output)\n\t\t}\n\t}\n\n\tif len(coverProfiles) > 0 {\n\t\tif suite.HasProgrammaticFocus {\n\t\t\tfmt.Fprintln(os.Stdout, \"coverage: no coverfile was generated because specs are programmatically focused\")\n\t\t} else {\n\t\t\tcoverProfile := AbsPathForGeneratedAsset(goFlagsConfig.CoverProfile, suite, cliConfig, 0)\n\t\t\terr := MergeAndCleanupCoverProfiles(coverProfiles, coverProfile)\n\t\t\tcommand.AbortIfError(\"Failed to combine cover profiles\", err)\n\n\t\t\tcoverage, err := GetCoverageFromCoverProfile(coverProfile)\n\t\t\tcommand.AbortIfError(\"Failed to compute coverage\", err)\n\t\t\tif coverage == 0 {\n\t\t\t\tfmt.Fprintln(os.Stdout, \"coverage: [no statements]\")\n\t\t\t} else {\n\t\t\t\tfmt.Fprintf(os.Stdout, \"coverage: %.1f%% of statements\\n\", coverage)\n\t\t\t}\n\t\t}\n\t}\n\tif len(blockProfiles) > 0 {\n\t\tif suite.HasProgrammaticFocus {\n\t\t\tfmt.Fprintln(os.Stdout, \"no block profile was generated because specs are programmatically focused\")\n\t\t} else {\n\t\t\tblockProfile := AbsPathForGeneratedAsset(goFlagsConfig.BlockProfile, suite, cliConfig, 0)\n\t\t\terr := MergeProfiles(blockProfiles, blockProfile)\n\t\t\tcommand.AbortIfError(\"Failed to combine blockprofiles\", err)\n\t\t}\n\t}\n\tif len(cpuProfiles) > 0 {\n\t\tif suite.HasProgrammaticFocus {\n\t\t\tfmt.Fprintln(os.Stdout, \"no cpu profile was generated because specs are programmatically focused\")\n\t\t} else {\n\t\t\tcpuProfile := AbsPathForGeneratedAsset(goFlagsConfig.CPUProfile, suite, cliConfig, 0)\n\t\t\terr := MergeProfiles(cpuProfiles, cpuProfile)\n\t\t\tcommand.AbortIfError(\"Failed to combine cpuprofiles\", err)\n\t\t}\n\t}\n\tif len(memProfiles) > 0 {\n\t\tif suite.HasProgrammaticFocus {\n\t\t\tfmt.Fprintln(os.Stdout, \"no mem profile was generated because specs are programmatically focused\")\n\t\t} else {\n\t\t\tmemProfile := AbsPathForGeneratedAsset(goFlagsConfig.MemProfile, suite, cliConfig, 0)\n\t\t\terr := MergeProfiles(memProfiles, memProfile)\n\t\t\tcommand.AbortIfError(\"Failed to combine memprofiles\", err)\n\t\t}\n\t}\n\tif len(mutexProfiles) > 0 {\n\t\tif suite.HasProgrammaticFocus {\n\t\t\tfmt.Fprintln(os.Stdout, \"no mutex profile was generated because specs are programmatically focused\")\n\t\t} else {\n\t\t\tmutexProfile := AbsPathForGeneratedAsset(goFlagsConfig.MutexProfile, suite, cliConfig, 0)\n\t\t\terr := MergeProfiles(mutexProfiles, mutexProfile)\n\t\t\tcommand.AbortIfError(\"Failed to combine mutexprofiles\", err)\n\t\t}\n\t}\n\n\treturn suite\n}\n\nfunc runAfterRunHook(command string, noColor bool, suite TestSuite) {\n\tif command == \"\" {\n\t\treturn\n\t}\n\tf := formatter.NewWithNoColorBool(noColor)\n\n\t// Allow for string replacement to pass input to the command\n\tpassed := \"[FAIL]\"\n\tif suite.State.Is(TestSuiteStatePassed) {\n\t\tpassed = \"[PASS]\"\n\t}\n\tcommand = strings.ReplaceAll(command, \"(ginkgo-suite-passed)\", passed)\n\tcommand = strings.ReplaceAll(command, \"(ginkgo-suite-name)\", suite.PackageName)\n\n\t// Must break command into parts\n\tsplitArgs := regexp.MustCompile(`'.+'|\".+\"|\\S+`)\n\tparts := splitArgs.FindAllString(command, -1)\n\n\toutput, err := exec.Command(parts[0], parts[1:]...).CombinedOutput()\n\tif err != nil {\n\t\tfmt.Fprintln(formatter.ColorableStdOut, f.Fi(0, \"{{red}}{{bold}}After-run-hook failed:{{/}}\"))\n\t\tfmt.Fprintln(formatter.ColorableStdOut, f.Fi(1, \"{{red}}%s{{/}}\", output))\n\t} else {\n\t\tfmt.Fprintln(formatter.ColorableStdOut, f.Fi(0, \"{{green}}{{bold}}After-run-hook succeeded:{{/}}\"))\n\t\tfmt.Fprintln(formatter.ColorableStdOut, f.Fi(1, \"{{green}}%s{{/}}\", output))\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/test_suite.go",
    "content": "package internal\n\nimport (\n\t\"errors\"\n\t\"math/rand\"\n\t\"os\"\n\t\"path\"\n\t\"path/filepath\"\n\t\"regexp\"\n\t\"runtime\"\n\t\"strings\"\n\n\t\"github.com/onsi/ginkgo/v2/types\"\n)\n\nconst TIMEOUT_ELAPSED_FAILURE_REASON = \"Suite did not run because the timeout elapsed\"\nconst PRIOR_FAILURES_FAILURE_REASON = \"Suite did not run because prior suites failed and --keep-going is not set\"\nconst EMPTY_SKIP_FAILURE_REASON = \"Suite did not run go test reported that no test files were found\"\n\ntype TestSuiteState uint\n\nconst (\n\tTestSuiteStateInvalid TestSuiteState = iota\n\n\tTestSuiteStateUncompiled\n\tTestSuiteStateCompiled\n\n\tTestSuiteStatePassed\n\n\tTestSuiteStateSkippedDueToEmptyCompilation\n\tTestSuiteStateSkippedByFilter\n\tTestSuiteStateSkippedDueToPriorFailures\n\n\tTestSuiteStateFailed\n\tTestSuiteStateFailedDueToTimeout\n\tTestSuiteStateFailedToCompile\n)\n\nvar TestSuiteStateFailureStates = []TestSuiteState{TestSuiteStateFailed, TestSuiteStateFailedDueToTimeout, TestSuiteStateFailedToCompile}\n\nfunc (state TestSuiteState) Is(states ...TestSuiteState) bool {\n\tfor _, suiteState := range states {\n\t\tif suiteState == state {\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn false\n}\n\ntype TestSuite struct {\n\tPath        string\n\tPackageName string\n\tIsGinkgo    bool\n\n\tPrecompiled        bool\n\tPathToCompiledTest string\n\tCompilationError   error\n\n\tHasProgrammaticFocus bool\n\tState                TestSuiteState\n}\n\nfunc (ts TestSuite) AbsPath() string {\n\tpath, _ := filepath.Abs(ts.Path)\n\treturn path\n}\n\nfunc (ts TestSuite) NamespacedName() string {\n\tname := relPath(ts.Path)\n\tname = strings.TrimLeft(name, \".\"+string(filepath.Separator))\n\tname = strings.ReplaceAll(name, string(filepath.Separator), \"_\")\n\tname = strings.ReplaceAll(name, \" \", \"_\")\n\tif name == \"\" {\n\t\treturn ts.PackageName\n\t}\n\treturn name\n}\n\ntype TestSuites []TestSuite\n\nfunc (ts TestSuites) AnyHaveProgrammaticFocus() bool {\n\tfor _, suite := range ts {\n\t\tif suite.HasProgrammaticFocus {\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn false\n}\n\nfunc (ts TestSuites) ThatAreGinkgoSuites() TestSuites {\n\tout := TestSuites{}\n\tfor _, suite := range ts {\n\t\tif suite.IsGinkgo {\n\t\t\tout = append(out, suite)\n\t\t}\n\t}\n\treturn out\n}\n\nfunc (ts TestSuites) CountWithState(states ...TestSuiteState) int {\n\tn := 0\n\tfor _, suite := range ts {\n\t\tif suite.State.Is(states...) {\n\t\t\tn += 1\n\t\t}\n\t}\n\n\treturn n\n}\n\nfunc (ts TestSuites) WithState(states ...TestSuiteState) TestSuites {\n\tout := TestSuites{}\n\tfor _, suite := range ts {\n\t\tif suite.State.Is(states...) {\n\t\t\tout = append(out, suite)\n\t\t}\n\t}\n\n\treturn out\n}\n\nfunc (ts TestSuites) WithoutState(states ...TestSuiteState) TestSuites {\n\tout := TestSuites{}\n\tfor _, suite := range ts {\n\t\tif !suite.State.Is(states...) {\n\t\t\tout = append(out, suite)\n\t\t}\n\t}\n\n\treturn out\n}\n\nfunc (ts TestSuites) ShuffledCopy(seed int64) TestSuites {\n\tout := make(TestSuites, len(ts))\n\tpermutation := rand.New(rand.NewSource(seed)).Perm(len(ts))\n\tfor i, j := range permutation {\n\t\tout[i] = ts[j]\n\t}\n\treturn out\n}\n\nfunc FindSuites(args []string, cliConfig types.CLIConfig, allowPrecompiled bool) TestSuites {\n\tsuites := TestSuites{}\n\n\tif len(args) > 0 {\n\t\tfor _, arg := range args {\n\t\t\tif allowPrecompiled {\n\t\t\t\tsuite, err := precompiledTestSuite(arg)\n\t\t\t\tif err == nil {\n\t\t\t\t\tsuites = append(suites, suite)\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t}\n\t\t\trecurseForSuite := cliConfig.Recurse\n\t\t\tif strings.HasSuffix(arg, \"/...\") && arg != \"/...\" {\n\t\t\t\targ = arg[:len(arg)-4]\n\t\t\t\trecurseForSuite = true\n\t\t\t}\n\t\t\tsuites = append(suites, suitesInDir(arg, recurseForSuite)...)\n\t\t}\n\t} else {\n\t\tsuites = suitesInDir(\".\", cliConfig.Recurse)\n\t}\n\n\tif cliConfig.SkipPackage != \"\" {\n\t\tskipFilters := strings.Split(cliConfig.SkipPackage, \",\")\n\t\tfor idx := range suites {\n\t\t\tfor _, skipFilter := range skipFilters {\n\t\t\t\tif strings.Contains(suites[idx].Path, skipFilter) {\n\t\t\t\t\tsuites[idx].State = TestSuiteStateSkippedByFilter\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn suites\n}\n\nfunc precompiledTestSuite(path string) (TestSuite, error) {\n\tinfo, err := os.Stat(path)\n\tif err != nil {\n\t\treturn TestSuite{}, err\n\t}\n\n\tif info.IsDir() {\n\t\treturn TestSuite{}, errors.New(\"this is a directory, not a file\")\n\t}\n\n\tif filepath.Ext(path) != \".test\" && filepath.Ext(path) != \".exe\" {\n\t\treturn TestSuite{}, errors.New(\"this is not a .test binary\")\n\t}\n\n\tif filepath.Ext(path) == \".test\" && runtime.GOOS != \"windows\" && info.Mode()&0111 == 0 {\n\t\treturn TestSuite{}, errors.New(\"this is not executable\")\n\t}\n\n\tdir := relPath(filepath.Dir(path))\n\tpackageName := strings.TrimSuffix(filepath.Base(path), \".exe\")\n\tpackageName = strings.TrimSuffix(packageName, \".test\")\n\n\tpath, err = filepath.Abs(path)\n\tif err != nil {\n\t\treturn TestSuite{}, err\n\t}\n\n\treturn TestSuite{\n\t\tPath:               dir,\n\t\tPackageName:        packageName,\n\t\tIsGinkgo:           true,\n\t\tPrecompiled:        true,\n\t\tPathToCompiledTest: path,\n\t\tState:              TestSuiteStateCompiled,\n\t}, nil\n}\n\nfunc suitesInDir(dir string, recurse bool) TestSuites {\n\tsuites := TestSuites{}\n\n\tif path.Base(dir) == \"vendor\" {\n\t\treturn suites\n\t}\n\n\tfiles, _ := os.ReadDir(dir)\n\tre := regexp.MustCompile(`^[^._].*_test\\.go$`)\n\tfor _, file := range files {\n\t\tif !file.IsDir() && re.MatchString(file.Name()) {\n\t\t\tsuite := TestSuite{\n\t\t\t\tPath:        relPath(dir),\n\t\t\t\tPackageName: packageNameForSuite(dir),\n\t\t\t\tIsGinkgo:    filesHaveGinkgoSuite(dir, files),\n\t\t\t\tState:       TestSuiteStateUncompiled,\n\t\t\t}\n\t\t\tsuites = append(suites, suite)\n\t\t\tbreak\n\t\t}\n\t}\n\n\tif recurse {\n\t\tre = regexp.MustCompile(`^[._]`)\n\t\tfor _, file := range files {\n\t\t\tif file.IsDir() && !re.MatchString(file.Name()) {\n\t\t\t\tsuites = append(suites, suitesInDir(dir+\"/\"+file.Name(), recurse)...)\n\t\t\t}\n\t\t}\n\t}\n\n\treturn suites\n}\n\nfunc relPath(dir string) string {\n\tdir, _ = filepath.Abs(dir)\n\tcwd, _ := os.Getwd()\n\tdir, _ = filepath.Rel(cwd, filepath.Clean(dir))\n\n\tif string(dir[0]) != \".\" {\n\t\tdir = \".\" + string(filepath.Separator) + dir\n\t}\n\n\treturn dir\n}\n\nfunc packageNameForSuite(dir string) string {\n\tpath, _ := filepath.Abs(dir)\n\treturn filepath.Base(path)\n}\n\nfunc filesHaveGinkgoSuite(dir string, files []os.DirEntry) bool {\n\treTestFile := regexp.MustCompile(`_test\\.go$`)\n\treGinkgo := regexp.MustCompile(`package ginkgo|\\/ginkgo\"|\\/ginkgo\\/v2\"|\\/ginkgo\\/v2/dsl/`)\n\n\tfor _, file := range files {\n\t\tif !file.IsDir() && reTestFile.MatchString(file.Name()) {\n\t\t\tcontents, _ := os.ReadFile(dir + \"/\" + file.Name())\n\t\t\tif reGinkgo.Match(contents) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t}\n\n\treturn false\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/utils.go",
    "content": "package internal\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"os/exec\"\n\n\t\"github.com/onsi/ginkgo/v2/formatter\"\n\t\"github.com/onsi/ginkgo/v2/ginkgo/command\"\n)\n\nfunc FileExists(path string) bool {\n\t_, err := os.Stat(path)\n\treturn err == nil\n}\n\nfunc CopyFile(src string, dest string) error {\n\tsrcFile, err := os.Open(src)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tsrcStat, err := srcFile.Stat()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif _, err := os.Stat(dest); err == nil {\n\t\tos.Remove(dest)\n\t}\n\n\tdestFile, err := os.OpenFile(dest, os.O_WRONLY|os.O_CREATE, srcStat.Mode())\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t_, err = io.Copy(destFile, srcFile)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif err := srcFile.Close(); err != nil {\n\t\treturn err\n\t}\n\treturn destFile.Close()\n}\n\nfunc GoFmt(path string) {\n\tout, err := exec.Command(\"go\", \"fmt\", path).CombinedOutput()\n\tif err != nil {\n\t\tcommand.AbortIfError(fmt.Sprintf(\"Could not fmt:\\n%s\\n\", string(out)), err)\n\t}\n}\n\nfunc PluralizedWord(singular, plural string, count int) string {\n\tif count == 1 {\n\t\treturn singular\n\t}\n\treturn plural\n}\n\nfunc FailedSuitesReport(suites TestSuites, f formatter.Formatter) string {\n\tout := \"\"\n\tout += \"There were failures detected in the following suites:\\n\"\n\n\tmaxPackageNameLength := 0\n\tfor _, suite := range suites.WithState(TestSuiteStateFailureStates...) {\n\t\tif len(suite.PackageName) > maxPackageNameLength {\n\t\t\tmaxPackageNameLength = len(suite.PackageName)\n\t\t}\n\t}\n\n\tpackageNameFormatter := fmt.Sprintf(\"%%%ds\", maxPackageNameLength)\n\tfor _, suite := range suites {\n\t\tswitch suite.State {\n\t\tcase TestSuiteStateFailed:\n\t\t\tout += f.Fi(1, \"{{red}}\"+packageNameFormatter+\" {{gray}}%s{{/}}\\n\", suite.PackageName, suite.Path)\n\t\tcase TestSuiteStateFailedToCompile:\n\t\t\tout += f.Fi(1, \"{{red}}\"+packageNameFormatter+\" {{gray}}%s {{magenta}}[Compilation failure]{{/}}\\n\", suite.PackageName, suite.Path)\n\t\tcase TestSuiteStateFailedDueToTimeout:\n\t\t\tout += f.Fi(1, \"{{red}}\"+packageNameFormatter+\" {{gray}}%s {{orange}}[%s]{{/}}\\n\", suite.PackageName, suite.Path, TIMEOUT_ELAPSED_FAILURE_REASON)\n\t\t}\n\t}\n\treturn out\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/verify_version.go",
    "content": "package internal\n\nimport (\n\t\"fmt\"\n\t\"os/exec\"\n\t\"regexp\"\n\t\"strings\"\n\n\t\"github.com/onsi/ginkgo/v2/formatter\"\n\t\"github.com/onsi/ginkgo/v2/types\"\n)\n\nvar versiorRe = regexp.MustCompile(`v(\\d+\\.\\d+\\.\\d+)`)\n\nfunc VerifyCLIAndFrameworkVersion(suites TestSuites) {\n\tcliVersion := types.VERSION\n\tmismatches := map[string][]string{}\n\n\tfor _, suite := range suites {\n\t\tcmd := exec.Command(\"go\", \"list\", \"-m\", \"github.com/onsi/ginkgo/v2\")\n\t\tcmd.Dir = suite.Path\n\t\toutput, err := cmd.CombinedOutput()\n\t\tif err != nil {\n\t\t\tcontinue\n\t\t}\n\t\tcomponents := strings.Split(string(output), \" \")\n\t\tif len(components) != 2 {\n\t\t\tcontinue\n\t\t}\n\t\tmatches := versiorRe.FindStringSubmatch(components[1])\n\t\tif matches == nil || len(matches) != 2 {\n\t\t\tcontinue\n\t\t}\n\t\tlibraryVersion := matches[1]\n\t\tif cliVersion != libraryVersion {\n\t\t\tmismatches[libraryVersion] = append(mismatches[libraryVersion], suite.PackageName)\n\t\t}\n\t}\n\n\tif len(mismatches) == 0 {\n\t\treturn\n\t}\n\n\tfmt.Println(formatter.F(\"{{red}}{{bold}}Ginkgo detected a version mismatch between the Ginkgo CLI and the version of Ginkgo imported by your packages:{{/}}\"))\n\n\tfmt.Println(formatter.Fi(1, \"Ginkgo CLI Version:\"))\n\tfmt.Println(formatter.Fi(2, \"{{bold}}%s{{/}}\", cliVersion))\n\tfmt.Println(formatter.Fi(1, \"Mismatched package versions found:\"))\n\tfor version, packages := range mismatches {\n\t\tfmt.Println(formatter.Fi(2, \"{{bold}}%s{{/}} used by %s\", version, strings.Join(packages, \", \")))\n\t}\n\tfmt.Println(\"\")\n\tfmt.Println(formatter.Fiw(1, formatter.COLS, \"{{gray}}Ginkgo will continue to attempt to run but you may see errors (including flag parsing errors) and should either update your go.mod or your version of the Ginkgo CLI to match.\\n\\nTo install the matching version of the CLI run\\n  {{bold}}go install github.com/onsi/ginkgo/v2/ginkgo{{/}}{{gray}}\\nfrom a path that contains a go.mod file.  Alternatively you can use\\n  {{bold}}go run github.com/onsi/ginkgo/v2/ginkgo{{/}}{{gray}}\\nfrom a path that contains a go.mod file to invoke the matching version of the Ginkgo CLI.\\n\\nIf you are attempting to test multiple packages that each have a different version of the Ginkgo library with a single Ginkgo CLI that is currently unsupported.\\n{{/}}\"))\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/labels/labels_command.go",
    "content": "package labels\n\nimport (\n\t\"fmt\"\n\t\"go/ast\"\n\t\"go/parser\"\n\t\"go/token\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/onsi/ginkgo/v2/ginkgo/command\"\n\t\"github.com/onsi/ginkgo/v2/ginkgo/internal\"\n\t\"github.com/onsi/ginkgo/v2/types\"\n\t\"golang.org/x/tools/go/ast/inspector\"\n)\n\nfunc BuildLabelsCommand() command.Command {\n\tvar cliConfig = types.NewDefaultCLIConfig()\n\n\tflags, err := types.BuildLabelsCommandFlagSet(&cliConfig)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\treturn command.Command{\n\t\tName:     \"labels\",\n\t\tUsage:    \"ginkgo labels <FLAGS> <PACKAGES>\",\n\t\tFlags:    flags,\n\t\tShortDoc: \"List labels detected in the passed-in packages (or the package in the current directory if left blank).\",\n\t\tDocLink:  \"spec-labels\",\n\t\tCommand: func(args []string, _ []string) {\n\t\t\tListLabels(args, cliConfig)\n\t\t},\n\t}\n}\n\nfunc ListLabels(args []string, cliConfig types.CLIConfig) {\n\tsuites := internal.FindSuites(args, cliConfig, false).WithoutState(internal.TestSuiteStateSkippedByFilter)\n\tif len(suites) == 0 {\n\t\tcommand.AbortWith(\"Found no test suites\")\n\t}\n\tfor _, suite := range suites {\n\t\tlabels := fetchLabelsFromPackage(suite.Path)\n\t\tif len(labels) == 0 {\n\t\t\tfmt.Printf(\"%s: No labels found\\n\", suite.PackageName)\n\t\t} else {\n\t\t\tfmt.Printf(\"%s: [%s]\\n\", suite.PackageName, strings.Join(labels, \", \"))\n\t\t}\n\t}\n}\n\nfunc fetchLabelsFromPackage(packagePath string) []string {\n\tfset := token.NewFileSet()\n\tparsedPackages, err := parser.ParseDir(fset, packagePath, nil, 0)\n\tcommand.AbortIfError(\"Failed to parse package source:\", err)\n\n\tfiles := []*ast.File{}\n\thasTestPackage := false\n\tfor key, pkg := range parsedPackages {\n\t\tif strings.HasSuffix(key, \"_test\") {\n\t\t\thasTestPackage = true\n\t\t\tfor _, file := range pkg.Files {\n\t\t\t\tfiles = append(files, file)\n\t\t\t}\n\t\t}\n\t}\n\tif !hasTestPackage {\n\t\tfor _, pkg := range parsedPackages {\n\t\t\tfor _, file := range pkg.Files {\n\t\t\t\tfiles = append(files, file)\n\t\t\t}\n\t\t}\n\t}\n\n\tseen := map[string]bool{}\n\tlabels := []string{}\n\tispr := inspector.New(files)\n\tispr.Preorder([]ast.Node{&ast.CallExpr{}}, func(n ast.Node) {\n\t\tpotentialLabels := fetchLabels(n.(*ast.CallExpr))\n\t\tfor _, label := range potentialLabels {\n\t\t\tif !seen[label] {\n\t\t\t\tseen[label] = true\n\t\t\t\tlabels = append(labels, strconv.Quote(label))\n\t\t\t}\n\t\t}\n\t})\n\n\tsort.Strings(labels)\n\treturn labels\n}\n\nfunc fetchLabels(callExpr *ast.CallExpr) []string {\n\tout := []string{}\n\tswitch expr := callExpr.Fun.(type) {\n\tcase *ast.Ident:\n\t\tif expr.Name != \"Label\" {\n\t\t\treturn out\n\t\t}\n\tcase *ast.SelectorExpr:\n\t\tif expr.Sel.Name != \"Label\" {\n\t\t\treturn out\n\t\t}\n\tdefault:\n\t\treturn out\n\t}\n\tfor _, arg := range callExpr.Args {\n\t\tswitch expr := arg.(type) {\n\t\tcase *ast.BasicLit:\n\t\t\tif expr.Kind == token.STRING {\n\t\t\t\tunquoted, err := strconv.Unquote(expr.Value)\n\t\t\t\tif err != nil {\n\t\t\t\t\tunquoted = expr.Value\n\t\t\t\t}\n\t\t\t\tvalidated, err := types.ValidateAndCleanupLabel(unquoted, types.CodeLocation{})\n\t\t\t\tif err == nil {\n\t\t\t\t\tout = append(out, validated)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn out\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/main.go",
    "content": "package main\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"github.com/onsi/ginkgo/v2/ginkgo/build\"\n\t\"github.com/onsi/ginkgo/v2/ginkgo/command\"\n\t\"github.com/onsi/ginkgo/v2/ginkgo/generators\"\n\t\"github.com/onsi/ginkgo/v2/ginkgo/labels\"\n\t\"github.com/onsi/ginkgo/v2/ginkgo/outline\"\n\t\"github.com/onsi/ginkgo/v2/ginkgo/run\"\n\t\"github.com/onsi/ginkgo/v2/ginkgo/unfocus\"\n\t\"github.com/onsi/ginkgo/v2/ginkgo/watch\"\n\t\"github.com/onsi/ginkgo/v2/types\"\n)\n\nvar program command.Program\n\nfunc GenerateCommands() []command.Command {\n\treturn []command.Command{\n\t\twatch.BuildWatchCommand(),\n\t\tbuild.BuildBuildCommand(),\n\t\tgenerators.BuildBootstrapCommand(),\n\t\tgenerators.BuildGenerateCommand(),\n\t\tlabels.BuildLabelsCommand(),\n\t\toutline.BuildOutlineCommand(),\n\t\tunfocus.BuildUnfocusCommand(),\n\t\tBuildVersionCommand(),\n\t}\n}\n\nfunc main() {\n\tprogram = command.Program{\n\t\tName:           \"ginkgo\",\n\t\tHeading:        fmt.Sprintf(\"Ginkgo Version %s\", types.VERSION),\n\t\tCommands:       GenerateCommands(),\n\t\tDefaultCommand: run.BuildRunCommand(),\n\t\tDeprecatedCommands: []command.DeprecatedCommand{\n\t\t\t{Name: \"convert\", Deprecation: types.Deprecations.Convert()},\n\t\t\t{Name: \"blur\", Deprecation: types.Deprecations.Blur()},\n\t\t\t{Name: \"nodot\", Deprecation: types.Deprecations.Nodot()},\n\t\t},\n\t}\n\n\tprogram.RunAndExit(os.Args)\n}\n\nfunc BuildVersionCommand() command.Command {\n\treturn command.Command{\n\t\tName:     \"version\",\n\t\tUsage:    \"ginkgo version\",\n\t\tShortDoc: \"Print Ginkgo's version\",\n\t\tCommand: func(_ []string, _ []string) {\n\t\t\tfmt.Printf(\"Ginkgo Version %s\\n\", types.VERSION)\n\t\t},\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/outline/ginkgo.go",
    "content": "package outline\n\nimport (\n\t\"go/ast\"\n\t\"go/token\"\n\t\"strconv\"\n\n\t\"github.com/onsi/ginkgo/v2/types\"\n)\n\nconst (\n\t// undefinedTextAlt is used if the spec/container text cannot be derived\n\tundefinedTextAlt = \"undefined\"\n)\n\n// ginkgoMetadata holds useful bits of information for every entry in the outline\ntype ginkgoMetadata struct {\n\t// Name is the spec or container function name, e.g. `Describe` or `It`\n\tName string `json:\"name\"`\n\n\t// Text is the `text` argument passed to specs, and some containers\n\tText string `json:\"text\"`\n\n\t// Start is the position of first character of the spec or container block\n\tStart int `json:\"start\"`\n\n\t// End is the position of first character immediately after the spec or container block\n\tEnd int `json:\"end\"`\n\n\tSpec    bool     `json:\"spec\"`\n\tFocused bool     `json:\"focused\"`\n\tPending bool     `json:\"pending\"`\n\tLabels  []string `json:\"labels\"`\n}\n\n// ginkgoNode is used to construct the outline as a tree\ntype ginkgoNode struct {\n\tginkgoMetadata\n\tNodes []*ginkgoNode `json:\"nodes\"`\n}\n\ntype walkFunc func(n *ginkgoNode)\n\nfunc (n *ginkgoNode) PreOrder(f walkFunc) {\n\tf(n)\n\tfor _, m := range n.Nodes {\n\t\tm.PreOrder(f)\n\t}\n}\n\nfunc (n *ginkgoNode) PostOrder(f walkFunc) {\n\tfor _, m := range n.Nodes {\n\t\tm.PostOrder(f)\n\t}\n\tf(n)\n}\n\nfunc (n *ginkgoNode) Walk(pre, post walkFunc) {\n\tpre(n)\n\tfor _, m := range n.Nodes {\n\t\tm.Walk(pre, post)\n\t}\n\tpost(n)\n}\n\n// PropagateInheritedProperties propagates the Pending and Focused properties\n// through the subtree rooted at n.\nfunc (n *ginkgoNode) PropagateInheritedProperties() {\n\tn.PreOrder(func(thisNode *ginkgoNode) {\n\t\tfor _, descendantNode := range thisNode.Nodes {\n\t\t\tif thisNode.Pending {\n\t\t\t\tdescendantNode.Pending = true\n\t\t\t\tdescendantNode.Focused = false\n\t\t\t}\n\t\t\tif thisNode.Focused && !descendantNode.Pending {\n\t\t\t\tdescendantNode.Focused = true\n\t\t\t}\n\t\t}\n\t})\n}\n\n// BackpropagateUnfocus propagates the Focused property through the subtree\n// rooted at n. It applies the rule described in the Ginkgo docs:\n// > Nested programmatically focused specs follow a simple rule: if a\n// > leaf-node is marked focused, any of its ancestor nodes that are marked\n// > focus will be unfocused.\nfunc (n *ginkgoNode) BackpropagateUnfocus() {\n\tfocusedSpecInSubtreeStack := []bool{}\n\tn.PostOrder(func(thisNode *ginkgoNode) {\n\t\tif thisNode.Spec {\n\t\t\tfocusedSpecInSubtreeStack = append(focusedSpecInSubtreeStack, thisNode.Focused)\n\t\t\treturn\n\t\t}\n\t\tfocusedSpecInSubtree := false\n\t\tfor range thisNode.Nodes {\n\t\t\tfocusedSpecInSubtree = focusedSpecInSubtree || focusedSpecInSubtreeStack[len(focusedSpecInSubtreeStack)-1]\n\t\t\tfocusedSpecInSubtreeStack = focusedSpecInSubtreeStack[0 : len(focusedSpecInSubtreeStack)-1]\n\t\t}\n\t\tfocusedSpecInSubtreeStack = append(focusedSpecInSubtreeStack, focusedSpecInSubtree)\n\t\tif focusedSpecInSubtree {\n\t\t\tthisNode.Focused = false\n\t\t}\n\t})\n\n}\n\nfunc packageAndIdentNamesFromCallExpr(ce *ast.CallExpr) (string, string, bool) {\n\tswitch ex := ce.Fun.(type) {\n\tcase *ast.Ident:\n\t\treturn \"\", ex.Name, true\n\tcase *ast.SelectorExpr:\n\t\tpkgID, ok := ex.X.(*ast.Ident)\n\t\tif !ok {\n\t\t\treturn \"\", \"\", false\n\t\t}\n\t\t// A package identifier is top-level, so Obj must be nil\n\t\tif pkgID.Obj != nil {\n\t\t\treturn \"\", \"\", false\n\t\t}\n\t\tif ex.Sel == nil {\n\t\t\treturn \"\", \"\", false\n\t\t}\n\t\treturn pkgID.Name, ex.Sel.Name, true\n\tdefault:\n\t\treturn \"\", \"\", false\n\t}\n}\n\n// absoluteOffsetsForNode derives the absolute character offsets of the node start and\n// end positions.\nfunc absoluteOffsetsForNode(fset *token.FileSet, n ast.Node) (start, end int) {\n\treturn fset.PositionFor(n.Pos(), false).Offset, fset.PositionFor(n.End(), false).Offset\n}\n\n// ginkgoNodeFromCallExpr derives an outline entry from a go AST subtree\n// corresponding to a Ginkgo container or spec.\nfunc ginkgoNodeFromCallExpr(fset *token.FileSet, ce *ast.CallExpr, ginkgoPackageName *string) (*ginkgoNode, bool) {\n\tpackageName, identName, ok := packageAndIdentNamesFromCallExpr(ce)\n\tif !ok {\n\t\treturn nil, false\n\t}\n\n\tn := ginkgoNode{}\n\tn.Name = identName\n\tn.Start, n.End = absoluteOffsetsForNode(fset, ce)\n\tn.Nodes = make([]*ginkgoNode, 0)\n\tswitch identName {\n\tcase \"It\", \"Specify\", \"Entry\":\n\t\tn.Spec = true\n\t\tn.Text = textOrAltFromCallExpr(ce, undefinedTextAlt)\n\t\tn.Labels = labelFromCallExpr(ce)\n\t\tn.Pending = pendingFromCallExpr(ce)\n\t\treturn &n, ginkgoPackageName != nil && *ginkgoPackageName == packageName\n\tcase \"FIt\", \"FSpecify\", \"FEntry\":\n\t\tn.Spec = true\n\t\tn.Focused = true\n\t\tn.Text = textOrAltFromCallExpr(ce, undefinedTextAlt)\n\t\tn.Labels = labelFromCallExpr(ce)\n\t\treturn &n, ginkgoPackageName != nil && *ginkgoPackageName == packageName\n\tcase \"PIt\", \"PSpecify\", \"XIt\", \"XSpecify\", \"PEntry\", \"XEntry\":\n\t\tn.Spec = true\n\t\tn.Pending = true\n\t\tn.Text = textOrAltFromCallExpr(ce, undefinedTextAlt)\n\t\tn.Labels = labelFromCallExpr(ce)\n\t\treturn &n, ginkgoPackageName != nil && *ginkgoPackageName == packageName\n\tcase \"Context\", \"Describe\", \"When\", \"DescribeTable\":\n\t\tn.Text = textOrAltFromCallExpr(ce, undefinedTextAlt)\n\t\tn.Labels = labelFromCallExpr(ce)\n\t\tn.Pending = pendingFromCallExpr(ce)\n\t\treturn &n, ginkgoPackageName != nil && *ginkgoPackageName == packageName\n\tcase \"FContext\", \"FDescribe\", \"FWhen\", \"FDescribeTable\":\n\t\tn.Focused = true\n\t\tn.Text = textOrAltFromCallExpr(ce, undefinedTextAlt)\n\t\tn.Labels = labelFromCallExpr(ce)\n\t\treturn &n, ginkgoPackageName != nil && *ginkgoPackageName == packageName\n\tcase \"PContext\", \"PDescribe\", \"PWhen\", \"XContext\", \"XDescribe\", \"XWhen\", \"PDescribeTable\", \"XDescribeTable\":\n\t\tn.Pending = true\n\t\tn.Text = textOrAltFromCallExpr(ce, undefinedTextAlt)\n\t\tn.Labels = labelFromCallExpr(ce)\n\t\treturn &n, ginkgoPackageName != nil && *ginkgoPackageName == packageName\n\tcase \"By\":\n\t\tn.Text = textOrAltFromCallExpr(ce, undefinedTextAlt)\n\t\treturn &n, ginkgoPackageName != nil && *ginkgoPackageName == packageName\n\tcase \"AfterEach\", \"BeforeEach\":\n\t\treturn &n, ginkgoPackageName != nil && *ginkgoPackageName == packageName\n\tcase \"JustAfterEach\", \"JustBeforeEach\":\n\t\treturn &n, ginkgoPackageName != nil && *ginkgoPackageName == packageName\n\tcase \"AfterSuite\", \"BeforeSuite\":\n\t\treturn &n, ginkgoPackageName != nil && *ginkgoPackageName == packageName\n\tcase \"SynchronizedAfterSuite\", \"SynchronizedBeforeSuite\":\n\t\treturn &n, ginkgoPackageName != nil && *ginkgoPackageName == packageName\n\tdefault:\n\t\treturn nil, false\n\t}\n}\n\n// textOrAltFromCallExpr tries to derive the \"text\" of a Ginkgo spec or\n// container. If it cannot derive it, it returns the alt text.\nfunc textOrAltFromCallExpr(ce *ast.CallExpr, alt string) string {\n\ttext, defined := textFromCallExpr(ce)\n\tif !defined {\n\t\treturn alt\n\t}\n\treturn text\n}\n\n// textFromCallExpr tries to derive the \"text\" of a Ginkgo spec or container. If\n// it cannot derive it, it returns false.\nfunc textFromCallExpr(ce *ast.CallExpr) (string, bool) {\n\tif len(ce.Args) < 1 {\n\t\treturn \"\", false\n\t}\n\ttext, ok := ce.Args[0].(*ast.BasicLit)\n\tif !ok {\n\t\treturn \"\", false\n\t}\n\tswitch text.Kind {\n\tcase token.CHAR, token.STRING:\n\t\t// For token.CHAR and token.STRING, Value is quoted\n\t\tunquoted, err := strconv.Unquote(text.Value)\n\t\tif err != nil {\n\t\t\t// If unquoting fails, just use the raw Value\n\t\t\treturn text.Value, true\n\t\t}\n\t\treturn unquoted, true\n\tdefault:\n\t\treturn text.Value, true\n\t}\n}\n\nfunc labelFromCallExpr(ce *ast.CallExpr) []string {\n\n\tlabels := []string{}\n\tif len(ce.Args) < 2 {\n\t\treturn labels\n\t}\n\n\tfor _, arg := range ce.Args[1:] {\n\t\tswitch expr := arg.(type) {\n\t\tcase *ast.CallExpr:\n\t\t\tid, ok := expr.Fun.(*ast.Ident)\n\t\t\tif !ok {\n\t\t\t\t// to skip over cases where the expr.Fun. is actually *ast.SelectorExpr\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif id.Name == \"Label\" {\n\t\t\t\tls := extractLabels(expr)\n\t\t\t\tlabels = append(labels, ls...)\n\t\t\t}\n\t\t}\n\t}\n\treturn labels\n}\n\nfunc extractLabels(expr *ast.CallExpr) []string {\n\tout := []string{}\n\tfor _, arg := range expr.Args {\n\t\tswitch expr := arg.(type) {\n\t\tcase *ast.BasicLit:\n\t\t\tif expr.Kind == token.STRING {\n\t\t\t\tunquoted, err := strconv.Unquote(expr.Value)\n\t\t\t\tif err != nil {\n\t\t\t\t\tunquoted = expr.Value\n\t\t\t\t}\n\t\t\t\tvalidated, err := types.ValidateAndCleanupLabel(unquoted, types.CodeLocation{})\n\t\t\t\tif err == nil {\n\t\t\t\t\tout = append(out, validated)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn out\n}\n\nfunc pendingFromCallExpr(ce *ast.CallExpr) bool {\n\n\tpending := false\n\tif len(ce.Args) < 2 {\n\t\treturn pending\n\t}\n\n\tfor _, arg := range ce.Args[1:] {\n\t\tswitch expr := arg.(type) {\n\t\tcase *ast.CallExpr:\n\t\t\tid, ok := expr.Fun.(*ast.Ident)\n\t\t\tif !ok {\n\t\t\t\t// to skip over cases where the expr.Fun. is actually *ast.SelectorExpr\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif id.Name == \"Pending\" {\n\t\t\t\tpending = true\n\t\t\t}\n\t\tcase *ast.Ident:\n\t\t\tif expr.Name == \"Pending\" {\n\t\t\t\tpending = true\n\t\t\t}\n\t\t}\n\t}\n\treturn pending\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/outline/import.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Most of the required functions were available in the\n// \"golang.org/x/tools/go/ast/astutil\" package, but not exported.\n// They were copied from https://github.com/golang/tools/blob/2b0845dc783e36ae26d683f4915a5840ef01ab0f/go/ast/astutil/imports.go\n\npackage outline\n\nimport (\n\t\"go/ast\"\n\t\"strconv\"\n\t\"strings\"\n)\n\n// packageNameForImport returns the package name for the package. If the package\n// is not imported, it returns nil. \"Package name\" refers to `pkgname` in the\n// call expression `pkgname.ExportedIdentifier`. Examples:\n// (import path not found) -> nil\n// \"import example.com/pkg/foo\" -> \"foo\"\n// \"import fooalias example.com/pkg/foo\" -> \"fooalias\"\n// \"import . example.com/pkg/foo\" -> \"\"\nfunc packageNameForImport(f *ast.File, path string) *string {\n\tspec := importSpec(f, path)\n\tif spec == nil {\n\t\treturn nil\n\t}\n\tname := spec.Name.String()\n\tif name == \"<nil>\" {\n\t\tname = \"ginkgo\"\n\t}\n\tif name == \".\" {\n\t\tname = \"\"\n\t}\n\treturn &name\n}\n\n// importSpec returns the import spec if f imports path,\n// or nil otherwise.\nfunc importSpec(f *ast.File, path string) *ast.ImportSpec {\n\tfor _, s := range f.Imports {\n\t\tif strings.HasPrefix(importPath(s), path) {\n\t\t\treturn s\n\t\t}\n\t}\n\treturn nil\n}\n\n// importPath returns the unquoted import path of s,\n// or \"\" if the path is not properly quoted.\nfunc importPath(s *ast.ImportSpec) string {\n\tt, err := strconv.Unquote(s.Path.Value)\n\tif err != nil {\n\t\treturn \"\"\n\t}\n\treturn t\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/outline/outline.go",
    "content": "package outline\n\nimport (\n\t\"bytes\"\n\t\"encoding/csv\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"go/ast\"\n\t\"go/token\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"golang.org/x/tools/go/ast/inspector\"\n)\n\nconst (\n\t// ginkgoImportPath is the well-known ginkgo import path\n\tginkgoImportPath = \"github.com/onsi/ginkgo/v2\"\n)\n\n// FromASTFile returns an outline for a Ginkgo test source file\nfunc FromASTFile(fset *token.FileSet, src *ast.File) (*outline, error) {\n\tginkgoPackageName := packageNameForImport(src, ginkgoImportPath)\n\tif ginkgoPackageName == nil {\n\t\treturn nil, fmt.Errorf(\"file does not import %q\", ginkgoImportPath)\n\t}\n\n\troot := ginkgoNode{}\n\tstack := []*ginkgoNode{&root}\n\tispr := inspector.New([]*ast.File{src})\n\tispr.Nodes([]ast.Node{(*ast.CallExpr)(nil)}, func(node ast.Node, push bool) bool {\n\t\tif push {\n\t\t\t// Pre-order traversal\n\t\t\tce, ok := node.(*ast.CallExpr)\n\t\t\tif !ok {\n\t\t\t\t// Because `Nodes` calls this function only when the node is an\n\t\t\t\t// ast.CallExpr, this should never happen\n\t\t\t\tpanic(fmt.Errorf(\"node starting at %d, ending at %d is not an *ast.CallExpr\", node.Pos(), node.End()))\n\t\t\t}\n\t\t\tgn, ok := ginkgoNodeFromCallExpr(fset, ce, ginkgoPackageName)\n\t\t\tif !ok {\n\t\t\t\t// Node is not a Ginkgo spec or container, continue\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tparent := stack[len(stack)-1]\n\t\t\tparent.Nodes = append(parent.Nodes, gn)\n\t\t\tstack = append(stack, gn)\n\t\t\treturn true\n\t\t}\n\t\t// Post-order traversal\n\t\tstart, end := absoluteOffsetsForNode(fset, node)\n\t\tlastVisitedGinkgoNode := stack[len(stack)-1]\n\t\tif start != lastVisitedGinkgoNode.Start || end != lastVisitedGinkgoNode.End {\n\t\t\t// Node is not a Ginkgo spec or container, so it was not pushed onto the stack, continue\n\t\t\treturn true\n\t\t}\n\t\tstack = stack[0 : len(stack)-1]\n\t\treturn true\n\t})\n\tif len(root.Nodes) == 0 {\n\t\treturn &outline{[]*ginkgoNode{}}, nil\n\t}\n\n\t// Derive the final focused property for all nodes. This must be done\n\t// _before_ propagating the inherited focused property.\n\troot.BackpropagateUnfocus()\n\t// Now, propagate inherited properties, including focused and pending.\n\troot.PropagateInheritedProperties()\n\n\treturn &outline{root.Nodes}, nil\n}\n\ntype outline struct {\n\tNodes []*ginkgoNode `json:\"nodes\"`\n}\n\nfunc (o *outline) MarshalJSON() ([]byte, error) {\n\treturn json.Marshal(o.Nodes)\n}\n\n// String returns a CSV-formatted outline. Spec or container are output in\n// depth-first order.\nfunc (o *outline) String() string {\n\treturn o.StringIndent(0)\n}\n\n// StringIndent returns a CSV-formated outline, but every line is indented by\n// one 'width' of spaces for every level of nesting.\nfunc (o *outline) StringIndent(width int) string {\n\tvar b bytes.Buffer\n\tb.WriteString(\"Name,Text,Start,End,Spec,Focused,Pending,Labels\\n\")\n\n\tcsvWriter := csv.NewWriter(&b)\n\n\tcurrentIndent := 0\n\tpre := func(n *ginkgoNode) {\n\t\tb.WriteString(fmt.Sprintf(\"%*s\", currentIndent, \"\"))\n\t\tvar labels string\n\t\tif len(n.Labels) == 1 {\n\t\t\tlabels = n.Labels[0]\n\t\t} else {\n\t\t\tlabels = strings.Join(n.Labels, \", \")\n\t\t}\n\n\t\trow := []string{\n\t\t\tn.Name,\n\t\t\tn.Text,\n\t\t\tstrconv.Itoa(n.Start),\n\t\t\tstrconv.Itoa(n.End),\n\t\t\tstrconv.FormatBool(n.Spec),\n\t\t\tstrconv.FormatBool(n.Focused),\n\t\t\tstrconv.FormatBool(n.Pending),\n\t\t\tlabels,\n\t\t}\n\t\tcsvWriter.Write(row)\n\n\t\t// Ensure we write to `b' before the next `b.WriteString()', which might be adding indentation\n\t\tcsvWriter.Flush()\n\n\t\tcurrentIndent += width\n\t}\n\tpost := func(n *ginkgoNode) {\n\t\tcurrentIndent -= width\n\t}\n\tfor _, n := range o.Nodes {\n\t\tn.Walk(pre, post)\n\t}\n\n\treturn b.String()\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/outline/outline_command.go",
    "content": "package outline\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"go/parser\"\n\t\"go/token\"\n\t\"os\"\n\n\t\"github.com/onsi/ginkgo/v2/ginkgo/command\"\n\t\"github.com/onsi/ginkgo/v2/types\"\n)\n\nconst (\n\t// indentWidth is the width used by the 'indent' output\n\tindentWidth = 4\n\t// stdinAlias is a portable alias for stdin. This convention is used in\n\t// other CLIs, e.g., kubectl.\n\tstdinAlias   = \"-\"\n\tusageCommand = \"ginkgo outline <filename>\"\n)\n\ntype outlineConfig struct {\n\tFormat string\n}\n\nfunc BuildOutlineCommand() command.Command {\n\tconf := outlineConfig{\n\t\tFormat: \"csv\",\n\t}\n\tflags, err := types.NewGinkgoFlagSet(\n\t\ttypes.GinkgoFlags{\n\t\t\t{Name: \"format\", KeyPath: \"Format\",\n\t\t\t\tUsage:             \"Format of outline\",\n\t\t\t\tUsageArgument:     \"one of 'csv', 'indent', or 'json'\",\n\t\t\t\tUsageDefaultValue: conf.Format,\n\t\t\t},\n\t\t},\n\t\t&conf,\n\t\ttypes.GinkgoFlagSections{},\n\t)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\treturn command.Command{\n\t\tName:          \"outline\",\n\t\tUsage:         \"ginkgo outline <filename>\",\n\t\tShortDoc:      \"Create an outline of Ginkgo symbols for a file\",\n\t\tDocumentation: \"To read from stdin, use: `ginkgo outline -`\",\n\t\tDocLink:       \"creating-an-outline-of-specs\",\n\t\tFlags:         flags,\n\t\tCommand: func(args []string, _ []string) {\n\t\t\toutlineFile(args, conf.Format)\n\t\t},\n\t}\n}\n\nfunc outlineFile(args []string, format string) {\n\tif len(args) != 1 {\n\t\tcommand.AbortWithUsage(\"outline expects exactly one argument\")\n\t}\n\n\tfilename := args[0]\n\tvar src *os.File\n\tif filename == stdinAlias {\n\t\tsrc = os.Stdin\n\t} else {\n\t\tvar err error\n\t\tsrc, err = os.Open(filename)\n\t\tcommand.AbortIfError(\"Failed to open file:\", err)\n\t}\n\n\tfset := token.NewFileSet()\n\n\tparsedSrc, err := parser.ParseFile(fset, filename, src, 0)\n\tcommand.AbortIfError(\"Failed to parse source:\", err)\n\n\to, err := FromASTFile(fset, parsedSrc)\n\tcommand.AbortIfError(\"Failed to create outline:\", err)\n\n\tvar oerr error\n\tswitch format {\n\tcase \"csv\":\n\t\t_, oerr = fmt.Print(o)\n\tcase \"indent\":\n\t\t_, oerr = fmt.Print(o.StringIndent(indentWidth))\n\tcase \"json\":\n\t\tb, err := json.Marshal(o)\n\t\tif err != nil {\n\t\t\tprintln(fmt.Sprintf(\"error marshalling to json: %s\", err))\n\t\t}\n\t\t_, oerr = fmt.Println(string(b))\n\tdefault:\n\t\tcommand.AbortWith(\"Format %s not accepted\", format)\n\t}\n\tcommand.AbortIfError(\"Failed to write outline:\", oerr)\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/run/run_command.go",
    "content": "package run\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/onsi/ginkgo/v2/formatter\"\n\t\"github.com/onsi/ginkgo/v2/ginkgo/command\"\n\t\"github.com/onsi/ginkgo/v2/ginkgo/internal\"\n\t\"github.com/onsi/ginkgo/v2/internal/interrupt_handler\"\n\t\"github.com/onsi/ginkgo/v2/types\"\n)\n\nfunc BuildRunCommand() command.Command {\n\tvar suiteConfig = types.NewDefaultSuiteConfig()\n\tvar reporterConfig = types.NewDefaultReporterConfig()\n\tvar cliConfig = types.NewDefaultCLIConfig()\n\tvar goFlagsConfig = types.NewDefaultGoFlagsConfig()\n\n\tflags, err := types.BuildRunCommandFlagSet(&suiteConfig, &reporterConfig, &cliConfig, &goFlagsConfig)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tinterruptHandler := interrupt_handler.NewInterruptHandler(nil)\n\tinterrupt_handler.SwallowSigQuit()\n\n\treturn command.Command{\n\t\tName:          \"run\",\n\t\tFlags:         flags,\n\t\tUsage:         \"ginkgo run <FLAGS> <PACKAGES> -- <PASS-THROUGHS>\",\n\t\tShortDoc:      \"Run the tests in the passed in <PACKAGES> (or the package in the current directory if left blank)\",\n\t\tDocumentation: \"Any arguments after -- will be passed to the test.\",\n\t\tDocLink:       \"running-specs\",\n\t\tCommand: func(args []string, additionalArgs []string) {\n\t\t\tvar errors []error\n\t\t\tcliConfig, goFlagsConfig, errors = types.VetAndInitializeCLIAndGoConfig(cliConfig, goFlagsConfig)\n\t\t\tcommand.AbortIfErrors(\"Ginkgo detected configuration issues:\", errors)\n\n\t\t\trunner := &SpecRunner{\n\t\t\t\tcliConfig:      cliConfig,\n\t\t\t\tgoFlagsConfig:  goFlagsConfig,\n\t\t\t\tsuiteConfig:    suiteConfig,\n\t\t\t\treporterConfig: reporterConfig,\n\t\t\t\tflags:          flags,\n\n\t\t\t\tinterruptHandler: interruptHandler,\n\t\t\t}\n\n\t\t\trunner.RunSpecs(args, additionalArgs)\n\t\t},\n\t}\n}\n\ntype SpecRunner struct {\n\tsuiteConfig    types.SuiteConfig\n\treporterConfig types.ReporterConfig\n\tcliConfig      types.CLIConfig\n\tgoFlagsConfig  types.GoFlagsConfig\n\tflags          types.GinkgoFlagSet\n\n\tinterruptHandler *interrupt_handler.InterruptHandler\n}\n\nfunc (r *SpecRunner) RunSpecs(args []string, additionalArgs []string) {\n\tsuites := internal.FindSuites(args, r.cliConfig, true)\n\tskippedSuites := suites.WithState(internal.TestSuiteStateSkippedByFilter)\n\tsuites = suites.WithoutState(internal.TestSuiteStateSkippedByFilter)\n\n\tinternal.VerifyCLIAndFrameworkVersion(suites)\n\n\tif len(skippedSuites) > 0 {\n\t\tfmt.Println(\"Will skip:\")\n\t\tfor _, skippedSuite := range skippedSuites {\n\t\t\tfmt.Println(\"  \" + skippedSuite.Path)\n\t\t}\n\t}\n\n\tif len(skippedSuites) > 0 && len(suites) == 0 {\n\t\tcommand.AbortGracefullyWith(\"All tests skipped! Exiting...\")\n\t}\n\n\tif len(suites) == 0 {\n\t\tcommand.AbortWith(\"Found no test suites\")\n\t}\n\n\tif len(suites) > 1 && !r.flags.WasSet(\"succinct\") && r.reporterConfig.Verbosity().LT(types.VerbosityLevelVerbose) {\n\t\tr.reporterConfig.Succinct = true\n\t}\n\n\tt := time.Now()\n\tvar endTime time.Time\n\tif r.suiteConfig.Timeout > 0 {\n\t\tendTime = t.Add(r.suiteConfig.Timeout)\n\t}\n\n\titeration := 0\nOUTER_LOOP:\n\tfor {\n\t\tif !r.flags.WasSet(\"seed\") {\n\t\t\tr.suiteConfig.RandomSeed = time.Now().Unix()\n\t\t}\n\t\tif r.cliConfig.RandomizeSuites && len(suites) > 1 {\n\t\t\tsuites = suites.ShuffledCopy(r.suiteConfig.RandomSeed)\n\t\t}\n\n\t\topc := internal.NewOrderedParallelCompiler(r.cliConfig.ComputedNumCompilers())\n\t\topc.StartCompiling(suites, r.goFlagsConfig, false)\n\n\tSUITE_LOOP:\n\t\tfor {\n\t\t\tsuiteIdx, suite := opc.Next()\n\t\t\tif suiteIdx >= len(suites) {\n\t\t\t\tbreak SUITE_LOOP\n\t\t\t}\n\t\t\tsuites[suiteIdx] = suite\n\n\t\t\tif r.interruptHandler.Status().Interrupted() {\n\t\t\t\topc.StopAndDrain()\n\t\t\t\tbreak OUTER_LOOP\n\t\t\t}\n\n\t\t\tif suites[suiteIdx].State.Is(internal.TestSuiteStateSkippedDueToEmptyCompilation) {\n\t\t\t\tfmt.Printf(\"Skipping %s (no test files)\\n\", suite.Path)\n\t\t\t\tcontinue SUITE_LOOP\n\t\t\t}\n\n\t\t\tif suites[suiteIdx].State.Is(internal.TestSuiteStateFailedToCompile) {\n\t\t\t\tfmt.Println(suites[suiteIdx].CompilationError.Error())\n\t\t\t\tif !r.cliConfig.KeepGoing {\n\t\t\t\t\topc.StopAndDrain()\n\t\t\t\t}\n\t\t\t\tcontinue SUITE_LOOP\n\t\t\t}\n\n\t\t\tif suites.CountWithState(internal.TestSuiteStateFailureStates...) > 0 && !r.cliConfig.KeepGoing {\n\t\t\t\tsuites[suiteIdx].State = internal.TestSuiteStateSkippedDueToPriorFailures\n\t\t\t\topc.StopAndDrain()\n\t\t\t\tcontinue SUITE_LOOP\n\t\t\t}\n\n\t\t\tif !endTime.IsZero() {\n\t\t\t\tr.suiteConfig.Timeout = time.Until(endTime)\n\t\t\t\tif r.suiteConfig.Timeout <= 0 {\n\t\t\t\t\tsuites[suiteIdx].State = internal.TestSuiteStateFailedDueToTimeout\n\t\t\t\t\topc.StopAndDrain()\n\t\t\t\t\tcontinue SUITE_LOOP\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tsuites[suiteIdx] = internal.RunCompiledSuite(suites[suiteIdx], r.suiteConfig, r.reporterConfig, r.cliConfig, r.goFlagsConfig, additionalArgs)\n\t\t}\n\n\t\tif suites.CountWithState(internal.TestSuiteStateFailureStates...) > 0 {\n\t\t\tif iteration > 0 {\n\t\t\t\tfmt.Printf(\"\\nTests failed on attempt #%d\\n\\n\", iteration+1)\n\t\t\t}\n\t\t\tbreak OUTER_LOOP\n\t\t}\n\n\t\tif r.cliConfig.UntilItFails {\n\t\t\tfmt.Printf(\"\\nAll tests passed...\\nWill keep running them until they fail.\\nThis was attempt #%d\\n%s\\n\", iteration+1, orcMessage(iteration+1))\n\t\t} else if r.cliConfig.Repeat > 0 && iteration < r.cliConfig.Repeat {\n\t\t\tfmt.Printf(\"\\nAll tests passed...\\nThis was attempt %d of %d.\\n\", iteration+1, r.cliConfig.Repeat+1)\n\t\t} else {\n\t\t\tbreak OUTER_LOOP\n\t\t}\n\t\titeration += 1\n\t}\n\n\tinternal.Cleanup(r.goFlagsConfig, suites...)\n\n\tmessages, err := internal.FinalizeProfilesAndReportsForSuites(suites, r.cliConfig, r.suiteConfig, r.reporterConfig, r.goFlagsConfig)\n\tcommand.AbortIfError(\"could not finalize profiles:\", err)\n\tfor _, message := range messages {\n\t\tfmt.Println(message)\n\t}\n\n\tfmt.Printf(\"\\nGinkgo ran %d %s in %s\\n\", len(suites), internal.PluralizedWord(\"suite\", \"suites\", len(suites)), time.Since(t))\n\n\tif suites.CountWithState(internal.TestSuiteStateFailureStates...) == 0 {\n\t\tif suites.AnyHaveProgrammaticFocus() && strings.TrimSpace(os.Getenv(\"GINKGO_EDITOR_INTEGRATION\")) == \"\" {\n\t\t\tfmt.Printf(\"Test Suite Passed\\n\")\n\t\t\tfmt.Printf(\"Detected Programmatic Focus - setting exit status to %d\\n\", types.GINKGO_FOCUS_EXIT_CODE)\n\t\t\tcommand.Abort(command.AbortDetails{ExitCode: types.GINKGO_FOCUS_EXIT_CODE})\n\t\t} else {\n\t\t\tfmt.Printf(\"Test Suite Passed\\n\")\n\t\t\tcommand.Abort(command.AbortDetails{})\n\t\t}\n\t} else {\n\t\tfmt.Fprintln(formatter.ColorableStdOut, \"\")\n\t\tif len(suites) > 1 && suites.CountWithState(internal.TestSuiteStateFailureStates...) > 0 {\n\t\t\tfmt.Fprintln(formatter.ColorableStdOut,\n\t\t\t\tinternal.FailedSuitesReport(suites, formatter.NewWithNoColorBool(r.reporterConfig.NoColor)))\n\t\t}\n\t\tfmt.Printf(\"Test Suite Failed\\n\")\n\t\tcommand.Abort(command.AbortDetails{ExitCode: 1})\n\t}\n}\n\nfunc orcMessage(iteration int) string {\n\tif iteration < 10 {\n\t\treturn \"\"\n\t} else if iteration < 30 {\n\t\treturn []string{\n\t\t\t\"If at first you succeed...\",\n\t\t\t\"...try, try again.\",\n\t\t\t\"Looking good!\",\n\t\t\t\"Still good...\",\n\t\t\t\"I think your tests are fine....\",\n\t\t\t\"Yep, still passing\",\n\t\t\t\"Oh boy, here I go testin' again!\",\n\t\t\t\"Even the gophers are getting bored\",\n\t\t\t\"Did you try -race?\",\n\t\t\t\"Maybe you should stop now?\",\n\t\t\t\"I'm getting tired...\",\n\t\t\t\"What if I just made you a sandwich?\",\n\t\t\t\"Hit ^C, hit ^C, please hit ^C\",\n\t\t\t\"Make it stop. Please!\",\n\t\t\t\"Come on!  Enough is enough!\",\n\t\t\t\"Dave, this conversation can serve no purpose anymore. Goodbye.\",\n\t\t\t\"Just what do you think you're doing, Dave? \",\n\t\t\t\"I, Sisyphus\",\n\t\t\t\"Insanity: doing the same thing over and over again and expecting different results. -Einstein\",\n\t\t\t\"I guess Einstein never tried to churn butter\",\n\t\t}[iteration-10] + \"\\n\"\n\t} else {\n\t\treturn \"No, seriously... you can probably stop now.\\n\"\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/unfocus/unfocus_command.go",
    "content": "package unfocus\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"go/ast\"\n\t\"go/parser\"\n\t\"go/token\"\n\t\"io\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"github.com/onsi/ginkgo/v2/ginkgo/command\"\n)\n\nfunc BuildUnfocusCommand() command.Command {\n\treturn command.Command{\n\t\tName:     \"unfocus\",\n\t\tUsage:    \"ginkgo unfocus\",\n\t\tShortDoc: \"Recursively unfocus any focused tests under the current directory\",\n\t\tDocLink:  \"filtering-specs\",\n\t\tCommand: func(_ []string, _ []string) {\n\t\t\tunfocusSpecs()\n\t\t},\n\t}\n}\n\nfunc unfocusSpecs() {\n\tfmt.Println(\"Scanning for focus...\")\n\n\tgoFiles := make(chan string)\n\tgo func() {\n\t\tunfocusDir(goFiles, \".\")\n\t\tclose(goFiles)\n\t}()\n\n\tconst workers = 10\n\twg := sync.WaitGroup{}\n\twg.Add(workers)\n\n\tfor i := 0; i < workers; i++ {\n\t\tgo func() {\n\t\t\tfor path := range goFiles {\n\t\t\t\tunfocusFile(path)\n\t\t\t}\n\t\t\twg.Done()\n\t\t}()\n\t}\n\n\twg.Wait()\n}\n\nfunc unfocusDir(goFiles chan string, path string) {\n\tfiles, err := os.ReadDir(path)\n\tif err != nil {\n\t\tfmt.Println(err.Error())\n\t\treturn\n\t}\n\n\tfor _, f := range files {\n\t\tswitch {\n\t\tcase f.IsDir() && shouldProcessDir(f.Name()):\n\t\t\tunfocusDir(goFiles, filepath.Join(path, f.Name()))\n\t\tcase !f.IsDir() && shouldProcessFile(f.Name()):\n\t\t\tgoFiles <- filepath.Join(path, f.Name())\n\t\t}\n\t}\n}\n\nfunc shouldProcessDir(basename string) bool {\n\treturn basename != \"vendor\" && !strings.HasPrefix(basename, \".\")\n}\n\nfunc shouldProcessFile(basename string) bool {\n\treturn strings.HasSuffix(basename, \".go\")\n}\n\nfunc unfocusFile(path string) {\n\tdata, err := os.ReadFile(path)\n\tif err != nil {\n\t\tfmt.Printf(\"error reading file '%s': %s\\n\", path, err.Error())\n\t\treturn\n\t}\n\n\tast, err := parser.ParseFile(token.NewFileSet(), path, bytes.NewReader(data), parser.ParseComments)\n\tif err != nil {\n\t\tfmt.Printf(\"error parsing file '%s': %s\\n\", path, err.Error())\n\t\treturn\n\t}\n\n\teliminations := scanForFocus(ast)\n\tif len(eliminations) == 0 {\n\t\treturn\n\t}\n\n\tfmt.Printf(\"...updating %s\\n\", path)\n\tbackup, err := writeBackup(path, data)\n\tif err != nil {\n\t\tfmt.Printf(\"error creating backup file: %s\\n\", err.Error())\n\t\treturn\n\t}\n\n\tif err := updateFile(path, data, eliminations); err != nil {\n\t\tfmt.Printf(\"error writing file '%s': %s\\n\", path, err.Error())\n\t\treturn\n\t}\n\n\tos.Remove(backup)\n}\n\nfunc writeBackup(path string, data []byte) (string, error) {\n\tt, err := os.CreateTemp(filepath.Dir(path), filepath.Base(path))\n\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"error creating temporary file: %w\", err)\n\t}\n\tdefer t.Close()\n\n\tif _, err := io.Copy(t, bytes.NewReader(data)); err != nil {\n\t\treturn \"\", fmt.Errorf(\"error writing to temporary file: %w\", err)\n\t}\n\n\treturn t.Name(), nil\n}\n\nfunc updateFile(path string, data []byte, eliminations [][]int64) error {\n\tto, err := os.Create(path)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"error opening file for writing '%s': %w\\n\", path, err)\n\t}\n\tdefer to.Close()\n\n\tfrom := bytes.NewReader(data)\n\tvar cursor int64\n\tfor _, eliminationRange := range eliminations {\n\t\tpositionToEliminate, lengthToEliminate := eliminationRange[0]-1, eliminationRange[1]\n\t\tif _, err := io.CopyN(to, from, positionToEliminate-cursor); err != nil {\n\t\t\treturn fmt.Errorf(\"error copying data: %w\", err)\n\t\t}\n\n\t\tcursor = positionToEliminate + lengthToEliminate\n\n\t\tif _, err := from.Seek(lengthToEliminate, io.SeekCurrent); err != nil {\n\t\t\treturn fmt.Errorf(\"error seeking to position in buffer: %w\", err)\n\t\t}\n\t}\n\n\tif _, err := io.Copy(to, from); err != nil {\n\t\treturn fmt.Errorf(\"error copying end data: %w\", err)\n\t}\n\n\treturn nil\n}\n\nfunc scanForFocus(file *ast.File) (eliminations [][]int64) {\n\tast.Inspect(file, func(n ast.Node) bool {\n\t\tif c, ok := n.(*ast.CallExpr); ok {\n\t\t\tif i, ok := c.Fun.(*ast.Ident); ok {\n\t\t\t\tif isFocus(i.Name) {\n\t\t\t\t\teliminations = append(eliminations, []int64{int64(i.Pos()), 1})\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif i, ok := n.(*ast.Ident); ok {\n\t\t\tif i.Name == \"Focus\" {\n\t\t\t\teliminations = append(eliminations, []int64{int64(i.Pos()), 6})\n\t\t\t}\n\t\t}\n\n\t\treturn true\n\t})\n\n\treturn eliminations\n}\n\nfunc isFocus(name string) bool {\n\tswitch name {\n\tcase \"FDescribe\", \"FContext\", \"FIt\", \"FDescribeTable\", \"FEntry\", \"FSpecify\", \"FWhen\":\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/watch/delta.go",
    "content": "package watch\n\nimport \"sort\"\n\ntype Delta struct {\n\tModifiedPackages []string\n\n\tNewSuites      []*Suite\n\tRemovedSuites  []*Suite\n\tmodifiedSuites []*Suite\n}\n\ntype DescendingByDelta []*Suite\n\nfunc (a DescendingByDelta) Len() int           { return len(a) }\nfunc (a DescendingByDelta) Swap(i, j int)      { a[i], a[j] = a[j], a[i] }\nfunc (a DescendingByDelta) Less(i, j int) bool { return a[i].Delta() > a[j].Delta() }\n\nfunc (d Delta) ModifiedSuites() []*Suite {\n\tsort.Sort(DescendingByDelta(d.modifiedSuites))\n\treturn d.modifiedSuites\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/watch/delta_tracker.go",
    "content": "package watch\n\nimport (\n\t\"fmt\"\n\n\t\"regexp\"\n\n\t\"github.com/onsi/ginkgo/v2/ginkgo/internal\"\n)\n\ntype SuiteErrors map[internal.TestSuite]error\n\ntype DeltaTracker struct {\n\tmaxDepth      int\n\twatchRegExp   *regexp.Regexp\n\tsuites        map[string]*Suite\n\tpackageHashes *PackageHashes\n}\n\nfunc NewDeltaTracker(maxDepth int, watchRegExp *regexp.Regexp) *DeltaTracker {\n\treturn &DeltaTracker{\n\t\tmaxDepth:      maxDepth,\n\t\twatchRegExp:   watchRegExp,\n\t\tpackageHashes: NewPackageHashes(watchRegExp),\n\t\tsuites:        map[string]*Suite{},\n\t}\n}\n\nfunc (d *DeltaTracker) Delta(suites internal.TestSuites) (delta Delta, errors SuiteErrors) {\n\terrors = SuiteErrors{}\n\tdelta.ModifiedPackages = d.packageHashes.CheckForChanges()\n\n\tprovidedSuitePaths := map[string]bool{}\n\tfor _, suite := range suites {\n\t\tprovidedSuitePaths[suite.Path] = true\n\t}\n\n\td.packageHashes.StartTrackingUsage()\n\n\tfor _, suite := range d.suites {\n\t\tif providedSuitePaths[suite.Suite.Path] {\n\t\t\tif suite.Delta() > 0 {\n\t\t\t\tdelta.modifiedSuites = append(delta.modifiedSuites, suite)\n\t\t\t}\n\t\t} else {\n\t\t\tdelta.RemovedSuites = append(delta.RemovedSuites, suite)\n\t\t}\n\t}\n\n\td.packageHashes.StopTrackingUsageAndPrune()\n\n\tfor _, suite := range suites {\n\t\t_, ok := d.suites[suite.Path]\n\t\tif !ok {\n\t\t\ts, err := NewSuite(suite, d.maxDepth, d.packageHashes)\n\t\t\tif err != nil {\n\t\t\t\terrors[suite] = err\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\td.suites[suite.Path] = s\n\t\t\tdelta.NewSuites = append(delta.NewSuites, s)\n\t\t}\n\t}\n\n\treturn delta, errors\n}\n\nfunc (d *DeltaTracker) WillRun(suite internal.TestSuite) error {\n\ts, ok := d.suites[suite.Path]\n\tif !ok {\n\t\treturn fmt.Errorf(\"unknown suite %s\", suite.Path)\n\t}\n\n\treturn s.MarkAsRunAndRecomputedDependencies(d.maxDepth)\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/watch/dependencies.go",
    "content": "package watch\n\nimport (\n\t\"go/build\"\n\t\"strings\"\n)\n\ntype Dependencies struct {\n\tdeps map[string]int\n}\n\nfunc NewDependencies(path string, maxDepth int) (Dependencies, error) {\n\td := Dependencies{\n\t\tdeps: map[string]int{},\n\t}\n\n\tif maxDepth == 0 {\n\t\treturn d, nil\n\t}\n\n\terr := d.seedWithDepsForPackageAtPath(path)\n\tif err != nil {\n\t\treturn d, err\n\t}\n\n\tfor depth := 1; depth < maxDepth; depth++ {\n\t\tn := len(d.deps)\n\t\td.addDepsForDepth(depth)\n\t\tif n == len(d.deps) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn d, nil\n}\n\nfunc (d Dependencies) Dependencies() map[string]int {\n\treturn d.deps\n}\n\nfunc (d Dependencies) seedWithDepsForPackageAtPath(path string) error {\n\tpkg, err := build.ImportDir(path, 0)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\td.resolveAndAdd(pkg.Imports, 1)\n\td.resolveAndAdd(pkg.TestImports, 1)\n\td.resolveAndAdd(pkg.XTestImports, 1)\n\n\tdelete(d.deps, pkg.Dir)\n\treturn nil\n}\n\nfunc (d Dependencies) addDepsForDepth(depth int) {\n\tfor dep, depDepth := range d.deps {\n\t\tif depDepth == depth {\n\t\t\td.addDepsForDep(dep, depth+1)\n\t\t}\n\t}\n}\n\nfunc (d Dependencies) addDepsForDep(dep string, depth int) {\n\tpkg, err := build.ImportDir(dep, 0)\n\tif err != nil {\n\t\tprintln(err.Error())\n\t\treturn\n\t}\n\td.resolveAndAdd(pkg.Imports, depth)\n}\n\nfunc (d Dependencies) resolveAndAdd(deps []string, depth int) {\n\tfor _, dep := range deps {\n\t\tpkg, err := build.Import(dep, \".\", 0)\n\t\tif err != nil {\n\t\t\tcontinue\n\t\t}\n\t\tif !pkg.Goroot && (!matchesGinkgoOrGomega(pkg.Dir) || matchesGinkgoIntegration(pkg.Dir)) {\n\t\t\td.addDepIfNotPresent(pkg.Dir, depth)\n\t\t}\n\t}\n}\n\nfunc (d Dependencies) addDepIfNotPresent(dep string, depth int) {\n\t_, ok := d.deps[dep]\n\tif !ok {\n\t\td.deps[dep] = depth\n\t}\n}\n\nfunc matchesGinkgoOrGomega(s string) bool {\n\treturn strings.Contains(s, \"github.com/onsi/ginkgo\") || strings.Contains(s, \"github.com/onsi/gomega\")\n}\n\nfunc matchesGinkgoIntegration(s string) bool {\n\treturn strings.Contains(s, \"github.com/onsi/ginkgo/integration\") // allow us to integration test this thing\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/watch/package_hash.go",
    "content": "package watch\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"regexp\"\n\t\"strings\"\n\t\"time\"\n)\n\nvar goTestRegExp = regexp.MustCompile(`_test\\.go$`)\n\ntype PackageHash struct {\n\tCodeModifiedTime time.Time\n\tTestModifiedTime time.Time\n\tDeleted          bool\n\n\tpath        string\n\tcodeHash    string\n\ttestHash    string\n\twatchRegExp *regexp.Regexp\n}\n\nfunc NewPackageHash(path string, watchRegExp *regexp.Regexp) *PackageHash {\n\tp := &PackageHash{\n\t\tpath:        path,\n\t\twatchRegExp: watchRegExp,\n\t}\n\n\tp.codeHash, _, p.testHash, _, p.Deleted = p.computeHashes()\n\n\treturn p\n}\n\nfunc (p *PackageHash) CheckForChanges() bool {\n\tcodeHash, codeModifiedTime, testHash, testModifiedTime, deleted := p.computeHashes()\n\n\tif deleted {\n\t\tif !p.Deleted {\n\t\t\tt := time.Now()\n\t\t\tp.CodeModifiedTime = t\n\t\t\tp.TestModifiedTime = t\n\t\t}\n\t\tp.Deleted = true\n\t\treturn true\n\t}\n\n\tmodified := false\n\tp.Deleted = false\n\n\tif p.codeHash != codeHash {\n\t\tp.CodeModifiedTime = codeModifiedTime\n\t\tmodified = true\n\t}\n\tif p.testHash != testHash {\n\t\tp.TestModifiedTime = testModifiedTime\n\t\tmodified = true\n\t}\n\n\tp.codeHash = codeHash\n\tp.testHash = testHash\n\treturn modified\n}\n\nfunc (p *PackageHash) computeHashes() (codeHash string, codeModifiedTime time.Time, testHash string, testModifiedTime time.Time, deleted bool) {\n\tentries, err := os.ReadDir(p.path)\n\n\tif err != nil {\n\t\tdeleted = true\n\t\treturn\n\t}\n\n\tfor _, entry := range entries {\n\t\tif entry.IsDir() {\n\t\t\tcontinue\n\t\t}\n\n\t\tinfo, err := entry.Info()\n\t\tif err != nil {\n\t\t\tcontinue\n\t\t}\n\n\t\tif isHiddenFile(info) {\n\t\t\tcontinue\n\t\t}\n\n\t\tif goTestRegExp.MatchString(info.Name()) {\n\t\t\ttestHash += p.hashForFileInfo(info)\n\t\t\tif info.ModTime().After(testModifiedTime) {\n\t\t\t\ttestModifiedTime = info.ModTime()\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\tif p.watchRegExp.MatchString(info.Name()) {\n\t\t\tcodeHash += p.hashForFileInfo(info)\n\t\t\tif info.ModTime().After(codeModifiedTime) {\n\t\t\t\tcodeModifiedTime = info.ModTime()\n\t\t\t}\n\t\t}\n\t}\n\n\ttestHash += codeHash\n\tif codeModifiedTime.After(testModifiedTime) {\n\t\ttestModifiedTime = codeModifiedTime\n\t}\n\n\treturn\n}\n\nfunc isHiddenFile(info os.FileInfo) bool {\n\treturn strings.HasPrefix(info.Name(), \".\") || strings.HasPrefix(info.Name(), \"_\")\n}\n\nfunc (p *PackageHash) hashForFileInfo(info os.FileInfo) string {\n\treturn fmt.Sprintf(\"%s_%d_%d\", info.Name(), info.Size(), info.ModTime().UnixNano())\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/watch/package_hashes.go",
    "content": "package watch\n\nimport (\n\t\"path/filepath\"\n\t\"regexp\"\n\t\"sync\"\n)\n\ntype PackageHashes struct {\n\tPackageHashes map[string]*PackageHash\n\tusedPaths     map[string]bool\n\twatchRegExp   *regexp.Regexp\n\tlock          *sync.Mutex\n}\n\nfunc NewPackageHashes(watchRegExp *regexp.Regexp) *PackageHashes {\n\treturn &PackageHashes{\n\t\tPackageHashes: map[string]*PackageHash{},\n\t\tusedPaths:     nil,\n\t\twatchRegExp:   watchRegExp,\n\t\tlock:          &sync.Mutex{},\n\t}\n}\n\nfunc (p *PackageHashes) CheckForChanges() []string {\n\tp.lock.Lock()\n\tdefer p.lock.Unlock()\n\n\tmodified := []string{}\n\n\tfor _, packageHash := range p.PackageHashes {\n\t\tif packageHash.CheckForChanges() {\n\t\t\tmodified = append(modified, packageHash.path)\n\t\t}\n\t}\n\n\treturn modified\n}\n\nfunc (p *PackageHashes) Add(path string) *PackageHash {\n\tp.lock.Lock()\n\tdefer p.lock.Unlock()\n\n\tpath, _ = filepath.Abs(path)\n\t_, ok := p.PackageHashes[path]\n\tif !ok {\n\t\tp.PackageHashes[path] = NewPackageHash(path, p.watchRegExp)\n\t}\n\n\tif p.usedPaths != nil {\n\t\tp.usedPaths[path] = true\n\t}\n\treturn p.PackageHashes[path]\n}\n\nfunc (p *PackageHashes) Get(path string) *PackageHash {\n\tp.lock.Lock()\n\tdefer p.lock.Unlock()\n\n\tpath, _ = filepath.Abs(path)\n\tif p.usedPaths != nil {\n\t\tp.usedPaths[path] = true\n\t}\n\treturn p.PackageHashes[path]\n}\n\nfunc (p *PackageHashes) StartTrackingUsage() {\n\tp.lock.Lock()\n\tdefer p.lock.Unlock()\n\n\tp.usedPaths = map[string]bool{}\n}\n\nfunc (p *PackageHashes) StopTrackingUsageAndPrune() {\n\tp.lock.Lock()\n\tdefer p.lock.Unlock()\n\n\tfor path := range p.PackageHashes {\n\t\tif !p.usedPaths[path] {\n\t\t\tdelete(p.PackageHashes, path)\n\t\t}\n\t}\n\n\tp.usedPaths = nil\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/watch/suite.go",
    "content": "package watch\n\nimport (\n\t\"fmt\"\n\t\"math\"\n\t\"time\"\n\n\t\"github.com/onsi/ginkgo/v2/ginkgo/internal\"\n)\n\ntype Suite struct {\n\tSuite        internal.TestSuite\n\tRunTime      time.Time\n\tDependencies Dependencies\n\n\tsharedPackageHashes *PackageHashes\n}\n\nfunc NewSuite(suite internal.TestSuite, maxDepth int, sharedPackageHashes *PackageHashes) (*Suite, error) {\n\tdeps, err := NewDependencies(suite.Path, maxDepth)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tsharedPackageHashes.Add(suite.Path)\n\tfor dep := range deps.Dependencies() {\n\t\tsharedPackageHashes.Add(dep)\n\t}\n\n\treturn &Suite{\n\t\tSuite:        suite,\n\t\tDependencies: deps,\n\n\t\tsharedPackageHashes: sharedPackageHashes,\n\t}, nil\n}\n\nfunc (s *Suite) Delta() float64 {\n\tdelta := s.delta(s.Suite.Path, true, 0) * 1000\n\tfor dep, depth := range s.Dependencies.Dependencies() {\n\t\tdelta += s.delta(dep, false, depth)\n\t}\n\treturn delta\n}\n\nfunc (s *Suite) MarkAsRunAndRecomputedDependencies(maxDepth int) error {\n\ts.RunTime = time.Now()\n\n\tdeps, err := NewDependencies(s.Suite.Path, maxDepth)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\ts.sharedPackageHashes.Add(s.Suite.Path)\n\tfor dep := range deps.Dependencies() {\n\t\ts.sharedPackageHashes.Add(dep)\n\t}\n\n\ts.Dependencies = deps\n\n\treturn nil\n}\n\nfunc (s *Suite) Description() string {\n\tnumDeps := len(s.Dependencies.Dependencies())\n\tpluralizer := \"ies\"\n\tif numDeps == 1 {\n\t\tpluralizer = \"y\"\n\t}\n\treturn fmt.Sprintf(\"%s [%d dependenc%s]\", s.Suite.Path, numDeps, pluralizer)\n}\n\nfunc (s *Suite) delta(packagePath string, includeTests bool, depth int) float64 {\n\treturn math.Max(float64(s.dt(packagePath, includeTests)), 0) / float64(depth+1)\n}\n\nfunc (s *Suite) dt(packagePath string, includeTests bool) time.Duration {\n\tpackageHash := s.sharedPackageHashes.Get(packagePath)\n\tvar modifiedTime time.Time\n\tif includeTests {\n\t\tmodifiedTime = packageHash.TestModifiedTime\n\t} else {\n\t\tmodifiedTime = packageHash.CodeModifiedTime\n\t}\n\n\treturn modifiedTime.Sub(s.RunTime)\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/watch/watch_command.go",
    "content": "package watch\n\nimport (\n\t\"fmt\"\n\t\"regexp\"\n\t\"time\"\n\n\t\"github.com/onsi/ginkgo/v2/formatter\"\n\t\"github.com/onsi/ginkgo/v2/ginkgo/command\"\n\t\"github.com/onsi/ginkgo/v2/ginkgo/internal\"\n\t\"github.com/onsi/ginkgo/v2/internal/interrupt_handler\"\n\t\"github.com/onsi/ginkgo/v2/types\"\n)\n\nfunc BuildWatchCommand() command.Command {\n\tvar suiteConfig = types.NewDefaultSuiteConfig()\n\tvar reporterConfig = types.NewDefaultReporterConfig()\n\tvar cliConfig = types.NewDefaultCLIConfig()\n\tvar goFlagsConfig = types.NewDefaultGoFlagsConfig()\n\n\tflags, err := types.BuildWatchCommandFlagSet(&suiteConfig, &reporterConfig, &cliConfig, &goFlagsConfig)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tinterruptHandler := interrupt_handler.NewInterruptHandler(nil)\n\tinterrupt_handler.SwallowSigQuit()\n\n\treturn command.Command{\n\t\tName:          \"watch\",\n\t\tFlags:         flags,\n\t\tUsage:         \"ginkgo watch <FLAGS> <PACKAGES> -- <PASS-THROUGHS>\",\n\t\tShortDoc:      \"Watch the passed in <PACKAGES> and runs their tests whenever changes occur.\",\n\t\tDocumentation: \"Any arguments after -- will be passed to the test.\",\n\t\tDocLink:       \"watching-for-changes\",\n\t\tCommand: func(args []string, additionalArgs []string) {\n\t\t\tvar errors []error\n\t\t\tcliConfig, goFlagsConfig, errors = types.VetAndInitializeCLIAndGoConfig(cliConfig, goFlagsConfig)\n\t\t\tcommand.AbortIfErrors(\"Ginkgo detected configuration issues:\", errors)\n\n\t\t\twatcher := &SpecWatcher{\n\t\t\t\tcliConfig:      cliConfig,\n\t\t\t\tgoFlagsConfig:  goFlagsConfig,\n\t\t\t\tsuiteConfig:    suiteConfig,\n\t\t\t\treporterConfig: reporterConfig,\n\t\t\t\tflags:          flags,\n\n\t\t\t\tinterruptHandler: interruptHandler,\n\t\t\t}\n\n\t\t\twatcher.WatchSpecs(args, additionalArgs)\n\t\t},\n\t}\n}\n\ntype SpecWatcher struct {\n\tsuiteConfig    types.SuiteConfig\n\treporterConfig types.ReporterConfig\n\tcliConfig      types.CLIConfig\n\tgoFlagsConfig  types.GoFlagsConfig\n\tflags          types.GinkgoFlagSet\n\n\tinterruptHandler *interrupt_handler.InterruptHandler\n}\n\nfunc (w *SpecWatcher) WatchSpecs(args []string, additionalArgs []string) {\n\tsuites := internal.FindSuites(args, w.cliConfig, false).WithoutState(internal.TestSuiteStateSkippedByFilter)\n\n\tinternal.VerifyCLIAndFrameworkVersion(suites)\n\n\tif len(suites) == 0 {\n\t\tcommand.AbortWith(\"Found no test suites\")\n\t}\n\n\tfmt.Printf(\"Identified %d test %s.  Locating dependencies to a depth of %d (this may take a while)...\\n\", len(suites), internal.PluralizedWord(\"suite\", \"suites\", len(suites)), w.cliConfig.Depth)\n\tdeltaTracker := NewDeltaTracker(w.cliConfig.Depth, regexp.MustCompile(w.cliConfig.WatchRegExp))\n\tdelta, errors := deltaTracker.Delta(suites)\n\n\tfmt.Printf(\"Watching %d %s:\\n\", len(delta.NewSuites), internal.PluralizedWord(\"suite\", \"suites\", len(delta.NewSuites)))\n\tfor _, suite := range delta.NewSuites {\n\t\tfmt.Println(\"  \" + suite.Description())\n\t}\n\n\tfor suite, err := range errors {\n\t\tfmt.Printf(\"Failed to watch %s: %s\\n\", suite.PackageName, err)\n\t}\n\n\tif len(suites) == 1 {\n\t\tw.updateSeed()\n\t\tw.compileAndRun(suites[0], additionalArgs)\n\t}\n\n\tticker := time.NewTicker(time.Second)\n\n\tfor {\n\t\tselect {\n\t\tcase <-ticker.C:\n\t\t\tsuites := internal.FindSuites(args, w.cliConfig, false).WithoutState(internal.TestSuiteStateSkippedByFilter)\n\t\t\tdelta, _ := deltaTracker.Delta(suites)\n\t\t\tcoloredStream := formatter.ColorableStdOut\n\n\t\t\tsuites = internal.TestSuites{}\n\n\t\t\tif len(delta.NewSuites) > 0 {\n\t\t\t\tfmt.Fprintln(coloredStream, formatter.F(\"{{green}}Detected %d new %s:{{/}}\", len(delta.NewSuites), internal.PluralizedWord(\"suite\", \"suites\", len(delta.NewSuites))))\n\t\t\t\tfor _, suite := range delta.NewSuites {\n\t\t\t\t\tsuites = append(suites, suite.Suite)\n\t\t\t\t\tfmt.Fprintln(coloredStream, formatter.Fi(1, \"%s\", suite.Description()))\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tmodifiedSuites := delta.ModifiedSuites()\n\t\t\tif len(modifiedSuites) > 0 {\n\t\t\t\tfmt.Fprintln(coloredStream, formatter.F(\"{{green}}Detected changes in:{{/}}\"))\n\t\t\t\tfor _, pkg := range delta.ModifiedPackages {\n\t\t\t\t\tfmt.Fprintln(coloredStream, formatter.Fi(1, \"%s\", pkg))\n\t\t\t\t}\n\t\t\t\tfmt.Fprintln(coloredStream, formatter.F(\"{{green}}Will run %d %s:{{/}}\", len(modifiedSuites), internal.PluralizedWord(\"suite\", \"suites\", len(modifiedSuites))))\n\t\t\t\tfor _, suite := range modifiedSuites {\n\t\t\t\t\tsuites = append(suites, suite.Suite)\n\t\t\t\t\tfmt.Fprintln(coloredStream, formatter.Fi(1, \"%s\", suite.Description()))\n\t\t\t\t}\n\t\t\t\tfmt.Fprintln(coloredStream, \"\")\n\t\t\t}\n\n\t\t\tif len(suites) == 0 {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tw.updateSeed()\n\t\t\tw.computeSuccinctMode(len(suites))\n\t\t\tfor idx := range suites {\n\t\t\t\tif w.interruptHandler.Status().Interrupted() {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tdeltaTracker.WillRun(suites[idx])\n\t\t\t\tsuites[idx] = w.compileAndRun(suites[idx], additionalArgs)\n\t\t\t}\n\t\t\tcolor := \"{{green}}\"\n\t\t\tif suites.CountWithState(internal.TestSuiteStateFailureStates...) > 0 {\n\t\t\t\tcolor = \"{{red}}\"\n\t\t\t}\n\t\t\tfmt.Fprintln(coloredStream, formatter.F(color+\"\\nDone.  Resuming watch...{{/}}\"))\n\n\t\t\tmessages, err := internal.FinalizeProfilesAndReportsForSuites(suites, w.cliConfig, w.suiteConfig, w.reporterConfig, w.goFlagsConfig)\n\t\t\tcommand.AbortIfError(\"could not finalize profiles:\", err)\n\t\t\tfor _, message := range messages {\n\t\t\t\tfmt.Println(message)\n\t\t\t}\n\t\tcase <-w.interruptHandler.Status().Channel:\n\t\t\treturn\n\t\t}\n\t}\n}\n\nfunc (w *SpecWatcher) compileAndRun(suite internal.TestSuite, additionalArgs []string) internal.TestSuite {\n\tsuite = internal.CompileSuite(suite, w.goFlagsConfig, false)\n\tif suite.State.Is(internal.TestSuiteStateFailedToCompile) {\n\t\tfmt.Println(suite.CompilationError.Error())\n\t\treturn suite\n\t}\n\tif w.interruptHandler.Status().Interrupted() {\n\t\treturn suite\n\t}\n\tsuite = internal.RunCompiledSuite(suite, w.suiteConfig, w.reporterConfig, w.cliConfig, w.goFlagsConfig, additionalArgs)\n\tinternal.Cleanup(w.goFlagsConfig, suite)\n\treturn suite\n}\n\nfunc (w *SpecWatcher) computeSuccinctMode(numSuites int) {\n\tif w.reporterConfig.Verbosity().GTE(types.VerbosityLevelVerbose) {\n\t\tw.reporterConfig.Succinct = false\n\t\treturn\n\t}\n\n\tif w.flags.WasSet(\"succinct\") {\n\t\treturn\n\t}\n\n\tif numSuites == 1 {\n\t\tw.reporterConfig.Succinct = false\n\t}\n\n\tif numSuites > 1 {\n\t\tw.reporterConfig.Succinct = true\n\t}\n}\n\nfunc (w *SpecWatcher) updateSeed() {\n\tif !w.flags.WasSet(\"seed\") {\n\t\tw.suiteConfig.RandomSeed = time.Now().Unix()\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/ginkgo_cli_dependencies.go",
    "content": "//go:build ginkgoclidependencies\n// +build ginkgoclidependencies\n\npackage ginkgo\n\nimport (\n\t_ \"github.com/onsi/ginkgo/v2/ginkgo\"\n)\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/ginkgo_t_dsl.go",
    "content": "package ginkgo\n\nimport (\n\t\"context\"\n\t\"io\"\n\t\"testing\"\n\n\t\"github.com/onsi/ginkgo/v2/internal/testingtproxy\"\n\t\"github.com/onsi/ginkgo/v2/types\"\n)\n\n/*\nGinkgoT() implements an interface that allows third party libraries to integrate with and build on top of Ginkgo.\n\nGinkgoT() is analogous to *testing.T and implements the majority of *testing.T's methods.  It can be typically be used a a drop-in replacement with third-party libraries that accept *testing.T through an interface.\n\nGinkgoT() takes an optional offset argument that can be used to get the\ncorrect line number associated with the failure - though you do not need to use this if you call GinkgoHelper() or GinkgoT().Helper() appropriately\n\nGinkgoT() attempts to mimic the behavior of `testing.T` with the exception of the following:\n\n- Error/Errorf: failures in Ginkgo always immediately stop execution and there is no mechanism to log a failure without aborting the test.  As such Error/Errorf are equivalent to Fatal/Fatalf.\n- Parallel() is a no-op as Ginkgo's multi-process parallelism model is substantially different from go test's in-process model.\n\nYou can learn more here: https://onsi.github.io/ginkgo/#using-third-party-libraries\n*/\nfunc GinkgoT(optionalOffset ...int) FullGinkgoTInterface {\n\toffset := 1\n\tif len(optionalOffset) > 0 {\n\t\toffset = optionalOffset[0]\n\t}\n\treturn testingtproxy.New(\n\t\tGinkgoWriter,\n\t\tFail,\n\t\tSkip,\n\t\tDeferCleanup,\n\t\tCurrentSpecReport,\n\t\tAddReportEntry,\n\t\tGinkgoRecover,\n\t\tAttachProgressReporter,\n\t\tsuiteConfig.RandomSeed,\n\t\tsuiteConfig.ParallelProcess,\n\t\tsuiteConfig.ParallelTotal,\n\t\treporterConfig.NoColor,\n\t\toffset)\n}\n\n/*\nThe portion of the interface returned by GinkgoT() that maps onto methods in the testing package's T.\n*/\ntype GinkgoTInterface interface {\n\tCleanup(func())\n\tChdir(dir string)\n\tContext() context.Context\n\tSetenv(kev, value string)\n\tError(args ...any)\n\tErrorf(format string, args ...any)\n\tFail()\n\tFailNow()\n\tFailed() bool\n\tFatal(args ...any)\n\tFatalf(format string, args ...any)\n\tHelper()\n\tLog(args ...any)\n\tLogf(format string, args ...any)\n\tName() string\n\tParallel()\n\tSkip(args ...any)\n\tSkipNow()\n\tSkipf(format string, args ...any)\n\tSkipped() bool\n\tTempDir() string\n\tAttr(key, value string)\n\tOutput() io.Writer\n}\n\n/*\nAdditional methods returned by GinkgoT() that provide deeper integration points into Ginkgo\n*/\ntype FullGinkgoTInterface interface {\n\tGinkgoTInterface\n\n\tAddReportEntryVisibilityAlways(name string, args ...any)\n\tAddReportEntryVisibilityFailureOrVerbose(name string, args ...any)\n\tAddReportEntryVisibilityNever(name string, args ...any)\n\n\t//Prints to the GinkgoWriter\n\tPrint(a ...any)\n\tPrintf(format string, a ...any)\n\tPrintln(a ...any)\n\n\t//Provides access to Ginkgo's color formatting, correctly configured to match the color settings specified in the invocation of ginkgo\n\tF(format string, args ...any) string\n\tFi(indentation uint, format string, args ...any) string\n\tFiw(indentation uint, maxWidth uint, format string, args ...any) string\n\n\t//Generates a formatted string version of the current spec's timeline\n\tRenderTimeline() string\n\n\tGinkgoRecover()\n\tDeferCleanup(args ...any)\n\n\tRandomSeed() int64\n\tParallelProcess() int\n\tParallelTotal() int\n\n\tAttachProgressReporter(func() string) func()\n}\n\n/*\nGinkgoTB() implements a wrapper that exactly matches the testing.TB interface.\n\nIn go 1.18 a new private() function was added to the testing.TB interface. Any function which accepts testing.TB as input needs to be passed in something that directly implements testing.TB.\n\nThis wrapper satisfies the testing.TB interface and intended to be used as a drop-in replacement with third party libraries that accept testing.TB.\n\nSimilar to GinkgoT(), GinkgoTB() takes an optional offset argument that can be used to get the\ncorrect line number associated with the failure - though you do not need to use this if you call GinkgoHelper() or GinkgoT().Helper() appropriately\n*/\nfunc GinkgoTB(optionalOffset ...int) *GinkgoTBWrapper {\n\toffset := 2\n\tif len(optionalOffset) > 0 {\n\t\toffset = optionalOffset[0]\n\t}\n\treturn &GinkgoTBWrapper{GinkgoT: GinkgoT(offset)}\n}\n\ntype GinkgoTBWrapper struct {\n\ttesting.TB\n\tGinkgoT FullGinkgoTInterface\n}\n\nfunc (g *GinkgoTBWrapper) Cleanup(f func()) {\n\tg.GinkgoT.Cleanup(f)\n}\nfunc (g *GinkgoTBWrapper) Chdir(dir string) {\n\tg.GinkgoT.Chdir(dir)\n}\nfunc (g *GinkgoTBWrapper) Context() context.Context {\n\treturn g.GinkgoT.Context()\n}\nfunc (g *GinkgoTBWrapper) Error(args ...any) {\n\tg.GinkgoT.Error(args...)\n}\nfunc (g *GinkgoTBWrapper) Errorf(format string, args ...any) {\n\tg.GinkgoT.Errorf(format, args...)\n}\nfunc (g *GinkgoTBWrapper) Fail() {\n\tg.GinkgoT.Fail()\n}\nfunc (g *GinkgoTBWrapper) FailNow() {\n\tg.GinkgoT.FailNow()\n}\nfunc (g *GinkgoTBWrapper) Failed() bool {\n\treturn g.GinkgoT.Failed()\n}\nfunc (g *GinkgoTBWrapper) Fatal(args ...any) {\n\tg.GinkgoT.Fatal(args...)\n}\nfunc (g *GinkgoTBWrapper) Fatalf(format string, args ...any) {\n\tg.GinkgoT.Fatalf(format, args...)\n}\nfunc (g *GinkgoTBWrapper) Helper() {\n\ttypes.MarkAsHelper(1)\n}\nfunc (g *GinkgoTBWrapper) Log(args ...any) {\n\tg.GinkgoT.Log(args...)\n}\nfunc (g *GinkgoTBWrapper) Logf(format string, args ...any) {\n\tg.GinkgoT.Logf(format, args...)\n}\nfunc (g *GinkgoTBWrapper) Name() string {\n\treturn g.GinkgoT.Name()\n}\nfunc (g *GinkgoTBWrapper) Setenv(key, value string) {\n\tg.GinkgoT.Setenv(key, value)\n}\nfunc (g *GinkgoTBWrapper) Skip(args ...any) {\n\tg.GinkgoT.Skip(args...)\n}\nfunc (g *GinkgoTBWrapper) SkipNow() {\n\tg.GinkgoT.SkipNow()\n}\nfunc (g *GinkgoTBWrapper) Skipf(format string, args ...any) {\n\tg.GinkgoT.Skipf(format, args...)\n}\nfunc (g *GinkgoTBWrapper) Skipped() bool {\n\treturn g.GinkgoT.Skipped()\n}\nfunc (g *GinkgoTBWrapper) TempDir() string {\n\treturn g.GinkgoT.TempDir()\n}\nfunc (g *GinkgoTBWrapper) Attr(key, value string) {\n\tg.GinkgoT.Attr(key, value)\n}\nfunc (g *GinkgoTBWrapper) Output() io.Writer {\n\treturn g.GinkgoT.Output()\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/internal/around_node.go",
    "content": "package internal\n\nimport (\n\t\"github.com/onsi/ginkgo/v2/types\"\n)\n\nfunc ComputeAroundNodes(specs Specs) Specs {\n\tout := Specs{}\n\tfor _, spec := range specs {\n\t\tnodes := Nodes{}\n\t\tcurrentNestingLevel := 0\n\t\taroundNodes := types.AroundNodes{}\n\t\tnestingLevelIndices := []int{}\n\t\tfor _, node := range spec.Nodes {\n\t\t\tswitch node.NodeType {\n\t\t\tcase types.NodeTypeContainer:\n\t\t\t\tcurrentNestingLevel = node.NestingLevel + 1\n\t\t\t\tnestingLevelIndices = append(nestingLevelIndices, len(aroundNodes))\n\t\t\t\taroundNodes = aroundNodes.Append(node.AroundNodes...)\n\t\t\t\tnodes = append(nodes, node)\n\t\t\tdefault:\n\t\t\t\tif currentNestingLevel > node.NestingLevel {\n\t\t\t\t\tcurrentNestingLevel = node.NestingLevel\n\t\t\t\t\taroundNodes = aroundNodes[:nestingLevelIndices[currentNestingLevel]]\n\t\t\t\t}\n\t\t\t\tnode.AroundNodes = types.AroundNodes{}.Append(aroundNodes...).Append(node.AroundNodes...)\n\t\t\t\tnodes = append(nodes, node)\n\t\t\t}\n\t\t}\n\t\tspec.Nodes = nodes\n\t\tout = append(out, spec)\n\t}\n\treturn out\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/internal/counter.go",
    "content": "package internal\n\nfunc MakeIncrementingIndexCounter() func() (int, error) {\n\tidx := -1\n\treturn func() (int, error) {\n\t\tidx += 1\n\t\treturn idx, nil\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/internal/failer.go",
    "content": "package internal\n\nimport (\n\t\"fmt\"\n\t\"sync\"\n\n\t\"github.com/onsi/ginkgo/v2/types\"\n)\n\ntype Failer struct {\n\tlock    *sync.Mutex\n\tfailure types.Failure\n\tstate   types.SpecState\n}\n\nfunc NewFailer() *Failer {\n\treturn &Failer{\n\t\tlock:  &sync.Mutex{},\n\t\tstate: types.SpecStatePassed,\n\t}\n}\n\nfunc (f *Failer) GetState() types.SpecState {\n\tf.lock.Lock()\n\tdefer f.lock.Unlock()\n\treturn f.state\n}\n\nfunc (f *Failer) GetFailure() types.Failure {\n\tf.lock.Lock()\n\tdefer f.lock.Unlock()\n\treturn f.failure\n}\n\nfunc (f *Failer) Panic(location types.CodeLocation, forwardedPanic any) {\n\tf.lock.Lock()\n\tdefer f.lock.Unlock()\n\n\tif f.state == types.SpecStatePassed {\n\t\tf.state = types.SpecStatePanicked\n\t\tf.failure = types.Failure{\n\t\t\tMessage:        \"Test Panicked\",\n\t\t\tLocation:       location,\n\t\t\tForwardedPanic: fmt.Sprintf(\"%v\", forwardedPanic),\n\t\t}\n\t}\n}\n\nfunc (f *Failer) Fail(message string, location types.CodeLocation) {\n\tf.lock.Lock()\n\tdefer f.lock.Unlock()\n\n\tif f.state == types.SpecStatePassed {\n\t\tf.state = types.SpecStateFailed\n\t\tf.failure = types.Failure{\n\t\t\tMessage:  message,\n\t\t\tLocation: location,\n\t\t}\n\t}\n}\n\nfunc (f *Failer) Skip(message string, location types.CodeLocation) {\n\tf.lock.Lock()\n\tdefer f.lock.Unlock()\n\n\tif f.state == types.SpecStatePassed {\n\t\tf.state = types.SpecStateSkipped\n\t\tf.failure = types.Failure{\n\t\t\tMessage:  message,\n\t\t\tLocation: location,\n\t\t}\n\t}\n}\n\nfunc (f *Failer) AbortSuite(message string, location types.CodeLocation) {\n\tf.lock.Lock()\n\tdefer f.lock.Unlock()\n\n\tif f.state == types.SpecStatePassed {\n\t\tf.state = types.SpecStateAborted\n\t\tf.failure = types.Failure{\n\t\t\tMessage:  message,\n\t\t\tLocation: location,\n\t\t}\n\t}\n}\n\nfunc (f *Failer) Drain() (types.SpecState, types.Failure) {\n\tf.lock.Lock()\n\tdefer f.lock.Unlock()\n\n\tfailure := f.failure\n\toutcome := f.state\n\n\tf.state = types.SpecStatePassed\n\tf.failure = types.Failure{}\n\n\treturn outcome, failure\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/internal/focus.go",
    "content": "package internal\n\nimport (\n\t\"regexp\"\n\t\"strings\"\n\n\t\"github.com/onsi/ginkgo/v2/types\"\n)\n\n/*\nIf a container marked as focus has a descendant that is also marked as focus, Ginkgo's policy is to\nunmark the container's focus.  This gives developers a more intuitive experience when debugging specs.\nIt is common to focus a container to just run a subset of specs, then identify the specific specs within the container to focus -\nthis policy allows the developer to simply focus those specific specs and not need to go back and turn the focus off of the container:\n\nAs a common example, consider:\n\n\tFDescribe(\"something to debug\", function() {\n\t\tIt(\"works\", function() {...})\n\t\tIt(\"works\", function() {...})\n\t\tFIt(\"doesn't work\", function() {...})\n\t\tIt(\"works\", function() {...})\n\t})\n\nhere the developer's intent is to focus in on the `\"doesn't work\"` spec and not to run the adjacent specs in the focused `\"something to debug\"` container.\nThe nested policy applied by this function enables this behavior.\n*/\nfunc ApplyNestedFocusPolicyToTree(tree *TreeNode) {\n\tvar walkTree func(tree *TreeNode) bool\n\twalkTree = func(tree *TreeNode) bool {\n\t\tif tree.Node.MarkedPending {\n\t\t\treturn false\n\t\t}\n\t\thasFocusedDescendant := false\n\t\tfor _, child := range tree.Children {\n\t\t\tchildHasFocus := walkTree(child)\n\t\t\thasFocusedDescendant = hasFocusedDescendant || childHasFocus\n\t\t}\n\t\ttree.Node.MarkedFocus = tree.Node.MarkedFocus && !hasFocusedDescendant\n\t\treturn tree.Node.MarkedFocus || hasFocusedDescendant\n\t}\n\n\twalkTree(tree)\n}\n\n/*\nGinkgo supports focussing specs using `FIt`, `FDescribe`, etc. - this is called \"programmatic focus\"\nIt also supports focussing specs using regular expressions on the command line (`-focus=`, `-skip=`) that match against spec text and file filters (`-focus-files=`, `-skip-files=`) that match against code locations for nodes in specs.\n\nWhen both programmatic and file filters are provided their results are ANDed together.  If multiple kinds of filters are provided, the file filters run first followed by the regex filters.\n\nThis function sets the `Skip` property on specs by applying Ginkgo's focus policy:\n- If there are no CLI arguments and no programmatic focus, do nothing.\n- If a spec somewhere has programmatic focus skip any specs that have no programmatic focus.\n- If there are CLI arguments parse them and skip any specs that either don't match the focus filters or do match the skip filters.\n\n*Note:* specs with pending nodes are Skipped when created by NewSpec.\n*/\nfunc ApplyFocusToSpecs(specs Specs, description string, suiteLabels Labels, suiteSemVerConstraints SemVerConstraints, suiteComponentSemVerConstraints ComponentSemVerConstraints, suiteConfig types.SuiteConfig) (Specs, bool) {\n\tfocusString := strings.Join(suiteConfig.FocusStrings, \"|\")\n\tskipString := strings.Join(suiteConfig.SkipStrings, \"|\")\n\n\ttype SkipCheck func(spec Spec) bool\n\n\t// by default, skip any specs marked pending\n\tskipChecks := []SkipCheck{func(spec Spec) bool { return spec.Nodes.HasNodeMarkedPending() }}\n\thasProgrammaticFocus := false\n\n\tfor _, spec := range specs {\n\t\tif spec.Nodes.HasNodeMarkedFocus() && !spec.Nodes.HasNodeMarkedPending() {\n\t\t\thasProgrammaticFocus = true\n\t\t\tbreak\n\t\t}\n\t}\n\n\tif hasProgrammaticFocus {\n\t\tskipChecks = append(skipChecks, func(spec Spec) bool { return !spec.Nodes.HasNodeMarkedFocus() })\n\t}\n\n\tif suiteConfig.LabelFilter != \"\" {\n\t\tlabelFilter, _ := types.ParseLabelFilter(suiteConfig.LabelFilter)\n\t\tskipChecks = append(skipChecks, func(spec Spec) bool {\n\t\t\treturn !labelFilter(UnionOfLabels(suiteLabels, spec.Nodes.UnionOfLabels()))\n\t\t})\n\t}\n\n\tif suiteConfig.SemVerFilter != \"\" {\n\t\tsemVerFilter, _ := types.ParseSemVerFilter(suiteConfig.SemVerFilter)\n\t\tskipChecks = append(skipChecks, func(spec Spec) bool {\n\t\t\tnoRun := false\n\n\t\t\t// non-component-specific constraints\n\t\t\tconstraints := UnionOfSemVerConstraints(suiteSemVerConstraints, spec.Nodes.UnionOfSemVerConstraints())\n\t\t\tif len(constraints) != 0 && semVerFilter(\"\", constraints) == false {\n\t\t\t\tnoRun = true\n\t\t\t}\n\n\t\t\t// component-specific constraints\n\t\t\tcomponentConstraints := UnionOfComponentSemVerConstraints(suiteComponentSemVerConstraints, spec.Nodes.UnionOfComponentSemVerConstraints())\n\t\t\tfor component, constraints := range componentConstraints {\n\t\t\t\tif semVerFilter(component, constraints) == false {\n\t\t\t\t\tnoRun = true\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn noRun\n\t\t})\n\t}\n\n\tif len(suiteConfig.FocusFiles) > 0 {\n\t\tfocusFilters, _ := types.ParseFileFilters(suiteConfig.FocusFiles)\n\t\tskipChecks = append(skipChecks, func(spec Spec) bool { return !focusFilters.Matches(spec.Nodes.CodeLocations()) })\n\t}\n\n\tif len(suiteConfig.SkipFiles) > 0 {\n\t\tskipFilters, _ := types.ParseFileFilters(suiteConfig.SkipFiles)\n\t\tskipChecks = append(skipChecks, func(spec Spec) bool { return skipFilters.Matches(spec.Nodes.CodeLocations()) })\n\t}\n\n\tif focusString != \"\" {\n\t\t// skip specs that don't match the focus string\n\t\tre := regexp.MustCompile(focusString)\n\t\tskipChecks = append(skipChecks, func(spec Spec) bool { return !re.MatchString(description + \" \" + spec.Text()) })\n\t}\n\n\tif skipString != \"\" {\n\t\t// skip specs that match the skip string\n\t\tre := regexp.MustCompile(skipString)\n\t\tskipChecks = append(skipChecks, func(spec Spec) bool { return re.MatchString(description + \" \" + spec.Text()) })\n\t}\n\n\t// skip specs if shouldSkip() is true.  note that we do nothing if shouldSkip() is false to avoid overwriting skip status established by the node's pending status\n\tprocessedSpecs := Specs{}\n\tfor _, spec := range specs {\n\t\tfor _, skipCheck := range skipChecks {\n\t\t\tif skipCheck(spec) {\n\t\t\t\tspec.Skip = true\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tprocessedSpecs = append(processedSpecs, spec)\n\t}\n\n\treturn processedSpecs, hasProgrammaticFocus\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/internal/global/init.go",
    "content": "package global\n\nimport (\n\t\"github.com/onsi/ginkgo/v2/internal\"\n)\n\nvar Suite *internal.Suite\nvar Failer *internal.Failer\nvar backupSuite *internal.Suite\n\nfunc init() {\n\tInitializeGlobals()\n}\n\nfunc InitializeGlobals() {\n\tFailer = internal.NewFailer()\n\tSuite = internal.NewSuite()\n}\n\nfunc PushClone() error {\n\tvar err error\n\tbackupSuite, err = Suite.Clone()\n\treturn err\n}\n\nfunc PopClone() {\n\tSuite = backupSuite\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/internal/group.go",
    "content": "package internal\n\nimport (\n\t\"fmt\"\n\t\"time\"\n\n\t\"github.com/onsi/ginkgo/v2/types\"\n)\n\ntype runOncePair struct {\n\t//nodeId should only run once...\n\tnodeID   uint\n\tnodeType types.NodeType\n\t//...for specs in a hierarchy that includes this context\n\tcontainerID uint\n}\n\nfunc (pair runOncePair) isZero() bool {\n\treturn pair.nodeID == 0\n}\n\nfunc runOncePairForNode(node Node, containerID uint) runOncePair {\n\treturn runOncePair{\n\t\tnodeID:      node.ID,\n\t\tnodeType:    node.NodeType,\n\t\tcontainerID: containerID,\n\t}\n}\n\ntype runOncePairs []runOncePair\n\nfunc runOncePairsForSpec(spec Spec) runOncePairs {\n\tpairs := runOncePairs{}\n\n\tcontainers := spec.Nodes.WithType(types.NodeTypeContainer)\n\tfor _, node := range spec.Nodes {\n\t\tif node.NodeType.Is(types.NodeTypeBeforeAll | types.NodeTypeAfterAll) {\n\t\t\tpairs = append(pairs, runOncePairForNode(node, containers.FirstWithNestingLevel(node.NestingLevel-1).ID))\n\t\t} else if node.NodeType.Is(types.NodeTypeBeforeEach|types.NodeTypeJustBeforeEach|types.NodeTypeAfterEach|types.NodeTypeJustAfterEach) && node.MarkedOncePerOrdered {\n\t\t\tpassedIntoAnOrderedContainer := false\n\t\t\tfirstOrderedContainerDeeperThanNode := containers.FirstSatisfying(func(container Node) bool {\n\t\t\t\tpassedIntoAnOrderedContainer = passedIntoAnOrderedContainer || container.MarkedOrdered\n\t\t\t\treturn container.NestingLevel >= node.NestingLevel && passedIntoAnOrderedContainer\n\t\t\t})\n\t\t\tif firstOrderedContainerDeeperThanNode.IsZero() {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tpairs = append(pairs, runOncePairForNode(node, firstOrderedContainerDeeperThanNode.ID))\n\t\t}\n\t}\n\n\treturn pairs\n}\n\nfunc (pairs runOncePairs) runOncePairFor(nodeID uint) runOncePair {\n\tfor i := range pairs {\n\t\tif pairs[i].nodeID == nodeID {\n\t\t\treturn pairs[i]\n\t\t}\n\t}\n\treturn runOncePair{}\n}\n\nfunc (pairs runOncePairs) hasRunOncePair(pair runOncePair) bool {\n\tfor i := range pairs {\n\t\tif pairs[i] == pair {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc (pairs runOncePairs) withType(nodeTypes types.NodeType) runOncePairs {\n\tcount := 0\n\tfor i := range pairs {\n\t\tif pairs[i].nodeType.Is(nodeTypes) {\n\t\t\tcount++\n\t\t}\n\t}\n\n\tout, j := make(runOncePairs, count), 0\n\tfor i := range pairs {\n\t\tif pairs[i].nodeType.Is(nodeTypes) {\n\t\t\tout[j] = pairs[i]\n\t\t\tj++\n\t\t}\n\t}\n\treturn out\n}\n\ntype group struct {\n\tsuite          *Suite\n\tspecs          Specs\n\trunOncePairs   map[uint]runOncePairs\n\trunOnceTracker map[runOncePair]types.SpecState\n\n\tsucceeded              bool\n\tfailedInARunOnceBefore bool\n\tcontinueOnFailure      bool\n}\n\nfunc newGroup(suite *Suite) *group {\n\treturn &group{\n\t\tsuite:                  suite,\n\t\trunOncePairs:           map[uint]runOncePairs{},\n\t\trunOnceTracker:         map[runOncePair]types.SpecState{},\n\t\tsucceeded:              true,\n\t\tfailedInARunOnceBefore: false,\n\t\tcontinueOnFailure:      false,\n\t}\n}\n\n// initialReportForSpec constructs a new SpecReport right before running the spec.\nfunc (g *group) initialReportForSpec(spec Spec) types.SpecReport {\n\treturn types.SpecReport{\n\t\tContainerHierarchyTexts:                      spec.Nodes.WithType(types.NodeTypeContainer).Texts(),\n\t\tContainerHierarchyLocations:                  spec.Nodes.WithType(types.NodeTypeContainer).CodeLocations(),\n\t\tContainerHierarchyLabels:                     spec.Nodes.WithType(types.NodeTypeContainer).Labels(),\n\t\tContainerHierarchySemVerConstraints:          spec.Nodes.WithType(types.NodeTypeContainer).SemVerConstraints(),\n\t\tContainerHierarchyComponentSemVerConstraints: spec.Nodes.WithType(types.NodeTypeContainer).ComponentSemVerConstraints(),\n\t\tLeafNodeLocation:                             spec.FirstNodeWithType(types.NodeTypeIt).CodeLocation,\n\t\tLeafNodeType:                                 types.NodeTypeIt,\n\t\tLeafNodeText:                                 spec.FirstNodeWithType(types.NodeTypeIt).Text,\n\t\tLeafNodeLabels:                               []string(spec.FirstNodeWithType(types.NodeTypeIt).Labels),\n\t\tLeafNodeSemVerConstraints:                    []string(spec.FirstNodeWithType(types.NodeTypeIt).SemVerConstraints),\n\t\tLeafNodeComponentSemVerConstraints:           map[string][]string(spec.FirstNodeWithType(types.NodeTypeIt).ComponentSemVerConstraints),\n\t\tParallelProcess:                              g.suite.config.ParallelProcess,\n\t\tRunningInParallel:                            g.suite.isRunningInParallel(),\n\t\tIsSerial:                                     spec.Nodes.HasNodeMarkedSerial(),\n\t\tIsInOrderedContainer:                         !spec.Nodes.FirstNodeMarkedOrdered().IsZero(),\n\t\tMaxFlakeAttempts:                             spec.Nodes.GetMaxFlakeAttempts(),\n\t\tMaxMustPassRepeatedly:                        spec.Nodes.GetMaxMustPassRepeatedly(),\n\t\tSpecPriority:                                 spec.Nodes.GetSpecPriority(),\n\t}\n}\n\n// constructionNodeReportForTreeNode constructs a new SpecReport right before invoking the body\n// of a container node during construction of the full tree.\nfunc constructionNodeReportForTreeNode(node *TreeNode) *types.ConstructionNodeReport {\n\tvar report types.ConstructionNodeReport\n\t// Walk up the tree and set attributes accordingly.\n\taddNodeToReportForNode(&report, node)\n\treturn &report\n}\n\n// addNodeToReportForNode is conceptually similar to initialReportForSpec and therefore placed here\n// although it doesn't do anything with a group.\nfunc addNodeToReportForNode(report *types.ConstructionNodeReport, node *TreeNode) {\n\tif node.Parent != nil {\n\t\t// First add the parent node, then the current one.\n\t\taddNodeToReportForNode(report, node.Parent)\n\t}\n\treport.ContainerHierarchyTexts = append(report.ContainerHierarchyTexts, node.Node.Text)\n\treport.ContainerHierarchyLocations = append(report.ContainerHierarchyLocations, node.Node.CodeLocation)\n\treport.ContainerHierarchyLabels = append(report.ContainerHierarchyLabels, node.Node.Labels)\n\treport.ContainerHierarchySemVerConstraints = append(report.ContainerHierarchySemVerConstraints, node.Node.SemVerConstraints)\n\treport.ContainerHierarchyComponentSemVerConstraints = append(report.ContainerHierarchyComponentSemVerConstraints, node.Node.ComponentSemVerConstraints)\n\tif node.Node.MarkedSerial {\n\t\treport.IsSerial = true\n\t}\n\tif node.Node.MarkedOrdered {\n\t\treport.IsInOrderedContainer = true\n\t}\n}\n\nfunc (g *group) evaluateSkipStatus(spec Spec) (types.SpecState, types.Failure) {\n\tif spec.Nodes.HasNodeMarkedPending() {\n\t\treturn types.SpecStatePending, types.Failure{}\n\t}\n\tif spec.Skip {\n\t\treturn types.SpecStateSkipped, types.Failure{}\n\t}\n\tif g.suite.interruptHandler.Status().Interrupted() || g.suite.skipAll {\n\t\treturn types.SpecStateSkipped, types.Failure{}\n\t}\n\tif !g.suite.deadline.IsZero() && g.suite.deadline.Before(time.Now()) {\n\t\treturn types.SpecStateSkipped, types.Failure{}\n\t}\n\tif !g.succeeded && !g.continueOnFailure {\n\t\treturn types.SpecStateSkipped, g.suite.failureForLeafNodeWithMessage(spec.FirstNodeWithType(types.NodeTypeIt),\n\t\t\t\"Spec skipped because an earlier spec in an ordered container failed\")\n\t}\n\tif g.failedInARunOnceBefore && g.continueOnFailure {\n\t\treturn types.SpecStateSkipped, g.suite.failureForLeafNodeWithMessage(spec.FirstNodeWithType(types.NodeTypeIt),\n\t\t\t\"Spec skipped because a BeforeAll node failed\")\n\t}\n\tbeforeOncePairs := g.runOncePairs[spec.SubjectID()].withType(types.NodeTypeBeforeAll | types.NodeTypeBeforeEach | types.NodeTypeJustBeforeEach)\n\tfor _, pair := range beforeOncePairs {\n\t\tif g.runOnceTracker[pair].Is(types.SpecStateSkipped) {\n\t\t\treturn types.SpecStateSkipped, g.suite.failureForLeafNodeWithMessage(spec.FirstNodeWithType(types.NodeTypeIt),\n\t\t\t\tfmt.Sprintf(\"Spec skipped because Skip() was called in %s\", pair.nodeType))\n\t\t}\n\t}\n\tif g.suite.config.DryRun {\n\t\treturn types.SpecStatePassed, types.Failure{}\n\t}\n\treturn g.suite.currentSpecReport.State, g.suite.currentSpecReport.Failure\n}\n\nfunc (g *group) isLastSpecWithPair(specID uint, pair runOncePair) bool {\n\tlastSpecID := uint(0)\n\tfor idx := range g.specs {\n\t\tif g.specs[idx].Skip {\n\t\t\tcontinue\n\t\t}\n\t\tsID := g.specs[idx].SubjectID()\n\t\tif g.runOncePairs[sID].hasRunOncePair(pair) {\n\t\t\tlastSpecID = sID\n\t\t}\n\t}\n\treturn lastSpecID == specID\n}\n\nfunc (g *group) attemptSpec(isFinalAttempt bool, spec Spec) bool {\n\tfailedInARunOnceBefore := false\n\tpairs := g.runOncePairs[spec.SubjectID()]\n\n\tnodes := spec.Nodes.WithType(types.NodeTypeBeforeAll)\n\tnodes = append(nodes, spec.Nodes.WithType(types.NodeTypeBeforeEach)...).SortedByAscendingNestingLevel()\n\tnodes = append(nodes, spec.Nodes.WithType(types.NodeTypeJustBeforeEach).SortedByAscendingNestingLevel()...)\n\tnodes = append(nodes, spec.Nodes.FirstNodeWithType(types.NodeTypeIt))\n\tterminatingNode, terminatingPair := Node{}, runOncePair{}\n\n\tdeadline := time.Time{}\n\tif spec.SpecTimeout() > 0 {\n\t\tdeadline = time.Now().Add(spec.SpecTimeout())\n\t}\n\n\tfor _, node := range nodes {\n\t\toncePair := pairs.runOncePairFor(node.ID)\n\t\tif !oncePair.isZero() && g.runOnceTracker[oncePair].Is(types.SpecStatePassed) {\n\t\t\tcontinue\n\t\t}\n\t\tg.suite.currentSpecReport.State, g.suite.currentSpecReport.Failure = g.suite.runNode(node, deadline, spec.Nodes.BestTextFor(node))\n\t\tg.suite.currentSpecReport.RunTime = time.Since(g.suite.currentSpecReport.StartTime)\n\t\tif !oncePair.isZero() {\n\t\t\tg.runOnceTracker[oncePair] = g.suite.currentSpecReport.State\n\t\t}\n\t\tif g.suite.currentSpecReport.State != types.SpecStatePassed {\n\t\t\tterminatingNode, terminatingPair = node, oncePair\n\t\t\tfailedInARunOnceBefore = !terminatingPair.isZero()\n\t\t\tbreak\n\t\t}\n\t}\n\n\tafterNodeWasRun := map[uint]bool{}\n\tincludeDeferCleanups := false\n\tfor {\n\t\tnodes := spec.Nodes.WithType(types.NodeTypeAfterEach)\n\t\tnodes = append(nodes, spec.Nodes.WithType(types.NodeTypeAfterAll)...).SortedByDescendingNestingLevel()\n\t\tnodes = append(spec.Nodes.WithType(types.NodeTypeJustAfterEach).SortedByDescendingNestingLevel(), nodes...)\n\t\tif !terminatingNode.IsZero() {\n\t\t\tnodes = nodes.WithinNestingLevel(terminatingNode.NestingLevel)\n\t\t}\n\t\tif includeDeferCleanups {\n\t\t\tnodes = append(nodes, g.suite.cleanupNodes.WithType(types.NodeTypeCleanupAfterEach).Reverse()...)\n\t\t\tnodes = append(nodes, g.suite.cleanupNodes.WithType(types.NodeTypeCleanupAfterAll).Reverse()...)\n\t\t}\n\t\tnodes = nodes.Filter(func(node Node) bool {\n\t\t\tif afterNodeWasRun[node.ID] {\n\t\t\t\t//this node has already been run on this attempt, don't rerun it\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tvar pair runOncePair\n\t\t\tswitch node.NodeType {\n\t\t\tcase types.NodeTypeCleanupAfterEach, types.NodeTypeCleanupAfterAll:\n\t\t\t\t// check if we were generated in an AfterNode that has already run\n\t\t\t\tif afterNodeWasRun[node.NodeIDWhereCleanupWasGenerated] {\n\t\t\t\t\treturn true // we were, so we should definitely run this cleanup now\n\t\t\t\t}\n\t\t\t\t// looks like this cleanup nodes was generated by a before node or it.\n\t\t\t\t// the run-once status of a cleanup node is governed by the run-once status of its generator\n\t\t\t\tpair = pairs.runOncePairFor(node.NodeIDWhereCleanupWasGenerated)\n\t\t\tdefault:\n\t\t\t\tpair = pairs.runOncePairFor(node.ID)\n\t\t\t}\n\t\t\tif pair.isZero() {\n\t\t\t\t// this node is not governed by any run-once policy, we should run it\n\t\t\t\treturn true\n\t\t\t}\n\t\t\t// it's our last chance to run if we're the last spec for our oncePair\n\t\t\tisLastSpecWithPair := g.isLastSpecWithPair(spec.SubjectID(), pair)\n\n\t\t\tswitch g.suite.currentSpecReport.State {\n\t\t\tcase types.SpecStatePassed: //this attempt is passing...\n\t\t\t\treturn isLastSpecWithPair //...we should run-once if we'this is our last chance\n\t\t\tcase types.SpecStateSkipped: //the spec was skipped by the user...\n\t\t\t\tif isLastSpecWithPair {\n\t\t\t\t\treturn true //...we're the last spec, so we should run the AfterNode\n\t\t\t\t}\n\t\t\t\tif !terminatingPair.isZero() && terminatingNode.NestingLevel == node.NestingLevel {\n\t\t\t\t\treturn true //...or, a run-once node at our nesting level was skipped which means this is our last chance to run\n\t\t\t\t}\n\t\t\tcase types.SpecStateFailed, types.SpecStatePanicked, types.SpecStateTimedout: // the spec has failed...\n\t\t\t\tif isFinalAttempt {\n\t\t\t\t\tif g.continueOnFailure {\n\t\t\t\t\t\treturn isLastSpecWithPair || failedInARunOnceBefore //...we're configured to continue on failures - so we should only run if we're the last spec for this pair or if we failed in a runOnceBefore (which means we _are_ the last spec to run)\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn true //...this was the last attempt and continueOnFailure is false therefore we are the last spec to run and so the AfterNode should run\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif !terminatingPair.isZero() { // ...and it failed in a run-once.  which will be running again\n\t\t\t\t\tif node.NodeType.Is(types.NodeTypeCleanupAfterEach | types.NodeTypeCleanupAfterAll) {\n\t\t\t\t\t\treturn terminatingNode.ID == node.NodeIDWhereCleanupWasGenerated // we should run this node if we're a clean-up generated by it\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn terminatingNode.NestingLevel == node.NestingLevel // ...or if we're at the same nesting level\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase types.SpecStateInterrupted, types.SpecStateAborted: // ...we've been interrupted and/or aborted\n\t\t\t\treturn true //...that means the test run is over and we should clean up the stack.  Run the AfterNode\n\t\t\t}\n\t\t\treturn false\n\t\t})\n\n\t\tif len(nodes) == 0 && includeDeferCleanups {\n\t\t\tbreak\n\t\t}\n\n\t\tfor _, node := range nodes {\n\t\t\tafterNodeWasRun[node.ID] = true\n\t\t\tstate, failure := g.suite.runNode(node, deadline, spec.Nodes.BestTextFor(node))\n\t\t\tg.suite.currentSpecReport.RunTime = time.Since(g.suite.currentSpecReport.StartTime)\n\t\t\tif g.suite.currentSpecReport.State == types.SpecStatePassed || state == types.SpecStateAborted {\n\t\t\t\tg.suite.currentSpecReport.State = state\n\t\t\t\tg.suite.currentSpecReport.Failure = failure\n\t\t\t} else if state.Is(types.SpecStateFailureStates) {\n\t\t\t\tg.suite.currentSpecReport.AdditionalFailures = append(g.suite.currentSpecReport.AdditionalFailures, types.AdditionalFailure{State: state, Failure: failure})\n\t\t\t}\n\t\t}\n\t\tincludeDeferCleanups = true\n\t}\n\n\treturn failedInARunOnceBefore\n}\n\nfunc (g *group) run(specs Specs) {\n\tg.specs = specs\n\tg.continueOnFailure = specs[0].Nodes.FirstNodeMarkedOrdered().MarkedContinueOnFailure\n\tfor _, spec := range g.specs {\n\t\tg.runOncePairs[spec.SubjectID()] = runOncePairsForSpec(spec)\n\t}\n\n\tfor _, spec := range g.specs {\n\t\tg.suite.selectiveLock.Lock()\n\t\tg.suite.currentSpecReport = g.initialReportForSpec(spec)\n\t\tg.suite.selectiveLock.Unlock()\n\n\t\tg.suite.currentSpecReport.State, g.suite.currentSpecReport.Failure = g.evaluateSkipStatus(spec)\n\t\tg.suite.reporter.WillRun(g.suite.currentSpecReport)\n\t\tg.suite.reportEach(spec, types.NodeTypeReportBeforeEach)\n\n\t\tskip := g.suite.config.DryRun || g.suite.currentSpecReport.State.Is(types.SpecStateFailureStates|types.SpecStateSkipped|types.SpecStatePending)\n\n\t\tg.suite.currentSpecReport.StartTime = time.Now()\n\t\tfailedInARunOnceBefore := false\n\t\tif !skip {\n\t\t\tvar maxAttempts = 1\n\n\t\t\tif g.suite.config.MustPassRepeatedly > 0 {\n\t\t\t\tmaxAttempts = g.suite.config.MustPassRepeatedly\n\t\t\t\tg.suite.currentSpecReport.MaxMustPassRepeatedly = maxAttempts\n\t\t\t} else if g.suite.currentSpecReport.MaxMustPassRepeatedly > 0 {\n\t\t\t\tmaxAttempts = max(1, spec.MustPassRepeatedly())\n\t\t\t} else if g.suite.config.FlakeAttempts > 0 {\n\t\t\t\tmaxAttempts = g.suite.config.FlakeAttempts\n\t\t\t\tg.suite.currentSpecReport.MaxFlakeAttempts = maxAttempts\n\t\t\t} else if g.suite.currentSpecReport.MaxFlakeAttempts > 0 {\n\t\t\t\tmaxAttempts = max(1, spec.FlakeAttempts())\n\t\t\t}\n\n\t\t\tfor attempt := 0; attempt < maxAttempts; attempt++ {\n\t\t\t\tg.suite.currentSpecReport.NumAttempts = attempt + 1\n\t\t\t\tg.suite.writer.Truncate()\n\t\t\t\tg.suite.outputInterceptor.StartInterceptingOutput()\n\t\t\t\tif attempt > 0 {\n\t\t\t\t\tif g.suite.currentSpecReport.MaxMustPassRepeatedly > 0 {\n\t\t\t\t\t\tg.suite.handleSpecEvent(types.SpecEvent{SpecEventType: types.SpecEventSpecRepeat, Attempt: attempt})\n\t\t\t\t\t}\n\t\t\t\t\tif g.suite.currentSpecReport.MaxFlakeAttempts > 0 {\n\t\t\t\t\t\tg.suite.handleSpecEvent(types.SpecEvent{SpecEventType: types.SpecEventSpecRetry, Attempt: attempt})\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfailedInARunOnceBefore = g.attemptSpec(attempt == maxAttempts-1, spec)\n\n\t\t\t\tg.suite.currentSpecReport.EndTime = time.Now()\n\t\t\t\tg.suite.currentSpecReport.RunTime = g.suite.currentSpecReport.EndTime.Sub(g.suite.currentSpecReport.StartTime)\n\t\t\t\tg.suite.currentSpecReport.CapturedGinkgoWriterOutput += string(g.suite.writer.Bytes())\n\t\t\t\tg.suite.currentSpecReport.CapturedStdOutErr += g.suite.outputInterceptor.StopInterceptingAndReturnOutput()\n\n\t\t\t\tif g.suite.currentSpecReport.MaxMustPassRepeatedly > 0 {\n\t\t\t\t\tif g.suite.currentSpecReport.State.Is(types.SpecStateFailureStates | types.SpecStateSkipped) {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif g.suite.currentSpecReport.MaxFlakeAttempts > 0 {\n\t\t\t\t\tif g.suite.currentSpecReport.State.Is(types.SpecStatePassed | types.SpecStateSkipped | types.SpecStateAborted | types.SpecStateInterrupted) {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t} else if attempt < maxAttempts-1 {\n\t\t\t\t\t\taf := types.AdditionalFailure{State: g.suite.currentSpecReport.State, Failure: g.suite.currentSpecReport.Failure}\n\t\t\t\t\t\taf.Failure.Message = fmt.Sprintf(\"Failure recorded during attempt %d:\\n%s\", attempt+1, af.Failure.Message)\n\t\t\t\t\t\tg.suite.currentSpecReport.AdditionalFailures = append(g.suite.currentSpecReport.AdditionalFailures, af)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tg.suite.reportEach(spec, types.NodeTypeReportAfterEach)\n\t\tg.suite.processCurrentSpecReport()\n\t\tif g.suite.currentSpecReport.State.Is(types.SpecStateFailureStates) {\n\t\t\tg.succeeded = false\n\t\t\tg.failedInARunOnceBefore = g.failedInARunOnceBefore || failedInARunOnceBefore\n\t\t}\n\t\tg.suite.selectiveLock.Lock()\n\t\tg.suite.currentSpecReport = types.SpecReport{}\n\t\tg.suite.selectiveLock.Unlock()\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/internal/interrupt_handler/interrupt_handler.go",
    "content": "package interrupt_handler\n\nimport (\n\t\"os\"\n\t\"os/signal\"\n\t\"sync\"\n\t\"syscall\"\n\t\"time\"\n\n\t\"github.com/onsi/ginkgo/v2/internal/parallel_support\"\n)\n\nvar ABORT_POLLING_INTERVAL = 500 * time.Millisecond\n\ntype InterruptCause uint\n\nconst (\n\tInterruptCauseInvalid InterruptCause = iota\n\tInterruptCauseSignal\n\tInterruptCauseAbortByOtherProcess\n)\n\ntype InterruptLevel uint\n\nconst (\n\tInterruptLevelUninterrupted InterruptLevel = iota\n\tInterruptLevelCleanupAndReport\n\tInterruptLevelReportOnly\n\tInterruptLevelBailOut\n)\n\nfunc (ic InterruptCause) String() string {\n\tswitch ic {\n\tcase InterruptCauseSignal:\n\t\treturn \"Interrupted by User\"\n\tcase InterruptCauseAbortByOtherProcess:\n\t\treturn \"Interrupted by Other Ginkgo Process\"\n\t}\n\treturn \"INVALID_INTERRUPT_CAUSE\"\n}\n\ntype InterruptStatus struct {\n\tChannel chan any\n\tLevel   InterruptLevel\n\tCause   InterruptCause\n}\n\nfunc (s InterruptStatus) Interrupted() bool {\n\treturn s.Level != InterruptLevelUninterrupted\n}\n\nfunc (s InterruptStatus) Message() string {\n\treturn s.Cause.String()\n}\n\nfunc (s InterruptStatus) ShouldIncludeProgressReport() bool {\n\treturn s.Cause != InterruptCauseAbortByOtherProcess\n}\n\ntype InterruptHandlerInterface interface {\n\tStatus() InterruptStatus\n}\n\ntype InterruptHandler struct {\n\tc                 chan any\n\tlock              *sync.Mutex\n\tlevel             InterruptLevel\n\tcause             InterruptCause\n\tclient            parallel_support.Client\n\tstop              chan any\n\tsignals           []os.Signal\n\trequestAbortCheck chan any\n}\n\nfunc NewInterruptHandler(client parallel_support.Client, signals ...os.Signal) *InterruptHandler {\n\tif len(signals) == 0 {\n\t\tsignals = []os.Signal{os.Interrupt, syscall.SIGTERM}\n\t}\n\thandler := &InterruptHandler{\n\t\tc:                 make(chan any),\n\t\tlock:              &sync.Mutex{},\n\t\tstop:              make(chan any),\n\t\trequestAbortCheck: make(chan any),\n\t\tclient:            client,\n\t\tsignals:           signals,\n\t}\n\thandler.registerForInterrupts()\n\treturn handler\n}\n\nfunc (handler *InterruptHandler) Stop() {\n\tclose(handler.stop)\n}\n\nfunc (handler *InterruptHandler) registerForInterrupts() {\n\t// os signal handling\n\tsignalChannel := make(chan os.Signal, 1)\n\tsignal.Notify(signalChannel, handler.signals...)\n\n\t// cross-process abort handling\n\tvar abortChannel chan any\n\tif handler.client != nil {\n\t\tabortChannel = make(chan any)\n\t\tgo func() {\n\t\t\tpollTicker := time.NewTicker(ABORT_POLLING_INTERVAL)\n\t\t\tfor {\n\t\t\t\tselect {\n\t\t\t\tcase <-pollTicker.C:\n\t\t\t\t\tif handler.client.ShouldAbort() {\n\t\t\t\t\t\tclose(abortChannel)\n\t\t\t\t\t\tpollTicker.Stop()\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\tcase <-handler.requestAbortCheck:\n\t\t\t\t\tif handler.client.ShouldAbort() {\n\t\t\t\t\t\tclose(abortChannel)\n\t\t\t\t\t\tpollTicker.Stop()\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\tcase <-handler.stop:\n\t\t\t\t\tpollTicker.Stop()\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\t\t}()\n\t}\n\n\tgo func(abortChannel chan any) {\n\t\tvar interruptCause InterruptCause\n\t\tfor {\n\t\t\tselect {\n\t\t\tcase <-signalChannel:\n\t\t\t\tinterruptCause = InterruptCauseSignal\n\t\t\tcase <-abortChannel:\n\t\t\t\tinterruptCause = InterruptCauseAbortByOtherProcess\n\t\t\tcase <-handler.stop:\n\t\t\t\tsignal.Stop(signalChannel)\n\t\t\t\treturn\n\t\t\t}\n\t\t\tabortChannel = nil\n\n\t\t\thandler.lock.Lock()\n\t\t\toldLevel := handler.level\n\t\t\thandler.cause = interruptCause\n\t\t\tif handler.level == InterruptLevelUninterrupted {\n\t\t\t\thandler.level = InterruptLevelCleanupAndReport\n\t\t\t} else if handler.level == InterruptLevelCleanupAndReport {\n\t\t\t\thandler.level = InterruptLevelReportOnly\n\t\t\t} else if handler.level == InterruptLevelReportOnly {\n\t\t\t\thandler.level = InterruptLevelBailOut\n\t\t\t}\n\t\t\tif handler.level != oldLevel {\n\t\t\t\tclose(handler.c)\n\t\t\t\thandler.c = make(chan any)\n\t\t\t}\n\t\t\thandler.lock.Unlock()\n\t\t}\n\t}(abortChannel)\n}\n\nfunc (handler *InterruptHandler) Status() InterruptStatus {\n\thandler.lock.Lock()\n\tstatus := InterruptStatus{\n\t\tLevel:   handler.level,\n\t\tChannel: handler.c,\n\t\tCause:   handler.cause,\n\t}\n\thandler.lock.Unlock()\n\n\tif handler.client != nil && handler.client.ShouldAbort() && !status.Interrupted() {\n\t\tclose(handler.requestAbortCheck)\n\t\t<-status.Channel\n\t\treturn handler.Status()\n\t}\n\n\treturn status\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/internal/interrupt_handler/sigquit_swallower_unix.go",
    "content": "//go:build freebsd || openbsd || netbsd || dragonfly || darwin || linux || solaris\n// +build freebsd openbsd netbsd dragonfly darwin linux solaris\n\npackage interrupt_handler\n\nimport (\n\t\"os\"\n\t\"os/signal\"\n\t\"syscall\"\n)\n\nfunc SwallowSigQuit() {\n\tc := make(chan os.Signal, 1024)\n\tsignal.Notify(c, syscall.SIGQUIT)\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/internal/interrupt_handler/sigquit_swallower_windows.go",
    "content": "//go:build windows\n// +build windows\n\npackage interrupt_handler\n\nfunc SwallowSigQuit() {\n\t//noop\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/internal/node.go",
    "content": "package internal\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"reflect\"\n\t\"slices\"\n\t\"sort\"\n\t\"sync\"\n\t\"time\"\n\n\t\"github.com/onsi/ginkgo/v2/types\"\n)\n\nvar _global_node_id_counter = uint(0)\nvar _global_id_mutex = &sync.Mutex{}\n\nfunc UniqueNodeID() uint {\n\t// There's a reace in the internal integration tests if we don't make\n\t// accessing _global_node_id_counter safe across goroutines.\n\t_global_id_mutex.Lock()\n\tdefer _global_id_mutex.Unlock()\n\t_global_node_id_counter += 1\n\treturn _global_node_id_counter\n}\n\ntype Node struct {\n\tID       uint\n\tNodeType types.NodeType\n\n\tText         string\n\tBody         func(SpecContext)\n\tCodeLocation types.CodeLocation\n\tNestingLevel int\n\tHasContext   bool\n\n\tSynchronizedBeforeSuiteProc1Body              func(SpecContext) []byte\n\tSynchronizedBeforeSuiteProc1BodyHasContext    bool\n\tSynchronizedBeforeSuiteAllProcsBody           func(SpecContext, []byte)\n\tSynchronizedBeforeSuiteAllProcsBodyHasContext bool\n\n\tSynchronizedAfterSuiteAllProcsBody           func(SpecContext)\n\tSynchronizedAfterSuiteAllProcsBodyHasContext bool\n\tSynchronizedAfterSuiteProc1Body              func(SpecContext)\n\tSynchronizedAfterSuiteProc1BodyHasContext    bool\n\n\tReportEachBody  func(SpecContext, types.SpecReport)\n\tReportSuiteBody func(SpecContext, types.Report)\n\n\tMarkedFocus                  bool\n\tMarkedPending                bool\n\tMarkedSerial                 bool\n\tMarkedOrdered                bool\n\tMarkedContinueOnFailure      bool\n\tMarkedOncePerOrdered         bool\n\tFlakeAttempts                int\n\tMustPassRepeatedly           int\n\tLabels                       Labels\n\tSemVerConstraints            SemVerConstraints\n\tComponentSemVerConstraints   ComponentSemVerConstraints\n\tPollProgressAfter            time.Duration\n\tPollProgressInterval         time.Duration\n\tNodeTimeout                  time.Duration\n\tSpecTimeout                  time.Duration\n\tGracePeriod                  time.Duration\n\tAroundNodes                  types.AroundNodes\n\tHasExplicitlySetSpecPriority bool\n\tSpecPriority                 int\n\n\tNodeIDWhereCleanupWasGenerated uint\n}\n\n// Decoration Types\ntype focusType bool\ntype pendingType bool\ntype serialType bool\ntype orderedType bool\ntype continueOnFailureType bool\ntype honorsOrderedType bool\ntype suppressProgressReporting bool\n\nconst Focus = focusType(true)\nconst Pending = pendingType(true)\nconst Serial = serialType(true)\nconst Ordered = orderedType(true)\nconst ContinueOnFailure = continueOnFailureType(true)\nconst OncePerOrdered = honorsOrderedType(true)\nconst SuppressProgressReporting = suppressProgressReporting(true)\n\ntype FlakeAttempts uint\ntype MustPassRepeatedly uint\ntype Offset uint\ntype Done chan<- any // Deprecated Done Channel for asynchronous testing\ntype PollProgressInterval time.Duration\ntype PollProgressAfter time.Duration\ntype NodeTimeout time.Duration\ntype SpecTimeout time.Duration\ntype GracePeriod time.Duration\ntype SpecPriority int\n\ntype Labels []string\n\nfunc (l Labels) MatchesLabelFilter(query string) bool {\n\treturn types.MustParseLabelFilter(query)(l)\n}\n\ntype SemVerConstraints []string\n\nfunc (svc SemVerConstraints) MatchesSemVerFilter(version string) bool {\n\treturn types.MustParseSemVerFilter(version)(\"\", svc)\n}\n\ntype ComponentSemVerConstraints map[string][]string\n\nfunc (csvc ComponentSemVerConstraints) MatchesSemVerFilter(component, version string) bool {\n\tfor comp, constraints := range csvc {\n\t\tif comp != component {\n\t\t\tcontinue\n\t\t}\n\n\t\tinput := version\n\t\tif len(component) > 0 {\n\t\t\tinput = fmt.Sprintf(\"%s=%s\", component, version)\n\t\t}\n\t\treturn types.MustParseSemVerFilter(input)(component, constraints)\n\t}\n\treturn false\n}\n\nfunc unionOf[S ~[]E, E comparable](slices ...S) S {\n\tout := S{}\n\tseen := map[E]bool{}\n\tfor _, slice := range slices {\n\t\tfor _, item := range slice {\n\t\t\tif !seen[item] {\n\t\t\t\tseen[item] = true\n\t\t\t\tout = append(out, item)\n\t\t\t}\n\t\t}\n\t}\n\treturn out\n}\n\nfunc UnionOfLabels(labels ...Labels) Labels {\n\treturn unionOf(labels...)\n}\n\nfunc UnionOfSemVerConstraints(semVerConstraints ...SemVerConstraints) SemVerConstraints {\n\treturn unionOf(semVerConstraints...)\n}\n\nfunc UnionOfComponentSemVerConstraints(componentSemVerConstraintsSlice ...ComponentSemVerConstraints) ComponentSemVerConstraints {\n\tunionComponentSemVerConstraints := ComponentSemVerConstraints{}\n\tfor _, componentSemVerConstraints := range componentSemVerConstraintsSlice {\n\t\tfor component, constraints := range componentSemVerConstraints {\n\t\t\tunionComponentSemVerConstraints[component] = unionOf(unionComponentSemVerConstraints[component], constraints)\n\t\t}\n\t}\n\treturn unionComponentSemVerConstraints\n}\n\nfunc PartitionDecorations(args ...any) ([]any, []any) {\n\tdecorations := []any{}\n\tremainingArgs := []any{}\n\tfor _, arg := range args {\n\t\tif isDecoration(arg) {\n\t\t\tdecorations = append(decorations, arg)\n\t\t} else {\n\t\t\tremainingArgs = append(remainingArgs, arg)\n\t\t}\n\t}\n\treturn decorations, remainingArgs\n}\n\nfunc isDecoration(arg any) bool {\n\tswitch t := reflect.TypeOf(arg); {\n\tcase t == nil:\n\t\treturn false\n\tcase t == reflect.TypeOf(Offset(0)):\n\t\treturn true\n\tcase t == reflect.TypeOf(types.CodeLocation{}):\n\t\treturn true\n\tcase t == reflect.TypeOf(Focus):\n\t\treturn true\n\tcase t == reflect.TypeOf(Pending):\n\t\treturn true\n\tcase t == reflect.TypeOf(Serial):\n\t\treturn true\n\tcase t == reflect.TypeOf(Ordered):\n\t\treturn true\n\tcase t == reflect.TypeOf(ContinueOnFailure):\n\t\treturn true\n\tcase t == reflect.TypeOf(OncePerOrdered):\n\t\treturn true\n\tcase t == reflect.TypeOf(SuppressProgressReporting):\n\t\treturn true\n\tcase t == reflect.TypeOf(FlakeAttempts(0)):\n\t\treturn true\n\tcase t == reflect.TypeOf(MustPassRepeatedly(0)):\n\t\treturn true\n\tcase t == reflect.TypeOf(Labels{}):\n\t\treturn true\n\tcase t == reflect.TypeOf(SemVerConstraints{}):\n\t\treturn true\n\tcase t == reflect.TypeOf(ComponentSemVerConstraints{}):\n\t\treturn true\n\tcase t == reflect.TypeOf(PollProgressInterval(0)):\n\t\treturn true\n\tcase t == reflect.TypeOf(PollProgressAfter(0)):\n\t\treturn true\n\tcase t == reflect.TypeOf(NodeTimeout(0)):\n\t\treturn true\n\tcase t == reflect.TypeOf(SpecTimeout(0)):\n\t\treturn true\n\tcase t == reflect.TypeOf(GracePeriod(0)):\n\t\treturn true\n\tcase t == reflect.TypeOf(types.AroundNodeDecorator{}):\n\t\treturn true\n\tcase t == reflect.TypeOf(SpecPriority(0)):\n\t\treturn true\n\tcase t.Kind() == reflect.Slice && isSliceOfDecorations(arg):\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\nfunc isSliceOfDecorations(slice any) bool {\n\tvSlice := reflect.ValueOf(slice)\n\tif vSlice.Len() == 0 {\n\t\treturn false\n\t}\n\tfor i := 0; i < vSlice.Len(); i++ {\n\t\tif !isDecoration(vSlice.Index(i).Interface()) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\nvar contextType = reflect.TypeOf(new(context.Context)).Elem()\nvar specContextType = reflect.TypeOf(new(SpecContext)).Elem()\n\nfunc NewNode(deprecationTracker *types.DeprecationTracker, nodeType types.NodeType, text string, args ...any) (Node, []error) {\n\tbaseOffset := 2\n\tnode := Node{\n\t\tID:                         UniqueNodeID(),\n\t\tNodeType:                   nodeType,\n\t\tText:                       text,\n\t\tLabels:                     Labels{},\n\t\tSemVerConstraints:          SemVerConstraints{},\n\t\tComponentSemVerConstraints: ComponentSemVerConstraints{},\n\t\tCodeLocation:               types.NewCodeLocation(baseOffset),\n\t\tNestingLevel:               -1,\n\t\tPollProgressAfter:          -1,\n\t\tPollProgressInterval:       -1,\n\t\tGracePeriod:                -1,\n\t}\n\n\terrors := []error{}\n\tappendError := func(err error) {\n\t\tif err != nil {\n\t\t\terrors = append(errors, err)\n\t\t}\n\t}\n\n\targs = UnrollInterfaceSlice(args)\n\n\tremainingArgs := []any{}\n\t// First get the CodeLocation up-to-date\n\tfor _, arg := range args {\n\t\tswitch v := arg.(type) {\n\t\tcase Offset:\n\t\t\tnode.CodeLocation = types.NewCodeLocation(baseOffset + int(v))\n\t\tcase types.CodeLocation:\n\t\t\tnode.CodeLocation = v\n\t\tdefault:\n\t\t\tremainingArgs = append(remainingArgs, arg)\n\t\t}\n\t}\n\n\tlabelsSeen := map[string]bool{}\n\tsemVerConstraintsSeen := map[string]bool{}\n\ttrackedFunctionError := false\n\targs = remainingArgs\n\tremainingArgs = []any{}\n\t// now process the rest of the args\n\tfor _, arg := range args {\n\t\tswitch t := reflect.TypeOf(arg); {\n\t\tcase t == reflect.TypeOf(float64(0)):\n\t\t\tbreak // ignore deprecated timeouts\n\t\tcase t == reflect.TypeOf(Focus):\n\t\t\tnode.MarkedFocus = bool(arg.(focusType))\n\t\t\tif !nodeType.Is(types.NodeTypesForContainerAndIt) {\n\t\t\t\tappendError(types.GinkgoErrors.InvalidDecoratorForNodeType(node.CodeLocation, nodeType, \"Focus\"))\n\t\t\t}\n\t\tcase t == reflect.TypeOf(Pending):\n\t\t\tnode.MarkedPending = bool(arg.(pendingType))\n\t\t\tif !nodeType.Is(types.NodeTypesForContainerAndIt) {\n\t\t\t\tappendError(types.GinkgoErrors.InvalidDecoratorForNodeType(node.CodeLocation, nodeType, \"Pending\"))\n\t\t\t}\n\t\tcase t == reflect.TypeOf(Serial):\n\t\t\tnode.MarkedSerial = bool(arg.(serialType))\n\t\t\tif !labelsSeen[\"Serial\"] {\n\t\t\t\tnode.Labels = append(node.Labels, \"Serial\")\n\t\t\t}\n\t\t\tif !nodeType.Is(types.NodeTypesForContainerAndIt) {\n\t\t\t\tappendError(types.GinkgoErrors.InvalidDecoratorForNodeType(node.CodeLocation, nodeType, \"Serial\"))\n\t\t\t}\n\t\tcase t == reflect.TypeOf(Ordered):\n\t\t\tnode.MarkedOrdered = bool(arg.(orderedType))\n\t\t\tif !nodeType.Is(types.NodeTypeContainer) {\n\t\t\t\tappendError(types.GinkgoErrors.InvalidDecoratorForNodeType(node.CodeLocation, nodeType, \"Ordered\"))\n\t\t\t}\n\t\tcase t == reflect.TypeOf(ContinueOnFailure):\n\t\t\tnode.MarkedContinueOnFailure = bool(arg.(continueOnFailureType))\n\t\t\tif !nodeType.Is(types.NodeTypeContainer) {\n\t\t\t\tappendError(types.GinkgoErrors.InvalidDecoratorForNodeType(node.CodeLocation, nodeType, \"ContinueOnFailure\"))\n\t\t\t}\n\t\tcase t == reflect.TypeOf(OncePerOrdered):\n\t\t\tnode.MarkedOncePerOrdered = bool(arg.(honorsOrderedType))\n\t\t\tif !nodeType.Is(types.NodeTypeBeforeEach | types.NodeTypeJustBeforeEach | types.NodeTypeAfterEach | types.NodeTypeJustAfterEach) {\n\t\t\t\tappendError(types.GinkgoErrors.InvalidDecoratorForNodeType(node.CodeLocation, nodeType, \"OncePerOrdered\"))\n\t\t\t}\n\t\tcase t == reflect.TypeOf(SuppressProgressReporting):\n\t\t\tdeprecationTracker.TrackDeprecation(types.Deprecations.SuppressProgressReporting())\n\t\tcase t == reflect.TypeOf(FlakeAttempts(0)):\n\t\t\tnode.FlakeAttempts = int(arg.(FlakeAttempts))\n\t\t\tif !nodeType.Is(types.NodeTypesForContainerAndIt) {\n\t\t\t\tappendError(types.GinkgoErrors.InvalidDecoratorForNodeType(node.CodeLocation, nodeType, \"FlakeAttempts\"))\n\t\t\t}\n\t\tcase t == reflect.TypeOf(MustPassRepeatedly(0)):\n\t\t\tnode.MustPassRepeatedly = int(arg.(MustPassRepeatedly))\n\t\t\tif !nodeType.Is(types.NodeTypesForContainerAndIt) {\n\t\t\t\tappendError(types.GinkgoErrors.InvalidDecoratorForNodeType(node.CodeLocation, nodeType, \"MustPassRepeatedly\"))\n\t\t\t}\n\t\tcase t == reflect.TypeOf(PollProgressAfter(0)):\n\t\t\tnode.PollProgressAfter = time.Duration(arg.(PollProgressAfter))\n\t\t\tif nodeType.Is(types.NodeTypeContainer) {\n\t\t\t\tappendError(types.GinkgoErrors.InvalidDecoratorForNodeType(node.CodeLocation, nodeType, \"PollProgressAfter\"))\n\t\t\t}\n\t\tcase t == reflect.TypeOf(PollProgressInterval(0)):\n\t\t\tnode.PollProgressInterval = time.Duration(arg.(PollProgressInterval))\n\t\t\tif nodeType.Is(types.NodeTypeContainer) {\n\t\t\t\tappendError(types.GinkgoErrors.InvalidDecoratorForNodeType(node.CodeLocation, nodeType, \"PollProgressInterval\"))\n\t\t\t}\n\t\tcase t == reflect.TypeOf(NodeTimeout(0)):\n\t\t\tnode.NodeTimeout = time.Duration(arg.(NodeTimeout))\n\t\t\tif nodeType.Is(types.NodeTypeContainer) {\n\t\t\t\tappendError(types.GinkgoErrors.InvalidDecoratorForNodeType(node.CodeLocation, nodeType, \"NodeTimeout\"))\n\t\t\t}\n\t\tcase t == reflect.TypeOf(SpecTimeout(0)):\n\t\t\tnode.SpecTimeout = time.Duration(arg.(SpecTimeout))\n\t\t\tif !nodeType.Is(types.NodeTypeIt) {\n\t\t\t\tappendError(types.GinkgoErrors.InvalidDecoratorForNodeType(node.CodeLocation, nodeType, \"SpecTimeout\"))\n\t\t\t}\n\t\tcase t == reflect.TypeOf(GracePeriod(0)):\n\t\t\tnode.GracePeriod = time.Duration(arg.(GracePeriod))\n\t\t\tif nodeType.Is(types.NodeTypeContainer) {\n\t\t\t\tappendError(types.GinkgoErrors.InvalidDecoratorForNodeType(node.CodeLocation, nodeType, \"GracePeriod\"))\n\t\t\t}\n\t\tcase t == reflect.TypeOf(SpecPriority(0)):\n\t\t\tif !nodeType.Is(types.NodeTypesForContainerAndIt) {\n\t\t\t\tappendError(types.GinkgoErrors.InvalidDecoratorForNodeType(node.CodeLocation, nodeType, \"SpecPriority\"))\n\t\t\t}\n\t\t\tnode.SpecPriority = int(arg.(SpecPriority))\n\t\t\tnode.HasExplicitlySetSpecPriority = true\n\t\tcase t == reflect.TypeOf(types.AroundNodeDecorator{}):\n\t\t\tnode.AroundNodes = append(node.AroundNodes, arg.(types.AroundNodeDecorator))\n\t\tcase t == reflect.TypeOf(Labels{}):\n\t\t\tif !nodeType.Is(types.NodeTypesForContainerAndIt) {\n\t\t\t\tappendError(types.GinkgoErrors.InvalidDecoratorForNodeType(node.CodeLocation, nodeType, \"Label\"))\n\t\t\t}\n\t\t\tfor _, label := range arg.(Labels) {\n\t\t\t\tif !labelsSeen[label] {\n\t\t\t\t\tlabelsSeen[label] = true\n\t\t\t\t\tlabel, err := types.ValidateAndCleanupLabel(label, node.CodeLocation)\n\t\t\t\t\tnode.Labels = append(node.Labels, label)\n\t\t\t\t\tappendError(err)\n\t\t\t\t}\n\t\t\t}\n\t\tcase t == reflect.TypeOf(SemVerConstraints{}):\n\t\t\tif !nodeType.Is(types.NodeTypesForContainerAndIt) {\n\t\t\t\tappendError(types.GinkgoErrors.InvalidDecoratorForNodeType(node.CodeLocation, nodeType, \"SemVerConstraint\"))\n\t\t\t}\n\t\t\tfor _, semVerConstraint := range arg.(SemVerConstraints) {\n\t\t\t\tif !semVerConstraintsSeen[semVerConstraint] {\n\t\t\t\t\tsemVerConstraintsSeen[semVerConstraint] = true\n\t\t\t\t\tsemVerConstraint, err := types.ValidateAndCleanupSemVerConstraint(semVerConstraint, node.CodeLocation)\n\t\t\t\t\tnode.SemVerConstraints = append(node.SemVerConstraints, semVerConstraint)\n\t\t\t\t\tappendError(err)\n\t\t\t\t}\n\t\t\t}\n\t\tcase t == reflect.TypeOf(ComponentSemVerConstraints{}):\n\t\t\tif !nodeType.Is(types.NodeTypesForContainerAndIt) {\n\t\t\t\tappendError(types.GinkgoErrors.InvalidDecoratorForNodeType(node.CodeLocation, nodeType, \"ComponentSemVerConstraint\"))\n\t\t\t}\n\t\t\tfor component, semVerConstraints := range arg.(ComponentSemVerConstraints) {\n\t\t\t\t// while using ComponentSemVerConstraints, we should not allow empty component names.\n\t\t\t\t// you should use SemVerConstraints for that.\n\t\t\t\thasErr := false\n\t\t\t\tif len(component) == 0 {\n\t\t\t\t\tappendError(types.GinkgoErrors.InvalidEmptyComponentForSemVerConstraint(node.CodeLocation))\n\t\t\t\t\thasErr = true\n\t\t\t\t}\n\t\t\t\tfor _, semVerConstraint := range semVerConstraints {\n\t\t\t\t\t_, err := types.ValidateAndCleanupSemVerConstraint(semVerConstraint, node.CodeLocation)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\tappendError(err)\n\t\t\t\t\t\thasErr = true\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif !hasErr {\n\t\t\t\t\t// merge constraints if the component already exists\n\t\t\t\t\tconstraints := slices.Clone(semVerConstraints)\n\t\t\t\t\tif existingConstraints, exists := node.ComponentSemVerConstraints[component]; exists {\n\t\t\t\t\t\tconstraints = UnionOfSemVerConstraints([]string(existingConstraints), constraints)\n\t\t\t\t\t}\n\n\t\t\t\t\tnode.ComponentSemVerConstraints[component] = slices.Clone(constraints)\n\t\t\t\t}\n\t\t\t}\n\t\tcase t.Kind() == reflect.Func:\n\t\t\tif nodeType.Is(types.NodeTypeContainer) {\n\t\t\t\tif node.Body != nil {\n\t\t\t\t\tappendError(types.GinkgoErrors.MultipleBodyFunctions(node.CodeLocation, nodeType))\n\t\t\t\t\ttrackedFunctionError = true\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tif t.NumOut() > 0 || t.NumIn() > 0 {\n\t\t\t\t\tappendError(types.GinkgoErrors.InvalidBodyTypeForContainer(t, node.CodeLocation, nodeType))\n\t\t\t\t\ttrackedFunctionError = true\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tbody := arg.(func())\n\t\t\t\tnode.Body = func(SpecContext) { body() }\n\t\t\t} else if nodeType.Is(types.NodeTypeReportBeforeEach | types.NodeTypeReportAfterEach) {\n\t\t\t\tif node.ReportEachBody == nil {\n\t\t\t\t\tif fn, ok := arg.(func(types.SpecReport)); ok {\n\t\t\t\t\t\tnode.ReportEachBody = func(_ SpecContext, r types.SpecReport) { fn(r) }\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnode.ReportEachBody = arg.(func(SpecContext, types.SpecReport))\n\t\t\t\t\t\tnode.HasContext = true\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tappendError(types.GinkgoErrors.MultipleBodyFunctions(node.CodeLocation, nodeType))\n\t\t\t\t\ttrackedFunctionError = true\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t} else if nodeType.Is(types.NodeTypeReportBeforeSuite | types.NodeTypeReportAfterSuite) {\n\t\t\t\tif node.ReportSuiteBody == nil {\n\t\t\t\t\tif fn, ok := arg.(func(types.Report)); ok {\n\t\t\t\t\t\tnode.ReportSuiteBody = func(_ SpecContext, r types.Report) { fn(r) }\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnode.ReportSuiteBody = arg.(func(SpecContext, types.Report))\n\t\t\t\t\t\tnode.HasContext = true\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tappendError(types.GinkgoErrors.MultipleBodyFunctions(node.CodeLocation, nodeType))\n\t\t\t\t\ttrackedFunctionError = true\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t} else if nodeType.Is(types.NodeTypeSynchronizedBeforeSuite) {\n\t\t\t\tif node.SynchronizedBeforeSuiteProc1Body != nil && node.SynchronizedBeforeSuiteAllProcsBody != nil {\n\t\t\t\t\tappendError(types.GinkgoErrors.MultipleBodyFunctions(node.CodeLocation, nodeType))\n\t\t\t\t\ttrackedFunctionError = true\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tif node.SynchronizedBeforeSuiteProc1Body == nil {\n\t\t\t\t\tbody, hasContext := extractSynchronizedBeforeSuiteProc1Body(arg)\n\t\t\t\t\tif body == nil {\n\t\t\t\t\t\tappendError(types.GinkgoErrors.InvalidBodyTypeForSynchronizedBeforeSuiteProc1(t, node.CodeLocation))\n\t\t\t\t\t\ttrackedFunctionError = true\n\t\t\t\t\t}\n\t\t\t\t\tnode.SynchronizedBeforeSuiteProc1Body, node.SynchronizedBeforeSuiteProc1BodyHasContext = body, hasContext\n\t\t\t\t} else if node.SynchronizedBeforeSuiteAllProcsBody == nil {\n\t\t\t\t\tbody, hasContext := extractSynchronizedBeforeSuiteAllProcsBody(arg)\n\t\t\t\t\tif body == nil {\n\t\t\t\t\t\tappendError(types.GinkgoErrors.InvalidBodyTypeForSynchronizedBeforeSuiteAllProcs(t, node.CodeLocation))\n\t\t\t\t\t\ttrackedFunctionError = true\n\t\t\t\t\t}\n\t\t\t\t\tnode.SynchronizedBeforeSuiteAllProcsBody, node.SynchronizedBeforeSuiteAllProcsBodyHasContext = body, hasContext\n\t\t\t\t}\n\t\t\t} else if nodeType.Is(types.NodeTypeSynchronizedAfterSuite) {\n\t\t\t\tif node.SynchronizedAfterSuiteAllProcsBody != nil && node.SynchronizedAfterSuiteProc1Body != nil {\n\t\t\t\t\tappendError(types.GinkgoErrors.MultipleBodyFunctions(node.CodeLocation, nodeType))\n\t\t\t\t\ttrackedFunctionError = true\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tbody, hasContext := extractBodyFunction(deprecationTracker, node.CodeLocation, arg)\n\t\t\t\tif body == nil {\n\t\t\t\t\tappendError(types.GinkgoErrors.InvalidBodyType(t, node.CodeLocation, nodeType))\n\t\t\t\t\ttrackedFunctionError = true\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tif node.SynchronizedAfterSuiteAllProcsBody == nil {\n\t\t\t\t\tnode.SynchronizedAfterSuiteAllProcsBody, node.SynchronizedAfterSuiteAllProcsBodyHasContext = body, hasContext\n\t\t\t\t} else if node.SynchronizedAfterSuiteProc1Body == nil {\n\t\t\t\t\tnode.SynchronizedAfterSuiteProc1Body, node.SynchronizedAfterSuiteProc1BodyHasContext = body, hasContext\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif node.Body != nil {\n\t\t\t\t\tappendError(types.GinkgoErrors.MultipleBodyFunctions(node.CodeLocation, nodeType))\n\t\t\t\t\ttrackedFunctionError = true\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tnode.Body, node.HasContext = extractBodyFunction(deprecationTracker, node.CodeLocation, arg)\n\t\t\t\tif node.Body == nil {\n\t\t\t\t\tappendError(types.GinkgoErrors.InvalidBodyType(t, node.CodeLocation, nodeType))\n\t\t\t\t\ttrackedFunctionError = true\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tremainingArgs = append(remainingArgs, arg)\n\t\t}\n\t}\n\n\t// validations\n\tif node.MarkedPending && node.MarkedFocus {\n\t\tappendError(types.GinkgoErrors.InvalidDeclarationOfFocusedAndPending(node.CodeLocation, nodeType))\n\t}\n\n\tif node.MarkedContinueOnFailure && !node.MarkedOrdered {\n\t\tappendError(types.GinkgoErrors.InvalidContinueOnFailureDecoration(node.CodeLocation))\n\t}\n\n\thasContext := node.HasContext || node.SynchronizedAfterSuiteProc1BodyHasContext || node.SynchronizedAfterSuiteAllProcsBodyHasContext || node.SynchronizedBeforeSuiteProc1BodyHasContext || node.SynchronizedBeforeSuiteAllProcsBodyHasContext\n\n\tif !hasContext && (node.NodeTimeout > 0 || node.SpecTimeout > 0 || node.GracePeriod > 0) && len(errors) == 0 {\n\t\tappendError(types.GinkgoErrors.InvalidTimeoutOrGracePeriodForNonContextNode(node.CodeLocation, nodeType))\n\t}\n\n\tif !node.NodeType.Is(types.NodeTypeReportBeforeEach|types.NodeTypeReportAfterEach|types.NodeTypeSynchronizedBeforeSuite|types.NodeTypeSynchronizedAfterSuite|types.NodeTypeReportBeforeSuite|types.NodeTypeReportAfterSuite) && node.Body == nil && !node.MarkedPending && !trackedFunctionError {\n\t\tappendError(types.GinkgoErrors.MissingBodyFunction(node.CodeLocation, nodeType))\n\t}\n\n\tif node.NodeType.Is(types.NodeTypeSynchronizedBeforeSuite) && !trackedFunctionError && (node.SynchronizedBeforeSuiteProc1Body == nil || node.SynchronizedBeforeSuiteAllProcsBody == nil) {\n\t\tappendError(types.GinkgoErrors.MissingBodyFunction(node.CodeLocation, nodeType))\n\t}\n\n\tif node.NodeType.Is(types.NodeTypeSynchronizedAfterSuite) && !trackedFunctionError && (node.SynchronizedAfterSuiteProc1Body == nil || node.SynchronizedAfterSuiteAllProcsBody == nil) {\n\t\tappendError(types.GinkgoErrors.MissingBodyFunction(node.CodeLocation, nodeType))\n\t}\n\n\tfor _, arg := range remainingArgs {\n\t\tappendError(types.GinkgoErrors.UnknownDecorator(node.CodeLocation, nodeType, arg))\n\t}\n\n\tif node.FlakeAttempts > 0 && node.MustPassRepeatedly > 0 {\n\t\tappendError(types.GinkgoErrors.InvalidDeclarationOfFlakeAttemptsAndMustPassRepeatedly(node.CodeLocation, nodeType))\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn Node{}, errors\n\t}\n\n\treturn node, errors\n}\n\nvar doneType = reflect.TypeOf(make(Done))\n\nfunc extractBodyFunction(deprecationTracker *types.DeprecationTracker, cl types.CodeLocation, arg any) (func(SpecContext), bool) {\n\tt := reflect.TypeOf(arg)\n\tif t.NumOut() > 0 || t.NumIn() > 1 {\n\t\treturn nil, false\n\t}\n\tif t.NumIn() == 1 {\n\t\tif t.In(0) == doneType {\n\t\t\tdeprecationTracker.TrackDeprecation(types.Deprecations.Async(), cl)\n\t\t\tdeprecatedAsyncBody := arg.(func(Done))\n\t\t\treturn func(SpecContext) { deprecatedAsyncBody(make(Done)) }, false\n\t\t} else if t.In(0).Implements(specContextType) {\n\t\t\treturn arg.(func(SpecContext)), true\n\t\t} else if t.In(0).Implements(contextType) {\n\t\t\tbody := arg.(func(context.Context))\n\t\t\treturn func(c SpecContext) { body(c) }, true\n\t\t}\n\n\t\treturn nil, false\n\t}\n\n\tbody := arg.(func())\n\treturn func(SpecContext) { body() }, false\n}\n\nvar byteType = reflect.TypeOf([]byte{})\n\nfunc extractSynchronizedBeforeSuiteProc1Body(arg any) (func(SpecContext) []byte, bool) {\n\tt := reflect.TypeOf(arg)\n\tv := reflect.ValueOf(arg)\n\n\tif t.NumOut() > 1 || t.NumIn() > 1 {\n\t\treturn nil, false\n\t} else if t.NumOut() == 1 && t.Out(0) != byteType {\n\t\treturn nil, false\n\t} else if t.NumIn() == 1 && !t.In(0).Implements(contextType) {\n\t\treturn nil, false\n\t}\n\thasContext := t.NumIn() == 1\n\n\treturn func(c SpecContext) []byte {\n\t\tvar out []reflect.Value\n\t\tif hasContext {\n\t\t\tout = v.Call([]reflect.Value{reflect.ValueOf(c)})\n\t\t} else {\n\t\t\tout = v.Call([]reflect.Value{})\n\t\t}\n\t\tif len(out) == 1 {\n\t\t\treturn (out[0].Interface()).([]byte)\n\t\t} else {\n\t\t\treturn []byte{}\n\t\t}\n\t}, hasContext\n}\n\nfunc extractSynchronizedBeforeSuiteAllProcsBody(arg any) (func(SpecContext, []byte), bool) {\n\tt := reflect.TypeOf(arg)\n\tv := reflect.ValueOf(arg)\n\thasContext, hasByte := false, false\n\n\tif t.NumOut() > 0 || t.NumIn() > 2 {\n\t\treturn nil, false\n\t} else if t.NumIn() == 2 && t.In(0).Implements(contextType) && t.In(1) == byteType {\n\t\thasContext, hasByte = true, true\n\t} else if t.NumIn() == 1 && t.In(0).Implements(contextType) {\n\t\thasContext = true\n\t} else if t.NumIn() == 1 && t.In(0) == byteType {\n\t\thasByte = true\n\t} else if t.NumIn() != 0 {\n\t\treturn nil, false\n\t}\n\n\treturn func(c SpecContext, b []byte) {\n\t\tin := []reflect.Value{}\n\t\tif hasContext {\n\t\t\tin = append(in, reflect.ValueOf(c))\n\t\t}\n\t\tif hasByte {\n\t\t\tin = append(in, reflect.ValueOf(b))\n\t\t}\n\t\tv.Call(in)\n\t}, hasContext\n}\n\nvar errInterface = reflect.TypeOf((*error)(nil)).Elem()\n\nfunc NewCleanupNode(deprecationTracker *types.DeprecationTracker, fail func(string, types.CodeLocation), args ...any) (Node, []error) {\n\tdecorations, remainingArgs := PartitionDecorations(args...)\n\tbaseOffset := 2\n\tcl := types.NewCodeLocation(baseOffset)\n\tfinalArgs := []any{}\n\tfor _, arg := range decorations {\n\t\tswitch t := reflect.TypeOf(arg); {\n\t\tcase t == reflect.TypeOf(Offset(0)):\n\t\t\tcl = types.NewCodeLocation(baseOffset + int(arg.(Offset)))\n\t\tcase t == reflect.TypeOf(types.CodeLocation{}):\n\t\t\tcl = arg.(types.CodeLocation)\n\t\tdefault:\n\t\t\tfinalArgs = append(finalArgs, arg)\n\t\t}\n\t}\n\tfinalArgs = append(finalArgs, cl)\n\n\tif len(remainingArgs) == 0 {\n\t\treturn Node{}, []error{types.GinkgoErrors.DeferCleanupInvalidFunction(cl)}\n\t}\n\n\tcallback := reflect.ValueOf(remainingArgs[0])\n\tif !(callback.Kind() == reflect.Func) {\n\t\treturn Node{}, []error{types.GinkgoErrors.DeferCleanupInvalidFunction(cl)}\n\t}\n\n\tcallArgs := []reflect.Value{}\n\tfor _, arg := range remainingArgs[1:] {\n\t\tcallArgs = append(callArgs, reflect.ValueOf(arg))\n\t}\n\n\thasContext := false\n\tt := callback.Type()\n\tif t.NumIn() > 0 {\n\t\tif t.In(0).Implements(specContextType) {\n\t\t\thasContext = true\n\t\t} else if t.In(0).Implements(contextType) && (len(callArgs) == 0 || !callArgs[0].Type().Implements(contextType)) {\n\t\t\thasContext = true\n\t\t}\n\t}\n\n\thandleFailure := func(out []reflect.Value) {\n\t\tif len(out) == 0 {\n\t\t\treturn\n\t\t}\n\t\tlast := out[len(out)-1]\n\t\tif last.Type().Implements(errInterface) && !last.IsNil() {\n\t\t\tfail(fmt.Sprintf(\"DeferCleanup callback returned error: %v\", last), cl)\n\t\t}\n\t}\n\n\tif hasContext {\n\t\tfinalArgs = append(finalArgs, func(c SpecContext) {\n\t\t\tout := callback.Call(append([]reflect.Value{reflect.ValueOf(c)}, callArgs...))\n\t\t\thandleFailure(out)\n\t\t})\n\t} else {\n\t\tfinalArgs = append(finalArgs, func() {\n\t\t\tout := callback.Call(callArgs)\n\t\t\thandleFailure(out)\n\t\t})\n\t}\n\n\treturn NewNode(deprecationTracker, types.NodeTypeCleanupInvalid, \"\", finalArgs)\n}\n\nfunc (n Node) IsZero() bool {\n\treturn n.ID == 0\n}\n\n/* Nodes */\ntype Nodes []Node\n\nfunc (n Nodes) Clone() Nodes {\n\tnodes := make(Nodes, len(n))\n\tcopy(nodes, n)\n\treturn nodes\n}\n\nfunc (n Nodes) CopyAppend(nodes ...Node) Nodes {\n\tnumN := len(n)\n\tout := make(Nodes, numN+len(nodes))\n\tcopy(out, n)\n\tfor j, node := range nodes {\n\t\tout[numN+j] = node\n\t}\n\treturn out\n}\n\nfunc (n Nodes) SplitAround(pivot Node) (Nodes, Nodes) {\n\tpivotIdx := len(n)\n\tfor i := range n {\n\t\tif n[i].ID == pivot.ID {\n\t\t\tpivotIdx = i\n\t\t\tbreak\n\t\t}\n\t}\n\tleft := n[:pivotIdx]\n\tright := Nodes{}\n\tif pivotIdx+1 < len(n) {\n\t\tright = n[pivotIdx+1:]\n\t}\n\n\treturn left, right\n}\n\nfunc (n Nodes) FirstNodeWithType(nodeTypes types.NodeType) Node {\n\tfor i := range n {\n\t\tif n[i].NodeType.Is(nodeTypes) {\n\t\t\treturn n[i]\n\t\t}\n\t}\n\treturn Node{}\n}\n\nfunc (n Nodes) WithType(nodeTypes types.NodeType) Nodes {\n\tcount := 0\n\tfor i := range n {\n\t\tif n[i].NodeType.Is(nodeTypes) {\n\t\t\tcount++\n\t\t}\n\t}\n\n\tout, j := make(Nodes, count), 0\n\tfor i := range n {\n\t\tif n[i].NodeType.Is(nodeTypes) {\n\t\t\tout[j] = n[i]\n\t\t\tj++\n\t\t}\n\t}\n\treturn out\n}\n\nfunc (n Nodes) WithoutType(nodeTypes types.NodeType) Nodes {\n\tcount := 0\n\tfor i := range n {\n\t\tif !n[i].NodeType.Is(nodeTypes) {\n\t\t\tcount++\n\t\t}\n\t}\n\n\tout, j := make(Nodes, count), 0\n\tfor i := range n {\n\t\tif !n[i].NodeType.Is(nodeTypes) {\n\t\t\tout[j] = n[i]\n\t\t\tj++\n\t\t}\n\t}\n\treturn out\n}\n\nfunc (n Nodes) WithoutNode(nodeToExclude Node) Nodes {\n\tidxToExclude := len(n)\n\tfor i := range n {\n\t\tif n[i].ID == nodeToExclude.ID {\n\t\t\tidxToExclude = i\n\t\t\tbreak\n\t\t}\n\t}\n\tif idxToExclude == len(n) {\n\t\treturn n\n\t}\n\tout, j := make(Nodes, len(n)-1), 0\n\tfor i := range n {\n\t\tif i == idxToExclude {\n\t\t\tcontinue\n\t\t}\n\t\tout[j] = n[i]\n\t\tj++\n\t}\n\treturn out\n}\n\nfunc (n Nodes) Filter(filter func(Node) bool) Nodes {\n\ttrufa, count := make([]bool, len(n)), 0\n\tfor i := range n {\n\t\tif filter(n[i]) {\n\t\t\ttrufa[i] = true\n\t\t\tcount += 1\n\t\t}\n\t}\n\tout, j := make(Nodes, count), 0\n\tfor i := range n {\n\t\tif trufa[i] {\n\t\t\tout[j] = n[i]\n\t\t\tj++\n\t\t}\n\t}\n\treturn out\n}\n\nfunc (n Nodes) FirstSatisfying(filter func(Node) bool) Node {\n\tfor i := range n {\n\t\tif filter(n[i]) {\n\t\t\treturn n[i]\n\t\t}\n\t}\n\treturn Node{}\n}\n\nfunc (n Nodes) WithinNestingLevel(deepestNestingLevel int) Nodes {\n\tcount := 0\n\tfor i := range n {\n\t\tif n[i].NestingLevel <= deepestNestingLevel {\n\t\t\tcount++\n\t\t}\n\t}\n\tout, j := make(Nodes, count), 0\n\tfor i := range n {\n\t\tif n[i].NestingLevel <= deepestNestingLevel {\n\t\t\tout[j] = n[i]\n\t\t\tj++\n\t\t}\n\t}\n\treturn out\n}\n\nfunc (n Nodes) SortedByDescendingNestingLevel() Nodes {\n\tout := make(Nodes, len(n))\n\tcopy(out, n)\n\tsort.SliceStable(out, func(i int, j int) bool {\n\t\treturn out[i].NestingLevel > out[j].NestingLevel\n\t})\n\n\treturn out\n}\n\nfunc (n Nodes) SortedByAscendingNestingLevel() Nodes {\n\tout := make(Nodes, len(n))\n\tcopy(out, n)\n\tsort.SliceStable(out, func(i int, j int) bool {\n\t\treturn out[i].NestingLevel < out[j].NestingLevel\n\t})\n\n\treturn out\n}\n\nfunc (n Nodes) FirstWithNestingLevel(level int) Node {\n\tfor i := range n {\n\t\tif n[i].NestingLevel == level {\n\t\t\treturn n[i]\n\t\t}\n\t}\n\treturn Node{}\n}\n\nfunc (n Nodes) Reverse() Nodes {\n\tout := make(Nodes, len(n))\n\tfor i := range n {\n\t\tout[len(n)-1-i] = n[i]\n\t}\n\treturn out\n}\n\nfunc (n Nodes) Texts() []string {\n\tout := make([]string, len(n))\n\tfor i := range n {\n\t\tout[i] = n[i].Text\n\t}\n\treturn out\n}\n\nfunc (n Nodes) Labels() [][]string {\n\tout := make([][]string, len(n))\n\tfor i := range n {\n\t\tif n[i].Labels == nil {\n\t\t\tout[i] = []string{}\n\t\t} else {\n\t\t\tout[i] = []string(n[i].Labels)\n\t\t}\n\t}\n\treturn out\n}\n\nfunc (n Nodes) UnionOfLabels() []string {\n\tout := []string{}\n\tseen := map[string]bool{}\n\tfor i := range n {\n\t\tfor _, label := range n[i].Labels {\n\t\t\tif !seen[label] {\n\t\t\t\tseen[label] = true\n\t\t\t\tout = append(out, label)\n\t\t\t}\n\t\t}\n\t}\n\treturn out\n}\n\nfunc (n Nodes) SemVerConstraints() [][]string {\n\tout := make([][]string, len(n))\n\tfor i := range n {\n\t\tif n[i].SemVerConstraints == nil {\n\t\t\tout[i] = []string{}\n\t\t} else {\n\t\t\tout[i] = []string(n[i].SemVerConstraints)\n\t\t}\n\t}\n\treturn out\n}\n\nfunc (n Nodes) UnionOfSemVerConstraints() []string {\n\tout := []string{}\n\tseen := map[string]bool{}\n\tfor i := range n {\n\t\tfor _, constraint := range n[i].SemVerConstraints {\n\t\t\tif !seen[constraint] {\n\t\t\t\tseen[constraint] = true\n\t\t\t\tout = append(out, constraint)\n\t\t\t}\n\t\t}\n\t}\n\treturn out\n}\n\nfunc (n Nodes) ComponentSemVerConstraints() []map[string][]string {\n\tout := make([]map[string][]string, len(n))\n\tfor i := range n {\n\t\tif n[i].ComponentSemVerConstraints == nil {\n\t\t\tout[i] = map[string][]string{}\n\t\t} else {\n\t\t\tout[i] = map[string][]string(n[i].ComponentSemVerConstraints)\n\t\t}\n\t}\n\treturn out\n}\n\nfunc (n Nodes) UnionOfComponentSemVerConstraints() map[string][]string {\n\tout := map[string][]string{}\n\tseen := map[string]bool{}\n\tfor i := range n {\n\t\tfor component := range n[i].ComponentSemVerConstraints {\n\t\t\tif !seen[component] {\n\t\t\t\tseen[component] = true\n\t\t\t\tout[component] = n[i].ComponentSemVerConstraints[component]\n\t\t\t} else {\n\t\t\t\tout[component] = UnionOfSemVerConstraints(out[component], n[i].ComponentSemVerConstraints[component])\n\t\t\t}\n\t\t}\n\t}\n\treturn out\n}\n\nfunc (n Nodes) CodeLocations() []types.CodeLocation {\n\tout := make([]types.CodeLocation, len(n))\n\tfor i := range n {\n\t\tout[i] = n[i].CodeLocation\n\t}\n\treturn out\n}\n\nfunc (n Nodes) BestTextFor(node Node) string {\n\tif node.Text != \"\" {\n\t\treturn node.Text\n\t}\n\tparentNestingLevel := node.NestingLevel - 1\n\tfor i := range n {\n\t\tif n[i].Text != \"\" && n[i].NestingLevel == parentNestingLevel {\n\t\t\treturn n[i].Text\n\t\t}\n\t}\n\n\treturn \"\"\n}\n\nfunc (n Nodes) ContainsNodeID(id uint) bool {\n\tfor i := range n {\n\t\tif n[i].ID == id {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc (n Nodes) HasNodeMarkedPending() bool {\n\tfor i := range n {\n\t\tif n[i].MarkedPending {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc (n Nodes) HasNodeMarkedFocus() bool {\n\tfor i := range n {\n\t\tif n[i].MarkedFocus {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc (n Nodes) HasNodeMarkedSerial() bool {\n\tfor i := range n {\n\t\tif n[i].MarkedSerial {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc (n Nodes) FirstNodeMarkedOrdered() Node {\n\tfor i := range n {\n\t\tif n[i].MarkedOrdered {\n\t\t\treturn n[i]\n\t\t}\n\t}\n\treturn Node{}\n}\n\nfunc (n Nodes) IndexOfFirstNodeMarkedOrdered() int {\n\tfor i := range n {\n\t\tif n[i].MarkedOrdered {\n\t\t\treturn i\n\t\t}\n\t}\n\treturn -1\n}\n\nfunc (n Nodes) GetMaxFlakeAttempts() int {\n\tmaxFlakeAttempts := 0\n\tfor i := range n {\n\t\tif n[i].FlakeAttempts > 0 {\n\t\t\tmaxFlakeAttempts = n[i].FlakeAttempts\n\t\t}\n\t}\n\treturn maxFlakeAttempts\n}\n\nfunc (n Nodes) GetMaxMustPassRepeatedly() int {\n\tmaxMustPassRepeatedly := 0\n\tfor i := range n {\n\t\tif n[i].MustPassRepeatedly > 0 {\n\t\t\tmaxMustPassRepeatedly = n[i].MustPassRepeatedly\n\t\t}\n\t}\n\treturn maxMustPassRepeatedly\n}\n\nfunc (n Nodes) GetSpecPriority() int {\n\tfor i := len(n) - 1; i >= 0; i-- {\n\t\tif n[i].HasExplicitlySetSpecPriority {\n\t\t\treturn n[i].SpecPriority\n\t\t}\n\t}\n\treturn 0\n}\n\nfunc UnrollInterfaceSlice(args any) []any {\n\tv := reflect.ValueOf(args)\n\tif v.Kind() != reflect.Slice {\n\t\treturn []any{args}\n\t}\n\tout := []any{}\n\tfor i := 0; i < v.Len(); i++ {\n\t\tel := reflect.ValueOf(v.Index(i).Interface())\n\t\tif el.Kind() == reflect.Slice && el.Type() != reflect.TypeOf(Labels{}) && el.Type() != reflect.TypeOf(SemVerConstraints{}) {\n\t\t\tout = append(out, UnrollInterfaceSlice(el.Interface())...)\n\t\t} else {\n\t\t\tout = append(out, v.Index(i).Interface())\n\t\t}\n\t}\n\treturn out\n}\n\ntype NodeArgsTransformer func(nodeType types.NodeType, offset Offset, text string, args []any) (string, []any, []error)\n\nfunc AddTreeConstructionNodeArgsTransformer(transformer NodeArgsTransformer) func() {\n\tid := nodeArgsTransformerCounter\n\tnodeArgsTransformerCounter++\n\tnodeArgsTransformers = append(nodeArgsTransformers, registeredNodeArgsTransformer{id, transformer})\n\treturn func() {\n\t\tnodeArgsTransformers = slices.DeleteFunc(nodeArgsTransformers, func(transformer registeredNodeArgsTransformer) bool {\n\t\t\treturn transformer.id == id\n\t\t})\n\t}\n}\n\nvar (\n\tnodeArgsTransformerCounter int64\n\tnodeArgsTransformers       []registeredNodeArgsTransformer\n)\n\ntype registeredNodeArgsTransformer struct {\n\tid          int64\n\ttransformer NodeArgsTransformer\n}\n\n// TransformNewNodeArgs is the helper for DSL functions which handles NodeArgsTransformers.\n//\n// Its return valus are intentionally the same as the internal.NewNode parameters,\n// which makes it possible to chain the invocations:\n//\n//\tNewNode(transformNewNodeArgs(...))\nfunc TransformNewNodeArgs(exitIfErrors func([]error), deprecationTracker *types.DeprecationTracker, nodeType types.NodeType, text string, args ...any) (*types.DeprecationTracker, types.NodeType, string, []any) {\n\tvar errs []error\n\n\t// Most recent first...\n\t//\n\t// This intentionally doesn't use slices.Backward because\n\t// using iterators influences stack unwinding.\n\tfor i := len(nodeArgsTransformers) - 1; i >= 0; i-- {\n\t\ttransformer := nodeArgsTransformers[i].transformer\n\t\targs = UnrollInterfaceSlice(args)\n\n\t\t// We do not really need to recompute this on additional loop iterations,\n\t\t// but its fast and simpler this way.\n\t\tvar offset Offset\n\t\tfor _, arg := range args {\n\t\t\tif o, ok := arg.(Offset); ok {\n\t\t\t\toffset = o\n\t\t\t}\n\t\t}\n\t\toffset += 3 // The DSL function, this helper, and the TransformNodeArgs implementation.\n\n\t\ttext, args, errs = transformer(nodeType, offset, text, args)\n\t\texitIfErrors(errs)\n\t}\n\treturn deprecationTracker, nodeType, text, args\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/internal/ordering.go",
    "content": "package internal\n\nimport (\n\t\"math/rand\"\n\t\"sort\"\n\n\t\"github.com/onsi/ginkgo/v2/types\"\n)\n\ntype SortableSpecs struct {\n\tSpecs   Specs\n\tIndexes []int\n}\n\nfunc NewSortableSpecs(specs Specs) *SortableSpecs {\n\tindexes := make([]int, len(specs))\n\tfor i := range specs {\n\t\tindexes[i] = i\n\t}\n\treturn &SortableSpecs{\n\t\tSpecs:   specs,\n\t\tIndexes: indexes,\n\t}\n}\nfunc (s *SortableSpecs) Len() int      { return len(s.Indexes) }\nfunc (s *SortableSpecs) Swap(i, j int) { s.Indexes[i], s.Indexes[j] = s.Indexes[j], s.Indexes[i] }\nfunc (s *SortableSpecs) Less(i, j int) bool {\n\ta, b := s.Specs[s.Indexes[i]], s.Specs[s.Indexes[j]]\n\n\taNodes, bNodes := a.Nodes.WithType(types.NodeTypesForContainerAndIt), b.Nodes.WithType(types.NodeTypesForContainerAndIt)\n\n\tfirstOrderedAIdx, firstOrderedBIdx := aNodes.IndexOfFirstNodeMarkedOrdered(), bNodes.IndexOfFirstNodeMarkedOrdered()\n\tif firstOrderedAIdx > -1 && firstOrderedBIdx > -1 && aNodes[firstOrderedAIdx].ID == bNodes[firstOrderedBIdx].ID {\n\t\t// strictly preserve order within an ordered containers.  ID will track this as IDs are generated monotonically\n\t\treturn aNodes.FirstNodeWithType(types.NodeTypeIt).ID < bNodes.FirstNodeWithType(types.NodeTypeIt).ID\n\t}\n\n\t// if either spec is in an ordered container - only use the nodes up to the outermost ordered container\n\tif firstOrderedAIdx > -1 {\n\t\taNodes = aNodes[:firstOrderedAIdx+1]\n\t}\n\tif firstOrderedBIdx > -1 {\n\t\tbNodes = bNodes[:firstOrderedBIdx+1]\n\t}\n\n\tfor i := 0; i < len(aNodes) && i < len(bNodes); i++ {\n\t\taCL, bCL := aNodes[i].CodeLocation, bNodes[i].CodeLocation\n\t\tif aCL.FileName != bCL.FileName {\n\t\t\treturn aCL.FileName < bCL.FileName\n\t\t}\n\t\tif aCL.LineNumber != bCL.LineNumber {\n\t\t\treturn aCL.LineNumber < bCL.LineNumber\n\t\t}\n\t}\n\t// either everything is equal or we have different lengths of CLs\n\tif len(aNodes) != len(bNodes) {\n\t\treturn len(aNodes) < len(bNodes)\n\t}\n\t// ok, now we are sure everything was equal. so we use the spec text to break ties\n\tfor i := 0; i < len(aNodes); i++ {\n\t\tif aNodes[i].Text != bNodes[i].Text {\n\t\t\treturn aNodes[i].Text < bNodes[i].Text\n\t\t}\n\t}\n\t// ok, all those texts were equal.  we'll use the ID of the most deeply nested node as a last resort\n\treturn aNodes[len(aNodes)-1].ID < bNodes[len(bNodes)-1].ID\n}\n\ntype GroupedSpecIndices []SpecIndices\ntype SpecIndices []int\n\nfunc OrderSpecs(specs Specs, suiteConfig types.SuiteConfig) (GroupedSpecIndices, GroupedSpecIndices) {\n\t/*\n\t\tGinkgo has sophisticated support for randomizing specs.  Specs are guaranteed to have the same\n\t\torder for a given seed across test runs.\n\n\t\tBy default only top-level containers and specs are shuffled - this makes for a more intuitive debugging\n\t\texperience - specs within a given container run in the order they appear in the file.\n\n\t\tDevelopers can set -randomizeAllSpecs to shuffle _all_ specs.\n\n\t\tIn addition, spec containers can be marked as Ordered.  Specs within an Ordered container are never shuffled.\n\n\t\tFinally, specs and spec containers can be marked as Serial.  When running in parallel, serial specs run on Process #1 _after_ all other processes have finished.\n\t*/\n\n\t// Seed a new random source based on thee configured random seed.\n\tr := rand.New(rand.NewSource(suiteConfig.RandomSeed))\n\n\t// first, we sort the entire suite to ensure a deterministic order.  the sort is performed by filename, then line number, and then spec text.  this ensures every parallel process has the exact same spec order and is only necessary to cover the edge case where the user iterates over a map to generate specs.\n\tsortableSpecs := NewSortableSpecs(specs)\n\tsort.Sort(sortableSpecs)\n\n\t// then we break things into execution groups\n\t// a group represents a single unit of execution and is a collection of SpecIndices\n\t// usually a group is just a single spec, however ordered containers must be preserved as a single group\n\texecutionGroupIDs := []uint{}\n\texecutionGroups := map[uint]SpecIndices{}\n\tfor _, idx := range sortableSpecs.Indexes {\n\t\tspec := specs[idx]\n\t\tgroupNode := spec.Nodes.FirstNodeMarkedOrdered()\n\t\tif groupNode.IsZero() {\n\t\t\tgroupNode = spec.Nodes.FirstNodeWithType(types.NodeTypeIt)\n\t\t}\n\t\texecutionGroups[groupNode.ID] = append(executionGroups[groupNode.ID], idx)\n\t\tif len(executionGroups[groupNode.ID]) == 1 {\n\t\t\texecutionGroupIDs = append(executionGroupIDs, groupNode.ID)\n\t\t}\n\t}\n\n\t// now, we only shuffle all the execution groups if we're randomizing all specs, otherwise\n\t// we shuffle outermost containers.  so we need to form shufflable groupings of GroupIDs\n\tshufflableGroupingIDs := []uint{}\n\tshufflableGroupingIDToGroupIDs := map[uint][]uint{}\n\n\t// for each execution group we're going to have to pick a node to represent how the\n\t// execution group is grouped for shuffling:\n\tnodeTypesToShuffle := types.NodeTypesForContainerAndIt\n\tif suiteConfig.RandomizeAllSpecs {\n\t\tnodeTypesToShuffle = types.NodeTypeIt\n\t}\n\n\t//so, for each execution group:\n\tfor _, groupID := range executionGroupIDs {\n\t\t// pick out a representative spec\n\t\trepresentativeSpec := specs[executionGroups[groupID][0]]\n\n\t\t// and grab the node on the spec that will represent which shufflable group this execution group belongs to\n\t\tshufflableGroupingNode := representativeSpec.Nodes.FirstNodeWithType(nodeTypesToShuffle)\n\n\t\t//add the execution group to its shufflable group\n\t\tshufflableGroupingIDToGroupIDs[shufflableGroupingNode.ID] = append(shufflableGroupingIDToGroupIDs[shufflableGroupingNode.ID], groupID)\n\n\t\t//and if it's the first one in\n\t\tif len(shufflableGroupingIDToGroupIDs[shufflableGroupingNode.ID]) == 1 {\n\t\t\t// record the shuffleable group ID\n\t\t\tshufflableGroupingIDs = append(shufflableGroupingIDs, shufflableGroupingNode.ID)\n\t\t}\n\t}\n\n\t// now, for each shuffleable group, we compute the priority\n\tshufflableGroupingIDPriorities := map[uint]int{}\n\tfor shufflableGroupingID, groupIDs := range shufflableGroupingIDToGroupIDs {\n\t\t// the priority of a shufflable grouping is the max priority of any spec in any execution group in the shufflable grouping\n\t\tmaxPriority := -1 << 31 // min int\n\t\tfor _, groupID := range groupIDs {\n\t\t\tfor _, specIdx := range executionGroups[groupID] {\n\t\t\t\tspecPriority := specs[specIdx].Nodes.GetSpecPriority()\n\t\t\t\tmaxPriority = max(specPriority, maxPriority)\n\t\t\t}\n\t\t}\n\t\tshufflableGroupingIDPriorities[shufflableGroupingID] = maxPriority\n\t}\n\n\t// now we permute the sorted shufflable grouping IDs and build the ordered Groups\n\tpermutation := r.Perm(len(shufflableGroupingIDs))\n\tshuffledGroupingIds := make([]uint, len(shufflableGroupingIDs))\n\tfor i, j := range permutation {\n\t\tshuffledGroupingIds[i] = shufflableGroupingIDs[j]\n\t}\n\t// now, we need to stable sort the shuffledGroupingIds by priority (higher priority first)\n\tsort.SliceStable(shuffledGroupingIds, func(i, j int) bool {\n\t\treturn shufflableGroupingIDPriorities[shuffledGroupingIds[i]] > shufflableGroupingIDPriorities[shuffledGroupingIds[j]]\n\t})\n\n\t// we can now take these prioritized, shuffled, groupings and form the final set of ordered spec groups\n\torderedGroups := GroupedSpecIndices{}\n\tfor _, id := range shuffledGroupingIds {\n\t\tfor _, executionGroupID := range shufflableGroupingIDToGroupIDs[id] {\n\t\t\torderedGroups = append(orderedGroups, executionGroups[executionGroupID])\n\t\t}\n\t}\n\n\t// If we're running in series, we're done.\n\tif suiteConfig.ParallelTotal == 1 {\n\t\treturn orderedGroups, GroupedSpecIndices{}\n\t}\n\n\t// We're running in parallel so we need to partition the ordered groups into a parallelizable set and a serialized set.\n\t// The parallelizable groups will run across all Ginkgo processes...\n\t// ...the serial groups will only run on Process #1 after all other processes have exited.\n\tparallelizableGroups, serialGroups := GroupedSpecIndices{}, GroupedSpecIndices{}\n\tfor _, specIndices := range orderedGroups {\n\t\tif specs[specIndices[0]].Nodes.HasNodeMarkedSerial() {\n\t\t\tserialGroups = append(serialGroups, specIndices)\n\t\t} else {\n\t\t\tparallelizableGroups = append(parallelizableGroups, specIndices)\n\t\t}\n\t}\n\n\treturn parallelizableGroups, serialGroups\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/internal/output_interceptor.go",
    "content": "package internal\n\nimport (\n\t\"bytes\"\n\t\"io\"\n\t\"os\"\n\t\"time\"\n)\n\nconst BAILOUT_TIME = 1 * time.Second\nconst BAILOUT_MESSAGE = `Ginkgo detected an issue while intercepting output.\n\nWhen running in parallel, Ginkgo captures stdout and stderr output\nand attaches it to the running spec.  It looks like that process is getting\nstuck for this suite.\n\nThis usually happens if you, or a library you are using, spin up an external\nprocess and set cmd.Stdout = os.Stdout and/or cmd.Stderr = os.Stderr.  This\ncauses the external process to keep Ginkgo's output interceptor pipe open and\ncauses output interception to hang.\n\nGinkgo has detected this and shortcircuited the capture process.  The specs\nwill continue running after this message however output from the external\nprocess that caused this issue will not be captured.\n\nYou have several options to fix this.  In preferred order they are:\n\n1. Pass GinkgoWriter instead of os.Stdout or os.Stderr to your process.\n2. Ensure your process exits before the current spec completes.  If your\nprocess is long-lived and must cross spec boundaries, this option won't\nwork for you.\n3. Pause Ginkgo's output interceptor before starting your process and then\nresume it after.  Use PauseOutputInterception() and ResumeOutputInterception()\nto do this.\n4. Set --output-interceptor-mode=none when running your Ginkgo suite.  This will\nturn off all output interception but allow specs to run in parallel without this\nissue.  You may miss important output if you do this including output from Go's\nrace detector.\n\nMore details on issue #851 - https://github.com/onsi/ginkgo/issues/851\n`\n\n/*\nThe OutputInterceptor is used by to\nintercept and capture all stdin and stderr output during a test run.\n*/\ntype OutputInterceptor interface {\n\tStartInterceptingOutput()\n\tStartInterceptingOutputAndForwardTo(io.Writer)\n\tStopInterceptingAndReturnOutput() string\n\n\tPauseIntercepting()\n\tResumeIntercepting()\n\n\tShutdown()\n}\n\ntype NoopOutputInterceptor struct{}\n\nfunc (interceptor NoopOutputInterceptor) StartInterceptingOutput()                      {}\nfunc (interceptor NoopOutputInterceptor) StartInterceptingOutputAndForwardTo(io.Writer) {}\nfunc (interceptor NoopOutputInterceptor) StopInterceptingAndReturnOutput() string       { return \"\" }\nfunc (interceptor NoopOutputInterceptor) PauseIntercepting()                            {}\nfunc (interceptor NoopOutputInterceptor) ResumeIntercepting()                           {}\nfunc (interceptor NoopOutputInterceptor) Shutdown()                                     {}\n\ntype pipePair struct {\n\treader *os.File\n\twriter *os.File\n}\n\nfunc startPipeFactory(pipeChannel chan pipePair, shutdown chan any) {\n\tfor {\n\t\t//make the next pipe...\n\t\tpair := pipePair{}\n\t\tpair.reader, pair.writer, _ = os.Pipe()\n\t\tselect {\n\t\t//...and provide it to the next consumer (they are responsible for closing the files)\n\t\tcase pipeChannel <- pair:\n\t\t\tcontinue\n\t\t//...or close the files if we were told to shutdown\n\t\tcase <-shutdown:\n\t\t\tpair.reader.Close()\n\t\t\tpair.writer.Close()\n\t\t\treturn\n\t\t}\n\t}\n}\n\ntype interceptorImplementation interface {\n\tCreateStdoutStderrClones() (*os.File, *os.File)\n\tConnectPipeToStdoutStderr(*os.File)\n\tRestoreStdoutStderrFromClones(*os.File, *os.File)\n\tShutdownClones(*os.File, *os.File)\n}\n\ntype genericOutputInterceptor struct {\n\tintercepting bool\n\n\tstdoutClone *os.File\n\tstderrClone *os.File\n\tpipe        pipePair\n\n\tshutdown           chan any\n\temergencyBailout   chan any\n\tpipeChannel        chan pipePair\n\tinterceptedContent chan string\n\n\tforwardTo         io.Writer\n\taccumulatedOutput string\n\n\timplementation interceptorImplementation\n}\n\nfunc (interceptor *genericOutputInterceptor) StartInterceptingOutput() {\n\tinterceptor.StartInterceptingOutputAndForwardTo(io.Discard)\n}\n\nfunc (interceptor *genericOutputInterceptor) StartInterceptingOutputAndForwardTo(w io.Writer) {\n\tif interceptor.intercepting {\n\t\treturn\n\t}\n\tinterceptor.accumulatedOutput = \"\"\n\tinterceptor.forwardTo = w\n\tinterceptor.ResumeIntercepting()\n}\n\nfunc (interceptor *genericOutputInterceptor) StopInterceptingAndReturnOutput() string {\n\tif interceptor.intercepting {\n\t\tinterceptor.PauseIntercepting()\n\t}\n\treturn interceptor.accumulatedOutput\n}\n\nfunc (interceptor *genericOutputInterceptor) ResumeIntercepting() {\n\tif interceptor.intercepting {\n\t\treturn\n\t}\n\tinterceptor.intercepting = true\n\tif interceptor.stdoutClone == nil {\n\t\tinterceptor.stdoutClone, interceptor.stderrClone = interceptor.implementation.CreateStdoutStderrClones()\n\t\tinterceptor.shutdown = make(chan any)\n\t\tgo startPipeFactory(interceptor.pipeChannel, interceptor.shutdown)\n\t}\n\n\t// Now we make a pipe, we'll use this to redirect the input to the 1 and 2 file descriptors (this is how everything else in the world is string to log to stdout and stderr)\n\t// we get the pipe from our pipe factory.  it runs in the background so we can request the next pipe while the spec being intercepted is running\n\tinterceptor.pipe = <-interceptor.pipeChannel\n\n\tinterceptor.emergencyBailout = make(chan any)\n\n\t//Spin up a goroutine to copy data from the pipe into a buffer, this is how we capture any output the user is emitting\n\tgo func() {\n\t\tbuffer := &bytes.Buffer{}\n\t\tdestination := io.MultiWriter(buffer, interceptor.forwardTo)\n\t\tcopyFinished := make(chan any)\n\t\treader := interceptor.pipe.reader\n\t\tgo func() {\n\t\t\tio.Copy(destination, reader)\n\t\t\treader.Close() // close the read end of the pipe so we don't leak a file descriptor\n\t\t\tclose(copyFinished)\n\t\t}()\n\t\tselect {\n\t\tcase <-copyFinished:\n\t\t\tinterceptor.interceptedContent <- buffer.String()\n\t\tcase <-interceptor.emergencyBailout:\n\t\t\tinterceptor.interceptedContent <- \"\"\n\t\t}\n\t}()\n\n\tinterceptor.implementation.ConnectPipeToStdoutStderr(interceptor.pipe.writer)\n}\n\nfunc (interceptor *genericOutputInterceptor) PauseIntercepting() {\n\tif !interceptor.intercepting {\n\t\treturn\n\t}\n\t// first we have to close the write end of the pipe.  To do this we have to close all file descriptors pointing\n\t// to the write end.  So that would be the pipewriter itself, and FD #1 and FD #2 if we've Dup2'd them\n\tinterceptor.pipe.writer.Close() // the pipewriter itself\n\n\t// we also need to stop intercepting. we do that by reconnecting the stdout and stderr file descriptions back to their respective #1 and #2 file descriptors;\n\t// this also closes #1 and #2 before it points that their original stdout and stderr file descriptions\n\tinterceptor.implementation.RestoreStdoutStderrFromClones(interceptor.stdoutClone, interceptor.stderrClone)\n\n\tvar content string\n\tselect {\n\tcase content = <-interceptor.interceptedContent:\n\tcase <-time.After(BAILOUT_TIME):\n\t\t/*\n\t\t\tBy closing all the pipe writer's file descriptors associated with the pipe writer's file description the io.Copy reading from the reader\n\t\t\tshould eventually receive an EOF and exit.\n\n\t\t\t**However**, if the user has spun up an external process and passed in os.Stdout/os.Stderr to cmd.Stdout/cmd.Stderr then the external process\n\t\t\twill have a file descriptor pointing to the pipe writer's file description and it will not close until the external process exits.\n\n\t\t\tThat would leave us hanging here waiting for the io.Copy to close forever.  Instead we invoke this emergency escape valve.  This returns whatever\n\t\t\tcontent we've got but leaves the io.Copy running.  This ensures the external process can continue writing without hanging at the cost of leaking a goroutine\n\t\t\tand file descriptor (those these will be cleaned up when the process exits).\n\n\t\t\tWe tack on a message to notify the user that they've hit this edgecase and encourage them to address it.\n\t\t*/\n\t\tclose(interceptor.emergencyBailout)\n\t\tcontent = <-interceptor.interceptedContent + BAILOUT_MESSAGE\n\t}\n\n\tinterceptor.accumulatedOutput += content\n\tinterceptor.intercepting = false\n}\n\nfunc (interceptor *genericOutputInterceptor) Shutdown() {\n\tinterceptor.PauseIntercepting()\n\n\tif interceptor.stdoutClone != nil {\n\t\tclose(interceptor.shutdown)\n\t\tinterceptor.implementation.ShutdownClones(interceptor.stdoutClone, interceptor.stderrClone)\n\t\tinterceptor.stdoutClone = nil\n\t\tinterceptor.stderrClone = nil\n\t}\n}\n\n/* This is used on windows builds but included here so it can be explicitly tested on unix systems too */\nfunc NewOSGlobalReassigningOutputInterceptor() OutputInterceptor {\n\treturn &genericOutputInterceptor{\n\t\tinterceptedContent: make(chan string),\n\t\tpipeChannel:        make(chan pipePair),\n\t\tshutdown:           make(chan any),\n\t\timplementation:     &osGlobalReassigningOutputInterceptorImpl{},\n\t}\n}\n\ntype osGlobalReassigningOutputInterceptorImpl struct{}\n\nfunc (impl *osGlobalReassigningOutputInterceptorImpl) CreateStdoutStderrClones() (*os.File, *os.File) {\n\treturn os.Stdout, os.Stderr\n}\n\nfunc (impl *osGlobalReassigningOutputInterceptorImpl) ConnectPipeToStdoutStderr(pipeWriter *os.File) {\n\tos.Stdout = pipeWriter\n\tos.Stderr = pipeWriter\n}\n\nfunc (impl *osGlobalReassigningOutputInterceptorImpl) RestoreStdoutStderrFromClones(stdoutClone *os.File, stderrClone *os.File) {\n\tos.Stdout = stdoutClone\n\tos.Stderr = stderrClone\n}\n\nfunc (impl *osGlobalReassigningOutputInterceptorImpl) ShutdownClones(_ *os.File, _ *os.File) {\n\t//noop\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/internal/output_interceptor_unix.go",
    "content": "//go:build freebsd || openbsd || netbsd || dragonfly || darwin || linux || solaris\n// +build freebsd openbsd netbsd dragonfly darwin linux solaris\n\npackage internal\n\nimport (\n\t\"os\"\n\n\t\"golang.org/x/sys/unix\"\n)\n\nfunc NewOutputInterceptor() OutputInterceptor {\n\treturn &genericOutputInterceptor{\n\t\tinterceptedContent: make(chan string),\n\t\tpipeChannel:        make(chan pipePair),\n\t\tshutdown:           make(chan any),\n\t\timplementation:     &dupSyscallOutputInterceptorImpl{},\n\t}\n}\n\ntype dupSyscallOutputInterceptorImpl struct{}\n\nfunc (impl *dupSyscallOutputInterceptorImpl) CreateStdoutStderrClones() (*os.File, *os.File) {\n\t// To clone stdout and stderr we:\n\t// First, create two clone file descriptors that point to the stdout and stderr file descriptions\n\tstdoutCloneFD, _ := unix.Dup(1)\n\tstderrCloneFD, _ := unix.Dup(2)\n\n\t// Important, set the fds to FD_CLOEXEC to prevent them leaking into childs\n\t// https://github.com/onsi/ginkgo/issues/1191\n\tflags, err := unix.FcntlInt(uintptr(stdoutCloneFD), unix.F_GETFD, 0)\n\tif err == nil {\n\t\tunix.FcntlInt(uintptr(stdoutCloneFD), unix.F_SETFD, flags|unix.FD_CLOEXEC)\n\t}\n\tflags, err = unix.FcntlInt(uintptr(stderrCloneFD), unix.F_GETFD, 0)\n\tif err == nil {\n\t\tunix.FcntlInt(uintptr(stderrCloneFD), unix.F_SETFD, flags|unix.FD_CLOEXEC)\n\t}\n\n\t// And then wrap the clone file descriptors in files.\n\t// One benefit of this (that we don't use yet) is that we can actually write\n\t// to these files to emit output to the console even though we're intercepting output\n\tstdoutClone := os.NewFile(uintptr(stdoutCloneFD), \"stdout-clone\")\n\tstderrClone := os.NewFile(uintptr(stderrCloneFD), \"stderr-clone\")\n\n\t//these clones remain alive throughout the lifecycle of the suite and don't need to be recreated\n\t//this speeds things up a bit, actually.\n\treturn stdoutClone, stderrClone\n}\n\nfunc (impl *dupSyscallOutputInterceptorImpl) ConnectPipeToStdoutStderr(pipeWriter *os.File) {\n\t// To redirect output to our pipe we need to point the 1 and 2 file descriptors (which is how the world tries to log things)\n\t// to the write end of the pipe.\n\t// We do this with Dup2 (possibly Dup3 on some architectures) to have file descriptors 1 and 2 point to the same file description as the pipeWriter\n\t// This effectively shunts data written to stdout and stderr to the write end of our pipe\n\tunix.Dup2(int(pipeWriter.Fd()), 1)\n\tunix.Dup2(int(pipeWriter.Fd()), 2)\n}\n\nfunc (impl *dupSyscallOutputInterceptorImpl) RestoreStdoutStderrFromClones(stdoutClone *os.File, stderrClone *os.File) {\n\t// To restore stdour/stderr from the clones we have the 1 and 2 file descriptors\n\t// point to the original file descriptions that we saved off in the clones.\n\t// This has the added benefit of closing the connection between these descriptors and the write end of the pipe\n\t// which is important to cause the io.Copy on the pipe.Reader to end.\n\tunix.Dup2(int(stdoutClone.Fd()), 1)\n\tunix.Dup2(int(stderrClone.Fd()), 2)\n}\n\nfunc (impl *dupSyscallOutputInterceptorImpl) ShutdownClones(stdoutClone *os.File, stderrClone *os.File) {\n\t// We're done with the clones so we can close them to clean up after ourselves\n\tstdoutClone.Close()\n\tstderrClone.Close()\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/internal/output_interceptor_wasm.go",
    "content": "//go:build wasm\n\npackage internal\n\nfunc NewOutputInterceptor() OutputInterceptor {\n\treturn &NoopOutputInterceptor{}\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/internal/output_interceptor_win.go",
    "content": "// +build windows\n\npackage internal\n\nfunc NewOutputInterceptor() OutputInterceptor {\n\treturn NewOSGlobalReassigningOutputInterceptor()\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/internal/parallel_support/client_server.go",
    "content": "package parallel_support\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"time\"\n\n\t\"github.com/onsi/ginkgo/v2/reporters\"\n\t\"github.com/onsi/ginkgo/v2/types\"\n)\n\ntype BeforeSuiteState struct {\n\tData  []byte\n\tState types.SpecState\n}\n\ntype ParallelIndexCounter struct {\n\tIndex int\n}\n\nvar ErrorGone = fmt.Errorf(\"gone\")\nvar ErrorFailed = fmt.Errorf(\"failed\")\nvar ErrorEarly = fmt.Errorf(\"early\")\n\nvar POLLING_INTERVAL = 50 * time.Millisecond\n\ntype Server interface {\n\tStart()\n\tClose()\n\tAddress() string\n\tRegisterAlive(node int, alive func() bool)\n\tGetSuiteDone() chan any\n\tGetOutputDestination() io.Writer\n\tSetOutputDestination(io.Writer)\n}\n\ntype Client interface {\n\tConnect() bool\n\tClose() error\n\n\tPostSuiteWillBegin(report types.Report) error\n\tPostDidRun(report types.SpecReport) error\n\tPostSuiteDidEnd(report types.Report) error\n\tPostReportBeforeSuiteCompleted(state types.SpecState) error\n\tBlockUntilReportBeforeSuiteCompleted() (types.SpecState, error)\n\tPostSynchronizedBeforeSuiteCompleted(state types.SpecState, data []byte) error\n\tBlockUntilSynchronizedBeforeSuiteData() (types.SpecState, []byte, error)\n\tBlockUntilNonprimaryProcsHaveFinished() error\n\tBlockUntilAggregatedNonprimaryProcsReport() (types.Report, error)\n\tFetchNextCounter() (int, error)\n\tPostAbort() error\n\tShouldAbort() bool\n\tPostEmitProgressReport(report types.ProgressReport) error\n\tWrite(p []byte) (int, error)\n}\n\nfunc NewServer(parallelTotal int, reporter reporters.Reporter) (Server, error) {\n\tif os.Getenv(\"GINKGO_PARALLEL_PROTOCOL\") == \"HTTP\" {\n\t\treturn newHttpServer(parallelTotal, reporter)\n\t} else {\n\t\treturn newRPCServer(parallelTotal, reporter)\n\t}\n}\n\nfunc NewClient(serverHost string) Client {\n\tif os.Getenv(\"GINKGO_PARALLEL_PROTOCOL\") == \"HTTP\" {\n\t\treturn newHttpClient(serverHost)\n\t} else {\n\t\treturn newRPCClient(serverHost)\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/internal/parallel_support/http_client.go",
    "content": "package parallel_support\n\nimport (\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"time\"\n\n\t\"github.com/onsi/ginkgo/v2/types\"\n)\n\ntype httpClient struct {\n\tserverHost string\n}\n\nfunc newHttpClient(serverHost string) *httpClient {\n\treturn &httpClient{\n\t\tserverHost: serverHost,\n\t}\n}\n\nfunc (client *httpClient) Connect() bool {\n\tresp, err := http.Get(client.serverHost + \"/up\")\n\tif err != nil {\n\t\treturn false\n\t}\n\tresp.Body.Close()\n\treturn resp.StatusCode == http.StatusOK\n}\n\nfunc (client *httpClient) Close() error {\n\treturn nil\n}\n\nfunc (client *httpClient) post(path string, data any) error {\n\tvar body io.Reader\n\tif data != nil {\n\t\tencoded, err := json.Marshal(data)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbody = bytes.NewBuffer(encoded)\n\t}\n\tresp, err := http.Post(client.serverHost+path, \"application/json\", body)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer resp.Body.Close()\n\tif resp.StatusCode != http.StatusOK {\n\t\treturn fmt.Errorf(\"received unexpected status code %d\", resp.StatusCode)\n\t}\n\treturn nil\n}\n\nfunc (client *httpClient) poll(path string, data any) error {\n\tfor {\n\t\tresp, err := http.Get(client.serverHost + path)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif resp.StatusCode == http.StatusTooEarly {\n\t\t\tresp.Body.Close()\n\t\t\ttime.Sleep(POLLING_INTERVAL)\n\t\t\tcontinue\n\t\t}\n\t\tdefer resp.Body.Close()\n\t\tif resp.StatusCode == http.StatusGone {\n\t\t\treturn ErrorGone\n\t\t}\n\t\tif resp.StatusCode == http.StatusFailedDependency {\n\t\t\treturn ErrorFailed\n\t\t}\n\t\tif resp.StatusCode != http.StatusOK {\n\t\t\treturn fmt.Errorf(\"received unexpected status code %d\", resp.StatusCode)\n\t\t}\n\t\tif data != nil {\n\t\t\treturn json.NewDecoder(resp.Body).Decode(data)\n\t\t}\n\t\treturn nil\n\t}\n}\n\nfunc (client *httpClient) PostSuiteWillBegin(report types.Report) error {\n\treturn client.post(\"/suite-will-begin\", report)\n}\n\nfunc (client *httpClient) PostDidRun(report types.SpecReport) error {\n\treturn client.post(\"/did-run\", report)\n}\n\nfunc (client *httpClient) PostSuiteDidEnd(report types.Report) error {\n\treturn client.post(\"/suite-did-end\", report)\n}\n\nfunc (client *httpClient) PostEmitProgressReport(report types.ProgressReport) error {\n\treturn client.post(\"/progress-report\", report)\n}\n\nfunc (client *httpClient) PostReportBeforeSuiteCompleted(state types.SpecState) error {\n\treturn client.post(\"/report-before-suite-completed\", state)\n}\n\nfunc (client *httpClient) BlockUntilReportBeforeSuiteCompleted() (types.SpecState, error) {\n\tvar state types.SpecState\n\terr := client.poll(\"/report-before-suite-state\", &state)\n\tif err == ErrorGone {\n\t\treturn types.SpecStateFailed, nil\n\t}\n\treturn state, err\n}\n\nfunc (client *httpClient) PostSynchronizedBeforeSuiteCompleted(state types.SpecState, data []byte) error {\n\tbeforeSuiteState := BeforeSuiteState{\n\t\tState: state,\n\t\tData:  data,\n\t}\n\treturn client.post(\"/before-suite-completed\", beforeSuiteState)\n}\n\nfunc (client *httpClient) BlockUntilSynchronizedBeforeSuiteData() (types.SpecState, []byte, error) {\n\tvar beforeSuiteState BeforeSuiteState\n\terr := client.poll(\"/before-suite-state\", &beforeSuiteState)\n\tif err == ErrorGone {\n\t\treturn types.SpecStateInvalid, nil, types.GinkgoErrors.SynchronizedBeforeSuiteDisappearedOnProc1()\n\t}\n\treturn beforeSuiteState.State, beforeSuiteState.Data, err\n}\n\nfunc (client *httpClient) BlockUntilNonprimaryProcsHaveFinished() error {\n\treturn client.poll(\"/have-nonprimary-procs-finished\", nil)\n}\n\nfunc (client *httpClient) BlockUntilAggregatedNonprimaryProcsReport() (types.Report, error) {\n\tvar report types.Report\n\terr := client.poll(\"/aggregated-nonprimary-procs-report\", &report)\n\tif err == ErrorGone {\n\t\treturn types.Report{}, types.GinkgoErrors.AggregatedReportUnavailableDueToNodeDisappearing()\n\t}\n\treturn report, err\n}\n\nfunc (client *httpClient) FetchNextCounter() (int, error) {\n\tvar counter ParallelIndexCounter\n\terr := client.poll(\"/counter\", &counter)\n\treturn counter.Index, err\n}\n\nfunc (client *httpClient) PostAbort() error {\n\treturn client.post(\"/abort\", nil)\n}\n\nfunc (client *httpClient) ShouldAbort() bool {\n\terr := client.poll(\"/abort\", nil)\n\treturn err == ErrorGone\n}\n\nfunc (client *httpClient) Write(p []byte) (int, error) {\n\tresp, err := http.Post(client.serverHost+\"/emit-output\", \"text/plain;charset=UTF-8 \", bytes.NewReader(p))\n\tresp.Body.Close()\n\tif resp.StatusCode != http.StatusOK {\n\t\treturn 0, fmt.Errorf(\"failed to emit output\")\n\t}\n\treturn len(p), err\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/internal/parallel_support/http_server.go",
    "content": "/*\n\nThe remote package provides the pieces to allow Ginkgo test suites to report to remote listeners.\nThis is used, primarily, to enable streaming parallel test output but has, in principal, broader applications (e.g. streaming test output to a browser).\n\n*/\n\npackage parallel_support\n\nimport (\n\t\"encoding/json\"\n\t\"io\"\n\t\"net\"\n\t\"net/http\"\n\n\t\"github.com/onsi/ginkgo/v2/reporters\"\n\t\"github.com/onsi/ginkgo/v2/types\"\n)\n\n/*\nhttpServer spins up on an automatically selected port and listens for communication from the forwarding reporter.\nIt then forwards that communication to attached reporters.\n*/\ntype httpServer struct {\n\tlistener net.Listener\n\thandler  *ServerHandler\n}\n\n// Create a new server, automatically selecting a port\nfunc newHttpServer(parallelTotal int, reporter reporters.Reporter) (*httpServer, error) {\n\tlistener, err := net.Listen(\"tcp\", \"127.0.0.1:0\")\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &httpServer{\n\t\tlistener: listener,\n\t\thandler:  newServerHandler(parallelTotal, reporter),\n\t}, nil\n}\n\n// Start the server.  You don't need to `go s.Start()`, just `s.Start()`\nfunc (server *httpServer) Start() {\n\thttpServer := &http.Server{}\n\tmux := http.NewServeMux()\n\thttpServer.Handler = mux\n\n\t//streaming endpoints\n\tmux.HandleFunc(\"/suite-will-begin\", server.specSuiteWillBegin)\n\tmux.HandleFunc(\"/did-run\", server.didRun)\n\tmux.HandleFunc(\"/suite-did-end\", server.specSuiteDidEnd)\n\tmux.HandleFunc(\"/emit-output\", server.emitOutput)\n\tmux.HandleFunc(\"/progress-report\", server.emitProgressReport)\n\n\t//synchronization endpoints\n\tmux.HandleFunc(\"/report-before-suite-completed\", server.handleReportBeforeSuiteCompleted)\n\tmux.HandleFunc(\"/report-before-suite-state\", server.handleReportBeforeSuiteState)\n\tmux.HandleFunc(\"/before-suite-completed\", server.handleBeforeSuiteCompleted)\n\tmux.HandleFunc(\"/before-suite-state\", server.handleBeforeSuiteState)\n\tmux.HandleFunc(\"/have-nonprimary-procs-finished\", server.handleHaveNonprimaryProcsFinished)\n\tmux.HandleFunc(\"/aggregated-nonprimary-procs-report\", server.handleAggregatedNonprimaryProcsReport)\n\tmux.HandleFunc(\"/counter\", server.handleCounter)\n\tmux.HandleFunc(\"/up\", server.handleUp)\n\tmux.HandleFunc(\"/abort\", server.handleAbort)\n\n\tgo httpServer.Serve(server.listener)\n}\n\n// Stop the server\nfunc (server *httpServer) Close() {\n\tserver.listener.Close()\n}\n\n// The address the server can be reached it.  Pass this into the `ForwardingReporter`.\nfunc (server *httpServer) Address() string {\n\treturn \"http://\" + server.listener.Addr().String()\n}\n\nfunc (server *httpServer) GetSuiteDone() chan any {\n\treturn server.handler.done\n}\n\nfunc (server *httpServer) GetOutputDestination() io.Writer {\n\treturn server.handler.outputDestination\n}\n\nfunc (server *httpServer) SetOutputDestination(w io.Writer) {\n\tserver.handler.outputDestination = w\n}\n\nfunc (server *httpServer) RegisterAlive(node int, alive func() bool) {\n\tserver.handler.registerAlive(node, alive)\n}\n\n//\n// Streaming Endpoints\n//\n\n// The server will forward all received messages to Ginkgo reporters registered with `RegisterReporters`\nfunc (server *httpServer) decode(writer http.ResponseWriter, request *http.Request, object any) bool {\n\tdefer request.Body.Close()\n\tif json.NewDecoder(request.Body).Decode(object) != nil {\n\t\twriter.WriteHeader(http.StatusBadRequest)\n\t\treturn false\n\t}\n\treturn true\n}\n\nfunc (server *httpServer) handleError(err error, writer http.ResponseWriter) bool {\n\tif err == nil {\n\t\treturn false\n\t}\n\tswitch err {\n\tcase ErrorEarly:\n\t\twriter.WriteHeader(http.StatusTooEarly)\n\tcase ErrorGone:\n\t\twriter.WriteHeader(http.StatusGone)\n\tcase ErrorFailed:\n\t\twriter.WriteHeader(http.StatusFailedDependency)\n\tdefault:\n\t\twriter.WriteHeader(http.StatusInternalServerError)\n\t}\n\treturn true\n}\n\nfunc (server *httpServer) specSuiteWillBegin(writer http.ResponseWriter, request *http.Request) {\n\tvar report types.Report\n\tif !server.decode(writer, request, &report) {\n\t\treturn\n\t}\n\n\tserver.handleError(server.handler.SpecSuiteWillBegin(report, voidReceiver), writer)\n}\n\nfunc (server *httpServer) didRun(writer http.ResponseWriter, request *http.Request) {\n\tvar report types.SpecReport\n\tif !server.decode(writer, request, &report) {\n\t\treturn\n\t}\n\n\tserver.handleError(server.handler.DidRun(report, voidReceiver), writer)\n}\n\nfunc (server *httpServer) specSuiteDidEnd(writer http.ResponseWriter, request *http.Request) {\n\tvar report types.Report\n\tif !server.decode(writer, request, &report) {\n\t\treturn\n\t}\n\tserver.handleError(server.handler.SpecSuiteDidEnd(report, voidReceiver), writer)\n}\n\nfunc (server *httpServer) emitOutput(writer http.ResponseWriter, request *http.Request) {\n\toutput, err := io.ReadAll(request.Body)\n\tif err != nil {\n\t\twriter.WriteHeader(http.StatusInternalServerError)\n\t\treturn\n\t}\n\tvar n int\n\tserver.handleError(server.handler.EmitOutput(output, &n), writer)\n}\n\nfunc (server *httpServer) emitProgressReport(writer http.ResponseWriter, request *http.Request) {\n\tvar report types.ProgressReport\n\tif !server.decode(writer, request, &report) {\n\t\treturn\n\t}\n\tserver.handleError(server.handler.EmitProgressReport(report, voidReceiver), writer)\n}\n\nfunc (server *httpServer) handleReportBeforeSuiteCompleted(writer http.ResponseWriter, request *http.Request) {\n\tvar state types.SpecState\n\tif !server.decode(writer, request, &state) {\n\t\treturn\n\t}\n\n\tserver.handleError(server.handler.ReportBeforeSuiteCompleted(state, voidReceiver), writer)\n}\n\nfunc (server *httpServer) handleReportBeforeSuiteState(writer http.ResponseWriter, request *http.Request) {\n\tvar state types.SpecState\n\tif server.handleError(server.handler.ReportBeforeSuiteState(voidSender, &state), writer) {\n\t\treturn\n\t}\n\tjson.NewEncoder(writer).Encode(state)\n}\n\nfunc (server *httpServer) handleBeforeSuiteCompleted(writer http.ResponseWriter, request *http.Request) {\n\tvar beforeSuiteState BeforeSuiteState\n\tif !server.decode(writer, request, &beforeSuiteState) {\n\t\treturn\n\t}\n\n\tserver.handleError(server.handler.BeforeSuiteCompleted(beforeSuiteState, voidReceiver), writer)\n}\n\nfunc (server *httpServer) handleBeforeSuiteState(writer http.ResponseWriter, request *http.Request) {\n\tvar beforeSuiteState BeforeSuiteState\n\tif server.handleError(server.handler.BeforeSuiteState(voidSender, &beforeSuiteState), writer) {\n\t\treturn\n\t}\n\tjson.NewEncoder(writer).Encode(beforeSuiteState)\n}\n\nfunc (server *httpServer) handleHaveNonprimaryProcsFinished(writer http.ResponseWriter, request *http.Request) {\n\tif server.handleError(server.handler.HaveNonprimaryProcsFinished(voidSender, voidReceiver), writer) {\n\t\treturn\n\t}\n\twriter.WriteHeader(http.StatusOK)\n}\n\nfunc (server *httpServer) handleAggregatedNonprimaryProcsReport(writer http.ResponseWriter, request *http.Request) {\n\tvar aggregatedReport types.Report\n\tif server.handleError(server.handler.AggregatedNonprimaryProcsReport(voidSender, &aggregatedReport), writer) {\n\t\treturn\n\t}\n\tjson.NewEncoder(writer).Encode(aggregatedReport)\n}\n\nfunc (server *httpServer) handleCounter(writer http.ResponseWriter, request *http.Request) {\n\tvar n int\n\tif server.handleError(server.handler.Counter(voidSender, &n), writer) {\n\t\treturn\n\t}\n\tjson.NewEncoder(writer).Encode(ParallelIndexCounter{Index: n})\n}\n\nfunc (server *httpServer) handleUp(writer http.ResponseWriter, request *http.Request) {\n\twriter.WriteHeader(http.StatusOK)\n}\n\nfunc (server *httpServer) handleAbort(writer http.ResponseWriter, request *http.Request) {\n\tif request.Method == \"GET\" {\n\t\tvar shouldAbort bool\n\t\tserver.handler.ShouldAbort(voidSender, &shouldAbort)\n\t\tif shouldAbort {\n\t\t\twriter.WriteHeader(http.StatusGone)\n\t\t} else {\n\t\t\twriter.WriteHeader(http.StatusOK)\n\t\t}\n\t} else {\n\t\tserver.handler.Abort(voidSender, voidReceiver)\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/internal/parallel_support/rpc_client.go",
    "content": "package parallel_support\n\nimport (\n\t\"net/rpc\"\n\t\"time\"\n\n\t\"github.com/onsi/ginkgo/v2/types\"\n)\n\ntype rpcClient struct {\n\tserverHost string\n\tclient     *rpc.Client\n}\n\nfunc newRPCClient(serverHost string) *rpcClient {\n\treturn &rpcClient{\n\t\tserverHost: serverHost,\n\t}\n}\n\nfunc (client *rpcClient) Connect() bool {\n\tvar err error\n\tif client.client != nil {\n\t\treturn true\n\t}\n\tclient.client, err = rpc.DialHTTPPath(\"tcp\", client.serverHost, \"/\")\n\tif err != nil {\n\t\tclient.client = nil\n\t\treturn false\n\t}\n\treturn true\n}\n\nfunc (client *rpcClient) Close() error {\n\treturn client.client.Close()\n}\n\nfunc (client *rpcClient) poll(method string, data any) error {\n\tfor {\n\t\terr := client.client.Call(method, voidSender, data)\n\t\tif err == nil {\n\t\t\treturn nil\n\t\t}\n\t\tswitch err.Error() {\n\t\tcase ErrorEarly.Error():\n\t\t\ttime.Sleep(POLLING_INTERVAL)\n\t\tcase ErrorGone.Error():\n\t\t\treturn ErrorGone\n\t\tcase ErrorFailed.Error():\n\t\t\treturn ErrorFailed\n\t\tdefault:\n\t\t\treturn err\n\t\t}\n\t}\n}\n\nfunc (client *rpcClient) PostSuiteWillBegin(report types.Report) error {\n\treturn client.client.Call(\"Server.SpecSuiteWillBegin\", report, voidReceiver)\n}\n\nfunc (client *rpcClient) PostDidRun(report types.SpecReport) error {\n\treturn client.client.Call(\"Server.DidRun\", report, voidReceiver)\n}\n\nfunc (client *rpcClient) PostSuiteDidEnd(report types.Report) error {\n\treturn client.client.Call(\"Server.SpecSuiteDidEnd\", report, voidReceiver)\n}\n\nfunc (client *rpcClient) Write(p []byte) (int, error) {\n\tvar n int\n\terr := client.client.Call(\"Server.EmitOutput\", p, &n)\n\treturn n, err\n}\n\nfunc (client *rpcClient) PostEmitProgressReport(report types.ProgressReport) error {\n\treturn client.client.Call(\"Server.EmitProgressReport\", report, voidReceiver)\n}\n\nfunc (client *rpcClient) PostReportBeforeSuiteCompleted(state types.SpecState) error {\n\treturn client.client.Call(\"Server.ReportBeforeSuiteCompleted\", state, voidReceiver)\n}\n\nfunc (client *rpcClient) BlockUntilReportBeforeSuiteCompleted() (types.SpecState, error) {\n\tvar state types.SpecState\n\terr := client.poll(\"Server.ReportBeforeSuiteState\", &state)\n\tif err == ErrorGone {\n\t\treturn types.SpecStateFailed, nil\n\t}\n\treturn state, err\n}\n\nfunc (client *rpcClient) PostSynchronizedBeforeSuiteCompleted(state types.SpecState, data []byte) error {\n\tbeforeSuiteState := BeforeSuiteState{\n\t\tState: state,\n\t\tData:  data,\n\t}\n\treturn client.client.Call(\"Server.BeforeSuiteCompleted\", beforeSuiteState, voidReceiver)\n}\n\nfunc (client *rpcClient) BlockUntilSynchronizedBeforeSuiteData() (types.SpecState, []byte, error) {\n\tvar beforeSuiteState BeforeSuiteState\n\terr := client.poll(\"Server.BeforeSuiteState\", &beforeSuiteState)\n\tif err == ErrorGone {\n\t\treturn types.SpecStateInvalid, nil, types.GinkgoErrors.SynchronizedBeforeSuiteDisappearedOnProc1()\n\t}\n\treturn beforeSuiteState.State, beforeSuiteState.Data, err\n}\n\nfunc (client *rpcClient) BlockUntilNonprimaryProcsHaveFinished() error {\n\treturn client.poll(\"Server.HaveNonprimaryProcsFinished\", voidReceiver)\n}\n\nfunc (client *rpcClient) BlockUntilAggregatedNonprimaryProcsReport() (types.Report, error) {\n\tvar report types.Report\n\terr := client.poll(\"Server.AggregatedNonprimaryProcsReport\", &report)\n\tif err == ErrorGone {\n\t\treturn types.Report{}, types.GinkgoErrors.AggregatedReportUnavailableDueToNodeDisappearing()\n\t}\n\treturn report, err\n}\n\nfunc (client *rpcClient) FetchNextCounter() (int, error) {\n\tvar counter int\n\terr := client.client.Call(\"Server.Counter\", voidSender, &counter)\n\treturn counter, err\n}\n\nfunc (client *rpcClient) PostAbort() error {\n\treturn client.client.Call(\"Server.Abort\", voidSender, voidReceiver)\n}\n\nfunc (client *rpcClient) ShouldAbort() bool {\n\tvar shouldAbort bool\n\tclient.client.Call(\"Server.ShouldAbort\", voidSender, &shouldAbort)\n\treturn shouldAbort\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/internal/parallel_support/rpc_server.go",
    "content": "/*\n\nThe remote package provides the pieces to allow Ginkgo test suites to report to remote listeners.\nThis is used, primarily, to enable streaming parallel test output but has, in principal, broader applications (e.g. streaming test output to a browser).\n\n*/\n\npackage parallel_support\n\nimport (\n\t\"io\"\n\t\"net\"\n\t\"net/http\"\n\t\"net/rpc\"\n\n\t\"github.com/onsi/ginkgo/v2/reporters\"\n)\n\n/*\nRPCServer spins up on an automatically selected port and listens for communication from the forwarding reporter.\nIt then forwards that communication to attached reporters.\n*/\ntype RPCServer struct {\n\tlistener net.Listener\n\thandler  *ServerHandler\n}\n\n// Create a new server, automatically selecting a port\nfunc newRPCServer(parallelTotal int, reporter reporters.Reporter) (*RPCServer, error) {\n\tlistener, err := net.Listen(\"tcp\", \"127.0.0.1:0\")\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &RPCServer{\n\t\tlistener: listener,\n\t\thandler:  newServerHandler(parallelTotal, reporter),\n\t}, nil\n}\n\n// Start the server.  You don't need to `go s.Start()`, just `s.Start()`\nfunc (server *RPCServer) Start() {\n\trpcServer := rpc.NewServer()\n\trpcServer.RegisterName(\"Server\", server.handler) //register the handler's methods as the server\n\n\thttpServer := &http.Server{}\n\thttpServer.Handler = rpcServer\n\n\tgo httpServer.Serve(server.listener)\n}\n\n// Stop the server\nfunc (server *RPCServer) Close() {\n\tserver.listener.Close()\n}\n\n// The address the server can be reached it.  Pass this into the `ForwardingReporter`.\nfunc (server *RPCServer) Address() string {\n\treturn server.listener.Addr().String()\n}\n\nfunc (server *RPCServer) GetSuiteDone() chan any {\n\treturn server.handler.done\n}\n\nfunc (server *RPCServer) GetOutputDestination() io.Writer {\n\treturn server.handler.outputDestination\n}\n\nfunc (server *RPCServer) SetOutputDestination(w io.Writer) {\n\tserver.handler.outputDestination = w\n}\n\nfunc (server *RPCServer) RegisterAlive(node int, alive func() bool) {\n\tserver.handler.registerAlive(node, alive)\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/internal/parallel_support/server_handler.go",
    "content": "package parallel_support\n\nimport (\n\t\"io\"\n\t\"os\"\n\t\"sync\"\n\n\t\"github.com/onsi/ginkgo/v2/reporters\"\n\t\"github.com/onsi/ginkgo/v2/types\"\n)\n\ntype Void struct{}\n\nvar voidReceiver *Void = &Void{}\nvar voidSender Void\n\n// ServerHandler is an RPC-compatible handler that is shared between the http server and the rpc server.\n// It handles all the business logic to avoid duplication between the two servers\n\ntype ServerHandler struct {\n\tdone                   chan any\n\toutputDestination      io.Writer\n\treporter               reporters.Reporter\n\talives                 []func() bool\n\tlock                   *sync.Mutex\n\tbeforeSuiteState       BeforeSuiteState\n\treportBeforeSuiteState types.SpecState\n\tparallelTotal          int\n\tcounter                int\n\tcounterLock            *sync.Mutex\n\tshouldAbort            bool\n\n\tnumSuiteDidBegins int\n\tnumSuiteDidEnds   int\n\taggregatedReport  types.Report\n\treportHoldingArea []types.SpecReport\n}\n\nfunc newServerHandler(parallelTotal int, reporter reporters.Reporter) *ServerHandler {\n\treturn &ServerHandler{\n\t\treporter:         reporter,\n\t\tlock:             &sync.Mutex{},\n\t\tcounterLock:      &sync.Mutex{},\n\t\talives:           make([]func() bool, parallelTotal),\n\t\tbeforeSuiteState: BeforeSuiteState{Data: nil, State: types.SpecStateInvalid},\n\n\t\tparallelTotal:     parallelTotal,\n\t\toutputDestination: os.Stdout,\n\t\tdone:              make(chan any),\n\t}\n}\n\nfunc (handler *ServerHandler) SpecSuiteWillBegin(report types.Report, _ *Void) error {\n\thandler.lock.Lock()\n\tdefer handler.lock.Unlock()\n\n\thandler.numSuiteDidBegins += 1\n\n\t// all summaries are identical, so it's fine to simply emit the last one of these\n\tif handler.numSuiteDidBegins == handler.parallelTotal {\n\t\thandler.reporter.SuiteWillBegin(report)\n\n\t\tfor _, summary := range handler.reportHoldingArea {\n\t\t\thandler.reporter.WillRun(summary)\n\t\t\thandler.reporter.DidRun(summary)\n\t\t}\n\n\t\thandler.reportHoldingArea = nil\n\t}\n\n\treturn nil\n}\n\nfunc (handler *ServerHandler) DidRun(report types.SpecReport, _ *Void) error {\n\thandler.lock.Lock()\n\tdefer handler.lock.Unlock()\n\n\tif handler.numSuiteDidBegins == handler.parallelTotal {\n\t\thandler.reporter.WillRun(report)\n\t\thandler.reporter.DidRun(report)\n\t} else {\n\t\thandler.reportHoldingArea = append(handler.reportHoldingArea, report)\n\t}\n\n\treturn nil\n}\n\nfunc (handler *ServerHandler) SpecSuiteDidEnd(report types.Report, _ *Void) error {\n\thandler.lock.Lock()\n\tdefer handler.lock.Unlock()\n\n\thandler.numSuiteDidEnds += 1\n\tif handler.numSuiteDidEnds == 1 {\n\t\thandler.aggregatedReport = report\n\t} else {\n\t\thandler.aggregatedReport = handler.aggregatedReport.Add(report)\n\t}\n\n\tif handler.numSuiteDidEnds == handler.parallelTotal {\n\t\thandler.reporter.SuiteDidEnd(handler.aggregatedReport)\n\t\tclose(handler.done)\n\t}\n\n\treturn nil\n}\n\nfunc (handler *ServerHandler) EmitOutput(output []byte, n *int) error {\n\tvar err error\n\t*n, err = handler.outputDestination.Write(output)\n\treturn err\n}\n\nfunc (handler *ServerHandler) EmitProgressReport(report types.ProgressReport, _ *Void) error {\n\thandler.lock.Lock()\n\tdefer handler.lock.Unlock()\n\thandler.reporter.EmitProgressReport(report)\n\treturn nil\n}\n\nfunc (handler *ServerHandler) registerAlive(proc int, alive func() bool) {\n\thandler.lock.Lock()\n\tdefer handler.lock.Unlock()\n\thandler.alives[proc-1] = alive\n}\n\nfunc (handler *ServerHandler) procIsAlive(proc int) bool {\n\thandler.lock.Lock()\n\tdefer handler.lock.Unlock()\n\talive := handler.alives[proc-1]\n\tif alive == nil {\n\t\treturn true\n\t}\n\treturn alive()\n}\n\nfunc (handler *ServerHandler) haveNonprimaryProcsFinished() bool {\n\tfor i := 2; i <= handler.parallelTotal; i++ {\n\t\tif handler.procIsAlive(i) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\nfunc (handler *ServerHandler) ReportBeforeSuiteCompleted(reportBeforeSuiteState types.SpecState, _ *Void) error {\n\thandler.lock.Lock()\n\tdefer handler.lock.Unlock()\n\thandler.reportBeforeSuiteState = reportBeforeSuiteState\n\n\treturn nil\n}\n\nfunc (handler *ServerHandler) ReportBeforeSuiteState(_ Void, reportBeforeSuiteState *types.SpecState) error {\n\tproc1IsAlive := handler.procIsAlive(1)\n\thandler.lock.Lock()\n\tdefer handler.lock.Unlock()\n\tif handler.reportBeforeSuiteState == types.SpecStateInvalid {\n\t\tif proc1IsAlive {\n\t\t\treturn ErrorEarly\n\t\t} else {\n\t\t\treturn ErrorGone\n\t\t}\n\t}\n\t*reportBeforeSuiteState = handler.reportBeforeSuiteState\n\treturn nil\n}\n\nfunc (handler *ServerHandler) BeforeSuiteCompleted(beforeSuiteState BeforeSuiteState, _ *Void) error {\n\thandler.lock.Lock()\n\tdefer handler.lock.Unlock()\n\thandler.beforeSuiteState = beforeSuiteState\n\n\treturn nil\n}\n\nfunc (handler *ServerHandler) BeforeSuiteState(_ Void, beforeSuiteState *BeforeSuiteState) error {\n\tproc1IsAlive := handler.procIsAlive(1)\n\thandler.lock.Lock()\n\tdefer handler.lock.Unlock()\n\tif handler.beforeSuiteState.State == types.SpecStateInvalid {\n\t\tif proc1IsAlive {\n\t\t\treturn ErrorEarly\n\t\t} else {\n\t\t\treturn ErrorGone\n\t\t}\n\t}\n\t*beforeSuiteState = handler.beforeSuiteState\n\treturn nil\n}\n\nfunc (handler *ServerHandler) HaveNonprimaryProcsFinished(_ Void, _ *Void) error {\n\tif handler.haveNonprimaryProcsFinished() {\n\t\treturn nil\n\t} else {\n\t\treturn ErrorEarly\n\t}\n}\n\nfunc (handler *ServerHandler) AggregatedNonprimaryProcsReport(_ Void, report *types.Report) error {\n\tif handler.haveNonprimaryProcsFinished() {\n\t\thandler.lock.Lock()\n\t\tdefer handler.lock.Unlock()\n\t\tif handler.numSuiteDidEnds == handler.parallelTotal-1 {\n\t\t\t*report = handler.aggregatedReport\n\t\t\treturn nil\n\t\t} else {\n\t\t\treturn ErrorGone\n\t\t}\n\t} else {\n\t\treturn ErrorEarly\n\t}\n}\n\nfunc (handler *ServerHandler) Counter(_ Void, counter *int) error {\n\thandler.counterLock.Lock()\n\tdefer handler.counterLock.Unlock()\n\t*counter = handler.counter\n\thandler.counter++\n\treturn nil\n}\n\nfunc (handler *ServerHandler) Abort(_ Void, _ *Void) error {\n\thandler.lock.Lock()\n\tdefer handler.lock.Unlock()\n\thandler.shouldAbort = true\n\treturn nil\n}\n\nfunc (handler *ServerHandler) ShouldAbort(_ Void, shouldAbort *bool) error {\n\thandler.lock.Lock()\n\tdefer handler.lock.Unlock()\n\t*shouldAbort = handler.shouldAbort\n\treturn nil\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/internal/progress_report.go",
    "content": "package internal\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"context\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"os/signal\"\n\t\"path/filepath\"\n\t\"runtime\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/onsi/ginkgo/v2/types\"\n)\n\nvar _SOURCE_CACHE = map[string][]string{}\n\ntype ProgressSignalRegistrar func(func()) context.CancelFunc\n\nfunc RegisterForProgressSignal(handler func()) context.CancelFunc {\n\tsignalChannel := make(chan os.Signal, 1)\n\tif len(PROGRESS_SIGNALS) > 0 {\n\t\tsignal.Notify(signalChannel, PROGRESS_SIGNALS...)\n\t}\n\tctx, cancel := context.WithCancel(context.Background())\n\tgo func() {\n\t\tfor {\n\t\t\tselect {\n\t\t\tcase <-signalChannel:\n\t\t\t\thandler()\n\t\t\tcase <-ctx.Done():\n\t\t\t\tsignal.Stop(signalChannel)\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}()\n\n\treturn cancel\n}\n\ntype ProgressStepCursor struct {\n\tText         string\n\tCodeLocation types.CodeLocation\n\tStartTime    time.Time\n}\n\nfunc NewProgressReport(isRunningInParallel bool, report types.SpecReport, currentNode Node, currentNodeStartTime time.Time, currentStep types.SpecEvent, gwOutput string, timelineLocation types.TimelineLocation, additionalReports []string, sourceRoots []string, includeAll bool) (types.ProgressReport, error) {\n\tpr := types.ProgressReport{\n\t\tParallelProcess:         report.ParallelProcess,\n\t\tRunningInParallel:       isRunningInParallel,\n\t\tContainerHierarchyTexts: report.ContainerHierarchyTexts,\n\t\tLeafNodeText:            report.LeafNodeText,\n\t\tLeafNodeLocation:        report.LeafNodeLocation,\n\t\tSpecStartTime:           report.StartTime,\n\n\t\tCurrentNodeType:      currentNode.NodeType,\n\t\tCurrentNodeText:      currentNode.Text,\n\t\tCurrentNodeLocation:  currentNode.CodeLocation,\n\t\tCurrentNodeStartTime: currentNodeStartTime,\n\n\t\tCurrentStepText:      currentStep.Message,\n\t\tCurrentStepLocation:  currentStep.CodeLocation,\n\t\tCurrentStepStartTime: currentStep.TimelineLocation.Time,\n\n\t\tAdditionalReports: additionalReports,\n\n\t\tCapturedGinkgoWriterOutput: gwOutput,\n\t\tTimelineLocation:           timelineLocation,\n\t}\n\n\tgoroutines, err := extractRunningGoroutines()\n\tif err != nil {\n\t\treturn pr, err\n\t}\n\tpr.Goroutines = goroutines\n\n\t// now we want to try to find goroutines of interest.  these will be goroutines that have any function calls with code in packagesOfInterest:\n\tpackagesOfInterest := map[string]bool{}\n\tpackageFromFilename := func(filename string) string {\n\t\treturn filepath.Dir(filename)\n\t}\n\taddPackageFor := func(filename string) {\n\t\tif filename != \"\" {\n\t\t\tpackagesOfInterest[packageFromFilename(filename)] = true\n\t\t}\n\t}\n\tisPackageOfInterest := func(filename string) bool {\n\t\tstackPackage := packageFromFilename(filename)\n\t\tfor packageOfInterest := range packagesOfInterest {\n\t\t\tif strings.HasPrefix(stackPackage, packageOfInterest) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\treturn false\n\t}\n\tfor _, location := range report.ContainerHierarchyLocations {\n\t\taddPackageFor(location.FileName)\n\t}\n\taddPackageFor(report.LeafNodeLocation.FileName)\n\taddPackageFor(currentNode.CodeLocation.FileName)\n\taddPackageFor(currentStep.CodeLocation.FileName)\n\n\t//First, we find the SpecGoroutine - this will be the goroutine that includes `runNode`\n\tspecGoRoutineIdx := -1\n\trunNodeFunctionCallIdx := -1\nOUTER:\n\tfor goroutineIdx, goroutine := range pr.Goroutines {\n\t\tfor functionCallIdx, functionCall := range goroutine.Stack {\n\t\t\tif strings.Contains(functionCall.Function, \"ginkgo/v2/internal.(*Suite).runNode.func\") {\n\t\t\t\tspecGoRoutineIdx = goroutineIdx\n\t\t\t\trunNodeFunctionCallIdx = functionCallIdx\n\t\t\t\tbreak OUTER\n\t\t\t}\n\t\t}\n\t}\n\n\t//Now, we find the first non-Ginkgo function call\n\tif specGoRoutineIdx > -1 {\n\t\tfor runNodeFunctionCallIdx >= 0 {\n\t\t\tfn := goroutines[specGoRoutineIdx].Stack[runNodeFunctionCallIdx].Function\n\t\t\tfile := goroutines[specGoRoutineIdx].Stack[runNodeFunctionCallIdx].Filename\n\t\t\t// these are all things that could potentially happen from within ginkgo\n\t\t\tif strings.Contains(fn, \"ginkgo/v2/internal\") || strings.Contains(fn, \"reflect.Value\") || strings.Contains(file, \"ginkgo/table_dsl\") || strings.Contains(file, \"ginkgo/core_dsl\") {\n\t\t\t\trunNodeFunctionCallIdx--\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif strings.Contains(goroutines[specGoRoutineIdx].Stack[runNodeFunctionCallIdx].Function, \"ginkgo/table_dsl\") {\n\n\t\t\t}\n\t\t\t//found it!  lets add its package of interest\n\t\t\taddPackageFor(goroutines[specGoRoutineIdx].Stack[runNodeFunctionCallIdx].Filename)\n\t\t\tbreak\n\t\t}\n\t}\n\n\tginkgoEntryPointIdx := -1\nOUTER_GINKGO_ENTRY_POINT:\n\tfor goroutineIdx, goroutine := range pr.Goroutines {\n\t\tfor _, functionCall := range goroutine.Stack {\n\t\t\tif strings.Contains(functionCall.Function, \"ginkgo/v2.RunSpecs\") {\n\t\t\t\tginkgoEntryPointIdx = goroutineIdx\n\t\t\t\tbreak OUTER_GINKGO_ENTRY_POINT\n\t\t\t}\n\t\t}\n\t}\n\n\t// Now we go through all goroutines and highlight any lines with packages in `packagesOfInterest`\n\t// Any goroutines with highlighted lines end up in the HighlightGoRoutines\n\tfor goroutineIdx, goroutine := range pr.Goroutines {\n\t\tif goroutineIdx == ginkgoEntryPointIdx {\n\t\t\tcontinue\n\t\t}\n\t\tif goroutineIdx == specGoRoutineIdx {\n\t\t\tpr.Goroutines[goroutineIdx].IsSpecGoroutine = true\n\t\t}\n\t\tfor functionCallIdx, functionCall := range goroutine.Stack {\n\t\t\tif isPackageOfInterest(functionCall.Filename) {\n\t\t\t\tgoroutine.Stack[functionCallIdx].Highlight = true\n\t\t\t\tgoroutine.Stack[functionCallIdx].Source, goroutine.Stack[functionCallIdx].SourceHighlight = fetchSource(functionCall.Filename, functionCall.Line, 2, sourceRoots)\n\t\t\t}\n\t\t}\n\t}\n\n\tif !includeAll {\n\t\tgoroutines := []types.Goroutine{pr.SpecGoroutine()}\n\t\tgoroutines = append(goroutines, pr.HighlightedGoroutines()...)\n\t\tpr.Goroutines = goroutines\n\t}\n\n\treturn pr, nil\n}\n\nfunc extractRunningGoroutines() ([]types.Goroutine, error) {\n\tvar stack []byte\n\tfor size := 64 * 1024; ; size *= 2 {\n\t\tstack = make([]byte, size)\n\t\tif n := runtime.Stack(stack, true); n < size {\n\t\t\tstack = stack[:n]\n\t\t\tbreak\n\t\t}\n\t}\n\tr := bufio.NewReader(bytes.NewReader(stack))\n\tout := []types.Goroutine{}\n\tidx := -1\n\tfor {\n\t\tline, err := r.ReadString('\\n')\n\t\tif err == io.EOF {\n\t\t\tbreak\n\t\t}\n\n\t\tline = strings.TrimSuffix(line, \"\\n\")\n\n\t\t//skip blank lines\n\t\tif line == \"\" {\n\t\t\tcontinue\n\t\t}\n\n\t\t//parse headers for new goroutine frames\n\t\tif strings.HasPrefix(line, \"goroutine\") {\n\t\t\tout = append(out, types.Goroutine{})\n\t\t\tidx = len(out) - 1\n\n\t\t\tline = strings.TrimPrefix(line, \"goroutine \")\n\t\t\tline = strings.TrimSuffix(line, \":\")\n\t\t\tfields := strings.SplitN(line, \" \", 2)\n\t\t\tif len(fields) != 2 {\n\t\t\t\treturn nil, types.GinkgoErrors.FailedToParseStackTrace(fmt.Sprintf(\"Invalid goroutine frame header: %s\", line))\n\t\t\t}\n\t\t\tout[idx].ID, err = strconv.ParseUint(fields[0], 10, 64)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, types.GinkgoErrors.FailedToParseStackTrace(fmt.Sprintf(\"Invalid goroutine ID: %s\", fields[1]))\n\t\t\t}\n\n\t\t\tout[idx].State = strings.TrimSuffix(strings.TrimPrefix(fields[1], \"[\"), \"]\")\n\t\t\tcontinue\n\t\t}\n\n\t\t//if we are here we must be at a function call entry in the stack\n\t\tfunctionCall := types.FunctionCall{\n\t\t\tFunction: strings.TrimPrefix(line, \"created by \"), // no need to track 'created by'\n\t\t}\n\n\t\tline, err = r.ReadString('\\n')\n\t\tline = strings.TrimSuffix(line, \"\\n\")\n\t\tif err == io.EOF {\n\t\t\treturn nil, types.GinkgoErrors.FailedToParseStackTrace(fmt.Sprintf(\"Invalid function call: %s -- missing file name and line number\", functionCall.Function))\n\t\t}\n\t\tline = strings.TrimLeft(line, \" \\t\")\n\t\tdelimiterIdx := strings.LastIndex(line, \":\")\n\t\tif delimiterIdx == -1 {\n\t\t\treturn nil, types.GinkgoErrors.FailedToParseStackTrace(fmt.Sprintf(\"Invalid filename and line number: %s\", line))\n\t\t}\n\t\tfunctionCall.Filename = line[:delimiterIdx]\n\t\tline = strings.Split(line[delimiterIdx+1:], \" \")[0]\n\t\tlineNumber, err := strconv.ParseInt(line, 10, 32)\n\t\tfunctionCall.Line = int(lineNumber)\n\t\tif err != nil {\n\t\t\treturn nil, types.GinkgoErrors.FailedToParseStackTrace(fmt.Sprintf(\"Invalid function call line number: %s\\n%s\", line, err.Error()))\n\t\t}\n\t\tout[idx].Stack = append(out[idx].Stack, functionCall)\n\t}\n\n\treturn out, nil\n}\n\nfunc fetchSource(filename string, lineNumber int, span int, configuredSourceRoots []string) ([]string, int) {\n\tif filename == \"\" {\n\t\treturn []string{}, 0\n\t}\n\n\tvar lines []string\n\tvar ok bool\n\tif lines, ok = _SOURCE_CACHE[filename]; !ok {\n\t\tsourceRoots := []string{\"\"}\n\t\tsourceRoots = append(sourceRoots, configuredSourceRoots...)\n\t\tvar data []byte\n\t\tvar err error\n\t\tvar found bool\n\t\tfor _, root := range sourceRoots {\n\t\t\tdata, err = os.ReadFile(filepath.Join(root, filename))\n\t\t\tif err == nil {\n\t\t\t\tfound = true\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif !found {\n\t\t\treturn []string{}, 0\n\t\t}\n\t\tlines = strings.Split(string(data), \"\\n\")\n\t\t_SOURCE_CACHE[filename] = lines\n\t}\n\n\tstartIndex := lineNumber - span - 1\n\tendIndex := startIndex + span + span + 1\n\tif startIndex < 0 {\n\t\tstartIndex = 0\n\t}\n\tif endIndex > len(lines) {\n\t\tendIndex = len(lines)\n\t}\n\thighlightIndex := lineNumber - 1 - startIndex\n\treturn lines[startIndex:endIndex], highlightIndex\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/internal/progress_report_bsd.go",
    "content": "//go:build freebsd || openbsd || netbsd || darwin || dragonfly\n// +build freebsd openbsd netbsd darwin dragonfly\n\npackage internal\n\nimport (\n\t\"os\"\n\t\"syscall\"\n)\n\nvar PROGRESS_SIGNALS = []os.Signal{syscall.SIGINFO, syscall.SIGUSR1}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/internal/progress_report_unix.go",
    "content": "//go:build linux || solaris\n// +build linux solaris\n\npackage internal\n\nimport (\n\t\"os\"\n\t\"syscall\"\n)\n\nvar PROGRESS_SIGNALS = []os.Signal{syscall.SIGUSR1}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/internal/progress_report_wasm.go",
    "content": "//go:build wasm\n\npackage internal\n\nimport (\n\t\"os\"\n\t\"syscall\"\n)\n\nvar PROGRESS_SIGNALS = []os.Signal{syscall.SIGUSR1}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/internal/progress_report_win.go",
    "content": "//go:build windows\n// +build windows\n\npackage internal\n\nimport \"os\"\n\nvar PROGRESS_SIGNALS = []os.Signal{}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/internal/progress_reporter_manager.go",
    "content": "package internal\n\nimport (\n\t\"context\"\n\t\"sort\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"github.com/onsi/ginkgo/v2/types\"\n)\n\ntype ProgressReporterManager struct {\n\tlock              *sync.Mutex\n\tprogressReporters map[int]func() string\n\tprCounter         int\n}\n\nfunc NewProgressReporterManager() *ProgressReporterManager {\n\treturn &ProgressReporterManager{\n\t\tprogressReporters: map[int]func() string{},\n\t\tlock:              &sync.Mutex{},\n\t}\n}\n\nfunc (prm *ProgressReporterManager) AttachProgressReporter(reporter func() string) func() {\n\tprm.lock.Lock()\n\tdefer prm.lock.Unlock()\n\tprm.prCounter += 1\n\tprCounter := prm.prCounter\n\tprm.progressReporters[prCounter] = reporter\n\n\treturn func() {\n\t\tprm.lock.Lock()\n\t\tdefer prm.lock.Unlock()\n\t\tdelete(prm.progressReporters, prCounter)\n\t}\n}\n\nfunc (prm *ProgressReporterManager) QueryProgressReporters(ctx context.Context, failer *Failer) []string {\n\tprm.lock.Lock()\n\tkeys := []int{}\n\tfor key := range prm.progressReporters {\n\t\tkeys = append(keys, key)\n\t}\n\tsort.Ints(keys)\n\treporters := []func() string{}\n\tfor _, key := range keys {\n\t\treporters = append(reporters, prm.progressReporters[key])\n\t}\n\tprm.lock.Unlock()\n\n\tif len(reporters) == 0 {\n\t\treturn nil\n\t}\n\tout := []string{}\n\tfor _, reporter := range reporters {\n\t\treportC := make(chan string, 1)\n\t\tgo func() {\n\t\t\tdefer func() {\n\t\t\t\te := recover()\n\t\t\t\tif e != nil {\n\t\t\t\t\tfailer.Panic(types.NewCodeLocationWithStackTrace(1), e)\n\t\t\t\t\treportC <- \"failed to query attached progress reporter\"\n\t\t\t\t}\n\t\t\t}()\n\t\t\treportC <- reporter()\n\t\t}()\n\t\tvar report string\n\t\tselect {\n\t\tcase report = <-reportC:\n\t\tcase <-ctx.Done():\n\t\t\treturn out\n\t\t}\n\t\tif strings.TrimSpace(report) != \"\" {\n\t\t\tout = append(out, report)\n\t\t}\n\t}\n\treturn out\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/internal/report_entry.go",
    "content": "package internal\n\nimport (\n\t\"time\"\n\n\t\"github.com/onsi/ginkgo/v2/types\"\n)\n\ntype ReportEntry = types.ReportEntry\n\nfunc NewReportEntry(name string, cl types.CodeLocation, args ...any) (ReportEntry, error) {\n\tout := ReportEntry{\n\t\tVisibility: types.ReportEntryVisibilityAlways,\n\t\tName:       name,\n\t\tLocation:   cl,\n\t\tTime:       time.Now(),\n\t}\n\tvar didSetValue = false\n\tfor _, arg := range args {\n\t\tswitch x := arg.(type) {\n\t\tcase types.ReportEntryVisibility:\n\t\t\tout.Visibility = x\n\t\tcase types.CodeLocation:\n\t\t\tout.Location = x\n\t\tcase Offset:\n\t\t\tout.Location = types.NewCodeLocation(2 + int(x))\n\t\tcase time.Time:\n\t\t\tout.Time = x\n\t\tdefault:\n\t\t\tif didSetValue {\n\t\t\t\treturn ReportEntry{}, types.GinkgoErrors.TooManyReportEntryValues(out.Location, arg)\n\t\t\t}\n\t\t\tout.Value = types.WrapEntryValue(arg)\n\t\t\tdidSetValue = true\n\t\t}\n\t}\n\n\treturn out, nil\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/internal/reporters/gojson.go",
    "content": "package reporters\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/onsi/ginkgo/v2/types\"\n\t\"golang.org/x/tools/go/packages\"\n)\n\nfunc ptr[T any](in T) *T {\n\treturn &in\n}\n\ntype encoder interface {\n\tEncode(v any) error\n}\n\n// gojsonEvent matches the format from go internals\n// https://github.com/golang/go/blob/master/src/cmd/internal/test2json/test2json.go#L31-L41\n// https://pkg.go.dev/cmd/test2json\ntype gojsonEvent struct {\n\tTime        *time.Time `json:\",omitempty\"`\n\tAction      GoJSONAction\n\tPackage     string   `json:\",omitempty\"`\n\tTest        string   `json:\",omitempty\"`\n\tElapsed     *float64 `json:\",omitempty\"`\n\tOutput      *string  `json:\",omitempty\"`\n\tFailedBuild string   `json:\",omitempty\"`\n}\n\ntype GoJSONAction string\n\nconst (\n\t// start  - the test binary is about to be executed\n\tGoJSONStart GoJSONAction = \"start\"\n\t// run    - the test has started running\n\tGoJSONRun GoJSONAction = \"run\"\n\t// pause  - the test has been paused\n\tGoJSONPause GoJSONAction = \"pause\"\n\t// cont   - the test has continued running\n\tGoJSONCont GoJSONAction = \"cont\"\n\t// pass   - the test passed\n\tGoJSONPass GoJSONAction = \"pass\"\n\t// bench  - the benchmark printed log output but did not fail\n\tGoJSONBench GoJSONAction = \"bench\"\n\t// fail   - the test or benchmark failed\n\tGoJSONFail GoJSONAction = \"fail\"\n\t// output - the test printed output\n\tGoJSONOutput GoJSONAction = \"output\"\n\t// skip   - the test was skipped or the package contained no tests\n\tGoJSONSkip GoJSONAction = \"skip\"\n)\n\nfunc goJSONActionFromSpecState(state types.SpecState) GoJSONAction {\n\tswitch state {\n\tcase types.SpecStateInvalid:\n\t\treturn GoJSONFail\n\tcase types.SpecStatePending:\n\t\treturn GoJSONSkip\n\tcase types.SpecStateSkipped:\n\t\treturn GoJSONSkip\n\tcase types.SpecStatePassed:\n\t\treturn GoJSONPass\n\tcase types.SpecStateFailed:\n\t\treturn GoJSONFail\n\tcase types.SpecStateAborted:\n\t\treturn GoJSONFail\n\tcase types.SpecStatePanicked:\n\t\treturn GoJSONFail\n\tcase types.SpecStateInterrupted:\n\t\treturn GoJSONFail\n\tcase types.SpecStateTimedout:\n\t\treturn GoJSONFail\n\tdefault:\n\t\tpanic(\"unexpected state should not happen\")\n\t}\n}\n\n// gojsonReport wraps types.Report and calcualtes extra fields requires by gojson\ntype gojsonReport struct {\n\to types.Report\n\t// Extra calculated fields\n\tgoPkg   string\n\telapsed float64\n}\n\nfunc newReport(in types.Report) *gojsonReport {\n\treturn &gojsonReport{\n\t\to: in,\n\t}\n}\n\nfunc (r *gojsonReport) Fill() error {\n\t// NOTE: could the types.Report include the go package name?\n\tgoPkg, err := suitePathToPkg(r.o.SuitePath)\n\tif err != nil {\n\t\treturn err\n\t}\n\tr.goPkg = goPkg\n\tr.elapsed = r.o.RunTime.Seconds()\n\treturn nil\n}\n\n// gojsonSpecReport wraps types.SpecReport and calculates extra fields required by gojson\ntype gojsonSpecReport struct {\n\to types.SpecReport\n\t// extra calculated fields\n\ttestName string\n\telapsed  float64\n\taction   GoJSONAction\n}\n\nfunc newSpecReport(in types.SpecReport) *gojsonSpecReport {\n\treturn &gojsonSpecReport{\n\t\to: in,\n\t}\n}\n\nfunc (sr *gojsonSpecReport) Fill() error {\n\tsr.elapsed = sr.o.RunTime.Seconds()\n\tsr.testName = createTestName(sr.o)\n\tsr.action = goJSONActionFromSpecState(sr.o.State)\n\treturn nil\n}\n\nfunc suitePathToPkg(dir string) (string, error) {\n\tcfg := &packages.Config{\n\t\tMode: packages.NeedFiles | packages.NeedSyntax,\n\t}\n\tpkgs, err := packages.Load(cfg, dir)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tif len(pkgs) != 1 {\n\t\treturn \"\", errors.New(\"error\")\n\t}\n\treturn pkgs[0].ID, nil\n}\n\nfunc createTestName(spec types.SpecReport) string {\n\tname := fmt.Sprintf(\"[%s]\", spec.LeafNodeType)\n\tif spec.FullText() != \"\" {\n\t\tname = name + \" \" + spec.FullText()\n\t}\n\tlabels := spec.Labels()\n\tif len(labels) > 0 {\n\t\tname = name + \" [\" + strings.Join(labels, \", \") + \"]\"\n\t}\n\tsemVerConstraints := spec.SemVerConstraints()\n\tif len(semVerConstraints) > 0 {\n\t\tname = name + \" [\" + strings.Join(semVerConstraints, \", \") + \"]\"\n\t}\n\tcomponentSemVerConstraints := spec.ComponentSemVerConstraints()\n\tif len(componentSemVerConstraints) > 0 {\n\t\tname = name + \" [\" + formatComponentSemVerConstraintsToString(componentSemVerConstraints) + \"]\"\n\t}\n\tname = strings.TrimSpace(name)\n\treturn name\n}\n\nfunc formatComponentSemVerConstraintsToString(componentSemVerConstraints map[string][]string) string {\n\tvar tmpStr string\n\tfor component, semVerConstraints := range componentSemVerConstraints {\n\t\ttmpStr = tmpStr + fmt.Sprintf(\"%s: %s, \", component, semVerConstraints)\n\t}\n\ttmpStr = strings.TrimSuffix(tmpStr, \", \")\n\treturn tmpStr\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/internal/reporters/gojson_event_writer.go",
    "content": "package reporters\n\ntype GoJSONEventWriter struct {\n\tenc encoder\n\tspecSystemErrFn specSystemExtractFn\n\tspecSystemOutFn specSystemExtractFn\n}\n\nfunc NewGoJSONEventWriter(enc encoder, errFn specSystemExtractFn, outFn specSystemExtractFn) *GoJSONEventWriter {\n\treturn &GoJSONEventWriter{\n\t\tenc: enc,\n\t\tspecSystemErrFn: errFn,\n\t\tspecSystemOutFn: outFn,\n\t}\n}\n\nfunc (r *GoJSONEventWriter) writeEvent(e *gojsonEvent) error {\n\treturn r.enc.Encode(e)\n}\n\nfunc (r *GoJSONEventWriter) WriteSuiteStart(report *gojsonReport) error {\n\te := &gojsonEvent{\n\t\tTime:        &report.o.StartTime,\n\t\tAction:      GoJSONStart,\n\t\tPackage:     report.goPkg,\n\t\tOutput:      nil,\n\t\tFailedBuild: \"\",\n\t}\n\treturn r.writeEvent(e)\n}\n\nfunc (r *GoJSONEventWriter) WriteSuiteResult(report *gojsonReport) error {\n\tvar action GoJSONAction\n\tswitch {\n\tcase report.o.PreRunStats.SpecsThatWillRun == 0:\n\t\taction = GoJSONSkip\n\tcase report.o.SuiteSucceeded:\n\t\taction = GoJSONPass\n\tdefault:\n\t\taction = GoJSONFail\n\t}\n\te := &gojsonEvent{\n\t\tTime:        &report.o.EndTime,\n\t\tAction:      action,\n\t\tPackage:     report.goPkg,\n\t\tOutput:      nil,\n\t\tFailedBuild: \"\",\n\t\tElapsed:     ptr(report.elapsed),\n\t}\n\treturn r.writeEvent(e)\n}\n\nfunc (r *GoJSONEventWriter) WriteSpecStart(report *gojsonReport, specReport *gojsonSpecReport) error {\n\te := &gojsonEvent{\n\t\tTime:        &specReport.o.StartTime,\n\t\tAction:      GoJSONRun,\n\t\tTest:        specReport.testName,\n\t\tPackage:     report.goPkg,\n\t\tOutput:      nil,\n\t\tFailedBuild: \"\",\n\t}\n\treturn r.writeEvent(e)\n}\n\nfunc (r *GoJSONEventWriter) WriteSpecOut(report *gojsonReport, specReport *gojsonSpecReport) error {\n\tevents := []*gojsonEvent{}\n\n\tstdErr := r.specSystemErrFn(specReport.o)\n\tif stdErr != \"\" {\n\t\tevents = append(events, &gojsonEvent{\n\t\t\tTime:        &specReport.o.EndTime,\n\t\t\tAction:      GoJSONOutput,\n\t\t\tTest:        specReport.testName,\n\t\t\tPackage:     report.goPkg,\n\t\t\tOutput:      ptr(stdErr),\n\t\t\tFailedBuild: \"\",\n\t\t})\n\t}\n\tstdOut := r.specSystemOutFn(specReport.o)\n\tif stdOut != \"\" {\n\t\tevents = append(events, &gojsonEvent{\n\t\t\tTime:        &specReport.o.EndTime,\n\t\t\tAction:      GoJSONOutput,\n\t\t\tTest:        specReport.testName,\n\t\t\tPackage:     report.goPkg,\n\t\t\tOutput:      ptr(stdOut),\n\t\t\tFailedBuild: \"\",\n\t\t})\n\t}\n\n\tfor _, ev := range events {\n\t\terr := r.writeEvent(ev)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (r *GoJSONEventWriter) WriteSpecResult(report *gojsonReport, specReport *gojsonSpecReport) error {\n\te := &gojsonEvent{\n\t\tTime:        &specReport.o.EndTime,\n\t\tAction:      specReport.action,\n\t\tTest:        specReport.testName,\n\t\tPackage:     report.goPkg,\n\t\tElapsed:     ptr(specReport.elapsed),\n\t\tOutput:      nil,\n\t\tFailedBuild: \"\",\n\t}\n\treturn r.writeEvent(e)\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/internal/reporters/gojson_reporter.go",
    "content": "package reporters\n\nimport (\n\t\"github.com/onsi/ginkgo/v2/types\"\n)\n\ntype GoJSONReporter struct {\n\tev *GoJSONEventWriter\n}\n\ntype specSystemExtractFn func (spec types.SpecReport) string\n\nfunc NewGoJSONReporter(enc encoder, errFn specSystemExtractFn, outFn specSystemExtractFn) *GoJSONReporter {\n\treturn &GoJSONReporter{\n\t\tev: NewGoJSONEventWriter(enc, errFn, outFn),\n\t}\n}\n\nfunc (r *GoJSONReporter) Write(originalReport types.Report) error {\n\t// suite start events\n\treport := newReport(originalReport)\n\terr := report.Fill()\n\tif err != nil {\n\t\treturn err\n\t}\n\tr.ev.WriteSuiteStart(report)\n\tfor _, originalSpecReport := range originalReport.SpecReports {\n\t\tspecReport := newSpecReport(originalSpecReport)\n\t\terr := specReport.Fill()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif specReport.o.LeafNodeType == types.NodeTypeIt {\n\t\t\t// handle any It leaf node as a spec\n\t\t\tr.ev.WriteSpecStart(report, specReport)\n\t\t\tr.ev.WriteSpecOut(report, specReport)\n\t\t\tr.ev.WriteSpecResult(report, specReport)\n\t\t} else {\n\t\t\t// handle any other leaf node as generic output\n\t\t\tr.ev.WriteSpecOut(report, specReport)\n\t\t}\n\t}\n\tr.ev.WriteSuiteResult(report)\n\treturn nil\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/internal/spec.go",
    "content": "package internal\n\nimport (\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/onsi/ginkgo/v2/types\"\n)\n\ntype Spec struct {\n\tNodes Nodes\n\tSkip  bool\n}\n\nfunc (s Spec) SubjectID() uint {\n\treturn s.Nodes.FirstNodeWithType(types.NodeTypeIt).ID\n}\n\nfunc (s Spec) Text() string {\n\ttexts := []string{}\n\tfor i := range s.Nodes {\n\t\tif s.Nodes[i].Text != \"\" {\n\t\t\ttexts = append(texts, s.Nodes[i].Text)\n\t\t}\n\t}\n\treturn strings.Join(texts, \" \")\n}\n\nfunc (s Spec) FirstNodeWithType(nodeTypes types.NodeType) Node {\n\treturn s.Nodes.FirstNodeWithType(nodeTypes)\n}\n\nfunc (s Spec) FlakeAttempts() int {\n\tflakeAttempts := 0\n\tfor i := range s.Nodes {\n\t\tif s.Nodes[i].FlakeAttempts > 0 {\n\t\t\tflakeAttempts = s.Nodes[i].FlakeAttempts\n\t\t}\n\t}\n\n\treturn flakeAttempts\n}\n\nfunc (s Spec) MustPassRepeatedly() int {\n\tmustPassRepeatedly := 0\n\tfor i := range s.Nodes {\n\t\tif s.Nodes[i].MustPassRepeatedly > 0 {\n\t\t\tmustPassRepeatedly = s.Nodes[i].MustPassRepeatedly\n\t\t}\n\t}\n\n\treturn mustPassRepeatedly\n}\n\nfunc (s Spec) SpecTimeout() time.Duration {\n\treturn s.FirstNodeWithType(types.NodeTypeIt).SpecTimeout\n}\n\ntype Specs []Spec\n\nfunc (s Specs) HasAnySpecsMarkedPending() bool {\n\tfor i := range s {\n\t\tif s[i].Nodes.HasNodeMarkedPending() {\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn false\n}\n\nfunc (s Specs) CountWithoutSkip() int {\n\tn := 0\n\tfor i := range s {\n\t\tif !s[i].Skip {\n\t\t\tn += 1\n\t\t}\n\t}\n\treturn n\n}\n\nfunc (s Specs) AtIndices(indices SpecIndices) Specs {\n\tout := make(Specs, len(indices))\n\tfor i, idx := range indices {\n\t\tout[i] = s[idx]\n\t}\n\treturn out\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/internal/spec_context.go",
    "content": "package internal\n\nimport (\n\t\"context\"\n\t\"reflect\"\n\n\t\"github.com/onsi/ginkgo/v2/types\"\n)\n\ntype SpecContext interface {\n\tcontext.Context\n\n\tSpecReport() types.SpecReport\n\tAttachProgressReporter(func() string) func()\n\tWrappedContext() context.Context\n}\n\ntype specContext struct {\n\tcontext.Context\n\t*ProgressReporterManager\n\n\tcancel context.CancelCauseFunc\n\n\tsuite *Suite\n}\n\n/*\nSpecContext includes a reference to `suite` and embeds itself in itself as a \"GINKGO_SPEC_CONTEXT\" value.  This allows users to create child Contexts without having down-stream consumers (e.g. Gomega) lose access to the SpecContext and its methods.  This allows us to build extensions on top of Ginkgo that simply take an all-encompassing context.\n\nNote that while SpecContext is used to enforce deadlines by Ginkgo it is not configured as a context.WithDeadline.  Instead, Ginkgo owns responsibility for cancelling the context when the deadline elapses.\n\nThis is because Ginkgo needs finer control over when the context is canceled.  Specifically, Ginkgo needs to generate a ProgressReport before it cancels the context to ensure progress is captured where the spec is currently running.  The only way to avoid a race here is to manually control the cancellation.\n*/\nfunc NewSpecContext(suite *Suite) *specContext {\n\tctx, cancel := context.WithCancelCause(context.Background())\n\tsc := &specContext{\n\t\tcancel:                  cancel,\n\t\tsuite:                   suite,\n\t\tProgressReporterManager: NewProgressReporterManager(),\n\t}\n\tctx = context.WithValue(ctx, \"GINKGO_SPEC_CONTEXT\", sc) //yes, yes, the go docs say don't use a string for a key... but we'd rather avoid a circular dependency between Gomega and Ginkgo\n\tsc.Context = ctx                                        //thank goodness for garbage collectors that can handle circular dependencies\n\n\treturn sc\n}\n\nfunc (sc *specContext) SpecReport() types.SpecReport {\n\treturn sc.suite.CurrentSpecReport()\n}\n\nfunc (sc *specContext) WrappedContext() context.Context {\n\treturn sc.Context\n}\n\n/*\nThe user is allowed to wrap `SpecContext` in a new context.Context when using AroundNodes.  But body functions expect SpecContext.\nWe support this by taking their context.Context and returning a SpecContext that wraps it.\n*/\nfunc wrapContextChain(ctx context.Context) SpecContext {\n\tif ctx == nil {\n\t\treturn nil\n\t}\n\tif reflect.TypeOf(ctx) == reflect.TypeOf(&specContext{}) {\n\t\treturn ctx.(*specContext)\n\t} else if sc, ok := ctx.Value(\"GINKGO_SPEC_CONTEXT\").(*specContext); ok {\n\t\treturn &specContext{\n\t\t\tContext:                 ctx,\n\t\t\tProgressReporterManager: sc.ProgressReporterManager,\n\t\t\tcancel:                  sc.cancel,\n\t\t\tsuite:                   sc.suite,\n\t\t}\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/internal/suite.go",
    "content": "package internal\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"sync\"\n\t\"time\"\n\n\t\"github.com/onsi/ginkgo/v2/internal/interrupt_handler\"\n\t\"github.com/onsi/ginkgo/v2/internal/parallel_support\"\n\t\"github.com/onsi/ginkgo/v2/reporters\"\n\t\"github.com/onsi/ginkgo/v2/types\"\n)\n\ntype Phase uint\n\nconst (\n\tPhaseBuildTopLevel Phase = iota\n\tPhaseBuildTree\n\tPhaseRun\n)\n\nconst ProgressReporterDeadline = 5 * time.Second\n\ntype Suite struct {\n\ttree               *TreeNode\n\ttopLevelContainers Nodes\n\n\t*ProgressReporterManager\n\n\tphase Phase\n\n\tsuiteNodes   Nodes\n\tcleanupNodes Nodes\n\taroundNodes  types.AroundNodes\n\n\tfailer            *Failer\n\treporter          reporters.Reporter\n\twriter            WriterInterface\n\toutputInterceptor OutputInterceptor\n\tinterruptHandler  interrupt_handler.InterruptHandlerInterface\n\tconfig            types.SuiteConfig\n\tdeadline          time.Time\n\n\tcurrentConstructionNodeReport *types.ConstructionNodeReport\n\n\tskipAll              bool\n\treport               types.Report\n\tcurrentSpecReport    types.SpecReport\n\tcurrentNode          Node\n\tcurrentNodeStartTime time.Time\n\n\tcurrentSpecContext *specContext\n\n\tcurrentByStep types.SpecEvent\n\ttimelineOrder int\n\n\t/*\n\t\tWe don't need to lock around all operations.  Just those that *could* happen concurrently.\n\n\t\tSuite, generally, only runs one node at a time - and so the possibiity for races is small.  In fact, the presence of a race usually indicates the user has launched a goroutine that has leaked past the node it was launched in.\n\n\t\tHowever, there are some operations that can happen concurrently:\n\n\t\t- AddReportEntry and CurrentSpecReport can be accessed at any point by the user - including in goroutines that outlive the node intentionally (see, e.g. #1020).  They both form a self-contained read-write pair and so a lock in them is sufficent.\n\t\t- generateProgressReport can be invoked at any point in time by an interrupt or a progres poll.  Moreover, it requires access to currentSpecReport, currentNode, currentNodeStartTime, and progressStepCursor.  To make it threadsafe we need to lock around generateProgressReport when we read those variables _and_ everywhere those variables are *written*.  In general we don't need to worry about all possible field writes to these variables as what `generateProgressReport` does with these variables is fairly selective (hence the name of the lock).  Specifically, we dont' need to lock around state and failure message changes on `currentSpecReport` - just the setting of the variable itself.\n\t*/\n\tselectiveLock *sync.Mutex\n\n\tclient parallel_support.Client\n}\n\nfunc NewSuite() *Suite {\n\treturn &Suite{\n\t\ttree:                    &TreeNode{},\n\t\tphase:                   PhaseBuildTopLevel,\n\t\tProgressReporterManager: NewProgressReporterManager(),\n\n\t\tselectiveLock: &sync.Mutex{},\n\t}\n}\n\nfunc (suite *Suite) Clone() (*Suite, error) {\n\tif suite.phase != PhaseBuildTopLevel {\n\t\treturn nil, fmt.Errorf(\"cannot clone suite after tree has been built\")\n\t}\n\treturn &Suite{\n\t\ttree:                    &TreeNode{},\n\t\tphase:                   PhaseBuildTopLevel,\n\t\tProgressReporterManager: NewProgressReporterManager(),\n\t\ttopLevelContainers:      suite.topLevelContainers.Clone(),\n\t\tsuiteNodes:              suite.suiteNodes.Clone(),\n\t\taroundNodes:             suite.aroundNodes.Clone(),\n\t\tselectiveLock:           &sync.Mutex{},\n\t}, nil\n}\n\nfunc (suite *Suite) BuildTree() error {\n\t// During PhaseBuildTopLevel, the top level containers are stored in suite.topLevelCotainers and entered\n\t// We now enter PhaseBuildTree where these top level containers are entered and added to the spec tree\n\tsuite.phase = PhaseBuildTree\n\tfor _, topLevelContainer := range suite.topLevelContainers {\n\t\terr := suite.PushNode(topLevelContainer)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (suite *Suite) Run(description string, suiteLabels Labels, suiteSemVerConstraints SemVerConstraints, suiteComponentSemVerConstraints ComponentSemVerConstraints, suiteAroundNodes types.AroundNodes, suitePath string, failer *Failer, reporter reporters.Reporter, writer WriterInterface, outputInterceptor OutputInterceptor, interruptHandler interrupt_handler.InterruptHandlerInterface, client parallel_support.Client, progressSignalRegistrar ProgressSignalRegistrar, suiteConfig types.SuiteConfig) (bool, bool) {\n\tif suite.phase != PhaseBuildTree {\n\t\tpanic(\"cannot run before building the tree = call suite.BuildTree() first\")\n\t}\n\tApplyNestedFocusPolicyToTree(suite.tree)\n\tspecs := GenerateSpecsFromTreeRoot(suite.tree)\n\tspecs, hasProgrammaticFocus := ApplyFocusToSpecs(specs, description, suiteLabels, suiteSemVerConstraints, suiteComponentSemVerConstraints, suiteConfig)\n\tspecs = ComputeAroundNodes(specs)\n\n\tsuite.phase = PhaseRun\n\tsuite.client = client\n\tsuite.failer = failer\n\tsuite.reporter = reporter\n\tsuite.writer = writer\n\tsuite.outputInterceptor = outputInterceptor\n\tsuite.interruptHandler = interruptHandler\n\tsuite.config = suiteConfig\n\tsuite.aroundNodes = suiteAroundNodes\n\n\tif suite.config.Timeout > 0 {\n\t\tsuite.deadline = time.Now().Add(suite.config.Timeout)\n\t}\n\n\tcancelProgressHandler := progressSignalRegistrar(suite.handleProgressSignal)\n\n\tsuccess := suite.runSpecs(description, suiteLabels, suiteSemVerConstraints, suiteComponentSemVerConstraints, suitePath, hasProgrammaticFocus, specs)\n\n\tcancelProgressHandler()\n\n\treturn success, hasProgrammaticFocus\n}\n\nfunc (suite *Suite) InRunPhase() bool {\n\treturn suite.phase == PhaseRun\n}\n\n/*\n  Tree Construction methods\n\n  PushNode is used during PhaseBuildTopLevel and PhaseBuildTree\n*/\n\nfunc (suite *Suite) PushNode(node Node) error {\n\tif node.NodeType.Is(types.NodeTypeCleanupInvalid | types.NodeTypeCleanupAfterEach | types.NodeTypeCleanupAfterAll | types.NodeTypeCleanupAfterSuite) {\n\t\treturn suite.pushCleanupNode(node)\n\t}\n\n\tif node.NodeType.Is(types.NodeTypeBeforeSuite | types.NodeTypeAfterSuite | types.NodeTypeSynchronizedBeforeSuite | types.NodeTypeSynchronizedAfterSuite | types.NodeTypeBeforeSuite | types.NodeTypeReportBeforeSuite | types.NodeTypeReportAfterSuite) {\n\t\treturn suite.pushSuiteNode(node)\n\t}\n\n\tif suite.phase == PhaseRun {\n\t\treturn types.GinkgoErrors.PushingNodeInRunPhase(node.NodeType, node.CodeLocation)\n\t}\n\n\tif node.MarkedSerial {\n\t\tfirstOrderedNode := suite.tree.AncestorNodeChain().FirstNodeMarkedOrdered()\n\t\tif !firstOrderedNode.IsZero() && !firstOrderedNode.MarkedSerial {\n\t\t\treturn types.GinkgoErrors.InvalidSerialNodeInNonSerialOrderedContainer(node.CodeLocation, node.NodeType)\n\t\t}\n\t}\n\n\tif node.NodeType.Is(types.NodeTypeBeforeAll | types.NodeTypeAfterAll) {\n\t\tfirstOrderedNode := suite.tree.AncestorNodeChain().FirstNodeMarkedOrdered()\n\t\tif firstOrderedNode.IsZero() {\n\t\t\treturn types.GinkgoErrors.SetupNodeNotInOrderedContainer(node.CodeLocation, node.NodeType)\n\t\t}\n\t}\n\n\tif node.MarkedContinueOnFailure {\n\t\tfirstOrderedNode := suite.tree.AncestorNodeChain().FirstNodeMarkedOrdered()\n\t\tif !firstOrderedNode.IsZero() {\n\t\t\treturn types.GinkgoErrors.InvalidContinueOnFailureDecoration(node.CodeLocation)\n\t\t}\n\t}\n\n\tif node.NodeType == types.NodeTypeContainer {\n\t\t// During PhaseBuildTopLevel we only track the top level containers without entering them\n\t\t// We only enter the top level container nodes during PhaseBuildTree\n\t\t//\n\t\t// This ensures the tree is only constructed after `go spec` has called `flag.Parse()` and gives\n\t\t// the user an opportunity to load suiteConfiguration information in the `TestX` go spec hook just before `RunSpecs`\n\t\t// is invoked.  This makes the lifecycle easier to reason about and solves issues like #693.\n\t\tif suite.phase == PhaseBuildTopLevel {\n\t\t\tsuite.topLevelContainers = append(suite.topLevelContainers, node)\n\t\t\treturn nil\n\t\t}\n\t\tif suite.phase == PhaseBuildTree {\n\t\t\tparentTree := suite.tree\n\t\t\tsuite.tree = &TreeNode{Node: node}\n\t\t\tparentTree.AppendChild(suite.tree)\n\t\t\terr := func() (err error) {\n\t\t\t\tdefer func() {\n\t\t\t\t\tif e := recover(); e != nil {\n\t\t\t\t\t\terr = types.GinkgoErrors.CaughtPanicDuringABuildPhase(e, node.CodeLocation)\n\t\t\t\t\t}\n\t\t\t\t}()\n\n\t\t\t\t// Ensure that code running in the body of the container node\n\t\t\t\t// has access to information about the current container node(s).\n\t\t\t\t// The current one (nil in top-level container nodes, non-nil in an\n\t\t\t\t// embedded container node) gets restored when the node is done.\n\t\t\t\toldConstructionNodeReport := suite.currentConstructionNodeReport\n\t\t\t\tsuite.currentConstructionNodeReport = constructionNodeReportForTreeNode(suite.tree)\n\t\t\t\tdefer func() {\n\t\t\t\t\tsuite.currentConstructionNodeReport = oldConstructionNodeReport\n\t\t\t\t}()\n\n\t\t\t\tnode.Body(nil)\n\t\t\t\treturn err\n\t\t\t}()\n\t\t\tsuite.tree = parentTree\n\t\t\treturn err\n\t\t}\n\t} else {\n\t\tsuite.tree.AppendChild(&TreeNode{Node: node})\n\t\treturn nil\n\t}\n\n\treturn nil\n}\n\nfunc (suite *Suite) pushSuiteNode(node Node) error {\n\tif suite.phase == PhaseBuildTree {\n\t\treturn types.GinkgoErrors.SuiteNodeInNestedContext(node.NodeType, node.CodeLocation)\n\t}\n\n\tif suite.phase == PhaseRun {\n\t\treturn types.GinkgoErrors.SuiteNodeDuringRunPhase(node.NodeType, node.CodeLocation)\n\t}\n\n\tswitch node.NodeType {\n\tcase types.NodeTypeBeforeSuite, types.NodeTypeSynchronizedBeforeSuite:\n\t\texistingBefores := suite.suiteNodes.WithType(types.NodeTypeBeforeSuite | types.NodeTypeSynchronizedBeforeSuite)\n\t\tif len(existingBefores) > 0 {\n\t\t\treturn types.GinkgoErrors.MultipleBeforeSuiteNodes(node.NodeType, node.CodeLocation, existingBefores[0].NodeType, existingBefores[0].CodeLocation)\n\t\t}\n\tcase types.NodeTypeAfterSuite, types.NodeTypeSynchronizedAfterSuite:\n\t\texistingAfters := suite.suiteNodes.WithType(types.NodeTypeAfterSuite | types.NodeTypeSynchronizedAfterSuite)\n\t\tif len(existingAfters) > 0 {\n\t\t\treturn types.GinkgoErrors.MultipleAfterSuiteNodes(node.NodeType, node.CodeLocation, existingAfters[0].NodeType, existingAfters[0].CodeLocation)\n\t\t}\n\t}\n\n\tsuite.suiteNodes = append(suite.suiteNodes, node)\n\treturn nil\n}\n\nfunc (suite *Suite) pushCleanupNode(node Node) error {\n\tif suite.phase != PhaseRun || suite.currentNode.IsZero() {\n\t\treturn types.GinkgoErrors.PushingCleanupNodeDuringTreeConstruction(node.CodeLocation)\n\t}\n\n\tswitch suite.currentNode.NodeType {\n\tcase types.NodeTypeBeforeSuite, types.NodeTypeSynchronizedBeforeSuite, types.NodeTypeAfterSuite, types.NodeTypeSynchronizedAfterSuite:\n\t\tnode.NodeType = types.NodeTypeCleanupAfterSuite\n\tcase types.NodeTypeBeforeAll, types.NodeTypeAfterAll:\n\t\tnode.NodeType = types.NodeTypeCleanupAfterAll\n\tcase types.NodeTypeReportBeforeEach, types.NodeTypeReportAfterEach, types.NodeTypeReportBeforeSuite, types.NodeTypeReportAfterSuite:\n\t\treturn types.GinkgoErrors.PushingCleanupInReportingNode(node.CodeLocation, suite.currentNode.NodeType)\n\tcase types.NodeTypeCleanupInvalid, types.NodeTypeCleanupAfterEach, types.NodeTypeCleanupAfterAll, types.NodeTypeCleanupAfterSuite:\n\t\treturn types.GinkgoErrors.PushingCleanupInCleanupNode(node.CodeLocation)\n\tdefault:\n\t\tnode.NodeType = types.NodeTypeCleanupAfterEach\n\t}\n\n\tnode.NodeIDWhereCleanupWasGenerated = suite.currentNode.ID\n\tnode.NestingLevel = suite.currentNode.NestingLevel\n\tnode.AroundNodes = types.AroundNodes{}.Append(suite.currentNode.AroundNodes...).Append(node.AroundNodes...)\n\tsuite.selectiveLock.Lock()\n\tsuite.cleanupNodes = append(suite.cleanupNodes, node)\n\tsuite.selectiveLock.Unlock()\n\n\treturn nil\n}\n\nfunc (suite *Suite) generateTimelineLocation() types.TimelineLocation {\n\tsuite.selectiveLock.Lock()\n\tdefer suite.selectiveLock.Unlock()\n\n\tsuite.timelineOrder += 1\n\treturn types.TimelineLocation{\n\t\tOffset: len(suite.currentSpecReport.CapturedGinkgoWriterOutput) + suite.writer.Len(),\n\t\tOrder:  suite.timelineOrder,\n\t\tTime:   time.Now(),\n\t}\n}\n\nfunc (suite *Suite) handleSpecEvent(event types.SpecEvent) types.SpecEvent {\n\tevent.TimelineLocation = suite.generateTimelineLocation()\n\tsuite.selectiveLock.Lock()\n\tsuite.currentSpecReport.SpecEvents = append(suite.currentSpecReport.SpecEvents, event)\n\tsuite.selectiveLock.Unlock()\n\tsuite.reporter.EmitSpecEvent(event)\n\treturn event\n}\n\nfunc (suite *Suite) handleSpecEventEnd(eventType types.SpecEventType, startEvent types.SpecEvent) {\n\tevent := startEvent\n\tevent.SpecEventType = eventType\n\tevent.TimelineLocation = suite.generateTimelineLocation()\n\tevent.Duration = event.TimelineLocation.Time.Sub(startEvent.TimelineLocation.Time)\n\tsuite.selectiveLock.Lock()\n\tsuite.currentSpecReport.SpecEvents = append(suite.currentSpecReport.SpecEvents, event)\n\tsuite.selectiveLock.Unlock()\n\tsuite.reporter.EmitSpecEvent(event)\n}\n\nfunc (suite *Suite) By(text string, callback ...func()) error {\n\tcl := types.NewCodeLocation(2)\n\tif suite.phase != PhaseRun {\n\t\treturn types.GinkgoErrors.ByNotDuringRunPhase(cl)\n\t}\n\n\tevent := suite.handleSpecEvent(types.SpecEvent{\n\t\tSpecEventType: types.SpecEventByStart,\n\t\tCodeLocation:  cl,\n\t\tMessage:       text,\n\t})\n\tsuite.selectiveLock.Lock()\n\tsuite.currentByStep = event\n\tsuite.selectiveLock.Unlock()\n\n\tif len(callback) == 1 {\n\t\tdefer func() {\n\t\t\tsuite.selectiveLock.Lock()\n\t\t\tsuite.currentByStep = types.SpecEvent{}\n\t\t\tsuite.selectiveLock.Unlock()\n\t\t\tsuite.handleSpecEventEnd(types.SpecEventByEnd, event)\n\t\t}()\n\t\tcallback[0]()\n\t} else if len(callback) > 1 {\n\t\tpanic(\"just one callback per By, please\")\n\t}\n\treturn nil\n}\n\nfunc (suite *Suite) CurrentConstructionNodeReport() types.ConstructionNodeReport {\n\tsuite.selectiveLock.Lock()\n\tdefer suite.selectiveLock.Unlock()\n\treport := suite.currentConstructionNodeReport\n\tif report == nil {\n\t\tpanic(\"CurrentConstructionNodeReport may only be called during construction of the spec tree\")\n\t}\n\treturn *report\n}\n\n/*\nSpec Running methods - used during PhaseRun\n*/\nfunc (suite *Suite) CurrentSpecReport() types.SpecReport {\n\tsuite.selectiveLock.Lock()\n\tdefer suite.selectiveLock.Unlock()\n\treport := suite.currentSpecReport\n\tif suite.writer != nil {\n\t\treport.CapturedGinkgoWriterOutput = string(suite.writer.Bytes())\n\t}\n\treport.ReportEntries = make([]ReportEntry, len(report.ReportEntries))\n\tcopy(report.ReportEntries, suite.currentSpecReport.ReportEntries)\n\treturn report\n}\n\n// Only valid in the preview context.  In general suite.report only includes\n// the specs run by _this_ node - it is only at the end of the suite that\n// the parallel reports are aggregated.  However in the preview context we run\n// in series and\nfunc (suite *Suite) GetPreviewReport() types.Report {\n\tsuite.selectiveLock.Lock()\n\tdefer suite.selectiveLock.Unlock()\n\treturn suite.report\n}\n\nfunc (suite *Suite) AddReportEntry(entry ReportEntry) error {\n\tif suite.phase != PhaseRun {\n\t\treturn types.GinkgoErrors.AddReportEntryNotDuringRunPhase(entry.Location)\n\t}\n\tentry.TimelineLocation = suite.generateTimelineLocation()\n\tentry.Time = entry.TimelineLocation.Time\n\tsuite.selectiveLock.Lock()\n\tsuite.currentSpecReport.ReportEntries = append(suite.currentSpecReport.ReportEntries, entry)\n\tsuite.selectiveLock.Unlock()\n\tsuite.reporter.EmitReportEntry(entry)\n\treturn nil\n}\n\nfunc (suite *Suite) generateProgressReport(fullReport bool) types.ProgressReport {\n\ttimelineLocation := suite.generateTimelineLocation()\n\tsuite.selectiveLock.Lock()\n\tdefer suite.selectiveLock.Unlock()\n\n\tdeadline, cancel := context.WithTimeout(context.Background(), ProgressReporterDeadline)\n\tdefer cancel()\n\tvar additionalReports []string\n\tif suite.currentSpecContext != nil {\n\t\tadditionalReports = append(additionalReports, suite.currentSpecContext.QueryProgressReporters(deadline, suite.failer)...)\n\t}\n\tadditionalReports = append(additionalReports, suite.QueryProgressReporters(deadline, suite.failer)...)\n\tgwOutput := suite.currentSpecReport.CapturedGinkgoWriterOutput + string(suite.writer.Bytes())\n\tpr, err := NewProgressReport(suite.isRunningInParallel(), suite.currentSpecReport, suite.currentNode, suite.currentNodeStartTime, suite.currentByStep, gwOutput, timelineLocation, additionalReports, suite.config.SourceRoots, fullReport)\n\n\tif err != nil {\n\t\tfmt.Printf(\"{{red}}Failed to generate progress report:{{/}}\\n%s\\n\", err.Error())\n\t}\n\treturn pr\n}\n\nfunc (suite *Suite) handleProgressSignal() {\n\treport := suite.generateProgressReport(false)\n\treport.Message = \"{{bold}}You've requested a progress report:{{/}}\"\n\tsuite.emitProgressReport(report)\n}\n\nfunc (suite *Suite) emitProgressReport(report types.ProgressReport) {\n\tsuite.selectiveLock.Lock()\n\tsuite.currentSpecReport.ProgressReports = append(suite.currentSpecReport.ProgressReports, report.WithoutCapturedGinkgoWriterOutput())\n\tsuite.selectiveLock.Unlock()\n\n\tsuite.reporter.EmitProgressReport(report)\n\tif suite.isRunningInParallel() {\n\t\terr := suite.client.PostEmitProgressReport(report)\n\t\tif err != nil {\n\t\t\tfmt.Println(err.Error())\n\t\t}\n\t}\n}\n\nfunc (suite *Suite) isRunningInParallel() bool {\n\treturn suite.config.ParallelTotal > 1\n}\n\nfunc (suite *Suite) processCurrentSpecReport() {\n\tsuite.reporter.DidRun(suite.currentSpecReport)\n\tif suite.isRunningInParallel() {\n\t\tsuite.client.PostDidRun(suite.currentSpecReport)\n\t}\n\tsuite.report.SpecReports = append(suite.report.SpecReports, suite.currentSpecReport)\n\n\tif suite.currentSpecReport.State.Is(types.SpecStateFailureStates) {\n\t\tsuite.report.SuiteSucceeded = false\n\t\tif suite.config.FailFast || suite.currentSpecReport.State.Is(types.SpecStateAborted) {\n\t\t\tsuite.skipAll = true\n\t\t\tif suite.isRunningInParallel() {\n\t\t\t\tsuite.client.PostAbort()\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc (suite *Suite) runSpecs(description string, suiteLabels Labels, suiteSemVerConstraints SemVerConstraints, suiteComponentSemVerConstraints ComponentSemVerConstraints, suitePath string, hasProgrammaticFocus bool, specs Specs) bool {\n\tnumSpecsThatWillBeRun := specs.CountWithoutSkip()\n\n\tsuite.report = types.Report{\n\t\tSuitePath:                       suitePath,\n\t\tSuiteDescription:                description,\n\t\tSuiteLabels:                     suiteLabels,\n\t\tSuiteSemVerConstraints:          suiteSemVerConstraints,\n\t\tSuiteComponentSemVerConstraints: suiteComponentSemVerConstraints,\n\t\tSuiteConfig:                     suite.config,\n\t\tSuiteHasProgrammaticFocus:       hasProgrammaticFocus,\n\t\tPreRunStats: types.PreRunStats{\n\t\t\tTotalSpecs:       len(specs),\n\t\t\tSpecsThatWillRun: numSpecsThatWillBeRun,\n\t\t},\n\t\tStartTime: time.Now(),\n\t}\n\n\tsuite.reporter.SuiteWillBegin(suite.report)\n\tif suite.isRunningInParallel() {\n\t\tsuite.client.PostSuiteWillBegin(suite.report)\n\t}\n\n\tsuite.report.SuiteSucceeded = true\n\n\tsuite.runReportSuiteNodesIfNeedBe(types.NodeTypeReportBeforeSuite)\n\n\tranBeforeSuite := suite.report.SuiteSucceeded\n\tif suite.report.SuiteSucceeded {\n\t\tsuite.runBeforeSuite(numSpecsThatWillBeRun)\n\t}\n\n\tif suite.report.SuiteSucceeded {\n\t\tgroupedSpecIndices, serialGroupedSpecIndices := OrderSpecs(specs, suite.config)\n\t\tnextIndex := MakeIncrementingIndexCounter()\n\t\tif suite.isRunningInParallel() {\n\t\t\tnextIndex = suite.client.FetchNextCounter\n\t\t}\n\n\t\tfor {\n\t\t\tgroupedSpecIdx, err := nextIndex()\n\t\t\tif err != nil {\n\t\t\t\tsuite.report.SpecialSuiteFailureReasons = append(suite.report.SpecialSuiteFailureReasons, fmt.Sprintf(\"Failed to iterate over specs:\\n%s\", err.Error()))\n\t\t\t\tsuite.report.SuiteSucceeded = false\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tif groupedSpecIdx >= len(groupedSpecIndices) {\n\t\t\t\tif suite.config.ParallelProcess == 1 && len(serialGroupedSpecIndices) > 0 {\n\t\t\t\t\tgroupedSpecIndices, serialGroupedSpecIndices, nextIndex = serialGroupedSpecIndices, GroupedSpecIndices{}, MakeIncrementingIndexCounter()\n\t\t\t\t\tsuite.client.BlockUntilNonprimaryProcsHaveFinished()\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\t// the complexity for running groups of specs is very high because of Ordered containers and FlakeAttempts\n\t\t\t// we encapsulate that complexity in the notion of a Group that can run\n\t\t\t// Group is really just an extension of suite so it gets passed a suite and has access to all its internals\n\t\t\t// Note that group is stateful and intended for single use!\n\t\t\tnewGroup(suite).run(specs.AtIndices(groupedSpecIndices[groupedSpecIdx]))\n\t\t}\n\n\t\tif suite.config.FailOnPending && specs.HasAnySpecsMarkedPending() {\n\t\t\tsuite.report.SpecialSuiteFailureReasons = append(suite.report.SpecialSuiteFailureReasons, \"Detected pending specs and --fail-on-pending is set\")\n\t\t\tsuite.report.SuiteSucceeded = false\n\t\t}\n\n\t\tif suite.config.FailOnEmpty && specs.CountWithoutSkip() == 0 {\n\t\t\tsuite.report.SpecialSuiteFailureReasons = append(suite.report.SpecialSuiteFailureReasons, \"Detected no specs ran and --fail-on-empty is set\")\n\t\t\tsuite.report.SuiteSucceeded = false\n\t\t}\n\t}\n\n\tif ranBeforeSuite {\n\t\tsuite.runAfterSuiteCleanup(numSpecsThatWillBeRun)\n\t}\n\n\tinterruptStatus := suite.interruptHandler.Status()\n\tif interruptStatus.Interrupted() {\n\t\tsuite.report.SpecialSuiteFailureReasons = append(suite.report.SpecialSuiteFailureReasons, interruptStatus.Cause.String())\n\t\tsuite.report.SuiteSucceeded = false\n\t}\n\tsuite.report.EndTime = time.Now()\n\tsuite.report.RunTime = suite.report.EndTime.Sub(suite.report.StartTime)\n\tif !suite.deadline.IsZero() && suite.report.EndTime.After(suite.deadline) {\n\t\tsuite.report.SpecialSuiteFailureReasons = append(suite.report.SpecialSuiteFailureReasons, \"Suite Timeout Elapsed\")\n\t\tsuite.report.SuiteSucceeded = false\n\t}\n\n\tsuite.runReportSuiteNodesIfNeedBe(types.NodeTypeReportAfterSuite)\n\tsuite.reporter.SuiteDidEnd(suite.report)\n\tif suite.isRunningInParallel() {\n\t\tsuite.client.PostSuiteDidEnd(suite.report)\n\t}\n\n\treturn suite.report.SuiteSucceeded\n}\n\nfunc (suite *Suite) runBeforeSuite(numSpecsThatWillBeRun int) {\n\tbeforeSuiteNode := suite.suiteNodes.FirstNodeWithType(types.NodeTypeBeforeSuite | types.NodeTypeSynchronizedBeforeSuite)\n\tif !beforeSuiteNode.IsZero() && numSpecsThatWillBeRun > 0 {\n\t\tsuite.selectiveLock.Lock()\n\t\tsuite.currentSpecReport = types.SpecReport{\n\t\t\tLeafNodeType:      beforeSuiteNode.NodeType,\n\t\t\tLeafNodeLocation:  beforeSuiteNode.CodeLocation,\n\t\t\tParallelProcess:   suite.config.ParallelProcess,\n\t\t\tRunningInParallel: suite.isRunningInParallel(),\n\t\t}\n\t\tsuite.selectiveLock.Unlock()\n\n\t\tsuite.reporter.WillRun(suite.currentSpecReport)\n\t\tsuite.runSuiteNode(beforeSuiteNode)\n\t\tif suite.currentSpecReport.State.Is(types.SpecStateSkipped) {\n\t\t\tsuite.report.SpecialSuiteFailureReasons = append(suite.report.SpecialSuiteFailureReasons, \"Suite skipped in BeforeSuite\")\n\t\t\tsuite.skipAll = true\n\t\t}\n\t\tsuite.processCurrentSpecReport()\n\t}\n}\n\nfunc (suite *Suite) runAfterSuiteCleanup(numSpecsThatWillBeRun int) {\n\tafterSuiteNode := suite.suiteNodes.FirstNodeWithType(types.NodeTypeAfterSuite | types.NodeTypeSynchronizedAfterSuite)\n\tif !afterSuiteNode.IsZero() && numSpecsThatWillBeRun > 0 {\n\t\tsuite.selectiveLock.Lock()\n\t\tsuite.currentSpecReport = types.SpecReport{\n\t\t\tLeafNodeType:      afterSuiteNode.NodeType,\n\t\t\tLeafNodeLocation:  afterSuiteNode.CodeLocation,\n\t\t\tParallelProcess:   suite.config.ParallelProcess,\n\t\t\tRunningInParallel: suite.isRunningInParallel(),\n\t\t}\n\t\tsuite.selectiveLock.Unlock()\n\n\t\tsuite.reporter.WillRun(suite.currentSpecReport)\n\t\tsuite.runSuiteNode(afterSuiteNode)\n\t\tsuite.processCurrentSpecReport()\n\t}\n\n\tafterSuiteCleanup := suite.cleanupNodes.WithType(types.NodeTypeCleanupAfterSuite).Reverse()\n\tif len(afterSuiteCleanup) > 0 {\n\t\tfor _, cleanupNode := range afterSuiteCleanup {\n\t\t\tsuite.selectiveLock.Lock()\n\t\t\tsuite.currentSpecReport = types.SpecReport{\n\t\t\t\tLeafNodeType:      cleanupNode.NodeType,\n\t\t\t\tLeafNodeLocation:  cleanupNode.CodeLocation,\n\t\t\t\tParallelProcess:   suite.config.ParallelProcess,\n\t\t\t\tRunningInParallel: suite.isRunningInParallel(),\n\t\t\t}\n\t\t\tsuite.selectiveLock.Unlock()\n\n\t\t\tsuite.reporter.WillRun(suite.currentSpecReport)\n\t\t\tsuite.runSuiteNode(cleanupNode)\n\t\t\tsuite.processCurrentSpecReport()\n\t\t}\n\t}\n}\n\nfunc (suite *Suite) reportEach(spec Spec, nodeType types.NodeType) {\n\tnodes := spec.Nodes.WithType(nodeType)\n\tif nodeType == types.NodeTypeReportAfterEach {\n\t\tnodes = nodes.SortedByDescendingNestingLevel()\n\t}\n\tif nodeType == types.NodeTypeReportBeforeEach {\n\t\tnodes = nodes.SortedByAscendingNestingLevel()\n\t}\n\tif len(nodes) == 0 {\n\t\treturn\n\t}\n\n\tfor i := range nodes {\n\t\tsuite.writer.Truncate()\n\t\tsuite.outputInterceptor.StartInterceptingOutput()\n\t\treport := suite.currentSpecReport\n\t\tnodes[i].Body = func(ctx SpecContext) {\n\t\t\tnodes[i].ReportEachBody(ctx, report)\n\t\t}\n\t\tstate, failure := suite.runNode(nodes[i], time.Time{}, spec.Nodes.BestTextFor(nodes[i]))\n\n\t\t// If the spec is not in a failure state (i.e. it's Passed/Skipped/Pending) and the reporter has failed, override the state.\n\t\t// Also, if the reporter is every aborted - always override the state to propagate the abort\n\t\tif (!suite.currentSpecReport.State.Is(types.SpecStateFailureStates) && state.Is(types.SpecStateFailureStates)) || state.Is(types.SpecStateAborted) {\n\t\t\tsuite.currentSpecReport.State = state\n\t\t\tsuite.currentSpecReport.Failure = failure\n\t\t}\n\t\tsuite.currentSpecReport.CapturedGinkgoWriterOutput += string(suite.writer.Bytes())\n\t\tsuite.currentSpecReport.CapturedStdOutErr += suite.outputInterceptor.StopInterceptingAndReturnOutput()\n\t}\n}\n\nfunc (suite *Suite) runSuiteNode(node Node) {\n\tif suite.config.DryRun {\n\t\tsuite.currentSpecReport.State = types.SpecStatePassed\n\t\treturn\n\t}\n\n\tsuite.writer.Truncate()\n\tsuite.outputInterceptor.StartInterceptingOutput()\n\tsuite.currentSpecReport.StartTime = time.Now()\n\n\tvar err error\n\tswitch node.NodeType {\n\tcase types.NodeTypeBeforeSuite, types.NodeTypeAfterSuite:\n\t\tsuite.currentSpecReport.State, suite.currentSpecReport.Failure = suite.runNode(node, time.Time{}, \"\")\n\tcase types.NodeTypeCleanupAfterSuite:\n\t\tif suite.config.ParallelTotal > 1 && suite.config.ParallelProcess == 1 {\n\t\t\terr = suite.client.BlockUntilNonprimaryProcsHaveFinished()\n\t\t}\n\t\tif err == nil {\n\t\t\tsuite.currentSpecReport.State, suite.currentSpecReport.Failure = suite.runNode(node, time.Time{}, \"\")\n\t\t}\n\tcase types.NodeTypeSynchronizedBeforeSuite:\n\t\tvar data []byte\n\t\tvar runAllProcs bool\n\t\tif suite.config.ParallelProcess == 1 {\n\t\t\tif suite.config.ParallelTotal > 1 {\n\t\t\t\tsuite.outputInterceptor.StopInterceptingAndReturnOutput()\n\t\t\t\tsuite.outputInterceptor.StartInterceptingOutputAndForwardTo(suite.client)\n\t\t\t}\n\t\t\tnode.Body = func(c SpecContext) { data = node.SynchronizedBeforeSuiteProc1Body(c) }\n\t\t\tnode.HasContext = node.SynchronizedBeforeSuiteProc1BodyHasContext\n\t\t\tsuite.currentSpecReport.State, suite.currentSpecReport.Failure = suite.runNode(node, time.Time{}, \"\")\n\t\t\tif suite.config.ParallelTotal > 1 {\n\t\t\t\tsuite.currentSpecReport.CapturedStdOutErr += suite.outputInterceptor.StopInterceptingAndReturnOutput()\n\t\t\t\tsuite.outputInterceptor.StartInterceptingOutput()\n\t\t\t\tif suite.currentSpecReport.State.Is(types.SpecStatePassed) {\n\t\t\t\t\terr = suite.client.PostSynchronizedBeforeSuiteCompleted(types.SpecStatePassed, data)\n\t\t\t\t} else {\n\t\t\t\t\terr = suite.client.PostSynchronizedBeforeSuiteCompleted(suite.currentSpecReport.State, nil)\n\t\t\t\t}\n\t\t\t}\n\t\t\trunAllProcs = suite.currentSpecReport.State.Is(types.SpecStatePassed) && err == nil\n\t\t} else {\n\t\t\tvar proc1State types.SpecState\n\t\t\tproc1State, data, err = suite.client.BlockUntilSynchronizedBeforeSuiteData()\n\t\t\tswitch proc1State {\n\t\t\tcase types.SpecStatePassed:\n\t\t\t\trunAllProcs = true\n\t\t\tcase types.SpecStateFailed, types.SpecStatePanicked, types.SpecStateTimedout:\n\t\t\t\terr = types.GinkgoErrors.SynchronizedBeforeSuiteFailedOnProc1()\n\t\t\tcase types.SpecStateInterrupted, types.SpecStateAborted, types.SpecStateSkipped:\n\t\t\t\tsuite.currentSpecReport.State = proc1State\n\t\t\t}\n\t\t}\n\t\tif runAllProcs {\n\t\t\tnode.Body = func(c SpecContext) { node.SynchronizedBeforeSuiteAllProcsBody(c, data) }\n\t\t\tnode.HasContext = node.SynchronizedBeforeSuiteAllProcsBodyHasContext\n\t\t\tsuite.currentSpecReport.State, suite.currentSpecReport.Failure = suite.runNode(node, time.Time{}, \"\")\n\t\t}\n\tcase types.NodeTypeSynchronizedAfterSuite:\n\t\tnode.Body = node.SynchronizedAfterSuiteAllProcsBody\n\t\tnode.HasContext = node.SynchronizedAfterSuiteAllProcsBodyHasContext\n\t\tsuite.currentSpecReport.State, suite.currentSpecReport.Failure = suite.runNode(node, time.Time{}, \"\")\n\t\tif suite.config.ParallelProcess == 1 {\n\t\t\tif suite.config.ParallelTotal > 1 {\n\t\t\t\terr = suite.client.BlockUntilNonprimaryProcsHaveFinished()\n\t\t\t}\n\t\t\tif err == nil {\n\t\t\t\tif suite.config.ParallelTotal > 1 {\n\t\t\t\t\tsuite.currentSpecReport.CapturedStdOutErr += suite.outputInterceptor.StopInterceptingAndReturnOutput()\n\t\t\t\t\tsuite.outputInterceptor.StartInterceptingOutputAndForwardTo(suite.client)\n\t\t\t\t}\n\n\t\t\t\tnode.Body = node.SynchronizedAfterSuiteProc1Body\n\t\t\t\tnode.HasContext = node.SynchronizedAfterSuiteProc1BodyHasContext\n\t\t\t\tstate, failure := suite.runNode(node, time.Time{}, \"\")\n\t\t\t\tif suite.currentSpecReport.State.Is(types.SpecStatePassed) {\n\t\t\t\t\tsuite.currentSpecReport.State, suite.currentSpecReport.Failure = state, failure\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif err != nil && !suite.currentSpecReport.State.Is(types.SpecStateFailureStates) {\n\t\tsuite.currentSpecReport.State, suite.currentSpecReport.Failure = types.SpecStateFailed, suite.failureForLeafNodeWithMessage(node, err.Error())\n\t\tsuite.reporter.EmitFailure(suite.currentSpecReport.State, suite.currentSpecReport.Failure)\n\t}\n\n\tsuite.currentSpecReport.EndTime = time.Now()\n\tsuite.currentSpecReport.RunTime = suite.currentSpecReport.EndTime.Sub(suite.currentSpecReport.StartTime)\n\tsuite.currentSpecReport.CapturedGinkgoWriterOutput = string(suite.writer.Bytes())\n\tsuite.currentSpecReport.CapturedStdOutErr += suite.outputInterceptor.StopInterceptingAndReturnOutput()\n}\n\nfunc (suite *Suite) runReportSuiteNodesIfNeedBe(nodeType types.NodeType) {\n\tnodes := suite.suiteNodes.WithType(nodeType)\n\t// only run ReportAfterSuite on proc 1\n\tif nodeType.Is(types.NodeTypeReportAfterSuite) && suite.config.ParallelProcess != 1 {\n\t\treturn\n\t}\n\t// if we're running ReportBeforeSuite on proc > 1 - we should wait until proc 1 has completed\n\tif nodeType.Is(types.NodeTypeReportBeforeSuite) && suite.config.ParallelProcess != 1 && len(nodes) > 0 {\n\t\tstate, err := suite.client.BlockUntilReportBeforeSuiteCompleted()\n\t\tif err != nil || state.Is(types.SpecStateFailed) {\n\t\t\tsuite.report.SuiteSucceeded = false\n\t\t}\n\t\treturn\n\t}\n\n\tfor _, node := range nodes {\n\t\tsuite.selectiveLock.Lock()\n\t\tsuite.currentSpecReport = types.SpecReport{\n\t\t\tLeafNodeType:      node.NodeType,\n\t\t\tLeafNodeLocation:  node.CodeLocation,\n\t\t\tLeafNodeText:      node.Text,\n\t\t\tParallelProcess:   suite.config.ParallelProcess,\n\t\t\tRunningInParallel: suite.isRunningInParallel(),\n\t\t}\n\t\tsuite.selectiveLock.Unlock()\n\n\t\tsuite.reporter.WillRun(suite.currentSpecReport)\n\t\tsuite.runReportSuiteNode(node, suite.report)\n\t\tsuite.processCurrentSpecReport()\n\t}\n\n\t// if we're running ReportBeforeSuite and we're running in parallel - we shuld tell the other procs that we're done\n\tif nodeType.Is(types.NodeTypeReportBeforeSuite) && suite.isRunningInParallel() && len(nodes) > 0 {\n\t\tif suite.report.SuiteSucceeded {\n\t\t\tsuite.client.PostReportBeforeSuiteCompleted(types.SpecStatePassed)\n\t\t} else {\n\t\t\tsuite.client.PostReportBeforeSuiteCompleted(types.SpecStateFailed)\n\t\t}\n\t}\n}\n\nfunc (suite *Suite) runReportSuiteNode(node Node, report types.Report) {\n\tsuite.writer.Truncate()\n\tsuite.outputInterceptor.StartInterceptingOutput()\n\tsuite.currentSpecReport.StartTime = time.Now()\n\n\t// if we're running a ReportAfterSuite in parallel (on proc 1) we (a) wait until other procs have exited and\n\t// (b) always fetch the latest report as prior ReportAfterSuites will contribute to it\n\tif node.NodeType.Is(types.NodeTypeReportAfterSuite) && suite.isRunningInParallel() {\n\t\taggregatedReport, err := suite.client.BlockUntilAggregatedNonprimaryProcsReport()\n\t\tif err != nil {\n\t\t\tsuite.currentSpecReport.State, suite.currentSpecReport.Failure = types.SpecStateFailed, suite.failureForLeafNodeWithMessage(node, err.Error())\n\t\t\tsuite.reporter.EmitFailure(suite.currentSpecReport.State, suite.currentSpecReport.Failure)\n\t\t\treturn\n\t\t}\n\t\treport = report.Add(aggregatedReport)\n\t}\n\n\tnode.Body = func(ctx SpecContext) { node.ReportSuiteBody(ctx, report) }\n\tsuite.currentSpecReport.State, suite.currentSpecReport.Failure = suite.runNode(node, time.Time{}, \"\")\n\n\tsuite.currentSpecReport.EndTime = time.Now()\n\tsuite.currentSpecReport.RunTime = suite.currentSpecReport.EndTime.Sub(suite.currentSpecReport.StartTime)\n\tsuite.currentSpecReport.CapturedGinkgoWriterOutput = string(suite.writer.Bytes())\n\tsuite.currentSpecReport.CapturedStdOutErr = suite.outputInterceptor.StopInterceptingAndReturnOutput()\n}\n\nfunc (suite *Suite) runNode(node Node, specDeadline time.Time, text string) (types.SpecState, types.Failure) {\n\tif node.NodeType.Is(types.NodeTypeCleanupAfterEach | types.NodeTypeCleanupAfterAll | types.NodeTypeCleanupAfterSuite) {\n\t\tsuite.cleanupNodes = suite.cleanupNodes.WithoutNode(node)\n\t}\n\n\tinterruptStatus := suite.interruptHandler.Status()\n\tif interruptStatus.Level == interrupt_handler.InterruptLevelBailOut {\n\t\treturn types.SpecStateSkipped, types.Failure{}\n\t}\n\tif interruptStatus.Level == interrupt_handler.InterruptLevelReportOnly && !node.NodeType.Is(types.NodeTypesAllowedDuringReportInterrupt) {\n\t\treturn types.SpecStateSkipped, types.Failure{}\n\t}\n\tif interruptStatus.Level == interrupt_handler.InterruptLevelCleanupAndReport && !node.NodeType.Is(types.NodeTypesAllowedDuringReportInterrupt|types.NodeTypesAllowedDuringCleanupInterrupt) {\n\t\treturn types.SpecStateSkipped, types.Failure{}\n\t}\n\n\tsuite.selectiveLock.Lock()\n\tsuite.currentNode = node\n\tsuite.currentNodeStartTime = time.Now()\n\tsuite.currentByStep = types.SpecEvent{}\n\tsuite.selectiveLock.Unlock()\n\tdefer func() {\n\t\tsuite.selectiveLock.Lock()\n\t\tsuite.currentNode = Node{}\n\t\tsuite.currentNodeStartTime = time.Time{}\n\t\tsuite.selectiveLock.Unlock()\n\t}()\n\n\tif text == \"\" {\n\t\ttext = \"TOP-LEVEL\"\n\t}\n\tevent := suite.handleSpecEvent(types.SpecEvent{\n\t\tSpecEventType: types.SpecEventNodeStart,\n\t\tNodeType:      node.NodeType,\n\t\tMessage:       text,\n\t\tCodeLocation:  node.CodeLocation,\n\t})\n\tdefer func() {\n\t\tsuite.handleSpecEventEnd(types.SpecEventNodeEnd, event)\n\t}()\n\n\tvar failure types.Failure\n\tfailure.FailureNodeType, failure.FailureNodeLocation = node.NodeType, node.CodeLocation\n\tif node.NodeType.Is(types.NodeTypeIt) || node.NodeType.Is(types.NodeTypesForSuiteLevelNodes) {\n\t\tfailure.FailureNodeContext = types.FailureNodeIsLeafNode\n\t} else if node.NestingLevel <= 0 {\n\t\tfailure.FailureNodeContext = types.FailureNodeAtTopLevel\n\t} else {\n\t\tfailure.FailureNodeContext, failure.FailureNodeContainerIndex = types.FailureNodeInContainer, node.NestingLevel-1\n\t}\n\tvar outcome types.SpecState\n\n\tgracePeriod := suite.config.GracePeriod\n\tif node.GracePeriod >= 0 {\n\t\tgracePeriod = node.GracePeriod\n\t}\n\n\tnow := time.Now()\n\tdeadline := suite.deadline\n\ttimeoutInPlay := \"suite\"\n\tif deadline.IsZero() || (!specDeadline.IsZero() && specDeadline.Before(deadline)) {\n\t\tdeadline = specDeadline\n\t\ttimeoutInPlay = \"spec\"\n\t}\n\tif node.NodeTimeout > 0 && (deadline.IsZero() || deadline.Sub(now) > node.NodeTimeout) {\n\t\tdeadline = now.Add(node.NodeTimeout)\n\t\ttimeoutInPlay = \"node\"\n\t}\n\tif (!deadline.IsZero() && deadline.Before(now)) || interruptStatus.Interrupted() {\n\t\t// we're out of time already.  let's wait for a NodeTimeout if we have it, or GracePeriod if we don't\n\t\tif node.NodeTimeout > 0 {\n\t\t\tdeadline = now.Add(node.NodeTimeout)\n\t\t\ttimeoutInPlay = \"node\"\n\t\t} else {\n\t\t\tdeadline = now.Add(gracePeriod)\n\t\t\ttimeoutInPlay = \"grace period\"\n\t\t}\n\t}\n\n\tif !node.HasContext {\n\t\t// this maps onto the pre-context behavior:\n\t\t// - an interrupted node exits immediately.  with this, context-less nodes that are in a spec with a SpecTimeout and/or are interrupted by other means will simply exit immediately after the timeout/interrupt\n\t\t// - clean up nodes have up to GracePeriod (formerly hard-coded at 30s) to complete before they are interrupted\n\t\tgracePeriod = 0\n\t}\n\n\tsc := NewSpecContext(suite)\n\tdefer sc.cancel(fmt.Errorf(\"spec has finished\"))\n\n\tsuite.selectiveLock.Lock()\n\tsuite.currentSpecContext = sc\n\tsuite.selectiveLock.Unlock()\n\n\tvar deadlineChannel <-chan time.Time\n\tif !deadline.IsZero() {\n\t\tdeadlineChannel = time.After(deadline.Sub(now))\n\t}\n\tvar gracePeriodChannel <-chan time.Time\n\n\toutcomeC := make(chan types.SpecState)\n\tfailureC := make(chan types.Failure)\n\n\tgo func() {\n\t\tfinished := false\n\t\tdefer func() {\n\t\t\tif e := recover(); e != nil || !finished {\n\t\t\t\tsuite.failer.Panic(types.NewCodeLocationWithStackTrace(2), e)\n\t\t\t}\n\n\t\t\toutcomeFromRun, failureFromRun := suite.failer.Drain()\n\t\t\tfailureFromRun.TimelineLocation = suite.generateTimelineLocation()\n\t\t\toutcomeC <- outcomeFromRun\n\t\t\tfailureC <- failureFromRun\n\t\t}()\n\n\t\taroundNodes := types.AroundNodes{}.Append(suite.aroundNodes...).Append(node.AroundNodes...)\n\t\tif len(aroundNodes) > 0 {\n\t\t\ti := 0\n\t\t\tvar f func(context.Context)\n\t\t\tf = func(c context.Context) {\n\t\t\t\tsc := wrapContextChain(c)\n\t\t\t\tif sc == nil {\n\t\t\t\t\tsuite.failer.Fail(\"An AroundNode failed to pass a valid Ginkgo SpecContext in.  You must always pass in a context derived from the context passed to you.\", aroundNodes[i].CodeLocation)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\ti++\n\t\t\t\tif i < len(aroundNodes) {\n\t\t\t\t\taroundNodes[i].Body(sc, f)\n\t\t\t\t} else {\n\t\t\t\t\tnode.Body(sc)\n\t\t\t\t}\n\t\t\t}\n\t\t\taroundNodes[0].Body(sc, f)\n\t\t\tif i != len(aroundNodes) {\n\t\t\t\tsuite.failer.Fail(\"An AroundNode failed to call the passed in function.\", aroundNodes[i].CodeLocation)\n\t\t\t}\n\t\t} else {\n\t\t\tnode.Body(sc)\n\t\t}\n\t\tfinished = true\n\t}()\n\n\t// progress polling timer and channel\n\tvar emitProgressNow <-chan time.Time\n\tvar progressPoller *time.Timer\n\tvar pollProgressAfter, pollProgressInterval = suite.config.PollProgressAfter, suite.config.PollProgressInterval\n\tif node.PollProgressAfter >= 0 {\n\t\tpollProgressAfter = node.PollProgressAfter\n\t}\n\tif node.PollProgressInterval >= 0 {\n\t\tpollProgressInterval = node.PollProgressInterval\n\t}\n\tif pollProgressAfter > 0 {\n\t\tprogressPoller = time.NewTimer(pollProgressAfter)\n\t\temitProgressNow = progressPoller.C\n\t\tdefer progressPoller.Stop()\n\t}\n\n\t// now we wait for an outcome, an interrupt, a timeout, or a progress poll\n\tfor {\n\t\tselect {\n\t\tcase outcomeFromRun := <-outcomeC:\n\t\t\tfailureFromRun := <-failureC\n\t\t\tif outcome.Is(types.SpecStateInterrupted | types.SpecStateTimedout) {\n\t\t\t\t// we've already been interrupted/timed out.  we just managed to actually exit\n\t\t\t\t// before the grace period elapsed\n\t\t\t\t// if we have a failure message we attach it as an additional failure\n\t\t\t\tif outcomeFromRun != types.SpecStatePassed {\n\t\t\t\t\tadditionalFailure := types.AdditionalFailure{\n\t\t\t\t\t\tState:   outcomeFromRun,\n\t\t\t\t\t\tFailure: failure, // we make a copy - this will include all the configuration set up above...\n\t\t\t\t\t}\n\t\t\t\t\t// ...and then we update the failure with the details from failureFromRun\n\t\t\t\t\tadditionalFailure.Failure.Location, additionalFailure.Failure.ForwardedPanic, additionalFailure.Failure.TimelineLocation = failureFromRun.Location, failureFromRun.ForwardedPanic, failureFromRun.TimelineLocation\n\t\t\t\t\tadditionalFailure.Failure.ProgressReport = types.ProgressReport{}\n\t\t\t\t\tif outcome == types.SpecStateTimedout {\n\t\t\t\t\t\tadditionalFailure.Failure.Message = fmt.Sprintf(\"A %s timeout occurred and then the following failure was recorded in the timedout node before it exited:\\n%s\", timeoutInPlay, failureFromRun.Message)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tadditionalFailure.Failure.Message = fmt.Sprintf(\"An interrupt occurred and then the following failure was recorded in the interrupted node before it exited:\\n%s\", failureFromRun.Message)\n\t\t\t\t\t}\n\t\t\t\t\tsuite.reporter.EmitFailure(additionalFailure.State, additionalFailure.Failure)\n\t\t\t\t\tfailure.AdditionalFailure = &additionalFailure\n\t\t\t\t}\n\t\t\t\treturn outcome, failure\n\t\t\t}\n\t\t\tif outcomeFromRun.Is(types.SpecStatePassed) {\n\t\t\t\treturn outcomeFromRun, types.Failure{}\n\t\t\t} else {\n\t\t\t\tfailure.Message, failure.Location, failure.ForwardedPanic, failure.TimelineLocation = failureFromRun.Message, failureFromRun.Location, failureFromRun.ForwardedPanic, failureFromRun.TimelineLocation\n\t\t\t\tsuite.reporter.EmitFailure(outcomeFromRun, failure)\n\t\t\t\treturn outcomeFromRun, failure\n\t\t\t}\n\t\tcase <-gracePeriodChannel:\n\t\t\tif node.HasContext && outcome.Is(types.SpecStateTimedout) {\n\t\t\t\treport := suite.generateProgressReport(false)\n\t\t\t\treport.Message = \"{{bold}}{{orange}}A running node failed to exit in time{{/}}\\nGinkgo is moving on but a node has timed out and failed to exit before its grace period elapsed.  The node has now leaked and is running in the background.\\nHere's a current progress report:\"\n\t\t\t\tsuite.emitProgressReport(report)\n\t\t\t}\n\t\t\treturn outcome, failure\n\t\tcase <-deadlineChannel:\n\t\t\t// we're out of time - the outcome is a timeout and we capture the failure and progress report\n\t\t\toutcome = types.SpecStateTimedout\n\t\t\tfailure.Message, failure.Location, failure.TimelineLocation = fmt.Sprintf(\"A %s timeout occurred\", timeoutInPlay), node.CodeLocation, suite.generateTimelineLocation()\n\t\t\tfailure.ProgressReport = suite.generateProgressReport(false).WithoutCapturedGinkgoWriterOutput()\n\t\t\tfailure.ProgressReport.Message = fmt.Sprintf(\"{{bold}}This is the Progress Report generated when the %s timeout occurred:{{/}}\", timeoutInPlay)\n\t\t\tdeadlineChannel = nil\n\t\t\tsuite.reporter.EmitFailure(outcome, failure)\n\n\t\t\t// tell the spec to stop.  it's important we generate the progress report first to make sure we capture where\n\t\t\t// the spec is actually stuck\n\t\t\tsc.cancel(fmt.Errorf(\"%s timeout occurred\", timeoutInPlay))\n\t\t\t// and now we wait for the grace period\n\t\t\tgracePeriodChannel = time.After(gracePeriod)\n\t\tcase <-interruptStatus.Channel:\n\t\t\tinterruptStatus = suite.interruptHandler.Status()\n\t\t\t// ignore interruption from other process if we are cleaning up or reporting\n\t\t\tif interruptStatus.Cause == interrupt_handler.InterruptCauseAbortByOtherProcess &&\n\t\t\t\tnode.NodeType.Is(types.NodeTypesAllowedDuringReportInterrupt|types.NodeTypesAllowedDuringCleanupInterrupt) {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tdeadlineChannel = nil // don't worry about deadlines, time's up now\n\n\t\t\tfailureTimelineLocation := suite.generateTimelineLocation()\n\t\t\tprogressReport := suite.generateProgressReport(true)\n\n\t\t\tif outcome == types.SpecStateInvalid {\n\t\t\t\toutcome = types.SpecStateInterrupted\n\t\t\t\tfailure.Message, failure.Location, failure.TimelineLocation = interruptStatus.Message(), node.CodeLocation, failureTimelineLocation\n\t\t\t\tif interruptStatus.ShouldIncludeProgressReport() {\n\t\t\t\t\tfailure.ProgressReport = progressReport.WithoutCapturedGinkgoWriterOutput()\n\t\t\t\t\tfailure.ProgressReport.Message = \"{{bold}}This is the Progress Report generated when the interrupt was received:{{/}}\"\n\t\t\t\t}\n\t\t\t\tsuite.reporter.EmitFailure(outcome, failure)\n\t\t\t}\n\n\t\t\tprogressReport = progressReport.WithoutOtherGoroutines()\n\t\t\tsc.cancel(fmt.Errorf(\"%s\", interruptStatus.Message()))\n\n\t\t\tif interruptStatus.Level == interrupt_handler.InterruptLevelBailOut {\n\t\t\t\tif interruptStatus.ShouldIncludeProgressReport() {\n\t\t\t\t\tprogressReport.Message = fmt.Sprintf(\"{{bold}}{{orange}}%s{{/}}\\n{{bold}}{{red}}Final interrupt received{{/}}; Ginkgo will not run any cleanup or reporting nodes and will terminate as soon as possible.\\nHere's a current progress report:\", interruptStatus.Message())\n\t\t\t\t\tsuite.emitProgressReport(progressReport)\n\t\t\t\t}\n\t\t\t\treturn outcome, failure\n\t\t\t}\n\t\t\tif interruptStatus.ShouldIncludeProgressReport() {\n\t\t\t\tif interruptStatus.Level == interrupt_handler.InterruptLevelCleanupAndReport {\n\t\t\t\t\tprogressReport.Message = fmt.Sprintf(\"{{bold}}{{orange}}%s{{/}}\\nFirst interrupt received; Ginkgo will run any cleanup and reporting nodes but will skip all remaining specs.  {{bold}}Interrupt again to skip cleanup{{/}}.\\nHere's a current progress report:\", interruptStatus.Message())\n\t\t\t\t} else if interruptStatus.Level == interrupt_handler.InterruptLevelReportOnly {\n\t\t\t\t\tprogressReport.Message = fmt.Sprintf(\"{{bold}}{{orange}}%s{{/}}\\nSecond interrupt received; Ginkgo will run any reporting nodes but will skip all remaining specs and cleanup nodes.  {{bold}}Interrupt again to bail immediately{{/}}.\\nHere's a current progress report:\", interruptStatus.Message())\n\t\t\t\t}\n\t\t\t\tsuite.emitProgressReport(progressReport)\n\t\t\t}\n\n\t\t\tif gracePeriodChannel == nil {\n\t\t\t\t// we haven't given grace yet... so let's\n\t\t\t\tgracePeriodChannel = time.After(gracePeriod)\n\t\t\t} else {\n\t\t\t\t// we've already given grace.  time's up.  now.\n\t\t\t\treturn outcome, failure\n\t\t\t}\n\t\tcase <-emitProgressNow:\n\t\t\treport := suite.generateProgressReport(false)\n\t\t\treport.Message = \"{{bold}}Automatically polling progress:{{/}}\"\n\t\t\tsuite.emitProgressReport(report)\n\t\t\tif pollProgressInterval > 0 {\n\t\t\t\tprogressPoller.Reset(pollProgressInterval)\n\t\t\t}\n\t\t}\n\t}\n}\n\n// TODO: search for usages and consider if reporter.EmitFailure() is necessary\nfunc (suite *Suite) failureForLeafNodeWithMessage(node Node, message string) types.Failure {\n\treturn types.Failure{\n\t\tMessage:             message,\n\t\tLocation:            node.CodeLocation,\n\t\tTimelineLocation:    suite.generateTimelineLocation(),\n\t\tFailureNodeContext:  types.FailureNodeIsLeafNode,\n\t\tFailureNodeType:     node.NodeType,\n\t\tFailureNodeLocation: node.CodeLocation,\n\t}\n}\n\nfunc max(a, b int) int {\n\tif a > b {\n\t\treturn a\n\t}\n\treturn b\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/internal/testingtproxy/testing_t_proxy.go",
    "content": "package testingtproxy\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\n\t\"github.com/onsi/ginkgo/v2/formatter\"\n\t\"github.com/onsi/ginkgo/v2/internal\"\n\t\"github.com/onsi/ginkgo/v2/reporters\"\n\t\"github.com/onsi/ginkgo/v2/types\"\n)\n\ntype failFunc func(message string, callerSkip ...int)\ntype skipFunc func(message string, callerSkip ...int)\ntype cleanupFunc func(args ...any)\ntype reportFunc func() types.SpecReport\ntype addReportEntryFunc func(names string, args ...any)\ntype ginkgoWriterInterface interface {\n\tio.Writer\n\n\tPrint(a ...any)\n\tPrintf(format string, a ...any)\n\tPrintln(a ...any)\n}\ntype ginkgoRecoverFunc func()\ntype attachProgressReporterFunc func(func() string) func()\n\nvar formatters = map[bool]formatter.Formatter{\n\ttrue:  formatter.NewWithNoColorBool(true),\n\tfalse: formatter.NewWithNoColorBool(false),\n}\n\nfunc New(writer ginkgoWriterInterface, fail failFunc, skip skipFunc, cleanup cleanupFunc, report reportFunc, addReportEntry addReportEntryFunc, ginkgoRecover ginkgoRecoverFunc, attachProgressReporter attachProgressReporterFunc, randomSeed int64, parallelProcess int, parallelTotal int, noColor bool, offset int) *ginkgoTestingTProxy {\n\treturn &ginkgoTestingTProxy{\n\t\tfail:                   fail,\n\t\toffset:                 offset,\n\t\twriter:                 writer,\n\t\tskip:                   skip,\n\t\tcleanup:                cleanup,\n\t\treport:                 report,\n\t\taddReportEntry:         addReportEntry,\n\t\tginkgoRecover:          ginkgoRecover,\n\t\tattachProgressReporter: attachProgressReporter,\n\t\trandomSeed:             randomSeed,\n\t\tparallelProcess:        parallelProcess,\n\t\tparallelTotal:          parallelTotal,\n\t\tf:                      formatters[noColor], //minimize allocations by reusing formatters\n\t}\n}\n\ntype ginkgoTestingTProxy struct {\n\tfail                   failFunc\n\tskip                   skipFunc\n\tcleanup                cleanupFunc\n\treport                 reportFunc\n\toffset                 int\n\twriter                 ginkgoWriterInterface\n\taddReportEntry         addReportEntryFunc\n\tginkgoRecover          ginkgoRecoverFunc\n\tattachProgressReporter attachProgressReporterFunc\n\trandomSeed             int64\n\tparallelProcess        int\n\tparallelTotal          int\n\tf                      formatter.Formatter\n}\n\n// basic testing.T support\n\nfunc (t *ginkgoTestingTProxy) Cleanup(f func()) {\n\tt.cleanup(f, internal.Offset(1))\n}\n\nfunc (t *ginkgoTestingTProxy) Setenv(key, value string) {\n\toriginalValue, exists := os.LookupEnv(key)\n\tif exists {\n\t\tt.cleanup(os.Setenv, key, originalValue, internal.Offset(1))\n\t} else {\n\t\tt.cleanup(os.Unsetenv, key, internal.Offset(1))\n\t}\n\n\terr := os.Setenv(key, value)\n\tif err != nil {\n\t\tt.fail(fmt.Sprintf(\"Failed to set environment variable: %v\", err), 1)\n\t}\n}\n\nfunc (t *ginkgoTestingTProxy) Chdir(dir string) {\n\tcurrentDir, err := os.Getwd()\n\tif err != nil {\n\t\tt.fail(fmt.Sprintf(\"Failed to get current directory: %v\", err), 1)\n\t}\n\n\tt.cleanup(os.Chdir, currentDir, internal.Offset(1))\n\n\terr = os.Chdir(dir)\n\tif err != nil {\n\t\tt.fail(fmt.Sprintf(\"Failed to change directory: %v\", err), 1)\n\t}\n}\n\nfunc (t *ginkgoTestingTProxy) Context() context.Context {\n\tctx, cancel := context.WithCancel(context.Background())\n\tt.cleanup(cancel, internal.Offset(1))\n\treturn ctx\n}\n\nfunc (t *ginkgoTestingTProxy) Error(args ...any) {\n\tt.fail(fmt.Sprintln(args...), t.offset)\n}\n\nfunc (t *ginkgoTestingTProxy) Errorf(format string, args ...any) {\n\tt.fail(fmt.Sprintf(format, args...), t.offset)\n}\n\nfunc (t *ginkgoTestingTProxy) Fail() {\n\tt.fail(\"failed\", t.offset)\n}\n\nfunc (t *ginkgoTestingTProxy) FailNow() {\n\tt.fail(\"failed\", t.offset)\n}\n\nfunc (t *ginkgoTestingTProxy) Failed() bool {\n\treturn t.report().Failed()\n}\n\nfunc (t *ginkgoTestingTProxy) Fatal(args ...any) {\n\tt.fail(fmt.Sprintln(args...), t.offset)\n}\n\nfunc (t *ginkgoTestingTProxy) Fatalf(format string, args ...any) {\n\tt.fail(fmt.Sprintf(format, args...), t.offset)\n}\n\nfunc (t *ginkgoTestingTProxy) Helper() {\n\ttypes.MarkAsHelper(1)\n}\n\nfunc (t *ginkgoTestingTProxy) Log(args ...any) {\n\tfmt.Fprintln(t.writer, args...)\n}\n\nfunc (t *ginkgoTestingTProxy) Logf(format string, args ...any) {\n\tt.Log(fmt.Sprintf(format, args...))\n}\n\nfunc (t *ginkgoTestingTProxy) Name() string {\n\treturn t.report().FullText()\n}\n\nfunc (t *ginkgoTestingTProxy) Parallel() {\n\t// No-op\n}\n\nfunc (t *ginkgoTestingTProxy) Skip(args ...any) {\n\tt.skip(fmt.Sprintln(args...), t.offset)\n}\n\nfunc (t *ginkgoTestingTProxy) SkipNow() {\n\tt.skip(\"skip\", t.offset)\n}\n\nfunc (t *ginkgoTestingTProxy) Skipf(format string, args ...any) {\n\tt.skip(fmt.Sprintf(format, args...), t.offset)\n}\n\nfunc (t *ginkgoTestingTProxy) Skipped() bool {\n\treturn t.report().State.Is(types.SpecStateSkipped)\n}\n\nfunc (t *ginkgoTestingTProxy) TempDir() string {\n\ttmpDir, err := os.MkdirTemp(\"\", \"ginkgo\")\n\tif err != nil {\n\t\tt.fail(fmt.Sprintf(\"Failed to create temporary directory: %v\", err), 1)\n\t\treturn \"\"\n\t}\n\tt.cleanup(os.RemoveAll, tmpDir)\n\n\treturn tmpDir\n}\n\n// FullGinkgoTInterface\nfunc (t *ginkgoTestingTProxy) AddReportEntryVisibilityAlways(name string, args ...any) {\n\tfinalArgs := []any{internal.Offset(1), types.ReportEntryVisibilityAlways}\n\tt.addReportEntry(name, append(finalArgs, args...)...)\n}\nfunc (t *ginkgoTestingTProxy) AddReportEntryVisibilityFailureOrVerbose(name string, args ...any) {\n\tfinalArgs := []any{internal.Offset(1), types.ReportEntryVisibilityFailureOrVerbose}\n\tt.addReportEntry(name, append(finalArgs, args...)...)\n}\nfunc (t *ginkgoTestingTProxy) AddReportEntryVisibilityNever(name string, args ...any) {\n\tfinalArgs := []any{internal.Offset(1), types.ReportEntryVisibilityNever}\n\tt.addReportEntry(name, append(finalArgs, args...)...)\n}\nfunc (t *ginkgoTestingTProxy) Print(a ...any) {\n\tt.writer.Print(a...)\n}\nfunc (t *ginkgoTestingTProxy) Printf(format string, a ...any) {\n\tt.writer.Printf(format, a...)\n}\nfunc (t *ginkgoTestingTProxy) Println(a ...any) {\n\tt.writer.Println(a...)\n}\nfunc (t *ginkgoTestingTProxy) F(format string, args ...any) string {\n\treturn t.f.F(format, args...)\n}\nfunc (t *ginkgoTestingTProxy) Fi(indentation uint, format string, args ...any) string {\n\treturn t.f.Fi(indentation, format, args...)\n}\nfunc (t *ginkgoTestingTProxy) Fiw(indentation uint, maxWidth uint, format string, args ...any) string {\n\treturn t.f.Fiw(indentation, maxWidth, format, args...)\n}\nfunc (t *ginkgoTestingTProxy) RenderTimeline() string {\n\treturn reporters.RenderTimeline(t.report(), false)\n}\nfunc (t *ginkgoTestingTProxy) GinkgoRecover() {\n\tt.ginkgoRecover()\n}\nfunc (t *ginkgoTestingTProxy) DeferCleanup(args ...any) {\n\tfinalArgs := []any{internal.Offset(1)}\n\tt.cleanup(append(finalArgs, args...)...)\n}\nfunc (t *ginkgoTestingTProxy) RandomSeed() int64 {\n\treturn t.randomSeed\n}\nfunc (t *ginkgoTestingTProxy) ParallelProcess() int {\n\treturn t.parallelProcess\n}\nfunc (t *ginkgoTestingTProxy) ParallelTotal() int {\n\treturn t.parallelTotal\n}\nfunc (t *ginkgoTestingTProxy) AttachProgressReporter(f func() string) func() {\n\treturn t.attachProgressReporter(f)\n}\nfunc (t *ginkgoTestingTProxy) Output() io.Writer {\n\treturn t.writer\n}\nfunc (t *ginkgoTestingTProxy) Attr(key, value string) {\n\tt.addReportEntry(key, value, internal.Offset(1), types.ReportEntryVisibilityFailureOrVerbose)\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/internal/tree.go",
    "content": "package internal\n\nimport \"github.com/onsi/ginkgo/v2/types\"\n\ntype TreeNode struct {\n\tNode     Node\n\tParent   *TreeNode\n\tChildren TreeNodes\n}\n\nfunc (tn *TreeNode) AppendChild(child *TreeNode) {\n\ttn.Children = append(tn.Children, child)\n\tchild.Parent = tn\n}\n\nfunc (tn *TreeNode) AncestorNodeChain() Nodes {\n\tif tn.Parent == nil || tn.Parent.Node.IsZero() {\n\t\treturn Nodes{tn.Node}\n\t}\n\treturn append(tn.Parent.AncestorNodeChain(), tn.Node)\n}\n\ntype TreeNodes []*TreeNode\n\nfunc (tn TreeNodes) Nodes() Nodes {\n\tout := make(Nodes, len(tn))\n\tfor i := range tn {\n\t\tout[i] = tn[i].Node\n\t}\n\treturn out\n}\n\nfunc (tn TreeNodes) WithID(id uint) *TreeNode {\n\tfor i := range tn {\n\t\tif tn[i].Node.ID == id {\n\t\t\treturn tn[i]\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc GenerateSpecsFromTreeRoot(tree *TreeNode) Specs {\n\tvar walkTree func(nestingLevel int, lNodes Nodes, rNodes Nodes, trees TreeNodes) Specs\n\twalkTree = func(nestingLevel int, lNodes Nodes, rNodes Nodes, trees TreeNodes) Specs {\n\t\ttests := Specs{}\n\n\t\tnodes := make(Nodes, len(trees))\n\t\tfor i := range trees {\n\t\t\tnodes[i] = trees[i].Node\n\t\t\tnodes[i].NestingLevel = nestingLevel\n\t\t}\n\n\t\tfor i := range nodes {\n\t\t\tif !nodes[i].NodeType.Is(types.NodeTypesForContainerAndIt) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tleftNodes, rightNodes := nodes.SplitAround(nodes[i])\n\t\t\tleftNodes = leftNodes.WithoutType(types.NodeTypesForContainerAndIt)\n\t\t\trightNodes = rightNodes.WithoutType(types.NodeTypesForContainerAndIt)\n\n\t\t\tleftNodes = lNodes.CopyAppend(leftNodes...)\n\t\t\trightNodes = rightNodes.CopyAppend(rNodes...)\n\n\t\t\tif nodes[i].NodeType.Is(types.NodeTypeIt) {\n\t\t\t\ttests = append(tests, Spec{Nodes: leftNodes.CopyAppend(nodes[i]).CopyAppend(rightNodes...)})\n\t\t\t} else {\n\t\t\t\ttreeNode := trees.WithID(nodes[i].ID)\n\t\t\t\ttests = append(tests, walkTree(nestingLevel+1, leftNodes.CopyAppend(nodes[i]), rightNodes, treeNode.Children)...)\n\t\t\t}\n\t\t}\n\n\t\treturn tests\n\t}\n\n\treturn walkTree(0, Nodes{}, Nodes{}, tree.Children)\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/internal/writer.go",
    "content": "package internal\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"sync\"\n\n\t\"github.com/go-logr/logr\"\n\t\"github.com/go-logr/logr/funcr\"\n)\n\ntype WriterMode uint\n\nconst (\n\tWriterModeStreamAndBuffer WriterMode = iota\n\tWriterModeBufferOnly\n)\n\ntype WriterInterface interface {\n\tio.Writer\n\n\tTruncate()\n\tBytes() []byte\n\tLen() int\n}\n\n// Writer implements WriterInterface and GinkgoWriterInterface\ntype Writer struct {\n\tbuffer    *bytes.Buffer\n\toutWriter io.Writer\n\tlock      *sync.Mutex\n\tmode      WriterMode\n\n\tstreamIndent []byte\n\tindentNext   bool\n\n\tteeWriters []io.Writer\n}\n\nfunc NewWriter(outWriter io.Writer) *Writer {\n\treturn &Writer{\n\t\tbuffer:       &bytes.Buffer{},\n\t\tlock:         &sync.Mutex{},\n\t\toutWriter:    outWriter,\n\t\tmode:         WriterModeStreamAndBuffer,\n\t\tstreamIndent: []byte(\"  \"),\n\t\tindentNext:   true,\n\t}\n}\n\nfunc (w *Writer) SetMode(mode WriterMode) {\n\tw.lock.Lock()\n\tdefer w.lock.Unlock()\n\tw.mode = mode\n}\n\nfunc (w *Writer) Len() int {\n\tw.lock.Lock()\n\tdefer w.lock.Unlock()\n\treturn w.buffer.Len()\n}\n\nvar newline = []byte(\"\\n\")\n\nfunc (w *Writer) Write(b []byte) (n int, err error) {\n\tw.lock.Lock()\n\tdefer w.lock.Unlock()\n\n\tfor _, teeWriter := range w.teeWriters {\n\t\tteeWriter.Write(b)\n\t}\n\n\tif w.mode == WriterModeStreamAndBuffer {\n\t\tline, remaining, found := []byte{}, b, false\n\t\tfor len(remaining) > 0 {\n\t\t\tline, remaining, found = bytes.Cut(remaining, newline)\n\t\t\tif len(line) > 0 {\n\t\t\t\tif w.indentNext {\n\t\t\t\t\tw.outWriter.Write(w.streamIndent)\n\t\t\t\t\tw.indentNext = false\n\t\t\t\t}\n\t\t\t\tw.outWriter.Write(line)\n\t\t\t}\n\t\t\tif found {\n\t\t\t\tw.outWriter.Write(newline)\n\t\t\t\tw.indentNext = true\n\t\t\t}\n\t\t}\n\t}\n\treturn w.buffer.Write(b)\n}\n\nfunc (w *Writer) Truncate() {\n\tw.lock.Lock()\n\tdefer w.lock.Unlock()\n\tw.buffer.Reset()\n}\n\nfunc (w *Writer) Bytes() []byte {\n\tw.lock.Lock()\n\tdefer w.lock.Unlock()\n\tb := w.buffer.Bytes()\n\tcopied := make([]byte, len(b))\n\tcopy(copied, b)\n\treturn copied\n}\n\n// GinkgoWriterInterface\nfunc (w *Writer) TeeTo(writer io.Writer) {\n\tw.lock.Lock()\n\tdefer w.lock.Unlock()\n\n\tw.teeWriters = append(w.teeWriters, writer)\n}\n\nfunc (w *Writer) ClearTeeWriters() {\n\tw.lock.Lock()\n\tdefer w.lock.Unlock()\n\n\tw.teeWriters = []io.Writer{}\n}\n\nfunc (w *Writer) Print(a ...any) {\n\tfmt.Fprint(w, a...)\n}\n\nfunc (w *Writer) Printf(format string, a ...any) {\n\tfmt.Fprintf(w, format, a...)\n}\n\nfunc (w *Writer) Println(a ...any) {\n\tfmt.Fprintln(w, a...)\n}\n\nfunc GinkgoLogrFunc(writer *Writer) logr.Logger {\n\treturn funcr.New(func(prefix, args string) {\n\t\tif prefix == \"\" {\n\t\t\twriter.Printf(\"%s\\n\", args)\n\t\t} else {\n\t\t\twriter.Printf(\"%s %s\\n\", prefix, args)\n\t\t}\n\t}, funcr.Options{})\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/reporters/default_reporter.go",
    "content": "/*\nGinkgo's Default Reporter\n\nA number of command line flags are available to tweak Ginkgo's default output.\n\nThese are documented [here](http://onsi.github.io/ginkgo/#running_tests)\n*/\npackage reporters\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"runtime\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n\n\t\"github.com/onsi/ginkgo/v2/formatter\"\n\t\"github.com/onsi/ginkgo/v2/types\"\n)\n\ntype DefaultReporter struct {\n\tconf   types.ReporterConfig\n\twriter io.Writer\n\n\t// managing the emission stream\n\tlastCharWasNewline       bool\n\tlastEmissionWasDelimiter bool\n\n\t// rendering\n\tspecDenoter  string\n\tretryDenoter string\n\tformatter    formatter.Formatter\n\n\trunningInParallel bool\n\tlock              *sync.Mutex\n}\n\nfunc NewDefaultReporterUnderTest(conf types.ReporterConfig, writer io.Writer) *DefaultReporter {\n\treporter := NewDefaultReporter(conf, writer)\n\treporter.formatter = formatter.New(formatter.ColorModePassthrough)\n\n\treturn reporter\n}\n\nfunc NewDefaultReporter(conf types.ReporterConfig, writer io.Writer) *DefaultReporter {\n\treporter := &DefaultReporter{\n\t\tconf:   conf,\n\t\twriter: writer,\n\n\t\tlastCharWasNewline:       true,\n\t\tlastEmissionWasDelimiter: false,\n\n\t\tspecDenoter:  \"•\",\n\t\tretryDenoter: \"↺\",\n\t\tformatter:    formatter.NewWithNoColorBool(conf.NoColor),\n\t\tlock:         &sync.Mutex{},\n\t}\n\tif runtime.GOOS == \"windows\" {\n\t\treporter.specDenoter = \"+\"\n\t\treporter.retryDenoter = \"R\"\n\t}\n\n\treturn reporter\n}\n\n/* The Reporter Interface */\n\nfunc (r *DefaultReporter) SuiteWillBegin(report types.Report) {\n\tif r.conf.Verbosity().Is(types.VerbosityLevelSuccinct) {\n\t\tr.emit(r.f(\"[%d] {{bold}}%s{{/}} \", report.SuiteConfig.RandomSeed, report.SuiteDescription))\n\t\tif len(report.SuiteLabels) > 0 {\n\t\t\tr.emit(r.f(\"{{coral}}[%s]{{/}} \", strings.Join(report.SuiteLabels, \", \")))\n\t\t}\n\t\tif len(report.SuiteSemVerConstraints) > 0 {\n\t\t\tr.emit(r.f(\"{{coral}}[%s]{{/}} \", strings.Join(report.SuiteSemVerConstraints, \", \")))\n\t\t}\n\t\tif len(report.SuiteComponentSemVerConstraints) > 0 {\n\t\t\tr.emit(r.f(\"{{coral}}[Components: %s]{{/}} \", formatComponentSemVerConstraintsToString(report.SuiteComponentSemVerConstraints)))\n\t\t}\n\t\tr.emit(r.f(\"- %d/%d specs \", report.PreRunStats.SpecsThatWillRun, report.PreRunStats.TotalSpecs))\n\t\tif report.SuiteConfig.ParallelTotal > 1 {\n\t\t\tr.emit(r.f(\"- %d procs \", report.SuiteConfig.ParallelTotal))\n\t\t}\n\t} else {\n\t\tbanner := r.f(\"Running Suite: %s - %s\", report.SuiteDescription, report.SuitePath)\n\t\tr.emitBlock(banner)\n\t\tbannerWidth := len(banner)\n\t\tif len(report.SuiteLabels) > 0 {\n\t\t\tlabels := strings.Join(report.SuiteLabels, \", \")\n\t\t\tr.emitBlock(r.f(\"{{coral}}[%s]{{/}} \", labels))\n\t\t\tif len(labels)+2 > bannerWidth {\n\t\t\t\tbannerWidth = len(labels) + 2\n\t\t\t}\n\t\t}\n\t\tif len(report.SuiteSemVerConstraints) > 0 {\n\t\t\tsemVerConstraints := strings.Join(report.SuiteSemVerConstraints, \", \")\n\t\t\tr.emitBlock(r.f(\"{{coral}}[%s]{{/}} \", semVerConstraints))\n\t\t\tif len(semVerConstraints)+2 > bannerWidth {\n\t\t\t\tbannerWidth = len(semVerConstraints) + 2\n\t\t\t}\n\t\t}\n\t\tif len(report.SuiteComponentSemVerConstraints) > 0 {\n\t\t\tcomponentSemVerConstraints := formatComponentSemVerConstraintsToString(report.SuiteComponentSemVerConstraints)\n\t\t\tr.emitBlock(r.f(\"{{coral}}[Components: %s]{{/}} \", componentSemVerConstraints))\n\t\t\tif len(componentSemVerConstraints)+2 > bannerWidth {\n\t\t\t\tbannerWidth = len(componentSemVerConstraints) + 2\n\t\t\t}\n\t\t}\n\t\tr.emitBlock(strings.Repeat(\"=\", bannerWidth))\n\n\t\tout := r.f(\"Random Seed: {{bold}}%d{{/}}\", report.SuiteConfig.RandomSeed)\n\t\tif report.SuiteConfig.RandomizeAllSpecs {\n\t\t\tout += r.f(\" - will randomize all specs\")\n\t\t}\n\t\tr.emitBlock(out)\n\t\tr.emit(\"\\n\")\n\t\tr.emitBlock(r.f(\"Will run {{bold}}%d{{/}} of {{bold}}%d{{/}} specs\", report.PreRunStats.SpecsThatWillRun, report.PreRunStats.TotalSpecs))\n\t\tif report.SuiteConfig.ParallelTotal > 1 {\n\t\t\tr.emitBlock(r.f(\"Running in parallel across {{bold}}%d{{/}} processes\", report.SuiteConfig.ParallelTotal))\n\t\t}\n\t}\n}\n\nfunc (r *DefaultReporter) SuiteDidEnd(report types.Report) {\n\tfailures := report.SpecReports.WithState(types.SpecStateFailureStates)\n\tif len(failures) > 0 {\n\t\tr.emitBlock(\"\\n\")\n\t\tif len(failures) > 1 {\n\t\t\tr.emitBlock(r.f(\"{{red}}{{bold}}Summarizing %d Failures:{{/}}\", len(failures)))\n\t\t} else {\n\t\t\tr.emitBlock(r.f(\"{{red}}{{bold}}Summarizing 1 Failure:{{/}}\"))\n\t\t}\n\t\tfor _, specReport := range failures {\n\t\t\thighlightColor, heading := \"{{red}}\", \"[FAIL]\"\n\t\t\tswitch specReport.State {\n\t\t\tcase types.SpecStatePanicked:\n\t\t\t\thighlightColor, heading = \"{{magenta}}\", \"[PANICKED!]\"\n\t\t\tcase types.SpecStateAborted:\n\t\t\t\thighlightColor, heading = \"{{coral}}\", \"[ABORTED]\"\n\t\t\tcase types.SpecStateTimedout:\n\t\t\t\thighlightColor, heading = \"{{orange}}\", \"[TIMEDOUT]\"\n\t\t\tcase types.SpecStateInterrupted:\n\t\t\t\thighlightColor, heading = \"{{orange}}\", \"[INTERRUPTED]\"\n\t\t\t}\n\t\t\tlocationBlock := r.codeLocationBlock(specReport, highlightColor, false, true)\n\t\t\tr.emitBlock(r.fi(1, highlightColor+\"%s{{/}} %s\", heading, locationBlock))\n\t\t}\n\t}\n\n\t//summarize the suite\n\tif r.conf.Verbosity().Is(types.VerbosityLevelSuccinct) && report.SuiteSucceeded {\n\t\tr.emit(r.f(\" {{green}}SUCCESS!{{/}} %s \", report.RunTime))\n\t\treturn\n\t}\n\n\tr.emitBlock(\"\\n\")\n\tcolor, status := \"{{green}}{{bold}}\", \"SUCCESS!\"\n\tif !report.SuiteSucceeded {\n\t\tcolor, status = \"{{red}}{{bold}}\", \"FAIL!\"\n\t}\n\n\tspecs := report.SpecReports.WithLeafNodeType(types.NodeTypeIt) //exclude any suite setup nodes\n\tr.emitBlock(r.f(color+\"Ran %d of %d Specs in %.3f seconds{{/}}\",\n\t\tspecs.CountWithState(types.SpecStatePassed)+specs.CountWithState(types.SpecStateFailureStates),\n\t\treport.PreRunStats.TotalSpecs,\n\t\treport.RunTime.Seconds()),\n\t)\n\n\tswitch len(report.SpecialSuiteFailureReasons) {\n\tcase 0:\n\t\tr.emit(r.f(color+\"%s{{/}} -- \", status))\n\tcase 1:\n\t\tr.emit(r.f(color+\"%s - %s{{/}} -- \", status, report.SpecialSuiteFailureReasons[0]))\n\tdefault:\n\t\tr.emitBlock(r.f(color+\"%s - %s{{/}}\\n\", status, strings.Join(report.SpecialSuiteFailureReasons, \", \")))\n\t}\n\n\tif len(specs) == 0 && report.SpecReports.WithLeafNodeType(types.NodeTypeBeforeSuite|types.NodeTypeSynchronizedBeforeSuite).CountWithState(types.SpecStateFailureStates) > 0 {\n\t\tr.emit(r.f(\"{{cyan}}{{bold}}A BeforeSuite node failed so all tests were skipped.{{/}}\\n\"))\n\t} else {\n\t\tr.emit(r.f(\"{{green}}{{bold}}%d Passed{{/}} | \", specs.CountWithState(types.SpecStatePassed)))\n\t\tr.emit(r.f(\"{{red}}{{bold}}%d Failed{{/}} | \", specs.CountWithState(types.SpecStateFailureStates)))\n\t\tif specs.CountOfFlakedSpecs() > 0 {\n\t\t\tr.emit(r.f(\"{{light-yellow}}{{bold}}%d Flaked{{/}} | \", specs.CountOfFlakedSpecs()))\n\t\t}\n\t\tif specs.CountOfRepeatedSpecs() > 0 {\n\t\t\tr.emit(r.f(\"{{light-yellow}}{{bold}}%d Repeated{{/}} | \", specs.CountOfRepeatedSpecs()))\n\t\t}\n\t\tr.emit(r.f(\"{{yellow}}{{bold}}%d Pending{{/}} | \", specs.CountWithState(types.SpecStatePending)))\n\t\tr.emit(r.f(\"{{cyan}}{{bold}}%d Skipped{{/}}\\n\", specs.CountWithState(types.SpecStateSkipped)))\n\t}\n}\n\nfunc (r *DefaultReporter) WillRun(report types.SpecReport) {\n\tv := r.conf.Verbosity()\n\tif v.LT(types.VerbosityLevelVerbose) || report.State.Is(types.SpecStatePending|types.SpecStateSkipped) || report.RunningInParallel {\n\t\treturn\n\t}\n\n\tr.emitDelimiter(0)\n\tr.emitBlock(r.f(r.codeLocationBlock(report, \"{{/}}\", v.Is(types.VerbosityLevelVeryVerbose), false)))\n}\n\nfunc (r *DefaultReporter) wrapTextBlock(sectionName string, fn func()) {\n\tr.emitBlock(\"\\n\")\n\tif r.conf.GithubOutput {\n\t\tr.emitBlock(r.fi(1, \"::group::%s\", sectionName))\n\t} else {\n\t\tr.emitBlock(r.fi(1, \"{{gray}}%s >>{{/}}\", sectionName))\n\t}\n\tfn()\n\tif r.conf.GithubOutput {\n\t\tr.emitBlock(r.fi(1, \"::endgroup::\"))\n\t} else {\n\t\tr.emitBlock(r.fi(1, \"{{gray}}<< %s{{/}}\", sectionName))\n\t}\n\n}\n\nfunc (r *DefaultReporter) DidRun(report types.SpecReport) {\n\tv := r.conf.Verbosity()\n\tinParallel := report.RunningInParallel\n\n\t//should we completely omit this spec?\n\tif report.State.Is(types.SpecStateSkipped) && r.conf.SilenceSkips {\n\t\treturn\n\t}\n\n\theader := r.specDenoter\n\tif report.LeafNodeType.Is(types.NodeTypesForSuiteLevelNodes) {\n\t\theader = fmt.Sprintf(\"[%s]\", report.LeafNodeType)\n\t}\n\thighlightColor := r.highlightColorForState(report.State)\n\n\t// have we already been streaming the timeline?\n\ttimelineHasBeenStreaming := v.GTE(types.VerbosityLevelVerbose) && !inParallel\n\n\t// should we show the timeline?\n\tvar timeline types.Timeline\n\tshowTimeline := !timelineHasBeenStreaming && (v.GTE(types.VerbosityLevelVerbose) || report.Failed())\n\tif showTimeline {\n\t\ttimeline = report.Timeline().WithoutHiddenReportEntries()\n\t\tkeepVeryVerboseSpecEvents := v.Is(types.VerbosityLevelVeryVerbose) ||\n\t\t\t(v.Is(types.VerbosityLevelVerbose) && r.conf.ShowNodeEvents) ||\n\t\t\t(report.Failed() && r.conf.ShowNodeEvents)\n\t\tif !keepVeryVerboseSpecEvents {\n\t\t\ttimeline = timeline.WithoutVeryVerboseSpecEvents()\n\t\t}\n\t\tif len(timeline) == 0 && report.CapturedGinkgoWriterOutput == \"\" {\n\t\t\t// the timeline is completely empty - don't show it\n\t\t\tshowTimeline = false\n\t\t}\n\t\tif v.LT(types.VerbosityLevelVeryVerbose) && report.CapturedGinkgoWriterOutput == \"\" && len(timeline) > 0 {\n\t\t\t//if we aren't -vv and the timeline only has a single failure, don't show it as it will appear at the end of the report\n\t\t\tfailure, isFailure := timeline[0].(types.Failure)\n\t\t\tif isFailure && (len(timeline) == 1 || (len(timeline) == 2 && failure.AdditionalFailure != nil)) {\n\t\t\t\tshowTimeline = false\n\t\t\t}\n\t\t}\n\t}\n\n\t// should we have a separate section for always-visible reports?\n\tshowSeparateVisibilityAlwaysReportsSection := !timelineHasBeenStreaming && !showTimeline && report.ReportEntries.HasVisibility(types.ReportEntryVisibilityAlways)\n\n\t// should we have a separate section for captured stdout/stderr\n\tshowSeparateStdSection := inParallel && (report.CapturedStdOutErr != \"\")\n\n\t// given all that - do we have any actual content to show? or are we a single denoter in a stream?\n\treportHasContent := v.Is(types.VerbosityLevelVeryVerbose) || showTimeline || showSeparateVisibilityAlwaysReportsSection || showSeparateStdSection || report.Failed() || (v.Is(types.VerbosityLevelVerbose) && !report.State.Is(types.SpecStateSkipped))\n\n\t// should we show a runtime?\n\tincludeRuntime := !report.State.Is(types.SpecStateSkipped|types.SpecStatePending) || (report.State.Is(types.SpecStateSkipped) && report.Failure.Message != \"\")\n\n\t// should we show the codelocation block?\n\tshowCodeLocation := !timelineHasBeenStreaming || !report.State.Is(types.SpecStatePassed)\n\n\tswitch report.State {\n\tcase types.SpecStatePassed:\n\t\tif report.LeafNodeType.Is(types.NodeTypesForSuiteLevelNodes) && !reportHasContent {\n\t\t\treturn\n\t\t}\n\t\tif report.LeafNodeType.Is(types.NodeTypesForSuiteLevelNodes) {\n\t\t\theader = fmt.Sprintf(\"%s PASSED\", header)\n\t\t}\n\t\tif report.NumAttempts > 1 && report.MaxFlakeAttempts > 1 {\n\t\t\theader, reportHasContent = fmt.Sprintf(\"%s [FLAKEY TEST - TOOK %d ATTEMPTS TO PASS]\", r.retryDenoter, report.NumAttempts), true\n\t\t}\n\tcase types.SpecStatePending:\n\t\theader = \"P\"\n\t\tif v.GT(types.VerbosityLevelSuccinct) {\n\t\t\theader, reportHasContent = \"P [PENDING]\", true\n\t\t}\n\tcase types.SpecStateSkipped:\n\t\theader = \"S\"\n\t\tif v.Is(types.VerbosityLevelVeryVerbose) || (v.Is(types.VerbosityLevelVerbose) && report.Failure.Message != \"\") {\n\t\t\theader, reportHasContent = \"S [SKIPPED]\", true\n\t\t}\n\tdefault:\n\t\theader = fmt.Sprintf(\"%s [%s]\", header, r.humanReadableState(report.State))\n\t\tif report.MaxMustPassRepeatedly > 1 {\n\t\t\theader = fmt.Sprintf(\"%s DURING REPETITION #%d\", header, report.NumAttempts)\n\t\t}\n\t}\n\n\t// If we have no content to show, just emit the header and return\n\tif !reportHasContent {\n\t\tr.emit(r.f(highlightColor + header + \"{{/}}\"))\n\t\tif r.conf.ForceNewlines {\n\t\t\tr.emit(\"\\n\")\n\t\t}\n\t\treturn\n\t}\n\n\tif includeRuntime {\n\t\theader = r.f(\"%s [%.3f seconds]\", header, report.RunTime.Seconds())\n\t}\n\n\t// Emit header\n\tif !timelineHasBeenStreaming {\n\t\tr.emitDelimiter(0)\n\t}\n\tr.emitBlock(r.f(highlightColor + header + \"{{/}}\"))\n\tif showCodeLocation {\n\t\tr.emitBlock(r.codeLocationBlock(report, highlightColor, v.Is(types.VerbosityLevelVeryVerbose), false))\n\t}\n\n\t//Emit Stdout/Stderr Output\n\tif showSeparateStdSection {\n\t\tr.wrapTextBlock(\"Captured StdOut/StdErr Output\", func() {\n\t\t\tr.emitBlock(r.fi(1, \"%s\", report.CapturedStdOutErr))\n\t\t})\n\t}\n\n\tif showSeparateVisibilityAlwaysReportsSection {\n\t\tr.wrapTextBlock(\"Report Entries\", func() {\n\t\t\tfor _, entry := range report.ReportEntries.WithVisibility(types.ReportEntryVisibilityAlways) {\n\t\t\t\tr.emitReportEntry(1, entry)\n\t\t\t}\n\t\t})\n\t}\n\n\tif showTimeline {\n\t\tr.wrapTextBlock(\"Timeline\", func() {\n\t\t\tr.emitTimeline(1, report, timeline)\n\t\t})\n\t}\n\n\t// Emit Failure Message\n\tif !report.Failure.IsZero() && !v.Is(types.VerbosityLevelVeryVerbose) {\n\t\tr.emitBlock(\"\\n\")\n\t\tr.emitFailure(1, report.State, report.Failure, true)\n\t\tif len(report.AdditionalFailures) > 0 {\n\t\t\tr.emitBlock(r.fi(1, \"\\nThere were {{bold}}{{red}}additional failures{{/}} detected.  To view them in detail run {{bold}}ginkgo -vv{{/}}\"))\n\t\t}\n\t}\n\n\tr.emitDelimiter(0)\n}\n\nfunc (r *DefaultReporter) highlightColorForState(state types.SpecState) string {\n\tswitch state {\n\tcase types.SpecStatePassed:\n\t\treturn \"{{green}}\"\n\tcase types.SpecStatePending:\n\t\treturn \"{{yellow}}\"\n\tcase types.SpecStateSkipped:\n\t\treturn \"{{cyan}}\"\n\tcase types.SpecStateFailed:\n\t\treturn \"{{red}}\"\n\tcase types.SpecStateTimedout:\n\t\treturn \"{{orange}}\"\n\tcase types.SpecStatePanicked:\n\t\treturn \"{{magenta}}\"\n\tcase types.SpecStateInterrupted:\n\t\treturn \"{{orange}}\"\n\tcase types.SpecStateAborted:\n\t\treturn \"{{coral}}\"\n\tdefault:\n\t\treturn \"{{gray}}\"\n\t}\n}\n\nfunc (r *DefaultReporter) humanReadableState(state types.SpecState) string {\n\treturn strings.ToUpper(state.String())\n}\n\nfunc (r *DefaultReporter) emitTimeline(indent uint, report types.SpecReport, timeline types.Timeline) {\n\tisVeryVerbose := r.conf.Verbosity().Is(types.VerbosityLevelVeryVerbose)\n\tgw := report.CapturedGinkgoWriterOutput\n\tcursor := 0\n\tfor _, entry := range timeline {\n\t\ttl := entry.GetTimelineLocation()\n\n\t\tend := tl.Offset\n\t\tif end > len(gw) {\n\t\t\tend = len(gw)\n\t\t}\n\t\tif end < cursor {\n\t\t\tend = cursor\n\t\t}\n\t\tif cursor < end && cursor <= len(gw) && end <= len(gw) {\n\t\t\tr.emit(r.fi(indent, \"%s\", gw[cursor:end]))\n\t\t\tcursor = end\n\t\t} else if cursor < len(gw) && end == len(gw) {\n\t\t\tr.emit(r.fi(indent, \"%s\", gw[cursor:]))\n\t\t\tcursor = len(gw)\n\t\t}\n\n\t\tswitch x := entry.(type) {\n\t\tcase types.Failure:\n\t\t\tif isVeryVerbose {\n\t\t\t\tr.emitFailure(indent, report.State, x, false)\n\t\t\t} else {\n\t\t\t\tr.emitShortFailure(indent, report.State, x)\n\t\t\t}\n\t\tcase types.AdditionalFailure:\n\t\t\tif isVeryVerbose {\n\t\t\t\tr.emitFailure(indent, x.State, x.Failure, true)\n\t\t\t} else {\n\t\t\t\tr.emitShortFailure(indent, x.State, x.Failure)\n\t\t\t}\n\t\tcase types.ReportEntry:\n\t\t\tr.emitReportEntry(indent, x)\n\t\tcase types.ProgressReport:\n\t\t\tr.emitProgressReport(indent, false, isVeryVerbose, x)\n\t\tcase types.SpecEvent:\n\t\t\tif isVeryVerbose || !x.IsOnlyVisibleAtVeryVerbose() || r.conf.ShowNodeEvents {\n\t\t\t\tr.emitSpecEvent(indent, x, isVeryVerbose)\n\t\t\t}\n\t\t}\n\t}\n\tif cursor < len(gw) {\n\t\tr.emit(r.fi(indent, \"%s\", gw[cursor:]))\n\t}\n}\n\nfunc (r *DefaultReporter) EmitFailure(state types.SpecState, failure types.Failure) {\n\tif r.conf.Verbosity().Is(types.VerbosityLevelVerbose) {\n\t\tr.emitShortFailure(1, state, failure)\n\t} else if r.conf.Verbosity().Is(types.VerbosityLevelVeryVerbose) {\n\t\tr.emitFailure(1, state, failure, true)\n\t}\n}\n\nfunc (r *DefaultReporter) emitShortFailure(indent uint, state types.SpecState, failure types.Failure) {\n\tr.emitBlock(r.fi(indent, r.highlightColorForState(state)+\"[%s]{{/}} in [%s] - %s {{gray}}@ %s{{/}}\",\n\t\tr.humanReadableState(state),\n\t\tfailure.FailureNodeType,\n\t\tfailure.Location,\n\t\tfailure.TimelineLocation.Time.Format(types.GINKGO_TIME_FORMAT),\n\t))\n}\n\nfunc (r *DefaultReporter) emitFailure(indent uint, state types.SpecState, failure types.Failure, includeAdditionalFailure bool) {\n\thighlightColor := r.highlightColorForState(state)\n\tr.emitBlock(r.fi(indent, highlightColor+\"[%s] %s{{/}}\", r.humanReadableState(state), failure.Message))\n\tif r.conf.GithubOutput {\n\t\tlevel := \"error\"\n\t\tif state.Is(types.SpecStateSkipped) {\n\t\t\tlevel = \"notice\"\n\t\t}\n\t\tr.emitBlock(r.fi(indent, \"::%s file=%s,line=%d::%s %s\", level, failure.Location.FileName, failure.Location.LineNumber, failure.FailureNodeType, failure.TimelineLocation.Time.Format(types.GINKGO_TIME_FORMAT)))\n\t} else {\n\t\tr.emitBlock(r.fi(indent, highlightColor+\"In {{bold}}[%s]{{/}}\"+highlightColor+\" at: {{bold}}%s{{/}} {{gray}}@ %s{{/}}\\n\", failure.FailureNodeType, failure.Location, failure.TimelineLocation.Time.Format(types.GINKGO_TIME_FORMAT)))\n\t}\n\tif failure.ForwardedPanic != \"\" {\n\t\tr.emitBlock(\"\\n\")\n\t\tr.emitBlock(r.fi(indent, highlightColor+\"%s{{/}}\", failure.ForwardedPanic))\n\t}\n\n\tif r.conf.FullTrace || failure.ForwardedPanic != \"\" {\n\t\tr.emitBlock(\"\\n\")\n\t\tr.emitBlock(r.fi(indent, highlightColor+\"Full Stack Trace{{/}}\"))\n\t\tr.emitBlock(r.fi(indent+1, \"%s\", failure.Location.FullStackTrace))\n\t}\n\n\tif !failure.ProgressReport.IsZero() {\n\t\tr.emitBlock(\"\\n\")\n\t\tr.emitProgressReport(indent, false, false, failure.ProgressReport)\n\t}\n\n\tif failure.AdditionalFailure != nil && includeAdditionalFailure {\n\t\tr.emitBlock(\"\\n\")\n\t\tr.emitFailure(indent, failure.AdditionalFailure.State, failure.AdditionalFailure.Failure, true)\n\t}\n}\n\nfunc (r *DefaultReporter) EmitProgressReport(report types.ProgressReport) {\n\tr.emitDelimiter(1)\n\n\tif report.RunningInParallel {\n\t\tr.emit(r.fi(1, \"{{coral}}Progress Report for Ginkgo Process #{{bold}}%d{{/}}\\n\", report.ParallelProcess))\n\t}\n\tshouldEmitGW := report.RunningInParallel || r.conf.Verbosity().LT(types.VerbosityLevelVerbose)\n\tr.emitProgressReport(1, shouldEmitGW, true, report)\n\tr.emitDelimiter(1)\n}\n\nfunc (r *DefaultReporter) emitProgressReport(indent uint, emitGinkgoWriterOutput, emitGroup bool, report types.ProgressReport) {\n\tif report.Message != \"\" {\n\t\tr.emitBlock(r.fi(indent, report.Message+\"\\n\"))\n\t\tindent += 1\n\t}\n\tif report.LeafNodeText != \"\" {\n\t\tsubjectIndent := indent\n\t\tif len(report.ContainerHierarchyTexts) > 0 {\n\t\t\tr.emit(r.fi(indent, r.cycleJoin(report.ContainerHierarchyTexts, \" \")))\n\t\t\tr.emit(\" \")\n\t\t\tsubjectIndent = 0\n\t\t}\n\t\tr.emit(r.fi(subjectIndent, \"{{bold}}{{orange}}%s{{/}} (Spec Runtime: %s)\\n\", report.LeafNodeText, report.Time().Sub(report.SpecStartTime).Round(time.Millisecond)))\n\t\tr.emit(r.fi(indent+1, \"{{gray}}%s{{/}}\\n\", report.LeafNodeLocation))\n\t\tindent += 1\n\t}\n\tif report.CurrentNodeType != types.NodeTypeInvalid {\n\t\tr.emit(r.fi(indent, \"In {{bold}}{{orange}}[%s]{{/}}\", report.CurrentNodeType))\n\t\tif report.CurrentNodeText != \"\" && !report.CurrentNodeType.Is(types.NodeTypeIt) {\n\t\t\tr.emit(r.f(\" {{bold}}{{orange}}%s{{/}}\", report.CurrentNodeText))\n\t\t}\n\n\t\tr.emit(r.f(\" (Node Runtime: %s)\\n\", report.Time().Sub(report.CurrentNodeStartTime).Round(time.Millisecond)))\n\t\tr.emit(r.fi(indent+1, \"{{gray}}%s{{/}}\\n\", report.CurrentNodeLocation))\n\t\tindent += 1\n\t}\n\tif report.CurrentStepText != \"\" {\n\t\tr.emit(r.fi(indent, \"At {{bold}}{{orange}}[By Step] %s{{/}} (Step Runtime: %s)\\n\", report.CurrentStepText, report.Time().Sub(report.CurrentStepStartTime).Round(time.Millisecond)))\n\t\tr.emit(r.fi(indent+1, \"{{gray}}%s{{/}}\\n\", report.CurrentStepLocation))\n\t\tindent += 1\n\t}\n\n\tif indent > 0 {\n\t\tindent -= 1\n\t}\n\n\tif r.conf.GithubOutput && emitGroup {\n\t\tr.emitBlock(r.fi(indent, \"::group::Progress Report\"))\n\t}\n\n\tif emitGinkgoWriterOutput && report.CapturedGinkgoWriterOutput != \"\" {\n\t\tr.emit(\"\\n\")\n\t\tr.emitBlock(r.fi(indent, \"{{gray}}Begin Captured GinkgoWriter Output >>{{/}}\"))\n\t\tlimit, lines := 10, strings.Split(report.CapturedGinkgoWriterOutput, \"\\n\")\n\t\tif len(lines) <= limit {\n\t\t\tr.emitBlock(r.fi(indent+1, \"%s\", report.CapturedGinkgoWriterOutput))\n\t\t} else {\n\t\t\tr.emitBlock(r.fi(indent+1, \"{{gray}}...{{/}}\"))\n\t\t\tfor _, line := range lines[len(lines)-limit-1:] {\n\t\t\t\tr.emitBlock(r.fi(indent+1, \"%s\", line))\n\t\t\t}\n\t\t}\n\t\tr.emitBlock(r.fi(indent, \"{{gray}}<< End Captured GinkgoWriter Output{{/}}\"))\n\t}\n\n\tif !report.SpecGoroutine().IsZero() {\n\t\tr.emit(\"\\n\")\n\t\tr.emit(r.fi(indent, \"{{bold}}{{underline}}Spec Goroutine{{/}}\\n\"))\n\t\tr.emitGoroutines(indent, report.SpecGoroutine())\n\t}\n\n\tif len(report.AdditionalReports) > 0 {\n\t\tr.emit(\"\\n\")\n\t\tr.emitBlock(r.fi(indent, \"{{gray}}Begin Additional Progress Reports >>{{/}}\"))\n\t\tfor i, additionalReport := range report.AdditionalReports {\n\t\t\tr.emit(r.fi(indent+1, additionalReport))\n\t\t\tif i < len(report.AdditionalReports)-1 {\n\t\t\t\tr.emitBlock(r.fi(indent+1, \"{{gray}}%s{{/}}\", strings.Repeat(\"-\", 10)))\n\t\t\t}\n\t\t}\n\t\tr.emitBlock(r.fi(indent, \"{{gray}}<< End Additional Progress Reports{{/}}\"))\n\t}\n\n\thighlightedGoroutines := report.HighlightedGoroutines()\n\tif len(highlightedGoroutines) > 0 {\n\t\tr.emit(\"\\n\")\n\t\tr.emit(r.fi(indent, \"{{bold}}{{underline}}Goroutines of Interest{{/}}\\n\"))\n\t\tr.emitGoroutines(indent, highlightedGoroutines...)\n\t}\n\n\totherGoroutines := report.OtherGoroutines()\n\tif len(otherGoroutines) > 0 {\n\t\tr.emit(\"\\n\")\n\t\tr.emit(r.fi(indent, \"{{gray}}{{bold}}{{underline}}Other Goroutines{{/}}\\n\"))\n\t\tr.emitGoroutines(indent, otherGoroutines...)\n\t}\n\n\tif r.conf.GithubOutput && emitGroup {\n\t\tr.emitBlock(r.fi(indent, \"::endgroup::\"))\n\t}\n}\n\nfunc (r *DefaultReporter) EmitReportEntry(entry types.ReportEntry) {\n\tif r.conf.Verbosity().LT(types.VerbosityLevelVerbose) || entry.Visibility == types.ReportEntryVisibilityNever {\n\t\treturn\n\t}\n\tr.emitReportEntry(1, entry)\n}\n\nfunc (r *DefaultReporter) emitReportEntry(indent uint, entry types.ReportEntry) {\n\tr.emitBlock(r.fi(indent, \"{{bold}}\"+entry.Name+\"{{gray}} \"+fmt.Sprintf(\"- %s @ %s{{/}}\", entry.Location, entry.Time.Format(types.GINKGO_TIME_FORMAT))))\n\tif representation := entry.StringRepresentation(); representation != \"\" {\n\t\tr.emitBlock(r.fi(indent+1, representation))\n\t}\n}\n\nfunc (r *DefaultReporter) EmitSpecEvent(event types.SpecEvent) {\n\tv := r.conf.Verbosity()\n\tif v.Is(types.VerbosityLevelVeryVerbose) || (v.Is(types.VerbosityLevelVerbose) && (r.conf.ShowNodeEvents || !event.IsOnlyVisibleAtVeryVerbose())) {\n\t\tr.emitSpecEvent(1, event, r.conf.Verbosity().Is(types.VerbosityLevelVeryVerbose))\n\t}\n}\n\nfunc (r *DefaultReporter) emitSpecEvent(indent uint, event types.SpecEvent, includeLocation bool) {\n\tlocation := \"\"\n\tif includeLocation {\n\t\tlocation = fmt.Sprintf(\"- %s \", event.CodeLocation.String())\n\t}\n\tswitch event.SpecEventType {\n\tcase types.SpecEventInvalid:\n\t\treturn\n\tcase types.SpecEventByStart:\n\t\tr.emitBlock(r.fi(indent, \"{{bold}}STEP:{{/}} %s {{gray}}%s@ %s{{/}}\", event.Message, location, event.TimelineLocation.Time.Format(types.GINKGO_TIME_FORMAT)))\n\tcase types.SpecEventByEnd:\n\t\tr.emitBlock(r.fi(indent, \"{{bold}}END STEP:{{/}} %s {{gray}}%s@ %s (%s){{/}}\", event.Message, location, event.TimelineLocation.Time.Format(types.GINKGO_TIME_FORMAT), event.Duration.Round(time.Millisecond)))\n\tcase types.SpecEventNodeStart:\n\t\tr.emitBlock(r.fi(indent, \"> Enter {{bold}}[%s]{{/}} %s {{gray}}%s@ %s{{/}}\", event.NodeType.String(), event.Message, location, event.TimelineLocation.Time.Format(types.GINKGO_TIME_FORMAT)))\n\tcase types.SpecEventNodeEnd:\n\t\tr.emitBlock(r.fi(indent, \"< Exit {{bold}}[%s]{{/}} %s {{gray}}%s@ %s (%s){{/}}\", event.NodeType.String(), event.Message, location, event.TimelineLocation.Time.Format(types.GINKGO_TIME_FORMAT), event.Duration.Round(time.Millisecond)))\n\tcase types.SpecEventSpecRepeat:\n\t\tr.emitBlock(r.fi(indent, \"\\n{{bold}}Attempt #%d {{green}}Passed{{/}}{{bold}}.  Repeating %s{{/}} {{gray}}@ %s{{/}}\\n\\n\", event.Attempt, r.retryDenoter, event.TimelineLocation.Time.Format(types.GINKGO_TIME_FORMAT)))\n\tcase types.SpecEventSpecRetry:\n\t\tr.emitBlock(r.fi(indent, \"\\n{{bold}}Attempt #%d {{red}}Failed{{/}}{{bold}}.  Retrying %s{{/}} {{gray}}@ %s{{/}}\\n\\n\", event.Attempt, r.retryDenoter, event.TimelineLocation.Time.Format(types.GINKGO_TIME_FORMAT)))\n\t}\n}\n\nfunc (r *DefaultReporter) emitGoroutines(indent uint, goroutines ...types.Goroutine) {\n\tfor idx, g := range goroutines {\n\t\tcolor := \"{{gray}}\"\n\t\tif g.HasHighlights() {\n\t\t\tcolor = \"{{orange}}\"\n\t\t}\n\t\tr.emit(r.fi(indent, color+\"goroutine %d [%s]{{/}}\\n\", g.ID, g.State))\n\t\tfor _, fc := range g.Stack {\n\t\t\tif fc.Highlight {\n\t\t\t\tr.emit(r.fi(indent, color+\"{{bold}}> %s{{/}}\\n\", fc.Function))\n\t\t\t\tr.emit(r.fi(indent+2, color+\"{{bold}}%s:%d{{/}}\\n\", fc.Filename, fc.Line))\n\t\t\t\tr.emitSource(indent+3, fc)\n\t\t\t} else {\n\t\t\t\tr.emit(r.fi(indent+1, \"{{gray}}%s{{/}}\\n\", fc.Function))\n\t\t\t\tr.emit(r.fi(indent+2, \"{{gray}}%s:%d{{/}}\\n\", fc.Filename, fc.Line))\n\t\t\t}\n\t\t}\n\n\t\tif idx+1 < len(goroutines) {\n\t\t\tr.emit(\"\\n\")\n\t\t}\n\t}\n}\n\nfunc (r *DefaultReporter) emitSource(indent uint, fc types.FunctionCall) {\n\tlines := fc.Source\n\tif len(lines) == 0 {\n\t\treturn\n\t}\n\n\tlTrim := 100000\n\tfor _, line := range lines {\n\t\tlTrimLine := len(line) - len(strings.TrimLeft(line, \" \\t\"))\n\t\tif lTrimLine < lTrim && len(line) > 0 {\n\t\t\tlTrim = lTrimLine\n\t\t}\n\t}\n\tif lTrim == 100000 {\n\t\tlTrim = 0\n\t}\n\n\tfor idx, line := range lines {\n\t\tif len(line) > lTrim {\n\t\t\tline = line[lTrim:]\n\t\t}\n\t\tif idx == fc.SourceHighlight {\n\t\t\tr.emit(r.fi(indent, \"{{bold}}{{orange}}> %s{{/}}\\n\", line))\n\t\t} else {\n\t\t\tr.emit(r.fi(indent, \"| %s\\n\", line))\n\t\t}\n\t}\n}\n\n/* Emitting to the writer */\nfunc (r *DefaultReporter) emit(s string) {\n\tr._emit(s, false, false)\n}\n\nfunc (r *DefaultReporter) emitBlock(s string) {\n\tr._emit(s, true, false)\n}\n\nfunc (r *DefaultReporter) emitDelimiter(indent uint) {\n\tr._emit(r.fi(indent, \"{{gray}}%s{{/}}\", strings.Repeat(\"-\", 30)), true, true)\n}\n\n// a bit ugly - but we're trying to minimize locking on this hot codepath\nfunc (r *DefaultReporter) _emit(s string, block bool, isDelimiter bool) {\n\tif len(s) == 0 {\n\t\treturn\n\t}\n\tr.lock.Lock()\n\tdefer r.lock.Unlock()\n\tif isDelimiter && r.lastEmissionWasDelimiter {\n\t\treturn\n\t}\n\tif block && !r.lastCharWasNewline {\n\t\tr.writer.Write([]byte(\"\\n\"))\n\t}\n\tr.lastCharWasNewline = (s[len(s)-1:] == \"\\n\")\n\tr.writer.Write([]byte(s))\n\tif block && !r.lastCharWasNewline {\n\t\tr.writer.Write([]byte(\"\\n\"))\n\t\tr.lastCharWasNewline = true\n\t}\n\tr.lastEmissionWasDelimiter = isDelimiter\n}\n\n/* Rendering text */\nfunc (r *DefaultReporter) f(format string, args ...any) string {\n\treturn r.formatter.F(format, args...)\n}\n\nfunc (r *DefaultReporter) fi(indentation uint, format string, args ...any) string {\n\treturn r.formatter.Fi(indentation, format, args...)\n}\n\nfunc (r *DefaultReporter) cycleJoin(elements []string, joiner string) string {\n\treturn r.formatter.CycleJoin(elements, joiner, []string{\"{{/}}\", \"{{gray}}\"})\n}\n\nfunc (r *DefaultReporter) codeLocationBlock(report types.SpecReport, highlightColor string, veryVerbose bool, usePreciseFailureLocation bool) string {\n\ttexts, locations, labels, semVerConstraints, componentSemVerConstraints := []string{}, []types.CodeLocation{}, [][]string{}, [][]string{}, []map[string][]string{}\n\ttexts = append(texts, report.ContainerHierarchyTexts...)\n\tlocations = append(locations, report.ContainerHierarchyLocations...)\n\tlabels = append(labels, report.ContainerHierarchyLabels...)\n\tsemVerConstraints = append(semVerConstraints, report.ContainerHierarchySemVerConstraints...)\n\tcomponentSemVerConstraints = append(componentSemVerConstraints, report.ContainerHierarchyComponentSemVerConstraints...)\n\n\tif report.LeafNodeType.Is(types.NodeTypesForSuiteLevelNodes) {\n\t\ttexts = append(texts, r.f(\"[%s] %s\", report.LeafNodeType, report.LeafNodeText))\n\t} else {\n\t\ttexts = append(texts, r.f(report.LeafNodeText))\n\t}\n\tlabels = append(labels, report.LeafNodeLabels)\n\tsemVerConstraints = append(semVerConstraints, report.LeafNodeSemVerConstraints)\n\tcomponentSemVerConstraints = append(componentSemVerConstraints, report.LeafNodeComponentSemVerConstraints)\n\tlocations = append(locations, report.LeafNodeLocation)\n\n\tfailureLocation := report.Failure.FailureNodeLocation\n\tif usePreciseFailureLocation {\n\t\tfailureLocation = report.Failure.Location\n\t}\n\n\thighlightIndex := -1\n\tswitch report.Failure.FailureNodeContext {\n\tcase types.FailureNodeAtTopLevel:\n\t\ttexts = append([]string{fmt.Sprintf(\"TOP-LEVEL [%s]\", report.Failure.FailureNodeType)}, texts...)\n\t\tlocations = append([]types.CodeLocation{failureLocation}, locations...)\n\t\tlabels = append([][]string{{}}, labels...)\n\t\tsemVerConstraints = append([][]string{{}}, semVerConstraints...)\n\t\tcomponentSemVerConstraints = append([]map[string][]string{{}}, componentSemVerConstraints...)\n\t\thighlightIndex = 0\n\tcase types.FailureNodeInContainer:\n\t\ti := report.Failure.FailureNodeContainerIndex\n\t\ttexts[i] = fmt.Sprintf(\"%s [%s]\", texts[i], report.Failure.FailureNodeType)\n\t\tlocations[i] = failureLocation\n\t\thighlightIndex = i\n\tcase types.FailureNodeIsLeafNode:\n\t\ti := len(texts) - 1\n\t\ttexts[i] = fmt.Sprintf(\"[%s] %s\", report.LeafNodeType, report.LeafNodeText)\n\t\tlocations[i] = failureLocation\n\t\thighlightIndex = i\n\tdefault:\n\t\t//there is no failure, so we highlight the leaf ndoe\n\t\thighlightIndex = len(texts) - 1\n\t}\n\n\tout := \"\"\n\tif veryVerbose {\n\t\tfor i := range texts {\n\t\t\tif i == highlightIndex {\n\t\t\t\tout += r.fi(uint(i), highlightColor+\"{{bold}}%s{{/}}\", texts[i])\n\t\t\t} else {\n\t\t\t\tout += r.fi(uint(i), \"%s\", texts[i])\n\t\t\t}\n\t\t\tif len(labels[i]) > 0 {\n\t\t\t\tout += r.f(\" {{coral}}[%s]{{/}}\", strings.Join(labels[i], \", \"))\n\t\t\t}\n\t\t\tif len(semVerConstraints[i]) > 0 {\n\t\t\t\tout += r.f(\" {{coral}}[%s]{{/}}\", strings.Join(semVerConstraints[i], \", \"))\n\t\t\t}\n\t\t\tif len(componentSemVerConstraints[i]) > 0 {\n\t\t\t\tout += r.f(\" {{coral}}[%s]{{/}}\", formatComponentSemVerConstraintsToString(componentSemVerConstraints[i]))\n\t\t\t}\n\t\t\tout += \"\\n\"\n\t\t\tout += r.fi(uint(i), \"{{gray}}%s{{/}}\\n\", locations[i])\n\t\t}\n\t} else {\n\t\tfor i := range texts {\n\t\t\tstyle := \"{{/}}\"\n\t\t\tif i%2 == 1 {\n\t\t\t\tstyle = \"{{gray}}\"\n\t\t\t}\n\t\t\tif i == highlightIndex {\n\t\t\t\tstyle = highlightColor + \"{{bold}}\"\n\t\t\t}\n\t\t\tout += r.f(style+\"%s\", texts[i])\n\t\t\tif i < len(texts)-1 {\n\t\t\t\tout += \" \"\n\t\t\t} else {\n\t\t\t\tout += r.f(\"{{/}}\")\n\t\t\t}\n\t\t}\n\t\tflattenedLabels := report.Labels()\n\t\tif len(flattenedLabels) > 0 {\n\t\t\tout += r.f(\" {{coral}}[%s]{{/}}\", strings.Join(flattenedLabels, \", \"))\n\t\t}\n\t\tflattenedSemVerConstraints := report.SemVerConstraints()\n\t\tif len(flattenedSemVerConstraints) > 0 {\n\t\t\tout += r.f(\" {{coral}}[%s]{{/}}\", strings.Join(flattenedSemVerConstraints, \", \"))\n\t\t}\n\t\tflattenedComponentSemVerConstraints := report.ComponentSemVerConstraints()\n\t\tif len(flattenedComponentSemVerConstraints) > 0 {\n\t\t\tout += r.f(\" {{coral}}[%s]{{/}}\", formatComponentSemVerConstraintsToString(flattenedComponentSemVerConstraints))\n\t\t}\n\t\tout += \"\\n\"\n\t\tif usePreciseFailureLocation {\n\t\t\tout += r.f(\"{{gray}}%s{{/}}\", failureLocation)\n\t\t} else {\n\t\t\tleafLocation := locations[len(locations)-1]\n\t\t\tif (report.Failure.FailureNodeLocation != types.CodeLocation{}) && (report.Failure.FailureNodeLocation != leafLocation) {\n\t\t\t\tout += r.fi(1, highlightColor+\"[%s]{{/}} {{gray}}%s{{/}}\\n\", report.Failure.FailureNodeType, report.Failure.FailureNodeLocation)\n\t\t\t\tout += r.fi(1, \"{{gray}}[%s] %s{{/}}\", report.LeafNodeType, leafLocation)\n\t\t\t} else {\n\t\t\t\tout += r.f(\"{{gray}}%s{{/}}\", leafLocation)\n\t\t\t}\n\t\t}\n\n\t}\n\treturn out\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/reporters/deprecated_reporter.go",
    "content": "package reporters\n\nimport (\n\t\"github.com/onsi/ginkgo/v2/config\"\n\t\"github.com/onsi/ginkgo/v2/types\"\n)\n\n// Deprecated: DeprecatedReporter was how Ginkgo V1 provided support for CustomReporters\n// this has been removed in V2.\n// Please read the documentation at:\n// https://onsi.github.io/ginkgo/MIGRATING_TO_V2#removed-custom-reporters\n// for Ginkgo's new behavior and for a migration path.\ntype DeprecatedReporter interface {\n\tSuiteWillBegin(config config.GinkgoConfigType, summary *types.SuiteSummary)\n\tBeforeSuiteDidRun(setupSummary *types.SetupSummary)\n\tSpecWillRun(specSummary *types.SpecSummary)\n\tSpecDidComplete(specSummary *types.SpecSummary)\n\tAfterSuiteDidRun(setupSummary *types.SetupSummary)\n\tSuiteDidEnd(summary *types.SuiteSummary)\n}\n\n// ReportViaDeprecatedReporter takes a V1 custom reporter and a V2 report and\n// calls the custom reporter's methods with appropriately transformed data from the V2 report.\n//\n// ReportViaDeprecatedReporter should be called in a `ReportAfterSuite()`\n//\n// Deprecated: ReportViaDeprecatedReporter method exists to help developer bridge between deprecated V1 functionality and the new\n// reporting support in V2.  It will be removed in a future minor version of Ginkgo.\nfunc ReportViaDeprecatedReporter(reporter DeprecatedReporter, report types.Report) {\n\tconf := config.DeprecatedGinkgoConfigType{\n\t\tRandomSeed:        report.SuiteConfig.RandomSeed,\n\t\tRandomizeAllSpecs: report.SuiteConfig.RandomizeAllSpecs,\n\t\tFocusStrings:      report.SuiteConfig.FocusStrings,\n\t\tSkipStrings:       report.SuiteConfig.SkipStrings,\n\t\tFailOnPending:     report.SuiteConfig.FailOnPending,\n\t\tFailFast:          report.SuiteConfig.FailFast,\n\t\tFlakeAttempts:     report.SuiteConfig.FlakeAttempts,\n\t\tEmitSpecProgress:  false,\n\t\tDryRun:            report.SuiteConfig.DryRun,\n\t\tParallelNode:      report.SuiteConfig.ParallelProcess,\n\t\tParallelTotal:     report.SuiteConfig.ParallelTotal,\n\t\tSyncHost:          report.SuiteConfig.ParallelHost,\n\t\tStreamHost:        report.SuiteConfig.ParallelHost,\n\t}\n\n\tsummary := &types.DeprecatedSuiteSummary{\n\t\tSuiteDescription: report.SuiteDescription,\n\t\tSuiteID:          report.SuitePath,\n\n\t\tNumberOfSpecsBeforeParallelization: report.PreRunStats.TotalSpecs,\n\t\tNumberOfTotalSpecs:                 report.PreRunStats.TotalSpecs,\n\t\tNumberOfSpecsThatWillBeRun:         report.PreRunStats.SpecsThatWillRun,\n\t}\n\n\treporter.SuiteWillBegin(conf, summary)\n\n\tfor _, spec := range report.SpecReports {\n\t\tswitch spec.LeafNodeType {\n\t\tcase types.NodeTypeBeforeSuite, types.NodeTypeSynchronizedBeforeSuite:\n\t\t\tsetupSummary := &types.DeprecatedSetupSummary{\n\t\t\t\tComponentType:  spec.LeafNodeType,\n\t\t\t\tCodeLocation:   spec.LeafNodeLocation,\n\t\t\t\tState:          spec.State,\n\t\t\t\tRunTime:        spec.RunTime,\n\t\t\t\tFailure:        failureFor(spec),\n\t\t\t\tCapturedOutput: spec.CombinedOutput(),\n\t\t\t\tSuiteID:        report.SuitePath,\n\t\t\t}\n\t\t\treporter.BeforeSuiteDidRun(setupSummary)\n\t\tcase types.NodeTypeAfterSuite, types.NodeTypeSynchronizedAfterSuite:\n\t\t\tsetupSummary := &types.DeprecatedSetupSummary{\n\t\t\t\tComponentType:  spec.LeafNodeType,\n\t\t\t\tCodeLocation:   spec.LeafNodeLocation,\n\t\t\t\tState:          spec.State,\n\t\t\t\tRunTime:        spec.RunTime,\n\t\t\t\tFailure:        failureFor(spec),\n\t\t\t\tCapturedOutput: spec.CombinedOutput(),\n\t\t\t\tSuiteID:        report.SuitePath,\n\t\t\t}\n\t\t\treporter.AfterSuiteDidRun(setupSummary)\n\t\tcase types.NodeTypeIt:\n\t\t\tcomponentTexts, componentCodeLocations := []string{}, []types.CodeLocation{}\n\t\t\tcomponentTexts = append(componentTexts, spec.ContainerHierarchyTexts...)\n\t\t\tcomponentCodeLocations = append(componentCodeLocations, spec.ContainerHierarchyLocations...)\n\t\t\tcomponentTexts = append(componentTexts, spec.LeafNodeText)\n\t\t\tcomponentCodeLocations = append(componentCodeLocations, spec.LeafNodeLocation)\n\n\t\t\tspecSummary := &types.DeprecatedSpecSummary{\n\t\t\t\tComponentTexts:         componentTexts,\n\t\t\t\tComponentCodeLocations: componentCodeLocations,\n\t\t\t\tState:                  spec.State,\n\t\t\t\tRunTime:                spec.RunTime,\n\t\t\t\tFailure:                failureFor(spec),\n\t\t\t\tNumberOfSamples:        spec.NumAttempts,\n\t\t\t\tCapturedOutput:         spec.CombinedOutput(),\n\t\t\t\tSuiteID:                report.SuitePath,\n\t\t\t}\n\t\t\treporter.SpecWillRun(specSummary)\n\t\t\treporter.SpecDidComplete(specSummary)\n\n\t\t\tswitch spec.State {\n\t\t\tcase types.SpecStatePending:\n\t\t\t\tsummary.NumberOfPendingSpecs += 1\n\t\t\tcase types.SpecStateSkipped:\n\t\t\t\tsummary.NumberOfSkippedSpecs += 1\n\t\t\tcase types.SpecStateFailed, types.SpecStatePanicked, types.SpecStateInterrupted:\n\t\t\t\tsummary.NumberOfFailedSpecs += 1\n\t\t\tcase types.SpecStatePassed:\n\t\t\t\tsummary.NumberOfPassedSpecs += 1\n\t\t\t\tif spec.NumAttempts > 1 {\n\t\t\t\t\tsummary.NumberOfFlakedSpecs += 1\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tsummary.SuiteSucceeded = report.SuiteSucceeded\n\tsummary.RunTime = report.RunTime\n\n\treporter.SuiteDidEnd(summary)\n}\n\nfunc failureFor(spec types.SpecReport) types.DeprecatedSpecFailure {\n\tif spec.Failure.IsZero() {\n\t\treturn types.DeprecatedSpecFailure{}\n\t}\n\n\tindex := 0\n\tswitch spec.Failure.FailureNodeContext {\n\tcase types.FailureNodeInContainer:\n\t\tindex = spec.Failure.FailureNodeContainerIndex\n\tcase types.FailureNodeAtTopLevel:\n\t\tindex = -1\n\tcase types.FailureNodeIsLeafNode:\n\t\tindex = len(spec.ContainerHierarchyTexts) - 1\n\t\tif spec.LeafNodeText != \"\" {\n\t\t\tindex += 1\n\t\t}\n\t}\n\n\treturn types.DeprecatedSpecFailure{\n\t\tMessage:               spec.Failure.Message,\n\t\tLocation:              spec.Failure.Location,\n\t\tForwardedPanic:        spec.Failure.ForwardedPanic,\n\t\tComponentIndex:        index,\n\t\tComponentType:         spec.Failure.FailureNodeType,\n\t\tComponentCodeLocation: spec.Failure.FailureNodeLocation,\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/reporters/gojson_report.go",
    "content": "package reporters\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"os\"\n\t\"path\"\n\n\t\"github.com/onsi/ginkgo/v2/internal/reporters\"\n\t\"github.com/onsi/ginkgo/v2/types\"\n)\n\n// GenerateGoTestJSONReport produces a JSON-formatted in the test2json format used by `go test -json`\nfunc GenerateGoTestJSONReport(report types.Report, destination string) error {\n\t// walk report and generate test2json-compatible objects\n\t// JSON-encode the objects into filename\n\tif err := os.MkdirAll(path.Dir(destination), 0770); err != nil {\n\t\treturn err\n\t}\n\tf, err := os.Create(destination)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer f.Close()\n\tenc := json.NewEncoder(f)\n\tr := reporters.NewGoJSONReporter(\n\t\tenc,\n\t\tsystemErrForUnstructuredReporters,\n\t\tsystemOutForUnstructuredReporters,\n\t)\n\treturn r.Write(report)\n}\n\n// MergeJSONReports produces a single JSON-formatted report at the passed in destination by merging the JSON-formatted reports provided in sources\n// It skips over reports that fail to decode but reports on them via the returned messages []string\nfunc MergeAndCleanupGoTestJSONReports(sources []string, destination string) ([]string, error) {\n\tmessages := []string{}\n\tif err := os.MkdirAll(path.Dir(destination), 0770); err != nil {\n\t\treturn messages, err\n\t}\n\tf, err := os.Create(destination)\n\tif err != nil {\n\t\treturn messages, err\n\t}\n\tdefer f.Close()\n\n\tfor _, source := range sources {\n\t\tdata, err := os.ReadFile(source)\n\t\tif err != nil {\n\t\t\tmessages = append(messages, fmt.Sprintf(\"Could not open %s:\\n%s\", source, err.Error()))\n\t\t\tcontinue\n\t\t}\n\t\t_, err = f.Write(data)\n\t\tif err != nil {\n\t\t\tmessages = append(messages, fmt.Sprintf(\"Could not write to %s:\\n%s\", destination, err.Error()))\n\t\t\tcontinue\n\t\t}\n\t\tos.Remove(source)\n\t}\n\treturn messages, nil\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/reporters/json_report.go",
    "content": "package reporters\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"os\"\n\t\"path\"\n\n\t\"github.com/onsi/ginkgo/v2/types\"\n)\n\n// GenerateJSONReport produces a JSON-formatted report at the passed in destination\nfunc GenerateJSONReport(report types.Report, destination string) error {\n\tif err := os.MkdirAll(path.Dir(destination), 0770); err != nil {\n\t\treturn err\n\t}\n\tf, err := os.Create(destination)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer f.Close()\n\tenc := json.NewEncoder(f)\n\tenc.SetIndent(\"\", \"  \")\n\terr = enc.Encode([]types.Report{\n\t\treport,\n\t})\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// MergeJSONReports produces a single JSON-formatted report at the passed in destination by merging the JSON-formatted reports provided in sources\n// It skips over reports that fail to decode but reports on them via the returned messages []string\nfunc MergeAndCleanupJSONReports(sources []string, destination string) ([]string, error) {\n\tmessages := []string{}\n\tallReports := []types.Report{}\n\tfor _, source := range sources {\n\t\treports := []types.Report{}\n\t\tdata, err := os.ReadFile(source)\n\t\tif err != nil {\n\t\t\tmessages = append(messages, fmt.Sprintf(\"Could not open %s:\\n%s\", source, err.Error()))\n\t\t\tcontinue\n\t\t}\n\t\terr = json.Unmarshal(data, &reports)\n\t\tif err != nil {\n\t\t\tmessages = append(messages, fmt.Sprintf(\"Could not decode %s:\\n%s\", source, err.Error()))\n\t\t\tcontinue\n\t\t}\n\t\tos.Remove(source)\n\t\tallReports = append(allReports, reports...)\n\t}\n\n\tif err := os.MkdirAll(path.Dir(destination), 0770); err != nil {\n\t\treturn messages, err\n\t}\n\tf, err := os.Create(destination)\n\tif err != nil {\n\t\treturn messages, err\n\t}\n\tdefer f.Close()\n\tenc := json.NewEncoder(f)\n\tenc.SetIndent(\"\", \"  \")\n\terr = enc.Encode(allReports)\n\tif err != nil {\n\t\treturn messages, err\n\t}\n\treturn messages, nil\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/reporters/junit_report.go",
    "content": "/*\n\nJUnit XML Reporter for Ginkgo\n\nFor usage instructions: http://onsi.github.io/ginkgo/#generating_junit_xml_output\n\nThe schema used for the generated JUnit xml file was adapted from https://llg.cubic.org/docs/junit/\n\n*/\n\npackage reporters\n\nimport (\n\t\"encoding/xml\"\n\t\"fmt\"\n\t\"maps\"\n\t\"os\"\n\t\"path\"\n\t\"regexp\"\n\t\"slices\"\n\t\"strings\"\n\n\t\"github.com/onsi/ginkgo/v2/config\"\n\t\"github.com/onsi/ginkgo/v2/types\"\n)\n\ntype JunitReportConfig struct {\n\t// Spec States for which no timeline should be emitted for system-err\n\t// set this to types.SpecStatePassed|types.SpecStateSkipped|types.SpecStatePending to only match failing specs\n\tOmitTimelinesForSpecState types.SpecState\n\n\t// Enable OmitFailureMessageAttr to prevent failure messages appearing in the \"message\" attribute of the Failure and Error tags\n\tOmitFailureMessageAttr bool\n\n\t//Enable OmitCapturedStdOutErr to prevent captured stdout/stderr appearing in system-out\n\tOmitCapturedStdOutErr bool\n\n\t// Enable OmitSpecLabels to prevent labels from appearing in the spec name\n\tOmitSpecLabels bool\n\n\t// Enable OmitSpecSemVerConstraints to prevent semantic version constraints from appearing in the spec name\n\tOmitSpecSemVerConstraints bool\n\n\t// Enable OmitSpecComponentSemVerConstraints to prevent component semantic version constraints from appearing in the spec name\n\tOmitSpecComponentSemVerConstraints bool\n\n\t// Enable OmitLeafNodeType to prevent the spec leaf node type from appearing in the spec name\n\tOmitLeafNodeType bool\n\n\t// Enable OmitSuiteSetupNodes to prevent the creation of testcase entries for setup nodes\n\tOmitSuiteSetupNodes bool\n}\n\ntype JUnitTestSuites struct {\n\tXMLName xml.Name `xml:\"testsuites\"`\n\t// Tests maps onto the total number of specs in all test suites (this includes any suite nodes such as BeforeSuite)\n\tTests int `xml:\"tests,attr\"`\n\t// Disabled maps onto specs that are pending and/or skipped\n\tDisabled int `xml:\"disabled,attr\"`\n\t// Errors maps onto specs that panicked or were interrupted\n\tErrors int `xml:\"errors,attr\"`\n\t// Failures maps onto specs that failed\n\tFailures int `xml:\"failures,attr\"`\n\t// Time is the time in seconds to execute all test suites\n\tTime float64 `xml:\"time,attr\"`\n\n\t//The set of all test suites\n\tTestSuites []JUnitTestSuite `xml:\"testsuite\"`\n}\n\ntype JUnitTestSuite struct {\n\t// Name maps onto the description of the test suite - maps onto Report.SuiteDescription\n\tName string `xml:\"name,attr\"`\n\t// Package maps onto the absolute path to the test suite - maps onto Report.SuitePath\n\tPackage string `xml:\"package,attr\"`\n\t// Tests maps onto the total number of specs in the test suite (this includes any suite nodes such as BeforeSuite)\n\tTests int `xml:\"tests,attr\"`\n\t// Disabled maps onto specs that are pending\n\tDisabled int `xml:\"disabled,attr\"`\n\t// Skiped maps onto specs that are skipped\n\tSkipped int `xml:\"skipped,attr\"`\n\t// Errors maps onto specs that panicked or were interrupted\n\tErrors int `xml:\"errors,attr\"`\n\t// Failures maps onto specs that failed\n\tFailures int `xml:\"failures,attr\"`\n\t// Time is the time in seconds to execute all the test suite - maps onto Report.RunTime\n\tTime float64 `xml:\"time,attr\"`\n\t// Timestamp is the ISO 8601 formatted start-time of the suite - maps onto Report.StartTime\n\tTimestamp string `xml:\"timestamp,attr\"`\n\n\t//Properties captures the information stored in the rest of the Report type (including SuiteConfig) as key-value pairs\n\tProperties JUnitProperties `xml:\"properties\"`\n\n\t//TestCases capture the individual specs\n\tTestCases []JUnitTestCase `xml:\"testcase\"`\n}\n\ntype JUnitProperties struct {\n\tProperties []JUnitProperty `xml:\"property\"`\n}\n\nfunc (jup JUnitProperties) WithName(name string) string {\n\tfor _, property := range jup.Properties {\n\t\tif property.Name == name {\n\t\t\treturn property.Value\n\t\t}\n\t}\n\treturn \"\"\n}\n\ntype JUnitProperty struct {\n\tName  string `xml:\"name,attr\"`\n\tValue string `xml:\"value,attr\"`\n}\n\nvar ownerRE = regexp.MustCompile(`(?i)^owner:(.*)$`)\n\ntype JUnitTestCase struct {\n\t// Name maps onto the full text of the spec - equivalent to \"[SpecReport.LeafNodeType] SpecReport.FullText()\"\n\tName string `xml:\"name,attr\"`\n\t// Classname maps onto the name of the test suite - equivalent to Report.SuiteDescription\n\tClassname string `xml:\"classname,attr\"`\n\t// Status maps onto the string representation of SpecReport.State\n\tStatus string `xml:\"status,attr\"`\n\t// Time is the time in seconds to execute the spec - maps onto SpecReport.RunTime\n\tTime float64 `xml:\"time,attr\"`\n\t// Owner is the owner the spec - is set if a label matching Label(\"owner:X\") is provided.  The last matching label is used as the owner, thereby allowing specs to override owners specified in container nodes.\n\tOwner string `xml:\"owner,attr,omitempty\"`\n\t//Skipped is populated with a message if the test was skipped or pending\n\tSkipped *JUnitSkipped `xml:\"skipped,omitempty\"`\n\t//Error is populated if the test panicked or was interrupted\n\tError *JUnitError `xml:\"error,omitempty\"`\n\t//Failure is populated if the test failed\n\tFailure *JUnitFailure `xml:\"failure,omitempty\"`\n\t//SystemOut maps onto any captured stdout/stderr output - maps onto SpecReport.CapturedStdOutErr\n\tSystemOut string `xml:\"system-out,omitempty\"`\n\t//SystemOut maps onto any captured GinkgoWriter output - maps onto SpecReport.CapturedGinkgoWriterOutput\n\tSystemErr string `xml:\"system-err,omitempty\"`\n}\n\ntype JUnitSkipped struct {\n\t// Message maps onto \"pending\" if the test was marked pending, \"skipped\" if the test was marked skipped, and \"skipped - REASON\" if the user called Skip(REASON)\n\tMessage string `xml:\"message,attr\"`\n}\n\ntype JUnitError struct {\n\t//Message maps onto the panic/exception thrown - equivalent to SpecReport.Failure.ForwardedPanic - or to \"interrupted\"\n\tMessage string `xml:\"message,attr\"`\n\t//Type is one of \"panicked\" or \"interrupted\"\n\tType string `xml:\"type,attr\"`\n\t//Description maps onto the captured stack trace for a panic, or the failure message for an interrupt which will include the dump of running goroutines\n\tDescription string `xml:\",chardata\"`\n}\n\ntype JUnitFailure struct {\n\t//Message maps onto the failure message - equivalent to SpecReport.Failure.Message\n\tMessage string `xml:\"message,attr\"`\n\t//Type is \"failed\"\n\tType string `xml:\"type,attr\"`\n\t//Description maps onto the location and stack trace of the failure\n\tDescription string `xml:\",chardata\"`\n}\n\nfunc GenerateJUnitReport(report types.Report, dst string) error {\n\treturn GenerateJUnitReportWithConfig(report, dst, JunitReportConfig{})\n}\n\nfunc GenerateJUnitReportWithConfig(report types.Report, dst string, config JunitReportConfig) error {\n\tsuite := JUnitTestSuite{\n\t\tName:      report.SuiteDescription,\n\t\tPackage:   report.SuitePath,\n\t\tTime:      report.RunTime.Seconds(),\n\t\tTimestamp: report.StartTime.Format(\"2006-01-02T15:04:05\"),\n\t\tProperties: JUnitProperties{\n\t\t\tProperties: []JUnitProperty{\n\t\t\t\t{\"SuiteSucceeded\", fmt.Sprintf(\"%t\", report.SuiteSucceeded)},\n\t\t\t\t{\"SuiteHasProgrammaticFocus\", fmt.Sprintf(\"%t\", report.SuiteHasProgrammaticFocus)},\n\t\t\t\t{\"SpecialSuiteFailureReason\", strings.Join(report.SpecialSuiteFailureReasons, \",\")},\n\t\t\t\t{\"SuiteLabels\", fmt.Sprintf(\"[%s]\", strings.Join(report.SuiteLabels, \",\"))},\n\t\t\t\t{\"SuiteSemVerConstraints\", fmt.Sprintf(\"[%s]\", strings.Join(report.SuiteSemVerConstraints, \",\"))},\n\t\t\t\t{\"SuiteComponentSemVerConstraints\", fmt.Sprintf(\"[%s]\", formatComponentSemVerConstraintsToString(report.SuiteComponentSemVerConstraints))},\n\t\t\t\t{\"RandomSeed\", fmt.Sprintf(\"%d\", report.SuiteConfig.RandomSeed)},\n\t\t\t\t{\"RandomizeAllSpecs\", fmt.Sprintf(\"%t\", report.SuiteConfig.RandomizeAllSpecs)},\n\t\t\t\t{\"LabelFilter\", report.SuiteConfig.LabelFilter},\n\t\t\t\t{\"SemVerFilter\", report.SuiteConfig.SemVerFilter},\n\t\t\t\t{\"FocusStrings\", strings.Join(report.SuiteConfig.FocusStrings, \",\")},\n\t\t\t\t{\"SkipStrings\", strings.Join(report.SuiteConfig.SkipStrings, \",\")},\n\t\t\t\t{\"FocusFiles\", strings.Join(report.SuiteConfig.FocusFiles, \";\")},\n\t\t\t\t{\"SkipFiles\", strings.Join(report.SuiteConfig.SkipFiles, \";\")},\n\t\t\t\t{\"FailOnPending\", fmt.Sprintf(\"%t\", report.SuiteConfig.FailOnPending)},\n\t\t\t\t{\"FailOnEmpty\", fmt.Sprintf(\"%t\", report.SuiteConfig.FailOnEmpty)},\n\t\t\t\t{\"FailFast\", fmt.Sprintf(\"%t\", report.SuiteConfig.FailFast)},\n\t\t\t\t{\"FlakeAttempts\", fmt.Sprintf(\"%d\", report.SuiteConfig.FlakeAttempts)},\n\t\t\t\t{\"DryRun\", fmt.Sprintf(\"%t\", report.SuiteConfig.DryRun)},\n\t\t\t\t{\"ParallelTotal\", fmt.Sprintf(\"%d\", report.SuiteConfig.ParallelTotal)},\n\t\t\t\t{\"OutputInterceptorMode\", report.SuiteConfig.OutputInterceptorMode},\n\t\t\t},\n\t\t},\n\t}\n\tfor _, spec := range report.SpecReports {\n\t\tif config.OmitSuiteSetupNodes && spec.LeafNodeType != types.NodeTypeIt {\n\t\t\tcontinue\n\t\t}\n\t\tname := fmt.Sprintf(\"[%s]\", spec.LeafNodeType)\n\t\tif config.OmitLeafNodeType {\n\t\t\tname = \"\"\n\t\t}\n\t\tif spec.FullText() != \"\" {\n\t\t\tname = name + \" \" + spec.FullText()\n\t\t}\n\t\tlabels := spec.Labels()\n\t\tif len(labels) > 0 && !config.OmitSpecLabels {\n\t\t\tname = name + \" [\" + strings.Join(labels, \", \") + \"]\"\n\t\t}\n\t\towner := \"\"\n\t\tfor _, label := range labels {\n\t\t\tif matches := ownerRE.FindStringSubmatch(label); len(matches) == 2 {\n\t\t\t\towner = matches[1]\n\t\t\t}\n\t\t}\n\t\tsemVerConstraints := spec.SemVerConstraints()\n\t\tif len(semVerConstraints) > 0 && !config.OmitSpecSemVerConstraints {\n\t\t\tname = name + \" [\" + strings.Join(semVerConstraints, \", \") + \"]\"\n\t\t}\n\t\tcomponentSemVerConstraints := spec.ComponentSemVerConstraints()\n\t\tif len(componentSemVerConstraints) > 0 && !config.OmitSpecComponentSemVerConstraints {\n\t\t\tname = name + \" [\" + formatComponentSemVerConstraintsToString(componentSemVerConstraints) + \"]\"\n\t\t}\n\t\tname = strings.TrimSpace(name)\n\n\t\ttest := JUnitTestCase{\n\t\t\tName:      name,\n\t\t\tClassname: report.SuiteDescription,\n\t\t\tStatus:    spec.State.String(),\n\t\t\tTime:      spec.RunTime.Seconds(),\n\t\t\tOwner:     owner,\n\t\t}\n\t\tif !spec.State.Is(config.OmitTimelinesForSpecState) {\n\t\t\ttest.SystemErr = systemErrForUnstructuredReporters(spec)\n\t\t}\n\t\tif !config.OmitCapturedStdOutErr {\n\t\t\ttest.SystemOut = systemOutForUnstructuredReporters(spec)\n\t\t}\n\t\tsuite.Tests += 1\n\n\t\tswitch spec.State {\n\t\tcase types.SpecStateSkipped:\n\t\t\tmessage := \"skipped\"\n\t\t\tif spec.Failure.Message != \"\" {\n\t\t\t\tmessage += \" - \" + spec.Failure.Message\n\t\t\t}\n\t\t\ttest.Skipped = &JUnitSkipped{Message: message}\n\t\t\tsuite.Skipped += 1\n\t\tcase types.SpecStatePending:\n\t\t\ttest.Skipped = &JUnitSkipped{Message: \"pending\"}\n\t\t\tsuite.Disabled += 1\n\t\tcase types.SpecStateFailed:\n\t\t\ttest.Failure = &JUnitFailure{\n\t\t\t\tMessage:     spec.Failure.Message,\n\t\t\t\tType:        \"failed\",\n\t\t\t\tDescription: failureDescriptionForUnstructuredReporters(spec),\n\t\t\t}\n\t\t\tif config.OmitFailureMessageAttr {\n\t\t\t\ttest.Failure.Message = \"\"\n\t\t\t}\n\t\t\tsuite.Failures += 1\n\t\tcase types.SpecStateTimedout:\n\t\t\ttest.Failure = &JUnitFailure{\n\t\t\t\tMessage:     spec.Failure.Message,\n\t\t\t\tType:        \"timedout\",\n\t\t\t\tDescription: failureDescriptionForUnstructuredReporters(spec),\n\t\t\t}\n\t\t\tif config.OmitFailureMessageAttr {\n\t\t\t\ttest.Failure.Message = \"\"\n\t\t\t}\n\t\t\tsuite.Failures += 1\n\t\tcase types.SpecStateInterrupted:\n\t\t\ttest.Error = &JUnitError{\n\t\t\t\tMessage:     spec.Failure.Message,\n\t\t\t\tType:        \"interrupted\",\n\t\t\t\tDescription: failureDescriptionForUnstructuredReporters(spec),\n\t\t\t}\n\t\t\tif config.OmitFailureMessageAttr {\n\t\t\t\ttest.Error.Message = \"\"\n\t\t\t}\n\t\t\tsuite.Errors += 1\n\t\tcase types.SpecStateAborted:\n\t\t\ttest.Failure = &JUnitFailure{\n\t\t\t\tMessage:     spec.Failure.Message,\n\t\t\t\tType:        \"aborted\",\n\t\t\t\tDescription: failureDescriptionForUnstructuredReporters(spec),\n\t\t\t}\n\t\t\tif config.OmitFailureMessageAttr {\n\t\t\t\ttest.Failure.Message = \"\"\n\t\t\t}\n\t\t\tsuite.Errors += 1\n\t\tcase types.SpecStatePanicked:\n\t\t\ttest.Error = &JUnitError{\n\t\t\t\tMessage:     spec.Failure.ForwardedPanic,\n\t\t\t\tType:        \"panicked\",\n\t\t\t\tDescription: failureDescriptionForUnstructuredReporters(spec),\n\t\t\t}\n\t\t\tif config.OmitFailureMessageAttr {\n\t\t\t\ttest.Error.Message = \"\"\n\t\t\t}\n\t\t\tsuite.Errors += 1\n\t\t}\n\n\t\tsuite.TestCases = append(suite.TestCases, test)\n\t}\n\n\tjunitReport := JUnitTestSuites{\n\t\tTests:      suite.Tests,\n\t\tDisabled:   suite.Disabled + suite.Skipped,\n\t\tErrors:     suite.Errors,\n\t\tFailures:   suite.Failures,\n\t\tTime:       suite.Time,\n\t\tTestSuites: []JUnitTestSuite{suite},\n\t}\n\n\tif err := os.MkdirAll(path.Dir(dst), 0770); err != nil {\n\t\treturn err\n\t}\n\tf, err := os.Create(dst)\n\tif err != nil {\n\t\treturn err\n\t}\n\tf.WriteString(xml.Header)\n\tencoder := xml.NewEncoder(f)\n\tencoder.Indent(\"  \", \"    \")\n\tencoder.Encode(junitReport)\n\n\treturn f.Close()\n}\n\nfunc MergeAndCleanupJUnitReports(sources []string, dst string) ([]string, error) {\n\tmessages := []string{}\n\tmergedReport := JUnitTestSuites{}\n\tfor _, source := range sources {\n\t\treport := JUnitTestSuites{}\n\t\tf, err := os.Open(source)\n\t\tif err != nil {\n\t\t\tmessages = append(messages, fmt.Sprintf(\"Could not open %s:\\n%s\", source, err.Error()))\n\t\t\tcontinue\n\t\t}\n\t\terr = xml.NewDecoder(f).Decode(&report)\n\t\t_ = f.Close()\n\t\tif err != nil {\n\t\t\tmessages = append(messages, fmt.Sprintf(\"Could not decode %s:\\n%s\", source, err.Error()))\n\t\t\tcontinue\n\t\t}\n\t\tos.Remove(source)\n\n\t\tmergedReport.Tests += report.Tests\n\t\tmergedReport.Disabled += report.Disabled\n\t\tmergedReport.Errors += report.Errors\n\t\tmergedReport.Failures += report.Failures\n\t\tmergedReport.Time += report.Time\n\t\tmergedReport.TestSuites = append(mergedReport.TestSuites, report.TestSuites...)\n\t}\n\n\tif err := os.MkdirAll(path.Dir(dst), 0770); err != nil {\n\t\treturn messages, err\n\t}\n\tf, err := os.Create(dst)\n\tif err != nil {\n\t\treturn messages, err\n\t}\n\tf.WriteString(xml.Header)\n\tencoder := xml.NewEncoder(f)\n\tencoder.Indent(\"  \", \"    \")\n\tencoder.Encode(mergedReport)\n\n\treturn messages, f.Close()\n}\n\nfunc failureDescriptionForUnstructuredReporters(spec types.SpecReport) string {\n\tout := &strings.Builder{}\n\tNewDefaultReporter(types.ReporterConfig{NoColor: true, VeryVerbose: true}, out).emitFailure(0, spec.State, spec.Failure, true)\n\tif len(spec.AdditionalFailures) > 0 {\n\t\tout.WriteString(\"\\nThere were additional failures detected after the initial failure. These are visible in the timeline\\n\")\n\t}\n\treturn out.String()\n}\n\nfunc systemErrForUnstructuredReporters(spec types.SpecReport) string {\n\treturn RenderTimeline(spec, true)\n}\n\nfunc RenderTimeline(spec types.SpecReport, noColor bool) string {\n\tout := &strings.Builder{}\n\tNewDefaultReporter(types.ReporterConfig{NoColor: noColor, VeryVerbose: true}, out).emitTimeline(0, spec, spec.Timeline())\n\treturn out.String()\n}\n\nfunc systemOutForUnstructuredReporters(spec types.SpecReport) string {\n\treturn spec.CapturedStdOutErr\n}\n\nfunc formatComponentSemVerConstraintsToString(componentSemVerConstraints map[string][]string) string {\n\tvar tmpStr string\n\tfor _, key := range slices.Sorted(maps.Keys(componentSemVerConstraints)) {\n\t\ttmpStr = tmpStr + fmt.Sprintf(\"%s: %s, \", key, componentSemVerConstraints[key])\n\t}\n\n\ttmpStr = strings.TrimSuffix(tmpStr, \", \")\n\treturn tmpStr\n}\n\n// Deprecated JUnitReporter (so folks can still compile their suites)\ntype JUnitReporter struct{}\n\nfunc NewJUnitReporter(_ string) *JUnitReporter                                                  { return &JUnitReporter{} }\nfunc (reporter *JUnitReporter) SuiteWillBegin(_ config.GinkgoConfigType, _ *types.SuiteSummary) {}\nfunc (reporter *JUnitReporter) BeforeSuiteDidRun(_ *types.SetupSummary)                         {}\nfunc (reporter *JUnitReporter) SpecWillRun(_ *types.SpecSummary)                                {}\nfunc (reporter *JUnitReporter) SpecDidComplete(_ *types.SpecSummary)                            {}\nfunc (reporter *JUnitReporter) AfterSuiteDidRun(_ *types.SetupSummary)                          {}\nfunc (reporter *JUnitReporter) SuiteDidEnd(_ *types.SuiteSummary)                               {}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/reporters/reporter.go",
    "content": "package reporters\n\nimport (\n\t\"github.com/onsi/ginkgo/v2/types\"\n)\n\ntype Reporter interface {\n\tSuiteWillBegin(report types.Report)\n\tWillRun(report types.SpecReport)\n\tDidRun(report types.SpecReport)\n\tSuiteDidEnd(report types.Report)\n\n\t//Timeline emission\n\tEmitFailure(state types.SpecState, failure types.Failure)\n\tEmitProgressReport(progressReport types.ProgressReport)\n\tEmitReportEntry(entry types.ReportEntry)\n\tEmitSpecEvent(event types.SpecEvent)\n}\n\ntype NoopReporter struct{}\n\nfunc (n NoopReporter) SuiteWillBegin(report types.Report)                       {}\nfunc (n NoopReporter) WillRun(report types.SpecReport)                          {}\nfunc (n NoopReporter) DidRun(report types.SpecReport)                           {}\nfunc (n NoopReporter) SuiteDidEnd(report types.Report)                          {}\nfunc (n NoopReporter) EmitFailure(state types.SpecState, failure types.Failure) {}\nfunc (n NoopReporter) EmitProgressReport(progressReport types.ProgressReport)   {}\nfunc (n NoopReporter) EmitReportEntry(entry types.ReportEntry)                  {}\nfunc (n NoopReporter) EmitSpecEvent(event types.SpecEvent)                      {}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/reporters/teamcity_report.go",
    "content": "/*\n\nTeamCity Reporter for Ginkgo\n\nMakes use of TeamCity's support for Service Messages\nhttp://confluence.jetbrains.com/display/TCD7/Build+Script+Interaction+with+TeamCity#BuildScriptInteractionwithTeamCity-ReportingTests\n*/\n\npackage reporters\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"path\"\n\t\"strings\"\n\n\t\"github.com/onsi/ginkgo/v2/types\"\n)\n\nfunc tcEscape(s string) string {\n\ts = strings.ReplaceAll(s, \"|\", \"||\")\n\ts = strings.ReplaceAll(s, \"'\", \"|'\")\n\ts = strings.ReplaceAll(s, \"\\n\", \"|n\")\n\ts = strings.ReplaceAll(s, \"\\r\", \"|r\")\n\ts = strings.ReplaceAll(s, \"[\", \"|[\")\n\ts = strings.ReplaceAll(s, \"]\", \"|]\")\n\treturn s\n}\n\nfunc GenerateTeamcityReport(report types.Report, dst string) error {\n\tif err := os.MkdirAll(path.Dir(dst), 0770); err != nil {\n\t\treturn err\n\t}\n\tf, err := os.Create(dst)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tname := report.SuiteDescription\n\tlabels := report.SuiteLabels\n\tsemVerConstraints := report.SuiteSemVerConstraints\n\tcomponentSemVerConstraints := report.SuiteComponentSemVerConstraints\n\tif len(labels) > 0 {\n\t\tname = name + \" [\" + strings.Join(labels, \", \") + \"]\"\n\t}\n\tif len(semVerConstraints) > 0 {\n\t\tname = name + \" [\" + strings.Join(semVerConstraints, \", \") + \"]\"\n\t}\n\tif len(componentSemVerConstraints) > 0 {\n\t\tname = name + \" [\" + formatComponentSemVerConstraintsToString(componentSemVerConstraints) + \"]\"\n\t}\n\tfmt.Fprintf(f, \"##teamcity[testSuiteStarted name='%s']\\n\", tcEscape(name))\n\tfor _, spec := range report.SpecReports {\n\t\tname := fmt.Sprintf(\"[%s]\", spec.LeafNodeType)\n\t\tif spec.FullText() != \"\" {\n\t\t\tname = name + \" \" + spec.FullText()\n\t\t}\n\t\tlabels := spec.Labels()\n\t\tif len(labels) > 0 {\n\t\t\tname = name + \" [\" + strings.Join(labels, \", \") + \"]\"\n\t\t}\n\t\tsemVerConstraints := spec.SemVerConstraints()\n\t\tif len(semVerConstraints) > 0 {\n\t\t\tname = name + \" [\" + strings.Join(semVerConstraints, \", \") + \"]\"\n\t\t}\n\t\tcomponentSemVerConstraints := spec.ComponentSemVerConstraints()\n\t\tif len(componentSemVerConstraints) > 0 {\n\t\t\tname = name + \" [\" + formatComponentSemVerConstraintsToString(componentSemVerConstraints) + \"]\"\n\t\t}\n\n\t\tname = tcEscape(name)\n\t\tfmt.Fprintf(f, \"##teamcity[testStarted name='%s']\\n\", name)\n\t\tswitch spec.State {\n\t\tcase types.SpecStatePending:\n\t\t\tfmt.Fprintf(f, \"##teamcity[testIgnored name='%s' message='pending']\\n\", name)\n\t\tcase types.SpecStateSkipped:\n\t\t\tmessage := \"skipped\"\n\t\t\tif spec.Failure.Message != \"\" {\n\t\t\t\tmessage += \" - \" + spec.Failure.Message\n\t\t\t}\n\t\t\tfmt.Fprintf(f, \"##teamcity[testIgnored name='%s' message='%s']\\n\", name, tcEscape(message))\n\t\tcase types.SpecStateFailed:\n\t\t\tdetails := failureDescriptionForUnstructuredReporters(spec)\n\t\t\tfmt.Fprintf(f, \"##teamcity[testFailed name='%s' message='failed - %s' details='%s']\\n\", name, tcEscape(spec.Failure.Message), tcEscape(details))\n\t\tcase types.SpecStatePanicked:\n\t\t\tdetails := failureDescriptionForUnstructuredReporters(spec)\n\t\t\tfmt.Fprintf(f, \"##teamcity[testFailed name='%s' message='panicked - %s' details='%s']\\n\", name, tcEscape(spec.Failure.ForwardedPanic), tcEscape(details))\n\t\tcase types.SpecStateTimedout:\n\t\t\tdetails := failureDescriptionForUnstructuredReporters(spec)\n\t\t\tfmt.Fprintf(f, \"##teamcity[testFailed name='%s' message='timedout - %s' details='%s']\\n\", name, tcEscape(spec.Failure.Message), tcEscape(details))\n\t\tcase types.SpecStateInterrupted:\n\t\t\tdetails := failureDescriptionForUnstructuredReporters(spec)\n\t\t\tfmt.Fprintf(f, \"##teamcity[testFailed name='%s' message='interrupted - %s' details='%s']\\n\", name, tcEscape(spec.Failure.Message), tcEscape(details))\n\t\tcase types.SpecStateAborted:\n\t\t\tdetails := failureDescriptionForUnstructuredReporters(spec)\n\t\t\tfmt.Fprintf(f, \"##teamcity[testFailed name='%s' message='aborted - %s' details='%s']\\n\", name, tcEscape(spec.Failure.Message), tcEscape(details))\n\t\t}\n\n\t\tfmt.Fprintf(f, \"##teamcity[testStdOut name='%s' out='%s']\\n\", name, tcEscape(systemOutForUnstructuredReporters(spec)))\n\t\tfmt.Fprintf(f, \"##teamcity[testStdErr name='%s' out='%s']\\n\", name, tcEscape(systemErrForUnstructuredReporters(spec)))\n\t\tfmt.Fprintf(f, \"##teamcity[testFinished name='%s' duration='%d']\\n\", name, int(spec.RunTime.Seconds()*1000.0))\n\t}\n\tfmt.Fprintf(f, \"##teamcity[testSuiteFinished name='%s']\\n\", tcEscape(report.SuiteDescription))\n\n\treturn f.Close()\n}\n\nfunc MergeAndCleanupTeamcityReports(sources []string, dst string) ([]string, error) {\n\tmessages := []string{}\n\tmerged := []byte{}\n\tfor _, source := range sources {\n\t\tdata, err := os.ReadFile(source)\n\t\tif err != nil {\n\t\t\tmessages = append(messages, fmt.Sprintf(\"Could not open %s:\\n%s\", source, err.Error()))\n\t\t\tcontinue\n\t\t}\n\t\tos.Remove(source)\n\t\tmerged = append(merged, data...)\n\t}\n\treturn messages, os.WriteFile(dst, merged, 0666)\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/reporting_dsl.go",
    "content": "package ginkgo\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\t\"github.com/onsi/ginkgo/v2/internal\"\n\t\"github.com/onsi/ginkgo/v2/internal/global\"\n\t\"github.com/onsi/ginkgo/v2/reporters\"\n\t\"github.com/onsi/ginkgo/v2/types\"\n)\n\n/*\nReport represents the report for a Suite.\nIt is documented here: https://pkg.go.dev/github.com/onsi/ginkgo/v2/types#Report\n*/\ntype Report = types.Report\n\n/*\nReport represents the report for a Spec.\nIt is documented here: https://pkg.go.dev/github.com/onsi/ginkgo/v2/types#SpecReport\n*/\ntype SpecReport = types.SpecReport\n\n/*\nCurrentSpecReport returns information about the current running spec.\nThe returned object is a types.SpecReport which includes helper methods\nto make extracting information about the spec easier.\n\nDuring construction of the test tree the result is empty.\n\nYou can learn more about SpecReport here: https://pkg.go.dev/github.com/onsi/ginkgo/types#SpecReport\nYou can learn more about CurrentSpecReport() here: https://onsi.github.io/ginkgo/#getting-a-report-for-the-current-spec\n*/\nfunc CurrentSpecReport() SpecReport {\n\treturn global.Suite.CurrentSpecReport()\n}\n\n/*\nConstructionNodeReport describes the container nodes during construction of\nthe spec tree. It provides a subset of the information that is provided\nby SpecReport at runtime.\n\nIt is documented here: [types.ConstructionNodeReport]\n*/\ntype ConstructionNodeReport = types.ConstructionNodeReport\n\n/*\nCurrentConstructionNodeReport returns information about the current container nodes\nthat are leading to the current path in the spec tree.\nThe returned object is a types.ConstructionNodeReport which includes helper methods\nto make extracting information about the spec easier.\n\nMay only be called during construction of the spec tree. It panics when\ncalled while tests are running. Use CurrentSpecReport instead in that\nphase.\n\nYou can learn more about ConstructionNodeReport here: [types.ConstructionNodeReport]\n*/\nfunc CurrentTreeConstructionNodeReport() ConstructionNodeReport {\n\treturn global.Suite.CurrentConstructionNodeReport()\n}\n\n/*\n\tReportEntryVisibility governs the visibility of ReportEntries in Ginkgo's console reporter\n\n- ReportEntryVisibilityAlways: the default behavior - the ReportEntry is always emitted.\n- ReportEntryVisibilityFailureOrVerbose: the ReportEntry is only emitted if the spec fails or if the tests are run with -v (similar to GinkgoWriters behavior).\n- ReportEntryVisibilityNever: the ReportEntry is never emitted though it appears in any generated machine-readable reports (e.g. by setting `--json-report`).\n\nYou can learn more about Report Entries here: https://onsi.github.io/ginkgo/#attaching-data-to-reports\n*/\ntype ReportEntryVisibility = types.ReportEntryVisibility\n\nconst ReportEntryVisibilityAlways, ReportEntryVisibilityFailureOrVerbose, ReportEntryVisibilityNever = types.ReportEntryVisibilityAlways, types.ReportEntryVisibilityFailureOrVerbose, types.ReportEntryVisibilityNever\n\n/*\nAddReportEntry generates and adds a new ReportEntry to the current spec's SpecReport.\nIt can take any of the following arguments:\n  - A single arbitrary object to attach as the Value of the ReportEntry.  This object will be included in any generated reports and will be emitted to the console when the report is emitted.\n  - A ReportEntryVisibility enum to control the visibility of the ReportEntry\n  - An Offset or CodeLocation decoration to control the reported location of the ReportEntry\n\nIf the Value object implements `fmt.Stringer`, it's `String()` representation is used when emitting to the console.\n\nAddReportEntry() must be called within a Subject or Setup node - not in a Container node.\n\nYou can learn more about Report Entries here: https://onsi.github.io/ginkgo/#attaching-data-to-reports\n*/\nfunc AddReportEntry(name string, args ...any) {\n\tcl := types.NewCodeLocation(1)\n\treportEntry, err := internal.NewReportEntry(name, cl, args...)\n\tif err != nil {\n\t\tFail(fmt.Sprintf(\"Failed to generate Report Entry:\\n%s\", err.Error()), 1)\n\t}\n\terr = global.Suite.AddReportEntry(reportEntry)\n\tif err != nil {\n\t\tFail(fmt.Sprintf(\"Failed to add Report Entry:\\n%s\", err.Error()), 1)\n\t}\n}\n\n/*\nReportBeforeEach nodes are run for each spec, even if the spec is skipped or pending.  ReportBeforeEach nodes take a function that\nreceives a SpecReport or both SpecContext and Report for interruptible behavior. They are called before the spec starts.\n\nExample:\n\n\tReportBeforeEach(func(report SpecReport) { // process report  })\n\tReportBeforeEach(func(ctx SpecContext, report SpecReport) {\n\t\t// process report\n\t}), NodeTimeout(1 * time.Minute))\n\nYou cannot nest any other Ginkgo nodes within a ReportBeforeEach node's closure.\nYou can learn more about ReportBeforeEach here: https://onsi.github.io/ginkgo/#generating-reports-programmatically\n\nYou can learn about interruptible nodes here: https://onsi.github.io/ginkgo/#spec-timeouts-and-interruptible-nodes\n*/\nfunc ReportBeforeEach(body any, args ...any) bool {\n\tcombinedArgs := []any{body}\n\tcombinedArgs = append(combinedArgs, args...)\n\n\treturn pushNode(internal.NewNode(internal.TransformNewNodeArgs(exitIfErrors, deprecationTracker, types.NodeTypeReportBeforeEach, \"\", combinedArgs...)))\n}\n\n/*\nReportAfterEach nodes are run for each spec, even if the spec is skipped or pending.\nReportAfterEach nodes take a function that receives a SpecReport or both SpecContext and Report for interruptible behavior.\nThey are called after the spec has completed and receive the final report for the spec.\n\nExample:\n\n\tReportAfterEach(func(report SpecReport) { // process report  })\n\tReportAfterEach(func(ctx SpecContext, report SpecReport) {\n\t\t// process report\n\t}), NodeTimeout(1 * time.Minute))\n\nYou cannot nest any other Ginkgo nodes within a ReportAfterEach node's closure.\nYou can learn more about ReportAfterEach here: https://onsi.github.io/ginkgo/#generating-reports-programmatically\n\nYou can learn about interruptible nodes here: https://onsi.github.io/ginkgo/#spec-timeouts-and-interruptible-nodes\n*/\nfunc ReportAfterEach(body any, args ...any) bool {\n\tcombinedArgs := []any{body}\n\tcombinedArgs = append(combinedArgs, args...)\n\n\treturn pushNode(internal.NewNode(internal.TransformNewNodeArgs(exitIfErrors, deprecationTracker, types.NodeTypeReportAfterEach, \"\", combinedArgs...)))\n}\n\n/*\nReportBeforeSuite nodes are run at the beginning of the suite.  ReportBeforeSuite nodes take a function\nthat can either receive Report or both SpecContext and Report for interruptible behavior.\n\nExample Usage:\n\n\tReportBeforeSuite(func(r Report) { // process report })\n\tReportBeforeSuite(func(ctx SpecContext, r Report) {\n\t\t// process report\n\t}, NodeTimeout(1 * time.Minute))\n\nThey are called at the beginning of the suite, before any specs have run and any BeforeSuite or SynchronizedBeforeSuite nodes, and are passed in the initial report for the suite.\nReportBeforeSuite nodes must be created at the top-level (i.e. not nested in a Context/Describe/When node)\n\n# When running in parallel, Ginkgo ensures that only one of the parallel nodes runs the ReportBeforeSuite\n\nYou cannot nest any other Ginkgo nodes within a ReportAfterSuite node's closure.\nYou can learn more about ReportAfterSuite here: https://onsi.github.io/ginkgo/#generating-reports-programmatically\n\nYou can learn more about Ginkgo's reporting infrastructure, including generating reports with the CLI here: https://onsi.github.io/ginkgo/#generating-machine-readable-reports\n\nYou can learn about interruptible nodes here: https://onsi.github.io/ginkgo/#spec-timeouts-and-interruptible-nodes\n*/\nfunc ReportBeforeSuite(body any, args ...any) bool {\n\tcombinedArgs := []any{body}\n\tcombinedArgs = append(combinedArgs, args...)\n\treturn pushNode(internal.NewNode(internal.TransformNewNodeArgs(exitIfErrors, deprecationTracker, types.NodeTypeReportBeforeSuite, \"\", combinedArgs...)))\n}\n\n/*\nReportAfterSuite nodes are run at the end of the suite. ReportAfterSuite nodes execute at the suite's conclusion,\nand accept a function that can either receive Report or both SpecContext and Report for interruptible behavior.\n\nExample Usage:\n\n\tReportAfterSuite(\"Non-interruptible ReportAfterSuite\", func(r Report) { // process report })\n\tReportAfterSuite(\"Interruptible ReportAfterSuite\", func(ctx SpecContext, r Report) {\n\t\t// process report\n\t}, NodeTimeout(1 * time.Minute))\n\nThey are called at the end of the suite, after all specs have run and any AfterSuite or SynchronizedAfterSuite nodes, and are passed in the final report for the suite.\nReportAfterSuite nodes must be created at the top-level (i.e. not nested in a Context/Describe/When node)\n\nWhen running in parallel, Ginkgo ensures that only one of the parallel nodes runs the ReportAfterSuite and that it is passed a report that is aggregated across\nall parallel nodes\n\nIn addition to using ReportAfterSuite to programmatically generate suite reports, you can also generate JSON, GoJSON, JUnit, and Teamcity formatted reports using the --json-report, --gojson-report, --junit-report, and --teamcity-report ginkgo CLI flags.\n\nYou cannot nest any other Ginkgo nodes within a ReportAfterSuite node's closure.\nYou can learn more about ReportAfterSuite here: https://onsi.github.io/ginkgo/#generating-reports-programmatically\n\nYou can learn more about Ginkgo's reporting infrastructure, including generating reports with the CLI here: https://onsi.github.io/ginkgo/#generating-machine-readable-reports\n\nYou can learn about interruptible nodes here: https://onsi.github.io/ginkgo/#spec-timeouts-and-interruptible-nodes\n*/\nfunc ReportAfterSuite(text string, body any, args ...any) bool {\n\tcombinedArgs := []any{body}\n\tcombinedArgs = append(combinedArgs, args...)\n\treturn pushNode(internal.NewNode(internal.TransformNewNodeArgs(exitIfErrors, deprecationTracker, types.NodeTypeReportAfterSuite, text, combinedArgs...)))\n}\n\nfunc registerReportAfterSuiteNodeForAutogeneratedReports(reporterConfig types.ReporterConfig) {\n\tbody := func(report Report) {\n\t\tif reporterConfig.JSONReport != \"\" {\n\t\t\terr := reporters.GenerateJSONReport(report, reporterConfig.JSONReport)\n\t\t\tif err != nil {\n\t\t\t\tFail(fmt.Sprintf(\"Failed to generate JSON report:\\n%s\", err.Error()))\n\t\t\t}\n\t\t}\n\t\tif reporterConfig.GoJSONReport != \"\" {\n\t\t\terr := reporters.GenerateGoTestJSONReport(report, reporterConfig.GoJSONReport)\n\t\t\tif err != nil {\n\t\t\t\tFail(fmt.Sprintf(\"Failed to generate Go JSON report:\\n%s\", err.Error()))\n\t\t\t}\n\t\t}\n\t\tif reporterConfig.JUnitReport != \"\" {\n\t\t\terr := reporters.GenerateJUnitReport(report, reporterConfig.JUnitReport)\n\t\t\tif err != nil {\n\t\t\t\tFail(fmt.Sprintf(\"Failed to generate JUnit report:\\n%s\", err.Error()))\n\t\t\t}\n\t\t}\n\t\tif reporterConfig.TeamcityReport != \"\" {\n\t\t\terr := reporters.GenerateTeamcityReport(report, reporterConfig.TeamcityReport)\n\t\t\tif err != nil {\n\t\t\t\tFail(fmt.Sprintf(\"Failed to generate Teamcity report:\\n%s\", err.Error()))\n\t\t\t}\n\t\t}\n\t}\n\n\tflags := []string{}\n\tif reporterConfig.JSONReport != \"\" {\n\t\tflags = append(flags, \"--json-report\")\n\t}\n\tif reporterConfig.GoJSONReport != \"\" {\n\t\tflags = append(flags, \"--gojson-report\")\n\t}\n\tif reporterConfig.JUnitReport != \"\" {\n\t\tflags = append(flags, \"--junit-report\")\n\t}\n\tif reporterConfig.TeamcityReport != \"\" {\n\t\tflags = append(flags, \"--teamcity-report\")\n\t}\n\tpushNode(internal.NewNode(\n\t\tinternal.TransformNewNodeArgs(\n\t\t\texitIfErrors, deprecationTracker, types.NodeTypeReportAfterSuite,\n\t\t\tfmt.Sprintf(\"Autogenerated ReportAfterSuite for %s\", strings.Join(flags, \" \")),\n\t\t\tbody,\n\t\t\ttypes.NewCustomCodeLocation(\"autogenerated by Ginkgo\"),\n\t\t),\n\t))\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/table_dsl.go",
    "content": "package ginkgo\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"reflect\"\n\t\"strings\"\n\n\t\"github.com/onsi/ginkgo/v2/internal\"\n\t\"github.com/onsi/ginkgo/v2/types\"\n)\n\n/*\nThe EntryDescription decorator allows you to pass a format string to DescribeTable() and Entry().  This format string is used to generate entry names via:\n\n\tfmt.Sprintf(formatString, parameters...)\n\nwhere parameters are the parameters passed into the entry.\n\nWhen passed into an Entry the EntryDescription is used to generate the name or that entry.  When passed to DescribeTable, the EntryDescription is used to generate the names for any entries that have `nil` descriptions.\n\nYou can learn more about generating EntryDescriptions here: https://onsi.github.io/ginkgo/#generating-entry-descriptions\n*/\ntype EntryDescription string\n\nfunc (ed EntryDescription) render(args ...any) string {\n\treturn fmt.Sprintf(string(ed), args...)\n}\n\n/*\nDescribeTable describes a table-driven spec.\n\nFor example:\n\n\tDescribeTable(\"a simple table\",\n\t    func(x int, y int, expected bool) {\n\t        Ω(x > y).Should(Equal(expected))\n\t    },\n\t    Entry(\"x > y\", 1, 0, true),\n\t    Entry(\"x == y\", 0, 0, false),\n\t    Entry(\"x < y\", 0, 1, false),\n\t)\n\nYou can learn more about DescribeTable here: https://onsi.github.io/ginkgo/#table-specs\nAnd can explore some Table patterns here: https://onsi.github.io/ginkgo/#table-specs-patterns\n*/\nfunc DescribeTable(description string, args ...any) bool {\n\tGinkgoHelper()\n\tgenerateTable(description, false, args...)\n\treturn true\n}\n\n/*\nYou can focus a table with `FDescribeTable`.  This is equivalent to `FDescribe`.\n*/\nfunc FDescribeTable(description string, args ...any) bool {\n\tGinkgoHelper()\n\targs = append(args, internal.Focus)\n\tgenerateTable(description, false, args...)\n\treturn true\n}\n\n/*\nYou can mark a table as pending with `PDescribeTable`.  This is equivalent to `PDescribe`.\n*/\nfunc PDescribeTable(description string, args ...any) bool {\n\tGinkgoHelper()\n\targs = append(args, internal.Pending)\n\tgenerateTable(description, false, args...)\n\treturn true\n}\n\n/*\nYou can mark a table as pending with `XDescribeTable`.  This is equivalent to `XDescribe`.\n*/\nvar XDescribeTable = PDescribeTable\n\n/*\nDescribeTableSubtree describes a table-driven spec that generates a set of tests for each entry.\n\nFor example:\n\n\tDescribeTableSubtree(\"a subtree table\",\n\t    func(url string, code int, message string) {\n\t\t\tvar resp *http.Response\n\t\t\tBeforeEach(func() {\n\t\t\t\tvar err error\n\t\t\t\tresp, err = http.Get(url)\n\t\t\t\tExpect(err).NotTo(HaveOccurred())\n\t\t\t\tDeferCleanup(resp.Body.Close)\n\t\t\t})\n\n\t\t\tIt(\"should return the expected status code\", func() {\n\t\t\t\tExpect(resp.StatusCode).To(Equal(code))\n\t\t\t})\n\n\t\t\tIt(\"should return the expected message\", func() {\n\t\t\t\tbody, err := io.ReadAll(resp.Body)\n\t\t\t\tExpect(err).NotTo(HaveOccurred())\n\t\t\t\tExpect(string(body)).To(Equal(message))\n\t\t\t})\n\t    },\n\t    Entry(\"default response\", \"example.com/response\", http.StatusOK, \"hello world\"),\n\t    Entry(\"missing response\", \"example.com/missing\", http.StatusNotFound, \"wat?\"),\n\t)\n\nNote that you **must** place define an It inside the body function.\n\nYou can learn more about DescribeTableSubtree here: https://onsi.github.io/ginkgo/#table-specs\nAnd can explore some Table patterns here: https://onsi.github.io/ginkgo/#table-specs-patterns\n*/\nfunc DescribeTableSubtree(description string, args ...any) bool {\n\tGinkgoHelper()\n\tgenerateTable(description, true, args...)\n\treturn true\n}\n\n/*\nYou can focus a table with `FDescribeTableSubtree`.  This is equivalent to `FDescribe`.\n*/\nfunc FDescribeTableSubtree(description string, args ...any) bool {\n\tGinkgoHelper()\n\targs = append(args, internal.Focus)\n\tgenerateTable(description, true, args...)\n\treturn true\n}\n\n/*\nYou can mark a table as pending with `PDescribeTableSubtree`.  This is equivalent to `PDescribe`.\n*/\nfunc PDescribeTableSubtree(description string, args ...any) bool {\n\tGinkgoHelper()\n\targs = append(args, internal.Pending)\n\tgenerateTable(description, true, args...)\n\treturn true\n}\n\n/*\nYou can mark a table as pending with `XDescribeTableSubtree`.  This is equivalent to `XDescribe`.\n*/\nvar XDescribeTableSubtree = PDescribeTableSubtree\n\n/*\nTableEntry represents an entry in a table test.  You generally use the `Entry` constructor.\n*/\ntype TableEntry struct {\n\tdescription  any\n\tdecorations  []any\n\tparameters   []any\n\tcodeLocation types.CodeLocation\n}\n\n/*\nEntry constructs a TableEntry.\n\nThe first argument is a description.  This can be a string, a function that accepts the parameters passed to the TableEntry and returns a string, an EntryDescription format string, or nil.  If nil is provided then the name of the Entry is derived using the table-level entry description.\nSubsequent arguments accept any Ginkgo decorators.  These are filtered out and the remaining arguments are passed into the Spec function associated with the table.\n\nEach Entry ends up generating an individual Ginkgo It.  The body of the it is the Table Body function with the Entry parameters passed in.\n\nIf you want to generate interruptible specs simply write a Table function that accepts a SpecContext as its first argument.  You can then decorate individual Entrys with the NodeTimeout and SpecTimeout decorators.\n\nYou can learn more about Entry here: https://onsi.github.io/ginkgo/#table-specs\n*/\nfunc Entry(description any, args ...any) TableEntry {\n\tGinkgoHelper()\n\tdecorations, parameters := internal.PartitionDecorations(args...)\n\treturn TableEntry{description: description, decorations: decorations, parameters: parameters, codeLocation: types.NewCodeLocation(0)}\n}\n\n/*\nYou can focus a particular entry with FEntry.  This is equivalent to FIt.\n*/\nfunc FEntry(description any, args ...any) TableEntry {\n\tGinkgoHelper()\n\tdecorations, parameters := internal.PartitionDecorations(args...)\n\tdecorations = append(decorations, internal.Focus)\n\treturn TableEntry{description: description, decorations: decorations, parameters: parameters, codeLocation: types.NewCodeLocation(0)}\n}\n\n/*\nYou can mark a particular entry as pending with PEntry.  This is equivalent to PIt.\n*/\nfunc PEntry(description any, args ...any) TableEntry {\n\tGinkgoHelper()\n\tdecorations, parameters := internal.PartitionDecorations(args...)\n\tdecorations = append(decorations, internal.Pending)\n\treturn TableEntry{description: description, decorations: decorations, parameters: parameters, codeLocation: types.NewCodeLocation(0)}\n}\n\n/*\nYou can mark a particular entry as pending with XEntry.  This is equivalent to XIt.\n*/\nvar XEntry = PEntry\n\nvar contextType = reflect.TypeOf(new(context.Context)).Elem()\nvar specContextType = reflect.TypeOf(new(SpecContext)).Elem()\n\nfunc generateTable(description string, isSubtree bool, args ...any) {\n\tGinkgoHelper()\n\tcl := types.NewCodeLocation(0)\n\tcontainerNodeArgs := []any{cl}\n\n\tentries := []TableEntry{}\n\tvar internalBody any\n\tvar internalBodyType reflect.Type\n\n\tvar tableLevelEntryDescription any\n\ttableLevelEntryDescription = func(args ...any) string {\n\t\tout := []string{}\n\t\tfor _, arg := range args {\n\t\t\tout = append(out, fmt.Sprint(arg))\n\t\t}\n\t\treturn \"Entry: \" + strings.Join(out, \", \")\n\t}\n\n\tif len(args) == 1 {\n\t\texitIfErr(types.GinkgoErrors.MissingParametersForTableFunction(cl))\n\t}\n\n\tfor i, arg := range args {\n\t\tswitch t := reflect.TypeOf(arg); {\n\t\tcase t == nil:\n\t\t\texitIfErr(types.GinkgoErrors.IncorrectParameterTypeForTable(i, \"nil\", cl))\n\t\tcase t == reflect.TypeOf(TableEntry{}):\n\t\t\tentries = append(entries, arg.(TableEntry))\n\t\tcase t == reflect.TypeOf([]TableEntry{}):\n\t\t\tentries = append(entries, arg.([]TableEntry)...)\n\t\tcase t == reflect.TypeOf(EntryDescription(\"\")):\n\t\t\ttableLevelEntryDescription = arg.(EntryDescription).render\n\t\tcase t.Kind() == reflect.Func && t.NumOut() == 1 && t.Out(0) == reflect.TypeOf(\"\"):\n\t\t\ttableLevelEntryDescription = arg\n\t\tcase t.Kind() == reflect.Func:\n\t\t\tif internalBody != nil {\n\t\t\t\texitIfErr(types.GinkgoErrors.MultipleEntryBodyFunctionsForTable(cl))\n\t\t\t}\n\t\t\tinternalBody = arg\n\t\t\tinternalBodyType = reflect.TypeOf(internalBody)\n\t\tdefault:\n\t\t\tcontainerNodeArgs = append(containerNodeArgs, arg)\n\t\t}\n\t}\n\n\tcontainerNodeArgs = append(containerNodeArgs, func() {\n\t\tfor _, entry := range entries {\n\t\t\tvar err error\n\t\t\tentry := entry\n\t\t\tvar description string\n\t\t\tswitch t := reflect.TypeOf(entry.description); {\n\t\t\tcase t == nil:\n\t\t\t\terr = validateParameters(tableLevelEntryDescription, entry.parameters, \"Entry Description function\", entry.codeLocation, false)\n\t\t\t\tif err == nil {\n\t\t\t\t\tdescription = invokeFunction(tableLevelEntryDescription, entry.parameters)[0].String()\n\t\t\t\t}\n\t\t\tcase t == reflect.TypeOf(EntryDescription(\"\")):\n\t\t\t\tdescription = entry.description.(EntryDescription).render(entry.parameters...)\n\t\t\tcase t == reflect.TypeOf(\"\"):\n\t\t\t\tdescription = entry.description.(string)\n\t\t\tcase t.Kind() == reflect.Func && t.NumOut() == 1 && t.Out(0) == reflect.TypeOf(\"\"):\n\t\t\t\terr = validateParameters(entry.description, entry.parameters, \"Entry Description function\", entry.codeLocation, false)\n\t\t\t\tif err == nil {\n\t\t\t\t\tdescription = invokeFunction(entry.description, entry.parameters)[0].String()\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\terr = types.GinkgoErrors.InvalidEntryDescription(entry.codeLocation)\n\t\t\t}\n\n\t\t\tinternalNodeArgs := []any{entry.codeLocation}\n\t\t\tinternalNodeArgs = append(internalNodeArgs, entry.decorations...)\n\n\t\t\thasContext := false\n\t\t\tif internalBodyType.NumIn() > 0 {\n\t\t\t\tif internalBodyType.In(0).Implements(specContextType) {\n\t\t\t\t\thasContext = true\n\t\t\t\t} else if internalBodyType.In(0).Implements(contextType) {\n\t\t\t\t\thasContext = true\n\t\t\t\t\tif len(entry.parameters) > 0 && reflect.TypeOf(entry.parameters[0]) != nil && reflect.TypeOf(entry.parameters[0]).Implements(contextType) {\n\t\t\t\t\t\t// we allow you to pass in a non-nil context\n\t\t\t\t\t\thasContext = false\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif err == nil {\n\t\t\t\terr = validateParameters(internalBody, entry.parameters, \"Table Body function\", entry.codeLocation, hasContext)\n\t\t\t}\n\n\t\t\tif hasContext {\n\t\t\t\tinternalNodeArgs = append(internalNodeArgs, func(c SpecContext) {\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\tpanic(err)\n\t\t\t\t\t}\n\t\t\t\t\tinvokeFunction(internalBody, append([]any{c}, entry.parameters...))\n\t\t\t\t})\n\t\t\t\tif isSubtree {\n\t\t\t\t\texitIfErr(types.GinkgoErrors.ContextsCannotBeUsedInSubtreeTables(cl))\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tinternalNodeArgs = append(internalNodeArgs, func() {\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\tpanic(err)\n\t\t\t\t\t}\n\t\t\t\t\tinvokeFunction(internalBody, entry.parameters)\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tinternalNodeType := types.NodeTypeIt\n\t\t\tif isSubtree {\n\t\t\t\tinternalNodeType = types.NodeTypeContainer\n\t\t\t}\n\n\t\t\tpushNode(internal.NewNode(internal.TransformNewNodeArgs(exitIfErrors, deprecationTracker, internalNodeType, description, internalNodeArgs...)))\n\t\t}\n\t})\n\n\tpushNode(internal.NewNode(internal.TransformNewNodeArgs(exitIfErrors, deprecationTracker, types.NodeTypeContainer, description, containerNodeArgs...)))\n}\n\nfunc invokeFunction(function any, parameters []any) []reflect.Value {\n\tinValues := make([]reflect.Value, len(parameters))\n\n\tfuncType := reflect.TypeOf(function)\n\tlimit := funcType.NumIn()\n\tif funcType.IsVariadic() {\n\t\tlimit = limit - 1\n\t}\n\n\tfor i := 0; i < limit && i < len(parameters); i++ {\n\t\tinValues[i] = computeValue(parameters[i], funcType.In(i))\n\t}\n\n\tif funcType.IsVariadic() {\n\t\tvariadicType := funcType.In(limit).Elem()\n\t\tfor i := limit; i < len(parameters); i++ {\n\t\t\tinValues[i] = computeValue(parameters[i], variadicType)\n\t\t}\n\t}\n\n\treturn reflect.ValueOf(function).Call(inValues)\n}\n\nfunc validateParameters(function any, parameters []any, kind string, cl types.CodeLocation, hasContext bool) error {\n\tfuncType := reflect.TypeOf(function)\n\tlimit := funcType.NumIn()\n\toffset := 0\n\tif hasContext {\n\t\tlimit = limit - 1\n\t\toffset = 1\n\t}\n\tif funcType.IsVariadic() {\n\t\tlimit = limit - 1\n\t}\n\tif len(parameters) < limit {\n\t\treturn types.GinkgoErrors.TooFewParametersToTableFunction(limit, len(parameters), kind, cl)\n\t}\n\tif len(parameters) > limit && !funcType.IsVariadic() {\n\t\treturn types.GinkgoErrors.TooManyParametersToTableFunction(limit, len(parameters), kind, cl)\n\t}\n\tvar i = 0\n\tfor ; i < limit; i++ {\n\t\tactual := reflect.TypeOf(parameters[i])\n\t\texpected := funcType.In(i + offset)\n\t\tif !(actual == nil) && !actual.AssignableTo(expected) {\n\t\t\treturn types.GinkgoErrors.IncorrectParameterTypeToTableFunction(i+1, expected, actual, kind, cl)\n\t\t}\n\t}\n\tif funcType.IsVariadic() {\n\t\texpected := funcType.In(limit + offset).Elem()\n\t\tfor ; i < len(parameters); i++ {\n\t\t\tactual := reflect.TypeOf(parameters[i])\n\t\t\tif !(actual == nil) && !actual.AssignableTo(expected) {\n\t\t\t\treturn types.GinkgoErrors.IncorrectVariadicParameterTypeToTableFunction(expected, actual, kind, cl)\n\t\t\t}\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc computeValue(parameter any, t reflect.Type) reflect.Value {\n\tif parameter == nil {\n\t\treturn reflect.Zero(t)\n\t} else {\n\t\treturn reflect.ValueOf(parameter)\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/types/around_node.go",
    "content": "package types\n\nimport (\n\t\"context\"\n)\n\ntype AroundNodeAllowedFuncs interface {\n\t~func(context.Context, func(context.Context)) | ~func(context.Context) context.Context | ~func()\n}\ntype AroundNodeFunc func(ctx context.Context, body func(ctx context.Context))\n\nfunc AroundNode[F AroundNodeAllowedFuncs](f F, cl CodeLocation) AroundNodeDecorator {\n\tif f == nil {\n\t\tpanic(\"BuildAroundNode cannot be called with a nil function.\")\n\t}\n\tvar aroundNodeFunc func(context.Context, func(context.Context))\n\tswitch x := any(f).(type) {\n\tcase func(context.Context, func(context.Context)):\n\t\taroundNodeFunc = x\n\tcase func(context.Context) context.Context:\n\t\taroundNodeFunc = func(ctx context.Context, body func(context.Context)) {\n\t\t\tctx = x(ctx)\n\t\t\tbody(ctx)\n\t\t}\n\tcase func():\n\t\taroundNodeFunc = func(ctx context.Context, body func(context.Context)) {\n\t\t\tx()\n\t\t\tbody(ctx)\n\t\t}\n\t}\n\n\treturn AroundNodeDecorator{\n\t\tBody:         aroundNodeFunc,\n\t\tCodeLocation: cl,\n\t}\n}\n\ntype AroundNodeDecorator struct {\n\tBody         AroundNodeFunc\n\tCodeLocation CodeLocation\n}\n\ntype AroundNodes []AroundNodeDecorator\n\nfunc (an AroundNodes) Clone() AroundNodes {\n\tout := make(AroundNodes, len(an))\n\tcopy(out, an)\n\treturn out\n}\n\nfunc (an AroundNodes) Append(other ...AroundNodeDecorator) AroundNodes {\n\tout := make(AroundNodes, len(an)+len(other))\n\tcopy(out, an)\n\tcopy(out[len(an):], other)\n\treturn out\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/types/code_location.go",
    "content": "package types\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"regexp\"\n\t\"runtime\"\n\t\"runtime/debug\"\n\t\"strings\"\n\t\"sync\"\n)\n\ntype CodeLocation struct {\n\tFileName       string `json:\",omitempty\"`\n\tLineNumber     int    `json:\",omitempty\"`\n\tFullStackTrace string `json:\",omitempty\"`\n\tCustomMessage  string `json:\",omitempty\"`\n}\n\nfunc (codeLocation CodeLocation) String() string {\n\tif codeLocation.CustomMessage != \"\" {\n\t\treturn codeLocation.CustomMessage\n\t}\n\treturn fmt.Sprintf(\"%s:%d\", codeLocation.FileName, codeLocation.LineNumber)\n}\n\nfunc (codeLocation CodeLocation) ContentsOfLine() string {\n\tif codeLocation.CustomMessage != \"\" {\n\t\treturn \"\"\n\t}\n\tcontents, err := os.ReadFile(codeLocation.FileName)\n\tif err != nil {\n\t\treturn \"\"\n\t}\n\tlines := strings.Split(string(contents), \"\\n\")\n\tif len(lines) < codeLocation.LineNumber {\n\t\treturn \"\"\n\t}\n\treturn lines[codeLocation.LineNumber-1]\n}\n\ntype codeLocationLocator struct {\n\tpcs     map[uintptr]bool\n\thelpers map[string]bool\n\tlock    *sync.Mutex\n}\n\nfunc (c *codeLocationLocator) addHelper(pc uintptr) {\n\tc.lock.Lock()\n\tdefer c.lock.Unlock()\n\n\tif c.pcs[pc] {\n\t\treturn\n\t}\n\tc.lock.Unlock()\n\tf := runtime.FuncForPC(pc)\n\tc.lock.Lock()\n\tif f == nil {\n\t\treturn\n\t}\n\tc.helpers[f.Name()] = true\n\tc.pcs[pc] = true\n}\n\nfunc (c *codeLocationLocator) hasHelper(name string) bool {\n\tc.lock.Lock()\n\tdefer c.lock.Unlock()\n\treturn c.helpers[name]\n}\n\nfunc (c *codeLocationLocator) getCodeLocation(skip int) CodeLocation {\n\tpc := make([]uintptr, 40)\n\tn := runtime.Callers(skip+2, pc)\n\tif n == 0 {\n\t\treturn CodeLocation{}\n\t}\n\tpc = pc[:n]\n\tframes := runtime.CallersFrames(pc)\n\tfor {\n\t\tframe, more := frames.Next()\n\t\tif !c.hasHelper(frame.Function) {\n\t\t\treturn CodeLocation{FileName: frame.File, LineNumber: frame.Line}\n\t\t}\n\t\tif !more {\n\t\t\tbreak\n\t\t}\n\t}\n\treturn CodeLocation{}\n}\n\nvar clLocator = &codeLocationLocator{\n\tpcs:     map[uintptr]bool{},\n\thelpers: map[string]bool{},\n\tlock:    &sync.Mutex{},\n}\n\n// MarkAsHelper is used by GinkgoHelper to mark the caller (appropriately offset by skip)as a helper.  You can use this directly if you need to provide an optional `skip` to mark functions further up the call stack as helpers.\nfunc MarkAsHelper(optionalSkip ...int) {\n\tskip := 1\n\tif len(optionalSkip) > 0 {\n\t\tskip += optionalSkip[0]\n\t}\n\tpc, _, _, ok := runtime.Caller(skip)\n\tif ok {\n\t\tclLocator.addHelper(pc)\n\t}\n}\n\nfunc NewCustomCodeLocation(message string) CodeLocation {\n\treturn CodeLocation{\n\t\tCustomMessage: message,\n\t}\n}\n\nfunc NewCodeLocation(skip int) CodeLocation {\n\treturn clLocator.getCodeLocation(skip + 1)\n}\n\nfunc NewCodeLocationWithStackTrace(skip int) CodeLocation {\n\tcl := clLocator.getCodeLocation(skip + 1)\n\tcl.FullStackTrace = PruneStack(string(debug.Stack()), skip+1)\n\treturn cl\n}\n\n// PruneStack removes references to functions that are internal to Ginkgo\n// and the Go runtime from a stack string and a certain number of stack entries\n// at the beginning of the stack. The stack string has the format\n// as returned by runtime/debug.Stack. The leading goroutine information is\n// optional and always removed if present. Beware that runtime/debug.Stack\n// adds itself as first entry, so typically skip must be >= 1 to remove that\n// entry.\nfunc PruneStack(fullStackTrace string, skip int) string {\n\tstack := strings.Split(fullStackTrace, \"\\n\")\n\t// Ensure that the even entries are the method names and the\n\t// odd entries the source code information.\n\tif len(stack) > 0 && strings.HasPrefix(stack[0], \"goroutine \") {\n\t\t// Ignore \"goroutine 29 [running]:\" line.\n\t\tstack = stack[1:]\n\t}\n\t// The \"+1\" is for skipping over the initial entry, which is\n\t// runtime/debug.Stack() itself.\n\tif len(stack) > 2*(skip+1) {\n\t\tstack = stack[2*(skip+1):]\n\t}\n\tprunedStack := []string{}\n\tif os.Getenv(\"GINKGO_PRUNE_STACK\") == \"FALSE\" {\n\t\tprunedStack = stack\n\t} else {\n\t\tre := regexp.MustCompile(`\\/ginkgo\\/|\\/pkg\\/testing\\/|\\/pkg\\/runtime\\/`)\n\t\tfor i := 0; i < len(stack)/2; i++ {\n\t\t\t// We filter out based on the source code file name.\n\t\t\tif !re.MatchString(stack[i*2+1]) {\n\t\t\t\tprunedStack = append(prunedStack, stack[i*2])\n\t\t\t\tprunedStack = append(prunedStack, stack[i*2+1])\n\t\t\t}\n\t\t}\n\t}\n\treturn strings.Join(prunedStack, \"\\n\")\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/types/config.go",
    "content": "/*\nGinkgo accepts a number of configuration options.\nThese are documented [here](http://onsi.github.io/ginkgo/#the-ginkgo-cli)\n*/\n\npackage types\n\nimport (\n\t\"flag\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"runtime\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n)\n\n// Configuration controlling how an individual test suite is run\ntype SuiteConfig struct {\n\tRandomSeed            int64\n\tRandomizeAllSpecs     bool\n\tFocusStrings          []string\n\tSkipStrings           []string\n\tFocusFiles            []string\n\tSkipFiles             []string\n\tLabelFilter           string\n\tSemVerFilter          string\n\tFailOnPending         bool\n\tFailOnEmpty           bool\n\tFailFast              bool\n\tFlakeAttempts         int\n\tMustPassRepeatedly    int\n\tDryRun                bool\n\tPollProgressAfter     time.Duration\n\tPollProgressInterval  time.Duration\n\tTimeout               time.Duration\n\tEmitSpecProgress      bool // this is deprecated but its removal is causing compile issue for some users that were setting it manually\n\tOutputInterceptorMode string\n\tSourceRoots           []string\n\tGracePeriod           time.Duration\n\n\tParallelProcess int\n\tParallelTotal   int\n\tParallelHost    string\n}\n\nfunc NewDefaultSuiteConfig() SuiteConfig {\n\treturn SuiteConfig{\n\t\tRandomSeed:      time.Now().Unix(),\n\t\tTimeout:         time.Hour,\n\t\tParallelProcess: 1,\n\t\tParallelTotal:   1,\n\t\tGracePeriod:     30 * time.Second,\n\t}\n}\n\ntype VerbosityLevel uint\n\nconst (\n\tVerbosityLevelSuccinct VerbosityLevel = iota\n\tVerbosityLevelNormal\n\tVerbosityLevelVerbose\n\tVerbosityLevelVeryVerbose\n)\n\nfunc (vl VerbosityLevel) GT(comp VerbosityLevel) bool {\n\treturn vl > comp\n}\n\nfunc (vl VerbosityLevel) GTE(comp VerbosityLevel) bool {\n\treturn vl >= comp\n}\n\nfunc (vl VerbosityLevel) Is(comp VerbosityLevel) bool {\n\treturn vl == comp\n}\n\nfunc (vl VerbosityLevel) LTE(comp VerbosityLevel) bool {\n\treturn vl <= comp\n}\n\nfunc (vl VerbosityLevel) LT(comp VerbosityLevel) bool {\n\treturn vl < comp\n}\n\n// Configuration for Ginkgo's reporter\ntype ReporterConfig struct {\n\tNoColor        bool\n\tSuccinct       bool\n\tVerbose        bool\n\tVeryVerbose    bool\n\tFullTrace      bool\n\tShowNodeEvents bool\n\tGithubOutput   bool\n\tSilenceSkips   bool\n\tForceNewlines  bool\n\n\tJSONReport     string\n\tGoJSONReport   string\n\tJUnitReport    string\n\tTeamcityReport string\n}\n\nfunc (rc ReporterConfig) Verbosity() VerbosityLevel {\n\tif rc.Succinct {\n\t\treturn VerbosityLevelSuccinct\n\t} else if rc.Verbose {\n\t\treturn VerbosityLevelVerbose\n\t} else if rc.VeryVerbose {\n\t\treturn VerbosityLevelVeryVerbose\n\t}\n\treturn VerbosityLevelNormal\n}\n\nfunc (rc ReporterConfig) WillGenerateReport() bool {\n\treturn rc.JSONReport != \"\" || rc.GoJSONReport != \"\" || rc.JUnitReport != \"\" || rc.TeamcityReport != \"\"\n}\n\nfunc NewDefaultReporterConfig() ReporterConfig {\n\treturn ReporterConfig{}\n}\n\n// Configuration for the Ginkgo CLI\ntype CLIConfig struct {\n\t//for build, run, and watch\n\tRecurse      bool\n\tSkipPackage  string\n\tRequireSuite bool\n\tNumCompilers int\n\n\t//for run and watch only\n\tProcs                     int\n\tParallel                  bool\n\tAfterRunHook              string\n\tOutputDir                 string\n\tKeepSeparateCoverprofiles bool\n\tKeepSeparateReports       bool\n\n\t//for run only\n\tKeepGoing       bool\n\tUntilItFails    bool\n\tRepeat          int\n\tRandomizeSuites bool\n\n\t//for watch only\n\tDepth       int\n\tWatchRegExp string\n}\n\nfunc NewDefaultCLIConfig() CLIConfig {\n\treturn CLIConfig{\n\t\tDepth:       1,\n\t\tWatchRegExp: `\\.go$`,\n\t}\n}\n\nfunc (g CLIConfig) ComputedProcs() int {\n\tif g.Procs > 0 {\n\t\treturn g.Procs\n\t}\n\n\tn := 1\n\tif g.Parallel {\n\t\tn = runtime.GOMAXPROCS(-1)\n\t\tif n > 4 {\n\t\t\tn = n - 1\n\t\t}\n\t}\n\treturn n\n}\n\nfunc (g CLIConfig) ComputedNumCompilers() int {\n\tif g.NumCompilers > 0 {\n\t\treturn g.NumCompilers\n\t}\n\n\treturn runtime.GOMAXPROCS(-1)\n}\n\n// Configuration for the Ginkgo CLI capturing available go flags\n// A subset of Go flags are exposed by Ginkgo.  Some are available at compile time (e.g. ginkgo build) and others only at run time (e.g. ginkgo run - which has both build and run time flags).\n// More details can be found at:\n// https://docs.google.com/spreadsheets/d/1zkp-DS4hU4sAJl5eHh1UmgwxCPQhf3s5a8fbiOI8tJU/\ntype GoFlagsConfig struct {\n\t//build-time flags for code-and-performance analysis\n\tRace      bool\n\tCover     bool\n\tCoverMode string\n\tCoverPkg  string\n\tVet       string\n\n\t//run-time flags for code-and-performance analysis\n\tBlockProfile         string\n\tBlockProfileRate     int\n\tCoverProfile         string\n\tCPUProfile           string\n\tMemProfile           string\n\tMemProfileRate       int\n\tMutexProfile         string\n\tMutexProfileFraction int\n\tTrace                string\n\n\t//build-time flags for building\n\tA             bool\n\tASMFlags      string\n\tBuildMode     string\n\tBuildVCS      bool\n\tCompiler      string\n\tGCCGoFlags    string\n\tGCFlags       string\n\tInstallSuffix string\n\tLDFlags       string\n\tLinkShared    bool\n\tMod           string\n\tN             bool\n\tModFile       string\n\tModCacheRW    bool\n\tMSan          bool\n\tPkgDir        string\n\tTags          string\n\tTrimPath      bool\n\tToolExec      string\n\tWork          bool\n\tX             bool\n\tO             string\n}\n\nfunc NewDefaultGoFlagsConfig() GoFlagsConfig {\n\treturn GoFlagsConfig{}\n}\n\nfunc (g GoFlagsConfig) BinaryMustBePreserved() bool {\n\treturn g.BlockProfile != \"\" || g.CPUProfile != \"\" || g.MemProfile != \"\" || g.MutexProfile != \"\"\n}\n\nfunc (g GoFlagsConfig) NeedsSymbols() bool {\n\treturn g.BinaryMustBePreserved()\n}\n\n// Configuration that were deprecated in 2.0\ntype deprecatedConfig struct {\n\tDebugParallel                   bool\n\tNoisySkippings                  bool\n\tNoisyPendings                   bool\n\tRegexScansFilePath              bool\n\tSlowSpecThresholdWithFLoatUnits float64\n\tStream                          bool\n\tNotify                          bool\n\tEmitSpecProgress                bool\n\tSlowSpecThreshold               time.Duration\n\tAlwaysEmitGinkgoWriter          bool\n}\n\n// Flags\n\n// Flags sections used by both the CLI and the Ginkgo test process\nvar FlagSections = GinkgoFlagSections{\n\t{Key: \"multiple-suites\", Style: \"{{dark-green}}\", Heading: \"Running Multiple Test Suites\"},\n\t{Key: \"order\", Style: \"{{green}}\", Heading: \"Controlling Test Order\"},\n\t{Key: \"parallel\", Style: \"{{yellow}}\", Heading: \"Controlling Test Parallelism\"},\n\t{Key: \"low-level-parallel\", Style: \"{{yellow}}\", Heading: \"Controlling Test Parallelism\",\n\t\tDescription: \"These are set by the Ginkgo CLI, {{red}}{{bold}}do not set them manually{{/}} via go test.\\nUse ginkgo -p or ginkgo -procs=N instead.\"},\n\t{Key: \"filter\", Style: \"{{cyan}}\", Heading: \"Filtering Tests\"},\n\t{Key: \"failure\", Style: \"{{red}}\", Heading: \"Failure Handling\"},\n\t{Key: \"output\", Style: \"{{magenta}}\", Heading: \"Controlling Output Formatting\"},\n\t{Key: \"code-and-coverage-analysis\", Style: \"{{orange}}\", Heading: \"Code and Coverage Analysis\",\n\t\tDescription: \"When generating a cover files, please pass a filename {{bold}}not{{/}} a path.  To specify a different directory use {{magenta}}--output-dir{{/}}.\",\n\t},\n\t{Key: \"performance-analysis\", Style: \"{{coral}}\", Heading: \"Performance Analysis\",\n\t\tDescription: \"When generating profile files, please pass filenames {{bold}}not{{/}} a path.  Ginkgo will generate a profile file with the given name in the package's directory.  To specify a different directory use {{magenta}}--output-dir{{/}}.\",\n\t},\n\t{Key: \"debug\", Style: \"{{blue}}\", Heading: \"Debugging Tests\",\n\t\tDescription: \"In addition to these flags, Ginkgo supports a few debugging environment variables.  To change the parallel server protocol set {{blue}}GINKGO_PARALLEL_PROTOCOL{{/}} to {{bold}}HTTP{{/}}.  To avoid pruning callstacks set {{blue}}GINKGO_PRUNE_STACK{{/}} to {{bold}}FALSE{{/}}.\"},\n\t{Key: \"watch\", Style: \"{{light-yellow}}\", Heading: \"Controlling Ginkgo Watch\"},\n\t{Key: \"misc\", Style: \"{{light-gray}}\", Heading: \"Miscellaneous\"},\n\t{Key: \"go-build\", Style: \"{{light-gray}}\", Heading: \"Go Build Flags\", Succinct: true,\n\t\tDescription: \"These flags are inherited from go build.  Run {{bold}}ginkgo help build{{/}} for more detailed flag documentation.\"},\n}\n\n// SuiteConfigFlags provides flags for the Ginkgo test process, and CLI\nvar SuiteConfigFlags = GinkgoFlags{\n\t{KeyPath: \"S.RandomSeed\", Name: \"seed\", SectionKey: \"order\", UsageDefaultValue: \"randomly generated by Ginkgo\",\n\t\tUsage: \"The seed used to randomize the spec suite.\", AlwaysExport: true},\n\t{KeyPath: \"S.RandomizeAllSpecs\", Name: \"randomize-all\", SectionKey: \"order\", DeprecatedName: \"randomizeAllSpecs\", DeprecatedDocLink: \"changed-command-line-flags\",\n\t\tUsage: \"If set, ginkgo will randomize all specs together.  By default, ginkgo only randomizes the top level Describe, Context and When containers.\"},\n\n\t{KeyPath: \"S.FailOnPending\", Name: \"fail-on-pending\", SectionKey: \"failure\", DeprecatedName: \"failOnPending\", DeprecatedDocLink: \"changed-command-line-flags\",\n\t\tUsage: \"If set, ginkgo will mark the test suite as failed if any specs are pending.\"},\n\t{KeyPath: \"S.FailFast\", Name: \"fail-fast\", SectionKey: \"failure\", DeprecatedName: \"failFast\", DeprecatedDocLink: \"changed-command-line-flags\",\n\t\tUsage: \"If set, ginkgo will stop running a test suite after a failure occurs.\"},\n\t{KeyPath: \"S.FlakeAttempts\", Name: \"flake-attempts\", SectionKey: \"failure\", UsageDefaultValue: \"0 - failed tests are not retried\", DeprecatedName: \"flakeAttempts\", DeprecatedDocLink: \"changed-command-line-flags\",\n\t\tUsage: \"Make up to this many attempts to run each spec. If any of the attempts succeed, the suite will not be failed.\"},\n\t{KeyPath: \"S.FailOnEmpty\", Name: \"fail-on-empty\", SectionKey: \"failure\",\n\t\tUsage: \"If set, ginkgo will mark the test suite as failed if no specs are run.\"},\n\n\t{KeyPath: \"S.DryRun\", Name: \"dry-run\", SectionKey: \"debug\", DeprecatedName: \"dryRun\", DeprecatedDocLink: \"changed-command-line-flags\",\n\t\tUsage: \"If set, ginkgo will walk the test hierarchy without actually running anything.  Best paired with -v.\"},\n\t{KeyPath: \"S.PollProgressAfter\", Name: \"poll-progress-after\", SectionKey: \"debug\", UsageDefaultValue: \"0\",\n\t\tUsage: \"Emit node progress reports periodically if node hasn't completed after this duration.\"},\n\t{KeyPath: \"S.PollProgressInterval\", Name: \"poll-progress-interval\", SectionKey: \"debug\", UsageDefaultValue: \"10s\",\n\t\tUsage: \"The rate at which to emit node progress reports after poll-progress-after has elapsed.\"},\n\t{KeyPath: \"S.SourceRoots\", Name: \"source-root\", SectionKey: \"debug\",\n\t\tUsage: \"The location to look for source code when generating progress reports.  You can pass multiple --source-root flags.\"},\n\t{KeyPath: \"S.Timeout\", Name: \"timeout\", SectionKey: \"debug\", UsageDefaultValue: \"1h\",\n\t\tUsage: \"Test suite fails if it does not complete within the specified timeout.\"},\n\t{KeyPath: \"S.GracePeriod\", Name: \"grace-period\", SectionKey: \"debug\", UsageDefaultValue: \"30s\",\n\t\tUsage: \"When interrupted, Ginkgo will wait for GracePeriod for the current running node to exit before moving on to the next one.\"},\n\t{KeyPath: \"S.OutputInterceptorMode\", Name: \"output-interceptor-mode\", SectionKey: \"debug\", UsageArgument: \"dup, swap, or none\",\n\t\tUsage: \"If set, ginkgo will use the specified output interception strategy when running in parallel.  Defaults to dup on unix and swap on windows.\"},\n\n\t{KeyPath: \"S.LabelFilter\", Name: \"label-filter\", SectionKey: \"filter\", UsageArgument: \"expression\",\n\t\tUsage: \"If set, ginkgo will only run specs with labels that match the label-filter.  The passed-in expression can include boolean operations (!, &&, ||, ','), groupings via '()', and regular expressions '/regexp/'.  e.g. '(cat || dog) && !fruit'\"},\n\t{KeyPath: \"S.SemVerFilter\", Name: \"sem-ver-filter\", SectionKey: \"filter\", UsageArgument: \"version\",\n\t\tUsage: \"If set, ginkgo will only run specs with semantic version constraints that are satisfied by the provided version. e.g. '2.1.0'\"},\n\t{KeyPath: \"S.FocusStrings\", Name: \"focus\", SectionKey: \"filter\",\n\t\tUsage: \"If set, ginkgo will only run specs that match this regular expression. Can be specified multiple times, values are ORed.\"},\n\t{KeyPath: \"S.SkipStrings\", Name: \"skip\", SectionKey: \"filter\",\n\t\tUsage: \"If set, ginkgo will only run specs that do not match this regular expression. Can be specified multiple times, values are ORed.\"},\n\t{KeyPath: \"S.FocusFiles\", Name: \"focus-file\", SectionKey: \"filter\", UsageArgument: \"file (regexp) | file:line | file:lineA-lineB | file:line,line,line\",\n\t\tUsage: \"If set, ginkgo will only run specs in matching files. Can be specified multiple times, values are ORed.\"},\n\t{KeyPath: \"S.SkipFiles\", Name: \"skip-file\", SectionKey: \"filter\", UsageArgument: \"file (regexp) | file:line | file:lineA-lineB | file:line,line,line\",\n\t\tUsage: \"If set, ginkgo will skip specs in matching files. Can be specified multiple times, values are ORed.\"},\n\n\t{KeyPath: \"D.RegexScansFilePath\", DeprecatedName: \"regexScansFilePath\", DeprecatedDocLink: \"removed--regexscansfilepath\", DeprecatedVersion: \"2.0.0\"},\n\t{KeyPath: \"D.DebugParallel\", DeprecatedName: \"debug\", DeprecatedDocLink: \"removed--debug\", DeprecatedVersion: \"2.0.0\"},\n\t{KeyPath: \"D.EmitSpecProgress\", DeprecatedName: \"progress\", SectionKey: \"debug\",\n\t\tDeprecatedVersion: \"2.5.0\", Usage: \".  The functionality provided by --progress was confusing and is no longer needed.  Use --show-node-events instead to see node entry and exit events included in the timeline of failed and verbose specs.  Or you can run with -vv to always see all node events.  Lastly, --poll-progress-after and the PollProgressAfter decorator now provide a better mechanism for debugging specs that tend to get stuck.\"},\n}\n\n// ParallelConfigFlags provides flags for the Ginkgo test process (not the CLI)\nvar ParallelConfigFlags = GinkgoFlags{\n\t{KeyPath: \"S.ParallelProcess\", Name: \"parallel.process\", SectionKey: \"low-level-parallel\", UsageDefaultValue: \"1\",\n\t\tUsage: \"This worker process's (one-indexed) process number.  For running specs in parallel.\"},\n\t{KeyPath: \"S.ParallelTotal\", Name: \"parallel.total\", SectionKey: \"low-level-parallel\", UsageDefaultValue: \"1\",\n\t\tUsage: \"The total number of worker processes.  For running specs in parallel.\"},\n\t{KeyPath: \"S.ParallelHost\", Name: \"parallel.host\", SectionKey: \"low-level-parallel\", UsageDefaultValue: \"set by Ginkgo CLI\",\n\t\tUsage: \"The address for the server that will synchronize the processes.\"},\n}\n\n// ReporterConfigFlags provides flags for the Ginkgo test process, and CLI\nvar ReporterConfigFlags = GinkgoFlags{\n\t{KeyPath: \"R.NoColor\", Name: \"no-color\", SectionKey: \"output\", DeprecatedName: \"noColor\", DeprecatedDocLink: \"changed-command-line-flags\",\n\t\tUsage: \"If set, suppress color output in default reporter.  You can also set the environment variable GINKGO_NO_COLOR=TRUE\"},\n\t{KeyPath: \"R.Verbose\", Name: \"v\", SectionKey: \"output\",\n\t\tUsage: \"If set, emits more output including GinkgoWriter contents.\"},\n\t{KeyPath: \"R.VeryVerbose\", Name: \"vv\", SectionKey: \"output\",\n\t\tUsage: \"If set, emits with maximal verbosity - includes skipped and pending tests.\"},\n\t{KeyPath: \"R.Succinct\", Name: \"succinct\", SectionKey: \"output\",\n\t\tUsage: \"If set, default reporter prints out a very succinct report\"},\n\t{KeyPath: \"R.FullTrace\", Name: \"trace\", SectionKey: \"output\",\n\t\tUsage: \"If set, default reporter prints out the full stack trace when a failure occurs\"},\n\t{KeyPath: \"R.ShowNodeEvents\", Name: \"show-node-events\", SectionKey: \"output\",\n\t\tUsage: \"If set, default reporter prints node > Enter and < Exit events when specs fail\"},\n\t{KeyPath: \"R.GithubOutput\", Name: \"github-output\", SectionKey: \"output\",\n\t\tUsage: \"If set, default reporter prints easier to manage output in Github Actions.\"},\n\t{KeyPath: \"R.SilenceSkips\", Name: \"silence-skips\", SectionKey: \"output\",\n\t\tUsage: \"If set, default reporter will not print out skipped tests.\"},\n\t{KeyPath: \"R.ForceNewlines\", Name: \"force-newlines\", SectionKey: \"output\",\n\t\tUsage: \"If set, default reporter will ensure a newline appears after each test.\"},\n\n\t{KeyPath: \"R.JSONReport\", Name: \"json-report\", UsageArgument: \"filename.json\", SectionKey: \"output\",\n\t\tUsage: \"If set, Ginkgo will generate a JSON-formatted test report at the specified location.\"},\n\t{KeyPath: \"R.GoJSONReport\", Name: \"gojson-report\", UsageArgument: \"filename.json\", SectionKey: \"output\",\n\t\tUsage: \"If set, Ginkgo will generate a Go JSON-formatted test report at the specified location.\"},\n\t{KeyPath: \"R.JUnitReport\", Name: \"junit-report\", UsageArgument: \"filename.xml\", SectionKey: \"output\", DeprecatedName: \"reportFile\", DeprecatedDocLink: \"improved-reporting-infrastructure\",\n\t\tUsage: \"If set, Ginkgo will generate a conformant junit test report in the specified file.\"},\n\t{KeyPath: \"R.TeamcityReport\", Name: \"teamcity-report\", UsageArgument: \"filename\", SectionKey: \"output\",\n\t\tUsage: \"If set, Ginkgo will generate a Teamcity-formatted test report at the specified location.\"},\n\n\t{KeyPath: \"D.SlowSpecThresholdWithFLoatUnits\", DeprecatedName: \"slowSpecThreshold\", DeprecatedDocLink: \"changed--slowspecthreshold\",\n\t\tUsage: \"use --slow-spec-threshold instead and pass in a duration string (e.g. '5s', not '5.0')\"},\n\t{KeyPath: \"D.NoisyPendings\", DeprecatedName: \"noisyPendings\", DeprecatedDocLink: \"removed--noisypendings-and--noisyskippings\", DeprecatedVersion: \"2.0.0\"},\n\t{KeyPath: \"D.NoisySkippings\", DeprecatedName: \"noisySkippings\", DeprecatedDocLink: \"removed--noisypendings-and--noisyskippings\", DeprecatedVersion: \"2.0.0\"},\n\t{KeyPath: \"D.SlowSpecThreshold\", DeprecatedName: \"slow-spec-threshold\", SectionKey: \"output\", Usage: \"--slow-spec-threshold has been deprecated and will be removed in a future version of Ginkgo.  This feature has proved to be more noisy than useful.  You can use --poll-progress-after, instead, to get more actionable feedback about potentially slow specs and understand where they might be getting stuck.\", DeprecatedVersion: \"2.5.0\"},\n\t{KeyPath: \"D.AlwaysEmitGinkgoWriter\", DeprecatedName: \"always-emit-ginkgo-writer\", SectionKey: \"output\", Usage: \" - use -v instead, or one of Ginkgo's machine-readable report formats to get GinkgoWriter output for passing specs.\"},\n}\n\n// BuildTestSuiteFlagSet attaches to the CommandLine flagset and provides flags for the Ginkgo test process\nfunc BuildTestSuiteFlagSet(suiteConfig *SuiteConfig, reporterConfig *ReporterConfig) (GinkgoFlagSet, error) {\n\tflags := SuiteConfigFlags.CopyAppend(ParallelConfigFlags...).CopyAppend(ReporterConfigFlags...)\n\tflags = flags.WithPrefix(\"ginkgo\")\n\tbindings := map[string]any{\n\t\t\"S\": suiteConfig,\n\t\t\"R\": reporterConfig,\n\t\t\"D\": &deprecatedConfig{},\n\t}\n\textraGoFlagsSection := GinkgoFlagSection{Style: \"{{gray}}\", Heading: \"Go test flags\"}\n\n\treturn NewAttachedGinkgoFlagSet(flag.CommandLine, flags, bindings, FlagSections, extraGoFlagsSection)\n}\n\n// VetConfig validates that the Ginkgo test process' configuration is sound\nfunc VetConfig(flagSet GinkgoFlagSet, suiteConfig SuiteConfig, reporterConfig ReporterConfig) []error {\n\terrors := []error{}\n\n\tif flagSet.WasSet(\"count\") || flagSet.WasSet(\"test.count\") {\n\t\tflag := flagSet.Lookup(\"count\")\n\t\tif flag == nil {\n\t\t\tflag = flagSet.Lookup(\"test.count\")\n\t\t}\n\t\tcount, err := strconv.Atoi(flag.Value.String())\n\t\tif err != nil || count != 1 {\n\t\t\terrors = append(errors, GinkgoErrors.InvalidGoFlagCount())\n\t\t}\n\t}\n\n\tif flagSet.WasSet(\"parallel\") || flagSet.WasSet(\"test.parallel\") {\n\t\terrors = append(errors, GinkgoErrors.InvalidGoFlagParallel())\n\t}\n\n\tif suiteConfig.ParallelTotal < 1 {\n\t\terrors = append(errors, GinkgoErrors.InvalidParallelTotalConfiguration())\n\t}\n\n\tif suiteConfig.ParallelProcess > suiteConfig.ParallelTotal || suiteConfig.ParallelProcess < 1 {\n\t\terrors = append(errors, GinkgoErrors.InvalidParallelProcessConfiguration())\n\t}\n\n\tif suiteConfig.ParallelTotal > 1 && suiteConfig.ParallelHost == \"\" {\n\t\terrors = append(errors, GinkgoErrors.MissingParallelHostConfiguration())\n\t}\n\n\tif suiteConfig.DryRun && suiteConfig.ParallelTotal > 1 {\n\t\terrors = append(errors, GinkgoErrors.DryRunInParallelConfiguration())\n\t}\n\n\tif suiteConfig.GracePeriod <= 0 {\n\t\terrors = append(errors, GinkgoErrors.GracePeriodCannotBeZero())\n\t}\n\n\tif len(suiteConfig.FocusFiles) > 0 {\n\t\t_, err := ParseFileFilters(suiteConfig.FocusFiles)\n\t\tif err != nil {\n\t\t\terrors = append(errors, err)\n\t\t}\n\t}\n\n\tif len(suiteConfig.SkipFiles) > 0 {\n\t\t_, err := ParseFileFilters(suiteConfig.SkipFiles)\n\t\tif err != nil {\n\t\t\terrors = append(errors, err)\n\t\t}\n\t}\n\n\tif suiteConfig.LabelFilter != \"\" {\n\t\t_, err := ParseLabelFilter(suiteConfig.LabelFilter)\n\t\tif err != nil {\n\t\t\terrors = append(errors, err)\n\t\t}\n\t}\n\n\tif suiteConfig.SemVerFilter != \"\" {\n\t\t_, err := ParseSemVerFilter(suiteConfig.SemVerFilter)\n\t\tif err != nil {\n\t\t\terrors = append(errors, err)\n\t\t}\n\t}\n\n\tswitch strings.ToLower(suiteConfig.OutputInterceptorMode) {\n\tcase \"\", \"dup\", \"swap\", \"none\":\n\tdefault:\n\t\terrors = append(errors, GinkgoErrors.InvalidOutputInterceptorModeConfiguration(suiteConfig.OutputInterceptorMode))\n\t}\n\n\tnumVerbosity := 0\n\tfor _, v := range []bool{reporterConfig.Succinct, reporterConfig.Verbose, reporterConfig.VeryVerbose} {\n\t\tif v {\n\t\t\tnumVerbosity++\n\t\t}\n\t}\n\tif numVerbosity > 1 {\n\t\terrors = append(errors, GinkgoErrors.ConflictingVerbosityConfiguration())\n\t}\n\n\treturn errors\n}\n\n// GinkgoCLISharedFlags provides flags shared by the Ginkgo CLI's build, watch, and run commands\nvar GinkgoCLISharedFlags = GinkgoFlags{\n\t{KeyPath: \"C.Recurse\", Name: \"r\", SectionKey: \"multiple-suites\",\n\t\tUsage: \"If set, ginkgo finds and runs test suites under the current directory recursively.\"},\n\t{KeyPath: \"C.SkipPackage\", Name: \"skip-package\", SectionKey: \"multiple-suites\", DeprecatedName: \"skipPackage\", DeprecatedDocLink: \"changed-command-line-flags\",\n\t\tUsageArgument: \"comma-separated list of packages\",\n\t\tUsage:         \"A comma-separated list of package names to be skipped.  If any part of the package's path matches, that package is ignored.\"},\n\t{KeyPath: \"C.RequireSuite\", Name: \"require-suite\", SectionKey: \"failure\", DeprecatedName: \"requireSuite\", DeprecatedDocLink: \"changed-command-line-flags\",\n\t\tUsage: \"If set, Ginkgo fails if there are ginkgo tests in a directory but no invocation of RunSpecs.\"},\n\t{KeyPath: \"C.NumCompilers\", Name: \"compilers\", SectionKey: \"multiple-suites\", UsageDefaultValue: \"0 (will autodetect)\",\n\t\tUsage: \"When running multiple packages, the number of concurrent compilations to perform.\"},\n}\n\n// GinkgoCLIRunAndWatchFlags provides flags shared by the Ginkgo CLI's build and watch commands (but not run)\nvar GinkgoCLIRunAndWatchFlags = GinkgoFlags{\n\t{KeyPath: \"C.Procs\", Name: \"procs\", SectionKey: \"parallel\", UsageDefaultValue: \"1 (run in series)\",\n\t\tUsage: \"The number of parallel test nodes to run.\"},\n\t{KeyPath: \"C.Procs\", Name: \"nodes\", SectionKey: \"parallel\", UsageDefaultValue: \"1 (run in series)\",\n\t\tUsage: \"--nodes is an alias for --procs\"},\n\t{KeyPath: \"C.Parallel\", Name: \"p\", SectionKey: \"parallel\",\n\t\tUsage: \"If set, ginkgo will run in parallel with an auto-detected number of nodes.\"},\n\t{KeyPath: \"C.AfterRunHook\", Name: \"after-run-hook\", SectionKey: \"misc\", DeprecatedName: \"afterSuiteHook\", DeprecatedDocLink: \"changed-command-line-flags\",\n\t\tUsage: \"Command to run when a test suite completes.\"},\n\t{KeyPath: \"C.OutputDir\", Name: \"output-dir\", SectionKey: \"output\", UsageArgument: \"directory\", DeprecatedName: \"outputdir\", DeprecatedDocLink: \"improved-profiling-support\",\n\t\tUsage: \"A location to place all generated profiles and reports.\"},\n\t{KeyPath: \"C.KeepSeparateCoverprofiles\", Name: \"keep-separate-coverprofiles\", SectionKey: \"code-and-coverage-analysis\",\n\t\tUsage: \"If set, Ginkgo does not merge coverprofiles into one monolithic coverprofile.  The coverprofiles will remain in their respective package directories or in -output-dir if set.\"},\n\t{KeyPath: \"C.KeepSeparateReports\", Name: \"keep-separate-reports\", SectionKey: \"output\",\n\t\tUsage: \"If set, Ginkgo does not merge per-suite reports (e.g. -json-report) into one monolithic report for the entire testrun.  The reports will remain in their respective package directories or in -output-dir if set.\"},\n\n\t{KeyPath: \"D.Stream\", DeprecatedName: \"stream\", DeprecatedDocLink: \"removed--stream\", DeprecatedVersion: \"2.0.0\"},\n\t{KeyPath: \"D.Notify\", DeprecatedName: \"notify\", DeprecatedDocLink: \"removed--notify\", DeprecatedVersion: \"2.0.0\"},\n}\n\n// GinkgoCLIRunFlags provides flags for Ginkgo CLI's run command that aren't shared by any other commands\nvar GinkgoCLIRunFlags = GinkgoFlags{\n\t{KeyPath: \"C.KeepGoing\", Name: \"keep-going\", SectionKey: \"multiple-suites\", DeprecatedName: \"keepGoing\", DeprecatedDocLink: \"changed-command-line-flags\",\n\t\tUsage: \"If set, failures from earlier test suites do not prevent later test suites from running.\"},\n\t{KeyPath: \"C.UntilItFails\", Name: \"until-it-fails\", SectionKey: \"debug\", DeprecatedName: \"untilItFails\", DeprecatedDocLink: \"changed-command-line-flags\",\n\t\tUsage: \"If set, ginkgo will keep rerunning test suites until a failure occurs.\"},\n\t{KeyPath: \"C.Repeat\", Name: \"repeat\", SectionKey: \"debug\", UsageArgument: \"n\", UsageDefaultValue: \"0 - i.e. no repetition, run only once\",\n\t\tUsage: \"The number of times to re-run a test-suite.  Useful for debugging flaky tests.  If set to N the suite will be run N+1 times and will be required to pass each time.\"},\n\t{KeyPath: \"C.RandomizeSuites\", Name: \"randomize-suites\", SectionKey: \"order\", DeprecatedName: \"randomizeSuites\", DeprecatedDocLink: \"changed-command-line-flags\",\n\t\tUsage: \"If set, ginkgo will randomize the order in which test suites run.\"},\n}\n\n// GinkgoCLIRunFlags provides flags for Ginkgo CLI's watch command that aren't shared by any other commands\nvar GinkgoCLIWatchFlags = GinkgoFlags{\n\t{KeyPath: \"C.Depth\", Name: \"depth\", SectionKey: \"watch\",\n\t\tUsage: \"Ginkgo will watch dependencies down to this depth in the dependency tree.\"},\n\t{KeyPath: \"C.WatchRegExp\", Name: \"watch-regexp\", SectionKey: \"watch\", DeprecatedName: \"watchRegExp\", DeprecatedDocLink: \"changed-command-line-flags\",\n\t\tUsageArgument:     \"Regular Expression\",\n\t\tUsageDefaultValue: `\\.go$`,\n\t\tUsage:             \"Only files matching this regular expression will be watched for changes.\"},\n}\n\n// GoBuildFlags provides flags for the Ginkgo CLI build, run, and watch commands that capture go's build-time flags.  These are passed to go test -c by the ginkgo CLI\nvar GoBuildFlags = GinkgoFlags{\n\t{KeyPath: \"Go.Race\", Name: \"race\", SectionKey: \"code-and-coverage-analysis\",\n\t\tUsage: \"enable data race detection. Supported on linux/amd64, linux/ppc64le, linux/arm64, linux/s390x, freebsd/amd64, netbsd/amd64, darwin/amd64, darwin/arm64, and windows/amd64.\"},\n\t{KeyPath: \"Go.Vet\", Name: \"vet\", UsageArgument: \"list\", SectionKey: \"code-and-coverage-analysis\",\n\t\tUsage: `Configure the invocation of \"go vet\" during \"go test\" to use the comma-separated list of vet checks.  If list is empty (by explicitly passing --vet=\"\"), \"go test\" runs \"go vet\" with a curated list of checks believed to be always worth addressing.  If list is \"off\", \"go test\" does not run \"go vet\" at all.  Available checks can be found by running 'go doc cmd/vet'`},\n\t{KeyPath: \"Go.Cover\", Name: \"cover\", SectionKey: \"code-and-coverage-analysis\",\n\t\tUsage: \"Enable coverage analysis.\tNote that because coverage works by annotating the source code before compilation, compilation and test failures with coverage enabled may report line numbers that don't correspond to the original sources.\"},\n\t{KeyPath: \"Go.CoverMode\", Name: \"covermode\", UsageArgument: \"set,count,atomic\", SectionKey: \"code-and-coverage-analysis\",\n\t\tUsage: `Set the mode for coverage analysis for the package[s] being tested. 'set': does this statement run? 'count': how many times does this statement run? 'atomic': like count, but correct in multithreaded tests and more expensive (must use atomic with -race). Sets -cover`},\n\t{KeyPath: \"Go.CoverPkg\", Name: \"coverpkg\", UsageArgument: \"pattern1,pattern2,pattern3\", SectionKey: \"code-and-coverage-analysis\",\n\t\tUsage: \"Apply coverage analysis in each test to packages matching the patterns. \tThe default is for each test to analyze only the package being tested. See 'go help packages' for a description of package patterns. Sets -cover.\"},\n\n\t{KeyPath: \"Go.A\", Name: \"a\", SectionKey: \"go-build\",\n\t\tUsage: \"force rebuilding of packages that are already up-to-date.\"},\n\t{KeyPath: \"Go.ASMFlags\", Name: \"asmflags\", UsageArgument: \"'[pattern=]arg list'\", SectionKey: \"go-build\",\n\t\tUsage: \"arguments to pass on each go tool asm invocation.\"},\n\t{KeyPath: \"Go.BuildMode\", Name: \"buildmode\", UsageArgument: \"mode\", SectionKey: \"go-build\",\n\t\tUsage: \"build mode to use. See 'go help buildmode' for more.\"},\n\t{KeyPath: \"Go.BuildVCS\", Name: \"buildvcs\", SectionKey: \"go-build\",\n\t\tUsage: \"adds version control information.\"},\n\t{KeyPath: \"Go.Compiler\", Name: \"compiler\", UsageArgument: \"name\", SectionKey: \"go-build\",\n\t\tUsage: \"name of compiler to use, as in runtime.Compiler (gccgo or gc).\"},\n\t{KeyPath: \"Go.GCCGoFlags\", Name: \"gccgoflags\", UsageArgument: \"'[pattern=]arg list'\", SectionKey: \"go-build\",\n\t\tUsage: \"arguments to pass on each gccgo compiler/linker invocation.\"},\n\t{KeyPath: \"Go.GCFlags\", Name: \"gcflags\", UsageArgument: \"'[pattern=]arg list'\", SectionKey: \"go-build\",\n\t\tUsage: \"arguments to pass on each go tool compile invocation.\"},\n\t{KeyPath: \"Go.InstallSuffix\", Name: \"installsuffix\", SectionKey: \"go-build\",\n\t\tUsage: \"a suffix to use in the name of the package installation directory, in order to keep output separate from default builds. If using the -race flag, the install suffix is automatically set to raceor, if set explicitly, has _race appended to it. Likewise for the -msan flag.  Using a -buildmode option that requires non-default compile flags has a similar effect.\"},\n\t{KeyPath: \"Go.LDFlags\", Name: \"ldflags\", UsageArgument: \"'[pattern=]arg list'\", SectionKey: \"go-build\",\n\t\tUsage: \"arguments to pass on each go tool link invocation.\"},\n\t{KeyPath: \"Go.LinkShared\", Name: \"linkshared\", SectionKey: \"go-build\",\n\t\tUsage: \"build code that will be linked against shared libraries previously created with -buildmode=shared.\"},\n\t{KeyPath: \"Go.Mod\", Name: \"mod\", UsageArgument: \"mode (readonly, vendor, or mod)\", SectionKey: \"go-build\",\n\t\tUsage: \"module download mode to use: readonly, vendor, or mod.  See 'go help modules' for more.\"},\n\t{KeyPath: \"Go.ModCacheRW\", Name: \"modcacherw\", SectionKey: \"go-build\",\n\t\tUsage: \"leave newly-created directories in the module cache read-write instead of making them read-only.\"},\n\t{KeyPath: \"Go.ModFile\", Name: \"modfile\", UsageArgument: \"file\", SectionKey: \"go-build\",\n\t\tUsage: `in module aware mode, read (and possibly write) an alternate go.mod file instead of the one in the module root directory. A file named go.mod must still be present in order to determine the module root directory, but it is not accessed. When -modfile is specified, an alternate go.sum file is also used: its path is derived from the -modfile flag by trimming the \".mod\" extension and appending \".sum\".`},\n\t{KeyPath: \"Go.MSan\", Name: \"msan\", SectionKey: \"go-build\",\n\t\tUsage: \"enable interoperation with memory sanitizer. Supported only on linux/amd64, linux/arm64 and only with Clang/LLVM as the host C compiler. On linux/arm64, pie build mode will be used.\"},\n\t{KeyPath: \"Go.N\", Name: \"n\", SectionKey: \"go-build\",\n\t\tUsage: \"print the commands but do not run them.\"},\n\t{KeyPath: \"Go.PkgDir\", Name: \"pkgdir\", UsageArgument: \"dir\", SectionKey: \"go-build\",\n\t\tUsage: \"install and load all packages from dir instead of the usual locations. For example, when building with a non-standard configuration, use -pkgdir to keep generated packages in a separate location.\"},\n\t{KeyPath: \"Go.Tags\", Name: \"tags\", UsageArgument: \"tag,list\", SectionKey: \"go-build\",\n\t\tUsage: \"a comma-separated list of build tags to consider satisfied during the build. For more information about build tags, see the description of build constraints in the documentation for the go/build package. (Earlier versions of Go used a space-separated list, and that form is deprecated but still recognized.)\"},\n\t{KeyPath: \"Go.TrimPath\", Name: \"trimpath\", SectionKey: \"go-build\",\n\t\tUsage: `remove all file system paths from the resulting executable. Instead of absolute file system paths, the recorded file names will begin with either \"go\" (for the standard library), or a module path@version (when using modules), or a plain import path (when using GOPATH).`},\n\t{KeyPath: \"Go.ToolExec\", Name: \"toolexec\", UsageArgument: \"'cmd args'\", SectionKey: \"go-build\",\n\t\tUsage: \"a program to use to invoke toolchain programs like vet and asm. For example, instead of running asm, the go command will run cmd args /path/to/asm <arguments for asm>'.\"},\n\t{KeyPath: \"Go.Work\", Name: \"work\", SectionKey: \"go-build\",\n\t\tUsage: \"print the name of the temporary work directory and do not delete it when exiting.\"},\n\t{KeyPath: \"Go.X\", Name: \"x\", SectionKey: \"go-build\",\n\t\tUsage: \"print the commands.\"},\n}\n\nvar GoBuildOFlags = GinkgoFlags{\n\t{KeyPath: \"Go.O\", Name: \"o\", SectionKey: \"go-build\",\n\t\tUsage: \"output binary path (including name).\"},\n}\n\n// GoRunFlags provides flags for the Ginkgo CLI  run, and watch commands that capture go's run-time flags.  These are passed to the compiled test binary by the ginkgo CLI\nvar GoRunFlags = GinkgoFlags{\n\t{KeyPath: \"Go.CoverProfile\", Name: \"coverprofile\", UsageArgument: \"file\", SectionKey: \"code-and-coverage-analysis\",\n\t\tUsage: `Write a coverage profile to the file after all tests have passed. Sets -cover.  Must be passed a filename, not a path.  Use output-dir to control the location of the output.`},\n\t{KeyPath: \"Go.BlockProfile\", Name: \"blockprofile\", UsageArgument: \"file\", SectionKey: \"performance-analysis\",\n\t\tUsage: `Write a goroutine blocking profile to the specified file when all tests are complete. Preserves test binary.`},\n\t{KeyPath: \"Go.BlockProfileRate\", Name: \"blockprofilerate\", UsageArgument: \"rate\", SectionKey: \"performance-analysis\",\n\t\tUsage: `Control the detail provided in goroutine blocking profiles by calling runtime.SetBlockProfileRate with rate. See 'go doc runtime.SetBlockProfileRate'. The profiler aims to sample, on average, one blocking event every n nanoseconds the program spends blocked. By default, if -test.blockprofile is set without this flag, all blocking events are recorded, equivalent to -test.blockprofilerate=1.`},\n\t{KeyPath: \"Go.CPUProfile\", Name: \"cpuprofile\", UsageArgument: \"file\", SectionKey: \"performance-analysis\",\n\t\tUsage: `Write a CPU profile to the specified file before exiting. Preserves test binary.`},\n\t{KeyPath: \"Go.MemProfile\", Name: \"memprofile\", UsageArgument: \"file\", SectionKey: \"performance-analysis\",\n\t\tUsage: `Write an allocation profile to the file after all tests have passed. Preserves test binary.`},\n\t{KeyPath: \"Go.MemProfileRate\", Name: \"memprofilerate\", UsageArgument: \"rate\", SectionKey: \"performance-analysis\",\n\t\tUsage: `Enable more precise (and expensive) memory allocation profiles by setting runtime.MemProfileRate. See 'go doc runtime.MemProfileRate'. To profile all memory allocations, use -test.memprofilerate=1.`},\n\t{KeyPath: \"Go.MutexProfile\", Name: \"mutexprofile\", UsageArgument: \"file\", SectionKey: \"performance-analysis\",\n\t\tUsage: `Write a mutex contention profile to the specified file when all tests are complete. Preserves test binary.`},\n\t{KeyPath: \"Go.MutexProfileFraction\", Name: \"mutexprofilefraction\", UsageArgument: \"n\", SectionKey: \"performance-analysis\",\n\t\tUsage: `if >= 0, calls runtime.SetMutexProfileFraction()\tSample 1 in n stack traces of goroutines holding a contended mutex.`},\n\t{KeyPath: \"Go.Trace\", Name: \"execution-trace\", UsageArgument: \"file\", ExportAs: \"trace\", SectionKey: \"performance-analysis\",\n\t\tUsage: `Write an execution trace to the specified file before exiting.`},\n}\n\n// VetAndInitializeCLIAndGoConfig validates that the Ginkgo CLI's configuration is sound\n// It returns a potentially mutated copy of the config that rationalizes the configuration to ensure consistency for downstream consumers\nfunc VetAndInitializeCLIAndGoConfig(cliConfig CLIConfig, goFlagsConfig GoFlagsConfig) (CLIConfig, GoFlagsConfig, []error) {\n\terrors := []error{}\n\n\tif cliConfig.Repeat > 0 && cliConfig.UntilItFails {\n\t\terrors = append(errors, GinkgoErrors.BothRepeatAndUntilItFails())\n\t}\n\n\tif strings.ContainsRune(goFlagsConfig.CoverProfile, os.PathSeparator) {\n\t\terrors = append(errors, GinkgoErrors.ExpectFilenameNotPath(\"--coverprofile\", goFlagsConfig.CoverProfile))\n\t}\n\tif strings.ContainsRune(goFlagsConfig.CPUProfile, os.PathSeparator) {\n\t\terrors = append(errors, GinkgoErrors.ExpectFilenameNotPath(\"--cpuprofile\", goFlagsConfig.CPUProfile))\n\t}\n\tif strings.ContainsRune(goFlagsConfig.MemProfile, os.PathSeparator) {\n\t\terrors = append(errors, GinkgoErrors.ExpectFilenameNotPath(\"--memprofile\", goFlagsConfig.MemProfile))\n\t}\n\tif strings.ContainsRune(goFlagsConfig.BlockProfile, os.PathSeparator) {\n\t\terrors = append(errors, GinkgoErrors.ExpectFilenameNotPath(\"--blockprofile\", goFlagsConfig.BlockProfile))\n\t}\n\tif strings.ContainsRune(goFlagsConfig.MutexProfile, os.PathSeparator) {\n\t\terrors = append(errors, GinkgoErrors.ExpectFilenameNotPath(\"--mutexprofile\", goFlagsConfig.MutexProfile))\n\t}\n\n\t//initialize the output directory\n\tif cliConfig.OutputDir != \"\" {\n\t\terr := os.MkdirAll(cliConfig.OutputDir, 0777)\n\t\tif err != nil {\n\t\t\terrors = append(errors, err)\n\t\t}\n\t}\n\n\t//ensure cover mode is configured appropriately\n\tif goFlagsConfig.CoverMode != \"\" || goFlagsConfig.CoverPkg != \"\" || goFlagsConfig.CoverProfile != \"\" {\n\t\tgoFlagsConfig.Cover = true\n\t}\n\tif goFlagsConfig.Cover && goFlagsConfig.CoverProfile == \"\" {\n\t\tgoFlagsConfig.CoverProfile = \"coverprofile.out\"\n\t}\n\n\treturn cliConfig, goFlagsConfig, errors\n}\n\n// GenerateGoTestCompileArgs is used by the Ginkgo CLI to generate command line arguments to pass to the go test -c command when compiling the test\nfunc GenerateGoTestCompileArgs(goFlagsConfig GoFlagsConfig, packageToBuild string, pathToInvocationPath string, preserveSymbols bool) ([]string, error) {\n\t// if the user has set the CoverProfile run-time flag make sure to set the build-time cover flag to make sure\n\t// the built test binary can generate a coverprofile\n\tif goFlagsConfig.CoverProfile != \"\" {\n\t\tgoFlagsConfig.Cover = true\n\t}\n\n\tif goFlagsConfig.CoverPkg != \"\" {\n\t\tcoverPkgs := strings.Split(goFlagsConfig.CoverPkg, \",\")\n\t\tadjustedCoverPkgs := make([]string, len(coverPkgs))\n\t\tfor i, coverPkg := range coverPkgs {\n\t\t\tcoverPkg = strings.Trim(coverPkg, \" \")\n\t\t\tif strings.HasPrefix(coverPkg, \"./\") {\n\t\t\t\t// this is a relative coverPkg - we need to reroot it\n\t\t\t\tadjustedCoverPkgs[i] = \"./\" + filepath.Join(pathToInvocationPath, strings.TrimPrefix(coverPkg, \"./\"))\n\t\t\t} else {\n\t\t\t\t// this is a package name - don't touch it\n\t\t\t\tadjustedCoverPkgs[i] = coverPkg\n\t\t\t}\n\t\t}\n\t\tgoFlagsConfig.CoverPkg = strings.Join(adjustedCoverPkgs, \",\")\n\t}\n\n\tif !goFlagsConfig.NeedsSymbols() && goFlagsConfig.LDFlags == \"\" && !preserveSymbols {\n\t\tgoFlagsConfig.LDFlags = \"-w -s\"\n\t}\n\n\targs := []string{\"test\", \"-c\", packageToBuild}\n\tgoArgs, err := GenerateFlagArgs(\n\t\tGoBuildFlags.CopyAppend(GoBuildOFlags...),\n\t\tmap[string]any{\n\t\t\t\"Go\": &goFlagsConfig,\n\t\t},\n\t)\n\n\tif err != nil {\n\t\treturn []string{}, err\n\t}\n\targs = append(args, goArgs...)\n\treturn args, nil\n}\n\n// GenerateGinkgoTestRunArgs is used by the Ginkgo CLI to generate command line arguments to pass to the compiled Ginkgo test binary\nfunc GenerateGinkgoTestRunArgs(suiteConfig SuiteConfig, reporterConfig ReporterConfig, goFlagsConfig GoFlagsConfig) ([]string, error) {\n\tvar flags GinkgoFlags\n\tflags = SuiteConfigFlags.WithPrefix(\"ginkgo\")\n\tflags = flags.CopyAppend(ParallelConfigFlags.WithPrefix(\"ginkgo\")...)\n\tflags = flags.CopyAppend(ReporterConfigFlags.WithPrefix(\"ginkgo\")...)\n\tflags = flags.CopyAppend(GoRunFlags.WithPrefix(\"test\")...)\n\tbindings := map[string]any{\n\t\t\"S\":  &suiteConfig,\n\t\t\"R\":  &reporterConfig,\n\t\t\"Go\": &goFlagsConfig,\n\t}\n\n\treturn GenerateFlagArgs(flags, bindings)\n}\n\n// GenerateGoTestRunArgs is used by the Ginkgo CLI to generate command line arguments to pass to the compiled non-Ginkgo test binary\nfunc GenerateGoTestRunArgs(goFlagsConfig GoFlagsConfig) ([]string, error) {\n\tflags := GoRunFlags.WithPrefix(\"test\")\n\tbindings := map[string]any{\n\t\t\"Go\": &goFlagsConfig,\n\t}\n\n\targs, err := GenerateFlagArgs(flags, bindings)\n\tif err != nil {\n\t\treturn args, err\n\t}\n\targs = append(args, \"--test.v\")\n\treturn args, nil\n}\n\n// BuildRunCommandFlagSet builds the FlagSet for the `ginkgo run` command\nfunc BuildRunCommandFlagSet(suiteConfig *SuiteConfig, reporterConfig *ReporterConfig, cliConfig *CLIConfig, goFlagsConfig *GoFlagsConfig) (GinkgoFlagSet, error) {\n\tflags := SuiteConfigFlags\n\tflags = flags.CopyAppend(ReporterConfigFlags...)\n\tflags = flags.CopyAppend(GinkgoCLISharedFlags...)\n\tflags = flags.CopyAppend(GinkgoCLIRunAndWatchFlags...)\n\tflags = flags.CopyAppend(GinkgoCLIRunFlags...)\n\tflags = flags.CopyAppend(GoBuildFlags...)\n\tflags = flags.CopyAppend(GoRunFlags...)\n\n\tbindings := map[string]any{\n\t\t\"S\":  suiteConfig,\n\t\t\"R\":  reporterConfig,\n\t\t\"C\":  cliConfig,\n\t\t\"Go\": goFlagsConfig,\n\t\t\"D\":  &deprecatedConfig{},\n\t}\n\n\treturn NewGinkgoFlagSet(flags, bindings, FlagSections)\n}\n\n// BuildWatchCommandFlagSet builds the FlagSet for the `ginkgo watch` command\nfunc BuildWatchCommandFlagSet(suiteConfig *SuiteConfig, reporterConfig *ReporterConfig, cliConfig *CLIConfig, goFlagsConfig *GoFlagsConfig) (GinkgoFlagSet, error) {\n\tflags := SuiteConfigFlags\n\tflags = flags.CopyAppend(ReporterConfigFlags...)\n\tflags = flags.CopyAppend(GinkgoCLISharedFlags...)\n\tflags = flags.CopyAppend(GinkgoCLIRunAndWatchFlags...)\n\tflags = flags.CopyAppend(GinkgoCLIWatchFlags...)\n\tflags = flags.CopyAppend(GoBuildFlags...)\n\tflags = flags.CopyAppend(GoRunFlags...)\n\n\tbindings := map[string]any{\n\t\t\"S\":  suiteConfig,\n\t\t\"R\":  reporterConfig,\n\t\t\"C\":  cliConfig,\n\t\t\"Go\": goFlagsConfig,\n\t\t\"D\":  &deprecatedConfig{},\n\t}\n\n\treturn NewGinkgoFlagSet(flags, bindings, FlagSections)\n}\n\n// BuildBuildCommandFlagSet builds the FlagSet for the `ginkgo build` command\nfunc BuildBuildCommandFlagSet(cliConfig *CLIConfig, goFlagsConfig *GoFlagsConfig) (GinkgoFlagSet, error) {\n\tflags := GinkgoCLISharedFlags\n\tflags = flags.CopyAppend(GoBuildFlags...)\n\tflags = flags.CopyAppend(GoBuildOFlags...)\n\n\tbindings := map[string]any{\n\t\t\"C\":  cliConfig,\n\t\t\"Go\": goFlagsConfig,\n\t\t\"D\":  &deprecatedConfig{},\n\t}\n\n\tflagSections := make(GinkgoFlagSections, len(FlagSections))\n\tcopy(flagSections, FlagSections)\n\tfor i := range flagSections {\n\t\tif flagSections[i].Key == \"multiple-suites\" {\n\t\t\tflagSections[i].Heading = \"Building Multiple Suites\"\n\t\t}\n\t\tif flagSections[i].Key == \"go-build\" {\n\t\t\tflagSections[i] = GinkgoFlagSection{Key: \"go-build\", Style: \"{{/}}\", Heading: \"Go Build Flags\",\n\t\t\t\tDescription: \"These flags are inherited from go build.\"}\n\t\t}\n\t}\n\n\treturn NewGinkgoFlagSet(flags, bindings, flagSections)\n}\n\nfunc BuildLabelsCommandFlagSet(cliConfig *CLIConfig) (GinkgoFlagSet, error) {\n\tflags := GinkgoCLISharedFlags.SubsetWithNames(\"r\", \"skip-package\")\n\n\tbindings := map[string]any{\n\t\t\"C\": cliConfig,\n\t}\n\n\tflagSections := make(GinkgoFlagSections, len(FlagSections))\n\tcopy(flagSections, FlagSections)\n\tfor i := range flagSections {\n\t\tif flagSections[i].Key == \"multiple-suites\" {\n\t\t\tflagSections[i].Heading = \"Fetching Labels from Multiple Suites\"\n\t\t}\n\t}\n\n\treturn NewGinkgoFlagSet(flags, bindings, flagSections)\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/types/deprecated_types.go",
    "content": "package types\n\nimport (\n\t\"strconv\"\n\t\"time\"\n)\n\n/*\n\tA set of deprecations to make the transition from v1 to v2 easier for users who have written custom reporters.\n*/\n\ntype SuiteSummary = DeprecatedSuiteSummary\ntype SetupSummary = DeprecatedSetupSummary\ntype SpecSummary = DeprecatedSpecSummary\ntype SpecMeasurement = DeprecatedSpecMeasurement\ntype SpecComponentType = NodeType\ntype SpecFailure = DeprecatedSpecFailure\n\nvar (\n\tSpecComponentTypeInvalid                 = NodeTypeInvalid\n\tSpecComponentTypeContainer               = NodeTypeContainer\n\tSpecComponentTypeIt                      = NodeTypeIt\n\tSpecComponentTypeBeforeEach              = NodeTypeBeforeEach\n\tSpecComponentTypeJustBeforeEach          = NodeTypeJustBeforeEach\n\tSpecComponentTypeAfterEach               = NodeTypeAfterEach\n\tSpecComponentTypeJustAfterEach           = NodeTypeJustAfterEach\n\tSpecComponentTypeBeforeSuite             = NodeTypeBeforeSuite\n\tSpecComponentTypeSynchronizedBeforeSuite = NodeTypeSynchronizedBeforeSuite\n\tSpecComponentTypeAfterSuite              = NodeTypeAfterSuite\n\tSpecComponentTypeSynchronizedAfterSuite  = NodeTypeSynchronizedAfterSuite\n)\n\ntype DeprecatedSuiteSummary struct {\n\tSuiteDescription string\n\tSuiteSucceeded   bool\n\tSuiteID          string\n\n\tNumberOfSpecsBeforeParallelization int\n\tNumberOfTotalSpecs                 int\n\tNumberOfSpecsThatWillBeRun         int\n\tNumberOfPendingSpecs               int\n\tNumberOfSkippedSpecs               int\n\tNumberOfPassedSpecs                int\n\tNumberOfFailedSpecs                int\n\tNumberOfFlakedSpecs                int\n\tRunTime                            time.Duration\n}\n\ntype DeprecatedSetupSummary struct {\n\tComponentType SpecComponentType\n\tCodeLocation  CodeLocation\n\n\tState   SpecState\n\tRunTime time.Duration\n\tFailure SpecFailure\n\n\tCapturedOutput string\n\tSuiteID        string\n}\n\ntype DeprecatedSpecSummary struct {\n\tComponentTexts         []string\n\tComponentCodeLocations []CodeLocation\n\n\tState           SpecState\n\tRunTime         time.Duration\n\tFailure         SpecFailure\n\tIsMeasurement   bool\n\tNumberOfSamples int\n\tMeasurements    map[string]*DeprecatedSpecMeasurement\n\n\tCapturedOutput string\n\tSuiteID        string\n}\n\nfunc (s DeprecatedSpecSummary) HasFailureState() bool {\n\treturn s.State.Is(SpecStateFailureStates)\n}\n\nfunc (s DeprecatedSpecSummary) TimedOut() bool {\n\treturn false\n}\n\nfunc (s DeprecatedSpecSummary) Panicked() bool {\n\treturn s.State == SpecStatePanicked\n}\n\nfunc (s DeprecatedSpecSummary) Failed() bool {\n\treturn s.State == SpecStateFailed\n}\n\nfunc (s DeprecatedSpecSummary) Passed() bool {\n\treturn s.State == SpecStatePassed\n}\n\nfunc (s DeprecatedSpecSummary) Skipped() bool {\n\treturn s.State == SpecStateSkipped\n}\n\nfunc (s DeprecatedSpecSummary) Pending() bool {\n\treturn s.State == SpecStatePending\n}\n\ntype DeprecatedSpecFailure struct {\n\tMessage        string\n\tLocation       CodeLocation\n\tForwardedPanic string\n\n\tComponentIndex        int\n\tComponentType         SpecComponentType\n\tComponentCodeLocation CodeLocation\n}\n\ntype DeprecatedSpecMeasurement struct {\n\tName  string\n\tInfo  any\n\tOrder int\n\n\tResults []float64\n\n\tSmallest     float64\n\tLargest      float64\n\tAverage      float64\n\tStdDeviation float64\n\n\tSmallestLabel string\n\tLargestLabel  string\n\tAverageLabel  string\n\tUnits         string\n\tPrecision     int\n}\n\nfunc (s DeprecatedSpecMeasurement) PrecisionFmt() string {\n\tif s.Precision == 0 {\n\t\treturn \"%f\"\n\t}\n\n\tstr := strconv.Itoa(s.Precision)\n\n\treturn \"%.\" + str + \"f\"\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/types/deprecation_support.go",
    "content": "package types\n\nimport (\n\t\"os\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\t\"unicode\"\n\n\t\"github.com/onsi/ginkgo/v2/formatter\"\n)\n\ntype Deprecation struct {\n\tMessage string\n\tDocLink string\n\tVersion string\n}\n\ntype deprecations struct{}\n\nvar Deprecations = deprecations{}\n\nfunc (d deprecations) CustomReporter() Deprecation {\n\treturn Deprecation{\n\t\tMessage: \"Support for custom reporters has been removed in V2.  Please read the documentation linked to below for Ginkgo's new behavior and for a migration path:\",\n\t\tDocLink: \"removed-custom-reporters\",\n\t\tVersion: \"1.16.0\",\n\t}\n}\n\nfunc (d deprecations) Async() Deprecation {\n\treturn Deprecation{\n\t\tMessage: \"You are passing a Done channel to a test node to test asynchronous behavior.  This is deprecated in Ginkgo V2.  Your test will run synchronously and the timeout will be ignored.\",\n\t\tDocLink: \"removed-async-testing\",\n\t\tVersion: \"1.16.0\",\n\t}\n}\n\nfunc (d deprecations) Measure() Deprecation {\n\treturn Deprecation{\n\t\tMessage: \"Measure is deprecated and has been removed from Ginkgo V2.  Any Measure tests in your spec will not run.  Please migrate to gomega/gmeasure.\",\n\t\tDocLink: \"removed-measure\",\n\t\tVersion: \"1.16.3\",\n\t}\n}\n\nfunc (d deprecations) ParallelNode() Deprecation {\n\treturn Deprecation{\n\t\tMessage: \"GinkgoParallelNode is deprecated and will be removed in Ginkgo V2.  Please use GinkgoParallelProcess instead.\",\n\t\tDocLink: \"renamed-ginkgoparallelnode\",\n\t\tVersion: \"1.16.4\",\n\t}\n}\n\nfunc (d deprecations) CurrentGinkgoTestDescription() Deprecation {\n\treturn Deprecation{\n\t\tMessage: \"CurrentGinkgoTestDescription() is deprecated in Ginkgo V2.  Use CurrentSpecReport() instead.\",\n\t\tDocLink: \"changed-currentginkgotestdescription\",\n\t\tVersion: \"1.16.0\",\n\t}\n}\n\nfunc (d deprecations) Convert() Deprecation {\n\treturn Deprecation{\n\t\tMessage: \"The convert command is deprecated in Ginkgo V2\",\n\t\tDocLink: \"removed-ginkgo-convert\",\n\t\tVersion: \"1.16.0\",\n\t}\n}\n\nfunc (d deprecations) Blur() Deprecation {\n\treturn Deprecation{\n\t\tMessage: \"The blur command is deprecated in Ginkgo V2.  Use 'ginkgo unfocus' instead.\",\n\t\tVersion: \"1.16.0\",\n\t}\n}\n\nfunc (d deprecations) Nodot() Deprecation {\n\treturn Deprecation{\n\t\tMessage: \"The nodot command is deprecated in Ginkgo V2.  Please either dot-import Ginkgo or use the package identifier in your code to references objects and types provided by Ginkgo and Gomega.\",\n\t\tDocLink: \"removed-ginkgo-nodot\",\n\t\tVersion: \"1.16.0\",\n\t}\n}\n\nfunc (d deprecations) SuppressProgressReporting() Deprecation {\n\treturn Deprecation{\n\t\tMessage: \"Improvements to how reporters emit timeline information means that SuppressProgressReporting is no longer necessary and has been deprecated.\",\n\t\tVersion: \"2.5.0\",\n\t}\n}\n\ntype DeprecationTracker struct {\n\tdeprecations map[Deprecation][]CodeLocation\n\tlock         *sync.Mutex\n}\n\nfunc NewDeprecationTracker() *DeprecationTracker {\n\treturn &DeprecationTracker{\n\t\tdeprecations: map[Deprecation][]CodeLocation{},\n\t\tlock:         &sync.Mutex{},\n\t}\n}\n\nfunc (d *DeprecationTracker) TrackDeprecation(deprecation Deprecation, cl ...CodeLocation) {\n\tackVersion := os.Getenv(\"ACK_GINKGO_DEPRECATIONS\")\n\tif deprecation.Version != \"\" && ackVersion != \"\" {\n\t\tack := ParseSemVer(ackVersion)\n\t\tversion := ParseSemVer(deprecation.Version)\n\t\tif ack.GreaterThanOrEqualTo(version) {\n\t\t\treturn\n\t\t}\n\t}\n\n\td.lock.Lock()\n\tdefer d.lock.Unlock()\n\tif len(cl) == 1 {\n\t\td.deprecations[deprecation] = append(d.deprecations[deprecation], cl[0])\n\t} else {\n\t\td.deprecations[deprecation] = []CodeLocation{}\n\t}\n}\n\nfunc (d *DeprecationTracker) DidTrackDeprecations() bool {\n\td.lock.Lock()\n\tdefer d.lock.Unlock()\n\treturn len(d.deprecations) > 0\n}\n\nfunc (d *DeprecationTracker) DeprecationsReport() string {\n\td.lock.Lock()\n\tdefer d.lock.Unlock()\n\tout := formatter.F(\"{{light-yellow}}You're using deprecated Ginkgo functionality:{{/}}\\n\")\n\tout += formatter.F(\"{{light-yellow}}============================================={{/}}\\n\")\n\tfor deprecation, locations := range d.deprecations {\n\t\tout += formatter.Fi(1, \"{{yellow}}\"+deprecation.Message+\"{{/}}\\n\")\n\t\tif deprecation.DocLink != \"\" {\n\t\t\tout += formatter.Fi(1, \"{{bold}}Learn more at:{{/}} {{cyan}}{{underline}}https://onsi.github.io/ginkgo/MIGRATING_TO_V2#%s{{/}}\\n\", deprecation.DocLink)\n\t\t}\n\t\tfor _, location := range locations {\n\t\t\tout += formatter.Fi(2, \"{{gray}}%s{{/}}\\n\", location)\n\t\t}\n\t}\n\tout += formatter.F(\"\\n{{gray}}To silence deprecations that can be silenced set the following environment variable:{{/}}\\n\")\n\tout += formatter.Fi(1, \"{{gray}}ACK_GINKGO_DEPRECATIONS=%s{{/}}\\n\", VERSION)\n\treturn out\n}\n\ntype SemVer struct {\n\tMajor int\n\tMinor int\n\tPatch int\n}\n\nfunc (s SemVer) GreaterThanOrEqualTo(o SemVer) bool {\n\treturn (s.Major > o.Major) ||\n\t\t(s.Major == o.Major && s.Minor > o.Minor) ||\n\t\t(s.Major == o.Major && s.Minor == o.Minor && s.Patch >= o.Patch)\n}\n\nfunc ParseSemVer(semver string) SemVer {\n\tout := SemVer{}\n\tsemver = strings.TrimFunc(semver, func(r rune) bool {\n\t\treturn !(unicode.IsNumber(r) || r == '.')\n\t})\n\tcomponents := strings.Split(semver, \".\")\n\tif len(components) > 0 {\n\t\tout.Major, _ = strconv.Atoi(components[0])\n\t}\n\tif len(components) > 1 {\n\t\tout.Minor, _ = strconv.Atoi(components[1])\n\t}\n\tif len(components) > 2 {\n\t\tout.Patch, _ = strconv.Atoi(components[2])\n\t}\n\treturn out\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/types/enum_support.go",
    "content": "package types\n\nimport \"encoding/json\"\n\ntype EnumSupport struct {\n\ttoString map[uint]string\n\ttoEnum   map[string]uint\n\tmaxEnum  uint\n}\n\nfunc NewEnumSupport(toString map[uint]string) EnumSupport {\n\ttoEnum, maxEnum := map[string]uint{}, uint(0)\n\tfor k, v := range toString {\n\t\ttoEnum[v] = k\n\t\tif maxEnum < k {\n\t\t\tmaxEnum = k\n\t\t}\n\t}\n\treturn EnumSupport{toString: toString, toEnum: toEnum, maxEnum: maxEnum}\n}\n\nfunc (es EnumSupport) String(e uint) string {\n\tif e > es.maxEnum {\n\t\treturn es.toString[0]\n\t}\n\treturn es.toString[e]\n}\n\nfunc (es EnumSupport) UnmarshJSON(b []byte) (uint, error) {\n\tvar dec string\n\tif err := json.Unmarshal(b, &dec); err != nil {\n\t\treturn 0, err\n\t}\n\tout := es.toEnum[dec] // if we miss we get 0 which is what we want anyway\n\treturn out, nil\n}\n\nfunc (es EnumSupport) MarshJSON(e uint) ([]byte, error) {\n\tif e == 0 || e > es.maxEnum {\n\t\treturn json.Marshal(nil)\n\t}\n\treturn json.Marshal(es.toString[e])\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/types/errors.go",
    "content": "package types\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"strings\"\n\n\t\"github.com/onsi/ginkgo/v2/formatter\"\n)\n\ntype GinkgoError struct {\n\tHeading      string\n\tMessage      string\n\tDocLink      string\n\tCodeLocation CodeLocation\n}\n\nfunc (g GinkgoError) Error() string {\n\tout := formatter.F(\"{{bold}}{{red}}%s{{/}}\\n\", g.Heading)\n\tif (g.CodeLocation != CodeLocation{}) {\n\t\tcontentsOfLine := strings.TrimLeft(g.CodeLocation.ContentsOfLine(), \"\\t \")\n\t\tif contentsOfLine != \"\" {\n\t\t\tout += formatter.F(\"{{light-gray}}%s{{/}}\\n\", contentsOfLine)\n\t\t}\n\t\tout += formatter.F(\"{{gray}}%s{{/}}\\n\", g.CodeLocation)\n\t}\n\tif g.Message != \"\" {\n\t\tout += formatter.Fiw(1, formatter.COLS, g.Message)\n\t\tout += \"\\n\\n\"\n\t}\n\tif g.DocLink != \"\" {\n\t\tout += formatter.Fiw(1, formatter.COLS, \"{{bold}}Learn more at:{{/}} {{cyan}}{{underline}}http://onsi.github.io/ginkgo/#%s{{/}}\\n\", g.DocLink)\n\t}\n\n\treturn out\n}\n\ntype ginkgoErrors struct{}\n\nvar GinkgoErrors = ginkgoErrors{}\n\nfunc (g ginkgoErrors) UncaughtGinkgoPanic(cl CodeLocation) error {\n\treturn GinkgoError{\n\t\tHeading: \"Your Test Panicked\",\n\t\tMessage: `When you, or your assertion library, calls Ginkgo's Fail(),\nGinkgo panics to prevent subsequent assertions from running.\n\nNormally Ginkgo rescues this panic so you shouldn't see it.\n\nHowever, if you make an assertion in a goroutine, Ginkgo can't capture the panic.\nTo circumvent this, you should call\n\n\tdefer GinkgoRecover()\n\nat the top of the goroutine that caused this panic.\n\nAlternatively, you may have made an assertion outside of a Ginkgo\nleaf node (e.g. in a container node or some out-of-band function) - please move your assertion to\nan appropriate Ginkgo node (e.g. a BeforeSuite, BeforeEach, It, etc...).`,\n\t\tDocLink:      \"mental-model-how-ginkgo-handles-failure\",\n\t\tCodeLocation: cl,\n\t}\n}\n\nfunc (g ginkgoErrors) RerunningSuite() error {\n\treturn GinkgoError{\n\t\tHeading: \"Rerunning Suite\",\n\t\tMessage: formatter.F(`It looks like you are calling RunSpecs more than once. Ginkgo does not support rerunning suites.  If you want to rerun a suite try {{bold}}ginkgo --repeat=N{{/}} or {{bold}}ginkgo --until-it-fails{{/}}`),\n\t\tDocLink: \"repeating-spec-runs-and-managing-flaky-specs\",\n\t}\n}\n\n/* Tree construction errors */\n\nfunc (g ginkgoErrors) PushingNodeInRunPhase(nodeType NodeType, cl CodeLocation) error {\n\treturn GinkgoError{\n\t\tHeading: \"Ginkgo detected an issue with your spec structure\",\n\t\tMessage: formatter.F(\n\t\t\t`It looks like you are trying to add a {{bold}}[%s]{{/}} node\nto the Ginkgo spec tree in a leaf node {{bold}}after{{/}} the specs started running.\n\nTo enable randomization and parallelization Ginkgo requires the spec tree\nto be fully constructed up front.  In practice, this means that you can\nonly create nodes like {{bold}}[%s]{{/}} at the top-level or within the\nbody of a {{bold}}Describe{{/}}, {{bold}}Context{{/}}, or {{bold}}When{{/}}.`, nodeType, nodeType),\n\t\tCodeLocation: cl,\n\t\tDocLink:      \"mental-model-how-ginkgo-traverses-the-spec-hierarchy\",\n\t}\n}\n\nfunc (g ginkgoErrors) CaughtPanicDuringABuildPhase(caughtPanic any, cl CodeLocation) error {\n\treturn GinkgoError{\n\t\tHeading: \"Assertion or Panic detected during tree construction\",\n\t\tMessage: formatter.F(\n\t\t\t`Ginkgo detected a panic while constructing the spec tree.\nYou may be trying to make an assertion in the body of a container node\n(i.e. {{bold}}Describe{{/}}, {{bold}}Context{{/}}, or {{bold}}When{{/}}).\n\nPlease ensure all assertions are inside leaf nodes such as {{bold}}BeforeEach{{/}},\n{{bold}}It{{/}}, etc.\n\n{{bold}}Here's the content of the panic that was caught:{{/}}\n%v`, caughtPanic),\n\t\tCodeLocation: cl,\n\t\tDocLink:      \"no-assertions-in-container-nodes\",\n\t}\n}\n\nfunc (g ginkgoErrors) SuiteNodeInNestedContext(nodeType NodeType, cl CodeLocation) error {\n\tdocLink := \"suite-setup-and-cleanup-beforesuite-and-aftersuite\"\n\tif nodeType.Is(NodeTypeReportBeforeSuite | NodeTypeReportAfterSuite) {\n\t\tdocLink = \"reporting-nodes---reportbeforesuite-and-reportaftersuite\"\n\t}\n\n\treturn GinkgoError{\n\t\tHeading: \"Ginkgo detected an issue with your spec structure\",\n\t\tMessage: formatter.F(\n\t\t\t`It looks like you are trying to add a {{bold}}[%s]{{/}} node within a container node.\n\n{{bold}}%s{{/}} can only be called at the top level.`, nodeType, nodeType),\n\t\tCodeLocation: cl,\n\t\tDocLink:      docLink,\n\t}\n}\n\nfunc (g ginkgoErrors) SuiteNodeDuringRunPhase(nodeType NodeType, cl CodeLocation) error {\n\tdocLink := \"suite-setup-and-cleanup-beforesuite-and-aftersuite\"\n\tif nodeType.Is(NodeTypeReportBeforeSuite | NodeTypeReportAfterSuite) {\n\t\tdocLink = \"reporting-nodes---reportbeforesuite-and-reportaftersuite\"\n\t}\n\n\treturn GinkgoError{\n\t\tHeading: \"Ginkgo detected an issue with your spec structure\",\n\t\tMessage: formatter.F(\n\t\t\t`It looks like you are trying to add a {{bold}}[%s]{{/}} node within a leaf node after the spec started running.\n\n{{bold}}%s{{/}} can only be called at the top level.`, nodeType, nodeType),\n\t\tCodeLocation: cl,\n\t\tDocLink:      docLink,\n\t}\n}\n\nfunc (g ginkgoErrors) MultipleBeforeSuiteNodes(nodeType NodeType, cl CodeLocation, earlierNodeType NodeType, earlierCodeLocation CodeLocation) error {\n\treturn ginkgoErrorMultipleSuiteNodes(\"setup\", nodeType, cl, earlierNodeType, earlierCodeLocation)\n}\n\nfunc (g ginkgoErrors) MultipleAfterSuiteNodes(nodeType NodeType, cl CodeLocation, earlierNodeType NodeType, earlierCodeLocation CodeLocation) error {\n\treturn ginkgoErrorMultipleSuiteNodes(\"teardown\", nodeType, cl, earlierNodeType, earlierCodeLocation)\n}\n\nfunc ginkgoErrorMultipleSuiteNodes(setupOrTeardown string, nodeType NodeType, cl CodeLocation, earlierNodeType NodeType, earlierCodeLocation CodeLocation) error {\n\treturn GinkgoError{\n\t\tHeading: \"Ginkgo detected an issue with your spec structure\",\n\t\tMessage: formatter.F(\n\t\t\t`It looks like you are trying to add a {{bold}}[%s]{{/}} node but\nyou already have a {{bold}}[%s]{{/}} node defined at: {{gray}}%s{{/}}.\n\nGinkgo only allows you to define one suite %s node.`, nodeType, earlierNodeType, earlierCodeLocation, setupOrTeardown),\n\t\tCodeLocation: cl,\n\t\tDocLink:      \"suite-setup-and-cleanup-beforesuite-and-aftersuite\",\n\t}\n}\n\n/* Decorator errors */\nfunc (g ginkgoErrors) InvalidDecoratorForNodeType(cl CodeLocation, nodeType NodeType, decorator string) error {\n\treturn GinkgoError{\n\t\tHeading:      \"Invalid Decorator\",\n\t\tMessage:      formatter.F(`[%s] node cannot be passed a(n) '%s' decorator`, nodeType, decorator),\n\t\tCodeLocation: cl,\n\t\tDocLink:      \"node-decorators-overview\",\n\t}\n}\n\nfunc (g ginkgoErrors) InvalidDeclarationOfFocusedAndPending(cl CodeLocation, nodeType NodeType) error {\n\treturn GinkgoError{\n\t\tHeading:      \"Invalid Combination of Decorators: Focused and Pending\",\n\t\tMessage:      formatter.F(`[%s] node was decorated with both Focus and Pending.  At most one is allowed.`, nodeType),\n\t\tCodeLocation: cl,\n\t\tDocLink:      \"node-decorators-overview\",\n\t}\n}\n\nfunc (g ginkgoErrors) InvalidDeclarationOfFlakeAttemptsAndMustPassRepeatedly(cl CodeLocation, nodeType NodeType) error {\n\treturn GinkgoError{\n\t\tHeading:      \"Invalid Combination of Decorators: FlakeAttempts and MustPassRepeatedly\",\n\t\tMessage:      formatter.F(`[%s] node was decorated with both FlakeAttempts and MustPassRepeatedly. At most one is allowed.`, nodeType),\n\t\tCodeLocation: cl,\n\t\tDocLink:      \"node-decorators-overview\",\n\t}\n}\n\nfunc (g ginkgoErrors) UnknownDecorator(cl CodeLocation, nodeType NodeType, decorator any) error {\n\treturn GinkgoError{\n\t\tHeading:      \"Unknown Decorator\",\n\t\tMessage:      formatter.F(`[%s] node was passed an unknown decorator: '%#v'`, nodeType, decorator),\n\t\tCodeLocation: cl,\n\t\tDocLink:      \"node-decorators-overview\",\n\t}\n}\n\nfunc (g ginkgoErrors) InvalidBodyTypeForContainer(t reflect.Type, cl CodeLocation, nodeType NodeType) error {\n\treturn GinkgoError{\n\t\tHeading:      \"Invalid Function\",\n\t\tMessage:      formatter.F(`[%s] node must be passed {{bold}}func(){{/}} - i.e. functions that take nothing and return nothing.  You passed {{bold}}%s{{/}} instead.`, nodeType, t),\n\t\tCodeLocation: cl,\n\t\tDocLink:      \"node-decorators-overview\",\n\t}\n}\n\nfunc (g ginkgoErrors) InvalidBodyType(t reflect.Type, cl CodeLocation, nodeType NodeType) error {\n\tmustGet := \"{{bold}}func(){{/}}, {{bold}}func(ctx SpecContext){{/}}, or {{bold}}func(ctx context.Context){{/}}\"\n\tif nodeType.Is(NodeTypeContainer) {\n\t\tmustGet = \"{{bold}}func(){{/}}\"\n\t}\n\treturn GinkgoError{\n\t\tHeading: \"Invalid Function\",\n\t\tMessage: formatter.F(`[%s] node must be passed `+mustGet+`.\nYou passed {{bold}}%s{{/}} instead.`, nodeType, t),\n\t\tCodeLocation: cl,\n\t\tDocLink:      \"node-decorators-overview\",\n\t}\n}\n\nfunc (g ginkgoErrors) InvalidBodyTypeForSynchronizedBeforeSuiteProc1(t reflect.Type, cl CodeLocation) error {\n\tmustGet := \"{{bold}}func() []byte{{/}}, {{bold}}func(ctx SpecContext) []byte{{/}}, or {{bold}}func(ctx context.Context) []byte{{/}}, {{bold}}func(){{/}}, {{bold}}func(ctx SpecContext){{/}}, or {{bold}}func(ctx context.Context){{/}}\"\n\treturn GinkgoError{\n\t\tHeading: \"Invalid Function\",\n\t\tMessage: formatter.F(`[SynchronizedBeforeSuite] node must be passed `+mustGet+` for its first function.\nYou passed {{bold}}%s{{/}} instead.`, t),\n\t\tCodeLocation: cl,\n\t\tDocLink:      \"node-decorators-overview\",\n\t}\n}\n\nfunc (g ginkgoErrors) InvalidBodyTypeForSynchronizedBeforeSuiteAllProcs(t reflect.Type, cl CodeLocation) error {\n\tmustGet := \"{{bold}}func(){{/}}, {{bold}}func(ctx SpecContext){{/}}, or {{bold}}func(ctx context.Context){{/}}, {{bold}}func([]byte){{/}}, {{bold}}func(ctx SpecContext, []byte){{/}}, or {{bold}}func(ctx context.Context, []byte){{/}}\"\n\treturn GinkgoError{\n\t\tHeading: \"Invalid Function\",\n\t\tMessage: formatter.F(`[SynchronizedBeforeSuite] node must be passed `+mustGet+` for its second function.\nYou passed {{bold}}%s{{/}} instead.`, t),\n\t\tCodeLocation: cl,\n\t\tDocLink:      \"node-decorators-overview\",\n\t}\n}\n\nfunc (g ginkgoErrors) MultipleBodyFunctions(cl CodeLocation, nodeType NodeType) error {\n\treturn GinkgoError{\n\t\tHeading:      \"Multiple Functions\",\n\t\tMessage:      formatter.F(`[%s] node must be passed a single function - but more than one was passed in.`, nodeType),\n\t\tCodeLocation: cl,\n\t\tDocLink:      \"node-decorators-overview\",\n\t}\n}\n\nfunc (g ginkgoErrors) MissingBodyFunction(cl CodeLocation, nodeType NodeType) error {\n\treturn GinkgoError{\n\t\tHeading:      \"Missing Functions\",\n\t\tMessage:      formatter.F(`[%s] node must be passed a single function - but none was passed in.`, nodeType),\n\t\tCodeLocation: cl,\n\t\tDocLink:      \"node-decorators-overview\",\n\t}\n}\n\nfunc (g ginkgoErrors) InvalidTimeoutOrGracePeriodForNonContextNode(cl CodeLocation, nodeType NodeType) error {\n\treturn GinkgoError{\n\t\tHeading:      \"Invalid NodeTimeout SpecTimeout, or GracePeriod\",\n\t\tMessage:      formatter.F(`[%s] was passed NodeTimeout, SpecTimeout, or GracePeriod but does not have a callback that accepts a {{bold}}SpecContext{{/}} or {{bold}}context.Context{{/}}.  You must accept a context to enable timeouts and grace periods`, nodeType),\n\t\tCodeLocation: cl,\n\t\tDocLink:      \"spec-timeouts-and-interruptible-nodes\",\n\t}\n}\n\nfunc (g ginkgoErrors) InvalidTimeoutOrGracePeriodForNonContextCleanupNode(cl CodeLocation) error {\n\treturn GinkgoError{\n\t\tHeading:      \"Invalid NodeTimeout SpecTimeout, or GracePeriod\",\n\t\tMessage:      formatter.F(`[DeferCleanup] was passed NodeTimeout or GracePeriod but does not have a callback that accepts a {{bold}}SpecContext{{/}} or {{bold}}context.Context{{/}}.  You must accept a context to enable timeouts and grace periods`),\n\t\tCodeLocation: cl,\n\t\tDocLink:      \"spec-timeouts-and-interruptible-nodes\",\n\t}\n}\n\n/* Ordered Container errors */\nfunc (g ginkgoErrors) InvalidSerialNodeInNonSerialOrderedContainer(cl CodeLocation, nodeType NodeType) error {\n\treturn GinkgoError{\n\t\tHeading:      \"Invalid Serial Node in Non-Serial Ordered Container\",\n\t\tMessage:      formatter.F(`[%s] node was decorated with Serial but occurs in an Ordered container that is not marked Serial.  Move the Serial decorator to the outer-most Ordered container to mark all ordered specs within the container as serial.`, nodeType),\n\t\tCodeLocation: cl,\n\t\tDocLink:      \"node-decorators-overview\",\n\t}\n}\n\nfunc (g ginkgoErrors) SetupNodeNotInOrderedContainer(cl CodeLocation, nodeType NodeType) error {\n\treturn GinkgoError{\n\t\tHeading:      \"Setup Node not in Ordered Container\",\n\t\tMessage:      fmt.Sprintf(\"[%s] setup nodes must appear inside an Ordered container.  They cannot be nested within other containers, even containers in an ordered container.\", nodeType),\n\t\tCodeLocation: cl,\n\t\tDocLink:      \"ordered-containers\",\n\t}\n}\n\nfunc (g ginkgoErrors) InvalidContinueOnFailureDecoration(cl CodeLocation) error {\n\treturn GinkgoError{\n\t\tHeading:      \"ContinueOnFailure not decorating an outermost Ordered Container\",\n\t\tMessage:      \"ContinueOnFailure can only decorate an Ordered container, and this Ordered container must be the outermost Ordered container.\",\n\t\tCodeLocation: cl,\n\t\tDocLink:      \"ordered-containers\",\n\t}\n}\n\n/* DeferCleanup errors */\nfunc (g ginkgoErrors) DeferCleanupInvalidFunction(cl CodeLocation) error {\n\treturn GinkgoError{\n\t\tHeading:      \"DeferCleanup requires a valid function\",\n\t\tMessage:      \"You must pass DeferCleanup a function to invoke.  This function must return zero or one values - if it does return, it must return an error.  The function can take arbitrarily many arguments and you should provide these to DeferCleanup to pass along to the function.\",\n\t\tCodeLocation: cl,\n\t\tDocLink:      \"cleaning-up-our-cleanup-code-defercleanup\",\n\t}\n}\n\nfunc (g ginkgoErrors) PushingCleanupNodeDuringTreeConstruction(cl CodeLocation) error {\n\treturn GinkgoError{\n\t\tHeading:      \"DeferCleanup must be called inside a setup or subject node\",\n\t\tMessage:      \"You must call DeferCleanup inside a setup node (e.g. BeforeEach, BeforeSuite, AfterAll...) or a subject node (i.e. It).  You can't call DeferCleanup at the top-level or in a container node - use the After* family of setup nodes instead.\",\n\t\tCodeLocation: cl,\n\t\tDocLink:      \"cleaning-up-our-cleanup-code-defercleanup\",\n\t}\n}\n\nfunc (g ginkgoErrors) PushingCleanupInReportingNode(cl CodeLocation, nodeType NodeType) error {\n\treturn GinkgoError{\n\t\tHeading:      fmt.Sprintf(\"DeferCleanup cannot be called in %s\", nodeType),\n\t\tMessage:      \"Please inline your cleanup code - Ginkgo won't run cleanup code after a Reporting node.\",\n\t\tCodeLocation: cl,\n\t\tDocLink:      \"cleaning-up-our-cleanup-code-defercleanup\",\n\t}\n}\n\nfunc (g ginkgoErrors) PushingCleanupInCleanupNode(cl CodeLocation) error {\n\treturn GinkgoError{\n\t\tHeading:      \"DeferCleanup cannot be called in a DeferCleanup callback\",\n\t\tMessage:      \"Please inline your cleanup code - Ginkgo doesn't let you call DeferCleanup from within DeferCleanup\",\n\t\tCodeLocation: cl,\n\t\tDocLink:      \"cleaning-up-our-cleanup-code-defercleanup\",\n\t}\n}\n\n/* ReportEntry errors */\nfunc (g ginkgoErrors) TooManyReportEntryValues(cl CodeLocation, arg any) error {\n\treturn GinkgoError{\n\t\tHeading:      \"Too Many ReportEntry Values\",\n\t\tMessage:      formatter.F(`{{bold}}AddGinkgoReport{{/}} can only be given one value. Got unexpected value: %#v`, arg),\n\t\tCodeLocation: cl,\n\t\tDocLink:      \"attaching-data-to-reports\",\n\t}\n}\n\nfunc (g ginkgoErrors) AddReportEntryNotDuringRunPhase(cl CodeLocation) error {\n\treturn GinkgoError{\n\t\tHeading:      \"Ginkgo detected an issue with your spec structure\",\n\t\tMessage:      formatter.F(`It looks like you are calling {{bold}}AddGinkgoReport{{/}} outside of a running spec.  Make sure you call {{bold}}AddGinkgoReport{{/}} inside a runnable node such as It or BeforeEach and not inside the body of a container such as Describe or Context.`),\n\t\tCodeLocation: cl,\n\t\tDocLink:      \"attaching-data-to-reports\",\n\t}\n}\n\n/* By errors */\nfunc (g ginkgoErrors) ByNotDuringRunPhase(cl CodeLocation) error {\n\treturn GinkgoError{\n\t\tHeading:      \"Ginkgo detected an issue with your spec structure\",\n\t\tMessage:      formatter.F(`It looks like you are calling {{bold}}By{{/}} outside of a running spec.  Make sure you call {{bold}}By{{/}} inside a runnable node such as It or BeforeEach and not inside the body of a container such as Describe or Context.`),\n\t\tCodeLocation: cl,\n\t\tDocLink:      \"documenting-complex-specs-by\",\n\t}\n}\n\n/* FileFilter and SkipFilter errors */\nfunc (g ginkgoErrors) InvalidFileFilter(filter string) error {\n\treturn GinkgoError{\n\t\tHeading: \"Invalid File Filter\",\n\t\tMessage: fmt.Sprintf(`The provided file filter: \"%s\" is invalid.  File filters must have the format \"file\", \"file:lines\" where \"file\" is a regular expression that will match against the file path and lines is a comma-separated list of integers (e.g. file:1,5,7) or line-ranges (e.g. file:1-3,5-9) or both (e.g. file:1,5-9)`, filter),\n\t\tDocLink: \"filtering-specs\",\n\t}\n}\n\nfunc (g ginkgoErrors) InvalidFileFilterRegularExpression(filter string, err error) error {\n\treturn GinkgoError{\n\t\tHeading: \"Invalid File Filter Regular Expression\",\n\t\tMessage: fmt.Sprintf(`The provided file filter: \"%s\" included an invalid regular expression.  regexp.Compile error: %s`, filter, err),\n\t\tDocLink: \"filtering-specs\",\n\t}\n}\n\n/* Label Errors */\nfunc (g ginkgoErrors) SyntaxErrorParsingLabelFilter(input string, location int, error string) error {\n\tvar message string\n\tif location >= 0 {\n\t\tfor i, r := range input {\n\t\t\tif i == location {\n\t\t\t\tmessage += \"{{red}}{{bold}}{{underline}}\"\n\t\t\t}\n\t\t\tmessage += string(r)\n\t\t\tif i == location {\n\t\t\t\tmessage += \"{{/}}\"\n\t\t\t}\n\t\t}\n\t} else {\n\t\tmessage = input\n\t}\n\tmessage += \"\\n\" + error\n\treturn GinkgoError{\n\t\tHeading: \"Syntax Error Parsing Label Filter\",\n\t\tMessage: message,\n\t\tDocLink: \"spec-labels\",\n\t}\n}\n\nfunc (g ginkgoErrors) InvalidLabel(label string, cl CodeLocation) error {\n\treturn GinkgoError{\n\t\tHeading:      \"Invalid Label\",\n\t\tMessage:      fmt.Sprintf(\"'%s' is an invalid label.  Labels cannot contain of the following characters: '&|!,()/'\", label),\n\t\tCodeLocation: cl,\n\t\tDocLink:      \"spec-labels\",\n\t}\n}\n\nfunc (g ginkgoErrors) InvalidEmptyLabel(cl CodeLocation) error {\n\treturn GinkgoError{\n\t\tHeading:      \"Invalid Empty Label\",\n\t\tMessage:      \"Labels cannot be empty\",\n\t\tCodeLocation: cl,\n\t\tDocLink:      \"spec-labels\",\n\t}\n}\n\nfunc (g ginkgoErrors) InvalidSemVerConstraint(semVerConstraint, errMsg string, cl CodeLocation) error {\n\treturn GinkgoError{\n\t\tHeading:      \"Invalid SemVerConstraint\",\n\t\tMessage:      fmt.Sprintf(\"'%s' is an invalid SemVerConstraint: %s\", semVerConstraint, errMsg),\n\t\tCodeLocation: cl,\n\t\tDocLink:      \"spec-semantic-version-filtering\",\n\t}\n}\n\nfunc (g ginkgoErrors) InvalidEmptySemVerConstraint(cl CodeLocation) error {\n\treturn GinkgoError{\n\t\tHeading:      \"Invalid Empty SemVerConstraint\",\n\t\tMessage:      \"SemVerConstraint cannot be empty\",\n\t\tCodeLocation: cl,\n\t\tDocLink:      \"spec-semantic-version-filtering\",\n\t}\n}\n\nfunc (g ginkgoErrors) InvalidEmptyComponentForSemVerConstraint(cl CodeLocation) error {\n\treturn GinkgoError{\n\t\tHeading:      \"Invalid Empty Component for ComponentSemVerConstraint\",\n\t\tMessage:      \"ComponentSemVerConstraint requires a non-empty component name\",\n\t\tCodeLocation: cl,\n\t\tDocLink: \"spec-semantic-version-filtering\",\n\t}\n}\n\n/* Table errors */\nfunc (g ginkgoErrors) MultipleEntryBodyFunctionsForTable(cl CodeLocation) error {\n\treturn GinkgoError{\n\t\tHeading:      \"DescribeTable passed multiple functions\",\n\t\tMessage:      \"It looks like you are passing multiple functions into DescribeTable.  Only one function can be passed in.  This function will be called for each Entry in the table.\",\n\t\tCodeLocation: cl,\n\t\tDocLink:      \"table-specs\",\n\t}\n}\n\nfunc (g ginkgoErrors) InvalidEntryDescription(cl CodeLocation) error {\n\treturn GinkgoError{\n\t\tHeading:      \"Invalid Entry description\",\n\t\tMessage:      \"Entry description functions must be a string, a function that accepts the entry parameters and returns a string, or nil.\",\n\t\tCodeLocation: cl,\n\t\tDocLink:      \"table-specs\",\n\t}\n}\n\nfunc (g ginkgoErrors) MissingParametersForTableFunction(cl CodeLocation) error {\n\treturn GinkgoError{\n\t\tHeading:      \"No parameters have been passed to the Table Function\",\n\t\tMessage:      \"The Table Function expected at least 1 parameter\",\n\t\tCodeLocation: cl,\n\t\tDocLink:      \"table-specs\",\n\t}\n}\n\nfunc (g ginkgoErrors) IncorrectParameterTypeForTable(i int, name string, cl CodeLocation) error {\n\treturn GinkgoError{\n\t\tHeading:      \"DescribeTable passed incorrect parameter type\",\n\t\tMessage:      fmt.Sprintf(\"Parameter #%d passed to DescribeTable is of incorrect type <%s>\", i, name),\n\t\tCodeLocation: cl,\n\t\tDocLink:      \"table-specs\",\n\t}\n}\n\nfunc (g ginkgoErrors) TooFewParametersToTableFunction(expected, actual int, kind string, cl CodeLocation) error {\n\treturn GinkgoError{\n\t\tHeading:      fmt.Sprintf(\"Too few parameters passed in to %s\", kind),\n\t\tMessage:      fmt.Sprintf(\"The %s expected %d parameters but you passed in %d\", kind, expected, actual),\n\t\tCodeLocation: cl,\n\t\tDocLink:      \"table-specs\",\n\t}\n}\n\nfunc (g ginkgoErrors) TooManyParametersToTableFunction(expected, actual int, kind string, cl CodeLocation) error {\n\treturn GinkgoError{\n\t\tHeading:      fmt.Sprintf(\"Too many parameters passed in to %s\", kind),\n\t\tMessage:      fmt.Sprintf(\"The %s expected %d parameters but you passed in %d\", kind, expected, actual),\n\t\tCodeLocation: cl,\n\t\tDocLink:      \"table-specs\",\n\t}\n}\n\nfunc (g ginkgoErrors) IncorrectParameterTypeToTableFunction(i int, expected, actual reflect.Type, kind string, cl CodeLocation) error {\n\treturn GinkgoError{\n\t\tHeading:      fmt.Sprintf(\"Incorrect parameters type passed to %s\", kind),\n\t\tMessage:      fmt.Sprintf(\"The %s expected parameter #%d to be of type <%s> but you passed in <%s>\", kind, i, expected, actual),\n\t\tCodeLocation: cl,\n\t\tDocLink:      \"table-specs\",\n\t}\n}\n\nfunc (g ginkgoErrors) IncorrectVariadicParameterTypeToTableFunction(expected, actual reflect.Type, kind string, cl CodeLocation) error {\n\treturn GinkgoError{\n\t\tHeading:      fmt.Sprintf(\"Incorrect parameters type passed to %s\", kind),\n\t\tMessage:      fmt.Sprintf(\"The %s expected its variadic parameters to be of type <%s> but you passed in <%s>\", kind, expected, actual),\n\t\tCodeLocation: cl,\n\t\tDocLink:      \"table-specs\",\n\t}\n}\n\nfunc (g ginkgoErrors) ContextsCannotBeUsedInSubtreeTables(cl CodeLocation) error {\n\treturn GinkgoError{\n\t\tHeading:      \"Contexts cannot be used in subtree tables\",\n\t\tMessage:      \"You''ve defined a subtree body function that accepts a context but did not provide one in the table entry.  Ginkgo SpecContexts can only be passed in to subject and setup nodes - so if you are trying to implement a spec timeout you should request a context in the It function within your subtree body function, not in the subtree body function itself.\",\n\t\tCodeLocation: cl,\n\t\tDocLink:      \"table-specs\",\n\t}\n}\n\n/* Parallel Synchronization errors */\n\nfunc (g ginkgoErrors) AggregatedReportUnavailableDueToNodeDisappearing() error {\n\treturn GinkgoError{\n\t\tHeading: \"Test Report unavailable because a Ginkgo parallel process disappeared\",\n\t\tMessage: \"The aggregated report could not be fetched for a ReportAfterSuite node.  A Ginkgo parallel process disappeared before it could finish reporting.\",\n\t}\n}\n\nfunc (g ginkgoErrors) SynchronizedBeforeSuiteFailedOnProc1() error {\n\treturn GinkgoError{\n\t\tHeading: \"SynchronizedBeforeSuite failed on Ginkgo parallel process #1\",\n\t\tMessage: \"The first SynchronizedBeforeSuite function running on Ginkgo parallel process #1 failed.  This suite will now abort.\",\n\t}\n}\n\nfunc (g ginkgoErrors) SynchronizedBeforeSuiteDisappearedOnProc1() error {\n\treturn GinkgoError{\n\t\tHeading: \"Process #1 disappeared before SynchronizedBeforeSuite could report back\",\n\t\tMessage: \"Ginkgo parallel process #1 disappeared before the first SynchronizedBeforeSuite function completed.  This suite will now abort.\",\n\t}\n}\n\n/* Configuration errors */\n\nfunc (g ginkgoErrors) UnknownTypePassedToRunSpecs(value any) error {\n\treturn GinkgoError{\n\t\tHeading: \"Unknown Type passed to RunSpecs\",\n\t\tMessage: fmt.Sprintf(\"RunSpecs() accepts labels, and configuration of type types.SuiteConfig and/or types.ReporterConfig.\\n You passed in: %v\", value),\n\t}\n}\n\nvar sharedParallelErrorMessage = \"It looks like you are trying to run specs in parallel with go test.\\nThis is unsupported and you should use the ginkgo CLI instead.\"\n\nfunc (g ginkgoErrors) InvalidParallelTotalConfiguration() error {\n\treturn GinkgoError{\n\t\tHeading: \"-ginkgo.parallel.total must be >= 1\",\n\t\tMessage: sharedParallelErrorMessage,\n\t\tDocLink: \"spec-parallelization\",\n\t}\n}\n\nfunc (g ginkgoErrors) InvalidParallelProcessConfiguration() error {\n\treturn GinkgoError{\n\t\tHeading: \"-ginkgo.parallel.process is one-indexed and must be <= ginkgo.parallel.total\",\n\t\tMessage: sharedParallelErrorMessage,\n\t\tDocLink: \"spec-parallelization\",\n\t}\n}\n\nfunc (g ginkgoErrors) MissingParallelHostConfiguration() error {\n\treturn GinkgoError{\n\t\tHeading: \"-ginkgo.parallel.host is missing\",\n\t\tMessage: sharedParallelErrorMessage,\n\t\tDocLink: \"spec-parallelization\",\n\t}\n}\n\nfunc (g ginkgoErrors) UnreachableParallelHost(host string) error {\n\treturn GinkgoError{\n\t\tHeading: \"Could not reach ginkgo.parallel.host:\" + host,\n\t\tMessage: sharedParallelErrorMessage,\n\t\tDocLink: \"spec-parallelization\",\n\t}\n}\n\nfunc (g ginkgoErrors) DryRunInParallelConfiguration() error {\n\treturn GinkgoError{\n\t\tHeading: \"Ginkgo only performs -dryRun in serial mode.\",\n\t\tMessage: \"Please try running ginkgo -dryRun again, but without -p or -procs to ensure the suite is running in series.\",\n\t}\n}\n\nfunc (g ginkgoErrors) GracePeriodCannotBeZero() error {\n\treturn GinkgoError{\n\t\tHeading: \"Ginkgo requires a positive --grace-period.\",\n\t\tMessage: \"Please set --grace-period to a positive duration.  The default is 30s.\",\n\t}\n}\n\nfunc (g ginkgoErrors) ConflictingVerbosityConfiguration() error {\n\treturn GinkgoError{\n\t\tHeading: \"Conflicting reporter verbosity settings.\",\n\t\tMessage: \"You can't set more than one of -v, -vv and --succinct.  Please pick one!\",\n\t}\n}\n\nfunc (g ginkgoErrors) InvalidOutputInterceptorModeConfiguration(value string) error {\n\treturn GinkgoError{\n\t\tHeading: fmt.Sprintf(\"Invalid value '%s' for --output-interceptor-mode.\", value),\n\t\tMessage: \"You must choose one of 'dup', 'swap', or 'none'.\",\n\t}\n}\n\nfunc (g ginkgoErrors) InvalidGoFlagCount() error {\n\treturn GinkgoError{\n\t\tHeading: \"Use of go test -count\",\n\t\tMessage: \"Ginkgo does not support using go test -count to rerun suites.  Only -count=1 is allowed.  To repeat suite runs, please use the ginkgo cli and `ginkgo -until-it-fails` or `ginkgo -repeat=N`.\",\n\t}\n}\n\nfunc (g ginkgoErrors) InvalidGoFlagParallel() error {\n\treturn GinkgoError{\n\t\tHeading: \"Use of go test -parallel\",\n\t\tMessage: \"Go test's implementation of parallelization does not actually parallelize Ginkgo specs.  Please use the ginkgo cli and `ginkgo -p` or `ginkgo -procs=N` instead.\",\n\t}\n}\n\nfunc (g ginkgoErrors) BothRepeatAndUntilItFails() error {\n\treturn GinkgoError{\n\t\tHeading: \"--repeat and --until-it-fails are both set\",\n\t\tMessage: \"--until-it-fails directs Ginkgo to rerun specs indefinitely until they fail.  --repeat directs Ginkgo to rerun specs a set number of times.  You can't set both... which would you like?\",\n\t}\n}\n\nfunc (g ginkgoErrors) ExpectFilenameNotPath(flag string, path string) error {\n\treturn GinkgoError{\n\t\tHeading: fmt.Sprintf(\"%s expects a filename but was given a path: %s\", flag, path),\n\t\tMessage: fmt.Sprintf(\"%s takes a filename, not a path.  Use --output-dir to specify a directory to collect all test outputs.\", flag),\n\t}\n}\n\nfunc (g ginkgoErrors) FlagAfterPositionalParameter() error {\n\treturn GinkgoError{\n\t\tHeading: \"Malformed arguments - detected a flag after the package liste\",\n\t\tMessage: \"Make sure all flags appear {{bold}}after{{/}} the Ginkgo subcommand and {{bold}}before{{/}} your list of packages (or './...').\\n{{gray}}e.g. 'ginkgo run -p my_package' is valid but `ginkgo -p run my_package` is not.\\n{{gray}}e.g. 'ginkgo -p -vet=\\\"\\\" ./...' is valid but 'ginkgo -p ./... -vet=\\\"\\\"' is not{{/}}\",\n\t}\n}\n\n/* Stack-Trace parsing errors */\n\nfunc (g ginkgoErrors) FailedToParseStackTrace(message string) error {\n\treturn GinkgoError{\n\t\tHeading: \"Failed to Parse Stack Trace\",\n\t\tMessage: message,\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/types/file_filter.go",
    "content": "package types\n\nimport (\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n)\n\nfunc ParseFileFilters(filters []string) (FileFilters, error) {\n\tffs := FileFilters{}\n\tfor _, filter := range filters {\n\t\tff := FileFilter{}\n\t\tif filter == \"\" {\n\t\t\treturn nil, GinkgoErrors.InvalidFileFilter(filter)\n\t\t}\n\t\tcomponents := strings.Split(filter, \":\")\n\t\tif !(len(components) == 1 || len(components) == 2) {\n\t\t\treturn nil, GinkgoErrors.InvalidFileFilter(filter)\n\t\t}\n\n\t\tvar err error\n\t\tff.Filename, err = regexp.Compile(components[0])\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif len(components) == 2 {\n\t\t\tlineFilters := strings.Split(components[1], \",\")\n\t\t\tfor _, lineFilter := range lineFilters {\n\t\t\t\tcomponents := strings.Split(lineFilter, \"-\")\n\t\t\t\tif len(components) == 1 {\n\t\t\t\t\tline, err := strconv.Atoi(strings.TrimSpace(components[0]))\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn nil, GinkgoErrors.InvalidFileFilter(filter)\n\t\t\t\t\t}\n\t\t\t\t\tff.LineFilters = append(ff.LineFilters, LineFilter{line, line + 1})\n\t\t\t\t} else if len(components) == 2 {\n\t\t\t\t\tline1, err := strconv.Atoi(strings.TrimSpace(components[0]))\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn nil, GinkgoErrors.InvalidFileFilter(filter)\n\t\t\t\t\t}\n\t\t\t\t\tline2, err := strconv.Atoi(strings.TrimSpace(components[1]))\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn nil, GinkgoErrors.InvalidFileFilter(filter)\n\t\t\t\t\t}\n\t\t\t\t\tff.LineFilters = append(ff.LineFilters, LineFilter{line1, line2})\n\t\t\t\t} else {\n\t\t\t\t\treturn nil, GinkgoErrors.InvalidFileFilter(filter)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tffs = append(ffs, ff)\n\t}\n\treturn ffs, nil\n}\n\ntype FileFilter struct {\n\tFilename    *regexp.Regexp\n\tLineFilters LineFilters\n}\n\nfunc (f FileFilter) Matches(locations []CodeLocation) bool {\n\tfor _, location := range locations {\n\t\tif f.Filename.MatchString(location.FileName) &&\n\t\t\tf.LineFilters.Matches(location.LineNumber) {\n\t\t\treturn true\n\t\t}\n\n\t}\n\treturn false\n}\n\ntype FileFilters []FileFilter\n\nfunc (ffs FileFilters) Matches(locations []CodeLocation) bool {\n\tfor _, ff := range ffs {\n\t\tif ff.Matches(locations) {\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn false\n}\n\ntype LineFilter struct {\n\tMin int\n\tMax int\n}\n\nfunc (lf LineFilter) Matches(line int) bool {\n\treturn lf.Min <= line && line < lf.Max\n}\n\ntype LineFilters []LineFilter\n\nfunc (lfs LineFilters) Matches(line int) bool {\n\tif len(lfs) == 0 {\n\t\treturn true\n\t}\n\n\tfor _, lf := range lfs {\n\t\tif lf.Matches(line) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/types/flags.go",
    "content": "package types\n\nimport (\n\t\"flag\"\n\t\"fmt\"\n\t\"io\"\n\t\"reflect\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/onsi/ginkgo/v2/formatter\"\n)\n\ntype GinkgoFlag struct {\n\tName       string\n\tKeyPath    string\n\tSectionKey string\n\n\tUsage             string\n\tUsageArgument     string\n\tUsageDefaultValue string\n\n\tDeprecatedName    string\n\tDeprecatedDocLink string\n\tDeprecatedVersion string\n\n\tExportAs     string\n\tAlwaysExport bool\n}\n\ntype GinkgoFlags []GinkgoFlag\n\nfunc (f GinkgoFlags) CopyAppend(flags ...GinkgoFlag) GinkgoFlags {\n\tout := GinkgoFlags{}\n\tout = append(out, f...)\n\tout = append(out, flags...)\n\treturn out\n}\n\nfunc (f GinkgoFlags) WithPrefix(prefix string) GinkgoFlags {\n\tif prefix == \"\" {\n\t\treturn f\n\t}\n\tout := GinkgoFlags{}\n\tfor _, flag := range f {\n\t\tif flag.Name != \"\" {\n\t\t\tflag.Name = prefix + \".\" + flag.Name\n\t\t}\n\t\tif flag.DeprecatedName != \"\" {\n\t\t\tflag.DeprecatedName = prefix + \".\" + flag.DeprecatedName\n\t\t}\n\t\tif flag.ExportAs != \"\" {\n\t\t\tflag.ExportAs = prefix + \".\" + flag.ExportAs\n\t\t}\n\t\tout = append(out, flag)\n\t}\n\treturn out\n}\n\nfunc (f GinkgoFlags) SubsetWithNames(names ...string) GinkgoFlags {\n\tout := GinkgoFlags{}\n\tfor _, flag := range f {\n\t\tfor _, name := range names {\n\t\t\tif flag.Name == name {\n\t\t\t\tout = append(out, flag)\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\treturn out\n}\n\ntype GinkgoFlagSection struct {\n\tKey         string\n\tStyle       string\n\tSuccinct    bool\n\tHeading     string\n\tDescription string\n}\n\ntype GinkgoFlagSections []GinkgoFlagSection\n\nfunc (gfs GinkgoFlagSections) Lookup(key string) (GinkgoFlagSection, bool) {\n\tfor _, section := range gfs {\n\t\tif section.Key == key {\n\t\t\treturn section, true\n\t\t}\n\t}\n\n\treturn GinkgoFlagSection{}, false\n}\n\ntype GinkgoFlagSet struct {\n\tflags    GinkgoFlags\n\tbindings any\n\n\tsections            GinkgoFlagSections\n\textraGoFlagsSection GinkgoFlagSection\n\n\tflagSet *flag.FlagSet\n}\n\n// Call NewGinkgoFlagSet to create GinkgoFlagSet that creates and binds to it's own *flag.FlagSet\nfunc NewGinkgoFlagSet(flags GinkgoFlags, bindings any, sections GinkgoFlagSections) (GinkgoFlagSet, error) {\n\treturn bindFlagSet(GinkgoFlagSet{\n\t\tflags:    flags,\n\t\tbindings: bindings,\n\t\tsections: sections,\n\t}, nil)\n}\n\n// Call NewGinkgoFlagSet to create GinkgoFlagSet that extends an existing *flag.FlagSet\nfunc NewAttachedGinkgoFlagSet(flagSet *flag.FlagSet, flags GinkgoFlags, bindings any, sections GinkgoFlagSections, extraGoFlagsSection GinkgoFlagSection) (GinkgoFlagSet, error) {\n\treturn bindFlagSet(GinkgoFlagSet{\n\t\tflags:               flags,\n\t\tbindings:            bindings,\n\t\tsections:            sections,\n\t\textraGoFlagsSection: extraGoFlagsSection,\n\t}, flagSet)\n}\n\nfunc bindFlagSet(f GinkgoFlagSet, flagSet *flag.FlagSet) (GinkgoFlagSet, error) {\n\tif flagSet == nil {\n\t\tf.flagSet = flag.NewFlagSet(\"\", flag.ContinueOnError)\n\t\t//suppress all output as Ginkgo is responsible for formatting usage\n\t\tf.flagSet.SetOutput(io.Discard)\n\t} else {\n\t\tf.flagSet = flagSet\n\t\t//we're piggybacking on an existing flagset (typically go test) so we have limited control\n\t\t//on user feedback\n\t\tf.flagSet.Usage = f.substituteUsage\n\t}\n\n\tfor _, flag := range f.flags {\n\t\tname := flag.Name\n\n\t\tdeprecatedUsage := \"[DEPRECATED]\"\n\t\tdeprecatedName := flag.DeprecatedName\n\t\tif name != \"\" {\n\t\t\tdeprecatedUsage = fmt.Sprintf(\"[DEPRECATED] use --%s instead\", name)\n\t\t} else if flag.Usage != \"\" {\n\t\t\tdeprecatedUsage += \" \" + flag.Usage\n\t\t}\n\n\t\tvalue, ok := valueAtKeyPath(f.bindings, flag.KeyPath)\n\t\tif !ok {\n\t\t\treturn GinkgoFlagSet{}, fmt.Errorf(\"could not load KeyPath: %s\", flag.KeyPath)\n\t\t}\n\n\t\tiface, addr := value.Interface(), value.Addr().Interface()\n\n\t\tswitch value.Type() {\n\t\tcase reflect.TypeOf(string(\"\")):\n\t\t\tif name != \"\" {\n\t\t\t\tf.flagSet.StringVar(addr.(*string), name, iface.(string), flag.Usage)\n\t\t\t}\n\t\t\tif deprecatedName != \"\" {\n\t\t\t\tf.flagSet.StringVar(addr.(*string), deprecatedName, iface.(string), deprecatedUsage)\n\t\t\t}\n\t\tcase reflect.TypeOf(int64(0)):\n\t\t\tif name != \"\" {\n\t\t\t\tf.flagSet.Int64Var(addr.(*int64), name, iface.(int64), flag.Usage)\n\t\t\t}\n\t\t\tif deprecatedName != \"\" {\n\t\t\t\tf.flagSet.Int64Var(addr.(*int64), deprecatedName, iface.(int64), deprecatedUsage)\n\t\t\t}\n\t\tcase reflect.TypeOf(float64(0)):\n\t\t\tif name != \"\" {\n\t\t\t\tf.flagSet.Float64Var(addr.(*float64), name, iface.(float64), flag.Usage)\n\t\t\t}\n\t\t\tif deprecatedName != \"\" {\n\t\t\t\tf.flagSet.Float64Var(addr.(*float64), deprecatedName, iface.(float64), deprecatedUsage)\n\t\t\t}\n\t\tcase reflect.TypeOf(int(0)):\n\t\t\tif name != \"\" {\n\t\t\t\tf.flagSet.IntVar(addr.(*int), name, iface.(int), flag.Usage)\n\t\t\t}\n\t\t\tif deprecatedName != \"\" {\n\t\t\t\tf.flagSet.IntVar(addr.(*int), deprecatedName, iface.(int), deprecatedUsage)\n\t\t\t}\n\t\tcase reflect.TypeOf(bool(true)):\n\t\t\tif name != \"\" {\n\t\t\t\tf.flagSet.BoolVar(addr.(*bool), name, iface.(bool), flag.Usage)\n\t\t\t}\n\t\t\tif deprecatedName != \"\" {\n\t\t\t\tf.flagSet.BoolVar(addr.(*bool), deprecatedName, iface.(bool), deprecatedUsage)\n\t\t\t}\n\t\tcase reflect.TypeOf(time.Duration(0)):\n\t\t\tif name != \"\" {\n\t\t\t\tf.flagSet.DurationVar(addr.(*time.Duration), name, iface.(time.Duration), flag.Usage)\n\t\t\t}\n\t\t\tif deprecatedName != \"\" {\n\t\t\t\tf.flagSet.DurationVar(addr.(*time.Duration), deprecatedName, iface.(time.Duration), deprecatedUsage)\n\t\t\t}\n\n\t\tcase reflect.TypeOf([]string{}):\n\t\t\tif name != \"\" {\n\t\t\t\tf.flagSet.Var(stringSliceVar{value}, name, flag.Usage)\n\t\t\t}\n\t\t\tif deprecatedName != \"\" {\n\t\t\t\tf.flagSet.Var(stringSliceVar{value}, deprecatedName, deprecatedUsage)\n\t\t\t}\n\t\tdefault:\n\t\t\treturn GinkgoFlagSet{}, fmt.Errorf(\"unsupported type %T\", iface)\n\t\t}\n\t}\n\n\treturn f, nil\n}\n\nfunc (f GinkgoFlagSet) IsZero() bool {\n\treturn f.flagSet == nil\n}\n\nfunc (f GinkgoFlagSet) WasSet(name string) bool {\n\tfound := false\n\tf.flagSet.Visit(func(f *flag.Flag) {\n\t\tif f.Name == name {\n\t\t\tfound = true\n\t\t}\n\t})\n\n\treturn found\n}\n\nfunc (f GinkgoFlagSet) Lookup(name string) *flag.Flag {\n\treturn f.flagSet.Lookup(name)\n}\n\nfunc (f GinkgoFlagSet) Parse(args []string) ([]string, error) {\n\tif f.IsZero() {\n\t\treturn args, nil\n\t}\n\terr := f.flagSet.Parse(args)\n\tif err != nil {\n\t\treturn []string{}, err\n\t}\n\treturn f.flagSet.Args(), nil\n}\n\nfunc (f GinkgoFlagSet) ValidateDeprecations(deprecationTracker *DeprecationTracker) {\n\tif f.IsZero() {\n\t\treturn\n\t}\n\tf.flagSet.Visit(func(flag *flag.Flag) {\n\t\tfor _, ginkgoFlag := range f.flags {\n\t\t\tif ginkgoFlag.DeprecatedName != \"\" && strings.HasSuffix(flag.Name, ginkgoFlag.DeprecatedName) {\n\t\t\t\tmessage := fmt.Sprintf(\"--%s is deprecated\", ginkgoFlag.DeprecatedName)\n\t\t\t\tif ginkgoFlag.Name != \"\" {\n\t\t\t\t\tmessage = fmt.Sprintf(\"--%s is deprecated, use --%s instead\", ginkgoFlag.DeprecatedName, ginkgoFlag.Name)\n\t\t\t\t} else if ginkgoFlag.Usage != \"\" {\n\t\t\t\t\tmessage += \" \" + ginkgoFlag.Usage\n\t\t\t\t}\n\n\t\t\t\tdeprecationTracker.TrackDeprecation(Deprecation{\n\t\t\t\t\tMessage: message,\n\t\t\t\t\tDocLink: ginkgoFlag.DeprecatedDocLink,\n\t\t\t\t\tVersion: ginkgoFlag.DeprecatedVersion,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t})\n}\n\nfunc (f GinkgoFlagSet) Usage() string {\n\tif f.IsZero() {\n\t\treturn \"\"\n\t}\n\tgroupedFlags := map[GinkgoFlagSection]GinkgoFlags{}\n\tungroupedFlags := GinkgoFlags{}\n\tmanagedFlags := map[string]bool{}\n\textraGoFlags := []*flag.Flag{}\n\n\tfor _, flag := range f.flags {\n\t\tmanagedFlags[flag.Name] = true\n\t\tmanagedFlags[flag.DeprecatedName] = true\n\n\t\tif flag.Name == \"\" {\n\t\t\tcontinue\n\t\t}\n\n\t\tsection, ok := f.sections.Lookup(flag.SectionKey)\n\t\tif ok {\n\t\t\tgroupedFlags[section] = append(groupedFlags[section], flag)\n\t\t} else {\n\t\t\tungroupedFlags = append(ungroupedFlags, flag)\n\t\t}\n\t}\n\n\tf.flagSet.VisitAll(func(flag *flag.Flag) {\n\t\tif !managedFlags[flag.Name] {\n\t\t\textraGoFlags = append(extraGoFlags, flag)\n\t\t}\n\t})\n\n\tout := \"\"\n\tfor _, section := range f.sections {\n\t\tflags := groupedFlags[section]\n\t\tif len(flags) == 0 {\n\t\t\tcontinue\n\t\t}\n\t\tout += f.usageForSection(section)\n\t\tif section.Succinct {\n\t\t\tsuccinctFlags := []string{}\n\t\t\tfor _, flag := range flags {\n\t\t\t\tif flag.Name != \"\" {\n\t\t\t\t\tsuccinctFlags = append(succinctFlags, fmt.Sprintf(\"--%s\", flag.Name))\n\t\t\t\t}\n\t\t\t}\n\t\t\tout += formatter.Fiw(1, formatter.COLS, section.Style+strings.Join(succinctFlags, \", \")+\"{{/}}\\n\")\n\t\t} else {\n\t\t\tfor _, flag := range flags {\n\t\t\t\tout += f.usageForFlag(flag, section.Style)\n\t\t\t}\n\t\t}\n\t\tout += \"\\n\"\n\t}\n\tif len(ungroupedFlags) > 0 {\n\t\tfor _, flag := range ungroupedFlags {\n\t\t\tout += f.usageForFlag(flag, \"\")\n\t\t}\n\t\tout += \"\\n\"\n\t}\n\tif len(extraGoFlags) > 0 {\n\t\tout += f.usageForSection(f.extraGoFlagsSection)\n\t\tfor _, goFlag := range extraGoFlags {\n\t\t\tout += f.usageForGoFlag(goFlag)\n\t\t}\n\t}\n\n\treturn out\n}\n\nfunc (f GinkgoFlagSet) substituteUsage() {\n\tfmt.Fprintln(f.flagSet.Output(), f.Usage())\n}\n\nfunc valueAtKeyPath(root any, keyPath string) (reflect.Value, bool) {\n\tif len(keyPath) == 0 {\n\t\treturn reflect.Value{}, false\n\t}\n\n\tval := reflect.ValueOf(root)\n\tcomponents := strings.Split(keyPath, \".\")\n\tfor _, component := range components {\n\t\tval = reflect.Indirect(val)\n\t\tswitch val.Kind() {\n\t\tcase reflect.Map:\n\t\t\tval = val.MapIndex(reflect.ValueOf(component))\n\t\t\tif val.Kind() == reflect.Interface {\n\t\t\t\tval = reflect.ValueOf(val.Interface())\n\t\t\t}\n\t\tcase reflect.Struct:\n\t\t\tval = val.FieldByName(component)\n\t\tdefault:\n\t\t\treturn reflect.Value{}, false\n\t\t}\n\t\tif (val == reflect.Value{}) {\n\t\t\treturn reflect.Value{}, false\n\t\t}\n\t}\n\n\treturn val, true\n}\n\nfunc (f GinkgoFlagSet) usageForSection(section GinkgoFlagSection) string {\n\tout := formatter.F(section.Style + \"{{bold}}{{underline}}\" + section.Heading + \"{{/}}\\n\")\n\tif section.Description != \"\" {\n\t\tout += formatter.Fiw(0, formatter.COLS, section.Description+\"\\n\")\n\t}\n\treturn out\n}\n\nfunc (f GinkgoFlagSet) usageForFlag(flag GinkgoFlag, style string) string {\n\targument := flag.UsageArgument\n\tdefValue := flag.UsageDefaultValue\n\tif argument == \"\" {\n\t\tvalue, _ := valueAtKeyPath(f.bindings, flag.KeyPath)\n\t\tswitch value.Type() {\n\t\tcase reflect.TypeOf(string(\"\")):\n\t\t\targument = \"string\"\n\t\tcase reflect.TypeOf(int64(0)), reflect.TypeOf(int(0)):\n\t\t\targument = \"int\"\n\t\tcase reflect.TypeOf(time.Duration(0)):\n\t\t\targument = \"duration\"\n\t\tcase reflect.TypeOf(float64(0)):\n\t\t\targument = \"float\"\n\t\tcase reflect.TypeOf([]string{}):\n\t\t\targument = \"string\"\n\t\t}\n\t}\n\tif argument != \"\" {\n\t\targument = \"[\" + argument + \"] \"\n\t}\n\tif defValue != \"\" {\n\t\tdefValue = fmt.Sprintf(\"(default: %s)\", defValue)\n\t}\n\thyphens := \"--\"\n\tif len(flag.Name) == 1 {\n\t\thyphens = \"-\"\n\t}\n\n\tout := formatter.Fi(1, style+\"%s%s{{/}} %s{{gray}}%s{{/}}\\n\", hyphens, flag.Name, argument, defValue)\n\tout += formatter.Fiw(2, formatter.COLS, \"{{light-gray}}%s{{/}}\\n\", flag.Usage)\n\treturn out\n}\n\nfunc (f GinkgoFlagSet) usageForGoFlag(goFlag *flag.Flag) string {\n\t//Taken directly from the flag package\n\tout := fmt.Sprintf(\"  -%s\", goFlag.Name)\n\tname, usage := flag.UnquoteUsage(goFlag)\n\tif len(name) > 0 {\n\t\tout += \" \" + name\n\t}\n\tif len(out) <= 4 {\n\t\tout += \"\\t\"\n\t} else {\n\t\tout += \"\\n    \\t\"\n\t}\n\tout += strings.ReplaceAll(usage, \"\\n\", \"\\n    \\t\")\n\tout += \"\\n\"\n\treturn out\n}\n\ntype stringSliceVar struct {\n\tslice reflect.Value\n}\n\nfunc (ssv stringSliceVar) String() string { return \"\" }\nfunc (ssv stringSliceVar) Set(s string) error {\n\tssv.slice.Set(reflect.AppendSlice(ssv.slice, reflect.ValueOf([]string{s})))\n\treturn nil\n}\n\n// given a set of GinkgoFlags and bindings, generate flag arguments suitable to be passed to an application with that set of flags configured.\nfunc GenerateFlagArgs(flags GinkgoFlags, bindings any) ([]string, error) {\n\tresult := []string{}\n\tfor _, flag := range flags {\n\t\tname := flag.ExportAs\n\t\tif name == \"\" {\n\t\t\tname = flag.Name\n\t\t}\n\t\tif name == \"\" {\n\t\t\tcontinue\n\t\t}\n\n\t\tvalue, ok := valueAtKeyPath(bindings, flag.KeyPath)\n\t\tif !ok {\n\t\t\treturn []string{}, fmt.Errorf(\"could not load KeyPath: %s\", flag.KeyPath)\n\t\t}\n\n\t\tiface := value.Interface()\n\t\tswitch value.Type() {\n\t\tcase reflect.TypeOf(string(\"\")):\n\t\t\tif iface.(string) != \"\" || flag.AlwaysExport {\n\t\t\t\tresult = append(result, fmt.Sprintf(\"--%s=%s\", name, iface))\n\t\t\t}\n\t\tcase reflect.TypeOf(int64(0)):\n\t\t\tif iface.(int64) != 0 || flag.AlwaysExport {\n\t\t\t\tresult = append(result, fmt.Sprintf(\"--%s=%d\", name, iface))\n\t\t\t}\n\t\tcase reflect.TypeOf(float64(0)):\n\t\t\tif iface.(float64) != 0 || flag.AlwaysExport {\n\t\t\t\tresult = append(result, fmt.Sprintf(\"--%s=%f\", name, iface))\n\t\t\t}\n\t\tcase reflect.TypeOf(int(0)):\n\t\t\tif iface.(int) != 0 || flag.AlwaysExport {\n\t\t\t\tresult = append(result, fmt.Sprintf(\"--%s=%d\", name, iface))\n\t\t\t}\n\t\tcase reflect.TypeOf(bool(true)):\n\t\t\tif iface.(bool) {\n\t\t\t\tresult = append(result, fmt.Sprintf(\"--%s\", name))\n\t\t\t}\n\t\tcase reflect.TypeOf(time.Duration(0)):\n\t\t\tif iface.(time.Duration) != time.Duration(0) || flag.AlwaysExport {\n\t\t\t\tresult = append(result, fmt.Sprintf(\"--%s=%s\", name, iface))\n\t\t\t}\n\n\t\tcase reflect.TypeOf([]string{}):\n\t\t\tstrings := iface.([]string)\n\t\t\tfor _, s := range strings {\n\t\t\t\tresult = append(result, fmt.Sprintf(\"--%s=%s\", name, s))\n\t\t\t}\n\t\tdefault:\n\t\t\treturn []string{}, fmt.Errorf(\"unsupported type %T\", iface)\n\t\t}\n\t}\n\n\treturn result, nil\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/types/label_filter.go",
    "content": "package types\n\nimport (\n\t\"fmt\"\n\t\"regexp\"\n\t\"strings\"\n)\n\nvar DEBUG_LABEL_FILTER_PARSING = false\n\ntype LabelFilter func([]string) bool\n\nfunc matchLabelAction(label string) LabelFilter {\n\texpected := strings.ToLower(label)\n\treturn func(labels []string) bool {\n\t\tfor i := range labels {\n\t\t\tif strings.ToLower(labels[i]) == expected {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\treturn false\n\t}\n}\n\nfunc matchLabelRegexAction(regex *regexp.Regexp) LabelFilter {\n\treturn func(labels []string) bool {\n\t\tfor i := range labels {\n\t\t\tif regex.MatchString(labels[i]) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\treturn false\n\t}\n}\n\nfunc notAction(filter LabelFilter) LabelFilter {\n\treturn func(labels []string) bool { return !filter(labels) }\n}\n\nfunc andAction(a, b LabelFilter) LabelFilter {\n\treturn func(labels []string) bool { return a(labels) && b(labels) }\n}\n\nfunc orAction(a, b LabelFilter) LabelFilter {\n\treturn func(labels []string) bool { return a(labels) || b(labels) }\n}\n\nfunc labelSetFor(key string, labels []string) map[string]bool {\n\tkey = strings.ToLower(strings.TrimSpace(key))\n\tout := map[string]bool{}\n\tfor _, label := range labels {\n\t\tcomponents := strings.SplitN(label, \":\", 2)\n\t\tif len(components) < 2 {\n\t\t\tcontinue\n\t\t}\n\t\tif key == strings.ToLower(strings.TrimSpace(components[0])) {\n\t\t\tout[strings.ToLower(strings.TrimSpace(components[1]))] = true\n\t\t}\n\t}\n\n\treturn out\n}\n\nfunc isEmptyLabelSetAction(key string) LabelFilter {\n\treturn func(labels []string) bool {\n\t\treturn len(labelSetFor(key, labels)) == 0\n\t}\n}\n\nfunc containsAnyLabelSetAction(key string, expectedValues []string) LabelFilter {\n\treturn func(labels []string) bool {\n\t\tset := labelSetFor(key, labels)\n\t\tfor _, value := range expectedValues {\n\t\t\tif set[value] {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\treturn false\n\t}\n}\n\nfunc containsAllLabelSetAction(key string, expectedValues []string) LabelFilter {\n\treturn func(labels []string) bool {\n\t\tset := labelSetFor(key, labels)\n\t\tfor _, value := range expectedValues {\n\t\t\tif !set[value] {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\treturn true\n\t}\n}\n\nfunc consistsOfLabelSetAction(key string, expectedValues []string) LabelFilter {\n\treturn func(labels []string) bool {\n\t\tset := labelSetFor(key, labels)\n\t\tif len(set) != len(expectedValues) {\n\t\t\treturn false\n\t\t}\n\t\tfor _, value := range expectedValues {\n\t\t\tif !set[value] {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\treturn true\n\t}\n}\n\nfunc isSubsetOfLabelSetAction(key string, expectedValues []string) LabelFilter {\n\texpectedSet := map[string]bool{}\n\tfor _, value := range expectedValues {\n\t\texpectedSet[value] = true\n\t}\n\treturn func(labels []string) bool {\n\t\tset := labelSetFor(key, labels)\n\t\tfor value := range set {\n\t\t\tif !expectedSet[value] {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\treturn true\n\t}\n}\n\ntype lfToken uint\n\nconst (\n\tlfTokenInvalid lfToken = iota\n\n\tlfTokenRoot\n\tlfTokenOpenGroup\n\tlfTokenCloseGroup\n\tlfTokenNot\n\tlfTokenAnd\n\tlfTokenOr\n\tlfTokenRegexp\n\tlfTokenLabel\n\tlfTokenSetKey\n\tlfTokenSetOperation\n\tlfTokenSetArgument\n\tlfTokenEOF\n)\n\nfunc (l lfToken) Precedence() int {\n\tswitch l {\n\tcase lfTokenRoot, lfTokenOpenGroup:\n\t\treturn 0\n\tcase lfTokenOr:\n\t\treturn 1\n\tcase lfTokenAnd:\n\t\treturn 2\n\tcase lfTokenNot:\n\t\treturn 3\n\tcase lfTokenSetOperation:\n\t\treturn 4\n\t}\n\treturn -1\n}\n\nfunc (l lfToken) String() string {\n\tswitch l {\n\tcase lfTokenRoot:\n\t\treturn \"ROOT\"\n\tcase lfTokenOpenGroup:\n\t\treturn \"(\"\n\tcase lfTokenCloseGroup:\n\t\treturn \")\"\n\tcase lfTokenNot:\n\t\treturn \"!\"\n\tcase lfTokenAnd:\n\t\treturn \"&&\"\n\tcase lfTokenOr:\n\t\treturn \"||\"\n\tcase lfTokenRegexp:\n\t\treturn \"/regexp/\"\n\tcase lfTokenLabel:\n\t\treturn \"label\"\n\tcase lfTokenSetKey:\n\t\treturn \"set_key\"\n\tcase lfTokenSetOperation:\n\t\treturn \"set_operation\"\n\tcase lfTokenSetArgument:\n\t\treturn \"set_argument\"\n\tcase lfTokenEOF:\n\t\treturn \"EOF\"\n\t}\n\treturn \"INVALID\"\n}\n\ntype treeNode struct {\n\ttoken    lfToken\n\tlocation int\n\tvalue    string\n\n\tparent    *treeNode\n\tleftNode  *treeNode\n\trightNode *treeNode\n}\n\nfunc (tn *treeNode) setRightNode(node *treeNode) {\n\ttn.rightNode = node\n\tnode.parent = tn\n}\n\nfunc (tn *treeNode) setLeftNode(node *treeNode) {\n\ttn.leftNode = node\n\tnode.parent = tn\n}\n\nfunc (tn *treeNode) firstAncestorWithPrecedenceLEQ(precedence int) *treeNode {\n\tif tn.token.Precedence() <= precedence {\n\t\treturn tn\n\t}\n\treturn tn.parent.firstAncestorWithPrecedenceLEQ(precedence)\n}\n\nfunc (tn *treeNode) firstUnmatchedOpenNode() *treeNode {\n\tif tn.token == lfTokenOpenGroup {\n\t\treturn tn\n\t}\n\tif tn.parent == nil {\n\t\treturn nil\n\t}\n\treturn tn.parent.firstUnmatchedOpenNode()\n}\n\nfunc (tn *treeNode) constructLabelFilter(input string) (LabelFilter, error) {\n\tswitch tn.token {\n\tcase lfTokenOpenGroup:\n\t\treturn nil, GinkgoErrors.SyntaxErrorParsingLabelFilter(input, tn.location, \"Mismatched '(' - could not find matching ')'.\")\n\tcase lfTokenLabel:\n\t\treturn matchLabelAction(tn.value), nil\n\tcase lfTokenRegexp:\n\t\tre, err := regexp.Compile(tn.value)\n\t\tif err != nil {\n\t\t\treturn nil, GinkgoErrors.SyntaxErrorParsingLabelFilter(input, tn.location, fmt.Sprintf(\"RegExp compilation error: %s\", err))\n\t\t}\n\t\treturn matchLabelRegexAction(re), nil\n\tcase lfTokenSetOperation:\n\t\ttokenSetOperation := strings.ToLower(tn.value)\n\t\tif tokenSetOperation == \"isempty\" {\n\t\t\treturn isEmptyLabelSetAction(tn.leftNode.value), nil\n\t\t}\n\t\tif tn.rightNode == nil {\n\t\t\treturn nil, GinkgoErrors.SyntaxErrorParsingLabelFilter(input, tn.location, fmt.Sprintf(\"Set operation '%s' is missing an argument.\", tn.value))\n\t\t}\n\n\t\trawValues := strings.Split(tn.rightNode.value, \",\")\n\t\tvalues := make([]string, len(rawValues))\n\t\tfor i := range rawValues {\n\t\t\tvalues[i] = strings.ToLower(strings.TrimSpace(rawValues[i]))\n\t\t\tif strings.ContainsAny(values[i], \"&|!,()/\") {\n\t\t\t\treturn nil, GinkgoErrors.SyntaxErrorParsingLabelFilter(input, tn.rightNode.location, fmt.Sprintf(\"Invalid label value '%s' in set operation argument.\", values[i]))\n\t\t\t} else if values[i] == \"\" {\n\t\t\t\treturn nil, GinkgoErrors.SyntaxErrorParsingLabelFilter(input, tn.rightNode.location, \"Empty label value in set operation argument.\")\n\t\t\t}\n\t\t}\n\t\tswitch tokenSetOperation {\n\t\tcase \"containsany\":\n\t\t\treturn containsAnyLabelSetAction(tn.leftNode.value, values), nil\n\t\tcase \"containsall\":\n\t\t\treturn containsAllLabelSetAction(tn.leftNode.value, values), nil\n\t\tcase \"consistsof\":\n\t\t\treturn consistsOfLabelSetAction(tn.leftNode.value, values), nil\n\t\tcase \"issubsetof\":\n\t\t\treturn isSubsetOfLabelSetAction(tn.leftNode.value, values), nil\n\t\t}\n\t}\n\n\tif tn.rightNode == nil {\n\t\treturn nil, GinkgoErrors.SyntaxErrorParsingLabelFilter(input, -1, \"Unexpected EOF.\")\n\t}\n\trightLF, err := tn.rightNode.constructLabelFilter(input)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tswitch tn.token {\n\tcase lfTokenRoot, lfTokenCloseGroup:\n\t\treturn rightLF, nil\n\tcase lfTokenNot:\n\t\treturn notAction(rightLF), nil\n\t}\n\n\tif tn.leftNode == nil {\n\t\treturn nil, GinkgoErrors.SyntaxErrorParsingLabelFilter(input, tn.location, fmt.Sprintf(\"Malformed tree - '%s' is missing left operand.\", tn.token))\n\t}\n\tleftLF, err := tn.leftNode.constructLabelFilter(input)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tswitch tn.token {\n\tcase lfTokenAnd:\n\t\treturn andAction(leftLF, rightLF), nil\n\tcase lfTokenOr:\n\t\treturn orAction(leftLF, rightLF), nil\n\t}\n\n\treturn nil, GinkgoErrors.SyntaxErrorParsingLabelFilter(input, tn.location, fmt.Sprintf(\"Invalid token '%s'.\", tn.token))\n}\n\nfunc (tn *treeNode) tokenString() string {\n\tout := fmt.Sprintf(\"<%s\", tn.token)\n\tif tn.value != \"\" {\n\t\tout += \" | \" + tn.value\n\t}\n\tout += \">\"\n\treturn out\n}\n\nfunc (tn *treeNode) toString(indent int) string {\n\tout := tn.tokenString() + \"\\n\"\n\tif tn.leftNode != nil {\n\t\tout += fmt.Sprintf(\"%s  |_(L)_%s\", strings.Repeat(\" \", indent), tn.leftNode.toString(indent+1))\n\t}\n\tif tn.rightNode != nil {\n\t\tout += fmt.Sprintf(\"%s  |_(R)_%s\", strings.Repeat(\" \", indent), tn.rightNode.toString(indent+1))\n\t}\n\treturn out\n}\n\nvar validSetOperations = map[string]string{\n\t\"containsany\": \"containsAny\",\n\t\"containsall\": \"containsAll\",\n\t\"consistsof\":  \"consistsOf\",\n\t\"issubsetof\":  \"isSubsetOf\",\n\t\"isempty\":     \"isEmpty\",\n}\n\nfunc tokenize(input string) func() (*treeNode, error) {\n\tlastToken := lfTokenInvalid\n\tlastValue := \"\"\n\trunes, i := []rune(input), 0\n\n\tpeekIs := func(r rune) bool {\n\t\tif i+1 < len(runes) {\n\t\t\treturn runes[i+1] == r\n\t\t}\n\t\treturn false\n\t}\n\n\tconsumeUntil := func(cutset string) (string, int) {\n\t\tj := i\n\t\tfor ; j < len(runes); j++ {\n\t\t\tif strings.ContainsRune(cutset, runes[j]) {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\treturn string(runes[i:j]), j - i\n\t}\n\n\treturn func() (*treeNode, error) {\n\t\tfor i < len(runes) && runes[i] == ' ' {\n\t\t\ti += 1\n\t\t}\n\n\t\tif i >= len(runes) {\n\t\t\treturn &treeNode{token: lfTokenEOF}, nil\n\t\t}\n\n\t\tnode := &treeNode{location: i}\n\t\tdefer func() {\n\t\t\tlastToken = node.token\n\t\t\tlastValue = node.value\n\t\t}()\n\n\t\tif lastToken == lfTokenSetKey {\n\t\t\t//we should get a valid set operation next\n\t\t\tvalue, n := consumeUntil(\" )\")\n\t\t\tif validSetOperations[strings.ToLower(value)] == \"\" {\n\t\t\t\treturn &treeNode{}, GinkgoErrors.SyntaxErrorParsingLabelFilter(input, i, fmt.Sprintf(\"Invalid set operation '%s'.\", value))\n\t\t\t}\n\t\t\ti += n\n\t\t\tnode.token, node.value = lfTokenSetOperation, value\n\t\t\treturn node, nil\n\t\t}\n\t\tif lastToken == lfTokenSetOperation {\n\t\t\t//we should get an argument next, if we aren't isempty\n\t\t\tvar arg = \"\"\n\t\t\torigI := i\n\t\t\tif runes[i] == '{' {\n\t\t\t\ti += 1\n\t\t\t\tvalue, n := consumeUntil(\"}\")\n\t\t\t\tif i+n >= len(runes) {\n\t\t\t\t\treturn &treeNode{}, GinkgoErrors.SyntaxErrorParsingLabelFilter(input, i-1, \"Missing closing '}' in set operation argument?\")\n\t\t\t\t}\n\t\t\t\ti += n + 1\n\t\t\t\targ = value\n\t\t\t} else {\n\t\t\t\tvalue, n := consumeUntil(\"&|!,()/\")\n\t\t\t\ti += n\n\t\t\t\targ = strings.TrimSpace(value)\n\t\t\t}\n\t\t\tif strings.ToLower(lastValue) == \"isempty\" && arg != \"\" {\n\t\t\t\treturn &treeNode{}, GinkgoErrors.SyntaxErrorParsingLabelFilter(input, origI, fmt.Sprintf(\"isEmpty does not take arguments, was passed '%s'.\", arg))\n\t\t\t}\n\t\t\tif arg == \"\" && strings.ToLower(lastValue) != \"isempty\" {\n\t\t\t\tif i < len(runes) && runes[i] == '/' {\n\t\t\t\t\treturn &treeNode{}, GinkgoErrors.SyntaxErrorParsingLabelFilter(input, origI, \"Set operations do not support regular expressions.\")\n\t\t\t\t} else {\n\t\t\t\t\treturn &treeNode{}, GinkgoErrors.SyntaxErrorParsingLabelFilter(input, origI, fmt.Sprintf(\"Set operation '%s' requires an argument.\", lastValue))\n\t\t\t\t}\n\t\t\t}\n\t\t\t// note that we sent an empty SetArgument token if we are isempty\n\t\t\tnode.token, node.value = lfTokenSetArgument, arg\n\t\t\treturn node, nil\n\t\t}\n\n\t\tswitch runes[i] {\n\t\tcase '&':\n\t\t\tif !peekIs('&') {\n\t\t\t\treturn &treeNode{}, GinkgoErrors.SyntaxErrorParsingLabelFilter(input, i, \"Invalid token '&'.  Did you mean '&&'?\")\n\t\t\t}\n\t\t\ti += 2\n\t\t\tnode.token = lfTokenAnd\n\t\tcase '|':\n\t\t\tif !peekIs('|') {\n\t\t\t\treturn &treeNode{}, GinkgoErrors.SyntaxErrorParsingLabelFilter(input, i, \"Invalid token '|'.  Did you mean '||'?\")\n\t\t\t}\n\t\t\ti += 2\n\t\t\tnode.token = lfTokenOr\n\t\tcase '!':\n\t\t\ti += 1\n\t\t\tnode.token = lfTokenNot\n\t\tcase ',':\n\t\t\ti += 1\n\t\t\tnode.token = lfTokenOr\n\t\tcase '(':\n\t\t\ti += 1\n\t\t\tnode.token = lfTokenOpenGroup\n\t\tcase ')':\n\t\t\ti += 1\n\t\t\tnode.token = lfTokenCloseGroup\n\t\tcase '/':\n\t\t\ti += 1\n\t\t\tvalue, n := consumeUntil(\"/\")\n\t\t\ti += n + 1\n\t\t\tnode.token, node.value = lfTokenRegexp, value\n\t\tdefault:\n\t\t\tvalue, n := consumeUntil(\"&|!,()/:\")\n\t\t\ti += n\n\t\t\tvalue = strings.TrimSpace(value)\n\n\t\t\t//are we the beginning of a set operation?\n\t\t\tif i < len(runes) && runes[i] == ':' {\n\t\t\t\tif peekIs(' ') {\n\t\t\t\t\tif value == \"\" {\n\t\t\t\t\t\treturn &treeNode{}, GinkgoErrors.SyntaxErrorParsingLabelFilter(input, i, \"Missing set key.\")\n\t\t\t\t\t}\n\t\t\t\t\ti += 1\n\t\t\t\t\t//we are the beginning of a set operation\n\t\t\t\t\tnode.token, node.value = lfTokenSetKey, value\n\t\t\t\t\treturn node, nil\n\t\t\t\t}\n\t\t\t\tadditionalValue, n := consumeUntil(\"&|!,()/\")\n\t\t\t\tadditionalValue = strings.TrimSpace(additionalValue)\n\t\t\t\tif additionalValue == \":\" {\n\t\t\t\t\treturn &treeNode{}, GinkgoErrors.SyntaxErrorParsingLabelFilter(input, i, \"Missing set operation.\")\n\t\t\t\t}\n\t\t\t\ti += n\n\t\t\t\tvalue += additionalValue\n\t\t\t}\n\n\t\t\tvalueToCheckForSetOperation := strings.ToLower(value)\n\t\t\tfor setOperation := range validSetOperations {\n\t\t\t\tidx := strings.Index(valueToCheckForSetOperation, \" \"+setOperation)\n\t\t\t\tif idx > 0 {\n\t\t\t\t\treturn &treeNode{}, GinkgoErrors.SyntaxErrorParsingLabelFilter(input, i-n+idx+1, fmt.Sprintf(\"Looks like you are using the set operator '%s' but did not provide a set key.  Did you forget the ':'?\", validSetOperations[setOperation]))\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tnode.token, node.value = lfTokenLabel, strings.TrimSpace(value)\n\t\t}\n\t\treturn node, nil\n\t}\n}\n\nfunc MustParseLabelFilter(input string) LabelFilter {\n\tfilter, err := ParseLabelFilter(input)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn filter\n}\n\nfunc ParseLabelFilter(input string) (LabelFilter, error) {\n\tif DEBUG_LABEL_FILTER_PARSING {\n\t\tfmt.Println(\"\\n==============\")\n\t\tfmt.Println(\"Input: \", input)\n\t\tfmt.Print(\"Tokens: \")\n\t}\n\tif input == \"\" {\n\t\treturn func(_ []string) bool { return true }, nil\n\t}\n\tnextToken := tokenize(input)\n\n\troot := &treeNode{token: lfTokenRoot}\n\tcurrent := root\nLOOP:\n\tfor {\n\t\tnode, err := nextToken()\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tif DEBUG_LABEL_FILTER_PARSING {\n\t\t\tfmt.Print(node.tokenString() + \" \")\n\t\t}\n\n\t\tswitch node.token {\n\t\tcase lfTokenEOF:\n\t\t\tbreak LOOP\n\t\tcase lfTokenLabel, lfTokenRegexp, lfTokenSetKey:\n\t\t\tif current.rightNode != nil {\n\t\t\t\treturn nil, GinkgoErrors.SyntaxErrorParsingLabelFilter(input, node.location, \"Found two adjacent labels.  You need an operator between them.\")\n\t\t\t}\n\t\t\tcurrent.setRightNode(node)\n\t\tcase lfTokenNot, lfTokenOpenGroup:\n\t\t\tif current.rightNode != nil {\n\t\t\t\treturn nil, GinkgoErrors.SyntaxErrorParsingLabelFilter(input, node.location, fmt.Sprintf(\"Invalid token '%s'.\", node.token))\n\t\t\t}\n\t\t\tcurrent.setRightNode(node)\n\t\t\tcurrent = node\n\t\tcase lfTokenAnd, lfTokenOr:\n\t\t\tif current.rightNode == nil {\n\t\t\t\treturn nil, GinkgoErrors.SyntaxErrorParsingLabelFilter(input, node.location, fmt.Sprintf(\"Operator '%s' missing left hand operand.\", node.token))\n\t\t\t}\n\t\t\tnodeToStealFrom := current.firstAncestorWithPrecedenceLEQ(node.token.Precedence())\n\t\t\tnode.setLeftNode(nodeToStealFrom.rightNode)\n\t\t\tnodeToStealFrom.setRightNode(node)\n\t\t\tcurrent = node\n\t\tcase lfTokenSetOperation:\n\t\t\tif current.rightNode == nil {\n\t\t\t\treturn nil, GinkgoErrors.SyntaxErrorParsingLabelFilter(input, node.location, fmt.Sprintf(\"Set operation '%s' missing left hand operand.\", node.value))\n\t\t\t}\n\t\t\tnode.setLeftNode(current.rightNode)\n\t\t\tcurrent.setRightNode(node)\n\t\t\tcurrent = node\n\t\tcase lfTokenSetArgument:\n\t\t\tif current.rightNode != nil {\n\t\t\t\treturn nil, GinkgoErrors.SyntaxErrorParsingLabelFilter(input, node.location, fmt.Sprintf(\"Unexpected set argument '%s'.\", node.token))\n\t\t\t}\n\t\t\tcurrent.setRightNode(node)\n\t\tcase lfTokenCloseGroup:\n\t\t\tfirstUnmatchedOpenNode := current.firstUnmatchedOpenNode()\n\t\t\tif firstUnmatchedOpenNode == nil {\n\t\t\t\treturn nil, GinkgoErrors.SyntaxErrorParsingLabelFilter(input, node.location, \"Mismatched ')' - could not find matching '('.\")\n\t\t\t}\n\t\t\tif firstUnmatchedOpenNode == current && current.rightNode == nil {\n\t\t\t\treturn nil, GinkgoErrors.SyntaxErrorParsingLabelFilter(input, node.location, \"Found empty '()' group.\")\n\t\t\t}\n\t\t\tfirstUnmatchedOpenNode.token = lfTokenCloseGroup //signify the group is now closed\n\t\t\tcurrent = firstUnmatchedOpenNode.parent\n\t\tdefault:\n\t\t\treturn nil, GinkgoErrors.SyntaxErrorParsingLabelFilter(input, node.location, fmt.Sprintf(\"Unknown token '%s'.\", node.token))\n\t\t}\n\t}\n\tif DEBUG_LABEL_FILTER_PARSING {\n\t\tfmt.Printf(\"\\n Tree:\\n%s\", root.toString(0))\n\t}\n\treturn root.constructLabelFilter(input)\n}\n\nfunc ValidateAndCleanupLabel(label string, cl CodeLocation) (string, error) {\n\tout := strings.TrimSpace(label)\n\tif out == \"\" {\n\t\treturn \"\", GinkgoErrors.InvalidEmptyLabel(cl)\n\t}\n\tif strings.ContainsAny(out, \"&|!,()/\") {\n\t\treturn \"\", GinkgoErrors.InvalidLabel(label, cl)\n\t}\n\tif out[0] == ':' {\n\t\treturn \"\", GinkgoErrors.InvalidLabel(label, cl)\n\t}\n\tif strings.Contains(out, \":\") {\n\t\tcomponents := strings.SplitN(out, \":\", 2)\n\t\tif len(components) < 2 || components[1] == \"\" {\n\t\t\treturn \"\", GinkgoErrors.InvalidLabel(label, cl)\n\t\t}\n\t}\n\treturn out, nil\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/types/report_entry.go",
    "content": "package types\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"time\"\n)\n\n// ReportEntryValue wraps a report entry's value ensuring it can be encoded and decoded safely into reports\n// and across the network connection when running in parallel\ntype ReportEntryValue struct {\n\traw            any //unexported to prevent gob from freaking out about unregistered structs\n\tAsJSON         string\n\tRepresentation string\n}\n\nfunc WrapEntryValue(value any) ReportEntryValue {\n\treturn ReportEntryValue{\n\t\traw: value,\n\t}\n}\n\nfunc (rev ReportEntryValue) GetRawValue() any {\n\treturn rev.raw\n}\n\nfunc (rev ReportEntryValue) String() string {\n\tif rev.raw == nil {\n\t\treturn \"\"\n\t}\n\tif colorableStringer, ok := rev.raw.(ColorableStringer); ok {\n\t\treturn colorableStringer.ColorableString()\n\t}\n\n\tif stringer, ok := rev.raw.(fmt.Stringer); ok {\n\t\treturn stringer.String()\n\t}\n\tif rev.Representation != \"\" {\n\t\treturn rev.Representation\n\t}\n\treturn fmt.Sprintf(\"%+v\", rev.raw)\n}\n\nfunc (rev ReportEntryValue) MarshalJSON() ([]byte, error) {\n\t//All this to capture the representation at encoding-time, not creating time\n\t//This way users can Report on pointers and get their final values at reporting-time\n\tout := struct {\n\t\tAsJSON         string\n\t\tRepresentation string\n\t}{\n\t\tRepresentation: rev.String(),\n\t}\n\tasJSON, err := json.Marshal(rev.raw)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tout.AsJSON = string(asJSON)\n\n\treturn json.Marshal(out)\n}\n\nfunc (rev *ReportEntryValue) UnmarshalJSON(data []byte) error {\n\tin := struct {\n\t\tAsJSON         string\n\t\tRepresentation string\n\t}{}\n\terr := json.Unmarshal(data, &in)\n\tif err != nil {\n\t\treturn err\n\t}\n\trev.AsJSON = in.AsJSON\n\trev.Representation = in.Representation\n\treturn json.Unmarshal([]byte(in.AsJSON), &(rev.raw))\n}\n\nfunc (rev ReportEntryValue) GobEncode() ([]byte, error) {\n\treturn rev.MarshalJSON()\n}\n\nfunc (rev *ReportEntryValue) GobDecode(data []byte) error {\n\treturn rev.UnmarshalJSON(data)\n}\n\n// ReportEntry captures information attached to `SpecReport` via `AddReportEntry`\ntype ReportEntry struct {\n\t// Visibility captures the visibility policy for this ReportEntry\n\tVisibility ReportEntryVisibility\n\t// Location captures the location of the AddReportEntry call\n\tLocation CodeLocation\n\n\tTime             time.Time //need this for backwards compatibility\n\tTimelineLocation TimelineLocation\n\n\t// Name captures the name of this report\n\tName string\n\t// Value captures the (optional) object passed into AddReportEntry - this can be\n\t// anything the user wants.  The value passed to AddReportEntry is wrapped in a ReportEntryValue to make\n\t// encoding/decoding the value easier.  To access the raw value call entry.GetRawValue()\n\tValue ReportEntryValue\n}\n\n// ColorableStringer is an interface that ReportEntry values can satisfy.  If they do then ColorableString() is used to generate their representation.\ntype ColorableStringer interface {\n\tColorableString() string\n}\n\n// StringRepresentation() returns the string representation of the value associated with the ReportEntry --\n// if value is nil, empty string is returned\n// if value is a `ColorableStringer` then `Value.ColorableString()` is returned\n// if value is a `fmt.Stringer` then `Value.String()` is returned\n// otherwise the value is formatted with \"%+v\"\nfunc (entry ReportEntry) StringRepresentation() string {\n\treturn entry.Value.String()\n}\n\n// GetRawValue returns the Value object that was passed to AddReportEntry\n// If called in-process this will be the same object that was passed into AddReportEntry.\n// If used from a rehydrated JSON file _or_ in a ReportAfterSuite when running in parallel this will be\n// a JSON-decoded {}interface.  If you want to reconstitute your original object you can decode the entry.Value.AsJSON\n// field yourself.\nfunc (entry ReportEntry) GetRawValue() any {\n\treturn entry.Value.GetRawValue()\n}\n\nfunc (entry ReportEntry) GetTimelineLocation() TimelineLocation {\n\treturn entry.TimelineLocation\n}\n\ntype ReportEntries []ReportEntry\n\nfunc (re ReportEntries) HasVisibility(visibilities ...ReportEntryVisibility) bool {\n\tfor _, entry := range re {\n\t\tif entry.Visibility.Is(visibilities...) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc (re ReportEntries) WithVisibility(visibilities ...ReportEntryVisibility) ReportEntries {\n\tout := ReportEntries{}\n\n\tfor _, entry := range re {\n\t\tif entry.Visibility.Is(visibilities...) {\n\t\t\tout = append(out, entry)\n\t\t}\n\t}\n\n\treturn out\n}\n\n// ReportEntryVisibility governs the visibility of ReportEntries in Ginkgo's console reporter\ntype ReportEntryVisibility uint\n\nconst (\n\t// Always print out this ReportEntry\n\tReportEntryVisibilityAlways ReportEntryVisibility = iota\n\t// Only print out this ReportEntry if the spec fails or if the test is run with -v\n\tReportEntryVisibilityFailureOrVerbose\n\t// Never print out this ReportEntry (note that ReportEntrys are always encoded in machine readable reports (e.g. JSON, JUnit, etc.))\n\tReportEntryVisibilityNever\n)\n\nvar revEnumSupport = NewEnumSupport(map[uint]string{\n\tuint(ReportEntryVisibilityAlways):           \"always\",\n\tuint(ReportEntryVisibilityFailureOrVerbose): \"failure-or-verbose\",\n\tuint(ReportEntryVisibilityNever):            \"never\",\n})\n\nfunc (rev ReportEntryVisibility) String() string {\n\treturn revEnumSupport.String(uint(rev))\n}\nfunc (rev *ReportEntryVisibility) UnmarshalJSON(b []byte) error {\n\tout, err := revEnumSupport.UnmarshJSON(b)\n\t*rev = ReportEntryVisibility(out)\n\treturn err\n}\nfunc (rev ReportEntryVisibility) MarshalJSON() ([]byte, error) {\n\treturn revEnumSupport.MarshJSON(uint(rev))\n}\n\nfunc (v ReportEntryVisibility) Is(visibilities ...ReportEntryVisibility) bool {\n\tfor _, visibility := range visibilities {\n\t\tif v == visibility {\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn false\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/types/semver_filter.go",
    "content": "package types\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\t\"github.com/Masterminds/semver/v3\"\n)\n\ntype SemVerFilter func(component string, constraints []string) bool\n\nfunc MustParseSemVerFilter(input string) SemVerFilter {\n\tfilter, err := ParseSemVerFilter(input)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn filter\n}\n\n// ParseSemVerFilter parses non-component and component-specific semantic version filter string.\n// The filter string can contain multiple non-component and component-specific versions separated by commas.\n// Each component-specific version is in the format \"component=version\".\n// If a version is specified without a component, it applies to non-component-specific constraints.\nfunc ParseSemVerFilter(componentFilterVersions string) (SemVerFilter, error) {\n\tif componentFilterVersions == \"\" {\n\t\treturn func(_ string, _ []string) bool { return true }, nil\n\t}\n\n\tresult := map[string]*semver.Version{}\n\tparts := strings.Split(componentFilterVersions, \",\")\n\tfor _, part := range parts {\n\t\tpart = strings.TrimSpace(part)\n\t\tif len(part) == 0 {\n\t\t\tcontinue\n\t\t}\n\t\tif strings.Contains(part, \"=\") {\n\t\t\t// validate component-specific version string\n\t\t\tinvalidPart, invalidErr := false, fmt.Errorf(\"invalid component filter version: %s\", part)\n\t\t\tsubParts := strings.Split(part, \"=\")\n\t\t\tif len(subParts) != 2 {\n\t\t\t\tinvalidPart = true\n\t\t\t}\n\t\t\tcomponent := strings.TrimSpace(subParts[0])\n\t\t\tversionStr := strings.TrimSpace(subParts[1])\n\t\t\tif len(component) == 0 || len(versionStr) == 0 {\n\t\t\t\tinvalidPart = true\n\t\t\t}\n\t\t\tif invalidPart {\n\t\t\t\treturn nil, invalidErr\n\t\t\t}\n\n\t\t\t// validate semver\n\t\t\tv, err := semver.NewVersion(versionStr)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"invalid component filter version: %s, error: %w\", part, err)\n\t\t\t}\n\t\t\tresult[component] = v\n\t\t} else {\n\t\t\tv, err := semver.NewVersion(part)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"invalid filter version: %s, error: %w\", part, err)\n\t\t\t}\n\t\t\tresult[\"\"] = v\n\t\t}\n\t}\n\n\treturn func(component string, constraints []string) bool {\n\t\t// unconstrained specs always run\n\t\tif len(component) == 0 && len(constraints) == 0 {\n\t\t\treturn true\n\t\t}\n\n\t\t// check non-component specific version constraints\n\t\tif len(component) == 0 && len(constraints) != 0 {\n\t\t\tv := result[\"\"]\n\t\t\tif v != nil {\n\t\t\t\tfor _, constraintStr := range constraints {\n\t\t\t\t\tconstraint, err := semver.NewConstraint(constraintStr)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\n\t\t\t\t\tif !constraint.Check(v) {\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// check component-specific version constraints\n\t\tif len(component) != 0 && len(constraints) != 0 {\n\t\t\tv := result[component]\n\t\t\tif v != nil {\n\t\t\t\tfor _, constraintStr := range constraints {\n\t\t\t\t\tconstraint, err := semver.NewConstraint(constraintStr)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\n\t\t\t\t\tif !constraint.Check(v) {\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn true\n\t}, nil\n}\n\nfunc ValidateAndCleanupSemVerConstraint(semVerConstraint string, cl CodeLocation) (string, error) {\n\tif len(semVerConstraint) == 0 {\n\t\treturn \"\", GinkgoErrors.InvalidEmptySemVerConstraint(cl)\n\t}\n\t_, err := semver.NewConstraint(semVerConstraint)\n\tif err != nil {\n\t\treturn \"\", GinkgoErrors.InvalidSemVerConstraint(semVerConstraint, err.Error(), cl)\n\t}\n\n\treturn semVerConstraint, nil\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/types/types.go",
    "content": "package types\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"os\"\n\t\"slices\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n)\n\nconst GINKGO_FOCUS_EXIT_CODE = 197\n\nvar GINKGO_TIME_FORMAT = \"01/02/06 15:04:05.999\"\n\nfunc init() {\n\tif os.Getenv(\"GINKGO_TIME_FORMAT\") != \"\" {\n\t\tGINKGO_TIME_FORMAT = os.Getenv(\"GINKGO_TIME_FORMAT\")\n\t}\n}\n\n// ConstructionNodeReport captures information about a Ginkgo spec.\ntype ConstructionNodeReport struct {\n\t// ContainerHierarchyTexts is a slice containing the text strings of\n\t// all Describe/Context/When containers in this spec's hierarchy.\n\tContainerHierarchyTexts []string\n\n\t// ContainerHierarchyLocations is a slice containing the CodeLocations of\n\t// all Describe/Context/When containers in this spec's hierarchy.\n\tContainerHierarchyLocations []CodeLocation\n\n\t// ContainerHierarchyLabels is a slice containing the labels of\n\t// all Describe/Context/When containers in this spec's hierarchy\n\tContainerHierarchyLabels [][]string\n\n\t// ContainerHierarchySemVerConstraints is a slice containing the semVerConstraints of\n\t// all Describe/Context/When containers in this spec's hierarchy\n\tContainerHierarchySemVerConstraints [][]string\n\n\t// ContainerHierarchyComponentSemVerConstraints is a slice containing the component-specific semVerConstraints of\n\t// all Describe/Context/When containers in this spec's hierarchy\n\tContainerHierarchyComponentSemVerConstraints []map[string][]string\n\n\t// IsSerial captures whether the any container has the Serial decorator\n\tIsSerial bool\n\n\t// IsInOrderedContainer captures whether any container is an Ordered container\n\tIsInOrderedContainer bool\n}\n\n// FullText returns a concatenation of all the report.ContainerHierarchyTexts and report.LeafNodeText\nfunc (report ConstructionNodeReport) FullText() string {\n\ttexts := []string{}\n\ttexts = append(texts, report.ContainerHierarchyTexts...)\n\ttexts = slices.DeleteFunc(texts, func(t string) bool {\n\t\treturn t == \"\"\n\t})\n\treturn strings.Join(texts, \" \")\n}\n\n// Labels returns a deduped set of all the spec's Labels.\nfunc (report ConstructionNodeReport) Labels() []string {\n\tout := []string{}\n\tseen := map[string]bool{}\n\tfor _, labels := range report.ContainerHierarchyLabels {\n\t\tfor _, label := range labels {\n\t\t\tif !seen[label] {\n\t\t\t\tseen[label] = true\n\t\t\t\tout = append(out, label)\n\t\t\t}\n\t\t}\n\t}\n\n\treturn out\n}\n\n// Report captures information about a Ginkgo test run\ntype Report struct {\n\t//SuitePath captures the absolute path to the test suite\n\tSuitePath string\n\n\t//SuiteDescription captures the description string passed to the DSL's RunSpecs() function\n\tSuiteDescription string\n\n\t//SuiteLabels captures any labels attached to the suite by the DSL's RunSpecs() function\n\tSuiteLabels []string\n\n\t//SuiteSemVerConstraints captures any semVerConstraints attached to the suite by the DSL's RunSpecs() function\n\tSuiteSemVerConstraints []string\n\n\t//SuiteComponentSemVerConstraints captures any component-specific semVerConstraints attached to the suite by the DSL's RunSpecs() function\n\tSuiteComponentSemVerConstraints map[string][]string\n\n\t//SuiteSucceeded captures the success or failure status of the test run\n\t//If true, the test run is considered successful.\n\t//If false, the test run is considered unsuccessful\n\tSuiteSucceeded bool\n\n\t//SuiteHasProgrammaticFocus captures whether the test suite has a test or set of tests that are programmatically focused\n\t//(i.e an `FIt` or an `FDescribe`\n\tSuiteHasProgrammaticFocus bool\n\n\t//SpecialSuiteFailureReasons may contain special failure reasons\n\t//For example, a test suite might be considered \"failed\" even if none of the individual specs\n\t//have a failure state.  For example, if the user has configured --fail-on-pending the test suite\n\t//will have failed if there are pending tests even though all non-pending tests may have passed.  In such\n\t//cases, Ginkgo populates SpecialSuiteFailureReasons with a clear message indicating the reason for the failure.\n\t//SpecialSuiteFailureReasons is also populated if the test suite is interrupted by the user.\n\t//Since multiple special failure reasons can occur, this field is a slice.\n\tSpecialSuiteFailureReasons []string\n\n\t//PreRunStats contains a set of stats captured before the test run begins.  This is primarily used\n\t//by Ginkgo's reporter to tell the user how many specs are in the current suite (PreRunStats.TotalSpecs)\n\t//and how many it intends to run (PreRunStats.SpecsThatWillRun) after applying any relevant focus or skip filters.\n\tPreRunStats PreRunStats\n\n\t//StartTime and EndTime capture the start and end time of the test run\n\tStartTime time.Time\n\tEndTime   time.Time\n\n\t//RunTime captures the duration of the test run\n\tRunTime time.Duration\n\n\t//SuiteConfig captures the Ginkgo configuration governing this test run\n\t//SuiteConfig includes information necessary for reproducing an identical test run,\n\t//such as the random seed and any filters applied during the test run\n\tSuiteConfig SuiteConfig\n\n\t//SpecReports is a list of all SpecReports generated by this test run\n\t//It is empty when the SuiteReport is provided to ReportBeforeSuite\n\tSpecReports SpecReports\n}\n\n// PreRunStats contains a set of stats captured before the test run begins.  This is primarily used\n// by Ginkgo's reporter to tell the user how many specs are in the current suite (PreRunStats.TotalSpecs)\n// and how many it intends to run (PreRunStats.SpecsThatWillRun) after applying any relevant focus or skip filters.\ntype PreRunStats struct {\n\tTotalSpecs       int\n\tSpecsThatWillRun int\n}\n\n// Add is used by Ginkgo's parallel aggregation mechanisms to combine test run reports form individual parallel processes\n// to form a complete final report.\nfunc (report Report) Add(other Report) Report {\n\treport.SuiteSucceeded = report.SuiteSucceeded && other.SuiteSucceeded\n\n\tif other.StartTime.Before(report.StartTime) {\n\t\treport.StartTime = other.StartTime\n\t}\n\n\tif other.EndTime.After(report.EndTime) {\n\t\treport.EndTime = other.EndTime\n\t}\n\n\tspecialSuiteFailureReasons := []string{}\n\treasonsLookup := map[string]bool{}\n\tfor _, reasons := range [][]string{report.SpecialSuiteFailureReasons, other.SpecialSuiteFailureReasons} {\n\t\tfor _, reason := range reasons {\n\t\t\tif !reasonsLookup[reason] {\n\t\t\t\treasonsLookup[reason] = true\n\t\t\t\tspecialSuiteFailureReasons = append(specialSuiteFailureReasons, reason)\n\t\t\t}\n\t\t}\n\t}\n\treport.SpecialSuiteFailureReasons = specialSuiteFailureReasons\n\treport.RunTime = report.EndTime.Sub(report.StartTime)\n\n\treports := make(SpecReports, len(report.SpecReports)+len(other.SpecReports))\n\tcopy(reports, report.SpecReports)\n\toffset := len(report.SpecReports)\n\tfor i := range other.SpecReports {\n\t\treports[i+offset] = other.SpecReports[i]\n\t}\n\n\treport.SpecReports = reports\n\treturn report\n}\n\n// SpecReport captures information about a Ginkgo spec.\ntype SpecReport struct {\n\t// ContainerHierarchyTexts is a slice containing the text strings of\n\t// all Describe/Context/When containers in this spec's hierarchy.\n\tContainerHierarchyTexts []string\n\n\t// ContainerHierarchyLocations is a slice containing the CodeLocations of\n\t// all Describe/Context/When containers in this spec's hierarchy.\n\tContainerHierarchyLocations []CodeLocation\n\n\t// ContainerHierarchyLabels is a slice containing the labels of\n\t// all Describe/Context/When containers in this spec's hierarchy\n\tContainerHierarchyLabels [][]string\n\n\t// ContainerHierarchySemVerConstraints is a slice containing the semVerConstraints of\n\t// all Describe/Context/When containers in this spec's hierarchy\n\tContainerHierarchySemVerConstraints [][]string\n\n\t// ContainerHierarchyComponentSemVerConstraints is a slice containing the component-specific semVerConstraints of\n\t// all Describe/Context/When containers in this spec's hierarchy\n\tContainerHierarchyComponentSemVerConstraints []map[string][]string\n\n\t// LeafNodeType, LeafNodeLocation, LeafNodeLabels, LeafNodeSemVerConstraints and LeafNodeText capture the NodeType, CodeLocation, and text\n\t// of the Ginkgo node being tested (typically an NodeTypeIt node, though this can also be\n\t// one of the NodeTypesForSuiteLevelNodes node types)\n\tLeafNodeType                       NodeType\n\tLeafNodeLocation                   CodeLocation\n\tLeafNodeLabels                     []string\n\tLeafNodeSemVerConstraints          []string\n\tLeafNodeComponentSemVerConstraints map[string][]string\n\tLeafNodeText                       string\n\n\t// Captures the Spec Priority\n\tSpecPriority int\n\n\t// State captures whether the spec has passed, failed, etc.\n\tState SpecState\n\n\t// IsSerial captures whether the spec has the Serial decorator\n\tIsSerial bool\n\n\t// IsInOrderedContainer captures whether the spec appears in an Ordered container\n\tIsInOrderedContainer bool\n\n\t// StartTime and EndTime capture the start and end time of the spec\n\tStartTime time.Time\n\tEndTime   time.Time\n\n\t// RunTime captures the duration of the spec\n\tRunTime time.Duration\n\n\t// ParallelProcess captures the parallel process that this spec ran on\n\tParallelProcess int\n\n\t// RunningInParallel captures whether this spec is part of a suite that ran in parallel\n\tRunningInParallel bool\n\n\t//Failure is populated if a spec has failed, panicked, been interrupted, or skipped by the user (e.g. calling Skip())\n\t//It includes detailed information about the Failure\n\tFailure Failure\n\n\t// NumAttempts captures the number of times this Spec was run.\n\t// Flakey specs can be retried with ginkgo --flake-attempts=N or the use of the FlakeAttempts decorator.\n\t// Repeated specs can be retried with the use of the MustPassRepeatedly decorator\n\tNumAttempts int\n\n\t// MaxFlakeAttempts captures whether the spec has been retried with ginkgo --flake-attempts=N or the use of the FlakeAttempts decorator.\n\tMaxFlakeAttempts int\n\n\t// MaxMustPassRepeatedly captures whether the spec has the MustPassRepeatedly decorator\n\tMaxMustPassRepeatedly int\n\n\t// CapturedGinkgoWriterOutput contains text printed to the GinkgoWriter\n\tCapturedGinkgoWriterOutput string\n\n\t// CapturedStdOutErr contains text printed to stdout/stderr (when running in parallel)\n\t// This is always empty when running in series or calling CurrentSpecReport()\n\t// It is used internally by Ginkgo's reporter\n\tCapturedStdOutErr string\n\n\t// ReportEntries contains any reports added via `AddReportEntry`\n\tReportEntries ReportEntries\n\n\t// ProgressReports contains any progress reports generated during this spec.  These can either be manually triggered, or automatically generated by Ginkgo via the PollProgressAfter() decorator\n\tProgressReports []ProgressReport\n\n\t// AdditionalFailures contains any failures that occurred after the initial spec failure.  These typically occur in cleanup nodes after the initial failure and are only emitted when running in verbose mode.\n\tAdditionalFailures []AdditionalFailure\n\n\t// SpecEvents capture additional events that occur during the spec run\n\tSpecEvents SpecEvents\n}\n\nfunc (report SpecReport) MarshalJSON() ([]byte, error) {\n\t//All this to avoid emitting an empty Failure struct in the JSON\n\tout := struct {\n\t\tContainerHierarchyTexts                      []string\n\t\tContainerHierarchyLocations                  []CodeLocation\n\t\tContainerHierarchyLabels                     [][]string\n\t\tContainerHierarchySemVerConstraints          [][]string\n\t\tContainerHierarchyComponentSemVerConstraints []map[string][]string\n\t\tLeafNodeType                                 NodeType\n\t\tLeafNodeLocation                             CodeLocation\n\t\tLeafNodeLabels                               []string\n\t\tLeafNodeSemVerConstraints                    []string\n\t\tLeafNodeText                                 string\n\t\tState                                        SpecState\n\t\tStartTime                                    time.Time\n\t\tEndTime                                      time.Time\n\t\tRunTime                                      time.Duration\n\t\tParallelProcess                              int\n\t\tFailure                                      *Failure `json:\",omitempty\"`\n\t\tNumAttempts                                  int\n\t\tMaxFlakeAttempts                             int\n\t\tMaxMustPassRepeatedly                        int\n\t\tCapturedGinkgoWriterOutput                   string              `json:\",omitempty\"`\n\t\tCapturedStdOutErr                            string              `json:\",omitempty\"`\n\t\tReportEntries                                ReportEntries       `json:\",omitempty\"`\n\t\tProgressReports                              []ProgressReport    `json:\",omitempty\"`\n\t\tAdditionalFailures                           []AdditionalFailure `json:\",omitempty\"`\n\t\tSpecEvents                                   SpecEvents          `json:\",omitempty\"`\n\t}{\n\t\tContainerHierarchyTexts:                      report.ContainerHierarchyTexts,\n\t\tContainerHierarchyLocations:                  report.ContainerHierarchyLocations,\n\t\tContainerHierarchyLabels:                     report.ContainerHierarchyLabels,\n\t\tContainerHierarchySemVerConstraints:          report.ContainerHierarchySemVerConstraints,\n\t\tContainerHierarchyComponentSemVerConstraints: report.ContainerHierarchyComponentSemVerConstraints,\n\t\tLeafNodeType:                                 report.LeafNodeType,\n\t\tLeafNodeLocation:                             report.LeafNodeLocation,\n\t\tLeafNodeLabels:                               report.LeafNodeLabels,\n\t\tLeafNodeSemVerConstraints:                    report.LeafNodeSemVerConstraints,\n\t\tLeafNodeText:                                 report.LeafNodeText,\n\t\tState:                                        report.State,\n\t\tStartTime:                                    report.StartTime,\n\t\tEndTime:                                      report.EndTime,\n\t\tRunTime:                                      report.RunTime,\n\t\tParallelProcess:                              report.ParallelProcess,\n\t\tFailure:                                      nil,\n\t\tReportEntries:                                nil,\n\t\tNumAttempts:                                  report.NumAttempts,\n\t\tMaxFlakeAttempts:                             report.MaxFlakeAttempts,\n\t\tMaxMustPassRepeatedly:                        report.MaxMustPassRepeatedly,\n\t\tCapturedGinkgoWriterOutput:                   report.CapturedGinkgoWriterOutput,\n\t\tCapturedStdOutErr:                            report.CapturedStdOutErr,\n\t}\n\n\tif !report.Failure.IsZero() {\n\t\tout.Failure = &(report.Failure)\n\t}\n\tif len(report.ReportEntries) > 0 {\n\t\tout.ReportEntries = report.ReportEntries\n\t}\n\tif len(report.ProgressReports) > 0 {\n\t\tout.ProgressReports = report.ProgressReports\n\t}\n\tif len(report.AdditionalFailures) > 0 {\n\t\tout.AdditionalFailures = report.AdditionalFailures\n\t}\n\tif len(report.SpecEvents) > 0 {\n\t\tout.SpecEvents = report.SpecEvents\n\t}\n\n\treturn json.Marshal(out)\n}\n\n// CombinedOutput returns a single string representation of both CapturedStdOutErr and CapturedGinkgoWriterOutput\n// Note that both are empty when using CurrentSpecReport() so CurrentSpecReport().CombinedOutput() will always be empty.\n// CombinedOutput() is used internally by Ginkgo's reporter.\nfunc (report SpecReport) CombinedOutput() string {\n\tif report.CapturedStdOutErr == \"\" {\n\t\treturn report.CapturedGinkgoWriterOutput\n\t}\n\tif report.CapturedGinkgoWriterOutput == \"\" {\n\t\treturn report.CapturedStdOutErr\n\t}\n\treturn report.CapturedStdOutErr + \"\\n\" + report.CapturedGinkgoWriterOutput\n}\n\n// Failed returns true if report.State is one of the SpecStateFailureStates\n// (SpecStateFailed, SpecStatePanicked, SpecStateinterrupted, SpecStateAborted)\nfunc (report SpecReport) Failed() bool {\n\treturn report.State.Is(SpecStateFailureStates)\n}\n\n// FullText returns a concatenation of all the report.ContainerHierarchyTexts and report.LeafNodeText\nfunc (report SpecReport) FullText() string {\n\ttexts := []string{}\n\ttexts = append(texts, report.ContainerHierarchyTexts...)\n\tif report.LeafNodeText != \"\" {\n\t\ttexts = append(texts, report.LeafNodeText)\n\t}\n\ttexts = slices.DeleteFunc(texts, func(t string) bool {\n\t\treturn t == \"\"\n\t})\n\treturn strings.Join(texts, \" \")\n}\n\n// Labels returns a deduped set of all the spec's Labels.\nfunc (report SpecReport) Labels() []string {\n\tout := []string{}\n\tseen := map[string]bool{}\n\tfor _, labels := range report.ContainerHierarchyLabels {\n\t\tfor _, label := range labels {\n\t\t\tif !seen[label] {\n\t\t\t\tseen[label] = true\n\t\t\t\tout = append(out, label)\n\t\t\t}\n\t\t}\n\t}\n\tfor _, label := range report.LeafNodeLabels {\n\t\tif !seen[label] {\n\t\t\tseen[label] = true\n\t\t\tout = append(out, label)\n\t\t}\n\t}\n\n\treturn out\n}\n\n// SemVerConstraints returns a deduped set of all the spec's SemVerConstraints.\nfunc (report SpecReport) SemVerConstraints() []string {\n\tout := []string{}\n\tseen := map[string]bool{}\n\tfor _, semVerConstraints := range report.ContainerHierarchySemVerConstraints {\n\t\tfor _, semVerConstraint := range semVerConstraints {\n\t\t\tif !seen[semVerConstraint] {\n\t\t\t\tseen[semVerConstraint] = true\n\t\t\t\tout = append(out, semVerConstraint)\n\t\t\t}\n\t\t}\n\t}\n\tfor _, semVerConstraint := range report.LeafNodeSemVerConstraints {\n\t\tif !seen[semVerConstraint] {\n\t\t\tseen[semVerConstraint] = true\n\t\t\tout = append(out, semVerConstraint)\n\t\t}\n\t}\n\n\treturn out\n}\n\n// ComponentSemVerConstraints returns a deduped map of all the spec's component-specific SemVerConstraints.\nfunc (report SpecReport) ComponentSemVerConstraints() map[string][]string {\n\tout := map[string][]string{}\n\tseen := map[string]bool{}\n\tfor _, compSemVerConstraints := range report.ContainerHierarchyComponentSemVerConstraints {\n\t\tfor component := range compSemVerConstraints {\n\t\t\tif !seen[component] {\n\t\t\t\tseen[component] = true\n\t\t\t\tout[component] = compSemVerConstraints[component]\n\t\t\t} else {\n\t\t\t\tout[component] = append(out[component], compSemVerConstraints[component]...)\n\t\t\t\tout[component] = slices.Compact(out[component])\n\t\t\t}\n\t\t}\n\t}\n\tfor component := range report.LeafNodeComponentSemVerConstraints {\n\t\tif !seen[component] {\n\t\t\tseen[component] = true\n\t\t\tout[component] = report.LeafNodeComponentSemVerConstraints[component]\n\t\t} else {\n\t\t\tout[component] = append(out[component], report.LeafNodeComponentSemVerConstraints[component]...)\n\t\t\tout[component] = slices.Compact(out[component])\n\t\t}\n\t}\n\n\treturn out\n}\n\n// MatchesLabelFilter returns true if the spec satisfies the passed in label filter query\nfunc (report SpecReport) MatchesLabelFilter(query string) (bool, error) {\n\tfilter, err := ParseLabelFilter(query)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\treturn filter(report.Labels()), nil\n}\n\n// MatchesSemVerFilter returns true if the spec satisfies the passed in label filter query\nfunc (report SpecReport) MatchesSemVerFilter(version string) (bool, error) {\n\tfilter, err := ParseSemVerFilter(version)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\n\tsemVerConstraints := report.SemVerConstraints()\n\tif len(semVerConstraints) != 0 && filter(\"\", report.SemVerConstraints()) == false {\n\t\treturn false, nil\n\t}\n\n\tcomponentSemVerConstraints := report.ComponentSemVerConstraints()\n\tif len(componentSemVerConstraints) != 0 {\n\t\tfor component, constraints := range componentSemVerConstraints {\n\t\t\tif filter(component, constraints) == false {\n\t\t\t\treturn false, nil\n\t\t\t}\n\t\t}\n\t}\n\n\treturn true, nil\n}\n\n// FileName() returns the name of the file containing the spec\nfunc (report SpecReport) FileName() string {\n\treturn report.LeafNodeLocation.FileName\n}\n\n// LineNumber() returns the line number of the leaf node\nfunc (report SpecReport) LineNumber() int {\n\treturn report.LeafNodeLocation.LineNumber\n}\n\n// FailureMessage() returns the failure message (or empty string if the test hasn't failed)\nfunc (report SpecReport) FailureMessage() string {\n\treturn report.Failure.Message\n}\n\n// FailureLocation() returns the location of the failure (or an empty CodeLocation if the test hasn't failed)\nfunc (report SpecReport) FailureLocation() CodeLocation {\n\treturn report.Failure.Location\n}\n\n// Timeline() returns a timeline view of the report\nfunc (report SpecReport) Timeline() Timeline {\n\ttimeline := Timeline{}\n\tif !report.Failure.IsZero() {\n\t\ttimeline = append(timeline, report.Failure)\n\t\tif report.Failure.AdditionalFailure != nil {\n\t\t\ttimeline = append(timeline, *(report.Failure.AdditionalFailure))\n\t\t}\n\t}\n\tfor _, additionalFailure := range report.AdditionalFailures {\n\t\ttimeline = append(timeline, additionalFailure)\n\t}\n\tfor _, reportEntry := range report.ReportEntries {\n\t\ttimeline = append(timeline, reportEntry)\n\t}\n\tfor _, progressReport := range report.ProgressReports {\n\t\ttimeline = append(timeline, progressReport)\n\t}\n\tfor _, specEvent := range report.SpecEvents {\n\t\ttimeline = append(timeline, specEvent)\n\t}\n\tsort.Sort(timeline)\n\treturn timeline\n}\n\ntype SpecReports []SpecReport\n\n// WithLeafNodeType returns the subset of SpecReports with LeafNodeType matching one of the requested NodeTypes\nfunc (reports SpecReports) WithLeafNodeType(nodeTypes NodeType) SpecReports {\n\tcount := 0\n\tfor i := range reports {\n\t\tif reports[i].LeafNodeType.Is(nodeTypes) {\n\t\t\tcount++\n\t\t}\n\t}\n\n\tout := make(SpecReports, count)\n\tj := 0\n\tfor i := range reports {\n\t\tif reports[i].LeafNodeType.Is(nodeTypes) {\n\t\t\tout[j] = reports[i]\n\t\t\tj++\n\t\t}\n\t}\n\treturn out\n}\n\n// WithState returns the subset of SpecReports with State matching one of the requested SpecStates\nfunc (reports SpecReports) WithState(states SpecState) SpecReports {\n\tcount := 0\n\tfor i := range reports {\n\t\tif reports[i].State.Is(states) {\n\t\t\tcount++\n\t\t}\n\t}\n\n\tout, j := make(SpecReports, count), 0\n\tfor i := range reports {\n\t\tif reports[i].State.Is(states) {\n\t\t\tout[j] = reports[i]\n\t\t\tj++\n\t\t}\n\t}\n\treturn out\n}\n\n// CountWithState returns the number of SpecReports with State matching one of the requested SpecStates\nfunc (reports SpecReports) CountWithState(states SpecState) int {\n\tn := 0\n\tfor i := range reports {\n\t\tif reports[i].State.Is(states) {\n\t\t\tn += 1\n\t\t}\n\t}\n\treturn n\n}\n\n// If the Spec passes, CountOfFlakedSpecs returns the number of SpecReports that failed after multiple attempts.\nfunc (reports SpecReports) CountOfFlakedSpecs() int {\n\tn := 0\n\tfor i := range reports {\n\t\tif reports[i].MaxFlakeAttempts > 1 && reports[i].State.Is(SpecStatePassed) && reports[i].NumAttempts > 1 {\n\t\t\tn += 1\n\t\t}\n\t}\n\treturn n\n}\n\n// If the Spec fails, CountOfRepeatedSpecs returns the number of SpecReports that passed after multiple attempts\nfunc (reports SpecReports) CountOfRepeatedSpecs() int {\n\tn := 0\n\tfor i := range reports {\n\t\tif reports[i].MaxMustPassRepeatedly > 1 && reports[i].State.Is(SpecStateFailureStates) && reports[i].NumAttempts > 1 {\n\t\t\tn += 1\n\t\t}\n\t}\n\treturn n\n}\n\n// TimelineLocation captures the location of an event in the spec's timeline\ntype TimelineLocation struct {\n\t//Offset is the offset (in bytes) of the event relative to the GinkgoWriter stream\n\tOffset int `json:\",omitempty\"`\n\n\t//Order is the order of the event with respect to other events.  The absolute value of Order\n\t//is irrelevant.  All that matters is that an event with a lower Order occurs before ane vent with a higher Order\n\tOrder int `json:\",omitempty\"`\n\n\tTime time.Time\n}\n\n// TimelineEvent represent an event on the timeline\n// consumers of Timeline will need to check the concrete type of each entry to determine how to handle it\ntype TimelineEvent interface {\n\tGetTimelineLocation() TimelineLocation\n}\n\ntype Timeline []TimelineEvent\n\nfunc (t Timeline) Len() int { return len(t) }\nfunc (t Timeline) Less(i, j int) bool {\n\treturn t[i].GetTimelineLocation().Order < t[j].GetTimelineLocation().Order\n}\nfunc (t Timeline) Swap(i, j int) { t[i], t[j] = t[j], t[i] }\nfunc (t Timeline) WithoutHiddenReportEntries() Timeline {\n\tout := Timeline{}\n\tfor _, event := range t {\n\t\tif reportEntry, isReportEntry := event.(ReportEntry); isReportEntry && reportEntry.Visibility == ReportEntryVisibilityNever {\n\t\t\tcontinue\n\t\t}\n\t\tout = append(out, event)\n\t}\n\treturn out\n}\n\nfunc (t Timeline) WithoutVeryVerboseSpecEvents() Timeline {\n\tout := Timeline{}\n\tfor _, event := range t {\n\t\tif specEvent, isSpecEvent := event.(SpecEvent); isSpecEvent && specEvent.IsOnlyVisibleAtVeryVerbose() {\n\t\t\tcontinue\n\t\t}\n\t\tout = append(out, event)\n\t}\n\treturn out\n}\n\n// Failure captures failure information for an individual test\ntype Failure struct {\n\t// Message - the failure message passed into Fail(...).  When using a matcher library\n\t// like Gomega, this will contain the failure message generated by Gomega.\n\t//\n\t// Message is also populated if the user has called Skip(...).\n\tMessage string\n\n\t// Location - the CodeLocation where the failure occurred\n\t// This CodeLocation will include a fully-populated StackTrace\n\tLocation CodeLocation\n\n\tTimelineLocation TimelineLocation\n\n\t// ForwardedPanic - if the failure represents a captured panic (i.e. Summary.State == SpecStatePanicked)\n\t// then ForwardedPanic will be populated with a string representation of the captured panic.\n\tForwardedPanic string `json:\",omitempty\"`\n\n\t// FailureNodeContext - one of three contexts describing the node in which the failure occurred:\n\t// FailureNodeIsLeafNode means the failure occurred in the leaf node of the associated SpecReport. None of the other FailureNode fields will be populated\n\t// FailureNodeAtTopLevel means the failure occurred in a non-leaf node that is defined at the top-level of the spec (i.e. not in a container). FailureNodeType and FailureNodeLocation will be populated.\n\t// FailureNodeInContainer means the failure occurred in a non-leaf node that is defined within a container.  FailureNodeType, FailureNodeLocation, and FailureNodeContainerIndex will be populated.\n\t//\n\t// FailureNodeType will contain the NodeType of the node in which the failure occurred.\n\t// FailureNodeLocation will contain the CodeLocation of the node in which the failure occurred.\n\t// If populated, FailureNodeContainerIndex will be the index into SpecReport.ContainerHierarchyTexts and SpecReport.ContainerHierarchyLocations that represents the parent container of the node in which the failure occurred.\n\tFailureNodeContext FailureNodeContext `json:\",omitempty\"`\n\n\tFailureNodeType NodeType `json:\",omitempty\"`\n\n\tFailureNodeLocation CodeLocation `json:\",omitempty\"`\n\n\tFailureNodeContainerIndex int `json:\",omitempty\"`\n\n\t//ProgressReport is populated if the spec was interrupted or timed out\n\tProgressReport ProgressReport `json:\",omitempty\"`\n\n\t//AdditionalFailure is non-nil if a follow-on failure occurred within the same node after the primary failure.  This only happens when a node has timed out or been interrupted.  In such cases the AdditionalFailure can include information about where/why the spec was stuck.\n\tAdditionalFailure *AdditionalFailure `json:\",omitempty\"`\n}\n\nfunc (f Failure) IsZero() bool {\n\treturn f.Message == \"\" && (f.Location == CodeLocation{})\n}\n\nfunc (f Failure) GetTimelineLocation() TimelineLocation {\n\treturn f.TimelineLocation\n}\n\n// FailureNodeContext captures the location context for the node containing the failing line of code\ntype FailureNodeContext uint\n\nconst (\n\tFailureNodeContextInvalid FailureNodeContext = iota\n\n\tFailureNodeIsLeafNode\n\tFailureNodeAtTopLevel\n\tFailureNodeInContainer\n)\n\nvar fncEnumSupport = NewEnumSupport(map[uint]string{\n\tuint(FailureNodeContextInvalid): \"INVALID FAILURE NODE CONTEXT\",\n\tuint(FailureNodeIsLeafNode):     \"leaf-node\",\n\tuint(FailureNodeAtTopLevel):     \"top-level\",\n\tuint(FailureNodeInContainer):    \"in-container\",\n})\n\nfunc (fnc FailureNodeContext) String() string {\n\treturn fncEnumSupport.String(uint(fnc))\n}\nfunc (fnc *FailureNodeContext) UnmarshalJSON(b []byte) error {\n\tout, err := fncEnumSupport.UnmarshJSON(b)\n\t*fnc = FailureNodeContext(out)\n\treturn err\n}\nfunc (fnc FailureNodeContext) MarshalJSON() ([]byte, error) {\n\treturn fncEnumSupport.MarshJSON(uint(fnc))\n}\n\n// AdditionalFailure capturs any additional failures that occur after the initial failure of a psec\n// these typically occur in clean up nodes after the spec has failed.\n// We can't simply use Failure as we want to track the SpecState to know what kind of failure this is\ntype AdditionalFailure struct {\n\tState   SpecState\n\tFailure Failure\n}\n\nfunc (f AdditionalFailure) GetTimelineLocation() TimelineLocation {\n\treturn f.Failure.TimelineLocation\n}\n\n// SpecState captures the state of a spec\n// To determine if a given `state` represents a failure state, use `state.Is(SpecStateFailureStates)`\ntype SpecState uint\n\nconst (\n\tSpecStateInvalid SpecState = 0\n\n\tSpecStatePending SpecState = 1 << iota\n\tSpecStateSkipped\n\tSpecStatePassed\n\tSpecStateFailed\n\tSpecStateAborted\n\tSpecStatePanicked\n\tSpecStateInterrupted\n\tSpecStateTimedout\n)\n\nvar ssEnumSupport = NewEnumSupport(map[uint]string{\n\tuint(SpecStateInvalid):     \"INVALID SPEC STATE\",\n\tuint(SpecStatePending):     \"pending\",\n\tuint(SpecStateSkipped):     \"skipped\",\n\tuint(SpecStatePassed):      \"passed\",\n\tuint(SpecStateFailed):      \"failed\",\n\tuint(SpecStateAborted):     \"aborted\",\n\tuint(SpecStatePanicked):    \"panicked\",\n\tuint(SpecStateInterrupted): \"interrupted\",\n\tuint(SpecStateTimedout):    \"timedout\",\n})\n\nfunc (ss SpecState) String() string {\n\treturn ssEnumSupport.String(uint(ss))\n}\nfunc (ss SpecState) GomegaString() string {\n\treturn ssEnumSupport.String(uint(ss))\n}\nfunc (ss *SpecState) UnmarshalJSON(b []byte) error {\n\tout, err := ssEnumSupport.UnmarshJSON(b)\n\t*ss = SpecState(out)\n\treturn err\n}\nfunc (ss SpecState) MarshalJSON() ([]byte, error) {\n\treturn ssEnumSupport.MarshJSON(uint(ss))\n}\n\nvar SpecStateFailureStates = SpecStateFailed | SpecStateTimedout | SpecStateAborted | SpecStatePanicked | SpecStateInterrupted\n\nfunc (ss SpecState) Is(states SpecState) bool {\n\treturn ss&states != 0\n}\n\n// ProgressReport captures the progress of the current spec.  It is, effectively, a structured Ginkgo-aware stack trace\ntype ProgressReport struct {\n\tMessage           string `json:\",omitempty\"`\n\tParallelProcess   int    `json:\",omitempty\"`\n\tRunningInParallel bool   `json:\",omitempty\"`\n\n\tContainerHierarchyTexts []string     `json:\",omitempty\"`\n\tLeafNodeText            string       `json:\",omitempty\"`\n\tLeafNodeLocation        CodeLocation `json:\",omitempty\"`\n\tSpecStartTime           time.Time    `json:\",omitempty\"`\n\n\tCurrentNodeType      NodeType     `json:\",omitempty\"`\n\tCurrentNodeText      string       `json:\",omitempty\"`\n\tCurrentNodeLocation  CodeLocation `json:\",omitempty\"`\n\tCurrentNodeStartTime time.Time    `json:\",omitempty\"`\n\n\tCurrentStepText      string       `json:\",omitempty\"`\n\tCurrentStepLocation  CodeLocation `json:\",omitempty\"`\n\tCurrentStepStartTime time.Time    `json:\",omitempty\"`\n\n\tAdditionalReports []string `json:\",omitempty\"`\n\n\tCapturedGinkgoWriterOutput string           `json:\",omitempty\"`\n\tTimelineLocation           TimelineLocation `json:\",omitempty\"`\n\n\tGoroutines []Goroutine `json:\",omitempty\"`\n}\n\nfunc (pr ProgressReport) IsZero() bool {\n\treturn pr.CurrentNodeType == NodeTypeInvalid\n}\n\nfunc (pr ProgressReport) Time() time.Time {\n\treturn pr.TimelineLocation.Time\n}\n\nfunc (pr ProgressReport) SpecGoroutine() Goroutine {\n\tfor _, goroutine := range pr.Goroutines {\n\t\tif goroutine.IsSpecGoroutine {\n\t\t\treturn goroutine\n\t\t}\n\t}\n\treturn Goroutine{}\n}\n\nfunc (pr ProgressReport) HighlightedGoroutines() []Goroutine {\n\tout := []Goroutine{}\n\tfor _, goroutine := range pr.Goroutines {\n\t\tif goroutine.IsSpecGoroutine || !goroutine.HasHighlights() {\n\t\t\tcontinue\n\t\t}\n\t\tout = append(out, goroutine)\n\t}\n\treturn out\n}\n\nfunc (pr ProgressReport) OtherGoroutines() []Goroutine {\n\tout := []Goroutine{}\n\tfor _, goroutine := range pr.Goroutines {\n\t\tif goroutine.IsSpecGoroutine || goroutine.HasHighlights() {\n\t\t\tcontinue\n\t\t}\n\t\tout = append(out, goroutine)\n\t}\n\treturn out\n}\n\nfunc (pr ProgressReport) WithoutCapturedGinkgoWriterOutput() ProgressReport {\n\tout := pr\n\tout.CapturedGinkgoWriterOutput = \"\"\n\treturn out\n}\n\nfunc (pr ProgressReport) WithoutOtherGoroutines() ProgressReport {\n\tout := pr\n\tfilteredGoroutines := []Goroutine{}\n\tfor _, goroutine := range pr.Goroutines {\n\t\tif goroutine.IsSpecGoroutine || goroutine.HasHighlights() {\n\t\t\tfilteredGoroutines = append(filteredGoroutines, goroutine)\n\t\t}\n\t}\n\tout.Goroutines = filteredGoroutines\n\treturn out\n}\n\nfunc (pr ProgressReport) GetTimelineLocation() TimelineLocation {\n\treturn pr.TimelineLocation\n}\n\ntype Goroutine struct {\n\tID              uint64\n\tState           string\n\tStack           []FunctionCall\n\tIsSpecGoroutine bool\n}\n\nfunc (g Goroutine) IsZero() bool {\n\treturn g.ID == 0\n}\n\nfunc (g Goroutine) HasHighlights() bool {\n\tfor _, fc := range g.Stack {\n\t\tif fc.Highlight {\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn false\n}\n\ntype FunctionCall struct {\n\tFunction        string\n\tFilename        string\n\tLine            int\n\tHighlight       bool     `json:\",omitempty\"`\n\tSource          []string `json:\",omitempty\"`\n\tSourceHighlight int      `json:\",omitempty\"`\n}\n\n// NodeType captures the type of a given Ginkgo Node\ntype NodeType uint\n\nconst (\n\tNodeTypeInvalid NodeType = 0\n\n\tNodeTypeContainer NodeType = 1 << iota\n\tNodeTypeIt\n\n\tNodeTypeBeforeEach\n\tNodeTypeJustBeforeEach\n\tNodeTypeAfterEach\n\tNodeTypeJustAfterEach\n\n\tNodeTypeBeforeAll\n\tNodeTypeAfterAll\n\n\tNodeTypeBeforeSuite\n\tNodeTypeSynchronizedBeforeSuite\n\tNodeTypeAfterSuite\n\tNodeTypeSynchronizedAfterSuite\n\n\tNodeTypeReportBeforeEach\n\tNodeTypeReportAfterEach\n\tNodeTypeReportBeforeSuite\n\tNodeTypeReportAfterSuite\n\n\tNodeTypeCleanupInvalid\n\tNodeTypeCleanupAfterEach\n\tNodeTypeCleanupAfterAll\n\tNodeTypeCleanupAfterSuite\n)\n\nvar NodeTypesForContainerAndIt = NodeTypeContainer | NodeTypeIt\nvar NodeTypesForSuiteLevelNodes = NodeTypeBeforeSuite | NodeTypeSynchronizedBeforeSuite | NodeTypeAfterSuite | NodeTypeSynchronizedAfterSuite | NodeTypeReportBeforeSuite | NodeTypeReportAfterSuite | NodeTypeCleanupAfterSuite\nvar NodeTypesAllowedDuringCleanupInterrupt = NodeTypeAfterEach | NodeTypeJustAfterEach | NodeTypeAfterAll | NodeTypeAfterSuite | NodeTypeSynchronizedAfterSuite | NodeTypeCleanupAfterEach | NodeTypeCleanupAfterAll | NodeTypeCleanupAfterSuite\nvar NodeTypesAllowedDuringReportInterrupt = NodeTypeReportBeforeEach | NodeTypeReportAfterEach | NodeTypeReportBeforeSuite | NodeTypeReportAfterSuite\n\nvar ntEnumSupport = NewEnumSupport(map[uint]string{\n\tuint(NodeTypeInvalid):                 \"INVALID NODE TYPE\",\n\tuint(NodeTypeContainer):               \"Container\",\n\tuint(NodeTypeIt):                      \"It\",\n\tuint(NodeTypeBeforeEach):              \"BeforeEach\",\n\tuint(NodeTypeJustBeforeEach):          \"JustBeforeEach\",\n\tuint(NodeTypeAfterEach):               \"AfterEach\",\n\tuint(NodeTypeJustAfterEach):           \"JustAfterEach\",\n\tuint(NodeTypeBeforeAll):               \"BeforeAll\",\n\tuint(NodeTypeAfterAll):                \"AfterAll\",\n\tuint(NodeTypeBeforeSuite):             \"BeforeSuite\",\n\tuint(NodeTypeSynchronizedBeforeSuite): \"SynchronizedBeforeSuite\",\n\tuint(NodeTypeAfterSuite):              \"AfterSuite\",\n\tuint(NodeTypeSynchronizedAfterSuite):  \"SynchronizedAfterSuite\",\n\tuint(NodeTypeReportBeforeEach):        \"ReportBeforeEach\",\n\tuint(NodeTypeReportAfterEach):         \"ReportAfterEach\",\n\tuint(NodeTypeReportBeforeSuite):       \"ReportBeforeSuite\",\n\tuint(NodeTypeReportAfterSuite):        \"ReportAfterSuite\",\n\tuint(NodeTypeCleanupInvalid):          \"DeferCleanup\",\n\tuint(NodeTypeCleanupAfterEach):        \"DeferCleanup (Each)\",\n\tuint(NodeTypeCleanupAfterAll):         \"DeferCleanup (All)\",\n\tuint(NodeTypeCleanupAfterSuite):       \"DeferCleanup (Suite)\",\n})\n\nfunc (nt NodeType) String() string {\n\treturn ntEnumSupport.String(uint(nt))\n}\nfunc (nt *NodeType) UnmarshalJSON(b []byte) error {\n\tout, err := ntEnumSupport.UnmarshJSON(b)\n\t*nt = NodeType(out)\n\treturn err\n}\nfunc (nt NodeType) MarshalJSON() ([]byte, error) {\n\treturn ntEnumSupport.MarshJSON(uint(nt))\n}\n\nfunc (nt NodeType) Is(nodeTypes NodeType) bool {\n\treturn nt&nodeTypes != 0\n}\n\n/*\nSpecEvent captures a vareity of events that can occur when specs run.  See SpecEventType for the list of available events.\n*/\ntype SpecEvent struct {\n\tSpecEventType SpecEventType\n\n\tCodeLocation     CodeLocation\n\tTimelineLocation TimelineLocation\n\n\tMessage  string        `json:\",omitempty\"`\n\tDuration time.Duration `json:\",omitempty\"`\n\tNodeType NodeType      `json:\",omitempty\"`\n\tAttempt  int           `json:\",omitempty\"`\n}\n\nfunc (se SpecEvent) GetTimelineLocation() TimelineLocation {\n\treturn se.TimelineLocation\n}\n\nfunc (se SpecEvent) IsOnlyVisibleAtVeryVerbose() bool {\n\treturn se.SpecEventType.Is(SpecEventByEnd | SpecEventNodeStart | SpecEventNodeEnd)\n}\n\nfunc (se SpecEvent) GomegaString() string {\n\tout := &strings.Builder{}\n\tout.WriteString(\"[\" + se.SpecEventType.String() + \" SpecEvent] \")\n\tif se.Message != \"\" {\n\t\tout.WriteString(\"Message=\")\n\t\tout.WriteString(`\"` + se.Message + `\",`)\n\t}\n\tif se.Duration != 0 {\n\t\tout.WriteString(\"Duration=\" + se.Duration.String() + \",\")\n\t}\n\tif se.NodeType != NodeTypeInvalid {\n\t\tout.WriteString(\"NodeType=\" + se.NodeType.String() + \",\")\n\t}\n\tif se.Attempt != 0 {\n\t\tout.WriteString(fmt.Sprintf(\"Attempt=%d\", se.Attempt) + \",\")\n\t}\n\tout.WriteString(\"CL=\" + se.CodeLocation.String() + \",\")\n\tout.WriteString(fmt.Sprintf(\"TL.Offset=%d\", se.TimelineLocation.Offset))\n\n\treturn out.String()\n}\n\ntype SpecEvents []SpecEvent\n\nfunc (se SpecEvents) WithType(seType SpecEventType) SpecEvents {\n\tout := SpecEvents{}\n\tfor _, event := range se {\n\t\tif event.SpecEventType.Is(seType) {\n\t\t\tout = append(out, event)\n\t\t}\n\t}\n\treturn out\n}\n\ntype SpecEventType uint\n\nconst (\n\tSpecEventInvalid SpecEventType = 0\n\n\tSpecEventByStart SpecEventType = 1 << iota\n\tSpecEventByEnd\n\tSpecEventNodeStart\n\tSpecEventNodeEnd\n\tSpecEventSpecRepeat\n\tSpecEventSpecRetry\n)\n\nvar seEnumSupport = NewEnumSupport(map[uint]string{\n\tuint(SpecEventInvalid):    \"INVALID SPEC EVENT\",\n\tuint(SpecEventByStart):    \"By\",\n\tuint(SpecEventByEnd):      \"By (End)\",\n\tuint(SpecEventNodeStart):  \"Node\",\n\tuint(SpecEventNodeEnd):    \"Node (End)\",\n\tuint(SpecEventSpecRepeat): \"Repeat\",\n\tuint(SpecEventSpecRetry):  \"Retry\",\n})\n\nfunc (se SpecEventType) String() string {\n\treturn seEnumSupport.String(uint(se))\n}\nfunc (se *SpecEventType) UnmarshalJSON(b []byte) error {\n\tout, err := seEnumSupport.UnmarshJSON(b)\n\t*se = SpecEventType(out)\n\treturn err\n}\nfunc (se SpecEventType) MarshalJSON() ([]byte, error) {\n\treturn seEnumSupport.MarshJSON(uint(se))\n}\n\nfunc (se SpecEventType) Is(specEventTypes SpecEventType) bool {\n\treturn se&specEventTypes != 0\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/ginkgo/v2/types/version.go",
    "content": "package types\n\nconst VERSION = \"2.28.1\"\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/.gitignore",
    "content": ".DS_Store\n*.test\n.\n.idea\ngomega.iml\nTODO\n.vscode"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/CHANGELOG.md",
    "content": "## 1.39.1\n\nUpdate all dependencies.  This auto-updated the required version of Go to 1.24, consistent with the fact that Go 1.23 has been out of support for almost six months.\n\n## 1.39.0\n\n### Features\n\nAdd `MatchErrorStrictly` which only passes if `errors.Is(actual, expected)` returns true.  `MatchError`, by contrast, will fallback to string comparison.\n\n## 1.38.3\n\n### Fixes\nmake string formatitng more consistent for users who use format.Object directly\n\n## 1.38.2\n\n- roll back to go 1.23.0 [c404969]\n\n## 1.38.1\n\n### Fixes\n\nNumerous minor fixes and dependency bumps\n\n## 1.38.0\n\n### Features\n- gstruct handles extra unexported fields [4ee7ed0]\n\n### Fixes\n- support [] in IgnoringTopFunction function signatures (#851) [36bbf72]\n\n### Maintenance\n- Bump golang.org/x/net from 0.40.0 to 0.41.0 (#846) [529d408]\n- Fix typo [acd1f55]\n- Bump google.golang.org/protobuf from 1.36.5 to 1.36.6 (#835) [bae65a0]\n- Bump nokogiri from 1.18.4 to 1.18.8 in /docs (#842) [8dda91f]\n- Bump golang.org/x/net from 0.39.0 to 0.40.0 (#843) [212d812]\n- Bump github.com/onsi/ginkgo/v2 from 2.23.3 to 2.23.4 (#839) [59bd7f9]\n- Bump nokogiri from 1.18.1 to 1.18.4 in /docs (#834) [328c729]\n- Bump uri from 1.0.2 to 1.0.3 in /docs (#826) [9a798a1]\n- Bump golang.org/x/net from 0.37.0 to 0.39.0 (#841) [04a72c6]\n\n## 1.37.0\n\n### Features\n- add To/ToNot/NotTo aliases for AsyncAssertion [5666f98]\n\n## 1.36.3\n\n### Maintenance\n\n- bump all the things [adb8b49]\n- chore: replace `interface{}` with `any` [7613216]\n- Bump google.golang.org/protobuf from 1.36.1 to 1.36.5 (#822) [9fe5259]\n- remove spurious \"toolchain\" from go.mod (#819) [a0e85b9]\n- Bump golang.org/x/net from 0.33.0 to 0.35.0 (#823) [604a8b1]\n- Bump activesupport from 6.0.6.1 to 6.1.7.5 in /docs (#772) [36fbc84]\n- Bump github-pages from 231 to 232 in /docs (#778) [ced70d7]\n- Bump rexml from 3.2.6 to 3.3.9 in /docs (#788) [c8b4a07]\n- Bump github.com/onsi/ginkgo/v2 from 2.22.1 to 2.22.2 (#812) [06431b9]\n- Bump webrick from 1.8.1 to 1.9.1 in /docs (#800) [b55a92d]\n- Fix typos (#813) [a1d518b]\n\n## 1.36.2\n\n### Maintenance\n- Bump google.golang.org/protobuf from 1.35.1 to 1.36.1 (#810) [9a7609d]\n- Bump golang.org/x/net from 0.30.0 to 0.33.0 (#807) [b6cb028]\n- Bump github.com/onsi/ginkgo/v2 from 2.20.1 to 2.22.1 (#808) [5756529]\n- Bump nokogiri from 1.16.3 to 1.16.5 in /docs (#757) [dabc12e]\n\n## 1.36.1\n\n### Fixes\n- Fix https://github.com/onsi/gomega/issues/803 [1c6c112]\n- resolves onsi/gomega#696: make HaveField great on pointer receivers given only a non-addressable value [4feb9d7]\n\n## 1.36.0\n\n### Features\n- new: make collection-related matchers Go 1.23 iterator aware [4c964c6]\n\n### Maintenance\n- Replace min/max helpers with built-in min/max [ece6872]\n- Fix some typos in docs [8e924d7]\n\n## 1.35.1\n\n### Fixes\n- Export EnforceDefaultTimeoutsWhenUsingContexts and DisableDefaultTimeoutsWhenUsingContext [ca36da1]\n\n## 1.35.0\n\n### Features\n\n- You can now call `EnforceDefaultTimeoutsWhenUsingContexts()` to have `Eventually` honor the default timeout when passed a context.  (prior to this you had to expclility add a timeout) [e4c4265]\n- You can call `StopTrying(message).Successfully()` to abort a `Consistently` early without failure [eeca931]\n\n### Fixes\n\n- Stop memoizing the result of `HaveField` to avoid unexpected errors when used with async assertions. [3bdbc4e]\n\n### Maintenance\n\n- Bump all dependencies [a05a416]\n\n## 1.34.2\n\nRequire Go 1.22+\n\n### Maintenance\n- bump ginkgo as well [c59c6dc]\n- bump to go 1.22 - remove x/exp dependency [8158b99]\n\n## 1.34.1\n\n### Maintenance\n- Use slices from exp/slices to keep golang 1.20 compat [5e71dcd]\n\n## 1.34.0\n\n### Features\n- Add RoundTripper method to ghttp.Server [c549e0d]\n\n### Fixes\n- fix incorrect handling of nil slices in HaveExactElements (fixes #771) [878940c]\n- issue_765 - fixed bug in Hopcroft-Karp algorithm [ebadb67]\n\n### Maintenance\n- bump ginkgo [8af2ece]\n- Fix typo in docs [123a071]\n- Bump github.com/onsi/ginkgo/v2 from 2.17.2 to 2.17.3 (#756) [0e69083]\n- Bump google.golang.org/protobuf from 1.33.0 to 1.34.1 (#755) [2675796]\n- Bump golang.org/x/net from 0.24.0 to 0.25.0 (#754) [4160c0f]\n- Bump github-pages from 230 to 231 in /docs (#748) [892c303]\n\n## 1.33.1\n\n### Fixes\n- fix confusing eventually docs [3a66379]\n\n### Maintenance\n- Bump github.com/onsi/ginkgo/v2 from 2.17.1 to 2.17.2 [e9bc35a]\n\n## 1.33.0\n\n### Features\n\n`Receive` not accepts `Receive(<POINTER>, MATCHER>)`, allowing you to pick out a specific value on the channel that satisfies the provided matcher and is stored in the provided pointer.\n\n### Maintenance\n- Bump github.com/onsi/ginkgo/v2 from 2.15.0 to 2.17.1 (#745) [9999deb]\n- Bump github-pages from 229 to 230 in /docs (#735) [cb5ff21]\n- Bump golang.org/x/net from 0.20.0 to 0.23.0 (#746) [bac6596]\n\n## 1.32.0\n\n### Maintenance\n- Migrate github.com/golang/protobuf to google.golang.org/protobuf [436a197]\n  \n  This release drops the deprecated github.com/golang/protobuf and adopts google.golang.org/protobuf.  Care was taken to ensure the release is backwards compatible (thanks @jbduncan !).  Please open an issue if you run into one.\n\n- chore: test with Go 1.22 (#733) [32ef35e]\n- Bump golang.org/x/net from 0.19.0 to 0.20.0 (#717) [a0d0387]\n- Bump github-pages and jekyll-feed in /docs (#732) [b71e477]\n- docs: fix typo and broken anchor link to gstruct [f460154]\n- docs: fix HaveEach matcher signature [a2862e4]\n\n## 1.31.1\n\n### Fixes\n- Inverted arguments order of FailureMessage of BeComparableToMatcher [e0dd999]\n- Update test in case keeping msg is desired [ad1a367]\n\n### Maintenance\n- Show how to import the format sub package [24e958d]\n- tidy up go.sum [26661b8]\n- bump dependencies [bde8f7a]\n\n## 1.31.0\n\n### Features\n- Async assertions include context cancellation cause if present [121c37f]\n\n### Maintenance\n- Bump minimum go version [dee1e3c]\n- docs: fix typo in example usage \"occured\" -> \"occurred\" [49005fe]\n- Bump actions/setup-go from 4 to 5 (#714) [f1c8757]\n- Bump github/codeql-action from 2 to 3 (#715) [9836e76]\n- Bump github.com/onsi/ginkgo/v2 from 2.13.0 to 2.13.2 (#713) [54726f0]\n- Bump golang.org/x/net from 0.17.0 to 0.19.0 (#711) [df97ecc]\n- docs: fix `HaveExactElement` typo (#712) [a672c86]\n\n## 1.30.0\n\n### Features\n- BeTrueBecause and BeFalseBecause allow for better failure messages [4da4c7f]\n\n### Maintenance\n- Bump actions/checkout from 3 to 4 (#694) [6ca6e97]\n- doc: fix type on gleak go doc [f1b8343]\n\n## 1.29.0\n\n### Features\n- MatchError can now take an optional func(error) bool + description [2b39142]\n\n## 1.28.1\n\n### Maintenance\n- Bump github.com/onsi/ginkgo/v2 from 2.12.0 to 2.13.0 [635d196]\n- Bump github.com/google/go-cmp from 0.5.9 to 0.6.0 [14f8859]\n- Bump golang.org/x/net from 0.14.0 to 0.17.0 [d8a6508]\n- #703 doc(matchers): HaveEach() doc comment updated [2705bdb]\n- Minor typos (#699) [375648c]\n\n## 1.28.0\n\n### Features\n- Add VerifyHost handler to ghttp (#698) [0b03b36]\n\n### Fixes\n- Read Body for Newer Responses in HaveHTTPBodyMatcher (#686) [18d6673]\n\n### Maintenance\n- Bump github.com/onsi/ginkgo/v2 from 2.11.0 to 2.12.0 (#693) [55a33f3]\n- Typo in matchers.go (#691) [de68e8f]\n- Bump commonmarker from 0.23.9 to 0.23.10 in /docs (#690) [ab17f5e]\n- chore: update test matrix for Go 1.21 (#689) [5069017]\n- Bump golang.org/x/net from 0.12.0 to 0.14.0 (#688) [babe25f]\n\n## 1.27.10\n\n### Fixes\n- fix: go 1.21 adding goroutine ID to creator+location (#685) [bdc7803]\n\n## 1.27.9\n\n### Fixes\n- Prevent nil-dereference in format.Object for boxed nil error (#681) [3b31fc3]\n\n### Maintenance\n- Bump golang.org/x/net from 0.11.0 to 0.12.0 (#679) [360849b]\n- chore: use String() instead of fmt.Sprintf (#678) [86f3659]\n- Bump golang.org/x/net from 0.10.0 to 0.11.0 (#674) [642ead0]\n- chore: unnecessary use of fmt.Sprintf (#677) [ceb9ca6]\n- Bump github.com/onsi/ginkgo/v2 from 2.10.0 to 2.11.0 (#675) [a2087d8]\n- docs: fix ContainSubstring references (#673) [fc9a89f]\n- Bump github.com/onsi/ginkgo/v2 from 2.9.7 to 2.10.0 (#671) [9076019]\n\n## 1.27.8\n\n### Fixes\n- HaveExactElement should not call FailureMessage if a submatcher returned an error [096f392]\n\n### Maintenance\n- Bump github.com/onsi/ginkgo/v2 from 2.9.5 to 2.9.7 (#669) [8884bee]\n\n## 1.27.7\n\n### Fixes\n- fix: gcustom.MakeMatcher accepts nil as actual value (#666) [57054d5]\n\n### Maintenance\n- update gitignore [05c1bc6]\n- Bump github.com/onsi/ginkgo/v2 from 2.9.4 to 2.9.5 (#663) [7cadcf6]\n- Bump golang.org/x/net from 0.9.0 to 0.10.0 (#662) [b524839]\n- Bump github.com/onsi/ginkgo/v2 from 2.9.2 to 2.9.4 (#661) [5f44694]\n- Bump commonmarker from 0.23.8 to 0.23.9 in /docs (#657) [05dc99a]\n- Bump nokogiri from 1.14.1 to 1.14.3 in /docs (#658) [3a033d1]\n- Replace deprecated NewGomegaWithT with NewWithT (#659) [a19238f]\n- Bump golang.org/x/net from 0.8.0 to 0.9.0 (#656) [29ed041]\n- Bump actions/setup-go from 3 to 4 (#651) [11b2080]\n\n## 1.27.6\n\n### Fixes\n- Allow collections matchers to work correctly when expected has nil elements [60e7cf3]\n\n### Maintenance\n- updates MatchError godoc comment to also accept a Gomega matcher (#654) [67b869d]\n\n## 1.27.5\n\n### Maintenance\n- Bump github.com/onsi/ginkgo/v2 from 2.9.1 to 2.9.2 (#653) [a215021]\n- Bump github.com/go-task/slim-sprig (#652) [a26fed8]\n\n## 1.27.4\n\n### Fixes\n- improve error formatting and remove duplication of error message in Eventually/Consistently [854f075]\n\n### Maintenance\n- Bump github.com/onsi/ginkgo/v2 from 2.9.0 to 2.9.1 (#650) [ccebd9b]\n\n## 1.27.3\n\n### Fixes\n- format.Object now always includes err.Error() when passed an error [86d97ef]\n- Fix HaveExactElements to work inside ContainElement or other collection matchers (#648) [636757e]\n\n### Maintenance\n- Bump github.com/golang/protobuf from 1.5.2 to 1.5.3 (#649) [cc16689]\n- Bump github.com/onsi/ginkgo/v2 from 2.8.4 to 2.9.0 (#646) [e783366]\n\n## 1.27.2\n\n### Fixes\n- improve poll progress message when polling a consistently that has been passing [28a319b]\n\n### Maintenance\n- bump ginkgo\n- remove tools.go hack as Ginkgo 2.8.2 automatically pulls in the cli dependencies [81443b3]\n\n## 1.27.1\n\n### Maintenance\n\n- Bump golang.org/x/net from 0.6.0 to 0.7.0 (#640) [bc686cd]\n\n## 1.27.0\n\n### Features\n- Add HaveExactElements matcher (#634) [9d50783]\n- update Gomega docs to discuss GinkgoHelper() [be32774]\n\n### Maintenance\n- Bump github.com/onsi/ginkgo/v2 from 2.8.0 to 2.8.1 (#639) [296a68b]\n- Bump golang.org/x/net from 0.5.0 to 0.6.0 (#638) [c2b098b]\n- Bump github-pages from 227 to 228 in /docs (#636) [a9069ab]\n- test: update matrix for Go 1.20 (#635) [6bd25c8]\n- Bump github.com/onsi/ginkgo/v2 from 2.7.0 to 2.8.0 (#631) [5445f8b]\n- Bump webrick from 1.7.0 to 1.8.1 in /docs (#630) [03e93bb]\n- codeql: add ruby language (#626) [63c7d21]\n- dependabot: add bundler package-ecosystem for docs (#625) [d92f963]\n\n## 1.26.0\n\n### Features\n- When a polled function returns an error, keep track of the actual and report on the matcher state of the last non-errored actual [21f3090]\n- improve eventually failure message output [c530fb3]\n\n### Fixes\n- fix several documentation spelling issues [e2eff1f]\n\n\n## 1.25.0\n\n### Features\n- add `MustPassRepeatedly(int)` to asyncAssertion (#619) [4509f72]\n- compare unwrapped errors using DeepEqual (#617) [aaeaa5d]\n\n### Maintenance\n- Bump golang.org/x/net from 0.4.0 to 0.5.0 (#614) [c7cfea4]\n- Bump github.com/onsi/ginkgo/v2 from 2.6.1 to 2.7.0 (#615) [71b8adb]\n- Docs: Fix typo \"MUltiple\" -> \"Multiple\" (#616) [9351dda]\n- clean up go.sum [cd1dc1d]\n\n## 1.24.2\n\n### Fixes\n- Correctly handle assertion failure panics for eventually/consistnetly \"g Gomega\"s in a goroutine [78f1660]\n- docs:Fix typo \"you an\" -> \"you can\" (#607) [3187c1f]\n- fixes issue #600 (#606) [808d192]\n\n### Maintenance\n- Bump golang.org/x/net from 0.2.0 to 0.4.0 (#611) [6ebc0bf]\n- Bump nokogiri from 1.13.9 to 1.13.10 in /docs (#612) [258cfc8]\n- Bump github.com/onsi/ginkgo/v2 from 2.5.0 to 2.5.1 (#609) [e6c3eb9]\n\n## 1.24.1\n\n### Fixes\n- maintain backward compatibility for Eventually and Consisntetly's signatures [4c7df5e]\n- fix small typo (#601) [ea0ebe6]\n\n### Maintenance\n- Bump golang.org/x/net from 0.1.0 to 0.2.0 (#603) [1ba8372]\n- Bump github.com/onsi/ginkgo/v2 from 2.4.0 to 2.5.0 (#602) [f9426cb]\n- fix label-filter in test.yml [d795db6]\n- stop running flakey tests and rely on external network dependencies in CI [7133290]\n\n## 1.24.0\n\n### Features\n\nIntroducing [gcustom](https://onsi.github.io/gomega/#gcustom-a-convenient-mechanism-for-buildling-custom-matchers) - a convenient mechanism for building custom matchers.\n\nThis is an RC release for `gcustom`.  The external API may be tweaked in response to feedback however it is expected to remain mostly stable.\n\n### Maintenance\n\n- Update BeComparableTo documentation [756eaa0]\n\n## 1.23.0\n\n### Features\n- Custom formatting on a per-type basis can be provided using `format.RegisterCustomFormatter()` -- see the docs [here](https://onsi.github.io/gomega/#adjusting-output)\n\n- Substantial improvement have been made to `StopTrying()`:\n  - Users can now use `StopTrying().Wrap(err)` to wrap errors and `StopTrying().Attach(description, object)` to attach arbitrary objects to the `StopTrying()` error\n  - `StopTrying()` is now always interpreted as a failure.  If you are an early adopter of `StopTrying()` you may need to change your code as the prior version would match against the returned value even if `StopTrying()` was returned.  Going forward the `StopTrying()` api should remain stable.\n  - `StopTrying()` and `StopTrying().Now()` can both be used in matchers - not just polled functions.\n\n- `TryAgainAfter(duration)` is used like `StopTrying()` but instructs `Eventually` and `Consistently` that the poll should be tried again after the specified duration.  This allows you to dynamically adjust the polling duration.\n\n- `ctx` can now be passed-in as the first argument to `Eventually` and `Consistently`.\n\n## Maintenance\n\n- Bump github.com/onsi/ginkgo/v2 from 2.3.0 to 2.3.1 (#597) [afed901]\n- Bump nokogiri from 1.13.8 to 1.13.9 in /docs (#599) [7c691b3]\n- Bump github.com/google/go-cmp from 0.5.8 to 0.5.9 (#587) [ff22665]\n\n## 1.22.1\n\n## Fixes\n- When passed a context and no explicit timeout, Eventually will only timeout when the context is cancelled [e5105cf]\n- Allow StopTrying() to be wrapped [bf3cba9]\n\n## Maintenance\n- bump to ginkgo v2.3.0 [c5d5c39]\n\n## 1.22.0\n\n### Features\n\nSeveral improvements have been made to `Eventually` and `Consistently` in this and the most recent releases:\n\n- Eventually and Consistently can take a context.Context [65c01bc]\n  This enables integration with Ginkgo 2.3.0's interruptible nodes and node timeouts.\n- Eventually and Consistently that are passed a SpecContext can provide reports when an interrupt occurs [0d063c9]\n- Eventually/Consistently will forward an attached context to functions that ask for one [e2091c5]\n- Eventually/Consistently supports passing arguments to functions via WithArguments() [a2dc7c3]\n- Eventually and Consistently can now be stopped early with StopTrying(message) and StopTrying(message).Now() [52976bb]\n\nThese improvements are all documented in [Gomega's docs](https://onsi.github.io/gomega/#making-asynchronous-assertions)\n\n## Fixes\n\n## Maintenance\n\n## 1.21.1\n\n### Features\n- Eventually and Consistently that are passed a SpecContext can provide reports when an interrupt occurs [0d063c9]\n\n## 1.21.0\n\n### Features\n- Eventually and Consistently can take a context.Context [65c01bc]\n  This enables integration with Ginkgo 2.3.0's interruptible nodes and node timeouts.\n- Introduces Eventually.Within.ProbeEvery with tests and documentation (#591) [f633800]\n- New BeKeyOf matcher with documentation and unit tests (#590) [fb586b3]\n    \n## Fixes\n- Cover the entire gmeasure suite with leak detection [8c54344]\n- Fix gmeasure leak [119d4ce]\n- Ignore new Ginkgo ProgressSignal goroutine in gleak [ba548e2]\n\n## Maintenance\n\n- Fixes crashes on newer Ruby 3 installations by upgrading github-pages gem dependency (#596) [12469a0]\n\n\n## 1.20.2\n\n## Fixes\n- label specs that rely on remote access; bump timeout on short-circuit test to make it less flaky [35eeadf]\n- gexec: allow more headroom for SIGABRT-related unit tests (#581) [5b78f40]\n- Enable reading from a closed gbytes.Buffer (#575) [061fd26]\n\n## Maintenance\n- Bump github.com/onsi/ginkgo/v2 from 2.1.5 to 2.1.6 (#583) [55d895b]\n- Bump github.com/onsi/ginkgo/v2 from 2.1.4 to 2.1.5 (#582) [346de7c]\n\n## 1.20.1\n\n## Fixes\n- fix false positive gleaks when using ginkgo -p (#577) [cb46517]\n- Fix typos in gomega_dsl.go (#569) [5f71ed2]\n- don't panic on Eventually(nil), fixing #555 (#567) [9d1186f]\n- vet optional description args in assertions, fixing #560 (#566) [8e37808]\n\n## Maintenance\n- test: add new Go 1.19 to test matrix (#571) [40d7efe]\n- Bump tzinfo from 1.2.9 to 1.2.10 in /docs (#564) [5f26371]\n\n## 1.20.0\n\n## Features\n- New [`gleak`](https://onsi.github.io/gomega/#codegleakcode-finding-leaked-goroutines) experimental goroutine leak detection package! (#538) [85ba7bc]\n- New `BeComparableTo` matcher(#546) that uses `gocmp` to make comparisons [e77ea75]\n- New `HaveExistingField` matcher (#553) [fd130e1]\n- Document how to wrap Gomega (#539) [56714a4]\n\n## Fixes\n- Support pointer receivers in HaveField; fixes #543 (#544) [8dab36e]\n\n## Maintenance\n- Bump various dependencies:\n    - Upgrade to yaml.v3 (#556) [f5a83b1]\n    - Bump github/codeql-action from 1 to 2 (#549) [52f5adf]\n    - Bump github.com/google/go-cmp from 0.5.7 to 0.5.8 (#551) [5f3942d]\n    - Bump nokogiri from 1.13.4 to 1.13.6 in /docs (#554) [eb4b4c2]\n    - Use latest ginkgo (#535) [1c29028]\n    - Bump nokogiri from 1.13.3 to 1.13.4 in /docs (#541) [1ce84d5]\n    - Bump actions/setup-go from 2 to 3 (#540) [755485e]\n    - Bump nokogiri from 1.12.5 to 1.13.3 in /docs (#522) [4fbb0dc]\n    - Bump actions/checkout from 2 to 3 (#526) [ac49202]\n\n## 1.19.0\n\n## Features\n- New [`HaveEach`](https://onsi.github.io/gomega/#haveeachelement-interface) matcher to ensure that each and every element in an `array`, `slice`, or `map` satisfies the passed in matcher. (#523) [9fc2ae2] (#524) [c8ba582]\n- Users can now wrap the `Gomega` interface to implement custom behavior on each assertion. (#521) [1f2e714]\n- [`ContainElement`](https://onsi.github.io/gomega/#containelementelement-interface) now accepts an additional pointer argument.  Elements that satisfy the matcher are stored in the pointer enabling developers to easily add subsequent, more detailed, assertions against the matching element. (#527) [1a4e27f]\n\n## Fixes\n- update RELEASING instructions to match ginkgo [0917cde]\n- Bump github.com/onsi/ginkgo/v2 from 2.0.0 to 2.1.3 (#519) [49ab4b0]\n- Fix CVE-2021-38561 (#534) [f1b4456]\n- Fix max number of samples in experiments on non-64-bit systems. (#528) [1c84497]\n- Remove dependency on ginkgo v1.16.4 (#530) [4dea8d5]\n- Fix for Go 1.18 (#532) [56d2a29]\n- Document precedence of timeouts (#533) [b607941]\n\n## 1.18.1\n\n## Fixes\n- Add pointer support to HaveField matcher (#495) [79e41a3]\n\n## 1.18.0\n\n## Features\n- Docs now live on the master branch in the docs folder which will make for easier PRs.  The docs also use Ginkgo 2.0's new docs html/css/js. [2570272]\n- New HaveValue matcher can handle actuals that are either values (in which case they are passed on unscathed) or pointers (in which case they are indirected).  [Docs here.](https://onsi.github.io/gomega/#working-with-values) (#485) [bdc087c]\n- Gmeasure has been declared GA [360db9d]\n\n## Fixes\n- Gomega now uses ioutil for Go 1.15 and lower (#492) - official support is only for the most recent two major versions of Go but this will unblock users who need to stay on older unsupported versions of Go. [c29c1c0]\n\n## Maintenance\n- Remove Travis workflow (#491) [72e6040]\n- Upgrade to Ginkgo 2.0.0 GA [f383637]\n- chore: fix description of HaveField matcher (#487) [2b4b2c0]\n- use tools.go to ensure Ginkgo cli dependencies are included [f58a52b]\n- remove dockerfile and simplify github actions to match ginkgo's actions [3f8160d]\n\n## 1.17.0\n\n### Features\n- Add HaveField matcher [3a26311]\n- add Error() assertions on the final error value of multi-return values (#480) [2f96943]\n- separate out offsets and timeouts (#478) [18a4723]\n- fix transformation error reporting (#479) [e001fab]\n- allow transform functions to report errors (#472) [bf93408]\n\n### Fixes\nStop using deprecated ioutil package (#467) [07f405d]\n\n## 1.16.0\n\n### Features\n- feat: HaveHTTPStatus multiple expected values (#465) [aa69f1b]\n- feat: HaveHTTPHeaderWithValue() matcher (#463) [dd83a96]\n- feat: HaveHTTPBody matcher (#462) [504e1f2]\n- feat: formatter for HTTP responses (#461) [e5b3157]\n\n## 1.15.0\n\n### Fixes\nThe previous version (1.14.0) introduced a change to allow `Eventually` and `Consistently` to support functions that make assertions.  This was accomplished by overriding the global fail handler when running the callbacks passed to `Eventually/Consistently` in order to capture any resulting errors.  Issue #457 uncovered a flaw with this approach: when multiple `Eventually`s are running concurrently they race when overriding the singleton global fail handler.\n\n1.15.0 resolves this by requiring users who want to make assertions in `Eventually/Consistently` call backs to explicitly pass in a function that takes a `Gomega` as an argument.  The passed-in `Gomega` instance can be used to make assertions.  Any failures will cause `Eventually` to retry the callback.  This cleaner interface avoids the issue of swapping out globals but comes at the cost of changing the contract introduced in v1.14.0.  As such 1.15.0 introduces a breaking change with respect to 1.14.0 - however we expect that adoption of this feature in 1.14.0 remains limited.\n\nIn addition, 1.15.0 cleans up some of Gomega's internals.  Most users shouldn't notice any differences stemming from the refactoring that was made.\n\n## 1.14.0\n\n### Features\n- gmeasure.SamplingConfig now suppers a MinSamplingInterval [e94dbca]\n- Eventually and Consistently support functions that make assertions [2f04e6e]\n    - Eventually and Consistently now allow their passed-in functions to make assertions.\n    These assertions must pass or the function is considered to have failed and is retried.\n    - Eventually and Consistently can now take functions with no return values.  These implicitly return nil\n    if they contain no failed assertion.  Otherwise they return an error wrapping the first assertion failure.  This allows\n    these functions to be used with the Succeed() matcher.\n    - Introduce InterceptGomegaFailure - an analogue to InterceptGomegaFailures - that captures the first assertion failure\n    and halts execution in its passed-in callback.\n\n### Fixes\n- Call Verify GHTTPWithGomega receiver funcs (#454) [496e6fd]\n- Build a binary with an expected name (#446) [7356360]\n\n## 1.13.0\n\n### Features\n- gmeasure provides BETA support for benchmarking (#447) [8f2dfbf]\n- Set consistently and eventually defaults on init (#443) [12eb778]\n\n## 1.12.0\n\n### Features\n- Add Satisfy() matcher (#437) [c548f31]\n- tweak truncation message [3360b8c]\n- Add format.GomegaStringer (#427) [cc80b6f]\n- Add Clear() method to gbytes.Buffer [c3c0920]\n\n### Fixes\n- Fix error message in BeNumericallyMatcher (#432) [09c074a]\n- Bump github.com/onsi/ginkgo from 1.12.1 to 1.16.2 (#442) [e5f6ea0]\n- Bump github.com/golang/protobuf from 1.4.3 to 1.5.2 (#431) [adae3bf]\n- Bump golang.org/x/net (#441) [3275b35]\n\n## 1.11.0\n\n### Features\n- feature: add index to gstruct element func (#419) [334e00d]\n- feat(gexec) Add CompileTest functions. Close #410 (#411) [47c613f]\n\n### Fixes\n- Check more carefully for nils in WithTransform (#423) [3c60a15]\n- fix: typo in Makefile [b82522a]\n- Allow WithTransform function to accept a nil value (#422) [b75d2f2]\n- fix: print value type for interface{} containers (#409) [f08e2dc]\n- fix(BeElementOf): consistently flatten expected values [1fa9468]\n\n## 1.10.5\n\n### Fixes\n- fix: collections matchers should display type of expectation (#408) [6b4eb5a]\n- fix(ContainElements): consistently flatten expected values [073b880]\n- fix(ConsistOf): consistently flatten expected values [7266efe]\n\n## 1.10.4\n\n### Fixes\n- update golang net library to more recent version without vulnerability (#406) [817a8b9]\n- Correct spelling: alloted -> allotted (#403) [0bae715]\n- fix a panic in MessageWithDiff with long message (#402) [ea06b9b]\n\n## 1.10.3\n\n### Fixes\n- updates golang/x/net to fix vulnerability detected by snyk (#394) [c479356]\n\n## 1.10.2\n\n### Fixes\n- Add ExpectWithOffset, EventuallyWithOffset and ConsistentlyWithOffset to WithT (#391) [990941a]\n\n## 1.10.1\n\n### Fixes\n- Update dependencies (#389) [9f5eecd]\n\n## 1.10.0\n\n### Features\n- Add HaveHTTPStatusMatcher (#378) [f335c94]\n- Changed matcher for content-type in VerifyJSONRepresenting (#377) [6024f5b]\n- Make ghttp usable with x-unit style tests (#376) [c0be499]\n- Implement PanicWith matcher (#381) [f8032b4]\n\n## 1.9.0\n\n### Features\n- Add ContainElements matcher (#370) [2f57380]\n- Output missing and extra elements in ConsistOf failure message [a31eda7]\n- Document method LargestMatching [7c5a280]\n\n## 1.8.1\n\n### Fixes\n- Fix unexpected MatchError() behaviour (#375) [8ae7b2f]\n\n## 1.8.0\n\n### Features\n- Allow optional description to be lazily evaluated function (#364) [bf64010]\n- Support wrapped errors (#359) [0a981cb]\n\n## 1.7.1\n\n### Fixes\n- Bump go-yaml version to cover fixed ddos heuristic (#362) [95e431e]\n\n## 1.7.0\n\n### Features\n- export format property variables (#347) [642e5ba]\n\n### Fixes\n- minor fix in the documentation of ExpectWithOffset (#358) [beea727]\n\n## 1.6.0\n\n### Features\n\n- Display special chars on error [41e1b26]\n- Add BeElementOf matcher [6a48b48]\n\n### Fixes\n\n- Remove duplication in XML matcher tests [cc1a6cb]\n- Remove unnecessary conversions (#357) [7bf756a]\n- Fixed import order (#353) [2e3b965]\n- Added missing error handling in test (#355) [c98d3eb]\n- Simplify code (#356) [0001ed9]\n- Simplify code (#354) [0d9100e]\n- Fixed typos (#352) [3f647c4]\n- Add failure message tests to BeElementOf matcher [efe19c3]\n- Update go-testcov untested sections [37ee382]\n- Mark all uncovered files so go-testcov ./... works [53b150e]\n- Reenable gotip in travis [5c249dc]\n- Fix the typo of comment (#345) [f0e010e]\n- Optimize contain_element_matcher [abeb93d]\n\n\n## 1.5.0\n\n### Features\n\n- Added MatchKeys matchers [8b909fc]\n\n### Fixes and Minor Improvements\n\n- Add type aliases to remove stuttering [03b0461]\n- Don't run session_test.go on windows (#324) [5533ce8]\n\n## 1.4.3\n\n### Fixes:\n\n- ensure file name and line numbers are correctly reported for XUnit [6fff58f]\n- Fixed matcher for content-type (#305) [69d9b43]\n\n## 1.4.2\n\n### Fixes:\n\n- Add go.mod and go.sum files to define the gomega go module [f3de367, a085d30]\n- Work around go vet issue with Go v1.11 (#300) [40dd6ad]\n- Better output when using with go XUnit-style tests, fixes #255 (#297) [29a4b97]\n- Fix MatchJSON fail to parse json.RawMessage (#298) [ae19f1b]\n- show threshold in failure message of BeNumericallyMatcher (#293) [4bbecc8]\n\n## 1.4.1\n\n### Fixes:\n\n- Update documentation formatting and examples (#289) [9be8410]\n- allow 'Receive' matcher to be used with concrete types (#286) [41673fd]\n- Fix data race in ghttp server (#283) [7ac6b01]\n- Travis badge should only show master [cc102ab]\n\n## 1.4.0\n\n### Features\n- Make string pretty diff user configurable (#273) [eb112ce, 649b44d]\n\n### Fixes\n- Use httputil.DumpRequest to pretty-print unhandled requests (#278) [a4ff0fc, b7d1a52]\n- fix typo floa32 > float32 (#272) [041ae3b, 6e33911]\n- Fix link to documentation on adding your own matchers (#270) [bb2c830, fcebc62]\n- Use setters and getters to avoid race condition (#262) [13057c3, a9c79f1]\n- Avoid sending a signal if the process is not alive (#259) [b8043e5, 4fc1762]\n- Improve message from AssignableToTypeOf when expected value is nil (#281) [9c1fb20]\n\n## 1.3.0\n\nImprovements:\n\n- The `Equal` matcher matches byte slices more performantly.\n- Improved how `MatchError` matches error strings.\n- `MatchXML` ignores the order of xml node attributes.\n- Improve support for XUnit style golang tests. ([#254](https://github.com/onsi/gomega/issues/254))\n\nBug Fixes:\n\n- Diff generation now handles multi-byte sequences correctly.\n- Multiple goroutines can now call `gexec.Build` concurrently.\n\n## 1.2.0\n\nImprovements:\n\n- Added `BeSent` which attempts to send a value down a channel and fails if the attempt blocks.  Can be paired with `Eventually` to safely send a value down a channel with a timeout.\n- `Ω`, `Expect`, `Eventually`, and `Consistently` now immediately `panic` if there is no registered fail handler.  This is always a mistake that can hide failing tests.\n- `Receive()` no longer errors when passed a closed channel, it's perfectly fine to attempt to read from a closed channel so Ω(c).Should(Receive()) always fails and Ω(c).ShouldNot(Receive()) always passes with a closed channel.\n- Added `HavePrefix` and `HaveSuffix` matchers.\n- `ghttp` can now handle concurrent requests.\n- Added `Succeed` which allows one to write `Ω(MyFunction()).Should(Succeed())`.\n- Improved `ghttp`'s behavior around failing assertions and panics:\n    - If a registered handler makes a failing assertion `ghttp` will return `500`.\n    - If a registered handler panics, `ghttp` will return `500` *and* fail the test.  This is new behavior that may cause existing code to break.  This code is almost certainly incorrect and creating a false positive.\n- `ghttp` servers can take an `io.Writer`.  `ghttp` will write a line to the writer when each request arrives.\n- Added `WithTransform` matcher to allow munging input data before feeding into the relevant matcher\n- Added boolean `And`, `Or`, and `Not` matchers to allow creating composite matchers\n- Added `gbytes.TimeoutCloser`, `gbytes.TimeoutReader`, and `gbytes.TimeoutWriter` - these are convenience wrappers that timeout if the underlying Closer/Reader/Writer does not return within the allotted time.\n- Added `gbytes.BufferReader` - this constructs a `gbytes.Buffer` that asynchronously reads the passed-in `io.Reader` into its buffer.\n\nBug Fixes:\n- gexec: `session.Wait` now uses `EventuallyWithOffset` to get the right line number in the failure.\n- `ContainElement` no longer bails if a passed-in matcher errors.\n\n## 1.0 (8/2/2014)\n\nNo changes. Dropping \"beta\" from the version number.\n\n## 1.0.0-beta (7/8/2014)\nBreaking Changes:\n\n- Changed OmegaMatcher interface.  Instead of having `Match` return failure messages, two new methods `FailureMessage` and `NegatedFailureMessage` are called instead.\n- Moved and renamed OmegaFailHandler to types.GomegaFailHandler and OmegaMatcher to types.GomegaMatcher.  Any references to OmegaMatcher in any custom matchers will need to be changed to point to types.GomegaMatcher\n\nNew Test-Support Features:\n\n- `ghttp`: supports testing http clients\n    - Provides a flexible fake http server\n    - Provides a collection of chainable http handlers that perform assertions.\n- `gbytes`: supports making ordered assertions against streams of data\n    - Provides a `gbytes.Buffer`\n    - Provides a `Say` matcher to perform ordered assertions against output data\n- `gexec`: supports testing external processes\n    - Provides support for building Go binaries\n    - Wraps and starts `exec.Cmd` commands\n    - Makes it easy to assert against stdout and stderr\n    - Makes it easy to send signals and wait for processes to exit\n    - Provides an `Exit` matcher to assert against exit code.\n\nDSL Changes:\n\n- `Eventually` and `Consistently` can accept `time.Duration` interval and polling inputs.\n- The default timeouts for `Eventually` and `Consistently` are now configurable.\n\nNew Matchers:\n\n- `ConsistOf`: order-independent assertion against the elements of an array/slice or keys of a map.\n- `BeTemporally`: like `BeNumerically` but for `time.Time`\n- `HaveKeyWithValue`: asserts a map has a given key with the given value.\n\nUpdated Matchers:\n\n- `Receive` matcher can take a matcher as an argument and passes only if the channel under test receives an object that satisfies the passed-in matcher.\n- Matchers that implement `MatchMayChangeInTheFuture(actual interface{}) bool` can inform `Eventually` and/or `Consistently` when a match has no chance of changing status in the future.  For example, `Receive` returns `false` when a channel is closed.\n\nMisc:\n\n- Start using semantic versioning\n- Start maintaining changelog\n\nMajor refactor:\n\n- Pull out Gomega's internal to `internal`\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/CONTRIBUTING.md",
    "content": "# Contributing to Gomega\n\nYour contributions to Gomega are essential for its long-term maintenance and improvement.  To make a contribution:\n\n- Please **open an issue first** - describe what problem you are trying to solve and give the community a forum for input and feedback ahead of investing time in writing code!\n- Ensure adequate test coverage:\n    - Make sure to add appropriate unit tests\n    - Please run all tests locally (`ginkgo -r -p`) and make sure they go green before submitting the PR\n    - Please run following linter locally `go vet ./...` and make sure output does not contain any warnings\n- Update the documentation.  In addition to standard `godoc` comments Gomega has extensive documentation on the `gh-pages` branch.  If relevant, please submit a docs PR to that branch alongside your code PR.\n\nIf you're a committer, check out RELEASING.md to learn how to cut a release.\n\nThanks for supporting Gomega!\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/LICENSE",
    "content": "Copyright (c) 2013-2014 Onsi Fakhouri\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/README.md",
    "content": "![Gomega: Ginkgo's Preferred Matcher Library](http://onsi.github.io/gomega/images/gomega.png)\n\n[![test](https://github.com/onsi/gomega/actions/workflows/test.yml/badge.svg)](https://github.com/onsi/gomega/actions/workflows/test.yml)\n\nJump straight to the [docs](http://onsi.github.io/gomega/) to learn about Gomega, including a list of [all available matchers](http://onsi.github.io/gomega/#provided-matchers).\n\nIf you have a question, comment, bug report, feature request, etc. please open a GitHub issue.\n\n## [Ginkgo](http://github.com/onsi/ginkgo): a BDD Testing Framework for Golang\n\nLearn more about Ginkgo [here](http://onsi.github.io/ginkgo/)\n\n## Community Matchers\n\nA collection of community matchers is available on the [wiki](https://github.com/onsi/gomega/wiki).\n\n## License\n\nGomega is MIT-Licensed\n\nThe `ConsistOf` matcher uses [goraph](https://github.com/amitkgupta/goraph) which is embedded in the source to simplify distribution.  goraph has an MIT license.\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/RELEASING.md",
    "content": "A Gomega release is a tagged sha and a GitHub release.  To cut a release:\n\n1. Ensure CHANGELOG.md is up to date.\n  - Use \n    ```bash\n    LAST_VERSION=$(git tag --sort=version:refname | tail -n1)\n    CHANGES=$(git log --pretty=format:'- %s [%h]' HEAD...$LAST_VERSION)\n    echo -e \"## NEXT\\n\\n$CHANGES\\n\\n### Features\\n\\n### Fixes\\n\\n### Maintenance\\n\\n$(cat CHANGELOG.md)\" > CHANGELOG.md\n    ```\n   to update the changelog\n  - Categorize the changes into\n    - Breaking Changes (requires a major version)\n    - New Features (minor version)\n    - Fixes (fix version)\n    - Maintenance (which in general should not be mentioned in `CHANGELOG.md` as they have no user impact)\n1. Update GOMEGA_VERSION in `gomega_dsl.go`\n1. Commit, push, and release:\n  ```\n  git commit -m \"vM.m.p\"\n  git push\n  gh release create \"vM.m.p\"\n  git fetch --tags origin master\n  ```"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/format/format.go",
    "content": "/*\nGomega's format package pretty-prints objects.  It explores input objects recursively and generates formatted, indented output with type information.\n*/\n\n// untested sections: 4\n\npackage format\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"reflect\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n)\n\n// Use MaxDepth to set the maximum recursion depth when printing deeply nested objects\nvar MaxDepth = uint(10)\n\n// MaxLength of the string representation of an object.\n// If MaxLength is set to 0, the Object will not be truncated.\nvar MaxLength = 4000\n\n/*\nBy default, all objects (even those that implement fmt.Stringer and fmt.GoStringer) are recursively inspected to generate output.\n\nSet UseStringerRepresentation = true to use GoString (for fmt.GoStringers) or String (for fmt.Stringer) instead.\n\nNote that GoString and String don't always have all the information you need to understand why a test failed!\n*/\nvar UseStringerRepresentation = false\n\n/*\nPrint the content of context objects. By default it will be suppressed.\n\nSet PrintContextObjects = true to enable printing of the context internals.\n*/\nvar PrintContextObjects = false\n\n// TruncatedDiff choose if we should display a truncated pretty diff or not\nvar TruncatedDiff = true\n\n// TruncateThreshold (default 50) specifies the maximum length string to print in string comparison assertion error\n// messages.\nvar TruncateThreshold uint = 50\n\n// CharactersAroundMismatchToInclude (default 5) specifies how many contextual characters should be printed before and\n// after the first diff location in a truncated string assertion error message.\nvar CharactersAroundMismatchToInclude uint = 5\n\nvar contextType = reflect.TypeOf((*context.Context)(nil)).Elem()\nvar timeType = reflect.TypeOf(time.Time{})\n\n// The default indentation string emitted by the format package\nvar Indent = \"    \"\n\nvar longFormThreshold = 20\n\n// GomegaStringer allows for custom formatting of objects for gomega.\ntype GomegaStringer interface {\n\t// GomegaString will be used to custom format an object.\n\t// It does not follow UseStringerRepresentation value and will always be called regardless.\n\t// It also ignores the MaxLength value.\n\tGomegaString() string\n}\n\n/*\nCustomFormatters can be registered with Gomega via RegisterCustomFormatter()\nAny value to be rendered by Gomega is passed to each registered CustomFormatters.\nThe CustomFormatter signals that it will handle formatting the value by returning (formatted-string, true)\nIf the CustomFormatter does not want to handle the object it should return (\"\", false)\n\nStrings returned by CustomFormatters are not truncated\n*/\ntype CustomFormatter func(value any) (string, bool)\ntype CustomFormatterKey uint\n\nvar customFormatterKey CustomFormatterKey = 1\n\ntype customFormatterKeyPair struct {\n\tCustomFormatter\n\tCustomFormatterKey\n}\n\n/*\nRegisterCustomFormatter registers a CustomFormatter and returns a CustomFormatterKey\n\nYou can call UnregisterCustomFormatter with the returned key to unregister the associated CustomFormatter\n*/\nfunc RegisterCustomFormatter(customFormatter CustomFormatter) CustomFormatterKey {\n\tkey := customFormatterKey\n\tcustomFormatterKey += 1\n\tcustomFormatters = append(customFormatters, customFormatterKeyPair{customFormatter, key})\n\treturn key\n}\n\n/*\nUnregisterCustomFormatter unregisters a previously registered CustomFormatter.  You should pass in the key returned by RegisterCustomFormatter\n*/\nfunc UnregisterCustomFormatter(key CustomFormatterKey) {\n\tformatters := []customFormatterKeyPair{}\n\tfor _, f := range customFormatters {\n\t\tif f.CustomFormatterKey == key {\n\t\t\tcontinue\n\t\t}\n\t\tformatters = append(formatters, f)\n\t}\n\tcustomFormatters = formatters\n}\n\nvar customFormatters = []customFormatterKeyPair{}\n\n/*\nGenerates a formatted matcher success/failure message of the form:\n\n\tExpected\n\t\t<pretty printed actual>\n\t<message>\n\t\t<pretty printed expected>\n\nIf expected is omitted, then the message looks like:\n\n\tExpected\n\t\t<pretty printed actual>\n\t<message>\n*/\nfunc Message(actual any, message string, expected ...any) string {\n\tif len(expected) == 0 {\n\t\treturn fmt.Sprintf(\"Expected\\n%s\\n%s\", Object(actual, 1), message)\n\t}\n\treturn fmt.Sprintf(\"Expected\\n%s\\n%s\\n%s\", Object(actual, 1), message, Object(expected[0], 1))\n}\n\n/*\n\nGenerates a nicely formatted matcher success / failure message\n\nMuch like Message(...), but it attempts to pretty print diffs in strings\n\nExpected\n    <string>: \"...aaaaabaaaaa...\"\nto equal               |\n    <string>: \"...aaaaazaaaaa...\"\n\n*/\n\nfunc MessageWithDiff(actual, message, expected string) string {\n\tif TruncatedDiff && len(actual) >= int(TruncateThreshold) && len(expected) >= int(TruncateThreshold) {\n\t\tdiffPoint := findFirstMismatch(actual, expected)\n\t\tformattedActual := truncateAndFormat(actual, diffPoint)\n\t\tformattedExpected := truncateAndFormat(expected, diffPoint)\n\n\t\tspacesBeforeFormattedMismatch := findFirstMismatch(formattedActual, formattedExpected)\n\n\t\ttabLength := 4\n\t\tspaceFromMessageToActual := tabLength + len(\"<string>: \") - len(message)\n\n\t\tpaddingCount := spaceFromMessageToActual + spacesBeforeFormattedMismatch\n\t\tif paddingCount < 0 {\n\t\t\treturn Message(formattedActual, message, formattedExpected)\n\t\t}\n\n\t\tpadding := strings.Repeat(\" \", paddingCount) + \"|\"\n\t\treturn Message(formattedActual, message+padding, formattedExpected)\n\t}\n\n\tactual = escapedWithGoSyntax(actual)\n\texpected = escapedWithGoSyntax(expected)\n\n\treturn Message(actual, message, expected)\n}\n\nfunc escapedWithGoSyntax(str string) string {\n\twithQuotes := fmt.Sprintf(\"%q\", str)\n\treturn withQuotes[1 : len(withQuotes)-1]\n}\n\nfunc truncateAndFormat(str string, index int) string {\n\tleftPadding := `...`\n\trightPadding := `...`\n\n\tstart := index - int(CharactersAroundMismatchToInclude)\n\tif start < 0 {\n\t\tstart = 0\n\t\tleftPadding = \"\"\n\t}\n\n\t// slice index must include the mis-matched character\n\tlengthOfMismatchedCharacter := 1\n\tend := index + int(CharactersAroundMismatchToInclude) + lengthOfMismatchedCharacter\n\tif end > len(str) {\n\t\tend = len(str)\n\t\trightPadding = \"\"\n\n\t}\n\treturn fmt.Sprintf(\"\\\"%s\\\"\", leftPadding+str[start:end]+rightPadding)\n}\n\nfunc findFirstMismatch(a, b string) int {\n\taSlice := strings.Split(a, \"\")\n\tbSlice := strings.Split(b, \"\")\n\n\tfor index, str := range aSlice {\n\t\tif index > len(bSlice)-1 {\n\t\t\treturn index\n\t\t}\n\t\tif str != bSlice[index] {\n\t\t\treturn index\n\t\t}\n\t}\n\n\tif len(b) > len(a) {\n\t\treturn len(a) + 1\n\t}\n\n\treturn 0\n}\n\nconst truncateHelpText = `\nGomega truncated this representation as it exceeds 'format.MaxLength'.\nConsider having the object provide a custom 'GomegaStringer' representation\nor adjust the parameters in Gomega's 'format' package.\n\nLearn more here: https://onsi.github.io/gomega/#adjusting-output\n`\n\nfunc truncateLongStrings(s string) string {\n\tif MaxLength > 0 && len(s) > MaxLength {\n\t\tvar sb strings.Builder\n\t\tfor i, r := range s {\n\t\t\tif i < MaxLength {\n\t\t\t\tsb.WriteRune(r)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\n\t\tsb.WriteString(\"...\\n\")\n\t\tsb.WriteString(truncateHelpText)\n\n\t\treturn sb.String()\n\t}\n\treturn s\n}\n\n/*\nPretty prints the passed in object at the passed in indentation level.\n\nObject recurses into deeply nested objects emitting pretty-printed representations of their components.\n\nModify format.MaxDepth to control how deep the recursion is allowed to go\nSet format.UseStringerRepresentation to true to return object.GoString() or object.String() when available instead of\nrecursing into the object.\n\nSet PrintContextObjects to true to print the content of objects implementing context.Context\n*/\nfunc Object(object any, indentation uint) string {\n\tindent := strings.Repeat(Indent, int(indentation))\n\tvalue := reflect.ValueOf(object)\n\tcommonRepresentation := \"\"\n\tif err, ok := object.(error); ok && !isNilValue(value) { // isNilValue check needed here to avoid nil deref due to boxed nil\n\t\tcommonRepresentation += \"\\n\" + IndentString(err.Error(), indentation) + \"\\n\" + indent\n\t}\n\treturn fmt.Sprintf(\"%s<%s>: %s%s\", indent, formatType(value), commonRepresentation, formatValue(value, indentation, true))\n}\n\n/*\nIndentString takes a string and indents each line by the specified amount.\n*/\nfunc IndentString(s string, indentation uint) string {\n\treturn indentString(s, indentation, true)\n}\n\nfunc indentString(s string, indentation uint, indentFirstLine bool) string {\n\tresult := &strings.Builder{}\n\tcomponents := strings.Split(s, \"\\n\")\n\tindent := strings.Repeat(Indent, int(indentation))\n\tfor i, component := range components {\n\t\tif i > 0 || indentFirstLine {\n\t\t\tresult.WriteString(indent)\n\t\t}\n\t\tresult.WriteString(component)\n\t\tif i < len(components)-1 {\n\t\t\tresult.WriteString(\"\\n\")\n\t\t}\n\t}\n\n\treturn result.String()\n}\n\nfunc formatType(v reflect.Value) string {\n\tswitch v.Kind() {\n\tcase reflect.Invalid:\n\t\treturn \"nil\"\n\tcase reflect.Chan:\n\t\treturn fmt.Sprintf(\"%s | len:%d, cap:%d\", v.Type(), v.Len(), v.Cap())\n\tcase reflect.Ptr:\n\t\treturn fmt.Sprintf(\"%s | 0x%x\", v.Type(), v.Pointer())\n\tcase reflect.Slice:\n\t\treturn fmt.Sprintf(\"%s | len:%d, cap:%d\", v.Type(), v.Len(), v.Cap())\n\tcase reflect.Map:\n\t\treturn fmt.Sprintf(\"%s | len:%d\", v.Type(), v.Len())\n\tdefault:\n\t\treturn v.Type().String()\n\t}\n}\n\nfunc formatValue(value reflect.Value, indentation uint, isTopLevel bool) string {\n\tif indentation > MaxDepth {\n\t\treturn \"...\"\n\t}\n\n\tif isNilValue(value) {\n\t\treturn \"nil\"\n\t}\n\n\tif value.CanInterface() {\n\t\tobj := value.Interface()\n\n\t\t// if a CustomFormatter handles this values, we'll go with that\n\t\tfor _, customFormatter := range customFormatters {\n\t\t\tformatted, handled := customFormatter.CustomFormatter(obj)\n\t\t\t// do not truncate a user-provided CustomFormatter()\n\t\t\tif handled {\n\t\t\t\treturn indentString(formatted, indentation+1, false)\n\t\t\t}\n\t\t}\n\n\t\t// GomegaStringer will take precedence to other representations and disregards UseStringerRepresentation\n\t\tif x, ok := obj.(GomegaStringer); ok {\n\t\t\t// do not truncate a user-defined GomegaString() value\n\t\t\treturn indentString(x.GomegaString(), indentation+1, false)\n\t\t}\n\n\t\tif UseStringerRepresentation {\n\t\t\tswitch x := obj.(type) {\n\t\t\tcase fmt.GoStringer:\n\t\t\t\treturn indentString(truncateLongStrings(x.GoString()), indentation+1, false)\n\t\t\tcase fmt.Stringer:\n\t\t\t\treturn indentString(truncateLongStrings(x.String()), indentation+1, false)\n\t\t\t}\n\t\t}\n\t}\n\n\tif !PrintContextObjects {\n\t\tif value.Type().Implements(contextType) && indentation > 1 {\n\t\t\treturn \"<suppressed context>\"\n\t\t}\n\t}\n\n\tswitch value.Kind() {\n\tcase reflect.Bool:\n\t\treturn fmt.Sprintf(\"%v\", value.Bool())\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\treturn fmt.Sprintf(\"%v\", value.Int())\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:\n\t\treturn fmt.Sprintf(\"%v\", value.Uint())\n\tcase reflect.Uintptr:\n\t\treturn fmt.Sprintf(\"0x%x\", value.Uint())\n\tcase reflect.Float32, reflect.Float64:\n\t\treturn fmt.Sprintf(\"%v\", value.Float())\n\tcase reflect.Complex64, reflect.Complex128:\n\t\treturn fmt.Sprintf(\"%v\", value.Complex())\n\tcase reflect.Chan:\n\t\treturn fmt.Sprintf(\"0x%x\", value.Pointer())\n\tcase reflect.Func:\n\t\treturn fmt.Sprintf(\"0x%x\", value.Pointer())\n\tcase reflect.Ptr:\n\t\treturn formatValue(value.Elem(), indentation, isTopLevel)\n\tcase reflect.Slice:\n\t\treturn truncateLongStrings(formatSlice(value, indentation))\n\tcase reflect.String:\n\t\treturn truncateLongStrings(formatString(value.String(), indentation, isTopLevel))\n\tcase reflect.Array:\n\t\treturn truncateLongStrings(formatSlice(value, indentation))\n\tcase reflect.Map:\n\t\treturn truncateLongStrings(formatMap(value, indentation))\n\tcase reflect.Struct:\n\t\tif value.Type() == timeType && value.CanInterface() {\n\t\t\tt, _ := value.Interface().(time.Time)\n\t\t\treturn t.Format(time.RFC3339Nano)\n\t\t}\n\t\treturn truncateLongStrings(formatStruct(value, indentation))\n\tcase reflect.Interface:\n\t\treturn formatInterface(value, indentation)\n\tdefault:\n\t\tif value.CanInterface() {\n\t\t\treturn truncateLongStrings(fmt.Sprintf(\"%#v\", value.Interface()))\n\t\t}\n\t\treturn truncateLongStrings(fmt.Sprintf(\"%#v\", value))\n\t}\n}\n\nfunc formatString(object any, indentation uint, isTopLevel bool) string {\n\tif isTopLevel {\n\t\ts := fmt.Sprintf(\"%s\", object)\n\t\tcomponents := strings.Split(s, \"\\n\")\n\t\tresult := \"\"\n\t\tfor i, component := range components {\n\t\t\tif i == 0 {\n\t\t\t\tresult += component\n\t\t\t} else {\n\t\t\t\tresult += Indent + component\n\t\t\t}\n\t\t\tif i < len(components)-1 {\n\t\t\t\tresult += \"\\n\"\n\t\t\t}\n\t\t}\n\n\t\treturn result\n\t} else {\n\t\treturn fmt.Sprintf(\"%q\", object)\n\t}\n}\n\nfunc formatSlice(v reflect.Value, indentation uint) string {\n\tif v.Kind() == reflect.Slice && v.Type().Elem().Kind() == reflect.Uint8 && isPrintableString(string(v.Bytes())) {\n\t\treturn formatString(v.Bytes(), indentation, false)\n\t}\n\n\tl := v.Len()\n\tresult := make([]string, l)\n\tlongest := 0\n\tfor i := range l {\n\t\tresult[i] = formatValue(v.Index(i), indentation+1, false)\n\t\tif len(result[i]) > longest {\n\t\t\tlongest = len(result[i])\n\t\t}\n\t}\n\n\tif longest > longFormThreshold {\n\t\tindenter := strings.Repeat(Indent, int(indentation))\n\t\treturn fmt.Sprintf(\"[\\n%s%s,\\n%s]\", indenter+Indent, strings.Join(result, \",\\n\"+indenter+Indent), indenter)\n\t}\n\treturn fmt.Sprintf(\"[%s]\", strings.Join(result, \", \"))\n}\n\nfunc formatMap(v reflect.Value, indentation uint) string {\n\tl := v.Len()\n\tresult := make([]string, l)\n\n\tlongest := 0\n\tfor i, key := range v.MapKeys() {\n\t\tvalue := v.MapIndex(key)\n\t\tresult[i] = fmt.Sprintf(\"%s: %s\", formatValue(key, indentation+1, false), formatValue(value, indentation+1, false))\n\t\tif len(result[i]) > longest {\n\t\t\tlongest = len(result[i])\n\t\t}\n\t}\n\n\tif longest > longFormThreshold {\n\t\tindenter := strings.Repeat(Indent, int(indentation))\n\t\treturn fmt.Sprintf(\"{\\n%s%s,\\n%s}\", indenter+Indent, strings.Join(result, \",\\n\"+indenter+Indent), indenter)\n\t}\n\treturn fmt.Sprintf(\"{%s}\", strings.Join(result, \", \"))\n}\n\nfunc formatStruct(v reflect.Value, indentation uint) string {\n\tt := v.Type()\n\n\tl := v.NumField()\n\tresult := []string{}\n\tlongest := 0\n\tfor i := range l {\n\t\tstructField := t.Field(i)\n\t\tfieldEntry := v.Field(i)\n\t\trepresentation := fmt.Sprintf(\"%s: %s\", structField.Name, formatValue(fieldEntry, indentation+1, false))\n\t\tresult = append(result, representation)\n\t\tif len(representation) > longest {\n\t\t\tlongest = len(representation)\n\t\t}\n\t}\n\tif longest > longFormThreshold {\n\t\tindenter := strings.Repeat(Indent, int(indentation))\n\t\treturn fmt.Sprintf(\"{\\n%s%s,\\n%s}\", indenter+Indent, strings.Join(result, \",\\n\"+indenter+Indent), indenter)\n\t}\n\treturn fmt.Sprintf(\"{%s}\", strings.Join(result, \", \"))\n}\n\nfunc formatInterface(v reflect.Value, indentation uint) string {\n\treturn fmt.Sprintf(\"<%s>%s\", formatType(v.Elem()), formatValue(v.Elem(), indentation, false))\n}\n\nfunc isNilValue(a reflect.Value) bool {\n\tswitch a.Kind() {\n\tcase reflect.Invalid:\n\t\treturn true\n\tcase reflect.Chan, reflect.Func, reflect.Interface, reflect.Map, reflect.Ptr, reflect.Slice:\n\t\treturn a.IsNil()\n\t}\n\n\treturn false\n}\n\n/*\nReturns true when the string is entirely made of printable runes, false otherwise.\n*/\nfunc isPrintableString(str string) bool {\n\tfor _, runeValue := range str {\n\t\tif !strconv.IsPrint(runeValue) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/gomega_dsl.go",
    "content": "/*\nGomega is the Ginkgo BDD-style testing framework's preferred matcher library.\n\nThe godoc documentation describes Gomega's API.  More comprehensive documentation (with examples!) is available at http://onsi.github.io/gomega/\n\nGomega on Github: http://github.com/onsi/gomega\n\nLearn more about Ginkgo online: http://onsi.github.io/ginkgo\n\nGinkgo on Github: http://github.com/onsi/ginkgo\n\nGomega is MIT-Licensed\n*/\npackage gomega\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"time\"\n\n\t\"github.com/onsi/gomega/internal\"\n\t\"github.com/onsi/gomega/types\"\n)\n\nconst GOMEGA_VERSION = \"1.39.1\"\n\nconst nilGomegaPanic = `You are trying to make an assertion, but haven't registered Gomega's fail handler.\nIf you're using Ginkgo then you probably forgot to put your assertion in an It().\nAlternatively, you may have forgotten to register a fail handler with RegisterFailHandler() or RegisterTestingT().\nDepending on your vendoring solution you may be inadvertently importing gomega and subpackages (e.g. ghhtp, gexec,...) from different locations.\n`\n\n// Gomega describes the essential Gomega DSL. This interface allows libraries\n// to abstract between the standard package-level function implementations\n// and alternatives like *WithT.\n//\n// The types in the top-level DSL have gotten a bit messy due to earlier deprecations that avoid stuttering\n// and due to an accidental use of a concrete type (*WithT) in an earlier release.\n//\n// As of 1.15 both the WithT and Ginkgo variants of Gomega are implemented by the same underlying object\n// however one (the Ginkgo variant) is exported as an interface (types.Gomega) whereas the other (the withT variant)\n// is shared as a concrete type (*WithT, which is aliased to *internal.Gomega).  1.15 did not clean this mess up to ensure\n// that declarations of *WithT in existing code are not broken by the upgrade to 1.15.\ntype Gomega = types.Gomega\n\n// DefaultGomega supplies the standard package-level implementation\nvar Default = Gomega(internal.NewGomega(internal.FetchDefaultDurationBundle()))\n\n// NewGomega returns an instance of Gomega wired into the passed-in fail handler.\n// You generally don't need to use this when using Ginkgo - RegisterFailHandler will wire up the global gomega\n// However creating a NewGomega with a custom fail handler can be useful in contexts where you want to use Gomega's\n// rich ecosystem of matchers without causing a test to fail.  For example, to aggregate a series of potential failures\n// or for use in a non-test setting.\nfunc NewGomega(fail types.GomegaFailHandler) Gomega {\n\treturn internal.NewGomega(internalGomega(Default).DurationBundle).ConfigureWithFailHandler(fail)\n}\n\n// WithT wraps a *testing.T and provides `Expect`, `Eventually`, and `Consistently` methods.  This allows you to leverage\n// Gomega's rich ecosystem of matchers in standard `testing` test suites.\n//\n// Use `NewWithT` to instantiate a `WithT`\n//\n// As of 1.15 both the WithT and Ginkgo variants of Gomega are implemented by the same underlying object\n// however one (the Ginkgo variant) is exported as an interface (types.Gomega) whereas the other (the withT variant)\n// is shared as a concrete type (*WithT, which is aliased to *internal.Gomega).  1.15 did not clean this mess up to ensure\n// that declarations of *WithT in existing code are not broken by the upgrade to 1.15.\ntype WithT = internal.Gomega\n\n// GomegaWithT is deprecated in favor of gomega.WithT, which does not stutter.\ntype GomegaWithT = WithT\n\n// inner is an interface that allows users to provide a wrapper around Default.  The wrapper\n// must implement the inner interface and return either the original Default or the result of\n// a call to NewGomega().\ntype inner interface {\n\tInner() Gomega\n}\n\nfunc internalGomega(g Gomega) *internal.Gomega {\n\tif v, ok := g.(inner); ok {\n\t\treturn v.Inner().(*internal.Gomega)\n\t}\n\treturn g.(*internal.Gomega)\n}\n\n// NewWithT takes a *testing.T and returns a `gomega.WithT` allowing you to use `Expect`, `Eventually`, and `Consistently` along with\n// Gomega's rich ecosystem of matchers in standard `testing` test suits.\n//\n//\tfunc TestFarmHasCow(t *testing.T) {\n//\t    g := gomega.NewWithT(t)\n//\n//\t    f := farm.New([]string{\"Cow\", \"Horse\"})\n//\t    g.Expect(f.HasCow()).To(BeTrue(), \"Farm should have cow\")\n//\t }\nfunc NewWithT(t types.GomegaTestingT) *WithT {\n\treturn internal.NewGomega(internalGomega(Default).DurationBundle).ConfigureWithT(t)\n}\n\n// NewGomegaWithT is deprecated in favor of gomega.NewWithT, which does not stutter.\nvar NewGomegaWithT = NewWithT\n\n// RegisterFailHandler connects Ginkgo to Gomega. When a matcher fails\n// the fail handler passed into RegisterFailHandler is called.\nfunc RegisterFailHandler(fail types.GomegaFailHandler) {\n\tinternalGomega(Default).ConfigureWithFailHandler(fail)\n}\n\n// RegisterFailHandlerWithT is deprecated and will be removed in a future release.\n// users should use RegisterFailHandler, or RegisterTestingT\nfunc RegisterFailHandlerWithT(_ types.GomegaTestingT, fail types.GomegaFailHandler) {\n\tfmt.Println(\"RegisterFailHandlerWithT is deprecated.  Please use RegisterFailHandler or RegisterTestingT instead.\")\n\tinternalGomega(Default).ConfigureWithFailHandler(fail)\n}\n\n// RegisterTestingT connects Gomega to Golang's XUnit style\n// Testing.T tests.  It is now deprecated and you should use NewWithT() instead to get a fresh instance of Gomega for each test.\nfunc RegisterTestingT(t types.GomegaTestingT) {\n\tinternalGomega(Default).ConfigureWithT(t)\n}\n\n// InterceptGomegaFailures runs a given callback and returns an array of\n// failure messages generated by any Gomega assertions within the callback.\n// Execution continues after the first failure allowing users to collect all failures\n// in the callback.\n//\n// This is most useful when testing custom matchers, but can also be used to check\n// on a value using a Gomega assertion without causing a test failure.\nfunc InterceptGomegaFailures(f func()) []string {\n\toriginalHandler := internalGomega(Default).Fail\n\tfailures := []string{}\n\tinternalGomega(Default).Fail = func(message string, callerSkip ...int) {\n\t\tfailures = append(failures, message)\n\t}\n\tdefer func() {\n\t\tinternalGomega(Default).Fail = originalHandler\n\t}()\n\tf()\n\treturn failures\n}\n\n// InterceptGomegaFailure runs a given callback and returns the first\n// failure message generated by any Gomega assertions within the callback, wrapped in an error.\n//\n// The callback ceases execution as soon as the first failed assertion occurs, however Gomega\n// does not register a failure with the FailHandler registered via RegisterFailHandler - it is up\n// to the user to decide what to do with the returned error\nfunc InterceptGomegaFailure(f func()) (err error) {\n\toriginalHandler := internalGomega(Default).Fail\n\tinternalGomega(Default).Fail = func(message string, callerSkip ...int) {\n\t\terr = errors.New(message)\n\t\tpanic(\"stop execution\")\n\t}\n\n\tdefer func() {\n\t\tinternalGomega(Default).Fail = originalHandler\n\t\tif e := recover(); e != nil {\n\t\t\tif err == nil {\n\t\t\t\tpanic(e)\n\t\t\t}\n\t\t}\n\t}()\n\n\tf()\n\treturn err\n}\n\nfunc ensureDefaultGomegaIsConfigured() {\n\tif !internalGomega(Default).IsConfigured() {\n\t\tpanic(nilGomegaPanic)\n\t}\n}\n\n// Ω wraps an actual value allowing assertions to be made on it:\n//\n//\tΩ(\"foo\").Should(Equal(\"foo\"))\n//\n// If Ω is passed more than one argument it will pass the *first* argument to the matcher.\n// All subsequent arguments will be required to be nil/zero.\n//\n// This is convenient if you want to make an assertion on a method/function that returns\n// a value and an error - a common pattern in Go.\n//\n// For example, given a function with signature:\n//\n//\tfunc MyAmazingThing() (int, error)\n//\n// Then:\n//\n//\tΩ(MyAmazingThing()).Should(Equal(3))\n//\n// Will succeed only if `MyAmazingThing()` returns `(3, nil)`\n//\n// Ω and Expect are identical\nfunc Ω(actual any, extra ...any) Assertion {\n\tensureDefaultGomegaIsConfigured()\n\treturn Default.Ω(actual, extra...)\n}\n\n// Expect wraps an actual value allowing assertions to be made on it:\n//\n//\tExpect(\"foo\").To(Equal(\"foo\"))\n//\n// If Expect is passed more than one argument it will pass the *first* argument to the matcher.\n// All subsequent arguments will be required to be nil/zero.\n//\n// This is convenient if you want to make an assertion on a method/function that returns\n// a value and an error - a common pattern in Go.\n//\n// For example, given a function with signature:\n//\n//\tfunc MyAmazingThing() (int, error)\n//\n// Then:\n//\n//\tExpect(MyAmazingThing()).Should(Equal(3))\n//\n// Will succeed only if `MyAmazingThing()` returns `(3, nil)`\n//\n// Expect and Ω are identical\nfunc Expect(actual any, extra ...any) Assertion {\n\tensureDefaultGomegaIsConfigured()\n\treturn Default.Expect(actual, extra...)\n}\n\n// ExpectWithOffset wraps an actual value allowing assertions to be made on it:\n//\n//\tExpectWithOffset(1, \"foo\").To(Equal(\"foo\"))\n//\n// Unlike `Expect` and `Ω`, `ExpectWithOffset` takes an additional integer argument\n// that is used to modify the call-stack offset when computing line numbers. It is\n// the same as `Expect(...).WithOffset`.\n//\n// This is most useful in helper functions that make assertions.  If you want Gomega's\n// error message to refer to the calling line in the test (as opposed to the line in the helper function)\n// set the first argument of `ExpectWithOffset` appropriately.\nfunc ExpectWithOffset(offset int, actual any, extra ...any) Assertion {\n\tensureDefaultGomegaIsConfigured()\n\treturn Default.ExpectWithOffset(offset, actual, extra...)\n}\n\n/*\nEventually enables making assertions on asynchronous behavior.\n\nEventually checks that an assertion *eventually* passes.  Eventually blocks when called and attempts an assertion periodically until it passes or a timeout occurs.  Both the timeout and polling interval are configurable as optional arguments.\nThe first optional argument is the timeout (which defaults to 1s), the second is the polling interval (which defaults to 10ms).  Both intervals can be specified as time.Duration, parsable duration strings or floats/integers (in which case they are interpreted as seconds).  In addition an optional context.Context can be passed in - Eventually will keep trying until either the timeout expires or the context is cancelled, whichever comes first.\n\nEventually works with any Gomega compatible matcher and supports making assertions against three categories of actual value:\n\n**Category 1: Making Eventually assertions on values**\n\nThere are several examples of values that can change over time.  These can be passed in to Eventually and will be passed to the matcher repeatedly until a match occurs.  For example:\n\n\tc := make(chan bool)\n\tgo DoStuff(c)\n\tEventually(c, \"50ms\").Should(BeClosed())\n\nwill poll the channel repeatedly until it is closed.  In this example `Eventually` will block until either the specified timeout of 50ms has elapsed or the channel is closed, whichever comes first.\n\nSeveral Gomega libraries allow you to use Eventually in this way.  For example, the gomega/gexec package allows you to block until a *gexec.Session exits successfully via:\n\n\tEventually(session).Should(gexec.Exit(0))\n\nAnd the gomega/gbytes package allows you to monitor a streaming *gbytes.Buffer until a given string is seen:\n\n\tEventually(buffer).Should(gbytes.Say(\"hello there\"))\n\nIn these examples, both `session` and `buffer` are designed to be thread-safe when polled by the `Exit` and `Say` matchers.  This is not true in general of most raw values, so while it is tempting to do something like:\n\n\t// THIS IS NOT THREAD-SAFE\n\tvar s *string\n\tgo mutateStringEventually(s)\n\tEventually(s).Should(Equal(\"I've changed\"))\n\nthis will trigger Go's race detector as the goroutine polling via Eventually will race over the value of s with the goroutine mutating the string.  For cases like this you can use channels or introduce your own locking around s by passing Eventually a function.\n\n**Category 2: Make Eventually assertions on functions**\n\nEventually can be passed functions that **return at least one value**.  When configured this way, Eventually will poll the function repeatedly and pass the first returned value to the matcher.\n\nFor example:\n\n\t   Eventually(func() int {\n\t   \treturn client.FetchCount()\n\t   }).Should(BeNumerically(\">=\", 17))\n\n\twill repeatedly poll client.FetchCount until the BeNumerically matcher is satisfied.  (Note that this example could have been written as Eventually(client.FetchCount).Should(BeNumerically(\">=\", 17)))\n\nIf multiple values are returned by the function, Eventually will pass the first value to the matcher and require that all others are zero-valued.  This allows you to pass Eventually a function that returns a value and an error - a common pattern in Go.\n\nFor example, consider a method that returns a value and an error:\n\n\tfunc FetchFromDB() (string, error)\n\nThen\n\n\tEventually(FetchFromDB).Should(Equal(\"got it\"))\n\nwill pass only if and when the returned error is nil *and* the returned string satisfies the matcher.\n\nEventually can also accept functions that take arguments, however you must provide those arguments using .WithArguments().  For example, consider a function that takes a user-id and makes a network request to fetch a full name:\n\n\tfunc FetchFullName(userId int) (string, error)\n\nYou can poll this function like so:\n\n\tEventually(FetchFullName).WithArguments(1138).Should(Equal(\"Wookie\"))\n\nIt is important to note that the function passed into Eventually is invoked *synchronously* when polled.  Eventually does not (in fact, it cannot) kill the function if it takes longer to return than Eventually's configured timeout.  A common practice here is to use a context.  Here's an example that combines Ginkgo's spec timeout support with Eventually:\n\n\tIt(\"fetches the correct count\", func(ctx SpecContext) {\n\t\tEventually(ctx, func() int {\n\t\t\treturn client.FetchCount(ctx, \"/users\")\n\t\t}).Should(BeNumerically(\">=\", 17))\n\t}, SpecTimeout(time.Second))\n\nyou an also use Eventually().WithContext(ctx) to pass in the context.  Passed-in contexts play nicely with passed-in arguments as long as the context appears first.  You can rewrite the above example as:\n\n\tIt(\"fetches the correct count\", func(ctx SpecContext) {\n\t\tEventually(client.FetchCount).WithContext(ctx).WithArguments(\"/users\").Should(BeNumerically(\">=\", 17))\n\t}, SpecTimeout(time.Second))\n\nEither way the context passed to Eventually is also passed to the underlying function.  Now, when Ginkgo cancels the context both the FetchCount client and Gomega will be informed and can exit.\n\nBy default, when a context is passed to Eventually *without* an explicit timeout, Gomega will rely solely on the context's cancellation to determine when to stop polling.  If you want to specify a timeout in addition to the context you can do so using the .WithTimeout() method.  For example:\n\n\tEventually(client.FetchCount).WithContext(ctx).WithTimeout(10*time.Second).Should(BeNumerically(\">=\", 17))\n\nnow either the context cancellation or the timeout will cause Eventually to stop polling.\n\nIf, instead, you would like to opt out of this behavior and have Gomega's default timeouts govern Eventuallys that take a context you can call:\n\n\tEnforceDefaultTimeoutsWhenUsingContexts()\n\nin the DSL (or on a Gomega instance).  Now all calls to Eventually that take a context will fail if either the context is cancelled or the default timeout elapses.\n\n**Category 3: Making assertions _in_ the function passed into Eventually**\n\nWhen testing complex systems it can be valuable to assert that a _set_ of assertions passes Eventually.  Eventually supports this by accepting functions that take a single Gomega argument and return zero or more values.\n\nHere's an example that makes some assertions and returns a value and error:\n\n\tEventually(func(g Gomega) (Widget, error) {\n\t\tids, err := client.FetchIDs()\n\t\tg.Expect(err).NotTo(HaveOccurred())\n\t\tg.Expect(ids).To(ContainElement(1138))\n\t\treturn client.FetchWidget(1138)\n\t}).Should(Equal(expectedWidget))\n\nwill pass only if all the assertions in the polled function pass and the return value satisfied the matcher.\n\nEventually also supports a special case polling function that takes a single Gomega argument and returns no values.  Eventually assumes such a function is making assertions and is designed to work with the Succeed matcher to validate that all assertions have passed.\nFor example:\n\n\tEventually(func(g Gomega) {\n\t\tmodel, err := client.Find(1138)\n\t\tg.Expect(err).NotTo(HaveOccurred())\n\t\tg.Expect(model.Reticulate()).To(Succeed())\n\t\tg.Expect(model.IsReticulated()).To(BeTrue())\n\t\tg.Expect(model.Save()).To(Succeed())\n\t}).Should(Succeed())\n\nwill rerun the function until all assertions pass.\n\nYou can also pass additional arguments to functions that take a Gomega.  The only rule is that the Gomega argument must be first.  If you also want to pass the context attached to Eventually you must ensure that is the second argument.  For example:\n\n\tEventually(func(g Gomega, ctx context.Context, path string, expected ...string){\n\t\ttok, err := client.GetToken(ctx)\n\t\tg.Expect(err).NotTo(HaveOccurred())\n\n\t\telements, err := client.Fetch(ctx, tok, path)\n\t\tg.Expect(err).NotTo(HaveOccurred())\n\t\tg.Expect(elements).To(ConsistOf(expected))\n\t}).WithContext(ctx).WithArguments(\"/names\", \"Joe\", \"Jane\", \"Sam\").Should(Succeed())\n\nYou can ensure that you get a number of consecutive successful tries before succeeding using `MustPassRepeatedly(int)`. For Example:\n\n\tint count := 0\n\tEventually(func() bool {\n\t\tcount++\n\t\treturn count > 2\n\t}).MustPassRepeatedly(2).Should(BeTrue())\n\t// Because we had to wait for 2 calls that returned true\n\tExpect(count).To(Equal(3))\n\nFinally, in addition to passing timeouts and a context to Eventually you can be more explicit with Eventually's chaining configuration methods:\n\n\tEventually(..., \"10s\", \"2s\", ctx).Should(...)\n\nis equivalent to\n\n\tEventually(...).WithTimeout(10*time.Second).WithPolling(2*time.Second).WithContext(ctx).Should(...)\n*/\nfunc Eventually(actualOrCtx any, args ...any) AsyncAssertion {\n\tensureDefaultGomegaIsConfigured()\n\treturn Default.Eventually(actualOrCtx, args...)\n}\n\n// EventuallyWithOffset operates like Eventually but takes an additional\n// initial argument to indicate an offset in the call stack.  This is useful when building helper\n// functions that contain matchers.  To learn more, read about `ExpectWithOffset`.\n//\n// `EventuallyWithOffset` is the same as `Eventually(...).WithOffset`.\n//\n// `EventuallyWithOffset` specifying a timeout interval (and an optional polling interval) are\n// the same as `Eventually(...).WithOffset(...).WithTimeout` or\n// `Eventually(...).WithOffset(...).WithTimeout(...).WithPolling`.\nfunc EventuallyWithOffset(offset int, actualOrCtx any, args ...any) AsyncAssertion {\n\tensureDefaultGomegaIsConfigured()\n\treturn Default.EventuallyWithOffset(offset, actualOrCtx, args...)\n}\n\n/*\nConsistently, like Eventually, enables making assertions on asynchronous behavior.\n\nConsistently blocks when called for a specified duration.  During that duration Consistently repeatedly polls its matcher and ensures that it is satisfied.  If the matcher is consistently satisfied, then Consistently will pass.  Otherwise Consistently will fail.\n\nBoth the total waiting duration and the polling interval are configurable as optional arguments.  The first optional argument is the duration that Consistently will run for (defaults to 100ms), and the second argument is the polling interval (defaults to 10ms).  As with Eventually, these intervals can be passed in as time.Duration, parsable duration strings or an integer or float number of seconds.  You can also pass in an optional context.Context - Consistently will exit early (with a failure) if the context is cancelled before the waiting duration expires.\n\nConsistently accepts the same three categories of actual as Eventually, check the Eventually docs to learn more.\n\nConsistently is useful in cases where you want to assert that something *does not happen* for a period of time.  For example, you may want to assert that a goroutine does *not* send data down a channel.  In this case you could write:\n\n\tConsistently(channel, \"200ms\").ShouldNot(Receive())\n\nThis will block for 200 milliseconds and repeatedly check the channel and ensure nothing has been received.\n*/\nfunc Consistently(actualOrCtx any, args ...any) AsyncAssertion {\n\tensureDefaultGomegaIsConfigured()\n\treturn Default.Consistently(actualOrCtx, args...)\n}\n\n// ConsistentlyWithOffset operates like Consistently but takes an additional\n// initial argument to indicate an offset in the call stack. This is useful when building helper\n// functions that contain matchers. To learn more, read about `ExpectWithOffset`.\n//\n// `ConsistentlyWithOffset` is the same as `Consistently(...).WithOffset` and\n// optional `WithTimeout` and `WithPolling`.\nfunc ConsistentlyWithOffset(offset int, actualOrCtx any, args ...any) AsyncAssertion {\n\tensureDefaultGomegaIsConfigured()\n\treturn Default.ConsistentlyWithOffset(offset, actualOrCtx, args...)\n}\n\n/*\nStopTrying can be used to signal to Eventually and Consistently that they should abort and stop trying.  This always results in a failure of the assertion - and the failure message is the content of the StopTrying signal.\n\nYou can send the StopTrying signal by either returning StopTrying(\"message\") as an error from your passed-in function _or_ by calling StopTrying(\"message\").Now() to trigger a panic and end execution.\n\nYou can also wrap StopTrying around an error with `StopTrying(\"message\").Wrap(err)` and can attach additional objects via `StopTrying(\"message\").Attach(\"description\", object).  When rendered, the signal will include the wrapped error and any attached objects rendered using Gomega's default formatting.\n\nHere are a couple of examples.  This is how you might use StopTrying() as an error to signal that Eventually should stop:\n\n\tplayerIndex, numPlayers := 0, 11\n\tEventually(func() (string, error) {\n\t    if playerIndex == numPlayers {\n\t        return \"\", StopTrying(\"no more players left\")\n\t    }\n\t    name := client.FetchPlayer(playerIndex)\n\t    playerIndex += 1\n\t    return name, nil\n\t}).Should(Equal(\"Patrick Mahomes\"))\n\nAnd here's an example where `StopTrying().Now()` is called to halt execution immediately:\n\n\tEventually(func() []string {\n\t\tnames, err := client.FetchAllPlayers()\n\t\tif err == client.IRRECOVERABLE_ERROR {\n\t\t\tStopTrying(\"Irrecoverable error occurred\").Wrap(err).Now()\n\t\t}\n\t\treturn names\n\t}).Should(ContainElement(\"Patrick Mahomes\"))\n*/\nvar StopTrying = internal.StopTrying\n\n/*\nTryAgainAfter(<duration>) allows you to adjust the polling interval for the _next_ iteration of `Eventually` or `Consistently`.  Like `StopTrying` you can either return `TryAgainAfter` as an error or trigger it immedieately with `.Now()`\n\nWhen `TryAgainAfter(<duration>` is triggered `Eventually` and `Consistently` will wait for that duration.  If a timeout occurs before the next poll is triggered both `Eventually` and `Consistently` will always fail with the content of the TryAgainAfter message.  As with StopTrying you can `.Wrap()` and error and `.Attach()` additional objects to `TryAgainAfter`.\n*/\nvar TryAgainAfter = internal.TryAgainAfter\n\n/*\nPollingSignalError is the error returned by StopTrying() and TryAgainAfter()\n*/\ntype PollingSignalError = internal.PollingSignalError\n\n// SetDefaultEventuallyTimeout sets the default timeout duration for Eventually. Eventually will repeatedly poll your condition until it succeeds, or until this timeout elapses.\nfunc SetDefaultEventuallyTimeout(t time.Duration) {\n\tDefault.SetDefaultEventuallyTimeout(t)\n}\n\n// SetDefaultEventuallyPollingInterval sets the default polling interval for Eventually.\nfunc SetDefaultEventuallyPollingInterval(t time.Duration) {\n\tDefault.SetDefaultEventuallyPollingInterval(t)\n}\n\n// SetDefaultConsistentlyDuration sets  the default duration for Consistently. Consistently will verify that your condition is satisfied for this long.\nfunc SetDefaultConsistentlyDuration(t time.Duration) {\n\tDefault.SetDefaultConsistentlyDuration(t)\n}\n\n// SetDefaultConsistentlyPollingInterval sets the default polling interval for Consistently.\nfunc SetDefaultConsistentlyPollingInterval(t time.Duration) {\n\tDefault.SetDefaultConsistentlyPollingInterval(t)\n}\n\n// EnforceDefaultTimeoutsWhenUsingContexts forces `Eventually` to apply a default timeout even when a context is provided.\nfunc EnforceDefaultTimeoutsWhenUsingContexts() {\n\tDefault.EnforceDefaultTimeoutsWhenUsingContexts()\n}\n\n// DisableDefaultTimeoutsWhenUsingContext disables the default timeout when a context is provided to `Eventually`.\nfunc DisableDefaultTimeoutsWhenUsingContext() {\n\tDefault.DisableDefaultTimeoutsWhenUsingContext()\n}\n\n// AsyncAssertion is returned by Eventually and Consistently and polls the actual value passed into Eventually against\n// the matcher passed to the Should and ShouldNot methods.\n//\n// Both Should and ShouldNot take a variadic optionalDescription argument.\n// This argument allows you to make your failure messages more descriptive.\n// If a single argument of type `func() string` is passed, this function will be lazily evaluated if a failure occurs\n// and the returned string is used to annotate the failure message.\n// Otherwise, this argument is passed on to fmt.Sprintf() and then used to annotate the failure message.\n//\n// Both Should and ShouldNot return a boolean that is true if the assertion passed and false if it failed.\n//\n// Example:\n//\n//\tEventually(myChannel).Should(Receive(), \"Something should have come down the pipe.\")\n//\tConsistently(myChannel).ShouldNot(Receive(), func() string { return \"Nothing should have come down the pipe.\" })\ntype AsyncAssertion = types.AsyncAssertion\n\n// GomegaAsyncAssertion is deprecated in favor of AsyncAssertion, which does not stutter.\ntype GomegaAsyncAssertion = types.AsyncAssertion\n\n// Assertion is returned by Ω and Expect and compares the actual value to the matcher\n// passed to the Should/ShouldNot and To/ToNot/NotTo methods.\n//\n// Typically Should/ShouldNot are used with Ω and To/ToNot/NotTo are used with Expect\n// though this is not enforced.\n//\n// All methods take a variadic optionalDescription argument.\n// This argument allows you to make your failure messages more descriptive.\n// If a single argument of type `func() string` is passed, this function will be lazily evaluated if a failure occurs\n// and the returned string is used to annotate the failure message.\n// Otherwise, this argument is passed on to fmt.Sprintf() and then used to annotate the failure message.\n//\n// All methods return a bool that is true if the assertion passed and false if it failed.\n//\n// Example:\n//\n//\tΩ(farm.HasCow()).Should(BeTrue(), \"Farm %v should have a cow\", farm)\ntype Assertion = types.Assertion\n\n// GomegaAssertion is deprecated in favor of Assertion, which does not stutter.\ntype GomegaAssertion = types.Assertion\n\n// OmegaMatcher is deprecated in favor of the better-named and better-organized types.GomegaMatcher but sticks around to support existing code that uses it\ntype OmegaMatcher = types.GomegaMatcher\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/internal/assertion.go",
    "content": "package internal\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\n\t\"github.com/onsi/gomega/format\"\n\t\"github.com/onsi/gomega/types\"\n)\n\ntype Assertion struct {\n\tactuals     []any    // actual value plus all extra values\n\tactualIndex int      // value to pass to the matcher\n\tvet         vetinari // the vet to call before calling Gomega matcher\n\toffset      int\n\tg           *Gomega\n}\n\n// ...obligatory discworld reference, as \"vetineer\" doesn't sound ... quite right.\ntype vetinari func(assertion *Assertion, optionalDescription ...any) bool\n\nfunc NewAssertion(actualInput any, g *Gomega, offset int, extra ...any) *Assertion {\n\treturn &Assertion{\n\t\tactuals:     append([]any{actualInput}, extra...),\n\t\tactualIndex: 0,\n\t\tvet:         (*Assertion).vetActuals,\n\t\toffset:      offset,\n\t\tg:           g,\n\t}\n}\n\nfunc (assertion *Assertion) WithOffset(offset int) types.Assertion {\n\tassertion.offset = offset\n\treturn assertion\n}\n\nfunc (assertion *Assertion) Error() types.Assertion {\n\treturn &Assertion{\n\t\tactuals:     assertion.actuals,\n\t\tactualIndex: len(assertion.actuals) - 1,\n\t\tvet:         (*Assertion).vetError,\n\t\toffset:      assertion.offset,\n\t\tg:           assertion.g,\n\t}\n}\n\nfunc (assertion *Assertion) Should(matcher types.GomegaMatcher, optionalDescription ...any) bool {\n\tassertion.g.THelper()\n\tvetOptionalDescription(\"Assertion\", optionalDescription...)\n\treturn assertion.vet(assertion, optionalDescription...) && assertion.match(matcher, true, optionalDescription...)\n}\n\nfunc (assertion *Assertion) ShouldNot(matcher types.GomegaMatcher, optionalDescription ...any) bool {\n\tassertion.g.THelper()\n\tvetOptionalDescription(\"Assertion\", optionalDescription...)\n\treturn assertion.vet(assertion, optionalDescription...) && assertion.match(matcher, false, optionalDescription...)\n}\n\nfunc (assertion *Assertion) To(matcher types.GomegaMatcher, optionalDescription ...any) bool {\n\tassertion.g.THelper()\n\tvetOptionalDescription(\"Assertion\", optionalDescription...)\n\treturn assertion.vet(assertion, optionalDescription...) && assertion.match(matcher, true, optionalDescription...)\n}\n\nfunc (assertion *Assertion) ToNot(matcher types.GomegaMatcher, optionalDescription ...any) bool {\n\tassertion.g.THelper()\n\tvetOptionalDescription(\"Assertion\", optionalDescription...)\n\treturn assertion.vet(assertion, optionalDescription...) && assertion.match(matcher, false, optionalDescription...)\n}\n\nfunc (assertion *Assertion) NotTo(matcher types.GomegaMatcher, optionalDescription ...any) bool {\n\tassertion.g.THelper()\n\tvetOptionalDescription(\"Assertion\", optionalDescription...)\n\treturn assertion.vet(assertion, optionalDescription...) && assertion.match(matcher, false, optionalDescription...)\n}\n\nfunc (assertion *Assertion) buildDescription(optionalDescription ...any) string {\n\tswitch len(optionalDescription) {\n\tcase 0:\n\t\treturn \"\"\n\tcase 1:\n\t\tif describe, ok := optionalDescription[0].(func() string); ok {\n\t\t\treturn describe() + \"\\n\"\n\t\t}\n\t}\n\treturn fmt.Sprintf(optionalDescription[0].(string), optionalDescription[1:]...) + \"\\n\"\n}\n\nfunc (assertion *Assertion) match(matcher types.GomegaMatcher, desiredMatch bool, optionalDescription ...any) bool {\n\tactualInput := assertion.actuals[assertion.actualIndex]\n\tmatches, err := matcher.Match(actualInput)\n\tassertion.g.THelper()\n\tif err != nil {\n\t\tdescription := assertion.buildDescription(optionalDescription...)\n\t\tassertion.g.Fail(description+err.Error(), 2+assertion.offset)\n\t\treturn false\n\t}\n\tif matches != desiredMatch {\n\t\tvar message string\n\t\tif desiredMatch {\n\t\t\tmessage = matcher.FailureMessage(actualInput)\n\t\t} else {\n\t\t\tmessage = matcher.NegatedFailureMessage(actualInput)\n\t\t}\n\t\tdescription := assertion.buildDescription(optionalDescription...)\n\t\tassertion.g.Fail(description+message, 2+assertion.offset)\n\t\treturn false\n\t}\n\n\treturn true\n}\n\n// vetActuals vets the actual values, with the (optional) exception of a\n// specific value, such as the first value in case non-error assertions, or the\n// last value in case of Error()-based assertions.\nfunc (assertion *Assertion) vetActuals(optionalDescription ...any) bool {\n\tsuccess, message := vetActuals(assertion.actuals, assertion.actualIndex)\n\tif success {\n\t\treturn true\n\t}\n\n\tdescription := assertion.buildDescription(optionalDescription...)\n\tassertion.g.THelper()\n\tassertion.g.Fail(description+message, 2+assertion.offset)\n\treturn false\n}\n\n// vetError vets the actual values, except for the final error value, in case\n// the final error value is non-zero. Otherwise, it doesn't vet the actual\n// values, as these are allowed to take on any values unless there is a non-zero\n// error value.\nfunc (assertion *Assertion) vetError(optionalDescription ...any) bool {\n\tif err := assertion.actuals[assertion.actualIndex]; err != nil {\n\t\t// Go error result idiom: all other actual values must be zero values.\n\t\treturn assertion.vetActuals(optionalDescription...)\n\t}\n\treturn true\n}\n\n// vetActuals vets a slice of actual values, optionally skipping a particular\n// value slice element, such as the first or last value slice element.\nfunc vetActuals(actuals []any, skipIndex int) (bool, string) {\n\tfor i, actual := range actuals {\n\t\tif i == skipIndex {\n\t\t\tcontinue\n\t\t}\n\t\tif actual != nil {\n\t\t\tzeroValue := reflect.Zero(reflect.TypeOf(actual)).Interface()\n\t\t\tif !reflect.DeepEqual(zeroValue, actual) {\n\t\t\t\tvar message string\n\t\t\t\tif err, ok := actual.(error); ok {\n\t\t\t\t\tmessage = fmt.Sprintf(\"Unexpected error: %s\\n%s\", err, format.Object(err, 1))\n\t\t\t\t} else {\n\t\t\t\t\tmessage = fmt.Sprintf(\"Unexpected non-nil/non-zero argument at index %d:\\n\\t<%T>: %#v\", i, actual, actual)\n\t\t\t\t}\n\t\t\t\treturn false, message\n\t\t\t}\n\t\t}\n\t}\n\treturn true, \"\"\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/internal/async_assertion.go",
    "content": "package internal\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"reflect\"\n\t\"runtime\"\n\t\"sync\"\n\t\"time\"\n\n\t\"github.com/onsi/gomega/format\"\n\t\"github.com/onsi/gomega/types\"\n)\n\nvar errInterface = reflect.TypeOf((*error)(nil)).Elem()\nvar gomegaType = reflect.TypeOf((*types.Gomega)(nil)).Elem()\nvar contextType = reflect.TypeOf(new(context.Context)).Elem()\n\ntype formattedGomegaError interface {\n\tFormattedGomegaError() string\n}\n\ntype asyncPolledActualError struct {\n\tmessage string\n}\n\nfunc (err *asyncPolledActualError) Error() string {\n\treturn err.message\n}\n\nfunc (err *asyncPolledActualError) FormattedGomegaError() string {\n\treturn err.message\n}\n\ntype contextWithAttachProgressReporter interface {\n\tAttachProgressReporter(func() string) func()\n}\n\ntype asyncGomegaHaltExecutionError struct{}\n\nfunc (a asyncGomegaHaltExecutionError) GinkgoRecoverShouldIgnoreThisPanic() {}\nfunc (a asyncGomegaHaltExecutionError) Error() string {\n\treturn `An assertion has failed in a goroutine.  You should call \n\n    defer GinkgoRecover()\n\nat the top of the goroutine that caused this panic.  This will allow Ginkgo and Gomega to correctly capture and manage this panic.`\n}\n\ntype AsyncAssertionType uint\n\nconst (\n\tAsyncAssertionTypeEventually AsyncAssertionType = iota\n\tAsyncAssertionTypeConsistently\n)\n\nfunc (at AsyncAssertionType) String() string {\n\tswitch at {\n\tcase AsyncAssertionTypeEventually:\n\t\treturn \"Eventually\"\n\tcase AsyncAssertionTypeConsistently:\n\t\treturn \"Consistently\"\n\t}\n\treturn \"INVALID ASYNC ASSERTION TYPE\"\n}\n\ntype AsyncAssertion struct {\n\tasyncType AsyncAssertionType\n\n\tactualIsFunc  bool\n\tactual        any\n\targsToForward []any\n\n\ttimeoutInterval    time.Duration\n\tpollingInterval    time.Duration\n\tmustPassRepeatedly int\n\tctx                context.Context\n\toffset             int\n\tg                  *Gomega\n}\n\nfunc NewAsyncAssertion(asyncType AsyncAssertionType, actualInput any, g *Gomega, timeoutInterval time.Duration, pollingInterval time.Duration, mustPassRepeatedly int, ctx context.Context, offset int) *AsyncAssertion {\n\tout := &AsyncAssertion{\n\t\tasyncType:          asyncType,\n\t\ttimeoutInterval:    timeoutInterval,\n\t\tpollingInterval:    pollingInterval,\n\t\tmustPassRepeatedly: mustPassRepeatedly,\n\t\toffset:             offset,\n\t\tctx:                ctx,\n\t\tg:                  g,\n\t}\n\n\tout.actual = actualInput\n\tif actualInput != nil && reflect.TypeOf(actualInput).Kind() == reflect.Func {\n\t\tout.actualIsFunc = true\n\t}\n\n\treturn out\n}\n\nfunc (assertion *AsyncAssertion) WithOffset(offset int) types.AsyncAssertion {\n\tassertion.offset = offset\n\treturn assertion\n}\n\nfunc (assertion *AsyncAssertion) WithTimeout(interval time.Duration) types.AsyncAssertion {\n\tassertion.timeoutInterval = interval\n\treturn assertion\n}\n\nfunc (assertion *AsyncAssertion) WithPolling(interval time.Duration) types.AsyncAssertion {\n\tassertion.pollingInterval = interval\n\treturn assertion\n}\n\nfunc (assertion *AsyncAssertion) Within(timeout time.Duration) types.AsyncAssertion {\n\tassertion.timeoutInterval = timeout\n\treturn assertion\n}\n\nfunc (assertion *AsyncAssertion) ProbeEvery(interval time.Duration) types.AsyncAssertion {\n\tassertion.pollingInterval = interval\n\treturn assertion\n}\n\nfunc (assertion *AsyncAssertion) WithContext(ctx context.Context) types.AsyncAssertion {\n\tassertion.ctx = ctx\n\treturn assertion\n}\n\nfunc (assertion *AsyncAssertion) WithArguments(argsToForward ...any) types.AsyncAssertion {\n\tassertion.argsToForward = argsToForward\n\treturn assertion\n}\n\nfunc (assertion *AsyncAssertion) MustPassRepeatedly(count int) types.AsyncAssertion {\n\tassertion.mustPassRepeatedly = count\n\treturn assertion\n}\n\nfunc (assertion *AsyncAssertion) Should(matcher types.GomegaMatcher, optionalDescription ...any) bool {\n\tassertion.g.THelper()\n\tvetOptionalDescription(\"Asynchronous assertion\", optionalDescription...)\n\treturn assertion.match(matcher, true, optionalDescription...)\n}\n\nfunc (assertion *AsyncAssertion) To(matcher types.GomegaMatcher, optionalDescription ...any) bool {\n\treturn assertion.Should(matcher, optionalDescription...)\n}\n\nfunc (assertion *AsyncAssertion) ShouldNot(matcher types.GomegaMatcher, optionalDescription ...any) bool {\n\tassertion.g.THelper()\n\tvetOptionalDescription(\"Asynchronous assertion\", optionalDescription...)\n\treturn assertion.match(matcher, false, optionalDescription...)\n}\n\nfunc (assertion *AsyncAssertion) ToNot(matcher types.GomegaMatcher, optionalDescription ...any) bool {\n\treturn assertion.ShouldNot(matcher, optionalDescription...)\n}\n\nfunc (assertion *AsyncAssertion) NotTo(matcher types.GomegaMatcher, optionalDescription ...any) bool {\n\treturn assertion.ShouldNot(matcher, optionalDescription...)\n}\n\nfunc (assertion *AsyncAssertion) buildDescription(optionalDescription ...any) string {\n\tswitch len(optionalDescription) {\n\tcase 0:\n\t\treturn \"\"\n\tcase 1:\n\t\tif describe, ok := optionalDescription[0].(func() string); ok {\n\t\t\treturn describe() + \"\\n\"\n\t\t}\n\t}\n\treturn fmt.Sprintf(optionalDescription[0].(string), optionalDescription[1:]...) + \"\\n\"\n}\n\nfunc (assertion *AsyncAssertion) processReturnValues(values []reflect.Value) (any, error) {\n\tif len(values) == 0 {\n\t\treturn nil, &asyncPolledActualError{\n\t\t\tmessage: fmt.Sprintf(\"The function passed to %s did not return any values\", assertion.asyncType),\n\t\t}\n\t}\n\n\tactual := values[0].Interface()\n\tif _, ok := AsPollingSignalError(actual); ok {\n\t\treturn actual, actual.(error)\n\t}\n\n\tvar err error\n\tfor i, extraValue := range values[1:] {\n\t\textra := extraValue.Interface()\n\t\tif extra == nil {\n\t\t\tcontinue\n\t\t}\n\t\tif _, ok := AsPollingSignalError(extra); ok {\n\t\t\treturn actual, extra.(error)\n\t\t}\n\t\textraType := reflect.TypeOf(extra)\n\t\tzero := reflect.Zero(extraType).Interface()\n\t\tif reflect.DeepEqual(extra, zero) {\n\t\t\tcontinue\n\t\t}\n\t\tif i == len(values)-2 && extraType.Implements(errInterface) {\n\t\t\terr = extra.(error)\n\t\t}\n\t\tif err == nil {\n\t\t\terr = &asyncPolledActualError{\n\t\t\t\tmessage: fmt.Sprintf(\"The function passed to %s had an unexpected non-nil/non-zero return value at index %d:\\n%s\", assertion.asyncType, i+1, format.Object(extra, 1)),\n\t\t\t}\n\t\t}\n\t}\n\n\treturn actual, err\n}\n\nfunc (assertion *AsyncAssertion) invalidFunctionError(t reflect.Type) error {\n\treturn fmt.Errorf(`The function passed to %s had an invalid signature of %s.  Functions passed to %s must either:\n\n\t(a) have return values or\n\t(b) take a Gomega interface as their first argument and use that Gomega instance to make assertions.\n\nYou can learn more at https://onsi.github.io/gomega/#eventually\n`, assertion.asyncType, t, assertion.asyncType)\n}\n\nfunc (assertion *AsyncAssertion) noConfiguredContextForFunctionError() error {\n\treturn fmt.Errorf(`The function passed to %s requested a context.Context, but no context has been provided.  Please pass one in using %s().WithContext().\n\nYou can learn more at https://onsi.github.io/gomega/#eventually\n`, assertion.asyncType, assertion.asyncType)\n}\n\nfunc (assertion *AsyncAssertion) argumentMismatchError(t reflect.Type, numProvided int) error {\n\thave := \"have\"\n\tif numProvided == 1 {\n\t\thave = \"has\"\n\t}\n\treturn fmt.Errorf(`The function passed to %s has signature %s takes %d arguments but %d %s been provided.  Please use %s().WithArguments() to pass the correct set of arguments.\n\nYou can learn more at https://onsi.github.io/gomega/#eventually\n`, assertion.asyncType, t, t.NumIn(), numProvided, have, assertion.asyncType)\n}\n\nfunc (assertion *AsyncAssertion) invalidMustPassRepeatedlyError(reason string) error {\n\treturn fmt.Errorf(`Invalid use of MustPassRepeatedly with %s %s\n\nYou can learn more at https://onsi.github.io/gomega/#eventually\n`, assertion.asyncType, reason)\n}\n\nfunc (assertion *AsyncAssertion) buildActualPoller() (func() (any, error), error) {\n\tif !assertion.actualIsFunc {\n\t\treturn func() (any, error) { return assertion.actual, nil }, nil\n\t}\n\tactualValue := reflect.ValueOf(assertion.actual)\n\tactualType := reflect.TypeOf(assertion.actual)\n\tnumIn, numOut, isVariadic := actualType.NumIn(), actualType.NumOut(), actualType.IsVariadic()\n\n\tif numIn == 0 && numOut == 0 {\n\t\treturn nil, assertion.invalidFunctionError(actualType)\n\t}\n\ttakesGomega, takesContext := false, false\n\tif numIn > 0 {\n\t\ttakesGomega, takesContext = actualType.In(0).Implements(gomegaType), actualType.In(0).Implements(contextType)\n\t}\n\tif takesGomega && numIn > 1 && actualType.In(1).Implements(contextType) {\n\t\ttakesContext = true\n\t}\n\tif takesContext && len(assertion.argsToForward) > 0 && reflect.TypeOf(assertion.argsToForward[0]).Implements(contextType) {\n\t\ttakesContext = false\n\t}\n\tif !takesGomega && numOut == 0 {\n\t\treturn nil, assertion.invalidFunctionError(actualType)\n\t}\n\tif takesContext && assertion.ctx == nil {\n\t\treturn nil, assertion.noConfiguredContextForFunctionError()\n\t}\n\n\tvar assertionFailure error\n\tinValues := []reflect.Value{}\n\tif takesGomega {\n\t\tinValues = append(inValues, reflect.ValueOf(NewGomega(assertion.g.DurationBundle).ConfigureWithFailHandler(func(message string, callerSkip ...int) {\n\t\t\tskip := 0\n\t\t\tif len(callerSkip) > 0 {\n\t\t\t\tskip = callerSkip[0]\n\t\t\t}\n\t\t\t_, file, line, _ := runtime.Caller(skip + 1)\n\t\t\tassertionFailure = &asyncPolledActualError{\n\t\t\t\tmessage: fmt.Sprintf(\"The function passed to %s failed at %s:%d with:\\n%s\", assertion.asyncType, file, line, message),\n\t\t\t}\n\t\t\t// we throw an asyncGomegaHaltExecutionError so that defer GinkgoRecover() can catch this error if the user makes an assertion in a goroutine\n\t\t\tpanic(asyncGomegaHaltExecutionError{})\n\t\t})))\n\t}\n\tif takesContext {\n\t\tinValues = append(inValues, reflect.ValueOf(assertion.ctx))\n\t}\n\tfor _, arg := range assertion.argsToForward {\n\t\tinValues = append(inValues, reflect.ValueOf(arg))\n\t}\n\n\tif !isVariadic && numIn != len(inValues) {\n\t\treturn nil, assertion.argumentMismatchError(actualType, len(inValues))\n\t} else if isVariadic && len(inValues) < numIn-1 {\n\t\treturn nil, assertion.argumentMismatchError(actualType, len(inValues))\n\t}\n\n\tif assertion.mustPassRepeatedly != 1 && assertion.asyncType != AsyncAssertionTypeEventually {\n\t\treturn nil, assertion.invalidMustPassRepeatedlyError(\"it can only be used with Eventually\")\n\t}\n\tif assertion.mustPassRepeatedly < 1 {\n\t\treturn nil, assertion.invalidMustPassRepeatedlyError(\"parameter can't be < 1\")\n\t}\n\n\treturn func() (actual any, err error) {\n\t\tvar values []reflect.Value\n\t\tassertionFailure = nil\n\t\tdefer func() {\n\t\t\tif numOut == 0 && takesGomega {\n\t\t\t\tactual = assertionFailure\n\t\t\t} else {\n\t\t\t\tactual, err = assertion.processReturnValues(values)\n\t\t\t\t_, isAsyncError := AsPollingSignalError(err)\n\t\t\t\tif assertionFailure != nil && !isAsyncError {\n\t\t\t\t\terr = assertionFailure\n\t\t\t\t}\n\t\t\t}\n\t\t\tif e := recover(); e != nil {\n\t\t\t\tif _, isAsyncError := AsPollingSignalError(e); isAsyncError {\n\t\t\t\t\terr = e.(error)\n\t\t\t\t} else if assertionFailure == nil {\n\t\t\t\t\tpanic(e)\n\t\t\t\t}\n\t\t\t}\n\t\t}()\n\t\tvalues = actualValue.Call(inValues)\n\t\treturn\n\t}, nil\n}\n\nfunc (assertion *AsyncAssertion) afterTimeout() <-chan time.Time {\n\tif assertion.timeoutInterval >= 0 {\n\t\treturn time.After(assertion.timeoutInterval)\n\t}\n\n\tif assertion.asyncType == AsyncAssertionTypeConsistently {\n\t\treturn time.After(assertion.g.DurationBundle.ConsistentlyDuration)\n\t} else {\n\t\tif assertion.ctx == nil || assertion.g.DurationBundle.EnforceDefaultTimeoutsWhenUsingContexts {\n\t\t\treturn time.After(assertion.g.DurationBundle.EventuallyTimeout)\n\t\t} else {\n\t\t\treturn nil\n\t\t}\n\t}\n}\n\nfunc (assertion *AsyncAssertion) afterPolling() <-chan time.Time {\n\tif assertion.pollingInterval >= 0 {\n\t\treturn time.After(assertion.pollingInterval)\n\t}\n\tif assertion.asyncType == AsyncAssertionTypeConsistently {\n\t\treturn time.After(assertion.g.DurationBundle.ConsistentlyPollingInterval)\n\t} else {\n\t\treturn time.After(assertion.g.DurationBundle.EventuallyPollingInterval)\n\t}\n}\n\nfunc (assertion *AsyncAssertion) matcherSaysStopTrying(matcher types.GomegaMatcher, value any) bool {\n\tif assertion.actualIsFunc || types.MatchMayChangeInTheFuture(matcher, value) {\n\t\treturn false\n\t}\n\treturn true\n}\n\nfunc (assertion *AsyncAssertion) pollMatcher(matcher types.GomegaMatcher, value any) (matches bool, err error) {\n\tdefer func() {\n\t\tif e := recover(); e != nil {\n\t\t\tif _, isAsyncError := AsPollingSignalError(e); isAsyncError {\n\t\t\t\terr = e.(error)\n\t\t\t} else {\n\t\t\t\tpanic(e)\n\t\t\t}\n\t\t}\n\t}()\n\n\tmatches, err = matcher.Match(value)\n\n\treturn\n}\n\nfunc (assertion *AsyncAssertion) match(matcher types.GomegaMatcher, desiredMatch bool, optionalDescription ...any) bool {\n\ttimer := time.Now()\n\ttimeout := assertion.afterTimeout()\n\tlock := sync.Mutex{}\n\n\tvar matches, hasLastValidActual bool\n\tvar actual, lastValidActual any\n\tvar actualErr, matcherErr error\n\tvar oracleMatcherSaysStop bool\n\n\tassertion.g.THelper()\n\n\tpollActual, buildActualPollerErr := assertion.buildActualPoller()\n\tif buildActualPollerErr != nil {\n\t\tassertion.g.Fail(buildActualPollerErr.Error(), 2+assertion.offset)\n\t\treturn false\n\t}\n\n\tactual, actualErr = pollActual()\n\tif actualErr == nil {\n\t\tlastValidActual = actual\n\t\thasLastValidActual = true\n\t\toracleMatcherSaysStop = assertion.matcherSaysStopTrying(matcher, actual)\n\t\tmatches, matcherErr = assertion.pollMatcher(matcher, actual)\n\t}\n\n\trenderError := func(preamble string, err error) string {\n\t\tmessage := \"\"\n\t\tif pollingSignalErr, ok := AsPollingSignalError(err); ok {\n\t\t\tmessage = err.Error()\n\t\t\tfor _, attachment := range pollingSignalErr.Attachments {\n\t\t\t\tmessage += fmt.Sprintf(\"\\n%s:\\n\", attachment.Description)\n\t\t\t\tmessage += format.Object(attachment.Object, 1)\n\t\t\t}\n\t\t} else {\n\t\t\tmessage = preamble + \"\\n\" + format.Object(err, 1)\n\t\t}\n\t\treturn message\n\t}\n\n\tmessageGenerator := func() string {\n\t\t// can be called out of band by Ginkgo if the user requests a progress report\n\t\tlock.Lock()\n\t\tdefer lock.Unlock()\n\t\tmessage := \"\"\n\n\t\tif actualErr == nil {\n\t\t\tif matcherErr == nil {\n\t\t\t\tif desiredMatch != matches {\n\t\t\t\t\tif desiredMatch {\n\t\t\t\t\t\tmessage += matcher.FailureMessage(actual)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmessage += matcher.NegatedFailureMessage(actual)\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif assertion.asyncType == AsyncAssertionTypeConsistently {\n\t\t\t\t\t\tmessage += \"There is no failure as the matcher passed to Consistently has not yet failed\"\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmessage += \"There is no failure as the matcher passed to Eventually succeeded on its most recent iteration\"\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tvar fgErr formattedGomegaError\n\t\t\t\tif errors.As(matcherErr, &fgErr) {\n\t\t\t\t\tmessage += fgErr.FormattedGomegaError() + \"\\n\"\n\t\t\t\t} else {\n\t\t\t\t\tmessage += renderError(fmt.Sprintf(\"The matcher passed to %s returned the following error:\", assertion.asyncType), matcherErr)\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tvar fgErr formattedGomegaError\n\t\t\tif errors.As(actualErr, &fgErr) {\n\t\t\t\tmessage += fgErr.FormattedGomegaError() + \"\\n\"\n\t\t\t} else {\n\t\t\t\tmessage += renderError(fmt.Sprintf(\"The function passed to %s returned the following error:\", assertion.asyncType), actualErr)\n\t\t\t}\n\t\t\tif hasLastValidActual {\n\t\t\t\tmessage += fmt.Sprintf(\"\\nAt one point, however, the function did return successfully.\\nYet, %s failed because\", assertion.asyncType)\n\t\t\t\t_, e := matcher.Match(lastValidActual)\n\t\t\t\tif e != nil {\n\t\t\t\t\tmessage += renderError(\" the matcher returned the following error:\", e)\n\t\t\t\t} else {\n\t\t\t\t\tmessage += \" the matcher was not satisfied:\\n\"\n\t\t\t\t\tif desiredMatch {\n\t\t\t\t\t\tmessage += matcher.FailureMessage(lastValidActual)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmessage += matcher.NegatedFailureMessage(lastValidActual)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdescription := assertion.buildDescription(optionalDescription...)\n\t\treturn fmt.Sprintf(\"%s%s\", description, message)\n\t}\n\n\tfail := func(preamble string) {\n\t\tassertion.g.THelper()\n\t\tassertion.g.Fail(fmt.Sprintf(\"%s after %.3fs.\\n%s\", preamble, time.Since(timer).Seconds(), messageGenerator()), 3+assertion.offset)\n\t}\n\n\tvar contextDone <-chan struct{}\n\tif assertion.ctx != nil {\n\t\tcontextDone = assertion.ctx.Done()\n\t\tif v, ok := assertion.ctx.Value(\"GINKGO_SPEC_CONTEXT\").(contextWithAttachProgressReporter); ok {\n\t\t\tdetach := v.AttachProgressReporter(messageGenerator)\n\t\t\tdefer detach()\n\t\t}\n\t}\n\n\t// Used to count the number of times in a row a step passed\n\tpassedRepeatedlyCount := 0\n\tfor {\n\t\tvar nextPoll <-chan time.Time = nil\n\t\tvar isTryAgainAfterError = false\n\n\t\tfor _, err := range []error{actualErr, matcherErr} {\n\t\t\tif pollingSignalErr, ok := AsPollingSignalError(err); ok {\n\t\t\t\tif pollingSignalErr.IsStopTrying() {\n\t\t\t\t\tif pollingSignalErr.IsSuccessful() {\n\t\t\t\t\t\tif assertion.asyncType == AsyncAssertionTypeEventually {\n\t\t\t\t\t\t\tfail(\"Told to stop trying (and ignoring call to Successfully(), as it is only relevant with Consistently)\")\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn true // early escape hatch for Consistently\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfail(\"Told to stop trying\")\n\t\t\t\t\t}\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tif pollingSignalErr.IsTryAgainAfter() {\n\t\t\t\t\tnextPoll = time.After(pollingSignalErr.TryAgainDuration())\n\t\t\t\t\tisTryAgainAfterError = true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif actualErr == nil && matcherErr == nil && matches == desiredMatch {\n\t\t\tif assertion.asyncType == AsyncAssertionTypeEventually {\n\t\t\t\tpassedRepeatedlyCount += 1\n\t\t\t\tif passedRepeatedlyCount == assertion.mustPassRepeatedly {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\t\t} else if !isTryAgainAfterError {\n\t\t\tif assertion.asyncType == AsyncAssertionTypeConsistently {\n\t\t\t\tfail(\"Failed\")\n\t\t\t\treturn false\n\t\t\t}\n\t\t\t// Reset the consecutive pass count\n\t\t\tpassedRepeatedlyCount = 0\n\t\t}\n\n\t\tif oracleMatcherSaysStop {\n\t\t\tif assertion.asyncType == AsyncAssertionTypeEventually {\n\t\t\t\tfail(\"No future change is possible.  Bailing out early\")\n\t\t\t\treturn false\n\t\t\t} else {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\n\t\tif nextPoll == nil {\n\t\t\tnextPoll = assertion.afterPolling()\n\t\t}\n\n\t\tselect {\n\t\tcase <-nextPoll:\n\t\t\ta, e := pollActual()\n\t\t\tlock.Lock()\n\t\t\tactual, actualErr = a, e\n\t\t\tlock.Unlock()\n\t\t\tif actualErr == nil {\n\t\t\t\tlock.Lock()\n\t\t\t\tlastValidActual = actual\n\t\t\t\thasLastValidActual = true\n\t\t\t\tlock.Unlock()\n\t\t\t\toracleMatcherSaysStop = assertion.matcherSaysStopTrying(matcher, actual)\n\t\t\t\tm, e := assertion.pollMatcher(matcher, actual)\n\t\t\t\tlock.Lock()\n\t\t\t\tmatches, matcherErr = m, e\n\t\t\t\tlock.Unlock()\n\t\t\t}\n\t\tcase <-contextDone:\n\t\t\terr := context.Cause(assertion.ctx)\n\t\t\tif err != nil && err != context.Canceled {\n\t\t\t\tfail(fmt.Sprintf(\"Context was cancelled (cause: %s)\", err))\n\t\t\t} else {\n\t\t\t\tfail(\"Context was cancelled\")\n\t\t\t}\n\t\t\treturn false\n\t\tcase <-timeout:\n\t\t\tif assertion.asyncType == AsyncAssertionTypeEventually {\n\t\t\t\tfail(\"Timed out\")\n\t\t\t\treturn false\n\t\t\t} else {\n\t\t\t\tif isTryAgainAfterError {\n\t\t\t\t\tfail(\"Timed out while waiting on TryAgainAfter\")\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/internal/duration_bundle.go",
    "content": "package internal\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"reflect\"\n\t\"time\"\n)\n\ntype DurationBundle struct {\n\tEventuallyTimeout                       time.Duration\n\tEventuallyPollingInterval               time.Duration\n\tConsistentlyDuration                    time.Duration\n\tConsistentlyPollingInterval             time.Duration\n\tEnforceDefaultTimeoutsWhenUsingContexts bool\n}\n\nconst (\n\tEventuallyTimeoutEnvVarName         = \"GOMEGA_DEFAULT_EVENTUALLY_TIMEOUT\"\n\tEventuallyPollingIntervalEnvVarName = \"GOMEGA_DEFAULT_EVENTUALLY_POLLING_INTERVAL\"\n\n\tConsistentlyDurationEnvVarName        = \"GOMEGA_DEFAULT_CONSISTENTLY_DURATION\"\n\tConsistentlyPollingIntervalEnvVarName = \"GOMEGA_DEFAULT_CONSISTENTLY_POLLING_INTERVAL\"\n\n\tEnforceDefaultTimeoutsWhenUsingContextsEnvVarName = \"GOMEGA_ENFORCE_DEFAULT_TIMEOUTS_WHEN_USING_CONTEXTS\"\n)\n\nfunc FetchDefaultDurationBundle() DurationBundle {\n\t_, EnforceDefaultTimeoutsWhenUsingContexts := os.LookupEnv(EnforceDefaultTimeoutsWhenUsingContextsEnvVarName)\n\treturn DurationBundle{\n\t\tEventuallyTimeout:         durationFromEnv(EventuallyTimeoutEnvVarName, time.Second),\n\t\tEventuallyPollingInterval: durationFromEnv(EventuallyPollingIntervalEnvVarName, 10*time.Millisecond),\n\n\t\tConsistentlyDuration:                    durationFromEnv(ConsistentlyDurationEnvVarName, 100*time.Millisecond),\n\t\tConsistentlyPollingInterval:             durationFromEnv(ConsistentlyPollingIntervalEnvVarName, 10*time.Millisecond),\n\t\tEnforceDefaultTimeoutsWhenUsingContexts: EnforceDefaultTimeoutsWhenUsingContexts,\n\t}\n}\n\nfunc durationFromEnv(key string, defaultDuration time.Duration) time.Duration {\n\tvalue := os.Getenv(key)\n\tif value == \"\" {\n\t\treturn defaultDuration\n\t}\n\tduration, err := time.ParseDuration(value)\n\tif err != nil {\n\t\tpanic(fmt.Sprintf(\"Expected a duration when using %s!  Parse error %v\", key, err))\n\t}\n\treturn duration\n}\n\nfunc toDuration(input any) (time.Duration, error) {\n\tduration, ok := input.(time.Duration)\n\tif ok {\n\t\treturn duration, nil\n\t}\n\n\tvalue := reflect.ValueOf(input)\n\tkind := reflect.TypeOf(input).Kind()\n\n\tif reflect.Int <= kind && kind <= reflect.Int64 {\n\t\treturn time.Duration(value.Int()) * time.Second, nil\n\t} else if reflect.Uint <= kind && kind <= reflect.Uint64 {\n\t\treturn time.Duration(value.Uint()) * time.Second, nil\n\t} else if reflect.Float32 <= kind && kind <= reflect.Float64 {\n\t\treturn time.Duration(value.Float() * float64(time.Second)), nil\n\t} else if reflect.String == kind {\n\t\tduration, err := time.ParseDuration(value.String())\n\t\tif err != nil {\n\t\t\treturn 0, fmt.Errorf(\"%#v is not a valid parsable duration string: %w\", input, err)\n\t\t}\n\t\treturn duration, nil\n\t}\n\n\treturn 0, fmt.Errorf(\"%#v is not a valid interval. Must be a time.Duration, a parsable duration string, or a number.\", input)\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/internal/gomega.go",
    "content": "package internal\n\nimport (\n\t\"context\"\n\t\"time\"\n\n\t\"github.com/onsi/gomega/types\"\n)\n\ntype Gomega struct {\n\tFail           types.GomegaFailHandler\n\tTHelper        func()\n\tDurationBundle DurationBundle\n}\n\nfunc NewGomega(bundle DurationBundle) *Gomega {\n\treturn &Gomega{\n\t\tFail:           nil,\n\t\tTHelper:        nil,\n\t\tDurationBundle: bundle,\n\t}\n}\n\nfunc (g *Gomega) IsConfigured() bool {\n\treturn g.Fail != nil && g.THelper != nil\n}\n\nfunc (g *Gomega) ConfigureWithFailHandler(fail types.GomegaFailHandler) *Gomega {\n\tg.Fail = fail\n\tg.THelper = func() {}\n\treturn g\n}\n\nfunc (g *Gomega) ConfigureWithT(t types.GomegaTestingT) *Gomega {\n\tg.Fail = func(message string, _ ...int) {\n\t\tt.Helper()\n\t\tt.Fatalf(\"\\n%s\", message)\n\t}\n\tg.THelper = t.Helper\n\treturn g\n}\n\nfunc (g *Gomega) Ω(actual any, extra ...any) types.Assertion {\n\treturn g.ExpectWithOffset(0, actual, extra...)\n}\n\nfunc (g *Gomega) Expect(actual any, extra ...any) types.Assertion {\n\treturn g.ExpectWithOffset(0, actual, extra...)\n}\n\nfunc (g *Gomega) ExpectWithOffset(offset int, actual any, extra ...any) types.Assertion {\n\treturn NewAssertion(actual, g, offset, extra...)\n}\n\nfunc (g *Gomega) Eventually(actualOrCtx any, args ...any) types.AsyncAssertion {\n\treturn g.makeAsyncAssertion(AsyncAssertionTypeEventually, 0, actualOrCtx, args...)\n}\n\nfunc (g *Gomega) EventuallyWithOffset(offset int, actualOrCtx any, args ...any) types.AsyncAssertion {\n\treturn g.makeAsyncAssertion(AsyncAssertionTypeEventually, offset, actualOrCtx, args...)\n}\n\nfunc (g *Gomega) Consistently(actualOrCtx any, args ...any) types.AsyncAssertion {\n\treturn g.makeAsyncAssertion(AsyncAssertionTypeConsistently, 0, actualOrCtx, args...)\n}\n\nfunc (g *Gomega) ConsistentlyWithOffset(offset int, actualOrCtx any, args ...any) types.AsyncAssertion {\n\treturn g.makeAsyncAssertion(AsyncAssertionTypeConsistently, offset, actualOrCtx, args...)\n}\n\nfunc (g *Gomega) makeAsyncAssertion(asyncAssertionType AsyncAssertionType, offset int, actualOrCtx any, args ...any) types.AsyncAssertion {\n\tbaseOffset := 3\n\ttimeoutInterval := -time.Duration(1)\n\tpollingInterval := -time.Duration(1)\n\tintervals := []any{}\n\tvar ctx context.Context\n\n\tactual := actualOrCtx\n\tstartingIndex := 0\n\tif _, isCtx := actualOrCtx.(context.Context); isCtx && len(args) > 0 {\n\t\t// the first argument is a context, we should accept it as the context _only if_ it is **not** the only argument **and** the second argument is not a parseable duration\n\t\t// this is due to an unfortunate ambiguity in early version of Gomega in which multi-type durations are allowed after the actual\n\t\tif _, err := toDuration(args[0]); err != nil {\n\t\t\tctx = actualOrCtx.(context.Context)\n\t\t\tactual = args[0]\n\t\t\tstartingIndex = 1\n\t\t}\n\t}\n\n\tfor _, arg := range args[startingIndex:] {\n\t\tswitch v := arg.(type) {\n\t\tcase context.Context:\n\t\t\tctx = v\n\t\tdefault:\n\t\t\tintervals = append(intervals, arg)\n\t\t}\n\t}\n\tvar err error\n\tif len(intervals) > 0 {\n\t\ttimeoutInterval, err = toDuration(intervals[0])\n\t\tif err != nil {\n\t\t\tg.Fail(err.Error(), offset+baseOffset)\n\t\t}\n\t}\n\tif len(intervals) > 1 {\n\t\tpollingInterval, err = toDuration(intervals[1])\n\t\tif err != nil {\n\t\t\tg.Fail(err.Error(), offset+baseOffset)\n\t\t}\n\t}\n\n\treturn NewAsyncAssertion(asyncAssertionType, actual, g, timeoutInterval, pollingInterval, 1, ctx, offset)\n}\n\nfunc (g *Gomega) SetDefaultEventuallyTimeout(t time.Duration) {\n\tg.DurationBundle.EventuallyTimeout = t\n}\n\nfunc (g *Gomega) SetDefaultEventuallyPollingInterval(t time.Duration) {\n\tg.DurationBundle.EventuallyPollingInterval = t\n}\n\nfunc (g *Gomega) SetDefaultConsistentlyDuration(t time.Duration) {\n\tg.DurationBundle.ConsistentlyDuration = t\n}\n\nfunc (g *Gomega) SetDefaultConsistentlyPollingInterval(t time.Duration) {\n\tg.DurationBundle.ConsistentlyPollingInterval = t\n}\n\nfunc (g *Gomega) EnforceDefaultTimeoutsWhenUsingContexts() {\n\tg.DurationBundle.EnforceDefaultTimeoutsWhenUsingContexts = true\n}\n\nfunc (g *Gomega) DisableDefaultTimeoutsWhenUsingContext() {\n\tg.DurationBundle.EnforceDefaultTimeoutsWhenUsingContexts = false\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/internal/gutil/post_ioutil.go",
    "content": "//go:build go1.16\n// +build go1.16\n\n// Package gutil is a replacement for ioutil, which should not be used in new\n// code as of Go 1.16. With Go 1.16 and higher, this implementation\n// uses the ioutil replacement functions in \"io\" and \"os\" with some\n// Gomega specifics. This means that we should not get deprecation warnings\n// for ioutil when they are added.\npackage gutil\n\nimport (\n\t\"io\"\n\t\"os\"\n)\n\nfunc NopCloser(r io.Reader) io.ReadCloser {\n\treturn io.NopCloser(r)\n}\n\nfunc ReadAll(r io.Reader) ([]byte, error) {\n\treturn io.ReadAll(r)\n}\n\nfunc ReadDir(dirname string) ([]string, error) {\n\tentries, err := os.ReadDir(dirname)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar names []string\n\tfor _, entry := range entries {\n\t\tnames = append(names, entry.Name())\n\t}\n\n\treturn names, nil\n}\n\nfunc ReadFile(filename string) ([]byte, error) {\n\treturn os.ReadFile(filename)\n}\n\nfunc MkdirTemp(dir, pattern string) (string, error) {\n\treturn os.MkdirTemp(dir, pattern)\n}\n\nfunc WriteFile(filename string, data []byte) error {\n\treturn os.WriteFile(filename, data, 0644)\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/internal/gutil/using_ioutil.go",
    "content": "//go:build !go1.16\n// +build !go1.16\n\n// Package gutil is a replacement for ioutil, which should not be used in new\n// code as of Go 1.16. With Go 1.15 and lower, this implementation\n// uses the ioutil functions, meaning that although Gomega is not officially\n// supported on these versions, it is still likely to work.\npackage gutil\n\nimport (\n\t\"io\"\n\t\"io/ioutil\"\n)\n\nfunc NopCloser(r io.Reader) io.ReadCloser {\n\treturn ioutil.NopCloser(r)\n}\n\nfunc ReadAll(r io.Reader) ([]byte, error) {\n\treturn ioutil.ReadAll(r)\n}\n\nfunc ReadDir(dirname string) ([]string, error) {\n\tfiles, err := ioutil.ReadDir(dirname)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar names []string\n\tfor _, file := range files {\n\t\tnames = append(names, file.Name())\n\t}\n\n\treturn names, nil\n}\n\nfunc ReadFile(filename string) ([]byte, error) {\n\treturn ioutil.ReadFile(filename)\n}\n\nfunc MkdirTemp(dir, pattern string) (string, error) {\n\treturn ioutil.TempDir(dir, pattern)\n}\n\nfunc WriteFile(filename string, data []byte) error {\n\treturn ioutil.WriteFile(filename, data, 0644)\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/internal/polling_signal_error.go",
    "content": "package internal\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"time\"\n)\n\ntype PollingSignalErrorType int\n\nconst (\n\tPollingSignalErrorTypeStopTrying PollingSignalErrorType = iota\n\tPollingSignalErrorTypeTryAgainAfter\n)\n\ntype PollingSignalError interface {\n\terror\n\tWrap(err error) PollingSignalError\n\tAttach(description string, obj any) PollingSignalError\n\tSuccessfully() PollingSignalError\n\tNow()\n}\n\nvar StopTrying = func(message string) PollingSignalError {\n\treturn &PollingSignalErrorImpl{\n\t\tmessage:                message,\n\t\tpollingSignalErrorType: PollingSignalErrorTypeStopTrying,\n\t}\n}\n\nvar TryAgainAfter = func(duration time.Duration) PollingSignalError {\n\treturn &PollingSignalErrorImpl{\n\t\tmessage:                fmt.Sprintf(\"told to try again after %s\", duration),\n\t\tduration:               duration,\n\t\tpollingSignalErrorType: PollingSignalErrorTypeTryAgainAfter,\n\t}\n}\n\ntype PollingSignalErrorAttachment struct {\n\tDescription string\n\tObject      any\n}\n\ntype PollingSignalErrorImpl struct {\n\tmessage                string\n\twrappedErr             error\n\tpollingSignalErrorType PollingSignalErrorType\n\tduration               time.Duration\n\tsuccessful             bool\n\tAttachments            []PollingSignalErrorAttachment\n}\n\nfunc (s *PollingSignalErrorImpl) Wrap(err error) PollingSignalError {\n\ts.wrappedErr = err\n\treturn s\n}\n\nfunc (s *PollingSignalErrorImpl) Attach(description string, obj any) PollingSignalError {\n\ts.Attachments = append(s.Attachments, PollingSignalErrorAttachment{description, obj})\n\treturn s\n}\n\nfunc (s *PollingSignalErrorImpl) Error() string {\n\tif s.wrappedErr == nil {\n\t\treturn s.message\n\t} else {\n\t\treturn s.message + \": \" + s.wrappedErr.Error()\n\t}\n}\n\nfunc (s *PollingSignalErrorImpl) Unwrap() error {\n\tif s == nil {\n\t\treturn nil\n\t}\n\treturn s.wrappedErr\n}\n\nfunc (s *PollingSignalErrorImpl) Successfully() PollingSignalError {\n\ts.successful = true\n\treturn s\n}\n\nfunc (s *PollingSignalErrorImpl) Now() {\n\tpanic(s)\n}\n\nfunc (s *PollingSignalErrorImpl) IsStopTrying() bool {\n\treturn s.pollingSignalErrorType == PollingSignalErrorTypeStopTrying\n}\n\nfunc (s *PollingSignalErrorImpl) IsSuccessful() bool {\n\treturn s.successful\n}\n\nfunc (s *PollingSignalErrorImpl) IsTryAgainAfter() bool {\n\treturn s.pollingSignalErrorType == PollingSignalErrorTypeTryAgainAfter\n}\n\nfunc (s *PollingSignalErrorImpl) TryAgainDuration() time.Duration {\n\treturn s.duration\n}\n\nfunc AsPollingSignalError(actual any) (*PollingSignalErrorImpl, bool) {\n\tif actual == nil {\n\t\treturn nil, false\n\t}\n\tif actualErr, ok := actual.(error); ok {\n\t\tvar target *PollingSignalErrorImpl\n\t\tif errors.As(actualErr, &target) {\n\t\t\treturn target, true\n\t\t} else {\n\t\t\treturn nil, false\n\t\t}\n\t}\n\n\treturn nil, false\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/internal/vetoptdesc.go",
    "content": "package internal\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/onsi/gomega/types\"\n)\n\n// vetOptionalDescription vets the optional description args: if it finds any\n// Gomega matcher at the beginning it panics. This allows for rendering Gomega\n// matchers as part of an optional Description, as long as they're not in the\n// first slot.\nfunc vetOptionalDescription(assertion string, optionalDescription ...any) {\n\tif len(optionalDescription) == 0 {\n\t\treturn\n\t}\n\tif _, isGomegaMatcher := optionalDescription[0].(types.GomegaMatcher); isGomegaMatcher {\n\t\tpanic(fmt.Sprintf(\"%s has a GomegaMatcher as the first element of optionalDescription.\\n\\t\"+\n\t\t\t\"Do you mean to use And/Or/SatisfyAll/SatisfyAny to combine multiple matchers?\",\n\t\t\tassertion))\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/and.go",
    "content": "package matchers\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/onsi/gomega/format\"\n\t\"github.com/onsi/gomega/types\"\n)\n\ntype AndMatcher struct {\n\tMatchers []types.GomegaMatcher\n\n\t// state\n\tfirstFailedMatcher types.GomegaMatcher\n}\n\nfunc (m *AndMatcher) Match(actual any) (success bool, err error) {\n\tm.firstFailedMatcher = nil\n\tfor _, matcher := range m.Matchers {\n\t\tsuccess, err := matcher.Match(actual)\n\t\tif !success || err != nil {\n\t\t\tm.firstFailedMatcher = matcher\n\t\t\treturn false, err\n\t\t}\n\t}\n\treturn true, nil\n}\n\nfunc (m *AndMatcher) FailureMessage(actual any) (message string) {\n\treturn m.firstFailedMatcher.FailureMessage(actual)\n}\n\nfunc (m *AndMatcher) NegatedFailureMessage(actual any) (message string) {\n\t// not the most beautiful list of matchers, but not bad either...\n\treturn format.Message(actual, fmt.Sprintf(\"To not satisfy all of these matchers: %s\", m.Matchers))\n}\n\nfunc (m *AndMatcher) MatchMayChangeInTheFuture(actual any) bool {\n\t/*\n\t\tExample with 3 matchers: A, B, C\n\n\t\tMatch evaluates them: T, F, <?>  => F\n\t\tSo match is currently F, what should MatchMayChangeInTheFuture() return?\n\t\tSeems like it only depends on B, since currently B MUST change to allow the result to become T\n\n\t\tMatch eval: T, T, T  => T\n\t\tSo match is currently T, what should MatchMayChangeInTheFuture() return?\n\t\tSeems to depend on ANY of them being able to change to F.\n\t*/\n\n\tif m.firstFailedMatcher == nil {\n\t\t// so all matchers succeeded.. Any one of them changing would change the result.\n\t\tfor _, matcher := range m.Matchers {\n\t\t\tif types.MatchMayChangeInTheFuture(matcher, actual) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\treturn false // none of were going to change\n\t}\n\t// one of the matchers failed.. it must be able to change in order to affect the result\n\treturn types.MatchMayChangeInTheFuture(m.firstFailedMatcher, actual)\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/assignable_to_type_of_matcher.go",
    "content": "// untested sections: 2\n\npackage matchers\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\n\t\"github.com/onsi/gomega/format\"\n)\n\ntype AssignableToTypeOfMatcher struct {\n\tExpected any\n}\n\nfunc (matcher *AssignableToTypeOfMatcher) Match(actual any) (success bool, err error) {\n\tif actual == nil && matcher.Expected == nil {\n\t\treturn false, fmt.Errorf(\"Refusing to compare <nil> to <nil>.\\nBe explicit and use BeNil() instead.  This is to avoid mistakes where both sides of an assertion are erroneously uninitialized.\")\n\t} else if matcher.Expected == nil {\n\t\treturn false, fmt.Errorf(\"Refusing to compare type to <nil>.\\nBe explicit and use BeNil() instead.  This is to avoid mistakes where both sides of an assertion are erroneously uninitialized.\")\n\t} else if actual == nil {\n\t\treturn false, nil\n\t}\n\n\tactualType := reflect.TypeOf(actual)\n\texpectedType := reflect.TypeOf(matcher.Expected)\n\n\treturn actualType.AssignableTo(expectedType), nil\n}\n\nfunc (matcher *AssignableToTypeOfMatcher) FailureMessage(actual any) string {\n\treturn format.Message(actual, fmt.Sprintf(\"to be assignable to the type: %T\", matcher.Expected))\n}\n\nfunc (matcher *AssignableToTypeOfMatcher) NegatedFailureMessage(actual any) string {\n\treturn format.Message(actual, fmt.Sprintf(\"not to be assignable to the type: %T\", matcher.Expected))\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/attributes_slice.go",
    "content": "package matchers\n\nimport (\n\t\"encoding/xml\"\n\t\"strings\"\n)\n\ntype attributesSlice []xml.Attr\n\nfunc (attrs attributesSlice) Len() int { return len(attrs) }\nfunc (attrs attributesSlice) Less(i, j int) bool {\n\treturn strings.Compare(attrs[i].Name.Local, attrs[j].Name.Local) == -1\n}\nfunc (attrs attributesSlice) Swap(i, j int) { attrs[i], attrs[j] = attrs[j], attrs[i] }\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/be_a_directory.go",
    "content": "// untested sections: 5\n\npackage matchers\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\n\t\"github.com/onsi/gomega/format\"\n)\n\ntype notADirectoryError struct {\n\tos.FileInfo\n}\n\nfunc (t notADirectoryError) Error() string {\n\tfileInfo := os.FileInfo(t)\n\tswitch {\n\tcase fileInfo.Mode().IsRegular():\n\t\treturn \"file is a regular file\"\n\tdefault:\n\t\treturn fmt.Sprintf(\"file mode is: %s\", fileInfo.Mode().String())\n\t}\n}\n\ntype BeADirectoryMatcher struct {\n\texpected any\n\terr      error\n}\n\nfunc (matcher *BeADirectoryMatcher) Match(actual any) (success bool, err error) {\n\tactualFilename, ok := actual.(string)\n\tif !ok {\n\t\treturn false, fmt.Errorf(\"BeADirectoryMatcher matcher expects a file path\")\n\t}\n\n\tfileInfo, err := os.Stat(actualFilename)\n\tif err != nil {\n\t\tmatcher.err = err\n\t\treturn false, nil\n\t}\n\n\tif !fileInfo.Mode().IsDir() {\n\t\tmatcher.err = notADirectoryError{fileInfo}\n\t\treturn false, nil\n\t}\n\treturn true, nil\n}\n\nfunc (matcher *BeADirectoryMatcher) FailureMessage(actual any) (message string) {\n\treturn format.Message(actual, fmt.Sprintf(\"to be a directory: %s\", matcher.err))\n}\n\nfunc (matcher *BeADirectoryMatcher) NegatedFailureMessage(actual any) (message string) {\n\treturn format.Message(actual, \"not be a directory\")\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/be_a_regular_file.go",
    "content": "// untested sections: 5\n\npackage matchers\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\n\t\"github.com/onsi/gomega/format\"\n)\n\ntype notARegularFileError struct {\n\tos.FileInfo\n}\n\nfunc (t notARegularFileError) Error() string {\n\tfileInfo := os.FileInfo(t)\n\tswitch {\n\tcase fileInfo.IsDir():\n\t\treturn \"file is a directory\"\n\tdefault:\n\t\treturn fmt.Sprintf(\"file mode is: %s\", fileInfo.Mode().String())\n\t}\n}\n\ntype BeARegularFileMatcher struct {\n\texpected any\n\terr      error\n}\n\nfunc (matcher *BeARegularFileMatcher) Match(actual any) (success bool, err error) {\n\tactualFilename, ok := actual.(string)\n\tif !ok {\n\t\treturn false, fmt.Errorf(\"BeARegularFileMatcher matcher expects a file path\")\n\t}\n\n\tfileInfo, err := os.Stat(actualFilename)\n\tif err != nil {\n\t\tmatcher.err = err\n\t\treturn false, nil\n\t}\n\n\tif !fileInfo.Mode().IsRegular() {\n\t\tmatcher.err = notARegularFileError{fileInfo}\n\t\treturn false, nil\n\t}\n\treturn true, nil\n}\n\nfunc (matcher *BeARegularFileMatcher) FailureMessage(actual any) (message string) {\n\treturn format.Message(actual, fmt.Sprintf(\"to be a regular file: %s\", matcher.err))\n}\n\nfunc (matcher *BeARegularFileMatcher) NegatedFailureMessage(actual any) (message string) {\n\treturn format.Message(actual, \"not be a regular file\")\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/be_an_existing_file.go",
    "content": "// untested sections: 3\n\npackage matchers\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\n\t\"github.com/onsi/gomega/format\"\n)\n\ntype BeAnExistingFileMatcher struct {\n\texpected any\n}\n\nfunc (matcher *BeAnExistingFileMatcher) Match(actual any) (success bool, err error) {\n\tactualFilename, ok := actual.(string)\n\tif !ok {\n\t\treturn false, fmt.Errorf(\"BeAnExistingFileMatcher matcher expects a file path\")\n\t}\n\n\tif _, err = os.Stat(actualFilename); err != nil {\n\t\tswitch {\n\t\tcase os.IsNotExist(err):\n\t\t\treturn false, nil\n\t\tdefault:\n\t\t\treturn false, err\n\t\t}\n\t}\n\n\treturn true, nil\n}\n\nfunc (matcher *BeAnExistingFileMatcher) FailureMessage(actual any) (message string) {\n\treturn format.Message(actual, \"to exist\")\n}\n\nfunc (matcher *BeAnExistingFileMatcher) NegatedFailureMessage(actual any) (message string) {\n\treturn format.Message(actual, \"not to exist\")\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/be_closed_matcher.go",
    "content": "// untested sections: 2\n\npackage matchers\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\n\t\"github.com/onsi/gomega/format\"\n)\n\ntype BeClosedMatcher struct {\n}\n\nfunc (matcher *BeClosedMatcher) Match(actual any) (success bool, err error) {\n\tif !isChan(actual) {\n\t\treturn false, fmt.Errorf(\"BeClosed matcher expects a channel.  Got:\\n%s\", format.Object(actual, 1))\n\t}\n\n\tchannelType := reflect.TypeOf(actual)\n\tchannelValue := reflect.ValueOf(actual)\n\n\tif channelType.ChanDir() == reflect.SendDir {\n\t\treturn false, fmt.Errorf(\"BeClosed matcher cannot determine if a send-only channel is closed or open.  Got:\\n%s\", format.Object(actual, 1))\n\t}\n\n\twinnerIndex, _, open := reflect.Select([]reflect.SelectCase{\n\t\t{Dir: reflect.SelectRecv, Chan: channelValue},\n\t\t{Dir: reflect.SelectDefault},\n\t})\n\n\tvar closed bool\n\tif winnerIndex == 0 {\n\t\tclosed = !open\n\t} else if winnerIndex == 1 {\n\t\tclosed = false\n\t}\n\n\treturn closed, nil\n}\n\nfunc (matcher *BeClosedMatcher) FailureMessage(actual any) (message string) {\n\treturn format.Message(actual, \"to be closed\")\n}\n\nfunc (matcher *BeClosedMatcher) NegatedFailureMessage(actual any) (message string) {\n\treturn format.Message(actual, \"to be open\")\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/be_comparable_to_matcher.go",
    "content": "package matchers\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/onsi/gomega/format\"\n)\n\ntype BeComparableToMatcher struct {\n\tExpected any\n\tOptions  cmp.Options\n}\n\nfunc (matcher *BeComparableToMatcher) Match(actual any) (success bool, matchErr error) {\n\tif actual == nil && matcher.Expected == nil {\n\t\treturn false, fmt.Errorf(\"Refusing to compare <nil> to <nil>.\\nBe explicit and use BeNil() instead.  This is to avoid mistakes where both sides of an assertion are erroneously uninitialized.\")\n\t}\n\t// Shortcut for byte slices.\n\t// Comparing long byte slices with reflect.DeepEqual is very slow,\n\t// so use bytes.Equal if actual and expected are both byte slices.\n\tif actualByteSlice, ok := actual.([]byte); ok {\n\t\tif expectedByteSlice, ok := matcher.Expected.([]byte); ok {\n\t\t\treturn bytes.Equal(actualByteSlice, expectedByteSlice), nil\n\t\t}\n\t}\n\n\tdefer func() {\n\t\tif r := recover(); r != nil {\n\t\t\tsuccess = false\n\t\t\tif err, ok := r.(error); ok {\n\t\t\t\tmatchErr = err\n\t\t\t} else if errMsg, ok := r.(string); ok {\n\t\t\t\tmatchErr = errors.New(errMsg)\n\t\t\t}\n\t\t}\n\t}()\n\n\treturn cmp.Equal(actual, matcher.Expected, matcher.Options...), nil\n}\n\nfunc (matcher *BeComparableToMatcher) FailureMessage(actual any) (message string) {\n\treturn fmt.Sprint(\"Expected object to be comparable, diff: \", cmp.Diff(actual, matcher.Expected, matcher.Options...))\n}\n\nfunc (matcher *BeComparableToMatcher) NegatedFailureMessage(actual any) (message string) {\n\treturn format.Message(actual, \"not to be comparable to\", matcher.Expected)\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/be_element_of_matcher.go",
    "content": "// untested sections: 1\n\npackage matchers\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\n\t\"github.com/onsi/gomega/format\"\n)\n\ntype BeElementOfMatcher struct {\n\tElements []any\n}\n\nfunc (matcher *BeElementOfMatcher) Match(actual any) (success bool, err error) {\n\tif reflect.TypeOf(actual) == nil {\n\t\treturn false, fmt.Errorf(\"BeElement matcher expects actual to be typed\")\n\t}\n\n\tvar lastError error\n\tfor _, m := range flatten(matcher.Elements) {\n\t\tmatcher := &EqualMatcher{Expected: m}\n\t\tsuccess, err := matcher.Match(actual)\n\t\tif err != nil {\n\t\t\tlastError = err\n\t\t\tcontinue\n\t\t}\n\t\tif success {\n\t\t\treturn true, nil\n\t\t}\n\t}\n\n\treturn false, lastError\n}\n\nfunc (matcher *BeElementOfMatcher) FailureMessage(actual any) (message string) {\n\treturn format.Message(actual, \"to be an element of\", presentable(matcher.Elements))\n}\n\nfunc (matcher *BeElementOfMatcher) NegatedFailureMessage(actual any) (message string) {\n\treturn format.Message(actual, \"not to be an element of\", presentable(matcher.Elements))\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/be_empty_matcher.go",
    "content": "// untested sections: 2\n\npackage matchers\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\n\t\"github.com/onsi/gomega/format\"\n\t\"github.com/onsi/gomega/matchers/internal/miter\"\n)\n\ntype BeEmptyMatcher struct {\n}\n\nfunc (matcher *BeEmptyMatcher) Match(actual any) (success bool, err error) {\n\t// short-circuit the iterator case, as we only need to see the first\n\t// element, if any.\n\tif miter.IsIter(actual) {\n\t\tvar length int\n\t\tif miter.IsSeq2(actual) {\n\t\t\tmiter.IterateKV(actual, func(k, v reflect.Value) bool { length++; return false })\n\t\t} else {\n\t\t\tmiter.IterateV(actual, func(v reflect.Value) bool { length++; return false })\n\t\t}\n\t\treturn length == 0, nil\n\t}\n\n\tlength, ok := lengthOf(actual)\n\tif !ok {\n\t\treturn false, fmt.Errorf(\"BeEmpty matcher expects a string/array/map/channel/slice/iterator.  Got:\\n%s\", format.Object(actual, 1))\n\t}\n\n\treturn length == 0, nil\n}\n\nfunc (matcher *BeEmptyMatcher) FailureMessage(actual any) (message string) {\n\treturn format.Message(actual, \"to be empty\")\n}\n\nfunc (matcher *BeEmptyMatcher) NegatedFailureMessage(actual any) (message string) {\n\treturn format.Message(actual, \"not to be empty\")\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/be_equivalent_to_matcher.go",
    "content": "// untested sections: 2\n\npackage matchers\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\n\t\"github.com/onsi/gomega/format\"\n)\n\ntype BeEquivalentToMatcher struct {\n\tExpected any\n}\n\nfunc (matcher *BeEquivalentToMatcher) Match(actual any) (success bool, err error) {\n\tif actual == nil && matcher.Expected == nil {\n\t\treturn false, fmt.Errorf(\"Both actual and expected must not be nil.\")\n\t}\n\n\tconvertedActual := actual\n\n\tif actual != nil && matcher.Expected != nil && reflect.TypeOf(actual).ConvertibleTo(reflect.TypeOf(matcher.Expected)) {\n\t\tconvertedActual = reflect.ValueOf(actual).Convert(reflect.TypeOf(matcher.Expected)).Interface()\n\t}\n\n\treturn reflect.DeepEqual(convertedActual, matcher.Expected), nil\n}\n\nfunc (matcher *BeEquivalentToMatcher) FailureMessage(actual any) (message string) {\n\treturn format.Message(actual, \"to be equivalent to\", matcher.Expected)\n}\n\nfunc (matcher *BeEquivalentToMatcher) NegatedFailureMessage(actual any) (message string) {\n\treturn format.Message(actual, \"not to be equivalent to\", matcher.Expected)\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/be_false_matcher.go",
    "content": "// untested sections: 2\n\npackage matchers\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/onsi/gomega/format\"\n)\n\ntype BeFalseMatcher struct {\n\tReason string\n}\n\nfunc (matcher *BeFalseMatcher) Match(actual any) (success bool, err error) {\n\tif !isBool(actual) {\n\t\treturn false, fmt.Errorf(\"Expected a boolean.  Got:\\n%s\", format.Object(actual, 1))\n\t}\n\n\treturn actual == false, nil\n}\n\nfunc (matcher *BeFalseMatcher) FailureMessage(actual any) (message string) {\n\tif matcher.Reason == \"\" {\n\t\treturn format.Message(actual, \"to be false\")\n\t} else {\n\t\treturn matcher.Reason\n\t}\n}\n\nfunc (matcher *BeFalseMatcher) NegatedFailureMessage(actual any) (message string) {\n\tif matcher.Reason == \"\" {\n\t\treturn format.Message(actual, \"not to be false\")\n\t} else {\n\t\treturn fmt.Sprintf(`Expected not false but got false\\nNegation of \"%s\" failed`, matcher.Reason)\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/be_identical_to.go",
    "content": "// untested sections: 2\n\npackage matchers\n\nimport (\n\t\"fmt\"\n\t\"runtime\"\n\n\t\"github.com/onsi/gomega/format\"\n)\n\ntype BeIdenticalToMatcher struct {\n\tExpected any\n}\n\nfunc (matcher *BeIdenticalToMatcher) Match(actual any) (success bool, matchErr error) {\n\tif actual == nil && matcher.Expected == nil {\n\t\treturn false, fmt.Errorf(\"Refusing to compare <nil> to <nil>.\\nBe explicit and use BeNil() instead.  This is to avoid mistakes where both sides of an assertion are erroneously uninitialized.\")\n\t}\n\n\tdefer func() {\n\t\tif r := recover(); r != nil {\n\t\t\tif _, ok := r.(runtime.Error); ok {\n\t\t\t\tsuccess = false\n\t\t\t\tmatchErr = nil\n\t\t\t}\n\t\t}\n\t}()\n\n\treturn actual == matcher.Expected, nil\n}\n\nfunc (matcher *BeIdenticalToMatcher) FailureMessage(actual any) string {\n\treturn format.Message(actual, \"to be identical to\", matcher.Expected)\n}\n\nfunc (matcher *BeIdenticalToMatcher) NegatedFailureMessage(actual any) string {\n\treturn format.Message(actual, \"not to be identical to\", matcher.Expected)\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/be_key_of_matcher.go",
    "content": "package matchers\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\n\t\"github.com/onsi/gomega/format\"\n)\n\ntype BeKeyOfMatcher struct {\n\tMap any\n}\n\nfunc (matcher *BeKeyOfMatcher) Match(actual any) (success bool, err error) {\n\tif !isMap(matcher.Map) {\n\t\treturn false, fmt.Errorf(\"BeKeyOf matcher needs expected to be a map type\")\n\t}\n\n\tif reflect.TypeOf(actual) == nil {\n\t\treturn false, fmt.Errorf(\"BeKeyOf matcher expects actual to be typed\")\n\t}\n\n\tvar lastError error\n\tfor _, key := range reflect.ValueOf(matcher.Map).MapKeys() {\n\t\tmatcher := &EqualMatcher{Expected: key.Interface()}\n\t\tsuccess, err := matcher.Match(actual)\n\t\tif err != nil {\n\t\t\tlastError = err\n\t\t\tcontinue\n\t\t}\n\t\tif success {\n\t\t\treturn true, nil\n\t\t}\n\t}\n\n\treturn false, lastError\n}\n\nfunc (matcher *BeKeyOfMatcher) FailureMessage(actual any) (message string) {\n\treturn format.Message(actual, \"to be a key of\", presentable(valuesOf(matcher.Map)))\n}\n\nfunc (matcher *BeKeyOfMatcher) NegatedFailureMessage(actual any) (message string) {\n\treturn format.Message(actual, \"not to be a key of\", presentable(valuesOf(matcher.Map)))\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/be_nil_matcher.go",
    "content": "// untested sections: 2\n\npackage matchers\n\nimport \"github.com/onsi/gomega/format\"\n\ntype BeNilMatcher struct {\n}\n\nfunc (matcher *BeNilMatcher) Match(actual any) (success bool, err error) {\n\treturn isNil(actual), nil\n}\n\nfunc (matcher *BeNilMatcher) FailureMessage(actual any) (message string) {\n\treturn format.Message(actual, \"to be nil\")\n}\n\nfunc (matcher *BeNilMatcher) NegatedFailureMessage(actual any) (message string) {\n\treturn format.Message(actual, \"not to be nil\")\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/be_numerically_matcher.go",
    "content": "// untested sections: 4\n\npackage matchers\n\nimport (\n\t\"fmt\"\n\t\"math\"\n\n\t\"github.com/onsi/gomega/format\"\n)\n\ntype BeNumericallyMatcher struct {\n\tComparator string\n\tCompareTo  []any\n}\n\nfunc (matcher *BeNumericallyMatcher) FailureMessage(actual any) (message string) {\n\treturn matcher.FormatFailureMessage(actual, false)\n}\n\nfunc (matcher *BeNumericallyMatcher) NegatedFailureMessage(actual any) (message string) {\n\treturn matcher.FormatFailureMessage(actual, true)\n}\n\nfunc (matcher *BeNumericallyMatcher) FormatFailureMessage(actual any, negated bool) (message string) {\n\tif len(matcher.CompareTo) == 1 {\n\t\tmessage = fmt.Sprintf(\"to be %s\", matcher.Comparator)\n\t} else {\n\t\tmessage = fmt.Sprintf(\"to be within %v of %s\", matcher.CompareTo[1], matcher.Comparator)\n\t}\n\tif negated {\n\t\tmessage = \"not \" + message\n\t}\n\treturn format.Message(actual, message, matcher.CompareTo[0])\n}\n\nfunc (matcher *BeNumericallyMatcher) Match(actual any) (success bool, err error) {\n\tif len(matcher.CompareTo) == 0 || len(matcher.CompareTo) > 2 {\n\t\treturn false, fmt.Errorf(\"BeNumerically requires 1 or 2 CompareTo arguments.  Got:\\n%s\", format.Object(matcher.CompareTo, 1))\n\t}\n\tif !isNumber(actual) {\n\t\treturn false, fmt.Errorf(\"Expected a number.  Got:\\n%s\", format.Object(actual, 1))\n\t}\n\tif !isNumber(matcher.CompareTo[0]) {\n\t\treturn false, fmt.Errorf(\"Expected a number.  Got:\\n%s\", format.Object(matcher.CompareTo[0], 1))\n\t}\n\tif len(matcher.CompareTo) == 2 && !isNumber(matcher.CompareTo[1]) {\n\t\treturn false, fmt.Errorf(\"Expected a number.  Got:\\n%s\", format.Object(matcher.CompareTo[1], 1))\n\t}\n\n\tswitch matcher.Comparator {\n\tcase \"==\", \"~\", \">\", \">=\", \"<\", \"<=\":\n\tdefault:\n\t\treturn false, fmt.Errorf(\"Unknown comparator: %s\", matcher.Comparator)\n\t}\n\n\tif isFloat(actual) || isFloat(matcher.CompareTo[0]) {\n\t\tvar secondOperand float64 = 1e-8\n\t\tif len(matcher.CompareTo) == 2 {\n\t\t\tsecondOperand = toFloat(matcher.CompareTo[1])\n\t\t}\n\t\tsuccess = matcher.matchFloats(toFloat(actual), toFloat(matcher.CompareTo[0]), secondOperand)\n\t} else if isInteger(actual) {\n\t\tvar secondOperand int64 = 0\n\t\tif len(matcher.CompareTo) == 2 {\n\t\t\tsecondOperand = toInteger(matcher.CompareTo[1])\n\t\t}\n\t\tsuccess = matcher.matchIntegers(toInteger(actual), toInteger(matcher.CompareTo[0]), secondOperand)\n\t} else if isUnsignedInteger(actual) {\n\t\tvar secondOperand uint64 = 0\n\t\tif len(matcher.CompareTo) == 2 {\n\t\t\tsecondOperand = toUnsignedInteger(matcher.CompareTo[1])\n\t\t}\n\t\tsuccess = matcher.matchUnsignedIntegers(toUnsignedInteger(actual), toUnsignedInteger(matcher.CompareTo[0]), secondOperand)\n\t} else {\n\t\treturn false, fmt.Errorf(\"Failed to compare:\\n%s\\n%s:\\n%s\", format.Object(actual, 1), matcher.Comparator, format.Object(matcher.CompareTo[0], 1))\n\t}\n\n\treturn success, nil\n}\n\nfunc (matcher *BeNumericallyMatcher) matchIntegers(actual, compareTo, threshold int64) (success bool) {\n\tswitch matcher.Comparator {\n\tcase \"==\", \"~\":\n\t\tdiff := actual - compareTo\n\t\treturn -threshold <= diff && diff <= threshold\n\tcase \">\":\n\t\treturn (actual > compareTo)\n\tcase \">=\":\n\t\treturn (actual >= compareTo)\n\tcase \"<\":\n\t\treturn (actual < compareTo)\n\tcase \"<=\":\n\t\treturn (actual <= compareTo)\n\t}\n\treturn false\n}\n\nfunc (matcher *BeNumericallyMatcher) matchUnsignedIntegers(actual, compareTo, threshold uint64) (success bool) {\n\tswitch matcher.Comparator {\n\tcase \"==\", \"~\":\n\t\tif actual < compareTo {\n\t\t\tactual, compareTo = compareTo, actual\n\t\t}\n\t\treturn actual-compareTo <= threshold\n\tcase \">\":\n\t\treturn (actual > compareTo)\n\tcase \">=\":\n\t\treturn (actual >= compareTo)\n\tcase \"<\":\n\t\treturn (actual < compareTo)\n\tcase \"<=\":\n\t\treturn (actual <= compareTo)\n\t}\n\treturn false\n}\n\nfunc (matcher *BeNumericallyMatcher) matchFloats(actual, compareTo, threshold float64) (success bool) {\n\tswitch matcher.Comparator {\n\tcase \"~\":\n\t\treturn math.Abs(actual-compareTo) <= threshold\n\tcase \"==\":\n\t\treturn (actual == compareTo)\n\tcase \">\":\n\t\treturn (actual > compareTo)\n\tcase \">=\":\n\t\treturn (actual >= compareTo)\n\tcase \"<\":\n\t\treturn (actual < compareTo)\n\tcase \"<=\":\n\t\treturn (actual <= compareTo)\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/be_sent_matcher.go",
    "content": "// untested sections: 3\n\npackage matchers\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\n\t\"github.com/onsi/gomega/format\"\n)\n\ntype BeSentMatcher struct {\n\tArg           any\n\tchannelClosed bool\n}\n\nfunc (matcher *BeSentMatcher) Match(actual any) (success bool, err error) {\n\tif !isChan(actual) {\n\t\treturn false, fmt.Errorf(\"BeSent expects a channel.  Got:\\n%s\", format.Object(actual, 1))\n\t}\n\n\tchannelType := reflect.TypeOf(actual)\n\tchannelValue := reflect.ValueOf(actual)\n\n\tif channelType.ChanDir() == reflect.RecvDir {\n\t\treturn false, fmt.Errorf(\"BeSent matcher cannot be passed a receive-only channel.  Got:\\n%s\", format.Object(actual, 1))\n\t}\n\n\targType := reflect.TypeOf(matcher.Arg)\n\tassignable := argType.AssignableTo(channelType.Elem())\n\n\tif !assignable {\n\t\treturn false, fmt.Errorf(\"Cannot pass:\\n%s to the channel:\\n%s\\nThe types don't match.\", format.Object(matcher.Arg, 1), format.Object(actual, 1))\n\t}\n\n\targValue := reflect.ValueOf(matcher.Arg)\n\n\tdefer func() {\n\t\tif e := recover(); e != nil {\n\t\t\tsuccess = false\n\t\t\terr = fmt.Errorf(\"Cannot send to a closed channel\")\n\t\t\tmatcher.channelClosed = true\n\t\t}\n\t}()\n\n\twinnerIndex, _, _ := reflect.Select([]reflect.SelectCase{\n\t\t{Dir: reflect.SelectSend, Chan: channelValue, Send: argValue},\n\t\t{Dir: reflect.SelectDefault},\n\t})\n\n\tvar didSend bool\n\tif winnerIndex == 0 {\n\t\tdidSend = true\n\t}\n\n\treturn didSend, nil\n}\n\nfunc (matcher *BeSentMatcher) FailureMessage(actual any) (message string) {\n\treturn format.Message(actual, \"to send:\", matcher.Arg)\n}\n\nfunc (matcher *BeSentMatcher) NegatedFailureMessage(actual any) (message string) {\n\treturn format.Message(actual, \"not to send:\", matcher.Arg)\n}\n\nfunc (matcher *BeSentMatcher) MatchMayChangeInTheFuture(actual any) bool {\n\tif !isChan(actual) {\n\t\treturn false\n\t}\n\n\treturn !matcher.channelClosed\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/be_temporally_matcher.go",
    "content": "// untested sections: 3\n\npackage matchers\n\nimport (\n\t\"fmt\"\n\t\"time\"\n\n\t\"github.com/onsi/gomega/format\"\n)\n\ntype BeTemporallyMatcher struct {\n\tComparator string\n\tCompareTo  time.Time\n\tThreshold  []time.Duration\n}\n\nfunc (matcher *BeTemporallyMatcher) FailureMessage(actual any) (message string) {\n\treturn format.Message(actual, fmt.Sprintf(\"to be %s\", matcher.Comparator), matcher.CompareTo)\n}\n\nfunc (matcher *BeTemporallyMatcher) NegatedFailureMessage(actual any) (message string) {\n\treturn format.Message(actual, fmt.Sprintf(\"not to be %s\", matcher.Comparator), matcher.CompareTo)\n}\n\nfunc (matcher *BeTemporallyMatcher) Match(actual any) (bool, error) {\n\t// predicate to test for time.Time type\n\tisTime := func(t any) bool {\n\t\t_, ok := t.(time.Time)\n\t\treturn ok\n\t}\n\n\tif !isTime(actual) {\n\t\treturn false, fmt.Errorf(\"Expected a time.Time.  Got:\\n%s\", format.Object(actual, 1))\n\t}\n\n\tswitch matcher.Comparator {\n\tcase \"==\", \"~\", \">\", \">=\", \"<\", \"<=\":\n\tdefault:\n\t\treturn false, fmt.Errorf(\"Unknown comparator: %s\", matcher.Comparator)\n\t}\n\n\tvar threshold = time.Millisecond\n\tif len(matcher.Threshold) == 1 {\n\t\tthreshold = matcher.Threshold[0]\n\t}\n\n\treturn matcher.matchTimes(actual.(time.Time), matcher.CompareTo, threshold), nil\n}\n\nfunc (matcher *BeTemporallyMatcher) matchTimes(actual, compareTo time.Time, threshold time.Duration) (success bool) {\n\tswitch matcher.Comparator {\n\tcase \"==\":\n\t\treturn actual.Equal(compareTo)\n\tcase \"~\":\n\t\tdiff := actual.Sub(compareTo)\n\t\treturn -threshold <= diff && diff <= threshold\n\tcase \">\":\n\t\treturn actual.After(compareTo)\n\tcase \">=\":\n\t\treturn !actual.Before(compareTo)\n\tcase \"<\":\n\t\treturn actual.Before(compareTo)\n\tcase \"<=\":\n\t\treturn !actual.After(compareTo)\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/be_true_matcher.go",
    "content": "// untested sections: 2\n\npackage matchers\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/onsi/gomega/format\"\n)\n\ntype BeTrueMatcher struct {\n\tReason string\n}\n\nfunc (matcher *BeTrueMatcher) Match(actual any) (success bool, err error) {\n\tif !isBool(actual) {\n\t\treturn false, fmt.Errorf(\"Expected a boolean.  Got:\\n%s\", format.Object(actual, 1))\n\t}\n\n\treturn actual.(bool), nil\n}\n\nfunc (matcher *BeTrueMatcher) FailureMessage(actual any) (message string) {\n\tif matcher.Reason == \"\" {\n\t\treturn format.Message(actual, \"to be true\")\n\t} else {\n\t\treturn matcher.Reason\n\t}\n}\n\nfunc (matcher *BeTrueMatcher) NegatedFailureMessage(actual any) (message string) {\n\tif matcher.Reason == \"\" {\n\t\treturn format.Message(actual, \"not to be true\")\n\t} else {\n\t\treturn fmt.Sprintf(`Expected not true but got true\\nNegation of \"%s\" failed`, matcher.Reason)\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/be_zero_matcher.go",
    "content": "package matchers\n\nimport (\n\t\"reflect\"\n\n\t\"github.com/onsi/gomega/format\"\n)\n\ntype BeZeroMatcher struct {\n}\n\nfunc (matcher *BeZeroMatcher) Match(actual any) (success bool, err error) {\n\tif actual == nil {\n\t\treturn true, nil\n\t}\n\tzeroValue := reflect.Zero(reflect.TypeOf(actual)).Interface()\n\n\treturn reflect.DeepEqual(zeroValue, actual), nil\n\n}\n\nfunc (matcher *BeZeroMatcher) FailureMessage(actual any) (message string) {\n\treturn format.Message(actual, \"to be zero-valued\")\n}\n\nfunc (matcher *BeZeroMatcher) NegatedFailureMessage(actual any) (message string) {\n\treturn format.Message(actual, \"not to be zero-valued\")\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/consist_of.go",
    "content": "// untested sections: 3\n\npackage matchers\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\n\t\"github.com/onsi/gomega/format\"\n\t\"github.com/onsi/gomega/matchers/internal/miter\"\n\t\"github.com/onsi/gomega/matchers/support/goraph/bipartitegraph\"\n)\n\ntype ConsistOfMatcher struct {\n\tElements        []any\n\tmissingElements []any\n\textraElements   []any\n}\n\nfunc (matcher *ConsistOfMatcher) Match(actual any) (success bool, err error) {\n\tif !isArrayOrSlice(actual) && !isMap(actual) && !miter.IsIter(actual) {\n\t\treturn false, fmt.Errorf(\"ConsistOf matcher expects an array/slice/map/iter.Seq/iter.Seq2.  Got:\\n%s\", format.Object(actual, 1))\n\t}\n\n\tmatchers := matchers(matcher.Elements)\n\tvalues := valuesOf(actual)\n\n\tbipartiteGraph, err := bipartitegraph.NewBipartiteGraph(values, matchers, neighbours)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\n\tedges := bipartiteGraph.LargestMatching()\n\tif len(edges) == len(values) && len(edges) == len(matchers) {\n\t\treturn true, nil\n\t}\n\n\tvar missingMatchers []any\n\tmatcher.extraElements, missingMatchers = bipartiteGraph.FreeLeftRight(edges)\n\tmatcher.missingElements = equalMatchersToElements(missingMatchers)\n\n\treturn false, nil\n}\n\nfunc neighbours(value, matcher any) (bool, error) {\n\tmatch, err := matcher.(omegaMatcher).Match(value)\n\treturn match && err == nil, nil\n}\n\nfunc equalMatchersToElements(matchers []any) (elements []any) {\n\tfor _, matcher := range matchers {\n\t\tif equalMatcher, ok := matcher.(*EqualMatcher); ok {\n\t\t\telements = append(elements, equalMatcher.Expected)\n\t\t} else if _, ok := matcher.(*BeNilMatcher); ok {\n\t\t\telements = append(elements, nil)\n\t\t} else {\n\t\t\telements = append(elements, matcher)\n\t\t}\n\t}\n\treturn\n}\n\nfunc flatten(elems []any) []any {\n\tif len(elems) != 1 ||\n\t\t!(isArrayOrSlice(elems[0]) ||\n\t\t\t(miter.IsIter(elems[0]) && !miter.IsSeq2(elems[0]))) {\n\t\treturn elems\n\t}\n\n\tif miter.IsIter(elems[0]) {\n\t\tflattened := []any{}\n\t\tmiter.IterateV(elems[0], func(v reflect.Value) bool {\n\t\t\tflattened = append(flattened, v.Interface())\n\t\t\treturn true\n\t\t})\n\t\treturn flattened\n\t}\n\n\tvalue := reflect.ValueOf(elems[0])\n\tflattened := make([]any, value.Len())\n\tfor i := 0; i < value.Len(); i++ {\n\t\tflattened[i] = value.Index(i).Interface()\n\t}\n\treturn flattened\n}\n\nfunc matchers(expectedElems []any) (matchers []any) {\n\tfor _, e := range flatten(expectedElems) {\n\t\tif e == nil {\n\t\t\tmatchers = append(matchers, &BeNilMatcher{})\n\t\t} else if matcher, isMatcher := e.(omegaMatcher); isMatcher {\n\t\t\tmatchers = append(matchers, matcher)\n\t\t} else {\n\t\t\tmatchers = append(matchers, &EqualMatcher{Expected: e})\n\t\t}\n\t}\n\treturn\n}\n\nfunc presentable(elems []any) any {\n\telems = flatten(elems)\n\n\tif len(elems) == 0 {\n\t\treturn []any{}\n\t}\n\n\tsv := reflect.ValueOf(elems)\n\tfirstEl := sv.Index(0)\n\tif firstEl.IsNil() {\n\t\treturn elems\n\t}\n\ttt := firstEl.Elem().Type()\n\tfor i := 1; i < sv.Len(); i++ {\n\t\tel := sv.Index(i)\n\t\tif el.IsNil() || (sv.Index(i).Elem().Type() != tt) {\n\t\t\treturn elems\n\t\t}\n\t}\n\n\tss := reflect.MakeSlice(reflect.SliceOf(tt), sv.Len(), sv.Len())\n\tfor i := 0; i < sv.Len(); i++ {\n\t\tss.Index(i).Set(sv.Index(i).Elem())\n\t}\n\n\treturn ss.Interface()\n}\n\nfunc valuesOf(actual any) []any {\n\tvalue := reflect.ValueOf(actual)\n\tvalues := []any{}\n\tif miter.IsIter(actual) {\n\t\tif miter.IsSeq2(actual) {\n\t\t\tmiter.IterateKV(actual, func(k, v reflect.Value) bool {\n\t\t\t\tvalues = append(values, v.Interface())\n\t\t\t\treturn true\n\t\t\t})\n\t\t} else {\n\t\t\tmiter.IterateV(actual, func(v reflect.Value) bool {\n\t\t\t\tvalues = append(values, v.Interface())\n\t\t\t\treturn true\n\t\t\t})\n\t\t}\n\t} else if isMap(actual) {\n\t\tkeys := value.MapKeys()\n\t\tfor i := 0; i < value.Len(); i++ {\n\t\t\tvalues = append(values, value.MapIndex(keys[i]).Interface())\n\t\t}\n\t} else {\n\t\tfor i := 0; i < value.Len(); i++ {\n\t\t\tvalues = append(values, value.Index(i).Interface())\n\t\t}\n\t}\n\n\treturn values\n}\n\nfunc (matcher *ConsistOfMatcher) FailureMessage(actual any) (message string) {\n\tmessage = format.Message(actual, \"to consist of\", presentable(matcher.Elements))\n\tmessage = appendMissingElements(message, matcher.missingElements)\n\tif len(matcher.extraElements) > 0 {\n\t\tmessage = fmt.Sprintf(\"%s\\nthe extra elements were\\n%s\", message,\n\t\t\tformat.Object(presentable(matcher.extraElements), 1))\n\t}\n\treturn\n}\n\nfunc appendMissingElements(message string, missingElements []any) string {\n\tif len(missingElements) == 0 {\n\t\treturn message\n\t}\n\treturn fmt.Sprintf(\"%s\\nthe missing elements were\\n%s\", message,\n\t\tformat.Object(presentable(missingElements), 1))\n}\n\nfunc (matcher *ConsistOfMatcher) NegatedFailureMessage(actual any) (message string) {\n\treturn format.Message(actual, \"not to consist of\", presentable(matcher.Elements))\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/contain_element_matcher.go",
    "content": "// untested sections: 2\n\npackage matchers\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"reflect\"\n\n\t\"github.com/onsi/gomega/format\"\n\t\"github.com/onsi/gomega/matchers/internal/miter\"\n)\n\ntype ContainElementMatcher struct {\n\tElement any\n\tResult  []any\n}\n\nfunc (matcher *ContainElementMatcher) Match(actual any) (success bool, err error) {\n\tif !isArrayOrSlice(actual) && !isMap(actual) && !miter.IsIter(actual) {\n\t\treturn false, fmt.Errorf(\"ContainElement matcher expects an array/slice/map/iterator.  Got:\\n%s\", format.Object(actual, 1))\n\t}\n\n\tvar actualT reflect.Type\n\tvar result reflect.Value\n\tswitch numResultArgs := len(matcher.Result); {\n\tcase numResultArgs > 1:\n\t\treturn false, errors.New(\"ContainElement matcher expects at most a single optional pointer to store its findings at\")\n\tcase numResultArgs == 1:\n\t\t// Check the optional result arg to point to a single value/array/slice/map\n\t\t// of a type compatible with the actual value.\n\t\tif reflect.ValueOf(matcher.Result[0]).Kind() != reflect.Ptr {\n\t\t\treturn false, fmt.Errorf(\"ContainElement matcher expects a non-nil pointer to store its findings at.  Got\\n%s\",\n\t\t\t\tformat.Object(matcher.Result[0], 1))\n\t\t}\n\t\tactualT = reflect.TypeOf(actual)\n\t\tresultReference := matcher.Result[0]\n\t\tresult = reflect.ValueOf(resultReference).Elem() // what ResultReference points to, to stash away our findings\n\t\tswitch result.Kind() {\n\t\tcase reflect.Array: // result arrays are not supported, as they cannot be dynamically sized.\n\t\t\tif miter.IsIter(actual) {\n\t\t\t\t_, actualvT := miter.IterKVTypes(actual)\n\t\t\t\treturn false, fmt.Errorf(\"ContainElement cannot return findings.  Need *%s, got *%s\",\n\t\t\t\t\treflect.SliceOf(actualvT), result.Type().String())\n\t\t\t}\n\t\t\treturn false, fmt.Errorf(\"ContainElement cannot return findings.  Need *%s, got *%s\",\n\t\t\t\treflect.SliceOf(actualT.Elem()).String(), result.Type().String())\n\n\t\tcase reflect.Slice: // result slice\n\t\t\t// can we assign elements in actual to elements in what the result\n\t\t\t// arg points to?\n\t\t\t//   - ✔ actual is an array or slice\n\t\t\t//   - ✔ actual is an iter.Seq producing \"v\" elements\n\t\t\t//   - ✔ actual is an iter.Seq2 producing \"v\" elements, ignoring\n\t\t\t//     the \"k\" elements.\n\t\t\tswitch {\n\t\t\tcase isArrayOrSlice(actual):\n\t\t\t\tif !actualT.Elem().AssignableTo(result.Type().Elem()) {\n\t\t\t\t\treturn false, fmt.Errorf(\"ContainElement cannot return findings.  Need *%s, got *%s\",\n\t\t\t\t\t\tactualT.String(), result.Type().String())\n\t\t\t\t}\n\n\t\t\tcase miter.IsIter(actual):\n\t\t\t\t_, actualvT := miter.IterKVTypes(actual)\n\t\t\t\tif !actualvT.AssignableTo(result.Type().Elem()) {\n\t\t\t\t\treturn false, fmt.Errorf(\"ContainElement cannot return findings.  Need *%s, got *%s\",\n\t\t\t\t\t\tactualvT.String(), result.Type().String())\n\t\t\t\t}\n\n\t\t\tdefault: // incompatible result reference\n\t\t\t\treturn false, fmt.Errorf(\"ContainElement cannot return findings.  Need *%s, got *%s\",\n\t\t\t\t\treflect.MapOf(actualT.Key(), actualT.Elem()).String(), result.Type().String())\n\t\t\t}\n\n\t\tcase reflect.Map: // result map\n\t\t\t// can we assign elements in actual to elements in what the result\n\t\t\t// arg points to?\n\t\t\t//   - ✔ actual is a map\n\t\t\t//   - ✔ actual is an iter.Seq2 (iter.Seq doesn't fit though)\n\t\t\tswitch {\n\t\t\tcase isMap(actual):\n\t\t\t\tif !actualT.AssignableTo(result.Type()) {\n\t\t\t\t\treturn false, fmt.Errorf(\"ContainElement cannot return findings.  Need *%s, got *%s\",\n\t\t\t\t\t\tactualT.String(), result.Type().String())\n\t\t\t\t}\n\n\t\t\tcase miter.IsIter(actual):\n\t\t\t\tactualkT, actualvT := miter.IterKVTypes(actual)\n\t\t\t\tif actualkT == nil {\n\t\t\t\t\treturn false, fmt.Errorf(\"ContainElement cannot return findings.  Need *%s, got *%s\",\n\t\t\t\t\t\treflect.SliceOf(actualvT).String(), result.Type().String())\n\t\t\t\t}\n\t\t\t\tif !reflect.MapOf(actualkT, actualvT).AssignableTo(result.Type()) {\n\t\t\t\t\treturn false, fmt.Errorf(\"ContainElement cannot return findings.  Need *%s, got *%s\",\n\t\t\t\t\t\treflect.MapOf(actualkT, actualvT), result.Type().String())\n\t\t\t\t}\n\n\t\t\tdefault: // incompatible result reference\n\t\t\t\treturn false, fmt.Errorf(\"ContainElement cannot return findings.  Need *%s, got *%s\",\n\t\t\t\t\tactualT.String(), result.Type().String())\n\t\t\t}\n\n\t\tdefault:\n\t\t\t// can we assign a (single) element in actual to what the result arg\n\t\t\t// points to?\n\t\t\tswitch {\n\t\t\tcase miter.IsIter(actual):\n\t\t\t\t_, actualvT := miter.IterKVTypes(actual)\n\t\t\t\tif !actualvT.AssignableTo(result.Type()) {\n\t\t\t\t\treturn false, fmt.Errorf(\"ContainElement cannot return findings.  Need *%s, got *%s\",\n\t\t\t\t\t\tactualvT.String(), result.Type().String())\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tif !actualT.Elem().AssignableTo(result.Type()) {\n\t\t\t\t\treturn false, fmt.Errorf(\"ContainElement cannot return findings.  Need *%s, got *%s\",\n\t\t\t\t\t\tactualT.Elem().String(), result.Type().String())\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// If the supplied matcher isn't an Omega matcher, default to the Equal\n\t// matcher.\n\telemMatcher, elementIsMatcher := matcher.Element.(omegaMatcher)\n\tif !elementIsMatcher {\n\t\telemMatcher = &EqualMatcher{Expected: matcher.Element}\n\t}\n\n\tvalue := reflect.ValueOf(actual)\n\n\tvar getFindings func() reflect.Value // abstracts how the findings are collected and stored\n\tvar lastError error\n\n\tif !miter.IsIter(actual) {\n\t\tvar valueAt func(int) any\n\t\tvar foundAt func(int)\n\t\t// We're dealing with an array/slice/map, so in all cases we can iterate\n\t\t// over the elements in actual using indices (that can be considered\n\t\t// keys in case of maps).\n\t\tif isMap(actual) {\n\t\t\tkeys := value.MapKeys()\n\t\t\tvalueAt = func(i int) any {\n\t\t\t\treturn value.MapIndex(keys[i]).Interface()\n\t\t\t}\n\t\t\tif result.Kind() != reflect.Invalid {\n\t\t\t\tfm := reflect.MakeMap(actualT)\n\t\t\t\tgetFindings = func() reflect.Value { return fm }\n\t\t\t\tfoundAt = func(i int) {\n\t\t\t\t\tfm.SetMapIndex(keys[i], value.MapIndex(keys[i]))\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tvalueAt = func(i int) any {\n\t\t\t\treturn value.Index(i).Interface()\n\t\t\t}\n\t\t\tif result.Kind() != reflect.Invalid {\n\t\t\t\tvar fsl reflect.Value\n\t\t\t\tif result.Kind() == reflect.Slice {\n\t\t\t\t\tfsl = reflect.MakeSlice(result.Type(), 0, 0)\n\t\t\t\t} else {\n\t\t\t\t\tfsl = reflect.MakeSlice(reflect.SliceOf(result.Type()), 0, 0)\n\t\t\t\t}\n\t\t\t\tgetFindings = func() reflect.Value { return fsl }\n\t\t\t\tfoundAt = func(i int) {\n\t\t\t\t\tfsl = reflect.Append(fsl, value.Index(i))\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor i := 0; i < value.Len(); i++ {\n\t\t\telem := valueAt(i)\n\t\t\tsuccess, err := elemMatcher.Match(elem)\n\t\t\tif err != nil {\n\t\t\t\tlastError = err\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif success {\n\t\t\t\tif result.Kind() == reflect.Invalid {\n\t\t\t\t\treturn true, nil\n\t\t\t\t}\n\t\t\t\tfoundAt(i)\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// We're dealing with an iterator as a first-class construct, so things\n\t\t// are slightly different: there is no index defined as in case of\n\t\t// arrays/slices/maps, just \"ooooorder\"\n\t\tvar found func(k, v reflect.Value)\n\t\tif result.Kind() != reflect.Invalid {\n\t\t\tif result.Kind() == reflect.Map {\n\t\t\t\tfm := reflect.MakeMap(result.Type())\n\t\t\t\tgetFindings = func() reflect.Value { return fm }\n\t\t\t\tfound = func(k, v reflect.Value) { fm.SetMapIndex(k, v) }\n\t\t\t} else {\n\t\t\t\tvar fsl reflect.Value\n\t\t\t\tif result.Kind() == reflect.Slice {\n\t\t\t\t\tfsl = reflect.MakeSlice(result.Type(), 0, 0)\n\t\t\t\t} else {\n\t\t\t\t\tfsl = reflect.MakeSlice(reflect.SliceOf(result.Type()), 0, 0)\n\t\t\t\t}\n\t\t\t\tgetFindings = func() reflect.Value { return fsl }\n\t\t\t\tfound = func(_, v reflect.Value) { fsl = reflect.Append(fsl, v) }\n\t\t\t}\n\t\t}\n\n\t\tsuccess := false\n\t\tactualkT, _ := miter.IterKVTypes(actual)\n\t\tif actualkT == nil {\n\t\t\tmiter.IterateV(actual, func(v reflect.Value) bool {\n\t\t\t\tvar err error\n\t\t\t\tsuccess, err = elemMatcher.Match(v.Interface())\n\t\t\t\tif err != nil {\n\t\t\t\t\tlastError = err\n\t\t\t\t\treturn true // iterate on...\n\t\t\t\t}\n\t\t\t\tif success {\n\t\t\t\t\tif result.Kind() == reflect.Invalid {\n\t\t\t\t\t\treturn false // a match and no result needed, so we're done\n\t\t\t\t\t}\n\t\t\t\t\tfound(reflect.Value{}, v)\n\t\t\t\t}\n\t\t\t\treturn true // iterate on...\n\t\t\t})\n\t\t} else {\n\t\t\tmiter.IterateKV(actual, func(k, v reflect.Value) bool {\n\t\t\t\tvar err error\n\t\t\t\tsuccess, err = elemMatcher.Match(v.Interface())\n\t\t\t\tif err != nil {\n\t\t\t\t\tlastError = err\n\t\t\t\t\treturn true // iterate on...\n\t\t\t\t}\n\t\t\t\tif success {\n\t\t\t\t\tif result.Kind() == reflect.Invalid {\n\t\t\t\t\t\treturn false // a match and no result needed, so we're done\n\t\t\t\t\t}\n\t\t\t\t\tfound(k, v)\n\t\t\t\t}\n\t\t\t\treturn true // iterate on...\n\t\t\t})\n\t\t}\n\t\tif success && result.Kind() == reflect.Invalid {\n\t\t\treturn true, nil\n\t\t}\n\t}\n\n\t// when the expectation isn't interested in the findings except for success\n\t// or non-success, then we're done here and return the last matcher error\n\t// seen, if any, as well as non-success.\n\tif result.Kind() == reflect.Invalid {\n\t\treturn false, lastError\n\t}\n\n\t// pick up any findings the test is interested in as it specified a non-nil\n\t// result reference. However, the expectation always is that there are at\n\t// least one or multiple findings. So, if a result is expected, but we had\n\t// no findings, then this is an error.\n\tfindings := getFindings()\n\tif findings.Len() == 0 {\n\t\treturn false, lastError\n\t}\n\n\t// there's just a single finding and the result is neither a slice nor a map\n\t// (so it's a scalar): pick the one and only finding and return it in the\n\t// place the reference points to.\n\tif findings.Len() == 1 && !isArrayOrSlice(result.Interface()) && !isMap(result.Interface()) {\n\t\tif isMap(actual) {\n\t\t\tmiter := findings.MapRange()\n\t\t\tmiter.Next()\n\t\t\tresult.Set(miter.Value())\n\t\t} else {\n\t\t\tresult.Set(findings.Index(0))\n\t\t}\n\t\treturn true, nil\n\t}\n\n\t// at least one or even multiple findings and a the result references a\n\t// slice or a map, so all we need to do is to store our findings where the\n\t// reference points to.\n\tif !findings.Type().AssignableTo(result.Type()) {\n\t\treturn false, fmt.Errorf(\"ContainElement cannot return multiple findings.  Need *%s, got *%s\",\n\t\t\tfindings.Type().String(), result.Type().String())\n\t}\n\tresult.Set(findings)\n\treturn true, nil\n}\n\nfunc (matcher *ContainElementMatcher) FailureMessage(actual any) (message string) {\n\treturn format.Message(actual, \"to contain element matching\", matcher.Element)\n}\n\nfunc (matcher *ContainElementMatcher) NegatedFailureMessage(actual any) (message string) {\n\treturn format.Message(actual, \"not to contain element matching\", matcher.Element)\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/contain_elements_matcher.go",
    "content": "package matchers\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/onsi/gomega/format\"\n\t\"github.com/onsi/gomega/matchers/internal/miter\"\n\t\"github.com/onsi/gomega/matchers/support/goraph/bipartitegraph\"\n)\n\ntype ContainElementsMatcher struct {\n\tElements        []any\n\tmissingElements []any\n}\n\nfunc (matcher *ContainElementsMatcher) Match(actual any) (success bool, err error) {\n\tif !isArrayOrSlice(actual) && !isMap(actual) && !miter.IsIter(actual) {\n\t\treturn false, fmt.Errorf(\"ContainElements matcher expects an array/slice/map/iter.Seq/iter.Seq2.  Got:\\n%s\", format.Object(actual, 1))\n\t}\n\n\tmatchers := matchers(matcher.Elements)\n\tbipartiteGraph, err := bipartitegraph.NewBipartiteGraph(valuesOf(actual), matchers, neighbours)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\n\tedges := bipartiteGraph.LargestMatching()\n\tif len(edges) == len(matchers) {\n\t\treturn true, nil\n\t}\n\n\t_, missingMatchers := bipartiteGraph.FreeLeftRight(edges)\n\tmatcher.missingElements = equalMatchersToElements(missingMatchers)\n\n\treturn false, nil\n}\n\nfunc (matcher *ContainElementsMatcher) FailureMessage(actual any) (message string) {\n\tmessage = format.Message(actual, \"to contain elements\", presentable(matcher.Elements))\n\treturn appendMissingElements(message, matcher.missingElements)\n}\n\nfunc (matcher *ContainElementsMatcher) NegatedFailureMessage(actual any) (message string) {\n\treturn format.Message(actual, \"not to contain elements\", presentable(matcher.Elements))\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/contain_substring_matcher.go",
    "content": "// untested sections: 2\n\npackage matchers\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\t\"github.com/onsi/gomega/format\"\n)\n\ntype ContainSubstringMatcher struct {\n\tSubstr string\n\tArgs   []any\n}\n\nfunc (matcher *ContainSubstringMatcher) Match(actual any) (success bool, err error) {\n\tactualString, ok := toString(actual)\n\tif !ok {\n\t\treturn false, fmt.Errorf(\"ContainSubstring matcher requires a string or stringer.  Got:\\n%s\", format.Object(actual, 1))\n\t}\n\n\treturn strings.Contains(actualString, matcher.stringToMatch()), nil\n}\n\nfunc (matcher *ContainSubstringMatcher) stringToMatch() string {\n\tstringToMatch := matcher.Substr\n\tif len(matcher.Args) > 0 {\n\t\tstringToMatch = fmt.Sprintf(matcher.Substr, matcher.Args...)\n\t}\n\treturn stringToMatch\n}\n\nfunc (matcher *ContainSubstringMatcher) FailureMessage(actual any) (message string) {\n\treturn format.Message(actual, \"to contain substring\", matcher.stringToMatch())\n}\n\nfunc (matcher *ContainSubstringMatcher) NegatedFailureMessage(actual any) (message string) {\n\treturn format.Message(actual, \"not to contain substring\", matcher.stringToMatch())\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/equal_matcher.go",
    "content": "package matchers\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"reflect\"\n\n\t\"github.com/onsi/gomega/format\"\n)\n\ntype EqualMatcher struct {\n\tExpected any\n}\n\nfunc (matcher *EqualMatcher) Match(actual any) (success bool, err error) {\n\tif actual == nil && matcher.Expected == nil {\n\t\treturn false, fmt.Errorf(\"Refusing to compare <nil> to <nil>.\\nBe explicit and use BeNil() instead.  This is to avoid mistakes where both sides of an assertion are erroneously uninitialized.\")\n\t}\n\t// Shortcut for byte slices.\n\t// Comparing long byte slices with reflect.DeepEqual is very slow,\n\t// so use bytes.Equal if actual and expected are both byte slices.\n\tif actualByteSlice, ok := actual.([]byte); ok {\n\t\tif expectedByteSlice, ok := matcher.Expected.([]byte); ok {\n\t\t\treturn bytes.Equal(actualByteSlice, expectedByteSlice), nil\n\t\t}\n\t}\n\treturn reflect.DeepEqual(actual, matcher.Expected), nil\n}\n\nfunc (matcher *EqualMatcher) FailureMessage(actual any) (message string) {\n\tactualString, actualOK := actual.(string)\n\texpectedString, expectedOK := matcher.Expected.(string)\n\tif actualOK && expectedOK {\n\t\treturn format.MessageWithDiff(actualString, \"to equal\", expectedString)\n\t}\n\n\treturn format.Message(actual, \"to equal\", matcher.Expected)\n}\n\nfunc (matcher *EqualMatcher) NegatedFailureMessage(actual any) (message string) {\n\treturn format.Message(actual, \"not to equal\", matcher.Expected)\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/have_cap_matcher.go",
    "content": "// untested sections: 2\n\npackage matchers\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/onsi/gomega/format\"\n)\n\ntype HaveCapMatcher struct {\n\tCount int\n}\n\nfunc (matcher *HaveCapMatcher) Match(actual any) (success bool, err error) {\n\tlength, ok := capOf(actual)\n\tif !ok {\n\t\treturn false, fmt.Errorf(\"HaveCap matcher expects a array/channel/slice.  Got:\\n%s\", format.Object(actual, 1))\n\t}\n\n\treturn length == matcher.Count, nil\n}\n\nfunc (matcher *HaveCapMatcher) FailureMessage(actual any) (message string) {\n\treturn fmt.Sprintf(\"Expected\\n%s\\nto have capacity %d\", format.Object(actual, 1), matcher.Count)\n}\n\nfunc (matcher *HaveCapMatcher) NegatedFailureMessage(actual any) (message string) {\n\treturn fmt.Sprintf(\"Expected\\n%s\\nnot to have capacity %d\", format.Object(actual, 1), matcher.Count)\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/have_each_matcher.go",
    "content": "package matchers\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\n\t\"github.com/onsi/gomega/format\"\n\t\"github.com/onsi/gomega/matchers/internal/miter\"\n)\n\ntype HaveEachMatcher struct {\n\tElement any\n}\n\nfunc (matcher *HaveEachMatcher) Match(actual any) (success bool, err error) {\n\tif !isArrayOrSlice(actual) && !isMap(actual) && !miter.IsIter(actual) {\n\t\treturn false, fmt.Errorf(\"HaveEach matcher expects an array/slice/map/iter.Seq/iter.Seq2.  Got:\\n%s\",\n\t\t\tformat.Object(actual, 1))\n\t}\n\n\telemMatcher, elementIsMatcher := matcher.Element.(omegaMatcher)\n\tif !elementIsMatcher {\n\t\telemMatcher = &EqualMatcher{Expected: matcher.Element}\n\t}\n\n\tif miter.IsIter(actual) {\n\t\t// rejecting the non-elements case works different for iterators as we\n\t\t// don't want to fetch all elements into a slice first.\n\t\tcount := 0\n\t\tvar success bool\n\t\tvar err error\n\t\tif miter.IsSeq2(actual) {\n\t\t\tmiter.IterateKV(actual, func(k, v reflect.Value) bool {\n\t\t\t\tcount++\n\t\t\t\tsuccess, err = elemMatcher.Match(v.Interface())\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\treturn success\n\t\t\t})\n\t\t} else {\n\t\t\tmiter.IterateV(actual, func(v reflect.Value) bool {\n\t\t\t\tcount++\n\t\t\t\tsuccess, err = elemMatcher.Match(v.Interface())\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\treturn success\n\t\t\t})\n\t\t}\n\t\tif count == 0 {\n\t\t\treturn false, fmt.Errorf(\"HaveEach matcher expects a non-empty iter.Seq/iter.Seq2.  Got:\\n%s\",\n\t\t\t\tformat.Object(actual, 1))\n\t\t}\n\t\treturn success, err\n\t}\n\n\tvalue := reflect.ValueOf(actual)\n\tif value.Len() == 0 {\n\t\treturn false, fmt.Errorf(\"HaveEach matcher expects a non-empty array/slice/map.  Got:\\n%s\",\n\t\t\tformat.Object(actual, 1))\n\t}\n\n\tvar valueAt func(int) any\n\tif isMap(actual) {\n\t\tkeys := value.MapKeys()\n\t\tvalueAt = func(i int) any {\n\t\t\treturn value.MapIndex(keys[i]).Interface()\n\t\t}\n\t} else {\n\t\tvalueAt = func(i int) any {\n\t\t\treturn value.Index(i).Interface()\n\t\t}\n\t}\n\n\t// if we never failed then we succeed; the empty/nil cases have already been\n\t// rejected above.\n\tfor i := 0; i < value.Len(); i++ {\n\t\tsuccess, err := elemMatcher.Match(valueAt(i))\n\t\tif err != nil {\n\t\t\treturn false, err\n\t\t}\n\t\tif !success {\n\t\t\treturn false, nil\n\t\t}\n\t}\n\n\treturn true, nil\n}\n\n// FailureMessage returns a suitable failure message.\nfunc (matcher *HaveEachMatcher) FailureMessage(actual any) (message string) {\n\treturn format.Message(actual, \"to contain element matching\", matcher.Element)\n}\n\n// NegatedFailureMessage returns a suitable negated failure message.\nfunc (matcher *HaveEachMatcher) NegatedFailureMessage(actual any) (message string) {\n\treturn format.Message(actual, \"not to contain element matching\", matcher.Element)\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/have_exact_elements.go",
    "content": "package matchers\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\n\t\"github.com/onsi/gomega/format\"\n\t\"github.com/onsi/gomega/matchers/internal/miter\"\n)\n\ntype mismatchFailure struct {\n\tfailure string\n\tindex   int\n}\n\ntype HaveExactElementsMatcher struct {\n\tElements         []any\n\tmismatchFailures []mismatchFailure\n\tmissingIndex     int\n\textraIndex       int\n}\n\nfunc (matcher *HaveExactElementsMatcher) Match(actual any) (success bool, err error) {\n\tmatcher.resetState()\n\n\tif isMap(actual) || miter.IsSeq2(actual) {\n\t\treturn false, fmt.Errorf(\"HaveExactElements matcher doesn't work on map or iter.Seq2.  Got:\\n%s\", format.Object(actual, 1))\n\t}\n\n\tmatchers := matchers(matcher.Elements)\n\tlenMatchers := len(matchers)\n\n\tsuccess = true\n\n\tif miter.IsIter(actual) {\n\t\t// In the worst case, we need to see everything before we can give our\n\t\t// verdict. The only exception is fast fail.\n\t\ti := 0\n\t\tmiter.IterateV(actual, func(v reflect.Value) bool {\n\t\t\tif i >= lenMatchers {\n\t\t\t\t// the iterator produces more values than we got matchers: this\n\t\t\t\t// is not good.\n\t\t\t\tmatcher.extraIndex = i\n\t\t\t\tsuccess = false\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\telemMatcher := matchers[i].(omegaMatcher)\n\t\t\tmatch, err := elemMatcher.Match(v.Interface())\n\t\t\tif err != nil {\n\t\t\t\tmatcher.mismatchFailures = append(matcher.mismatchFailures, mismatchFailure{\n\t\t\t\t\tindex:   i,\n\t\t\t\t\tfailure: err.Error(),\n\t\t\t\t})\n\t\t\t\tsuccess = false\n\t\t\t} else if !match {\n\t\t\t\tmatcher.mismatchFailures = append(matcher.mismatchFailures, mismatchFailure{\n\t\t\t\t\tindex:   i,\n\t\t\t\t\tfailure: elemMatcher.FailureMessage(v.Interface()),\n\t\t\t\t})\n\t\t\t\tsuccess = false\n\t\t\t}\n\t\t\ti++\n\t\t\treturn true\n\t\t})\n\t\tif i < len(matchers) {\n\t\t\t// the iterator produced less values than we got matchers: this is\n\t\t\t// no good, no no no.\n\t\t\tmatcher.missingIndex = i\n\t\t\tsuccess = false\n\t\t}\n\t\treturn success, nil\n\t}\n\n\tvalues := valuesOf(actual)\n\tlenValues := len(values)\n\n\tfor i := 0; i < lenMatchers || i < lenValues; i++ {\n\t\tif i >= lenMatchers {\n\t\t\tmatcher.extraIndex = i\n\t\t\tsuccess = false\n\t\t\tcontinue\n\t\t}\n\n\t\tif i >= lenValues {\n\t\t\tmatcher.missingIndex = i\n\t\t\tsuccess = false\n\t\t\treturn\n\t\t}\n\n\t\telemMatcher := matchers[i].(omegaMatcher)\n\t\tmatch, err := elemMatcher.Match(values[i])\n\t\tif err != nil {\n\t\t\tmatcher.mismatchFailures = append(matcher.mismatchFailures, mismatchFailure{\n\t\t\t\tindex:   i,\n\t\t\t\tfailure: err.Error(),\n\t\t\t})\n\t\t\tsuccess = false\n\t\t} else if !match {\n\t\t\tmatcher.mismatchFailures = append(matcher.mismatchFailures, mismatchFailure{\n\t\t\t\tindex:   i,\n\t\t\t\tfailure: elemMatcher.FailureMessage(values[i]),\n\t\t\t})\n\t\t\tsuccess = false\n\t\t}\n\t}\n\n\treturn success, nil\n}\n\nfunc (matcher *HaveExactElementsMatcher) FailureMessage(actual any) (message string) {\n\tmessage = format.Message(actual, \"to have exact elements with\", presentable(matcher.Elements))\n\tif matcher.missingIndex > 0 {\n\t\tmessage = fmt.Sprintf(\"%s\\nthe missing elements start from index %d\", message, matcher.missingIndex)\n\t}\n\tif matcher.extraIndex > 0 {\n\t\tmessage = fmt.Sprintf(\"%s\\nthe extra elements start from index %d\", message, matcher.extraIndex)\n\t}\n\tif len(matcher.mismatchFailures) != 0 {\n\t\tmessage = fmt.Sprintf(\"%s\\nthe mismatch indexes were:\", message)\n\t}\n\tfor _, mismatch := range matcher.mismatchFailures {\n\t\tmessage = fmt.Sprintf(\"%s\\n%d: %s\", message, mismatch.index, mismatch.failure)\n\t}\n\treturn\n}\n\nfunc (matcher *HaveExactElementsMatcher) NegatedFailureMessage(actual any) (message string) {\n\treturn format.Message(actual, \"not to contain elements\", presentable(matcher.Elements))\n}\n\nfunc (matcher *HaveExactElementsMatcher) resetState() {\n\tmatcher.mismatchFailures = nil\n\tmatcher.missingIndex = 0\n\tmatcher.extraIndex = 0\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/have_existing_field_matcher.go",
    "content": "package matchers\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\n\t\"github.com/onsi/gomega/format\"\n)\n\ntype HaveExistingFieldMatcher struct {\n\tField string\n}\n\nfunc (matcher *HaveExistingFieldMatcher) Match(actual any) (success bool, err error) {\n\t// we don't care about the field's actual value, just about any error in\n\t// trying to find the field (or method).\n\t_, err = extractField(actual, matcher.Field, \"HaveExistingField\")\n\tif err == nil {\n\t\treturn true, nil\n\t}\n\tvar mferr missingFieldError\n\tif errors.As(err, &mferr) {\n\t\t// missing field errors aren't errors in this context, but instead\n\t\t// unsuccessful matches.\n\t\treturn false, nil\n\t}\n\treturn false, err\n}\n\nfunc (matcher *HaveExistingFieldMatcher) FailureMessage(actual any) (message string) {\n\treturn fmt.Sprintf(\"Expected\\n%s\\nto have field '%s'\", format.Object(actual, 1), matcher.Field)\n}\n\nfunc (matcher *HaveExistingFieldMatcher) NegatedFailureMessage(actual any) (message string) {\n\treturn fmt.Sprintf(\"Expected\\n%s\\nnot to have field '%s'\", format.Object(actual, 1), matcher.Field)\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/have_field.go",
    "content": "package matchers\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"strings\"\n\n\t\"github.com/onsi/gomega/format\"\n)\n\n// missingFieldError represents a missing field extraction error that\n// HaveExistingFieldMatcher can ignore, as opposed to other, sever field\n// extraction errors, such as nil pointers, et cetera.\ntype missingFieldError string\n\nfunc (e missingFieldError) Error() string {\n\treturn string(e)\n}\n\nfunc extractField(actual any, field string, matchername string) (any, error) {\n\tfields := strings.SplitN(field, \".\", 2)\n\tactualValue := reflect.ValueOf(actual)\n\n\tif actualValue.Kind() == reflect.Ptr {\n\t\tactualValue = actualValue.Elem()\n\t}\n\tif actualValue == (reflect.Value{}) {\n\t\treturn nil, fmt.Errorf(\"%s encountered nil while dereferencing a pointer of type %T.\", matchername, actual)\n\t}\n\n\tif actualValue.Kind() != reflect.Struct {\n\t\treturn nil, fmt.Errorf(\"%s encountered:\\n%s\\nWhich is not a struct.\", matchername, format.Object(actual, 1))\n\t}\n\n\tvar extractedValue reflect.Value\n\n\tif strings.HasSuffix(fields[0], \"()\") {\n\t\textractedValue = actualValue.MethodByName(strings.TrimSuffix(fields[0], \"()\"))\n\t\tif extractedValue == (reflect.Value{}) && actualValue.CanAddr() {\n\t\t\textractedValue = actualValue.Addr().MethodByName(strings.TrimSuffix(fields[0], \"()\"))\n\t\t}\n\t\tif extractedValue == (reflect.Value{}) {\n\t\t\tptr := reflect.New(actualValue.Type())\n\t\t\tptr.Elem().Set(actualValue)\n\t\t\textractedValue = ptr.MethodByName(strings.TrimSuffix(fields[0], \"()\"))\n\t\t\tif extractedValue == (reflect.Value{}) {\n\t\t\t\treturn nil, missingFieldError(fmt.Sprintf(\"%s could not find method named '%s' in struct of type %T.\", matchername, fields[0], actual))\n\t\t\t}\n\t\t}\n\t\tt := extractedValue.Type()\n\t\tif t.NumIn() != 0 || t.NumOut() != 1 {\n\t\t\treturn nil, fmt.Errorf(\"%s found an invalid method named '%s' in struct of type %T.\\nMethods must take no arguments and return exactly one value.\", matchername, fields[0], actual)\n\t\t}\n\t\textractedValue = extractedValue.Call([]reflect.Value{})[0]\n\t} else {\n\t\textractedValue = actualValue.FieldByName(fields[0])\n\t\tif extractedValue == (reflect.Value{}) {\n\t\t\treturn nil, missingFieldError(fmt.Sprintf(\"%s could not find field named '%s' in struct:\\n%s\", matchername, fields[0], format.Object(actual, 1)))\n\t\t}\n\t}\n\n\tif len(fields) == 1 {\n\t\treturn extractedValue.Interface(), nil\n\t} else {\n\t\treturn extractField(extractedValue.Interface(), fields[1], matchername)\n\t}\n}\n\ntype HaveFieldMatcher struct {\n\tField    string\n\tExpected any\n}\n\nfunc (matcher *HaveFieldMatcher) expectedMatcher() omegaMatcher {\n\tvar isMatcher bool\n\texpectedMatcher, isMatcher := matcher.Expected.(omegaMatcher)\n\tif !isMatcher {\n\t\texpectedMatcher = &EqualMatcher{Expected: matcher.Expected}\n\t}\n\treturn expectedMatcher\n}\n\nfunc (matcher *HaveFieldMatcher) Match(actual any) (success bool, err error) {\n\textractedField, err := extractField(actual, matcher.Field, \"HaveField\")\n\tif err != nil {\n\t\treturn false, err\n\t}\n\n\treturn matcher.expectedMatcher().Match(extractedField)\n}\n\nfunc (matcher *HaveFieldMatcher) FailureMessage(actual any) (message string) {\n\textractedField, err := extractField(actual, matcher.Field, \"HaveField\")\n\tif err != nil {\n\t\t// this really shouldn't happen\n\t\treturn fmt.Sprintf(\"Failed to extract field '%s': %s\", matcher.Field, err)\n\t}\n\tmessage = fmt.Sprintf(\"Value for field '%s' failed to satisfy matcher.\\n\", matcher.Field)\n\tmessage += matcher.expectedMatcher().FailureMessage(extractedField)\n\n\treturn message\n}\n\nfunc (matcher *HaveFieldMatcher) NegatedFailureMessage(actual any) (message string) {\n\textractedField, err := extractField(actual, matcher.Field, \"HaveField\")\n\tif err != nil {\n\t\t// this really shouldn't happen\n\t\treturn fmt.Sprintf(\"Failed to extract field '%s': %s\", matcher.Field, err)\n\t}\n\tmessage = fmt.Sprintf(\"Value for field '%s' satisfied matcher, but should not have.\\n\", matcher.Field)\n\tmessage += matcher.expectedMatcher().NegatedFailureMessage(extractedField)\n\n\treturn message\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/have_http_body_matcher.go",
    "content": "package matchers\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"net/http/httptest\"\n\n\t\"github.com/onsi/gomega/format\"\n\t\"github.com/onsi/gomega/internal/gutil\"\n\t\"github.com/onsi/gomega/types\"\n)\n\ntype HaveHTTPBodyMatcher struct {\n\tExpected       any\n\tcachedResponse any\n\tcachedBody     []byte\n}\n\nfunc (matcher *HaveHTTPBodyMatcher) Match(actual any) (bool, error) {\n\tbody, err := matcher.body(actual)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\n\tswitch e := matcher.Expected.(type) {\n\tcase string:\n\t\treturn (&EqualMatcher{Expected: e}).Match(string(body))\n\tcase []byte:\n\t\treturn (&EqualMatcher{Expected: e}).Match(body)\n\tcase types.GomegaMatcher:\n\t\treturn e.Match(body)\n\tdefault:\n\t\treturn false, fmt.Errorf(\"HaveHTTPBody matcher expects string, []byte, or GomegaMatcher. Got:\\n%s\", format.Object(matcher.Expected, 1))\n\t}\n}\n\nfunc (matcher *HaveHTTPBodyMatcher) FailureMessage(actual any) (message string) {\n\tbody, err := matcher.body(actual)\n\tif err != nil {\n\t\treturn fmt.Sprintf(\"failed to read body: %s\", err)\n\t}\n\n\tswitch e := matcher.Expected.(type) {\n\tcase string:\n\t\treturn (&EqualMatcher{Expected: e}).FailureMessage(string(body))\n\tcase []byte:\n\t\treturn (&EqualMatcher{Expected: e}).FailureMessage(body)\n\tcase types.GomegaMatcher:\n\t\treturn e.FailureMessage(body)\n\tdefault:\n\t\treturn fmt.Sprintf(\"HaveHTTPBody matcher expects string, []byte, or GomegaMatcher. Got:\\n%s\", format.Object(matcher.Expected, 1))\n\t}\n}\n\nfunc (matcher *HaveHTTPBodyMatcher) NegatedFailureMessage(actual any) (message string) {\n\tbody, err := matcher.body(actual)\n\tif err != nil {\n\t\treturn fmt.Sprintf(\"failed to read body: %s\", err)\n\t}\n\n\tswitch e := matcher.Expected.(type) {\n\tcase string:\n\t\treturn (&EqualMatcher{Expected: e}).NegatedFailureMessage(string(body))\n\tcase []byte:\n\t\treturn (&EqualMatcher{Expected: e}).NegatedFailureMessage(body)\n\tcase types.GomegaMatcher:\n\t\treturn e.NegatedFailureMessage(body)\n\tdefault:\n\t\treturn fmt.Sprintf(\"HaveHTTPBody matcher expects string, []byte, or GomegaMatcher. Got:\\n%s\", format.Object(matcher.Expected, 1))\n\t}\n}\n\n// body returns the body. It is cached because once we read it in Match()\n// the Reader is closed and it is not readable again in FailureMessage()\n// or NegatedFailureMessage()\nfunc (matcher *HaveHTTPBodyMatcher) body(actual any) ([]byte, error) {\n\tif matcher.cachedResponse == actual && matcher.cachedBody != nil {\n\t\treturn matcher.cachedBody, nil\n\t}\n\n\tbody := func(a *http.Response) ([]byte, error) {\n\t\tif a.Body != nil {\n\t\t\tdefer a.Body.Close()\n\t\t\tvar err error\n\t\t\tmatcher.cachedBody, err = gutil.ReadAll(a.Body)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"error reading response body: %w\", err)\n\t\t\t}\n\t\t}\n\t\treturn matcher.cachedBody, nil\n\t}\n\n\tswitch a := actual.(type) {\n\tcase *http.Response:\n\t\tmatcher.cachedResponse = a\n\t\treturn body(a)\n\tcase *httptest.ResponseRecorder:\n\t\tmatcher.cachedResponse = a\n\t\treturn body(a.Result())\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"HaveHTTPBody matcher expects *http.Response or *httptest.ResponseRecorder. Got:\\n%s\", format.Object(actual, 1))\n\t}\n\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/have_http_header_with_value_matcher.go",
    "content": "package matchers\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"net/http/httptest\"\n\n\t\"github.com/onsi/gomega/format\"\n\t\"github.com/onsi/gomega/types\"\n)\n\ntype HaveHTTPHeaderWithValueMatcher struct {\n\tHeader string\n\tValue  any\n}\n\nfunc (matcher *HaveHTTPHeaderWithValueMatcher) Match(actual any) (success bool, err error) {\n\theaderValue, err := matcher.extractHeader(actual)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\n\theaderMatcher, err := matcher.getSubMatcher()\n\tif err != nil {\n\t\treturn false, err\n\t}\n\n\treturn headerMatcher.Match(headerValue)\n}\n\nfunc (matcher *HaveHTTPHeaderWithValueMatcher) FailureMessage(actual any) string {\n\theaderValue, err := matcher.extractHeader(actual)\n\tif err != nil {\n\t\tpanic(err) // protected by Match()\n\t}\n\n\theaderMatcher, err := matcher.getSubMatcher()\n\tif err != nil {\n\t\tpanic(err) // protected by Match()\n\t}\n\n\tdiff := format.IndentString(headerMatcher.FailureMessage(headerValue), 1)\n\treturn fmt.Sprintf(\"HTTP header %q:\\n%s\", matcher.Header, diff)\n}\n\nfunc (matcher *HaveHTTPHeaderWithValueMatcher) NegatedFailureMessage(actual any) (message string) {\n\theaderValue, err := matcher.extractHeader(actual)\n\tif err != nil {\n\t\tpanic(err) // protected by Match()\n\t}\n\n\theaderMatcher, err := matcher.getSubMatcher()\n\tif err != nil {\n\t\tpanic(err) // protected by Match()\n\t}\n\n\tdiff := format.IndentString(headerMatcher.NegatedFailureMessage(headerValue), 1)\n\treturn fmt.Sprintf(\"HTTP header %q:\\n%s\", matcher.Header, diff)\n}\n\nfunc (matcher *HaveHTTPHeaderWithValueMatcher) getSubMatcher() (types.GomegaMatcher, error) {\n\tswitch m := matcher.Value.(type) {\n\tcase string:\n\t\treturn &EqualMatcher{Expected: matcher.Value}, nil\n\tcase types.GomegaMatcher:\n\t\treturn m, nil\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"HaveHTTPHeaderWithValue matcher must be passed a string or a GomegaMatcher. Got:\\n%s\", format.Object(matcher.Value, 1))\n\t}\n}\n\nfunc (matcher *HaveHTTPHeaderWithValueMatcher) extractHeader(actual any) (string, error) {\n\tswitch r := actual.(type) {\n\tcase *http.Response:\n\t\treturn r.Header.Get(matcher.Header), nil\n\tcase *httptest.ResponseRecorder:\n\t\treturn r.Result().Header.Get(matcher.Header), nil\n\tdefault:\n\t\treturn \"\", fmt.Errorf(\"HaveHTTPHeaderWithValue matcher expects *http.Response or *httptest.ResponseRecorder. Got:\\n%s\", format.Object(actual, 1))\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/have_http_status_matcher.go",
    "content": "package matchers\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"net/http/httptest\"\n\t\"reflect\"\n\t\"strings\"\n\n\t\"github.com/onsi/gomega/format\"\n\t\"github.com/onsi/gomega/internal/gutil\"\n)\n\ntype HaveHTTPStatusMatcher struct {\n\tExpected []any\n}\n\nfunc (matcher *HaveHTTPStatusMatcher) Match(actual any) (success bool, err error) {\n\tvar resp *http.Response\n\tswitch a := actual.(type) {\n\tcase *http.Response:\n\t\tresp = a\n\tcase *httptest.ResponseRecorder:\n\t\tresp = a.Result()\n\tdefault:\n\t\treturn false, fmt.Errorf(\"HaveHTTPStatus matcher expects *http.Response or *httptest.ResponseRecorder. Got:\\n%s\", format.Object(actual, 1))\n\t}\n\n\tif len(matcher.Expected) == 0 {\n\t\treturn false, fmt.Errorf(\"HaveHTTPStatus matcher must be passed an int or a string. Got nothing\")\n\t}\n\n\tfor _, expected := range matcher.Expected {\n\t\tswitch e := expected.(type) {\n\t\tcase int:\n\t\t\tif resp.StatusCode == e {\n\t\t\t\treturn true, nil\n\t\t\t}\n\t\tcase string:\n\t\t\tif resp.Status == e {\n\t\t\t\treturn true, nil\n\t\t\t}\n\t\tdefault:\n\t\t\treturn false, fmt.Errorf(\"HaveHTTPStatus matcher must be passed int or string types. Got:\\n%s\", format.Object(expected, 1))\n\t\t}\n\t}\n\n\treturn false, nil\n}\n\nfunc (matcher *HaveHTTPStatusMatcher) FailureMessage(actual any) (message string) {\n\treturn fmt.Sprintf(\"Expected\\n%s\\n%s\\n%s\", formatHttpResponse(actual), \"to have HTTP status\", matcher.expectedString())\n}\n\nfunc (matcher *HaveHTTPStatusMatcher) NegatedFailureMessage(actual any) (message string) {\n\treturn fmt.Sprintf(\"Expected\\n%s\\n%s\\n%s\", formatHttpResponse(actual), \"not to have HTTP status\", matcher.expectedString())\n}\n\nfunc (matcher *HaveHTTPStatusMatcher) expectedString() string {\n\tvar lines []string\n\tfor _, expected := range matcher.Expected {\n\t\tlines = append(lines, format.Object(expected, 1))\n\t}\n\treturn strings.Join(lines, \"\\n\")\n}\n\nfunc formatHttpResponse(input any) string {\n\tvar resp *http.Response\n\tswitch r := input.(type) {\n\tcase *http.Response:\n\t\tresp = r\n\tcase *httptest.ResponseRecorder:\n\t\tresp = r.Result()\n\tdefault:\n\t\treturn \"cannot format invalid HTTP response\"\n\t}\n\n\tbody := \"<nil>\"\n\tif resp.Body != nil {\n\t\tdefer resp.Body.Close()\n\t\tdata, err := gutil.ReadAll(resp.Body)\n\t\tif err != nil {\n\t\t\tdata = []byte(\"<error reading body>\")\n\t\t}\n\t\tbody = format.Object(string(data), 0)\n\t}\n\n\tvar s strings.Builder\n\ts.WriteString(fmt.Sprintf(\"%s<%s>: {\\n\", format.Indent, reflect.TypeOf(input)))\n\ts.WriteString(fmt.Sprintf(\"%s%sStatus:     %s\\n\", format.Indent, format.Indent, format.Object(resp.Status, 0)))\n\ts.WriteString(fmt.Sprintf(\"%s%sStatusCode: %s\\n\", format.Indent, format.Indent, format.Object(resp.StatusCode, 0)))\n\ts.WriteString(fmt.Sprintf(\"%s%sBody:       %s\\n\", format.Indent, format.Indent, body))\n\ts.WriteString(fmt.Sprintf(\"%s}\", format.Indent))\n\n\treturn s.String()\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/have_key_matcher.go",
    "content": "// untested sections: 6\n\npackage matchers\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\n\t\"github.com/onsi/gomega/format\"\n\t\"github.com/onsi/gomega/matchers/internal/miter\"\n)\n\ntype HaveKeyMatcher struct {\n\tKey any\n}\n\nfunc (matcher *HaveKeyMatcher) Match(actual any) (success bool, err error) {\n\tif !isMap(actual) && !miter.IsSeq2(actual) {\n\t\treturn false, fmt.Errorf(\"HaveKey matcher expects a map/iter.Seq2.  Got:%s\", format.Object(actual, 1))\n\t}\n\n\tkeyMatcher, keyIsMatcher := matcher.Key.(omegaMatcher)\n\tif !keyIsMatcher {\n\t\tkeyMatcher = &EqualMatcher{Expected: matcher.Key}\n\t}\n\n\tif miter.IsSeq2(actual) {\n\t\tvar success bool\n\t\tvar err error\n\t\tmiter.IterateKV(actual, func(k, v reflect.Value) bool {\n\t\t\tsuccess, err = keyMatcher.Match(k.Interface())\n\t\t\tif err != nil {\n\t\t\t\terr = fmt.Errorf(\"HaveKey's key matcher failed with:\\n%s%s\", format.Indent, err.Error())\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn !success\n\t\t})\n\t\treturn success, err\n\t}\n\n\tkeys := reflect.ValueOf(actual).MapKeys()\n\tfor i := range keys {\n\t\tsuccess, err := keyMatcher.Match(keys[i].Interface())\n\t\tif err != nil {\n\t\t\treturn false, fmt.Errorf(\"HaveKey's key matcher failed with:\\n%s%s\", format.Indent, err.Error())\n\t\t}\n\t\tif success {\n\t\t\treturn true, nil\n\t\t}\n\t}\n\n\treturn false, nil\n}\n\nfunc (matcher *HaveKeyMatcher) FailureMessage(actual any) (message string) {\n\tswitch matcher.Key.(type) {\n\tcase omegaMatcher:\n\t\treturn format.Message(actual, \"to have key matching\", matcher.Key)\n\tdefault:\n\t\treturn format.Message(actual, \"to have key\", matcher.Key)\n\t}\n}\n\nfunc (matcher *HaveKeyMatcher) NegatedFailureMessage(actual any) (message string) {\n\tswitch matcher.Key.(type) {\n\tcase omegaMatcher:\n\t\treturn format.Message(actual, \"not to have key matching\", matcher.Key)\n\tdefault:\n\t\treturn format.Message(actual, \"not to have key\", matcher.Key)\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/have_key_with_value_matcher.go",
    "content": "// untested sections:10\n\npackage matchers\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\n\t\"github.com/onsi/gomega/format\"\n\t\"github.com/onsi/gomega/matchers/internal/miter\"\n)\n\ntype HaveKeyWithValueMatcher struct {\n\tKey   any\n\tValue any\n}\n\nfunc (matcher *HaveKeyWithValueMatcher) Match(actual any) (success bool, err error) {\n\tif !isMap(actual) && !miter.IsSeq2(actual) {\n\t\treturn false, fmt.Errorf(\"HaveKeyWithValue matcher expects a map/iter.Seq2.  Got:%s\", format.Object(actual, 1))\n\t}\n\n\tkeyMatcher, keyIsMatcher := matcher.Key.(omegaMatcher)\n\tif !keyIsMatcher {\n\t\tkeyMatcher = &EqualMatcher{Expected: matcher.Key}\n\t}\n\n\tvalueMatcher, valueIsMatcher := matcher.Value.(omegaMatcher)\n\tif !valueIsMatcher {\n\t\tvalueMatcher = &EqualMatcher{Expected: matcher.Value}\n\t}\n\n\tif miter.IsSeq2(actual) {\n\t\tvar success bool\n\t\tvar err error\n\t\tmiter.IterateKV(actual, func(k, v reflect.Value) bool {\n\t\t\tsuccess, err = keyMatcher.Match(k.Interface())\n\t\t\tif err != nil {\n\t\t\t\terr = fmt.Errorf(\"HaveKey's key matcher failed with:\\n%s%s\", format.Indent, err.Error())\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif success {\n\t\t\t\tsuccess, err = valueMatcher.Match(v.Interface())\n\t\t\t\tif err != nil {\n\t\t\t\t\terr = fmt.Errorf(\"HaveKeyWithValue's value matcher failed with:\\n%s%s\", format.Indent, err.Error())\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn !success\n\t\t})\n\t\treturn success, err\n\t}\n\n\tkeys := reflect.ValueOf(actual).MapKeys()\n\tfor i := range keys {\n\t\tsuccess, err := keyMatcher.Match(keys[i].Interface())\n\t\tif err != nil {\n\t\t\treturn false, fmt.Errorf(\"HaveKeyWithValue's key matcher failed with:\\n%s%s\", format.Indent, err.Error())\n\t\t}\n\t\tif success {\n\t\t\tactualValue := reflect.ValueOf(actual).MapIndex(keys[i])\n\t\t\tsuccess, err := valueMatcher.Match(actualValue.Interface())\n\t\t\tif err != nil {\n\t\t\t\treturn false, fmt.Errorf(\"HaveKeyWithValue's value matcher failed with:\\n%s%s\", format.Indent, err.Error())\n\t\t\t}\n\t\t\treturn success, nil\n\t\t}\n\t}\n\n\treturn false, nil\n}\n\nfunc (matcher *HaveKeyWithValueMatcher) FailureMessage(actual any) (message string) {\n\tstr := \"to have {key: value}\"\n\tif _, ok := matcher.Key.(omegaMatcher); ok {\n\t\tstr += \" matching\"\n\t} else if _, ok := matcher.Value.(omegaMatcher); ok {\n\t\tstr += \" matching\"\n\t}\n\n\texpect := make(map[any]any, 1)\n\texpect[matcher.Key] = matcher.Value\n\treturn format.Message(actual, str, expect)\n}\n\nfunc (matcher *HaveKeyWithValueMatcher) NegatedFailureMessage(actual any) (message string) {\n\tkStr := \"not to have key\"\n\tif _, ok := matcher.Key.(omegaMatcher); ok {\n\t\tkStr = \"not to have key matching\"\n\t}\n\n\tvStr := \"or that key's value not be\"\n\tif _, ok := matcher.Value.(omegaMatcher); ok {\n\t\tvStr = \"or to have that key's value not matching\"\n\t}\n\n\treturn format.Message(actual, kStr, matcher.Key, vStr, matcher.Value)\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/have_len_matcher.go",
    "content": "package matchers\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/onsi/gomega/format\"\n)\n\ntype HaveLenMatcher struct {\n\tCount int\n}\n\nfunc (matcher *HaveLenMatcher) Match(actual any) (success bool, err error) {\n\tlength, ok := lengthOf(actual)\n\tif !ok {\n\t\treturn false, fmt.Errorf(\"HaveLen matcher expects a string/array/map/channel/slice/iterator.  Got:\\n%s\", format.Object(actual, 1))\n\t}\n\n\treturn length == matcher.Count, nil\n}\n\nfunc (matcher *HaveLenMatcher) FailureMessage(actual any) (message string) {\n\treturn fmt.Sprintf(\"Expected\\n%s\\nto have length %d\", format.Object(actual, 1), matcher.Count)\n}\n\nfunc (matcher *HaveLenMatcher) NegatedFailureMessage(actual any) (message string) {\n\treturn fmt.Sprintf(\"Expected\\n%s\\nnot to have length %d\", format.Object(actual, 1), matcher.Count)\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/have_occurred_matcher.go",
    "content": "// untested sections: 2\n\npackage matchers\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/onsi/gomega/format\"\n)\n\ntype HaveOccurredMatcher struct {\n}\n\nfunc (matcher *HaveOccurredMatcher) Match(actual any) (success bool, err error) {\n\t// is purely nil?\n\tif actual == nil {\n\t\treturn false, nil\n\t}\n\n\t// must be an 'error' type\n\tif !isError(actual) {\n\t\treturn false, fmt.Errorf(\"Expected an error-type.  Got:\\n%s\", format.Object(actual, 1))\n\t}\n\n\t// must be non-nil (or a pointer to a non-nil)\n\treturn !isNil(actual), nil\n}\n\nfunc (matcher *HaveOccurredMatcher) FailureMessage(actual any) (message string) {\n\treturn fmt.Sprintf(\"Expected an error to have occurred.  Got:\\n%s\", format.Object(actual, 1))\n}\n\nfunc (matcher *HaveOccurredMatcher) NegatedFailureMessage(actual any) (message string) {\n\treturn fmt.Sprintf(\"Unexpected error:\\n%s\\n%s\", format.Object(actual, 1), \"occurred\")\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/have_prefix_matcher.go",
    "content": "package matchers\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/onsi/gomega/format\"\n)\n\ntype HavePrefixMatcher struct {\n\tPrefix string\n\tArgs   []any\n}\n\nfunc (matcher *HavePrefixMatcher) Match(actual any) (success bool, err error) {\n\tactualString, ok := toString(actual)\n\tif !ok {\n\t\treturn false, fmt.Errorf(\"HavePrefix matcher requires a string or stringer.  Got:\\n%s\", format.Object(actual, 1))\n\t}\n\tprefix := matcher.prefix()\n\treturn len(actualString) >= len(prefix) && actualString[0:len(prefix)] == prefix, nil\n}\n\nfunc (matcher *HavePrefixMatcher) prefix() string {\n\tif len(matcher.Args) > 0 {\n\t\treturn fmt.Sprintf(matcher.Prefix, matcher.Args...)\n\t}\n\treturn matcher.Prefix\n}\n\nfunc (matcher *HavePrefixMatcher) FailureMessage(actual any) (message string) {\n\treturn format.Message(actual, \"to have prefix\", matcher.prefix())\n}\n\nfunc (matcher *HavePrefixMatcher) NegatedFailureMessage(actual any) (message string) {\n\treturn format.Message(actual, \"not to have prefix\", matcher.prefix())\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/have_suffix_matcher.go",
    "content": "package matchers\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/onsi/gomega/format\"\n)\n\ntype HaveSuffixMatcher struct {\n\tSuffix string\n\tArgs   []any\n}\n\nfunc (matcher *HaveSuffixMatcher) Match(actual any) (success bool, err error) {\n\tactualString, ok := toString(actual)\n\tif !ok {\n\t\treturn false, fmt.Errorf(\"HaveSuffix matcher requires a string or stringer.  Got:\\n%s\", format.Object(actual, 1))\n\t}\n\tsuffix := matcher.suffix()\n\treturn len(actualString) >= len(suffix) && actualString[len(actualString)-len(suffix):] == suffix, nil\n}\n\nfunc (matcher *HaveSuffixMatcher) suffix() string {\n\tif len(matcher.Args) > 0 {\n\t\treturn fmt.Sprintf(matcher.Suffix, matcher.Args...)\n\t}\n\treturn matcher.Suffix\n}\n\nfunc (matcher *HaveSuffixMatcher) FailureMessage(actual any) (message string) {\n\treturn format.Message(actual, \"to have suffix\", matcher.suffix())\n}\n\nfunc (matcher *HaveSuffixMatcher) NegatedFailureMessage(actual any) (message string) {\n\treturn format.Message(actual, \"not to have suffix\", matcher.suffix())\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/have_value.go",
    "content": "package matchers\n\nimport (\n\t\"errors\"\n\t\"reflect\"\n\n\t\"github.com/onsi/gomega/format\"\n\t\"github.com/onsi/gomega/types\"\n)\n\nconst maxIndirections = 31\n\ntype HaveValueMatcher struct {\n\tMatcher        types.GomegaMatcher // the matcher to apply to the \"resolved\" actual value.\n\tresolvedActual any                 // the (\"resolved\") value.\n}\n\nfunc (m *HaveValueMatcher) Match(actual any) (bool, error) {\n\tval := reflect.ValueOf(actual)\n\tfor allowedIndirs := maxIndirections; allowedIndirs > 0; allowedIndirs-- {\n\t\t// return an error if value isn't valid. Please note that we cannot\n\t\t// check for nil here, as we might not deal with a pointer or interface\n\t\t// at this point.\n\t\tif !val.IsValid() {\n\t\t\treturn false, errors.New(format.Message(\n\t\t\t\tactual, \"not to be <nil>\"))\n\t\t}\n\t\tswitch val.Kind() {\n\t\tcase reflect.Ptr, reflect.Interface:\n\t\t\t// resolve pointers and interfaces to their values, then rinse and\n\t\t\t// repeat.\n\t\t\tif val.IsNil() {\n\t\t\t\treturn false, errors.New(format.Message(\n\t\t\t\t\tactual, \"not to be <nil>\"))\n\t\t\t}\n\t\t\tval = val.Elem()\n\t\t\tcontinue\n\t\tdefault:\n\t\t\t// forward the final value to the specified matcher.\n\t\t\tm.resolvedActual = val.Interface()\n\t\t\treturn m.Matcher.Match(m.resolvedActual)\n\t\t}\n\t}\n\t// too many indirections: extreme star gazing, indeed...?\n\treturn false, errors.New(format.Message(actual, \"too many indirections\"))\n}\n\nfunc (m *HaveValueMatcher) FailureMessage(_ any) (message string) {\n\treturn m.Matcher.FailureMessage(m.resolvedActual)\n}\n\nfunc (m *HaveValueMatcher) NegatedFailureMessage(_ any) (message string) {\n\treturn m.Matcher.NegatedFailureMessage(m.resolvedActual)\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/internal/miter/type_support_iter.go",
    "content": "//go:build go1.23\n\npackage miter\n\nimport (\n\t\"reflect\"\n)\n\n// HasIterators always returns false for Go versions before 1.23.\nfunc HasIterators() bool { return true }\n\n// IsIter returns true if the specified value is a function type that can be\n// range-d over, otherwise false.\n//\n// We don't use reflect's CanSeq and CanSeq2 directly, as these would return\n// true also for other value types that are range-able, such as integers,\n// slices, et cetera. Here, we aim only at range-able (iterator) functions.\nfunc IsIter(it any) bool {\n\tif it == nil { // on purpose we only test for untyped nil.\n\t\treturn false\n\t}\n\t// reject all non-iterator-func values, even if they're range-able.\n\tt := reflect.TypeOf(it)\n\tif t.Kind() != reflect.Func {\n\t\treturn false\n\t}\n\treturn t.CanSeq() || t.CanSeq2()\n}\n\n// IterKVTypes returns the reflection types of an iterator's yield function's K\n// and optional V arguments, otherwise nil K and V reflection types.\nfunc IterKVTypes(it any) (k, v reflect.Type) {\n\tif it == nil {\n\t\treturn\n\t}\n\t// reject all non-iterator-func values, even if they're range-able.\n\tt := reflect.TypeOf(it)\n\tif t.Kind() != reflect.Func {\n\t\treturn\n\t}\n\t// get the reflection types for V, and where applicable, K.\n\tswitch {\n\tcase t.CanSeq():\n\t\tv = t. /*iterator fn*/ In(0). /*yield fn*/ In(0)\n\tcase t.CanSeq2():\n\t\tyieldfn := t. /*iterator fn*/ In(0)\n\t\tk = yieldfn.In(0)\n\t\tv = yieldfn.In(1)\n\t}\n\treturn\n}\n\n// IsSeq2 returns true if the passed iterator function is compatible with\n// iter.Seq2, otherwise false.\n//\n// IsSeq2 hides the Go 1.23+ specific reflect.Type.CanSeq2 behind a facade which\n// is empty for Go versions before 1.23.\nfunc IsSeq2(it any) bool {\n\tif it == nil {\n\t\treturn false\n\t}\n\tt := reflect.TypeOf(it)\n\treturn t.Kind() == reflect.Func && t.CanSeq2()\n}\n\n// isNilly returns true if v is either an untyped nil, or is a nil function (not\n// necessarily an iterator function).\nfunc isNilly(v any) bool {\n\tif v == nil {\n\t\treturn true\n\t}\n\trv := reflect.ValueOf(v)\n\treturn rv.Kind() == reflect.Func && rv.IsNil()\n}\n\n// IterateV loops over the elements produced by an iterator function, passing\n// the elements to the specified yield function individually and stopping only\n// when either the iterator function runs out of elements or the yield function\n// tell us to stop it.\n//\n// IterateV works very much like reflect.Value.Seq but hides the Go 1.23+\n// specific parts behind a facade which is empty for Go versions before 1.23, in\n// order to simplify code maintenance for matchers when using older Go versions.\nfunc IterateV(it any, yield func(v reflect.Value) bool) {\n\tif isNilly(it) {\n\t\treturn\n\t}\n\t// reject all non-iterator-func values, even if they're range-able.\n\tt := reflect.TypeOf(it)\n\tif t.Kind() != reflect.Func || !t.CanSeq() {\n\t\treturn\n\t}\n\t// Call the specified iterator function, handing it our adaptor to call the\n\t// specified generic reflection yield function.\n\treflectedYield := reflect.MakeFunc(\n\t\tt. /*iterator fn*/ In(0),\n\t\tfunc(args []reflect.Value) []reflect.Value {\n\t\t\treturn []reflect.Value{reflect.ValueOf(yield(args[0]))}\n\t\t})\n\treflect.ValueOf(it).Call([]reflect.Value{reflectedYield})\n}\n\n// IterateKV loops over the key-value elements produced by an iterator function,\n// passing the elements to the specified yield function individually and\n// stopping only when either the iterator function runs out of elements or the\n// yield function tell us to stop it.\n//\n// IterateKV works very much like reflect.Value.Seq2 but hides the Go 1.23+\n// specific parts behind a facade which is empty for Go versions before 1.23, in\n// order to simplify code maintenance for matchers when using older Go versions.\nfunc IterateKV(it any, yield func(k, v reflect.Value) bool) {\n\tif isNilly(it) {\n\t\treturn\n\t}\n\t// reject all non-iterator-func values, even if they're range-able.\n\tt := reflect.TypeOf(it)\n\tif t.Kind() != reflect.Func || !t.CanSeq2() {\n\t\treturn\n\t}\n\t// Call the specified iterator function, handing it our adaptor to call the\n\t// specified generic reflection yield function.\n\treflectedYield := reflect.MakeFunc(\n\t\tt. /*iterator fn*/ In(0),\n\t\tfunc(args []reflect.Value) []reflect.Value {\n\t\t\treturn []reflect.Value{reflect.ValueOf(yield(args[0], args[1]))}\n\t\t})\n\treflect.ValueOf(it).Call([]reflect.Value{reflectedYield})\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/internal/miter/type_support_noiter.go",
    "content": "//go:build !go1.23\n\n/*\nGomega matchers\n\nThis package implements the Gomega matchers and does not typically need to be imported.\nSee the docs for Gomega for documentation on the matchers\n\nhttp://onsi.github.io/gomega/\n*/\n\npackage miter\n\nimport \"reflect\"\n\n// HasIterators always returns false for Go versions before 1.23.\nfunc HasIterators() bool { return false }\n\n// IsIter always returns false for Go versions before 1.23 as there is no\n// iterator (function) pattern defined yet; see also:\n// https://tip.golang.org/blog/range-functions.\nfunc IsIter(i any) bool { return false }\n\n// IsSeq2 always returns false for Go versions before 1.23 as there is no\n// iterator (function) pattern defined yet; see also:\n// https://tip.golang.org/blog/range-functions.\nfunc IsSeq2(it any) bool { return false }\n\n// IterKVTypes always returns nil reflection types for Go versions before 1.23\n// as there is no iterator (function) pattern defined yet; see also:\n// https://tip.golang.org/blog/range-functions.\nfunc IterKVTypes(i any) (k, v reflect.Type) {\n\treturn\n}\n\n// IterateV never loops over what has been passed to it as an iterator for Go\n// versions before 1.23 as there is no iterator (function) pattern defined yet;\n// see also: https://tip.golang.org/blog/range-functions.\nfunc IterateV(it any, yield func(v reflect.Value) bool) {}\n\n// IterateKV never loops over what has been passed to it as an iterator for Go\n// versions before 1.23 as there is no iterator (function) pattern defined yet;\n// see also: https://tip.golang.org/blog/range-functions.\nfunc IterateKV(it any, yield func(k, v reflect.Value) bool) {}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/match_error_matcher.go",
    "content": "package matchers\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"reflect\"\n\n\t\"github.com/onsi/gomega/format\"\n)\n\ntype MatchErrorMatcher struct {\n\tExpected           any\n\tFuncErrDescription []any\n\tisFunc             bool\n}\n\nfunc (matcher *MatchErrorMatcher) Match(actual any) (success bool, err error) {\n\tmatcher.isFunc = false\n\n\tif isNil(actual) {\n\t\treturn false, fmt.Errorf(\"Expected an error, got nil\")\n\t}\n\n\tif !isError(actual) {\n\t\treturn false, fmt.Errorf(\"Expected an error.  Got:\\n%s\", format.Object(actual, 1))\n\t}\n\n\tactualErr := actual.(error)\n\texpected := matcher.Expected\n\n\tif isError(expected) {\n\t\t// first try the built-in errors.Is\n\t\tif errors.Is(actualErr, expected.(error)) {\n\t\t\treturn true, nil\n\t\t}\n\t\t// if not, try DeepEqual along the error chain\n\t\tfor unwrapped := actualErr; unwrapped != nil; unwrapped = errors.Unwrap(unwrapped) {\n\t\t\tif reflect.DeepEqual(unwrapped, expected) {\n\t\t\t\treturn true, nil\n\t\t\t}\n\t\t}\n\t\treturn false, nil\n\t}\n\n\tif isString(expected) {\n\t\treturn actualErr.Error() == expected, nil\n\t}\n\n\tv := reflect.ValueOf(expected)\n\tt := v.Type()\n\terrorInterface := reflect.TypeOf((*error)(nil)).Elem()\n\tif t.Kind() == reflect.Func && t.NumIn() == 1 && t.In(0).Implements(errorInterface) && t.NumOut() == 1 && t.Out(0).Kind() == reflect.Bool {\n\t\tif len(matcher.FuncErrDescription) == 0 {\n\t\t\treturn false, fmt.Errorf(\"MatchError requires an additional description when passed a function\")\n\t\t}\n\t\tmatcher.isFunc = true\n\t\treturn v.Call([]reflect.Value{reflect.ValueOf(actualErr)})[0].Bool(), nil\n\t}\n\n\tvar subMatcher omegaMatcher\n\tvar hasSubMatcher bool\n\tif expected != nil {\n\t\tsubMatcher, hasSubMatcher = (expected).(omegaMatcher)\n\t\tif hasSubMatcher {\n\t\t\treturn subMatcher.Match(actualErr.Error())\n\t\t}\n\t}\n\n\treturn false, fmt.Errorf(\n\t\t\"MatchError must be passed an error, a string, or a Matcher that can match on strings. Got:\\n%s\",\n\t\tformat.Object(expected, 1))\n}\n\nfunc (matcher *MatchErrorMatcher) FailureMessage(actual any) (message string) {\n\tif matcher.isFunc {\n\t\treturn format.Message(actual, fmt.Sprintf(\"to match error function %s\", matcher.FuncErrDescription[0]))\n\t}\n\treturn format.Message(actual, \"to match error\", matcher.Expected)\n}\n\nfunc (matcher *MatchErrorMatcher) NegatedFailureMessage(actual any) (message string) {\n\tif matcher.isFunc {\n\t\treturn format.Message(actual, fmt.Sprintf(\"not to match error function %s\", matcher.FuncErrDescription[0]))\n\t}\n\treturn format.Message(actual, \"not to match error\", matcher.Expected)\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/match_error_strictly_matcher.go",
    "content": "package matchers\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\n\t\"github.com/onsi/gomega/format\"\n)\n\ntype MatchErrorStrictlyMatcher struct {\n\tExpected error\n}\n\nfunc (matcher *MatchErrorStrictlyMatcher) Match(actual any) (success bool, err error) {\n\n\tif isNil(matcher.Expected) {\n\t\treturn false, fmt.Errorf(\"Expected error is nil, use \\\"ToNot(HaveOccurred())\\\" to explicitly check for nil errors\")\n\t}\n\n\tif isNil(actual) {\n\t\treturn false, fmt.Errorf(\"Expected an error, got nil\")\n\t}\n\n\tif !isError(actual) {\n\t\treturn false, fmt.Errorf(\"Expected an error.  Got:\\n%s\", format.Object(actual, 1))\n\t}\n\n\tactualErr := actual.(error)\n\n\treturn errors.Is(actualErr, matcher.Expected), nil\n}\n\nfunc (matcher *MatchErrorStrictlyMatcher) FailureMessage(actual any) (message string) {\n\treturn format.Message(actual, \"to match error\", matcher.Expected)\n}\n\nfunc (matcher *MatchErrorStrictlyMatcher) NegatedFailureMessage(actual any) (message string) {\n\treturn format.Message(actual, \"not to match error\", matcher.Expected)\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/match_json_matcher.go",
    "content": "package matchers\n\nimport (\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"fmt\"\n\n\t\"github.com/onsi/gomega/format\"\n)\n\ntype MatchJSONMatcher struct {\n\tJSONToMatch      any\n\tfirstFailurePath []any\n}\n\nfunc (matcher *MatchJSONMatcher) Match(actual any) (success bool, err error) {\n\tactualString, expectedString, err := matcher.prettyPrint(actual)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\n\tvar aval any\n\tvar eval any\n\n\t// this is guarded by prettyPrint\n\tjson.Unmarshal([]byte(actualString), &aval)\n\tjson.Unmarshal([]byte(expectedString), &eval)\n\tvar equal bool\n\tequal, matcher.firstFailurePath = deepEqual(aval, eval)\n\treturn equal, nil\n}\n\nfunc (matcher *MatchJSONMatcher) FailureMessage(actual any) (message string) {\n\tactualString, expectedString, _ := matcher.prettyPrint(actual)\n\treturn formattedMessage(format.Message(actualString, \"to match JSON of\", expectedString), matcher.firstFailurePath)\n}\n\nfunc (matcher *MatchJSONMatcher) NegatedFailureMessage(actual any) (message string) {\n\tactualString, expectedString, _ := matcher.prettyPrint(actual)\n\treturn formattedMessage(format.Message(actualString, \"not to match JSON of\", expectedString), matcher.firstFailurePath)\n}\n\nfunc (matcher *MatchJSONMatcher) prettyPrint(actual any) (actualFormatted, expectedFormatted string, err error) {\n\tactualString, ok := toString(actual)\n\tif !ok {\n\t\treturn \"\", \"\", fmt.Errorf(\"MatchJSONMatcher matcher requires a string, stringer, or []byte.  Got actual:\\n%s\", format.Object(actual, 1))\n\t}\n\texpectedString, ok := toString(matcher.JSONToMatch)\n\tif !ok {\n\t\treturn \"\", \"\", fmt.Errorf(\"MatchJSONMatcher matcher requires a string, stringer, or []byte.  Got expected:\\n%s\", format.Object(matcher.JSONToMatch, 1))\n\t}\n\n\tabuf := new(bytes.Buffer)\n\tebuf := new(bytes.Buffer)\n\n\tif err := json.Indent(abuf, []byte(actualString), \"\", \"  \"); err != nil {\n\t\treturn \"\", \"\", fmt.Errorf(\"Actual '%s' should be valid JSON, but it is not.\\nUnderlying error:%s\", actualString, err)\n\t}\n\n\tif err := json.Indent(ebuf, []byte(expectedString), \"\", \"  \"); err != nil {\n\t\treturn \"\", \"\", fmt.Errorf(\"Expected '%s' should be valid JSON, but it is not.\\nUnderlying error:%s\", expectedString, err)\n\t}\n\n\treturn abuf.String(), ebuf.String(), nil\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/match_regexp_matcher.go",
    "content": "package matchers\n\nimport (\n\t\"fmt\"\n\t\"regexp\"\n\n\t\"github.com/onsi/gomega/format\"\n)\n\ntype MatchRegexpMatcher struct {\n\tRegexp string\n\tArgs   []any\n}\n\nfunc (matcher *MatchRegexpMatcher) Match(actual any) (success bool, err error) {\n\tactualString, ok := toString(actual)\n\tif !ok {\n\t\treturn false, fmt.Errorf(\"RegExp matcher requires a string or stringer.\\nGot:%s\", format.Object(actual, 1))\n\t}\n\n\tmatch, err := regexp.Match(matcher.regexp(), []byte(actualString))\n\tif err != nil {\n\t\treturn false, fmt.Errorf(\"RegExp match failed to compile with error:\\n\\t%s\", err.Error())\n\t}\n\n\treturn match, nil\n}\n\nfunc (matcher *MatchRegexpMatcher) FailureMessage(actual any) (message string) {\n\treturn format.Message(actual, \"to match regular expression\", matcher.regexp())\n}\n\nfunc (matcher *MatchRegexpMatcher) NegatedFailureMessage(actual any) (message string) {\n\treturn format.Message(actual, \"not to match regular expression\", matcher.regexp())\n}\n\nfunc (matcher *MatchRegexpMatcher) regexp() string {\n\tre := matcher.Regexp\n\tif len(matcher.Args) > 0 {\n\t\tre = fmt.Sprintf(matcher.Regexp, matcher.Args...)\n\t}\n\treturn re\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/match_xml_matcher.go",
    "content": "package matchers\n\nimport (\n\t\"bytes\"\n\t\"encoding/xml\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"reflect\"\n\t\"sort\"\n\t\"strings\"\n\n\t\"github.com/onsi/gomega/format\"\n\t\"golang.org/x/net/html/charset\"\n)\n\ntype MatchXMLMatcher struct {\n\tXMLToMatch any\n}\n\nfunc (matcher *MatchXMLMatcher) Match(actual any) (success bool, err error) {\n\tactualString, expectedString, err := matcher.formattedPrint(actual)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\n\taval, err := parseXmlContent(actualString)\n\tif err != nil {\n\t\treturn false, fmt.Errorf(\"Actual '%s' should be valid XML, but it is not.\\nUnderlying error:%s\", actualString, err)\n\t}\n\n\teval, err := parseXmlContent(expectedString)\n\tif err != nil {\n\t\treturn false, fmt.Errorf(\"Expected '%s' should be valid XML, but it is not.\\nUnderlying error:%s\", expectedString, err)\n\t}\n\n\treturn reflect.DeepEqual(aval, eval), nil\n}\n\nfunc (matcher *MatchXMLMatcher) FailureMessage(actual any) (message string) {\n\tactualString, expectedString, _ := matcher.formattedPrint(actual)\n\treturn fmt.Sprintf(\"Expected\\n%s\\nto match XML of\\n%s\", actualString, expectedString)\n}\n\nfunc (matcher *MatchXMLMatcher) NegatedFailureMessage(actual any) (message string) {\n\tactualString, expectedString, _ := matcher.formattedPrint(actual)\n\treturn fmt.Sprintf(\"Expected\\n%s\\nnot to match XML of\\n%s\", actualString, expectedString)\n}\n\nfunc (matcher *MatchXMLMatcher) formattedPrint(actual any) (actualString, expectedString string, err error) {\n\tvar ok bool\n\tactualString, ok = toString(actual)\n\tif !ok {\n\t\treturn \"\", \"\", fmt.Errorf(\"MatchXMLMatcher matcher requires a string, stringer, or []byte.  Got actual:\\n%s\", format.Object(actual, 1))\n\t}\n\texpectedString, ok = toString(matcher.XMLToMatch)\n\tif !ok {\n\t\treturn \"\", \"\", fmt.Errorf(\"MatchXMLMatcher matcher requires a string, stringer, or []byte.  Got expected:\\n%s\", format.Object(matcher.XMLToMatch, 1))\n\t}\n\treturn actualString, expectedString, nil\n}\n\nfunc parseXmlContent(content string) (*xmlNode, error) {\n\tallNodes := []*xmlNode{}\n\n\tdec := newXmlDecoder(strings.NewReader(content))\n\tfor {\n\t\ttok, err := dec.Token()\n\t\tif err != nil {\n\t\t\tif err == io.EOF {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\treturn nil, fmt.Errorf(\"failed to decode next token: %v\", err) // untested section\n\t\t}\n\n\t\tlastNodeIndex := len(allNodes) - 1\n\t\tvar lastNode *xmlNode\n\t\tif len(allNodes) > 0 {\n\t\t\tlastNode = allNodes[lastNodeIndex]\n\t\t} else {\n\t\t\tlastNode = &xmlNode{}\n\t\t}\n\n\t\tswitch tok := tok.(type) {\n\t\tcase xml.StartElement:\n\t\t\tattrs := attributesSlice(tok.Attr)\n\t\t\tsort.Sort(attrs)\n\t\t\tallNodes = append(allNodes, &xmlNode{XMLName: tok.Name, XMLAttr: tok.Attr})\n\t\tcase xml.EndElement:\n\t\t\tif len(allNodes) > 1 {\n\t\t\t\tallNodes[lastNodeIndex-1].Nodes = append(allNodes[lastNodeIndex-1].Nodes, lastNode)\n\t\t\t\tallNodes = allNodes[:lastNodeIndex]\n\t\t\t}\n\t\tcase xml.CharData:\n\t\t\tlastNode.Content = append(lastNode.Content, tok.Copy()...)\n\t\tcase xml.Comment:\n\t\t\tlastNode.Comments = append(lastNode.Comments, tok.Copy()) // untested section\n\t\tcase xml.ProcInst:\n\t\t\tlastNode.ProcInsts = append(lastNode.ProcInsts, tok.Copy())\n\t\t}\n\t}\n\n\tif len(allNodes) == 0 {\n\t\treturn nil, errors.New(\"found no nodes\")\n\t}\n\tfirstNode := allNodes[0]\n\ttrimParentNodesContentSpaces(firstNode)\n\n\treturn firstNode, nil\n}\n\nfunc newXmlDecoder(reader io.Reader) *xml.Decoder {\n\tdec := xml.NewDecoder(reader)\n\tdec.CharsetReader = charset.NewReaderLabel\n\treturn dec\n}\n\nfunc trimParentNodesContentSpaces(node *xmlNode) {\n\tif len(node.Nodes) > 0 {\n\t\tnode.Content = bytes.TrimSpace(node.Content)\n\t\tfor _, childNode := range node.Nodes {\n\t\t\ttrimParentNodesContentSpaces(childNode)\n\t\t}\n\t}\n}\n\ntype xmlNode struct {\n\tXMLName   xml.Name\n\tComments  []xml.Comment\n\tProcInsts []xml.ProcInst\n\tXMLAttr   []xml.Attr\n\tContent   []byte\n\tNodes     []*xmlNode\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/match_yaml_matcher.go",
    "content": "package matchers\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\t\"github.com/onsi/gomega/format\"\n\t\"go.yaml.in/yaml/v3\"\n)\n\ntype MatchYAMLMatcher struct {\n\tYAMLToMatch      any\n\tfirstFailurePath []any\n}\n\nfunc (matcher *MatchYAMLMatcher) Match(actual any) (success bool, err error) {\n\tactualString, expectedString, err := matcher.toStrings(actual)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\n\tvar aval any\n\tvar eval any\n\n\tif err := yaml.Unmarshal([]byte(actualString), &aval); err != nil {\n\t\treturn false, fmt.Errorf(\"Actual '%s' should be valid YAML, but it is not.\\nUnderlying error:%s\", actualString, err)\n\t}\n\tif err := yaml.Unmarshal([]byte(expectedString), &eval); err != nil {\n\t\treturn false, fmt.Errorf(\"Expected '%s' should be valid YAML, but it is not.\\nUnderlying error:%s\", expectedString, err)\n\t}\n\n\tvar equal bool\n\tequal, matcher.firstFailurePath = deepEqual(aval, eval)\n\treturn equal, nil\n}\n\nfunc (matcher *MatchYAMLMatcher) FailureMessage(actual any) (message string) {\n\tactualString, expectedString, _ := matcher.toNormalisedStrings(actual)\n\treturn formattedMessage(format.Message(actualString, \"to match YAML of\", expectedString), matcher.firstFailurePath)\n}\n\nfunc (matcher *MatchYAMLMatcher) NegatedFailureMessage(actual any) (message string) {\n\tactualString, expectedString, _ := matcher.toNormalisedStrings(actual)\n\treturn formattedMessage(format.Message(actualString, \"not to match YAML of\", expectedString), matcher.firstFailurePath)\n}\n\nfunc (matcher *MatchYAMLMatcher) toNormalisedStrings(actual any) (actualFormatted, expectedFormatted string, err error) {\n\tactualString, expectedString, err := matcher.toStrings(actual)\n\treturn normalise(actualString), normalise(expectedString), err\n}\n\nfunc normalise(input string) string {\n\tvar val any\n\terr := yaml.Unmarshal([]byte(input), &val)\n\tif err != nil {\n\t\tpanic(err) // unreachable since Match already calls Unmarshal\n\t}\n\toutput, err := yaml.Marshal(val)\n\tif err != nil {\n\t\tpanic(err) // untested section, unreachable since we Unmarshal above\n\t}\n\treturn strings.TrimSpace(string(output))\n}\n\nfunc (matcher *MatchYAMLMatcher) toStrings(actual any) (actualFormatted, expectedFormatted string, err error) {\n\tactualString, ok := toString(actual)\n\tif !ok {\n\t\treturn \"\", \"\", fmt.Errorf(\"MatchYAMLMatcher matcher requires a string, stringer, or []byte.  Got actual:\\n%s\", format.Object(actual, 1))\n\t}\n\texpectedString, ok := toString(matcher.YAMLToMatch)\n\tif !ok {\n\t\treturn \"\", \"\", fmt.Errorf(\"MatchYAMLMatcher matcher requires a string, stringer, or []byte.  Got expected:\\n%s\", format.Object(matcher.YAMLToMatch, 1))\n\t}\n\n\treturn actualString, expectedString, nil\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/not.go",
    "content": "package matchers\n\nimport (\n\t\"github.com/onsi/gomega/types\"\n)\n\ntype NotMatcher struct {\n\tMatcher types.GomegaMatcher\n}\n\nfunc (m *NotMatcher) Match(actual any) (bool, error) {\n\tsuccess, err := m.Matcher.Match(actual)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\treturn !success, nil\n}\n\nfunc (m *NotMatcher) FailureMessage(actual any) (message string) {\n\treturn m.Matcher.NegatedFailureMessage(actual) // works beautifully\n}\n\nfunc (m *NotMatcher) NegatedFailureMessage(actual any) (message string) {\n\treturn m.Matcher.FailureMessage(actual) // works beautifully\n}\n\nfunc (m *NotMatcher) MatchMayChangeInTheFuture(actual any) bool {\n\treturn types.MatchMayChangeInTheFuture(m.Matcher, actual) // just return m.Matcher's value\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/or.go",
    "content": "package matchers\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/onsi/gomega/format\"\n\t\"github.com/onsi/gomega/types\"\n)\n\ntype OrMatcher struct {\n\tMatchers []types.GomegaMatcher\n\n\t// state\n\tfirstSuccessfulMatcher types.GomegaMatcher\n}\n\nfunc (m *OrMatcher) Match(actual any) (success bool, err error) {\n\tm.firstSuccessfulMatcher = nil\n\tfor _, matcher := range m.Matchers {\n\t\tsuccess, err := matcher.Match(actual)\n\t\tif err != nil {\n\t\t\treturn false, err\n\t\t}\n\t\tif success {\n\t\t\tm.firstSuccessfulMatcher = matcher\n\t\t\treturn true, nil\n\t\t}\n\t}\n\treturn false, nil\n}\n\nfunc (m *OrMatcher) FailureMessage(actual any) (message string) {\n\t// not the most beautiful list of matchers, but not bad either...\n\treturn format.Message(actual, fmt.Sprintf(\"To satisfy at least one of these matchers: %s\", m.Matchers))\n}\n\nfunc (m *OrMatcher) NegatedFailureMessage(actual any) (message string) {\n\treturn m.firstSuccessfulMatcher.NegatedFailureMessage(actual)\n}\n\nfunc (m *OrMatcher) MatchMayChangeInTheFuture(actual any) bool {\n\t/*\n\t\tExample with 3 matchers: A, B, C\n\n\t\tMatch evaluates them: F, T, <?>  => T\n\t\tSo match is currently T, what should MatchMayChangeInTheFuture() return?\n\t\tSeems like it only depends on B, since currently B MUST change to allow the result to become F\n\n\t\tMatch eval: F, F, F  => F\n\t\tSo match is currently F, what should MatchMayChangeInTheFuture() return?\n\t\tSeems to depend on ANY of them being able to change to T.\n\t*/\n\n\tif m.firstSuccessfulMatcher != nil {\n\t\t// one of the matchers succeeded.. it must be able to change in order to affect the result\n\t\treturn types.MatchMayChangeInTheFuture(m.firstSuccessfulMatcher, actual)\n\t} else {\n\t\t// so all matchers failed.. Any one of them changing would change the result.\n\t\tfor _, matcher := range m.Matchers {\n\t\t\tif types.MatchMayChangeInTheFuture(matcher, actual) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\treturn false // none of were going to change\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/panic_matcher.go",
    "content": "package matchers\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\n\t\"github.com/onsi/gomega/format\"\n)\n\ntype PanicMatcher struct {\n\tExpected any\n\tobject   any\n}\n\nfunc (matcher *PanicMatcher) Match(actual any) (success bool, err error) {\n\tif actual == nil {\n\t\treturn false, fmt.Errorf(\"PanicMatcher expects a non-nil actual.\")\n\t}\n\n\tactualType := reflect.TypeOf(actual)\n\tif actualType.Kind() != reflect.Func {\n\t\treturn false, fmt.Errorf(\"PanicMatcher expects a function.  Got:\\n%s\", format.Object(actual, 1))\n\t}\n\tif !(actualType.NumIn() == 0 && actualType.NumOut() == 0) {\n\t\treturn false, fmt.Errorf(\"PanicMatcher expects a function with no arguments and no return value.  Got:\\n%s\", format.Object(actual, 1))\n\t}\n\n\tsuccess = false\n\tdefer func() {\n\t\tif e := recover(); e != nil {\n\t\t\tmatcher.object = e\n\n\t\t\tif matcher.Expected == nil {\n\t\t\t\tsuccess = true\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tvalueMatcher, valueIsMatcher := matcher.Expected.(omegaMatcher)\n\t\t\tif !valueIsMatcher {\n\t\t\t\tvalueMatcher = &EqualMatcher{Expected: matcher.Expected}\n\t\t\t}\n\n\t\t\tsuccess, err = valueMatcher.Match(e)\n\t\t\tif err != nil {\n\t\t\t\terr = fmt.Errorf(\"PanicMatcher's value matcher failed with:\\n%s%s\", format.Indent, err.Error())\n\t\t\t}\n\t\t}\n\t}()\n\n\treflect.ValueOf(actual).Call([]reflect.Value{})\n\n\treturn\n}\n\nfunc (matcher *PanicMatcher) FailureMessage(actual any) (message string) {\n\tif matcher.Expected == nil {\n\t\t// We wanted any panic to occur, but none did.\n\t\treturn format.Message(actual, \"to panic\")\n\t}\n\n\tif matcher.object == nil {\n\t\t// We wanted a panic with a specific value to occur, but none did.\n\t\tswitch matcher.Expected.(type) {\n\t\tcase omegaMatcher:\n\t\t\treturn format.Message(actual, \"to panic with a value matching\", matcher.Expected)\n\t\tdefault:\n\t\t\treturn format.Message(actual, \"to panic with\", matcher.Expected)\n\t\t}\n\t}\n\n\t// We got a panic, but the value isn't what we expected.\n\tswitch matcher.Expected.(type) {\n\tcase omegaMatcher:\n\t\treturn format.Message(\n\t\t\tactual,\n\t\t\tfmt.Sprintf(\n\t\t\t\t\"to panic with a value matching\\n%s\\nbut panicked with\\n%s\",\n\t\t\t\tformat.Object(matcher.Expected, 1),\n\t\t\t\tformat.Object(matcher.object, 1),\n\t\t\t),\n\t\t)\n\tdefault:\n\t\treturn format.Message(\n\t\t\tactual,\n\t\t\tfmt.Sprintf(\n\t\t\t\t\"to panic with\\n%s\\nbut panicked with\\n%s\",\n\t\t\t\tformat.Object(matcher.Expected, 1),\n\t\t\t\tformat.Object(matcher.object, 1),\n\t\t\t),\n\t\t)\n\t}\n}\n\nfunc (matcher *PanicMatcher) NegatedFailureMessage(actual any) (message string) {\n\tif matcher.Expected == nil {\n\t\t// We didn't want any panic to occur, but one did.\n\t\treturn format.Message(actual, fmt.Sprintf(\"not to panic, but panicked with\\n%s\", format.Object(matcher.object, 1)))\n\t}\n\n\t// We wanted a to ensure a panic with a specific value did not occur, but it did.\n\tswitch matcher.Expected.(type) {\n\tcase omegaMatcher:\n\t\treturn format.Message(\n\t\t\tactual,\n\t\t\tfmt.Sprintf(\n\t\t\t\t\"not to panic with a value matching\\n%s\\nbut panicked with\\n%s\",\n\t\t\t\tformat.Object(matcher.Expected, 1),\n\t\t\t\tformat.Object(matcher.object, 1),\n\t\t\t),\n\t\t)\n\tdefault:\n\t\treturn format.Message(actual, \"not to panic with\", matcher.Expected)\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/receive_matcher.go",
    "content": "// untested sections: 3\n\npackage matchers\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"reflect\"\n\n\t\"github.com/onsi/gomega/format\"\n)\n\ntype ReceiveMatcher struct {\n\tArgs          []any\n\treceivedValue reflect.Value\n\tchannelClosed bool\n}\n\nfunc (matcher *ReceiveMatcher) Match(actual any) (success bool, err error) {\n\tif !isChan(actual) {\n\t\treturn false, fmt.Errorf(\"ReceiveMatcher expects a channel.  Got:\\n%s\", format.Object(actual, 1))\n\t}\n\n\tchannelType := reflect.TypeOf(actual)\n\tchannelValue := reflect.ValueOf(actual)\n\n\tif channelType.ChanDir() == reflect.SendDir {\n\t\treturn false, fmt.Errorf(\"ReceiveMatcher matcher cannot be passed a send-only channel.  Got:\\n%s\", format.Object(actual, 1))\n\t}\n\n\tvar subMatcher omegaMatcher\n\tvar hasSubMatcher bool\n\tvar resultReference any\n\n\t// Valid arg formats are as follows, always with optional POINTER before\n\t// optional MATCHER:\n\t//   - Receive()\n\t//   - Receive(POINTER)\n\t//   - Receive(MATCHER)\n\t//   - Receive(POINTER, MATCHER)\n\targs := matcher.Args\n\tif len(args) > 0 {\n\t\targ := args[0]\n\t\t_, isSubMatcher := arg.(omegaMatcher)\n\t\tif !isSubMatcher && reflect.ValueOf(arg).Kind() == reflect.Ptr {\n\t\t\t// Consume optional POINTER arg first, if it ain't no matcher ;)\n\t\t\tresultReference = arg\n\t\t\targs = args[1:]\n\t\t}\n\t}\n\tif len(args) > 0 {\n\t\targ := args[0]\n\t\tsubMatcher, hasSubMatcher = arg.(omegaMatcher)\n\t\tif !hasSubMatcher {\n\t\t\t// At this point we assume the dev user wanted to assign a received\n\t\t\t// value, so [POINTER,]MATCHER.\n\t\t\treturn false, fmt.Errorf(\"Cannot assign a value from the channel:\\n%s\\nTo:\\n%s\\nYou need to pass a pointer!\", format.Object(actual, 1), format.Object(arg, 1))\n\t\t}\n\t\t// Consume optional MATCHER arg.\n\t\targs = args[1:]\n\t}\n\tif len(args) > 0 {\n\t\t// If there are still args present, reject all.\n\t\treturn false, errors.New(\"Receive matcher expects at most an optional pointer and/or an optional matcher\")\n\t}\n\n\twinnerIndex, value, open := reflect.Select([]reflect.SelectCase{\n\t\t{Dir: reflect.SelectRecv, Chan: channelValue},\n\t\t{Dir: reflect.SelectDefault},\n\t})\n\n\tvar closed bool\n\tvar didReceive bool\n\tif winnerIndex == 0 {\n\t\tclosed = !open\n\t\tdidReceive = open\n\t}\n\tmatcher.channelClosed = closed\n\n\tif closed {\n\t\treturn false, nil\n\t}\n\n\tif hasSubMatcher {\n\t\tif !didReceive {\n\t\t\treturn false, nil\n\t\t}\n\t\tmatcher.receivedValue = value\n\t\tif match, err := subMatcher.Match(matcher.receivedValue.Interface()); err != nil || !match {\n\t\t\treturn match, err\n\t\t}\n\t\t// if we received a match, then fall through in order to handle an\n\t\t// optional assignment of the received value to the specified reference.\n\t}\n\n\tif didReceive {\n\t\tif resultReference != nil {\n\t\t\toutValue := reflect.ValueOf(resultReference)\n\n\t\t\tif value.Type().AssignableTo(outValue.Elem().Type()) {\n\t\t\t\toutValue.Elem().Set(value)\n\t\t\t\treturn true, nil\n\t\t\t}\n\t\t\tif value.Type().Kind() == reflect.Interface && value.Elem().Type().AssignableTo(outValue.Elem().Type()) {\n\t\t\t\toutValue.Elem().Set(value.Elem())\n\t\t\t\treturn true, nil\n\t\t\t} else {\n\t\t\t\treturn false, fmt.Errorf(\"Cannot assign a value from the channel:\\n%s\\nType:\\n%s\\nTo:\\n%s\", format.Object(actual, 1), format.Object(value.Interface(), 1), format.Object(resultReference, 1))\n\t\t\t}\n\n\t\t}\n\n\t\treturn true, nil\n\t}\n\treturn false, nil\n}\n\nfunc (matcher *ReceiveMatcher) FailureMessage(actual any) (message string) {\n\tvar matcherArg any\n\tif len(matcher.Args) > 0 {\n\t\tmatcherArg = matcher.Args[len(matcher.Args)-1]\n\t}\n\tsubMatcher, hasSubMatcher := (matcherArg).(omegaMatcher)\n\n\tclosedAddendum := \"\"\n\tif matcher.channelClosed {\n\t\tclosedAddendum = \" The channel is closed.\"\n\t}\n\n\tif hasSubMatcher {\n\t\tif matcher.receivedValue.IsValid() {\n\t\t\treturn subMatcher.FailureMessage(matcher.receivedValue.Interface())\n\t\t}\n\t\treturn \"When passed a matcher, ReceiveMatcher's channel *must* receive something.\"\n\t}\n\treturn format.Message(actual, \"to receive something.\"+closedAddendum)\n}\n\nfunc (matcher *ReceiveMatcher) NegatedFailureMessage(actual any) (message string) {\n\tvar matcherArg any\n\tif len(matcher.Args) > 0 {\n\t\tmatcherArg = matcher.Args[len(matcher.Args)-1]\n\t}\n\tsubMatcher, hasSubMatcher := (matcherArg).(omegaMatcher)\n\n\tclosedAddendum := \"\"\n\tif matcher.channelClosed {\n\t\tclosedAddendum = \" The channel is closed.\"\n\t}\n\n\tif hasSubMatcher {\n\t\tif matcher.receivedValue.IsValid() {\n\t\t\treturn subMatcher.NegatedFailureMessage(matcher.receivedValue.Interface())\n\t\t}\n\t\treturn \"When passed a matcher, ReceiveMatcher's channel *must* receive something.\"\n\t}\n\treturn format.Message(actual, \"not to receive anything.\"+closedAddendum)\n}\n\nfunc (matcher *ReceiveMatcher) MatchMayChangeInTheFuture(actual any) bool {\n\tif !isChan(actual) {\n\t\treturn false\n\t}\n\n\treturn !matcher.channelClosed\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/satisfy_matcher.go",
    "content": "package matchers\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\n\t\"github.com/onsi/gomega/format\"\n)\n\ntype SatisfyMatcher struct {\n\tPredicate any\n\n\t// cached type\n\tpredicateArgType reflect.Type\n}\n\nfunc NewSatisfyMatcher(predicate any) *SatisfyMatcher {\n\tif predicate == nil {\n\t\tpanic(\"predicate cannot be nil\")\n\t}\n\tpredicateType := reflect.TypeOf(predicate)\n\tif predicateType.Kind() != reflect.Func {\n\t\tpanic(\"predicate must be a function\")\n\t}\n\tif predicateType.NumIn() != 1 {\n\t\tpanic(\"predicate must have 1 argument\")\n\t}\n\tif predicateType.NumOut() != 1 || predicateType.Out(0).Kind() != reflect.Bool {\n\t\tpanic(\"predicate must return bool\")\n\t}\n\n\treturn &SatisfyMatcher{\n\t\tPredicate:        predicate,\n\t\tpredicateArgType: predicateType.In(0),\n\t}\n}\n\nfunc (m *SatisfyMatcher) Match(actual any) (success bool, err error) {\n\t// prepare a parameter to pass to the predicate\n\tvar param reflect.Value\n\tif actual != nil && reflect.TypeOf(actual).AssignableTo(m.predicateArgType) {\n\t\t// The dynamic type of actual is compatible with the predicate argument.\n\t\tparam = reflect.ValueOf(actual)\n\n\t} else if actual == nil && m.predicateArgType.Kind() == reflect.Interface {\n\t\t// The dynamic type of actual is unknown, so there's no way to make its\n\t\t// reflect.Value. Create a nil of the predicate argument, which is known.\n\t\tparam = reflect.Zero(m.predicateArgType)\n\n\t} else {\n\t\treturn false, fmt.Errorf(\"predicate expects '%s' but we have '%T'\", m.predicateArgType, actual)\n\t}\n\n\t// call the predicate with `actual`\n\tfn := reflect.ValueOf(m.Predicate)\n\tresult := fn.Call([]reflect.Value{param})\n\treturn result[0].Bool(), nil\n}\n\nfunc (m *SatisfyMatcher) FailureMessage(actual any) (message string) {\n\treturn format.Message(actual, \"to satisfy predicate\", m.Predicate)\n}\n\nfunc (m *SatisfyMatcher) NegatedFailureMessage(actual any) (message string) {\n\treturn format.Message(actual, \"to not satisfy predicate\", m.Predicate)\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/semi_structured_data_support.go",
    "content": "// untested sections: 5\n\npackage matchers\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"strings\"\n)\n\nfunc formattedMessage(comparisonMessage string, failurePath []any) string {\n\tvar diffMessage string\n\tif len(failurePath) == 0 {\n\t\tdiffMessage = \"\"\n\t} else {\n\t\tdiffMessage = fmt.Sprintf(\"\\n\\nfirst mismatched key: %s\", formattedFailurePath(failurePath))\n\t}\n\treturn fmt.Sprintf(\"%s%s\", comparisonMessage, diffMessage)\n}\n\nfunc formattedFailurePath(failurePath []any) string {\n\tformattedPaths := []string{}\n\tfor i := len(failurePath) - 1; i >= 0; i-- {\n\t\tswitch p := failurePath[i].(type) {\n\t\tcase int:\n\t\t\tformattedPaths = append(formattedPaths, fmt.Sprintf(`[%d]`, p))\n\t\tdefault:\n\t\t\tif i != len(failurePath)-1 {\n\t\t\t\tformattedPaths = append(formattedPaths, \".\")\n\t\t\t}\n\t\t\tformattedPaths = append(formattedPaths, fmt.Sprintf(`\"%s\"`, p))\n\t\t}\n\t}\n\treturn strings.Join(formattedPaths, \"\")\n}\n\nfunc deepEqual(a any, b any) (bool, []any) {\n\tvar errorPath []any\n\tif reflect.TypeOf(a) != reflect.TypeOf(b) {\n\t\treturn false, errorPath\n\t}\n\n\tswitch a.(type) {\n\tcase []any:\n\t\tif len(a.([]any)) != len(b.([]any)) {\n\t\t\treturn false, errorPath\n\t\t}\n\n\t\tfor i, v := range a.([]any) {\n\t\t\telementEqual, keyPath := deepEqual(v, b.([]any)[i])\n\t\t\tif !elementEqual {\n\t\t\t\treturn false, append(keyPath, i)\n\t\t\t}\n\t\t}\n\t\treturn true, errorPath\n\n\tcase map[any]any:\n\t\tif len(a.(map[any]any)) != len(b.(map[any]any)) {\n\t\t\treturn false, errorPath\n\t\t}\n\n\t\tfor k, v1 := range a.(map[any]any) {\n\t\t\tv2, ok := b.(map[any]any)[k]\n\t\t\tif !ok {\n\t\t\t\treturn false, errorPath\n\t\t\t}\n\t\t\telementEqual, keyPath := deepEqual(v1, v2)\n\t\t\tif !elementEqual {\n\t\t\t\treturn false, append(keyPath, k)\n\t\t\t}\n\t\t}\n\t\treturn true, errorPath\n\n\tcase map[string]any:\n\t\tif len(a.(map[string]any)) != len(b.(map[string]any)) {\n\t\t\treturn false, errorPath\n\t\t}\n\n\t\tfor k, v1 := range a.(map[string]any) {\n\t\t\tv2, ok := b.(map[string]any)[k]\n\t\t\tif !ok {\n\t\t\t\treturn false, errorPath\n\t\t\t}\n\t\t\telementEqual, keyPath := deepEqual(v1, v2)\n\t\t\tif !elementEqual {\n\t\t\t\treturn false, append(keyPath, k)\n\t\t\t}\n\t\t}\n\t\treturn true, errorPath\n\n\tdefault:\n\t\treturn a == b, errorPath\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/succeed_matcher.go",
    "content": "package matchers\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\n\t\"github.com/onsi/gomega/format\"\n)\n\ntype formattedGomegaError interface {\n\tFormattedGomegaError() string\n}\n\ntype SucceedMatcher struct {\n}\n\nfunc (matcher *SucceedMatcher) Match(actual any) (success bool, err error) {\n\t// is purely nil?\n\tif actual == nil {\n\t\treturn true, nil\n\t}\n\n\t// must be an 'error' type\n\tif !isError(actual) {\n\t\treturn false, fmt.Errorf(\"Expected an error-type.  Got:\\n%s\", format.Object(actual, 1))\n\t}\n\n\t// must be nil (or a pointer to a nil)\n\treturn isNil(actual), nil\n}\n\nfunc (matcher *SucceedMatcher) FailureMessage(actual any) (message string) {\n\tvar fgErr formattedGomegaError\n\tif errors.As(actual.(error), &fgErr) {\n\t\treturn fgErr.FormattedGomegaError()\n\t}\n\treturn fmt.Sprintf(\"Expected success, but got an error:\\n%s\", format.Object(actual, 1))\n}\n\nfunc (matcher *SucceedMatcher) NegatedFailureMessage(actual any) (message string) {\n\treturn \"Expected failure, but got no error.\"\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/support/goraph/bipartitegraph/bipartitegraph.go",
    "content": "package bipartitegraph\n\nimport \"fmt\"\n\nimport . \"github.com/onsi/gomega/matchers/support/goraph/node\"\nimport . \"github.com/onsi/gomega/matchers/support/goraph/edge\"\n\ntype BipartiteGraph struct {\n\tLeft  NodeOrderedSet\n\tRight NodeOrderedSet\n\tEdges EdgeSet\n}\n\nfunc NewBipartiteGraph(leftValues, rightValues []any, neighbours func(any, any) (bool, error)) (*BipartiteGraph, error) {\n\tleft := NodeOrderedSet{}\n\tfor i, v := range leftValues {\n\t\tleft = append(left, Node{ID: i, Value: v})\n\t}\n\n\tright := NodeOrderedSet{}\n\tfor j, v := range rightValues {\n\t\tright = append(right, Node{ID: j + len(left), Value: v})\n\t}\n\n\tedges := EdgeSet{}\n\tfor i, leftValue := range leftValues {\n\t\tfor j, rightValue := range rightValues {\n\t\t\tneighbours, err := neighbours(leftValue, rightValue)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"error determining adjacency for %v and %v: %s\", leftValue, rightValue, err.Error())\n\t\t\t}\n\n\t\t\tif neighbours {\n\t\t\t\tedges = append(edges, Edge{Node1: left[i].ID, Node2: right[j].ID})\n\t\t\t}\n\t\t}\n\t}\n\n\treturn &BipartiteGraph{left, right, edges}, nil\n}\n\n// FreeLeftRight returns left node values and right node values\n// of the BipartiteGraph's nodes which are not part of the given edges.\nfunc (bg *BipartiteGraph) FreeLeftRight(edges EdgeSet) (leftValues, rightValues []any) {\n\tfor _, node := range bg.Left {\n\t\tif edges.Free(node) {\n\t\t\tleftValues = append(leftValues, node.Value)\n\t\t}\n\t}\n\tfor _, node := range bg.Right {\n\t\tif edges.Free(node) {\n\t\t\trightValues = append(rightValues, node.Value)\n\t\t}\n\t}\n\treturn\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/support/goraph/bipartitegraph/bipartitegraphmatching.go",
    "content": "package bipartitegraph\n\nimport (\n\t\"slices\"\n\n\t. \"github.com/onsi/gomega/matchers/support/goraph/edge\"\n\t. \"github.com/onsi/gomega/matchers/support/goraph/node\"\n\t\"github.com/onsi/gomega/matchers/support/goraph/util\"\n)\n\n// LargestMatching implements the Hopcroft–Karp algorithm taking as input a bipartite graph\n// and outputting a maximum cardinality matching, i.e. a set of as many edges as possible\n// with the property that no two edges share an endpoint.\nfunc (bg *BipartiteGraph) LargestMatching() (matching EdgeSet) {\n\tpaths := bg.maximalDisjointSLAPCollection(matching)\n\n\tfor len(paths) > 0 {\n\t\tfor _, path := range paths {\n\t\t\tmatching = matching.SymmetricDifference(path)\n\t\t}\n\t\tpaths = bg.maximalDisjointSLAPCollection(matching)\n\t}\n\n\treturn\n}\n\nfunc (bg *BipartiteGraph) maximalDisjointSLAPCollection(matching EdgeSet) (result []EdgeSet) {\n\tguideLayers := bg.createSLAPGuideLayers(matching)\n\tif len(guideLayers) == 0 {\n\t\treturn\n\t}\n\n\tused := make(map[int]bool)\n\n\tfor _, u := range guideLayers[len(guideLayers)-1] {\n\t\tslap, found := bg.findDisjointSLAP(u, matching, guideLayers, used)\n\t\tif found {\n\t\t\tfor _, edge := range slap {\n\t\t\t\tused[edge.Node1] = true\n\t\t\t\tused[edge.Node2] = true\n\t\t\t}\n\t\t\tresult = append(result, slap)\n\t\t}\n\t}\n\n\treturn\n}\n\nfunc (bg *BipartiteGraph) findDisjointSLAP(\n\tstart Node,\n\tmatching EdgeSet,\n\tguideLayers []NodeOrderedSet,\n\tused map[int]bool,\n) ([]Edge, bool) {\n\treturn bg.findDisjointSLAPHelper(start, EdgeSet{}, len(guideLayers)-1, matching, guideLayers, used)\n}\n\nfunc (bg *BipartiteGraph) findDisjointSLAPHelper(\n\tcurrentNode Node,\n\tcurrentSLAP EdgeSet,\n\tcurrentLevel int,\n\tmatching EdgeSet,\n\tguideLayers []NodeOrderedSet,\n\tused map[int]bool,\n) (EdgeSet, bool) {\n\tused[currentNode.ID] = true\n\n\tif currentLevel == 0 {\n\t\treturn currentSLAP, true\n\t}\n\n\tfor _, nextNode := range guideLayers[currentLevel-1] {\n\t\tif used[nextNode.ID] {\n\t\t\tcontinue\n\t\t}\n\n\t\tedge, found := bg.Edges.FindByNodes(currentNode, nextNode)\n\t\tif !found {\n\t\t\tcontinue\n\t\t}\n\n\t\tif matching.Contains(edge) == util.Odd(currentLevel) {\n\t\t\tcontinue\n\t\t}\n\n\t\tcurrentSLAP = append(currentSLAP, edge)\n\t\tslap, found := bg.findDisjointSLAPHelper(nextNode, currentSLAP, currentLevel-1, matching, guideLayers, used)\n\t\tif found {\n\t\t\treturn slap, true\n\t\t}\n\t\tcurrentSLAP = currentSLAP[:len(currentSLAP)-1]\n\t}\n\n\tused[currentNode.ID] = false\n\treturn nil, false\n}\n\nfunc (bg *BipartiteGraph) createSLAPGuideLayers(matching EdgeSet) (guideLayers []NodeOrderedSet) {\n\tused := make(map[int]bool)\n\tcurrentLayer := NodeOrderedSet{}\n\n\tfor _, node := range bg.Left {\n\t\tif matching.Free(node) {\n\t\t\tused[node.ID] = true\n\t\t\tcurrentLayer = append(currentLayer, node)\n\t\t}\n\t}\n\n\tif len(currentLayer) == 0 {\n\t\treturn []NodeOrderedSet{}\n\t}\n\tguideLayers = append(guideLayers, currentLayer)\n\n\tdone := false\n\n\tfor !done {\n\t\tlastLayer := currentLayer\n\t\tcurrentLayer = NodeOrderedSet{}\n\n\t\tif util.Odd(len(guideLayers)) {\n\t\t\tfor _, leftNode := range lastLayer {\n\t\t\t\tfor _, rightNode := range bg.Right {\n\t\t\t\t\tif used[rightNode.ID] {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\n\t\t\t\t\tedge, found := bg.Edges.FindByNodes(leftNode, rightNode)\n\t\t\t\t\tif !found || matching.Contains(edge) {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\n\t\t\t\t\tcurrentLayer = append(currentLayer, rightNode)\n\t\t\t\t\tused[rightNode.ID] = true\n\n\t\t\t\t\tif matching.Free(rightNode) {\n\t\t\t\t\t\tdone = true\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor _, rightNode := range lastLayer {\n\t\t\t\tfor _, leftNode := range bg.Left {\n\t\t\t\t\tif used[leftNode.ID] {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\n\t\t\t\t\tedge, found := bg.Edges.FindByNodes(leftNode, rightNode)\n\t\t\t\t\tif !found || !matching.Contains(edge) {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\n\t\t\t\t\tcurrentLayer = append(currentLayer, leftNode)\n\t\t\t\t\tused[leftNode.ID] = true\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\tif len(currentLayer) == 0 {\n\t\t\treturn []NodeOrderedSet{}\n\t\t}\n\t\tif done { // if last layer - into last layer must be only 'free' nodes\n\t\t\tcurrentLayer = slices.DeleteFunc(currentLayer, func(in Node) bool {\n\t\t\t\treturn !matching.Free(in)\n\t\t\t})\n\t\t}\n\t\tguideLayers = append(guideLayers, currentLayer)\n\t}\n\n\treturn\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/support/goraph/edge/edge.go",
    "content": "package edge\n\nimport (\n\t. \"github.com/onsi/gomega/matchers/support/goraph/node\"\n\t\"slices\"\n)\n\ntype Edge struct {\n\tNode1 int\n\tNode2 int\n}\n\ntype EdgeSet []Edge\n\nfunc (ec EdgeSet) Free(node Node) bool {\n\tfor _, e := range ec {\n\t\tif e.Node1 == node.ID || e.Node2 == node.ID {\n\t\t\treturn false\n\t\t}\n\t}\n\n\treturn true\n}\n\nfunc (ec EdgeSet) Contains(edge Edge) bool {\n\treturn slices.Contains(ec, edge)\n}\n\nfunc (ec EdgeSet) FindByNodes(node1, node2 Node) (Edge, bool) {\n\tfor _, e := range ec {\n\t\tif (e.Node1 == node1.ID && e.Node2 == node2.ID) || (e.Node1 == node2.ID && e.Node2 == node1.ID) {\n\t\t\treturn e, true\n\t\t}\n\t}\n\n\treturn Edge{}, false\n}\n\nfunc (ec EdgeSet) SymmetricDifference(ec2 EdgeSet) EdgeSet {\n\tedgesToInclude := make(map[Edge]bool)\n\n\tfor _, e := range ec {\n\t\tedgesToInclude[e] = true\n\t}\n\n\tfor _, e := range ec2 {\n\t\tedgesToInclude[e] = !edgesToInclude[e]\n\t}\n\n\tresult := EdgeSet{}\n\tfor e, include := range edgesToInclude {\n\t\tif include {\n\t\t\tresult = append(result, e)\n\t\t}\n\t}\n\n\treturn result\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/support/goraph/node/node.go",
    "content": "package node\n\ntype Node struct {\n\tID    int\n\tValue any\n}\n\ntype NodeOrderedSet []Node\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/support/goraph/util/util.go",
    "content": "package util\n\nimport \"math\"\n\nfunc Odd(n int) bool {\n\treturn math.Mod(float64(n), 2.0) == 1.0\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/type_support.go",
    "content": "/*\nGomega matchers\n\nThis package implements the Gomega matchers and does not typically need to be imported.\nSee the docs for Gomega for documentation on the matchers\n\nhttp://onsi.github.io/gomega/\n*/\n\n// untested sections: 11\n\npackage matchers\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"reflect\"\n\n\t\"github.com/onsi/gomega/matchers/internal/miter\"\n)\n\ntype omegaMatcher interface {\n\tMatch(actual any) (success bool, err error)\n\tFailureMessage(actual any) (message string)\n\tNegatedFailureMessage(actual any) (message string)\n}\n\nfunc isBool(a any) bool {\n\treturn reflect.TypeOf(a).Kind() == reflect.Bool\n}\n\nfunc isNumber(a any) bool {\n\tif a == nil {\n\t\treturn false\n\t}\n\tkind := reflect.TypeOf(a).Kind()\n\treturn reflect.Int <= kind && kind <= reflect.Float64\n}\n\nfunc isInteger(a any) bool {\n\tkind := reflect.TypeOf(a).Kind()\n\treturn reflect.Int <= kind && kind <= reflect.Int64\n}\n\nfunc isUnsignedInteger(a any) bool {\n\tkind := reflect.TypeOf(a).Kind()\n\treturn reflect.Uint <= kind && kind <= reflect.Uint64\n}\n\nfunc isFloat(a any) bool {\n\tkind := reflect.TypeOf(a).Kind()\n\treturn reflect.Float32 <= kind && kind <= reflect.Float64\n}\n\nfunc toInteger(a any) int64 {\n\tif isInteger(a) {\n\t\treturn reflect.ValueOf(a).Int()\n\t} else if isUnsignedInteger(a) {\n\t\treturn int64(reflect.ValueOf(a).Uint())\n\t} else if isFloat(a) {\n\t\treturn int64(reflect.ValueOf(a).Float())\n\t}\n\tpanic(fmt.Sprintf(\"Expected a number!  Got <%T> %#v\", a, a))\n}\n\nfunc toUnsignedInteger(a any) uint64 {\n\tif isInteger(a) {\n\t\treturn uint64(reflect.ValueOf(a).Int())\n\t} else if isUnsignedInteger(a) {\n\t\treturn reflect.ValueOf(a).Uint()\n\t} else if isFloat(a) {\n\t\treturn uint64(reflect.ValueOf(a).Float())\n\t}\n\tpanic(fmt.Sprintf(\"Expected a number!  Got <%T> %#v\", a, a))\n}\n\nfunc toFloat(a any) float64 {\n\tif isInteger(a) {\n\t\treturn float64(reflect.ValueOf(a).Int())\n\t} else if isUnsignedInteger(a) {\n\t\treturn float64(reflect.ValueOf(a).Uint())\n\t} else if isFloat(a) {\n\t\treturn reflect.ValueOf(a).Float()\n\t}\n\tpanic(fmt.Sprintf(\"Expected a number!  Got <%T> %#v\", a, a))\n}\n\nfunc isError(a any) bool {\n\t_, ok := a.(error)\n\treturn ok\n}\n\nfunc isChan(a any) bool {\n\tif isNil(a) {\n\t\treturn false\n\t}\n\treturn reflect.TypeOf(a).Kind() == reflect.Chan\n}\n\nfunc isMap(a any) bool {\n\tif a == nil {\n\t\treturn false\n\t}\n\treturn reflect.TypeOf(a).Kind() == reflect.Map\n}\n\nfunc isArrayOrSlice(a any) bool {\n\tif a == nil {\n\t\treturn false\n\t}\n\tswitch reflect.TypeOf(a).Kind() {\n\tcase reflect.Array, reflect.Slice:\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\nfunc isString(a any) bool {\n\tif a == nil {\n\t\treturn false\n\t}\n\treturn reflect.TypeOf(a).Kind() == reflect.String\n}\n\nfunc toString(a any) (string, bool) {\n\taString, isString := a.(string)\n\tif isString {\n\t\treturn aString, true\n\t}\n\n\taBytes, isBytes := a.([]byte)\n\tif isBytes {\n\t\treturn string(aBytes), true\n\t}\n\n\taStringer, isStringer := a.(fmt.Stringer)\n\tif isStringer {\n\t\treturn aStringer.String(), true\n\t}\n\n\taJSONRawMessage, isJSONRawMessage := a.(json.RawMessage)\n\tif isJSONRawMessage {\n\t\treturn string(aJSONRawMessage), true\n\t}\n\n\treturn \"\", false\n}\n\nfunc lengthOf(a any) (int, bool) {\n\tif a == nil {\n\t\treturn 0, false\n\t}\n\tswitch reflect.TypeOf(a).Kind() {\n\tcase reflect.Map, reflect.Array, reflect.String, reflect.Chan, reflect.Slice:\n\t\treturn reflect.ValueOf(a).Len(), true\n\tcase reflect.Func:\n\t\tif !miter.IsIter(a) {\n\t\t\treturn 0, false\n\t\t}\n\t\tvar l int\n\t\tif miter.IsSeq2(a) {\n\t\t\tmiter.IterateKV(a, func(k, v reflect.Value) bool { l++; return true })\n\t\t} else {\n\t\t\tmiter.IterateV(a, func(v reflect.Value) bool { l++; return true })\n\t\t}\n\t\treturn l, true\n\tdefault:\n\t\treturn 0, false\n\t}\n}\nfunc capOf(a any) (int, bool) {\n\tif a == nil {\n\t\treturn 0, false\n\t}\n\tswitch reflect.TypeOf(a).Kind() {\n\tcase reflect.Array, reflect.Chan, reflect.Slice:\n\t\treturn reflect.ValueOf(a).Cap(), true\n\tdefault:\n\t\treturn 0, false\n\t}\n}\n\nfunc isNil(a any) bool {\n\tif a == nil {\n\t\treturn true\n\t}\n\n\tswitch reflect.TypeOf(a).Kind() {\n\tcase reflect.Chan, reflect.Func, reflect.Interface, reflect.Map, reflect.Ptr, reflect.Slice:\n\t\treturn reflect.ValueOf(a).IsNil()\n\t}\n\n\treturn false\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers/with_transform.go",
    "content": "package matchers\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\n\t\"github.com/onsi/gomega/types\"\n)\n\ntype WithTransformMatcher struct {\n\t// input\n\tTransform any // must be a function of one parameter that returns one value and an optional error\n\tMatcher   types.GomegaMatcher\n\n\t// cached value\n\ttransformArgType reflect.Type\n\n\t// state\n\ttransformedValue any\n}\n\n// reflect.Type for error\nvar errorT = reflect.TypeOf((*error)(nil)).Elem()\n\nfunc NewWithTransformMatcher(transform any, matcher types.GomegaMatcher) *WithTransformMatcher {\n\tif transform == nil {\n\t\tpanic(\"transform function cannot be nil\")\n\t}\n\ttxType := reflect.TypeOf(transform)\n\tif txType.NumIn() != 1 {\n\t\tpanic(\"transform function must have 1 argument\")\n\t}\n\tif numout := txType.NumOut(); numout != 1 {\n\t\tif numout != 2 || !txType.Out(1).AssignableTo(errorT) {\n\t\t\tpanic(\"transform function must either have 1 return value, or 1 return value plus 1 error value\")\n\t\t}\n\t}\n\n\treturn &WithTransformMatcher{\n\t\tTransform:        transform,\n\t\tMatcher:          matcher,\n\t\ttransformArgType: reflect.TypeOf(transform).In(0),\n\t}\n}\n\nfunc (m *WithTransformMatcher) Match(actual any) (bool, error) {\n\t// prepare a parameter to pass to the Transform function\n\tvar param reflect.Value\n\tif actual != nil && reflect.TypeOf(actual).AssignableTo(m.transformArgType) {\n\t\t// The dynamic type of actual is compatible with the transform argument.\n\t\tparam = reflect.ValueOf(actual)\n\n\t} else if actual == nil && m.transformArgType.Kind() == reflect.Interface {\n\t\t// The dynamic type of actual is unknown, so there's no way to make its\n\t\t// reflect.Value. Create a nil of the transform argument, which is known.\n\t\tparam = reflect.Zero(m.transformArgType)\n\n\t} else {\n\t\treturn false, fmt.Errorf(\"Transform function expects '%s' but we have '%T'\", m.transformArgType, actual)\n\t}\n\n\t// call the Transform function with `actual`\n\tfn := reflect.ValueOf(m.Transform)\n\tresult := fn.Call([]reflect.Value{param})\n\tif len(result) == 2 {\n\t\tif !result[1].IsNil() {\n\t\t\treturn false, fmt.Errorf(\"Transform function failed: %s\", result[1].Interface().(error).Error())\n\t\t}\n\t}\n\tm.transformedValue = result[0].Interface() // expect exactly one value\n\n\treturn m.Matcher.Match(m.transformedValue)\n}\n\nfunc (m *WithTransformMatcher) FailureMessage(_ any) (message string) {\n\treturn m.Matcher.FailureMessage(m.transformedValue)\n}\n\nfunc (m *WithTransformMatcher) NegatedFailureMessage(_ any) (message string) {\n\treturn m.Matcher.NegatedFailureMessage(m.transformedValue)\n}\n\nfunc (m *WithTransformMatcher) MatchMayChangeInTheFuture(_ any) bool {\n\t// TODO: Maybe this should always just return true? (Only an issue for non-deterministic transformers.)\n\t//\n\t// Querying the next matcher is fine if the transformer always will return the same value.\n\t// But if the transformer is non-deterministic and returns a different value each time, then there\n\t// is no point in querying the next matcher, since it can only comment on the last transformed value.\n\treturn types.MatchMayChangeInTheFuture(m.Matcher, m.transformedValue)\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/matchers.go",
    "content": "package gomega\n\nimport (\n\t\"fmt\"\n\t\"time\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/onsi/gomega/matchers\"\n\t\"github.com/onsi/gomega/types\"\n)\n\n// Equal uses reflect.DeepEqual to compare actual with expected.  Equal is strict about\n// types when performing comparisons.\n// It is an error for both actual and expected to be nil.  Use BeNil() instead.\nfunc Equal(expected any) types.GomegaMatcher {\n\treturn &matchers.EqualMatcher{\n\t\tExpected: expected,\n\t}\n}\n\n// BeEquivalentTo is more lax than Equal, allowing equality between different types.\n// This is done by converting actual to have the type of expected before\n// attempting equality with reflect.DeepEqual.\n// It is an error for actual and expected to be nil.  Use BeNil() instead.\nfunc BeEquivalentTo(expected any) types.GomegaMatcher {\n\treturn &matchers.BeEquivalentToMatcher{\n\t\tExpected: expected,\n\t}\n}\n\n// BeComparableTo uses gocmp.Equal from github.com/google/go-cmp (instead of reflect.DeepEqual) to perform a deep comparison.\n// You can pass cmp.Option as options.\n// It is an error for actual and expected to be nil.  Use BeNil() instead.\nfunc BeComparableTo(expected any, opts ...cmp.Option) types.GomegaMatcher {\n\treturn &matchers.BeComparableToMatcher{\n\t\tExpected: expected,\n\t\tOptions:  opts,\n\t}\n}\n\n// BeIdenticalTo uses the == operator to compare actual with expected.\n// BeIdenticalTo is strict about types when performing comparisons.\n// It is an error for both actual and expected to be nil.  Use BeNil() instead.\nfunc BeIdenticalTo(expected any) types.GomegaMatcher {\n\treturn &matchers.BeIdenticalToMatcher{\n\t\tExpected: expected,\n\t}\n}\n\n// BeNil succeeds if actual is nil\nfunc BeNil() types.GomegaMatcher {\n\treturn &matchers.BeNilMatcher{}\n}\n\n// BeTrue succeeds if actual is true\n//\n// In general, it's better to use `BeTrueBecause(reason)` to provide a more useful error message if a true check fails.\nfunc BeTrue() types.GomegaMatcher {\n\treturn &matchers.BeTrueMatcher{}\n}\n\n// BeFalse succeeds if actual is false\n//\n// In general, it's better to use `BeFalseBecause(reason)` to provide a more useful error message if a false check fails.\nfunc BeFalse() types.GomegaMatcher {\n\treturn &matchers.BeFalseMatcher{}\n}\n\n// BeTrueBecause succeeds if actual is true and displays the provided reason if it is false\n// fmt.Sprintf is used to render the reason\nfunc BeTrueBecause(format string, args ...any) types.GomegaMatcher {\n\treturn &matchers.BeTrueMatcher{Reason: fmt.Sprintf(format, args...)}\n}\n\n// BeFalseBecause succeeds if actual is false and displays the provided reason if it is true.\n// fmt.Sprintf is used to render the reason\nfunc BeFalseBecause(format string, args ...any) types.GomegaMatcher {\n\treturn &matchers.BeFalseMatcher{Reason: fmt.Sprintf(format, args...)}\n}\n\n// HaveOccurred succeeds if actual is a non-nil error\n// The typical Go error checking pattern looks like:\n//\n//\terr := SomethingThatMightFail()\n//\tExpect(err).ShouldNot(HaveOccurred())\nfunc HaveOccurred() types.GomegaMatcher {\n\treturn &matchers.HaveOccurredMatcher{}\n}\n\n// Succeed passes if actual is a nil error\n// Succeed is intended to be used with functions that return a single error value. Instead of\n//\n//\terr := SomethingThatMightFail()\n//\tExpect(err).ShouldNot(HaveOccurred())\n//\n// You can write:\n//\n//\tExpect(SomethingThatMightFail()).Should(Succeed())\n//\n// It is a mistake to use Succeed with a function that has multiple return values.  Gomega's Ω and Expect\n// functions automatically trigger failure if any return values after the first return value are non-zero/non-nil.\n// This means that Ω(MultiReturnFunc()).ShouldNot(Succeed()) can never pass.\nfunc Succeed() types.GomegaMatcher {\n\treturn &matchers.SucceedMatcher{}\n}\n\n// MatchError succeeds if actual is a non-nil error that matches the passed in\n// string, error, function, or matcher.\n//\n// These are valid use-cases:\n//\n// When passed a string:\n//\n//\tExpect(err).To(MatchError(\"an error\"))\n//\n// asserts that err.Error() == \"an error\"\n//\n// When passed an error:\n//\n//\tExpect(err).To(MatchError(SomeError))\n//\n// First checks if errors.Is(err, SomeError).\n// If that fails then it checks if reflect.DeepEqual(err, SomeError) repeatedly for err and any errors wrapped by err\n//\n// When passed a matcher:\n//\n//\tExpect(err).To(MatchError(ContainSubstring(\"sprocket not found\")))\n//\n// the matcher is passed err.Error().  In this case it asserts that err.Error() contains substring \"sprocket not found\"\n//\n// When passed a func(err) bool and a description:\n//\n//\tExpect(err).To(MatchError(os.IsNotExist, \"IsNotExist\"))\n//\n// the function is passed err and matches if the return value is true.  The description is required to allow Gomega\n// to print a useful error message.\n//\n// It is an error for err to be nil or an object that does not implement the\n// Error interface\n//\n// The optional second argument is a description of the error function, if used.  This is required when passing a function but is ignored in all other cases.\nfunc MatchError(expected any, functionErrorDescription ...any) types.GomegaMatcher {\n\treturn &matchers.MatchErrorMatcher{\n\t\tExpected:           expected,\n\t\tFuncErrDescription: functionErrorDescription,\n\t}\n}\n\n// MatchErrorStrictly succeeds iff actual is a non-nil error that matches the passed in\n// expected error according to errors.Is(actual, expected).\n//\n// This behavior differs from MatchError where\n//\n//\tExpect(errors.New(\"some error\")).To(MatchError(errors.New(\"some error\")))\n//\n// succeeds, but errors.Is would return false so:\n//\n//\tExpect(errors.New(\"some error\")).To(MatchErrorStrictly(errors.New(\"some error\")))\n//\n// fails.\nfunc MatchErrorStrictly(expected error) types.GomegaMatcher {\n\treturn &matchers.MatchErrorStrictlyMatcher{\n\t\tExpected: expected,\n\t}\n}\n\n// BeClosed succeeds if actual is a closed channel.\n// It is an error to pass a non-channel to BeClosed, it is also an error to pass nil\n//\n// In order to check whether or not the channel is closed, Gomega must try to read from the channel\n// (even in the `ShouldNot(BeClosed())` case).  You should keep this in mind if you wish to make subsequent assertions about\n// values coming down the channel.\n//\n// Also, if you are testing that a *buffered* channel is closed you must first read all values out of the channel before\n// asserting that it is closed (it is not possible to detect that a buffered-channel has been closed until all its buffered values are read).\n//\n// Finally, as a corollary: it is an error to check whether or not a send-only channel is closed.\nfunc BeClosed() types.GomegaMatcher {\n\treturn &matchers.BeClosedMatcher{}\n}\n\n// Receive succeeds if there is a value to be received on actual.\n// Actual must be a channel (and cannot be a send-only channel) -- anything else is an error.\n//\n// Receive returns immediately and never blocks:\n//\n// - If there is nothing on the channel `c` then Expect(c).Should(Receive()) will fail and Ω(c).ShouldNot(Receive()) will pass.\n//\n// - If the channel `c` is closed then Expect(c).Should(Receive()) will fail and Ω(c).ShouldNot(Receive()) will pass.\n//\n// - If there is something on the channel `c` ready to be read, then Expect(c).Should(Receive()) will pass and Ω(c).ShouldNot(Receive()) will fail.\n//\n// If you have a go-routine running in the background that will write to channel `c` you can:\n//\n//\tEventually(c).Should(Receive())\n//\n// This will timeout if nothing gets sent to `c` (you can modify the timeout interval as you normally do with `Eventually`)\n//\n// A similar use-case is to assert that no go-routine writes to a channel (for a period of time).  You can do this with `Consistently`:\n//\n//\tConsistently(c).ShouldNot(Receive())\n//\n// You can pass `Receive` a matcher.  If you do so, it will match the received object against the matcher.  For example:\n//\n//\tExpect(c).Should(Receive(Equal(\"foo\")))\n//\n// When given a matcher, `Receive` will always fail if there is nothing to be received on the channel.\n//\n// Passing Receive a matcher is especially useful when paired with Eventually:\n//\n//\tEventually(c).Should(Receive(ContainSubstring(\"bar\")))\n//\n// will repeatedly attempt to pull values out of `c` until a value matching \"bar\" is received.\n//\n// Furthermore, if you want to have a reference to the value *sent* to the channel you can pass the `Receive` matcher a pointer to a variable of the appropriate type:\n//\n//\tvar myThing thing\n//\tEventually(thingChan).Should(Receive(&myThing))\n//\tExpect(myThing.Sprocket).Should(Equal(\"foo\"))\n//\tExpect(myThing.IsValid()).Should(BeTrue())\n//\n// Finally, if you want to match the received object as well as get the actual received value into a variable, so you can reason further about the value received,\n// you can pass a pointer to a variable of the appropriate type first, and second a matcher:\n//\n//\tvar myThing thing\n//\tEventually(thingChan).Should(Receive(&myThing, ContainSubstring(\"bar\")))\nfunc Receive(args ...any) types.GomegaMatcher {\n\treturn &matchers.ReceiveMatcher{\n\t\tArgs: args,\n\t}\n}\n\n// BeSent succeeds if a value can be sent to actual.\n// Actual must be a channel (and cannot be a receive-only channel) that can sent the type of the value passed into BeSent -- anything else is an error.\n// In addition, actual must not be closed.\n//\n// BeSent never blocks:\n//\n// - If the channel `c` is not ready to receive then Expect(c).Should(BeSent(\"foo\")) will fail immediately\n// - If the channel `c` is eventually ready to receive then Eventually(c).Should(BeSent(\"foo\")) will succeed.. presuming the channel becomes ready to receive  before Eventually's timeout\n// - If the channel `c` is closed then Expect(c).Should(BeSent(\"foo\")) and Ω(c).ShouldNot(BeSent(\"foo\")) will both fail immediately\n//\n// Of course, the value is actually sent to the channel.  The point of `BeSent` is less to make an assertion about the availability of the channel (which is typically an implementation detail that your test should not be concerned with).\n// Rather, the point of `BeSent` is to make it possible to easily and expressively write tests that can timeout on blocked channel sends.\nfunc BeSent(arg any) types.GomegaMatcher {\n\treturn &matchers.BeSentMatcher{\n\t\tArg: arg,\n\t}\n}\n\n// MatchRegexp succeeds if actual is a string or stringer that matches the\n// passed-in regexp.  Optional arguments can be provided to construct a regexp\n// via fmt.Sprintf().\nfunc MatchRegexp(regexp string, args ...any) types.GomegaMatcher {\n\treturn &matchers.MatchRegexpMatcher{\n\t\tRegexp: regexp,\n\t\tArgs:   args,\n\t}\n}\n\n// ContainSubstring succeeds if actual is a string or stringer that contains the\n// passed-in substring.  Optional arguments can be provided to construct the substring\n// via fmt.Sprintf().\nfunc ContainSubstring(substr string, args ...any) types.GomegaMatcher {\n\treturn &matchers.ContainSubstringMatcher{\n\t\tSubstr: substr,\n\t\tArgs:   args,\n\t}\n}\n\n// HavePrefix succeeds if actual is a string or stringer that contains the\n// passed-in string as a prefix.  Optional arguments can be provided to construct\n// via fmt.Sprintf().\nfunc HavePrefix(prefix string, args ...any) types.GomegaMatcher {\n\treturn &matchers.HavePrefixMatcher{\n\t\tPrefix: prefix,\n\t\tArgs:   args,\n\t}\n}\n\n// HaveSuffix succeeds if actual is a string or stringer that contains the\n// passed-in string as a suffix.  Optional arguments can be provided to construct\n// via fmt.Sprintf().\nfunc HaveSuffix(suffix string, args ...any) types.GomegaMatcher {\n\treturn &matchers.HaveSuffixMatcher{\n\t\tSuffix: suffix,\n\t\tArgs:   args,\n\t}\n}\n\n// MatchJSON succeeds if actual is a string or stringer of JSON that matches\n// the expected JSON.  The JSONs are decoded and the resulting objects are compared via\n// reflect.DeepEqual so things like key-ordering and whitespace shouldn't matter.\nfunc MatchJSON(json any) types.GomegaMatcher {\n\treturn &matchers.MatchJSONMatcher{\n\t\tJSONToMatch: json,\n\t}\n}\n\n// MatchXML succeeds if actual is a string or stringer of XML that matches\n// the expected XML.  The XMLs are decoded and the resulting objects are compared via\n// reflect.DeepEqual so things like whitespaces shouldn't matter.\nfunc MatchXML(xml any) types.GomegaMatcher {\n\treturn &matchers.MatchXMLMatcher{\n\t\tXMLToMatch: xml,\n\t}\n}\n\n// MatchYAML succeeds if actual is a string or stringer of YAML that matches\n// the expected YAML.  The YAML's are decoded and the resulting objects are compared via\n// reflect.DeepEqual so things like key-ordering and whitespace shouldn't matter.\nfunc MatchYAML(yaml any) types.GomegaMatcher {\n\treturn &matchers.MatchYAMLMatcher{\n\t\tYAMLToMatch: yaml,\n\t}\n}\n\n// BeEmpty succeeds if actual is empty.  Actual must be of type string, array, map, chan, or slice.\nfunc BeEmpty() types.GomegaMatcher {\n\treturn &matchers.BeEmptyMatcher{}\n}\n\n// HaveLen succeeds if actual has the passed-in length.  Actual must be of type string, array, map, chan, or slice.\nfunc HaveLen(count int) types.GomegaMatcher {\n\treturn &matchers.HaveLenMatcher{\n\t\tCount: count,\n\t}\n}\n\n// HaveCap succeeds if actual has the passed-in capacity.  Actual must be of type array, chan, or slice.\nfunc HaveCap(count int) types.GomegaMatcher {\n\treturn &matchers.HaveCapMatcher{\n\t\tCount: count,\n\t}\n}\n\n// BeZero succeeds if actual is the zero value for its type or if actual is nil.\nfunc BeZero() types.GomegaMatcher {\n\treturn &matchers.BeZeroMatcher{}\n}\n\n// ContainElement succeeds if actual contains the passed in element. By default\n// ContainElement() uses Equal() to perform the match, however a matcher can be\n// passed in instead:\n//\n//\tExpect([]string{\"Foo\", \"FooBar\"}).Should(ContainElement(ContainSubstring(\"Bar\")))\n//\n// Actual must be an array, slice or map. For maps, ContainElement searches\n// through the map's values.\n//\n// If you want to have a copy of the matching element(s) found you can pass a\n// pointer to a variable of the appropriate type. If the variable isn't a slice\n// or map, then exactly one match will be expected and returned. If the variable\n// is a slice or map, then at least one match is expected and all matches will be\n// stored in the variable.\n//\n//\tvar findings []string\n//\tExpect([]string{\"Foo\", \"FooBar\"}).Should(ContainElement(ContainSubString(\"Bar\", &findings)))\nfunc ContainElement(element any, result ...any) types.GomegaMatcher {\n\treturn &matchers.ContainElementMatcher{\n\t\tElement: element,\n\t\tResult:  result,\n\t}\n}\n\n// BeElementOf succeeds if actual is contained in the passed in elements.\n// BeElementOf() always uses Equal() to perform the match.\n// When the passed in elements are comprised of a single element that is either an Array or Slice, BeElementOf() behaves\n// as the reverse of ContainElement() that operates with Equal() to perform the match.\n//\n//\tExpect(2).Should(BeElementOf([]int{1, 2}))\n//\tExpect(2).Should(BeElementOf([2]int{1, 2}))\n//\n// Otherwise, BeElementOf() provides a syntactic sugar for Or(Equal(_), Equal(_), ...):\n//\n//\tExpect(2).Should(BeElementOf(1, 2))\n//\n// Actual must be typed.\nfunc BeElementOf(elements ...any) types.GomegaMatcher {\n\treturn &matchers.BeElementOfMatcher{\n\t\tElements: elements,\n\t}\n}\n\n// BeKeyOf succeeds if actual is contained in the keys of the passed in map.\n// BeKeyOf() always uses Equal() to perform the match between actual and the map keys.\n//\n//\tExpect(\"foo\").Should(BeKeyOf(map[string]bool{\"foo\": true, \"bar\": false}))\nfunc BeKeyOf(element any) types.GomegaMatcher {\n\treturn &matchers.BeKeyOfMatcher{\n\t\tMap: element,\n\t}\n}\n\n// ConsistOf succeeds if actual contains precisely the elements passed into the matcher.  The ordering of the elements does not matter.\n// By default ConsistOf() uses Equal() to match the elements, however custom matchers can be passed in instead.  Here are some examples:\n//\n//\tExpect([]string{\"Foo\", \"FooBar\"}).Should(ConsistOf(\"FooBar\", \"Foo\"))\n//\tExpect([]string{\"Foo\", \"FooBar\"}).Should(ConsistOf(ContainSubstring(\"Bar\"), \"Foo\"))\n//\tExpect([]string{\"Foo\", \"FooBar\"}).Should(ConsistOf(ContainSubstring(\"Foo\"), ContainSubstring(\"Foo\")))\n//\n// Actual must be an array, slice or map.  For maps, ConsistOf matches against the map's values.\n//\n// You typically pass variadic arguments to ConsistOf (as in the examples above).  However, if you need to pass in a slice you can provided that it\n// is the only element passed in to ConsistOf:\n//\n//\tExpect([]string{\"Foo\", \"FooBar\"}).Should(ConsistOf([]string{\"FooBar\", \"Foo\"}))\n//\n// Note that Go's type system does not allow you to write this as ConsistOf([]string{\"FooBar\", \"Foo\"}...) as []string and []any are different types - hence the need for this special rule.\nfunc ConsistOf(elements ...any) types.GomegaMatcher {\n\treturn &matchers.ConsistOfMatcher{\n\t\tElements: elements,\n\t}\n}\n\n// HaveExactElements succeeds if actual contains elements that precisely match the elements passed into the matcher. The ordering of the elements does matter.\n// By default HaveExactElements() uses Equal() to match the elements, however custom matchers can be passed in instead.  Here are some examples:\n//\n//\tExpect([]string{\"Foo\", \"FooBar\"}).Should(HaveExactElements(\"Foo\", \"FooBar\"))\n//\tExpect([]string{\"Foo\", \"FooBar\"}).Should(HaveExactElements(\"Foo\", ContainSubstring(\"Bar\")))\n//\tExpect([]string{\"Foo\", \"FooBar\"}).Should(HaveExactElements(ContainSubstring(\"Foo\"), ContainSubstring(\"Foo\")))\n//\n// Actual must be an array or slice.\nfunc HaveExactElements(elements ...any) types.GomegaMatcher {\n\treturn &matchers.HaveExactElementsMatcher{\n\t\tElements: elements,\n\t}\n}\n\n// ContainElements succeeds if actual contains the passed in elements. The ordering of the elements does not matter.\n// By default ContainElements() uses Equal() to match the elements, however custom matchers can be passed in instead. Here are some examples:\n//\n//\tExpect([]string{\"Foo\", \"FooBar\"}).Should(ContainElements(\"FooBar\"))\n//\tExpect([]string{\"Foo\", \"FooBar\"}).Should(ContainElements(ContainSubstring(\"Bar\"), \"Foo\"))\n//\n// Actual must be an array, slice or map.\n// For maps, ContainElements searches through the map's values.\nfunc ContainElements(elements ...any) types.GomegaMatcher {\n\treturn &matchers.ContainElementsMatcher{\n\t\tElements: elements,\n\t}\n}\n\n// HaveEach succeeds if actual solely contains elements that match the passed in element.\n// Please note that if actual is empty, HaveEach always will fail.\n// By default HaveEach() uses Equal() to perform the match, however a\n// matcher can be passed in instead:\n//\n//\tExpect([]string{\"Foo\", \"FooBar\"}).Should(HaveEach(ContainSubstring(\"Foo\")))\n//\n// Actual must be an array, slice or map.\n// For maps, HaveEach searches through the map's values.\nfunc HaveEach(element any) types.GomegaMatcher {\n\treturn &matchers.HaveEachMatcher{\n\t\tElement: element,\n\t}\n}\n\n// HaveKey succeeds if actual is a map with the passed in key.\n// By default HaveKey uses Equal() to perform the match, however a\n// matcher can be passed in instead:\n//\n//\tExpect(map[string]string{\"Foo\": \"Bar\", \"BazFoo\": \"Duck\"}).Should(HaveKey(MatchRegexp(`.+Foo$`)))\nfunc HaveKey(key any) types.GomegaMatcher {\n\treturn &matchers.HaveKeyMatcher{\n\t\tKey: key,\n\t}\n}\n\n// HaveKeyWithValue succeeds if actual is a map with the passed in key and value.\n// By default HaveKeyWithValue uses Equal() to perform the match, however a\n// matcher can be passed in instead:\n//\n//\tExpect(map[string]string{\"Foo\": \"Bar\", \"BazFoo\": \"Duck\"}).Should(HaveKeyWithValue(\"Foo\", \"Bar\"))\n//\tExpect(map[string]string{\"Foo\": \"Bar\", \"BazFoo\": \"Duck\"}).Should(HaveKeyWithValue(MatchRegexp(`.+Foo$`), \"Bar\"))\nfunc HaveKeyWithValue(key any, value any) types.GomegaMatcher {\n\treturn &matchers.HaveKeyWithValueMatcher{\n\t\tKey:   key,\n\t\tValue: value,\n\t}\n}\n\n// HaveField succeeds if actual is a struct and the value at the passed in field\n// matches the passed in matcher.  By default HaveField used Equal() to perform the match,\n// however a matcher can be passed in in stead.\n//\n// The field must be a string that resolves to the name of a field in the struct.  Structs can be traversed\n// using the '.' delimiter.  If the field ends with '()' a method named field is assumed to exist on the struct and is invoked.\n// Such methods must take no arguments and return a single value:\n//\n//\ttype Book struct {\n//\t    Title string\n//\t    Author Person\n//\t}\n//\ttype Person struct {\n//\t    FirstName string\n//\t    LastName string\n//\t    DOB time.Time\n//\t}\n//\tExpect(book).To(HaveField(\"Title\", \"Les Miserables\"))\n//\tExpect(book).To(HaveField(\"Title\", ContainSubstring(\"Les\"))\n//\tExpect(book).To(HaveField(\"Author.FirstName\", Equal(\"Victor\"))\n//\tExpect(book).To(HaveField(\"Author.DOB.Year()\", BeNumerically(\"<\", 1900))\nfunc HaveField(field string, expected any) types.GomegaMatcher {\n\treturn &matchers.HaveFieldMatcher{\n\t\tField:    field,\n\t\tExpected: expected,\n\t}\n}\n\n// HaveExistingField succeeds if actual is a struct and the specified field\n// exists.\n//\n// HaveExistingField can be combined with HaveField in order to cover use cases\n// with optional fields. HaveField alone would trigger an error in such situations.\n//\n//\tExpect(MrHarmless).NotTo(And(HaveExistingField(\"Title\"), HaveField(\"Title\", \"Supervillain\")))\nfunc HaveExistingField(field string) types.GomegaMatcher {\n\treturn &matchers.HaveExistingFieldMatcher{\n\t\tField: field,\n\t}\n}\n\n// HaveValue applies the given matcher to the value of actual, optionally and\n// repeatedly dereferencing pointers or taking the concrete value of interfaces.\n// Thus, the matcher will always be applied to non-pointer and non-interface\n// values only. HaveValue will fail with an error if a pointer or interface is\n// nil. It will also fail for more than 31 pointer or interface dereferences to\n// guard against mistakenly applying it to arbitrarily deep linked pointers.\n//\n// HaveValue differs from gstruct.PointTo in that it does not expect actual to\n// be a pointer (as gstruct.PointTo does) but instead also accepts non-pointer\n// and even interface values.\n//\n//\tactual := 42\n//\tExpect(actual).To(HaveValue(Equal(42)))\n//\tExpect(&actual).To(HaveValue(Equal(42)))\nfunc HaveValue(matcher types.GomegaMatcher) types.GomegaMatcher {\n\treturn &matchers.HaveValueMatcher{\n\t\tMatcher: matcher,\n\t}\n}\n\n// BeNumerically performs numerical assertions in a type-agnostic way.\n// Actual and expected should be numbers, though the specific type of\n// number is irrelevant (float32, float64, uint8, etc...).\n//\n// There are six, self-explanatory, supported comparators:\n//\n//\tExpect(1.0).Should(BeNumerically(\"==\", 1))\n//\tExpect(1.0).Should(BeNumerically(\"~\", 0.999, 0.01))\n//\tExpect(1.0).Should(BeNumerically(\">\", 0.9))\n//\tExpect(1.0).Should(BeNumerically(\">=\", 1.0))\n//\tExpect(1.0).Should(BeNumerically(\"<\", 3))\n//\tExpect(1.0).Should(BeNumerically(\"<=\", 1.0))\nfunc BeNumerically(comparator string, compareTo ...any) types.GomegaMatcher {\n\treturn &matchers.BeNumericallyMatcher{\n\t\tComparator: comparator,\n\t\tCompareTo:  compareTo,\n\t}\n}\n\n// BeTemporally compares time.Time's like BeNumerically\n// Actual and expected must be time.Time. The comparators are the same as for BeNumerically\n//\n//\tExpect(time.Now()).Should(BeTemporally(\">\", time.Time{}))\n//\tExpect(time.Now()).Should(BeTemporally(\"~\", time.Now(), time.Second))\nfunc BeTemporally(comparator string, compareTo time.Time, threshold ...time.Duration) types.GomegaMatcher {\n\treturn &matchers.BeTemporallyMatcher{\n\t\tComparator: comparator,\n\t\tCompareTo:  compareTo,\n\t\tThreshold:  threshold,\n\t}\n}\n\n// BeAssignableToTypeOf succeeds if actual is assignable to the type of expected.\n// It will return an error when one of the values is nil.\n//\n//\tExpect(0).Should(BeAssignableToTypeOf(0))         // Same values\n//\tExpect(5).Should(BeAssignableToTypeOf(-1))        // different values same type\n//\tExpect(\"foo\").Should(BeAssignableToTypeOf(\"bar\")) // different values same type\n//\tExpect(struct{ Foo string }{}).Should(BeAssignableToTypeOf(struct{ Foo string }{}))\nfunc BeAssignableToTypeOf(expected any) types.GomegaMatcher {\n\treturn &matchers.AssignableToTypeOfMatcher{\n\t\tExpected: expected,\n\t}\n}\n\n// Panic succeeds if actual is a function that, when invoked, panics.\n// Actual must be a function that takes no arguments and returns no results.\nfunc Panic() types.GomegaMatcher {\n\treturn &matchers.PanicMatcher{}\n}\n\n// PanicWith succeeds if actual is a function that, when invoked, panics with a specific value.\n// Actual must be a function that takes no arguments and returns no results.\n//\n// By default PanicWith uses Equal() to perform the match, however a\n// matcher can be passed in instead:\n//\n//\tExpect(fn).Should(PanicWith(MatchRegexp(`.+Foo$`)))\nfunc PanicWith(expected any) types.GomegaMatcher {\n\treturn &matchers.PanicMatcher{Expected: expected}\n}\n\n// BeAnExistingFile succeeds if a file exists.\n// Actual must be a string representing the abs path to the file being checked.\nfunc BeAnExistingFile() types.GomegaMatcher {\n\treturn &matchers.BeAnExistingFileMatcher{}\n}\n\n// BeARegularFile succeeds if a file exists and is a regular file.\n// Actual must be a string representing the abs path to the file being checked.\nfunc BeARegularFile() types.GomegaMatcher {\n\treturn &matchers.BeARegularFileMatcher{}\n}\n\n// BeADirectory succeeds if a file exists and is a directory.\n// Actual must be a string representing the abs path to the file being checked.\nfunc BeADirectory() types.GomegaMatcher {\n\treturn &matchers.BeADirectoryMatcher{}\n}\n\n// HaveHTTPStatus succeeds if the Status or StatusCode field of an HTTP response matches.\n// Actual must be either a *http.Response or *httptest.ResponseRecorder.\n// Expected must be either an int or a string.\n//\n//\tExpect(resp).Should(HaveHTTPStatus(http.StatusOK))   // asserts that resp.StatusCode == 200\n//\tExpect(resp).Should(HaveHTTPStatus(\"404 Not Found\")) // asserts that resp.Status == \"404 Not Found\"\n//\tExpect(resp).Should(HaveHTTPStatus(http.StatusOK, http.StatusNoContent))   // asserts that resp.StatusCode == 200 || resp.StatusCode == 204\nfunc HaveHTTPStatus(expected ...any) types.GomegaMatcher {\n\treturn &matchers.HaveHTTPStatusMatcher{Expected: expected}\n}\n\n// HaveHTTPHeaderWithValue succeeds if the header is found and the value matches.\n// Actual must be either a *http.Response or *httptest.ResponseRecorder.\n// Expected must be a string header name, followed by a header value which\n// can be a string, or another matcher.\nfunc HaveHTTPHeaderWithValue(header string, value any) types.GomegaMatcher {\n\treturn &matchers.HaveHTTPHeaderWithValueMatcher{\n\t\tHeader: header,\n\t\tValue:  value,\n\t}\n}\n\n// HaveHTTPBody matches if the body matches.\n// Actual must be either a *http.Response or *httptest.ResponseRecorder.\n// Expected must be either a string, []byte, or other matcher\nfunc HaveHTTPBody(expected any) types.GomegaMatcher {\n\treturn &matchers.HaveHTTPBodyMatcher{Expected: expected}\n}\n\n// And succeeds only if all of the given matchers succeed.\n// The matchers are tried in order, and will fail-fast if one doesn't succeed.\n//\n//\tExpect(\"hi\").To(And(HaveLen(2), Equal(\"hi\"))\n//\n// And(), Or(), Not() and WithTransform() allow matchers to be composed into complex expressions.\nfunc And(ms ...types.GomegaMatcher) types.GomegaMatcher {\n\treturn &matchers.AndMatcher{Matchers: ms}\n}\n\n// SatisfyAll is an alias for And().\n//\n//\tExpect(\"hi\").Should(SatisfyAll(HaveLen(2), Equal(\"hi\")))\nfunc SatisfyAll(matchers ...types.GomegaMatcher) types.GomegaMatcher {\n\treturn And(matchers...)\n}\n\n// Or succeeds if any of the given matchers succeed.\n// The matchers are tried in order and will return immediately upon the first successful match.\n//\n//\tExpect(\"hi\").To(Or(HaveLen(3), HaveLen(2))\n//\n// And(), Or(), Not() and WithTransform() allow matchers to be composed into complex expressions.\nfunc Or(ms ...types.GomegaMatcher) types.GomegaMatcher {\n\treturn &matchers.OrMatcher{Matchers: ms}\n}\n\n// SatisfyAny is an alias for Or().\n//\n//\tExpect(\"hi\").SatisfyAny(Or(HaveLen(3), HaveLen(2))\nfunc SatisfyAny(matchers ...types.GomegaMatcher) types.GomegaMatcher {\n\treturn Or(matchers...)\n}\n\n// Not negates the given matcher; it succeeds if the given matcher fails.\n//\n//\tExpect(1).To(Not(Equal(2))\n//\n// And(), Or(), Not() and WithTransform() allow matchers to be composed into complex expressions.\nfunc Not(matcher types.GomegaMatcher) types.GomegaMatcher {\n\treturn &matchers.NotMatcher{Matcher: matcher}\n}\n\n// WithTransform applies the `transform` to the actual value and matches it against `matcher`.\n// The given transform must be either a function of one parameter that returns one value or a\n// function of one parameter that returns two values, where the second value must be of the\n// error type.\n//\n//\tvar plus1 = func(i int) int { return i + 1 }\n//\tExpect(1).To(WithTransform(plus1, Equal(2))\n//\n//\t var failingplus1 = func(i int) (int, error) { return 42, \"this does not compute\" }\n//\t Expect(1).To(WithTransform(failingplus1, Equal(2)))\n//\n// And(), Or(), Not() and WithTransform() allow matchers to be composed into complex expressions.\nfunc WithTransform(transform any, matcher types.GomegaMatcher) types.GomegaMatcher {\n\treturn matchers.NewWithTransformMatcher(transform, matcher)\n}\n\n// Satisfy matches the actual value against the `predicate` function.\n// The given predicate must be a function of one parameter that returns bool.\n//\n//\tvar isEven = func(i int) bool { return i%2 == 0 }\n//\tExpect(2).To(Satisfy(isEven))\nfunc Satisfy(predicate any) types.GomegaMatcher {\n\treturn matchers.NewSatisfyMatcher(predicate)\n}\n"
  },
  {
    "path": "tests/vendor/github.com/onsi/gomega/types/types.go",
    "content": "package types\n\nimport (\n\t\"context\"\n\t\"time\"\n)\n\ntype GomegaFailHandler func(message string, callerSkip ...int)\n\n// A simple *testing.T interface wrapper\ntype GomegaTestingT interface {\n\tHelper()\n\tFatalf(format string, args ...any)\n}\n\n// Gomega represents an object that can perform synchronous and asynchronous assertions with Gomega matchers\ntype Gomega interface {\n\tΩ(actual any, extra ...any) Assertion\n\tExpect(actual any, extra ...any) Assertion\n\tExpectWithOffset(offset int, actual any, extra ...any) Assertion\n\n\tEventually(actualOrCtx any, args ...any) AsyncAssertion\n\tEventuallyWithOffset(offset int, actualOrCtx any, args ...any) AsyncAssertion\n\n\tConsistently(actualOrCtx any, args ...any) AsyncAssertion\n\tConsistentlyWithOffset(offset int, actualOrCtx any, args ...any) AsyncAssertion\n\n\tSetDefaultEventuallyTimeout(time.Duration)\n\tSetDefaultEventuallyPollingInterval(time.Duration)\n\tSetDefaultConsistentlyDuration(time.Duration)\n\tSetDefaultConsistentlyPollingInterval(time.Duration)\n\tEnforceDefaultTimeoutsWhenUsingContexts()\n\tDisableDefaultTimeoutsWhenUsingContext()\n}\n\n// All Gomega matchers must implement the GomegaMatcher interface\n//\n// For details on writing custom matchers, check out: http://onsi.github.io/gomega/#adding-your-own-matchers\ntype GomegaMatcher interface {\n\tMatch(actual any) (success bool, err error)\n\tFailureMessage(actual any) (message string)\n\tNegatedFailureMessage(actual any) (message string)\n}\n\n/*\nGomegaMatchers that also match the OracleMatcher interface can convey information about\nwhether or not their result will change upon future attempts.\n\nThis allows `Eventually` and `Consistently` to short circuit if success becomes impossible.\n\nFor example, a process' exit code can never change.  So, gexec's Exit matcher returns `true`\nfor `MatchMayChangeInTheFuture` until the process exits, at which point it returns `false` forevermore.\n*/\ntype OracleMatcher interface {\n\tMatchMayChangeInTheFuture(actual any) bool\n}\n\nfunc MatchMayChangeInTheFuture(matcher GomegaMatcher, value any) bool {\n\toracleMatcher, ok := matcher.(OracleMatcher)\n\tif !ok {\n\t\treturn true\n\t}\n\n\treturn oracleMatcher.MatchMayChangeInTheFuture(value)\n}\n\n// AsyncAssertions are returned by Eventually and Consistently and enable matchers to be polled repeatedly to ensure\n// they are eventually satisfied\ntype AsyncAssertion interface {\n\tShould(matcher GomegaMatcher, optionalDescription ...any) bool\n\tShouldNot(matcher GomegaMatcher, optionalDescription ...any) bool\n\n\t// equivalent to above\n\tTo(matcher GomegaMatcher, optionalDescription ...any) bool\n\tToNot(matcher GomegaMatcher, optionalDescription ...any) bool\n\tNotTo(matcher GomegaMatcher, optionalDescription ...any) bool\n\n\tWithOffset(offset int) AsyncAssertion\n\tWithTimeout(interval time.Duration) AsyncAssertion\n\tWithPolling(interval time.Duration) AsyncAssertion\n\tWithin(timeout time.Duration) AsyncAssertion\n\tProbeEvery(interval time.Duration) AsyncAssertion\n\tWithContext(ctx context.Context) AsyncAssertion\n\tWithArguments(argsToForward ...any) AsyncAssertion\n\tMustPassRepeatedly(count int) AsyncAssertion\n}\n\n// Assertions are returned by Ω and Expect and enable assertions against Gomega matchers\ntype Assertion interface {\n\tShould(matcher GomegaMatcher, optionalDescription ...any) bool\n\tShouldNot(matcher GomegaMatcher, optionalDescription ...any) bool\n\n\tTo(matcher GomegaMatcher, optionalDescription ...any) bool\n\tToNot(matcher GomegaMatcher, optionalDescription ...any) bool\n\tNotTo(matcher GomegaMatcher, optionalDescription ...any) bool\n\n\tWithOffset(offset int) Assertion\n\n\tError() Assertion\n}\n"
  },
  {
    "path": "tests/vendor/github.com/pelletier/go-toml/.dockerignore",
    "content": "cmd/tomll/tomll\ncmd/tomljson/tomljson\n"
  },
  {
    "path": "tests/vendor/github.com/pelletier/go-toml/.gitignore",
    "content": "test_program/test_program_bin\nfuzz/\ncmd/tomll/tomll\ncmd/tomljson/tomljson\ncmd/tomltestgen/tomltestgen\n"
  },
  {
    "path": "tests/vendor/github.com/pelletier/go-toml/CONTRIBUTING.md",
    "content": "## Contributing\n\nThank you for your interest in go-toml! We appreciate you considering\ncontributing to go-toml!\n\nThe main goal is the project is to provide an easy-to-use TOML\nimplementation for Go that gets the job done and gets out of your way –\ndealing with TOML is probably not the central piece of your project.\n\nAs the single maintainer of go-toml, time is scarce. All help, big or\nsmall, is more than welcomed!\n\n### Ask questions\n\nAny question you may have, somebody else might have it too. Always feel\nfree to ask them on the [issues tracker][issues-tracker].  We will try to\nanswer them as clearly and quickly as possible, time permitting.\n\nAsking questions also helps us identify areas where the documentation needs\nimprovement, or new features that weren't envisioned before. Sometimes, a\nseemingly innocent question leads to the fix of a bug. Don't hesitate and\nask away!\n\n### Improve the documentation\n\nThe best way to share your knowledge and experience with go-toml is to\nimprove the documentation. Fix a typo, clarify an interface, add an\nexample, anything goes!\n\nThe documentation is present in the [README][readme] and thorough the\nsource code. On release, it gets updated on [pkg.go.dev][pkg.go.dev]. To make a\nchange to the documentation, create a pull request with your proposed\nchanges. For simple changes like that, the easiest way to go is probably\nthe \"Fork this project and edit the file\" button on Github, displayed at\nthe top right of the file. Unless it's a trivial change (for example a\ntypo), provide a little bit of context in your pull request description or\ncommit message.\n\n### Report a bug\n\nFound a bug! Sorry to hear that :(. Help us and other track them down and\nfix by reporting it. [File a new bug report][bug-report] on the [issues\ntracker][issues-tracker]. The template should provide enough guidance on\nwhat to include. When in doubt: add more details! By reducing ambiguity and\nproviding more information, it decreases back and forth and saves everyone\ntime.\n\n### Code changes\n\nWant to contribute a patch? Very happy to hear that!\n\nFirst, some high-level rules:\n\n* A short proposal with some POC code is better than a lengthy piece of\n  text with no code. Code speaks louder than words.\n* No backward-incompatible patch will be accepted unless discussed.\n  Sometimes it's hard, and Go's lack of versioning by default does not\n  help, but we try not to break people's programs unless we absolutely have\n  to.\n* If you are writing a new feature or extending an existing one, make sure\n  to write some documentation.\n* Bug fixes need to be accompanied with regression tests.\n* New code needs to be tested.\n* Your commit messages need to explain why the change is needed, even if\n  already included in the PR description.\n\nIt does sound like a lot, but those best practices are here to save time\noverall and continuously improve the quality of the project, which is\nsomething everyone benefits from.\n\n#### Get started\n\nThe fairly standard code contribution process looks like that:\n\n1. [Fork the project][fork].\n2. Make your changes, commit on any branch you like.\n3. [Open up a pull request][pull-request]\n4. Review, potential ask for changes.\n5. Merge. You're in!\n\nFeel free to ask for help! You can create draft pull requests to gather\nsome early feedback!\n\n#### Run the tests\n\nYou can run tests for go-toml using Go's test tool: `go test ./...`.\nWhen creating a pull requests, all tests will be ran on Linux on a few Go\nversions (Travis CI), and on Windows using the latest Go version\n(AppVeyor).\n\n#### Style\n\nTry to look around and follow the same format and structure as the rest of\nthe code. We enforce using `go fmt` on the whole code base.\n\n---\n\n### Maintainers-only\n\n#### Merge pull request\n\nChecklist:\n\n* Passing CI.\n* Does not introduce backward-incompatible changes (unless discussed).\n* Has relevant doc changes.\n* Has relevant unit tests.\n\n1. Merge using \"squash and merge\".\n2. Make sure to edit the commit message to keep all the useful information\n   nice and clean.\n3. Make sure the commit title is clear and contains the PR number (#123).\n\n#### New release\n\n1. Go to [releases][releases]. Click on \"X commits to master since this\n   release\".\n2. Make note of all the changes. Look for backward incompatible changes,\n   new features, and bug fixes.\n3. Pick the new version using the above and semver.\n4. Create a [new release][new-release].\n5. Follow the same format as [1.1.0][release-110].\n\n[issues-tracker]: https://github.com/pelletier/go-toml/issues\n[bug-report]: https://github.com/pelletier/go-toml/issues/new?template=bug_report.md\n[pkg.go.dev]: https://pkg.go.dev/github.com/pelletier/go-toml\n[readme]: ./README.md\n[fork]: https://help.github.com/articles/fork-a-repo\n[pull-request]: https://help.github.com/en/articles/creating-a-pull-request\n[releases]: https://github.com/pelletier/go-toml/releases\n[new-release]: https://github.com/pelletier/go-toml/releases/new\n[release-110]: https://github.com/pelletier/go-toml/releases/tag/v1.1.0\n"
  },
  {
    "path": "tests/vendor/github.com/pelletier/go-toml/Dockerfile",
    "content": "FROM golang:1.12-alpine3.9 as builder\nWORKDIR /go/src/github.com/pelletier/go-toml\nCOPY . .\nENV CGO_ENABLED=0\nENV GOOS=linux\nRUN go install ./...\n\nFROM scratch\nCOPY --from=builder /go/bin/tomll /usr/bin/tomll\nCOPY --from=builder /go/bin/tomljson /usr/bin/tomljson\nCOPY --from=builder /go/bin/jsontoml /usr/bin/jsontoml\n"
  },
  {
    "path": "tests/vendor/github.com/pelletier/go-toml/LICENSE",
    "content": "The bulk of github.com/pelletier/go-toml is distributed under the MIT license\n(see below), with the exception of localtime.go and localtime.test.go.\nThose two files have been copied over from Google's civil library at revision\ned46f5086358513cf8c25f8e3f022cb838a49d66, and are distributed under the Apache\n2.0 license (see below).\n\n\ngithub.com/pelletier/go-toml:\n\n\nThe MIT License (MIT)\n\nCopyright (c) 2013 - 2021 Thomas Pelletier, Eric Anderton\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 all\ncopies 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 THE\nSOFTWARE.\n\n\nlocaltime.go, localtime_test.go:\n\nOriginals:\n    https://raw.githubusercontent.com/googleapis/google-cloud-go/ed46f5086358513cf8c25f8e3f022cb838a49d66/civil/civil.go\n    https://raw.githubusercontent.com/googleapis/google-cloud-go/ed46f5086358513cf8c25f8e3f022cb838a49d66/civil/civil_test.go\nChanges:\n    * Renamed files from civil* to localtime*.\n    * Package changed from civil to toml.\n    * 'Local' prefix added to all structs.\nLicense:\n    https://raw.githubusercontent.com/googleapis/google-cloud-go/ed46f5086358513cf8c25f8e3f022cb838a49d66/LICENSE\n\n\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "tests/vendor/github.com/pelletier/go-toml/Makefile",
    "content": "export CGO_ENABLED=0\ngo := go\ngo.goos ?= $(shell echo `go version`|cut -f4 -d ' '|cut -d '/' -f1)\ngo.goarch ?= $(shell echo `go version`|cut -f4 -d ' '|cut -d '/' -f2)\n\nout.tools := tomll tomljson jsontoml\nout.dist := $(out.tools:=_$(go.goos)_$(go.goarch).tar.xz)\nsources := $(wildcard **/*.go)\n\n\n.PHONY:\ntools: $(out.tools)\n\n$(out.tools): $(sources)\n\tGOOS=$(go.goos) GOARCH=$(go.goarch) $(go) build ./cmd/$@\n\n.PHONY:\ndist: $(out.dist)\n\n$(out.dist):%_$(go.goos)_$(go.goarch).tar.xz: %\n\tif [ \"$(go.goos)\" = \"windows\" ]; then \\\n\t\ttar -cJf $@ $^.exe; \\\n\telse \\\n\t\ttar -cJf $@ $^; \\\n\tfi\n\n.PHONY:\nclean:\n\trm -rf $(out.tools) $(out.dist)\n"
  },
  {
    "path": "tests/vendor/github.com/pelletier/go-toml/PULL_REQUEST_TEMPLATE.md",
    "content": "**Issue:** add link to pelletier/go-toml issue here\n\nExplanation of what this pull request does.\n\nMore detailed description of the decisions being made and the reasons why (if the patch is non-trivial).\n"
  },
  {
    "path": "tests/vendor/github.com/pelletier/go-toml/README.md",
    "content": "# go-toml\n\nGo library for the [TOML](https://toml.io/) format.\n\nThis library supports TOML version\n[v1.0.0-rc.3](https://toml.io/en/v1.0.0-rc.3)\n\n[![Go Reference](https://pkg.go.dev/badge/github.com/pelletier/go-toml.svg)](https://pkg.go.dev/github.com/pelletier/go-toml)\n[![license](https://img.shields.io/github/license/pelletier/go-toml.svg)](https://github.com/pelletier/go-toml/blob/master/LICENSE)\n[![Build Status](https://dev.azure.com/pelletierthomas/go-toml-ci/_apis/build/status/pelletier.go-toml?branchName=master)](https://dev.azure.com/pelletierthomas/go-toml-ci/_build/latest?definitionId=1&branchName=master)\n[![codecov](https://codecov.io/gh/pelletier/go-toml/branch/master/graph/badge.svg)](https://codecov.io/gh/pelletier/go-toml)\n[![Go Report Card](https://goreportcard.com/badge/github.com/pelletier/go-toml)](https://goreportcard.com/report/github.com/pelletier/go-toml)\n[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fpelletier%2Fgo-toml.svg?type=shield)](https://app.fossa.io/projects/git%2Bgithub.com%2Fpelletier%2Fgo-toml?ref=badge_shield)\n\n\n## Development status\n\n**ℹ️ Consider go-toml v2!**\n\nThe next version of go-toml is in [active development][v2-dev], and\n[nearing completion][v2-map].\n\nThough technically in beta, v2 is already more tested, [fixes bugs][v1-bugs],\nand [much faster][v2-bench]. If you only need reading and writing TOML documents\n(majority of cases), those features are implemented and the API unlikely to\nchange.\n\nThe remaining features will be added shortly. While pull-requests are welcome on\nv1, no active development is expected on it. When v2.0.0 is released, v1 will be\ndeprecated.\n\n👉 [go-toml v2][v2]\n\n[v2]: https://github.com/pelletier/go-toml/tree/v2\n[v2-map]: https://github.com/pelletier/go-toml/discussions/506\n[v2-dev]: https://github.com/pelletier/go-toml/tree/v2\n[v1-bugs]: https://github.com/pelletier/go-toml/issues?q=is%3Aissue+is%3Aopen+label%3Av2-fixed\n[v2-bench]: https://github.com/pelletier/go-toml/tree/v2#benchmarks\n\n## Features\n\nGo-toml provides the following features for using data parsed from TOML documents:\n\n* Load TOML documents from files and string data\n* Easily navigate TOML structure using Tree\n* Marshaling and unmarshaling to and from data structures\n* Line & column position data for all parsed elements\n* [Query support similar to JSON-Path](query/)\n* Syntax errors contain line and column numbers\n\n## Import\n\n```go\nimport \"github.com/pelletier/go-toml\"\n```\n\n## Usage example\n\nRead a TOML document:\n\n```go\nconfig, _ := toml.Load(`\n[postgres]\nuser = \"pelletier\"\npassword = \"mypassword\"`)\n// retrieve data directly\nuser := config.Get(\"postgres.user\").(string)\n\n// or using an intermediate object\npostgresConfig := config.Get(\"postgres\").(*toml.Tree)\npassword := postgresConfig.Get(\"password\").(string)\n```\n\nOr use Unmarshal:\n\n```go\ntype Postgres struct {\n    User     string\n    Password string\n}\ntype Config struct {\n    Postgres Postgres\n}\n\ndoc := []byte(`\n[Postgres]\nUser = \"pelletier\"\nPassword = \"mypassword\"`)\n\nconfig := Config{}\ntoml.Unmarshal(doc, &config)\nfmt.Println(\"user=\", config.Postgres.User)\n```\n\nOr use a query:\n\n```go\n// use a query to gather elements without walking the tree\nq, _ := query.Compile(\"$..[user,password]\")\nresults := q.Execute(config)\nfor ii, item := range results.Values() {\n    fmt.Printf(\"Query result %d: %v\\n\", ii, item)\n}\n```\n\n## Documentation\n\nThe documentation and additional examples are available at\n[pkg.go.dev](https://pkg.go.dev/github.com/pelletier/go-toml).\n\n## Tools\n\nGo-toml provides three handy command line tools:\n\n* `tomll`: Reads TOML files and lints them.\n\n    ```\n    go install github.com/pelletier/go-toml/cmd/tomll\n    tomll --help\n    ```\n* `tomljson`: Reads a TOML file and outputs its JSON representation.\n\n    ```\n    go install github.com/pelletier/go-toml/cmd/tomljson\n    tomljson --help\n    ```\n\n * `jsontoml`: Reads a JSON file and outputs a TOML representation.\n\n    ```\n    go install github.com/pelletier/go-toml/cmd/jsontoml\n    jsontoml --help\n    ```\n\n### Docker image\n\nThose tools are also available as a Docker image from\n[dockerhub](https://hub.docker.com/r/pelletier/go-toml). For example, to\nuse `tomljson`:\n\n```\ndocker run -v $PWD:/workdir pelletier/go-toml tomljson /workdir/example.toml\n```\n\nOnly master (`latest`) and tagged versions are published to dockerhub. You\ncan build your own image as usual:\n\n```\ndocker build -t go-toml .\n```\n\n## Contribute\n\nFeel free to report bugs and patches using GitHub's pull requests system on\n[pelletier/go-toml](https://github.com/pelletier/go-toml). Any feedback would be\nmuch appreciated!\n\n### Run tests\n\n`go test ./...`\n\n### Fuzzing\n\nThe script `./fuzz.sh` is available to\nrun [go-fuzz](https://github.com/dvyukov/go-fuzz) on go-toml.\n\n## Versioning\n\nGo-toml follows [Semantic Versioning](http://semver.org/). The supported version\nof [TOML](https://github.com/toml-lang/toml) is indicated at the beginning of\nthis document. The last two major versions of Go are supported\n(see [Go Release Policy](https://golang.org/doc/devel/release.html#policy)).\n\n## License\n\nThe MIT License (MIT) + Apache 2.0. Read [LICENSE](LICENSE).\n"
  },
  {
    "path": "tests/vendor/github.com/pelletier/go-toml/SECURITY.md",
    "content": "# Security Policy\n\n## Supported Versions\n\nUse this section to tell people about which versions of your project are\ncurrently being supported with security updates.\n\n| Version    | Supported          |\n| ---------- | ------------------ |\n| Latest 2.x | :white_check_mark: |\n| All 1.x    | :x:                |\n| All 0.x    | :x:                |\n\n## Reporting a Vulnerability\n\nEmail a vulnerability report to `security@pelletier.codes`. Make sure to include\nas many details as possible to reproduce the vulnerability. This is a\nside-project: I will try to get back to you as quickly as possible, time\npermitting in my personal life. Providing a working patch helps very much!\n"
  },
  {
    "path": "tests/vendor/github.com/pelletier/go-toml/azure-pipelines.yml",
    "content": "trigger:\n- master\n\nstages:\n- stage: run_checks\n  displayName: \"Check\"\n  dependsOn: []\n  jobs:\n  - job: fmt\n    displayName: \"fmt\"\n    pool:\n      vmImage: ubuntu-latest\n    steps:\n    - task: GoTool@0\n      displayName: \"Install Go 1.16\"\n      inputs:\n        version: \"1.16\"\n    - task: Go@0\n      displayName: \"go fmt ./...\"\n      inputs:\n        command: 'custom'\n        customCommand: 'fmt'\n        arguments: './...'\n  - job: coverage\n    displayName: \"coverage\"\n    pool:\n      vmImage: ubuntu-latest\n    steps:\n    - task: GoTool@0\n      displayName: \"Install Go 1.16\"\n      inputs:\n        version: \"1.16\"\n    - task: Go@0\n      displayName: \"Generate coverage\"\n      inputs:\n        command: 'test'\n        arguments: \"-race -coverprofile=coverage.txt -covermode=atomic\"\n    - task: Bash@3\n      inputs:\n        targetType: 'inline'\n        script: 'bash <(curl -s https://codecov.io/bash) -t ${CODECOV_TOKEN}'\n      env:\n        CODECOV_TOKEN: $(CODECOV_TOKEN)\n  - job: benchmark\n    displayName: \"benchmark\"\n    pool:\n      vmImage: ubuntu-latest\n    steps:\n    - task: GoTool@0\n      displayName: \"Install Go 1.16\"\n      inputs:\n        version: \"1.16\"\n    - script: echo \"##vso[task.setvariable variable=PATH]${PATH}:/home/vsts/go/bin/\"\n    - task: Bash@3\n      inputs:\n        filePath: './benchmark.sh'\n        arguments: \"master $(Build.Repository.Uri)\"\n\n  - job: go_unit_tests\n    displayName: \"unit tests\"\n    strategy:\n      matrix:\n        linux 1.16:\n          goVersion: '1.16'\n          imageName: 'ubuntu-latest'\n        mac 1.16:\n          goVersion: '1.16'\n          imageName: 'macOS-latest'\n        windows 1.16:\n          goVersion: '1.16'\n          imageName: 'windows-latest'\n        linux 1.15:\n          goVersion: '1.15'\n          imageName: 'ubuntu-latest'\n        mac 1.15:\n          goVersion: '1.15'\n          imageName: 'macOS-latest'\n        windows 1.15:\n          goVersion: '1.15'\n          imageName: 'windows-latest'\n    pool:\n      vmImage: $(imageName)\n    steps:\n    - task: GoTool@0\n      displayName: \"Install Go $(goVersion)\"\n      inputs:\n        version: $(goVersion)\n    - task: Go@0\n      displayName: \"go test ./...\"\n      inputs:\n        command: 'test'\n        arguments: './...'\n- stage: build_binaries\n  displayName: \"Build binaries\"\n  dependsOn: run_checks\n  jobs:\n  - job: build_binary\n    displayName: \"Build binary\"\n    strategy:\n      matrix:\n        linux_amd64:\n          GOOS: linux\n          GOARCH: amd64\n        darwin_amd64:\n          GOOS: darwin\n          GOARCH: amd64\n        windows_amd64:\n          GOOS: windows\n          GOARCH: amd64\n    pool:\n      vmImage: ubuntu-latest\n    steps:\n    - task: GoTool@0\n      displayName: \"Install Go\"\n      inputs:\n        version: 1.16\n    - task: Bash@3\n      inputs:\n        targetType: inline\n        script: \"make dist\"\n      env:\n        go.goos: $(GOOS)\n        go.goarch: $(GOARCH)\n    - task: CopyFiles@2\n      inputs:\n        sourceFolder: '$(Build.SourcesDirectory)'\n        contents: '*.tar.xz'\n        TargetFolder: '$(Build.ArtifactStagingDirectory)'\n    - task: PublishBuildArtifacts@1\n      inputs:\n        pathtoPublish: '$(Build.ArtifactStagingDirectory)'\n        artifactName: binaries\n- stage: build_binaries_manifest\n  displayName: \"Build binaries manifest\"\n  dependsOn: build_binaries\n  jobs:\n  - job: build_manifest\n    displayName: \"Build binaries manifest\"\n    steps:\n      - task: DownloadBuildArtifacts@0\n        inputs:\n          buildType: 'current'\n          downloadType: 'single'\n          artifactName: 'binaries'\n          downloadPath: '$(Build.SourcesDirectory)'\n      - task: Bash@3\n        inputs:\n          targetType: inline\n          script: \"cd binaries && sha256sum --binary *.tar.xz | tee $(Build.ArtifactStagingDirectory)/sha256sums.txt\"\n      - task: PublishBuildArtifacts@1\n        inputs:\n          pathtoPublish: '$(Build.ArtifactStagingDirectory)'\n          artifactName: manifest\n\n- stage: build_docker_image\n  displayName: \"Build Docker image\"\n  dependsOn: run_checks\n  jobs:\n  - job: build\n    displayName: \"Build\"\n    pool:\n      vmImage: ubuntu-latest\n    steps:\n    - task: Docker@2\n      inputs:\n        command: 'build'\n        Dockerfile: 'Dockerfile'\n        buildContext: '.'\n        addPipelineData: false\n\n- stage: publish_docker_image\n  displayName: \"Publish Docker image\"\n  dependsOn: build_docker_image\n  condition: and(succeeded(), eq(variables['Build.SourceBranchName'], 'master'))\n  jobs:\n  - job: publish\n    displayName: \"Publish\"\n    pool:\n      vmImage: ubuntu-latest\n    steps:\n    - task: Docker@2\n      inputs:\n        containerRegistry: 'DockerHub'\n        repository: 'pelletier/go-toml'\n        command: 'buildAndPush'\n        Dockerfile: 'Dockerfile'\n        buildContext: '.'\n        tags: 'latest'\n"
  },
  {
    "path": "tests/vendor/github.com/pelletier/go-toml/benchmark.sh",
    "content": "#!/bin/bash\n\nset -ex\n\nreference_ref=${1:-master}\nreference_git=${2:-.}\n\nif ! `hash benchstat 2>/dev/null`; then\n    echo \"Installing benchstat\"\n    go get golang.org/x/perf/cmd/benchstat\nfi\n\ntempdir=`mktemp -d /tmp/go-toml-benchmark-XXXXXX`\nref_tempdir=\"${tempdir}/ref\"\nref_benchmark=\"${ref_tempdir}/benchmark-`echo -n ${reference_ref}|tr -s '/' '-'`.txt\"\nlocal_benchmark=\"`pwd`/benchmark-local.txt\"\n\necho \"=== ${reference_ref} (${ref_tempdir})\"\ngit clone ${reference_git} ${ref_tempdir} >/dev/null 2>/dev/null\npushd ${ref_tempdir} >/dev/null\ngit checkout ${reference_ref} >/dev/null 2>/dev/null\ngo test -bench=. -benchmem | tee ${ref_benchmark}\ncd benchmark\ngo test -bench=. -benchmem | tee -a ${ref_benchmark}\npopd >/dev/null\n\necho \"\"\necho \"=== local\"\ngo test -bench=. -benchmem  | tee ${local_benchmark}\ncd benchmark\ngo test -bench=. -benchmem | tee -a ${local_benchmark}\n\necho \"\"\necho \"=== diff\"\nbenchstat -delta-test=none ${ref_benchmark} ${local_benchmark}\n"
  },
  {
    "path": "tests/vendor/github.com/pelletier/go-toml/doc.go",
    "content": "// Package toml is a TOML parser and manipulation library.\n//\n// This version supports the specification as described in\n// https://github.com/toml-lang/toml/blob/master/versions/en/toml-v0.5.0.md\n//\n// Marshaling\n//\n// Go-toml can marshal and unmarshal TOML documents from and to data\n// structures.\n//\n// TOML document as a tree\n//\n// Go-toml can operate on a TOML document as a tree. Use one of the Load*\n// functions to parse TOML data and obtain a Tree instance, then one of its\n// methods to manipulate the tree.\n//\n// JSONPath-like queries\n//\n// The package github.com/pelletier/go-toml/query implements a system\n// similar to JSONPath to quickly retrieve elements of a TOML document using a\n// single expression. See the package documentation for more information.\n//\npackage toml\n"
  },
  {
    "path": "tests/vendor/github.com/pelletier/go-toml/example-crlf.toml",
    "content": "# This is a TOML document. Boom.\r\n\r\ntitle = \"TOML Example\"\r\n\r\n[owner]\r\nname = \"Tom Preston-Werner\"\r\norganization = \"GitHub\"\r\nbio = \"GitHub Cofounder & CEO\\nLikes tater tots and beer.\"\r\ndob = 1979-05-27T07:32:00Z # First class dates? Why not?\r\n\r\n[database]\r\nserver = \"192.168.1.1\"\r\nports = [ 8001, 8001, 8002 ]\r\nconnection_max = 5000\r\nenabled = true\r\n\r\n[servers]\r\n\r\n  # You can indent as you please. Tabs or spaces. TOML don't care.\r\n  [servers.alpha]\r\n  ip = \"10.0.0.1\"\r\n  dc = \"eqdc10\"\r\n\r\n  [servers.beta]\r\n  ip = \"10.0.0.2\"\r\n  dc = \"eqdc10\"\r\n\r\n[clients]\r\ndata = [ [\"gamma\", \"delta\"], [1, 2] ] # just an update to make sure parsers support it\r\nscore = 4e-08 # to make sure leading zeroes in exponent parts of floats are supported"
  },
  {
    "path": "tests/vendor/github.com/pelletier/go-toml/example.toml",
    "content": "# This is a TOML document. Boom.\n\ntitle = \"TOML Example\"\n\n[owner]\nname = \"Tom Preston-Werner\"\norganization = \"GitHub\"\nbio = \"GitHub Cofounder & CEO\\nLikes tater tots and beer.\"\ndob = 1979-05-27T07:32:00Z # First class dates? Why not?\n\n[database]\nserver = \"192.168.1.1\"\nports = [ 8001, 8001, 8002 ]\nconnection_max = 5000\nenabled = true\n\n[servers]\n\n  # You can indent as you please. Tabs or spaces. TOML don't care.\n  [servers.alpha]\n  ip = \"10.0.0.1\"\n  dc = \"eqdc10\"\n\n  [servers.beta]\n  ip = \"10.0.0.2\"\n  dc = \"eqdc10\"\n\n[clients]\ndata = [ [\"gamma\", \"delta\"], [1, 2] ] # just an update to make sure parsers support it\nscore = 4e-08 # to make sure leading zeroes in exponent parts of floats are supported"
  },
  {
    "path": "tests/vendor/github.com/pelletier/go-toml/fuzz.go",
    "content": "// +build gofuzz\n\npackage toml\n\nfunc Fuzz(data []byte) int {\n\ttree, err := LoadBytes(data)\n\tif err != nil {\n\t\tif tree != nil {\n\t\t\tpanic(\"tree must be nil if there is an error\")\n\t\t}\n\t\treturn 0\n\t}\n\n\tstr, err := tree.ToTomlString()\n\tif err != nil {\n\t\tif str != \"\" {\n\t\t\tpanic(`str must be \"\" if there is an error`)\n\t\t}\n\t\tpanic(err)\n\t}\n\n\ttree, err = Load(str)\n\tif err != nil {\n\t\tif tree != nil {\n\t\t\tpanic(\"tree must be nil if there is an error\")\n\t\t}\n\t\treturn 0\n\t}\n\n\treturn 1\n}\n"
  },
  {
    "path": "tests/vendor/github.com/pelletier/go-toml/fuzz.sh",
    "content": "#! /bin/sh\nset -eu\n\ngo get github.com/dvyukov/go-fuzz/go-fuzz\ngo get github.com/dvyukov/go-fuzz/go-fuzz-build\n\nif [ ! -e toml-fuzz.zip ]; then\n    go-fuzz-build github.com/pelletier/go-toml\nfi\n\nrm -fr fuzz\nmkdir -p fuzz/corpus\ncp *.toml fuzz/corpus\n\ngo-fuzz -bin=toml-fuzz.zip -workdir=fuzz\n"
  },
  {
    "path": "tests/vendor/github.com/pelletier/go-toml/keysparsing.go",
    "content": "// Parsing keys handling both bare and quoted keys.\n\npackage toml\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n)\n\n// Convert the bare key group string to an array.\n// The input supports double quotation and single quotation,\n// but escape sequences are not supported. Lexers must unescape them beforehand.\nfunc parseKey(key string) ([]string, error) {\n\trunes := []rune(key)\n\tvar groups []string\n\n\tif len(key) == 0 {\n\t\treturn nil, errors.New(\"empty key\")\n\t}\n\n\tidx := 0\n\tfor idx < len(runes) {\n\t\tfor ; idx < len(runes) && isSpace(runes[idx]); idx++ {\n\t\t\t// skip leading whitespace\n\t\t}\n\t\tif idx >= len(runes) {\n\t\t\tbreak\n\t\t}\n\t\tr := runes[idx]\n\t\tif isValidBareChar(r) {\n\t\t\t// parse bare key\n\t\t\tstartIdx := idx\n\t\t\tendIdx := -1\n\t\t\tidx++\n\t\t\tfor idx < len(runes) {\n\t\t\t\tr = runes[idx]\n\t\t\t\tif isValidBareChar(r) {\n\t\t\t\t\tidx++\n\t\t\t\t} else if r == '.' {\n\t\t\t\t\tendIdx = idx\n\t\t\t\t\tbreak\n\t\t\t\t} else if isSpace(r) {\n\t\t\t\t\tendIdx = idx\n\t\t\t\t\tfor ; idx < len(runes) && isSpace(runes[idx]); idx++ {\n\t\t\t\t\t\t// skip trailing whitespace\n\t\t\t\t\t}\n\t\t\t\t\tif idx < len(runes) && runes[idx] != '.' {\n\t\t\t\t\t\treturn nil, fmt.Errorf(\"invalid key character after whitespace: %c\", runes[idx])\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t} else {\n\t\t\t\t\treturn nil, fmt.Errorf(\"invalid bare key character: %c\", r)\n\t\t\t\t}\n\t\t\t}\n\t\t\tif endIdx == -1 {\n\t\t\t\tendIdx = idx\n\t\t\t}\n\t\t\tgroups = append(groups, string(runes[startIdx:endIdx]))\n\t\t} else if r == '\\'' {\n\t\t\t// parse single quoted key\n\t\t\tidx++\n\t\t\tstartIdx := idx\n\t\t\tfor {\n\t\t\t\tif idx >= len(runes) {\n\t\t\t\t\treturn nil, fmt.Errorf(\"unclosed single-quoted key\")\n\t\t\t\t}\n\t\t\t\tr = runes[idx]\n\t\t\t\tif r == '\\'' {\n\t\t\t\t\tgroups = append(groups, string(runes[startIdx:idx]))\n\t\t\t\t\tidx++\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tidx++\n\t\t\t}\n\t\t} else if r == '\"' {\n\t\t\t// parse double quoted key\n\t\t\tidx++\n\t\t\tstartIdx := idx\n\t\t\tfor {\n\t\t\t\tif idx >= len(runes) {\n\t\t\t\t\treturn nil, fmt.Errorf(\"unclosed double-quoted key\")\n\t\t\t\t}\n\t\t\t\tr = runes[idx]\n\t\t\t\tif r == '\"' {\n\t\t\t\t\tgroups = append(groups, string(runes[startIdx:idx]))\n\t\t\t\t\tidx++\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tidx++\n\t\t\t}\n\t\t} else if r == '.' {\n\t\t\tidx++\n\t\t\tif idx >= len(runes) {\n\t\t\t\treturn nil, fmt.Errorf(\"unexpected end of key\")\n\t\t\t}\n\t\t\tr = runes[idx]\n\t\t\tif !isValidBareChar(r) && r != '\\'' && r != '\"' && r != ' ' {\n\t\t\t\treturn nil, fmt.Errorf(\"expecting key part after dot\")\n\t\t\t}\n\t\t} else {\n\t\t\treturn nil, fmt.Errorf(\"invalid key character: %c\", r)\n\t\t}\n\t}\n\tif len(groups) == 0 {\n\t\treturn nil, fmt.Errorf(\"empty key\")\n\t}\n\treturn groups, nil\n}\n\nfunc isValidBareChar(r rune) bool {\n\treturn isAlphanumeric(r) || r == '-' || isDigit(r)\n}\n"
  },
  {
    "path": "tests/vendor/github.com/pelletier/go-toml/lexer.go",
    "content": "// TOML lexer.\n//\n// Written using the principles developed by Rob Pike in\n// http://www.youtube.com/watch?v=HxaD_trXwRE\n\npackage toml\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"strconv\"\n\t\"strings\"\n)\n\n// Define state functions\ntype tomlLexStateFn func() tomlLexStateFn\n\n// Define lexer\ntype tomlLexer struct {\n\tinputIdx          int\n\tinput             []rune // Textual source\n\tcurrentTokenStart int\n\tcurrentTokenStop  int\n\ttokens            []token\n\tbrackets          []rune\n\tline              int\n\tcol               int\n\tendbufferLine     int\n\tendbufferCol      int\n}\n\n// Basic read operations on input\n\nfunc (l *tomlLexer) read() rune {\n\tr := l.peek()\n\tif r == '\\n' {\n\t\tl.endbufferLine++\n\t\tl.endbufferCol = 1\n\t} else {\n\t\tl.endbufferCol++\n\t}\n\tl.inputIdx++\n\treturn r\n}\n\nfunc (l *tomlLexer) next() rune {\n\tr := l.read()\n\n\tif r != eof {\n\t\tl.currentTokenStop++\n\t}\n\treturn r\n}\n\nfunc (l *tomlLexer) ignore() {\n\tl.currentTokenStart = l.currentTokenStop\n\tl.line = l.endbufferLine\n\tl.col = l.endbufferCol\n}\n\nfunc (l *tomlLexer) skip() {\n\tl.next()\n\tl.ignore()\n}\n\nfunc (l *tomlLexer) fastForward(n int) {\n\tfor i := 0; i < n; i++ {\n\t\tl.next()\n\t}\n}\n\nfunc (l *tomlLexer) emitWithValue(t tokenType, value string) {\n\tl.tokens = append(l.tokens, token{\n\t\tPosition: Position{l.line, l.col},\n\t\ttyp:      t,\n\t\tval:      value,\n\t})\n\tl.ignore()\n}\n\nfunc (l *tomlLexer) emit(t tokenType) {\n\tl.emitWithValue(t, string(l.input[l.currentTokenStart:l.currentTokenStop]))\n}\n\nfunc (l *tomlLexer) peek() rune {\n\tif l.inputIdx >= len(l.input) {\n\t\treturn eof\n\t}\n\treturn l.input[l.inputIdx]\n}\n\nfunc (l *tomlLexer) peekString(size int) string {\n\tmaxIdx := len(l.input)\n\tupperIdx := l.inputIdx + size // FIXME: potential overflow\n\tif upperIdx > maxIdx {\n\t\tupperIdx = maxIdx\n\t}\n\treturn string(l.input[l.inputIdx:upperIdx])\n}\n\nfunc (l *tomlLexer) follow(next string) bool {\n\treturn next == l.peekString(len(next))\n}\n\n// Error management\n\nfunc (l *tomlLexer) errorf(format string, args ...interface{}) tomlLexStateFn {\n\tl.tokens = append(l.tokens, token{\n\t\tPosition: Position{l.line, l.col},\n\t\ttyp:      tokenError,\n\t\tval:      fmt.Sprintf(format, args...),\n\t})\n\treturn nil\n}\n\n// State functions\n\nfunc (l *tomlLexer) lexVoid() tomlLexStateFn {\n\tfor {\n\t\tnext := l.peek()\n\t\tswitch next {\n\t\tcase '}': // after '{'\n\t\t\treturn l.lexRightCurlyBrace\n\t\tcase '[':\n\t\t\treturn l.lexTableKey\n\t\tcase '#':\n\t\t\treturn l.lexComment(l.lexVoid)\n\t\tcase '=':\n\t\t\treturn l.lexEqual\n\t\tcase '\\r':\n\t\t\tfallthrough\n\t\tcase '\\n':\n\t\t\tl.skip()\n\t\t\tcontinue\n\t\t}\n\n\t\tif isSpace(next) {\n\t\t\tl.skip()\n\t\t}\n\n\t\tif isKeyStartChar(next) {\n\t\t\treturn l.lexKey\n\t\t}\n\n\t\tif next == eof {\n\t\t\tl.next()\n\t\t\tbreak\n\t\t}\n\t}\n\n\tl.emit(tokenEOF)\n\treturn nil\n}\n\nfunc (l *tomlLexer) lexRvalue() tomlLexStateFn {\n\tfor {\n\t\tnext := l.peek()\n\t\tswitch next {\n\t\tcase '.':\n\t\t\treturn l.errorf(\"cannot start float with a dot\")\n\t\tcase '=':\n\t\t\treturn l.lexEqual\n\t\tcase '[':\n\t\t\treturn l.lexLeftBracket\n\t\tcase ']':\n\t\t\treturn l.lexRightBracket\n\t\tcase '{':\n\t\t\treturn l.lexLeftCurlyBrace\n\t\tcase '}':\n\t\t\treturn l.lexRightCurlyBrace\n\t\tcase '#':\n\t\t\treturn l.lexComment(l.lexRvalue)\n\t\tcase '\"':\n\t\t\treturn l.lexString\n\t\tcase '\\'':\n\t\t\treturn l.lexLiteralString\n\t\tcase ',':\n\t\t\treturn l.lexComma\n\t\tcase '\\r':\n\t\t\tfallthrough\n\t\tcase '\\n':\n\t\t\tl.skip()\n\t\t\tif len(l.brackets) > 0 && l.brackets[len(l.brackets)-1] == '[' {\n\t\t\t\treturn l.lexRvalue\n\t\t\t}\n\t\t\treturn l.lexVoid\n\t\t}\n\n\t\tif l.follow(\"true\") {\n\t\t\treturn l.lexTrue\n\t\t}\n\n\t\tif l.follow(\"false\") {\n\t\t\treturn l.lexFalse\n\t\t}\n\n\t\tif l.follow(\"inf\") {\n\t\t\treturn l.lexInf\n\t\t}\n\n\t\tif l.follow(\"nan\") {\n\t\t\treturn l.lexNan\n\t\t}\n\n\t\tif isSpace(next) {\n\t\t\tl.skip()\n\t\t\tcontinue\n\t\t}\n\n\t\tif next == eof {\n\t\t\tl.next()\n\t\t\tbreak\n\t\t}\n\n\t\tif next == '+' || next == '-' {\n\t\t\treturn l.lexNumber\n\t\t}\n\n\t\tif isDigit(next) {\n\t\t\treturn l.lexDateTimeOrNumber\n\t\t}\n\n\t\treturn l.errorf(\"no value can start with %c\", next)\n\t}\n\n\tl.emit(tokenEOF)\n\treturn nil\n}\n\nfunc (l *tomlLexer) lexDateTimeOrNumber() tomlLexStateFn {\n\t// Could be either a date/time, or a digit.\n\t// The options for date/times are:\n\t//   YYYY-... => date or date-time\n\t//   HH:... => time\n\t// Anything else should be a number.\n\n\tlookAhead := l.peekString(5)\n\tif len(lookAhead) < 3 {\n\t\treturn l.lexNumber()\n\t}\n\n\tfor idx, r := range lookAhead {\n\t\tif !isDigit(r) {\n\t\t\tif idx == 2 && r == ':' {\n\t\t\t\treturn l.lexDateTimeOrTime()\n\t\t\t}\n\t\t\tif idx == 4 && r == '-' {\n\t\t\t\treturn l.lexDateTimeOrTime()\n\t\t\t}\n\t\t\treturn l.lexNumber()\n\t\t}\n\t}\n\treturn l.lexNumber()\n}\n\nfunc (l *tomlLexer) lexLeftCurlyBrace() tomlLexStateFn {\n\tl.next()\n\tl.emit(tokenLeftCurlyBrace)\n\tl.brackets = append(l.brackets, '{')\n\treturn l.lexVoid\n}\n\nfunc (l *tomlLexer) lexRightCurlyBrace() tomlLexStateFn {\n\tl.next()\n\tl.emit(tokenRightCurlyBrace)\n\tif len(l.brackets) == 0 || l.brackets[len(l.brackets)-1] != '{' {\n\t\treturn l.errorf(\"cannot have '}' here\")\n\t}\n\tl.brackets = l.brackets[:len(l.brackets)-1]\n\treturn l.lexRvalue\n}\n\nfunc (l *tomlLexer) lexDateTimeOrTime() tomlLexStateFn {\n\t// Example matches:\n\t// 1979-05-27T07:32:00Z\n\t// 1979-05-27T00:32:00-07:00\n\t// 1979-05-27T00:32:00.999999-07:00\n\t// 1979-05-27 07:32:00Z\n\t// 1979-05-27 00:32:00-07:00\n\t// 1979-05-27 00:32:00.999999-07:00\n\t// 1979-05-27T07:32:00\n\t// 1979-05-27T00:32:00.999999\n\t// 1979-05-27 07:32:00\n\t// 1979-05-27 00:32:00.999999\n\t// 1979-05-27\n\t// 07:32:00\n\t// 00:32:00.999999\n\n\t// we already know those two are digits\n\tl.next()\n\tl.next()\n\n\t// Got 2 digits. At that point it could be either a time or a date(-time).\n\n\tr := l.next()\n\tif r == ':' {\n\t\treturn l.lexTime()\n\t}\n\n\treturn l.lexDateTime()\n}\n\nfunc (l *tomlLexer) lexDateTime() tomlLexStateFn {\n\t// This state accepts an offset date-time, a local date-time, or a local date.\n\t//\n\t//   v--- cursor\n\t// 1979-05-27T07:32:00Z\n\t// 1979-05-27T00:32:00-07:00\n\t// 1979-05-27T00:32:00.999999-07:00\n\t// 1979-05-27 07:32:00Z\n\t// 1979-05-27 00:32:00-07:00\n\t// 1979-05-27 00:32:00.999999-07:00\n\t// 1979-05-27T07:32:00\n\t// 1979-05-27T00:32:00.999999\n\t// 1979-05-27 07:32:00\n\t// 1979-05-27 00:32:00.999999\n\t// 1979-05-27\n\n\t// date\n\n\t// already checked by lexRvalue\n\tl.next() // digit\n\tl.next() // -\n\n\tfor i := 0; i < 2; i++ {\n\t\tr := l.next()\n\t\tif !isDigit(r) {\n\t\t\treturn l.errorf(\"invalid month digit in date: %c\", r)\n\t\t}\n\t}\n\n\tr := l.next()\n\tif r != '-' {\n\t\treturn l.errorf(\"expected - to separate month of a date, not %c\", r)\n\t}\n\n\tfor i := 0; i < 2; i++ {\n\t\tr := l.next()\n\t\tif !isDigit(r) {\n\t\t\treturn l.errorf(\"invalid day digit in date: %c\", r)\n\t\t}\n\t}\n\n\tl.emit(tokenLocalDate)\n\n\tr = l.peek()\n\n\tif r == eof {\n\n\t\treturn l.lexRvalue\n\t}\n\n\tif r != ' ' && r != 'T' {\n\t\treturn l.errorf(\"incorrect date/time separation character: %c\", r)\n\t}\n\n\tif r == ' ' {\n\t\tlookAhead := l.peekString(3)[1:]\n\t\tif len(lookAhead) < 2 {\n\t\t\treturn l.lexRvalue\n\t\t}\n\t\tfor _, r := range lookAhead {\n\t\t\tif !isDigit(r) {\n\t\t\t\treturn l.lexRvalue\n\t\t\t}\n\t\t}\n\t}\n\n\tl.skip() // skip the T or ' '\n\n\t// time\n\n\tfor i := 0; i < 2; i++ {\n\t\tr := l.next()\n\t\tif !isDigit(r) {\n\t\t\treturn l.errorf(\"invalid hour digit in time: %c\", r)\n\t\t}\n\t}\n\n\tr = l.next()\n\tif r != ':' {\n\t\treturn l.errorf(\"time hour/minute separator should be :, not %c\", r)\n\t}\n\n\tfor i := 0; i < 2; i++ {\n\t\tr := l.next()\n\t\tif !isDigit(r) {\n\t\t\treturn l.errorf(\"invalid minute digit in time: %c\", r)\n\t\t}\n\t}\n\n\tr = l.next()\n\tif r != ':' {\n\t\treturn l.errorf(\"time minute/second separator should be :, not %c\", r)\n\t}\n\n\tfor i := 0; i < 2; i++ {\n\t\tr := l.next()\n\t\tif !isDigit(r) {\n\t\t\treturn l.errorf(\"invalid second digit in time: %c\", r)\n\t\t}\n\t}\n\n\tr = l.peek()\n\tif r == '.' {\n\t\tl.next()\n\t\tr := l.next()\n\t\tif !isDigit(r) {\n\t\t\treturn l.errorf(\"expected at least one digit in time's fraction, not %c\", r)\n\t\t}\n\n\t\tfor {\n\t\t\tr := l.peek()\n\t\t\tif !isDigit(r) {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tl.next()\n\t\t}\n\t}\n\n\tl.emit(tokenLocalTime)\n\n\treturn l.lexTimeOffset\n\n}\n\nfunc (l *tomlLexer) lexTimeOffset() tomlLexStateFn {\n\t// potential offset\n\n\t// Z\n\t// -07:00\n\t// +07:00\n\t// nothing\n\n\tr := l.peek()\n\n\tif r == 'Z' {\n\t\tl.next()\n\t\tl.emit(tokenTimeOffset)\n\t} else if r == '+' || r == '-' {\n\t\tl.next()\n\n\t\tfor i := 0; i < 2; i++ {\n\t\t\tr := l.next()\n\t\t\tif !isDigit(r) {\n\t\t\t\treturn l.errorf(\"invalid hour digit in time offset: %c\", r)\n\t\t\t}\n\t\t}\n\n\t\tr = l.next()\n\t\tif r != ':' {\n\t\t\treturn l.errorf(\"time offset hour/minute separator should be :, not %c\", r)\n\t\t}\n\n\t\tfor i := 0; i < 2; i++ {\n\t\t\tr := l.next()\n\t\t\tif !isDigit(r) {\n\t\t\t\treturn l.errorf(\"invalid minute digit in time offset: %c\", r)\n\t\t\t}\n\t\t}\n\n\t\tl.emit(tokenTimeOffset)\n\t}\n\n\treturn l.lexRvalue\n}\n\nfunc (l *tomlLexer) lexTime() tomlLexStateFn {\n\t//   v--- cursor\n\t// 07:32:00\n\t// 00:32:00.999999\n\n\tfor i := 0; i < 2; i++ {\n\t\tr := l.next()\n\t\tif !isDigit(r) {\n\t\t\treturn l.errorf(\"invalid minute digit in time: %c\", r)\n\t\t}\n\t}\n\n\tr := l.next()\n\tif r != ':' {\n\t\treturn l.errorf(\"time minute/second separator should be :, not %c\", r)\n\t}\n\n\tfor i := 0; i < 2; i++ {\n\t\tr := l.next()\n\t\tif !isDigit(r) {\n\t\t\treturn l.errorf(\"invalid second digit in time: %c\", r)\n\t\t}\n\t}\n\n\tr = l.peek()\n\tif r == '.' {\n\t\tl.next()\n\t\tr := l.next()\n\t\tif !isDigit(r) {\n\t\t\treturn l.errorf(\"expected at least one digit in time's fraction, not %c\", r)\n\t\t}\n\n\t\tfor {\n\t\t\tr := l.peek()\n\t\t\tif !isDigit(r) {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tl.next()\n\t\t}\n\t}\n\n\tl.emit(tokenLocalTime)\n\treturn l.lexRvalue\n\n}\n\nfunc (l *tomlLexer) lexTrue() tomlLexStateFn {\n\tl.fastForward(4)\n\tl.emit(tokenTrue)\n\treturn l.lexRvalue\n}\n\nfunc (l *tomlLexer) lexFalse() tomlLexStateFn {\n\tl.fastForward(5)\n\tl.emit(tokenFalse)\n\treturn l.lexRvalue\n}\n\nfunc (l *tomlLexer) lexInf() tomlLexStateFn {\n\tl.fastForward(3)\n\tl.emit(tokenInf)\n\treturn l.lexRvalue\n}\n\nfunc (l *tomlLexer) lexNan() tomlLexStateFn {\n\tl.fastForward(3)\n\tl.emit(tokenNan)\n\treturn l.lexRvalue\n}\n\nfunc (l *tomlLexer) lexEqual() tomlLexStateFn {\n\tl.next()\n\tl.emit(tokenEqual)\n\treturn l.lexRvalue\n}\n\nfunc (l *tomlLexer) lexComma() tomlLexStateFn {\n\tl.next()\n\tl.emit(tokenComma)\n\tif len(l.brackets) > 0 && l.brackets[len(l.brackets)-1] == '{' {\n\t\treturn l.lexVoid\n\t}\n\treturn l.lexRvalue\n}\n\n// Parse the key and emits its value without escape sequences.\n// bare keys, basic string keys and literal string keys are supported.\nfunc (l *tomlLexer) lexKey() tomlLexStateFn {\n\tvar sb strings.Builder\n\n\tfor r := l.peek(); isKeyChar(r) || r == '\\n' || r == '\\r'; r = l.peek() {\n\t\tif r == '\"' {\n\t\t\tl.next()\n\t\t\tstr, err := l.lexStringAsString(`\"`, false, true)\n\t\t\tif err != nil {\n\t\t\t\treturn l.errorf(err.Error())\n\t\t\t}\n\t\t\tsb.WriteString(\"\\\"\")\n\t\t\tsb.WriteString(str)\n\t\t\tsb.WriteString(\"\\\"\")\n\t\t\tl.next()\n\t\t\tcontinue\n\t\t} else if r == '\\'' {\n\t\t\tl.next()\n\t\t\tstr, err := l.lexLiteralStringAsString(`'`, false)\n\t\t\tif err != nil {\n\t\t\t\treturn l.errorf(err.Error())\n\t\t\t}\n\t\t\tsb.WriteString(\"'\")\n\t\t\tsb.WriteString(str)\n\t\t\tsb.WriteString(\"'\")\n\t\t\tl.next()\n\t\t\tcontinue\n\t\t} else if r == '\\n' {\n\t\t\treturn l.errorf(\"keys cannot contain new lines\")\n\t\t} else if isSpace(r) {\n\t\t\tvar str strings.Builder\n\t\t\tstr.WriteString(\" \")\n\n\t\t\t// skip trailing whitespace\n\t\t\tl.next()\n\t\t\tfor r = l.peek(); isSpace(r); r = l.peek() {\n\t\t\t\tstr.WriteRune(r)\n\t\t\t\tl.next()\n\t\t\t}\n\t\t\t// break loop if not a dot\n\t\t\tif r != '.' {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tstr.WriteString(\".\")\n\t\t\t// skip trailing whitespace after dot\n\t\t\tl.next()\n\t\t\tfor r = l.peek(); isSpace(r); r = l.peek() {\n\t\t\t\tstr.WriteRune(r)\n\t\t\t\tl.next()\n\t\t\t}\n\t\t\tsb.WriteString(str.String())\n\t\t\tcontinue\n\t\t} else if r == '.' {\n\t\t\t// skip\n\t\t} else if !isValidBareChar(r) {\n\t\t\treturn l.errorf(\"keys cannot contain %c character\", r)\n\t\t}\n\t\tsb.WriteRune(r)\n\t\tl.next()\n\t}\n\tl.emitWithValue(tokenKey, sb.String())\n\treturn l.lexVoid\n}\n\nfunc (l *tomlLexer) lexComment(previousState tomlLexStateFn) tomlLexStateFn {\n\treturn func() tomlLexStateFn {\n\t\tfor next := l.peek(); next != '\\n' && next != eof; next = l.peek() {\n\t\t\tif next == '\\r' && l.follow(\"\\r\\n\") {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tl.next()\n\t\t}\n\t\tl.ignore()\n\t\treturn previousState\n\t}\n}\n\nfunc (l *tomlLexer) lexLeftBracket() tomlLexStateFn {\n\tl.next()\n\tl.emit(tokenLeftBracket)\n\tl.brackets = append(l.brackets, '[')\n\treturn l.lexRvalue\n}\n\nfunc (l *tomlLexer) lexLiteralStringAsString(terminator string, discardLeadingNewLine bool) (string, error) {\n\tvar sb strings.Builder\n\n\tif discardLeadingNewLine {\n\t\tif l.follow(\"\\r\\n\") {\n\t\t\tl.skip()\n\t\t\tl.skip()\n\t\t} else if l.peek() == '\\n' {\n\t\t\tl.skip()\n\t\t}\n\t}\n\n\t// find end of string\n\tfor {\n\t\tif l.follow(terminator) {\n\t\t\treturn sb.String(), nil\n\t\t}\n\n\t\tnext := l.peek()\n\t\tif next == eof {\n\t\t\tbreak\n\t\t}\n\t\tsb.WriteRune(l.next())\n\t}\n\n\treturn \"\", errors.New(\"unclosed string\")\n}\n\nfunc (l *tomlLexer) lexLiteralString() tomlLexStateFn {\n\tl.skip()\n\n\t// handle special case for triple-quote\n\tterminator := \"'\"\n\tdiscardLeadingNewLine := false\n\tif l.follow(\"''\") {\n\t\tl.skip()\n\t\tl.skip()\n\t\tterminator = \"'''\"\n\t\tdiscardLeadingNewLine = true\n\t}\n\n\tstr, err := l.lexLiteralStringAsString(terminator, discardLeadingNewLine)\n\tif err != nil {\n\t\treturn l.errorf(err.Error())\n\t}\n\n\tl.emitWithValue(tokenString, str)\n\tl.fastForward(len(terminator))\n\tl.ignore()\n\treturn l.lexRvalue\n}\n\n// Lex a string and return the results as a string.\n// Terminator is the substring indicating the end of the token.\n// The resulting string does not include the terminator.\nfunc (l *tomlLexer) lexStringAsString(terminator string, discardLeadingNewLine, acceptNewLines bool) (string, error) {\n\tvar sb strings.Builder\n\n\tif discardLeadingNewLine {\n\t\tif l.follow(\"\\r\\n\") {\n\t\t\tl.skip()\n\t\t\tl.skip()\n\t\t} else if l.peek() == '\\n' {\n\t\t\tl.skip()\n\t\t}\n\t}\n\n\tfor {\n\t\tif l.follow(terminator) {\n\t\t\treturn sb.String(), nil\n\t\t}\n\n\t\tif l.follow(\"\\\\\") {\n\t\t\tl.next()\n\t\t\tswitch l.peek() {\n\t\t\tcase '\\r':\n\t\t\t\tfallthrough\n\t\t\tcase '\\n':\n\t\t\t\tfallthrough\n\t\t\tcase '\\t':\n\t\t\t\tfallthrough\n\t\t\tcase ' ':\n\t\t\t\t// skip all whitespace chars following backslash\n\t\t\t\tfor strings.ContainsRune(\"\\r\\n\\t \", l.peek()) {\n\t\t\t\t\tl.next()\n\t\t\t\t}\n\t\t\tcase '\"':\n\t\t\t\tsb.WriteString(\"\\\"\")\n\t\t\t\tl.next()\n\t\t\tcase 'n':\n\t\t\t\tsb.WriteString(\"\\n\")\n\t\t\t\tl.next()\n\t\t\tcase 'b':\n\t\t\t\tsb.WriteString(\"\\b\")\n\t\t\t\tl.next()\n\t\t\tcase 'f':\n\t\t\t\tsb.WriteString(\"\\f\")\n\t\t\t\tl.next()\n\t\t\tcase '/':\n\t\t\t\tsb.WriteString(\"/\")\n\t\t\t\tl.next()\n\t\t\tcase 't':\n\t\t\t\tsb.WriteString(\"\\t\")\n\t\t\t\tl.next()\n\t\t\tcase 'r':\n\t\t\t\tsb.WriteString(\"\\r\")\n\t\t\t\tl.next()\n\t\t\tcase '\\\\':\n\t\t\t\tsb.WriteString(\"\\\\\")\n\t\t\t\tl.next()\n\t\t\tcase 'u':\n\t\t\t\tl.next()\n\t\t\t\tvar code strings.Builder\n\t\t\t\tfor i := 0; i < 4; i++ {\n\t\t\t\t\tc := l.peek()\n\t\t\t\t\tif !isHexDigit(c) {\n\t\t\t\t\t\treturn \"\", errors.New(\"unfinished unicode escape\")\n\t\t\t\t\t}\n\t\t\t\t\tl.next()\n\t\t\t\t\tcode.WriteRune(c)\n\t\t\t\t}\n\t\t\t\tintcode, err := strconv.ParseInt(code.String(), 16, 32)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn \"\", errors.New(\"invalid unicode escape: \\\\u\" + code.String())\n\t\t\t\t}\n\t\t\t\tsb.WriteRune(rune(intcode))\n\t\t\tcase 'U':\n\t\t\t\tl.next()\n\t\t\t\tvar code strings.Builder\n\t\t\t\tfor i := 0; i < 8; i++ {\n\t\t\t\t\tc := l.peek()\n\t\t\t\t\tif !isHexDigit(c) {\n\t\t\t\t\t\treturn \"\", errors.New(\"unfinished unicode escape\")\n\t\t\t\t\t}\n\t\t\t\t\tl.next()\n\t\t\t\t\tcode.WriteRune(c)\n\t\t\t\t}\n\t\t\t\tintcode, err := strconv.ParseInt(code.String(), 16, 64)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn \"\", errors.New(\"invalid unicode escape: \\\\U\" + code.String())\n\t\t\t\t}\n\t\t\t\tsb.WriteRune(rune(intcode))\n\t\t\tdefault:\n\t\t\t\treturn \"\", errors.New(\"invalid escape sequence: \\\\\" + string(l.peek()))\n\t\t\t}\n\t\t} else {\n\t\t\tr := l.peek()\n\n\t\t\tif 0x00 <= r && r <= 0x1F && r != '\\t' && !(acceptNewLines && (r == '\\n' || r == '\\r')) {\n\t\t\t\treturn \"\", fmt.Errorf(\"unescaped control character %U\", r)\n\t\t\t}\n\t\t\tl.next()\n\t\t\tsb.WriteRune(r)\n\t\t}\n\n\t\tif l.peek() == eof {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn \"\", errors.New(\"unclosed string\")\n}\n\nfunc (l *tomlLexer) lexString() tomlLexStateFn {\n\tl.skip()\n\n\t// handle special case for triple-quote\n\tterminator := `\"`\n\tdiscardLeadingNewLine := false\n\tacceptNewLines := false\n\tif l.follow(`\"\"`) {\n\t\tl.skip()\n\t\tl.skip()\n\t\tterminator = `\"\"\"`\n\t\tdiscardLeadingNewLine = true\n\t\tacceptNewLines = true\n\t}\n\n\tstr, err := l.lexStringAsString(terminator, discardLeadingNewLine, acceptNewLines)\n\tif err != nil {\n\t\treturn l.errorf(err.Error())\n\t}\n\n\tl.emitWithValue(tokenString, str)\n\tl.fastForward(len(terminator))\n\tl.ignore()\n\treturn l.lexRvalue\n}\n\nfunc (l *tomlLexer) lexTableKey() tomlLexStateFn {\n\tl.next()\n\n\tif l.peek() == '[' {\n\t\t// token '[[' signifies an array of tables\n\t\tl.next()\n\t\tl.emit(tokenDoubleLeftBracket)\n\t\treturn l.lexInsideTableArrayKey\n\t}\n\t// vanilla table key\n\tl.emit(tokenLeftBracket)\n\treturn l.lexInsideTableKey\n}\n\n// Parse the key till \"]]\", but only bare keys are supported\nfunc (l *tomlLexer) lexInsideTableArrayKey() tomlLexStateFn {\n\tfor r := l.peek(); r != eof; r = l.peek() {\n\t\tswitch r {\n\t\tcase ']':\n\t\t\tif l.currentTokenStop > l.currentTokenStart {\n\t\t\t\tl.emit(tokenKeyGroupArray)\n\t\t\t}\n\t\t\tl.next()\n\t\t\tif l.peek() != ']' {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tl.next()\n\t\t\tl.emit(tokenDoubleRightBracket)\n\t\t\treturn l.lexVoid\n\t\tcase '[':\n\t\t\treturn l.errorf(\"table array key cannot contain ']'\")\n\t\tdefault:\n\t\t\tl.next()\n\t\t}\n\t}\n\treturn l.errorf(\"unclosed table array key\")\n}\n\n// Parse the key till \"]\" but only bare keys are supported\nfunc (l *tomlLexer) lexInsideTableKey() tomlLexStateFn {\n\tfor r := l.peek(); r != eof; r = l.peek() {\n\t\tswitch r {\n\t\tcase ']':\n\t\t\tif l.currentTokenStop > l.currentTokenStart {\n\t\t\t\tl.emit(tokenKeyGroup)\n\t\t\t}\n\t\t\tl.next()\n\t\t\tl.emit(tokenRightBracket)\n\t\t\treturn l.lexVoid\n\t\tcase '[':\n\t\t\treturn l.errorf(\"table key cannot contain ']'\")\n\t\tdefault:\n\t\t\tl.next()\n\t\t}\n\t}\n\treturn l.errorf(\"unclosed table key\")\n}\n\nfunc (l *tomlLexer) lexRightBracket() tomlLexStateFn {\n\tl.next()\n\tl.emit(tokenRightBracket)\n\tif len(l.brackets) == 0 || l.brackets[len(l.brackets)-1] != '[' {\n\t\treturn l.errorf(\"cannot have ']' here\")\n\t}\n\tl.brackets = l.brackets[:len(l.brackets)-1]\n\treturn l.lexRvalue\n}\n\ntype validRuneFn func(r rune) bool\n\nfunc isValidHexRune(r rune) bool {\n\treturn r >= 'a' && r <= 'f' ||\n\t\tr >= 'A' && r <= 'F' ||\n\t\tr >= '0' && r <= '9' ||\n\t\tr == '_'\n}\n\nfunc isValidOctalRune(r rune) bool {\n\treturn r >= '0' && r <= '7' || r == '_'\n}\n\nfunc isValidBinaryRune(r rune) bool {\n\treturn r == '0' || r == '1' || r == '_'\n}\n\nfunc (l *tomlLexer) lexNumber() tomlLexStateFn {\n\tr := l.peek()\n\n\tif r == '0' {\n\t\tfollow := l.peekString(2)\n\t\tif len(follow) == 2 {\n\t\t\tvar isValidRune validRuneFn\n\t\t\tswitch follow[1] {\n\t\t\tcase 'x':\n\t\t\t\tisValidRune = isValidHexRune\n\t\t\tcase 'o':\n\t\t\t\tisValidRune = isValidOctalRune\n\t\t\tcase 'b':\n\t\t\t\tisValidRune = isValidBinaryRune\n\t\t\tdefault:\n\t\t\t\tif follow[1] >= 'a' && follow[1] <= 'z' || follow[1] >= 'A' && follow[1] <= 'Z' {\n\t\t\t\t\treturn l.errorf(\"unknown number base: %s. possible options are x (hex) o (octal) b (binary)\", string(follow[1]))\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif isValidRune != nil {\n\t\t\t\tl.next()\n\t\t\t\tl.next()\n\t\t\t\tdigitSeen := false\n\t\t\t\tfor {\n\t\t\t\t\tnext := l.peek()\n\t\t\t\t\tif !isValidRune(next) {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tdigitSeen = true\n\t\t\t\t\tl.next()\n\t\t\t\t}\n\n\t\t\t\tif !digitSeen {\n\t\t\t\t\treturn l.errorf(\"number needs at least one digit\")\n\t\t\t\t}\n\n\t\t\t\tl.emit(tokenInteger)\n\n\t\t\t\treturn l.lexRvalue\n\t\t\t}\n\t\t}\n\t}\n\n\tif r == '+' || r == '-' {\n\t\tl.next()\n\t\tif l.follow(\"inf\") {\n\t\t\treturn l.lexInf\n\t\t}\n\t\tif l.follow(\"nan\") {\n\t\t\treturn l.lexNan\n\t\t}\n\t}\n\n\tpointSeen := false\n\texpSeen := false\n\tdigitSeen := false\n\tfor {\n\t\tnext := l.peek()\n\t\tif next == '.' {\n\t\t\tif pointSeen {\n\t\t\t\treturn l.errorf(\"cannot have two dots in one float\")\n\t\t\t}\n\t\t\tl.next()\n\t\t\tif !isDigit(l.peek()) {\n\t\t\t\treturn l.errorf(\"float cannot end with a dot\")\n\t\t\t}\n\t\t\tpointSeen = true\n\t\t} else if next == 'e' || next == 'E' {\n\t\t\texpSeen = true\n\t\t\tl.next()\n\t\t\tr := l.peek()\n\t\t\tif r == '+' || r == '-' {\n\t\t\t\tl.next()\n\t\t\t}\n\t\t} else if isDigit(next) {\n\t\t\tdigitSeen = true\n\t\t\tl.next()\n\t\t} else if next == '_' {\n\t\t\tl.next()\n\t\t} else {\n\t\t\tbreak\n\t\t}\n\t\tif pointSeen && !digitSeen {\n\t\t\treturn l.errorf(\"cannot start float with a dot\")\n\t\t}\n\t}\n\n\tif !digitSeen {\n\t\treturn l.errorf(\"no digit in that number\")\n\t}\n\tif pointSeen || expSeen {\n\t\tl.emit(tokenFloat)\n\t} else {\n\t\tl.emit(tokenInteger)\n\t}\n\treturn l.lexRvalue\n}\n\nfunc (l *tomlLexer) run() {\n\tfor state := l.lexVoid; state != nil; {\n\t\tstate = state()\n\t}\n}\n\n// Entry point\nfunc lexToml(inputBytes []byte) []token {\n\trunes := bytes.Runes(inputBytes)\n\tl := &tomlLexer{\n\t\tinput:         runes,\n\t\ttokens:        make([]token, 0, 256),\n\t\tline:          1,\n\t\tcol:           1,\n\t\tendbufferLine: 1,\n\t\tendbufferCol:  1,\n\t}\n\tl.run()\n\treturn l.tokens\n}\n"
  },
  {
    "path": "tests/vendor/github.com/pelletier/go-toml/localtime.go",
    "content": "// Implementation of TOML's local date/time.\n//\n// Copied over from Google's civil to avoid pulling all the Google dependencies.\n// Originals:\n//   https://raw.githubusercontent.com/googleapis/google-cloud-go/ed46f5086358513cf8c25f8e3f022cb838a49d66/civil/civil.go\n// Changes:\n//   * Renamed files from civil* to localtime*.\n//   * Package changed from civil to toml.\n//   * 'Local' prefix added to all structs.\n//\n// Copyright 2016 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package civil implements types for civil time, a time-zone-independent\n// representation of time that follows the rules of the proleptic\n// Gregorian calendar with exactly 24-hour days, 60-minute hours, and 60-second\n// minutes.\n//\n// Because they lack location information, these types do not represent unique\n// moments or intervals of time. Use time.Time for that purpose.\npackage toml\n\nimport (\n\t\"fmt\"\n\t\"time\"\n)\n\n// A LocalDate represents a date (year, month, day).\n//\n// This type does not include location information, and therefore does not\n// describe a unique 24-hour timespan.\ntype LocalDate struct {\n\tYear  int        // Year (e.g., 2014).\n\tMonth time.Month // Month of the year (January = 1, ...).\n\tDay   int        // Day of the month, starting at 1.\n}\n\n// LocalDateOf returns the LocalDate in which a time occurs in that time's location.\nfunc LocalDateOf(t time.Time) LocalDate {\n\tvar d LocalDate\n\td.Year, d.Month, d.Day = t.Date()\n\treturn d\n}\n\n// ParseLocalDate parses a string in RFC3339 full-date format and returns the date value it represents.\nfunc ParseLocalDate(s string) (LocalDate, error) {\n\tt, err := time.Parse(\"2006-01-02\", s)\n\tif err != nil {\n\t\treturn LocalDate{}, err\n\t}\n\treturn LocalDateOf(t), nil\n}\n\n// String returns the date in RFC3339 full-date format.\nfunc (d LocalDate) String() string {\n\treturn fmt.Sprintf(\"%04d-%02d-%02d\", d.Year, d.Month, d.Day)\n}\n\n// IsValid reports whether the date is valid.\nfunc (d LocalDate) IsValid() bool {\n\treturn LocalDateOf(d.In(time.UTC)) == d\n}\n\n// In returns the time corresponding to time 00:00:00 of the date in the location.\n//\n// In is always consistent with time.LocalDate, even when time.LocalDate returns a time\n// on a different day. For example, if loc is America/Indiana/Vincennes, then both\n//     time.LocalDate(1955, time.May, 1, 0, 0, 0, 0, loc)\n// and\n//     civil.LocalDate{Year: 1955, Month: time.May, Day: 1}.In(loc)\n// return 23:00:00 on April 30, 1955.\n//\n// In panics if loc is nil.\nfunc (d LocalDate) In(loc *time.Location) time.Time {\n\treturn time.Date(d.Year, d.Month, d.Day, 0, 0, 0, 0, loc)\n}\n\n// AddDays returns the date that is n days in the future.\n// n can also be negative to go into the past.\nfunc (d LocalDate) AddDays(n int) LocalDate {\n\treturn LocalDateOf(d.In(time.UTC).AddDate(0, 0, n))\n}\n\n// DaysSince returns the signed number of days between the date and s, not including the end day.\n// This is the inverse operation to AddDays.\nfunc (d LocalDate) DaysSince(s LocalDate) (days int) {\n\t// We convert to Unix time so we do not have to worry about leap seconds:\n\t// Unix time increases by exactly 86400 seconds per day.\n\tdeltaUnix := d.In(time.UTC).Unix() - s.In(time.UTC).Unix()\n\treturn int(deltaUnix / 86400)\n}\n\n// Before reports whether d1 occurs before d2.\nfunc (d1 LocalDate) Before(d2 LocalDate) bool {\n\tif d1.Year != d2.Year {\n\t\treturn d1.Year < d2.Year\n\t}\n\tif d1.Month != d2.Month {\n\t\treturn d1.Month < d2.Month\n\t}\n\treturn d1.Day < d2.Day\n}\n\n// After reports whether d1 occurs after d2.\nfunc (d1 LocalDate) After(d2 LocalDate) bool {\n\treturn d2.Before(d1)\n}\n\n// MarshalText implements the encoding.TextMarshaler interface.\n// The output is the result of d.String().\nfunc (d LocalDate) MarshalText() ([]byte, error) {\n\treturn []byte(d.String()), nil\n}\n\n// UnmarshalText implements the encoding.TextUnmarshaler interface.\n// The date is expected to be a string in a format accepted by ParseLocalDate.\nfunc (d *LocalDate) UnmarshalText(data []byte) error {\n\tvar err error\n\t*d, err = ParseLocalDate(string(data))\n\treturn err\n}\n\n// A LocalTime represents a time with nanosecond precision.\n//\n// This type does not include location information, and therefore does not\n// describe a unique moment in time.\n//\n// This type exists to represent the TIME type in storage-based APIs like BigQuery.\n// Most operations on Times are unlikely to be meaningful. Prefer the LocalDateTime type.\ntype LocalTime struct {\n\tHour       int // The hour of the day in 24-hour format; range [0-23]\n\tMinute     int // The minute of the hour; range [0-59]\n\tSecond     int // The second of the minute; range [0-59]\n\tNanosecond int // The nanosecond of the second; range [0-999999999]\n}\n\n// LocalTimeOf returns the LocalTime representing the time of day in which a time occurs\n// in that time's location. It ignores the date.\nfunc LocalTimeOf(t time.Time) LocalTime {\n\tvar tm LocalTime\n\ttm.Hour, tm.Minute, tm.Second = t.Clock()\n\ttm.Nanosecond = t.Nanosecond()\n\treturn tm\n}\n\n// ParseLocalTime parses a string and returns the time value it represents.\n// ParseLocalTime accepts an extended form of the RFC3339 partial-time format. After\n// the HH:MM:SS part of the string, an optional fractional part may appear,\n// consisting of a decimal point followed by one to nine decimal digits.\n// (RFC3339 admits only one digit after the decimal point).\nfunc ParseLocalTime(s string) (LocalTime, error) {\n\tt, err := time.Parse(\"15:04:05.999999999\", s)\n\tif err != nil {\n\t\treturn LocalTime{}, err\n\t}\n\treturn LocalTimeOf(t), nil\n}\n\n// String returns the date in the format described in ParseLocalTime. If Nanoseconds\n// is zero, no fractional part will be generated. Otherwise, the result will\n// end with a fractional part consisting of a decimal point and nine digits.\nfunc (t LocalTime) String() string {\n\ts := fmt.Sprintf(\"%02d:%02d:%02d\", t.Hour, t.Minute, t.Second)\n\tif t.Nanosecond == 0 {\n\t\treturn s\n\t}\n\treturn s + fmt.Sprintf(\".%09d\", t.Nanosecond)\n}\n\n// IsValid reports whether the time is valid.\nfunc (t LocalTime) IsValid() bool {\n\t// Construct a non-zero time.\n\ttm := time.Date(2, 2, 2, t.Hour, t.Minute, t.Second, t.Nanosecond, time.UTC)\n\treturn LocalTimeOf(tm) == t\n}\n\n// MarshalText implements the encoding.TextMarshaler interface.\n// The output is the result of t.String().\nfunc (t LocalTime) MarshalText() ([]byte, error) {\n\treturn []byte(t.String()), nil\n}\n\n// UnmarshalText implements the encoding.TextUnmarshaler interface.\n// The time is expected to be a string in a format accepted by ParseLocalTime.\nfunc (t *LocalTime) UnmarshalText(data []byte) error {\n\tvar err error\n\t*t, err = ParseLocalTime(string(data))\n\treturn err\n}\n\n// A LocalDateTime represents a date and time.\n//\n// This type does not include location information, and therefore does not\n// describe a unique moment in time.\ntype LocalDateTime struct {\n\tDate LocalDate\n\tTime LocalTime\n}\n\n// Note: We deliberately do not embed LocalDate into LocalDateTime, to avoid promoting AddDays and Sub.\n\n// LocalDateTimeOf returns the LocalDateTime in which a time occurs in that time's location.\nfunc LocalDateTimeOf(t time.Time) LocalDateTime {\n\treturn LocalDateTime{\n\t\tDate: LocalDateOf(t),\n\t\tTime: LocalTimeOf(t),\n\t}\n}\n\n// ParseLocalDateTime parses a string and returns the LocalDateTime it represents.\n// ParseLocalDateTime accepts a variant of the RFC3339 date-time format that omits\n// the time offset but includes an optional fractional time, as described in\n// ParseLocalTime. Informally, the accepted format is\n//     YYYY-MM-DDTHH:MM:SS[.FFFFFFFFF]\n// where the 'T' may be a lower-case 't'.\nfunc ParseLocalDateTime(s string) (LocalDateTime, error) {\n\tt, err := time.Parse(\"2006-01-02T15:04:05.999999999\", s)\n\tif err != nil {\n\t\tt, err = time.Parse(\"2006-01-02t15:04:05.999999999\", s)\n\t\tif err != nil {\n\t\t\treturn LocalDateTime{}, err\n\t\t}\n\t}\n\treturn LocalDateTimeOf(t), nil\n}\n\n// String returns the date in the format described in ParseLocalDate.\nfunc (dt LocalDateTime) String() string {\n\treturn dt.Date.String() + \"T\" + dt.Time.String()\n}\n\n// IsValid reports whether the datetime is valid.\nfunc (dt LocalDateTime) IsValid() bool {\n\treturn dt.Date.IsValid() && dt.Time.IsValid()\n}\n\n// In returns the time corresponding to the LocalDateTime in the given location.\n//\n// If the time is missing or ambigous at the location, In returns the same\n// result as time.LocalDate. For example, if loc is America/Indiana/Vincennes, then\n// both\n//     time.LocalDate(1955, time.May, 1, 0, 30, 0, 0, loc)\n// and\n//     civil.LocalDateTime{\n//         civil.LocalDate{Year: 1955, Month: time.May, Day: 1}},\n//         civil.LocalTime{Minute: 30}}.In(loc)\n// return 23:30:00 on April 30, 1955.\n//\n// In panics if loc is nil.\nfunc (dt LocalDateTime) In(loc *time.Location) time.Time {\n\treturn time.Date(dt.Date.Year, dt.Date.Month, dt.Date.Day, dt.Time.Hour, dt.Time.Minute, dt.Time.Second, dt.Time.Nanosecond, loc)\n}\n\n// Before reports whether dt1 occurs before dt2.\nfunc (dt1 LocalDateTime) Before(dt2 LocalDateTime) bool {\n\treturn dt1.In(time.UTC).Before(dt2.In(time.UTC))\n}\n\n// After reports whether dt1 occurs after dt2.\nfunc (dt1 LocalDateTime) After(dt2 LocalDateTime) bool {\n\treturn dt2.Before(dt1)\n}\n\n// MarshalText implements the encoding.TextMarshaler interface.\n// The output is the result of dt.String().\nfunc (dt LocalDateTime) MarshalText() ([]byte, error) {\n\treturn []byte(dt.String()), nil\n}\n\n// UnmarshalText implements the encoding.TextUnmarshaler interface.\n// The datetime is expected to be a string in a format accepted by ParseLocalDateTime\nfunc (dt *LocalDateTime) UnmarshalText(data []byte) error {\n\tvar err error\n\t*dt, err = ParseLocalDateTime(string(data))\n\treturn err\n}\n"
  },
  {
    "path": "tests/vendor/github.com/pelletier/go-toml/marshal.go",
    "content": "package toml\n\nimport (\n\t\"bytes\"\n\t\"encoding\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"reflect\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n)\n\nconst (\n\ttagFieldName    = \"toml\"\n\ttagFieldComment = \"comment\"\n\ttagCommented    = \"commented\"\n\ttagMultiline    = \"multiline\"\n\ttagLiteral      = \"literal\"\n\ttagDefault      = \"default\"\n)\n\ntype tomlOpts struct {\n\tname         string\n\tnameFromTag  bool\n\tcomment      string\n\tcommented    bool\n\tmultiline    bool\n\tliteral      bool\n\tinclude      bool\n\tomitempty    bool\n\tdefaultValue string\n}\n\ntype encOpts struct {\n\tquoteMapKeys            bool\n\tarraysOneElementPerLine bool\n}\n\nvar encOptsDefaults = encOpts{\n\tquoteMapKeys: false,\n}\n\ntype annotation struct {\n\ttag          string\n\tcomment      string\n\tcommented    string\n\tmultiline    string\n\tliteral      string\n\tdefaultValue string\n}\n\nvar annotationDefault = annotation{\n\ttag:          tagFieldName,\n\tcomment:      tagFieldComment,\n\tcommented:    tagCommented,\n\tmultiline:    tagMultiline,\n\tliteral:      tagLiteral,\n\tdefaultValue: tagDefault,\n}\n\ntype MarshalOrder int\n\n// Orders the Encoder can write the fields to the output stream.\nconst (\n\t// Sort fields alphabetically.\n\tOrderAlphabetical MarshalOrder = iota + 1\n\t// Preserve the order the fields are encountered. For example, the order of fields in\n\t// a struct.\n\tOrderPreserve\n)\n\nvar timeType = reflect.TypeOf(time.Time{})\nvar marshalerType = reflect.TypeOf(new(Marshaler)).Elem()\nvar unmarshalerType = reflect.TypeOf(new(Unmarshaler)).Elem()\nvar textMarshalerType = reflect.TypeOf(new(encoding.TextMarshaler)).Elem()\nvar textUnmarshalerType = reflect.TypeOf(new(encoding.TextUnmarshaler)).Elem()\nvar localDateType = reflect.TypeOf(LocalDate{})\nvar localTimeType = reflect.TypeOf(LocalTime{})\nvar localDateTimeType = reflect.TypeOf(LocalDateTime{})\nvar mapStringInterfaceType = reflect.TypeOf(map[string]interface{}{})\n\n// Check if the given marshal type maps to a Tree primitive\nfunc isPrimitive(mtype reflect.Type) bool {\n\tswitch mtype.Kind() {\n\tcase reflect.Ptr:\n\t\treturn isPrimitive(mtype.Elem())\n\tcase reflect.Bool:\n\t\treturn true\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\treturn true\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:\n\t\treturn true\n\tcase reflect.Float32, reflect.Float64:\n\t\treturn true\n\tcase reflect.String:\n\t\treturn true\n\tcase reflect.Struct:\n\t\treturn isTimeType(mtype)\n\tdefault:\n\t\treturn false\n\t}\n}\n\nfunc isTimeType(mtype reflect.Type) bool {\n\treturn mtype == timeType || mtype == localDateType || mtype == localDateTimeType || mtype == localTimeType\n}\n\n// Check if the given marshal type maps to a Tree slice or array\nfunc isTreeSequence(mtype reflect.Type) bool {\n\tswitch mtype.Kind() {\n\tcase reflect.Ptr:\n\t\treturn isTreeSequence(mtype.Elem())\n\tcase reflect.Slice, reflect.Array:\n\t\treturn isTree(mtype.Elem())\n\tdefault:\n\t\treturn false\n\t}\n}\n\n// Check if the given marshal type maps to a slice or array of a custom marshaler type\nfunc isCustomMarshalerSequence(mtype reflect.Type) bool {\n\tswitch mtype.Kind() {\n\tcase reflect.Ptr:\n\t\treturn isCustomMarshalerSequence(mtype.Elem())\n\tcase reflect.Slice, reflect.Array:\n\t\treturn isCustomMarshaler(mtype.Elem()) || isCustomMarshaler(reflect.New(mtype.Elem()).Type())\n\tdefault:\n\t\treturn false\n\t}\n}\n\n// Check if the given marshal type maps to a slice or array of a text marshaler type\nfunc isTextMarshalerSequence(mtype reflect.Type) bool {\n\tswitch mtype.Kind() {\n\tcase reflect.Ptr:\n\t\treturn isTextMarshalerSequence(mtype.Elem())\n\tcase reflect.Slice, reflect.Array:\n\t\treturn isTextMarshaler(mtype.Elem()) || isTextMarshaler(reflect.New(mtype.Elem()).Type())\n\tdefault:\n\t\treturn false\n\t}\n}\n\n// Check if the given marshal type maps to a non-Tree slice or array\nfunc isOtherSequence(mtype reflect.Type) bool {\n\tswitch mtype.Kind() {\n\tcase reflect.Ptr:\n\t\treturn isOtherSequence(mtype.Elem())\n\tcase reflect.Slice, reflect.Array:\n\t\treturn !isTreeSequence(mtype)\n\tdefault:\n\t\treturn false\n\t}\n}\n\n// Check if the given marshal type maps to a Tree\nfunc isTree(mtype reflect.Type) bool {\n\tswitch mtype.Kind() {\n\tcase reflect.Ptr:\n\t\treturn isTree(mtype.Elem())\n\tcase reflect.Map:\n\t\treturn true\n\tcase reflect.Struct:\n\t\treturn !isPrimitive(mtype)\n\tdefault:\n\t\treturn false\n\t}\n}\n\nfunc isCustomMarshaler(mtype reflect.Type) bool {\n\treturn mtype.Implements(marshalerType)\n}\n\nfunc callCustomMarshaler(mval reflect.Value) ([]byte, error) {\n\treturn mval.Interface().(Marshaler).MarshalTOML()\n}\n\nfunc isTextMarshaler(mtype reflect.Type) bool {\n\treturn mtype.Implements(textMarshalerType) && !isTimeType(mtype)\n}\n\nfunc callTextMarshaler(mval reflect.Value) ([]byte, error) {\n\treturn mval.Interface().(encoding.TextMarshaler).MarshalText()\n}\n\nfunc isCustomUnmarshaler(mtype reflect.Type) bool {\n\treturn mtype.Implements(unmarshalerType)\n}\n\nfunc callCustomUnmarshaler(mval reflect.Value, tval interface{}) error {\n\treturn mval.Interface().(Unmarshaler).UnmarshalTOML(tval)\n}\n\nfunc isTextUnmarshaler(mtype reflect.Type) bool {\n\treturn mtype.Implements(textUnmarshalerType)\n}\n\nfunc callTextUnmarshaler(mval reflect.Value, text []byte) error {\n\treturn mval.Interface().(encoding.TextUnmarshaler).UnmarshalText(text)\n}\n\n// Marshaler is the interface implemented by types that\n// can marshal themselves into valid TOML.\ntype Marshaler interface {\n\tMarshalTOML() ([]byte, error)\n}\n\n// Unmarshaler is the interface implemented by types that\n// can unmarshal a TOML description of themselves.\ntype Unmarshaler interface {\n\tUnmarshalTOML(interface{}) error\n}\n\n/*\nMarshal returns the TOML encoding of v.  Behavior is similar to the Go json\nencoder, except that there is no concept of a Marshaler interface or MarshalTOML\nfunction for sub-structs, and currently only definite types can be marshaled\n(i.e. no `interface{}`).\n\nThe following struct annotations are supported:\n\n  toml:\"Field\"      Overrides the field's name to output.\n  omitempty         When set, empty values and groups are not emitted.\n  comment:\"comment\" Emits a # comment on the same line. This supports new lines.\n  commented:\"true\"  Emits the value as commented.\n\nNote that pointers are automatically assigned the \"omitempty\" option, as TOML\nexplicitly does not handle null values (saying instead the label should be\ndropped).\n\nTree structural types and corresponding marshal types:\n\n  *Tree                            (*)struct, (*)map[string]interface{}\n  []*Tree                          (*)[](*)struct, (*)[](*)map[string]interface{}\n  []interface{} (as interface{})   (*)[]primitive, (*)[]([]interface{})\n  interface{}                      (*)primitive\n\nTree primitive types and corresponding marshal types:\n\n  uint64     uint, uint8-uint64, pointers to same\n  int64      int, int8-uint64, pointers to same\n  float64    float32, float64, pointers to same\n  string     string, pointers to same\n  bool       bool, pointers to same\n  time.LocalTime  time.LocalTime{}, pointers to same\n\nFor additional flexibility, use the Encoder API.\n*/\nfunc Marshal(v interface{}) ([]byte, error) {\n\treturn NewEncoder(nil).marshal(v)\n}\n\n// Encoder writes TOML values to an output stream.\ntype Encoder struct {\n\tw io.Writer\n\tencOpts\n\tannotation\n\tline            int\n\tcol             int\n\torder           MarshalOrder\n\tpromoteAnon     bool\n\tcompactComments bool\n\tindentation     string\n}\n\n// NewEncoder returns a new encoder that writes to w.\nfunc NewEncoder(w io.Writer) *Encoder {\n\treturn &Encoder{\n\t\tw:           w,\n\t\tencOpts:     encOptsDefaults,\n\t\tannotation:  annotationDefault,\n\t\tline:        0,\n\t\tcol:         1,\n\t\torder:       OrderAlphabetical,\n\t\tindentation: \"  \",\n\t}\n}\n\n// Encode writes the TOML encoding of v to the stream.\n//\n// See the documentation for Marshal for details.\nfunc (e *Encoder) Encode(v interface{}) error {\n\tb, err := e.marshal(v)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif _, err := e.w.Write(b); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// QuoteMapKeys sets up the encoder to encode\n// maps with string type keys with quoted TOML keys.\n//\n// This relieves the character limitations on map keys.\nfunc (e *Encoder) QuoteMapKeys(v bool) *Encoder {\n\te.quoteMapKeys = v\n\treturn e\n}\n\n// ArraysWithOneElementPerLine sets up the encoder to encode arrays\n// with more than one element on multiple lines instead of one.\n//\n// For example:\n//\n//   A = [1,2,3]\n//\n// Becomes\n//\n//   A = [\n//     1,\n//     2,\n//     3,\n//   ]\nfunc (e *Encoder) ArraysWithOneElementPerLine(v bool) *Encoder {\n\te.arraysOneElementPerLine = v\n\treturn e\n}\n\n// Order allows to change in which order fields will be written to the output stream.\nfunc (e *Encoder) Order(ord MarshalOrder) *Encoder {\n\te.order = ord\n\treturn e\n}\n\n// Indentation allows to change indentation when marshalling.\nfunc (e *Encoder) Indentation(indent string) *Encoder {\n\te.indentation = indent\n\treturn e\n}\n\n// SetTagName allows changing default tag \"toml\"\nfunc (e *Encoder) SetTagName(v string) *Encoder {\n\te.tag = v\n\treturn e\n}\n\n// SetTagComment allows changing default tag \"comment\"\nfunc (e *Encoder) SetTagComment(v string) *Encoder {\n\te.comment = v\n\treturn e\n}\n\n// SetTagCommented allows changing default tag \"commented\"\nfunc (e *Encoder) SetTagCommented(v string) *Encoder {\n\te.commented = v\n\treturn e\n}\n\n// SetTagMultiline allows changing default tag \"multiline\"\nfunc (e *Encoder) SetTagMultiline(v string) *Encoder {\n\te.multiline = v\n\treturn e\n}\n\n// PromoteAnonymous allows to change how anonymous struct fields are marshaled.\n// Usually, they are marshaled as if the inner exported fields were fields in\n// the outer struct. However, if an anonymous struct field is given a name in\n// its TOML tag, it is treated like a regular struct field with that name.\n// rather than being anonymous.\n//\n// In case anonymous promotion is enabled, all anonymous structs are promoted\n// and treated like regular struct fields.\nfunc (e *Encoder) PromoteAnonymous(promote bool) *Encoder {\n\te.promoteAnon = promote\n\treturn e\n}\n\n// CompactComments removes the new line before each comment in the tree.\nfunc (e *Encoder) CompactComments(cc bool) *Encoder {\n\te.compactComments = cc\n\treturn e\n}\n\nfunc (e *Encoder) marshal(v interface{}) ([]byte, error) {\n\t// Check if indentation is valid\n\tfor _, char := range e.indentation {\n\t\tif !isSpace(char) {\n\t\t\treturn []byte{}, fmt.Errorf(\"invalid indentation: must only contains space or tab characters\")\n\t\t}\n\t}\n\n\tmtype := reflect.TypeOf(v)\n\tif mtype == nil {\n\t\treturn []byte{}, errors.New(\"nil cannot be marshaled to TOML\")\n\t}\n\n\tswitch mtype.Kind() {\n\tcase reflect.Struct, reflect.Map:\n\tcase reflect.Ptr:\n\t\tif mtype.Elem().Kind() != reflect.Struct {\n\t\t\treturn []byte{}, errors.New(\"Only pointer to struct can be marshaled to TOML\")\n\t\t}\n\t\tif reflect.ValueOf(v).IsNil() {\n\t\t\treturn []byte{}, errors.New(\"nil pointer cannot be marshaled to TOML\")\n\t\t}\n\tdefault:\n\t\treturn []byte{}, errors.New(\"Only a struct or map can be marshaled to TOML\")\n\t}\n\n\tsval := reflect.ValueOf(v)\n\tif isCustomMarshaler(mtype) {\n\t\treturn callCustomMarshaler(sval)\n\t}\n\tif isTextMarshaler(mtype) {\n\t\treturn callTextMarshaler(sval)\n\t}\n\tt, err := e.valueToTree(mtype, sval)\n\tif err != nil {\n\t\treturn []byte{}, err\n\t}\n\n\tvar buf bytes.Buffer\n\t_, err = t.writeToOrdered(&buf, \"\", \"\", 0, e.arraysOneElementPerLine, e.order, e.indentation, e.compactComments, false)\n\n\treturn buf.Bytes(), err\n}\n\n// Create next tree with a position based on Encoder.line\nfunc (e *Encoder) nextTree() *Tree {\n\treturn newTreeWithPosition(Position{Line: e.line, Col: 1})\n}\n\n// Convert given marshal struct or map value to toml tree\nfunc (e *Encoder) valueToTree(mtype reflect.Type, mval reflect.Value) (*Tree, error) {\n\tif mtype.Kind() == reflect.Ptr {\n\t\treturn e.valueToTree(mtype.Elem(), mval.Elem())\n\t}\n\ttval := e.nextTree()\n\tswitch mtype.Kind() {\n\tcase reflect.Struct:\n\t\tswitch mval.Interface().(type) {\n\t\tcase Tree:\n\t\t\treflect.ValueOf(tval).Elem().Set(mval)\n\t\tdefault:\n\t\t\tfor i := 0; i < mtype.NumField(); i++ {\n\t\t\t\tmtypef, mvalf := mtype.Field(i), mval.Field(i)\n\t\t\t\topts := tomlOptions(mtypef, e.annotation)\n\t\t\t\tif opts.include && ((mtypef.Type.Kind() != reflect.Interface && !opts.omitempty) || !isZero(mvalf)) {\n\t\t\t\t\tval, err := e.valueToToml(mtypef.Type, mvalf)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn nil, err\n\t\t\t\t\t}\n\t\t\t\t\tif tree, ok := val.(*Tree); ok && mtypef.Anonymous && !opts.nameFromTag && !e.promoteAnon {\n\t\t\t\t\t\te.appendTree(tval, tree)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tval = e.wrapTomlValue(val, tval)\n\t\t\t\t\t\ttval.SetPathWithOptions([]string{opts.name}, SetOptions{\n\t\t\t\t\t\t\tComment:   opts.comment,\n\t\t\t\t\t\t\tCommented: opts.commented,\n\t\t\t\t\t\t\tMultiline: opts.multiline,\n\t\t\t\t\t\t\tLiteral:   opts.literal,\n\t\t\t\t\t\t}, val)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\tcase reflect.Map:\n\t\tkeys := mval.MapKeys()\n\t\tif e.order == OrderPreserve && len(keys) > 0 {\n\t\t\t// Sorting []reflect.Value is not straight forward.\n\t\t\t//\n\t\t\t// OrderPreserve will support deterministic results when string is used\n\t\t\t// as the key to maps.\n\t\t\ttyp := keys[0].Type()\n\t\t\tkind := keys[0].Kind()\n\t\t\tif kind == reflect.String {\n\t\t\t\tikeys := make([]string, len(keys))\n\t\t\t\tfor i := range keys {\n\t\t\t\t\tikeys[i] = keys[i].Interface().(string)\n\t\t\t\t}\n\t\t\t\tsort.Strings(ikeys)\n\t\t\t\tfor i := range ikeys {\n\t\t\t\t\tkeys[i] = reflect.ValueOf(ikeys[i]).Convert(typ)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfor _, key := range keys {\n\t\t\tmvalf := mval.MapIndex(key)\n\t\t\tif (mtype.Elem().Kind() == reflect.Ptr || mtype.Elem().Kind() == reflect.Interface) && mvalf.IsNil() {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tval, err := e.valueToToml(mtype.Elem(), mvalf)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tval = e.wrapTomlValue(val, tval)\n\t\t\tif e.quoteMapKeys {\n\t\t\t\tkeyStr, err := tomlValueStringRepresentation(key.String(), \"\", \"\", e.order, e.arraysOneElementPerLine)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\ttval.SetPath([]string{keyStr}, val)\n\t\t\t} else {\n\t\t\t\ttval.SetPath([]string{key.String()}, val)\n\t\t\t}\n\t\t}\n\t}\n\treturn tval, nil\n}\n\n// Convert given marshal slice to slice of Toml trees\nfunc (e *Encoder) valueToTreeSlice(mtype reflect.Type, mval reflect.Value) ([]*Tree, error) {\n\ttval := make([]*Tree, mval.Len(), mval.Len())\n\tfor i := 0; i < mval.Len(); i++ {\n\t\tval, err := e.valueToTree(mtype.Elem(), mval.Index(i))\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\ttval[i] = val\n\t}\n\treturn tval, nil\n}\n\n// Convert given marshal slice to slice of toml values\nfunc (e *Encoder) valueToOtherSlice(mtype reflect.Type, mval reflect.Value) (interface{}, error) {\n\ttval := make([]interface{}, mval.Len(), mval.Len())\n\tfor i := 0; i < mval.Len(); i++ {\n\t\tval, err := e.valueToToml(mtype.Elem(), mval.Index(i))\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\ttval[i] = val\n\t}\n\treturn tval, nil\n}\n\n// Convert given marshal value to toml value\nfunc (e *Encoder) valueToToml(mtype reflect.Type, mval reflect.Value) (interface{}, error) {\n\tif mtype.Kind() == reflect.Ptr {\n\t\tswitch {\n\t\tcase isCustomMarshaler(mtype):\n\t\t\treturn callCustomMarshaler(mval)\n\t\tcase isTextMarshaler(mtype):\n\t\t\tb, err := callTextMarshaler(mval)\n\t\t\treturn string(b), err\n\t\tdefault:\n\t\t\treturn e.valueToToml(mtype.Elem(), mval.Elem())\n\t\t}\n\t}\n\tif mtype.Kind() == reflect.Interface {\n\t\treturn e.valueToToml(mval.Elem().Type(), mval.Elem())\n\t}\n\tswitch {\n\tcase isCustomMarshaler(mtype):\n\t\treturn callCustomMarshaler(mval)\n\tcase isTextMarshaler(mtype):\n\t\tb, err := callTextMarshaler(mval)\n\t\treturn string(b), err\n\tcase isTree(mtype):\n\t\treturn e.valueToTree(mtype, mval)\n\tcase isOtherSequence(mtype), isCustomMarshalerSequence(mtype), isTextMarshalerSequence(mtype):\n\t\treturn e.valueToOtherSlice(mtype, mval)\n\tcase isTreeSequence(mtype):\n\t\treturn e.valueToTreeSlice(mtype, mval)\n\tdefault:\n\t\tswitch mtype.Kind() {\n\t\tcase reflect.Bool:\n\t\t\treturn mval.Bool(), nil\n\t\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\t\tif mtype.Kind() == reflect.Int64 && mtype == reflect.TypeOf(time.Duration(1)) {\n\t\t\t\treturn fmt.Sprint(mval), nil\n\t\t\t}\n\t\t\treturn mval.Int(), nil\n\t\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:\n\t\t\treturn mval.Uint(), nil\n\t\tcase reflect.Float32, reflect.Float64:\n\t\t\treturn mval.Float(), nil\n\t\tcase reflect.String:\n\t\t\treturn mval.String(), nil\n\t\tcase reflect.Struct:\n\t\t\treturn mval.Interface(), nil\n\t\tdefault:\n\t\t\treturn nil, fmt.Errorf(\"Marshal can't handle %v(%v)\", mtype, mtype.Kind())\n\t\t}\n\t}\n}\n\nfunc (e *Encoder) appendTree(t, o *Tree) error {\n\tfor key, value := range o.values {\n\t\tif _, ok := t.values[key]; ok {\n\t\t\tcontinue\n\t\t}\n\t\tif tomlValue, ok := value.(*tomlValue); ok {\n\t\t\ttomlValue.position.Col = t.position.Col\n\t\t}\n\t\tt.values[key] = value\n\t}\n\treturn nil\n}\n\n// Create a toml value with the current line number as the position line\nfunc (e *Encoder) wrapTomlValue(val interface{}, parent *Tree) interface{} {\n\t_, isTree := val.(*Tree)\n\t_, isTreeS := val.([]*Tree)\n\tif isTree || isTreeS {\n\t\te.line++\n\t\treturn val\n\t}\n\n\tret := &tomlValue{\n\t\tvalue: val,\n\t\tposition: Position{\n\t\t\te.line,\n\t\t\tparent.position.Col,\n\t\t},\n\t}\n\te.line++\n\treturn ret\n}\n\n// Unmarshal attempts to unmarshal the Tree into a Go struct pointed by v.\n// Neither Unmarshaler interfaces nor UnmarshalTOML functions are supported for\n// sub-structs, and only definite types can be unmarshaled.\nfunc (t *Tree) Unmarshal(v interface{}) error {\n\td := Decoder{tval: t, tagName: tagFieldName}\n\treturn d.unmarshal(v)\n}\n\n// Marshal returns the TOML encoding of Tree.\n// See Marshal() documentation for types mapping table.\nfunc (t *Tree) Marshal() ([]byte, error) {\n\tvar buf bytes.Buffer\n\t_, err := t.WriteTo(&buf)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn buf.Bytes(), nil\n}\n\n// Unmarshal parses the TOML-encoded data and stores the result in the value\n// pointed to by v. Behavior is similar to the Go json encoder, except that there\n// is no concept of an Unmarshaler interface or UnmarshalTOML function for\n// sub-structs, and currently only definite types can be unmarshaled to (i.e. no\n// `interface{}`).\n//\n// The following struct annotations are supported:\n//\n//   toml:\"Field\" Overrides the field's name to map to.\n//   default:\"foo\" Provides a default value.\n//\n// For default values, only fields of the following types are supported:\n//   * string\n//   * bool\n//   * int\n//   * int64\n//   * float64\n//\n// See Marshal() documentation for types mapping table.\nfunc Unmarshal(data []byte, v interface{}) error {\n\tt, err := LoadReader(bytes.NewReader(data))\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn t.Unmarshal(v)\n}\n\n// Decoder reads and decodes TOML values from an input stream.\ntype Decoder struct {\n\tr    io.Reader\n\ttval *Tree\n\tencOpts\n\ttagName string\n\tstrict  bool\n\tvisitor visitorState\n}\n\n// NewDecoder returns a new decoder that reads from r.\nfunc NewDecoder(r io.Reader) *Decoder {\n\treturn &Decoder{\n\t\tr:       r,\n\t\tencOpts: encOptsDefaults,\n\t\ttagName: tagFieldName,\n\t}\n}\n\n// Decode reads a TOML-encoded value from it's input\n// and unmarshals it in the value pointed at by v.\n//\n// See the documentation for Marshal for details.\nfunc (d *Decoder) Decode(v interface{}) error {\n\tvar err error\n\td.tval, err = LoadReader(d.r)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn d.unmarshal(v)\n}\n\n// SetTagName allows changing default tag \"toml\"\nfunc (d *Decoder) SetTagName(v string) *Decoder {\n\td.tagName = v\n\treturn d\n}\n\n// Strict allows changing to strict decoding. Any fields that are found in the\n// input data and do not have a corresponding struct member cause an error.\nfunc (d *Decoder) Strict(strict bool) *Decoder {\n\td.strict = strict\n\treturn d\n}\n\nfunc (d *Decoder) unmarshal(v interface{}) error {\n\tmtype := reflect.TypeOf(v)\n\tif mtype == nil {\n\t\treturn errors.New(\"nil cannot be unmarshaled from TOML\")\n\t}\n\tif mtype.Kind() != reflect.Ptr {\n\t\treturn errors.New(\"only a pointer to struct or map can be unmarshaled from TOML\")\n\t}\n\n\telem := mtype.Elem()\n\n\tswitch elem.Kind() {\n\tcase reflect.Struct, reflect.Map:\n\tcase reflect.Interface:\n\t\telem = mapStringInterfaceType\n\tdefault:\n\t\treturn errors.New(\"only a pointer to struct or map can be unmarshaled from TOML\")\n\t}\n\n\tif reflect.ValueOf(v).IsNil() {\n\t\treturn errors.New(\"nil pointer cannot be unmarshaled from TOML\")\n\t}\n\n\tvv := reflect.ValueOf(v).Elem()\n\n\tif d.strict {\n\t\td.visitor = newVisitorState(d.tval)\n\t}\n\n\tsval, err := d.valueFromTree(elem, d.tval, &vv)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif err := d.visitor.validate(); err != nil {\n\t\treturn err\n\t}\n\treflect.ValueOf(v).Elem().Set(sval)\n\treturn nil\n}\n\n// Convert toml tree to marshal struct or map, using marshal type. When mval1\n// is non-nil, merge fields into the given value instead of allocating a new one.\nfunc (d *Decoder) valueFromTree(mtype reflect.Type, tval *Tree, mval1 *reflect.Value) (reflect.Value, error) {\n\tif mtype.Kind() == reflect.Ptr {\n\t\treturn d.unwrapPointer(mtype, tval, mval1)\n\t}\n\n\t// Check if pointer to value implements the Unmarshaler interface.\n\tif mvalPtr := reflect.New(mtype); isCustomUnmarshaler(mvalPtr.Type()) {\n\t\td.visitor.visitAll()\n\n\t\tif tval == nil {\n\t\t\treturn mvalPtr.Elem(), nil\n\t\t}\n\n\t\tif err := callCustomUnmarshaler(mvalPtr, tval.ToMap()); err != nil {\n\t\t\treturn reflect.ValueOf(nil), fmt.Errorf(\"unmarshal toml: %v\", err)\n\t\t}\n\t\treturn mvalPtr.Elem(), nil\n\t}\n\n\tvar mval reflect.Value\n\tswitch mtype.Kind() {\n\tcase reflect.Struct:\n\t\tif mval1 != nil {\n\t\t\tmval = *mval1\n\t\t} else {\n\t\t\tmval = reflect.New(mtype).Elem()\n\t\t}\n\n\t\tswitch mval.Interface().(type) {\n\t\tcase Tree:\n\t\t\tmval.Set(reflect.ValueOf(tval).Elem())\n\t\tdefault:\n\t\t\tfor i := 0; i < mtype.NumField(); i++ {\n\t\t\t\tmtypef := mtype.Field(i)\n\t\t\t\tan := annotation{tag: d.tagName}\n\t\t\t\topts := tomlOptions(mtypef, an)\n\t\t\t\tif !opts.include {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tbaseKey := opts.name\n\t\t\t\tkeysToTry := []string{\n\t\t\t\t\tbaseKey,\n\t\t\t\t\tstrings.ToLower(baseKey),\n\t\t\t\t\tstrings.ToTitle(baseKey),\n\t\t\t\t\tstrings.ToLower(string(baseKey[0])) + baseKey[1:],\n\t\t\t\t}\n\n\t\t\t\tfound := false\n\t\t\t\tif tval != nil {\n\t\t\t\t\tfor _, key := range keysToTry {\n\t\t\t\t\t\texists := tval.HasPath([]string{key})\n\t\t\t\t\t\tif !exists {\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\td.visitor.push(key)\n\t\t\t\t\t\tval := tval.GetPath([]string{key})\n\t\t\t\t\t\tfval := mval.Field(i)\n\t\t\t\t\t\tmvalf, err := d.valueFromToml(mtypef.Type, val, &fval)\n\t\t\t\t\t\tif err != nil {\n\t\t\t\t\t\t\treturn mval, formatError(err, tval.GetPositionPath([]string{key}))\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmval.Field(i).Set(mvalf)\n\t\t\t\t\t\tfound = true\n\t\t\t\t\t\td.visitor.pop()\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif !found && opts.defaultValue != \"\" {\n\t\t\t\t\tmvalf := mval.Field(i)\n\t\t\t\t\tvar val interface{}\n\t\t\t\t\tvar err error\n\t\t\t\t\tswitch mvalf.Kind() {\n\t\t\t\t\tcase reflect.String:\n\t\t\t\t\t\tval = opts.defaultValue\n\t\t\t\t\tcase reflect.Bool:\n\t\t\t\t\t\tval, err = strconv.ParseBool(opts.defaultValue)\n\t\t\t\t\tcase reflect.Uint:\n\t\t\t\t\t\tval, err = strconv.ParseUint(opts.defaultValue, 10, 0)\n\t\t\t\t\tcase reflect.Uint8:\n\t\t\t\t\t\tval, err = strconv.ParseUint(opts.defaultValue, 10, 8)\n\t\t\t\t\tcase reflect.Uint16:\n\t\t\t\t\t\tval, err = strconv.ParseUint(opts.defaultValue, 10, 16)\n\t\t\t\t\tcase reflect.Uint32:\n\t\t\t\t\t\tval, err = strconv.ParseUint(opts.defaultValue, 10, 32)\n\t\t\t\t\tcase reflect.Uint64:\n\t\t\t\t\t\tval, err = strconv.ParseUint(opts.defaultValue, 10, 64)\n\t\t\t\t\tcase reflect.Int:\n\t\t\t\t\t\tval, err = strconv.ParseInt(opts.defaultValue, 10, 0)\n\t\t\t\t\tcase reflect.Int8:\n\t\t\t\t\t\tval, err = strconv.ParseInt(opts.defaultValue, 10, 8)\n\t\t\t\t\tcase reflect.Int16:\n\t\t\t\t\t\tval, err = strconv.ParseInt(opts.defaultValue, 10, 16)\n\t\t\t\t\tcase reflect.Int32:\n\t\t\t\t\t\tval, err = strconv.ParseInt(opts.defaultValue, 10, 32)\n\t\t\t\t\tcase reflect.Int64:\n\t\t\t\t\t\t// Check if the provided number has a non-numeric extension.\n\t\t\t\t\t\tvar hasExtension bool\n\t\t\t\t\t\tif len(opts.defaultValue) > 0 {\n\t\t\t\t\t\t\tlastChar := opts.defaultValue[len(opts.defaultValue)-1]\n\t\t\t\t\t\t\tif lastChar < '0' || lastChar > '9' {\n\t\t\t\t\t\t\t\thasExtension = true\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// If the value is a time.Duration with extension, parse as duration.\n\t\t\t\t\t\t// If the value is an int64 or a time.Duration without extension, parse as number.\n\t\t\t\t\t\tif hasExtension && mvalf.Type().String() == \"time.Duration\" {\n\t\t\t\t\t\t\tval, err = time.ParseDuration(opts.defaultValue)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tval, err = strconv.ParseInt(opts.defaultValue, 10, 64)\n\t\t\t\t\t\t}\n\t\t\t\t\tcase reflect.Float32:\n\t\t\t\t\t\tval, err = strconv.ParseFloat(opts.defaultValue, 32)\n\t\t\t\t\tcase reflect.Float64:\n\t\t\t\t\t\tval, err = strconv.ParseFloat(opts.defaultValue, 64)\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn mvalf, fmt.Errorf(\"unsupported field type for default option\")\n\t\t\t\t\t}\n\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn mvalf, err\n\t\t\t\t\t}\n\t\t\t\t\tmvalf.Set(reflect.ValueOf(val).Convert(mvalf.Type()))\n\t\t\t\t}\n\n\t\t\t\t// save the old behavior above and try to check structs\n\t\t\t\tif !found && opts.defaultValue == \"\" && mtypef.Type.Kind() == reflect.Struct {\n\t\t\t\t\ttmpTval := tval\n\t\t\t\t\tif !mtypef.Anonymous {\n\t\t\t\t\t\ttmpTval = nil\n\t\t\t\t\t}\n\t\t\t\t\tfval := mval.Field(i)\n\t\t\t\t\tv, err := d.valueFromTree(mtypef.Type, tmpTval, &fval)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn v, err\n\t\t\t\t\t}\n\t\t\t\t\tmval.Field(i).Set(v)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\tcase reflect.Map:\n\t\tmval = reflect.MakeMap(mtype)\n\t\tfor _, key := range tval.Keys() {\n\t\t\td.visitor.push(key)\n\t\t\t// TODO: path splits key\n\t\t\tval := tval.GetPath([]string{key})\n\t\t\tmvalf, err := d.valueFromToml(mtype.Elem(), val, nil)\n\t\t\tif err != nil {\n\t\t\t\treturn mval, formatError(err, tval.GetPositionPath([]string{key}))\n\t\t\t}\n\t\t\tmval.SetMapIndex(reflect.ValueOf(key).Convert(mtype.Key()), mvalf)\n\t\t\td.visitor.pop()\n\t\t}\n\t}\n\treturn mval, nil\n}\n\n// Convert toml value to marshal struct/map slice, using marshal type\nfunc (d *Decoder) valueFromTreeSlice(mtype reflect.Type, tval []*Tree) (reflect.Value, error) {\n\tmval, err := makeSliceOrArray(mtype, len(tval))\n\tif err != nil {\n\t\treturn mval, err\n\t}\n\n\tfor i := 0; i < len(tval); i++ {\n\t\td.visitor.push(strconv.Itoa(i))\n\t\tval, err := d.valueFromTree(mtype.Elem(), tval[i], nil)\n\t\tif err != nil {\n\t\t\treturn mval, err\n\t\t}\n\t\tmval.Index(i).Set(val)\n\t\td.visitor.pop()\n\t}\n\treturn mval, nil\n}\n\n// Convert toml value to marshal primitive slice, using marshal type\nfunc (d *Decoder) valueFromOtherSlice(mtype reflect.Type, tval []interface{}) (reflect.Value, error) {\n\tmval, err := makeSliceOrArray(mtype, len(tval))\n\tif err != nil {\n\t\treturn mval, err\n\t}\n\n\tfor i := 0; i < len(tval); i++ {\n\t\tval, err := d.valueFromToml(mtype.Elem(), tval[i], nil)\n\t\tif err != nil {\n\t\t\treturn mval, err\n\t\t}\n\t\tmval.Index(i).Set(val)\n\t}\n\treturn mval, nil\n}\n\n// Convert toml value to marshal primitive slice, using marshal type\nfunc (d *Decoder) valueFromOtherSliceI(mtype reflect.Type, tval interface{}) (reflect.Value, error) {\n\tval := reflect.ValueOf(tval)\n\tlength := val.Len()\n\n\tmval, err := makeSliceOrArray(mtype, length)\n\tif err != nil {\n\t\treturn mval, err\n\t}\n\n\tfor i := 0; i < length; i++ {\n\t\tval, err := d.valueFromToml(mtype.Elem(), val.Index(i).Interface(), nil)\n\t\tif err != nil {\n\t\t\treturn mval, err\n\t\t}\n\t\tmval.Index(i).Set(val)\n\t}\n\treturn mval, nil\n}\n\n// Create a new slice or a new array with specified length\nfunc makeSliceOrArray(mtype reflect.Type, tLength int) (reflect.Value, error) {\n\tvar mval reflect.Value\n\tswitch mtype.Kind() {\n\tcase reflect.Slice:\n\t\tmval = reflect.MakeSlice(mtype, tLength, tLength)\n\tcase reflect.Array:\n\t\tmval = reflect.New(reflect.ArrayOf(mtype.Len(), mtype.Elem())).Elem()\n\t\tif tLength > mtype.Len() {\n\t\t\treturn mval, fmt.Errorf(\"unmarshal: TOML array length (%v) exceeds destination array length (%v)\", tLength, mtype.Len())\n\t\t}\n\t}\n\treturn mval, nil\n}\n\n// Convert toml value to marshal value, using marshal type. When mval1 is non-nil\n// and the given type is a struct value, merge fields into it.\nfunc (d *Decoder) valueFromToml(mtype reflect.Type, tval interface{}, mval1 *reflect.Value) (reflect.Value, error) {\n\tif mtype.Kind() == reflect.Ptr {\n\t\treturn d.unwrapPointer(mtype, tval, mval1)\n\t}\n\n\tswitch t := tval.(type) {\n\tcase *Tree:\n\t\tvar mval11 *reflect.Value\n\t\tif mtype.Kind() == reflect.Struct {\n\t\t\tmval11 = mval1\n\t\t}\n\n\t\tif isTree(mtype) {\n\t\t\treturn d.valueFromTree(mtype, t, mval11)\n\t\t}\n\n\t\tif mtype.Kind() == reflect.Interface {\n\t\t\tif mval1 == nil || mval1.IsNil() {\n\t\t\t\treturn d.valueFromTree(reflect.TypeOf(map[string]interface{}{}), t, nil)\n\t\t\t} else {\n\t\t\t\treturn d.valueFromToml(mval1.Elem().Type(), t, nil)\n\t\t\t}\n\t\t}\n\n\t\treturn reflect.ValueOf(nil), fmt.Errorf(\"Can't convert %v(%T) to a tree\", tval, tval)\n\tcase []*Tree:\n\t\tif isTreeSequence(mtype) {\n\t\t\treturn d.valueFromTreeSlice(mtype, t)\n\t\t}\n\t\tif mtype.Kind() == reflect.Interface {\n\t\t\tif mval1 == nil || mval1.IsNil() {\n\t\t\t\treturn d.valueFromTreeSlice(reflect.TypeOf([]map[string]interface{}{}), t)\n\t\t\t} else {\n\t\t\t\tival := mval1.Elem()\n\t\t\t\treturn d.valueFromToml(mval1.Elem().Type(), t, &ival)\n\t\t\t}\n\t\t}\n\t\treturn reflect.ValueOf(nil), fmt.Errorf(\"Can't convert %v(%T) to trees\", tval, tval)\n\tcase []interface{}:\n\t\td.visitor.visit()\n\t\tif isOtherSequence(mtype) {\n\t\t\treturn d.valueFromOtherSlice(mtype, t)\n\t\t}\n\t\tif mtype.Kind() == reflect.Interface {\n\t\t\tif mval1 == nil || mval1.IsNil() {\n\t\t\t\treturn d.valueFromOtherSlice(reflect.TypeOf([]interface{}{}), t)\n\t\t\t} else {\n\t\t\t\tival := mval1.Elem()\n\t\t\t\treturn d.valueFromToml(mval1.Elem().Type(), t, &ival)\n\t\t\t}\n\t\t}\n\t\treturn reflect.ValueOf(nil), fmt.Errorf(\"Can't convert %v(%T) to a slice\", tval, tval)\n\tdefault:\n\t\td.visitor.visit()\n\t\tmvalPtr := reflect.New(mtype)\n\n\t\t// Check if pointer to value implements the Unmarshaler interface.\n\t\tif isCustomUnmarshaler(mvalPtr.Type()) {\n\t\t\tif err := callCustomUnmarshaler(mvalPtr, tval); err != nil {\n\t\t\t\treturn reflect.ValueOf(nil), fmt.Errorf(\"unmarshal toml: %v\", err)\n\t\t\t}\n\t\t\treturn mvalPtr.Elem(), nil\n\t\t}\n\n\t\t// Check if pointer to value implements the encoding.TextUnmarshaler.\n\t\tif isTextUnmarshaler(mvalPtr.Type()) && !isTimeType(mtype) {\n\t\t\tif err := d.unmarshalText(tval, mvalPtr); err != nil {\n\t\t\t\treturn reflect.ValueOf(nil), fmt.Errorf(\"unmarshal text: %v\", err)\n\t\t\t}\n\t\t\treturn mvalPtr.Elem(), nil\n\t\t}\n\n\t\tswitch mtype.Kind() {\n\t\tcase reflect.Bool, reflect.Struct:\n\t\t\tval := reflect.ValueOf(tval)\n\n\t\t\tswitch val.Type() {\n\t\t\tcase localDateType:\n\t\t\t\tlocalDate := val.Interface().(LocalDate)\n\t\t\t\tswitch mtype {\n\t\t\t\tcase timeType:\n\t\t\t\t\treturn reflect.ValueOf(time.Date(localDate.Year, localDate.Month, localDate.Day, 0, 0, 0, 0, time.Local)), nil\n\t\t\t\t}\n\t\t\tcase localDateTimeType:\n\t\t\t\tlocalDateTime := val.Interface().(LocalDateTime)\n\t\t\t\tswitch mtype {\n\t\t\t\tcase timeType:\n\t\t\t\t\treturn reflect.ValueOf(time.Date(\n\t\t\t\t\t\tlocalDateTime.Date.Year,\n\t\t\t\t\t\tlocalDateTime.Date.Month,\n\t\t\t\t\t\tlocalDateTime.Date.Day,\n\t\t\t\t\t\tlocalDateTime.Time.Hour,\n\t\t\t\t\t\tlocalDateTime.Time.Minute,\n\t\t\t\t\t\tlocalDateTime.Time.Second,\n\t\t\t\t\t\tlocalDateTime.Time.Nanosecond,\n\t\t\t\t\t\ttime.Local)), nil\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// if this passes for when mtype is reflect.Struct, tval is a time.LocalTime\n\t\t\tif !val.Type().ConvertibleTo(mtype) {\n\t\t\t\treturn reflect.ValueOf(nil), fmt.Errorf(\"Can't convert %v(%T) to %v\", tval, tval, mtype.String())\n\t\t\t}\n\n\t\t\treturn val.Convert(mtype), nil\n\t\tcase reflect.String:\n\t\t\tval := reflect.ValueOf(tval)\n\t\t\t// stupidly, int64 is convertible to string. So special case this.\n\t\t\tif !val.Type().ConvertibleTo(mtype) || val.Kind() == reflect.Int64 {\n\t\t\t\treturn reflect.ValueOf(nil), fmt.Errorf(\"Can't convert %v(%T) to %v\", tval, tval, mtype.String())\n\t\t\t}\n\n\t\t\treturn val.Convert(mtype), nil\n\t\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\t\tval := reflect.ValueOf(tval)\n\t\t\tif mtype.Kind() == reflect.Int64 && mtype == reflect.TypeOf(time.Duration(1)) && val.Kind() == reflect.String {\n\t\t\t\td, err := time.ParseDuration(val.String())\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn reflect.ValueOf(nil), fmt.Errorf(\"Can't convert %v(%T) to %v. %s\", tval, tval, mtype.String(), err)\n\t\t\t\t}\n\t\t\t\treturn reflect.ValueOf(d), nil\n\t\t\t}\n\t\t\tif !val.Type().ConvertibleTo(mtype) || val.Kind() == reflect.Float64 {\n\t\t\t\treturn reflect.ValueOf(nil), fmt.Errorf(\"Can't convert %v(%T) to %v\", tval, tval, mtype.String())\n\t\t\t}\n\t\t\tif reflect.Indirect(reflect.New(mtype)).OverflowInt(val.Convert(reflect.TypeOf(int64(0))).Int()) {\n\t\t\t\treturn reflect.ValueOf(nil), fmt.Errorf(\"%v(%T) would overflow %v\", tval, tval, mtype.String())\n\t\t\t}\n\n\t\t\treturn val.Convert(mtype), nil\n\t\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\t\tval := reflect.ValueOf(tval)\n\t\t\tif !val.Type().ConvertibleTo(mtype) || val.Kind() == reflect.Float64 {\n\t\t\t\treturn reflect.ValueOf(nil), fmt.Errorf(\"Can't convert %v(%T) to %v\", tval, tval, mtype.String())\n\t\t\t}\n\n\t\t\tif val.Type().Kind() != reflect.Uint64 && val.Convert(reflect.TypeOf(int(1))).Int() < 0 {\n\t\t\t\treturn reflect.ValueOf(nil), fmt.Errorf(\"%v(%T) is negative so does not fit in %v\", tval, tval, mtype.String())\n\t\t\t}\n\t\t\tif reflect.Indirect(reflect.New(mtype)).OverflowUint(val.Convert(reflect.TypeOf(uint64(0))).Uint()) {\n\t\t\t\treturn reflect.ValueOf(nil), fmt.Errorf(\"%v(%T) would overflow %v\", tval, tval, mtype.String())\n\t\t\t}\n\n\t\t\treturn val.Convert(mtype), nil\n\t\tcase reflect.Float32, reflect.Float64:\n\t\t\tval := reflect.ValueOf(tval)\n\t\t\tif !val.Type().ConvertibleTo(mtype) || val.Kind() == reflect.Int64 {\n\t\t\t\treturn reflect.ValueOf(nil), fmt.Errorf(\"Can't convert %v(%T) to %v\", tval, tval, mtype.String())\n\t\t\t}\n\t\t\tif reflect.Indirect(reflect.New(mtype)).OverflowFloat(val.Convert(reflect.TypeOf(float64(0))).Float()) {\n\t\t\t\treturn reflect.ValueOf(nil), fmt.Errorf(\"%v(%T) would overflow %v\", tval, tval, mtype.String())\n\t\t\t}\n\n\t\t\treturn val.Convert(mtype), nil\n\t\tcase reflect.Interface:\n\t\t\tif mval1 == nil || mval1.IsNil() {\n\t\t\t\treturn reflect.ValueOf(tval), nil\n\t\t\t} else {\n\t\t\t\tival := mval1.Elem()\n\t\t\t\treturn d.valueFromToml(mval1.Elem().Type(), t, &ival)\n\t\t\t}\n\t\tcase reflect.Slice, reflect.Array:\n\t\t\tif isOtherSequence(mtype) && isOtherSequence(reflect.TypeOf(t)) {\n\t\t\t\treturn d.valueFromOtherSliceI(mtype, t)\n\t\t\t}\n\t\t\treturn reflect.ValueOf(nil), fmt.Errorf(\"Can't convert %v(%T) to %v(%v)\", tval, tval, mtype, mtype.Kind())\n\t\tdefault:\n\t\t\treturn reflect.ValueOf(nil), fmt.Errorf(\"Can't convert %v(%T) to %v(%v)\", tval, tval, mtype, mtype.Kind())\n\t\t}\n\t}\n}\n\nfunc (d *Decoder) unwrapPointer(mtype reflect.Type, tval interface{}, mval1 *reflect.Value) (reflect.Value, error) {\n\tvar melem *reflect.Value\n\n\tif mval1 != nil && !mval1.IsNil() && (mtype.Elem().Kind() == reflect.Struct || mtype.Elem().Kind() == reflect.Interface) {\n\t\telem := mval1.Elem()\n\t\tmelem = &elem\n\t}\n\n\tval, err := d.valueFromToml(mtype.Elem(), tval, melem)\n\tif err != nil {\n\t\treturn reflect.ValueOf(nil), err\n\t}\n\tmval := reflect.New(mtype.Elem())\n\tmval.Elem().Set(val)\n\treturn mval, nil\n}\n\nfunc (d *Decoder) unmarshalText(tval interface{}, mval reflect.Value) error {\n\tvar buf bytes.Buffer\n\tfmt.Fprint(&buf, tval)\n\treturn callTextUnmarshaler(mval, buf.Bytes())\n}\n\nfunc tomlOptions(vf reflect.StructField, an annotation) tomlOpts {\n\ttag := vf.Tag.Get(an.tag)\n\tparse := strings.Split(tag, \",\")\n\tvar comment string\n\tif c := vf.Tag.Get(an.comment); c != \"\" {\n\t\tcomment = c\n\t}\n\tcommented, _ := strconv.ParseBool(vf.Tag.Get(an.commented))\n\tmultiline, _ := strconv.ParseBool(vf.Tag.Get(an.multiline))\n\tliteral, _ := strconv.ParseBool(vf.Tag.Get(an.literal))\n\tdefaultValue := vf.Tag.Get(tagDefault)\n\tresult := tomlOpts{\n\t\tname:         vf.Name,\n\t\tnameFromTag:  false,\n\t\tcomment:      comment,\n\t\tcommented:    commented,\n\t\tmultiline:    multiline,\n\t\tliteral:      literal,\n\t\tinclude:      true,\n\t\tomitempty:    false,\n\t\tdefaultValue: defaultValue,\n\t}\n\tif parse[0] != \"\" {\n\t\tif parse[0] == \"-\" && len(parse) == 1 {\n\t\t\tresult.include = false\n\t\t} else {\n\t\t\tresult.name = strings.Trim(parse[0], \" \")\n\t\t\tresult.nameFromTag = true\n\t\t}\n\t}\n\tif vf.PkgPath != \"\" {\n\t\tresult.include = false\n\t}\n\tif len(parse) > 1 && strings.Trim(parse[1], \" \") == \"omitempty\" {\n\t\tresult.omitempty = true\n\t}\n\tif vf.Type.Kind() == reflect.Ptr {\n\t\tresult.omitempty = true\n\t}\n\treturn result\n}\n\nfunc isZero(val reflect.Value) bool {\n\tswitch val.Type().Kind() {\n\tcase reflect.Slice, reflect.Array, reflect.Map:\n\t\treturn val.Len() == 0\n\tdefault:\n\t\treturn reflect.DeepEqual(val.Interface(), reflect.Zero(val.Type()).Interface())\n\t}\n}\n\nfunc formatError(err error, pos Position) error {\n\tif err.Error()[0] == '(' { // Error already contains position information\n\t\treturn err\n\t}\n\treturn fmt.Errorf(\"%s: %s\", pos, err)\n}\n\n// visitorState keeps track of which keys were unmarshaled.\ntype visitorState struct {\n\ttree   *Tree\n\tpath   []string\n\tkeys   map[string]struct{}\n\tactive bool\n}\n\nfunc newVisitorState(tree *Tree) visitorState {\n\tpath, result := []string{}, map[string]struct{}{}\n\tinsertKeys(path, result, tree)\n\treturn visitorState{\n\t\ttree:   tree,\n\t\tpath:   path[:0],\n\t\tkeys:   result,\n\t\tactive: true,\n\t}\n}\n\nfunc (s *visitorState) push(key string) {\n\tif s.active {\n\t\ts.path = append(s.path, key)\n\t}\n}\n\nfunc (s *visitorState) pop() {\n\tif s.active {\n\t\ts.path = s.path[:len(s.path)-1]\n\t}\n}\n\nfunc (s *visitorState) visit() {\n\tif s.active {\n\t\tdelete(s.keys, strings.Join(s.path, \".\"))\n\t}\n}\n\nfunc (s *visitorState) visitAll() {\n\tif s.active {\n\t\tfor k := range s.keys {\n\t\t\tif strings.HasPrefix(k, strings.Join(s.path, \".\")) {\n\t\t\t\tdelete(s.keys, k)\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc (s *visitorState) validate() error {\n\tif !s.active {\n\t\treturn nil\n\t}\n\tundecoded := make([]string, 0, len(s.keys))\n\tfor key := range s.keys {\n\t\tundecoded = append(undecoded, key)\n\t}\n\tsort.Strings(undecoded)\n\tif len(undecoded) > 0 {\n\t\treturn fmt.Errorf(\"undecoded keys: %q\", undecoded)\n\t}\n\treturn nil\n}\n\nfunc insertKeys(path []string, m map[string]struct{}, tree *Tree) {\n\tfor k, v := range tree.values {\n\t\tswitch node := v.(type) {\n\t\tcase []*Tree:\n\t\t\tfor i, item := range node {\n\t\t\t\tinsertKeys(append(path, k, strconv.Itoa(i)), m, item)\n\t\t\t}\n\t\tcase *Tree:\n\t\t\tinsertKeys(append(path, k), m, node)\n\t\tcase *tomlValue:\n\t\t\tm[strings.Join(append(path, k), \".\")] = struct{}{}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/github.com/pelletier/go-toml/marshal_OrderPreserve_test.toml",
    "content": "title = \"TOML Marshal Testing\"\n\n[basic_lists]\n  floats = [12.3,45.6,78.9]\n  bools = [true,false,true]\n  dates = [1979-05-27T07:32:00Z,1980-05-27T07:32:00Z]\n  ints = [8001,8001,8002]\n  uints = [5002,5003]\n  strings = [\"One\",\"Two\",\"Three\"]\n\n[[subdocptrs]]\n  name = \"Second\"\n\n[basic_map]\n  one = \"one\"\n  two = \"two\"\n\n[subdoc]\n\n  [subdoc.second]\n    name = \"Second\"\n\n  [subdoc.first]\n    name = \"First\"\n\n[basic]\n  uint = 5001\n  bool = true\n  float = 123.4\n  float64 = 123.456782132399\n  int = 5000\n  string = \"Bite me\"\n  date = 1979-05-27T07:32:00Z\n\n[[subdoclist]]\n  name = \"List.First\"\n\n[[subdoclist]]\n  name = \"List.Second\"\n"
  },
  {
    "path": "tests/vendor/github.com/pelletier/go-toml/marshal_test.toml",
    "content": "title = \"TOML Marshal Testing\"\n\n[basic]\n  bool = true\n  date = 1979-05-27T07:32:00Z\n  float = 123.4\n  float64 = 123.456782132399\n  int = 5000\n  string = \"Bite me\"\n  uint = 5001\n\n[basic_lists]\n  bools = [true,false,true]\n  dates = [1979-05-27T07:32:00Z,1980-05-27T07:32:00Z]\n  floats = [12.3,45.6,78.9]\n  ints = [8001,8001,8002]\n  strings = [\"One\",\"Two\",\"Three\"]\n  uints = [5002,5003]\n\n[basic_map]\n  one = \"one\"\n  two = \"two\"\n\n[subdoc]\n\n  [subdoc.first]\n    name = \"First\"\n\n  [subdoc.second]\n    name = \"Second\"\n\n[[subdoclist]]\n  name = \"List.First\"\n\n[[subdoclist]]\n  name = \"List.Second\"\n\n[[subdocptrs]]\n  name = \"Second\"\n"
  },
  {
    "path": "tests/vendor/github.com/pelletier/go-toml/parser.go",
    "content": "// TOML Parser.\n\npackage toml\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"math\"\n\t\"reflect\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n)\n\ntype tomlParser struct {\n\tflowIdx       int\n\tflow          []token\n\ttree          *Tree\n\tcurrentTable  []string\n\tseenTableKeys []string\n}\n\ntype tomlParserStateFn func() tomlParserStateFn\n\n// Formats and panics an error message based on a token\nfunc (p *tomlParser) raiseError(tok *token, msg string, args ...interface{}) {\n\tpanic(tok.Position.String() + \": \" + fmt.Sprintf(msg, args...))\n}\n\nfunc (p *tomlParser) run() {\n\tfor state := p.parseStart; state != nil; {\n\t\tstate = state()\n\t}\n}\n\nfunc (p *tomlParser) peek() *token {\n\tif p.flowIdx >= len(p.flow) {\n\t\treturn nil\n\t}\n\treturn &p.flow[p.flowIdx]\n}\n\nfunc (p *tomlParser) assume(typ tokenType) {\n\ttok := p.getToken()\n\tif tok == nil {\n\t\tp.raiseError(tok, \"was expecting token %s, but token stream is empty\", tok)\n\t}\n\tif tok.typ != typ {\n\t\tp.raiseError(tok, \"was expecting token %s, but got %s instead\", typ, tok)\n\t}\n}\n\nfunc (p *tomlParser) getToken() *token {\n\ttok := p.peek()\n\tif tok == nil {\n\t\treturn nil\n\t}\n\tp.flowIdx++\n\treturn tok\n}\n\nfunc (p *tomlParser) parseStart() tomlParserStateFn {\n\ttok := p.peek()\n\n\t// end of stream, parsing is finished\n\tif tok == nil {\n\t\treturn nil\n\t}\n\n\tswitch tok.typ {\n\tcase tokenDoubleLeftBracket:\n\t\treturn p.parseGroupArray\n\tcase tokenLeftBracket:\n\t\treturn p.parseGroup\n\tcase tokenKey:\n\t\treturn p.parseAssign\n\tcase tokenEOF:\n\t\treturn nil\n\tcase tokenError:\n\t\tp.raiseError(tok, \"parsing error: %s\", tok.String())\n\tdefault:\n\t\tp.raiseError(tok, \"unexpected token %s\", tok.typ)\n\t}\n\treturn nil\n}\n\nfunc (p *tomlParser) parseGroupArray() tomlParserStateFn {\n\tstartToken := p.getToken() // discard the [[\n\tkey := p.getToken()\n\tif key.typ != tokenKeyGroupArray {\n\t\tp.raiseError(key, \"unexpected token %s, was expecting a table array key\", key)\n\t}\n\n\t// get or create table array element at the indicated part in the path\n\tkeys, err := parseKey(key.val)\n\tif err != nil {\n\t\tp.raiseError(key, \"invalid table array key: %s\", err)\n\t}\n\tp.tree.createSubTree(keys[:len(keys)-1], startToken.Position) // create parent entries\n\tdestTree := p.tree.GetPath(keys)\n\tvar array []*Tree\n\tif destTree == nil {\n\t\tarray = make([]*Tree, 0)\n\t} else if target, ok := destTree.([]*Tree); ok && target != nil {\n\t\tarray = destTree.([]*Tree)\n\t} else {\n\t\tp.raiseError(key, \"key %s is already assigned and not of type table array\", key)\n\t}\n\tp.currentTable = keys\n\n\t// add a new tree to the end of the table array\n\tnewTree := newTree()\n\tnewTree.position = startToken.Position\n\tarray = append(array, newTree)\n\tp.tree.SetPath(p.currentTable, array)\n\n\t// remove all keys that were children of this table array\n\tprefix := key.val + \".\"\n\tfound := false\n\tfor ii := 0; ii < len(p.seenTableKeys); {\n\t\ttableKey := p.seenTableKeys[ii]\n\t\tif strings.HasPrefix(tableKey, prefix) {\n\t\t\tp.seenTableKeys = append(p.seenTableKeys[:ii], p.seenTableKeys[ii+1:]...)\n\t\t} else {\n\t\t\tfound = (tableKey == key.val)\n\t\t\tii++\n\t\t}\n\t}\n\n\t// keep this key name from use by other kinds of assignments\n\tif !found {\n\t\tp.seenTableKeys = append(p.seenTableKeys, key.val)\n\t}\n\n\t// move to next parser state\n\tp.assume(tokenDoubleRightBracket)\n\treturn p.parseStart\n}\n\nfunc (p *tomlParser) parseGroup() tomlParserStateFn {\n\tstartToken := p.getToken() // discard the [\n\tkey := p.getToken()\n\tif key.typ != tokenKeyGroup {\n\t\tp.raiseError(key, \"unexpected token %s, was expecting a table key\", key)\n\t}\n\tfor _, item := range p.seenTableKeys {\n\t\tif item == key.val {\n\t\t\tp.raiseError(key, \"duplicated tables\")\n\t\t}\n\t}\n\n\tp.seenTableKeys = append(p.seenTableKeys, key.val)\n\tkeys, err := parseKey(key.val)\n\tif err != nil {\n\t\tp.raiseError(key, \"invalid table array key: %s\", err)\n\t}\n\tif err := p.tree.createSubTree(keys, startToken.Position); err != nil {\n\t\tp.raiseError(key, \"%s\", err)\n\t}\n\tdestTree := p.tree.GetPath(keys)\n\tif target, ok := destTree.(*Tree); ok && target != nil && target.inline {\n\t\tp.raiseError(key, \"could not re-define exist inline table or its sub-table : %s\",\n\t\t\tstrings.Join(keys, \".\"))\n\t}\n\tp.assume(tokenRightBracket)\n\tp.currentTable = keys\n\treturn p.parseStart\n}\n\nfunc (p *tomlParser) parseAssign() tomlParserStateFn {\n\tkey := p.getToken()\n\tp.assume(tokenEqual)\n\n\tparsedKey, err := parseKey(key.val)\n\tif err != nil {\n\t\tp.raiseError(key, \"invalid key: %s\", err.Error())\n\t}\n\n\tvalue := p.parseRvalue()\n\tvar tableKey []string\n\tif len(p.currentTable) > 0 {\n\t\ttableKey = p.currentTable\n\t} else {\n\t\ttableKey = []string{}\n\t}\n\n\tprefixKey := parsedKey[0 : len(parsedKey)-1]\n\ttableKey = append(tableKey, prefixKey...)\n\n\t// find the table to assign, looking out for arrays of tables\n\tvar targetNode *Tree\n\tswitch node := p.tree.GetPath(tableKey).(type) {\n\tcase []*Tree:\n\t\ttargetNode = node[len(node)-1]\n\tcase *Tree:\n\t\ttargetNode = node\n\tcase nil:\n\t\t// create intermediate\n\t\tif err := p.tree.createSubTree(tableKey, key.Position); err != nil {\n\t\t\tp.raiseError(key, \"could not create intermediate group: %s\", err)\n\t\t}\n\t\ttargetNode = p.tree.GetPath(tableKey).(*Tree)\n\tdefault:\n\t\tp.raiseError(key, \"Unknown table type for path: %s\",\n\t\t\tstrings.Join(tableKey, \".\"))\n\t}\n\n\tif targetNode.inline {\n\t\tp.raiseError(key, \"could not add key or sub-table to exist inline table or its sub-table : %s\",\n\t\t\tstrings.Join(tableKey, \".\"))\n\t}\n\n\t// assign value to the found table\n\tkeyVal := parsedKey[len(parsedKey)-1]\n\tlocalKey := []string{keyVal}\n\tfinalKey := append(tableKey, keyVal)\n\tif targetNode.GetPath(localKey) != nil {\n\t\tp.raiseError(key, \"The following key was defined twice: %s\",\n\t\t\tstrings.Join(finalKey, \".\"))\n\t}\n\tvar toInsert interface{}\n\n\tswitch value.(type) {\n\tcase *Tree, []*Tree:\n\t\ttoInsert = value\n\tdefault:\n\t\ttoInsert = &tomlValue{value: value, position: key.Position}\n\t}\n\ttargetNode.values[keyVal] = toInsert\n\treturn p.parseStart\n}\n\nvar errInvalidUnderscore = errors.New(\"invalid use of _ in number\")\n\nfunc numberContainsInvalidUnderscore(value string) error {\n\t// For large numbers, you may use underscores between digits to enhance\n\t// readability. Each underscore must be surrounded by at least one digit on\n\t// each side.\n\n\thasBefore := false\n\tfor idx, r := range value {\n\t\tif r == '_' {\n\t\t\tif !hasBefore || idx+1 >= len(value) {\n\t\t\t\t// can't end with an underscore\n\t\t\t\treturn errInvalidUnderscore\n\t\t\t}\n\t\t}\n\t\thasBefore = isDigit(r)\n\t}\n\treturn nil\n}\n\nvar errInvalidUnderscoreHex = errors.New(\"invalid use of _ in hex number\")\n\nfunc hexNumberContainsInvalidUnderscore(value string) error {\n\thasBefore := false\n\tfor idx, r := range value {\n\t\tif r == '_' {\n\t\t\tif !hasBefore || idx+1 >= len(value) {\n\t\t\t\t// can't end with an underscore\n\t\t\t\treturn errInvalidUnderscoreHex\n\t\t\t}\n\t\t}\n\t\thasBefore = isHexDigit(r)\n\t}\n\treturn nil\n}\n\nfunc cleanupNumberToken(value string) string {\n\tcleanedVal := strings.Replace(value, \"_\", \"\", -1)\n\treturn cleanedVal\n}\n\nfunc (p *tomlParser) parseRvalue() interface{} {\n\ttok := p.getToken()\n\tif tok == nil || tok.typ == tokenEOF {\n\t\tp.raiseError(tok, \"expecting a value\")\n\t}\n\n\tswitch tok.typ {\n\tcase tokenString:\n\t\treturn tok.val\n\tcase tokenTrue:\n\t\treturn true\n\tcase tokenFalse:\n\t\treturn false\n\tcase tokenInf:\n\t\tif tok.val[0] == '-' {\n\t\t\treturn math.Inf(-1)\n\t\t}\n\t\treturn math.Inf(1)\n\tcase tokenNan:\n\t\treturn math.NaN()\n\tcase tokenInteger:\n\t\tcleanedVal := cleanupNumberToken(tok.val)\n\t\tbase := 10\n\t\ts := cleanedVal\n\t\tcheckInvalidUnderscore := numberContainsInvalidUnderscore\n\t\tif len(cleanedVal) >= 3 && cleanedVal[0] == '0' {\n\t\t\tswitch cleanedVal[1] {\n\t\t\tcase 'x':\n\t\t\t\tcheckInvalidUnderscore = hexNumberContainsInvalidUnderscore\n\t\t\t\tbase = 16\n\t\t\tcase 'o':\n\t\t\t\tbase = 8\n\t\t\tcase 'b':\n\t\t\t\tbase = 2\n\t\t\tdefault:\n\t\t\t\tpanic(\"invalid base\") // the lexer should catch this first\n\t\t\t}\n\t\t\ts = cleanedVal[2:]\n\t\t}\n\n\t\terr := checkInvalidUnderscore(tok.val)\n\t\tif err != nil {\n\t\t\tp.raiseError(tok, \"%s\", err)\n\t\t}\n\n\t\tvar val interface{}\n\t\tval, err = strconv.ParseInt(s, base, 64)\n\t\tif err == nil {\n\t\t\treturn val\n\t\t}\n\n\t\tif s[0] != '-' {\n\t\t\tif val, err = strconv.ParseUint(s, base, 64); err == nil {\n\t\t\t\treturn val\n\t\t\t}\n\t\t}\n\t\tp.raiseError(tok, \"%s\", err)\n\tcase tokenFloat:\n\t\terr := numberContainsInvalidUnderscore(tok.val)\n\t\tif err != nil {\n\t\t\tp.raiseError(tok, \"%s\", err)\n\t\t}\n\t\tcleanedVal := cleanupNumberToken(tok.val)\n\t\tval, err := strconv.ParseFloat(cleanedVal, 64)\n\t\tif err != nil {\n\t\t\tp.raiseError(tok, \"%s\", err)\n\t\t}\n\t\treturn val\n\tcase tokenLocalTime:\n\t\tval, err := ParseLocalTime(tok.val)\n\t\tif err != nil {\n\t\t\tp.raiseError(tok, \"%s\", err)\n\t\t}\n\t\treturn val\n\tcase tokenLocalDate:\n\t\t// a local date may be followed by:\n\t\t// * nothing: this is a local date\n\t\t// * a local time: this is a local date-time\n\n\t\tnext := p.peek()\n\t\tif next == nil || next.typ != tokenLocalTime {\n\t\t\tval, err := ParseLocalDate(tok.val)\n\t\t\tif err != nil {\n\t\t\t\tp.raiseError(tok, \"%s\", err)\n\t\t\t}\n\t\t\treturn val\n\t\t}\n\n\t\tlocalDate := tok\n\t\tlocalTime := p.getToken()\n\n\t\tnext = p.peek()\n\t\tif next == nil || next.typ != tokenTimeOffset {\n\t\t\tv := localDate.val + \"T\" + localTime.val\n\t\t\tval, err := ParseLocalDateTime(v)\n\t\t\tif err != nil {\n\t\t\t\tp.raiseError(tok, \"%s\", err)\n\t\t\t}\n\t\t\treturn val\n\t\t}\n\n\t\toffset := p.getToken()\n\n\t\tlayout := time.RFC3339Nano\n\t\tv := localDate.val + \"T\" + localTime.val + offset.val\n\t\tval, err := time.ParseInLocation(layout, v, time.UTC)\n\t\tif err != nil {\n\t\t\tp.raiseError(tok, \"%s\", err)\n\t\t}\n\t\treturn val\n\tcase tokenLeftBracket:\n\t\treturn p.parseArray()\n\tcase tokenLeftCurlyBrace:\n\t\treturn p.parseInlineTable()\n\tcase tokenEqual:\n\t\tp.raiseError(tok, \"cannot have multiple equals for the same key\")\n\tcase tokenError:\n\t\tp.raiseError(tok, \"%s\", tok)\n\tdefault:\n\t\tpanic(fmt.Errorf(\"unhandled token: %v\", tok))\n\t}\n\n\treturn nil\n}\n\nfunc tokenIsComma(t *token) bool {\n\treturn t != nil && t.typ == tokenComma\n}\n\nfunc (p *tomlParser) parseInlineTable() *Tree {\n\ttree := newTree()\n\tvar previous *token\nLoop:\n\tfor {\n\t\tfollow := p.peek()\n\t\tif follow == nil || follow.typ == tokenEOF {\n\t\t\tp.raiseError(follow, \"unterminated inline table\")\n\t\t}\n\t\tswitch follow.typ {\n\t\tcase tokenRightCurlyBrace:\n\t\t\tp.getToken()\n\t\t\tbreak Loop\n\t\tcase tokenKey, tokenInteger, tokenString:\n\t\t\tif !tokenIsComma(previous) && previous != nil {\n\t\t\t\tp.raiseError(follow, \"comma expected between fields in inline table\")\n\t\t\t}\n\t\t\tkey := p.getToken()\n\t\t\tp.assume(tokenEqual)\n\n\t\t\tparsedKey, err := parseKey(key.val)\n\t\t\tif err != nil {\n\t\t\t\tp.raiseError(key, \"invalid key: %s\", err)\n\t\t\t}\n\n\t\t\tvalue := p.parseRvalue()\n\t\t\ttree.SetPath(parsedKey, value)\n\t\tcase tokenComma:\n\t\t\tif tokenIsComma(previous) {\n\t\t\t\tp.raiseError(follow, \"need field between two commas in inline table\")\n\t\t\t}\n\t\t\tp.getToken()\n\t\tdefault:\n\t\t\tp.raiseError(follow, \"unexpected token type in inline table: %s\", follow.String())\n\t\t}\n\t\tprevious = follow\n\t}\n\tif tokenIsComma(previous) {\n\t\tp.raiseError(previous, \"trailing comma at the end of inline table\")\n\t}\n\ttree.inline = true\n\treturn tree\n}\n\nfunc (p *tomlParser) parseArray() interface{} {\n\tvar array []interface{}\n\tarrayType := reflect.TypeOf(newTree())\n\tfor {\n\t\tfollow := p.peek()\n\t\tif follow == nil || follow.typ == tokenEOF {\n\t\t\tp.raiseError(follow, \"unterminated array\")\n\t\t}\n\t\tif follow.typ == tokenRightBracket {\n\t\t\tp.getToken()\n\t\t\tbreak\n\t\t}\n\t\tval := p.parseRvalue()\n\t\tif reflect.TypeOf(val) != arrayType {\n\t\t\tarrayType = nil\n\t\t}\n\t\tarray = append(array, val)\n\t\tfollow = p.peek()\n\t\tif follow == nil || follow.typ == tokenEOF {\n\t\t\tp.raiseError(follow, \"unterminated array\")\n\t\t}\n\t\tif follow.typ != tokenRightBracket && follow.typ != tokenComma {\n\t\t\tp.raiseError(follow, \"missing comma\")\n\t\t}\n\t\tif follow.typ == tokenComma {\n\t\t\tp.getToken()\n\t\t}\n\t}\n\n\t// if the array is a mixed-type array or its length is 0,\n\t// don't convert it to a table array\n\tif len(array) <= 0 {\n\t\tarrayType = nil\n\t}\n\t// An array of Trees is actually an array of inline\n\t// tables, which is a shorthand for a table array. If the\n\t// array was not converted from []interface{} to []*Tree,\n\t// the two notations would not be equivalent.\n\tif arrayType == reflect.TypeOf(newTree()) {\n\t\ttomlArray := make([]*Tree, len(array))\n\t\tfor i, v := range array {\n\t\t\ttomlArray[i] = v.(*Tree)\n\t\t}\n\t\treturn tomlArray\n\t}\n\treturn array\n}\n\nfunc parseToml(flow []token) *Tree {\n\tresult := newTree()\n\tresult.position = Position{1, 1}\n\tparser := &tomlParser{\n\t\tflowIdx:       0,\n\t\tflow:          flow,\n\t\ttree:          result,\n\t\tcurrentTable:  make([]string, 0),\n\t\tseenTableKeys: make([]string, 0),\n\t}\n\tparser.run()\n\treturn result\n}\n"
  },
  {
    "path": "tests/vendor/github.com/pelletier/go-toml/position.go",
    "content": "// Position support for go-toml\n\npackage toml\n\nimport (\n\t\"fmt\"\n)\n\n// Position of a document element within a TOML document.\n//\n// Line and Col are both 1-indexed positions for the element's line number and\n// column number, respectively.  Values of zero or less will cause Invalid(),\n// to return true.\ntype Position struct {\n\tLine int // line within the document\n\tCol  int // column within the line\n}\n\n// String representation of the position.\n// Displays 1-indexed line and column numbers.\nfunc (p Position) String() string {\n\treturn fmt.Sprintf(\"(%d, %d)\", p.Line, p.Col)\n}\n\n// Invalid returns whether or not the position is valid (i.e. with negative or\n// null values)\nfunc (p Position) Invalid() bool {\n\treturn p.Line <= 0 || p.Col <= 0\n}\n"
  },
  {
    "path": "tests/vendor/github.com/pelletier/go-toml/token.go",
    "content": "package toml\n\nimport \"fmt\"\n\n// Define tokens\ntype tokenType int\n\nconst (\n\teof = -(iota + 1)\n)\n\nconst (\n\ttokenError tokenType = iota\n\ttokenEOF\n\ttokenComment\n\ttokenKey\n\ttokenString\n\ttokenInteger\n\ttokenTrue\n\ttokenFalse\n\ttokenFloat\n\ttokenInf\n\ttokenNan\n\ttokenEqual\n\ttokenLeftBracket\n\ttokenRightBracket\n\ttokenLeftCurlyBrace\n\ttokenRightCurlyBrace\n\ttokenLeftParen\n\ttokenRightParen\n\ttokenDoubleLeftBracket\n\ttokenDoubleRightBracket\n\ttokenLocalDate\n\ttokenLocalTime\n\ttokenTimeOffset\n\ttokenKeyGroup\n\ttokenKeyGroupArray\n\ttokenComma\n\ttokenColon\n\ttokenDollar\n\ttokenStar\n\ttokenQuestion\n\ttokenDot\n\ttokenDotDot\n\ttokenEOL\n)\n\nvar tokenTypeNames = []string{\n\t\"Error\",\n\t\"EOF\",\n\t\"Comment\",\n\t\"Key\",\n\t\"String\",\n\t\"Integer\",\n\t\"True\",\n\t\"False\",\n\t\"Float\",\n\t\"Inf\",\n\t\"NaN\",\n\t\"=\",\n\t\"[\",\n\t\"]\",\n\t\"{\",\n\t\"}\",\n\t\"(\",\n\t\")\",\n\t\"]]\",\n\t\"[[\",\n\t\"LocalDate\",\n\t\"LocalTime\",\n\t\"TimeOffset\",\n\t\"KeyGroup\",\n\t\"KeyGroupArray\",\n\t\",\",\n\t\":\",\n\t\"$\",\n\t\"*\",\n\t\"?\",\n\t\".\",\n\t\"..\",\n\t\"EOL\",\n}\n\ntype token struct {\n\tPosition\n\ttyp tokenType\n\tval string\n}\n\nfunc (tt tokenType) String() string {\n\tidx := int(tt)\n\tif idx < len(tokenTypeNames) {\n\t\treturn tokenTypeNames[idx]\n\t}\n\treturn \"Unknown\"\n}\n\nfunc (t token) String() string {\n\tswitch t.typ {\n\tcase tokenEOF:\n\t\treturn \"EOF\"\n\tcase tokenError:\n\t\treturn t.val\n\t}\n\n\treturn fmt.Sprintf(\"%q\", t.val)\n}\n\nfunc isSpace(r rune) bool {\n\treturn r == ' ' || r == '\\t'\n}\n\nfunc isAlphanumeric(r rune) bool {\n\treturn 'a' <= r && r <= 'z' || 'A' <= r && r <= 'Z' || r == '_'\n}\n\nfunc isKeyChar(r rune) bool {\n\t// Keys start with the first character that isn't whitespace or [ and end\n\t// with the last non-whitespace character before the equals sign. Keys\n\t// cannot contain a # character.\"\n\treturn !(r == '\\r' || r == '\\n' || r == eof || r == '=')\n}\n\nfunc isKeyStartChar(r rune) bool {\n\treturn !(isSpace(r) || r == '\\r' || r == '\\n' || r == eof || r == '[')\n}\n\nfunc isDigit(r rune) bool {\n\treturn '0' <= r && r <= '9'\n}\n\nfunc isHexDigit(r rune) bool {\n\treturn isDigit(r) ||\n\t\t(r >= 'a' && r <= 'f') ||\n\t\t(r >= 'A' && r <= 'F')\n}\n"
  },
  {
    "path": "tests/vendor/github.com/pelletier/go-toml/toml.go",
    "content": "package toml\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"os\"\n\t\"runtime\"\n\t\"strings\"\n)\n\ntype tomlValue struct {\n\tvalue     interface{} // string, int64, uint64, float64, bool, time.Time, [] of any of this list\n\tcomment   string\n\tcommented bool\n\tmultiline bool\n\tliteral   bool\n\tposition  Position\n}\n\n// Tree is the result of the parsing of a TOML file.\ntype Tree struct {\n\tvalues    map[string]interface{} // string -> *tomlValue, *Tree, []*Tree\n\tcomment   string\n\tcommented bool\n\tinline    bool\n\tposition  Position\n}\n\nfunc newTree() *Tree {\n\treturn newTreeWithPosition(Position{})\n}\n\nfunc newTreeWithPosition(pos Position) *Tree {\n\treturn &Tree{\n\t\tvalues:   make(map[string]interface{}),\n\t\tposition: pos,\n\t}\n}\n\n// TreeFromMap initializes a new Tree object using the given map.\nfunc TreeFromMap(m map[string]interface{}) (*Tree, error) {\n\tresult, err := toTree(m)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn result.(*Tree), nil\n}\n\n// Position returns the position of the tree.\nfunc (t *Tree) Position() Position {\n\treturn t.position\n}\n\n// Has returns a boolean indicating if the given key exists.\nfunc (t *Tree) Has(key string) bool {\n\tif key == \"\" {\n\t\treturn false\n\t}\n\treturn t.HasPath(strings.Split(key, \".\"))\n}\n\n// HasPath returns true if the given path of keys exists, false otherwise.\nfunc (t *Tree) HasPath(keys []string) bool {\n\treturn t.GetPath(keys) != nil\n}\n\n// Keys returns the keys of the toplevel tree (does not recurse).\nfunc (t *Tree) Keys() []string {\n\tkeys := make([]string, len(t.values))\n\ti := 0\n\tfor k := range t.values {\n\t\tkeys[i] = k\n\t\ti++\n\t}\n\treturn keys\n}\n\n// Get the value at key in the Tree.\n// Key is a dot-separated path (e.g. a.b.c) without single/double quoted strings.\n// If you need to retrieve non-bare keys, use GetPath.\n// Returns nil if the path does not exist in the tree.\n// If keys is of length zero, the current tree is returned.\nfunc (t *Tree) Get(key string) interface{} {\n\tif key == \"\" {\n\t\treturn t\n\t}\n\treturn t.GetPath(strings.Split(key, \".\"))\n}\n\n// GetPath returns the element in the tree indicated by 'keys'.\n// If keys is of length zero, the current tree is returned.\nfunc (t *Tree) GetPath(keys []string) interface{} {\n\tif len(keys) == 0 {\n\t\treturn t\n\t}\n\tsubtree := t\n\tfor _, intermediateKey := range keys[:len(keys)-1] {\n\t\tvalue, exists := subtree.values[intermediateKey]\n\t\tif !exists {\n\t\t\treturn nil\n\t\t}\n\t\tswitch node := value.(type) {\n\t\tcase *Tree:\n\t\t\tsubtree = node\n\t\tcase []*Tree:\n\t\t\t// go to most recent element\n\t\t\tif len(node) == 0 {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t\tsubtree = node[len(node)-1]\n\t\tdefault:\n\t\t\treturn nil // cannot navigate through other node types\n\t\t}\n\t}\n\t// branch based on final node type\n\tswitch node := subtree.values[keys[len(keys)-1]].(type) {\n\tcase *tomlValue:\n\t\treturn node.value\n\tdefault:\n\t\treturn node\n\t}\n}\n\n// GetArray returns the value at key in the Tree.\n// It returns []string, []int64, etc type if key has homogeneous lists\n// Key is a dot-separated path (e.g. a.b.c) without single/double quoted strings.\n// Returns nil if the path does not exist in the tree.\n// If keys is of length zero, the current tree is returned.\nfunc (t *Tree) GetArray(key string) interface{} {\n\tif key == \"\" {\n\t\treturn t\n\t}\n\treturn t.GetArrayPath(strings.Split(key, \".\"))\n}\n\n// GetArrayPath returns the element in the tree indicated by 'keys'.\n// If keys is of length zero, the current tree is returned.\nfunc (t *Tree) GetArrayPath(keys []string) interface{} {\n\tif len(keys) == 0 {\n\t\treturn t\n\t}\n\tsubtree := t\n\tfor _, intermediateKey := range keys[:len(keys)-1] {\n\t\tvalue, exists := subtree.values[intermediateKey]\n\t\tif !exists {\n\t\t\treturn nil\n\t\t}\n\t\tswitch node := value.(type) {\n\t\tcase *Tree:\n\t\t\tsubtree = node\n\t\tcase []*Tree:\n\t\t\t// go to most recent element\n\t\t\tif len(node) == 0 {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t\tsubtree = node[len(node)-1]\n\t\tdefault:\n\t\t\treturn nil // cannot navigate through other node types\n\t\t}\n\t}\n\t// branch based on final node type\n\tswitch node := subtree.values[keys[len(keys)-1]].(type) {\n\tcase *tomlValue:\n\t\tswitch n := node.value.(type) {\n\t\tcase []interface{}:\n\t\t\treturn getArray(n)\n\t\tdefault:\n\t\t\treturn node.value\n\t\t}\n\tdefault:\n\t\treturn node\n\t}\n}\n\n// if homogeneous array, then return slice type object over []interface{}\nfunc getArray(n []interface{}) interface{} {\n\tvar s []string\n\tvar i64 []int64\n\tvar f64 []float64\n\tvar bl []bool\n\tfor _, value := range n {\n\t\tswitch v := value.(type) {\n\t\tcase string:\n\t\t\ts = append(s, v)\n\t\tcase int64:\n\t\t\ti64 = append(i64, v)\n\t\tcase float64:\n\t\t\tf64 = append(f64, v)\n\t\tcase bool:\n\t\t\tbl = append(bl, v)\n\t\tdefault:\n\t\t\treturn n\n\t\t}\n\t}\n\tif len(s) == len(n) {\n\t\treturn s\n\t} else if len(i64) == len(n) {\n\t\treturn i64\n\t} else if len(f64) == len(n) {\n\t\treturn f64\n\t} else if len(bl) == len(n) {\n\t\treturn bl\n\t}\n\treturn n\n}\n\n// GetPosition returns the position of the given key.\nfunc (t *Tree) GetPosition(key string) Position {\n\tif key == \"\" {\n\t\treturn t.position\n\t}\n\treturn t.GetPositionPath(strings.Split(key, \".\"))\n}\n\n// SetPositionPath sets the position of element in the tree indicated by 'keys'.\n// If keys is of length zero, the current tree position is set.\nfunc (t *Tree) SetPositionPath(keys []string, pos Position) {\n\tif len(keys) == 0 {\n\t\tt.position = pos\n\t\treturn\n\t}\n\tsubtree := t\n\tfor _, intermediateKey := range keys[:len(keys)-1] {\n\t\tvalue, exists := subtree.values[intermediateKey]\n\t\tif !exists {\n\t\t\treturn\n\t\t}\n\t\tswitch node := value.(type) {\n\t\tcase *Tree:\n\t\t\tsubtree = node\n\t\tcase []*Tree:\n\t\t\t// go to most recent element\n\t\t\tif len(node) == 0 {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tsubtree = node[len(node)-1]\n\t\tdefault:\n\t\t\treturn\n\t\t}\n\t}\n\t// branch based on final node type\n\tswitch node := subtree.values[keys[len(keys)-1]].(type) {\n\tcase *tomlValue:\n\t\tnode.position = pos\n\t\treturn\n\tcase *Tree:\n\t\tnode.position = pos\n\t\treturn\n\tcase []*Tree:\n\t\t// go to most recent element\n\t\tif len(node) == 0 {\n\t\t\treturn\n\t\t}\n\t\tnode[len(node)-1].position = pos\n\t\treturn\n\t}\n}\n\n// GetPositionPath returns the element in the tree indicated by 'keys'.\n// If keys is of length zero, the current tree is returned.\nfunc (t *Tree) GetPositionPath(keys []string) Position {\n\tif len(keys) == 0 {\n\t\treturn t.position\n\t}\n\tsubtree := t\n\tfor _, intermediateKey := range keys[:len(keys)-1] {\n\t\tvalue, exists := subtree.values[intermediateKey]\n\t\tif !exists {\n\t\t\treturn Position{0, 0}\n\t\t}\n\t\tswitch node := value.(type) {\n\t\tcase *Tree:\n\t\t\tsubtree = node\n\t\tcase []*Tree:\n\t\t\t// go to most recent element\n\t\t\tif len(node) == 0 {\n\t\t\t\treturn Position{0, 0}\n\t\t\t}\n\t\t\tsubtree = node[len(node)-1]\n\t\tdefault:\n\t\t\treturn Position{0, 0}\n\t\t}\n\t}\n\t// branch based on final node type\n\tswitch node := subtree.values[keys[len(keys)-1]].(type) {\n\tcase *tomlValue:\n\t\treturn node.position\n\tcase *Tree:\n\t\treturn node.position\n\tcase []*Tree:\n\t\t// go to most recent element\n\t\tif len(node) == 0 {\n\t\t\treturn Position{0, 0}\n\t\t}\n\t\treturn node[len(node)-1].position\n\tdefault:\n\t\treturn Position{0, 0}\n\t}\n}\n\n// GetDefault works like Get but with a default value\nfunc (t *Tree) GetDefault(key string, def interface{}) interface{} {\n\tval := t.Get(key)\n\tif val == nil {\n\t\treturn def\n\t}\n\treturn val\n}\n\n// SetOptions arguments are supplied to the SetWithOptions and SetPathWithOptions functions to modify marshalling behaviour.\n// The default values within the struct are valid default options.\ntype SetOptions struct {\n\tComment   string\n\tCommented bool\n\tMultiline bool\n\tLiteral   bool\n}\n\n// SetWithOptions is the same as Set, but allows you to provide formatting\n// instructions to the key, that will be used by Marshal().\nfunc (t *Tree) SetWithOptions(key string, opts SetOptions, value interface{}) {\n\tt.SetPathWithOptions(strings.Split(key, \".\"), opts, value)\n}\n\n// SetPathWithOptions is the same as SetPath, but allows you to provide\n// formatting instructions to the key, that will be reused by Marshal().\nfunc (t *Tree) SetPathWithOptions(keys []string, opts SetOptions, value interface{}) {\n\tsubtree := t\n\tfor i, intermediateKey := range keys[:len(keys)-1] {\n\t\tnextTree, exists := subtree.values[intermediateKey]\n\t\tif !exists {\n\t\t\tnextTree = newTreeWithPosition(Position{Line: t.position.Line + i, Col: t.position.Col})\n\t\t\tsubtree.values[intermediateKey] = nextTree // add new element here\n\t\t}\n\t\tswitch node := nextTree.(type) {\n\t\tcase *Tree:\n\t\t\tsubtree = node\n\t\tcase []*Tree:\n\t\t\t// go to most recent element\n\t\t\tif len(node) == 0 {\n\t\t\t\t// create element if it does not exist\n\t\t\t\tnode = append(node, newTreeWithPosition(Position{Line: t.position.Line + i, Col: t.position.Col}))\n\t\t\t\tsubtree.values[intermediateKey] = node\n\t\t\t}\n\t\t\tsubtree = node[len(node)-1]\n\t\t}\n\t}\n\n\tvar toInsert interface{}\n\n\tswitch v := value.(type) {\n\tcase *Tree:\n\t\tv.comment = opts.Comment\n\t\tv.commented = opts.Commented\n\t\ttoInsert = value\n\tcase []*Tree:\n\t\tfor i := range v {\n\t\t\tv[i].commented = opts.Commented\n\t\t}\n\t\ttoInsert = value\n\tcase *tomlValue:\n\t\tv.comment = opts.Comment\n\t\tv.commented = opts.Commented\n\t\tv.multiline = opts.Multiline\n\t\tv.literal = opts.Literal\n\t\ttoInsert = v\n\tdefault:\n\t\ttoInsert = &tomlValue{value: value,\n\t\t\tcomment:   opts.Comment,\n\t\t\tcommented: opts.Commented,\n\t\t\tmultiline: opts.Multiline,\n\t\t\tliteral:   opts.Literal,\n\t\t\tposition:  Position{Line: subtree.position.Line + len(subtree.values) + 1, Col: subtree.position.Col}}\n\t}\n\n\tsubtree.values[keys[len(keys)-1]] = toInsert\n}\n\n// Set an element in the tree.\n// Key is a dot-separated path (e.g. a.b.c).\n// Creates all necessary intermediate trees, if needed.\nfunc (t *Tree) Set(key string, value interface{}) {\n\tt.SetWithComment(key, \"\", false, value)\n}\n\n// SetWithComment is the same as Set, but allows you to provide comment\n// information to the key, that will be reused by Marshal().\nfunc (t *Tree) SetWithComment(key string, comment string, commented bool, value interface{}) {\n\tt.SetPathWithComment(strings.Split(key, \".\"), comment, commented, value)\n}\n\n// SetPath sets an element in the tree.\n// Keys is an array of path elements (e.g. {\"a\",\"b\",\"c\"}).\n// Creates all necessary intermediate trees, if needed.\nfunc (t *Tree) SetPath(keys []string, value interface{}) {\n\tt.SetPathWithComment(keys, \"\", false, value)\n}\n\n// SetPathWithComment is the same as SetPath, but allows you to provide comment\n// information to the key, that will be reused by Marshal().\nfunc (t *Tree) SetPathWithComment(keys []string, comment string, commented bool, value interface{}) {\n\tt.SetPathWithOptions(keys, SetOptions{Comment: comment, Commented: commented}, value)\n}\n\n// Delete removes a key from the tree.\n// Key is a dot-separated path (e.g. a.b.c).\nfunc (t *Tree) Delete(key string) error {\n\tkeys, err := parseKey(key)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn t.DeletePath(keys)\n}\n\n// DeletePath removes a key from the tree.\n// Keys is an array of path elements (e.g. {\"a\",\"b\",\"c\"}).\nfunc (t *Tree) DeletePath(keys []string) error {\n\tkeyLen := len(keys)\n\tif keyLen == 1 {\n\t\tdelete(t.values, keys[0])\n\t\treturn nil\n\t}\n\ttree := t.GetPath(keys[:keyLen-1])\n\titem := keys[keyLen-1]\n\tswitch node := tree.(type) {\n\tcase *Tree:\n\t\tdelete(node.values, item)\n\t\treturn nil\n\t}\n\treturn errors.New(\"no such key to delete\")\n}\n\n// createSubTree takes a tree and a key and create the necessary intermediate\n// subtrees to create a subtree at that point. In-place.\n//\n// e.g. passing a.b.c will create (assuming tree is empty) tree[a], tree[a][b]\n// and tree[a][b][c]\n//\n// Returns nil on success, error object on failure\nfunc (t *Tree) createSubTree(keys []string, pos Position) error {\n\tsubtree := t\n\tfor i, intermediateKey := range keys {\n\t\tnextTree, exists := subtree.values[intermediateKey]\n\t\tif !exists {\n\t\t\ttree := newTreeWithPosition(Position{Line: t.position.Line + i, Col: t.position.Col})\n\t\t\ttree.position = pos\n\t\t\ttree.inline = subtree.inline\n\t\t\tsubtree.values[intermediateKey] = tree\n\t\t\tnextTree = tree\n\t\t}\n\n\t\tswitch node := nextTree.(type) {\n\t\tcase []*Tree:\n\t\t\tsubtree = node[len(node)-1]\n\t\tcase *Tree:\n\t\t\tsubtree = node\n\t\tdefault:\n\t\t\treturn fmt.Errorf(\"unknown type for path %s (%s): %T (%#v)\",\n\t\t\t\tstrings.Join(keys, \".\"), intermediateKey, nextTree, nextTree)\n\t\t}\n\t}\n\treturn nil\n}\n\n// LoadBytes creates a Tree from a []byte.\nfunc LoadBytes(b []byte) (tree *Tree, err error) {\n\tdefer func() {\n\t\tif r := recover(); r != nil {\n\t\t\tif _, ok := r.(runtime.Error); ok {\n\t\t\t\tpanic(r)\n\t\t\t}\n\t\t\terr = fmt.Errorf(\"%s\", r)\n\t\t}\n\t}()\n\n\tif len(b) >= 4 && (hasUTF32BigEndianBOM4(b) || hasUTF32LittleEndianBOM4(b)) {\n\t\tb = b[4:]\n\t} else if len(b) >= 3 && hasUTF8BOM3(b) {\n\t\tb = b[3:]\n\t} else if len(b) >= 2 && (hasUTF16BigEndianBOM2(b) || hasUTF16LittleEndianBOM2(b)) {\n\t\tb = b[2:]\n\t}\n\n\ttree = parseToml(lexToml(b))\n\treturn\n}\n\nfunc hasUTF16BigEndianBOM2(b []byte) bool {\n\treturn b[0] == 0xFE && b[1] == 0xFF\n}\n\nfunc hasUTF16LittleEndianBOM2(b []byte) bool {\n\treturn b[0] == 0xFF && b[1] == 0xFE\n}\n\nfunc hasUTF8BOM3(b []byte) bool {\n\treturn b[0] == 0xEF && b[1] == 0xBB && b[2] == 0xBF\n}\n\nfunc hasUTF32BigEndianBOM4(b []byte) bool {\n\treturn b[0] == 0x00 && b[1] == 0x00 && b[2] == 0xFE && b[3] == 0xFF\n}\n\nfunc hasUTF32LittleEndianBOM4(b []byte) bool {\n\treturn b[0] == 0xFF && b[1] == 0xFE && b[2] == 0x00 && b[3] == 0x00\n}\n\n// LoadReader creates a Tree from any io.Reader.\nfunc LoadReader(reader io.Reader) (tree *Tree, err error) {\n\tinputBytes, err := ioutil.ReadAll(reader)\n\tif err != nil {\n\t\treturn\n\t}\n\ttree, err = LoadBytes(inputBytes)\n\treturn\n}\n\n// Load creates a Tree from a string.\nfunc Load(content string) (tree *Tree, err error) {\n\treturn LoadBytes([]byte(content))\n}\n\n// LoadFile creates a Tree from a file.\nfunc LoadFile(path string) (tree *Tree, err error) {\n\tfile, err := os.Open(path)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer file.Close()\n\treturn LoadReader(file)\n}\n"
  },
  {
    "path": "tests/vendor/github.com/pelletier/go-toml/tomlpub.go",
    "content": "package toml\n\n// PubTOMLValue wrapping tomlValue in order to access all properties from outside.\ntype PubTOMLValue = tomlValue\n\nfunc (ptv *PubTOMLValue) Value() interface{} {\n\treturn ptv.value\n}\nfunc (ptv *PubTOMLValue) Comment() string {\n\treturn ptv.comment\n}\nfunc (ptv *PubTOMLValue) Commented() bool {\n\treturn ptv.commented\n}\nfunc (ptv *PubTOMLValue) Multiline() bool {\n\treturn ptv.multiline\n}\nfunc (ptv *PubTOMLValue) Position() Position {\n\treturn ptv.position\n}\n\nfunc (ptv *PubTOMLValue) SetValue(v interface{}) {\n\tptv.value = v\n}\nfunc (ptv *PubTOMLValue) SetComment(s string) {\n\tptv.comment = s\n}\nfunc (ptv *PubTOMLValue) SetCommented(c bool) {\n\tptv.commented = c\n}\nfunc (ptv *PubTOMLValue) SetMultiline(m bool) {\n\tptv.multiline = m\n}\nfunc (ptv *PubTOMLValue) SetPosition(p Position) {\n\tptv.position = p\n}\n\n// PubTree wrapping Tree in order to access all properties from outside.\ntype PubTree = Tree\n\nfunc (pt *PubTree) Values() map[string]interface{} {\n\treturn pt.values\n}\n\nfunc (pt *PubTree) Comment() string {\n\treturn pt.comment\n}\n\nfunc (pt *PubTree) Commented() bool {\n\treturn pt.commented\n}\n\nfunc (pt *PubTree) Inline() bool {\n\treturn pt.inline\n}\n\nfunc (pt *PubTree) SetValues(v map[string]interface{}) {\n\tpt.values = v\n}\n\nfunc (pt *PubTree) SetComment(c string) {\n\tpt.comment = c\n}\n\nfunc (pt *PubTree) SetCommented(c bool) {\n\tpt.commented = c\n}\n\nfunc (pt *PubTree) SetInline(i bool) {\n\tpt.inline = i\n}\n"
  },
  {
    "path": "tests/vendor/github.com/pelletier/go-toml/tomltree_create.go",
    "content": "package toml\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"time\"\n)\n\nvar kindToType = [reflect.String + 1]reflect.Type{\n\treflect.Bool:    reflect.TypeOf(true),\n\treflect.String:  reflect.TypeOf(\"\"),\n\treflect.Float32: reflect.TypeOf(float64(1)),\n\treflect.Float64: reflect.TypeOf(float64(1)),\n\treflect.Int:     reflect.TypeOf(int64(1)),\n\treflect.Int8:    reflect.TypeOf(int64(1)),\n\treflect.Int16:   reflect.TypeOf(int64(1)),\n\treflect.Int32:   reflect.TypeOf(int64(1)),\n\treflect.Int64:   reflect.TypeOf(int64(1)),\n\treflect.Uint:    reflect.TypeOf(uint64(1)),\n\treflect.Uint8:   reflect.TypeOf(uint64(1)),\n\treflect.Uint16:  reflect.TypeOf(uint64(1)),\n\treflect.Uint32:  reflect.TypeOf(uint64(1)),\n\treflect.Uint64:  reflect.TypeOf(uint64(1)),\n}\n\n// typeFor returns a reflect.Type for a reflect.Kind, or nil if none is found.\n// supported values:\n// string, bool, int64, uint64, float64, time.Time, int, int8, int16, int32, uint, uint8, uint16, uint32, float32\nfunc typeFor(k reflect.Kind) reflect.Type {\n\tif k > 0 && int(k) < len(kindToType) {\n\t\treturn kindToType[k]\n\t}\n\treturn nil\n}\n\nfunc simpleValueCoercion(object interface{}) (interface{}, error) {\n\tswitch original := object.(type) {\n\tcase string, bool, int64, uint64, float64, time.Time:\n\t\treturn original, nil\n\tcase int:\n\t\treturn int64(original), nil\n\tcase int8:\n\t\treturn int64(original), nil\n\tcase int16:\n\t\treturn int64(original), nil\n\tcase int32:\n\t\treturn int64(original), nil\n\tcase uint:\n\t\treturn uint64(original), nil\n\tcase uint8:\n\t\treturn uint64(original), nil\n\tcase uint16:\n\t\treturn uint64(original), nil\n\tcase uint32:\n\t\treturn uint64(original), nil\n\tcase float32:\n\t\treturn float64(original), nil\n\tcase fmt.Stringer:\n\t\treturn original.String(), nil\n\tcase []interface{}:\n\t\tvalue := reflect.ValueOf(original)\n\t\tlength := value.Len()\n\t\tarrayValue := reflect.MakeSlice(value.Type(), 0, length)\n\t\tfor i := 0; i < length; i++ {\n\t\t\tval := value.Index(i).Interface()\n\t\t\tsimpleValue, err := simpleValueCoercion(val)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tarrayValue = reflect.Append(arrayValue, reflect.ValueOf(simpleValue))\n\t\t}\n\t\treturn arrayValue.Interface(), nil\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"cannot convert type %T to Tree\", object)\n\t}\n}\n\nfunc sliceToTree(object interface{}) (interface{}, error) {\n\t// arrays are a bit tricky, since they can represent either a\n\t// collection of simple values, which is represented by one\n\t// *tomlValue, or an array of tables, which is represented by an\n\t// array of *Tree.\n\n\t// holding the assumption that this function is called from toTree only when value.Kind() is Array or Slice\n\tvalue := reflect.ValueOf(object)\n\tinsideType := value.Type().Elem()\n\tlength := value.Len()\n\tif length > 0 {\n\t\tinsideType = reflect.ValueOf(value.Index(0).Interface()).Type()\n\t}\n\tif insideType.Kind() == reflect.Map {\n\t\t// this is considered as an array of tables\n\t\ttablesArray := make([]*Tree, 0, length)\n\t\tfor i := 0; i < length; i++ {\n\t\t\ttable := value.Index(i)\n\t\t\ttree, err := toTree(table.Interface())\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\ttablesArray = append(tablesArray, tree.(*Tree))\n\t\t}\n\t\treturn tablesArray, nil\n\t}\n\n\tsliceType := typeFor(insideType.Kind())\n\tif sliceType == nil {\n\t\tsliceType = insideType\n\t}\n\n\tarrayValue := reflect.MakeSlice(reflect.SliceOf(sliceType), 0, length)\n\n\tfor i := 0; i < length; i++ {\n\t\tval := value.Index(i).Interface()\n\t\tsimpleValue, err := simpleValueCoercion(val)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tarrayValue = reflect.Append(arrayValue, reflect.ValueOf(simpleValue))\n\t}\n\treturn &tomlValue{value: arrayValue.Interface(), position: Position{}}, nil\n}\n\nfunc toTree(object interface{}) (interface{}, error) {\n\tvalue := reflect.ValueOf(object)\n\n\tif value.Kind() == reflect.Map {\n\t\tvalues := map[string]interface{}{}\n\t\tkeys := value.MapKeys()\n\t\tfor _, key := range keys {\n\t\t\tif key.Kind() != reflect.String {\n\t\t\t\tif _, ok := key.Interface().(string); !ok {\n\t\t\t\t\treturn nil, fmt.Errorf(\"map key needs to be a string, not %T (%v)\", key.Interface(), key.Kind())\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tv := value.MapIndex(key)\n\t\t\tnewValue, err := toTree(v.Interface())\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tvalues[key.String()] = newValue\n\t\t}\n\t\treturn &Tree{values: values, position: Position{}}, nil\n\t}\n\n\tif value.Kind() == reflect.Array || value.Kind() == reflect.Slice {\n\t\treturn sliceToTree(object)\n\t}\n\n\tsimpleValue, err := simpleValueCoercion(object)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &tomlValue{value: simpleValue, position: Position{}}, nil\n}\n"
  },
  {
    "path": "tests/vendor/github.com/pelletier/go-toml/tomltree_write.go",
    "content": "package toml\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"math\"\n\t\"math/big\"\n\t\"reflect\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n)\n\ntype valueComplexity int\n\nconst (\n\tvalueSimple valueComplexity = iota + 1\n\tvalueComplex\n)\n\ntype sortNode struct {\n\tkey        string\n\tcomplexity valueComplexity\n}\n\n// Encodes a string to a TOML-compliant multi-line string value\n// This function is a clone of the existing encodeTomlString function, except that whitespace characters\n// are preserved. Quotation marks and backslashes are also not escaped.\nfunc encodeMultilineTomlString(value string, commented string) string {\n\tvar b bytes.Buffer\n\tadjacentQuoteCount := 0\n\n\tb.WriteString(commented)\n\tfor i, rr := range value {\n\t\tif rr != '\"' {\n\t\t\tadjacentQuoteCount = 0\n\t\t} else {\n\t\t\tadjacentQuoteCount++\n\t\t}\n\t\tswitch rr {\n\t\tcase '\\b':\n\t\t\tb.WriteString(`\\b`)\n\t\tcase '\\t':\n\t\t\tb.WriteString(\"\\t\")\n\t\tcase '\\n':\n\t\t\tb.WriteString(\"\\n\" + commented)\n\t\tcase '\\f':\n\t\t\tb.WriteString(`\\f`)\n\t\tcase '\\r':\n\t\t\tb.WriteString(\"\\r\")\n\t\tcase '\"':\n\t\t\tif adjacentQuoteCount >= 3 || i == len(value)-1 {\n\t\t\t\tadjacentQuoteCount = 0\n\t\t\t\tb.WriteString(`\\\"`)\n\t\t\t} else {\n\t\t\t\tb.WriteString(`\"`)\n\t\t\t}\n\t\tcase '\\\\':\n\t\t\tb.WriteString(`\\`)\n\t\tdefault:\n\t\t\tintRr := uint16(rr)\n\t\t\tif intRr < 0x001F {\n\t\t\t\tb.WriteString(fmt.Sprintf(\"\\\\u%0.4X\", intRr))\n\t\t\t} else {\n\t\t\t\tb.WriteRune(rr)\n\t\t\t}\n\t\t}\n\t}\n\treturn b.String()\n}\n\n// Encodes a string to a TOML-compliant string value\nfunc encodeTomlString(value string) string {\n\tvar b bytes.Buffer\n\n\tfor _, rr := range value {\n\t\tswitch rr {\n\t\tcase '\\b':\n\t\t\tb.WriteString(`\\b`)\n\t\tcase '\\t':\n\t\t\tb.WriteString(`\\t`)\n\t\tcase '\\n':\n\t\t\tb.WriteString(`\\n`)\n\t\tcase '\\f':\n\t\t\tb.WriteString(`\\f`)\n\t\tcase '\\r':\n\t\t\tb.WriteString(`\\r`)\n\t\tcase '\"':\n\t\t\tb.WriteString(`\\\"`)\n\t\tcase '\\\\':\n\t\t\tb.WriteString(`\\\\`)\n\t\tdefault:\n\t\t\tintRr := uint16(rr)\n\t\t\tif intRr < 0x001F {\n\t\t\t\tb.WriteString(fmt.Sprintf(\"\\\\u%0.4X\", intRr))\n\t\t\t} else {\n\t\t\t\tb.WriteRune(rr)\n\t\t\t}\n\t\t}\n\t}\n\treturn b.String()\n}\n\nfunc tomlTreeStringRepresentation(t *Tree, ord MarshalOrder) (string, error) {\n\tvar orderedVals []sortNode\n\tswitch ord {\n\tcase OrderPreserve:\n\t\torderedVals = sortByLines(t)\n\tdefault:\n\t\torderedVals = sortAlphabetical(t)\n\t}\n\n\tvar values []string\n\tfor _, node := range orderedVals {\n\t\tk := node.key\n\t\tv := t.values[k]\n\n\t\trepr, err := tomlValueStringRepresentation(v, \"\", \"\", ord, false)\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t\tvalues = append(values, quoteKeyIfNeeded(k)+\" = \"+repr)\n\t}\n\treturn \"{ \" + strings.Join(values, \", \") + \" }\", nil\n}\n\nfunc tomlValueStringRepresentation(v interface{}, commented string, indent string, ord MarshalOrder, arraysOneElementPerLine bool) (string, error) {\n\t// this interface check is added to dereference the change made in the writeTo function.\n\t// That change was made to allow this function to see formatting options.\n\ttv, ok := v.(*tomlValue)\n\tif ok {\n\t\tv = tv.value\n\t} else {\n\t\ttv = &tomlValue{}\n\t}\n\n\tswitch value := v.(type) {\n\tcase uint64:\n\t\treturn strconv.FormatUint(value, 10), nil\n\tcase int64:\n\t\treturn strconv.FormatInt(value, 10), nil\n\tcase float64:\n\t\t// Default bit length is full 64\n\t\tbits := 64\n\t\t// Float panics if nan is used\n\t\tif !math.IsNaN(value) {\n\t\t\t// if 32 bit accuracy is enough to exactly show, use 32\n\t\t\t_, acc := big.NewFloat(value).Float32()\n\t\t\tif acc == big.Exact {\n\t\t\t\tbits = 32\n\t\t\t}\n\t\t}\n\t\tif math.Trunc(value) == value {\n\t\t\treturn strings.ToLower(strconv.FormatFloat(value, 'f', 1, bits)), nil\n\t\t}\n\t\treturn strings.ToLower(strconv.FormatFloat(value, 'f', -1, bits)), nil\n\tcase string:\n\t\tif tv.multiline {\n\t\t\tif tv.literal {\n\t\t\t\tb := strings.Builder{}\n\t\t\t\tb.WriteString(\"'''\\n\")\n\t\t\t\tb.Write([]byte(value))\n\t\t\t\tb.WriteString(\"\\n'''\")\n\t\t\t\treturn b.String(), nil\n\t\t\t} else {\n\t\t\t\treturn \"\\\"\\\"\\\"\\n\" + encodeMultilineTomlString(value, commented) + \"\\\"\\\"\\\"\", nil\n\t\t\t}\n\t\t}\n\t\treturn \"\\\"\" + encodeTomlString(value) + \"\\\"\", nil\n\tcase []byte:\n\t\tb, _ := v.([]byte)\n\t\treturn string(b), nil\n\tcase bool:\n\t\tif value {\n\t\t\treturn \"true\", nil\n\t\t}\n\t\treturn \"false\", nil\n\tcase time.Time:\n\t\treturn value.Format(time.RFC3339), nil\n\tcase LocalDate:\n\t\treturn value.String(), nil\n\tcase LocalDateTime:\n\t\treturn value.String(), nil\n\tcase LocalTime:\n\t\treturn value.String(), nil\n\tcase *Tree:\n\t\treturn tomlTreeStringRepresentation(value, ord)\n\tcase nil:\n\t\treturn \"\", nil\n\t}\n\n\trv := reflect.ValueOf(v)\n\n\tif rv.Kind() == reflect.Slice {\n\t\tvar values []string\n\t\tfor i := 0; i < rv.Len(); i++ {\n\t\t\titem := rv.Index(i).Interface()\n\t\t\titemRepr, err := tomlValueStringRepresentation(item, commented, indent, ord, arraysOneElementPerLine)\n\t\t\tif err != nil {\n\t\t\t\treturn \"\", err\n\t\t\t}\n\t\t\tvalues = append(values, itemRepr)\n\t\t}\n\t\tif arraysOneElementPerLine && len(values) > 1 {\n\t\t\tstringBuffer := bytes.Buffer{}\n\t\t\tvalueIndent := indent + `  ` // TODO: move that to a shared encoder state\n\n\t\t\tstringBuffer.WriteString(\"[\\n\")\n\n\t\t\tfor _, value := range values {\n\t\t\t\tstringBuffer.WriteString(valueIndent)\n\t\t\t\tstringBuffer.WriteString(commented + value)\n\t\t\t\tstringBuffer.WriteString(`,`)\n\t\t\t\tstringBuffer.WriteString(\"\\n\")\n\t\t\t}\n\n\t\t\tstringBuffer.WriteString(indent + commented + \"]\")\n\n\t\t\treturn stringBuffer.String(), nil\n\t\t}\n\t\treturn \"[\" + strings.Join(values, \", \") + \"]\", nil\n\t}\n\treturn \"\", fmt.Errorf(\"unsupported value type %T: %v\", v, v)\n}\n\nfunc getTreeArrayLine(trees []*Tree) (line int) {\n\t// Prevent returning 0 for empty trees\n\tline = int(^uint(0) >> 1)\n\t// get lowest line number >= 0\n\tfor _, tv := range trees {\n\t\tif tv.position.Line < line || line == 0 {\n\t\t\tline = tv.position.Line\n\t\t}\n\t}\n\treturn\n}\n\nfunc sortByLines(t *Tree) (vals []sortNode) {\n\tvar (\n\t\tline  int\n\t\tlines []int\n\t\ttv    *Tree\n\t\ttom   *tomlValue\n\t\tnode  sortNode\n\t)\n\tvals = make([]sortNode, 0)\n\tm := make(map[int]sortNode)\n\n\tfor k := range t.values {\n\t\tv := t.values[k]\n\t\tswitch v.(type) {\n\t\tcase *Tree:\n\t\t\ttv = v.(*Tree)\n\t\t\tline = tv.position.Line\n\t\t\tnode = sortNode{key: k, complexity: valueComplex}\n\t\tcase []*Tree:\n\t\t\tline = getTreeArrayLine(v.([]*Tree))\n\t\t\tnode = sortNode{key: k, complexity: valueComplex}\n\t\tdefault:\n\t\t\ttom = v.(*tomlValue)\n\t\t\tline = tom.position.Line\n\t\t\tnode = sortNode{key: k, complexity: valueSimple}\n\t\t}\n\t\tlines = append(lines, line)\n\t\tvals = append(vals, node)\n\t\tm[line] = node\n\t}\n\tsort.Ints(lines)\n\n\tfor i, line := range lines {\n\t\tvals[i] = m[line]\n\t}\n\n\treturn vals\n}\n\nfunc sortAlphabetical(t *Tree) (vals []sortNode) {\n\tvar (\n\t\tnode     sortNode\n\t\tsimpVals []string\n\t\tcompVals []string\n\t)\n\tvals = make([]sortNode, 0)\n\tm := make(map[string]sortNode)\n\n\tfor k := range t.values {\n\t\tv := t.values[k]\n\t\tswitch v.(type) {\n\t\tcase *Tree, []*Tree:\n\t\t\tnode = sortNode{key: k, complexity: valueComplex}\n\t\t\tcompVals = append(compVals, node.key)\n\t\tdefault:\n\t\t\tnode = sortNode{key: k, complexity: valueSimple}\n\t\t\tsimpVals = append(simpVals, node.key)\n\t\t}\n\t\tvals = append(vals, node)\n\t\tm[node.key] = node\n\t}\n\n\t// Simples first to match previous implementation\n\tsort.Strings(simpVals)\n\ti := 0\n\tfor _, key := range simpVals {\n\t\tvals[i] = m[key]\n\t\ti++\n\t}\n\n\tsort.Strings(compVals)\n\tfor _, key := range compVals {\n\t\tvals[i] = m[key]\n\t\ti++\n\t}\n\n\treturn vals\n}\n\nfunc (t *Tree) writeTo(w io.Writer, indent, keyspace string, bytesCount int64, arraysOneElementPerLine bool) (int64, error) {\n\treturn t.writeToOrdered(w, indent, keyspace, bytesCount, arraysOneElementPerLine, OrderAlphabetical, \"  \", false, false)\n}\n\nfunc (t *Tree) writeToOrdered(w io.Writer, indent, keyspace string, bytesCount int64, arraysOneElementPerLine bool, ord MarshalOrder, indentString string, compactComments, parentCommented bool) (int64, error) {\n\tvar orderedVals []sortNode\n\n\tswitch ord {\n\tcase OrderPreserve:\n\t\torderedVals = sortByLines(t)\n\tdefault:\n\t\torderedVals = sortAlphabetical(t)\n\t}\n\n\tfor _, node := range orderedVals {\n\t\tswitch node.complexity {\n\t\tcase valueComplex:\n\t\t\tk := node.key\n\t\t\tv := t.values[k]\n\n\t\t\tcombinedKey := quoteKeyIfNeeded(k)\n\t\t\tif keyspace != \"\" {\n\t\t\t\tcombinedKey = keyspace + \".\" + combinedKey\n\t\t\t}\n\n\t\t\tswitch node := v.(type) {\n\t\t\t// node has to be of those two types given how keys are sorted above\n\t\t\tcase *Tree:\n\t\t\t\ttv, ok := t.values[k].(*Tree)\n\t\t\t\tif !ok {\n\t\t\t\t\treturn bytesCount, fmt.Errorf(\"invalid value type at %s: %T\", k, t.values[k])\n\t\t\t\t}\n\t\t\t\tif tv.comment != \"\" {\n\t\t\t\t\tcomment := strings.Replace(tv.comment, \"\\n\", \"\\n\"+indent+\"#\", -1)\n\t\t\t\t\tstart := \"# \"\n\t\t\t\t\tif strings.HasPrefix(comment, \"#\") {\n\t\t\t\t\t\tstart = \"\"\n\t\t\t\t\t}\n\t\t\t\t\twrittenBytesCountComment, errc := writeStrings(w, \"\\n\", indent, start, comment)\n\t\t\t\t\tbytesCount += int64(writtenBytesCountComment)\n\t\t\t\t\tif errc != nil {\n\t\t\t\t\t\treturn bytesCount, errc\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvar commented string\n\t\t\t\tif parentCommented || t.commented || tv.commented {\n\t\t\t\t\tcommented = \"# \"\n\t\t\t\t}\n\t\t\t\twrittenBytesCount, err := writeStrings(w, \"\\n\", indent, commented, \"[\", combinedKey, \"]\\n\")\n\t\t\t\tbytesCount += int64(writtenBytesCount)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn bytesCount, err\n\t\t\t\t}\n\t\t\t\tbytesCount, err = node.writeToOrdered(w, indent+indentString, combinedKey, bytesCount, arraysOneElementPerLine, ord, indentString, compactComments, parentCommented || t.commented || tv.commented)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn bytesCount, err\n\t\t\t\t}\n\t\t\tcase []*Tree:\n\t\t\t\tfor _, subTree := range node {\n\t\t\t\t\tvar commented string\n\t\t\t\t\tif parentCommented || t.commented || subTree.commented {\n\t\t\t\t\t\tcommented = \"# \"\n\t\t\t\t\t}\n\t\t\t\t\twrittenBytesCount, err := writeStrings(w, \"\\n\", indent, commented, \"[[\", combinedKey, \"]]\\n\")\n\t\t\t\t\tbytesCount += int64(writtenBytesCount)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn bytesCount, err\n\t\t\t\t\t}\n\n\t\t\t\t\tbytesCount, err = subTree.writeToOrdered(w, indent+indentString, combinedKey, bytesCount, arraysOneElementPerLine, ord, indentString, compactComments, parentCommented || t.commented || subTree.commented)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn bytesCount, err\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\tdefault: // Simple\n\t\t\tk := node.key\n\t\t\tv, ok := t.values[k].(*tomlValue)\n\t\t\tif !ok {\n\t\t\t\treturn bytesCount, fmt.Errorf(\"invalid value type at %s: %T\", k, t.values[k])\n\t\t\t}\n\n\t\t\tvar commented string\n\t\t\tif parentCommented || t.commented || v.commented {\n\t\t\t\tcommented = \"# \"\n\t\t\t}\n\t\t\trepr, err := tomlValueStringRepresentation(v, commented, indent, ord, arraysOneElementPerLine)\n\t\t\tif err != nil {\n\t\t\t\treturn bytesCount, err\n\t\t\t}\n\n\t\t\tif v.comment != \"\" {\n\t\t\t\tcomment := strings.Replace(v.comment, \"\\n\", \"\\n\"+indent+\"#\", -1)\n\t\t\t\tstart := \"# \"\n\t\t\t\tif strings.HasPrefix(comment, \"#\") {\n\t\t\t\t\tstart = \"\"\n\t\t\t\t}\n\t\t\t\tif !compactComments {\n\t\t\t\t\twrittenBytesCountComment, errc := writeStrings(w, \"\\n\")\n\t\t\t\t\tbytesCount += int64(writtenBytesCountComment)\n\t\t\t\t\tif errc != nil {\n\t\t\t\t\t\treturn bytesCount, errc\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\twrittenBytesCountComment, errc := writeStrings(w, indent, start, comment, \"\\n\")\n\t\t\t\tbytesCount += int64(writtenBytesCountComment)\n\t\t\t\tif errc != nil {\n\t\t\t\t\treturn bytesCount, errc\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tquotedKey := quoteKeyIfNeeded(k)\n\t\t\twrittenBytesCount, err := writeStrings(w, indent, commented, quotedKey, \" = \", repr, \"\\n\")\n\t\t\tbytesCount += int64(writtenBytesCount)\n\t\t\tif err != nil {\n\t\t\t\treturn bytesCount, err\n\t\t\t}\n\t\t}\n\t}\n\n\treturn bytesCount, nil\n}\n\n// quote a key if it does not fit the bare key format (A-Za-z0-9_-)\n// quoted keys use the same rules as strings\nfunc quoteKeyIfNeeded(k string) string {\n\t// when encoding a map with the 'quoteMapKeys' option enabled, the tree will contain\n\t// keys that have already been quoted.\n\t// not an ideal situation, but good enough of a stop gap.\n\tif len(k) >= 2 && k[0] == '\"' && k[len(k)-1] == '\"' {\n\t\treturn k\n\t}\n\tisBare := true\n\tfor _, r := range k {\n\t\tif !isValidBareChar(r) {\n\t\t\tisBare = false\n\t\t\tbreak\n\t\t}\n\t}\n\tif isBare {\n\t\treturn k\n\t}\n\treturn quoteKey(k)\n}\n\nfunc quoteKey(k string) string {\n\treturn \"\\\"\" + encodeTomlString(k) + \"\\\"\"\n}\n\nfunc writeStrings(w io.Writer, s ...string) (int, error) {\n\tvar n int\n\tfor i := range s {\n\t\tb, err := io.WriteString(w, s[i])\n\t\tn += b\n\t\tif err != nil {\n\t\t\treturn n, err\n\t\t}\n\t}\n\treturn n, nil\n}\n\n// WriteTo encode the Tree as Toml and writes it to the writer w.\n// Returns the number of bytes written in case of success, or an error if anything happened.\nfunc (t *Tree) WriteTo(w io.Writer) (int64, error) {\n\treturn t.writeTo(w, \"\", \"\", 0, false)\n}\n\n// ToTomlString generates a human-readable representation of the current tree.\n// Output spans multiple lines, and is suitable for ingest by a TOML parser.\n// If the conversion cannot be performed, ToString returns a non-nil error.\nfunc (t *Tree) ToTomlString() (string, error) {\n\tb, err := t.Marshal()\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\treturn string(b), nil\n}\n\n// String generates a human-readable representation of the current tree.\n// Alias of ToString. Present to implement the fmt.Stringer interface.\nfunc (t *Tree) String() string {\n\tresult, _ := t.ToTomlString()\n\treturn result\n}\n\n// ToMap recursively generates a representation of the tree using Go built-in structures.\n// The following types are used:\n//\n//\t* bool\n//\t* float64\n//\t* int64\n//\t* string\n//\t* uint64\n//\t* time.Time\n//\t* map[string]interface{} (where interface{} is any of this list)\n//\t* []interface{} (where interface{} is any of this list)\nfunc (t *Tree) ToMap() map[string]interface{} {\n\tresult := map[string]interface{}{}\n\n\tfor k, v := range t.values {\n\t\tswitch node := v.(type) {\n\t\tcase []*Tree:\n\t\t\tvar array []interface{}\n\t\t\tfor _, item := range node {\n\t\t\t\tarray = append(array, item.ToMap())\n\t\t\t}\n\t\t\tresult[k] = array\n\t\tcase *Tree:\n\t\t\tresult[k] = node.ToMap()\n\t\tcase *tomlValue:\n\t\t\tresult[k] = tomlValueToGo(node.value)\n\t\t}\n\t}\n\treturn result\n}\n\nfunc tomlValueToGo(v interface{}) interface{} {\n\tif tree, ok := v.(*Tree); ok {\n\t\treturn tree.ToMap()\n\t}\n\n\trv := reflect.ValueOf(v)\n\n\tif rv.Kind() != reflect.Slice {\n\t\treturn v\n\t}\n\tvalues := make([]interface{}, rv.Len())\n\tfor i := 0; i < rv.Len(); i++ {\n\t\titem := rv.Index(i).Interface()\n\t\tvalues[i] = tomlValueToGo(item)\n\t}\n\treturn values\n}\n"
  },
  {
    "path": "tests/vendor/github.com/pelletier/go-toml/tomltree_writepub.go",
    "content": "package toml\n\n// ValueStringRepresentation transforms an interface{} value into its toml string representation.\nfunc ValueStringRepresentation(v interface{}, commented string, indent string, ord MarshalOrder, arraysOneElementPerLine bool) (string, error) {\n\treturn tomlValueStringRepresentation(v, commented, indent, ord, arraysOneElementPerLine)\n}\n"
  },
  {
    "path": "tests/vendor/go.yaml.in/yaml/v3/LICENSE",
    "content": "\nThis project is covered by two different licenses: MIT and Apache.\n\n#### MIT License ####\n\nThe following files were ported to Go from C files of libyaml, and thus\nare still covered by their original MIT license, with the additional\ncopyright staring in 2011 when the project was ported over:\n\n    apic.go emitterc.go parserc.go readerc.go scannerc.go\n    writerc.go yamlh.go yamlprivateh.go\n\nCopyright (c) 2006-2010 Kirill Simonov\nCopyright (c) 2006-2011 Kirill Simonov\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies 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 THE\nSOFTWARE.\n\n### Apache License ###\n\nAll the remaining project files are covered by the Apache license:\n\nCopyright (c) 2011-2019 Canonical Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n"
  },
  {
    "path": "tests/vendor/go.yaml.in/yaml/v3/NOTICE",
    "content": "Copyright 2011-2016 Canonical Ltd.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n"
  },
  {
    "path": "tests/vendor/go.yaml.in/yaml/v3/README.md",
    "content": "go.yaml.in/yaml\n===============\n\nYAML Support for the Go Language\n\n\n## Introduction\n\nThe `yaml` package enables [Go](https://go.dev/) programs to comfortably encode\nand decode [YAML](https://yaml.org/) values.\n\nIt was originally developed within [Canonical](https://www.canonical.com) as\npart of the [juju](https://juju.ubuntu.com) project, and is based on a pure Go\nport of the well-known [libyaml](http://pyyaml.org/wiki/LibYAML) C library to\nparse and generate YAML data quickly and reliably.\n\n\n## Project Status\n\nThis project started as a fork of the extremely popular [go-yaml](\nhttps://github.com/go-yaml/yaml/)\nproject, and is being maintained by the official [YAML organization](\nhttps://github.com/yaml/).\n\nThe YAML team took over ongoing maintenance and development of the project after\ndiscussion with go-yaml's author, @niemeyer, following his decision to\n[label the project repository as \"unmaintained\"](\nhttps://github.com/go-yaml/yaml/blob/944c86a7d2/README.md) in April 2025.\n\nWe have put together a team of dedicated maintainers including representatives\nof go-yaml's most important downstream projects.\n\nWe will strive to earn the trust of the various go-yaml forks to switch back to\nthis repository as their upstream.\n\nPlease [contact us](https://cloud-native.slack.com/archives/C08PPAT8PS7) if you\nwould like to contribute or be involved.\n\n\n## Compatibility\n\nThe `yaml` package supports most of YAML 1.2, but preserves some behavior from\n1.1 for backwards compatibility.\n\nSpecifically, v3 of the `yaml` package:\n\n* Supports YAML 1.1 bools (`yes`/`no`, `on`/`off`) as long as they are being\n  decoded into a typed bool value.\n  Otherwise they behave as a string.\n  Booleans in YAML 1.2 are `true`/`false` only.\n* Supports octals encoded and decoded as `0777` per YAML 1.1, rather than\n  `0o777` as specified in YAML 1.2, because most parsers still use the old\n  format.\n  Octals in the `0o777` format are supported though, so new files work.\n* Does not support base-60 floats.\n  These are gone from YAML 1.2, and were actually never supported by this\n  package as it's clearly a poor choice.\n\n\n## Installation and Usage\n\nThe import path for the package is *go.yaml.in/yaml/v3*.\n\nTo install it, run:\n\n```bash\ngo get go.yaml.in/yaml/v3\n```\n\n\n## API Documentation\n\nSee: <https://pkg.go.dev/go.yaml.in/yaml/v3>\n\n\n## API Stability\n\nThe package API for yaml v3 will remain stable as described in [gopkg.in](\nhttps://gopkg.in).\n\n\n## Example\n\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\t\"log\"\n\n\t\"go.yaml.in/yaml/v3\"\n)\n\nvar data = `\na: Easy!\nb:\n  c: 2\n  d: [3, 4]\n`\n\n// Note: struct fields must be public in order for unmarshal to\n// correctly populate the data.\ntype T struct {\n\tA string\n\tB struct {\n\t\tRenamedC int   `yaml:\"c\"`\n\t\tD\t[]int `yaml:\",flow\"`\n\t}\n}\n\nfunc main() {\n\tt := T{}\n\n\terr := yaml.Unmarshal([]byte(data), &t)\n\tif err != nil {\n\t\tlog.Fatalf(\"error: %v\", err)\n\t}\n\tfmt.Printf(\"--- t:\\n%v\\n\\n\", t)\n\n\td, err := yaml.Marshal(&t)\n\tif err != nil {\n\t\tlog.Fatalf(\"error: %v\", err)\n\t}\n\tfmt.Printf(\"--- t dump:\\n%s\\n\\n\", string(d))\n\n\tm := make(map[interface{}]interface{})\n\n\terr = yaml.Unmarshal([]byte(data), &m)\n\tif err != nil {\n\t\tlog.Fatalf(\"error: %v\", err)\n\t}\n\tfmt.Printf(\"--- m:\\n%v\\n\\n\", m)\n\n\td, err = yaml.Marshal(&m)\n\tif err != nil {\n\t\tlog.Fatalf(\"error: %v\", err)\n\t}\n\tfmt.Printf(\"--- m dump:\\n%s\\n\\n\", string(d))\n}\n```\n\nThis example will generate the following output:\n\n```\n--- t:\n{Easy! {2 [3 4]}}\n\n--- t dump:\na: Easy!\nb:\n  c: 2\n  d: [3, 4]\n\n\n--- m:\nmap[a:Easy! b:map[c:2 d:[3 4]]]\n\n--- m dump:\na: Easy!\nb:\n  c: 2\n  d:\n  - 3\n  - 4\n```\n\n\n## License\n\nThe yaml package is licensed under the MIT and Apache License 2.0 licenses.\nPlease see the LICENSE file for details.\n"
  },
  {
    "path": "tests/vendor/go.yaml.in/yaml/v3/apic.go",
    "content": "//\n// Copyright (c) 2011-2019 Canonical Ltd\n// Copyright (c) 2006-2010 Kirill Simonov\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.\n\npackage yaml\n\nimport (\n\t\"io\"\n)\n\nfunc yaml_insert_token(parser *yaml_parser_t, pos int, token *yaml_token_t) {\n\t//fmt.Println(\"yaml_insert_token\", \"pos:\", pos, \"typ:\", token.typ, \"head:\", parser.tokens_head, \"len:\", len(parser.tokens))\n\n\t// Check if we can move the queue at the beginning of the buffer.\n\tif parser.tokens_head > 0 && len(parser.tokens) == cap(parser.tokens) {\n\t\tif parser.tokens_head != len(parser.tokens) {\n\t\t\tcopy(parser.tokens, parser.tokens[parser.tokens_head:])\n\t\t}\n\t\tparser.tokens = parser.tokens[:len(parser.tokens)-parser.tokens_head]\n\t\tparser.tokens_head = 0\n\t}\n\tparser.tokens = append(parser.tokens, *token)\n\tif pos < 0 {\n\t\treturn\n\t}\n\tcopy(parser.tokens[parser.tokens_head+pos+1:], parser.tokens[parser.tokens_head+pos:])\n\tparser.tokens[parser.tokens_head+pos] = *token\n}\n\n// Create a new parser object.\nfunc yaml_parser_initialize(parser *yaml_parser_t) bool {\n\t*parser = yaml_parser_t{\n\t\traw_buffer: make([]byte, 0, input_raw_buffer_size),\n\t\tbuffer:     make([]byte, 0, input_buffer_size),\n\t}\n\treturn true\n}\n\n// Destroy a parser object.\nfunc yaml_parser_delete(parser *yaml_parser_t) {\n\t*parser = yaml_parser_t{}\n}\n\n// String read handler.\nfunc yaml_string_read_handler(parser *yaml_parser_t, buffer []byte) (n int, err error) {\n\tif parser.input_pos == len(parser.input) {\n\t\treturn 0, io.EOF\n\t}\n\tn = copy(buffer, parser.input[parser.input_pos:])\n\tparser.input_pos += n\n\treturn n, nil\n}\n\n// Reader read handler.\nfunc yaml_reader_read_handler(parser *yaml_parser_t, buffer []byte) (n int, err error) {\n\treturn parser.input_reader.Read(buffer)\n}\n\n// Set a string input.\nfunc yaml_parser_set_input_string(parser *yaml_parser_t, input []byte) {\n\tif parser.read_handler != nil {\n\t\tpanic(\"must set the input source only once\")\n\t}\n\tparser.read_handler = yaml_string_read_handler\n\tparser.input = input\n\tparser.input_pos = 0\n}\n\n// Set a file input.\nfunc yaml_parser_set_input_reader(parser *yaml_parser_t, r io.Reader) {\n\tif parser.read_handler != nil {\n\t\tpanic(\"must set the input source only once\")\n\t}\n\tparser.read_handler = yaml_reader_read_handler\n\tparser.input_reader = r\n}\n\n// Set the source encoding.\nfunc yaml_parser_set_encoding(parser *yaml_parser_t, encoding yaml_encoding_t) {\n\tif parser.encoding != yaml_ANY_ENCODING {\n\t\tpanic(\"must set the encoding only once\")\n\t}\n\tparser.encoding = encoding\n}\n\n// Create a new emitter object.\nfunc yaml_emitter_initialize(emitter *yaml_emitter_t) {\n\t*emitter = yaml_emitter_t{\n\t\tbuffer:     make([]byte, output_buffer_size),\n\t\traw_buffer: make([]byte, 0, output_raw_buffer_size),\n\t\tstates:     make([]yaml_emitter_state_t, 0, initial_stack_size),\n\t\tevents:     make([]yaml_event_t, 0, initial_queue_size),\n\t\tbest_width: -1,\n\t}\n}\n\n// Destroy an emitter object.\nfunc yaml_emitter_delete(emitter *yaml_emitter_t) {\n\t*emitter = yaml_emitter_t{}\n}\n\n// String write handler.\nfunc yaml_string_write_handler(emitter *yaml_emitter_t, buffer []byte) error {\n\t*emitter.output_buffer = append(*emitter.output_buffer, buffer...)\n\treturn nil\n}\n\n// yaml_writer_write_handler uses emitter.output_writer to write the\n// emitted text.\nfunc yaml_writer_write_handler(emitter *yaml_emitter_t, buffer []byte) error {\n\t_, err := emitter.output_writer.Write(buffer)\n\treturn err\n}\n\n// Set a string output.\nfunc yaml_emitter_set_output_string(emitter *yaml_emitter_t, output_buffer *[]byte) {\n\tif emitter.write_handler != nil {\n\t\tpanic(\"must set the output target only once\")\n\t}\n\temitter.write_handler = yaml_string_write_handler\n\temitter.output_buffer = output_buffer\n}\n\n// Set a file output.\nfunc yaml_emitter_set_output_writer(emitter *yaml_emitter_t, w io.Writer) {\n\tif emitter.write_handler != nil {\n\t\tpanic(\"must set the output target only once\")\n\t}\n\temitter.write_handler = yaml_writer_write_handler\n\temitter.output_writer = w\n}\n\n// Set the output encoding.\nfunc yaml_emitter_set_encoding(emitter *yaml_emitter_t, encoding yaml_encoding_t) {\n\tif emitter.encoding != yaml_ANY_ENCODING {\n\t\tpanic(\"must set the output encoding only once\")\n\t}\n\temitter.encoding = encoding\n}\n\n// Set the canonical output style.\nfunc yaml_emitter_set_canonical(emitter *yaml_emitter_t, canonical bool) {\n\temitter.canonical = canonical\n}\n\n// Set the indentation increment.\nfunc yaml_emitter_set_indent(emitter *yaml_emitter_t, indent int) {\n\tif indent < 2 || indent > 9 {\n\t\tindent = 2\n\t}\n\temitter.best_indent = indent\n}\n\n// Set the preferred line width.\nfunc yaml_emitter_set_width(emitter *yaml_emitter_t, width int) {\n\tif width < 0 {\n\t\twidth = -1\n\t}\n\temitter.best_width = width\n}\n\n// Set if unescaped non-ASCII characters are allowed.\nfunc yaml_emitter_set_unicode(emitter *yaml_emitter_t, unicode bool) {\n\temitter.unicode = unicode\n}\n\n// Set the preferred line break character.\nfunc yaml_emitter_set_break(emitter *yaml_emitter_t, line_break yaml_break_t) {\n\temitter.line_break = line_break\n}\n\n///*\n// * Destroy a token object.\n// */\n//\n//YAML_DECLARE(void)\n//yaml_token_delete(yaml_token_t *token)\n//{\n//    assert(token);  // Non-NULL token object expected.\n//\n//    switch (token.type)\n//    {\n//        case YAML_TAG_DIRECTIVE_TOKEN:\n//            yaml_free(token.data.tag_directive.handle);\n//            yaml_free(token.data.tag_directive.prefix);\n//            break;\n//\n//        case YAML_ALIAS_TOKEN:\n//            yaml_free(token.data.alias.value);\n//            break;\n//\n//        case YAML_ANCHOR_TOKEN:\n//            yaml_free(token.data.anchor.value);\n//            break;\n//\n//        case YAML_TAG_TOKEN:\n//            yaml_free(token.data.tag.handle);\n//            yaml_free(token.data.tag.suffix);\n//            break;\n//\n//        case YAML_SCALAR_TOKEN:\n//            yaml_free(token.data.scalar.value);\n//            break;\n//\n//        default:\n//            break;\n//    }\n//\n//    memset(token, 0, sizeof(yaml_token_t));\n//}\n//\n///*\n// * Check if a string is a valid UTF-8 sequence.\n// *\n// * Check 'reader.c' for more details on UTF-8 encoding.\n// */\n//\n//static int\n//yaml_check_utf8(yaml_char_t *start, size_t length)\n//{\n//    yaml_char_t *end = start+length;\n//    yaml_char_t *pointer = start;\n//\n//    while (pointer < end) {\n//        unsigned char octet;\n//        unsigned int width;\n//        unsigned int value;\n//        size_t k;\n//\n//        octet = pointer[0];\n//        width = (octet & 0x80) == 0x00 ? 1 :\n//                (octet & 0xE0) == 0xC0 ? 2 :\n//                (octet & 0xF0) == 0xE0 ? 3 :\n//                (octet & 0xF8) == 0xF0 ? 4 : 0;\n//        value = (octet & 0x80) == 0x00 ? octet & 0x7F :\n//                (octet & 0xE0) == 0xC0 ? octet & 0x1F :\n//                (octet & 0xF0) == 0xE0 ? octet & 0x0F :\n//                (octet & 0xF8) == 0xF0 ? octet & 0x07 : 0;\n//        if (!width) return 0;\n//        if (pointer+width > end) return 0;\n//        for (k = 1; k < width; k ++) {\n//            octet = pointer[k];\n//            if ((octet & 0xC0) != 0x80) return 0;\n//            value = (value << 6) + (octet & 0x3F);\n//        }\n//        if (!((width == 1) ||\n//            (width == 2 && value >= 0x80) ||\n//            (width == 3 && value >= 0x800) ||\n//            (width == 4 && value >= 0x10000))) return 0;\n//\n//        pointer += width;\n//    }\n//\n//    return 1;\n//}\n//\n\n// Create STREAM-START.\nfunc yaml_stream_start_event_initialize(event *yaml_event_t, encoding yaml_encoding_t) {\n\t*event = yaml_event_t{\n\t\ttyp:      yaml_STREAM_START_EVENT,\n\t\tencoding: encoding,\n\t}\n}\n\n// Create STREAM-END.\nfunc yaml_stream_end_event_initialize(event *yaml_event_t) {\n\t*event = yaml_event_t{\n\t\ttyp: yaml_STREAM_END_EVENT,\n\t}\n}\n\n// Create DOCUMENT-START.\nfunc yaml_document_start_event_initialize(\n\tevent *yaml_event_t,\n\tversion_directive *yaml_version_directive_t,\n\ttag_directives []yaml_tag_directive_t,\n\timplicit bool,\n) {\n\t*event = yaml_event_t{\n\t\ttyp:               yaml_DOCUMENT_START_EVENT,\n\t\tversion_directive: version_directive,\n\t\ttag_directives:    tag_directives,\n\t\timplicit:          implicit,\n\t}\n}\n\n// Create DOCUMENT-END.\nfunc yaml_document_end_event_initialize(event *yaml_event_t, implicit bool) {\n\t*event = yaml_event_t{\n\t\ttyp:      yaml_DOCUMENT_END_EVENT,\n\t\timplicit: implicit,\n\t}\n}\n\n// Create ALIAS.\nfunc yaml_alias_event_initialize(event *yaml_event_t, anchor []byte) bool {\n\t*event = yaml_event_t{\n\t\ttyp:    yaml_ALIAS_EVENT,\n\t\tanchor: anchor,\n\t}\n\treturn true\n}\n\n// Create SCALAR.\nfunc yaml_scalar_event_initialize(event *yaml_event_t, anchor, tag, value []byte, plain_implicit, quoted_implicit bool, style yaml_scalar_style_t) bool {\n\t*event = yaml_event_t{\n\t\ttyp:             yaml_SCALAR_EVENT,\n\t\tanchor:          anchor,\n\t\ttag:             tag,\n\t\tvalue:           value,\n\t\timplicit:        plain_implicit,\n\t\tquoted_implicit: quoted_implicit,\n\t\tstyle:           yaml_style_t(style),\n\t}\n\treturn true\n}\n\n// Create SEQUENCE-START.\nfunc yaml_sequence_start_event_initialize(event *yaml_event_t, anchor, tag []byte, implicit bool, style yaml_sequence_style_t) bool {\n\t*event = yaml_event_t{\n\t\ttyp:      yaml_SEQUENCE_START_EVENT,\n\t\tanchor:   anchor,\n\t\ttag:      tag,\n\t\timplicit: implicit,\n\t\tstyle:    yaml_style_t(style),\n\t}\n\treturn true\n}\n\n// Create SEQUENCE-END.\nfunc yaml_sequence_end_event_initialize(event *yaml_event_t) bool {\n\t*event = yaml_event_t{\n\t\ttyp: yaml_SEQUENCE_END_EVENT,\n\t}\n\treturn true\n}\n\n// Create MAPPING-START.\nfunc yaml_mapping_start_event_initialize(event *yaml_event_t, anchor, tag []byte, implicit bool, style yaml_mapping_style_t) {\n\t*event = yaml_event_t{\n\t\ttyp:      yaml_MAPPING_START_EVENT,\n\t\tanchor:   anchor,\n\t\ttag:      tag,\n\t\timplicit: implicit,\n\t\tstyle:    yaml_style_t(style),\n\t}\n}\n\n// Create MAPPING-END.\nfunc yaml_mapping_end_event_initialize(event *yaml_event_t) {\n\t*event = yaml_event_t{\n\t\ttyp: yaml_MAPPING_END_EVENT,\n\t}\n}\n\n// Destroy an event object.\nfunc yaml_event_delete(event *yaml_event_t) {\n\t*event = yaml_event_t{}\n}\n\n///*\n// * Create a document object.\n// */\n//\n//YAML_DECLARE(int)\n//yaml_document_initialize(document *yaml_document_t,\n//        version_directive *yaml_version_directive_t,\n//        tag_directives_start *yaml_tag_directive_t,\n//        tag_directives_end *yaml_tag_directive_t,\n//        start_implicit int, end_implicit int)\n//{\n//    struct {\n//        error yaml_error_type_t\n//    } context\n//    struct {\n//        start *yaml_node_t\n//        end *yaml_node_t\n//        top *yaml_node_t\n//    } nodes = { NULL, NULL, NULL }\n//    version_directive_copy *yaml_version_directive_t = NULL\n//    struct {\n//        start *yaml_tag_directive_t\n//        end *yaml_tag_directive_t\n//        top *yaml_tag_directive_t\n//    } tag_directives_copy = { NULL, NULL, NULL }\n//    value yaml_tag_directive_t = { NULL, NULL }\n//    mark yaml_mark_t = { 0, 0, 0 }\n//\n//    assert(document) // Non-NULL document object is expected.\n//    assert((tag_directives_start && tag_directives_end) ||\n//            (tag_directives_start == tag_directives_end))\n//                            // Valid tag directives are expected.\n//\n//    if (!STACK_INIT(&context, nodes, INITIAL_STACK_SIZE)) goto error\n//\n//    if (version_directive) {\n//        version_directive_copy = yaml_malloc(sizeof(yaml_version_directive_t))\n//        if (!version_directive_copy) goto error\n//        version_directive_copy.major = version_directive.major\n//        version_directive_copy.minor = version_directive.minor\n//    }\n//\n//    if (tag_directives_start != tag_directives_end) {\n//        tag_directive *yaml_tag_directive_t\n//        if (!STACK_INIT(&context, tag_directives_copy, INITIAL_STACK_SIZE))\n//            goto error\n//        for (tag_directive = tag_directives_start\n//                tag_directive != tag_directives_end; tag_directive ++) {\n//            assert(tag_directive.handle)\n//            assert(tag_directive.prefix)\n//            if (!yaml_check_utf8(tag_directive.handle,\n//                        strlen((char *)tag_directive.handle)))\n//                goto error\n//            if (!yaml_check_utf8(tag_directive.prefix,\n//                        strlen((char *)tag_directive.prefix)))\n//                goto error\n//            value.handle = yaml_strdup(tag_directive.handle)\n//            value.prefix = yaml_strdup(tag_directive.prefix)\n//            if (!value.handle || !value.prefix) goto error\n//            if (!PUSH(&context, tag_directives_copy, value))\n//                goto error\n//            value.handle = NULL\n//            value.prefix = NULL\n//        }\n//    }\n//\n//    DOCUMENT_INIT(*document, nodes.start, nodes.end, version_directive_copy,\n//            tag_directives_copy.start, tag_directives_copy.top,\n//            start_implicit, end_implicit, mark, mark)\n//\n//    return 1\n//\n//error:\n//    STACK_DEL(&context, nodes)\n//    yaml_free(version_directive_copy)\n//    while (!STACK_EMPTY(&context, tag_directives_copy)) {\n//        value yaml_tag_directive_t = POP(&context, tag_directives_copy)\n//        yaml_free(value.handle)\n//        yaml_free(value.prefix)\n//    }\n//    STACK_DEL(&context, tag_directives_copy)\n//    yaml_free(value.handle)\n//    yaml_free(value.prefix)\n//\n//    return 0\n//}\n//\n///*\n// * Destroy a document object.\n// */\n//\n//YAML_DECLARE(void)\n//yaml_document_delete(document *yaml_document_t)\n//{\n//    struct {\n//        error yaml_error_type_t\n//    } context\n//    tag_directive *yaml_tag_directive_t\n//\n//    context.error = YAML_NO_ERROR // Eliminate a compiler warning.\n//\n//    assert(document) // Non-NULL document object is expected.\n//\n//    while (!STACK_EMPTY(&context, document.nodes)) {\n//        node yaml_node_t = POP(&context, document.nodes)\n//        yaml_free(node.tag)\n//        switch (node.type) {\n//            case YAML_SCALAR_NODE:\n//                yaml_free(node.data.scalar.value)\n//                break\n//            case YAML_SEQUENCE_NODE:\n//                STACK_DEL(&context, node.data.sequence.items)\n//                break\n//            case YAML_MAPPING_NODE:\n//                STACK_DEL(&context, node.data.mapping.pairs)\n//                break\n//            default:\n//                assert(0) // Should not happen.\n//        }\n//    }\n//    STACK_DEL(&context, document.nodes)\n//\n//    yaml_free(document.version_directive)\n//    for (tag_directive = document.tag_directives.start\n//            tag_directive != document.tag_directives.end\n//            tag_directive++) {\n//        yaml_free(tag_directive.handle)\n//        yaml_free(tag_directive.prefix)\n//    }\n//    yaml_free(document.tag_directives.start)\n//\n//    memset(document, 0, sizeof(yaml_document_t))\n//}\n//\n///**\n// * Get a document node.\n// */\n//\n//YAML_DECLARE(yaml_node_t *)\n//yaml_document_get_node(document *yaml_document_t, index int)\n//{\n//    assert(document) // Non-NULL document object is expected.\n//\n//    if (index > 0 && document.nodes.start + index <= document.nodes.top) {\n//        return document.nodes.start + index - 1\n//    }\n//    return NULL\n//}\n//\n///**\n// * Get the root object.\n// */\n//\n//YAML_DECLARE(yaml_node_t *)\n//yaml_document_get_root_node(document *yaml_document_t)\n//{\n//    assert(document) // Non-NULL document object is expected.\n//\n//    if (document.nodes.top != document.nodes.start) {\n//        return document.nodes.start\n//    }\n//    return NULL\n//}\n//\n///*\n// * Add a scalar node to a document.\n// */\n//\n//YAML_DECLARE(int)\n//yaml_document_add_scalar(document *yaml_document_t,\n//        tag *yaml_char_t, value *yaml_char_t, length int,\n//        style yaml_scalar_style_t)\n//{\n//    struct {\n//        error yaml_error_type_t\n//    } context\n//    mark yaml_mark_t = { 0, 0, 0 }\n//    tag_copy *yaml_char_t = NULL\n//    value_copy *yaml_char_t = NULL\n//    node yaml_node_t\n//\n//    assert(document) // Non-NULL document object is expected.\n//    assert(value) // Non-NULL value is expected.\n//\n//    if (!tag) {\n//        tag = (yaml_char_t *)YAML_DEFAULT_SCALAR_TAG\n//    }\n//\n//    if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error\n//    tag_copy = yaml_strdup(tag)\n//    if (!tag_copy) goto error\n//\n//    if (length < 0) {\n//        length = strlen((char *)value)\n//    }\n//\n//    if (!yaml_check_utf8(value, length)) goto error\n//    value_copy = yaml_malloc(length+1)\n//    if (!value_copy) goto error\n//    memcpy(value_copy, value, length)\n//    value_copy[length] = '\\0'\n//\n//    SCALAR_NODE_INIT(node, tag_copy, value_copy, length, style, mark, mark)\n//    if (!PUSH(&context, document.nodes, node)) goto error\n//\n//    return document.nodes.top - document.nodes.start\n//\n//error:\n//    yaml_free(tag_copy)\n//    yaml_free(value_copy)\n//\n//    return 0\n//}\n//\n///*\n// * Add a sequence node to a document.\n// */\n//\n//YAML_DECLARE(int)\n//yaml_document_add_sequence(document *yaml_document_t,\n//        tag *yaml_char_t, style yaml_sequence_style_t)\n//{\n//    struct {\n//        error yaml_error_type_t\n//    } context\n//    mark yaml_mark_t = { 0, 0, 0 }\n//    tag_copy *yaml_char_t = NULL\n//    struct {\n//        start *yaml_node_item_t\n//        end *yaml_node_item_t\n//        top *yaml_node_item_t\n//    } items = { NULL, NULL, NULL }\n//    node yaml_node_t\n//\n//    assert(document) // Non-NULL document object is expected.\n//\n//    if (!tag) {\n//        tag = (yaml_char_t *)YAML_DEFAULT_SEQUENCE_TAG\n//    }\n//\n//    if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error\n//    tag_copy = yaml_strdup(tag)\n//    if (!tag_copy) goto error\n//\n//    if (!STACK_INIT(&context, items, INITIAL_STACK_SIZE)) goto error\n//\n//    SEQUENCE_NODE_INIT(node, tag_copy, items.start, items.end,\n//            style, mark, mark)\n//    if (!PUSH(&context, document.nodes, node)) goto error\n//\n//    return document.nodes.top - document.nodes.start\n//\n//error:\n//    STACK_DEL(&context, items)\n//    yaml_free(tag_copy)\n//\n//    return 0\n//}\n//\n///*\n// * Add a mapping node to a document.\n// */\n//\n//YAML_DECLARE(int)\n//yaml_document_add_mapping(document *yaml_document_t,\n//        tag *yaml_char_t, style yaml_mapping_style_t)\n//{\n//    struct {\n//        error yaml_error_type_t\n//    } context\n//    mark yaml_mark_t = { 0, 0, 0 }\n//    tag_copy *yaml_char_t = NULL\n//    struct {\n//        start *yaml_node_pair_t\n//        end *yaml_node_pair_t\n//        top *yaml_node_pair_t\n//    } pairs = { NULL, NULL, NULL }\n//    node yaml_node_t\n//\n//    assert(document) // Non-NULL document object is expected.\n//\n//    if (!tag) {\n//        tag = (yaml_char_t *)YAML_DEFAULT_MAPPING_TAG\n//    }\n//\n//    if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error\n//    tag_copy = yaml_strdup(tag)\n//    if (!tag_copy) goto error\n//\n//    if (!STACK_INIT(&context, pairs, INITIAL_STACK_SIZE)) goto error\n//\n//    MAPPING_NODE_INIT(node, tag_copy, pairs.start, pairs.end,\n//            style, mark, mark)\n//    if (!PUSH(&context, document.nodes, node)) goto error\n//\n//    return document.nodes.top - document.nodes.start\n//\n//error:\n//    STACK_DEL(&context, pairs)\n//    yaml_free(tag_copy)\n//\n//    return 0\n//}\n//\n///*\n// * Append an item to a sequence node.\n// */\n//\n//YAML_DECLARE(int)\n//yaml_document_append_sequence_item(document *yaml_document_t,\n//        sequence int, item int)\n//{\n//    struct {\n//        error yaml_error_type_t\n//    } context\n//\n//    assert(document) // Non-NULL document is required.\n//    assert(sequence > 0\n//            && document.nodes.start + sequence <= document.nodes.top)\n//                            // Valid sequence id is required.\n//    assert(document.nodes.start[sequence-1].type == YAML_SEQUENCE_NODE)\n//                            // A sequence node is required.\n//    assert(item > 0 && document.nodes.start + item <= document.nodes.top)\n//                            // Valid item id is required.\n//\n//    if (!PUSH(&context,\n//                document.nodes.start[sequence-1].data.sequence.items, item))\n//        return 0\n//\n//    return 1\n//}\n//\n///*\n// * Append a pair of a key and a value to a mapping node.\n// */\n//\n//YAML_DECLARE(int)\n//yaml_document_append_mapping_pair(document *yaml_document_t,\n//        mapping int, key int, value int)\n//{\n//    struct {\n//        error yaml_error_type_t\n//    } context\n//\n//    pair yaml_node_pair_t\n//\n//    assert(document) // Non-NULL document is required.\n//    assert(mapping > 0\n//            && document.nodes.start + mapping <= document.nodes.top)\n//                            // Valid mapping id is required.\n//    assert(document.nodes.start[mapping-1].type == YAML_MAPPING_NODE)\n//                            // A mapping node is required.\n//    assert(key > 0 && document.nodes.start + key <= document.nodes.top)\n//                            // Valid key id is required.\n//    assert(value > 0 && document.nodes.start + value <= document.nodes.top)\n//                            // Valid value id is required.\n//\n//    pair.key = key\n//    pair.value = value\n//\n//    if (!PUSH(&context,\n//                document.nodes.start[mapping-1].data.mapping.pairs, pair))\n//        return 0\n//\n//    return 1\n//}\n//\n//\n"
  },
  {
    "path": "tests/vendor/go.yaml.in/yaml/v3/decode.go",
    "content": "//\n// Copyright (c) 2011-2019 Canonical Ltd\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage yaml\n\nimport (\n\t\"encoding\"\n\t\"encoding/base64\"\n\t\"fmt\"\n\t\"io\"\n\t\"math\"\n\t\"reflect\"\n\t\"strconv\"\n\t\"time\"\n)\n\n// ----------------------------------------------------------------------------\n// Parser, produces a node tree out of a libyaml event stream.\n\ntype parser struct {\n\tparser   yaml_parser_t\n\tevent    yaml_event_t\n\tdoc      *Node\n\tanchors  map[string]*Node\n\tdoneInit bool\n\ttextless bool\n}\n\nfunc newParser(b []byte) *parser {\n\tp := parser{}\n\tif !yaml_parser_initialize(&p.parser) {\n\t\tpanic(\"failed to initialize YAML emitter\")\n\t}\n\tif len(b) == 0 {\n\t\tb = []byte{'\\n'}\n\t}\n\tyaml_parser_set_input_string(&p.parser, b)\n\treturn &p\n}\n\nfunc newParserFromReader(r io.Reader) *parser {\n\tp := parser{}\n\tif !yaml_parser_initialize(&p.parser) {\n\t\tpanic(\"failed to initialize YAML emitter\")\n\t}\n\tyaml_parser_set_input_reader(&p.parser, r)\n\treturn &p\n}\n\nfunc (p *parser) init() {\n\tif p.doneInit {\n\t\treturn\n\t}\n\tp.anchors = make(map[string]*Node)\n\tp.expect(yaml_STREAM_START_EVENT)\n\tp.doneInit = true\n}\n\nfunc (p *parser) destroy() {\n\tif p.event.typ != yaml_NO_EVENT {\n\t\tyaml_event_delete(&p.event)\n\t}\n\tyaml_parser_delete(&p.parser)\n}\n\n// expect consumes an event from the event stream and\n// checks that it's of the expected type.\nfunc (p *parser) expect(e yaml_event_type_t) {\n\tif p.event.typ == yaml_NO_EVENT {\n\t\tif !yaml_parser_parse(&p.parser, &p.event) {\n\t\t\tp.fail()\n\t\t}\n\t}\n\tif p.event.typ == yaml_STREAM_END_EVENT {\n\t\tfailf(\"attempted to go past the end of stream; corrupted value?\")\n\t}\n\tif p.event.typ != e {\n\t\tp.parser.problem = fmt.Sprintf(\"expected %s event but got %s\", e, p.event.typ)\n\t\tp.fail()\n\t}\n\tyaml_event_delete(&p.event)\n\tp.event.typ = yaml_NO_EVENT\n}\n\n// peek peeks at the next event in the event stream,\n// puts the results into p.event and returns the event type.\nfunc (p *parser) peek() yaml_event_type_t {\n\tif p.event.typ != yaml_NO_EVENT {\n\t\treturn p.event.typ\n\t}\n\t// It's curious choice from the underlying API to generally return a\n\t// positive result on success, but on this case return true in an error\n\t// scenario. This was the source of bugs in the past (issue #666).\n\tif !yaml_parser_parse(&p.parser, &p.event) || p.parser.error != yaml_NO_ERROR {\n\t\tp.fail()\n\t}\n\treturn p.event.typ\n}\n\nfunc (p *parser) fail() {\n\tvar where string\n\tvar line int\n\tif p.parser.context_mark.line != 0 {\n\t\tline = p.parser.context_mark.line\n\t\t// Scanner errors don't iterate line before returning error\n\t\tif p.parser.error == yaml_SCANNER_ERROR {\n\t\t\tline++\n\t\t}\n\t} else if p.parser.problem_mark.line != 0 {\n\t\tline = p.parser.problem_mark.line\n\t\t// Scanner errors don't iterate line before returning error\n\t\tif p.parser.error == yaml_SCANNER_ERROR {\n\t\t\tline++\n\t\t}\n\t}\n\tif line != 0 {\n\t\twhere = \"line \" + strconv.Itoa(line) + \": \"\n\t}\n\tvar msg string\n\tif len(p.parser.problem) > 0 {\n\t\tmsg = p.parser.problem\n\t} else {\n\t\tmsg = \"unknown problem parsing YAML content\"\n\t}\n\tfailf(\"%s%s\", where, msg)\n}\n\nfunc (p *parser) anchor(n *Node, anchor []byte) {\n\tif anchor != nil {\n\t\tn.Anchor = string(anchor)\n\t\tp.anchors[n.Anchor] = n\n\t}\n}\n\nfunc (p *parser) parse() *Node {\n\tp.init()\n\tswitch p.peek() {\n\tcase yaml_SCALAR_EVENT:\n\t\treturn p.scalar()\n\tcase yaml_ALIAS_EVENT:\n\t\treturn p.alias()\n\tcase yaml_MAPPING_START_EVENT:\n\t\treturn p.mapping()\n\tcase yaml_SEQUENCE_START_EVENT:\n\t\treturn p.sequence()\n\tcase yaml_DOCUMENT_START_EVENT:\n\t\treturn p.document()\n\tcase yaml_STREAM_END_EVENT:\n\t\t// Happens when attempting to decode an empty buffer.\n\t\treturn nil\n\tcase yaml_TAIL_COMMENT_EVENT:\n\t\tpanic(\"internal error: unexpected tail comment event (please report)\")\n\tdefault:\n\t\tpanic(\"internal error: attempted to parse unknown event (please report): \" + p.event.typ.String())\n\t}\n}\n\nfunc (p *parser) node(kind Kind, defaultTag, tag, value string) *Node {\n\tvar style Style\n\tif tag != \"\" && tag != \"!\" {\n\t\ttag = shortTag(tag)\n\t\tstyle = TaggedStyle\n\t} else if defaultTag != \"\" {\n\t\ttag = defaultTag\n\t} else if kind == ScalarNode {\n\t\ttag, _ = resolve(\"\", value)\n\t}\n\tn := &Node{\n\t\tKind:  kind,\n\t\tTag:   tag,\n\t\tValue: value,\n\t\tStyle: style,\n\t}\n\tif !p.textless {\n\t\tn.Line = p.event.start_mark.line + 1\n\t\tn.Column = p.event.start_mark.column + 1\n\t\tn.HeadComment = string(p.event.head_comment)\n\t\tn.LineComment = string(p.event.line_comment)\n\t\tn.FootComment = string(p.event.foot_comment)\n\t}\n\treturn n\n}\n\nfunc (p *parser) parseChild(parent *Node) *Node {\n\tchild := p.parse()\n\tparent.Content = append(parent.Content, child)\n\treturn child\n}\n\nfunc (p *parser) document() *Node {\n\tn := p.node(DocumentNode, \"\", \"\", \"\")\n\tp.doc = n\n\tp.expect(yaml_DOCUMENT_START_EVENT)\n\tp.parseChild(n)\n\tif p.peek() == yaml_DOCUMENT_END_EVENT {\n\t\tn.FootComment = string(p.event.foot_comment)\n\t}\n\tp.expect(yaml_DOCUMENT_END_EVENT)\n\treturn n\n}\n\nfunc (p *parser) alias() *Node {\n\tn := p.node(AliasNode, \"\", \"\", string(p.event.anchor))\n\tn.Alias = p.anchors[n.Value]\n\tif n.Alias == nil {\n\t\tfailf(\"unknown anchor '%s' referenced\", n.Value)\n\t}\n\tp.expect(yaml_ALIAS_EVENT)\n\treturn n\n}\n\nfunc (p *parser) scalar() *Node {\n\tvar parsedStyle = p.event.scalar_style()\n\tvar nodeStyle Style\n\tswitch {\n\tcase parsedStyle&yaml_DOUBLE_QUOTED_SCALAR_STYLE != 0:\n\t\tnodeStyle = DoubleQuotedStyle\n\tcase parsedStyle&yaml_SINGLE_QUOTED_SCALAR_STYLE != 0:\n\t\tnodeStyle = SingleQuotedStyle\n\tcase parsedStyle&yaml_LITERAL_SCALAR_STYLE != 0:\n\t\tnodeStyle = LiteralStyle\n\tcase parsedStyle&yaml_FOLDED_SCALAR_STYLE != 0:\n\t\tnodeStyle = FoldedStyle\n\t}\n\tvar nodeValue = string(p.event.value)\n\tvar nodeTag = string(p.event.tag)\n\tvar defaultTag string\n\tif nodeStyle == 0 {\n\t\tif nodeValue == \"<<\" {\n\t\t\tdefaultTag = mergeTag\n\t\t}\n\t} else {\n\t\tdefaultTag = strTag\n\t}\n\tn := p.node(ScalarNode, defaultTag, nodeTag, nodeValue)\n\tn.Style |= nodeStyle\n\tp.anchor(n, p.event.anchor)\n\tp.expect(yaml_SCALAR_EVENT)\n\treturn n\n}\n\nfunc (p *parser) sequence() *Node {\n\tn := p.node(SequenceNode, seqTag, string(p.event.tag), \"\")\n\tif p.event.sequence_style()&yaml_FLOW_SEQUENCE_STYLE != 0 {\n\t\tn.Style |= FlowStyle\n\t}\n\tp.anchor(n, p.event.anchor)\n\tp.expect(yaml_SEQUENCE_START_EVENT)\n\tfor p.peek() != yaml_SEQUENCE_END_EVENT {\n\t\tp.parseChild(n)\n\t}\n\tn.LineComment = string(p.event.line_comment)\n\tn.FootComment = string(p.event.foot_comment)\n\tp.expect(yaml_SEQUENCE_END_EVENT)\n\treturn n\n}\n\nfunc (p *parser) mapping() *Node {\n\tn := p.node(MappingNode, mapTag, string(p.event.tag), \"\")\n\tblock := true\n\tif p.event.mapping_style()&yaml_FLOW_MAPPING_STYLE != 0 {\n\t\tblock = false\n\t\tn.Style |= FlowStyle\n\t}\n\tp.anchor(n, p.event.anchor)\n\tp.expect(yaml_MAPPING_START_EVENT)\n\tfor p.peek() != yaml_MAPPING_END_EVENT {\n\t\tk := p.parseChild(n)\n\t\tif block && k.FootComment != \"\" {\n\t\t\t// Must be a foot comment for the prior value when being dedented.\n\t\t\tif len(n.Content) > 2 {\n\t\t\t\tn.Content[len(n.Content)-3].FootComment = k.FootComment\n\t\t\t\tk.FootComment = \"\"\n\t\t\t}\n\t\t}\n\t\tv := p.parseChild(n)\n\t\tif k.FootComment == \"\" && v.FootComment != \"\" {\n\t\t\tk.FootComment = v.FootComment\n\t\t\tv.FootComment = \"\"\n\t\t}\n\t\tif p.peek() == yaml_TAIL_COMMENT_EVENT {\n\t\t\tif k.FootComment == \"\" {\n\t\t\t\tk.FootComment = string(p.event.foot_comment)\n\t\t\t}\n\t\t\tp.expect(yaml_TAIL_COMMENT_EVENT)\n\t\t}\n\t}\n\tn.LineComment = string(p.event.line_comment)\n\tn.FootComment = string(p.event.foot_comment)\n\tif n.Style&FlowStyle == 0 && n.FootComment != \"\" && len(n.Content) > 1 {\n\t\tn.Content[len(n.Content)-2].FootComment = n.FootComment\n\t\tn.FootComment = \"\"\n\t}\n\tp.expect(yaml_MAPPING_END_EVENT)\n\treturn n\n}\n\n// ----------------------------------------------------------------------------\n// Decoder, unmarshals a node into a provided value.\n\ntype decoder struct {\n\tdoc     *Node\n\taliases map[*Node]bool\n\tterrors []string\n\n\tstringMapType  reflect.Type\n\tgeneralMapType reflect.Type\n\n\tknownFields bool\n\tuniqueKeys  bool\n\tdecodeCount int\n\taliasCount  int\n\taliasDepth  int\n\n\tmergedFields map[interface{}]bool\n}\n\nvar (\n\tnodeType       = reflect.TypeOf(Node{})\n\tdurationType   = reflect.TypeOf(time.Duration(0))\n\tstringMapType  = reflect.TypeOf(map[string]interface{}{})\n\tgeneralMapType = reflect.TypeOf(map[interface{}]interface{}{})\n\tifaceType      = generalMapType.Elem()\n\ttimeType       = reflect.TypeOf(time.Time{})\n\tptrTimeType    = reflect.TypeOf(&time.Time{})\n)\n\nfunc newDecoder() *decoder {\n\td := &decoder{\n\t\tstringMapType:  stringMapType,\n\t\tgeneralMapType: generalMapType,\n\t\tuniqueKeys:     true,\n\t}\n\td.aliases = make(map[*Node]bool)\n\treturn d\n}\n\nfunc (d *decoder) terror(n *Node, tag string, out reflect.Value) {\n\tif n.Tag != \"\" {\n\t\ttag = n.Tag\n\t}\n\tvalue := n.Value\n\tif tag != seqTag && tag != mapTag {\n\t\tif len(value) > 10 {\n\t\t\tvalue = \" `\" + value[:7] + \"...`\"\n\t\t} else {\n\t\t\tvalue = \" `\" + value + \"`\"\n\t\t}\n\t}\n\td.terrors = append(d.terrors, fmt.Sprintf(\"line %d: cannot unmarshal %s%s into %s\", n.Line, shortTag(tag), value, out.Type()))\n}\n\nfunc (d *decoder) callUnmarshaler(n *Node, u Unmarshaler) (good bool) {\n\terr := u.UnmarshalYAML(n)\n\tif e, ok := err.(*TypeError); ok {\n\t\td.terrors = append(d.terrors, e.Errors...)\n\t\treturn false\n\t}\n\tif err != nil {\n\t\tfail(err)\n\t}\n\treturn true\n}\n\nfunc (d *decoder) callObsoleteUnmarshaler(n *Node, u obsoleteUnmarshaler) (good bool) {\n\tterrlen := len(d.terrors)\n\terr := u.UnmarshalYAML(func(v interface{}) (err error) {\n\t\tdefer handleErr(&err)\n\t\td.unmarshal(n, reflect.ValueOf(v))\n\t\tif len(d.terrors) > terrlen {\n\t\t\tissues := d.terrors[terrlen:]\n\t\t\td.terrors = d.terrors[:terrlen]\n\t\t\treturn &TypeError{issues}\n\t\t}\n\t\treturn nil\n\t})\n\tif e, ok := err.(*TypeError); ok {\n\t\td.terrors = append(d.terrors, e.Errors...)\n\t\treturn false\n\t}\n\tif err != nil {\n\t\tfail(err)\n\t}\n\treturn true\n}\n\n// d.prepare initializes and dereferences pointers and calls UnmarshalYAML\n// if a value is found to implement it.\n// It returns the initialized and dereferenced out value, whether\n// unmarshalling was already done by UnmarshalYAML, and if so whether\n// its types unmarshalled appropriately.\n//\n// If n holds a null value, prepare returns before doing anything.\nfunc (d *decoder) prepare(n *Node, out reflect.Value) (newout reflect.Value, unmarshaled, good bool) {\n\tif n.ShortTag() == nullTag {\n\t\treturn out, false, false\n\t}\n\tagain := true\n\tfor again {\n\t\tagain = false\n\t\tif out.Kind() == reflect.Ptr {\n\t\t\tif out.IsNil() {\n\t\t\t\tout.Set(reflect.New(out.Type().Elem()))\n\t\t\t}\n\t\t\tout = out.Elem()\n\t\t\tagain = true\n\t\t}\n\t\tif out.CanAddr() {\n\t\t\touti := out.Addr().Interface()\n\t\t\tif u, ok := outi.(Unmarshaler); ok {\n\t\t\t\tgood = d.callUnmarshaler(n, u)\n\t\t\t\treturn out, true, good\n\t\t\t}\n\t\t\tif u, ok := outi.(obsoleteUnmarshaler); ok {\n\t\t\t\tgood = d.callObsoleteUnmarshaler(n, u)\n\t\t\t\treturn out, true, good\n\t\t\t}\n\t\t}\n\t}\n\treturn out, false, false\n}\n\nfunc (d *decoder) fieldByIndex(n *Node, v reflect.Value, index []int) (field reflect.Value) {\n\tif n.ShortTag() == nullTag {\n\t\treturn reflect.Value{}\n\t}\n\tfor _, num := range index {\n\t\tfor {\n\t\t\tif v.Kind() == reflect.Ptr {\n\t\t\t\tif v.IsNil() {\n\t\t\t\t\tv.Set(reflect.New(v.Type().Elem()))\n\t\t\t\t}\n\t\t\t\tv = v.Elem()\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t\tv = v.Field(num)\n\t}\n\treturn v\n}\n\nconst (\n\t// 400,000 decode operations is ~500kb of dense object declarations, or\n\t// ~5kb of dense object declarations with 10000% alias expansion\n\talias_ratio_range_low = 400000\n\n\t// 4,000,000 decode operations is ~5MB of dense object declarations, or\n\t// ~4.5MB of dense object declarations with 10% alias expansion\n\talias_ratio_range_high = 4000000\n\n\t// alias_ratio_range is the range over which we scale allowed alias ratios\n\talias_ratio_range = float64(alias_ratio_range_high - alias_ratio_range_low)\n)\n\nfunc allowedAliasRatio(decodeCount int) float64 {\n\tswitch {\n\tcase decodeCount <= alias_ratio_range_low:\n\t\t// allow 99% to come from alias expansion for small-to-medium documents\n\t\treturn 0.99\n\tcase decodeCount >= alias_ratio_range_high:\n\t\t// allow 10% to come from alias expansion for very large documents\n\t\treturn 0.10\n\tdefault:\n\t\t// scale smoothly from 99% down to 10% over the range.\n\t\t// this maps to 396,000 - 400,000 allowed alias-driven decodes over the range.\n\t\t// 400,000 decode operations is ~100MB of allocations in worst-case scenarios (single-item maps).\n\t\treturn 0.99 - 0.89*(float64(decodeCount-alias_ratio_range_low)/alias_ratio_range)\n\t}\n}\n\nfunc (d *decoder) unmarshal(n *Node, out reflect.Value) (good bool) {\n\td.decodeCount++\n\tif d.aliasDepth > 0 {\n\t\td.aliasCount++\n\t}\n\tif d.aliasCount > 100 && d.decodeCount > 1000 && float64(d.aliasCount)/float64(d.decodeCount) > allowedAliasRatio(d.decodeCount) {\n\t\tfailf(\"document contains excessive aliasing\")\n\t}\n\tif out.Type() == nodeType {\n\t\tout.Set(reflect.ValueOf(n).Elem())\n\t\treturn true\n\t}\n\tswitch n.Kind {\n\tcase DocumentNode:\n\t\treturn d.document(n, out)\n\tcase AliasNode:\n\t\treturn d.alias(n, out)\n\t}\n\tout, unmarshaled, good := d.prepare(n, out)\n\tif unmarshaled {\n\t\treturn good\n\t}\n\tswitch n.Kind {\n\tcase ScalarNode:\n\t\tgood = d.scalar(n, out)\n\tcase MappingNode:\n\t\tgood = d.mapping(n, out)\n\tcase SequenceNode:\n\t\tgood = d.sequence(n, out)\n\tcase 0:\n\t\tif n.IsZero() {\n\t\t\treturn d.null(out)\n\t\t}\n\t\tfallthrough\n\tdefault:\n\t\tfailf(\"cannot decode node with unknown kind %d\", n.Kind)\n\t}\n\treturn good\n}\n\nfunc (d *decoder) document(n *Node, out reflect.Value) (good bool) {\n\tif len(n.Content) == 1 {\n\t\td.doc = n\n\t\td.unmarshal(n.Content[0], out)\n\t\treturn true\n\t}\n\treturn false\n}\n\nfunc (d *decoder) alias(n *Node, out reflect.Value) (good bool) {\n\tif d.aliases[n] {\n\t\t// TODO this could actually be allowed in some circumstances.\n\t\tfailf(\"anchor '%s' value contains itself\", n.Value)\n\t}\n\td.aliases[n] = true\n\td.aliasDepth++\n\tgood = d.unmarshal(n.Alias, out)\n\td.aliasDepth--\n\tdelete(d.aliases, n)\n\treturn good\n}\n\nvar zeroValue reflect.Value\n\nfunc resetMap(out reflect.Value) {\n\tfor _, k := range out.MapKeys() {\n\t\tout.SetMapIndex(k, zeroValue)\n\t}\n}\n\nfunc (d *decoder) null(out reflect.Value) bool {\n\tif out.CanAddr() {\n\t\tswitch out.Kind() {\n\t\tcase reflect.Interface, reflect.Ptr, reflect.Map, reflect.Slice:\n\t\t\tout.Set(reflect.Zero(out.Type()))\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc (d *decoder) scalar(n *Node, out reflect.Value) bool {\n\tvar tag string\n\tvar resolved interface{}\n\tif n.indicatedString() {\n\t\ttag = strTag\n\t\tresolved = n.Value\n\t} else {\n\t\ttag, resolved = resolve(n.Tag, n.Value)\n\t\tif tag == binaryTag {\n\t\t\tdata, err := base64.StdEncoding.DecodeString(resolved.(string))\n\t\t\tif err != nil {\n\t\t\t\tfailf(\"!!binary value contains invalid base64 data\")\n\t\t\t}\n\t\t\tresolved = string(data)\n\t\t}\n\t}\n\tif resolved == nil {\n\t\treturn d.null(out)\n\t}\n\tif resolvedv := reflect.ValueOf(resolved); out.Type() == resolvedv.Type() {\n\t\t// We've resolved to exactly the type we want, so use that.\n\t\tout.Set(resolvedv)\n\t\treturn true\n\t}\n\t// Perhaps we can use the value as a TextUnmarshaler to\n\t// set its value.\n\tif out.CanAddr() {\n\t\tu, ok := out.Addr().Interface().(encoding.TextUnmarshaler)\n\t\tif ok {\n\t\t\tvar text []byte\n\t\t\tif tag == binaryTag {\n\t\t\t\ttext = []byte(resolved.(string))\n\t\t\t} else {\n\t\t\t\t// We let any value be unmarshaled into TextUnmarshaler.\n\t\t\t\t// That might be more lax than we'd like, but the\n\t\t\t\t// TextUnmarshaler itself should bowl out any dubious values.\n\t\t\t\ttext = []byte(n.Value)\n\t\t\t}\n\t\t\terr := u.UnmarshalText(text)\n\t\t\tif err != nil {\n\t\t\t\tfail(err)\n\t\t\t}\n\t\t\treturn true\n\t\t}\n\t}\n\tswitch out.Kind() {\n\tcase reflect.String:\n\t\tif tag == binaryTag {\n\t\t\tout.SetString(resolved.(string))\n\t\t\treturn true\n\t\t}\n\t\tout.SetString(n.Value)\n\t\treturn true\n\tcase reflect.Interface:\n\t\tout.Set(reflect.ValueOf(resolved))\n\t\treturn true\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\t// This used to work in v2, but it's very unfriendly.\n\t\tisDuration := out.Type() == durationType\n\n\t\tswitch resolved := resolved.(type) {\n\t\tcase int:\n\t\t\tif !isDuration && !out.OverflowInt(int64(resolved)) {\n\t\t\t\tout.SetInt(int64(resolved))\n\t\t\t\treturn true\n\t\t\t}\n\t\tcase int64:\n\t\t\tif !isDuration && !out.OverflowInt(resolved) {\n\t\t\t\tout.SetInt(resolved)\n\t\t\t\treturn true\n\t\t\t}\n\t\tcase uint64:\n\t\t\tif !isDuration && resolved <= math.MaxInt64 && !out.OverflowInt(int64(resolved)) {\n\t\t\t\tout.SetInt(int64(resolved))\n\t\t\t\treturn true\n\t\t\t}\n\t\tcase float64:\n\t\t\tif !isDuration && resolved <= math.MaxInt64 && !out.OverflowInt(int64(resolved)) {\n\t\t\t\tout.SetInt(int64(resolved))\n\t\t\t\treturn true\n\t\t\t}\n\t\tcase string:\n\t\t\tif out.Type() == durationType {\n\t\t\t\td, err := time.ParseDuration(resolved)\n\t\t\t\tif err == nil {\n\t\t\t\t\tout.SetInt(int64(d))\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\tswitch resolved := resolved.(type) {\n\t\tcase int:\n\t\t\tif resolved >= 0 && !out.OverflowUint(uint64(resolved)) {\n\t\t\t\tout.SetUint(uint64(resolved))\n\t\t\t\treturn true\n\t\t\t}\n\t\tcase int64:\n\t\t\tif resolved >= 0 && !out.OverflowUint(uint64(resolved)) {\n\t\t\t\tout.SetUint(uint64(resolved))\n\t\t\t\treturn true\n\t\t\t}\n\t\tcase uint64:\n\t\t\tif !out.OverflowUint(uint64(resolved)) {\n\t\t\t\tout.SetUint(uint64(resolved))\n\t\t\t\treturn true\n\t\t\t}\n\t\tcase float64:\n\t\t\tif resolved <= math.MaxUint64 && !out.OverflowUint(uint64(resolved)) {\n\t\t\t\tout.SetUint(uint64(resolved))\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\tcase reflect.Bool:\n\t\tswitch resolved := resolved.(type) {\n\t\tcase bool:\n\t\t\tout.SetBool(resolved)\n\t\t\treturn true\n\t\tcase string:\n\t\t\t// This offers some compatibility with the 1.1 spec (https://yaml.org/type/bool.html).\n\t\t\t// It only works if explicitly attempting to unmarshal into a typed bool value.\n\t\t\tswitch resolved {\n\t\t\tcase \"y\", \"Y\", \"yes\", \"Yes\", \"YES\", \"on\", \"On\", \"ON\":\n\t\t\t\tout.SetBool(true)\n\t\t\t\treturn true\n\t\t\tcase \"n\", \"N\", \"no\", \"No\", \"NO\", \"off\", \"Off\", \"OFF\":\n\t\t\t\tout.SetBool(false)\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\tcase reflect.Float32, reflect.Float64:\n\t\tswitch resolved := resolved.(type) {\n\t\tcase int:\n\t\t\tout.SetFloat(float64(resolved))\n\t\t\treturn true\n\t\tcase int64:\n\t\t\tout.SetFloat(float64(resolved))\n\t\t\treturn true\n\t\tcase uint64:\n\t\t\tout.SetFloat(float64(resolved))\n\t\t\treturn true\n\t\tcase float64:\n\t\t\tout.SetFloat(resolved)\n\t\t\treturn true\n\t\t}\n\tcase reflect.Struct:\n\t\tif resolvedv := reflect.ValueOf(resolved); out.Type() == resolvedv.Type() {\n\t\t\tout.Set(resolvedv)\n\t\t\treturn true\n\t\t}\n\tcase reflect.Ptr:\n\t\tpanic(\"yaml internal error: please report the issue\")\n\t}\n\td.terror(n, tag, out)\n\treturn false\n}\n\nfunc settableValueOf(i interface{}) reflect.Value {\n\tv := reflect.ValueOf(i)\n\tsv := reflect.New(v.Type()).Elem()\n\tsv.Set(v)\n\treturn sv\n}\n\nfunc (d *decoder) sequence(n *Node, out reflect.Value) (good bool) {\n\tl := len(n.Content)\n\n\tvar iface reflect.Value\n\tswitch out.Kind() {\n\tcase reflect.Slice:\n\t\tout.Set(reflect.MakeSlice(out.Type(), l, l))\n\tcase reflect.Array:\n\t\tif l != out.Len() {\n\t\t\tfailf(\"invalid array: want %d elements but got %d\", out.Len(), l)\n\t\t}\n\tcase reflect.Interface:\n\t\t// No type hints. Will have to use a generic sequence.\n\t\tiface = out\n\t\tout = settableValueOf(make([]interface{}, l))\n\tdefault:\n\t\td.terror(n, seqTag, out)\n\t\treturn false\n\t}\n\tet := out.Type().Elem()\n\n\tj := 0\n\tfor i := 0; i < l; i++ {\n\t\te := reflect.New(et).Elem()\n\t\tif ok := d.unmarshal(n.Content[i], e); ok {\n\t\t\tout.Index(j).Set(e)\n\t\t\tj++\n\t\t}\n\t}\n\tif out.Kind() != reflect.Array {\n\t\tout.Set(out.Slice(0, j))\n\t}\n\tif iface.IsValid() {\n\t\tiface.Set(out)\n\t}\n\treturn true\n}\n\nfunc (d *decoder) mapping(n *Node, out reflect.Value) (good bool) {\n\tl := len(n.Content)\n\tif d.uniqueKeys {\n\t\tnerrs := len(d.terrors)\n\t\tfor i := 0; i < l; i += 2 {\n\t\t\tni := n.Content[i]\n\t\t\tfor j := i + 2; j < l; j += 2 {\n\t\t\t\tnj := n.Content[j]\n\t\t\t\tif ni.Kind == nj.Kind && ni.Value == nj.Value {\n\t\t\t\t\td.terrors = append(d.terrors, fmt.Sprintf(\"line %d: mapping key %#v already defined at line %d\", nj.Line, nj.Value, ni.Line))\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif len(d.terrors) > nerrs {\n\t\t\treturn false\n\t\t}\n\t}\n\tswitch out.Kind() {\n\tcase reflect.Struct:\n\t\treturn d.mappingStruct(n, out)\n\tcase reflect.Map:\n\t\t// okay\n\tcase reflect.Interface:\n\t\tiface := out\n\t\tif isStringMap(n) {\n\t\t\tout = reflect.MakeMap(d.stringMapType)\n\t\t} else {\n\t\t\tout = reflect.MakeMap(d.generalMapType)\n\t\t}\n\t\tiface.Set(out)\n\tdefault:\n\t\td.terror(n, mapTag, out)\n\t\treturn false\n\t}\n\n\toutt := out.Type()\n\tkt := outt.Key()\n\tet := outt.Elem()\n\n\tstringMapType := d.stringMapType\n\tgeneralMapType := d.generalMapType\n\tif outt.Elem() == ifaceType {\n\t\tif outt.Key().Kind() == reflect.String {\n\t\t\td.stringMapType = outt\n\t\t} else if outt.Key() == ifaceType {\n\t\t\td.generalMapType = outt\n\t\t}\n\t}\n\n\tmergedFields := d.mergedFields\n\td.mergedFields = nil\n\n\tvar mergeNode *Node\n\n\tmapIsNew := false\n\tif out.IsNil() {\n\t\tout.Set(reflect.MakeMap(outt))\n\t\tmapIsNew = true\n\t}\n\tfor i := 0; i < l; i += 2 {\n\t\tif isMerge(n.Content[i]) {\n\t\t\tmergeNode = n.Content[i+1]\n\t\t\tcontinue\n\t\t}\n\t\tk := reflect.New(kt).Elem()\n\t\tif d.unmarshal(n.Content[i], k) {\n\t\t\tif mergedFields != nil {\n\t\t\t\tki := k.Interface()\n\t\t\t\tif d.getPossiblyUnhashableKey(mergedFields, ki) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\td.setPossiblyUnhashableKey(mergedFields, ki, true)\n\t\t\t}\n\t\t\tkkind := k.Kind()\n\t\t\tif kkind == reflect.Interface {\n\t\t\t\tkkind = k.Elem().Kind()\n\t\t\t}\n\t\t\tif kkind == reflect.Map || kkind == reflect.Slice {\n\t\t\t\tfailf(\"invalid map key: %#v\", k.Interface())\n\t\t\t}\n\t\t\te := reflect.New(et).Elem()\n\t\t\tif d.unmarshal(n.Content[i+1], e) || n.Content[i+1].ShortTag() == nullTag && (mapIsNew || !out.MapIndex(k).IsValid()) {\n\t\t\t\tout.SetMapIndex(k, e)\n\t\t\t}\n\t\t}\n\t}\n\n\td.mergedFields = mergedFields\n\tif mergeNode != nil {\n\t\td.merge(n, mergeNode, out)\n\t}\n\n\td.stringMapType = stringMapType\n\td.generalMapType = generalMapType\n\treturn true\n}\n\nfunc isStringMap(n *Node) bool {\n\tif n.Kind != MappingNode {\n\t\treturn false\n\t}\n\tl := len(n.Content)\n\tfor i := 0; i < l; i += 2 {\n\t\tshortTag := n.Content[i].ShortTag()\n\t\tif shortTag != strTag && shortTag != mergeTag {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\nfunc (d *decoder) mappingStruct(n *Node, out reflect.Value) (good bool) {\n\tsinfo, err := getStructInfo(out.Type())\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tvar inlineMap reflect.Value\n\tvar elemType reflect.Type\n\tif sinfo.InlineMap != -1 {\n\t\tinlineMap = out.Field(sinfo.InlineMap)\n\t\telemType = inlineMap.Type().Elem()\n\t}\n\n\tfor _, index := range sinfo.InlineUnmarshalers {\n\t\tfield := d.fieldByIndex(n, out, index)\n\t\td.prepare(n, field)\n\t}\n\n\tmergedFields := d.mergedFields\n\td.mergedFields = nil\n\tvar mergeNode *Node\n\tvar doneFields []bool\n\tif d.uniqueKeys {\n\t\tdoneFields = make([]bool, len(sinfo.FieldsList))\n\t}\n\tname := settableValueOf(\"\")\n\tl := len(n.Content)\n\tfor i := 0; i < l; i += 2 {\n\t\tni := n.Content[i]\n\t\tif isMerge(ni) {\n\t\t\tmergeNode = n.Content[i+1]\n\t\t\tcontinue\n\t\t}\n\t\tif !d.unmarshal(ni, name) {\n\t\t\tcontinue\n\t\t}\n\t\tsname := name.String()\n\t\tif mergedFields != nil {\n\t\t\tif mergedFields[sname] {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tmergedFields[sname] = true\n\t\t}\n\t\tif info, ok := sinfo.FieldsMap[sname]; ok {\n\t\t\tif d.uniqueKeys {\n\t\t\t\tif doneFields[info.Id] {\n\t\t\t\t\td.terrors = append(d.terrors, fmt.Sprintf(\"line %d: field %s already set in type %s\", ni.Line, name.String(), out.Type()))\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tdoneFields[info.Id] = true\n\t\t\t}\n\t\t\tvar field reflect.Value\n\t\t\tif info.Inline == nil {\n\t\t\t\tfield = out.Field(info.Num)\n\t\t\t} else {\n\t\t\t\tfield = d.fieldByIndex(n, out, info.Inline)\n\t\t\t}\n\t\t\td.unmarshal(n.Content[i+1], field)\n\t\t} else if sinfo.InlineMap != -1 {\n\t\t\tif inlineMap.IsNil() {\n\t\t\t\tinlineMap.Set(reflect.MakeMap(inlineMap.Type()))\n\t\t\t}\n\t\t\tvalue := reflect.New(elemType).Elem()\n\t\t\td.unmarshal(n.Content[i+1], value)\n\t\t\tinlineMap.SetMapIndex(name, value)\n\t\t} else if d.knownFields {\n\t\t\td.terrors = append(d.terrors, fmt.Sprintf(\"line %d: field %s not found in type %s\", ni.Line, name.String(), out.Type()))\n\t\t}\n\t}\n\n\td.mergedFields = mergedFields\n\tif mergeNode != nil {\n\t\td.merge(n, mergeNode, out)\n\t}\n\treturn true\n}\n\nfunc failWantMap() {\n\tfailf(\"map merge requires map or sequence of maps as the value\")\n}\n\nfunc (d *decoder) setPossiblyUnhashableKey(m map[interface{}]bool, key interface{}, value bool) {\n\tdefer func() {\n\t\tif err := recover(); err != nil {\n\t\t\tfailf(\"%v\", err)\n\t\t}\n\t}()\n\tm[key] = value\n}\n\nfunc (d *decoder) getPossiblyUnhashableKey(m map[interface{}]bool, key interface{}) bool {\n\tdefer func() {\n\t\tif err := recover(); err != nil {\n\t\t\tfailf(\"%v\", err)\n\t\t}\n\t}()\n\treturn m[key]\n}\n\nfunc (d *decoder) merge(parent *Node, merge *Node, out reflect.Value) {\n\tmergedFields := d.mergedFields\n\tif mergedFields == nil {\n\t\td.mergedFields = make(map[interface{}]bool)\n\t\tfor i := 0; i < len(parent.Content); i += 2 {\n\t\t\tk := reflect.New(ifaceType).Elem()\n\t\t\tif d.unmarshal(parent.Content[i], k) {\n\t\t\t\td.setPossiblyUnhashableKey(d.mergedFields, k.Interface(), true)\n\t\t\t}\n\t\t}\n\t}\n\n\tswitch merge.Kind {\n\tcase MappingNode:\n\t\td.unmarshal(merge, out)\n\tcase AliasNode:\n\t\tif merge.Alias != nil && merge.Alias.Kind != MappingNode {\n\t\t\tfailWantMap()\n\t\t}\n\t\td.unmarshal(merge, out)\n\tcase SequenceNode:\n\t\tfor i := 0; i < len(merge.Content); i++ {\n\t\t\tni := merge.Content[i]\n\t\t\tif ni.Kind == AliasNode {\n\t\t\t\tif ni.Alias != nil && ni.Alias.Kind != MappingNode {\n\t\t\t\t\tfailWantMap()\n\t\t\t\t}\n\t\t\t} else if ni.Kind != MappingNode {\n\t\t\t\tfailWantMap()\n\t\t\t}\n\t\t\td.unmarshal(ni, out)\n\t\t}\n\tdefault:\n\t\tfailWantMap()\n\t}\n\n\td.mergedFields = mergedFields\n}\n\nfunc isMerge(n *Node) bool {\n\treturn n.Kind == ScalarNode && n.Value == \"<<\" && (n.Tag == \"\" || n.Tag == \"!\" || shortTag(n.Tag) == mergeTag)\n}\n"
  },
  {
    "path": "tests/vendor/go.yaml.in/yaml/v3/emitterc.go",
    "content": "//\n// Copyright (c) 2011-2019 Canonical Ltd\n// Copyright (c) 2006-2010 Kirill Simonov\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.\n\npackage yaml\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n)\n\n// Flush the buffer if needed.\nfunc flush(emitter *yaml_emitter_t) bool {\n\tif emitter.buffer_pos+5 >= len(emitter.buffer) {\n\t\treturn yaml_emitter_flush(emitter)\n\t}\n\treturn true\n}\n\n// Put a character to the output buffer.\nfunc put(emitter *yaml_emitter_t, value byte) bool {\n\tif emitter.buffer_pos+5 >= len(emitter.buffer) && !yaml_emitter_flush(emitter) {\n\t\treturn false\n\t}\n\temitter.buffer[emitter.buffer_pos] = value\n\temitter.buffer_pos++\n\temitter.column++\n\treturn true\n}\n\n// Put a line break to the output buffer.\nfunc put_break(emitter *yaml_emitter_t) bool {\n\tif emitter.buffer_pos+5 >= len(emitter.buffer) && !yaml_emitter_flush(emitter) {\n\t\treturn false\n\t}\n\tswitch emitter.line_break {\n\tcase yaml_CR_BREAK:\n\t\temitter.buffer[emitter.buffer_pos] = '\\r'\n\t\temitter.buffer_pos += 1\n\tcase yaml_LN_BREAK:\n\t\temitter.buffer[emitter.buffer_pos] = '\\n'\n\t\temitter.buffer_pos += 1\n\tcase yaml_CRLN_BREAK:\n\t\temitter.buffer[emitter.buffer_pos+0] = '\\r'\n\t\temitter.buffer[emitter.buffer_pos+1] = '\\n'\n\t\temitter.buffer_pos += 2\n\tdefault:\n\t\tpanic(\"unknown line break setting\")\n\t}\n\tif emitter.column == 0 {\n\t\temitter.space_above = true\n\t}\n\temitter.column = 0\n\temitter.line++\n\t// [Go] Do this here and below and drop from everywhere else (see commented lines).\n\temitter.indention = true\n\treturn true\n}\n\n// Copy a character from a string into buffer.\nfunc write(emitter *yaml_emitter_t, s []byte, i *int) bool {\n\tif emitter.buffer_pos+5 >= len(emitter.buffer) && !yaml_emitter_flush(emitter) {\n\t\treturn false\n\t}\n\tp := emitter.buffer_pos\n\tw := width(s[*i])\n\tswitch w {\n\tcase 4:\n\t\temitter.buffer[p+3] = s[*i+3]\n\t\tfallthrough\n\tcase 3:\n\t\temitter.buffer[p+2] = s[*i+2]\n\t\tfallthrough\n\tcase 2:\n\t\temitter.buffer[p+1] = s[*i+1]\n\t\tfallthrough\n\tcase 1:\n\t\temitter.buffer[p+0] = s[*i+0]\n\tdefault:\n\t\tpanic(\"unknown character width\")\n\t}\n\temitter.column++\n\temitter.buffer_pos += w\n\t*i += w\n\treturn true\n}\n\n// Write a whole string into buffer.\nfunc write_all(emitter *yaml_emitter_t, s []byte) bool {\n\tfor i := 0; i < len(s); {\n\t\tif !write(emitter, s, &i) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// Copy a line break character from a string into buffer.\nfunc write_break(emitter *yaml_emitter_t, s []byte, i *int) bool {\n\tif s[*i] == '\\n' {\n\t\tif !put_break(emitter) {\n\t\t\treturn false\n\t\t}\n\t\t*i++\n\t} else {\n\t\tif !write(emitter, s, i) {\n\t\t\treturn false\n\t\t}\n\t\tif emitter.column == 0 {\n\t\t\temitter.space_above = true\n\t\t}\n\t\temitter.column = 0\n\t\temitter.line++\n\t\t// [Go] Do this here and above and drop from everywhere else (see commented lines).\n\t\temitter.indention = true\n\t}\n\treturn true\n}\n\n// Set an emitter error and return false.\nfunc yaml_emitter_set_emitter_error(emitter *yaml_emitter_t, problem string) bool {\n\temitter.error = yaml_EMITTER_ERROR\n\temitter.problem = problem\n\treturn false\n}\n\n// Emit an event.\nfunc yaml_emitter_emit(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\temitter.events = append(emitter.events, *event)\n\tfor !yaml_emitter_need_more_events(emitter) {\n\t\tevent := &emitter.events[emitter.events_head]\n\t\tif !yaml_emitter_analyze_event(emitter, event) {\n\t\t\treturn false\n\t\t}\n\t\tif !yaml_emitter_state_machine(emitter, event) {\n\t\t\treturn false\n\t\t}\n\t\tyaml_event_delete(event)\n\t\temitter.events_head++\n\t}\n\treturn true\n}\n\n// Check if we need to accumulate more events before emitting.\n//\n// We accumulate extra\n//   - 1 event for DOCUMENT-START\n//   - 2 events for SEQUENCE-START\n//   - 3 events for MAPPING-START\nfunc yaml_emitter_need_more_events(emitter *yaml_emitter_t) bool {\n\tif emitter.events_head == len(emitter.events) {\n\t\treturn true\n\t}\n\tvar accumulate int\n\tswitch emitter.events[emitter.events_head].typ {\n\tcase yaml_DOCUMENT_START_EVENT:\n\t\taccumulate = 1\n\t\tbreak\n\tcase yaml_SEQUENCE_START_EVENT:\n\t\taccumulate = 2\n\t\tbreak\n\tcase yaml_MAPPING_START_EVENT:\n\t\taccumulate = 3\n\t\tbreak\n\tdefault:\n\t\treturn false\n\t}\n\tif len(emitter.events)-emitter.events_head > accumulate {\n\t\treturn false\n\t}\n\tvar level int\n\tfor i := emitter.events_head; i < len(emitter.events); i++ {\n\t\tswitch emitter.events[i].typ {\n\t\tcase yaml_STREAM_START_EVENT, yaml_DOCUMENT_START_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT:\n\t\t\tlevel++\n\t\tcase yaml_STREAM_END_EVENT, yaml_DOCUMENT_END_EVENT, yaml_SEQUENCE_END_EVENT, yaml_MAPPING_END_EVENT:\n\t\t\tlevel--\n\t\t}\n\t\tif level == 0 {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// Append a directive to the directives stack.\nfunc yaml_emitter_append_tag_directive(emitter *yaml_emitter_t, value *yaml_tag_directive_t, allow_duplicates bool) bool {\n\tfor i := 0; i < len(emitter.tag_directives); i++ {\n\t\tif bytes.Equal(value.handle, emitter.tag_directives[i].handle) {\n\t\t\tif allow_duplicates {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn yaml_emitter_set_emitter_error(emitter, \"duplicate %TAG directive\")\n\t\t}\n\t}\n\n\t// [Go] Do we actually need to copy this given garbage collection\n\t// and the lack of deallocating destructors?\n\ttag_copy := yaml_tag_directive_t{\n\t\thandle: make([]byte, len(value.handle)),\n\t\tprefix: make([]byte, len(value.prefix)),\n\t}\n\tcopy(tag_copy.handle, value.handle)\n\tcopy(tag_copy.prefix, value.prefix)\n\temitter.tag_directives = append(emitter.tag_directives, tag_copy)\n\treturn true\n}\n\n// Increase the indentation level.\nfunc yaml_emitter_increase_indent_compact(emitter *yaml_emitter_t, flow, indentless bool, compact_seq bool) bool {\n\temitter.indents = append(emitter.indents, emitter.indent)\n\tif emitter.indent < 0 {\n\t\tif flow {\n\t\t\temitter.indent = emitter.best_indent\n\t\t} else {\n\t\t\temitter.indent = 0\n\t\t}\n\t} else if !indentless {\n\t\t// [Go] This was changed so that indentations are more regular.\n\t\tif emitter.states[len(emitter.states)-1] == yaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE {\n\t\t\t// The first indent inside a sequence will just skip the \"- \" indicator.\n\t\t\temitter.indent += 2\n\t\t} else {\n\t\t\t// Everything else aligns to the chosen indentation.\n\t\t\temitter.indent = emitter.best_indent * ((emitter.indent + emitter.best_indent) / emitter.best_indent)\n\t\t\tif compact_seq {\n\t\t\t\t// The value compact_seq passed in is almost always set to `false` when this function is called,\n\t\t\t\t// except when we are dealing with sequence nodes. So this gets triggered to subtract 2 only when we\n\t\t\t\t// are increasing the indent to account for sequence nodes, which will be correct because we need to\n\t\t\t\t// subtract 2 to account for the - at the beginning of the sequence node.\n\t\t\t\temitter.indent = emitter.indent - 2\n\t\t\t}\n\t\t}\n\t}\n\treturn true\n}\n\n// State dispatcher.\nfunc yaml_emitter_state_machine(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\tswitch emitter.state {\n\tdefault:\n\tcase yaml_EMIT_STREAM_START_STATE:\n\t\treturn yaml_emitter_emit_stream_start(emitter, event)\n\n\tcase yaml_EMIT_FIRST_DOCUMENT_START_STATE:\n\t\treturn yaml_emitter_emit_document_start(emitter, event, true)\n\n\tcase yaml_EMIT_DOCUMENT_START_STATE:\n\t\treturn yaml_emitter_emit_document_start(emitter, event, false)\n\n\tcase yaml_EMIT_DOCUMENT_CONTENT_STATE:\n\t\treturn yaml_emitter_emit_document_content(emitter, event)\n\n\tcase yaml_EMIT_DOCUMENT_END_STATE:\n\t\treturn yaml_emitter_emit_document_end(emitter, event)\n\n\tcase yaml_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE:\n\t\treturn yaml_emitter_emit_flow_sequence_item(emitter, event, true, false)\n\n\tcase yaml_EMIT_FLOW_SEQUENCE_TRAIL_ITEM_STATE:\n\t\treturn yaml_emitter_emit_flow_sequence_item(emitter, event, false, true)\n\n\tcase yaml_EMIT_FLOW_SEQUENCE_ITEM_STATE:\n\t\treturn yaml_emitter_emit_flow_sequence_item(emitter, event, false, false)\n\n\tcase yaml_EMIT_FLOW_MAPPING_FIRST_KEY_STATE:\n\t\treturn yaml_emitter_emit_flow_mapping_key(emitter, event, true, false)\n\n\tcase yaml_EMIT_FLOW_MAPPING_TRAIL_KEY_STATE:\n\t\treturn yaml_emitter_emit_flow_mapping_key(emitter, event, false, true)\n\n\tcase yaml_EMIT_FLOW_MAPPING_KEY_STATE:\n\t\treturn yaml_emitter_emit_flow_mapping_key(emitter, event, false, false)\n\n\tcase yaml_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE:\n\t\treturn yaml_emitter_emit_flow_mapping_value(emitter, event, true)\n\n\tcase yaml_EMIT_FLOW_MAPPING_VALUE_STATE:\n\t\treturn yaml_emitter_emit_flow_mapping_value(emitter, event, false)\n\n\tcase yaml_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE:\n\t\treturn yaml_emitter_emit_block_sequence_item(emitter, event, true)\n\n\tcase yaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE:\n\t\treturn yaml_emitter_emit_block_sequence_item(emitter, event, false)\n\n\tcase yaml_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE:\n\t\treturn yaml_emitter_emit_block_mapping_key(emitter, event, true)\n\n\tcase yaml_EMIT_BLOCK_MAPPING_KEY_STATE:\n\t\treturn yaml_emitter_emit_block_mapping_key(emitter, event, false)\n\n\tcase yaml_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE:\n\t\treturn yaml_emitter_emit_block_mapping_value(emitter, event, true)\n\n\tcase yaml_EMIT_BLOCK_MAPPING_VALUE_STATE:\n\t\treturn yaml_emitter_emit_block_mapping_value(emitter, event, false)\n\n\tcase yaml_EMIT_END_STATE:\n\t\treturn yaml_emitter_set_emitter_error(emitter, \"expected nothing after STREAM-END\")\n\t}\n\tpanic(\"invalid emitter state\")\n}\n\n// Expect STREAM-START.\nfunc yaml_emitter_emit_stream_start(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\tif event.typ != yaml_STREAM_START_EVENT {\n\t\treturn yaml_emitter_set_emitter_error(emitter, \"expected STREAM-START\")\n\t}\n\tif emitter.encoding == yaml_ANY_ENCODING {\n\t\temitter.encoding = event.encoding\n\t\tif emitter.encoding == yaml_ANY_ENCODING {\n\t\t\temitter.encoding = yaml_UTF8_ENCODING\n\t\t}\n\t}\n\tif emitter.best_indent < 2 || emitter.best_indent > 9 {\n\t\temitter.best_indent = 2\n\t}\n\tif emitter.best_width >= 0 && emitter.best_width <= emitter.best_indent*2 {\n\t\temitter.best_width = 80\n\t}\n\tif emitter.best_width < 0 {\n\t\temitter.best_width = 1<<31 - 1\n\t}\n\tif emitter.line_break == yaml_ANY_BREAK {\n\t\temitter.line_break = yaml_LN_BREAK\n\t}\n\n\temitter.indent = -1\n\temitter.line = 0\n\temitter.column = 0\n\temitter.whitespace = true\n\temitter.indention = true\n\temitter.space_above = true\n\temitter.foot_indent = -1\n\n\tif emitter.encoding != yaml_UTF8_ENCODING {\n\t\tif !yaml_emitter_write_bom(emitter) {\n\t\t\treturn false\n\t\t}\n\t}\n\temitter.state = yaml_EMIT_FIRST_DOCUMENT_START_STATE\n\treturn true\n}\n\n// Expect DOCUMENT-START or STREAM-END.\nfunc yaml_emitter_emit_document_start(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool {\n\n\tif event.typ == yaml_DOCUMENT_START_EVENT {\n\n\t\tif event.version_directive != nil {\n\t\t\tif !yaml_emitter_analyze_version_directive(emitter, event.version_directive) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\tfor i := 0; i < len(event.tag_directives); i++ {\n\t\t\ttag_directive := &event.tag_directives[i]\n\t\t\tif !yaml_emitter_analyze_tag_directive(emitter, tag_directive) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif !yaml_emitter_append_tag_directive(emitter, tag_directive, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\tfor i := 0; i < len(default_tag_directives); i++ {\n\t\t\ttag_directive := &default_tag_directives[i]\n\t\t\tif !yaml_emitter_append_tag_directive(emitter, tag_directive, true) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\timplicit := event.implicit\n\t\tif !first || emitter.canonical {\n\t\t\timplicit = false\n\t\t}\n\n\t\tif emitter.open_ended && (event.version_directive != nil || len(event.tag_directives) > 0) {\n\t\t\tif !yaml_emitter_write_indicator(emitter, []byte(\"...\"), true, false, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\tif event.version_directive != nil {\n\t\t\timplicit = false\n\t\t\tif !yaml_emitter_write_indicator(emitter, []byte(\"%YAML\"), true, false, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif !yaml_emitter_write_indicator(emitter, []byte(\"1.1\"), true, false, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\tif len(event.tag_directives) > 0 {\n\t\t\timplicit = false\n\t\t\tfor i := 0; i < len(event.tag_directives); i++ {\n\t\t\t\ttag_directive := &event.tag_directives[i]\n\t\t\t\tif !yaml_emitter_write_indicator(emitter, []byte(\"%TAG\"), true, false, false) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tif !yaml_emitter_write_tag_handle(emitter, tag_directive.handle) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tif !yaml_emitter_write_tag_content(emitter, tag_directive.prefix, true) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif yaml_emitter_check_empty_document(emitter) {\n\t\t\timplicit = false\n\t\t}\n\t\tif !implicit {\n\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif !yaml_emitter_write_indicator(emitter, []byte(\"---\"), true, false, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif emitter.canonical || true {\n\t\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif len(emitter.head_comment) > 0 {\n\t\t\tif !yaml_emitter_process_head_comment(emitter) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif !put_break(emitter) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\temitter.state = yaml_EMIT_DOCUMENT_CONTENT_STATE\n\t\treturn true\n\t}\n\n\tif event.typ == yaml_STREAM_END_EVENT {\n\t\tif emitter.open_ended {\n\t\t\tif !yaml_emitter_write_indicator(emitter, []byte(\"...\"), true, false, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif !yaml_emitter_flush(emitter) {\n\t\t\treturn false\n\t\t}\n\t\temitter.state = yaml_EMIT_END_STATE\n\t\treturn true\n\t}\n\n\treturn yaml_emitter_set_emitter_error(emitter, \"expected DOCUMENT-START or STREAM-END\")\n}\n\n// yaml_emitter_increase_indent preserves the original signature and delegates to\n// yaml_emitter_increase_indent_compact without compact-sequence indentation\nfunc yaml_emitter_increase_indent(emitter *yaml_emitter_t, flow, indentless bool) bool {\n\treturn yaml_emitter_increase_indent_compact(emitter, flow, indentless, false)\n}\n\n// yaml_emitter_process_line_comment preserves the original signature and delegates to\n// yaml_emitter_process_line_comment_linebreak passing false for linebreak\nfunc yaml_emitter_process_line_comment(emitter *yaml_emitter_t) bool {\n\treturn yaml_emitter_process_line_comment_linebreak(emitter, false)\n}\n\n// Expect the root node.\nfunc yaml_emitter_emit_document_content(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\temitter.states = append(emitter.states, yaml_EMIT_DOCUMENT_END_STATE)\n\n\tif !yaml_emitter_process_head_comment(emitter) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_emit_node(emitter, event, true, false, false, false) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_process_line_comment(emitter) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_process_foot_comment(emitter) {\n\t\treturn false\n\t}\n\treturn true\n}\n\n// Expect DOCUMENT-END.\nfunc yaml_emitter_emit_document_end(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\tif event.typ != yaml_DOCUMENT_END_EVENT {\n\t\treturn yaml_emitter_set_emitter_error(emitter, \"expected DOCUMENT-END\")\n\t}\n\t// [Go] Force document foot separation.\n\temitter.foot_indent = 0\n\tif !yaml_emitter_process_foot_comment(emitter) {\n\t\treturn false\n\t}\n\temitter.foot_indent = -1\n\tif !yaml_emitter_write_indent(emitter) {\n\t\treturn false\n\t}\n\tif !event.implicit {\n\t\t// [Go] Allocate the slice elsewhere.\n\t\tif !yaml_emitter_write_indicator(emitter, []byte(\"...\"), true, false, false) {\n\t\t\treturn false\n\t\t}\n\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\treturn false\n\t\t}\n\t}\n\tif !yaml_emitter_flush(emitter) {\n\t\treturn false\n\t}\n\temitter.state = yaml_EMIT_DOCUMENT_START_STATE\n\temitter.tag_directives = emitter.tag_directives[:0]\n\treturn true\n}\n\n// Expect a flow item node.\nfunc yaml_emitter_emit_flow_sequence_item(emitter *yaml_emitter_t, event *yaml_event_t, first, trail bool) bool {\n\tif first {\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{'['}, true, true, false) {\n\t\t\treturn false\n\t\t}\n\t\tif !yaml_emitter_increase_indent(emitter, true, false) {\n\t\t\treturn false\n\t\t}\n\t\temitter.flow_level++\n\t}\n\n\tif event.typ == yaml_SEQUENCE_END_EVENT {\n\t\tif emitter.canonical && !first && !trail {\n\t\t\tif !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\temitter.flow_level--\n\t\temitter.indent = emitter.indents[len(emitter.indents)-1]\n\t\temitter.indents = emitter.indents[:len(emitter.indents)-1]\n\t\tif emitter.column == 0 || emitter.canonical && !first {\n\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{']'}, false, false, false) {\n\t\t\treturn false\n\t\t}\n\t\tif !yaml_emitter_process_line_comment(emitter) {\n\t\t\treturn false\n\t\t}\n\t\tif !yaml_emitter_process_foot_comment(emitter) {\n\t\t\treturn false\n\t\t}\n\t\temitter.state = emitter.states[len(emitter.states)-1]\n\t\temitter.states = emitter.states[:len(emitter.states)-1]\n\n\t\treturn true\n\t}\n\n\tif !first && !trail {\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tif !yaml_emitter_process_head_comment(emitter) {\n\t\treturn false\n\t}\n\tif emitter.column == 0 {\n\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tif emitter.canonical || emitter.column > emitter.best_width {\n\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\treturn false\n\t\t}\n\t}\n\tif len(emitter.line_comment)+len(emitter.foot_comment)+len(emitter.tail_comment) > 0 {\n\t\temitter.states = append(emitter.states, yaml_EMIT_FLOW_SEQUENCE_TRAIL_ITEM_STATE)\n\t} else {\n\t\temitter.states = append(emitter.states, yaml_EMIT_FLOW_SEQUENCE_ITEM_STATE)\n\t}\n\tif !yaml_emitter_emit_node(emitter, event, false, true, false, false) {\n\t\treturn false\n\t}\n\tif len(emitter.line_comment)+len(emitter.foot_comment)+len(emitter.tail_comment) > 0 {\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) {\n\t\t\treturn false\n\t\t}\n\t}\n\tif !yaml_emitter_process_line_comment(emitter) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_process_foot_comment(emitter) {\n\t\treturn false\n\t}\n\treturn true\n}\n\n// Expect a flow key node.\nfunc yaml_emitter_emit_flow_mapping_key(emitter *yaml_emitter_t, event *yaml_event_t, first, trail bool) bool {\n\tif first {\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{'{'}, true, true, false) {\n\t\t\treturn false\n\t\t}\n\t\tif !yaml_emitter_increase_indent(emitter, true, false) {\n\t\t\treturn false\n\t\t}\n\t\temitter.flow_level++\n\t}\n\n\tif event.typ == yaml_MAPPING_END_EVENT {\n\t\tif (emitter.canonical || len(emitter.head_comment)+len(emitter.foot_comment)+len(emitter.tail_comment) > 0) && !first && !trail {\n\t\t\tif !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif !yaml_emitter_process_head_comment(emitter) {\n\t\t\treturn false\n\t\t}\n\t\temitter.flow_level--\n\t\temitter.indent = emitter.indents[len(emitter.indents)-1]\n\t\temitter.indents = emitter.indents[:len(emitter.indents)-1]\n\t\tif emitter.canonical && !first {\n\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{'}'}, false, false, false) {\n\t\t\treturn false\n\t\t}\n\t\tif !yaml_emitter_process_line_comment(emitter) {\n\t\t\treturn false\n\t\t}\n\t\tif !yaml_emitter_process_foot_comment(emitter) {\n\t\t\treturn false\n\t\t}\n\t\temitter.state = emitter.states[len(emitter.states)-1]\n\t\temitter.states = emitter.states[:len(emitter.states)-1]\n\t\treturn true\n\t}\n\n\tif !first && !trail {\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tif !yaml_emitter_process_head_comment(emitter) {\n\t\treturn false\n\t}\n\n\tif emitter.column == 0 {\n\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tif emitter.canonical || emitter.column > emitter.best_width {\n\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tif !emitter.canonical && yaml_emitter_check_simple_key(emitter) {\n\t\temitter.states = append(emitter.states, yaml_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE)\n\t\treturn yaml_emitter_emit_node(emitter, event, false, false, true, true)\n\t}\n\tif !yaml_emitter_write_indicator(emitter, []byte{'?'}, true, false, false) {\n\t\treturn false\n\t}\n\temitter.states = append(emitter.states, yaml_EMIT_FLOW_MAPPING_VALUE_STATE)\n\treturn yaml_emitter_emit_node(emitter, event, false, false, true, false)\n}\n\n// Expect a flow value node.\nfunc yaml_emitter_emit_flow_mapping_value(emitter *yaml_emitter_t, event *yaml_event_t, simple bool) bool {\n\tif simple {\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{':'}, false, false, false) {\n\t\t\treturn false\n\t\t}\n\t} else {\n\t\tif emitter.canonical || emitter.column > emitter.best_width {\n\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{':'}, true, false, false) {\n\t\t\treturn false\n\t\t}\n\t}\n\tif len(emitter.line_comment)+len(emitter.foot_comment)+len(emitter.tail_comment) > 0 {\n\t\temitter.states = append(emitter.states, yaml_EMIT_FLOW_MAPPING_TRAIL_KEY_STATE)\n\t} else {\n\t\temitter.states = append(emitter.states, yaml_EMIT_FLOW_MAPPING_KEY_STATE)\n\t}\n\tif !yaml_emitter_emit_node(emitter, event, false, false, true, false) {\n\t\treturn false\n\t}\n\tif len(emitter.line_comment)+len(emitter.foot_comment)+len(emitter.tail_comment) > 0 {\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) {\n\t\t\treturn false\n\t\t}\n\t}\n\tif !yaml_emitter_process_line_comment(emitter) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_process_foot_comment(emitter) {\n\t\treturn false\n\t}\n\treturn true\n}\n\n// Expect a block item node.\nfunc yaml_emitter_emit_block_sequence_item(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool {\n\tif first {\n\t\t// emitter.mapping context tells us if we are currently in a mapping context.\n\t\t// emiiter.column tells us which column we are in in the yaml output. 0 is the first char of the column.\n\t\t// emitter.indentation tells us if the last character was an indentation character.\n\t\t// emitter.compact_sequence_indent tells us if '- ' is considered part of the indentation for sequence elements.\n\t\t// So, `seq` means that we are in a mapping context, and we are either at the first char of the column or\n\t\t//  the last character was not an indentation character, and we consider '- ' part of the indentation\n\t\t//  for sequence elements.\n\t\tseq := emitter.mapping_context && (emitter.column == 0 || !emitter.indention) &&\n\t\t\temitter.compact_sequence_indent\n\t\tif !yaml_emitter_increase_indent_compact(emitter, false, false, seq) {\n\t\t\treturn false\n\t\t}\n\t}\n\tif event.typ == yaml_SEQUENCE_END_EVENT {\n\t\temitter.indent = emitter.indents[len(emitter.indents)-1]\n\t\temitter.indents = emitter.indents[:len(emitter.indents)-1]\n\t\temitter.state = emitter.states[len(emitter.states)-1]\n\t\temitter.states = emitter.states[:len(emitter.states)-1]\n\t\treturn true\n\t}\n\tif !yaml_emitter_process_head_comment(emitter) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_write_indent(emitter) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_write_indicator(emitter, []byte{'-'}, true, false, true) {\n\t\treturn false\n\t}\n\temitter.states = append(emitter.states, yaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE)\n\tif !yaml_emitter_emit_node(emitter, event, false, true, false, false) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_process_line_comment(emitter) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_process_foot_comment(emitter) {\n\t\treturn false\n\t}\n\treturn true\n}\n\n// Expect a block key node.\nfunc yaml_emitter_emit_block_mapping_key(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool {\n\tif first {\n\t\tif !yaml_emitter_increase_indent(emitter, false, false) {\n\t\t\treturn false\n\t\t}\n\t}\n\tif !yaml_emitter_process_head_comment(emitter) {\n\t\treturn false\n\t}\n\tif event.typ == yaml_MAPPING_END_EVENT {\n\t\temitter.indent = emitter.indents[len(emitter.indents)-1]\n\t\temitter.indents = emitter.indents[:len(emitter.indents)-1]\n\t\temitter.state = emitter.states[len(emitter.states)-1]\n\t\temitter.states = emitter.states[:len(emitter.states)-1]\n\t\treturn true\n\t}\n\tif !yaml_emitter_write_indent(emitter) {\n\t\treturn false\n\t}\n\tif len(emitter.line_comment) > 0 {\n\t\t// [Go] A line comment was provided for the key. That's unusual as the\n\t\t//      scanner associates line comments with the value. Either way,\n\t\t//      save the line comment and render it appropriately later.\n\t\temitter.key_line_comment = emitter.line_comment\n\t\temitter.line_comment = nil\n\t}\n\tif yaml_emitter_check_simple_key(emitter) {\n\t\temitter.states = append(emitter.states, yaml_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE)\n\t\treturn yaml_emitter_emit_node(emitter, event, false, false, true, true)\n\t}\n\tif !yaml_emitter_write_indicator(emitter, []byte{'?'}, true, false, true) {\n\t\treturn false\n\t}\n\temitter.states = append(emitter.states, yaml_EMIT_BLOCK_MAPPING_VALUE_STATE)\n\treturn yaml_emitter_emit_node(emitter, event, false, false, true, false)\n}\n\n// Expect a block value node.\nfunc yaml_emitter_emit_block_mapping_value(emitter *yaml_emitter_t, event *yaml_event_t, simple bool) bool {\n\tif simple {\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{':'}, false, false, false) {\n\t\t\treturn false\n\t\t}\n\t} else {\n\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\treturn false\n\t\t}\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{':'}, true, false, true) {\n\t\t\treturn false\n\t\t}\n\t}\n\tif len(emitter.key_line_comment) > 0 {\n\t\t// [Go] Line comments are generally associated with the value, but when there's\n\t\t//      no value on the same line as a mapping key they end up attached to the\n\t\t//      key itself.\n\t\tif event.typ == yaml_SCALAR_EVENT {\n\t\t\tif len(emitter.line_comment) == 0 {\n\t\t\t\t// A scalar is coming and it has no line comments by itself yet,\n\t\t\t\t// so just let it handle the line comment as usual. If it has a\n\t\t\t\t// line comment, we can't have both so the one from the key is lost.\n\t\t\t\temitter.line_comment = emitter.key_line_comment\n\t\t\t\temitter.key_line_comment = nil\n\t\t\t}\n\t\t} else if event.sequence_style() != yaml_FLOW_SEQUENCE_STYLE && (event.typ == yaml_MAPPING_START_EVENT || event.typ == yaml_SEQUENCE_START_EVENT) {\n\t\t\t// An indented block follows, so write the comment right now.\n\t\t\temitter.line_comment, emitter.key_line_comment = emitter.key_line_comment, emitter.line_comment\n\t\t\tif !yaml_emitter_process_line_comment(emitter) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\temitter.line_comment, emitter.key_line_comment = emitter.key_line_comment, emitter.line_comment\n\t\t}\n\t}\n\temitter.states = append(emitter.states, yaml_EMIT_BLOCK_MAPPING_KEY_STATE)\n\tif !yaml_emitter_emit_node(emitter, event, false, false, true, false) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_process_line_comment(emitter) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_process_foot_comment(emitter) {\n\t\treturn false\n\t}\n\treturn true\n}\n\nfunc yaml_emitter_silent_nil_event(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\treturn event.typ == yaml_SCALAR_EVENT && event.implicit && !emitter.canonical && len(emitter.scalar_data.value) == 0\n}\n\n// Expect a node.\nfunc yaml_emitter_emit_node(emitter *yaml_emitter_t, event *yaml_event_t,\n\troot bool, sequence bool, mapping bool, simple_key bool) bool {\n\n\temitter.root_context = root\n\temitter.sequence_context = sequence\n\temitter.mapping_context = mapping\n\temitter.simple_key_context = simple_key\n\n\tswitch event.typ {\n\tcase yaml_ALIAS_EVENT:\n\t\treturn yaml_emitter_emit_alias(emitter, event)\n\tcase yaml_SCALAR_EVENT:\n\t\treturn yaml_emitter_emit_scalar(emitter, event)\n\tcase yaml_SEQUENCE_START_EVENT:\n\t\treturn yaml_emitter_emit_sequence_start(emitter, event)\n\tcase yaml_MAPPING_START_EVENT:\n\t\treturn yaml_emitter_emit_mapping_start(emitter, event)\n\tdefault:\n\t\treturn yaml_emitter_set_emitter_error(emitter,\n\t\t\tfmt.Sprintf(\"expected SCALAR, SEQUENCE-START, MAPPING-START, or ALIAS, but got %v\", event.typ))\n\t}\n}\n\n// Expect ALIAS.\nfunc yaml_emitter_emit_alias(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\tif !yaml_emitter_process_anchor(emitter) {\n\t\treturn false\n\t}\n\temitter.state = emitter.states[len(emitter.states)-1]\n\temitter.states = emitter.states[:len(emitter.states)-1]\n\treturn true\n}\n\n// Expect SCALAR.\nfunc yaml_emitter_emit_scalar(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\tif !yaml_emitter_select_scalar_style(emitter, event) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_process_anchor(emitter) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_process_tag(emitter) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_increase_indent(emitter, true, false) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_process_scalar(emitter) {\n\t\treturn false\n\t}\n\temitter.indent = emitter.indents[len(emitter.indents)-1]\n\temitter.indents = emitter.indents[:len(emitter.indents)-1]\n\temitter.state = emitter.states[len(emitter.states)-1]\n\temitter.states = emitter.states[:len(emitter.states)-1]\n\treturn true\n}\n\n// Expect SEQUENCE-START.\nfunc yaml_emitter_emit_sequence_start(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\tif !yaml_emitter_process_anchor(emitter) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_process_tag(emitter) {\n\t\treturn false\n\t}\n\tif emitter.flow_level > 0 || emitter.canonical || event.sequence_style() == yaml_FLOW_SEQUENCE_STYLE ||\n\t\tyaml_emitter_check_empty_sequence(emitter) {\n\t\temitter.state = yaml_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE\n\t} else {\n\t\temitter.state = yaml_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE\n\t}\n\treturn true\n}\n\n// Expect MAPPING-START.\nfunc yaml_emitter_emit_mapping_start(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\tif !yaml_emitter_process_anchor(emitter) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_process_tag(emitter) {\n\t\treturn false\n\t}\n\tif emitter.flow_level > 0 || emitter.canonical || event.mapping_style() == yaml_FLOW_MAPPING_STYLE ||\n\t\tyaml_emitter_check_empty_mapping(emitter) {\n\t\temitter.state = yaml_EMIT_FLOW_MAPPING_FIRST_KEY_STATE\n\t} else {\n\t\temitter.state = yaml_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE\n\t}\n\treturn true\n}\n\n// Check if the document content is an empty scalar.\nfunc yaml_emitter_check_empty_document(emitter *yaml_emitter_t) bool {\n\treturn false // [Go] Huh?\n}\n\n// Check if the next events represent an empty sequence.\nfunc yaml_emitter_check_empty_sequence(emitter *yaml_emitter_t) bool {\n\tif len(emitter.events)-emitter.events_head < 2 {\n\t\treturn false\n\t}\n\treturn emitter.events[emitter.events_head].typ == yaml_SEQUENCE_START_EVENT &&\n\t\temitter.events[emitter.events_head+1].typ == yaml_SEQUENCE_END_EVENT\n}\n\n// Check if the next events represent an empty mapping.\nfunc yaml_emitter_check_empty_mapping(emitter *yaml_emitter_t) bool {\n\tif len(emitter.events)-emitter.events_head < 2 {\n\t\treturn false\n\t}\n\treturn emitter.events[emitter.events_head].typ == yaml_MAPPING_START_EVENT &&\n\t\temitter.events[emitter.events_head+1].typ == yaml_MAPPING_END_EVENT\n}\n\n// Check if the next node can be expressed as a simple key.\nfunc yaml_emitter_check_simple_key(emitter *yaml_emitter_t) bool {\n\tlength := 0\n\tswitch emitter.events[emitter.events_head].typ {\n\tcase yaml_ALIAS_EVENT:\n\t\tlength += len(emitter.anchor_data.anchor)\n\tcase yaml_SCALAR_EVENT:\n\t\tif emitter.scalar_data.multiline {\n\t\t\treturn false\n\t\t}\n\t\tlength += len(emitter.anchor_data.anchor) +\n\t\t\tlen(emitter.tag_data.handle) +\n\t\t\tlen(emitter.tag_data.suffix) +\n\t\t\tlen(emitter.scalar_data.value)\n\tcase yaml_SEQUENCE_START_EVENT:\n\t\tif !yaml_emitter_check_empty_sequence(emitter) {\n\t\t\treturn false\n\t\t}\n\t\tlength += len(emitter.anchor_data.anchor) +\n\t\t\tlen(emitter.tag_data.handle) +\n\t\t\tlen(emitter.tag_data.suffix)\n\tcase yaml_MAPPING_START_EVENT:\n\t\tif !yaml_emitter_check_empty_mapping(emitter) {\n\t\t\treturn false\n\t\t}\n\t\tlength += len(emitter.anchor_data.anchor) +\n\t\t\tlen(emitter.tag_data.handle) +\n\t\t\tlen(emitter.tag_data.suffix)\n\tdefault:\n\t\treturn false\n\t}\n\treturn length <= 128\n}\n\n// Determine an acceptable scalar style.\nfunc yaml_emitter_select_scalar_style(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\n\tno_tag := len(emitter.tag_data.handle) == 0 && len(emitter.tag_data.suffix) == 0\n\tif no_tag && !event.implicit && !event.quoted_implicit {\n\t\treturn yaml_emitter_set_emitter_error(emitter, \"neither tag nor implicit flags are specified\")\n\t}\n\n\tstyle := event.scalar_style()\n\tif style == yaml_ANY_SCALAR_STYLE {\n\t\tstyle = yaml_PLAIN_SCALAR_STYLE\n\t}\n\tif emitter.canonical {\n\t\tstyle = yaml_DOUBLE_QUOTED_SCALAR_STYLE\n\t}\n\tif emitter.simple_key_context && emitter.scalar_data.multiline {\n\t\tstyle = yaml_DOUBLE_QUOTED_SCALAR_STYLE\n\t}\n\n\tif style == yaml_PLAIN_SCALAR_STYLE {\n\t\tif emitter.flow_level > 0 && !emitter.scalar_data.flow_plain_allowed ||\n\t\t\temitter.flow_level == 0 && !emitter.scalar_data.block_plain_allowed {\n\t\t\tstyle = yaml_SINGLE_QUOTED_SCALAR_STYLE\n\t\t}\n\t\tif len(emitter.scalar_data.value) == 0 && (emitter.flow_level > 0 || emitter.simple_key_context) {\n\t\t\tstyle = yaml_SINGLE_QUOTED_SCALAR_STYLE\n\t\t}\n\t\tif no_tag && !event.implicit {\n\t\t\tstyle = yaml_SINGLE_QUOTED_SCALAR_STYLE\n\t\t}\n\t}\n\tif style == yaml_SINGLE_QUOTED_SCALAR_STYLE {\n\t\tif !emitter.scalar_data.single_quoted_allowed {\n\t\t\tstyle = yaml_DOUBLE_QUOTED_SCALAR_STYLE\n\t\t}\n\t}\n\tif style == yaml_LITERAL_SCALAR_STYLE || style == yaml_FOLDED_SCALAR_STYLE {\n\t\tif !emitter.scalar_data.block_allowed || emitter.flow_level > 0 || emitter.simple_key_context {\n\t\t\tstyle = yaml_DOUBLE_QUOTED_SCALAR_STYLE\n\t\t}\n\t}\n\n\tif no_tag && !event.quoted_implicit && style != yaml_PLAIN_SCALAR_STYLE {\n\t\temitter.tag_data.handle = []byte{'!'}\n\t}\n\temitter.scalar_data.style = style\n\treturn true\n}\n\n// Write an anchor.\nfunc yaml_emitter_process_anchor(emitter *yaml_emitter_t) bool {\n\tif emitter.anchor_data.anchor == nil {\n\t\treturn true\n\t}\n\tc := []byte{'&'}\n\tif emitter.anchor_data.alias {\n\t\tc[0] = '*'\n\t}\n\tif !yaml_emitter_write_indicator(emitter, c, true, false, false) {\n\t\treturn false\n\t}\n\treturn yaml_emitter_write_anchor(emitter, emitter.anchor_data.anchor)\n}\n\n// Write a tag.\nfunc yaml_emitter_process_tag(emitter *yaml_emitter_t) bool {\n\tif len(emitter.tag_data.handle) == 0 && len(emitter.tag_data.suffix) == 0 {\n\t\treturn true\n\t}\n\tif len(emitter.tag_data.handle) > 0 {\n\t\tif !yaml_emitter_write_tag_handle(emitter, emitter.tag_data.handle) {\n\t\t\treturn false\n\t\t}\n\t\tif len(emitter.tag_data.suffix) > 0 {\n\t\t\tif !yaml_emitter_write_tag_content(emitter, emitter.tag_data.suffix, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// [Go] Allocate these slices elsewhere.\n\t\tif !yaml_emitter_write_indicator(emitter, []byte(\"!<\"), true, false, false) {\n\t\t\treturn false\n\t\t}\n\t\tif !yaml_emitter_write_tag_content(emitter, emitter.tag_data.suffix, false) {\n\t\t\treturn false\n\t\t}\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{'>'}, false, false, false) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// Write a scalar.\nfunc yaml_emitter_process_scalar(emitter *yaml_emitter_t) bool {\n\tswitch emitter.scalar_data.style {\n\tcase yaml_PLAIN_SCALAR_STYLE:\n\t\treturn yaml_emitter_write_plain_scalar(emitter, emitter.scalar_data.value, !emitter.simple_key_context)\n\n\tcase yaml_SINGLE_QUOTED_SCALAR_STYLE:\n\t\treturn yaml_emitter_write_single_quoted_scalar(emitter, emitter.scalar_data.value, !emitter.simple_key_context)\n\n\tcase yaml_DOUBLE_QUOTED_SCALAR_STYLE:\n\t\treturn yaml_emitter_write_double_quoted_scalar(emitter, emitter.scalar_data.value, !emitter.simple_key_context)\n\n\tcase yaml_LITERAL_SCALAR_STYLE:\n\t\treturn yaml_emitter_write_literal_scalar(emitter, emitter.scalar_data.value)\n\n\tcase yaml_FOLDED_SCALAR_STYLE:\n\t\treturn yaml_emitter_write_folded_scalar(emitter, emitter.scalar_data.value)\n\t}\n\tpanic(\"unknown scalar style\")\n}\n\n// Write a head comment.\nfunc yaml_emitter_process_head_comment(emitter *yaml_emitter_t) bool {\n\tif len(emitter.tail_comment) > 0 {\n\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\treturn false\n\t\t}\n\t\tif !yaml_emitter_write_comment(emitter, emitter.tail_comment) {\n\t\t\treturn false\n\t\t}\n\t\temitter.tail_comment = emitter.tail_comment[:0]\n\t\temitter.foot_indent = emitter.indent\n\t\tif emitter.foot_indent < 0 {\n\t\t\temitter.foot_indent = 0\n\t\t}\n\t}\n\n\tif len(emitter.head_comment) == 0 {\n\t\treturn true\n\t}\n\tif !yaml_emitter_write_indent(emitter) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_write_comment(emitter, emitter.head_comment) {\n\t\treturn false\n\t}\n\temitter.head_comment = emitter.head_comment[:0]\n\treturn true\n}\n\n// Write an line comment.\nfunc yaml_emitter_process_line_comment_linebreak(emitter *yaml_emitter_t, linebreak bool) bool {\n\tif len(emitter.line_comment) == 0 {\n\t\t// The next 3 lines are needed to resolve an issue with leading newlines\n\t\t// See https://github.com/go-yaml/yaml/issues/755\n\t\t// When linebreak is set to true, put_break will be called and will add\n\t\t// the needed newline.\n\t\tif linebreak && !put_break(emitter) {\n\t\t\treturn false\n\t\t}\n\t\treturn true\n\t}\n\tif !emitter.whitespace {\n\t\tif !put(emitter, ' ') {\n\t\t\treturn false\n\t\t}\n\t}\n\tif !yaml_emitter_write_comment(emitter, emitter.line_comment) {\n\t\treturn false\n\t}\n\temitter.line_comment = emitter.line_comment[:0]\n\treturn true\n}\n\n// Write a foot comment.\nfunc yaml_emitter_process_foot_comment(emitter *yaml_emitter_t) bool {\n\tif len(emitter.foot_comment) == 0 {\n\t\treturn true\n\t}\n\tif !yaml_emitter_write_indent(emitter) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_write_comment(emitter, emitter.foot_comment) {\n\t\treturn false\n\t}\n\temitter.foot_comment = emitter.foot_comment[:0]\n\temitter.foot_indent = emitter.indent\n\tif emitter.foot_indent < 0 {\n\t\temitter.foot_indent = 0\n\t}\n\treturn true\n}\n\n// Check if a %YAML directive is valid.\nfunc yaml_emitter_analyze_version_directive(emitter *yaml_emitter_t, version_directive *yaml_version_directive_t) bool {\n\tif version_directive.major != 1 || version_directive.minor != 1 {\n\t\treturn yaml_emitter_set_emitter_error(emitter, \"incompatible %YAML directive\")\n\t}\n\treturn true\n}\n\n// Check if a %TAG directive is valid.\nfunc yaml_emitter_analyze_tag_directive(emitter *yaml_emitter_t, tag_directive *yaml_tag_directive_t) bool {\n\thandle := tag_directive.handle\n\tprefix := tag_directive.prefix\n\tif len(handle) == 0 {\n\t\treturn yaml_emitter_set_emitter_error(emitter, \"tag handle must not be empty\")\n\t}\n\tif handle[0] != '!' {\n\t\treturn yaml_emitter_set_emitter_error(emitter, \"tag handle must start with '!'\")\n\t}\n\tif handle[len(handle)-1] != '!' {\n\t\treturn yaml_emitter_set_emitter_error(emitter, \"tag handle must end with '!'\")\n\t}\n\tfor i := 1; i < len(handle)-1; i += width(handle[i]) {\n\t\tif !is_alpha(handle, i) {\n\t\t\treturn yaml_emitter_set_emitter_error(emitter, \"tag handle must contain alphanumerical characters only\")\n\t\t}\n\t}\n\tif len(prefix) == 0 {\n\t\treturn yaml_emitter_set_emitter_error(emitter, \"tag prefix must not be empty\")\n\t}\n\treturn true\n}\n\n// Check if an anchor is valid.\nfunc yaml_emitter_analyze_anchor(emitter *yaml_emitter_t, anchor []byte, alias bool) bool {\n\tif len(anchor) == 0 {\n\t\tproblem := \"anchor value must not be empty\"\n\t\tif alias {\n\t\t\tproblem = \"alias value must not be empty\"\n\t\t}\n\t\treturn yaml_emitter_set_emitter_error(emitter, problem)\n\t}\n\tfor i := 0; i < len(anchor); i += width(anchor[i]) {\n\t\tif !is_alpha(anchor, i) {\n\t\t\tproblem := \"anchor value must contain alphanumerical characters only\"\n\t\t\tif alias {\n\t\t\t\tproblem = \"alias value must contain alphanumerical characters only\"\n\t\t\t}\n\t\t\treturn yaml_emitter_set_emitter_error(emitter, problem)\n\t\t}\n\t}\n\temitter.anchor_data.anchor = anchor\n\temitter.anchor_data.alias = alias\n\treturn true\n}\n\n// Check if a tag is valid.\nfunc yaml_emitter_analyze_tag(emitter *yaml_emitter_t, tag []byte) bool {\n\tif len(tag) == 0 {\n\t\treturn yaml_emitter_set_emitter_error(emitter, \"tag value must not be empty\")\n\t}\n\tfor i := 0; i < len(emitter.tag_directives); i++ {\n\t\ttag_directive := &emitter.tag_directives[i]\n\t\tif bytes.HasPrefix(tag, tag_directive.prefix) {\n\t\t\temitter.tag_data.handle = tag_directive.handle\n\t\t\temitter.tag_data.suffix = tag[len(tag_directive.prefix):]\n\t\t\treturn true\n\t\t}\n\t}\n\temitter.tag_data.suffix = tag\n\treturn true\n}\n\n// Check if a scalar is valid.\nfunc yaml_emitter_analyze_scalar(emitter *yaml_emitter_t, value []byte) bool {\n\tvar (\n\t\tblock_indicators   = false\n\t\tflow_indicators    = false\n\t\tline_breaks        = false\n\t\tspecial_characters = false\n\t\ttab_characters     = false\n\n\t\tleading_space  = false\n\t\tleading_break  = false\n\t\ttrailing_space = false\n\t\ttrailing_break = false\n\t\tbreak_space    = false\n\t\tspace_break    = false\n\n\t\tpreceded_by_whitespace = false\n\t\tfollowed_by_whitespace = false\n\t\tprevious_space         = false\n\t\tprevious_break         = false\n\t)\n\n\temitter.scalar_data.value = value\n\n\tif len(value) == 0 {\n\t\temitter.scalar_data.multiline = false\n\t\temitter.scalar_data.flow_plain_allowed = false\n\t\temitter.scalar_data.block_plain_allowed = true\n\t\temitter.scalar_data.single_quoted_allowed = true\n\t\temitter.scalar_data.block_allowed = false\n\t\treturn true\n\t}\n\n\tif len(value) >= 3 && ((value[0] == '-' && value[1] == '-' && value[2] == '-') || (value[0] == '.' && value[1] == '.' && value[2] == '.')) {\n\t\tblock_indicators = true\n\t\tflow_indicators = true\n\t}\n\n\tpreceded_by_whitespace = true\n\tfor i, w := 0, 0; i < len(value); i += w {\n\t\tw = width(value[i])\n\t\tfollowed_by_whitespace = i+w >= len(value) || is_blank(value, i+w)\n\n\t\tif i == 0 {\n\t\t\tswitch value[i] {\n\t\t\tcase '#', ',', '[', ']', '{', '}', '&', '*', '!', '|', '>', '\\'', '\"', '%', '@', '`':\n\t\t\t\tflow_indicators = true\n\t\t\t\tblock_indicators = true\n\t\t\tcase '?', ':':\n\t\t\t\tflow_indicators = true\n\t\t\t\tif followed_by_whitespace {\n\t\t\t\t\tblock_indicators = true\n\t\t\t\t}\n\t\t\tcase '-':\n\t\t\t\tif followed_by_whitespace {\n\t\t\t\t\tflow_indicators = true\n\t\t\t\t\tblock_indicators = true\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tswitch value[i] {\n\t\t\tcase ',', '?', '[', ']', '{', '}':\n\t\t\t\tflow_indicators = true\n\t\t\tcase ':':\n\t\t\t\tflow_indicators = true\n\t\t\t\tif followed_by_whitespace {\n\t\t\t\t\tblock_indicators = true\n\t\t\t\t}\n\t\t\tcase '#':\n\t\t\t\tif preceded_by_whitespace {\n\t\t\t\t\tflow_indicators = true\n\t\t\t\t\tblock_indicators = true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif value[i] == '\\t' {\n\t\t\ttab_characters = true\n\t\t} else if !is_printable(value, i) || !is_ascii(value, i) && !emitter.unicode {\n\t\t\tspecial_characters = true\n\t\t}\n\t\tif is_space(value, i) {\n\t\t\tif i == 0 {\n\t\t\t\tleading_space = true\n\t\t\t}\n\t\t\tif i+width(value[i]) == len(value) {\n\t\t\t\ttrailing_space = true\n\t\t\t}\n\t\t\tif previous_break {\n\t\t\t\tbreak_space = true\n\t\t\t}\n\t\t\tprevious_space = true\n\t\t\tprevious_break = false\n\t\t} else if is_break(value, i) {\n\t\t\tline_breaks = true\n\t\t\tif i == 0 {\n\t\t\t\tleading_break = true\n\t\t\t}\n\t\t\tif i+width(value[i]) == len(value) {\n\t\t\t\ttrailing_break = true\n\t\t\t}\n\t\t\tif previous_space {\n\t\t\t\tspace_break = true\n\t\t\t}\n\t\t\tprevious_space = false\n\t\t\tprevious_break = true\n\t\t} else {\n\t\t\tprevious_space = false\n\t\t\tprevious_break = false\n\t\t}\n\n\t\t// [Go]: Why 'z'? Couldn't be the end of the string as that's the loop condition.\n\t\tpreceded_by_whitespace = is_blankz(value, i)\n\t}\n\n\temitter.scalar_data.multiline = line_breaks\n\temitter.scalar_data.flow_plain_allowed = true\n\temitter.scalar_data.block_plain_allowed = true\n\temitter.scalar_data.single_quoted_allowed = true\n\temitter.scalar_data.block_allowed = true\n\n\tif leading_space || leading_break || trailing_space || trailing_break {\n\t\temitter.scalar_data.flow_plain_allowed = false\n\t\temitter.scalar_data.block_plain_allowed = false\n\t}\n\tif trailing_space {\n\t\temitter.scalar_data.block_allowed = false\n\t}\n\tif break_space {\n\t\temitter.scalar_data.flow_plain_allowed = false\n\t\temitter.scalar_data.block_plain_allowed = false\n\t\temitter.scalar_data.single_quoted_allowed = false\n\t}\n\tif space_break || tab_characters || special_characters {\n\t\temitter.scalar_data.flow_plain_allowed = false\n\t\temitter.scalar_data.block_plain_allowed = false\n\t\temitter.scalar_data.single_quoted_allowed = false\n\t}\n\tif space_break || special_characters {\n\t\temitter.scalar_data.block_allowed = false\n\t}\n\tif line_breaks {\n\t\temitter.scalar_data.flow_plain_allowed = false\n\t\temitter.scalar_data.block_plain_allowed = false\n\t}\n\tif flow_indicators {\n\t\temitter.scalar_data.flow_plain_allowed = false\n\t}\n\tif block_indicators {\n\t\temitter.scalar_data.block_plain_allowed = false\n\t}\n\treturn true\n}\n\n// Check if the event data is valid.\nfunc yaml_emitter_analyze_event(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\n\temitter.anchor_data.anchor = nil\n\temitter.tag_data.handle = nil\n\temitter.tag_data.suffix = nil\n\temitter.scalar_data.value = nil\n\n\tif len(event.head_comment) > 0 {\n\t\temitter.head_comment = event.head_comment\n\t}\n\tif len(event.line_comment) > 0 {\n\t\temitter.line_comment = event.line_comment\n\t}\n\tif len(event.foot_comment) > 0 {\n\t\temitter.foot_comment = event.foot_comment\n\t}\n\tif len(event.tail_comment) > 0 {\n\t\temitter.tail_comment = event.tail_comment\n\t}\n\n\tswitch event.typ {\n\tcase yaml_ALIAS_EVENT:\n\t\tif !yaml_emitter_analyze_anchor(emitter, event.anchor, true) {\n\t\t\treturn false\n\t\t}\n\n\tcase yaml_SCALAR_EVENT:\n\t\tif len(event.anchor) > 0 {\n\t\t\tif !yaml_emitter_analyze_anchor(emitter, event.anchor, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif len(event.tag) > 0 && (emitter.canonical || (!event.implicit && !event.quoted_implicit)) {\n\t\t\tif !yaml_emitter_analyze_tag(emitter, event.tag) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif !yaml_emitter_analyze_scalar(emitter, event.value) {\n\t\t\treturn false\n\t\t}\n\n\tcase yaml_SEQUENCE_START_EVENT:\n\t\tif len(event.anchor) > 0 {\n\t\t\tif !yaml_emitter_analyze_anchor(emitter, event.anchor, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif len(event.tag) > 0 && (emitter.canonical || !event.implicit) {\n\t\t\tif !yaml_emitter_analyze_tag(emitter, event.tag) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\tcase yaml_MAPPING_START_EVENT:\n\t\tif len(event.anchor) > 0 {\n\t\t\tif !yaml_emitter_analyze_anchor(emitter, event.anchor, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif len(event.tag) > 0 && (emitter.canonical || !event.implicit) {\n\t\t\tif !yaml_emitter_analyze_tag(emitter, event.tag) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t}\n\treturn true\n}\n\n// Write the BOM character.\nfunc yaml_emitter_write_bom(emitter *yaml_emitter_t) bool {\n\tif !flush(emitter) {\n\t\treturn false\n\t}\n\tpos := emitter.buffer_pos\n\temitter.buffer[pos+0] = '\\xEF'\n\temitter.buffer[pos+1] = '\\xBB'\n\temitter.buffer[pos+2] = '\\xBF'\n\temitter.buffer_pos += 3\n\treturn true\n}\n\nfunc yaml_emitter_write_indent(emitter *yaml_emitter_t) bool {\n\tindent := emitter.indent\n\tif indent < 0 {\n\t\tindent = 0\n\t}\n\tif !emitter.indention || emitter.column > indent || (emitter.column == indent && !emitter.whitespace) {\n\t\tif !put_break(emitter) {\n\t\t\treturn false\n\t\t}\n\t}\n\tif emitter.foot_indent == indent {\n\t\tif !put_break(emitter) {\n\t\t\treturn false\n\t\t}\n\t}\n\tfor emitter.column < indent {\n\t\tif !put(emitter, ' ') {\n\t\t\treturn false\n\t\t}\n\t}\n\temitter.whitespace = true\n\t//emitter.indention = true\n\temitter.space_above = false\n\temitter.foot_indent = -1\n\treturn true\n}\n\nfunc yaml_emitter_write_indicator(emitter *yaml_emitter_t, indicator []byte, need_whitespace, is_whitespace, is_indention bool) bool {\n\tif need_whitespace && !emitter.whitespace {\n\t\tif !put(emitter, ' ') {\n\t\t\treturn false\n\t\t}\n\t}\n\tif !write_all(emitter, indicator) {\n\t\treturn false\n\t}\n\temitter.whitespace = is_whitespace\n\temitter.indention = (emitter.indention && is_indention)\n\temitter.open_ended = false\n\treturn true\n}\n\nfunc yaml_emitter_write_anchor(emitter *yaml_emitter_t, value []byte) bool {\n\tif !write_all(emitter, value) {\n\t\treturn false\n\t}\n\temitter.whitespace = false\n\temitter.indention = false\n\treturn true\n}\n\nfunc yaml_emitter_write_tag_handle(emitter *yaml_emitter_t, value []byte) bool {\n\tif !emitter.whitespace {\n\t\tif !put(emitter, ' ') {\n\t\t\treturn false\n\t\t}\n\t}\n\tif !write_all(emitter, value) {\n\t\treturn false\n\t}\n\temitter.whitespace = false\n\temitter.indention = false\n\treturn true\n}\n\nfunc yaml_emitter_write_tag_content(emitter *yaml_emitter_t, value []byte, need_whitespace bool) bool {\n\tif need_whitespace && !emitter.whitespace {\n\t\tif !put(emitter, ' ') {\n\t\t\treturn false\n\t\t}\n\t}\n\tfor i := 0; i < len(value); {\n\t\tvar must_write bool\n\t\tswitch value[i] {\n\t\tcase ';', '/', '?', ':', '@', '&', '=', '+', '$', ',', '_', '.', '~', '*', '\\'', '(', ')', '[', ']':\n\t\t\tmust_write = true\n\t\tdefault:\n\t\t\tmust_write = is_alpha(value, i)\n\t\t}\n\t\tif must_write {\n\t\t\tif !write(emitter, value, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t} else {\n\t\t\tw := width(value[i])\n\t\t\tfor k := 0; k < w; k++ {\n\t\t\t\toctet := value[i]\n\t\t\t\ti++\n\t\t\t\tif !put(emitter, '%') {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\t\tc := octet >> 4\n\t\t\t\tif c < 10 {\n\t\t\t\t\tc += '0'\n\t\t\t\t} else {\n\t\t\t\t\tc += 'A' - 10\n\t\t\t\t}\n\t\t\t\tif !put(emitter, c) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\t\tc = octet & 0x0f\n\t\t\t\tif c < 10 {\n\t\t\t\t\tc += '0'\n\t\t\t\t} else {\n\t\t\t\t\tc += 'A' - 10\n\t\t\t\t}\n\t\t\t\tif !put(emitter, c) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\temitter.whitespace = false\n\temitter.indention = false\n\treturn true\n}\n\nfunc yaml_emitter_write_plain_scalar(emitter *yaml_emitter_t, value []byte, allow_breaks bool) bool {\n\tif len(value) > 0 && !emitter.whitespace {\n\t\tif !put(emitter, ' ') {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tspaces := false\n\tbreaks := false\n\tfor i := 0; i < len(value); {\n\t\tif is_space(value, i) {\n\t\t\tif allow_breaks && !spaces && emitter.column > emitter.best_width && !is_space(value, i+1) {\n\t\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\ti += width(value[i])\n\t\t\t} else {\n\t\t\t\tif !write(emitter, value, &i) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tspaces = true\n\t\t} else if is_break(value, i) {\n\t\t\tif !breaks && value[i] == '\\n' {\n\t\t\t\tif !put_break(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !write_break(emitter, value, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\t//emitter.indention = true\n\t\t\tbreaks = true\n\t\t} else {\n\t\t\tif breaks {\n\t\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !write(emitter, value, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\temitter.indention = false\n\t\t\tspaces = false\n\t\t\tbreaks = false\n\t\t}\n\t}\n\n\tif len(value) > 0 {\n\t\temitter.whitespace = false\n\t}\n\temitter.indention = false\n\tif emitter.root_context {\n\t\temitter.open_ended = true\n\t}\n\n\treturn true\n}\n\nfunc yaml_emitter_write_single_quoted_scalar(emitter *yaml_emitter_t, value []byte, allow_breaks bool) bool {\n\n\tif !yaml_emitter_write_indicator(emitter, []byte{'\\''}, true, false, false) {\n\t\treturn false\n\t}\n\n\tspaces := false\n\tbreaks := false\n\tfor i := 0; i < len(value); {\n\t\tif is_space(value, i) {\n\t\t\tif allow_breaks && !spaces && emitter.column > emitter.best_width && i > 0 && i < len(value)-1 && !is_space(value, i+1) {\n\t\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\ti += width(value[i])\n\t\t\t} else {\n\t\t\t\tif !write(emitter, value, &i) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tspaces = true\n\t\t} else if is_break(value, i) {\n\t\t\tif !breaks && value[i] == '\\n' {\n\t\t\t\tif !put_break(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !write_break(emitter, value, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\t//emitter.indention = true\n\t\t\tbreaks = true\n\t\t} else {\n\t\t\tif breaks {\n\t\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tif value[i] == '\\'' {\n\t\t\t\tif !put(emitter, '\\'') {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !write(emitter, value, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\temitter.indention = false\n\t\t\tspaces = false\n\t\t\tbreaks = false\n\t\t}\n\t}\n\tif !yaml_emitter_write_indicator(emitter, []byte{'\\''}, false, false, false) {\n\t\treturn false\n\t}\n\temitter.whitespace = false\n\temitter.indention = false\n\treturn true\n}\n\nfunc yaml_emitter_write_double_quoted_scalar(emitter *yaml_emitter_t, value []byte, allow_breaks bool) bool {\n\tspaces := false\n\tif !yaml_emitter_write_indicator(emitter, []byte{'\"'}, true, false, false) {\n\t\treturn false\n\t}\n\n\tfor i := 0; i < len(value); {\n\t\tif !is_printable(value, i) || (!emitter.unicode && !is_ascii(value, i)) ||\n\t\t\tis_bom(value, i) || is_break(value, i) ||\n\t\t\tvalue[i] == '\"' || value[i] == '\\\\' {\n\n\t\t\toctet := value[i]\n\n\t\t\tvar w int\n\t\t\tvar v rune\n\t\t\tswitch {\n\t\t\tcase octet&0x80 == 0x00:\n\t\t\t\tw, v = 1, rune(octet&0x7F)\n\t\t\tcase octet&0xE0 == 0xC0:\n\t\t\t\tw, v = 2, rune(octet&0x1F)\n\t\t\tcase octet&0xF0 == 0xE0:\n\t\t\t\tw, v = 3, rune(octet&0x0F)\n\t\t\tcase octet&0xF8 == 0xF0:\n\t\t\t\tw, v = 4, rune(octet&0x07)\n\t\t\t}\n\t\t\tfor k := 1; k < w; k++ {\n\t\t\t\toctet = value[i+k]\n\t\t\t\tv = (v << 6) + (rune(octet) & 0x3F)\n\t\t\t}\n\t\t\ti += w\n\n\t\t\tif !put(emitter, '\\\\') {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\tvar ok bool\n\t\t\tswitch v {\n\t\t\tcase 0x00:\n\t\t\t\tok = put(emitter, '0')\n\t\t\tcase 0x07:\n\t\t\t\tok = put(emitter, 'a')\n\t\t\tcase 0x08:\n\t\t\t\tok = put(emitter, 'b')\n\t\t\tcase 0x09:\n\t\t\t\tok = put(emitter, 't')\n\t\t\tcase 0x0A:\n\t\t\t\tok = put(emitter, 'n')\n\t\t\tcase 0x0b:\n\t\t\t\tok = put(emitter, 'v')\n\t\t\tcase 0x0c:\n\t\t\t\tok = put(emitter, 'f')\n\t\t\tcase 0x0d:\n\t\t\t\tok = put(emitter, 'r')\n\t\t\tcase 0x1b:\n\t\t\t\tok = put(emitter, 'e')\n\t\t\tcase 0x22:\n\t\t\t\tok = put(emitter, '\"')\n\t\t\tcase 0x5c:\n\t\t\t\tok = put(emitter, '\\\\')\n\t\t\tcase 0x85:\n\t\t\t\tok = put(emitter, 'N')\n\t\t\tcase 0xA0:\n\t\t\t\tok = put(emitter, '_')\n\t\t\tcase 0x2028:\n\t\t\t\tok = put(emitter, 'L')\n\t\t\tcase 0x2029:\n\t\t\t\tok = put(emitter, 'P')\n\t\t\tdefault:\n\t\t\t\tif v <= 0xFF {\n\t\t\t\t\tok = put(emitter, 'x')\n\t\t\t\t\tw = 2\n\t\t\t\t} else if v <= 0xFFFF {\n\t\t\t\t\tok = put(emitter, 'u')\n\t\t\t\t\tw = 4\n\t\t\t\t} else {\n\t\t\t\t\tok = put(emitter, 'U')\n\t\t\t\t\tw = 8\n\t\t\t\t}\n\t\t\t\tfor k := (w - 1) * 4; ok && k >= 0; k -= 4 {\n\t\t\t\t\tdigit := byte((v >> uint(k)) & 0x0F)\n\t\t\t\t\tif digit < 10 {\n\t\t\t\t\t\tok = put(emitter, digit+'0')\n\t\t\t\t\t} else {\n\t\t\t\t\t\tok = put(emitter, digit+'A'-10)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !ok {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tspaces = false\n\t\t} else if is_space(value, i) {\n\t\t\tif allow_breaks && !spaces && emitter.column > emitter.best_width && i > 0 && i < len(value)-1 {\n\t\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tif is_space(value, i+1) {\n\t\t\t\t\tif !put(emitter, '\\\\') {\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ti += width(value[i])\n\t\t\t} else if !write(emitter, value, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tspaces = true\n\t\t} else {\n\t\t\tif !write(emitter, value, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tspaces = false\n\t\t}\n\t}\n\tif !yaml_emitter_write_indicator(emitter, []byte{'\"'}, false, false, false) {\n\t\treturn false\n\t}\n\temitter.whitespace = false\n\temitter.indention = false\n\treturn true\n}\n\nfunc yaml_emitter_write_block_scalar_hints(emitter *yaml_emitter_t, value []byte) bool {\n\tif is_space(value, 0) || is_break(value, 0) {\n\t\tindent_hint := []byte{'0' + byte(emitter.best_indent)}\n\t\tif !yaml_emitter_write_indicator(emitter, indent_hint, false, false, false) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\temitter.open_ended = false\n\n\tvar chomp_hint [1]byte\n\tif len(value) == 0 {\n\t\tchomp_hint[0] = '-'\n\t} else {\n\t\ti := len(value) - 1\n\t\tfor value[i]&0xC0 == 0x80 {\n\t\t\ti--\n\t\t}\n\t\tif !is_break(value, i) {\n\t\t\tchomp_hint[0] = '-'\n\t\t} else if i == 0 {\n\t\t\tchomp_hint[0] = '+'\n\t\t\temitter.open_ended = true\n\t\t} else {\n\t\t\ti--\n\t\t\tfor value[i]&0xC0 == 0x80 {\n\t\t\t\ti--\n\t\t\t}\n\t\t\tif is_break(value, i) {\n\t\t\t\tchomp_hint[0] = '+'\n\t\t\t\temitter.open_ended = true\n\t\t\t}\n\t\t}\n\t}\n\tif chomp_hint[0] != 0 {\n\t\tif !yaml_emitter_write_indicator(emitter, chomp_hint[:], false, false, false) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\nfunc yaml_emitter_write_literal_scalar(emitter *yaml_emitter_t, value []byte) bool {\n\tif !yaml_emitter_write_indicator(emitter, []byte{'|'}, true, false, false) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_write_block_scalar_hints(emitter, value) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_process_line_comment_linebreak(emitter, true) {\n\t\treturn false\n\t}\n\t//emitter.indention = true\n\temitter.whitespace = true\n\tbreaks := true\n\tfor i := 0; i < len(value); {\n\t\tif is_break(value, i) {\n\t\t\tif !write_break(emitter, value, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\t//emitter.indention = true\n\t\t\tbreaks = true\n\t\t} else {\n\t\t\tif breaks {\n\t\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !write(emitter, value, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\temitter.indention = false\n\t\t\tbreaks = false\n\t\t}\n\t}\n\n\treturn true\n}\n\nfunc yaml_emitter_write_folded_scalar(emitter *yaml_emitter_t, value []byte) bool {\n\tif !yaml_emitter_write_indicator(emitter, []byte{'>'}, true, false, false) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_write_block_scalar_hints(emitter, value) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_process_line_comment_linebreak(emitter, true) {\n\t\treturn false\n\t}\n\n\t//emitter.indention = true\n\temitter.whitespace = true\n\n\tbreaks := true\n\tleading_spaces := true\n\tfor i := 0; i < len(value); {\n\t\tif is_break(value, i) {\n\t\t\tif !breaks && !leading_spaces && value[i] == '\\n' {\n\t\t\t\tk := 0\n\t\t\t\tfor is_break(value, k) {\n\t\t\t\t\tk += width(value[k])\n\t\t\t\t}\n\t\t\t\tif !is_blankz(value, k) {\n\t\t\t\t\tif !put_break(emitter) {\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !write_break(emitter, value, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\t//emitter.indention = true\n\t\t\tbreaks = true\n\t\t} else {\n\t\t\tif breaks {\n\t\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tleading_spaces = is_blank(value, i)\n\t\t\t}\n\t\t\tif !breaks && is_space(value, i) && !is_space(value, i+1) && emitter.column > emitter.best_width {\n\t\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\ti += width(value[i])\n\t\t\t} else {\n\t\t\t\tif !write(emitter, value, &i) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\temitter.indention = false\n\t\t\tbreaks = false\n\t\t}\n\t}\n\treturn true\n}\n\nfunc yaml_emitter_write_comment(emitter *yaml_emitter_t, comment []byte) bool {\n\tbreaks := false\n\tpound := false\n\tfor i := 0; i < len(comment); {\n\t\tif is_break(comment, i) {\n\t\t\tif !write_break(emitter, comment, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\t//emitter.indention = true\n\t\t\tbreaks = true\n\t\t\tpound = false\n\t\t} else {\n\t\t\tif breaks && !yaml_emitter_write_indent(emitter) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif !pound {\n\t\t\t\tif comment[i] != '#' && (!put(emitter, '#') || !put(emitter, ' ')) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tpound = true\n\t\t\t}\n\t\t\tif !write(emitter, comment, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\temitter.indention = false\n\t\t\tbreaks = false\n\t\t}\n\t}\n\tif !breaks && !put_break(emitter) {\n\t\treturn false\n\t}\n\n\temitter.whitespace = true\n\t//emitter.indention = true\n\treturn true\n}\n"
  },
  {
    "path": "tests/vendor/go.yaml.in/yaml/v3/encode.go",
    "content": "//\n// Copyright (c) 2011-2019 Canonical Ltd\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage yaml\n\nimport (\n\t\"encoding\"\n\t\"fmt\"\n\t\"io\"\n\t\"reflect\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n)\n\ntype encoder struct {\n\temitter  yaml_emitter_t\n\tevent    yaml_event_t\n\tout      []byte\n\tflow     bool\n\tindent   int\n\tdoneInit bool\n}\n\nfunc newEncoder() *encoder {\n\te := &encoder{}\n\tyaml_emitter_initialize(&e.emitter)\n\tyaml_emitter_set_output_string(&e.emitter, &e.out)\n\tyaml_emitter_set_unicode(&e.emitter, true)\n\treturn e\n}\n\nfunc newEncoderWithWriter(w io.Writer) *encoder {\n\te := &encoder{}\n\tyaml_emitter_initialize(&e.emitter)\n\tyaml_emitter_set_output_writer(&e.emitter, w)\n\tyaml_emitter_set_unicode(&e.emitter, true)\n\treturn e\n}\n\nfunc (e *encoder) init() {\n\tif e.doneInit {\n\t\treturn\n\t}\n\tif e.indent == 0 {\n\t\te.indent = 4\n\t}\n\te.emitter.best_indent = e.indent\n\tyaml_stream_start_event_initialize(&e.event, yaml_UTF8_ENCODING)\n\te.emit()\n\te.doneInit = true\n}\n\nfunc (e *encoder) finish() {\n\te.emitter.open_ended = false\n\tyaml_stream_end_event_initialize(&e.event)\n\te.emit()\n}\n\nfunc (e *encoder) destroy() {\n\tyaml_emitter_delete(&e.emitter)\n}\n\nfunc (e *encoder) emit() {\n\t// This will internally delete the e.event value.\n\te.must(yaml_emitter_emit(&e.emitter, &e.event))\n}\n\nfunc (e *encoder) must(ok bool) {\n\tif !ok {\n\t\tmsg := e.emitter.problem\n\t\tif msg == \"\" {\n\t\t\tmsg = \"unknown problem generating YAML content\"\n\t\t}\n\t\tfailf(\"%s\", msg)\n\t}\n}\n\nfunc (e *encoder) marshalDoc(tag string, in reflect.Value) {\n\te.init()\n\tvar node *Node\n\tif in.IsValid() {\n\t\tnode, _ = in.Interface().(*Node)\n\t}\n\tif node != nil && node.Kind == DocumentNode {\n\t\te.nodev(in)\n\t} else {\n\t\tyaml_document_start_event_initialize(&e.event, nil, nil, true)\n\t\te.emit()\n\t\te.marshal(tag, in)\n\t\tyaml_document_end_event_initialize(&e.event, true)\n\t\te.emit()\n\t}\n}\n\nfunc (e *encoder) marshal(tag string, in reflect.Value) {\n\ttag = shortTag(tag)\n\tif !in.IsValid() || in.Kind() == reflect.Ptr && in.IsNil() {\n\t\te.nilv()\n\t\treturn\n\t}\n\tiface := in.Interface()\n\tswitch value := iface.(type) {\n\tcase *Node:\n\t\te.nodev(in)\n\t\treturn\n\tcase Node:\n\t\tif !in.CanAddr() {\n\t\t\tvar n = reflect.New(in.Type()).Elem()\n\t\t\tn.Set(in)\n\t\t\tin = n\n\t\t}\n\t\te.nodev(in.Addr())\n\t\treturn\n\tcase time.Time:\n\t\te.timev(tag, in)\n\t\treturn\n\tcase *time.Time:\n\t\te.timev(tag, in.Elem())\n\t\treturn\n\tcase time.Duration:\n\t\te.stringv(tag, reflect.ValueOf(value.String()))\n\t\treturn\n\tcase Marshaler:\n\t\tv, err := value.MarshalYAML()\n\t\tif err != nil {\n\t\t\tfail(err)\n\t\t}\n\t\tif v == nil {\n\t\t\te.nilv()\n\t\t\treturn\n\t\t}\n\t\te.marshal(tag, reflect.ValueOf(v))\n\t\treturn\n\tcase encoding.TextMarshaler:\n\t\ttext, err := value.MarshalText()\n\t\tif err != nil {\n\t\t\tfail(err)\n\t\t}\n\t\tin = reflect.ValueOf(string(text))\n\tcase nil:\n\t\te.nilv()\n\t\treturn\n\t}\n\tswitch in.Kind() {\n\tcase reflect.Interface:\n\t\te.marshal(tag, in.Elem())\n\tcase reflect.Map:\n\t\te.mapv(tag, in)\n\tcase reflect.Ptr:\n\t\te.marshal(tag, in.Elem())\n\tcase reflect.Struct:\n\t\te.structv(tag, in)\n\tcase reflect.Slice, reflect.Array:\n\t\te.slicev(tag, in)\n\tcase reflect.String:\n\t\te.stringv(tag, in)\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\te.intv(tag, in)\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\te.uintv(tag, in)\n\tcase reflect.Float32, reflect.Float64:\n\t\te.floatv(tag, in)\n\tcase reflect.Bool:\n\t\te.boolv(tag, in)\n\tdefault:\n\t\tpanic(\"cannot marshal type: \" + in.Type().String())\n\t}\n}\n\nfunc (e *encoder) mapv(tag string, in reflect.Value) {\n\te.mappingv(tag, func() {\n\t\tkeys := keyList(in.MapKeys())\n\t\tsort.Sort(keys)\n\t\tfor _, k := range keys {\n\t\t\te.marshal(\"\", k)\n\t\t\te.marshal(\"\", in.MapIndex(k))\n\t\t}\n\t})\n}\n\nfunc (e *encoder) fieldByIndex(v reflect.Value, index []int) (field reflect.Value) {\n\tfor _, num := range index {\n\t\tfor {\n\t\t\tif v.Kind() == reflect.Ptr {\n\t\t\t\tif v.IsNil() {\n\t\t\t\t\treturn reflect.Value{}\n\t\t\t\t}\n\t\t\t\tv = v.Elem()\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t\tv = v.Field(num)\n\t}\n\treturn v\n}\n\nfunc (e *encoder) structv(tag string, in reflect.Value) {\n\tsinfo, err := getStructInfo(in.Type())\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\te.mappingv(tag, func() {\n\t\tfor _, info := range sinfo.FieldsList {\n\t\t\tvar value reflect.Value\n\t\t\tif info.Inline == nil {\n\t\t\t\tvalue = in.Field(info.Num)\n\t\t\t} else {\n\t\t\t\tvalue = e.fieldByIndex(in, info.Inline)\n\t\t\t\tif !value.IsValid() {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t}\n\t\t\tif info.OmitEmpty && isZero(value) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\te.marshal(\"\", reflect.ValueOf(info.Key))\n\t\t\te.flow = info.Flow\n\t\t\te.marshal(\"\", value)\n\t\t}\n\t\tif sinfo.InlineMap >= 0 {\n\t\t\tm := in.Field(sinfo.InlineMap)\n\t\t\tif m.Len() > 0 {\n\t\t\t\te.flow = false\n\t\t\t\tkeys := keyList(m.MapKeys())\n\t\t\t\tsort.Sort(keys)\n\t\t\t\tfor _, k := range keys {\n\t\t\t\t\tif _, found := sinfo.FieldsMap[k.String()]; found {\n\t\t\t\t\t\tpanic(fmt.Sprintf(\"cannot have key %q in inlined map: conflicts with struct field\", k.String()))\n\t\t\t\t\t}\n\t\t\t\t\te.marshal(\"\", k)\n\t\t\t\t\te.flow = false\n\t\t\t\t\te.marshal(\"\", m.MapIndex(k))\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t})\n}\n\nfunc (e *encoder) mappingv(tag string, f func()) {\n\timplicit := tag == \"\"\n\tstyle := yaml_BLOCK_MAPPING_STYLE\n\tif e.flow {\n\t\te.flow = false\n\t\tstyle = yaml_FLOW_MAPPING_STYLE\n\t}\n\tyaml_mapping_start_event_initialize(&e.event, nil, []byte(tag), implicit, style)\n\te.emit()\n\tf()\n\tyaml_mapping_end_event_initialize(&e.event)\n\te.emit()\n}\n\nfunc (e *encoder) slicev(tag string, in reflect.Value) {\n\timplicit := tag == \"\"\n\tstyle := yaml_BLOCK_SEQUENCE_STYLE\n\tif e.flow {\n\t\te.flow = false\n\t\tstyle = yaml_FLOW_SEQUENCE_STYLE\n\t}\n\te.must(yaml_sequence_start_event_initialize(&e.event, nil, []byte(tag), implicit, style))\n\te.emit()\n\tn := in.Len()\n\tfor i := 0; i < n; i++ {\n\t\te.marshal(\"\", in.Index(i))\n\t}\n\te.must(yaml_sequence_end_event_initialize(&e.event))\n\te.emit()\n}\n\n// isBase60 returns whether s is in base 60 notation as defined in YAML 1.1.\n//\n// The base 60 float notation in YAML 1.1 is a terrible idea and is unsupported\n// in YAML 1.2 and by this package, but these should be marshalled quoted for\n// the time being for compatibility with other parsers.\nfunc isBase60Float(s string) (result bool) {\n\t// Fast path.\n\tif s == \"\" {\n\t\treturn false\n\t}\n\tc := s[0]\n\tif !(c == '+' || c == '-' || c >= '0' && c <= '9') || strings.IndexByte(s, ':') < 0 {\n\t\treturn false\n\t}\n\t// Do the full match.\n\treturn base60float.MatchString(s)\n}\n\n// From http://yaml.org/type/float.html, except the regular expression there\n// is bogus. In practice parsers do not enforce the \"\\.[0-9_]*\" suffix.\nvar base60float = regexp.MustCompile(`^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+(?:\\.[0-9_]*)?$`)\n\n// isOldBool returns whether s is bool notation as defined in YAML 1.1.\n//\n// We continue to force strings that YAML 1.1 would interpret as booleans to be\n// rendered as quotes strings so that the marshalled output valid for YAML 1.1\n// parsing.\nfunc isOldBool(s string) (result bool) {\n\tswitch s {\n\tcase \"y\", \"Y\", \"yes\", \"Yes\", \"YES\", \"on\", \"On\", \"ON\",\n\t\t\"n\", \"N\", \"no\", \"No\", \"NO\", \"off\", \"Off\", \"OFF\":\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\nfunc (e *encoder) stringv(tag string, in reflect.Value) {\n\tvar style yaml_scalar_style_t\n\ts := in.String()\n\tcanUsePlain := true\n\tswitch {\n\tcase !utf8.ValidString(s):\n\t\tif tag == binaryTag {\n\t\t\tfailf(\"explicitly tagged !!binary data must be base64-encoded\")\n\t\t}\n\t\tif tag != \"\" {\n\t\t\tfailf(\"cannot marshal invalid UTF-8 data as %s\", shortTag(tag))\n\t\t}\n\t\t// It can't be encoded directly as YAML so use a binary tag\n\t\t// and encode it as base64.\n\t\ttag = binaryTag\n\t\ts = encodeBase64(s)\n\tcase tag == \"\":\n\t\t// Check to see if it would resolve to a specific\n\t\t// tag when encoded unquoted. If it doesn't,\n\t\t// there's no need to quote it.\n\t\trtag, _ := resolve(\"\", s)\n\t\tcanUsePlain = rtag == strTag && !(isBase60Float(s) || isOldBool(s))\n\t}\n\t// Note: it's possible for user code to emit invalid YAML\n\t// if they explicitly specify a tag and a string containing\n\t// text that's incompatible with that tag.\n\tswitch {\n\tcase strings.Contains(s, \"\\n\"):\n\t\tif e.flow {\n\t\t\tstyle = yaml_DOUBLE_QUOTED_SCALAR_STYLE\n\t\t} else {\n\t\t\tstyle = yaml_LITERAL_SCALAR_STYLE\n\t\t}\n\tcase canUsePlain:\n\t\tstyle = yaml_PLAIN_SCALAR_STYLE\n\tdefault:\n\t\tstyle = yaml_DOUBLE_QUOTED_SCALAR_STYLE\n\t}\n\te.emitScalar(s, \"\", tag, style, nil, nil, nil, nil)\n}\n\nfunc (e *encoder) boolv(tag string, in reflect.Value) {\n\tvar s string\n\tif in.Bool() {\n\t\ts = \"true\"\n\t} else {\n\t\ts = \"false\"\n\t}\n\te.emitScalar(s, \"\", tag, yaml_PLAIN_SCALAR_STYLE, nil, nil, nil, nil)\n}\n\nfunc (e *encoder) intv(tag string, in reflect.Value) {\n\ts := strconv.FormatInt(in.Int(), 10)\n\te.emitScalar(s, \"\", tag, yaml_PLAIN_SCALAR_STYLE, nil, nil, nil, nil)\n}\n\nfunc (e *encoder) uintv(tag string, in reflect.Value) {\n\ts := strconv.FormatUint(in.Uint(), 10)\n\te.emitScalar(s, \"\", tag, yaml_PLAIN_SCALAR_STYLE, nil, nil, nil, nil)\n}\n\nfunc (e *encoder) timev(tag string, in reflect.Value) {\n\tt := in.Interface().(time.Time)\n\ts := t.Format(time.RFC3339Nano)\n\te.emitScalar(s, \"\", tag, yaml_PLAIN_SCALAR_STYLE, nil, nil, nil, nil)\n}\n\nfunc (e *encoder) floatv(tag string, in reflect.Value) {\n\t// Issue #352: When formatting, use the precision of the underlying value\n\tprecision := 64\n\tif in.Kind() == reflect.Float32 {\n\t\tprecision = 32\n\t}\n\n\ts := strconv.FormatFloat(in.Float(), 'g', -1, precision)\n\tswitch s {\n\tcase \"+Inf\":\n\t\ts = \".inf\"\n\tcase \"-Inf\":\n\t\ts = \"-.inf\"\n\tcase \"NaN\":\n\t\ts = \".nan\"\n\t}\n\te.emitScalar(s, \"\", tag, yaml_PLAIN_SCALAR_STYLE, nil, nil, nil, nil)\n}\n\nfunc (e *encoder) nilv() {\n\te.emitScalar(\"null\", \"\", \"\", yaml_PLAIN_SCALAR_STYLE, nil, nil, nil, nil)\n}\n\nfunc (e *encoder) emitScalar(value, anchor, tag string, style yaml_scalar_style_t, head, line, foot, tail []byte) {\n\t// TODO Kill this function. Replace all initialize calls by their underlining Go literals.\n\timplicit := tag == \"\"\n\tif !implicit {\n\t\ttag = longTag(tag)\n\t}\n\te.must(yaml_scalar_event_initialize(&e.event, []byte(anchor), []byte(tag), []byte(value), implicit, implicit, style))\n\te.event.head_comment = head\n\te.event.line_comment = line\n\te.event.foot_comment = foot\n\te.event.tail_comment = tail\n\te.emit()\n}\n\nfunc (e *encoder) nodev(in reflect.Value) {\n\te.node(in.Interface().(*Node), \"\")\n}\n\nfunc (e *encoder) node(node *Node, tail string) {\n\t// Zero nodes behave as nil.\n\tif node.Kind == 0 && node.IsZero() {\n\t\te.nilv()\n\t\treturn\n\t}\n\n\t// If the tag was not explicitly requested, and dropping it won't change the\n\t// implicit tag of the value, don't include it in the presentation.\n\tvar tag = node.Tag\n\tvar stag = shortTag(tag)\n\tvar forceQuoting bool\n\tif tag != \"\" && node.Style&TaggedStyle == 0 {\n\t\tif node.Kind == ScalarNode {\n\t\t\tif stag == strTag && node.Style&(SingleQuotedStyle|DoubleQuotedStyle|LiteralStyle|FoldedStyle) != 0 {\n\t\t\t\ttag = \"\"\n\t\t\t} else {\n\t\t\t\trtag, _ := resolve(\"\", node.Value)\n\t\t\t\tif rtag == stag {\n\t\t\t\t\ttag = \"\"\n\t\t\t\t} else if stag == strTag {\n\t\t\t\t\ttag = \"\"\n\t\t\t\t\tforceQuoting = true\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tvar rtag string\n\t\t\tswitch node.Kind {\n\t\t\tcase MappingNode:\n\t\t\t\trtag = mapTag\n\t\t\tcase SequenceNode:\n\t\t\t\trtag = seqTag\n\t\t\t}\n\t\t\tif rtag == stag {\n\t\t\t\ttag = \"\"\n\t\t\t}\n\t\t}\n\t}\n\n\tswitch node.Kind {\n\tcase DocumentNode:\n\t\tyaml_document_start_event_initialize(&e.event, nil, nil, true)\n\t\te.event.head_comment = []byte(node.HeadComment)\n\t\te.emit()\n\t\tfor _, node := range node.Content {\n\t\t\te.node(node, \"\")\n\t\t}\n\t\tyaml_document_end_event_initialize(&e.event, true)\n\t\te.event.foot_comment = []byte(node.FootComment)\n\t\te.emit()\n\n\tcase SequenceNode:\n\t\tstyle := yaml_BLOCK_SEQUENCE_STYLE\n\t\tif node.Style&FlowStyle != 0 {\n\t\t\tstyle = yaml_FLOW_SEQUENCE_STYLE\n\t\t}\n\t\te.must(yaml_sequence_start_event_initialize(&e.event, []byte(node.Anchor), []byte(longTag(tag)), tag == \"\", style))\n\t\te.event.head_comment = []byte(node.HeadComment)\n\t\te.emit()\n\t\tfor _, node := range node.Content {\n\t\t\te.node(node, \"\")\n\t\t}\n\t\te.must(yaml_sequence_end_event_initialize(&e.event))\n\t\te.event.line_comment = []byte(node.LineComment)\n\t\te.event.foot_comment = []byte(node.FootComment)\n\t\te.emit()\n\n\tcase MappingNode:\n\t\tstyle := yaml_BLOCK_MAPPING_STYLE\n\t\tif node.Style&FlowStyle != 0 {\n\t\t\tstyle = yaml_FLOW_MAPPING_STYLE\n\t\t}\n\t\tyaml_mapping_start_event_initialize(&e.event, []byte(node.Anchor), []byte(longTag(tag)), tag == \"\", style)\n\t\te.event.tail_comment = []byte(tail)\n\t\te.event.head_comment = []byte(node.HeadComment)\n\t\te.emit()\n\n\t\t// The tail logic below moves the foot comment of prior keys to the following key,\n\t\t// since the value for each key may be a nested structure and the foot needs to be\n\t\t// processed only the entirety of the value is streamed. The last tail is processed\n\t\t// with the mapping end event.\n\t\tvar tail string\n\t\tfor i := 0; i+1 < len(node.Content); i += 2 {\n\t\t\tk := node.Content[i]\n\t\t\tfoot := k.FootComment\n\t\t\tif foot != \"\" {\n\t\t\t\tkopy := *k\n\t\t\t\tkopy.FootComment = \"\"\n\t\t\t\tk = &kopy\n\t\t\t}\n\t\t\te.node(k, tail)\n\t\t\ttail = foot\n\n\t\t\tv := node.Content[i+1]\n\t\t\te.node(v, \"\")\n\t\t}\n\n\t\tyaml_mapping_end_event_initialize(&e.event)\n\t\te.event.tail_comment = []byte(tail)\n\t\te.event.line_comment = []byte(node.LineComment)\n\t\te.event.foot_comment = []byte(node.FootComment)\n\t\te.emit()\n\n\tcase AliasNode:\n\t\tyaml_alias_event_initialize(&e.event, []byte(node.Value))\n\t\te.event.head_comment = []byte(node.HeadComment)\n\t\te.event.line_comment = []byte(node.LineComment)\n\t\te.event.foot_comment = []byte(node.FootComment)\n\t\te.emit()\n\n\tcase ScalarNode:\n\t\tvalue := node.Value\n\t\tif !utf8.ValidString(value) {\n\t\t\tif stag == binaryTag {\n\t\t\t\tfailf(\"explicitly tagged !!binary data must be base64-encoded\")\n\t\t\t}\n\t\t\tif stag != \"\" {\n\t\t\t\tfailf(\"cannot marshal invalid UTF-8 data as %s\", stag)\n\t\t\t}\n\t\t\t// It can't be encoded directly as YAML so use a binary tag\n\t\t\t// and encode it as base64.\n\t\t\ttag = binaryTag\n\t\t\tvalue = encodeBase64(value)\n\t\t}\n\n\t\tstyle := yaml_PLAIN_SCALAR_STYLE\n\t\tswitch {\n\t\tcase node.Style&DoubleQuotedStyle != 0:\n\t\t\tstyle = yaml_DOUBLE_QUOTED_SCALAR_STYLE\n\t\tcase node.Style&SingleQuotedStyle != 0:\n\t\t\tstyle = yaml_SINGLE_QUOTED_SCALAR_STYLE\n\t\tcase node.Style&LiteralStyle != 0:\n\t\t\tstyle = yaml_LITERAL_SCALAR_STYLE\n\t\tcase node.Style&FoldedStyle != 0:\n\t\t\tstyle = yaml_FOLDED_SCALAR_STYLE\n\t\tcase strings.Contains(value, \"\\n\"):\n\t\t\tstyle = yaml_LITERAL_SCALAR_STYLE\n\t\tcase forceQuoting:\n\t\t\tstyle = yaml_DOUBLE_QUOTED_SCALAR_STYLE\n\t\t}\n\n\t\te.emitScalar(value, node.Anchor, tag, style, []byte(node.HeadComment), []byte(node.LineComment), []byte(node.FootComment), []byte(tail))\n\tdefault:\n\t\tfailf(\"cannot encode node with unknown kind %d\", node.Kind)\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/go.yaml.in/yaml/v3/parserc.go",
    "content": "//\n// Copyright (c) 2011-2019 Canonical Ltd\n// Copyright (c) 2006-2010 Kirill Simonov\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.\n\npackage yaml\n\nimport (\n\t\"bytes\"\n)\n\n// The parser implements the following grammar:\n//\n// stream               ::= STREAM-START implicit_document? explicit_document* STREAM-END\n// implicit_document    ::= block_node DOCUMENT-END*\n// explicit_document    ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END*\n// block_node_or_indentless_sequence    ::=\n//                          ALIAS\n//                          | properties (block_content | indentless_block_sequence)?\n//                          | block_content\n//                          | indentless_block_sequence\n// block_node           ::= ALIAS\n//                          | properties block_content?\n//                          | block_content\n// flow_node            ::= ALIAS\n//                          | properties flow_content?\n//                          | flow_content\n// properties           ::= TAG ANCHOR? | ANCHOR TAG?\n// block_content        ::= block_collection | flow_collection | SCALAR\n// flow_content         ::= flow_collection | SCALAR\n// block_collection     ::= block_sequence | block_mapping\n// flow_collection      ::= flow_sequence | flow_mapping\n// block_sequence       ::= BLOCK-SEQUENCE-START (BLOCK-ENTRY block_node?)* BLOCK-END\n// indentless_sequence  ::= (BLOCK-ENTRY block_node?)+\n// block_mapping        ::= BLOCK-MAPPING_START\n//                          ((KEY block_node_or_indentless_sequence?)?\n//                          (VALUE block_node_or_indentless_sequence?)?)*\n//                          BLOCK-END\n// flow_sequence        ::= FLOW-SEQUENCE-START\n//                          (flow_sequence_entry FLOW-ENTRY)*\n//                          flow_sequence_entry?\n//                          FLOW-SEQUENCE-END\n// flow_sequence_entry  ::= flow_node | KEY flow_node? (VALUE flow_node?)?\n// flow_mapping         ::= FLOW-MAPPING-START\n//                          (flow_mapping_entry FLOW-ENTRY)*\n//                          flow_mapping_entry?\n//                          FLOW-MAPPING-END\n// flow_mapping_entry   ::= flow_node | KEY flow_node? (VALUE flow_node?)?\n\n// Peek the next token in the token queue.\nfunc peek_token(parser *yaml_parser_t) *yaml_token_t {\n\tif parser.token_available || yaml_parser_fetch_more_tokens(parser) {\n\t\ttoken := &parser.tokens[parser.tokens_head]\n\t\tyaml_parser_unfold_comments(parser, token)\n\t\treturn token\n\t}\n\treturn nil\n}\n\n// yaml_parser_unfold_comments walks through the comments queue and joins all\n// comments behind the position of the provided token into the respective\n// top-level comment slices in the parser.\nfunc yaml_parser_unfold_comments(parser *yaml_parser_t, token *yaml_token_t) {\n\tfor parser.comments_head < len(parser.comments) && token.start_mark.index >= parser.comments[parser.comments_head].token_mark.index {\n\t\tcomment := &parser.comments[parser.comments_head]\n\t\tif len(comment.head) > 0 {\n\t\t\tif token.typ == yaml_BLOCK_END_TOKEN {\n\t\t\t\t// No heads on ends, so keep comment.head for a follow up token.\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tif len(parser.head_comment) > 0 {\n\t\t\t\tparser.head_comment = append(parser.head_comment, '\\n')\n\t\t\t}\n\t\t\tparser.head_comment = append(parser.head_comment, comment.head...)\n\t\t}\n\t\tif len(comment.foot) > 0 {\n\t\t\tif len(parser.foot_comment) > 0 {\n\t\t\t\tparser.foot_comment = append(parser.foot_comment, '\\n')\n\t\t\t}\n\t\t\tparser.foot_comment = append(parser.foot_comment, comment.foot...)\n\t\t}\n\t\tif len(comment.line) > 0 {\n\t\t\tif len(parser.line_comment) > 0 {\n\t\t\t\tparser.line_comment = append(parser.line_comment, '\\n')\n\t\t\t}\n\t\t\tparser.line_comment = append(parser.line_comment, comment.line...)\n\t\t}\n\t\t*comment = yaml_comment_t{}\n\t\tparser.comments_head++\n\t}\n}\n\n// Remove the next token from the queue (must be called after peek_token).\nfunc skip_token(parser *yaml_parser_t) {\n\tparser.token_available = false\n\tparser.tokens_parsed++\n\tparser.stream_end_produced = parser.tokens[parser.tokens_head].typ == yaml_STREAM_END_TOKEN\n\tparser.tokens_head++\n}\n\n// Get the next event.\nfunc yaml_parser_parse(parser *yaml_parser_t, event *yaml_event_t) bool {\n\t// Erase the event object.\n\t*event = yaml_event_t{}\n\n\t// No events after the end of the stream or error.\n\tif parser.stream_end_produced || parser.error != yaml_NO_ERROR || parser.state == yaml_PARSE_END_STATE {\n\t\treturn true\n\t}\n\n\t// Generate the next event.\n\treturn yaml_parser_state_machine(parser, event)\n}\n\n// Set parser error.\nfunc yaml_parser_set_parser_error(parser *yaml_parser_t, problem string, problem_mark yaml_mark_t) bool {\n\tparser.error = yaml_PARSER_ERROR\n\tparser.problem = problem\n\tparser.problem_mark = problem_mark\n\treturn false\n}\n\nfunc yaml_parser_set_parser_error_context(parser *yaml_parser_t, context string, context_mark yaml_mark_t, problem string, problem_mark yaml_mark_t) bool {\n\tparser.error = yaml_PARSER_ERROR\n\tparser.context = context\n\tparser.context_mark = context_mark\n\tparser.problem = problem\n\tparser.problem_mark = problem_mark\n\treturn false\n}\n\n// State dispatcher.\nfunc yaml_parser_state_machine(parser *yaml_parser_t, event *yaml_event_t) bool {\n\t//trace(\"yaml_parser_state_machine\", \"state:\", parser.state.String())\n\n\tswitch parser.state {\n\tcase yaml_PARSE_STREAM_START_STATE:\n\t\treturn yaml_parser_parse_stream_start(parser, event)\n\n\tcase yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE:\n\t\treturn yaml_parser_parse_document_start(parser, event, true)\n\n\tcase yaml_PARSE_DOCUMENT_START_STATE:\n\t\treturn yaml_parser_parse_document_start(parser, event, false)\n\n\tcase yaml_PARSE_DOCUMENT_CONTENT_STATE:\n\t\treturn yaml_parser_parse_document_content(parser, event)\n\n\tcase yaml_PARSE_DOCUMENT_END_STATE:\n\t\treturn yaml_parser_parse_document_end(parser, event)\n\n\tcase yaml_PARSE_BLOCK_NODE_STATE:\n\t\treturn yaml_parser_parse_node(parser, event, true, false)\n\n\tcase yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE:\n\t\treturn yaml_parser_parse_node(parser, event, true, true)\n\n\tcase yaml_PARSE_FLOW_NODE_STATE:\n\t\treturn yaml_parser_parse_node(parser, event, false, false)\n\n\tcase yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE:\n\t\treturn yaml_parser_parse_block_sequence_entry(parser, event, true)\n\n\tcase yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE:\n\t\treturn yaml_parser_parse_block_sequence_entry(parser, event, false)\n\n\tcase yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE:\n\t\treturn yaml_parser_parse_indentless_sequence_entry(parser, event)\n\n\tcase yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE:\n\t\treturn yaml_parser_parse_block_mapping_key(parser, event, true)\n\n\tcase yaml_PARSE_BLOCK_MAPPING_KEY_STATE:\n\t\treturn yaml_parser_parse_block_mapping_key(parser, event, false)\n\n\tcase yaml_PARSE_BLOCK_MAPPING_VALUE_STATE:\n\t\treturn yaml_parser_parse_block_mapping_value(parser, event)\n\n\tcase yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE:\n\t\treturn yaml_parser_parse_flow_sequence_entry(parser, event, true)\n\n\tcase yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE:\n\t\treturn yaml_parser_parse_flow_sequence_entry(parser, event, false)\n\n\tcase yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE:\n\t\treturn yaml_parser_parse_flow_sequence_entry_mapping_key(parser, event)\n\n\tcase yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE:\n\t\treturn yaml_parser_parse_flow_sequence_entry_mapping_value(parser, event)\n\n\tcase yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE:\n\t\treturn yaml_parser_parse_flow_sequence_entry_mapping_end(parser, event)\n\n\tcase yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE:\n\t\treturn yaml_parser_parse_flow_mapping_key(parser, event, true)\n\n\tcase yaml_PARSE_FLOW_MAPPING_KEY_STATE:\n\t\treturn yaml_parser_parse_flow_mapping_key(parser, event, false)\n\n\tcase yaml_PARSE_FLOW_MAPPING_VALUE_STATE:\n\t\treturn yaml_parser_parse_flow_mapping_value(parser, event, false)\n\n\tcase yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE:\n\t\treturn yaml_parser_parse_flow_mapping_value(parser, event, true)\n\n\tdefault:\n\t\tpanic(\"invalid parser state\")\n\t}\n}\n\n// Parse the production:\n// stream   ::= STREAM-START implicit_document? explicit_document* STREAM-END\n//\n//\t************\nfunc yaml_parser_parse_stream_start(parser *yaml_parser_t, event *yaml_event_t) bool {\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\tif token.typ != yaml_STREAM_START_TOKEN {\n\t\treturn yaml_parser_set_parser_error(parser, \"did not find expected <stream-start>\", token.start_mark)\n\t}\n\tparser.state = yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE\n\t*event = yaml_event_t{\n\t\ttyp:        yaml_STREAM_START_EVENT,\n\t\tstart_mark: token.start_mark,\n\t\tend_mark:   token.end_mark,\n\t\tencoding:   token.encoding,\n\t}\n\tskip_token(parser)\n\treturn true\n}\n\n// Parse the productions:\n// implicit_document    ::= block_node DOCUMENT-END*\n//\n//\t*\n//\n// explicit_document    ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END*\n//\n//\t*************************\nfunc yaml_parser_parse_document_start(parser *yaml_parser_t, event *yaml_event_t, implicit bool) bool {\n\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\n\t// Parse extra document end indicators.\n\tif !implicit {\n\t\tfor token.typ == yaml_DOCUMENT_END_TOKEN {\n\t\t\tskip_token(parser)\n\t\t\ttoken = peek_token(parser)\n\t\t\tif token == nil {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t}\n\n\tif implicit && token.typ != yaml_VERSION_DIRECTIVE_TOKEN &&\n\t\ttoken.typ != yaml_TAG_DIRECTIVE_TOKEN &&\n\t\ttoken.typ != yaml_DOCUMENT_START_TOKEN &&\n\t\ttoken.typ != yaml_STREAM_END_TOKEN {\n\t\t// Parse an implicit document.\n\t\tif !yaml_parser_process_directives(parser, nil, nil) {\n\t\t\treturn false\n\t\t}\n\t\tparser.states = append(parser.states, yaml_PARSE_DOCUMENT_END_STATE)\n\t\tparser.state = yaml_PARSE_BLOCK_NODE_STATE\n\n\t\tvar head_comment []byte\n\t\tif len(parser.head_comment) > 0 {\n\t\t\t// [Go] Scan the header comment backwards, and if an empty line is found, break\n\t\t\t//      the header so the part before the last empty line goes into the\n\t\t\t//      document header, while the bottom of it goes into a follow up event.\n\t\t\tfor i := len(parser.head_comment) - 1; i > 0; i-- {\n\t\t\t\tif parser.head_comment[i] == '\\n' {\n\t\t\t\t\tif i == len(parser.head_comment)-1 {\n\t\t\t\t\t\thead_comment = parser.head_comment[:i]\n\t\t\t\t\t\tparser.head_comment = parser.head_comment[i+1:]\n\t\t\t\t\t\tbreak\n\t\t\t\t\t} else if parser.head_comment[i-1] == '\\n' {\n\t\t\t\t\t\thead_comment = parser.head_comment[:i-1]\n\t\t\t\t\t\tparser.head_comment = parser.head_comment[i+1:]\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t*event = yaml_event_t{\n\t\t\ttyp:        yaml_DOCUMENT_START_EVENT,\n\t\t\tstart_mark: token.start_mark,\n\t\t\tend_mark:   token.end_mark,\n\n\t\t\thead_comment: head_comment,\n\t\t}\n\n\t} else if token.typ != yaml_STREAM_END_TOKEN {\n\t\t// Parse an explicit document.\n\t\tvar version_directive *yaml_version_directive_t\n\t\tvar tag_directives []yaml_tag_directive_t\n\t\tstart_mark := token.start_mark\n\t\tif !yaml_parser_process_directives(parser, &version_directive, &tag_directives) {\n\t\t\treturn false\n\t\t}\n\t\ttoken = peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tif token.typ != yaml_DOCUMENT_START_TOKEN {\n\t\t\tyaml_parser_set_parser_error(parser,\n\t\t\t\t\"did not find expected <document start>\", token.start_mark)\n\t\t\treturn false\n\t\t}\n\t\tparser.states = append(parser.states, yaml_PARSE_DOCUMENT_END_STATE)\n\t\tparser.state = yaml_PARSE_DOCUMENT_CONTENT_STATE\n\t\tend_mark := token.end_mark\n\n\t\t*event = yaml_event_t{\n\t\t\ttyp:               yaml_DOCUMENT_START_EVENT,\n\t\t\tstart_mark:        start_mark,\n\t\t\tend_mark:          end_mark,\n\t\t\tversion_directive: version_directive,\n\t\t\ttag_directives:    tag_directives,\n\t\t\timplicit:          false,\n\t\t}\n\t\tskip_token(parser)\n\n\t} else {\n\t\t// Parse the stream end.\n\t\tparser.state = yaml_PARSE_END_STATE\n\t\t*event = yaml_event_t{\n\t\t\ttyp:        yaml_STREAM_END_EVENT,\n\t\t\tstart_mark: token.start_mark,\n\t\t\tend_mark:   token.end_mark,\n\t\t}\n\t\tskip_token(parser)\n\t}\n\n\treturn true\n}\n\n// Parse the productions:\n// explicit_document    ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END*\n//\n//\t***********\nfunc yaml_parser_parse_document_content(parser *yaml_parser_t, event *yaml_event_t) bool {\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\n\tif token.typ == yaml_VERSION_DIRECTIVE_TOKEN ||\n\t\ttoken.typ == yaml_TAG_DIRECTIVE_TOKEN ||\n\t\ttoken.typ == yaml_DOCUMENT_START_TOKEN ||\n\t\ttoken.typ == yaml_DOCUMENT_END_TOKEN ||\n\t\ttoken.typ == yaml_STREAM_END_TOKEN {\n\t\tparser.state = parser.states[len(parser.states)-1]\n\t\tparser.states = parser.states[:len(parser.states)-1]\n\t\treturn yaml_parser_process_empty_scalar(parser, event,\n\t\t\ttoken.start_mark)\n\t}\n\treturn yaml_parser_parse_node(parser, event, true, false)\n}\n\n// Parse the productions:\n// implicit_document    ::= block_node DOCUMENT-END*\n//\n//\t*************\n//\n// explicit_document    ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END*\nfunc yaml_parser_parse_document_end(parser *yaml_parser_t, event *yaml_event_t) bool {\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\n\tstart_mark := token.start_mark\n\tend_mark := token.start_mark\n\n\timplicit := true\n\tif token.typ == yaml_DOCUMENT_END_TOKEN {\n\t\tend_mark = token.end_mark\n\t\tskip_token(parser)\n\t\timplicit = false\n\t}\n\n\tparser.tag_directives = parser.tag_directives[:0]\n\n\tparser.state = yaml_PARSE_DOCUMENT_START_STATE\n\t*event = yaml_event_t{\n\t\ttyp:        yaml_DOCUMENT_END_EVENT,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t\timplicit:   implicit,\n\t}\n\tyaml_parser_set_event_comments(parser, event)\n\tif len(event.head_comment) > 0 && len(event.foot_comment) == 0 {\n\t\tevent.foot_comment = event.head_comment\n\t\tevent.head_comment = nil\n\t}\n\treturn true\n}\n\nfunc yaml_parser_set_event_comments(parser *yaml_parser_t, event *yaml_event_t) {\n\tevent.head_comment = parser.head_comment\n\tevent.line_comment = parser.line_comment\n\tevent.foot_comment = parser.foot_comment\n\tparser.head_comment = nil\n\tparser.line_comment = nil\n\tparser.foot_comment = nil\n\tparser.tail_comment = nil\n\tparser.stem_comment = nil\n}\n\n// Parse the productions:\n// block_node_or_indentless_sequence    ::=\n//\n//\tALIAS\n//\t*****\n//\t| properties (block_content | indentless_block_sequence)?\n//\t  **********  *\n//\t| block_content | indentless_block_sequence\n//\t  *\n//\n// block_node           ::= ALIAS\n//\n//\t*****\n//\t| properties block_content?\n//\t  ********** *\n//\t| block_content\n//\t  *\n//\n// flow_node            ::= ALIAS\n//\n//\t*****\n//\t| properties flow_content?\n//\t  ********** *\n//\t| flow_content\n//\t  *\n//\n// properties           ::= TAG ANCHOR? | ANCHOR TAG?\n//\n//\t*************************\n//\n// block_content        ::= block_collection | flow_collection | SCALAR\n//\n//\t******\n//\n// flow_content         ::= flow_collection | SCALAR\n//\n//\t******\nfunc yaml_parser_parse_node(parser *yaml_parser_t, event *yaml_event_t, block, indentless_sequence bool) bool {\n\t//defer trace(\"yaml_parser_parse_node\", \"block:\", block, \"indentless_sequence:\", indentless_sequence)()\n\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\n\tif token.typ == yaml_ALIAS_TOKEN {\n\t\tparser.state = parser.states[len(parser.states)-1]\n\t\tparser.states = parser.states[:len(parser.states)-1]\n\t\t*event = yaml_event_t{\n\t\t\ttyp:        yaml_ALIAS_EVENT,\n\t\t\tstart_mark: token.start_mark,\n\t\t\tend_mark:   token.end_mark,\n\t\t\tanchor:     token.value,\n\t\t}\n\t\tyaml_parser_set_event_comments(parser, event)\n\t\tskip_token(parser)\n\t\treturn true\n\t}\n\n\tstart_mark := token.start_mark\n\tend_mark := token.start_mark\n\n\tvar tag_token bool\n\tvar tag_handle, tag_suffix, anchor []byte\n\tvar tag_mark yaml_mark_t\n\tif token.typ == yaml_ANCHOR_TOKEN {\n\t\tanchor = token.value\n\t\tstart_mark = token.start_mark\n\t\tend_mark = token.end_mark\n\t\tskip_token(parser)\n\t\ttoken = peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tif token.typ == yaml_TAG_TOKEN {\n\t\t\ttag_token = true\n\t\t\ttag_handle = token.value\n\t\t\ttag_suffix = token.suffix\n\t\t\ttag_mark = token.start_mark\n\t\t\tend_mark = token.end_mark\n\t\t\tskip_token(parser)\n\t\t\ttoken = peek_token(parser)\n\t\t\tif token == nil {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t} else if token.typ == yaml_TAG_TOKEN {\n\t\ttag_token = true\n\t\ttag_handle = token.value\n\t\ttag_suffix = token.suffix\n\t\tstart_mark = token.start_mark\n\t\ttag_mark = token.start_mark\n\t\tend_mark = token.end_mark\n\t\tskip_token(parser)\n\t\ttoken = peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tif token.typ == yaml_ANCHOR_TOKEN {\n\t\t\tanchor = token.value\n\t\t\tend_mark = token.end_mark\n\t\t\tskip_token(parser)\n\t\t\ttoken = peek_token(parser)\n\t\t\tif token == nil {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t}\n\n\tvar tag []byte\n\tif tag_token {\n\t\tif len(tag_handle) == 0 {\n\t\t\ttag = tag_suffix\n\t\t\ttag_suffix = nil\n\t\t} else {\n\t\t\tfor i := range parser.tag_directives {\n\t\t\t\tif bytes.Equal(parser.tag_directives[i].handle, tag_handle) {\n\t\t\t\t\ttag = append([]byte(nil), parser.tag_directives[i].prefix...)\n\t\t\t\t\ttag = append(tag, tag_suffix...)\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif len(tag) == 0 {\n\t\t\t\tyaml_parser_set_parser_error_context(parser,\n\t\t\t\t\t\"while parsing a node\", start_mark,\n\t\t\t\t\t\"found undefined tag handle\", tag_mark)\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t}\n\n\timplicit := len(tag) == 0\n\tif indentless_sequence && token.typ == yaml_BLOCK_ENTRY_TOKEN {\n\t\tend_mark = token.end_mark\n\t\tparser.state = yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE\n\t\t*event = yaml_event_t{\n\t\t\ttyp:        yaml_SEQUENCE_START_EVENT,\n\t\t\tstart_mark: start_mark,\n\t\t\tend_mark:   end_mark,\n\t\t\tanchor:     anchor,\n\t\t\ttag:        tag,\n\t\t\timplicit:   implicit,\n\t\t\tstyle:      yaml_style_t(yaml_BLOCK_SEQUENCE_STYLE),\n\t\t}\n\t\treturn true\n\t}\n\tif token.typ == yaml_SCALAR_TOKEN {\n\t\tvar plain_implicit, quoted_implicit bool\n\t\tend_mark = token.end_mark\n\t\tif (len(tag) == 0 && token.style == yaml_PLAIN_SCALAR_STYLE) || (len(tag) == 1 && tag[0] == '!') {\n\t\t\tplain_implicit = true\n\t\t} else if len(tag) == 0 {\n\t\t\tquoted_implicit = true\n\t\t}\n\t\tparser.state = parser.states[len(parser.states)-1]\n\t\tparser.states = parser.states[:len(parser.states)-1]\n\n\t\t*event = yaml_event_t{\n\t\t\ttyp:             yaml_SCALAR_EVENT,\n\t\t\tstart_mark:      start_mark,\n\t\t\tend_mark:        end_mark,\n\t\t\tanchor:          anchor,\n\t\t\ttag:             tag,\n\t\t\tvalue:           token.value,\n\t\t\timplicit:        plain_implicit,\n\t\t\tquoted_implicit: quoted_implicit,\n\t\t\tstyle:           yaml_style_t(token.style),\n\t\t}\n\t\tyaml_parser_set_event_comments(parser, event)\n\t\tskip_token(parser)\n\t\treturn true\n\t}\n\tif token.typ == yaml_FLOW_SEQUENCE_START_TOKEN {\n\t\t// [Go] Some of the events below can be merged as they differ only on style.\n\t\tend_mark = token.end_mark\n\t\tparser.state = yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE\n\t\t*event = yaml_event_t{\n\t\t\ttyp:        yaml_SEQUENCE_START_EVENT,\n\t\t\tstart_mark: start_mark,\n\t\t\tend_mark:   end_mark,\n\t\t\tanchor:     anchor,\n\t\t\ttag:        tag,\n\t\t\timplicit:   implicit,\n\t\t\tstyle:      yaml_style_t(yaml_FLOW_SEQUENCE_STYLE),\n\t\t}\n\t\tyaml_parser_set_event_comments(parser, event)\n\t\treturn true\n\t}\n\tif token.typ == yaml_FLOW_MAPPING_START_TOKEN {\n\t\tend_mark = token.end_mark\n\t\tparser.state = yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE\n\t\t*event = yaml_event_t{\n\t\t\ttyp:        yaml_MAPPING_START_EVENT,\n\t\t\tstart_mark: start_mark,\n\t\t\tend_mark:   end_mark,\n\t\t\tanchor:     anchor,\n\t\t\ttag:        tag,\n\t\t\timplicit:   implicit,\n\t\t\tstyle:      yaml_style_t(yaml_FLOW_MAPPING_STYLE),\n\t\t}\n\t\tyaml_parser_set_event_comments(parser, event)\n\t\treturn true\n\t}\n\tif block && token.typ == yaml_BLOCK_SEQUENCE_START_TOKEN {\n\t\tend_mark = token.end_mark\n\t\tparser.state = yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE\n\t\t*event = yaml_event_t{\n\t\t\ttyp:        yaml_SEQUENCE_START_EVENT,\n\t\t\tstart_mark: start_mark,\n\t\t\tend_mark:   end_mark,\n\t\t\tanchor:     anchor,\n\t\t\ttag:        tag,\n\t\t\timplicit:   implicit,\n\t\t\tstyle:      yaml_style_t(yaml_BLOCK_SEQUENCE_STYLE),\n\t\t}\n\t\tif parser.stem_comment != nil {\n\t\t\tevent.head_comment = parser.stem_comment\n\t\t\tparser.stem_comment = nil\n\t\t}\n\t\treturn true\n\t}\n\tif block && token.typ == yaml_BLOCK_MAPPING_START_TOKEN {\n\t\tend_mark = token.end_mark\n\t\tparser.state = yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE\n\t\t*event = yaml_event_t{\n\t\t\ttyp:        yaml_MAPPING_START_EVENT,\n\t\t\tstart_mark: start_mark,\n\t\t\tend_mark:   end_mark,\n\t\t\tanchor:     anchor,\n\t\t\ttag:        tag,\n\t\t\timplicit:   implicit,\n\t\t\tstyle:      yaml_style_t(yaml_BLOCK_MAPPING_STYLE),\n\t\t}\n\t\tif parser.stem_comment != nil {\n\t\t\tevent.head_comment = parser.stem_comment\n\t\t\tparser.stem_comment = nil\n\t\t}\n\t\treturn true\n\t}\n\tif len(anchor) > 0 || len(tag) > 0 {\n\t\tparser.state = parser.states[len(parser.states)-1]\n\t\tparser.states = parser.states[:len(parser.states)-1]\n\n\t\t*event = yaml_event_t{\n\t\t\ttyp:             yaml_SCALAR_EVENT,\n\t\t\tstart_mark:      start_mark,\n\t\t\tend_mark:        end_mark,\n\t\t\tanchor:          anchor,\n\t\t\ttag:             tag,\n\t\t\timplicit:        implicit,\n\t\t\tquoted_implicit: false,\n\t\t\tstyle:           yaml_style_t(yaml_PLAIN_SCALAR_STYLE),\n\t\t}\n\t\treturn true\n\t}\n\n\tcontext := \"while parsing a flow node\"\n\tif block {\n\t\tcontext = \"while parsing a block node\"\n\t}\n\tyaml_parser_set_parser_error_context(parser, context, start_mark,\n\t\t\"did not find expected node content\", token.start_mark)\n\treturn false\n}\n\n// Parse the productions:\n// block_sequence ::= BLOCK-SEQUENCE-START (BLOCK-ENTRY block_node?)* BLOCK-END\n//\n//\t********************  *********** *             *********\nfunc yaml_parser_parse_block_sequence_entry(parser *yaml_parser_t, event *yaml_event_t, first bool) bool {\n\tif first {\n\t\ttoken := peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tparser.marks = append(parser.marks, token.start_mark)\n\t\tskip_token(parser)\n\t}\n\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\n\tif token.typ == yaml_BLOCK_ENTRY_TOKEN {\n\t\tmark := token.end_mark\n\t\tprior_head_len := len(parser.head_comment)\n\t\tskip_token(parser)\n\t\tyaml_parser_split_stem_comment(parser, prior_head_len)\n\t\ttoken = peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tif token.typ != yaml_BLOCK_ENTRY_TOKEN && token.typ != yaml_BLOCK_END_TOKEN {\n\t\t\tparser.states = append(parser.states, yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE)\n\t\t\treturn yaml_parser_parse_node(parser, event, true, false)\n\t\t} else {\n\t\t\tparser.state = yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE\n\t\t\treturn yaml_parser_process_empty_scalar(parser, event, mark)\n\t\t}\n\t}\n\tif token.typ == yaml_BLOCK_END_TOKEN {\n\t\tparser.state = parser.states[len(parser.states)-1]\n\t\tparser.states = parser.states[:len(parser.states)-1]\n\t\tparser.marks = parser.marks[:len(parser.marks)-1]\n\n\t\t*event = yaml_event_t{\n\t\t\ttyp:        yaml_SEQUENCE_END_EVENT,\n\t\t\tstart_mark: token.start_mark,\n\t\t\tend_mark:   token.end_mark,\n\t\t}\n\n\t\tskip_token(parser)\n\t\treturn true\n\t}\n\n\tcontext_mark := parser.marks[len(parser.marks)-1]\n\tparser.marks = parser.marks[:len(parser.marks)-1]\n\treturn yaml_parser_set_parser_error_context(parser,\n\t\t\"while parsing a block collection\", context_mark,\n\t\t\"did not find expected '-' indicator\", token.start_mark)\n}\n\n// Parse the productions:\n// indentless_sequence  ::= (BLOCK-ENTRY block_node?)+\n//\n//\t*********** *\nfunc yaml_parser_parse_indentless_sequence_entry(parser *yaml_parser_t, event *yaml_event_t) bool {\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\n\tif token.typ == yaml_BLOCK_ENTRY_TOKEN {\n\t\tmark := token.end_mark\n\t\tprior_head_len := len(parser.head_comment)\n\t\tskip_token(parser)\n\t\tyaml_parser_split_stem_comment(parser, prior_head_len)\n\t\ttoken = peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tif token.typ != yaml_BLOCK_ENTRY_TOKEN &&\n\t\t\ttoken.typ != yaml_KEY_TOKEN &&\n\t\t\ttoken.typ != yaml_VALUE_TOKEN &&\n\t\t\ttoken.typ != yaml_BLOCK_END_TOKEN {\n\t\t\tparser.states = append(parser.states, yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE)\n\t\t\treturn yaml_parser_parse_node(parser, event, true, false)\n\t\t}\n\t\tparser.state = yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE\n\t\treturn yaml_parser_process_empty_scalar(parser, event, mark)\n\t}\n\tparser.state = parser.states[len(parser.states)-1]\n\tparser.states = parser.states[:len(parser.states)-1]\n\n\t*event = yaml_event_t{\n\t\ttyp:        yaml_SEQUENCE_END_EVENT,\n\t\tstart_mark: token.start_mark,\n\t\tend_mark:   token.start_mark, // [Go] Shouldn't this be token.end_mark?\n\t}\n\treturn true\n}\n\n// Split stem comment from head comment.\n//\n// When a sequence or map is found under a sequence entry, the former head comment\n// is assigned to the underlying sequence or map as a whole, not the individual\n// sequence or map entry as would be expected otherwise. To handle this case the\n// previous head comment is moved aside as the stem comment.\nfunc yaml_parser_split_stem_comment(parser *yaml_parser_t, stem_len int) {\n\tif stem_len == 0 {\n\t\treturn\n\t}\n\n\ttoken := peek_token(parser)\n\tif token == nil || token.typ != yaml_BLOCK_SEQUENCE_START_TOKEN && token.typ != yaml_BLOCK_MAPPING_START_TOKEN {\n\t\treturn\n\t}\n\n\tparser.stem_comment = parser.head_comment[:stem_len]\n\tif len(parser.head_comment) == stem_len {\n\t\tparser.head_comment = nil\n\t} else {\n\t\t// Copy suffix to prevent very strange bugs if someone ever appends\n\t\t// further bytes to the prefix in the stem_comment slice above.\n\t\tparser.head_comment = append([]byte(nil), parser.head_comment[stem_len+1:]...)\n\t}\n}\n\n// Parse the productions:\n// block_mapping        ::= BLOCK-MAPPING_START\n//\n//\t*******************\n//\t((KEY block_node_or_indentless_sequence?)?\n//\t  *** *\n//\t(VALUE block_node_or_indentless_sequence?)?)*\n//\n//\tBLOCK-END\n//\t*********\nfunc yaml_parser_parse_block_mapping_key(parser *yaml_parser_t, event *yaml_event_t, first bool) bool {\n\tif first {\n\t\ttoken := peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tparser.marks = append(parser.marks, token.start_mark)\n\t\tskip_token(parser)\n\t}\n\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\n\t// [Go] A tail comment was left from the prior mapping value processed. Emit an event\n\t//      as it needs to be processed with that value and not the following key.\n\tif len(parser.tail_comment) > 0 {\n\t\t*event = yaml_event_t{\n\t\t\ttyp:          yaml_TAIL_COMMENT_EVENT,\n\t\t\tstart_mark:   token.start_mark,\n\t\t\tend_mark:     token.end_mark,\n\t\t\tfoot_comment: parser.tail_comment,\n\t\t}\n\t\tparser.tail_comment = nil\n\t\treturn true\n\t}\n\n\tif token.typ == yaml_KEY_TOKEN {\n\t\tmark := token.end_mark\n\t\tskip_token(parser)\n\t\ttoken = peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tif token.typ != yaml_KEY_TOKEN &&\n\t\t\ttoken.typ != yaml_VALUE_TOKEN &&\n\t\t\ttoken.typ != yaml_BLOCK_END_TOKEN {\n\t\t\tparser.states = append(parser.states, yaml_PARSE_BLOCK_MAPPING_VALUE_STATE)\n\t\t\treturn yaml_parser_parse_node(parser, event, true, true)\n\t\t} else {\n\t\t\tparser.state = yaml_PARSE_BLOCK_MAPPING_VALUE_STATE\n\t\t\treturn yaml_parser_process_empty_scalar(parser, event, mark)\n\t\t}\n\t} else if token.typ == yaml_BLOCK_END_TOKEN {\n\t\tparser.state = parser.states[len(parser.states)-1]\n\t\tparser.states = parser.states[:len(parser.states)-1]\n\t\tparser.marks = parser.marks[:len(parser.marks)-1]\n\t\t*event = yaml_event_t{\n\t\t\ttyp:        yaml_MAPPING_END_EVENT,\n\t\t\tstart_mark: token.start_mark,\n\t\t\tend_mark:   token.end_mark,\n\t\t}\n\t\tyaml_parser_set_event_comments(parser, event)\n\t\tskip_token(parser)\n\t\treturn true\n\t}\n\n\tcontext_mark := parser.marks[len(parser.marks)-1]\n\tparser.marks = parser.marks[:len(parser.marks)-1]\n\treturn yaml_parser_set_parser_error_context(parser,\n\t\t\"while parsing a block mapping\", context_mark,\n\t\t\"did not find expected key\", token.start_mark)\n}\n\n// Parse the productions:\n// block_mapping        ::= BLOCK-MAPPING_START\n//\n//\t((KEY block_node_or_indentless_sequence?)?\n//\n//\t(VALUE block_node_or_indentless_sequence?)?)*\n//\t ***** *\n//\tBLOCK-END\nfunc yaml_parser_parse_block_mapping_value(parser *yaml_parser_t, event *yaml_event_t) bool {\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\tif token.typ == yaml_VALUE_TOKEN {\n\t\tmark := token.end_mark\n\t\tskip_token(parser)\n\t\ttoken = peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tif token.typ != yaml_KEY_TOKEN &&\n\t\t\ttoken.typ != yaml_VALUE_TOKEN &&\n\t\t\ttoken.typ != yaml_BLOCK_END_TOKEN {\n\t\t\tparser.states = append(parser.states, yaml_PARSE_BLOCK_MAPPING_KEY_STATE)\n\t\t\treturn yaml_parser_parse_node(parser, event, true, true)\n\t\t}\n\t\tparser.state = yaml_PARSE_BLOCK_MAPPING_KEY_STATE\n\t\treturn yaml_parser_process_empty_scalar(parser, event, mark)\n\t}\n\tparser.state = yaml_PARSE_BLOCK_MAPPING_KEY_STATE\n\treturn yaml_parser_process_empty_scalar(parser, event, token.start_mark)\n}\n\n// Parse the productions:\n// flow_sequence        ::= FLOW-SEQUENCE-START\n//\n//\t*******************\n//\t(flow_sequence_entry FLOW-ENTRY)*\n//\t *                   **********\n//\tflow_sequence_entry?\n//\t*\n//\tFLOW-SEQUENCE-END\n//\t*****************\n//\n// flow_sequence_entry  ::= flow_node | KEY flow_node? (VALUE flow_node?)?\n//\n//\t*\nfunc yaml_parser_parse_flow_sequence_entry(parser *yaml_parser_t, event *yaml_event_t, first bool) bool {\n\tif first {\n\t\ttoken := peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tparser.marks = append(parser.marks, token.start_mark)\n\t\tskip_token(parser)\n\t}\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\tif token.typ != yaml_FLOW_SEQUENCE_END_TOKEN {\n\t\tif !first {\n\t\t\tif token.typ == yaml_FLOW_ENTRY_TOKEN {\n\t\t\t\tskip_token(parser)\n\t\t\t\ttoken = peek_token(parser)\n\t\t\t\tif token == nil {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcontext_mark := parser.marks[len(parser.marks)-1]\n\t\t\t\tparser.marks = parser.marks[:len(parser.marks)-1]\n\t\t\t\treturn yaml_parser_set_parser_error_context(parser,\n\t\t\t\t\t\"while parsing a flow sequence\", context_mark,\n\t\t\t\t\t\"did not find expected ',' or ']'\", token.start_mark)\n\t\t\t}\n\t\t}\n\n\t\tif token.typ == yaml_KEY_TOKEN {\n\t\t\tparser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE\n\t\t\t*event = yaml_event_t{\n\t\t\t\ttyp:        yaml_MAPPING_START_EVENT,\n\t\t\t\tstart_mark: token.start_mark,\n\t\t\t\tend_mark:   token.end_mark,\n\t\t\t\timplicit:   true,\n\t\t\t\tstyle:      yaml_style_t(yaml_FLOW_MAPPING_STYLE),\n\t\t\t}\n\t\t\tskip_token(parser)\n\t\t\treturn true\n\t\t} else if token.typ != yaml_FLOW_SEQUENCE_END_TOKEN {\n\t\t\tparser.states = append(parser.states, yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE)\n\t\t\treturn yaml_parser_parse_node(parser, event, false, false)\n\t\t}\n\t}\n\n\tparser.state = parser.states[len(parser.states)-1]\n\tparser.states = parser.states[:len(parser.states)-1]\n\tparser.marks = parser.marks[:len(parser.marks)-1]\n\n\t*event = yaml_event_t{\n\t\ttyp:        yaml_SEQUENCE_END_EVENT,\n\t\tstart_mark: token.start_mark,\n\t\tend_mark:   token.end_mark,\n\t}\n\tyaml_parser_set_event_comments(parser, event)\n\n\tskip_token(parser)\n\treturn true\n}\n\n// Parse the productions:\n// flow_sequence_entry  ::= flow_node | KEY flow_node? (VALUE flow_node?)?\n//\n//\t*** *\nfunc yaml_parser_parse_flow_sequence_entry_mapping_key(parser *yaml_parser_t, event *yaml_event_t) bool {\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\tif token.typ != yaml_VALUE_TOKEN &&\n\t\ttoken.typ != yaml_FLOW_ENTRY_TOKEN &&\n\t\ttoken.typ != yaml_FLOW_SEQUENCE_END_TOKEN {\n\t\tparser.states = append(parser.states, yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE)\n\t\treturn yaml_parser_parse_node(parser, event, false, false)\n\t}\n\tmark := token.end_mark\n\tskip_token(parser)\n\tparser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE\n\treturn yaml_parser_process_empty_scalar(parser, event, mark)\n}\n\n// Parse the productions:\n// flow_sequence_entry  ::= flow_node | KEY flow_node? (VALUE flow_node?)?\n//\n//\t***** *\nfunc yaml_parser_parse_flow_sequence_entry_mapping_value(parser *yaml_parser_t, event *yaml_event_t) bool {\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\tif token.typ == yaml_VALUE_TOKEN {\n\t\tskip_token(parser)\n\t\ttoken := peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tif token.typ != yaml_FLOW_ENTRY_TOKEN && token.typ != yaml_FLOW_SEQUENCE_END_TOKEN {\n\t\t\tparser.states = append(parser.states, yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE)\n\t\t\treturn yaml_parser_parse_node(parser, event, false, false)\n\t\t}\n\t}\n\tparser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE\n\treturn yaml_parser_process_empty_scalar(parser, event, token.start_mark)\n}\n\n// Parse the productions:\n// flow_sequence_entry  ::= flow_node | KEY flow_node? (VALUE flow_node?)?\n//\n//\t*\nfunc yaml_parser_parse_flow_sequence_entry_mapping_end(parser *yaml_parser_t, event *yaml_event_t) bool {\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\tparser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE\n\t*event = yaml_event_t{\n\t\ttyp:        yaml_MAPPING_END_EVENT,\n\t\tstart_mark: token.start_mark,\n\t\tend_mark:   token.start_mark, // [Go] Shouldn't this be end_mark?\n\t}\n\treturn true\n}\n\n// Parse the productions:\n// flow_mapping         ::= FLOW-MAPPING-START\n//\n//\t******************\n//\t(flow_mapping_entry FLOW-ENTRY)*\n//\t *                  **********\n//\tflow_mapping_entry?\n//\t******************\n//\tFLOW-MAPPING-END\n//\t****************\n//\n// flow_mapping_entry   ::= flow_node | KEY flow_node? (VALUE flow_node?)?\n//   - *** *\nfunc yaml_parser_parse_flow_mapping_key(parser *yaml_parser_t, event *yaml_event_t, first bool) bool {\n\tif first {\n\t\ttoken := peek_token(parser)\n\t\tparser.marks = append(parser.marks, token.start_mark)\n\t\tskip_token(parser)\n\t}\n\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\n\tif token.typ != yaml_FLOW_MAPPING_END_TOKEN {\n\t\tif !first {\n\t\t\tif token.typ == yaml_FLOW_ENTRY_TOKEN {\n\t\t\t\tskip_token(parser)\n\t\t\t\ttoken = peek_token(parser)\n\t\t\t\tif token == nil {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcontext_mark := parser.marks[len(parser.marks)-1]\n\t\t\t\tparser.marks = parser.marks[:len(parser.marks)-1]\n\t\t\t\treturn yaml_parser_set_parser_error_context(parser,\n\t\t\t\t\t\"while parsing a flow mapping\", context_mark,\n\t\t\t\t\t\"did not find expected ',' or '}'\", token.start_mark)\n\t\t\t}\n\t\t}\n\n\t\tif token.typ == yaml_KEY_TOKEN {\n\t\t\tskip_token(parser)\n\t\t\ttoken = peek_token(parser)\n\t\t\tif token == nil {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif token.typ != yaml_VALUE_TOKEN &&\n\t\t\t\ttoken.typ != yaml_FLOW_ENTRY_TOKEN &&\n\t\t\t\ttoken.typ != yaml_FLOW_MAPPING_END_TOKEN {\n\t\t\t\tparser.states = append(parser.states, yaml_PARSE_FLOW_MAPPING_VALUE_STATE)\n\t\t\t\treturn yaml_parser_parse_node(parser, event, false, false)\n\t\t\t} else {\n\t\t\t\tparser.state = yaml_PARSE_FLOW_MAPPING_VALUE_STATE\n\t\t\t\treturn yaml_parser_process_empty_scalar(parser, event, token.start_mark)\n\t\t\t}\n\t\t} else if token.typ != yaml_FLOW_MAPPING_END_TOKEN {\n\t\t\tparser.states = append(parser.states, yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE)\n\t\t\treturn yaml_parser_parse_node(parser, event, false, false)\n\t\t}\n\t}\n\n\tparser.state = parser.states[len(parser.states)-1]\n\tparser.states = parser.states[:len(parser.states)-1]\n\tparser.marks = parser.marks[:len(parser.marks)-1]\n\t*event = yaml_event_t{\n\t\ttyp:        yaml_MAPPING_END_EVENT,\n\t\tstart_mark: token.start_mark,\n\t\tend_mark:   token.end_mark,\n\t}\n\tyaml_parser_set_event_comments(parser, event)\n\tskip_token(parser)\n\treturn true\n}\n\n// Parse the productions:\n// flow_mapping_entry   ::= flow_node | KEY flow_node? (VALUE flow_node?)?\n//   - ***** *\nfunc yaml_parser_parse_flow_mapping_value(parser *yaml_parser_t, event *yaml_event_t, empty bool) bool {\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\tif empty {\n\t\tparser.state = yaml_PARSE_FLOW_MAPPING_KEY_STATE\n\t\treturn yaml_parser_process_empty_scalar(parser, event, token.start_mark)\n\t}\n\tif token.typ == yaml_VALUE_TOKEN {\n\t\tskip_token(parser)\n\t\ttoken = peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tif token.typ != yaml_FLOW_ENTRY_TOKEN && token.typ != yaml_FLOW_MAPPING_END_TOKEN {\n\t\t\tparser.states = append(parser.states, yaml_PARSE_FLOW_MAPPING_KEY_STATE)\n\t\t\treturn yaml_parser_parse_node(parser, event, false, false)\n\t\t}\n\t}\n\tparser.state = yaml_PARSE_FLOW_MAPPING_KEY_STATE\n\treturn yaml_parser_process_empty_scalar(parser, event, token.start_mark)\n}\n\n// Generate an empty scalar event.\nfunc yaml_parser_process_empty_scalar(parser *yaml_parser_t, event *yaml_event_t, mark yaml_mark_t) bool {\n\t*event = yaml_event_t{\n\t\ttyp:        yaml_SCALAR_EVENT,\n\t\tstart_mark: mark,\n\t\tend_mark:   mark,\n\t\tvalue:      nil, // Empty\n\t\timplicit:   true,\n\t\tstyle:      yaml_style_t(yaml_PLAIN_SCALAR_STYLE),\n\t}\n\treturn true\n}\n\nvar default_tag_directives = []yaml_tag_directive_t{\n\t{[]byte(\"!\"), []byte(\"!\")},\n\t{[]byte(\"!!\"), []byte(\"tag:yaml.org,2002:\")},\n}\n\n// Parse directives.\nfunc yaml_parser_process_directives(parser *yaml_parser_t,\n\tversion_directive_ref **yaml_version_directive_t,\n\ttag_directives_ref *[]yaml_tag_directive_t) bool {\n\n\tvar version_directive *yaml_version_directive_t\n\tvar tag_directives []yaml_tag_directive_t\n\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\n\tfor token.typ == yaml_VERSION_DIRECTIVE_TOKEN || token.typ == yaml_TAG_DIRECTIVE_TOKEN {\n\t\tif token.typ == yaml_VERSION_DIRECTIVE_TOKEN {\n\t\t\tif version_directive != nil {\n\t\t\t\tyaml_parser_set_parser_error(parser,\n\t\t\t\t\t\"found duplicate %YAML directive\", token.start_mark)\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif token.major != 1 || token.minor != 1 {\n\t\t\t\tyaml_parser_set_parser_error(parser,\n\t\t\t\t\t\"found incompatible YAML document\", token.start_mark)\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tversion_directive = &yaml_version_directive_t{\n\t\t\t\tmajor: token.major,\n\t\t\t\tminor: token.minor,\n\t\t\t}\n\t\t} else if token.typ == yaml_TAG_DIRECTIVE_TOKEN {\n\t\t\tvalue := yaml_tag_directive_t{\n\t\t\t\thandle: token.value,\n\t\t\t\tprefix: token.prefix,\n\t\t\t}\n\t\t\tif !yaml_parser_append_tag_directive(parser, value, false, token.start_mark) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\ttag_directives = append(tag_directives, value)\n\t\t}\n\n\t\tskip_token(parser)\n\t\ttoken = peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tfor i := range default_tag_directives {\n\t\tif !yaml_parser_append_tag_directive(parser, default_tag_directives[i], true, token.start_mark) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tif version_directive_ref != nil {\n\t\t*version_directive_ref = version_directive\n\t}\n\tif tag_directives_ref != nil {\n\t\t*tag_directives_ref = tag_directives\n\t}\n\treturn true\n}\n\n// Append a tag directive to the directives stack.\nfunc yaml_parser_append_tag_directive(parser *yaml_parser_t, value yaml_tag_directive_t, allow_duplicates bool, mark yaml_mark_t) bool {\n\tfor i := range parser.tag_directives {\n\t\tif bytes.Equal(value.handle, parser.tag_directives[i].handle) {\n\t\t\tif allow_duplicates {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn yaml_parser_set_parser_error(parser, \"found duplicate %TAG directive\", mark)\n\t\t}\n\t}\n\n\t// [Go] I suspect the copy is unnecessary. This was likely done\n\t// because there was no way to track ownership of the data.\n\tvalue_copy := yaml_tag_directive_t{\n\t\thandle: make([]byte, len(value.handle)),\n\t\tprefix: make([]byte, len(value.prefix)),\n\t}\n\tcopy(value_copy.handle, value.handle)\n\tcopy(value_copy.prefix, value.prefix)\n\tparser.tag_directives = append(parser.tag_directives, value_copy)\n\treturn true\n}\n"
  },
  {
    "path": "tests/vendor/go.yaml.in/yaml/v3/readerc.go",
    "content": "//\n// Copyright (c) 2011-2019 Canonical Ltd\n// Copyright (c) 2006-2010 Kirill Simonov\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.\n\npackage yaml\n\nimport (\n\t\"io\"\n)\n\n// Set the reader error and return 0.\nfunc yaml_parser_set_reader_error(parser *yaml_parser_t, problem string, offset int, value int) bool {\n\tparser.error = yaml_READER_ERROR\n\tparser.problem = problem\n\tparser.problem_offset = offset\n\tparser.problem_value = value\n\treturn false\n}\n\n// Byte order marks.\nconst (\n\tbom_UTF8    = \"\\xef\\xbb\\xbf\"\n\tbom_UTF16LE = \"\\xff\\xfe\"\n\tbom_UTF16BE = \"\\xfe\\xff\"\n)\n\n// Determine the input stream encoding by checking the BOM symbol. If no BOM is\n// found, the UTF-8 encoding is assumed. Return 1 on success, 0 on failure.\nfunc yaml_parser_determine_encoding(parser *yaml_parser_t) bool {\n\t// Ensure that we had enough bytes in the raw buffer.\n\tfor !parser.eof && len(parser.raw_buffer)-parser.raw_buffer_pos < 3 {\n\t\tif !yaml_parser_update_raw_buffer(parser) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Determine the encoding.\n\tbuf := parser.raw_buffer\n\tpos := parser.raw_buffer_pos\n\tavail := len(buf) - pos\n\tif avail >= 2 && buf[pos] == bom_UTF16LE[0] && buf[pos+1] == bom_UTF16LE[1] {\n\t\tparser.encoding = yaml_UTF16LE_ENCODING\n\t\tparser.raw_buffer_pos += 2\n\t\tparser.offset += 2\n\t} else if avail >= 2 && buf[pos] == bom_UTF16BE[0] && buf[pos+1] == bom_UTF16BE[1] {\n\t\tparser.encoding = yaml_UTF16BE_ENCODING\n\t\tparser.raw_buffer_pos += 2\n\t\tparser.offset += 2\n\t} else if avail >= 3 && buf[pos] == bom_UTF8[0] && buf[pos+1] == bom_UTF8[1] && buf[pos+2] == bom_UTF8[2] {\n\t\tparser.encoding = yaml_UTF8_ENCODING\n\t\tparser.raw_buffer_pos += 3\n\t\tparser.offset += 3\n\t} else {\n\t\tparser.encoding = yaml_UTF8_ENCODING\n\t}\n\treturn true\n}\n\n// Update the raw buffer.\nfunc yaml_parser_update_raw_buffer(parser *yaml_parser_t) bool {\n\tsize_read := 0\n\n\t// Return if the raw buffer is full.\n\tif parser.raw_buffer_pos == 0 && len(parser.raw_buffer) == cap(parser.raw_buffer) {\n\t\treturn true\n\t}\n\n\t// Return on EOF.\n\tif parser.eof {\n\t\treturn true\n\t}\n\n\t// Move the remaining bytes in the raw buffer to the beginning.\n\tif parser.raw_buffer_pos > 0 && parser.raw_buffer_pos < len(parser.raw_buffer) {\n\t\tcopy(parser.raw_buffer, parser.raw_buffer[parser.raw_buffer_pos:])\n\t}\n\tparser.raw_buffer = parser.raw_buffer[:len(parser.raw_buffer)-parser.raw_buffer_pos]\n\tparser.raw_buffer_pos = 0\n\n\t// Call the read handler to fill the buffer.\n\tsize_read, err := parser.read_handler(parser, parser.raw_buffer[len(parser.raw_buffer):cap(parser.raw_buffer)])\n\tparser.raw_buffer = parser.raw_buffer[:len(parser.raw_buffer)+size_read]\n\tif err == io.EOF {\n\t\tparser.eof = true\n\t} else if err != nil {\n\t\treturn yaml_parser_set_reader_error(parser, \"input error: \"+err.Error(), parser.offset, -1)\n\t}\n\treturn true\n}\n\n// Ensure that the buffer contains at least `length` characters.\n// Return true on success, false on failure.\n//\n// The length is supposed to be significantly less that the buffer size.\nfunc yaml_parser_update_buffer(parser *yaml_parser_t, length int) bool {\n\tif parser.read_handler == nil {\n\t\tpanic(\"read handler must be set\")\n\t}\n\n\t// [Go] This function was changed to guarantee the requested length size at EOF.\n\t// The fact we need to do this is pretty awful, but the description above implies\n\t// for that to be the case, and there are tests\n\n\t// If the EOF flag is set and the raw buffer is empty, do nothing.\n\tif parser.eof && parser.raw_buffer_pos == len(parser.raw_buffer) {\n\t\t// [Go] ACTUALLY! Read the documentation of this function above.\n\t\t// This is just broken. To return true, we need to have the\n\t\t// given length in the buffer. Not doing that means every single\n\t\t// check that calls this function to make sure the buffer has a\n\t\t// given length is Go) panicking; or C) accessing invalid memory.\n\t\t//return true\n\t}\n\n\t// Return if the buffer contains enough characters.\n\tif parser.unread >= length {\n\t\treturn true\n\t}\n\n\t// Determine the input encoding if it is not known yet.\n\tif parser.encoding == yaml_ANY_ENCODING {\n\t\tif !yaml_parser_determine_encoding(parser) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Move the unread characters to the beginning of the buffer.\n\tbuffer_len := len(parser.buffer)\n\tif parser.buffer_pos > 0 && parser.buffer_pos < buffer_len {\n\t\tcopy(parser.buffer, parser.buffer[parser.buffer_pos:])\n\t\tbuffer_len -= parser.buffer_pos\n\t\tparser.buffer_pos = 0\n\t} else if parser.buffer_pos == buffer_len {\n\t\tbuffer_len = 0\n\t\tparser.buffer_pos = 0\n\t}\n\n\t// Open the whole buffer for writing, and cut it before returning.\n\tparser.buffer = parser.buffer[:cap(parser.buffer)]\n\n\t// Fill the buffer until it has enough characters.\n\tfirst := true\n\tfor parser.unread < length {\n\n\t\t// Fill the raw buffer if necessary.\n\t\tif !first || parser.raw_buffer_pos == len(parser.raw_buffer) {\n\t\t\tif !yaml_parser_update_raw_buffer(parser) {\n\t\t\t\tparser.buffer = parser.buffer[:buffer_len]\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tfirst = false\n\n\t\t// Decode the raw buffer.\n\tinner:\n\t\tfor parser.raw_buffer_pos != len(parser.raw_buffer) {\n\t\t\tvar value rune\n\t\t\tvar width int\n\n\t\t\traw_unread := len(parser.raw_buffer) - parser.raw_buffer_pos\n\n\t\t\t// Decode the next character.\n\t\t\tswitch parser.encoding {\n\t\t\tcase yaml_UTF8_ENCODING:\n\t\t\t\t// Decode a UTF-8 character.  Check RFC 3629\n\t\t\t\t// (http://www.ietf.org/rfc/rfc3629.txt) for more details.\n\t\t\t\t//\n\t\t\t\t// The following table (taken from the RFC) is used for\n\t\t\t\t// decoding.\n\t\t\t\t//\n\t\t\t\t//    Char. number range |        UTF-8 octet sequence\n\t\t\t\t//      (hexadecimal)    |              (binary)\n\t\t\t\t//   --------------------+------------------------------------\n\t\t\t\t//   0000 0000-0000 007F | 0xxxxxxx\n\t\t\t\t//   0000 0080-0000 07FF | 110xxxxx 10xxxxxx\n\t\t\t\t//   0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx\n\t\t\t\t//   0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n\t\t\t\t//\n\t\t\t\t// Additionally, the characters in the range 0xD800-0xDFFF\n\t\t\t\t// are prohibited as they are reserved for use with UTF-16\n\t\t\t\t// surrogate pairs.\n\n\t\t\t\t// Determine the length of the UTF-8 sequence.\n\t\t\t\toctet := parser.raw_buffer[parser.raw_buffer_pos]\n\t\t\t\tswitch {\n\t\t\t\tcase octet&0x80 == 0x00:\n\t\t\t\t\twidth = 1\n\t\t\t\tcase octet&0xE0 == 0xC0:\n\t\t\t\t\twidth = 2\n\t\t\t\tcase octet&0xF0 == 0xE0:\n\t\t\t\t\twidth = 3\n\t\t\t\tcase octet&0xF8 == 0xF0:\n\t\t\t\t\twidth = 4\n\t\t\t\tdefault:\n\t\t\t\t\t// The leading octet is invalid.\n\t\t\t\t\treturn yaml_parser_set_reader_error(parser,\n\t\t\t\t\t\t\"invalid leading UTF-8 octet\",\n\t\t\t\t\t\tparser.offset, int(octet))\n\t\t\t\t}\n\n\t\t\t\t// Check if the raw buffer contains an incomplete character.\n\t\t\t\tif width > raw_unread {\n\t\t\t\t\tif parser.eof {\n\t\t\t\t\t\treturn yaml_parser_set_reader_error(parser,\n\t\t\t\t\t\t\t\"incomplete UTF-8 octet sequence\",\n\t\t\t\t\t\t\tparser.offset, -1)\n\t\t\t\t\t}\n\t\t\t\t\tbreak inner\n\t\t\t\t}\n\n\t\t\t\t// Decode the leading octet.\n\t\t\t\tswitch {\n\t\t\t\tcase octet&0x80 == 0x00:\n\t\t\t\t\tvalue = rune(octet & 0x7F)\n\t\t\t\tcase octet&0xE0 == 0xC0:\n\t\t\t\t\tvalue = rune(octet & 0x1F)\n\t\t\t\tcase octet&0xF0 == 0xE0:\n\t\t\t\t\tvalue = rune(octet & 0x0F)\n\t\t\t\tcase octet&0xF8 == 0xF0:\n\t\t\t\t\tvalue = rune(octet & 0x07)\n\t\t\t\tdefault:\n\t\t\t\t\tvalue = 0\n\t\t\t\t}\n\n\t\t\t\t// Check and decode the trailing octets.\n\t\t\t\tfor k := 1; k < width; k++ {\n\t\t\t\t\toctet = parser.raw_buffer[parser.raw_buffer_pos+k]\n\n\t\t\t\t\t// Check if the octet is valid.\n\t\t\t\t\tif (octet & 0xC0) != 0x80 {\n\t\t\t\t\t\treturn yaml_parser_set_reader_error(parser,\n\t\t\t\t\t\t\t\"invalid trailing UTF-8 octet\",\n\t\t\t\t\t\t\tparser.offset+k, int(octet))\n\t\t\t\t\t}\n\n\t\t\t\t\t// Decode the octet.\n\t\t\t\t\tvalue = (value << 6) + rune(octet&0x3F)\n\t\t\t\t}\n\n\t\t\t\t// Check the length of the sequence against the value.\n\t\t\t\tswitch {\n\t\t\t\tcase width == 1:\n\t\t\t\tcase width == 2 && value >= 0x80:\n\t\t\t\tcase width == 3 && value >= 0x800:\n\t\t\t\tcase width == 4 && value >= 0x10000:\n\t\t\t\tdefault:\n\t\t\t\t\treturn yaml_parser_set_reader_error(parser,\n\t\t\t\t\t\t\"invalid length of a UTF-8 sequence\",\n\t\t\t\t\t\tparser.offset, -1)\n\t\t\t\t}\n\n\t\t\t\t// Check the range of the value.\n\t\t\t\tif value >= 0xD800 && value <= 0xDFFF || value > 0x10FFFF {\n\t\t\t\t\treturn yaml_parser_set_reader_error(parser,\n\t\t\t\t\t\t\"invalid Unicode character\",\n\t\t\t\t\t\tparser.offset, int(value))\n\t\t\t\t}\n\n\t\t\tcase yaml_UTF16LE_ENCODING, yaml_UTF16BE_ENCODING:\n\t\t\t\tvar low, high int\n\t\t\t\tif parser.encoding == yaml_UTF16LE_ENCODING {\n\t\t\t\t\tlow, high = 0, 1\n\t\t\t\t} else {\n\t\t\t\t\tlow, high = 1, 0\n\t\t\t\t}\n\n\t\t\t\t// The UTF-16 encoding is not as simple as one might\n\t\t\t\t// naively think.  Check RFC 2781\n\t\t\t\t// (http://www.ietf.org/rfc/rfc2781.txt).\n\t\t\t\t//\n\t\t\t\t// Normally, two subsequent bytes describe a Unicode\n\t\t\t\t// character.  However a special technique (called a\n\t\t\t\t// surrogate pair) is used for specifying character\n\t\t\t\t// values larger than 0xFFFF.\n\t\t\t\t//\n\t\t\t\t// A surrogate pair consists of two pseudo-characters:\n\t\t\t\t//      high surrogate area (0xD800-0xDBFF)\n\t\t\t\t//      low surrogate area (0xDC00-0xDFFF)\n\t\t\t\t//\n\t\t\t\t// The following formulas are used for decoding\n\t\t\t\t// and encoding characters using surrogate pairs:\n\t\t\t\t//\n\t\t\t\t//  U  = U' + 0x10000   (0x01 00 00 <= U <= 0x10 FF FF)\n\t\t\t\t//  U' = yyyyyyyyyyxxxxxxxxxx   (0 <= U' <= 0x0F FF FF)\n\t\t\t\t//  W1 = 110110yyyyyyyyyy\n\t\t\t\t//  W2 = 110111xxxxxxxxxx\n\t\t\t\t//\n\t\t\t\t// where U is the character value, W1 is the high surrogate\n\t\t\t\t// area, W2 is the low surrogate area.\n\n\t\t\t\t// Check for incomplete UTF-16 character.\n\t\t\t\tif raw_unread < 2 {\n\t\t\t\t\tif parser.eof {\n\t\t\t\t\t\treturn yaml_parser_set_reader_error(parser,\n\t\t\t\t\t\t\t\"incomplete UTF-16 character\",\n\t\t\t\t\t\t\tparser.offset, -1)\n\t\t\t\t\t}\n\t\t\t\t\tbreak inner\n\t\t\t\t}\n\n\t\t\t\t// Get the character.\n\t\t\t\tvalue = rune(parser.raw_buffer[parser.raw_buffer_pos+low]) +\n\t\t\t\t\t(rune(parser.raw_buffer[parser.raw_buffer_pos+high]) << 8)\n\n\t\t\t\t// Check for unexpected low surrogate area.\n\t\t\t\tif value&0xFC00 == 0xDC00 {\n\t\t\t\t\treturn yaml_parser_set_reader_error(parser,\n\t\t\t\t\t\t\"unexpected low surrogate area\",\n\t\t\t\t\t\tparser.offset, int(value))\n\t\t\t\t}\n\n\t\t\t\t// Check for a high surrogate area.\n\t\t\t\tif value&0xFC00 == 0xD800 {\n\t\t\t\t\twidth = 4\n\n\t\t\t\t\t// Check for incomplete surrogate pair.\n\t\t\t\t\tif raw_unread < 4 {\n\t\t\t\t\t\tif parser.eof {\n\t\t\t\t\t\t\treturn yaml_parser_set_reader_error(parser,\n\t\t\t\t\t\t\t\t\"incomplete UTF-16 surrogate pair\",\n\t\t\t\t\t\t\t\tparser.offset, -1)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak inner\n\t\t\t\t\t}\n\n\t\t\t\t\t// Get the next character.\n\t\t\t\t\tvalue2 := rune(parser.raw_buffer[parser.raw_buffer_pos+low+2]) +\n\t\t\t\t\t\t(rune(parser.raw_buffer[parser.raw_buffer_pos+high+2]) << 8)\n\n\t\t\t\t\t// Check for a low surrogate area.\n\t\t\t\t\tif value2&0xFC00 != 0xDC00 {\n\t\t\t\t\t\treturn yaml_parser_set_reader_error(parser,\n\t\t\t\t\t\t\t\"expected low surrogate area\",\n\t\t\t\t\t\t\tparser.offset+2, int(value2))\n\t\t\t\t\t}\n\n\t\t\t\t\t// Generate the value of the surrogate pair.\n\t\t\t\t\tvalue = 0x10000 + ((value & 0x3FF) << 10) + (value2 & 0x3FF)\n\t\t\t\t} else {\n\t\t\t\t\twidth = 2\n\t\t\t\t}\n\n\t\t\tdefault:\n\t\t\t\tpanic(\"impossible\")\n\t\t\t}\n\n\t\t\t// Check if the character is in the allowed range:\n\t\t\t//      #x9 | #xA | #xD | [#x20-#x7E]               (8 bit)\n\t\t\t//      | #x85 | [#xA0-#xD7FF] | [#xE000-#xFFFD]    (16 bit)\n\t\t\t//      | [#x10000-#x10FFFF]                        (32 bit)\n\t\t\tswitch {\n\t\t\tcase value == 0x09:\n\t\t\tcase value == 0x0A:\n\t\t\tcase value == 0x0D:\n\t\t\tcase value >= 0x20 && value <= 0x7E:\n\t\t\tcase value == 0x85:\n\t\t\tcase value >= 0xA0 && value <= 0xD7FF:\n\t\t\tcase value >= 0xE000 && value <= 0xFFFD:\n\t\t\tcase value >= 0x10000 && value <= 0x10FFFF:\n\t\t\tdefault:\n\t\t\t\treturn yaml_parser_set_reader_error(parser,\n\t\t\t\t\t\"control characters are not allowed\",\n\t\t\t\t\tparser.offset, int(value))\n\t\t\t}\n\n\t\t\t// Move the raw pointers.\n\t\t\tparser.raw_buffer_pos += width\n\t\t\tparser.offset += width\n\n\t\t\t// Finally put the character into the buffer.\n\t\t\tif value <= 0x7F {\n\t\t\t\t// 0000 0000-0000 007F . 0xxxxxxx\n\t\t\t\tparser.buffer[buffer_len+0] = byte(value)\n\t\t\t\tbuffer_len += 1\n\t\t\t} else if value <= 0x7FF {\n\t\t\t\t// 0000 0080-0000 07FF . 110xxxxx 10xxxxxx\n\t\t\t\tparser.buffer[buffer_len+0] = byte(0xC0 + (value >> 6))\n\t\t\t\tparser.buffer[buffer_len+1] = byte(0x80 + (value & 0x3F))\n\t\t\t\tbuffer_len += 2\n\t\t\t} else if value <= 0xFFFF {\n\t\t\t\t// 0000 0800-0000 FFFF . 1110xxxx 10xxxxxx 10xxxxxx\n\t\t\t\tparser.buffer[buffer_len+0] = byte(0xE0 + (value >> 12))\n\t\t\t\tparser.buffer[buffer_len+1] = byte(0x80 + ((value >> 6) & 0x3F))\n\t\t\t\tparser.buffer[buffer_len+2] = byte(0x80 + (value & 0x3F))\n\t\t\t\tbuffer_len += 3\n\t\t\t} else {\n\t\t\t\t// 0001 0000-0010 FFFF . 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n\t\t\t\tparser.buffer[buffer_len+0] = byte(0xF0 + (value >> 18))\n\t\t\t\tparser.buffer[buffer_len+1] = byte(0x80 + ((value >> 12) & 0x3F))\n\t\t\t\tparser.buffer[buffer_len+2] = byte(0x80 + ((value >> 6) & 0x3F))\n\t\t\t\tparser.buffer[buffer_len+3] = byte(0x80 + (value & 0x3F))\n\t\t\t\tbuffer_len += 4\n\t\t\t}\n\n\t\t\tparser.unread++\n\t\t}\n\n\t\t// On EOF, put NUL into the buffer and return.\n\t\tif parser.eof {\n\t\t\tparser.buffer[buffer_len] = 0\n\t\t\tbuffer_len++\n\t\t\tparser.unread++\n\t\t\tbreak\n\t\t}\n\t}\n\t// [Go] Read the documentation of this function above. To return true,\n\t// we need to have the given length in the buffer. Not doing that means\n\t// every single check that calls this function to make sure the buffer\n\t// has a given length is Go) panicking; or C) accessing invalid memory.\n\t// This happens here due to the EOF above breaking early.\n\tfor buffer_len < length {\n\t\tparser.buffer[buffer_len] = 0\n\t\tbuffer_len++\n\t}\n\tparser.buffer = parser.buffer[:buffer_len]\n\treturn true\n}\n"
  },
  {
    "path": "tests/vendor/go.yaml.in/yaml/v3/resolve.go",
    "content": "//\n// Copyright (c) 2011-2019 Canonical Ltd\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage yaml\n\nimport (\n\t\"encoding/base64\"\n\t\"math\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n)\n\ntype resolveMapItem struct {\n\tvalue interface{}\n\ttag   string\n}\n\nvar resolveTable = make([]byte, 256)\nvar resolveMap = make(map[string]resolveMapItem)\n\nfunc init() {\n\tt := resolveTable\n\tt[int('+')] = 'S' // Sign\n\tt[int('-')] = 'S'\n\tfor _, c := range \"0123456789\" {\n\t\tt[int(c)] = 'D' // Digit\n\t}\n\tfor _, c := range \"yYnNtTfFoO~\" {\n\t\tt[int(c)] = 'M' // In map\n\t}\n\tt[int('.')] = '.' // Float (potentially in map)\n\n\tvar resolveMapList = []struct {\n\t\tv   interface{}\n\t\ttag string\n\t\tl   []string\n\t}{\n\t\t{true, boolTag, []string{\"true\", \"True\", \"TRUE\"}},\n\t\t{false, boolTag, []string{\"false\", \"False\", \"FALSE\"}},\n\t\t{nil, nullTag, []string{\"\", \"~\", \"null\", \"Null\", \"NULL\"}},\n\t\t{math.NaN(), floatTag, []string{\".nan\", \".NaN\", \".NAN\"}},\n\t\t{math.Inf(+1), floatTag, []string{\".inf\", \".Inf\", \".INF\"}},\n\t\t{math.Inf(+1), floatTag, []string{\"+.inf\", \"+.Inf\", \"+.INF\"}},\n\t\t{math.Inf(-1), floatTag, []string{\"-.inf\", \"-.Inf\", \"-.INF\"}},\n\t\t{\"<<\", mergeTag, []string{\"<<\"}},\n\t}\n\n\tm := resolveMap\n\tfor _, item := range resolveMapList {\n\t\tfor _, s := range item.l {\n\t\t\tm[s] = resolveMapItem{item.v, item.tag}\n\t\t}\n\t}\n}\n\nconst (\n\tnullTag      = \"!!null\"\n\tboolTag      = \"!!bool\"\n\tstrTag       = \"!!str\"\n\tintTag       = \"!!int\"\n\tfloatTag     = \"!!float\"\n\ttimestampTag = \"!!timestamp\"\n\tseqTag       = \"!!seq\"\n\tmapTag       = \"!!map\"\n\tbinaryTag    = \"!!binary\"\n\tmergeTag     = \"!!merge\"\n)\n\nvar longTags = make(map[string]string)\nvar shortTags = make(map[string]string)\n\nfunc init() {\n\tfor _, stag := range []string{nullTag, boolTag, strTag, intTag, floatTag, timestampTag, seqTag, mapTag, binaryTag, mergeTag} {\n\t\tltag := longTag(stag)\n\t\tlongTags[stag] = ltag\n\t\tshortTags[ltag] = stag\n\t}\n}\n\nconst longTagPrefix = \"tag:yaml.org,2002:\"\n\nfunc shortTag(tag string) string {\n\tif strings.HasPrefix(tag, longTagPrefix) {\n\t\tif stag, ok := shortTags[tag]; ok {\n\t\t\treturn stag\n\t\t}\n\t\treturn \"!!\" + tag[len(longTagPrefix):]\n\t}\n\treturn tag\n}\n\nfunc longTag(tag string) string {\n\tif strings.HasPrefix(tag, \"!!\") {\n\t\tif ltag, ok := longTags[tag]; ok {\n\t\t\treturn ltag\n\t\t}\n\t\treturn longTagPrefix + tag[2:]\n\t}\n\treturn tag\n}\n\nfunc resolvableTag(tag string) bool {\n\tswitch tag {\n\tcase \"\", strTag, boolTag, intTag, floatTag, nullTag, timestampTag:\n\t\treturn true\n\t}\n\treturn false\n}\n\nvar yamlStyleFloat = regexp.MustCompile(`^[-+]?(\\.[0-9]+|[0-9]+(\\.[0-9]*)?)([eE][-+]?[0-9]+)?$`)\n\nfunc resolve(tag string, in string) (rtag string, out interface{}) {\n\ttag = shortTag(tag)\n\tif !resolvableTag(tag) {\n\t\treturn tag, in\n\t}\n\n\tdefer func() {\n\t\tswitch tag {\n\t\tcase \"\", rtag, strTag, binaryTag:\n\t\t\treturn\n\t\tcase floatTag:\n\t\t\tif rtag == intTag {\n\t\t\t\tswitch v := out.(type) {\n\t\t\t\tcase int64:\n\t\t\t\t\trtag = floatTag\n\t\t\t\t\tout = float64(v)\n\t\t\t\t\treturn\n\t\t\t\tcase int:\n\t\t\t\t\trtag = floatTag\n\t\t\t\t\tout = float64(v)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfailf(\"cannot decode %s `%s` as a %s\", shortTag(rtag), in, shortTag(tag))\n\t}()\n\n\t// Any data is accepted as a !!str or !!binary.\n\t// Otherwise, the prefix is enough of a hint about what it might be.\n\thint := byte('N')\n\tif in != \"\" {\n\t\thint = resolveTable[in[0]]\n\t}\n\tif hint != 0 && tag != strTag && tag != binaryTag {\n\t\t// Handle things we can lookup in a map.\n\t\tif item, ok := resolveMap[in]; ok {\n\t\t\treturn item.tag, item.value\n\t\t}\n\n\t\t// Base 60 floats are a bad idea, were dropped in YAML 1.2, and\n\t\t// are purposefully unsupported here. They're still quoted on\n\t\t// the way out for compatibility with other parser, though.\n\n\t\tswitch hint {\n\t\tcase 'M':\n\t\t\t// We've already checked the map above.\n\n\t\tcase '.':\n\t\t\t// Not in the map, so maybe a normal float.\n\t\t\tfloatv, err := strconv.ParseFloat(in, 64)\n\t\t\tif err == nil {\n\t\t\t\treturn floatTag, floatv\n\t\t\t}\n\n\t\tcase 'D', 'S':\n\t\t\t// Int, float, or timestamp.\n\t\t\t// Only try values as a timestamp if the value is unquoted or there's an explicit\n\t\t\t// !!timestamp tag.\n\t\t\tif tag == \"\" || tag == timestampTag {\n\t\t\t\tt, ok := parseTimestamp(in)\n\t\t\t\tif ok {\n\t\t\t\t\treturn timestampTag, t\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tplain := strings.Replace(in, \"_\", \"\", -1)\n\t\t\tintv, err := strconv.ParseInt(plain, 0, 64)\n\t\t\tif err == nil {\n\t\t\t\tif intv == int64(int(intv)) {\n\t\t\t\t\treturn intTag, int(intv)\n\t\t\t\t} else {\n\t\t\t\t\treturn intTag, intv\n\t\t\t\t}\n\t\t\t}\n\t\t\tuintv, err := strconv.ParseUint(plain, 0, 64)\n\t\t\tif err == nil {\n\t\t\t\treturn intTag, uintv\n\t\t\t}\n\t\t\tif yamlStyleFloat.MatchString(plain) {\n\t\t\t\tfloatv, err := strconv.ParseFloat(plain, 64)\n\t\t\t\tif err == nil {\n\t\t\t\t\treturn floatTag, floatv\n\t\t\t\t}\n\t\t\t}\n\t\t\tif strings.HasPrefix(plain, \"0b\") {\n\t\t\t\tintv, err := strconv.ParseInt(plain[2:], 2, 64)\n\t\t\t\tif err == nil {\n\t\t\t\t\tif intv == int64(int(intv)) {\n\t\t\t\t\t\treturn intTag, int(intv)\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn intTag, intv\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tuintv, err := strconv.ParseUint(plain[2:], 2, 64)\n\t\t\t\tif err == nil {\n\t\t\t\t\treturn intTag, uintv\n\t\t\t\t}\n\t\t\t} else if strings.HasPrefix(plain, \"-0b\") {\n\t\t\t\tintv, err := strconv.ParseInt(\"-\"+plain[3:], 2, 64)\n\t\t\t\tif err == nil {\n\t\t\t\t\tif true || intv == int64(int(intv)) {\n\t\t\t\t\t\treturn intTag, int(intv)\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn intTag, intv\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Octals as introduced in version 1.2 of the spec.\n\t\t\t// Octals from the 1.1 spec, spelled as 0777, are still\n\t\t\t// decoded by default in v3 as well for compatibility.\n\t\t\t// May be dropped in v4 depending on how usage evolves.\n\t\t\tif strings.HasPrefix(plain, \"0o\") {\n\t\t\t\tintv, err := strconv.ParseInt(plain[2:], 8, 64)\n\t\t\t\tif err == nil {\n\t\t\t\t\tif intv == int64(int(intv)) {\n\t\t\t\t\t\treturn intTag, int(intv)\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn intTag, intv\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tuintv, err := strconv.ParseUint(plain[2:], 8, 64)\n\t\t\t\tif err == nil {\n\t\t\t\t\treturn intTag, uintv\n\t\t\t\t}\n\t\t\t} else if strings.HasPrefix(plain, \"-0o\") {\n\t\t\t\tintv, err := strconv.ParseInt(\"-\"+plain[3:], 8, 64)\n\t\t\t\tif err == nil {\n\t\t\t\t\tif true || intv == int64(int(intv)) {\n\t\t\t\t\t\treturn intTag, int(intv)\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn intTag, intv\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tpanic(\"internal error: missing handler for resolver table: \" + string(rune(hint)) + \" (with \" + in + \")\")\n\t\t}\n\t}\n\treturn strTag, in\n}\n\n// encodeBase64 encodes s as base64 that is broken up into multiple lines\n// as appropriate for the resulting length.\nfunc encodeBase64(s string) string {\n\tconst lineLen = 70\n\tencLen := base64.StdEncoding.EncodedLen(len(s))\n\tlines := encLen/lineLen + 1\n\tbuf := make([]byte, encLen*2+lines)\n\tin := buf[0:encLen]\n\tout := buf[encLen:]\n\tbase64.StdEncoding.Encode(in, []byte(s))\n\tk := 0\n\tfor i := 0; i < len(in); i += lineLen {\n\t\tj := i + lineLen\n\t\tif j > len(in) {\n\t\t\tj = len(in)\n\t\t}\n\t\tk += copy(out[k:], in[i:j])\n\t\tif lines > 1 {\n\t\t\tout[k] = '\\n'\n\t\t\tk++\n\t\t}\n\t}\n\treturn string(out[:k])\n}\n\n// This is a subset of the formats allowed by the regular expression\n// defined at http://yaml.org/type/timestamp.html.\nvar allowedTimestampFormats = []string{\n\t\"2006-1-2T15:4:5.999999999Z07:00\", // RCF3339Nano with short date fields.\n\t\"2006-1-2t15:4:5.999999999Z07:00\", // RFC3339Nano with short date fields and lower-case \"t\".\n\t\"2006-1-2 15:4:5.999999999\",       // space separated with no time zone\n\t\"2006-1-2\",                        // date only\n\t// Notable exception: time.Parse cannot handle: \"2001-12-14 21:59:43.10 -5\"\n\t// from the set of examples.\n}\n\n// parseTimestamp parses s as a timestamp string and\n// returns the timestamp and reports whether it succeeded.\n// Timestamp formats are defined at http://yaml.org/type/timestamp.html\nfunc parseTimestamp(s string) (time.Time, bool) {\n\t// TODO write code to check all the formats supported by\n\t// http://yaml.org/type/timestamp.html instead of using time.Parse.\n\n\t// Quick check: all date formats start with YYYY-.\n\ti := 0\n\tfor ; i < len(s); i++ {\n\t\tif c := s[i]; c < '0' || c > '9' {\n\t\t\tbreak\n\t\t}\n\t}\n\tif i != 4 || i == len(s) || s[i] != '-' {\n\t\treturn time.Time{}, false\n\t}\n\tfor _, format := range allowedTimestampFormats {\n\t\tif t, err := time.Parse(format, s); err == nil {\n\t\t\treturn t, true\n\t\t}\n\t}\n\treturn time.Time{}, false\n}\n"
  },
  {
    "path": "tests/vendor/go.yaml.in/yaml/v3/scannerc.go",
    "content": "//\n// Copyright (c) 2011-2019 Canonical Ltd\n// Copyright (c) 2006-2010 Kirill Simonov\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.\n\npackage yaml\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n)\n\n// Introduction\n// ************\n//\n// The following notes assume that you are familiar with the YAML specification\n// (http://yaml.org/spec/1.2/spec.html).  We mostly follow it, although in\n// some cases we are less restrictive that it requires.\n//\n// The process of transforming a YAML stream into a sequence of events is\n// divided on two steps: Scanning and Parsing.\n//\n// The Scanner transforms the input stream into a sequence of tokens, while the\n// parser transform the sequence of tokens produced by the Scanner into a\n// sequence of parsing events.\n//\n// The Scanner is rather clever and complicated. The Parser, on the contrary,\n// is a straightforward implementation of a recursive-descendant parser (or,\n// LL(1) parser, as it is usually called).\n//\n// Actually there are two issues of Scanning that might be called \"clever\", the\n// rest is quite straightforward.  The issues are \"block collection start\" and\n// \"simple keys\".  Both issues are explained below in details.\n//\n// Here the Scanning step is explained and implemented.  We start with the list\n// of all the tokens produced by the Scanner together with short descriptions.\n//\n// Now, tokens:\n//\n//      STREAM-START(encoding)          # The stream start.\n//      STREAM-END                      # The stream end.\n//      VERSION-DIRECTIVE(major,minor)  # The '%YAML' directive.\n//      TAG-DIRECTIVE(handle,prefix)    # The '%TAG' directive.\n//      DOCUMENT-START                  # '---'\n//      DOCUMENT-END                    # '...'\n//      BLOCK-SEQUENCE-START            # Indentation increase denoting a block\n//      BLOCK-MAPPING-START             # sequence or a block mapping.\n//      BLOCK-END                       # Indentation decrease.\n//      FLOW-SEQUENCE-START             # '['\n//      FLOW-SEQUENCE-END               # ']'\n//      BLOCK-SEQUENCE-START            # '{'\n//      BLOCK-SEQUENCE-END              # '}'\n//      BLOCK-ENTRY                     # '-'\n//      FLOW-ENTRY                      # ','\n//      KEY                             # '?' or nothing (simple keys).\n//      VALUE                           # ':'\n//      ALIAS(anchor)                   # '*anchor'\n//      ANCHOR(anchor)                  # '&anchor'\n//      TAG(handle,suffix)              # '!handle!suffix'\n//      SCALAR(value,style)             # A scalar.\n//\n// The following two tokens are \"virtual\" tokens denoting the beginning and the\n// end of the stream:\n//\n//      STREAM-START(encoding)\n//      STREAM-END\n//\n// We pass the information about the input stream encoding with the\n// STREAM-START token.\n//\n// The next two tokens are responsible for tags:\n//\n//      VERSION-DIRECTIVE(major,minor)\n//      TAG-DIRECTIVE(handle,prefix)\n//\n// Example:\n//\n//      %YAML   1.1\n//      %TAG    !   !foo\n//      %TAG    !yaml!  tag:yaml.org,2002:\n//      ---\n//\n// The correspoding sequence of tokens:\n//\n//      STREAM-START(utf-8)\n//      VERSION-DIRECTIVE(1,1)\n//      TAG-DIRECTIVE(\"!\",\"!foo\")\n//      TAG-DIRECTIVE(\"!yaml\",\"tag:yaml.org,2002:\")\n//      DOCUMENT-START\n//      STREAM-END\n//\n// Note that the VERSION-DIRECTIVE and TAG-DIRECTIVE tokens occupy a whole\n// line.\n//\n// The document start and end indicators are represented by:\n//\n//      DOCUMENT-START\n//      DOCUMENT-END\n//\n// Note that if a YAML stream contains an implicit document (without '---'\n// and '...' indicators), no DOCUMENT-START and DOCUMENT-END tokens will be\n// produced.\n//\n// In the following examples, we present whole documents together with the\n// produced tokens.\n//\n//      1. An implicit document:\n//\n//          'a scalar'\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          SCALAR(\"a scalar\",single-quoted)\n//          STREAM-END\n//\n//      2. An explicit document:\n//\n//          ---\n//          'a scalar'\n//          ...\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          DOCUMENT-START\n//          SCALAR(\"a scalar\",single-quoted)\n//          DOCUMENT-END\n//          STREAM-END\n//\n//      3. Several documents in a stream:\n//\n//          'a scalar'\n//          ---\n//          'another scalar'\n//          ---\n//          'yet another scalar'\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          SCALAR(\"a scalar\",single-quoted)\n//          DOCUMENT-START\n//          SCALAR(\"another scalar\",single-quoted)\n//          DOCUMENT-START\n//          SCALAR(\"yet another scalar\",single-quoted)\n//          STREAM-END\n//\n// We have already introduced the SCALAR token above.  The following tokens are\n// used to describe aliases, anchors, tag, and scalars:\n//\n//      ALIAS(anchor)\n//      ANCHOR(anchor)\n//      TAG(handle,suffix)\n//      SCALAR(value,style)\n//\n// The following series of examples illustrate the usage of these tokens:\n//\n//      1. A recursive sequence:\n//\n//          &A [ *A ]\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          ANCHOR(\"A\")\n//          FLOW-SEQUENCE-START\n//          ALIAS(\"A\")\n//          FLOW-SEQUENCE-END\n//          STREAM-END\n//\n//      2. A tagged scalar:\n//\n//          !!float \"3.14\"  # A good approximation.\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          TAG(\"!!\",\"float\")\n//          SCALAR(\"3.14\",double-quoted)\n//          STREAM-END\n//\n//      3. Various scalar styles:\n//\n//          --- # Implicit empty plain scalars do not produce tokens.\n//          --- a plain scalar\n//          --- 'a single-quoted scalar'\n//          --- \"a double-quoted scalar\"\n//          --- |-\n//            a literal scalar\n//          --- >-\n//            a folded\n//            scalar\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          DOCUMENT-START\n//          DOCUMENT-START\n//          SCALAR(\"a plain scalar\",plain)\n//          DOCUMENT-START\n//          SCALAR(\"a single-quoted scalar\",single-quoted)\n//          DOCUMENT-START\n//          SCALAR(\"a double-quoted scalar\",double-quoted)\n//          DOCUMENT-START\n//          SCALAR(\"a literal scalar\",literal)\n//          DOCUMENT-START\n//          SCALAR(\"a folded scalar\",folded)\n//          STREAM-END\n//\n// Now it's time to review collection-related tokens. We will start with\n// flow collections:\n//\n//      FLOW-SEQUENCE-START\n//      FLOW-SEQUENCE-END\n//      FLOW-MAPPING-START\n//      FLOW-MAPPING-END\n//      FLOW-ENTRY\n//      KEY\n//      VALUE\n//\n// The tokens FLOW-SEQUENCE-START, FLOW-SEQUENCE-END, FLOW-MAPPING-START, and\n// FLOW-MAPPING-END represent the indicators '[', ']', '{', and '}'\n// correspondingly.  FLOW-ENTRY represent the ',' indicator.  Finally the\n// indicators '?' and ':', which are used for denoting mapping keys and values,\n// are represented by the KEY and VALUE tokens.\n//\n// The following examples show flow collections:\n//\n//      1. A flow sequence:\n//\n//          [item 1, item 2, item 3]\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          FLOW-SEQUENCE-START\n//          SCALAR(\"item 1\",plain)\n//          FLOW-ENTRY\n//          SCALAR(\"item 2\",plain)\n//          FLOW-ENTRY\n//          SCALAR(\"item 3\",plain)\n//          FLOW-SEQUENCE-END\n//          STREAM-END\n//\n//      2. A flow mapping:\n//\n//          {\n//              a simple key: a value,  # Note that the KEY token is produced.\n//              ? a complex key: another value,\n//          }\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          FLOW-MAPPING-START\n//          KEY\n//          SCALAR(\"a simple key\",plain)\n//          VALUE\n//          SCALAR(\"a value\",plain)\n//          FLOW-ENTRY\n//          KEY\n//          SCALAR(\"a complex key\",plain)\n//          VALUE\n//          SCALAR(\"another value\",plain)\n//          FLOW-ENTRY\n//          FLOW-MAPPING-END\n//          STREAM-END\n//\n// A simple key is a key which is not denoted by the '?' indicator.  Note that\n// the Scanner still produce the KEY token whenever it encounters a simple key.\n//\n// For scanning block collections, the following tokens are used (note that we\n// repeat KEY and VALUE here):\n//\n//      BLOCK-SEQUENCE-START\n//      BLOCK-MAPPING-START\n//      BLOCK-END\n//      BLOCK-ENTRY\n//      KEY\n//      VALUE\n//\n// The tokens BLOCK-SEQUENCE-START and BLOCK-MAPPING-START denote indentation\n// increase that precedes a block collection (cf. the INDENT token in Python).\n// The token BLOCK-END denote indentation decrease that ends a block collection\n// (cf. the DEDENT token in Python).  However YAML has some syntax pecularities\n// that makes detections of these tokens more complex.\n//\n// The tokens BLOCK-ENTRY, KEY, and VALUE are used to represent the indicators\n// '-', '?', and ':' correspondingly.\n//\n// The following examples show how the tokens BLOCK-SEQUENCE-START,\n// BLOCK-MAPPING-START, and BLOCK-END are emitted by the Scanner:\n//\n//      1. Block sequences:\n//\n//          - item 1\n//          - item 2\n//          -\n//            - item 3.1\n//            - item 3.2\n//          -\n//            key 1: value 1\n//            key 2: value 2\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          BLOCK-SEQUENCE-START\n//          BLOCK-ENTRY\n//          SCALAR(\"item 1\",plain)\n//          BLOCK-ENTRY\n//          SCALAR(\"item 2\",plain)\n//          BLOCK-ENTRY\n//          BLOCK-SEQUENCE-START\n//          BLOCK-ENTRY\n//          SCALAR(\"item 3.1\",plain)\n//          BLOCK-ENTRY\n//          SCALAR(\"item 3.2\",plain)\n//          BLOCK-END\n//          BLOCK-ENTRY\n//          BLOCK-MAPPING-START\n//          KEY\n//          SCALAR(\"key 1\",plain)\n//          VALUE\n//          SCALAR(\"value 1\",plain)\n//          KEY\n//          SCALAR(\"key 2\",plain)\n//          VALUE\n//          SCALAR(\"value 2\",plain)\n//          BLOCK-END\n//          BLOCK-END\n//          STREAM-END\n//\n//      2. Block mappings:\n//\n//          a simple key: a value   # The KEY token is produced here.\n//          ? a complex key\n//          : another value\n//          a mapping:\n//            key 1: value 1\n//            key 2: value 2\n//          a sequence:\n//            - item 1\n//            - item 2\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          BLOCK-MAPPING-START\n//          KEY\n//          SCALAR(\"a simple key\",plain)\n//          VALUE\n//          SCALAR(\"a value\",plain)\n//          KEY\n//          SCALAR(\"a complex key\",plain)\n//          VALUE\n//          SCALAR(\"another value\",plain)\n//          KEY\n//          SCALAR(\"a mapping\",plain)\n//          BLOCK-MAPPING-START\n//          KEY\n//          SCALAR(\"key 1\",plain)\n//          VALUE\n//          SCALAR(\"value 1\",plain)\n//          KEY\n//          SCALAR(\"key 2\",plain)\n//          VALUE\n//          SCALAR(\"value 2\",plain)\n//          BLOCK-END\n//          KEY\n//          SCALAR(\"a sequence\",plain)\n//          VALUE\n//          BLOCK-SEQUENCE-START\n//          BLOCK-ENTRY\n//          SCALAR(\"item 1\",plain)\n//          BLOCK-ENTRY\n//          SCALAR(\"item 2\",plain)\n//          BLOCK-END\n//          BLOCK-END\n//          STREAM-END\n//\n// YAML does not always require to start a new block collection from a new\n// line.  If the current line contains only '-', '?', and ':' indicators, a new\n// block collection may start at the current line.  The following examples\n// illustrate this case:\n//\n//      1. Collections in a sequence:\n//\n//          - - item 1\n//            - item 2\n//          - key 1: value 1\n//            key 2: value 2\n//          - ? complex key\n//            : complex value\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          BLOCK-SEQUENCE-START\n//          BLOCK-ENTRY\n//          BLOCK-SEQUENCE-START\n//          BLOCK-ENTRY\n//          SCALAR(\"item 1\",plain)\n//          BLOCK-ENTRY\n//          SCALAR(\"item 2\",plain)\n//          BLOCK-END\n//          BLOCK-ENTRY\n//          BLOCK-MAPPING-START\n//          KEY\n//          SCALAR(\"key 1\",plain)\n//          VALUE\n//          SCALAR(\"value 1\",plain)\n//          KEY\n//          SCALAR(\"key 2\",plain)\n//          VALUE\n//          SCALAR(\"value 2\",plain)\n//          BLOCK-END\n//          BLOCK-ENTRY\n//          BLOCK-MAPPING-START\n//          KEY\n//          SCALAR(\"complex key\")\n//          VALUE\n//          SCALAR(\"complex value\")\n//          BLOCK-END\n//          BLOCK-END\n//          STREAM-END\n//\n//      2. Collections in a mapping:\n//\n//          ? a sequence\n//          : - item 1\n//            - item 2\n//          ? a mapping\n//          : key 1: value 1\n//            key 2: value 2\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          BLOCK-MAPPING-START\n//          KEY\n//          SCALAR(\"a sequence\",plain)\n//          VALUE\n//          BLOCK-SEQUENCE-START\n//          BLOCK-ENTRY\n//          SCALAR(\"item 1\",plain)\n//          BLOCK-ENTRY\n//          SCALAR(\"item 2\",plain)\n//          BLOCK-END\n//          KEY\n//          SCALAR(\"a mapping\",plain)\n//          VALUE\n//          BLOCK-MAPPING-START\n//          KEY\n//          SCALAR(\"key 1\",plain)\n//          VALUE\n//          SCALAR(\"value 1\",plain)\n//          KEY\n//          SCALAR(\"key 2\",plain)\n//          VALUE\n//          SCALAR(\"value 2\",plain)\n//          BLOCK-END\n//          BLOCK-END\n//          STREAM-END\n//\n// YAML also permits non-indented sequences if they are included into a block\n// mapping.  In this case, the token BLOCK-SEQUENCE-START is not produced:\n//\n//      key:\n//      - item 1    # BLOCK-SEQUENCE-START is NOT produced here.\n//      - item 2\n//\n// Tokens:\n//\n//      STREAM-START(utf-8)\n//      BLOCK-MAPPING-START\n//      KEY\n//      SCALAR(\"key\",plain)\n//      VALUE\n//      BLOCK-ENTRY\n//      SCALAR(\"item 1\",plain)\n//      BLOCK-ENTRY\n//      SCALAR(\"item 2\",plain)\n//      BLOCK-END\n//\n\n// Ensure that the buffer contains the required number of characters.\n// Return true on success, false on failure (reader error or memory error).\nfunc cache(parser *yaml_parser_t, length int) bool {\n\t// [Go] This was inlined: !cache(A, B) -> unread < B && !update(A, B)\n\treturn parser.unread >= length || yaml_parser_update_buffer(parser, length)\n}\n\n// Advance the buffer pointer.\nfunc skip(parser *yaml_parser_t) {\n\tif !is_blank(parser.buffer, parser.buffer_pos) {\n\t\tparser.newlines = 0\n\t}\n\tparser.mark.index++\n\tparser.mark.column++\n\tparser.unread--\n\tparser.buffer_pos += width(parser.buffer[parser.buffer_pos])\n}\n\nfunc skip_line(parser *yaml_parser_t) {\n\tif is_crlf(parser.buffer, parser.buffer_pos) {\n\t\tparser.mark.index += 2\n\t\tparser.mark.column = 0\n\t\tparser.mark.line++\n\t\tparser.unread -= 2\n\t\tparser.buffer_pos += 2\n\t\tparser.newlines++\n\t} else if is_break(parser.buffer, parser.buffer_pos) {\n\t\tparser.mark.index++\n\t\tparser.mark.column = 0\n\t\tparser.mark.line++\n\t\tparser.unread--\n\t\tparser.buffer_pos += width(parser.buffer[parser.buffer_pos])\n\t\tparser.newlines++\n\t}\n}\n\n// Copy a character to a string buffer and advance pointers.\nfunc read(parser *yaml_parser_t, s []byte) []byte {\n\tif !is_blank(parser.buffer, parser.buffer_pos) {\n\t\tparser.newlines = 0\n\t}\n\tw := width(parser.buffer[parser.buffer_pos])\n\tif w == 0 {\n\t\tpanic(\"invalid character sequence\")\n\t}\n\tif len(s) == 0 {\n\t\ts = make([]byte, 0, 32)\n\t}\n\tif w == 1 && len(s)+w <= cap(s) {\n\t\ts = s[:len(s)+1]\n\t\ts[len(s)-1] = parser.buffer[parser.buffer_pos]\n\t\tparser.buffer_pos++\n\t} else {\n\t\ts = append(s, parser.buffer[parser.buffer_pos:parser.buffer_pos+w]...)\n\t\tparser.buffer_pos += w\n\t}\n\tparser.mark.index++\n\tparser.mark.column++\n\tparser.unread--\n\treturn s\n}\n\n// Copy a line break character to a string buffer and advance pointers.\nfunc read_line(parser *yaml_parser_t, s []byte) []byte {\n\tbuf := parser.buffer\n\tpos := parser.buffer_pos\n\tswitch {\n\tcase buf[pos] == '\\r' && buf[pos+1] == '\\n':\n\t\t// CR LF . LF\n\t\ts = append(s, '\\n')\n\t\tparser.buffer_pos += 2\n\t\tparser.mark.index++\n\t\tparser.unread--\n\tcase buf[pos] == '\\r' || buf[pos] == '\\n':\n\t\t// CR|LF . LF\n\t\ts = append(s, '\\n')\n\t\tparser.buffer_pos += 1\n\tcase buf[pos] == '\\xC2' && buf[pos+1] == '\\x85':\n\t\t// NEL . LF\n\t\ts = append(s, '\\n')\n\t\tparser.buffer_pos += 2\n\tcase buf[pos] == '\\xE2' && buf[pos+1] == '\\x80' && (buf[pos+2] == '\\xA8' || buf[pos+2] == '\\xA9'):\n\t\t// LS|PS . LS|PS\n\t\ts = append(s, buf[parser.buffer_pos:pos+3]...)\n\t\tparser.buffer_pos += 3\n\tdefault:\n\t\treturn s\n\t}\n\tparser.mark.index++\n\tparser.mark.column = 0\n\tparser.mark.line++\n\tparser.unread--\n\tparser.newlines++\n\treturn s\n}\n\n// Get the next token.\nfunc yaml_parser_scan(parser *yaml_parser_t, token *yaml_token_t) bool {\n\t// Erase the token object.\n\t*token = yaml_token_t{} // [Go] Is this necessary?\n\n\t// No tokens after STREAM-END or error.\n\tif parser.stream_end_produced || parser.error != yaml_NO_ERROR {\n\t\treturn true\n\t}\n\n\t// Ensure that the tokens queue contains enough tokens.\n\tif !parser.token_available {\n\t\tif !yaml_parser_fetch_more_tokens(parser) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Fetch the next token from the queue.\n\t*token = parser.tokens[parser.tokens_head]\n\tparser.tokens_head++\n\tparser.tokens_parsed++\n\tparser.token_available = false\n\n\tif token.typ == yaml_STREAM_END_TOKEN {\n\t\tparser.stream_end_produced = true\n\t}\n\treturn true\n}\n\n// Set the scanner error and return false.\nfunc yaml_parser_set_scanner_error(parser *yaml_parser_t, context string, context_mark yaml_mark_t, problem string) bool {\n\tparser.error = yaml_SCANNER_ERROR\n\tparser.context = context\n\tparser.context_mark = context_mark\n\tparser.problem = problem\n\tparser.problem_mark = parser.mark\n\treturn false\n}\n\nfunc yaml_parser_set_scanner_tag_error(parser *yaml_parser_t, directive bool, context_mark yaml_mark_t, problem string) bool {\n\tcontext := \"while parsing a tag\"\n\tif directive {\n\t\tcontext = \"while parsing a %TAG directive\"\n\t}\n\treturn yaml_parser_set_scanner_error(parser, context, context_mark, problem)\n}\n\nfunc trace(args ...interface{}) func() {\n\tpargs := append([]interface{}{\"+++\"}, args...)\n\tfmt.Println(pargs...)\n\tpargs = append([]interface{}{\"---\"}, args...)\n\treturn func() { fmt.Println(pargs...) }\n}\n\n// Ensure that the tokens queue contains at least one token which can be\n// returned to the Parser.\nfunc yaml_parser_fetch_more_tokens(parser *yaml_parser_t) bool {\n\t// While we need more tokens to fetch, do it.\n\tfor {\n\t\t// [Go] The comment parsing logic requires a lookahead of two tokens\n\t\t// so that foot comments may be parsed in time of associating them\n\t\t// with the tokens that are parsed before them, and also for line\n\t\t// comments to be transformed into head comments in some edge cases.\n\t\tif parser.tokens_head < len(parser.tokens)-2 {\n\t\t\t// If a potential simple key is at the head position, we need to fetch\n\t\t\t// the next token to disambiguate it.\n\t\t\thead_tok_idx, ok := parser.simple_keys_by_tok[parser.tokens_parsed]\n\t\t\tif !ok {\n\t\t\t\tbreak\n\t\t\t} else if valid, ok := yaml_simple_key_is_valid(parser, &parser.simple_keys[head_tok_idx]); !ok {\n\t\t\t\treturn false\n\t\t\t} else if !valid {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\t// Fetch the next token.\n\t\tif !yaml_parser_fetch_next_token(parser) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tparser.token_available = true\n\treturn true\n}\n\n// The dispatcher for token fetchers.\nfunc yaml_parser_fetch_next_token(parser *yaml_parser_t) (ok bool) {\n\t// Ensure that the buffer is initialized.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\n\t// Check if we just started scanning.  Fetch STREAM-START then.\n\tif !parser.stream_start_produced {\n\t\treturn yaml_parser_fetch_stream_start(parser)\n\t}\n\n\tscan_mark := parser.mark\n\n\t// Eat whitespaces and comments until we reach the next token.\n\tif !yaml_parser_scan_to_next_token(parser) {\n\t\treturn false\n\t}\n\n\t// [Go] While unrolling indents, transform the head comments of prior\n\t// indentation levels observed after scan_start into foot comments at\n\t// the respective indexes.\n\n\t// Check the indentation level against the current column.\n\tif !yaml_parser_unroll_indent(parser, parser.mark.column, scan_mark) {\n\t\treturn false\n\t}\n\n\t// Ensure that the buffer contains at least 4 characters.  4 is the length\n\t// of the longest indicators ('--- ' and '... ').\n\tif parser.unread < 4 && !yaml_parser_update_buffer(parser, 4) {\n\t\treturn false\n\t}\n\n\t// Is it the end of the stream?\n\tif is_z(parser.buffer, parser.buffer_pos) {\n\t\treturn yaml_parser_fetch_stream_end(parser)\n\t}\n\n\t// Is it a directive?\n\tif parser.mark.column == 0 && parser.buffer[parser.buffer_pos] == '%' {\n\t\treturn yaml_parser_fetch_directive(parser)\n\t}\n\n\tbuf := parser.buffer\n\tpos := parser.buffer_pos\n\n\t// Is it the document start indicator?\n\tif parser.mark.column == 0 && buf[pos] == '-' && buf[pos+1] == '-' && buf[pos+2] == '-' && is_blankz(buf, pos+3) {\n\t\treturn yaml_parser_fetch_document_indicator(parser, yaml_DOCUMENT_START_TOKEN)\n\t}\n\n\t// Is it the document end indicator?\n\tif parser.mark.column == 0 && buf[pos] == '.' && buf[pos+1] == '.' && buf[pos+2] == '.' && is_blankz(buf, pos+3) {\n\t\treturn yaml_parser_fetch_document_indicator(parser, yaml_DOCUMENT_END_TOKEN)\n\t}\n\n\tcomment_mark := parser.mark\n\tif len(parser.tokens) > 0 && (parser.flow_level == 0 && buf[pos] == ':' || parser.flow_level > 0 && buf[pos] == ',') {\n\t\t// Associate any following comments with the prior token.\n\t\tcomment_mark = parser.tokens[len(parser.tokens)-1].start_mark\n\t}\n\tdefer func() {\n\t\tif !ok {\n\t\t\treturn\n\t\t}\n\t\tif len(parser.tokens) > 0 && parser.tokens[len(parser.tokens)-1].typ == yaml_BLOCK_ENTRY_TOKEN {\n\t\t\t// Sequence indicators alone have no line comments. It becomes\n\t\t\t// a head comment for whatever follows.\n\t\t\treturn\n\t\t}\n\t\tif !yaml_parser_scan_line_comment(parser, comment_mark) {\n\t\t\tok = false\n\t\t\treturn\n\t\t}\n\t}()\n\n\t// Is it the flow sequence start indicator?\n\tif buf[pos] == '[' {\n\t\treturn yaml_parser_fetch_flow_collection_start(parser, yaml_FLOW_SEQUENCE_START_TOKEN)\n\t}\n\n\t// Is it the flow mapping start indicator?\n\tif parser.buffer[parser.buffer_pos] == '{' {\n\t\treturn yaml_parser_fetch_flow_collection_start(parser, yaml_FLOW_MAPPING_START_TOKEN)\n\t}\n\n\t// Is it the flow sequence end indicator?\n\tif parser.buffer[parser.buffer_pos] == ']' {\n\t\treturn yaml_parser_fetch_flow_collection_end(parser,\n\t\t\tyaml_FLOW_SEQUENCE_END_TOKEN)\n\t}\n\n\t// Is it the flow mapping end indicator?\n\tif parser.buffer[parser.buffer_pos] == '}' {\n\t\treturn yaml_parser_fetch_flow_collection_end(parser,\n\t\t\tyaml_FLOW_MAPPING_END_TOKEN)\n\t}\n\n\t// Is it the flow entry indicator?\n\tif parser.buffer[parser.buffer_pos] == ',' {\n\t\treturn yaml_parser_fetch_flow_entry(parser)\n\t}\n\n\t// Is it the block entry indicator?\n\tif parser.buffer[parser.buffer_pos] == '-' && is_blankz(parser.buffer, parser.buffer_pos+1) {\n\t\treturn yaml_parser_fetch_block_entry(parser)\n\t}\n\n\t// Is it the key indicator?\n\tif parser.buffer[parser.buffer_pos] == '?' && (parser.flow_level > 0 || is_blankz(parser.buffer, parser.buffer_pos+1)) {\n\t\treturn yaml_parser_fetch_key(parser)\n\t}\n\n\t// Is it the value indicator?\n\tif parser.buffer[parser.buffer_pos] == ':' && (parser.flow_level > 0 || is_blankz(parser.buffer, parser.buffer_pos+1)) {\n\t\treturn yaml_parser_fetch_value(parser)\n\t}\n\n\t// Is it an alias?\n\tif parser.buffer[parser.buffer_pos] == '*' {\n\t\treturn yaml_parser_fetch_anchor(parser, yaml_ALIAS_TOKEN)\n\t}\n\n\t// Is it an anchor?\n\tif parser.buffer[parser.buffer_pos] == '&' {\n\t\treturn yaml_parser_fetch_anchor(parser, yaml_ANCHOR_TOKEN)\n\t}\n\n\t// Is it a tag?\n\tif parser.buffer[parser.buffer_pos] == '!' {\n\t\treturn yaml_parser_fetch_tag(parser)\n\t}\n\n\t// Is it a literal scalar?\n\tif parser.buffer[parser.buffer_pos] == '|' && parser.flow_level == 0 {\n\t\treturn yaml_parser_fetch_block_scalar(parser, true)\n\t}\n\n\t// Is it a folded scalar?\n\tif parser.buffer[parser.buffer_pos] == '>' && parser.flow_level == 0 {\n\t\treturn yaml_parser_fetch_block_scalar(parser, false)\n\t}\n\n\t// Is it a single-quoted scalar?\n\tif parser.buffer[parser.buffer_pos] == '\\'' {\n\t\treturn yaml_parser_fetch_flow_scalar(parser, true)\n\t}\n\n\t// Is it a double-quoted scalar?\n\tif parser.buffer[parser.buffer_pos] == '\"' {\n\t\treturn yaml_parser_fetch_flow_scalar(parser, false)\n\t}\n\n\t// Is it a plain scalar?\n\t//\n\t// A plain scalar may start with any non-blank characters except\n\t//\n\t//      '-', '?', ':', ',', '[', ']', '{', '}',\n\t//      '#', '&', '*', '!', '|', '>', '\\'', '\\\"',\n\t//      '%', '@', '`'.\n\t//\n\t// In the block context (and, for the '-' indicator, in the flow context\n\t// too), it may also start with the characters\n\t//\n\t//      '-', '?', ':'\n\t//\n\t// if it is followed by a non-space character.\n\t//\n\t// The last rule is more restrictive than the specification requires.\n\t// [Go] TODO Make this logic more reasonable.\n\t//switch parser.buffer[parser.buffer_pos] {\n\t//case '-', '?', ':', ',', '?', '-', ',', ':', ']', '[', '}', '{', '&', '#', '!', '*', '>', '|', '\"', '\\'', '@', '%', '-', '`':\n\t//}\n\tif !(is_blankz(parser.buffer, parser.buffer_pos) || parser.buffer[parser.buffer_pos] == '-' ||\n\t\tparser.buffer[parser.buffer_pos] == '?' || parser.buffer[parser.buffer_pos] == ':' ||\n\t\tparser.buffer[parser.buffer_pos] == ',' || parser.buffer[parser.buffer_pos] == '[' ||\n\t\tparser.buffer[parser.buffer_pos] == ']' || parser.buffer[parser.buffer_pos] == '{' ||\n\t\tparser.buffer[parser.buffer_pos] == '}' || parser.buffer[parser.buffer_pos] == '#' ||\n\t\tparser.buffer[parser.buffer_pos] == '&' || parser.buffer[parser.buffer_pos] == '*' ||\n\t\tparser.buffer[parser.buffer_pos] == '!' || parser.buffer[parser.buffer_pos] == '|' ||\n\t\tparser.buffer[parser.buffer_pos] == '>' || parser.buffer[parser.buffer_pos] == '\\'' ||\n\t\tparser.buffer[parser.buffer_pos] == '\"' || parser.buffer[parser.buffer_pos] == '%' ||\n\t\tparser.buffer[parser.buffer_pos] == '@' || parser.buffer[parser.buffer_pos] == '`') ||\n\t\t(parser.buffer[parser.buffer_pos] == '-' && !is_blank(parser.buffer, parser.buffer_pos+1)) ||\n\t\t(parser.flow_level == 0 &&\n\t\t\t(parser.buffer[parser.buffer_pos] == '?' || parser.buffer[parser.buffer_pos] == ':') &&\n\t\t\t!is_blankz(parser.buffer, parser.buffer_pos+1)) {\n\t\treturn yaml_parser_fetch_plain_scalar(parser)\n\t}\n\n\t// If we don't determine the token type so far, it is an error.\n\treturn yaml_parser_set_scanner_error(parser,\n\t\t\"while scanning for the next token\", parser.mark,\n\t\t\"found character that cannot start any token\")\n}\n\nfunc yaml_simple_key_is_valid(parser *yaml_parser_t, simple_key *yaml_simple_key_t) (valid, ok bool) {\n\tif !simple_key.possible {\n\t\treturn false, true\n\t}\n\n\t// The 1.2 specification says:\n\t//\n\t//     \"If the ? indicator is omitted, parsing needs to see past the\n\t//     implicit key to recognize it as such. To limit the amount of\n\t//     lookahead required, the “:” indicator must appear at most 1024\n\t//     Unicode characters beyond the start of the key. In addition, the key\n\t//     is restricted to a single line.\"\n\t//\n\tif simple_key.mark.line < parser.mark.line || simple_key.mark.index+1024 < parser.mark.index {\n\t\t// Check if the potential simple key to be removed is required.\n\t\tif simple_key.required {\n\t\t\treturn false, yaml_parser_set_scanner_error(parser,\n\t\t\t\t\"while scanning a simple key\", simple_key.mark,\n\t\t\t\t\"could not find expected ':'\")\n\t\t}\n\t\tsimple_key.possible = false\n\t\treturn false, true\n\t}\n\treturn true, true\n}\n\n// Check if a simple key may start at the current position and add it if\n// needed.\nfunc yaml_parser_save_simple_key(parser *yaml_parser_t) bool {\n\t// A simple key is required at the current position if the scanner is in\n\t// the block context and the current column coincides with the indentation\n\t// level.\n\n\trequired := parser.flow_level == 0 && parser.indent == parser.mark.column\n\n\t//\n\t// If the current position may start a simple key, save it.\n\t//\n\tif parser.simple_key_allowed {\n\t\tsimple_key := yaml_simple_key_t{\n\t\t\tpossible:     true,\n\t\t\trequired:     required,\n\t\t\ttoken_number: parser.tokens_parsed + (len(parser.tokens) - parser.tokens_head),\n\t\t\tmark:         parser.mark,\n\t\t}\n\n\t\tif !yaml_parser_remove_simple_key(parser) {\n\t\t\treturn false\n\t\t}\n\t\tparser.simple_keys[len(parser.simple_keys)-1] = simple_key\n\t\tparser.simple_keys_by_tok[simple_key.token_number] = len(parser.simple_keys) - 1\n\t}\n\treturn true\n}\n\n// Remove a potential simple key at the current flow level.\nfunc yaml_parser_remove_simple_key(parser *yaml_parser_t) bool {\n\ti := len(parser.simple_keys) - 1\n\tif parser.simple_keys[i].possible {\n\t\t// If the key is required, it is an error.\n\t\tif parser.simple_keys[i].required {\n\t\t\treturn yaml_parser_set_scanner_error(parser,\n\t\t\t\t\"while scanning a simple key\", parser.simple_keys[i].mark,\n\t\t\t\t\"could not find expected ':'\")\n\t\t}\n\t\t// Remove the key from the stack.\n\t\tparser.simple_keys[i].possible = false\n\t\tdelete(parser.simple_keys_by_tok, parser.simple_keys[i].token_number)\n\t}\n\treturn true\n}\n\n// max_flow_level limits the flow_level\nconst max_flow_level = 10000\n\n// Increase the flow level and resize the simple key list if needed.\nfunc yaml_parser_increase_flow_level(parser *yaml_parser_t) bool {\n\t// Reset the simple key on the next level.\n\tparser.simple_keys = append(parser.simple_keys, yaml_simple_key_t{\n\t\tpossible:     false,\n\t\trequired:     false,\n\t\ttoken_number: parser.tokens_parsed + (len(parser.tokens) - parser.tokens_head),\n\t\tmark:         parser.mark,\n\t})\n\n\t// Increase the flow level.\n\tparser.flow_level++\n\tif parser.flow_level > max_flow_level {\n\t\treturn yaml_parser_set_scanner_error(parser,\n\t\t\t\"while increasing flow level\", parser.simple_keys[len(parser.simple_keys)-1].mark,\n\t\t\tfmt.Sprintf(\"exceeded max depth of %d\", max_flow_level))\n\t}\n\treturn true\n}\n\n// Decrease the flow level.\nfunc yaml_parser_decrease_flow_level(parser *yaml_parser_t) bool {\n\tif parser.flow_level > 0 {\n\t\tparser.flow_level--\n\t\tlast := len(parser.simple_keys) - 1\n\t\tdelete(parser.simple_keys_by_tok, parser.simple_keys[last].token_number)\n\t\tparser.simple_keys = parser.simple_keys[:last]\n\t}\n\treturn true\n}\n\n// max_indents limits the indents stack size\nconst max_indents = 10000\n\n// Push the current indentation level to the stack and set the new level\n// the current column is greater than the indentation level.  In this case,\n// append or insert the specified token into the token queue.\nfunc yaml_parser_roll_indent(parser *yaml_parser_t, column, number int, typ yaml_token_type_t, mark yaml_mark_t) bool {\n\t// In the flow context, do nothing.\n\tif parser.flow_level > 0 {\n\t\treturn true\n\t}\n\n\tif parser.indent < column {\n\t\t// Push the current indentation level to the stack and set the new\n\t\t// indentation level.\n\t\tparser.indents = append(parser.indents, parser.indent)\n\t\tparser.indent = column\n\t\tif len(parser.indents) > max_indents {\n\t\t\treturn yaml_parser_set_scanner_error(parser,\n\t\t\t\t\"while increasing indent level\", parser.simple_keys[len(parser.simple_keys)-1].mark,\n\t\t\t\tfmt.Sprintf(\"exceeded max depth of %d\", max_indents))\n\t\t}\n\n\t\t// Create a token and insert it into the queue.\n\t\ttoken := yaml_token_t{\n\t\t\ttyp:        typ,\n\t\t\tstart_mark: mark,\n\t\t\tend_mark:   mark,\n\t\t}\n\t\tif number > -1 {\n\t\t\tnumber -= parser.tokens_parsed\n\t\t}\n\t\tyaml_insert_token(parser, number, &token)\n\t}\n\treturn true\n}\n\n// Pop indentation levels from the indents stack until the current level\n// becomes less or equal to the column.  For each indentation level, append\n// the BLOCK-END token.\nfunc yaml_parser_unroll_indent(parser *yaml_parser_t, column int, scan_mark yaml_mark_t) bool {\n\t// In the flow context, do nothing.\n\tif parser.flow_level > 0 {\n\t\treturn true\n\t}\n\n\tblock_mark := scan_mark\n\tblock_mark.index--\n\n\t// Loop through the indentation levels in the stack.\n\tfor parser.indent > column {\n\n\t\t// [Go] Reposition the end token before potential following\n\t\t//      foot comments of parent blocks. For that, search\n\t\t//      backwards for recent comments that were at the same\n\t\t//      indent as the block that is ending now.\n\t\tstop_index := block_mark.index\n\t\tfor i := len(parser.comments) - 1; i >= 0; i-- {\n\t\t\tcomment := &parser.comments[i]\n\n\t\t\tif comment.end_mark.index < stop_index {\n\t\t\t\t// Don't go back beyond the start of the comment/whitespace scan, unless column < 0.\n\t\t\t\t// If requested indent column is < 0, then the document is over and everything else\n\t\t\t\t// is a foot anyway.\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tif comment.start_mark.column == parser.indent+1 {\n\t\t\t\t// This is a good match. But maybe there's a former comment\n\t\t\t\t// at that same indent level, so keep searching.\n\t\t\t\tblock_mark = comment.start_mark\n\t\t\t}\n\n\t\t\t// While the end of the former comment matches with\n\t\t\t// the start of the following one, we know there's\n\t\t\t// nothing in between and scanning is still safe.\n\t\t\tstop_index = comment.scan_mark.index\n\t\t}\n\n\t\t// Create a token and append it to the queue.\n\t\ttoken := yaml_token_t{\n\t\t\ttyp:        yaml_BLOCK_END_TOKEN,\n\t\t\tstart_mark: block_mark,\n\t\t\tend_mark:   block_mark,\n\t\t}\n\t\tyaml_insert_token(parser, -1, &token)\n\n\t\t// Pop the indentation level.\n\t\tparser.indent = parser.indents[len(parser.indents)-1]\n\t\tparser.indents = parser.indents[:len(parser.indents)-1]\n\t}\n\treturn true\n}\n\n// Initialize the scanner and produce the STREAM-START token.\nfunc yaml_parser_fetch_stream_start(parser *yaml_parser_t) bool {\n\n\t// Set the initial indentation.\n\tparser.indent = -1\n\n\t// Initialize the simple key stack.\n\tparser.simple_keys = append(parser.simple_keys, yaml_simple_key_t{})\n\n\tparser.simple_keys_by_tok = make(map[int]int)\n\n\t// A simple key is allowed at the beginning of the stream.\n\tparser.simple_key_allowed = true\n\n\t// We have started.\n\tparser.stream_start_produced = true\n\n\t// Create the STREAM-START token and append it to the queue.\n\ttoken := yaml_token_t{\n\t\ttyp:        yaml_STREAM_START_TOKEN,\n\t\tstart_mark: parser.mark,\n\t\tend_mark:   parser.mark,\n\t\tencoding:   parser.encoding,\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the STREAM-END token and shut down the scanner.\nfunc yaml_parser_fetch_stream_end(parser *yaml_parser_t) bool {\n\n\t// Force new line.\n\tif parser.mark.column != 0 {\n\t\tparser.mark.column = 0\n\t\tparser.mark.line++\n\t}\n\n\t// Reset the indentation level.\n\tif !yaml_parser_unroll_indent(parser, -1, parser.mark) {\n\t\treturn false\n\t}\n\n\t// Reset simple keys.\n\tif !yaml_parser_remove_simple_key(parser) {\n\t\treturn false\n\t}\n\n\tparser.simple_key_allowed = false\n\n\t// Create the STREAM-END token and append it to the queue.\n\ttoken := yaml_token_t{\n\t\ttyp:        yaml_STREAM_END_TOKEN,\n\t\tstart_mark: parser.mark,\n\t\tend_mark:   parser.mark,\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce a VERSION-DIRECTIVE or TAG-DIRECTIVE token.\nfunc yaml_parser_fetch_directive(parser *yaml_parser_t) bool {\n\t// Reset the indentation level.\n\tif !yaml_parser_unroll_indent(parser, -1, parser.mark) {\n\t\treturn false\n\t}\n\n\t// Reset simple keys.\n\tif !yaml_parser_remove_simple_key(parser) {\n\t\treturn false\n\t}\n\n\tparser.simple_key_allowed = false\n\n\t// Create the YAML-DIRECTIVE or TAG-DIRECTIVE token.\n\ttoken := yaml_token_t{}\n\tif !yaml_parser_scan_directive(parser, &token) {\n\t\treturn false\n\t}\n\t// Append the token to the queue.\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the DOCUMENT-START or DOCUMENT-END token.\nfunc yaml_parser_fetch_document_indicator(parser *yaml_parser_t, typ yaml_token_type_t) bool {\n\t// Reset the indentation level.\n\tif !yaml_parser_unroll_indent(parser, -1, parser.mark) {\n\t\treturn false\n\t}\n\n\t// Reset simple keys.\n\tif !yaml_parser_remove_simple_key(parser) {\n\t\treturn false\n\t}\n\n\tparser.simple_key_allowed = false\n\n\t// Consume the token.\n\tstart_mark := parser.mark\n\n\tskip(parser)\n\tskip(parser)\n\tskip(parser)\n\n\tend_mark := parser.mark\n\n\t// Create the DOCUMENT-START or DOCUMENT-END token.\n\ttoken := yaml_token_t{\n\t\ttyp:        typ,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t}\n\t// Append the token to the queue.\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the FLOW-SEQUENCE-START or FLOW-MAPPING-START token.\nfunc yaml_parser_fetch_flow_collection_start(parser *yaml_parser_t, typ yaml_token_type_t) bool {\n\n\t// The indicators '[' and '{' may start a simple key.\n\tif !yaml_parser_save_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t// Increase the flow level.\n\tif !yaml_parser_increase_flow_level(parser) {\n\t\treturn false\n\t}\n\n\t// A simple key may follow the indicators '[' and '{'.\n\tparser.simple_key_allowed = true\n\n\t// Consume the token.\n\tstart_mark := parser.mark\n\tskip(parser)\n\tend_mark := parser.mark\n\n\t// Create the FLOW-SEQUENCE-START of FLOW-MAPPING-START token.\n\ttoken := yaml_token_t{\n\t\ttyp:        typ,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t}\n\t// Append the token to the queue.\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the FLOW-SEQUENCE-END or FLOW-MAPPING-END token.\nfunc yaml_parser_fetch_flow_collection_end(parser *yaml_parser_t, typ yaml_token_type_t) bool {\n\t// Reset any potential simple key on the current flow level.\n\tif !yaml_parser_remove_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t// Decrease the flow level.\n\tif !yaml_parser_decrease_flow_level(parser) {\n\t\treturn false\n\t}\n\n\t// No simple keys after the indicators ']' and '}'.\n\tparser.simple_key_allowed = false\n\n\t// Consume the token.\n\n\tstart_mark := parser.mark\n\tskip(parser)\n\tend_mark := parser.mark\n\n\t// Create the FLOW-SEQUENCE-END of FLOW-MAPPING-END token.\n\ttoken := yaml_token_t{\n\t\ttyp:        typ,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t}\n\t// Append the token to the queue.\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the FLOW-ENTRY token.\nfunc yaml_parser_fetch_flow_entry(parser *yaml_parser_t) bool {\n\t// Reset any potential simple keys on the current flow level.\n\tif !yaml_parser_remove_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t// Simple keys are allowed after ','.\n\tparser.simple_key_allowed = true\n\n\t// Consume the token.\n\tstart_mark := parser.mark\n\tskip(parser)\n\tend_mark := parser.mark\n\n\t// Create the FLOW-ENTRY token and append it to the queue.\n\ttoken := yaml_token_t{\n\t\ttyp:        yaml_FLOW_ENTRY_TOKEN,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the BLOCK-ENTRY token.\nfunc yaml_parser_fetch_block_entry(parser *yaml_parser_t) bool {\n\t// Check if the scanner is in the block context.\n\tif parser.flow_level == 0 {\n\t\t// Check if we are allowed to start a new entry.\n\t\tif !parser.simple_key_allowed {\n\t\t\treturn yaml_parser_set_scanner_error(parser, \"\", parser.mark,\n\t\t\t\t\"block sequence entries are not allowed in this context\")\n\t\t}\n\t\t// Add the BLOCK-SEQUENCE-START token if needed.\n\t\tif !yaml_parser_roll_indent(parser, parser.mark.column, -1, yaml_BLOCK_SEQUENCE_START_TOKEN, parser.mark) {\n\t\t\treturn false\n\t\t}\n\t} else {\n\t\t// It is an error for the '-' indicator to occur in the flow context,\n\t\t// but we let the Parser detect and report about it because the Parser\n\t\t// is able to point to the context.\n\t}\n\n\t// Reset any potential simple keys on the current flow level.\n\tif !yaml_parser_remove_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t// Simple keys are allowed after '-'.\n\tparser.simple_key_allowed = true\n\n\t// Consume the token.\n\tstart_mark := parser.mark\n\tskip(parser)\n\tend_mark := parser.mark\n\n\t// Create the BLOCK-ENTRY token and append it to the queue.\n\ttoken := yaml_token_t{\n\t\ttyp:        yaml_BLOCK_ENTRY_TOKEN,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the KEY token.\nfunc yaml_parser_fetch_key(parser *yaml_parser_t) bool {\n\n\t// In the block context, additional checks are required.\n\tif parser.flow_level == 0 {\n\t\t// Check if we are allowed to start a new key (not nessesary simple).\n\t\tif !parser.simple_key_allowed {\n\t\t\treturn yaml_parser_set_scanner_error(parser, \"\", parser.mark,\n\t\t\t\t\"mapping keys are not allowed in this context\")\n\t\t}\n\t\t// Add the BLOCK-MAPPING-START token if needed.\n\t\tif !yaml_parser_roll_indent(parser, parser.mark.column, -1, yaml_BLOCK_MAPPING_START_TOKEN, parser.mark) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Reset any potential simple keys on the current flow level.\n\tif !yaml_parser_remove_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t// Simple keys are allowed after '?' in the block context.\n\tparser.simple_key_allowed = parser.flow_level == 0\n\n\t// Consume the token.\n\tstart_mark := parser.mark\n\tskip(parser)\n\tend_mark := parser.mark\n\n\t// Create the KEY token and append it to the queue.\n\ttoken := yaml_token_t{\n\t\ttyp:        yaml_KEY_TOKEN,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the VALUE token.\nfunc yaml_parser_fetch_value(parser *yaml_parser_t) bool {\n\n\tsimple_key := &parser.simple_keys[len(parser.simple_keys)-1]\n\n\t// Have we found a simple key?\n\tif valid, ok := yaml_simple_key_is_valid(parser, simple_key); !ok {\n\t\treturn false\n\n\t} else if valid {\n\n\t\t// Create the KEY token and insert it into the queue.\n\t\ttoken := yaml_token_t{\n\t\t\ttyp:        yaml_KEY_TOKEN,\n\t\t\tstart_mark: simple_key.mark,\n\t\t\tend_mark:   simple_key.mark,\n\t\t}\n\t\tyaml_insert_token(parser, simple_key.token_number-parser.tokens_parsed, &token)\n\n\t\t// In the block context, we may need to add the BLOCK-MAPPING-START token.\n\t\tif !yaml_parser_roll_indent(parser, simple_key.mark.column,\n\t\t\tsimple_key.token_number,\n\t\t\tyaml_BLOCK_MAPPING_START_TOKEN, simple_key.mark) {\n\t\t\treturn false\n\t\t}\n\n\t\t// Remove the simple key.\n\t\tsimple_key.possible = false\n\t\tdelete(parser.simple_keys_by_tok, simple_key.token_number)\n\n\t\t// A simple key cannot follow another simple key.\n\t\tparser.simple_key_allowed = false\n\n\t} else {\n\t\t// The ':' indicator follows a complex key.\n\n\t\t// In the block context, extra checks are required.\n\t\tif parser.flow_level == 0 {\n\n\t\t\t// Check if we are allowed to start a complex value.\n\t\t\tif !parser.simple_key_allowed {\n\t\t\t\treturn yaml_parser_set_scanner_error(parser, \"\", parser.mark,\n\t\t\t\t\t\"mapping values are not allowed in this context\")\n\t\t\t}\n\n\t\t\t// Add the BLOCK-MAPPING-START token if needed.\n\t\t\tif !yaml_parser_roll_indent(parser, parser.mark.column, -1, yaml_BLOCK_MAPPING_START_TOKEN, parser.mark) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\t// Simple keys after ':' are allowed in the block context.\n\t\tparser.simple_key_allowed = parser.flow_level == 0\n\t}\n\n\t// Consume the token.\n\tstart_mark := parser.mark\n\tskip(parser)\n\tend_mark := parser.mark\n\n\t// Create the VALUE token and append it to the queue.\n\ttoken := yaml_token_t{\n\t\ttyp:        yaml_VALUE_TOKEN,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the ALIAS or ANCHOR token.\nfunc yaml_parser_fetch_anchor(parser *yaml_parser_t, typ yaml_token_type_t) bool {\n\t// An anchor or an alias could be a simple key.\n\tif !yaml_parser_save_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t// A simple key cannot follow an anchor or an alias.\n\tparser.simple_key_allowed = false\n\n\t// Create the ALIAS or ANCHOR token and append it to the queue.\n\tvar token yaml_token_t\n\tif !yaml_parser_scan_anchor(parser, &token, typ) {\n\t\treturn false\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the TAG token.\nfunc yaml_parser_fetch_tag(parser *yaml_parser_t) bool {\n\t// A tag could be a simple key.\n\tif !yaml_parser_save_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t// A simple key cannot follow a tag.\n\tparser.simple_key_allowed = false\n\n\t// Create the TAG token and append it to the queue.\n\tvar token yaml_token_t\n\tif !yaml_parser_scan_tag(parser, &token) {\n\t\treturn false\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the SCALAR(...,literal) or SCALAR(...,folded) tokens.\nfunc yaml_parser_fetch_block_scalar(parser *yaml_parser_t, literal bool) bool {\n\t// Remove any potential simple keys.\n\tif !yaml_parser_remove_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t// A simple key may follow a block scalar.\n\tparser.simple_key_allowed = true\n\n\t// Create the SCALAR token and append it to the queue.\n\tvar token yaml_token_t\n\tif !yaml_parser_scan_block_scalar(parser, &token, literal) {\n\t\treturn false\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the SCALAR(...,single-quoted) or SCALAR(...,double-quoted) tokens.\nfunc yaml_parser_fetch_flow_scalar(parser *yaml_parser_t, single bool) bool {\n\t// A plain scalar could be a simple key.\n\tif !yaml_parser_save_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t// A simple key cannot follow a flow scalar.\n\tparser.simple_key_allowed = false\n\n\t// Create the SCALAR token and append it to the queue.\n\tvar token yaml_token_t\n\tif !yaml_parser_scan_flow_scalar(parser, &token, single) {\n\t\treturn false\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the SCALAR(...,plain) token.\nfunc yaml_parser_fetch_plain_scalar(parser *yaml_parser_t) bool {\n\t// A plain scalar could be a simple key.\n\tif !yaml_parser_save_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t// A simple key cannot follow a flow scalar.\n\tparser.simple_key_allowed = false\n\n\t// Create the SCALAR token and append it to the queue.\n\tvar token yaml_token_t\n\tif !yaml_parser_scan_plain_scalar(parser, &token) {\n\t\treturn false\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Eat whitespaces and comments until the next token is found.\nfunc yaml_parser_scan_to_next_token(parser *yaml_parser_t) bool {\n\n\tscan_mark := parser.mark\n\n\t// Until the next token is not found.\n\tfor {\n\t\t// Allow the BOM mark to start a line.\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t\tif parser.mark.column == 0 && is_bom(parser.buffer, parser.buffer_pos) {\n\t\t\tskip(parser)\n\t\t}\n\n\t\t// Eat whitespaces.\n\t\t// Tabs are allowed:\n\t\t//  - in the flow context\n\t\t//  - in the block context, but not at the beginning of the line or\n\t\t//  after '-', '?', or ':' (complex value).\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\n\t\tfor parser.buffer[parser.buffer_pos] == ' ' || ((parser.flow_level > 0 || !parser.simple_key_allowed) && parser.buffer[parser.buffer_pos] == '\\t') {\n\t\t\tskip(parser)\n\t\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\t// Check if we just had a line comment under a sequence entry that\n\t\t// looks more like a header to the following content. Similar to this:\n\t\t//\n\t\t// - # The comment\n\t\t//   - Some data\n\t\t//\n\t\t// If so, transform the line comment to a head comment and reposition.\n\t\tif len(parser.comments) > 0 && len(parser.tokens) > 1 {\n\t\t\ttokenA := parser.tokens[len(parser.tokens)-2]\n\t\t\ttokenB := parser.tokens[len(parser.tokens)-1]\n\t\t\tcomment := &parser.comments[len(parser.comments)-1]\n\t\t\tif tokenA.typ == yaml_BLOCK_SEQUENCE_START_TOKEN && tokenB.typ == yaml_BLOCK_ENTRY_TOKEN && len(comment.line) > 0 && !is_break(parser.buffer, parser.buffer_pos) {\n\t\t\t\t// If it was in the prior line, reposition so it becomes a\n\t\t\t\t// header of the follow up token. Otherwise, keep it in place\n\t\t\t\t// so it becomes a header of the former.\n\t\t\t\tcomment.head = comment.line\n\t\t\t\tcomment.line = nil\n\t\t\t\tif comment.start_mark.line == parser.mark.line-1 {\n\t\t\t\t\tcomment.token_mark = parser.mark\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Eat a comment until a line break.\n\t\tif parser.buffer[parser.buffer_pos] == '#' {\n\t\t\tif !yaml_parser_scan_comments(parser, scan_mark) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\t// If it is a line break, eat it.\n\t\tif is_break(parser.buffer, parser.buffer_pos) {\n\t\t\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tskip_line(parser)\n\n\t\t\t// In the block context, a new line may start a simple key.\n\t\t\tif parser.flow_level == 0 {\n\t\t\t\tparser.simple_key_allowed = true\n\t\t\t}\n\t\t} else {\n\t\t\tbreak // We have found a token.\n\t\t}\n\t}\n\n\treturn true\n}\n\n// Scan a YAML-DIRECTIVE or TAG-DIRECTIVE token.\n//\n// Scope:\n//\n//\t%YAML    1.1    # a comment \\n\n//\t^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n//\t%TAG    !yaml!  tag:yaml.org,2002:  \\n\n//\t^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nfunc yaml_parser_scan_directive(parser *yaml_parser_t, token *yaml_token_t) bool {\n\t// Eat '%'.\n\tstart_mark := parser.mark\n\tskip(parser)\n\n\t// Scan the directive name.\n\tvar name []byte\n\tif !yaml_parser_scan_directive_name(parser, start_mark, &name) {\n\t\treturn false\n\t}\n\n\t// Is it a YAML directive?\n\tif bytes.Equal(name, []byte(\"YAML\")) {\n\t\t// Scan the VERSION directive value.\n\t\tvar major, minor int8\n\t\tif !yaml_parser_scan_version_directive_value(parser, start_mark, &major, &minor) {\n\t\t\treturn false\n\t\t}\n\t\tend_mark := parser.mark\n\n\t\t// Create a VERSION-DIRECTIVE token.\n\t\t*token = yaml_token_t{\n\t\t\ttyp:        yaml_VERSION_DIRECTIVE_TOKEN,\n\t\t\tstart_mark: start_mark,\n\t\t\tend_mark:   end_mark,\n\t\t\tmajor:      major,\n\t\t\tminor:      minor,\n\t\t}\n\n\t\t// Is it a TAG directive?\n\t} else if bytes.Equal(name, []byte(\"TAG\")) {\n\t\t// Scan the TAG directive value.\n\t\tvar handle, prefix []byte\n\t\tif !yaml_parser_scan_tag_directive_value(parser, start_mark, &handle, &prefix) {\n\t\t\treturn false\n\t\t}\n\t\tend_mark := parser.mark\n\n\t\t// Create a TAG-DIRECTIVE token.\n\t\t*token = yaml_token_t{\n\t\t\ttyp:        yaml_TAG_DIRECTIVE_TOKEN,\n\t\t\tstart_mark: start_mark,\n\t\t\tend_mark:   end_mark,\n\t\t\tvalue:      handle,\n\t\t\tprefix:     prefix,\n\t\t}\n\n\t\t// Unknown directive.\n\t} else {\n\t\tyaml_parser_set_scanner_error(parser, \"while scanning a directive\",\n\t\t\tstart_mark, \"found unknown directive name\")\n\t\treturn false\n\t}\n\n\t// Eat the rest of the line including any comments.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\n\tfor is_blank(parser.buffer, parser.buffer_pos) {\n\t\tskip(parser)\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tif parser.buffer[parser.buffer_pos] == '#' {\n\t\t// [Go] Discard this inline comment for the time being.\n\t\t//if !yaml_parser_scan_line_comment(parser, start_mark) {\n\t\t//\treturn false\n\t\t//}\n\t\tfor !is_breakz(parser.buffer, parser.buffer_pos) {\n\t\t\tskip(parser)\n\t\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check if we are at the end of the line.\n\tif !is_breakz(parser.buffer, parser.buffer_pos) {\n\t\tyaml_parser_set_scanner_error(parser, \"while scanning a directive\",\n\t\t\tstart_mark, \"did not find expected comment or line break\")\n\t\treturn false\n\t}\n\n\t// Eat a line break.\n\tif is_break(parser.buffer, parser.buffer_pos) {\n\t\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\t\treturn false\n\t\t}\n\t\tskip_line(parser)\n\t}\n\n\treturn true\n}\n\n// Scan the directive name.\n//\n// Scope:\n//\n//\t%YAML   1.1     # a comment \\n\n//\t ^^^^\n//\t%TAG    !yaml!  tag:yaml.org,2002:  \\n\n//\t ^^^\nfunc yaml_parser_scan_directive_name(parser *yaml_parser_t, start_mark yaml_mark_t, name *[]byte) bool {\n\t// Consume the directive name.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\n\tvar s []byte\n\tfor is_alpha(parser.buffer, parser.buffer_pos) {\n\t\ts = read(parser, s)\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Check if the name is empty.\n\tif len(s) == 0 {\n\t\tyaml_parser_set_scanner_error(parser, \"while scanning a directive\",\n\t\t\tstart_mark, \"could not find expected directive name\")\n\t\treturn false\n\t}\n\n\t// Check for an blank character after the name.\n\tif !is_blankz(parser.buffer, parser.buffer_pos) {\n\t\tyaml_parser_set_scanner_error(parser, \"while scanning a directive\",\n\t\t\tstart_mark, \"found unexpected non-alphabetical character\")\n\t\treturn false\n\t}\n\t*name = s\n\treturn true\n}\n\n// Scan the value of VERSION-DIRECTIVE.\n//\n// Scope:\n//\n//\t%YAML   1.1     # a comment \\n\n//\t     ^^^^^^\nfunc yaml_parser_scan_version_directive_value(parser *yaml_parser_t, start_mark yaml_mark_t, major, minor *int8) bool {\n\t// Eat whitespaces.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\tfor is_blank(parser.buffer, parser.buffer_pos) {\n\t\tskip(parser)\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Consume the major version number.\n\tif !yaml_parser_scan_version_directive_number(parser, start_mark, major) {\n\t\treturn false\n\t}\n\n\t// Eat '.'.\n\tif parser.buffer[parser.buffer_pos] != '.' {\n\t\treturn yaml_parser_set_scanner_error(parser, \"while scanning a %YAML directive\",\n\t\t\tstart_mark, \"did not find expected digit or '.' character\")\n\t}\n\n\tskip(parser)\n\n\t// Consume the minor version number.\n\tif !yaml_parser_scan_version_directive_number(parser, start_mark, minor) {\n\t\treturn false\n\t}\n\treturn true\n}\n\nconst max_number_length = 2\n\n// Scan the version number of VERSION-DIRECTIVE.\n//\n// Scope:\n//\n//\t%YAML   1.1     # a comment \\n\n//\t        ^\n//\t%YAML   1.1     # a comment \\n\n//\t          ^\nfunc yaml_parser_scan_version_directive_number(parser *yaml_parser_t, start_mark yaml_mark_t, number *int8) bool {\n\n\t// Repeat while the next character is digit.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\tvar value, length int8\n\tfor is_digit(parser.buffer, parser.buffer_pos) {\n\t\t// Check if the number is too long.\n\t\tlength++\n\t\tif length > max_number_length {\n\t\t\treturn yaml_parser_set_scanner_error(parser, \"while scanning a %YAML directive\",\n\t\t\t\tstart_mark, \"found extremely long version number\")\n\t\t}\n\t\tvalue = value*10 + int8(as_digit(parser.buffer, parser.buffer_pos))\n\t\tskip(parser)\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Check if the number was present.\n\tif length == 0 {\n\t\treturn yaml_parser_set_scanner_error(parser, \"while scanning a %YAML directive\",\n\t\t\tstart_mark, \"did not find expected version number\")\n\t}\n\t*number = value\n\treturn true\n}\n\n// Scan the value of a TAG-DIRECTIVE token.\n//\n// Scope:\n//\n//\t%TAG    !yaml!  tag:yaml.org,2002:  \\n\n//\t    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nfunc yaml_parser_scan_tag_directive_value(parser *yaml_parser_t, start_mark yaml_mark_t, handle, prefix *[]byte) bool {\n\tvar handle_value, prefix_value []byte\n\n\t// Eat whitespaces.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\n\tfor is_blank(parser.buffer, parser.buffer_pos) {\n\t\tskip(parser)\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Scan a handle.\n\tif !yaml_parser_scan_tag_handle(parser, true, start_mark, &handle_value) {\n\t\treturn false\n\t}\n\n\t// Expect a whitespace.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\tif !is_blank(parser.buffer, parser.buffer_pos) {\n\t\tyaml_parser_set_scanner_error(parser, \"while scanning a %TAG directive\",\n\t\t\tstart_mark, \"did not find expected whitespace\")\n\t\treturn false\n\t}\n\n\t// Eat whitespaces.\n\tfor is_blank(parser.buffer, parser.buffer_pos) {\n\t\tskip(parser)\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Scan a prefix.\n\tif !yaml_parser_scan_tag_uri(parser, true, nil, start_mark, &prefix_value) {\n\t\treturn false\n\t}\n\n\t// Expect a whitespace or line break.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\tif !is_blankz(parser.buffer, parser.buffer_pos) {\n\t\tyaml_parser_set_scanner_error(parser, \"while scanning a %TAG directive\",\n\t\t\tstart_mark, \"did not find expected whitespace or line break\")\n\t\treturn false\n\t}\n\n\t*handle = handle_value\n\t*prefix = prefix_value\n\treturn true\n}\n\nfunc yaml_parser_scan_anchor(parser *yaml_parser_t, token *yaml_token_t, typ yaml_token_type_t) bool {\n\tvar s []byte\n\n\t// Eat the indicator character.\n\tstart_mark := parser.mark\n\tskip(parser)\n\n\t// Consume the value.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\n\tfor is_alpha(parser.buffer, parser.buffer_pos) {\n\t\ts = read(parser, s)\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tend_mark := parser.mark\n\n\t/*\n\t * Check if length of the anchor is greater than 0 and it is followed by\n\t * a whitespace character or one of the indicators:\n\t *\n\t *      '?', ':', ',', ']', '}', '%', '@', '`'.\n\t */\n\n\tif len(s) == 0 ||\n\t\t!(is_blankz(parser.buffer, parser.buffer_pos) || parser.buffer[parser.buffer_pos] == '?' ||\n\t\t\tparser.buffer[parser.buffer_pos] == ':' || parser.buffer[parser.buffer_pos] == ',' ||\n\t\t\tparser.buffer[parser.buffer_pos] == ']' || parser.buffer[parser.buffer_pos] == '}' ||\n\t\t\tparser.buffer[parser.buffer_pos] == '%' || parser.buffer[parser.buffer_pos] == '@' ||\n\t\t\tparser.buffer[parser.buffer_pos] == '`') {\n\t\tcontext := \"while scanning an alias\"\n\t\tif typ == yaml_ANCHOR_TOKEN {\n\t\t\tcontext = \"while scanning an anchor\"\n\t\t}\n\t\tyaml_parser_set_scanner_error(parser, context, start_mark,\n\t\t\t\"did not find expected alphabetic or numeric character\")\n\t\treturn false\n\t}\n\n\t// Create a token.\n\t*token = yaml_token_t{\n\t\ttyp:        typ,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t\tvalue:      s,\n\t}\n\n\treturn true\n}\n\n/*\n * Scan a TAG token.\n */\n\nfunc yaml_parser_scan_tag(parser *yaml_parser_t, token *yaml_token_t) bool {\n\tvar handle, suffix []byte\n\n\tstart_mark := parser.mark\n\n\t// Check if the tag is in the canonical form.\n\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\treturn false\n\t}\n\n\tif parser.buffer[parser.buffer_pos+1] == '<' {\n\t\t// Keep the handle as ''\n\n\t\t// Eat '!<'\n\t\tskip(parser)\n\t\tskip(parser)\n\n\t\t// Consume the tag value.\n\t\tif !yaml_parser_scan_tag_uri(parser, false, nil, start_mark, &suffix) {\n\t\t\treturn false\n\t\t}\n\n\t\t// Check for '>' and eat it.\n\t\tif parser.buffer[parser.buffer_pos] != '>' {\n\t\t\tyaml_parser_set_scanner_error(parser, \"while scanning a tag\",\n\t\t\t\tstart_mark, \"did not find the expected '>'\")\n\t\t\treturn false\n\t\t}\n\n\t\tskip(parser)\n\t} else {\n\t\t// The tag has either the '!suffix' or the '!handle!suffix' form.\n\n\t\t// First, try to scan a handle.\n\t\tif !yaml_parser_scan_tag_handle(parser, false, start_mark, &handle) {\n\t\t\treturn false\n\t\t}\n\n\t\t// Check if it is, indeed, handle.\n\t\tif handle[0] == '!' && len(handle) > 1 && handle[len(handle)-1] == '!' {\n\t\t\t// Scan the suffix now.\n\t\t\tif !yaml_parser_scan_tag_uri(parser, false, nil, start_mark, &suffix) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t} else {\n\t\t\t// It wasn't a handle after all.  Scan the rest of the tag.\n\t\t\tif !yaml_parser_scan_tag_uri(parser, false, handle, start_mark, &suffix) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\t// Set the handle to '!'.\n\t\t\thandle = []byte{'!'}\n\n\t\t\t// A special case: the '!' tag.  Set the handle to '' and the\n\t\t\t// suffix to '!'.\n\t\t\tif len(suffix) == 0 {\n\t\t\t\thandle, suffix = suffix, handle\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check the character which ends the tag.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\tif !is_blankz(parser.buffer, parser.buffer_pos) {\n\t\tyaml_parser_set_scanner_error(parser, \"while scanning a tag\",\n\t\t\tstart_mark, \"did not find expected whitespace or line break\")\n\t\treturn false\n\t}\n\n\tend_mark := parser.mark\n\n\t// Create a token.\n\t*token = yaml_token_t{\n\t\ttyp:        yaml_TAG_TOKEN,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t\tvalue:      handle,\n\t\tsuffix:     suffix,\n\t}\n\treturn true\n}\n\n// Scan a tag handle.\nfunc yaml_parser_scan_tag_handle(parser *yaml_parser_t, directive bool, start_mark yaml_mark_t, handle *[]byte) bool {\n\t// Check the initial '!' character.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\tif parser.buffer[parser.buffer_pos] != '!' {\n\t\tyaml_parser_set_scanner_tag_error(parser, directive,\n\t\t\tstart_mark, \"did not find expected '!'\")\n\t\treturn false\n\t}\n\n\tvar s []byte\n\n\t// Copy the '!' character.\n\ts = read(parser, s)\n\n\t// Copy all subsequent alphabetical and numerical characters.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\tfor is_alpha(parser.buffer, parser.buffer_pos) {\n\t\ts = read(parser, s)\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Check if the trailing character is '!' and copy it.\n\tif parser.buffer[parser.buffer_pos] == '!' {\n\t\ts = read(parser, s)\n\t} else {\n\t\t// It's either the '!' tag or not really a tag handle.  If it's a %TAG\n\t\t// directive, it's an error.  If it's a tag token, it must be a part of URI.\n\t\tif directive && string(s) != \"!\" {\n\t\t\tyaml_parser_set_scanner_tag_error(parser, directive,\n\t\t\t\tstart_mark, \"did not find expected '!'\")\n\t\t\treturn false\n\t\t}\n\t}\n\n\t*handle = s\n\treturn true\n}\n\n// Scan a tag.\nfunc yaml_parser_scan_tag_uri(parser *yaml_parser_t, directive bool, head []byte, start_mark yaml_mark_t, uri *[]byte) bool {\n\t//size_t length = head ? strlen((char *)head) : 0\n\tvar s []byte\n\thasTag := len(head) > 0\n\n\t// Copy the head if needed.\n\t//\n\t// Note that we don't copy the leading '!' character.\n\tif len(head) > 1 {\n\t\ts = append(s, head[1:]...)\n\t}\n\n\t// Scan the tag.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\n\t// The set of characters that may appear in URI is as follows:\n\t//\n\t//      '0'-'9', 'A'-'Z', 'a'-'z', '_', '-', ';', '/', '?', ':', '@', '&',\n\t//      '=', '+', '$', ',', '.', '!', '~', '*', '\\'', '(', ')', '[', ']',\n\t//      '%'.\n\t// [Go] TODO Convert this into more reasonable logic.\n\tfor is_alpha(parser.buffer, parser.buffer_pos) || parser.buffer[parser.buffer_pos] == ';' ||\n\t\tparser.buffer[parser.buffer_pos] == '/' || parser.buffer[parser.buffer_pos] == '?' ||\n\t\tparser.buffer[parser.buffer_pos] == ':' || parser.buffer[parser.buffer_pos] == '@' ||\n\t\tparser.buffer[parser.buffer_pos] == '&' || parser.buffer[parser.buffer_pos] == '=' ||\n\t\tparser.buffer[parser.buffer_pos] == '+' || parser.buffer[parser.buffer_pos] == '$' ||\n\t\tparser.buffer[parser.buffer_pos] == ',' || parser.buffer[parser.buffer_pos] == '.' ||\n\t\tparser.buffer[parser.buffer_pos] == '!' || parser.buffer[parser.buffer_pos] == '~' ||\n\t\tparser.buffer[parser.buffer_pos] == '*' || parser.buffer[parser.buffer_pos] == '\\'' ||\n\t\tparser.buffer[parser.buffer_pos] == '(' || parser.buffer[parser.buffer_pos] == ')' ||\n\t\tparser.buffer[parser.buffer_pos] == '[' || parser.buffer[parser.buffer_pos] == ']' ||\n\t\tparser.buffer[parser.buffer_pos] == '%' {\n\t\t// Check if it is a URI-escape sequence.\n\t\tif parser.buffer[parser.buffer_pos] == '%' {\n\t\t\tif !yaml_parser_scan_uri_escapes(parser, directive, start_mark, &s) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t} else {\n\t\t\ts = read(parser, s)\n\t\t}\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t\thasTag = true\n\t}\n\n\tif !hasTag {\n\t\tyaml_parser_set_scanner_tag_error(parser, directive,\n\t\t\tstart_mark, \"did not find expected tag URI\")\n\t\treturn false\n\t}\n\t*uri = s\n\treturn true\n}\n\n// Decode an URI-escape sequence corresponding to a single UTF-8 character.\nfunc yaml_parser_scan_uri_escapes(parser *yaml_parser_t, directive bool, start_mark yaml_mark_t, s *[]byte) bool {\n\n\t// Decode the required number of characters.\n\tw := 1024\n\tfor w > 0 {\n\t\t// Check for a URI-escaped octet.\n\t\tif parser.unread < 3 && !yaml_parser_update_buffer(parser, 3) {\n\t\t\treturn false\n\t\t}\n\n\t\tif !(parser.buffer[parser.buffer_pos] == '%' &&\n\t\t\tis_hex(parser.buffer, parser.buffer_pos+1) &&\n\t\t\tis_hex(parser.buffer, parser.buffer_pos+2)) {\n\t\t\treturn yaml_parser_set_scanner_tag_error(parser, directive,\n\t\t\t\tstart_mark, \"did not find URI escaped octet\")\n\t\t}\n\n\t\t// Get the octet.\n\t\toctet := byte((as_hex(parser.buffer, parser.buffer_pos+1) << 4) + as_hex(parser.buffer, parser.buffer_pos+2))\n\n\t\t// If it is the leading octet, determine the length of the UTF-8 sequence.\n\t\tif w == 1024 {\n\t\t\tw = width(octet)\n\t\t\tif w == 0 {\n\t\t\t\treturn yaml_parser_set_scanner_tag_error(parser, directive,\n\t\t\t\t\tstart_mark, \"found an incorrect leading UTF-8 octet\")\n\t\t\t}\n\t\t} else {\n\t\t\t// Check if the trailing octet is correct.\n\t\t\tif octet&0xC0 != 0x80 {\n\t\t\t\treturn yaml_parser_set_scanner_tag_error(parser, directive,\n\t\t\t\t\tstart_mark, \"found an incorrect trailing UTF-8 octet\")\n\t\t\t}\n\t\t}\n\n\t\t// Copy the octet and move the pointers.\n\t\t*s = append(*s, octet)\n\t\tskip(parser)\n\t\tskip(parser)\n\t\tskip(parser)\n\t\tw--\n\t}\n\treturn true\n}\n\n// Scan a block scalar.\nfunc yaml_parser_scan_block_scalar(parser *yaml_parser_t, token *yaml_token_t, literal bool) bool {\n\t// Eat the indicator '|' or '>'.\n\tstart_mark := parser.mark\n\tskip(parser)\n\n\t// Scan the additional block scalar indicators.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\n\t// Check for a chomping indicator.\n\tvar chomping, increment int\n\tif parser.buffer[parser.buffer_pos] == '+' || parser.buffer[parser.buffer_pos] == '-' {\n\t\t// Set the chomping method and eat the indicator.\n\t\tif parser.buffer[parser.buffer_pos] == '+' {\n\t\t\tchomping = +1\n\t\t} else {\n\t\t\tchomping = -1\n\t\t}\n\t\tskip(parser)\n\n\t\t// Check for an indentation indicator.\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t\tif is_digit(parser.buffer, parser.buffer_pos) {\n\t\t\t// Check that the indentation is greater than 0.\n\t\t\tif parser.buffer[parser.buffer_pos] == '0' {\n\t\t\t\tyaml_parser_set_scanner_error(parser, \"while scanning a block scalar\",\n\t\t\t\t\tstart_mark, \"found an indentation indicator equal to 0\")\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\t// Get the indentation level and eat the indicator.\n\t\t\tincrement = as_digit(parser.buffer, parser.buffer_pos)\n\t\t\tskip(parser)\n\t\t}\n\n\t} else if is_digit(parser.buffer, parser.buffer_pos) {\n\t\t// Do the same as above, but in the opposite order.\n\n\t\tif parser.buffer[parser.buffer_pos] == '0' {\n\t\t\tyaml_parser_set_scanner_error(parser, \"while scanning a block scalar\",\n\t\t\t\tstart_mark, \"found an indentation indicator equal to 0\")\n\t\t\treturn false\n\t\t}\n\t\tincrement = as_digit(parser.buffer, parser.buffer_pos)\n\t\tskip(parser)\n\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t\tif parser.buffer[parser.buffer_pos] == '+' || parser.buffer[parser.buffer_pos] == '-' {\n\t\t\tif parser.buffer[parser.buffer_pos] == '+' {\n\t\t\t\tchomping = +1\n\t\t\t} else {\n\t\t\t\tchomping = -1\n\t\t\t}\n\t\t\tskip(parser)\n\t\t}\n\t}\n\n\t// Eat whitespaces and comments to the end of the line.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\tfor is_blank(parser.buffer, parser.buffer_pos) {\n\t\tskip(parser)\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t}\n\tif parser.buffer[parser.buffer_pos] == '#' {\n\t\tif !yaml_parser_scan_line_comment(parser, start_mark) {\n\t\t\treturn false\n\t\t}\n\t\tfor !is_breakz(parser.buffer, parser.buffer_pos) {\n\t\t\tskip(parser)\n\t\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check if we are at the end of the line.\n\tif !is_breakz(parser.buffer, parser.buffer_pos) {\n\t\tyaml_parser_set_scanner_error(parser, \"while scanning a block scalar\",\n\t\t\tstart_mark, \"did not find expected comment or line break\")\n\t\treturn false\n\t}\n\n\t// Eat a line break.\n\tif is_break(parser.buffer, parser.buffer_pos) {\n\t\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\t\treturn false\n\t\t}\n\t\tskip_line(parser)\n\t}\n\n\tend_mark := parser.mark\n\n\t// Set the indentation level if it was specified.\n\tvar indent int\n\tif increment > 0 {\n\t\tif parser.indent >= 0 {\n\t\t\tindent = parser.indent + increment\n\t\t} else {\n\t\t\tindent = increment\n\t\t}\n\t}\n\n\t// Scan the leading line breaks and determine the indentation level if needed.\n\tvar s, leading_break, trailing_breaks []byte\n\tif !yaml_parser_scan_block_scalar_breaks(parser, &indent, &trailing_breaks, start_mark, &end_mark) {\n\t\treturn false\n\t}\n\n\t// Scan the block scalar content.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\tvar leading_blank, trailing_blank bool\n\tfor parser.mark.column == indent && !is_z(parser.buffer, parser.buffer_pos) {\n\t\t// We are at the beginning of a non-empty line.\n\n\t\t// Is it a trailing whitespace?\n\t\ttrailing_blank = is_blank(parser.buffer, parser.buffer_pos)\n\n\t\t// Check if we need to fold the leading line break.\n\t\tif !literal && !leading_blank && !trailing_blank && len(leading_break) > 0 && leading_break[0] == '\\n' {\n\t\t\t// Do we need to join the lines by space?\n\t\t\tif len(trailing_breaks) == 0 {\n\t\t\t\ts = append(s, ' ')\n\t\t\t}\n\t\t} else {\n\t\t\ts = append(s, leading_break...)\n\t\t}\n\t\tleading_break = leading_break[:0]\n\n\t\t// Append the remaining line breaks.\n\t\ts = append(s, trailing_breaks...)\n\t\ttrailing_breaks = trailing_breaks[:0]\n\n\t\t// Is it a leading whitespace?\n\t\tleading_blank = is_blank(parser.buffer, parser.buffer_pos)\n\n\t\t// Consume the current line.\n\t\tfor !is_breakz(parser.buffer, parser.buffer_pos) {\n\t\t\ts = read(parser, s)\n\t\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\t// Consume the line break.\n\t\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\t\treturn false\n\t\t}\n\n\t\tleading_break = read_line(parser, leading_break)\n\n\t\t// Eat the following indentation spaces and line breaks.\n\t\tif !yaml_parser_scan_block_scalar_breaks(parser, &indent, &trailing_breaks, start_mark, &end_mark) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Chomp the tail.\n\tif chomping != -1 {\n\t\ts = append(s, leading_break...)\n\t}\n\tif chomping == 1 {\n\t\ts = append(s, trailing_breaks...)\n\t}\n\n\t// Create a token.\n\t*token = yaml_token_t{\n\t\ttyp:        yaml_SCALAR_TOKEN,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t\tvalue:      s,\n\t\tstyle:      yaml_LITERAL_SCALAR_STYLE,\n\t}\n\tif !literal {\n\t\ttoken.style = yaml_FOLDED_SCALAR_STYLE\n\t}\n\treturn true\n}\n\n// Scan indentation spaces and line breaks for a block scalar.  Determine the\n// indentation level if needed.\nfunc yaml_parser_scan_block_scalar_breaks(parser *yaml_parser_t, indent *int, breaks *[]byte, start_mark yaml_mark_t, end_mark *yaml_mark_t) bool {\n\t*end_mark = parser.mark\n\n\t// Eat the indentation spaces and line breaks.\n\tmax_indent := 0\n\tfor {\n\t\t// Eat the indentation spaces.\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t\tfor (*indent == 0 || parser.mark.column < *indent) && is_space(parser.buffer, parser.buffer_pos) {\n\t\t\tskip(parser)\n\t\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif parser.mark.column > max_indent {\n\t\t\tmax_indent = parser.mark.column\n\t\t}\n\n\t\t// Check for a tab character messing the indentation.\n\t\tif (*indent == 0 || parser.mark.column < *indent) && is_tab(parser.buffer, parser.buffer_pos) {\n\t\t\treturn yaml_parser_set_scanner_error(parser, \"while scanning a block scalar\",\n\t\t\t\tstart_mark, \"found a tab character where an indentation space is expected\")\n\t\t}\n\n\t\t// Have we found a non-empty line?\n\t\tif !is_break(parser.buffer, parser.buffer_pos) {\n\t\t\tbreak\n\t\t}\n\n\t\t// Consume the line break.\n\t\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\t\treturn false\n\t\t}\n\t\t// [Go] Should really be returning breaks instead.\n\t\t*breaks = read_line(parser, *breaks)\n\t\t*end_mark = parser.mark\n\t}\n\n\t// Determine the indentation level if needed.\n\tif *indent == 0 {\n\t\t*indent = max_indent\n\t\tif *indent < parser.indent+1 {\n\t\t\t*indent = parser.indent + 1\n\t\t}\n\t\tif *indent < 1 {\n\t\t\t*indent = 1\n\t\t}\n\t}\n\treturn true\n}\n\n// Scan a quoted scalar.\nfunc yaml_parser_scan_flow_scalar(parser *yaml_parser_t, token *yaml_token_t, single bool) bool {\n\t// Eat the left quote.\n\tstart_mark := parser.mark\n\tskip(parser)\n\n\t// Consume the content of the quoted scalar.\n\tvar s, leading_break, trailing_breaks, whitespaces []byte\n\tfor {\n\t\t// Check that there are no document indicators at the beginning of the line.\n\t\tif parser.unread < 4 && !yaml_parser_update_buffer(parser, 4) {\n\t\t\treturn false\n\t\t}\n\n\t\tif parser.mark.column == 0 &&\n\t\t\t((parser.buffer[parser.buffer_pos+0] == '-' &&\n\t\t\t\tparser.buffer[parser.buffer_pos+1] == '-' &&\n\t\t\t\tparser.buffer[parser.buffer_pos+2] == '-') ||\n\t\t\t\t(parser.buffer[parser.buffer_pos+0] == '.' &&\n\t\t\t\t\tparser.buffer[parser.buffer_pos+1] == '.' &&\n\t\t\t\t\tparser.buffer[parser.buffer_pos+2] == '.')) &&\n\t\t\tis_blankz(parser.buffer, parser.buffer_pos+3) {\n\t\t\tyaml_parser_set_scanner_error(parser, \"while scanning a quoted scalar\",\n\t\t\t\tstart_mark, \"found unexpected document indicator\")\n\t\t\treturn false\n\t\t}\n\n\t\t// Check for EOF.\n\t\tif is_z(parser.buffer, parser.buffer_pos) {\n\t\t\tyaml_parser_set_scanner_error(parser, \"while scanning a quoted scalar\",\n\t\t\t\tstart_mark, \"found unexpected end of stream\")\n\t\t\treturn false\n\t\t}\n\n\t\t// Consume non-blank characters.\n\t\tleading_blanks := false\n\t\tfor !is_blankz(parser.buffer, parser.buffer_pos) {\n\t\t\tif single && parser.buffer[parser.buffer_pos] == '\\'' && parser.buffer[parser.buffer_pos+1] == '\\'' {\n\t\t\t\t// Is is an escaped single quote.\n\t\t\t\ts = append(s, '\\'')\n\t\t\t\tskip(parser)\n\t\t\t\tskip(parser)\n\n\t\t\t} else if single && parser.buffer[parser.buffer_pos] == '\\'' {\n\t\t\t\t// It is a right single quote.\n\t\t\t\tbreak\n\t\t\t} else if !single && parser.buffer[parser.buffer_pos] == '\"' {\n\t\t\t\t// It is a right double quote.\n\t\t\t\tbreak\n\n\t\t\t} else if !single && parser.buffer[parser.buffer_pos] == '\\\\' && is_break(parser.buffer, parser.buffer_pos+1) {\n\t\t\t\t// It is an escaped line break.\n\t\t\t\tif parser.unread < 3 && !yaml_parser_update_buffer(parser, 3) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tskip(parser)\n\t\t\t\tskip_line(parser)\n\t\t\t\tleading_blanks = true\n\t\t\t\tbreak\n\n\t\t\t} else if !single && parser.buffer[parser.buffer_pos] == '\\\\' {\n\t\t\t\t// It is an escape sequence.\n\t\t\t\tcode_length := 0\n\n\t\t\t\t// Check the escape character.\n\t\t\t\tswitch parser.buffer[parser.buffer_pos+1] {\n\t\t\t\tcase '0':\n\t\t\t\t\ts = append(s, 0)\n\t\t\t\tcase 'a':\n\t\t\t\t\ts = append(s, '\\x07')\n\t\t\t\tcase 'b':\n\t\t\t\t\ts = append(s, '\\x08')\n\t\t\t\tcase 't', '\\t':\n\t\t\t\t\ts = append(s, '\\x09')\n\t\t\t\tcase 'n':\n\t\t\t\t\ts = append(s, '\\x0A')\n\t\t\t\tcase 'v':\n\t\t\t\t\ts = append(s, '\\x0B')\n\t\t\t\tcase 'f':\n\t\t\t\t\ts = append(s, '\\x0C')\n\t\t\t\tcase 'r':\n\t\t\t\t\ts = append(s, '\\x0D')\n\t\t\t\tcase 'e':\n\t\t\t\t\ts = append(s, '\\x1B')\n\t\t\t\tcase ' ':\n\t\t\t\t\ts = append(s, '\\x20')\n\t\t\t\tcase '\"':\n\t\t\t\t\ts = append(s, '\"')\n\t\t\t\tcase '\\'':\n\t\t\t\t\ts = append(s, '\\'')\n\t\t\t\tcase '\\\\':\n\t\t\t\t\ts = append(s, '\\\\')\n\t\t\t\tcase 'N': // NEL (#x85)\n\t\t\t\t\ts = append(s, '\\xC2')\n\t\t\t\t\ts = append(s, '\\x85')\n\t\t\t\tcase '_': // #xA0\n\t\t\t\t\ts = append(s, '\\xC2')\n\t\t\t\t\ts = append(s, '\\xA0')\n\t\t\t\tcase 'L': // LS (#x2028)\n\t\t\t\t\ts = append(s, '\\xE2')\n\t\t\t\t\ts = append(s, '\\x80')\n\t\t\t\t\ts = append(s, '\\xA8')\n\t\t\t\tcase 'P': // PS (#x2029)\n\t\t\t\t\ts = append(s, '\\xE2')\n\t\t\t\t\ts = append(s, '\\x80')\n\t\t\t\t\ts = append(s, '\\xA9')\n\t\t\t\tcase 'x':\n\t\t\t\t\tcode_length = 2\n\t\t\t\tcase 'u':\n\t\t\t\t\tcode_length = 4\n\t\t\t\tcase 'U':\n\t\t\t\t\tcode_length = 8\n\t\t\t\tdefault:\n\t\t\t\t\tyaml_parser_set_scanner_error(parser, \"while parsing a quoted scalar\",\n\t\t\t\t\t\tstart_mark, \"found unknown escape character\")\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\t\tskip(parser)\n\t\t\t\tskip(parser)\n\n\t\t\t\t// Consume an arbitrary escape code.\n\t\t\t\tif code_length > 0 {\n\t\t\t\t\tvar value int\n\n\t\t\t\t\t// Scan the character value.\n\t\t\t\t\tif parser.unread < code_length && !yaml_parser_update_buffer(parser, code_length) {\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t\tfor k := 0; k < code_length; k++ {\n\t\t\t\t\t\tif !is_hex(parser.buffer, parser.buffer_pos+k) {\n\t\t\t\t\t\t\tyaml_parser_set_scanner_error(parser, \"while parsing a quoted scalar\",\n\t\t\t\t\t\t\t\tstart_mark, \"did not find expected hexdecimal number\")\n\t\t\t\t\t\t\treturn false\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvalue = (value << 4) + as_hex(parser.buffer, parser.buffer_pos+k)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Check the value and write the character.\n\t\t\t\t\tif (value >= 0xD800 && value <= 0xDFFF) || value > 0x10FFFF {\n\t\t\t\t\t\tyaml_parser_set_scanner_error(parser, \"while parsing a quoted scalar\",\n\t\t\t\t\t\t\tstart_mark, \"found invalid Unicode character escape code\")\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t\tif value <= 0x7F {\n\t\t\t\t\t\ts = append(s, byte(value))\n\t\t\t\t\t} else if value <= 0x7FF {\n\t\t\t\t\t\ts = append(s, byte(0xC0+(value>>6)))\n\t\t\t\t\t\ts = append(s, byte(0x80+(value&0x3F)))\n\t\t\t\t\t} else if value <= 0xFFFF {\n\t\t\t\t\t\ts = append(s, byte(0xE0+(value>>12)))\n\t\t\t\t\t\ts = append(s, byte(0x80+((value>>6)&0x3F)))\n\t\t\t\t\t\ts = append(s, byte(0x80+(value&0x3F)))\n\t\t\t\t\t} else {\n\t\t\t\t\t\ts = append(s, byte(0xF0+(value>>18)))\n\t\t\t\t\t\ts = append(s, byte(0x80+((value>>12)&0x3F)))\n\t\t\t\t\t\ts = append(s, byte(0x80+((value>>6)&0x3F)))\n\t\t\t\t\t\ts = append(s, byte(0x80+(value&0x3F)))\n\t\t\t\t\t}\n\n\t\t\t\t\t// Advance the pointer.\n\t\t\t\t\tfor k := 0; k < code_length; k++ {\n\t\t\t\t\t\tskip(parser)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// It is a non-escaped non-blank character.\n\t\t\t\ts = read(parser, s)\n\t\t\t}\n\t\t\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\n\t\t// Check if we are at the end of the scalar.\n\t\tif single {\n\t\t\tif parser.buffer[parser.buffer_pos] == '\\'' {\n\t\t\t\tbreak\n\t\t\t}\n\t\t} else {\n\t\t\tif parser.buffer[parser.buffer_pos] == '\"' {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\t\t// Consume blank characters.\n\t\tfor is_blank(parser.buffer, parser.buffer_pos) || is_break(parser.buffer, parser.buffer_pos) {\n\t\t\tif is_blank(parser.buffer, parser.buffer_pos) {\n\t\t\t\t// Consume a space or a tab character.\n\t\t\t\tif !leading_blanks {\n\t\t\t\t\twhitespaces = read(parser, whitespaces)\n\t\t\t\t} else {\n\t\t\t\t\tskip(parser)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\t\t// Check if it is a first line break.\n\t\t\t\tif !leading_blanks {\n\t\t\t\t\twhitespaces = whitespaces[:0]\n\t\t\t\t\tleading_break = read_line(parser, leading_break)\n\t\t\t\t\tleading_blanks = true\n\t\t\t\t} else {\n\t\t\t\t\ttrailing_breaks = read_line(parser, trailing_breaks)\n\t\t\t\t}\n\t\t\t}\n\t\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\t// Join the whitespaces or fold line breaks.\n\t\tif leading_blanks {\n\t\t\t// Do we need to fold line breaks?\n\t\t\tif len(leading_break) > 0 && leading_break[0] == '\\n' {\n\t\t\t\tif len(trailing_breaks) == 0 {\n\t\t\t\t\ts = append(s, ' ')\n\t\t\t\t} else {\n\t\t\t\t\ts = append(s, trailing_breaks...)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\ts = append(s, leading_break...)\n\t\t\t\ts = append(s, trailing_breaks...)\n\t\t\t}\n\t\t\ttrailing_breaks = trailing_breaks[:0]\n\t\t\tleading_break = leading_break[:0]\n\t\t} else {\n\t\t\ts = append(s, whitespaces...)\n\t\t\twhitespaces = whitespaces[:0]\n\t\t}\n\t}\n\n\t// Eat the right quote.\n\tskip(parser)\n\tend_mark := parser.mark\n\n\t// Create a token.\n\t*token = yaml_token_t{\n\t\ttyp:        yaml_SCALAR_TOKEN,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t\tvalue:      s,\n\t\tstyle:      yaml_SINGLE_QUOTED_SCALAR_STYLE,\n\t}\n\tif !single {\n\t\ttoken.style = yaml_DOUBLE_QUOTED_SCALAR_STYLE\n\t}\n\treturn true\n}\n\n// Scan a plain scalar.\nfunc yaml_parser_scan_plain_scalar(parser *yaml_parser_t, token *yaml_token_t) bool {\n\n\tvar s, leading_break, trailing_breaks, whitespaces []byte\n\tvar leading_blanks bool\n\tvar indent = parser.indent + 1\n\n\tstart_mark := parser.mark\n\tend_mark := parser.mark\n\n\t// Consume the content of the plain scalar.\n\tfor {\n\t\t// Check for a document indicator.\n\t\tif parser.unread < 4 && !yaml_parser_update_buffer(parser, 4) {\n\t\t\treturn false\n\t\t}\n\t\tif parser.mark.column == 0 &&\n\t\t\t((parser.buffer[parser.buffer_pos+0] == '-' &&\n\t\t\t\tparser.buffer[parser.buffer_pos+1] == '-' &&\n\t\t\t\tparser.buffer[parser.buffer_pos+2] == '-') ||\n\t\t\t\t(parser.buffer[parser.buffer_pos+0] == '.' &&\n\t\t\t\t\tparser.buffer[parser.buffer_pos+1] == '.' &&\n\t\t\t\t\tparser.buffer[parser.buffer_pos+2] == '.')) &&\n\t\t\tis_blankz(parser.buffer, parser.buffer_pos+3) {\n\t\t\tbreak\n\t\t}\n\n\t\t// Check for a comment.\n\t\tif parser.buffer[parser.buffer_pos] == '#' {\n\t\t\tbreak\n\t\t}\n\n\t\t// Consume non-blank characters.\n\t\tfor !is_blankz(parser.buffer, parser.buffer_pos) {\n\n\t\t\t// Check for indicators that may end a plain scalar.\n\t\t\tif (parser.buffer[parser.buffer_pos] == ':' && is_blankz(parser.buffer, parser.buffer_pos+1)) ||\n\t\t\t\t(parser.flow_level > 0 &&\n\t\t\t\t\t(parser.buffer[parser.buffer_pos] == ',' ||\n\t\t\t\t\t\tparser.buffer[parser.buffer_pos] == '?' || parser.buffer[parser.buffer_pos] == '[' ||\n\t\t\t\t\t\tparser.buffer[parser.buffer_pos] == ']' || parser.buffer[parser.buffer_pos] == '{' ||\n\t\t\t\t\t\tparser.buffer[parser.buffer_pos] == '}')) {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\t// Check if we need to join whitespaces and breaks.\n\t\t\tif leading_blanks || len(whitespaces) > 0 {\n\t\t\t\tif leading_blanks {\n\t\t\t\t\t// Do we need to fold line breaks?\n\t\t\t\t\tif leading_break[0] == '\\n' {\n\t\t\t\t\t\tif len(trailing_breaks) == 0 {\n\t\t\t\t\t\t\ts = append(s, ' ')\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ts = append(s, trailing_breaks...)\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\ts = append(s, leading_break...)\n\t\t\t\t\t\ts = append(s, trailing_breaks...)\n\t\t\t\t\t}\n\t\t\t\t\ttrailing_breaks = trailing_breaks[:0]\n\t\t\t\t\tleading_break = leading_break[:0]\n\t\t\t\t\tleading_blanks = false\n\t\t\t\t} else {\n\t\t\t\t\ts = append(s, whitespaces...)\n\t\t\t\t\twhitespaces = whitespaces[:0]\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Copy the character.\n\t\t\ts = read(parser, s)\n\n\t\t\tend_mark = parser.mark\n\t\t\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\t// Is it the end?\n\t\tif !(is_blank(parser.buffer, parser.buffer_pos) || is_break(parser.buffer, parser.buffer_pos)) {\n\t\t\tbreak\n\t\t}\n\n\t\t// Consume blank characters.\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\n\t\tfor is_blank(parser.buffer, parser.buffer_pos) || is_break(parser.buffer, parser.buffer_pos) {\n\t\t\tif is_blank(parser.buffer, parser.buffer_pos) {\n\n\t\t\t\t// Check for tab characters that abuse indentation.\n\t\t\t\tif leading_blanks && parser.mark.column < indent && is_tab(parser.buffer, parser.buffer_pos) {\n\t\t\t\t\tyaml_parser_set_scanner_error(parser, \"while scanning a plain scalar\",\n\t\t\t\t\t\tstart_mark, \"found a tab character that violates indentation\")\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\t\t// Consume a space or a tab character.\n\t\t\t\tif !leading_blanks {\n\t\t\t\t\twhitespaces = read(parser, whitespaces)\n\t\t\t\t} else {\n\t\t\t\t\tskip(parser)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\t\t// Check if it is a first line break.\n\t\t\t\tif !leading_blanks {\n\t\t\t\t\twhitespaces = whitespaces[:0]\n\t\t\t\t\tleading_break = read_line(parser, leading_break)\n\t\t\t\t\tleading_blanks = true\n\t\t\t\t} else {\n\t\t\t\t\ttrailing_breaks = read_line(parser, trailing_breaks)\n\t\t\t\t}\n\t\t\t}\n\t\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\t// Check indentation level.\n\t\tif parser.flow_level == 0 && parser.mark.column < indent {\n\t\t\tbreak\n\t\t}\n\t}\n\n\t// Create a token.\n\t*token = yaml_token_t{\n\t\ttyp:        yaml_SCALAR_TOKEN,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t\tvalue:      s,\n\t\tstyle:      yaml_PLAIN_SCALAR_STYLE,\n\t}\n\n\t// Note that we change the 'simple_key_allowed' flag.\n\tif leading_blanks {\n\t\tparser.simple_key_allowed = true\n\t}\n\treturn true\n}\n\nfunc yaml_parser_scan_line_comment(parser *yaml_parser_t, token_mark yaml_mark_t) bool {\n\tif parser.newlines > 0 {\n\t\treturn true\n\t}\n\n\tvar start_mark yaml_mark_t\n\tvar text []byte\n\n\tfor peek := 0; peek < 512; peek++ {\n\t\tif parser.unread < peek+1 && !yaml_parser_update_buffer(parser, peek+1) {\n\t\t\tbreak\n\t\t}\n\t\tif is_blank(parser.buffer, parser.buffer_pos+peek) {\n\t\t\tcontinue\n\t\t}\n\t\tif parser.buffer[parser.buffer_pos+peek] == '#' {\n\t\t\tseen := parser.mark.index + peek\n\t\t\tfor {\n\t\t\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tif is_breakz(parser.buffer, parser.buffer_pos) {\n\t\t\t\t\tif parser.mark.index >= seen {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t\tskip_line(parser)\n\t\t\t\t} else if parser.mark.index >= seen {\n\t\t\t\t\tif len(text) == 0 {\n\t\t\t\t\t\tstart_mark = parser.mark\n\t\t\t\t\t}\n\t\t\t\t\ttext = read(parser, text)\n\t\t\t\t} else {\n\t\t\t\t\tskip(parser)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tbreak\n\t}\n\tif len(text) > 0 {\n\t\tparser.comments = append(parser.comments, yaml_comment_t{\n\t\t\ttoken_mark: token_mark,\n\t\t\tstart_mark: start_mark,\n\t\t\tline:       text,\n\t\t})\n\t}\n\treturn true\n}\n\nfunc yaml_parser_scan_comments(parser *yaml_parser_t, scan_mark yaml_mark_t) bool {\n\ttoken := parser.tokens[len(parser.tokens)-1]\n\n\tif token.typ == yaml_FLOW_ENTRY_TOKEN && len(parser.tokens) > 1 {\n\t\ttoken = parser.tokens[len(parser.tokens)-2]\n\t}\n\n\tvar token_mark = token.start_mark\n\tvar start_mark yaml_mark_t\n\tvar next_indent = parser.indent\n\tif next_indent < 0 {\n\t\tnext_indent = 0\n\t}\n\n\tvar recent_empty = false\n\tvar first_empty = parser.newlines <= 1\n\n\tvar line = parser.mark.line\n\tvar column = parser.mark.column\n\n\tvar text []byte\n\n\t// The foot line is the place where a comment must start to\n\t// still be considered as a foot of the prior content.\n\t// If there's some content in the currently parsed line, then\n\t// the foot is the line below it.\n\tvar foot_line = -1\n\tif scan_mark.line > 0 {\n\t\tfoot_line = parser.mark.line - parser.newlines + 1\n\t\tif parser.newlines == 0 && parser.mark.column > 1 {\n\t\t\tfoot_line++\n\t\t}\n\t}\n\n\tvar peek = 0\n\tfor ; peek < 512; peek++ {\n\t\tif parser.unread < peek+1 && !yaml_parser_update_buffer(parser, peek+1) {\n\t\t\tbreak\n\t\t}\n\t\tcolumn++\n\t\tif is_blank(parser.buffer, parser.buffer_pos+peek) {\n\t\t\tcontinue\n\t\t}\n\t\tc := parser.buffer[parser.buffer_pos+peek]\n\t\tvar close_flow = parser.flow_level > 0 && (c == ']' || c == '}')\n\t\tif close_flow || is_breakz(parser.buffer, parser.buffer_pos+peek) {\n\t\t\t// Got line break or terminator.\n\t\t\tif close_flow || !recent_empty {\n\t\t\t\tif close_flow || first_empty && (start_mark.line == foot_line && token.typ != yaml_VALUE_TOKEN || start_mark.column-1 < next_indent) {\n\t\t\t\t\t// This is the first empty line and there were no empty lines before,\n\t\t\t\t\t// so this initial part of the comment is a foot of the prior token\n\t\t\t\t\t// instead of being a head for the following one. Split it up.\n\t\t\t\t\t// Alternatively, this might also be the last comment inside a flow\n\t\t\t\t\t// scope, so it must be a footer.\n\t\t\t\t\tif len(text) > 0 {\n\t\t\t\t\t\tif start_mark.column-1 < next_indent {\n\t\t\t\t\t\t\t// If dedented it's unrelated to the prior token.\n\t\t\t\t\t\t\ttoken_mark = start_mark\n\t\t\t\t\t\t}\n\t\t\t\t\t\tparser.comments = append(parser.comments, yaml_comment_t{\n\t\t\t\t\t\t\tscan_mark:  scan_mark,\n\t\t\t\t\t\t\ttoken_mark: token_mark,\n\t\t\t\t\t\t\tstart_mark: start_mark,\n\t\t\t\t\t\t\tend_mark:   yaml_mark_t{parser.mark.index + peek, line, column},\n\t\t\t\t\t\t\tfoot:       text,\n\t\t\t\t\t\t})\n\t\t\t\t\t\tscan_mark = yaml_mark_t{parser.mark.index + peek, line, column}\n\t\t\t\t\t\ttoken_mark = scan_mark\n\t\t\t\t\t\ttext = nil\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif len(text) > 0 && parser.buffer[parser.buffer_pos+peek] != 0 {\n\t\t\t\t\t\ttext = append(text, '\\n')\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !is_break(parser.buffer, parser.buffer_pos+peek) {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tfirst_empty = false\n\t\t\trecent_empty = true\n\t\t\tcolumn = 0\n\t\t\tline++\n\t\t\tcontinue\n\t\t}\n\n\t\tif len(text) > 0 && (close_flow || column-1 < next_indent && column != start_mark.column) {\n\t\t\t// The comment at the different indentation is a foot of the\n\t\t\t// preceding data rather than a head of the upcoming one.\n\t\t\tparser.comments = append(parser.comments, yaml_comment_t{\n\t\t\t\tscan_mark:  scan_mark,\n\t\t\t\ttoken_mark: token_mark,\n\t\t\t\tstart_mark: start_mark,\n\t\t\t\tend_mark:   yaml_mark_t{parser.mark.index + peek, line, column},\n\t\t\t\tfoot:       text,\n\t\t\t})\n\t\t\tscan_mark = yaml_mark_t{parser.mark.index + peek, line, column}\n\t\t\ttoken_mark = scan_mark\n\t\t\ttext = nil\n\t\t}\n\n\t\tif parser.buffer[parser.buffer_pos+peek] != '#' {\n\t\t\tbreak\n\t\t}\n\n\t\tif len(text) == 0 {\n\t\t\tstart_mark = yaml_mark_t{parser.mark.index + peek, line, column}\n\t\t} else {\n\t\t\ttext = append(text, '\\n')\n\t\t}\n\n\t\trecent_empty = false\n\n\t\t// Consume until after the consumed comment line.\n\t\tseen := parser.mark.index + peek\n\t\tfor {\n\t\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif is_breakz(parser.buffer, parser.buffer_pos) {\n\t\t\t\tif parser.mark.index >= seen {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tskip_line(parser)\n\t\t\t} else if parser.mark.index >= seen {\n\t\t\t\ttext = read(parser, text)\n\t\t\t} else {\n\t\t\t\tskip(parser)\n\t\t\t}\n\t\t}\n\n\t\tpeek = 0\n\t\tcolumn = 0\n\t\tline = parser.mark.line\n\t\tnext_indent = parser.indent\n\t\tif next_indent < 0 {\n\t\t\tnext_indent = 0\n\t\t}\n\t}\n\n\tif len(text) > 0 {\n\t\tparser.comments = append(parser.comments, yaml_comment_t{\n\t\t\tscan_mark:  scan_mark,\n\t\t\ttoken_mark: start_mark,\n\t\t\tstart_mark: start_mark,\n\t\t\tend_mark:   yaml_mark_t{parser.mark.index + peek - 1, line, column},\n\t\t\thead:       text,\n\t\t})\n\t}\n\treturn true\n}\n"
  },
  {
    "path": "tests/vendor/go.yaml.in/yaml/v3/sorter.go",
    "content": "//\n// Copyright (c) 2011-2019 Canonical Ltd\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage yaml\n\nimport (\n\t\"reflect\"\n\t\"unicode\"\n)\n\ntype keyList []reflect.Value\n\nfunc (l keyList) Len() int      { return len(l) }\nfunc (l keyList) Swap(i, j int) { l[i], l[j] = l[j], l[i] }\nfunc (l keyList) Less(i, j int) bool {\n\ta := l[i]\n\tb := l[j]\n\tak := a.Kind()\n\tbk := b.Kind()\n\tfor (ak == reflect.Interface || ak == reflect.Ptr) && !a.IsNil() {\n\t\ta = a.Elem()\n\t\tak = a.Kind()\n\t}\n\tfor (bk == reflect.Interface || bk == reflect.Ptr) && !b.IsNil() {\n\t\tb = b.Elem()\n\t\tbk = b.Kind()\n\t}\n\taf, aok := keyFloat(a)\n\tbf, bok := keyFloat(b)\n\tif aok && bok {\n\t\tif af != bf {\n\t\t\treturn af < bf\n\t\t}\n\t\tif ak != bk {\n\t\t\treturn ak < bk\n\t\t}\n\t\treturn numLess(a, b)\n\t}\n\tif ak != reflect.String || bk != reflect.String {\n\t\treturn ak < bk\n\t}\n\tar, br := []rune(a.String()), []rune(b.String())\n\tdigits := false\n\tfor i := 0; i < len(ar) && i < len(br); i++ {\n\t\tif ar[i] == br[i] {\n\t\t\tdigits = unicode.IsDigit(ar[i])\n\t\t\tcontinue\n\t\t}\n\t\tal := unicode.IsLetter(ar[i])\n\t\tbl := unicode.IsLetter(br[i])\n\t\tif al && bl {\n\t\t\treturn ar[i] < br[i]\n\t\t}\n\t\tif al || bl {\n\t\t\tif digits {\n\t\t\t\treturn al\n\t\t\t} else {\n\t\t\t\treturn bl\n\t\t\t}\n\t\t}\n\t\tvar ai, bi int\n\t\tvar an, bn int64\n\t\tif ar[i] == '0' || br[i] == '0' {\n\t\t\tfor j := i - 1; j >= 0 && unicode.IsDigit(ar[j]); j-- {\n\t\t\t\tif ar[j] != '0' {\n\t\t\t\t\tan = 1\n\t\t\t\t\tbn = 1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfor ai = i; ai < len(ar) && unicode.IsDigit(ar[ai]); ai++ {\n\t\t\tan = an*10 + int64(ar[ai]-'0')\n\t\t}\n\t\tfor bi = i; bi < len(br) && unicode.IsDigit(br[bi]); bi++ {\n\t\t\tbn = bn*10 + int64(br[bi]-'0')\n\t\t}\n\t\tif an != bn {\n\t\t\treturn an < bn\n\t\t}\n\t\tif ai != bi {\n\t\t\treturn ai < bi\n\t\t}\n\t\treturn ar[i] < br[i]\n\t}\n\treturn len(ar) < len(br)\n}\n\n// keyFloat returns a float value for v if it is a number/bool\n// and whether it is a number/bool or not.\nfunc keyFloat(v reflect.Value) (f float64, ok bool) {\n\tswitch v.Kind() {\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\treturn float64(v.Int()), true\n\tcase reflect.Float32, reflect.Float64:\n\t\treturn v.Float(), true\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\treturn float64(v.Uint()), true\n\tcase reflect.Bool:\n\t\tif v.Bool() {\n\t\t\treturn 1, true\n\t\t}\n\t\treturn 0, true\n\t}\n\treturn 0, false\n}\n\n// numLess returns whether a < b.\n// a and b must necessarily have the same kind.\nfunc numLess(a, b reflect.Value) bool {\n\tswitch a.Kind() {\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\treturn a.Int() < b.Int()\n\tcase reflect.Float32, reflect.Float64:\n\t\treturn a.Float() < b.Float()\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\treturn a.Uint() < b.Uint()\n\tcase reflect.Bool:\n\t\treturn !a.Bool() && b.Bool()\n\t}\n\tpanic(\"not a number\")\n}\n"
  },
  {
    "path": "tests/vendor/go.yaml.in/yaml/v3/writerc.go",
    "content": "//\n// Copyright (c) 2011-2019 Canonical Ltd\n// Copyright (c) 2006-2010 Kirill Simonov\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.\n\npackage yaml\n\n// Set the writer error and return false.\nfunc yaml_emitter_set_writer_error(emitter *yaml_emitter_t, problem string) bool {\n\temitter.error = yaml_WRITER_ERROR\n\temitter.problem = problem\n\treturn false\n}\n\n// Flush the output buffer.\nfunc yaml_emitter_flush(emitter *yaml_emitter_t) bool {\n\tif emitter.write_handler == nil {\n\t\tpanic(\"write handler not set\")\n\t}\n\n\t// Check if the buffer is empty.\n\tif emitter.buffer_pos == 0 {\n\t\treturn true\n\t}\n\n\tif err := emitter.write_handler(emitter, emitter.buffer[:emitter.buffer_pos]); err != nil {\n\t\treturn yaml_emitter_set_writer_error(emitter, \"write error: \"+err.Error())\n\t}\n\temitter.buffer_pos = 0\n\treturn true\n}\n"
  },
  {
    "path": "tests/vendor/go.yaml.in/yaml/v3/yaml.go",
    "content": "//\n// Copyright (c) 2011-2019 Canonical Ltd\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package yaml implements YAML support for the Go language.\n//\n// Source code and other details for the project are available at GitHub:\n//\n//\thttps://github.com/yaml/go-yaml\npackage yaml\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"reflect\"\n\t\"strings\"\n\t\"sync\"\n\t\"unicode/utf8\"\n)\n\n// The Unmarshaler interface may be implemented by types to customize their\n// behavior when being unmarshaled from a YAML document.\ntype Unmarshaler interface {\n\tUnmarshalYAML(value *Node) error\n}\n\ntype obsoleteUnmarshaler interface {\n\tUnmarshalYAML(unmarshal func(interface{}) error) error\n}\n\n// The Marshaler interface may be implemented by types to customize their\n// behavior when being marshaled into a YAML document. The returned value\n// is marshaled in place of the original value implementing Marshaler.\n//\n// If an error is returned by MarshalYAML, the marshaling procedure stops\n// and returns with the provided error.\ntype Marshaler interface {\n\tMarshalYAML() (interface{}, error)\n}\n\n// Unmarshal decodes the first document found within the in byte slice\n// and assigns decoded values into the out value.\n//\n// Maps and pointers (to a struct, string, int, etc) are accepted as out\n// values. If an internal pointer within a struct is not initialized,\n// the yaml package will initialize it if necessary for unmarshalling\n// the provided data. The out parameter must not be nil.\n//\n// The type of the decoded values should be compatible with the respective\n// values in out. If one or more values cannot be decoded due to a type\n// mismatches, decoding continues partially until the end of the YAML\n// content, and a *yaml.TypeError is returned with details for all\n// missed values.\n//\n// Struct fields are only unmarshalled if they are exported (have an\n// upper case first letter), and are unmarshalled using the field name\n// lowercased as the default key. Custom keys may be defined via the\n// \"yaml\" name in the field tag: the content preceding the first comma\n// is used as the key, and the following comma-separated options are\n// used to tweak the marshalling process (see Marshal).\n// Conflicting names result in a runtime error.\n//\n// For example:\n//\n//\ttype T struct {\n//\t    F int `yaml:\"a,omitempty\"`\n//\t    B int\n//\t}\n//\tvar t T\n//\tyaml.Unmarshal([]byte(\"a: 1\\nb: 2\"), &t)\n//\n// See the documentation of Marshal for the format of tags and a list of\n// supported tag options.\nfunc Unmarshal(in []byte, out interface{}) (err error) {\n\treturn unmarshal(in, out, false)\n}\n\n// A Decoder reads and decodes YAML values from an input stream.\ntype Decoder struct {\n\tparser      *parser\n\tknownFields bool\n}\n\n// NewDecoder returns a new decoder that reads from r.\n//\n// The decoder introduces its own buffering and may read\n// data from r beyond the YAML values requested.\nfunc NewDecoder(r io.Reader) *Decoder {\n\treturn &Decoder{\n\t\tparser: newParserFromReader(r),\n\t}\n}\n\n// KnownFields ensures that the keys in decoded mappings to\n// exist as fields in the struct being decoded into.\nfunc (dec *Decoder) KnownFields(enable bool) {\n\tdec.knownFields = enable\n}\n\n// Decode reads the next YAML-encoded value from its input\n// and stores it in the value pointed to by v.\n//\n// See the documentation for Unmarshal for details about the\n// conversion of YAML into a Go value.\nfunc (dec *Decoder) Decode(v interface{}) (err error) {\n\td := newDecoder()\n\td.knownFields = dec.knownFields\n\tdefer handleErr(&err)\n\tnode := dec.parser.parse()\n\tif node == nil {\n\t\treturn io.EOF\n\t}\n\tout := reflect.ValueOf(v)\n\tif out.Kind() == reflect.Ptr && !out.IsNil() {\n\t\tout = out.Elem()\n\t}\n\td.unmarshal(node, out)\n\tif len(d.terrors) > 0 {\n\t\treturn &TypeError{d.terrors}\n\t}\n\treturn nil\n}\n\n// Decode decodes the node and stores its data into the value pointed to by v.\n//\n// See the documentation for Unmarshal for details about the\n// conversion of YAML into a Go value.\nfunc (n *Node) Decode(v interface{}) (err error) {\n\td := newDecoder()\n\tdefer handleErr(&err)\n\tout := reflect.ValueOf(v)\n\tif out.Kind() == reflect.Ptr && !out.IsNil() {\n\t\tout = out.Elem()\n\t}\n\td.unmarshal(n, out)\n\tif len(d.terrors) > 0 {\n\t\treturn &TypeError{d.terrors}\n\t}\n\treturn nil\n}\n\nfunc unmarshal(in []byte, out interface{}, strict bool) (err error) {\n\tdefer handleErr(&err)\n\td := newDecoder()\n\tp := newParser(in)\n\tdefer p.destroy()\n\tnode := p.parse()\n\tif node != nil {\n\t\tv := reflect.ValueOf(out)\n\t\tif v.Kind() == reflect.Ptr && !v.IsNil() {\n\t\t\tv = v.Elem()\n\t\t}\n\t\td.unmarshal(node, v)\n\t}\n\tif len(d.terrors) > 0 {\n\t\treturn &TypeError{d.terrors}\n\t}\n\treturn nil\n}\n\n// Marshal serializes the value provided into a YAML document. The structure\n// of the generated document will reflect the structure of the value itself.\n// Maps and pointers (to struct, string, int, etc) are accepted as the in value.\n//\n// Struct fields are only marshalled if they are exported (have an upper case\n// first letter), and are marshalled using the field name lowercased as the\n// default key. Custom keys may be defined via the \"yaml\" name in the field\n// tag: the content preceding the first comma is used as the key, and the\n// following comma-separated options are used to tweak the marshalling process.\n// Conflicting names result in a runtime error.\n//\n// The field tag format accepted is:\n//\n//\t`(...) yaml:\"[<key>][,<flag1>[,<flag2>]]\" (...)`\n//\n// The following flags are currently supported:\n//\n//\tomitempty    Only include the field if it's not set to the zero\n//\t             value for the type or to empty slices or maps.\n//\t             Zero valued structs will be omitted if all their public\n//\t             fields are zero, unless they implement an IsZero\n//\t             method (see the IsZeroer interface type), in which\n//\t             case the field will be excluded if IsZero returns true.\n//\n//\tflow         Marshal using a flow style (useful for structs,\n//\t             sequences and maps).\n//\n//\tinline       Inline the field, which must be a struct or a map,\n//\t             causing all of its fields or keys to be processed as if\n//\t             they were part of the outer struct. For maps, keys must\n//\t             not conflict with the yaml keys of other struct fields.\n//\n// In addition, if the key is \"-\", the field is ignored.\n//\n// For example:\n//\n//\ttype T struct {\n//\t    F int `yaml:\"a,omitempty\"`\n//\t    B int\n//\t}\n//\tyaml.Marshal(&T{B: 2}) // Returns \"b: 2\\n\"\n//\tyaml.Marshal(&T{F: 1}} // Returns \"a: 1\\nb: 0\\n\"\nfunc Marshal(in interface{}) (out []byte, err error) {\n\tdefer handleErr(&err)\n\te := newEncoder()\n\tdefer e.destroy()\n\te.marshalDoc(\"\", reflect.ValueOf(in))\n\te.finish()\n\tout = e.out\n\treturn\n}\n\n// An Encoder writes YAML values to an output stream.\ntype Encoder struct {\n\tencoder *encoder\n}\n\n// NewEncoder returns a new encoder that writes to w.\n// The Encoder should be closed after use to flush all data\n// to w.\nfunc NewEncoder(w io.Writer) *Encoder {\n\treturn &Encoder{\n\t\tencoder: newEncoderWithWriter(w),\n\t}\n}\n\n// Encode writes the YAML encoding of v to the stream.\n// If multiple items are encoded to the stream, the\n// second and subsequent document will be preceded\n// with a \"---\" document separator, but the first will not.\n//\n// See the documentation for Marshal for details about the conversion of Go\n// values to YAML.\nfunc (e *Encoder) Encode(v interface{}) (err error) {\n\tdefer handleErr(&err)\n\te.encoder.marshalDoc(\"\", reflect.ValueOf(v))\n\treturn nil\n}\n\n// Encode encodes value v and stores its representation in n.\n//\n// See the documentation for Marshal for details about the\n// conversion of Go values into YAML.\nfunc (n *Node) Encode(v interface{}) (err error) {\n\tdefer handleErr(&err)\n\te := newEncoder()\n\tdefer e.destroy()\n\te.marshalDoc(\"\", reflect.ValueOf(v))\n\te.finish()\n\tp := newParser(e.out)\n\tp.textless = true\n\tdefer p.destroy()\n\tdoc := p.parse()\n\t*n = *doc.Content[0]\n\treturn nil\n}\n\n// SetIndent changes the used indentation used when encoding.\nfunc (e *Encoder) SetIndent(spaces int) {\n\tif spaces < 0 {\n\t\tpanic(\"yaml: cannot indent to a negative number of spaces\")\n\t}\n\te.encoder.indent = spaces\n}\n\n// CompactSeqIndent makes it so that '- ' is considered part of the indentation.\nfunc (e *Encoder) CompactSeqIndent() {\n\te.encoder.emitter.compact_sequence_indent = true\n}\n\n// DefaultSeqIndent makes it so that '- ' is not considered part of the indentation.\nfunc (e *Encoder) DefaultSeqIndent() {\n\te.encoder.emitter.compact_sequence_indent = false\n}\n\n// Close closes the encoder by writing any remaining data.\n// It does not write a stream terminating string \"...\".\nfunc (e *Encoder) Close() (err error) {\n\tdefer handleErr(&err)\n\te.encoder.finish()\n\treturn nil\n}\n\nfunc handleErr(err *error) {\n\tif v := recover(); v != nil {\n\t\tif e, ok := v.(yamlError); ok {\n\t\t\t*err = e.err\n\t\t} else {\n\t\t\tpanic(v)\n\t\t}\n\t}\n}\n\ntype yamlError struct {\n\terr error\n}\n\nfunc fail(err error) {\n\tpanic(yamlError{err})\n}\n\nfunc failf(format string, args ...interface{}) {\n\tpanic(yamlError{fmt.Errorf(\"yaml: \"+format, args...)})\n}\n\n// A TypeError is returned by Unmarshal when one or more fields in\n// the YAML document cannot be properly decoded into the requested\n// types. When this error is returned, the value is still\n// unmarshaled partially.\ntype TypeError struct {\n\tErrors []string\n}\n\nfunc (e *TypeError) Error() string {\n\treturn fmt.Sprintf(\"yaml: unmarshal errors:\\n  %s\", strings.Join(e.Errors, \"\\n  \"))\n}\n\ntype Kind uint32\n\nconst (\n\tDocumentNode Kind = 1 << iota\n\tSequenceNode\n\tMappingNode\n\tScalarNode\n\tAliasNode\n)\n\ntype Style uint32\n\nconst (\n\tTaggedStyle Style = 1 << iota\n\tDoubleQuotedStyle\n\tSingleQuotedStyle\n\tLiteralStyle\n\tFoldedStyle\n\tFlowStyle\n)\n\n// Node represents an element in the YAML document hierarchy. While documents\n// are typically encoded and decoded into higher level types, such as structs\n// and maps, Node is an intermediate representation that allows detailed\n// control over the content being decoded or encoded.\n//\n// It's worth noting that although Node offers access into details such as\n// line numbers, colums, and comments, the content when re-encoded will not\n// have its original textual representation preserved. An effort is made to\n// render the data plesantly, and to preserve comments near the data they\n// describe, though.\n//\n// Values that make use of the Node type interact with the yaml package in the\n// same way any other type would do, by encoding and decoding yaml data\n// directly or indirectly into them.\n//\n// For example:\n//\n//\tvar person struct {\n//\t        Name    string\n//\t        Address yaml.Node\n//\t}\n//\terr := yaml.Unmarshal(data, &person)\n//\n// Or by itself:\n//\n//\tvar person Node\n//\terr := yaml.Unmarshal(data, &person)\ntype Node struct {\n\t// Kind defines whether the node is a document, a mapping, a sequence,\n\t// a scalar value, or an alias to another node. The specific data type of\n\t// scalar nodes may be obtained via the ShortTag and LongTag methods.\n\tKind Kind\n\n\t// Style allows customizing the apperance of the node in the tree.\n\tStyle Style\n\n\t// Tag holds the YAML tag defining the data type for the value.\n\t// When decoding, this field will always be set to the resolved tag,\n\t// even when it wasn't explicitly provided in the YAML content.\n\t// When encoding, if this field is unset the value type will be\n\t// implied from the node properties, and if it is set, it will only\n\t// be serialized into the representation if TaggedStyle is used or\n\t// the implicit tag diverges from the provided one.\n\tTag string\n\n\t// Value holds the unescaped and unquoted represenation of the value.\n\tValue string\n\n\t// Anchor holds the anchor name for this node, which allows aliases to point to it.\n\tAnchor string\n\n\t// Alias holds the node that this alias points to. Only valid when Kind is AliasNode.\n\tAlias *Node\n\n\t// Content holds contained nodes for documents, mappings, and sequences.\n\tContent []*Node\n\n\t// HeadComment holds any comments in the lines preceding the node and\n\t// not separated by an empty line.\n\tHeadComment string\n\n\t// LineComment holds any comments at the end of the line where the node is in.\n\tLineComment string\n\n\t// FootComment holds any comments following the node and before empty lines.\n\tFootComment string\n\n\t// Line and Column hold the node position in the decoded YAML text.\n\t// These fields are not respected when encoding the node.\n\tLine   int\n\tColumn int\n}\n\n// IsZero returns whether the node has all of its fields unset.\nfunc (n *Node) IsZero() bool {\n\treturn n.Kind == 0 && n.Style == 0 && n.Tag == \"\" && n.Value == \"\" && n.Anchor == \"\" && n.Alias == nil && n.Content == nil &&\n\t\tn.HeadComment == \"\" && n.LineComment == \"\" && n.FootComment == \"\" && n.Line == 0 && n.Column == 0\n}\n\n// LongTag returns the long form of the tag that indicates the data type for\n// the node. If the Tag field isn't explicitly defined, one will be computed\n// based on the node properties.\nfunc (n *Node) LongTag() string {\n\treturn longTag(n.ShortTag())\n}\n\n// ShortTag returns the short form of the YAML tag that indicates data type for\n// the node. If the Tag field isn't explicitly defined, one will be computed\n// based on the node properties.\nfunc (n *Node) ShortTag() string {\n\tif n.indicatedString() {\n\t\treturn strTag\n\t}\n\tif n.Tag == \"\" || n.Tag == \"!\" {\n\t\tswitch n.Kind {\n\t\tcase MappingNode:\n\t\t\treturn mapTag\n\t\tcase SequenceNode:\n\t\t\treturn seqTag\n\t\tcase AliasNode:\n\t\t\tif n.Alias != nil {\n\t\t\t\treturn n.Alias.ShortTag()\n\t\t\t}\n\t\tcase ScalarNode:\n\t\t\ttag, _ := resolve(\"\", n.Value)\n\t\t\treturn tag\n\t\tcase 0:\n\t\t\t// Special case to make the zero value convenient.\n\t\t\tif n.IsZero() {\n\t\t\t\treturn nullTag\n\t\t\t}\n\t\t}\n\t\treturn \"\"\n\t}\n\treturn shortTag(n.Tag)\n}\n\nfunc (n *Node) indicatedString() bool {\n\treturn n.Kind == ScalarNode &&\n\t\t(shortTag(n.Tag) == strTag ||\n\t\t\t(n.Tag == \"\" || n.Tag == \"!\") && n.Style&(SingleQuotedStyle|DoubleQuotedStyle|LiteralStyle|FoldedStyle) != 0)\n}\n\n// SetString is a convenience function that sets the node to a string value\n// and defines its style in a pleasant way depending on its content.\nfunc (n *Node) SetString(s string) {\n\tn.Kind = ScalarNode\n\tif utf8.ValidString(s) {\n\t\tn.Value = s\n\t\tn.Tag = strTag\n\t} else {\n\t\tn.Value = encodeBase64(s)\n\t\tn.Tag = binaryTag\n\t}\n\tif strings.Contains(n.Value, \"\\n\") {\n\t\tn.Style = LiteralStyle\n\t}\n}\n\n// --------------------------------------------------------------------------\n// Maintain a mapping of keys to structure field indexes\n\n// The code in this section was copied from mgo/bson.\n\n// structInfo holds details for the serialization of fields of\n// a given struct.\ntype structInfo struct {\n\tFieldsMap  map[string]fieldInfo\n\tFieldsList []fieldInfo\n\n\t// InlineMap is the number of the field in the struct that\n\t// contains an ,inline map, or -1 if there's none.\n\tInlineMap int\n\n\t// InlineUnmarshalers holds indexes to inlined fields that\n\t// contain unmarshaler values.\n\tInlineUnmarshalers [][]int\n}\n\ntype fieldInfo struct {\n\tKey       string\n\tNum       int\n\tOmitEmpty bool\n\tFlow      bool\n\t// Id holds the unique field identifier, so we can cheaply\n\t// check for field duplicates without maintaining an extra map.\n\tId int\n\n\t// Inline holds the field index if the field is part of an inlined struct.\n\tInline []int\n}\n\nvar structMap = make(map[reflect.Type]*structInfo)\nvar fieldMapMutex sync.RWMutex\nvar unmarshalerType reflect.Type\n\nfunc init() {\n\tvar v Unmarshaler\n\tunmarshalerType = reflect.ValueOf(&v).Elem().Type()\n}\n\nfunc getStructInfo(st reflect.Type) (*structInfo, error) {\n\tfieldMapMutex.RLock()\n\tsinfo, found := structMap[st]\n\tfieldMapMutex.RUnlock()\n\tif found {\n\t\treturn sinfo, nil\n\t}\n\n\tn := st.NumField()\n\tfieldsMap := make(map[string]fieldInfo)\n\tfieldsList := make([]fieldInfo, 0, n)\n\tinlineMap := -1\n\tinlineUnmarshalers := [][]int(nil)\n\tfor i := 0; i != n; i++ {\n\t\tfield := st.Field(i)\n\t\tif field.PkgPath != \"\" && !field.Anonymous {\n\t\t\tcontinue // Private field\n\t\t}\n\n\t\tinfo := fieldInfo{Num: i}\n\n\t\ttag := field.Tag.Get(\"yaml\")\n\t\tif tag == \"\" && strings.Index(string(field.Tag), \":\") < 0 {\n\t\t\ttag = string(field.Tag)\n\t\t}\n\t\tif tag == \"-\" {\n\t\t\tcontinue\n\t\t}\n\n\t\tinline := false\n\t\tfields := strings.Split(tag, \",\")\n\t\tif len(fields) > 1 {\n\t\t\tfor _, flag := range fields[1:] {\n\t\t\t\tswitch flag {\n\t\t\t\tcase \"omitempty\":\n\t\t\t\t\tinfo.OmitEmpty = true\n\t\t\t\tcase \"flow\":\n\t\t\t\t\tinfo.Flow = true\n\t\t\t\tcase \"inline\":\n\t\t\t\t\tinline = true\n\t\t\t\tdefault:\n\t\t\t\t\treturn nil, errors.New(fmt.Sprintf(\"unsupported flag %q in tag %q of type %s\", flag, tag, st))\n\t\t\t\t}\n\t\t\t}\n\t\t\ttag = fields[0]\n\t\t}\n\n\t\tif inline {\n\t\t\tswitch field.Type.Kind() {\n\t\t\tcase reflect.Map:\n\t\t\t\tif inlineMap >= 0 {\n\t\t\t\t\treturn nil, errors.New(\"multiple ,inline maps in struct \" + st.String())\n\t\t\t\t}\n\t\t\t\tif field.Type.Key() != reflect.TypeOf(\"\") {\n\t\t\t\t\treturn nil, errors.New(\"option ,inline needs a map with string keys in struct \" + st.String())\n\t\t\t\t}\n\t\t\t\tinlineMap = info.Num\n\t\t\tcase reflect.Struct, reflect.Ptr:\n\t\t\t\tftype := field.Type\n\t\t\t\tfor ftype.Kind() == reflect.Ptr {\n\t\t\t\t\tftype = ftype.Elem()\n\t\t\t\t}\n\t\t\t\tif ftype.Kind() != reflect.Struct {\n\t\t\t\t\treturn nil, errors.New(\"option ,inline may only be used on a struct or map field\")\n\t\t\t\t}\n\t\t\t\tif reflect.PtrTo(ftype).Implements(unmarshalerType) {\n\t\t\t\t\tinlineUnmarshalers = append(inlineUnmarshalers, []int{i})\n\t\t\t\t} else {\n\t\t\t\t\tsinfo, err := getStructInfo(ftype)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn nil, err\n\t\t\t\t\t}\n\t\t\t\t\tfor _, index := range sinfo.InlineUnmarshalers {\n\t\t\t\t\t\tinlineUnmarshalers = append(inlineUnmarshalers, append([]int{i}, index...))\n\t\t\t\t\t}\n\t\t\t\t\tfor _, finfo := range sinfo.FieldsList {\n\t\t\t\t\t\tif _, found := fieldsMap[finfo.Key]; found {\n\t\t\t\t\t\t\tmsg := \"duplicated key '\" + finfo.Key + \"' in struct \" + st.String()\n\t\t\t\t\t\t\treturn nil, errors.New(msg)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif finfo.Inline == nil {\n\t\t\t\t\t\t\tfinfo.Inline = []int{i, finfo.Num}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfinfo.Inline = append([]int{i}, finfo.Inline...)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfinfo.Id = len(fieldsList)\n\t\t\t\t\t\tfieldsMap[finfo.Key] = finfo\n\t\t\t\t\t\tfieldsList = append(fieldsList, finfo)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\treturn nil, errors.New(\"option ,inline may only be used on a struct or map field\")\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\tif tag != \"\" {\n\t\t\tinfo.Key = tag\n\t\t} else {\n\t\t\tinfo.Key = strings.ToLower(field.Name)\n\t\t}\n\n\t\tif _, found = fieldsMap[info.Key]; found {\n\t\t\tmsg := \"duplicated key '\" + info.Key + \"' in struct \" + st.String()\n\t\t\treturn nil, errors.New(msg)\n\t\t}\n\n\t\tinfo.Id = len(fieldsList)\n\t\tfieldsList = append(fieldsList, info)\n\t\tfieldsMap[info.Key] = info\n\t}\n\n\tsinfo = &structInfo{\n\t\tFieldsMap:          fieldsMap,\n\t\tFieldsList:         fieldsList,\n\t\tInlineMap:          inlineMap,\n\t\tInlineUnmarshalers: inlineUnmarshalers,\n\t}\n\n\tfieldMapMutex.Lock()\n\tstructMap[st] = sinfo\n\tfieldMapMutex.Unlock()\n\treturn sinfo, nil\n}\n\n// IsZeroer is used to check whether an object is zero to\n// determine whether it should be omitted when marshaling\n// with the omitempty flag. One notable implementation\n// is time.Time.\ntype IsZeroer interface {\n\tIsZero() bool\n}\n\nfunc isZero(v reflect.Value) bool {\n\tkind := v.Kind()\n\tif z, ok := v.Interface().(IsZeroer); ok {\n\t\tif (kind == reflect.Ptr || kind == reflect.Interface) && v.IsNil() {\n\t\t\treturn true\n\t\t}\n\t\treturn z.IsZero()\n\t}\n\tswitch kind {\n\tcase reflect.String:\n\t\treturn len(v.String()) == 0\n\tcase reflect.Interface, reflect.Ptr:\n\t\treturn v.IsNil()\n\tcase reflect.Slice:\n\t\treturn v.Len() == 0\n\tcase reflect.Map:\n\t\treturn v.Len() == 0\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\treturn v.Int() == 0\n\tcase reflect.Float32, reflect.Float64:\n\t\treturn v.Float() == 0\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\treturn v.Uint() == 0\n\tcase reflect.Bool:\n\t\treturn !v.Bool()\n\tcase reflect.Struct:\n\t\tvt := v.Type()\n\t\tfor i := v.NumField() - 1; i >= 0; i-- {\n\t\t\tif vt.Field(i).PkgPath != \"\" {\n\t\t\t\tcontinue // Private field\n\t\t\t}\n\t\t\tif !isZero(v.Field(i)) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\treturn true\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "tests/vendor/go.yaml.in/yaml/v3/yamlh.go",
    "content": "//\n// Copyright (c) 2011-2019 Canonical Ltd\n// Copyright (c) 2006-2010 Kirill Simonov\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.\n\npackage yaml\n\nimport (\n\t\"fmt\"\n\t\"io\"\n)\n\n// The version directive data.\ntype yaml_version_directive_t struct {\n\tmajor int8 // The major version number.\n\tminor int8 // The minor version number.\n}\n\n// The tag directive data.\ntype yaml_tag_directive_t struct {\n\thandle []byte // The tag handle.\n\tprefix []byte // The tag prefix.\n}\n\ntype yaml_encoding_t int\n\n// The stream encoding.\nconst (\n\t// Let the parser choose the encoding.\n\tyaml_ANY_ENCODING yaml_encoding_t = iota\n\n\tyaml_UTF8_ENCODING    // The default UTF-8 encoding.\n\tyaml_UTF16LE_ENCODING // The UTF-16-LE encoding with BOM.\n\tyaml_UTF16BE_ENCODING // The UTF-16-BE encoding with BOM.\n)\n\ntype yaml_break_t int\n\n// Line break types.\nconst (\n\t// Let the parser choose the break type.\n\tyaml_ANY_BREAK yaml_break_t = iota\n\n\tyaml_CR_BREAK   // Use CR for line breaks (Mac style).\n\tyaml_LN_BREAK   // Use LN for line breaks (Unix style).\n\tyaml_CRLN_BREAK // Use CR LN for line breaks (DOS style).\n)\n\ntype yaml_error_type_t int\n\n// Many bad things could happen with the parser and emitter.\nconst (\n\t// No error is produced.\n\tyaml_NO_ERROR yaml_error_type_t = iota\n\n\tyaml_MEMORY_ERROR   // Cannot allocate or reallocate a block of memory.\n\tyaml_READER_ERROR   // Cannot read or decode the input stream.\n\tyaml_SCANNER_ERROR  // Cannot scan the input stream.\n\tyaml_PARSER_ERROR   // Cannot parse the input stream.\n\tyaml_COMPOSER_ERROR // Cannot compose a YAML document.\n\tyaml_WRITER_ERROR   // Cannot write to the output stream.\n\tyaml_EMITTER_ERROR  // Cannot emit a YAML stream.\n)\n\n// The pointer position.\ntype yaml_mark_t struct {\n\tindex  int // The position index.\n\tline   int // The position line.\n\tcolumn int // The position column.\n}\n\n// Node Styles\n\ntype yaml_style_t int8\n\ntype yaml_scalar_style_t yaml_style_t\n\n// Scalar styles.\nconst (\n\t// Let the emitter choose the style.\n\tyaml_ANY_SCALAR_STYLE yaml_scalar_style_t = 0\n\n\tyaml_PLAIN_SCALAR_STYLE         yaml_scalar_style_t = 1 << iota // The plain scalar style.\n\tyaml_SINGLE_QUOTED_SCALAR_STYLE                                 // The single-quoted scalar style.\n\tyaml_DOUBLE_QUOTED_SCALAR_STYLE                                 // The double-quoted scalar style.\n\tyaml_LITERAL_SCALAR_STYLE                                       // The literal scalar style.\n\tyaml_FOLDED_SCALAR_STYLE                                        // The folded scalar style.\n)\n\ntype yaml_sequence_style_t yaml_style_t\n\n// Sequence styles.\nconst (\n\t// Let the emitter choose the style.\n\tyaml_ANY_SEQUENCE_STYLE yaml_sequence_style_t = iota\n\n\tyaml_BLOCK_SEQUENCE_STYLE // The block sequence style.\n\tyaml_FLOW_SEQUENCE_STYLE  // The flow sequence style.\n)\n\ntype yaml_mapping_style_t yaml_style_t\n\n// Mapping styles.\nconst (\n\t// Let the emitter choose the style.\n\tyaml_ANY_MAPPING_STYLE yaml_mapping_style_t = iota\n\n\tyaml_BLOCK_MAPPING_STYLE // The block mapping style.\n\tyaml_FLOW_MAPPING_STYLE  // The flow mapping style.\n)\n\n// Tokens\n\ntype yaml_token_type_t int\n\n// Token types.\nconst (\n\t// An empty token.\n\tyaml_NO_TOKEN yaml_token_type_t = iota\n\n\tyaml_STREAM_START_TOKEN // A STREAM-START token.\n\tyaml_STREAM_END_TOKEN   // A STREAM-END token.\n\n\tyaml_VERSION_DIRECTIVE_TOKEN // A VERSION-DIRECTIVE token.\n\tyaml_TAG_DIRECTIVE_TOKEN     // A TAG-DIRECTIVE token.\n\tyaml_DOCUMENT_START_TOKEN    // A DOCUMENT-START token.\n\tyaml_DOCUMENT_END_TOKEN      // A DOCUMENT-END token.\n\n\tyaml_BLOCK_SEQUENCE_START_TOKEN // A BLOCK-SEQUENCE-START token.\n\tyaml_BLOCK_MAPPING_START_TOKEN  // A BLOCK-SEQUENCE-END token.\n\tyaml_BLOCK_END_TOKEN            // A BLOCK-END token.\n\n\tyaml_FLOW_SEQUENCE_START_TOKEN // A FLOW-SEQUENCE-START token.\n\tyaml_FLOW_SEQUENCE_END_TOKEN   // A FLOW-SEQUENCE-END token.\n\tyaml_FLOW_MAPPING_START_TOKEN  // A FLOW-MAPPING-START token.\n\tyaml_FLOW_MAPPING_END_TOKEN    // A FLOW-MAPPING-END token.\n\n\tyaml_BLOCK_ENTRY_TOKEN // A BLOCK-ENTRY token.\n\tyaml_FLOW_ENTRY_TOKEN  // A FLOW-ENTRY token.\n\tyaml_KEY_TOKEN         // A KEY token.\n\tyaml_VALUE_TOKEN       // A VALUE token.\n\n\tyaml_ALIAS_TOKEN  // An ALIAS token.\n\tyaml_ANCHOR_TOKEN // An ANCHOR token.\n\tyaml_TAG_TOKEN    // A TAG token.\n\tyaml_SCALAR_TOKEN // A SCALAR token.\n)\n\nfunc (tt yaml_token_type_t) String() string {\n\tswitch tt {\n\tcase yaml_NO_TOKEN:\n\t\treturn \"yaml_NO_TOKEN\"\n\tcase yaml_STREAM_START_TOKEN:\n\t\treturn \"yaml_STREAM_START_TOKEN\"\n\tcase yaml_STREAM_END_TOKEN:\n\t\treturn \"yaml_STREAM_END_TOKEN\"\n\tcase yaml_VERSION_DIRECTIVE_TOKEN:\n\t\treturn \"yaml_VERSION_DIRECTIVE_TOKEN\"\n\tcase yaml_TAG_DIRECTIVE_TOKEN:\n\t\treturn \"yaml_TAG_DIRECTIVE_TOKEN\"\n\tcase yaml_DOCUMENT_START_TOKEN:\n\t\treturn \"yaml_DOCUMENT_START_TOKEN\"\n\tcase yaml_DOCUMENT_END_TOKEN:\n\t\treturn \"yaml_DOCUMENT_END_TOKEN\"\n\tcase yaml_BLOCK_SEQUENCE_START_TOKEN:\n\t\treturn \"yaml_BLOCK_SEQUENCE_START_TOKEN\"\n\tcase yaml_BLOCK_MAPPING_START_TOKEN:\n\t\treturn \"yaml_BLOCK_MAPPING_START_TOKEN\"\n\tcase yaml_BLOCK_END_TOKEN:\n\t\treturn \"yaml_BLOCK_END_TOKEN\"\n\tcase yaml_FLOW_SEQUENCE_START_TOKEN:\n\t\treturn \"yaml_FLOW_SEQUENCE_START_TOKEN\"\n\tcase yaml_FLOW_SEQUENCE_END_TOKEN:\n\t\treturn \"yaml_FLOW_SEQUENCE_END_TOKEN\"\n\tcase yaml_FLOW_MAPPING_START_TOKEN:\n\t\treturn \"yaml_FLOW_MAPPING_START_TOKEN\"\n\tcase yaml_FLOW_MAPPING_END_TOKEN:\n\t\treturn \"yaml_FLOW_MAPPING_END_TOKEN\"\n\tcase yaml_BLOCK_ENTRY_TOKEN:\n\t\treturn \"yaml_BLOCK_ENTRY_TOKEN\"\n\tcase yaml_FLOW_ENTRY_TOKEN:\n\t\treturn \"yaml_FLOW_ENTRY_TOKEN\"\n\tcase yaml_KEY_TOKEN:\n\t\treturn \"yaml_KEY_TOKEN\"\n\tcase yaml_VALUE_TOKEN:\n\t\treturn \"yaml_VALUE_TOKEN\"\n\tcase yaml_ALIAS_TOKEN:\n\t\treturn \"yaml_ALIAS_TOKEN\"\n\tcase yaml_ANCHOR_TOKEN:\n\t\treturn \"yaml_ANCHOR_TOKEN\"\n\tcase yaml_TAG_TOKEN:\n\t\treturn \"yaml_TAG_TOKEN\"\n\tcase yaml_SCALAR_TOKEN:\n\t\treturn \"yaml_SCALAR_TOKEN\"\n\t}\n\treturn \"<unknown token>\"\n}\n\n// The token structure.\ntype yaml_token_t struct {\n\t// The token type.\n\ttyp yaml_token_type_t\n\n\t// The start/end of the token.\n\tstart_mark, end_mark yaml_mark_t\n\n\t// The stream encoding (for yaml_STREAM_START_TOKEN).\n\tencoding yaml_encoding_t\n\n\t// The alias/anchor/scalar value or tag/tag directive handle\n\t// (for yaml_ALIAS_TOKEN, yaml_ANCHOR_TOKEN, yaml_SCALAR_TOKEN, yaml_TAG_TOKEN, yaml_TAG_DIRECTIVE_TOKEN).\n\tvalue []byte\n\n\t// The tag suffix (for yaml_TAG_TOKEN).\n\tsuffix []byte\n\n\t// The tag directive prefix (for yaml_TAG_DIRECTIVE_TOKEN).\n\tprefix []byte\n\n\t// The scalar style (for yaml_SCALAR_TOKEN).\n\tstyle yaml_scalar_style_t\n\n\t// The version directive major/minor (for yaml_VERSION_DIRECTIVE_TOKEN).\n\tmajor, minor int8\n}\n\n// Events\n\ntype yaml_event_type_t int8\n\n// Event types.\nconst (\n\t// An empty event.\n\tyaml_NO_EVENT yaml_event_type_t = iota\n\n\tyaml_STREAM_START_EVENT   // A STREAM-START event.\n\tyaml_STREAM_END_EVENT     // A STREAM-END event.\n\tyaml_DOCUMENT_START_EVENT // A DOCUMENT-START event.\n\tyaml_DOCUMENT_END_EVENT   // A DOCUMENT-END event.\n\tyaml_ALIAS_EVENT          // An ALIAS event.\n\tyaml_SCALAR_EVENT         // A SCALAR event.\n\tyaml_SEQUENCE_START_EVENT // A SEQUENCE-START event.\n\tyaml_SEQUENCE_END_EVENT   // A SEQUENCE-END event.\n\tyaml_MAPPING_START_EVENT  // A MAPPING-START event.\n\tyaml_MAPPING_END_EVENT    // A MAPPING-END event.\n\tyaml_TAIL_COMMENT_EVENT\n)\n\nvar eventStrings = []string{\n\tyaml_NO_EVENT:             \"none\",\n\tyaml_STREAM_START_EVENT:   \"stream start\",\n\tyaml_STREAM_END_EVENT:     \"stream end\",\n\tyaml_DOCUMENT_START_EVENT: \"document start\",\n\tyaml_DOCUMENT_END_EVENT:   \"document end\",\n\tyaml_ALIAS_EVENT:          \"alias\",\n\tyaml_SCALAR_EVENT:         \"scalar\",\n\tyaml_SEQUENCE_START_EVENT: \"sequence start\",\n\tyaml_SEQUENCE_END_EVENT:   \"sequence end\",\n\tyaml_MAPPING_START_EVENT:  \"mapping start\",\n\tyaml_MAPPING_END_EVENT:    \"mapping end\",\n\tyaml_TAIL_COMMENT_EVENT:   \"tail comment\",\n}\n\nfunc (e yaml_event_type_t) String() string {\n\tif e < 0 || int(e) >= len(eventStrings) {\n\t\treturn fmt.Sprintf(\"unknown event %d\", e)\n\t}\n\treturn eventStrings[e]\n}\n\n// The event structure.\ntype yaml_event_t struct {\n\n\t// The event type.\n\ttyp yaml_event_type_t\n\n\t// The start and end of the event.\n\tstart_mark, end_mark yaml_mark_t\n\n\t// The document encoding (for yaml_STREAM_START_EVENT).\n\tencoding yaml_encoding_t\n\n\t// The version directive (for yaml_DOCUMENT_START_EVENT).\n\tversion_directive *yaml_version_directive_t\n\n\t// The list of tag directives (for yaml_DOCUMENT_START_EVENT).\n\ttag_directives []yaml_tag_directive_t\n\n\t// The comments\n\thead_comment []byte\n\tline_comment []byte\n\tfoot_comment []byte\n\ttail_comment []byte\n\n\t// The anchor (for yaml_SCALAR_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT, yaml_ALIAS_EVENT).\n\tanchor []byte\n\n\t// The tag (for yaml_SCALAR_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT).\n\ttag []byte\n\n\t// The scalar value (for yaml_SCALAR_EVENT).\n\tvalue []byte\n\n\t// Is the document start/end indicator implicit, or the tag optional?\n\t// (for yaml_DOCUMENT_START_EVENT, yaml_DOCUMENT_END_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT, yaml_SCALAR_EVENT).\n\timplicit bool\n\n\t// Is the tag optional for any non-plain style? (for yaml_SCALAR_EVENT).\n\tquoted_implicit bool\n\n\t// The style (for yaml_SCALAR_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT).\n\tstyle yaml_style_t\n}\n\nfunc (e *yaml_event_t) scalar_style() yaml_scalar_style_t     { return yaml_scalar_style_t(e.style) }\nfunc (e *yaml_event_t) sequence_style() yaml_sequence_style_t { return yaml_sequence_style_t(e.style) }\nfunc (e *yaml_event_t) mapping_style() yaml_mapping_style_t   { return yaml_mapping_style_t(e.style) }\n\n// Nodes\n\nconst (\n\tyaml_NULL_TAG      = \"tag:yaml.org,2002:null\"      // The tag !!null with the only possible value: null.\n\tyaml_BOOL_TAG      = \"tag:yaml.org,2002:bool\"      // The tag !!bool with the values: true and false.\n\tyaml_STR_TAG       = \"tag:yaml.org,2002:str\"       // The tag !!str for string values.\n\tyaml_INT_TAG       = \"tag:yaml.org,2002:int\"       // The tag !!int for integer values.\n\tyaml_FLOAT_TAG     = \"tag:yaml.org,2002:float\"     // The tag !!float for float values.\n\tyaml_TIMESTAMP_TAG = \"tag:yaml.org,2002:timestamp\" // The tag !!timestamp for date and time values.\n\n\tyaml_SEQ_TAG = \"tag:yaml.org,2002:seq\" // The tag !!seq is used to denote sequences.\n\tyaml_MAP_TAG = \"tag:yaml.org,2002:map\" // The tag !!map is used to denote mapping.\n\n\t// Not in original libyaml.\n\tyaml_BINARY_TAG = \"tag:yaml.org,2002:binary\"\n\tyaml_MERGE_TAG  = \"tag:yaml.org,2002:merge\"\n\n\tyaml_DEFAULT_SCALAR_TAG   = yaml_STR_TAG // The default scalar tag is !!str.\n\tyaml_DEFAULT_SEQUENCE_TAG = yaml_SEQ_TAG // The default sequence tag is !!seq.\n\tyaml_DEFAULT_MAPPING_TAG  = yaml_MAP_TAG // The default mapping tag is !!map.\n)\n\ntype yaml_node_type_t int\n\n// Node types.\nconst (\n\t// An empty node.\n\tyaml_NO_NODE yaml_node_type_t = iota\n\n\tyaml_SCALAR_NODE   // A scalar node.\n\tyaml_SEQUENCE_NODE // A sequence node.\n\tyaml_MAPPING_NODE  // A mapping node.\n)\n\n// An element of a sequence node.\ntype yaml_node_item_t int\n\n// An element of a mapping node.\ntype yaml_node_pair_t struct {\n\tkey   int // The key of the element.\n\tvalue int // The value of the element.\n}\n\n// The node structure.\ntype yaml_node_t struct {\n\ttyp yaml_node_type_t // The node type.\n\ttag []byte           // The node tag.\n\n\t// The node data.\n\n\t// The scalar parameters (for yaml_SCALAR_NODE).\n\tscalar struct {\n\t\tvalue  []byte              // The scalar value.\n\t\tlength int                 // The length of the scalar value.\n\t\tstyle  yaml_scalar_style_t // The scalar style.\n\t}\n\n\t// The sequence parameters (for YAML_SEQUENCE_NODE).\n\tsequence struct {\n\t\titems_data []yaml_node_item_t    // The stack of sequence items.\n\t\tstyle      yaml_sequence_style_t // The sequence style.\n\t}\n\n\t// The mapping parameters (for yaml_MAPPING_NODE).\n\tmapping struct {\n\t\tpairs_data  []yaml_node_pair_t   // The stack of mapping pairs (key, value).\n\t\tpairs_start *yaml_node_pair_t    // The beginning of the stack.\n\t\tpairs_end   *yaml_node_pair_t    // The end of the stack.\n\t\tpairs_top   *yaml_node_pair_t    // The top of the stack.\n\t\tstyle       yaml_mapping_style_t // The mapping style.\n\t}\n\n\tstart_mark yaml_mark_t // The beginning of the node.\n\tend_mark   yaml_mark_t // The end of the node.\n\n}\n\n// The document structure.\ntype yaml_document_t struct {\n\n\t// The document nodes.\n\tnodes []yaml_node_t\n\n\t// The version directive.\n\tversion_directive *yaml_version_directive_t\n\n\t// The list of tag directives.\n\ttag_directives_data  []yaml_tag_directive_t\n\ttag_directives_start int // The beginning of the tag directives list.\n\ttag_directives_end   int // The end of the tag directives list.\n\n\tstart_implicit int // Is the document start indicator implicit?\n\tend_implicit   int // Is the document end indicator implicit?\n\n\t// The start/end of the document.\n\tstart_mark, end_mark yaml_mark_t\n}\n\n// The prototype of a read handler.\n//\n// The read handler is called when the parser needs to read more bytes from the\n// source. The handler should write not more than size bytes to the buffer.\n// The number of written bytes should be set to the size_read variable.\n//\n// [in,out]   data        A pointer to an application data specified by\n//\n//\tyaml_parser_set_input().\n//\n// [out]      buffer      The buffer to write the data from the source.\n// [in]       size        The size of the buffer.\n// [out]      size_read   The actual number of bytes read from the source.\n//\n// On success, the handler should return 1.  If the handler failed,\n// the returned value should be 0. On EOF, the handler should set the\n// size_read to 0 and return 1.\ntype yaml_read_handler_t func(parser *yaml_parser_t, buffer []byte) (n int, err error)\n\n// This structure holds information about a potential simple key.\ntype yaml_simple_key_t struct {\n\tpossible     bool        // Is a simple key possible?\n\trequired     bool        // Is a simple key required?\n\ttoken_number int         // The number of the token.\n\tmark         yaml_mark_t // The position mark.\n}\n\n// The states of the parser.\ntype yaml_parser_state_t int\n\nconst (\n\tyaml_PARSE_STREAM_START_STATE yaml_parser_state_t = iota\n\n\tyaml_PARSE_IMPLICIT_DOCUMENT_START_STATE           // Expect the beginning of an implicit document.\n\tyaml_PARSE_DOCUMENT_START_STATE                    // Expect DOCUMENT-START.\n\tyaml_PARSE_DOCUMENT_CONTENT_STATE                  // Expect the content of a document.\n\tyaml_PARSE_DOCUMENT_END_STATE                      // Expect DOCUMENT-END.\n\tyaml_PARSE_BLOCK_NODE_STATE                        // Expect a block node.\n\tyaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE // Expect a block node or indentless sequence.\n\tyaml_PARSE_FLOW_NODE_STATE                         // Expect a flow node.\n\tyaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE        // Expect the first entry of a block sequence.\n\tyaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE              // Expect an entry of a block sequence.\n\tyaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE         // Expect an entry of an indentless sequence.\n\tyaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE           // Expect the first key of a block mapping.\n\tyaml_PARSE_BLOCK_MAPPING_KEY_STATE                 // Expect a block mapping key.\n\tyaml_PARSE_BLOCK_MAPPING_VALUE_STATE               // Expect a block mapping value.\n\tyaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE         // Expect the first entry of a flow sequence.\n\tyaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE               // Expect an entry of a flow sequence.\n\tyaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE   // Expect a key of an ordered mapping.\n\tyaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE // Expect a value of an ordered mapping.\n\tyaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE   // Expect the and of an ordered mapping entry.\n\tyaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE            // Expect the first key of a flow mapping.\n\tyaml_PARSE_FLOW_MAPPING_KEY_STATE                  // Expect a key of a flow mapping.\n\tyaml_PARSE_FLOW_MAPPING_VALUE_STATE                // Expect a value of a flow mapping.\n\tyaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE          // Expect an empty value of a flow mapping.\n\tyaml_PARSE_END_STATE                               // Expect nothing.\n)\n\nfunc (ps yaml_parser_state_t) String() string {\n\tswitch ps {\n\tcase yaml_PARSE_STREAM_START_STATE:\n\t\treturn \"yaml_PARSE_STREAM_START_STATE\"\n\tcase yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE:\n\t\treturn \"yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE\"\n\tcase yaml_PARSE_DOCUMENT_START_STATE:\n\t\treturn \"yaml_PARSE_DOCUMENT_START_STATE\"\n\tcase yaml_PARSE_DOCUMENT_CONTENT_STATE:\n\t\treturn \"yaml_PARSE_DOCUMENT_CONTENT_STATE\"\n\tcase yaml_PARSE_DOCUMENT_END_STATE:\n\t\treturn \"yaml_PARSE_DOCUMENT_END_STATE\"\n\tcase yaml_PARSE_BLOCK_NODE_STATE:\n\t\treturn \"yaml_PARSE_BLOCK_NODE_STATE\"\n\tcase yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE:\n\t\treturn \"yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE\"\n\tcase yaml_PARSE_FLOW_NODE_STATE:\n\t\treturn \"yaml_PARSE_FLOW_NODE_STATE\"\n\tcase yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE:\n\t\treturn \"yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE\"\n\tcase yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE:\n\t\treturn \"yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE\"\n\tcase yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE:\n\t\treturn \"yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE\"\n\tcase yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE:\n\t\treturn \"yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE\"\n\tcase yaml_PARSE_BLOCK_MAPPING_KEY_STATE:\n\t\treturn \"yaml_PARSE_BLOCK_MAPPING_KEY_STATE\"\n\tcase yaml_PARSE_BLOCK_MAPPING_VALUE_STATE:\n\t\treturn \"yaml_PARSE_BLOCK_MAPPING_VALUE_STATE\"\n\tcase yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE:\n\t\treturn \"yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE\"\n\tcase yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE:\n\t\treturn \"yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE\"\n\tcase yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE:\n\t\treturn \"yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE\"\n\tcase yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE:\n\t\treturn \"yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE\"\n\tcase yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE:\n\t\treturn \"yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE\"\n\tcase yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE:\n\t\treturn \"yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE\"\n\tcase yaml_PARSE_FLOW_MAPPING_KEY_STATE:\n\t\treturn \"yaml_PARSE_FLOW_MAPPING_KEY_STATE\"\n\tcase yaml_PARSE_FLOW_MAPPING_VALUE_STATE:\n\t\treturn \"yaml_PARSE_FLOW_MAPPING_VALUE_STATE\"\n\tcase yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE:\n\t\treturn \"yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE\"\n\tcase yaml_PARSE_END_STATE:\n\t\treturn \"yaml_PARSE_END_STATE\"\n\t}\n\treturn \"<unknown parser state>\"\n}\n\n// This structure holds aliases data.\ntype yaml_alias_data_t struct {\n\tanchor []byte      // The anchor.\n\tindex  int         // The node id.\n\tmark   yaml_mark_t // The anchor mark.\n}\n\n// The parser structure.\n//\n// All members are internal. Manage the structure using the\n// yaml_parser_ family of functions.\ntype yaml_parser_t struct {\n\n\t// Error handling\n\n\terror yaml_error_type_t // Error type.\n\n\tproblem string // Error description.\n\n\t// The byte about which the problem occurred.\n\tproblem_offset int\n\tproblem_value  int\n\tproblem_mark   yaml_mark_t\n\n\t// The error context.\n\tcontext      string\n\tcontext_mark yaml_mark_t\n\n\t// Reader stuff\n\n\tread_handler yaml_read_handler_t // Read handler.\n\n\tinput_reader io.Reader // File input data.\n\tinput        []byte    // String input data.\n\tinput_pos    int\n\n\teof bool // EOF flag\n\n\tbuffer     []byte // The working buffer.\n\tbuffer_pos int    // The current position of the buffer.\n\n\tunread int // The number of unread characters in the buffer.\n\n\tnewlines int // The number of line breaks since last non-break/non-blank character\n\n\traw_buffer     []byte // The raw buffer.\n\traw_buffer_pos int    // The current position of the buffer.\n\n\tencoding yaml_encoding_t // The input encoding.\n\n\toffset int         // The offset of the current position (in bytes).\n\tmark   yaml_mark_t // The mark of the current position.\n\n\t// Comments\n\n\thead_comment []byte // The current head comments\n\tline_comment []byte // The current line comments\n\tfoot_comment []byte // The current foot comments\n\ttail_comment []byte // Foot comment that happens at the end of a block.\n\tstem_comment []byte // Comment in item preceding a nested structure (list inside list item, etc)\n\n\tcomments      []yaml_comment_t // The folded comments for all parsed tokens\n\tcomments_head int\n\n\t// Scanner stuff\n\n\tstream_start_produced bool // Have we started to scan the input stream?\n\tstream_end_produced   bool // Have we reached the end of the input stream?\n\n\tflow_level int // The number of unclosed '[' and '{' indicators.\n\n\ttokens          []yaml_token_t // The tokens queue.\n\ttokens_head     int            // The head of the tokens queue.\n\ttokens_parsed   int            // The number of tokens fetched from the queue.\n\ttoken_available bool           // Does the tokens queue contain a token ready for dequeueing.\n\n\tindent  int   // The current indentation level.\n\tindents []int // The indentation levels stack.\n\n\tsimple_key_allowed bool                // May a simple key occur at the current position?\n\tsimple_keys        []yaml_simple_key_t // The stack of simple keys.\n\tsimple_keys_by_tok map[int]int         // possible simple_key indexes indexed by token_number\n\n\t// Parser stuff\n\n\tstate          yaml_parser_state_t    // The current parser state.\n\tstates         []yaml_parser_state_t  // The parser states stack.\n\tmarks          []yaml_mark_t          // The stack of marks.\n\ttag_directives []yaml_tag_directive_t // The list of TAG directives.\n\n\t// Dumper stuff\n\n\taliases []yaml_alias_data_t // The alias data.\n\n\tdocument *yaml_document_t // The currently parsed document.\n}\n\ntype yaml_comment_t struct {\n\tscan_mark  yaml_mark_t // Position where scanning for comments started\n\ttoken_mark yaml_mark_t // Position after which tokens will be associated with this comment\n\tstart_mark yaml_mark_t // Position of '#' comment mark\n\tend_mark   yaml_mark_t // Position where comment terminated\n\n\thead []byte\n\tline []byte\n\tfoot []byte\n}\n\n// Emitter Definitions\n\n// The prototype of a write handler.\n//\n// The write handler is called when the emitter needs to flush the accumulated\n// characters to the output.  The handler should write @a size bytes of the\n// @a buffer to the output.\n//\n// @param[in,out]   data        A pointer to an application data specified by\n//\n//\tyaml_emitter_set_output().\n//\n// @param[in]       buffer      The buffer with bytes to be written.\n// @param[in]       size        The size of the buffer.\n//\n// @returns On success, the handler should return @c 1.  If the handler failed,\n// the returned value should be @c 0.\ntype yaml_write_handler_t func(emitter *yaml_emitter_t, buffer []byte) error\n\ntype yaml_emitter_state_t int\n\n// The emitter states.\nconst (\n\t// Expect STREAM-START.\n\tyaml_EMIT_STREAM_START_STATE yaml_emitter_state_t = iota\n\n\tyaml_EMIT_FIRST_DOCUMENT_START_STATE       // Expect the first DOCUMENT-START or STREAM-END.\n\tyaml_EMIT_DOCUMENT_START_STATE             // Expect DOCUMENT-START or STREAM-END.\n\tyaml_EMIT_DOCUMENT_CONTENT_STATE           // Expect the content of a document.\n\tyaml_EMIT_DOCUMENT_END_STATE               // Expect DOCUMENT-END.\n\tyaml_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE   // Expect the first item of a flow sequence.\n\tyaml_EMIT_FLOW_SEQUENCE_TRAIL_ITEM_STATE   // Expect the next item of a flow sequence, with the comma already written out\n\tyaml_EMIT_FLOW_SEQUENCE_ITEM_STATE         // Expect an item of a flow sequence.\n\tyaml_EMIT_FLOW_MAPPING_FIRST_KEY_STATE     // Expect the first key of a flow mapping.\n\tyaml_EMIT_FLOW_MAPPING_TRAIL_KEY_STATE     // Expect the next key of a flow mapping, with the comma already written out\n\tyaml_EMIT_FLOW_MAPPING_KEY_STATE           // Expect a key of a flow mapping.\n\tyaml_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE  // Expect a value for a simple key of a flow mapping.\n\tyaml_EMIT_FLOW_MAPPING_VALUE_STATE         // Expect a value of a flow mapping.\n\tyaml_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE  // Expect the first item of a block sequence.\n\tyaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE        // Expect an item of a block sequence.\n\tyaml_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE    // Expect the first key of a block mapping.\n\tyaml_EMIT_BLOCK_MAPPING_KEY_STATE          // Expect the key of a block mapping.\n\tyaml_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE // Expect a value for a simple key of a block mapping.\n\tyaml_EMIT_BLOCK_MAPPING_VALUE_STATE        // Expect a value of a block mapping.\n\tyaml_EMIT_END_STATE                        // Expect nothing.\n)\n\n// The emitter structure.\n//\n// All members are internal.  Manage the structure using the @c yaml_emitter_\n// family of functions.\ntype yaml_emitter_t struct {\n\n\t// Error handling\n\n\terror   yaml_error_type_t // Error type.\n\tproblem string            // Error description.\n\n\t// Writer stuff\n\n\twrite_handler yaml_write_handler_t // Write handler.\n\n\toutput_buffer *[]byte   // String output data.\n\toutput_writer io.Writer // File output data.\n\n\tbuffer     []byte // The working buffer.\n\tbuffer_pos int    // The current position of the buffer.\n\n\traw_buffer     []byte // The raw buffer.\n\traw_buffer_pos int    // The current position of the buffer.\n\n\tencoding yaml_encoding_t // The stream encoding.\n\n\t// Emitter stuff\n\n\tcanonical   bool         // If the output is in the canonical style?\n\tbest_indent int          // The number of indentation spaces.\n\tbest_width  int          // The preferred width of the output lines.\n\tunicode     bool         // Allow unescaped non-ASCII characters?\n\tline_break  yaml_break_t // The preferred line break.\n\n\tstate  yaml_emitter_state_t   // The current emitter state.\n\tstates []yaml_emitter_state_t // The stack of states.\n\n\tevents      []yaml_event_t // The event queue.\n\tevents_head int            // The head of the event queue.\n\n\tindents []int // The stack of indentation levels.\n\n\ttag_directives []yaml_tag_directive_t // The list of tag directives.\n\n\tindent int // The current indentation level.\n\n\tcompact_sequence_indent bool // Is '- ' is considered part of the indentation for sequence elements?\n\n\tflow_level int // The current flow level.\n\n\troot_context       bool // Is it the document root context?\n\tsequence_context   bool // Is it a sequence context?\n\tmapping_context    bool // Is it a mapping context?\n\tsimple_key_context bool // Is it a simple mapping key context?\n\n\tline       int  // The current line.\n\tcolumn     int  // The current column.\n\twhitespace bool // If the last character was a whitespace?\n\tindention  bool // If the last character was an indentation character (' ', '-', '?', ':')?\n\topen_ended bool // If an explicit document end is required?\n\n\tspace_above bool // Is there's an empty line above?\n\tfoot_indent int  // The indent used to write the foot comment above, or -1 if none.\n\n\t// Anchor analysis.\n\tanchor_data struct {\n\t\tanchor []byte // The anchor value.\n\t\talias  bool   // Is it an alias?\n\t}\n\n\t// Tag analysis.\n\ttag_data struct {\n\t\thandle []byte // The tag handle.\n\t\tsuffix []byte // The tag suffix.\n\t}\n\n\t// Scalar analysis.\n\tscalar_data struct {\n\t\tvalue                 []byte              // The scalar value.\n\t\tmultiline             bool                // Does the scalar contain line breaks?\n\t\tflow_plain_allowed    bool                // Can the scalar be expessed in the flow plain style?\n\t\tblock_plain_allowed   bool                // Can the scalar be expressed in the block plain style?\n\t\tsingle_quoted_allowed bool                // Can the scalar be expressed in the single quoted style?\n\t\tblock_allowed         bool                // Can the scalar be expressed in the literal or folded styles?\n\t\tstyle                 yaml_scalar_style_t // The output style.\n\t}\n\n\t// Comments\n\thead_comment []byte\n\tline_comment []byte\n\tfoot_comment []byte\n\ttail_comment []byte\n\n\tkey_line_comment []byte\n\n\t// Dumper stuff\n\n\topened bool // If the stream was already opened?\n\tclosed bool // If the stream was already closed?\n\n\t// The information associated with the document nodes.\n\tanchors *struct {\n\t\treferences int  // The number of references.\n\t\tanchor     int  // The anchor id.\n\t\tserialized bool // If the node has been emitted?\n\t}\n\n\tlast_anchor_id int // The last assigned anchor id.\n\n\tdocument *yaml_document_t // The currently emitted document.\n}\n"
  },
  {
    "path": "tests/vendor/go.yaml.in/yaml/v3/yamlprivateh.go",
    "content": "//\n// Copyright (c) 2011-2019 Canonical Ltd\n// Copyright (c) 2006-2010 Kirill Simonov\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.\n\npackage yaml\n\nconst (\n\t// The size of the input raw buffer.\n\tinput_raw_buffer_size = 512\n\n\t// The size of the input buffer.\n\t// It should be possible to decode the whole raw buffer.\n\tinput_buffer_size = input_raw_buffer_size * 3\n\n\t// The size of the output buffer.\n\toutput_buffer_size = 128\n\n\t// The size of the output raw buffer.\n\t// It should be possible to encode the whole output buffer.\n\toutput_raw_buffer_size = (output_buffer_size*2 + 2)\n\n\t// The size of other stacks and queues.\n\tinitial_stack_size  = 16\n\tinitial_queue_size  = 16\n\tinitial_string_size = 16\n)\n\n// Check if the character at the specified position is an alphabetical\n// character, a digit, '_', or '-'.\nfunc is_alpha(b []byte, i int) bool {\n\treturn b[i] >= '0' && b[i] <= '9' || b[i] >= 'A' && b[i] <= 'Z' || b[i] >= 'a' && b[i] <= 'z' || b[i] == '_' || b[i] == '-'\n}\n\n// Check if the character at the specified position is a digit.\nfunc is_digit(b []byte, i int) bool {\n\treturn b[i] >= '0' && b[i] <= '9'\n}\n\n// Get the value of a digit.\nfunc as_digit(b []byte, i int) int {\n\treturn int(b[i]) - '0'\n}\n\n// Check if the character at the specified position is a hex-digit.\nfunc is_hex(b []byte, i int) bool {\n\treturn b[i] >= '0' && b[i] <= '9' || b[i] >= 'A' && b[i] <= 'F' || b[i] >= 'a' && b[i] <= 'f'\n}\n\n// Get the value of a hex-digit.\nfunc as_hex(b []byte, i int) int {\n\tbi := b[i]\n\tif bi >= 'A' && bi <= 'F' {\n\t\treturn int(bi) - 'A' + 10\n\t}\n\tif bi >= 'a' && bi <= 'f' {\n\t\treturn int(bi) - 'a' + 10\n\t}\n\treturn int(bi) - '0'\n}\n\n// Check if the character is ASCII.\nfunc is_ascii(b []byte, i int) bool {\n\treturn b[i] <= 0x7F\n}\n\n// Check if the character at the start of the buffer can be printed unescaped.\nfunc is_printable(b []byte, i int) bool {\n\treturn ((b[i] == 0x0A) || // . == #x0A\n\t\t(b[i] >= 0x20 && b[i] <= 0x7E) || // #x20 <= . <= #x7E\n\t\t(b[i] == 0xC2 && b[i+1] >= 0xA0) || // #0xA0 <= . <= #xD7FF\n\t\t(b[i] > 0xC2 && b[i] < 0xED) ||\n\t\t(b[i] == 0xED && b[i+1] < 0xA0) ||\n\t\t(b[i] == 0xEE) ||\n\t\t(b[i] == 0xEF && // #xE000 <= . <= #xFFFD\n\t\t\t!(b[i+1] == 0xBB && b[i+2] == 0xBF) && // && . != #xFEFF\n\t\t\t!(b[i+1] == 0xBF && (b[i+2] == 0xBE || b[i+2] == 0xBF))))\n}\n\n// Check if the character at the specified position is NUL.\nfunc is_z(b []byte, i int) bool {\n\treturn b[i] == 0x00\n}\n\n// Check if the beginning of the buffer is a BOM.\nfunc is_bom(b []byte, i int) bool {\n\treturn b[0] == 0xEF && b[1] == 0xBB && b[2] == 0xBF\n}\n\n// Check if the character at the specified position is space.\nfunc is_space(b []byte, i int) bool {\n\treturn b[i] == ' '\n}\n\n// Check if the character at the specified position is tab.\nfunc is_tab(b []byte, i int) bool {\n\treturn b[i] == '\\t'\n}\n\n// Check if the character at the specified position is blank (space or tab).\nfunc is_blank(b []byte, i int) bool {\n\t//return is_space(b, i) || is_tab(b, i)\n\treturn b[i] == ' ' || b[i] == '\\t'\n}\n\n// Check if the character at the specified position is a line break.\nfunc is_break(b []byte, i int) bool {\n\treturn (b[i] == '\\r' || // CR (#xD)\n\t\tb[i] == '\\n' || // LF (#xA)\n\t\tb[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85)\n\t\tb[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028)\n\t\tb[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9) // PS (#x2029)\n}\n\nfunc is_crlf(b []byte, i int) bool {\n\treturn b[i] == '\\r' && b[i+1] == '\\n'\n}\n\n// Check if the character is a line break or NUL.\nfunc is_breakz(b []byte, i int) bool {\n\t//return is_break(b, i) || is_z(b, i)\n\treturn (\n\t// is_break:\n\tb[i] == '\\r' || // CR (#xD)\n\t\tb[i] == '\\n' || // LF (#xA)\n\t\tb[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85)\n\t\tb[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028)\n\t\tb[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9 || // PS (#x2029)\n\t\t// is_z:\n\t\tb[i] == 0)\n}\n\n// Check if the character is a line break, space, or NUL.\nfunc is_spacez(b []byte, i int) bool {\n\t//return is_space(b, i) || is_breakz(b, i)\n\treturn (\n\t// is_space:\n\tb[i] == ' ' ||\n\t\t// is_breakz:\n\t\tb[i] == '\\r' || // CR (#xD)\n\t\tb[i] == '\\n' || // LF (#xA)\n\t\tb[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85)\n\t\tb[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028)\n\t\tb[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9 || // PS (#x2029)\n\t\tb[i] == 0)\n}\n\n// Check if the character is a line break, space, tab, or NUL.\nfunc is_blankz(b []byte, i int) bool {\n\t//return is_blank(b, i) || is_breakz(b, i)\n\treturn (\n\t// is_blank:\n\tb[i] == ' ' || b[i] == '\\t' ||\n\t\t// is_breakz:\n\t\tb[i] == '\\r' || // CR (#xD)\n\t\tb[i] == '\\n' || // LF (#xA)\n\t\tb[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85)\n\t\tb[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028)\n\t\tb[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9 || // PS (#x2029)\n\t\tb[i] == 0)\n}\n\n// Determine the width of the character.\nfunc width(b byte) int {\n\t// Don't replace these by a switch without first\n\t// confirming that it is being inlined.\n\tif b&0x80 == 0x00 {\n\t\treturn 1\n\t}\n\tif b&0xE0 == 0xC0 {\n\t\treturn 2\n\t}\n\tif b&0xF0 == 0xE0 {\n\t\treturn 3\n\t}\n\tif b&0xF8 == 0xF0 {\n\t\treturn 4\n\t}\n\treturn 0\n\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/crypto/LICENSE",
    "content": "Copyright 2009 The Go Authors.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n   * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n   * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n   * Neither the name of Google LLC nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
  },
  {
    "path": "tests/vendor/golang.org/x/crypto/PATENTS",
    "content": "Additional IP Rights Grant (Patents)\n\n\"This implementation\" means the copyrightable works distributed by\nGoogle as part of the Go project.\n\nGoogle hereby grants to You a perpetual, worldwide, non-exclusive,\nno-charge, royalty-free, irrevocable (except as stated in this section)\npatent license to make, have made, use, offer to sell, sell, import,\ntransfer and otherwise run, modify and propagate the contents of this\nimplementation of Go, where such license applies only to those patent\nclaims, both currently owned or controlled by Google and acquired in\nthe future, licensable by Google that are necessarily infringed by this\nimplementation of Go.  This grant does not include claims that would be\ninfringed only as a consequence of further modification of this\nimplementation.  If you or your agent or exclusive licensee institute or\norder or agree to the institution of patent litigation against any\nentity (including a cross-claim or counterclaim in a lawsuit) alleging\nthat this implementation of Go or any code incorporated within this\nimplementation of Go constitutes direct or contributory patent\ninfringement, or inducement of patent infringement, then any patent\nrights granted to you under this License for this implementation of Go\nshall terminate as of the date such litigation is filed.\n"
  },
  {
    "path": "tests/vendor/golang.org/x/crypto/blowfish/block.go",
    "content": "// Copyright 2010 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage blowfish\n\n// getNextWord returns the next big-endian uint32 value from the byte slice\n// at the given position in a circular manner, updating the position.\nfunc getNextWord(b []byte, pos *int) uint32 {\n\tvar w uint32\n\tj := *pos\n\tfor i := 0; i < 4; i++ {\n\t\tw = w<<8 | uint32(b[j])\n\t\tj++\n\t\tif j >= len(b) {\n\t\t\tj = 0\n\t\t}\n\t}\n\t*pos = j\n\treturn w\n}\n\n// ExpandKey performs a key expansion on the given *Cipher. Specifically, it\n// performs the Blowfish algorithm's key schedule which sets up the *Cipher's\n// pi and substitution tables for calls to Encrypt. This is used, primarily,\n// by the bcrypt package to reuse the Blowfish key schedule during its\n// set up. It's unlikely that you need to use this directly.\nfunc ExpandKey(key []byte, c *Cipher) {\n\tj := 0\n\tfor i := 0; i < 18; i++ {\n\t\t// Using inlined getNextWord for performance.\n\t\tvar d uint32\n\t\tfor k := 0; k < 4; k++ {\n\t\t\td = d<<8 | uint32(key[j])\n\t\t\tj++\n\t\t\tif j >= len(key) {\n\t\t\t\tj = 0\n\t\t\t}\n\t\t}\n\t\tc.p[i] ^= d\n\t}\n\n\tvar l, r uint32\n\tfor i := 0; i < 18; i += 2 {\n\t\tl, r = encryptBlock(l, r, c)\n\t\tc.p[i], c.p[i+1] = l, r\n\t}\n\n\tfor i := 0; i < 256; i += 2 {\n\t\tl, r = encryptBlock(l, r, c)\n\t\tc.s0[i], c.s0[i+1] = l, r\n\t}\n\tfor i := 0; i < 256; i += 2 {\n\t\tl, r = encryptBlock(l, r, c)\n\t\tc.s1[i], c.s1[i+1] = l, r\n\t}\n\tfor i := 0; i < 256; i += 2 {\n\t\tl, r = encryptBlock(l, r, c)\n\t\tc.s2[i], c.s2[i+1] = l, r\n\t}\n\tfor i := 0; i < 256; i += 2 {\n\t\tl, r = encryptBlock(l, r, c)\n\t\tc.s3[i], c.s3[i+1] = l, r\n\t}\n}\n\n// This is similar to ExpandKey, but folds the salt during the key\n// schedule. While ExpandKey is essentially expandKeyWithSalt with an all-zero\n// salt passed in, reusing ExpandKey turns out to be a place of inefficiency\n// and specializing it here is useful.\nfunc expandKeyWithSalt(key []byte, salt []byte, c *Cipher) {\n\tj := 0\n\tfor i := 0; i < 18; i++ {\n\t\tc.p[i] ^= getNextWord(key, &j)\n\t}\n\n\tj = 0\n\tvar l, r uint32\n\tfor i := 0; i < 18; i += 2 {\n\t\tl ^= getNextWord(salt, &j)\n\t\tr ^= getNextWord(salt, &j)\n\t\tl, r = encryptBlock(l, r, c)\n\t\tc.p[i], c.p[i+1] = l, r\n\t}\n\n\tfor i := 0; i < 256; i += 2 {\n\t\tl ^= getNextWord(salt, &j)\n\t\tr ^= getNextWord(salt, &j)\n\t\tl, r = encryptBlock(l, r, c)\n\t\tc.s0[i], c.s0[i+1] = l, r\n\t}\n\n\tfor i := 0; i < 256; i += 2 {\n\t\tl ^= getNextWord(salt, &j)\n\t\tr ^= getNextWord(salt, &j)\n\t\tl, r = encryptBlock(l, r, c)\n\t\tc.s1[i], c.s1[i+1] = l, r\n\t}\n\n\tfor i := 0; i < 256; i += 2 {\n\t\tl ^= getNextWord(salt, &j)\n\t\tr ^= getNextWord(salt, &j)\n\t\tl, r = encryptBlock(l, r, c)\n\t\tc.s2[i], c.s2[i+1] = l, r\n\t}\n\n\tfor i := 0; i < 256; i += 2 {\n\t\tl ^= getNextWord(salt, &j)\n\t\tr ^= getNextWord(salt, &j)\n\t\tl, r = encryptBlock(l, r, c)\n\t\tc.s3[i], c.s3[i+1] = l, r\n\t}\n}\n\nfunc encryptBlock(l, r uint32, c *Cipher) (uint32, uint32) {\n\txl, xr := l, r\n\txl ^= c.p[0]\n\txr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[1]\n\txl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[2]\n\txr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[3]\n\txl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[4]\n\txr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[5]\n\txl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[6]\n\txr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[7]\n\txl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[8]\n\txr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[9]\n\txl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[10]\n\txr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[11]\n\txl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[12]\n\txr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[13]\n\txl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[14]\n\txr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[15]\n\txl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[16]\n\txr ^= c.p[17]\n\treturn xr, xl\n}\n\nfunc decryptBlock(l, r uint32, c *Cipher) (uint32, uint32) {\n\txl, xr := l, r\n\txl ^= c.p[17]\n\txr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[16]\n\txl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[15]\n\txr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[14]\n\txl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[13]\n\txr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[12]\n\txl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[11]\n\txr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[10]\n\txl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[9]\n\txr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[8]\n\txl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[7]\n\txr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[6]\n\txl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[5]\n\txr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[4]\n\txl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[3]\n\txr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[2]\n\txl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[1]\n\txr ^= c.p[0]\n\treturn xr, xl\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/crypto/blowfish/cipher.go",
    "content": "// Copyright 2010 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package blowfish implements Bruce Schneier's Blowfish encryption algorithm.\n//\n// Blowfish is a legacy cipher and its short block size makes it vulnerable to\n// birthday bound attacks (see https://sweet32.info). It should only be used\n// where compatibility with legacy systems, not security, is the goal.\n//\n// Deprecated: any new system should use AES (from crypto/aes, if necessary in\n// an AEAD mode like crypto/cipher.NewGCM) or XChaCha20-Poly1305 (from\n// golang.org/x/crypto/chacha20poly1305).\npackage blowfish\n\n// The code is a port of Bruce Schneier's C implementation.\n// See https://www.schneier.com/blowfish.html.\n\nimport \"strconv\"\n\n// The Blowfish block size in bytes.\nconst BlockSize = 8\n\n// A Cipher is an instance of Blowfish encryption using a particular key.\ntype Cipher struct {\n\tp              [18]uint32\n\ts0, s1, s2, s3 [256]uint32\n}\n\ntype KeySizeError int\n\nfunc (k KeySizeError) Error() string {\n\treturn \"crypto/blowfish: invalid key size \" + strconv.Itoa(int(k))\n}\n\n// NewCipher creates and returns a Cipher.\n// The key argument should be the Blowfish key, from 1 to 56 bytes.\nfunc NewCipher(key []byte) (*Cipher, error) {\n\tvar result Cipher\n\tif k := len(key); k < 1 || k > 56 {\n\t\treturn nil, KeySizeError(k)\n\t}\n\tinitCipher(&result)\n\tExpandKey(key, &result)\n\treturn &result, nil\n}\n\n// NewSaltedCipher creates a returns a Cipher that folds a salt into its key\n// schedule. For most purposes, NewCipher, instead of NewSaltedCipher, is\n// sufficient and desirable. For bcrypt compatibility, the key can be over 56\n// bytes.\nfunc NewSaltedCipher(key, salt []byte) (*Cipher, error) {\n\tif len(salt) == 0 {\n\t\treturn NewCipher(key)\n\t}\n\tvar result Cipher\n\tif k := len(key); k < 1 {\n\t\treturn nil, KeySizeError(k)\n\t}\n\tinitCipher(&result)\n\texpandKeyWithSalt(key, salt, &result)\n\treturn &result, nil\n}\n\n// BlockSize returns the Blowfish block size, 8 bytes.\n// It is necessary to satisfy the Block interface in the\n// package \"crypto/cipher\".\nfunc (c *Cipher) BlockSize() int { return BlockSize }\n\n// Encrypt encrypts the 8-byte buffer src using the key k\n// and stores the result in dst.\n// Note that for amounts of data larger than a block,\n// it is not safe to just call Encrypt on successive blocks;\n// instead, use an encryption mode like CBC (see crypto/cipher/cbc.go).\nfunc (c *Cipher) Encrypt(dst, src []byte) {\n\tl := uint32(src[0])<<24 | uint32(src[1])<<16 | uint32(src[2])<<8 | uint32(src[3])\n\tr := uint32(src[4])<<24 | uint32(src[5])<<16 | uint32(src[6])<<8 | uint32(src[7])\n\tl, r = encryptBlock(l, r, c)\n\tdst[0], dst[1], dst[2], dst[3] = byte(l>>24), byte(l>>16), byte(l>>8), byte(l)\n\tdst[4], dst[5], dst[6], dst[7] = byte(r>>24), byte(r>>16), byte(r>>8), byte(r)\n}\n\n// Decrypt decrypts the 8-byte buffer src using the key k\n// and stores the result in dst.\nfunc (c *Cipher) Decrypt(dst, src []byte) {\n\tl := uint32(src[0])<<24 | uint32(src[1])<<16 | uint32(src[2])<<8 | uint32(src[3])\n\tr := uint32(src[4])<<24 | uint32(src[5])<<16 | uint32(src[6])<<8 | uint32(src[7])\n\tl, r = decryptBlock(l, r, c)\n\tdst[0], dst[1], dst[2], dst[3] = byte(l>>24), byte(l>>16), byte(l>>8), byte(l)\n\tdst[4], dst[5], dst[6], dst[7] = byte(r>>24), byte(r>>16), byte(r>>8), byte(r)\n}\n\nfunc initCipher(c *Cipher) {\n\tcopy(c.p[0:], p[0:])\n\tcopy(c.s0[0:], s0[0:])\n\tcopy(c.s1[0:], s1[0:])\n\tcopy(c.s2[0:], s2[0:])\n\tcopy(c.s3[0:], s3[0:])\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/crypto/blowfish/const.go",
    "content": "// Copyright 2010 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// The startup permutation array and substitution boxes.\n// They are the hexadecimal digits of PI; see:\n// https://www.schneier.com/code/constants.txt.\n\npackage blowfish\n\nvar s0 = [256]uint32{\n\t0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7, 0xb8e1afed, 0x6a267e96,\n\t0xba7c9045, 0xf12c7f99, 0x24a19947, 0xb3916cf7, 0x0801f2e2, 0x858efc16,\n\t0x636920d8, 0x71574e69, 0xa458fea3, 0xf4933d7e, 0x0d95748f, 0x728eb658,\n\t0x718bcd58, 0x82154aee, 0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013,\n\t0xc5d1b023, 0x286085f0, 0xca417918, 0xb8db38ef, 0x8e79dcb0, 0x603a180e,\n\t0x6c9e0e8b, 0xb01e8a3e, 0xd71577c1, 0xbd314b27, 0x78af2fda, 0x55605c60,\n\t0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440, 0x55ca396a, 0x2aab10b6,\n\t0xb4cc5c34, 0x1141e8ce, 0xa15486af, 0x7c72e993, 0xb3ee1411, 0x636fbc2a,\n\t0x2ba9c55d, 0x741831f6, 0xce5c3e16, 0x9b87931e, 0xafd6ba33, 0x6c24cf5c,\n\t0x7a325381, 0x28958677, 0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193,\n\t0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032, 0xef845d5d, 0xe98575b1,\n\t0xdc262302, 0xeb651b88, 0x23893e81, 0xd396acc5, 0x0f6d6ff3, 0x83f44239,\n\t0x2e0b4482, 0xa4842004, 0x69c8f04a, 0x9e1f9b5e, 0x21c66842, 0xf6e96c9a,\n\t0x670c9c61, 0xabd388f0, 0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3,\n\t0x6eef0b6c, 0x137a3be4, 0xba3bf050, 0x7efb2a98, 0xa1f1651d, 0x39af0176,\n\t0x66ca593e, 0x82430e88, 0x8cee8619, 0x456f9fb4, 0x7d84a5c3, 0x3b8b5ebe,\n\t0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6, 0x4ed3aa62, 0x363f7706,\n\t0x1bfedf72, 0x429b023d, 0x37d0d724, 0xd00a1248, 0xdb0fead3, 0x49f1c09b,\n\t0x075372c9, 0x80991b7b, 0x25d479d8, 0xf6e8def7, 0xe3fe501a, 0xb6794c3b,\n\t0x976ce0bd, 0x04c006ba, 0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463,\n\t0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f, 0x6dfc511f, 0x9b30952c,\n\t0xcc814544, 0xaf5ebd09, 0xbee3d004, 0xde334afd, 0x660f2807, 0x192e4bb3,\n\t0xc0cba857, 0x45c8740f, 0xd20b5f39, 0xb9d3fbdb, 0x5579c0bd, 0x1a60320a,\n\t0xd6a100c6, 0x402c7279, 0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8,\n\t0x3c7516df, 0xfd616b15, 0x2f501ec8, 0xad0552ab, 0x323db5fa, 0xfd238760,\n\t0x53317b48, 0x3e00df82, 0x9e5c57bb, 0xca6f8ca0, 0x1a87562e, 0xdf1769db,\n\t0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573, 0x695b27b0, 0xbbca58c8,\n\t0xe1ffa35d, 0xb8f011a0, 0x10fa3d98, 0xfd2183b8, 0x4afcb56c, 0x2dd1d35b,\n\t0x9a53e479, 0xb6f84565, 0xd28e49bc, 0x4bfb9790, 0xe1ddf2da, 0xa4cb7e33,\n\t0x62fb1341, 0xcee4c6e8, 0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4,\n\t0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0, 0xd08ed1d0, 0xafc725e0,\n\t0x8e3c5b2f, 0x8e7594b7, 0x8ff6e2fb, 0xf2122b64, 0x8888b812, 0x900df01c,\n\t0x4fad5ea0, 0x688fc31c, 0xd1cff191, 0xb3a8c1ad, 0x2f2f2218, 0xbe0e1777,\n\t0xea752dfe, 0x8b021fa1, 0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299,\n\t0xb4a84fe0, 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9, 0x165fa266, 0x80957705,\n\t0x93cc7314, 0x211a1477, 0xe6ad2065, 0x77b5fa86, 0xc75442f5, 0xfb9d35cf,\n\t0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49, 0x00250e2d, 0x2071b35e,\n\t0x226800bb, 0x57b8e0af, 0x2464369b, 0xf009b91e, 0x5563911d, 0x59dfa6aa,\n\t0x78c14389, 0xd95a537f, 0x207d5ba2, 0x02e5b9c5, 0x83260376, 0x6295cfa9,\n\t0x11c81968, 0x4e734a41, 0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915,\n\t0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400, 0x08ba6fb5, 0x571be91f,\n\t0xf296ec6b, 0x2a0dd915, 0xb6636521, 0xe7b9f9b6, 0xff34052e, 0xc5855664,\n\t0x53b02d5d, 0xa99f8fa1, 0x08ba4799, 0x6e85076a,\n}\n\nvar s1 = [256]uint32{\n\t0x4b7a70e9, 0xb5b32944, 0xdb75092e, 0xc4192623, 0xad6ea6b0, 0x49a7df7d,\n\t0x9cee60b8, 0x8fedb266, 0xecaa8c71, 0x699a17ff, 0x5664526c, 0xc2b19ee1,\n\t0x193602a5, 0x75094c29, 0xa0591340, 0xe4183a3e, 0x3f54989a, 0x5b429d65,\n\t0x6b8fe4d6, 0x99f73fd6, 0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1,\n\t0x4cdd2086, 0x8470eb26, 0x6382e9c6, 0x021ecc5e, 0x09686b3f, 0x3ebaefc9,\n\t0x3c971814, 0x6b6a70a1, 0x687f3584, 0x52a0e286, 0xb79c5305, 0xaa500737,\n\t0x3e07841c, 0x7fdeae5c, 0x8e7d44ec, 0x5716f2b8, 0xb03ada37, 0xf0500c0d,\n\t0xf01c1f04, 0x0200b3ff, 0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd,\n\t0xd19113f9, 0x7ca92ff6, 0x94324773, 0x22f54701, 0x3ae5e581, 0x37c2dadc,\n\t0xc8b57634, 0x9af3dda7, 0xa9446146, 0x0fd0030e, 0xecc8c73e, 0xa4751e41,\n\t0xe238cd99, 0x3bea0e2f, 0x3280bba1, 0x183eb331, 0x4e548b38, 0x4f6db908,\n\t0x6f420d03, 0xf60a04bf, 0x2cb81290, 0x24977c79, 0x5679b072, 0xbcaf89af,\n\t0xde9a771f, 0xd9930810, 0xb38bae12, 0xdccf3f2e, 0x5512721f, 0x2e6b7124,\n\t0x501adde6, 0x9f84cd87, 0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c,\n\t0xec7aec3a, 0xdb851dfa, 0x63094366, 0xc464c3d2, 0xef1c1847, 0x3215d908,\n\t0xdd433b37, 0x24c2ba16, 0x12a14d43, 0x2a65c451, 0x50940002, 0x133ae4dd,\n\t0x71dff89e, 0x10314e55, 0x81ac77d6, 0x5f11199b, 0x043556f1, 0xd7a3c76b,\n\t0x3c11183b, 0x5924a509, 0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e,\n\t0x86e34570, 0xeae96fb1, 0x860e5e0a, 0x5a3e2ab3, 0x771fe71c, 0x4e3d06fa,\n\t0x2965dcb9, 0x99e71d0f, 0x803e89d6, 0x5266c825, 0x2e4cc978, 0x9c10b36a,\n\t0xc6150eba, 0x94e2ea78, 0xa5fc3c53, 0x1e0a2df4, 0xf2f74ea7, 0x361d2b3d,\n\t0x1939260f, 0x19c27960, 0x5223a708, 0xf71312b6, 0xebadfe6e, 0xeac31f66,\n\t0xe3bc4595, 0xa67bc883, 0xb17f37d1, 0x018cff28, 0xc332ddef, 0xbe6c5aa5,\n\t0x65582185, 0x68ab9802, 0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84,\n\t0x1521b628, 0x29076170, 0xecdd4775, 0x619f1510, 0x13cca830, 0xeb61bd96,\n\t0x0334fe1e, 0xaa0363cf, 0xb5735c90, 0x4c70a239, 0xd59e9e0b, 0xcbaade14,\n\t0xeecc86bc, 0x60622ca7, 0x9cab5cab, 0xb2f3846e, 0x648b1eaf, 0x19bdf0ca,\n\t0xa02369b9, 0x655abb50, 0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7,\n\t0x9b540b19, 0x875fa099, 0x95f7997e, 0x623d7da8, 0xf837889a, 0x97e32d77,\n\t0x11ed935f, 0x16681281, 0x0e358829, 0xc7e61fd6, 0x96dedfa1, 0x7858ba99,\n\t0x57f584a5, 0x1b227263, 0x9b83c3ff, 0x1ac24696, 0xcdb30aeb, 0x532e3054,\n\t0x8fd948e4, 0x6dbc3128, 0x58ebf2ef, 0x34c6ffea, 0xfe28ed61, 0xee7c3c73,\n\t0x5d4a14d9, 0xe864b7e3, 0x42105d14, 0x203e13e0, 0x45eee2b6, 0xa3aaabea,\n\t0xdb6c4f15, 0xfacb4fd0, 0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105,\n\t0xd81e799e, 0x86854dc7, 0xe44b476a, 0x3d816250, 0xcf62a1f2, 0x5b8d2646,\n\t0xfc8883a0, 0xc1c7b6a3, 0x7f1524c3, 0x69cb7492, 0x47848a0b, 0x5692b285,\n\t0x095bbf00, 0xad19489d, 0x1462b174, 0x23820e00, 0x58428d2a, 0x0c55f5ea,\n\t0x1dadf43e, 0x233f7061, 0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb,\n\t0x7cde3759, 0xcbee7460, 0x4085f2a7, 0xce77326e, 0xa6078084, 0x19f8509e,\n\t0xe8efd855, 0x61d99735, 0xa969a7aa, 0xc50c06c2, 0x5a04abfc, 0x800bcadc,\n\t0x9e447a2e, 0xc3453484, 0xfdd56705, 0x0e1e9ec9, 0xdb73dbd3, 0x105588cd,\n\t0x675fda79, 0xe3674340, 0xc5c43465, 0x713e38d8, 0x3d28f89e, 0xf16dff20,\n\t0x153e21e7, 0x8fb03d4a, 0xe6e39f2b, 0xdb83adf7,\n}\n\nvar s2 = [256]uint32{\n\t0xe93d5a68, 0x948140f7, 0xf64c261c, 0x94692934, 0x411520f7, 0x7602d4f7,\n\t0xbcf46b2e, 0xd4a20068, 0xd4082471, 0x3320f46a, 0x43b7d4b7, 0x500061af,\n\t0x1e39f62e, 0x97244546, 0x14214f74, 0xbf8b8840, 0x4d95fc1d, 0x96b591af,\n\t0x70f4ddd3, 0x66a02f45, 0xbfbc09ec, 0x03bd9785, 0x7fac6dd0, 0x31cb8504,\n\t0x96eb27b3, 0x55fd3941, 0xda2547e6, 0xabca0a9a, 0x28507825, 0x530429f4,\n\t0x0a2c86da, 0xe9b66dfb, 0x68dc1462, 0xd7486900, 0x680ec0a4, 0x27a18dee,\n\t0x4f3ffea2, 0xe887ad8c, 0xb58ce006, 0x7af4d6b6, 0xaace1e7c, 0xd3375fec,\n\t0xce78a399, 0x406b2a42, 0x20fe9e35, 0xd9f385b9, 0xee39d7ab, 0x3b124e8b,\n\t0x1dc9faf7, 0x4b6d1856, 0x26a36631, 0xeae397b2, 0x3a6efa74, 0xdd5b4332,\n\t0x6841e7f7, 0xca7820fb, 0xfb0af54e, 0xd8feb397, 0x454056ac, 0xba489527,\n\t0x55533a3a, 0x20838d87, 0xfe6ba9b7, 0xd096954b, 0x55a867bc, 0xa1159a58,\n\t0xcca92963, 0x99e1db33, 0xa62a4a56, 0x3f3125f9, 0x5ef47e1c, 0x9029317c,\n\t0xfdf8e802, 0x04272f70, 0x80bb155c, 0x05282ce3, 0x95c11548, 0xe4c66d22,\n\t0x48c1133f, 0xc70f86dc, 0x07f9c9ee, 0x41041f0f, 0x404779a4, 0x5d886e17,\n\t0x325f51eb, 0xd59bc0d1, 0xf2bcc18f, 0x41113564, 0x257b7834, 0x602a9c60,\n\t0xdff8e8a3, 0x1f636c1b, 0x0e12b4c2, 0x02e1329e, 0xaf664fd1, 0xcad18115,\n\t0x6b2395e0, 0x333e92e1, 0x3b240b62, 0xeebeb922, 0x85b2a20e, 0xe6ba0d99,\n\t0xde720c8c, 0x2da2f728, 0xd0127845, 0x95b794fd, 0x647d0862, 0xe7ccf5f0,\n\t0x5449a36f, 0x877d48fa, 0xc39dfd27, 0xf33e8d1e, 0x0a476341, 0x992eff74,\n\t0x3a6f6eab, 0xf4f8fd37, 0xa812dc60, 0xa1ebddf8, 0x991be14c, 0xdb6e6b0d,\n\t0xc67b5510, 0x6d672c37, 0x2765d43b, 0xdcd0e804, 0xf1290dc7, 0xcc00ffa3,\n\t0xb5390f92, 0x690fed0b, 0x667b9ffb, 0xcedb7d9c, 0xa091cf0b, 0xd9155ea3,\n\t0xbb132f88, 0x515bad24, 0x7b9479bf, 0x763bd6eb, 0x37392eb3, 0xcc115979,\n\t0x8026e297, 0xf42e312d, 0x6842ada7, 0xc66a2b3b, 0x12754ccc, 0x782ef11c,\n\t0x6a124237, 0xb79251e7, 0x06a1bbe6, 0x4bfb6350, 0x1a6b1018, 0x11caedfa,\n\t0x3d25bdd8, 0xe2e1c3c9, 0x44421659, 0x0a121386, 0xd90cec6e, 0xd5abea2a,\n\t0x64af674e, 0xda86a85f, 0xbebfe988, 0x64e4c3fe, 0x9dbc8057, 0xf0f7c086,\n\t0x60787bf8, 0x6003604d, 0xd1fd8346, 0xf6381fb0, 0x7745ae04, 0xd736fccc,\n\t0x83426b33, 0xf01eab71, 0xb0804187, 0x3c005e5f, 0x77a057be, 0xbde8ae24,\n\t0x55464299, 0xbf582e61, 0x4e58f48f, 0xf2ddfda2, 0xf474ef38, 0x8789bdc2,\n\t0x5366f9c3, 0xc8b38e74, 0xb475f255, 0x46fcd9b9, 0x7aeb2661, 0x8b1ddf84,\n\t0x846a0e79, 0x915f95e2, 0x466e598e, 0x20b45770, 0x8cd55591, 0xc902de4c,\n\t0xb90bace1, 0xbb8205d0, 0x11a86248, 0x7574a99e, 0xb77f19b6, 0xe0a9dc09,\n\t0x662d09a1, 0xc4324633, 0xe85a1f02, 0x09f0be8c, 0x4a99a025, 0x1d6efe10,\n\t0x1ab93d1d, 0x0ba5a4df, 0xa186f20f, 0x2868f169, 0xdcb7da83, 0x573906fe,\n\t0xa1e2ce9b, 0x4fcd7f52, 0x50115e01, 0xa70683fa, 0xa002b5c4, 0x0de6d027,\n\t0x9af88c27, 0x773f8641, 0xc3604c06, 0x61a806b5, 0xf0177a28, 0xc0f586e0,\n\t0x006058aa, 0x30dc7d62, 0x11e69ed7, 0x2338ea63, 0x53c2dd94, 0xc2c21634,\n\t0xbbcbee56, 0x90bcb6de, 0xebfc7da1, 0xce591d76, 0x6f05e409, 0x4b7c0188,\n\t0x39720a3d, 0x7c927c24, 0x86e3725f, 0x724d9db9, 0x1ac15bb4, 0xd39eb8fc,\n\t0xed545578, 0x08fca5b5, 0xd83d7cd3, 0x4dad0fc4, 0x1e50ef5e, 0xb161e6f8,\n\t0xa28514d9, 0x6c51133c, 0x6fd5c7e7, 0x56e14ec4, 0x362abfce, 0xddc6c837,\n\t0xd79a3234, 0x92638212, 0x670efa8e, 0x406000e0,\n}\n\nvar s3 = [256]uint32{\n\t0x3a39ce37, 0xd3faf5cf, 0xabc27737, 0x5ac52d1b, 0x5cb0679e, 0x4fa33742,\n\t0xd3822740, 0x99bc9bbe, 0xd5118e9d, 0xbf0f7315, 0xd62d1c7e, 0xc700c47b,\n\t0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4, 0x5748ab2f, 0xbc946e79,\n\t0xc6a376d2, 0x6549c2c8, 0x530ff8ee, 0x468dde7d, 0xd5730a1d, 0x4cd04dc6,\n\t0x2939bbdb, 0xa9ba4650, 0xac9526e8, 0xbe5ee304, 0xa1fad5f0, 0x6a2d519a,\n\t0x63ef8ce2, 0x9a86ee22, 0xc089c2b8, 0x43242ef6, 0xa51e03aa, 0x9cf2d0a4,\n\t0x83c061ba, 0x9be96a4d, 0x8fe51550, 0xba645bd6, 0x2826a2f9, 0xa73a3ae1,\n\t0x4ba99586, 0xef5562e9, 0xc72fefd3, 0xf752f7da, 0x3f046f69, 0x77fa0a59,\n\t0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593, 0xe990fd5a, 0x9e34d797,\n\t0x2cf0b7d9, 0x022b8b51, 0x96d5ac3a, 0x017da67d, 0xd1cf3ed6, 0x7c7d2d28,\n\t0x1f9f25cf, 0xadf2b89b, 0x5ad6b472, 0x5a88f54c, 0xe029ac71, 0xe019a5e6,\n\t0x47b0acfd, 0xed93fa9b, 0xe8d3c48d, 0x283b57cc, 0xf8d56629, 0x79132e28,\n\t0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c, 0x15056dd4, 0x88f46dba,\n\t0x03a16125, 0x0564f0bd, 0xc3eb9e15, 0x3c9057a2, 0x97271aec, 0xa93a072a,\n\t0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb, 0x26dcf319, 0x7533d928, 0xb155fdf5,\n\t0x03563482, 0x8aba3cbb, 0x28517711, 0xc20ad9f8, 0xabcc5167, 0xccad925f,\n\t0x4de81751, 0x3830dc8e, 0x379d5862, 0x9320f991, 0xea7a90c2, 0xfb3e7bce,\n\t0x5121ce64, 0x774fbe32, 0xa8b6e37e, 0xc3293d46, 0x48de5369, 0x6413e680,\n\t0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166, 0xb39a460a, 0x6445c0dd,\n\t0x586cdecf, 0x1c20c8ae, 0x5bbef7dd, 0x1b588d40, 0xccd2017f, 0x6bb4e3bb,\n\t0xdda26a7e, 0x3a59ff45, 0x3e350a44, 0xbcb4cdd5, 0x72eacea8, 0xfa6484bb,\n\t0x8d6612ae, 0xbf3c6f47, 0xd29be463, 0x542f5d9e, 0xaec2771b, 0xf64e6370,\n\t0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d, 0x4040cb08, 0x4eb4e2cc,\n\t0x34d2466a, 0x0115af84, 0xe1b00428, 0x95983a1d, 0x06b89fb4, 0xce6ea048,\n\t0x6f3f3b82, 0x3520ab82, 0x011a1d4b, 0x277227f8, 0x611560b1, 0xe7933fdc,\n\t0xbb3a792b, 0x344525bd, 0xa08839e1, 0x51ce794b, 0x2f32c9b7, 0xa01fbac9,\n\t0xe01cc87e, 0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7, 0x1a908749, 0xd44fbd9a,\n\t0xd0dadecb, 0xd50ada38, 0x0339c32a, 0xc6913667, 0x8df9317c, 0xe0b12b4f,\n\t0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c, 0xbf97222c, 0x15e6fc2a,\n\t0x0f91fc71, 0x9b941525, 0xfae59361, 0xceb69ceb, 0xc2a86459, 0x12baa8d1,\n\t0xb6c1075e, 0xe3056a0c, 0x10d25065, 0xcb03a442, 0xe0ec6e0e, 0x1698db3b,\n\t0x4c98a0be, 0x3278e964, 0x9f1f9532, 0xe0d392df, 0xd3a0342b, 0x8971f21e,\n\t0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8, 0xdf359f8d, 0x9b992f2e,\n\t0xe60b6f47, 0x0fe3f11d, 0xe54cda54, 0x1edad891, 0xce6279cf, 0xcd3e7e6f,\n\t0x1618b166, 0xfd2c1d05, 0x848fd2c5, 0xf6fb2299, 0xf523f357, 0xa6327623,\n\t0x93a83531, 0x56cccd02, 0xacf08162, 0x5a75ebb5, 0x6e163697, 0x88d273cc,\n\t0xde966292, 0x81b949d0, 0x4c50901b, 0x71c65614, 0xe6c6c7bd, 0x327a140a,\n\t0x45e1d006, 0xc3f27b9a, 0xc9aa53fd, 0x62a80f00, 0xbb25bfe2, 0x35bdd2f6,\n\t0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b, 0x53113ec0, 0x1640e3d3,\n\t0x38abbd60, 0x2547adf0, 0xba38209c, 0xf746ce76, 0x77afa1c5, 0x20756060,\n\t0x85cbfe4e, 0x8ae88dd8, 0x7aaaf9b0, 0x4cf9aa7e, 0x1948c25c, 0x02fb8a8c,\n\t0x01c36ae4, 0xd6ebe1f9, 0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f,\n\t0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6,\n}\n\nvar p = [18]uint32{\n\t0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344, 0xa4093822, 0x299f31d0,\n\t0x082efa98, 0xec4e6c89, 0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c,\n\t0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917, 0x9216d5d9, 0x8979fb1b,\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/crypto/chacha20/chacha_arm64.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gc && !purego\n\npackage chacha20\n\nconst bufSize = 256\n\n//go:noescape\nfunc xorKeyStreamVX(dst, src []byte, key *[8]uint32, nonce *[3]uint32, counter *uint32)\n\nfunc (c *Cipher) xorKeyStreamBlocks(dst, src []byte) {\n\txorKeyStreamVX(dst, src, &c.key, &c.nonce, &c.counter)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/crypto/chacha20/chacha_arm64.s",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gc && !purego\n\n#include \"textflag.h\"\n\n#define NUM_ROUNDS 10\n\n// func xorKeyStreamVX(dst, src []byte, key *[8]uint32, nonce *[3]uint32, counter *uint32)\nTEXT ·xorKeyStreamVX(SB), NOSPLIT, $0\n\tMOVD\tdst+0(FP), R1\n\tMOVD\tsrc+24(FP), R2\n\tMOVD\tsrc_len+32(FP), R3\n\tMOVD\tkey+48(FP), R4\n\tMOVD\tnonce+56(FP), R6\n\tMOVD\tcounter+64(FP), R7\n\n\tMOVD\t$·constants(SB), R10\n\tMOVD\t$·incRotMatrix(SB), R11\n\n\tMOVW\t(R7), R20\n\n\tAND\t$~255, R3, R13\n\tADD\tR2, R13, R12 // R12 for block end\n\tAND\t$255, R3, R13\nloop:\n\tMOVD\t$NUM_ROUNDS, R21\n\tVLD1\t(R11), [V30.S4, V31.S4]\n\n\t// load constants\n\t// VLD4R (R10), [V0.S4, V1.S4, V2.S4, V3.S4]\n\tWORD\t$0x4D60E940\n\n\t// load keys\n\t// VLD4R 16(R4), [V4.S4, V5.S4, V6.S4, V7.S4]\n\tWORD\t$0x4DFFE884\n\t// VLD4R 16(R4), [V8.S4, V9.S4, V10.S4, V11.S4]\n\tWORD\t$0x4DFFE888\n\tSUB\t$32, R4\n\n\t// load counter + nonce\n\t// VLD1R (R7), [V12.S4]\n\tWORD\t$0x4D40C8EC\n\n\t// VLD3R (R6), [V13.S4, V14.S4, V15.S4]\n\tWORD\t$0x4D40E8CD\n\n\t// update counter\n\tVADD\tV30.S4, V12.S4, V12.S4\n\nchacha:\n\t// V0..V3 += V4..V7\n\t// V12..V15 <<<= ((V12..V15 XOR V0..V3), 16)\n\tVADD\tV0.S4, V4.S4, V0.S4\n\tVADD\tV1.S4, V5.S4, V1.S4\n\tVADD\tV2.S4, V6.S4, V2.S4\n\tVADD\tV3.S4, V7.S4, V3.S4\n\tVEOR\tV12.B16, V0.B16, V12.B16\n\tVEOR\tV13.B16, V1.B16, V13.B16\n\tVEOR\tV14.B16, V2.B16, V14.B16\n\tVEOR\tV15.B16, V3.B16, V15.B16\n\tVREV32\tV12.H8, V12.H8\n\tVREV32\tV13.H8, V13.H8\n\tVREV32\tV14.H8, V14.H8\n\tVREV32\tV15.H8, V15.H8\n\t// V8..V11 += V12..V15\n\t// V4..V7 <<<= ((V4..V7 XOR V8..V11), 12)\n\tVADD\tV8.S4, V12.S4, V8.S4\n\tVADD\tV9.S4, V13.S4, V9.S4\n\tVADD\tV10.S4, V14.S4, V10.S4\n\tVADD\tV11.S4, V15.S4, V11.S4\n\tVEOR\tV8.B16, V4.B16, V16.B16\n\tVEOR\tV9.B16, V5.B16, V17.B16\n\tVEOR\tV10.B16, V6.B16, V18.B16\n\tVEOR\tV11.B16, V7.B16, V19.B16\n\tVSHL\t$12, V16.S4, V4.S4\n\tVSHL\t$12, V17.S4, V5.S4\n\tVSHL\t$12, V18.S4, V6.S4\n\tVSHL\t$12, V19.S4, V7.S4\n\tVSRI\t$20, V16.S4, V4.S4\n\tVSRI\t$20, V17.S4, V5.S4\n\tVSRI\t$20, V18.S4, V6.S4\n\tVSRI\t$20, V19.S4, V7.S4\n\n\t// V0..V3 += V4..V7\n\t// V12..V15 <<<= ((V12..V15 XOR V0..V3), 8)\n\tVADD\tV0.S4, V4.S4, V0.S4\n\tVADD\tV1.S4, V5.S4, V1.S4\n\tVADD\tV2.S4, V6.S4, V2.S4\n\tVADD\tV3.S4, V7.S4, V3.S4\n\tVEOR\tV12.B16, V0.B16, V12.B16\n\tVEOR\tV13.B16, V1.B16, V13.B16\n\tVEOR\tV14.B16, V2.B16, V14.B16\n\tVEOR\tV15.B16, V3.B16, V15.B16\n\tVTBL\tV31.B16, [V12.B16], V12.B16\n\tVTBL\tV31.B16, [V13.B16], V13.B16\n\tVTBL\tV31.B16, [V14.B16], V14.B16\n\tVTBL\tV31.B16, [V15.B16], V15.B16\n\n\t// V8..V11 += V12..V15\n\t// V4..V7 <<<= ((V4..V7 XOR V8..V11), 7)\n\tVADD\tV12.S4, V8.S4, V8.S4\n\tVADD\tV13.S4, V9.S4, V9.S4\n\tVADD\tV14.S4, V10.S4, V10.S4\n\tVADD\tV15.S4, V11.S4, V11.S4\n\tVEOR\tV8.B16, V4.B16, V16.B16\n\tVEOR\tV9.B16, V5.B16, V17.B16\n\tVEOR\tV10.B16, V6.B16, V18.B16\n\tVEOR\tV11.B16, V7.B16, V19.B16\n\tVSHL\t$7, V16.S4, V4.S4\n\tVSHL\t$7, V17.S4, V5.S4\n\tVSHL\t$7, V18.S4, V6.S4\n\tVSHL\t$7, V19.S4, V7.S4\n\tVSRI\t$25, V16.S4, V4.S4\n\tVSRI\t$25, V17.S4, V5.S4\n\tVSRI\t$25, V18.S4, V6.S4\n\tVSRI\t$25, V19.S4, V7.S4\n\n\t// V0..V3 += V5..V7, V4\n\t// V15,V12-V14 <<<= ((V15,V12-V14 XOR V0..V3), 16)\n\tVADD\tV0.S4, V5.S4, V0.S4\n\tVADD\tV1.S4, V6.S4, V1.S4\n\tVADD\tV2.S4, V7.S4, V2.S4\n\tVADD\tV3.S4, V4.S4, V3.S4\n\tVEOR\tV15.B16, V0.B16, V15.B16\n\tVEOR\tV12.B16, V1.B16, V12.B16\n\tVEOR\tV13.B16, V2.B16, V13.B16\n\tVEOR\tV14.B16, V3.B16, V14.B16\n\tVREV32\tV12.H8, V12.H8\n\tVREV32\tV13.H8, V13.H8\n\tVREV32\tV14.H8, V14.H8\n\tVREV32\tV15.H8, V15.H8\n\n\t// V10 += V15; V5 <<<= ((V10 XOR V5), 12)\n\t// ...\n\tVADD\tV15.S4, V10.S4, V10.S4\n\tVADD\tV12.S4, V11.S4, V11.S4\n\tVADD\tV13.S4, V8.S4, V8.S4\n\tVADD\tV14.S4, V9.S4, V9.S4\n\tVEOR\tV10.B16, V5.B16, V16.B16\n\tVEOR\tV11.B16, V6.B16, V17.B16\n\tVEOR\tV8.B16, V7.B16, V18.B16\n\tVEOR\tV9.B16, V4.B16, V19.B16\n\tVSHL\t$12, V16.S4, V5.S4\n\tVSHL\t$12, V17.S4, V6.S4\n\tVSHL\t$12, V18.S4, V7.S4\n\tVSHL\t$12, V19.S4, V4.S4\n\tVSRI\t$20, V16.S4, V5.S4\n\tVSRI\t$20, V17.S4, V6.S4\n\tVSRI\t$20, V18.S4, V7.S4\n\tVSRI\t$20, V19.S4, V4.S4\n\n\t// V0 += V5; V15 <<<= ((V0 XOR V15), 8)\n\t// ...\n\tVADD\tV5.S4, V0.S4, V0.S4\n\tVADD\tV6.S4, V1.S4, V1.S4\n\tVADD\tV7.S4, V2.S4, V2.S4\n\tVADD\tV4.S4, V3.S4, V3.S4\n\tVEOR\tV0.B16, V15.B16, V15.B16\n\tVEOR\tV1.B16, V12.B16, V12.B16\n\tVEOR\tV2.B16, V13.B16, V13.B16\n\tVEOR\tV3.B16, V14.B16, V14.B16\n\tVTBL\tV31.B16, [V12.B16], V12.B16\n\tVTBL\tV31.B16, [V13.B16], V13.B16\n\tVTBL\tV31.B16, [V14.B16], V14.B16\n\tVTBL\tV31.B16, [V15.B16], V15.B16\n\n\t// V10 += V15; V5 <<<= ((V10 XOR V5), 7)\n\t// ...\n\tVADD\tV15.S4, V10.S4, V10.S4\n\tVADD\tV12.S4, V11.S4, V11.S4\n\tVADD\tV13.S4, V8.S4, V8.S4\n\tVADD\tV14.S4, V9.S4, V9.S4\n\tVEOR\tV10.B16, V5.B16, V16.B16\n\tVEOR\tV11.B16, V6.B16, V17.B16\n\tVEOR\tV8.B16, V7.B16, V18.B16\n\tVEOR\tV9.B16, V4.B16, V19.B16\n\tVSHL\t$7, V16.S4, V5.S4\n\tVSHL\t$7, V17.S4, V6.S4\n\tVSHL\t$7, V18.S4, V7.S4\n\tVSHL\t$7, V19.S4, V4.S4\n\tVSRI\t$25, V16.S4, V5.S4\n\tVSRI\t$25, V17.S4, V6.S4\n\tVSRI\t$25, V18.S4, V7.S4\n\tVSRI\t$25, V19.S4, V4.S4\n\n\tSUB\t$1, R21\n\tCBNZ\tR21, chacha\n\n\t// VLD4R (R10), [V16.S4, V17.S4, V18.S4, V19.S4]\n\tWORD\t$0x4D60E950\n\n\t// VLD4R 16(R4), [V20.S4, V21.S4, V22.S4, V23.S4]\n\tWORD\t$0x4DFFE894\n\tVADD\tV30.S4, V12.S4, V12.S4\n\tVADD\tV16.S4, V0.S4, V0.S4\n\tVADD\tV17.S4, V1.S4, V1.S4\n\tVADD\tV18.S4, V2.S4, V2.S4\n\tVADD\tV19.S4, V3.S4, V3.S4\n\t// VLD4R 16(R4), [V24.S4, V25.S4, V26.S4, V27.S4]\n\tWORD\t$0x4DFFE898\n\t// restore R4\n\tSUB\t$32, R4\n\n\t// load counter + nonce\n\t// VLD1R (R7), [V28.S4]\n\tWORD\t$0x4D40C8FC\n\t// VLD3R (R6), [V29.S4, V30.S4, V31.S4]\n\tWORD\t$0x4D40E8DD\n\n\tVADD\tV20.S4, V4.S4, V4.S4\n\tVADD\tV21.S4, V5.S4, V5.S4\n\tVADD\tV22.S4, V6.S4, V6.S4\n\tVADD\tV23.S4, V7.S4, V7.S4\n\tVADD\tV24.S4, V8.S4, V8.S4\n\tVADD\tV25.S4, V9.S4, V9.S4\n\tVADD\tV26.S4, V10.S4, V10.S4\n\tVADD\tV27.S4, V11.S4, V11.S4\n\tVADD\tV28.S4, V12.S4, V12.S4\n\tVADD\tV29.S4, V13.S4, V13.S4\n\tVADD\tV30.S4, V14.S4, V14.S4\n\tVADD\tV31.S4, V15.S4, V15.S4\n\n\tVZIP1\tV1.S4, V0.S4, V16.S4\n\tVZIP2\tV1.S4, V0.S4, V17.S4\n\tVZIP1\tV3.S4, V2.S4, V18.S4\n\tVZIP2\tV3.S4, V2.S4, V19.S4\n\tVZIP1\tV5.S4, V4.S4, V20.S4\n\tVZIP2\tV5.S4, V4.S4, V21.S4\n\tVZIP1\tV7.S4, V6.S4, V22.S4\n\tVZIP2\tV7.S4, V6.S4, V23.S4\n\tVZIP1\tV9.S4, V8.S4, V24.S4\n\tVZIP2\tV9.S4, V8.S4, V25.S4\n\tVZIP1\tV11.S4, V10.S4, V26.S4\n\tVZIP2\tV11.S4, V10.S4, V27.S4\n\tVZIP1\tV13.S4, V12.S4, V28.S4\n\tVZIP2\tV13.S4, V12.S4, V29.S4\n\tVZIP1\tV15.S4, V14.S4, V30.S4\n\tVZIP2\tV15.S4, V14.S4, V31.S4\n\tVZIP1\tV18.D2, V16.D2, V0.D2\n\tVZIP2\tV18.D2, V16.D2, V4.D2\n\tVZIP1\tV19.D2, V17.D2, V8.D2\n\tVZIP2\tV19.D2, V17.D2, V12.D2\n\tVLD1.P\t64(R2), [V16.B16, V17.B16, V18.B16, V19.B16]\n\n\tVZIP1\tV22.D2, V20.D2, V1.D2\n\tVZIP2\tV22.D2, V20.D2, V5.D2\n\tVZIP1\tV23.D2, V21.D2, V9.D2\n\tVZIP2\tV23.D2, V21.D2, V13.D2\n\tVLD1.P\t64(R2), [V20.B16, V21.B16, V22.B16, V23.B16]\n\tVZIP1\tV26.D2, V24.D2, V2.D2\n\tVZIP2\tV26.D2, V24.D2, V6.D2\n\tVZIP1\tV27.D2, V25.D2, V10.D2\n\tVZIP2\tV27.D2, V25.D2, V14.D2\n\tVLD1.P\t64(R2), [V24.B16, V25.B16, V26.B16, V27.B16]\n\tVZIP1\tV30.D2, V28.D2, V3.D2\n\tVZIP2\tV30.D2, V28.D2, V7.D2\n\tVZIP1\tV31.D2, V29.D2, V11.D2\n\tVZIP2\tV31.D2, V29.D2, V15.D2\n\tVLD1.P\t64(R2), [V28.B16, V29.B16, V30.B16, V31.B16]\n\tVEOR\tV0.B16, V16.B16, V16.B16\n\tVEOR\tV1.B16, V17.B16, V17.B16\n\tVEOR\tV2.B16, V18.B16, V18.B16\n\tVEOR\tV3.B16, V19.B16, V19.B16\n\tVST1.P\t[V16.B16, V17.B16, V18.B16, V19.B16], 64(R1)\n\tVEOR\tV4.B16, V20.B16, V20.B16\n\tVEOR\tV5.B16, V21.B16, V21.B16\n\tVEOR\tV6.B16, V22.B16, V22.B16\n\tVEOR\tV7.B16, V23.B16, V23.B16\n\tVST1.P\t[V20.B16, V21.B16, V22.B16, V23.B16], 64(R1)\n\tVEOR\tV8.B16, V24.B16, V24.B16\n\tVEOR\tV9.B16, V25.B16, V25.B16\n\tVEOR\tV10.B16, V26.B16, V26.B16\n\tVEOR\tV11.B16, V27.B16, V27.B16\n\tVST1.P\t[V24.B16, V25.B16, V26.B16, V27.B16], 64(R1)\n\tVEOR\tV12.B16, V28.B16, V28.B16\n\tVEOR\tV13.B16, V29.B16, V29.B16\n\tVEOR\tV14.B16, V30.B16, V30.B16\n\tVEOR\tV15.B16, V31.B16, V31.B16\n\tVST1.P\t[V28.B16, V29.B16, V30.B16, V31.B16], 64(R1)\n\n\tADD\t$4, R20\n\tMOVW\tR20, (R7) // update counter\n\n\tCMP\tR2, R12\n\tBGT\tloop\n\n\tRET\n\n\nDATA\t·constants+0x00(SB)/4, $0x61707865\nDATA\t·constants+0x04(SB)/4, $0x3320646e\nDATA\t·constants+0x08(SB)/4, $0x79622d32\nDATA\t·constants+0x0c(SB)/4, $0x6b206574\nGLOBL\t·constants(SB), NOPTR|RODATA, $32\n\nDATA\t·incRotMatrix+0x00(SB)/4, $0x00000000\nDATA\t·incRotMatrix+0x04(SB)/4, $0x00000001\nDATA\t·incRotMatrix+0x08(SB)/4, $0x00000002\nDATA\t·incRotMatrix+0x0c(SB)/4, $0x00000003\nDATA\t·incRotMatrix+0x10(SB)/4, $0x02010003\nDATA\t·incRotMatrix+0x14(SB)/4, $0x06050407\nDATA\t·incRotMatrix+0x18(SB)/4, $0x0A09080B\nDATA\t·incRotMatrix+0x1c(SB)/4, $0x0E0D0C0F\nGLOBL\t·incRotMatrix(SB), NOPTR|RODATA, $32\n"
  },
  {
    "path": "tests/vendor/golang.org/x/crypto/chacha20/chacha_generic.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package chacha20 implements the ChaCha20 and XChaCha20 encryption algorithms\n// as specified in RFC 8439 and draft-irtf-cfrg-xchacha-01.\npackage chacha20\n\nimport (\n\t\"crypto/cipher\"\n\t\"encoding/binary\"\n\t\"errors\"\n\t\"math/bits\"\n\n\t\"golang.org/x/crypto/internal/alias\"\n)\n\nconst (\n\t// KeySize is the size of the key used by this cipher, in bytes.\n\tKeySize = 32\n\n\t// NonceSize is the size of the nonce used with the standard variant of this\n\t// cipher, in bytes.\n\t//\n\t// Note that this is too short to be safely generated at random if the same\n\t// key is reused more than 2³² times.\n\tNonceSize = 12\n\n\t// NonceSizeX is the size of the nonce used with the XChaCha20 variant of\n\t// this cipher, in bytes.\n\tNonceSizeX = 24\n)\n\n// Cipher is a stateful instance of ChaCha20 or XChaCha20 using a particular key\n// and nonce. A *Cipher implements the cipher.Stream interface.\ntype Cipher struct {\n\t// The ChaCha20 state is 16 words: 4 constant, 8 of key, 1 of counter\n\t// (incremented after each block), and 3 of nonce.\n\tkey     [8]uint32\n\tcounter uint32\n\tnonce   [3]uint32\n\n\t// The last len bytes of buf are leftover key stream bytes from the previous\n\t// XORKeyStream invocation. The size of buf depends on how many blocks are\n\t// computed at a time by xorKeyStreamBlocks.\n\tbuf [bufSize]byte\n\tlen int\n\n\t// overflow is set when the counter overflowed, no more blocks can be\n\t// generated, and the next XORKeyStream call should panic.\n\toverflow bool\n\n\t// The counter-independent results of the first round are cached after they\n\t// are computed the first time.\n\tprecompDone      bool\n\tp1, p5, p9, p13  uint32\n\tp2, p6, p10, p14 uint32\n\tp3, p7, p11, p15 uint32\n}\n\nvar _ cipher.Stream = (*Cipher)(nil)\n\n// NewUnauthenticatedCipher creates a new ChaCha20 stream cipher with the given\n// 32 bytes key and a 12 or 24 bytes nonce. If a nonce of 24 bytes is provided,\n// the XChaCha20 construction will be used. It returns an error if key or nonce\n// have any other length.\n//\n// Note that ChaCha20, like all stream ciphers, is not authenticated and allows\n// attackers to silently tamper with the plaintext. For this reason, it is more\n// appropriate as a building block than as a standalone encryption mechanism.\n// Instead, consider using package golang.org/x/crypto/chacha20poly1305.\nfunc NewUnauthenticatedCipher(key, nonce []byte) (*Cipher, error) {\n\t// This function is split into a wrapper so that the Cipher allocation will\n\t// be inlined, and depending on how the caller uses the return value, won't\n\t// escape to the heap.\n\tc := &Cipher{}\n\treturn newUnauthenticatedCipher(c, key, nonce)\n}\n\nfunc newUnauthenticatedCipher(c *Cipher, key, nonce []byte) (*Cipher, error) {\n\tif len(key) != KeySize {\n\t\treturn nil, errors.New(\"chacha20: wrong key size\")\n\t}\n\tif len(nonce) == NonceSizeX {\n\t\t// XChaCha20 uses the ChaCha20 core to mix 16 bytes of the nonce into a\n\t\t// derived key, allowing it to operate on a nonce of 24 bytes. See\n\t\t// draft-irtf-cfrg-xchacha-01, Section 2.3.\n\t\tkey, _ = HChaCha20(key, nonce[0:16])\n\t\tcNonce := make([]byte, NonceSize)\n\t\tcopy(cNonce[4:12], nonce[16:24])\n\t\tnonce = cNonce\n\t} else if len(nonce) != NonceSize {\n\t\treturn nil, errors.New(\"chacha20: wrong nonce size\")\n\t}\n\n\tkey, nonce = key[:KeySize], nonce[:NonceSize] // bounds check elimination hint\n\tc.key = [8]uint32{\n\t\tbinary.LittleEndian.Uint32(key[0:4]),\n\t\tbinary.LittleEndian.Uint32(key[4:8]),\n\t\tbinary.LittleEndian.Uint32(key[8:12]),\n\t\tbinary.LittleEndian.Uint32(key[12:16]),\n\t\tbinary.LittleEndian.Uint32(key[16:20]),\n\t\tbinary.LittleEndian.Uint32(key[20:24]),\n\t\tbinary.LittleEndian.Uint32(key[24:28]),\n\t\tbinary.LittleEndian.Uint32(key[28:32]),\n\t}\n\tc.nonce = [3]uint32{\n\t\tbinary.LittleEndian.Uint32(nonce[0:4]),\n\t\tbinary.LittleEndian.Uint32(nonce[4:8]),\n\t\tbinary.LittleEndian.Uint32(nonce[8:12]),\n\t}\n\treturn c, nil\n}\n\n// The constant first 4 words of the ChaCha20 state.\nconst (\n\tj0 uint32 = 0x61707865 // expa\n\tj1 uint32 = 0x3320646e // nd 3\n\tj2 uint32 = 0x79622d32 // 2-by\n\tj3 uint32 = 0x6b206574 // te k\n)\n\nconst blockSize = 64\n\n// quarterRound is the core of ChaCha20. It shuffles the bits of 4 state words.\n// It's executed 4 times for each of the 20 ChaCha20 rounds, operating on all 16\n// words each round, in columnar or diagonal groups of 4 at a time.\nfunc quarterRound(a, b, c, d uint32) (uint32, uint32, uint32, uint32) {\n\ta += b\n\td ^= a\n\td = bits.RotateLeft32(d, 16)\n\tc += d\n\tb ^= c\n\tb = bits.RotateLeft32(b, 12)\n\ta += b\n\td ^= a\n\td = bits.RotateLeft32(d, 8)\n\tc += d\n\tb ^= c\n\tb = bits.RotateLeft32(b, 7)\n\treturn a, b, c, d\n}\n\n// SetCounter sets the Cipher counter. The next invocation of XORKeyStream will\n// behave as if (64 * counter) bytes had been encrypted so far.\n//\n// To prevent accidental counter reuse, SetCounter panics if counter is less\n// than the current value.\n//\n// Note that the execution time of XORKeyStream is not independent of the\n// counter value.\nfunc (s *Cipher) SetCounter(counter uint32) {\n\t// Internally, s may buffer multiple blocks, which complicates this\n\t// implementation slightly. When checking whether the counter has rolled\n\t// back, we must use both s.counter and s.len to determine how many blocks\n\t// we have already output.\n\toutputCounter := s.counter - uint32(s.len)/blockSize\n\tif s.overflow || counter < outputCounter {\n\t\tpanic(\"chacha20: SetCounter attempted to rollback counter\")\n\t}\n\n\t// In the general case, we set the new counter value and reset s.len to 0,\n\t// causing the next call to XORKeyStream to refill the buffer. However, if\n\t// we're advancing within the existing buffer, we can save work by simply\n\t// setting s.len.\n\tif counter < s.counter {\n\t\ts.len = int(s.counter-counter) * blockSize\n\t} else {\n\t\ts.counter = counter\n\t\ts.len = 0\n\t}\n}\n\n// XORKeyStream XORs each byte in the given slice with a byte from the\n// cipher's key stream. Dst and src must overlap entirely or not at all.\n//\n// If len(dst) < len(src), XORKeyStream will panic. It is acceptable\n// to pass a dst bigger than src, and in that case, XORKeyStream will\n// only update dst[:len(src)] and will not touch the rest of dst.\n//\n// Multiple calls to XORKeyStream behave as if the concatenation of\n// the src buffers was passed in a single run. That is, Cipher\n// maintains state and does not reset at each XORKeyStream call.\nfunc (s *Cipher) XORKeyStream(dst, src []byte) {\n\tif len(src) == 0 {\n\t\treturn\n\t}\n\tif len(dst) < len(src) {\n\t\tpanic(\"chacha20: output smaller than input\")\n\t}\n\tdst = dst[:len(src)]\n\tif alias.InexactOverlap(dst, src) {\n\t\tpanic(\"chacha20: invalid buffer overlap\")\n\t}\n\n\t// First, drain any remaining key stream from a previous XORKeyStream.\n\tif s.len != 0 {\n\t\tkeyStream := s.buf[bufSize-s.len:]\n\t\tif len(src) < len(keyStream) {\n\t\t\tkeyStream = keyStream[:len(src)]\n\t\t}\n\t\t_ = src[len(keyStream)-1] // bounds check elimination hint\n\t\tfor i, b := range keyStream {\n\t\t\tdst[i] = src[i] ^ b\n\t\t}\n\t\ts.len -= len(keyStream)\n\t\tdst, src = dst[len(keyStream):], src[len(keyStream):]\n\t}\n\tif len(src) == 0 {\n\t\treturn\n\t}\n\n\t// If we'd need to let the counter overflow and keep generating output,\n\t// panic immediately. If instead we'd only reach the last block, remember\n\t// not to generate any more output after the buffer is drained.\n\tnumBlocks := (uint64(len(src)) + blockSize - 1) / blockSize\n\tif s.overflow || uint64(s.counter)+numBlocks > 1<<32 {\n\t\tpanic(\"chacha20: counter overflow\")\n\t} else if uint64(s.counter)+numBlocks == 1<<32 {\n\t\ts.overflow = true\n\t}\n\n\t// xorKeyStreamBlocks implementations expect input lengths that are a\n\t// multiple of bufSize. Platform-specific ones process multiple blocks at a\n\t// time, so have bufSizes that are a multiple of blockSize.\n\n\tfull := len(src) - len(src)%bufSize\n\tif full > 0 {\n\t\ts.xorKeyStreamBlocks(dst[:full], src[:full])\n\t}\n\tdst, src = dst[full:], src[full:]\n\n\t// If using a multi-block xorKeyStreamBlocks would overflow, use the generic\n\t// one that does one block at a time.\n\tconst blocksPerBuf = bufSize / blockSize\n\tif uint64(s.counter)+blocksPerBuf > 1<<32 {\n\t\ts.buf = [bufSize]byte{}\n\t\tnumBlocks := (len(src) + blockSize - 1) / blockSize\n\t\tbuf := s.buf[bufSize-numBlocks*blockSize:]\n\t\tcopy(buf, src)\n\t\ts.xorKeyStreamBlocksGeneric(buf, buf)\n\t\ts.len = len(buf) - copy(dst, buf)\n\t\treturn\n\t}\n\n\t// If we have a partial (multi-)block, pad it for xorKeyStreamBlocks, and\n\t// keep the leftover keystream for the next XORKeyStream invocation.\n\tif len(src) > 0 {\n\t\ts.buf = [bufSize]byte{}\n\t\tcopy(s.buf[:], src)\n\t\ts.xorKeyStreamBlocks(s.buf[:], s.buf[:])\n\t\ts.len = bufSize - copy(dst, s.buf[:])\n\t}\n}\n\nfunc (s *Cipher) xorKeyStreamBlocksGeneric(dst, src []byte) {\n\tif len(dst) != len(src) || len(dst)%blockSize != 0 {\n\t\tpanic(\"chacha20: internal error: wrong dst and/or src length\")\n\t}\n\n\t// To generate each block of key stream, the initial cipher state\n\t// (represented below) is passed through 20 rounds of shuffling,\n\t// alternatively applying quarterRounds by columns (like 1, 5, 9, 13)\n\t// or by diagonals (like 1, 6, 11, 12).\n\t//\n\t//      0:cccccccc   1:cccccccc   2:cccccccc   3:cccccccc\n\t//      4:kkkkkkkk   5:kkkkkkkk   6:kkkkkkkk   7:kkkkkkkk\n\t//      8:kkkkkkkk   9:kkkkkkkk  10:kkkkkkkk  11:kkkkkkkk\n\t//     12:bbbbbbbb  13:nnnnnnnn  14:nnnnnnnn  15:nnnnnnnn\n\t//\n\t//            c=constant k=key b=blockcount n=nonce\n\tvar (\n\t\tc0, c1, c2, c3   = j0, j1, j2, j3\n\t\tc4, c5, c6, c7   = s.key[0], s.key[1], s.key[2], s.key[3]\n\t\tc8, c9, c10, c11 = s.key[4], s.key[5], s.key[6], s.key[7]\n\t\t_, c13, c14, c15 = s.counter, s.nonce[0], s.nonce[1], s.nonce[2]\n\t)\n\n\t// Three quarters of the first round don't depend on the counter, so we can\n\t// calculate them here, and reuse them for multiple blocks in the loop, and\n\t// for future XORKeyStream invocations.\n\tif !s.precompDone {\n\t\ts.p1, s.p5, s.p9, s.p13 = quarterRound(c1, c5, c9, c13)\n\t\ts.p2, s.p6, s.p10, s.p14 = quarterRound(c2, c6, c10, c14)\n\t\ts.p3, s.p7, s.p11, s.p15 = quarterRound(c3, c7, c11, c15)\n\t\ts.precompDone = true\n\t}\n\n\t// A condition of len(src) > 0 would be sufficient, but this also\n\t// acts as a bounds check elimination hint.\n\tfor len(src) >= 64 && len(dst) >= 64 {\n\t\t// The remainder of the first column round.\n\t\tfcr0, fcr4, fcr8, fcr12 := quarterRound(c0, c4, c8, s.counter)\n\n\t\t// The second diagonal round.\n\t\tx0, x5, x10, x15 := quarterRound(fcr0, s.p5, s.p10, s.p15)\n\t\tx1, x6, x11, x12 := quarterRound(s.p1, s.p6, s.p11, fcr12)\n\t\tx2, x7, x8, x13 := quarterRound(s.p2, s.p7, fcr8, s.p13)\n\t\tx3, x4, x9, x14 := quarterRound(s.p3, fcr4, s.p9, s.p14)\n\n\t\t// The remaining 18 rounds.\n\t\tfor i := 0; i < 9; i++ {\n\t\t\t// Column round.\n\t\t\tx0, x4, x8, x12 = quarterRound(x0, x4, x8, x12)\n\t\t\tx1, x5, x9, x13 = quarterRound(x1, x5, x9, x13)\n\t\t\tx2, x6, x10, x14 = quarterRound(x2, x6, x10, x14)\n\t\t\tx3, x7, x11, x15 = quarterRound(x3, x7, x11, x15)\n\n\t\t\t// Diagonal round.\n\t\t\tx0, x5, x10, x15 = quarterRound(x0, x5, x10, x15)\n\t\t\tx1, x6, x11, x12 = quarterRound(x1, x6, x11, x12)\n\t\t\tx2, x7, x8, x13 = quarterRound(x2, x7, x8, x13)\n\t\t\tx3, x4, x9, x14 = quarterRound(x3, x4, x9, x14)\n\t\t}\n\n\t\t// Add back the initial state to generate the key stream, then\n\t\t// XOR the key stream with the source and write out the result.\n\t\taddXor(dst[0:4], src[0:4], x0, c0)\n\t\taddXor(dst[4:8], src[4:8], x1, c1)\n\t\taddXor(dst[8:12], src[8:12], x2, c2)\n\t\taddXor(dst[12:16], src[12:16], x3, c3)\n\t\taddXor(dst[16:20], src[16:20], x4, c4)\n\t\taddXor(dst[20:24], src[20:24], x5, c5)\n\t\taddXor(dst[24:28], src[24:28], x6, c6)\n\t\taddXor(dst[28:32], src[28:32], x7, c7)\n\t\taddXor(dst[32:36], src[32:36], x8, c8)\n\t\taddXor(dst[36:40], src[36:40], x9, c9)\n\t\taddXor(dst[40:44], src[40:44], x10, c10)\n\t\taddXor(dst[44:48], src[44:48], x11, c11)\n\t\taddXor(dst[48:52], src[48:52], x12, s.counter)\n\t\taddXor(dst[52:56], src[52:56], x13, c13)\n\t\taddXor(dst[56:60], src[56:60], x14, c14)\n\t\taddXor(dst[60:64], src[60:64], x15, c15)\n\n\t\ts.counter += 1\n\n\t\tsrc, dst = src[blockSize:], dst[blockSize:]\n\t}\n}\n\n// HChaCha20 uses the ChaCha20 core to generate a derived key from a 32 bytes\n// key and a 16 bytes nonce. It returns an error if key or nonce have any other\n// length. It is used as part of the XChaCha20 construction.\nfunc HChaCha20(key, nonce []byte) ([]byte, error) {\n\t// This function is split into a wrapper so that the slice allocation will\n\t// be inlined, and depending on how the caller uses the return value, won't\n\t// escape to the heap.\n\tout := make([]byte, 32)\n\treturn hChaCha20(out, key, nonce)\n}\n\nfunc hChaCha20(out, key, nonce []byte) ([]byte, error) {\n\tif len(key) != KeySize {\n\t\treturn nil, errors.New(\"chacha20: wrong HChaCha20 key size\")\n\t}\n\tif len(nonce) != 16 {\n\t\treturn nil, errors.New(\"chacha20: wrong HChaCha20 nonce size\")\n\t}\n\n\tx0, x1, x2, x3 := j0, j1, j2, j3\n\tx4 := binary.LittleEndian.Uint32(key[0:4])\n\tx5 := binary.LittleEndian.Uint32(key[4:8])\n\tx6 := binary.LittleEndian.Uint32(key[8:12])\n\tx7 := binary.LittleEndian.Uint32(key[12:16])\n\tx8 := binary.LittleEndian.Uint32(key[16:20])\n\tx9 := binary.LittleEndian.Uint32(key[20:24])\n\tx10 := binary.LittleEndian.Uint32(key[24:28])\n\tx11 := binary.LittleEndian.Uint32(key[28:32])\n\tx12 := binary.LittleEndian.Uint32(nonce[0:4])\n\tx13 := binary.LittleEndian.Uint32(nonce[4:8])\n\tx14 := binary.LittleEndian.Uint32(nonce[8:12])\n\tx15 := binary.LittleEndian.Uint32(nonce[12:16])\n\n\tfor i := 0; i < 10; i++ {\n\t\t// Diagonal round.\n\t\tx0, x4, x8, x12 = quarterRound(x0, x4, x8, x12)\n\t\tx1, x5, x9, x13 = quarterRound(x1, x5, x9, x13)\n\t\tx2, x6, x10, x14 = quarterRound(x2, x6, x10, x14)\n\t\tx3, x7, x11, x15 = quarterRound(x3, x7, x11, x15)\n\n\t\t// Column round.\n\t\tx0, x5, x10, x15 = quarterRound(x0, x5, x10, x15)\n\t\tx1, x6, x11, x12 = quarterRound(x1, x6, x11, x12)\n\t\tx2, x7, x8, x13 = quarterRound(x2, x7, x8, x13)\n\t\tx3, x4, x9, x14 = quarterRound(x3, x4, x9, x14)\n\t}\n\n\t_ = out[31] // bounds check elimination hint\n\tbinary.LittleEndian.PutUint32(out[0:4], x0)\n\tbinary.LittleEndian.PutUint32(out[4:8], x1)\n\tbinary.LittleEndian.PutUint32(out[8:12], x2)\n\tbinary.LittleEndian.PutUint32(out[12:16], x3)\n\tbinary.LittleEndian.PutUint32(out[16:20], x12)\n\tbinary.LittleEndian.PutUint32(out[20:24], x13)\n\tbinary.LittleEndian.PutUint32(out[24:28], x14)\n\tbinary.LittleEndian.PutUint32(out[28:32], x15)\n\treturn out, nil\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/crypto/chacha20/chacha_noasm.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (!arm64 && !s390x && !ppc64 && !ppc64le) || !gc || purego\n\npackage chacha20\n\nconst bufSize = blockSize\n\nfunc (s *Cipher) xorKeyStreamBlocks(dst, src []byte) {\n\ts.xorKeyStreamBlocksGeneric(dst, src)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/crypto/chacha20/chacha_ppc64x.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gc && !purego && (ppc64 || ppc64le)\n\npackage chacha20\n\nconst bufSize = 256\n\n//go:noescape\nfunc chaCha20_ctr32_vsx(out, inp *byte, len int, key *[8]uint32, counter *uint32)\n\nfunc (c *Cipher) xorKeyStreamBlocks(dst, src []byte) {\n\tchaCha20_ctr32_vsx(&dst[0], &src[0], len(src), &c.key, &c.counter)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/crypto/chacha20/chacha_ppc64x.s",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Based on CRYPTOGAMS code with the following comment:\n// # ====================================================================\n// # Written by Andy Polyakov <appro@openssl.org> for the OpenSSL\n// # project. The module is, however, dual licensed under OpenSSL and\n// # CRYPTOGAMS licenses depending on where you obtain it. For further\n// # details see http://www.openssl.org/~appro/cryptogams/.\n// # ====================================================================\n\n// Code for the perl script that generates the ppc64 assembler\n// can be found in the cryptogams repository at the link below. It is based on\n// the original from openssl.\n\n// https://github.com/dot-asm/cryptogams/commit/a60f5b50ed908e91\n\n// The differences in this and the original implementation are\n// due to the calling conventions and initialization of constants.\n\n//go:build gc && !purego && (ppc64 || ppc64le)\n\n#include \"textflag.h\"\n\n#define OUT  R3\n#define INP  R4\n#define LEN  R5\n#define KEY  R6\n#define CNT  R7\n#define TMP  R15\n\n#define CONSTBASE  R16\n#define BLOCKS R17\n\n// for VPERMXOR\n#define MASK  R18\n\nDATA consts<>+0x00(SB)/4, $0x61707865\nDATA consts<>+0x04(SB)/4, $0x3320646e\nDATA consts<>+0x08(SB)/4, $0x79622d32\nDATA consts<>+0x0c(SB)/4, $0x6b206574\nDATA consts<>+0x10(SB)/4, $0x00000001\nDATA consts<>+0x14(SB)/4, $0x00000000\nDATA consts<>+0x18(SB)/4, $0x00000000\nDATA consts<>+0x1c(SB)/4, $0x00000000\nDATA consts<>+0x20(SB)/4, $0x00000004\nDATA consts<>+0x24(SB)/4, $0x00000000\nDATA consts<>+0x28(SB)/4, $0x00000000\nDATA consts<>+0x2c(SB)/4, $0x00000000\nDATA consts<>+0x30(SB)/4, $0x0e0f0c0d\nDATA consts<>+0x34(SB)/4, $0x0a0b0809\nDATA consts<>+0x38(SB)/4, $0x06070405\nDATA consts<>+0x3c(SB)/4, $0x02030001\nDATA consts<>+0x40(SB)/4, $0x0d0e0f0c\nDATA consts<>+0x44(SB)/4, $0x090a0b08\nDATA consts<>+0x48(SB)/4, $0x05060704\nDATA consts<>+0x4c(SB)/4, $0x01020300\nDATA consts<>+0x50(SB)/4, $0x61707865\nDATA consts<>+0x54(SB)/4, $0x61707865\nDATA consts<>+0x58(SB)/4, $0x61707865\nDATA consts<>+0x5c(SB)/4, $0x61707865\nDATA consts<>+0x60(SB)/4, $0x3320646e\nDATA consts<>+0x64(SB)/4, $0x3320646e\nDATA consts<>+0x68(SB)/4, $0x3320646e\nDATA consts<>+0x6c(SB)/4, $0x3320646e\nDATA consts<>+0x70(SB)/4, $0x79622d32\nDATA consts<>+0x74(SB)/4, $0x79622d32\nDATA consts<>+0x78(SB)/4, $0x79622d32\nDATA consts<>+0x7c(SB)/4, $0x79622d32\nDATA consts<>+0x80(SB)/4, $0x6b206574\nDATA consts<>+0x84(SB)/4, $0x6b206574\nDATA consts<>+0x88(SB)/4, $0x6b206574\nDATA consts<>+0x8c(SB)/4, $0x6b206574\nDATA consts<>+0x90(SB)/4, $0x00000000\nDATA consts<>+0x94(SB)/4, $0x00000001\nDATA consts<>+0x98(SB)/4, $0x00000002\nDATA consts<>+0x9c(SB)/4, $0x00000003\nDATA consts<>+0xa0(SB)/4, $0x11223300\nDATA consts<>+0xa4(SB)/4, $0x55667744\nDATA consts<>+0xa8(SB)/4, $0x99aabb88\nDATA consts<>+0xac(SB)/4, $0xddeeffcc\nDATA consts<>+0xb0(SB)/4, $0x22330011\nDATA consts<>+0xb4(SB)/4, $0x66774455\nDATA consts<>+0xb8(SB)/4, $0xaabb8899\nDATA consts<>+0xbc(SB)/4, $0xeeffccdd\nGLOBL consts<>(SB), RODATA, $0xc0\n\n#ifdef GOARCH_ppc64\n#define BE_XXBRW_INIT() \\\n\t\tLVSL (R0)(R0), V24 \\\n\t\tVSPLTISB $3, V25   \\\n\t\tVXOR V24, V25, V24 \\\n\n#define BE_XXBRW(vr) VPERM vr, vr, V24, vr\n#else\n#define BE_XXBRW_INIT()\n#define BE_XXBRW(vr)\n#endif\n\n//func chaCha20_ctr32_vsx(out, inp *byte, len int, key *[8]uint32, counter *uint32)\nTEXT ·chaCha20_ctr32_vsx(SB),NOSPLIT,$64-40\n\tMOVD out+0(FP), OUT\n\tMOVD inp+8(FP), INP\n\tMOVD len+16(FP), LEN\n\tMOVD key+24(FP), KEY\n\tMOVD counter+32(FP), CNT\n\n\t// Addressing for constants\n\tMOVD $consts<>+0x00(SB), CONSTBASE\n\tMOVD $16, R8\n\tMOVD $32, R9\n\tMOVD $48, R10\n\tMOVD $64, R11\n\tSRD $6, LEN, BLOCKS\n\t// for VPERMXOR\n\tMOVD $consts<>+0xa0(SB), MASK\n\tMOVD $16, R20\n\t// V16\n\tLXVW4X (CONSTBASE)(R0), VS48\n\tADD $80,CONSTBASE\n\n\t// Load key into V17,V18\n\tLXVW4X (KEY)(R0), VS49\n\tLXVW4X (KEY)(R8), VS50\n\n\t// Load CNT, NONCE into V19\n\tLXVW4X (CNT)(R0), VS51\n\n\t// Clear V27\n\tVXOR V27, V27, V27\n\n\tBE_XXBRW_INIT()\n\n\t// V28\n\tLXVW4X (CONSTBASE)(R11), VS60\n\n\t// Load mask constants for VPERMXOR\n\tLXVW4X (MASK)(R0), V20\n\tLXVW4X (MASK)(R20), V21\n\n\t// splat slot from V19 -> V26\n\tVSPLTW $0, V19, V26\n\n\tVSLDOI $4, V19, V27, V19\n\tVSLDOI $12, V27, V19, V19\n\n\tVADDUWM V26, V28, V26\n\n\tMOVD $10, R14\n\tMOVD R14, CTR\n\tPCALIGN $16\nloop_outer_vsx:\n\t// V0, V1, V2, V3\n\tLXVW4X (R0)(CONSTBASE), VS32\n\tLXVW4X (R8)(CONSTBASE), VS33\n\tLXVW4X (R9)(CONSTBASE), VS34\n\tLXVW4X (R10)(CONSTBASE), VS35\n\n\t// splat values from V17, V18 into V4-V11\n\tVSPLTW $0, V17, V4\n\tVSPLTW $1, V17, V5\n\tVSPLTW $2, V17, V6\n\tVSPLTW $3, V17, V7\n\tVSPLTW $0, V18, V8\n\tVSPLTW $1, V18, V9\n\tVSPLTW $2, V18, V10\n\tVSPLTW $3, V18, V11\n\n\t// VOR\n\tVOR V26, V26, V12\n\n\t// splat values from V19 -> V13, V14, V15\n\tVSPLTW $1, V19, V13\n\tVSPLTW $2, V19, V14\n\tVSPLTW $3, V19, V15\n\n\t// splat   const values\n\tVSPLTISW $-16, V27\n\tVSPLTISW $12, V28\n\tVSPLTISW $8, V29\n\tVSPLTISW $7, V30\n\tPCALIGN $16\nloop_vsx:\n\tVADDUWM V0, V4, V0\n\tVADDUWM V1, V5, V1\n\tVADDUWM V2, V6, V2\n\tVADDUWM V3, V7, V3\n\n\tVPERMXOR V12, V0, V21, V12\n\tVPERMXOR V13, V1, V21, V13\n\tVPERMXOR V14, V2, V21, V14\n\tVPERMXOR V15, V3, V21, V15\n\n\tVADDUWM V8, V12, V8\n\tVADDUWM V9, V13, V9\n\tVADDUWM V10, V14, V10\n\tVADDUWM V11, V15, V11\n\n\tVXOR V4, V8, V4\n\tVXOR V5, V9, V5\n\tVXOR V6, V10, V6\n\tVXOR V7, V11, V7\n\n\tVRLW V4, V28, V4\n\tVRLW V5, V28, V5\n\tVRLW V6, V28, V6\n\tVRLW V7, V28, V7\n\n\tVADDUWM V0, V4, V0\n\tVADDUWM V1, V5, V1\n\tVADDUWM V2, V6, V2\n\tVADDUWM V3, V7, V3\n\n\tVPERMXOR V12, V0, V20, V12\n\tVPERMXOR V13, V1, V20, V13\n\tVPERMXOR V14, V2, V20, V14\n\tVPERMXOR V15, V3, V20, V15\n\n\tVADDUWM V8, V12, V8\n\tVADDUWM V9, V13, V9\n\tVADDUWM V10, V14, V10\n\tVADDUWM V11, V15, V11\n\n\tVXOR V4, V8, V4\n\tVXOR V5, V9, V5\n\tVXOR V6, V10, V6\n\tVXOR V7, V11, V7\n\n\tVRLW V4, V30, V4\n\tVRLW V5, V30, V5\n\tVRLW V6, V30, V6\n\tVRLW V7, V30, V7\n\n\tVADDUWM V0, V5, V0\n\tVADDUWM V1, V6, V1\n\tVADDUWM V2, V7, V2\n\tVADDUWM V3, V4, V3\n\n\tVPERMXOR V15, V0, V21, V15\n\tVPERMXOR V12, V1, V21, V12\n\tVPERMXOR V13, V2, V21, V13\n\tVPERMXOR V14, V3, V21, V14\n\n\tVADDUWM V10, V15, V10\n\tVADDUWM V11, V12, V11\n\tVADDUWM V8, V13, V8\n\tVADDUWM V9, V14, V9\n\n\tVXOR V5, V10, V5\n\tVXOR V6, V11, V6\n\tVXOR V7, V8, V7\n\tVXOR V4, V9, V4\n\n\tVRLW V5, V28, V5\n\tVRLW V6, V28, V6\n\tVRLW V7, V28, V7\n\tVRLW V4, V28, V4\n\n\tVADDUWM V0, V5, V0\n\tVADDUWM V1, V6, V1\n\tVADDUWM V2, V7, V2\n\tVADDUWM V3, V4, V3\n\n\tVPERMXOR V15, V0, V20, V15\n\tVPERMXOR V12, V1, V20, V12\n\tVPERMXOR V13, V2, V20, V13\n\tVPERMXOR V14, V3, V20, V14\n\n\tVADDUWM V10, V15, V10\n\tVADDUWM V11, V12, V11\n\tVADDUWM V8, V13, V8\n\tVADDUWM V9, V14, V9\n\n\tVXOR V5, V10, V5\n\tVXOR V6, V11, V6\n\tVXOR V7, V8, V7\n\tVXOR V4, V9, V4\n\n\tVRLW V5, V30, V5\n\tVRLW V6, V30, V6\n\tVRLW V7, V30, V7\n\tVRLW V4, V30, V4\n\tBDNZ   loop_vsx\n\n\tVADDUWM V12, V26, V12\n\n\tVMRGEW V0, V1, V27\n\tVMRGEW V2, V3, V28\n\n\tVMRGOW V0, V1, V0\n\tVMRGOW V2, V3, V2\n\n\tVMRGEW V4, V5, V29\n\tVMRGEW V6, V7, V30\n\n\tXXPERMDI VS32, VS34, $0, VS33\n\tXXPERMDI VS32, VS34, $3, VS35\n\tXXPERMDI VS59, VS60, $0, VS32\n\tXXPERMDI VS59, VS60, $3, VS34\n\n\tVMRGOW V4, V5, V4\n\tVMRGOW V6, V7, V6\n\n\tVMRGEW V8, V9, V27\n\tVMRGEW V10, V11, V28\n\n\tXXPERMDI VS36, VS38, $0, VS37\n\tXXPERMDI VS36, VS38, $3, VS39\n\tXXPERMDI VS61, VS62, $0, VS36\n\tXXPERMDI VS61, VS62, $3, VS38\n\n\tVMRGOW V8, V9, V8\n\tVMRGOW V10, V11, V10\n\n\tVMRGEW V12, V13, V29\n\tVMRGEW V14, V15, V30\n\n\tXXPERMDI VS40, VS42, $0, VS41\n\tXXPERMDI VS40, VS42, $3, VS43\n\tXXPERMDI VS59, VS60, $0, VS40\n\tXXPERMDI VS59, VS60, $3, VS42\n\n\tVMRGOW V12, V13, V12\n\tVMRGOW V14, V15, V14\n\n\tVSPLTISW $4, V27\n\tVADDUWM V26, V27, V26\n\n\tXXPERMDI VS44, VS46, $0, VS45\n\tXXPERMDI VS44, VS46, $3, VS47\n\tXXPERMDI VS61, VS62, $0, VS44\n\tXXPERMDI VS61, VS62, $3, VS46\n\n\tVADDUWM V0, V16, V0\n\tVADDUWM V4, V17, V4\n\tVADDUWM V8, V18, V8\n\tVADDUWM V12, V19, V12\n\n\tBE_XXBRW(V0)\n\tBE_XXBRW(V4)\n\tBE_XXBRW(V8)\n\tBE_XXBRW(V12)\n\n\tCMPU LEN, $64\n\tBLT tail_vsx\n\n\t// Bottom of loop\n\tLXVW4X (INP)(R0), VS59\n\tLXVW4X (INP)(R8), VS60\n\tLXVW4X (INP)(R9), VS61\n\tLXVW4X (INP)(R10), VS62\n\n\tVXOR V27, V0, V27\n\tVXOR V28, V4, V28\n\tVXOR V29, V8, V29\n\tVXOR V30, V12, V30\n\n\tSTXVW4X VS59, (OUT)(R0)\n\tSTXVW4X VS60, (OUT)(R8)\n\tADD     $64, INP\n\tSTXVW4X VS61, (OUT)(R9)\n\tADD     $-64, LEN\n\tSTXVW4X VS62, (OUT)(R10)\n\tADD     $64, OUT\n\tBEQ     done_vsx\n\n\tVADDUWM V1, V16, V0\n\tVADDUWM V5, V17, V4\n\tVADDUWM V9, V18, V8\n\tVADDUWM V13, V19, V12\n\n\tBE_XXBRW(V0)\n\tBE_XXBRW(V4)\n\tBE_XXBRW(V8)\n\tBE_XXBRW(V12)\n\n\tCMPU  LEN, $64\n\tBLT   tail_vsx\n\n\tLXVW4X (INP)(R0), VS59\n\tLXVW4X (INP)(R8), VS60\n\tLXVW4X (INP)(R9), VS61\n\tLXVW4X (INP)(R10), VS62\n\n\tVXOR V27, V0, V27\n\tVXOR V28, V4, V28\n\tVXOR V29, V8, V29\n\tVXOR V30, V12, V30\n\n\tSTXVW4X VS59, (OUT)(R0)\n\tSTXVW4X VS60, (OUT)(R8)\n\tADD     $64, INP\n\tSTXVW4X VS61, (OUT)(R9)\n\tADD     $-64, LEN\n\tSTXVW4X VS62, (OUT)(V10)\n\tADD     $64, OUT\n\tBEQ     done_vsx\n\n\tVADDUWM V2, V16, V0\n\tVADDUWM V6, V17, V4\n\tVADDUWM V10, V18, V8\n\tVADDUWM V14, V19, V12\n\n\tBE_XXBRW(V0)\n\tBE_XXBRW(V4)\n\tBE_XXBRW(V8)\n\tBE_XXBRW(V12)\n\n\tCMPU LEN, $64\n\tBLT  tail_vsx\n\n\tLXVW4X (INP)(R0), VS59\n\tLXVW4X (INP)(R8), VS60\n\tLXVW4X (INP)(R9), VS61\n\tLXVW4X (INP)(R10), VS62\n\n\tVXOR V27, V0, V27\n\tVXOR V28, V4, V28\n\tVXOR V29, V8, V29\n\tVXOR V30, V12, V30\n\n\tSTXVW4X VS59, (OUT)(R0)\n\tSTXVW4X VS60, (OUT)(R8)\n\tADD     $64, INP\n\tSTXVW4X VS61, (OUT)(R9)\n\tADD     $-64, LEN\n\tSTXVW4X VS62, (OUT)(R10)\n\tADD     $64, OUT\n\tBEQ     done_vsx\n\n\tVADDUWM V3, V16, V0\n\tVADDUWM V7, V17, V4\n\tVADDUWM V11, V18, V8\n\tVADDUWM V15, V19, V12\n\n\tBE_XXBRW(V0)\n\tBE_XXBRW(V4)\n\tBE_XXBRW(V8)\n\tBE_XXBRW(V12)\n\n\tCMPU  LEN, $64\n\tBLT   tail_vsx\n\n\tLXVW4X (INP)(R0), VS59\n\tLXVW4X (INP)(R8), VS60\n\tLXVW4X (INP)(R9), VS61\n\tLXVW4X (INP)(R10), VS62\n\n\tVXOR V27, V0, V27\n\tVXOR V28, V4, V28\n\tVXOR V29, V8, V29\n\tVXOR V30, V12, V30\n\n\tSTXVW4X VS59, (OUT)(R0)\n\tSTXVW4X VS60, (OUT)(R8)\n\tADD     $64, INP\n\tSTXVW4X VS61, (OUT)(R9)\n\tADD     $-64, LEN\n\tSTXVW4X VS62, (OUT)(R10)\n\tADD     $64, OUT\n\n\tMOVD $10, R14\n\tMOVD R14, CTR\n\tBNE  loop_outer_vsx\n\ndone_vsx:\n\t// Increment counter by number of 64 byte blocks\n\tMOVWZ (CNT), R14\n\tADD  BLOCKS, R14\n\tMOVWZ R14, (CNT)\n\tRET\n\ntail_vsx:\n\tADD  $32, R1, R11\n\tMOVD LEN, CTR\n\n\t// Save values on stack to copy from\n\tSTXVW4X VS32, (R11)(R0)\n\tSTXVW4X VS36, (R11)(R8)\n\tSTXVW4X VS40, (R11)(R9)\n\tSTXVW4X VS44, (R11)(R10)\n\tADD $-1, R11, R12\n\tADD $-1, INP\n\tADD $-1, OUT\n\tPCALIGN $16\nlooptail_vsx:\n\t// Copying the result to OUT\n\t// in bytes.\n\tMOVBZU 1(R12), KEY\n\tMOVBZU 1(INP), TMP\n\tXOR    KEY, TMP, KEY\n\tMOVBU  KEY, 1(OUT)\n\tBDNZ   looptail_vsx\n\n\t// Clear the stack values\n\tSTXVW4X VS48, (R11)(R0)\n\tSTXVW4X VS48, (R11)(R8)\n\tSTXVW4X VS48, (R11)(R9)\n\tSTXVW4X VS48, (R11)(R10)\n\tBR      done_vsx\n"
  },
  {
    "path": "tests/vendor/golang.org/x/crypto/chacha20/chacha_s390x.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gc && !purego\n\npackage chacha20\n\nimport \"golang.org/x/sys/cpu\"\n\nvar haveAsm = cpu.S390X.HasVX\n\nconst bufSize = 256\n\n// xorKeyStreamVX is an assembly implementation of XORKeyStream. It must only\n// be called when the vector facility is available. Implementation in asm_s390x.s.\n//\n//go:noescape\nfunc xorKeyStreamVX(dst, src []byte, key *[8]uint32, nonce *[3]uint32, counter *uint32)\n\nfunc (c *Cipher) xorKeyStreamBlocks(dst, src []byte) {\n\tif cpu.S390X.HasVX {\n\t\txorKeyStreamVX(dst, src, &c.key, &c.nonce, &c.counter)\n\t} else {\n\t\tc.xorKeyStreamBlocksGeneric(dst, src)\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/crypto/chacha20/chacha_s390x.s",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gc && !purego\n\n#include \"go_asm.h\"\n#include \"textflag.h\"\n\n// This is an implementation of the ChaCha20 encryption algorithm as\n// specified in RFC 7539. It uses vector instructions to compute\n// 4 keystream blocks in parallel (256 bytes) which are then XORed\n// with the bytes in the input slice.\n\nGLOBL ·constants<>(SB), RODATA|NOPTR, $32\n// BSWAP: swap bytes in each 4-byte element\nDATA ·constants<>+0x00(SB)/4, $0x03020100\nDATA ·constants<>+0x04(SB)/4, $0x07060504\nDATA ·constants<>+0x08(SB)/4, $0x0b0a0908\nDATA ·constants<>+0x0c(SB)/4, $0x0f0e0d0c\n// J0: [j0, j1, j2, j3]\nDATA ·constants<>+0x10(SB)/4, $0x61707865\nDATA ·constants<>+0x14(SB)/4, $0x3320646e\nDATA ·constants<>+0x18(SB)/4, $0x79622d32\nDATA ·constants<>+0x1c(SB)/4, $0x6b206574\n\n#define BSWAP V5\n#define J0    V6\n#define KEY0  V7\n#define KEY1  V8\n#define NONCE V9\n#define CTR   V10\n#define M0    V11\n#define M1    V12\n#define M2    V13\n#define M3    V14\n#define INC   V15\n#define X0    V16\n#define X1    V17\n#define X2    V18\n#define X3    V19\n#define X4    V20\n#define X5    V21\n#define X6    V22\n#define X7    V23\n#define X8    V24\n#define X9    V25\n#define X10   V26\n#define X11   V27\n#define X12   V28\n#define X13   V29\n#define X14   V30\n#define X15   V31\n\n#define NUM_ROUNDS 20\n\n#define ROUND4(a0, a1, a2, a3, b0, b1, b2, b3, c0, c1, c2, c3, d0, d1, d2, d3) \\\n\tVAF    a1, a0, a0  \\\n\tVAF    b1, b0, b0  \\\n\tVAF    c1, c0, c0  \\\n\tVAF    d1, d0, d0  \\\n\tVX     a0, a2, a2  \\\n\tVX     b0, b2, b2  \\\n\tVX     c0, c2, c2  \\\n\tVX     d0, d2, d2  \\\n\tVERLLF $16, a2, a2 \\\n\tVERLLF $16, b2, b2 \\\n\tVERLLF $16, c2, c2 \\\n\tVERLLF $16, d2, d2 \\\n\tVAF    a2, a3, a3  \\\n\tVAF    b2, b3, b3  \\\n\tVAF    c2, c3, c3  \\\n\tVAF    d2, d3, d3  \\\n\tVX     a3, a1, a1  \\\n\tVX     b3, b1, b1  \\\n\tVX     c3, c1, c1  \\\n\tVX     d3, d1, d1  \\\n\tVERLLF $12, a1, a1 \\\n\tVERLLF $12, b1, b1 \\\n\tVERLLF $12, c1, c1 \\\n\tVERLLF $12, d1, d1 \\\n\tVAF    a1, a0, a0  \\\n\tVAF    b1, b0, b0  \\\n\tVAF    c1, c0, c0  \\\n\tVAF    d1, d0, d0  \\\n\tVX     a0, a2, a2  \\\n\tVX     b0, b2, b2  \\\n\tVX     c0, c2, c2  \\\n\tVX     d0, d2, d2  \\\n\tVERLLF $8, a2, a2  \\\n\tVERLLF $8, b2, b2  \\\n\tVERLLF $8, c2, c2  \\\n\tVERLLF $8, d2, d2  \\\n\tVAF    a2, a3, a3  \\\n\tVAF    b2, b3, b3  \\\n\tVAF    c2, c3, c3  \\\n\tVAF    d2, d3, d3  \\\n\tVX     a3, a1, a1  \\\n\tVX     b3, b1, b1  \\\n\tVX     c3, c1, c1  \\\n\tVX     d3, d1, d1  \\\n\tVERLLF $7, a1, a1  \\\n\tVERLLF $7, b1, b1  \\\n\tVERLLF $7, c1, c1  \\\n\tVERLLF $7, d1, d1\n\n#define PERMUTE(mask, v0, v1, v2, v3) \\\n\tVPERM v0, v0, mask, v0 \\\n\tVPERM v1, v1, mask, v1 \\\n\tVPERM v2, v2, mask, v2 \\\n\tVPERM v3, v3, mask, v3\n\n#define ADDV(x, v0, v1, v2, v3) \\\n\tVAF x, v0, v0 \\\n\tVAF x, v1, v1 \\\n\tVAF x, v2, v2 \\\n\tVAF x, v3, v3\n\n#define XORV(off, dst, src, v0, v1, v2, v3) \\\n\tVLM  off(src), M0, M3          \\\n\tPERMUTE(BSWAP, v0, v1, v2, v3) \\\n\tVX   v0, M0, M0                \\\n\tVX   v1, M1, M1                \\\n\tVX   v2, M2, M2                \\\n\tVX   v3, M3, M3                \\\n\tVSTM M0, M3, off(dst)\n\n#define SHUFFLE(a, b, c, d, t, u, v, w) \\\n\tVMRHF a, c, t \\ // t = {a[0], c[0], a[1], c[1]}\n\tVMRHF b, d, u \\ // u = {b[0], d[0], b[1], d[1]}\n\tVMRLF a, c, v \\ // v = {a[2], c[2], a[3], c[3]}\n\tVMRLF b, d, w \\ // w = {b[2], d[2], b[3], d[3]}\n\tVMRHF t, u, a \\ // a = {a[0], b[0], c[0], d[0]}\n\tVMRLF t, u, b \\ // b = {a[1], b[1], c[1], d[1]}\n\tVMRHF v, w, c \\ // c = {a[2], b[2], c[2], d[2]}\n\tVMRLF v, w, d // d = {a[3], b[3], c[3], d[3]}\n\n// func xorKeyStreamVX(dst, src []byte, key *[8]uint32, nonce *[3]uint32, counter *uint32)\nTEXT ·xorKeyStreamVX(SB), NOSPLIT, $0\n\tMOVD $·constants<>(SB), R1\n\tMOVD dst+0(FP), R2         // R2=&dst[0]\n\tLMG  src+24(FP), R3, R4    // R3=&src[0] R4=len(src)\n\tMOVD key+48(FP), R5        // R5=key\n\tMOVD nonce+56(FP), R6      // R6=nonce\n\tMOVD counter+64(FP), R7    // R7=counter\n\n\t// load BSWAP and J0\n\tVLM (R1), BSWAP, J0\n\n\t// setup\n\tMOVD  $95, R0\n\tVLM   (R5), KEY0, KEY1\n\tVLL   R0, (R6), NONCE\n\tVZERO M0\n\tVLEIB $7, $32, M0\n\tVSRLB M0, NONCE, NONCE\n\n\t// initialize counter values\n\tVLREPF (R7), CTR\n\tVZERO  INC\n\tVLEIF  $1, $1, INC\n\tVLEIF  $2, $2, INC\n\tVLEIF  $3, $3, INC\n\tVAF    INC, CTR, CTR\n\tVREPIF $4, INC\n\nchacha:\n\tVREPF $0, J0, X0\n\tVREPF $1, J0, X1\n\tVREPF $2, J0, X2\n\tVREPF $3, J0, X3\n\tVREPF $0, KEY0, X4\n\tVREPF $1, KEY0, X5\n\tVREPF $2, KEY0, X6\n\tVREPF $3, KEY0, X7\n\tVREPF $0, KEY1, X8\n\tVREPF $1, KEY1, X9\n\tVREPF $2, KEY1, X10\n\tVREPF $3, KEY1, X11\n\tVLR   CTR, X12\n\tVREPF $1, NONCE, X13\n\tVREPF $2, NONCE, X14\n\tVREPF $3, NONCE, X15\n\n\tMOVD $(NUM_ROUNDS/2), R1\n\nloop:\n\tROUND4(X0, X4, X12,  X8, X1, X5, X13,  X9, X2, X6, X14, X10, X3, X7, X15, X11)\n\tROUND4(X0, X5, X15, X10, X1, X6, X12, X11, X2, X7, X13, X8,  X3, X4, X14, X9)\n\n\tADD $-1, R1\n\tBNE loop\n\n\t// decrement length\n\tADD $-256, R4\n\n\t// rearrange vectors\n\tSHUFFLE(X0, X1, X2, X3, M0, M1, M2, M3)\n\tADDV(J0, X0, X1, X2, X3)\n\tSHUFFLE(X4, X5, X6, X7, M0, M1, M2, M3)\n\tADDV(KEY0, X4, X5, X6, X7)\n\tSHUFFLE(X8, X9, X10, X11, M0, M1, M2, M3)\n\tADDV(KEY1, X8, X9, X10, X11)\n\tVAF CTR, X12, X12\n\tSHUFFLE(X12, X13, X14, X15, M0, M1, M2, M3)\n\tADDV(NONCE, X12, X13, X14, X15)\n\n\t// increment counters\n\tVAF INC, CTR, CTR\n\n\t// xor keystream with plaintext\n\tXORV(0*64, R2, R3, X0, X4,  X8, X12)\n\tXORV(1*64, R2, R3, X1, X5,  X9, X13)\n\tXORV(2*64, R2, R3, X2, X6, X10, X14)\n\tXORV(3*64, R2, R3, X3, X7, X11, X15)\n\n\t// increment pointers\n\tMOVD $256(R2), R2\n\tMOVD $256(R3), R3\n\n\tCMPBNE  R4, $0, chacha\n\n\tVSTEF $0, CTR, (R7)\n\tRET\n"
  },
  {
    "path": "tests/vendor/golang.org/x/crypto/chacha20/xor.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found src the LICENSE file.\n\npackage chacha20\n\nimport \"runtime\"\n\n// Platforms that have fast unaligned 32-bit little endian accesses.\nconst unaligned = runtime.GOARCH == \"386\" ||\n\truntime.GOARCH == \"amd64\" ||\n\truntime.GOARCH == \"arm64\" ||\n\truntime.GOARCH == \"ppc64le\" ||\n\truntime.GOARCH == \"s390x\"\n\n// addXor reads a little endian uint32 from src, XORs it with (a + b) and\n// places the result in little endian byte order in dst.\nfunc addXor(dst, src []byte, a, b uint32) {\n\t_, _ = src[3], dst[3] // bounds check elimination hint\n\tif unaligned {\n\t\t// The compiler should optimize this code into\n\t\t// 32-bit unaligned little endian loads and stores.\n\t\t// TODO: delete once the compiler does a reliably\n\t\t// good job with the generic code below.\n\t\t// See issue #25111 for more details.\n\t\tv := uint32(src[0])\n\t\tv |= uint32(src[1]) << 8\n\t\tv |= uint32(src[2]) << 16\n\t\tv |= uint32(src[3]) << 24\n\t\tv ^= a + b\n\t\tdst[0] = byte(v)\n\t\tdst[1] = byte(v >> 8)\n\t\tdst[2] = byte(v >> 16)\n\t\tdst[3] = byte(v >> 24)\n\t} else {\n\t\ta += b\n\t\tdst[0] = src[0] ^ byte(a)\n\t\tdst[1] = src[1] ^ byte(a>>8)\n\t\tdst[2] = src[2] ^ byte(a>>16)\n\t\tdst[3] = src[3] ^ byte(a>>24)\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/crypto/curve25519/curve25519.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package curve25519 provides an implementation of the X25519 function, which\n// performs scalar multiplication on the elliptic curve known as Curve25519\n// according to [RFC 7748].\n//\n// The curve25519 package is a wrapper for the X25519 implementation in the\n// crypto/ecdh package. It is [frozen] and is not accepting new features.\n//\n// [RFC 7748]: https://datatracker.ietf.org/doc/html/rfc7748\n// [frozen]: https://go.dev/wiki/Frozen\npackage curve25519\n\nimport \"crypto/ecdh\"\n\n// ScalarMult sets dst to the product scalar * point.\n//\n// Deprecated: when provided a low-order point, ScalarMult will set dst to all\n// zeroes, irrespective of the scalar. Instead, use the X25519 function, which\n// will return an error.\nfunc ScalarMult(dst, scalar, point *[32]byte) {\n\tif _, err := x25519(dst, scalar[:], point[:]); err != nil {\n\t\t// The only error condition for x25519 when the inputs are 32 bytes long\n\t\t// is if the output would have been the all-zero value.\n\t\tfor i := range dst {\n\t\t\tdst[i] = 0\n\t\t}\n\t}\n}\n\n// ScalarBaseMult sets dst to the product scalar * base where base is the\n// standard generator.\n//\n// It is recommended to use the X25519 function with Basepoint instead, as\n// copying into fixed size arrays can lead to unexpected bugs.\nfunc ScalarBaseMult(dst, scalar *[32]byte) {\n\tcurve := ecdh.X25519()\n\tpriv, err := curve.NewPrivateKey(scalar[:])\n\tif err != nil {\n\t\tpanic(\"curve25519: \" + err.Error())\n\t}\n\tcopy(dst[:], priv.PublicKey().Bytes())\n}\n\nconst (\n\t// ScalarSize is the size of the scalar input to X25519.\n\tScalarSize = 32\n\t// PointSize is the size of the point input to X25519.\n\tPointSize = 32\n)\n\n// Basepoint is the canonical Curve25519 generator.\nvar Basepoint []byte\n\nvar basePoint = [32]byte{9}\n\nfunc init() { Basepoint = basePoint[:] }\n\n// X25519 returns the result of the scalar multiplication (scalar * point),\n// according to RFC 7748, Section 5. scalar, point and the return value are\n// slices of 32 bytes.\n//\n// scalar can be generated at random, for example with crypto/rand. point should\n// be either Basepoint or the output of another X25519 call.\n//\n// If point is Basepoint (but not if it's a different slice with the same\n// contents) a precomputed implementation might be used for performance.\nfunc X25519(scalar, point []byte) ([]byte, error) {\n\t// Outline the body of function, to let the allocation be inlined in the\n\t// caller, and possibly avoid escaping to the heap.\n\tvar dst [32]byte\n\treturn x25519(&dst, scalar, point)\n}\n\nfunc x25519(dst *[32]byte, scalar, point []byte) ([]byte, error) {\n\tcurve := ecdh.X25519()\n\tpub, err := curve.NewPublicKey(point)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tpriv, err := curve.NewPrivateKey(scalar)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tout, err := priv.ECDH(pub)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tcopy(dst[:], out)\n\treturn dst[:], nil\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/crypto/internal/alias/alias.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build !purego\n\n// Package alias implements memory aliasing tests.\npackage alias\n\nimport \"unsafe\"\n\n// AnyOverlap reports whether x and y share memory at any (not necessarily\n// corresponding) index. The memory beyond the slice length is ignored.\nfunc AnyOverlap(x, y []byte) bool {\n\treturn len(x) > 0 && len(y) > 0 &&\n\t\tuintptr(unsafe.Pointer(&x[0])) <= uintptr(unsafe.Pointer(&y[len(y)-1])) &&\n\t\tuintptr(unsafe.Pointer(&y[0])) <= uintptr(unsafe.Pointer(&x[len(x)-1]))\n}\n\n// InexactOverlap reports whether x and y share memory at any non-corresponding\n// index. The memory beyond the slice length is ignored. Note that x and y can\n// have different lengths and still not have any inexact overlap.\n//\n// InexactOverlap can be used to implement the requirements of the crypto/cipher\n// AEAD, Block, BlockMode and Stream interfaces.\nfunc InexactOverlap(x, y []byte) bool {\n\tif len(x) == 0 || len(y) == 0 || &x[0] == &y[0] {\n\t\treturn false\n\t}\n\treturn AnyOverlap(x, y)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/crypto/internal/alias/alias_purego.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build purego\n\n// Package alias implements memory aliasing tests.\npackage alias\n\n// This is the Google App Engine standard variant based on reflect\n// because the unsafe package and cgo are disallowed.\n\nimport \"reflect\"\n\n// AnyOverlap reports whether x and y share memory at any (not necessarily\n// corresponding) index. The memory beyond the slice length is ignored.\nfunc AnyOverlap(x, y []byte) bool {\n\treturn len(x) > 0 && len(y) > 0 &&\n\t\treflect.ValueOf(&x[0]).Pointer() <= reflect.ValueOf(&y[len(y)-1]).Pointer() &&\n\t\treflect.ValueOf(&y[0]).Pointer() <= reflect.ValueOf(&x[len(x)-1]).Pointer()\n}\n\n// InexactOverlap reports whether x and y share memory at any non-corresponding\n// index. The memory beyond the slice length is ignored. Note that x and y can\n// have different lengths and still not have any inexact overlap.\n//\n// InexactOverlap can be used to implement the requirements of the crypto/cipher\n// AEAD, Block, BlockMode and Stream interfaces.\nfunc InexactOverlap(x, y []byte) bool {\n\tif len(x) == 0 || len(y) == 0 || &x[0] == &y[0] {\n\t\treturn false\n\t}\n\treturn AnyOverlap(x, y)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/crypto/internal/poly1305/mac_noasm.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (!amd64 && !loong64 && !ppc64le && !ppc64 && !s390x) || !gc || purego\n\npackage poly1305\n\ntype mac struct{ macGeneric }\n"
  },
  {
    "path": "tests/vendor/golang.org/x/crypto/internal/poly1305/poly1305.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package poly1305 implements Poly1305 one-time message authentication code as\n// specified in https://cr.yp.to/mac/poly1305-20050329.pdf.\n//\n// Poly1305 is a fast, one-time authentication function. It is infeasible for an\n// attacker to generate an authenticator for a message without the key. However, a\n// key must only be used for a single message. Authenticating two different\n// messages with the same key allows an attacker to forge authenticators for other\n// messages with the same key.\n//\n// Poly1305 was originally coupled with AES in order to make Poly1305-AES. AES was\n// used with a fixed key in order to generate one-time keys from an nonce.\n// However, in this package AES isn't used and the one-time key is specified\n// directly.\npackage poly1305\n\nimport \"crypto/subtle\"\n\n// TagSize is the size, in bytes, of a poly1305 authenticator.\nconst TagSize = 16\n\n// Sum generates an authenticator for msg using a one-time key and puts the\n// 16-byte result into out. Authenticating two different messages with the same\n// key allows an attacker to forge messages at will.\nfunc Sum(out *[16]byte, m []byte, key *[32]byte) {\n\th := New(key)\n\th.Write(m)\n\th.Sum(out[:0])\n}\n\n// Verify returns true if mac is a valid authenticator for m with the given key.\nfunc Verify(mac *[16]byte, m []byte, key *[32]byte) bool {\n\tvar tmp [16]byte\n\tSum(&tmp, m, key)\n\treturn subtle.ConstantTimeCompare(tmp[:], mac[:]) == 1\n}\n\n// New returns a new MAC computing an authentication\n// tag of all data written to it with the given key.\n// This allows writing the message progressively instead\n// of passing it as a single slice. Common users should use\n// the Sum function instead.\n//\n// The key must be unique for each message, as authenticating\n// two different messages with the same key allows an attacker\n// to forge messages at will.\nfunc New(key *[32]byte) *MAC {\n\tm := &MAC{}\n\tinitialize(key, &m.macState)\n\treturn m\n}\n\n// MAC is an io.Writer computing an authentication tag\n// of the data written to it.\n//\n// MAC cannot be used like common hash.Hash implementations,\n// because using a poly1305 key twice breaks its security.\n// Therefore writing data to a running MAC after calling\n// Sum or Verify causes it to panic.\ntype MAC struct {\n\tmac // platform-dependent implementation\n\n\tfinalized bool\n}\n\n// Size returns the number of bytes Sum will return.\nfunc (h *MAC) Size() int { return TagSize }\n\n// Write adds more data to the running message authentication code.\n// It never returns an error.\n//\n// It must not be called after the first call of Sum or Verify.\nfunc (h *MAC) Write(p []byte) (n int, err error) {\n\tif h.finalized {\n\t\tpanic(\"poly1305: write to MAC after Sum or Verify\")\n\t}\n\treturn h.mac.Write(p)\n}\n\n// Sum computes the authenticator of all data written to the\n// message authentication code.\nfunc (h *MAC) Sum(b []byte) []byte {\n\tvar mac [TagSize]byte\n\th.mac.Sum(&mac)\n\th.finalized = true\n\treturn append(b, mac[:]...)\n}\n\n// Verify returns whether the authenticator of all data written to\n// the message authentication code matches the expected value.\nfunc (h *MAC) Verify(expected []byte) bool {\n\tvar mac [TagSize]byte\n\th.mac.Sum(&mac)\n\th.finalized = true\n\treturn subtle.ConstantTimeCompare(expected, mac[:]) == 1\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/crypto/internal/poly1305/sum_amd64.s",
    "content": "// Code generated by command: go run sum_amd64_asm.go -out ../sum_amd64.s -pkg poly1305. DO NOT EDIT.\n\n//go:build gc && !purego\n\n// func update(state *macState, msg []byte)\nTEXT ·update(SB), $0-32\n\tMOVQ state+0(FP), DI\n\tMOVQ msg_base+8(FP), SI\n\tMOVQ msg_len+16(FP), R15\n\tMOVQ (DI), R8\n\tMOVQ 8(DI), R9\n\tMOVQ 16(DI), R10\n\tMOVQ 24(DI), R11\n\tMOVQ 32(DI), R12\n\tCMPQ R15, $0x10\n\tJB   bytes_between_0_and_15\n\nloop:\n\tADDQ (SI), R8\n\tADCQ 8(SI), R9\n\tADCQ $0x01, R10\n\tLEAQ 16(SI), SI\n\nmultiply:\n\tMOVQ  R11, AX\n\tMULQ  R8\n\tMOVQ  AX, BX\n\tMOVQ  DX, CX\n\tMOVQ  R11, AX\n\tMULQ  R9\n\tADDQ  AX, CX\n\tADCQ  $0x00, DX\n\tMOVQ  R11, R13\n\tIMULQ R10, R13\n\tADDQ  DX, R13\n\tMOVQ  R12, AX\n\tMULQ  R8\n\tADDQ  AX, CX\n\tADCQ  $0x00, DX\n\tMOVQ  DX, R8\n\tMOVQ  R12, R14\n\tIMULQ R10, R14\n\tMOVQ  R12, AX\n\tMULQ  R9\n\tADDQ  AX, R13\n\tADCQ  DX, R14\n\tADDQ  R8, R13\n\tADCQ  $0x00, R14\n\tMOVQ  BX, R8\n\tMOVQ  CX, R9\n\tMOVQ  R13, R10\n\tANDQ  $0x03, R10\n\tMOVQ  R13, BX\n\tANDQ  $-4, BX\n\tADDQ  BX, R8\n\tADCQ  R14, R9\n\tADCQ  $0x00, R10\n\tSHRQ  $0x02, R14, R13\n\tSHRQ  $0x02, R14\n\tADDQ  R13, R8\n\tADCQ  R14, R9\n\tADCQ  $0x00, R10\n\tSUBQ  $0x10, R15\n\tCMPQ  R15, $0x10\n\tJAE   loop\n\nbytes_between_0_and_15:\n\tTESTQ R15, R15\n\tJZ    done\n\tMOVQ  $0x00000001, BX\n\tXORQ  CX, CX\n\tXORQ  R13, R13\n\tADDQ  R15, SI\n\nflush_buffer:\n\tSHLQ $0x08, BX, CX\n\tSHLQ $0x08, BX\n\tMOVB -1(SI), R13\n\tXORQ R13, BX\n\tDECQ SI\n\tDECQ R15\n\tJNZ  flush_buffer\n\tADDQ BX, R8\n\tADCQ CX, R9\n\tADCQ $0x00, R10\n\tMOVQ $0x00000010, R15\n\tJMP  multiply\n\ndone:\n\tMOVQ R8, (DI)\n\tMOVQ R9, 8(DI)\n\tMOVQ R10, 16(DI)\n\tRET\n"
  },
  {
    "path": "tests/vendor/golang.org/x/crypto/internal/poly1305/sum_asm.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gc && !purego && (amd64 || loong64 || ppc64 || ppc64le)\n\npackage poly1305\n\n//go:noescape\nfunc update(state *macState, msg []byte)\n\n// mac is a wrapper for macGeneric that redirects calls that would have gone to\n// updateGeneric to update.\n//\n// Its Write and Sum methods are otherwise identical to the macGeneric ones, but\n// using function pointers would carry a major performance cost.\ntype mac struct{ macGeneric }\n\nfunc (h *mac) Write(p []byte) (int, error) {\n\tnn := len(p)\n\tif h.offset > 0 {\n\t\tn := copy(h.buffer[h.offset:], p)\n\t\tif h.offset+n < TagSize {\n\t\t\th.offset += n\n\t\t\treturn nn, nil\n\t\t}\n\t\tp = p[n:]\n\t\th.offset = 0\n\t\tupdate(&h.macState, h.buffer[:])\n\t}\n\tif n := len(p) - (len(p) % TagSize); n > 0 {\n\t\tupdate(&h.macState, p[:n])\n\t\tp = p[n:]\n\t}\n\tif len(p) > 0 {\n\t\th.offset += copy(h.buffer[h.offset:], p)\n\t}\n\treturn nn, nil\n}\n\nfunc (h *mac) Sum(out *[16]byte) {\n\tstate := h.macState\n\tif h.offset > 0 {\n\t\tupdate(&state, h.buffer[:h.offset])\n\t}\n\tfinalize(out, &state.h, &state.s)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/crypto/internal/poly1305/sum_generic.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// This file provides the generic implementation of Sum and MAC. Other files\n// might provide optimized assembly implementations of some of this code.\n\npackage poly1305\n\nimport (\n\t\"encoding/binary\"\n\t\"math/bits\"\n)\n\n// Poly1305 [RFC 7539] is a relatively simple algorithm: the authentication tag\n// for a 64 bytes message is approximately\n//\n//     s + m[0:16] * r⁴ + m[16:32] * r³ + m[32:48] * r² + m[48:64] * r  mod  2¹³⁰ - 5\n//\n// for some secret r and s. It can be computed sequentially like\n//\n//     for len(msg) > 0:\n//         h += read(msg, 16)\n//         h *= r\n//         h %= 2¹³⁰ - 5\n//     return h + s\n//\n// All the complexity is about doing performant constant-time math on numbers\n// larger than any available numeric type.\n\nfunc sumGeneric(out *[TagSize]byte, msg []byte, key *[32]byte) {\n\th := newMACGeneric(key)\n\th.Write(msg)\n\th.Sum(out)\n}\n\nfunc newMACGeneric(key *[32]byte) macGeneric {\n\tm := macGeneric{}\n\tinitialize(key, &m.macState)\n\treturn m\n}\n\n// macState holds numbers in saturated 64-bit little-endian limbs. That is,\n// the value of [x0, x1, x2] is x[0] + x[1] * 2⁶⁴ + x[2] * 2¹²⁸.\ntype macState struct {\n\t// h is the main accumulator. It is to be interpreted modulo 2¹³⁰ - 5, but\n\t// can grow larger during and after rounds. It must, however, remain below\n\t// 2 * (2¹³⁰ - 5).\n\th [3]uint64\n\t// r and s are the private key components.\n\tr [2]uint64\n\ts [2]uint64\n}\n\ntype macGeneric struct {\n\tmacState\n\n\tbuffer [TagSize]byte\n\toffset int\n}\n\n// Write splits the incoming message into TagSize chunks, and passes them to\n// update. It buffers incomplete chunks.\nfunc (h *macGeneric) Write(p []byte) (int, error) {\n\tnn := len(p)\n\tif h.offset > 0 {\n\t\tn := copy(h.buffer[h.offset:], p)\n\t\tif h.offset+n < TagSize {\n\t\t\th.offset += n\n\t\t\treturn nn, nil\n\t\t}\n\t\tp = p[n:]\n\t\th.offset = 0\n\t\tupdateGeneric(&h.macState, h.buffer[:])\n\t}\n\tif n := len(p) - (len(p) % TagSize); n > 0 {\n\t\tupdateGeneric(&h.macState, p[:n])\n\t\tp = p[n:]\n\t}\n\tif len(p) > 0 {\n\t\th.offset += copy(h.buffer[h.offset:], p)\n\t}\n\treturn nn, nil\n}\n\n// Sum flushes the last incomplete chunk from the buffer, if any, and generates\n// the MAC output. It does not modify its state, in order to allow for multiple\n// calls to Sum, even if no Write is allowed after Sum.\nfunc (h *macGeneric) Sum(out *[TagSize]byte) {\n\tstate := h.macState\n\tif h.offset > 0 {\n\t\tupdateGeneric(&state, h.buffer[:h.offset])\n\t}\n\tfinalize(out, &state.h, &state.s)\n}\n\n// [rMask0, rMask1] is the specified Poly1305 clamping mask in little-endian. It\n// clears some bits of the secret coefficient to make it possible to implement\n// multiplication more efficiently.\nconst (\n\trMask0 = 0x0FFFFFFC0FFFFFFF\n\trMask1 = 0x0FFFFFFC0FFFFFFC\n)\n\n// initialize loads the 256-bit key into the two 128-bit secret values r and s.\nfunc initialize(key *[32]byte, m *macState) {\n\tm.r[0] = binary.LittleEndian.Uint64(key[0:8]) & rMask0\n\tm.r[1] = binary.LittleEndian.Uint64(key[8:16]) & rMask1\n\tm.s[0] = binary.LittleEndian.Uint64(key[16:24])\n\tm.s[1] = binary.LittleEndian.Uint64(key[24:32])\n}\n\n// uint128 holds a 128-bit number as two 64-bit limbs, for use with the\n// bits.Mul64 and bits.Add64 intrinsics.\ntype uint128 struct {\n\tlo, hi uint64\n}\n\nfunc mul64(a, b uint64) uint128 {\n\thi, lo := bits.Mul64(a, b)\n\treturn uint128{lo, hi}\n}\n\nfunc add128(a, b uint128) uint128 {\n\tlo, c := bits.Add64(a.lo, b.lo, 0)\n\thi, c := bits.Add64(a.hi, b.hi, c)\n\tif c != 0 {\n\t\tpanic(\"poly1305: unexpected overflow\")\n\t}\n\treturn uint128{lo, hi}\n}\n\nfunc shiftRightBy2(a uint128) uint128 {\n\ta.lo = a.lo>>2 | (a.hi&3)<<62\n\ta.hi = a.hi >> 2\n\treturn a\n}\n\n// updateGeneric absorbs msg into the state.h accumulator. For each chunk m of\n// 128 bits of message, it computes\n//\n//\th₊ = (h + m) * r  mod  2¹³⁰ - 5\n//\n// If the msg length is not a multiple of TagSize, it assumes the last\n// incomplete chunk is the final one.\nfunc updateGeneric(state *macState, msg []byte) {\n\th0, h1, h2 := state.h[0], state.h[1], state.h[2]\n\tr0, r1 := state.r[0], state.r[1]\n\n\tfor len(msg) > 0 {\n\t\tvar c uint64\n\n\t\t// For the first step, h + m, we use a chain of bits.Add64 intrinsics.\n\t\t// The resulting value of h might exceed 2¹³⁰ - 5, but will be partially\n\t\t// reduced at the end of the multiplication below.\n\t\t//\n\t\t// The spec requires us to set a bit just above the message size, not to\n\t\t// hide leading zeroes. For full chunks, that's 1 << 128, so we can just\n\t\t// add 1 to the most significant (2¹²⁸) limb, h2.\n\t\tif len(msg) >= TagSize {\n\t\t\th0, c = bits.Add64(h0, binary.LittleEndian.Uint64(msg[0:8]), 0)\n\t\t\th1, c = bits.Add64(h1, binary.LittleEndian.Uint64(msg[8:16]), c)\n\t\t\th2 += c + 1\n\n\t\t\tmsg = msg[TagSize:]\n\t\t} else {\n\t\t\tvar buf [TagSize]byte\n\t\t\tcopy(buf[:], msg)\n\t\t\tbuf[len(msg)] = 1\n\n\t\t\th0, c = bits.Add64(h0, binary.LittleEndian.Uint64(buf[0:8]), 0)\n\t\t\th1, c = bits.Add64(h1, binary.LittleEndian.Uint64(buf[8:16]), c)\n\t\t\th2 += c\n\n\t\t\tmsg = nil\n\t\t}\n\n\t\t// Multiplication of big number limbs is similar to elementary school\n\t\t// columnar multiplication. Instead of digits, there are 64-bit limbs.\n\t\t//\n\t\t// We are multiplying a 3 limbs number, h, by a 2 limbs number, r.\n\t\t//\n\t\t//                        h2    h1    h0  x\n\t\t//                              r1    r0  =\n\t\t//                       ----------------\n\t\t//                      h2r0  h1r0  h0r0     <-- individual 128-bit products\n\t\t//            +   h2r1  h1r1  h0r1\n\t\t//               ------------------------\n\t\t//                 m3    m2    m1    m0      <-- result in 128-bit overlapping limbs\n\t\t//               ------------------------\n\t\t//         m3.hi m2.hi m1.hi m0.hi           <-- carry propagation\n\t\t//     +         m3.lo m2.lo m1.lo m0.lo\n\t\t//        -------------------------------\n\t\t//           t4    t3    t2    t1    t0      <-- final result in 64-bit limbs\n\t\t//\n\t\t// The main difference from pen-and-paper multiplication is that we do\n\t\t// carry propagation in a separate step, as if we wrote two digit sums\n\t\t// at first (the 128-bit limbs), and then carried the tens all at once.\n\n\t\th0r0 := mul64(h0, r0)\n\t\th1r0 := mul64(h1, r0)\n\t\th2r0 := mul64(h2, r0)\n\t\th0r1 := mul64(h0, r1)\n\t\th1r1 := mul64(h1, r1)\n\t\th2r1 := mul64(h2, r1)\n\n\t\t// Since h2 is known to be at most 7 (5 + 1 + 1), and r0 and r1 have their\n\t\t// top 4 bits cleared by rMask{0,1}, we know that their product is not going\n\t\t// to overflow 64 bits, so we can ignore the high part of the products.\n\t\t//\n\t\t// This also means that the product doesn't have a fifth limb (t4).\n\t\tif h2r0.hi != 0 {\n\t\t\tpanic(\"poly1305: unexpected overflow\")\n\t\t}\n\t\tif h2r1.hi != 0 {\n\t\t\tpanic(\"poly1305: unexpected overflow\")\n\t\t}\n\n\t\tm0 := h0r0\n\t\tm1 := add128(h1r0, h0r1) // These two additions don't overflow thanks again\n\t\tm2 := add128(h2r0, h1r1) // to the 4 masked bits at the top of r0 and r1.\n\t\tm3 := h2r1\n\n\t\tt0 := m0.lo\n\t\tt1, c := bits.Add64(m1.lo, m0.hi, 0)\n\t\tt2, c := bits.Add64(m2.lo, m1.hi, c)\n\t\tt3, _ := bits.Add64(m3.lo, m2.hi, c)\n\n\t\t// Now we have the result as 4 64-bit limbs, and we need to reduce it\n\t\t// modulo 2¹³⁰ - 5. The special shape of this Crandall prime lets us do\n\t\t// a cheap partial reduction according to the reduction identity\n\t\t//\n\t\t//     c * 2¹³⁰ + n  =  c * 5 + n  mod  2¹³⁰ - 5\n\t\t//\n\t\t// because 2¹³⁰ = 5 mod 2¹³⁰ - 5. Partial reduction since the result is\n\t\t// likely to be larger than 2¹³⁰ - 5, but still small enough to fit the\n\t\t// assumptions we make about h in the rest of the code.\n\t\t//\n\t\t// See also https://speakerdeck.com/gtank/engineering-prime-numbers?slide=23\n\n\t\t// We split the final result at the 2¹³⁰ mark into h and cc, the carry.\n\t\t// Note that the carry bits are effectively shifted left by 2, in other\n\t\t// words, cc = c * 4 for the c in the reduction identity.\n\t\th0, h1, h2 = t0, t1, t2&maskLow2Bits\n\t\tcc := uint128{t2 & maskNotLow2Bits, t3}\n\n\t\t// To add c * 5 to h, we first add cc = c * 4, and then add (cc >> 2) = c.\n\n\t\th0, c = bits.Add64(h0, cc.lo, 0)\n\t\th1, c = bits.Add64(h1, cc.hi, c)\n\t\th2 += c\n\n\t\tcc = shiftRightBy2(cc)\n\n\t\th0, c = bits.Add64(h0, cc.lo, 0)\n\t\th1, c = bits.Add64(h1, cc.hi, c)\n\t\th2 += c\n\n\t\t// h2 is at most 3 + 1 + 1 = 5, making the whole of h at most\n\t\t//\n\t\t//     5 * 2¹²⁸ + (2¹²⁸ - 1) = 6 * 2¹²⁸ - 1\n\t}\n\n\tstate.h[0], state.h[1], state.h[2] = h0, h1, h2\n}\n\nconst (\n\tmaskLow2Bits    uint64 = 0x0000000000000003\n\tmaskNotLow2Bits uint64 = ^maskLow2Bits\n)\n\n// select64 returns x if v == 1 and y if v == 0, in constant time.\nfunc select64(v, x, y uint64) uint64 { return ^(v-1)&x | (v-1)&y }\n\n// [p0, p1, p2] is 2¹³⁰ - 5 in little endian order.\nconst (\n\tp0 = 0xFFFFFFFFFFFFFFFB\n\tp1 = 0xFFFFFFFFFFFFFFFF\n\tp2 = 0x0000000000000003\n)\n\n// finalize completes the modular reduction of h and computes\n//\n//\tout = h + s  mod  2¹²⁸\nfunc finalize(out *[TagSize]byte, h *[3]uint64, s *[2]uint64) {\n\th0, h1, h2 := h[0], h[1], h[2]\n\n\t// After the partial reduction in updateGeneric, h might be more than\n\t// 2¹³⁰ - 5, but will be less than 2 * (2¹³⁰ - 5). To complete the reduction\n\t// in constant time, we compute t = h - (2¹³⁰ - 5), and select h as the\n\t// result if the subtraction underflows, and t otherwise.\n\n\thMinusP0, b := bits.Sub64(h0, p0, 0)\n\thMinusP1, b := bits.Sub64(h1, p1, b)\n\t_, b = bits.Sub64(h2, p2, b)\n\n\t// h = h if h < p else h - p\n\th0 = select64(b, h0, hMinusP0)\n\th1 = select64(b, h1, hMinusP1)\n\n\t// Finally, we compute the last Poly1305 step\n\t//\n\t//     tag = h + s  mod  2¹²⁸\n\t//\n\t// by just doing a wide addition with the 128 low bits of h and discarding\n\t// the overflow.\n\th0, c := bits.Add64(h0, s[0], 0)\n\th1, _ = bits.Add64(h1, s[1], c)\n\n\tbinary.LittleEndian.PutUint64(out[0:8], h0)\n\tbinary.LittleEndian.PutUint64(out[8:16], h1)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/crypto/internal/poly1305/sum_loong64.s",
    "content": "// Copyright 2025 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gc && !purego\n\n// func update(state *macState, msg []byte)\nTEXT ·update(SB), $0-32\n\tMOVV\tstate+0(FP), R4\n\tMOVV\tmsg_base+8(FP), R5\n\tMOVV\tmsg_len+16(FP), R6\n\n\tMOVV\t$0x10, R7\n\n\tMOVV\t(R4), R8\t// h0\n\tMOVV\t8(R4), R9\t// h1\n\tMOVV\t16(R4), R10\t// h2\n\tMOVV\t24(R4), R11\t// r0\n\tMOVV\t32(R4), R12\t// r1\n\n\tBLT\tR6, R7, bytes_between_0_and_15\n\nloop:\n\tMOVV\t(R5), R14\t// msg[0:8]\n\tMOVV\t8(R5), R16\t// msg[8:16]\n\tADDV\tR14, R8, R8\t// h0 (x1 + y1 = z1', if z1' < x1 then z1' overflow)\n\tADDV\tR16, R9, R27\n\tSGTU\tR14, R8, R24\t// h0.carry\n\tSGTU\tR9, R27, R28\n\tADDV\tR27, R24, R9\t// h1\n\tSGTU\tR27, R9, R24\n\tOR\tR24, R28, R24\t// h1.carry\n\tADDV\t$0x01, R24, R24\n\tADDV\tR10, R24, R10\t// h2\n\n\tADDV\t$16, R5, R5\t// msg = msg[16:]\n\nmultiply:\n\tMULV\tR8, R11, R14\t// h0r0.lo\n\tMULHVU\tR8, R11, R15\t// h0r0.hi\n\tMULV\tR9, R11, R13\t// h1r0.lo\n\tMULHVU\tR9, R11, R16\t// h1r0.hi\n\tADDV\tR13, R15, R15\n\tSGTU\tR13, R15, R24\n\tADDV\tR24, R16, R16\n\tMULV\tR10, R11, R25\n\tADDV\tR16, R25, R25\n\tMULV\tR8, R12, R13\t// h0r1.lo\n\tMULHVU\tR8, R12, R16\t// h0r1.hi\n\tADDV\tR13, R15, R15\n\tSGTU\tR13, R15, R24\n\tADDV\tR24, R16, R16\n\tMOVV\tR16, R8\n\tMULV\tR10, R12, R26\t// h2r1\n\tMULV\tR9, R12, R13\t// h1r1.lo\n\tMULHVU\tR9, R12, R16\t// h1r1.hi\n\tADDV\tR13, R25, R25\n\tADDV\tR16, R26, R27\n\tSGTU\tR13, R25, R24\n\tADDV\tR27, R24, R26\n\tADDV\tR8, R25, R25\n\tSGTU\tR8, R25, R24\n\tADDV\tR24, R26, R26\n\tAND\t$3, R25, R10\n\tAND\t$-4, R25, R17\n\tADDV\tR17, R14, R8\n\tADDV\tR26, R15, R27\n\tSGTU\tR17, R8, R24\n\tSGTU\tR26, R27, R28\n\tADDV\tR27, R24, R9\n\tSGTU\tR27, R9, R24\n\tOR\tR24, R28, R24\n\tADDV\tR24, R10, R10\n\tSLLV\t$62, R26, R27\n\tSRLV\t$2, R25, R28\n\tSRLV\t$2, R26, R26\n\tOR\tR27, R28, R25\n\tADDV\tR25, R8, R8\n\tADDV\tR26, R9, R27\n\tSGTU\tR25, R8, R24\n\tSGTU\tR26, R27, R28\n\tADDV\tR27, R24, R9\n\tSGTU\tR27, R9, R24\n\tOR\tR24, R28, R24\n\tADDV\tR24, R10, R10\n\n\tSUBV\t$16, R6, R6\n\tBGE\tR6, R7, loop\n\nbytes_between_0_and_15:\n\tBEQ\tR6, R0, done\n\tMOVV\t$1, R14\n\tXOR\tR15, R15\n\tADDV\tR6, R5, R5\n\nflush_buffer:\n\tMOVBU\t-1(R5), R25\n\tSRLV\t$56, R14, R24\n\tSLLV\t$8, R15, R28\n\tSLLV\t$8, R14, R14\n\tOR\tR24, R28, R15\n\tXOR\tR25, R14, R14\n\tSUBV\t$1, R6, R6\n\tSUBV\t$1, R5, R5\n\tBNE\tR6, R0, flush_buffer\n\n\tADDV\tR14, R8, R8\n\tSGTU\tR14, R8, R24\n\tADDV\tR15, R9, R27\n\tSGTU\tR15, R27, R28\n\tADDV\tR27, R24, R9\n\tSGTU\tR27, R9, R24\n\tOR\tR24, R28, R24\n\tADDV\tR10, R24, R10\n\n\tMOVV\t$16, R6\n\tJMP\tmultiply\n\ndone:\n\tMOVV\tR8, (R4)\n\tMOVV\tR9, 8(R4)\n\tMOVV\tR10, 16(R4)\n\tRET\n"
  },
  {
    "path": "tests/vendor/golang.org/x/crypto/internal/poly1305/sum_ppc64x.s",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gc && !purego && (ppc64 || ppc64le)\n\n#include \"textflag.h\"\n\n// This was ported from the amd64 implementation.\n\n#ifdef GOARCH_ppc64le\n#define LE_MOVD MOVD\n#define LE_MOVWZ MOVWZ\n#define LE_MOVHZ MOVHZ\n#else\n#define LE_MOVD MOVDBR\n#define LE_MOVWZ MOVWBR\n#define LE_MOVHZ MOVHBR\n#endif\n\n#define POLY1305_ADD(msg, h0, h1, h2, t0, t1, t2) \\\n\tLE_MOVD (msg)( R0), t0; \\\n\tLE_MOVD (msg)(R24), t1; \\\n\tMOVD $1, t2;     \\\n\tADDC t0, h0, h0; \\\n\tADDE t1, h1, h1; \\\n\tADDE t2, h2;     \\\n\tADD  $16, msg\n\n#define POLY1305_MUL(h0, h1, h2, r0, r1, t0, t1, t2, t3, t4, t5) \\\n\tMULLD  r0, h0, t0;  \\\n\tMULHDU r0, h0, t1;  \\\n\tMULLD  r0, h1, t4;  \\\n\tMULHDU r0, h1, t5;  \\\n\tADDC   t4, t1, t1;  \\\n\tMULLD  r0, h2, t2;  \\\n\tMULHDU r1, h0, t4;  \\\n\tMULLD  r1, h0, h0;  \\\n\tADDE   t5, t2, t2;  \\\n\tADDC   h0, t1, t1;  \\\n\tMULLD  h2, r1, t3;  \\\n\tADDZE  t4, h0;      \\\n\tMULHDU r1, h1, t5;  \\\n\tMULLD  r1, h1, t4;  \\\n\tADDC   t4, t2, t2;  \\\n\tADDE   t5, t3, t3;  \\\n\tADDC   h0, t2, t2;  \\\n\tMOVD   $-4, t4;     \\\n\tADDZE  t3;          \\\n\tRLDICL $0, t2, $62, h2; \\\n\tAND    t2, t4, h0;  \\\n\tADDC   t0, h0, h0;  \\\n\tADDE   t3, t1, h1;  \\\n\tSLD    $62, t3, t4; \\\n\tSRD    $2, t2;      \\\n\tADDZE  h2;          \\\n\tOR     t4, t2, t2;  \\\n\tSRD    $2, t3;      \\\n\tADDC   t2, h0, h0;  \\\n\tADDE   t3, h1, h1;  \\\n\tADDZE  h2\n\n// func update(state *[7]uint64, msg []byte)\nTEXT ·update(SB), $0-32\n\tMOVD state+0(FP), R3\n\tMOVD msg_base+8(FP), R4\n\tMOVD msg_len+16(FP), R5\n\n\tMOVD 0(R3), R8   // h0\n\tMOVD 8(R3), R9   // h1\n\tMOVD 16(R3), R10 // h2\n\tMOVD 24(R3), R11 // r0\n\tMOVD 32(R3), R12 // r1\n\n\tMOVD $8, R24\n\n\tCMP R5, $16\n\tBLT bytes_between_0_and_15\n\nloop:\n\tPOLY1305_ADD(R4, R8, R9, R10, R20, R21, R22)\n\n\tPCALIGN $16\nmultiply:\n\tPOLY1305_MUL(R8, R9, R10, R11, R12, R16, R17, R18, R14, R20, R21)\n\tADD $-16, R5\n\tCMP R5, $16\n\tBGE loop\n\nbytes_between_0_and_15:\n\tCMP  R5, $0\n\tBEQ  done\n\tMOVD $0, R16 // h0\n\tMOVD $0, R17 // h1\n\nflush_buffer:\n\tCMP R5, $8\n\tBLE just1\n\n\tMOVD $8, R21\n\tSUB  R21, R5, R21\n\n\t// Greater than 8 -- load the rightmost remaining bytes in msg\n\t// and put into R17 (h1)\n\tLE_MOVD (R4)(R21), R17\n\tMOVD $16, R22\n\n\t// Find the offset to those bytes\n\tSUB R5, R22, R22\n\tSLD $3, R22\n\n\t// Shift to get only the bytes in msg\n\tSRD R22, R17, R17\n\n\t// Put 1 at high end\n\tMOVD $1, R23\n\tSLD  $3, R21\n\tSLD  R21, R23, R23\n\tOR   R23, R17, R17\n\n\t// Remainder is 8\n\tMOVD $8, R5\n\njust1:\n\tCMP R5, $8\n\tBLT less8\n\n\t// Exactly 8\n\tLE_MOVD (R4), R16\n\n\tCMP R17, $0\n\n\t// Check if we've already set R17; if not\n\t// set 1 to indicate end of msg.\n\tBNE  carry\n\tMOVD $1, R17\n\tBR   carry\n\nless8:\n\tMOVD  $0, R16   // h0\n\tMOVD  $0, R22   // shift count\n\tCMP   R5, $4\n\tBLT   less4\n\tLE_MOVWZ (R4), R16\n\tADD   $4, R4\n\tADD   $-4, R5\n\tMOVD  $32, R22\n\nless4:\n\tCMP   R5, $2\n\tBLT   less2\n\tLE_MOVHZ (R4), R21\n\tSLD   R22, R21, R21\n\tOR    R16, R21, R16\n\tADD   $16, R22\n\tADD   $-2, R5\n\tADD   $2, R4\n\nless2:\n\tCMP   R5, $0\n\tBEQ   insert1\n\tMOVBZ (R4), R21\n\tSLD   R22, R21, R21\n\tOR    R16, R21, R16\n\tADD   $8, R22\n\ninsert1:\n\t// Insert 1 at end of msg\n\tMOVD $1, R21\n\tSLD  R22, R21, R21\n\tOR   R16, R21, R16\n\ncarry:\n\t// Add new values to h0, h1, h2\n\tADDC  R16, R8\n\tADDE  R17, R9\n\tADDZE R10, R10\n\tMOVD  $16, R5\n\tADD   R5, R4\n\tBR    multiply\n\ndone:\n\t// Save h0, h1, h2 in state\n\tMOVD R8, 0(R3)\n\tMOVD R9, 8(R3)\n\tMOVD R10, 16(R3)\n\tRET\n"
  },
  {
    "path": "tests/vendor/golang.org/x/crypto/internal/poly1305/sum_s390x.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gc && !purego\n\npackage poly1305\n\nimport (\n\t\"golang.org/x/sys/cpu\"\n)\n\n// updateVX is an assembly implementation of Poly1305 that uses vector\n// instructions. It must only be called if the vector facility (vx) is\n// available.\n//\n//go:noescape\nfunc updateVX(state *macState, msg []byte)\n\n// mac is a replacement for macGeneric that uses a larger buffer and redirects\n// calls that would have gone to updateGeneric to updateVX if the vector\n// facility is installed.\n//\n// A larger buffer is required for good performance because the vector\n// implementation has a higher fixed cost per call than the generic\n// implementation.\ntype mac struct {\n\tmacState\n\n\tbuffer [16 * TagSize]byte // size must be a multiple of block size (16)\n\toffset int\n}\n\nfunc (h *mac) Write(p []byte) (int, error) {\n\tnn := len(p)\n\tif h.offset > 0 {\n\t\tn := copy(h.buffer[h.offset:], p)\n\t\tif h.offset+n < len(h.buffer) {\n\t\t\th.offset += n\n\t\t\treturn nn, nil\n\t\t}\n\t\tp = p[n:]\n\t\th.offset = 0\n\t\tif cpu.S390X.HasVX {\n\t\t\tupdateVX(&h.macState, h.buffer[:])\n\t\t} else {\n\t\t\tupdateGeneric(&h.macState, h.buffer[:])\n\t\t}\n\t}\n\n\ttail := len(p) % len(h.buffer) // number of bytes to copy into buffer\n\tbody := len(p) - tail          // number of bytes to process now\n\tif body > 0 {\n\t\tif cpu.S390X.HasVX {\n\t\t\tupdateVX(&h.macState, p[:body])\n\t\t} else {\n\t\t\tupdateGeneric(&h.macState, p[:body])\n\t\t}\n\t}\n\th.offset = copy(h.buffer[:], p[body:]) // copy tail bytes - can be 0\n\treturn nn, nil\n}\n\nfunc (h *mac) Sum(out *[TagSize]byte) {\n\tstate := h.macState\n\tremainder := h.buffer[:h.offset]\n\n\t// Use the generic implementation if we have 2 or fewer blocks left\n\t// to sum. The vector implementation has a higher startup time.\n\tif cpu.S390X.HasVX && len(remainder) > 2*TagSize {\n\t\tupdateVX(&state, remainder)\n\t} else if len(remainder) > 0 {\n\t\tupdateGeneric(&state, remainder)\n\t}\n\tfinalize(out, &state.h, &state.s)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/crypto/internal/poly1305/sum_s390x.s",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gc && !purego\n\n#include \"textflag.h\"\n\n// This implementation of Poly1305 uses the vector facility (vx)\n// to process up to 2 blocks (32 bytes) per iteration using an\n// algorithm based on the one described in:\n//\n// NEON crypto, Daniel J. Bernstein & Peter Schwabe\n// https://cryptojedi.org/papers/neoncrypto-20120320.pdf\n//\n// This algorithm uses 5 26-bit limbs to represent a 130-bit\n// value. These limbs are, for the most part, zero extended and\n// placed into 64-bit vector register elements. Each vector\n// register is 128-bits wide and so holds 2 of these elements.\n// Using 26-bit limbs allows us plenty of headroom to accommodate\n// accumulations before and after multiplication without\n// overflowing either 32-bits (before multiplication) or 64-bits\n// (after multiplication).\n//\n// In order to parallelise the operations required to calculate\n// the sum we use two separate accumulators and then sum those\n// in an extra final step. For compatibility with the generic\n// implementation we perform this summation at the end of every\n// updateVX call.\n//\n// To use two accumulators we must multiply the message blocks\n// by r² rather than r. Only the final message block should be\n// multiplied by r.\n//\n// Example:\n//\n// We want to calculate the sum (h) for a 64 byte message (m):\n//\n//   h = m[0:16]r⁴ + m[16:32]r³ + m[32:48]r² + m[48:64]r\n//\n// To do this we split the calculation into the even indices\n// and odd indices of the message. These form our SIMD 'lanes':\n//\n//   h = m[ 0:16]r⁴ + m[32:48]r² +   <- lane 0\n//       m[16:32]r³ + m[48:64]r      <- lane 1\n//\n// To calculate this iteratively we refactor so that both lanes\n// are written in terms of r² and r:\n//\n//   h = (m[ 0:16]r² + m[32:48])r² + <- lane 0\n//       (m[16:32]r² + m[48:64])r    <- lane 1\n//                ^             ^\n//                |             coefficients for second iteration\n//                coefficients for first iteration\n//\n// So in this case we would have two iterations. In the first\n// both lanes are multiplied by r². In the second only the\n// first lane is multiplied by r² and the second lane is\n// instead multiplied by r. This gives use the odd and even\n// powers of r that we need from the original equation.\n//\n// Notation:\n//\n//   h - accumulator\n//   r - key\n//   m - message\n//\n//   [a, b]       - SIMD register holding two 64-bit values\n//   [a, b, c, d] - SIMD register holding four 32-bit values\n//   xᵢ[n]        - limb n of variable x with bit width i\n//\n// Limbs are expressed in little endian order, so for 26-bit\n// limbs x₂₆[4] will be the most significant limb and x₂₆[0]\n// will be the least significant limb.\n\n// masking constants\n#define MOD24 V0 // [0x0000000000ffffff, 0x0000000000ffffff] - mask low 24-bits\n#define MOD26 V1 // [0x0000000003ffffff, 0x0000000003ffffff] - mask low 26-bits\n\n// expansion constants (see EXPAND macro)\n#define EX0 V2\n#define EX1 V3\n#define EX2 V4\n\n// key (r², r or 1 depending on context)\n#define R_0 V5\n#define R_1 V6\n#define R_2 V7\n#define R_3 V8\n#define R_4 V9\n\n// precalculated coefficients (5r², 5r or 0 depending on context)\n#define R5_1 V10\n#define R5_2 V11\n#define R5_3 V12\n#define R5_4 V13\n\n// message block (m)\n#define M_0 V14\n#define M_1 V15\n#define M_2 V16\n#define M_3 V17\n#define M_4 V18\n\n// accumulator (h)\n#define H_0 V19\n#define H_1 V20\n#define H_2 V21\n#define H_3 V22\n#define H_4 V23\n\n// temporary registers (for short-lived values)\n#define T_0 V24\n#define T_1 V25\n#define T_2 V26\n#define T_3 V27\n#define T_4 V28\n\nGLOBL ·constants<>(SB), RODATA, $0x30\n// EX0\nDATA ·constants<>+0x00(SB)/8, $0x0006050403020100\nDATA ·constants<>+0x08(SB)/8, $0x1016151413121110\n// EX1\nDATA ·constants<>+0x10(SB)/8, $0x060c0b0a09080706\nDATA ·constants<>+0x18(SB)/8, $0x161c1b1a19181716\n// EX2\nDATA ·constants<>+0x20(SB)/8, $0x0d0d0d0d0d0f0e0d\nDATA ·constants<>+0x28(SB)/8, $0x1d1d1d1d1d1f1e1d\n\n// MULTIPLY multiplies each lane of f and g, partially reduced\n// modulo 2¹³⁰ - 5. The result, h, consists of partial products\n// in each lane that need to be reduced further to produce the\n// final result.\n//\n//   h₁₃₀ = (f₁₃₀g₁₃₀) % 2¹³⁰ + (5f₁₃₀g₁₃₀) / 2¹³⁰\n//\n// Note that the multiplication by 5 of the high bits is\n// achieved by precalculating the multiplication of four of the\n// g coefficients by 5. These are g51-g54.\n#define MULTIPLY(f0, f1, f2, f3, f4, g0, g1, g2, g3, g4, g51, g52, g53, g54, h0, h1, h2, h3, h4) \\\n\tVMLOF  f0, g0, h0        \\\n\tVMLOF  f0, g3, h3        \\\n\tVMLOF  f0, g1, h1        \\\n\tVMLOF  f0, g4, h4        \\\n\tVMLOF  f0, g2, h2        \\\n\tVMLOF  f1, g54, T_0      \\\n\tVMLOF  f1, g2, T_3       \\\n\tVMLOF  f1, g0, T_1       \\\n\tVMLOF  f1, g3, T_4       \\\n\tVMLOF  f1, g1, T_2       \\\n\tVMALOF f2, g53, h0, h0   \\\n\tVMALOF f2, g1, h3, h3    \\\n\tVMALOF f2, g54, h1, h1   \\\n\tVMALOF f2, g2, h4, h4    \\\n\tVMALOF f2, g0, h2, h2    \\\n\tVMALOF f3, g52, T_0, T_0 \\\n\tVMALOF f3, g0, T_3, T_3  \\\n\tVMALOF f3, g53, T_1, T_1 \\\n\tVMALOF f3, g1, T_4, T_4  \\\n\tVMALOF f3, g54, T_2, T_2 \\\n\tVMALOF f4, g51, h0, h0   \\\n\tVMALOF f4, g54, h3, h3   \\\n\tVMALOF f4, g52, h1, h1   \\\n\tVMALOF f4, g0, h4, h4    \\\n\tVMALOF f4, g53, h2, h2   \\\n\tVAG    T_0, h0, h0       \\\n\tVAG    T_3, h3, h3       \\\n\tVAG    T_1, h1, h1       \\\n\tVAG    T_4, h4, h4       \\\n\tVAG    T_2, h2, h2\n\n// REDUCE performs the following carry operations in four\n// stages, as specified in Bernstein & Schwabe:\n//\n//   1: h₂₆[0]->h₂₆[1] h₂₆[3]->h₂₆[4]\n//   2: h₂₆[1]->h₂₆[2] h₂₆[4]->h₂₆[0]\n//   3: h₂₆[0]->h₂₆[1] h₂₆[2]->h₂₆[3]\n//   4: h₂₆[3]->h₂₆[4]\n//\n// The result is that all of the limbs are limited to 26-bits\n// except for h₂₆[1] and h₂₆[4] which are limited to 27-bits.\n//\n// Note that although each limb is aligned at 26-bit intervals\n// they may contain values that exceed 2²⁶ - 1, hence the need\n// to carry the excess bits in each limb.\n#define REDUCE(h0, h1, h2, h3, h4) \\\n\tVESRLG $26, h0, T_0  \\\n\tVESRLG $26, h3, T_1  \\\n\tVN     MOD26, h0, h0 \\\n\tVN     MOD26, h3, h3 \\\n\tVAG    T_0, h1, h1   \\\n\tVAG    T_1, h4, h4   \\\n\tVESRLG $26, h1, T_2  \\\n\tVESRLG $26, h4, T_3  \\\n\tVN     MOD26, h1, h1 \\\n\tVN     MOD26, h4, h4 \\\n\tVESLG  $2, T_3, T_4  \\\n\tVAG    T_3, T_4, T_4 \\\n\tVAG    T_2, h2, h2   \\\n\tVAG    T_4, h0, h0   \\\n\tVESRLG $26, h2, T_0  \\\n\tVESRLG $26, h0, T_1  \\\n\tVN     MOD26, h2, h2 \\\n\tVN     MOD26, h0, h0 \\\n\tVAG    T_0, h3, h3   \\\n\tVAG    T_1, h1, h1   \\\n\tVESRLG $26, h3, T_2  \\\n\tVN     MOD26, h3, h3 \\\n\tVAG    T_2, h4, h4\n\n// EXPAND splits the 128-bit little-endian values in0 and in1\n// into 26-bit big-endian limbs and places the results into\n// the first and second lane of d₂₆[0:4] respectively.\n//\n// The EX0, EX1 and EX2 constants are arrays of byte indices\n// for permutation. The permutation both reverses the bytes\n// in the input and ensures the bytes are copied into the\n// destination limb ready to be shifted into their final\n// position.\n#define EXPAND(in0, in1, d0, d1, d2, d3, d4) \\\n\tVPERM  in0, in1, EX0, d0 \\\n\tVPERM  in0, in1, EX1, d2 \\\n\tVPERM  in0, in1, EX2, d4 \\\n\tVESRLG $26, d0, d1       \\\n\tVESRLG $30, d2, d3       \\\n\tVESRLG $4, d2, d2        \\\n\tVN     MOD26, d0, d0     \\ // [in0₂₆[0], in1₂₆[0]]\n\tVN     MOD26, d3, d3     \\ // [in0₂₆[3], in1₂₆[3]]\n\tVN     MOD26, d1, d1     \\ // [in0₂₆[1], in1₂₆[1]]\n\tVN     MOD24, d4, d4     \\ // [in0₂₆[4], in1₂₆[4]]\n\tVN     MOD26, d2, d2     // [in0₂₆[2], in1₂₆[2]]\n\n// func updateVX(state *macState, msg []byte)\nTEXT ·updateVX(SB), NOSPLIT, $0\n\tMOVD state+0(FP), R1\n\tLMG  msg+8(FP), R2, R3 // R2=msg_base, R3=msg_len\n\n\t// load EX0, EX1 and EX2\n\tMOVD $·constants<>(SB), R5\n\tVLM  (R5), EX0, EX2\n\n\t// generate masks\n\tVGMG $(64-24), $63, MOD24 // [0x00ffffff, 0x00ffffff]\n\tVGMG $(64-26), $63, MOD26 // [0x03ffffff, 0x03ffffff]\n\n\t// load h (accumulator) and r (key) from state\n\tVZERO T_1               // [0, 0]\n\tVL    0(R1), T_0        // [h₆₄[0], h₆₄[1]]\n\tVLEG  $0, 16(R1), T_1   // [h₆₄[2], 0]\n\tVL    24(R1), T_2       // [r₆₄[0], r₆₄[1]]\n\tVPDI  $0, T_0, T_2, T_3 // [h₆₄[0], r₆₄[0]]\n\tVPDI  $5, T_0, T_2, T_4 // [h₆₄[1], r₆₄[1]]\n\n\t// unpack h and r into 26-bit limbs\n\t// note: h₆₄[2] may have the low 3 bits set, so h₂₆[4] is a 27-bit value\n\tVN     MOD26, T_3, H_0            // [h₂₆[0], r₂₆[0]]\n\tVZERO  H_1                        // [0, 0]\n\tVZERO  H_3                        // [0, 0]\n\tVGMG   $(64-12-14), $(63-12), T_0 // [0x03fff000, 0x03fff000] - 26-bit mask with low 12 bits masked out\n\tVESLG  $24, T_1, T_1              // [h₆₄[2]<<24, 0]\n\tVERIMG $-26&63, T_3, MOD26, H_1   // [h₂₆[1], r₂₆[1]]\n\tVESRLG $+52&63, T_3, H_2          // [h₂₆[2], r₂₆[2]] - low 12 bits only\n\tVERIMG $-14&63, T_4, MOD26, H_3   // [h₂₆[1], r₂₆[1]]\n\tVESRLG $40, T_4, H_4              // [h₂₆[4], r₂₆[4]] - low 24 bits only\n\tVERIMG $+12&63, T_4, T_0, H_2     // [h₂₆[2], r₂₆[2]] - complete\n\tVO     T_1, H_4, H_4              // [h₂₆[4], r₂₆[4]] - complete\n\n\t// replicate r across all 4 vector elements\n\tVREPF $3, H_0, R_0 // [r₂₆[0], r₂₆[0], r₂₆[0], r₂₆[0]]\n\tVREPF $3, H_1, R_1 // [r₂₆[1], r₂₆[1], r₂₆[1], r₂₆[1]]\n\tVREPF $3, H_2, R_2 // [r₂₆[2], r₂₆[2], r₂₆[2], r₂₆[2]]\n\tVREPF $3, H_3, R_3 // [r₂₆[3], r₂₆[3], r₂₆[3], r₂₆[3]]\n\tVREPF $3, H_4, R_4 // [r₂₆[4], r₂₆[4], r₂₆[4], r₂₆[4]]\n\n\t// zero out lane 1 of h\n\tVLEIG $1, $0, H_0 // [h₂₆[0], 0]\n\tVLEIG $1, $0, H_1 // [h₂₆[1], 0]\n\tVLEIG $1, $0, H_2 // [h₂₆[2], 0]\n\tVLEIG $1, $0, H_3 // [h₂₆[3], 0]\n\tVLEIG $1, $0, H_4 // [h₂₆[4], 0]\n\n\t// calculate 5r (ignore least significant limb)\n\tVREPIF $5, T_0\n\tVMLF   T_0, R_1, R5_1 // [5r₂₆[1], 5r₂₆[1], 5r₂₆[1], 5r₂₆[1]]\n\tVMLF   T_0, R_2, R5_2 // [5r₂₆[2], 5r₂₆[2], 5r₂₆[2], 5r₂₆[2]]\n\tVMLF   T_0, R_3, R5_3 // [5r₂₆[3], 5r₂₆[3], 5r₂₆[3], 5r₂₆[3]]\n\tVMLF   T_0, R_4, R5_4 // [5r₂₆[4], 5r₂₆[4], 5r₂₆[4], 5r₂₆[4]]\n\n\t// skip r² calculation if we are only calculating one block\n\tCMPBLE R3, $16, skip\n\n\t// calculate r²\n\tMULTIPLY(R_0, R_1, R_2, R_3, R_4, R_0, R_1, R_2, R_3, R_4, R5_1, R5_2, R5_3, R5_4, M_0, M_1, M_2, M_3, M_4)\n\tREDUCE(M_0, M_1, M_2, M_3, M_4)\n\tVGBM   $0x0f0f, T_0\n\tVERIMG $0, M_0, T_0, R_0 // [r₂₆[0], r²₂₆[0], r₂₆[0], r²₂₆[0]]\n\tVERIMG $0, M_1, T_0, R_1 // [r₂₆[1], r²₂₆[1], r₂₆[1], r²₂₆[1]]\n\tVERIMG $0, M_2, T_0, R_2 // [r₂₆[2], r²₂₆[2], r₂₆[2], r²₂₆[2]]\n\tVERIMG $0, M_3, T_0, R_3 // [r₂₆[3], r²₂₆[3], r₂₆[3], r²₂₆[3]]\n\tVERIMG $0, M_4, T_0, R_4 // [r₂₆[4], r²₂₆[4], r₂₆[4], r²₂₆[4]]\n\n\t// calculate 5r² (ignore least significant limb)\n\tVREPIF $5, T_0\n\tVMLF   T_0, R_1, R5_1 // [5r₂₆[1], 5r²₂₆[1], 5r₂₆[1], 5r²₂₆[1]]\n\tVMLF   T_0, R_2, R5_2 // [5r₂₆[2], 5r²₂₆[2], 5r₂₆[2], 5r²₂₆[2]]\n\tVMLF   T_0, R_3, R5_3 // [5r₂₆[3], 5r²₂₆[3], 5r₂₆[3], 5r²₂₆[3]]\n\tVMLF   T_0, R_4, R5_4 // [5r₂₆[4], 5r²₂₆[4], 5r₂₆[4], 5r²₂₆[4]]\n\nloop:\n\tCMPBLE R3, $32, b2 // 2 or fewer blocks remaining, need to change key coefficients\n\n\t// load next 2 blocks from message\n\tVLM (R2), T_0, T_1\n\n\t// update message slice\n\tSUB  $32, R3\n\tMOVD $32(R2), R2\n\n\t// unpack message blocks into 26-bit big-endian limbs\n\tEXPAND(T_0, T_1, M_0, M_1, M_2, M_3, M_4)\n\n\t// add 2¹²⁸ to each message block value\n\tVLEIB $4, $1, M_4\n\tVLEIB $12, $1, M_4\n\nmultiply:\n\t// accumulate the incoming message\n\tVAG H_0, M_0, M_0\n\tVAG H_3, M_3, M_3\n\tVAG H_1, M_1, M_1\n\tVAG H_4, M_4, M_4\n\tVAG H_2, M_2, M_2\n\n\t// multiply the accumulator by the key coefficient\n\tMULTIPLY(M_0, M_1, M_2, M_3, M_4, R_0, R_1, R_2, R_3, R_4, R5_1, R5_2, R5_3, R5_4, H_0, H_1, H_2, H_3, H_4)\n\n\t// carry and partially reduce the partial products\n\tREDUCE(H_0, H_1, H_2, H_3, H_4)\n\n\tCMPBNE R3, $0, loop\n\nfinish:\n\t// sum lane 0 and lane 1 and put the result in lane 1\n\tVZERO  T_0\n\tVSUMQG H_0, T_0, H_0\n\tVSUMQG H_3, T_0, H_3\n\tVSUMQG H_1, T_0, H_1\n\tVSUMQG H_4, T_0, H_4\n\tVSUMQG H_2, T_0, H_2\n\n\t// reduce again after summation\n\t// TODO(mundaym): there might be a more efficient way to do this\n\t// now that we only have 1 active lane. For example, we could\n\t// simultaneously pack the values as we reduce them.\n\tREDUCE(H_0, H_1, H_2, H_3, H_4)\n\n\t// carry h[1] through to h[4] so that only h[4] can exceed 2²⁶ - 1\n\t// TODO(mundaym): in testing this final carry was unnecessary.\n\t// Needs a proof before it can be removed though.\n\tVESRLG $26, H_1, T_1\n\tVN     MOD26, H_1, H_1\n\tVAQ    T_1, H_2, H_2\n\tVESRLG $26, H_2, T_2\n\tVN     MOD26, H_2, H_2\n\tVAQ    T_2, H_3, H_3\n\tVESRLG $26, H_3, T_3\n\tVN     MOD26, H_3, H_3\n\tVAQ    T_3, H_4, H_4\n\n\t// h is now < 2(2¹³⁰ - 5)\n\t// Pack each lane in h₂₆[0:4] into h₁₂₈[0:1].\n\tVESLG $26, H_1, H_1\n\tVESLG $26, H_3, H_3\n\tVO    H_0, H_1, H_0\n\tVO    H_2, H_3, H_2\n\tVESLG $4, H_2, H_2\n\tVLEIB $7, $48, H_1\n\tVSLB  H_1, H_2, H_2\n\tVO    H_0, H_2, H_0\n\tVLEIB $7, $104, H_1\n\tVSLB  H_1, H_4, H_3\n\tVO    H_3, H_0, H_0\n\tVLEIB $7, $24, H_1\n\tVSRLB H_1, H_4, H_1\n\n\t// update state\n\tVSTEG $1, H_0, 0(R1)\n\tVSTEG $0, H_0, 8(R1)\n\tVSTEG $1, H_1, 16(R1)\n\tRET\n\nb2:  // 2 or fewer blocks remaining\n\tCMPBLE R3, $16, b1\n\n\t// Load the 2 remaining blocks (17-32 bytes remaining).\n\tMOVD $-17(R3), R0    // index of final byte to load modulo 16\n\tVL   (R2), T_0       // load full 16 byte block\n\tVLL  R0, 16(R2), T_1 // load final (possibly partial) block and pad with zeros to 16 bytes\n\n\t// The Poly1305 algorithm requires that a 1 bit be appended to\n\t// each message block. If the final block is less than 16 bytes\n\t// long then it is easiest to insert the 1 before the message\n\t// block is split into 26-bit limbs. If, on the other hand, the\n\t// final message block is 16 bytes long then we append the 1 bit\n\t// after expansion as normal.\n\tMOVBZ  $1, R0\n\tMOVD   $-16(R3), R3   // index of byte in last block to insert 1 at (could be 16)\n\tCMPBEQ R3, $16, 2(PC) // skip the insertion if the final block is 16 bytes long\n\tVLVGB  R3, R0, T_1    // insert 1 into the byte at index R3\n\n\t// Split both blocks into 26-bit limbs in the appropriate lanes.\n\tEXPAND(T_0, T_1, M_0, M_1, M_2, M_3, M_4)\n\n\t// Append a 1 byte to the end of the second to last block.\n\tVLEIB $4, $1, M_4\n\n\t// Append a 1 byte to the end of the last block only if it is a\n\t// full 16 byte block.\n\tCMPBNE R3, $16, 2(PC)\n\tVLEIB  $12, $1, M_4\n\n\t// Finally, set up the coefficients for the final multiplication.\n\t// We have previously saved r and 5r in the 32-bit even indexes\n\t// of the R_[0-4] and R5_[1-4] coefficient registers.\n\t//\n\t// We want lane 0 to be multiplied by r² so that can be kept the\n\t// same. We want lane 1 to be multiplied by r so we need to move\n\t// the saved r value into the 32-bit odd index in lane 1 by\n\t// rotating the 64-bit lane by 32.\n\tVGBM   $0x00ff, T_0         // [0, 0xffffffffffffffff] - mask lane 1 only\n\tVERIMG $32, R_0, T_0, R_0   // [_,  r²₂₆[0], _,  r₂₆[0]]\n\tVERIMG $32, R_1, T_0, R_1   // [_,  r²₂₆[1], _,  r₂₆[1]]\n\tVERIMG $32, R_2, T_0, R_2   // [_,  r²₂₆[2], _,  r₂₆[2]]\n\tVERIMG $32, R_3, T_0, R_3   // [_,  r²₂₆[3], _,  r₂₆[3]]\n\tVERIMG $32, R_4, T_0, R_4   // [_,  r²₂₆[4], _,  r₂₆[4]]\n\tVERIMG $32, R5_1, T_0, R5_1 // [_, 5r²₂₆[1], _, 5r₂₆[1]]\n\tVERIMG $32, R5_2, T_0, R5_2 // [_, 5r²₂₆[2], _, 5r₂₆[2]]\n\tVERIMG $32, R5_3, T_0, R5_3 // [_, 5r²₂₆[3], _, 5r₂₆[3]]\n\tVERIMG $32, R5_4, T_0, R5_4 // [_, 5r²₂₆[4], _, 5r₂₆[4]]\n\n\tMOVD $0, R3\n\tBR   multiply\n\nskip:\n\tCMPBEQ R3, $0, finish\n\nb1:  // 1 block remaining\n\n\t// Load the final block (1-16 bytes). This will be placed into\n\t// lane 0.\n\tMOVD $-1(R3), R0\n\tVLL  R0, (R2), T_0 // pad to 16 bytes with zeros\n\n\t// The Poly1305 algorithm requires that a 1 bit be appended to\n\t// each message block. If the final block is less than 16 bytes\n\t// long then it is easiest to insert the 1 before the message\n\t// block is split into 26-bit limbs. If, on the other hand, the\n\t// final message block is 16 bytes long then we append the 1 bit\n\t// after expansion as normal.\n\tMOVBZ  $1, R0\n\tCMPBEQ R3, $16, 2(PC)\n\tVLVGB  R3, R0, T_0\n\n\t// Set the message block in lane 1 to the value 0 so that it\n\t// can be accumulated without affecting the final result.\n\tVZERO T_1\n\n\t// Split the final message block into 26-bit limbs in lane 0.\n\t// Lane 1 will be contain 0.\n\tEXPAND(T_0, T_1, M_0, M_1, M_2, M_3, M_4)\n\n\t// Append a 1 byte to the end of the last block only if it is a\n\t// full 16 byte block.\n\tCMPBNE R3, $16, 2(PC)\n\tVLEIB  $4, $1, M_4\n\n\t// We have previously saved r and 5r in the 32-bit even indexes\n\t// of the R_[0-4] and R5_[1-4] coefficient registers.\n\t//\n\t// We want lane 0 to be multiplied by r so we need to move the\n\t// saved r value into the 32-bit odd index in lane 0. We want\n\t// lane 1 to be set to the value 1. This makes multiplication\n\t// a no-op. We do this by setting lane 1 in every register to 0\n\t// and then just setting the 32-bit index 3 in R_0 to 1.\n\tVZERO T_0\n\tMOVD  $0, R0\n\tMOVD  $0x10111213, R12\n\tVLVGP R12, R0, T_1         // [_, 0x10111213, _, 0x00000000]\n\tVPERM T_0, R_0, T_1, R_0   // [_,  r₂₆[0], _, 0]\n\tVPERM T_0, R_1, T_1, R_1   // [_,  r₂₆[1], _, 0]\n\tVPERM T_0, R_2, T_1, R_2   // [_,  r₂₆[2], _, 0]\n\tVPERM T_0, R_3, T_1, R_3   // [_,  r₂₆[3], _, 0]\n\tVPERM T_0, R_4, T_1, R_4   // [_,  r₂₆[4], _, 0]\n\tVPERM T_0, R5_1, T_1, R5_1 // [_, 5r₂₆[1], _, 0]\n\tVPERM T_0, R5_2, T_1, R5_2 // [_, 5r₂₆[2], _, 0]\n\tVPERM T_0, R5_3, T_1, R5_3 // [_, 5r₂₆[3], _, 0]\n\tVPERM T_0, R5_4, T_1, R5_4 // [_, 5r₂₆[4], _, 0]\n\n\t// Set the value of lane 1 to be 1.\n\tVLEIF $3, $1, R_0 // [_,  r₂₆[0], _, 1]\n\n\tMOVD $0, R3\n\tBR   multiply\n"
  },
  {
    "path": "tests/vendor/golang.org/x/crypto/ssh/buffer.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage ssh\n\nimport (\n\t\"io\"\n\t\"sync\"\n)\n\n// buffer provides a linked list buffer for data exchange\n// between producer and consumer. Theoretically the buffer is\n// of unlimited capacity as it does no allocation of its own.\ntype buffer struct {\n\t// protects concurrent access to head, tail and closed\n\t*sync.Cond\n\n\thead *element // the buffer that will be read first\n\ttail *element // the buffer that will be read last\n\n\tclosed bool\n}\n\n// An element represents a single link in a linked list.\ntype element struct {\n\tbuf  []byte\n\tnext *element\n}\n\n// newBuffer returns an empty buffer that is not closed.\nfunc newBuffer() *buffer {\n\te := new(element)\n\tb := &buffer{\n\t\tCond: newCond(),\n\t\thead: e,\n\t\ttail: e,\n\t}\n\treturn b\n}\n\n// write makes buf available for Read to receive.\n// buf must not be modified after the call to write.\nfunc (b *buffer) write(buf []byte) {\n\tb.Cond.L.Lock()\n\te := &element{buf: buf}\n\tb.tail.next = e\n\tb.tail = e\n\tb.Cond.Signal()\n\tb.Cond.L.Unlock()\n}\n\n// eof closes the buffer. Reads from the buffer once all\n// the data has been consumed will receive io.EOF.\nfunc (b *buffer) eof() {\n\tb.Cond.L.Lock()\n\tb.closed = true\n\tb.Cond.Signal()\n\tb.Cond.L.Unlock()\n}\n\n// Read reads data from the internal buffer in buf.  Reads will block\n// if no data is available, or until the buffer is closed.\nfunc (b *buffer) Read(buf []byte) (n int, err error) {\n\tb.Cond.L.Lock()\n\tdefer b.Cond.L.Unlock()\n\n\tfor len(buf) > 0 {\n\t\t// if there is data in b.head, copy it\n\t\tif len(b.head.buf) > 0 {\n\t\t\tr := copy(buf, b.head.buf)\n\t\t\tbuf, b.head.buf = buf[r:], b.head.buf[r:]\n\t\t\tn += r\n\t\t\tcontinue\n\t\t}\n\t\t// if there is a next buffer, make it the head\n\t\tif len(b.head.buf) == 0 && b.head != b.tail {\n\t\t\tb.head = b.head.next\n\t\t\tcontinue\n\t\t}\n\n\t\t// if at least one byte has been copied, return\n\t\tif n > 0 {\n\t\t\tbreak\n\t\t}\n\n\t\t// if nothing was read, and there is nothing outstanding\n\t\t// check to see if the buffer is closed.\n\t\tif b.closed {\n\t\t\terr = io.EOF\n\t\t\tbreak\n\t\t}\n\t\t// out of buffers, wait for producer\n\t\tb.Cond.Wait()\n\t}\n\treturn\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/crypto/ssh/certs.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage ssh\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"net\"\n\t\"sort\"\n\t\"time\"\n)\n\n// Certificate algorithm names from [PROTOCOL.certkeys]. These values can appear\n// in Certificate.Type, PublicKey.Type, and ClientConfig.HostKeyAlgorithms.\n// Unlike key algorithm names, these are not passed to AlgorithmSigner nor\n// returned by MultiAlgorithmSigner and don't appear in the Signature.Format\n// field.\nconst (\n\tCertAlgoRSAv01 = \"ssh-rsa-cert-v01@openssh.com\"\n\t// Deprecated: DSA is only supported at insecure key sizes, and was removed\n\t// from major implementations.\n\tCertAlgoDSAv01 = InsecureCertAlgoDSAv01\n\t// Deprecated: DSA is only supported at insecure key sizes, and was removed\n\t// from major implementations.\n\tInsecureCertAlgoDSAv01 = \"ssh-dss-cert-v01@openssh.com\"\n\tCertAlgoECDSA256v01    = \"ecdsa-sha2-nistp256-cert-v01@openssh.com\"\n\tCertAlgoECDSA384v01    = \"ecdsa-sha2-nistp384-cert-v01@openssh.com\"\n\tCertAlgoECDSA521v01    = \"ecdsa-sha2-nistp521-cert-v01@openssh.com\"\n\tCertAlgoSKECDSA256v01  = \"sk-ecdsa-sha2-nistp256-cert-v01@openssh.com\"\n\tCertAlgoED25519v01     = \"ssh-ed25519-cert-v01@openssh.com\"\n\tCertAlgoSKED25519v01   = \"sk-ssh-ed25519-cert-v01@openssh.com\"\n\n\t// CertAlgoRSASHA256v01 and CertAlgoRSASHA512v01 can't appear as a\n\t// Certificate.Type (or PublicKey.Type), but only in\n\t// ClientConfig.HostKeyAlgorithms.\n\tCertAlgoRSASHA256v01 = \"rsa-sha2-256-cert-v01@openssh.com\"\n\tCertAlgoRSASHA512v01 = \"rsa-sha2-512-cert-v01@openssh.com\"\n)\n\nconst (\n\t// Deprecated: use CertAlgoRSAv01.\n\tCertSigAlgoRSAv01 = CertAlgoRSAv01\n\t// Deprecated: use CertAlgoRSASHA256v01.\n\tCertSigAlgoRSASHA2256v01 = CertAlgoRSASHA256v01\n\t// Deprecated: use CertAlgoRSASHA512v01.\n\tCertSigAlgoRSASHA2512v01 = CertAlgoRSASHA512v01\n)\n\n// Certificate types distinguish between host and user\n// certificates. The values can be set in the CertType field of\n// Certificate.\nconst (\n\tUserCert = 1\n\tHostCert = 2\n)\n\n// Signature represents a cryptographic signature.\ntype Signature struct {\n\tFormat string\n\tBlob   []byte\n\tRest   []byte `ssh:\"rest\"`\n}\n\n// CertTimeInfinity can be used for OpenSSHCertV01.ValidBefore to indicate that\n// a certificate does not expire.\nconst CertTimeInfinity = 1<<64 - 1\n\n// An Certificate represents an OpenSSH certificate as defined in\n// [PROTOCOL.certkeys]?rev=1.8. The Certificate type implements the\n// PublicKey interface, so it can be unmarshaled using\n// ParsePublicKey.\ntype Certificate struct {\n\tNonce           []byte\n\tKey             PublicKey\n\tSerial          uint64\n\tCertType        uint32\n\tKeyId           string\n\tValidPrincipals []string\n\tValidAfter      uint64\n\tValidBefore     uint64\n\tPermissions\n\tReserved     []byte\n\tSignatureKey PublicKey\n\tSignature    *Signature\n}\n\n// genericCertData holds the key-independent part of the certificate data.\n// Overall, certificates contain an nonce, public key fields and\n// key-independent fields.\ntype genericCertData struct {\n\tSerial          uint64\n\tCertType        uint32\n\tKeyId           string\n\tValidPrincipals []byte\n\tValidAfter      uint64\n\tValidBefore     uint64\n\tCriticalOptions []byte\n\tExtensions      []byte\n\tReserved        []byte\n\tSignatureKey    []byte\n\tSignature       []byte\n}\n\nfunc marshalStringList(namelist []string) []byte {\n\tvar to []byte\n\tfor _, name := range namelist {\n\t\ts := struct{ N string }{name}\n\t\tto = append(to, Marshal(&s)...)\n\t}\n\treturn to\n}\n\ntype optionsTuple struct {\n\tKey   string\n\tValue []byte\n}\n\ntype optionsTupleValue struct {\n\tValue string\n}\n\n// serialize a map of critical options or extensions\n// issue #10569 - per [PROTOCOL.certkeys] and SSH implementation,\n// we need two length prefixes for a non-empty string value\nfunc marshalTuples(tups map[string]string) []byte {\n\tkeys := make([]string, 0, len(tups))\n\tfor key := range tups {\n\t\tkeys = append(keys, key)\n\t}\n\tsort.Strings(keys)\n\n\tvar ret []byte\n\tfor _, key := range keys {\n\t\ts := optionsTuple{Key: key}\n\t\tif value := tups[key]; len(value) > 0 {\n\t\t\ts.Value = Marshal(&optionsTupleValue{value})\n\t\t}\n\t\tret = append(ret, Marshal(&s)...)\n\t}\n\treturn ret\n}\n\n// issue #10569 - per [PROTOCOL.certkeys] and SSH implementation,\n// we need two length prefixes for a non-empty option value\nfunc parseTuples(in []byte) (map[string]string, error) {\n\ttups := map[string]string{}\n\tvar lastKey string\n\tvar haveLastKey bool\n\n\tfor len(in) > 0 {\n\t\tvar key, val, extra []byte\n\t\tvar ok bool\n\n\t\tif key, in, ok = parseString(in); !ok {\n\t\t\treturn nil, errShortRead\n\t\t}\n\t\tkeyStr := string(key)\n\t\t// according to [PROTOCOL.certkeys], the names must be in\n\t\t// lexical order.\n\t\tif haveLastKey && keyStr <= lastKey {\n\t\t\treturn nil, fmt.Errorf(\"ssh: certificate options are not in lexical order\")\n\t\t}\n\t\tlastKey, haveLastKey = keyStr, true\n\t\t// the next field is a data field, which if non-empty has a string embedded\n\t\tif val, in, ok = parseString(in); !ok {\n\t\t\treturn nil, errShortRead\n\t\t}\n\t\tif len(val) > 0 {\n\t\t\tval, extra, ok = parseString(val)\n\t\t\tif !ok {\n\t\t\t\treturn nil, errShortRead\n\t\t\t}\n\t\t\tif len(extra) > 0 {\n\t\t\t\treturn nil, fmt.Errorf(\"ssh: unexpected trailing data after certificate option value\")\n\t\t\t}\n\t\t\ttups[keyStr] = string(val)\n\t\t} else {\n\t\t\ttups[keyStr] = \"\"\n\t\t}\n\t}\n\treturn tups, nil\n}\n\nfunc parseCert(in []byte, privAlgo string) (*Certificate, error) {\n\tnonce, rest, ok := parseString(in)\n\tif !ok {\n\t\treturn nil, errShortRead\n\t}\n\n\tkey, rest, err := parsePubKey(rest, privAlgo)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar g genericCertData\n\tif err := Unmarshal(rest, &g); err != nil {\n\t\treturn nil, err\n\t}\n\n\tc := &Certificate{\n\t\tNonce:       nonce,\n\t\tKey:         key,\n\t\tSerial:      g.Serial,\n\t\tCertType:    g.CertType,\n\t\tKeyId:       g.KeyId,\n\t\tValidAfter:  g.ValidAfter,\n\t\tValidBefore: g.ValidBefore,\n\t}\n\n\tfor principals := g.ValidPrincipals; len(principals) > 0; {\n\t\tprincipal, rest, ok := parseString(principals)\n\t\tif !ok {\n\t\t\treturn nil, errShortRead\n\t\t}\n\t\tc.ValidPrincipals = append(c.ValidPrincipals, string(principal))\n\t\tprincipals = rest\n\t}\n\n\tc.CriticalOptions, err = parseTuples(g.CriticalOptions)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tc.Extensions, err = parseTuples(g.Extensions)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tc.Reserved = g.Reserved\n\tk, err := ParsePublicKey(g.SignatureKey)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\t// The Type() function is intended to return only certificate key types, but\n\t// we use certKeyAlgoNames anyway for safety, to match [Certificate.Type].\n\tif _, ok := certKeyAlgoNames[k.Type()]; ok {\n\t\treturn nil, fmt.Errorf(\"ssh: the signature key type %q is invalid for certificates\", k.Type())\n\t}\n\tc.SignatureKey = k\n\tc.Signature, rest, ok = parseSignatureBody(g.Signature)\n\tif !ok || len(rest) > 0 {\n\t\treturn nil, errors.New(\"ssh: signature parse error\")\n\t}\n\n\treturn c, nil\n}\n\ntype openSSHCertSigner struct {\n\tpub    *Certificate\n\tsigner Signer\n}\n\ntype algorithmOpenSSHCertSigner struct {\n\t*openSSHCertSigner\n\talgorithmSigner AlgorithmSigner\n}\n\n// NewCertSigner returns a Signer that signs with the given Certificate, whose\n// private key is held by signer. It returns an error if the public key in cert\n// doesn't match the key used by signer.\nfunc NewCertSigner(cert *Certificate, signer Signer) (Signer, error) {\n\tif !bytes.Equal(cert.Key.Marshal(), signer.PublicKey().Marshal()) {\n\t\treturn nil, errors.New(\"ssh: signer and cert have different public key\")\n\t}\n\n\tswitch s := signer.(type) {\n\tcase MultiAlgorithmSigner:\n\t\treturn &multiAlgorithmSigner{\n\t\t\tAlgorithmSigner: &algorithmOpenSSHCertSigner{\n\t\t\t\t&openSSHCertSigner{cert, signer}, s},\n\t\t\tsupportedAlgorithms: s.Algorithms(),\n\t\t}, nil\n\tcase AlgorithmSigner:\n\t\treturn &algorithmOpenSSHCertSigner{\n\t\t\t&openSSHCertSigner{cert, signer}, s}, nil\n\tdefault:\n\t\treturn &openSSHCertSigner{cert, signer}, nil\n\t}\n}\n\nfunc (s *openSSHCertSigner) Sign(rand io.Reader, data []byte) (*Signature, error) {\n\treturn s.signer.Sign(rand, data)\n}\n\nfunc (s *openSSHCertSigner) PublicKey() PublicKey {\n\treturn s.pub\n}\n\nfunc (s *algorithmOpenSSHCertSigner) SignWithAlgorithm(rand io.Reader, data []byte, algorithm string) (*Signature, error) {\n\treturn s.algorithmSigner.SignWithAlgorithm(rand, data, algorithm)\n}\n\nconst sourceAddressCriticalOption = \"source-address\"\n\n// CertChecker does the work of verifying a certificate. Its methods\n// can be plugged into ClientConfig.HostKeyCallback and\n// ServerConfig.PublicKeyCallback. For the CertChecker to work,\n// minimally, the IsAuthority callback should be set.\ntype CertChecker struct {\n\t// SupportedCriticalOptions lists the CriticalOptions that the\n\t// server application layer understands. These are only used\n\t// for user certificates.\n\tSupportedCriticalOptions []string\n\n\t// IsUserAuthority should return true if the key is recognized as an\n\t// authority for user certificate. This must be set if this CertChecker\n\t// will be checking user certificates.\n\tIsUserAuthority func(auth PublicKey) bool\n\n\t// IsHostAuthority should report whether the key is recognized as\n\t// an authority for this host. This must be set if this CertChecker\n\t// will be checking host certificates.\n\tIsHostAuthority func(auth PublicKey, address string) bool\n\n\t// Clock is used for verifying time stamps. If nil, time.Now\n\t// is used.\n\tClock func() time.Time\n\n\t// UserKeyFallback is called when CertChecker.Authenticate encounters a\n\t// public key that is not a certificate. It must implement validation\n\t// of user keys or else, if nil, all such keys are rejected.\n\tUserKeyFallback func(conn ConnMetadata, key PublicKey) (*Permissions, error)\n\n\t// HostKeyFallback is called when CertChecker.CheckHostKey encounters a\n\t// public key that is not a certificate. It must implement host key\n\t// validation or else, if nil, all such keys are rejected.\n\tHostKeyFallback HostKeyCallback\n\n\t// IsRevoked is called for each certificate so that revocation checking\n\t// can be implemented. It should return true if the given certificate\n\t// is revoked and false otherwise. If nil, no certificates are\n\t// considered to have been revoked.\n\tIsRevoked func(cert *Certificate) bool\n}\n\n// CheckHostKey checks a host key certificate. This method can be\n// plugged into ClientConfig.HostKeyCallback.\nfunc (c *CertChecker) CheckHostKey(addr string, remote net.Addr, key PublicKey) error {\n\tcert, ok := key.(*Certificate)\n\tif !ok {\n\t\tif c.HostKeyFallback != nil {\n\t\t\treturn c.HostKeyFallback(addr, remote, key)\n\t\t}\n\t\treturn errors.New(\"ssh: non-certificate host key\")\n\t}\n\tif cert.CertType != HostCert {\n\t\treturn fmt.Errorf(\"ssh: certificate presented as a host key has type %d\", cert.CertType)\n\t}\n\tif !c.IsHostAuthority(cert.SignatureKey, addr) {\n\t\treturn fmt.Errorf(\"ssh: no authorities for hostname: %v\", addr)\n\t}\n\n\thostname, _, err := net.SplitHostPort(addr)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// Pass hostname only as principal for host certificates (consistent with OpenSSH)\n\treturn c.CheckCert(hostname, cert)\n}\n\n// Authenticate checks a user certificate. Authenticate can be used as\n// a value for ServerConfig.PublicKeyCallback.\nfunc (c *CertChecker) Authenticate(conn ConnMetadata, pubKey PublicKey) (*Permissions, error) {\n\tcert, ok := pubKey.(*Certificate)\n\tif !ok {\n\t\tif c.UserKeyFallback != nil {\n\t\t\treturn c.UserKeyFallback(conn, pubKey)\n\t\t}\n\t\treturn nil, errors.New(\"ssh: normal key pairs not accepted\")\n\t}\n\n\tif cert.CertType != UserCert {\n\t\treturn nil, fmt.Errorf(\"ssh: cert has type %d\", cert.CertType)\n\t}\n\tif !c.IsUserAuthority(cert.SignatureKey) {\n\t\treturn nil, fmt.Errorf(\"ssh: certificate signed by unrecognized authority\")\n\t}\n\n\tif err := c.CheckCert(conn.User(), cert); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &cert.Permissions, nil\n}\n\n// CheckCert checks CriticalOptions, ValidPrincipals, revocation, timestamp and\n// the signature of the certificate.\nfunc (c *CertChecker) CheckCert(principal string, cert *Certificate) error {\n\tif c.IsRevoked != nil && c.IsRevoked(cert) {\n\t\treturn fmt.Errorf(\"ssh: certificate serial %d revoked\", cert.Serial)\n\t}\n\n\tfor opt := range cert.CriticalOptions {\n\t\t// sourceAddressCriticalOption will be enforced by\n\t\t// serverAuthenticate\n\t\tif opt == sourceAddressCriticalOption {\n\t\t\tcontinue\n\t\t}\n\n\t\tfound := false\n\t\tfor _, supp := range c.SupportedCriticalOptions {\n\t\t\tif supp == opt {\n\t\t\t\tfound = true\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif !found {\n\t\t\treturn fmt.Errorf(\"ssh: unsupported critical option %q in certificate\", opt)\n\t\t}\n\t}\n\n\tif len(cert.ValidPrincipals) > 0 {\n\t\t// By default, certs are valid for all users/hosts.\n\t\tfound := false\n\t\tfor _, p := range cert.ValidPrincipals {\n\t\t\tif p == principal {\n\t\t\t\tfound = true\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif !found {\n\t\t\treturn fmt.Errorf(\"ssh: principal %q not in the set of valid principals for given certificate: %q\", principal, cert.ValidPrincipals)\n\t\t}\n\t}\n\n\tclock := c.Clock\n\tif clock == nil {\n\t\tclock = time.Now\n\t}\n\n\tunixNow := clock().Unix()\n\tif after := int64(cert.ValidAfter); after < 0 || unixNow < int64(cert.ValidAfter) {\n\t\treturn fmt.Errorf(\"ssh: cert is not yet valid\")\n\t}\n\tif before := int64(cert.ValidBefore); cert.ValidBefore != uint64(CertTimeInfinity) && (unixNow >= before || before < 0) {\n\t\treturn fmt.Errorf(\"ssh: cert has expired\")\n\t}\n\tif err := cert.SignatureKey.Verify(cert.bytesForSigning(), cert.Signature); err != nil {\n\t\treturn fmt.Errorf(\"ssh: certificate signature does not verify\")\n\t}\n\n\treturn nil\n}\n\n// SignCert signs the certificate with an authority, setting the Nonce,\n// SignatureKey, and Signature fields. If the authority implements the\n// MultiAlgorithmSigner interface the first algorithm in the list is used. This\n// is useful if you want to sign with a specific algorithm. As specified in\n// [SSH-CERTS], Section 2.1.1, authority can't be a [Certificate].\nfunc (c *Certificate) SignCert(rand io.Reader, authority Signer) error {\n\tc.Nonce = make([]byte, 32)\n\tif _, err := io.ReadFull(rand, c.Nonce); err != nil {\n\t\treturn err\n\t}\n\t// The Type() function is intended to return only certificate key types, but\n\t// we use certKeyAlgoNames anyway for safety, to match [Certificate.Type].\n\tif _, ok := certKeyAlgoNames[authority.PublicKey().Type()]; ok {\n\t\treturn fmt.Errorf(\"ssh: certificates cannot be used as authority (public key type %q)\",\n\t\t\tauthority.PublicKey().Type())\n\t}\n\tc.SignatureKey = authority.PublicKey()\n\n\tif v, ok := authority.(MultiAlgorithmSigner); ok {\n\t\tif len(v.Algorithms()) == 0 {\n\t\t\treturn errors.New(\"the provided authority has no signature algorithm\")\n\t\t}\n\t\t// Use the first algorithm in the list.\n\t\tsig, err := v.SignWithAlgorithm(rand, c.bytesForSigning(), v.Algorithms()[0])\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tc.Signature = sig\n\t\treturn nil\n\t} else if v, ok := authority.(AlgorithmSigner); ok && v.PublicKey().Type() == KeyAlgoRSA {\n\t\t// Default to KeyAlgoRSASHA512 for ssh-rsa signers.\n\t\t// TODO: consider using KeyAlgoRSASHA256 as default.\n\t\tsig, err := v.SignWithAlgorithm(rand, c.bytesForSigning(), KeyAlgoRSASHA512)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tc.Signature = sig\n\t\treturn nil\n\t}\n\n\tsig, err := authority.Sign(rand, c.bytesForSigning())\n\tif err != nil {\n\t\treturn err\n\t}\n\tc.Signature = sig\n\treturn nil\n}\n\n// certKeyAlgoNames is a mapping from known certificate algorithm names to the\n// corresponding public key signature algorithm.\n//\n// This map must be kept in sync with the one in agent/client.go.\nvar certKeyAlgoNames = map[string]string{\n\tCertAlgoRSAv01:         KeyAlgoRSA,\n\tCertAlgoRSASHA256v01:   KeyAlgoRSASHA256,\n\tCertAlgoRSASHA512v01:   KeyAlgoRSASHA512,\n\tInsecureCertAlgoDSAv01: InsecureKeyAlgoDSA,\n\tCertAlgoECDSA256v01:    KeyAlgoECDSA256,\n\tCertAlgoECDSA384v01:    KeyAlgoECDSA384,\n\tCertAlgoECDSA521v01:    KeyAlgoECDSA521,\n\tCertAlgoSKECDSA256v01:  KeyAlgoSKECDSA256,\n\tCertAlgoED25519v01:     KeyAlgoED25519,\n\tCertAlgoSKED25519v01:   KeyAlgoSKED25519,\n}\n\n// underlyingAlgo returns the signature algorithm associated with algo (which is\n// an advertised or negotiated public key or host key algorithm). These are\n// usually the same, except for certificate algorithms.\nfunc underlyingAlgo(algo string) string {\n\tif a, ok := certKeyAlgoNames[algo]; ok {\n\t\treturn a\n\t}\n\treturn algo\n}\n\n// certificateAlgo returns the certificate algorithms that uses the provided\n// underlying signature algorithm.\nfunc certificateAlgo(algo string) (certAlgo string, ok bool) {\n\tfor certName, algoName := range certKeyAlgoNames {\n\t\tif algoName == algo {\n\t\t\treturn certName, true\n\t\t}\n\t}\n\treturn \"\", false\n}\n\nfunc (cert *Certificate) bytesForSigning() []byte {\n\tc2 := *cert\n\tc2.Signature = nil\n\tout := c2.Marshal()\n\t// Drop trailing signature length.\n\treturn out[:len(out)-4]\n}\n\n// Marshal serializes c into OpenSSH's wire format. It is part of the\n// PublicKey interface.\nfunc (c *Certificate) Marshal() []byte {\n\tgeneric := genericCertData{\n\t\tSerial:          c.Serial,\n\t\tCertType:        c.CertType,\n\t\tKeyId:           c.KeyId,\n\t\tValidPrincipals: marshalStringList(c.ValidPrincipals),\n\t\tValidAfter:      uint64(c.ValidAfter),\n\t\tValidBefore:     uint64(c.ValidBefore),\n\t\tCriticalOptions: marshalTuples(c.CriticalOptions),\n\t\tExtensions:      marshalTuples(c.Extensions),\n\t\tReserved:        c.Reserved,\n\t\tSignatureKey:    c.SignatureKey.Marshal(),\n\t}\n\tif c.Signature != nil {\n\t\tgeneric.Signature = Marshal(c.Signature)\n\t}\n\tgenericBytes := Marshal(&generic)\n\tkeyBytes := c.Key.Marshal()\n\t_, keyBytes, _ = parseString(keyBytes)\n\tprefix := Marshal(&struct {\n\t\tName  string\n\t\tNonce []byte\n\t\tKey   []byte `ssh:\"rest\"`\n\t}{c.Type(), c.Nonce, keyBytes})\n\n\tresult := make([]byte, 0, len(prefix)+len(genericBytes))\n\tresult = append(result, prefix...)\n\tresult = append(result, genericBytes...)\n\treturn result\n}\n\n// Type returns the certificate algorithm name. It is part of the PublicKey interface.\nfunc (c *Certificate) Type() string {\n\tcertName, ok := certificateAlgo(c.Key.Type())\n\tif !ok {\n\t\tpanic(\"unknown certificate type for key type \" + c.Key.Type())\n\t}\n\treturn certName\n}\n\n// Verify verifies a signature against the certificate's public\n// key. It is part of the PublicKey interface.\nfunc (c *Certificate) Verify(data []byte, sig *Signature) error {\n\treturn c.Key.Verify(data, sig)\n}\n\nfunc parseSignatureBody(in []byte) (out *Signature, rest []byte, ok bool) {\n\tformat, in, ok := parseString(in)\n\tif !ok {\n\t\treturn\n\t}\n\n\tout = &Signature{\n\t\tFormat: string(format),\n\t}\n\n\tif out.Blob, in, ok = parseString(in); !ok {\n\t\treturn\n\t}\n\n\tswitch out.Format {\n\tcase KeyAlgoSKECDSA256, CertAlgoSKECDSA256v01, KeyAlgoSKED25519, CertAlgoSKED25519v01:\n\t\tout.Rest = in\n\t\treturn out, nil, ok\n\t}\n\n\treturn out, in, ok\n}\n\nfunc parseSignature(in []byte) (out *Signature, rest []byte, ok bool) {\n\tsigBytes, rest, ok := parseString(in)\n\tif !ok {\n\t\treturn\n\t}\n\n\tout, trailing, ok := parseSignatureBody(sigBytes)\n\tif !ok || len(trailing) > 0 {\n\t\treturn nil, nil, false\n\t}\n\treturn\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/crypto/ssh/channel.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage ssh\n\nimport (\n\t\"encoding/binary\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n\t\"sync\"\n)\n\nconst (\n\tminPacketLength = 9\n\t// channelMaxPacket contains the maximum number of bytes that will be\n\t// sent in a single packet. As per RFC 4253, section 6.1, 32k is also\n\t// the minimum.\n\tchannelMaxPacket = 1 << 15\n\t// We follow OpenSSH here.\n\tchannelWindowSize = 64 * channelMaxPacket\n)\n\n// NewChannel represents an incoming request to a channel. It must either be\n// accepted for use by calling Accept, or rejected by calling Reject.\ntype NewChannel interface {\n\t// Accept accepts the channel creation request. It returns the Channel\n\t// and a Go channel containing SSH requests. The Go channel must be\n\t// serviced otherwise the Channel will hang.\n\tAccept() (Channel, <-chan *Request, error)\n\n\t// Reject rejects the channel creation request. After calling\n\t// this, no other methods on the Channel may be called.\n\tReject(reason RejectionReason, message string) error\n\n\t// ChannelType returns the type of the channel, as supplied by the\n\t// client.\n\tChannelType() string\n\n\t// ExtraData returns the arbitrary payload for this channel, as supplied\n\t// by the client. This data is specific to the channel type.\n\tExtraData() []byte\n}\n\n// A Channel is an ordered, reliable, flow-controlled, duplex stream\n// that is multiplexed over an SSH connection.\ntype Channel interface {\n\t// Read reads up to len(data) bytes from the channel.\n\tRead(data []byte) (int, error)\n\n\t// Write writes len(data) bytes to the channel.\n\tWrite(data []byte) (int, error)\n\n\t// Close signals end of channel use. No data may be sent after this\n\t// call.\n\tClose() error\n\n\t// CloseWrite signals the end of sending in-band\n\t// data. Requests may still be sent, and the other side may\n\t// still send data\n\tCloseWrite() error\n\n\t// SendRequest sends a channel request.  If wantReply is true,\n\t// it will wait for a reply and return the result as a\n\t// boolean, otherwise the return value will be false. Channel\n\t// requests are out-of-band messages so they may be sent even\n\t// if the data stream is closed or blocked by flow control.\n\t// If the channel is closed before a reply is returned, io.EOF\n\t// is returned.\n\tSendRequest(name string, wantReply bool, payload []byte) (bool, error)\n\n\t// Stderr returns an io.ReadWriter that writes to this channel\n\t// with the extended data type set to stderr. Stderr may\n\t// safely be read and written from a different goroutine than\n\t// Read and Write respectively.\n\tStderr() io.ReadWriter\n}\n\n// Request is a request sent outside of the normal stream of\n// data. Requests can either be specific to an SSH channel, or they\n// can be global.\ntype Request struct {\n\tType      string\n\tWantReply bool\n\tPayload   []byte\n\n\tch  *channel\n\tmux *mux\n}\n\n// Reply sends a response to a request. It must be called for all requests\n// where WantReply is true and is a no-op otherwise. The payload argument is\n// ignored for replies to channel-specific requests.\nfunc (r *Request) Reply(ok bool, payload []byte) error {\n\tif !r.WantReply {\n\t\treturn nil\n\t}\n\n\tif r.ch == nil {\n\t\treturn r.mux.ackRequest(ok, payload)\n\t}\n\n\treturn r.ch.ackRequest(ok)\n}\n\n// RejectionReason is an enumeration used when rejecting channel creation\n// requests. See RFC 4254, section 5.1.\ntype RejectionReason uint32\n\nconst (\n\tProhibited RejectionReason = iota + 1\n\tConnectionFailed\n\tUnknownChannelType\n\tResourceShortage\n)\n\n// String converts the rejection reason to human readable form.\nfunc (r RejectionReason) String() string {\n\tswitch r {\n\tcase Prohibited:\n\t\treturn \"administratively prohibited\"\n\tcase ConnectionFailed:\n\t\treturn \"connect failed\"\n\tcase UnknownChannelType:\n\t\treturn \"unknown channel type\"\n\tcase ResourceShortage:\n\t\treturn \"resource shortage\"\n\t}\n\treturn fmt.Sprintf(\"unknown reason %d\", int(r))\n}\n\nfunc min(a uint32, b int) uint32 {\n\tif a < uint32(b) {\n\t\treturn a\n\t}\n\treturn uint32(b)\n}\n\ntype channelDirection uint8\n\nconst (\n\tchannelInbound channelDirection = iota\n\tchannelOutbound\n)\n\n// channel is an implementation of the Channel interface that works\n// with the mux class.\ntype channel struct {\n\t// R/O after creation\n\tchanType          string\n\textraData         []byte\n\tlocalId, remoteId uint32\n\n\t// maxIncomingPayload and maxRemotePayload are the maximum\n\t// payload sizes of normal and extended data packets for\n\t// receiving and sending, respectively. The wire packet will\n\t// be 9 or 13 bytes larger (excluding encryption overhead).\n\tmaxIncomingPayload uint32\n\tmaxRemotePayload   uint32\n\n\tmux *mux\n\n\t// decided is set to true if an accept or reject message has been sent\n\t// (for outbound channels) or received (for inbound channels).\n\tdecided bool\n\n\t// direction contains either channelOutbound, for channels created\n\t// locally, or channelInbound, for channels created by the peer.\n\tdirection channelDirection\n\n\t// Pending internal channel messages.\n\tmsg chan interface{}\n\n\t// Since requests have no ID, there can be only one request\n\t// with WantReply=true outstanding.  This lock is held by a\n\t// goroutine that has such an outgoing request pending.\n\tsentRequestMu sync.Mutex\n\n\tincomingRequests chan *Request\n\n\tsentEOF bool\n\n\t// thread-safe data\n\tremoteWin  window\n\tpending    *buffer\n\textPending *buffer\n\n\t// windowMu protects myWindow, the flow-control window, and myConsumed,\n\t// the number of bytes consumed since we last increased myWindow\n\twindowMu   sync.Mutex\n\tmyWindow   uint32\n\tmyConsumed uint32\n\n\t// writeMu serializes calls to mux.conn.writePacket() and\n\t// protects sentClose and packetPool. This mutex must be\n\t// different from windowMu, as writePacket can block if there\n\t// is a key exchange pending.\n\twriteMu   sync.Mutex\n\tsentClose bool\n\n\t// packetPool has a buffer for each extended channel ID to\n\t// save allocations during writes.\n\tpacketPool map[uint32][]byte\n}\n\n// writePacket sends a packet. If the packet is a channel close, it updates\n// sentClose. This method takes the lock c.writeMu.\nfunc (ch *channel) writePacket(packet []byte) error {\n\tch.writeMu.Lock()\n\tif ch.sentClose {\n\t\tch.writeMu.Unlock()\n\t\treturn io.EOF\n\t}\n\tch.sentClose = (packet[0] == msgChannelClose)\n\terr := ch.mux.conn.writePacket(packet)\n\tch.writeMu.Unlock()\n\treturn err\n}\n\nfunc (ch *channel) sendMessage(msg interface{}) error {\n\tif debugMux {\n\t\tlog.Printf(\"send(%d): %#v\", ch.mux.chanList.offset, msg)\n\t}\n\n\tp := Marshal(msg)\n\tbinary.BigEndian.PutUint32(p[1:], ch.remoteId)\n\treturn ch.writePacket(p)\n}\n\n// WriteExtended writes data to a specific extended stream. These streams are\n// used, for example, for stderr.\nfunc (ch *channel) WriteExtended(data []byte, extendedCode uint32) (n int, err error) {\n\tif ch.sentEOF {\n\t\treturn 0, io.EOF\n\t}\n\t// 1 byte message type, 4 bytes remoteId, 4 bytes data length\n\topCode := byte(msgChannelData)\n\theaderLength := uint32(9)\n\tif extendedCode > 0 {\n\t\theaderLength += 4\n\t\topCode = msgChannelExtendedData\n\t}\n\n\tch.writeMu.Lock()\n\tpacket := ch.packetPool[extendedCode]\n\t// We don't remove the buffer from packetPool, so\n\t// WriteExtended calls from different goroutines will be\n\t// flagged as errors by the race detector.\n\tch.writeMu.Unlock()\n\n\tfor len(data) > 0 {\n\t\tspace := min(ch.maxRemotePayload, len(data))\n\t\tif space, err = ch.remoteWin.reserve(space); err != nil {\n\t\t\treturn n, err\n\t\t}\n\t\tif want := headerLength + space; uint32(cap(packet)) < want {\n\t\t\tpacket = make([]byte, want)\n\t\t} else {\n\t\t\tpacket = packet[:want]\n\t\t}\n\n\t\ttodo := data[:space]\n\n\t\tpacket[0] = opCode\n\t\tbinary.BigEndian.PutUint32(packet[1:], ch.remoteId)\n\t\tif extendedCode > 0 {\n\t\t\tbinary.BigEndian.PutUint32(packet[5:], uint32(extendedCode))\n\t\t}\n\t\tbinary.BigEndian.PutUint32(packet[headerLength-4:], uint32(len(todo)))\n\t\tcopy(packet[headerLength:], todo)\n\t\tif err = ch.writePacket(packet); err != nil {\n\t\t\treturn n, err\n\t\t}\n\n\t\tn += len(todo)\n\t\tdata = data[len(todo):]\n\t}\n\n\tch.writeMu.Lock()\n\tch.packetPool[extendedCode] = packet\n\tch.writeMu.Unlock()\n\n\treturn n, err\n}\n\nfunc (ch *channel) handleData(packet []byte) error {\n\theaderLen := 9\n\tisExtendedData := packet[0] == msgChannelExtendedData\n\tif isExtendedData {\n\t\theaderLen = 13\n\t}\n\tif len(packet) < headerLen {\n\t\t// malformed data packet\n\t\treturn parseError(packet[0])\n\t}\n\n\tvar extended uint32\n\tif isExtendedData {\n\t\textended = binary.BigEndian.Uint32(packet[5:])\n\t}\n\n\tlength := binary.BigEndian.Uint32(packet[headerLen-4 : headerLen])\n\tif length == 0 {\n\t\treturn nil\n\t}\n\tif length > ch.maxIncomingPayload {\n\t\t// TODO(hanwen): should send Disconnect?\n\t\treturn errors.New(\"ssh: incoming packet exceeds maximum payload size\")\n\t}\n\n\tdata := packet[headerLen:]\n\tif length != uint32(len(data)) {\n\t\treturn errors.New(\"ssh: wrong packet length\")\n\t}\n\n\tch.windowMu.Lock()\n\tif ch.myWindow < length {\n\t\tch.windowMu.Unlock()\n\t\t// TODO(hanwen): should send Disconnect with reason?\n\t\treturn errors.New(\"ssh: remote side wrote too much\")\n\t}\n\tch.myWindow -= length\n\tch.windowMu.Unlock()\n\n\tif extended == 1 {\n\t\tch.extPending.write(data)\n\t} else if extended > 0 {\n\t\t// discard other extended data.\n\t} else {\n\t\tch.pending.write(data)\n\t}\n\treturn nil\n}\n\nfunc (c *channel) adjustWindow(adj uint32) error {\n\tc.windowMu.Lock()\n\t// Since myConsumed and myWindow are managed on our side, and can never\n\t// exceed the initial window setting, we don't worry about overflow.\n\tc.myConsumed += adj\n\tvar sendAdj uint32\n\tif (channelWindowSize-c.myWindow > 3*c.maxIncomingPayload) ||\n\t\t(c.myWindow < channelWindowSize/2) {\n\t\tsendAdj = c.myConsumed\n\t\tc.myConsumed = 0\n\t\tc.myWindow += sendAdj\n\t}\n\tc.windowMu.Unlock()\n\tif sendAdj == 0 {\n\t\treturn nil\n\t}\n\treturn c.sendMessage(windowAdjustMsg{\n\t\tAdditionalBytes: sendAdj,\n\t})\n}\n\nfunc (c *channel) ReadExtended(data []byte, extended uint32) (n int, err error) {\n\tswitch extended {\n\tcase 1:\n\t\tn, err = c.extPending.Read(data)\n\tcase 0:\n\t\tn, err = c.pending.Read(data)\n\tdefault:\n\t\treturn 0, fmt.Errorf(\"ssh: extended code %d unimplemented\", extended)\n\t}\n\n\tif n > 0 {\n\t\terr = c.adjustWindow(uint32(n))\n\t\t// sendWindowAdjust can return io.EOF if the remote\n\t\t// peer has closed the connection, however we want to\n\t\t// defer forwarding io.EOF to the caller of Read until\n\t\t// the buffer has been drained.\n\t\tif n > 0 && err == io.EOF {\n\t\t\terr = nil\n\t\t}\n\t}\n\n\treturn n, err\n}\n\nfunc (c *channel) close() {\n\tc.pending.eof()\n\tc.extPending.eof()\n\tclose(c.msg)\n\tclose(c.incomingRequests)\n\tc.writeMu.Lock()\n\t// This is not necessary for a normal channel teardown, but if\n\t// there was another error, it is.\n\tc.sentClose = true\n\tc.writeMu.Unlock()\n\t// Unblock writers.\n\tc.remoteWin.close()\n}\n\n// responseMessageReceived is called when a success or failure message is\n// received on a channel to check that such a message is reasonable for the\n// given channel.\nfunc (ch *channel) responseMessageReceived() error {\n\tif ch.direction == channelInbound {\n\t\treturn errors.New(\"ssh: channel response message received on inbound channel\")\n\t}\n\tif ch.decided {\n\t\treturn errors.New(\"ssh: duplicate response received for channel\")\n\t}\n\tch.decided = true\n\treturn nil\n}\n\nfunc (ch *channel) handlePacket(packet []byte) error {\n\tswitch packet[0] {\n\tcase msgChannelData, msgChannelExtendedData:\n\t\treturn ch.handleData(packet)\n\tcase msgChannelClose:\n\t\tch.sendMessage(channelCloseMsg{PeersID: ch.remoteId})\n\t\tch.mux.chanList.remove(ch.localId)\n\t\tch.close()\n\t\treturn nil\n\tcase msgChannelEOF:\n\t\t// RFC 4254 is mute on how EOF affects dataExt messages but\n\t\t// it is logical to signal EOF at the same time.\n\t\tch.extPending.eof()\n\t\tch.pending.eof()\n\t\treturn nil\n\t}\n\n\tdecoded, err := decode(packet)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tswitch msg := decoded.(type) {\n\tcase *channelOpenFailureMsg:\n\t\tif err := ch.responseMessageReceived(); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tch.mux.chanList.remove(msg.PeersID)\n\t\tch.msg <- msg\n\tcase *channelOpenConfirmMsg:\n\t\tif err := ch.responseMessageReceived(); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif msg.MaxPacketSize < minPacketLength || msg.MaxPacketSize > 1<<31 {\n\t\t\treturn fmt.Errorf(\"ssh: invalid MaxPacketSize %d from peer\", msg.MaxPacketSize)\n\t\t}\n\t\tch.remoteId = msg.MyID\n\t\tch.maxRemotePayload = msg.MaxPacketSize\n\t\tch.remoteWin.add(msg.MyWindow)\n\t\tch.msg <- msg\n\tcase *windowAdjustMsg:\n\t\tif !ch.remoteWin.add(msg.AdditionalBytes) {\n\t\t\treturn fmt.Errorf(\"ssh: invalid window update for %d bytes\", msg.AdditionalBytes)\n\t\t}\n\tcase *channelRequestMsg:\n\t\treq := Request{\n\t\t\tType:      msg.Request,\n\t\t\tWantReply: msg.WantReply,\n\t\t\tPayload:   msg.RequestSpecificData,\n\t\t\tch:        ch,\n\t\t}\n\n\t\tch.incomingRequests <- &req\n\tdefault:\n\t\tch.msg <- msg\n\t}\n\treturn nil\n}\n\nfunc (m *mux) newChannel(chanType string, direction channelDirection, extraData []byte) *channel {\n\tch := &channel{\n\t\tremoteWin:        window{Cond: newCond()},\n\t\tmyWindow:         channelWindowSize,\n\t\tpending:          newBuffer(),\n\t\textPending:       newBuffer(),\n\t\tdirection:        direction,\n\t\tincomingRequests: make(chan *Request, chanSize),\n\t\tmsg:              make(chan interface{}, chanSize),\n\t\tchanType:         chanType,\n\t\textraData:        extraData,\n\t\tmux:              m,\n\t\tpacketPool:       make(map[uint32][]byte),\n\t}\n\tch.localId = m.chanList.add(ch)\n\treturn ch\n}\n\nvar errUndecided = errors.New(\"ssh: must Accept or Reject channel\")\nvar errDecidedAlready = errors.New(\"ssh: can call Accept or Reject only once\")\n\ntype extChannel struct {\n\tcode uint32\n\tch   *channel\n}\n\nfunc (e *extChannel) Write(data []byte) (n int, err error) {\n\treturn e.ch.WriteExtended(data, e.code)\n}\n\nfunc (e *extChannel) Read(data []byte) (n int, err error) {\n\treturn e.ch.ReadExtended(data, e.code)\n}\n\nfunc (ch *channel) Accept() (Channel, <-chan *Request, error) {\n\tif ch.decided {\n\t\treturn nil, nil, errDecidedAlready\n\t}\n\tch.maxIncomingPayload = channelMaxPacket\n\tconfirm := channelOpenConfirmMsg{\n\t\tPeersID:       ch.remoteId,\n\t\tMyID:          ch.localId,\n\t\tMyWindow:      ch.myWindow,\n\t\tMaxPacketSize: ch.maxIncomingPayload,\n\t}\n\tch.decided = true\n\tif err := ch.sendMessage(confirm); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\treturn ch, ch.incomingRequests, nil\n}\n\nfunc (ch *channel) Reject(reason RejectionReason, message string) error {\n\tif ch.decided {\n\t\treturn errDecidedAlready\n\t}\n\treject := channelOpenFailureMsg{\n\t\tPeersID:  ch.remoteId,\n\t\tReason:   reason,\n\t\tMessage:  message,\n\t\tLanguage: \"en\",\n\t}\n\tch.decided = true\n\treturn ch.sendMessage(reject)\n}\n\nfunc (ch *channel) Read(data []byte) (int, error) {\n\tif !ch.decided {\n\t\treturn 0, errUndecided\n\t}\n\treturn ch.ReadExtended(data, 0)\n}\n\nfunc (ch *channel) Write(data []byte) (int, error) {\n\tif !ch.decided {\n\t\treturn 0, errUndecided\n\t}\n\treturn ch.WriteExtended(data, 0)\n}\n\nfunc (ch *channel) CloseWrite() error {\n\tif !ch.decided {\n\t\treturn errUndecided\n\t}\n\tch.sentEOF = true\n\treturn ch.sendMessage(channelEOFMsg{\n\t\tPeersID: ch.remoteId})\n}\n\nfunc (ch *channel) Close() error {\n\tif !ch.decided {\n\t\treturn errUndecided\n\t}\n\n\treturn ch.sendMessage(channelCloseMsg{\n\t\tPeersID: ch.remoteId})\n}\n\n// Extended returns an io.ReadWriter that sends and receives data on the given,\n// SSH extended stream. Such streams are used, for example, for stderr.\nfunc (ch *channel) Extended(code uint32) io.ReadWriter {\n\tif !ch.decided {\n\t\treturn nil\n\t}\n\treturn &extChannel{code, ch}\n}\n\nfunc (ch *channel) Stderr() io.ReadWriter {\n\treturn ch.Extended(1)\n}\n\nfunc (ch *channel) SendRequest(name string, wantReply bool, payload []byte) (bool, error) {\n\tif !ch.decided {\n\t\treturn false, errUndecided\n\t}\n\n\tif wantReply {\n\t\tch.sentRequestMu.Lock()\n\t\tdefer ch.sentRequestMu.Unlock()\n\t}\n\n\tmsg := channelRequestMsg{\n\t\tPeersID:             ch.remoteId,\n\t\tRequest:             name,\n\t\tWantReply:           wantReply,\n\t\tRequestSpecificData: payload,\n\t}\n\n\tif err := ch.sendMessage(msg); err != nil {\n\t\treturn false, err\n\t}\n\n\tif wantReply {\n\t\tm, ok := (<-ch.msg)\n\t\tif !ok {\n\t\t\treturn false, io.EOF\n\t\t}\n\t\tswitch m.(type) {\n\t\tcase *channelRequestFailureMsg:\n\t\t\treturn false, nil\n\t\tcase *channelRequestSuccessMsg:\n\t\t\treturn true, nil\n\t\tdefault:\n\t\t\treturn false, fmt.Errorf(\"ssh: unexpected response to channel request: %#v\", m)\n\t\t}\n\t}\n\n\treturn false, nil\n}\n\n// ackRequest either sends an ack or nack to the channel request.\nfunc (ch *channel) ackRequest(ok bool) error {\n\tif !ch.decided {\n\t\treturn errUndecided\n\t}\n\n\tvar msg interface{}\n\tif !ok {\n\t\tmsg = channelRequestFailureMsg{\n\t\t\tPeersID: ch.remoteId,\n\t\t}\n\t} else {\n\t\tmsg = channelRequestSuccessMsg{\n\t\t\tPeersID: ch.remoteId,\n\t\t}\n\t}\n\treturn ch.sendMessage(msg)\n}\n\nfunc (ch *channel) ChannelType() string {\n\treturn ch.chanType\n}\n\nfunc (ch *channel) ExtraData() []byte {\n\treturn ch.extraData\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/crypto/ssh/cipher.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage ssh\n\nimport (\n\t\"crypto/aes\"\n\t\"crypto/cipher\"\n\t\"crypto/des\"\n\t\"crypto/fips140\"\n\t\"crypto/rc4\"\n\t\"crypto/subtle\"\n\t\"encoding/binary\"\n\t\"errors\"\n\t\"fmt\"\n\t\"hash\"\n\t\"io\"\n\t\"slices\"\n\n\t\"golang.org/x/crypto/chacha20\"\n\t\"golang.org/x/crypto/internal/poly1305\"\n)\n\nconst (\n\tpacketSizeMultiple = 16 // TODO(huin) this should be determined by the cipher.\n\n\t// RFC 4253 section 6.1 defines a minimum packet size of 32768 that implementations\n\t// MUST be able to process (plus a few more kilobytes for padding and mac). The RFC\n\t// indicates implementations SHOULD be able to handle larger packet sizes, but then\n\t// waffles on about reasonable limits.\n\t//\n\t// OpenSSH caps their maxPacket at 256kB so we choose to do\n\t// the same. maxPacket is also used to ensure that uint32\n\t// length fields do not overflow, so it should remain well\n\t// below 4G.\n\tmaxPacket = 256 * 1024\n)\n\n// noneCipher implements cipher.Stream and provides no encryption. It is used\n// by the transport before the first key-exchange.\ntype noneCipher struct{}\n\nfunc (c noneCipher) XORKeyStream(dst, src []byte) {\n\tcopy(dst, src)\n}\n\nfunc newAESCTR(key, iv []byte) (cipher.Stream, error) {\n\tc, err := aes.NewCipher(key)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn cipher.NewCTR(c, iv), nil\n}\n\nfunc newRC4(key, iv []byte) (cipher.Stream, error) {\n\treturn rc4.NewCipher(key)\n}\n\ntype cipherMode struct {\n\tkeySize int\n\tivSize  int\n\tcreate  func(key, iv []byte, macKey []byte, algs DirectionAlgorithms) (packetCipher, error)\n}\n\nfunc streamCipherMode(skip int, createFunc func(key, iv []byte) (cipher.Stream, error)) func(key, iv []byte, macKey []byte, algs DirectionAlgorithms) (packetCipher, error) {\n\treturn func(key, iv, macKey []byte, algs DirectionAlgorithms) (packetCipher, error) {\n\t\tstream, err := createFunc(key, iv)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tvar streamDump []byte\n\t\tif skip > 0 {\n\t\t\tstreamDump = make([]byte, 512)\n\t\t}\n\n\t\tfor remainingToDump := skip; remainingToDump > 0; {\n\t\t\tdumpThisTime := remainingToDump\n\t\t\tif dumpThisTime > len(streamDump) {\n\t\t\t\tdumpThisTime = len(streamDump)\n\t\t\t}\n\t\t\tstream.XORKeyStream(streamDump[:dumpThisTime], streamDump[:dumpThisTime])\n\t\t\tremainingToDump -= dumpThisTime\n\t\t}\n\n\t\tmac := macModes[algs.MAC].new(macKey)\n\t\treturn &streamPacketCipher{\n\t\t\tmac:       mac,\n\t\t\tetm:       macModes[algs.MAC].etm,\n\t\t\tmacResult: make([]byte, mac.Size()),\n\t\t\tcipher:    stream,\n\t\t}, nil\n\t}\n}\n\n// cipherModes documents properties of supported ciphers. Ciphers not included\n// are not supported and will not be negotiated, even if explicitly configured.\n// When FIPS mode is enabled, only FIPS-approved algorithms are included.\nvar cipherModes = map[string]*cipherMode{}\n\nfunc init() {\n\tcipherModes[CipherAES128CTR] = &cipherMode{16, aes.BlockSize, streamCipherMode(0, newAESCTR)}\n\tcipherModes[CipherAES192CTR] = &cipherMode{24, aes.BlockSize, streamCipherMode(0, newAESCTR)}\n\tcipherModes[CipherAES256CTR] = &cipherMode{32, aes.BlockSize, streamCipherMode(0, newAESCTR)}\n\t//  Use of GCM with arbitrary IVs is not allowed in FIPS 140-only mode,\n\t// we'll wire it up to NewGCMForSSH in Go 1.26.\n\t//\n\t// For now it means we'll work with fips140=on but not fips140=only.\n\tcipherModes[CipherAES128GCM] = &cipherMode{16, 12, newGCMCipher}\n\tcipherModes[CipherAES256GCM] = &cipherMode{32, 12, newGCMCipher}\n\n\tif fips140.Enabled() {\n\t\tdefaultCiphers = slices.DeleteFunc(defaultCiphers, func(algo string) bool {\n\t\t\t_, ok := cipherModes[algo]\n\t\t\treturn !ok\n\t\t})\n\t\treturn\n\t}\n\n\tcipherModes[CipherChaCha20Poly1305] = &cipherMode{64, 0, newChaCha20Cipher}\n\t// Insecure ciphers not included in the default configuration.\n\tcipherModes[InsecureCipherRC4128] = &cipherMode{16, 0, streamCipherMode(1536, newRC4)}\n\tcipherModes[InsecureCipherRC4256] = &cipherMode{32, 0, streamCipherMode(1536, newRC4)}\n\tcipherModes[InsecureCipherRC4] = &cipherMode{16, 0, streamCipherMode(0, newRC4)}\n\t// CBC mode is insecure and so is not included in the default config.\n\t// (See https://www.ieee-security.org/TC/SP2013/papers/4977a526.pdf). If absolutely\n\t// needed, it's possible to specify a custom Config to enable it.\n\t// You should expect that an active attacker can recover plaintext if\n\t// you do.\n\tcipherModes[InsecureCipherAES128CBC] = &cipherMode{16, aes.BlockSize, newAESCBCCipher}\n\tcipherModes[InsecureCipherTripleDESCBC] = &cipherMode{24, des.BlockSize, newTripleDESCBCCipher}\n}\n\n// prefixLen is the length of the packet prefix that contains the packet length\n// and number of padding bytes.\nconst prefixLen = 5\n\n// streamPacketCipher is a packetCipher using a stream cipher.\ntype streamPacketCipher struct {\n\tmac    hash.Hash\n\tcipher cipher.Stream\n\tetm    bool\n\n\t// The following members are to avoid per-packet allocations.\n\tprefix      [prefixLen]byte\n\tseqNumBytes [4]byte\n\tpadding     [2 * packetSizeMultiple]byte\n\tpacketData  []byte\n\tmacResult   []byte\n}\n\n// readCipherPacket reads and decrypt a single packet from the reader argument.\nfunc (s *streamPacketCipher) readCipherPacket(seqNum uint32, r io.Reader) ([]byte, error) {\n\tif _, err := io.ReadFull(r, s.prefix[:]); err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar encryptedPaddingLength [1]byte\n\tif s.mac != nil && s.etm {\n\t\tcopy(encryptedPaddingLength[:], s.prefix[4:5])\n\t\ts.cipher.XORKeyStream(s.prefix[4:5], s.prefix[4:5])\n\t} else {\n\t\ts.cipher.XORKeyStream(s.prefix[:], s.prefix[:])\n\t}\n\n\tlength := binary.BigEndian.Uint32(s.prefix[0:4])\n\tpaddingLength := uint32(s.prefix[4])\n\n\tvar macSize uint32\n\tif s.mac != nil {\n\t\ts.mac.Reset()\n\t\tbinary.BigEndian.PutUint32(s.seqNumBytes[:], seqNum)\n\t\ts.mac.Write(s.seqNumBytes[:])\n\t\tif s.etm {\n\t\t\ts.mac.Write(s.prefix[:4])\n\t\t\ts.mac.Write(encryptedPaddingLength[:])\n\t\t} else {\n\t\t\ts.mac.Write(s.prefix[:])\n\t\t}\n\t\tmacSize = uint32(s.mac.Size())\n\t}\n\n\tif length <= paddingLength+1 {\n\t\treturn nil, errors.New(\"ssh: invalid packet length, packet too small\")\n\t}\n\n\tif length > maxPacket {\n\t\treturn nil, errors.New(\"ssh: invalid packet length, packet too large\")\n\t}\n\n\t// the maxPacket check above ensures that length-1+macSize\n\t// does not overflow.\n\tif uint32(cap(s.packetData)) < length-1+macSize {\n\t\ts.packetData = make([]byte, length-1+macSize)\n\t} else {\n\t\ts.packetData = s.packetData[:length-1+macSize]\n\t}\n\n\tif _, err := io.ReadFull(r, s.packetData); err != nil {\n\t\treturn nil, err\n\t}\n\tmac := s.packetData[length-1:]\n\tdata := s.packetData[:length-1]\n\n\tif s.mac != nil && s.etm {\n\t\ts.mac.Write(data)\n\t}\n\n\ts.cipher.XORKeyStream(data, data)\n\n\tif s.mac != nil {\n\t\tif !s.etm {\n\t\t\ts.mac.Write(data)\n\t\t}\n\t\ts.macResult = s.mac.Sum(s.macResult[:0])\n\t\tif subtle.ConstantTimeCompare(s.macResult, mac) != 1 {\n\t\t\treturn nil, errors.New(\"ssh: MAC failure\")\n\t\t}\n\t}\n\n\treturn s.packetData[:length-paddingLength-1], nil\n}\n\n// writeCipherPacket encrypts and sends a packet of data to the writer argument\nfunc (s *streamPacketCipher) writeCipherPacket(seqNum uint32, w io.Writer, rand io.Reader, packet []byte) error {\n\tif len(packet) > maxPacket {\n\t\treturn errors.New(\"ssh: packet too large\")\n\t}\n\n\taadlen := 0\n\tif s.mac != nil && s.etm {\n\t\t// packet length is not encrypted for EtM modes\n\t\taadlen = 4\n\t}\n\n\tpaddingLength := packetSizeMultiple - (prefixLen+len(packet)-aadlen)%packetSizeMultiple\n\tif paddingLength < 4 {\n\t\tpaddingLength += packetSizeMultiple\n\t}\n\n\tlength := len(packet) + 1 + paddingLength\n\tbinary.BigEndian.PutUint32(s.prefix[:], uint32(length))\n\ts.prefix[4] = byte(paddingLength)\n\tpadding := s.padding[:paddingLength]\n\tif _, err := io.ReadFull(rand, padding); err != nil {\n\t\treturn err\n\t}\n\n\tif s.mac != nil {\n\t\ts.mac.Reset()\n\t\tbinary.BigEndian.PutUint32(s.seqNumBytes[:], seqNum)\n\t\ts.mac.Write(s.seqNumBytes[:])\n\n\t\tif s.etm {\n\t\t\t// For EtM algorithms, the packet length must stay unencrypted,\n\t\t\t// but the following data (padding length) must be encrypted\n\t\t\ts.cipher.XORKeyStream(s.prefix[4:5], s.prefix[4:5])\n\t\t}\n\n\t\ts.mac.Write(s.prefix[:])\n\n\t\tif !s.etm {\n\t\t\t// For non-EtM algorithms, the algorithm is applied on unencrypted data\n\t\t\ts.mac.Write(packet)\n\t\t\ts.mac.Write(padding)\n\t\t}\n\t}\n\n\tif !(s.mac != nil && s.etm) {\n\t\t// For EtM algorithms, the padding length has already been encrypted\n\t\t// and the packet length must remain unencrypted\n\t\ts.cipher.XORKeyStream(s.prefix[:], s.prefix[:])\n\t}\n\n\ts.cipher.XORKeyStream(packet, packet)\n\ts.cipher.XORKeyStream(padding, padding)\n\n\tif s.mac != nil && s.etm {\n\t\t// For EtM algorithms, packet and padding must be encrypted\n\t\ts.mac.Write(packet)\n\t\ts.mac.Write(padding)\n\t}\n\n\tif _, err := w.Write(s.prefix[:]); err != nil {\n\t\treturn err\n\t}\n\tif _, err := w.Write(packet); err != nil {\n\t\treturn err\n\t}\n\tif _, err := w.Write(padding); err != nil {\n\t\treturn err\n\t}\n\n\tif s.mac != nil {\n\t\ts.macResult = s.mac.Sum(s.macResult[:0])\n\t\tif _, err := w.Write(s.macResult); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n\ntype gcmCipher struct {\n\taead   cipher.AEAD\n\tprefix [4]byte\n\tiv     []byte\n\tbuf    []byte\n}\n\nfunc newGCMCipher(key, iv, unusedMacKey []byte, unusedAlgs DirectionAlgorithms) (packetCipher, error) {\n\tc, err := aes.NewCipher(key)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\taead, err := cipher.NewGCM(c)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &gcmCipher{\n\t\taead: aead,\n\t\tiv:   iv,\n\t}, nil\n}\n\nconst gcmTagSize = 16\n\nfunc (c *gcmCipher) writeCipherPacket(seqNum uint32, w io.Writer, rand io.Reader, packet []byte) error {\n\t// Pad out to multiple of 16 bytes. This is different from the\n\t// stream cipher because that encrypts the length too.\n\tpadding := byte(packetSizeMultiple - (1+len(packet))%packetSizeMultiple)\n\tif padding < 4 {\n\t\tpadding += packetSizeMultiple\n\t}\n\n\tlength := uint32(len(packet) + int(padding) + 1)\n\tbinary.BigEndian.PutUint32(c.prefix[:], length)\n\tif _, err := w.Write(c.prefix[:]); err != nil {\n\t\treturn err\n\t}\n\n\tif cap(c.buf) < int(length) {\n\t\tc.buf = make([]byte, length)\n\t} else {\n\t\tc.buf = c.buf[:length]\n\t}\n\n\tc.buf[0] = padding\n\tcopy(c.buf[1:], packet)\n\tif _, err := io.ReadFull(rand, c.buf[1+len(packet):]); err != nil {\n\t\treturn err\n\t}\n\tc.buf = c.aead.Seal(c.buf[:0], c.iv, c.buf, c.prefix[:])\n\tif _, err := w.Write(c.buf); err != nil {\n\t\treturn err\n\t}\n\tc.incIV()\n\n\treturn nil\n}\n\nfunc (c *gcmCipher) incIV() {\n\tfor i := 4 + 7; i >= 4; i-- {\n\t\tc.iv[i]++\n\t\tif c.iv[i] != 0 {\n\t\t\tbreak\n\t\t}\n\t}\n}\n\nfunc (c *gcmCipher) readCipherPacket(seqNum uint32, r io.Reader) ([]byte, error) {\n\tif _, err := io.ReadFull(r, c.prefix[:]); err != nil {\n\t\treturn nil, err\n\t}\n\tlength := binary.BigEndian.Uint32(c.prefix[:])\n\tif length > maxPacket {\n\t\treturn nil, errors.New(\"ssh: max packet length exceeded\")\n\t}\n\n\tif cap(c.buf) < int(length+gcmTagSize) {\n\t\tc.buf = make([]byte, length+gcmTagSize)\n\t} else {\n\t\tc.buf = c.buf[:length+gcmTagSize]\n\t}\n\n\tif _, err := io.ReadFull(r, c.buf); err != nil {\n\t\treturn nil, err\n\t}\n\n\tplain, err := c.aead.Open(c.buf[:0], c.iv, c.buf, c.prefix[:])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tc.incIV()\n\n\tif len(plain) == 0 {\n\t\treturn nil, errors.New(\"ssh: empty packet\")\n\t}\n\n\tpadding := plain[0]\n\tif padding < 4 {\n\t\t// padding is a byte, so it automatically satisfies\n\t\t// the maximum size, which is 255.\n\t\treturn nil, fmt.Errorf(\"ssh: illegal padding %d\", padding)\n\t}\n\n\tif int(padding+1) >= len(plain) {\n\t\treturn nil, fmt.Errorf(\"ssh: padding %d too large\", padding)\n\t}\n\tplain = plain[1 : length-uint32(padding)]\n\treturn plain, nil\n}\n\n// cbcCipher implements aes128-cbc cipher defined in RFC 4253 section 6.1\ntype cbcCipher struct {\n\tmac       hash.Hash\n\tmacSize   uint32\n\tdecrypter cipher.BlockMode\n\tencrypter cipher.BlockMode\n\n\t// The following members are to avoid per-packet allocations.\n\tseqNumBytes [4]byte\n\tpacketData  []byte\n\tmacResult   []byte\n\n\t// Amount of data we should still read to hide which\n\t// verification error triggered.\n\toracleCamouflage uint32\n}\n\nfunc newCBCCipher(c cipher.Block, key, iv, macKey []byte, algs DirectionAlgorithms) (packetCipher, error) {\n\tcbc := &cbcCipher{\n\t\tmac:        macModes[algs.MAC].new(macKey),\n\t\tdecrypter:  cipher.NewCBCDecrypter(c, iv),\n\t\tencrypter:  cipher.NewCBCEncrypter(c, iv),\n\t\tpacketData: make([]byte, 1024),\n\t}\n\tif cbc.mac != nil {\n\t\tcbc.macSize = uint32(cbc.mac.Size())\n\t}\n\n\treturn cbc, nil\n}\n\nfunc newAESCBCCipher(key, iv, macKey []byte, algs DirectionAlgorithms) (packetCipher, error) {\n\tc, err := aes.NewCipher(key)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tcbc, err := newCBCCipher(c, key, iv, macKey, algs)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn cbc, nil\n}\n\nfunc newTripleDESCBCCipher(key, iv, macKey []byte, algs DirectionAlgorithms) (packetCipher, error) {\n\tc, err := des.NewTripleDESCipher(key)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tcbc, err := newCBCCipher(c, key, iv, macKey, algs)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn cbc, nil\n}\n\nfunc maxUInt32(a, b int) uint32 {\n\tif a > b {\n\t\treturn uint32(a)\n\t}\n\treturn uint32(b)\n}\n\nconst (\n\tcbcMinPacketSizeMultiple = 8\n\tcbcMinPacketSize         = 16\n\tcbcMinPaddingSize        = 4\n)\n\n// cbcError represents a verification error that may leak information.\ntype cbcError string\n\nfunc (e cbcError) Error() string { return string(e) }\n\nfunc (c *cbcCipher) readCipherPacket(seqNum uint32, r io.Reader) ([]byte, error) {\n\tp, err := c.readCipherPacketLeaky(seqNum, r)\n\tif err != nil {\n\t\tif _, ok := err.(cbcError); ok {\n\t\t\t// Verification error: read a fixed amount of\n\t\t\t// data, to make distinguishing between\n\t\t\t// failing MAC and failing length check more\n\t\t\t// difficult.\n\t\t\tio.CopyN(io.Discard, r, int64(c.oracleCamouflage))\n\t\t}\n\t}\n\treturn p, err\n}\n\nfunc (c *cbcCipher) readCipherPacketLeaky(seqNum uint32, r io.Reader) ([]byte, error) {\n\tblockSize := c.decrypter.BlockSize()\n\n\t// Read the header, which will include some of the subsequent data in the\n\t// case of block ciphers - this is copied back to the payload later.\n\t// How many bytes of payload/padding will be read with this first read.\n\tfirstBlockLength := uint32((prefixLen + blockSize - 1) / blockSize * blockSize)\n\tfirstBlock := c.packetData[:firstBlockLength]\n\tif _, err := io.ReadFull(r, firstBlock); err != nil {\n\t\treturn nil, err\n\t}\n\n\tc.oracleCamouflage = maxPacket + 4 + c.macSize - firstBlockLength\n\n\tc.decrypter.CryptBlocks(firstBlock, firstBlock)\n\tlength := binary.BigEndian.Uint32(firstBlock[:4])\n\tif length > maxPacket {\n\t\treturn nil, cbcError(\"ssh: packet too large\")\n\t}\n\tif length+4 < maxUInt32(cbcMinPacketSize, blockSize) {\n\t\t// The minimum size of a packet is 16 (or the cipher block size, whichever\n\t\t// is larger) bytes.\n\t\treturn nil, cbcError(\"ssh: packet too small\")\n\t}\n\t// The length of the packet (including the length field but not the MAC) must\n\t// be a multiple of the block size or 8, whichever is larger.\n\tif (length+4)%maxUInt32(cbcMinPacketSizeMultiple, blockSize) != 0 {\n\t\treturn nil, cbcError(\"ssh: invalid packet length multiple\")\n\t}\n\n\tpaddingLength := uint32(firstBlock[4])\n\tif paddingLength < cbcMinPaddingSize || length <= paddingLength+1 {\n\t\treturn nil, cbcError(\"ssh: invalid packet length\")\n\t}\n\n\t// Positions within the c.packetData buffer:\n\tmacStart := 4 + length\n\tpaddingStart := macStart - paddingLength\n\n\t// Entire packet size, starting before length, ending at end of mac.\n\tentirePacketSize := macStart + c.macSize\n\n\t// Ensure c.packetData is large enough for the entire packet data.\n\tif uint32(cap(c.packetData)) < entirePacketSize {\n\t\t// Still need to upsize and copy, but this should be rare at runtime, only\n\t\t// on upsizing the packetData buffer.\n\t\tc.packetData = make([]byte, entirePacketSize)\n\t\tcopy(c.packetData, firstBlock)\n\t} else {\n\t\tc.packetData = c.packetData[:entirePacketSize]\n\t}\n\n\tn, err := io.ReadFull(r, c.packetData[firstBlockLength:])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tc.oracleCamouflage -= uint32(n)\n\n\tremainingCrypted := c.packetData[firstBlockLength:macStart]\n\tc.decrypter.CryptBlocks(remainingCrypted, remainingCrypted)\n\n\tmac := c.packetData[macStart:]\n\tif c.mac != nil {\n\t\tc.mac.Reset()\n\t\tbinary.BigEndian.PutUint32(c.seqNumBytes[:], seqNum)\n\t\tc.mac.Write(c.seqNumBytes[:])\n\t\tc.mac.Write(c.packetData[:macStart])\n\t\tc.macResult = c.mac.Sum(c.macResult[:0])\n\t\tif subtle.ConstantTimeCompare(c.macResult, mac) != 1 {\n\t\t\treturn nil, cbcError(\"ssh: MAC failure\")\n\t\t}\n\t}\n\n\treturn c.packetData[prefixLen:paddingStart], nil\n}\n\nfunc (c *cbcCipher) writeCipherPacket(seqNum uint32, w io.Writer, rand io.Reader, packet []byte) error {\n\teffectiveBlockSize := maxUInt32(cbcMinPacketSizeMultiple, c.encrypter.BlockSize())\n\n\t// Length of encrypted portion of the packet (header, payload, padding).\n\t// Enforce minimum padding and packet size.\n\tencLength := maxUInt32(prefixLen+len(packet)+cbcMinPaddingSize, cbcMinPaddingSize)\n\t// Enforce block size.\n\tencLength = (encLength + effectiveBlockSize - 1) / effectiveBlockSize * effectiveBlockSize\n\n\tlength := encLength - 4\n\tpaddingLength := int(length) - (1 + len(packet))\n\n\t// Overall buffer contains: header, payload, padding, mac.\n\t// Space for the MAC is reserved in the capacity but not the slice length.\n\tbufferSize := encLength + c.macSize\n\tif uint32(cap(c.packetData)) < bufferSize {\n\t\tc.packetData = make([]byte, encLength, bufferSize)\n\t} else {\n\t\tc.packetData = c.packetData[:encLength]\n\t}\n\n\tp := c.packetData\n\n\t// Packet header.\n\tbinary.BigEndian.PutUint32(p, length)\n\tp = p[4:]\n\tp[0] = byte(paddingLength)\n\n\t// Payload.\n\tp = p[1:]\n\tcopy(p, packet)\n\n\t// Padding.\n\tp = p[len(packet):]\n\tif _, err := io.ReadFull(rand, p); err != nil {\n\t\treturn err\n\t}\n\n\tif c.mac != nil {\n\t\tc.mac.Reset()\n\t\tbinary.BigEndian.PutUint32(c.seqNumBytes[:], seqNum)\n\t\tc.mac.Write(c.seqNumBytes[:])\n\t\tc.mac.Write(c.packetData)\n\t\t// The MAC is now appended into the capacity reserved for it earlier.\n\t\tc.packetData = c.mac.Sum(c.packetData)\n\t}\n\n\tc.encrypter.CryptBlocks(c.packetData[:encLength], c.packetData[:encLength])\n\n\tif _, err := w.Write(c.packetData); err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\n// chacha20Poly1305Cipher implements the chacha20-poly1305@openssh.com\n// AEAD, which is described here:\n//\n//\thttps://tools.ietf.org/html/draft-josefsson-ssh-chacha20-poly1305-openssh-00\n//\n// the methods here also implement padding, which RFC 4253 Section 6\n// also requires of stream ciphers.\ntype chacha20Poly1305Cipher struct {\n\tlengthKey  [32]byte\n\tcontentKey [32]byte\n\tbuf        []byte\n}\n\nfunc newChaCha20Cipher(key, unusedIV, unusedMACKey []byte, unusedAlgs DirectionAlgorithms) (packetCipher, error) {\n\tif len(key) != 64 {\n\t\tpanic(len(key))\n\t}\n\n\tc := &chacha20Poly1305Cipher{\n\t\tbuf: make([]byte, 256),\n\t}\n\n\tcopy(c.contentKey[:], key[:32])\n\tcopy(c.lengthKey[:], key[32:])\n\treturn c, nil\n}\n\nfunc (c *chacha20Poly1305Cipher) readCipherPacket(seqNum uint32, r io.Reader) ([]byte, error) {\n\tnonce := make([]byte, 12)\n\tbinary.BigEndian.PutUint32(nonce[8:], seqNum)\n\ts, err := chacha20.NewUnauthenticatedCipher(c.contentKey[:], nonce)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tvar polyKey, discardBuf [32]byte\n\ts.XORKeyStream(polyKey[:], polyKey[:])\n\ts.XORKeyStream(discardBuf[:], discardBuf[:]) // skip the next 32 bytes\n\n\tencryptedLength := c.buf[:4]\n\tif _, err := io.ReadFull(r, encryptedLength); err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar lenBytes [4]byte\n\tls, err := chacha20.NewUnauthenticatedCipher(c.lengthKey[:], nonce)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tls.XORKeyStream(lenBytes[:], encryptedLength)\n\n\tlength := binary.BigEndian.Uint32(lenBytes[:])\n\tif length > maxPacket {\n\t\treturn nil, errors.New(\"ssh: invalid packet length, packet too large\")\n\t}\n\n\tcontentEnd := 4 + length\n\tpacketEnd := contentEnd + poly1305.TagSize\n\tif uint32(cap(c.buf)) < packetEnd {\n\t\tc.buf = make([]byte, packetEnd)\n\t\tcopy(c.buf[:], encryptedLength)\n\t} else {\n\t\tc.buf = c.buf[:packetEnd]\n\t}\n\n\tif _, err := io.ReadFull(r, c.buf[4:packetEnd]); err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar mac [poly1305.TagSize]byte\n\tcopy(mac[:], c.buf[contentEnd:packetEnd])\n\tif !poly1305.Verify(&mac, c.buf[:contentEnd], &polyKey) {\n\t\treturn nil, errors.New(\"ssh: MAC failure\")\n\t}\n\n\tplain := c.buf[4:contentEnd]\n\ts.XORKeyStream(plain, plain)\n\n\tif len(plain) == 0 {\n\t\treturn nil, errors.New(\"ssh: empty packet\")\n\t}\n\n\tpadding := plain[0]\n\tif padding < 4 {\n\t\t// padding is a byte, so it automatically satisfies\n\t\t// the maximum size, which is 255.\n\t\treturn nil, fmt.Errorf(\"ssh: illegal padding %d\", padding)\n\t}\n\n\tif int(padding)+1 >= len(plain) {\n\t\treturn nil, fmt.Errorf(\"ssh: padding %d too large\", padding)\n\t}\n\n\tplain = plain[1 : len(plain)-int(padding)]\n\n\treturn plain, nil\n}\n\nfunc (c *chacha20Poly1305Cipher) writeCipherPacket(seqNum uint32, w io.Writer, rand io.Reader, payload []byte) error {\n\tnonce := make([]byte, 12)\n\tbinary.BigEndian.PutUint32(nonce[8:], seqNum)\n\ts, err := chacha20.NewUnauthenticatedCipher(c.contentKey[:], nonce)\n\tif err != nil {\n\t\treturn err\n\t}\n\tvar polyKey, discardBuf [32]byte\n\ts.XORKeyStream(polyKey[:], polyKey[:])\n\ts.XORKeyStream(discardBuf[:], discardBuf[:]) // skip the next 32 bytes\n\n\t// There is no blocksize, so fall back to multiple of 8 byte\n\t// padding, as described in RFC 4253, Sec 6.\n\tconst packetSizeMultiple = 8\n\n\tpadding := packetSizeMultiple - (1+len(payload))%packetSizeMultiple\n\tif padding < 4 {\n\t\tpadding += packetSizeMultiple\n\t}\n\n\t// size (4 bytes), padding (1), payload, padding, tag.\n\ttotalLength := 4 + 1 + len(payload) + padding + poly1305.TagSize\n\tif cap(c.buf) < totalLength {\n\t\tc.buf = make([]byte, totalLength)\n\t} else {\n\t\tc.buf = c.buf[:totalLength]\n\t}\n\n\tbinary.BigEndian.PutUint32(c.buf, uint32(1+len(payload)+padding))\n\tls, err := chacha20.NewUnauthenticatedCipher(c.lengthKey[:], nonce)\n\tif err != nil {\n\t\treturn err\n\t}\n\tls.XORKeyStream(c.buf, c.buf[:4])\n\tc.buf[4] = byte(padding)\n\tcopy(c.buf[5:], payload)\n\tpacketEnd := 5 + len(payload) + padding\n\tif _, err := io.ReadFull(rand, c.buf[5+len(payload):packetEnd]); err != nil {\n\t\treturn err\n\t}\n\n\ts.XORKeyStream(c.buf[4:], c.buf[4:packetEnd])\n\n\tvar mac [poly1305.TagSize]byte\n\tpoly1305.Sum(&mac, c.buf[:packetEnd], &polyKey)\n\n\tcopy(c.buf[packetEnd:], mac[:])\n\n\tif _, err := w.Write(c.buf); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/crypto/ssh/client.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage ssh\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"os\"\n\t\"sync\"\n\t\"time\"\n)\n\n// Client implements a traditional SSH client that supports shells,\n// subprocesses, TCP port/streamlocal forwarding and tunneled dialing.\ntype Client struct {\n\tConn\n\n\thandleForwardsOnce sync.Once // guards calling (*Client).handleForwards\n\n\tforwards        forwardList // forwarded tcpip connections from the remote side\n\tmu              sync.Mutex\n\tchannelHandlers map[string]chan NewChannel\n}\n\n// HandleChannelOpen returns a channel on which NewChannel requests\n// for the given type are sent. If the type already is being handled,\n// nil is returned. The channel is closed when the connection is closed.\nfunc (c *Client) HandleChannelOpen(channelType string) <-chan NewChannel {\n\tc.mu.Lock()\n\tdefer c.mu.Unlock()\n\tif c.channelHandlers == nil {\n\t\t// The SSH channel has been closed.\n\t\tc := make(chan NewChannel)\n\t\tclose(c)\n\t\treturn c\n\t}\n\n\tch := c.channelHandlers[channelType]\n\tif ch != nil {\n\t\treturn nil\n\t}\n\n\tch = make(chan NewChannel, chanSize)\n\tc.channelHandlers[channelType] = ch\n\treturn ch\n}\n\n// NewClient creates a Client on top of the given connection.\nfunc NewClient(c Conn, chans <-chan NewChannel, reqs <-chan *Request) *Client {\n\tconn := &Client{\n\t\tConn:            c,\n\t\tchannelHandlers: make(map[string]chan NewChannel, 1),\n\t}\n\n\tgo conn.handleGlobalRequests(reqs)\n\tgo conn.handleChannelOpens(chans)\n\tgo func() {\n\t\tconn.Wait()\n\t\tconn.forwards.closeAll()\n\t}()\n\treturn conn\n}\n\n// NewClientConn establishes an authenticated SSH connection using c\n// as the underlying transport.  The Request and NewChannel channels\n// must be serviced or the connection will hang.\nfunc NewClientConn(c net.Conn, addr string, config *ClientConfig) (Conn, <-chan NewChannel, <-chan *Request, error) {\n\tfullConf := *config\n\tfullConf.SetDefaults()\n\tif fullConf.HostKeyCallback == nil {\n\t\tc.Close()\n\t\treturn nil, nil, nil, errors.New(\"ssh: must specify HostKeyCallback\")\n\t}\n\n\tconn := &connection{\n\t\tsshConn: sshConn{conn: c, user: fullConf.User},\n\t}\n\n\tif err := conn.clientHandshake(addr, &fullConf); err != nil {\n\t\tc.Close()\n\t\treturn nil, nil, nil, fmt.Errorf(\"ssh: handshake failed: %w\", err)\n\t}\n\tconn.mux = newMux(conn.transport)\n\treturn conn, conn.mux.incomingChannels, conn.mux.incomingRequests, nil\n}\n\n// clientHandshake performs the client side key exchange. See RFC 4253 Section\n// 7.\nfunc (c *connection) clientHandshake(dialAddress string, config *ClientConfig) error {\n\tif config.ClientVersion != \"\" {\n\t\tc.clientVersion = []byte(config.ClientVersion)\n\t} else {\n\t\tc.clientVersion = []byte(packageVersion)\n\t}\n\tvar err error\n\tc.serverVersion, err = exchangeVersions(c.sshConn.conn, c.clientVersion)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tc.transport = newClientTransport(\n\t\tnewTransport(c.sshConn.conn, config.Rand, true /* is client */),\n\t\tc.clientVersion, c.serverVersion, config, dialAddress, c.sshConn.RemoteAddr())\n\tif err := c.transport.waitSession(); err != nil {\n\t\treturn err\n\t}\n\n\tc.sessionID = c.transport.getSessionID()\n\tc.algorithms = c.transport.getAlgorithms()\n\treturn c.clientAuthenticate(config)\n}\n\n// verifyHostKeySignature verifies the host key obtained in the key exchange.\n// algo is the negotiated algorithm, and may be a certificate type.\nfunc verifyHostKeySignature(hostKey PublicKey, algo string, result *kexResult) error {\n\tsig, rest, ok := parseSignatureBody(result.Signature)\n\tif len(rest) > 0 || !ok {\n\t\treturn errors.New(\"ssh: signature parse error\")\n\t}\n\n\tif a := underlyingAlgo(algo); sig.Format != a {\n\t\treturn fmt.Errorf(\"ssh: invalid signature algorithm %q, expected %q\", sig.Format, a)\n\t}\n\n\treturn hostKey.Verify(result.H, sig)\n}\n\n// NewSession opens a new Session for this client. (A session is a remote\n// execution of a program.)\nfunc (c *Client) NewSession() (*Session, error) {\n\tch, in, err := c.OpenChannel(\"session\", nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn newSession(ch, in)\n}\n\nfunc (c *Client) handleGlobalRequests(incoming <-chan *Request) {\n\tfor r := range incoming {\n\t\t// This handles keepalive messages and matches\n\t\t// the behaviour of OpenSSH.\n\t\tr.Reply(false, nil)\n\t}\n}\n\n// handleChannelOpens channel open messages from the remote side.\nfunc (c *Client) handleChannelOpens(in <-chan NewChannel) {\n\tfor ch := range in {\n\t\tc.mu.Lock()\n\t\thandler := c.channelHandlers[ch.ChannelType()]\n\t\tc.mu.Unlock()\n\n\t\tif handler != nil {\n\t\t\thandler <- ch\n\t\t} else {\n\t\t\tch.Reject(UnknownChannelType, fmt.Sprintf(\"unknown channel type: %v\", ch.ChannelType()))\n\t\t}\n\t}\n\n\tc.mu.Lock()\n\tfor _, ch := range c.channelHandlers {\n\t\tclose(ch)\n\t}\n\tc.channelHandlers = nil\n\tc.mu.Unlock()\n}\n\n// Dial starts a client connection to the given SSH server. It is a\n// convenience function that connects to the given network address,\n// initiates the SSH handshake, and then sets up a Client.  For access\n// to incoming channels and requests, use net.Dial with NewClientConn\n// instead.\nfunc Dial(network, addr string, config *ClientConfig) (*Client, error) {\n\tconn, err := net.DialTimeout(network, addr, config.Timeout)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tc, chans, reqs, err := NewClientConn(conn, addr, config)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn NewClient(c, chans, reqs), nil\n}\n\n// HostKeyCallback is the function type used for verifying server\n// keys.  A HostKeyCallback must return nil if the host key is OK, or\n// an error to reject it. It receives the hostname as passed to Dial\n// or NewClientConn. The remote address is the RemoteAddr of the\n// net.Conn underlying the SSH connection.\ntype HostKeyCallback func(hostname string, remote net.Addr, key PublicKey) error\n\n// BannerCallback is the function type used for treat the banner sent by\n// the server. A BannerCallback receives the message sent by the remote server.\ntype BannerCallback func(message string) error\n\n// A ClientConfig structure is used to configure a Client. It must not be\n// modified after having been passed to an SSH function.\ntype ClientConfig struct {\n\t// Config contains configuration that is shared between clients and\n\t// servers.\n\tConfig\n\n\t// User contains the username to authenticate as.\n\tUser string\n\n\t// Auth contains possible authentication methods to use with the\n\t// server. Only the first instance of a particular RFC 4252 method will\n\t// be used during authentication.\n\tAuth []AuthMethod\n\n\t// HostKeyCallback is called during the cryptographic\n\t// handshake to validate the server's host key. The client\n\t// configuration must supply this callback for the connection\n\t// to succeed. The functions InsecureIgnoreHostKey or\n\t// FixedHostKey can be used for simplistic host key checks.\n\tHostKeyCallback HostKeyCallback\n\n\t// BannerCallback is called during the SSH dance to display a custom\n\t// server's message. The client configuration can supply this callback to\n\t// handle it as wished. The function BannerDisplayStderr can be used for\n\t// simplistic display on Stderr.\n\tBannerCallback BannerCallback\n\n\t// ClientVersion contains the version identification string that will\n\t// be used for the connection. If empty, a reasonable default is used.\n\tClientVersion string\n\n\t// HostKeyAlgorithms lists the public key algorithms that the client will\n\t// accept from the server for host key authentication, in order of\n\t// preference. If empty, a reasonable default is used. Any\n\t// string returned from a PublicKey.Type method may be used, or\n\t// any of the CertAlgo and KeyAlgo constants.\n\tHostKeyAlgorithms []string\n\n\t// Timeout is the maximum amount of time for the TCP connection to establish.\n\t//\n\t// A Timeout of zero means no timeout.\n\tTimeout time.Duration\n}\n\n// InsecureIgnoreHostKey returns a function that can be used for\n// ClientConfig.HostKeyCallback to accept any host key. It should\n// not be used for production code.\nfunc InsecureIgnoreHostKey() HostKeyCallback {\n\treturn func(hostname string, remote net.Addr, key PublicKey) error {\n\t\treturn nil\n\t}\n}\n\ntype fixedHostKey struct {\n\tkey PublicKey\n}\n\nfunc (f *fixedHostKey) check(hostname string, remote net.Addr, key PublicKey) error {\n\tif f.key == nil {\n\t\treturn fmt.Errorf(\"ssh: required host key was nil\")\n\t}\n\tif !bytes.Equal(key.Marshal(), f.key.Marshal()) {\n\t\treturn fmt.Errorf(\"ssh: host key mismatch\")\n\t}\n\treturn nil\n}\n\n// FixedHostKey returns a function for use in\n// ClientConfig.HostKeyCallback to accept only a specific host key.\nfunc FixedHostKey(key PublicKey) HostKeyCallback {\n\thk := &fixedHostKey{key}\n\treturn hk.check\n}\n\n// BannerDisplayStderr returns a function that can be used for\n// ClientConfig.BannerCallback to display banners on os.Stderr.\nfunc BannerDisplayStderr() BannerCallback {\n\treturn func(banner string) error {\n\t\t_, err := os.Stderr.WriteString(banner)\n\n\t\treturn err\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/crypto/ssh/client_auth.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage ssh\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"slices\"\n\t\"strings\"\n)\n\ntype authResult int\n\nconst (\n\tauthFailure authResult = iota\n\tauthPartialSuccess\n\tauthSuccess\n)\n\n// clientAuthenticate authenticates with the remote server. See RFC 4252.\nfunc (c *connection) clientAuthenticate(config *ClientConfig) error {\n\t// initiate user auth session\n\tif err := c.transport.writePacket(Marshal(&serviceRequestMsg{serviceUserAuth})); err != nil {\n\t\treturn err\n\t}\n\tpacket, err := c.transport.readPacket()\n\tif err != nil {\n\t\treturn err\n\t}\n\t// The server may choose to send a SSH_MSG_EXT_INFO at this point (if we\n\t// advertised willingness to receive one, which we always do) or not. See\n\t// RFC 8308, Section 2.4.\n\textensions := make(map[string][]byte)\n\tif len(packet) > 0 && packet[0] == msgExtInfo {\n\t\tvar extInfo extInfoMsg\n\t\tif err := Unmarshal(packet, &extInfo); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpayload := extInfo.Payload\n\t\tfor i := uint32(0); i < extInfo.NumExtensions; i++ {\n\t\t\tname, rest, ok := parseString(payload)\n\t\t\tif !ok {\n\t\t\t\treturn parseError(msgExtInfo)\n\t\t\t}\n\t\t\tvalue, rest, ok := parseString(rest)\n\t\t\tif !ok {\n\t\t\t\treturn parseError(msgExtInfo)\n\t\t\t}\n\t\t\textensions[string(name)] = value\n\t\t\tpayload = rest\n\t\t}\n\t\tpacket, err = c.transport.readPacket()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\tvar serviceAccept serviceAcceptMsg\n\tif err := Unmarshal(packet, &serviceAccept); err != nil {\n\t\treturn err\n\t}\n\n\t// during the authentication phase the client first attempts the \"none\" method\n\t// then any untried methods suggested by the server.\n\tvar tried []string\n\tvar lastMethods []string\n\n\tsessionID := c.transport.getSessionID()\n\tfor auth := AuthMethod(new(noneAuth)); auth != nil; {\n\t\tok, methods, err := auth.auth(sessionID, config.User, c.transport, config.Rand, extensions)\n\t\tif err != nil {\n\t\t\t// On disconnect, return error immediately\n\t\t\tif _, ok := err.(*disconnectMsg); ok {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\t// We return the error later if there is no other method left to\n\t\t\t// try.\n\t\t\tok = authFailure\n\t\t}\n\t\tif ok == authSuccess {\n\t\t\t// success\n\t\t\treturn nil\n\t\t} else if ok == authFailure {\n\t\t\tif m := auth.method(); !slices.Contains(tried, m) {\n\t\t\t\ttried = append(tried, m)\n\t\t\t}\n\t\t}\n\t\tif methods == nil {\n\t\t\tmethods = lastMethods\n\t\t}\n\t\tlastMethods = methods\n\n\t\tauth = nil\n\n\tfindNext:\n\t\tfor _, a := range config.Auth {\n\t\t\tcandidateMethod := a.method()\n\t\t\tif slices.Contains(tried, candidateMethod) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tfor _, meth := range methods {\n\t\t\t\tif meth == candidateMethod {\n\t\t\t\t\tauth = a\n\t\t\t\t\tbreak findNext\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif auth == nil && err != nil {\n\t\t\t// We have an error and there are no other authentication methods to\n\t\t\t// try, so we return it.\n\t\t\treturn err\n\t\t}\n\t}\n\treturn fmt.Errorf(\"ssh: unable to authenticate, attempted methods %v, no supported methods remain\", tried)\n}\n\n// An AuthMethod represents an instance of an RFC 4252 authentication method.\ntype AuthMethod interface {\n\t// auth authenticates user over transport t.\n\t// Returns true if authentication is successful.\n\t// If authentication is not successful, a []string of alternative\n\t// method names is returned. If the slice is nil, it will be ignored\n\t// and the previous set of possible methods will be reused.\n\tauth(session []byte, user string, p packetConn, rand io.Reader, extensions map[string][]byte) (authResult, []string, error)\n\n\t// method returns the RFC 4252 method name.\n\tmethod() string\n}\n\n// \"none\" authentication, RFC 4252 section 5.2.\ntype noneAuth int\n\nfunc (n *noneAuth) auth(session []byte, user string, c packetConn, rand io.Reader, _ map[string][]byte) (authResult, []string, error) {\n\tif err := c.writePacket(Marshal(&userAuthRequestMsg{\n\t\tUser:    user,\n\t\tService: serviceSSH,\n\t\tMethod:  \"none\",\n\t})); err != nil {\n\t\treturn authFailure, nil, err\n\t}\n\n\treturn handleAuthResponse(c)\n}\n\nfunc (n *noneAuth) method() string {\n\treturn \"none\"\n}\n\n// passwordCallback is an AuthMethod that fetches the password through\n// a function call, e.g. by prompting the user.\ntype passwordCallback func() (password string, err error)\n\nfunc (cb passwordCallback) auth(session []byte, user string, c packetConn, rand io.Reader, _ map[string][]byte) (authResult, []string, error) {\n\ttype passwordAuthMsg struct {\n\t\tUser     string `sshtype:\"50\"`\n\t\tService  string\n\t\tMethod   string\n\t\tReply    bool\n\t\tPassword string\n\t}\n\n\tpw, err := cb()\n\t// REVIEW NOTE: is there a need to support skipping a password attempt?\n\t// The program may only find out that the user doesn't have a password\n\t// when prompting.\n\tif err != nil {\n\t\treturn authFailure, nil, err\n\t}\n\n\tif err := c.writePacket(Marshal(&passwordAuthMsg{\n\t\tUser:     user,\n\t\tService:  serviceSSH,\n\t\tMethod:   cb.method(),\n\t\tReply:    false,\n\t\tPassword: pw,\n\t})); err != nil {\n\t\treturn authFailure, nil, err\n\t}\n\n\treturn handleAuthResponse(c)\n}\n\nfunc (cb passwordCallback) method() string {\n\treturn \"password\"\n}\n\n// Password returns an AuthMethod using the given password.\nfunc Password(secret string) AuthMethod {\n\treturn passwordCallback(func() (string, error) { return secret, nil })\n}\n\n// PasswordCallback returns an AuthMethod that uses a callback for\n// fetching a password.\nfunc PasswordCallback(prompt func() (secret string, err error)) AuthMethod {\n\treturn passwordCallback(prompt)\n}\n\ntype publickeyAuthMsg struct {\n\tUser    string `sshtype:\"50\"`\n\tService string\n\tMethod  string\n\t// HasSig indicates to the receiver packet that the auth request is signed and\n\t// should be used for authentication of the request.\n\tHasSig   bool\n\tAlgoname string\n\tPubKey   []byte\n\t// Sig is tagged with \"rest\" so Marshal will exclude it during\n\t// validateKey\n\tSig []byte `ssh:\"rest\"`\n}\n\n// publicKeyCallback is an AuthMethod that uses a set of key\n// pairs for authentication.\ntype publicKeyCallback func() ([]Signer, error)\n\nfunc (cb publicKeyCallback) method() string {\n\treturn \"publickey\"\n}\n\nfunc pickSignatureAlgorithm(signer Signer, extensions map[string][]byte) (MultiAlgorithmSigner, string, error) {\n\tvar as MultiAlgorithmSigner\n\tkeyFormat := signer.PublicKey().Type()\n\n\t// If the signer implements MultiAlgorithmSigner we use the algorithms it\n\t// support, if it implements AlgorithmSigner we assume it supports all\n\t// algorithms, otherwise only the key format one.\n\tswitch s := signer.(type) {\n\tcase MultiAlgorithmSigner:\n\t\tas = s\n\tcase AlgorithmSigner:\n\t\tas = &multiAlgorithmSigner{\n\t\t\tAlgorithmSigner:     s,\n\t\t\tsupportedAlgorithms: algorithmsForKeyFormat(underlyingAlgo(keyFormat)),\n\t\t}\n\tdefault:\n\t\tas = &multiAlgorithmSigner{\n\t\t\tAlgorithmSigner:     algorithmSignerWrapper{signer},\n\t\t\tsupportedAlgorithms: []string{underlyingAlgo(keyFormat)},\n\t\t}\n\t}\n\n\tgetFallbackAlgo := func() (string, error) {\n\t\t// Fallback to use if there is no \"server-sig-algs\" extension or a\n\t\t// common algorithm cannot be found. We use the public key format if the\n\t\t// MultiAlgorithmSigner supports it, otherwise we return an error.\n\t\tif !slices.Contains(as.Algorithms(), underlyingAlgo(keyFormat)) {\n\t\t\treturn \"\", fmt.Errorf(\"ssh: no common public key signature algorithm, server only supports %q for key type %q, signer only supports %v\",\n\t\t\t\tunderlyingAlgo(keyFormat), keyFormat, as.Algorithms())\n\t\t}\n\t\treturn keyFormat, nil\n\t}\n\n\textPayload, ok := extensions[\"server-sig-algs\"]\n\tif !ok {\n\t\t// If there is no \"server-sig-algs\" extension use the fallback\n\t\t// algorithm.\n\t\talgo, err := getFallbackAlgo()\n\t\treturn as, algo, err\n\t}\n\n\t// The server-sig-algs extension only carries underlying signature\n\t// algorithm, but we are trying to select a protocol-level public key\n\t// algorithm, which might be a certificate type. Extend the list of server\n\t// supported algorithms to include the corresponding certificate algorithms.\n\tserverAlgos := strings.Split(string(extPayload), \",\")\n\tfor _, algo := range serverAlgos {\n\t\tif certAlgo, ok := certificateAlgo(algo); ok {\n\t\t\tserverAlgos = append(serverAlgos, certAlgo)\n\t\t}\n\t}\n\n\t// Filter algorithms based on those supported by MultiAlgorithmSigner.\n\tvar keyAlgos []string\n\tfor _, algo := range algorithmsForKeyFormat(keyFormat) {\n\t\tif slices.Contains(as.Algorithms(), underlyingAlgo(algo)) {\n\t\t\tkeyAlgos = append(keyAlgos, algo)\n\t\t}\n\t}\n\n\talgo, err := findCommon(\"public key signature algorithm\", keyAlgos, serverAlgos, true)\n\tif err != nil {\n\t\t// If there is no overlap, return the fallback algorithm to support\n\t\t// servers that fail to list all supported algorithms.\n\t\talgo, err := getFallbackAlgo()\n\t\treturn as, algo, err\n\t}\n\treturn as, algo, nil\n}\n\nfunc (cb publicKeyCallback) auth(session []byte, user string, c packetConn, rand io.Reader, extensions map[string][]byte) (authResult, []string, error) {\n\t// Authentication is performed by sending an enquiry to test if a key is\n\t// acceptable to the remote. If the key is acceptable, the client will\n\t// attempt to authenticate with the valid key.  If not the client will repeat\n\t// the process with the remaining keys.\n\n\tsigners, err := cb()\n\tif err != nil {\n\t\treturn authFailure, nil, err\n\t}\n\tvar methods []string\n\tvar errSigAlgo error\n\n\torigSignersLen := len(signers)\n\tfor idx := 0; idx < len(signers); idx++ {\n\t\tsigner := signers[idx]\n\t\tpub := signer.PublicKey()\n\t\tas, algo, err := pickSignatureAlgorithm(signer, extensions)\n\t\tif err != nil && errSigAlgo == nil {\n\t\t\t// If we cannot negotiate a signature algorithm store the first\n\t\t\t// error so we can return it to provide a more meaningful message if\n\t\t\t// no other signers work.\n\t\t\terrSigAlgo = err\n\t\t\tcontinue\n\t\t}\n\t\tok, err := validateKey(pub, algo, user, c)\n\t\tif err != nil {\n\t\t\treturn authFailure, nil, err\n\t\t}\n\t\t// OpenSSH 7.2-7.7 advertises support for rsa-sha2-256 and rsa-sha2-512\n\t\t// in the \"server-sig-algs\" extension but doesn't support these\n\t\t// algorithms for certificate authentication, so if the server rejects\n\t\t// the key try to use the obtained algorithm as if \"server-sig-algs\" had\n\t\t// not been implemented if supported from the algorithm signer.\n\t\tif !ok && idx < origSignersLen && isRSACert(algo) && algo != CertAlgoRSAv01 {\n\t\t\tif slices.Contains(as.Algorithms(), KeyAlgoRSA) {\n\t\t\t\t// We retry using the compat algorithm after all signers have\n\t\t\t\t// been tried normally.\n\t\t\t\tsigners = append(signers, &multiAlgorithmSigner{\n\t\t\t\t\tAlgorithmSigner:     as,\n\t\t\t\t\tsupportedAlgorithms: []string{KeyAlgoRSA},\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t\tif !ok {\n\t\t\tcontinue\n\t\t}\n\n\t\tpubKey := pub.Marshal()\n\t\tdata := buildDataSignedForAuth(session, userAuthRequestMsg{\n\t\t\tUser:    user,\n\t\t\tService: serviceSSH,\n\t\t\tMethod:  cb.method(),\n\t\t}, algo, pubKey)\n\t\tsign, err := as.SignWithAlgorithm(rand, data, underlyingAlgo(algo))\n\t\tif err != nil {\n\t\t\treturn authFailure, nil, err\n\t\t}\n\n\t\t// manually wrap the serialized signature in a string\n\t\ts := Marshal(sign)\n\t\tsig := make([]byte, stringLength(len(s)))\n\t\tmarshalString(sig, s)\n\t\tmsg := publickeyAuthMsg{\n\t\t\tUser:     user,\n\t\t\tService:  serviceSSH,\n\t\t\tMethod:   cb.method(),\n\t\t\tHasSig:   true,\n\t\t\tAlgoname: algo,\n\t\t\tPubKey:   pubKey,\n\t\t\tSig:      sig,\n\t\t}\n\t\tp := Marshal(&msg)\n\t\tif err := c.writePacket(p); err != nil {\n\t\t\treturn authFailure, nil, err\n\t\t}\n\t\tvar success authResult\n\t\tsuccess, methods, err = handleAuthResponse(c)\n\t\tif err != nil {\n\t\t\treturn authFailure, nil, err\n\t\t}\n\n\t\t// If authentication succeeds or the list of available methods does not\n\t\t// contain the \"publickey\" method, do not attempt to authenticate with any\n\t\t// other keys.  According to RFC 4252 Section 7, the latter can occur when\n\t\t// additional authentication methods are required.\n\t\tif success == authSuccess || !slices.Contains(methods, cb.method()) {\n\t\t\treturn success, methods, err\n\t\t}\n\t}\n\n\treturn authFailure, methods, errSigAlgo\n}\n\n// validateKey validates the key provided is acceptable to the server.\nfunc validateKey(key PublicKey, algo string, user string, c packetConn) (bool, error) {\n\tpubKey := key.Marshal()\n\tmsg := publickeyAuthMsg{\n\t\tUser:     user,\n\t\tService:  serviceSSH,\n\t\tMethod:   \"publickey\",\n\t\tHasSig:   false,\n\t\tAlgoname: algo,\n\t\tPubKey:   pubKey,\n\t}\n\tif err := c.writePacket(Marshal(&msg)); err != nil {\n\t\treturn false, err\n\t}\n\n\treturn confirmKeyAck(key, c)\n}\n\nfunc confirmKeyAck(key PublicKey, c packetConn) (bool, error) {\n\tpubKey := key.Marshal()\n\n\tfor {\n\t\tpacket, err := c.readPacket()\n\t\tif err != nil {\n\t\t\treturn false, err\n\t\t}\n\t\tswitch packet[0] {\n\t\tcase msgUserAuthBanner:\n\t\t\tif err := handleBannerResponse(c, packet); err != nil {\n\t\t\t\treturn false, err\n\t\t\t}\n\t\tcase msgUserAuthPubKeyOk:\n\t\t\tvar msg userAuthPubKeyOkMsg\n\t\t\tif err := Unmarshal(packet, &msg); err != nil {\n\t\t\t\treturn false, err\n\t\t\t}\n\t\t\t// According to RFC 4252 Section 7 the algorithm in\n\t\t\t// SSH_MSG_USERAUTH_PK_OK should match that of the request but some\n\t\t\t// servers send the key type instead. OpenSSH allows any algorithm\n\t\t\t// that matches the public key, so we do the same.\n\t\t\t// https://github.com/openssh/openssh-portable/blob/86bdd385/sshconnect2.c#L709\n\t\t\tif !slices.Contains(algorithmsForKeyFormat(key.Type()), msg.Algo) {\n\t\t\t\treturn false, nil\n\t\t\t}\n\t\t\tif !bytes.Equal(msg.PubKey, pubKey) {\n\t\t\t\treturn false, nil\n\t\t\t}\n\t\t\treturn true, nil\n\t\tcase msgUserAuthFailure:\n\t\t\treturn false, nil\n\t\tdefault:\n\t\t\treturn false, unexpectedMessageError(msgUserAuthPubKeyOk, packet[0])\n\t\t}\n\t}\n}\n\n// PublicKeys returns an AuthMethod that uses the given key\n// pairs.\nfunc PublicKeys(signers ...Signer) AuthMethod {\n\treturn publicKeyCallback(func() ([]Signer, error) { return signers, nil })\n}\n\n// PublicKeysCallback returns an AuthMethod that runs the given\n// function to obtain a list of key pairs.\nfunc PublicKeysCallback(getSigners func() (signers []Signer, err error)) AuthMethod {\n\treturn publicKeyCallback(getSigners)\n}\n\n// handleAuthResponse returns whether the preceding authentication request succeeded\n// along with a list of remaining authentication methods to try next and\n// an error if an unexpected response was received.\nfunc handleAuthResponse(c packetConn) (authResult, []string, error) {\n\tgotMsgExtInfo := false\n\tfor {\n\t\tpacket, err := c.readPacket()\n\t\tif err != nil {\n\t\t\treturn authFailure, nil, err\n\t\t}\n\n\t\tswitch packet[0] {\n\t\tcase msgUserAuthBanner:\n\t\t\tif err := handleBannerResponse(c, packet); err != nil {\n\t\t\t\treturn authFailure, nil, err\n\t\t\t}\n\t\tcase msgExtInfo:\n\t\t\t// Ignore post-authentication RFC 8308 extensions, once.\n\t\t\tif gotMsgExtInfo {\n\t\t\t\treturn authFailure, nil, unexpectedMessageError(msgUserAuthSuccess, packet[0])\n\t\t\t}\n\t\t\tgotMsgExtInfo = true\n\t\tcase msgUserAuthFailure:\n\t\t\tvar msg userAuthFailureMsg\n\t\t\tif err := Unmarshal(packet, &msg); err != nil {\n\t\t\t\treturn authFailure, nil, err\n\t\t\t}\n\t\t\tif msg.PartialSuccess {\n\t\t\t\treturn authPartialSuccess, msg.Methods, nil\n\t\t\t}\n\t\t\treturn authFailure, msg.Methods, nil\n\t\tcase msgUserAuthSuccess:\n\t\t\treturn authSuccess, nil, nil\n\t\tdefault:\n\t\t\treturn authFailure, nil, unexpectedMessageError(msgUserAuthSuccess, packet[0])\n\t\t}\n\t}\n}\n\nfunc handleBannerResponse(c packetConn, packet []byte) error {\n\tvar msg userAuthBannerMsg\n\tif err := Unmarshal(packet, &msg); err != nil {\n\t\treturn err\n\t}\n\n\ttransport, ok := c.(*handshakeTransport)\n\tif !ok {\n\t\treturn nil\n\t}\n\n\tif transport.bannerCallback != nil {\n\t\treturn transport.bannerCallback(msg.Message)\n\t}\n\n\treturn nil\n}\n\n// KeyboardInteractiveChallenge should print questions, optionally\n// disabling echoing (e.g. for passwords), and return all the answers.\n// Challenge may be called multiple times in a single session. After\n// successful authentication, the server may send a challenge with no\n// questions, for which the name and instruction messages should be\n// printed.  RFC 4256 section 3.3 details how the UI should behave for\n// both CLI and GUI environments.\ntype KeyboardInteractiveChallenge func(name, instruction string, questions []string, echos []bool) (answers []string, err error)\n\n// KeyboardInteractive returns an AuthMethod using a prompt/response\n// sequence controlled by the server.\nfunc KeyboardInteractive(challenge KeyboardInteractiveChallenge) AuthMethod {\n\treturn challenge\n}\n\nfunc (cb KeyboardInteractiveChallenge) method() string {\n\treturn \"keyboard-interactive\"\n}\n\nfunc (cb KeyboardInteractiveChallenge) auth(session []byte, user string, c packetConn, rand io.Reader, _ map[string][]byte) (authResult, []string, error) {\n\ttype initiateMsg struct {\n\t\tUser       string `sshtype:\"50\"`\n\t\tService    string\n\t\tMethod     string\n\t\tLanguage   string\n\t\tSubmethods string\n\t}\n\n\tif err := c.writePacket(Marshal(&initiateMsg{\n\t\tUser:    user,\n\t\tService: serviceSSH,\n\t\tMethod:  \"keyboard-interactive\",\n\t})); err != nil {\n\t\treturn authFailure, nil, err\n\t}\n\n\tgotMsgExtInfo := false\n\tgotUserAuthInfoRequest := false\n\tfor {\n\t\tpacket, err := c.readPacket()\n\t\tif err != nil {\n\t\t\treturn authFailure, nil, err\n\t\t}\n\n\t\t// like handleAuthResponse, but with less options.\n\t\tswitch packet[0] {\n\t\tcase msgUserAuthBanner:\n\t\t\tif err := handleBannerResponse(c, packet); err != nil {\n\t\t\t\treturn authFailure, nil, err\n\t\t\t}\n\t\t\tcontinue\n\t\tcase msgExtInfo:\n\t\t\t// Ignore post-authentication RFC 8308 extensions, once.\n\t\t\tif gotMsgExtInfo {\n\t\t\t\treturn authFailure, nil, unexpectedMessageError(msgUserAuthInfoRequest, packet[0])\n\t\t\t}\n\t\t\tgotMsgExtInfo = true\n\t\t\tcontinue\n\t\tcase msgUserAuthInfoRequest:\n\t\t\t// OK\n\t\tcase msgUserAuthFailure:\n\t\t\tvar msg userAuthFailureMsg\n\t\t\tif err := Unmarshal(packet, &msg); err != nil {\n\t\t\t\treturn authFailure, nil, err\n\t\t\t}\n\t\t\tif msg.PartialSuccess {\n\t\t\t\treturn authPartialSuccess, msg.Methods, nil\n\t\t\t}\n\t\t\tif !gotUserAuthInfoRequest {\n\t\t\t\treturn authFailure, msg.Methods, unexpectedMessageError(msgUserAuthInfoRequest, packet[0])\n\t\t\t}\n\t\t\treturn authFailure, msg.Methods, nil\n\t\tcase msgUserAuthSuccess:\n\t\t\treturn authSuccess, nil, nil\n\t\tdefault:\n\t\t\treturn authFailure, nil, unexpectedMessageError(msgUserAuthInfoRequest, packet[0])\n\t\t}\n\n\t\tvar msg userAuthInfoRequestMsg\n\t\tif err := Unmarshal(packet, &msg); err != nil {\n\t\t\treturn authFailure, nil, err\n\t\t}\n\t\tgotUserAuthInfoRequest = true\n\n\t\t// Manually unpack the prompt/echo pairs.\n\t\trest := msg.Prompts\n\t\tvar prompts []string\n\t\tvar echos []bool\n\t\tfor i := 0; i < int(msg.NumPrompts); i++ {\n\t\t\tprompt, r, ok := parseString(rest)\n\t\t\tif !ok || len(r) == 0 {\n\t\t\t\treturn authFailure, nil, errors.New(\"ssh: prompt format error\")\n\t\t\t}\n\t\t\tprompts = append(prompts, string(prompt))\n\t\t\techos = append(echos, r[0] != 0)\n\t\t\trest = r[1:]\n\t\t}\n\n\t\tif len(rest) != 0 {\n\t\t\treturn authFailure, nil, errors.New(\"ssh: extra data following keyboard-interactive pairs\")\n\t\t}\n\n\t\tanswers, err := cb(msg.Name, msg.Instruction, prompts, echos)\n\t\tif err != nil {\n\t\t\treturn authFailure, nil, err\n\t\t}\n\n\t\tif len(answers) != len(prompts) {\n\t\t\treturn authFailure, nil, fmt.Errorf(\"ssh: incorrect number of answers from keyboard-interactive callback %d (expected %d)\", len(answers), len(prompts))\n\t\t}\n\t\tresponseLength := 1 + 4\n\t\tfor _, a := range answers {\n\t\t\tresponseLength += stringLength(len(a))\n\t\t}\n\t\tserialized := make([]byte, responseLength)\n\t\tp := serialized\n\t\tp[0] = msgUserAuthInfoResponse\n\t\tp = p[1:]\n\t\tp = marshalUint32(p, uint32(len(answers)))\n\t\tfor _, a := range answers {\n\t\t\tp = marshalString(p, []byte(a))\n\t\t}\n\n\t\tif err := c.writePacket(serialized); err != nil {\n\t\t\treturn authFailure, nil, err\n\t\t}\n\t}\n}\n\ntype retryableAuthMethod struct {\n\tauthMethod AuthMethod\n\tmaxTries   int\n}\n\nfunc (r *retryableAuthMethod) auth(session []byte, user string, c packetConn, rand io.Reader, extensions map[string][]byte) (ok authResult, methods []string, err error) {\n\tfor i := 0; r.maxTries <= 0 || i < r.maxTries; i++ {\n\t\tok, methods, err = r.authMethod.auth(session, user, c, rand, extensions)\n\t\tif ok != authFailure || err != nil { // either success, partial success or error terminate\n\t\t\treturn ok, methods, err\n\t\t}\n\t}\n\treturn ok, methods, err\n}\n\nfunc (r *retryableAuthMethod) method() string {\n\treturn r.authMethod.method()\n}\n\n// RetryableAuthMethod is a decorator for other auth methods enabling them to\n// be retried up to maxTries before considering that AuthMethod itself failed.\n// If maxTries is <= 0, will retry indefinitely\n//\n// This is useful for interactive clients using challenge/response type\n// authentication (e.g. Keyboard-Interactive, Password, etc) where the user\n// could mistype their response resulting in the server issuing a\n// SSH_MSG_USERAUTH_FAILURE (rfc4252 #8 [password] and rfc4256 #3.4\n// [keyboard-interactive]); Without this decorator, the non-retryable\n// AuthMethod would be removed from future consideration, and never tried again\n// (and so the user would never be able to retry their entry).\nfunc RetryableAuthMethod(auth AuthMethod, maxTries int) AuthMethod {\n\treturn &retryableAuthMethod{authMethod: auth, maxTries: maxTries}\n}\n\n// GSSAPIWithMICAuthMethod is an AuthMethod with \"gssapi-with-mic\" authentication.\n// See RFC 4462 section 3\n// gssAPIClient is implementation of the GSSAPIClient interface, see the definition of the interface for details.\n// target is the server host you want to log in to.\nfunc GSSAPIWithMICAuthMethod(gssAPIClient GSSAPIClient, target string) AuthMethod {\n\tif gssAPIClient == nil {\n\t\tpanic(\"gss-api client must be not nil with enable gssapi-with-mic\")\n\t}\n\treturn &gssAPIWithMICCallback{gssAPIClient: gssAPIClient, target: target}\n}\n\ntype gssAPIWithMICCallback struct {\n\tgssAPIClient GSSAPIClient\n\ttarget       string\n}\n\nfunc (g *gssAPIWithMICCallback) auth(session []byte, user string, c packetConn, rand io.Reader, _ map[string][]byte) (authResult, []string, error) {\n\tm := &userAuthRequestMsg{\n\t\tUser:    user,\n\t\tService: serviceSSH,\n\t\tMethod:  g.method(),\n\t}\n\t// The GSS-API authentication method is initiated when the client sends an SSH_MSG_USERAUTH_REQUEST.\n\t// See RFC 4462 section 3.2.\n\tm.Payload = appendU32(m.Payload, 1)\n\tm.Payload = appendString(m.Payload, string(krb5OID))\n\tif err := c.writePacket(Marshal(m)); err != nil {\n\t\treturn authFailure, nil, err\n\t}\n\t// The server responds to the SSH_MSG_USERAUTH_REQUEST with either an\n\t// SSH_MSG_USERAUTH_FAILURE if none of the mechanisms are supported or\n\t// with an SSH_MSG_USERAUTH_GSSAPI_RESPONSE.\n\t// See RFC 4462 section 3.3.\n\t// OpenSSH supports Kerberos V5 mechanism only for GSS-API authentication,so I don't want to check\n\t// selected mech if it is valid.\n\tpacket, err := c.readPacket()\n\tif err != nil {\n\t\treturn authFailure, nil, err\n\t}\n\tuserAuthGSSAPIResp := &userAuthGSSAPIResponse{}\n\tif err := Unmarshal(packet, userAuthGSSAPIResp); err != nil {\n\t\treturn authFailure, nil, err\n\t}\n\t// Start the loop into the exchange token.\n\t// See RFC 4462 section 3.4.\n\tvar token []byte\n\tdefer g.gssAPIClient.DeleteSecContext()\n\tfor {\n\t\t// Initiates the establishment of a security context between the application and a remote peer.\n\t\tnextToken, needContinue, err := g.gssAPIClient.InitSecContext(\"host@\"+g.target, token, false)\n\t\tif err != nil {\n\t\t\treturn authFailure, nil, err\n\t\t}\n\t\tif len(nextToken) > 0 {\n\t\t\tif err := c.writePacket(Marshal(&userAuthGSSAPIToken{\n\t\t\t\tToken: nextToken,\n\t\t\t})); err != nil {\n\t\t\t\treturn authFailure, nil, err\n\t\t\t}\n\t\t}\n\t\tif !needContinue {\n\t\t\tbreak\n\t\t}\n\t\tpacket, err = c.readPacket()\n\t\tif err != nil {\n\t\t\treturn authFailure, nil, err\n\t\t}\n\t\tswitch packet[0] {\n\t\tcase msgUserAuthFailure:\n\t\t\tvar msg userAuthFailureMsg\n\t\t\tif err := Unmarshal(packet, &msg); err != nil {\n\t\t\t\treturn authFailure, nil, err\n\t\t\t}\n\t\t\tif msg.PartialSuccess {\n\t\t\t\treturn authPartialSuccess, msg.Methods, nil\n\t\t\t}\n\t\t\treturn authFailure, msg.Methods, nil\n\t\tcase msgUserAuthGSSAPIError:\n\t\t\tuserAuthGSSAPIErrorResp := &userAuthGSSAPIError{}\n\t\t\tif err := Unmarshal(packet, userAuthGSSAPIErrorResp); err != nil {\n\t\t\t\treturn authFailure, nil, err\n\t\t\t}\n\t\t\treturn authFailure, nil, fmt.Errorf(\"GSS-API Error:\\n\"+\n\t\t\t\t\"Major Status: %d\\n\"+\n\t\t\t\t\"Minor Status: %d\\n\"+\n\t\t\t\t\"Error Message: %s\\n\", userAuthGSSAPIErrorResp.MajorStatus, userAuthGSSAPIErrorResp.MinorStatus,\n\t\t\t\tuserAuthGSSAPIErrorResp.Message)\n\t\tcase msgUserAuthGSSAPIToken:\n\t\t\tuserAuthGSSAPITokenReq := &userAuthGSSAPIToken{}\n\t\t\tif err := Unmarshal(packet, userAuthGSSAPITokenReq); err != nil {\n\t\t\t\treturn authFailure, nil, err\n\t\t\t}\n\t\t\ttoken = userAuthGSSAPITokenReq.Token\n\t\t}\n\t}\n\t// Binding Encryption Keys.\n\t// See RFC 4462 section 3.5.\n\tmicField := buildMIC(string(session), user, \"ssh-connection\", \"gssapi-with-mic\")\n\tmicToken, err := g.gssAPIClient.GetMIC(micField)\n\tif err != nil {\n\t\treturn authFailure, nil, err\n\t}\n\tif err := c.writePacket(Marshal(&userAuthGSSAPIMIC{\n\t\tMIC: micToken,\n\t})); err != nil {\n\t\treturn authFailure, nil, err\n\t}\n\treturn handleAuthResponse(c)\n}\n\nfunc (g *gssAPIWithMICCallback) method() string {\n\treturn \"gssapi-with-mic\"\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/crypto/ssh/common.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage ssh\n\nimport (\n\t\"crypto\"\n\t\"crypto/fips140\"\n\t\"crypto/rand\"\n\t\"fmt\"\n\t\"io\"\n\t\"math\"\n\t\"slices\"\n\t\"sync\"\n\n\t_ \"crypto/sha1\"\n\t_ \"crypto/sha256\"\n\t_ \"crypto/sha512\"\n)\n\n// These are string constants in the SSH protocol.\nconst (\n\tcompressionNone = \"none\"\n\tserviceUserAuth = \"ssh-userauth\"\n\tserviceSSH      = \"ssh-connection\"\n)\n\n// The ciphers currently or previously implemented by this library, to use in\n// [Config.Ciphers]. For a list, see the [Algorithms.Ciphers] returned by\n// [SupportedAlgorithms] or [InsecureAlgorithms].\nconst (\n\tCipherAES128GCM            = \"aes128-gcm@openssh.com\"\n\tCipherAES256GCM            = \"aes256-gcm@openssh.com\"\n\tCipherChaCha20Poly1305     = \"chacha20-poly1305@openssh.com\"\n\tCipherAES128CTR            = \"aes128-ctr\"\n\tCipherAES192CTR            = \"aes192-ctr\"\n\tCipherAES256CTR            = \"aes256-ctr\"\n\tInsecureCipherAES128CBC    = \"aes128-cbc\"\n\tInsecureCipherTripleDESCBC = \"3des-cbc\"\n\tInsecureCipherRC4          = \"arcfour\"\n\tInsecureCipherRC4128       = \"arcfour128\"\n\tInsecureCipherRC4256       = \"arcfour256\"\n)\n\n// The key exchanges currently or previously implemented by this library, to use\n// in [Config.KeyExchanges]. For a list, see the\n// [Algorithms.KeyExchanges] returned by [SupportedAlgorithms] or\n// [InsecureAlgorithms].\nconst (\n\tInsecureKeyExchangeDH1SHA1   = \"diffie-hellman-group1-sha1\"\n\tInsecureKeyExchangeDH14SHA1  = \"diffie-hellman-group14-sha1\"\n\tKeyExchangeDH14SHA256        = \"diffie-hellman-group14-sha256\"\n\tKeyExchangeDH16SHA512        = \"diffie-hellman-group16-sha512\"\n\tKeyExchangeECDHP256          = \"ecdh-sha2-nistp256\"\n\tKeyExchangeECDHP384          = \"ecdh-sha2-nistp384\"\n\tKeyExchangeECDHP521          = \"ecdh-sha2-nistp521\"\n\tKeyExchangeCurve25519        = \"curve25519-sha256\"\n\tInsecureKeyExchangeDHGEXSHA1 = \"diffie-hellman-group-exchange-sha1\"\n\tKeyExchangeDHGEXSHA256       = \"diffie-hellman-group-exchange-sha256\"\n\t// KeyExchangeMLKEM768X25519 is supported from Go 1.24.\n\tKeyExchangeMLKEM768X25519 = \"mlkem768x25519-sha256\"\n\n\t// An alias for KeyExchangeCurve25519SHA256. This kex ID will be added if\n\t// KeyExchangeCurve25519SHA256 is requested for backward compatibility with\n\t// OpenSSH versions up to 7.2.\n\tkeyExchangeCurve25519LibSSH = \"curve25519-sha256@libssh.org\"\n)\n\n// The message authentication code (MAC) currently or previously implemented by\n// this library, to use in [Config.MACs]. For a list, see the\n// [Algorithms.MACs] returned by [SupportedAlgorithms] or\n// [InsecureAlgorithms].\nconst (\n\tHMACSHA256ETM      = \"hmac-sha2-256-etm@openssh.com\"\n\tHMACSHA512ETM      = \"hmac-sha2-512-etm@openssh.com\"\n\tHMACSHA256         = \"hmac-sha2-256\"\n\tHMACSHA512         = \"hmac-sha2-512\"\n\tHMACSHA1           = \"hmac-sha1\"\n\tInsecureHMACSHA196 = \"hmac-sha1-96\"\n)\n\nvar (\n\t// supportedKexAlgos specifies key-exchange algorithms implemented by this\n\t// package in preference order, excluding those with security issues.\n\tsupportedKexAlgos = []string{\n\t\tKeyExchangeMLKEM768X25519,\n\t\tKeyExchangeCurve25519,\n\t\tKeyExchangeECDHP256,\n\t\tKeyExchangeECDHP384,\n\t\tKeyExchangeECDHP521,\n\t\tKeyExchangeDH14SHA256,\n\t\tKeyExchangeDH16SHA512,\n\t\tKeyExchangeDHGEXSHA256,\n\t}\n\t// defaultKexAlgos specifies the default preference for key-exchange\n\t// algorithms in preference order.\n\tdefaultKexAlgos = []string{\n\t\tKeyExchangeMLKEM768X25519,\n\t\tKeyExchangeCurve25519,\n\t\tKeyExchangeECDHP256,\n\t\tKeyExchangeECDHP384,\n\t\tKeyExchangeECDHP521,\n\t\tKeyExchangeDH14SHA256,\n\t\tInsecureKeyExchangeDH14SHA1,\n\t}\n\t// insecureKexAlgos specifies key-exchange algorithms implemented by this\n\t// package and which have security issues.\n\tinsecureKexAlgos = []string{\n\t\tInsecureKeyExchangeDH14SHA1,\n\t\tInsecureKeyExchangeDH1SHA1,\n\t\tInsecureKeyExchangeDHGEXSHA1,\n\t}\n\t// supportedCiphers specifies cipher algorithms implemented by this package\n\t// in preference order, excluding those with security issues.\n\tsupportedCiphers = []string{\n\t\tCipherAES128GCM,\n\t\tCipherAES256GCM,\n\t\tCipherChaCha20Poly1305,\n\t\tCipherAES128CTR,\n\t\tCipherAES192CTR,\n\t\tCipherAES256CTR,\n\t}\n\t// defaultCiphers specifies the default preference for ciphers algorithms\n\t// in preference order.\n\tdefaultCiphers = supportedCiphers\n\t// insecureCiphers specifies cipher algorithms implemented by this\n\t// package and which have security issues.\n\tinsecureCiphers = []string{\n\t\tInsecureCipherAES128CBC,\n\t\tInsecureCipherTripleDESCBC,\n\t\tInsecureCipherRC4256,\n\t\tInsecureCipherRC4128,\n\t\tInsecureCipherRC4,\n\t}\n\t// supportedMACs specifies MAC algorithms implemented by this package in\n\t// preference order, excluding those with security issues.\n\tsupportedMACs = []string{\n\t\tHMACSHA256ETM,\n\t\tHMACSHA512ETM,\n\t\tHMACSHA256,\n\t\tHMACSHA512,\n\t\tHMACSHA1,\n\t}\n\t// defaultMACs specifies the default preference for MAC algorithms in\n\t// preference order.\n\tdefaultMACs = []string{\n\t\tHMACSHA256ETM,\n\t\tHMACSHA512ETM,\n\t\tHMACSHA256,\n\t\tHMACSHA512,\n\t\tHMACSHA1,\n\t\tInsecureHMACSHA196,\n\t}\n\t// insecureMACs specifies MAC algorithms implemented by this\n\t// package and which have security issues.\n\tinsecureMACs = []string{\n\t\tInsecureHMACSHA196,\n\t}\n\t// supportedHostKeyAlgos specifies the supported host-key algorithms (i.e.\n\t// methods of authenticating servers) implemented by this package in\n\t// preference order, excluding those with security issues.\n\tsupportedHostKeyAlgos = []string{\n\t\tCertAlgoRSASHA256v01,\n\t\tCertAlgoRSASHA512v01,\n\t\tCertAlgoECDSA256v01,\n\t\tCertAlgoECDSA384v01,\n\t\tCertAlgoECDSA521v01,\n\t\tCertAlgoED25519v01,\n\t\tKeyAlgoRSASHA256,\n\t\tKeyAlgoRSASHA512,\n\t\tKeyAlgoECDSA256,\n\t\tKeyAlgoECDSA384,\n\t\tKeyAlgoECDSA521,\n\t\tKeyAlgoED25519,\n\t}\n\t// defaultHostKeyAlgos specifies the default preference for host-key\n\t// algorithms in preference order.\n\tdefaultHostKeyAlgos = []string{\n\t\tCertAlgoRSASHA256v01,\n\t\tCertAlgoRSASHA512v01,\n\t\tCertAlgoRSAv01,\n\t\tInsecureCertAlgoDSAv01,\n\t\tCertAlgoECDSA256v01,\n\t\tCertAlgoECDSA384v01,\n\t\tCertAlgoECDSA521v01,\n\t\tCertAlgoED25519v01,\n\t\tKeyAlgoECDSA256,\n\t\tKeyAlgoECDSA384,\n\t\tKeyAlgoECDSA521,\n\t\tKeyAlgoRSASHA256,\n\t\tKeyAlgoRSASHA512,\n\t\tKeyAlgoRSA,\n\t\tInsecureKeyAlgoDSA,\n\t\tKeyAlgoED25519,\n\t}\n\t// insecureHostKeyAlgos specifies host-key algorithms implemented by this\n\t// package and which have security issues.\n\tinsecureHostKeyAlgos = []string{\n\t\tKeyAlgoRSA,\n\t\tInsecureKeyAlgoDSA,\n\t\tCertAlgoRSAv01,\n\t\tInsecureCertAlgoDSAv01,\n\t}\n\t// supportedPubKeyAuthAlgos specifies the supported client public key\n\t// authentication algorithms. Note that this doesn't include certificate\n\t// types since those use the underlying algorithm. Order is irrelevant.\n\tsupportedPubKeyAuthAlgos = []string{\n\t\tKeyAlgoED25519,\n\t\tKeyAlgoSKED25519,\n\t\tKeyAlgoSKECDSA256,\n\t\tKeyAlgoECDSA256,\n\t\tKeyAlgoECDSA384,\n\t\tKeyAlgoECDSA521,\n\t\tKeyAlgoRSASHA256,\n\t\tKeyAlgoRSASHA512,\n\t}\n\n\t// defaultPubKeyAuthAlgos specifies the preferred client public key\n\t// authentication algorithms. This list is sent to the client if it supports\n\t// the server-sig-algs extension. Order is irrelevant.\n\tdefaultPubKeyAuthAlgos = []string{\n\t\tKeyAlgoED25519,\n\t\tKeyAlgoSKED25519,\n\t\tKeyAlgoSKECDSA256,\n\t\tKeyAlgoECDSA256,\n\t\tKeyAlgoECDSA384,\n\t\tKeyAlgoECDSA521,\n\t\tKeyAlgoRSASHA256,\n\t\tKeyAlgoRSASHA512,\n\t\tKeyAlgoRSA,\n\t\tInsecureKeyAlgoDSA,\n\t}\n\t// insecurePubKeyAuthAlgos specifies client public key authentication\n\t// algorithms implemented by this package and which have security issues.\n\tinsecurePubKeyAuthAlgos = []string{\n\t\tKeyAlgoRSA,\n\t\tInsecureKeyAlgoDSA,\n\t}\n)\n\n// NegotiatedAlgorithms defines algorithms negotiated between client and server.\ntype NegotiatedAlgorithms struct {\n\tKeyExchange string\n\tHostKey     string\n\tRead        DirectionAlgorithms\n\tWrite       DirectionAlgorithms\n}\n\n// Algorithms defines a set of algorithms that can be configured in the client\n// or server config for negotiation during a handshake.\ntype Algorithms struct {\n\tKeyExchanges   []string\n\tCiphers        []string\n\tMACs           []string\n\tHostKeys       []string\n\tPublicKeyAuths []string\n}\n\nfunc init() {\n\tif fips140.Enabled() {\n\t\tdefaultHostKeyAlgos = slices.DeleteFunc(defaultHostKeyAlgos, func(algo string) bool {\n\t\t\t_, err := hashFunc(underlyingAlgo(algo))\n\t\t\treturn err != nil\n\t\t})\n\t\tdefaultPubKeyAuthAlgos = slices.DeleteFunc(defaultPubKeyAuthAlgos, func(algo string) bool {\n\t\t\t_, err := hashFunc(underlyingAlgo(algo))\n\t\t\treturn err != nil\n\t\t})\n\t}\n}\n\nfunc hashFunc(format string) (crypto.Hash, error) {\n\tswitch format {\n\tcase KeyAlgoRSASHA256, KeyAlgoECDSA256, KeyAlgoSKED25519, KeyAlgoSKECDSA256:\n\t\treturn crypto.SHA256, nil\n\tcase KeyAlgoECDSA384:\n\t\treturn crypto.SHA384, nil\n\tcase KeyAlgoRSASHA512, KeyAlgoECDSA521:\n\t\treturn crypto.SHA512, nil\n\tcase KeyAlgoED25519:\n\t\t// KeyAlgoED25519 doesn't pre-hash.\n\t\treturn 0, nil\n\tcase KeyAlgoRSA, InsecureKeyAlgoDSA:\n\t\tif fips140.Enabled() {\n\t\t\treturn 0, fmt.Errorf(\"ssh: hash algorithm for format %q not allowed in FIPS 140 mode\", format)\n\t\t}\n\t\treturn crypto.SHA1, nil\n\tdefault:\n\t\treturn 0, fmt.Errorf(\"ssh: hash algorithm for format %q not mapped\", format)\n\t}\n}\n\n// SupportedAlgorithms returns algorithms currently implemented by this package,\n// excluding those with security issues, which are returned by\n// InsecureAlgorithms. The algorithms listed here are in preference order.\nfunc SupportedAlgorithms() Algorithms {\n\treturn Algorithms{\n\t\tCiphers:        slices.Clone(supportedCiphers),\n\t\tMACs:           slices.Clone(supportedMACs),\n\t\tKeyExchanges:   slices.Clone(supportedKexAlgos),\n\t\tHostKeys:       slices.Clone(supportedHostKeyAlgos),\n\t\tPublicKeyAuths: slices.Clone(supportedPubKeyAuthAlgos),\n\t}\n}\n\n// InsecureAlgorithms returns algorithms currently implemented by this package\n// and which have security issues.\nfunc InsecureAlgorithms() Algorithms {\n\treturn Algorithms{\n\t\tKeyExchanges:   slices.Clone(insecureKexAlgos),\n\t\tCiphers:        slices.Clone(insecureCiphers),\n\t\tMACs:           slices.Clone(insecureMACs),\n\t\tHostKeys:       slices.Clone(insecureHostKeyAlgos),\n\t\tPublicKeyAuths: slices.Clone(insecurePubKeyAuthAlgos),\n\t}\n}\n\nvar supportedCompressions = []string{compressionNone}\n\n// algorithmsForKeyFormat returns the supported signature algorithms for a given\n// public key format (PublicKey.Type), in order of preference. See RFC 8332,\n// Section 2. See also the note in sendKexInit on backwards compatibility.\nfunc algorithmsForKeyFormat(keyFormat string) []string {\n\tswitch keyFormat {\n\tcase KeyAlgoRSA:\n\t\treturn []string{KeyAlgoRSASHA256, KeyAlgoRSASHA512, KeyAlgoRSA}\n\tcase CertAlgoRSAv01:\n\t\treturn []string{CertAlgoRSASHA256v01, CertAlgoRSASHA512v01, CertAlgoRSAv01}\n\tdefault:\n\t\treturn []string{keyFormat}\n\t}\n}\n\n// keyFormatForAlgorithm returns the key format corresponding to the given\n// signature algorithm. It returns an empty string if the signature algorithm is\n// invalid or unsupported.\nfunc keyFormatForAlgorithm(sigAlgo string) string {\n\tswitch sigAlgo {\n\tcase KeyAlgoRSA, KeyAlgoRSASHA256, KeyAlgoRSASHA512:\n\t\treturn KeyAlgoRSA\n\tcase CertAlgoRSAv01, CertAlgoRSASHA256v01, CertAlgoRSASHA512v01:\n\t\treturn CertAlgoRSAv01\n\tcase KeyAlgoED25519,\n\t\tKeyAlgoSKED25519,\n\t\tKeyAlgoSKECDSA256,\n\t\tKeyAlgoECDSA256,\n\t\tKeyAlgoECDSA384,\n\t\tKeyAlgoECDSA521,\n\t\tInsecureKeyAlgoDSA,\n\t\tInsecureCertAlgoDSAv01,\n\t\tCertAlgoECDSA256v01,\n\t\tCertAlgoECDSA384v01,\n\t\tCertAlgoECDSA521v01,\n\t\tCertAlgoSKECDSA256v01,\n\t\tCertAlgoED25519v01,\n\t\tCertAlgoSKED25519v01:\n\t\treturn sigAlgo\n\tdefault:\n\t\treturn \"\"\n\t}\n}\n\n// isRSA returns whether algo is a supported RSA algorithm, including certificate\n// algorithms.\nfunc isRSA(algo string) bool {\n\talgos := algorithmsForKeyFormat(KeyAlgoRSA)\n\treturn slices.Contains(algos, underlyingAlgo(algo))\n}\n\nfunc isRSACert(algo string) bool {\n\t_, ok := certKeyAlgoNames[algo]\n\tif !ok {\n\t\treturn false\n\t}\n\treturn isRSA(algo)\n}\n\n// unexpectedMessageError results when the SSH message that we received didn't\n// match what we wanted.\nfunc unexpectedMessageError(expected, got uint8) error {\n\treturn fmt.Errorf(\"ssh: unexpected message type %d (expected %d)\", got, expected)\n}\n\n// parseError results from a malformed SSH message.\nfunc parseError(tag uint8) error {\n\treturn fmt.Errorf(\"ssh: parse error in message type %d\", tag)\n}\n\nfunc findCommon(what string, client []string, server []string, isClient bool) (string, error) {\n\tfor _, c := range client {\n\t\tfor _, s := range server {\n\t\t\tif c == s {\n\t\t\t\treturn c, nil\n\t\t\t}\n\t\t}\n\t}\n\terr := &AlgorithmNegotiationError{\n\t\tWhat: what,\n\t}\n\tif isClient {\n\t\terr.SupportedAlgorithms = client\n\t\terr.RequestedAlgorithms = server\n\t} else {\n\t\terr.SupportedAlgorithms = server\n\t\terr.RequestedAlgorithms = client\n\t}\n\treturn \"\", err\n}\n\n// AlgorithmNegotiationError defines the error returned if the client and the\n// server cannot agree on an algorithm for key exchange, host key, cipher, MAC.\ntype AlgorithmNegotiationError struct {\n\tWhat string\n\t// RequestedAlgorithms lists the algorithms supported by the peer.\n\tRequestedAlgorithms []string\n\t// SupportedAlgorithms lists the algorithms supported on our side.\n\tSupportedAlgorithms []string\n}\n\nfunc (a *AlgorithmNegotiationError) Error() string {\n\treturn fmt.Sprintf(\"ssh: no common algorithm for %s; we offered: %v, peer offered: %v\",\n\t\ta.What, a.SupportedAlgorithms, a.RequestedAlgorithms)\n}\n\n// DirectionAlgorithms defines the algorithms negotiated in one direction\n// (either read or write).\ntype DirectionAlgorithms struct {\n\tCipher      string\n\tMAC         string\n\tcompression string\n}\n\n// rekeyBytes returns a rekeying intervals in bytes.\nfunc (a *DirectionAlgorithms) rekeyBytes() int64 {\n\t// According to RFC 4344 block ciphers should rekey after\n\t// 2^(BLOCKSIZE/4) blocks. For all AES flavors BLOCKSIZE is\n\t// 128.\n\tswitch a.Cipher {\n\tcase CipherAES128CTR, CipherAES192CTR, CipherAES256CTR, CipherAES128GCM, CipherAES256GCM, InsecureCipherAES128CBC:\n\t\treturn 16 * (1 << 32)\n\n\t}\n\n\t// For others, stick with RFC 4253 recommendation to rekey after 1 Gb of data.\n\treturn 1 << 30\n}\n\nvar aeadCiphers = map[string]bool{\n\tCipherAES128GCM:        true,\n\tCipherAES256GCM:        true,\n\tCipherChaCha20Poly1305: true,\n}\n\nfunc findAgreedAlgorithms(isClient bool, clientKexInit, serverKexInit *kexInitMsg) (algs *NegotiatedAlgorithms, err error) {\n\tresult := &NegotiatedAlgorithms{}\n\n\tresult.KeyExchange, err = findCommon(\"key exchange\", clientKexInit.KexAlgos, serverKexInit.KexAlgos, isClient)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tresult.HostKey, err = findCommon(\"host key\", clientKexInit.ServerHostKeyAlgos, serverKexInit.ServerHostKeyAlgos, isClient)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tstoc, ctos := &result.Write, &result.Read\n\tif isClient {\n\t\tctos, stoc = stoc, ctos\n\t}\n\n\tctos.Cipher, err = findCommon(\"client to server cipher\", clientKexInit.CiphersClientServer, serverKexInit.CiphersClientServer, isClient)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tstoc.Cipher, err = findCommon(\"server to client cipher\", clientKexInit.CiphersServerClient, serverKexInit.CiphersServerClient, isClient)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif !aeadCiphers[ctos.Cipher] {\n\t\tctos.MAC, err = findCommon(\"client to server MAC\", clientKexInit.MACsClientServer, serverKexInit.MACsClientServer, isClient)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\n\tif !aeadCiphers[stoc.Cipher] {\n\t\tstoc.MAC, err = findCommon(\"server to client MAC\", clientKexInit.MACsServerClient, serverKexInit.MACsServerClient, isClient)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\n\tctos.compression, err = findCommon(\"client to server compression\", clientKexInit.CompressionClientServer, serverKexInit.CompressionClientServer, isClient)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tstoc.compression, err = findCommon(\"server to client compression\", clientKexInit.CompressionServerClient, serverKexInit.CompressionServerClient, isClient)\n\tif err != nil {\n\t\treturn\n\t}\n\n\treturn result, nil\n}\n\n// If rekeythreshold is too small, we can't make any progress sending\n// stuff.\nconst minRekeyThreshold uint64 = 256\n\n// Config contains configuration data common to both ServerConfig and\n// ClientConfig.\ntype Config struct {\n\t// Rand provides the source of entropy for cryptographic\n\t// primitives. If Rand is nil, the cryptographic random reader\n\t// in package crypto/rand will be used.\n\tRand io.Reader\n\n\t// The maximum number of bytes sent or received after which a\n\t// new key is negotiated. It must be at least 256. If\n\t// unspecified, a size suitable for the chosen cipher is used.\n\tRekeyThreshold uint64\n\n\t// The allowed key exchanges algorithms. If unspecified then a default set\n\t// of algorithms is used. Unsupported values are silently ignored.\n\tKeyExchanges []string\n\n\t// The allowed cipher algorithms. If unspecified then a sensible default is\n\t// used. Unsupported values are silently ignored.\n\tCiphers []string\n\n\t// The allowed MAC algorithms. If unspecified then a sensible default is\n\t// used. Unsupported values are silently ignored.\n\tMACs []string\n}\n\n// SetDefaults sets sensible values for unset fields in config. This is\n// exported for testing: Configs passed to SSH functions are copied and have\n// default values set automatically.\nfunc (c *Config) SetDefaults() {\n\tif c.Rand == nil {\n\t\tc.Rand = rand.Reader\n\t}\n\tif c.Ciphers == nil {\n\t\tc.Ciphers = defaultCiphers\n\t}\n\tvar ciphers []string\n\tfor _, c := range c.Ciphers {\n\t\tif cipherModes[c] != nil {\n\t\t\t// Ignore the cipher if we have no cipherModes definition.\n\t\t\tciphers = append(ciphers, c)\n\t\t}\n\t}\n\tc.Ciphers = ciphers\n\n\tif c.KeyExchanges == nil {\n\t\tc.KeyExchanges = defaultKexAlgos\n\t}\n\tvar kexs []string\n\tfor _, k := range c.KeyExchanges {\n\t\tif kexAlgoMap[k] != nil {\n\t\t\t// Ignore the KEX if we have no kexAlgoMap definition.\n\t\t\tkexs = append(kexs, k)\n\t\t\tif k == KeyExchangeCurve25519 && !slices.Contains(c.KeyExchanges, keyExchangeCurve25519LibSSH) {\n\t\t\t\tkexs = append(kexs, keyExchangeCurve25519LibSSH)\n\t\t\t}\n\t\t}\n\t}\n\tc.KeyExchanges = kexs\n\n\tif c.MACs == nil {\n\t\tc.MACs = defaultMACs\n\t}\n\tvar macs []string\n\tfor _, m := range c.MACs {\n\t\tif macModes[m] != nil {\n\t\t\t// Ignore the MAC if we have no macModes definition.\n\t\t\tmacs = append(macs, m)\n\t\t}\n\t}\n\tc.MACs = macs\n\n\tif c.RekeyThreshold == 0 {\n\t\t// cipher specific default\n\t} else if c.RekeyThreshold < minRekeyThreshold {\n\t\tc.RekeyThreshold = minRekeyThreshold\n\t} else if c.RekeyThreshold >= math.MaxInt64 {\n\t\t// Avoid weirdness if somebody uses -1 as a threshold.\n\t\tc.RekeyThreshold = math.MaxInt64\n\t}\n}\n\n// buildDataSignedForAuth returns the data that is signed in order to prove\n// possession of a private key. See RFC 4252, section 7. algo is the advertised\n// algorithm, and may be a certificate type.\nfunc buildDataSignedForAuth(sessionID []byte, req userAuthRequestMsg, algo string, pubKey []byte) []byte {\n\tdata := struct {\n\t\tSession []byte\n\t\tType    byte\n\t\tUser    string\n\t\tService string\n\t\tMethod  string\n\t\tSign    bool\n\t\tAlgo    string\n\t\tPubKey  []byte\n\t}{\n\t\tsessionID,\n\t\tmsgUserAuthRequest,\n\t\treq.User,\n\t\treq.Service,\n\t\treq.Method,\n\t\ttrue,\n\t\talgo,\n\t\tpubKey,\n\t}\n\treturn Marshal(data)\n}\n\nfunc appendU16(buf []byte, n uint16) []byte {\n\treturn append(buf, byte(n>>8), byte(n))\n}\n\nfunc appendU32(buf []byte, n uint32) []byte {\n\treturn append(buf, byte(n>>24), byte(n>>16), byte(n>>8), byte(n))\n}\n\nfunc appendU64(buf []byte, n uint64) []byte {\n\treturn append(buf,\n\t\tbyte(n>>56), byte(n>>48), byte(n>>40), byte(n>>32),\n\t\tbyte(n>>24), byte(n>>16), byte(n>>8), byte(n))\n}\n\nfunc appendInt(buf []byte, n int) []byte {\n\treturn appendU32(buf, uint32(n))\n}\n\nfunc appendString(buf []byte, s string) []byte {\n\tbuf = appendU32(buf, uint32(len(s)))\n\tbuf = append(buf, s...)\n\treturn buf\n}\n\nfunc appendBool(buf []byte, b bool) []byte {\n\tif b {\n\t\treturn append(buf, 1)\n\t}\n\treturn append(buf, 0)\n}\n\n// newCond is a helper to hide the fact that there is no usable zero\n// value for sync.Cond.\nfunc newCond() *sync.Cond { return sync.NewCond(new(sync.Mutex)) }\n\n// window represents the buffer available to clients\n// wishing to write to a channel.\ntype window struct {\n\t*sync.Cond\n\twin          uint32 // RFC 4254 5.2 says the window size can grow to 2^32-1\n\twriteWaiters int\n\tclosed       bool\n}\n\n// add adds win to the amount of window available\n// for consumers.\nfunc (w *window) add(win uint32) bool {\n\t// a zero sized window adjust is a noop.\n\tif win == 0 {\n\t\treturn true\n\t}\n\tw.L.Lock()\n\tif w.win+win < win {\n\t\tw.L.Unlock()\n\t\treturn false\n\t}\n\tw.win += win\n\t// It is unusual that multiple goroutines would be attempting to reserve\n\t// window space, but not guaranteed. Use broadcast to notify all waiters\n\t// that additional window is available.\n\tw.Broadcast()\n\tw.L.Unlock()\n\treturn true\n}\n\n// close sets the window to closed, so all reservations fail\n// immediately.\nfunc (w *window) close() {\n\tw.L.Lock()\n\tw.closed = true\n\tw.Broadcast()\n\tw.L.Unlock()\n}\n\n// reserve reserves win from the available window capacity.\n// If no capacity remains, reserve will block. reserve may\n// return less than requested.\nfunc (w *window) reserve(win uint32) (uint32, error) {\n\tvar err error\n\tw.L.Lock()\n\tw.writeWaiters++\n\tw.Broadcast()\n\tfor w.win == 0 && !w.closed {\n\t\tw.Wait()\n\t}\n\tw.writeWaiters--\n\tif w.win < win {\n\t\twin = w.win\n\t}\n\tw.win -= win\n\tif w.closed {\n\t\terr = io.EOF\n\t}\n\tw.L.Unlock()\n\treturn win, err\n}\n\n// waitWriterBlocked waits until some goroutine is blocked for further\n// writes. It is used in tests only.\nfunc (w *window) waitWriterBlocked() {\n\tw.Cond.L.Lock()\n\tfor w.writeWaiters == 0 {\n\t\tw.Cond.Wait()\n\t}\n\tw.Cond.L.Unlock()\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/crypto/ssh/connection.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage ssh\n\nimport (\n\t\"fmt\"\n\t\"net\"\n)\n\n// OpenChannelError is returned if the other side rejects an\n// OpenChannel request.\ntype OpenChannelError struct {\n\tReason  RejectionReason\n\tMessage string\n}\n\nfunc (e *OpenChannelError) Error() string {\n\treturn fmt.Sprintf(\"ssh: rejected: %s (%s)\", e.Reason, e.Message)\n}\n\n// ConnMetadata holds metadata for the connection.\ntype ConnMetadata interface {\n\t// User returns the user ID for this connection.\n\tUser() string\n\n\t// SessionID returns the session hash, also denoted by H.\n\tSessionID() []byte\n\n\t// ClientVersion returns the client's version string as hashed\n\t// into the session ID.\n\tClientVersion() []byte\n\n\t// ServerVersion returns the server's version string as hashed\n\t// into the session ID.\n\tServerVersion() []byte\n\n\t// RemoteAddr returns the remote address for this connection.\n\tRemoteAddr() net.Addr\n\n\t// LocalAddr returns the local address for this connection.\n\tLocalAddr() net.Addr\n}\n\n// Conn represents an SSH connection for both server and client roles.\n// Conn is the basis for implementing an application layer, such\n// as ClientConn, which implements the traditional shell access for\n// clients.\ntype Conn interface {\n\tConnMetadata\n\n\t// SendRequest sends a global request, and returns the\n\t// reply. If wantReply is true, it returns the response status\n\t// and payload. See also RFC 4254, section 4.\n\tSendRequest(name string, wantReply bool, payload []byte) (bool, []byte, error)\n\n\t// OpenChannel tries to open an channel. If the request is\n\t// rejected, it returns *OpenChannelError. On success it returns\n\t// the SSH Channel and a Go channel for incoming, out-of-band\n\t// requests. The Go channel must be serviced, or the\n\t// connection will hang.\n\tOpenChannel(name string, data []byte) (Channel, <-chan *Request, error)\n\n\t// Close closes the underlying network connection\n\tClose() error\n\n\t// Wait blocks until the connection has shut down, and returns the\n\t// error causing the shutdown.\n\tWait() error\n\n\t// TODO(hanwen): consider exposing:\n\t//   RequestKeyChange\n\t//   Disconnect\n}\n\n// AlgorithmsConnMetadata is a ConnMetadata that can return the algorithms\n// negotiated between client and server.\ntype AlgorithmsConnMetadata interface {\n\tConnMetadata\n\tAlgorithms() NegotiatedAlgorithms\n}\n\n// DiscardRequests consumes and rejects all requests from the\n// passed-in channel.\nfunc DiscardRequests(in <-chan *Request) {\n\tfor req := range in {\n\t\tif req.WantReply {\n\t\t\treq.Reply(false, nil)\n\t\t}\n\t}\n}\n\n// A connection represents an incoming connection.\ntype connection struct {\n\ttransport *handshakeTransport\n\tsshConn\n\n\t// The connection protocol.\n\t*mux\n}\n\nfunc (c *connection) Close() error {\n\treturn c.sshConn.conn.Close()\n}\n\n// sshConn provides net.Conn metadata, but disallows direct reads and\n// writes.\ntype sshConn struct {\n\tconn net.Conn\n\n\tuser          string\n\tsessionID     []byte\n\tclientVersion []byte\n\tserverVersion []byte\n\talgorithms    NegotiatedAlgorithms\n}\n\nfunc dup(src []byte) []byte {\n\tdst := make([]byte, len(src))\n\tcopy(dst, src)\n\treturn dst\n}\n\nfunc (c *sshConn) User() string {\n\treturn c.user\n}\n\nfunc (c *sshConn) RemoteAddr() net.Addr {\n\treturn c.conn.RemoteAddr()\n}\n\nfunc (c *sshConn) Close() error {\n\treturn c.conn.Close()\n}\n\nfunc (c *sshConn) LocalAddr() net.Addr {\n\treturn c.conn.LocalAddr()\n}\n\nfunc (c *sshConn) SessionID() []byte {\n\treturn dup(c.sessionID)\n}\n\nfunc (c *sshConn) ClientVersion() []byte {\n\treturn dup(c.clientVersion)\n}\n\nfunc (c *sshConn) ServerVersion() []byte {\n\treturn dup(c.serverVersion)\n}\n\nfunc (c *sshConn) Algorithms() NegotiatedAlgorithms {\n\treturn c.algorithms\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/crypto/ssh/doc.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n/*\nPackage ssh implements an SSH client and server.\n\nSSH is a transport security protocol, an authentication protocol and a\nfamily of application protocols. The most typical application level\nprotocol is a remote shell and this is specifically implemented.  However,\nthe multiplexed nature of SSH is exposed to users that wish to support\nothers.\n\nReferences:\n\n\t[PROTOCOL]: https://cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.bin/ssh/PROTOCOL?rev=HEAD\n\t[PROTOCOL.certkeys]: http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.bin/ssh/PROTOCOL.certkeys?rev=HEAD\n\t[SSH-PARAMETERS]:    http://www.iana.org/assignments/ssh-parameters/ssh-parameters.xml#ssh-parameters-1\n\t[SSH-CERTS]:\thttps://datatracker.ietf.org/doc/html/draft-miller-ssh-cert-01\n\t[FIPS 140-3 mode]: https://go.dev/doc/security/fips140\n\nThis package does not fall under the stability promise of the Go language itself,\nso its API may be changed when pressing needs arise.\n\n# FIPS 140-3 mode\n\nWhen the program is in [FIPS 140-3 mode], this package behaves as if only SP\n800-140C and SP 800-140D approved cipher suites, signature algorithms,\ncertificate public key types and sizes, and key exchange and derivation\nalgorithms were implemented. Others are silently ignored and not negotiated, or\nrejected. This set may depend on the algorithms supported by the FIPS 140-3 Go\nCryptographic Module selected with GOFIPS140, and may change across Go versions.\n*/\npackage ssh\n"
  },
  {
    "path": "tests/vendor/golang.org/x/crypto/ssh/handshake.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage ssh\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n\t\"net\"\n\t\"slices\"\n\t\"strings\"\n\t\"sync\"\n)\n\n// debugHandshake, if set, prints messages sent and received.  Key\n// exchange messages are printed as if DH were used, so the debug\n// messages are wrong when using ECDH.\nconst debugHandshake = false\n\n// chanSize sets the amount of buffering SSH connections. This is\n// primarily for testing: setting chanSize=0 uncovers deadlocks more\n// quickly.\nconst chanSize = 16\n\n// maxPendingPackets sets the maximum number of packets to queue while waiting\n// for KEX to complete. This limits the total pending data to maxPendingPackets\n// * maxPacket bytes, which is ~16.8MB.\nconst maxPendingPackets = 64\n\n// keyingTransport is a packet based transport that supports key\n// changes. It need not be thread-safe. It should pass through\n// msgNewKeys in both directions.\ntype keyingTransport interface {\n\tpacketConn\n\n\t// prepareKeyChange sets up a key change. The key change for a\n\t// direction will be effected if a msgNewKeys message is sent\n\t// or received.\n\tprepareKeyChange(*NegotiatedAlgorithms, *kexResult) error\n\n\t// setStrictMode sets the strict KEX mode, notably triggering\n\t// sequence number resets on sending or receiving msgNewKeys.\n\t// If the sequence number is already > 1 when setStrictMode\n\t// is called, an error is returned.\n\tsetStrictMode() error\n\n\t// setInitialKEXDone indicates to the transport that the initial key exchange\n\t// was completed\n\tsetInitialKEXDone()\n}\n\n// handshakeTransport implements rekeying on top of a keyingTransport\n// and offers a thread-safe writePacket() interface.\ntype handshakeTransport struct {\n\tconn   keyingTransport\n\tconfig *Config\n\n\tserverVersion []byte\n\tclientVersion []byte\n\n\t// hostKeys is non-empty if we are the server. In that case,\n\t// it contains all host keys that can be used to sign the\n\t// connection.\n\thostKeys []Signer\n\n\t// publicKeyAuthAlgorithms is non-empty if we are the server. In that case,\n\t// it contains the supported client public key authentication algorithms.\n\tpublicKeyAuthAlgorithms []string\n\n\t// hostKeyAlgorithms is non-empty if we are the client. In that case,\n\t// we accept these key types from the server as host key.\n\thostKeyAlgorithms []string\n\n\t// On read error, incoming is closed, and readError is set.\n\tincoming  chan []byte\n\treadError error\n\n\tmu sync.Mutex\n\t// Condition for the above mutex. It is used to notify a completed key\n\t// exchange or a write failure. Writes can wait for this condition while a\n\t// key exchange is in progress.\n\twriteCond      *sync.Cond\n\twriteError     error\n\tsentInitPacket []byte\n\tsentInitMsg    *kexInitMsg\n\t// Used to queue writes when a key exchange is in progress. The length is\n\t// limited by pendingPacketsSize. Once full, writes will block until the key\n\t// exchange is completed or an error occurs. If not empty, it is emptied\n\t// all at once when the key exchange is completed in kexLoop.\n\tpendingPackets   [][]byte\n\twritePacketsLeft uint32\n\twriteBytesLeft   int64\n\tuserAuthComplete bool // whether the user authentication phase is complete\n\n\t// If the read loop wants to schedule a kex, it pings this\n\t// channel, and the write loop will send out a kex\n\t// message.\n\trequestKex chan struct{}\n\n\t// If the other side requests or confirms a kex, its kexInit\n\t// packet is sent here for the write loop to find it.\n\tstartKex    chan *pendingKex\n\tkexLoopDone chan struct{} // closed (with writeError non-nil) when kexLoop exits\n\n\t// data for host key checking\n\thostKeyCallback HostKeyCallback\n\tdialAddress     string\n\tremoteAddr      net.Addr\n\n\t// bannerCallback is non-empty if we are the client and it has been set in\n\t// ClientConfig. In that case it is called during the user authentication\n\t// dance to handle a custom server's message.\n\tbannerCallback BannerCallback\n\n\t// Algorithms agreed in the last key exchange.\n\talgorithms *NegotiatedAlgorithms\n\n\t// Counters exclusively owned by readLoop.\n\treadPacketsLeft uint32\n\treadBytesLeft   int64\n\n\t// The session ID or nil if first kex did not complete yet.\n\tsessionID []byte\n\n\t// strictMode indicates if the other side of the handshake indicated\n\t// that we should be following the strict KEX protocol restrictions.\n\tstrictMode bool\n}\n\ntype pendingKex struct {\n\totherInit []byte\n\tdone      chan error\n}\n\nfunc newHandshakeTransport(conn keyingTransport, config *Config, clientVersion, serverVersion []byte) *handshakeTransport {\n\tt := &handshakeTransport{\n\t\tconn:          conn,\n\t\tserverVersion: serverVersion,\n\t\tclientVersion: clientVersion,\n\t\tincoming:      make(chan []byte, chanSize),\n\t\trequestKex:    make(chan struct{}, 1),\n\t\tstartKex:      make(chan *pendingKex),\n\t\tkexLoopDone:   make(chan struct{}),\n\n\t\tconfig: config,\n\t}\n\tt.writeCond = sync.NewCond(&t.mu)\n\tt.resetReadThresholds()\n\tt.resetWriteThresholds()\n\n\t// We always start with a mandatory key exchange.\n\tt.requestKex <- struct{}{}\n\treturn t\n}\n\nfunc newClientTransport(conn keyingTransport, clientVersion, serverVersion []byte, config *ClientConfig, dialAddr string, addr net.Addr) *handshakeTransport {\n\tt := newHandshakeTransport(conn, &config.Config, clientVersion, serverVersion)\n\tt.dialAddress = dialAddr\n\tt.remoteAddr = addr\n\tt.hostKeyCallback = config.HostKeyCallback\n\tt.bannerCallback = config.BannerCallback\n\tif config.HostKeyAlgorithms != nil {\n\t\tt.hostKeyAlgorithms = config.HostKeyAlgorithms\n\t} else {\n\t\tt.hostKeyAlgorithms = defaultHostKeyAlgos\n\t}\n\tgo t.readLoop()\n\tgo t.kexLoop()\n\treturn t\n}\n\nfunc newServerTransport(conn keyingTransport, clientVersion, serverVersion []byte, config *ServerConfig) *handshakeTransport {\n\tt := newHandshakeTransport(conn, &config.Config, clientVersion, serverVersion)\n\tt.hostKeys = config.hostKeys\n\tt.publicKeyAuthAlgorithms = config.PublicKeyAuthAlgorithms\n\tgo t.readLoop()\n\tgo t.kexLoop()\n\treturn t\n}\n\nfunc (t *handshakeTransport) getSessionID() []byte {\n\treturn t.sessionID\n}\n\nfunc (t *handshakeTransport) getAlgorithms() NegotiatedAlgorithms {\n\treturn *t.algorithms\n}\n\n// waitSession waits for the session to be established. This should be\n// the first thing to call after instantiating handshakeTransport.\nfunc (t *handshakeTransport) waitSession() error {\n\tp, err := t.readPacket()\n\tif err != nil {\n\t\treturn err\n\t}\n\tif p[0] != msgNewKeys {\n\t\treturn fmt.Errorf(\"ssh: first packet should be msgNewKeys\")\n\t}\n\n\treturn nil\n}\n\nfunc (t *handshakeTransport) id() string {\n\tif len(t.hostKeys) > 0 {\n\t\treturn \"server\"\n\t}\n\treturn \"client\"\n}\n\nfunc (t *handshakeTransport) printPacket(p []byte, write bool) {\n\taction := \"got\"\n\tif write {\n\t\taction = \"sent\"\n\t}\n\n\tif p[0] == msgChannelData || p[0] == msgChannelExtendedData {\n\t\tlog.Printf(\"%s %s data (packet %d bytes)\", t.id(), action, len(p))\n\t} else {\n\t\tmsg, err := decode(p)\n\t\tlog.Printf(\"%s %s %T %v (%v)\", t.id(), action, msg, msg, err)\n\t}\n}\n\nfunc (t *handshakeTransport) readPacket() ([]byte, error) {\n\tp, ok := <-t.incoming\n\tif !ok {\n\t\treturn nil, t.readError\n\t}\n\treturn p, nil\n}\n\nfunc (t *handshakeTransport) readLoop() {\n\tfirst := true\n\tfor {\n\t\tp, err := t.readOnePacket(first)\n\t\tfirst = false\n\t\tif err != nil {\n\t\t\tt.readError = err\n\t\t\tclose(t.incoming)\n\t\t\tbreak\n\t\t}\n\t\t// If this is the first kex, and strict KEX mode is enabled,\n\t\t// we don't ignore any messages, as they may be used to manipulate\n\t\t// the packet sequence numbers.\n\t\tif !(t.sessionID == nil && t.strictMode) && (p[0] == msgIgnore || p[0] == msgDebug) {\n\t\t\tcontinue\n\t\t}\n\t\tt.incoming <- p\n\t}\n\n\t// Stop writers too.\n\tt.recordWriteError(t.readError)\n\n\t// Unblock the writer should it wait for this.\n\tclose(t.startKex)\n\n\t// Don't close t.requestKex; it's also written to from writePacket.\n}\n\nfunc (t *handshakeTransport) pushPacket(p []byte) error {\n\tif debugHandshake {\n\t\tt.printPacket(p, true)\n\t}\n\treturn t.conn.writePacket(p)\n}\n\nfunc (t *handshakeTransport) getWriteError() error {\n\tt.mu.Lock()\n\tdefer t.mu.Unlock()\n\treturn t.writeError\n}\n\nfunc (t *handshakeTransport) recordWriteError(err error) {\n\tt.mu.Lock()\n\tdefer t.mu.Unlock()\n\tif t.writeError == nil && err != nil {\n\t\tt.writeError = err\n\t\tt.writeCond.Broadcast()\n\t}\n}\n\nfunc (t *handshakeTransport) requestKeyExchange() {\n\tselect {\n\tcase t.requestKex <- struct{}{}:\n\tdefault:\n\t\t// something already requested a kex, so do nothing.\n\t}\n}\n\nfunc (t *handshakeTransport) resetWriteThresholds() {\n\tt.writePacketsLeft = packetRekeyThreshold\n\tif t.config.RekeyThreshold > 0 {\n\t\tt.writeBytesLeft = int64(t.config.RekeyThreshold)\n\t} else if t.algorithms != nil {\n\t\tt.writeBytesLeft = t.algorithms.Write.rekeyBytes()\n\t} else {\n\t\tt.writeBytesLeft = 1 << 30\n\t}\n}\n\nfunc (t *handshakeTransport) kexLoop() {\n\nwrite:\n\tfor t.getWriteError() == nil {\n\t\tvar request *pendingKex\n\t\tvar sent bool\n\n\t\tfor request == nil || !sent {\n\t\t\tvar ok bool\n\t\t\tselect {\n\t\t\tcase request, ok = <-t.startKex:\n\t\t\t\tif !ok {\n\t\t\t\t\tbreak write\n\t\t\t\t}\n\t\t\tcase <-t.requestKex:\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tif !sent {\n\t\t\t\tif err := t.sendKexInit(); err != nil {\n\t\t\t\t\tt.recordWriteError(err)\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tsent = true\n\t\t\t}\n\t\t}\n\n\t\tif err := t.getWriteError(); err != nil {\n\t\t\tif request != nil {\n\t\t\t\trequest.done <- err\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\n\t\t// We're not servicing t.requestKex, but that is OK:\n\t\t// we never block on sending to t.requestKex.\n\n\t\t// We're not servicing t.startKex, but the remote end\n\t\t// has just sent us a kexInitMsg, so it can't send\n\t\t// another key change request, until we close the done\n\t\t// channel on the pendingKex request.\n\n\t\terr := t.enterKeyExchange(request.otherInit)\n\n\t\tt.mu.Lock()\n\t\tt.writeError = err\n\t\tt.sentInitPacket = nil\n\t\tt.sentInitMsg = nil\n\n\t\tt.resetWriteThresholds()\n\n\t\t// we have completed the key exchange. Since the\n\t\t// reader is still blocked, it is safe to clear out\n\t\t// the requestKex channel. This avoids the situation\n\t\t// where: 1) we consumed our own request for the\n\t\t// initial kex, and 2) the kex from the remote side\n\t\t// caused another send on the requestKex channel,\n\tclear:\n\t\tfor {\n\t\t\tselect {\n\t\t\tcase <-t.requestKex:\n\t\t\t\t//\n\t\t\tdefault:\n\t\t\t\tbreak clear\n\t\t\t}\n\t\t}\n\n\t\trequest.done <- t.writeError\n\n\t\t// kex finished. Push packets that we received while\n\t\t// the kex was in progress. Don't look at t.startKex\n\t\t// and don't increment writtenSinceKex: if we trigger\n\t\t// another kex while we are still busy with the last\n\t\t// one, things will become very confusing.\n\t\tfor _, p := range t.pendingPackets {\n\t\t\tt.writeError = t.pushPacket(p)\n\t\t\tif t.writeError != nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tt.pendingPackets = t.pendingPackets[:0]\n\t\t// Unblock writePacket if waiting for KEX.\n\t\tt.writeCond.Broadcast()\n\t\tt.mu.Unlock()\n\t}\n\n\t// Unblock reader.\n\tt.conn.Close()\n\n\t// drain startKex channel. We don't service t.requestKex\n\t// because nobody does blocking sends there.\n\tfor request := range t.startKex {\n\t\trequest.done <- t.getWriteError()\n\t}\n\n\t// Mark that the loop is done so that Close can return.\n\tclose(t.kexLoopDone)\n}\n\n// The protocol uses uint32 for packet counters, so we can't let them\n// reach 1<<32.  We will actually read and write more packets than\n// this, though: the other side may send more packets, and after we\n// hit this limit on writing we will send a few more packets for the\n// key exchange itself.\nconst packetRekeyThreshold = (1 << 31)\n\nfunc (t *handshakeTransport) resetReadThresholds() {\n\tt.readPacketsLeft = packetRekeyThreshold\n\tif t.config.RekeyThreshold > 0 {\n\t\tt.readBytesLeft = int64(t.config.RekeyThreshold)\n\t} else if t.algorithms != nil {\n\t\tt.readBytesLeft = t.algorithms.Read.rekeyBytes()\n\t} else {\n\t\tt.readBytesLeft = 1 << 30\n\t}\n}\n\nfunc (t *handshakeTransport) readOnePacket(first bool) ([]byte, error) {\n\tp, err := t.conn.readPacket()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif t.readPacketsLeft > 0 {\n\t\tt.readPacketsLeft--\n\t} else {\n\t\tt.requestKeyExchange()\n\t}\n\n\tif t.readBytesLeft > 0 {\n\t\tt.readBytesLeft -= int64(len(p))\n\t} else {\n\t\tt.requestKeyExchange()\n\t}\n\n\tif debugHandshake {\n\t\tt.printPacket(p, false)\n\t}\n\n\tif first && p[0] != msgKexInit {\n\t\treturn nil, fmt.Errorf(\"ssh: first packet should be msgKexInit\")\n\t}\n\n\tif p[0] != msgKexInit {\n\t\treturn p, nil\n\t}\n\n\tfirstKex := t.sessionID == nil\n\n\tkex := pendingKex{\n\t\tdone:      make(chan error, 1),\n\t\totherInit: p,\n\t}\n\tt.startKex <- &kex\n\terr = <-kex.done\n\n\tif debugHandshake {\n\t\tlog.Printf(\"%s exited key exchange (first %v), err %v\", t.id(), firstKex, err)\n\t}\n\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tt.resetReadThresholds()\n\n\t// By default, a key exchange is hidden from higher layers by\n\t// translating it into msgIgnore.\n\tsuccessPacket := []byte{msgIgnore}\n\tif firstKex {\n\t\t// sendKexInit() for the first kex waits for\n\t\t// msgNewKeys so the authentication process is\n\t\t// guaranteed to happen over an encrypted transport.\n\t\tsuccessPacket = []byte{msgNewKeys}\n\t}\n\n\treturn successPacket, nil\n}\n\nconst (\n\tkexStrictClient = \"kex-strict-c-v00@openssh.com\"\n\tkexStrictServer = \"kex-strict-s-v00@openssh.com\"\n)\n\n// sendKexInit sends a key change message.\nfunc (t *handshakeTransport) sendKexInit() error {\n\tt.mu.Lock()\n\tdefer t.mu.Unlock()\n\tif t.sentInitMsg != nil {\n\t\t// kexInits may be sent either in response to the other side,\n\t\t// or because our side wants to initiate a key change, so we\n\t\t// may have already sent a kexInit. In that case, don't send a\n\t\t// second kexInit.\n\t\treturn nil\n\t}\n\n\tmsg := &kexInitMsg{\n\t\tCiphersClientServer:     t.config.Ciphers,\n\t\tCiphersServerClient:     t.config.Ciphers,\n\t\tMACsClientServer:        t.config.MACs,\n\t\tMACsServerClient:        t.config.MACs,\n\t\tCompressionClientServer: supportedCompressions,\n\t\tCompressionServerClient: supportedCompressions,\n\t}\n\tio.ReadFull(t.config.Rand, msg.Cookie[:])\n\n\t// We mutate the KexAlgos slice, in order to add the kex-strict extension algorithm,\n\t// and possibly to add the ext-info extension algorithm. Since the slice may be the\n\t// user owned KeyExchanges, we create our own slice in order to avoid using user\n\t// owned memory by mistake.\n\tmsg.KexAlgos = make([]string, 0, len(t.config.KeyExchanges)+2) // room for kex-strict and ext-info\n\tmsg.KexAlgos = append(msg.KexAlgos, t.config.KeyExchanges...)\n\n\tisServer := len(t.hostKeys) > 0\n\tif isServer {\n\t\tfor _, k := range t.hostKeys {\n\t\t\t// If k is a MultiAlgorithmSigner, we restrict the signature\n\t\t\t// algorithms. If k is a AlgorithmSigner, presume it supports all\n\t\t\t// signature algorithms associated with the key format. If k is not\n\t\t\t// an AlgorithmSigner, we can only assume it only supports the\n\t\t\t// algorithms that matches the key format. (This means that Sign\n\t\t\t// can't pick a different default).\n\t\t\tkeyFormat := k.PublicKey().Type()\n\n\t\t\tswitch s := k.(type) {\n\t\t\tcase MultiAlgorithmSigner:\n\t\t\t\tfor _, algo := range algorithmsForKeyFormat(keyFormat) {\n\t\t\t\t\tif slices.Contains(s.Algorithms(), underlyingAlgo(algo)) {\n\t\t\t\t\t\tmsg.ServerHostKeyAlgos = append(msg.ServerHostKeyAlgos, algo)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase AlgorithmSigner:\n\t\t\t\tmsg.ServerHostKeyAlgos = append(msg.ServerHostKeyAlgos, algorithmsForKeyFormat(keyFormat)...)\n\t\t\tdefault:\n\t\t\t\tmsg.ServerHostKeyAlgos = append(msg.ServerHostKeyAlgos, keyFormat)\n\t\t\t}\n\t\t}\n\n\t\tif t.sessionID == nil {\n\t\t\tmsg.KexAlgos = append(msg.KexAlgos, kexStrictServer)\n\t\t}\n\t} else {\n\t\tmsg.ServerHostKeyAlgos = t.hostKeyAlgorithms\n\n\t\t// As a client we opt in to receiving SSH_MSG_EXT_INFO so we know what\n\t\t// algorithms the server supports for public key authentication. See RFC\n\t\t// 8308, Section 2.1.\n\t\t//\n\t\t// We also send the strict KEX mode extension algorithm, in order to opt\n\t\t// into the strict KEX mode.\n\t\tif firstKeyExchange := t.sessionID == nil; firstKeyExchange {\n\t\t\tmsg.KexAlgos = append(msg.KexAlgos, \"ext-info-c\")\n\t\t\tmsg.KexAlgos = append(msg.KexAlgos, kexStrictClient)\n\t\t}\n\n\t}\n\n\tpacket := Marshal(msg)\n\n\t// writePacket destroys the contents, so save a copy.\n\tpacketCopy := make([]byte, len(packet))\n\tcopy(packetCopy, packet)\n\n\tif err := t.pushPacket(packetCopy); err != nil {\n\t\treturn err\n\t}\n\n\tt.sentInitMsg = msg\n\tt.sentInitPacket = packet\n\n\treturn nil\n}\n\nvar errSendBannerPhase = errors.New(\"ssh: SendAuthBanner outside of authentication phase\")\n\nfunc (t *handshakeTransport) writePacket(p []byte) error {\n\tt.mu.Lock()\n\tdefer t.mu.Unlock()\n\n\tswitch p[0] {\n\tcase msgKexInit:\n\t\treturn errors.New(\"ssh: only handshakeTransport can send kexInit\")\n\tcase msgNewKeys:\n\t\treturn errors.New(\"ssh: only handshakeTransport can send newKeys\")\n\tcase msgUserAuthBanner:\n\t\tif t.userAuthComplete {\n\t\t\treturn errSendBannerPhase\n\t\t}\n\tcase msgUserAuthSuccess:\n\t\tt.userAuthComplete = true\n\t}\n\n\tif t.writeError != nil {\n\t\treturn t.writeError\n\t}\n\n\tif t.sentInitMsg != nil {\n\t\tif len(t.pendingPackets) < maxPendingPackets {\n\t\t\t// Copy the packet so the writer can reuse the buffer.\n\t\t\tcp := make([]byte, len(p))\n\t\t\tcopy(cp, p)\n\t\t\tt.pendingPackets = append(t.pendingPackets, cp)\n\t\t\treturn nil\n\t\t}\n\t\tfor t.sentInitMsg != nil {\n\t\t\t// Block and wait for KEX to complete or an error.\n\t\t\tt.writeCond.Wait()\n\t\t\tif t.writeError != nil {\n\t\t\t\treturn t.writeError\n\t\t\t}\n\t\t}\n\t}\n\n\tif t.writeBytesLeft > 0 {\n\t\tt.writeBytesLeft -= int64(len(p))\n\t} else {\n\t\tt.requestKeyExchange()\n\t}\n\n\tif t.writePacketsLeft > 0 {\n\t\tt.writePacketsLeft--\n\t} else {\n\t\tt.requestKeyExchange()\n\t}\n\n\tif err := t.pushPacket(p); err != nil {\n\t\tt.writeError = err\n\t\tt.writeCond.Broadcast()\n\t}\n\n\treturn nil\n}\n\nfunc (t *handshakeTransport) Close() error {\n\t// Close the connection. This should cause the readLoop goroutine to wake up\n\t// and close t.startKex, which will shut down kexLoop if running.\n\terr := t.conn.Close()\n\n\t// Wait for the kexLoop goroutine to complete.\n\t// At that point we know that the readLoop goroutine is complete too,\n\t// because kexLoop itself waits for readLoop to close the startKex channel.\n\t<-t.kexLoopDone\n\n\treturn err\n}\n\nfunc (t *handshakeTransport) enterKeyExchange(otherInitPacket []byte) error {\n\tif debugHandshake {\n\t\tlog.Printf(\"%s entered key exchange\", t.id())\n\t}\n\n\totherInit := &kexInitMsg{}\n\tif err := Unmarshal(otherInitPacket, otherInit); err != nil {\n\t\treturn err\n\t}\n\n\tmagics := handshakeMagics{\n\t\tclientVersion: t.clientVersion,\n\t\tserverVersion: t.serverVersion,\n\t\tclientKexInit: otherInitPacket,\n\t\tserverKexInit: t.sentInitPacket,\n\t}\n\n\tclientInit := otherInit\n\tserverInit := t.sentInitMsg\n\tisClient := len(t.hostKeys) == 0\n\tif isClient {\n\t\tclientInit, serverInit = serverInit, clientInit\n\n\t\tmagics.clientKexInit = t.sentInitPacket\n\t\tmagics.serverKexInit = otherInitPacket\n\t}\n\n\tvar err error\n\tt.algorithms, err = findAgreedAlgorithms(isClient, clientInit, serverInit)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif t.sessionID == nil && ((isClient && slices.Contains(serverInit.KexAlgos, kexStrictServer)) || (!isClient && slices.Contains(clientInit.KexAlgos, kexStrictClient))) {\n\t\tt.strictMode = true\n\t\tif err := t.conn.setStrictMode(); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\t// We don't send FirstKexFollows, but we handle receiving it.\n\t//\n\t// RFC 4253 section 7 defines the kex and the agreement method for\n\t// first_kex_packet_follows. It states that the guessed packet\n\t// should be ignored if the \"kex algorithm and/or the host\n\t// key algorithm is guessed wrong (server and client have\n\t// different preferred algorithm), or if any of the other\n\t// algorithms cannot be agreed upon\". The other algorithms have\n\t// already been checked above so the kex algorithm and host key\n\t// algorithm are checked here.\n\tif otherInit.FirstKexFollows && (clientInit.KexAlgos[0] != serverInit.KexAlgos[0] || clientInit.ServerHostKeyAlgos[0] != serverInit.ServerHostKeyAlgos[0]) {\n\t\t// other side sent a kex message for the wrong algorithm,\n\t\t// which we have to ignore.\n\t\tif _, err := t.conn.readPacket(); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tkex, ok := kexAlgoMap[t.algorithms.KeyExchange]\n\tif !ok {\n\t\treturn fmt.Errorf(\"ssh: unexpected key exchange algorithm %v\", t.algorithms.KeyExchange)\n\t}\n\n\tvar result *kexResult\n\tif len(t.hostKeys) > 0 {\n\t\tresult, err = t.server(kex, &magics)\n\t} else {\n\t\tresult, err = t.client(kex, &magics)\n\t}\n\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tfirstKeyExchange := t.sessionID == nil\n\tif firstKeyExchange {\n\t\tt.sessionID = result.H\n\t}\n\tresult.SessionID = t.sessionID\n\n\tif err := t.conn.prepareKeyChange(t.algorithms, result); err != nil {\n\t\treturn err\n\t}\n\tif err = t.conn.writePacket([]byte{msgNewKeys}); err != nil {\n\t\treturn err\n\t}\n\n\t// On the server side, after the first SSH_MSG_NEWKEYS, send a SSH_MSG_EXT_INFO\n\t// message with the server-sig-algs extension if the client supports it. See\n\t// RFC 8308, Sections 2.4 and 3.1, and [PROTOCOL], Section 1.9.\n\tif !isClient && firstKeyExchange && slices.Contains(clientInit.KexAlgos, \"ext-info-c\") {\n\t\tsupportedPubKeyAuthAlgosList := strings.Join(t.publicKeyAuthAlgorithms, \",\")\n\t\textInfo := &extInfoMsg{\n\t\t\tNumExtensions: 2,\n\t\t\tPayload:       make([]byte, 0, 4+15+4+len(supportedPubKeyAuthAlgosList)+4+16+4+1),\n\t\t}\n\t\textInfo.Payload = appendInt(extInfo.Payload, len(\"server-sig-algs\"))\n\t\textInfo.Payload = append(extInfo.Payload, \"server-sig-algs\"...)\n\t\textInfo.Payload = appendInt(extInfo.Payload, len(supportedPubKeyAuthAlgosList))\n\t\textInfo.Payload = append(extInfo.Payload, supportedPubKeyAuthAlgosList...)\n\t\textInfo.Payload = appendInt(extInfo.Payload, len(\"ping@openssh.com\"))\n\t\textInfo.Payload = append(extInfo.Payload, \"ping@openssh.com\"...)\n\t\textInfo.Payload = appendInt(extInfo.Payload, 1)\n\t\textInfo.Payload = append(extInfo.Payload, \"0\"...)\n\t\tif err := t.conn.writePacket(Marshal(extInfo)); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tif packet, err := t.conn.readPacket(); err != nil {\n\t\treturn err\n\t} else if packet[0] != msgNewKeys {\n\t\treturn unexpectedMessageError(msgNewKeys, packet[0])\n\t}\n\n\tif firstKeyExchange {\n\t\t// Indicates to the transport that the first key exchange is completed\n\t\t// after receiving SSH_MSG_NEWKEYS.\n\t\tt.conn.setInitialKEXDone()\n\t}\n\n\treturn nil\n}\n\n// algorithmSignerWrapper is an AlgorithmSigner that only supports the default\n// key format algorithm.\n//\n// This is technically a violation of the AlgorithmSigner interface, but it\n// should be unreachable given where we use this. Anyway, at least it returns an\n// error instead of panicing or producing an incorrect signature.\ntype algorithmSignerWrapper struct {\n\tSigner\n}\n\nfunc (a algorithmSignerWrapper) SignWithAlgorithm(rand io.Reader, data []byte, algorithm string) (*Signature, error) {\n\tif algorithm != underlyingAlgo(a.PublicKey().Type()) {\n\t\treturn nil, errors.New(\"ssh: internal error: algorithmSignerWrapper invoked with non-default algorithm\")\n\t}\n\treturn a.Sign(rand, data)\n}\n\nfunc pickHostKey(hostKeys []Signer, algo string) AlgorithmSigner {\n\tfor _, k := range hostKeys {\n\t\tif s, ok := k.(MultiAlgorithmSigner); ok {\n\t\t\tif !slices.Contains(s.Algorithms(), underlyingAlgo(algo)) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\n\t\tif algo == k.PublicKey().Type() {\n\t\t\treturn algorithmSignerWrapper{k}\n\t\t}\n\n\t\tk, ok := k.(AlgorithmSigner)\n\t\tif !ok {\n\t\t\tcontinue\n\t\t}\n\t\tfor _, a := range algorithmsForKeyFormat(k.PublicKey().Type()) {\n\t\t\tif algo == a {\n\t\t\t\treturn k\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (t *handshakeTransport) server(kex kexAlgorithm, magics *handshakeMagics) (*kexResult, error) {\n\thostKey := pickHostKey(t.hostKeys, t.algorithms.HostKey)\n\tif hostKey == nil {\n\t\treturn nil, errors.New(\"ssh: internal error: negotiated unsupported signature type\")\n\t}\n\n\tr, err := kex.Server(t.conn, t.config.Rand, magics, hostKey, t.algorithms.HostKey)\n\treturn r, err\n}\n\nfunc (t *handshakeTransport) client(kex kexAlgorithm, magics *handshakeMagics) (*kexResult, error) {\n\tresult, err := kex.Client(t.conn, t.config.Rand, magics)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\thostKey, err := ParsePublicKey(result.HostKey)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif err := verifyHostKeySignature(hostKey, t.algorithms.HostKey, result); err != nil {\n\t\treturn nil, err\n\t}\n\n\terr = t.hostKeyCallback(t.dialAddress, t.remoteAddr, hostKey)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn result, nil\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/crypto/ssh/internal/bcrypt_pbkdf/bcrypt_pbkdf.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package bcrypt_pbkdf implements bcrypt_pbkdf(3) from OpenBSD.\n//\n// See https://flak.tedunangst.com/post/bcrypt-pbkdf and\n// https://cvsweb.openbsd.org/cgi-bin/cvsweb/src/lib/libutil/bcrypt_pbkdf.c.\npackage bcrypt_pbkdf\n\nimport (\n\t\"crypto/sha512\"\n\t\"errors\"\n\t\"golang.org/x/crypto/blowfish\"\n)\n\nconst blockSize = 32\n\n// Key derives a key from the password, salt and rounds count, returning a\n// []byte of length keyLen that can be used as cryptographic key.\nfunc Key(password, salt []byte, rounds, keyLen int) ([]byte, error) {\n\tif rounds < 1 {\n\t\treturn nil, errors.New(\"bcrypt_pbkdf: number of rounds is too small\")\n\t}\n\tif len(password) == 0 {\n\t\treturn nil, errors.New(\"bcrypt_pbkdf: empty password\")\n\t}\n\tif len(salt) == 0 || len(salt) > 1<<20 {\n\t\treturn nil, errors.New(\"bcrypt_pbkdf: bad salt length\")\n\t}\n\tif keyLen > 1024 {\n\t\treturn nil, errors.New(\"bcrypt_pbkdf: keyLen is too large\")\n\t}\n\n\tnumBlocks := (keyLen + blockSize - 1) / blockSize\n\tkey := make([]byte, numBlocks*blockSize)\n\n\th := sha512.New()\n\th.Write(password)\n\tshapass := h.Sum(nil)\n\n\tshasalt := make([]byte, 0, sha512.Size)\n\tcnt, tmp := make([]byte, 4), make([]byte, blockSize)\n\tfor block := 1; block <= numBlocks; block++ {\n\t\th.Reset()\n\t\th.Write(salt)\n\t\tcnt[0] = byte(block >> 24)\n\t\tcnt[1] = byte(block >> 16)\n\t\tcnt[2] = byte(block >> 8)\n\t\tcnt[3] = byte(block)\n\t\th.Write(cnt)\n\t\tbcryptHash(tmp, shapass, h.Sum(shasalt))\n\n\t\tout := make([]byte, blockSize)\n\t\tcopy(out, tmp)\n\t\tfor i := 2; i <= rounds; i++ {\n\t\t\th.Reset()\n\t\t\th.Write(tmp)\n\t\t\tbcryptHash(tmp, shapass, h.Sum(shasalt))\n\t\t\tfor j := 0; j < len(out); j++ {\n\t\t\t\tout[j] ^= tmp[j]\n\t\t\t}\n\t\t}\n\n\t\tfor i, v := range out {\n\t\t\tkey[i*numBlocks+(block-1)] = v\n\t\t}\n\t}\n\treturn key[:keyLen], nil\n}\n\nvar magic = []byte(\"OxychromaticBlowfishSwatDynamite\")\n\nfunc bcryptHash(out, shapass, shasalt []byte) {\n\tc, err := blowfish.NewSaltedCipher(shapass, shasalt)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfor i := 0; i < 64; i++ {\n\t\tblowfish.ExpandKey(shasalt, c)\n\t\tblowfish.ExpandKey(shapass, c)\n\t}\n\tcopy(out, magic)\n\tfor i := 0; i < 32; i += 8 {\n\t\tfor j := 0; j < 64; j++ {\n\t\t\tc.Encrypt(out[i:i+8], out[i:i+8])\n\t\t}\n\t}\n\t// Swap bytes due to different endianness.\n\tfor i := 0; i < 32; i += 4 {\n\t\tout[i+3], out[i+2], out[i+1], out[i] = out[i], out[i+1], out[i+2], out[i+3]\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/crypto/ssh/kex.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage ssh\n\nimport (\n\t\"crypto\"\n\t\"crypto/ecdsa\"\n\t\"crypto/elliptic\"\n\t\"crypto/fips140\"\n\t\"crypto/rand\"\n\t\"encoding/binary\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"math/big\"\n\t\"slices\"\n\n\t\"golang.org/x/crypto/curve25519\"\n)\n\nconst (\n\t// This is the group called diffie-hellman-group1-sha1 in RFC 4253 and\n\t// Oakley Group 2 in RFC 2409.\n\toakleyGroup2 = \"FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE65381FFFFFFFFFFFFFFFF\"\n\t// This is the group called diffie-hellman-group14-sha1 in RFC 4253 and\n\t// Oakley Group 14 in RFC 3526.\n\toakleyGroup14 = \"FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C354E4ABC9804F1746C08CA18217C32905E462E36CE3BE39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF6955817183995497CEA956AE515D2261898FA051015728E5A8AACAA68FFFFFFFFFFFFFFFF\"\n\t// This is the group called diffie-hellman-group15-sha512 in RFC 8268 and\n\t// Oakley Group 15 in RFC 3526.\n\toakleyGroup15 = \"FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C354E4ABC9804F1746C08CA18217C32905E462E36CE3BE39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF6955817183995497CEA956AE515D2261898FA051015728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6BF12FFA06D98A0864D87602733EC86A64521F2B18177B200CBBE117577A615D6C770988C0BAD946E208E24FA074E5AB3143DB5BFCE0FD108E4B82D120A93AD2CAFFFFFFFFFFFFFFFF\"\n\t// This is the group called diffie-hellman-group16-sha512 in RFC 8268 and\n\t// Oakley Group 16 in RFC 3526.\n\toakleyGroup16 = \"FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C354E4ABC9804F1746C08CA18217C32905E462E36CE3BE39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF6955817183995497CEA956AE515D2261898FA051015728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6BF12FFA06D98A0864D87602733EC86A64521F2B18177B200CBBE117577A615D6C770988C0BAD946E208E24FA074E5AB3143DB5BFCE0FD108E4B82D120A92108011A723C12A787E6D788719A10BDBA5B2699C327186AF4E23C1A946834B6150BDA2583E9CA2AD44CE8DBBBC2DB04DE8EF92E8EFC141FBECAA6287C59474E6BC05D99B2964FA090C3A2233BA186515BE7ED1F612970CEE2D7AFB81BDD762170481CD0069127D5B05AA993B4EA988D8FDDC186FFB7DC90A6C08F4DF435C934063199FFFFFFFFFFFFFFFF\"\n)\n\n// kexResult captures the outcome of a key exchange.\ntype kexResult struct {\n\t// Session hash. See also RFC 4253, section 8.\n\tH []byte\n\n\t// Shared secret. See also RFC 4253, section 8.\n\tK []byte\n\n\t// Host key as hashed into H.\n\tHostKey []byte\n\n\t// Signature of H.\n\tSignature []byte\n\n\t// A cryptographic hash function that matches the security\n\t// level of the key exchange algorithm. It is used for\n\t// calculating H, and for deriving keys from H and K.\n\tHash crypto.Hash\n\n\t// The session ID, which is the first H computed. This is used\n\t// to derive key material inside the transport.\n\tSessionID []byte\n}\n\n// handshakeMagics contains data that is always included in the\n// session hash.\ntype handshakeMagics struct {\n\tclientVersion, serverVersion []byte\n\tclientKexInit, serverKexInit []byte\n}\n\nfunc (m *handshakeMagics) write(w io.Writer) {\n\twriteString(w, m.clientVersion)\n\twriteString(w, m.serverVersion)\n\twriteString(w, m.clientKexInit)\n\twriteString(w, m.serverKexInit)\n}\n\n// kexAlgorithm abstracts different key exchange algorithms.\ntype kexAlgorithm interface {\n\t// Server runs server-side key agreement, signing the result\n\t// with a hostkey. algo is the negotiated algorithm, and may\n\t// be a certificate type.\n\tServer(p packetConn, rand io.Reader, magics *handshakeMagics, s AlgorithmSigner, algo string) (*kexResult, error)\n\n\t// Client runs the client-side key agreement. Caller is\n\t// responsible for verifying the host key signature.\n\tClient(p packetConn, rand io.Reader, magics *handshakeMagics) (*kexResult, error)\n}\n\n// dhGroup is a multiplicative group suitable for implementing Diffie-Hellman key agreement.\ntype dhGroup struct {\n\tg, p, pMinus1 *big.Int\n\thashFunc      crypto.Hash\n}\n\nfunc (group *dhGroup) diffieHellman(theirPublic, myPrivate *big.Int) (*big.Int, error) {\n\tif theirPublic.Cmp(bigOne) <= 0 || theirPublic.Cmp(group.pMinus1) >= 0 {\n\t\treturn nil, errors.New(\"ssh: DH parameter out of bounds\")\n\t}\n\treturn new(big.Int).Exp(theirPublic, myPrivate, group.p), nil\n}\n\nfunc (group *dhGroup) Client(c packetConn, randSource io.Reader, magics *handshakeMagics) (*kexResult, error) {\n\tvar x *big.Int\n\tfor {\n\t\tvar err error\n\t\tif x, err = rand.Int(randSource, group.pMinus1); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif x.Sign() > 0 {\n\t\t\tbreak\n\t\t}\n\t}\n\n\tX := new(big.Int).Exp(group.g, x, group.p)\n\tkexDHInit := kexDHInitMsg{\n\t\tX: X,\n\t}\n\tif err := c.writePacket(Marshal(&kexDHInit)); err != nil {\n\t\treturn nil, err\n\t}\n\n\tpacket, err := c.readPacket()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar kexDHReply kexDHReplyMsg\n\tif err = Unmarshal(packet, &kexDHReply); err != nil {\n\t\treturn nil, err\n\t}\n\n\tki, err := group.diffieHellman(kexDHReply.Y, x)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\th := group.hashFunc.New()\n\tmagics.write(h)\n\twriteString(h, kexDHReply.HostKey)\n\twriteInt(h, X)\n\twriteInt(h, kexDHReply.Y)\n\tK := make([]byte, intLength(ki))\n\tmarshalInt(K, ki)\n\th.Write(K)\n\n\treturn &kexResult{\n\t\tH:         h.Sum(nil),\n\t\tK:         K,\n\t\tHostKey:   kexDHReply.HostKey,\n\t\tSignature: kexDHReply.Signature,\n\t\tHash:      group.hashFunc,\n\t}, nil\n}\n\nfunc (group *dhGroup) Server(c packetConn, randSource io.Reader, magics *handshakeMagics, priv AlgorithmSigner, algo string) (result *kexResult, err error) {\n\tpacket, err := c.readPacket()\n\tif err != nil {\n\t\treturn\n\t}\n\tvar kexDHInit kexDHInitMsg\n\tif err = Unmarshal(packet, &kexDHInit); err != nil {\n\t\treturn\n\t}\n\n\tvar y *big.Int\n\tfor {\n\t\tif y, err = rand.Int(randSource, group.pMinus1); err != nil {\n\t\t\treturn\n\t\t}\n\t\tif y.Sign() > 0 {\n\t\t\tbreak\n\t\t}\n\t}\n\n\tY := new(big.Int).Exp(group.g, y, group.p)\n\tki, err := group.diffieHellman(kexDHInit.X, y)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\thostKeyBytes := priv.PublicKey().Marshal()\n\n\th := group.hashFunc.New()\n\tmagics.write(h)\n\twriteString(h, hostKeyBytes)\n\twriteInt(h, kexDHInit.X)\n\twriteInt(h, Y)\n\n\tK := make([]byte, intLength(ki))\n\tmarshalInt(K, ki)\n\th.Write(K)\n\n\tH := h.Sum(nil)\n\n\t// H is already a hash, but the hostkey signing will apply its\n\t// own key-specific hash algorithm.\n\tsig, err := signAndMarshal(priv, randSource, H, algo)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tkexDHReply := kexDHReplyMsg{\n\t\tHostKey:   hostKeyBytes,\n\t\tY:         Y,\n\t\tSignature: sig,\n\t}\n\tpacket = Marshal(&kexDHReply)\n\n\terr = c.writePacket(packet)\n\treturn &kexResult{\n\t\tH:         H,\n\t\tK:         K,\n\t\tHostKey:   hostKeyBytes,\n\t\tSignature: sig,\n\t\tHash:      group.hashFunc,\n\t}, err\n}\n\n// ecdh performs Elliptic Curve Diffie-Hellman key exchange as\n// described in RFC 5656, section 4.\ntype ecdh struct {\n\tcurve elliptic.Curve\n}\n\nfunc (kex *ecdh) Client(c packetConn, rand io.Reader, magics *handshakeMagics) (*kexResult, error) {\n\tephKey, err := ecdsa.GenerateKey(kex.curve, rand)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tkexInit := kexECDHInitMsg{\n\t\tClientPubKey: elliptic.Marshal(kex.curve, ephKey.PublicKey.X, ephKey.PublicKey.Y),\n\t}\n\n\tserialized := Marshal(&kexInit)\n\tif err := c.writePacket(serialized); err != nil {\n\t\treturn nil, err\n\t}\n\n\tpacket, err := c.readPacket()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar reply kexECDHReplyMsg\n\tif err = Unmarshal(packet, &reply); err != nil {\n\t\treturn nil, err\n\t}\n\n\tx, y, err := unmarshalECKey(kex.curve, reply.EphemeralPubKey)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// generate shared secret\n\tsecret, _ := kex.curve.ScalarMult(x, y, ephKey.D.Bytes())\n\n\th := ecHash(kex.curve).New()\n\tmagics.write(h)\n\twriteString(h, reply.HostKey)\n\twriteString(h, kexInit.ClientPubKey)\n\twriteString(h, reply.EphemeralPubKey)\n\tK := make([]byte, intLength(secret))\n\tmarshalInt(K, secret)\n\th.Write(K)\n\n\treturn &kexResult{\n\t\tH:         h.Sum(nil),\n\t\tK:         K,\n\t\tHostKey:   reply.HostKey,\n\t\tSignature: reply.Signature,\n\t\tHash:      ecHash(kex.curve),\n\t}, nil\n}\n\n// unmarshalECKey parses and checks an EC key.\nfunc unmarshalECKey(curve elliptic.Curve, pubkey []byte) (x, y *big.Int, err error) {\n\tx, y = elliptic.Unmarshal(curve, pubkey)\n\tif x == nil {\n\t\treturn nil, nil, errors.New(\"ssh: elliptic.Unmarshal failure\")\n\t}\n\tif !validateECPublicKey(curve, x, y) {\n\t\treturn nil, nil, errors.New(\"ssh: public key not on curve\")\n\t}\n\treturn x, y, nil\n}\n\n// validateECPublicKey checks that the point is a valid public key for\n// the given curve. See [SEC1], 3.2.2\nfunc validateECPublicKey(curve elliptic.Curve, x, y *big.Int) bool {\n\tif x.Sign() == 0 && y.Sign() == 0 {\n\t\treturn false\n\t}\n\n\tif x.Cmp(curve.Params().P) >= 0 {\n\t\treturn false\n\t}\n\n\tif y.Cmp(curve.Params().P) >= 0 {\n\t\treturn false\n\t}\n\n\tif !curve.IsOnCurve(x, y) {\n\t\treturn false\n\t}\n\n\t// We don't check if N * PubKey == 0, since\n\t//\n\t// - the NIST curves have cofactor = 1, so this is implicit.\n\t// (We don't foresee an implementation that supports non NIST\n\t// curves)\n\t//\n\t// - for ephemeral keys, we don't need to worry about small\n\t// subgroup attacks.\n\treturn true\n}\n\nfunc (kex *ecdh) Server(c packetConn, rand io.Reader, magics *handshakeMagics, priv AlgorithmSigner, algo string) (result *kexResult, err error) {\n\tpacket, err := c.readPacket()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar kexECDHInit kexECDHInitMsg\n\tif err = Unmarshal(packet, &kexECDHInit); err != nil {\n\t\treturn nil, err\n\t}\n\n\tclientX, clientY, err := unmarshalECKey(kex.curve, kexECDHInit.ClientPubKey)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// We could cache this key across multiple users/multiple\n\t// connection attempts, but the benefit is small. OpenSSH\n\t// generates a new key for each incoming connection.\n\tephKey, err := ecdsa.GenerateKey(kex.curve, rand)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\thostKeyBytes := priv.PublicKey().Marshal()\n\n\tserializedEphKey := elliptic.Marshal(kex.curve, ephKey.PublicKey.X, ephKey.PublicKey.Y)\n\n\t// generate shared secret\n\tsecret, _ := kex.curve.ScalarMult(clientX, clientY, ephKey.D.Bytes())\n\n\th := ecHash(kex.curve).New()\n\tmagics.write(h)\n\twriteString(h, hostKeyBytes)\n\twriteString(h, kexECDHInit.ClientPubKey)\n\twriteString(h, serializedEphKey)\n\n\tK := make([]byte, intLength(secret))\n\tmarshalInt(K, secret)\n\th.Write(K)\n\n\tH := h.Sum(nil)\n\n\t// H is already a hash, but the hostkey signing will apply its\n\t// own key-specific hash algorithm.\n\tsig, err := signAndMarshal(priv, rand, H, algo)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treply := kexECDHReplyMsg{\n\t\tEphemeralPubKey: serializedEphKey,\n\t\tHostKey:         hostKeyBytes,\n\t\tSignature:       sig,\n\t}\n\n\tserialized := Marshal(&reply)\n\tif err := c.writePacket(serialized); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &kexResult{\n\t\tH:         H,\n\t\tK:         K,\n\t\tHostKey:   reply.HostKey,\n\t\tSignature: sig,\n\t\tHash:      ecHash(kex.curve),\n\t}, nil\n}\n\n// ecHash returns the hash to match the given elliptic curve, see RFC\n// 5656, section 6.2.1\nfunc ecHash(curve elliptic.Curve) crypto.Hash {\n\tbitSize := curve.Params().BitSize\n\tswitch {\n\tcase bitSize <= 256:\n\t\treturn crypto.SHA256\n\tcase bitSize <= 384:\n\t\treturn crypto.SHA384\n\t}\n\treturn crypto.SHA512\n}\n\n// kexAlgoMap defines the supported KEXs. KEXs not included are not supported\n// and will not be negotiated, even if explicitly configured. When FIPS mode is\n// enabled, only FIPS-approved algorithms are included.\nvar kexAlgoMap = map[string]kexAlgorithm{}\n\nfunc init() {\n\t// mlkem768x25519-sha256 we'll work with fips140=on but not fips140=only\n\t// until Go 1.26.\n\tkexAlgoMap[KeyExchangeMLKEM768X25519] = &mlkem768WithCurve25519sha256{}\n\tkexAlgoMap[KeyExchangeECDHP521] = &ecdh{elliptic.P521()}\n\tkexAlgoMap[KeyExchangeECDHP384] = &ecdh{elliptic.P384()}\n\tkexAlgoMap[KeyExchangeECDHP256] = &ecdh{elliptic.P256()}\n\n\tif fips140.Enabled() {\n\t\tdefaultKexAlgos = slices.DeleteFunc(defaultKexAlgos, func(algo string) bool {\n\t\t\t_, ok := kexAlgoMap[algo]\n\t\t\treturn !ok\n\t\t})\n\t\treturn\n\t}\n\n\tp, _ := new(big.Int).SetString(oakleyGroup2, 16)\n\tkexAlgoMap[InsecureKeyExchangeDH1SHA1] = &dhGroup{\n\t\tg:        new(big.Int).SetInt64(2),\n\t\tp:        p,\n\t\tpMinus1:  new(big.Int).Sub(p, bigOne),\n\t\thashFunc: crypto.SHA1,\n\t}\n\n\tp, _ = new(big.Int).SetString(oakleyGroup14, 16)\n\tgroup14 := &dhGroup{\n\t\tg:       new(big.Int).SetInt64(2),\n\t\tp:       p,\n\t\tpMinus1: new(big.Int).Sub(p, bigOne),\n\t}\n\n\tkexAlgoMap[InsecureKeyExchangeDH14SHA1] = &dhGroup{\n\t\tg: group14.g, p: group14.p, pMinus1: group14.pMinus1,\n\t\thashFunc: crypto.SHA1,\n\t}\n\tkexAlgoMap[KeyExchangeDH14SHA256] = &dhGroup{\n\t\tg: group14.g, p: group14.p, pMinus1: group14.pMinus1,\n\t\thashFunc: crypto.SHA256,\n\t}\n\n\tp, _ = new(big.Int).SetString(oakleyGroup16, 16)\n\n\tkexAlgoMap[KeyExchangeDH16SHA512] = &dhGroup{\n\t\tg:        new(big.Int).SetInt64(2),\n\t\tp:        p,\n\t\tpMinus1:  new(big.Int).Sub(p, bigOne),\n\t\thashFunc: crypto.SHA512,\n\t}\n\n\tkexAlgoMap[KeyExchangeCurve25519] = &curve25519sha256{}\n\tkexAlgoMap[keyExchangeCurve25519LibSSH] = &curve25519sha256{}\n\tkexAlgoMap[InsecureKeyExchangeDHGEXSHA1] = &dhGEXSHA{hashFunc: crypto.SHA1}\n\tkexAlgoMap[KeyExchangeDHGEXSHA256] = &dhGEXSHA{hashFunc: crypto.SHA256}\n}\n\n// curve25519sha256 implements the curve25519-sha256 (formerly known as\n// curve25519-sha256@libssh.org) key exchange method, as described in RFC 8731.\ntype curve25519sha256 struct{}\n\ntype curve25519KeyPair struct {\n\tpriv [32]byte\n\tpub  [32]byte\n}\n\nfunc (kp *curve25519KeyPair) generate(rand io.Reader) error {\n\tif _, err := io.ReadFull(rand, kp.priv[:]); err != nil {\n\t\treturn err\n\t}\n\tp, err := curve25519.X25519(kp.priv[:], curve25519.Basepoint)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"curve25519: %w\", err)\n\t}\n\tif len(p) != 32 {\n\t\treturn fmt.Errorf(\"curve25519: internal error: X25519 returned %d bytes, expected 32\", len(p))\n\t}\n\tcopy(kp.pub[:], p)\n\treturn nil\n}\n\nfunc (kex *curve25519sha256) Client(c packetConn, rand io.Reader, magics *handshakeMagics) (*kexResult, error) {\n\tvar kp curve25519KeyPair\n\tif err := kp.generate(rand); err != nil {\n\t\treturn nil, err\n\t}\n\tif err := c.writePacket(Marshal(&kexECDHInitMsg{kp.pub[:]})); err != nil {\n\t\treturn nil, err\n\t}\n\n\tpacket, err := c.readPacket()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar reply kexECDHReplyMsg\n\tif err = Unmarshal(packet, &reply); err != nil {\n\t\treturn nil, err\n\t}\n\tif len(reply.EphemeralPubKey) != 32 {\n\t\treturn nil, errors.New(\"ssh: peer's curve25519 public value has wrong length\")\n\t}\n\n\tsecret, err := curve25519.X25519(kp.priv[:], reply.EphemeralPubKey)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"ssh: peer's curve25519 public value is not valid: %w\", err)\n\t}\n\n\th := crypto.SHA256.New()\n\tmagics.write(h)\n\twriteString(h, reply.HostKey)\n\twriteString(h, kp.pub[:])\n\twriteString(h, reply.EphemeralPubKey)\n\n\tki := new(big.Int).SetBytes(secret[:])\n\tK := make([]byte, intLength(ki))\n\tmarshalInt(K, ki)\n\th.Write(K)\n\n\treturn &kexResult{\n\t\tH:         h.Sum(nil),\n\t\tK:         K,\n\t\tHostKey:   reply.HostKey,\n\t\tSignature: reply.Signature,\n\t\tHash:      crypto.SHA256,\n\t}, nil\n}\n\nfunc (kex *curve25519sha256) Server(c packetConn, rand io.Reader, magics *handshakeMagics, priv AlgorithmSigner, algo string) (result *kexResult, err error) {\n\tpacket, err := c.readPacket()\n\tif err != nil {\n\t\treturn\n\t}\n\tvar kexInit kexECDHInitMsg\n\tif err = Unmarshal(packet, &kexInit); err != nil {\n\t\treturn\n\t}\n\n\tif len(kexInit.ClientPubKey) != 32 {\n\t\treturn nil, errors.New(\"ssh: peer's curve25519 public value has wrong length\")\n\t}\n\n\tvar kp curve25519KeyPair\n\tif err := kp.generate(rand); err != nil {\n\t\treturn nil, err\n\t}\n\n\tsecret, err := curve25519.X25519(kp.priv[:], kexInit.ClientPubKey)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"ssh: peer's curve25519 public value is not valid: %w\", err)\n\t}\n\n\thostKeyBytes := priv.PublicKey().Marshal()\n\n\th := crypto.SHA256.New()\n\tmagics.write(h)\n\twriteString(h, hostKeyBytes)\n\twriteString(h, kexInit.ClientPubKey)\n\twriteString(h, kp.pub[:])\n\n\tki := new(big.Int).SetBytes(secret[:])\n\tK := make([]byte, intLength(ki))\n\tmarshalInt(K, ki)\n\th.Write(K)\n\n\tH := h.Sum(nil)\n\n\tsig, err := signAndMarshal(priv, rand, H, algo)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treply := kexECDHReplyMsg{\n\t\tEphemeralPubKey: kp.pub[:],\n\t\tHostKey:         hostKeyBytes,\n\t\tSignature:       sig,\n\t}\n\tif err := c.writePacket(Marshal(&reply)); err != nil {\n\t\treturn nil, err\n\t}\n\treturn &kexResult{\n\t\tH:         H,\n\t\tK:         K,\n\t\tHostKey:   hostKeyBytes,\n\t\tSignature: sig,\n\t\tHash:      crypto.SHA256,\n\t}, nil\n}\n\n// dhGEXSHA implements the diffie-hellman-group-exchange-sha1 and\n// diffie-hellman-group-exchange-sha256 key agreement protocols,\n// as described in RFC 4419\ntype dhGEXSHA struct {\n\thashFunc crypto.Hash\n}\n\nconst (\n\tdhGroupExchangeMinimumBits   = 2048\n\tdhGroupExchangePreferredBits = 2048\n\tdhGroupExchangeMaximumBits   = 8192\n)\n\nfunc (gex *dhGEXSHA) Client(c packetConn, randSource io.Reader, magics *handshakeMagics) (*kexResult, error) {\n\t// Send GexRequest\n\tkexDHGexRequest := kexDHGexRequestMsg{\n\t\tMinBits:       dhGroupExchangeMinimumBits,\n\t\tPreferredBits: dhGroupExchangePreferredBits,\n\t\tMaxBits:       dhGroupExchangeMaximumBits,\n\t}\n\tif err := c.writePacket(Marshal(&kexDHGexRequest)); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Receive GexGroup\n\tpacket, err := c.readPacket()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar msg kexDHGexGroupMsg\n\tif err = Unmarshal(packet, &msg); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// reject if p's bit length < dhGroupExchangeMinimumBits or > dhGroupExchangeMaximumBits\n\tif msg.P.BitLen() < dhGroupExchangeMinimumBits || msg.P.BitLen() > dhGroupExchangeMaximumBits {\n\t\treturn nil, fmt.Errorf(\"ssh: server-generated gex p is out of range (%d bits)\", msg.P.BitLen())\n\t}\n\n\t// Check if g is safe by verifying that 1 < g < p-1\n\tpMinusOne := new(big.Int).Sub(msg.P, bigOne)\n\tif msg.G.Cmp(bigOne) <= 0 || msg.G.Cmp(pMinusOne) >= 0 {\n\t\treturn nil, fmt.Errorf(\"ssh: server provided gex g is not safe\")\n\t}\n\n\t// Send GexInit\n\tpHalf := new(big.Int).Rsh(msg.P, 1)\n\tx, err := rand.Int(randSource, pHalf)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tX := new(big.Int).Exp(msg.G, x, msg.P)\n\tkexDHGexInit := kexDHGexInitMsg{\n\t\tX: X,\n\t}\n\tif err := c.writePacket(Marshal(&kexDHGexInit)); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Receive GexReply\n\tpacket, err = c.readPacket()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar kexDHGexReply kexDHGexReplyMsg\n\tif err = Unmarshal(packet, &kexDHGexReply); err != nil {\n\t\treturn nil, err\n\t}\n\n\tif kexDHGexReply.Y.Cmp(bigOne) <= 0 || kexDHGexReply.Y.Cmp(pMinusOne) >= 0 {\n\t\treturn nil, errors.New(\"ssh: DH parameter out of bounds\")\n\t}\n\tkInt := new(big.Int).Exp(kexDHGexReply.Y, x, msg.P)\n\n\t// Check if k is safe by verifying that k > 1 and k < p - 1\n\tif kInt.Cmp(bigOne) <= 0 || kInt.Cmp(pMinusOne) >= 0 {\n\t\treturn nil, fmt.Errorf(\"ssh: derived k is not safe\")\n\t}\n\n\th := gex.hashFunc.New()\n\tmagics.write(h)\n\twriteString(h, kexDHGexReply.HostKey)\n\tbinary.Write(h, binary.BigEndian, uint32(dhGroupExchangeMinimumBits))\n\tbinary.Write(h, binary.BigEndian, uint32(dhGroupExchangePreferredBits))\n\tbinary.Write(h, binary.BigEndian, uint32(dhGroupExchangeMaximumBits))\n\twriteInt(h, msg.P)\n\twriteInt(h, msg.G)\n\twriteInt(h, X)\n\twriteInt(h, kexDHGexReply.Y)\n\tK := make([]byte, intLength(kInt))\n\tmarshalInt(K, kInt)\n\th.Write(K)\n\n\treturn &kexResult{\n\t\tH:         h.Sum(nil),\n\t\tK:         K,\n\t\tHostKey:   kexDHGexReply.HostKey,\n\t\tSignature: kexDHGexReply.Signature,\n\t\tHash:      gex.hashFunc,\n\t}, nil\n}\n\n// Server half implementation of the Diffie Hellman Key Exchange with SHA1 and SHA256.\nfunc (gex *dhGEXSHA) Server(c packetConn, randSource io.Reader, magics *handshakeMagics, priv AlgorithmSigner, algo string) (result *kexResult, err error) {\n\t// Receive GexRequest\n\tpacket, err := c.readPacket()\n\tif err != nil {\n\t\treturn\n\t}\n\tvar kexDHGexRequest kexDHGexRequestMsg\n\tif err = Unmarshal(packet, &kexDHGexRequest); err != nil {\n\t\treturn\n\t}\n\t// We check that the request received is valid and that the MaxBits\n\t// requested are at least equal to our supported minimum. This is the same\n\t// check done in OpenSSH:\n\t// https://github.com/openssh/openssh-portable/blob/80a2f64b/kexgexs.c#L94\n\t//\n\t// Furthermore, we also check that the required MinBits are less than or\n\t// equal to 4096 because we can use up to Oakley Group 16.\n\tif kexDHGexRequest.MaxBits < kexDHGexRequest.MinBits || kexDHGexRequest.PreferredBits < kexDHGexRequest.MinBits ||\n\t\tkexDHGexRequest.MaxBits < kexDHGexRequest.PreferredBits || kexDHGexRequest.MaxBits < dhGroupExchangeMinimumBits ||\n\t\tkexDHGexRequest.MinBits > 4096 {\n\t\treturn nil, fmt.Errorf(\"ssh: DH GEX request out of range, min: %d, max: %d, preferred: %d\", kexDHGexRequest.MinBits,\n\t\t\tkexDHGexRequest.MaxBits, kexDHGexRequest.PreferredBits)\n\t}\n\n\tvar p *big.Int\n\t// We hardcode sending Oakley Group 14 (2048 bits), Oakley Group 15 (3072\n\t// bits) or Oakley Group 16 (4096 bits), based on the requested max size.\n\tif kexDHGexRequest.MaxBits < 3072 {\n\t\tp, _ = new(big.Int).SetString(oakleyGroup14, 16)\n\t} else if kexDHGexRequest.MaxBits < 4096 {\n\t\tp, _ = new(big.Int).SetString(oakleyGroup15, 16)\n\t} else {\n\t\tp, _ = new(big.Int).SetString(oakleyGroup16, 16)\n\t}\n\n\tg := big.NewInt(2)\n\tmsg := &kexDHGexGroupMsg{\n\t\tP: p,\n\t\tG: g,\n\t}\n\tif err := c.writePacket(Marshal(msg)); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Receive GexInit\n\tpacket, err = c.readPacket()\n\tif err != nil {\n\t\treturn\n\t}\n\tvar kexDHGexInit kexDHGexInitMsg\n\tif err = Unmarshal(packet, &kexDHGexInit); err != nil {\n\t\treturn\n\t}\n\n\tpHalf := new(big.Int).Rsh(p, 1)\n\n\ty, err := rand.Int(randSource, pHalf)\n\tif err != nil {\n\t\treturn\n\t}\n\tY := new(big.Int).Exp(g, y, p)\n\n\tpMinusOne := new(big.Int).Sub(p, bigOne)\n\tif kexDHGexInit.X.Cmp(bigOne) <= 0 || kexDHGexInit.X.Cmp(pMinusOne) >= 0 {\n\t\treturn nil, errors.New(\"ssh: DH parameter out of bounds\")\n\t}\n\tkInt := new(big.Int).Exp(kexDHGexInit.X, y, p)\n\n\thostKeyBytes := priv.PublicKey().Marshal()\n\n\th := gex.hashFunc.New()\n\tmagics.write(h)\n\twriteString(h, hostKeyBytes)\n\tbinary.Write(h, binary.BigEndian, kexDHGexRequest.MinBits)\n\tbinary.Write(h, binary.BigEndian, kexDHGexRequest.PreferredBits)\n\tbinary.Write(h, binary.BigEndian, kexDHGexRequest.MaxBits)\n\twriteInt(h, p)\n\twriteInt(h, g)\n\twriteInt(h, kexDHGexInit.X)\n\twriteInt(h, Y)\n\n\tK := make([]byte, intLength(kInt))\n\tmarshalInt(K, kInt)\n\th.Write(K)\n\n\tH := h.Sum(nil)\n\n\t// H is already a hash, but the hostkey signing will apply its\n\t// own key-specific hash algorithm.\n\tsig, err := signAndMarshal(priv, randSource, H, algo)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tkexDHGexReply := kexDHGexReplyMsg{\n\t\tHostKey:   hostKeyBytes,\n\t\tY:         Y,\n\t\tSignature: sig,\n\t}\n\tpacket = Marshal(&kexDHGexReply)\n\n\terr = c.writePacket(packet)\n\n\treturn &kexResult{\n\t\tH:         H,\n\t\tK:         K,\n\t\tHostKey:   hostKeyBytes,\n\t\tSignature: sig,\n\t\tHash:      gex.hashFunc,\n\t}, err\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/crypto/ssh/keys.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage ssh\n\nimport (\n\t\"bytes\"\n\t\"crypto\"\n\t\"crypto/aes\"\n\t\"crypto/cipher\"\n\t\"crypto/dsa\"\n\t\"crypto/ecdsa\"\n\t\"crypto/ed25519\"\n\t\"crypto/elliptic\"\n\t\"crypto/md5\"\n\t\"crypto/rand\"\n\t\"crypto/rsa\"\n\t\"crypto/sha256\"\n\t\"crypto/x509\"\n\t\"encoding/asn1\"\n\t\"encoding/base64\"\n\t\"encoding/binary\"\n\t\"encoding/hex\"\n\t\"encoding/pem\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"math/big\"\n\t\"slices\"\n\t\"strings\"\n\n\t\"golang.org/x/crypto/ssh/internal/bcrypt_pbkdf\"\n)\n\n// Public key algorithms names. These values can appear in PublicKey.Type,\n// ClientConfig.HostKeyAlgorithms, Signature.Format, or as AlgorithmSigner\n// arguments.\nconst (\n\tKeyAlgoRSA = \"ssh-rsa\"\n\t// Deprecated: DSA is only supported at insecure key sizes, and was removed\n\t// from major implementations.\n\tKeyAlgoDSA = InsecureKeyAlgoDSA\n\t// Deprecated: DSA is only supported at insecure key sizes, and was removed\n\t// from major implementations.\n\tInsecureKeyAlgoDSA = \"ssh-dss\"\n\tKeyAlgoECDSA256    = \"ecdsa-sha2-nistp256\"\n\tKeyAlgoSKECDSA256  = \"sk-ecdsa-sha2-nistp256@openssh.com\"\n\tKeyAlgoECDSA384    = \"ecdsa-sha2-nistp384\"\n\tKeyAlgoECDSA521    = \"ecdsa-sha2-nistp521\"\n\tKeyAlgoED25519     = \"ssh-ed25519\"\n\tKeyAlgoSKED25519   = \"sk-ssh-ed25519@openssh.com\"\n\n\t// KeyAlgoRSASHA256 and KeyAlgoRSASHA512 are only public key algorithms, not\n\t// public key formats, so they can't appear as a PublicKey.Type. The\n\t// corresponding PublicKey.Type is KeyAlgoRSA. See RFC 8332, Section 2.\n\tKeyAlgoRSASHA256 = \"rsa-sha2-256\"\n\tKeyAlgoRSASHA512 = \"rsa-sha2-512\"\n)\n\nconst (\n\t// Deprecated: use KeyAlgoRSA.\n\tSigAlgoRSA = KeyAlgoRSA\n\t// Deprecated: use KeyAlgoRSASHA256.\n\tSigAlgoRSASHA2256 = KeyAlgoRSASHA256\n\t// Deprecated: use KeyAlgoRSASHA512.\n\tSigAlgoRSASHA2512 = KeyAlgoRSASHA512\n)\n\n// parsePubKey parses a public key of the given algorithm.\n// Use ParsePublicKey for keys with prepended algorithm.\nfunc parsePubKey(in []byte, algo string) (pubKey PublicKey, rest []byte, err error) {\n\tswitch algo {\n\tcase KeyAlgoRSA:\n\t\treturn parseRSA(in)\n\tcase InsecureKeyAlgoDSA:\n\t\treturn parseDSA(in)\n\tcase KeyAlgoECDSA256, KeyAlgoECDSA384, KeyAlgoECDSA521:\n\t\treturn parseECDSA(in)\n\tcase KeyAlgoSKECDSA256:\n\t\treturn parseSKECDSA(in)\n\tcase KeyAlgoED25519:\n\t\treturn parseED25519(in)\n\tcase KeyAlgoSKED25519:\n\t\treturn parseSKEd25519(in)\n\tcase CertAlgoRSAv01, InsecureCertAlgoDSAv01, CertAlgoECDSA256v01, CertAlgoECDSA384v01, CertAlgoECDSA521v01, CertAlgoSKECDSA256v01, CertAlgoED25519v01, CertAlgoSKED25519v01:\n\t\tcert, err := parseCert(in, certKeyAlgoNames[algo])\n\t\tif err != nil {\n\t\t\treturn nil, nil, err\n\t\t}\n\t\treturn cert, nil, nil\n\t}\n\tif keyFormat := keyFormatForAlgorithm(algo); keyFormat != \"\" {\n\t\treturn nil, nil, fmt.Errorf(\"ssh: signature algorithm %q isn't a key format; key is malformed and should be re-encoded with type %q\",\n\t\t\talgo, keyFormat)\n\t}\n\n\treturn nil, nil, fmt.Errorf(\"ssh: unknown key algorithm: %v\", algo)\n}\n\n// parseAuthorizedKey parses a public key in OpenSSH authorized_keys format\n// (see sshd(8) manual page) once the options and key type fields have been\n// removed.\nfunc parseAuthorizedKey(in []byte) (out PublicKey, comment string, err error) {\n\tin = bytes.TrimSpace(in)\n\n\ti := bytes.IndexAny(in, \" \\t\")\n\tif i == -1 {\n\t\ti = len(in)\n\t}\n\tbase64Key := in[:i]\n\n\tkey := make([]byte, base64.StdEncoding.DecodedLen(len(base64Key)))\n\tn, err := base64.StdEncoding.Decode(key, base64Key)\n\tif err != nil {\n\t\treturn nil, \"\", err\n\t}\n\tkey = key[:n]\n\tout, err = ParsePublicKey(key)\n\tif err != nil {\n\t\treturn nil, \"\", err\n\t}\n\tcomment = string(bytes.TrimSpace(in[i:]))\n\treturn out, comment, nil\n}\n\n// ParseKnownHosts parses an entry in the format of the known_hosts file.\n//\n// The known_hosts format is documented in the sshd(8) manual page. This\n// function will parse a single entry from in. On successful return, marker\n// will contain the optional marker value (i.e. \"cert-authority\" or \"revoked\")\n// or else be empty, hosts will contain the hosts that this entry matches,\n// pubKey will contain the public key and comment will contain any trailing\n// comment at the end of the line. See the sshd(8) manual page for the various\n// forms that a host string can take.\n//\n// The unparsed remainder of the input will be returned in rest. This function\n// can be called repeatedly to parse multiple entries.\n//\n// If no entries were found in the input then err will be io.EOF. Otherwise a\n// non-nil err value indicates a parse error.\nfunc ParseKnownHosts(in []byte) (marker string, hosts []string, pubKey PublicKey, comment string, rest []byte, err error) {\n\tfor len(in) > 0 {\n\t\tend := bytes.IndexByte(in, '\\n')\n\t\tif end != -1 {\n\t\t\trest = in[end+1:]\n\t\t\tin = in[:end]\n\t\t} else {\n\t\t\trest = nil\n\t\t}\n\n\t\tend = bytes.IndexByte(in, '\\r')\n\t\tif end != -1 {\n\t\t\tin = in[:end]\n\t\t}\n\n\t\tin = bytes.TrimSpace(in)\n\t\tif len(in) == 0 || in[0] == '#' {\n\t\t\tin = rest\n\t\t\tcontinue\n\t\t}\n\n\t\ti := bytes.IndexAny(in, \" \\t\")\n\t\tif i == -1 {\n\t\t\tin = rest\n\t\t\tcontinue\n\t\t}\n\n\t\t// Strip out the beginning of the known_host key.\n\t\t// This is either an optional marker or a (set of) hostname(s).\n\t\tkeyFields := bytes.Fields(in)\n\t\tif len(keyFields) < 3 || len(keyFields) > 5 {\n\t\t\treturn \"\", nil, nil, \"\", nil, errors.New(\"ssh: invalid entry in known_hosts data\")\n\t\t}\n\n\t\t// keyFields[0] is either \"@cert-authority\", \"@revoked\" or a comma separated\n\t\t// list of hosts\n\t\tmarker := \"\"\n\t\tif keyFields[0][0] == '@' {\n\t\t\tmarker = string(keyFields[0][1:])\n\t\t\tkeyFields = keyFields[1:]\n\t\t}\n\n\t\thosts := string(keyFields[0])\n\t\t// keyFields[1] contains the key type (e.g. “ssh-rsa”).\n\t\t// However, that information is duplicated inside the\n\t\t// base64-encoded key and so is ignored here.\n\n\t\tkey := bytes.Join(keyFields[2:], []byte(\" \"))\n\t\tif pubKey, comment, err = parseAuthorizedKey(key); err != nil {\n\t\t\treturn \"\", nil, nil, \"\", nil, err\n\t\t}\n\n\t\treturn marker, strings.Split(hosts, \",\"), pubKey, comment, rest, nil\n\t}\n\n\treturn \"\", nil, nil, \"\", nil, io.EOF\n}\n\n// ParseAuthorizedKey parses a public key from an authorized_keys file used in\n// OpenSSH according to the sshd(8) manual page. Invalid lines are ignored.\nfunc ParseAuthorizedKey(in []byte) (out PublicKey, comment string, options []string, rest []byte, err error) {\n\tvar lastErr error\n\tfor len(in) > 0 {\n\t\tend := bytes.IndexByte(in, '\\n')\n\t\tif end != -1 {\n\t\t\trest = in[end+1:]\n\t\t\tin = in[:end]\n\t\t} else {\n\t\t\trest = nil\n\t\t}\n\n\t\tend = bytes.IndexByte(in, '\\r')\n\t\tif end != -1 {\n\t\t\tin = in[:end]\n\t\t}\n\n\t\tin = bytes.TrimSpace(in)\n\t\tif len(in) == 0 || in[0] == '#' {\n\t\t\tin = rest\n\t\t\tcontinue\n\t\t}\n\n\t\ti := bytes.IndexAny(in, \" \\t\")\n\t\tif i == -1 {\n\t\t\tin = rest\n\t\t\tcontinue\n\t\t}\n\n\t\tif out, comment, err = parseAuthorizedKey(in[i:]); err == nil {\n\t\t\treturn out, comment, options, rest, nil\n\t\t} else {\n\t\t\tlastErr = err\n\t\t}\n\n\t\t// No key type recognised. Maybe there's an options field at\n\t\t// the beginning.\n\t\tvar b byte\n\t\tinQuote := false\n\t\tvar candidateOptions []string\n\t\toptionStart := 0\n\t\tfor i, b = range in {\n\t\t\tisEnd := !inQuote && (b == ' ' || b == '\\t')\n\t\t\tif (b == ',' && !inQuote) || isEnd {\n\t\t\t\tif i-optionStart > 0 {\n\t\t\t\t\tcandidateOptions = append(candidateOptions, string(in[optionStart:i]))\n\t\t\t\t}\n\t\t\t\toptionStart = i + 1\n\t\t\t}\n\t\t\tif isEnd {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tif b == '\"' && (i == 0 || (i > 0 && in[i-1] != '\\\\')) {\n\t\t\t\tinQuote = !inQuote\n\t\t\t}\n\t\t}\n\t\tfor i < len(in) && (in[i] == ' ' || in[i] == '\\t') {\n\t\t\ti++\n\t\t}\n\t\tif i == len(in) {\n\t\t\t// Invalid line: unmatched quote\n\t\t\tin = rest\n\t\t\tcontinue\n\t\t}\n\n\t\tin = in[i:]\n\t\ti = bytes.IndexAny(in, \" \\t\")\n\t\tif i == -1 {\n\t\t\tin = rest\n\t\t\tcontinue\n\t\t}\n\n\t\tif out, comment, err = parseAuthorizedKey(in[i:]); err == nil {\n\t\t\toptions = candidateOptions\n\t\t\treturn out, comment, options, rest, nil\n\t\t} else {\n\t\t\tlastErr = err\n\t\t}\n\n\t\tin = rest\n\t\tcontinue\n\t}\n\n\tif lastErr != nil {\n\t\treturn nil, \"\", nil, nil, fmt.Errorf(\"ssh: no key found; last parsing error for ignored line: %w\", lastErr)\n\t}\n\n\treturn nil, \"\", nil, nil, errors.New(\"ssh: no key found\")\n}\n\n// ParsePublicKey parses an SSH public key or certificate formatted for use in\n// the SSH wire protocol according to RFC 4253, section 6.6.\nfunc ParsePublicKey(in []byte) (out PublicKey, err error) {\n\talgo, in, ok := parseString(in)\n\tif !ok {\n\t\treturn nil, errShortRead\n\t}\n\tvar rest []byte\n\tout, rest, err = parsePubKey(in, string(algo))\n\tif len(rest) > 0 {\n\t\treturn nil, errors.New(\"ssh: trailing junk in public key\")\n\t}\n\n\treturn out, err\n}\n\n// MarshalAuthorizedKey serializes key for inclusion in an OpenSSH\n// authorized_keys file. The return value ends with newline.\nfunc MarshalAuthorizedKey(key PublicKey) []byte {\n\tb := &bytes.Buffer{}\n\tb.WriteString(key.Type())\n\tb.WriteByte(' ')\n\te := base64.NewEncoder(base64.StdEncoding, b)\n\te.Write(key.Marshal())\n\te.Close()\n\tb.WriteByte('\\n')\n\treturn b.Bytes()\n}\n\n// MarshalPrivateKey returns a PEM block with the private key serialized in the\n// OpenSSH format.\nfunc MarshalPrivateKey(key crypto.PrivateKey, comment string) (*pem.Block, error) {\n\treturn marshalOpenSSHPrivateKey(key, comment, unencryptedOpenSSHMarshaler)\n}\n\n// MarshalPrivateKeyWithPassphrase returns a PEM block holding the encrypted\n// private key serialized in the OpenSSH format.\nfunc MarshalPrivateKeyWithPassphrase(key crypto.PrivateKey, comment string, passphrase []byte) (*pem.Block, error) {\n\treturn marshalOpenSSHPrivateKey(key, comment, passphraseProtectedOpenSSHMarshaler(passphrase))\n}\n\n// PublicKey represents a public key using an unspecified algorithm.\n//\n// Some PublicKeys provided by this package also implement CryptoPublicKey.\ntype PublicKey interface {\n\t// Type returns the key format name, e.g. \"ssh-rsa\".\n\tType() string\n\n\t// Marshal returns the serialized key data in SSH wire format, with the name\n\t// prefix. To unmarshal the returned data, use the ParsePublicKey function.\n\tMarshal() []byte\n\n\t// Verify that sig is a signature on the given data using this key. This\n\t// method will hash the data appropriately first. sig.Format is allowed to\n\t// be any signature algorithm compatible with the key type, the caller\n\t// should check if it has more stringent requirements.\n\tVerify(data []byte, sig *Signature) error\n}\n\n// CryptoPublicKey, if implemented by a PublicKey,\n// returns the underlying crypto.PublicKey form of the key.\ntype CryptoPublicKey interface {\n\tCryptoPublicKey() crypto.PublicKey\n}\n\n// A Signer can create signatures that verify against a public key.\n//\n// Some Signers provided by this package also implement MultiAlgorithmSigner.\ntype Signer interface {\n\t// PublicKey returns the associated PublicKey.\n\tPublicKey() PublicKey\n\n\t// Sign returns a signature for the given data. This method will hash the\n\t// data appropriately first. The signature algorithm is expected to match\n\t// the key format returned by the PublicKey.Type method (and not to be any\n\t// alternative algorithm supported by the key format).\n\tSign(rand io.Reader, data []byte) (*Signature, error)\n}\n\n// An AlgorithmSigner is a Signer that also supports specifying an algorithm to\n// use for signing.\n//\n// An AlgorithmSigner can't advertise the algorithms it supports, unless it also\n// implements MultiAlgorithmSigner, so it should be prepared to be invoked with\n// every algorithm supported by the public key format.\ntype AlgorithmSigner interface {\n\tSigner\n\n\t// SignWithAlgorithm is like Signer.Sign, but allows specifying a desired\n\t// signing algorithm. Callers may pass an empty string for the algorithm in\n\t// which case the AlgorithmSigner will use a default algorithm. This default\n\t// doesn't currently control any behavior in this package.\n\tSignWithAlgorithm(rand io.Reader, data []byte, algorithm string) (*Signature, error)\n}\n\n// MultiAlgorithmSigner is an AlgorithmSigner that also reports the algorithms\n// supported by that signer.\ntype MultiAlgorithmSigner interface {\n\tAlgorithmSigner\n\n\t// Algorithms returns the available algorithms in preference order. The list\n\t// must not be empty, and it must not include certificate types.\n\tAlgorithms() []string\n}\n\n// NewSignerWithAlgorithms returns a signer restricted to the specified\n// algorithms. The algorithms must be set in preference order. The list must not\n// be empty, and it must not include certificate types. An error is returned if\n// the specified algorithms are incompatible with the public key type.\nfunc NewSignerWithAlgorithms(signer AlgorithmSigner, algorithms []string) (MultiAlgorithmSigner, error) {\n\tif len(algorithms) == 0 {\n\t\treturn nil, errors.New(\"ssh: please specify at least one valid signing algorithm\")\n\t}\n\tvar signerAlgos []string\n\tsupportedAlgos := algorithmsForKeyFormat(underlyingAlgo(signer.PublicKey().Type()))\n\tif s, ok := signer.(*multiAlgorithmSigner); ok {\n\t\tsignerAlgos = s.Algorithms()\n\t} else {\n\t\tsignerAlgos = supportedAlgos\n\t}\n\n\tfor _, algo := range algorithms {\n\t\tif !slices.Contains(supportedAlgos, algo) {\n\t\t\treturn nil, fmt.Errorf(\"ssh: algorithm %q is not supported for key type %q\",\n\t\t\t\talgo, signer.PublicKey().Type())\n\t\t}\n\t\tif !slices.Contains(signerAlgos, algo) {\n\t\t\treturn nil, fmt.Errorf(\"ssh: algorithm %q is restricted for the provided signer\", algo)\n\t\t}\n\t}\n\treturn &multiAlgorithmSigner{\n\t\tAlgorithmSigner:     signer,\n\t\tsupportedAlgorithms: algorithms,\n\t}, nil\n}\n\ntype multiAlgorithmSigner struct {\n\tAlgorithmSigner\n\tsupportedAlgorithms []string\n}\n\nfunc (s *multiAlgorithmSigner) Algorithms() []string {\n\treturn s.supportedAlgorithms\n}\n\nfunc (s *multiAlgorithmSigner) isAlgorithmSupported(algorithm string) bool {\n\tif algorithm == \"\" {\n\t\talgorithm = underlyingAlgo(s.PublicKey().Type())\n\t}\n\tfor _, algo := range s.supportedAlgorithms {\n\t\tif algorithm == algo {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc (s *multiAlgorithmSigner) SignWithAlgorithm(rand io.Reader, data []byte, algorithm string) (*Signature, error) {\n\tif !s.isAlgorithmSupported(algorithm) {\n\t\treturn nil, fmt.Errorf(\"ssh: algorithm %q is not supported: %v\", algorithm, s.supportedAlgorithms)\n\t}\n\treturn s.AlgorithmSigner.SignWithAlgorithm(rand, data, algorithm)\n}\n\ntype rsaPublicKey rsa.PublicKey\n\nfunc (r *rsaPublicKey) Type() string {\n\treturn \"ssh-rsa\"\n}\n\n// parseRSA parses an RSA key according to RFC 4253, section 6.6.\nfunc parseRSA(in []byte) (out PublicKey, rest []byte, err error) {\n\tvar w struct {\n\t\tE    *big.Int\n\t\tN    *big.Int\n\t\tRest []byte `ssh:\"rest\"`\n\t}\n\tif err := Unmarshal(in, &w); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tif w.E.BitLen() > 24 {\n\t\treturn nil, nil, errors.New(\"ssh: exponent too large\")\n\t}\n\te := w.E.Int64()\n\tif e < 3 || e&1 == 0 {\n\t\treturn nil, nil, errors.New(\"ssh: incorrect exponent\")\n\t}\n\n\tvar key rsa.PublicKey\n\tkey.E = int(e)\n\tkey.N = w.N\n\treturn (*rsaPublicKey)(&key), w.Rest, nil\n}\n\nfunc (r *rsaPublicKey) Marshal() []byte {\n\te := new(big.Int).SetInt64(int64(r.E))\n\t// RSA publickey struct layout should match the struct used by\n\t// parseRSACert in the x/crypto/ssh/agent package.\n\twirekey := struct {\n\t\tName string\n\t\tE    *big.Int\n\t\tN    *big.Int\n\t}{\n\t\tKeyAlgoRSA,\n\t\te,\n\t\tr.N,\n\t}\n\treturn Marshal(&wirekey)\n}\n\nfunc (r *rsaPublicKey) Verify(data []byte, sig *Signature) error {\n\tsupportedAlgos := algorithmsForKeyFormat(r.Type())\n\tif !slices.Contains(supportedAlgos, sig.Format) {\n\t\treturn fmt.Errorf(\"ssh: signature type %s for key type %s\", sig.Format, r.Type())\n\t}\n\thash, err := hashFunc(sig.Format)\n\tif err != nil {\n\t\treturn err\n\t}\n\th := hash.New()\n\th.Write(data)\n\tdigest := h.Sum(nil)\n\n\t// Signatures in PKCS1v15 must match the key's modulus in\n\t// length. However with SSH, some signers provide RSA\n\t// signatures which are missing the MSB 0's of the bignum\n\t// represented. With ssh-rsa signatures, this is encouraged by\n\t// the spec (even though e.g. OpenSSH will give the full\n\t// length unconditionally). With rsa-sha2-* signatures, the\n\t// verifier is allowed to support these, even though they are\n\t// out of spec. See RFC 4253 Section 6.6 for ssh-rsa and RFC\n\t// 8332 Section 3 for rsa-sha2-* details.\n\t//\n\t// In practice:\n\t// * OpenSSH always allows \"short\" signatures:\n\t//   https://github.com/openssh/openssh-portable/blob/V_9_8_P1/ssh-rsa.c#L526\n\t//   but always generates padded signatures:\n\t//   https://github.com/openssh/openssh-portable/blob/V_9_8_P1/ssh-rsa.c#L439\n\t//\n\t// * PuTTY versions 0.81 and earlier will generate short\n\t//   signatures for all RSA signature variants. Note that\n\t//   PuTTY is embedded in other software, such as WinSCP and\n\t//   FileZilla. At the time of writing, a patch has been\n\t//   applied to PuTTY to generate padded signatures for\n\t//   rsa-sha2-*, but not yet released:\n\t//   https://git.tartarus.org/?p=simon/putty.git;a=commitdiff;h=a5bcf3d384e1bf15a51a6923c3724cbbee022d8e\n\t//\n\t// * SSH.NET versions 2024.0.0 and earlier will generate short\n\t//   signatures for all RSA signature variants, fixed in 2024.1.0:\n\t//   https://github.com/sshnet/SSH.NET/releases/tag/2024.1.0\n\t//\n\t// As a result, we pad these up to the key size by inserting\n\t// leading 0's.\n\t//\n\t// Note that support for short signatures with rsa-sha2-* may\n\t// be removed in the future due to such signatures not being\n\t// allowed by the spec.\n\tblob := sig.Blob\n\tkeySize := (*rsa.PublicKey)(r).Size()\n\tif len(blob) < keySize {\n\t\tpadded := make([]byte, keySize)\n\t\tcopy(padded[keySize-len(blob):], blob)\n\t\tblob = padded\n\t}\n\treturn rsa.VerifyPKCS1v15((*rsa.PublicKey)(r), hash, digest, blob)\n}\n\nfunc (r *rsaPublicKey) CryptoPublicKey() crypto.PublicKey {\n\treturn (*rsa.PublicKey)(r)\n}\n\ntype dsaPublicKey dsa.PublicKey\n\nfunc (k *dsaPublicKey) Type() string {\n\treturn \"ssh-dss\"\n}\n\nfunc checkDSAParams(param *dsa.Parameters) error {\n\t// SSH specifies FIPS 186-2, which only provided a single size\n\t// (1024 bits) DSA key. FIPS 186-3 allows for larger key\n\t// sizes, which would confuse SSH.\n\tif l := param.P.BitLen(); l != 1024 {\n\t\treturn fmt.Errorf(\"ssh: unsupported DSA key size %d\", l)\n\t}\n\n\treturn nil\n}\n\n// parseDSA parses an DSA key according to RFC 4253, section 6.6.\nfunc parseDSA(in []byte) (out PublicKey, rest []byte, err error) {\n\tvar w struct {\n\t\tP, Q, G, Y *big.Int\n\t\tRest       []byte `ssh:\"rest\"`\n\t}\n\tif err := Unmarshal(in, &w); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tparam := dsa.Parameters{\n\t\tP: w.P,\n\t\tQ: w.Q,\n\t\tG: w.G,\n\t}\n\tif err := checkDSAParams(&param); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tkey := &dsaPublicKey{\n\t\tParameters: param,\n\t\tY:          w.Y,\n\t}\n\treturn key, w.Rest, nil\n}\n\nfunc (k *dsaPublicKey) Marshal() []byte {\n\t// DSA publickey struct layout should match the struct used by\n\t// parseDSACert in the x/crypto/ssh/agent package.\n\tw := struct {\n\t\tName       string\n\t\tP, Q, G, Y *big.Int\n\t}{\n\t\tk.Type(),\n\t\tk.P,\n\t\tk.Q,\n\t\tk.G,\n\t\tk.Y,\n\t}\n\n\treturn Marshal(&w)\n}\n\nfunc (k *dsaPublicKey) Verify(data []byte, sig *Signature) error {\n\tif sig.Format != k.Type() {\n\t\treturn fmt.Errorf(\"ssh: signature type %s for key type %s\", sig.Format, k.Type())\n\t}\n\thash, err := hashFunc(sig.Format)\n\tif err != nil {\n\t\treturn err\n\t}\n\th := hash.New()\n\th.Write(data)\n\tdigest := h.Sum(nil)\n\n\t// Per RFC 4253, section 6.6,\n\t// The value for 'dss_signature_blob' is encoded as a string containing\n\t// r, followed by s (which are 160-bit integers, without lengths or\n\t// padding, unsigned, and in network byte order).\n\t// For DSS purposes, sig.Blob should be exactly 40 bytes in length.\n\tif len(sig.Blob) != 40 {\n\t\treturn errors.New(\"ssh: DSA signature parse error\")\n\t}\n\tr := new(big.Int).SetBytes(sig.Blob[:20])\n\ts := new(big.Int).SetBytes(sig.Blob[20:])\n\tif dsa.Verify((*dsa.PublicKey)(k), digest, r, s) {\n\t\treturn nil\n\t}\n\treturn errors.New(\"ssh: signature did not verify\")\n}\n\nfunc (k *dsaPublicKey) CryptoPublicKey() crypto.PublicKey {\n\treturn (*dsa.PublicKey)(k)\n}\n\ntype dsaPrivateKey struct {\n\t*dsa.PrivateKey\n}\n\nfunc (k *dsaPrivateKey) PublicKey() PublicKey {\n\treturn (*dsaPublicKey)(&k.PrivateKey.PublicKey)\n}\n\nfunc (k *dsaPrivateKey) Sign(rand io.Reader, data []byte) (*Signature, error) {\n\treturn k.SignWithAlgorithm(rand, data, k.PublicKey().Type())\n}\n\nfunc (k *dsaPrivateKey) Algorithms() []string {\n\treturn []string{k.PublicKey().Type()}\n}\n\nfunc (k *dsaPrivateKey) SignWithAlgorithm(rand io.Reader, data []byte, algorithm string) (*Signature, error) {\n\tif algorithm != \"\" && algorithm != k.PublicKey().Type() {\n\t\treturn nil, fmt.Errorf(\"ssh: unsupported signature algorithm %s\", algorithm)\n\t}\n\n\thash, err := hashFunc(k.PublicKey().Type())\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\th := hash.New()\n\th.Write(data)\n\tdigest := h.Sum(nil)\n\tr, s, err := dsa.Sign(rand, k.PrivateKey, digest)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tsig := make([]byte, 40)\n\trb := r.Bytes()\n\tsb := s.Bytes()\n\n\tcopy(sig[20-len(rb):20], rb)\n\tcopy(sig[40-len(sb):], sb)\n\n\treturn &Signature{\n\t\tFormat: k.PublicKey().Type(),\n\t\tBlob:   sig,\n\t}, nil\n}\n\ntype ecdsaPublicKey ecdsa.PublicKey\n\nfunc (k *ecdsaPublicKey) Type() string {\n\treturn \"ecdsa-sha2-\" + k.nistID()\n}\n\nfunc (k *ecdsaPublicKey) nistID() string {\n\tswitch k.Params().BitSize {\n\tcase 256:\n\t\treturn \"nistp256\"\n\tcase 384:\n\t\treturn \"nistp384\"\n\tcase 521:\n\t\treturn \"nistp521\"\n\t}\n\tpanic(\"ssh: unsupported ecdsa key size\")\n}\n\ntype ed25519PublicKey ed25519.PublicKey\n\nfunc (k ed25519PublicKey) Type() string {\n\treturn KeyAlgoED25519\n}\n\nfunc parseED25519(in []byte) (out PublicKey, rest []byte, err error) {\n\tvar w struct {\n\t\tKeyBytes []byte\n\t\tRest     []byte `ssh:\"rest\"`\n\t}\n\n\tif err := Unmarshal(in, &w); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tif l := len(w.KeyBytes); l != ed25519.PublicKeySize {\n\t\treturn nil, nil, fmt.Errorf(\"invalid size %d for Ed25519 public key\", l)\n\t}\n\n\treturn ed25519PublicKey(w.KeyBytes), w.Rest, nil\n}\n\nfunc (k ed25519PublicKey) Marshal() []byte {\n\tw := struct {\n\t\tName     string\n\t\tKeyBytes []byte\n\t}{\n\t\tKeyAlgoED25519,\n\t\t[]byte(k),\n\t}\n\treturn Marshal(&w)\n}\n\nfunc (k ed25519PublicKey) Verify(b []byte, sig *Signature) error {\n\tif sig.Format != k.Type() {\n\t\treturn fmt.Errorf(\"ssh: signature type %s for key type %s\", sig.Format, k.Type())\n\t}\n\tif l := len(k); l != ed25519.PublicKeySize {\n\t\treturn fmt.Errorf(\"ssh: invalid size %d for Ed25519 public key\", l)\n\t}\n\n\tif ok := ed25519.Verify(ed25519.PublicKey(k), b, sig.Blob); !ok {\n\t\treturn errors.New(\"ssh: signature did not verify\")\n\t}\n\n\treturn nil\n}\n\nfunc (k ed25519PublicKey) CryptoPublicKey() crypto.PublicKey {\n\treturn ed25519.PublicKey(k)\n}\n\nfunc supportedEllipticCurve(curve elliptic.Curve) bool {\n\treturn curve == elliptic.P256() || curve == elliptic.P384() || curve == elliptic.P521()\n}\n\n// parseECDSA parses an ECDSA key according to RFC 5656, section 3.1.\nfunc parseECDSA(in []byte) (out PublicKey, rest []byte, err error) {\n\tvar w struct {\n\t\tCurve    string\n\t\tKeyBytes []byte\n\t\tRest     []byte `ssh:\"rest\"`\n\t}\n\n\tif err := Unmarshal(in, &w); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tkey := new(ecdsa.PublicKey)\n\n\tswitch w.Curve {\n\tcase \"nistp256\":\n\t\tkey.Curve = elliptic.P256()\n\tcase \"nistp384\":\n\t\tkey.Curve = elliptic.P384()\n\tcase \"nistp521\":\n\t\tkey.Curve = elliptic.P521()\n\tdefault:\n\t\treturn nil, nil, errors.New(\"ssh: unsupported curve\")\n\t}\n\n\tkey.X, key.Y = elliptic.Unmarshal(key.Curve, w.KeyBytes)\n\tif key.X == nil || key.Y == nil {\n\t\treturn nil, nil, errors.New(\"ssh: invalid curve point\")\n\t}\n\treturn (*ecdsaPublicKey)(key), w.Rest, nil\n}\n\nfunc (k *ecdsaPublicKey) Marshal() []byte {\n\t// See RFC 5656, section 3.1.\n\tkeyBytes := elliptic.Marshal(k.Curve, k.X, k.Y)\n\t// ECDSA publickey struct layout should match the struct used by\n\t// parseECDSACert in the x/crypto/ssh/agent package.\n\tw := struct {\n\t\tName string\n\t\tID   string\n\t\tKey  []byte\n\t}{\n\t\tk.Type(),\n\t\tk.nistID(),\n\t\tkeyBytes,\n\t}\n\n\treturn Marshal(&w)\n}\n\nfunc (k *ecdsaPublicKey) Verify(data []byte, sig *Signature) error {\n\tif sig.Format != k.Type() {\n\t\treturn fmt.Errorf(\"ssh: signature type %s for key type %s\", sig.Format, k.Type())\n\t}\n\thash, err := hashFunc(sig.Format)\n\tif err != nil {\n\t\treturn err\n\t}\n\th := hash.New()\n\th.Write(data)\n\tdigest := h.Sum(nil)\n\n\t// Per RFC 5656, section 3.1.2,\n\t// The ecdsa_signature_blob value has the following specific encoding:\n\t//    mpint    r\n\t//    mpint    s\n\tvar ecSig struct {\n\t\tR *big.Int\n\t\tS *big.Int\n\t}\n\n\tif err := Unmarshal(sig.Blob, &ecSig); err != nil {\n\t\treturn err\n\t}\n\n\tif ecdsa.Verify((*ecdsa.PublicKey)(k), digest, ecSig.R, ecSig.S) {\n\t\treturn nil\n\t}\n\treturn errors.New(\"ssh: signature did not verify\")\n}\n\nfunc (k *ecdsaPublicKey) CryptoPublicKey() crypto.PublicKey {\n\treturn (*ecdsa.PublicKey)(k)\n}\n\n// skFields holds the additional fields present in U2F/FIDO2 signatures.\n// See openssh/PROTOCOL.u2f 'SSH U2F Signatures' for details.\ntype skFields struct {\n\t// Flags contains U2F/FIDO2 flags such as 'user present'\n\tFlags byte\n\t// Counter is a monotonic signature counter which can be\n\t// used to detect concurrent use of a private key, should\n\t// it be extracted from hardware.\n\tCounter uint32\n}\n\ntype skECDSAPublicKey struct {\n\t// application is a URL-like string, typically \"ssh:\" for SSH.\n\t// see openssh/PROTOCOL.u2f for details.\n\tapplication string\n\tecdsa.PublicKey\n}\n\nfunc (k *skECDSAPublicKey) Type() string {\n\treturn KeyAlgoSKECDSA256\n}\n\nfunc (k *skECDSAPublicKey) nistID() string {\n\treturn \"nistp256\"\n}\n\nfunc parseSKECDSA(in []byte) (out PublicKey, rest []byte, err error) {\n\tvar w struct {\n\t\tCurve       string\n\t\tKeyBytes    []byte\n\t\tApplication string\n\t\tRest        []byte `ssh:\"rest\"`\n\t}\n\n\tif err := Unmarshal(in, &w); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tkey := new(skECDSAPublicKey)\n\tkey.application = w.Application\n\n\tif w.Curve != \"nistp256\" {\n\t\treturn nil, nil, errors.New(\"ssh: unsupported curve\")\n\t}\n\tkey.Curve = elliptic.P256()\n\n\tkey.X, key.Y = elliptic.Unmarshal(key.Curve, w.KeyBytes)\n\tif key.X == nil || key.Y == nil {\n\t\treturn nil, nil, errors.New(\"ssh: invalid curve point\")\n\t}\n\n\treturn key, w.Rest, nil\n}\n\nfunc (k *skECDSAPublicKey) Marshal() []byte {\n\t// See RFC 5656, section 3.1.\n\tkeyBytes := elliptic.Marshal(k.Curve, k.X, k.Y)\n\tw := struct {\n\t\tName        string\n\t\tID          string\n\t\tKey         []byte\n\t\tApplication string\n\t}{\n\t\tk.Type(),\n\t\tk.nistID(),\n\t\tkeyBytes,\n\t\tk.application,\n\t}\n\n\treturn Marshal(&w)\n}\n\nfunc (k *skECDSAPublicKey) Verify(data []byte, sig *Signature) error {\n\tif sig.Format != k.Type() {\n\t\treturn fmt.Errorf(\"ssh: signature type %s for key type %s\", sig.Format, k.Type())\n\t}\n\thash, err := hashFunc(sig.Format)\n\tif err != nil {\n\t\treturn err\n\t}\n\th := hash.New()\n\th.Write([]byte(k.application))\n\tappDigest := h.Sum(nil)\n\n\th.Reset()\n\th.Write(data)\n\tdataDigest := h.Sum(nil)\n\n\tvar ecSig struct {\n\t\tR *big.Int\n\t\tS *big.Int\n\t}\n\tif err := Unmarshal(sig.Blob, &ecSig); err != nil {\n\t\treturn err\n\t}\n\n\tvar skf skFields\n\tif err := Unmarshal(sig.Rest, &skf); err != nil {\n\t\treturn err\n\t}\n\n\tblob := struct {\n\t\tApplicationDigest []byte `ssh:\"rest\"`\n\t\tFlags             byte\n\t\tCounter           uint32\n\t\tMessageDigest     []byte `ssh:\"rest\"`\n\t}{\n\t\tappDigest,\n\t\tskf.Flags,\n\t\tskf.Counter,\n\t\tdataDigest,\n\t}\n\n\toriginal := Marshal(blob)\n\n\th.Reset()\n\th.Write(original)\n\tdigest := h.Sum(nil)\n\n\tif ecdsa.Verify((*ecdsa.PublicKey)(&k.PublicKey), digest, ecSig.R, ecSig.S) {\n\t\treturn nil\n\t}\n\treturn errors.New(\"ssh: signature did not verify\")\n}\n\nfunc (k *skECDSAPublicKey) CryptoPublicKey() crypto.PublicKey {\n\treturn &k.PublicKey\n}\n\ntype skEd25519PublicKey struct {\n\t// application is a URL-like string, typically \"ssh:\" for SSH.\n\t// see openssh/PROTOCOL.u2f for details.\n\tapplication string\n\ted25519.PublicKey\n}\n\nfunc (k *skEd25519PublicKey) Type() string {\n\treturn KeyAlgoSKED25519\n}\n\nfunc parseSKEd25519(in []byte) (out PublicKey, rest []byte, err error) {\n\tvar w struct {\n\t\tKeyBytes    []byte\n\t\tApplication string\n\t\tRest        []byte `ssh:\"rest\"`\n\t}\n\n\tif err := Unmarshal(in, &w); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tif l := len(w.KeyBytes); l != ed25519.PublicKeySize {\n\t\treturn nil, nil, fmt.Errorf(\"invalid size %d for Ed25519 public key\", l)\n\t}\n\n\tkey := new(skEd25519PublicKey)\n\tkey.application = w.Application\n\tkey.PublicKey = ed25519.PublicKey(w.KeyBytes)\n\n\treturn key, w.Rest, nil\n}\n\nfunc (k *skEd25519PublicKey) Marshal() []byte {\n\tw := struct {\n\t\tName        string\n\t\tKeyBytes    []byte\n\t\tApplication string\n\t}{\n\t\tKeyAlgoSKED25519,\n\t\t[]byte(k.PublicKey),\n\t\tk.application,\n\t}\n\treturn Marshal(&w)\n}\n\nfunc (k *skEd25519PublicKey) Verify(data []byte, sig *Signature) error {\n\tif sig.Format != k.Type() {\n\t\treturn fmt.Errorf(\"ssh: signature type %s for key type %s\", sig.Format, k.Type())\n\t}\n\tif l := len(k.PublicKey); l != ed25519.PublicKeySize {\n\t\treturn fmt.Errorf(\"invalid size %d for Ed25519 public key\", l)\n\t}\n\n\thash, err := hashFunc(sig.Format)\n\tif err != nil {\n\t\treturn err\n\t}\n\th := hash.New()\n\th.Write([]byte(k.application))\n\tappDigest := h.Sum(nil)\n\n\th.Reset()\n\th.Write(data)\n\tdataDigest := h.Sum(nil)\n\n\tvar edSig struct {\n\t\tSignature []byte `ssh:\"rest\"`\n\t}\n\n\tif err := Unmarshal(sig.Blob, &edSig); err != nil {\n\t\treturn err\n\t}\n\n\tvar skf skFields\n\tif err := Unmarshal(sig.Rest, &skf); err != nil {\n\t\treturn err\n\t}\n\n\tblob := struct {\n\t\tApplicationDigest []byte `ssh:\"rest\"`\n\t\tFlags             byte\n\t\tCounter           uint32\n\t\tMessageDigest     []byte `ssh:\"rest\"`\n\t}{\n\t\tappDigest,\n\t\tskf.Flags,\n\t\tskf.Counter,\n\t\tdataDigest,\n\t}\n\n\toriginal := Marshal(blob)\n\n\tif ok := ed25519.Verify(k.PublicKey, original, edSig.Signature); !ok {\n\t\treturn errors.New(\"ssh: signature did not verify\")\n\t}\n\n\treturn nil\n}\n\nfunc (k *skEd25519PublicKey) CryptoPublicKey() crypto.PublicKey {\n\treturn k.PublicKey\n}\n\n// NewSignerFromKey takes an *rsa.PrivateKey, *dsa.PrivateKey,\n// *ecdsa.PrivateKey or any other crypto.Signer and returns a\n// corresponding Signer instance. ECDSA keys must use P-256, P-384 or\n// P-521. DSA keys must use parameter size L1024N160.\nfunc NewSignerFromKey(key interface{}) (Signer, error) {\n\tswitch key := key.(type) {\n\tcase crypto.Signer:\n\t\treturn NewSignerFromSigner(key)\n\tcase *dsa.PrivateKey:\n\t\treturn newDSAPrivateKey(key)\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"ssh: unsupported key type %T\", key)\n\t}\n}\n\nfunc newDSAPrivateKey(key *dsa.PrivateKey) (Signer, error) {\n\tif err := checkDSAParams(&key.PublicKey.Parameters); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &dsaPrivateKey{key}, nil\n}\n\ntype wrappedSigner struct {\n\tsigner crypto.Signer\n\tpubKey PublicKey\n}\n\n// NewSignerFromSigner takes any crypto.Signer implementation and\n// returns a corresponding Signer interface. This can be used, for\n// example, with keys kept in hardware modules.\nfunc NewSignerFromSigner(signer crypto.Signer) (Signer, error) {\n\tpubKey, err := NewPublicKey(signer.Public())\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &wrappedSigner{signer, pubKey}, nil\n}\n\nfunc (s *wrappedSigner) PublicKey() PublicKey {\n\treturn s.pubKey\n}\n\nfunc (s *wrappedSigner) Sign(rand io.Reader, data []byte) (*Signature, error) {\n\treturn s.SignWithAlgorithm(rand, data, s.pubKey.Type())\n}\n\nfunc (s *wrappedSigner) Algorithms() []string {\n\treturn algorithmsForKeyFormat(s.pubKey.Type())\n}\n\nfunc (s *wrappedSigner) SignWithAlgorithm(rand io.Reader, data []byte, algorithm string) (*Signature, error) {\n\tif algorithm == \"\" {\n\t\talgorithm = s.pubKey.Type()\n\t}\n\n\tif !slices.Contains(s.Algorithms(), algorithm) {\n\t\treturn nil, fmt.Errorf(\"ssh: unsupported signature algorithm %q for key format %q\", algorithm, s.pubKey.Type())\n\t}\n\n\thashFunc, err := hashFunc(algorithm)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tvar digest []byte\n\tif hashFunc != 0 {\n\t\th := hashFunc.New()\n\t\th.Write(data)\n\t\tdigest = h.Sum(nil)\n\t} else {\n\t\tdigest = data\n\t}\n\n\tsignature, err := s.signer.Sign(rand, digest, hashFunc)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// crypto.Signer.Sign is expected to return an ASN.1-encoded signature\n\t// for ECDSA and DSA, but that's not the encoding expected by SSH, so\n\t// re-encode.\n\tswitch s.pubKey.(type) {\n\tcase *ecdsaPublicKey, *dsaPublicKey:\n\t\ttype asn1Signature struct {\n\t\t\tR, S *big.Int\n\t\t}\n\t\tasn1Sig := new(asn1Signature)\n\t\t_, err := asn1.Unmarshal(signature, asn1Sig)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tswitch s.pubKey.(type) {\n\t\tcase *ecdsaPublicKey:\n\t\t\tsignature = Marshal(asn1Sig)\n\n\t\tcase *dsaPublicKey:\n\t\t\tsignature = make([]byte, 40)\n\t\t\tr := asn1Sig.R.Bytes()\n\t\t\ts := asn1Sig.S.Bytes()\n\t\t\tcopy(signature[20-len(r):20], r)\n\t\t\tcopy(signature[40-len(s):40], s)\n\t\t}\n\t}\n\n\treturn &Signature{\n\t\tFormat: algorithm,\n\t\tBlob:   signature,\n\t}, nil\n}\n\n// NewPublicKey takes an *rsa.PublicKey, *dsa.PublicKey, *ecdsa.PublicKey,\n// or ed25519.PublicKey returns a corresponding PublicKey instance.\n// ECDSA keys must use P-256, P-384 or P-521.\nfunc NewPublicKey(key interface{}) (PublicKey, error) {\n\tswitch key := key.(type) {\n\tcase *rsa.PublicKey:\n\t\treturn (*rsaPublicKey)(key), nil\n\tcase *ecdsa.PublicKey:\n\t\tif !supportedEllipticCurve(key.Curve) {\n\t\t\treturn nil, errors.New(\"ssh: only P-256, P-384 and P-521 EC keys are supported\")\n\t\t}\n\t\treturn (*ecdsaPublicKey)(key), nil\n\tcase *dsa.PublicKey:\n\t\treturn (*dsaPublicKey)(key), nil\n\tcase ed25519.PublicKey:\n\t\tif l := len(key); l != ed25519.PublicKeySize {\n\t\t\treturn nil, fmt.Errorf(\"ssh: invalid size %d for Ed25519 public key\", l)\n\t\t}\n\t\treturn ed25519PublicKey(key), nil\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"ssh: unsupported key type %T\", key)\n\t}\n}\n\n// ParsePrivateKey returns a Signer from a PEM encoded private key. It supports\n// the same keys as ParseRawPrivateKey. If the private key is encrypted, it\n// will return a PassphraseMissingError.\nfunc ParsePrivateKey(pemBytes []byte) (Signer, error) {\n\tkey, err := ParseRawPrivateKey(pemBytes)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn NewSignerFromKey(key)\n}\n\n// ParsePrivateKeyWithPassphrase returns a Signer from a PEM encoded private\n// key and passphrase. It supports the same keys as\n// ParseRawPrivateKeyWithPassphrase.\nfunc ParsePrivateKeyWithPassphrase(pemBytes, passphrase []byte) (Signer, error) {\n\tkey, err := ParseRawPrivateKeyWithPassphrase(pemBytes, passphrase)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn NewSignerFromKey(key)\n}\n\n// encryptedBlock tells whether a private key is\n// encrypted by examining its Proc-Type header\n// for a mention of ENCRYPTED\n// according to RFC 1421 Section 4.6.1.1.\nfunc encryptedBlock(block *pem.Block) bool {\n\treturn strings.Contains(block.Headers[\"Proc-Type\"], \"ENCRYPTED\")\n}\n\n// A PassphraseMissingError indicates that parsing this private key requires a\n// passphrase. Use ParsePrivateKeyWithPassphrase.\ntype PassphraseMissingError struct {\n\t// PublicKey will be set if the private key format includes an unencrypted\n\t// public key along with the encrypted private key.\n\tPublicKey PublicKey\n}\n\nfunc (*PassphraseMissingError) Error() string {\n\treturn \"ssh: this private key is passphrase protected\"\n}\n\n// ParseRawPrivateKey returns a private key from a PEM encoded private key. It supports\n// RSA, DSA, ECDSA, and Ed25519 private keys in PKCS#1, PKCS#8, OpenSSL, and OpenSSH\n// formats. If the private key is encrypted, it will return a PassphraseMissingError.\nfunc ParseRawPrivateKey(pemBytes []byte) (interface{}, error) {\n\tblock, _ := pem.Decode(pemBytes)\n\tif block == nil {\n\t\treturn nil, errors.New(\"ssh: no key found\")\n\t}\n\n\tif encryptedBlock(block) {\n\t\treturn nil, &PassphraseMissingError{}\n\t}\n\n\tswitch block.Type {\n\tcase \"RSA PRIVATE KEY\":\n\t\treturn x509.ParsePKCS1PrivateKey(block.Bytes)\n\t// RFC5208 - https://tools.ietf.org/html/rfc5208\n\tcase \"PRIVATE KEY\":\n\t\treturn x509.ParsePKCS8PrivateKey(block.Bytes)\n\tcase \"EC PRIVATE KEY\":\n\t\treturn x509.ParseECPrivateKey(block.Bytes)\n\tcase \"DSA PRIVATE KEY\":\n\t\treturn ParseDSAPrivateKey(block.Bytes)\n\tcase \"OPENSSH PRIVATE KEY\":\n\t\treturn parseOpenSSHPrivateKey(block.Bytes, unencryptedOpenSSHKey)\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"ssh: unsupported key type %q\", block.Type)\n\t}\n}\n\n// ParseRawPrivateKeyWithPassphrase returns a private key decrypted with\n// passphrase from a PEM encoded private key. If the passphrase is wrong, it\n// will return x509.IncorrectPasswordError.\nfunc ParseRawPrivateKeyWithPassphrase(pemBytes, passphrase []byte) (interface{}, error) {\n\tblock, _ := pem.Decode(pemBytes)\n\tif block == nil {\n\t\treturn nil, errors.New(\"ssh: no key found\")\n\t}\n\n\tif block.Type == \"OPENSSH PRIVATE KEY\" {\n\t\treturn parseOpenSSHPrivateKey(block.Bytes, passphraseProtectedOpenSSHKey(passphrase))\n\t}\n\n\tif !encryptedBlock(block) || !x509.IsEncryptedPEMBlock(block) {\n\t\treturn nil, errors.New(\"ssh: not an encrypted key\")\n\t}\n\n\tbuf, err := x509.DecryptPEMBlock(block, passphrase)\n\tif err != nil {\n\t\tif err == x509.IncorrectPasswordError {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn nil, fmt.Errorf(\"ssh: cannot decode encrypted private keys: %v\", err)\n\t}\n\n\tvar result interface{}\n\n\tswitch block.Type {\n\tcase \"RSA PRIVATE KEY\":\n\t\tresult, err = x509.ParsePKCS1PrivateKey(buf)\n\tcase \"EC PRIVATE KEY\":\n\t\tresult, err = x509.ParseECPrivateKey(buf)\n\tcase \"DSA PRIVATE KEY\":\n\t\tresult, err = ParseDSAPrivateKey(buf)\n\tdefault:\n\t\terr = fmt.Errorf(\"ssh: unsupported key type %q\", block.Type)\n\t}\n\t// Because of deficiencies in the format, DecryptPEMBlock does not always\n\t// detect an incorrect password. In these cases decrypted DER bytes is\n\t// random noise. If the parsing of the key returns an asn1.StructuralError\n\t// we return x509.IncorrectPasswordError.\n\tif _, ok := err.(asn1.StructuralError); ok {\n\t\treturn nil, x509.IncorrectPasswordError\n\t}\n\n\treturn result, err\n}\n\n// ParseDSAPrivateKey returns a DSA private key from its ASN.1 DER encoding, as\n// specified by the OpenSSL DSA man page.\nfunc ParseDSAPrivateKey(der []byte) (*dsa.PrivateKey, error) {\n\tvar k struct {\n\t\tVersion int\n\t\tP       *big.Int\n\t\tQ       *big.Int\n\t\tG       *big.Int\n\t\tPub     *big.Int\n\t\tPriv    *big.Int\n\t}\n\trest, err := asn1.Unmarshal(der, &k)\n\tif err != nil {\n\t\treturn nil, errors.New(\"ssh: failed to parse DSA key: \" + err.Error())\n\t}\n\tif len(rest) > 0 {\n\t\treturn nil, errors.New(\"ssh: garbage after DSA key\")\n\t}\n\n\treturn &dsa.PrivateKey{\n\t\tPublicKey: dsa.PublicKey{\n\t\t\tParameters: dsa.Parameters{\n\t\t\t\tP: k.P,\n\t\t\t\tQ: k.Q,\n\t\t\t\tG: k.G,\n\t\t\t},\n\t\t\tY: k.Pub,\n\t\t},\n\t\tX: k.Priv,\n\t}, nil\n}\n\nfunc unencryptedOpenSSHKey(cipherName, kdfName, kdfOpts string, privKeyBlock []byte) ([]byte, error) {\n\tif kdfName != \"none\" || cipherName != \"none\" {\n\t\treturn nil, &PassphraseMissingError{}\n\t}\n\tif kdfOpts != \"\" {\n\t\treturn nil, errors.New(\"ssh: invalid openssh private key\")\n\t}\n\treturn privKeyBlock, nil\n}\n\nfunc passphraseProtectedOpenSSHKey(passphrase []byte) openSSHDecryptFunc {\n\treturn func(cipherName, kdfName, kdfOpts string, privKeyBlock []byte) ([]byte, error) {\n\t\tif kdfName == \"none\" || cipherName == \"none\" {\n\t\t\treturn nil, errors.New(\"ssh: key is not password protected\")\n\t\t}\n\t\tif kdfName != \"bcrypt\" {\n\t\t\treturn nil, fmt.Errorf(\"ssh: unknown KDF %q, only supports %q\", kdfName, \"bcrypt\")\n\t\t}\n\n\t\tvar opts struct {\n\t\t\tSalt   string\n\t\t\tRounds uint32\n\t\t}\n\t\tif err := Unmarshal([]byte(kdfOpts), &opts); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tk, err := bcrypt_pbkdf.Key(passphrase, []byte(opts.Salt), int(opts.Rounds), 32+16)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tkey, iv := k[:32], k[32:]\n\n\t\tc, err := aes.NewCipher(key)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tswitch cipherName {\n\t\tcase \"aes256-ctr\":\n\t\t\tctr := cipher.NewCTR(c, iv)\n\t\t\tctr.XORKeyStream(privKeyBlock, privKeyBlock)\n\t\tcase \"aes256-cbc\":\n\t\t\tif len(privKeyBlock)%c.BlockSize() != 0 {\n\t\t\t\treturn nil, fmt.Errorf(\"ssh: invalid encrypted private key length, not a multiple of the block size\")\n\t\t\t}\n\t\t\tcbc := cipher.NewCBCDecrypter(c, iv)\n\t\t\tcbc.CryptBlocks(privKeyBlock, privKeyBlock)\n\t\tdefault:\n\t\t\treturn nil, fmt.Errorf(\"ssh: unknown cipher %q, only supports %q or %q\", cipherName, \"aes256-ctr\", \"aes256-cbc\")\n\t\t}\n\n\t\treturn privKeyBlock, nil\n\t}\n}\n\nfunc unencryptedOpenSSHMarshaler(privKeyBlock []byte) ([]byte, string, string, string, error) {\n\tkey := generateOpenSSHPadding(privKeyBlock, 8)\n\treturn key, \"none\", \"none\", \"\", nil\n}\n\nfunc passphraseProtectedOpenSSHMarshaler(passphrase []byte) openSSHEncryptFunc {\n\treturn func(privKeyBlock []byte) ([]byte, string, string, string, error) {\n\t\tsalt := make([]byte, 16)\n\t\tif _, err := rand.Read(salt); err != nil {\n\t\t\treturn nil, \"\", \"\", \"\", err\n\t\t}\n\n\t\topts := struct {\n\t\t\tSalt   []byte\n\t\t\tRounds uint32\n\t\t}{salt, 16}\n\n\t\t// Derive key to encrypt the private key block.\n\t\tk, err := bcrypt_pbkdf.Key(passphrase, salt, int(opts.Rounds), 32+aes.BlockSize)\n\t\tif err != nil {\n\t\t\treturn nil, \"\", \"\", \"\", err\n\t\t}\n\n\t\t// Add padding matching the block size of AES.\n\t\tkeyBlock := generateOpenSSHPadding(privKeyBlock, aes.BlockSize)\n\n\t\t// Encrypt the private key using the derived secret.\n\n\t\tdst := make([]byte, len(keyBlock))\n\t\tkey, iv := k[:32], k[32:]\n\t\tblock, err := aes.NewCipher(key)\n\t\tif err != nil {\n\t\t\treturn nil, \"\", \"\", \"\", err\n\t\t}\n\n\t\tstream := cipher.NewCTR(block, iv)\n\t\tstream.XORKeyStream(dst, keyBlock)\n\n\t\treturn dst, \"aes256-ctr\", \"bcrypt\", string(Marshal(opts)), nil\n\t}\n}\n\nconst privateKeyAuthMagic = \"openssh-key-v1\\x00\"\n\ntype openSSHDecryptFunc func(CipherName, KdfName, KdfOpts string, PrivKeyBlock []byte) ([]byte, error)\ntype openSSHEncryptFunc func(PrivKeyBlock []byte) (ProtectedKeyBlock []byte, cipherName, kdfName, kdfOptions string, err error)\n\ntype openSSHEncryptedPrivateKey struct {\n\tCipherName   string\n\tKdfName      string\n\tKdfOpts      string\n\tNumKeys      uint32\n\tPubKey       []byte\n\tPrivKeyBlock []byte\n\tRest         []byte `ssh:\"rest\"`\n}\n\ntype openSSHPrivateKey struct {\n\tCheck1  uint32\n\tCheck2  uint32\n\tKeytype string\n\tRest    []byte `ssh:\"rest\"`\n}\n\ntype openSSHRSAPrivateKey struct {\n\tN       *big.Int\n\tE       *big.Int\n\tD       *big.Int\n\tIqmp    *big.Int\n\tP       *big.Int\n\tQ       *big.Int\n\tComment string\n\tPad     []byte `ssh:\"rest\"`\n}\n\ntype openSSHEd25519PrivateKey struct {\n\tPub     []byte\n\tPriv    []byte\n\tComment string\n\tPad     []byte `ssh:\"rest\"`\n}\n\ntype openSSHECDSAPrivateKey struct {\n\tCurve   string\n\tPub     []byte\n\tD       *big.Int\n\tComment string\n\tPad     []byte `ssh:\"rest\"`\n}\n\n// parseOpenSSHPrivateKey parses an OpenSSH private key, using the decrypt\n// function to unwrap the encrypted portion. unencryptedOpenSSHKey can be used\n// as the decrypt function to parse an unencrypted private key. See\n// https://github.com/openssh/openssh-portable/blob/master/PROTOCOL.key.\nfunc parseOpenSSHPrivateKey(key []byte, decrypt openSSHDecryptFunc) (crypto.PrivateKey, error) {\n\tif len(key) < len(privateKeyAuthMagic) || string(key[:len(privateKeyAuthMagic)]) != privateKeyAuthMagic {\n\t\treturn nil, errors.New(\"ssh: invalid openssh private key format\")\n\t}\n\tremaining := key[len(privateKeyAuthMagic):]\n\n\tvar w openSSHEncryptedPrivateKey\n\tif err := Unmarshal(remaining, &w); err != nil {\n\t\treturn nil, err\n\t}\n\tif w.NumKeys != 1 {\n\t\t// We only support single key files, and so does OpenSSH.\n\t\t// https://github.com/openssh/openssh-portable/blob/4103a3ec7/sshkey.c#L4171\n\t\treturn nil, errors.New(\"ssh: multi-key files are not supported\")\n\t}\n\n\tprivKeyBlock, err := decrypt(w.CipherName, w.KdfName, w.KdfOpts, w.PrivKeyBlock)\n\tif err != nil {\n\t\tif err, ok := err.(*PassphraseMissingError); ok {\n\t\t\tpub, errPub := ParsePublicKey(w.PubKey)\n\t\t\tif errPub != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"ssh: failed to parse embedded public key: %v\", errPub)\n\t\t\t}\n\t\t\terr.PublicKey = pub\n\t\t}\n\t\treturn nil, err\n\t}\n\n\tvar pk1 openSSHPrivateKey\n\tif err := Unmarshal(privKeyBlock, &pk1); err != nil || pk1.Check1 != pk1.Check2 {\n\t\tif w.CipherName != \"none\" {\n\t\t\treturn nil, x509.IncorrectPasswordError\n\t\t}\n\t\treturn nil, errors.New(\"ssh: malformed OpenSSH key\")\n\t}\n\n\tswitch pk1.Keytype {\n\tcase KeyAlgoRSA:\n\t\tvar key openSSHRSAPrivateKey\n\t\tif err := Unmarshal(pk1.Rest, &key); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tif err := checkOpenSSHKeyPadding(key.Pad); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tpk := &rsa.PrivateKey{\n\t\t\tPublicKey: rsa.PublicKey{\n\t\t\t\tN: key.N,\n\t\t\t\tE: int(key.E.Int64()),\n\t\t\t},\n\t\t\tD:      key.D,\n\t\t\tPrimes: []*big.Int{key.P, key.Q},\n\t\t}\n\n\t\tif err := pk.Validate(); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tpk.Precompute()\n\n\t\treturn pk, nil\n\tcase KeyAlgoED25519:\n\t\tvar key openSSHEd25519PrivateKey\n\t\tif err := Unmarshal(pk1.Rest, &key); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tif len(key.Priv) != ed25519.PrivateKeySize {\n\t\t\treturn nil, errors.New(\"ssh: private key unexpected length\")\n\t\t}\n\n\t\tif err := checkOpenSSHKeyPadding(key.Pad); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tpk := ed25519.PrivateKey(make([]byte, ed25519.PrivateKeySize))\n\t\tcopy(pk, key.Priv)\n\t\treturn &pk, nil\n\tcase KeyAlgoECDSA256, KeyAlgoECDSA384, KeyAlgoECDSA521:\n\t\tvar key openSSHECDSAPrivateKey\n\t\tif err := Unmarshal(pk1.Rest, &key); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tif err := checkOpenSSHKeyPadding(key.Pad); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tvar curve elliptic.Curve\n\t\tswitch key.Curve {\n\t\tcase \"nistp256\":\n\t\t\tcurve = elliptic.P256()\n\t\tcase \"nistp384\":\n\t\t\tcurve = elliptic.P384()\n\t\tcase \"nistp521\":\n\t\t\tcurve = elliptic.P521()\n\t\tdefault:\n\t\t\treturn nil, errors.New(\"ssh: unhandled elliptic curve: \" + key.Curve)\n\t\t}\n\n\t\tX, Y := elliptic.Unmarshal(curve, key.Pub)\n\t\tif X == nil || Y == nil {\n\t\t\treturn nil, errors.New(\"ssh: failed to unmarshal public key\")\n\t\t}\n\n\t\tif key.D.Cmp(curve.Params().N) >= 0 {\n\t\t\treturn nil, errors.New(\"ssh: scalar is out of range\")\n\t\t}\n\n\t\tx, y := curve.ScalarBaseMult(key.D.Bytes())\n\t\tif x.Cmp(X) != 0 || y.Cmp(Y) != 0 {\n\t\t\treturn nil, errors.New(\"ssh: public key does not match private key\")\n\t\t}\n\n\t\treturn &ecdsa.PrivateKey{\n\t\t\tPublicKey: ecdsa.PublicKey{\n\t\t\t\tCurve: curve,\n\t\t\t\tX:     X,\n\t\t\t\tY:     Y,\n\t\t\t},\n\t\t\tD: key.D,\n\t\t}, nil\n\tdefault:\n\t\treturn nil, errors.New(\"ssh: unhandled key type\")\n\t}\n}\n\nfunc marshalOpenSSHPrivateKey(key crypto.PrivateKey, comment string, encrypt openSSHEncryptFunc) (*pem.Block, error) {\n\tvar w openSSHEncryptedPrivateKey\n\tvar pk1 openSSHPrivateKey\n\n\t// Random check bytes.\n\tvar check uint32\n\tif err := binary.Read(rand.Reader, binary.BigEndian, &check); err != nil {\n\t\treturn nil, err\n\t}\n\n\tpk1.Check1 = check\n\tpk1.Check2 = check\n\tw.NumKeys = 1\n\n\t// Use a []byte directly on ed25519 keys.\n\tif k, ok := key.(*ed25519.PrivateKey); ok {\n\t\tkey = *k\n\t}\n\n\tswitch k := key.(type) {\n\tcase *rsa.PrivateKey:\n\t\tE := new(big.Int).SetInt64(int64(k.PublicKey.E))\n\t\t// Marshal public key:\n\t\t// E and N are in reversed order in the public and private key.\n\t\tpubKey := struct {\n\t\t\tKeyType string\n\t\t\tE       *big.Int\n\t\t\tN       *big.Int\n\t\t}{\n\t\t\tKeyAlgoRSA,\n\t\t\tE, k.PublicKey.N,\n\t\t}\n\t\tw.PubKey = Marshal(pubKey)\n\n\t\t// Marshal private key.\n\t\tkey := openSSHRSAPrivateKey{\n\t\t\tN:       k.PublicKey.N,\n\t\t\tE:       E,\n\t\t\tD:       k.D,\n\t\t\tIqmp:    k.Precomputed.Qinv,\n\t\t\tP:       k.Primes[0],\n\t\t\tQ:       k.Primes[1],\n\t\t\tComment: comment,\n\t\t}\n\t\tpk1.Keytype = KeyAlgoRSA\n\t\tpk1.Rest = Marshal(key)\n\tcase ed25519.PrivateKey:\n\t\tpub := make([]byte, ed25519.PublicKeySize)\n\t\tpriv := make([]byte, ed25519.PrivateKeySize)\n\t\tcopy(pub, k[32:])\n\t\tcopy(priv, k)\n\n\t\t// Marshal public key.\n\t\tpubKey := struct {\n\t\t\tKeyType string\n\t\t\tPub     []byte\n\t\t}{\n\t\t\tKeyAlgoED25519, pub,\n\t\t}\n\t\tw.PubKey = Marshal(pubKey)\n\n\t\t// Marshal private key.\n\t\tkey := openSSHEd25519PrivateKey{\n\t\t\tPub:     pub,\n\t\t\tPriv:    priv,\n\t\t\tComment: comment,\n\t\t}\n\t\tpk1.Keytype = KeyAlgoED25519\n\t\tpk1.Rest = Marshal(key)\n\tcase *ecdsa.PrivateKey:\n\t\tvar curve, keyType string\n\t\tswitch name := k.Curve.Params().Name; name {\n\t\tcase \"P-256\":\n\t\t\tcurve = \"nistp256\"\n\t\t\tkeyType = KeyAlgoECDSA256\n\t\tcase \"P-384\":\n\t\t\tcurve = \"nistp384\"\n\t\t\tkeyType = KeyAlgoECDSA384\n\t\tcase \"P-521\":\n\t\t\tcurve = \"nistp521\"\n\t\t\tkeyType = KeyAlgoECDSA521\n\t\tdefault:\n\t\t\treturn nil, errors.New(\"ssh: unhandled elliptic curve \" + name)\n\t\t}\n\n\t\tpub := elliptic.Marshal(k.Curve, k.PublicKey.X, k.PublicKey.Y)\n\n\t\t// Marshal public key.\n\t\tpubKey := struct {\n\t\t\tKeyType string\n\t\t\tCurve   string\n\t\t\tPub     []byte\n\t\t}{\n\t\t\tkeyType, curve, pub,\n\t\t}\n\t\tw.PubKey = Marshal(pubKey)\n\n\t\t// Marshal private key.\n\t\tkey := openSSHECDSAPrivateKey{\n\t\t\tCurve:   curve,\n\t\t\tPub:     pub,\n\t\t\tD:       k.D,\n\t\t\tComment: comment,\n\t\t}\n\t\tpk1.Keytype = keyType\n\t\tpk1.Rest = Marshal(key)\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"ssh: unsupported key type %T\", k)\n\t}\n\n\tvar err error\n\t// Add padding and encrypt the key if necessary.\n\tw.PrivKeyBlock, w.CipherName, w.KdfName, w.KdfOpts, err = encrypt(Marshal(pk1))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tb := Marshal(w)\n\tblock := &pem.Block{\n\t\tType:  \"OPENSSH PRIVATE KEY\",\n\t\tBytes: append([]byte(privateKeyAuthMagic), b...),\n\t}\n\treturn block, nil\n}\n\nfunc checkOpenSSHKeyPadding(pad []byte) error {\n\tfor i, b := range pad {\n\t\tif int(b) != i+1 {\n\t\t\treturn errors.New(\"ssh: padding not as expected\")\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc generateOpenSSHPadding(block []byte, blockSize int) []byte {\n\tfor i, l := 0, len(block); (l+i)%blockSize != 0; i++ {\n\t\tblock = append(block, byte(i+1))\n\t}\n\treturn block\n}\n\n// FingerprintLegacyMD5 returns the user presentation of the key's\n// fingerprint as described by RFC 4716 section 4.\nfunc FingerprintLegacyMD5(pubKey PublicKey) string {\n\tmd5sum := md5.Sum(pubKey.Marshal())\n\thexarray := make([]string, len(md5sum))\n\tfor i, c := range md5sum {\n\t\thexarray[i] = hex.EncodeToString([]byte{c})\n\t}\n\treturn strings.Join(hexarray, \":\")\n}\n\n// FingerprintSHA256 returns the user presentation of the key's\n// fingerprint as unpadded base64 encoded sha256 hash.\n// This format was introduced from OpenSSH 6.8.\n// https://www.openssh.com/txt/release-6.8\n// https://tools.ietf.org/html/rfc4648#section-3.2 (unpadded base64 encoding)\nfunc FingerprintSHA256(pubKey PublicKey) string {\n\tsha256sum := sha256.Sum256(pubKey.Marshal())\n\thash := base64.RawStdEncoding.EncodeToString(sha256sum[:])\n\treturn \"SHA256:\" + hash\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/crypto/ssh/mac.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage ssh\n\n// Message authentication support\n\nimport (\n\t\"crypto/fips140\"\n\t\"crypto/hmac\"\n\t\"crypto/sha1\"\n\t\"crypto/sha256\"\n\t\"crypto/sha512\"\n\t\"hash\"\n\t\"slices\"\n)\n\ntype macMode struct {\n\tkeySize int\n\tetm     bool\n\tnew     func(key []byte) hash.Hash\n}\n\n// truncatingMAC wraps around a hash.Hash and truncates the output digest to\n// a given size.\ntype truncatingMAC struct {\n\tlength int\n\thmac   hash.Hash\n}\n\nfunc (t truncatingMAC) Write(data []byte) (int, error) {\n\treturn t.hmac.Write(data)\n}\n\nfunc (t truncatingMAC) Sum(in []byte) []byte {\n\tout := t.hmac.Sum(in)\n\treturn out[:len(in)+t.length]\n}\n\nfunc (t truncatingMAC) Reset() {\n\tt.hmac.Reset()\n}\n\nfunc (t truncatingMAC) Size() int {\n\treturn t.length\n}\n\nfunc (t truncatingMAC) BlockSize() int { return t.hmac.BlockSize() }\n\n// macModes defines the supported MACs. MACs not included are not supported\n// and will not be negotiated, even if explicitly configured. When FIPS mode is\n// enabled, only FIPS-approved algorithms are included.\nvar macModes = map[string]*macMode{}\n\nfunc init() {\n\tmacModes[HMACSHA512ETM] = &macMode{64, true, func(key []byte) hash.Hash {\n\t\treturn hmac.New(sha512.New, key)\n\t}}\n\tmacModes[HMACSHA256ETM] = &macMode{32, true, func(key []byte) hash.Hash {\n\t\treturn hmac.New(sha256.New, key)\n\t}}\n\tmacModes[HMACSHA512] = &macMode{64, false, func(key []byte) hash.Hash {\n\t\treturn hmac.New(sha512.New, key)\n\t}}\n\tmacModes[HMACSHA256] = &macMode{32, false, func(key []byte) hash.Hash {\n\t\treturn hmac.New(sha256.New, key)\n\t}}\n\n\tif fips140.Enabled() {\n\t\tdefaultMACs = slices.DeleteFunc(defaultMACs, func(algo string) bool {\n\t\t\t_, ok := macModes[algo]\n\t\t\treturn !ok\n\t\t})\n\t\treturn\n\t}\n\n\tmacModes[HMACSHA1] = &macMode{20, false, func(key []byte) hash.Hash {\n\t\treturn hmac.New(sha1.New, key)\n\t}}\n\tmacModes[InsecureHMACSHA196] = &macMode{20, false, func(key []byte) hash.Hash {\n\t\treturn truncatingMAC{12, hmac.New(sha1.New, key)}\n\t}}\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/crypto/ssh/messages.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage ssh\n\nimport (\n\t\"bytes\"\n\t\"encoding/binary\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"math/big\"\n\t\"reflect\"\n\t\"strconv\"\n\t\"strings\"\n)\n\n// These are SSH message type numbers. They are scattered around several\n// documents but many were taken from [SSH-PARAMETERS].\nconst (\n\tmsgIgnore        = 2\n\tmsgUnimplemented = 3\n\tmsgDebug         = 4\n\tmsgNewKeys       = 21\n)\n\n// SSH messages:\n//\n// These structures mirror the wire format of the corresponding SSH messages.\n// They are marshaled using reflection with the marshal and unmarshal functions\n// in this file. The only wrinkle is that a final member of type []byte with a\n// ssh tag of \"rest\" receives the remainder of a packet when unmarshaling.\n\n// See RFC 4253, section 11.1.\nconst msgDisconnect = 1\n\n// disconnectMsg is the message that signals a disconnect. It is also\n// the error type returned from mux.Wait()\ntype disconnectMsg struct {\n\tReason   uint32 `sshtype:\"1\"`\n\tMessage  string\n\tLanguage string\n}\n\nfunc (d *disconnectMsg) Error() string {\n\treturn fmt.Sprintf(\"ssh: disconnect, reason %d: %s\", d.Reason, d.Message)\n}\n\n// See RFC 4253, section 7.1.\nconst msgKexInit = 20\n\ntype kexInitMsg struct {\n\tCookie                  [16]byte `sshtype:\"20\"`\n\tKexAlgos                []string\n\tServerHostKeyAlgos      []string\n\tCiphersClientServer     []string\n\tCiphersServerClient     []string\n\tMACsClientServer        []string\n\tMACsServerClient        []string\n\tCompressionClientServer []string\n\tCompressionServerClient []string\n\tLanguagesClientServer   []string\n\tLanguagesServerClient   []string\n\tFirstKexFollows         bool\n\tReserved                uint32\n}\n\n// See RFC 4253, section 8.\n\n// Diffie-Hellman\nconst msgKexDHInit = 30\n\ntype kexDHInitMsg struct {\n\tX *big.Int `sshtype:\"30\"`\n}\n\nconst msgKexECDHInit = 30\n\ntype kexECDHInitMsg struct {\n\tClientPubKey []byte `sshtype:\"30\"`\n}\n\nconst msgKexECDHReply = 31\n\ntype kexECDHReplyMsg struct {\n\tHostKey         []byte `sshtype:\"31\"`\n\tEphemeralPubKey []byte\n\tSignature       []byte\n}\n\nconst msgKexDHReply = 31\n\ntype kexDHReplyMsg struct {\n\tHostKey   []byte `sshtype:\"31\"`\n\tY         *big.Int\n\tSignature []byte\n}\n\n// See RFC 4419, section 5.\nconst msgKexDHGexGroup = 31\n\ntype kexDHGexGroupMsg struct {\n\tP *big.Int `sshtype:\"31\"`\n\tG *big.Int\n}\n\nconst msgKexDHGexInit = 32\n\ntype kexDHGexInitMsg struct {\n\tX *big.Int `sshtype:\"32\"`\n}\n\nconst msgKexDHGexReply = 33\n\ntype kexDHGexReplyMsg struct {\n\tHostKey   []byte `sshtype:\"33\"`\n\tY         *big.Int\n\tSignature []byte\n}\n\nconst msgKexDHGexRequest = 34\n\ntype kexDHGexRequestMsg struct {\n\tMinBits       uint32 `sshtype:\"34\"`\n\tPreferredBits uint32\n\tMaxBits       uint32\n}\n\n// See RFC 4253, section 10.\nconst msgServiceRequest = 5\n\ntype serviceRequestMsg struct {\n\tService string `sshtype:\"5\"`\n}\n\n// See RFC 4253, section 10.\nconst msgServiceAccept = 6\n\ntype serviceAcceptMsg struct {\n\tService string `sshtype:\"6\"`\n}\n\n// See RFC 8308, section 2.3\nconst msgExtInfo = 7\n\ntype extInfoMsg struct {\n\tNumExtensions uint32 `sshtype:\"7\"`\n\tPayload       []byte `ssh:\"rest\"`\n}\n\n// See RFC 4252, section 5.\nconst msgUserAuthRequest = 50\n\ntype userAuthRequestMsg struct {\n\tUser    string `sshtype:\"50\"`\n\tService string\n\tMethod  string\n\tPayload []byte `ssh:\"rest\"`\n}\n\n// Used for debug printouts of packets.\ntype userAuthSuccessMsg struct {\n}\n\n// See RFC 4252, section 5.1\nconst msgUserAuthFailure = 51\n\ntype userAuthFailureMsg struct {\n\tMethods        []string `sshtype:\"51\"`\n\tPartialSuccess bool\n}\n\n// See RFC 4252, section 5.1\nconst msgUserAuthSuccess = 52\n\n// See RFC 4252, section 5.4\nconst msgUserAuthBanner = 53\n\ntype userAuthBannerMsg struct {\n\tMessage string `sshtype:\"53\"`\n\t// unused, but required to allow message parsing\n\tLanguage string\n}\n\n// See RFC 4256, section 3.2\nconst msgUserAuthInfoRequest = 60\nconst msgUserAuthInfoResponse = 61\n\ntype userAuthInfoRequestMsg struct {\n\tName        string `sshtype:\"60\"`\n\tInstruction string\n\tLanguage    string\n\tNumPrompts  uint32\n\tPrompts     []byte `ssh:\"rest\"`\n}\n\n// See RFC 4254, section 5.1.\nconst msgChannelOpen = 90\n\ntype channelOpenMsg struct {\n\tChanType         string `sshtype:\"90\"`\n\tPeersID          uint32\n\tPeersWindow      uint32\n\tMaxPacketSize    uint32\n\tTypeSpecificData []byte `ssh:\"rest\"`\n}\n\nconst msgChannelExtendedData = 95\nconst msgChannelData = 94\n\n// Used for debug print outs of packets.\ntype channelDataMsg struct {\n\tPeersID uint32 `sshtype:\"94\"`\n\tLength  uint32\n\tRest    []byte `ssh:\"rest\"`\n}\n\n// See RFC 4254, section 5.1.\nconst msgChannelOpenConfirm = 91\n\ntype channelOpenConfirmMsg struct {\n\tPeersID          uint32 `sshtype:\"91\"`\n\tMyID             uint32\n\tMyWindow         uint32\n\tMaxPacketSize    uint32\n\tTypeSpecificData []byte `ssh:\"rest\"`\n}\n\n// See RFC 4254, section 5.1.\nconst msgChannelOpenFailure = 92\n\ntype channelOpenFailureMsg struct {\n\tPeersID  uint32 `sshtype:\"92\"`\n\tReason   RejectionReason\n\tMessage  string\n\tLanguage string\n}\n\nconst msgChannelRequest = 98\n\ntype channelRequestMsg struct {\n\tPeersID             uint32 `sshtype:\"98\"`\n\tRequest             string\n\tWantReply           bool\n\tRequestSpecificData []byte `ssh:\"rest\"`\n}\n\n// See RFC 4254, section 5.4.\nconst msgChannelSuccess = 99\n\ntype channelRequestSuccessMsg struct {\n\tPeersID uint32 `sshtype:\"99\"`\n}\n\n// See RFC 4254, section 5.4.\nconst msgChannelFailure = 100\n\ntype channelRequestFailureMsg struct {\n\tPeersID uint32 `sshtype:\"100\"`\n}\n\n// See RFC 4254, section 5.3\nconst msgChannelClose = 97\n\ntype channelCloseMsg struct {\n\tPeersID uint32 `sshtype:\"97\"`\n}\n\n// See RFC 4254, section 5.3\nconst msgChannelEOF = 96\n\ntype channelEOFMsg struct {\n\tPeersID uint32 `sshtype:\"96\"`\n}\n\n// See RFC 4254, section 4\nconst msgGlobalRequest = 80\n\ntype globalRequestMsg struct {\n\tType      string `sshtype:\"80\"`\n\tWantReply bool\n\tData      []byte `ssh:\"rest\"`\n}\n\n// See RFC 4254, section 4\nconst msgRequestSuccess = 81\n\ntype globalRequestSuccessMsg struct {\n\tData []byte `ssh:\"rest\" sshtype:\"81\"`\n}\n\n// See RFC 4254, section 4\nconst msgRequestFailure = 82\n\ntype globalRequestFailureMsg struct {\n\tData []byte `ssh:\"rest\" sshtype:\"82\"`\n}\n\n// See RFC 4254, section 5.2\nconst msgChannelWindowAdjust = 93\n\ntype windowAdjustMsg struct {\n\tPeersID         uint32 `sshtype:\"93\"`\n\tAdditionalBytes uint32\n}\n\n// See RFC 4252, section 7\nconst msgUserAuthPubKeyOk = 60\n\ntype userAuthPubKeyOkMsg struct {\n\tAlgo   string `sshtype:\"60\"`\n\tPubKey []byte\n}\n\n// See RFC 4462, section 3\nconst msgUserAuthGSSAPIResponse = 60\n\ntype userAuthGSSAPIResponse struct {\n\tSupportMech []byte `sshtype:\"60\"`\n}\n\nconst msgUserAuthGSSAPIToken = 61\n\ntype userAuthGSSAPIToken struct {\n\tToken []byte `sshtype:\"61\"`\n}\n\nconst msgUserAuthGSSAPIMIC = 66\n\ntype userAuthGSSAPIMIC struct {\n\tMIC []byte `sshtype:\"66\"`\n}\n\n// See RFC 4462, section 3.9\nconst msgUserAuthGSSAPIErrTok = 64\n\ntype userAuthGSSAPIErrTok struct {\n\tErrorToken []byte `sshtype:\"64\"`\n}\n\n// See RFC 4462, section 3.8\nconst msgUserAuthGSSAPIError = 65\n\ntype userAuthGSSAPIError struct {\n\tMajorStatus uint32 `sshtype:\"65\"`\n\tMinorStatus uint32\n\tMessage     string\n\tLanguageTag string\n}\n\n// Transport layer OpenSSH extension. See [PROTOCOL], section 1.9\nconst msgPing = 192\n\ntype pingMsg struct {\n\tData string `sshtype:\"192\"`\n}\n\n// Transport layer OpenSSH extension. See [PROTOCOL], section 1.9\nconst msgPong = 193\n\ntype pongMsg struct {\n\tData string `sshtype:\"193\"`\n}\n\n// typeTags returns the possible type bytes for the given reflect.Type, which\n// should be a struct. The possible values are separated by a '|' character.\nfunc typeTags(structType reflect.Type) (tags []byte) {\n\ttagStr := structType.Field(0).Tag.Get(\"sshtype\")\n\n\tfor _, tag := range strings.Split(tagStr, \"|\") {\n\t\ti, err := strconv.Atoi(tag)\n\t\tif err == nil {\n\t\t\ttags = append(tags, byte(i))\n\t\t}\n\t}\n\n\treturn tags\n}\n\nfunc fieldError(t reflect.Type, field int, problem string) error {\n\tif problem != \"\" {\n\t\tproblem = \": \" + problem\n\t}\n\treturn fmt.Errorf(\"ssh: unmarshal error for field %s of type %s%s\", t.Field(field).Name, t.Name(), problem)\n}\n\nvar errShortRead = errors.New(\"ssh: short read\")\n\n// Unmarshal parses data in SSH wire format into a structure. The out\n// argument should be a pointer to struct. If the first member of the\n// struct has the \"sshtype\" tag set to a '|'-separated set of numbers\n// in decimal, the packet must start with one of those numbers. In\n// case of error, Unmarshal returns a ParseError or\n// UnexpectedMessageError.\nfunc Unmarshal(data []byte, out interface{}) error {\n\tv := reflect.ValueOf(out).Elem()\n\tstructType := v.Type()\n\texpectedTypes := typeTags(structType)\n\n\tvar expectedType byte\n\tif len(expectedTypes) > 0 {\n\t\texpectedType = expectedTypes[0]\n\t}\n\n\tif len(data) == 0 {\n\t\treturn parseError(expectedType)\n\t}\n\n\tif len(expectedTypes) > 0 {\n\t\tgoodType := false\n\t\tfor _, e := range expectedTypes {\n\t\t\tif e > 0 && data[0] == e {\n\t\t\t\tgoodType = true\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif !goodType {\n\t\t\treturn fmt.Errorf(\"ssh: unexpected message type %d (expected one of %v)\", data[0], expectedTypes)\n\t\t}\n\t\tdata = data[1:]\n\t}\n\n\tvar ok bool\n\tfor i := 0; i < v.NumField(); i++ {\n\t\tfield := v.Field(i)\n\t\tt := field.Type()\n\t\tswitch t.Kind() {\n\t\tcase reflect.Bool:\n\t\t\tif len(data) < 1 {\n\t\t\t\treturn errShortRead\n\t\t\t}\n\t\t\tfield.SetBool(data[0] != 0)\n\t\t\tdata = data[1:]\n\t\tcase reflect.Array:\n\t\t\tif t.Elem().Kind() != reflect.Uint8 {\n\t\t\t\treturn fieldError(structType, i, \"array of unsupported type\")\n\t\t\t}\n\t\t\tif len(data) < t.Len() {\n\t\t\t\treturn errShortRead\n\t\t\t}\n\t\t\tfor j, n := 0, t.Len(); j < n; j++ {\n\t\t\t\tfield.Index(j).Set(reflect.ValueOf(data[j]))\n\t\t\t}\n\t\t\tdata = data[t.Len():]\n\t\tcase reflect.Uint64:\n\t\t\tvar u64 uint64\n\t\t\tif u64, data, ok = parseUint64(data); !ok {\n\t\t\t\treturn errShortRead\n\t\t\t}\n\t\t\tfield.SetUint(u64)\n\t\tcase reflect.Uint32:\n\t\t\tvar u32 uint32\n\t\t\tif u32, data, ok = parseUint32(data); !ok {\n\t\t\t\treturn errShortRead\n\t\t\t}\n\t\t\tfield.SetUint(uint64(u32))\n\t\tcase reflect.Uint8:\n\t\t\tif len(data) < 1 {\n\t\t\t\treturn errShortRead\n\t\t\t}\n\t\t\tfield.SetUint(uint64(data[0]))\n\t\t\tdata = data[1:]\n\t\tcase reflect.String:\n\t\t\tvar s []byte\n\t\t\tif s, data, ok = parseString(data); !ok {\n\t\t\t\treturn fieldError(structType, i, \"\")\n\t\t\t}\n\t\t\tfield.SetString(string(s))\n\t\tcase reflect.Slice:\n\t\t\tswitch t.Elem().Kind() {\n\t\t\tcase reflect.Uint8:\n\t\t\t\tif structType.Field(i).Tag.Get(\"ssh\") == \"rest\" {\n\t\t\t\t\tfield.Set(reflect.ValueOf(data))\n\t\t\t\t\tdata = nil\n\t\t\t\t} else {\n\t\t\t\t\tvar s []byte\n\t\t\t\t\tif s, data, ok = parseString(data); !ok {\n\t\t\t\t\t\treturn errShortRead\n\t\t\t\t\t}\n\t\t\t\t\tfield.Set(reflect.ValueOf(s))\n\t\t\t\t}\n\t\t\tcase reflect.String:\n\t\t\t\tvar nl []string\n\t\t\t\tif nl, data, ok = parseNameList(data); !ok {\n\t\t\t\t\treturn errShortRead\n\t\t\t\t}\n\t\t\t\tfield.Set(reflect.ValueOf(nl))\n\t\t\tdefault:\n\t\t\t\treturn fieldError(structType, i, \"slice of unsupported type\")\n\t\t\t}\n\t\tcase reflect.Ptr:\n\t\t\tif t == bigIntType {\n\t\t\t\tvar n *big.Int\n\t\t\t\tif n, data, ok = parseInt(data); !ok {\n\t\t\t\t\treturn errShortRead\n\t\t\t\t}\n\t\t\t\tfield.Set(reflect.ValueOf(n))\n\t\t\t} else {\n\t\t\t\treturn fieldError(structType, i, \"pointer to unsupported type\")\n\t\t\t}\n\t\tdefault:\n\t\t\treturn fieldError(structType, i, fmt.Sprintf(\"unsupported type: %v\", t))\n\t\t}\n\t}\n\n\tif len(data) != 0 {\n\t\treturn parseError(expectedType)\n\t}\n\n\treturn nil\n}\n\n// Marshal serializes the message in msg to SSH wire format.  The msg\n// argument should be a struct or pointer to struct. If the first\n// member has the \"sshtype\" tag set to a number in decimal, that\n// number is prepended to the result. If the last of member has the\n// \"ssh\" tag set to \"rest\", its contents are appended to the output.\nfunc Marshal(msg interface{}) []byte {\n\tout := make([]byte, 0, 64)\n\treturn marshalStruct(out, msg)\n}\n\nfunc marshalStruct(out []byte, msg interface{}) []byte {\n\tv := reflect.Indirect(reflect.ValueOf(msg))\n\tmsgTypes := typeTags(v.Type())\n\tif len(msgTypes) > 0 {\n\t\tout = append(out, msgTypes[0])\n\t}\n\n\tfor i, n := 0, v.NumField(); i < n; i++ {\n\t\tfield := v.Field(i)\n\t\tswitch t := field.Type(); t.Kind() {\n\t\tcase reflect.Bool:\n\t\t\tvar v uint8\n\t\t\tif field.Bool() {\n\t\t\t\tv = 1\n\t\t\t}\n\t\t\tout = append(out, v)\n\t\tcase reflect.Array:\n\t\t\tif t.Elem().Kind() != reflect.Uint8 {\n\t\t\t\tpanic(fmt.Sprintf(\"array of non-uint8 in field %d: %T\", i, field.Interface()))\n\t\t\t}\n\t\t\tfor j, l := 0, t.Len(); j < l; j++ {\n\t\t\t\tout = append(out, uint8(field.Index(j).Uint()))\n\t\t\t}\n\t\tcase reflect.Uint32:\n\t\t\tout = appendU32(out, uint32(field.Uint()))\n\t\tcase reflect.Uint64:\n\t\t\tout = appendU64(out, uint64(field.Uint()))\n\t\tcase reflect.Uint8:\n\t\t\tout = append(out, uint8(field.Uint()))\n\t\tcase reflect.String:\n\t\t\ts := field.String()\n\t\t\tout = appendInt(out, len(s))\n\t\t\tout = append(out, s...)\n\t\tcase reflect.Slice:\n\t\t\tswitch t.Elem().Kind() {\n\t\t\tcase reflect.Uint8:\n\t\t\t\tif v.Type().Field(i).Tag.Get(\"ssh\") != \"rest\" {\n\t\t\t\t\tout = appendInt(out, field.Len())\n\t\t\t\t}\n\t\t\t\tout = append(out, field.Bytes()...)\n\t\t\tcase reflect.String:\n\t\t\t\toffset := len(out)\n\t\t\t\tout = appendU32(out, 0)\n\t\t\t\tif n := field.Len(); n > 0 {\n\t\t\t\t\tfor j := 0; j < n; j++ {\n\t\t\t\t\t\tf := field.Index(j)\n\t\t\t\t\t\tif j != 0 {\n\t\t\t\t\t\t\tout = append(out, ',')\n\t\t\t\t\t\t}\n\t\t\t\t\t\tout = append(out, f.String()...)\n\t\t\t\t\t}\n\t\t\t\t\t// overwrite length value\n\t\t\t\t\tbinary.BigEndian.PutUint32(out[offset:], uint32(len(out)-offset-4))\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tpanic(fmt.Sprintf(\"slice of unknown type in field %d: %T\", i, field.Interface()))\n\t\t\t}\n\t\tcase reflect.Ptr:\n\t\t\tif t == bigIntType {\n\t\t\t\tvar n *big.Int\n\t\t\t\tnValue := reflect.ValueOf(&n)\n\t\t\t\tnValue.Elem().Set(field)\n\t\t\t\tneeded := intLength(n)\n\t\t\t\toldLength := len(out)\n\n\t\t\t\tif cap(out)-len(out) < needed {\n\t\t\t\t\tnewOut := make([]byte, len(out), 2*(len(out)+needed))\n\t\t\t\t\tcopy(newOut, out)\n\t\t\t\t\tout = newOut\n\t\t\t\t}\n\t\t\t\tout = out[:oldLength+needed]\n\t\t\t\tmarshalInt(out[oldLength:], n)\n\t\t\t} else {\n\t\t\t\tpanic(fmt.Sprintf(\"pointer to unknown type in field %d: %T\", i, field.Interface()))\n\t\t\t}\n\t\t}\n\t}\n\n\treturn out\n}\n\nvar bigOne = big.NewInt(1)\n\nfunc parseString(in []byte) (out, rest []byte, ok bool) {\n\tif len(in) < 4 {\n\t\treturn\n\t}\n\tlength := binary.BigEndian.Uint32(in)\n\tin = in[4:]\n\tif uint32(len(in)) < length {\n\t\treturn\n\t}\n\tout = in[:length]\n\trest = in[length:]\n\tok = true\n\treturn\n}\n\nvar (\n\tcomma         = []byte{','}\n\temptyNameList = []string{}\n)\n\nfunc parseNameList(in []byte) (out []string, rest []byte, ok bool) {\n\tcontents, rest, ok := parseString(in)\n\tif !ok {\n\t\treturn\n\t}\n\tif len(contents) == 0 {\n\t\tout = emptyNameList\n\t\treturn\n\t}\n\tparts := bytes.Split(contents, comma)\n\tout = make([]string, len(parts))\n\tfor i, part := range parts {\n\t\tout[i] = string(part)\n\t}\n\treturn\n}\n\nfunc parseInt(in []byte) (out *big.Int, rest []byte, ok bool) {\n\tcontents, rest, ok := parseString(in)\n\tif !ok {\n\t\treturn\n\t}\n\tout = new(big.Int)\n\n\tif len(contents) > 0 && contents[0]&0x80 == 0x80 {\n\t\t// This is a negative number\n\t\tnotBytes := make([]byte, len(contents))\n\t\tfor i := range notBytes {\n\t\t\tnotBytes[i] = ^contents[i]\n\t\t}\n\t\tout.SetBytes(notBytes)\n\t\tout.Add(out, bigOne)\n\t\tout.Neg(out)\n\t} else {\n\t\t// Positive number\n\t\tout.SetBytes(contents)\n\t}\n\tok = true\n\treturn\n}\n\nfunc parseUint32(in []byte) (uint32, []byte, bool) {\n\tif len(in) < 4 {\n\t\treturn 0, nil, false\n\t}\n\treturn binary.BigEndian.Uint32(in), in[4:], true\n}\n\nfunc parseUint64(in []byte) (uint64, []byte, bool) {\n\tif len(in) < 8 {\n\t\treturn 0, nil, false\n\t}\n\treturn binary.BigEndian.Uint64(in), in[8:], true\n}\n\nfunc intLength(n *big.Int) int {\n\tlength := 4 /* length bytes */\n\tif n.Sign() < 0 {\n\t\tnMinus1 := new(big.Int).Neg(n)\n\t\tnMinus1.Sub(nMinus1, bigOne)\n\t\tbitLen := nMinus1.BitLen()\n\t\tif bitLen%8 == 0 {\n\t\t\t// The number will need 0xff padding\n\t\t\tlength++\n\t\t}\n\t\tlength += (bitLen + 7) / 8\n\t} else if n.Sign() == 0 {\n\t\t// A zero is the zero length string\n\t} else {\n\t\tbitLen := n.BitLen()\n\t\tif bitLen%8 == 0 {\n\t\t\t// The number will need 0x00 padding\n\t\t\tlength++\n\t\t}\n\t\tlength += (bitLen + 7) / 8\n\t}\n\n\treturn length\n}\n\nfunc marshalUint32(to []byte, n uint32) []byte {\n\tbinary.BigEndian.PutUint32(to, n)\n\treturn to[4:]\n}\n\nfunc marshalUint64(to []byte, n uint64) []byte {\n\tbinary.BigEndian.PutUint64(to, n)\n\treturn to[8:]\n}\n\nfunc marshalInt(to []byte, n *big.Int) []byte {\n\tlengthBytes := to\n\tto = to[4:]\n\tlength := 0\n\n\tif n.Sign() < 0 {\n\t\t// A negative number has to be converted to two's-complement\n\t\t// form. So we'll subtract 1 and invert. If the\n\t\t// most-significant-bit isn't set then we'll need to pad the\n\t\t// beginning with 0xff in order to keep the number negative.\n\t\tnMinus1 := new(big.Int).Neg(n)\n\t\tnMinus1.Sub(nMinus1, bigOne)\n\t\tbytes := nMinus1.Bytes()\n\t\tfor i := range bytes {\n\t\t\tbytes[i] ^= 0xff\n\t\t}\n\t\tif len(bytes) == 0 || bytes[0]&0x80 == 0 {\n\t\t\tto[0] = 0xff\n\t\t\tto = to[1:]\n\t\t\tlength++\n\t\t}\n\t\tnBytes := copy(to, bytes)\n\t\tto = to[nBytes:]\n\t\tlength += nBytes\n\t} else if n.Sign() == 0 {\n\t\t// A zero is the zero length string\n\t} else {\n\t\tbytes := n.Bytes()\n\t\tif len(bytes) > 0 && bytes[0]&0x80 != 0 {\n\t\t\t// We'll have to pad this with a 0x00 in order to\n\t\t\t// stop it looking like a negative number.\n\t\t\tto[0] = 0\n\t\t\tto = to[1:]\n\t\t\tlength++\n\t\t}\n\t\tnBytes := copy(to, bytes)\n\t\tto = to[nBytes:]\n\t\tlength += nBytes\n\t}\n\n\tlengthBytes[0] = byte(length >> 24)\n\tlengthBytes[1] = byte(length >> 16)\n\tlengthBytes[2] = byte(length >> 8)\n\tlengthBytes[3] = byte(length)\n\treturn to\n}\n\nfunc writeInt(w io.Writer, n *big.Int) {\n\tlength := intLength(n)\n\tbuf := make([]byte, length)\n\tmarshalInt(buf, n)\n\tw.Write(buf)\n}\n\nfunc writeString(w io.Writer, s []byte) {\n\tvar lengthBytes [4]byte\n\tlengthBytes[0] = byte(len(s) >> 24)\n\tlengthBytes[1] = byte(len(s) >> 16)\n\tlengthBytes[2] = byte(len(s) >> 8)\n\tlengthBytes[3] = byte(len(s))\n\tw.Write(lengthBytes[:])\n\tw.Write(s)\n}\n\nfunc stringLength(n int) int {\n\treturn 4 + n\n}\n\nfunc marshalString(to []byte, s []byte) []byte {\n\tto[0] = byte(len(s) >> 24)\n\tto[1] = byte(len(s) >> 16)\n\tto[2] = byte(len(s) >> 8)\n\tto[3] = byte(len(s))\n\tto = to[4:]\n\tcopy(to, s)\n\treturn to[len(s):]\n}\n\nvar bigIntType = reflect.TypeFor[*big.Int]()\n\n// Decode a packet into its corresponding message.\nfunc decode(packet []byte) (interface{}, error) {\n\tvar msg interface{}\n\tswitch packet[0] {\n\tcase msgDisconnect:\n\t\tmsg = new(disconnectMsg)\n\tcase msgServiceRequest:\n\t\tmsg = new(serviceRequestMsg)\n\tcase msgServiceAccept:\n\t\tmsg = new(serviceAcceptMsg)\n\tcase msgExtInfo:\n\t\tmsg = new(extInfoMsg)\n\tcase msgKexInit:\n\t\tmsg = new(kexInitMsg)\n\tcase msgKexDHInit:\n\t\tmsg = new(kexDHInitMsg)\n\tcase msgKexDHReply:\n\t\tmsg = new(kexDHReplyMsg)\n\tcase msgUserAuthRequest:\n\t\tmsg = new(userAuthRequestMsg)\n\tcase msgUserAuthSuccess:\n\t\treturn new(userAuthSuccessMsg), nil\n\tcase msgUserAuthFailure:\n\t\tmsg = new(userAuthFailureMsg)\n\tcase msgUserAuthBanner:\n\t\tmsg = new(userAuthBannerMsg)\n\tcase msgUserAuthPubKeyOk:\n\t\tmsg = new(userAuthPubKeyOkMsg)\n\tcase msgGlobalRequest:\n\t\tmsg = new(globalRequestMsg)\n\tcase msgRequestSuccess:\n\t\tmsg = new(globalRequestSuccessMsg)\n\tcase msgRequestFailure:\n\t\tmsg = new(globalRequestFailureMsg)\n\tcase msgChannelOpen:\n\t\tmsg = new(channelOpenMsg)\n\tcase msgChannelData:\n\t\tmsg = new(channelDataMsg)\n\tcase msgChannelOpenConfirm:\n\t\tmsg = new(channelOpenConfirmMsg)\n\tcase msgChannelOpenFailure:\n\t\tmsg = new(channelOpenFailureMsg)\n\tcase msgChannelWindowAdjust:\n\t\tmsg = new(windowAdjustMsg)\n\tcase msgChannelEOF:\n\t\tmsg = new(channelEOFMsg)\n\tcase msgChannelClose:\n\t\tmsg = new(channelCloseMsg)\n\tcase msgChannelRequest:\n\t\tmsg = new(channelRequestMsg)\n\tcase msgChannelSuccess:\n\t\tmsg = new(channelRequestSuccessMsg)\n\tcase msgChannelFailure:\n\t\tmsg = new(channelRequestFailureMsg)\n\tcase msgUserAuthGSSAPIToken:\n\t\tmsg = new(userAuthGSSAPIToken)\n\tcase msgUserAuthGSSAPIMIC:\n\t\tmsg = new(userAuthGSSAPIMIC)\n\tcase msgUserAuthGSSAPIErrTok:\n\t\tmsg = new(userAuthGSSAPIErrTok)\n\tcase msgUserAuthGSSAPIError:\n\t\tmsg = new(userAuthGSSAPIError)\n\tdefault:\n\t\treturn nil, unexpectedMessageError(0, packet[0])\n\t}\n\tif err := Unmarshal(packet, msg); err != nil {\n\t\treturn nil, err\n\t}\n\treturn msg, nil\n}\n\nvar packetTypeNames = map[byte]string{\n\tmsgDisconnect:          \"disconnectMsg\",\n\tmsgServiceRequest:      \"serviceRequestMsg\",\n\tmsgServiceAccept:       \"serviceAcceptMsg\",\n\tmsgExtInfo:             \"extInfoMsg\",\n\tmsgKexInit:             \"kexInitMsg\",\n\tmsgKexDHInit:           \"kexDHInitMsg\",\n\tmsgKexDHReply:          \"kexDHReplyMsg\",\n\tmsgUserAuthRequest:     \"userAuthRequestMsg\",\n\tmsgUserAuthSuccess:     \"userAuthSuccessMsg\",\n\tmsgUserAuthFailure:     \"userAuthFailureMsg\",\n\tmsgUserAuthPubKeyOk:    \"userAuthPubKeyOkMsg\",\n\tmsgGlobalRequest:       \"globalRequestMsg\",\n\tmsgRequestSuccess:      \"globalRequestSuccessMsg\",\n\tmsgRequestFailure:      \"globalRequestFailureMsg\",\n\tmsgChannelOpen:         \"channelOpenMsg\",\n\tmsgChannelData:         \"channelDataMsg\",\n\tmsgChannelOpenConfirm:  \"channelOpenConfirmMsg\",\n\tmsgChannelOpenFailure:  \"channelOpenFailureMsg\",\n\tmsgChannelWindowAdjust: \"windowAdjustMsg\",\n\tmsgChannelEOF:          \"channelEOFMsg\",\n\tmsgChannelClose:        \"channelCloseMsg\",\n\tmsgChannelRequest:      \"channelRequestMsg\",\n\tmsgChannelSuccess:      \"channelRequestSuccessMsg\",\n\tmsgChannelFailure:      \"channelRequestFailureMsg\",\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/crypto/ssh/mlkem.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage ssh\n\nimport (\n\t\"crypto\"\n\t\"crypto/mlkem\"\n\t\"crypto/sha256\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\n\t\"golang.org/x/crypto/curve25519\"\n)\n\n// mlkem768WithCurve25519sha256 implements the hybrid ML-KEM768 with\n// curve25519-sha256 key exchange method, as described by\n// draft-kampanakis-curdle-ssh-pq-ke-05 section 2.3.3.\ntype mlkem768WithCurve25519sha256 struct{}\n\nfunc (kex *mlkem768WithCurve25519sha256) Client(c packetConn, rand io.Reader, magics *handshakeMagics) (*kexResult, error) {\n\tvar c25519kp curve25519KeyPair\n\tif err := c25519kp.generate(rand); err != nil {\n\t\treturn nil, err\n\t}\n\n\tseed := make([]byte, mlkem.SeedSize)\n\tif _, err := io.ReadFull(rand, seed); err != nil {\n\t\treturn nil, err\n\t}\n\n\tmlkemDk, err := mlkem.NewDecapsulationKey768(seed)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\thybridKey := append(mlkemDk.EncapsulationKey().Bytes(), c25519kp.pub[:]...)\n\tif err := c.writePacket(Marshal(&kexECDHInitMsg{hybridKey})); err != nil {\n\t\treturn nil, err\n\t}\n\n\tpacket, err := c.readPacket()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar reply kexECDHReplyMsg\n\tif err = Unmarshal(packet, &reply); err != nil {\n\t\treturn nil, err\n\t}\n\n\tif len(reply.EphemeralPubKey) != mlkem.CiphertextSize768+32 {\n\t\treturn nil, errors.New(\"ssh: peer's mlkem768x25519 public value has wrong length\")\n\t}\n\n\t// Perform KEM decapsulate operation to obtain shared key from ML-KEM.\n\tmlkem768Secret, err := mlkemDk.Decapsulate(reply.EphemeralPubKey[:mlkem.CiphertextSize768])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Complete Curve25519 ECDH to obtain its shared key.\n\tc25519Secret, err := curve25519.X25519(c25519kp.priv[:], reply.EphemeralPubKey[mlkem.CiphertextSize768:])\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"ssh: peer's mlkem768x25519 public value is not valid: %w\", err)\n\t}\n\t// Compute actual shared key.\n\th := sha256.New()\n\th.Write(mlkem768Secret)\n\th.Write(c25519Secret)\n\tsecret := h.Sum(nil)\n\n\th.Reset()\n\tmagics.write(h)\n\twriteString(h, reply.HostKey)\n\twriteString(h, hybridKey)\n\twriteString(h, reply.EphemeralPubKey)\n\n\tK := make([]byte, stringLength(len(secret)))\n\tmarshalString(K, secret)\n\th.Write(K)\n\n\treturn &kexResult{\n\t\tH:         h.Sum(nil),\n\t\tK:         K,\n\t\tHostKey:   reply.HostKey,\n\t\tSignature: reply.Signature,\n\t\tHash:      crypto.SHA256,\n\t}, nil\n}\n\nfunc (kex *mlkem768WithCurve25519sha256) Server(c packetConn, rand io.Reader, magics *handshakeMagics, priv AlgorithmSigner, algo string) (*kexResult, error) {\n\tpacket, err := c.readPacket()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar kexInit kexECDHInitMsg\n\tif err = Unmarshal(packet, &kexInit); err != nil {\n\t\treturn nil, err\n\t}\n\n\tif len(kexInit.ClientPubKey) != mlkem.EncapsulationKeySize768+32 {\n\t\treturn nil, errors.New(\"ssh: peer's ML-KEM768/curve25519 public value has wrong length\")\n\t}\n\n\tencapsulationKey, err := mlkem.NewEncapsulationKey768(kexInit.ClientPubKey[:mlkem.EncapsulationKeySize768])\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"ssh: peer's ML-KEM768 encapsulation key is not valid: %w\", err)\n\t}\n\t// Perform KEM encapsulate operation to obtain ciphertext and shared key.\n\tmlkem768Secret, mlkem768Ciphertext := encapsulationKey.Encapsulate()\n\n\t// Perform server side of Curve25519 ECDH to obtain server public value and\n\t// shared key.\n\tvar c25519kp curve25519KeyPair\n\tif err := c25519kp.generate(rand); err != nil {\n\t\treturn nil, err\n\t}\n\tc25519Secret, err := curve25519.X25519(c25519kp.priv[:], kexInit.ClientPubKey[mlkem.EncapsulationKeySize768:])\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"ssh: peer's ML-KEM768/curve25519 public value is not valid: %w\", err)\n\t}\n\thybridKey := append(mlkem768Ciphertext, c25519kp.pub[:]...)\n\n\t// Compute actual shared key.\n\th := sha256.New()\n\th.Write(mlkem768Secret)\n\th.Write(c25519Secret)\n\tsecret := h.Sum(nil)\n\n\thostKeyBytes := priv.PublicKey().Marshal()\n\n\th.Reset()\n\tmagics.write(h)\n\twriteString(h, hostKeyBytes)\n\twriteString(h, kexInit.ClientPubKey)\n\twriteString(h, hybridKey)\n\n\tK := make([]byte, stringLength(len(secret)))\n\tmarshalString(K, secret)\n\th.Write(K)\n\n\tH := h.Sum(nil)\n\n\tsig, err := signAndMarshal(priv, rand, H, algo)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treply := kexECDHReplyMsg{\n\t\tEphemeralPubKey: hybridKey,\n\t\tHostKey:         hostKeyBytes,\n\t\tSignature:       sig,\n\t}\n\tif err := c.writePacket(Marshal(&reply)); err != nil {\n\t\treturn nil, err\n\t}\n\treturn &kexResult{\n\t\tH:         H,\n\t\tK:         K,\n\t\tHostKey:   hostKeyBytes,\n\t\tSignature: sig,\n\t\tHash:      crypto.SHA256,\n\t}, nil\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/crypto/ssh/mux.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage ssh\n\nimport (\n\t\"encoding/binary\"\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n\t\"sync\"\n\t\"sync/atomic\"\n)\n\n// debugMux, if set, causes messages in the connection protocol to be\n// logged.\nconst debugMux = false\n\n// chanList is a thread safe channel list.\ntype chanList struct {\n\t// protects concurrent access to chans\n\tsync.Mutex\n\n\t// chans are indexed by the local id of the channel, which the\n\t// other side should send in the PeersId field.\n\tchans []*channel\n\n\t// This is a debugging aid: it offsets all IDs by this\n\t// amount. This helps distinguish otherwise identical\n\t// server/client muxes\n\toffset uint32\n}\n\n// Assigns a channel ID to the given channel.\nfunc (c *chanList) add(ch *channel) uint32 {\n\tc.Lock()\n\tdefer c.Unlock()\n\tfor i := range c.chans {\n\t\tif c.chans[i] == nil {\n\t\t\tc.chans[i] = ch\n\t\t\treturn uint32(i) + c.offset\n\t\t}\n\t}\n\tc.chans = append(c.chans, ch)\n\treturn uint32(len(c.chans)-1) + c.offset\n}\n\n// getChan returns the channel for the given ID.\nfunc (c *chanList) getChan(id uint32) *channel {\n\tid -= c.offset\n\n\tc.Lock()\n\tdefer c.Unlock()\n\tif id < uint32(len(c.chans)) {\n\t\treturn c.chans[id]\n\t}\n\treturn nil\n}\n\nfunc (c *chanList) remove(id uint32) {\n\tid -= c.offset\n\tc.Lock()\n\tif id < uint32(len(c.chans)) {\n\t\tc.chans[id] = nil\n\t}\n\tc.Unlock()\n}\n\n// dropAll forgets all channels it knows, returning them in a slice.\nfunc (c *chanList) dropAll() []*channel {\n\tc.Lock()\n\tdefer c.Unlock()\n\tvar r []*channel\n\n\tfor _, ch := range c.chans {\n\t\tif ch == nil {\n\t\t\tcontinue\n\t\t}\n\t\tr = append(r, ch)\n\t}\n\tc.chans = nil\n\treturn r\n}\n\n// mux represents the state for the SSH connection protocol, which\n// multiplexes many channels onto a single packet transport.\ntype mux struct {\n\tconn     packetConn\n\tchanList chanList\n\n\tincomingChannels chan NewChannel\n\n\tglobalSentMu     sync.Mutex\n\tglobalResponses  chan interface{}\n\tincomingRequests chan *Request\n\n\terrCond *sync.Cond\n\terr     error\n}\n\n// When debugging, each new chanList instantiation has a different\n// offset.\nvar globalOff uint32\n\nfunc (m *mux) Wait() error {\n\tm.errCond.L.Lock()\n\tdefer m.errCond.L.Unlock()\n\tfor m.err == nil {\n\t\tm.errCond.Wait()\n\t}\n\treturn m.err\n}\n\n// newMux returns a mux that runs over the given connection.\nfunc newMux(p packetConn) *mux {\n\tm := &mux{\n\t\tconn:             p,\n\t\tincomingChannels: make(chan NewChannel, chanSize),\n\t\tglobalResponses:  make(chan interface{}, 1),\n\t\tincomingRequests: make(chan *Request, chanSize),\n\t\terrCond:          newCond(),\n\t}\n\tif debugMux {\n\t\tm.chanList.offset = atomic.AddUint32(&globalOff, 1)\n\t}\n\n\tgo m.loop()\n\treturn m\n}\n\nfunc (m *mux) sendMessage(msg interface{}) error {\n\tp := Marshal(msg)\n\tif debugMux {\n\t\tlog.Printf(\"send global(%d): %#v\", m.chanList.offset, msg)\n\t}\n\treturn m.conn.writePacket(p)\n}\n\nfunc (m *mux) SendRequest(name string, wantReply bool, payload []byte) (bool, []byte, error) {\n\tif wantReply {\n\t\tm.globalSentMu.Lock()\n\t\tdefer m.globalSentMu.Unlock()\n\t}\n\n\tif err := m.sendMessage(globalRequestMsg{\n\t\tType:      name,\n\t\tWantReply: wantReply,\n\t\tData:      payload,\n\t}); err != nil {\n\t\treturn false, nil, err\n\t}\n\n\tif !wantReply {\n\t\treturn false, nil, nil\n\t}\n\n\tmsg, ok := <-m.globalResponses\n\tif !ok {\n\t\treturn false, nil, io.EOF\n\t}\n\tswitch msg := msg.(type) {\n\tcase *globalRequestFailureMsg:\n\t\treturn false, msg.Data, nil\n\tcase *globalRequestSuccessMsg:\n\t\treturn true, msg.Data, nil\n\tdefault:\n\t\treturn false, nil, fmt.Errorf(\"ssh: unexpected response to request: %#v\", msg)\n\t}\n}\n\n// ackRequest must be called after processing a global request that\n// has WantReply set.\nfunc (m *mux) ackRequest(ok bool, data []byte) error {\n\tif ok {\n\t\treturn m.sendMessage(globalRequestSuccessMsg{Data: data})\n\t}\n\treturn m.sendMessage(globalRequestFailureMsg{Data: data})\n}\n\nfunc (m *mux) Close() error {\n\treturn m.conn.Close()\n}\n\n// loop runs the connection machine. It will process packets until an\n// error is encountered. To synchronize on loop exit, use mux.Wait.\nfunc (m *mux) loop() {\n\tvar err error\n\tfor err == nil {\n\t\terr = m.onePacket()\n\t}\n\n\tfor _, ch := range m.chanList.dropAll() {\n\t\tch.close()\n\t}\n\n\tclose(m.incomingChannels)\n\tclose(m.incomingRequests)\n\tclose(m.globalResponses)\n\n\tm.conn.Close()\n\n\tm.errCond.L.Lock()\n\tm.err = err\n\tm.errCond.Broadcast()\n\tm.errCond.L.Unlock()\n\n\tif debugMux {\n\t\tlog.Println(\"loop exit\", err)\n\t}\n}\n\n// onePacket reads and processes one packet.\nfunc (m *mux) onePacket() error {\n\tpacket, err := m.conn.readPacket()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif debugMux {\n\t\tif packet[0] == msgChannelData || packet[0] == msgChannelExtendedData {\n\t\t\tlog.Printf(\"decoding(%d): data packet - %d bytes\", m.chanList.offset, len(packet))\n\t\t} else {\n\t\t\tp, _ := decode(packet)\n\t\t\tlog.Printf(\"decoding(%d): %d %#v - %d bytes\", m.chanList.offset, packet[0], p, len(packet))\n\t\t}\n\t}\n\n\tswitch packet[0] {\n\tcase msgChannelOpen:\n\t\treturn m.handleChannelOpen(packet)\n\tcase msgGlobalRequest, msgRequestSuccess, msgRequestFailure:\n\t\treturn m.handleGlobalPacket(packet)\n\tcase msgPing:\n\t\tvar msg pingMsg\n\t\tif err := Unmarshal(packet, &msg); err != nil {\n\t\t\treturn fmt.Errorf(\"failed to unmarshal ping@openssh.com message: %w\", err)\n\t\t}\n\t\treturn m.sendMessage(pongMsg(msg))\n\t}\n\n\t// assume a channel packet.\n\tif len(packet) < 5 {\n\t\treturn parseError(packet[0])\n\t}\n\tid := binary.BigEndian.Uint32(packet[1:])\n\tch := m.chanList.getChan(id)\n\tif ch == nil {\n\t\treturn m.handleUnknownChannelPacket(id, packet)\n\t}\n\n\treturn ch.handlePacket(packet)\n}\n\nfunc (m *mux) handleGlobalPacket(packet []byte) error {\n\tmsg, err := decode(packet)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tswitch msg := msg.(type) {\n\tcase *globalRequestMsg:\n\t\tm.incomingRequests <- &Request{\n\t\t\tType:      msg.Type,\n\t\t\tWantReply: msg.WantReply,\n\t\t\tPayload:   msg.Data,\n\t\t\tmux:       m,\n\t\t}\n\tcase *globalRequestSuccessMsg, *globalRequestFailureMsg:\n\t\tm.globalResponses <- msg\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"not a global message %#v\", msg))\n\t}\n\n\treturn nil\n}\n\n// handleChannelOpen schedules a channel to be Accept()ed.\nfunc (m *mux) handleChannelOpen(packet []byte) error {\n\tvar msg channelOpenMsg\n\tif err := Unmarshal(packet, &msg); err != nil {\n\t\treturn err\n\t}\n\n\tif msg.MaxPacketSize < minPacketLength || msg.MaxPacketSize > 1<<31 {\n\t\tfailMsg := channelOpenFailureMsg{\n\t\t\tPeersID:  msg.PeersID,\n\t\t\tReason:   ConnectionFailed,\n\t\t\tMessage:  \"invalid request\",\n\t\t\tLanguage: \"en_US.UTF-8\",\n\t\t}\n\t\treturn m.sendMessage(failMsg)\n\t}\n\n\tc := m.newChannel(msg.ChanType, channelInbound, msg.TypeSpecificData)\n\tc.remoteId = msg.PeersID\n\tc.maxRemotePayload = msg.MaxPacketSize\n\tc.remoteWin.add(msg.PeersWindow)\n\tm.incomingChannels <- c\n\treturn nil\n}\n\nfunc (m *mux) OpenChannel(chanType string, extra []byte) (Channel, <-chan *Request, error) {\n\tch, err := m.openChannel(chanType, extra)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\treturn ch, ch.incomingRequests, nil\n}\n\nfunc (m *mux) openChannel(chanType string, extra []byte) (*channel, error) {\n\tch := m.newChannel(chanType, channelOutbound, extra)\n\n\tch.maxIncomingPayload = channelMaxPacket\n\n\topen := channelOpenMsg{\n\t\tChanType:         chanType,\n\t\tPeersWindow:      ch.myWindow,\n\t\tMaxPacketSize:    ch.maxIncomingPayload,\n\t\tTypeSpecificData: extra,\n\t\tPeersID:          ch.localId,\n\t}\n\tif err := m.sendMessage(open); err != nil {\n\t\treturn nil, err\n\t}\n\n\tswitch msg := (<-ch.msg).(type) {\n\tcase *channelOpenConfirmMsg:\n\t\treturn ch, nil\n\tcase *channelOpenFailureMsg:\n\t\treturn nil, &OpenChannelError{msg.Reason, msg.Message}\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"ssh: unexpected packet in response to channel open: %T\", msg)\n\t}\n}\n\nfunc (m *mux) handleUnknownChannelPacket(id uint32, packet []byte) error {\n\tmsg, err := decode(packet)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tswitch msg := msg.(type) {\n\t// RFC 4254 section 5.4 says unrecognized channel requests should\n\t// receive a failure response.\n\tcase *channelRequestMsg:\n\t\tif msg.WantReply {\n\t\t\treturn m.sendMessage(channelRequestFailureMsg{\n\t\t\t\tPeersID: msg.PeersID,\n\t\t\t})\n\t\t}\n\t\treturn nil\n\tdefault:\n\t\treturn fmt.Errorf(\"ssh: invalid channel %d\", id)\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/crypto/ssh/server.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage ssh\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"net\"\n\t\"slices\"\n\t\"strings\"\n)\n\n// The Permissions type holds fine-grained permissions that are\n// specific to a user or a specific authentication method for a user.\n// The Permissions value for a successful authentication attempt is\n// available in ServerConn, so it can be used to pass information from\n// the user-authentication phase to the application layer.\ntype Permissions struct {\n\t// CriticalOptions indicate restrictions to the default\n\t// permissions, and are typically used in conjunction with\n\t// user certificates. The standard for SSH certificates\n\t// defines \"force-command\" (only allow the given command to\n\t// execute) and \"source-address\" (only allow connections from\n\t// the given address). The SSH package currently only enforces\n\t// the \"source-address\" critical option. It is up to server\n\t// implementations to enforce other critical options, such as\n\t// \"force-command\", by checking them after the SSH handshake\n\t// is successful. In general, SSH servers should reject\n\t// connections that specify critical options that are unknown\n\t// or not supported.\n\tCriticalOptions map[string]string\n\n\t// Extensions are extra functionality that the server may\n\t// offer on authenticated connections. Lack of support for an\n\t// extension does not preclude authenticating a user. Common\n\t// extensions are \"permit-agent-forwarding\",\n\t// \"permit-X11-forwarding\". The Go SSH library currently does\n\t// not act on any extension, and it is up to server\n\t// implementations to honor them. Extensions can be used to\n\t// pass data from the authentication callbacks to the server\n\t// application layer.\n\tExtensions map[string]string\n\n\t// ExtraData allows to store user defined data.\n\tExtraData map[any]any\n}\n\ntype GSSAPIWithMICConfig struct {\n\t// AllowLogin, must be set, is called when gssapi-with-mic\n\t// authentication is selected (RFC 4462 section 3). The srcName is from the\n\t// results of the GSS-API authentication. The format is username@DOMAIN.\n\t// GSSAPI just guarantees to the server who the user is, but not if they can log in, and with what permissions.\n\t// This callback is called after the user identity is established with GSSAPI to decide if the user can login with\n\t// which permissions. If the user is allowed to login, it should return a nil error.\n\tAllowLogin func(conn ConnMetadata, srcName string) (*Permissions, error)\n\n\t// Server must be set. It's the implementation\n\t// of the GSSAPIServer interface. See GSSAPIServer interface for details.\n\tServer GSSAPIServer\n}\n\n// SendAuthBanner implements [ServerPreAuthConn].\nfunc (s *connection) SendAuthBanner(msg string) error {\n\treturn s.transport.writePacket(Marshal(&userAuthBannerMsg{\n\t\tMessage: msg,\n\t}))\n}\n\nfunc (*connection) unexportedMethodForFutureProofing() {}\n\n// ServerPreAuthConn is the interface available on an incoming server\n// connection before authentication has completed.\ntype ServerPreAuthConn interface {\n\tunexportedMethodForFutureProofing() // permits growing ServerPreAuthConn safely later, ala testing.TB\n\n\tConnMetadata\n\n\t// SendAuthBanner sends a banner message to the client.\n\t// It returns an error once the authentication phase has ended.\n\tSendAuthBanner(string) error\n}\n\n// ServerConfig holds server specific configuration data.\ntype ServerConfig struct {\n\t// Config contains configuration shared between client and server.\n\tConfig\n\n\t// PublicKeyAuthAlgorithms specifies the supported client public key\n\t// authentication algorithms. Note that this should not include certificate\n\t// types since those use the underlying algorithm. This list is sent to the\n\t// client if it supports the server-sig-algs extension. Order is irrelevant.\n\t// If unspecified then a default set of algorithms is used.\n\tPublicKeyAuthAlgorithms []string\n\n\thostKeys []Signer\n\n\t// NoClientAuth is true if clients are allowed to connect without\n\t// authenticating.\n\t// To determine NoClientAuth at runtime, set NoClientAuth to true\n\t// and the optional NoClientAuthCallback to a non-nil value.\n\tNoClientAuth bool\n\n\t// NoClientAuthCallback, if non-nil, is called when a user\n\t// attempts to authenticate with auth method \"none\".\n\t// NoClientAuth must also be set to true for this be used, or\n\t// this func is unused.\n\tNoClientAuthCallback func(ConnMetadata) (*Permissions, error)\n\n\t// MaxAuthTries specifies the maximum number of authentication attempts\n\t// permitted per connection. If set to a negative number, the number of\n\t// attempts are unlimited. If set to zero, the number of attempts are limited\n\t// to 6.\n\tMaxAuthTries int\n\n\t// PasswordCallback, if non-nil, is called when a user\n\t// attempts to authenticate using a password.\n\tPasswordCallback func(conn ConnMetadata, password []byte) (*Permissions, error)\n\n\t// PublicKeyCallback, if non-nil, is called when a client\n\t// offers a public key for authentication. It must return a nil error\n\t// if the given public key can be used to authenticate the\n\t// given user. For example, see CertChecker.Authenticate. A\n\t// call to this function does not guarantee that the key\n\t// offered is in fact used to authenticate. To record any data\n\t// depending on the public key, store it inside a\n\t// Permissions.Extensions entry.\n\tPublicKeyCallback func(conn ConnMetadata, key PublicKey) (*Permissions, error)\n\n\t// VerifiedPublicKeyCallback, if non-nil, is called after a client\n\t// successfully confirms having control over a key that was previously\n\t// approved by PublicKeyCallback. The permissions object passed to the\n\t// callback is the one returned by PublicKeyCallback for the given public\n\t// key and its ownership is transferred to the callback. The returned\n\t// Permissions object can be the same object, optionally modified, or a\n\t// completely new object. If VerifiedPublicKeyCallback is non-nil,\n\t// PublicKeyCallback is not allowed to return a PartialSuccessError, which\n\t// can instead be returned by VerifiedPublicKeyCallback.\n\t//\n\t// VerifiedPublicKeyCallback does not affect which authentication methods\n\t// are included in the list of methods that can be attempted by the client.\n\tVerifiedPublicKeyCallback func(conn ConnMetadata, key PublicKey, permissions *Permissions,\n\t\tsignatureAlgorithm string) (*Permissions, error)\n\n\t// KeyboardInteractiveCallback, if non-nil, is called when\n\t// keyboard-interactive authentication is selected (RFC\n\t// 4256). The client object's Challenge function should be\n\t// used to query the user. The callback may offer multiple\n\t// Challenge rounds. To avoid information leaks, the client\n\t// should be presented a challenge even if the user is\n\t// unknown.\n\tKeyboardInteractiveCallback func(conn ConnMetadata, client KeyboardInteractiveChallenge) (*Permissions, error)\n\n\t// AuthLogCallback, if non-nil, is called to log all authentication\n\t// attempts.\n\tAuthLogCallback func(conn ConnMetadata, method string, err error)\n\n\t// PreAuthConnCallback, if non-nil, is called upon receiving a new connection\n\t// before any authentication has started. The provided ServerPreAuthConn\n\t// can be used at any time before authentication is complete, including\n\t// after this callback has returned.\n\tPreAuthConnCallback func(ServerPreAuthConn)\n\n\t// ServerVersion is the version identification string to announce in\n\t// the public handshake.\n\t// If empty, a reasonable default is used.\n\t// Note that RFC 4253 section 4.2 requires that this string start with\n\t// \"SSH-2.0-\".\n\tServerVersion string\n\n\t// BannerCallback, if present, is called and the return string is sent to\n\t// the client after key exchange completed but before authentication.\n\tBannerCallback func(conn ConnMetadata) string\n\n\t// GSSAPIWithMICConfig includes gssapi server and callback, which if both non-nil, is used\n\t// when gssapi-with-mic authentication is selected (RFC 4462 section 3).\n\tGSSAPIWithMICConfig *GSSAPIWithMICConfig\n}\n\n// AddHostKey adds a private key as a host key. If an existing host\n// key exists with the same public key format, it is replaced. Each server\n// config must have at least one host key.\nfunc (s *ServerConfig) AddHostKey(key Signer) {\n\tfor i, k := range s.hostKeys {\n\t\tif k.PublicKey().Type() == key.PublicKey().Type() {\n\t\t\ts.hostKeys[i] = key\n\t\t\treturn\n\t\t}\n\t}\n\n\ts.hostKeys = append(s.hostKeys, key)\n}\n\n// cachedPubKey contains the results of querying whether a public key is\n// acceptable for a user. This is a FIFO cache.\ntype cachedPubKey struct {\n\tuser       string\n\tpubKeyData []byte\n\tresult     error\n\tperms      *Permissions\n}\n\n// maxCachedPubKeys is the number of cache entries we store.\n//\n// Due to consistent misuse of the PublicKeyCallback API, we have reduced this\n// to 1, such that the only key in the cache is the most recently seen one. This\n// forces the behavior that the last call to PublicKeyCallback will always be\n// with the key that is used for authentication.\nconst maxCachedPubKeys = 1\n\n// pubKeyCache caches tests for public keys.  Since SSH clients\n// will query whether a public key is acceptable before attempting to\n// authenticate with it, we end up with duplicate queries for public\n// key validity.  The cache only applies to a single ServerConn.\ntype pubKeyCache struct {\n\tkeys []cachedPubKey\n}\n\n// get returns the result for a given user/algo/key tuple.\nfunc (c *pubKeyCache) get(user string, pubKeyData []byte) (cachedPubKey, bool) {\n\tfor _, k := range c.keys {\n\t\tif k.user == user && bytes.Equal(k.pubKeyData, pubKeyData) {\n\t\t\treturn k, true\n\t\t}\n\t}\n\treturn cachedPubKey{}, false\n}\n\n// add adds the given tuple to the cache.\nfunc (c *pubKeyCache) add(candidate cachedPubKey) {\n\tif len(c.keys) >= maxCachedPubKeys {\n\t\tc.keys = c.keys[1:]\n\t}\n\tc.keys = append(c.keys, candidate)\n}\n\n// ServerConn is an authenticated SSH connection, as seen from the\n// server\ntype ServerConn struct {\n\tConn\n\n\t// If the succeeding authentication callback returned a\n\t// non-nil Permissions pointer, it is stored here.\n\tPermissions *Permissions\n}\n\n// NewServerConn starts a new SSH server with c as the underlying\n// transport.  It starts with a handshake and, if the handshake is\n// unsuccessful, it closes the connection and returns an error.  The\n// Request and NewChannel channels must be serviced, or the connection\n// will hang.\n//\n// The returned error may be of type *ServerAuthError for\n// authentication errors.\nfunc NewServerConn(c net.Conn, config *ServerConfig) (*ServerConn, <-chan NewChannel, <-chan *Request, error) {\n\tfullConf := *config\n\tfullConf.SetDefaults()\n\tif fullConf.MaxAuthTries == 0 {\n\t\tfullConf.MaxAuthTries = 6\n\t}\n\tif len(fullConf.PublicKeyAuthAlgorithms) == 0 {\n\t\tfullConf.PublicKeyAuthAlgorithms = defaultPubKeyAuthAlgos\n\t} else {\n\t\tfor _, algo := range fullConf.PublicKeyAuthAlgorithms {\n\t\t\tif !slices.Contains(SupportedAlgorithms().PublicKeyAuths, algo) && !slices.Contains(InsecureAlgorithms().PublicKeyAuths, algo) {\n\t\t\t\tc.Close()\n\t\t\t\treturn nil, nil, nil, fmt.Errorf(\"ssh: unsupported public key authentication algorithm %s\", algo)\n\t\t\t}\n\t\t}\n\t}\n\n\ts := &connection{\n\t\tsshConn: sshConn{conn: c},\n\t}\n\tperms, err := s.serverHandshake(&fullConf)\n\tif err != nil {\n\t\tc.Close()\n\t\treturn nil, nil, nil, err\n\t}\n\treturn &ServerConn{s, perms}, s.mux.incomingChannels, s.mux.incomingRequests, nil\n}\n\n// signAndMarshal signs the data with the appropriate algorithm,\n// and serializes the result in SSH wire format. algo is the negotiate\n// algorithm and may be a certificate type.\nfunc signAndMarshal(k AlgorithmSigner, rand io.Reader, data []byte, algo string) ([]byte, error) {\n\tsig, err := k.SignWithAlgorithm(rand, data, underlyingAlgo(algo))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn Marshal(sig), nil\n}\n\n// handshake performs key exchange and user authentication.\nfunc (s *connection) serverHandshake(config *ServerConfig) (*Permissions, error) {\n\tif len(config.hostKeys) == 0 {\n\t\treturn nil, errors.New(\"ssh: server has no host keys\")\n\t}\n\n\tif !config.NoClientAuth && config.PasswordCallback == nil && config.PublicKeyCallback == nil &&\n\t\tconfig.KeyboardInteractiveCallback == nil && (config.GSSAPIWithMICConfig == nil ||\n\t\tconfig.GSSAPIWithMICConfig.AllowLogin == nil || config.GSSAPIWithMICConfig.Server == nil) {\n\t\treturn nil, errors.New(\"ssh: no authentication methods configured but NoClientAuth is also false\")\n\t}\n\n\tif config.ServerVersion != \"\" {\n\t\ts.serverVersion = []byte(config.ServerVersion)\n\t} else {\n\t\ts.serverVersion = []byte(packageVersion)\n\t}\n\tvar err error\n\ts.clientVersion, err = exchangeVersions(s.sshConn.conn, s.serverVersion)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\ttr := newTransport(s.sshConn.conn, config.Rand, false /* not client */)\n\ts.transport = newServerTransport(tr, s.clientVersion, s.serverVersion, config)\n\n\tif err := s.transport.waitSession(); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// We just did the key change, so the session ID is established.\n\ts.sessionID = s.transport.getSessionID()\n\ts.algorithms = s.transport.getAlgorithms()\n\n\tvar packet []byte\n\tif packet, err = s.transport.readPacket(); err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar serviceRequest serviceRequestMsg\n\tif err = Unmarshal(packet, &serviceRequest); err != nil {\n\t\treturn nil, err\n\t}\n\tif serviceRequest.Service != serviceUserAuth {\n\t\treturn nil, errors.New(\"ssh: requested service '\" + serviceRequest.Service + \"' before authenticating\")\n\t}\n\tserviceAccept := serviceAcceptMsg{\n\t\tService: serviceUserAuth,\n\t}\n\tif err := s.transport.writePacket(Marshal(&serviceAccept)); err != nil {\n\t\treturn nil, err\n\t}\n\n\tperms, err := s.serverAuthenticate(config)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\ts.mux = newMux(s.transport)\n\treturn perms, err\n}\n\nfunc checkSourceAddress(addr net.Addr, sourceAddrs string) error {\n\tif addr == nil {\n\t\treturn errors.New(\"ssh: no address known for client, but source-address match required\")\n\t}\n\n\ttcpAddr, ok := addr.(*net.TCPAddr)\n\tif !ok {\n\t\treturn fmt.Errorf(\"ssh: remote address %v is not an TCP address when checking source-address match\", addr)\n\t}\n\n\tfor _, sourceAddr := range strings.Split(sourceAddrs, \",\") {\n\t\tif allowedIP := net.ParseIP(sourceAddr); allowedIP != nil {\n\t\t\tif allowedIP.Equal(tcpAddr.IP) {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t} else {\n\t\t\t_, ipNet, err := net.ParseCIDR(sourceAddr)\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"ssh: error parsing source-address restriction %q: %v\", sourceAddr, err)\n\t\t\t}\n\n\t\t\tif ipNet.Contains(tcpAddr.IP) {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fmt.Errorf(\"ssh: remote address %v is not allowed because of source-address restriction\", addr)\n}\n\nfunc gssExchangeToken(gssapiConfig *GSSAPIWithMICConfig, token []byte, s *connection,\n\tsessionID []byte, userAuthReq userAuthRequestMsg) (authErr error, perms *Permissions, err error) {\n\tgssAPIServer := gssapiConfig.Server\n\tdefer gssAPIServer.DeleteSecContext()\n\tvar srcName string\n\tfor {\n\t\tvar (\n\t\t\toutToken     []byte\n\t\t\tneedContinue bool\n\t\t)\n\t\toutToken, srcName, needContinue, err = gssAPIServer.AcceptSecContext(token)\n\t\tif err != nil {\n\t\t\treturn err, nil, nil\n\t\t}\n\t\tif len(outToken) != 0 {\n\t\t\tif err := s.transport.writePacket(Marshal(&userAuthGSSAPIToken{\n\t\t\t\tToken: outToken,\n\t\t\t})); err != nil {\n\t\t\t\treturn nil, nil, err\n\t\t\t}\n\t\t}\n\t\tif !needContinue {\n\t\t\tbreak\n\t\t}\n\t\tpacket, err := s.transport.readPacket()\n\t\tif err != nil {\n\t\t\treturn nil, nil, err\n\t\t}\n\t\tuserAuthGSSAPITokenReq := &userAuthGSSAPIToken{}\n\t\tif err := Unmarshal(packet, userAuthGSSAPITokenReq); err != nil {\n\t\t\treturn nil, nil, err\n\t\t}\n\t\ttoken = userAuthGSSAPITokenReq.Token\n\t}\n\tpacket, err := s.transport.readPacket()\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tuserAuthGSSAPIMICReq := &userAuthGSSAPIMIC{}\n\tif err := Unmarshal(packet, userAuthGSSAPIMICReq); err != nil {\n\t\treturn nil, nil, err\n\t}\n\tmic := buildMIC(string(sessionID), userAuthReq.User, userAuthReq.Service, userAuthReq.Method)\n\tif err := gssAPIServer.VerifyMIC(mic, userAuthGSSAPIMICReq.MIC); err != nil {\n\t\treturn err, nil, nil\n\t}\n\tperms, authErr = gssapiConfig.AllowLogin(s, srcName)\n\treturn authErr, perms, nil\n}\n\n// isAlgoCompatible checks if the signature format is compatible with the\n// selected algorithm taking into account edge cases that occur with old\n// clients.\nfunc isAlgoCompatible(algo, sigFormat string) bool {\n\t// Compatibility for old clients.\n\t//\n\t// For certificate authentication with OpenSSH 7.2-7.7 signature format can\n\t// be rsa-sha2-256 or rsa-sha2-512 for the algorithm\n\t// ssh-rsa-cert-v01@openssh.com.\n\t//\n\t// With gpg-agent < 2.2.6 the algorithm can be rsa-sha2-256 or rsa-sha2-512\n\t// for signature format ssh-rsa.\n\tif isRSA(algo) && isRSA(sigFormat) {\n\t\treturn true\n\t}\n\t// Standard case: the underlying algorithm must match the signature format.\n\treturn underlyingAlgo(algo) == sigFormat\n}\n\n// ServerAuthError represents server authentication errors and is\n// sometimes returned by NewServerConn. It appends any authentication\n// errors that may occur, and is returned if all of the authentication\n// methods provided by the user failed to authenticate.\ntype ServerAuthError struct {\n\t// Errors contains authentication errors returned by the authentication\n\t// callback methods. The first entry is typically ErrNoAuth.\n\tErrors []error\n}\n\nfunc (l ServerAuthError) Error() string {\n\tvar errs []string\n\tfor _, err := range l.Errors {\n\t\terrs = append(errs, err.Error())\n\t}\n\treturn \"[\" + strings.Join(errs, \", \") + \"]\"\n}\n\n// ServerAuthCallbacks defines server-side authentication callbacks.\ntype ServerAuthCallbacks struct {\n\t// PasswordCallback behaves like [ServerConfig.PasswordCallback].\n\tPasswordCallback func(conn ConnMetadata, password []byte) (*Permissions, error)\n\n\t// PublicKeyCallback behaves like [ServerConfig.PublicKeyCallback].\n\tPublicKeyCallback func(conn ConnMetadata, key PublicKey) (*Permissions, error)\n\n\t// KeyboardInteractiveCallback behaves like [ServerConfig.KeyboardInteractiveCallback].\n\tKeyboardInteractiveCallback func(conn ConnMetadata, client KeyboardInteractiveChallenge) (*Permissions, error)\n\n\t// GSSAPIWithMICConfig behaves like [ServerConfig.GSSAPIWithMICConfig].\n\tGSSAPIWithMICConfig *GSSAPIWithMICConfig\n}\n\n// PartialSuccessError can be returned by any of the [ServerConfig]\n// authentication callbacks to indicate to the client that authentication has\n// partially succeeded, but further steps are required.\ntype PartialSuccessError struct {\n\t// Next defines the authentication callbacks to apply to further steps. The\n\t// available methods communicated to the client are based on the non-nil\n\t// ServerAuthCallbacks fields.\n\tNext ServerAuthCallbacks\n}\n\nfunc (p *PartialSuccessError) Error() string {\n\treturn \"ssh: authenticated with partial success\"\n}\n\n// ErrNoAuth is the error value returned if no\n// authentication method has been passed yet. This happens as a normal\n// part of the authentication loop, since the client first tries\n// 'none' authentication to discover available methods.\n// It is returned in ServerAuthError.Errors from NewServerConn.\nvar ErrNoAuth = errors.New(\"ssh: no auth passed yet\")\n\n// BannerError is an error that can be returned by authentication handlers in\n// ServerConfig to send a banner message to the client.\ntype BannerError struct {\n\tErr     error\n\tMessage string\n}\n\nfunc (b *BannerError) Unwrap() error {\n\treturn b.Err\n}\n\nfunc (b *BannerError) Error() string {\n\tif b.Err == nil {\n\t\treturn b.Message\n\t}\n\treturn b.Err.Error()\n}\n\nfunc (s *connection) serverAuthenticate(config *ServerConfig) (*Permissions, error) {\n\tif config.PreAuthConnCallback != nil {\n\t\tconfig.PreAuthConnCallback(s)\n\t}\n\n\tsessionID := s.transport.getSessionID()\n\tvar cache pubKeyCache\n\tvar perms *Permissions\n\n\tauthFailures := 0\n\tnoneAuthCount := 0\n\tvar authErrs []error\n\tvar calledBannerCallback bool\n\tpartialSuccessReturned := false\n\t// Set the initial authentication callbacks from the config. They can be\n\t// changed if a PartialSuccessError is returned.\n\tauthConfig := ServerAuthCallbacks{\n\t\tPasswordCallback:            config.PasswordCallback,\n\t\tPublicKeyCallback:           config.PublicKeyCallback,\n\t\tKeyboardInteractiveCallback: config.KeyboardInteractiveCallback,\n\t\tGSSAPIWithMICConfig:         config.GSSAPIWithMICConfig,\n\t}\n\nuserAuthLoop:\n\tfor {\n\t\tif authFailures >= config.MaxAuthTries && config.MaxAuthTries > 0 {\n\t\t\tdiscMsg := &disconnectMsg{\n\t\t\t\tReason:  2,\n\t\t\t\tMessage: \"too many authentication failures\",\n\t\t\t}\n\n\t\t\tif err := s.transport.writePacket(Marshal(discMsg)); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tauthErrs = append(authErrs, discMsg)\n\t\t\treturn nil, &ServerAuthError{Errors: authErrs}\n\t\t}\n\n\t\tvar userAuthReq userAuthRequestMsg\n\t\tif packet, err := s.transport.readPacket(); err != nil {\n\t\t\tif err == io.EOF {\n\t\t\t\treturn nil, &ServerAuthError{Errors: authErrs}\n\t\t\t}\n\t\t\treturn nil, err\n\t\t} else if err = Unmarshal(packet, &userAuthReq); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tif userAuthReq.Service != serviceSSH {\n\t\t\treturn nil, errors.New(\"ssh: client attempted to negotiate for unknown service: \" + userAuthReq.Service)\n\t\t}\n\n\t\tif s.user != userAuthReq.User && partialSuccessReturned {\n\t\t\treturn nil, fmt.Errorf(\"ssh: client changed the user after a partial success authentication, previous user %q, current user %q\",\n\t\t\t\ts.user, userAuthReq.User)\n\t\t}\n\n\t\ts.user = userAuthReq.User\n\n\t\tif !calledBannerCallback && config.BannerCallback != nil {\n\t\t\tcalledBannerCallback = true\n\t\t\tif msg := config.BannerCallback(s); msg != \"\" {\n\t\t\t\tif err := s.SendAuthBanner(msg); err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tperms = nil\n\t\tauthErr := ErrNoAuth\n\n\t\tswitch userAuthReq.Method {\n\t\tcase \"none\":\n\t\t\tnoneAuthCount++\n\t\t\t// We don't allow none authentication after a partial success\n\t\t\t// response.\n\t\t\tif config.NoClientAuth && !partialSuccessReturned {\n\t\t\t\tif config.NoClientAuthCallback != nil {\n\t\t\t\t\tperms, authErr = config.NoClientAuthCallback(s)\n\t\t\t\t} else {\n\t\t\t\t\tauthErr = nil\n\t\t\t\t}\n\t\t\t}\n\t\tcase \"password\":\n\t\t\tif authConfig.PasswordCallback == nil {\n\t\t\t\tauthErr = errors.New(\"ssh: password auth not configured\")\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tpayload := userAuthReq.Payload\n\t\t\tif len(payload) < 1 || payload[0] != 0 {\n\t\t\t\treturn nil, parseError(msgUserAuthRequest)\n\t\t\t}\n\t\t\tpayload = payload[1:]\n\t\t\tpassword, payload, ok := parseString(payload)\n\t\t\tif !ok || len(payload) > 0 {\n\t\t\t\treturn nil, parseError(msgUserAuthRequest)\n\t\t\t}\n\n\t\t\tperms, authErr = authConfig.PasswordCallback(s, password)\n\t\tcase \"keyboard-interactive\":\n\t\t\tif authConfig.KeyboardInteractiveCallback == nil {\n\t\t\t\tauthErr = errors.New(\"ssh: keyboard-interactive auth not configured\")\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tprompter := &sshClientKeyboardInteractive{s}\n\t\t\tperms, authErr = authConfig.KeyboardInteractiveCallback(s, prompter.Challenge)\n\t\tcase \"publickey\":\n\t\t\tif authConfig.PublicKeyCallback == nil {\n\t\t\t\tauthErr = errors.New(\"ssh: publickey auth not configured\")\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tpayload := userAuthReq.Payload\n\t\t\tif len(payload) < 1 {\n\t\t\t\treturn nil, parseError(msgUserAuthRequest)\n\t\t\t}\n\t\t\tisQuery := payload[0] == 0\n\t\t\tpayload = payload[1:]\n\t\t\talgoBytes, payload, ok := parseString(payload)\n\t\t\tif !ok {\n\t\t\t\treturn nil, parseError(msgUserAuthRequest)\n\t\t\t}\n\t\t\talgo := string(algoBytes)\n\t\t\tif !slices.Contains(config.PublicKeyAuthAlgorithms, underlyingAlgo(algo)) {\n\t\t\t\tauthErr = fmt.Errorf(\"ssh: algorithm %q not accepted\", algo)\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tpubKeyData, payload, ok := parseString(payload)\n\t\t\tif !ok {\n\t\t\t\treturn nil, parseError(msgUserAuthRequest)\n\t\t\t}\n\n\t\t\tpubKey, err := ParsePublicKey(pubKeyData)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\n\t\t\tcandidate, ok := cache.get(s.user, pubKeyData)\n\t\t\tif !ok {\n\t\t\t\tcandidate.user = s.user\n\t\t\t\tcandidate.pubKeyData = pubKeyData\n\t\t\t\tcandidate.perms, candidate.result = authConfig.PublicKeyCallback(s, pubKey)\n\t\t\t\t_, isPartialSuccessError := candidate.result.(*PartialSuccessError)\n\t\t\t\tif isPartialSuccessError && config.VerifiedPublicKeyCallback != nil {\n\t\t\t\t\treturn nil, errors.New(\"ssh: invalid library usage: PublicKeyCallback must not return partial success when VerifiedPublicKeyCallback is defined\")\n\t\t\t\t}\n\n\t\t\t\tif (candidate.result == nil || isPartialSuccessError) &&\n\t\t\t\t\tcandidate.perms != nil &&\n\t\t\t\t\tcandidate.perms.CriticalOptions != nil &&\n\t\t\t\t\tcandidate.perms.CriticalOptions[sourceAddressCriticalOption] != \"\" {\n\t\t\t\t\tif err := checkSourceAddress(\n\t\t\t\t\t\ts.RemoteAddr(),\n\t\t\t\t\t\tcandidate.perms.CriticalOptions[sourceAddressCriticalOption]); err != nil {\n\t\t\t\t\t\tcandidate.result = err\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcache.add(candidate)\n\t\t\t}\n\n\t\t\tif isQuery {\n\t\t\t\t// The client can query if the given public key\n\t\t\t\t// would be okay.\n\n\t\t\t\tif len(payload) > 0 {\n\t\t\t\t\treturn nil, parseError(msgUserAuthRequest)\n\t\t\t\t}\n\t\t\t\t_, isPartialSuccessError := candidate.result.(*PartialSuccessError)\n\t\t\t\tif candidate.result == nil || isPartialSuccessError {\n\t\t\t\t\tokMsg := userAuthPubKeyOkMsg{\n\t\t\t\t\t\tAlgo:   algo,\n\t\t\t\t\t\tPubKey: pubKeyData,\n\t\t\t\t\t}\n\t\t\t\t\tif err = s.transport.writePacket(Marshal(&okMsg)); err != nil {\n\t\t\t\t\t\treturn nil, err\n\t\t\t\t\t}\n\t\t\t\t\tcontinue userAuthLoop\n\t\t\t\t}\n\t\t\t\tauthErr = candidate.result\n\t\t\t} else {\n\t\t\t\tsig, payload, ok := parseSignature(payload)\n\t\t\t\tif !ok || len(payload) > 0 {\n\t\t\t\t\treturn nil, parseError(msgUserAuthRequest)\n\t\t\t\t}\n\t\t\t\t// Ensure the declared public key algo is compatible with the\n\t\t\t\t// decoded one. This check will ensure we don't accept e.g.\n\t\t\t\t// ssh-rsa-cert-v01@openssh.com algorithm with ssh-rsa public\n\t\t\t\t// key type. The algorithm and public key type must be\n\t\t\t\t// consistent: both must be certificate algorithms, or neither.\n\t\t\t\tif !slices.Contains(algorithmsForKeyFormat(pubKey.Type()), algo) {\n\t\t\t\t\tauthErr = fmt.Errorf(\"ssh: public key type %q not compatible with selected algorithm %q\",\n\t\t\t\t\t\tpubKey.Type(), algo)\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\t// Ensure the public key algo and signature algo\n\t\t\t\t// are supported.  Compare the private key\n\t\t\t\t// algorithm name that corresponds to algo with\n\t\t\t\t// sig.Format.  This is usually the same, but\n\t\t\t\t// for certs, the names differ.\n\t\t\t\tif !slices.Contains(config.PublicKeyAuthAlgorithms, sig.Format) {\n\t\t\t\t\tauthErr = fmt.Errorf(\"ssh: algorithm %q not accepted\", sig.Format)\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tif !isAlgoCompatible(algo, sig.Format) {\n\t\t\t\t\tauthErr = fmt.Errorf(\"ssh: signature %q not compatible with selected algorithm %q\", sig.Format, algo)\n\t\t\t\t\tbreak\n\t\t\t\t}\n\n\t\t\t\tsignedData := buildDataSignedForAuth(sessionID, userAuthReq, algo, pubKeyData)\n\n\t\t\t\tif err := pubKey.Verify(signedData, sig); err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\n\t\t\t\tauthErr = candidate.result\n\t\t\t\tperms = candidate.perms\n\t\t\t\tif authErr == nil && config.VerifiedPublicKeyCallback != nil {\n\t\t\t\t\t// Only call VerifiedPublicKeyCallback after the key has been accepted\n\t\t\t\t\t// and successfully verified. If authErr is non-nil, the key is not\n\t\t\t\t\t// considered verified and the callback must not run.\n\t\t\t\t\tperms, authErr = config.VerifiedPublicKeyCallback(s, pubKey, perms, algo)\n\t\t\t\t}\n\t\t\t}\n\t\tcase \"gssapi-with-mic\":\n\t\t\tif authConfig.GSSAPIWithMICConfig == nil {\n\t\t\t\tauthErr = errors.New(\"ssh: gssapi-with-mic auth not configured\")\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tgssapiConfig := authConfig.GSSAPIWithMICConfig\n\t\t\tuserAuthRequestGSSAPI, err := parseGSSAPIPayload(userAuthReq.Payload)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, parseError(msgUserAuthRequest)\n\t\t\t}\n\t\t\t// OpenSSH supports Kerberos V5 mechanism only for GSS-API authentication.\n\t\t\tif userAuthRequestGSSAPI.N == 0 {\n\t\t\t\tauthErr = fmt.Errorf(\"ssh: Mechanism negotiation is not supported\")\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar i uint32\n\t\t\tpresent := false\n\t\t\tfor i = 0; i < userAuthRequestGSSAPI.N; i++ {\n\t\t\t\tif userAuthRequestGSSAPI.OIDS[i].Equal(krb5Mesh) {\n\t\t\t\t\tpresent = true\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !present {\n\t\t\t\tauthErr = fmt.Errorf(\"ssh: GSSAPI authentication must use the Kerberos V5 mechanism\")\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// Initial server response, see RFC 4462 section 3.3.\n\t\t\tif err := s.transport.writePacket(Marshal(&userAuthGSSAPIResponse{\n\t\t\t\tSupportMech: krb5OID,\n\t\t\t})); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\t// Exchange token, see RFC 4462 section 3.4.\n\t\t\tpacket, err := s.transport.readPacket()\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tuserAuthGSSAPITokenReq := &userAuthGSSAPIToken{}\n\t\t\tif err := Unmarshal(packet, userAuthGSSAPITokenReq); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tauthErr, perms, err = gssExchangeToken(gssapiConfig, userAuthGSSAPITokenReq.Token, s, sessionID,\n\t\t\t\tuserAuthReq)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\tdefault:\n\t\t\tauthErr = fmt.Errorf(\"ssh: unknown method %q\", userAuthReq.Method)\n\t\t}\n\n\t\tauthErrs = append(authErrs, authErr)\n\n\t\tif config.AuthLogCallback != nil {\n\t\t\tconfig.AuthLogCallback(s, userAuthReq.Method, authErr)\n\t\t}\n\n\t\tvar bannerErr *BannerError\n\t\tif errors.As(authErr, &bannerErr) {\n\t\t\tif bannerErr.Message != \"\" {\n\t\t\t\tif err := s.SendAuthBanner(bannerErr.Message); err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif authErr == nil {\n\t\t\tbreak userAuthLoop\n\t\t}\n\n\t\tvar failureMsg userAuthFailureMsg\n\n\t\tif partialSuccess, ok := authErr.(*PartialSuccessError); ok {\n\t\t\t// After a partial success error we don't allow changing the user\n\t\t\t// name and execute the NoClientAuthCallback.\n\t\t\tpartialSuccessReturned = true\n\n\t\t\t// In case a partial success is returned, the server may send\n\t\t\t// a new set of authentication methods.\n\t\t\tauthConfig = partialSuccess.Next\n\n\t\t\t// Reset pubkey cache, as the new PublicKeyCallback might\n\t\t\t// accept a different set of public keys.\n\t\t\tcache = pubKeyCache{}\n\n\t\t\t// Send back a partial success message to the user.\n\t\t\tfailureMsg.PartialSuccess = true\n\t\t} else {\n\t\t\t// Allow initial attempt of 'none' without penalty.\n\t\t\tif authFailures > 0 || userAuthReq.Method != \"none\" || noneAuthCount != 1 {\n\t\t\t\tauthFailures++\n\t\t\t}\n\t\t\tif config.MaxAuthTries > 0 && authFailures >= config.MaxAuthTries {\n\t\t\t\t// If we have hit the max attempts, don't bother sending the\n\t\t\t\t// final SSH_MSG_USERAUTH_FAILURE message, since there are\n\t\t\t\t// no more authentication methods which can be attempted,\n\t\t\t\t// and this message may cause the client to re-attempt\n\t\t\t\t// authentication while we send the disconnect message.\n\t\t\t\t// Continue, and trigger the disconnect at the start of\n\t\t\t\t// the loop.\n\t\t\t\t//\n\t\t\t\t// The SSH specification is somewhat confusing about this,\n\t\t\t\t// RFC 4252 Section 5.1 requires each authentication failure\n\t\t\t\t// be responded to with a respective SSH_MSG_USERAUTH_FAILURE\n\t\t\t\t// message, but Section 4 says the server should disconnect\n\t\t\t\t// after some number of attempts, but it isn't explicit which\n\t\t\t\t// message should take precedence (i.e. should there be a failure\n\t\t\t\t// message than a disconnect message, or if we are going to\n\t\t\t\t// disconnect, should we only send that message.)\n\t\t\t\t//\n\t\t\t\t// Either way, OpenSSH disconnects immediately after the last\n\t\t\t\t// failed authentication attempt, and given they are typically\n\t\t\t\t// considered the golden implementation it seems reasonable\n\t\t\t\t// to match that behavior.\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\n\t\tif authConfig.PasswordCallback != nil {\n\t\t\tfailureMsg.Methods = append(failureMsg.Methods, \"password\")\n\t\t}\n\t\tif authConfig.PublicKeyCallback != nil {\n\t\t\tfailureMsg.Methods = append(failureMsg.Methods, \"publickey\")\n\t\t}\n\t\tif authConfig.KeyboardInteractiveCallback != nil {\n\t\t\tfailureMsg.Methods = append(failureMsg.Methods, \"keyboard-interactive\")\n\t\t}\n\t\tif authConfig.GSSAPIWithMICConfig != nil && authConfig.GSSAPIWithMICConfig.Server != nil &&\n\t\t\tauthConfig.GSSAPIWithMICConfig.AllowLogin != nil {\n\t\t\tfailureMsg.Methods = append(failureMsg.Methods, \"gssapi-with-mic\")\n\t\t}\n\n\t\tif len(failureMsg.Methods) == 0 {\n\t\t\treturn nil, errors.New(\"ssh: no authentication methods available\")\n\t\t}\n\n\t\tif err := s.transport.writePacket(Marshal(&failureMsg)); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\tif err := s.transport.writePacket([]byte{msgUserAuthSuccess}); err != nil {\n\t\treturn nil, err\n\t}\n\treturn perms, nil\n}\n\n// sshClientKeyboardInteractive implements a ClientKeyboardInteractive by\n// asking the client on the other side of a ServerConn.\ntype sshClientKeyboardInteractive struct {\n\t*connection\n}\n\nfunc (c *sshClientKeyboardInteractive) Challenge(name, instruction string, questions []string, echos []bool) (answers []string, err error) {\n\tif len(questions) != len(echos) {\n\t\treturn nil, errors.New(\"ssh: echos and questions must have equal length\")\n\t}\n\n\tvar prompts []byte\n\tfor i := range questions {\n\t\tprompts = appendString(prompts, questions[i])\n\t\tprompts = appendBool(prompts, echos[i])\n\t}\n\n\tif err := c.transport.writePacket(Marshal(&userAuthInfoRequestMsg{\n\t\tName:        name,\n\t\tInstruction: instruction,\n\t\tNumPrompts:  uint32(len(questions)),\n\t\tPrompts:     prompts,\n\t})); err != nil {\n\t\treturn nil, err\n\t}\n\n\tpacket, err := c.transport.readPacket()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif packet[0] != msgUserAuthInfoResponse {\n\t\treturn nil, unexpectedMessageError(msgUserAuthInfoResponse, packet[0])\n\t}\n\tpacket = packet[1:]\n\n\tn, packet, ok := parseUint32(packet)\n\tif !ok || int(n) != len(questions) {\n\t\treturn nil, parseError(msgUserAuthInfoResponse)\n\t}\n\n\tfor i := uint32(0); i < n; i++ {\n\t\tans, rest, ok := parseString(packet)\n\t\tif !ok {\n\t\t\treturn nil, parseError(msgUserAuthInfoResponse)\n\t\t}\n\n\t\tanswers = append(answers, string(ans))\n\t\tpacket = rest\n\t}\n\tif len(packet) != 0 {\n\t\treturn nil, errors.New(\"ssh: junk at end of message\")\n\t}\n\n\treturn answers, nil\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/crypto/ssh/session.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage ssh\n\n// Session implements an interactive session described in\n// \"RFC 4254, section 6\".\n\nimport (\n\t\"bytes\"\n\t\"encoding/binary\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"sync\"\n)\n\ntype Signal string\n\n// POSIX signals as listed in RFC 4254 Section 6.10.\nconst (\n\tSIGABRT Signal = \"ABRT\"\n\tSIGALRM Signal = \"ALRM\"\n\tSIGFPE  Signal = \"FPE\"\n\tSIGHUP  Signal = \"HUP\"\n\tSIGILL  Signal = \"ILL\"\n\tSIGINT  Signal = \"INT\"\n\tSIGKILL Signal = \"KILL\"\n\tSIGPIPE Signal = \"PIPE\"\n\tSIGQUIT Signal = \"QUIT\"\n\tSIGSEGV Signal = \"SEGV\"\n\tSIGTERM Signal = \"TERM\"\n\tSIGUSR1 Signal = \"USR1\"\n\tSIGUSR2 Signal = \"USR2\"\n)\n\nvar signals = map[Signal]int{\n\tSIGABRT: 6,\n\tSIGALRM: 14,\n\tSIGFPE:  8,\n\tSIGHUP:  1,\n\tSIGILL:  4,\n\tSIGINT:  2,\n\tSIGKILL: 9,\n\tSIGPIPE: 13,\n\tSIGQUIT: 3,\n\tSIGSEGV: 11,\n\tSIGTERM: 15,\n}\n\ntype TerminalModes map[uint8]uint32\n\n// POSIX terminal mode flags as listed in RFC 4254 Section 8.\nconst (\n\ttty_OP_END    = 0\n\tVINTR         = 1\n\tVQUIT         = 2\n\tVERASE        = 3\n\tVKILL         = 4\n\tVEOF          = 5\n\tVEOL          = 6\n\tVEOL2         = 7\n\tVSTART        = 8\n\tVSTOP         = 9\n\tVSUSP         = 10\n\tVDSUSP        = 11\n\tVREPRINT      = 12\n\tVWERASE       = 13\n\tVLNEXT        = 14\n\tVFLUSH        = 15\n\tVSWTCH        = 16\n\tVSTATUS       = 17\n\tVDISCARD      = 18\n\tIGNPAR        = 30\n\tPARMRK        = 31\n\tINPCK         = 32\n\tISTRIP        = 33\n\tINLCR         = 34\n\tIGNCR         = 35\n\tICRNL         = 36\n\tIUCLC         = 37\n\tIXON          = 38\n\tIXANY         = 39\n\tIXOFF         = 40\n\tIMAXBEL       = 41\n\tIUTF8         = 42 // RFC 8160\n\tISIG          = 50\n\tICANON        = 51\n\tXCASE         = 52\n\tECHO          = 53\n\tECHOE         = 54\n\tECHOK         = 55\n\tECHONL        = 56\n\tNOFLSH        = 57\n\tTOSTOP        = 58\n\tIEXTEN        = 59\n\tECHOCTL       = 60\n\tECHOKE        = 61\n\tPENDIN        = 62\n\tOPOST         = 70\n\tOLCUC         = 71\n\tONLCR         = 72\n\tOCRNL         = 73\n\tONOCR         = 74\n\tONLRET        = 75\n\tCS7           = 90\n\tCS8           = 91\n\tPARENB        = 92\n\tPARODD        = 93\n\tTTY_OP_ISPEED = 128\n\tTTY_OP_OSPEED = 129\n)\n\n// A Session represents a connection to a remote command or shell.\ntype Session struct {\n\t// Stdin specifies the remote process's standard input.\n\t// If Stdin is nil, the remote process reads from an empty\n\t// bytes.Buffer.\n\tStdin io.Reader\n\n\t// Stdout and Stderr specify the remote process's standard\n\t// output and error.\n\t//\n\t// If either is nil, Run connects the corresponding file\n\t// descriptor to an instance of io.Discard. There is a\n\t// fixed amount of buffering that is shared for the two streams.\n\t// If either blocks it may eventually cause the remote\n\t// command to block.\n\tStdout io.Writer\n\tStderr io.Writer\n\n\tch        Channel // the channel backing this session\n\tstarted   bool    // true once Start, Run or Shell is invoked.\n\tcopyFuncs []func() error\n\terrors    chan error // one send per copyFunc\n\n\t// true if pipe method is active\n\tstdinpipe, stdoutpipe, stderrpipe bool\n\n\t// stdinPipeWriter is non-nil if StdinPipe has not been called\n\t// and Stdin was specified by the user; it is the write end of\n\t// a pipe connecting Session.Stdin to the stdin channel.\n\tstdinPipeWriter io.WriteCloser\n\n\texitStatus chan error\n}\n\n// SendRequest sends an out-of-band channel request on the SSH channel\n// underlying the session.\nfunc (s *Session) SendRequest(name string, wantReply bool, payload []byte) (bool, error) {\n\treturn s.ch.SendRequest(name, wantReply, payload)\n}\n\nfunc (s *Session) Close() error {\n\treturn s.ch.Close()\n}\n\n// RFC 4254 Section 6.4.\ntype setenvRequest struct {\n\tName  string\n\tValue string\n}\n\n// Setenv sets an environment variable that will be applied to any\n// command executed by Shell or Run.\nfunc (s *Session) Setenv(name, value string) error {\n\tmsg := setenvRequest{\n\t\tName:  name,\n\t\tValue: value,\n\t}\n\tok, err := s.ch.SendRequest(\"env\", true, Marshal(&msg))\n\tif err == nil && !ok {\n\t\terr = errors.New(\"ssh: setenv failed\")\n\t}\n\treturn err\n}\n\n// RFC 4254 Section 6.2.\ntype ptyRequestMsg struct {\n\tTerm     string\n\tColumns  uint32\n\tRows     uint32\n\tWidth    uint32\n\tHeight   uint32\n\tModelist string\n}\n\n// RequestPty requests the association of a pty with the session on the remote host.\nfunc (s *Session) RequestPty(term string, h, w int, termmodes TerminalModes) error {\n\tvar tm []byte\n\tfor k, v := range termmodes {\n\t\tkv := struct {\n\t\t\tKey byte\n\t\t\tVal uint32\n\t\t}{k, v}\n\n\t\ttm = append(tm, Marshal(&kv)...)\n\t}\n\ttm = append(tm, tty_OP_END)\n\treq := ptyRequestMsg{\n\t\tTerm:     term,\n\t\tColumns:  uint32(w),\n\t\tRows:     uint32(h),\n\t\tWidth:    uint32(w * 8),\n\t\tHeight:   uint32(h * 8),\n\t\tModelist: string(tm),\n\t}\n\tok, err := s.ch.SendRequest(\"pty-req\", true, Marshal(&req))\n\tif err == nil && !ok {\n\t\terr = errors.New(\"ssh: pty-req failed\")\n\t}\n\treturn err\n}\n\n// RFC 4254 Section 6.5.\ntype subsystemRequestMsg struct {\n\tSubsystem string\n}\n\n// RequestSubsystem requests the association of a subsystem with the session on the remote host.\n// A subsystem is a predefined command that runs in the background when the ssh session is initiated\nfunc (s *Session) RequestSubsystem(subsystem string) error {\n\tmsg := subsystemRequestMsg{\n\t\tSubsystem: subsystem,\n\t}\n\tok, err := s.ch.SendRequest(\"subsystem\", true, Marshal(&msg))\n\tif err == nil && !ok {\n\t\terr = errors.New(\"ssh: subsystem request failed\")\n\t}\n\treturn err\n}\n\n// RFC 4254 Section 6.7.\ntype ptyWindowChangeMsg struct {\n\tColumns uint32\n\tRows    uint32\n\tWidth   uint32\n\tHeight  uint32\n}\n\n// WindowChange informs the remote host about a terminal window dimension change to h rows and w columns.\nfunc (s *Session) WindowChange(h, w int) error {\n\treq := ptyWindowChangeMsg{\n\t\tColumns: uint32(w),\n\t\tRows:    uint32(h),\n\t\tWidth:   uint32(w * 8),\n\t\tHeight:  uint32(h * 8),\n\t}\n\t_, err := s.ch.SendRequest(\"window-change\", false, Marshal(&req))\n\treturn err\n}\n\n// RFC 4254 Section 6.9.\ntype signalMsg struct {\n\tSignal string\n}\n\n// Signal sends the given signal to the remote process.\n// sig is one of the SIG* constants.\nfunc (s *Session) Signal(sig Signal) error {\n\tmsg := signalMsg{\n\t\tSignal: string(sig),\n\t}\n\n\t_, err := s.ch.SendRequest(\"signal\", false, Marshal(&msg))\n\treturn err\n}\n\n// RFC 4254 Section 6.5.\ntype execMsg struct {\n\tCommand string\n}\n\n// Start runs cmd on the remote host. Typically, the remote\n// server passes cmd to the shell for interpretation.\n// A Session only accepts one call to Run, Start or Shell.\nfunc (s *Session) Start(cmd string) error {\n\tif s.started {\n\t\treturn errors.New(\"ssh: session already started\")\n\t}\n\treq := execMsg{\n\t\tCommand: cmd,\n\t}\n\n\tok, err := s.ch.SendRequest(\"exec\", true, Marshal(&req))\n\tif err == nil && !ok {\n\t\terr = fmt.Errorf(\"ssh: command %v failed\", cmd)\n\t}\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn s.start()\n}\n\n// Run runs cmd on the remote host. Typically, the remote\n// server passes cmd to the shell for interpretation.\n// A Session only accepts one call to Run, Start, Shell, Output,\n// or CombinedOutput.\n//\n// The returned error is nil if the command runs, has no problems\n// copying stdin, stdout, and stderr, and exits with a zero exit\n// status.\n//\n// If the remote server does not send an exit status, an error of type\n// *ExitMissingError is returned. If the command completes\n// unsuccessfully or is interrupted by a signal, the error is of type\n// *ExitError. Other error types may be returned for I/O problems.\nfunc (s *Session) Run(cmd string) error {\n\terr := s.Start(cmd)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn s.Wait()\n}\n\n// Output runs cmd on the remote host and returns its standard output.\nfunc (s *Session) Output(cmd string) ([]byte, error) {\n\tif s.Stdout != nil {\n\t\treturn nil, errors.New(\"ssh: Stdout already set\")\n\t}\n\tvar b bytes.Buffer\n\ts.Stdout = &b\n\terr := s.Run(cmd)\n\treturn b.Bytes(), err\n}\n\ntype singleWriter struct {\n\tb  bytes.Buffer\n\tmu sync.Mutex\n}\n\nfunc (w *singleWriter) Write(p []byte) (int, error) {\n\tw.mu.Lock()\n\tdefer w.mu.Unlock()\n\treturn w.b.Write(p)\n}\n\n// CombinedOutput runs cmd on the remote host and returns its combined\n// standard output and standard error.\nfunc (s *Session) CombinedOutput(cmd string) ([]byte, error) {\n\tif s.Stdout != nil {\n\t\treturn nil, errors.New(\"ssh: Stdout already set\")\n\t}\n\tif s.Stderr != nil {\n\t\treturn nil, errors.New(\"ssh: Stderr already set\")\n\t}\n\tvar b singleWriter\n\ts.Stdout = &b\n\ts.Stderr = &b\n\terr := s.Run(cmd)\n\treturn b.b.Bytes(), err\n}\n\n// Shell starts a login shell on the remote host. A Session only\n// accepts one call to Run, Start, Shell, Output, or CombinedOutput.\nfunc (s *Session) Shell() error {\n\tif s.started {\n\t\treturn errors.New(\"ssh: session already started\")\n\t}\n\n\tok, err := s.ch.SendRequest(\"shell\", true, nil)\n\tif err == nil && !ok {\n\t\treturn errors.New(\"ssh: could not start shell\")\n\t}\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn s.start()\n}\n\nfunc (s *Session) start() error {\n\ts.started = true\n\n\ttype F func(*Session)\n\tfor _, setupFd := range []F{(*Session).stdin, (*Session).stdout, (*Session).stderr} {\n\t\tsetupFd(s)\n\t}\n\n\ts.errors = make(chan error, len(s.copyFuncs))\n\tfor _, fn := range s.copyFuncs {\n\t\tgo func(fn func() error) {\n\t\t\ts.errors <- fn()\n\t\t}(fn)\n\t}\n\treturn nil\n}\n\n// Wait waits for the remote command to exit.\n//\n// The returned error is nil if the command runs, has no problems\n// copying stdin, stdout, and stderr, and exits with a zero exit\n// status.\n//\n// If the remote server does not send an exit status, an error of type\n// *ExitMissingError is returned. If the command completes\n// unsuccessfully or is interrupted by a signal, the error is of type\n// *ExitError. Other error types may be returned for I/O problems.\nfunc (s *Session) Wait() error {\n\tif !s.started {\n\t\treturn errors.New(\"ssh: session not started\")\n\t}\n\twaitErr := <-s.exitStatus\n\n\tif s.stdinPipeWriter != nil {\n\t\ts.stdinPipeWriter.Close()\n\t}\n\tvar copyError error\n\tfor range s.copyFuncs {\n\t\tif err := <-s.errors; err != nil && copyError == nil {\n\t\t\tcopyError = err\n\t\t}\n\t}\n\tif waitErr != nil {\n\t\treturn waitErr\n\t}\n\treturn copyError\n}\n\nfunc (s *Session) wait(reqs <-chan *Request) error {\n\twm := Waitmsg{status: -1}\n\t// Wait for msg channel to be closed before returning.\n\tfor msg := range reqs {\n\t\tswitch msg.Type {\n\t\tcase \"exit-status\":\n\t\t\twm.status = int(binary.BigEndian.Uint32(msg.Payload))\n\t\tcase \"exit-signal\":\n\t\t\tvar sigval struct {\n\t\t\t\tSignal     string\n\t\t\t\tCoreDumped bool\n\t\t\t\tError      string\n\t\t\t\tLang       string\n\t\t\t}\n\t\t\tif err := Unmarshal(msg.Payload, &sigval); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\t// Must sanitize strings?\n\t\t\twm.signal = sigval.Signal\n\t\t\twm.msg = sigval.Error\n\t\t\twm.lang = sigval.Lang\n\t\tdefault:\n\t\t\t// This handles keepalives and matches\n\t\t\t// OpenSSH's behaviour.\n\t\t\tif msg.WantReply {\n\t\t\t\tmsg.Reply(false, nil)\n\t\t\t}\n\t\t}\n\t}\n\tif wm.status == 0 {\n\t\treturn nil\n\t}\n\tif wm.status == -1 {\n\t\t// exit-status was never sent from server\n\t\tif wm.signal == \"\" {\n\t\t\t// signal was not sent either.  RFC 4254\n\t\t\t// section 6.10 recommends against this\n\t\t\t// behavior, but it is allowed, so we let\n\t\t\t// clients handle it.\n\t\t\treturn &ExitMissingError{}\n\t\t}\n\t\twm.status = 128\n\t\tif _, ok := signals[Signal(wm.signal)]; ok {\n\t\t\twm.status += signals[Signal(wm.signal)]\n\t\t}\n\t}\n\n\treturn &ExitError{wm}\n}\n\n// ExitMissingError is returned if a session is torn down cleanly, but\n// the server sends no confirmation of the exit status.\ntype ExitMissingError struct{}\n\nfunc (e *ExitMissingError) Error() string {\n\treturn \"wait: remote command exited without exit status or exit signal\"\n}\n\nfunc (s *Session) stdin() {\n\tif s.stdinpipe {\n\t\treturn\n\t}\n\tvar stdin io.Reader\n\tif s.Stdin == nil {\n\t\tstdin = new(bytes.Buffer)\n\t} else {\n\t\tr, w := io.Pipe()\n\t\tgo func() {\n\t\t\t_, err := io.Copy(w, s.Stdin)\n\t\t\tw.CloseWithError(err)\n\t\t}()\n\t\tstdin, s.stdinPipeWriter = r, w\n\t}\n\ts.copyFuncs = append(s.copyFuncs, func() error {\n\t\t_, err := io.Copy(s.ch, stdin)\n\t\tif err1 := s.ch.CloseWrite(); err == nil && err1 != io.EOF {\n\t\t\terr = err1\n\t\t}\n\t\treturn err\n\t})\n}\n\nfunc (s *Session) stdout() {\n\tif s.stdoutpipe {\n\t\treturn\n\t}\n\tif s.Stdout == nil {\n\t\ts.Stdout = io.Discard\n\t}\n\ts.copyFuncs = append(s.copyFuncs, func() error {\n\t\t_, err := io.Copy(s.Stdout, s.ch)\n\t\treturn err\n\t})\n}\n\nfunc (s *Session) stderr() {\n\tif s.stderrpipe {\n\t\treturn\n\t}\n\tif s.Stderr == nil {\n\t\ts.Stderr = io.Discard\n\t}\n\ts.copyFuncs = append(s.copyFuncs, func() error {\n\t\t_, err := io.Copy(s.Stderr, s.ch.Stderr())\n\t\treturn err\n\t})\n}\n\n// sessionStdin reroutes Close to CloseWrite.\ntype sessionStdin struct {\n\tio.Writer\n\tch Channel\n}\n\nfunc (s *sessionStdin) Close() error {\n\treturn s.ch.CloseWrite()\n}\n\n// StdinPipe returns a pipe that will be connected to the\n// remote command's standard input when the command starts.\nfunc (s *Session) StdinPipe() (io.WriteCloser, error) {\n\tif s.Stdin != nil {\n\t\treturn nil, errors.New(\"ssh: Stdin already set\")\n\t}\n\tif s.started {\n\t\treturn nil, errors.New(\"ssh: StdinPipe after process started\")\n\t}\n\ts.stdinpipe = true\n\treturn &sessionStdin{s.ch, s.ch}, nil\n}\n\n// StdoutPipe returns a pipe that will be connected to the\n// remote command's standard output when the command starts.\n// There is a fixed amount of buffering that is shared between\n// stdout and stderr streams. If the StdoutPipe reader is\n// not serviced fast enough it may eventually cause the\n// remote command to block.\nfunc (s *Session) StdoutPipe() (io.Reader, error) {\n\tif s.Stdout != nil {\n\t\treturn nil, errors.New(\"ssh: Stdout already set\")\n\t}\n\tif s.started {\n\t\treturn nil, errors.New(\"ssh: StdoutPipe after process started\")\n\t}\n\ts.stdoutpipe = true\n\treturn s.ch, nil\n}\n\n// StderrPipe returns a pipe that will be connected to the\n// remote command's standard error when the command starts.\n// There is a fixed amount of buffering that is shared between\n// stdout and stderr streams. If the StderrPipe reader is\n// not serviced fast enough it may eventually cause the\n// remote command to block.\nfunc (s *Session) StderrPipe() (io.Reader, error) {\n\tif s.Stderr != nil {\n\t\treturn nil, errors.New(\"ssh: Stderr already set\")\n\t}\n\tif s.started {\n\t\treturn nil, errors.New(\"ssh: StderrPipe after process started\")\n\t}\n\ts.stderrpipe = true\n\treturn s.ch.Stderr(), nil\n}\n\n// newSession returns a new interactive session on the remote host.\nfunc newSession(ch Channel, reqs <-chan *Request) (*Session, error) {\n\ts := &Session{\n\t\tch: ch,\n\t}\n\ts.exitStatus = make(chan error, 1)\n\tgo func() {\n\t\ts.exitStatus <- s.wait(reqs)\n\t}()\n\n\treturn s, nil\n}\n\n// An ExitError reports unsuccessful completion of a remote command.\ntype ExitError struct {\n\tWaitmsg\n}\n\nfunc (e *ExitError) Error() string {\n\treturn e.Waitmsg.String()\n}\n\n// Waitmsg stores the information about an exited remote command\n// as reported by Wait.\ntype Waitmsg struct {\n\tstatus int\n\tsignal string\n\tmsg    string\n\tlang   string\n}\n\n// ExitStatus returns the exit status of the remote command.\nfunc (w Waitmsg) ExitStatus() int {\n\treturn w.status\n}\n\n// Signal returns the exit signal of the remote command if\n// it was terminated violently.\nfunc (w Waitmsg) Signal() string {\n\treturn w.signal\n}\n\n// Msg returns the exit message given by the remote command\nfunc (w Waitmsg) Msg() string {\n\treturn w.msg\n}\n\n// Lang returns the language tag. See RFC 3066\nfunc (w Waitmsg) Lang() string {\n\treturn w.lang\n}\n\nfunc (w Waitmsg) String() string {\n\tstr := fmt.Sprintf(\"Process exited with status %v\", w.status)\n\tif w.signal != \"\" {\n\t\tstr += fmt.Sprintf(\" from signal %v\", w.signal)\n\t}\n\tif w.msg != \"\" {\n\t\tstr += fmt.Sprintf(\". Reason was: %v\", w.msg)\n\t}\n\treturn str\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/crypto/ssh/ssh_gss.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage ssh\n\nimport (\n\t\"encoding/asn1\"\n\t\"errors\"\n)\n\nvar krb5OID []byte\n\nfunc init() {\n\tkrb5OID, _ = asn1.Marshal(krb5Mesh)\n}\n\n// GSSAPIClient provides the API to plug-in GSSAPI authentication for client logins.\ntype GSSAPIClient interface {\n\t// InitSecContext initiates the establishment of a security context for GSS-API between the\n\t// ssh client and ssh server. Initially the token parameter should be specified as nil.\n\t// The routine may return a outputToken which should be transferred to\n\t// the ssh server, where the ssh server will present it to\n\t// AcceptSecContext. If no token need be sent, InitSecContext will indicate this by setting\n\t// needContinue to false. To complete the context\n\t// establishment, one or more reply tokens may be required from the ssh\n\t// server;if so, InitSecContext will return a needContinue which is true.\n\t// In this case, InitSecContext should be called again when the\n\t// reply token is received from the ssh server, passing the reply\n\t// token to InitSecContext via the token parameters.\n\t// See RFC 2743 section 2.2.1 and RFC 4462 section 3.4.\n\tInitSecContext(target string, token []byte, isGSSDelegCreds bool) (outputToken []byte, needContinue bool, err error)\n\t// GetMIC generates a cryptographic MIC for the SSH2 message, and places\n\t// the MIC in a token for transfer to the ssh server.\n\t// The contents of the MIC field are obtained by calling GSS_GetMIC()\n\t// over the following, using the GSS-API context that was just\n\t// established:\n\t//  string    session identifier\n\t//  byte      SSH_MSG_USERAUTH_REQUEST\n\t//  string    user name\n\t//  string    service\n\t//  string    \"gssapi-with-mic\"\n\t// See RFC 2743 section 2.3.1 and RFC 4462 3.5.\n\tGetMIC(micFiled []byte) ([]byte, error)\n\t// Whenever possible, it should be possible for\n\t// DeleteSecContext() calls to be successfully processed even\n\t// if other calls cannot succeed, thereby enabling context-related\n\t// resources to be released.\n\t// In addition to deleting established security contexts,\n\t// gss_delete_sec_context must also be able to delete \"half-built\"\n\t// security contexts resulting from an incomplete sequence of\n\t// InitSecContext()/AcceptSecContext() calls.\n\t// See RFC 2743 section 2.2.3.\n\tDeleteSecContext() error\n}\n\n// GSSAPIServer provides the API to plug in GSSAPI authentication for server logins.\ntype GSSAPIServer interface {\n\t// AcceptSecContext allows a remotely initiated security context between the application\n\t// and a remote peer to be established by the ssh client. The routine may return a\n\t// outputToken which should be transferred to the ssh client,\n\t// where the ssh client will present it to InitSecContext.\n\t// If no token need be sent, AcceptSecContext will indicate this\n\t// by setting the needContinue to false. To\n\t// complete the context establishment, one or more reply tokens may be\n\t// required from the ssh client. if so, AcceptSecContext\n\t// will return a needContinue which is true, in which case it\n\t// should be called again when the reply token is received from the ssh\n\t// client, passing the token to AcceptSecContext via the\n\t// token parameters.\n\t// The srcName return value is the authenticated username.\n\t// See RFC 2743 section 2.2.2 and RFC 4462 section 3.4.\n\tAcceptSecContext(token []byte) (outputToken []byte, srcName string, needContinue bool, err error)\n\t// VerifyMIC verifies that a cryptographic MIC, contained in the token parameter,\n\t// fits the supplied message is received from the ssh client.\n\t// See RFC 2743 section 2.3.2.\n\tVerifyMIC(micField []byte, micToken []byte) error\n\t// Whenever possible, it should be possible for\n\t// DeleteSecContext() calls to be successfully processed even\n\t// if other calls cannot succeed, thereby enabling context-related\n\t// resources to be released.\n\t// In addition to deleting established security contexts,\n\t// gss_delete_sec_context must also be able to delete \"half-built\"\n\t// security contexts resulting from an incomplete sequence of\n\t// InitSecContext()/AcceptSecContext() calls.\n\t// See RFC 2743 section 2.2.3.\n\tDeleteSecContext() error\n}\n\nvar (\n\t// OpenSSH supports Kerberos V5 mechanism only for GSS-API authentication,\n\t// so we also support the krb5 mechanism only.\n\t// See RFC 1964 section 1.\n\tkrb5Mesh = asn1.ObjectIdentifier{1, 2, 840, 113554, 1, 2, 2}\n)\n\n// The GSS-API authentication method is initiated when the client sends an SSH_MSG_USERAUTH_REQUEST\n// See RFC 4462 section 3.2.\ntype userAuthRequestGSSAPI struct {\n\tN    uint32\n\tOIDS []asn1.ObjectIdentifier\n}\n\nfunc parseGSSAPIPayload(payload []byte) (*userAuthRequestGSSAPI, error) {\n\tn, rest, ok := parseUint32(payload)\n\tif !ok {\n\t\treturn nil, errors.New(\"parse uint32 failed\")\n\t}\n\t// Each ASN.1 encoded OID must have a minimum\n\t// of 2 bytes; 64 maximum mechanisms is an\n\t// arbitrary, but reasonable ceiling.\n\tconst maxMechs = 64\n\tif n > maxMechs || int(n)*2 > len(rest) {\n\t\treturn nil, errors.New(\"invalid mechanism count\")\n\t}\n\ts := &userAuthRequestGSSAPI{\n\t\tN:    n,\n\t\tOIDS: make([]asn1.ObjectIdentifier, n),\n\t}\n\tfor i := 0; i < int(n); i++ {\n\t\tvar (\n\t\t\tdesiredMech []byte\n\t\t\terr         error\n\t\t)\n\t\tdesiredMech, rest, ok = parseString(rest)\n\t\tif !ok {\n\t\t\treturn nil, errors.New(\"parse string failed\")\n\t\t}\n\t\tif rest, err = asn1.Unmarshal(desiredMech, &s.OIDS[i]); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\treturn s, nil\n}\n\n// See RFC 4462 section 3.6.\nfunc buildMIC(sessionID string, username string, service string, authMethod string) []byte {\n\tout := make([]byte, 0, 0)\n\tout = appendString(out, sessionID)\n\tout = append(out, msgUserAuthRequest)\n\tout = appendString(out, username)\n\tout = appendString(out, service)\n\tout = appendString(out, authMethod)\n\treturn out\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/crypto/ssh/streamlocal.go",
    "content": "package ssh\n\nimport (\n\t\"errors\"\n\t\"io\"\n\t\"net\"\n)\n\n// streamLocalChannelOpenDirectMsg is a struct used for SSH_MSG_CHANNEL_OPEN message\n// with \"direct-streamlocal@openssh.com\" string.\n//\n// See openssh-portable/PROTOCOL, section 2.4. connection: Unix domain socket forwarding\n// https://github.com/openssh/openssh-portable/blob/master/PROTOCOL#L235\ntype streamLocalChannelOpenDirectMsg struct {\n\tsocketPath string\n\treserved0  string\n\treserved1  uint32\n}\n\n// forwardedStreamLocalPayload is a struct used for SSH_MSG_CHANNEL_OPEN message\n// with \"forwarded-streamlocal@openssh.com\" string.\ntype forwardedStreamLocalPayload struct {\n\tSocketPath string\n\tReserved0  string\n}\n\n// streamLocalChannelForwardMsg is a struct used for SSH2_MSG_GLOBAL_REQUEST message\n// with \"streamlocal-forward@openssh.com\"/\"cancel-streamlocal-forward@openssh.com\" string.\ntype streamLocalChannelForwardMsg struct {\n\tsocketPath string\n}\n\n// ListenUnix is similar to ListenTCP but uses a Unix domain socket.\nfunc (c *Client) ListenUnix(socketPath string) (net.Listener, error) {\n\tc.handleForwardsOnce.Do(c.handleForwards)\n\tm := streamLocalChannelForwardMsg{\n\t\tsocketPath,\n\t}\n\t// send message\n\tok, _, err := c.SendRequest(\"streamlocal-forward@openssh.com\", true, Marshal(&m))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif !ok {\n\t\treturn nil, errors.New(\"ssh: streamlocal-forward@openssh.com request denied by peer\")\n\t}\n\tch := c.forwards.add(\"unix\", socketPath)\n\n\treturn &unixListener{socketPath, c, ch}, nil\n}\n\nfunc (c *Client) dialStreamLocal(socketPath string) (Channel, error) {\n\tmsg := streamLocalChannelOpenDirectMsg{\n\t\tsocketPath: socketPath,\n\t}\n\tch, in, err := c.OpenChannel(\"direct-streamlocal@openssh.com\", Marshal(&msg))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tgo DiscardRequests(in)\n\treturn ch, err\n}\n\ntype unixListener struct {\n\tsocketPath string\n\n\tconn *Client\n\tin   <-chan forward\n}\n\n// Accept waits for and returns the next connection to the listener.\nfunc (l *unixListener) Accept() (net.Conn, error) {\n\ts, ok := <-l.in\n\tif !ok {\n\t\treturn nil, io.EOF\n\t}\n\tch, incoming, err := s.newCh.Accept()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tgo DiscardRequests(incoming)\n\n\treturn &chanConn{\n\t\tChannel: ch,\n\t\tladdr: &net.UnixAddr{\n\t\t\tName: l.socketPath,\n\t\t\tNet:  \"unix\",\n\t\t},\n\t\traddr: &net.UnixAddr{\n\t\t\tName: \"@\",\n\t\t\tNet:  \"unix\",\n\t\t},\n\t}, nil\n}\n\n// Close closes the listener.\nfunc (l *unixListener) Close() error {\n\t// this also closes the listener.\n\tl.conn.forwards.remove(\"unix\", l.socketPath)\n\tm := streamLocalChannelForwardMsg{\n\t\tl.socketPath,\n\t}\n\tok, _, err := l.conn.SendRequest(\"cancel-streamlocal-forward@openssh.com\", true, Marshal(&m))\n\tif err == nil && !ok {\n\t\terr = errors.New(\"ssh: cancel-streamlocal-forward@openssh.com failed\")\n\t}\n\treturn err\n}\n\n// Addr returns the listener's network address.\nfunc (l *unixListener) Addr() net.Addr {\n\treturn &net.UnixAddr{\n\t\tName: l.socketPath,\n\t\tNet:  \"unix\",\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/crypto/ssh/tcpip.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage ssh\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"math/rand\"\n\t\"net\"\n\t\"net/netip\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n)\n\n// Listen requests the remote peer open a listening socket on\n// addr. Incoming connections will be available by calling Accept on\n// the returned net.Listener. The listener must be serviced, or the\n// SSH connection may hang.\n// N must be \"tcp\", \"tcp4\", \"tcp6\", or \"unix\".\n//\n// If the address is a hostname, it is sent to the remote peer as-is, without\n// being resolved locally, and the Listener Addr method will return a zero IP.\nfunc (c *Client) Listen(n, addr string) (net.Listener, error) {\n\tswitch n {\n\tcase \"tcp\", \"tcp4\", \"tcp6\":\n\t\thost, portStr, err := net.SplitHostPort(addr)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tport, err := strconv.ParseInt(portStr, 10, 32)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn c.listenTCPInternal(host, int(port))\n\tcase \"unix\":\n\t\treturn c.ListenUnix(addr)\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"ssh: unsupported protocol: %s\", n)\n\t}\n}\n\n// Automatic port allocation is broken with OpenSSH before 6.0. See\n// also https://bugzilla.mindrot.org/show_bug.cgi?id=2017.  In\n// particular, OpenSSH 5.9 sends a channelOpenMsg with port number 0,\n// rather than the actual port number. This means you can never open\n// two different listeners with auto allocated ports. We work around\n// this by trying explicit ports until we succeed.\n\nconst openSSHPrefix = \"OpenSSH_\"\n\nvar portRandomizer = rand.New(rand.NewSource(time.Now().UnixNano()))\n\n// isBrokenOpenSSHVersion returns true if the given version string\n// specifies a version of OpenSSH that is known to have a bug in port\n// forwarding.\nfunc isBrokenOpenSSHVersion(versionStr string) bool {\n\ti := strings.Index(versionStr, openSSHPrefix)\n\tif i < 0 {\n\t\treturn false\n\t}\n\ti += len(openSSHPrefix)\n\tj := i\n\tfor ; j < len(versionStr); j++ {\n\t\tif versionStr[j] < '0' || versionStr[j] > '9' {\n\t\t\tbreak\n\t\t}\n\t}\n\tversion, _ := strconv.Atoi(versionStr[i:j])\n\treturn version < 6\n}\n\n// autoPortListenWorkaround simulates automatic port allocation by\n// trying random ports repeatedly.\nfunc (c *Client) autoPortListenWorkaround(laddr *net.TCPAddr) (net.Listener, error) {\n\tvar sshListener net.Listener\n\tvar err error\n\tconst tries = 10\n\tfor i := 0; i < tries; i++ {\n\t\taddr := *laddr\n\t\taddr.Port = 1024 + portRandomizer.Intn(60000)\n\t\tsshListener, err = c.ListenTCP(&addr)\n\t\tif err == nil {\n\t\t\tladdr.Port = addr.Port\n\t\t\treturn sshListener, err\n\t\t}\n\t}\n\treturn nil, fmt.Errorf(\"ssh: listen on random port failed after %d tries: %v\", tries, err)\n}\n\n// RFC 4254 7.1\ntype channelForwardMsg struct {\n\taddr  string\n\trport uint32\n}\n\n// handleForwards starts goroutines handling forwarded connections.\n// It's called on first use by (*Client).ListenTCP to not launch\n// goroutines until needed.\nfunc (c *Client) handleForwards() {\n\tgo c.forwards.handleChannels(c.HandleChannelOpen(\"forwarded-tcpip\"))\n\tgo c.forwards.handleChannels(c.HandleChannelOpen(\"forwarded-streamlocal@openssh.com\"))\n}\n\n// ListenTCP requests the remote peer open a listening socket\n// on laddr. Incoming connections will be available by calling\n// Accept on the returned net.Listener.\n//\n// ListenTCP accepts an IP address, to provide a hostname use [Client.Listen]\n// with \"tcp\", \"tcp4\", or \"tcp6\" network instead.\nfunc (c *Client) ListenTCP(laddr *net.TCPAddr) (net.Listener, error) {\n\tc.handleForwardsOnce.Do(c.handleForwards)\n\tif laddr.Port == 0 && isBrokenOpenSSHVersion(string(c.ServerVersion())) {\n\t\treturn c.autoPortListenWorkaround(laddr)\n\t}\n\n\treturn c.listenTCPInternal(laddr.IP.String(), laddr.Port)\n}\n\nfunc (c *Client) listenTCPInternal(host string, port int) (net.Listener, error) {\n\tc.handleForwardsOnce.Do(c.handleForwards)\n\n\tm := channelForwardMsg{\n\t\thost,\n\t\tuint32(port),\n\t}\n\t// send message\n\tok, resp, err := c.SendRequest(\"tcpip-forward\", true, Marshal(&m))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif !ok {\n\t\treturn nil, errors.New(\"ssh: tcpip-forward request denied by peer\")\n\t}\n\n\t// If the original port was 0, then the remote side will\n\t// supply a real port number in the response.\n\tif port == 0 {\n\t\tvar p struct {\n\t\t\tPort uint32\n\t\t}\n\t\tif err := Unmarshal(resp, &p); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tport = int(p.Port)\n\t}\n\t// Construct a local address placeholder for the remote listener. If the\n\t// original host is an IP address, preserve it so that Listener.Addr()\n\t// reports the same IP. If the host is a hostname or cannot be parsed as an\n\t// IP, fall back to IPv4zero. The port field is always set, even if the\n\t// original port was 0, because in that case the remote server will assign\n\t// one, allowing callers to determine which port was selected.\n\tip := net.IPv4zero\n\tif parsed, err := netip.ParseAddr(host); err == nil {\n\t\tip = net.IP(parsed.AsSlice())\n\t}\n\tladdr := &net.TCPAddr{\n\t\tIP:   ip,\n\t\tPort: port,\n\t}\n\taddr := net.JoinHostPort(host, strconv.FormatInt(int64(port), 10))\n\tch := c.forwards.add(\"tcp\", addr)\n\n\treturn &tcpListener{laddr, addr, c, ch}, nil\n}\n\n// forwardList stores a mapping between remote\n// forward requests and the tcpListeners.\ntype forwardList struct {\n\tsync.Mutex\n\tentries []forwardEntry\n}\n\n// forwardEntry represents an established mapping of a laddr on a\n// remote ssh server to a channel connected to a tcpListener.\ntype forwardEntry struct {\n\taddr    string // host:port or socket path\n\tnetwork string // tcp or unix\n\tc       chan forward\n}\n\n// forward represents an incoming forwarded tcpip connection. The\n// arguments to add/remove/lookup should be address as specified in\n// the original forward-request.\ntype forward struct {\n\tnewCh NewChannel // the ssh client channel underlying this forward\n\traddr net.Addr   // the raddr of the incoming connection\n}\n\nfunc (l *forwardList) add(n, addr string) chan forward {\n\tl.Lock()\n\tdefer l.Unlock()\n\tf := forwardEntry{\n\t\taddr:    addr,\n\t\tnetwork: n,\n\t\tc:       make(chan forward, 1),\n\t}\n\tl.entries = append(l.entries, f)\n\treturn f.c\n}\n\n// See RFC 4254, section 7.2\ntype forwardedTCPPayload struct {\n\tAddr       string\n\tPort       uint32\n\tOriginAddr string\n\tOriginPort uint32\n}\n\n// parseTCPAddr parses the originating address from the remote into a *net.TCPAddr.\nfunc parseTCPAddr(addr string, port uint32) (*net.TCPAddr, error) {\n\tif port == 0 || port > 65535 {\n\t\treturn nil, fmt.Errorf(\"ssh: port number out of range: %d\", port)\n\t}\n\tip, err := netip.ParseAddr(addr)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"ssh: cannot parse IP address %q\", addr)\n\t}\n\treturn &net.TCPAddr{IP: net.IP(ip.AsSlice()), Port: int(port)}, nil\n}\n\nfunc (l *forwardList) handleChannels(in <-chan NewChannel) {\n\tfor ch := range in {\n\t\tvar (\n\t\t\taddr    string\n\t\t\tnetwork string\n\t\t\traddr   net.Addr\n\t\t\terr     error\n\t\t)\n\t\tswitch channelType := ch.ChannelType(); channelType {\n\t\tcase \"forwarded-tcpip\":\n\t\t\tvar payload forwardedTCPPayload\n\t\t\tif err = Unmarshal(ch.ExtraData(), &payload); err != nil {\n\t\t\t\tch.Reject(ConnectionFailed, \"could not parse forwarded-tcpip payload: \"+err.Error())\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// RFC 4254 section 7.2 specifies that incoming addresses should\n\t\t\t// list the address that was connected, in string format. It is the\n\t\t\t// same address used in the tcpip-forward request. The originator\n\t\t\t// address is an IP address instead.\n\t\t\taddr = net.JoinHostPort(payload.Addr, strconv.FormatUint(uint64(payload.Port), 10))\n\n\t\t\traddr, err = parseTCPAddr(payload.OriginAddr, payload.OriginPort)\n\t\t\tif err != nil {\n\t\t\t\tch.Reject(ConnectionFailed, err.Error())\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tnetwork = \"tcp\"\n\t\tcase \"forwarded-streamlocal@openssh.com\":\n\t\t\tvar payload forwardedStreamLocalPayload\n\t\t\tif err = Unmarshal(ch.ExtraData(), &payload); err != nil {\n\t\t\t\tch.Reject(ConnectionFailed, \"could not parse forwarded-streamlocal@openssh.com payload: \"+err.Error())\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\taddr = payload.SocketPath\n\t\t\traddr = &net.UnixAddr{\n\t\t\t\tName: \"@\",\n\t\t\t\tNet:  \"unix\",\n\t\t\t}\n\t\t\tnetwork = \"unix\"\n\t\tdefault:\n\t\t\tpanic(fmt.Errorf(\"ssh: unknown channel type %s\", channelType))\n\t\t}\n\t\tif ok := l.forward(network, addr, raddr, ch); !ok {\n\t\t\t// Section 7.2, implementations MUST reject spurious incoming\n\t\t\t// connections.\n\t\t\tch.Reject(Prohibited, \"no forward for address\")\n\t\t\tcontinue\n\t\t}\n\n\t}\n}\n\n// remove removes the forward entry, and the channel feeding its\n// listener.\nfunc (l *forwardList) remove(n, addr string) {\n\tl.Lock()\n\tdefer l.Unlock()\n\tfor i, f := range l.entries {\n\t\tif n == f.network && addr == f.addr {\n\t\t\tl.entries = append(l.entries[:i], l.entries[i+1:]...)\n\t\t\tclose(f.c)\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// closeAll closes and clears all forwards.\nfunc (l *forwardList) closeAll() {\n\tl.Lock()\n\tdefer l.Unlock()\n\tfor _, f := range l.entries {\n\t\tclose(f.c)\n\t}\n\tl.entries = nil\n}\n\nfunc (l *forwardList) forward(n, addr string, raddr net.Addr, ch NewChannel) bool {\n\tl.Lock()\n\tdefer l.Unlock()\n\tfor _, f := range l.entries {\n\t\tif n == f.network && addr == f.addr {\n\t\t\tf.c <- forward{newCh: ch, raddr: raddr}\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\ntype tcpListener struct {\n\tladdr *net.TCPAddr\n\taddr  string\n\n\tconn *Client\n\tin   <-chan forward\n}\n\n// Accept waits for and returns the next connection to the listener.\nfunc (l *tcpListener) Accept() (net.Conn, error) {\n\ts, ok := <-l.in\n\tif !ok {\n\t\treturn nil, io.EOF\n\t}\n\tch, incoming, err := s.newCh.Accept()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tgo DiscardRequests(incoming)\n\n\treturn &chanConn{\n\t\tChannel: ch,\n\t\tladdr:   l.laddr,\n\t\traddr:   s.raddr,\n\t}, nil\n}\n\n// Close closes the listener.\nfunc (l *tcpListener) Close() error {\n\thost, port, err := net.SplitHostPort(l.addr)\n\tif err != nil {\n\t\treturn err\n\t}\n\trport, err := strconv.ParseUint(port, 10, 32)\n\tif err != nil {\n\t\treturn err\n\t}\n\tm := channelForwardMsg{\n\t\thost,\n\t\tuint32(rport),\n\t}\n\n\t// this also closes the listener.\n\tl.conn.forwards.remove(\"tcp\", l.addr)\n\tok, _, err := l.conn.SendRequest(\"cancel-tcpip-forward\", true, Marshal(&m))\n\tif err == nil && !ok {\n\t\terr = errors.New(\"ssh: cancel-tcpip-forward failed\")\n\t}\n\treturn err\n}\n\n// Addr returns the listener's network address.\nfunc (l *tcpListener) Addr() net.Addr {\n\treturn l.laddr\n}\n\n// DialContext initiates a connection to the addr from the remote host.\n//\n// The provided Context must be non-nil. If the context expires before the\n// connection is complete, an error is returned. Once successfully connected,\n// any expiration of the context will not affect the connection.\n//\n// See func Dial for additional information.\nfunc (c *Client) DialContext(ctx context.Context, n, addr string) (net.Conn, error) {\n\tif err := ctx.Err(); err != nil {\n\t\treturn nil, err\n\t}\n\ttype connErr struct {\n\t\tconn net.Conn\n\t\terr  error\n\t}\n\tch := make(chan connErr)\n\tgo func() {\n\t\tconn, err := c.Dial(n, addr)\n\t\tselect {\n\t\tcase ch <- connErr{conn, err}:\n\t\tcase <-ctx.Done():\n\t\t\tif conn != nil {\n\t\t\t\tconn.Close()\n\t\t\t}\n\t\t}\n\t}()\n\tselect {\n\tcase res := <-ch:\n\t\treturn res.conn, res.err\n\tcase <-ctx.Done():\n\t\treturn nil, ctx.Err()\n\t}\n}\n\n// Dial initiates a connection to the addr from the remote host.\n// The resulting connection has a zero LocalAddr() and RemoteAddr().\nfunc (c *Client) Dial(n, addr string) (net.Conn, error) {\n\tvar ch Channel\n\tswitch n {\n\tcase \"tcp\", \"tcp4\", \"tcp6\":\n\t\t// Parse the address into host and numeric port.\n\t\thost, portString, err := net.SplitHostPort(addr)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tport, err := strconv.ParseUint(portString, 10, 16)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tch, err = c.dial(net.IPv4zero.String(), 0, host, int(port))\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\t// Use a zero address for local and remote address.\n\t\tzeroAddr := &net.TCPAddr{\n\t\t\tIP:   net.IPv4zero,\n\t\t\tPort: 0,\n\t\t}\n\t\treturn &chanConn{\n\t\t\tChannel: ch,\n\t\t\tladdr:   zeroAddr,\n\t\t\traddr:   zeroAddr,\n\t\t}, nil\n\tcase \"unix\":\n\t\tvar err error\n\t\tch, err = c.dialStreamLocal(addr)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn &chanConn{\n\t\t\tChannel: ch,\n\t\t\tladdr: &net.UnixAddr{\n\t\t\t\tName: \"@\",\n\t\t\t\tNet:  \"unix\",\n\t\t\t},\n\t\t\traddr: &net.UnixAddr{\n\t\t\t\tName: addr,\n\t\t\t\tNet:  \"unix\",\n\t\t\t},\n\t\t}, nil\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"ssh: unsupported protocol: %s\", n)\n\t}\n}\n\n// DialTCP connects to the remote address raddr on the network net,\n// which must be \"tcp\", \"tcp4\", or \"tcp6\".  If laddr is not nil, it is used\n// as the local address for the connection.\nfunc (c *Client) DialTCP(n string, laddr, raddr *net.TCPAddr) (net.Conn, error) {\n\tif laddr == nil {\n\t\tladdr = &net.TCPAddr{\n\t\t\tIP:   net.IPv4zero,\n\t\t\tPort: 0,\n\t\t}\n\t}\n\tch, err := c.dial(laddr.IP.String(), laddr.Port, raddr.IP.String(), raddr.Port)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &chanConn{\n\t\tChannel: ch,\n\t\tladdr:   laddr,\n\t\traddr:   raddr,\n\t}, nil\n}\n\n// RFC 4254 7.2\ntype channelOpenDirectMsg struct {\n\traddr string\n\trport uint32\n\tladdr string\n\tlport uint32\n}\n\nfunc (c *Client) dial(laddr string, lport int, raddr string, rport int) (Channel, error) {\n\tmsg := channelOpenDirectMsg{\n\t\traddr: raddr,\n\t\trport: uint32(rport),\n\t\tladdr: laddr,\n\t\tlport: uint32(lport),\n\t}\n\tch, in, err := c.OpenChannel(\"direct-tcpip\", Marshal(&msg))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tgo DiscardRequests(in)\n\treturn ch, nil\n}\n\ntype tcpChan struct {\n\tChannel // the backing channel\n}\n\n// chanConn fulfills the net.Conn interface without\n// the tcpChan having to hold laddr or raddr directly.\ntype chanConn struct {\n\tChannel\n\tladdr, raddr net.Addr\n}\n\n// LocalAddr returns the local network address.\nfunc (t *chanConn) LocalAddr() net.Addr {\n\treturn t.laddr\n}\n\n// RemoteAddr returns the remote network address.\nfunc (t *chanConn) RemoteAddr() net.Addr {\n\treturn t.raddr\n}\n\n// SetDeadline sets the read and write deadlines associated\n// with the connection.\nfunc (t *chanConn) SetDeadline(deadline time.Time) error {\n\tif err := t.SetReadDeadline(deadline); err != nil {\n\t\treturn err\n\t}\n\treturn t.SetWriteDeadline(deadline)\n}\n\n// SetReadDeadline sets the read deadline.\n// A zero value for t means Read will not time out.\n// After the deadline, the error from Read will implement net.Error\n// with Timeout() == true.\nfunc (t *chanConn) SetReadDeadline(deadline time.Time) error {\n\t// for compatibility with previous version,\n\t// the error message contains \"tcpChan\"\n\treturn errors.New(\"ssh: tcpChan: deadline not supported\")\n}\n\n// SetWriteDeadline exists to satisfy the net.Conn interface\n// but is not implemented by this type.  It always returns an error.\nfunc (t *chanConn) SetWriteDeadline(deadline time.Time) error {\n\treturn errors.New(\"ssh: tcpChan: deadline not supported\")\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/crypto/ssh/transport.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage ssh\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n)\n\n// debugTransport if set, will print packet types as they go over the\n// wire. No message decoding is done, to minimize the impact on timing.\nconst debugTransport = false\n\n// packetConn represents a transport that implements packet based\n// operations.\ntype packetConn interface {\n\t// Encrypt and send a packet of data to the remote peer.\n\twritePacket(packet []byte) error\n\n\t// Read a packet from the connection. The read is blocking,\n\t// i.e. if error is nil, then the returned byte slice is\n\t// always non-empty.\n\treadPacket() ([]byte, error)\n\n\t// Close closes the write-side of the connection.\n\tClose() error\n}\n\n// transport is the keyingTransport that implements the SSH packet\n// protocol.\ntype transport struct {\n\treader connectionState\n\twriter connectionState\n\n\tbufReader *bufio.Reader\n\tbufWriter *bufio.Writer\n\trand      io.Reader\n\tisClient  bool\n\tio.Closer\n\n\tstrictMode     bool\n\tinitialKEXDone bool\n}\n\n// packetCipher represents a combination of SSH encryption/MAC\n// protocol.  A single instance should be used for one direction only.\ntype packetCipher interface {\n\t// writeCipherPacket encrypts the packet and writes it to w. The\n\t// contents of the packet are generally scrambled.\n\twriteCipherPacket(seqnum uint32, w io.Writer, rand io.Reader, packet []byte) error\n\n\t// readCipherPacket reads and decrypts a packet of data. The\n\t// returned packet may be overwritten by future calls of\n\t// readPacket.\n\treadCipherPacket(seqnum uint32, r io.Reader) ([]byte, error)\n}\n\n// connectionState represents one side (read or write) of the\n// connection. This is necessary because each direction has its own\n// keys, and can even have its own algorithms\ntype connectionState struct {\n\tpacketCipher\n\tseqNum           uint32\n\tdir              direction\n\tpendingKeyChange chan packetCipher\n}\n\nfunc (t *transport) setStrictMode() error {\n\tif t.reader.seqNum != 1 {\n\t\treturn errors.New(\"ssh: sequence number != 1 when strict KEX mode requested\")\n\t}\n\tt.strictMode = true\n\treturn nil\n}\n\nfunc (t *transport) setInitialKEXDone() {\n\tt.initialKEXDone = true\n}\n\n// prepareKeyChange sets up key material for a keychange. The key changes in\n// both directions are triggered by reading and writing a msgNewKey packet\n// respectively.\nfunc (t *transport) prepareKeyChange(algs *NegotiatedAlgorithms, kexResult *kexResult) error {\n\tciph, err := newPacketCipher(t.reader.dir, algs.Read, kexResult)\n\tif err != nil {\n\t\treturn err\n\t}\n\tt.reader.pendingKeyChange <- ciph\n\n\tciph, err = newPacketCipher(t.writer.dir, algs.Write, kexResult)\n\tif err != nil {\n\t\treturn err\n\t}\n\tt.writer.pendingKeyChange <- ciph\n\n\treturn nil\n}\n\nfunc (t *transport) printPacket(p []byte, write bool) {\n\tif len(p) == 0 {\n\t\treturn\n\t}\n\twho := \"server\"\n\tif t.isClient {\n\t\twho = \"client\"\n\t}\n\twhat := \"read\"\n\tif write {\n\t\twhat = \"write\"\n\t}\n\n\tlog.Println(what, who, p[0])\n}\n\n// Read and decrypt next packet.\nfunc (t *transport) readPacket() (p []byte, err error) {\n\tfor {\n\t\tp, err = t.reader.readPacket(t.bufReader, t.strictMode)\n\t\tif err != nil {\n\t\t\tbreak\n\t\t}\n\t\t// in strict mode we pass through DEBUG and IGNORE packets only during the initial KEX\n\t\tif len(p) == 0 || (t.strictMode && !t.initialKEXDone) || (p[0] != msgIgnore && p[0] != msgDebug) {\n\t\t\tbreak\n\t\t}\n\t}\n\tif debugTransport {\n\t\tt.printPacket(p, false)\n\t}\n\n\treturn p, err\n}\n\nfunc (s *connectionState) readPacket(r *bufio.Reader, strictMode bool) ([]byte, error) {\n\tpacket, err := s.packetCipher.readCipherPacket(s.seqNum, r)\n\ts.seqNum++\n\tif err == nil && len(packet) == 0 {\n\t\terr = errors.New(\"ssh: zero length packet\")\n\t}\n\n\tif len(packet) > 0 {\n\t\tswitch packet[0] {\n\t\tcase msgNewKeys:\n\t\t\tselect {\n\t\t\tcase cipher := <-s.pendingKeyChange:\n\t\t\t\ts.packetCipher = cipher\n\t\t\t\tif strictMode {\n\t\t\t\t\ts.seqNum = 0\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\treturn nil, errors.New(\"ssh: got bogus newkeys message\")\n\t\t\t}\n\n\t\tcase msgDisconnect:\n\t\t\t// Transform a disconnect message into an\n\t\t\t// error. Since this is lowest level at which\n\t\t\t// we interpret message types, doing it here\n\t\t\t// ensures that we don't have to handle it\n\t\t\t// elsewhere.\n\t\t\tvar msg disconnectMsg\n\t\t\tif err := Unmarshal(packet, &msg); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\treturn nil, &msg\n\t\t}\n\t}\n\n\t// The packet may point to an internal buffer, so copy the\n\t// packet out here.\n\tfresh := make([]byte, len(packet))\n\tcopy(fresh, packet)\n\n\treturn fresh, err\n}\n\nfunc (t *transport) writePacket(packet []byte) error {\n\tif debugTransport {\n\t\tt.printPacket(packet, true)\n\t}\n\treturn t.writer.writePacket(t.bufWriter, t.rand, packet, t.strictMode)\n}\n\nfunc (s *connectionState) writePacket(w *bufio.Writer, rand io.Reader, packet []byte, strictMode bool) error {\n\tchangeKeys := len(packet) > 0 && packet[0] == msgNewKeys\n\n\terr := s.packetCipher.writeCipherPacket(s.seqNum, w, rand, packet)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif err = w.Flush(); err != nil {\n\t\treturn err\n\t}\n\ts.seqNum++\n\tif changeKeys {\n\t\tselect {\n\t\tcase cipher := <-s.pendingKeyChange:\n\t\t\ts.packetCipher = cipher\n\t\t\tif strictMode {\n\t\t\t\ts.seqNum = 0\n\t\t\t}\n\t\tdefault:\n\t\t\tpanic(\"ssh: no key material for msgNewKeys\")\n\t\t}\n\t}\n\treturn err\n}\n\nfunc newTransport(rwc io.ReadWriteCloser, rand io.Reader, isClient bool) *transport {\n\tt := &transport{\n\t\tbufReader: bufio.NewReader(rwc),\n\t\tbufWriter: bufio.NewWriter(rwc),\n\t\trand:      rand,\n\t\treader: connectionState{\n\t\t\tpacketCipher:     &streamPacketCipher{cipher: noneCipher{}},\n\t\t\tpendingKeyChange: make(chan packetCipher, 1),\n\t\t},\n\t\twriter: connectionState{\n\t\t\tpacketCipher:     &streamPacketCipher{cipher: noneCipher{}},\n\t\t\tpendingKeyChange: make(chan packetCipher, 1),\n\t\t},\n\t\tCloser: rwc,\n\t}\n\tt.isClient = isClient\n\n\tif isClient {\n\t\tt.reader.dir = serverKeys\n\t\tt.writer.dir = clientKeys\n\t} else {\n\t\tt.reader.dir = clientKeys\n\t\tt.writer.dir = serverKeys\n\t}\n\n\treturn t\n}\n\ntype direction struct {\n\tivTag     []byte\n\tkeyTag    []byte\n\tmacKeyTag []byte\n}\n\nvar (\n\tserverKeys = direction{[]byte{'B'}, []byte{'D'}, []byte{'F'}}\n\tclientKeys = direction{[]byte{'A'}, []byte{'C'}, []byte{'E'}}\n)\n\n// setupKeys sets the cipher and MAC keys from kex.K, kex.H and sessionId, as\n// described in RFC 4253, section 6.4. direction should either be serverKeys\n// (to setup server->client keys) or clientKeys (for client->server keys).\nfunc newPacketCipher(d direction, algs DirectionAlgorithms, kex *kexResult) (packetCipher, error) {\n\tcipherMode := cipherModes[algs.Cipher]\n\tif cipherMode == nil {\n\t\treturn nil, fmt.Errorf(\"ssh: unsupported cipher %v\", algs.Cipher)\n\t}\n\n\tiv := make([]byte, cipherMode.ivSize)\n\tkey := make([]byte, cipherMode.keySize)\n\n\tgenerateKeyMaterial(iv, d.ivTag, kex)\n\tgenerateKeyMaterial(key, d.keyTag, kex)\n\n\tvar macKey []byte\n\tif !aeadCiphers[algs.Cipher] {\n\t\tmacMode := macModes[algs.MAC]\n\t\tmacKey = make([]byte, macMode.keySize)\n\t\tgenerateKeyMaterial(macKey, d.macKeyTag, kex)\n\t}\n\n\treturn cipherModes[algs.Cipher].create(key, iv, macKey, algs)\n}\n\n// generateKeyMaterial fills out with key material generated from tag, K, H\n// and sessionId, as specified in RFC 4253, section 7.2.\nfunc generateKeyMaterial(out, tag []byte, r *kexResult) {\n\tvar digestsSoFar []byte\n\n\th := r.Hash.New()\n\tfor len(out) > 0 {\n\t\th.Reset()\n\t\th.Write(r.K)\n\t\th.Write(r.H)\n\n\t\tif len(digestsSoFar) == 0 {\n\t\t\th.Write(tag)\n\t\t\th.Write(r.SessionID)\n\t\t} else {\n\t\t\th.Write(digestsSoFar)\n\t\t}\n\n\t\tdigest := h.Sum(nil)\n\t\tn := copy(out, digest)\n\t\tout = out[n:]\n\t\tif len(out) > 0 {\n\t\t\tdigestsSoFar = append(digestsSoFar, digest...)\n\t\t}\n\t}\n}\n\nconst packageVersion = \"SSH-2.0-Go\"\n\n// Sends and receives a version line.  The versionLine string should\n// be US ASCII, start with \"SSH-2.0-\", and should not include a\n// newline. exchangeVersions returns the other side's version line.\nfunc exchangeVersions(rw io.ReadWriter, versionLine []byte) (them []byte, err error) {\n\t// Contrary to the RFC, we do not ignore lines that don't\n\t// start with \"SSH-2.0-\" to make the library usable with\n\t// nonconforming servers.\n\tfor _, c := range versionLine {\n\t\t// The spec disallows non US-ASCII chars, and\n\t\t// specifically forbids null chars.\n\t\tif c < 32 {\n\t\t\treturn nil, errors.New(\"ssh: junk character in version line\")\n\t\t}\n\t}\n\tif _, err = rw.Write(append(versionLine, '\\r', '\\n')); err != nil {\n\t\treturn\n\t}\n\n\tthem, err = readVersion(rw)\n\treturn them, err\n}\n\n// maxVersionStringBytes is the maximum number of bytes that we'll\n// accept as a version string. RFC 4253 section 4.2 limits this at 255\n// chars\nconst maxVersionStringBytes = 255\n\n// Read version string as specified by RFC 4253, section 4.2.\nfunc readVersion(r io.Reader) ([]byte, error) {\n\tversionString := make([]byte, 0, 64)\n\tvar ok bool\n\tvar buf [1]byte\n\n\tfor length := 0; length < maxVersionStringBytes; length++ {\n\t\t_, err := io.ReadFull(r, buf[:])\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\t// The RFC says that the version should be terminated with \\r\\n\n\t\t// but several SSH servers actually only send a \\n.\n\t\tif buf[0] == '\\n' {\n\t\t\tif !bytes.HasPrefix(versionString, []byte(\"SSH-\")) {\n\t\t\t\t// RFC 4253 says we need to ignore all version string lines\n\t\t\t\t// except the one containing the SSH version (provided that\n\t\t\t\t// all the lines do not exceed 255 bytes in total).\n\t\t\t\tversionString = versionString[:0]\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tok = true\n\t\t\tbreak\n\t\t}\n\n\t\t// non ASCII chars are disallowed, but we are lenient,\n\t\t// since Go doesn't use null-terminated strings.\n\n\t\t// The RFC allows a comment after a space, however,\n\t\t// all of it (version and comments) goes into the\n\t\t// session hash.\n\t\tversionString = append(versionString, buf[0])\n\t}\n\n\tif !ok {\n\t\treturn nil, errors.New(\"ssh: overflow reading version string\")\n\t}\n\n\t// There might be a '\\r' on the end which we should remove.\n\tif len(versionString) > 0 && versionString[len(versionString)-1] == '\\r' {\n\t\tversionString = versionString[:len(versionString)-1]\n\t}\n\treturn versionString, nil\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/mod/LICENSE",
    "content": "Copyright 2009 The Go Authors.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n   * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n   * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n   * Neither the name of Google LLC nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
  },
  {
    "path": "tests/vendor/golang.org/x/mod/PATENTS",
    "content": "Additional IP Rights Grant (Patents)\n\n\"This implementation\" means the copyrightable works distributed by\nGoogle as part of the Go project.\n\nGoogle hereby grants to You a perpetual, worldwide, non-exclusive,\nno-charge, royalty-free, irrevocable (except as stated in this section)\npatent license to make, have made, use, offer to sell, sell, import,\ntransfer and otherwise run, modify and propagate the contents of this\nimplementation of Go, where such license applies only to those patent\nclaims, both currently owned or controlled by Google and acquired in\nthe future, licensable by Google that are necessarily infringed by this\nimplementation of Go.  This grant does not include claims that would be\ninfringed only as a consequence of further modification of this\nimplementation.  If you or your agent or exclusive licensee institute or\norder or agree to the institution of patent litigation against any\nentity (including a cross-claim or counterclaim in a lawsuit) alleging\nthat this implementation of Go or any code incorporated within this\nimplementation of Go constitutes direct or contributory patent\ninfringement, or inducement of patent infringement, then any patent\nrights granted to you under this License for this implementation of Go\nshall terminate as of the date such litigation is filed.\n"
  },
  {
    "path": "tests/vendor/golang.org/x/mod/semver/semver.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package semver implements comparison of semantic version strings.\n// In this package, semantic version strings must begin with a leading \"v\",\n// as in \"v1.0.0\".\n//\n// The general form of a semantic version string accepted by this package is\n//\n//\tvMAJOR[.MINOR[.PATCH[-PRERELEASE][+BUILD]]]\n//\n// where square brackets indicate optional parts of the syntax;\n// MAJOR, MINOR, and PATCH are decimal integers without extra leading zeros;\n// PRERELEASE and BUILD are each a series of non-empty dot-separated identifiers\n// using only alphanumeric characters and hyphens; and\n// all-numeric PRERELEASE identifiers must not have leading zeros.\n//\n// This package follows Semantic Versioning 2.0.0 (see semver.org)\n// with two exceptions. First, it requires the \"v\" prefix. Second, it recognizes\n// vMAJOR and vMAJOR.MINOR (with no prerelease or build suffixes)\n// as shorthands for vMAJOR.0.0 and vMAJOR.MINOR.0.\npackage semver\n\nimport (\n\t\"slices\"\n\t\"strings\"\n)\n\n// parsed returns the parsed form of a semantic version string.\ntype parsed struct {\n\tmajor      string\n\tminor      string\n\tpatch      string\n\tshort      string\n\tprerelease string\n\tbuild      string\n}\n\n// IsValid reports whether v is a valid semantic version string.\nfunc IsValid(v string) bool {\n\t_, ok := parse(v)\n\treturn ok\n}\n\n// Canonical returns the canonical formatting of the semantic version v.\n// It fills in any missing .MINOR or .PATCH and discards build metadata.\n// Two semantic versions compare equal only if their canonical formatting\n// is an identical string.\n// The canonical invalid semantic version is the empty string.\nfunc Canonical(v string) string {\n\tp, ok := parse(v)\n\tif !ok {\n\t\treturn \"\"\n\t}\n\tif p.build != \"\" {\n\t\treturn v[:len(v)-len(p.build)]\n\t}\n\tif p.short != \"\" {\n\t\treturn v + p.short\n\t}\n\treturn v\n}\n\n// Major returns the major version prefix of the semantic version v.\n// For example, Major(\"v2.1.0\") == \"v2\".\n// If v is an invalid semantic version string, Major returns the empty string.\nfunc Major(v string) string {\n\tpv, ok := parse(v)\n\tif !ok {\n\t\treturn \"\"\n\t}\n\treturn v[:1+len(pv.major)]\n}\n\n// MajorMinor returns the major.minor version prefix of the semantic version v.\n// For example, MajorMinor(\"v2.1.0\") == \"v2.1\".\n// If v is an invalid semantic version string, MajorMinor returns the empty string.\nfunc MajorMinor(v string) string {\n\tpv, ok := parse(v)\n\tif !ok {\n\t\treturn \"\"\n\t}\n\ti := 1 + len(pv.major)\n\tif j := i + 1 + len(pv.minor); j <= len(v) && v[i] == '.' && v[i+1:j] == pv.minor {\n\t\treturn v[:j]\n\t}\n\treturn v[:i] + \".\" + pv.minor\n}\n\n// Prerelease returns the prerelease suffix of the semantic version v.\n// For example, Prerelease(\"v2.1.0-pre+meta\") == \"-pre\".\n// If v is an invalid semantic version string, Prerelease returns the empty string.\nfunc Prerelease(v string) string {\n\tpv, ok := parse(v)\n\tif !ok {\n\t\treturn \"\"\n\t}\n\treturn pv.prerelease\n}\n\n// Build returns the build suffix of the semantic version v.\n// For example, Build(\"v2.1.0+meta\") == \"+meta\".\n// If v is an invalid semantic version string, Build returns the empty string.\nfunc Build(v string) string {\n\tpv, ok := parse(v)\n\tif !ok {\n\t\treturn \"\"\n\t}\n\treturn pv.build\n}\n\n// Compare returns an integer comparing two versions according to\n// semantic version precedence.\n// The result will be 0 if v == w, -1 if v < w, or +1 if v > w.\n//\n// An invalid semantic version string is considered less than a valid one.\n// All invalid semantic version strings compare equal to each other.\nfunc Compare(v, w string) int {\n\tpv, ok1 := parse(v)\n\tpw, ok2 := parse(w)\n\tif !ok1 && !ok2 {\n\t\treturn 0\n\t}\n\tif !ok1 {\n\t\treturn -1\n\t}\n\tif !ok2 {\n\t\treturn +1\n\t}\n\tif c := compareInt(pv.major, pw.major); c != 0 {\n\t\treturn c\n\t}\n\tif c := compareInt(pv.minor, pw.minor); c != 0 {\n\t\treturn c\n\t}\n\tif c := compareInt(pv.patch, pw.patch); c != 0 {\n\t\treturn c\n\t}\n\treturn comparePrerelease(pv.prerelease, pw.prerelease)\n}\n\n// Max canonicalizes its arguments and then returns the version string\n// that compares greater.\n//\n// Deprecated: use [Compare] instead. In most cases, returning a canonicalized\n// version is not expected or desired.\nfunc Max(v, w string) string {\n\tv = Canonical(v)\n\tw = Canonical(w)\n\tif Compare(v, w) > 0 {\n\t\treturn v\n\t}\n\treturn w\n}\n\n// ByVersion implements [sort.Interface] for sorting semantic version strings.\ntype ByVersion []string\n\nfunc (vs ByVersion) Len() int           { return len(vs) }\nfunc (vs ByVersion) Swap(i, j int)      { vs[i], vs[j] = vs[j], vs[i] }\nfunc (vs ByVersion) Less(i, j int) bool { return compareVersion(vs[i], vs[j]) < 0 }\n\n// Sort sorts a list of semantic version strings using [Compare] and falls back\n// to use [strings.Compare] if both versions are considered equal.\nfunc Sort(list []string) {\n\tslices.SortFunc(list, compareVersion)\n}\n\nfunc compareVersion(a, b string) int {\n\tcmp := Compare(a, b)\n\tif cmp != 0 {\n\t\treturn cmp\n\t}\n\treturn strings.Compare(a, b)\n}\n\nfunc parse(v string) (p parsed, ok bool) {\n\tif v == \"\" || v[0] != 'v' {\n\t\treturn\n\t}\n\tp.major, v, ok = parseInt(v[1:])\n\tif !ok {\n\t\treturn\n\t}\n\tif v == \"\" {\n\t\tp.minor = \"0\"\n\t\tp.patch = \"0\"\n\t\tp.short = \".0.0\"\n\t\treturn\n\t}\n\tif v[0] != '.' {\n\t\tok = false\n\t\treturn\n\t}\n\tp.minor, v, ok = parseInt(v[1:])\n\tif !ok {\n\t\treturn\n\t}\n\tif v == \"\" {\n\t\tp.patch = \"0\"\n\t\tp.short = \".0\"\n\t\treturn\n\t}\n\tif v[0] != '.' {\n\t\tok = false\n\t\treturn\n\t}\n\tp.patch, v, ok = parseInt(v[1:])\n\tif !ok {\n\t\treturn\n\t}\n\tif len(v) > 0 && v[0] == '-' {\n\t\tp.prerelease, v, ok = parsePrerelease(v)\n\t\tif !ok {\n\t\t\treturn\n\t\t}\n\t}\n\tif len(v) > 0 && v[0] == '+' {\n\t\tp.build, v, ok = parseBuild(v)\n\t\tif !ok {\n\t\t\treturn\n\t\t}\n\t}\n\tif v != \"\" {\n\t\tok = false\n\t\treturn\n\t}\n\tok = true\n\treturn\n}\n\nfunc parseInt(v string) (t, rest string, ok bool) {\n\tif v == \"\" {\n\t\treturn\n\t}\n\tif v[0] < '0' || '9' < v[0] {\n\t\treturn\n\t}\n\ti := 1\n\tfor i < len(v) && '0' <= v[i] && v[i] <= '9' {\n\t\ti++\n\t}\n\tif v[0] == '0' && i != 1 {\n\t\treturn\n\t}\n\treturn v[:i], v[i:], true\n}\n\nfunc parsePrerelease(v string) (t, rest string, ok bool) {\n\t// \"A pre-release version MAY be denoted by appending a hyphen and\n\t// a series of dot separated identifiers immediately following the patch version.\n\t// Identifiers MUST comprise only ASCII alphanumerics and hyphen [0-9A-Za-z-].\n\t// Identifiers MUST NOT be empty. Numeric identifiers MUST NOT include leading zeroes.\"\n\tif v == \"\" || v[0] != '-' {\n\t\treturn\n\t}\n\ti := 1\n\tstart := 1\n\tfor i < len(v) && v[i] != '+' {\n\t\tif !isIdentChar(v[i]) && v[i] != '.' {\n\t\t\treturn\n\t\t}\n\t\tif v[i] == '.' {\n\t\t\tif start == i || isBadNum(v[start:i]) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tstart = i + 1\n\t\t}\n\t\ti++\n\t}\n\tif start == i || isBadNum(v[start:i]) {\n\t\treturn\n\t}\n\treturn v[:i], v[i:], true\n}\n\nfunc parseBuild(v string) (t, rest string, ok bool) {\n\tif v == \"\" || v[0] != '+' {\n\t\treturn\n\t}\n\ti := 1\n\tstart := 1\n\tfor i < len(v) {\n\t\tif !isIdentChar(v[i]) && v[i] != '.' {\n\t\t\treturn\n\t\t}\n\t\tif v[i] == '.' {\n\t\t\tif start == i {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tstart = i + 1\n\t\t}\n\t\ti++\n\t}\n\tif start == i {\n\t\treturn\n\t}\n\treturn v[:i], v[i:], true\n}\n\nfunc isIdentChar(c byte) bool {\n\treturn 'A' <= c && c <= 'Z' || 'a' <= c && c <= 'z' || '0' <= c && c <= '9' || c == '-'\n}\n\nfunc isBadNum(v string) bool {\n\ti := 0\n\tfor i < len(v) && '0' <= v[i] && v[i] <= '9' {\n\t\ti++\n\t}\n\treturn i == len(v) && i > 1 && v[0] == '0'\n}\n\nfunc isNum(v string) bool {\n\ti := 0\n\tfor i < len(v) && '0' <= v[i] && v[i] <= '9' {\n\t\ti++\n\t}\n\treturn i == len(v)\n}\n\nfunc compareInt(x, y string) int {\n\tif x == y {\n\t\treturn 0\n\t}\n\tif len(x) < len(y) {\n\t\treturn -1\n\t}\n\tif len(x) > len(y) {\n\t\treturn +1\n\t}\n\tif x < y {\n\t\treturn -1\n\t} else {\n\t\treturn +1\n\t}\n}\n\nfunc comparePrerelease(x, y string) int {\n\t// \"When major, minor, and patch are equal, a pre-release version has\n\t// lower precedence than a normal version.\n\t// Example: 1.0.0-alpha < 1.0.0.\n\t// Precedence for two pre-release versions with the same major, minor,\n\t// and patch version MUST be determined by comparing each dot separated\n\t// identifier from left to right until a difference is found as follows:\n\t// identifiers consisting of only digits are compared numerically and\n\t// identifiers with letters or hyphens are compared lexically in ASCII\n\t// sort order. Numeric identifiers always have lower precedence than\n\t// non-numeric identifiers. A larger set of pre-release fields has a\n\t// higher precedence than a smaller set, if all of the preceding\n\t// identifiers are equal.\n\t// Example: 1.0.0-alpha < 1.0.0-alpha.1 < 1.0.0-alpha.beta <\n\t// 1.0.0-beta < 1.0.0-beta.2 < 1.0.0-beta.11 < 1.0.0-rc.1 < 1.0.0.\"\n\tif x == y {\n\t\treturn 0\n\t}\n\tif x == \"\" {\n\t\treturn +1\n\t}\n\tif y == \"\" {\n\t\treturn -1\n\t}\n\tfor x != \"\" && y != \"\" {\n\t\tx = x[1:] // skip - or .\n\t\ty = y[1:] // skip - or .\n\t\tvar dx, dy string\n\t\tdx, x = nextIdent(x)\n\t\tdy, y = nextIdent(y)\n\t\tif dx != dy {\n\t\t\tix := isNum(dx)\n\t\t\tiy := isNum(dy)\n\t\t\tif ix != iy {\n\t\t\t\tif ix {\n\t\t\t\t\treturn -1\n\t\t\t\t} else {\n\t\t\t\t\treturn +1\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ix {\n\t\t\t\tif len(dx) < len(dy) {\n\t\t\t\t\treturn -1\n\t\t\t\t}\n\t\t\t\tif len(dx) > len(dy) {\n\t\t\t\t\treturn +1\n\t\t\t\t}\n\t\t\t}\n\t\t\tif dx < dy {\n\t\t\t\treturn -1\n\t\t\t} else {\n\t\t\t\treturn +1\n\t\t\t}\n\t\t}\n\t}\n\tif x == \"\" {\n\t\treturn -1\n\t} else {\n\t\treturn +1\n\t}\n}\n\nfunc nextIdent(x string) (dx, rest string) {\n\ti := 0\n\tfor i < len(x) && x[i] != '.' {\n\t\ti++\n\t}\n\treturn x[:i], x[i:]\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/net/LICENSE",
    "content": "Copyright 2009 The Go Authors.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n   * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n   * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n   * Neither the name of Google LLC nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
  },
  {
    "path": "tests/vendor/golang.org/x/net/PATENTS",
    "content": "Additional IP Rights Grant (Patents)\n\n\"This implementation\" means the copyrightable works distributed by\nGoogle as part of the Go project.\n\nGoogle hereby grants to You a perpetual, worldwide, non-exclusive,\nno-charge, royalty-free, irrevocable (except as stated in this section)\npatent license to make, have made, use, offer to sell, sell, import,\ntransfer and otherwise run, modify and propagate the contents of this\nimplementation of Go, where such license applies only to those patent\nclaims, both currently owned or controlled by Google and acquired in\nthe future, licensable by Google that are necessarily infringed by this\nimplementation of Go.  This grant does not include claims that would be\ninfringed only as a consequence of further modification of this\nimplementation.  If you or your agent or exclusive licensee institute or\norder or agree to the institution of patent litigation against any\nentity (including a cross-claim or counterclaim in a lawsuit) alleging\nthat this implementation of Go or any code incorporated within this\nimplementation of Go constitutes direct or contributory patent\ninfringement, or inducement of patent infringement, then any patent\nrights granted to you under this License for this implementation of Go\nshall terminate as of the date such litigation is filed.\n"
  },
  {
    "path": "tests/vendor/golang.org/x/net/html/atom/atom.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package atom provides integer codes (also known as atoms) for a fixed set of\n// frequently occurring HTML strings: tag names and attribute keys such as \"p\"\n// and \"id\".\n//\n// Sharing an atom's name between all elements with the same tag can result in\n// fewer string allocations when tokenizing and parsing HTML. Integer\n// comparisons are also generally faster than string comparisons.\n//\n// The value of an atom's particular code is not guaranteed to stay the same\n// between versions of this package. Neither is any ordering guaranteed:\n// whether atom.H1 < atom.H2 may also change. The codes are not guaranteed to\n// be dense. The only guarantees are that e.g. looking up \"div\" will yield\n// atom.Div, calling atom.Div.String will return \"div\", and atom.Div != 0.\npackage atom // import \"golang.org/x/net/html/atom\"\n\n// Atom is an integer code for a string. The zero value maps to \"\".\ntype Atom uint32\n\n// String returns the atom's name.\nfunc (a Atom) String() string {\n\tstart := uint32(a >> 8)\n\tn := uint32(a & 0xff)\n\tif start+n > uint32(len(atomText)) {\n\t\treturn \"\"\n\t}\n\treturn atomText[start : start+n]\n}\n\nfunc (a Atom) string() string {\n\treturn atomText[a>>8 : a>>8+a&0xff]\n}\n\n// fnv computes the FNV hash with an arbitrary starting value h.\nfunc fnv(h uint32, s []byte) uint32 {\n\tfor i := range s {\n\t\th ^= uint32(s[i])\n\t\th *= 16777619\n\t}\n\treturn h\n}\n\nfunc match(s string, t []byte) bool {\n\tfor i, c := range t {\n\t\tif s[i] != c {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// Lookup returns the atom whose name is s. It returns zero if there is no\n// such atom. The lookup is case sensitive.\nfunc Lookup(s []byte) Atom {\n\tif len(s) == 0 || len(s) > maxAtomLen {\n\t\treturn 0\n\t}\n\th := fnv(hash0, s)\n\tif a := table[h&uint32(len(table)-1)]; int(a&0xff) == len(s) && match(a.string(), s) {\n\t\treturn a\n\t}\n\tif a := table[(h>>16)&uint32(len(table)-1)]; int(a&0xff) == len(s) && match(a.string(), s) {\n\t\treturn a\n\t}\n\treturn 0\n}\n\n// String returns a string whose contents are equal to s. In that sense, it is\n// equivalent to string(s) but may be more efficient.\nfunc String(s []byte) string {\n\tif a := Lookup(s); a != 0 {\n\t\treturn a.String()\n\t}\n\treturn string(s)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/net/html/atom/table.go",
    "content": "// Code generated by go generate gen.go; DO NOT EDIT.\n\n//go:generate go run gen.go\n\npackage atom\n\nconst (\n\tA                         Atom = 0x1\n\tAbbr                      Atom = 0x4\n\tAccept                    Atom = 0x1a06\n\tAcceptCharset             Atom = 0x1a0e\n\tAccesskey                 Atom = 0x2c09\n\tAcronym                   Atom = 0xaa07\n\tAction                    Atom = 0x26506\n\tAddress                   Atom = 0x6f107\n\tAlign                     Atom = 0xb105\n\tAllowfullscreen           Atom = 0x3280f\n\tAllowpaymentrequest       Atom = 0xc113\n\tAllowusermedia            Atom = 0xdd0e\n\tAlt                       Atom = 0xf303\n\tAnnotation                Atom = 0x1c90a\n\tAnnotationXml             Atom = 0x1c90e\n\tApplet                    Atom = 0x30806\n\tArea                      Atom = 0x35004\n\tArticle                   Atom = 0x3f607\n\tAs                        Atom = 0x3c02\n\tAside                     Atom = 0x10705\n\tAsync                     Atom = 0xff05\n\tAudio                     Atom = 0x11505\n\tAutocomplete              Atom = 0x26b0c\n\tAutofocus                 Atom = 0x12109\n\tAutoplay                  Atom = 0x13c08\n\tB                         Atom = 0x101\n\tBase                      Atom = 0x3b04\n\tBasefont                  Atom = 0x3b08\n\tBdi                       Atom = 0xba03\n\tBdo                       Atom = 0x14b03\n\tBgsound                   Atom = 0x15e07\n\tBig                       Atom = 0x17003\n\tBlink                     Atom = 0x17305\n\tBlockquote                Atom = 0x1870a\n\tBody                      Atom = 0x2804\n\tBr                        Atom = 0x202\n\tButton                    Atom = 0x19106\n\tCanvas                    Atom = 0x10306\n\tCaption                   Atom = 0x22407\n\tCenter                    Atom = 0x21306\n\tChallenge                 Atom = 0x28e09\n\tCharset                   Atom = 0x2107\n\tChecked                   Atom = 0x5b507\n\tCite                      Atom = 0x19c04\n\tClass                     Atom = 0x55805\n\tCode                      Atom = 0x5ee04\n\tCol                       Atom = 0x1ab03\n\tColgroup                  Atom = 0x1ab08\n\tColor                     Atom = 0x1bf05\n\tCols                      Atom = 0x1c404\n\tColspan                   Atom = 0x1c407\n\tCommand                   Atom = 0x1d707\n\tContent                   Atom = 0x57b07\n\tContenteditable           Atom = 0x57b0f\n\tContextmenu               Atom = 0x37a0b\n\tControls                  Atom = 0x1de08\n\tCoords                    Atom = 0x1f006\n\tCrossorigin               Atom = 0x1fa0b\n\tData                      Atom = 0x49904\n\tDatalist                  Atom = 0x49908\n\tDatetime                  Atom = 0x2ab08\n\tDd                        Atom = 0x2bf02\n\tDefault                   Atom = 0x10a07\n\tDefer                     Atom = 0x5f005\n\tDel                       Atom = 0x44c03\n\tDesc                      Atom = 0x55504\n\tDetails                   Atom = 0x7207\n\tDfn                       Atom = 0x8703\n\tDialog                    Atom = 0xbb06\n\tDir                       Atom = 0x9303\n\tDirname                   Atom = 0x9307\n\tDisabled                  Atom = 0x16408\n\tDiv                       Atom = 0x16b03\n\tDl                        Atom = 0x5d602\n\tDownload                  Atom = 0x45d08\n\tDraggable                 Atom = 0x17a09\n\tDropzone                  Atom = 0x3ff08\n\tDt                        Atom = 0x64002\n\tEm                        Atom = 0x6e02\n\tEmbed                     Atom = 0x6e05\n\tEnctype                   Atom = 0x28007\n\tFace                      Atom = 0x21104\n\tFieldset                  Atom = 0x21908\n\tFigcaption                Atom = 0x2210a\n\tFigure                    Atom = 0x23b06\n\tFont                      Atom = 0x3f04\n\tFooter                    Atom = 0xf606\n\tFor                       Atom = 0x24703\n\tForeignObject             Atom = 0x2470d\n\tForeignobject             Atom = 0x2540d\n\tForm                      Atom = 0x26104\n\tFormaction                Atom = 0x2610a\n\tFormenctype               Atom = 0x27c0b\n\tFormmethod                Atom = 0x2970a\n\tFormnovalidate            Atom = 0x2a10e\n\tFormtarget                Atom = 0x2b30a\n\tFrame                     Atom = 0x8b05\n\tFrameset                  Atom = 0x8b08\n\tH1                        Atom = 0x15c02\n\tH2                        Atom = 0x56102\n\tH3                        Atom = 0x2cd02\n\tH4                        Atom = 0x2fc02\n\tH5                        Atom = 0x33f02\n\tH6                        Atom = 0x34902\n\tHead                      Atom = 0x32004\n\tHeader                    Atom = 0x32006\n\tHeaders                   Atom = 0x32007\n\tHeight                    Atom = 0x5206\n\tHgroup                    Atom = 0x64206\n\tHidden                    Atom = 0x2bd06\n\tHigh                      Atom = 0x2ca04\n\tHr                        Atom = 0x15702\n\tHref                      Atom = 0x2cf04\n\tHreflang                  Atom = 0x2cf08\n\tHtml                      Atom = 0x5604\n\tHttpEquiv                 Atom = 0x2d70a\n\tI                         Atom = 0x601\n\tIcon                      Atom = 0x57a04\n\tId                        Atom = 0x10902\n\tIframe                    Atom = 0x2eb06\n\tImage                     Atom = 0x2f105\n\tImg                       Atom = 0x2f603\n\tInput                     Atom = 0x44505\n\tInputmode                 Atom = 0x44509\n\tIns                       Atom = 0x20303\n\tIntegrity                 Atom = 0x23209\n\tIs                        Atom = 0x16502\n\tIsindex                   Atom = 0x2fe07\n\tIsmap                     Atom = 0x30505\n\tItemid                    Atom = 0x38506\n\tItemprop                  Atom = 0x19d08\n\tItemref                   Atom = 0x3c707\n\tItemscope                 Atom = 0x66f09\n\tItemtype                  Atom = 0x30e08\n\tKbd                       Atom = 0xb903\n\tKeygen                    Atom = 0x3206\n\tKeytype                   Atom = 0xd607\n\tKind                      Atom = 0x17704\n\tLabel                     Atom = 0x5905\n\tLang                      Atom = 0x2d304\n\tLegend                    Atom = 0x18106\n\tLi                        Atom = 0xb202\n\tLink                      Atom = 0x17404\n\tList                      Atom = 0x49d04\n\tListing                   Atom = 0x49d07\n\tLoop                      Atom = 0x5d04\n\tLow                       Atom = 0xc303\n\tMain                      Atom = 0x1004\n\tMalignmark                Atom = 0xb00a\n\tManifest                  Atom = 0x6d508\n\tMap                       Atom = 0x30703\n\tMark                      Atom = 0xb604\n\tMarquee                   Atom = 0x31607\n\tMath                      Atom = 0x31d04\n\tMax                       Atom = 0x33703\n\tMaxlength                 Atom = 0x33709\n\tMedia                     Atom = 0xe605\n\tMediagroup                Atom = 0xe60a\n\tMenu                      Atom = 0x38104\n\tMenuitem                  Atom = 0x38108\n\tMeta                      Atom = 0x4ac04\n\tMeter                     Atom = 0x9805\n\tMethod                    Atom = 0x29b06\n\tMglyph                    Atom = 0x2f706\n\tMi                        Atom = 0x34102\n\tMin                       Atom = 0x34103\n\tMinlength                 Atom = 0x34109\n\tMn                        Atom = 0x2a402\n\tMo                        Atom = 0xa402\n\tMs                        Atom = 0x67202\n\tMtext                     Atom = 0x34b05\n\tMultiple                  Atom = 0x35908\n\tMuted                     Atom = 0x36105\n\tName                      Atom = 0x9604\n\tNav                       Atom = 0x1303\n\tNobr                      Atom = 0x3704\n\tNoembed                   Atom = 0x6c07\n\tNoframes                  Atom = 0x8908\n\tNomodule                  Atom = 0xa208\n\tNonce                     Atom = 0x1a605\n\tNoscript                  Atom = 0x2c208\n\tNovalidate                Atom = 0x2a50a\n\tObject                    Atom = 0x25b06\n\tOl                        Atom = 0x13702\n\tOnabort                   Atom = 0x19507\n\tOnafterprint              Atom = 0x2290c\n\tOnautocomplete            Atom = 0x2690e\n\tOnautocompleteerror       Atom = 0x26913\n\tOnauxclick                Atom = 0x6140a\n\tOnbeforeprint             Atom = 0x69c0d\n\tOnbeforeunload            Atom = 0x6e50e\n\tOnblur                    Atom = 0x1ea06\n\tOncancel                  Atom = 0x11908\n\tOncanplay                 Atom = 0x14d09\n\tOncanplaythrough          Atom = 0x14d10\n\tOnchange                  Atom = 0x41508\n\tOnclick                   Atom = 0x2e407\n\tOnclose                   Atom = 0x36607\n\tOncontextmenu             Atom = 0x3780d\n\tOncopy                    Atom = 0x38b06\n\tOncuechange               Atom = 0x3910b\n\tOncut                     Atom = 0x39c05\n\tOndblclick                Atom = 0x3a10a\n\tOndrag                    Atom = 0x3ab06\n\tOndragend                 Atom = 0x3ab09\n\tOndragenter               Atom = 0x3b40b\n\tOndragexit                Atom = 0x3bf0a\n\tOndragleave               Atom = 0x3d90b\n\tOndragover                Atom = 0x3e40a\n\tOndragstart               Atom = 0x3ee0b\n\tOndrop                    Atom = 0x3fd06\n\tOndurationchange          Atom = 0x40d10\n\tOnemptied                 Atom = 0x40409\n\tOnended                   Atom = 0x41d07\n\tOnerror                   Atom = 0x42407\n\tOnfocus                   Atom = 0x42b07\n\tOnhashchange              Atom = 0x4370c\n\tOninput                   Atom = 0x44307\n\tOninvalid                 Atom = 0x44f09\n\tOnkeydown                 Atom = 0x45809\n\tOnkeypress                Atom = 0x4650a\n\tOnkeyup                   Atom = 0x47407\n\tOnlanguagechange          Atom = 0x48110\n\tOnload                    Atom = 0x49106\n\tOnloadeddata              Atom = 0x4910c\n\tOnloadedmetadata          Atom = 0x4a410\n\tOnloadend                 Atom = 0x4ba09\n\tOnloadstart               Atom = 0x4c30b\n\tOnmessage                 Atom = 0x4ce09\n\tOnmessageerror            Atom = 0x4ce0e\n\tOnmousedown               Atom = 0x4dc0b\n\tOnmouseenter              Atom = 0x4e70c\n\tOnmouseleave              Atom = 0x4f30c\n\tOnmousemove               Atom = 0x4ff0b\n\tOnmouseout                Atom = 0x50a0a\n\tOnmouseover               Atom = 0x5170b\n\tOnmouseup                 Atom = 0x52209\n\tOnmousewheel              Atom = 0x5300c\n\tOnoffline                 Atom = 0x53c09\n\tOnonline                  Atom = 0x54508\n\tOnpagehide                Atom = 0x54d0a\n\tOnpageshow                Atom = 0x5630a\n\tOnpaste                   Atom = 0x56f07\n\tOnpause                   Atom = 0x58a07\n\tOnplay                    Atom = 0x59406\n\tOnplaying                 Atom = 0x59409\n\tOnpopstate                Atom = 0x59d0a\n\tOnprogress                Atom = 0x5a70a\n\tOnratechange              Atom = 0x5bc0c\n\tOnrejectionhandled        Atom = 0x5c812\n\tOnreset                   Atom = 0x5da07\n\tOnresize                  Atom = 0x5e108\n\tOnscroll                  Atom = 0x5f508\n\tOnsecuritypolicyviolation Atom = 0x5fd19\n\tOnseeked                  Atom = 0x61e08\n\tOnseeking                 Atom = 0x62609\n\tOnselect                  Atom = 0x62f08\n\tOnshow                    Atom = 0x63906\n\tOnsort                    Atom = 0x64d06\n\tOnstalled                 Atom = 0x65709\n\tOnstorage                 Atom = 0x66009\n\tOnsubmit                  Atom = 0x66908\n\tOnsuspend                 Atom = 0x67909\n\tOntimeupdate              Atom = 0x400c\n\tOntoggle                  Atom = 0x68208\n\tOnunhandledrejection      Atom = 0x68a14\n\tOnunload                  Atom = 0x6a908\n\tOnvolumechange            Atom = 0x6b10e\n\tOnwaiting                 Atom = 0x6bf09\n\tOnwheel                   Atom = 0x6c807\n\tOpen                      Atom = 0x1a304\n\tOptgroup                  Atom = 0x5f08\n\tOptimum                   Atom = 0x6cf07\n\tOption                    Atom = 0x6e106\n\tOutput                    Atom = 0x51106\n\tP                         Atom = 0xc01\n\tParam                     Atom = 0xc05\n\tPattern                   Atom = 0x6607\n\tPicture                   Atom = 0x7b07\n\tPing                      Atom = 0xef04\n\tPlaceholder               Atom = 0x1310b\n\tPlaintext                 Atom = 0x1b209\n\tPlaysinline               Atom = 0x1400b\n\tPoster                    Atom = 0x64706\n\tPre                       Atom = 0x46a03\n\tPreload                   Atom = 0x47a07\n\tProgress                  Atom = 0x5a908\n\tPrompt                    Atom = 0x52a06\n\tPublic                    Atom = 0x57606\n\tQ                         Atom = 0xcf01\n\tRadiogroup                Atom = 0x30a\n\tRb                        Atom = 0x3a02\n\tReadonly                  Atom = 0x35108\n\tReferrerpolicy            Atom = 0x3cb0e\n\tRel                       Atom = 0x47b03\n\tRequired                  Atom = 0x23f08\n\tReversed                  Atom = 0x8008\n\tRows                      Atom = 0x9c04\n\tRowspan                   Atom = 0x9c07\n\tRp                        Atom = 0x22f02\n\tRt                        Atom = 0x19a02\n\tRtc                       Atom = 0x19a03\n\tRuby                      Atom = 0xfb04\n\tS                         Atom = 0x2501\n\tSamp                      Atom = 0x7804\n\tSandbox                   Atom = 0x12907\n\tScope                     Atom = 0x67305\n\tScoped                    Atom = 0x67306\n\tScript                    Atom = 0x2c406\n\tSeamless                  Atom = 0x36b08\n\tSearch                    Atom = 0x55c06\n\tSection                   Atom = 0x1e507\n\tSelect                    Atom = 0x63106\n\tSelected                  Atom = 0x63108\n\tShape                     Atom = 0x1f505\n\tSize                      Atom = 0x5e504\n\tSizes                     Atom = 0x5e505\n\tSlot                      Atom = 0x20504\n\tSmall                     Atom = 0x32605\n\tSortable                  Atom = 0x64f08\n\tSorted                    Atom = 0x37206\n\tSource                    Atom = 0x43106\n\tSpacer                    Atom = 0x46e06\n\tSpan                      Atom = 0x9f04\n\tSpellcheck                Atom = 0x5b00a\n\tSrc                       Atom = 0x5e903\n\tSrcdoc                    Atom = 0x5e906\n\tSrclang                   Atom = 0x6f707\n\tSrcset                    Atom = 0x6fe06\n\tStart                     Atom = 0x3f405\n\tStep                      Atom = 0x57304\n\tStrike                    Atom = 0xd206\n\tStrong                    Atom = 0x6db06\n\tStyle                     Atom = 0x70405\n\tSub                       Atom = 0x66b03\n\tSummary                   Atom = 0x70907\n\tSup                       Atom = 0x71003\n\tSvg                       Atom = 0x71303\n\tSystem                    Atom = 0x71606\n\tTabindex                  Atom = 0x4b208\n\tTable                     Atom = 0x58505\n\tTarget                    Atom = 0x2b706\n\tTbody                     Atom = 0x2705\n\tTd                        Atom = 0x9202\n\tTemplate                  Atom = 0x71908\n\tTextarea                  Atom = 0x34c08\n\tTfoot                     Atom = 0xf505\n\tTh                        Atom = 0x15602\n\tThead                     Atom = 0x31f05\n\tTime                      Atom = 0x4204\n\tTitle                     Atom = 0x11005\n\tTr                        Atom = 0xcc02\n\tTrack                     Atom = 0x1ba05\n\tTranslate                 Atom = 0x20809\n\tTt                        Atom = 0x6802\n\tType                      Atom = 0xd904\n\tTypemustmatch             Atom = 0x2830d\n\tU                         Atom = 0xb01\n\tUl                        Atom = 0xa702\n\tUpdateviacache            Atom = 0x460e\n\tUsemap                    Atom = 0x58e06\n\tValue                     Atom = 0x1505\n\tVar                       Atom = 0x16d03\n\tVideo                     Atom = 0x2e005\n\tWbr                       Atom = 0x56c03\n\tWidth                     Atom = 0x63e05\n\tWorkertype                Atom = 0x7210a\n\tWrap                      Atom = 0x72b04\n\tXmp                       Atom = 0x12f03\n)\n\nconst hash0 = 0x84f70e16\n\nconst maxAtomLen = 25\n\nvar table = [1 << 9]Atom{\n\t0x1:   0x3ff08, // dropzone\n\t0x2:   0x3b08,  // basefont\n\t0x3:   0x23209, // integrity\n\t0x4:   0x43106, // source\n\t0x5:   0x2c09,  // accesskey\n\t0x6:   0x1a06,  // accept\n\t0x7:   0x6c807, // onwheel\n\t0xb:   0x47407, // onkeyup\n\t0xc:   0x32007, // headers\n\t0xd:   0x67306, // scoped\n\t0xe:   0x67909, // onsuspend\n\t0xf:   0x8908,  // noframes\n\t0x10:  0x1fa0b, // crossorigin\n\t0x11:  0x2e407, // onclick\n\t0x12:  0x3f405, // start\n\t0x13:  0x37a0b, // contextmenu\n\t0x14:  0x5e903, // src\n\t0x15:  0x1c404, // cols\n\t0x16:  0xbb06,  // dialog\n\t0x17:  0x47a07, // preload\n\t0x18:  0x3c707, // itemref\n\t0x1b:  0x2f105, // image\n\t0x1d:  0x4ba09, // onloadend\n\t0x1e:  0x45d08, // download\n\t0x1f:  0x46a03, // pre\n\t0x23:  0x2970a, // formmethod\n\t0x24:  0x71303, // svg\n\t0x25:  0xcf01,  // q\n\t0x26:  0x64002, // dt\n\t0x27:  0x1de08, // controls\n\t0x2a:  0x2804,  // body\n\t0x2b:  0xd206,  // strike\n\t0x2c:  0x3910b, // oncuechange\n\t0x2d:  0x4c30b, // onloadstart\n\t0x2e:  0x2fe07, // isindex\n\t0x2f:  0xb202,  // li\n\t0x30:  0x1400b, // playsinline\n\t0x31:  0x34102, // mi\n\t0x32:  0x30806, // applet\n\t0x33:  0x4ce09, // onmessage\n\t0x35:  0x13702, // ol\n\t0x36:  0x1a304, // open\n\t0x39:  0x14d09, // oncanplay\n\t0x3a:  0x6bf09, // onwaiting\n\t0x3b:  0x11908, // oncancel\n\t0x3c:  0x6a908, // onunload\n\t0x3e:  0x53c09, // onoffline\n\t0x3f:  0x1a0e,  // accept-charset\n\t0x40:  0x32004, // head\n\t0x42:  0x3ab09, // ondragend\n\t0x43:  0x1310b, // placeholder\n\t0x44:  0x2b30a, // formtarget\n\t0x45:  0x2540d, // foreignobject\n\t0x47:  0x400c,  // ontimeupdate\n\t0x48:  0xdd0e,  // allowusermedia\n\t0x4a:  0x69c0d, // onbeforeprint\n\t0x4b:  0x5604,  // html\n\t0x4c:  0x9f04,  // span\n\t0x4d:  0x64206, // hgroup\n\t0x4e:  0x16408, // disabled\n\t0x4f:  0x4204,  // time\n\t0x51:  0x42b07, // onfocus\n\t0x53:  0xb00a,  // malignmark\n\t0x55:  0x4650a, // onkeypress\n\t0x56:  0x55805, // class\n\t0x57:  0x1ab08, // colgroup\n\t0x58:  0x33709, // maxlength\n\t0x59:  0x5a908, // progress\n\t0x5b:  0x70405, // style\n\t0x5c:  0x2a10e, // formnovalidate\n\t0x5e:  0x38b06, // oncopy\n\t0x60:  0x26104, // form\n\t0x61:  0xf606,  // footer\n\t0x64:  0x30a,   // radiogroup\n\t0x66:  0xfb04,  // ruby\n\t0x67:  0x4ff0b, // onmousemove\n\t0x68:  0x19d08, // itemprop\n\t0x69:  0x2d70a, // http-equiv\n\t0x6a:  0x15602, // th\n\t0x6c:  0x6e02,  // em\n\t0x6d:  0x38108, // menuitem\n\t0x6e:  0x63106, // select\n\t0x6f:  0x48110, // onlanguagechange\n\t0x70:  0x31f05, // thead\n\t0x71:  0x15c02, // h1\n\t0x72:  0x5e906, // srcdoc\n\t0x75:  0x9604,  // name\n\t0x76:  0x19106, // button\n\t0x77:  0x55504, // desc\n\t0x78:  0x17704, // kind\n\t0x79:  0x1bf05, // color\n\t0x7c:  0x58e06, // usemap\n\t0x7d:  0x30e08, // itemtype\n\t0x7f:  0x6d508, // manifest\n\t0x81:  0x5300c, // onmousewheel\n\t0x82:  0x4dc0b, // onmousedown\n\t0x84:  0xc05,   // param\n\t0x85:  0x2e005, // video\n\t0x86:  0x4910c, // onloadeddata\n\t0x87:  0x6f107, // address\n\t0x8c:  0xef04,  // ping\n\t0x8d:  0x24703, // for\n\t0x8f:  0x62f08, // onselect\n\t0x90:  0x30703, // map\n\t0x92:  0xc01,   // p\n\t0x93:  0x8008,  // reversed\n\t0x94:  0x54d0a, // onpagehide\n\t0x95:  0x3206,  // keygen\n\t0x96:  0x34109, // minlength\n\t0x97:  0x3e40a, // ondragover\n\t0x98:  0x42407, // onerror\n\t0x9a:  0x2107,  // charset\n\t0x9b:  0x29b06, // method\n\t0x9c:  0x101,   // b\n\t0x9d:  0x68208, // ontoggle\n\t0x9e:  0x2bd06, // hidden\n\t0xa0:  0x3f607, // article\n\t0xa2:  0x63906, // onshow\n\t0xa3:  0x64d06, // onsort\n\t0xa5:  0x57b0f, // contenteditable\n\t0xa6:  0x66908, // onsubmit\n\t0xa8:  0x44f09, // oninvalid\n\t0xaa:  0x202,   // br\n\t0xab:  0x10902, // id\n\t0xac:  0x5d04,  // loop\n\t0xad:  0x5630a, // onpageshow\n\t0xb0:  0x2cf04, // href\n\t0xb2:  0x2210a, // figcaption\n\t0xb3:  0x2690e, // onautocomplete\n\t0xb4:  0x49106, // onload\n\t0xb6:  0x9c04,  // rows\n\t0xb7:  0x1a605, // nonce\n\t0xb8:  0x68a14, // onunhandledrejection\n\t0xbb:  0x21306, // center\n\t0xbc:  0x59406, // onplay\n\t0xbd:  0x33f02, // h5\n\t0xbe:  0x49d07, // listing\n\t0xbf:  0x57606, // public\n\t0xc2:  0x23b06, // figure\n\t0xc3:  0x57a04, // icon\n\t0xc4:  0x1ab03, // col\n\t0xc5:  0x47b03, // rel\n\t0xc6:  0xe605,  // media\n\t0xc7:  0x12109, // autofocus\n\t0xc8:  0x19a02, // rt\n\t0xca:  0x2d304, // lang\n\t0xcc:  0x49908, // datalist\n\t0xce:  0x2eb06, // iframe\n\t0xcf:  0x36105, // muted\n\t0xd0:  0x6140a, // onauxclick\n\t0xd2:  0x3c02,  // as\n\t0xd6:  0x3fd06, // ondrop\n\t0xd7:  0x1c90a, // annotation\n\t0xd8:  0x21908, // fieldset\n\t0xdb:  0x2cf08, // hreflang\n\t0xdc:  0x4e70c, // onmouseenter\n\t0xdd:  0x2a402, // mn\n\t0xde:  0xe60a,  // mediagroup\n\t0xdf:  0x9805,  // meter\n\t0xe0:  0x56c03, // wbr\n\t0xe2:  0x63e05, // width\n\t0xe3:  0x2290c, // onafterprint\n\t0xe4:  0x30505, // ismap\n\t0xe5:  0x1505,  // value\n\t0xe7:  0x1303,  // nav\n\t0xe8:  0x54508, // ononline\n\t0xe9:  0xb604,  // mark\n\t0xea:  0xc303,  // low\n\t0xeb:  0x3ee0b, // ondragstart\n\t0xef:  0x12f03, // xmp\n\t0xf0:  0x22407, // caption\n\t0xf1:  0xd904,  // type\n\t0xf2:  0x70907, // summary\n\t0xf3:  0x6802,  // tt\n\t0xf4:  0x20809, // translate\n\t0xf5:  0x1870a, // blockquote\n\t0xf8:  0x15702, // hr\n\t0xfa:  0x2705,  // tbody\n\t0xfc:  0x7b07,  // picture\n\t0xfd:  0x5206,  // height\n\t0xfe:  0x19c04, // cite\n\t0xff:  0x2501,  // s\n\t0x101: 0xff05,  // async\n\t0x102: 0x56f07, // onpaste\n\t0x103: 0x19507, // onabort\n\t0x104: 0x2b706, // target\n\t0x105: 0x14b03, // bdo\n\t0x106: 0x1f006, // coords\n\t0x107: 0x5e108, // onresize\n\t0x108: 0x71908, // template\n\t0x10a: 0x3a02,  // rb\n\t0x10b: 0x2a50a, // novalidate\n\t0x10c: 0x460e,  // updateviacache\n\t0x10d: 0x71003, // sup\n\t0x10e: 0x6c07,  // noembed\n\t0x10f: 0x16b03, // div\n\t0x110: 0x6f707, // srclang\n\t0x111: 0x17a09, // draggable\n\t0x112: 0x67305, // scope\n\t0x113: 0x5905,  // label\n\t0x114: 0x22f02, // rp\n\t0x115: 0x23f08, // required\n\t0x116: 0x3780d, // oncontextmenu\n\t0x117: 0x5e504, // size\n\t0x118: 0x5b00a, // spellcheck\n\t0x119: 0x3f04,  // font\n\t0x11a: 0x9c07,  // rowspan\n\t0x11b: 0x10a07, // default\n\t0x11d: 0x44307, // oninput\n\t0x11e: 0x38506, // itemid\n\t0x11f: 0x5ee04, // code\n\t0x120: 0xaa07,  // acronym\n\t0x121: 0x3b04,  // base\n\t0x125: 0x2470d, // foreignObject\n\t0x126: 0x2ca04, // high\n\t0x127: 0x3cb0e, // referrerpolicy\n\t0x128: 0x33703, // max\n\t0x129: 0x59d0a, // onpopstate\n\t0x12a: 0x2fc02, // h4\n\t0x12b: 0x4ac04, // meta\n\t0x12c: 0x17305, // blink\n\t0x12e: 0x5f508, // onscroll\n\t0x12f: 0x59409, // onplaying\n\t0x130: 0xc113,  // allowpaymentrequest\n\t0x131: 0x19a03, // rtc\n\t0x132: 0x72b04, // wrap\n\t0x134: 0x8b08,  // frameset\n\t0x135: 0x32605, // small\n\t0x137: 0x32006, // header\n\t0x138: 0x40409, // onemptied\n\t0x139: 0x34902, // h6\n\t0x13a: 0x35908, // multiple\n\t0x13c: 0x52a06, // prompt\n\t0x13f: 0x28e09, // challenge\n\t0x141: 0x4370c, // onhashchange\n\t0x142: 0x57b07, // content\n\t0x143: 0x1c90e, // annotation-xml\n\t0x144: 0x36607, // onclose\n\t0x145: 0x14d10, // oncanplaythrough\n\t0x148: 0x5170b, // onmouseover\n\t0x149: 0x64f08, // sortable\n\t0x14a: 0xa402,  // mo\n\t0x14b: 0x2cd02, // h3\n\t0x14c: 0x2c406, // script\n\t0x14d: 0x41d07, // onended\n\t0x14f: 0x64706, // poster\n\t0x150: 0x7210a, // workertype\n\t0x153: 0x1f505, // shape\n\t0x154: 0x4,     // abbr\n\t0x155: 0x1,     // a\n\t0x156: 0x2bf02, // dd\n\t0x157: 0x71606, // system\n\t0x158: 0x4ce0e, // onmessageerror\n\t0x159: 0x36b08, // seamless\n\t0x15a: 0x2610a, // formaction\n\t0x15b: 0x6e106, // option\n\t0x15c: 0x31d04, // math\n\t0x15d: 0x62609, // onseeking\n\t0x15e: 0x39c05, // oncut\n\t0x15f: 0x44c03, // del\n\t0x160: 0x11005, // title\n\t0x161: 0x11505, // audio\n\t0x162: 0x63108, // selected\n\t0x165: 0x3b40b, // ondragenter\n\t0x166: 0x46e06, // spacer\n\t0x167: 0x4a410, // onloadedmetadata\n\t0x168: 0x44505, // input\n\t0x16a: 0x58505, // table\n\t0x16b: 0x41508, // onchange\n\t0x16e: 0x5f005, // defer\n\t0x171: 0x50a0a, // onmouseout\n\t0x172: 0x20504, // slot\n\t0x175: 0x3704,  // nobr\n\t0x177: 0x1d707, // command\n\t0x17a: 0x7207,  // details\n\t0x17b: 0x38104, // menu\n\t0x17c: 0xb903,  // kbd\n\t0x17d: 0x57304, // step\n\t0x17e: 0x20303, // ins\n\t0x17f: 0x13c08, // autoplay\n\t0x182: 0x34103, // min\n\t0x183: 0x17404, // link\n\t0x185: 0x40d10, // ondurationchange\n\t0x186: 0x9202,  // td\n\t0x187: 0x8b05,  // frame\n\t0x18a: 0x2ab08, // datetime\n\t0x18b: 0x44509, // inputmode\n\t0x18c: 0x35108, // readonly\n\t0x18d: 0x21104, // face\n\t0x18f: 0x5e505, // sizes\n\t0x191: 0x4b208, // tabindex\n\t0x192: 0x6db06, // strong\n\t0x193: 0xba03,  // bdi\n\t0x194: 0x6fe06, // srcset\n\t0x196: 0x67202, // ms\n\t0x197: 0x5b507, // checked\n\t0x198: 0xb105,  // align\n\t0x199: 0x1e507, // section\n\t0x19b: 0x6e05,  // embed\n\t0x19d: 0x15e07, // bgsound\n\t0x1a2: 0x49d04, // list\n\t0x1a3: 0x61e08, // onseeked\n\t0x1a4: 0x66009, // onstorage\n\t0x1a5: 0x2f603, // img\n\t0x1a6: 0xf505,  // tfoot\n\t0x1a9: 0x26913, // onautocompleteerror\n\t0x1aa: 0x5fd19, // onsecuritypolicyviolation\n\t0x1ad: 0x9303,  // dir\n\t0x1ae: 0x9307,  // dirname\n\t0x1b0: 0x5a70a, // onprogress\n\t0x1b2: 0x65709, // onstalled\n\t0x1b5: 0x66f09, // itemscope\n\t0x1b6: 0x49904, // data\n\t0x1b7: 0x3d90b, // ondragleave\n\t0x1b8: 0x56102, // h2\n\t0x1b9: 0x2f706, // mglyph\n\t0x1ba: 0x16502, // is\n\t0x1bb: 0x6e50e, // onbeforeunload\n\t0x1bc: 0x2830d, // typemustmatch\n\t0x1bd: 0x3ab06, // ondrag\n\t0x1be: 0x5da07, // onreset\n\t0x1c0: 0x51106, // output\n\t0x1c1: 0x12907, // sandbox\n\t0x1c2: 0x1b209, // plaintext\n\t0x1c4: 0x34c08, // textarea\n\t0x1c7: 0xd607,  // keytype\n\t0x1c8: 0x34b05, // mtext\n\t0x1c9: 0x6b10e, // onvolumechange\n\t0x1ca: 0x1ea06, // onblur\n\t0x1cb: 0x58a07, // onpause\n\t0x1cd: 0x5bc0c, // onratechange\n\t0x1ce: 0x10705, // aside\n\t0x1cf: 0x6cf07, // optimum\n\t0x1d1: 0x45809, // onkeydown\n\t0x1d2: 0x1c407, // colspan\n\t0x1d3: 0x1004,  // main\n\t0x1d4: 0x66b03, // sub\n\t0x1d5: 0x25b06, // object\n\t0x1d6: 0x55c06, // search\n\t0x1d7: 0x37206, // sorted\n\t0x1d8: 0x17003, // big\n\t0x1d9: 0xb01,   // u\n\t0x1db: 0x26b0c, // autocomplete\n\t0x1dc: 0xcc02,  // tr\n\t0x1dd: 0xf303,  // alt\n\t0x1df: 0x7804,  // samp\n\t0x1e0: 0x5c812, // onrejectionhandled\n\t0x1e1: 0x4f30c, // onmouseleave\n\t0x1e2: 0x28007, // enctype\n\t0x1e3: 0xa208,  // nomodule\n\t0x1e5: 0x3280f, // allowfullscreen\n\t0x1e6: 0x5f08,  // optgroup\n\t0x1e8: 0x27c0b, // formenctype\n\t0x1e9: 0x18106, // legend\n\t0x1ea: 0x10306, // canvas\n\t0x1eb: 0x6607,  // pattern\n\t0x1ec: 0x2c208, // noscript\n\t0x1ed: 0x601,   // i\n\t0x1ee: 0x5d602, // dl\n\t0x1ef: 0xa702,  // ul\n\t0x1f2: 0x52209, // onmouseup\n\t0x1f4: 0x1ba05, // track\n\t0x1f7: 0x3a10a, // ondblclick\n\t0x1f8: 0x3bf0a, // ondragexit\n\t0x1fa: 0x8703,  // dfn\n\t0x1fc: 0x26506, // action\n\t0x1fd: 0x35004, // area\n\t0x1fe: 0x31607, // marquee\n\t0x1ff: 0x16d03, // var\n}\n\nconst atomText = \"abbradiogrouparamainavalueaccept-charsetbodyaccesskeygenobrb\" +\n\t\"asefontimeupdateviacacheightmlabelooptgroupatternoembedetail\" +\n\t\"sampictureversedfnoframesetdirnameterowspanomoduleacronymali\" +\n\t\"gnmarkbdialogallowpaymentrequestrikeytypeallowusermediagroup\" +\n\t\"ingaltfooterubyasyncanvasidefaultitleaudioncancelautofocusan\" +\n\t\"dboxmplaceholderautoplaysinlinebdoncanplaythrough1bgsoundisa\" +\n\t\"bledivarbigblinkindraggablegendblockquotebuttonabortcitempro\" +\n\t\"penoncecolgrouplaintextrackcolorcolspannotation-xmlcommandco\" +\n\t\"ntrolsectionblurcoordshapecrossoriginslotranslatefacenterfie\" +\n\t\"ldsetfigcaptionafterprintegrityfigurequiredforeignObjectfore\" +\n\t\"ignobjectformactionautocompleteerrorformenctypemustmatchalle\" +\n\t\"ngeformmethodformnovalidatetimeformtargethiddenoscripthigh3h\" +\n\t\"reflanghttp-equivideonclickiframeimageimglyph4isindexismappl\" +\n\t\"etitemtypemarqueematheadersmallowfullscreenmaxlength5minleng\" +\n\t\"th6mtextareadonlymultiplemutedoncloseamlessortedoncontextmen\" +\n\t\"uitemidoncopyoncuechangeoncutondblclickondragendondragentero\" +\n\t\"ndragexitemreferrerpolicyondragleaveondragoverondragstarticl\" +\n\t\"eondropzonemptiedondurationchangeonendedonerroronfocusourceo\" +\n\t\"nhashchangeoninputmodeloninvalidonkeydownloadonkeypresspacer\" +\n\t\"onkeyupreloadonlanguagechangeonloadeddatalistingonloadedmeta\" +\n\t\"databindexonloadendonloadstartonmessageerroronmousedownonmou\" +\n\t\"seenteronmouseleaveonmousemoveonmouseoutputonmouseoveronmous\" +\n\t\"eupromptonmousewheelonofflineononlineonpagehidesclassearch2o\" +\n\t\"npageshowbronpastepublicontenteditableonpausemaponplayingonp\" +\n\t\"opstateonprogresspellcheckedonratechangeonrejectionhandledon\" +\n\t\"resetonresizesrcdocodeferonscrollonsecuritypolicyviolationau\" +\n\t\"xclickonseekedonseekingonselectedonshowidthgrouposteronsorta\" +\n\t\"bleonstalledonstorageonsubmitemscopedonsuspendontoggleonunha\" +\n\t\"ndledrejectionbeforeprintonunloadonvolumechangeonwaitingonwh\" +\n\t\"eeloptimumanifestrongoptionbeforeunloaddressrclangsrcsetstyl\" +\n\t\"esummarysupsvgsystemplateworkertypewrap\"\n"
  },
  {
    "path": "tests/vendor/golang.org/x/net/html/charset/charset.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package charset provides common text encodings for HTML documents.\n//\n// The mapping from encoding labels to encodings is defined at\n// https://encoding.spec.whatwg.org/.\npackage charset // import \"golang.org/x/net/html/charset\"\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"mime\"\n\t\"strings\"\n\t\"unicode/utf8\"\n\n\t\"golang.org/x/net/html\"\n\t\"golang.org/x/text/encoding\"\n\t\"golang.org/x/text/encoding/charmap\"\n\t\"golang.org/x/text/encoding/htmlindex\"\n\t\"golang.org/x/text/transform\"\n)\n\n// Lookup returns the encoding with the specified label, and its canonical\n// name. It returns nil and the empty string if label is not one of the\n// standard encodings for HTML. Matching is case-insensitive and ignores\n// leading and trailing whitespace. Encoders will use HTML escape sequences for\n// runes that are not supported by the character set.\nfunc Lookup(label string) (e encoding.Encoding, name string) {\n\te, err := htmlindex.Get(label)\n\tif err != nil {\n\t\treturn nil, \"\"\n\t}\n\tname, _ = htmlindex.Name(e)\n\treturn &htmlEncoding{e}, name\n}\n\ntype htmlEncoding struct{ encoding.Encoding }\n\nfunc (h *htmlEncoding) NewEncoder() *encoding.Encoder {\n\t// HTML requires a non-terminating legacy encoder. We use HTML escapes to\n\t// substitute unsupported code points.\n\treturn encoding.HTMLEscapeUnsupported(h.Encoding.NewEncoder())\n}\n\n// DetermineEncoding determines the encoding of an HTML document by examining\n// up to the first 1024 bytes of content and the declared Content-Type.\n//\n// See http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#determining-the-character-encoding\nfunc DetermineEncoding(content []byte, contentType string) (e encoding.Encoding, name string, certain bool) {\n\tif len(content) > 1024 {\n\t\tcontent = content[:1024]\n\t}\n\n\tfor _, b := range boms {\n\t\tif bytes.HasPrefix(content, b.bom) {\n\t\t\te, name = Lookup(b.enc)\n\t\t\treturn e, name, true\n\t\t}\n\t}\n\n\tif _, params, err := mime.ParseMediaType(contentType); err == nil {\n\t\tif cs, ok := params[\"charset\"]; ok {\n\t\t\tif e, name = Lookup(cs); e != nil {\n\t\t\t\treturn e, name, true\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(content) > 0 {\n\t\te, name = prescan(content)\n\t\tif e != nil {\n\t\t\treturn e, name, false\n\t\t}\n\t}\n\n\t// Try to detect UTF-8.\n\t// First eliminate any partial rune at the end.\n\tfor i := len(content) - 1; i >= 0 && i > len(content)-4; i-- {\n\t\tb := content[i]\n\t\tif b < 0x80 {\n\t\t\tbreak\n\t\t}\n\t\tif utf8.RuneStart(b) {\n\t\t\tcontent = content[:i]\n\t\t\tbreak\n\t\t}\n\t}\n\thasHighBit := false\n\tfor _, c := range content {\n\t\tif c >= 0x80 {\n\t\t\thasHighBit = true\n\t\t\tbreak\n\t\t}\n\t}\n\tif hasHighBit && utf8.Valid(content) {\n\t\treturn encoding.Nop, \"utf-8\", false\n\t}\n\n\t// TODO: change default depending on user's locale?\n\treturn charmap.Windows1252, \"windows-1252\", false\n}\n\n// NewReader returns an io.Reader that converts the content of r to UTF-8.\n// It calls DetermineEncoding to find out what r's encoding is.\nfunc NewReader(r io.Reader, contentType string) (io.Reader, error) {\n\tpreview := make([]byte, 1024)\n\tn, err := io.ReadFull(r, preview)\n\tswitch {\n\tcase err == io.ErrUnexpectedEOF:\n\t\tpreview = preview[:n]\n\t\tr = bytes.NewReader(preview)\n\tcase err != nil:\n\t\treturn nil, err\n\tdefault:\n\t\tr = io.MultiReader(bytes.NewReader(preview), r)\n\t}\n\n\tif e, _, _ := DetermineEncoding(preview, contentType); e != encoding.Nop {\n\t\tr = transform.NewReader(r, e.NewDecoder())\n\t}\n\treturn r, nil\n}\n\n// NewReaderLabel returns a reader that converts from the specified charset to\n// UTF-8. It uses Lookup to find the encoding that corresponds to label, and\n// returns an error if Lookup returns nil. It is suitable for use as\n// encoding/xml.Decoder's CharsetReader function.\nfunc NewReaderLabel(label string, input io.Reader) (io.Reader, error) {\n\te, _ := Lookup(label)\n\tif e == nil {\n\t\treturn nil, fmt.Errorf(\"unsupported charset: %q\", label)\n\t}\n\treturn transform.NewReader(input, e.NewDecoder()), nil\n}\n\nfunc prescan(content []byte) (e encoding.Encoding, name string) {\n\tz := html.NewTokenizer(bytes.NewReader(content))\n\tfor {\n\t\tswitch z.Next() {\n\t\tcase html.ErrorToken:\n\t\t\treturn nil, \"\"\n\n\t\tcase html.StartTagToken, html.SelfClosingTagToken:\n\t\t\ttagName, hasAttr := z.TagName()\n\t\t\tif !bytes.Equal(tagName, []byte(\"meta\")) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tattrList := make(map[string]bool)\n\t\t\tgotPragma := false\n\n\t\t\tconst (\n\t\t\t\tdontKnow = iota\n\t\t\t\tdoNeedPragma\n\t\t\t\tdoNotNeedPragma\n\t\t\t)\n\t\t\tneedPragma := dontKnow\n\n\t\t\tname = \"\"\n\t\t\te = nil\n\t\t\tfor hasAttr {\n\t\t\t\tvar key, val []byte\n\t\t\t\tkey, val, hasAttr = z.TagAttr()\n\t\t\t\tks := string(key)\n\t\t\t\tif attrList[ks] {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tattrList[ks] = true\n\t\t\t\tfor i, c := range val {\n\t\t\t\t\tif 'A' <= c && c <= 'Z' {\n\t\t\t\t\t\tval[i] = c + 0x20\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tswitch ks {\n\t\t\t\tcase \"http-equiv\":\n\t\t\t\t\tif bytes.Equal(val, []byte(\"content-type\")) {\n\t\t\t\t\t\tgotPragma = true\n\t\t\t\t\t}\n\n\t\t\t\tcase \"content\":\n\t\t\t\t\tif e == nil {\n\t\t\t\t\t\tname = fromMetaElement(string(val))\n\t\t\t\t\t\tif name != \"\" {\n\t\t\t\t\t\t\te, name = Lookup(name)\n\t\t\t\t\t\t\tif e != nil {\n\t\t\t\t\t\t\t\tneedPragma = doNeedPragma\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\tcase \"charset\":\n\t\t\t\t\te, name = Lookup(string(val))\n\t\t\t\t\tneedPragma = doNotNeedPragma\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif needPragma == dontKnow || needPragma == doNeedPragma && !gotPragma {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif strings.HasPrefix(name, \"utf-16\") {\n\t\t\t\tname = \"utf-8\"\n\t\t\t\te = encoding.Nop\n\t\t\t}\n\n\t\t\tif e != nil {\n\t\t\t\treturn e, name\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc fromMetaElement(s string) string {\n\tfor s != \"\" {\n\t\tcsLoc := strings.Index(s, \"charset\")\n\t\tif csLoc == -1 {\n\t\t\treturn \"\"\n\t\t}\n\t\ts = s[csLoc+len(\"charset\"):]\n\t\ts = strings.TrimLeft(s, \" \\t\\n\\f\\r\")\n\t\tif !strings.HasPrefix(s, \"=\") {\n\t\t\tcontinue\n\t\t}\n\t\ts = s[1:]\n\t\ts = strings.TrimLeft(s, \" \\t\\n\\f\\r\")\n\t\tif s == \"\" {\n\t\t\treturn \"\"\n\t\t}\n\t\tif q := s[0]; q == '\"' || q == '\\'' {\n\t\t\ts = s[1:]\n\t\t\tcloseQuote := strings.IndexRune(s, rune(q))\n\t\t\tif closeQuote == -1 {\n\t\t\t\treturn \"\"\n\t\t\t}\n\t\t\treturn s[:closeQuote]\n\t\t}\n\n\t\tend := strings.IndexAny(s, \"; \\t\\n\\f\\r\")\n\t\tif end == -1 {\n\t\t\tend = len(s)\n\t\t}\n\t\treturn s[:end]\n\t}\n\treturn \"\"\n}\n\nvar boms = []struct {\n\tbom []byte\n\tenc string\n}{\n\t{[]byte{0xfe, 0xff}, \"utf-16be\"},\n\t{[]byte{0xff, 0xfe}, \"utf-16le\"},\n\t{[]byte{0xef, 0xbb, 0xbf}, \"utf-8\"},\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/net/html/const.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage html\n\n// Section 12.2.4.2 of the HTML5 specification says \"The following elements\n// have varying levels of special parsing rules\".\n// https://html.spec.whatwg.org/multipage/syntax.html#the-stack-of-open-elements\nvar isSpecialElementMap = map[string]bool{\n\t\"address\":    true,\n\t\"applet\":     true,\n\t\"area\":       true,\n\t\"article\":    true,\n\t\"aside\":      true,\n\t\"base\":       true,\n\t\"basefont\":   true,\n\t\"bgsound\":    true,\n\t\"blockquote\": true,\n\t\"body\":       true,\n\t\"br\":         true,\n\t\"button\":     true,\n\t\"caption\":    true,\n\t\"center\":     true,\n\t\"col\":        true,\n\t\"colgroup\":   true,\n\t\"dd\":         true,\n\t\"details\":    true,\n\t\"dir\":        true,\n\t\"div\":        true,\n\t\"dl\":         true,\n\t\"dt\":         true,\n\t\"embed\":      true,\n\t\"fieldset\":   true,\n\t\"figcaption\": true,\n\t\"figure\":     true,\n\t\"footer\":     true,\n\t\"form\":       true,\n\t\"frame\":      true,\n\t\"frameset\":   true,\n\t\"h1\":         true,\n\t\"h2\":         true,\n\t\"h3\":         true,\n\t\"h4\":         true,\n\t\"h5\":         true,\n\t\"h6\":         true,\n\t\"head\":       true,\n\t\"header\":     true,\n\t\"hgroup\":     true,\n\t\"hr\":         true,\n\t\"html\":       true,\n\t\"iframe\":     true,\n\t\"img\":        true,\n\t\"input\":      true,\n\t\"keygen\":     true, // \"keygen\" has been removed from the spec, but are kept here for backwards compatibility.\n\t\"li\":         true,\n\t\"link\":       true,\n\t\"listing\":    true,\n\t\"main\":       true,\n\t\"marquee\":    true,\n\t\"menu\":       true,\n\t\"meta\":       true,\n\t\"nav\":        true,\n\t\"noembed\":    true,\n\t\"noframes\":   true,\n\t\"noscript\":   true,\n\t\"object\":     true,\n\t\"ol\":         true,\n\t\"p\":          true,\n\t\"param\":      true,\n\t\"plaintext\":  true,\n\t\"pre\":        true,\n\t\"script\":     true,\n\t\"section\":    true,\n\t\"select\":     true,\n\t\"source\":     true,\n\t\"style\":      true,\n\t\"summary\":    true,\n\t\"table\":      true,\n\t\"tbody\":      true,\n\t\"td\":         true,\n\t\"template\":   true,\n\t\"textarea\":   true,\n\t\"tfoot\":      true,\n\t\"th\":         true,\n\t\"thead\":      true,\n\t\"title\":      true,\n\t\"tr\":         true,\n\t\"track\":      true,\n\t\"ul\":         true,\n\t\"wbr\":        true,\n\t\"xmp\":        true,\n}\n\nfunc isSpecialElement(element *Node) bool {\n\tswitch element.Namespace {\n\tcase \"\", \"html\":\n\t\treturn isSpecialElementMap[element.Data]\n\tcase \"math\":\n\t\tswitch element.Data {\n\t\tcase \"mi\", \"mo\", \"mn\", \"ms\", \"mtext\", \"annotation-xml\":\n\t\t\treturn true\n\t\t}\n\tcase \"svg\":\n\t\tswitch element.Data {\n\t\tcase \"foreignObject\", \"desc\", \"title\":\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/net/html/doc.go",
    "content": "// Copyright 2010 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n/*\nPackage html implements an HTML5-compliant tokenizer and parser.\n\nTokenization is done by creating a Tokenizer for an io.Reader r. It is the\ncaller's responsibility to ensure that r provides UTF-8 encoded HTML.\n\n\tz := html.NewTokenizer(r)\n\nGiven a Tokenizer z, the HTML is tokenized by repeatedly calling z.Next(),\nwhich parses the next token and returns its type, or an error:\n\n\tfor {\n\t\ttt := z.Next()\n\t\tif tt == html.ErrorToken {\n\t\t\t// ...\n\t\t\treturn ...\n\t\t}\n\t\t// Process the current token.\n\t}\n\nThere are two APIs for retrieving the current token. The high-level API is to\ncall Token; the low-level API is to call Text or TagName / TagAttr. Both APIs\nallow optionally calling Raw after Next but before Token, Text, TagName, or\nTagAttr. In EBNF notation, the valid call sequence per token is:\n\n\tNext {Raw} [ Token | Text | TagName {TagAttr} ]\n\nToken returns an independent data structure that completely describes a token.\nEntities (such as \"&lt;\") are unescaped, tag names and attribute keys are\nlower-cased, and attributes are collected into a []Attribute. For example:\n\n\tfor {\n\t\tif z.Next() == html.ErrorToken {\n\t\t\t// Returning io.EOF indicates success.\n\t\t\treturn z.Err()\n\t\t}\n\t\temitToken(z.Token())\n\t}\n\nThe low-level API performs fewer allocations and copies, but the contents of\nthe []byte values returned by Text, TagName and TagAttr may change on the next\ncall to Next. For example, to extract an HTML page's anchor text:\n\n\tdepth := 0\n\tfor {\n\t\ttt := z.Next()\n\t\tswitch tt {\n\t\tcase html.ErrorToken:\n\t\t\treturn z.Err()\n\t\tcase html.TextToken:\n\t\t\tif depth > 0 {\n\t\t\t\t// emitBytes should copy the []byte it receives,\n\t\t\t\t// if it doesn't process it immediately.\n\t\t\t\temitBytes(z.Text())\n\t\t\t}\n\t\tcase html.StartTagToken, html.EndTagToken:\n\t\t\ttn, _ := z.TagName()\n\t\t\tif len(tn) == 1 && tn[0] == 'a' {\n\t\t\t\tif tt == html.StartTagToken {\n\t\t\t\t\tdepth++\n\t\t\t\t} else {\n\t\t\t\t\tdepth--\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\nParsing is done by calling Parse with an io.Reader, which returns the root of\nthe parse tree (the document element) as a *Node. It is the caller's\nresponsibility to ensure that the Reader provides UTF-8 encoded HTML. For\nexample, to process each anchor node in depth-first order:\n\n\tdoc, err := html.Parse(r)\n\tif err != nil {\n\t\t// ...\n\t}\n\tfor n := range doc.Descendants() {\n\t\tif n.Type == html.ElementNode && n.Data == \"a\" {\n\t\t\t// Do something with n...\n\t\t}\n\t}\n\nThe relevant specifications include:\nhttps://html.spec.whatwg.org/multipage/syntax.html and\nhttps://html.spec.whatwg.org/multipage/syntax.html#tokenization\n\n# Security Considerations\n\nCare should be taken when parsing and interpreting HTML, whether full documents\nor fragments, within the framework of the HTML specification, especially with\nregard to untrusted inputs.\n\nThis package provides both a tokenizer and a parser, which implement the\ntokenization, and tokenization and tree construction stages of the WHATWG HTML\nparsing specification respectively. While the tokenizer parses and normalizes\nindividual HTML tokens, only the parser constructs the DOM tree from the\ntokenized HTML, as described in the tree construction stage of the\nspecification, dynamically modifying or extending the document's DOM tree.\n\nIf your use case requires semantically well-formed HTML documents, as defined by\nthe WHATWG specification, the parser should be used rather than the tokenizer.\n\nIn security contexts, if trust decisions are being made using the tokenized or\nparsed content, the input must be re-serialized (for instance by using Render or\nToken.String) in order for those trust decisions to hold, as the process of\ntokenization or parsing may alter the content.\n*/\npackage html // import \"golang.org/x/net/html\"\n\n// The tokenization algorithm implemented by this package is not a line-by-line\n// transliteration of the relatively verbose state-machine in the WHATWG\n// specification. A more direct approach is used instead, where the program\n// counter implies the state, such as whether it is tokenizing a tag or a text\n// node. Specification compliance is verified by checking expected and actual\n// outputs over a test suite rather than aiming for algorithmic fidelity.\n\n// TODO(nigeltao): Does a DOM API belong in this package or a separate one?\n// TODO(nigeltao): How does parsing interact with a JavaScript engine?\n"
  },
  {
    "path": "tests/vendor/golang.org/x/net/html/doctype.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage html\n\nimport (\n\t\"strings\"\n)\n\n// parseDoctype parses the data from a DoctypeToken into a name,\n// public identifier, and system identifier. It returns a Node whose Type\n// is DoctypeNode, whose Data is the name, and which has attributes\n// named \"system\" and \"public\" for the two identifiers if they were present.\n// quirks is whether the document should be parsed in \"quirks mode\".\nfunc parseDoctype(s string) (n *Node, quirks bool) {\n\tn = &Node{Type: DoctypeNode}\n\n\t// Find the name.\n\tspace := strings.IndexAny(s, whitespace)\n\tif space == -1 {\n\t\tspace = len(s)\n\t}\n\tn.Data = s[:space]\n\t// The comparison to \"html\" is case-sensitive.\n\tif n.Data != \"html\" {\n\t\tquirks = true\n\t}\n\tn.Data = strings.ToLower(n.Data)\n\ts = strings.TrimLeft(s[space:], whitespace)\n\n\tif len(s) < 6 {\n\t\t// It can't start with \"PUBLIC\" or \"SYSTEM\".\n\t\t// Ignore the rest of the string.\n\t\treturn n, quirks || s != \"\"\n\t}\n\n\tkey := strings.ToLower(s[:6])\n\ts = s[6:]\n\tfor key == \"public\" || key == \"system\" {\n\t\ts = strings.TrimLeft(s, whitespace)\n\t\tif s == \"\" {\n\t\t\tbreak\n\t\t}\n\t\tquote := s[0]\n\t\tif quote != '\"' && quote != '\\'' {\n\t\t\tbreak\n\t\t}\n\t\ts = s[1:]\n\t\tq := strings.IndexRune(s, rune(quote))\n\t\tvar id string\n\t\tif q == -1 {\n\t\t\tid = s\n\t\t\ts = \"\"\n\t\t} else {\n\t\t\tid = s[:q]\n\t\t\ts = s[q+1:]\n\t\t}\n\t\tn.Attr = append(n.Attr, Attribute{Key: key, Val: id})\n\t\tif key == \"public\" {\n\t\t\tkey = \"system\"\n\t\t} else {\n\t\t\tkey = \"\"\n\t\t}\n\t}\n\n\tif key != \"\" || s != \"\" {\n\t\tquirks = true\n\t} else if len(n.Attr) > 0 {\n\t\tif n.Attr[0].Key == \"public\" {\n\t\t\tpublic := strings.ToLower(n.Attr[0].Val)\n\t\t\tswitch public {\n\t\t\tcase \"-//w3o//dtd w3 html strict 3.0//en//\", \"-/w3d/dtd html 4.0 transitional/en\", \"html\":\n\t\t\t\tquirks = true\n\t\t\tdefault:\n\t\t\t\tfor _, q := range quirkyIDs {\n\t\t\t\t\tif strings.HasPrefix(public, q) {\n\t\t\t\t\t\tquirks = true\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// The following two public IDs only cause quirks mode if there is no system ID.\n\t\t\tif len(n.Attr) == 1 && (strings.HasPrefix(public, \"-//w3c//dtd html 4.01 frameset//\") ||\n\t\t\t\tstrings.HasPrefix(public, \"-//w3c//dtd html 4.01 transitional//\")) {\n\t\t\t\tquirks = true\n\t\t\t}\n\t\t}\n\t\tif lastAttr := n.Attr[len(n.Attr)-1]; lastAttr.Key == \"system\" &&\n\t\t\tstrings.EqualFold(lastAttr.Val, \"http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd\") {\n\t\t\tquirks = true\n\t\t}\n\t}\n\n\treturn n, quirks\n}\n\n// quirkyIDs is a list of public doctype identifiers that cause a document\n// to be interpreted in quirks mode. The identifiers should be in lower case.\nvar quirkyIDs = []string{\n\t\"+//silmaril//dtd html pro v0r11 19970101//\",\n\t\"-//advasoft ltd//dtd html 3.0 aswedit + extensions//\",\n\t\"-//as//dtd html 3.0 aswedit + extensions//\",\n\t\"-//ietf//dtd html 2.0 level 1//\",\n\t\"-//ietf//dtd html 2.0 level 2//\",\n\t\"-//ietf//dtd html 2.0 strict level 1//\",\n\t\"-//ietf//dtd html 2.0 strict level 2//\",\n\t\"-//ietf//dtd html 2.0 strict//\",\n\t\"-//ietf//dtd html 2.0//\",\n\t\"-//ietf//dtd html 2.1e//\",\n\t\"-//ietf//dtd html 3.0//\",\n\t\"-//ietf//dtd html 3.2 final//\",\n\t\"-//ietf//dtd html 3.2//\",\n\t\"-//ietf//dtd html 3//\",\n\t\"-//ietf//dtd html level 0//\",\n\t\"-//ietf//dtd html level 1//\",\n\t\"-//ietf//dtd html level 2//\",\n\t\"-//ietf//dtd html level 3//\",\n\t\"-//ietf//dtd html strict level 0//\",\n\t\"-//ietf//dtd html strict level 1//\",\n\t\"-//ietf//dtd html strict level 2//\",\n\t\"-//ietf//dtd html strict level 3//\",\n\t\"-//ietf//dtd html strict//\",\n\t\"-//ietf//dtd html//\",\n\t\"-//metrius//dtd metrius presentational//\",\n\t\"-//microsoft//dtd internet explorer 2.0 html strict//\",\n\t\"-//microsoft//dtd internet explorer 2.0 html//\",\n\t\"-//microsoft//dtd internet explorer 2.0 tables//\",\n\t\"-//microsoft//dtd internet explorer 3.0 html strict//\",\n\t\"-//microsoft//dtd internet explorer 3.0 html//\",\n\t\"-//microsoft//dtd internet explorer 3.0 tables//\",\n\t\"-//netscape comm. corp.//dtd html//\",\n\t\"-//netscape comm. corp.//dtd strict html//\",\n\t\"-//o'reilly and associates//dtd html 2.0//\",\n\t\"-//o'reilly and associates//dtd html extended 1.0//\",\n\t\"-//o'reilly and associates//dtd html extended relaxed 1.0//\",\n\t\"-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//\",\n\t\"-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//\",\n\t\"-//spyglass//dtd html 2.0 extended//\",\n\t\"-//sq//dtd html 2.0 hotmetal + extensions//\",\n\t\"-//sun microsystems corp.//dtd hotjava html//\",\n\t\"-//sun microsystems corp.//dtd hotjava strict html//\",\n\t\"-//w3c//dtd html 3 1995-03-24//\",\n\t\"-//w3c//dtd html 3.2 draft//\",\n\t\"-//w3c//dtd html 3.2 final//\",\n\t\"-//w3c//dtd html 3.2//\",\n\t\"-//w3c//dtd html 3.2s draft//\",\n\t\"-//w3c//dtd html 4.0 frameset//\",\n\t\"-//w3c//dtd html 4.0 transitional//\",\n\t\"-//w3c//dtd html experimental 19960712//\",\n\t\"-//w3c//dtd html experimental 970421//\",\n\t\"-//w3c//dtd w3 html//\",\n\t\"-//w3o//dtd w3 html 3.0//\",\n\t\"-//webtechs//dtd mozilla html 2.0//\",\n\t\"-//webtechs//dtd mozilla html//\",\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/net/html/entity.go",
    "content": "// Copyright 2010 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage html\n\n// All entities that do not end with ';' are 6 or fewer bytes long.\nconst longestEntityWithoutSemicolon = 6\n\n// entity is a map from HTML entity names to their values. The semicolon matters:\n// https://html.spec.whatwg.org/multipage/syntax.html#named-character-references\n// lists both \"amp\" and \"amp;\" as two separate entries.\n//\n// Note that the HTML5 list is larger than the HTML4 list at\n// http://www.w3.org/TR/html4/sgml/entities.html\nvar entity = map[string]rune{\n\t\"AElig;\":                           '\\U000000C6',\n\t\"AMP;\":                             '\\U00000026',\n\t\"Aacute;\":                          '\\U000000C1',\n\t\"Abreve;\":                          '\\U00000102',\n\t\"Acirc;\":                           '\\U000000C2',\n\t\"Acy;\":                             '\\U00000410',\n\t\"Afr;\":                             '\\U0001D504',\n\t\"Agrave;\":                          '\\U000000C0',\n\t\"Alpha;\":                           '\\U00000391',\n\t\"Amacr;\":                           '\\U00000100',\n\t\"And;\":                             '\\U00002A53',\n\t\"Aogon;\":                           '\\U00000104',\n\t\"Aopf;\":                            '\\U0001D538',\n\t\"ApplyFunction;\":                   '\\U00002061',\n\t\"Aring;\":                           '\\U000000C5',\n\t\"Ascr;\":                            '\\U0001D49C',\n\t\"Assign;\":                          '\\U00002254',\n\t\"Atilde;\":                          '\\U000000C3',\n\t\"Auml;\":                            '\\U000000C4',\n\t\"Backslash;\":                       '\\U00002216',\n\t\"Barv;\":                            '\\U00002AE7',\n\t\"Barwed;\":                          '\\U00002306',\n\t\"Bcy;\":                             '\\U00000411',\n\t\"Because;\":                         '\\U00002235',\n\t\"Bernoullis;\":                      '\\U0000212C',\n\t\"Beta;\":                            '\\U00000392',\n\t\"Bfr;\":                             '\\U0001D505',\n\t\"Bopf;\":                            '\\U0001D539',\n\t\"Breve;\":                           '\\U000002D8',\n\t\"Bscr;\":                            '\\U0000212C',\n\t\"Bumpeq;\":                          '\\U0000224E',\n\t\"CHcy;\":                            '\\U00000427',\n\t\"COPY;\":                            '\\U000000A9',\n\t\"Cacute;\":                          '\\U00000106',\n\t\"Cap;\":                             '\\U000022D2',\n\t\"CapitalDifferentialD;\":            '\\U00002145',\n\t\"Cayleys;\":                         '\\U0000212D',\n\t\"Ccaron;\":                          '\\U0000010C',\n\t\"Ccedil;\":                          '\\U000000C7',\n\t\"Ccirc;\":                           '\\U00000108',\n\t\"Cconint;\":                         '\\U00002230',\n\t\"Cdot;\":                            '\\U0000010A',\n\t\"Cedilla;\":                         '\\U000000B8',\n\t\"CenterDot;\":                       '\\U000000B7',\n\t\"Cfr;\":                             '\\U0000212D',\n\t\"Chi;\":                             '\\U000003A7',\n\t\"CircleDot;\":                       '\\U00002299',\n\t\"CircleMinus;\":                     '\\U00002296',\n\t\"CirclePlus;\":                      '\\U00002295',\n\t\"CircleTimes;\":                     '\\U00002297',\n\t\"ClockwiseContourIntegral;\":        '\\U00002232',\n\t\"CloseCurlyDoubleQuote;\":           '\\U0000201D',\n\t\"CloseCurlyQuote;\":                 '\\U00002019',\n\t\"Colon;\":                           '\\U00002237',\n\t\"Colone;\":                          '\\U00002A74',\n\t\"Congruent;\":                       '\\U00002261',\n\t\"Conint;\":                          '\\U0000222F',\n\t\"ContourIntegral;\":                 '\\U0000222E',\n\t\"Copf;\":                            '\\U00002102',\n\t\"Coproduct;\":                       '\\U00002210',\n\t\"CounterClockwiseContourIntegral;\": '\\U00002233',\n\t\"Cross;\":                           '\\U00002A2F',\n\t\"Cscr;\":                            '\\U0001D49E',\n\t\"Cup;\":                             '\\U000022D3',\n\t\"CupCap;\":                          '\\U0000224D',\n\t\"DD;\":                              '\\U00002145',\n\t\"DDotrahd;\":                        '\\U00002911',\n\t\"DJcy;\":                            '\\U00000402',\n\t\"DScy;\":                            '\\U00000405',\n\t\"DZcy;\":                            '\\U0000040F',\n\t\"Dagger;\":                          '\\U00002021',\n\t\"Darr;\":                            '\\U000021A1',\n\t\"Dashv;\":                           '\\U00002AE4',\n\t\"Dcaron;\":                          '\\U0000010E',\n\t\"Dcy;\":                             '\\U00000414',\n\t\"Del;\":                             '\\U00002207',\n\t\"Delta;\":                           '\\U00000394',\n\t\"Dfr;\":                             '\\U0001D507',\n\t\"DiacriticalAcute;\":                '\\U000000B4',\n\t\"DiacriticalDot;\":                  '\\U000002D9',\n\t\"DiacriticalDoubleAcute;\":          '\\U000002DD',\n\t\"DiacriticalGrave;\":                '\\U00000060',\n\t\"DiacriticalTilde;\":                '\\U000002DC',\n\t\"Diamond;\":                         '\\U000022C4',\n\t\"DifferentialD;\":                   '\\U00002146',\n\t\"Dopf;\":                            '\\U0001D53B',\n\t\"Dot;\":                             '\\U000000A8',\n\t\"DotDot;\":                          '\\U000020DC',\n\t\"DotEqual;\":                        '\\U00002250',\n\t\"DoubleContourIntegral;\":           '\\U0000222F',\n\t\"DoubleDot;\":                       '\\U000000A8',\n\t\"DoubleDownArrow;\":                 '\\U000021D3',\n\t\"DoubleLeftArrow;\":                 '\\U000021D0',\n\t\"DoubleLeftRightArrow;\":            '\\U000021D4',\n\t\"DoubleLeftTee;\":                   '\\U00002AE4',\n\t\"DoubleLongLeftArrow;\":             '\\U000027F8',\n\t\"DoubleLongLeftRightArrow;\":        '\\U000027FA',\n\t\"DoubleLongRightArrow;\":            '\\U000027F9',\n\t\"DoubleRightArrow;\":                '\\U000021D2',\n\t\"DoubleRightTee;\":                  '\\U000022A8',\n\t\"DoubleUpArrow;\":                   '\\U000021D1',\n\t\"DoubleUpDownArrow;\":               '\\U000021D5',\n\t\"DoubleVerticalBar;\":               '\\U00002225',\n\t\"DownArrow;\":                       '\\U00002193',\n\t\"DownArrowBar;\":                    '\\U00002913',\n\t\"DownArrowUpArrow;\":                '\\U000021F5',\n\t\"DownBreve;\":                       '\\U00000311',\n\t\"DownLeftRightVector;\":             '\\U00002950',\n\t\"DownLeftTeeVector;\":               '\\U0000295E',\n\t\"DownLeftVector;\":                  '\\U000021BD',\n\t\"DownLeftVectorBar;\":               '\\U00002956',\n\t\"DownRightTeeVector;\":              '\\U0000295F',\n\t\"DownRightVector;\":                 '\\U000021C1',\n\t\"DownRightVectorBar;\":              '\\U00002957',\n\t\"DownTee;\":                         '\\U000022A4',\n\t\"DownTeeArrow;\":                    '\\U000021A7',\n\t\"Downarrow;\":                       '\\U000021D3',\n\t\"Dscr;\":                            '\\U0001D49F',\n\t\"Dstrok;\":                          '\\U00000110',\n\t\"ENG;\":                             '\\U0000014A',\n\t\"ETH;\":                             '\\U000000D0',\n\t\"Eacute;\":                          '\\U000000C9',\n\t\"Ecaron;\":                          '\\U0000011A',\n\t\"Ecirc;\":                           '\\U000000CA',\n\t\"Ecy;\":                             '\\U0000042D',\n\t\"Edot;\":                            '\\U00000116',\n\t\"Efr;\":                             '\\U0001D508',\n\t\"Egrave;\":                          '\\U000000C8',\n\t\"Element;\":                         '\\U00002208',\n\t\"Emacr;\":                           '\\U00000112',\n\t\"EmptySmallSquare;\":                '\\U000025FB',\n\t\"EmptyVerySmallSquare;\":            '\\U000025AB',\n\t\"Eogon;\":                           '\\U00000118',\n\t\"Eopf;\":                            '\\U0001D53C',\n\t\"Epsilon;\":                         '\\U00000395',\n\t\"Equal;\":                           '\\U00002A75',\n\t\"EqualTilde;\":                      '\\U00002242',\n\t\"Equilibrium;\":                     '\\U000021CC',\n\t\"Escr;\":                            '\\U00002130',\n\t\"Esim;\":                            '\\U00002A73',\n\t\"Eta;\":                             '\\U00000397',\n\t\"Euml;\":                            '\\U000000CB',\n\t\"Exists;\":                          '\\U00002203',\n\t\"ExponentialE;\":                    '\\U00002147',\n\t\"Fcy;\":                             '\\U00000424',\n\t\"Ffr;\":                             '\\U0001D509',\n\t\"FilledSmallSquare;\":               '\\U000025FC',\n\t\"FilledVerySmallSquare;\":           '\\U000025AA',\n\t\"Fopf;\":                            '\\U0001D53D',\n\t\"ForAll;\":                          '\\U00002200',\n\t\"Fouriertrf;\":                      '\\U00002131',\n\t\"Fscr;\":                            '\\U00002131',\n\t\"GJcy;\":                            '\\U00000403',\n\t\"GT;\":                              '\\U0000003E',\n\t\"Gamma;\":                           '\\U00000393',\n\t\"Gammad;\":                          '\\U000003DC',\n\t\"Gbreve;\":                          '\\U0000011E',\n\t\"Gcedil;\":                          '\\U00000122',\n\t\"Gcirc;\":                           '\\U0000011C',\n\t\"Gcy;\":                             '\\U00000413',\n\t\"Gdot;\":                            '\\U00000120',\n\t\"Gfr;\":                             '\\U0001D50A',\n\t\"Gg;\":                              '\\U000022D9',\n\t\"Gopf;\":                            '\\U0001D53E',\n\t\"GreaterEqual;\":                    '\\U00002265',\n\t\"GreaterEqualLess;\":                '\\U000022DB',\n\t\"GreaterFullEqual;\":                '\\U00002267',\n\t\"GreaterGreater;\":                  '\\U00002AA2',\n\t\"GreaterLess;\":                     '\\U00002277',\n\t\"GreaterSlantEqual;\":               '\\U00002A7E',\n\t\"GreaterTilde;\":                    '\\U00002273',\n\t\"Gscr;\":                            '\\U0001D4A2',\n\t\"Gt;\":                              '\\U0000226B',\n\t\"HARDcy;\":                          '\\U0000042A',\n\t\"Hacek;\":                           '\\U000002C7',\n\t\"Hat;\":                             '\\U0000005E',\n\t\"Hcirc;\":                           '\\U00000124',\n\t\"Hfr;\":                             '\\U0000210C',\n\t\"HilbertSpace;\":                    '\\U0000210B',\n\t\"Hopf;\":                            '\\U0000210D',\n\t\"HorizontalLine;\":                  '\\U00002500',\n\t\"Hscr;\":                            '\\U0000210B',\n\t\"Hstrok;\":                          '\\U00000126',\n\t\"HumpDownHump;\":                    '\\U0000224E',\n\t\"HumpEqual;\":                       '\\U0000224F',\n\t\"IEcy;\":                            '\\U00000415',\n\t\"IJlig;\":                           '\\U00000132',\n\t\"IOcy;\":                            '\\U00000401',\n\t\"Iacute;\":                          '\\U000000CD',\n\t\"Icirc;\":                           '\\U000000CE',\n\t\"Icy;\":                             '\\U00000418',\n\t\"Idot;\":                            '\\U00000130',\n\t\"Ifr;\":                             '\\U00002111',\n\t\"Igrave;\":                          '\\U000000CC',\n\t\"Im;\":                              '\\U00002111',\n\t\"Imacr;\":                           '\\U0000012A',\n\t\"ImaginaryI;\":                      '\\U00002148',\n\t\"Implies;\":                         '\\U000021D2',\n\t\"Int;\":                             '\\U0000222C',\n\t\"Integral;\":                        '\\U0000222B',\n\t\"Intersection;\":                    '\\U000022C2',\n\t\"InvisibleComma;\":                  '\\U00002063',\n\t\"InvisibleTimes;\":                  '\\U00002062',\n\t\"Iogon;\":                           '\\U0000012E',\n\t\"Iopf;\":                            '\\U0001D540',\n\t\"Iota;\":                            '\\U00000399',\n\t\"Iscr;\":                            '\\U00002110',\n\t\"Itilde;\":                          '\\U00000128',\n\t\"Iukcy;\":                           '\\U00000406',\n\t\"Iuml;\":                            '\\U000000CF',\n\t\"Jcirc;\":                           '\\U00000134',\n\t\"Jcy;\":                             '\\U00000419',\n\t\"Jfr;\":                             '\\U0001D50D',\n\t\"Jopf;\":                            '\\U0001D541',\n\t\"Jscr;\":                            '\\U0001D4A5',\n\t\"Jsercy;\":                          '\\U00000408',\n\t\"Jukcy;\":                           '\\U00000404',\n\t\"KHcy;\":                            '\\U00000425',\n\t\"KJcy;\":                            '\\U0000040C',\n\t\"Kappa;\":                           '\\U0000039A',\n\t\"Kcedil;\":                          '\\U00000136',\n\t\"Kcy;\":                             '\\U0000041A',\n\t\"Kfr;\":                             '\\U0001D50E',\n\t\"Kopf;\":                            '\\U0001D542',\n\t\"Kscr;\":                            '\\U0001D4A6',\n\t\"LJcy;\":                            '\\U00000409',\n\t\"LT;\":                              '\\U0000003C',\n\t\"Lacute;\":                          '\\U00000139',\n\t\"Lambda;\":                          '\\U0000039B',\n\t\"Lang;\":                            '\\U000027EA',\n\t\"Laplacetrf;\":                      '\\U00002112',\n\t\"Larr;\":                            '\\U0000219E',\n\t\"Lcaron;\":                          '\\U0000013D',\n\t\"Lcedil;\":                          '\\U0000013B',\n\t\"Lcy;\":                             '\\U0000041B',\n\t\"LeftAngleBracket;\":                '\\U000027E8',\n\t\"LeftArrow;\":                       '\\U00002190',\n\t\"LeftArrowBar;\":                    '\\U000021E4',\n\t\"LeftArrowRightArrow;\":             '\\U000021C6',\n\t\"LeftCeiling;\":                     '\\U00002308',\n\t\"LeftDoubleBracket;\":               '\\U000027E6',\n\t\"LeftDownTeeVector;\":               '\\U00002961',\n\t\"LeftDownVector;\":                  '\\U000021C3',\n\t\"LeftDownVectorBar;\":               '\\U00002959',\n\t\"LeftFloor;\":                       '\\U0000230A',\n\t\"LeftRightArrow;\":                  '\\U00002194',\n\t\"LeftRightVector;\":                 '\\U0000294E',\n\t\"LeftTee;\":                         '\\U000022A3',\n\t\"LeftTeeArrow;\":                    '\\U000021A4',\n\t\"LeftTeeVector;\":                   '\\U0000295A',\n\t\"LeftTriangle;\":                    '\\U000022B2',\n\t\"LeftTriangleBar;\":                 '\\U000029CF',\n\t\"LeftTriangleEqual;\":               '\\U000022B4',\n\t\"LeftUpDownVector;\":                '\\U00002951',\n\t\"LeftUpTeeVector;\":                 '\\U00002960',\n\t\"LeftUpVector;\":                    '\\U000021BF',\n\t\"LeftUpVectorBar;\":                 '\\U00002958',\n\t\"LeftVector;\":                      '\\U000021BC',\n\t\"LeftVectorBar;\":                   '\\U00002952',\n\t\"Leftarrow;\":                       '\\U000021D0',\n\t\"Leftrightarrow;\":                  '\\U000021D4',\n\t\"LessEqualGreater;\":                '\\U000022DA',\n\t\"LessFullEqual;\":                   '\\U00002266',\n\t\"LessGreater;\":                     '\\U00002276',\n\t\"LessLess;\":                        '\\U00002AA1',\n\t\"LessSlantEqual;\":                  '\\U00002A7D',\n\t\"LessTilde;\":                       '\\U00002272',\n\t\"Lfr;\":                             '\\U0001D50F',\n\t\"Ll;\":                              '\\U000022D8',\n\t\"Lleftarrow;\":                      '\\U000021DA',\n\t\"Lmidot;\":                          '\\U0000013F',\n\t\"LongLeftArrow;\":                   '\\U000027F5',\n\t\"LongLeftRightArrow;\":              '\\U000027F7',\n\t\"LongRightArrow;\":                  '\\U000027F6',\n\t\"Longleftarrow;\":                   '\\U000027F8',\n\t\"Longleftrightarrow;\":              '\\U000027FA',\n\t\"Longrightarrow;\":                  '\\U000027F9',\n\t\"Lopf;\":                            '\\U0001D543',\n\t\"LowerLeftArrow;\":                  '\\U00002199',\n\t\"LowerRightArrow;\":                 '\\U00002198',\n\t\"Lscr;\":                            '\\U00002112',\n\t\"Lsh;\":                             '\\U000021B0',\n\t\"Lstrok;\":                          '\\U00000141',\n\t\"Lt;\":                              '\\U0000226A',\n\t\"Map;\":                             '\\U00002905',\n\t\"Mcy;\":                             '\\U0000041C',\n\t\"MediumSpace;\":                     '\\U0000205F',\n\t\"Mellintrf;\":                       '\\U00002133',\n\t\"Mfr;\":                             '\\U0001D510',\n\t\"MinusPlus;\":                       '\\U00002213',\n\t\"Mopf;\":                            '\\U0001D544',\n\t\"Mscr;\":                            '\\U00002133',\n\t\"Mu;\":                              '\\U0000039C',\n\t\"NJcy;\":                            '\\U0000040A',\n\t\"Nacute;\":                          '\\U00000143',\n\t\"Ncaron;\":                          '\\U00000147',\n\t\"Ncedil;\":                          '\\U00000145',\n\t\"Ncy;\":                             '\\U0000041D',\n\t\"NegativeMediumSpace;\":             '\\U0000200B',\n\t\"NegativeThickSpace;\":              '\\U0000200B',\n\t\"NegativeThinSpace;\":               '\\U0000200B',\n\t\"NegativeVeryThinSpace;\":           '\\U0000200B',\n\t\"NestedGreaterGreater;\":            '\\U0000226B',\n\t\"NestedLessLess;\":                  '\\U0000226A',\n\t\"NewLine;\":                         '\\U0000000A',\n\t\"Nfr;\":                             '\\U0001D511',\n\t\"NoBreak;\":                         '\\U00002060',\n\t\"NonBreakingSpace;\":                '\\U000000A0',\n\t\"Nopf;\":                            '\\U00002115',\n\t\"Not;\":                             '\\U00002AEC',\n\t\"NotCongruent;\":                    '\\U00002262',\n\t\"NotCupCap;\":                       '\\U0000226D',\n\t\"NotDoubleVerticalBar;\":            '\\U00002226',\n\t\"NotElement;\":                      '\\U00002209',\n\t\"NotEqual;\":                        '\\U00002260',\n\t\"NotExists;\":                       '\\U00002204',\n\t\"NotGreater;\":                      '\\U0000226F',\n\t\"NotGreaterEqual;\":                 '\\U00002271',\n\t\"NotGreaterLess;\":                  '\\U00002279',\n\t\"NotGreaterTilde;\":                 '\\U00002275',\n\t\"NotLeftTriangle;\":                 '\\U000022EA',\n\t\"NotLeftTriangleEqual;\":            '\\U000022EC',\n\t\"NotLess;\":                         '\\U0000226E',\n\t\"NotLessEqual;\":                    '\\U00002270',\n\t\"NotLessGreater;\":                  '\\U00002278',\n\t\"NotLessTilde;\":                    '\\U00002274',\n\t\"NotPrecedes;\":                     '\\U00002280',\n\t\"NotPrecedesSlantEqual;\":           '\\U000022E0',\n\t\"NotReverseElement;\":               '\\U0000220C',\n\t\"NotRightTriangle;\":                '\\U000022EB',\n\t\"NotRightTriangleEqual;\":           '\\U000022ED',\n\t\"NotSquareSubsetEqual;\":            '\\U000022E2',\n\t\"NotSquareSupersetEqual;\":          '\\U000022E3',\n\t\"NotSubsetEqual;\":                  '\\U00002288',\n\t\"NotSucceeds;\":                     '\\U00002281',\n\t\"NotSucceedsSlantEqual;\":           '\\U000022E1',\n\t\"NotSupersetEqual;\":                '\\U00002289',\n\t\"NotTilde;\":                        '\\U00002241',\n\t\"NotTildeEqual;\":                   '\\U00002244',\n\t\"NotTildeFullEqual;\":               '\\U00002247',\n\t\"NotTildeTilde;\":                   '\\U00002249',\n\t\"NotVerticalBar;\":                  '\\U00002224',\n\t\"Nscr;\":                            '\\U0001D4A9',\n\t\"Ntilde;\":                          '\\U000000D1',\n\t\"Nu;\":                              '\\U0000039D',\n\t\"OElig;\":                           '\\U00000152',\n\t\"Oacute;\":                          '\\U000000D3',\n\t\"Ocirc;\":                           '\\U000000D4',\n\t\"Ocy;\":                             '\\U0000041E',\n\t\"Odblac;\":                          '\\U00000150',\n\t\"Ofr;\":                             '\\U0001D512',\n\t\"Ograve;\":                          '\\U000000D2',\n\t\"Omacr;\":                           '\\U0000014C',\n\t\"Omega;\":                           '\\U000003A9',\n\t\"Omicron;\":                         '\\U0000039F',\n\t\"Oopf;\":                            '\\U0001D546',\n\t\"OpenCurlyDoubleQuote;\":            '\\U0000201C',\n\t\"OpenCurlyQuote;\":                  '\\U00002018',\n\t\"Or;\":                              '\\U00002A54',\n\t\"Oscr;\":                            '\\U0001D4AA',\n\t\"Oslash;\":                          '\\U000000D8',\n\t\"Otilde;\":                          '\\U000000D5',\n\t\"Otimes;\":                          '\\U00002A37',\n\t\"Ouml;\":                            '\\U000000D6',\n\t\"OverBar;\":                         '\\U0000203E',\n\t\"OverBrace;\":                       '\\U000023DE',\n\t\"OverBracket;\":                     '\\U000023B4',\n\t\"OverParenthesis;\":                 '\\U000023DC',\n\t\"PartialD;\":                        '\\U00002202',\n\t\"Pcy;\":                             '\\U0000041F',\n\t\"Pfr;\":                             '\\U0001D513',\n\t\"Phi;\":                             '\\U000003A6',\n\t\"Pi;\":                              '\\U000003A0',\n\t\"PlusMinus;\":                       '\\U000000B1',\n\t\"Poincareplane;\":                   '\\U0000210C',\n\t\"Popf;\":                            '\\U00002119',\n\t\"Pr;\":                              '\\U00002ABB',\n\t\"Precedes;\":                        '\\U0000227A',\n\t\"PrecedesEqual;\":                   '\\U00002AAF',\n\t\"PrecedesSlantEqual;\":              '\\U0000227C',\n\t\"PrecedesTilde;\":                   '\\U0000227E',\n\t\"Prime;\":                           '\\U00002033',\n\t\"Product;\":                         '\\U0000220F',\n\t\"Proportion;\":                      '\\U00002237',\n\t\"Proportional;\":                    '\\U0000221D',\n\t\"Pscr;\":                            '\\U0001D4AB',\n\t\"Psi;\":                             '\\U000003A8',\n\t\"QUOT;\":                            '\\U00000022',\n\t\"Qfr;\":                             '\\U0001D514',\n\t\"Qopf;\":                            '\\U0000211A',\n\t\"Qscr;\":                            '\\U0001D4AC',\n\t\"RBarr;\":                           '\\U00002910',\n\t\"REG;\":                             '\\U000000AE',\n\t\"Racute;\":                          '\\U00000154',\n\t\"Rang;\":                            '\\U000027EB',\n\t\"Rarr;\":                            '\\U000021A0',\n\t\"Rarrtl;\":                          '\\U00002916',\n\t\"Rcaron;\":                          '\\U00000158',\n\t\"Rcedil;\":                          '\\U00000156',\n\t\"Rcy;\":                             '\\U00000420',\n\t\"Re;\":                              '\\U0000211C',\n\t\"ReverseElement;\":                  '\\U0000220B',\n\t\"ReverseEquilibrium;\":              '\\U000021CB',\n\t\"ReverseUpEquilibrium;\":            '\\U0000296F',\n\t\"Rfr;\":                             '\\U0000211C',\n\t\"Rho;\":                             '\\U000003A1',\n\t\"RightAngleBracket;\":               '\\U000027E9',\n\t\"RightArrow;\":                      '\\U00002192',\n\t\"RightArrowBar;\":                   '\\U000021E5',\n\t\"RightArrowLeftArrow;\":             '\\U000021C4',\n\t\"RightCeiling;\":                    '\\U00002309',\n\t\"RightDoubleBracket;\":              '\\U000027E7',\n\t\"RightDownTeeVector;\":              '\\U0000295D',\n\t\"RightDownVector;\":                 '\\U000021C2',\n\t\"RightDownVectorBar;\":              '\\U00002955',\n\t\"RightFloor;\":                      '\\U0000230B',\n\t\"RightTee;\":                        '\\U000022A2',\n\t\"RightTeeArrow;\":                   '\\U000021A6',\n\t\"RightTeeVector;\":                  '\\U0000295B',\n\t\"RightTriangle;\":                   '\\U000022B3',\n\t\"RightTriangleBar;\":                '\\U000029D0',\n\t\"RightTriangleEqual;\":              '\\U000022B5',\n\t\"RightUpDownVector;\":               '\\U0000294F',\n\t\"RightUpTeeVector;\":                '\\U0000295C',\n\t\"RightUpVector;\":                   '\\U000021BE',\n\t\"RightUpVectorBar;\":                '\\U00002954',\n\t\"RightVector;\":                     '\\U000021C0',\n\t\"RightVectorBar;\":                  '\\U00002953',\n\t\"Rightarrow;\":                      '\\U000021D2',\n\t\"Ropf;\":                            '\\U0000211D',\n\t\"RoundImplies;\":                    '\\U00002970',\n\t\"Rrightarrow;\":                     '\\U000021DB',\n\t\"Rscr;\":                            '\\U0000211B',\n\t\"Rsh;\":                             '\\U000021B1',\n\t\"RuleDelayed;\":                     '\\U000029F4',\n\t\"SHCHcy;\":                          '\\U00000429',\n\t\"SHcy;\":                            '\\U00000428',\n\t\"SOFTcy;\":                          '\\U0000042C',\n\t\"Sacute;\":                          '\\U0000015A',\n\t\"Sc;\":                              '\\U00002ABC',\n\t\"Scaron;\":                          '\\U00000160',\n\t\"Scedil;\":                          '\\U0000015E',\n\t\"Scirc;\":                           '\\U0000015C',\n\t\"Scy;\":                             '\\U00000421',\n\t\"Sfr;\":                             '\\U0001D516',\n\t\"ShortDownArrow;\":                  '\\U00002193',\n\t\"ShortLeftArrow;\":                  '\\U00002190',\n\t\"ShortRightArrow;\":                 '\\U00002192',\n\t\"ShortUpArrow;\":                    '\\U00002191',\n\t\"Sigma;\":                           '\\U000003A3',\n\t\"SmallCircle;\":                     '\\U00002218',\n\t\"Sopf;\":                            '\\U0001D54A',\n\t\"Sqrt;\":                            '\\U0000221A',\n\t\"Square;\":                          '\\U000025A1',\n\t\"SquareIntersection;\":              '\\U00002293',\n\t\"SquareSubset;\":                    '\\U0000228F',\n\t\"SquareSubsetEqual;\":               '\\U00002291',\n\t\"SquareSuperset;\":                  '\\U00002290',\n\t\"SquareSupersetEqual;\":             '\\U00002292',\n\t\"SquareUnion;\":                     '\\U00002294',\n\t\"Sscr;\":                            '\\U0001D4AE',\n\t\"Star;\":                            '\\U000022C6',\n\t\"Sub;\":                             '\\U000022D0',\n\t\"Subset;\":                          '\\U000022D0',\n\t\"SubsetEqual;\":                     '\\U00002286',\n\t\"Succeeds;\":                        '\\U0000227B',\n\t\"SucceedsEqual;\":                   '\\U00002AB0',\n\t\"SucceedsSlantEqual;\":              '\\U0000227D',\n\t\"SucceedsTilde;\":                   '\\U0000227F',\n\t\"SuchThat;\":                        '\\U0000220B',\n\t\"Sum;\":                             '\\U00002211',\n\t\"Sup;\":                             '\\U000022D1',\n\t\"Superset;\":                        '\\U00002283',\n\t\"SupersetEqual;\":                   '\\U00002287',\n\t\"Supset;\":                          '\\U000022D1',\n\t\"THORN;\":                           '\\U000000DE',\n\t\"TRADE;\":                           '\\U00002122',\n\t\"TSHcy;\":                           '\\U0000040B',\n\t\"TScy;\":                            '\\U00000426',\n\t\"Tab;\":                             '\\U00000009',\n\t\"Tau;\":                             '\\U000003A4',\n\t\"Tcaron;\":                          '\\U00000164',\n\t\"Tcedil;\":                          '\\U00000162',\n\t\"Tcy;\":                             '\\U00000422',\n\t\"Tfr;\":                             '\\U0001D517',\n\t\"Therefore;\":                       '\\U00002234',\n\t\"Theta;\":                           '\\U00000398',\n\t\"ThinSpace;\":                       '\\U00002009',\n\t\"Tilde;\":                           '\\U0000223C',\n\t\"TildeEqual;\":                      '\\U00002243',\n\t\"TildeFullEqual;\":                  '\\U00002245',\n\t\"TildeTilde;\":                      '\\U00002248',\n\t\"Topf;\":                            '\\U0001D54B',\n\t\"TripleDot;\":                       '\\U000020DB',\n\t\"Tscr;\":                            '\\U0001D4AF',\n\t\"Tstrok;\":                          '\\U00000166',\n\t\"Uacute;\":                          '\\U000000DA',\n\t\"Uarr;\":                            '\\U0000219F',\n\t\"Uarrocir;\":                        '\\U00002949',\n\t\"Ubrcy;\":                           '\\U0000040E',\n\t\"Ubreve;\":                          '\\U0000016C',\n\t\"Ucirc;\":                           '\\U000000DB',\n\t\"Ucy;\":                             '\\U00000423',\n\t\"Udblac;\":                          '\\U00000170',\n\t\"Ufr;\":                             '\\U0001D518',\n\t\"Ugrave;\":                          '\\U000000D9',\n\t\"Umacr;\":                           '\\U0000016A',\n\t\"UnderBar;\":                        '\\U0000005F',\n\t\"UnderBrace;\":                      '\\U000023DF',\n\t\"UnderBracket;\":                    '\\U000023B5',\n\t\"UnderParenthesis;\":                '\\U000023DD',\n\t\"Union;\":                           '\\U000022C3',\n\t\"UnionPlus;\":                       '\\U0000228E',\n\t\"Uogon;\":                           '\\U00000172',\n\t\"Uopf;\":                            '\\U0001D54C',\n\t\"UpArrow;\":                         '\\U00002191',\n\t\"UpArrowBar;\":                      '\\U00002912',\n\t\"UpArrowDownArrow;\":                '\\U000021C5',\n\t\"UpDownArrow;\":                     '\\U00002195',\n\t\"UpEquilibrium;\":                   '\\U0000296E',\n\t\"UpTee;\":                           '\\U000022A5',\n\t\"UpTeeArrow;\":                      '\\U000021A5',\n\t\"Uparrow;\":                         '\\U000021D1',\n\t\"Updownarrow;\":                     '\\U000021D5',\n\t\"UpperLeftArrow;\":                  '\\U00002196',\n\t\"UpperRightArrow;\":                 '\\U00002197',\n\t\"Upsi;\":                            '\\U000003D2',\n\t\"Upsilon;\":                         '\\U000003A5',\n\t\"Uring;\":                           '\\U0000016E',\n\t\"Uscr;\":                            '\\U0001D4B0',\n\t\"Utilde;\":                          '\\U00000168',\n\t\"Uuml;\":                            '\\U000000DC',\n\t\"VDash;\":                           '\\U000022AB',\n\t\"Vbar;\":                            '\\U00002AEB',\n\t\"Vcy;\":                             '\\U00000412',\n\t\"Vdash;\":                           '\\U000022A9',\n\t\"Vdashl;\":                          '\\U00002AE6',\n\t\"Vee;\":                             '\\U000022C1',\n\t\"Verbar;\":                          '\\U00002016',\n\t\"Vert;\":                            '\\U00002016',\n\t\"VerticalBar;\":                     '\\U00002223',\n\t\"VerticalLine;\":                    '\\U0000007C',\n\t\"VerticalSeparator;\":               '\\U00002758',\n\t\"VerticalTilde;\":                   '\\U00002240',\n\t\"VeryThinSpace;\":                   '\\U0000200A',\n\t\"Vfr;\":                             '\\U0001D519',\n\t\"Vopf;\":                            '\\U0001D54D',\n\t\"Vscr;\":                            '\\U0001D4B1',\n\t\"Vvdash;\":                          '\\U000022AA',\n\t\"Wcirc;\":                           '\\U00000174',\n\t\"Wedge;\":                           '\\U000022C0',\n\t\"Wfr;\":                             '\\U0001D51A',\n\t\"Wopf;\":                            '\\U0001D54E',\n\t\"Wscr;\":                            '\\U0001D4B2',\n\t\"Xfr;\":                             '\\U0001D51B',\n\t\"Xi;\":                              '\\U0000039E',\n\t\"Xopf;\":                            '\\U0001D54F',\n\t\"Xscr;\":                            '\\U0001D4B3',\n\t\"YAcy;\":                            '\\U0000042F',\n\t\"YIcy;\":                            '\\U00000407',\n\t\"YUcy;\":                            '\\U0000042E',\n\t\"Yacute;\":                          '\\U000000DD',\n\t\"Ycirc;\":                           '\\U00000176',\n\t\"Ycy;\":                             '\\U0000042B',\n\t\"Yfr;\":                             '\\U0001D51C',\n\t\"Yopf;\":                            '\\U0001D550',\n\t\"Yscr;\":                            '\\U0001D4B4',\n\t\"Yuml;\":                            '\\U00000178',\n\t\"ZHcy;\":                            '\\U00000416',\n\t\"Zacute;\":                          '\\U00000179',\n\t\"Zcaron;\":                          '\\U0000017D',\n\t\"Zcy;\":                             '\\U00000417',\n\t\"Zdot;\":                            '\\U0000017B',\n\t\"ZeroWidthSpace;\":                  '\\U0000200B',\n\t\"Zeta;\":                            '\\U00000396',\n\t\"Zfr;\":                             '\\U00002128',\n\t\"Zopf;\":                            '\\U00002124',\n\t\"Zscr;\":                            '\\U0001D4B5',\n\t\"aacute;\":                          '\\U000000E1',\n\t\"abreve;\":                          '\\U00000103',\n\t\"ac;\":                              '\\U0000223E',\n\t\"acd;\":                             '\\U0000223F',\n\t\"acirc;\":                           '\\U000000E2',\n\t\"acute;\":                           '\\U000000B4',\n\t\"acy;\":                             '\\U00000430',\n\t\"aelig;\":                           '\\U000000E6',\n\t\"af;\":                              '\\U00002061',\n\t\"afr;\":                             '\\U0001D51E',\n\t\"agrave;\":                          '\\U000000E0',\n\t\"alefsym;\":                         '\\U00002135',\n\t\"aleph;\":                           '\\U00002135',\n\t\"alpha;\":                           '\\U000003B1',\n\t\"amacr;\":                           '\\U00000101',\n\t\"amalg;\":                           '\\U00002A3F',\n\t\"amp;\":                             '\\U00000026',\n\t\"and;\":                             '\\U00002227',\n\t\"andand;\":                          '\\U00002A55',\n\t\"andd;\":                            '\\U00002A5C',\n\t\"andslope;\":                        '\\U00002A58',\n\t\"andv;\":                            '\\U00002A5A',\n\t\"ang;\":                             '\\U00002220',\n\t\"ange;\":                            '\\U000029A4',\n\t\"angle;\":                           '\\U00002220',\n\t\"angmsd;\":                          '\\U00002221',\n\t\"angmsdaa;\":                        '\\U000029A8',\n\t\"angmsdab;\":                        '\\U000029A9',\n\t\"angmsdac;\":                        '\\U000029AA',\n\t\"angmsdad;\":                        '\\U000029AB',\n\t\"angmsdae;\":                        '\\U000029AC',\n\t\"angmsdaf;\":                        '\\U000029AD',\n\t\"angmsdag;\":                        '\\U000029AE',\n\t\"angmsdah;\":                        '\\U000029AF',\n\t\"angrt;\":                           '\\U0000221F',\n\t\"angrtvb;\":                         '\\U000022BE',\n\t\"angrtvbd;\":                        '\\U0000299D',\n\t\"angsph;\":                          '\\U00002222',\n\t\"angst;\":                           '\\U000000C5',\n\t\"angzarr;\":                         '\\U0000237C',\n\t\"aogon;\":                           '\\U00000105',\n\t\"aopf;\":                            '\\U0001D552',\n\t\"ap;\":                              '\\U00002248',\n\t\"apE;\":                             '\\U00002A70',\n\t\"apacir;\":                          '\\U00002A6F',\n\t\"ape;\":                             '\\U0000224A',\n\t\"apid;\":                            '\\U0000224B',\n\t\"apos;\":                            '\\U00000027',\n\t\"approx;\":                          '\\U00002248',\n\t\"approxeq;\":                        '\\U0000224A',\n\t\"aring;\":                           '\\U000000E5',\n\t\"ascr;\":                            '\\U0001D4B6',\n\t\"ast;\":                             '\\U0000002A',\n\t\"asymp;\":                           '\\U00002248',\n\t\"asympeq;\":                         '\\U0000224D',\n\t\"atilde;\":                          '\\U000000E3',\n\t\"auml;\":                            '\\U000000E4',\n\t\"awconint;\":                        '\\U00002233',\n\t\"awint;\":                           '\\U00002A11',\n\t\"bNot;\":                            '\\U00002AED',\n\t\"backcong;\":                        '\\U0000224C',\n\t\"backepsilon;\":                     '\\U000003F6',\n\t\"backprime;\":                       '\\U00002035',\n\t\"backsim;\":                         '\\U0000223D',\n\t\"backsimeq;\":                       '\\U000022CD',\n\t\"barvee;\":                          '\\U000022BD',\n\t\"barwed;\":                          '\\U00002305',\n\t\"barwedge;\":                        '\\U00002305',\n\t\"bbrk;\":                            '\\U000023B5',\n\t\"bbrktbrk;\":                        '\\U000023B6',\n\t\"bcong;\":                           '\\U0000224C',\n\t\"bcy;\":                             '\\U00000431',\n\t\"bdquo;\":                           '\\U0000201E',\n\t\"becaus;\":                          '\\U00002235',\n\t\"because;\":                         '\\U00002235',\n\t\"bemptyv;\":                         '\\U000029B0',\n\t\"bepsi;\":                           '\\U000003F6',\n\t\"bernou;\":                          '\\U0000212C',\n\t\"beta;\":                            '\\U000003B2',\n\t\"beth;\":                            '\\U00002136',\n\t\"between;\":                         '\\U0000226C',\n\t\"bfr;\":                             '\\U0001D51F',\n\t\"bigcap;\":                          '\\U000022C2',\n\t\"bigcirc;\":                         '\\U000025EF',\n\t\"bigcup;\":                          '\\U000022C3',\n\t\"bigodot;\":                         '\\U00002A00',\n\t\"bigoplus;\":                        '\\U00002A01',\n\t\"bigotimes;\":                       '\\U00002A02',\n\t\"bigsqcup;\":                        '\\U00002A06',\n\t\"bigstar;\":                         '\\U00002605',\n\t\"bigtriangledown;\":                 '\\U000025BD',\n\t\"bigtriangleup;\":                   '\\U000025B3',\n\t\"biguplus;\":                        '\\U00002A04',\n\t\"bigvee;\":                          '\\U000022C1',\n\t\"bigwedge;\":                        '\\U000022C0',\n\t\"bkarow;\":                          '\\U0000290D',\n\t\"blacklozenge;\":                    '\\U000029EB',\n\t\"blacksquare;\":                     '\\U000025AA',\n\t\"blacktriangle;\":                   '\\U000025B4',\n\t\"blacktriangledown;\":               '\\U000025BE',\n\t\"blacktriangleleft;\":               '\\U000025C2',\n\t\"blacktriangleright;\":              '\\U000025B8',\n\t\"blank;\":                           '\\U00002423',\n\t\"blk12;\":                           '\\U00002592',\n\t\"blk14;\":                           '\\U00002591',\n\t\"blk34;\":                           '\\U00002593',\n\t\"block;\":                           '\\U00002588',\n\t\"bnot;\":                            '\\U00002310',\n\t\"bopf;\":                            '\\U0001D553',\n\t\"bot;\":                             '\\U000022A5',\n\t\"bottom;\":                          '\\U000022A5',\n\t\"bowtie;\":                          '\\U000022C8',\n\t\"boxDL;\":                           '\\U00002557',\n\t\"boxDR;\":                           '\\U00002554',\n\t\"boxDl;\":                           '\\U00002556',\n\t\"boxDr;\":                           '\\U00002553',\n\t\"boxH;\":                            '\\U00002550',\n\t\"boxHD;\":                           '\\U00002566',\n\t\"boxHU;\":                           '\\U00002569',\n\t\"boxHd;\":                           '\\U00002564',\n\t\"boxHu;\":                           '\\U00002567',\n\t\"boxUL;\":                           '\\U0000255D',\n\t\"boxUR;\":                           '\\U0000255A',\n\t\"boxUl;\":                           '\\U0000255C',\n\t\"boxUr;\":                           '\\U00002559',\n\t\"boxV;\":                            '\\U00002551',\n\t\"boxVH;\":                           '\\U0000256C',\n\t\"boxVL;\":                           '\\U00002563',\n\t\"boxVR;\":                           '\\U00002560',\n\t\"boxVh;\":                           '\\U0000256B',\n\t\"boxVl;\":                           '\\U00002562',\n\t\"boxVr;\":                           '\\U0000255F',\n\t\"boxbox;\":                          '\\U000029C9',\n\t\"boxdL;\":                           '\\U00002555',\n\t\"boxdR;\":                           '\\U00002552',\n\t\"boxdl;\":                           '\\U00002510',\n\t\"boxdr;\":                           '\\U0000250C',\n\t\"boxh;\":                            '\\U00002500',\n\t\"boxhD;\":                           '\\U00002565',\n\t\"boxhU;\":                           '\\U00002568',\n\t\"boxhd;\":                           '\\U0000252C',\n\t\"boxhu;\":                           '\\U00002534',\n\t\"boxminus;\":                        '\\U0000229F',\n\t\"boxplus;\":                         '\\U0000229E',\n\t\"boxtimes;\":                        '\\U000022A0',\n\t\"boxuL;\":                           '\\U0000255B',\n\t\"boxuR;\":                           '\\U00002558',\n\t\"boxul;\":                           '\\U00002518',\n\t\"boxur;\":                           '\\U00002514',\n\t\"boxv;\":                            '\\U00002502',\n\t\"boxvH;\":                           '\\U0000256A',\n\t\"boxvL;\":                           '\\U00002561',\n\t\"boxvR;\":                           '\\U0000255E',\n\t\"boxvh;\":                           '\\U0000253C',\n\t\"boxvl;\":                           '\\U00002524',\n\t\"boxvr;\":                           '\\U0000251C',\n\t\"bprime;\":                          '\\U00002035',\n\t\"breve;\":                           '\\U000002D8',\n\t\"brvbar;\":                          '\\U000000A6',\n\t\"bscr;\":                            '\\U0001D4B7',\n\t\"bsemi;\":                           '\\U0000204F',\n\t\"bsim;\":                            '\\U0000223D',\n\t\"bsime;\":                           '\\U000022CD',\n\t\"bsol;\":                            '\\U0000005C',\n\t\"bsolb;\":                           '\\U000029C5',\n\t\"bsolhsub;\":                        '\\U000027C8',\n\t\"bull;\":                            '\\U00002022',\n\t\"bullet;\":                          '\\U00002022',\n\t\"bump;\":                            '\\U0000224E',\n\t\"bumpE;\":                           '\\U00002AAE',\n\t\"bumpe;\":                           '\\U0000224F',\n\t\"bumpeq;\":                          '\\U0000224F',\n\t\"cacute;\":                          '\\U00000107',\n\t\"cap;\":                             '\\U00002229',\n\t\"capand;\":                          '\\U00002A44',\n\t\"capbrcup;\":                        '\\U00002A49',\n\t\"capcap;\":                          '\\U00002A4B',\n\t\"capcup;\":                          '\\U00002A47',\n\t\"capdot;\":                          '\\U00002A40',\n\t\"caret;\":                           '\\U00002041',\n\t\"caron;\":                           '\\U000002C7',\n\t\"ccaps;\":                           '\\U00002A4D',\n\t\"ccaron;\":                          '\\U0000010D',\n\t\"ccedil;\":                          '\\U000000E7',\n\t\"ccirc;\":                           '\\U00000109',\n\t\"ccups;\":                           '\\U00002A4C',\n\t\"ccupssm;\":                         '\\U00002A50',\n\t\"cdot;\":                            '\\U0000010B',\n\t\"cedil;\":                           '\\U000000B8',\n\t\"cemptyv;\":                         '\\U000029B2',\n\t\"cent;\":                            '\\U000000A2',\n\t\"centerdot;\":                       '\\U000000B7',\n\t\"cfr;\":                             '\\U0001D520',\n\t\"chcy;\":                            '\\U00000447',\n\t\"check;\":                           '\\U00002713',\n\t\"checkmark;\":                       '\\U00002713',\n\t\"chi;\":                             '\\U000003C7',\n\t\"cir;\":                             '\\U000025CB',\n\t\"cirE;\":                            '\\U000029C3',\n\t\"circ;\":                            '\\U000002C6',\n\t\"circeq;\":                          '\\U00002257',\n\t\"circlearrowleft;\":                 '\\U000021BA',\n\t\"circlearrowright;\":                '\\U000021BB',\n\t\"circledR;\":                        '\\U000000AE',\n\t\"circledS;\":                        '\\U000024C8',\n\t\"circledast;\":                      '\\U0000229B',\n\t\"circledcirc;\":                     '\\U0000229A',\n\t\"circleddash;\":                     '\\U0000229D',\n\t\"cire;\":                            '\\U00002257',\n\t\"cirfnint;\":                        '\\U00002A10',\n\t\"cirmid;\":                          '\\U00002AEF',\n\t\"cirscir;\":                         '\\U000029C2',\n\t\"clubs;\":                           '\\U00002663',\n\t\"clubsuit;\":                        '\\U00002663',\n\t\"colon;\":                           '\\U0000003A',\n\t\"colone;\":                          '\\U00002254',\n\t\"coloneq;\":                         '\\U00002254',\n\t\"comma;\":                           '\\U0000002C',\n\t\"commat;\":                          '\\U00000040',\n\t\"comp;\":                            '\\U00002201',\n\t\"compfn;\":                          '\\U00002218',\n\t\"complement;\":                      '\\U00002201',\n\t\"complexes;\":                       '\\U00002102',\n\t\"cong;\":                            '\\U00002245',\n\t\"congdot;\":                         '\\U00002A6D',\n\t\"conint;\":                          '\\U0000222E',\n\t\"copf;\":                            '\\U0001D554',\n\t\"coprod;\":                          '\\U00002210',\n\t\"copy;\":                            '\\U000000A9',\n\t\"copysr;\":                          '\\U00002117',\n\t\"crarr;\":                           '\\U000021B5',\n\t\"cross;\":                           '\\U00002717',\n\t\"cscr;\":                            '\\U0001D4B8',\n\t\"csub;\":                            '\\U00002ACF',\n\t\"csube;\":                           '\\U00002AD1',\n\t\"csup;\":                            '\\U00002AD0',\n\t\"csupe;\":                           '\\U00002AD2',\n\t\"ctdot;\":                           '\\U000022EF',\n\t\"cudarrl;\":                         '\\U00002938',\n\t\"cudarrr;\":                         '\\U00002935',\n\t\"cuepr;\":                           '\\U000022DE',\n\t\"cuesc;\":                           '\\U000022DF',\n\t\"cularr;\":                          '\\U000021B6',\n\t\"cularrp;\":                         '\\U0000293D',\n\t\"cup;\":                             '\\U0000222A',\n\t\"cupbrcap;\":                        '\\U00002A48',\n\t\"cupcap;\":                          '\\U00002A46',\n\t\"cupcup;\":                          '\\U00002A4A',\n\t\"cupdot;\":                          '\\U0000228D',\n\t\"cupor;\":                           '\\U00002A45',\n\t\"curarr;\":                          '\\U000021B7',\n\t\"curarrm;\":                         '\\U0000293C',\n\t\"curlyeqprec;\":                     '\\U000022DE',\n\t\"curlyeqsucc;\":                     '\\U000022DF',\n\t\"curlyvee;\":                        '\\U000022CE',\n\t\"curlywedge;\":                      '\\U000022CF',\n\t\"curren;\":                          '\\U000000A4',\n\t\"curvearrowleft;\":                  '\\U000021B6',\n\t\"curvearrowright;\":                 '\\U000021B7',\n\t\"cuvee;\":                           '\\U000022CE',\n\t\"cuwed;\":                           '\\U000022CF',\n\t\"cwconint;\":                        '\\U00002232',\n\t\"cwint;\":                           '\\U00002231',\n\t\"cylcty;\":                          '\\U0000232D',\n\t\"dArr;\":                            '\\U000021D3',\n\t\"dHar;\":                            '\\U00002965',\n\t\"dagger;\":                          '\\U00002020',\n\t\"daleth;\":                          '\\U00002138',\n\t\"darr;\":                            '\\U00002193',\n\t\"dash;\":                            '\\U00002010',\n\t\"dashv;\":                           '\\U000022A3',\n\t\"dbkarow;\":                         '\\U0000290F',\n\t\"dblac;\":                           '\\U000002DD',\n\t\"dcaron;\":                          '\\U0000010F',\n\t\"dcy;\":                             '\\U00000434',\n\t\"dd;\":                              '\\U00002146',\n\t\"ddagger;\":                         '\\U00002021',\n\t\"ddarr;\":                           '\\U000021CA',\n\t\"ddotseq;\":                         '\\U00002A77',\n\t\"deg;\":                             '\\U000000B0',\n\t\"delta;\":                           '\\U000003B4',\n\t\"demptyv;\":                         '\\U000029B1',\n\t\"dfisht;\":                          '\\U0000297F',\n\t\"dfr;\":                             '\\U0001D521',\n\t\"dharl;\":                           '\\U000021C3',\n\t\"dharr;\":                           '\\U000021C2',\n\t\"diam;\":                            '\\U000022C4',\n\t\"diamond;\":                         '\\U000022C4',\n\t\"diamondsuit;\":                     '\\U00002666',\n\t\"diams;\":                           '\\U00002666',\n\t\"die;\":                             '\\U000000A8',\n\t\"digamma;\":                         '\\U000003DD',\n\t\"disin;\":                           '\\U000022F2',\n\t\"div;\":                             '\\U000000F7',\n\t\"divide;\":                          '\\U000000F7',\n\t\"divideontimes;\":                   '\\U000022C7',\n\t\"divonx;\":                          '\\U000022C7',\n\t\"djcy;\":                            '\\U00000452',\n\t\"dlcorn;\":                          '\\U0000231E',\n\t\"dlcrop;\":                          '\\U0000230D',\n\t\"dollar;\":                          '\\U00000024',\n\t\"dopf;\":                            '\\U0001D555',\n\t\"dot;\":                             '\\U000002D9',\n\t\"doteq;\":                           '\\U00002250',\n\t\"doteqdot;\":                        '\\U00002251',\n\t\"dotminus;\":                        '\\U00002238',\n\t\"dotplus;\":                         '\\U00002214',\n\t\"dotsquare;\":                       '\\U000022A1',\n\t\"doublebarwedge;\":                  '\\U00002306',\n\t\"downarrow;\":                       '\\U00002193',\n\t\"downdownarrows;\":                  '\\U000021CA',\n\t\"downharpoonleft;\":                 '\\U000021C3',\n\t\"downharpoonright;\":                '\\U000021C2',\n\t\"drbkarow;\":                        '\\U00002910',\n\t\"drcorn;\":                          '\\U0000231F',\n\t\"drcrop;\":                          '\\U0000230C',\n\t\"dscr;\":                            '\\U0001D4B9',\n\t\"dscy;\":                            '\\U00000455',\n\t\"dsol;\":                            '\\U000029F6',\n\t\"dstrok;\":                          '\\U00000111',\n\t\"dtdot;\":                           '\\U000022F1',\n\t\"dtri;\":                            '\\U000025BF',\n\t\"dtrif;\":                           '\\U000025BE',\n\t\"duarr;\":                           '\\U000021F5',\n\t\"duhar;\":                           '\\U0000296F',\n\t\"dwangle;\":                         '\\U000029A6',\n\t\"dzcy;\":                            '\\U0000045F',\n\t\"dzigrarr;\":                        '\\U000027FF',\n\t\"eDDot;\":                           '\\U00002A77',\n\t\"eDot;\":                            '\\U00002251',\n\t\"eacute;\":                          '\\U000000E9',\n\t\"easter;\":                          '\\U00002A6E',\n\t\"ecaron;\":                          '\\U0000011B',\n\t\"ecir;\":                            '\\U00002256',\n\t\"ecirc;\":                           '\\U000000EA',\n\t\"ecolon;\":                          '\\U00002255',\n\t\"ecy;\":                             '\\U0000044D',\n\t\"edot;\":                            '\\U00000117',\n\t\"ee;\":                              '\\U00002147',\n\t\"efDot;\":                           '\\U00002252',\n\t\"efr;\":                             '\\U0001D522',\n\t\"eg;\":                              '\\U00002A9A',\n\t\"egrave;\":                          '\\U000000E8',\n\t\"egs;\":                             '\\U00002A96',\n\t\"egsdot;\":                          '\\U00002A98',\n\t\"el;\":                              '\\U00002A99',\n\t\"elinters;\":                        '\\U000023E7',\n\t\"ell;\":                             '\\U00002113',\n\t\"els;\":                             '\\U00002A95',\n\t\"elsdot;\":                          '\\U00002A97',\n\t\"emacr;\":                           '\\U00000113',\n\t\"empty;\":                           '\\U00002205',\n\t\"emptyset;\":                        '\\U00002205',\n\t\"emptyv;\":                          '\\U00002205',\n\t\"emsp;\":                            '\\U00002003',\n\t\"emsp13;\":                          '\\U00002004',\n\t\"emsp14;\":                          '\\U00002005',\n\t\"eng;\":                             '\\U0000014B',\n\t\"ensp;\":                            '\\U00002002',\n\t\"eogon;\":                           '\\U00000119',\n\t\"eopf;\":                            '\\U0001D556',\n\t\"epar;\":                            '\\U000022D5',\n\t\"eparsl;\":                          '\\U000029E3',\n\t\"eplus;\":                           '\\U00002A71',\n\t\"epsi;\":                            '\\U000003B5',\n\t\"epsilon;\":                         '\\U000003B5',\n\t\"epsiv;\":                           '\\U000003F5',\n\t\"eqcirc;\":                          '\\U00002256',\n\t\"eqcolon;\":                         '\\U00002255',\n\t\"eqsim;\":                           '\\U00002242',\n\t\"eqslantgtr;\":                      '\\U00002A96',\n\t\"eqslantless;\":                     '\\U00002A95',\n\t\"equals;\":                          '\\U0000003D',\n\t\"equest;\":                          '\\U0000225F',\n\t\"equiv;\":                           '\\U00002261',\n\t\"equivDD;\":                         '\\U00002A78',\n\t\"eqvparsl;\":                        '\\U000029E5',\n\t\"erDot;\":                           '\\U00002253',\n\t\"erarr;\":                           '\\U00002971',\n\t\"escr;\":                            '\\U0000212F',\n\t\"esdot;\":                           '\\U00002250',\n\t\"esim;\":                            '\\U00002242',\n\t\"eta;\":                             '\\U000003B7',\n\t\"eth;\":                             '\\U000000F0',\n\t\"euml;\":                            '\\U000000EB',\n\t\"euro;\":                            '\\U000020AC',\n\t\"excl;\":                            '\\U00000021',\n\t\"exist;\":                           '\\U00002203',\n\t\"expectation;\":                     '\\U00002130',\n\t\"exponentiale;\":                    '\\U00002147',\n\t\"fallingdotseq;\":                   '\\U00002252',\n\t\"fcy;\":                             '\\U00000444',\n\t\"female;\":                          '\\U00002640',\n\t\"ffilig;\":                          '\\U0000FB03',\n\t\"fflig;\":                           '\\U0000FB00',\n\t\"ffllig;\":                          '\\U0000FB04',\n\t\"ffr;\":                             '\\U0001D523',\n\t\"filig;\":                           '\\U0000FB01',\n\t\"flat;\":                            '\\U0000266D',\n\t\"fllig;\":                           '\\U0000FB02',\n\t\"fltns;\":                           '\\U000025B1',\n\t\"fnof;\":                            '\\U00000192',\n\t\"fopf;\":                            '\\U0001D557',\n\t\"forall;\":                          '\\U00002200',\n\t\"fork;\":                            '\\U000022D4',\n\t\"forkv;\":                           '\\U00002AD9',\n\t\"fpartint;\":                        '\\U00002A0D',\n\t\"frac12;\":                          '\\U000000BD',\n\t\"frac13;\":                          '\\U00002153',\n\t\"frac14;\":                          '\\U000000BC',\n\t\"frac15;\":                          '\\U00002155',\n\t\"frac16;\":                          '\\U00002159',\n\t\"frac18;\":                          '\\U0000215B',\n\t\"frac23;\":                          '\\U00002154',\n\t\"frac25;\":                          '\\U00002156',\n\t\"frac34;\":                          '\\U000000BE',\n\t\"frac35;\":                          '\\U00002157',\n\t\"frac38;\":                          '\\U0000215C',\n\t\"frac45;\":                          '\\U00002158',\n\t\"frac56;\":                          '\\U0000215A',\n\t\"frac58;\":                          '\\U0000215D',\n\t\"frac78;\":                          '\\U0000215E',\n\t\"frasl;\":                           '\\U00002044',\n\t\"frown;\":                           '\\U00002322',\n\t\"fscr;\":                            '\\U0001D4BB',\n\t\"gE;\":                              '\\U00002267',\n\t\"gEl;\":                             '\\U00002A8C',\n\t\"gacute;\":                          '\\U000001F5',\n\t\"gamma;\":                           '\\U000003B3',\n\t\"gammad;\":                          '\\U000003DD',\n\t\"gap;\":                             '\\U00002A86',\n\t\"gbreve;\":                          '\\U0000011F',\n\t\"gcirc;\":                           '\\U0000011D',\n\t\"gcy;\":                             '\\U00000433',\n\t\"gdot;\":                            '\\U00000121',\n\t\"ge;\":                              '\\U00002265',\n\t\"gel;\":                             '\\U000022DB',\n\t\"geq;\":                             '\\U00002265',\n\t\"geqq;\":                            '\\U00002267',\n\t\"geqslant;\":                        '\\U00002A7E',\n\t\"ges;\":                             '\\U00002A7E',\n\t\"gescc;\":                           '\\U00002AA9',\n\t\"gesdot;\":                          '\\U00002A80',\n\t\"gesdoto;\":                         '\\U00002A82',\n\t\"gesdotol;\":                        '\\U00002A84',\n\t\"gesles;\":                          '\\U00002A94',\n\t\"gfr;\":                             '\\U0001D524',\n\t\"gg;\":                              '\\U0000226B',\n\t\"ggg;\":                             '\\U000022D9',\n\t\"gimel;\":                           '\\U00002137',\n\t\"gjcy;\":                            '\\U00000453',\n\t\"gl;\":                              '\\U00002277',\n\t\"glE;\":                             '\\U00002A92',\n\t\"gla;\":                             '\\U00002AA5',\n\t\"glj;\":                             '\\U00002AA4',\n\t\"gnE;\":                             '\\U00002269',\n\t\"gnap;\":                            '\\U00002A8A',\n\t\"gnapprox;\":                        '\\U00002A8A',\n\t\"gne;\":                             '\\U00002A88',\n\t\"gneq;\":                            '\\U00002A88',\n\t\"gneqq;\":                           '\\U00002269',\n\t\"gnsim;\":                           '\\U000022E7',\n\t\"gopf;\":                            '\\U0001D558',\n\t\"grave;\":                           '\\U00000060',\n\t\"gscr;\":                            '\\U0000210A',\n\t\"gsim;\":                            '\\U00002273',\n\t\"gsime;\":                           '\\U00002A8E',\n\t\"gsiml;\":                           '\\U00002A90',\n\t\"gt;\":                              '\\U0000003E',\n\t\"gtcc;\":                            '\\U00002AA7',\n\t\"gtcir;\":                           '\\U00002A7A',\n\t\"gtdot;\":                           '\\U000022D7',\n\t\"gtlPar;\":                          '\\U00002995',\n\t\"gtquest;\":                         '\\U00002A7C',\n\t\"gtrapprox;\":                       '\\U00002A86',\n\t\"gtrarr;\":                          '\\U00002978',\n\t\"gtrdot;\":                          '\\U000022D7',\n\t\"gtreqless;\":                       '\\U000022DB',\n\t\"gtreqqless;\":                      '\\U00002A8C',\n\t\"gtrless;\":                         '\\U00002277',\n\t\"gtrsim;\":                          '\\U00002273',\n\t\"hArr;\":                            '\\U000021D4',\n\t\"hairsp;\":                          '\\U0000200A',\n\t\"half;\":                            '\\U000000BD',\n\t\"hamilt;\":                          '\\U0000210B',\n\t\"hardcy;\":                          '\\U0000044A',\n\t\"harr;\":                            '\\U00002194',\n\t\"harrcir;\":                         '\\U00002948',\n\t\"harrw;\":                           '\\U000021AD',\n\t\"hbar;\":                            '\\U0000210F',\n\t\"hcirc;\":                           '\\U00000125',\n\t\"hearts;\":                          '\\U00002665',\n\t\"heartsuit;\":                       '\\U00002665',\n\t\"hellip;\":                          '\\U00002026',\n\t\"hercon;\":                          '\\U000022B9',\n\t\"hfr;\":                             '\\U0001D525',\n\t\"hksearow;\":                        '\\U00002925',\n\t\"hkswarow;\":                        '\\U00002926',\n\t\"hoarr;\":                           '\\U000021FF',\n\t\"homtht;\":                          '\\U0000223B',\n\t\"hookleftarrow;\":                   '\\U000021A9',\n\t\"hookrightarrow;\":                  '\\U000021AA',\n\t\"hopf;\":                            '\\U0001D559',\n\t\"horbar;\":                          '\\U00002015',\n\t\"hscr;\":                            '\\U0001D4BD',\n\t\"hslash;\":                          '\\U0000210F',\n\t\"hstrok;\":                          '\\U00000127',\n\t\"hybull;\":                          '\\U00002043',\n\t\"hyphen;\":                          '\\U00002010',\n\t\"iacute;\":                          '\\U000000ED',\n\t\"ic;\":                              '\\U00002063',\n\t\"icirc;\":                           '\\U000000EE',\n\t\"icy;\":                             '\\U00000438',\n\t\"iecy;\":                            '\\U00000435',\n\t\"iexcl;\":                           '\\U000000A1',\n\t\"iff;\":                             '\\U000021D4',\n\t\"ifr;\":                             '\\U0001D526',\n\t\"igrave;\":                          '\\U000000EC',\n\t\"ii;\":                              '\\U00002148',\n\t\"iiiint;\":                          '\\U00002A0C',\n\t\"iiint;\":                           '\\U0000222D',\n\t\"iinfin;\":                          '\\U000029DC',\n\t\"iiota;\":                           '\\U00002129',\n\t\"ijlig;\":                           '\\U00000133',\n\t\"imacr;\":                           '\\U0000012B',\n\t\"image;\":                           '\\U00002111',\n\t\"imagline;\":                        '\\U00002110',\n\t\"imagpart;\":                        '\\U00002111',\n\t\"imath;\":                           '\\U00000131',\n\t\"imof;\":                            '\\U000022B7',\n\t\"imped;\":                           '\\U000001B5',\n\t\"in;\":                              '\\U00002208',\n\t\"incare;\":                          '\\U00002105',\n\t\"infin;\":                           '\\U0000221E',\n\t\"infintie;\":                        '\\U000029DD',\n\t\"inodot;\":                          '\\U00000131',\n\t\"int;\":                             '\\U0000222B',\n\t\"intcal;\":                          '\\U000022BA',\n\t\"integers;\":                        '\\U00002124',\n\t\"intercal;\":                        '\\U000022BA',\n\t\"intlarhk;\":                        '\\U00002A17',\n\t\"intprod;\":                         '\\U00002A3C',\n\t\"iocy;\":                            '\\U00000451',\n\t\"iogon;\":                           '\\U0000012F',\n\t\"iopf;\":                            '\\U0001D55A',\n\t\"iota;\":                            '\\U000003B9',\n\t\"iprod;\":                           '\\U00002A3C',\n\t\"iquest;\":                          '\\U000000BF',\n\t\"iscr;\":                            '\\U0001D4BE',\n\t\"isin;\":                            '\\U00002208',\n\t\"isinE;\":                           '\\U000022F9',\n\t\"isindot;\":                         '\\U000022F5',\n\t\"isins;\":                           '\\U000022F4',\n\t\"isinsv;\":                          '\\U000022F3',\n\t\"isinv;\":                           '\\U00002208',\n\t\"it;\":                              '\\U00002062',\n\t\"itilde;\":                          '\\U00000129',\n\t\"iukcy;\":                           '\\U00000456',\n\t\"iuml;\":                            '\\U000000EF',\n\t\"jcirc;\":                           '\\U00000135',\n\t\"jcy;\":                             '\\U00000439',\n\t\"jfr;\":                             '\\U0001D527',\n\t\"jmath;\":                           '\\U00000237',\n\t\"jopf;\":                            '\\U0001D55B',\n\t\"jscr;\":                            '\\U0001D4BF',\n\t\"jsercy;\":                          '\\U00000458',\n\t\"jukcy;\":                           '\\U00000454',\n\t\"kappa;\":                           '\\U000003BA',\n\t\"kappav;\":                          '\\U000003F0',\n\t\"kcedil;\":                          '\\U00000137',\n\t\"kcy;\":                             '\\U0000043A',\n\t\"kfr;\":                             '\\U0001D528',\n\t\"kgreen;\":                          '\\U00000138',\n\t\"khcy;\":                            '\\U00000445',\n\t\"kjcy;\":                            '\\U0000045C',\n\t\"kopf;\":                            '\\U0001D55C',\n\t\"kscr;\":                            '\\U0001D4C0',\n\t\"lAarr;\":                           '\\U000021DA',\n\t\"lArr;\":                            '\\U000021D0',\n\t\"lAtail;\":                          '\\U0000291B',\n\t\"lBarr;\":                           '\\U0000290E',\n\t\"lE;\":                              '\\U00002266',\n\t\"lEg;\":                             '\\U00002A8B',\n\t\"lHar;\":                            '\\U00002962',\n\t\"lacute;\":                          '\\U0000013A',\n\t\"laemptyv;\":                        '\\U000029B4',\n\t\"lagran;\":                          '\\U00002112',\n\t\"lambda;\":                          '\\U000003BB',\n\t\"lang;\":                            '\\U000027E8',\n\t\"langd;\":                           '\\U00002991',\n\t\"langle;\":                          '\\U000027E8',\n\t\"lap;\":                             '\\U00002A85',\n\t\"laquo;\":                           '\\U000000AB',\n\t\"larr;\":                            '\\U00002190',\n\t\"larrb;\":                           '\\U000021E4',\n\t\"larrbfs;\":                         '\\U0000291F',\n\t\"larrfs;\":                          '\\U0000291D',\n\t\"larrhk;\":                          '\\U000021A9',\n\t\"larrlp;\":                          '\\U000021AB',\n\t\"larrpl;\":                          '\\U00002939',\n\t\"larrsim;\":                         '\\U00002973',\n\t\"larrtl;\":                          '\\U000021A2',\n\t\"lat;\":                             '\\U00002AAB',\n\t\"latail;\":                          '\\U00002919',\n\t\"late;\":                            '\\U00002AAD',\n\t\"lbarr;\":                           '\\U0000290C',\n\t\"lbbrk;\":                           '\\U00002772',\n\t\"lbrace;\":                          '\\U0000007B',\n\t\"lbrack;\":                          '\\U0000005B',\n\t\"lbrke;\":                           '\\U0000298B',\n\t\"lbrksld;\":                         '\\U0000298F',\n\t\"lbrkslu;\":                         '\\U0000298D',\n\t\"lcaron;\":                          '\\U0000013E',\n\t\"lcedil;\":                          '\\U0000013C',\n\t\"lceil;\":                           '\\U00002308',\n\t\"lcub;\":                            '\\U0000007B',\n\t\"lcy;\":                             '\\U0000043B',\n\t\"ldca;\":                            '\\U00002936',\n\t\"ldquo;\":                           '\\U0000201C',\n\t\"ldquor;\":                          '\\U0000201E',\n\t\"ldrdhar;\":                         '\\U00002967',\n\t\"ldrushar;\":                        '\\U0000294B',\n\t\"ldsh;\":                            '\\U000021B2',\n\t\"le;\":                              '\\U00002264',\n\t\"leftarrow;\":                       '\\U00002190',\n\t\"leftarrowtail;\":                   '\\U000021A2',\n\t\"leftharpoondown;\":                 '\\U000021BD',\n\t\"leftharpoonup;\":                   '\\U000021BC',\n\t\"leftleftarrows;\":                  '\\U000021C7',\n\t\"leftrightarrow;\":                  '\\U00002194',\n\t\"leftrightarrows;\":                 '\\U000021C6',\n\t\"leftrightharpoons;\":               '\\U000021CB',\n\t\"leftrightsquigarrow;\":             '\\U000021AD',\n\t\"leftthreetimes;\":                  '\\U000022CB',\n\t\"leg;\":                             '\\U000022DA',\n\t\"leq;\":                             '\\U00002264',\n\t\"leqq;\":                            '\\U00002266',\n\t\"leqslant;\":                        '\\U00002A7D',\n\t\"les;\":                             '\\U00002A7D',\n\t\"lescc;\":                           '\\U00002AA8',\n\t\"lesdot;\":                          '\\U00002A7F',\n\t\"lesdoto;\":                         '\\U00002A81',\n\t\"lesdotor;\":                        '\\U00002A83',\n\t\"lesges;\":                          '\\U00002A93',\n\t\"lessapprox;\":                      '\\U00002A85',\n\t\"lessdot;\":                         '\\U000022D6',\n\t\"lesseqgtr;\":                       '\\U000022DA',\n\t\"lesseqqgtr;\":                      '\\U00002A8B',\n\t\"lessgtr;\":                         '\\U00002276',\n\t\"lesssim;\":                         '\\U00002272',\n\t\"lfisht;\":                          '\\U0000297C',\n\t\"lfloor;\":                          '\\U0000230A',\n\t\"lfr;\":                             '\\U0001D529',\n\t\"lg;\":                              '\\U00002276',\n\t\"lgE;\":                             '\\U00002A91',\n\t\"lhard;\":                           '\\U000021BD',\n\t\"lharu;\":                           '\\U000021BC',\n\t\"lharul;\":                          '\\U0000296A',\n\t\"lhblk;\":                           '\\U00002584',\n\t\"ljcy;\":                            '\\U00000459',\n\t\"ll;\":                              '\\U0000226A',\n\t\"llarr;\":                           '\\U000021C7',\n\t\"llcorner;\":                        '\\U0000231E',\n\t\"llhard;\":                          '\\U0000296B',\n\t\"lltri;\":                           '\\U000025FA',\n\t\"lmidot;\":                          '\\U00000140',\n\t\"lmoust;\":                          '\\U000023B0',\n\t\"lmoustache;\":                      '\\U000023B0',\n\t\"lnE;\":                             '\\U00002268',\n\t\"lnap;\":                            '\\U00002A89',\n\t\"lnapprox;\":                        '\\U00002A89',\n\t\"lne;\":                             '\\U00002A87',\n\t\"lneq;\":                            '\\U00002A87',\n\t\"lneqq;\":                           '\\U00002268',\n\t\"lnsim;\":                           '\\U000022E6',\n\t\"loang;\":                           '\\U000027EC',\n\t\"loarr;\":                           '\\U000021FD',\n\t\"lobrk;\":                           '\\U000027E6',\n\t\"longleftarrow;\":                   '\\U000027F5',\n\t\"longleftrightarrow;\":              '\\U000027F7',\n\t\"longmapsto;\":                      '\\U000027FC',\n\t\"longrightarrow;\":                  '\\U000027F6',\n\t\"looparrowleft;\":                   '\\U000021AB',\n\t\"looparrowright;\":                  '\\U000021AC',\n\t\"lopar;\":                           '\\U00002985',\n\t\"lopf;\":                            '\\U0001D55D',\n\t\"loplus;\":                          '\\U00002A2D',\n\t\"lotimes;\":                         '\\U00002A34',\n\t\"lowast;\":                          '\\U00002217',\n\t\"lowbar;\":                          '\\U0000005F',\n\t\"loz;\":                             '\\U000025CA',\n\t\"lozenge;\":                         '\\U000025CA',\n\t\"lozf;\":                            '\\U000029EB',\n\t\"lpar;\":                            '\\U00000028',\n\t\"lparlt;\":                          '\\U00002993',\n\t\"lrarr;\":                           '\\U000021C6',\n\t\"lrcorner;\":                        '\\U0000231F',\n\t\"lrhar;\":                           '\\U000021CB',\n\t\"lrhard;\":                          '\\U0000296D',\n\t\"lrm;\":                             '\\U0000200E',\n\t\"lrtri;\":                           '\\U000022BF',\n\t\"lsaquo;\":                          '\\U00002039',\n\t\"lscr;\":                            '\\U0001D4C1',\n\t\"lsh;\":                             '\\U000021B0',\n\t\"lsim;\":                            '\\U00002272',\n\t\"lsime;\":                           '\\U00002A8D',\n\t\"lsimg;\":                           '\\U00002A8F',\n\t\"lsqb;\":                            '\\U0000005B',\n\t\"lsquo;\":                           '\\U00002018',\n\t\"lsquor;\":                          '\\U0000201A',\n\t\"lstrok;\":                          '\\U00000142',\n\t\"lt;\":                              '\\U0000003C',\n\t\"ltcc;\":                            '\\U00002AA6',\n\t\"ltcir;\":                           '\\U00002A79',\n\t\"ltdot;\":                           '\\U000022D6',\n\t\"lthree;\":                          '\\U000022CB',\n\t\"ltimes;\":                          '\\U000022C9',\n\t\"ltlarr;\":                          '\\U00002976',\n\t\"ltquest;\":                         '\\U00002A7B',\n\t\"ltrPar;\":                          '\\U00002996',\n\t\"ltri;\":                            '\\U000025C3',\n\t\"ltrie;\":                           '\\U000022B4',\n\t\"ltrif;\":                           '\\U000025C2',\n\t\"lurdshar;\":                        '\\U0000294A',\n\t\"luruhar;\":                         '\\U00002966',\n\t\"mDDot;\":                           '\\U0000223A',\n\t\"macr;\":                            '\\U000000AF',\n\t\"male;\":                            '\\U00002642',\n\t\"malt;\":                            '\\U00002720',\n\t\"maltese;\":                         '\\U00002720',\n\t\"map;\":                             '\\U000021A6',\n\t\"mapsto;\":                          '\\U000021A6',\n\t\"mapstodown;\":                      '\\U000021A7',\n\t\"mapstoleft;\":                      '\\U000021A4',\n\t\"mapstoup;\":                        '\\U000021A5',\n\t\"marker;\":                          '\\U000025AE',\n\t\"mcomma;\":                          '\\U00002A29',\n\t\"mcy;\":                             '\\U0000043C',\n\t\"mdash;\":                           '\\U00002014',\n\t\"measuredangle;\":                   '\\U00002221',\n\t\"mfr;\":                             '\\U0001D52A',\n\t\"mho;\":                             '\\U00002127',\n\t\"micro;\":                           '\\U000000B5',\n\t\"mid;\":                             '\\U00002223',\n\t\"midast;\":                          '\\U0000002A',\n\t\"midcir;\":                          '\\U00002AF0',\n\t\"middot;\":                          '\\U000000B7',\n\t\"minus;\":                           '\\U00002212',\n\t\"minusb;\":                          '\\U0000229F',\n\t\"minusd;\":                          '\\U00002238',\n\t\"minusdu;\":                         '\\U00002A2A',\n\t\"mlcp;\":                            '\\U00002ADB',\n\t\"mldr;\":                            '\\U00002026',\n\t\"mnplus;\":                          '\\U00002213',\n\t\"models;\":                          '\\U000022A7',\n\t\"mopf;\":                            '\\U0001D55E',\n\t\"mp;\":                              '\\U00002213',\n\t\"mscr;\":                            '\\U0001D4C2',\n\t\"mstpos;\":                          '\\U0000223E',\n\t\"mu;\":                              '\\U000003BC',\n\t\"multimap;\":                        '\\U000022B8',\n\t\"mumap;\":                           '\\U000022B8',\n\t\"nLeftarrow;\":                      '\\U000021CD',\n\t\"nLeftrightarrow;\":                 '\\U000021CE',\n\t\"nRightarrow;\":                     '\\U000021CF',\n\t\"nVDash;\":                          '\\U000022AF',\n\t\"nVdash;\":                          '\\U000022AE',\n\t\"nabla;\":                           '\\U00002207',\n\t\"nacute;\":                          '\\U00000144',\n\t\"nap;\":                             '\\U00002249',\n\t\"napos;\":                           '\\U00000149',\n\t\"napprox;\":                         '\\U00002249',\n\t\"natur;\":                           '\\U0000266E',\n\t\"natural;\":                         '\\U0000266E',\n\t\"naturals;\":                        '\\U00002115',\n\t\"nbsp;\":                            '\\U000000A0',\n\t\"ncap;\":                            '\\U00002A43',\n\t\"ncaron;\":                          '\\U00000148',\n\t\"ncedil;\":                          '\\U00000146',\n\t\"ncong;\":                           '\\U00002247',\n\t\"ncup;\":                            '\\U00002A42',\n\t\"ncy;\":                             '\\U0000043D',\n\t\"ndash;\":                           '\\U00002013',\n\t\"ne;\":                              '\\U00002260',\n\t\"neArr;\":                           '\\U000021D7',\n\t\"nearhk;\":                          '\\U00002924',\n\t\"nearr;\":                           '\\U00002197',\n\t\"nearrow;\":                         '\\U00002197',\n\t\"nequiv;\":                          '\\U00002262',\n\t\"nesear;\":                          '\\U00002928',\n\t\"nexist;\":                          '\\U00002204',\n\t\"nexists;\":                         '\\U00002204',\n\t\"nfr;\":                             '\\U0001D52B',\n\t\"nge;\":                             '\\U00002271',\n\t\"ngeq;\":                            '\\U00002271',\n\t\"ngsim;\":                           '\\U00002275',\n\t\"ngt;\":                             '\\U0000226F',\n\t\"ngtr;\":                            '\\U0000226F',\n\t\"nhArr;\":                           '\\U000021CE',\n\t\"nharr;\":                           '\\U000021AE',\n\t\"nhpar;\":                           '\\U00002AF2',\n\t\"ni;\":                              '\\U0000220B',\n\t\"nis;\":                             '\\U000022FC',\n\t\"nisd;\":                            '\\U000022FA',\n\t\"niv;\":                             '\\U0000220B',\n\t\"njcy;\":                            '\\U0000045A',\n\t\"nlArr;\":                           '\\U000021CD',\n\t\"nlarr;\":                           '\\U0000219A',\n\t\"nldr;\":                            '\\U00002025',\n\t\"nle;\":                             '\\U00002270',\n\t\"nleftarrow;\":                      '\\U0000219A',\n\t\"nleftrightarrow;\":                 '\\U000021AE',\n\t\"nleq;\":                            '\\U00002270',\n\t\"nless;\":                           '\\U0000226E',\n\t\"nlsim;\":                           '\\U00002274',\n\t\"nlt;\":                             '\\U0000226E',\n\t\"nltri;\":                           '\\U000022EA',\n\t\"nltrie;\":                          '\\U000022EC',\n\t\"nmid;\":                            '\\U00002224',\n\t\"nopf;\":                            '\\U0001D55F',\n\t\"not;\":                             '\\U000000AC',\n\t\"notin;\":                           '\\U00002209',\n\t\"notinva;\":                         '\\U00002209',\n\t\"notinvb;\":                         '\\U000022F7',\n\t\"notinvc;\":                         '\\U000022F6',\n\t\"notni;\":                           '\\U0000220C',\n\t\"notniva;\":                         '\\U0000220C',\n\t\"notnivb;\":                         '\\U000022FE',\n\t\"notnivc;\":                         '\\U000022FD',\n\t\"npar;\":                            '\\U00002226',\n\t\"nparallel;\":                       '\\U00002226',\n\t\"npolint;\":                         '\\U00002A14',\n\t\"npr;\":                             '\\U00002280',\n\t\"nprcue;\":                          '\\U000022E0',\n\t\"nprec;\":                           '\\U00002280',\n\t\"nrArr;\":                           '\\U000021CF',\n\t\"nrarr;\":                           '\\U0000219B',\n\t\"nrightarrow;\":                     '\\U0000219B',\n\t\"nrtri;\":                           '\\U000022EB',\n\t\"nrtrie;\":                          '\\U000022ED',\n\t\"nsc;\":                             '\\U00002281',\n\t\"nsccue;\":                          '\\U000022E1',\n\t\"nscr;\":                            '\\U0001D4C3',\n\t\"nshortmid;\":                       '\\U00002224',\n\t\"nshortparallel;\":                  '\\U00002226',\n\t\"nsim;\":                            '\\U00002241',\n\t\"nsime;\":                           '\\U00002244',\n\t\"nsimeq;\":                          '\\U00002244',\n\t\"nsmid;\":                           '\\U00002224',\n\t\"nspar;\":                           '\\U00002226',\n\t\"nsqsube;\":                         '\\U000022E2',\n\t\"nsqsupe;\":                         '\\U000022E3',\n\t\"nsub;\":                            '\\U00002284',\n\t\"nsube;\":                           '\\U00002288',\n\t\"nsubseteq;\":                       '\\U00002288',\n\t\"nsucc;\":                           '\\U00002281',\n\t\"nsup;\":                            '\\U00002285',\n\t\"nsupe;\":                           '\\U00002289',\n\t\"nsupseteq;\":                       '\\U00002289',\n\t\"ntgl;\":                            '\\U00002279',\n\t\"ntilde;\":                          '\\U000000F1',\n\t\"ntlg;\":                            '\\U00002278',\n\t\"ntriangleleft;\":                   '\\U000022EA',\n\t\"ntrianglelefteq;\":                 '\\U000022EC',\n\t\"ntriangleright;\":                  '\\U000022EB',\n\t\"ntrianglerighteq;\":                '\\U000022ED',\n\t\"nu;\":                              '\\U000003BD',\n\t\"num;\":                             '\\U00000023',\n\t\"numero;\":                          '\\U00002116',\n\t\"numsp;\":                           '\\U00002007',\n\t\"nvDash;\":                          '\\U000022AD',\n\t\"nvHarr;\":                          '\\U00002904',\n\t\"nvdash;\":                          '\\U000022AC',\n\t\"nvinfin;\":                         '\\U000029DE',\n\t\"nvlArr;\":                          '\\U00002902',\n\t\"nvrArr;\":                          '\\U00002903',\n\t\"nwArr;\":                           '\\U000021D6',\n\t\"nwarhk;\":                          '\\U00002923',\n\t\"nwarr;\":                           '\\U00002196',\n\t\"nwarrow;\":                         '\\U00002196',\n\t\"nwnear;\":                          '\\U00002927',\n\t\"oS;\":                              '\\U000024C8',\n\t\"oacute;\":                          '\\U000000F3',\n\t\"oast;\":                            '\\U0000229B',\n\t\"ocir;\":                            '\\U0000229A',\n\t\"ocirc;\":                           '\\U000000F4',\n\t\"ocy;\":                             '\\U0000043E',\n\t\"odash;\":                           '\\U0000229D',\n\t\"odblac;\":                          '\\U00000151',\n\t\"odiv;\":                            '\\U00002A38',\n\t\"odot;\":                            '\\U00002299',\n\t\"odsold;\":                          '\\U000029BC',\n\t\"oelig;\":                           '\\U00000153',\n\t\"ofcir;\":                           '\\U000029BF',\n\t\"ofr;\":                             '\\U0001D52C',\n\t\"ogon;\":                            '\\U000002DB',\n\t\"ograve;\":                          '\\U000000F2',\n\t\"ogt;\":                             '\\U000029C1',\n\t\"ohbar;\":                           '\\U000029B5',\n\t\"ohm;\":                             '\\U000003A9',\n\t\"oint;\":                            '\\U0000222E',\n\t\"olarr;\":                           '\\U000021BA',\n\t\"olcir;\":                           '\\U000029BE',\n\t\"olcross;\":                         '\\U000029BB',\n\t\"oline;\":                           '\\U0000203E',\n\t\"olt;\":                             '\\U000029C0',\n\t\"omacr;\":                           '\\U0000014D',\n\t\"omega;\":                           '\\U000003C9',\n\t\"omicron;\":                         '\\U000003BF',\n\t\"omid;\":                            '\\U000029B6',\n\t\"ominus;\":                          '\\U00002296',\n\t\"oopf;\":                            '\\U0001D560',\n\t\"opar;\":                            '\\U000029B7',\n\t\"operp;\":                           '\\U000029B9',\n\t\"oplus;\":                           '\\U00002295',\n\t\"or;\":                              '\\U00002228',\n\t\"orarr;\":                           '\\U000021BB',\n\t\"ord;\":                             '\\U00002A5D',\n\t\"order;\":                           '\\U00002134',\n\t\"orderof;\":                         '\\U00002134',\n\t\"ordf;\":                            '\\U000000AA',\n\t\"ordm;\":                            '\\U000000BA',\n\t\"origof;\":                          '\\U000022B6',\n\t\"oror;\":                            '\\U00002A56',\n\t\"orslope;\":                         '\\U00002A57',\n\t\"orv;\":                             '\\U00002A5B',\n\t\"oscr;\":                            '\\U00002134',\n\t\"oslash;\":                          '\\U000000F8',\n\t\"osol;\":                            '\\U00002298',\n\t\"otilde;\":                          '\\U000000F5',\n\t\"otimes;\":                          '\\U00002297',\n\t\"otimesas;\":                        '\\U00002A36',\n\t\"ouml;\":                            '\\U000000F6',\n\t\"ovbar;\":                           '\\U0000233D',\n\t\"par;\":                             '\\U00002225',\n\t\"para;\":                            '\\U000000B6',\n\t\"parallel;\":                        '\\U00002225',\n\t\"parsim;\":                          '\\U00002AF3',\n\t\"parsl;\":                           '\\U00002AFD',\n\t\"part;\":                            '\\U00002202',\n\t\"pcy;\":                             '\\U0000043F',\n\t\"percnt;\":                          '\\U00000025',\n\t\"period;\":                          '\\U0000002E',\n\t\"permil;\":                          '\\U00002030',\n\t\"perp;\":                            '\\U000022A5',\n\t\"pertenk;\":                         '\\U00002031',\n\t\"pfr;\":                             '\\U0001D52D',\n\t\"phi;\":                             '\\U000003C6',\n\t\"phiv;\":                            '\\U000003D5',\n\t\"phmmat;\":                          '\\U00002133',\n\t\"phone;\":                           '\\U0000260E',\n\t\"pi;\":                              '\\U000003C0',\n\t\"pitchfork;\":                       '\\U000022D4',\n\t\"piv;\":                             '\\U000003D6',\n\t\"planck;\":                          '\\U0000210F',\n\t\"planckh;\":                         '\\U0000210E',\n\t\"plankv;\":                          '\\U0000210F',\n\t\"plus;\":                            '\\U0000002B',\n\t\"plusacir;\":                        '\\U00002A23',\n\t\"plusb;\":                           '\\U0000229E',\n\t\"pluscir;\":                         '\\U00002A22',\n\t\"plusdo;\":                          '\\U00002214',\n\t\"plusdu;\":                          '\\U00002A25',\n\t\"pluse;\":                           '\\U00002A72',\n\t\"plusmn;\":                          '\\U000000B1',\n\t\"plussim;\":                         '\\U00002A26',\n\t\"plustwo;\":                         '\\U00002A27',\n\t\"pm;\":                              '\\U000000B1',\n\t\"pointint;\":                        '\\U00002A15',\n\t\"popf;\":                            '\\U0001D561',\n\t\"pound;\":                           '\\U000000A3',\n\t\"pr;\":                              '\\U0000227A',\n\t\"prE;\":                             '\\U00002AB3',\n\t\"prap;\":                            '\\U00002AB7',\n\t\"prcue;\":                           '\\U0000227C',\n\t\"pre;\":                             '\\U00002AAF',\n\t\"prec;\":                            '\\U0000227A',\n\t\"precapprox;\":                      '\\U00002AB7',\n\t\"preccurlyeq;\":                     '\\U0000227C',\n\t\"preceq;\":                          '\\U00002AAF',\n\t\"precnapprox;\":                     '\\U00002AB9',\n\t\"precneqq;\":                        '\\U00002AB5',\n\t\"precnsim;\":                        '\\U000022E8',\n\t\"precsim;\":                         '\\U0000227E',\n\t\"prime;\":                           '\\U00002032',\n\t\"primes;\":                          '\\U00002119',\n\t\"prnE;\":                            '\\U00002AB5',\n\t\"prnap;\":                           '\\U00002AB9',\n\t\"prnsim;\":                          '\\U000022E8',\n\t\"prod;\":                            '\\U0000220F',\n\t\"profalar;\":                        '\\U0000232E',\n\t\"profline;\":                        '\\U00002312',\n\t\"profsurf;\":                        '\\U00002313',\n\t\"prop;\":                            '\\U0000221D',\n\t\"propto;\":                          '\\U0000221D',\n\t\"prsim;\":                           '\\U0000227E',\n\t\"prurel;\":                          '\\U000022B0',\n\t\"pscr;\":                            '\\U0001D4C5',\n\t\"psi;\":                             '\\U000003C8',\n\t\"puncsp;\":                          '\\U00002008',\n\t\"qfr;\":                             '\\U0001D52E',\n\t\"qint;\":                            '\\U00002A0C',\n\t\"qopf;\":                            '\\U0001D562',\n\t\"qprime;\":                          '\\U00002057',\n\t\"qscr;\":                            '\\U0001D4C6',\n\t\"quaternions;\":                     '\\U0000210D',\n\t\"quatint;\":                         '\\U00002A16',\n\t\"quest;\":                           '\\U0000003F',\n\t\"questeq;\":                         '\\U0000225F',\n\t\"quot;\":                            '\\U00000022',\n\t\"rAarr;\":                           '\\U000021DB',\n\t\"rArr;\":                            '\\U000021D2',\n\t\"rAtail;\":                          '\\U0000291C',\n\t\"rBarr;\":                           '\\U0000290F',\n\t\"rHar;\":                            '\\U00002964',\n\t\"racute;\":                          '\\U00000155',\n\t\"radic;\":                           '\\U0000221A',\n\t\"raemptyv;\":                        '\\U000029B3',\n\t\"rang;\":                            '\\U000027E9',\n\t\"rangd;\":                           '\\U00002992',\n\t\"range;\":                           '\\U000029A5',\n\t\"rangle;\":                          '\\U000027E9',\n\t\"raquo;\":                           '\\U000000BB',\n\t\"rarr;\":                            '\\U00002192',\n\t\"rarrap;\":                          '\\U00002975',\n\t\"rarrb;\":                           '\\U000021E5',\n\t\"rarrbfs;\":                         '\\U00002920',\n\t\"rarrc;\":                           '\\U00002933',\n\t\"rarrfs;\":                          '\\U0000291E',\n\t\"rarrhk;\":                          '\\U000021AA',\n\t\"rarrlp;\":                          '\\U000021AC',\n\t\"rarrpl;\":                          '\\U00002945',\n\t\"rarrsim;\":                         '\\U00002974',\n\t\"rarrtl;\":                          '\\U000021A3',\n\t\"rarrw;\":                           '\\U0000219D',\n\t\"ratail;\":                          '\\U0000291A',\n\t\"ratio;\":                           '\\U00002236',\n\t\"rationals;\":                       '\\U0000211A',\n\t\"rbarr;\":                           '\\U0000290D',\n\t\"rbbrk;\":                           '\\U00002773',\n\t\"rbrace;\":                          '\\U0000007D',\n\t\"rbrack;\":                          '\\U0000005D',\n\t\"rbrke;\":                           '\\U0000298C',\n\t\"rbrksld;\":                         '\\U0000298E',\n\t\"rbrkslu;\":                         '\\U00002990',\n\t\"rcaron;\":                          '\\U00000159',\n\t\"rcedil;\":                          '\\U00000157',\n\t\"rceil;\":                           '\\U00002309',\n\t\"rcub;\":                            '\\U0000007D',\n\t\"rcy;\":                             '\\U00000440',\n\t\"rdca;\":                            '\\U00002937',\n\t\"rdldhar;\":                         '\\U00002969',\n\t\"rdquo;\":                           '\\U0000201D',\n\t\"rdquor;\":                          '\\U0000201D',\n\t\"rdsh;\":                            '\\U000021B3',\n\t\"real;\":                            '\\U0000211C',\n\t\"realine;\":                         '\\U0000211B',\n\t\"realpart;\":                        '\\U0000211C',\n\t\"reals;\":                           '\\U0000211D',\n\t\"rect;\":                            '\\U000025AD',\n\t\"reg;\":                             '\\U000000AE',\n\t\"rfisht;\":                          '\\U0000297D',\n\t\"rfloor;\":                          '\\U0000230B',\n\t\"rfr;\":                             '\\U0001D52F',\n\t\"rhard;\":                           '\\U000021C1',\n\t\"rharu;\":                           '\\U000021C0',\n\t\"rharul;\":                          '\\U0000296C',\n\t\"rho;\":                             '\\U000003C1',\n\t\"rhov;\":                            '\\U000003F1',\n\t\"rightarrow;\":                      '\\U00002192',\n\t\"rightarrowtail;\":                  '\\U000021A3',\n\t\"rightharpoondown;\":                '\\U000021C1',\n\t\"rightharpoonup;\":                  '\\U000021C0',\n\t\"rightleftarrows;\":                 '\\U000021C4',\n\t\"rightleftharpoons;\":               '\\U000021CC',\n\t\"rightrightarrows;\":                '\\U000021C9',\n\t\"rightsquigarrow;\":                 '\\U0000219D',\n\t\"rightthreetimes;\":                 '\\U000022CC',\n\t\"ring;\":                            '\\U000002DA',\n\t\"risingdotseq;\":                    '\\U00002253',\n\t\"rlarr;\":                           '\\U000021C4',\n\t\"rlhar;\":                           '\\U000021CC',\n\t\"rlm;\":                             '\\U0000200F',\n\t\"rmoust;\":                          '\\U000023B1',\n\t\"rmoustache;\":                      '\\U000023B1',\n\t\"rnmid;\":                           '\\U00002AEE',\n\t\"roang;\":                           '\\U000027ED',\n\t\"roarr;\":                           '\\U000021FE',\n\t\"robrk;\":                           '\\U000027E7',\n\t\"ropar;\":                           '\\U00002986',\n\t\"ropf;\":                            '\\U0001D563',\n\t\"roplus;\":                          '\\U00002A2E',\n\t\"rotimes;\":                         '\\U00002A35',\n\t\"rpar;\":                            '\\U00000029',\n\t\"rpargt;\":                          '\\U00002994',\n\t\"rppolint;\":                        '\\U00002A12',\n\t\"rrarr;\":                           '\\U000021C9',\n\t\"rsaquo;\":                          '\\U0000203A',\n\t\"rscr;\":                            '\\U0001D4C7',\n\t\"rsh;\":                             '\\U000021B1',\n\t\"rsqb;\":                            '\\U0000005D',\n\t\"rsquo;\":                           '\\U00002019',\n\t\"rsquor;\":                          '\\U00002019',\n\t\"rthree;\":                          '\\U000022CC',\n\t\"rtimes;\":                          '\\U000022CA',\n\t\"rtri;\":                            '\\U000025B9',\n\t\"rtrie;\":                           '\\U000022B5',\n\t\"rtrif;\":                           '\\U000025B8',\n\t\"rtriltri;\":                        '\\U000029CE',\n\t\"ruluhar;\":                         '\\U00002968',\n\t\"rx;\":                              '\\U0000211E',\n\t\"sacute;\":                          '\\U0000015B',\n\t\"sbquo;\":                           '\\U0000201A',\n\t\"sc;\":                              '\\U0000227B',\n\t\"scE;\":                             '\\U00002AB4',\n\t\"scap;\":                            '\\U00002AB8',\n\t\"scaron;\":                          '\\U00000161',\n\t\"sccue;\":                           '\\U0000227D',\n\t\"sce;\":                             '\\U00002AB0',\n\t\"scedil;\":                          '\\U0000015F',\n\t\"scirc;\":                           '\\U0000015D',\n\t\"scnE;\":                            '\\U00002AB6',\n\t\"scnap;\":                           '\\U00002ABA',\n\t\"scnsim;\":                          '\\U000022E9',\n\t\"scpolint;\":                        '\\U00002A13',\n\t\"scsim;\":                           '\\U0000227F',\n\t\"scy;\":                             '\\U00000441',\n\t\"sdot;\":                            '\\U000022C5',\n\t\"sdotb;\":                           '\\U000022A1',\n\t\"sdote;\":                           '\\U00002A66',\n\t\"seArr;\":                           '\\U000021D8',\n\t\"searhk;\":                          '\\U00002925',\n\t\"searr;\":                           '\\U00002198',\n\t\"searrow;\":                         '\\U00002198',\n\t\"sect;\":                            '\\U000000A7',\n\t\"semi;\":                            '\\U0000003B',\n\t\"seswar;\":                          '\\U00002929',\n\t\"setminus;\":                        '\\U00002216',\n\t\"setmn;\":                           '\\U00002216',\n\t\"sext;\":                            '\\U00002736',\n\t\"sfr;\":                             '\\U0001D530',\n\t\"sfrown;\":                          '\\U00002322',\n\t\"sharp;\":                           '\\U0000266F',\n\t\"shchcy;\":                          '\\U00000449',\n\t\"shcy;\":                            '\\U00000448',\n\t\"shortmid;\":                        '\\U00002223',\n\t\"shortparallel;\":                   '\\U00002225',\n\t\"shy;\":                             '\\U000000AD',\n\t\"sigma;\":                           '\\U000003C3',\n\t\"sigmaf;\":                          '\\U000003C2',\n\t\"sigmav;\":                          '\\U000003C2',\n\t\"sim;\":                             '\\U0000223C',\n\t\"simdot;\":                          '\\U00002A6A',\n\t\"sime;\":                            '\\U00002243',\n\t\"simeq;\":                           '\\U00002243',\n\t\"simg;\":                            '\\U00002A9E',\n\t\"simgE;\":                           '\\U00002AA0',\n\t\"siml;\":                            '\\U00002A9D',\n\t\"simlE;\":                           '\\U00002A9F',\n\t\"simne;\":                           '\\U00002246',\n\t\"simplus;\":                         '\\U00002A24',\n\t\"simrarr;\":                         '\\U00002972',\n\t\"slarr;\":                           '\\U00002190',\n\t\"smallsetminus;\":                   '\\U00002216',\n\t\"smashp;\":                          '\\U00002A33',\n\t\"smeparsl;\":                        '\\U000029E4',\n\t\"smid;\":                            '\\U00002223',\n\t\"smile;\":                           '\\U00002323',\n\t\"smt;\":                             '\\U00002AAA',\n\t\"smte;\":                            '\\U00002AAC',\n\t\"softcy;\":                          '\\U0000044C',\n\t\"sol;\":                             '\\U0000002F',\n\t\"solb;\":                            '\\U000029C4',\n\t\"solbar;\":                          '\\U0000233F',\n\t\"sopf;\":                            '\\U0001D564',\n\t\"spades;\":                          '\\U00002660',\n\t\"spadesuit;\":                       '\\U00002660',\n\t\"spar;\":                            '\\U00002225',\n\t\"sqcap;\":                           '\\U00002293',\n\t\"sqcup;\":                           '\\U00002294',\n\t\"sqsub;\":                           '\\U0000228F',\n\t\"sqsube;\":                          '\\U00002291',\n\t\"sqsubset;\":                        '\\U0000228F',\n\t\"sqsubseteq;\":                      '\\U00002291',\n\t\"sqsup;\":                           '\\U00002290',\n\t\"sqsupe;\":                          '\\U00002292',\n\t\"sqsupset;\":                        '\\U00002290',\n\t\"sqsupseteq;\":                      '\\U00002292',\n\t\"squ;\":                             '\\U000025A1',\n\t\"square;\":                          '\\U000025A1',\n\t\"squarf;\":                          '\\U000025AA',\n\t\"squf;\":                            '\\U000025AA',\n\t\"srarr;\":                           '\\U00002192',\n\t\"sscr;\":                            '\\U0001D4C8',\n\t\"ssetmn;\":                          '\\U00002216',\n\t\"ssmile;\":                          '\\U00002323',\n\t\"sstarf;\":                          '\\U000022C6',\n\t\"star;\":                            '\\U00002606',\n\t\"starf;\":                           '\\U00002605',\n\t\"straightepsilon;\":                 '\\U000003F5',\n\t\"straightphi;\":                     '\\U000003D5',\n\t\"strns;\":                           '\\U000000AF',\n\t\"sub;\":                             '\\U00002282',\n\t\"subE;\":                            '\\U00002AC5',\n\t\"subdot;\":                          '\\U00002ABD',\n\t\"sube;\":                            '\\U00002286',\n\t\"subedot;\":                         '\\U00002AC3',\n\t\"submult;\":                         '\\U00002AC1',\n\t\"subnE;\":                           '\\U00002ACB',\n\t\"subne;\":                           '\\U0000228A',\n\t\"subplus;\":                         '\\U00002ABF',\n\t\"subrarr;\":                         '\\U00002979',\n\t\"subset;\":                          '\\U00002282',\n\t\"subseteq;\":                        '\\U00002286',\n\t\"subseteqq;\":                       '\\U00002AC5',\n\t\"subsetneq;\":                       '\\U0000228A',\n\t\"subsetneqq;\":                      '\\U00002ACB',\n\t\"subsim;\":                          '\\U00002AC7',\n\t\"subsub;\":                          '\\U00002AD5',\n\t\"subsup;\":                          '\\U00002AD3',\n\t\"succ;\":                            '\\U0000227B',\n\t\"succapprox;\":                      '\\U00002AB8',\n\t\"succcurlyeq;\":                     '\\U0000227D',\n\t\"succeq;\":                          '\\U00002AB0',\n\t\"succnapprox;\":                     '\\U00002ABA',\n\t\"succneqq;\":                        '\\U00002AB6',\n\t\"succnsim;\":                        '\\U000022E9',\n\t\"succsim;\":                         '\\U0000227F',\n\t\"sum;\":                             '\\U00002211',\n\t\"sung;\":                            '\\U0000266A',\n\t\"sup;\":                             '\\U00002283',\n\t\"sup1;\":                            '\\U000000B9',\n\t\"sup2;\":                            '\\U000000B2',\n\t\"sup3;\":                            '\\U000000B3',\n\t\"supE;\":                            '\\U00002AC6',\n\t\"supdot;\":                          '\\U00002ABE',\n\t\"supdsub;\":                         '\\U00002AD8',\n\t\"supe;\":                            '\\U00002287',\n\t\"supedot;\":                         '\\U00002AC4',\n\t\"suphsol;\":                         '\\U000027C9',\n\t\"suphsub;\":                         '\\U00002AD7',\n\t\"suplarr;\":                         '\\U0000297B',\n\t\"supmult;\":                         '\\U00002AC2',\n\t\"supnE;\":                           '\\U00002ACC',\n\t\"supne;\":                           '\\U0000228B',\n\t\"supplus;\":                         '\\U00002AC0',\n\t\"supset;\":                          '\\U00002283',\n\t\"supseteq;\":                        '\\U00002287',\n\t\"supseteqq;\":                       '\\U00002AC6',\n\t\"supsetneq;\":                       '\\U0000228B',\n\t\"supsetneqq;\":                      '\\U00002ACC',\n\t\"supsim;\":                          '\\U00002AC8',\n\t\"supsub;\":                          '\\U00002AD4',\n\t\"supsup;\":                          '\\U00002AD6',\n\t\"swArr;\":                           '\\U000021D9',\n\t\"swarhk;\":                          '\\U00002926',\n\t\"swarr;\":                           '\\U00002199',\n\t\"swarrow;\":                         '\\U00002199',\n\t\"swnwar;\":                          '\\U0000292A',\n\t\"szlig;\":                           '\\U000000DF',\n\t\"target;\":                          '\\U00002316',\n\t\"tau;\":                             '\\U000003C4',\n\t\"tbrk;\":                            '\\U000023B4',\n\t\"tcaron;\":                          '\\U00000165',\n\t\"tcedil;\":                          '\\U00000163',\n\t\"tcy;\":                             '\\U00000442',\n\t\"tdot;\":                            '\\U000020DB',\n\t\"telrec;\":                          '\\U00002315',\n\t\"tfr;\":                             '\\U0001D531',\n\t\"there4;\":                          '\\U00002234',\n\t\"therefore;\":                       '\\U00002234',\n\t\"theta;\":                           '\\U000003B8',\n\t\"thetasym;\":                        '\\U000003D1',\n\t\"thetav;\":                          '\\U000003D1',\n\t\"thickapprox;\":                     '\\U00002248',\n\t\"thicksim;\":                        '\\U0000223C',\n\t\"thinsp;\":                          '\\U00002009',\n\t\"thkap;\":                           '\\U00002248',\n\t\"thksim;\":                          '\\U0000223C',\n\t\"thorn;\":                           '\\U000000FE',\n\t\"tilde;\":                           '\\U000002DC',\n\t\"times;\":                           '\\U000000D7',\n\t\"timesb;\":                          '\\U000022A0',\n\t\"timesbar;\":                        '\\U00002A31',\n\t\"timesd;\":                          '\\U00002A30',\n\t\"tint;\":                            '\\U0000222D',\n\t\"toea;\":                            '\\U00002928',\n\t\"top;\":                             '\\U000022A4',\n\t\"topbot;\":                          '\\U00002336',\n\t\"topcir;\":                          '\\U00002AF1',\n\t\"topf;\":                            '\\U0001D565',\n\t\"topfork;\":                         '\\U00002ADA',\n\t\"tosa;\":                            '\\U00002929',\n\t\"tprime;\":                          '\\U00002034',\n\t\"trade;\":                           '\\U00002122',\n\t\"triangle;\":                        '\\U000025B5',\n\t\"triangledown;\":                    '\\U000025BF',\n\t\"triangleleft;\":                    '\\U000025C3',\n\t\"trianglelefteq;\":                  '\\U000022B4',\n\t\"triangleq;\":                       '\\U0000225C',\n\t\"triangleright;\":                   '\\U000025B9',\n\t\"trianglerighteq;\":                 '\\U000022B5',\n\t\"tridot;\":                          '\\U000025EC',\n\t\"trie;\":                            '\\U0000225C',\n\t\"triminus;\":                        '\\U00002A3A',\n\t\"triplus;\":                         '\\U00002A39',\n\t\"trisb;\":                           '\\U000029CD',\n\t\"tritime;\":                         '\\U00002A3B',\n\t\"trpezium;\":                        '\\U000023E2',\n\t\"tscr;\":                            '\\U0001D4C9',\n\t\"tscy;\":                            '\\U00000446',\n\t\"tshcy;\":                           '\\U0000045B',\n\t\"tstrok;\":                          '\\U00000167',\n\t\"twixt;\":                           '\\U0000226C',\n\t\"twoheadleftarrow;\":                '\\U0000219E',\n\t\"twoheadrightarrow;\":               '\\U000021A0',\n\t\"uArr;\":                            '\\U000021D1',\n\t\"uHar;\":                            '\\U00002963',\n\t\"uacute;\":                          '\\U000000FA',\n\t\"uarr;\":                            '\\U00002191',\n\t\"ubrcy;\":                           '\\U0000045E',\n\t\"ubreve;\":                          '\\U0000016D',\n\t\"ucirc;\":                           '\\U000000FB',\n\t\"ucy;\":                             '\\U00000443',\n\t\"udarr;\":                           '\\U000021C5',\n\t\"udblac;\":                          '\\U00000171',\n\t\"udhar;\":                           '\\U0000296E',\n\t\"ufisht;\":                          '\\U0000297E',\n\t\"ufr;\":                             '\\U0001D532',\n\t\"ugrave;\":                          '\\U000000F9',\n\t\"uharl;\":                           '\\U000021BF',\n\t\"uharr;\":                           '\\U000021BE',\n\t\"uhblk;\":                           '\\U00002580',\n\t\"ulcorn;\":                          '\\U0000231C',\n\t\"ulcorner;\":                        '\\U0000231C',\n\t\"ulcrop;\":                          '\\U0000230F',\n\t\"ultri;\":                           '\\U000025F8',\n\t\"umacr;\":                           '\\U0000016B',\n\t\"uml;\":                             '\\U000000A8',\n\t\"uogon;\":                           '\\U00000173',\n\t\"uopf;\":                            '\\U0001D566',\n\t\"uparrow;\":                         '\\U00002191',\n\t\"updownarrow;\":                     '\\U00002195',\n\t\"upharpoonleft;\":                   '\\U000021BF',\n\t\"upharpoonright;\":                  '\\U000021BE',\n\t\"uplus;\":                           '\\U0000228E',\n\t\"upsi;\":                            '\\U000003C5',\n\t\"upsih;\":                           '\\U000003D2',\n\t\"upsilon;\":                         '\\U000003C5',\n\t\"upuparrows;\":                      '\\U000021C8',\n\t\"urcorn;\":                          '\\U0000231D',\n\t\"urcorner;\":                        '\\U0000231D',\n\t\"urcrop;\":                          '\\U0000230E',\n\t\"uring;\":                           '\\U0000016F',\n\t\"urtri;\":                           '\\U000025F9',\n\t\"uscr;\":                            '\\U0001D4CA',\n\t\"utdot;\":                           '\\U000022F0',\n\t\"utilde;\":                          '\\U00000169',\n\t\"utri;\":                            '\\U000025B5',\n\t\"utrif;\":                           '\\U000025B4',\n\t\"uuarr;\":                           '\\U000021C8',\n\t\"uuml;\":                            '\\U000000FC',\n\t\"uwangle;\":                         '\\U000029A7',\n\t\"vArr;\":                            '\\U000021D5',\n\t\"vBar;\":                            '\\U00002AE8',\n\t\"vBarv;\":                           '\\U00002AE9',\n\t\"vDash;\":                           '\\U000022A8',\n\t\"vangrt;\":                          '\\U0000299C',\n\t\"varepsilon;\":                      '\\U000003F5',\n\t\"varkappa;\":                        '\\U000003F0',\n\t\"varnothing;\":                      '\\U00002205',\n\t\"varphi;\":                          '\\U000003D5',\n\t\"varpi;\":                           '\\U000003D6',\n\t\"varpropto;\":                       '\\U0000221D',\n\t\"varr;\":                            '\\U00002195',\n\t\"varrho;\":                          '\\U000003F1',\n\t\"varsigma;\":                        '\\U000003C2',\n\t\"vartheta;\":                        '\\U000003D1',\n\t\"vartriangleleft;\":                 '\\U000022B2',\n\t\"vartriangleright;\":                '\\U000022B3',\n\t\"vcy;\":                             '\\U00000432',\n\t\"vdash;\":                           '\\U000022A2',\n\t\"vee;\":                             '\\U00002228',\n\t\"veebar;\":                          '\\U000022BB',\n\t\"veeeq;\":                           '\\U0000225A',\n\t\"vellip;\":                          '\\U000022EE',\n\t\"verbar;\":                          '\\U0000007C',\n\t\"vert;\":                            '\\U0000007C',\n\t\"vfr;\":                             '\\U0001D533',\n\t\"vltri;\":                           '\\U000022B2',\n\t\"vopf;\":                            '\\U0001D567',\n\t\"vprop;\":                           '\\U0000221D',\n\t\"vrtri;\":                           '\\U000022B3',\n\t\"vscr;\":                            '\\U0001D4CB',\n\t\"vzigzag;\":                         '\\U0000299A',\n\t\"wcirc;\":                           '\\U00000175',\n\t\"wedbar;\":                          '\\U00002A5F',\n\t\"wedge;\":                           '\\U00002227',\n\t\"wedgeq;\":                          '\\U00002259',\n\t\"weierp;\":                          '\\U00002118',\n\t\"wfr;\":                             '\\U0001D534',\n\t\"wopf;\":                            '\\U0001D568',\n\t\"wp;\":                              '\\U00002118',\n\t\"wr;\":                              '\\U00002240',\n\t\"wreath;\":                          '\\U00002240',\n\t\"wscr;\":                            '\\U0001D4CC',\n\t\"xcap;\":                            '\\U000022C2',\n\t\"xcirc;\":                           '\\U000025EF',\n\t\"xcup;\":                            '\\U000022C3',\n\t\"xdtri;\":                           '\\U000025BD',\n\t\"xfr;\":                             '\\U0001D535',\n\t\"xhArr;\":                           '\\U000027FA',\n\t\"xharr;\":                           '\\U000027F7',\n\t\"xi;\":                              '\\U000003BE',\n\t\"xlArr;\":                           '\\U000027F8',\n\t\"xlarr;\":                           '\\U000027F5',\n\t\"xmap;\":                            '\\U000027FC',\n\t\"xnis;\":                            '\\U000022FB',\n\t\"xodot;\":                           '\\U00002A00',\n\t\"xopf;\":                            '\\U0001D569',\n\t\"xoplus;\":                          '\\U00002A01',\n\t\"xotime;\":                          '\\U00002A02',\n\t\"xrArr;\":                           '\\U000027F9',\n\t\"xrarr;\":                           '\\U000027F6',\n\t\"xscr;\":                            '\\U0001D4CD',\n\t\"xsqcup;\":                          '\\U00002A06',\n\t\"xuplus;\":                          '\\U00002A04',\n\t\"xutri;\":                           '\\U000025B3',\n\t\"xvee;\":                            '\\U000022C1',\n\t\"xwedge;\":                          '\\U000022C0',\n\t\"yacute;\":                          '\\U000000FD',\n\t\"yacy;\":                            '\\U0000044F',\n\t\"ycirc;\":                           '\\U00000177',\n\t\"ycy;\":                             '\\U0000044B',\n\t\"yen;\":                             '\\U000000A5',\n\t\"yfr;\":                             '\\U0001D536',\n\t\"yicy;\":                            '\\U00000457',\n\t\"yopf;\":                            '\\U0001D56A',\n\t\"yscr;\":                            '\\U0001D4CE',\n\t\"yucy;\":                            '\\U0000044E',\n\t\"yuml;\":                            '\\U000000FF',\n\t\"zacute;\":                          '\\U0000017A',\n\t\"zcaron;\":                          '\\U0000017E',\n\t\"zcy;\":                             '\\U00000437',\n\t\"zdot;\":                            '\\U0000017C',\n\t\"zeetrf;\":                          '\\U00002128',\n\t\"zeta;\":                            '\\U000003B6',\n\t\"zfr;\":                             '\\U0001D537',\n\t\"zhcy;\":                            '\\U00000436',\n\t\"zigrarr;\":                         '\\U000021DD',\n\t\"zopf;\":                            '\\U0001D56B',\n\t\"zscr;\":                            '\\U0001D4CF',\n\t\"zwj;\":                             '\\U0000200D',\n\t\"zwnj;\":                            '\\U0000200C',\n\t\"AElig\":                            '\\U000000C6',\n\t\"AMP\":                              '\\U00000026',\n\t\"Aacute\":                           '\\U000000C1',\n\t\"Acirc\":                            '\\U000000C2',\n\t\"Agrave\":                           '\\U000000C0',\n\t\"Aring\":                            '\\U000000C5',\n\t\"Atilde\":                           '\\U000000C3',\n\t\"Auml\":                             '\\U000000C4',\n\t\"COPY\":                             '\\U000000A9',\n\t\"Ccedil\":                           '\\U000000C7',\n\t\"ETH\":                              '\\U000000D0',\n\t\"Eacute\":                           '\\U000000C9',\n\t\"Ecirc\":                            '\\U000000CA',\n\t\"Egrave\":                           '\\U000000C8',\n\t\"Euml\":                             '\\U000000CB',\n\t\"GT\":                               '\\U0000003E',\n\t\"Iacute\":                           '\\U000000CD',\n\t\"Icirc\":                            '\\U000000CE',\n\t\"Igrave\":                           '\\U000000CC',\n\t\"Iuml\":                             '\\U000000CF',\n\t\"LT\":                               '\\U0000003C',\n\t\"Ntilde\":                           '\\U000000D1',\n\t\"Oacute\":                           '\\U000000D3',\n\t\"Ocirc\":                            '\\U000000D4',\n\t\"Ograve\":                           '\\U000000D2',\n\t\"Oslash\":                           '\\U000000D8',\n\t\"Otilde\":                           '\\U000000D5',\n\t\"Ouml\":                             '\\U000000D6',\n\t\"QUOT\":                             '\\U00000022',\n\t\"REG\":                              '\\U000000AE',\n\t\"THORN\":                            '\\U000000DE',\n\t\"Uacute\":                           '\\U000000DA',\n\t\"Ucirc\":                            '\\U000000DB',\n\t\"Ugrave\":                           '\\U000000D9',\n\t\"Uuml\":                             '\\U000000DC',\n\t\"Yacute\":                           '\\U000000DD',\n\t\"aacute\":                           '\\U000000E1',\n\t\"acirc\":                            '\\U000000E2',\n\t\"acute\":                            '\\U000000B4',\n\t\"aelig\":                            '\\U000000E6',\n\t\"agrave\":                           '\\U000000E0',\n\t\"amp\":                              '\\U00000026',\n\t\"aring\":                            '\\U000000E5',\n\t\"atilde\":                           '\\U000000E3',\n\t\"auml\":                             '\\U000000E4',\n\t\"brvbar\":                           '\\U000000A6',\n\t\"ccedil\":                           '\\U000000E7',\n\t\"cedil\":                            '\\U000000B8',\n\t\"cent\":                             '\\U000000A2',\n\t\"copy\":                             '\\U000000A9',\n\t\"curren\":                           '\\U000000A4',\n\t\"deg\":                              '\\U000000B0',\n\t\"divide\":                           '\\U000000F7',\n\t\"eacute\":                           '\\U000000E9',\n\t\"ecirc\":                            '\\U000000EA',\n\t\"egrave\":                           '\\U000000E8',\n\t\"eth\":                              '\\U000000F0',\n\t\"euml\":                             '\\U000000EB',\n\t\"frac12\":                           '\\U000000BD',\n\t\"frac14\":                           '\\U000000BC',\n\t\"frac34\":                           '\\U000000BE',\n\t\"gt\":                               '\\U0000003E',\n\t\"iacute\":                           '\\U000000ED',\n\t\"icirc\":                            '\\U000000EE',\n\t\"iexcl\":                            '\\U000000A1',\n\t\"igrave\":                           '\\U000000EC',\n\t\"iquest\":                           '\\U000000BF',\n\t\"iuml\":                             '\\U000000EF',\n\t\"laquo\":                            '\\U000000AB',\n\t\"lt\":                               '\\U0000003C',\n\t\"macr\":                             '\\U000000AF',\n\t\"micro\":                            '\\U000000B5',\n\t\"middot\":                           '\\U000000B7',\n\t\"nbsp\":                             '\\U000000A0',\n\t\"not\":                              '\\U000000AC',\n\t\"ntilde\":                           '\\U000000F1',\n\t\"oacute\":                           '\\U000000F3',\n\t\"ocirc\":                            '\\U000000F4',\n\t\"ograve\":                           '\\U000000F2',\n\t\"ordf\":                             '\\U000000AA',\n\t\"ordm\":                             '\\U000000BA',\n\t\"oslash\":                           '\\U000000F8',\n\t\"otilde\":                           '\\U000000F5',\n\t\"ouml\":                             '\\U000000F6',\n\t\"para\":                             '\\U000000B6',\n\t\"plusmn\":                           '\\U000000B1',\n\t\"pound\":                            '\\U000000A3',\n\t\"quot\":                             '\\U00000022',\n\t\"raquo\":                            '\\U000000BB',\n\t\"reg\":                              '\\U000000AE',\n\t\"sect\":                             '\\U000000A7',\n\t\"shy\":                              '\\U000000AD',\n\t\"sup1\":                             '\\U000000B9',\n\t\"sup2\":                             '\\U000000B2',\n\t\"sup3\":                             '\\U000000B3',\n\t\"szlig\":                            '\\U000000DF',\n\t\"thorn\":                            '\\U000000FE',\n\t\"times\":                            '\\U000000D7',\n\t\"uacute\":                           '\\U000000FA',\n\t\"ucirc\":                            '\\U000000FB',\n\t\"ugrave\":                           '\\U000000F9',\n\t\"uml\":                              '\\U000000A8',\n\t\"uuml\":                             '\\U000000FC',\n\t\"yacute\":                           '\\U000000FD',\n\t\"yen\":                              '\\U000000A5',\n\t\"yuml\":                             '\\U000000FF',\n}\n\n// HTML entities that are two unicode codepoints.\nvar entity2 = map[string][2]rune{\n\t// TODO(nigeltao): Handle replacements that are wider than their names.\n\t// \"nLt;\":                     {'\\u226A', '\\u20D2'},\n\t// \"nGt;\":                     {'\\u226B', '\\u20D2'},\n\t\"NotEqualTilde;\":           {'\\u2242', '\\u0338'},\n\t\"NotGreaterFullEqual;\":     {'\\u2267', '\\u0338'},\n\t\"NotGreaterGreater;\":       {'\\u226B', '\\u0338'},\n\t\"NotGreaterSlantEqual;\":    {'\\u2A7E', '\\u0338'},\n\t\"NotHumpDownHump;\":         {'\\u224E', '\\u0338'},\n\t\"NotHumpEqual;\":            {'\\u224F', '\\u0338'},\n\t\"NotLeftTriangleBar;\":      {'\\u29CF', '\\u0338'},\n\t\"NotLessLess;\":             {'\\u226A', '\\u0338'},\n\t\"NotLessSlantEqual;\":       {'\\u2A7D', '\\u0338'},\n\t\"NotNestedGreaterGreater;\": {'\\u2AA2', '\\u0338'},\n\t\"NotNestedLessLess;\":       {'\\u2AA1', '\\u0338'},\n\t\"NotPrecedesEqual;\":        {'\\u2AAF', '\\u0338'},\n\t\"NotRightTriangleBar;\":     {'\\u29D0', '\\u0338'},\n\t\"NotSquareSubset;\":         {'\\u228F', '\\u0338'},\n\t\"NotSquareSuperset;\":       {'\\u2290', '\\u0338'},\n\t\"NotSubset;\":               {'\\u2282', '\\u20D2'},\n\t\"NotSucceedsEqual;\":        {'\\u2AB0', '\\u0338'},\n\t\"NotSucceedsTilde;\":        {'\\u227F', '\\u0338'},\n\t\"NotSuperset;\":             {'\\u2283', '\\u20D2'},\n\t\"ThickSpace;\":              {'\\u205F', '\\u200A'},\n\t\"acE;\":                     {'\\u223E', '\\u0333'},\n\t\"bne;\":                     {'\\u003D', '\\u20E5'},\n\t\"bnequiv;\":                 {'\\u2261', '\\u20E5'},\n\t\"caps;\":                    {'\\u2229', '\\uFE00'},\n\t\"cups;\":                    {'\\u222A', '\\uFE00'},\n\t\"fjlig;\":                   {'\\u0066', '\\u006A'},\n\t\"gesl;\":                    {'\\u22DB', '\\uFE00'},\n\t\"gvertneqq;\":               {'\\u2269', '\\uFE00'},\n\t\"gvnE;\":                    {'\\u2269', '\\uFE00'},\n\t\"lates;\":                   {'\\u2AAD', '\\uFE00'},\n\t\"lesg;\":                    {'\\u22DA', '\\uFE00'},\n\t\"lvertneqq;\":               {'\\u2268', '\\uFE00'},\n\t\"lvnE;\":                    {'\\u2268', '\\uFE00'},\n\t\"nGg;\":                     {'\\u22D9', '\\u0338'},\n\t\"nGtv;\":                    {'\\u226B', '\\u0338'},\n\t\"nLl;\":                     {'\\u22D8', '\\u0338'},\n\t\"nLtv;\":                    {'\\u226A', '\\u0338'},\n\t\"nang;\":                    {'\\u2220', '\\u20D2'},\n\t\"napE;\":                    {'\\u2A70', '\\u0338'},\n\t\"napid;\":                   {'\\u224B', '\\u0338'},\n\t\"nbump;\":                   {'\\u224E', '\\u0338'},\n\t\"nbumpe;\":                  {'\\u224F', '\\u0338'},\n\t\"ncongdot;\":                {'\\u2A6D', '\\u0338'},\n\t\"nedot;\":                   {'\\u2250', '\\u0338'},\n\t\"nesim;\":                   {'\\u2242', '\\u0338'},\n\t\"ngE;\":                     {'\\u2267', '\\u0338'},\n\t\"ngeqq;\":                   {'\\u2267', '\\u0338'},\n\t\"ngeqslant;\":               {'\\u2A7E', '\\u0338'},\n\t\"nges;\":                    {'\\u2A7E', '\\u0338'},\n\t\"nlE;\":                     {'\\u2266', '\\u0338'},\n\t\"nleqq;\":                   {'\\u2266', '\\u0338'},\n\t\"nleqslant;\":               {'\\u2A7D', '\\u0338'},\n\t\"nles;\":                    {'\\u2A7D', '\\u0338'},\n\t\"notinE;\":                  {'\\u22F9', '\\u0338'},\n\t\"notindot;\":                {'\\u22F5', '\\u0338'},\n\t\"nparsl;\":                  {'\\u2AFD', '\\u20E5'},\n\t\"npart;\":                   {'\\u2202', '\\u0338'},\n\t\"npre;\":                    {'\\u2AAF', '\\u0338'},\n\t\"npreceq;\":                 {'\\u2AAF', '\\u0338'},\n\t\"nrarrc;\":                  {'\\u2933', '\\u0338'},\n\t\"nrarrw;\":                  {'\\u219D', '\\u0338'},\n\t\"nsce;\":                    {'\\u2AB0', '\\u0338'},\n\t\"nsubE;\":                   {'\\u2AC5', '\\u0338'},\n\t\"nsubset;\":                 {'\\u2282', '\\u20D2'},\n\t\"nsubseteqq;\":              {'\\u2AC5', '\\u0338'},\n\t\"nsucceq;\":                 {'\\u2AB0', '\\u0338'},\n\t\"nsupE;\":                   {'\\u2AC6', '\\u0338'},\n\t\"nsupset;\":                 {'\\u2283', '\\u20D2'},\n\t\"nsupseteqq;\":              {'\\u2AC6', '\\u0338'},\n\t\"nvap;\":                    {'\\u224D', '\\u20D2'},\n\t\"nvge;\":                    {'\\u2265', '\\u20D2'},\n\t\"nvgt;\":                    {'\\u003E', '\\u20D2'},\n\t\"nvle;\":                    {'\\u2264', '\\u20D2'},\n\t\"nvlt;\":                    {'\\u003C', '\\u20D2'},\n\t\"nvltrie;\":                 {'\\u22B4', '\\u20D2'},\n\t\"nvrtrie;\":                 {'\\u22B5', '\\u20D2'},\n\t\"nvsim;\":                   {'\\u223C', '\\u20D2'},\n\t\"race;\":                    {'\\u223D', '\\u0331'},\n\t\"smtes;\":                   {'\\u2AAC', '\\uFE00'},\n\t\"sqcaps;\":                  {'\\u2293', '\\uFE00'},\n\t\"sqcups;\":                  {'\\u2294', '\\uFE00'},\n\t\"varsubsetneq;\":            {'\\u228A', '\\uFE00'},\n\t\"varsubsetneqq;\":           {'\\u2ACB', '\\uFE00'},\n\t\"varsupsetneq;\":            {'\\u228B', '\\uFE00'},\n\t\"varsupsetneqq;\":           {'\\u2ACC', '\\uFE00'},\n\t\"vnsub;\":                   {'\\u2282', '\\u20D2'},\n\t\"vnsup;\":                   {'\\u2283', '\\u20D2'},\n\t\"vsubnE;\":                  {'\\u2ACB', '\\uFE00'},\n\t\"vsubne;\":                  {'\\u228A', '\\uFE00'},\n\t\"vsupnE;\":                  {'\\u2ACC', '\\uFE00'},\n\t\"vsupne;\":                  {'\\u228B', '\\uFE00'},\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/net/html/escape.go",
    "content": "// Copyright 2010 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage html\n\nimport (\n\t\"bytes\"\n\t\"strings\"\n\t\"unicode/utf8\"\n)\n\n// These replacements permit compatibility with old numeric entities that\n// assumed Windows-1252 encoding.\n// https://html.spec.whatwg.org/multipage/syntax.html#consume-a-character-reference\nvar replacementTable = [...]rune{\n\t'\\u20AC', // First entry is what 0x80 should be replaced with.\n\t'\\u0081',\n\t'\\u201A',\n\t'\\u0192',\n\t'\\u201E',\n\t'\\u2026',\n\t'\\u2020',\n\t'\\u2021',\n\t'\\u02C6',\n\t'\\u2030',\n\t'\\u0160',\n\t'\\u2039',\n\t'\\u0152',\n\t'\\u008D',\n\t'\\u017D',\n\t'\\u008F',\n\t'\\u0090',\n\t'\\u2018',\n\t'\\u2019',\n\t'\\u201C',\n\t'\\u201D',\n\t'\\u2022',\n\t'\\u2013',\n\t'\\u2014',\n\t'\\u02DC',\n\t'\\u2122',\n\t'\\u0161',\n\t'\\u203A',\n\t'\\u0153',\n\t'\\u009D',\n\t'\\u017E',\n\t'\\u0178', // Last entry is 0x9F.\n\t// 0x00->'\\uFFFD' is handled programmatically.\n\t// 0x0D->'\\u000D' is a no-op.\n}\n\n// unescapeEntity reads an entity like \"&lt;\" from b[src:] and writes the\n// corresponding \"<\" to b[dst:], returning the incremented dst and src cursors.\n// Precondition: b[src] == '&' && dst <= src.\n// attribute should be true if parsing an attribute value.\nfunc unescapeEntity(b []byte, dst, src int, attribute bool) (dst1, src1 int) {\n\t// https://html.spec.whatwg.org/multipage/syntax.html#consume-a-character-reference\n\n\t// i starts at 1 because we already know that s[0] == '&'.\n\ti, s := 1, b[src:]\n\n\tif len(s) <= 1 {\n\t\tb[dst] = b[src]\n\t\treturn dst + 1, src + 1\n\t}\n\n\tif s[i] == '#' {\n\t\tif len(s) <= 3 { // We need to have at least \"&#.\".\n\t\t\tb[dst] = b[src]\n\t\t\treturn dst + 1, src + 1\n\t\t}\n\t\ti++\n\t\tc := s[i]\n\t\thex := false\n\t\tif c == 'x' || c == 'X' {\n\t\t\thex = true\n\t\t\ti++\n\t\t}\n\n\t\tx := '\\x00'\n\t\tfor i < len(s) {\n\t\t\tc = s[i]\n\t\t\ti++\n\t\t\tif hex {\n\t\t\t\tif '0' <= c && c <= '9' {\n\t\t\t\t\tx = 16*x + rune(c) - '0'\n\t\t\t\t\tcontinue\n\t\t\t\t} else if 'a' <= c && c <= 'f' {\n\t\t\t\t\tx = 16*x + rune(c) - 'a' + 10\n\t\t\t\t\tcontinue\n\t\t\t\t} else if 'A' <= c && c <= 'F' {\n\t\t\t\t\tx = 16*x + rune(c) - 'A' + 10\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t} else if '0' <= c && c <= '9' {\n\t\t\t\tx = 10*x + rune(c) - '0'\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif c != ';' {\n\t\t\t\ti--\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\n\t\tif i <= 3 { // No characters matched.\n\t\t\tb[dst] = b[src]\n\t\t\treturn dst + 1, src + 1\n\t\t}\n\n\t\tif 0x80 <= x && x <= 0x9F {\n\t\t\t// Replace characters from Windows-1252 with UTF-8 equivalents.\n\t\t\tx = replacementTable[x-0x80]\n\t\t} else if x == 0 || (0xD800 <= x && x <= 0xDFFF) || x > 0x10FFFF {\n\t\t\t// Replace invalid characters with the replacement character.\n\t\t\tx = '\\uFFFD'\n\t\t}\n\n\t\treturn dst + utf8.EncodeRune(b[dst:], x), src + i\n\t}\n\n\t// Consume the maximum number of characters possible, with the\n\t// consumed characters matching one of the named references.\n\n\tfor i < len(s) {\n\t\tc := s[i]\n\t\ti++\n\t\t// Lower-cased characters are more common in entities, so we check for them first.\n\t\tif 'a' <= c && c <= 'z' || 'A' <= c && c <= 'Z' || '0' <= c && c <= '9' {\n\t\t\tcontinue\n\t\t}\n\t\tif c != ';' {\n\t\t\ti--\n\t\t}\n\t\tbreak\n\t}\n\n\tentityName := string(s[1:i])\n\tif entityName == \"\" {\n\t\t// No-op.\n\t} else if attribute && entityName[len(entityName)-1] != ';' && len(s) > i && s[i] == '=' {\n\t\t// No-op.\n\t} else if x := entity[entityName]; x != 0 {\n\t\treturn dst + utf8.EncodeRune(b[dst:], x), src + i\n\t} else if x := entity2[entityName]; x[0] != 0 {\n\t\tdst1 := dst + utf8.EncodeRune(b[dst:], x[0])\n\t\treturn dst1 + utf8.EncodeRune(b[dst1:], x[1]), src + i\n\t} else if !attribute {\n\t\tmaxLen := len(entityName) - 1\n\t\tif maxLen > longestEntityWithoutSemicolon {\n\t\t\tmaxLen = longestEntityWithoutSemicolon\n\t\t}\n\t\tfor j := maxLen; j > 1; j-- {\n\t\t\tif x := entity[entityName[:j]]; x != 0 {\n\t\t\t\treturn dst + utf8.EncodeRune(b[dst:], x), src + j + 1\n\t\t\t}\n\t\t}\n\t}\n\n\tdst1, src1 = dst+i, src+i\n\tcopy(b[dst:dst1], b[src:src1])\n\treturn dst1, src1\n}\n\n// unescape unescapes b's entities in-place, so that \"a&lt;b\" becomes \"a<b\".\n// attribute should be true if parsing an attribute value.\nfunc unescape(b []byte, attribute bool) []byte {\n\tfor i, c := range b {\n\t\tif c == '&' {\n\t\t\tdst, src := unescapeEntity(b, i, i, attribute)\n\t\t\tfor src < len(b) {\n\t\t\t\tc := b[src]\n\t\t\t\tif c == '&' {\n\t\t\t\t\tdst, src = unescapeEntity(b, dst, src, attribute)\n\t\t\t\t} else {\n\t\t\t\t\tb[dst] = c\n\t\t\t\t\tdst, src = dst+1, src+1\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn b[0:dst]\n\t\t}\n\t}\n\treturn b\n}\n\n// lower lower-cases the A-Z bytes in b in-place, so that \"aBc\" becomes \"abc\".\nfunc lower(b []byte) []byte {\n\tfor i, c := range b {\n\t\tif 'A' <= c && c <= 'Z' {\n\t\t\tb[i] = c + 'a' - 'A'\n\t\t}\n\t}\n\treturn b\n}\n\n// escapeComment is like func escape but escapes its input bytes less often.\n// Per https://github.com/golang/go/issues/58246 some HTML comments are (1)\n// meaningful and (2) contain angle brackets that we'd like to avoid escaping\n// unless we have to.\n//\n// \"We have to\" includes the '&' byte, since that introduces other escapes.\n//\n// It also includes those bytes (not including EOF) that would otherwise end\n// the comment. Per the summary table at the bottom of comment_test.go, this is\n// the '>' byte that, per above, we'd like to avoid escaping unless we have to.\n//\n// Studying the summary table (and T actions in its '>' column) closely, we\n// only need to escape in states 43, 44, 49, 51 and 52. State 43 is at the\n// start of the comment data. State 52 is after a '!'. The other three states\n// are after a '-'.\n//\n// Our algorithm is thus to escape every '&' and to escape '>' if and only if:\n//   - The '>' is after a '!' or '-' (in the unescaped data) or\n//   - The '>' is at the start of the comment data (after the opening \"<!--\").\nfunc escapeComment(w writer, s string) error {\n\t// When modifying this function, consider manually increasing the\n\t// maxSuffixLen constant in func TestComments, from 6 to e.g. 9 or more.\n\t// That increase should only be temporary, not committed, as it\n\t// exponentially affects the test running time.\n\n\tif len(s) == 0 {\n\t\treturn nil\n\t}\n\n\t// Loop:\n\t//   - Grow j such that s[i:j] does not need escaping.\n\t//   - If s[j] does need escaping, output s[i:j] and an escaped s[j],\n\t//     resetting i and j to point past that s[j] byte.\n\ti := 0\n\tfor j := 0; j < len(s); j++ {\n\t\tescaped := \"\"\n\t\tswitch s[j] {\n\t\tcase '&':\n\t\t\tescaped = \"&amp;\"\n\n\t\tcase '>':\n\t\t\tif j > 0 {\n\t\t\t\tif prev := s[j-1]; (prev != '!') && (prev != '-') {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t}\n\t\t\tescaped = \"&gt;\"\n\n\t\tdefault:\n\t\t\tcontinue\n\t\t}\n\n\t\tif i < j {\n\t\t\tif _, err := w.WriteString(s[i:j]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t\tif _, err := w.WriteString(escaped); err != nil {\n\t\t\treturn err\n\t\t}\n\t\ti = j + 1\n\t}\n\n\tif i < len(s) {\n\t\tif _, err := w.WriteString(s[i:]); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\n// escapeCommentString is to EscapeString as escapeComment is to escape.\nfunc escapeCommentString(s string) string {\n\tif strings.IndexAny(s, \"&>\") == -1 {\n\t\treturn s\n\t}\n\tvar buf bytes.Buffer\n\tescapeComment(&buf, s)\n\treturn buf.String()\n}\n\nconst escapedChars = \"&'<>\\\"\\r\"\n\nfunc escape(w writer, s string) error {\n\ti := strings.IndexAny(s, escapedChars)\n\tfor i != -1 {\n\t\tif _, err := w.WriteString(s[:i]); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvar esc string\n\t\tswitch s[i] {\n\t\tcase '&':\n\t\t\tesc = \"&amp;\"\n\t\tcase '\\'':\n\t\t\t// \"&#39;\" is shorter than \"&apos;\" and apos was not in HTML until HTML5.\n\t\t\tesc = \"&#39;\"\n\t\tcase '<':\n\t\t\tesc = \"&lt;\"\n\t\tcase '>':\n\t\t\tesc = \"&gt;\"\n\t\tcase '\"':\n\t\t\t// \"&#34;\" is shorter than \"&quot;\".\n\t\t\tesc = \"&#34;\"\n\t\tcase '\\r':\n\t\t\tesc = \"&#13;\"\n\t\tdefault:\n\t\t\tpanic(\"html: unrecognized escape character\")\n\t\t}\n\t\ts = s[i+1:]\n\t\tif _, err := w.WriteString(esc); err != nil {\n\t\t\treturn err\n\t\t}\n\t\ti = strings.IndexAny(s, escapedChars)\n\t}\n\t_, err := w.WriteString(s)\n\treturn err\n}\n\n// EscapeString escapes special characters like \"<\" to become \"&lt;\". It\n// escapes only five such characters: <, >, &, ' and \".\n// UnescapeString(EscapeString(s)) == s always holds, but the converse isn't\n// always true.\nfunc EscapeString(s string) string {\n\tif strings.IndexAny(s, escapedChars) == -1 {\n\t\treturn s\n\t}\n\tvar buf bytes.Buffer\n\tescape(&buf, s)\n\treturn buf.String()\n}\n\n// UnescapeString unescapes entities like \"&lt;\" to become \"<\". It unescapes a\n// larger range of entities than EscapeString escapes. For example, \"&aacute;\"\n// unescapes to \"á\", as does \"&#225;\" and \"&xE1;\".\n// UnescapeString(EscapeString(s)) == s always holds, but the converse isn't\n// always true.\nfunc UnescapeString(s string) string {\n\tfor _, c := range s {\n\t\tif c == '&' {\n\t\t\treturn string(unescape([]byte(s), false))\n\t\t}\n\t}\n\treturn s\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/net/html/foreign.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage html\n\nimport (\n\t\"strings\"\n)\n\nfunc adjustAttributeNames(aa []Attribute, nameMap map[string]string) {\n\tfor i := range aa {\n\t\tif newName, ok := nameMap[aa[i].Key]; ok {\n\t\t\taa[i].Key = newName\n\t\t}\n\t}\n}\n\nfunc adjustForeignAttributes(aa []Attribute) {\n\tfor i, a := range aa {\n\t\tif a.Key == \"\" || a.Key[0] != 'x' {\n\t\t\tcontinue\n\t\t}\n\t\tswitch a.Key {\n\t\tcase \"xlink:actuate\", \"xlink:arcrole\", \"xlink:href\", \"xlink:role\", \"xlink:show\",\n\t\t\t\"xlink:title\", \"xlink:type\", \"xml:base\", \"xml:lang\", \"xml:space\", \"xmlns:xlink\":\n\t\t\tj := strings.Index(a.Key, \":\")\n\t\t\taa[i].Namespace = a.Key[:j]\n\t\t\taa[i].Key = a.Key[j+1:]\n\t\t}\n\t}\n}\n\nfunc htmlIntegrationPoint(n *Node) bool {\n\tif n.Type != ElementNode {\n\t\treturn false\n\t}\n\tswitch n.Namespace {\n\tcase \"math\":\n\t\tif n.Data == \"annotation-xml\" {\n\t\t\tfor _, a := range n.Attr {\n\t\t\t\tif a.Key == \"encoding\" {\n\t\t\t\t\tif strings.EqualFold(a.Val, \"text/html\") || strings.EqualFold(a.Val, \"application/xhtml+xml\") {\n\t\t\t\t\t\treturn true\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\tcase \"svg\":\n\t\tswitch n.Data {\n\t\tcase \"desc\", \"foreignObject\", \"title\":\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc mathMLTextIntegrationPoint(n *Node) bool {\n\tif n.Namespace != \"math\" {\n\t\treturn false\n\t}\n\tswitch n.Data {\n\tcase \"mi\", \"mo\", \"mn\", \"ms\", \"mtext\":\n\t\treturn true\n\t}\n\treturn false\n}\n\n// Section 12.2.6.5.\nvar breakout = map[string]bool{\n\t\"b\":          true,\n\t\"big\":        true,\n\t\"blockquote\": true,\n\t\"body\":       true,\n\t\"br\":         true,\n\t\"center\":     true,\n\t\"code\":       true,\n\t\"dd\":         true,\n\t\"div\":        true,\n\t\"dl\":         true,\n\t\"dt\":         true,\n\t\"em\":         true,\n\t\"embed\":      true,\n\t\"h1\":         true,\n\t\"h2\":         true,\n\t\"h3\":         true,\n\t\"h4\":         true,\n\t\"h5\":         true,\n\t\"h6\":         true,\n\t\"head\":       true,\n\t\"hr\":         true,\n\t\"i\":          true,\n\t\"img\":        true,\n\t\"li\":         true,\n\t\"listing\":    true,\n\t\"menu\":       true,\n\t\"meta\":       true,\n\t\"nobr\":       true,\n\t\"ol\":         true,\n\t\"p\":          true,\n\t\"pre\":        true,\n\t\"ruby\":       true,\n\t\"s\":          true,\n\t\"small\":      true,\n\t\"span\":       true,\n\t\"strong\":     true,\n\t\"strike\":     true,\n\t\"sub\":        true,\n\t\"sup\":        true,\n\t\"table\":      true,\n\t\"tt\":         true,\n\t\"u\":          true,\n\t\"ul\":         true,\n\t\"var\":        true,\n}\n\n// Section 12.2.6.5.\nvar svgTagNameAdjustments = map[string]string{\n\t\"altglyph\":            \"altGlyph\",\n\t\"altglyphdef\":         \"altGlyphDef\",\n\t\"altglyphitem\":        \"altGlyphItem\",\n\t\"animatecolor\":        \"animateColor\",\n\t\"animatemotion\":       \"animateMotion\",\n\t\"animatetransform\":    \"animateTransform\",\n\t\"clippath\":            \"clipPath\",\n\t\"feblend\":             \"feBlend\",\n\t\"fecolormatrix\":       \"feColorMatrix\",\n\t\"fecomponenttransfer\": \"feComponentTransfer\",\n\t\"fecomposite\":         \"feComposite\",\n\t\"feconvolvematrix\":    \"feConvolveMatrix\",\n\t\"fediffuselighting\":   \"feDiffuseLighting\",\n\t\"fedisplacementmap\":   \"feDisplacementMap\",\n\t\"fedistantlight\":      \"feDistantLight\",\n\t\"feflood\":             \"feFlood\",\n\t\"fefunca\":             \"feFuncA\",\n\t\"fefuncb\":             \"feFuncB\",\n\t\"fefuncg\":             \"feFuncG\",\n\t\"fefuncr\":             \"feFuncR\",\n\t\"fegaussianblur\":      \"feGaussianBlur\",\n\t\"feimage\":             \"feImage\",\n\t\"femerge\":             \"feMerge\",\n\t\"femergenode\":         \"feMergeNode\",\n\t\"femorphology\":        \"feMorphology\",\n\t\"feoffset\":            \"feOffset\",\n\t\"fepointlight\":        \"fePointLight\",\n\t\"fespecularlighting\":  \"feSpecularLighting\",\n\t\"fespotlight\":         \"feSpotLight\",\n\t\"fetile\":              \"feTile\",\n\t\"feturbulence\":        \"feTurbulence\",\n\t\"foreignobject\":       \"foreignObject\",\n\t\"glyphref\":            \"glyphRef\",\n\t\"lineargradient\":      \"linearGradient\",\n\t\"radialgradient\":      \"radialGradient\",\n\t\"textpath\":            \"textPath\",\n}\n\n// Section 12.2.6.1\nvar mathMLAttributeAdjustments = map[string]string{\n\t\"definitionurl\": \"definitionURL\",\n}\n\nvar svgAttributeAdjustments = map[string]string{\n\t\"attributename\":       \"attributeName\",\n\t\"attributetype\":       \"attributeType\",\n\t\"basefrequency\":       \"baseFrequency\",\n\t\"baseprofile\":         \"baseProfile\",\n\t\"calcmode\":            \"calcMode\",\n\t\"clippathunits\":       \"clipPathUnits\",\n\t\"diffuseconstant\":     \"diffuseConstant\",\n\t\"edgemode\":            \"edgeMode\",\n\t\"filterunits\":         \"filterUnits\",\n\t\"glyphref\":            \"glyphRef\",\n\t\"gradienttransform\":   \"gradientTransform\",\n\t\"gradientunits\":       \"gradientUnits\",\n\t\"kernelmatrix\":        \"kernelMatrix\",\n\t\"kernelunitlength\":    \"kernelUnitLength\",\n\t\"keypoints\":           \"keyPoints\",\n\t\"keysplines\":          \"keySplines\",\n\t\"keytimes\":            \"keyTimes\",\n\t\"lengthadjust\":        \"lengthAdjust\",\n\t\"limitingconeangle\":   \"limitingConeAngle\",\n\t\"markerheight\":        \"markerHeight\",\n\t\"markerunits\":         \"markerUnits\",\n\t\"markerwidth\":         \"markerWidth\",\n\t\"maskcontentunits\":    \"maskContentUnits\",\n\t\"maskunits\":           \"maskUnits\",\n\t\"numoctaves\":          \"numOctaves\",\n\t\"pathlength\":          \"pathLength\",\n\t\"patterncontentunits\": \"patternContentUnits\",\n\t\"patterntransform\":    \"patternTransform\",\n\t\"patternunits\":        \"patternUnits\",\n\t\"pointsatx\":           \"pointsAtX\",\n\t\"pointsaty\":           \"pointsAtY\",\n\t\"pointsatz\":           \"pointsAtZ\",\n\t\"preservealpha\":       \"preserveAlpha\",\n\t\"preserveaspectratio\": \"preserveAspectRatio\",\n\t\"primitiveunits\":      \"primitiveUnits\",\n\t\"refx\":                \"refX\",\n\t\"refy\":                \"refY\",\n\t\"repeatcount\":         \"repeatCount\",\n\t\"repeatdur\":           \"repeatDur\",\n\t\"requiredextensions\":  \"requiredExtensions\",\n\t\"requiredfeatures\":    \"requiredFeatures\",\n\t\"specularconstant\":    \"specularConstant\",\n\t\"specularexponent\":    \"specularExponent\",\n\t\"spreadmethod\":        \"spreadMethod\",\n\t\"startoffset\":         \"startOffset\",\n\t\"stddeviation\":        \"stdDeviation\",\n\t\"stitchtiles\":         \"stitchTiles\",\n\t\"surfacescale\":        \"surfaceScale\",\n\t\"systemlanguage\":      \"systemLanguage\",\n\t\"tablevalues\":         \"tableValues\",\n\t\"targetx\":             \"targetX\",\n\t\"targety\":             \"targetY\",\n\t\"textlength\":          \"textLength\",\n\t\"viewbox\":             \"viewBox\",\n\t\"viewtarget\":          \"viewTarget\",\n\t\"xchannelselector\":    \"xChannelSelector\",\n\t\"ychannelselector\":    \"yChannelSelector\",\n\t\"zoomandpan\":          \"zoomAndPan\",\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/net/html/iter.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build go1.23\n\npackage html\n\nimport \"iter\"\n\n// Ancestors returns an iterator over the ancestors of n, starting with n.Parent.\n//\n// Mutating a Node or its parents while iterating may have unexpected results.\nfunc (n *Node) Ancestors() iter.Seq[*Node] {\n\t_ = n.Parent // eager nil check\n\n\treturn func(yield func(*Node) bool) {\n\t\tfor p := n.Parent; p != nil && yield(p); p = p.Parent {\n\t\t}\n\t}\n}\n\n// ChildNodes returns an iterator over the immediate children of n,\n// starting with n.FirstChild.\n//\n// Mutating a Node or its children while iterating may have unexpected results.\nfunc (n *Node) ChildNodes() iter.Seq[*Node] {\n\t_ = n.FirstChild // eager nil check\n\n\treturn func(yield func(*Node) bool) {\n\t\tfor c := n.FirstChild; c != nil && yield(c); c = c.NextSibling {\n\t\t}\n\t}\n\n}\n\n// Descendants returns an iterator over all nodes recursively beneath\n// n, excluding n itself. Nodes are visited in depth-first preorder.\n//\n// Mutating a Node or its descendants while iterating may have unexpected results.\nfunc (n *Node) Descendants() iter.Seq[*Node] {\n\t_ = n.FirstChild // eager nil check\n\n\treturn func(yield func(*Node) bool) {\n\t\tn.descendants(yield)\n\t}\n}\n\nfunc (n *Node) descendants(yield func(*Node) bool) bool {\n\tfor c := range n.ChildNodes() {\n\t\tif !yield(c) || !c.descendants(yield) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/net/html/node.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage html\n\nimport (\n\t\"golang.org/x/net/html/atom\"\n)\n\n// A NodeType is the type of a Node.\ntype NodeType uint32\n\nconst (\n\tErrorNode NodeType = iota\n\tTextNode\n\tDocumentNode\n\tElementNode\n\tCommentNode\n\tDoctypeNode\n\t// RawNode nodes are not returned by the parser, but can be part of the\n\t// Node tree passed to func Render to insert raw HTML (without escaping).\n\t// If so, this package makes no guarantee that the rendered HTML is secure\n\t// (from e.g. Cross Site Scripting attacks) or well-formed.\n\tRawNode\n\tscopeMarkerNode\n)\n\n// Section 12.2.4.3 says \"The markers are inserted when entering applet,\n// object, marquee, template, td, th, and caption elements, and are used\n// to prevent formatting from \"leaking\" into applet, object, marquee,\n// template, td, th, and caption elements\".\nvar scopeMarker = Node{Type: scopeMarkerNode}\n\n// A Node consists of a NodeType and some Data (tag name for element nodes,\n// content for text) and are part of a tree of Nodes. Element nodes may also\n// have a Namespace and contain a slice of Attributes. Data is unescaped, so\n// that it looks like \"a<b\" rather than \"a&lt;b\". For element nodes, DataAtom\n// is the atom for Data, or zero if Data is not a known tag name.\n//\n// Node trees may be navigated using the link fields (Parent,\n// FirstChild, and so on) or a range loop over iterators such as\n// [Node.Descendants].\n//\n// An empty Namespace implies a \"http://www.w3.org/1999/xhtml\" namespace.\n// Similarly, \"math\" is short for \"http://www.w3.org/1998/Math/MathML\", and\n// \"svg\" is short for \"http://www.w3.org/2000/svg\".\ntype Node struct {\n\tParent, FirstChild, LastChild, PrevSibling, NextSibling *Node\n\n\tType      NodeType\n\tDataAtom  atom.Atom\n\tData      string\n\tNamespace string\n\tAttr      []Attribute\n}\n\n// InsertBefore inserts newChild as a child of n, immediately before oldChild\n// in the sequence of n's children. oldChild may be nil, in which case newChild\n// is appended to the end of n's children.\n//\n// It will panic if newChild already has a parent or siblings.\nfunc (n *Node) InsertBefore(newChild, oldChild *Node) {\n\tif newChild.Parent != nil || newChild.PrevSibling != nil || newChild.NextSibling != nil {\n\t\tpanic(\"html: InsertBefore called for an attached child Node\")\n\t}\n\tvar prev, next *Node\n\tif oldChild != nil {\n\t\tprev, next = oldChild.PrevSibling, oldChild\n\t} else {\n\t\tprev = n.LastChild\n\t}\n\tif prev != nil {\n\t\tprev.NextSibling = newChild\n\t} else {\n\t\tn.FirstChild = newChild\n\t}\n\tif next != nil {\n\t\tnext.PrevSibling = newChild\n\t} else {\n\t\tn.LastChild = newChild\n\t}\n\tnewChild.Parent = n\n\tnewChild.PrevSibling = prev\n\tnewChild.NextSibling = next\n}\n\n// AppendChild adds a node c as a child of n.\n//\n// It will panic if c already has a parent or siblings.\nfunc (n *Node) AppendChild(c *Node) {\n\tif c.Parent != nil || c.PrevSibling != nil || c.NextSibling != nil {\n\t\tpanic(\"html: AppendChild called for an attached child Node\")\n\t}\n\tlast := n.LastChild\n\tif last != nil {\n\t\tlast.NextSibling = c\n\t} else {\n\t\tn.FirstChild = c\n\t}\n\tn.LastChild = c\n\tc.Parent = n\n\tc.PrevSibling = last\n}\n\n// RemoveChild removes a node c that is a child of n. Afterwards, c will have\n// no parent and no siblings.\n//\n// It will panic if c's parent is not n.\nfunc (n *Node) RemoveChild(c *Node) {\n\tif c.Parent != n {\n\t\tpanic(\"html: RemoveChild called for a non-child Node\")\n\t}\n\tif n.FirstChild == c {\n\t\tn.FirstChild = c.NextSibling\n\t}\n\tif c.NextSibling != nil {\n\t\tc.NextSibling.PrevSibling = c.PrevSibling\n\t}\n\tif n.LastChild == c {\n\t\tn.LastChild = c.PrevSibling\n\t}\n\tif c.PrevSibling != nil {\n\t\tc.PrevSibling.NextSibling = c.NextSibling\n\t}\n\tc.Parent = nil\n\tc.PrevSibling = nil\n\tc.NextSibling = nil\n}\n\n// reparentChildren reparents all of src's child nodes to dst.\nfunc reparentChildren(dst, src *Node) {\n\tfor {\n\t\tchild := src.FirstChild\n\t\tif child == nil {\n\t\t\tbreak\n\t\t}\n\t\tsrc.RemoveChild(child)\n\t\tdst.AppendChild(child)\n\t}\n}\n\n// clone returns a new node with the same type, data and attributes.\n// The clone has no parent, no siblings and no children.\nfunc (n *Node) clone() *Node {\n\tm := &Node{\n\t\tType:     n.Type,\n\t\tDataAtom: n.DataAtom,\n\t\tData:     n.Data,\n\t\tAttr:     make([]Attribute, len(n.Attr)),\n\t}\n\tcopy(m.Attr, n.Attr)\n\treturn m\n}\n\n// nodeStack is a stack of nodes.\ntype nodeStack []*Node\n\n// pop pops the stack. It will panic if s is empty.\nfunc (s *nodeStack) pop() *Node {\n\ti := len(*s)\n\tn := (*s)[i-1]\n\t*s = (*s)[:i-1]\n\treturn n\n}\n\n// top returns the most recently pushed node, or nil if s is empty.\nfunc (s *nodeStack) top() *Node {\n\tif i := len(*s); i > 0 {\n\t\treturn (*s)[i-1]\n\t}\n\treturn nil\n}\n\n// index returns the index of the top-most occurrence of n in the stack, or -1\n// if n is not present.\nfunc (s *nodeStack) index(n *Node) int {\n\tfor i := len(*s) - 1; i >= 0; i-- {\n\t\tif (*s)[i] == n {\n\t\t\treturn i\n\t\t}\n\t}\n\treturn -1\n}\n\n// contains returns whether a is within s.\nfunc (s *nodeStack) contains(a atom.Atom) bool {\n\tfor _, n := range *s {\n\t\tif n.DataAtom == a && n.Namespace == \"\" {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// insert inserts a node at the given index.\nfunc (s *nodeStack) insert(i int, n *Node) {\n\t(*s) = append(*s, nil)\n\tcopy((*s)[i+1:], (*s)[i:])\n\t(*s)[i] = n\n}\n\n// remove removes a node from the stack. It is a no-op if n is not present.\nfunc (s *nodeStack) remove(n *Node) {\n\ti := s.index(n)\n\tif i == -1 {\n\t\treturn\n\t}\n\tcopy((*s)[i:], (*s)[i+1:])\n\tj := len(*s) - 1\n\t(*s)[j] = nil\n\t*s = (*s)[:j]\n}\n\ntype insertionModeStack []insertionMode\n\nfunc (s *insertionModeStack) pop() (im insertionMode) {\n\ti := len(*s)\n\tim = (*s)[i-1]\n\t*s = (*s)[:i-1]\n\treturn im\n}\n\nfunc (s *insertionModeStack) top() insertionMode {\n\tif i := len(*s); i > 0 {\n\t\treturn (*s)[i-1]\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/net/html/parse.go",
    "content": "// Copyright 2010 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage html\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"strings\"\n\n\ta \"golang.org/x/net/html/atom\"\n)\n\n// A parser implements the HTML5 parsing algorithm:\n// https://html.spec.whatwg.org/multipage/syntax.html#tree-construction\ntype parser struct {\n\t// tokenizer provides the tokens for the parser.\n\ttokenizer *Tokenizer\n\t// tok is the most recently read token.\n\ttok Token\n\t// Self-closing tags like <hr/> are treated as start tags, except that\n\t// hasSelfClosingToken is set while they are being processed.\n\thasSelfClosingToken bool\n\t// doc is the document root element.\n\tdoc *Node\n\t// The stack of open elements (section 12.2.4.2) and active formatting\n\t// elements (section 12.2.4.3).\n\toe, afe nodeStack\n\t// Element pointers (section 12.2.4.4).\n\thead, form *Node\n\t// Other parsing state flags (section 12.2.4.5).\n\tscripting, framesetOK bool\n\t// The stack of template insertion modes\n\ttemplateStack insertionModeStack\n\t// im is the current insertion mode.\n\tim insertionMode\n\t// originalIM is the insertion mode to go back to after completing a text\n\t// or inTableText insertion mode.\n\toriginalIM insertionMode\n\t// fosterParenting is whether new elements should be inserted according to\n\t// the foster parenting rules (section 12.2.6.1).\n\tfosterParenting bool\n\t// quirks is whether the parser is operating in \"quirks mode.\"\n\tquirks bool\n\t// fragment is whether the parser is parsing an HTML fragment.\n\tfragment bool\n\t// context is the context element when parsing an HTML fragment\n\t// (section 12.4).\n\tcontext *Node\n}\n\nfunc (p *parser) top() *Node {\n\tif n := p.oe.top(); n != nil {\n\t\treturn n\n\t}\n\treturn p.doc\n}\n\n// Stop tags for use in popUntil. These come from section 12.2.4.2.\nvar (\n\tdefaultScopeStopTags = map[string][]a.Atom{\n\t\t\"\":     {a.Applet, a.Caption, a.Html, a.Table, a.Td, a.Th, a.Marquee, a.Object, a.Template},\n\t\t\"math\": {a.AnnotationXml, a.Mi, a.Mn, a.Mo, a.Ms, a.Mtext},\n\t\t\"svg\":  {a.Desc, a.ForeignObject, a.Title},\n\t}\n)\n\ntype scope int\n\nconst (\n\tdefaultScope scope = iota\n\tlistItemScope\n\tbuttonScope\n\ttableScope\n\ttableRowScope\n\ttableBodyScope\n\tselectScope\n)\n\n// popUntil pops the stack of open elements at the highest element whose tag\n// is in matchTags, provided there is no higher element in the scope's stop\n// tags (as defined in section 12.2.4.2). It returns whether or not there was\n// such an element. If there was not, popUntil leaves the stack unchanged.\n//\n// For example, the set of stop tags for table scope is: \"html\", \"table\". If\n// the stack was:\n// [\"html\", \"body\", \"font\", \"table\", \"b\", \"i\", \"u\"]\n// then popUntil(tableScope, \"font\") would return false, but\n// popUntil(tableScope, \"i\") would return true and the stack would become:\n// [\"html\", \"body\", \"font\", \"table\", \"b\"]\n//\n// If an element's tag is in both the stop tags and matchTags, then the stack\n// will be popped and the function returns true (provided, of course, there was\n// no higher element in the stack that was also in the stop tags). For example,\n// popUntil(tableScope, \"table\") returns true and leaves:\n// [\"html\", \"body\", \"font\"]\nfunc (p *parser) popUntil(s scope, matchTags ...a.Atom) bool {\n\tif i := p.indexOfElementInScope(s, matchTags...); i != -1 {\n\t\tp.oe = p.oe[:i]\n\t\treturn true\n\t}\n\treturn false\n}\n\n// indexOfElementInScope returns the index in p.oe of the highest element whose\n// tag is in matchTags that is in scope. If no matching element is in scope, it\n// returns -1.\nfunc (p *parser) indexOfElementInScope(s scope, matchTags ...a.Atom) int {\n\tfor i := len(p.oe) - 1; i >= 0; i-- {\n\t\ttagAtom := p.oe[i].DataAtom\n\t\tif p.oe[i].Namespace == \"\" {\n\t\t\tfor _, t := range matchTags {\n\t\t\t\tif t == tagAtom {\n\t\t\t\t\treturn i\n\t\t\t\t}\n\t\t\t}\n\t\t\tswitch s {\n\t\t\tcase defaultScope:\n\t\t\t\t// No-op.\n\t\t\tcase listItemScope:\n\t\t\t\tif tagAtom == a.Ol || tagAtom == a.Ul {\n\t\t\t\t\treturn -1\n\t\t\t\t}\n\t\t\tcase buttonScope:\n\t\t\t\tif tagAtom == a.Button {\n\t\t\t\t\treturn -1\n\t\t\t\t}\n\t\t\tcase tableScope:\n\t\t\t\tif tagAtom == a.Html || tagAtom == a.Table || tagAtom == a.Template {\n\t\t\t\t\treturn -1\n\t\t\t\t}\n\t\t\tcase selectScope:\n\t\t\t\tif tagAtom != a.Optgroup && tagAtom != a.Option {\n\t\t\t\t\treturn -1\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tpanic(fmt.Sprintf(\"html: internal error: indexOfElementInScope unknown scope: %d\", s))\n\t\t\t}\n\t\t}\n\t\tswitch s {\n\t\tcase defaultScope, listItemScope, buttonScope:\n\t\t\tfor _, t := range defaultScopeStopTags[p.oe[i].Namespace] {\n\t\t\t\tif t == tagAtom {\n\t\t\t\t\treturn -1\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn -1\n}\n\n// elementInScope is like popUntil, except that it doesn't modify the stack of\n// open elements.\nfunc (p *parser) elementInScope(s scope, matchTags ...a.Atom) bool {\n\treturn p.indexOfElementInScope(s, matchTags...) != -1\n}\n\n// clearStackToContext pops elements off the stack of open elements until a\n// scope-defined element is found.\nfunc (p *parser) clearStackToContext(s scope) {\n\tfor i := len(p.oe) - 1; i >= 0; i-- {\n\t\ttagAtom := p.oe[i].DataAtom\n\t\tswitch s {\n\t\tcase tableScope:\n\t\t\tif tagAtom == a.Html || tagAtom == a.Table || tagAtom == a.Template {\n\t\t\t\tp.oe = p.oe[:i+1]\n\t\t\t\treturn\n\t\t\t}\n\t\tcase tableRowScope:\n\t\t\tif tagAtom == a.Html || tagAtom == a.Tr || tagAtom == a.Template {\n\t\t\t\tp.oe = p.oe[:i+1]\n\t\t\t\treturn\n\t\t\t}\n\t\tcase tableBodyScope:\n\t\t\tif tagAtom == a.Html || tagAtom == a.Tbody || tagAtom == a.Tfoot || tagAtom == a.Thead || tagAtom == a.Template {\n\t\t\t\tp.oe = p.oe[:i+1]\n\t\t\t\treturn\n\t\t\t}\n\t\tdefault:\n\t\t\tpanic(fmt.Sprintf(\"html: internal error: clearStackToContext unknown scope: %d\", s))\n\t\t}\n\t}\n}\n\n// parseGenericRawTextElement implements the generic raw text element parsing\n// algorithm defined in 12.2.6.2.\n// https://html.spec.whatwg.org/multipage/parsing.html#parsing-elements-that-contain-only-text\n// TODO: Since both RAWTEXT and RCDATA states are treated as tokenizer's part\n// officially, need to make tokenizer consider both states.\nfunc (p *parser) parseGenericRawTextElement() {\n\tp.addElement()\n\tp.originalIM = p.im\n\tp.im = textIM\n}\n\n// generateImpliedEndTags pops nodes off the stack of open elements as long as\n// the top node has a tag name of dd, dt, li, optgroup, option, p, rb, rp, rt or rtc.\n// If exceptions are specified, nodes with that name will not be popped off.\nfunc (p *parser) generateImpliedEndTags(exceptions ...string) {\n\tvar i int\nloop:\n\tfor i = len(p.oe) - 1; i >= 0; i-- {\n\t\tn := p.oe[i]\n\t\tif n.Type != ElementNode {\n\t\t\tbreak\n\t\t}\n\t\tswitch n.DataAtom {\n\t\tcase a.Dd, a.Dt, a.Li, a.Optgroup, a.Option, a.P, a.Rb, a.Rp, a.Rt, a.Rtc:\n\t\t\tfor _, except := range exceptions {\n\t\t\t\tif n.Data == except {\n\t\t\t\t\tbreak loop\n\t\t\t\t}\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\t\tbreak\n\t}\n\n\tp.oe = p.oe[:i+1]\n}\n\n// addChild adds a child node n to the top element, and pushes n onto the stack\n// of open elements if it is an element node.\nfunc (p *parser) addChild(n *Node) {\n\tif p.shouldFosterParent() {\n\t\tp.fosterParent(n)\n\t} else {\n\t\tp.top().AppendChild(n)\n\t}\n\n\tif n.Type == ElementNode {\n\t\tp.insertOpenElement(n)\n\t}\n}\n\nfunc (p *parser) insertOpenElement(n *Node) {\n\tp.oe = append(p.oe, n)\n\tif len(p.oe) > 512 {\n\t\tpanic(\"html: open stack of elements exceeds 512 nodes\")\n\t}\n}\n\n// shouldFosterParent returns whether the next node to be added should be\n// foster parented.\nfunc (p *parser) shouldFosterParent() bool {\n\tif p.fosterParenting {\n\t\tswitch p.top().DataAtom {\n\t\tcase a.Table, a.Tbody, a.Tfoot, a.Thead, a.Tr:\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// fosterParent adds a child node according to the foster parenting rules.\n// Section 12.2.6.1, \"foster parenting\".\nfunc (p *parser) fosterParent(n *Node) {\n\tvar table, parent, prev, template *Node\n\tvar i int\n\tfor i = len(p.oe) - 1; i >= 0; i-- {\n\t\tif p.oe[i].DataAtom == a.Table {\n\t\t\ttable = p.oe[i]\n\t\t\tbreak\n\t\t}\n\t}\n\n\tvar j int\n\tfor j = len(p.oe) - 1; j >= 0; j-- {\n\t\tif p.oe[j].DataAtom == a.Template {\n\t\t\ttemplate = p.oe[j]\n\t\t\tbreak\n\t\t}\n\t}\n\n\tif template != nil && (table == nil || j > i) {\n\t\ttemplate.AppendChild(n)\n\t\treturn\n\t}\n\n\tif table == nil {\n\t\t// The foster parent is the html element.\n\t\tparent = p.oe[0]\n\t} else {\n\t\tparent = table.Parent\n\t}\n\tif parent == nil {\n\t\tparent = p.oe[i-1]\n\t}\n\n\tif table != nil {\n\t\tprev = table.PrevSibling\n\t} else {\n\t\tprev = parent.LastChild\n\t}\n\tif prev != nil && prev.Type == TextNode && n.Type == TextNode {\n\t\tprev.Data += n.Data\n\t\treturn\n\t}\n\n\tparent.InsertBefore(n, table)\n}\n\n// addText adds text to the preceding node if it is a text node, or else it\n// calls addChild with a new text node.\nfunc (p *parser) addText(text string) {\n\tif text == \"\" {\n\t\treturn\n\t}\n\n\tif p.shouldFosterParent() {\n\t\tp.fosterParent(&Node{\n\t\t\tType: TextNode,\n\t\t\tData: text,\n\t\t})\n\t\treturn\n\t}\n\n\tt := p.top()\n\tif n := t.LastChild; n != nil && n.Type == TextNode {\n\t\tn.Data += text\n\t\treturn\n\t}\n\tp.addChild(&Node{\n\t\tType: TextNode,\n\t\tData: text,\n\t})\n}\n\n// addElement adds a child element based on the current token.\nfunc (p *parser) addElement() {\n\tp.addChild(&Node{\n\t\tType:     ElementNode,\n\t\tDataAtom: p.tok.DataAtom,\n\t\tData:     p.tok.Data,\n\t\tAttr:     p.tok.Attr,\n\t})\n}\n\n// Section 12.2.4.3.\nfunc (p *parser) addFormattingElement() {\n\ttagAtom, attr := p.tok.DataAtom, p.tok.Attr\n\tp.addElement()\n\n\t// Implement the Noah's Ark clause, but with three per family instead of two.\n\tidenticalElements := 0\nfindIdenticalElements:\n\tfor i := len(p.afe) - 1; i >= 0; i-- {\n\t\tn := p.afe[i]\n\t\tif n.Type == scopeMarkerNode {\n\t\t\tbreak\n\t\t}\n\t\tif n.Type != ElementNode {\n\t\t\tcontinue\n\t\t}\n\t\tif n.Namespace != \"\" {\n\t\t\tcontinue\n\t\t}\n\t\tif n.DataAtom != tagAtom {\n\t\t\tcontinue\n\t\t}\n\t\tif len(n.Attr) != len(attr) {\n\t\t\tcontinue\n\t\t}\n\tcompareAttributes:\n\t\tfor _, t0 := range n.Attr {\n\t\t\tfor _, t1 := range attr {\n\t\t\t\tif t0.Key == t1.Key && t0.Namespace == t1.Namespace && t0.Val == t1.Val {\n\t\t\t\t\t// Found a match for this attribute, continue with the next attribute.\n\t\t\t\t\tcontinue compareAttributes\n\t\t\t\t}\n\t\t\t}\n\t\t\t// If we get here, there is no attribute that matches a.\n\t\t\t// Therefore the element is not identical to the new one.\n\t\t\tcontinue findIdenticalElements\n\t\t}\n\n\t\tidenticalElements++\n\t\tif identicalElements >= 3 {\n\t\t\tp.afe.remove(n)\n\t\t}\n\t}\n\n\tp.afe = append(p.afe, p.top())\n}\n\n// Section 12.2.4.3.\nfunc (p *parser) clearActiveFormattingElements() {\n\tfor {\n\t\tif n := p.afe.pop(); len(p.afe) == 0 || n.Type == scopeMarkerNode {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Section 12.2.4.3.\nfunc (p *parser) reconstructActiveFormattingElements() {\n\tn := p.afe.top()\n\tif n == nil {\n\t\treturn\n\t}\n\tif n.Type == scopeMarkerNode || p.oe.index(n) != -1 {\n\t\treturn\n\t}\n\ti := len(p.afe) - 1\n\tfor n.Type != scopeMarkerNode && p.oe.index(n) == -1 {\n\t\tif i == 0 {\n\t\t\ti = -1\n\t\t\tbreak\n\t\t}\n\t\ti--\n\t\tn = p.afe[i]\n\t}\n\tfor {\n\t\ti++\n\t\tclone := p.afe[i].clone()\n\t\tp.addChild(clone)\n\t\tp.afe[i] = clone\n\t\tif i == len(p.afe)-1 {\n\t\t\tbreak\n\t\t}\n\t}\n}\n\n// Section 12.2.5.\nfunc (p *parser) acknowledgeSelfClosingTag() {\n\tp.hasSelfClosingToken = false\n}\n\n// An insertion mode (section 12.2.4.1) is the state transition function from\n// a particular state in the HTML5 parser's state machine. It updates the\n// parser's fields depending on parser.tok (where ErrorToken means EOF).\n// It returns whether the token was consumed.\ntype insertionMode func(*parser) bool\n\n// setOriginalIM sets the insertion mode to return to after completing a text or\n// inTableText insertion mode.\n// Section 12.2.4.1, \"using the rules for\".\nfunc (p *parser) setOriginalIM() {\n\tif p.originalIM != nil {\n\t\tpanic(\"html: bad parser state: originalIM was set twice\")\n\t}\n\tp.originalIM = p.im\n}\n\n// Section 12.2.4.1, \"reset the insertion mode\".\nfunc (p *parser) resetInsertionMode() {\n\tfor i := len(p.oe) - 1; i >= 0; i-- {\n\t\tn := p.oe[i]\n\t\tlast := i == 0\n\t\tif last && p.context != nil {\n\t\t\tn = p.context\n\t\t}\n\n\t\tswitch n.DataAtom {\n\t\tcase a.Select:\n\t\t\tif !last {\n\t\t\t\tfor ancestor, first := n, p.oe[0]; ancestor != first; {\n\t\t\t\t\tancestor = p.oe[p.oe.index(ancestor)-1]\n\t\t\t\t\tswitch ancestor.DataAtom {\n\t\t\t\t\tcase a.Template:\n\t\t\t\t\t\tp.im = inSelectIM\n\t\t\t\t\t\treturn\n\t\t\t\t\tcase a.Table:\n\t\t\t\t\t\tp.im = inSelectInTableIM\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tp.im = inSelectIM\n\t\tcase a.Td, a.Th:\n\t\t\t// TODO: remove this divergence from the HTML5 spec.\n\t\t\t//\n\t\t\t// See https://bugs.chromium.org/p/chromium/issues/detail?id=829668\n\t\t\tp.im = inCellIM\n\t\tcase a.Tr:\n\t\t\tp.im = inRowIM\n\t\tcase a.Tbody, a.Thead, a.Tfoot:\n\t\t\tp.im = inTableBodyIM\n\t\tcase a.Caption:\n\t\t\tp.im = inCaptionIM\n\t\tcase a.Colgroup:\n\t\t\tp.im = inColumnGroupIM\n\t\tcase a.Table:\n\t\t\tp.im = inTableIM\n\t\tcase a.Template:\n\t\t\t// TODO: remove this divergence from the HTML5 spec.\n\t\t\tif n.Namespace != \"\" {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tp.im = p.templateStack.top()\n\t\tcase a.Head:\n\t\t\t// TODO: remove this divergence from the HTML5 spec.\n\t\t\t//\n\t\t\t// See https://bugs.chromium.org/p/chromium/issues/detail?id=829668\n\t\t\tp.im = inHeadIM\n\t\tcase a.Body:\n\t\t\tp.im = inBodyIM\n\t\tcase a.Frameset:\n\t\t\tp.im = inFramesetIM\n\t\tcase a.Html:\n\t\t\tif p.head == nil {\n\t\t\t\tp.im = beforeHeadIM\n\t\t\t} else {\n\t\t\t\tp.im = afterHeadIM\n\t\t\t}\n\t\tdefault:\n\t\t\tif last {\n\t\t\t\tp.im = inBodyIM\n\t\t\t\treturn\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\t\treturn\n\t}\n}\n\nconst whitespace = \" \\t\\r\\n\\f\"\n\n// Section 12.2.6.4.1.\nfunc initialIM(p *parser) bool {\n\tswitch p.tok.Type {\n\tcase TextToken:\n\t\tp.tok.Data = strings.TrimLeft(p.tok.Data, whitespace)\n\t\tif len(p.tok.Data) == 0 {\n\t\t\t// It was all whitespace, so ignore it.\n\t\t\treturn true\n\t\t}\n\tcase CommentToken:\n\t\tp.doc.AppendChild(&Node{\n\t\t\tType: CommentNode,\n\t\t\tData: p.tok.Data,\n\t\t})\n\t\treturn true\n\tcase DoctypeToken:\n\t\tn, quirks := parseDoctype(p.tok.Data)\n\t\tp.doc.AppendChild(n)\n\t\tp.quirks = quirks\n\t\tp.im = beforeHTMLIM\n\t\treturn true\n\t}\n\tp.quirks = true\n\tp.im = beforeHTMLIM\n\treturn false\n}\n\n// Section 12.2.6.4.2.\nfunc beforeHTMLIM(p *parser) bool {\n\tswitch p.tok.Type {\n\tcase DoctypeToken:\n\t\t// Ignore the token.\n\t\treturn true\n\tcase TextToken:\n\t\tp.tok.Data = strings.TrimLeft(p.tok.Data, whitespace)\n\t\tif len(p.tok.Data) == 0 {\n\t\t\t// It was all whitespace, so ignore it.\n\t\t\treturn true\n\t\t}\n\tcase StartTagToken:\n\t\tif p.tok.DataAtom == a.Html {\n\t\t\tp.addElement()\n\t\t\tp.im = beforeHeadIM\n\t\t\treturn true\n\t\t}\n\tcase EndTagToken:\n\t\tswitch p.tok.DataAtom {\n\t\tcase a.Head, a.Body, a.Html, a.Br:\n\t\t\tp.parseImpliedToken(StartTagToken, a.Html, a.Html.String())\n\t\t\treturn false\n\t\tdefault:\n\t\t\t// Ignore the token.\n\t\t\treturn true\n\t\t}\n\tcase CommentToken:\n\t\tp.doc.AppendChild(&Node{\n\t\t\tType: CommentNode,\n\t\t\tData: p.tok.Data,\n\t\t})\n\t\treturn true\n\t}\n\tp.parseImpliedToken(StartTagToken, a.Html, a.Html.String())\n\treturn false\n}\n\n// Section 12.2.6.4.3.\nfunc beforeHeadIM(p *parser) bool {\n\tswitch p.tok.Type {\n\tcase TextToken:\n\t\tp.tok.Data = strings.TrimLeft(p.tok.Data, whitespace)\n\t\tif len(p.tok.Data) == 0 {\n\t\t\t// It was all whitespace, so ignore it.\n\t\t\treturn true\n\t\t}\n\tcase StartTagToken:\n\t\tswitch p.tok.DataAtom {\n\t\tcase a.Head:\n\t\t\tp.addElement()\n\t\t\tp.head = p.top()\n\t\t\tp.im = inHeadIM\n\t\t\treturn true\n\t\tcase a.Html:\n\t\t\treturn inBodyIM(p)\n\t\t}\n\tcase EndTagToken:\n\t\tswitch p.tok.DataAtom {\n\t\tcase a.Head, a.Body, a.Html, a.Br:\n\t\t\tp.parseImpliedToken(StartTagToken, a.Head, a.Head.String())\n\t\t\treturn false\n\t\tdefault:\n\t\t\t// Ignore the token.\n\t\t\treturn true\n\t\t}\n\tcase CommentToken:\n\t\tp.addChild(&Node{\n\t\t\tType: CommentNode,\n\t\t\tData: p.tok.Data,\n\t\t})\n\t\treturn true\n\tcase DoctypeToken:\n\t\t// Ignore the token.\n\t\treturn true\n\t}\n\n\tp.parseImpliedToken(StartTagToken, a.Head, a.Head.String())\n\treturn false\n}\n\n// Section 12.2.6.4.4.\nfunc inHeadIM(p *parser) bool {\n\tswitch p.tok.Type {\n\tcase TextToken:\n\t\ts := strings.TrimLeft(p.tok.Data, whitespace)\n\t\tif len(s) < len(p.tok.Data) {\n\t\t\t// Add the initial whitespace to the current node.\n\t\t\tp.addText(p.tok.Data[:len(p.tok.Data)-len(s)])\n\t\t\tif s == \"\" {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tp.tok.Data = s\n\t\t}\n\tcase StartTagToken:\n\t\tswitch p.tok.DataAtom {\n\t\tcase a.Html:\n\t\t\treturn inBodyIM(p)\n\t\tcase a.Base, a.Basefont, a.Bgsound, a.Link, a.Meta:\n\t\t\tp.addElement()\n\t\t\tp.oe.pop()\n\t\t\tp.acknowledgeSelfClosingTag()\n\t\t\treturn true\n\t\tcase a.Noscript:\n\t\t\tif p.scripting {\n\t\t\t\tp.parseGenericRawTextElement()\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tp.addElement()\n\t\t\tp.im = inHeadNoscriptIM\n\t\t\t// Don't let the tokenizer go into raw text mode when scripting is disabled.\n\t\t\tp.tokenizer.NextIsNotRawText()\n\t\t\treturn true\n\t\tcase a.Script, a.Title:\n\t\t\tp.addElement()\n\t\t\tp.setOriginalIM()\n\t\t\tp.im = textIM\n\t\t\treturn true\n\t\tcase a.Noframes, a.Style:\n\t\t\tp.parseGenericRawTextElement()\n\t\t\treturn true\n\t\tcase a.Head:\n\t\t\t// Ignore the token.\n\t\t\treturn true\n\t\tcase a.Template:\n\t\t\t// TODO: remove this divergence from the HTML5 spec.\n\t\t\t//\n\t\t\t// We don't handle all of the corner cases when mixing foreign\n\t\t\t// content (i.e. <math> or <svg>) with <template>. Without this\n\t\t\t// early return, we can get into an infinite loop, possibly because\n\t\t\t// of the \"TODO... further divergence\" a little below.\n\t\t\t//\n\t\t\t// As a workaround, if we are mixing foreign content and templates,\n\t\t\t// just ignore the rest of the HTML. Foreign content is rare and a\n\t\t\t// relatively old HTML feature. Templates are also rare and a\n\t\t\t// relatively new HTML feature. Their combination is very rare.\n\t\t\tfor _, e := range p.oe {\n\t\t\t\tif e.Namespace != \"\" {\n\t\t\t\t\tp.im = ignoreTheRemainingTokens\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tp.addElement()\n\t\t\tp.afe = append(p.afe, &scopeMarker)\n\t\t\tp.framesetOK = false\n\t\t\tp.im = inTemplateIM\n\t\t\tp.templateStack = append(p.templateStack, inTemplateIM)\n\t\t\treturn true\n\t\t}\n\tcase EndTagToken:\n\t\tswitch p.tok.DataAtom {\n\t\tcase a.Head:\n\t\t\tp.oe.pop()\n\t\t\tp.im = afterHeadIM\n\t\t\treturn true\n\t\tcase a.Body, a.Html, a.Br:\n\t\t\tp.parseImpliedToken(EndTagToken, a.Head, a.Head.String())\n\t\t\treturn false\n\t\tcase a.Template:\n\t\t\tif !p.oe.contains(a.Template) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\t// TODO: remove this further divergence from the HTML5 spec.\n\t\t\t//\n\t\t\t// See https://bugs.chromium.org/p/chromium/issues/detail?id=829668\n\t\t\tp.generateImpliedEndTags()\n\t\t\tfor i := len(p.oe) - 1; i >= 0; i-- {\n\t\t\t\tif n := p.oe[i]; n.Namespace == \"\" && n.DataAtom == a.Template {\n\t\t\t\t\tp.oe = p.oe[:i]\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tp.clearActiveFormattingElements()\n\t\t\tp.templateStack.pop()\n\t\t\tp.resetInsertionMode()\n\t\t\treturn true\n\t\tdefault:\n\t\t\t// Ignore the token.\n\t\t\treturn true\n\t\t}\n\tcase CommentToken:\n\t\tp.addChild(&Node{\n\t\t\tType: CommentNode,\n\t\t\tData: p.tok.Data,\n\t\t})\n\t\treturn true\n\tcase DoctypeToken:\n\t\t// Ignore the token.\n\t\treturn true\n\t}\n\n\tp.parseImpliedToken(EndTagToken, a.Head, a.Head.String())\n\treturn false\n}\n\n// Section 12.2.6.4.5.\nfunc inHeadNoscriptIM(p *parser) bool {\n\tswitch p.tok.Type {\n\tcase DoctypeToken:\n\t\t// Ignore the token.\n\t\treturn true\n\tcase StartTagToken:\n\t\tswitch p.tok.DataAtom {\n\t\tcase a.Html:\n\t\t\treturn inBodyIM(p)\n\t\tcase a.Basefont, a.Bgsound, a.Link, a.Meta, a.Noframes, a.Style:\n\t\t\treturn inHeadIM(p)\n\t\tcase a.Head:\n\t\t\t// Ignore the token.\n\t\t\treturn true\n\t\tcase a.Noscript:\n\t\t\t// Don't let the tokenizer go into raw text mode even when a <noscript>\n\t\t\t// tag is in \"in head noscript\" insertion mode.\n\t\t\tp.tokenizer.NextIsNotRawText()\n\t\t\t// Ignore the token.\n\t\t\treturn true\n\t\t}\n\tcase EndTagToken:\n\t\tswitch p.tok.DataAtom {\n\t\tcase a.Noscript, a.Br:\n\t\tdefault:\n\t\t\t// Ignore the token.\n\t\t\treturn true\n\t\t}\n\tcase TextToken:\n\t\ts := strings.TrimLeft(p.tok.Data, whitespace)\n\t\tif len(s) == 0 {\n\t\t\t// It was all whitespace.\n\t\t\treturn inHeadIM(p)\n\t\t}\n\tcase CommentToken:\n\t\treturn inHeadIM(p)\n\t}\n\tp.oe.pop()\n\tif p.top().DataAtom != a.Head {\n\t\tpanic(\"html: the new current node will be a head element.\")\n\t}\n\tp.im = inHeadIM\n\tif p.tok.DataAtom == a.Noscript {\n\t\treturn true\n\t}\n\treturn false\n}\n\n// Section 12.2.6.4.6.\nfunc afterHeadIM(p *parser) bool {\n\tswitch p.tok.Type {\n\tcase TextToken:\n\t\ts := strings.TrimLeft(p.tok.Data, whitespace)\n\t\tif len(s) < len(p.tok.Data) {\n\t\t\t// Add the initial whitespace to the current node.\n\t\t\tp.addText(p.tok.Data[:len(p.tok.Data)-len(s)])\n\t\t\tif s == \"\" {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tp.tok.Data = s\n\t\t}\n\tcase StartTagToken:\n\t\tswitch p.tok.DataAtom {\n\t\tcase a.Html:\n\t\t\treturn inBodyIM(p)\n\t\tcase a.Body:\n\t\t\tp.addElement()\n\t\t\tp.framesetOK = false\n\t\t\tp.im = inBodyIM\n\t\t\treturn true\n\t\tcase a.Frameset:\n\t\t\tp.addElement()\n\t\t\tp.im = inFramesetIM\n\t\t\treturn true\n\t\tcase a.Base, a.Basefont, a.Bgsound, a.Link, a.Meta, a.Noframes, a.Script, a.Style, a.Template, a.Title:\n\t\t\tp.insertOpenElement(p.head)\n\t\t\tdefer p.oe.remove(p.head)\n\t\t\treturn inHeadIM(p)\n\t\tcase a.Head:\n\t\t\t// Ignore the token.\n\t\t\treturn true\n\t\t}\n\tcase EndTagToken:\n\t\tswitch p.tok.DataAtom {\n\t\tcase a.Body, a.Html, a.Br:\n\t\t\t// Drop down to creating an implied <body> tag.\n\t\tcase a.Template:\n\t\t\treturn inHeadIM(p)\n\t\tdefault:\n\t\t\t// Ignore the token.\n\t\t\treturn true\n\t\t}\n\tcase CommentToken:\n\t\tp.addChild(&Node{\n\t\t\tType: CommentNode,\n\t\t\tData: p.tok.Data,\n\t\t})\n\t\treturn true\n\tcase DoctypeToken:\n\t\t// Ignore the token.\n\t\treturn true\n\t}\n\n\tp.parseImpliedToken(StartTagToken, a.Body, a.Body.String())\n\tp.framesetOK = true\n\tif p.tok.Type == ErrorToken {\n\t\t// Stop parsing.\n\t\treturn true\n\t}\n\treturn false\n}\n\n// copyAttributes copies attributes of src not found on dst to dst.\nfunc copyAttributes(dst *Node, src Token) {\n\tif len(src.Attr) == 0 {\n\t\treturn\n\t}\n\tattr := map[string]string{}\n\tfor _, t := range dst.Attr {\n\t\tattr[t.Key] = t.Val\n\t}\n\tfor _, t := range src.Attr {\n\t\tif _, ok := attr[t.Key]; !ok {\n\t\t\tdst.Attr = append(dst.Attr, t)\n\t\t\tattr[t.Key] = t.Val\n\t\t}\n\t}\n}\n\n// Section 12.2.6.4.7.\nfunc inBodyIM(p *parser) bool {\n\tswitch p.tok.Type {\n\tcase TextToken:\n\t\td := p.tok.Data\n\t\tswitch n := p.oe.top(); n.DataAtom {\n\t\tcase a.Pre, a.Listing:\n\t\t\tif n.FirstChild == nil {\n\t\t\t\t// Ignore a newline at the start of a <pre> block.\n\t\t\t\tif d != \"\" && d[0] == '\\r' {\n\t\t\t\t\td = d[1:]\n\t\t\t\t}\n\t\t\t\tif d != \"\" && d[0] == '\\n' {\n\t\t\t\t\td = d[1:]\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\td = strings.Replace(d, \"\\x00\", \"\", -1)\n\t\tif d == \"\" {\n\t\t\treturn true\n\t\t}\n\t\tp.reconstructActiveFormattingElements()\n\t\tp.addText(d)\n\t\tif p.framesetOK && strings.TrimLeft(d, whitespace) != \"\" {\n\t\t\t// There were non-whitespace characters inserted.\n\t\t\tp.framesetOK = false\n\t\t}\n\tcase StartTagToken:\n\t\tswitch p.tok.DataAtom {\n\t\tcase a.Html:\n\t\t\tif p.oe.contains(a.Template) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tcopyAttributes(p.oe[0], p.tok)\n\t\tcase a.Base, a.Basefont, a.Bgsound, a.Link, a.Meta, a.Noframes, a.Script, a.Style, a.Template, a.Title:\n\t\t\treturn inHeadIM(p)\n\t\tcase a.Body:\n\t\t\tif p.oe.contains(a.Template) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tif len(p.oe) >= 2 {\n\t\t\t\tbody := p.oe[1]\n\t\t\t\tif body.Type == ElementNode && body.DataAtom == a.Body {\n\t\t\t\t\tp.framesetOK = false\n\t\t\t\t\tcopyAttributes(body, p.tok)\n\t\t\t\t}\n\t\t\t}\n\t\tcase a.Frameset:\n\t\t\tif !p.framesetOK || len(p.oe) < 2 || p.oe[1].DataAtom != a.Body {\n\t\t\t\t// Ignore the token.\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tbody := p.oe[1]\n\t\t\tif body.Parent != nil {\n\t\t\t\tbody.Parent.RemoveChild(body)\n\t\t\t}\n\t\t\tp.oe = p.oe[:1]\n\t\t\tp.addElement()\n\t\t\tp.im = inFramesetIM\n\t\t\treturn true\n\t\tcase a.Address, a.Article, a.Aside, a.Blockquote, a.Center, a.Details, a.Dialog, a.Dir, a.Div, a.Dl, a.Fieldset, a.Figcaption, a.Figure, a.Footer, a.Header, a.Hgroup, a.Main, a.Menu, a.Nav, a.Ol, a.P, a.Search, a.Section, a.Summary, a.Ul:\n\t\t\tp.popUntil(buttonScope, a.P)\n\t\t\tp.addElement()\n\t\tcase a.H1, a.H2, a.H3, a.H4, a.H5, a.H6:\n\t\t\tp.popUntil(buttonScope, a.P)\n\t\t\tswitch n := p.top(); n.DataAtom {\n\t\t\tcase a.H1, a.H2, a.H3, a.H4, a.H5, a.H6:\n\t\t\t\tp.oe.pop()\n\t\t\t}\n\t\t\tp.addElement()\n\t\tcase a.Pre, a.Listing:\n\t\t\tp.popUntil(buttonScope, a.P)\n\t\t\tp.addElement()\n\t\t\t// The newline, if any, will be dealt with by the TextToken case.\n\t\t\tp.framesetOK = false\n\t\tcase a.Form:\n\t\t\tif p.form != nil && !p.oe.contains(a.Template) {\n\t\t\t\t// Ignore the token\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tp.popUntil(buttonScope, a.P)\n\t\t\tp.addElement()\n\t\t\tif !p.oe.contains(a.Template) {\n\t\t\t\tp.form = p.top()\n\t\t\t}\n\t\tcase a.Li:\n\t\t\tp.framesetOK = false\n\t\t\tfor i := len(p.oe) - 1; i >= 0; i-- {\n\t\t\t\tnode := p.oe[i]\n\t\t\t\tswitch node.DataAtom {\n\t\t\t\tcase a.Li:\n\t\t\t\t\tp.oe = p.oe[:i]\n\t\t\t\tcase a.Address, a.Div, a.P:\n\t\t\t\t\tcontinue\n\t\t\t\tdefault:\n\t\t\t\t\tif !isSpecialElement(node) {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tp.popUntil(buttonScope, a.P)\n\t\t\tp.addElement()\n\t\tcase a.Dd, a.Dt:\n\t\t\tp.framesetOK = false\n\t\t\tfor i := len(p.oe) - 1; i >= 0; i-- {\n\t\t\t\tnode := p.oe[i]\n\t\t\t\tswitch node.DataAtom {\n\t\t\t\tcase a.Dd, a.Dt:\n\t\t\t\t\tp.oe = p.oe[:i]\n\t\t\t\tcase a.Address, a.Div, a.P:\n\t\t\t\t\tcontinue\n\t\t\t\tdefault:\n\t\t\t\t\tif !isSpecialElement(node) {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tp.popUntil(buttonScope, a.P)\n\t\t\tp.addElement()\n\t\tcase a.Plaintext:\n\t\t\tp.popUntil(buttonScope, a.P)\n\t\t\tp.addElement()\n\t\tcase a.Button:\n\t\t\tp.popUntil(defaultScope, a.Button)\n\t\t\tp.reconstructActiveFormattingElements()\n\t\t\tp.addElement()\n\t\t\tp.framesetOK = false\n\t\tcase a.A:\n\t\t\tfor i := len(p.afe) - 1; i >= 0 && p.afe[i].Type != scopeMarkerNode; i-- {\n\t\t\t\tif n := p.afe[i]; n.Type == ElementNode && n.DataAtom == a.A {\n\t\t\t\t\tp.inBodyEndTagFormatting(a.A, \"a\")\n\t\t\t\t\tp.oe.remove(n)\n\t\t\t\t\tp.afe.remove(n)\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tp.reconstructActiveFormattingElements()\n\t\t\tp.addFormattingElement()\n\t\tcase a.B, a.Big, a.Code, a.Em, a.Font, a.I, a.S, a.Small, a.Strike, a.Strong, a.Tt, a.U:\n\t\t\tp.reconstructActiveFormattingElements()\n\t\t\tp.addFormattingElement()\n\t\tcase a.Nobr:\n\t\t\tp.reconstructActiveFormattingElements()\n\t\t\tif p.elementInScope(defaultScope, a.Nobr) {\n\t\t\t\tp.inBodyEndTagFormatting(a.Nobr, \"nobr\")\n\t\t\t\tp.reconstructActiveFormattingElements()\n\t\t\t}\n\t\t\tp.addFormattingElement()\n\t\tcase a.Applet, a.Marquee, a.Object:\n\t\t\tp.reconstructActiveFormattingElements()\n\t\t\tp.addElement()\n\t\t\tp.afe = append(p.afe, &scopeMarker)\n\t\t\tp.framesetOK = false\n\t\tcase a.Table:\n\t\t\tif !p.quirks {\n\t\t\t\tp.popUntil(buttonScope, a.P)\n\t\t\t}\n\t\t\tp.addElement()\n\t\t\tp.framesetOK = false\n\t\t\tp.im = inTableIM\n\t\t\treturn true\n\t\tcase a.Area, a.Br, a.Embed, a.Img, a.Input, a.Keygen, a.Wbr:\n\t\t\tp.reconstructActiveFormattingElements()\n\t\t\tp.addElement()\n\t\t\tp.oe.pop()\n\t\t\tp.acknowledgeSelfClosingTag()\n\t\t\tif p.tok.DataAtom == a.Input {\n\t\t\t\tfor _, t := range p.tok.Attr {\n\t\t\t\t\tif t.Key == \"type\" {\n\t\t\t\t\t\tif strings.EqualFold(t.Val, \"hidden\") {\n\t\t\t\t\t\t\t// Skip setting framesetOK = false\n\t\t\t\t\t\t\treturn true\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tp.framesetOK = false\n\t\tcase a.Param, a.Source, a.Track:\n\t\t\tp.addElement()\n\t\t\tp.oe.pop()\n\t\t\tp.acknowledgeSelfClosingTag()\n\t\tcase a.Hr:\n\t\t\tp.popUntil(buttonScope, a.P)\n\t\t\tp.addElement()\n\t\t\tp.oe.pop()\n\t\t\tp.acknowledgeSelfClosingTag()\n\t\t\tp.framesetOK = false\n\t\tcase a.Image:\n\t\t\tp.tok.DataAtom = a.Img\n\t\t\tp.tok.Data = a.Img.String()\n\t\t\treturn false\n\t\tcase a.Textarea:\n\t\t\tp.addElement()\n\t\t\tp.setOriginalIM()\n\t\t\tp.framesetOK = false\n\t\t\tp.im = textIM\n\t\tcase a.Xmp:\n\t\t\tp.popUntil(buttonScope, a.P)\n\t\t\tp.reconstructActiveFormattingElements()\n\t\t\tp.framesetOK = false\n\t\t\tp.parseGenericRawTextElement()\n\t\tcase a.Iframe:\n\t\t\tp.framesetOK = false\n\t\t\tp.parseGenericRawTextElement()\n\t\tcase a.Noembed:\n\t\t\tp.parseGenericRawTextElement()\n\t\tcase a.Noscript:\n\t\t\tif p.scripting {\n\t\t\t\tp.parseGenericRawTextElement()\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tp.reconstructActiveFormattingElements()\n\t\t\tp.addElement()\n\t\t\t// Don't let the tokenizer go into raw text mode when scripting is disabled.\n\t\t\tp.tokenizer.NextIsNotRawText()\n\t\tcase a.Select:\n\t\t\tp.reconstructActiveFormattingElements()\n\t\t\tp.addElement()\n\t\t\tp.framesetOK = false\n\t\t\tp.im = inSelectIM\n\t\t\treturn true\n\t\tcase a.Optgroup, a.Option:\n\t\t\tif p.top().DataAtom == a.Option {\n\t\t\t\tp.oe.pop()\n\t\t\t}\n\t\t\tp.reconstructActiveFormattingElements()\n\t\t\tp.addElement()\n\t\tcase a.Rb, a.Rtc:\n\t\t\tif p.elementInScope(defaultScope, a.Ruby) {\n\t\t\t\tp.generateImpliedEndTags()\n\t\t\t}\n\t\t\tp.addElement()\n\t\tcase a.Rp, a.Rt:\n\t\t\tif p.elementInScope(defaultScope, a.Ruby) {\n\t\t\t\tp.generateImpliedEndTags(\"rtc\")\n\t\t\t}\n\t\t\tp.addElement()\n\t\tcase a.Math, a.Svg:\n\t\t\tp.reconstructActiveFormattingElements()\n\t\t\tif p.tok.DataAtom == a.Math {\n\t\t\t\tadjustAttributeNames(p.tok.Attr, mathMLAttributeAdjustments)\n\t\t\t} else {\n\t\t\t\tadjustAttributeNames(p.tok.Attr, svgAttributeAdjustments)\n\t\t\t}\n\t\t\tadjustForeignAttributes(p.tok.Attr)\n\t\t\tp.addElement()\n\t\t\tp.top().Namespace = p.tok.Data\n\t\t\tif p.hasSelfClosingToken {\n\t\t\t\tp.oe.pop()\n\t\t\t\tp.acknowledgeSelfClosingTag()\n\t\t\t}\n\t\t\treturn true\n\t\tcase a.Caption, a.Col, a.Colgroup, a.Frame, a.Head, a.Tbody, a.Td, a.Tfoot, a.Th, a.Thead, a.Tr:\n\t\t\t// Ignore the token.\n\t\tdefault:\n\t\t\tp.reconstructActiveFormattingElements()\n\t\t\tp.addElement()\n\t\t}\n\tcase EndTagToken:\n\t\tswitch p.tok.DataAtom {\n\t\tcase a.Body:\n\t\t\tif p.elementInScope(defaultScope, a.Body) {\n\t\t\t\tp.im = afterBodyIM\n\t\t\t}\n\t\tcase a.Html:\n\t\t\tif p.elementInScope(defaultScope, a.Body) {\n\t\t\t\tp.parseImpliedToken(EndTagToken, a.Body, a.Body.String())\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn true\n\t\tcase a.Address, a.Article, a.Aside, a.Blockquote, a.Button, a.Center, a.Details, a.Dialog, a.Dir, a.Div, a.Dl, a.Fieldset, a.Figcaption, a.Figure, a.Footer, a.Header, a.Hgroup, a.Listing, a.Main, a.Menu, a.Nav, a.Ol, a.Pre, a.Search, a.Section, a.Summary, a.Ul:\n\t\t\tp.popUntil(defaultScope, p.tok.DataAtom)\n\t\tcase a.Form:\n\t\t\tif p.oe.contains(a.Template) {\n\t\t\t\ti := p.indexOfElementInScope(defaultScope, a.Form)\n\t\t\t\tif i == -1 {\n\t\t\t\t\t// Ignore the token.\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\tp.generateImpliedEndTags()\n\t\t\t\tif p.oe[i].DataAtom != a.Form {\n\t\t\t\t\t// Ignore the token.\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\tp.popUntil(defaultScope, a.Form)\n\t\t\t} else {\n\t\t\t\tnode := p.form\n\t\t\t\tp.form = nil\n\t\t\t\ti := p.indexOfElementInScope(defaultScope, a.Form)\n\t\t\t\tif node == nil || i == -1 || p.oe[i] != node {\n\t\t\t\t\t// Ignore the token.\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\tp.generateImpliedEndTags()\n\t\t\t\tp.oe.remove(node)\n\t\t\t}\n\t\tcase a.P:\n\t\t\tif !p.elementInScope(buttonScope, a.P) {\n\t\t\t\tp.parseImpliedToken(StartTagToken, a.P, a.P.String())\n\t\t\t}\n\t\t\tp.popUntil(buttonScope, a.P)\n\t\tcase a.Li:\n\t\t\tp.popUntil(listItemScope, a.Li)\n\t\tcase a.Dd, a.Dt:\n\t\t\tp.popUntil(defaultScope, p.tok.DataAtom)\n\t\tcase a.H1, a.H2, a.H3, a.H4, a.H5, a.H6:\n\t\t\tp.popUntil(defaultScope, a.H1, a.H2, a.H3, a.H4, a.H5, a.H6)\n\t\tcase a.A, a.B, a.Big, a.Code, a.Em, a.Font, a.I, a.Nobr, a.S, a.Small, a.Strike, a.Strong, a.Tt, a.U:\n\t\t\tp.inBodyEndTagFormatting(p.tok.DataAtom, p.tok.Data)\n\t\tcase a.Applet, a.Marquee, a.Object:\n\t\t\tif p.popUntil(defaultScope, p.tok.DataAtom) {\n\t\t\t\tp.clearActiveFormattingElements()\n\t\t\t}\n\t\tcase a.Br:\n\t\t\tp.tok.Type = StartTagToken\n\t\t\treturn false\n\t\tcase a.Template:\n\t\t\treturn inHeadIM(p)\n\t\tdefault:\n\t\t\tp.inBodyEndTagOther(p.tok.DataAtom, p.tok.Data)\n\t\t}\n\tcase CommentToken:\n\t\tp.addChild(&Node{\n\t\t\tType: CommentNode,\n\t\t\tData: p.tok.Data,\n\t\t})\n\tcase ErrorToken:\n\t\t// TODO: remove this divergence from the HTML5 spec.\n\t\tif len(p.templateStack) > 0 {\n\t\t\tp.im = inTemplateIM\n\t\t\treturn false\n\t\t}\n\t\tfor _, e := range p.oe {\n\t\t\tswitch e.DataAtom {\n\t\t\tcase a.Dd, a.Dt, a.Li, a.Optgroup, a.Option, a.P, a.Rb, a.Rp, a.Rt, a.Rtc, a.Tbody, a.Td, a.Tfoot, a.Th,\n\t\t\t\ta.Thead, a.Tr, a.Body, a.Html:\n\t\t\tdefault:\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t}\n\n\treturn true\n}\n\nfunc (p *parser) inBodyEndTagFormatting(tagAtom a.Atom, tagName string) {\n\t// This is the \"adoption agency\" algorithm, described at\n\t// https://html.spec.whatwg.org/multipage/syntax.html#adoptionAgency\n\n\t// TODO: this is a fairly literal line-by-line translation of that algorithm.\n\t// Once the code successfully parses the comprehensive test suite, we should\n\t// refactor this code to be more idiomatic.\n\n\t// Steps 1-2\n\tif current := p.oe.top(); current.Data == tagName && p.afe.index(current) == -1 {\n\t\tp.oe.pop()\n\t\treturn\n\t}\n\n\t// Steps 3-5. The outer loop.\n\tfor i := 0; i < 8; i++ {\n\t\t// Step 6. Find the formatting element.\n\t\tvar formattingElement *Node\n\t\tfor j := len(p.afe) - 1; j >= 0; j-- {\n\t\t\tif p.afe[j].Type == scopeMarkerNode {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tif p.afe[j].DataAtom == tagAtom {\n\t\t\t\tformattingElement = p.afe[j]\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif formattingElement == nil {\n\t\t\tp.inBodyEndTagOther(tagAtom, tagName)\n\t\t\treturn\n\t\t}\n\n\t\t// Step 7. Ignore the tag if formatting element is not in the stack of open elements.\n\t\tfeIndex := p.oe.index(formattingElement)\n\t\tif feIndex == -1 {\n\t\t\tp.afe.remove(formattingElement)\n\t\t\treturn\n\t\t}\n\t\t// Step 8. Ignore the tag if formatting element is not in the scope.\n\t\tif !p.elementInScope(defaultScope, tagAtom) {\n\t\t\t// Ignore the tag.\n\t\t\treturn\n\t\t}\n\n\t\t// Step 9. This step is omitted because it's just a parse error but no need to return.\n\n\t\t// Steps 10-11. Find the furthest block.\n\t\tvar furthestBlock *Node\n\t\tfor _, e := range p.oe[feIndex:] {\n\t\t\tif isSpecialElement(e) {\n\t\t\t\tfurthestBlock = e\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif furthestBlock == nil {\n\t\t\te := p.oe.pop()\n\t\t\tfor e != formattingElement {\n\t\t\t\te = p.oe.pop()\n\t\t\t}\n\t\t\tp.afe.remove(e)\n\t\t\treturn\n\t\t}\n\n\t\t// Steps 12-13. Find the common ancestor and bookmark node.\n\t\tcommonAncestor := p.oe[feIndex-1]\n\t\tbookmark := p.afe.index(formattingElement)\n\n\t\t// Step 14. The inner loop. Find the lastNode to reparent.\n\t\tlastNode := furthestBlock\n\t\tnode := furthestBlock\n\t\tx := p.oe.index(node)\n\t\t// Step 14.1.\n\t\tj := 0\n\t\tfor {\n\t\t\t// Step 14.2.\n\t\t\tj++\n\t\t\t// Step. 14.3.\n\t\t\tx--\n\t\t\tnode = p.oe[x]\n\t\t\t// Step 14.4. Go to the next step if node is formatting element.\n\t\t\tif node == formattingElement {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// Step 14.5. Remove node from the list of active formatting elements if\n\t\t\t// inner loop counter is greater than three and node is in the list of\n\t\t\t// active formatting elements.\n\t\t\tif ni := p.afe.index(node); j > 3 && ni > -1 {\n\t\t\t\tp.afe.remove(node)\n\t\t\t\t// If any element of the list of active formatting elements is removed,\n\t\t\t\t// we need to take care whether bookmark should be decremented or not.\n\t\t\t\t// This is because the value of bookmark may exceed the size of the\n\t\t\t\t// list by removing elements from the list.\n\t\t\t\tif ni <= bookmark {\n\t\t\t\t\tbookmark--\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\t// Step 14.6. Continue the next inner loop if node is not in the list of\n\t\t\t// active formatting elements.\n\t\t\tif p.afe.index(node) == -1 {\n\t\t\t\tp.oe.remove(node)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\t// Step 14.7.\n\t\t\tclone := node.clone()\n\t\t\tp.afe[p.afe.index(node)] = clone\n\t\t\tp.oe[p.oe.index(node)] = clone\n\t\t\tnode = clone\n\t\t\t// Step 14.8.\n\t\t\tif lastNode == furthestBlock {\n\t\t\t\tbookmark = p.afe.index(node) + 1\n\t\t\t}\n\t\t\t// Step 14.9.\n\t\t\tif lastNode.Parent != nil {\n\t\t\t\tlastNode.Parent.RemoveChild(lastNode)\n\t\t\t}\n\t\t\tnode.AppendChild(lastNode)\n\t\t\t// Step 14.10.\n\t\t\tlastNode = node\n\t\t}\n\n\t\t// Step 15. Reparent lastNode to the common ancestor,\n\t\t// or for misnested table nodes, to the foster parent.\n\t\tif lastNode.Parent != nil {\n\t\t\tlastNode.Parent.RemoveChild(lastNode)\n\t\t}\n\t\tswitch commonAncestor.DataAtom {\n\t\tcase a.Table, a.Tbody, a.Tfoot, a.Thead, a.Tr:\n\t\t\tp.fosterParent(lastNode)\n\t\tdefault:\n\t\t\tcommonAncestor.AppendChild(lastNode)\n\t\t}\n\n\t\t// Steps 16-18. Reparent nodes from the furthest block's children\n\t\t// to a clone of the formatting element.\n\t\tclone := formattingElement.clone()\n\t\treparentChildren(clone, furthestBlock)\n\t\tfurthestBlock.AppendChild(clone)\n\n\t\t// Step 19. Fix up the list of active formatting elements.\n\t\tif oldLoc := p.afe.index(formattingElement); oldLoc != -1 && oldLoc < bookmark {\n\t\t\t// Move the bookmark with the rest of the list.\n\t\t\tbookmark--\n\t\t}\n\t\tp.afe.remove(formattingElement)\n\t\tp.afe.insert(bookmark, clone)\n\n\t\t// Step 20. Fix up the stack of open elements.\n\t\tp.oe.remove(formattingElement)\n\t\tp.oe.insert(p.oe.index(furthestBlock)+1, clone)\n\t}\n}\n\n// inBodyEndTagOther performs the \"any other end tag\" algorithm for inBodyIM.\n// \"Any other end tag\" handling from 12.2.6.5 The rules for parsing tokens in foreign content\n// https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inforeign\nfunc (p *parser) inBodyEndTagOther(tagAtom a.Atom, tagName string) {\n\tfor i := len(p.oe) - 1; i >= 0; i-- {\n\t\t// Two element nodes have the same tag if they have the same Data (a\n\t\t// string-typed field). As an optimization, for common HTML tags, each\n\t\t// Data string is assigned a unique, non-zero DataAtom (a uint32-typed\n\t\t// field), since integer comparison is faster than string comparison.\n\t\t// Uncommon (custom) tags get a zero DataAtom.\n\t\t//\n\t\t// The if condition here is equivalent to (p.oe[i].Data == tagName).\n\t\tif (p.oe[i].DataAtom == tagAtom) &&\n\t\t\t((tagAtom != 0) || (p.oe[i].Data == tagName)) {\n\t\t\tp.oe = p.oe[:i]\n\t\t\tbreak\n\t\t}\n\t\tif isSpecialElement(p.oe[i]) {\n\t\t\tbreak\n\t\t}\n\t}\n}\n\n// Section 12.2.6.4.8.\nfunc textIM(p *parser) bool {\n\tswitch p.tok.Type {\n\tcase ErrorToken:\n\t\tp.oe.pop()\n\tcase TextToken:\n\t\td := p.tok.Data\n\t\tif n := p.oe.top(); n.DataAtom == a.Textarea && n.FirstChild == nil {\n\t\t\t// Ignore a newline at the start of a <textarea> block.\n\t\t\tif d != \"\" && d[0] == '\\r' {\n\t\t\t\td = d[1:]\n\t\t\t}\n\t\t\tif d != \"\" && d[0] == '\\n' {\n\t\t\t\td = d[1:]\n\t\t\t}\n\t\t}\n\t\tif d == \"\" {\n\t\t\treturn true\n\t\t}\n\t\tp.addText(d)\n\t\treturn true\n\tcase EndTagToken:\n\t\tp.oe.pop()\n\t}\n\tp.im = p.originalIM\n\tp.originalIM = nil\n\treturn p.tok.Type == EndTagToken\n}\n\n// Section 12.2.6.4.9.\nfunc inTableIM(p *parser) bool {\n\tswitch p.tok.Type {\n\tcase TextToken:\n\t\tp.tok.Data = strings.Replace(p.tok.Data, \"\\x00\", \"\", -1)\n\t\tswitch p.oe.top().DataAtom {\n\t\tcase a.Table, a.Tbody, a.Tfoot, a.Thead, a.Tr:\n\t\t\tif strings.Trim(p.tok.Data, whitespace) == \"\" {\n\t\t\t\tp.addText(p.tok.Data)\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\tcase StartTagToken:\n\t\tswitch p.tok.DataAtom {\n\t\tcase a.Caption:\n\t\t\tp.clearStackToContext(tableScope)\n\t\t\tp.afe = append(p.afe, &scopeMarker)\n\t\t\tp.addElement()\n\t\t\tp.im = inCaptionIM\n\t\t\treturn true\n\t\tcase a.Colgroup:\n\t\t\tp.clearStackToContext(tableScope)\n\t\t\tp.addElement()\n\t\t\tp.im = inColumnGroupIM\n\t\t\treturn true\n\t\tcase a.Col:\n\t\t\tp.parseImpliedToken(StartTagToken, a.Colgroup, a.Colgroup.String())\n\t\t\treturn false\n\t\tcase a.Tbody, a.Tfoot, a.Thead:\n\t\t\tp.clearStackToContext(tableScope)\n\t\t\tp.addElement()\n\t\t\tp.im = inTableBodyIM\n\t\t\treturn true\n\t\tcase a.Td, a.Th, a.Tr:\n\t\t\tp.parseImpliedToken(StartTagToken, a.Tbody, a.Tbody.String())\n\t\t\treturn false\n\t\tcase a.Table:\n\t\t\tif p.popUntil(tableScope, a.Table) {\n\t\t\t\tp.resetInsertionMode()\n\t\t\t\treturn false\n\t\t\t}\n\t\t\t// Ignore the token.\n\t\t\treturn true\n\t\tcase a.Style, a.Script, a.Template:\n\t\t\treturn inHeadIM(p)\n\t\tcase a.Input:\n\t\t\tfor _, t := range p.tok.Attr {\n\t\t\t\tif t.Key == \"type\" && strings.EqualFold(t.Val, \"hidden\") {\n\t\t\t\t\tp.addElement()\n\t\t\t\t\tp.oe.pop()\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Otherwise drop down to the default action.\n\t\tcase a.Form:\n\t\t\tif p.oe.contains(a.Template) || p.form != nil {\n\t\t\t\t// Ignore the token.\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tp.addElement()\n\t\t\tp.form = p.oe.pop()\n\t\tcase a.Select:\n\t\t\tp.reconstructActiveFormattingElements()\n\t\t\tswitch p.top().DataAtom {\n\t\t\tcase a.Table, a.Tbody, a.Tfoot, a.Thead, a.Tr:\n\t\t\t\tp.fosterParenting = true\n\t\t\t}\n\t\t\tp.addElement()\n\t\t\tp.fosterParenting = false\n\t\t\tp.framesetOK = false\n\t\t\tp.im = inSelectInTableIM\n\t\t\treturn true\n\t\t}\n\tcase EndTagToken:\n\t\tswitch p.tok.DataAtom {\n\t\tcase a.Table:\n\t\t\tif p.popUntil(tableScope, a.Table) {\n\t\t\t\tp.resetInsertionMode()\n\t\t\t\treturn true\n\t\t\t}\n\t\t\t// Ignore the token.\n\t\t\treturn true\n\t\tcase a.Body, a.Caption, a.Col, a.Colgroup, a.Html, a.Tbody, a.Td, a.Tfoot, a.Th, a.Thead, a.Tr:\n\t\t\t// Ignore the token.\n\t\t\treturn true\n\t\tcase a.Template:\n\t\t\treturn inHeadIM(p)\n\t\t}\n\tcase CommentToken:\n\t\tp.addChild(&Node{\n\t\t\tType: CommentNode,\n\t\t\tData: p.tok.Data,\n\t\t})\n\t\treturn true\n\tcase DoctypeToken:\n\t\t// Ignore the token.\n\t\treturn true\n\tcase ErrorToken:\n\t\treturn inBodyIM(p)\n\t}\n\n\tp.fosterParenting = true\n\tdefer func() { p.fosterParenting = false }()\n\n\treturn inBodyIM(p)\n}\n\n// Section 12.2.6.4.11.\nfunc inCaptionIM(p *parser) bool {\n\tswitch p.tok.Type {\n\tcase StartTagToken:\n\t\tswitch p.tok.DataAtom {\n\t\tcase a.Caption, a.Col, a.Colgroup, a.Tbody, a.Td, a.Tfoot, a.Thead, a.Tr:\n\t\t\tif !p.popUntil(tableScope, a.Caption) {\n\t\t\t\t// Ignore the token.\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tp.clearActiveFormattingElements()\n\t\t\tp.im = inTableIM\n\t\t\treturn false\n\t\tcase a.Select:\n\t\t\tp.reconstructActiveFormattingElements()\n\t\t\tp.addElement()\n\t\t\tp.framesetOK = false\n\t\t\tp.im = inSelectInTableIM\n\t\t\treturn true\n\t\t}\n\tcase EndTagToken:\n\t\tswitch p.tok.DataAtom {\n\t\tcase a.Caption:\n\t\t\tif p.popUntil(tableScope, a.Caption) {\n\t\t\t\tp.clearActiveFormattingElements()\n\t\t\t\tp.im = inTableIM\n\t\t\t}\n\t\t\treturn true\n\t\tcase a.Table:\n\t\t\tif !p.popUntil(tableScope, a.Caption) {\n\t\t\t\t// Ignore the token.\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tp.clearActiveFormattingElements()\n\t\t\tp.im = inTableIM\n\t\t\treturn false\n\t\tcase a.Body, a.Col, a.Colgroup, a.Html, a.Tbody, a.Td, a.Tfoot, a.Th, a.Thead, a.Tr:\n\t\t\t// Ignore the token.\n\t\t\treturn true\n\t\t}\n\t}\n\treturn inBodyIM(p)\n}\n\n// Section 12.2.6.4.12.\nfunc inColumnGroupIM(p *parser) bool {\n\tswitch p.tok.Type {\n\tcase TextToken:\n\t\ts := strings.TrimLeft(p.tok.Data, whitespace)\n\t\tif len(s) < len(p.tok.Data) {\n\t\t\t// Add the initial whitespace to the current node.\n\t\t\tp.addText(p.tok.Data[:len(p.tok.Data)-len(s)])\n\t\t\tif s == \"\" {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tp.tok.Data = s\n\t\t}\n\tcase CommentToken:\n\t\tp.addChild(&Node{\n\t\t\tType: CommentNode,\n\t\t\tData: p.tok.Data,\n\t\t})\n\t\treturn true\n\tcase DoctypeToken:\n\t\t// Ignore the token.\n\t\treturn true\n\tcase StartTagToken:\n\t\tswitch p.tok.DataAtom {\n\t\tcase a.Html:\n\t\t\treturn inBodyIM(p)\n\t\tcase a.Col:\n\t\t\tp.addElement()\n\t\t\tp.oe.pop()\n\t\t\tp.acknowledgeSelfClosingTag()\n\t\t\treturn true\n\t\tcase a.Template:\n\t\t\treturn inHeadIM(p)\n\t\t}\n\tcase EndTagToken:\n\t\tswitch p.tok.DataAtom {\n\t\tcase a.Colgroup:\n\t\t\tif p.oe.top().DataAtom == a.Colgroup {\n\t\t\t\tp.oe.pop()\n\t\t\t\tp.im = inTableIM\n\t\t\t}\n\t\t\treturn true\n\t\tcase a.Col:\n\t\t\t// Ignore the token.\n\t\t\treturn true\n\t\tcase a.Template:\n\t\t\treturn inHeadIM(p)\n\t\t}\n\tcase ErrorToken:\n\t\treturn inBodyIM(p)\n\t}\n\tif p.oe.top().DataAtom != a.Colgroup {\n\t\treturn true\n\t}\n\tp.oe.pop()\n\tp.im = inTableIM\n\treturn false\n}\n\n// Section 12.2.6.4.13.\nfunc inTableBodyIM(p *parser) bool {\n\tswitch p.tok.Type {\n\tcase StartTagToken:\n\t\tswitch p.tok.DataAtom {\n\t\tcase a.Tr:\n\t\t\tp.clearStackToContext(tableBodyScope)\n\t\t\tp.addElement()\n\t\t\tp.im = inRowIM\n\t\t\treturn true\n\t\tcase a.Td, a.Th:\n\t\t\tp.parseImpliedToken(StartTagToken, a.Tr, a.Tr.String())\n\t\t\treturn false\n\t\tcase a.Caption, a.Col, a.Colgroup, a.Tbody, a.Tfoot, a.Thead:\n\t\t\tif p.popUntil(tableScope, a.Tbody, a.Thead, a.Tfoot) {\n\t\t\t\tp.im = inTableIM\n\t\t\t\treturn false\n\t\t\t}\n\t\t\t// Ignore the token.\n\t\t\treturn true\n\t\t}\n\tcase EndTagToken:\n\t\tswitch p.tok.DataAtom {\n\t\tcase a.Tbody, a.Tfoot, a.Thead:\n\t\t\tif p.elementInScope(tableScope, p.tok.DataAtom) {\n\t\t\t\tp.clearStackToContext(tableBodyScope)\n\t\t\t\tp.oe.pop()\n\t\t\t\tp.im = inTableIM\n\t\t\t}\n\t\t\treturn true\n\t\tcase a.Table:\n\t\t\tif p.popUntil(tableScope, a.Tbody, a.Thead, a.Tfoot) {\n\t\t\t\tp.im = inTableIM\n\t\t\t\treturn false\n\t\t\t}\n\t\t\t// Ignore the token.\n\t\t\treturn true\n\t\tcase a.Body, a.Caption, a.Col, a.Colgroup, a.Html, a.Td, a.Th, a.Tr:\n\t\t\t// Ignore the token.\n\t\t\treturn true\n\t\t}\n\tcase CommentToken:\n\t\tp.addChild(&Node{\n\t\t\tType: CommentNode,\n\t\t\tData: p.tok.Data,\n\t\t})\n\t\treturn true\n\t}\n\n\treturn inTableIM(p)\n}\n\n// Section 13.2.6.4.14.\nfunc inRowIM(p *parser) bool {\n\tswitch p.tok.Type {\n\tcase StartTagToken:\n\t\tswitch p.tok.DataAtom {\n\t\tcase a.Td, a.Th:\n\t\t\tp.clearStackToContext(tableRowScope)\n\t\t\tp.addElement()\n\t\t\tp.afe = append(p.afe, &scopeMarker)\n\t\t\tp.im = inCellIM\n\t\t\treturn true\n\t\tcase a.Caption, a.Col, a.Colgroup, a.Tbody, a.Tfoot, a.Thead, a.Tr:\n\t\t\tif p.elementInScope(tableScope, a.Tr) {\n\t\t\t\tp.clearStackToContext(tableRowScope)\n\t\t\t\tp.oe.pop()\n\t\t\t\tp.im = inTableBodyIM\n\t\t\t\treturn false\n\t\t\t}\n\t\t\t// Ignore the token.\n\t\t\treturn true\n\t\t}\n\tcase EndTagToken:\n\t\tswitch p.tok.DataAtom {\n\t\tcase a.Tr:\n\t\t\tif p.elementInScope(tableScope, a.Tr) {\n\t\t\t\tp.clearStackToContext(tableRowScope)\n\t\t\t\tp.oe.pop()\n\t\t\t\tp.im = inTableBodyIM\n\t\t\t\treturn true\n\t\t\t}\n\t\t\t// Ignore the token.\n\t\t\treturn true\n\t\tcase a.Table:\n\t\t\tif p.elementInScope(tableScope, a.Tr) {\n\t\t\t\tp.clearStackToContext(tableRowScope)\n\t\t\t\tp.oe.pop()\n\t\t\t\tp.im = inTableBodyIM\n\t\t\t\treturn false\n\t\t\t}\n\t\t\t// Ignore the token.\n\t\t\treturn true\n\t\tcase a.Tbody, a.Tfoot, a.Thead:\n\t\t\tif p.elementInScope(tableScope, p.tok.DataAtom) && p.elementInScope(tableScope, a.Tr) {\n\t\t\t\tp.clearStackToContext(tableRowScope)\n\t\t\t\tp.oe.pop()\n\t\t\t\tp.im = inTableBodyIM\n\t\t\t\treturn false\n\t\t\t}\n\t\t\t// Ignore the token.\n\t\t\treturn true\n\t\tcase a.Body, a.Caption, a.Col, a.Colgroup, a.Html, a.Td, a.Th:\n\t\t\t// Ignore the token.\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn inTableIM(p)\n}\n\n// Section 12.2.6.4.15.\nfunc inCellIM(p *parser) bool {\n\tswitch p.tok.Type {\n\tcase StartTagToken:\n\t\tswitch p.tok.DataAtom {\n\t\tcase a.Caption, a.Col, a.Colgroup, a.Tbody, a.Td, a.Tfoot, a.Th, a.Thead, a.Tr:\n\t\t\tif p.popUntil(tableScope, a.Td, a.Th) {\n\t\t\t\t// Close the cell and reprocess.\n\t\t\t\tp.clearActiveFormattingElements()\n\t\t\t\tp.im = inRowIM\n\t\t\t\treturn false\n\t\t\t}\n\t\t\t// Ignore the token.\n\t\t\treturn true\n\t\tcase a.Select:\n\t\t\tp.reconstructActiveFormattingElements()\n\t\t\tp.addElement()\n\t\t\tp.framesetOK = false\n\t\t\tp.im = inSelectInTableIM\n\t\t\treturn true\n\t\t}\n\tcase EndTagToken:\n\t\tswitch p.tok.DataAtom {\n\t\tcase a.Td, a.Th:\n\t\t\tif !p.popUntil(tableScope, p.tok.DataAtom) {\n\t\t\t\t// Ignore the token.\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tp.clearActiveFormattingElements()\n\t\t\tp.im = inRowIM\n\t\t\treturn true\n\t\tcase a.Body, a.Caption, a.Col, a.Colgroup, a.Html:\n\t\t\t// Ignore the token.\n\t\t\treturn true\n\t\tcase a.Table, a.Tbody, a.Tfoot, a.Thead, a.Tr:\n\t\t\tif !p.elementInScope(tableScope, p.tok.DataAtom) {\n\t\t\t\t// Ignore the token.\n\t\t\t\treturn true\n\t\t\t}\n\t\t\t// Close the cell and reprocess.\n\t\t\tif p.popUntil(tableScope, a.Td, a.Th) {\n\t\t\t\tp.clearActiveFormattingElements()\n\t\t\t}\n\t\t\tp.im = inRowIM\n\t\t\treturn false\n\t\t}\n\t}\n\treturn inBodyIM(p)\n}\n\n// Section 12.2.6.4.16.\nfunc inSelectIM(p *parser) bool {\n\tswitch p.tok.Type {\n\tcase TextToken:\n\t\tp.addText(strings.Replace(p.tok.Data, \"\\x00\", \"\", -1))\n\tcase StartTagToken:\n\t\tswitch p.tok.DataAtom {\n\t\tcase a.Html:\n\t\t\treturn inBodyIM(p)\n\t\tcase a.Option:\n\t\t\tif p.top().DataAtom == a.Option {\n\t\t\t\tp.oe.pop()\n\t\t\t}\n\t\t\tp.addElement()\n\t\tcase a.Optgroup:\n\t\t\tif p.top().DataAtom == a.Option {\n\t\t\t\tp.oe.pop()\n\t\t\t}\n\t\t\tif p.top().DataAtom == a.Optgroup {\n\t\t\t\tp.oe.pop()\n\t\t\t}\n\t\t\tp.addElement()\n\t\tcase a.Select:\n\t\t\tif !p.popUntil(selectScope, a.Select) {\n\t\t\t\t// Ignore the token.\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tp.resetInsertionMode()\n\t\tcase a.Input, a.Keygen, a.Textarea:\n\t\t\tif p.elementInScope(selectScope, a.Select) {\n\t\t\t\tp.parseImpliedToken(EndTagToken, a.Select, a.Select.String())\n\t\t\t\treturn false\n\t\t\t}\n\t\t\t// In order to properly ignore <textarea>, we need to change the tokenizer mode.\n\t\t\tp.tokenizer.NextIsNotRawText()\n\t\t\t// Ignore the token.\n\t\t\treturn true\n\t\tcase a.Script, a.Template:\n\t\t\treturn inHeadIM(p)\n\t\tcase a.Iframe, a.Noembed, a.Noframes, a.Noscript, a.Plaintext, a.Style, a.Title, a.Xmp:\n\t\t\t// Don't let the tokenizer go into raw text mode when there are raw tags\n\t\t\t// to be ignored. These tags should be ignored from the tokenizer\n\t\t\t// properly.\n\t\t\tp.tokenizer.NextIsNotRawText()\n\t\t\t// Ignore the token.\n\t\t\treturn true\n\t\t}\n\tcase EndTagToken:\n\t\tswitch p.tok.DataAtom {\n\t\tcase a.Option:\n\t\t\tif p.top().DataAtom == a.Option {\n\t\t\t\tp.oe.pop()\n\t\t\t}\n\t\tcase a.Optgroup:\n\t\t\ti := len(p.oe) - 1\n\t\t\tif p.oe[i].DataAtom == a.Option {\n\t\t\t\ti--\n\t\t\t}\n\t\t\tif p.oe[i].DataAtom == a.Optgroup {\n\t\t\t\tp.oe = p.oe[:i]\n\t\t\t}\n\t\tcase a.Select:\n\t\t\tif !p.popUntil(selectScope, a.Select) {\n\t\t\t\t// Ignore the token.\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tp.resetInsertionMode()\n\t\tcase a.Template:\n\t\t\treturn inHeadIM(p)\n\t\t}\n\tcase CommentToken:\n\t\tp.addChild(&Node{\n\t\t\tType: CommentNode,\n\t\t\tData: p.tok.Data,\n\t\t})\n\tcase DoctypeToken:\n\t\t// Ignore the token.\n\t\treturn true\n\tcase ErrorToken:\n\t\treturn inBodyIM(p)\n\t}\n\n\treturn true\n}\n\n// Section 12.2.6.4.17.\nfunc inSelectInTableIM(p *parser) bool {\n\tswitch p.tok.Type {\n\tcase StartTagToken, EndTagToken:\n\t\tswitch p.tok.DataAtom {\n\t\tcase a.Caption, a.Table, a.Tbody, a.Tfoot, a.Thead, a.Tr, a.Td, a.Th:\n\t\t\tif p.tok.Type == EndTagToken && !p.elementInScope(tableScope, p.tok.DataAtom) {\n\t\t\t\t// Ignore the token.\n\t\t\t\treturn true\n\t\t\t}\n\t\t\t// This is like p.popUntil(selectScope, a.Select), but it also\n\t\t\t// matches <math select>, not just <select>. Matching the MathML\n\t\t\t// tag is arguably incorrect (conceptually), but it mimics what\n\t\t\t// Chromium does.\n\t\t\tfor i := len(p.oe) - 1; i >= 0; i-- {\n\t\t\t\tif n := p.oe[i]; n.DataAtom == a.Select {\n\t\t\t\t\tp.oe = p.oe[:i]\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tp.resetInsertionMode()\n\t\t\treturn false\n\t\t}\n\t}\n\treturn inSelectIM(p)\n}\n\n// Section 12.2.6.4.18.\nfunc inTemplateIM(p *parser) bool {\n\tswitch p.tok.Type {\n\tcase TextToken, CommentToken, DoctypeToken:\n\t\treturn inBodyIM(p)\n\tcase StartTagToken:\n\t\tswitch p.tok.DataAtom {\n\t\tcase a.Base, a.Basefont, a.Bgsound, a.Link, a.Meta, a.Noframes, a.Script, a.Style, a.Template, a.Title:\n\t\t\treturn inHeadIM(p)\n\t\tcase a.Caption, a.Colgroup, a.Tbody, a.Tfoot, a.Thead:\n\t\t\tp.templateStack.pop()\n\t\t\tp.templateStack = append(p.templateStack, inTableIM)\n\t\t\tp.im = inTableIM\n\t\t\treturn false\n\t\tcase a.Col:\n\t\t\tp.templateStack.pop()\n\t\t\tp.templateStack = append(p.templateStack, inColumnGroupIM)\n\t\t\tp.im = inColumnGroupIM\n\t\t\treturn false\n\t\tcase a.Tr:\n\t\t\tp.templateStack.pop()\n\t\t\tp.templateStack = append(p.templateStack, inTableBodyIM)\n\t\t\tp.im = inTableBodyIM\n\t\t\treturn false\n\t\tcase a.Td, a.Th:\n\t\t\tp.templateStack.pop()\n\t\t\tp.templateStack = append(p.templateStack, inRowIM)\n\t\t\tp.im = inRowIM\n\t\t\treturn false\n\t\tdefault:\n\t\t\tp.templateStack.pop()\n\t\t\tp.templateStack = append(p.templateStack, inBodyIM)\n\t\t\tp.im = inBodyIM\n\t\t\treturn false\n\t\t}\n\tcase EndTagToken:\n\t\tswitch p.tok.DataAtom {\n\t\tcase a.Template:\n\t\t\treturn inHeadIM(p)\n\t\tdefault:\n\t\t\t// Ignore the token.\n\t\t\treturn true\n\t\t}\n\tcase ErrorToken:\n\t\tif !p.oe.contains(a.Template) {\n\t\t\t// Ignore the token.\n\t\t\treturn true\n\t\t}\n\t\t// TODO: remove this divergence from the HTML5 spec.\n\t\t//\n\t\t// See https://bugs.chromium.org/p/chromium/issues/detail?id=829668\n\t\tp.generateImpliedEndTags()\n\t\tfor i := len(p.oe) - 1; i >= 0; i-- {\n\t\t\tif n := p.oe[i]; n.Namespace == \"\" && n.DataAtom == a.Template {\n\t\t\t\tp.oe = p.oe[:i]\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tp.clearActiveFormattingElements()\n\t\tp.templateStack.pop()\n\t\tp.resetInsertionMode()\n\t\treturn false\n\t}\n\treturn false\n}\n\n// Section 12.2.6.4.19.\nfunc afterBodyIM(p *parser) bool {\n\tswitch p.tok.Type {\n\tcase ErrorToken:\n\t\t// Stop parsing.\n\t\treturn true\n\tcase TextToken:\n\t\ts := strings.TrimLeft(p.tok.Data, whitespace)\n\t\tif len(s) == 0 {\n\t\t\t// It was all whitespace.\n\t\t\treturn inBodyIM(p)\n\t\t}\n\tcase StartTagToken:\n\t\tif p.tok.DataAtom == a.Html {\n\t\t\treturn inBodyIM(p)\n\t\t}\n\tcase EndTagToken:\n\t\tif p.tok.DataAtom == a.Html {\n\t\t\tif !p.fragment {\n\t\t\t\tp.im = afterAfterBodyIM\n\t\t\t}\n\t\t\treturn true\n\t\t}\n\tcase CommentToken:\n\t\t// The comment is attached to the <html> element.\n\t\tif len(p.oe) < 1 || p.oe[0].DataAtom != a.Html {\n\t\t\tpanic(\"html: bad parser state: <html> element not found, in the after-body insertion mode\")\n\t\t}\n\t\tp.oe[0].AppendChild(&Node{\n\t\t\tType: CommentNode,\n\t\t\tData: p.tok.Data,\n\t\t})\n\t\treturn true\n\t}\n\tp.im = inBodyIM\n\treturn false\n}\n\n// Section 12.2.6.4.20.\nfunc inFramesetIM(p *parser) bool {\n\tswitch p.tok.Type {\n\tcase CommentToken:\n\t\tp.addChild(&Node{\n\t\t\tType: CommentNode,\n\t\t\tData: p.tok.Data,\n\t\t})\n\tcase TextToken:\n\t\t// Ignore all text but whitespace.\n\t\ts := strings.Map(func(c rune) rune {\n\t\t\tswitch c {\n\t\t\tcase ' ', '\\t', '\\n', '\\f', '\\r':\n\t\t\t\treturn c\n\t\t\t}\n\t\t\treturn -1\n\t\t}, p.tok.Data)\n\t\tif s != \"\" {\n\t\t\tp.addText(s)\n\t\t}\n\tcase StartTagToken:\n\t\tswitch p.tok.DataAtom {\n\t\tcase a.Html:\n\t\t\treturn inBodyIM(p)\n\t\tcase a.Frameset:\n\t\t\tp.addElement()\n\t\tcase a.Frame:\n\t\t\tp.addElement()\n\t\t\tp.oe.pop()\n\t\t\tp.acknowledgeSelfClosingTag()\n\t\tcase a.Noframes:\n\t\t\treturn inHeadIM(p)\n\t\t}\n\tcase EndTagToken:\n\t\tswitch p.tok.DataAtom {\n\t\tcase a.Frameset:\n\t\t\tif p.oe.top().DataAtom != a.Html {\n\t\t\t\tp.oe.pop()\n\t\t\t\tif p.oe.top().DataAtom != a.Frameset {\n\t\t\t\t\tp.im = afterFramesetIM\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\tdefault:\n\t\t// Ignore the token.\n\t}\n\treturn true\n}\n\n// Section 12.2.6.4.21.\nfunc afterFramesetIM(p *parser) bool {\n\tswitch p.tok.Type {\n\tcase CommentToken:\n\t\tp.addChild(&Node{\n\t\t\tType: CommentNode,\n\t\t\tData: p.tok.Data,\n\t\t})\n\tcase TextToken:\n\t\t// Ignore all text but whitespace.\n\t\ts := strings.Map(func(c rune) rune {\n\t\t\tswitch c {\n\t\t\tcase ' ', '\\t', '\\n', '\\f', '\\r':\n\t\t\t\treturn c\n\t\t\t}\n\t\t\treturn -1\n\t\t}, p.tok.Data)\n\t\tif s != \"\" {\n\t\t\tp.addText(s)\n\t\t}\n\tcase StartTagToken:\n\t\tswitch p.tok.DataAtom {\n\t\tcase a.Html:\n\t\t\treturn inBodyIM(p)\n\t\tcase a.Noframes:\n\t\t\treturn inHeadIM(p)\n\t\t}\n\tcase EndTagToken:\n\t\tswitch p.tok.DataAtom {\n\t\tcase a.Html:\n\t\t\tp.im = afterAfterFramesetIM\n\t\t\treturn true\n\t\t}\n\tdefault:\n\t\t// Ignore the token.\n\t}\n\treturn true\n}\n\n// Section 12.2.6.4.22.\nfunc afterAfterBodyIM(p *parser) bool {\n\tswitch p.tok.Type {\n\tcase ErrorToken:\n\t\t// Stop parsing.\n\t\treturn true\n\tcase TextToken:\n\t\ts := strings.TrimLeft(p.tok.Data, whitespace)\n\t\tif len(s) == 0 {\n\t\t\t// It was all whitespace.\n\t\t\treturn inBodyIM(p)\n\t\t}\n\tcase StartTagToken:\n\t\tif p.tok.DataAtom == a.Html {\n\t\t\treturn inBodyIM(p)\n\t\t}\n\tcase CommentToken:\n\t\tp.doc.AppendChild(&Node{\n\t\t\tType: CommentNode,\n\t\t\tData: p.tok.Data,\n\t\t})\n\t\treturn true\n\tcase DoctypeToken:\n\t\treturn inBodyIM(p)\n\t}\n\tp.im = inBodyIM\n\treturn false\n}\n\n// Section 12.2.6.4.23.\nfunc afterAfterFramesetIM(p *parser) bool {\n\tswitch p.tok.Type {\n\tcase CommentToken:\n\t\tp.doc.AppendChild(&Node{\n\t\t\tType: CommentNode,\n\t\t\tData: p.tok.Data,\n\t\t})\n\tcase TextToken:\n\t\t// Ignore all text but whitespace.\n\t\ts := strings.Map(func(c rune) rune {\n\t\t\tswitch c {\n\t\t\tcase ' ', '\\t', '\\n', '\\f', '\\r':\n\t\t\t\treturn c\n\t\t\t}\n\t\t\treturn -1\n\t\t}, p.tok.Data)\n\t\tif s != \"\" {\n\t\t\tp.tok.Data = s\n\t\t\treturn inBodyIM(p)\n\t\t}\n\tcase StartTagToken:\n\t\tswitch p.tok.DataAtom {\n\t\tcase a.Html:\n\t\t\treturn inBodyIM(p)\n\t\tcase a.Noframes:\n\t\t\treturn inHeadIM(p)\n\t\t}\n\tcase DoctypeToken:\n\t\treturn inBodyIM(p)\n\tdefault:\n\t\t// Ignore the token.\n\t}\n\treturn true\n}\n\nfunc ignoreTheRemainingTokens(p *parser) bool {\n\treturn true\n}\n\nconst whitespaceOrNUL = whitespace + \"\\x00\"\n\n// Section 12.2.6.5\nfunc parseForeignContent(p *parser) bool {\n\tswitch p.tok.Type {\n\tcase TextToken:\n\t\tif p.framesetOK {\n\t\t\tp.framesetOK = strings.TrimLeft(p.tok.Data, whitespaceOrNUL) == \"\"\n\t\t}\n\t\tp.tok.Data = strings.Replace(p.tok.Data, \"\\x00\", \"\\ufffd\", -1)\n\t\tp.addText(p.tok.Data)\n\tcase CommentToken:\n\t\tp.addChild(&Node{\n\t\t\tType: CommentNode,\n\t\t\tData: p.tok.Data,\n\t\t})\n\tcase StartTagToken:\n\t\tif !p.fragment {\n\t\t\tb := breakout[p.tok.Data]\n\t\t\tif p.tok.DataAtom == a.Font {\n\t\t\tloop:\n\t\t\t\tfor _, attr := range p.tok.Attr {\n\t\t\t\t\tswitch attr.Key {\n\t\t\t\t\tcase \"color\", \"face\", \"size\":\n\t\t\t\t\t\tb = true\n\t\t\t\t\t\tbreak loop\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif b {\n\t\t\t\tfor i := len(p.oe) - 1; i >= 0; i-- {\n\t\t\t\t\tn := p.oe[i]\n\t\t\t\t\tif n.Namespace == \"\" || htmlIntegrationPoint(n) || mathMLTextIntegrationPoint(n) {\n\t\t\t\t\t\tp.oe = p.oe[:i+1]\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tcurrent := p.adjustedCurrentNode()\n\t\tswitch current.Namespace {\n\t\tcase \"math\":\n\t\t\tadjustAttributeNames(p.tok.Attr, mathMLAttributeAdjustments)\n\t\tcase \"svg\":\n\t\t\t// Adjust SVG tag names. The tokenizer lower-cases tag names, but\n\t\t\t// SVG wants e.g. \"foreignObject\" with a capital second \"O\".\n\t\t\tif x := svgTagNameAdjustments[p.tok.Data]; x != \"\" {\n\t\t\t\tp.tok.DataAtom = a.Lookup([]byte(x))\n\t\t\t\tp.tok.Data = x\n\t\t\t}\n\t\t\tadjustAttributeNames(p.tok.Attr, svgAttributeAdjustments)\n\t\tdefault:\n\t\t\tpanic(\"html: bad parser state: unexpected namespace\")\n\t\t}\n\t\tadjustForeignAttributes(p.tok.Attr)\n\t\tnamespace := current.Namespace\n\t\tp.addElement()\n\t\tp.top().Namespace = namespace\n\t\tif namespace != \"\" {\n\t\t\t// Don't let the tokenizer go into raw text mode in foreign content\n\t\t\t// (e.g. in an SVG <title> tag).\n\t\t\tp.tokenizer.NextIsNotRawText()\n\t\t}\n\t\tif p.hasSelfClosingToken {\n\t\t\tp.oe.pop()\n\t\t\tp.acknowledgeSelfClosingTag()\n\t\t}\n\tcase EndTagToken:\n\t\tif strings.EqualFold(p.oe[len(p.oe)-1].Data, p.tok.Data) {\n\t\t\tp.oe = p.oe[:len(p.oe)-1]\n\t\t\treturn true\n\t\t}\n\t\tfor i := len(p.oe) - 1; i >= 0; i-- {\n\t\t\tif strings.EqualFold(p.oe[i].Data, p.tok.Data) {\n\t\t\t\tp.oe = p.oe[:i]\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tif i > 0 && p.oe[i-1].Namespace == \"\" {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\treturn p.im(p)\n\tdefault:\n\t\t// Ignore the token.\n\t}\n\treturn true\n}\n\n// Section 12.2.4.2.\nfunc (p *parser) adjustedCurrentNode() *Node {\n\tif len(p.oe) == 1 && p.fragment && p.context != nil {\n\t\treturn p.context\n\t}\n\treturn p.oe.top()\n}\n\n// Section 12.2.6.\nfunc (p *parser) inForeignContent() bool {\n\tif len(p.oe) == 0 {\n\t\treturn false\n\t}\n\tn := p.adjustedCurrentNode()\n\tif n.Namespace == \"\" {\n\t\treturn false\n\t}\n\tif mathMLTextIntegrationPoint(n) {\n\t\tif p.tok.Type == StartTagToken && p.tok.DataAtom != a.Mglyph && p.tok.DataAtom != a.Malignmark {\n\t\t\treturn false\n\t\t}\n\t\tif p.tok.Type == TextToken {\n\t\t\treturn false\n\t\t}\n\t}\n\tif n.Namespace == \"math\" && n.DataAtom == a.AnnotationXml && p.tok.Type == StartTagToken && p.tok.DataAtom == a.Svg {\n\t\treturn false\n\t}\n\tif htmlIntegrationPoint(n) && (p.tok.Type == StartTagToken || p.tok.Type == TextToken) {\n\t\treturn false\n\t}\n\tif p.tok.Type == ErrorToken {\n\t\treturn false\n\t}\n\treturn true\n}\n\n// parseImpliedToken parses a token as though it had appeared in the parser's\n// input.\nfunc (p *parser) parseImpliedToken(t TokenType, dataAtom a.Atom, data string) {\n\trealToken, selfClosing := p.tok, p.hasSelfClosingToken\n\tp.tok = Token{\n\t\tType:     t,\n\t\tDataAtom: dataAtom,\n\t\tData:     data,\n\t}\n\tp.hasSelfClosingToken = false\n\tp.parseCurrentToken()\n\tp.tok, p.hasSelfClosingToken = realToken, selfClosing\n}\n\n// parseCurrentToken runs the current token through the parsing routines\n// until it is consumed.\nfunc (p *parser) parseCurrentToken() {\n\tif p.tok.Type == SelfClosingTagToken {\n\t\tp.hasSelfClosingToken = true\n\t\tp.tok.Type = StartTagToken\n\t}\n\n\tconsumed := false\n\tfor !consumed {\n\t\tif p.inForeignContent() {\n\t\t\tconsumed = parseForeignContent(p)\n\t\t} else {\n\t\t\tconsumed = p.im(p)\n\t\t}\n\t}\n\n\tif p.hasSelfClosingToken {\n\t\t// This is a parse error, but ignore it.\n\t\tp.hasSelfClosingToken = false\n\t}\n}\n\nfunc (p *parser) parse() (err error) {\n\tdefer func() {\n\t\tif panicErr := recover(); panicErr != nil {\n\t\t\terr = fmt.Errorf(\"%s\", panicErr)\n\t\t}\n\t}()\n\t// Iterate until EOF. Any other error will cause an early return.\n\tfor err != io.EOF {\n\t\t// CDATA sections are allowed only in foreign content.\n\t\tn := p.oe.top()\n\t\tp.tokenizer.AllowCDATA(n != nil && n.Namespace != \"\")\n\t\t// Read and parse the next token.\n\t\tp.tokenizer.Next()\n\t\tp.tok = p.tokenizer.Token()\n\t\tif p.tok.Type == ErrorToken {\n\t\t\terr = p.tokenizer.Err()\n\t\t\tif err != nil && err != io.EOF {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t\tp.parseCurrentToken()\n\t}\n\treturn nil\n}\n\n// Parse returns the parse tree for the HTML from the given Reader.\n//\n// It implements the HTML5 parsing algorithm\n// (https://html.spec.whatwg.org/multipage/syntax.html#tree-construction),\n// which is very complicated. The resultant tree can contain implicitly created\n// nodes that have no explicit <tag> listed in r's data, and nodes' parents can\n// differ from the nesting implied by a naive processing of start and end\n// <tag>s. Conversely, explicit <tag>s in r's data can be silently dropped,\n// with no corresponding node in the resulting tree.\n//\n// Parse will reject HTML that is nested deeper than 512 elements.\n//\n// The input is assumed to be UTF-8 encoded.\nfunc Parse(r io.Reader) (*Node, error) {\n\treturn ParseWithOptions(r)\n}\n\n// ParseFragment parses a fragment of HTML and returns the nodes that were\n// found. If the fragment is the InnerHTML for an existing element, pass that\n// element in context.\n//\n// It has the same intricacies as Parse.\nfunc ParseFragment(r io.Reader, context *Node) ([]*Node, error) {\n\treturn ParseFragmentWithOptions(r, context)\n}\n\n// ParseOption configures a parser.\ntype ParseOption func(p *parser)\n\n// ParseOptionEnableScripting configures the scripting flag.\n// https://html.spec.whatwg.org/multipage/webappapis.html#enabling-and-disabling-scripting\n//\n// By default, scripting is enabled.\nfunc ParseOptionEnableScripting(enable bool) ParseOption {\n\treturn func(p *parser) {\n\t\tp.scripting = enable\n\t}\n}\n\n// ParseWithOptions is like Parse, with options.\nfunc ParseWithOptions(r io.Reader, opts ...ParseOption) (*Node, error) {\n\tp := &parser{\n\t\ttokenizer: NewTokenizer(r),\n\t\tdoc: &Node{\n\t\t\tType: DocumentNode,\n\t\t},\n\t\tscripting:  true,\n\t\tframesetOK: true,\n\t\tim:         initialIM,\n\t}\n\n\tfor _, f := range opts {\n\t\tf(p)\n\t}\n\n\tif err := p.parse(); err != nil {\n\t\treturn nil, err\n\t}\n\treturn p.doc, nil\n}\n\n// ParseFragmentWithOptions is like ParseFragment, with options.\nfunc ParseFragmentWithOptions(r io.Reader, context *Node, opts ...ParseOption) ([]*Node, error) {\n\tcontextTag := \"\"\n\tif context != nil {\n\t\tif context.Type != ElementNode {\n\t\t\treturn nil, errors.New(\"html: ParseFragment of non-element Node\")\n\t\t}\n\t\t// The next check isn't just context.DataAtom.String() == context.Data because\n\t\t// it is valid to pass an element whose tag isn't a known atom. For example,\n\t\t// DataAtom == 0 and Data = \"tagfromthefuture\" is perfectly consistent.\n\t\tif context.DataAtom != a.Lookup([]byte(context.Data)) {\n\t\t\treturn nil, fmt.Errorf(\"html: inconsistent Node: DataAtom=%q, Data=%q\", context.DataAtom, context.Data)\n\t\t}\n\t\tcontextTag = context.DataAtom.String()\n\t}\n\tp := &parser{\n\t\tdoc: &Node{\n\t\t\tType: DocumentNode,\n\t\t},\n\t\tscripting: true,\n\t\tfragment:  true,\n\t\tcontext:   context,\n\t}\n\tif context != nil && context.Namespace != \"\" {\n\t\tp.tokenizer = NewTokenizer(r)\n\t} else {\n\t\tp.tokenizer = NewTokenizerFragment(r, contextTag)\n\t}\n\n\tfor _, f := range opts {\n\t\tf(p)\n\t}\n\n\troot := &Node{\n\t\tType:     ElementNode,\n\t\tDataAtom: a.Html,\n\t\tData:     a.Html.String(),\n\t}\n\tp.doc.AppendChild(root)\n\tp.oe = nodeStack{root}\n\tif context != nil && context.DataAtom == a.Template {\n\t\tp.templateStack = append(p.templateStack, inTemplateIM)\n\t}\n\tp.resetInsertionMode()\n\n\tfor n := context; n != nil; n = n.Parent {\n\t\tif n.Type == ElementNode && n.DataAtom == a.Form {\n\t\t\tp.form = n\n\t\t\tbreak\n\t\t}\n\t}\n\n\tif err := p.parse(); err != nil {\n\t\treturn nil, err\n\t}\n\n\tparent := p.doc\n\tif context != nil {\n\t\tparent = root\n\t}\n\n\tvar result []*Node\n\tfor c := parent.FirstChild; c != nil; {\n\t\tnext := c.NextSibling\n\t\tparent.RemoveChild(c)\n\t\tresult = append(result, c)\n\t\tc = next\n\t}\n\treturn result, nil\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/net/html/render.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage html\n\nimport (\n\t\"bufio\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"strings\"\n)\n\ntype writer interface {\n\tio.Writer\n\tio.ByteWriter\n\tWriteString(string) (int, error)\n}\n\n// Render renders the parse tree n to the given writer.\n//\n// Rendering is done on a 'best effort' basis: calling Parse on the output of\n// Render will always result in something similar to the original tree, but it\n// is not necessarily an exact clone unless the original tree was 'well-formed'.\n// 'Well-formed' is not easily specified; the HTML5 specification is\n// complicated.\n//\n// Calling Parse on arbitrary input typically results in a 'well-formed' parse\n// tree. However, it is possible for Parse to yield a 'badly-formed' parse tree.\n// For example, in a 'well-formed' parse tree, no <a> element is a child of\n// another <a> element: parsing \"<a><a>\" results in two sibling elements.\n// Similarly, in a 'well-formed' parse tree, no <a> element is a child of a\n// <table> element: parsing \"<p><table><a>\" results in a <p> with two sibling\n// children; the <a> is reparented to the <table>'s parent. However, calling\n// Parse on \"<a><table><a>\" does not return an error, but the result has an <a>\n// element with an <a> child, and is therefore not 'well-formed'.\n//\n// Programmatically constructed trees are typically also 'well-formed', but it\n// is possible to construct a tree that looks innocuous but, when rendered and\n// re-parsed, results in a different tree. A simple example is that a solitary\n// text node would become a tree containing <html>, <head> and <body> elements.\n// Another example is that the programmatic equivalent of \"a<head>b</head>c\"\n// becomes \"<html><head><head/><body>abc</body></html>\".\nfunc Render(w io.Writer, n *Node) error {\n\tif x, ok := w.(writer); ok {\n\t\treturn render(x, n)\n\t}\n\tbuf := bufio.NewWriter(w)\n\tif err := render(buf, n); err != nil {\n\t\treturn err\n\t}\n\treturn buf.Flush()\n}\n\n// plaintextAbort is returned from render1 when a <plaintext> element\n// has been rendered. No more end tags should be rendered after that.\nvar plaintextAbort = errors.New(\"html: internal error (plaintext abort)\")\n\nfunc render(w writer, n *Node) error {\n\terr := render1(w, n)\n\tif err == plaintextAbort {\n\t\terr = nil\n\t}\n\treturn err\n}\n\nfunc render1(w writer, n *Node) error {\n\t// Render non-element nodes; these are the easy cases.\n\tswitch n.Type {\n\tcase ErrorNode:\n\t\treturn errors.New(\"html: cannot render an ErrorNode node\")\n\tcase TextNode:\n\t\treturn escape(w, n.Data)\n\tcase DocumentNode:\n\t\tfor c := n.FirstChild; c != nil; c = c.NextSibling {\n\t\t\tif err := render1(w, c); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t\treturn nil\n\tcase ElementNode:\n\t\t// No-op.\n\tcase CommentNode:\n\t\tif _, err := w.WriteString(\"<!--\"); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif err := escapeComment(w, n.Data); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif _, err := w.WriteString(\"-->\"); err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\tcase DoctypeNode:\n\t\tif _, err := w.WriteString(\"<!DOCTYPE \"); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif err := escape(w, n.Data); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif n.Attr != nil {\n\t\t\tvar p, s string\n\t\t\tfor _, a := range n.Attr {\n\t\t\t\tswitch a.Key {\n\t\t\t\tcase \"public\":\n\t\t\t\t\tp = a.Val\n\t\t\t\tcase \"system\":\n\t\t\t\t\ts = a.Val\n\t\t\t\t}\n\t\t\t}\n\t\t\tif p != \"\" {\n\t\t\t\tif _, err := w.WriteString(\" PUBLIC \"); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tif err := writeQuoted(w, p); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tif s != \"\" {\n\t\t\t\t\tif err := w.WriteByte(' '); err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t\tif err := writeQuoted(w, s); err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if s != \"\" {\n\t\t\t\tif _, err := w.WriteString(\" SYSTEM \"); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tif err := writeQuoted(w, s); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn w.WriteByte('>')\n\tcase RawNode:\n\t\t_, err := w.WriteString(n.Data)\n\t\treturn err\n\tdefault:\n\t\treturn errors.New(\"html: unknown node type\")\n\t}\n\n\t// Render the <xxx> opening tag.\n\tif err := w.WriteByte('<'); err != nil {\n\t\treturn err\n\t}\n\tif _, err := w.WriteString(n.Data); err != nil {\n\t\treturn err\n\t}\n\tfor _, a := range n.Attr {\n\t\tif err := w.WriteByte(' '); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif a.Namespace != \"\" {\n\t\t\tif _, err := w.WriteString(a.Namespace); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif err := w.WriteByte(':'); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t\tif _, err := w.WriteString(a.Key); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif _, err := w.WriteString(`=\"`); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif err := escape(w, a.Val); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif err := w.WriteByte('\"'); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\tif voidElements[n.Data] {\n\t\tif n.FirstChild != nil {\n\t\t\treturn fmt.Errorf(\"html: void element <%s> has child nodes\", n.Data)\n\t\t}\n\t\t_, err := w.WriteString(\"/>\")\n\t\treturn err\n\t}\n\tif err := w.WriteByte('>'); err != nil {\n\t\treturn err\n\t}\n\n\t// Add initial newline where there is danger of a newline being ignored.\n\tif c := n.FirstChild; c != nil && c.Type == TextNode && strings.HasPrefix(c.Data, \"\\n\") {\n\t\tswitch n.Data {\n\t\tcase \"pre\", \"listing\", \"textarea\":\n\t\t\tif err := w.WriteByte('\\n'); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t}\n\n\t// Render any child nodes\n\tif childTextNodesAreLiteral(n) {\n\t\tfor c := n.FirstChild; c != nil; c = c.NextSibling {\n\t\t\tif c.Type == TextNode {\n\t\t\t\tif _, err := w.WriteString(c.Data); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif err := render1(w, c); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif n.Data == \"plaintext\" {\n\t\t\t// Don't render anything else. <plaintext> must be the\n\t\t\t// last element in the file, with no closing tag.\n\t\t\treturn plaintextAbort\n\t\t}\n\t} else {\n\t\tfor c := n.FirstChild; c != nil; c = c.NextSibling {\n\t\t\tif err := render1(w, c); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t}\n\n\t// Render the </xxx> closing tag.\n\tif _, err := w.WriteString(\"</\"); err != nil {\n\t\treturn err\n\t}\n\tif _, err := w.WriteString(n.Data); err != nil {\n\t\treturn err\n\t}\n\treturn w.WriteByte('>')\n}\n\nfunc childTextNodesAreLiteral(n *Node) bool {\n\t// Per WHATWG HTML 13.3, if the parent of the current node is a style,\n\t// script, xmp, iframe, noembed, noframes, or plaintext element, and the\n\t// current node is a text node, append the value of the node's data\n\t// literally. The specification is not explicit about it, but we only\n\t// enforce this if we are in the HTML namespace (i.e. when the namespace is\n\t// \"\").\n\t// NOTE: we also always include noscript elements, although the\n\t// specification states that they should only be rendered as such if\n\t// scripting is enabled for the node (which is not something we track).\n\tif n.Namespace != \"\" {\n\t\treturn false\n\t}\n\tswitch n.Data {\n\tcase \"iframe\", \"noembed\", \"noframes\", \"noscript\", \"plaintext\", \"script\", \"style\", \"xmp\":\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\n// writeQuoted writes s to w surrounded by quotes. Normally it will use double\n// quotes, but if s contains a double quote, it will use single quotes.\n// It is used for writing the identifiers in a doctype declaration.\n// In valid HTML, they can't contain both types of quotes.\nfunc writeQuoted(w writer, s string) error {\n\tvar q byte = '\"'\n\tif strings.Contains(s, `\"`) {\n\t\tq = '\\''\n\t}\n\tif err := w.WriteByte(q); err != nil {\n\t\treturn err\n\t}\n\tif _, err := w.WriteString(s); err != nil {\n\t\treturn err\n\t}\n\tif err := w.WriteByte(q); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// Section 12.1.2, \"Elements\", gives this list of void elements. Void elements\n// are those that can't have any contents.\nvar voidElements = map[string]bool{\n\t\"area\":   true,\n\t\"base\":   true,\n\t\"br\":     true,\n\t\"col\":    true,\n\t\"embed\":  true,\n\t\"hr\":     true,\n\t\"img\":    true,\n\t\"input\":  true,\n\t\"keygen\": true, // \"keygen\" has been removed from the spec, but are kept here for backwards compatibility.\n\t\"link\":   true,\n\t\"meta\":   true,\n\t\"param\":  true,\n\t\"source\": true,\n\t\"track\":  true,\n\t\"wbr\":    true,\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/net/html/token.go",
    "content": "// Copyright 2010 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage html\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"io\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"golang.org/x/net/html/atom\"\n)\n\n// A TokenType is the type of a Token.\ntype TokenType uint32\n\nconst (\n\t// ErrorToken means that an error occurred during tokenization.\n\tErrorToken TokenType = iota\n\t// TextToken means a text node.\n\tTextToken\n\t// A StartTagToken looks like <a>.\n\tStartTagToken\n\t// An EndTagToken looks like </a>.\n\tEndTagToken\n\t// A SelfClosingTagToken tag looks like <br/>.\n\tSelfClosingTagToken\n\t// A CommentToken looks like <!--x-->.\n\tCommentToken\n\t// A DoctypeToken looks like <!DOCTYPE x>\n\tDoctypeToken\n)\n\n// ErrBufferExceeded means that the buffering limit was exceeded.\nvar ErrBufferExceeded = errors.New(\"max buffer exceeded\")\n\n// String returns a string representation of the TokenType.\nfunc (t TokenType) String() string {\n\tswitch t {\n\tcase ErrorToken:\n\t\treturn \"Error\"\n\tcase TextToken:\n\t\treturn \"Text\"\n\tcase StartTagToken:\n\t\treturn \"StartTag\"\n\tcase EndTagToken:\n\t\treturn \"EndTag\"\n\tcase SelfClosingTagToken:\n\t\treturn \"SelfClosingTag\"\n\tcase CommentToken:\n\t\treturn \"Comment\"\n\tcase DoctypeToken:\n\t\treturn \"Doctype\"\n\t}\n\treturn \"Invalid(\" + strconv.Itoa(int(t)) + \")\"\n}\n\n// An Attribute is an attribute namespace-key-value triple. Namespace is\n// non-empty for foreign attributes like xlink, Key is alphabetic (and hence\n// does not contain escapable characters like '&', '<' or '>'), and Val is\n// unescaped (it looks like \"a<b\" rather than \"a&lt;b\").\n//\n// Namespace is only used by the parser, not the tokenizer.\ntype Attribute struct {\n\tNamespace, Key, Val string\n}\n\n// A Token consists of a TokenType and some Data (tag name for start and end\n// tags, content for text, comments and doctypes). A tag Token may also contain\n// a slice of Attributes. Data is unescaped for all Tokens (it looks like \"a<b\"\n// rather than \"a&lt;b\"). For tag Tokens, DataAtom is the atom for Data, or\n// zero if Data is not a known tag name.\ntype Token struct {\n\tType     TokenType\n\tDataAtom atom.Atom\n\tData     string\n\tAttr     []Attribute\n}\n\n// tagString returns a string representation of a tag Token's Data and Attr.\nfunc (t Token) tagString() string {\n\tif len(t.Attr) == 0 {\n\t\treturn t.Data\n\t}\n\tbuf := bytes.NewBufferString(t.Data)\n\tfor _, a := range t.Attr {\n\t\tbuf.WriteByte(' ')\n\t\tbuf.WriteString(a.Key)\n\t\tbuf.WriteString(`=\"`)\n\t\tescape(buf, a.Val)\n\t\tbuf.WriteByte('\"')\n\t}\n\treturn buf.String()\n}\n\n// String returns a string representation of the Token.\nfunc (t Token) String() string {\n\tswitch t.Type {\n\tcase ErrorToken:\n\t\treturn \"\"\n\tcase TextToken:\n\t\treturn EscapeString(t.Data)\n\tcase StartTagToken:\n\t\treturn \"<\" + t.tagString() + \">\"\n\tcase EndTagToken:\n\t\treturn \"</\" + t.tagString() + \">\"\n\tcase SelfClosingTagToken:\n\t\treturn \"<\" + t.tagString() + \"/>\"\n\tcase CommentToken:\n\t\treturn \"<!--\" + escapeCommentString(t.Data) + \"-->\"\n\tcase DoctypeToken:\n\t\treturn \"<!DOCTYPE \" + EscapeString(t.Data) + \">\"\n\t}\n\treturn \"Invalid(\" + strconv.Itoa(int(t.Type)) + \")\"\n}\n\n// span is a range of bytes in a Tokenizer's buffer. The start is inclusive,\n// the end is exclusive.\ntype span struct {\n\tstart, end int\n}\n\n// A Tokenizer returns a stream of HTML Tokens.\ntype Tokenizer struct {\n\t// r is the source of the HTML text.\n\tr io.Reader\n\t// tt is the TokenType of the current token.\n\ttt TokenType\n\t// err is the first error encountered during tokenization. It is possible\n\t// for tt != Error && err != nil to hold: this means that Next returned a\n\t// valid token but the subsequent Next call will return an error token.\n\t// For example, if the HTML text input was just \"plain\", then the first\n\t// Next call would set z.err to io.EOF but return a TextToken, and all\n\t// subsequent Next calls would return an ErrorToken.\n\t// err is never reset. Once it becomes non-nil, it stays non-nil.\n\terr error\n\t// readErr is the error returned by the io.Reader r. It is separate from\n\t// err because it is valid for an io.Reader to return (n int, err1 error)\n\t// such that n > 0 && err1 != nil, and callers should always process the\n\t// n > 0 bytes before considering the error err1.\n\treadErr error\n\t// buf[raw.start:raw.end] holds the raw bytes of the current token.\n\t// buf[raw.end:] is buffered input that will yield future tokens.\n\traw span\n\tbuf []byte\n\t// maxBuf limits the data buffered in buf. A value of 0 means unlimited.\n\tmaxBuf int\n\t// buf[data.start:data.end] holds the raw bytes of the current token's data:\n\t// a text token's text, a tag token's tag name, etc.\n\tdata span\n\t// pendingAttr is the attribute key and value currently being tokenized.\n\t// When complete, pendingAttr is pushed onto attr. nAttrReturned is\n\t// incremented on each call to TagAttr.\n\tpendingAttr   [2]span\n\tattr          [][2]span\n\tnAttrReturned int\n\t// rawTag is the \"script\" in \"</script>\" that closes the next token. If\n\t// non-empty, the subsequent call to Next will return a raw or RCDATA text\n\t// token: one that treats \"<p>\" as text instead of an element.\n\t// rawTag's contents are lower-cased.\n\trawTag string\n\t// textIsRaw is whether the current text token's data is not escaped.\n\ttextIsRaw bool\n\t// convertNUL is whether NUL bytes in the current token's data should\n\t// be converted into \\ufffd replacement characters.\n\tconvertNUL bool\n\t// allowCDATA is whether CDATA sections are allowed in the current context.\n\tallowCDATA bool\n}\n\n// AllowCDATA sets whether or not the tokenizer recognizes <![CDATA[foo]]> as\n// the text \"foo\". The default value is false, which means to recognize it as\n// a bogus comment \"<!-- [CDATA[foo]] -->\" instead.\n//\n// Strictly speaking, an HTML5 compliant tokenizer should allow CDATA if and\n// only if tokenizing foreign content, such as MathML and SVG. However,\n// tracking foreign-contentness is difficult to do purely in the tokenizer,\n// as opposed to the parser, due to HTML integration points: an <svg> element\n// can contain a <foreignObject> that is foreign-to-SVG but not foreign-to-\n// HTML. For strict compliance with the HTML5 tokenization algorithm, it is the\n// responsibility of the user of a tokenizer to call AllowCDATA as appropriate.\n// In practice, if using the tokenizer without caring whether MathML or SVG\n// CDATA is text or comments, such as tokenizing HTML to find all the anchor\n// text, it is acceptable to ignore this responsibility.\nfunc (z *Tokenizer) AllowCDATA(allowCDATA bool) {\n\tz.allowCDATA = allowCDATA\n}\n\n// NextIsNotRawText instructs the tokenizer that the next token should not be\n// considered as 'raw text'. Some elements, such as script and title elements,\n// normally require the next token after the opening tag to be 'raw text' that\n// has no child elements. For example, tokenizing \"<title>a<b>c</b>d</title>\"\n// yields a start tag token for \"<title>\", a text token for \"a<b>c</b>d\", and\n// an end tag token for \"</title>\". There are no distinct start tag or end tag\n// tokens for the \"<b>\" and \"</b>\".\n//\n// This tokenizer implementation will generally look for raw text at the right\n// times. Strictly speaking, an HTML5 compliant tokenizer should not look for\n// raw text if in foreign content: <title> generally needs raw text, but a\n// <title> inside an <svg> does not. Another example is that a <textarea>\n// generally needs raw text, but a <textarea> is not allowed as an immediate\n// child of a <select>; in normal parsing, a <textarea> implies </select>, but\n// one cannot close the implicit element when parsing a <select>'s InnerHTML.\n// Similarly to AllowCDATA, tracking the correct moment to override raw-text-\n// ness is difficult to do purely in the tokenizer, as opposed to the parser.\n// For strict compliance with the HTML5 tokenization algorithm, it is the\n// responsibility of the user of a tokenizer to call NextIsNotRawText as\n// appropriate. In practice, like AllowCDATA, it is acceptable to ignore this\n// responsibility for basic usage.\n//\n// Note that this 'raw text' concept is different from the one offered by the\n// Tokenizer.Raw method.\nfunc (z *Tokenizer) NextIsNotRawText() {\n\tz.rawTag = \"\"\n}\n\n// Err returns the error associated with the most recent ErrorToken token.\n// This is typically io.EOF, meaning the end of tokenization.\nfunc (z *Tokenizer) Err() error {\n\tif z.tt != ErrorToken {\n\t\treturn nil\n\t}\n\treturn z.err\n}\n\n// readByte returns the next byte from the input stream, doing a buffered read\n// from z.r into z.buf if necessary. z.buf[z.raw.start:z.raw.end] remains a contiguous byte\n// slice that holds all the bytes read so far for the current token.\n// It sets z.err if the underlying reader returns an error.\n// Pre-condition: z.err == nil.\nfunc (z *Tokenizer) readByte() byte {\n\tif z.raw.end >= len(z.buf) {\n\t\t// Our buffer is exhausted and we have to read from z.r. Check if the\n\t\t// previous read resulted in an error.\n\t\tif z.readErr != nil {\n\t\t\tz.err = z.readErr\n\t\t\treturn 0\n\t\t}\n\t\t// We copy z.buf[z.raw.start:z.raw.end] to the beginning of z.buf. If the length\n\t\t// z.raw.end - z.raw.start is more than half the capacity of z.buf, then we\n\t\t// allocate a new buffer before the copy.\n\t\tc := cap(z.buf)\n\t\td := z.raw.end - z.raw.start\n\t\tvar buf1 []byte\n\t\tif 2*d > c {\n\t\t\tbuf1 = make([]byte, d, 2*c)\n\t\t} else {\n\t\t\tbuf1 = z.buf[:d]\n\t\t}\n\t\tcopy(buf1, z.buf[z.raw.start:z.raw.end])\n\t\tif x := z.raw.start; x != 0 {\n\t\t\t// Adjust the data/attr spans to refer to the same contents after the copy.\n\t\t\tz.data.start -= x\n\t\t\tz.data.end -= x\n\t\t\tz.pendingAttr[0].start -= x\n\t\t\tz.pendingAttr[0].end -= x\n\t\t\tz.pendingAttr[1].start -= x\n\t\t\tz.pendingAttr[1].end -= x\n\t\t\tfor i := range z.attr {\n\t\t\t\tz.attr[i][0].start -= x\n\t\t\t\tz.attr[i][0].end -= x\n\t\t\t\tz.attr[i][1].start -= x\n\t\t\t\tz.attr[i][1].end -= x\n\t\t\t}\n\t\t}\n\t\tz.raw.start, z.raw.end, z.buf = 0, d, buf1[:d]\n\t\t// Now that we have copied the live bytes to the start of the buffer,\n\t\t// we read from z.r into the remainder.\n\t\tvar n int\n\t\tn, z.readErr = readAtLeastOneByte(z.r, buf1[d:cap(buf1)])\n\t\tif n == 0 {\n\t\t\tz.err = z.readErr\n\t\t\treturn 0\n\t\t}\n\t\tz.buf = buf1[:d+n]\n\t}\n\tx := z.buf[z.raw.end]\n\tz.raw.end++\n\tif z.maxBuf > 0 && z.raw.end-z.raw.start >= z.maxBuf {\n\t\tz.err = ErrBufferExceeded\n\t\treturn 0\n\t}\n\treturn x\n}\n\n// Buffered returns a slice containing data buffered but not yet tokenized.\nfunc (z *Tokenizer) Buffered() []byte {\n\treturn z.buf[z.raw.end:]\n}\n\n// readAtLeastOneByte wraps an io.Reader so that reading cannot return (0, nil).\n// It returns io.ErrNoProgress if the underlying r.Read method returns (0, nil)\n// too many times in succession.\nfunc readAtLeastOneByte(r io.Reader, b []byte) (int, error) {\n\tfor i := 0; i < 100; i++ {\n\t\tif n, err := r.Read(b); n != 0 || err != nil {\n\t\t\treturn n, err\n\t\t}\n\t}\n\treturn 0, io.ErrNoProgress\n}\n\n// skipWhiteSpace skips past any white space.\nfunc (z *Tokenizer) skipWhiteSpace() {\n\tif z.err != nil {\n\t\treturn\n\t}\n\tfor {\n\t\tc := z.readByte()\n\t\tif z.err != nil {\n\t\t\treturn\n\t\t}\n\t\tswitch c {\n\t\tcase ' ', '\\n', '\\r', '\\t', '\\f':\n\t\t\t// No-op.\n\t\tdefault:\n\t\t\tz.raw.end--\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// readRawOrRCDATA reads until the next \"</foo>\", where \"foo\" is z.rawTag and\n// is typically something like \"script\" or \"textarea\".\nfunc (z *Tokenizer) readRawOrRCDATA() {\n\tif z.rawTag == \"script\" {\n\t\tz.readScript()\n\t\tz.textIsRaw = true\n\t\tz.rawTag = \"\"\n\t\treturn\n\t}\nloop:\n\tfor {\n\t\tc := z.readByte()\n\t\tif z.err != nil {\n\t\t\tbreak loop\n\t\t}\n\t\tif c != '<' {\n\t\t\tcontinue loop\n\t\t}\n\t\tc = z.readByte()\n\t\tif z.err != nil {\n\t\t\tbreak loop\n\t\t}\n\t\tif c != '/' {\n\t\t\tz.raw.end--\n\t\t\tcontinue loop\n\t\t}\n\t\tif z.readRawEndTag() || z.err != nil {\n\t\t\tbreak loop\n\t\t}\n\t}\n\tz.data.end = z.raw.end\n\t// A textarea's or title's RCDATA can contain escaped entities.\n\tz.textIsRaw = z.rawTag != \"textarea\" && z.rawTag != \"title\"\n\tz.rawTag = \"\"\n}\n\n// readRawEndTag attempts to read a tag like \"</foo>\", where \"foo\" is z.rawTag.\n// If it succeeds, it backs up the input position to reconsume the tag and\n// returns true. Otherwise it returns false. The opening \"</\" has already been\n// consumed.\nfunc (z *Tokenizer) readRawEndTag() bool {\n\tfor i := 0; i < len(z.rawTag); i++ {\n\t\tc := z.readByte()\n\t\tif z.err != nil {\n\t\t\treturn false\n\t\t}\n\t\tif c != z.rawTag[i] && c != z.rawTag[i]-('a'-'A') {\n\t\t\tz.raw.end--\n\t\t\treturn false\n\t\t}\n\t}\n\tc := z.readByte()\n\tif z.err != nil {\n\t\treturn false\n\t}\n\tswitch c {\n\tcase ' ', '\\n', '\\r', '\\t', '\\f', '/', '>':\n\t\t// The 3 is 2 for the leading \"</\" plus 1 for the trailing character c.\n\t\tz.raw.end -= 3 + len(z.rawTag)\n\t\treturn true\n\t}\n\tz.raw.end--\n\treturn false\n}\n\n// readScript reads until the next </script> tag, following the byzantine\n// rules for escaping/hiding the closing tag.\nfunc (z *Tokenizer) readScript() {\n\tdefer func() {\n\t\tz.data.end = z.raw.end\n\t}()\n\tvar c byte\n\nscriptData:\n\tc = z.readByte()\n\tif z.err != nil {\n\t\treturn\n\t}\n\tif c == '<' {\n\t\tgoto scriptDataLessThanSign\n\t}\n\tgoto scriptData\n\nscriptDataLessThanSign:\n\tc = z.readByte()\n\tif z.err != nil {\n\t\treturn\n\t}\n\tswitch c {\n\tcase '/':\n\t\tgoto scriptDataEndTagOpen\n\tcase '!':\n\t\tgoto scriptDataEscapeStart\n\t}\n\tz.raw.end--\n\tgoto scriptData\n\nscriptDataEndTagOpen:\n\tif z.readRawEndTag() || z.err != nil {\n\t\treturn\n\t}\n\tgoto scriptData\n\nscriptDataEscapeStart:\n\tc = z.readByte()\n\tif z.err != nil {\n\t\treturn\n\t}\n\tif c == '-' {\n\t\tgoto scriptDataEscapeStartDash\n\t}\n\tz.raw.end--\n\tgoto scriptData\n\nscriptDataEscapeStartDash:\n\tc = z.readByte()\n\tif z.err != nil {\n\t\treturn\n\t}\n\tif c == '-' {\n\t\tgoto scriptDataEscapedDashDash\n\t}\n\tz.raw.end--\n\tgoto scriptData\n\nscriptDataEscaped:\n\tc = z.readByte()\n\tif z.err != nil {\n\t\treturn\n\t}\n\tswitch c {\n\tcase '-':\n\t\tgoto scriptDataEscapedDash\n\tcase '<':\n\t\tgoto scriptDataEscapedLessThanSign\n\t}\n\tgoto scriptDataEscaped\n\nscriptDataEscapedDash:\n\tc = z.readByte()\n\tif z.err != nil {\n\t\treturn\n\t}\n\tswitch c {\n\tcase '-':\n\t\tgoto scriptDataEscapedDashDash\n\tcase '<':\n\t\tgoto scriptDataEscapedLessThanSign\n\t}\n\tgoto scriptDataEscaped\n\nscriptDataEscapedDashDash:\n\tc = z.readByte()\n\tif z.err != nil {\n\t\treturn\n\t}\n\tswitch c {\n\tcase '-':\n\t\tgoto scriptDataEscapedDashDash\n\tcase '<':\n\t\tgoto scriptDataEscapedLessThanSign\n\tcase '>':\n\t\tgoto scriptData\n\t}\n\tgoto scriptDataEscaped\n\nscriptDataEscapedLessThanSign:\n\tc = z.readByte()\n\tif z.err != nil {\n\t\treturn\n\t}\n\tif c == '/' {\n\t\tgoto scriptDataEscapedEndTagOpen\n\t}\n\tif 'a' <= c && c <= 'z' || 'A' <= c && c <= 'Z' {\n\t\tgoto scriptDataDoubleEscapeStart\n\t}\n\tz.raw.end--\n\tgoto scriptData\n\nscriptDataEscapedEndTagOpen:\n\tif z.readRawEndTag() || z.err != nil {\n\t\treturn\n\t}\n\tgoto scriptDataEscaped\n\nscriptDataDoubleEscapeStart:\n\tz.raw.end--\n\tfor i := 0; i < len(\"script\"); i++ {\n\t\tc = z.readByte()\n\t\tif z.err != nil {\n\t\t\treturn\n\t\t}\n\t\tif c != \"script\"[i] && c != \"SCRIPT\"[i] {\n\t\t\tz.raw.end--\n\t\t\tgoto scriptDataEscaped\n\t\t}\n\t}\n\tc = z.readByte()\n\tif z.err != nil {\n\t\treturn\n\t}\n\tswitch c {\n\tcase ' ', '\\n', '\\r', '\\t', '\\f', '/', '>':\n\t\tgoto scriptDataDoubleEscaped\n\t}\n\tz.raw.end--\n\tgoto scriptDataEscaped\n\nscriptDataDoubleEscaped:\n\tc = z.readByte()\n\tif z.err != nil {\n\t\treturn\n\t}\n\tswitch c {\n\tcase '-':\n\t\tgoto scriptDataDoubleEscapedDash\n\tcase '<':\n\t\tgoto scriptDataDoubleEscapedLessThanSign\n\t}\n\tgoto scriptDataDoubleEscaped\n\nscriptDataDoubleEscapedDash:\n\tc = z.readByte()\n\tif z.err != nil {\n\t\treturn\n\t}\n\tswitch c {\n\tcase '-':\n\t\tgoto scriptDataDoubleEscapedDashDash\n\tcase '<':\n\t\tgoto scriptDataDoubleEscapedLessThanSign\n\t}\n\tgoto scriptDataDoubleEscaped\n\nscriptDataDoubleEscapedDashDash:\n\tc = z.readByte()\n\tif z.err != nil {\n\t\treturn\n\t}\n\tswitch c {\n\tcase '-':\n\t\tgoto scriptDataDoubleEscapedDashDash\n\tcase '<':\n\t\tgoto scriptDataDoubleEscapedLessThanSign\n\tcase '>':\n\t\tgoto scriptData\n\t}\n\tgoto scriptDataDoubleEscaped\n\nscriptDataDoubleEscapedLessThanSign:\n\tc = z.readByte()\n\tif z.err != nil {\n\t\treturn\n\t}\n\tif c == '/' {\n\t\tgoto scriptDataDoubleEscapeEnd\n\t}\n\tz.raw.end--\n\tgoto scriptDataDoubleEscaped\n\nscriptDataDoubleEscapeEnd:\n\tif z.readRawEndTag() {\n\t\tz.raw.end += len(\"</script>\")\n\t\tgoto scriptDataEscaped\n\t}\n\tif z.err != nil {\n\t\treturn\n\t}\n\tgoto scriptDataDoubleEscaped\n}\n\n// readComment reads the next comment token starting with \"<!--\". The opening\n// \"<!--\" has already been consumed.\nfunc (z *Tokenizer) readComment() {\n\t// When modifying this function, consider manually increasing the\n\t// maxSuffixLen constant in func TestComments, from 6 to e.g. 9 or more.\n\t// That increase should only be temporary, not committed, as it\n\t// exponentially affects the test running time.\n\n\tz.data.start = z.raw.end\n\tdefer func() {\n\t\tif z.data.end < z.data.start {\n\t\t\t// It's a comment with no data, like <!-->.\n\t\t\tz.data.end = z.data.start\n\t\t}\n\t}()\n\n\tvar dashCount int\n\tbeginning := true\n\tfor {\n\t\tc := z.readByte()\n\t\tif z.err != nil {\n\t\t\tz.data.end = z.calculateAbruptCommentDataEnd()\n\t\t\treturn\n\t\t}\n\t\tswitch c {\n\t\tcase '-':\n\t\t\tdashCount++\n\t\t\tcontinue\n\t\tcase '>':\n\t\t\tif dashCount >= 2 || beginning {\n\t\t\t\tz.data.end = z.raw.end - len(\"-->\")\n\t\t\t\treturn\n\t\t\t}\n\t\tcase '!':\n\t\t\tif dashCount >= 2 {\n\t\t\t\tc = z.readByte()\n\t\t\t\tif z.err != nil {\n\t\t\t\t\tz.data.end = z.calculateAbruptCommentDataEnd()\n\t\t\t\t\treturn\n\t\t\t\t} else if c == '>' {\n\t\t\t\t\tz.data.end = z.raw.end - len(\"--!>\")\n\t\t\t\t\treturn\n\t\t\t\t} else if c == '-' {\n\t\t\t\t\tdashCount = 1\n\t\t\t\t\tbeginning = false\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdashCount = 0\n\t\tbeginning = false\n\t}\n}\n\nfunc (z *Tokenizer) calculateAbruptCommentDataEnd() int {\n\traw := z.Raw()\n\tconst prefixLen = len(\"<!--\")\n\tif len(raw) >= prefixLen {\n\t\traw = raw[prefixLen:]\n\t\tif hasSuffix(raw, \"--!\") {\n\t\t\treturn z.raw.end - 3\n\t\t} else if hasSuffix(raw, \"--\") {\n\t\t\treturn z.raw.end - 2\n\t\t} else if hasSuffix(raw, \"-\") {\n\t\t\treturn z.raw.end - 1\n\t\t}\n\t}\n\treturn z.raw.end\n}\n\nfunc hasSuffix(b []byte, suffix string) bool {\n\tif len(b) < len(suffix) {\n\t\treturn false\n\t}\n\tb = b[len(b)-len(suffix):]\n\tfor i := range b {\n\t\tif b[i] != suffix[i] {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// readUntilCloseAngle reads until the next \">\".\nfunc (z *Tokenizer) readUntilCloseAngle() {\n\tz.data.start = z.raw.end\n\tfor {\n\t\tc := z.readByte()\n\t\tif z.err != nil {\n\t\t\tz.data.end = z.raw.end\n\t\t\treturn\n\t\t}\n\t\tif c == '>' {\n\t\t\tz.data.end = z.raw.end - len(\">\")\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// readMarkupDeclaration reads the next token starting with \"<!\". It might be\n// a \"<!--comment-->\", a \"<!DOCTYPE foo>\", a \"<![CDATA[section]]>\" or\n// \"<!a bogus comment\". The opening \"<!\" has already been consumed.\nfunc (z *Tokenizer) readMarkupDeclaration() TokenType {\n\tz.data.start = z.raw.end\n\tvar c [2]byte\n\tfor i := 0; i < 2; i++ {\n\t\tc[i] = z.readByte()\n\t\tif z.err != nil {\n\t\t\tz.data.end = z.raw.end\n\t\t\treturn CommentToken\n\t\t}\n\t}\n\tif c[0] == '-' && c[1] == '-' {\n\t\tz.readComment()\n\t\treturn CommentToken\n\t}\n\tz.raw.end -= 2\n\tif z.readDoctype() {\n\t\treturn DoctypeToken\n\t}\n\tif z.allowCDATA && z.readCDATA() {\n\t\tz.convertNUL = true\n\t\treturn TextToken\n\t}\n\t// It's a bogus comment.\n\tz.readUntilCloseAngle()\n\treturn CommentToken\n}\n\n// readDoctype attempts to read a doctype declaration and returns true if\n// successful. The opening \"<!\" has already been consumed.\nfunc (z *Tokenizer) readDoctype() bool {\n\tconst s = \"DOCTYPE\"\n\tfor i := 0; i < len(s); i++ {\n\t\tc := z.readByte()\n\t\tif z.err != nil {\n\t\t\tz.data.end = z.raw.end\n\t\t\treturn false\n\t\t}\n\t\tif c != s[i] && c != s[i]+('a'-'A') {\n\t\t\t// Back up to read the fragment of \"DOCTYPE\" again.\n\t\t\tz.raw.end = z.data.start\n\t\t\treturn false\n\t\t}\n\t}\n\tif z.skipWhiteSpace(); z.err != nil {\n\t\tz.data.start = z.raw.end\n\t\tz.data.end = z.raw.end\n\t\treturn true\n\t}\n\tz.readUntilCloseAngle()\n\treturn true\n}\n\n// readCDATA attempts to read a CDATA section and returns true if\n// successful. The opening \"<!\" has already been consumed.\nfunc (z *Tokenizer) readCDATA() bool {\n\tconst s = \"[CDATA[\"\n\tfor i := 0; i < len(s); i++ {\n\t\tc := z.readByte()\n\t\tif z.err != nil {\n\t\t\tz.data.end = z.raw.end\n\t\t\treturn false\n\t\t}\n\t\tif c != s[i] {\n\t\t\t// Back up to read the fragment of \"[CDATA[\" again.\n\t\t\tz.raw.end = z.data.start\n\t\t\treturn false\n\t\t}\n\t}\n\tz.data.start = z.raw.end\n\tbrackets := 0\n\tfor {\n\t\tc := z.readByte()\n\t\tif z.err != nil {\n\t\t\tz.data.end = z.raw.end\n\t\t\treturn true\n\t\t}\n\t\tswitch c {\n\t\tcase ']':\n\t\t\tbrackets++\n\t\tcase '>':\n\t\t\tif brackets >= 2 {\n\t\t\t\tz.data.end = z.raw.end - len(\"]]>\")\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tbrackets = 0\n\t\tdefault:\n\t\t\tbrackets = 0\n\t\t}\n\t}\n}\n\n// startTagIn returns whether the start tag in z.buf[z.data.start:z.data.end]\n// case-insensitively matches any element of ss.\nfunc (z *Tokenizer) startTagIn(ss ...string) bool {\nloop:\n\tfor _, s := range ss {\n\t\tif z.data.end-z.data.start != len(s) {\n\t\t\tcontinue loop\n\t\t}\n\t\tfor i := 0; i < len(s); i++ {\n\t\t\tc := z.buf[z.data.start+i]\n\t\t\tif 'A' <= c && c <= 'Z' {\n\t\t\t\tc += 'a' - 'A'\n\t\t\t}\n\t\t\tif c != s[i] {\n\t\t\t\tcontinue loop\n\t\t\t}\n\t\t}\n\t\treturn true\n\t}\n\treturn false\n}\n\n// readStartTag reads the next start tag token. The opening \"<a\" has already\n// been consumed, where 'a' means anything in [A-Za-z].\nfunc (z *Tokenizer) readStartTag() TokenType {\n\tz.readTag(true)\n\tif z.err != nil {\n\t\treturn ErrorToken\n\t}\n\t// Several tags flag the tokenizer's next token as raw.\n\tc, raw := z.buf[z.data.start], false\n\tif 'A' <= c && c <= 'Z' {\n\t\tc += 'a' - 'A'\n\t}\n\tswitch c {\n\tcase 'i':\n\t\traw = z.startTagIn(\"iframe\")\n\tcase 'n':\n\t\traw = z.startTagIn(\"noembed\", \"noframes\", \"noscript\")\n\tcase 'p':\n\t\traw = z.startTagIn(\"plaintext\")\n\tcase 's':\n\t\traw = z.startTagIn(\"script\", \"style\")\n\tcase 't':\n\t\traw = z.startTagIn(\"textarea\", \"title\")\n\tcase 'x':\n\t\traw = z.startTagIn(\"xmp\")\n\t}\n\tif raw {\n\t\tz.rawTag = strings.ToLower(string(z.buf[z.data.start:z.data.end]))\n\t}\n\t// Look for a self-closing token (e.g. <br/>).\n\t//\n\t// Originally, we did this by just checking that the last character of the\n\t// tag (ignoring the closing bracket) was a solidus (/) character, but this\n\t// is not always accurate.\n\t//\n\t// We need to be careful that we don't misinterpret a non-self-closing tag\n\t// as self-closing, as can happen if the tag contains unquoted attribute\n\t// values (i.e. <p a=/>).\n\t//\n\t// To avoid this, we check that the last non-bracket character of the tag\n\t// (z.raw.end-2) isn't the same character as the last non-quote character of\n\t// the last attribute of the tag (z.pendingAttr[1].end-1), if the tag has\n\t// attributes.\n\tnAttrs := len(z.attr)\n\tif z.err == nil && z.buf[z.raw.end-2] == '/' && (nAttrs == 0 || z.raw.end-2 != z.attr[nAttrs-1][1].end-1) {\n\t\treturn SelfClosingTagToken\n\t}\n\treturn StartTagToken\n}\n\n// readTag reads the next tag token and its attributes. If saveAttr, those\n// attributes are saved in z.attr, otherwise z.attr is set to an empty slice.\n// The opening \"<a\" or \"</a\" has already been consumed, where 'a' means anything\n// in [A-Za-z].\nfunc (z *Tokenizer) readTag(saveAttr bool) {\n\tz.attr = z.attr[:0]\n\tz.nAttrReturned = 0\n\t// Read the tag name and attribute key/value pairs.\n\tz.readTagName()\n\tif z.skipWhiteSpace(); z.err != nil {\n\t\treturn\n\t}\n\tfor {\n\t\tc := z.readByte()\n\t\tif z.err != nil || c == '>' {\n\t\t\tbreak\n\t\t}\n\t\tz.raw.end--\n\t\tz.readTagAttrKey()\n\t\tz.readTagAttrVal()\n\t\t// Save pendingAttr if saveAttr and that attribute has a non-empty key.\n\t\tif saveAttr && z.pendingAttr[0].start != z.pendingAttr[0].end {\n\t\t\tz.attr = append(z.attr, z.pendingAttr)\n\t\t}\n\t\tif z.skipWhiteSpace(); z.err != nil {\n\t\t\tbreak\n\t\t}\n\t}\n}\n\n// readTagName sets z.data to the \"div\" in \"<div k=v>\". The reader (z.raw.end)\n// is positioned such that the first byte of the tag name (the \"d\" in \"<div\")\n// has already been consumed.\nfunc (z *Tokenizer) readTagName() {\n\tz.data.start = z.raw.end - 1\n\tfor {\n\t\tc := z.readByte()\n\t\tif z.err != nil {\n\t\t\tz.data.end = z.raw.end\n\t\t\treturn\n\t\t}\n\t\tswitch c {\n\t\tcase ' ', '\\n', '\\r', '\\t', '\\f':\n\t\t\tz.data.end = z.raw.end - 1\n\t\t\treturn\n\t\tcase '/', '>':\n\t\t\tz.raw.end--\n\t\t\tz.data.end = z.raw.end\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// readTagAttrKey sets z.pendingAttr[0] to the \"k\" in \"<div k=v>\".\n// Precondition: z.err == nil.\nfunc (z *Tokenizer) readTagAttrKey() {\n\tz.pendingAttr[0].start = z.raw.end\n\tfor {\n\t\tc := z.readByte()\n\t\tif z.err != nil {\n\t\t\tz.pendingAttr[0].end = z.raw.end\n\t\t\treturn\n\t\t}\n\t\tswitch c {\n\t\tcase '=':\n\t\t\tif z.pendingAttr[0].start+1 == z.raw.end {\n\t\t\t\t// WHATWG 13.2.5.32, if we see an equals sign before the attribute name\n\t\t\t\t// begins, we treat it as a character in the attribute name and continue.\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tfallthrough\n\t\tcase ' ', '\\n', '\\r', '\\t', '\\f', '/', '>':\n\t\t\t// WHATWG 13.2.5.33 Attribute name state\n\t\t\t// We need to reconsume the char in the after attribute name state to support the / character\n\t\t\tz.raw.end--\n\t\t\tz.pendingAttr[0].end = z.raw.end\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// readTagAttrVal sets z.pendingAttr[1] to the \"v\" in \"<div k=v>\".\nfunc (z *Tokenizer) readTagAttrVal() {\n\tz.pendingAttr[1].start = z.raw.end\n\tz.pendingAttr[1].end = z.raw.end\n\tif z.skipWhiteSpace(); z.err != nil {\n\t\treturn\n\t}\n\tc := z.readByte()\n\tif z.err != nil {\n\t\treturn\n\t}\n\tif c == '/' {\n\t\t// WHATWG 13.2.5.34 After attribute name state\n\t\t// U+002F SOLIDUS (/) - Switch to the self-closing start tag state.\n\t\treturn\n\t}\n\tif c != '=' {\n\t\tz.raw.end--\n\t\treturn\n\t}\n\tif z.skipWhiteSpace(); z.err != nil {\n\t\treturn\n\t}\n\tquote := z.readByte()\n\tif z.err != nil {\n\t\treturn\n\t}\n\tswitch quote {\n\tcase '>':\n\t\tz.raw.end--\n\t\treturn\n\n\tcase '\\'', '\"':\n\t\tz.pendingAttr[1].start = z.raw.end\n\t\tfor {\n\t\t\tc := z.readByte()\n\t\t\tif z.err != nil {\n\t\t\t\tz.pendingAttr[1].end = z.raw.end\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif c == quote {\n\t\t\t\tz.pendingAttr[1].end = z.raw.end - 1\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\n\tdefault:\n\t\tz.pendingAttr[1].start = z.raw.end - 1\n\t\tfor {\n\t\t\tc := z.readByte()\n\t\t\tif z.err != nil {\n\t\t\t\tz.pendingAttr[1].end = z.raw.end\n\t\t\t\treturn\n\t\t\t}\n\t\t\tswitch c {\n\t\t\tcase ' ', '\\n', '\\r', '\\t', '\\f':\n\t\t\t\tz.pendingAttr[1].end = z.raw.end - 1\n\t\t\t\treturn\n\t\t\tcase '>':\n\t\t\t\tz.raw.end--\n\t\t\t\tz.pendingAttr[1].end = z.raw.end\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n}\n\n// Next scans the next token and returns its type.\nfunc (z *Tokenizer) Next() TokenType {\n\tz.raw.start = z.raw.end\n\tz.data.start = z.raw.end\n\tz.data.end = z.raw.end\n\tif z.err != nil {\n\t\tz.tt = ErrorToken\n\t\treturn z.tt\n\t}\n\tif z.rawTag != \"\" {\n\t\tif z.rawTag == \"plaintext\" {\n\t\t\t// Read everything up to EOF.\n\t\t\tfor z.err == nil {\n\t\t\t\tz.readByte()\n\t\t\t}\n\t\t\tz.data.end = z.raw.end\n\t\t\tz.textIsRaw = true\n\t\t} else {\n\t\t\tz.readRawOrRCDATA()\n\t\t}\n\t\tif z.data.end > z.data.start {\n\t\t\tz.tt = TextToken\n\t\t\tz.convertNUL = true\n\t\t\treturn z.tt\n\t\t}\n\t}\n\tz.textIsRaw = false\n\tz.convertNUL = false\n\nloop:\n\tfor {\n\t\tc := z.readByte()\n\t\tif z.err != nil {\n\t\t\tbreak loop\n\t\t}\n\t\tif c != '<' {\n\t\t\tcontinue loop\n\t\t}\n\n\t\t// Check if the '<' we have just read is part of a tag, comment\n\t\t// or doctype. If not, it's part of the accumulated text token.\n\t\tc = z.readByte()\n\t\tif z.err != nil {\n\t\t\tbreak loop\n\t\t}\n\t\tvar tokenType TokenType\n\t\tswitch {\n\t\tcase 'a' <= c && c <= 'z' || 'A' <= c && c <= 'Z':\n\t\t\ttokenType = StartTagToken\n\t\tcase c == '/':\n\t\t\ttokenType = EndTagToken\n\t\tcase c == '!' || c == '?':\n\t\t\t// We use CommentToken to mean any of \"<!--actual comments-->\",\n\t\t\t// \"<!DOCTYPE declarations>\" and \"<?xml processing instructions?>\".\n\t\t\ttokenType = CommentToken\n\t\tdefault:\n\t\t\t// Reconsume the current character.\n\t\t\tz.raw.end--\n\t\t\tcontinue\n\t\t}\n\n\t\t// We have a non-text token, but we might have accumulated some text\n\t\t// before that. If so, we return the text first, and return the non-\n\t\t// text token on the subsequent call to Next.\n\t\tif x := z.raw.end - len(\"<a\"); z.raw.start < x {\n\t\t\tz.raw.end = x\n\t\t\tz.data.end = x\n\t\t\tz.tt = TextToken\n\t\t\treturn z.tt\n\t\t}\n\t\tswitch tokenType {\n\t\tcase StartTagToken:\n\t\t\tz.tt = z.readStartTag()\n\t\t\treturn z.tt\n\t\tcase EndTagToken:\n\t\t\tc = z.readByte()\n\t\t\tif z.err != nil {\n\t\t\t\tbreak loop\n\t\t\t}\n\t\t\tif c == '>' {\n\t\t\t\t// \"</>\" does not generate a token at all. Generate an empty comment\n\t\t\t\t// to allow passthrough clients to pick up the data using Raw.\n\t\t\t\t// Reset the tokenizer state and start again.\n\t\t\t\tz.tt = CommentToken\n\t\t\t\treturn z.tt\n\t\t\t}\n\t\t\tif 'a' <= c && c <= 'z' || 'A' <= c && c <= 'Z' {\n\t\t\t\tz.readTag(false)\n\t\t\t\tif z.err != nil {\n\t\t\t\t\tz.tt = ErrorToken\n\t\t\t\t} else {\n\t\t\t\t\tz.tt = EndTagToken\n\t\t\t\t}\n\t\t\t\treturn z.tt\n\t\t\t}\n\t\t\tz.raw.end--\n\t\t\tz.readUntilCloseAngle()\n\t\t\tz.tt = CommentToken\n\t\t\treturn z.tt\n\t\tcase CommentToken:\n\t\t\tif c == '!' {\n\t\t\t\tz.tt = z.readMarkupDeclaration()\n\t\t\t\treturn z.tt\n\t\t\t}\n\t\t\tz.raw.end--\n\t\t\tz.readUntilCloseAngle()\n\t\t\tz.tt = CommentToken\n\t\t\treturn z.tt\n\t\t}\n\t}\n\tif z.raw.start < z.raw.end {\n\t\tz.data.end = z.raw.end\n\t\tz.tt = TextToken\n\t\treturn z.tt\n\t}\n\tz.tt = ErrorToken\n\treturn z.tt\n}\n\n// Raw returns the unmodified text of the current token. Calling Next, Token,\n// Text, TagName or TagAttr may change the contents of the returned slice.\n//\n// The token stream's raw bytes partition the byte stream (up until an\n// ErrorToken). There are no overlaps or gaps between two consecutive token's\n// raw bytes. One implication is that the byte offset of the current token is\n// the sum of the lengths of all previous tokens' raw bytes.\nfunc (z *Tokenizer) Raw() []byte {\n\treturn z.buf[z.raw.start:z.raw.end]\n}\n\n// convertNewlines converts \"\\r\" and \"\\r\\n\" in s to \"\\n\".\n// The conversion happens in place, but the resulting slice may be shorter.\nfunc convertNewlines(s []byte) []byte {\n\tfor i, c := range s {\n\t\tif c != '\\r' {\n\t\t\tcontinue\n\t\t}\n\n\t\tsrc := i + 1\n\t\tif src >= len(s) || s[src] != '\\n' {\n\t\t\ts[i] = '\\n'\n\t\t\tcontinue\n\t\t}\n\n\t\tdst := i\n\t\tfor src < len(s) {\n\t\t\tif s[src] == '\\r' {\n\t\t\t\tif src+1 < len(s) && s[src+1] == '\\n' {\n\t\t\t\t\tsrc++\n\t\t\t\t}\n\t\t\t\ts[dst] = '\\n'\n\t\t\t} else {\n\t\t\t\ts[dst] = s[src]\n\t\t\t}\n\t\t\tsrc++\n\t\t\tdst++\n\t\t}\n\t\treturn s[:dst]\n\t}\n\treturn s\n}\n\nvar (\n\tnul         = []byte(\"\\x00\")\n\treplacement = []byte(\"\\ufffd\")\n)\n\n// Text returns the unescaped text of a text, comment or doctype token. The\n// contents of the returned slice may change on the next call to Next.\nfunc (z *Tokenizer) Text() []byte {\n\tswitch z.tt {\n\tcase TextToken, CommentToken, DoctypeToken:\n\t\ts := z.buf[z.data.start:z.data.end]\n\t\tz.data.start = z.raw.end\n\t\tz.data.end = z.raw.end\n\t\ts = convertNewlines(s)\n\t\tif (z.convertNUL || z.tt == CommentToken) && bytes.Contains(s, nul) {\n\t\t\ts = bytes.Replace(s, nul, replacement, -1)\n\t\t}\n\t\tif !z.textIsRaw {\n\t\t\ts = unescape(s, false)\n\t\t}\n\t\treturn s\n\t}\n\treturn nil\n}\n\n// TagName returns the lower-cased name of a tag token (the `img` out of\n// `<IMG SRC=\"foo\">`) and whether the tag has attributes.\n// The contents of the returned slice may change on the next call to Next.\nfunc (z *Tokenizer) TagName() (name []byte, hasAttr bool) {\n\tif z.data.start < z.data.end {\n\t\tswitch z.tt {\n\t\tcase StartTagToken, EndTagToken, SelfClosingTagToken:\n\t\t\ts := z.buf[z.data.start:z.data.end]\n\t\t\tz.data.start = z.raw.end\n\t\t\tz.data.end = z.raw.end\n\t\t\treturn lower(s), z.nAttrReturned < len(z.attr)\n\t\t}\n\t}\n\treturn nil, false\n}\n\n// TagAttr returns the lower-cased key and unescaped value of the next unparsed\n// attribute for the current tag token and whether there are more attributes.\n// The contents of the returned slices may change on the next call to Next.\nfunc (z *Tokenizer) TagAttr() (key, val []byte, moreAttr bool) {\n\tif z.nAttrReturned < len(z.attr) {\n\t\tswitch z.tt {\n\t\tcase StartTagToken, SelfClosingTagToken:\n\t\t\tx := z.attr[z.nAttrReturned]\n\t\t\tz.nAttrReturned++\n\t\t\tkey = z.buf[x[0].start:x[0].end]\n\t\t\tval = z.buf[x[1].start:x[1].end]\n\t\t\treturn lower(key), unescape(convertNewlines(val), true), z.nAttrReturned < len(z.attr)\n\t\t}\n\t}\n\treturn nil, nil, false\n}\n\n// Token returns the current Token. The result's Data and Attr values remain\n// valid after subsequent Next calls.\nfunc (z *Tokenizer) Token() Token {\n\tt := Token{Type: z.tt}\n\tswitch z.tt {\n\tcase TextToken, CommentToken, DoctypeToken:\n\t\tt.Data = string(z.Text())\n\tcase StartTagToken, SelfClosingTagToken, EndTagToken:\n\t\tname, moreAttr := z.TagName()\n\t\tfor moreAttr {\n\t\t\tvar key, val []byte\n\t\t\tkey, val, moreAttr = z.TagAttr()\n\t\t\tt.Attr = append(t.Attr, Attribute{\"\", atom.String(key), string(val)})\n\t\t}\n\t\tif a := atom.Lookup(name); a != 0 {\n\t\t\tt.DataAtom, t.Data = a, a.String()\n\t\t} else {\n\t\t\tt.DataAtom, t.Data = 0, string(name)\n\t\t}\n\t}\n\treturn t\n}\n\n// SetMaxBuf sets a limit on the amount of data buffered during tokenization.\n// A value of 0 means unlimited.\nfunc (z *Tokenizer) SetMaxBuf(n int) {\n\tz.maxBuf = n\n}\n\n// NewTokenizer returns a new HTML Tokenizer for the given Reader.\n// The input is assumed to be UTF-8 encoded.\nfunc NewTokenizer(r io.Reader) *Tokenizer {\n\treturn NewTokenizerFragment(r, \"\")\n}\n\n// NewTokenizerFragment returns a new HTML Tokenizer for the given Reader, for\n// tokenizing an existing element's InnerHTML fragment. contextTag is that\n// element's tag, such as \"div\" or \"iframe\".\n//\n// For example, how the InnerHTML \"a<b\" is tokenized depends on whether it is\n// for a <p> tag or a <script> tag.\n//\n// The input is assumed to be UTF-8 encoded.\nfunc NewTokenizerFragment(r io.Reader, contextTag string) *Tokenizer {\n\tz := &Tokenizer{\n\t\tr:   r,\n\t\tbuf: make([]byte, 0, 4096),\n\t}\n\tif contextTag != \"\" {\n\t\tswitch s := strings.ToLower(contextTag); s {\n\t\tcase \"iframe\", \"noembed\", \"noframes\", \"noscript\", \"plaintext\", \"script\", \"style\", \"title\", \"textarea\", \"xmp\":\n\t\t\tz.rawTag = s\n\t\t}\n\t}\n\treturn z\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sync/LICENSE",
    "content": "Copyright 2009 The Go Authors.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n   * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n   * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n   * Neither the name of Google LLC nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sync/PATENTS",
    "content": "Additional IP Rights Grant (Patents)\n\n\"This implementation\" means the copyrightable works distributed by\nGoogle as part of the Go project.\n\nGoogle hereby grants to You a perpetual, worldwide, non-exclusive,\nno-charge, royalty-free, irrevocable (except as stated in this section)\npatent license to make, have made, use, offer to sell, sell, import,\ntransfer and otherwise run, modify and propagate the contents of this\nimplementation of Go, where such license applies only to those patent\nclaims, both currently owned or controlled by Google and acquired in\nthe future, licensable by Google that are necessarily infringed by this\nimplementation of Go.  This grant does not include claims that would be\ninfringed only as a consequence of further modification of this\nimplementation.  If you or your agent or exclusive licensee institute or\norder or agree to the institution of patent litigation against any\nentity (including a cross-claim or counterclaim in a lawsuit) alleging\nthat this implementation of Go or any code incorporated within this\nimplementation of Go constitutes direct or contributory patent\ninfringement, or inducement of patent infringement, then any patent\nrights granted to you under this License for this implementation of Go\nshall terminate as of the date such litigation is filed.\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sync/errgroup/errgroup.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package errgroup provides synchronization, error propagation, and Context\n// cancellation for groups of goroutines working on subtasks of a common task.\n//\n// [errgroup.Group] is related to [sync.WaitGroup] but adds handling of tasks\n// returning errors.\npackage errgroup\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"sync\"\n)\n\ntype token struct{}\n\n// A Group is a collection of goroutines working on subtasks that are part of\n// the same overall task. A Group should not be reused for different tasks.\n//\n// A zero Group is valid, has no limit on the number of active goroutines,\n// and does not cancel on error.\ntype Group struct {\n\tcancel func(error)\n\n\twg sync.WaitGroup\n\n\tsem chan token\n\n\terrOnce sync.Once\n\terr     error\n}\n\nfunc (g *Group) done() {\n\tif g.sem != nil {\n\t\t<-g.sem\n\t}\n\tg.wg.Done()\n}\n\n// WithContext returns a new Group and an associated Context derived from ctx.\n//\n// The derived Context is canceled the first time a function passed to Go\n// returns a non-nil error or the first time Wait returns, whichever occurs\n// first.\nfunc WithContext(ctx context.Context) (*Group, context.Context) {\n\tctx, cancel := context.WithCancelCause(ctx)\n\treturn &Group{cancel: cancel}, ctx\n}\n\n// Wait blocks until all function calls from the Go method have returned, then\n// returns the first non-nil error (if any) from them.\nfunc (g *Group) Wait() error {\n\tg.wg.Wait()\n\tif g.cancel != nil {\n\t\tg.cancel(g.err)\n\t}\n\treturn g.err\n}\n\n// Go calls the given function in a new goroutine.\n//\n// The first call to Go must happen before a Wait.\n// It blocks until the new goroutine can be added without the number of\n// goroutines in the group exceeding the configured limit.\n//\n// The first goroutine in the group that returns a non-nil error will\n// cancel the associated Context, if any. The error will be returned\n// by Wait.\nfunc (g *Group) Go(f func() error) {\n\tif g.sem != nil {\n\t\tg.sem <- token{}\n\t}\n\n\tg.wg.Add(1)\n\tgo func() {\n\t\tdefer g.done()\n\n\t\t// It is tempting to propagate panics from f()\n\t\t// up to the goroutine that calls Wait, but\n\t\t// it creates more problems than it solves:\n\t\t// - it delays panics arbitrarily,\n\t\t//   making bugs harder to detect;\n\t\t// - it turns f's panic stack into a mere value,\n\t\t//   hiding it from crash-monitoring tools;\n\t\t// - it risks deadlocks that hide the panic entirely,\n\t\t//   if f's panic leaves the program in a state\n\t\t//   that prevents the Wait call from being reached.\n\t\t// See #53757, #74275, #74304, #74306.\n\n\t\tif err := f(); err != nil {\n\t\t\tg.errOnce.Do(func() {\n\t\t\t\tg.err = err\n\t\t\t\tif g.cancel != nil {\n\t\t\t\t\tg.cancel(g.err)\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\t}()\n}\n\n// TryGo calls the given function in a new goroutine only if the number of\n// active goroutines in the group is currently below the configured limit.\n//\n// The return value reports whether the goroutine was started.\nfunc (g *Group) TryGo(f func() error) bool {\n\tif g.sem != nil {\n\t\tselect {\n\t\tcase g.sem <- token{}:\n\t\t\t// Note: this allows barging iff channels in general allow barging.\n\t\tdefault:\n\t\t\treturn false\n\t\t}\n\t}\n\n\tg.wg.Add(1)\n\tgo func() {\n\t\tdefer g.done()\n\n\t\tif err := f(); err != nil {\n\t\t\tg.errOnce.Do(func() {\n\t\t\t\tg.err = err\n\t\t\t\tif g.cancel != nil {\n\t\t\t\t\tg.cancel(g.err)\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\t}()\n\treturn true\n}\n\n// SetLimit limits the number of active goroutines in this group to at most n.\n// A negative value indicates no limit.\n// A limit of zero will prevent any new goroutines from being added.\n//\n// Any subsequent call to the Go method will block until it can add an active\n// goroutine without exceeding the configured limit.\n//\n// The limit must not be modified while any goroutines in the group are active.\nfunc (g *Group) SetLimit(n int) {\n\tif n < 0 {\n\t\tg.sem = nil\n\t\treturn\n\t}\n\tif active := len(g.sem); active != 0 {\n\t\tpanic(fmt.Errorf(\"errgroup: modify limit while %v goroutines in the group are still active\", active))\n\t}\n\tg.sem = make(chan token, n)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/LICENSE",
    "content": "Copyright 2009 The Go Authors.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n   * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n   * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n   * Neither the name of Google LLC nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/PATENTS",
    "content": "Additional IP Rights Grant (Patents)\n\n\"This implementation\" means the copyrightable works distributed by\nGoogle as part of the Go project.\n\nGoogle hereby grants to You a perpetual, worldwide, non-exclusive,\nno-charge, royalty-free, irrevocable (except as stated in this section)\npatent license to make, have made, use, offer to sell, sell, import,\ntransfer and otherwise run, modify and propagate the contents of this\nimplementation of Go, where such license applies only to those patent\nclaims, both currently owned or controlled by Google and acquired in\nthe future, licensable by Google that are necessarily infringed by this\nimplementation of Go.  This grant does not include claims that would be\ninfringed only as a consequence of further modification of this\nimplementation.  If you or your agent or exclusive licensee institute or\norder or agree to the institution of patent litigation against any\nentity (including a cross-claim or counterclaim in a lawsuit) alleging\nthat this implementation of Go or any code incorporated within this\nimplementation of Go constitutes direct or contributory patent\ninfringement, or inducement of patent infringement, then any patent\nrights granted to you under this License for this implementation of Go\nshall terminate as of the date such litigation is filed.\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/cpu/asm_aix_ppc64.s",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gc\n\n#include \"textflag.h\"\n\n//\n// System calls for ppc64, AIX are implemented in runtime/syscall_aix.go\n//\n\nTEXT ·syscall6(SB),NOSPLIT,$0-88\n\tJMP\tsyscall·syscall6(SB)\n\nTEXT ·rawSyscall6(SB),NOSPLIT,$0-88\n\tJMP\tsyscall·rawSyscall6(SB)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/cpu/asm_darwin_x86_gc.s",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build darwin && amd64 && gc\n\n#include \"textflag.h\"\n\nTEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sysctl(SB)\nGLOBL\t·libc_sysctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB)\n\nTEXT libc_sysctlbyname_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sysctlbyname(SB)\nGLOBL\t·libc_sysctlbyname_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sysctlbyname_trampoline_addr(SB)/8, $libc_sysctlbyname_trampoline<>(SB)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/cpu/byteorder.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage cpu\n\nimport (\n\t\"runtime\"\n)\n\n// byteOrder is a subset of encoding/binary.ByteOrder.\ntype byteOrder interface {\n\tUint32([]byte) uint32\n\tUint64([]byte) uint64\n}\n\ntype littleEndian struct{}\ntype bigEndian struct{}\n\nfunc (littleEndian) Uint32(b []byte) uint32 {\n\t_ = b[3] // bounds check hint to compiler; see golang.org/issue/14808\n\treturn uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24\n}\n\nfunc (littleEndian) Uint64(b []byte) uint64 {\n\t_ = b[7] // bounds check hint to compiler; see golang.org/issue/14808\n\treturn uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 |\n\t\tuint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56\n}\n\nfunc (bigEndian) Uint32(b []byte) uint32 {\n\t_ = b[3] // bounds check hint to compiler; see golang.org/issue/14808\n\treturn uint32(b[3]) | uint32(b[2])<<8 | uint32(b[1])<<16 | uint32(b[0])<<24\n}\n\nfunc (bigEndian) Uint64(b []byte) uint64 {\n\t_ = b[7] // bounds check hint to compiler; see golang.org/issue/14808\n\treturn uint64(b[7]) | uint64(b[6])<<8 | uint64(b[5])<<16 | uint64(b[4])<<24 |\n\t\tuint64(b[3])<<32 | uint64(b[2])<<40 | uint64(b[1])<<48 | uint64(b[0])<<56\n}\n\n// hostByteOrder returns littleEndian on little-endian machines and\n// bigEndian on big-endian machines.\nfunc hostByteOrder() byteOrder {\n\tswitch runtime.GOARCH {\n\tcase \"386\", \"amd64\", \"amd64p32\",\n\t\t\"alpha\",\n\t\t\"arm\", \"arm64\",\n\t\t\"loong64\",\n\t\t\"mipsle\", \"mips64le\", \"mips64p32le\",\n\t\t\"nios2\",\n\t\t\"ppc64le\",\n\t\t\"riscv\", \"riscv64\",\n\t\t\"sh\":\n\t\treturn littleEndian{}\n\tcase \"armbe\", \"arm64be\",\n\t\t\"m68k\",\n\t\t\"mips\", \"mips64\", \"mips64p32\",\n\t\t\"ppc\", \"ppc64\",\n\t\t\"s390\", \"s390x\",\n\t\t\"shbe\",\n\t\t\"sparc\", \"sparc64\":\n\t\treturn bigEndian{}\n\t}\n\tpanic(\"unknown architecture\")\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/cpu/cpu.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package cpu implements processor feature detection for\n// various CPU architectures.\npackage cpu\n\nimport (\n\t\"os\"\n\t\"strings\"\n)\n\n// Initialized reports whether the CPU features were initialized.\n//\n// For some GOOS/GOARCH combinations initialization of the CPU features depends\n// on reading an operating specific file, e.g. /proc/self/auxv on linux/arm\n// Initialized will report false if reading the file fails.\nvar Initialized bool\n\n// CacheLinePad is used to pad structs to avoid false sharing.\ntype CacheLinePad struct{ _ [cacheLineSize]byte }\n\n// X86 contains the supported CPU features of the\n// current X86/AMD64 platform. If the current platform\n// is not X86/AMD64 then all feature flags are false.\n//\n// X86 is padded to avoid false sharing. Further the HasAVX\n// and HasAVX2 are only set if the OS supports XMM and YMM\n// registers in addition to the CPUID feature bit being set.\nvar X86 struct {\n\t_                   CacheLinePad\n\tHasAES              bool // AES hardware implementation (AES NI)\n\tHasADX              bool // Multi-precision add-carry instruction extensions\n\tHasAVX              bool // Advanced vector extension\n\tHasAVX2             bool // Advanced vector extension 2\n\tHasAVX512           bool // Advanced vector extension 512\n\tHasAVX512F          bool // Advanced vector extension 512 Foundation Instructions\n\tHasAVX512CD         bool // Advanced vector extension 512 Conflict Detection Instructions\n\tHasAVX512ER         bool // Advanced vector extension 512 Exponential and Reciprocal Instructions\n\tHasAVX512PF         bool // Advanced vector extension 512 Prefetch Instructions\n\tHasAVX512VL         bool // Advanced vector extension 512 Vector Length Extensions\n\tHasAVX512BW         bool // Advanced vector extension 512 Byte and Word Instructions\n\tHasAVX512DQ         bool // Advanced vector extension 512 Doubleword and Quadword Instructions\n\tHasAVX512IFMA       bool // Advanced vector extension 512 Integer Fused Multiply Add\n\tHasAVX512VBMI       bool // Advanced vector extension 512 Vector Byte Manipulation Instructions\n\tHasAVX5124VNNIW     bool // Advanced vector extension 512 Vector Neural Network Instructions Word variable precision\n\tHasAVX5124FMAPS     bool // Advanced vector extension 512 Fused Multiply Accumulation Packed Single precision\n\tHasAVX512VPOPCNTDQ  bool // Advanced vector extension 512 Double and quad word population count instructions\n\tHasAVX512VPCLMULQDQ bool // Advanced vector extension 512 Vector carry-less multiply operations\n\tHasAVX512VNNI       bool // Advanced vector extension 512 Vector Neural Network Instructions\n\tHasAVX512GFNI       bool // Advanced vector extension 512 Galois field New Instructions\n\tHasAVX512VAES       bool // Advanced vector extension 512 Vector AES instructions\n\tHasAVX512VBMI2      bool // Advanced vector extension 512 Vector Byte Manipulation Instructions 2\n\tHasAVX512BITALG     bool // Advanced vector extension 512 Bit Algorithms\n\tHasAVX512BF16       bool // Advanced vector extension 512 BFloat16 Instructions\n\tHasAMXTile          bool // Advanced Matrix Extension Tile instructions\n\tHasAMXInt8          bool // Advanced Matrix Extension Int8 instructions\n\tHasAMXBF16          bool // Advanced Matrix Extension BFloat16 instructions\n\tHasBMI1             bool // Bit manipulation instruction set 1\n\tHasBMI2             bool // Bit manipulation instruction set 2\n\tHasCX16             bool // Compare and exchange 16 Bytes\n\tHasERMS             bool // Enhanced REP for MOVSB and STOSB\n\tHasFMA              bool // Fused-multiply-add instructions\n\tHasOSXSAVE          bool // OS supports XSAVE/XRESTOR for saving/restoring XMM registers.\n\tHasPCLMULQDQ        bool // PCLMULQDQ instruction - most often used for AES-GCM\n\tHasPOPCNT           bool // Hamming weight instruction POPCNT.\n\tHasRDRAND           bool // RDRAND instruction (on-chip random number generator)\n\tHasRDSEED           bool // RDSEED instruction (on-chip random number generator)\n\tHasSSE2             bool // Streaming SIMD extension 2 (always available on amd64)\n\tHasSSE3             bool // Streaming SIMD extension 3\n\tHasSSSE3            bool // Supplemental streaming SIMD extension 3\n\tHasSSE41            bool // Streaming SIMD extension 4 and 4.1\n\tHasSSE42            bool // Streaming SIMD extension 4 and 4.2\n\tHasAVXIFMA          bool // Advanced vector extension Integer Fused Multiply Add\n\tHasAVXVNNI          bool // Advanced vector extension Vector Neural Network Instructions\n\tHasAVXVNNIInt8      bool // Advanced vector extension Vector Neural Network Int8 instructions\n\t_                   CacheLinePad\n}\n\n// ARM64 contains the supported CPU features of the\n// current ARMv8(aarch64) platform. If the current platform\n// is not arm64 then all feature flags are false.\nvar ARM64 struct {\n\t_           CacheLinePad\n\tHasFP       bool // Floating-point instruction set (always available)\n\tHasASIMD    bool // Advanced SIMD (always available)\n\tHasEVTSTRM  bool // Event stream support\n\tHasAES      bool // AES hardware implementation\n\tHasPMULL    bool // Polynomial multiplication instruction set\n\tHasSHA1     bool // SHA1 hardware implementation\n\tHasSHA2     bool // SHA2 hardware implementation\n\tHasCRC32    bool // CRC32 hardware implementation\n\tHasATOMICS  bool // Atomic memory operation instruction set\n\tHasFPHP     bool // Half precision floating-point instruction set\n\tHasASIMDHP  bool // Advanced SIMD half precision instruction set\n\tHasCPUID    bool // CPUID identification scheme registers\n\tHasASIMDRDM bool // Rounding double multiply add/subtract instruction set\n\tHasJSCVT    bool // Javascript conversion from floating-point to integer\n\tHasFCMA     bool // Floating-point multiplication and addition of complex numbers\n\tHasLRCPC    bool // Release Consistent processor consistent support\n\tHasDCPOP    bool // Persistent memory support\n\tHasSHA3     bool // SHA3 hardware implementation\n\tHasSM3      bool // SM3 hardware implementation\n\tHasSM4      bool // SM4 hardware implementation\n\tHasASIMDDP  bool // Advanced SIMD double precision instruction set\n\tHasSHA512   bool // SHA512 hardware implementation\n\tHasSVE      bool // Scalable Vector Extensions\n\tHasSVE2     bool // Scalable Vector Extensions 2\n\tHasASIMDFHM bool // Advanced SIMD multiplication FP16 to FP32\n\tHasDIT      bool // Data Independent Timing support\n\tHasI8MM     bool // Advanced SIMD Int8 matrix multiplication instructions\n\t_           CacheLinePad\n}\n\n// ARM contains the supported CPU features of the current ARM (32-bit) platform.\n// All feature flags are false if:\n//  1. the current platform is not arm, or\n//  2. the current operating system is not Linux.\nvar ARM struct {\n\t_           CacheLinePad\n\tHasSWP      bool // SWP instruction support\n\tHasHALF     bool // Half-word load and store support\n\tHasTHUMB    bool // ARM Thumb instruction set\n\tHas26BIT    bool // Address space limited to 26-bits\n\tHasFASTMUL  bool // 32-bit operand, 64-bit result multiplication support\n\tHasFPA      bool // Floating point arithmetic support\n\tHasVFP      bool // Vector floating point support\n\tHasEDSP     bool // DSP Extensions support\n\tHasJAVA     bool // Java instruction set\n\tHasIWMMXT   bool // Intel Wireless MMX technology support\n\tHasCRUNCH   bool // MaverickCrunch context switching and handling\n\tHasTHUMBEE  bool // Thumb EE instruction set\n\tHasNEON     bool // NEON instruction set\n\tHasVFPv3    bool // Vector floating point version 3 support\n\tHasVFPv3D16 bool // Vector floating point version 3 D8-D15\n\tHasTLS      bool // Thread local storage support\n\tHasVFPv4    bool // Vector floating point version 4 support\n\tHasIDIVA    bool // Integer divide instruction support in ARM mode\n\tHasIDIVT    bool // Integer divide instruction support in Thumb mode\n\tHasVFPD32   bool // Vector floating point version 3 D15-D31\n\tHasLPAE     bool // Large Physical Address Extensions\n\tHasEVTSTRM  bool // Event stream support\n\tHasAES      bool // AES hardware implementation\n\tHasPMULL    bool // Polynomial multiplication instruction set\n\tHasSHA1     bool // SHA1 hardware implementation\n\tHasSHA2     bool // SHA2 hardware implementation\n\tHasCRC32    bool // CRC32 hardware implementation\n\t_           CacheLinePad\n}\n\n// The booleans in Loong64 contain the correspondingly named cpu feature bit.\n// The struct is padded to avoid false sharing.\nvar Loong64 struct {\n\t_         CacheLinePad\n\tHasLSX    bool // support 128-bit vector extension\n\tHasLASX   bool // support 256-bit vector extension\n\tHasCRC32  bool // support CRC instruction\n\tHasLAM_BH bool // support AM{SWAP/ADD}[_DB].{B/H} instruction\n\tHasLAMCAS bool // support AMCAS[_DB].{B/H/W/D} instruction\n\t_         CacheLinePad\n}\n\n// MIPS64X contains the supported CPU features of the current mips64/mips64le\n// platforms. If the current platform is not mips64/mips64le or the current\n// operating system is not Linux then all feature flags are false.\nvar MIPS64X struct {\n\t_      CacheLinePad\n\tHasMSA bool // MIPS SIMD architecture\n\t_      CacheLinePad\n}\n\n// PPC64 contains the supported CPU features of the current ppc64/ppc64le platforms.\n// If the current platform is not ppc64/ppc64le then all feature flags are false.\n//\n// For ppc64/ppc64le, it is safe to check only for ISA level starting on ISA v3.00,\n// since there are no optional categories. There are some exceptions that also\n// require kernel support to work (DARN, SCV), so there are feature bits for\n// those as well. The struct is padded to avoid false sharing.\nvar PPC64 struct {\n\t_        CacheLinePad\n\tHasDARN  bool // Hardware random number generator (requires kernel enablement)\n\tHasSCV   bool // Syscall vectored (requires kernel enablement)\n\tIsPOWER8 bool // ISA v2.07 (POWER8)\n\tIsPOWER9 bool // ISA v3.00 (POWER9), implies IsPOWER8\n\t_        CacheLinePad\n}\n\n// S390X contains the supported CPU features of the current IBM Z\n// (s390x) platform. If the current platform is not IBM Z then all\n// feature flags are false.\n//\n// S390X is padded to avoid false sharing. Further HasVX is only set\n// if the OS supports vector registers in addition to the STFLE\n// feature bit being set.\nvar S390X struct {\n\t_         CacheLinePad\n\tHasZARCH  bool // z/Architecture mode is active [mandatory]\n\tHasSTFLE  bool // store facility list extended\n\tHasLDISP  bool // long (20-bit) displacements\n\tHasEIMM   bool // 32-bit immediates\n\tHasDFP    bool // decimal floating point\n\tHasETF3EH bool // ETF-3 enhanced\n\tHasMSA    bool // message security assist (CPACF)\n\tHasAES    bool // KM-AES{128,192,256} functions\n\tHasAESCBC bool // KMC-AES{128,192,256} functions\n\tHasAESCTR bool // KMCTR-AES{128,192,256} functions\n\tHasAESGCM bool // KMA-GCM-AES{128,192,256} functions\n\tHasGHASH  bool // KIMD-GHASH function\n\tHasSHA1   bool // K{I,L}MD-SHA-1 functions\n\tHasSHA256 bool // K{I,L}MD-SHA-256 functions\n\tHasSHA512 bool // K{I,L}MD-SHA-512 functions\n\tHasSHA3   bool // K{I,L}MD-SHA3-{224,256,384,512} and K{I,L}MD-SHAKE-{128,256} functions\n\tHasVX     bool // vector facility\n\tHasVXE    bool // vector-enhancements facility 1\n\t_         CacheLinePad\n}\n\n// RISCV64 contains the supported CPU features and performance characteristics for riscv64\n// platforms. The booleans in RISCV64, with the exception of HasFastMisaligned, indicate\n// the presence of RISC-V extensions.\n//\n// It is safe to assume that all the RV64G extensions are supported and so they are omitted from\n// this structure. As riscv64 Go programs require at least RV64G, the code that populates\n// this structure cannot run successfully if some of the RV64G extensions are missing.\n// The struct is padded to avoid false sharing.\nvar RISCV64 struct {\n\t_                 CacheLinePad\n\tHasFastMisaligned bool // Fast misaligned accesses\n\tHasC              bool // Compressed instruction-set extension\n\tHasV              bool // Vector extension compatible with RVV 1.0\n\tHasZba            bool // Address generation instructions extension\n\tHasZbb            bool // Basic bit-manipulation extension\n\tHasZbs            bool // Single-bit instructions extension\n\tHasZvbb           bool // Vector Basic Bit-manipulation\n\tHasZvbc           bool // Vector Carryless Multiplication\n\tHasZvkb           bool // Vector Cryptography Bit-manipulation\n\tHasZvkt           bool // Vector Data-Independent Execution Latency\n\tHasZvkg           bool // Vector GCM/GMAC\n\tHasZvkn           bool // NIST Algorithm Suite (AES/SHA256/SHA512)\n\tHasZvknc          bool // NIST Algorithm Suite with carryless multiply\n\tHasZvkng          bool // NIST Algorithm Suite with GCM\n\tHasZvks           bool // ShangMi Algorithm Suite\n\tHasZvksc          bool // ShangMi Algorithm Suite with carryless multiplication\n\tHasZvksg          bool // ShangMi Algorithm Suite with GCM\n\t_                 CacheLinePad\n}\n\nfunc init() {\n\tarchInit()\n\tinitOptions()\n\tprocessOptions()\n}\n\n// options contains the cpu debug options that can be used in GODEBUG.\n// Options are arch dependent and are added by the arch specific initOptions functions.\n// Features that are mandatory for the specific GOARCH should have the Required field set\n// (e.g. SSE2 on amd64).\nvar options []option\n\n// Option names should be lower case. e.g. avx instead of AVX.\ntype option struct {\n\tName      string\n\tFeature   *bool\n\tSpecified bool // whether feature value was specified in GODEBUG\n\tEnable    bool // whether feature should be enabled\n\tRequired  bool // whether feature is mandatory and can not be disabled\n}\n\nfunc processOptions() {\n\tenv := os.Getenv(\"GODEBUG\")\nfield:\n\tfor env != \"\" {\n\t\tfield := \"\"\n\t\ti := strings.IndexByte(env, ',')\n\t\tif i < 0 {\n\t\t\tfield, env = env, \"\"\n\t\t} else {\n\t\t\tfield, env = env[:i], env[i+1:]\n\t\t}\n\t\tif len(field) < 4 || field[:4] != \"cpu.\" {\n\t\t\tcontinue\n\t\t}\n\t\ti = strings.IndexByte(field, '=')\n\t\tif i < 0 {\n\t\t\tprint(\"GODEBUG sys/cpu: no value specified for \\\"\", field, \"\\\"\\n\")\n\t\t\tcontinue\n\t\t}\n\t\tkey, value := field[4:i], field[i+1:] // e.g. \"SSE2\", \"on\"\n\n\t\tvar enable bool\n\t\tswitch value {\n\t\tcase \"on\":\n\t\t\tenable = true\n\t\tcase \"off\":\n\t\t\tenable = false\n\t\tdefault:\n\t\t\tprint(\"GODEBUG sys/cpu: value \\\"\", value, \"\\\" not supported for cpu option \\\"\", key, \"\\\"\\n\")\n\t\t\tcontinue field\n\t\t}\n\n\t\tif key == \"all\" {\n\t\t\tfor i := range options {\n\t\t\t\toptions[i].Specified = true\n\t\t\t\toptions[i].Enable = enable || options[i].Required\n\t\t\t}\n\t\t\tcontinue field\n\t\t}\n\n\t\tfor i := range options {\n\t\t\tif options[i].Name == key {\n\t\t\t\toptions[i].Specified = true\n\t\t\t\toptions[i].Enable = enable\n\t\t\t\tcontinue field\n\t\t\t}\n\t\t}\n\n\t\tprint(\"GODEBUG sys/cpu: unknown cpu feature \\\"\", key, \"\\\"\\n\")\n\t}\n\n\tfor _, o := range options {\n\t\tif !o.Specified {\n\t\t\tcontinue\n\t\t}\n\n\t\tif o.Enable && !*o.Feature {\n\t\t\tprint(\"GODEBUG sys/cpu: can not enable \\\"\", o.Name, \"\\\", missing CPU support\\n\")\n\t\t\tcontinue\n\t\t}\n\n\t\tif !o.Enable && o.Required {\n\t\t\tprint(\"GODEBUG sys/cpu: can not disable \\\"\", o.Name, \"\\\", required CPU feature\\n\")\n\t\t\tcontinue\n\t\t}\n\n\t\t*o.Feature = o.Enable\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/cpu/cpu_aix.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix\n\npackage cpu\n\nconst (\n\t// getsystemcfg constants\n\t_SC_IMPL     = 2\n\t_IMPL_POWER8 = 0x10000\n\t_IMPL_POWER9 = 0x20000\n)\n\nfunc archInit() {\n\timpl := getsystemcfg(_SC_IMPL)\n\tif impl&_IMPL_POWER8 != 0 {\n\t\tPPC64.IsPOWER8 = true\n\t}\n\tif impl&_IMPL_POWER9 != 0 {\n\t\tPPC64.IsPOWER8 = true\n\t\tPPC64.IsPOWER9 = true\n\t}\n\n\tInitialized = true\n}\n\nfunc getsystemcfg(label int) (n uint64) {\n\tr0, _ := callgetsystemcfg(label)\n\tn = uint64(r0)\n\treturn\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/cpu/cpu_arm.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage cpu\n\nconst cacheLineSize = 32\n\n// HWCAP/HWCAP2 bits.\n// These are specific to Linux.\nconst (\n\thwcap_SWP       = 1 << 0\n\thwcap_HALF      = 1 << 1\n\thwcap_THUMB     = 1 << 2\n\thwcap_26BIT     = 1 << 3\n\thwcap_FAST_MULT = 1 << 4\n\thwcap_FPA       = 1 << 5\n\thwcap_VFP       = 1 << 6\n\thwcap_EDSP      = 1 << 7\n\thwcap_JAVA      = 1 << 8\n\thwcap_IWMMXT    = 1 << 9\n\thwcap_CRUNCH    = 1 << 10\n\thwcap_THUMBEE   = 1 << 11\n\thwcap_NEON      = 1 << 12\n\thwcap_VFPv3     = 1 << 13\n\thwcap_VFPv3D16  = 1 << 14\n\thwcap_TLS       = 1 << 15\n\thwcap_VFPv4     = 1 << 16\n\thwcap_IDIVA     = 1 << 17\n\thwcap_IDIVT     = 1 << 18\n\thwcap_VFPD32    = 1 << 19\n\thwcap_LPAE      = 1 << 20\n\thwcap_EVTSTRM   = 1 << 21\n\n\thwcap2_AES   = 1 << 0\n\thwcap2_PMULL = 1 << 1\n\thwcap2_SHA1  = 1 << 2\n\thwcap2_SHA2  = 1 << 3\n\thwcap2_CRC32 = 1 << 4\n)\n\nfunc initOptions() {\n\toptions = []option{\n\t\t{Name: \"pmull\", Feature: &ARM.HasPMULL},\n\t\t{Name: \"sha1\", Feature: &ARM.HasSHA1},\n\t\t{Name: \"sha2\", Feature: &ARM.HasSHA2},\n\t\t{Name: \"swp\", Feature: &ARM.HasSWP},\n\t\t{Name: \"thumb\", Feature: &ARM.HasTHUMB},\n\t\t{Name: \"thumbee\", Feature: &ARM.HasTHUMBEE},\n\t\t{Name: \"tls\", Feature: &ARM.HasTLS},\n\t\t{Name: \"vfp\", Feature: &ARM.HasVFP},\n\t\t{Name: \"vfpd32\", Feature: &ARM.HasVFPD32},\n\t\t{Name: \"vfpv3\", Feature: &ARM.HasVFPv3},\n\t\t{Name: \"vfpv3d16\", Feature: &ARM.HasVFPv3D16},\n\t\t{Name: \"vfpv4\", Feature: &ARM.HasVFPv4},\n\t\t{Name: \"half\", Feature: &ARM.HasHALF},\n\t\t{Name: \"26bit\", Feature: &ARM.Has26BIT},\n\t\t{Name: \"fastmul\", Feature: &ARM.HasFASTMUL},\n\t\t{Name: \"fpa\", Feature: &ARM.HasFPA},\n\t\t{Name: \"edsp\", Feature: &ARM.HasEDSP},\n\t\t{Name: \"java\", Feature: &ARM.HasJAVA},\n\t\t{Name: \"iwmmxt\", Feature: &ARM.HasIWMMXT},\n\t\t{Name: \"crunch\", Feature: &ARM.HasCRUNCH},\n\t\t{Name: \"neon\", Feature: &ARM.HasNEON},\n\t\t{Name: \"idivt\", Feature: &ARM.HasIDIVT},\n\t\t{Name: \"idiva\", Feature: &ARM.HasIDIVA},\n\t\t{Name: \"lpae\", Feature: &ARM.HasLPAE},\n\t\t{Name: \"evtstrm\", Feature: &ARM.HasEVTSTRM},\n\t\t{Name: \"aes\", Feature: &ARM.HasAES},\n\t\t{Name: \"crc32\", Feature: &ARM.HasCRC32},\n\t}\n\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/cpu/cpu_arm64.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage cpu\n\nimport \"runtime\"\n\n// cacheLineSize is used to prevent false sharing of cache lines.\n// We choose 128 because Apple Silicon, a.k.a. M1, has 128-byte cache line size.\n// It doesn't cost much and is much more future-proof.\nconst cacheLineSize = 128\n\nfunc initOptions() {\n\toptions = []option{\n\t\t{Name: \"fp\", Feature: &ARM64.HasFP},\n\t\t{Name: \"asimd\", Feature: &ARM64.HasASIMD},\n\t\t{Name: \"evstrm\", Feature: &ARM64.HasEVTSTRM},\n\t\t{Name: \"aes\", Feature: &ARM64.HasAES},\n\t\t{Name: \"fphp\", Feature: &ARM64.HasFPHP},\n\t\t{Name: \"jscvt\", Feature: &ARM64.HasJSCVT},\n\t\t{Name: \"lrcpc\", Feature: &ARM64.HasLRCPC},\n\t\t{Name: \"pmull\", Feature: &ARM64.HasPMULL},\n\t\t{Name: \"sha1\", Feature: &ARM64.HasSHA1},\n\t\t{Name: \"sha2\", Feature: &ARM64.HasSHA2},\n\t\t{Name: \"sha3\", Feature: &ARM64.HasSHA3},\n\t\t{Name: \"sha512\", Feature: &ARM64.HasSHA512},\n\t\t{Name: \"sm3\", Feature: &ARM64.HasSM3},\n\t\t{Name: \"sm4\", Feature: &ARM64.HasSM4},\n\t\t{Name: \"sve\", Feature: &ARM64.HasSVE},\n\t\t{Name: \"sve2\", Feature: &ARM64.HasSVE2},\n\t\t{Name: \"crc32\", Feature: &ARM64.HasCRC32},\n\t\t{Name: \"atomics\", Feature: &ARM64.HasATOMICS},\n\t\t{Name: \"asimdhp\", Feature: &ARM64.HasASIMDHP},\n\t\t{Name: \"cpuid\", Feature: &ARM64.HasCPUID},\n\t\t{Name: \"asimrdm\", Feature: &ARM64.HasASIMDRDM},\n\t\t{Name: \"fcma\", Feature: &ARM64.HasFCMA},\n\t\t{Name: \"dcpop\", Feature: &ARM64.HasDCPOP},\n\t\t{Name: \"asimddp\", Feature: &ARM64.HasASIMDDP},\n\t\t{Name: \"asimdfhm\", Feature: &ARM64.HasASIMDFHM},\n\t\t{Name: \"dit\", Feature: &ARM64.HasDIT},\n\t\t{Name: \"i8mm\", Feature: &ARM64.HasI8MM},\n\t}\n}\n\nfunc archInit() {\n\tswitch runtime.GOOS {\n\tcase \"freebsd\":\n\t\treadARM64Registers()\n\tcase \"linux\", \"netbsd\", \"openbsd\", \"windows\":\n\t\tdoinit()\n\tdefault:\n\t\t// Many platforms don't seem to allow reading these registers.\n\t\tsetMinimalFeatures()\n\t}\n}\n\n// setMinimalFeatures fakes the minimal ARM64 features expected by\n// TestARM64minimalFeatures.\nfunc setMinimalFeatures() {\n\tARM64.HasASIMD = true\n\tARM64.HasFP = true\n}\n\nfunc readARM64Registers() {\n\tInitialized = true\n\n\tparseARM64SystemRegisters(getisar0(), getisar1(), getpfr0())\n}\n\nfunc parseARM64SystemRegisters(isar0, isar1, pfr0 uint64) {\n\t// ID_AA64ISAR0_EL1\n\tswitch extractBits(isar0, 4, 7) {\n\tcase 1:\n\t\tARM64.HasAES = true\n\tcase 2:\n\t\tARM64.HasAES = true\n\t\tARM64.HasPMULL = true\n\t}\n\n\tswitch extractBits(isar0, 8, 11) {\n\tcase 1:\n\t\tARM64.HasSHA1 = true\n\t}\n\n\tswitch extractBits(isar0, 12, 15) {\n\tcase 1:\n\t\tARM64.HasSHA2 = true\n\tcase 2:\n\t\tARM64.HasSHA2 = true\n\t\tARM64.HasSHA512 = true\n\t}\n\n\tswitch extractBits(isar0, 16, 19) {\n\tcase 1:\n\t\tARM64.HasCRC32 = true\n\t}\n\n\tswitch extractBits(isar0, 20, 23) {\n\tcase 2:\n\t\tARM64.HasATOMICS = true\n\t}\n\n\tswitch extractBits(isar0, 28, 31) {\n\tcase 1:\n\t\tARM64.HasASIMDRDM = true\n\t}\n\n\tswitch extractBits(isar0, 32, 35) {\n\tcase 1:\n\t\tARM64.HasSHA3 = true\n\t}\n\n\tswitch extractBits(isar0, 36, 39) {\n\tcase 1:\n\t\tARM64.HasSM3 = true\n\t}\n\n\tswitch extractBits(isar0, 40, 43) {\n\tcase 1:\n\t\tARM64.HasSM4 = true\n\t}\n\n\tswitch extractBits(isar0, 44, 47) {\n\tcase 1:\n\t\tARM64.HasASIMDDP = true\n\t}\n\n\t// ID_AA64ISAR1_EL1\n\tswitch extractBits(isar1, 0, 3) {\n\tcase 1:\n\t\tARM64.HasDCPOP = true\n\t}\n\n\tswitch extractBits(isar1, 12, 15) {\n\tcase 1:\n\t\tARM64.HasJSCVT = true\n\t}\n\n\tswitch extractBits(isar1, 16, 19) {\n\tcase 1:\n\t\tARM64.HasFCMA = true\n\t}\n\n\tswitch extractBits(isar1, 20, 23) {\n\tcase 1:\n\t\tARM64.HasLRCPC = true\n\t}\n\n\tswitch extractBits(isar1, 52, 55) {\n\tcase 1:\n\t\tARM64.HasI8MM = true\n\t}\n\n\t// ID_AA64PFR0_EL1\n\tswitch extractBits(pfr0, 16, 19) {\n\tcase 0:\n\t\tARM64.HasFP = true\n\tcase 1:\n\t\tARM64.HasFP = true\n\t\tARM64.HasFPHP = true\n\t}\n\n\tswitch extractBits(pfr0, 20, 23) {\n\tcase 0:\n\t\tARM64.HasASIMD = true\n\tcase 1:\n\t\tARM64.HasASIMD = true\n\t\tARM64.HasASIMDHP = true\n\t}\n\n\tswitch extractBits(pfr0, 32, 35) {\n\tcase 1:\n\t\tARM64.HasSVE = true\n\n\t\tparseARM64SVERegister(getzfr0())\n\t}\n\n\tswitch extractBits(pfr0, 48, 51) {\n\tcase 1:\n\t\tARM64.HasDIT = true\n\t}\n}\n\nfunc parseARM64SVERegister(zfr0 uint64) {\n\tswitch extractBits(zfr0, 0, 3) {\n\tcase 1:\n\t\tARM64.HasSVE2 = true\n\t}\n}\n\nfunc extractBits(data uint64, start, end uint) uint {\n\treturn (uint)(data>>start) & ((1 << (end - start + 1)) - 1)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/cpu/cpu_arm64.s",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gc\n\n#include \"textflag.h\"\n\n// func getisar0() uint64\nTEXT ·getisar0(SB),NOSPLIT,$0-8\n\t// get Instruction Set Attributes 0 into x0\n\tMRS\tID_AA64ISAR0_EL1, R0\n\tMOVD\tR0, ret+0(FP)\n\tRET\n\n// func getisar1() uint64\nTEXT ·getisar1(SB),NOSPLIT,$0-8\n\t// get Instruction Set Attributes 1 into x0\n\tMRS\tID_AA64ISAR1_EL1, R0\n\tMOVD\tR0, ret+0(FP)\n\tRET\n\n// func getpfr0() uint64\nTEXT ·getpfr0(SB),NOSPLIT,$0-8\n\t// get Processor Feature Register 0 into x0\n\tMRS\tID_AA64PFR0_EL1, R0\n\tMOVD\tR0, ret+0(FP)\n\tRET\n\n// func getzfr0() uint64\nTEXT ·getzfr0(SB),NOSPLIT,$0-8\n\t// get SVE Feature Register 0 into x0\n\tMRS\tID_AA64ZFR0_EL1, R0\n\tMOVD\tR0, ret+0(FP)\n\tRET\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/cpu/cpu_darwin_x86.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build darwin && amd64 && gc\n\npackage cpu\n\n// darwinSupportsAVX512 checks Darwin kernel for AVX512 support via sysctl\n// call (see issue 43089). It also restricts AVX512 support for Darwin to\n// kernel version 21.3.0 (MacOS 12.2.0) or later (see issue 49233).\n//\n// Background:\n// Darwin implements a special mechanism to economize on thread state when\n// AVX512 specific registers are not in use. This scheme minimizes state when\n// preempting threads that haven't yet used any AVX512 instructions, but adds\n// special requirements to check for AVX512 hardware support at runtime (e.g.\n// via sysctl call or commpage inspection). See issue 43089 and link below for\n// full background:\n// https://github.com/apple-oss-distributions/xnu/blob/xnu-11215.1.10/osfmk/i386/fpu.c#L214-L240\n//\n// Additionally, all versions of the Darwin kernel from 19.6.0 through 21.2.0\n// (corresponding to MacOS 10.15.6 - 12.1) have a bug that can cause corruption\n// of the AVX512 mask registers (K0-K7) upon signal return. For this reason\n// AVX512 is considered unsafe to use on Darwin for kernel versions prior to\n// 21.3.0, where a fix has been confirmed. See issue 49233 for full background.\nfunc darwinSupportsAVX512() bool {\n\treturn darwinSysctlEnabled([]byte(\"hw.optional.avx512f\\x00\")) && darwinKernelVersionCheck(21, 3, 0)\n}\n\n// Ensure Darwin kernel version is at least major.minor.patch, avoiding dependencies\nfunc darwinKernelVersionCheck(major, minor, patch int) bool {\n\tvar release [256]byte\n\terr := darwinOSRelease(&release)\n\tif err != nil {\n\t\treturn false\n\t}\n\n\tvar mmp [3]int\n\tc := 0\nLoop:\n\tfor _, b := range release[:] {\n\t\tswitch {\n\t\tcase b >= '0' && b <= '9':\n\t\t\tmmp[c] = 10*mmp[c] + int(b-'0')\n\t\tcase b == '.':\n\t\t\tc++\n\t\t\tif c > 2 {\n\t\t\t\treturn false\n\t\t\t}\n\t\tcase b == 0:\n\t\t\tbreak Loop\n\t\tdefault:\n\t\t\treturn false\n\t\t}\n\t}\n\tif c != 2 {\n\t\treturn false\n\t}\n\treturn mmp[0] > major || mmp[0] == major && (mmp[1] > minor || mmp[1] == minor && mmp[2] >= patch)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/cpu/cpu_gc_arm64.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gc\n\npackage cpu\n\nfunc getisar0() uint64\nfunc getisar1() uint64\nfunc getpfr0() uint64\nfunc getzfr0() uint64\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/cpu/cpu_gc_s390x.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gc\n\npackage cpu\n\n// haveAsmFunctions reports whether the other functions in this file can\n// be safely called.\nfunc haveAsmFunctions() bool { return true }\n\n// The following feature detection functions are defined in cpu_s390x.s.\n// They are likely to be expensive to call so the results should be cached.\nfunc stfle() facilityList\nfunc kmQuery() queryResult\nfunc kmcQuery() queryResult\nfunc kmctrQuery() queryResult\nfunc kmaQuery() queryResult\nfunc kimdQuery() queryResult\nfunc klmdQuery() queryResult\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/cpu/cpu_gc_x86.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (386 || amd64 || amd64p32) && gc\n\npackage cpu\n\n// cpuid is implemented in cpu_gc_x86.s for gc compiler\n// and in cpu_gccgo.c for gccgo.\nfunc cpuid(eaxArg, ecxArg uint32) (eax, ebx, ecx, edx uint32)\n\n// xgetbv with ecx = 0 is implemented in cpu_gc_x86.s for gc compiler\n// and in cpu_gccgo.c for gccgo.\nfunc xgetbv() (eax, edx uint32)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/cpu/cpu_gc_x86.s",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (386 || amd64 || amd64p32) && gc\n\n#include \"textflag.h\"\n\n// func cpuid(eaxArg, ecxArg uint32) (eax, ebx, ecx, edx uint32)\nTEXT ·cpuid(SB), NOSPLIT, $0-24\n\tMOVL eaxArg+0(FP), AX\n\tMOVL ecxArg+4(FP), CX\n\tCPUID\n\tMOVL AX, eax+8(FP)\n\tMOVL BX, ebx+12(FP)\n\tMOVL CX, ecx+16(FP)\n\tMOVL DX, edx+20(FP)\n\tRET\n\n// func xgetbv() (eax, edx uint32)\nTEXT ·xgetbv(SB), NOSPLIT, $0-8\n\tMOVL $0, CX\n\tXGETBV\n\tMOVL AX, eax+0(FP)\n\tMOVL DX, edx+4(FP)\n\tRET\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/cpu/cpu_gccgo_arm64.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gccgo\n\npackage cpu\n\nfunc getisar0() uint64 { return 0 }\nfunc getisar1() uint64 { return 0 }\nfunc getpfr0() uint64  { return 0 }\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/cpu/cpu_gccgo_s390x.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gccgo\n\npackage cpu\n\n// haveAsmFunctions reports whether the other functions in this file can\n// be safely called.\nfunc haveAsmFunctions() bool { return false }\n\n// TODO(mundaym): the following feature detection functions are currently\n// stubs. See https://golang.org/cl/162887 for how to fix this.\n// They are likely to be expensive to call so the results should be cached.\nfunc stfle() facilityList     { panic(\"not implemented for gccgo\") }\nfunc kmQuery() queryResult    { panic(\"not implemented for gccgo\") }\nfunc kmcQuery() queryResult   { panic(\"not implemented for gccgo\") }\nfunc kmctrQuery() queryResult { panic(\"not implemented for gccgo\") }\nfunc kmaQuery() queryResult   { panic(\"not implemented for gccgo\") }\nfunc kimdQuery() queryResult  { panic(\"not implemented for gccgo\") }\nfunc klmdQuery() queryResult  { panic(\"not implemented for gccgo\") }\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/cpu/cpu_gccgo_x86.c",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (386 || amd64 || amd64p32) && gccgo\n\n#include <cpuid.h>\n#include <stdint.h>\n#include <x86intrin.h>\n\n// Need to wrap __get_cpuid_count because it's declared as static.\nint\ngccgoGetCpuidCount(uint32_t leaf, uint32_t subleaf,\n                   uint32_t *eax, uint32_t *ebx,\n                   uint32_t *ecx, uint32_t *edx)\n{\n\treturn __get_cpuid_count(leaf, subleaf, eax, ebx, ecx, edx);\n}\n\n#pragma GCC diagnostic ignored \"-Wunknown-pragmas\"\n#pragma GCC push_options\n#pragma GCC target(\"xsave\")\n#pragma clang attribute push (__attribute__((target(\"xsave\"))), apply_to=function)\n\n// xgetbv reads the contents of an XCR (Extended Control Register)\n// specified in the ECX register into registers EDX:EAX.\n// Currently, the only supported value for XCR is 0.\nvoid\ngccgoXgetbv(uint32_t *eax, uint32_t *edx)\n{\n\tuint64_t v = _xgetbv(0);\n\t*eax = v & 0xffffffff;\n\t*edx = v >> 32;\n}\n\n#pragma clang attribute pop\n#pragma GCC pop_options\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/cpu/cpu_gccgo_x86.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (386 || amd64 || amd64p32) && gccgo\n\npackage cpu\n\n//extern gccgoGetCpuidCount\nfunc gccgoGetCpuidCount(eaxArg, ecxArg uint32, eax, ebx, ecx, edx *uint32)\n\nfunc cpuid(eaxArg, ecxArg uint32) (eax, ebx, ecx, edx uint32) {\n\tvar a, b, c, d uint32\n\tgccgoGetCpuidCount(eaxArg, ecxArg, &a, &b, &c, &d)\n\treturn a, b, c, d\n}\n\n//extern gccgoXgetbv\nfunc gccgoXgetbv(eax, edx *uint32)\n\nfunc xgetbv() (eax, edx uint32) {\n\tvar a, d uint32\n\tgccgoXgetbv(&a, &d)\n\treturn a, d\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/cpu/cpu_linux.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build !386 && !amd64 && !amd64p32 && !arm64\n\npackage cpu\n\nfunc archInit() {\n\tif err := readHWCAP(); err != nil {\n\t\treturn\n\t}\n\tdoinit()\n\tInitialized = true\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/cpu/cpu_linux_arm.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage cpu\n\nfunc doinit() {\n\tARM.HasSWP = isSet(hwCap, hwcap_SWP)\n\tARM.HasHALF = isSet(hwCap, hwcap_HALF)\n\tARM.HasTHUMB = isSet(hwCap, hwcap_THUMB)\n\tARM.Has26BIT = isSet(hwCap, hwcap_26BIT)\n\tARM.HasFASTMUL = isSet(hwCap, hwcap_FAST_MULT)\n\tARM.HasFPA = isSet(hwCap, hwcap_FPA)\n\tARM.HasVFP = isSet(hwCap, hwcap_VFP)\n\tARM.HasEDSP = isSet(hwCap, hwcap_EDSP)\n\tARM.HasJAVA = isSet(hwCap, hwcap_JAVA)\n\tARM.HasIWMMXT = isSet(hwCap, hwcap_IWMMXT)\n\tARM.HasCRUNCH = isSet(hwCap, hwcap_CRUNCH)\n\tARM.HasTHUMBEE = isSet(hwCap, hwcap_THUMBEE)\n\tARM.HasNEON = isSet(hwCap, hwcap_NEON)\n\tARM.HasVFPv3 = isSet(hwCap, hwcap_VFPv3)\n\tARM.HasVFPv3D16 = isSet(hwCap, hwcap_VFPv3D16)\n\tARM.HasTLS = isSet(hwCap, hwcap_TLS)\n\tARM.HasVFPv4 = isSet(hwCap, hwcap_VFPv4)\n\tARM.HasIDIVA = isSet(hwCap, hwcap_IDIVA)\n\tARM.HasIDIVT = isSet(hwCap, hwcap_IDIVT)\n\tARM.HasVFPD32 = isSet(hwCap, hwcap_VFPD32)\n\tARM.HasLPAE = isSet(hwCap, hwcap_LPAE)\n\tARM.HasEVTSTRM = isSet(hwCap, hwcap_EVTSTRM)\n\tARM.HasAES = isSet(hwCap2, hwcap2_AES)\n\tARM.HasPMULL = isSet(hwCap2, hwcap2_PMULL)\n\tARM.HasSHA1 = isSet(hwCap2, hwcap2_SHA1)\n\tARM.HasSHA2 = isSet(hwCap2, hwcap2_SHA2)\n\tARM.HasCRC32 = isSet(hwCap2, hwcap2_CRC32)\n}\n\nfunc isSet(hwc uint, value uint) bool {\n\treturn hwc&value != 0\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/cpu/cpu_linux_arm64.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage cpu\n\nimport (\n\t\"strings\"\n\t\"syscall\"\n)\n\n// HWCAP/HWCAP2 bits. These are exposed by Linux.\nconst (\n\thwcap_FP       = 1 << 0\n\thwcap_ASIMD    = 1 << 1\n\thwcap_EVTSTRM  = 1 << 2\n\thwcap_AES      = 1 << 3\n\thwcap_PMULL    = 1 << 4\n\thwcap_SHA1     = 1 << 5\n\thwcap_SHA2     = 1 << 6\n\thwcap_CRC32    = 1 << 7\n\thwcap_ATOMICS  = 1 << 8\n\thwcap_FPHP     = 1 << 9\n\thwcap_ASIMDHP  = 1 << 10\n\thwcap_CPUID    = 1 << 11\n\thwcap_ASIMDRDM = 1 << 12\n\thwcap_JSCVT    = 1 << 13\n\thwcap_FCMA     = 1 << 14\n\thwcap_LRCPC    = 1 << 15\n\thwcap_DCPOP    = 1 << 16\n\thwcap_SHA3     = 1 << 17\n\thwcap_SM3      = 1 << 18\n\thwcap_SM4      = 1 << 19\n\thwcap_ASIMDDP  = 1 << 20\n\thwcap_SHA512   = 1 << 21\n\thwcap_SVE      = 1 << 22\n\thwcap_ASIMDFHM = 1 << 23\n\thwcap_DIT      = 1 << 24\n\n\thwcap2_SVE2 = 1 << 1\n\thwcap2_I8MM = 1 << 13\n)\n\n// linuxKernelCanEmulateCPUID reports whether we're running\n// on Linux 4.11+. Ideally we'd like to ask the question about\n// whether the current kernel contains\n// https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=77c97b4ee21290f5f083173d957843b615abbff2\n// but the version number will have to do.\nfunc linuxKernelCanEmulateCPUID() bool {\n\tvar un syscall.Utsname\n\tsyscall.Uname(&un)\n\tvar sb strings.Builder\n\tfor _, b := range un.Release[:] {\n\t\tif b == 0 {\n\t\t\tbreak\n\t\t}\n\t\tsb.WriteByte(byte(b))\n\t}\n\tmajor, minor, _, ok := parseRelease(sb.String())\n\treturn ok && (major > 4 || major == 4 && minor >= 11)\n}\n\nfunc doinit() {\n\tif err := readHWCAP(); err != nil {\n\t\t// We failed to read /proc/self/auxv. This can happen if the binary has\n\t\t// been given extra capabilities(7) with /bin/setcap.\n\t\t//\n\t\t// When this happens, we have two options. If the Linux kernel is new\n\t\t// enough (4.11+), we can read the arm64 registers directly which'll\n\t\t// trap into the kernel and then return back to userspace.\n\t\t//\n\t\t// But on older kernels, such as Linux 4.4.180 as used on many Synology\n\t\t// devices, calling readARM64Registers (specifically getisar0) will\n\t\t// cause a SIGILL and we'll die. So for older kernels, parse /proc/cpuinfo\n\t\t// instead.\n\t\t//\n\t\t// See golang/go#57336.\n\t\tif linuxKernelCanEmulateCPUID() {\n\t\t\treadARM64Registers()\n\t\t} else {\n\t\t\treadLinuxProcCPUInfo()\n\t\t}\n\t\treturn\n\t}\n\n\t// HWCAP feature bits\n\tARM64.HasFP = isSet(hwCap, hwcap_FP)\n\tARM64.HasASIMD = isSet(hwCap, hwcap_ASIMD)\n\tARM64.HasEVTSTRM = isSet(hwCap, hwcap_EVTSTRM)\n\tARM64.HasAES = isSet(hwCap, hwcap_AES)\n\tARM64.HasPMULL = isSet(hwCap, hwcap_PMULL)\n\tARM64.HasSHA1 = isSet(hwCap, hwcap_SHA1)\n\tARM64.HasSHA2 = isSet(hwCap, hwcap_SHA2)\n\tARM64.HasCRC32 = isSet(hwCap, hwcap_CRC32)\n\tARM64.HasATOMICS = isSet(hwCap, hwcap_ATOMICS)\n\tARM64.HasFPHP = isSet(hwCap, hwcap_FPHP)\n\tARM64.HasASIMDHP = isSet(hwCap, hwcap_ASIMDHP)\n\tARM64.HasCPUID = isSet(hwCap, hwcap_CPUID)\n\tARM64.HasASIMDRDM = isSet(hwCap, hwcap_ASIMDRDM)\n\tARM64.HasJSCVT = isSet(hwCap, hwcap_JSCVT)\n\tARM64.HasFCMA = isSet(hwCap, hwcap_FCMA)\n\tARM64.HasLRCPC = isSet(hwCap, hwcap_LRCPC)\n\tARM64.HasDCPOP = isSet(hwCap, hwcap_DCPOP)\n\tARM64.HasSHA3 = isSet(hwCap, hwcap_SHA3)\n\tARM64.HasSM3 = isSet(hwCap, hwcap_SM3)\n\tARM64.HasSM4 = isSet(hwCap, hwcap_SM4)\n\tARM64.HasASIMDDP = isSet(hwCap, hwcap_ASIMDDP)\n\tARM64.HasSHA512 = isSet(hwCap, hwcap_SHA512)\n\tARM64.HasSVE = isSet(hwCap, hwcap_SVE)\n\tARM64.HasASIMDFHM = isSet(hwCap, hwcap_ASIMDFHM)\n\tARM64.HasDIT = isSet(hwCap, hwcap_DIT)\n\n\t// HWCAP2 feature bits\n\tARM64.HasSVE2 = isSet(hwCap2, hwcap2_SVE2)\n\tARM64.HasI8MM = isSet(hwCap2, hwcap2_I8MM)\n}\n\nfunc isSet(hwc uint, value uint) bool {\n\treturn hwc&value != 0\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/cpu/cpu_linux_loong64.go",
    "content": "// Copyright 2025 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage cpu\n\n// HWCAP bits. These are exposed by the Linux kernel.\nconst (\n\thwcap_LOONGARCH_LSX  = 1 << 4\n\thwcap_LOONGARCH_LASX = 1 << 5\n)\n\nfunc doinit() {\n\t// TODO: Features that require kernel support like LSX and LASX can\n\t// be detected here once needed in std library or by the compiler.\n\tLoong64.HasLSX = hwcIsSet(hwCap, hwcap_LOONGARCH_LSX)\n\tLoong64.HasLASX = hwcIsSet(hwCap, hwcap_LOONGARCH_LASX)\n}\n\nfunc hwcIsSet(hwc uint, val uint) bool {\n\treturn hwc&val != 0\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/cpu/cpu_linux_mips64x.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && (mips64 || mips64le)\n\npackage cpu\n\n// HWCAP bits. These are exposed by the Linux kernel 5.4.\nconst (\n\t// CPU features\n\thwcap_MIPS_MSA = 1 << 1\n)\n\nfunc doinit() {\n\t// HWCAP feature bits\n\tMIPS64X.HasMSA = isSet(hwCap, hwcap_MIPS_MSA)\n}\n\nfunc isSet(hwc uint, value uint) bool {\n\treturn hwc&value != 0\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/cpu/cpu_linux_noinit.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && !arm && !arm64 && !loong64 && !mips64 && !mips64le && !ppc64 && !ppc64le && !s390x && !riscv64\n\npackage cpu\n\nfunc doinit() {}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/cpu/cpu_linux_ppc64x.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && (ppc64 || ppc64le)\n\npackage cpu\n\n// HWCAP/HWCAP2 bits. These are exposed by the kernel.\nconst (\n\t// ISA Level\n\t_PPC_FEATURE2_ARCH_2_07 = 0x80000000\n\t_PPC_FEATURE2_ARCH_3_00 = 0x00800000\n\n\t// CPU features\n\t_PPC_FEATURE2_DARN = 0x00200000\n\t_PPC_FEATURE2_SCV  = 0x00100000\n)\n\nfunc doinit() {\n\t// HWCAP2 feature bits\n\tPPC64.IsPOWER8 = isSet(hwCap2, _PPC_FEATURE2_ARCH_2_07)\n\tPPC64.IsPOWER9 = isSet(hwCap2, _PPC_FEATURE2_ARCH_3_00)\n\tPPC64.HasDARN = isSet(hwCap2, _PPC_FEATURE2_DARN)\n\tPPC64.HasSCV = isSet(hwCap2, _PPC_FEATURE2_SCV)\n}\n\nfunc isSet(hwc uint, value uint) bool {\n\treturn hwc&value != 0\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/cpu/cpu_linux_riscv64.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage cpu\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// RISC-V extension discovery code for Linux. The approach here is to first try the riscv_hwprobe\n// syscall falling back to HWCAP to check for the C extension if riscv_hwprobe is not available.\n//\n// A note on detection of the Vector extension using HWCAP.\n//\n// Support for the Vector extension version 1.0 was added to the Linux kernel in release 6.5.\n// Support for the riscv_hwprobe syscall was added in 6.4. It follows that if the riscv_hwprobe\n// syscall is not available then neither is the Vector extension (which needs kernel support).\n// The riscv_hwprobe syscall should then be all we need to detect the Vector extension.\n// However, some RISC-V board manufacturers ship boards with an older kernel on top of which\n// they have back-ported various versions of the Vector extension patches but not the riscv_hwprobe\n// patches. These kernels advertise support for the Vector extension using HWCAP. Falling\n// back to HWCAP to detect the Vector extension, if riscv_hwprobe is not available, or simply not\n// bothering with riscv_hwprobe at all and just using HWCAP may then seem like an attractive option.\n//\n// Unfortunately, simply checking the 'V' bit in AT_HWCAP will not work as this bit is used by\n// RISC-V board and cloud instance providers to mean different things. The Lichee Pi 4A board\n// and the Scaleway RV1 cloud instances use the 'V' bit to advertise their support for the unratified\n// 0.7.1 version of the Vector Specification. The Banana Pi BPI-F3 and the CanMV-K230 board use\n// it to advertise support for 1.0 of the Vector extension. Versions 0.7.1 and 1.0 of the Vector\n// extension are binary incompatible. HWCAP can then not be used in isolation to populate the\n// HasV field as this field indicates that the underlying CPU is compatible with RVV 1.0.\n//\n// There is a way at runtime to distinguish between versions 0.7.1 and 1.0 of the Vector\n// specification by issuing a RVV 1.0 vsetvli instruction and checking the vill bit of the vtype\n// register. This check would allow us to safely detect version 1.0 of the Vector extension\n// with HWCAP, if riscv_hwprobe were not available. However, the check cannot\n// be added until the assembler supports the Vector instructions.\n//\n// Note the riscv_hwprobe syscall does not suffer from these ambiguities by design as all of the\n// extensions it advertises support for are explicitly versioned. It's also worth noting that\n// the riscv_hwprobe syscall is the only way to detect multi-letter RISC-V extensions, e.g., Zba.\n// These cannot be detected using HWCAP and so riscv_hwprobe must be used to detect the majority\n// of RISC-V extensions.\n//\n// Please see https://docs.kernel.org/arch/riscv/hwprobe.html for more information.\n\n// golang.org/x/sys/cpu is not allowed to depend on golang.org/x/sys/unix so we must\n// reproduce the constants, types and functions needed to make the riscv_hwprobe syscall\n// here.\n\nconst (\n\t// Copied from golang.org/x/sys/unix/ztypes_linux_riscv64.go.\n\triscv_HWPROBE_KEY_IMA_EXT_0   = 0x4\n\triscv_HWPROBE_IMA_C           = 0x2\n\triscv_HWPROBE_IMA_V           = 0x4\n\triscv_HWPROBE_EXT_ZBA         = 0x8\n\triscv_HWPROBE_EXT_ZBB         = 0x10\n\triscv_HWPROBE_EXT_ZBS         = 0x20\n\triscv_HWPROBE_EXT_ZVBB        = 0x20000\n\triscv_HWPROBE_EXT_ZVBC        = 0x40000\n\triscv_HWPROBE_EXT_ZVKB        = 0x80000\n\triscv_HWPROBE_EXT_ZVKG        = 0x100000\n\triscv_HWPROBE_EXT_ZVKNED      = 0x200000\n\triscv_HWPROBE_EXT_ZVKNHB      = 0x800000\n\triscv_HWPROBE_EXT_ZVKSED      = 0x1000000\n\triscv_HWPROBE_EXT_ZVKSH       = 0x2000000\n\triscv_HWPROBE_EXT_ZVKT        = 0x4000000\n\triscv_HWPROBE_KEY_CPUPERF_0   = 0x5\n\triscv_HWPROBE_MISALIGNED_FAST = 0x3\n\triscv_HWPROBE_MISALIGNED_MASK = 0x7\n)\n\nconst (\n\t// sys_RISCV_HWPROBE is copied from golang.org/x/sys/unix/zsysnum_linux_riscv64.go.\n\tsys_RISCV_HWPROBE = 258\n)\n\n// riscvHWProbePairs is copied from golang.org/x/sys/unix/ztypes_linux_riscv64.go.\ntype riscvHWProbePairs struct {\n\tkey   int64\n\tvalue uint64\n}\n\nconst (\n\t// CPU features\n\thwcap_RISCV_ISA_C = 1 << ('C' - 'A')\n)\n\nfunc doinit() {\n\t// A slice of key/value pair structures is passed to the RISCVHWProbe syscall. The key\n\t// field should be initialised with one of the key constants defined above, e.g.,\n\t// RISCV_HWPROBE_KEY_IMA_EXT_0. The syscall will set the value field to the appropriate value.\n\t// If the kernel does not recognise a key it will set the key field to -1 and the value field to 0.\n\n\tpairs := []riscvHWProbePairs{\n\t\t{riscv_HWPROBE_KEY_IMA_EXT_0, 0},\n\t\t{riscv_HWPROBE_KEY_CPUPERF_0, 0},\n\t}\n\n\t// This call only indicates that extensions are supported if they are implemented on all cores.\n\tif riscvHWProbe(pairs, 0) {\n\t\tif pairs[0].key != -1 {\n\t\t\tv := uint(pairs[0].value)\n\t\t\tRISCV64.HasC = isSet(v, riscv_HWPROBE_IMA_C)\n\t\t\tRISCV64.HasV = isSet(v, riscv_HWPROBE_IMA_V)\n\t\t\tRISCV64.HasZba = isSet(v, riscv_HWPROBE_EXT_ZBA)\n\t\t\tRISCV64.HasZbb = isSet(v, riscv_HWPROBE_EXT_ZBB)\n\t\t\tRISCV64.HasZbs = isSet(v, riscv_HWPROBE_EXT_ZBS)\n\t\t\tRISCV64.HasZvbb = isSet(v, riscv_HWPROBE_EXT_ZVBB)\n\t\t\tRISCV64.HasZvbc = isSet(v, riscv_HWPROBE_EXT_ZVBC)\n\t\t\tRISCV64.HasZvkb = isSet(v, riscv_HWPROBE_EXT_ZVKB)\n\t\t\tRISCV64.HasZvkg = isSet(v, riscv_HWPROBE_EXT_ZVKG)\n\t\t\tRISCV64.HasZvkt = isSet(v, riscv_HWPROBE_EXT_ZVKT)\n\t\t\t// Cryptography shorthand extensions\n\t\t\tRISCV64.HasZvkn = isSet(v, riscv_HWPROBE_EXT_ZVKNED) &&\n\t\t\t\tisSet(v, riscv_HWPROBE_EXT_ZVKNHB) && RISCV64.HasZvkb && RISCV64.HasZvkt\n\t\t\tRISCV64.HasZvknc = RISCV64.HasZvkn && RISCV64.HasZvbc\n\t\t\tRISCV64.HasZvkng = RISCV64.HasZvkn && RISCV64.HasZvkg\n\t\t\tRISCV64.HasZvks = isSet(v, riscv_HWPROBE_EXT_ZVKSED) &&\n\t\t\t\tisSet(v, riscv_HWPROBE_EXT_ZVKSH) && RISCV64.HasZvkb && RISCV64.HasZvkt\n\t\t\tRISCV64.HasZvksc = RISCV64.HasZvks && RISCV64.HasZvbc\n\t\t\tRISCV64.HasZvksg = RISCV64.HasZvks && RISCV64.HasZvkg\n\t\t}\n\t\tif pairs[1].key != -1 {\n\t\t\tv := pairs[1].value & riscv_HWPROBE_MISALIGNED_MASK\n\t\t\tRISCV64.HasFastMisaligned = v == riscv_HWPROBE_MISALIGNED_FAST\n\t\t}\n\t}\n\n\t// Let's double check with HWCAP if the C extension does not appear to be supported.\n\t// This may happen if we're running on a kernel older than 6.4.\n\n\tif !RISCV64.HasC {\n\t\tRISCV64.HasC = isSet(hwCap, hwcap_RISCV_ISA_C)\n\t}\n}\n\nfunc isSet(hwc uint, value uint) bool {\n\treturn hwc&value != 0\n}\n\n// riscvHWProbe is a simplified version of the generated wrapper function found in\n// golang.org/x/sys/unix/zsyscall_linux_riscv64.go. We simplify it by removing the\n// cpuCount and cpus parameters which we do not need. We always want to pass 0 for\n// these parameters here so the kernel only reports the extensions that are present\n// on all cores.\nfunc riscvHWProbe(pairs []riscvHWProbePairs, flags uint) bool {\n\tvar _zero uintptr\n\tvar p0 unsafe.Pointer\n\tif len(pairs) > 0 {\n\t\tp0 = unsafe.Pointer(&pairs[0])\n\t} else {\n\t\tp0 = unsafe.Pointer(&_zero)\n\t}\n\n\t_, _, e1 := syscall.Syscall6(sys_RISCV_HWPROBE, uintptr(p0), uintptr(len(pairs)), uintptr(0), uintptr(0), uintptr(flags), 0)\n\treturn e1 == 0\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/cpu/cpu_linux_s390x.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage cpu\n\nconst (\n\t// bit mask values from /usr/include/bits/hwcap.h\n\thwcap_ZARCH  = 2\n\thwcap_STFLE  = 4\n\thwcap_MSA    = 8\n\thwcap_LDISP  = 16\n\thwcap_EIMM   = 32\n\thwcap_DFP    = 64\n\thwcap_ETF3EH = 256\n\thwcap_VX     = 2048\n\thwcap_VXE    = 8192\n)\n\nfunc initS390Xbase() {\n\t// test HWCAP bit vector\n\thas := func(featureMask uint) bool {\n\t\treturn hwCap&featureMask == featureMask\n\t}\n\n\t// mandatory\n\tS390X.HasZARCH = has(hwcap_ZARCH)\n\n\t// optional\n\tS390X.HasSTFLE = has(hwcap_STFLE)\n\tS390X.HasLDISP = has(hwcap_LDISP)\n\tS390X.HasEIMM = has(hwcap_EIMM)\n\tS390X.HasETF3EH = has(hwcap_ETF3EH)\n\tS390X.HasDFP = has(hwcap_DFP)\n\tS390X.HasMSA = has(hwcap_MSA)\n\tS390X.HasVX = has(hwcap_VX)\n\tif S390X.HasVX {\n\t\tS390X.HasVXE = has(hwcap_VXE)\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/cpu/cpu_loong64.go",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build loong64\n\npackage cpu\n\nconst cacheLineSize = 64\n\n// Bit fields for CPUCFG registers, Related reference documents:\n// https://loongson.github.io/LoongArch-Documentation/LoongArch-Vol1-EN.html#_cpucfg\nconst (\n\t// CPUCFG1 bits\n\tcpucfg1_CRC32 = 1 << 25\n\n\t// CPUCFG2 bits\n\tcpucfg2_LAM_BH = 1 << 27\n\tcpucfg2_LAMCAS = 1 << 28\n)\n\nfunc initOptions() {\n\toptions = []option{\n\t\t{Name: \"lsx\", Feature: &Loong64.HasLSX},\n\t\t{Name: \"lasx\", Feature: &Loong64.HasLASX},\n\t\t{Name: \"crc32\", Feature: &Loong64.HasCRC32},\n\t\t{Name: \"lam_bh\", Feature: &Loong64.HasLAM_BH},\n\t\t{Name: \"lamcas\", Feature: &Loong64.HasLAMCAS},\n\t}\n\n\t// The CPUCFG data on Loong64 only reflects the hardware capabilities,\n\t// not the kernel support status, so features such as LSX and LASX that\n\t// require kernel support cannot be obtained from the CPUCFG data.\n\t//\n\t// These features only require hardware capability support and do not\n\t// require kernel specific support, so they can be obtained directly\n\t// through CPUCFG\n\tcfg1 := get_cpucfg(1)\n\tcfg2 := get_cpucfg(2)\n\n\tLoong64.HasCRC32 = cfgIsSet(cfg1, cpucfg1_CRC32)\n\tLoong64.HasLAMCAS = cfgIsSet(cfg2, cpucfg2_LAMCAS)\n\tLoong64.HasLAM_BH = cfgIsSet(cfg2, cpucfg2_LAM_BH)\n}\n\nfunc get_cpucfg(reg uint32) uint32\n\nfunc cfgIsSet(cfg uint32, val uint32) bool {\n\treturn cfg&val != 0\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/cpu/cpu_loong64.s",
    "content": "// Copyright 2025 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n#include \"textflag.h\"\n\n// func get_cpucfg(reg uint32) uint32\nTEXT ·get_cpucfg(SB), NOSPLIT|NOFRAME, $0\n\tMOVW\treg+0(FP), R5\n\t// CPUCFG R5, R4 = 0x00006ca4\n\tWORD\t$0x00006ca4\n\tMOVW\tR4, ret+8(FP)\n\tRET\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/cpu/cpu_mips64x.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build mips64 || mips64le\n\npackage cpu\n\nconst cacheLineSize = 32\n\nfunc initOptions() {\n\toptions = []option{\n\t\t{Name: \"msa\", Feature: &MIPS64X.HasMSA},\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/cpu/cpu_mipsx.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build mips || mipsle\n\npackage cpu\n\nconst cacheLineSize = 32\n\nfunc initOptions() {}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/cpu/cpu_netbsd_arm64.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage cpu\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// Minimal copy of functionality from x/sys/unix so the cpu package can call\n// sysctl without depending on x/sys/unix.\n\nconst (\n\t_CTL_QUERY = -2\n\n\t_SYSCTL_VERS_1 = 0x1000000\n)\n\nvar _zero uintptr\n\nfunc sysctl(mib []int32, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, errno := syscall.Syscall6(\n\t\tsyscall.SYS___SYSCTL,\n\t\tuintptr(_p0),\n\t\tuintptr(len(mib)),\n\t\tuintptr(unsafe.Pointer(old)),\n\t\tuintptr(unsafe.Pointer(oldlen)),\n\t\tuintptr(unsafe.Pointer(new)),\n\t\tuintptr(newlen))\n\tif errno != 0 {\n\t\treturn errno\n\t}\n\treturn nil\n}\n\ntype sysctlNode struct {\n\tFlags          uint32\n\tNum            int32\n\tName           [32]int8\n\tVer            uint32\n\t__rsvd         uint32\n\tUn             [16]byte\n\t_sysctl_size   [8]byte\n\t_sysctl_func   [8]byte\n\t_sysctl_parent [8]byte\n\t_sysctl_desc   [8]byte\n}\n\nfunc sysctlNodes(mib []int32) ([]sysctlNode, error) {\n\tvar olen uintptr\n\n\t// Get a list of all sysctl nodes below the given MIB by performing\n\t// a sysctl for the given MIB with CTL_QUERY appended.\n\tmib = append(mib, _CTL_QUERY)\n\tqnode := sysctlNode{Flags: _SYSCTL_VERS_1}\n\tqp := (*byte)(unsafe.Pointer(&qnode))\n\tsz := unsafe.Sizeof(qnode)\n\tif err := sysctl(mib, nil, &olen, qp, sz); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Now that we know the size, get the actual nodes.\n\tnodes := make([]sysctlNode, olen/sz)\n\tnp := (*byte)(unsafe.Pointer(&nodes[0]))\n\tif err := sysctl(mib, np, &olen, qp, sz); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn nodes, nil\n}\n\nfunc nametomib(name string) ([]int32, error) {\n\t// Split name into components.\n\tvar parts []string\n\tlast := 0\n\tfor i := 0; i < len(name); i++ {\n\t\tif name[i] == '.' {\n\t\t\tparts = append(parts, name[last:i])\n\t\t\tlast = i + 1\n\t\t}\n\t}\n\tparts = append(parts, name[last:])\n\n\tmib := []int32{}\n\t// Discover the nodes and construct the MIB OID.\n\tfor partno, part := range parts {\n\t\tnodes, err := sysctlNodes(mib)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tfor _, node := range nodes {\n\t\t\tn := make([]byte, 0)\n\t\t\tfor i := range node.Name {\n\t\t\t\tif node.Name[i] != 0 {\n\t\t\t\t\tn = append(n, byte(node.Name[i]))\n\t\t\t\t}\n\t\t\t}\n\t\t\tif string(n) == part {\n\t\t\t\tmib = append(mib, int32(node.Num))\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif len(mib) != partno+1 {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\treturn mib, nil\n}\n\n// aarch64SysctlCPUID is struct aarch64_sysctl_cpu_id from NetBSD's <aarch64/armreg.h>\ntype aarch64SysctlCPUID struct {\n\tmidr      uint64 /* Main ID Register */\n\trevidr    uint64 /* Revision ID Register */\n\tmpidr     uint64 /* Multiprocessor Affinity Register */\n\taa64dfr0  uint64 /* A64 Debug Feature Register 0 */\n\taa64dfr1  uint64 /* A64 Debug Feature Register 1 */\n\taa64isar0 uint64 /* A64 Instruction Set Attribute Register 0 */\n\taa64isar1 uint64 /* A64 Instruction Set Attribute Register 1 */\n\taa64mmfr0 uint64 /* A64 Memory Model Feature Register 0 */\n\taa64mmfr1 uint64 /* A64 Memory Model Feature Register 1 */\n\taa64mmfr2 uint64 /* A64 Memory Model Feature Register 2 */\n\taa64pfr0  uint64 /* A64 Processor Feature Register 0 */\n\taa64pfr1  uint64 /* A64 Processor Feature Register 1 */\n\taa64zfr0  uint64 /* A64 SVE Feature ID Register 0 */\n\tmvfr0     uint32 /* Media and VFP Feature Register 0 */\n\tmvfr1     uint32 /* Media and VFP Feature Register 1 */\n\tmvfr2     uint32 /* Media and VFP Feature Register 2 */\n\tpad       uint32\n\tclidr     uint64 /* Cache Level ID Register */\n\tctr       uint64 /* Cache Type Register */\n}\n\nfunc sysctlCPUID(name string) (*aarch64SysctlCPUID, error) {\n\tmib, err := nametomib(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tout := aarch64SysctlCPUID{}\n\tn := unsafe.Sizeof(out)\n\t_, _, errno := syscall.Syscall6(\n\t\tsyscall.SYS___SYSCTL,\n\t\tuintptr(unsafe.Pointer(&mib[0])),\n\t\tuintptr(len(mib)),\n\t\tuintptr(unsafe.Pointer(&out)),\n\t\tuintptr(unsafe.Pointer(&n)),\n\t\tuintptr(0),\n\t\tuintptr(0))\n\tif errno != 0 {\n\t\treturn nil, errno\n\t}\n\treturn &out, nil\n}\n\nfunc doinit() {\n\tcpuid, err := sysctlCPUID(\"machdep.cpu0.cpu_id\")\n\tif err != nil {\n\t\tsetMinimalFeatures()\n\t\treturn\n\t}\n\tparseARM64SystemRegisters(cpuid.aa64isar0, cpuid.aa64isar1, cpuid.aa64pfr0)\n\n\tInitialized = true\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/cpu/cpu_openbsd_arm64.go",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage cpu\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// Minimal copy of functionality from x/sys/unix so the cpu package can call\n// sysctl without depending on x/sys/unix.\n\nconst (\n\t// From OpenBSD's sys/sysctl.h.\n\t_CTL_MACHDEP = 7\n\n\t// From OpenBSD's machine/cpu.h.\n\t_CPU_ID_AA64ISAR0 = 2\n\t_CPU_ID_AA64ISAR1 = 3\n)\n\n// Implemented in the runtime package (runtime/sys_openbsd3.go)\nfunc syscall_syscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno)\n\n//go:linkname syscall_syscall6 syscall.syscall6\n\nfunc sysctl(mib []uint32, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\t_, _, errno := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(unsafe.Pointer(&mib[0])), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif errno != 0 {\n\t\treturn errno\n\t}\n\treturn nil\n}\n\nvar libc_sysctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sysctl sysctl \"libc.so\"\n\nfunc sysctlUint64(mib []uint32) (uint64, bool) {\n\tvar out uint64\n\tnout := unsafe.Sizeof(out)\n\tif err := sysctl(mib, (*byte)(unsafe.Pointer(&out)), &nout, nil, 0); err != nil {\n\t\treturn 0, false\n\t}\n\treturn out, true\n}\n\nfunc doinit() {\n\tsetMinimalFeatures()\n\n\t// Get ID_AA64ISAR0 and ID_AA64ISAR1 from sysctl.\n\tisar0, ok := sysctlUint64([]uint32{_CTL_MACHDEP, _CPU_ID_AA64ISAR0})\n\tif !ok {\n\t\treturn\n\t}\n\tisar1, ok := sysctlUint64([]uint32{_CTL_MACHDEP, _CPU_ID_AA64ISAR1})\n\tif !ok {\n\t\treturn\n\t}\n\tparseARM64SystemRegisters(isar0, isar1, 0)\n\n\tInitialized = true\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/cpu/cpu_openbsd_arm64.s",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n#include \"textflag.h\"\n\nTEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sysctl(SB)\n\nGLOBL\t·libc_sysctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/cpu/cpu_other_arm.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build !linux && arm\n\npackage cpu\n\nfunc archInit() {}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/cpu/cpu_other_arm64.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build !linux && !netbsd && !openbsd && !windows && arm64\n\npackage cpu\n\nfunc doinit() {}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/cpu/cpu_other_mips64x.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build !linux && (mips64 || mips64le)\n\npackage cpu\n\nfunc archInit() {\n\tInitialized = true\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/cpu/cpu_other_ppc64x.go",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build !aix && !linux && (ppc64 || ppc64le)\n\npackage cpu\n\nfunc archInit() {\n\tPPC64.IsPOWER8 = true\n\tInitialized = true\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/cpu/cpu_other_riscv64.go",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build !linux && riscv64\n\npackage cpu\n\nfunc archInit() {\n\tInitialized = true\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/cpu/cpu_other_x86.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build 386 || amd64p32 || (amd64 && (!darwin || !gc))\n\npackage cpu\n\nfunc darwinSupportsAVX512() bool {\n\tpanic(\"only implemented for gc && amd64 && darwin\")\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/cpu/cpu_ppc64x.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build ppc64 || ppc64le\n\npackage cpu\n\nconst cacheLineSize = 128\n\nfunc initOptions() {\n\toptions = []option{\n\t\t{Name: \"darn\", Feature: &PPC64.HasDARN},\n\t\t{Name: \"scv\", Feature: &PPC64.HasSCV},\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/cpu/cpu_riscv64.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build riscv64\n\npackage cpu\n\nconst cacheLineSize = 64\n\nfunc initOptions() {\n\toptions = []option{\n\t\t{Name: \"fastmisaligned\", Feature: &RISCV64.HasFastMisaligned},\n\t\t{Name: \"c\", Feature: &RISCV64.HasC},\n\t\t{Name: \"v\", Feature: &RISCV64.HasV},\n\t\t{Name: \"zba\", Feature: &RISCV64.HasZba},\n\t\t{Name: \"zbb\", Feature: &RISCV64.HasZbb},\n\t\t{Name: \"zbs\", Feature: &RISCV64.HasZbs},\n\t\t// RISC-V Cryptography Extensions\n\t\t{Name: \"zvbb\", Feature: &RISCV64.HasZvbb},\n\t\t{Name: \"zvbc\", Feature: &RISCV64.HasZvbc},\n\t\t{Name: \"zvkb\", Feature: &RISCV64.HasZvkb},\n\t\t{Name: \"zvkg\", Feature: &RISCV64.HasZvkg},\n\t\t{Name: \"zvkt\", Feature: &RISCV64.HasZvkt},\n\t\t{Name: \"zvkn\", Feature: &RISCV64.HasZvkn},\n\t\t{Name: \"zvknc\", Feature: &RISCV64.HasZvknc},\n\t\t{Name: \"zvkng\", Feature: &RISCV64.HasZvkng},\n\t\t{Name: \"zvks\", Feature: &RISCV64.HasZvks},\n\t\t{Name: \"zvksc\", Feature: &RISCV64.HasZvksc},\n\t\t{Name: \"zvksg\", Feature: &RISCV64.HasZvksg},\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/cpu/cpu_s390x.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage cpu\n\nconst cacheLineSize = 256\n\nfunc initOptions() {\n\toptions = []option{\n\t\t{Name: \"zarch\", Feature: &S390X.HasZARCH, Required: true},\n\t\t{Name: \"stfle\", Feature: &S390X.HasSTFLE, Required: true},\n\t\t{Name: \"ldisp\", Feature: &S390X.HasLDISP, Required: true},\n\t\t{Name: \"eimm\", Feature: &S390X.HasEIMM, Required: true},\n\t\t{Name: \"dfp\", Feature: &S390X.HasDFP},\n\t\t{Name: \"etf3eh\", Feature: &S390X.HasETF3EH},\n\t\t{Name: \"msa\", Feature: &S390X.HasMSA},\n\t\t{Name: \"aes\", Feature: &S390X.HasAES},\n\t\t{Name: \"aescbc\", Feature: &S390X.HasAESCBC},\n\t\t{Name: \"aesctr\", Feature: &S390X.HasAESCTR},\n\t\t{Name: \"aesgcm\", Feature: &S390X.HasAESGCM},\n\t\t{Name: \"ghash\", Feature: &S390X.HasGHASH},\n\t\t{Name: \"sha1\", Feature: &S390X.HasSHA1},\n\t\t{Name: \"sha256\", Feature: &S390X.HasSHA256},\n\t\t{Name: \"sha3\", Feature: &S390X.HasSHA3},\n\t\t{Name: \"sha512\", Feature: &S390X.HasSHA512},\n\t\t{Name: \"vx\", Feature: &S390X.HasVX},\n\t\t{Name: \"vxe\", Feature: &S390X.HasVXE},\n\t}\n}\n\n// bitIsSet reports whether the bit at index is set. The bit index\n// is in big endian order, so bit index 0 is the leftmost bit.\nfunc bitIsSet(bits []uint64, index uint) bool {\n\treturn bits[index/64]&((1<<63)>>(index%64)) != 0\n}\n\n// facility is a bit index for the named facility.\ntype facility uint8\n\nconst (\n\t// mandatory facilities\n\tzarch  facility = 1  // z architecture mode is active\n\tstflef facility = 7  // store-facility-list-extended\n\tldisp  facility = 18 // long-displacement\n\teimm   facility = 21 // extended-immediate\n\n\t// miscellaneous facilities\n\tdfp    facility = 42 // decimal-floating-point\n\tetf3eh facility = 30 // extended-translation 3 enhancement\n\n\t// cryptography facilities\n\tmsa  facility = 17  // message-security-assist\n\tmsa3 facility = 76  // message-security-assist extension 3\n\tmsa4 facility = 77  // message-security-assist extension 4\n\tmsa5 facility = 57  // message-security-assist extension 5\n\tmsa8 facility = 146 // message-security-assist extension 8\n\tmsa9 facility = 155 // message-security-assist extension 9\n\n\t// vector facilities\n\tvx   facility = 129 // vector facility\n\tvxe  facility = 135 // vector-enhancements 1\n\tvxe2 facility = 148 // vector-enhancements 2\n)\n\n// facilityList contains the result of an STFLE call.\n// Bits are numbered in big endian order so the\n// leftmost bit (the MSB) is at index 0.\ntype facilityList struct {\n\tbits [4]uint64\n}\n\n// Has reports whether the given facilities are present.\nfunc (s *facilityList) Has(fs ...facility) bool {\n\tif len(fs) == 0 {\n\t\tpanic(\"no facility bits provided\")\n\t}\n\tfor _, f := range fs {\n\t\tif !bitIsSet(s.bits[:], uint(f)) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// function is the code for the named cryptographic function.\ntype function uint8\n\nconst (\n\t// KM{,A,C,CTR} function codes\n\taes128 function = 18 // AES-128\n\taes192 function = 19 // AES-192\n\taes256 function = 20 // AES-256\n\n\t// K{I,L}MD function codes\n\tsha1     function = 1  // SHA-1\n\tsha256   function = 2  // SHA-256\n\tsha512   function = 3  // SHA-512\n\tsha3_224 function = 32 // SHA3-224\n\tsha3_256 function = 33 // SHA3-256\n\tsha3_384 function = 34 // SHA3-384\n\tsha3_512 function = 35 // SHA3-512\n\tshake128 function = 36 // SHAKE-128\n\tshake256 function = 37 // SHAKE-256\n\n\t// KLMD function codes\n\tghash function = 65 // GHASH\n)\n\n// queryResult contains the result of a Query function\n// call. Bits are numbered in big endian order so the\n// leftmost bit (the MSB) is at index 0.\ntype queryResult struct {\n\tbits [2]uint64\n}\n\n// Has reports whether the given functions are present.\nfunc (q *queryResult) Has(fns ...function) bool {\n\tif len(fns) == 0 {\n\t\tpanic(\"no function codes provided\")\n\t}\n\tfor _, f := range fns {\n\t\tif !bitIsSet(q.bits[:], uint(f)) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\nfunc doinit() {\n\tinitS390Xbase()\n\n\t// We need implementations of stfle, km and so on\n\t// to detect cryptographic features.\n\tif !haveAsmFunctions() {\n\t\treturn\n\t}\n\n\t// optional cryptographic functions\n\tif S390X.HasMSA {\n\t\taes := []function{aes128, aes192, aes256}\n\n\t\t// cipher message\n\t\tkm, kmc := kmQuery(), kmcQuery()\n\t\tS390X.HasAES = km.Has(aes...)\n\t\tS390X.HasAESCBC = kmc.Has(aes...)\n\t\tif S390X.HasSTFLE {\n\t\t\tfacilities := stfle()\n\t\t\tif facilities.Has(msa4) {\n\t\t\t\tkmctr := kmctrQuery()\n\t\t\t\tS390X.HasAESCTR = kmctr.Has(aes...)\n\t\t\t}\n\t\t\tif facilities.Has(msa8) {\n\t\t\t\tkma := kmaQuery()\n\t\t\t\tS390X.HasAESGCM = kma.Has(aes...)\n\t\t\t}\n\t\t}\n\n\t\t// compute message digest\n\t\tkimd := kimdQuery() // intermediate (no padding)\n\t\tklmd := klmdQuery() // last (padding)\n\t\tS390X.HasSHA1 = kimd.Has(sha1) && klmd.Has(sha1)\n\t\tS390X.HasSHA256 = kimd.Has(sha256) && klmd.Has(sha256)\n\t\tS390X.HasSHA512 = kimd.Has(sha512) && klmd.Has(sha512)\n\t\tS390X.HasGHASH = kimd.Has(ghash) // KLMD-GHASH does not exist\n\t\tsha3 := []function{\n\t\t\tsha3_224, sha3_256, sha3_384, sha3_512,\n\t\t\tshake128, shake256,\n\t\t}\n\t\tS390X.HasSHA3 = kimd.Has(sha3...) && klmd.Has(sha3...)\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/cpu/cpu_s390x.s",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gc\n\n#include \"textflag.h\"\n\n// func stfle() facilityList\nTEXT ·stfle(SB), NOSPLIT|NOFRAME, $0-32\n\tMOVD $ret+0(FP), R1\n\tMOVD $3, R0          // last doubleword index to store\n\tXC   $32, (R1), (R1) // clear 4 doublewords (32 bytes)\n\tWORD $0xb2b01000     // store facility list extended (STFLE)\n\tRET\n\n// func kmQuery() queryResult\nTEXT ·kmQuery(SB), NOSPLIT|NOFRAME, $0-16\n\tMOVD $0, R0         // set function code to 0 (KM-Query)\n\tMOVD $ret+0(FP), R1 // address of 16-byte return value\n\tWORD $0xB92E0024    // cipher message (KM)\n\tRET\n\n// func kmcQuery() queryResult\nTEXT ·kmcQuery(SB), NOSPLIT|NOFRAME, $0-16\n\tMOVD $0, R0         // set function code to 0 (KMC-Query)\n\tMOVD $ret+0(FP), R1 // address of 16-byte return value\n\tWORD $0xB92F0024    // cipher message with chaining (KMC)\n\tRET\n\n// func kmctrQuery() queryResult\nTEXT ·kmctrQuery(SB), NOSPLIT|NOFRAME, $0-16\n\tMOVD $0, R0         // set function code to 0 (KMCTR-Query)\n\tMOVD $ret+0(FP), R1 // address of 16-byte return value\n\tWORD $0xB92D4024    // cipher message with counter (KMCTR)\n\tRET\n\n// func kmaQuery() queryResult\nTEXT ·kmaQuery(SB), NOSPLIT|NOFRAME, $0-16\n\tMOVD $0, R0         // set function code to 0 (KMA-Query)\n\tMOVD $ret+0(FP), R1 // address of 16-byte return value\n\tWORD $0xb9296024    // cipher message with authentication (KMA)\n\tRET\n\n// func kimdQuery() queryResult\nTEXT ·kimdQuery(SB), NOSPLIT|NOFRAME, $0-16\n\tMOVD $0, R0         // set function code to 0 (KIMD-Query)\n\tMOVD $ret+0(FP), R1 // address of 16-byte return value\n\tWORD $0xB93E0024    // compute intermediate message digest (KIMD)\n\tRET\n\n// func klmdQuery() queryResult\nTEXT ·klmdQuery(SB), NOSPLIT|NOFRAME, $0-16\n\tMOVD $0, R0         // set function code to 0 (KLMD-Query)\n\tMOVD $ret+0(FP), R1 // address of 16-byte return value\n\tWORD $0xB93F0024    // compute last message digest (KLMD)\n\tRET\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/cpu/cpu_wasm.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build wasm\n\npackage cpu\n\n// We're compiling the cpu package for an unknown (software-abstracted) CPU.\n// Make CacheLinePad an empty struct and hope that the usual struct alignment\n// rules are good enough.\n\nconst cacheLineSize = 0\n\nfunc initOptions() {}\n\nfunc archInit() {}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/cpu/cpu_windows_arm64.go",
    "content": "// Copyright 2026 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage cpu\n\nimport (\n\t\"golang.org/x/sys/windows\"\n)\n\nfunc doinit() {\n\t// set HasASIMD and HasFP to true as per\n\t// https://learn.microsoft.com/en-us/cpp/build/arm64-windows-abi-conventions?view=msvc-170#base-requirements\n\t//\n\t// The ARM64 version of Windows always presupposes that it's running on an ARMv8 or later architecture.\n\t// Both floating-point and NEON support are presumed to be present in hardware.\n\t//\n\tARM64.HasASIMD = true\n\tARM64.HasFP = true\n\n\tif windows.IsProcessorFeaturePresent(windows.PF_ARM_V8_CRYPTO_INSTRUCTIONS_AVAILABLE) {\n\t\tARM64.HasAES = true\n\t\tARM64.HasPMULL = true\n\t\tARM64.HasSHA1 = true\n\t\tARM64.HasSHA2 = true\n\t}\n\tARM64.HasSHA3 = windows.IsProcessorFeaturePresent(windows.PF_ARM_SHA3_INSTRUCTIONS_AVAILABLE)\n\tARM64.HasCRC32 = windows.IsProcessorFeaturePresent(windows.PF_ARM_V8_CRC32_INSTRUCTIONS_AVAILABLE)\n\tARM64.HasSHA512 = windows.IsProcessorFeaturePresent(windows.PF_ARM_SHA512_INSTRUCTIONS_AVAILABLE)\n\tARM64.HasATOMICS = windows.IsProcessorFeaturePresent(windows.PF_ARM_V81_ATOMIC_INSTRUCTIONS_AVAILABLE)\n\tif windows.IsProcessorFeaturePresent(windows.PF_ARM_V82_DP_INSTRUCTIONS_AVAILABLE) {\n\t\tARM64.HasASIMDDP = true\n\t\tARM64.HasASIMDRDM = true\n\t}\n\tif windows.IsProcessorFeaturePresent(windows.PF_ARM_V83_LRCPC_INSTRUCTIONS_AVAILABLE) {\n\t\tARM64.HasLRCPC = true\n\t\tARM64.HasSM3 = true\n\t}\n\tARM64.HasSVE = windows.IsProcessorFeaturePresent(windows.PF_ARM_SVE_INSTRUCTIONS_AVAILABLE)\n\tARM64.HasSVE2 = windows.IsProcessorFeaturePresent(windows.PF_ARM_SVE2_INSTRUCTIONS_AVAILABLE)\n\tARM64.HasJSCVT = windows.IsProcessorFeaturePresent(windows.PF_ARM_V83_JSCVT_INSTRUCTIONS_AVAILABLE)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/cpu/cpu_x86.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build 386 || amd64 || amd64p32\n\npackage cpu\n\nimport \"runtime\"\n\nconst cacheLineSize = 64\n\nfunc initOptions() {\n\toptions = []option{\n\t\t{Name: \"adx\", Feature: &X86.HasADX},\n\t\t{Name: \"aes\", Feature: &X86.HasAES},\n\t\t{Name: \"avx\", Feature: &X86.HasAVX},\n\t\t{Name: \"avx2\", Feature: &X86.HasAVX2},\n\t\t{Name: \"avx512\", Feature: &X86.HasAVX512},\n\t\t{Name: \"avx512f\", Feature: &X86.HasAVX512F},\n\t\t{Name: \"avx512cd\", Feature: &X86.HasAVX512CD},\n\t\t{Name: \"avx512er\", Feature: &X86.HasAVX512ER},\n\t\t{Name: \"avx512pf\", Feature: &X86.HasAVX512PF},\n\t\t{Name: \"avx512vl\", Feature: &X86.HasAVX512VL},\n\t\t{Name: \"avx512bw\", Feature: &X86.HasAVX512BW},\n\t\t{Name: \"avx512dq\", Feature: &X86.HasAVX512DQ},\n\t\t{Name: \"avx512ifma\", Feature: &X86.HasAVX512IFMA},\n\t\t{Name: \"avx512vbmi\", Feature: &X86.HasAVX512VBMI},\n\t\t{Name: \"avx512vnniw\", Feature: &X86.HasAVX5124VNNIW},\n\t\t{Name: \"avx5124fmaps\", Feature: &X86.HasAVX5124FMAPS},\n\t\t{Name: \"avx512vpopcntdq\", Feature: &X86.HasAVX512VPOPCNTDQ},\n\t\t{Name: \"avx512vpclmulqdq\", Feature: &X86.HasAVX512VPCLMULQDQ},\n\t\t{Name: \"avx512vnni\", Feature: &X86.HasAVX512VNNI},\n\t\t{Name: \"avx512gfni\", Feature: &X86.HasAVX512GFNI},\n\t\t{Name: \"avx512vaes\", Feature: &X86.HasAVX512VAES},\n\t\t{Name: \"avx512vbmi2\", Feature: &X86.HasAVX512VBMI2},\n\t\t{Name: \"avx512bitalg\", Feature: &X86.HasAVX512BITALG},\n\t\t{Name: \"avx512bf16\", Feature: &X86.HasAVX512BF16},\n\t\t{Name: \"amxtile\", Feature: &X86.HasAMXTile},\n\t\t{Name: \"amxint8\", Feature: &X86.HasAMXInt8},\n\t\t{Name: \"amxbf16\", Feature: &X86.HasAMXBF16},\n\t\t{Name: \"bmi1\", Feature: &X86.HasBMI1},\n\t\t{Name: \"bmi2\", Feature: &X86.HasBMI2},\n\t\t{Name: \"cx16\", Feature: &X86.HasCX16},\n\t\t{Name: \"erms\", Feature: &X86.HasERMS},\n\t\t{Name: \"fma\", Feature: &X86.HasFMA},\n\t\t{Name: \"osxsave\", Feature: &X86.HasOSXSAVE},\n\t\t{Name: \"pclmulqdq\", Feature: &X86.HasPCLMULQDQ},\n\t\t{Name: \"popcnt\", Feature: &X86.HasPOPCNT},\n\t\t{Name: \"rdrand\", Feature: &X86.HasRDRAND},\n\t\t{Name: \"rdseed\", Feature: &X86.HasRDSEED},\n\t\t{Name: \"sse3\", Feature: &X86.HasSSE3},\n\t\t{Name: \"sse41\", Feature: &X86.HasSSE41},\n\t\t{Name: \"sse42\", Feature: &X86.HasSSE42},\n\t\t{Name: \"ssse3\", Feature: &X86.HasSSSE3},\n\t\t{Name: \"avxifma\", Feature: &X86.HasAVXIFMA},\n\t\t{Name: \"avxvnni\", Feature: &X86.HasAVXVNNI},\n\t\t{Name: \"avxvnniint8\", Feature: &X86.HasAVXVNNIInt8},\n\n\t\t// These capabilities should always be enabled on amd64:\n\t\t{Name: \"sse2\", Feature: &X86.HasSSE2, Required: runtime.GOARCH == \"amd64\"},\n\t}\n}\n\nfunc archInit() {\n\n\t// From internal/cpu\n\tconst (\n\t\t// eax bits\n\t\tcpuid_AVXVNNI = 1 << 4\n\n\t\t// ecx bits\n\t\tcpuid_SSE3            = 1 << 0\n\t\tcpuid_PCLMULQDQ       = 1 << 1\n\t\tcpuid_AVX512VBMI      = 1 << 1\n\t\tcpuid_AVX512VBMI2     = 1 << 6\n\t\tcpuid_SSSE3           = 1 << 9\n\t\tcpuid_AVX512GFNI      = 1 << 8\n\t\tcpuid_AVX512VAES      = 1 << 9\n\t\tcpuid_AVX512VNNI      = 1 << 11\n\t\tcpuid_AVX512BITALG    = 1 << 12\n\t\tcpuid_FMA             = 1 << 12\n\t\tcpuid_AVX512VPOPCNTDQ = 1 << 14\n\t\tcpuid_SSE41           = 1 << 19\n\t\tcpuid_SSE42           = 1 << 20\n\t\tcpuid_POPCNT          = 1 << 23\n\t\tcpuid_AES             = 1 << 25\n\t\tcpuid_OSXSAVE         = 1 << 27\n\t\tcpuid_AVX             = 1 << 28\n\n\t\t// \"Extended Feature Flag\" bits returned in EBX for CPUID EAX=0x7 ECX=0x0\n\t\tcpuid_BMI1     = 1 << 3\n\t\tcpuid_AVX2     = 1 << 5\n\t\tcpuid_BMI2     = 1 << 8\n\t\tcpuid_ERMS     = 1 << 9\n\t\tcpuid_AVX512F  = 1 << 16\n\t\tcpuid_AVX512DQ = 1 << 17\n\t\tcpuid_ADX      = 1 << 19\n\t\tcpuid_AVX512CD = 1 << 28\n\t\tcpuid_SHA      = 1 << 29\n\t\tcpuid_AVX512BW = 1 << 30\n\t\tcpuid_AVX512VL = 1 << 31\n\n\t\t// \"Extended Feature Flag\" bits returned in ECX for CPUID EAX=0x7 ECX=0x0\n\t\tcpuid_AVX512_VBMI      = 1 << 1\n\t\tcpuid_AVX512_VBMI2     = 1 << 6\n\t\tcpuid_GFNI             = 1 << 8\n\t\tcpuid_AVX512VPCLMULQDQ = 1 << 10\n\t\tcpuid_AVX512_BITALG    = 1 << 12\n\n\t\t// edx bits\n\t\tcpuid_FSRM = 1 << 4\n\t\t// edx bits for CPUID 0x80000001\n\t\tcpuid_RDTSCP = 1 << 27\n\t)\n\t// Additional constants not in internal/cpu\n\tconst (\n\t\t// eax=1: edx\n\t\tcpuid_SSE2 = 1 << 26\n\t\t// eax=1: ecx\n\t\tcpuid_CX16   = 1 << 13\n\t\tcpuid_RDRAND = 1 << 30\n\t\t// eax=7,ecx=0: ebx\n\t\tcpuid_RDSEED     = 1 << 18\n\t\tcpuid_AVX512IFMA = 1 << 21\n\t\tcpuid_AVX512PF   = 1 << 26\n\t\tcpuid_AVX512ER   = 1 << 27\n\t\t// eax=7,ecx=0: edx\n\t\tcpuid_AVX5124VNNIW = 1 << 2\n\t\tcpuid_AVX5124FMAPS = 1 << 3\n\t\tcpuid_AMXBF16      = 1 << 22\n\t\tcpuid_AMXTile      = 1 << 24\n\t\tcpuid_AMXInt8      = 1 << 25\n\t\t// eax=7,ecx=1: eax\n\t\tcpuid_AVX512BF16 = 1 << 5\n\t\tcpuid_AVXIFMA    = 1 << 23\n\t\t// eax=7,ecx=1: edx\n\t\tcpuid_AVXVNNIInt8 = 1 << 4\n\t)\n\n\tInitialized = true\n\n\tmaxID, _, _, _ := cpuid(0, 0)\n\n\tif maxID < 1 {\n\t\treturn\n\t}\n\n\t_, _, ecx1, edx1 := cpuid(1, 0)\n\tX86.HasSSE2 = isSet(edx1, cpuid_SSE2)\n\n\tX86.HasSSE3 = isSet(ecx1, cpuid_SSE3)\n\tX86.HasPCLMULQDQ = isSet(ecx1, cpuid_PCLMULQDQ)\n\tX86.HasSSSE3 = isSet(ecx1, cpuid_SSSE3)\n\tX86.HasFMA = isSet(ecx1, cpuid_FMA)\n\tX86.HasCX16 = isSet(ecx1, cpuid_CX16)\n\tX86.HasSSE41 = isSet(ecx1, cpuid_SSE41)\n\tX86.HasSSE42 = isSet(ecx1, cpuid_SSE42)\n\tX86.HasPOPCNT = isSet(ecx1, cpuid_POPCNT)\n\tX86.HasAES = isSet(ecx1, cpuid_AES)\n\tX86.HasOSXSAVE = isSet(ecx1, cpuid_OSXSAVE)\n\tX86.HasRDRAND = isSet(ecx1, cpuid_RDRAND)\n\n\tvar osSupportsAVX, osSupportsAVX512 bool\n\t// For XGETBV, OSXSAVE bit is required and sufficient.\n\tif X86.HasOSXSAVE {\n\t\teax, _ := xgetbv()\n\t\t// Check if XMM and YMM registers have OS support.\n\t\tosSupportsAVX = isSet(eax, 1<<1) && isSet(eax, 1<<2)\n\n\t\tif runtime.GOOS == \"darwin\" {\n\t\t\t// Darwin requires special AVX512 checks, see cpu_darwin_x86.go\n\t\t\tosSupportsAVX512 = osSupportsAVX && darwinSupportsAVX512()\n\t\t} else {\n\t\t\t// Check if OPMASK and ZMM registers have OS support.\n\t\t\tosSupportsAVX512 = osSupportsAVX && isSet(eax, 1<<5) && isSet(eax, 1<<6) && isSet(eax, 1<<7)\n\t\t}\n\t}\n\n\tX86.HasAVX = isSet(ecx1, cpuid_AVX) && osSupportsAVX\n\n\tif maxID < 7 {\n\t\treturn\n\t}\n\n\teax7, ebx7, ecx7, edx7 := cpuid(7, 0)\n\tX86.HasBMI1 = isSet(ebx7, cpuid_BMI1)\n\tX86.HasAVX2 = isSet(ebx7, cpuid_AVX2) && osSupportsAVX\n\tX86.HasBMI2 = isSet(ebx7, cpuid_BMI2)\n\tX86.HasERMS = isSet(ebx7, cpuid_ERMS)\n\tX86.HasRDSEED = isSet(ebx7, cpuid_RDSEED)\n\tX86.HasADX = isSet(ebx7, cpuid_ADX)\n\n\tX86.HasAVX512 = isSet(ebx7, cpuid_AVX512F) && osSupportsAVX512 // Because avx-512 foundation is the core required extension\n\tif X86.HasAVX512 {\n\t\tX86.HasAVX512F = true\n\t\tX86.HasAVX512CD = isSet(ebx7, cpuid_AVX512CD)\n\t\tX86.HasAVX512ER = isSet(ebx7, cpuid_AVX512ER)\n\t\tX86.HasAVX512PF = isSet(ebx7, cpuid_AVX512PF)\n\t\tX86.HasAVX512VL = isSet(ebx7, cpuid_AVX512VL)\n\t\tX86.HasAVX512BW = isSet(ebx7, cpuid_AVX512BW)\n\t\tX86.HasAVX512DQ = isSet(ebx7, cpuid_AVX512DQ)\n\t\tX86.HasAVX512IFMA = isSet(ebx7, cpuid_AVX512IFMA)\n\t\tX86.HasAVX512VBMI = isSet(ecx7, cpuid_AVX512_VBMI)\n\t\tX86.HasAVX5124VNNIW = isSet(edx7, cpuid_AVX5124VNNIW)\n\t\tX86.HasAVX5124FMAPS = isSet(edx7, cpuid_AVX5124FMAPS)\n\t\tX86.HasAVX512VPOPCNTDQ = isSet(ecx7, cpuid_AVX512VPOPCNTDQ)\n\t\tX86.HasAVX512VPCLMULQDQ = isSet(ecx7, cpuid_AVX512VPCLMULQDQ)\n\t\tX86.HasAVX512VNNI = isSet(ecx7, cpuid_AVX512VNNI)\n\t\tX86.HasAVX512GFNI = isSet(ecx7, cpuid_AVX512GFNI)\n\t\tX86.HasAVX512VAES = isSet(ecx7, cpuid_AVX512VAES)\n\t\tX86.HasAVX512VBMI2 = isSet(ecx7, cpuid_AVX512VBMI2)\n\t\tX86.HasAVX512BITALG = isSet(ecx7, cpuid_AVX512BITALG)\n\t}\n\n\tX86.HasAMXTile = isSet(edx7, cpuid_AMXTile)\n\tX86.HasAMXInt8 = isSet(edx7, cpuid_AMXInt8)\n\tX86.HasAMXBF16 = isSet(edx7, cpuid_AMXBF16)\n\n\t// These features depend on the second level of extended features.\n\tif eax7 >= 1 {\n\t\teax71, _, _, edx71 := cpuid(7, 1)\n\t\tif X86.HasAVX512 {\n\t\t\tX86.HasAVX512BF16 = isSet(eax71, cpuid_AVX512BF16)\n\t\t}\n\t\tif X86.HasAVX {\n\t\t\tX86.HasAVXIFMA = isSet(eax71, cpuid_AVXIFMA)\n\t\t\tX86.HasAVXVNNI = isSet(eax71, cpuid_AVXVNNI)\n\t\t\tX86.HasAVXVNNIInt8 = isSet(edx71, cpuid_AVXVNNIInt8)\n\t\t}\n\t}\n}\n\nfunc isSet(hwc uint32, value uint32) bool {\n\treturn hwc&value != 0\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/cpu/cpu_zos.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage cpu\n\nfunc archInit() {\n\tdoinit()\n\tInitialized = true\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/cpu/cpu_zos_s390x.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage cpu\n\nfunc initS390Xbase() {\n\t// get the facilities list\n\tfacilities := stfle()\n\n\t// mandatory\n\tS390X.HasZARCH = facilities.Has(zarch)\n\tS390X.HasSTFLE = facilities.Has(stflef)\n\tS390X.HasLDISP = facilities.Has(ldisp)\n\tS390X.HasEIMM = facilities.Has(eimm)\n\n\t// optional\n\tS390X.HasETF3EH = facilities.Has(etf3eh)\n\tS390X.HasDFP = facilities.Has(dfp)\n\tS390X.HasMSA = facilities.Has(msa)\n\tS390X.HasVX = facilities.Has(vx)\n\tif S390X.HasVX {\n\t\tS390X.HasVXE = facilities.Has(vxe)\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/cpu/endian_big.go",
    "content": "// Copyright 2023 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build armbe || arm64be || m68k || mips || mips64 || mips64p32 || ppc || ppc64 || s390 || s390x || shbe || sparc || sparc64\n\npackage cpu\n\n// IsBigEndian records whether the GOARCH's byte order is big endian.\nconst IsBigEndian = true\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/cpu/endian_little.go",
    "content": "// Copyright 2023 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build 386 || amd64 || amd64p32 || alpha || arm || arm64 || loong64 || mipsle || mips64le || mips64p32le || nios2 || ppc64le || riscv || riscv64 || sh || wasm\n\npackage cpu\n\n// IsBigEndian records whether the GOARCH's byte order is big endian.\nconst IsBigEndian = false\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/cpu/hwcap_linux.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage cpu\n\nimport (\n\t\"os\"\n)\n\nconst (\n\t_AT_HWCAP  = 16\n\t_AT_HWCAP2 = 26\n\n\tprocAuxv = \"/proc/self/auxv\"\n\n\tuintSize = int(32 << (^uint(0) >> 63))\n)\n\n// For those platforms don't have a 'cpuid' equivalent we use HWCAP/HWCAP2\n// These are initialized in cpu_$GOARCH.go\n// and should not be changed after they are initialized.\nvar hwCap uint\nvar hwCap2 uint\n\nfunc readHWCAP() error {\n\t// For Go 1.21+, get auxv from the Go runtime.\n\tif a := getAuxv(); len(a) > 0 {\n\t\tfor len(a) >= 2 {\n\t\t\ttag, val := a[0], uint(a[1])\n\t\t\ta = a[2:]\n\t\t\tswitch tag {\n\t\t\tcase _AT_HWCAP:\n\t\t\t\thwCap = val\n\t\t\tcase _AT_HWCAP2:\n\t\t\t\thwCap2 = val\n\t\t\t}\n\t\t}\n\t\treturn nil\n\t}\n\n\tbuf, err := os.ReadFile(procAuxv)\n\tif err != nil {\n\t\t// e.g. on android /proc/self/auxv is not accessible, so silently\n\t\t// ignore the error and leave Initialized = false. On some\n\t\t// architectures (e.g. arm64) doinit() implements a fallback\n\t\t// readout and will set Initialized = true again.\n\t\treturn err\n\t}\n\tbo := hostByteOrder()\n\tfor len(buf) >= 2*(uintSize/8) {\n\t\tvar tag, val uint\n\t\tswitch uintSize {\n\t\tcase 32:\n\t\t\ttag = uint(bo.Uint32(buf[0:]))\n\t\t\tval = uint(bo.Uint32(buf[4:]))\n\t\t\tbuf = buf[8:]\n\t\tcase 64:\n\t\t\ttag = uint(bo.Uint64(buf[0:]))\n\t\t\tval = uint(bo.Uint64(buf[8:]))\n\t\t\tbuf = buf[16:]\n\t\t}\n\t\tswitch tag {\n\t\tcase _AT_HWCAP:\n\t\t\thwCap = val\n\t\tcase _AT_HWCAP2:\n\t\t\thwCap2 = val\n\t\t}\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/cpu/parse.go",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage cpu\n\nimport \"strconv\"\n\n// parseRelease parses a dot-separated version number. It follows the semver\n// syntax, but allows the minor and patch versions to be elided.\n//\n// This is a copy of the Go runtime's parseRelease from\n// https://golang.org/cl/209597.\nfunc parseRelease(rel string) (major, minor, patch int, ok bool) {\n\t// Strip anything after a dash or plus.\n\tfor i := range len(rel) {\n\t\tif rel[i] == '-' || rel[i] == '+' {\n\t\t\trel = rel[:i]\n\t\t\tbreak\n\t\t}\n\t}\n\n\tnext := func() (int, bool) {\n\t\tfor i := range len(rel) {\n\t\t\tif rel[i] == '.' {\n\t\t\t\tver, err := strconv.Atoi(rel[:i])\n\t\t\t\trel = rel[i+1:]\n\t\t\t\treturn ver, err == nil\n\t\t\t}\n\t\t}\n\t\tver, err := strconv.Atoi(rel)\n\t\trel = \"\"\n\t\treturn ver, err == nil\n\t}\n\tif major, ok = next(); !ok || rel == \"\" {\n\t\treturn\n\t}\n\tif minor, ok = next(); !ok || rel == \"\" {\n\t\treturn\n\t}\n\tpatch, ok = next()\n\treturn\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/cpu/proc_cpuinfo_linux.go",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && arm64\n\npackage cpu\n\nimport (\n\t\"errors\"\n\t\"io\"\n\t\"os\"\n\t\"strings\"\n)\n\nfunc readLinuxProcCPUInfo() error {\n\tf, err := os.Open(\"/proc/cpuinfo\")\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer f.Close()\n\n\tvar buf [1 << 10]byte // enough for first CPU\n\tn, err := io.ReadFull(f, buf[:])\n\tif err != nil && err != io.ErrUnexpectedEOF {\n\t\treturn err\n\t}\n\tin := string(buf[:n])\n\tconst features = \"\\nFeatures\t: \"\n\ti := strings.Index(in, features)\n\tif i == -1 {\n\t\treturn errors.New(\"no CPU features found\")\n\t}\n\tin = in[i+len(features):]\n\tif i := strings.Index(in, \"\\n\"); i != -1 {\n\t\tin = in[:i]\n\t}\n\tm := map[string]*bool{}\n\n\tinitOptions() // need it early here; it's harmless to call twice\n\tfor _, o := range options {\n\t\tm[o.Name] = o.Feature\n\t}\n\t// The EVTSTRM field has alias \"evstrm\" in Go, but Linux calls it \"evtstrm\".\n\tm[\"evtstrm\"] = &ARM64.HasEVTSTRM\n\n\tfor _, f := range strings.Fields(in) {\n\t\tif p, ok := m[f]; ok {\n\t\t\t*p = true\n\t\t}\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/cpu/runtime_auxv.go",
    "content": "// Copyright 2023 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage cpu\n\n// getAuxvFn is non-nil on Go 1.21+ (via runtime_auxv_go121.go init)\n// on platforms that use auxv.\nvar getAuxvFn func() []uintptr\n\nfunc getAuxv() []uintptr {\n\tif getAuxvFn == nil {\n\t\treturn nil\n\t}\n\treturn getAuxvFn()\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/cpu/runtime_auxv_go121.go",
    "content": "// Copyright 2023 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build go1.21\n\npackage cpu\n\nimport (\n\t_ \"unsafe\" // for linkname\n)\n\n//go:linkname runtime_getAuxv runtime.getAuxv\nfunc runtime_getAuxv() []uintptr\n\nfunc init() {\n\tgetAuxvFn = runtime_getAuxv\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/cpu/syscall_aix_gccgo.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Recreate a getsystemcfg syscall handler instead of\n// using the one provided by x/sys/unix to avoid having\n// the dependency between them. (See golang.org/issue/32102)\n// Moreover, this file will be used during the building of\n// gccgo's libgo and thus must not used a CGo method.\n\n//go:build aix && gccgo\n\npackage cpu\n\nimport (\n\t\"syscall\"\n)\n\n//extern getsystemcfg\nfunc gccgoGetsystemcfg(label uint32) (r uint64)\n\nfunc callgetsystemcfg(label int) (r1 uintptr, e1 syscall.Errno) {\n\tr1 = uintptr(gccgoGetsystemcfg(uint32(label)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/cpu/syscall_aix_ppc64_gc.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Minimal copy of x/sys/unix so the cpu package can make a\n// system call on AIX without depending on x/sys/unix.\n// (See golang.org/issue/32102)\n\n//go:build aix && ppc64 && gc\n\npackage cpu\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n//go:cgo_import_dynamic libc_getsystemcfg getsystemcfg \"libc.a/shr_64.o\"\n\n//go:linkname libc_getsystemcfg libc_getsystemcfg\n\ntype syscallFunc uintptr\n\nvar libc_getsystemcfg syscallFunc\n\ntype errno = syscall.Errno\n\n// Implemented in runtime/syscall_aix.go.\nfunc rawSyscall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err errno)\nfunc syscall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err errno)\n\nfunc callgetsystemcfg(label int) (r1 uintptr, e1 errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getsystemcfg)), 1, uintptr(label), 0, 0, 0, 0, 0)\n\treturn\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/cpu/syscall_darwin_x86_gc.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Minimal copy of x/sys/unix so the cpu package can make a\n// system call on Darwin without depending on x/sys/unix.\n\n//go:build darwin && amd64 && gc\n\npackage cpu\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\ntype _C_int int32\n\n// adapted from unix.Uname() at x/sys/unix/syscall_darwin.go L419\nfunc darwinOSRelease(release *[256]byte) error {\n\t// from x/sys/unix/zerrors_openbsd_amd64.go\n\tconst (\n\t\tCTL_KERN       = 0x1\n\t\tKERN_OSRELEASE = 0x2\n\t)\n\n\tmib := []_C_int{CTL_KERN, KERN_OSRELEASE}\n\tn := unsafe.Sizeof(*release)\n\n\treturn sysctl(mib, &release[0], &n, nil, 0)\n}\n\ntype Errno = syscall.Errno\n\nvar _zero uintptr // Single-word zero for use when we need a valid pointer to 0 bytes.\n\n// from x/sys/unix/zsyscall_darwin_amd64.go L791-807\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) error {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tif _, _, err := syscall_syscall6(\n\t\tlibc_sysctl_trampoline_addr,\n\t\tuintptr(_p0),\n\t\tuintptr(len(mib)),\n\t\tuintptr(unsafe.Pointer(old)),\n\t\tuintptr(unsafe.Pointer(oldlen)),\n\t\tuintptr(unsafe.Pointer(new)),\n\t\tuintptr(newlen),\n\t); err != 0 {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\nvar libc_sysctl_trampoline_addr uintptr\n\n// adapted from internal/cpu/cpu_arm64_darwin.go\nfunc darwinSysctlEnabled(name []byte) bool {\n\tout := int32(0)\n\tnout := unsafe.Sizeof(out)\n\tif ret := sysctlbyname(&name[0], (*byte)(unsafe.Pointer(&out)), &nout, nil, 0); ret != nil {\n\t\treturn false\n\t}\n\treturn out > 0\n}\n\n//go:cgo_import_dynamic libc_sysctl sysctl \"/usr/lib/libSystem.B.dylib\"\n\nvar libc_sysctlbyname_trampoline_addr uintptr\n\n// adapted from runtime/sys_darwin.go in the pattern of sysctl() above, as defined in x/sys/unix\nfunc sysctlbyname(name *byte, old *byte, oldlen *uintptr, new *byte, newlen uintptr) error {\n\tif _, _, err := syscall_syscall6(\n\t\tlibc_sysctlbyname_trampoline_addr,\n\t\tuintptr(unsafe.Pointer(name)),\n\t\tuintptr(unsafe.Pointer(old)),\n\t\tuintptr(unsafe.Pointer(oldlen)),\n\t\tuintptr(unsafe.Pointer(new)),\n\t\tuintptr(newlen),\n\t\t0,\n\t); err != 0 {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\n//go:cgo_import_dynamic libc_sysctlbyname sysctlbyname \"/usr/lib/libSystem.B.dylib\"\n\n// Implemented in the runtime package (runtime/sys_darwin.go)\nfunc syscall_syscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)\n\n//go:linkname syscall_syscall6 syscall.syscall6\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/.gitignore",
    "content": "_obj/\nunix.test\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/README.md",
    "content": "# Building `sys/unix`\n\nThe sys/unix package provides access to the raw system call interface of the\nunderlying operating system. See: https://godoc.org/golang.org/x/sys/unix\n\nPorting Go to a new architecture/OS combination or adding syscalls, types, or\nconstants to an existing architecture/OS pair requires some manual effort;\nhowever, there are tools that automate much of the process.\n\n## Build Systems\n\nThere are currently two ways we generate the necessary files. We are currently\nmigrating the build system to use containers so the builds are reproducible.\nThis is being done on an OS-by-OS basis. Please update this documentation as\ncomponents of the build system change.\n\n### Old Build System (currently for `GOOS != \"linux\"`)\n\nThe old build system generates the Go files based on the C header files\npresent on your system. This means that files\nfor a given GOOS/GOARCH pair must be generated on a system with that OS and\narchitecture. This also means that the generated code can differ from system\nto system, based on differences in the header files.\n\nTo avoid this, if you are using the old build system, only generate the Go\nfiles on an installation with unmodified header files. It is also important to\nkeep track of which version of the OS the files were generated from (ex.\nDarwin 14 vs Darwin 15). This makes it easier to track the progress of changes\nand have each OS upgrade correspond to a single change.\n\nTo build the files for your current OS and architecture, make sure GOOS and\nGOARCH are set correctly and run `mkall.sh`. This will generate the files for\nyour specific system. Running `mkall.sh -n` shows the commands that will be run.\n\nRequirements: bash, go\n\n### New Build System (currently for `GOOS == \"linux\"`)\n\nThe new build system uses a Docker container to generate the go files directly\nfrom source checkouts of the kernel and various system libraries. This means\nthat on any platform that supports Docker, all the files using the new build\nsystem can be generated at once, and generated files will not change based on\nwhat the person running the scripts has installed on their computer.\n\nThe OS specific files for the new build system are located in the `${GOOS}`\ndirectory, and the build is coordinated by the `${GOOS}/mkall.go` program. When\nthe kernel or system library updates, modify the Dockerfile at\n`${GOOS}/Dockerfile` to checkout the new release of the source.\n\nTo build all the files under the new build system, you must be on an amd64/Linux\nsystem and have your GOOS and GOARCH set accordingly. Running `mkall.sh` will\nthen generate all of the files for all of the GOOS/GOARCH pairs in the new build\nsystem. Running `mkall.sh -n` shows the commands that will be run.\n\nRequirements: bash, go, docker\n\n## Component files\n\nThis section describes the various files used in the code generation process.\nIt also contains instructions on how to modify these files to add a new\narchitecture/OS or to add additional syscalls, types, or constants. Note that\nif you are using the new build system, the scripts/programs cannot be called normally.\nThey must be called from within the docker container.\n\n### asm files\n\nThe hand-written assembly file at `asm_${GOOS}_${GOARCH}.s` implements system\ncall dispatch. There are three entry points:\n```\n  func Syscall(trap, a1, a2, a3 uintptr) (r1, r2, err uintptr)\n  func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2, err uintptr)\n  func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2, err uintptr)\n```\nThe first and second are the standard ones; they differ only in how many\narguments can be passed to the kernel. The third is for low-level use by the\nForkExec wrapper. Unlike the first two, it does not call into the scheduler to\nlet it know that a system call is running.\n\nWhen porting Go to a new architecture/OS, this file must be implemented for\neach GOOS/GOARCH pair.\n\n### mksysnum\n\nMksysnum is a Go program located at `${GOOS}/mksysnum.go` (or `mksysnum_${GOOS}.go`\nfor the old system). This program takes in a list of header files containing the\nsyscall number declarations and parses them to produce the corresponding list of\nGo numeric constants. See `zsysnum_${GOOS}_${GOARCH}.go` for the generated\nconstants.\n\nAdding new syscall numbers is mostly done by running the build on a sufficiently\nnew installation of the target OS (or updating the source checkouts for the\nnew build system). However, depending on the OS, you may need to update the\nparsing in mksysnum.\n\n### mksyscall.go\n\nThe `syscall.go`, `syscall_${GOOS}.go`, `syscall_${GOOS}_${GOARCH}.go` are\nhand-written Go files which implement system calls (for unix, the specific OS,\nor the specific OS/Architecture pair respectively) that need special handling\nand list `//sys` comments giving prototypes for ones that can be generated.\n\nThe mksyscall.go program takes the `//sys` and `//sysnb` comments and converts\nthem into syscalls. This requires the name of the prototype in the comment to\nmatch a syscall number in the `zsysnum_${GOOS}_${GOARCH}.go` file. The function\nprototype can be exported (capitalized) or not.\n\nAdding a new syscall often just requires adding a new `//sys` function prototype\nwith the desired arguments and a capitalized name so it is exported. However, if\nyou want the interface to the syscall to be different, often one will make an\nunexported `//sys` prototype, and then write a custom wrapper in\n`syscall_${GOOS}.go`.\n\n### types files\n\nFor each OS, there is a hand-written Go file at `${GOOS}/types.go` (or\n`types_${GOOS}.go` on the old system). This file includes standard C headers and\ncreates Go type aliases to the corresponding C types. The file is then fed\nthrough godef to get the Go compatible definitions. Finally, the generated code\nis fed though mkpost.go to format the code correctly and remove any hidden or\nprivate identifiers. This cleaned-up code is written to\n`ztypes_${GOOS}_${GOARCH}.go`.\n\nThe hardest part about preparing this file is figuring out which headers to\ninclude and which symbols need to be `#define`d to get the actual data\nstructures that pass through to the kernel system calls. Some C libraries\npreset alternate versions for binary compatibility and translate them on the\nway in and out of system calls, but there is almost always a `#define` that can\nget the real ones.\nSee `types_darwin.go` and `linux/types.go` for examples.\n\nTo add a new type, add in the necessary include statement at the top of the\nfile (if it is not already there) and add in a type alias line. Note that if\nyour type is significantly different on different architectures, you may need\nsome `#if/#elif` macros in your include statements.\n\n### mkerrors.sh\n\nThis script is used to generate the system's various constants. This doesn't\njust include the error numbers and error strings, but also the signal numbers\nand a wide variety of miscellaneous constants. The constants come from the list\nof include files in the `includes_${uname}` variable. A regex then picks out\nthe desired `#define` statements, and generates the corresponding Go constants.\nThe error numbers and strings are generated from `#include <errno.h>`, and the\nsignal numbers and strings are generated from `#include <signal.h>`. All of\nthese constants are written to `zerrors_${GOOS}_${GOARCH}.go` via a C program,\n`_errors.c`, which prints out all the constants.\n\nTo add a constant, add the header that includes it to the appropriate variable.\nThen, edit the regex (if necessary) to match the desired constant. Avoid making\nthe regex too broad to avoid matching unintended constants.\n\n### internal/mkmerge\n\nThis program is used to extract duplicate const, func, and type declarations\nfrom the generated architecture-specific files listed below, and merge these\ninto a common file for each OS.\n\nThe merge is performed in the following steps:\n1. Construct the set of common code that is identical in all architecture-specific files.\n2. Write this common code to the merged file.\n3. Remove the common code from all architecture-specific files.\n\n\n## Generated files\n\n### `zerrors_${GOOS}_${GOARCH}.go`\n\nA file containing all of the system's generated error numbers, error strings,\nsignal numbers, and constants. Generated by `mkerrors.sh` (see above).\n\n### `zsyscall_${GOOS}_${GOARCH}.go`\n\nA file containing all the generated syscalls for a specific GOOS and GOARCH.\nGenerated by `mksyscall.go` (see above).\n\n### `zsysnum_${GOOS}_${GOARCH}.go`\n\nA list of numeric constants for all the syscall number of the specific GOOS\nand GOARCH. Generated by mksysnum (see above).\n\n### `ztypes_${GOOS}_${GOARCH}.go`\n\nA file containing Go types for passing into (or returning from) syscalls.\nGenerated by godefs and the types file (see above).\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/affinity_linux.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// CPU affinity functions\n\npackage unix\n\nimport (\n\t\"math/bits\"\n\t\"unsafe\"\n)\n\nconst cpuSetSize = _CPU_SETSIZE / _NCPUBITS\n\n// CPUSet represents a CPU affinity mask.\ntype CPUSet [cpuSetSize]cpuMask\n\nfunc schedAffinity(trap uintptr, pid int, set *CPUSet) error {\n\t_, _, e := RawSyscall(trap, uintptr(pid), uintptr(unsafe.Sizeof(*set)), uintptr(unsafe.Pointer(set)))\n\tif e != 0 {\n\t\treturn errnoErr(e)\n\t}\n\treturn nil\n}\n\n// SchedGetaffinity gets the CPU affinity mask of the thread specified by pid.\n// If pid is 0 the calling thread is used.\nfunc SchedGetaffinity(pid int, set *CPUSet) error {\n\treturn schedAffinity(SYS_SCHED_GETAFFINITY, pid, set)\n}\n\n// SchedSetaffinity sets the CPU affinity mask of the thread specified by pid.\n// If pid is 0 the calling thread is used.\nfunc SchedSetaffinity(pid int, set *CPUSet) error {\n\treturn schedAffinity(SYS_SCHED_SETAFFINITY, pid, set)\n}\n\n// Zero clears the set s, so that it contains no CPUs.\nfunc (s *CPUSet) Zero() {\n\tclear(s[:])\n}\n\n// Fill adds all possible CPU bits to the set s. On Linux, [SchedSetaffinity]\n// will silently ignore any invalid CPU bits in [CPUSet] so this is an\n// efficient way of resetting the CPU affinity of a process.\nfunc (s *CPUSet) Fill() {\n\tfor i := range s {\n\t\ts[i] = ^cpuMask(0)\n\t}\n}\n\nfunc cpuBitsIndex(cpu int) int {\n\treturn cpu / _NCPUBITS\n}\n\nfunc cpuBitsMask(cpu int) cpuMask {\n\treturn cpuMask(1 << (uint(cpu) % _NCPUBITS))\n}\n\n// Set adds cpu to the set s.\nfunc (s *CPUSet) Set(cpu int) {\n\ti := cpuBitsIndex(cpu)\n\tif i < len(s) {\n\t\ts[i] |= cpuBitsMask(cpu)\n\t}\n}\n\n// Clear removes cpu from the set s.\nfunc (s *CPUSet) Clear(cpu int) {\n\ti := cpuBitsIndex(cpu)\n\tif i < len(s) {\n\t\ts[i] &^= cpuBitsMask(cpu)\n\t}\n}\n\n// IsSet reports whether cpu is in the set s.\nfunc (s *CPUSet) IsSet(cpu int) bool {\n\ti := cpuBitsIndex(cpu)\n\tif i < len(s) {\n\t\treturn s[i]&cpuBitsMask(cpu) != 0\n\t}\n\treturn false\n}\n\n// Count returns the number of CPUs in the set s.\nfunc (s *CPUSet) Count() int {\n\tc := 0\n\tfor _, b := range s {\n\t\tc += bits.OnesCount64(uint64(b))\n\t}\n\treturn c\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/aliases.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos\n\npackage unix\n\nimport \"syscall\"\n\ntype Signal = syscall.Signal\ntype Errno = syscall.Errno\ntype SysProcAttr = syscall.SysProcAttr\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/asm_aix_ppc64.s",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gc\n\n#include \"textflag.h\"\n\n//\n// System calls for ppc64, AIX are implemented in runtime/syscall_aix.go\n//\n\nTEXT ·syscall6(SB),NOSPLIT,$0-88\n\tJMP\tsyscall·syscall6(SB)\n\nTEXT ·rawSyscall6(SB),NOSPLIT,$0-88\n\tJMP\tsyscall·rawSyscall6(SB)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/asm_bsd_386.s",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (freebsd || netbsd || openbsd) && gc\n\n#include \"textflag.h\"\n\n// System call support for 386 BSD\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT\t·Syscall(SB),NOSPLIT,$0-28\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT\t·Syscall6(SB),NOSPLIT,$0-40\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT\t·Syscall9(SB),NOSPLIT,$0-52\n\tJMP\tsyscall·Syscall9(SB)\n\nTEXT\t·RawSyscall(SB),NOSPLIT,$0-28\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT\t·RawSyscall6(SB),NOSPLIT,$0-40\n\tJMP\tsyscall·RawSyscall6(SB)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/asm_bsd_amd64.s",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (darwin || dragonfly || freebsd || netbsd || openbsd) && gc\n\n#include \"textflag.h\"\n\n// System call support for AMD64 BSD\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT\t·Syscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT\t·Syscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT\t·Syscall9(SB),NOSPLIT,$0-104\n\tJMP\tsyscall·Syscall9(SB)\n\nTEXT\t·RawSyscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT\t·RawSyscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·RawSyscall6(SB)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/asm_bsd_arm.s",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (freebsd || netbsd || openbsd) && gc\n\n#include \"textflag.h\"\n\n// System call support for ARM BSD\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT\t·Syscall(SB),NOSPLIT,$0-28\n\tB\tsyscall·Syscall(SB)\n\nTEXT\t·Syscall6(SB),NOSPLIT,$0-40\n\tB\tsyscall·Syscall6(SB)\n\nTEXT\t·Syscall9(SB),NOSPLIT,$0-52\n\tB\tsyscall·Syscall9(SB)\n\nTEXT\t·RawSyscall(SB),NOSPLIT,$0-28\n\tB\tsyscall·RawSyscall(SB)\n\nTEXT\t·RawSyscall6(SB),NOSPLIT,$0-40\n\tB\tsyscall·RawSyscall6(SB)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/asm_bsd_arm64.s",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (darwin || freebsd || netbsd || openbsd) && gc\n\n#include \"textflag.h\"\n\n// System call support for ARM64 BSD\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT\t·Syscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT\t·Syscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT\t·Syscall9(SB),NOSPLIT,$0-104\n\tJMP\tsyscall·Syscall9(SB)\n\nTEXT\t·RawSyscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT\t·RawSyscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·RawSyscall6(SB)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/asm_bsd_ppc64.s",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (darwin || freebsd || netbsd || openbsd) && gc\n\n#include \"textflag.h\"\n\n//\n// System call support for ppc64, BSD\n//\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT\t·Syscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT\t·Syscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT\t·Syscall9(SB),NOSPLIT,$0-104\n\tJMP\tsyscall·Syscall9(SB)\n\nTEXT\t·RawSyscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT\t·RawSyscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·RawSyscall6(SB)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/asm_bsd_riscv64.s",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (darwin || freebsd || netbsd || openbsd) && gc\n\n#include \"textflag.h\"\n\n// System call support for RISCV64 BSD\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT\t·Syscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT\t·Syscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT\t·Syscall9(SB),NOSPLIT,$0-104\n\tJMP\tsyscall·Syscall9(SB)\n\nTEXT\t·RawSyscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT\t·RawSyscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·RawSyscall6(SB)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/asm_linux_386.s",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gc\n\n#include \"textflag.h\"\n\n//\n// System calls for 386, Linux\n//\n\n// See ../runtime/sys_linux_386.s for the reason why we always use int 0x80\n// instead of the glibc-specific \"CALL 0x10(GS)\".\n#define INVOKE_SYSCALL\tINT\t$0x80\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT ·Syscall(SB),NOSPLIT,$0-28\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT ·Syscall6(SB),NOSPLIT,$0-40\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT ·SyscallNoError(SB),NOSPLIT,$0-24\n\tCALL\truntime·entersyscall(SB)\n\tMOVL\ttrap+0(FP), AX  // syscall entry\n\tMOVL\ta1+4(FP), BX\n\tMOVL\ta2+8(FP), CX\n\tMOVL\ta3+12(FP), DX\n\tMOVL\t$0, SI\n\tMOVL\t$0, DI\n\tINVOKE_SYSCALL\n\tMOVL\tAX, r1+16(FP)\n\tMOVL\tDX, r2+20(FP)\n\tCALL\truntime·exitsyscall(SB)\n\tRET\n\nTEXT ·RawSyscall(SB),NOSPLIT,$0-28\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT ·RawSyscall6(SB),NOSPLIT,$0-40\n\tJMP\tsyscall·RawSyscall6(SB)\n\nTEXT ·RawSyscallNoError(SB),NOSPLIT,$0-24\n\tMOVL\ttrap+0(FP), AX  // syscall entry\n\tMOVL\ta1+4(FP), BX\n\tMOVL\ta2+8(FP), CX\n\tMOVL\ta3+12(FP), DX\n\tMOVL\t$0, SI\n\tMOVL\t$0, DI\n\tINVOKE_SYSCALL\n\tMOVL\tAX, r1+16(FP)\n\tMOVL\tDX, r2+20(FP)\n\tRET\n\nTEXT ·socketcall(SB),NOSPLIT,$0-36\n\tJMP\tsyscall·socketcall(SB)\n\nTEXT ·rawsocketcall(SB),NOSPLIT,$0-36\n\tJMP\tsyscall·rawsocketcall(SB)\n\nTEXT ·seek(SB),NOSPLIT,$0-28\n\tJMP\tsyscall·seek(SB)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/asm_linux_amd64.s",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gc\n\n#include \"textflag.h\"\n\n//\n// System calls for AMD64, Linux\n//\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT ·Syscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT ·Syscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT ·SyscallNoError(SB),NOSPLIT,$0-48\n\tCALL\truntime·entersyscall(SB)\n\tMOVQ\ta1+8(FP), DI\n\tMOVQ\ta2+16(FP), SI\n\tMOVQ\ta3+24(FP), DX\n\tMOVQ\t$0, R10\n\tMOVQ\t$0, R8\n\tMOVQ\t$0, R9\n\tMOVQ\ttrap+0(FP), AX\t// syscall entry\n\tSYSCALL\n\tMOVQ\tAX, r1+32(FP)\n\tMOVQ\tDX, r2+40(FP)\n\tCALL\truntime·exitsyscall(SB)\n\tRET\n\nTEXT ·RawSyscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT ·RawSyscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·RawSyscall6(SB)\n\nTEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48\n\tMOVQ\ta1+8(FP), DI\n\tMOVQ\ta2+16(FP), SI\n\tMOVQ\ta3+24(FP), DX\n\tMOVQ\t$0, R10\n\tMOVQ\t$0, R8\n\tMOVQ\t$0, R9\n\tMOVQ\ttrap+0(FP), AX\t// syscall entry\n\tSYSCALL\n\tMOVQ\tAX, r1+32(FP)\n\tMOVQ\tDX, r2+40(FP)\n\tRET\n\nTEXT ·gettimeofday(SB),NOSPLIT,$0-16\n\tJMP\tsyscall·gettimeofday(SB)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/asm_linux_arm.s",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gc\n\n#include \"textflag.h\"\n\n//\n// System calls for arm, Linux\n//\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT ·Syscall(SB),NOSPLIT,$0-28\n\tB\tsyscall·Syscall(SB)\n\nTEXT ·Syscall6(SB),NOSPLIT,$0-40\n\tB\tsyscall·Syscall6(SB)\n\nTEXT ·SyscallNoError(SB),NOSPLIT,$0-24\n\tBL\truntime·entersyscall(SB)\n\tMOVW\ttrap+0(FP), R7\n\tMOVW\ta1+4(FP), R0\n\tMOVW\ta2+8(FP), R1\n\tMOVW\ta3+12(FP), R2\n\tMOVW\t$0, R3\n\tMOVW\t$0, R4\n\tMOVW\t$0, R5\n\tSWI\t$0\n\tMOVW\tR0, r1+16(FP)\n\tMOVW\t$0, R0\n\tMOVW\tR0, r2+20(FP)\n\tBL\truntime·exitsyscall(SB)\n\tRET\n\nTEXT ·RawSyscall(SB),NOSPLIT,$0-28\n\tB\tsyscall·RawSyscall(SB)\n\nTEXT ·RawSyscall6(SB),NOSPLIT,$0-40\n\tB\tsyscall·RawSyscall6(SB)\n\nTEXT ·RawSyscallNoError(SB),NOSPLIT,$0-24\n\tMOVW\ttrap+0(FP), R7\t// syscall entry\n\tMOVW\ta1+4(FP), R0\n\tMOVW\ta2+8(FP), R1\n\tMOVW\ta3+12(FP), R2\n\tSWI\t$0\n\tMOVW\tR0, r1+16(FP)\n\tMOVW\t$0, R0\n\tMOVW\tR0, r2+20(FP)\n\tRET\n\nTEXT ·seek(SB),NOSPLIT,$0-28\n\tB\tsyscall·seek(SB)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/asm_linux_arm64.s",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && arm64 && gc\n\n#include \"textflag.h\"\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT ·Syscall(SB),NOSPLIT,$0-56\n\tB\tsyscall·Syscall(SB)\n\nTEXT ·Syscall6(SB),NOSPLIT,$0-80\n\tB\tsyscall·Syscall6(SB)\n\nTEXT ·SyscallNoError(SB),NOSPLIT,$0-48\n\tBL\truntime·entersyscall(SB)\n\tMOVD\ta1+8(FP), R0\n\tMOVD\ta2+16(FP), R1\n\tMOVD\ta3+24(FP), R2\n\tMOVD\t$0, R3\n\tMOVD\t$0, R4\n\tMOVD\t$0, R5\n\tMOVD\ttrap+0(FP), R8\t// syscall entry\n\tSVC\n\tMOVD\tR0, r1+32(FP)\t// r1\n\tMOVD\tR1, r2+40(FP)\t// r2\n\tBL\truntime·exitsyscall(SB)\n\tRET\n\nTEXT ·RawSyscall(SB),NOSPLIT,$0-56\n\tB\tsyscall·RawSyscall(SB)\n\nTEXT ·RawSyscall6(SB),NOSPLIT,$0-80\n\tB\tsyscall·RawSyscall6(SB)\n\nTEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48\n\tMOVD\ta1+8(FP), R0\n\tMOVD\ta2+16(FP), R1\n\tMOVD\ta3+24(FP), R2\n\tMOVD\t$0, R3\n\tMOVD\t$0, R4\n\tMOVD\t$0, R5\n\tMOVD\ttrap+0(FP), R8\t// syscall entry\n\tSVC\n\tMOVD\tR0, r1+32(FP)\n\tMOVD\tR1, r2+40(FP)\n\tRET\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/asm_linux_loong64.s",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && loong64 && gc\n\n#include \"textflag.h\"\n\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT ·Syscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT ·Syscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT ·SyscallNoError(SB),NOSPLIT,$0-48\n\tJAL\truntime·entersyscall(SB)\n\tMOVV\ta1+8(FP), R4\n\tMOVV\ta2+16(FP), R5\n\tMOVV\ta3+24(FP), R6\n\tMOVV\tR0, R7\n\tMOVV\tR0, R8\n\tMOVV\tR0, R9\n\tMOVV\ttrap+0(FP), R11\t// syscall entry\n\tSYSCALL\n\tMOVV\tR4, r1+32(FP)\n\tMOVV\tR0, r2+40(FP)\t// r2 is not used. Always set to 0\n\tJAL\truntime·exitsyscall(SB)\n\tRET\n\nTEXT ·RawSyscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT ·RawSyscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·RawSyscall6(SB)\n\nTEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48\n\tMOVV\ta1+8(FP), R4\n\tMOVV\ta2+16(FP), R5\n\tMOVV\ta3+24(FP), R6\n\tMOVV\tR0, R7\n\tMOVV\tR0, R8\n\tMOVV\tR0, R9\n\tMOVV\ttrap+0(FP), R11\t// syscall entry\n\tSYSCALL\n\tMOVV\tR4, r1+32(FP)\n\tMOVV\tR0, r2+40(FP)\t// r2 is not used. Always set to 0\n\tRET\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/asm_linux_mips64x.s",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && (mips64 || mips64le) && gc\n\n#include \"textflag.h\"\n\n//\n// System calls for mips64, Linux\n//\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT ·Syscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT ·Syscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT ·SyscallNoError(SB),NOSPLIT,$0-48\n\tJAL\truntime·entersyscall(SB)\n\tMOVV\ta1+8(FP), R4\n\tMOVV\ta2+16(FP), R5\n\tMOVV\ta3+24(FP), R6\n\tMOVV\tR0, R7\n\tMOVV\tR0, R8\n\tMOVV\tR0, R9\n\tMOVV\ttrap+0(FP), R2\t// syscall entry\n\tSYSCALL\n\tMOVV\tR2, r1+32(FP)\n\tMOVV\tR3, r2+40(FP)\n\tJAL\truntime·exitsyscall(SB)\n\tRET\n\nTEXT ·RawSyscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT ·RawSyscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·RawSyscall6(SB)\n\nTEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48\n\tMOVV\ta1+8(FP), R4\n\tMOVV\ta2+16(FP), R5\n\tMOVV\ta3+24(FP), R6\n\tMOVV\tR0, R7\n\tMOVV\tR0, R8\n\tMOVV\tR0, R9\n\tMOVV\ttrap+0(FP), R2\t// syscall entry\n\tSYSCALL\n\tMOVV\tR2, r1+32(FP)\n\tMOVV\tR3, r2+40(FP)\n\tRET\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/asm_linux_mipsx.s",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && (mips || mipsle) && gc\n\n#include \"textflag.h\"\n\n//\n// System calls for mips, Linux\n//\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT ·Syscall(SB),NOSPLIT,$0-28\n\tJMP syscall·Syscall(SB)\n\nTEXT ·Syscall6(SB),NOSPLIT,$0-40\n\tJMP syscall·Syscall6(SB)\n\nTEXT ·Syscall9(SB),NOSPLIT,$0-52\n\tJMP syscall·Syscall9(SB)\n\nTEXT ·SyscallNoError(SB),NOSPLIT,$0-24\n\tJAL\truntime·entersyscall(SB)\n\tMOVW\ta1+4(FP), R4\n\tMOVW\ta2+8(FP), R5\n\tMOVW\ta3+12(FP), R6\n\tMOVW\tR0, R7\n\tMOVW\ttrap+0(FP), R2\t// syscall entry\n\tSYSCALL\n\tMOVW\tR2, r1+16(FP)\t// r1\n\tMOVW\tR3, r2+20(FP)\t// r2\n\tJAL\truntime·exitsyscall(SB)\n\tRET\n\nTEXT ·RawSyscall(SB),NOSPLIT,$0-28\n\tJMP syscall·RawSyscall(SB)\n\nTEXT ·RawSyscall6(SB),NOSPLIT,$0-40\n\tJMP syscall·RawSyscall6(SB)\n\nTEXT ·RawSyscallNoError(SB),NOSPLIT,$0-24\n\tMOVW\ta1+4(FP), R4\n\tMOVW\ta2+8(FP), R5\n\tMOVW\ta3+12(FP), R6\n\tMOVW\ttrap+0(FP), R2\t// syscall entry\n\tSYSCALL\n\tMOVW\tR2, r1+16(FP)\n\tMOVW\tR3, r2+20(FP)\n\tRET\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && (ppc64 || ppc64le) && gc\n\n#include \"textflag.h\"\n\n//\n// System calls for ppc64, Linux\n//\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT ·SyscallNoError(SB),NOSPLIT,$0-48\n\tBL\truntime·entersyscall(SB)\n\tMOVD\ta1+8(FP), R3\n\tMOVD\ta2+16(FP), R4\n\tMOVD\ta3+24(FP), R5\n\tMOVD\tR0, R6\n\tMOVD\tR0, R7\n\tMOVD\tR0, R8\n\tMOVD\ttrap+0(FP), R9\t// syscall entry\n\tSYSCALL R9\n\tMOVD\tR3, r1+32(FP)\n\tMOVD\tR4, r2+40(FP)\n\tBL\truntime·exitsyscall(SB)\n\tRET\n\nTEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48\n\tMOVD\ta1+8(FP), R3\n\tMOVD\ta2+16(FP), R4\n\tMOVD\ta3+24(FP), R5\n\tMOVD\tR0, R6\n\tMOVD\tR0, R7\n\tMOVD\tR0, R8\n\tMOVD\ttrap+0(FP), R9\t// syscall entry\n\tSYSCALL R9\n\tMOVD\tR3, r1+32(FP)\n\tMOVD\tR4, r2+40(FP)\n\tRET\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/asm_linux_riscv64.s",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build riscv64 && gc\n\n#include \"textflag.h\"\n\n//\n// System calls for linux/riscv64.\n//\n// Where available, just jump to package syscall's implementation of\n// these functions.\n\nTEXT ·Syscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT ·Syscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT ·SyscallNoError(SB),NOSPLIT,$0-48\n\tCALL\truntime·entersyscall(SB)\n\tMOV\ta1+8(FP), A0\n\tMOV\ta2+16(FP), A1\n\tMOV\ta3+24(FP), A2\n\tMOV\ttrap+0(FP), A7\t// syscall entry\n\tECALL\n\tMOV\tA0, r1+32(FP)\t// r1\n\tMOV\tA1, r2+40(FP)\t// r2\n\tCALL\truntime·exitsyscall(SB)\n\tRET\n\nTEXT ·RawSyscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT ·RawSyscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·RawSyscall6(SB)\n\nTEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48\n\tMOV\ta1+8(FP), A0\n\tMOV\ta2+16(FP), A1\n\tMOV\ta3+24(FP), A2\n\tMOV\ttrap+0(FP), A7\t// syscall entry\n\tECALL\n\tMOV\tA0, r1+32(FP)\n\tMOV\tA1, r2+40(FP)\n\tRET\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/asm_linux_s390x.s",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && s390x && gc\n\n#include \"textflag.h\"\n\n//\n// System calls for s390x, Linux\n//\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT ·Syscall(SB),NOSPLIT,$0-56\n\tBR\tsyscall·Syscall(SB)\n\nTEXT ·Syscall6(SB),NOSPLIT,$0-80\n\tBR\tsyscall·Syscall6(SB)\n\nTEXT ·SyscallNoError(SB),NOSPLIT,$0-48\n\tBL\truntime·entersyscall(SB)\n\tMOVD\ta1+8(FP), R2\n\tMOVD\ta2+16(FP), R3\n\tMOVD\ta3+24(FP), R4\n\tMOVD\t$0, R5\n\tMOVD\t$0, R6\n\tMOVD\t$0, R7\n\tMOVD\ttrap+0(FP), R1\t// syscall entry\n\tSYSCALL\n\tMOVD\tR2, r1+32(FP)\n\tMOVD\tR3, r2+40(FP)\n\tBL\truntime·exitsyscall(SB)\n\tRET\n\nTEXT ·RawSyscall(SB),NOSPLIT,$0-56\n\tBR\tsyscall·RawSyscall(SB)\n\nTEXT ·RawSyscall6(SB),NOSPLIT,$0-80\n\tBR\tsyscall·RawSyscall6(SB)\n\nTEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48\n\tMOVD\ta1+8(FP), R2\n\tMOVD\ta2+16(FP), R3\n\tMOVD\ta3+24(FP), R4\n\tMOVD\t$0, R5\n\tMOVD\t$0, R6\n\tMOVD\t$0, R7\n\tMOVD\ttrap+0(FP), R1\t// syscall entry\n\tSYSCALL\n\tMOVD\tR2, r1+32(FP)\n\tMOVD\tR3, r2+40(FP)\n\tRET\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/asm_openbsd_mips64.s",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gc\n\n#include \"textflag.h\"\n\n//\n// System call support for mips64, OpenBSD\n//\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT\t·Syscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT\t·Syscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT\t·Syscall9(SB),NOSPLIT,$0-104\n\tJMP\tsyscall·Syscall9(SB)\n\nTEXT\t·RawSyscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT\t·RawSyscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·RawSyscall6(SB)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/asm_solaris_amd64.s",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gc\n\n#include \"textflag.h\"\n\n//\n// System calls for amd64, Solaris are implemented in runtime/syscall_solaris.go\n//\n\nTEXT ·sysvicall6(SB),NOSPLIT,$0-88\n\tJMP\tsyscall·sysvicall6(SB)\n\nTEXT ·rawSysvicall6(SB),NOSPLIT,$0-88\n\tJMP\tsyscall·rawSysvicall6(SB)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/asm_zos_s390x.s",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build zos && s390x && gc\n\n#include \"textflag.h\"\n\n#define PSALAA            1208(R0)\n#define GTAB64(x)           80(x)\n#define LCA64(x)            88(x)\n#define SAVSTACK_ASYNC(x)  336(x) // in the LCA\n#define CAA(x)               8(x)\n#define CEECAATHDID(x)     976(x) // in the CAA\n#define EDCHPXV(x)        1016(x) // in the CAA\n#define GOCB(x)           1104(x) // in the CAA\n\n// SS_*, where x=SAVSTACK_ASYNC\n#define SS_LE(x)             0(x)\n#define SS_GO(x)             8(x)\n#define SS_ERRNO(x)         16(x)\n#define SS_ERRNOJR(x)       20(x)\n\n// Function Descriptor Offsets\n#define __errno  0x156*16\n#define __err2ad 0x16C*16\n\n// Call Instructions\n#define LE_CALL    BYTE $0x0D; BYTE $0x76 // BL R7, R6\n#define SVC_LOAD   BYTE $0x0A; BYTE $0x08 // SVC 08 LOAD\n#define SVC_DELETE BYTE $0x0A; BYTE $0x09 // SVC 09 DELETE\n\nDATA zosLibVec<>(SB)/8, $0\nGLOBL zosLibVec<>(SB), NOPTR, $8\n\nTEXT ·initZosLibVec(SB), NOSPLIT|NOFRAME, $0-0\n\tMOVW PSALAA, R8\n\tMOVD LCA64(R8), R8\n\tMOVD CAA(R8), R8\n\tMOVD EDCHPXV(R8), R8\n\tMOVD R8, zosLibVec<>(SB)\n\tRET\n\nTEXT ·GetZosLibVec(SB), NOSPLIT|NOFRAME, $0-0\n\tMOVD zosLibVec<>(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\nTEXT ·clearErrno(SB), NOSPLIT, $0-0\n\tBL   addrerrno<>(SB)\n\tMOVD $0, 0(R3)\n\tRET\n\n// Returns the address of errno in R3.\nTEXT addrerrno<>(SB), NOSPLIT|NOFRAME, $0-0\n\t// Get library control area (LCA).\n\tMOVW PSALAA, R8\n\tMOVD LCA64(R8), R8\n\n\t// Get __errno FuncDesc.\n\tMOVD CAA(R8), R9\n\tMOVD EDCHPXV(R9), R9\n\tADD  $(__errno), R9\n\tLMG  0(R9), R5, R6\n\n\t// Switch to saved LE stack.\n\tMOVD SAVSTACK_ASYNC(R8), R9\n\tMOVD 0(R9), R4\n\tMOVD $0, 0(R9)\n\n\t// Call __errno function.\n\tLE_CALL\n\tNOPH\n\n\t// Switch back to Go stack.\n\tXOR  R0, R0    // Restore R0 to $0.\n\tMOVD R4, 0(R9) // Save stack pointer.\n\tRET\n\n// func svcCall(fnptr unsafe.Pointer, argv *unsafe.Pointer, dsa *uint64)\nTEXT ·svcCall(SB), NOSPLIT, $0\n\tBL   runtime·save_g(SB)     // Save g and stack pointer\n\tMOVW PSALAA, R8\n\tMOVD LCA64(R8), R8\n\tMOVD SAVSTACK_ASYNC(R8), R9\n\tMOVD R15, 0(R9)\n\n\tMOVD argv+8(FP), R1   // Move function arguments into registers\n\tMOVD dsa+16(FP), g\n\tMOVD fnptr+0(FP), R15\n\n\tBYTE $0x0D // Branch to function\n\tBYTE $0xEF\n\n\tBL   runtime·load_g(SB)     // Restore g and stack pointer\n\tMOVW PSALAA, R8\n\tMOVD LCA64(R8), R8\n\tMOVD SAVSTACK_ASYNC(R8), R9\n\tMOVD 0(R9), R15\n\n\tRET\n\n// func svcLoad(name *byte) unsafe.Pointer\nTEXT ·svcLoad(SB), NOSPLIT, $0\n\tMOVD R15, R2         // Save go stack pointer\n\tMOVD name+0(FP), R0  // Move SVC args into registers\n\tMOVD $0x80000000, R1\n\tMOVD $0, R15\n\tSVC_LOAD\n\tMOVW R15, R3         // Save return code from SVC\n\tMOVD R2, R15         // Restore go stack pointer\n\tCMP  R3, $0          // Check SVC return code\n\tBNE  error\n\n\tMOVD $-2, R3       // Reset last bit of entry point to zero\n\tAND  R0, R3\n\tMOVD R3, ret+8(FP) // Return entry point returned by SVC\n\tCMP  R0, R3        // Check if last bit of entry point was set\n\tBNE  done\n\n\tMOVD R15, R2 // Save go stack pointer\n\tMOVD $0, R15 // Move SVC args into registers (entry point still in r0 from SVC 08)\n\tSVC_DELETE\n\tMOVD R2, R15 // Restore go stack pointer\n\nerror:\n\tMOVD $0, ret+8(FP) // Return 0 on failure\n\ndone:\n\tXOR R0, R0 // Reset r0 to 0\n\tRET\n\n// func svcUnload(name *byte, fnptr unsafe.Pointer) int64\nTEXT ·svcUnload(SB), NOSPLIT, $0\n\tMOVD R15, R2          // Save go stack pointer\n\tMOVD name+0(FP), R0   // Move SVC args into registers\n\tMOVD fnptr+8(FP), R15\n\tSVC_DELETE\n\tXOR  R0, R0           // Reset r0 to 0\n\tMOVD R15, R1          // Save SVC return code\n\tMOVD R2, R15          // Restore go stack pointer\n\tMOVD R1, ret+16(FP)   // Return SVC return code\n\tRET\n\n// func gettid() uint64\nTEXT ·gettid(SB), NOSPLIT, $0\n\t// Get library control area (LCA).\n\tMOVW PSALAA, R8\n\tMOVD LCA64(R8), R8\n\n\t// Get CEECAATHDID\n\tMOVD CAA(R8), R9\n\tMOVD CEECAATHDID(R9), R9\n\tMOVD R9, ret+0(FP)\n\n\tRET\n\n//\n// Call LE function, if the return is -1\n// errno and errno2 is retrieved\n//\nTEXT ·CallLeFuncWithErr(SB), NOSPLIT, $0\n\tMOVW PSALAA, R8\n\tMOVD LCA64(R8), R8\n\tMOVD CAA(R8), R9\n\tMOVD g, GOCB(R9)\n\n\t// Restore LE stack.\n\tMOVD SAVSTACK_ASYNC(R8), R9 // R9-> LE stack frame saving address\n\tMOVD 0(R9), R4              // R4-> restore previously saved stack frame pointer\n\n\tMOVD parms_base+8(FP), R7 // R7 -> argument array\n\tMOVD parms_len+16(FP), R8 // R8 number of arguments\n\n\t//  arg 1 ---> R1\n\tCMP  R8, $0\n\tBEQ  docall\n\tSUB  $1, R8\n\tMOVD 0(R7), R1\n\n\t//  arg 2 ---> R2\n\tCMP  R8, $0\n\tBEQ  docall\n\tSUB  $1, R8\n\tADD  $8, R7\n\tMOVD 0(R7), R2\n\n\t//  arg 3 --> R3\n\tCMP  R8, $0\n\tBEQ  docall\n\tSUB  $1, R8\n\tADD  $8, R7\n\tMOVD 0(R7), R3\n\n\tCMP  R8, $0\n\tBEQ  docall\n\tMOVD $2176+16, R6 // starting LE stack address-8 to store 4th argument\n\nrepeat:\n\tADD  $8, R7\n\tMOVD 0(R7), R0      // advance arg pointer by 8 byte\n\tADD  $8, R6         // advance LE argument address by 8 byte\n\tMOVD R0, (R4)(R6*1) // copy argument from go-slice to le-frame\n\tSUB  $1, R8\n\tCMP  R8, $0\n\tBNE  repeat\n\ndocall:\n\tMOVD funcdesc+0(FP), R8 // R8-> function descriptor\n\tLMG  0(R8), R5, R6\n\tMOVD $0, 0(R9)          // R9 address of SAVSTACK_ASYNC\n\tLE_CALL                 // balr R7, R6 (return #1)\n\tNOPH\n\tMOVD R3, ret+32(FP)\n\tCMP  R3, $-1            // compare result to -1\n\tBNE  done\n\n\t// retrieve errno and errno2\n\tMOVD  zosLibVec<>(SB), R8\n\tADD   $(__errno), R8\n\tLMG   0(R8), R5, R6\n\tLE_CALL                   // balr R7, R6 __errno (return #3)\n\tNOPH\n\tMOVWZ 0(R3), R3\n\tMOVD  R3, err+48(FP)\n\tMOVD  zosLibVec<>(SB), R8\n\tADD   $(__err2ad), R8\n\tLMG   0(R8), R5, R6\n\tLE_CALL                   // balr R7, R6 __err2ad (return #2)\n\tNOPH\n\tMOVW  (R3), R2            // retrieve errno2\n\tMOVD  R2, errno2+40(FP)   // store in return area\n\ndone:\n\tMOVD R4, 0(R9)            // Save stack pointer.\n\tRET\n\n//\n// Call LE function, if the return is 0\n// errno and errno2 is retrieved\n//\nTEXT ·CallLeFuncWithPtrReturn(SB), NOSPLIT, $0\n\tMOVW PSALAA, R8\n\tMOVD LCA64(R8), R8\n\tMOVD CAA(R8), R9\n\tMOVD g, GOCB(R9)\n\n\t// Restore LE stack.\n\tMOVD SAVSTACK_ASYNC(R8), R9 // R9-> LE stack frame saving address\n\tMOVD 0(R9), R4              // R4-> restore previously saved stack frame pointer\n\n\tMOVD parms_base+8(FP), R7 // R7 -> argument array\n\tMOVD parms_len+16(FP), R8 // R8 number of arguments\n\n\t//  arg 1 ---> R1\n\tCMP  R8, $0\n\tBEQ  docall\n\tSUB  $1, R8\n\tMOVD 0(R7), R1\n\n\t//  arg 2 ---> R2\n\tCMP  R8, $0\n\tBEQ  docall\n\tSUB  $1, R8\n\tADD  $8, R7\n\tMOVD 0(R7), R2\n\n\t//  arg 3 --> R3\n\tCMP  R8, $0\n\tBEQ  docall\n\tSUB  $1, R8\n\tADD  $8, R7\n\tMOVD 0(R7), R3\n\n\tCMP  R8, $0\n\tBEQ  docall\n\tMOVD $2176+16, R6 // starting LE stack address-8 to store 4th argument\n\nrepeat:\n\tADD  $8, R7\n\tMOVD 0(R7), R0      // advance arg pointer by 8 byte\n\tADD  $8, R6         // advance LE argument address by 8 byte\n\tMOVD R0, (R4)(R6*1) // copy argument from go-slice to le-frame\n\tSUB  $1, R8\n\tCMP  R8, $0\n\tBNE  repeat\n\ndocall:\n\tMOVD funcdesc+0(FP), R8 // R8-> function descriptor\n\tLMG  0(R8), R5, R6\n\tMOVD $0, 0(R9)          // R9 address of SAVSTACK_ASYNC\n\tLE_CALL                 // balr R7, R6 (return #1)\n\tNOPH\n\tMOVD R3, ret+32(FP)\n\tCMP  R3, $0             // compare result to 0\n\tBNE  done\n\n\t// retrieve errno and errno2\n\tMOVD  zosLibVec<>(SB), R8\n\tADD   $(__errno), R8\n\tLMG   0(R8), R5, R6\n\tLE_CALL                   // balr R7, R6 __errno (return #3)\n\tNOPH\n\tMOVWZ 0(R3), R3\n\tMOVD  R3, err+48(FP)\n\tMOVD  zosLibVec<>(SB), R8\n\tADD   $(__err2ad), R8\n\tLMG   0(R8), R5, R6\n\tLE_CALL                   // balr R7, R6 __err2ad (return #2)\n\tNOPH\n\tMOVW  (R3), R2            // retrieve errno2\n\tMOVD  R2, errno2+40(FP)   // store in return area\n\tXOR   R2, R2\n\tMOVWZ R2, (R3)            // clear errno2\n\ndone:\n\tMOVD R4, 0(R9)            // Save stack pointer.\n\tRET\n\n//\n// function to test if a pointer can be safely dereferenced (content read)\n// return 0 for succces\n//\nTEXT ·ptrtest(SB), NOSPLIT, $0-16\n\tMOVD arg+0(FP), R10 // test pointer in R10\n\n\t// set up R2 to point to CEECAADMC\n\tBYTE $0xE3; BYTE $0x20; BYTE $0x04; BYTE $0xB8; BYTE $0x00; BYTE $0x17 // llgt  2,1208\n\tBYTE $0xB9; BYTE $0x17; BYTE $0x00; BYTE $0x22                         // llgtr 2,2\n\tBYTE $0xA5; BYTE $0x26; BYTE $0x7F; BYTE $0xFF                         // nilh  2,32767\n\tBYTE $0xE3; BYTE $0x22; BYTE $0x00; BYTE $0x58; BYTE $0x00; BYTE $0x04 // lg    2,88(2)\n\tBYTE $0xE3; BYTE $0x22; BYTE $0x00; BYTE $0x08; BYTE $0x00; BYTE $0x04 // lg    2,8(2)\n\tBYTE $0x41; BYTE $0x22; BYTE $0x03; BYTE $0x68                         // la    2,872(2)\n\n\t// set up R5 to point to the \"shunt\" path which set 1 to R3 (failure)\n\tBYTE $0xB9; BYTE $0x82; BYTE $0x00; BYTE $0x33 // xgr   3,3\n\tBYTE $0xA7; BYTE $0x55; BYTE $0x00; BYTE $0x04 // bras  5,lbl1\n\tBYTE $0xA7; BYTE $0x39; BYTE $0x00; BYTE $0x01 // lghi  3,1\n\n\t// if r3 is not zero (failed) then branch to finish\n\tBYTE $0xB9; BYTE $0x02; BYTE $0x00; BYTE $0x33 // lbl1     ltgr  3,3\n\tBYTE $0xA7; BYTE $0x74; BYTE $0x00; BYTE $0x08 // brc   b'0111',lbl2\n\n\t// stomic store shunt address in R5 into CEECAADMC\n\tBYTE $0xE3; BYTE $0x52; BYTE $0x00; BYTE $0x00; BYTE $0x00; BYTE $0x24 // stg   5,0(2)\n\n\t// now try reading from the test pointer in R10, if it fails it branches to the \"lghi\" instruction above\n\tBYTE $0xE3; BYTE $0x9A; BYTE $0x00; BYTE $0x00; BYTE $0x00; BYTE $0x04 // lg    9,0(10)\n\n\t// finish here, restore 0 into CEECAADMC\n\tBYTE $0xB9; BYTE $0x82; BYTE $0x00; BYTE $0x99                         // lbl2     xgr   9,9\n\tBYTE $0xE3; BYTE $0x92; BYTE $0x00; BYTE $0x00; BYTE $0x00; BYTE $0x24 // stg   9,0(2)\n\tMOVD R3, ret+8(FP)                                                     // result in R3\n\tRET\n\n//\n// function to test if a untptr can be loaded from a pointer\n// return 1: the 8-byte content\n//        2: 0 for success, 1 for failure\n//\n// func safeload(ptr uintptr) ( value uintptr, error uintptr)\nTEXT ·safeload(SB), NOSPLIT, $0-24\n\tMOVD ptr+0(FP), R10                                                    // test pointer in R10\n\tMOVD $0x0, R6\n\tBYTE $0xE3; BYTE $0x20; BYTE $0x04; BYTE $0xB8; BYTE $0x00; BYTE $0x17 // llgt  2,1208\n\tBYTE $0xB9; BYTE $0x17; BYTE $0x00; BYTE $0x22                         // llgtr 2,2\n\tBYTE $0xA5; BYTE $0x26; BYTE $0x7F; BYTE $0xFF                         // nilh  2,32767\n\tBYTE $0xE3; BYTE $0x22; BYTE $0x00; BYTE $0x58; BYTE $0x00; BYTE $0x04 // lg    2,88(2)\n\tBYTE $0xE3; BYTE $0x22; BYTE $0x00; BYTE $0x08; BYTE $0x00; BYTE $0x04 // lg    2,8(2)\n\tBYTE $0x41; BYTE $0x22; BYTE $0x03; BYTE $0x68                         // la    2,872(2)\n\tBYTE $0xB9; BYTE $0x82; BYTE $0x00; BYTE $0x33                         // xgr   3,3\n\tBYTE $0xA7; BYTE $0x55; BYTE $0x00; BYTE $0x04                         // bras  5,lbl1\n\tBYTE $0xA7; BYTE $0x39; BYTE $0x00; BYTE $0x01                         // lghi  3,1\n\tBYTE $0xB9; BYTE $0x02; BYTE $0x00; BYTE $0x33                         // lbl1     ltgr  3,3\n\tBYTE $0xA7; BYTE $0x74; BYTE $0x00; BYTE $0x08                         // brc   b'0111',lbl2\n\tBYTE $0xE3; BYTE $0x52; BYTE $0x00; BYTE $0x00; BYTE $0x00; BYTE $0x24 // stg 5,0(2)\n\tBYTE $0xE3; BYTE $0x6A; BYTE $0x00; BYTE $0x00; BYTE $0x00; BYTE $0x04 // lg    6,0(10)\n\tBYTE $0xB9; BYTE $0x82; BYTE $0x00; BYTE $0x99                         // lbl2     xgr   9,9\n\tBYTE $0xE3; BYTE $0x92; BYTE $0x00; BYTE $0x00; BYTE $0x00; BYTE $0x24 // stg   9,0(2)\n\tMOVD R6, value+8(FP)                                                   // result in R6\n\tMOVD R3, error+16(FP)                                                  // error in R3\n\tRET\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/auxv.go",
    "content": "// Copyright 2025 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build go1.21 && (aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos)\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n//go:linkname runtime_getAuxv runtime.getAuxv\nfunc runtime_getAuxv() []uintptr\n\n// Auxv returns the ELF auxiliary vector as a sequence of key/value pairs.\n// The returned slice is always a fresh copy, owned by the caller.\n// It returns an error on non-ELF platforms, or if the auxiliary vector cannot be accessed,\n// which happens in some locked-down environments and build modes.\nfunc Auxv() ([][2]uintptr, error) {\n\tvec := runtime_getAuxv()\n\tvecLen := len(vec)\n\n\tif vecLen == 0 {\n\t\treturn nil, syscall.ENOENT\n\t}\n\n\tif vecLen%2 != 0 {\n\t\treturn nil, syscall.EINVAL\n\t}\n\n\tresult := make([]uintptr, vecLen)\n\tcopy(result, vec)\n\treturn unsafe.Slice((*[2]uintptr)(unsafe.Pointer(&result[0])), vecLen/2), nil\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/auxv_unsupported.go",
    "content": "// Copyright 2025 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build !go1.21 && (aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos)\n\npackage unix\n\nimport \"syscall\"\n\nfunc Auxv() ([][2]uintptr, error) {\n\treturn nil, syscall.ENOTSUP\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/bluetooth_linux.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Bluetooth sockets and messages\n\npackage unix\n\n// Bluetooth Protocols\nconst (\n\tBTPROTO_L2CAP  = 0\n\tBTPROTO_HCI    = 1\n\tBTPROTO_SCO    = 2\n\tBTPROTO_RFCOMM = 3\n\tBTPROTO_BNEP   = 4\n\tBTPROTO_CMTP   = 5\n\tBTPROTO_HIDP   = 6\n\tBTPROTO_AVDTP  = 7\n)\n\nconst (\n\tHCI_CHANNEL_RAW     = 0\n\tHCI_CHANNEL_USER    = 1\n\tHCI_CHANNEL_MONITOR = 2\n\tHCI_CHANNEL_CONTROL = 3\n\tHCI_CHANNEL_LOGGING = 4\n)\n\n// Socketoption Level\nconst (\n\tSOL_BLUETOOTH = 0x112\n\tSOL_HCI       = 0x0\n\tSOL_L2CAP     = 0x6\n\tSOL_RFCOMM    = 0x12\n\tSOL_SCO       = 0x11\n)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/bpxsvc_zos.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build zos\n\npackage unix\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"unsafe\"\n)\n\n//go:noescape\nfunc bpxcall(plist []unsafe.Pointer, bpx_offset int64)\n\n//go:noescape\nfunc A2e([]byte)\n\n//go:noescape\nfunc E2a([]byte)\n\nconst (\n\tBPX4STA = 192  // stat\n\tBPX4FST = 104  // fstat\n\tBPX4LST = 132  // lstat\n\tBPX4OPN = 156  // open\n\tBPX4CLO = 72   // close\n\tBPX4CHR = 500  // chattr\n\tBPX4FCR = 504  // fchattr\n\tBPX4LCR = 1180 // lchattr\n\tBPX4CTW = 492  // cond_timed_wait\n\tBPX4GTH = 1056 // __getthent\n\tBPX4PTQ = 412  // pthread_quiesc\n\tBPX4PTR = 320  // ptrace\n)\n\nconst (\n\t//options\n\t//byte1\n\tBPX_OPNFHIGH = 0x80\n\t//byte2\n\tBPX_OPNFEXEC = 0x80\n\t//byte3\n\tBPX_O_NOLARGEFILE = 0x08\n\tBPX_O_LARGEFILE   = 0x04\n\tBPX_O_ASYNCSIG    = 0x02\n\tBPX_O_SYNC        = 0x01\n\t//byte4\n\tBPX_O_CREXCL   = 0xc0\n\tBPX_O_CREAT    = 0x80\n\tBPX_O_EXCL     = 0x40\n\tBPX_O_NOCTTY   = 0x20\n\tBPX_O_TRUNC    = 0x10\n\tBPX_O_APPEND   = 0x08\n\tBPX_O_NONBLOCK = 0x04\n\tBPX_FNDELAY    = 0x04\n\tBPX_O_RDWR     = 0x03\n\tBPX_O_RDONLY   = 0x02\n\tBPX_O_WRONLY   = 0x01\n\tBPX_O_ACCMODE  = 0x03\n\tBPX_O_GETFL    = 0x0f\n\n\t//mode\n\t// byte1 (file type)\n\tBPX_FT_DIR      = 1\n\tBPX_FT_CHARSPEC = 2\n\tBPX_FT_REGFILE  = 3\n\tBPX_FT_FIFO     = 4\n\tBPX_FT_SYMLINK  = 5\n\tBPX_FT_SOCKET   = 6\n\t//byte3\n\tBPX_S_ISUID  = 0x08\n\tBPX_S_ISGID  = 0x04\n\tBPX_S_ISVTX  = 0x02\n\tBPX_S_IRWXU1 = 0x01\n\tBPX_S_IRUSR  = 0x01\n\t//byte4\n\tBPX_S_IRWXU2 = 0xc0\n\tBPX_S_IWUSR  = 0x80\n\tBPX_S_IXUSR  = 0x40\n\tBPX_S_IRWXG  = 0x38\n\tBPX_S_IRGRP  = 0x20\n\tBPX_S_IWGRP  = 0x10\n\tBPX_S_IXGRP  = 0x08\n\tBPX_S_IRWXOX = 0x07\n\tBPX_S_IROTH  = 0x04\n\tBPX_S_IWOTH  = 0x02\n\tBPX_S_IXOTH  = 0x01\n\n\tCW_INTRPT  = 1\n\tCW_CONDVAR = 32\n\tCW_TIMEOUT = 64\n\n\tPGTHA_NEXT        = 2\n\tPGTHA_CURRENT     = 1\n\tPGTHA_FIRST       = 0\n\tPGTHA_LAST        = 3\n\tPGTHA_PROCESS     = 0x80\n\tPGTHA_CONTTY      = 0x40\n\tPGTHA_PATH        = 0x20\n\tPGTHA_COMMAND     = 0x10\n\tPGTHA_FILEDATA    = 0x08\n\tPGTHA_THREAD      = 0x04\n\tPGTHA_PTAG        = 0x02\n\tPGTHA_COMMANDLONG = 0x01\n\tPGTHA_THREADFAST  = 0x80\n\tPGTHA_FILEPATH    = 0x40\n\tPGTHA_THDSIGMASK  = 0x20\n\t// thread quiece mode\n\tQUIESCE_TERM       int32 = 1\n\tQUIESCE_FORCE      int32 = 2\n\tQUIESCE_QUERY      int32 = 3\n\tQUIESCE_FREEZE     int32 = 4\n\tQUIESCE_UNFREEZE   int32 = 5\n\tFREEZE_THIS_THREAD int32 = 6\n\tFREEZE_EXIT        int32 = 8\n\tQUIESCE_SRB        int32 = 9\n)\n\ntype Pgtha struct {\n\tPid        uint32 // 0\n\tTid0       uint32 // 4\n\tTid1       uint32\n\tAccesspid  byte    // C\n\tAccesstid  byte    // D\n\tAccessasid uint16  // E\n\tLoginname  [8]byte // 10\n\tFlag1      byte    // 18\n\tFlag1b2    byte    // 19\n}\n\ntype Bpxystat_t struct { // DSECT BPXYSTAT\n\tSt_id           [4]uint8  // 0\n\tSt_length       uint16    // 0x4\n\tSt_version      uint16    // 0x6\n\tSt_mode         uint32    // 0x8\n\tSt_ino          uint32    // 0xc\n\tSt_dev          uint32    // 0x10\n\tSt_nlink        uint32    // 0x14\n\tSt_uid          uint32    // 0x18\n\tSt_gid          uint32    // 0x1c\n\tSt_size         uint64    // 0x20\n\tSt_atime        uint32    // 0x28\n\tSt_mtime        uint32    // 0x2c\n\tSt_ctime        uint32    // 0x30\n\tSt_rdev         uint32    // 0x34\n\tSt_auditoraudit uint32    // 0x38\n\tSt_useraudit    uint32    // 0x3c\n\tSt_blksize      uint32    // 0x40\n\tSt_createtime   uint32    // 0x44\n\tSt_auditid      [4]uint32 // 0x48\n\tSt_res01        uint32    // 0x58\n\tFt_ccsid        uint16    // 0x5c\n\tFt_flags        uint16    // 0x5e\n\tSt_res01a       [2]uint32 // 0x60\n\tSt_res02        uint32    // 0x68\n\tSt_blocks       uint32    // 0x6c\n\tSt_opaque       [3]uint8  // 0x70\n\tSt_visible      uint8     // 0x73\n\tSt_reftime      uint32    // 0x74\n\tSt_fid          uint64    // 0x78\n\tSt_filefmt      uint8     // 0x80\n\tSt_fspflag2     uint8     // 0x81\n\tSt_res03        [2]uint8  // 0x82\n\tSt_ctimemsec    uint32    // 0x84\n\tSt_seclabel     [8]uint8  // 0x88\n\tSt_res04        [4]uint8  // 0x90\n\t// end of version 1\n\t_               uint32    // 0x94\n\tSt_atime64      uint64    // 0x98\n\tSt_mtime64      uint64    // 0xa0\n\tSt_ctime64      uint64    // 0xa8\n\tSt_createtime64 uint64    // 0xb0\n\tSt_reftime64    uint64    // 0xb8\n\t_               uint64    // 0xc0\n\tSt_res05        [16]uint8 // 0xc8\n\t// end of version 2\n}\n\ntype BpxFilestatus struct {\n\tOflag1 byte\n\tOflag2 byte\n\tOflag3 byte\n\tOflag4 byte\n}\n\ntype BpxMode struct {\n\tFtype byte\n\tMode1 byte\n\tMode2 byte\n\tMode3 byte\n}\n\n// Thr attribute structure for extended attributes\ntype Bpxyatt_t struct { // DSECT BPXYATT\n\tAtt_id           [4]uint8\n\tAtt_version      uint16\n\tAtt_res01        [2]uint8\n\tAtt_setflags1    uint8\n\tAtt_setflags2    uint8\n\tAtt_setflags3    uint8\n\tAtt_setflags4    uint8\n\tAtt_mode         uint32\n\tAtt_uid          uint32\n\tAtt_gid          uint32\n\tAtt_opaquemask   [3]uint8\n\tAtt_visblmaskres uint8\n\tAtt_opaque       [3]uint8\n\tAtt_visibleres   uint8\n\tAtt_size_h       uint32\n\tAtt_size_l       uint32\n\tAtt_atime        uint32\n\tAtt_mtime        uint32\n\tAtt_auditoraudit uint32\n\tAtt_useraudit    uint32\n\tAtt_ctime        uint32\n\tAtt_reftime      uint32\n\t// end of version 1\n\tAtt_filefmt uint8\n\tAtt_res02   [3]uint8\n\tAtt_filetag uint32\n\tAtt_res03   [8]uint8\n\t// end of version 2\n\tAtt_atime64   uint64\n\tAtt_mtime64   uint64\n\tAtt_ctime64   uint64\n\tAtt_reftime64 uint64\n\tAtt_seclabel  [8]uint8\n\tAtt_ver3res02 [8]uint8\n\t// end of version 3\n}\n\nfunc BpxOpen(name string, options *BpxFilestatus, mode *BpxMode) (rv int32, rc int32, rn int32) {\n\tif len(name) < 1024 {\n\t\tvar namebuf [1024]byte\n\t\tsz := int32(copy(namebuf[:], name))\n\t\tA2e(namebuf[:sz])\n\t\tvar parms [7]unsafe.Pointer\n\t\tparms[0] = unsafe.Pointer(&sz)\n\t\tparms[1] = unsafe.Pointer(&namebuf[0])\n\t\tparms[2] = unsafe.Pointer(options)\n\t\tparms[3] = unsafe.Pointer(mode)\n\t\tparms[4] = unsafe.Pointer(&rv)\n\t\tparms[5] = unsafe.Pointer(&rc)\n\t\tparms[6] = unsafe.Pointer(&rn)\n\t\tbpxcall(parms[:], BPX4OPN)\n\t\treturn rv, rc, rn\n\t}\n\treturn -1, -1, -1\n}\n\nfunc BpxClose(fd int32) (rv int32, rc int32, rn int32) {\n\tvar parms [4]unsafe.Pointer\n\tparms[0] = unsafe.Pointer(&fd)\n\tparms[1] = unsafe.Pointer(&rv)\n\tparms[2] = unsafe.Pointer(&rc)\n\tparms[3] = unsafe.Pointer(&rn)\n\tbpxcall(parms[:], BPX4CLO)\n\treturn rv, rc, rn\n}\n\nfunc BpxFileFStat(fd int32, st *Bpxystat_t) (rv int32, rc int32, rn int32) {\n\tst.St_id = [4]uint8{0xe2, 0xe3, 0xc1, 0xe3}\n\tst.St_version = 2\n\tstat_sz := uint32(unsafe.Sizeof(*st))\n\tvar parms [6]unsafe.Pointer\n\tparms[0] = unsafe.Pointer(&fd)\n\tparms[1] = unsafe.Pointer(&stat_sz)\n\tparms[2] = unsafe.Pointer(st)\n\tparms[3] = unsafe.Pointer(&rv)\n\tparms[4] = unsafe.Pointer(&rc)\n\tparms[5] = unsafe.Pointer(&rn)\n\tbpxcall(parms[:], BPX4FST)\n\treturn rv, rc, rn\n}\n\nfunc BpxFileStat(name string, st *Bpxystat_t) (rv int32, rc int32, rn int32) {\n\tif len(name) < 1024 {\n\t\tvar namebuf [1024]byte\n\t\tsz := int32(copy(namebuf[:], name))\n\t\tA2e(namebuf[:sz])\n\t\tst.St_id = [4]uint8{0xe2, 0xe3, 0xc1, 0xe3}\n\t\tst.St_version = 2\n\t\tstat_sz := uint32(unsafe.Sizeof(*st))\n\t\tvar parms [7]unsafe.Pointer\n\t\tparms[0] = unsafe.Pointer(&sz)\n\t\tparms[1] = unsafe.Pointer(&namebuf[0])\n\t\tparms[2] = unsafe.Pointer(&stat_sz)\n\t\tparms[3] = unsafe.Pointer(st)\n\t\tparms[4] = unsafe.Pointer(&rv)\n\t\tparms[5] = unsafe.Pointer(&rc)\n\t\tparms[6] = unsafe.Pointer(&rn)\n\t\tbpxcall(parms[:], BPX4STA)\n\t\treturn rv, rc, rn\n\t}\n\treturn -1, -1, -1\n}\n\nfunc BpxFileLStat(name string, st *Bpxystat_t) (rv int32, rc int32, rn int32) {\n\tif len(name) < 1024 {\n\t\tvar namebuf [1024]byte\n\t\tsz := int32(copy(namebuf[:], name))\n\t\tA2e(namebuf[:sz])\n\t\tst.St_id = [4]uint8{0xe2, 0xe3, 0xc1, 0xe3}\n\t\tst.St_version = 2\n\t\tstat_sz := uint32(unsafe.Sizeof(*st))\n\t\tvar parms [7]unsafe.Pointer\n\t\tparms[0] = unsafe.Pointer(&sz)\n\t\tparms[1] = unsafe.Pointer(&namebuf[0])\n\t\tparms[2] = unsafe.Pointer(&stat_sz)\n\t\tparms[3] = unsafe.Pointer(st)\n\t\tparms[4] = unsafe.Pointer(&rv)\n\t\tparms[5] = unsafe.Pointer(&rc)\n\t\tparms[6] = unsafe.Pointer(&rn)\n\t\tbpxcall(parms[:], BPX4LST)\n\t\treturn rv, rc, rn\n\t}\n\treturn -1, -1, -1\n}\n\nfunc BpxChattr(path string, attr *Bpxyatt_t) (rv int32, rc int32, rn int32) {\n\tif len(path) >= 1024 {\n\t\treturn -1, -1, -1\n\t}\n\tvar namebuf [1024]byte\n\tsz := int32(copy(namebuf[:], path))\n\tA2e(namebuf[:sz])\n\tattr_sz := uint32(unsafe.Sizeof(*attr))\n\tvar parms [7]unsafe.Pointer\n\tparms[0] = unsafe.Pointer(&sz)\n\tparms[1] = unsafe.Pointer(&namebuf[0])\n\tparms[2] = unsafe.Pointer(&attr_sz)\n\tparms[3] = unsafe.Pointer(attr)\n\tparms[4] = unsafe.Pointer(&rv)\n\tparms[5] = unsafe.Pointer(&rc)\n\tparms[6] = unsafe.Pointer(&rn)\n\tbpxcall(parms[:], BPX4CHR)\n\treturn rv, rc, rn\n}\n\nfunc BpxLchattr(path string, attr *Bpxyatt_t) (rv int32, rc int32, rn int32) {\n\tif len(path) >= 1024 {\n\t\treturn -1, -1, -1\n\t}\n\tvar namebuf [1024]byte\n\tsz := int32(copy(namebuf[:], path))\n\tA2e(namebuf[:sz])\n\tattr_sz := uint32(unsafe.Sizeof(*attr))\n\tvar parms [7]unsafe.Pointer\n\tparms[0] = unsafe.Pointer(&sz)\n\tparms[1] = unsafe.Pointer(&namebuf[0])\n\tparms[2] = unsafe.Pointer(&attr_sz)\n\tparms[3] = unsafe.Pointer(attr)\n\tparms[4] = unsafe.Pointer(&rv)\n\tparms[5] = unsafe.Pointer(&rc)\n\tparms[6] = unsafe.Pointer(&rn)\n\tbpxcall(parms[:], BPX4LCR)\n\treturn rv, rc, rn\n}\n\nfunc BpxFchattr(fd int32, attr *Bpxyatt_t) (rv int32, rc int32, rn int32) {\n\tattr_sz := uint32(unsafe.Sizeof(*attr))\n\tvar parms [6]unsafe.Pointer\n\tparms[0] = unsafe.Pointer(&fd)\n\tparms[1] = unsafe.Pointer(&attr_sz)\n\tparms[2] = unsafe.Pointer(attr)\n\tparms[3] = unsafe.Pointer(&rv)\n\tparms[4] = unsafe.Pointer(&rc)\n\tparms[5] = unsafe.Pointer(&rn)\n\tbpxcall(parms[:], BPX4FCR)\n\treturn rv, rc, rn\n}\n\nfunc BpxCondTimedWait(sec uint32, nsec uint32, events uint32, secrem *uint32, nsecrem *uint32) (rv int32, rc int32, rn int32) {\n\tvar parms [8]unsafe.Pointer\n\tparms[0] = unsafe.Pointer(&sec)\n\tparms[1] = unsafe.Pointer(&nsec)\n\tparms[2] = unsafe.Pointer(&events)\n\tparms[3] = unsafe.Pointer(secrem)\n\tparms[4] = unsafe.Pointer(nsecrem)\n\tparms[5] = unsafe.Pointer(&rv)\n\tparms[6] = unsafe.Pointer(&rc)\n\tparms[7] = unsafe.Pointer(&rn)\n\tbpxcall(parms[:], BPX4CTW)\n\treturn rv, rc, rn\n}\nfunc BpxGetthent(in *Pgtha, outlen *uint32, out unsafe.Pointer) (rv int32, rc int32, rn int32) {\n\tvar parms [7]unsafe.Pointer\n\tinlen := uint32(26) // nothing else will work. Go says Pgtha is 28-byte because of alignment, but Pgtha is \"packed\" and must be 26-byte\n\tparms[0] = unsafe.Pointer(&inlen)\n\tparms[1] = unsafe.Pointer(&in)\n\tparms[2] = unsafe.Pointer(outlen)\n\tparms[3] = unsafe.Pointer(&out)\n\tparms[4] = unsafe.Pointer(&rv)\n\tparms[5] = unsafe.Pointer(&rc)\n\tparms[6] = unsafe.Pointer(&rn)\n\tbpxcall(parms[:], BPX4GTH)\n\treturn rv, rc, rn\n}\nfunc ZosJobname() (jobname string, err error) {\n\tvar pgtha Pgtha\n\tpgtha.Pid = uint32(Getpid())\n\tpgtha.Accesspid = PGTHA_CURRENT\n\tpgtha.Flag1 = PGTHA_PROCESS\n\tvar out [256]byte\n\tvar outlen uint32\n\toutlen = 256\n\trv, rc, rn := BpxGetthent(&pgtha, &outlen, unsafe.Pointer(&out[0]))\n\tif rv == 0 {\n\t\tgthc := []byte{0x87, 0xa3, 0x88, 0x83} // 'gthc' in ebcdic\n\t\tix := bytes.Index(out[:], gthc)\n\t\tif ix == -1 {\n\t\t\terr = fmt.Errorf(\"BPX4GTH: gthc return data not found\")\n\t\t\treturn\n\t\t}\n\t\tjn := out[ix+80 : ix+88] // we didn't declare Pgthc, but jobname is 8-byte at offset 80\n\t\tE2a(jn)\n\t\tjobname = string(bytes.TrimRight(jn, \" \"))\n\n\t} else {\n\t\terr = fmt.Errorf(\"BPX4GTH: rc=%d errno=%d reason=code=0x%x\", rv, rc, rn)\n\t}\n\treturn\n}\nfunc Bpx4ptq(code int32, data string) (rv int32, rc int32, rn int32) {\n\tvar userdata [8]byte\n\tvar parms [5]unsafe.Pointer\n\tcopy(userdata[:], data+\"        \")\n\tA2e(userdata[:])\n\tparms[0] = unsafe.Pointer(&code)\n\tparms[1] = unsafe.Pointer(&userdata[0])\n\tparms[2] = unsafe.Pointer(&rv)\n\tparms[3] = unsafe.Pointer(&rc)\n\tparms[4] = unsafe.Pointer(&rn)\n\tbpxcall(parms[:], BPX4PTQ)\n\treturn rv, rc, rn\n}\n\nconst (\n\tPT_TRACE_ME             = 0  // Debug this process\n\tPT_READ_I               = 1  // Read a full word\n\tPT_READ_D               = 2  // Read a full word\n\tPT_READ_U               = 3  // Read control info\n\tPT_WRITE_I              = 4  //Write a full word\n\tPT_WRITE_D              = 5  //Write a full word\n\tPT_CONTINUE             = 7  //Continue the process\n\tPT_KILL                 = 8  //Terminate the process\n\tPT_READ_GPR             = 11 // Read GPR, CR, PSW\n\tPT_READ_FPR             = 12 // Read FPR\n\tPT_READ_VR              = 13 // Read VR\n\tPT_WRITE_GPR            = 14 // Write GPR, CR, PSW\n\tPT_WRITE_FPR            = 15 // Write FPR\n\tPT_WRITE_VR             = 16 // Write VR\n\tPT_READ_BLOCK           = 17 // Read storage\n\tPT_WRITE_BLOCK          = 19 // Write storage\n\tPT_READ_GPRH            = 20 // Read GPRH\n\tPT_WRITE_GPRH           = 21 // Write GPRH\n\tPT_REGHSET              = 22 // Read all GPRHs\n\tPT_ATTACH               = 30 // Attach to a process\n\tPT_DETACH               = 31 // Detach from a process\n\tPT_REGSET               = 32 // Read all GPRs\n\tPT_REATTACH             = 33 // Reattach to a process\n\tPT_LDINFO               = 34 // Read loader info\n\tPT_MULTI                = 35 // Multi process mode\n\tPT_LD64INFO             = 36 // RMODE64 Info Area\n\tPT_BLOCKREQ             = 40 // Block request\n\tPT_THREAD_INFO          = 60 // Read thread info\n\tPT_THREAD_MODIFY        = 61\n\tPT_THREAD_READ_FOCUS    = 62\n\tPT_THREAD_WRITE_FOCUS   = 63\n\tPT_THREAD_HOLD          = 64\n\tPT_THREAD_SIGNAL        = 65\n\tPT_EXPLAIN              = 66\n\tPT_EVENTS               = 67\n\tPT_THREAD_INFO_EXTENDED = 68\n\tPT_REATTACH2            = 71\n\tPT_CAPTURE              = 72\n\tPT_UNCAPTURE            = 73\n\tPT_GET_THREAD_TCB       = 74\n\tPT_GET_ALET             = 75\n\tPT_SWAPIN               = 76\n\tPT_EXTENDED_EVENT       = 98\n\tPT_RECOVER              = 99  // Debug a program check\n\tPT_GPR0                 = 0   // General purpose register 0\n\tPT_GPR1                 = 1   // General purpose register 1\n\tPT_GPR2                 = 2   // General purpose register 2\n\tPT_GPR3                 = 3   // General purpose register 3\n\tPT_GPR4                 = 4   // General purpose register 4\n\tPT_GPR5                 = 5   // General purpose register 5\n\tPT_GPR6                 = 6   // General purpose register 6\n\tPT_GPR7                 = 7   // General purpose register 7\n\tPT_GPR8                 = 8   // General purpose register 8\n\tPT_GPR9                 = 9   // General purpose register 9\n\tPT_GPR10                = 10  // General purpose register 10\n\tPT_GPR11                = 11  // General purpose register 11\n\tPT_GPR12                = 12  // General purpose register 12\n\tPT_GPR13                = 13  // General purpose register 13\n\tPT_GPR14                = 14  // General purpose register 14\n\tPT_GPR15                = 15  // General purpose register 15\n\tPT_FPR0                 = 16  // Floating point register 0\n\tPT_FPR1                 = 17  // Floating point register 1\n\tPT_FPR2                 = 18  // Floating point register 2\n\tPT_FPR3                 = 19  // Floating point register 3\n\tPT_FPR4                 = 20  // Floating point register 4\n\tPT_FPR5                 = 21  // Floating point register 5\n\tPT_FPR6                 = 22  // Floating point register 6\n\tPT_FPR7                 = 23  // Floating point register 7\n\tPT_FPR8                 = 24  // Floating point register 8\n\tPT_FPR9                 = 25  // Floating point register 9\n\tPT_FPR10                = 26  // Floating point register 10\n\tPT_FPR11                = 27  // Floating point register 11\n\tPT_FPR12                = 28  // Floating point register 12\n\tPT_FPR13                = 29  // Floating point register 13\n\tPT_FPR14                = 30  // Floating point register 14\n\tPT_FPR15                = 31  // Floating point register 15\n\tPT_FPC                  = 32  // Floating point control register\n\tPT_PSW                  = 40  // PSW\n\tPT_PSW0                 = 40  // Left half of the PSW\n\tPT_PSW1                 = 41  // Right half of the PSW\n\tPT_CR0                  = 42  // Control register 0\n\tPT_CR1                  = 43  // Control register 1\n\tPT_CR2                  = 44  // Control register 2\n\tPT_CR3                  = 45  // Control register 3\n\tPT_CR4                  = 46  // Control register 4\n\tPT_CR5                  = 47  // Control register 5\n\tPT_CR6                  = 48  // Control register 6\n\tPT_CR7                  = 49  // Control register 7\n\tPT_CR8                  = 50  // Control register 8\n\tPT_CR9                  = 51  // Control register 9\n\tPT_CR10                 = 52  // Control register 10\n\tPT_CR11                 = 53  // Control register 11\n\tPT_CR12                 = 54  // Control register 12\n\tPT_CR13                 = 55  // Control register 13\n\tPT_CR14                 = 56  // Control register 14\n\tPT_CR15                 = 57  // Control register 15\n\tPT_GPRH0                = 58  // GP High register 0\n\tPT_GPRH1                = 59  // GP High register 1\n\tPT_GPRH2                = 60  // GP High register 2\n\tPT_GPRH3                = 61  // GP High register 3\n\tPT_GPRH4                = 62  // GP High register 4\n\tPT_GPRH5                = 63  // GP High register 5\n\tPT_GPRH6                = 64  // GP High register 6\n\tPT_GPRH7                = 65  // GP High register 7\n\tPT_GPRH8                = 66  // GP High register 8\n\tPT_GPRH9                = 67  // GP High register 9\n\tPT_GPRH10               = 68  // GP High register 10\n\tPT_GPRH11               = 69  // GP High register 11\n\tPT_GPRH12               = 70  // GP High register 12\n\tPT_GPRH13               = 71  // GP High register 13\n\tPT_GPRH14               = 72  // GP High register 14\n\tPT_GPRH15               = 73  // GP High register 15\n\tPT_VR0                  = 74  // Vector register 0\n\tPT_VR1                  = 75  // Vector register 1\n\tPT_VR2                  = 76  // Vector register 2\n\tPT_VR3                  = 77  // Vector register 3\n\tPT_VR4                  = 78  // Vector register 4\n\tPT_VR5                  = 79  // Vector register 5\n\tPT_VR6                  = 80  // Vector register 6\n\tPT_VR7                  = 81  // Vector register 7\n\tPT_VR8                  = 82  // Vector register 8\n\tPT_VR9                  = 83  // Vector register 9\n\tPT_VR10                 = 84  // Vector register 10\n\tPT_VR11                 = 85  // Vector register 11\n\tPT_VR12                 = 86  // Vector register 12\n\tPT_VR13                 = 87  // Vector register 13\n\tPT_VR14                 = 88  // Vector register 14\n\tPT_VR15                 = 89  // Vector register 15\n\tPT_VR16                 = 90  // Vector register 16\n\tPT_VR17                 = 91  // Vector register 17\n\tPT_VR18                 = 92  // Vector register 18\n\tPT_VR19                 = 93  // Vector register 19\n\tPT_VR20                 = 94  // Vector register 20\n\tPT_VR21                 = 95  // Vector register 21\n\tPT_VR22                 = 96  // Vector register 22\n\tPT_VR23                 = 97  // Vector register 23\n\tPT_VR24                 = 98  // Vector register 24\n\tPT_VR25                 = 99  // Vector register 25\n\tPT_VR26                 = 100 // Vector register 26\n\tPT_VR27                 = 101 // Vector register 27\n\tPT_VR28                 = 102 // Vector register 28\n\tPT_VR29                 = 103 // Vector register 29\n\tPT_VR30                 = 104 // Vector register 30\n\tPT_VR31                 = 105 // Vector register 31\n\tPT_PSWG                 = 106 // PSWG\n\tPT_PSWG0                = 106 // Bytes 0-3\n\tPT_PSWG1                = 107 // Bytes 4-7\n\tPT_PSWG2                = 108 // Bytes 8-11 (IA high word)\n\tPT_PSWG3                = 109 // Bytes 12-15 (IA low word)\n)\n\nfunc Bpx4ptr(request int32, pid int32, addr unsafe.Pointer, data unsafe.Pointer, buffer unsafe.Pointer) (rv int32, rc int32, rn int32) {\n\tvar parms [8]unsafe.Pointer\n\tparms[0] = unsafe.Pointer(&request)\n\tparms[1] = unsafe.Pointer(&pid)\n\tparms[2] = unsafe.Pointer(&addr)\n\tparms[3] = unsafe.Pointer(&data)\n\tparms[4] = unsafe.Pointer(&buffer)\n\tparms[5] = unsafe.Pointer(&rv)\n\tparms[6] = unsafe.Pointer(&rc)\n\tparms[7] = unsafe.Pointer(&rn)\n\tbpxcall(parms[:], BPX4PTR)\n\treturn rv, rc, rn\n}\n\nfunc copyU8(val uint8, dest []uint8) int {\n\tif len(dest) < 1 {\n\t\treturn 0\n\t}\n\tdest[0] = val\n\treturn 1\n}\n\nfunc copyU8Arr(src, dest []uint8) int {\n\tif len(dest) < len(src) {\n\t\treturn 0\n\t}\n\tfor i, v := range src {\n\t\tdest[i] = v\n\t}\n\treturn len(src)\n}\n\nfunc copyU16(val uint16, dest []uint16) int {\n\tif len(dest) < 1 {\n\t\treturn 0\n\t}\n\tdest[0] = val\n\treturn 1\n}\n\nfunc copyU32(val uint32, dest []uint32) int {\n\tif len(dest) < 1 {\n\t\treturn 0\n\t}\n\tdest[0] = val\n\treturn 1\n}\n\nfunc copyU32Arr(src, dest []uint32) int {\n\tif len(dest) < len(src) {\n\t\treturn 0\n\t}\n\tfor i, v := range src {\n\t\tdest[i] = v\n\t}\n\treturn len(src)\n}\n\nfunc copyU64(val uint64, dest []uint64) int {\n\tif len(dest) < 1 {\n\t\treturn 0\n\t}\n\tdest[0] = val\n\treturn 1\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/bpxsvc_zos.s",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n#include \"go_asm.h\"\n#include \"textflag.h\"\n\n// function to call USS assembly language services\n//\n// doc: https://www.ibm.com/support/knowledgecenter/en/SSLTBW_3.1.0/com.ibm.zos.v3r1.bpxb100/bit64env.htm\n//\n//   arg1 unsafe.Pointer array that ressembles an OS PLIST\n//\n//   arg2 function offset as in\n//       doc: https://www.ibm.com/support/knowledgecenter/en/SSLTBW_3.1.0/com.ibm.zos.v3r1.bpxb100/bpx2cr_List_of_offsets.htm\n//\n// func bpxcall(plist []unsafe.Pointer, bpx_offset int64)\n\nTEXT ·bpxcall(SB), NOSPLIT|NOFRAME, $0\n\tMOVD  plist_base+0(FP), R1  // r1 points to plist\n\tMOVD  bpx_offset+24(FP), R2 // r2 offset to BPX vector table\n\tMOVD  R14, R7               // save r14\n\tMOVD  R15, R8               // save r15\n\tMOVWZ 16(R0), R9\n\tMOVWZ 544(R9), R9\n\tMOVWZ 24(R9), R9            // call vector in r9\n\tADD   R2, R9                // add offset to vector table\n\tMOVWZ (R9), R9              // r9 points to entry point\n\tBYTE  $0x0D                 // BL R14,R9 --> basr r14,r9\n\tBYTE  $0xE9                 // clobbers 0,1,14,15\n\tMOVD  R8, R15               // restore 15\n\tJMP   R7                    // return via saved return address\n\n//   func A2e(arr [] byte)\n//   code page conversion from  819 to 1047\nTEXT ·A2e(SB), NOSPLIT|NOFRAME, $0\n\tMOVD arg_base+0(FP), R2                        // pointer to arry of characters\n\tMOVD arg_len+8(FP), R3                         // count\n\tXOR  R0, R0\n\tXOR  R1, R1\n\tBYTE $0xA7; BYTE $0x15; BYTE $0x00; BYTE $0x82 // BRAS 1,(2+(256/2))\n\n\t// ASCII -> EBCDIC conversion table:\n\tBYTE $0x00; BYTE $0x01; BYTE $0x02; BYTE $0x03\n\tBYTE $0x37; BYTE $0x2d; BYTE $0x2e; BYTE $0x2f\n\tBYTE $0x16; BYTE $0x05; BYTE $0x15; BYTE $0x0b\n\tBYTE $0x0c; BYTE $0x0d; BYTE $0x0e; BYTE $0x0f\n\tBYTE $0x10; BYTE $0x11; BYTE $0x12; BYTE $0x13\n\tBYTE $0x3c; BYTE $0x3d; BYTE $0x32; BYTE $0x26\n\tBYTE $0x18; BYTE $0x19; BYTE $0x3f; BYTE $0x27\n\tBYTE $0x1c; BYTE $0x1d; BYTE $0x1e; BYTE $0x1f\n\tBYTE $0x40; BYTE $0x5a; BYTE $0x7f; BYTE $0x7b\n\tBYTE $0x5b; BYTE $0x6c; BYTE $0x50; BYTE $0x7d\n\tBYTE $0x4d; BYTE $0x5d; BYTE $0x5c; BYTE $0x4e\n\tBYTE $0x6b; BYTE $0x60; BYTE $0x4b; BYTE $0x61\n\tBYTE $0xf0; BYTE $0xf1; BYTE $0xf2; BYTE $0xf3\n\tBYTE $0xf4; BYTE $0xf5; BYTE $0xf6; BYTE $0xf7\n\tBYTE $0xf8; BYTE $0xf9; BYTE $0x7a; BYTE $0x5e\n\tBYTE $0x4c; BYTE $0x7e; BYTE $0x6e; BYTE $0x6f\n\tBYTE $0x7c; BYTE $0xc1; BYTE $0xc2; BYTE $0xc3\n\tBYTE $0xc4; BYTE $0xc5; BYTE $0xc6; BYTE $0xc7\n\tBYTE $0xc8; BYTE $0xc9; BYTE $0xd1; BYTE $0xd2\n\tBYTE $0xd3; BYTE $0xd4; BYTE $0xd5; BYTE $0xd6\n\tBYTE $0xd7; BYTE $0xd8; BYTE $0xd9; BYTE $0xe2\n\tBYTE $0xe3; BYTE $0xe4; BYTE $0xe5; BYTE $0xe6\n\tBYTE $0xe7; BYTE $0xe8; BYTE $0xe9; BYTE $0xad\n\tBYTE $0xe0; BYTE $0xbd; BYTE $0x5f; BYTE $0x6d\n\tBYTE $0x79; BYTE $0x81; BYTE $0x82; BYTE $0x83\n\tBYTE $0x84; BYTE $0x85; BYTE $0x86; BYTE $0x87\n\tBYTE $0x88; BYTE $0x89; BYTE $0x91; BYTE $0x92\n\tBYTE $0x93; BYTE $0x94; BYTE $0x95; BYTE $0x96\n\tBYTE $0x97; BYTE $0x98; BYTE $0x99; BYTE $0xa2\n\tBYTE $0xa3; BYTE $0xa4; BYTE $0xa5; BYTE $0xa6\n\tBYTE $0xa7; BYTE $0xa8; BYTE $0xa9; BYTE $0xc0\n\tBYTE $0x4f; BYTE $0xd0; BYTE $0xa1; BYTE $0x07\n\tBYTE $0x20; BYTE $0x21; BYTE $0x22; BYTE $0x23\n\tBYTE $0x24; BYTE $0x25; BYTE $0x06; BYTE $0x17\n\tBYTE $0x28; BYTE $0x29; BYTE $0x2a; BYTE $0x2b\n\tBYTE $0x2c; BYTE $0x09; BYTE $0x0a; BYTE $0x1b\n\tBYTE $0x30; BYTE $0x31; BYTE $0x1a; BYTE $0x33\n\tBYTE $0x34; BYTE $0x35; BYTE $0x36; BYTE $0x08\n\tBYTE $0x38; BYTE $0x39; BYTE $0x3a; BYTE $0x3b\n\tBYTE $0x04; BYTE $0x14; BYTE $0x3e; BYTE $0xff\n\tBYTE $0x41; BYTE $0xaa; BYTE $0x4a; BYTE $0xb1\n\tBYTE $0x9f; BYTE $0xb2; BYTE $0x6a; BYTE $0xb5\n\tBYTE $0xbb; BYTE $0xb4; BYTE $0x9a; BYTE $0x8a\n\tBYTE $0xb0; BYTE $0xca; BYTE $0xaf; BYTE $0xbc\n\tBYTE $0x90; BYTE $0x8f; BYTE $0xea; BYTE $0xfa\n\tBYTE $0xbe; BYTE $0xa0; BYTE $0xb6; BYTE $0xb3\n\tBYTE $0x9d; BYTE $0xda; BYTE $0x9b; BYTE $0x8b\n\tBYTE $0xb7; BYTE $0xb8; BYTE $0xb9; BYTE $0xab\n\tBYTE $0x64; BYTE $0x65; BYTE $0x62; BYTE $0x66\n\tBYTE $0x63; BYTE $0x67; BYTE $0x9e; BYTE $0x68\n\tBYTE $0x74; BYTE $0x71; BYTE $0x72; BYTE $0x73\n\tBYTE $0x78; BYTE $0x75; BYTE $0x76; BYTE $0x77\n\tBYTE $0xac; BYTE $0x69; BYTE $0xed; BYTE $0xee\n\tBYTE $0xeb; BYTE $0xef; BYTE $0xec; BYTE $0xbf\n\tBYTE $0x80; BYTE $0xfd; BYTE $0xfe; BYTE $0xfb\n\tBYTE $0xfc; BYTE $0xba; BYTE $0xae; BYTE $0x59\n\tBYTE $0x44; BYTE $0x45; BYTE $0x42; BYTE $0x46\n\tBYTE $0x43; BYTE $0x47; BYTE $0x9c; BYTE $0x48\n\tBYTE $0x54; BYTE $0x51; BYTE $0x52; BYTE $0x53\n\tBYTE $0x58; BYTE $0x55; BYTE $0x56; BYTE $0x57\n\tBYTE $0x8c; BYTE $0x49; BYTE $0xcd; BYTE $0xce\n\tBYTE $0xcb; BYTE $0xcf; BYTE $0xcc; BYTE $0xe1\n\tBYTE $0x70; BYTE $0xdd; BYTE $0xde; BYTE $0xdb\n\tBYTE $0xdc; BYTE $0x8d; BYTE $0x8e; BYTE $0xdf\n\nretry:\n\tWORD $0xB9931022 // TROO 2,2,b'0001'\n\tBVS  retry\n\tRET\n\n//   func e2a(arr [] byte)\n//   code page conversion from  1047 to 819\nTEXT ·E2a(SB), NOSPLIT|NOFRAME, $0\n\tMOVD arg_base+0(FP), R2                        // pointer to arry of characters\n\tMOVD arg_len+8(FP), R3                         // count\n\tXOR  R0, R0\n\tXOR  R1, R1\n\tBYTE $0xA7; BYTE $0x15; BYTE $0x00; BYTE $0x82 // BRAS 1,(2+(256/2))\n\n\t// EBCDIC -> ASCII conversion table:\n\tBYTE $0x00; BYTE $0x01; BYTE $0x02; BYTE $0x03\n\tBYTE $0x9c; BYTE $0x09; BYTE $0x86; BYTE $0x7f\n\tBYTE $0x97; BYTE $0x8d; BYTE $0x8e; BYTE $0x0b\n\tBYTE $0x0c; BYTE $0x0d; BYTE $0x0e; BYTE $0x0f\n\tBYTE $0x10; BYTE $0x11; BYTE $0x12; BYTE $0x13\n\tBYTE $0x9d; BYTE $0x0a; BYTE $0x08; BYTE $0x87\n\tBYTE $0x18; BYTE $0x19; BYTE $0x92; BYTE $0x8f\n\tBYTE $0x1c; BYTE $0x1d; BYTE $0x1e; BYTE $0x1f\n\tBYTE $0x80; BYTE $0x81; BYTE $0x82; BYTE $0x83\n\tBYTE $0x84; BYTE $0x85; BYTE $0x17; BYTE $0x1b\n\tBYTE $0x88; BYTE $0x89; BYTE $0x8a; BYTE $0x8b\n\tBYTE $0x8c; BYTE $0x05; BYTE $0x06; BYTE $0x07\n\tBYTE $0x90; BYTE $0x91; BYTE $0x16; BYTE $0x93\n\tBYTE $0x94; BYTE $0x95; BYTE $0x96; BYTE $0x04\n\tBYTE $0x98; BYTE $0x99; BYTE $0x9a; BYTE $0x9b\n\tBYTE $0x14; BYTE $0x15; BYTE $0x9e; BYTE $0x1a\n\tBYTE $0x20; BYTE $0xa0; BYTE $0xe2; BYTE $0xe4\n\tBYTE $0xe0; BYTE $0xe1; BYTE $0xe3; BYTE $0xe5\n\tBYTE $0xe7; BYTE $0xf1; BYTE $0xa2; BYTE $0x2e\n\tBYTE $0x3c; BYTE $0x28; BYTE $0x2b; BYTE $0x7c\n\tBYTE $0x26; BYTE $0xe9; BYTE $0xea; BYTE $0xeb\n\tBYTE $0xe8; BYTE $0xed; BYTE $0xee; BYTE $0xef\n\tBYTE $0xec; BYTE $0xdf; BYTE $0x21; BYTE $0x24\n\tBYTE $0x2a; BYTE $0x29; BYTE $0x3b; BYTE $0x5e\n\tBYTE $0x2d; BYTE $0x2f; BYTE $0xc2; BYTE $0xc4\n\tBYTE $0xc0; BYTE $0xc1; BYTE $0xc3; BYTE $0xc5\n\tBYTE $0xc7; BYTE $0xd1; BYTE $0xa6; BYTE $0x2c\n\tBYTE $0x25; BYTE $0x5f; BYTE $0x3e; BYTE $0x3f\n\tBYTE $0xf8; BYTE $0xc9; BYTE $0xca; BYTE $0xcb\n\tBYTE $0xc8; BYTE $0xcd; BYTE $0xce; BYTE $0xcf\n\tBYTE $0xcc; BYTE $0x60; BYTE $0x3a; BYTE $0x23\n\tBYTE $0x40; BYTE $0x27; BYTE $0x3d; BYTE $0x22\n\tBYTE $0xd8; BYTE $0x61; BYTE $0x62; BYTE $0x63\n\tBYTE $0x64; BYTE $0x65; BYTE $0x66; BYTE $0x67\n\tBYTE $0x68; BYTE $0x69; BYTE $0xab; BYTE $0xbb\n\tBYTE $0xf0; BYTE $0xfd; BYTE $0xfe; BYTE $0xb1\n\tBYTE $0xb0; BYTE $0x6a; BYTE $0x6b; BYTE $0x6c\n\tBYTE $0x6d; BYTE $0x6e; BYTE $0x6f; BYTE $0x70\n\tBYTE $0x71; BYTE $0x72; BYTE $0xaa; BYTE $0xba\n\tBYTE $0xe6; BYTE $0xb8; BYTE $0xc6; BYTE $0xa4\n\tBYTE $0xb5; BYTE $0x7e; BYTE $0x73; BYTE $0x74\n\tBYTE $0x75; BYTE $0x76; BYTE $0x77; BYTE $0x78\n\tBYTE $0x79; BYTE $0x7a; BYTE $0xa1; BYTE $0xbf\n\tBYTE $0xd0; BYTE $0x5b; BYTE $0xde; BYTE $0xae\n\tBYTE $0xac; BYTE $0xa3; BYTE $0xa5; BYTE $0xb7\n\tBYTE $0xa9; BYTE $0xa7; BYTE $0xb6; BYTE $0xbc\n\tBYTE $0xbd; BYTE $0xbe; BYTE $0xdd; BYTE $0xa8\n\tBYTE $0xaf; BYTE $0x5d; BYTE $0xb4; BYTE $0xd7\n\tBYTE $0x7b; BYTE $0x41; BYTE $0x42; BYTE $0x43\n\tBYTE $0x44; BYTE $0x45; BYTE $0x46; BYTE $0x47\n\tBYTE $0x48; BYTE $0x49; BYTE $0xad; BYTE $0xf4\n\tBYTE $0xf6; BYTE $0xf2; BYTE $0xf3; BYTE $0xf5\n\tBYTE $0x7d; BYTE $0x4a; BYTE $0x4b; BYTE $0x4c\n\tBYTE $0x4d; BYTE $0x4e; BYTE $0x4f; BYTE $0x50\n\tBYTE $0x51; BYTE $0x52; BYTE $0xb9; BYTE $0xfb\n\tBYTE $0xfc; BYTE $0xf9; BYTE $0xfa; BYTE $0xff\n\tBYTE $0x5c; BYTE $0xf7; BYTE $0x53; BYTE $0x54\n\tBYTE $0x55; BYTE $0x56; BYTE $0x57; BYTE $0x58\n\tBYTE $0x59; BYTE $0x5a; BYTE $0xb2; BYTE $0xd4\n\tBYTE $0xd6; BYTE $0xd2; BYTE $0xd3; BYTE $0xd5\n\tBYTE $0x30; BYTE $0x31; BYTE $0x32; BYTE $0x33\n\tBYTE $0x34; BYTE $0x35; BYTE $0x36; BYTE $0x37\n\tBYTE $0x38; BYTE $0x39; BYTE $0xb3; BYTE $0xdb\n\tBYTE $0xdc; BYTE $0xd9; BYTE $0xda; BYTE $0x9f\n\nretry:\n\tWORD $0xB9931022 // TROO 2,2,b'0001'\n\tBVS  retry\n\tRET\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/cap_freebsd.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build freebsd\n\npackage unix\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n)\n\n// Go implementation of C mostly found in /usr/src/sys/kern/subr_capability.c\n\nconst (\n\t// This is the version of CapRights this package understands. See C implementation for parallels.\n\tcapRightsGoVersion = CAP_RIGHTS_VERSION_00\n\tcapArSizeMin       = CAP_RIGHTS_VERSION_00 + 2\n\tcapArSizeMax       = capRightsGoVersion + 2\n)\n\nvar (\n\tbit2idx = []int{\n\t\t-1, 0, 1, -1, 2, -1, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1,\n\t\t4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n\t}\n)\n\nfunc capidxbit(right uint64) int {\n\treturn int((right >> 57) & 0x1f)\n}\n\nfunc rightToIndex(right uint64) (int, error) {\n\tidx := capidxbit(right)\n\tif idx < 0 || idx >= len(bit2idx) {\n\t\treturn -2, fmt.Errorf(\"index for right 0x%x out of range\", right)\n\t}\n\treturn bit2idx[idx], nil\n}\n\nfunc caprver(right uint64) int {\n\treturn int(right >> 62)\n}\n\nfunc capver(rights *CapRights) int {\n\treturn caprver(rights.Rights[0])\n}\n\nfunc caparsize(rights *CapRights) int {\n\treturn capver(rights) + 2\n}\n\n// CapRightsSet sets the permissions in setrights in rights.\nfunc CapRightsSet(rights *CapRights, setrights []uint64) error {\n\t// This is essentially a copy of cap_rights_vset()\n\tif capver(rights) != CAP_RIGHTS_VERSION_00 {\n\t\treturn fmt.Errorf(\"bad rights version %d\", capver(rights))\n\t}\n\n\tn := caparsize(rights)\n\tif n < capArSizeMin || n > capArSizeMax {\n\t\treturn errors.New(\"bad rights size\")\n\t}\n\n\tfor _, right := range setrights {\n\t\tif caprver(right) != CAP_RIGHTS_VERSION_00 {\n\t\t\treturn errors.New(\"bad right version\")\n\t\t}\n\t\ti, err := rightToIndex(right)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif i >= n {\n\t\t\treturn errors.New(\"index overflow\")\n\t\t}\n\t\tif capidxbit(rights.Rights[i]) != capidxbit(right) {\n\t\t\treturn errors.New(\"index mismatch\")\n\t\t}\n\t\trights.Rights[i] |= right\n\t\tif capidxbit(rights.Rights[i]) != capidxbit(right) {\n\t\t\treturn errors.New(\"index mismatch (after assign)\")\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// CapRightsClear clears the permissions in clearrights from rights.\nfunc CapRightsClear(rights *CapRights, clearrights []uint64) error {\n\t// This is essentially a copy of cap_rights_vclear()\n\tif capver(rights) != CAP_RIGHTS_VERSION_00 {\n\t\treturn fmt.Errorf(\"bad rights version %d\", capver(rights))\n\t}\n\n\tn := caparsize(rights)\n\tif n < capArSizeMin || n > capArSizeMax {\n\t\treturn errors.New(\"bad rights size\")\n\t}\n\n\tfor _, right := range clearrights {\n\t\tif caprver(right) != CAP_RIGHTS_VERSION_00 {\n\t\t\treturn errors.New(\"bad right version\")\n\t\t}\n\t\ti, err := rightToIndex(right)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif i >= n {\n\t\t\treturn errors.New(\"index overflow\")\n\t\t}\n\t\tif capidxbit(rights.Rights[i]) != capidxbit(right) {\n\t\t\treturn errors.New(\"index mismatch\")\n\t\t}\n\t\trights.Rights[i] &= ^(right & 0x01FFFFFFFFFFFFFF)\n\t\tif capidxbit(rights.Rights[i]) != capidxbit(right) {\n\t\t\treturn errors.New(\"index mismatch (after assign)\")\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// CapRightsIsSet checks whether all the permissions in setrights are present in rights.\nfunc CapRightsIsSet(rights *CapRights, setrights []uint64) (bool, error) {\n\t// This is essentially a copy of cap_rights_is_vset()\n\tif capver(rights) != CAP_RIGHTS_VERSION_00 {\n\t\treturn false, fmt.Errorf(\"bad rights version %d\", capver(rights))\n\t}\n\n\tn := caparsize(rights)\n\tif n < capArSizeMin || n > capArSizeMax {\n\t\treturn false, errors.New(\"bad rights size\")\n\t}\n\n\tfor _, right := range setrights {\n\t\tif caprver(right) != CAP_RIGHTS_VERSION_00 {\n\t\t\treturn false, errors.New(\"bad right version\")\n\t\t}\n\t\ti, err := rightToIndex(right)\n\t\tif err != nil {\n\t\t\treturn false, err\n\t\t}\n\t\tif i >= n {\n\t\t\treturn false, errors.New(\"index overflow\")\n\t\t}\n\t\tif capidxbit(rights.Rights[i]) != capidxbit(right) {\n\t\t\treturn false, errors.New(\"index mismatch\")\n\t\t}\n\t\tif (rights.Rights[i] & right) != right {\n\t\t\treturn false, nil\n\t\t}\n\t}\n\n\treturn true, nil\n}\n\nfunc capright(idx uint64, bit uint64) uint64 {\n\treturn ((1 << (57 + idx)) | bit)\n}\n\n// CapRightsInit returns a pointer to an initialised CapRights structure filled with rights.\n// See man cap_rights_init(3) and rights(4).\nfunc CapRightsInit(rights []uint64) (*CapRights, error) {\n\tvar r CapRights\n\tr.Rights[0] = (capRightsGoVersion << 62) | capright(0, 0)\n\tr.Rights[1] = capright(1, 0)\n\n\terr := CapRightsSet(&r, rights)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &r, nil\n}\n\n// CapRightsLimit reduces the operations permitted on fd to at most those contained in rights.\n// The capability rights on fd can never be increased by CapRightsLimit.\n// See man cap_rights_limit(2) and rights(4).\nfunc CapRightsLimit(fd uintptr, rights *CapRights) error {\n\treturn capRightsLimit(int(fd), rights)\n}\n\n// CapRightsGet returns a CapRights structure containing the operations permitted on fd.\n// See man cap_rights_get(3) and rights(4).\nfunc CapRightsGet(fd uintptr) (*CapRights, error) {\n\tr, err := CapRightsInit(nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\terr = capRightsGet(capRightsGoVersion, int(fd), r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn r, nil\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/constants.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos\n\npackage unix\n\nconst (\n\tR_OK = 0x4\n\tW_OK = 0x2\n\tX_OK = 0x1\n)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/dev_aix_ppc.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix && ppc\n\n// Functions to access/create device major and minor numbers matching the\n// encoding used by AIX.\n\npackage unix\n\n// Major returns the major component of a Linux device number.\nfunc Major(dev uint64) uint32 {\n\treturn uint32((dev >> 16) & 0xffff)\n}\n\n// Minor returns the minor component of a Linux device number.\nfunc Minor(dev uint64) uint32 {\n\treturn uint32(dev & 0xffff)\n}\n\n// Mkdev returns a Linux device number generated from the given major and minor\n// components.\nfunc Mkdev(major, minor uint32) uint64 {\n\treturn uint64(((major) << 16) | (minor))\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/dev_aix_ppc64.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix && ppc64\n\n// Functions to access/create device major and minor numbers matching the\n// encoding used AIX.\n\npackage unix\n\n// Major returns the major component of a Linux device number.\nfunc Major(dev uint64) uint32 {\n\treturn uint32((dev & 0x3fffffff00000000) >> 32)\n}\n\n// Minor returns the minor component of a Linux device number.\nfunc Minor(dev uint64) uint32 {\n\treturn uint32((dev & 0x00000000ffffffff) >> 0)\n}\n\n// Mkdev returns a Linux device number generated from the given major and minor\n// components.\nfunc Mkdev(major, minor uint32) uint64 {\n\tvar DEVNO64 uint64\n\tDEVNO64 = 0x8000000000000000\n\treturn ((uint64(major) << 32) | (uint64(minor) & 0x00000000FFFFFFFF) | DEVNO64)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/dev_darwin.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Functions to access/create device major and minor numbers matching the\n// encoding used in Darwin's sys/types.h header.\n\npackage unix\n\n// Major returns the major component of a Darwin device number.\nfunc Major(dev uint64) uint32 {\n\treturn uint32((dev >> 24) & 0xff)\n}\n\n// Minor returns the minor component of a Darwin device number.\nfunc Minor(dev uint64) uint32 {\n\treturn uint32(dev & 0xffffff)\n}\n\n// Mkdev returns a Darwin device number generated from the given major and minor\n// components.\nfunc Mkdev(major, minor uint32) uint64 {\n\treturn (uint64(major) << 24) | uint64(minor)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/dev_dragonfly.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Functions to access/create device major and minor numbers matching the\n// encoding used in Dragonfly's sys/types.h header.\n//\n// The information below is extracted and adapted from sys/types.h:\n//\n// Minor gives a cookie instead of an index since in order to avoid changing the\n// meanings of bits 0-15 or wasting time and space shifting bits 16-31 for\n// devices that don't use them.\n\npackage unix\n\n// Major returns the major component of a DragonFlyBSD device number.\nfunc Major(dev uint64) uint32 {\n\treturn uint32((dev >> 8) & 0xff)\n}\n\n// Minor returns the minor component of a DragonFlyBSD device number.\nfunc Minor(dev uint64) uint32 {\n\treturn uint32(dev & 0xffff00ff)\n}\n\n// Mkdev returns a DragonFlyBSD device number generated from the given major and\n// minor components.\nfunc Mkdev(major, minor uint32) uint64 {\n\treturn (uint64(major) << 8) | uint64(minor)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/dev_freebsd.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Functions to access/create device major and minor numbers matching the\n// encoding used in FreeBSD's sys/types.h header.\n//\n// The information below is extracted and adapted from sys/types.h:\n//\n// Minor gives a cookie instead of an index since in order to avoid changing the\n// meanings of bits 0-15 or wasting time and space shifting bits 16-31 for\n// devices that don't use them.\n\npackage unix\n\n// Major returns the major component of a FreeBSD device number.\nfunc Major(dev uint64) uint32 {\n\treturn uint32((dev >> 8) & 0xff)\n}\n\n// Minor returns the minor component of a FreeBSD device number.\nfunc Minor(dev uint64) uint32 {\n\treturn uint32(dev & 0xffff00ff)\n}\n\n// Mkdev returns a FreeBSD device number generated from the given major and\n// minor components.\nfunc Mkdev(major, minor uint32) uint64 {\n\treturn (uint64(major) << 8) | uint64(minor)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/dev_linux.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Functions to access/create device major and minor numbers matching the\n// encoding used by the Linux kernel and glibc.\n//\n// The information below is extracted and adapted from bits/sysmacros.h in the\n// glibc sources:\n//\n// dev_t in glibc is 64-bit, with 32-bit major and minor numbers. glibc's\n// default encoding is MMMM Mmmm mmmM MMmm, where M is a hex digit of the major\n// number and m is a hex digit of the minor number. This is backward compatible\n// with legacy systems where dev_t is 16 bits wide, encoded as MMmm. It is also\n// backward compatible with the Linux kernel, which for some architectures uses\n// 32-bit dev_t, encoded as mmmM MMmm.\n\npackage unix\n\n// Major returns the major component of a Linux device number.\nfunc Major(dev uint64) uint32 {\n\tmajor := uint32((dev & 0x00000000000fff00) >> 8)\n\tmajor |= uint32((dev & 0xfffff00000000000) >> 32)\n\treturn major\n}\n\n// Minor returns the minor component of a Linux device number.\nfunc Minor(dev uint64) uint32 {\n\tminor := uint32((dev & 0x00000000000000ff) >> 0)\n\tminor |= uint32((dev & 0x00000ffffff00000) >> 12)\n\treturn minor\n}\n\n// Mkdev returns a Linux device number generated from the given major and minor\n// components.\nfunc Mkdev(major, minor uint32) uint64 {\n\tdev := (uint64(major) & 0x00000fff) << 8\n\tdev |= (uint64(major) & 0xfffff000) << 32\n\tdev |= (uint64(minor) & 0x000000ff) << 0\n\tdev |= (uint64(minor) & 0xffffff00) << 12\n\treturn dev\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/dev_netbsd.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Functions to access/create device major and minor numbers matching the\n// encoding used in NetBSD's sys/types.h header.\n\npackage unix\n\n// Major returns the major component of a NetBSD device number.\nfunc Major(dev uint64) uint32 {\n\treturn uint32((dev & 0x000fff00) >> 8)\n}\n\n// Minor returns the minor component of a NetBSD device number.\nfunc Minor(dev uint64) uint32 {\n\tminor := uint32((dev & 0x000000ff) >> 0)\n\tminor |= uint32((dev & 0xfff00000) >> 12)\n\treturn minor\n}\n\n// Mkdev returns a NetBSD device number generated from the given major and minor\n// components.\nfunc Mkdev(major, minor uint32) uint64 {\n\tdev := (uint64(major) << 8) & 0x000fff00\n\tdev |= (uint64(minor) << 12) & 0xfff00000\n\tdev |= (uint64(minor) << 0) & 0x000000ff\n\treturn dev\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/dev_openbsd.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Functions to access/create device major and minor numbers matching the\n// encoding used in OpenBSD's sys/types.h header.\n\npackage unix\n\n// Major returns the major component of an OpenBSD device number.\nfunc Major(dev uint64) uint32 {\n\treturn uint32((dev & 0x0000ff00) >> 8)\n}\n\n// Minor returns the minor component of an OpenBSD device number.\nfunc Minor(dev uint64) uint32 {\n\tminor := uint32((dev & 0x000000ff) >> 0)\n\tminor |= uint32((dev & 0xffff0000) >> 8)\n\treturn minor\n}\n\n// Mkdev returns an OpenBSD device number generated from the given major and minor\n// components.\nfunc Mkdev(major, minor uint32) uint64 {\n\tdev := (uint64(major) << 8) & 0x0000ff00\n\tdev |= (uint64(minor) << 8) & 0xffff0000\n\tdev |= (uint64(minor) << 0) & 0x000000ff\n\treturn dev\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/dev_zos.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build zos && s390x\n\n// Functions to access/create device major and minor numbers matching the\n// encoding used by z/OS.\n//\n// The information below is extracted and adapted from <sys/stat.h> macros.\n\npackage unix\n\n// Major returns the major component of a z/OS device number.\nfunc Major(dev uint64) uint32 {\n\treturn uint32((dev >> 16) & 0x0000FFFF)\n}\n\n// Minor returns the minor component of a z/OS device number.\nfunc Minor(dev uint64) uint32 {\n\treturn uint32(dev & 0x0000FFFF)\n}\n\n// Mkdev returns a z/OS device number generated from the given major and minor\n// components.\nfunc Mkdev(major, minor uint32) uint64 {\n\treturn (uint64(major) << 16) | uint64(minor)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/dirent.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos\n\npackage unix\n\nimport \"unsafe\"\n\n// readInt returns the size-bytes unsigned integer in native byte order at offset off.\nfunc readInt(b []byte, off, size uintptr) (u uint64, ok bool) {\n\tif len(b) < int(off+size) {\n\t\treturn 0, false\n\t}\n\tif isBigEndian {\n\t\treturn readIntBE(b[off:], size), true\n\t}\n\treturn readIntLE(b[off:], size), true\n}\n\nfunc readIntBE(b []byte, size uintptr) uint64 {\n\tswitch size {\n\tcase 1:\n\t\treturn uint64(b[0])\n\tcase 2:\n\t\t_ = b[1] // bounds check hint to compiler; see golang.org/issue/14808\n\t\treturn uint64(b[1]) | uint64(b[0])<<8\n\tcase 4:\n\t\t_ = b[3] // bounds check hint to compiler; see golang.org/issue/14808\n\t\treturn uint64(b[3]) | uint64(b[2])<<8 | uint64(b[1])<<16 | uint64(b[0])<<24\n\tcase 8:\n\t\t_ = b[7] // bounds check hint to compiler; see golang.org/issue/14808\n\t\treturn uint64(b[7]) | uint64(b[6])<<8 | uint64(b[5])<<16 | uint64(b[4])<<24 |\n\t\t\tuint64(b[3])<<32 | uint64(b[2])<<40 | uint64(b[1])<<48 | uint64(b[0])<<56\n\tdefault:\n\t\tpanic(\"syscall: readInt with unsupported size\")\n\t}\n}\n\nfunc readIntLE(b []byte, size uintptr) uint64 {\n\tswitch size {\n\tcase 1:\n\t\treturn uint64(b[0])\n\tcase 2:\n\t\t_ = b[1] // bounds check hint to compiler; see golang.org/issue/14808\n\t\treturn uint64(b[0]) | uint64(b[1])<<8\n\tcase 4:\n\t\t_ = b[3] // bounds check hint to compiler; see golang.org/issue/14808\n\t\treturn uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24\n\tcase 8:\n\t\t_ = b[7] // bounds check hint to compiler; see golang.org/issue/14808\n\t\treturn uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 |\n\t\t\tuint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56\n\tdefault:\n\t\tpanic(\"syscall: readInt with unsupported size\")\n\t}\n}\n\n// ParseDirent parses up to max directory entries in buf,\n// appending the names to names. It returns the number of\n// bytes consumed from buf, the number of entries added\n// to names, and the new names slice.\nfunc ParseDirent(buf []byte, max int, names []string) (consumed int, count int, newnames []string) {\n\toriglen := len(buf)\n\tcount = 0\n\tfor max != 0 && len(buf) > 0 {\n\t\treclen, ok := direntReclen(buf)\n\t\tif !ok || reclen > uint64(len(buf)) {\n\t\t\treturn origlen, count, names\n\t\t}\n\t\trec := buf[:reclen]\n\t\tbuf = buf[reclen:]\n\t\tino, ok := direntIno(rec)\n\t\tif !ok {\n\t\t\tbreak\n\t\t}\n\t\tif ino == 0 { // File absent in directory.\n\t\t\tcontinue\n\t\t}\n\t\tconst namoff = uint64(unsafe.Offsetof(Dirent{}.Name))\n\t\tnamlen, ok := direntNamlen(rec)\n\t\tif !ok || namoff+namlen > uint64(len(rec)) {\n\t\t\tbreak\n\t\t}\n\t\tname := rec[namoff : namoff+namlen]\n\t\tfor i, c := range name {\n\t\t\tif c == 0 {\n\t\t\t\tname = name[:i]\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\t// Check for useless names before allocating a string.\n\t\tif string(name) == \".\" || string(name) == \"..\" {\n\t\t\tcontinue\n\t\t}\n\t\tmax--\n\t\tcount++\n\t\tnames = append(names, string(name))\n\t}\n\treturn origlen - len(buf), count, names\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/endian_big.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n//\n//go:build armbe || arm64be || m68k || mips || mips64 || mips64p32 || ppc || ppc64 || s390 || s390x || shbe || sparc || sparc64\n\npackage unix\n\nconst isBigEndian = true\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/endian_little.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n//\n//go:build 386 || amd64 || amd64p32 || alpha || arm || arm64 || loong64 || mipsle || mips64le || mips64p32le || nios2 || ppc64le || riscv || riscv64 || sh\n\npackage unix\n\nconst isBigEndian = false\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/env_unix.go",
    "content": "// Copyright 2010 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos\n\n// Unix environment variables.\n\npackage unix\n\nimport \"syscall\"\n\nfunc Getenv(key string) (value string, found bool) {\n\treturn syscall.Getenv(key)\n}\n\nfunc Setenv(key, value string) error {\n\treturn syscall.Setenv(key, value)\n}\n\nfunc Clearenv() {\n\tsyscall.Clearenv()\n}\n\nfunc Environ() []string {\n\treturn syscall.Environ()\n}\n\nfunc Unsetenv(key string) error {\n\treturn syscall.Unsetenv(key)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/fcntl.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build dragonfly || freebsd || linux || netbsd\n\npackage unix\n\nimport \"unsafe\"\n\n// fcntl64Syscall is usually SYS_FCNTL, but is overridden on 32-bit Linux\n// systems by fcntl_linux_32bit.go to be SYS_FCNTL64.\nvar fcntl64Syscall uintptr = SYS_FCNTL\n\nfunc fcntl(fd int, cmd, arg int) (int, error) {\n\tvalptr, _, errno := Syscall(fcntl64Syscall, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tvar err error\n\tif errno != 0 {\n\t\terr = errno\n\t}\n\treturn int(valptr), err\n}\n\n// FcntlInt performs a fcntl syscall on fd with the provided command and argument.\nfunc FcntlInt(fd uintptr, cmd, arg int) (int, error) {\n\treturn fcntl(int(fd), cmd, arg)\n}\n\n// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command.\nfunc FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error {\n\t_, _, errno := Syscall(fcntl64Syscall, fd, uintptr(cmd), uintptr(unsafe.Pointer(lk)))\n\tif errno == 0 {\n\t\treturn nil\n\t}\n\treturn errno\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/fcntl_darwin.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage unix\n\nimport \"unsafe\"\n\n// FcntlInt performs a fcntl syscall on fd with the provided command and argument.\nfunc FcntlInt(fd uintptr, cmd, arg int) (int, error) {\n\treturn fcntl(int(fd), cmd, arg)\n}\n\n// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command.\nfunc FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error {\n\t_, err := fcntl(int(fd), cmd, int(uintptr(unsafe.Pointer(lk))))\n\treturn err\n}\n\n// FcntlFstore performs a fcntl syscall for the F_PREALLOCATE command.\nfunc FcntlFstore(fd uintptr, cmd int, fstore *Fstore_t) error {\n\t_, err := fcntl(int(fd), cmd, int(uintptr(unsafe.Pointer(fstore))))\n\treturn err\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (linux && 386) || (linux && arm) || (linux && mips) || (linux && mipsle) || (linux && ppc)\n\npackage unix\n\nfunc init() {\n\t// On 32-bit Linux systems, the fcntl syscall that matches Go's\n\t// Flock_t type is SYS_FCNTL64, not SYS_FCNTL.\n\tfcntl64Syscall = SYS_FCNTL64\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/fdset.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos\n\npackage unix\n\n// Set adds fd to the set fds.\nfunc (fds *FdSet) Set(fd int) {\n\tfds.Bits[fd/NFDBITS] |= (1 << (uintptr(fd) % NFDBITS))\n}\n\n// Clear removes fd from the set fds.\nfunc (fds *FdSet) Clear(fd int) {\n\tfds.Bits[fd/NFDBITS] &^= (1 << (uintptr(fd) % NFDBITS))\n}\n\n// IsSet returns whether fd is in the set fds.\nfunc (fds *FdSet) IsSet(fd int) bool {\n\treturn fds.Bits[fd/NFDBITS]&(1<<(uintptr(fd)%NFDBITS)) != 0\n}\n\n// Zero clears the set fds.\nfunc (fds *FdSet) Zero() {\n\tclear(fds.Bits[:])\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/gccgo.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gccgo && !aix && !hurd\n\npackage unix\n\nimport \"syscall\"\n\n// We can't use the gc-syntax .s files for gccgo. On the plus side\n// much of the functionality can be written directly in Go.\n\nfunc realSyscallNoError(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r uintptr)\n\nfunc realSyscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r, errno uintptr)\n\nfunc SyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr) {\n\tsyscall.Entersyscall()\n\tr := realSyscallNoError(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0)\n\tsyscall.Exitsyscall()\n\treturn r, 0\n}\n\nfunc Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) {\n\tsyscall.Entersyscall()\n\tr, errno := realSyscall(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0)\n\tsyscall.Exitsyscall()\n\treturn r, 0, syscall.Errno(errno)\n}\n\nfunc Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) {\n\tsyscall.Entersyscall()\n\tr, errno := realSyscall(trap, a1, a2, a3, a4, a5, a6, 0, 0, 0)\n\tsyscall.Exitsyscall()\n\treturn r, 0, syscall.Errno(errno)\n}\n\nfunc Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) {\n\tsyscall.Entersyscall()\n\tr, errno := realSyscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9)\n\tsyscall.Exitsyscall()\n\treturn r, 0, syscall.Errno(errno)\n}\n\nfunc RawSyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr) {\n\tr := realSyscallNoError(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0)\n\treturn r, 0\n}\n\nfunc RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) {\n\tr, errno := realSyscall(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0)\n\treturn r, 0, syscall.Errno(errno)\n}\n\nfunc RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) {\n\tr, errno := realSyscall(trap, a1, a2, a3, a4, a5, a6, 0, 0, 0)\n\treturn r, 0, syscall.Errno(errno)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/gccgo_c.c",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gccgo && !aix && !hurd\n\n#include <errno.h>\n#include <stdint.h>\n#include <unistd.h>\n\n#define _STRINGIFY2_(x) #x\n#define _STRINGIFY_(x) _STRINGIFY2_(x)\n#define GOSYM_PREFIX _STRINGIFY_(__USER_LABEL_PREFIX__)\n\n// Call syscall from C code because the gccgo support for calling from\n// Go to C does not support varargs functions.\n\nstruct ret {\n\tuintptr_t r;\n\tuintptr_t err;\n};\n\nstruct ret gccgoRealSyscall(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5, uintptr_t a6, uintptr_t a7, uintptr_t a8, uintptr_t a9)\n  __asm__(GOSYM_PREFIX GOPKGPATH \".realSyscall\");\n\nstruct ret\ngccgoRealSyscall(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5, uintptr_t a6, uintptr_t a7, uintptr_t a8, uintptr_t a9)\n{\n\tstruct ret r;\n\n\terrno = 0;\n\tr.r = syscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9);\n\tr.err = errno;\n\treturn r;\n}\n\nuintptr_t gccgoRealSyscallNoError(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5, uintptr_t a6, uintptr_t a7, uintptr_t a8, uintptr_t a9)\n  __asm__(GOSYM_PREFIX GOPKGPATH \".realSyscallNoError\");\n\nuintptr_t\ngccgoRealSyscallNoError(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5, uintptr_t a6, uintptr_t a7, uintptr_t a8, uintptr_t a9)\n{\n\treturn syscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9);\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gccgo && linux && amd64\n\npackage unix\n\nimport \"syscall\"\n\n//extern gettimeofday\nfunc realGettimeofday(*Timeval, *byte) int32\n\nfunc gettimeofday(tv *Timeval) (err syscall.Errno) {\n\tr := realGettimeofday(tv, nil)\n\tif r < 0 {\n\t\treturn syscall.GetErrno()\n\t}\n\treturn 0\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/ifreq_linux.go",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux\n\npackage unix\n\nimport (\n\t\"unsafe\"\n)\n\n// Helpers for dealing with ifreq since it contains a union and thus requires a\n// lot of unsafe.Pointer casts to use properly.\n\n// An Ifreq is a type-safe wrapper around the raw ifreq struct. An Ifreq\n// contains an interface name and a union of arbitrary data which can be\n// accessed using the Ifreq's methods. To create an Ifreq, use the NewIfreq\n// function.\n//\n// Use the Name method to access the stored interface name. The union data\n// fields can be get and set using the following methods:\n//   - Uint16/SetUint16: flags\n//   - Uint32/SetUint32: ifindex, metric, mtu\ntype Ifreq struct{ raw ifreq }\n\n// NewIfreq creates an Ifreq with the input network interface name after\n// validating the name does not exceed IFNAMSIZ-1 (trailing NULL required)\n// bytes.\nfunc NewIfreq(name string) (*Ifreq, error) {\n\t// Leave room for terminating NULL byte.\n\tif len(name) >= IFNAMSIZ {\n\t\treturn nil, EINVAL\n\t}\n\n\tvar ifr ifreq\n\tcopy(ifr.Ifrn[:], name)\n\n\treturn &Ifreq{raw: ifr}, nil\n}\n\n// TODO(mdlayher): get/set methods for hardware address sockaddr, char array, etc.\n\n// Name returns the interface name associated with the Ifreq.\nfunc (ifr *Ifreq) Name() string {\n\treturn ByteSliceToString(ifr.raw.Ifrn[:])\n}\n\n// According to netdevice(7), only AF_INET addresses are returned for numerous\n// sockaddr ioctls. For convenience, we expose these as Inet4Addr since the Port\n// field and other data is always empty.\n\n// Inet4Addr returns the Ifreq union data from an embedded sockaddr as a C\n// in_addr/Go []byte (4-byte IPv4 address) value. If the sockaddr family is not\n// AF_INET, an error is returned.\nfunc (ifr *Ifreq) Inet4Addr() ([]byte, error) {\n\traw := *(*RawSockaddrInet4)(unsafe.Pointer(&ifr.raw.Ifru[:SizeofSockaddrInet4][0]))\n\tif raw.Family != AF_INET {\n\t\t// Cannot safely interpret raw.Addr bytes as an IPv4 address.\n\t\treturn nil, EINVAL\n\t}\n\n\treturn raw.Addr[:], nil\n}\n\n// SetInet4Addr sets a C in_addr/Go []byte (4-byte IPv4 address) value in an\n// embedded sockaddr within the Ifreq's union data. v must be 4 bytes in length\n// or an error will be returned.\nfunc (ifr *Ifreq) SetInet4Addr(v []byte) error {\n\tif len(v) != 4 {\n\t\treturn EINVAL\n\t}\n\n\tvar addr [4]byte\n\tcopy(addr[:], v)\n\n\tifr.clear()\n\t*(*RawSockaddrInet4)(\n\t\tunsafe.Pointer(&ifr.raw.Ifru[:SizeofSockaddrInet4][0]),\n\t) = RawSockaddrInet4{\n\t\t// Always set IP family as ioctls would require it anyway.\n\t\tFamily: AF_INET,\n\t\tAddr:   addr,\n\t}\n\n\treturn nil\n}\n\n// Uint16 returns the Ifreq union data as a C short/Go uint16 value.\nfunc (ifr *Ifreq) Uint16() uint16 {\n\treturn *(*uint16)(unsafe.Pointer(&ifr.raw.Ifru[:2][0]))\n}\n\n// SetUint16 sets a C short/Go uint16 value as the Ifreq's union data.\nfunc (ifr *Ifreq) SetUint16(v uint16) {\n\tifr.clear()\n\t*(*uint16)(unsafe.Pointer(&ifr.raw.Ifru[:2][0])) = v\n}\n\n// Uint32 returns the Ifreq union data as a C int/Go uint32 value.\nfunc (ifr *Ifreq) Uint32() uint32 {\n\treturn *(*uint32)(unsafe.Pointer(&ifr.raw.Ifru[:4][0]))\n}\n\n// SetUint32 sets a C int/Go uint32 value as the Ifreq's union data.\nfunc (ifr *Ifreq) SetUint32(v uint32) {\n\tifr.clear()\n\t*(*uint32)(unsafe.Pointer(&ifr.raw.Ifru[:4][0])) = v\n}\n\n// clear zeroes the ifreq's union field to prevent trailing garbage data from\n// being sent to the kernel if an ifreq is reused.\nfunc (ifr *Ifreq) clear() {\n\tclear(ifr.raw.Ifru[:])\n}\n\n// TODO(mdlayher): export as IfreqData? For now we can provide helpers such as\n// IoctlGetEthtoolDrvinfo which use these APIs under the hood.\n\n// An ifreqData is an Ifreq which carries pointer data. To produce an ifreqData,\n// use the Ifreq.withData method.\ntype ifreqData struct {\n\tname [IFNAMSIZ]byte\n\t// A type separate from ifreq is required in order to comply with the\n\t// unsafe.Pointer rules since the \"pointer-ness\" of data would not be\n\t// preserved if it were cast into the byte array of a raw ifreq.\n\tdata unsafe.Pointer\n\t// Pad to the same size as ifreq.\n\t_ [len(ifreq{}.Ifru) - SizeofPtr]byte\n}\n\n// withData produces an ifreqData with the pointer p set for ioctls which require\n// arbitrary pointer data.\nfunc (ifr Ifreq) withData(p unsafe.Pointer) ifreqData {\n\treturn ifreqData{\n\t\tname: ifr.raw.Ifrn,\n\t\tdata: p,\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/ioctl_linux.go",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage unix\n\nimport \"unsafe\"\n\n// IoctlRetInt performs an ioctl operation specified by req on a device\n// associated with opened file descriptor fd, and returns a non-negative\n// integer that is returned by the ioctl syscall.\nfunc IoctlRetInt(fd int, req uint) (int, error) {\n\tret, _, err := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), 0)\n\tif err != 0 {\n\t\treturn 0, err\n\t}\n\treturn int(ret), nil\n}\n\nfunc IoctlGetUint32(fd int, req uint) (uint32, error) {\n\tvar value uint32\n\terr := ioctlPtr(fd, req, unsafe.Pointer(&value))\n\treturn value, err\n}\n\nfunc IoctlGetRTCTime(fd int) (*RTCTime, error) {\n\tvar value RTCTime\n\terr := ioctlPtr(fd, RTC_RD_TIME, unsafe.Pointer(&value))\n\treturn &value, err\n}\n\nfunc IoctlSetRTCTime(fd int, value *RTCTime) error {\n\treturn ioctlPtr(fd, RTC_SET_TIME, unsafe.Pointer(value))\n}\n\nfunc IoctlGetRTCWkAlrm(fd int) (*RTCWkAlrm, error) {\n\tvar value RTCWkAlrm\n\terr := ioctlPtr(fd, RTC_WKALM_RD, unsafe.Pointer(&value))\n\treturn &value, err\n}\n\nfunc IoctlSetRTCWkAlrm(fd int, value *RTCWkAlrm) error {\n\treturn ioctlPtr(fd, RTC_WKALM_SET, unsafe.Pointer(value))\n}\n\n// IoctlGetEthtoolDrvinfo fetches ethtool driver information for the network\n// device specified by ifname.\nfunc IoctlGetEthtoolDrvinfo(fd int, ifname string) (*EthtoolDrvinfo, error) {\n\tifr, err := NewIfreq(ifname)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvalue := EthtoolDrvinfo{Cmd: ETHTOOL_GDRVINFO}\n\tifrd := ifr.withData(unsafe.Pointer(&value))\n\n\terr = ioctlIfreqData(fd, SIOCETHTOOL, &ifrd)\n\treturn &value, err\n}\n\n// IoctlGetEthtoolTsInfo fetches ethtool timestamping and PHC\n// association for the network device specified by ifname.\nfunc IoctlGetEthtoolTsInfo(fd int, ifname string) (*EthtoolTsInfo, error) {\n\tifr, err := NewIfreq(ifname)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvalue := EthtoolTsInfo{Cmd: ETHTOOL_GET_TS_INFO}\n\tifrd := ifr.withData(unsafe.Pointer(&value))\n\n\terr = ioctlIfreqData(fd, SIOCETHTOOL, &ifrd)\n\treturn &value, err\n}\n\n// IoctlGetHwTstamp retrieves the hardware timestamping configuration\n// for the network device specified by ifname.\nfunc IoctlGetHwTstamp(fd int, ifname string) (*HwTstampConfig, error) {\n\tifr, err := NewIfreq(ifname)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvalue := HwTstampConfig{}\n\tifrd := ifr.withData(unsafe.Pointer(&value))\n\n\terr = ioctlIfreqData(fd, SIOCGHWTSTAMP, &ifrd)\n\treturn &value, err\n}\n\n// IoctlSetHwTstamp updates the hardware timestamping configuration for\n// the network device specified by ifname.\nfunc IoctlSetHwTstamp(fd int, ifname string, cfg *HwTstampConfig) error {\n\tifr, err := NewIfreq(ifname)\n\tif err != nil {\n\t\treturn err\n\t}\n\tifrd := ifr.withData(unsafe.Pointer(cfg))\n\treturn ioctlIfreqData(fd, SIOCSHWTSTAMP, &ifrd)\n}\n\n// FdToClockID derives the clock ID from the file descriptor number\n// - see clock_gettime(3), FD_TO_CLOCKID macros. The resulting ID is\n// suitable for system calls like ClockGettime.\nfunc FdToClockID(fd int) int32 { return int32((int(^fd) << 3) | 3) }\n\n// IoctlPtpClockGetcaps returns the description of a given PTP device.\nfunc IoctlPtpClockGetcaps(fd int) (*PtpClockCaps, error) {\n\tvar value PtpClockCaps\n\terr := ioctlPtr(fd, PTP_CLOCK_GETCAPS2, unsafe.Pointer(&value))\n\treturn &value, err\n}\n\n// IoctlPtpSysOffsetPrecise returns a description of the clock\n// offset compared to the system clock.\nfunc IoctlPtpSysOffsetPrecise(fd int) (*PtpSysOffsetPrecise, error) {\n\tvar value PtpSysOffsetPrecise\n\terr := ioctlPtr(fd, PTP_SYS_OFFSET_PRECISE2, unsafe.Pointer(&value))\n\treturn &value, err\n}\n\n// IoctlPtpSysOffsetExtended returns an extended description of the\n// clock offset compared to the system clock. The samples parameter\n// specifies the desired number of measurements.\nfunc IoctlPtpSysOffsetExtended(fd int, samples uint) (*PtpSysOffsetExtended, error) {\n\tvalue := PtpSysOffsetExtended{Samples: uint32(samples)}\n\terr := ioctlPtr(fd, PTP_SYS_OFFSET_EXTENDED2, unsafe.Pointer(&value))\n\treturn &value, err\n}\n\n// IoctlPtpPinGetfunc returns the configuration of the specified\n// I/O pin on given PTP device.\nfunc IoctlPtpPinGetfunc(fd int, index uint) (*PtpPinDesc, error) {\n\tvalue := PtpPinDesc{Index: uint32(index)}\n\terr := ioctlPtr(fd, PTP_PIN_GETFUNC2, unsafe.Pointer(&value))\n\treturn &value, err\n}\n\n// IoctlPtpPinSetfunc updates configuration of the specified PTP\n// I/O pin.\nfunc IoctlPtpPinSetfunc(fd int, pd *PtpPinDesc) error {\n\treturn ioctlPtr(fd, PTP_PIN_SETFUNC2, unsafe.Pointer(pd))\n}\n\n// IoctlPtpPeroutRequest configures the periodic output mode of the\n// PTP I/O pins.\nfunc IoctlPtpPeroutRequest(fd int, r *PtpPeroutRequest) error {\n\treturn ioctlPtr(fd, PTP_PEROUT_REQUEST2, unsafe.Pointer(r))\n}\n\n// IoctlPtpExttsRequest configures the external timestamping mode\n// of the PTP I/O pins.\nfunc IoctlPtpExttsRequest(fd int, r *PtpExttsRequest) error {\n\treturn ioctlPtr(fd, PTP_EXTTS_REQUEST2, unsafe.Pointer(r))\n}\n\n// IoctlGetWatchdogInfo fetches information about a watchdog device from the\n// Linux watchdog API. For more information, see:\n// https://www.kernel.org/doc/html/latest/watchdog/watchdog-api.html.\nfunc IoctlGetWatchdogInfo(fd int) (*WatchdogInfo, error) {\n\tvar value WatchdogInfo\n\terr := ioctlPtr(fd, WDIOC_GETSUPPORT, unsafe.Pointer(&value))\n\treturn &value, err\n}\n\n// IoctlWatchdogKeepalive issues a keepalive ioctl to a watchdog device. For\n// more information, see:\n// https://www.kernel.org/doc/html/latest/watchdog/watchdog-api.html.\nfunc IoctlWatchdogKeepalive(fd int) error {\n\t// arg is ignored and not a pointer, so ioctl is fine instead of ioctlPtr.\n\treturn ioctl(fd, WDIOC_KEEPALIVE, 0)\n}\n\n// IoctlFileCloneRange performs an FICLONERANGE ioctl operation to clone the\n// range of data conveyed in value to the file associated with the file\n// descriptor destFd. See the ioctl_ficlonerange(2) man page for details.\nfunc IoctlFileCloneRange(destFd int, value *FileCloneRange) error {\n\treturn ioctlPtr(destFd, FICLONERANGE, unsafe.Pointer(value))\n}\n\n// IoctlFileClone performs an FICLONE ioctl operation to clone the entire file\n// associated with the file description srcFd to the file associated with the\n// file descriptor destFd. See the ioctl_ficlone(2) man page for details.\nfunc IoctlFileClone(destFd, srcFd int) error {\n\treturn ioctl(destFd, FICLONE, uintptr(srcFd))\n}\n\ntype FileDedupeRange struct {\n\tSrc_offset uint64\n\tSrc_length uint64\n\tReserved1  uint16\n\tReserved2  uint32\n\tInfo       []FileDedupeRangeInfo\n}\n\ntype FileDedupeRangeInfo struct {\n\tDest_fd       int64\n\tDest_offset   uint64\n\tBytes_deduped uint64\n\tStatus        int32\n\tReserved      uint32\n}\n\n// IoctlFileDedupeRange performs an FIDEDUPERANGE ioctl operation to share the\n// range of data conveyed in value from the file associated with the file\n// descriptor srcFd to the value.Info destinations. See the\n// ioctl_fideduperange(2) man page for details.\nfunc IoctlFileDedupeRange(srcFd int, value *FileDedupeRange) error {\n\tbuf := make([]byte, SizeofRawFileDedupeRange+\n\t\tlen(value.Info)*SizeofRawFileDedupeRangeInfo)\n\trawrange := (*RawFileDedupeRange)(unsafe.Pointer(&buf[0]))\n\trawrange.Src_offset = value.Src_offset\n\trawrange.Src_length = value.Src_length\n\trawrange.Dest_count = uint16(len(value.Info))\n\trawrange.Reserved1 = value.Reserved1\n\trawrange.Reserved2 = value.Reserved2\n\n\tfor i := range value.Info {\n\t\trawinfo := (*RawFileDedupeRangeInfo)(unsafe.Pointer(\n\t\t\tuintptr(unsafe.Pointer(&buf[0])) + uintptr(SizeofRawFileDedupeRange) +\n\t\t\t\tuintptr(i*SizeofRawFileDedupeRangeInfo)))\n\t\trawinfo.Dest_fd = value.Info[i].Dest_fd\n\t\trawinfo.Dest_offset = value.Info[i].Dest_offset\n\t\trawinfo.Bytes_deduped = value.Info[i].Bytes_deduped\n\t\trawinfo.Status = value.Info[i].Status\n\t\trawinfo.Reserved = value.Info[i].Reserved\n\t}\n\n\terr := ioctlPtr(srcFd, FIDEDUPERANGE, unsafe.Pointer(&buf[0]))\n\n\t// Output\n\tfor i := range value.Info {\n\t\trawinfo := (*RawFileDedupeRangeInfo)(unsafe.Pointer(\n\t\t\tuintptr(unsafe.Pointer(&buf[0])) + uintptr(SizeofRawFileDedupeRange) +\n\t\t\t\tuintptr(i*SizeofRawFileDedupeRangeInfo)))\n\t\tvalue.Info[i].Dest_fd = rawinfo.Dest_fd\n\t\tvalue.Info[i].Dest_offset = rawinfo.Dest_offset\n\t\tvalue.Info[i].Bytes_deduped = rawinfo.Bytes_deduped\n\t\tvalue.Info[i].Status = rawinfo.Status\n\t\tvalue.Info[i].Reserved = rawinfo.Reserved\n\t}\n\n\treturn err\n}\n\nfunc IoctlHIDGetDesc(fd int, value *HIDRawReportDescriptor) error {\n\treturn ioctlPtr(fd, HIDIOCGRDESC, unsafe.Pointer(value))\n}\n\nfunc IoctlHIDGetRawInfo(fd int) (*HIDRawDevInfo, error) {\n\tvar value HIDRawDevInfo\n\terr := ioctlPtr(fd, HIDIOCGRAWINFO, unsafe.Pointer(&value))\n\treturn &value, err\n}\n\nfunc IoctlHIDGetRawName(fd int) (string, error) {\n\tvar value [_HIDIOCGRAWNAME_LEN]byte\n\terr := ioctlPtr(fd, _HIDIOCGRAWNAME, unsafe.Pointer(&value[0]))\n\treturn ByteSliceToString(value[:]), err\n}\n\nfunc IoctlHIDGetRawPhys(fd int) (string, error) {\n\tvar value [_HIDIOCGRAWPHYS_LEN]byte\n\terr := ioctlPtr(fd, _HIDIOCGRAWPHYS, unsafe.Pointer(&value[0]))\n\treturn ByteSliceToString(value[:]), err\n}\n\nfunc IoctlHIDGetRawUniq(fd int) (string, error) {\n\tvar value [_HIDIOCGRAWUNIQ_LEN]byte\n\terr := ioctlPtr(fd, _HIDIOCGRAWUNIQ, unsafe.Pointer(&value[0]))\n\treturn ByteSliceToString(value[:]), err\n}\n\n// IoctlIfreq performs an ioctl using an Ifreq structure for input and/or\n// output. See the netdevice(7) man page for details.\nfunc IoctlIfreq(fd int, req uint, value *Ifreq) error {\n\t// It is possible we will add more fields to *Ifreq itself later to prevent\n\t// misuse, so pass the raw *ifreq directly.\n\treturn ioctlPtr(fd, req, unsafe.Pointer(&value.raw))\n}\n\n// TODO(mdlayher): export if and when IfreqData is exported.\n\n// ioctlIfreqData performs an ioctl using an ifreqData structure for input\n// and/or output. See the netdevice(7) man page for details.\nfunc ioctlIfreqData(fd int, req uint, value *ifreqData) error {\n\t// The memory layout of IfreqData (type-safe) and ifreq (not type-safe) are\n\t// identical so pass *IfreqData directly.\n\treturn ioctlPtr(fd, req, unsafe.Pointer(value))\n}\n\n// IoctlKCMClone attaches a new file descriptor to a multiplexor by cloning an\n// existing KCM socket, returning a structure containing the file descriptor of\n// the new socket.\nfunc IoctlKCMClone(fd int) (*KCMClone, error) {\n\tvar info KCMClone\n\tif err := ioctlPtr(fd, SIOCKCMCLONE, unsafe.Pointer(&info)); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &info, nil\n}\n\n// IoctlKCMAttach attaches a TCP socket and associated BPF program file\n// descriptor to a multiplexor.\nfunc IoctlKCMAttach(fd int, info KCMAttach) error {\n\treturn ioctlPtr(fd, SIOCKCMATTACH, unsafe.Pointer(&info))\n}\n\n// IoctlKCMUnattach unattaches a TCP socket file descriptor from a multiplexor.\nfunc IoctlKCMUnattach(fd int, info KCMUnattach) error {\n\treturn ioctlPtr(fd, SIOCKCMUNATTACH, unsafe.Pointer(&info))\n}\n\n// IoctlLoopGetStatus64 gets the status of the loop device associated with the\n// file descriptor fd using the LOOP_GET_STATUS64 operation.\nfunc IoctlLoopGetStatus64(fd int) (*LoopInfo64, error) {\n\tvar value LoopInfo64\n\tif err := ioctlPtr(fd, LOOP_GET_STATUS64, unsafe.Pointer(&value)); err != nil {\n\t\treturn nil, err\n\t}\n\treturn &value, nil\n}\n\n// IoctlLoopSetStatus64 sets the status of the loop device associated with the\n// file descriptor fd using the LOOP_SET_STATUS64 operation.\nfunc IoctlLoopSetStatus64(fd int, value *LoopInfo64) error {\n\treturn ioctlPtr(fd, LOOP_SET_STATUS64, unsafe.Pointer(value))\n}\n\n// IoctlLoopConfigure configures all loop device parameters in a single step\nfunc IoctlLoopConfigure(fd int, value *LoopConfig) error {\n\treturn ioctlPtr(fd, LOOP_CONFIGURE, unsafe.Pointer(value))\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/ioctl_signed.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || solaris\n\npackage unix\n\nimport \"unsafe\"\n\n// ioctl itself should not be exposed directly, but additional get/set\n// functions for specific types are permissible.\n\n// IoctlSetInt performs an ioctl operation which sets an integer value\n// on fd, using the specified request number.\nfunc IoctlSetInt(fd int, req int, value int) error {\n\treturn ioctl(fd, req, uintptr(value))\n}\n\n// IoctlSetPointerInt performs an ioctl operation which sets an\n// integer value on fd, using the specified request number. The ioctl\n// argument is called with a pointer to the integer value, rather than\n// passing the integer value directly.\nfunc IoctlSetPointerInt(fd int, req int, value int) error {\n\tv := int32(value)\n\treturn ioctlPtr(fd, req, unsafe.Pointer(&v))\n}\n\n// IoctlSetString performs an ioctl operation which sets a string value\n// on fd, using the specified request number.\nfunc IoctlSetString(fd int, req int, value string) error {\n\tbs := append([]byte(value), 0)\n\treturn ioctlPtr(fd, req, unsafe.Pointer(&bs[0]))\n}\n\n// IoctlSetWinsize performs an ioctl on fd with a *Winsize argument.\n//\n// To change fd's window size, the req argument should be TIOCSWINSZ.\nfunc IoctlSetWinsize(fd int, req int, value *Winsize) error {\n\t// TODO: if we get the chance, remove the req parameter and\n\t// hardcode TIOCSWINSZ.\n\treturn ioctlPtr(fd, req, unsafe.Pointer(value))\n}\n\n// IoctlSetTermios performs an ioctl on fd with a *Termios.\n//\n// The req value will usually be TCSETA or TIOCSETA.\nfunc IoctlSetTermios(fd int, req int, value *Termios) error {\n\t// TODO: if we get the chance, remove the req parameter.\n\treturn ioctlPtr(fd, req, unsafe.Pointer(value))\n}\n\n// IoctlGetInt performs an ioctl operation which gets an integer value\n// from fd, using the specified request number.\n//\n// A few ioctl requests use the return value as an output parameter;\n// for those, IoctlRetInt should be used instead of this function.\nfunc IoctlGetInt(fd int, req int) (int, error) {\n\tvar value int\n\terr := ioctlPtr(fd, req, unsafe.Pointer(&value))\n\treturn value, err\n}\n\nfunc IoctlGetWinsize(fd int, req int) (*Winsize, error) {\n\tvar value Winsize\n\terr := ioctlPtr(fd, req, unsafe.Pointer(&value))\n\treturn &value, err\n}\n\nfunc IoctlGetTermios(fd int, req int) (*Termios, error) {\n\tvar value Termios\n\terr := ioctlPtr(fd, req, unsafe.Pointer(&value))\n\treturn &value, err\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/ioctl_unsigned.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build darwin || dragonfly || freebsd || hurd || linux || netbsd || openbsd\n\npackage unix\n\nimport \"unsafe\"\n\n// ioctl itself should not be exposed directly, but additional get/set\n// functions for specific types are permissible.\n\n// IoctlSetInt performs an ioctl operation which sets an integer value\n// on fd, using the specified request number.\nfunc IoctlSetInt(fd int, req uint, value int) error {\n\treturn ioctl(fd, req, uintptr(value))\n}\n\n// IoctlSetPointerInt performs an ioctl operation which sets an\n// integer value on fd, using the specified request number. The ioctl\n// argument is called with a pointer to the integer value, rather than\n// passing the integer value directly.\nfunc IoctlSetPointerInt(fd int, req uint, value int) error {\n\tv := int32(value)\n\treturn ioctlPtr(fd, req, unsafe.Pointer(&v))\n}\n\n// IoctlSetString performs an ioctl operation which sets a string value\n// on fd, using the specified request number.\nfunc IoctlSetString(fd int, req uint, value string) error {\n\tbs := append([]byte(value), 0)\n\treturn ioctlPtr(fd, req, unsafe.Pointer(&bs[0]))\n}\n\n// IoctlSetWinsize performs an ioctl on fd with a *Winsize argument.\n//\n// To change fd's window size, the req argument should be TIOCSWINSZ.\nfunc IoctlSetWinsize(fd int, req uint, value *Winsize) error {\n\t// TODO: if we get the chance, remove the req parameter and\n\t// hardcode TIOCSWINSZ.\n\treturn ioctlPtr(fd, req, unsafe.Pointer(value))\n}\n\n// IoctlSetTermios performs an ioctl on fd with a *Termios.\n//\n// The req value will usually be TCSETA or TIOCSETA.\nfunc IoctlSetTermios(fd int, req uint, value *Termios) error {\n\t// TODO: if we get the chance, remove the req parameter.\n\treturn ioctlPtr(fd, req, unsafe.Pointer(value))\n}\n\n// IoctlGetInt performs an ioctl operation which gets an integer value\n// from fd, using the specified request number.\n//\n// A few ioctl requests use the return value as an output parameter;\n// for those, IoctlRetInt should be used instead of this function.\nfunc IoctlGetInt(fd int, req uint) (int, error) {\n\tvar value int\n\terr := ioctlPtr(fd, req, unsafe.Pointer(&value))\n\treturn value, err\n}\n\nfunc IoctlGetWinsize(fd int, req uint) (*Winsize, error) {\n\tvar value Winsize\n\terr := ioctlPtr(fd, req, unsafe.Pointer(&value))\n\treturn &value, err\n}\n\nfunc IoctlGetTermios(fd int, req uint) (*Termios, error) {\n\tvar value Termios\n\terr := ioctlPtr(fd, req, unsafe.Pointer(&value))\n\treturn &value, err\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/ioctl_zos.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build zos && s390x\n\npackage unix\n\nimport (\n\t\"runtime\"\n\t\"unsafe\"\n)\n\n// ioctl itself should not be exposed directly, but additional get/set\n// functions for specific types are permissible.\n\n// IoctlSetInt performs an ioctl operation which sets an integer value\n// on fd, using the specified request number.\nfunc IoctlSetInt(fd int, req int, value int) error {\n\treturn ioctl(fd, req, uintptr(value))\n}\n\n// IoctlSetWinsize performs an ioctl on fd with a *Winsize argument.\n//\n// To change fd's window size, the req argument should be TIOCSWINSZ.\nfunc IoctlSetWinsize(fd int, req int, value *Winsize) error {\n\t// TODO: if we get the chance, remove the req parameter and\n\t// hardcode TIOCSWINSZ.\n\treturn ioctlPtr(fd, req, unsafe.Pointer(value))\n}\n\n// IoctlSetTermios performs an ioctl on fd with a *Termios.\n//\n// The req value is expected to be TCSETS, TCSETSW, or TCSETSF\nfunc IoctlSetTermios(fd int, req int, value *Termios) error {\n\tif (req != TCSETS) && (req != TCSETSW) && (req != TCSETSF) {\n\t\treturn ENOSYS\n\t}\n\terr := Tcsetattr(fd, int(req), value)\n\truntime.KeepAlive(value)\n\treturn err\n}\n\n// IoctlGetInt performs an ioctl operation which gets an integer value\n// from fd, using the specified request number.\n//\n// A few ioctl requests use the return value as an output parameter;\n// for those, IoctlRetInt should be used instead of this function.\nfunc IoctlGetInt(fd int, req int) (int, error) {\n\tvar value int\n\terr := ioctlPtr(fd, req, unsafe.Pointer(&value))\n\treturn value, err\n}\n\nfunc IoctlGetWinsize(fd int, req int) (*Winsize, error) {\n\tvar value Winsize\n\terr := ioctlPtr(fd, req, unsafe.Pointer(&value))\n\treturn &value, err\n}\n\n// IoctlGetTermios performs an ioctl on fd with a *Termios.\n//\n// The req value is expected to be TCGETS\nfunc IoctlGetTermios(fd int, req int) (*Termios, error) {\n\tvar value Termios\n\tif req != TCGETS {\n\t\treturn &value, ENOSYS\n\t}\n\terr := Tcgetattr(fd, &value)\n\treturn &value, err\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/mkall.sh",
    "content": "#!/usr/bin/env bash\n# Copyright 2009 The Go Authors. All rights reserved.\n# Use of this source code is governed by a BSD-style\n# license that can be found in the LICENSE file.\n\n# This script runs or (given -n) prints suggested commands to generate files for\n# the Architecture/OS specified by the GOARCH and GOOS environment variables.\n# See README.md for more information about how the build system works.\n\nGOOSARCH=\"${GOOS}_${GOARCH}\"\n\n# defaults\nmksyscall=\"go run mksyscall.go\"\nmkerrors=\"./mkerrors.sh\"\nzerrors=\"zerrors_$GOOSARCH.go\"\nmksysctl=\"\"\nzsysctl=\"zsysctl_$GOOSARCH.go\"\nmksysnum=\nmktypes=\nmkasm=\nrun=\"sh\"\ncmd=\"\"\n\ncase \"$1\" in\n-syscalls)\n\tfor i in zsyscall*go\n\tdo\n\t\t# Run the command line that appears in the first line\n\t\t# of the generated file to regenerate it.\n\t\tsed 1q $i | sed 's;^// ;;' | sh > _$i && gofmt < _$i > $i\n\t\trm _$i\n\tdone\n\texit 0\n\t;;\n-n)\n\trun=\"cat\"\n\tcmd=\"echo\"\n\tshift\nesac\n\ncase \"$#\" in\n0)\n\t;;\n*)\n\techo 'usage: mkall.sh [-n]' 1>&2\n\texit 2\nesac\n\nif [[ \"$GOOS\" = \"linux\" ]]; then\n\t# Use the Docker-based build system\n\t# Files generated through docker (use $cmd so you can Ctl-C the build or run)\n\tset -e\n\t$cmd docker build --tag generate:$GOOS $GOOS\n\t$cmd docker run --interactive --tty --volume $(cd -- \"$(dirname -- \"$0\")/..\" && pwd):/build generate:$GOOS\n\texit\nfi\n\nGOOSARCH_in=syscall_$GOOSARCH.go\ncase \"$GOOSARCH\" in\n_* | *_ | _)\n\techo 'undefined $GOOS_$GOARCH:' \"$GOOSARCH\" 1>&2\n\texit 1\n\t;;\naix_ppc)\n\tmkerrors=\"$mkerrors -maix32\"\n\tmksyscall=\"go run mksyscall_aix_ppc.go -aix\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\naix_ppc64)\n\tmkerrors=\"$mkerrors -maix64\"\n\tmksyscall=\"go run mksyscall_aix_ppc64.go -aix\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\ndarwin_amd64)\n\tmkerrors=\"$mkerrors -m64\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\tmkasm=\"go run mkasm.go\"\n\t;;\ndarwin_arm64)\n\tmkerrors=\"$mkerrors -m64\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\tmkasm=\"go run mkasm.go\"\n\t;;\ndragonfly_amd64)\n\tmkerrors=\"$mkerrors -m64\"\n\tmksyscall=\"go run mksyscall.go -dragonfly\"\n\tmksysnum=\"go run mksysnum.go 'https://gitweb.dragonflybsd.org/dragonfly.git/blob_plain/HEAD:/sys/kern/syscalls.master'\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\nfreebsd_386)\n\tmkerrors=\"$mkerrors -m32\"\n\tmksyscall=\"go run mksyscall.go -l32\"\n\tmksysnum=\"go run mksysnum.go 'https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12'\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\nfreebsd_amd64)\n\tmkerrors=\"$mkerrors -m64\"\n\tmksysnum=\"go run mksysnum.go 'https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12'\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\nfreebsd_arm)\n\tmkerrors=\"$mkerrors\"\n\tmksyscall=\"go run mksyscall.go -l32 -arm\"\n\tmksysnum=\"go run mksysnum.go 'https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12'\"\n\t# Let the type of C char be signed for making the bare syscall\n\t# API consistent across platforms.\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char\"\n\t;;\nfreebsd_arm64)\n\tmkerrors=\"$mkerrors -m64\"\n\tmksysnum=\"go run mksysnum.go 'https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12'\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char\"\n\t;;\nfreebsd_riscv64)\n\tmkerrors=\"$mkerrors -m64\"\n\tmksysnum=\"go run mksysnum.go 'https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12'\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char\"\n\t;;\nnetbsd_386)\n\tmkerrors=\"$mkerrors -m32\"\n\tmksyscall=\"go run mksyscall.go -l32 -netbsd\"\n\tmksysnum=\"go run mksysnum.go 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master'\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\nnetbsd_amd64)\n\tmkerrors=\"$mkerrors -m64\"\n\tmksyscall=\"go run mksyscall.go -netbsd\"\n\tmksysnum=\"go run mksysnum.go 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master'\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\nnetbsd_arm)\n\tmkerrors=\"$mkerrors\"\n\tmksyscall=\"go run mksyscall.go -l32 -netbsd -arm\"\n\tmksysnum=\"go run mksysnum.go 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master'\"\n\t# Let the type of C char be signed for making the bare syscall\n\t# API consistent across platforms.\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char\"\n\t;;\nnetbsd_arm64)\n\tmkerrors=\"$mkerrors -m64\"\n\tmksyscall=\"go run mksyscall.go -netbsd\"\n\tmksysnum=\"go run mksysnum.go 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master'\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\nopenbsd_386)\n\tmkasm=\"go run mkasm.go\"\n\tmkerrors=\"$mkerrors -m32\"\n\tmksyscall=\"go run mksyscall.go -l32 -openbsd -libc\"\n\tmksysctl=\"go run mksysctl_openbsd.go\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\nopenbsd_amd64)\n\tmkasm=\"go run mkasm.go\"\n\tmkerrors=\"$mkerrors -m64\"\n\tmksyscall=\"go run mksyscall.go -openbsd -libc\"\n\tmksysctl=\"go run mksysctl_openbsd.go\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\nopenbsd_arm)\n\tmkasm=\"go run mkasm.go\"\n\tmkerrors=\"$mkerrors\"\n\tmksyscall=\"go run mksyscall.go -l32 -openbsd -arm -libc\"\n\tmksysctl=\"go run mksysctl_openbsd.go\"\n\t# Let the type of C char be signed for making the bare syscall\n\t# API consistent across platforms.\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char\"\n\t;;\nopenbsd_arm64)\n\tmkasm=\"go run mkasm.go\"\n\tmkerrors=\"$mkerrors -m64\"\n\tmksyscall=\"go run mksyscall.go -openbsd -libc\"\n\tmksysctl=\"go run mksysctl_openbsd.go\"\n\t# Let the type of C char be signed for making the bare syscall\n\t# API consistent across platforms.\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char\"\n\t;;\nopenbsd_mips64)\n\tmkasm=\"go run mkasm.go\"\n\tmkerrors=\"$mkerrors -m64\"\n\tmksyscall=\"go run mksyscall.go -openbsd -libc\"\n\tmksysctl=\"go run mksysctl_openbsd.go\"\n\t# Let the type of C char be signed for making the bare syscall\n\t# API consistent across platforms.\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char\"\n\t;;\nopenbsd_ppc64)\n\tmkasm=\"go run mkasm.go\"\n\tmkerrors=\"$mkerrors -m64\"\n\tmksyscall=\"go run mksyscall.go -openbsd -libc\"\n\tmksysctl=\"go run mksysctl_openbsd.go\"\n\t# Let the type of C char be signed for making the bare syscall\n\t# API consistent across platforms.\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char\"\n\t;;\nopenbsd_riscv64)\n\tmkasm=\"go run mkasm.go\"\n\tmkerrors=\"$mkerrors -m64\"\n\tmksyscall=\"go run mksyscall.go -openbsd -libc\"\n\tmksysctl=\"go run mksysctl_openbsd.go\"\n\t# Let the type of C char be signed for making the bare syscall\n\t# API consistent across platforms.\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char\"\n\t;;\nsolaris_amd64)\n\tmksyscall=\"go run mksyscall_solaris.go\"\n\tmkerrors=\"$mkerrors -m64\"\n\tmksysnum=\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\nillumos_amd64)\n        mksyscall=\"go run mksyscall_solaris.go\"\n\tmkerrors=\n\tmksysnum=\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\n*)\n\techo 'unrecognized $GOOS_$GOARCH: ' \"$GOOSARCH\" 1>&2\n\texit 1\n\t;;\nesac\n\n(\n\tif [ -n \"$mkerrors\" ]; then echo \"$mkerrors |gofmt >$zerrors\"; fi\n\tcase \"$GOOS\" in\n\t*)\n\t\tsyscall_goos=\"syscall_$GOOS.go\"\n\t\tcase \"$GOOS\" in\n\t\tdarwin | dragonfly | freebsd | netbsd | openbsd)\n\t\t\tsyscall_goos=\"syscall_bsd.go $syscall_goos\"\n\t\t\t;;\n\t\tesac\n\t\tif [ -n \"$mksyscall\" ]; then\n\t\t\tif [ \"$GOOSARCH\" == \"aix_ppc64\" ]; then\n\t\t\t\t# aix/ppc64 script generates files instead of writing to stdin.\n\t\t\t\techo \"$mksyscall -tags $GOOS,$GOARCH $syscall_goos $GOOSARCH_in && gofmt -w zsyscall_$GOOSARCH.go && gofmt -w zsyscall_\"$GOOSARCH\"_gccgo.go && gofmt -w zsyscall_\"$GOOSARCH\"_gc.go \" ;\n\t\t\telif [ \"$GOOS\" == \"illumos\" ]; then\n\t\t\t        # illumos code generation requires a --illumos switch\n\t\t\t        echo \"$mksyscall -illumos -tags illumos,$GOARCH syscall_illumos.go |gofmt > zsyscall_illumos_$GOARCH.go\";\n\t\t\t        # illumos implies solaris, so solaris code generation is also required\n\t\t\t\techo \"$mksyscall -tags solaris,$GOARCH syscall_solaris.go syscall_solaris_$GOARCH.go |gofmt >zsyscall_solaris_$GOARCH.go\";\n\t\t\telse\n\t\t\t\techo \"$mksyscall -tags $GOOS,$GOARCH $syscall_goos $GOOSARCH_in |gofmt >zsyscall_$GOOSARCH.go\";\n\t\t\tfi\n\t\tfi\n\tesac\n\tif [ -n \"$mksysctl\" ]; then echo \"$mksysctl |gofmt >$zsysctl\"; fi\n\tif [ -n \"$mksysnum\" ]; then echo \"$mksysnum |gofmt >zsysnum_$GOOSARCH.go\"; fi\n\tif [ -n \"$mktypes\" ]; then echo \"$mktypes types_$GOOS.go | go run mkpost.go > ztypes_$GOOSARCH.go\"; fi\n\tif [ -n \"$mkasm\" ]; then echo \"$mkasm $GOOS $GOARCH\"; fi\n) | $run\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/mkerrors.sh",
    "content": "#!/usr/bin/env bash\n# Copyright 2009 The Go Authors. All rights reserved.\n# Use of this source code is governed by a BSD-style\n# license that can be found in the LICENSE file.\n\n# Generate Go code listing errors and other #defined constant\n# values (ENAMETOOLONG etc.), by asking the preprocessor\n# about the definitions.\n\nunset LANG\nexport LC_ALL=C\nexport LC_CTYPE=C\n\nif test -z \"$GOARCH\" -o -z \"$GOOS\"; then\n\techo 1>&2 \"GOARCH or GOOS not defined in environment\"\n\texit 1\nfi\n\n# Check that we are using the new build system if we should\nif [[ \"$GOOS\" = \"linux\" ]] && [[ \"$GOLANG_SYS_BUILD\" != \"docker\" ]]; then\n\techo 1>&2 \"In the Docker based build system, mkerrors should not be called directly.\"\n\techo 1>&2 \"See README.md\"\n\texit 1\nfi\n\nif [[ \"$GOOS\" = \"aix\" ]]; then\n\tCC=${CC:-gcc}\nelse\n\tCC=${CC:-cc}\nfi\n\nif [[ \"$GOOS\" = \"solaris\" ]]; then\n\t# Assumes GNU versions of utilities in PATH.\n\texport PATH=/usr/gnu/bin:$PATH\nfi\n\nuname=$(uname)\n\nincludes_AIX='\n#include <net/if.h>\n#include <net/netopt.h>\n#include <netinet/ip_mroute.h>\n#include <sys/protosw.h>\n#include <sys/stropts.h>\n#include <sys/mman.h>\n#include <sys/poll.h>\n#include <sys/select.h>\n#include <sys/termio.h>\n#include <termios.h>\n#include <fcntl.h>\n\n#define AF_LOCAL AF_UNIX\n'\n\nincludes_Darwin='\n#define _DARWIN_C_SOURCE\n#define KERNEL 1\n#define _DARWIN_USE_64_BIT_INODE\n#define __APPLE_USE_RFC_3542\n#include <stdint.h>\n#include <sys/stdio.h>\n#include <sys/attr.h>\n#include <sys/clonefile.h>\n#include <sys/kern_control.h>\n#include <sys/types.h>\n#include <sys/event.h>\n#include <sys/ptrace.h>\n#include <sys/select.h>\n#include <sys/socket.h>\n#include <sys/stat.h>\n#include <sys/un.h>\n#include <sys/sockio.h>\n#include <sys/sys_domain.h>\n#include <sys/sysctl.h>\n#include <sys/mman.h>\n#include <sys/mount.h>\n#include <sys/utsname.h>\n#include <sys/wait.h>\n#include <sys/xattr.h>\n#include <sys/vsock.h>\n#include <net/bpf.h>\n#include <net/if.h>\n#include <net/if_types.h>\n#include <net/route.h>\n#include <netinet/in.h>\n#include <netinet/ip.h>\n#include <termios.h>\n\n// for backwards compatibility because moved TIOCREMOTE to Kernel.framework after MacOSX12.0.sdk.\n#define TIOCREMOTE 0x80047469\n'\n\nincludes_DragonFly='\n#include <sys/types.h>\n#include <sys/event.h>\n#include <sys/select.h>\n#include <sys/socket.h>\n#include <sys/sockio.h>\n#include <sys/stat.h>\n#include <sys/sysctl.h>\n#include <sys/mman.h>\n#include <sys/mount.h>\n#include <sys/wait.h>\n#include <sys/ioctl.h>\n#include <net/bpf.h>\n#include <net/if.h>\n#include <net/if_clone.h>\n#include <net/if_types.h>\n#include <net/route.h>\n#include <netinet/in.h>\n#include <termios.h>\n#include <netinet/ip.h>\n#include <net/ip_mroute/ip_mroute.h>\n'\n\nincludes_FreeBSD='\n#include <sys/capsicum.h>\n#include <sys/param.h>\n#include <sys/types.h>\n#include <sys/disk.h>\n#include <sys/event.h>\n#include <sys/sched.h>\n#include <sys/select.h>\n#include <sys/socket.h>\n#include <sys/un.h>\n#include <sys/sockio.h>\n#include <sys/stat.h>\n#include <sys/sysctl.h>\n#include <sys/mman.h>\n#include <sys/mount.h>\n#include <sys/wait.h>\n#include <sys/ioctl.h>\n#include <sys/ptrace.h>\n#include <net/bpf.h>\n#include <net/if.h>\n#include <net/if_types.h>\n#include <net/route.h>\n#include <netinet/in.h>\n#include <termios.h>\n#include <netinet/ip.h>\n#include <netinet/ip_mroute.h>\n#include <sys/extattr.h>\n\n#if __FreeBSD__ >= 10\n#define IFT_CARP\t0xf8\t// IFT_CARP is deprecated in FreeBSD 10\n#undef SIOCAIFADDR\n#define SIOCAIFADDR\t_IOW(105, 26, struct oifaliasreq)\t// ifaliasreq contains if_data\n#undef SIOCSIFPHYADDR\n#define SIOCSIFPHYADDR\t_IOW(105, 70, struct oifaliasreq)\t// ifaliasreq contains if_data\n#endif\n'\n\nincludes_Linux='\n#define _LARGEFILE_SOURCE\n#define _LARGEFILE64_SOURCE\n#ifndef __LP64__\n#define _FILE_OFFSET_BITS 64\n#endif\n#define _GNU_SOURCE\n\n// See the description in unix/linux/types.go\n#if defined(__ARM_EABI__) || \\\n\t(defined(__mips__) && (_MIPS_SIM == _ABIO32)) || \\\n\t(defined(__powerpc__) && (!defined(__powerpc64__)))\n# ifdef   _TIME_BITS\n#  undef  _TIME_BITS\n# endif\n# define  _TIME_BITS 32\n#endif\n\n// <sys/ioctl.h> is broken on powerpc64, as it fails to include definitions of\n// these structures. We just include them copied from <bits/termios.h>.\n#if defined(__powerpc__)\nstruct sgttyb {\n        char    sg_ispeed;\n        char    sg_ospeed;\n        char    sg_erase;\n        char    sg_kill;\n        short   sg_flags;\n};\n\nstruct tchars {\n        char    t_intrc;\n        char    t_quitc;\n        char    t_startc;\n        char    t_stopc;\n        char    t_eofc;\n        char    t_brkc;\n};\n\nstruct ltchars {\n        char    t_suspc;\n        char    t_dsuspc;\n        char    t_rprntc;\n        char    t_flushc;\n        char    t_werasc;\n        char    t_lnextc;\n};\n#endif\n\n#include <bits/sockaddr.h>\n#include <sys/epoll.h>\n#include <sys/eventfd.h>\n#include <sys/inotify.h>\n#include <sys/ioctl.h>\n#include <sys/mman.h>\n#include <sys/mount.h>\n#include <sys/prctl.h>\n#include <sys/stat.h>\n#include <sys/types.h>\n#include <sys/time.h>\n#include <sys/select.h>\n#include <sys/signalfd.h>\n#include <sys/socket.h>\n#include <sys/timerfd.h>\n#include <sys/uio.h>\n#include <sys/xattr.h>\n#include <netinet/udp.h>\n#include <linux/audit.h>\n#include <linux/bpf.h>\n#include <linux/can.h>\n#include <linux/can/error.h>\n#include <linux/can/netlink.h>\n#include <linux/can/raw.h>\n#include <linux/capability.h>\n#include <linux/cryptouser.h>\n#include <linux/devlink.h>\n#include <linux/dm-ioctl.h>\n#include <linux/elf.h>\n#include <linux/errqueue.h>\n#include <linux/ethtool_netlink.h>\n#include <linux/falloc.h>\n#include <linux/fanotify.h>\n#include <linux/fib_rules.h>\n#include <linux/filter.h>\n#include <linux/fs.h>\n#include <linux/fscrypt.h>\n#include <linux/fsverity.h>\n#include <linux/genetlink.h>\n#include <linux/hdreg.h>\n#include <linux/hidraw.h>\n#include <linux/if.h>\n#include <linux/if_addr.h>\n#include <linux/if_alg.h>\n#include <linux/if_arp.h>\n#include <linux/if_ether.h>\n#include <linux/if_ppp.h>\n#include <linux/if_tun.h>\n#include <linux/if_packet.h>\n#include <linux/if_xdp.h>\n#include <linux/input.h>\n#include <linux/kcm.h>\n#include <linux/kexec.h>\n#include <linux/keyctl.h>\n#include <linux/landlock.h>\n#include <linux/loop.h>\n#include <linux/lwtunnel.h>\n#include <linux/magic.h>\n#include <linux/mei.h>\n#include <linux/memfd.h>\n#include <linux/module.h>\n#include <linux/mount.h>\n#include <linux/netfilter/nfnetlink.h>\n#include <linux/netfilter/nf_tables.h>\n#include <linux/netlink.h>\n#include <linux/net_namespace.h>\n#include <linux/nfc.h>\n#include <linux/nsfs.h>\n#include <linux/perf_event.h>\n#include <linux/pps.h>\n#include <linux/ptp_clock.h>\n#include <linux/ptrace.h>\n#include <linux/random.h>\n#include <linux/reboot.h>\n#include <linux/rtc.h>\n#include <linux/rtnetlink.h>\n#include <linux/sched.h>\n#include <linux/seccomp.h>\n#include <linux/serial.h>\n#include <linux/sock_diag.h>\n#include <linux/sockios.h>\n#include <linux/taskstats.h>\n#include <linux/tipc.h>\n#include <linux/vm_sockets.h>\n#include <linux/wait.h>\n#include <linux/watchdog.h>\n#include <linux/wireguard.h>\n\n#include <mtd/ubi-user.h>\n#include <mtd/mtd-user.h>\n#include <net/route.h>\n\n#if defined(__sparc__)\n// On sparc{,64}, the kernel defines struct termios2 itself which clashes with the\n// definition in glibc. As only the error constants are needed here, include the\n// generic termibits.h (which is included by termbits.h on sparc).\n#include <asm-generic/termbits.h>\n#else\n#include <asm/termbits.h>\n#endif\n\n#ifndef PTRACE_GETREGS\n#define PTRACE_GETREGS\t0xc\n#endif\n\n#ifndef PTRACE_SETREGS\n#define PTRACE_SETREGS\t0xd\n#endif\n\n#ifdef SOL_BLUETOOTH\n// SPARC includes this in /usr/include/sparc64-linux-gnu/bits/socket.h\n// but it is already in bluetooth_linux.go\n#undef SOL_BLUETOOTH\n#endif\n\n// Certain constants are missing from the fs/crypto UAPI\n#define FS_KEY_DESC_PREFIX              \"fscrypt:\"\n#define FS_KEY_DESC_PREFIX_SIZE         8\n#define FS_MAX_KEY_SIZE                 64\n\n// The code generator produces -0x1 for (~0), but an unsigned value is necessary\n// for the tipc_subscr timeout __u32 field.\n#undef TIPC_WAIT_FOREVER\n#define TIPC_WAIT_FOREVER 0xffffffff\n\n// Copied from linux/netfilter/nf_nat.h\n// Including linux/netfilter/nf_nat.h here causes conflicts between linux/in.h\n// and netinet/in.h.\n#define NF_NAT_RANGE_MAP_IPS\t\t\t(1 << 0)\n#define NF_NAT_RANGE_PROTO_SPECIFIED\t\t(1 << 1)\n#define NF_NAT_RANGE_PROTO_RANDOM\t\t(1 << 2)\n#define NF_NAT_RANGE_PERSISTENT\t\t\t(1 << 3)\n#define NF_NAT_RANGE_PROTO_RANDOM_FULLY\t\t(1 << 4)\n#define NF_NAT_RANGE_PROTO_OFFSET\t\t(1 << 5)\n#define NF_NAT_RANGE_NETMAP\t\t\t(1 << 6)\n#define NF_NAT_RANGE_PROTO_RANDOM_ALL\t\t\\\n\t(NF_NAT_RANGE_PROTO_RANDOM | NF_NAT_RANGE_PROTO_RANDOM_FULLY)\n#define NF_NAT_RANGE_MASK\t\t\t\t\t\\\n\t(NF_NAT_RANGE_MAP_IPS | NF_NAT_RANGE_PROTO_SPECIFIED |\t\\\n\t NF_NAT_RANGE_PROTO_RANDOM | NF_NAT_RANGE_PERSISTENT |\t\\\n\t NF_NAT_RANGE_PROTO_RANDOM_FULLY | NF_NAT_RANGE_PROTO_OFFSET | \\\n\t NF_NAT_RANGE_NETMAP)\n\n// Copied from linux/hid.h.\n// Keep in sync with the size of the referenced fields.\n#define _HIDIOCGRAWNAME_LEN\t128 // sizeof_field(struct hid_device, name)\n#define _HIDIOCGRAWPHYS_LEN\t64  // sizeof_field(struct hid_device, phys)\n#define _HIDIOCGRAWUNIQ_LEN\t64  // sizeof_field(struct hid_device, uniq)\n\n#define _HIDIOCGRAWNAME\t\tHIDIOCGRAWNAME(_HIDIOCGRAWNAME_LEN)\n#define _HIDIOCGRAWPHYS\t\tHIDIOCGRAWPHYS(_HIDIOCGRAWPHYS_LEN)\n#define _HIDIOCGRAWUNIQ\t\tHIDIOCGRAWUNIQ(_HIDIOCGRAWUNIQ_LEN)\n\n// Renamed in v6.16, commit c6d732c38f93 (\"net: ethtool: remove duplicate defines for family info\")\n#define ETHTOOL_FAMILY_NAME\tETHTOOL_GENL_NAME\n#define ETHTOOL_FAMILY_VERSION\tETHTOOL_GENL_VERSION\n'\n\nincludes_NetBSD='\n#include <sys/types.h>\n#include <sys/param.h>\n#include <sys/event.h>\n#include <sys/extattr.h>\n#include <sys/mman.h>\n#include <sys/mount.h>\n#include <sys/sched.h>\n#include <sys/select.h>\n#include <sys/socket.h>\n#include <sys/sockio.h>\n#include <sys/sysctl.h>\n#include <sys/termios.h>\n#include <sys/ttycom.h>\n#include <sys/wait.h>\n#include <net/bpf.h>\n#include <net/if.h>\n#include <net/if_types.h>\n#include <net/route.h>\n#include <netinet/in.h>\n#include <netinet/in_systm.h>\n#include <netinet/ip.h>\n#include <netinet/ip_mroute.h>\n#include <netinet/if_ether.h>\n\n// Needed since <sys/param.h> refers to it...\n#define schedppq 1\n'\n\nincludes_OpenBSD='\n#include <sys/types.h>\n#include <sys/param.h>\n#include <sys/event.h>\n#include <sys/mman.h>\n#include <sys/mount.h>\n#include <sys/select.h>\n#include <sys/sched.h>\n#include <sys/socket.h>\n#include <sys/sockio.h>\n#include <sys/stat.h>\n#include <sys/sysctl.h>\n#include <sys/termios.h>\n#include <sys/ttycom.h>\n#include <sys/unistd.h>\n#include <sys/wait.h>\n#include <net/bpf.h>\n#include <net/if.h>\n#include <net/if_types.h>\n#include <net/if_var.h>\n#include <net/route.h>\n#include <netinet/in.h>\n#include <netinet/in_systm.h>\n#include <netinet/ip.h>\n#include <netinet/ip_mroute.h>\n#include <netinet/if_ether.h>\n#include <net/if_bridge.h>\n\n// We keep some constants not supported in OpenBSD 5.5 and beyond for\n// the promise of compatibility.\n#define EMUL_ENABLED\t\t0x1\n#define EMUL_NATIVE\t\t0x2\n#define IPV6_FAITH\t\t0x1d\n#define IPV6_OPTIONS\t\t0x1\n#define IPV6_RTHDR_STRICT\t0x1\n#define IPV6_SOCKOPT_RESERVED1\t0x3\n#define SIOCGIFGENERIC\t\t0xc020693a\n#define SIOCSIFGENERIC\t\t0x80206939\n#define WALTSIG\t\t\t0x4\n'\n\nincludes_SunOS='\n#include <limits.h>\n#include <sys/types.h>\n#include <sys/select.h>\n#include <sys/socket.h>\n#include <sys/sockio.h>\n#include <sys/stat.h>\n#include <sys/stream.h>\n#include <sys/mman.h>\n#include <sys/wait.h>\n#include <sys/ioctl.h>\n#include <sys/mkdev.h>\n#include <net/bpf.h>\n#include <net/if.h>\n#include <net/if_arp.h>\n#include <net/if_types.h>\n#include <net/route.h>\n#include <netinet/icmp6.h>\n#include <netinet/in.h>\n#include <netinet/ip.h>\n#include <netinet/ip_mroute.h>\n#include <termios.h>\n'\n\n\nincludes='\n#include <sys/types.h>\n#include <sys/file.h>\n#include <fcntl.h>\n#include <dirent.h>\n#include <sys/socket.h>\n#include <netinet/in.h>\n#include <netinet/ip.h>\n#include <netinet/ip6.h>\n#include <netinet/tcp.h>\n#include <errno.h>\n#include <sys/signal.h>\n#include <signal.h>\n#include <sys/resource.h>\n#include <time.h>\n'\nccflags=\"$@\"\n\n# Write go tool cgo -godefs input.\n(\n\techo package unix\n\techo\n\techo '/*'\n\tindirect=\"includes_$(uname)\"\n\techo \"${!indirect} $includes\"\n\techo '*/'\n\techo 'import \"C\"'\n\techo 'import \"syscall\"'\n\techo\n\techo 'const ('\n\n\t# The gcc command line prints all the #defines\n\t# it encounters while processing the input\n\techo \"${!indirect} $includes\" | $CC -x c - -E -dM $ccflags |\n\tawk '\n\t\t$1 != \"#define\" || $2 ~ /\\(/ || $3 == \"\" {next}\n\n\t\t$2 ~ /^E([ABCD]X|[BIS]P|[SD]I|S|FL)$/ {next}  # 386 registers\n\t\t$2 ~ /^(SIGEV_|SIGSTKSZ|SIGRT(MIN|MAX))/ {next}\n\t\t$2 ~ /^(SCM_SRCRT)$/ {next}\n\t\t$2 ~ /^(MAP_FAILED)$/ {next}\n\t\t$2 ~ /^ELF_.*$/ {next}# <asm/elf.h> contains ELF_ARCH, etc.\n\n\t\t$2 ~ /^EXTATTR_NAMESPACE_NAMES/ ||\n\t\t$2 ~ /^EXTATTR_NAMESPACE_[A-Z]+_STRING/ {next}\n\n\t\t$2 !~ /^ECCAPBITS/ &&\n\t\t$2 !~ /^ETH_/ &&\n\t\t$2 !~ /^EPROC_/ &&\n\t\t$2 !~ /^EQUIV_/ &&\n\t\t$2 !~ /^EXPR_/ &&\n\t\t$2 !~ /^EVIOC/ &&\n\t\t$2 ~ /^E[A-Z0-9_]+$/ ||\n\t\t$2 ~ /^B[0-9_]+$/ ||\n\t\t$2 ~ /^(OLD|NEW)DEV$/ ||\n\t\t$2 == \"BOTHER\" ||\n\t\t$2 ~ /^CI?BAUD(EX)?$/ ||\n\t\t$2 == \"IBSHIFT\" ||\n\t\t$2 ~ /^V[A-Z0-9]+$/ ||\n\t\t$2 ~ /^CS[A-Z0-9]/ ||\n\t\t$2 ~ /^I(SIG|CANON|CRNL|UCLC|EXTEN|MAXBEL|STRIP|UTF8)$/ ||\n\t\t$2 ~ /^IGN/ ||\n\t\t$2 ~ /^IX(ON|ANY|OFF)$/ ||\n\t\t$2 ~ /^IN(LCR|PCK)$/ ||\n\t\t$2 !~ \"X86_CR3_PCID_NOFLUSH\" &&\n\t\t$2 ~ /(^FLU?SH)|(FLU?SH$)/ ||\n\t\t$2 ~ /^C(LOCAL|READ|MSPAR|RTSCTS)$/ ||\n\t\t$2 == \"BRKINT\" ||\n\t\t$2 == \"HUPCL\" ||\n\t\t$2 == \"PENDIN\" ||\n\t\t$2 == \"TOSTOP\" ||\n\t\t$2 == \"XCASE\" ||\n\t\t$2 == \"ALTWERASE\" ||\n\t\t$2 == \"NOKERNINFO\" ||\n\t\t$2 == \"NFDBITS\" ||\n\t\t$2 ~ /^PAR/ ||\n\t\t$2 ~ /^SIG[^_]/ ||\n\t\t$2 ~ /^O[CNPFPL][A-Z]+[^_][A-Z]+$/ ||\n\t\t$2 ~ /^(NL|CR|TAB|BS|VT|FF)DLY$/ ||\n\t\t$2 ~ /^(NL|CR|TAB|BS|VT|FF)[0-9]$/ ||\n\t\t$2 ~ /^(DT|EI|ELF|EV|NN|NT|PF|SHF|SHN|SHT|STB|STT|VER)_/ ||\n\t\t$2 ~ /^O?XTABS$/ ||\n\t\t$2 ~ /^TC[IO](ON|OFF)$/ ||\n\t\t$2 ~ /^IN_/ ||\n\t\t$2 ~ /^KCM/ ||\n\t\t$2 ~ /^LANDLOCK_/ ||\n\t\t$2 ~ /^LOCK_(SH|EX|NB|UN)$/ ||\n\t\t$2 ~ /^LO_(KEY|NAME)_SIZE$/ ||\n\t\t$2 ~ /^LOOP_(CLR|CTL|GET|SET)_/ ||\n\t\t$2 == \"LOOP_CONFIGURE\" ||\n\t\t$2 ~ /^(AF|SOCK|SO|SOL|IPPROTO|IP|IPV6|TCP|MCAST|EVFILT|NOTE|SHUT|PROT|MAP|MREMAP|MFD|T?PACKET|MSG|SCM|MCL|DT|MADV|PR|LOCAL|TCPOPT|UDP)_/ ||\n\t\t$2 ~ /^NFC_(GENL|PROTO|COMM|RF|SE|DIRECTION|LLCP|SOCKPROTO)_/ ||\n\t\t$2 ~ /^NFC_.*_(MAX)?SIZE$/ ||\n\t\t$2 ~ /^PTP_/ ||\n\t\t$2 ~ /^RAW_PAYLOAD_/ ||\n\t\t$2 ~ /^[US]F_/ ||\n\t\t$2 ~ /^TP_STATUS_/ ||\n\t\t$2 ~ /^FALLOC_/ ||\n\t\t$2 ~ /^ICMPV?6?_(FILTER|SEC)/ ||\n\t\t$2 == \"SOMAXCONN\" ||\n\t\t$2 == \"NAME_MAX\" ||\n\t\t$2 == \"IFNAMSIZ\" ||\n\t\t$2 ~ /^CTL_(HW|KERN|MAXNAME|NET|QUERY)$/ ||\n\t\t$2 ~ /^KERN_(HOSTNAME|OS(RELEASE|TYPE)|VERSION)$/ ||\n\t\t$2 ~ /^HW_MACHINE$/ ||\n\t\t$2 ~ /^SYSCTL_VERS/ ||\n\t\t$2 !~ \"MNT_BITS\" &&\n\t\t$2 ~ /^(MS|MNT|MOUNT|UMOUNT)_/ ||\n\t\t$2 ~ /^NS_GET_/ ||\n\t\t$2 ~ /^TUN(SET|GET|ATTACH|DETACH)/ ||\n\t\t$2 ~ /^(O|F|[ES]?FD|NAME|S|PTRACE|PT|PIOD|TFD)_/ ||\n\t\t$2 ~ /^KEXEC_/ ||\n\t\t$2 ~ /^LINUX_REBOOT_CMD_/ ||\n\t\t$2 ~ /^LINUX_REBOOT_MAGIC[12]$/ ||\n\t\t$2 ~ /^MODULE_INIT_/ ||\n\t\t$2 !~ \"NLA_TYPE_MASK\" &&\n\t\t$2 !~ /^RTC_VL_(ACCURACY|BACKUP|DATA)/ &&\n\t\t$2 ~ /^(NETLINK|NLM|NLMSG|NLA|IFA|IFAN|RT|RTC|RTCF|RTN|RTPROT|RTNH|ARPHRD|ETH_P|NETNSA)_/ ||\n\t\t$2 ~ /^SOCK_|SK_DIAG_|SKNLGRP_$/ ||\n\t\t$2 ~ /^(CONNECT|SAE)_/ ||\n\t\t$2 ~ /^FIORDCHK$/ ||\n\t\t$2 ~ /^SIOC/ ||\n\t\t$2 ~ /^TIOC/ ||\n\t\t$2 ~ /^TCGET/ ||\n\t\t$2 ~ /^TCSET/ ||\n\t\t$2 ~ /^TC(FLSH|SBRKP?|XONC)$/ ||\n\t\t$2 !~ \"RTF_BITS\" &&\n\t\t$2 ~ /^(IFF|IFT|NET_RT|RTM(GRP)?|RTF|RTV|RTA|RTAX)_/ ||\n\t\t$2 ~ /^BIOC/ ||\n\t\t$2 ~ /^DIOC/ ||\n\t\t$2 ~ /^RUSAGE_(SELF|CHILDREN|THREAD)/ ||\n\t\t$2 ~ /^RLIMIT_(AS|CORE|CPU|DATA|FSIZE|LOCKS|MEMLOCK|MSGQUEUE|NICE|NOFILE|NPROC|RSS|RTPRIO|RTTIME|SIGPENDING|STACK)|RLIM_INFINITY/ ||\n\t\t$2 ~ /^PRIO_(PROCESS|PGRP|USER)/ ||\n\t\t$2 ~ /^CLONE_[A-Z_]+/ ||\n\t\t$2 !~ /^(BPF_TIMEVAL|BPF_FIB_LOOKUP_[A-Z]+|BPF_F_LINK)$/ &&\n\t\t$2 ~ /^(BPF|DLT)_/ ||\n\t\t$2 ~ /^AUDIT_/ ||\n\t\t$2 ~ /^(CLOCK|TIMER)_/ ||\n\t\t$2 ~ /^CAN_/ ||\n\t\t$2 ~ /^CAP_/ ||\n\t\t$2 ~ /^CP_/ ||\n\t\t$2 ~ /^CPUSTATES$/ ||\n\t\t$2 ~ /^CTLIOCGINFO$/ ||\n\t\t$2 ~ /^ALG_/ ||\n\t\t$2 ~ /^FI(CLONE|DEDUPERANGE)/ ||\n\t\t$2 ~ /^FS_(POLICY_FLAGS|KEY_DESC|ENCRYPTION_MODE|[A-Z0-9_]+_KEY_SIZE)/ ||\n\t\t$2 ~ /^FS_IOC_.*(ENCRYPTION|VERITY|[GS]ETFLAGS)/ ||\n\t\t$2 ~ /^FS_VERITY_/ ||\n\t\t$2 ~ /^FSCRYPT_/ ||\n\t\t$2 ~ /^DM_/ ||\n\t\t$2 ~ /^GRND_/ ||\n\t\t$2 ~ /^RND/ ||\n\t\t$2 ~ /^KEY_(SPEC|REQKEY_DEFL)_/ ||\n\t\t$2 ~ /^KEYCTL_/ ||\n\t\t$2 ~ /^PERF_/ ||\n\t\t$2 ~ /^SECCOMP_/ ||\n\t\t$2 ~ /^SEEK_/ ||\n\t\t$2 ~ /^SCHED_/ ||\n\t\t$2 ~ /^SPLICE_/ ||\n\t\t$2 ~ /^SYNC_FILE_RANGE_/ ||\n\t\t$2 !~ /IOC_MAGIC/ &&\n\t\t$2 ~ /^[A-Z][A-Z0-9_]+_MAGIC2?$/ ||\n\t\t$2 ~ /^(VM|VMADDR)_/ ||\n\t\t$2 ~ /^(IOCTL_VM_SOCKETS_|IOCTL_MEI_)/ ||\n\t\t$2 ~ /^(TASKSTATS|TS)_/ ||\n\t\t$2 ~ /^CGROUPSTATS_/ ||\n\t\t$2 ~ /^GENL_/ ||\n\t\t$2 ~ /^STATX_/ ||\n\t\t$2 ~ /^RENAME/ ||\n\t\t$2 ~ /^UBI_IOC[A-Z]/ ||\n\t\t$2 ~ /^UTIME_/ ||\n\t\t$2 ~ /^XATTR_(CREATE|REPLACE|NO(DEFAULT|FOLLOW|SECURITY)|SHOWCOMPRESSION)/ ||\n\t\t$2 ~ /^ATTR_(BIT_MAP_COUNT|(CMN|VOL|FILE)_)/ ||\n\t\t$2 ~ /^FSOPT_/ ||\n\t\t$2 ~ /^WDIO[CFS]_/ ||\n\t\t$2 ~ /^NFN/ ||\n\t\t$2 !~ /^NFT_META_IIFTYPE/ &&\n\t\t$2 ~ /^NFT_/ ||\n\t\t$2 ~ /^NF_NAT_/ ||\n\t\t$2 ~ /^XDP_/ ||\n\t\t$2 ~ /^RWF_/ ||\n\t\t$2 ~ /^(HDIO|WIN|SMART)_/ ||\n\t\t$2 ~ /^CRYPTO_/ ||\n\t\t$2 ~ /^TIPC_/ ||\n\t\t$2 !~  \"DEVLINK_RELOAD_LIMITS_VALID_MASK\" &&\n\t\t$2 ~ /^DEVLINK_/ ||\n\t\t$2 ~ /^ETHTOOL_/ ||\n\t\t$2 ~ /^LWTUNNEL_IP/ ||\n\t\t$2 ~ /^ITIMER_/ ||\n\t\t$2 !~ \"WMESGLEN\" &&\n\t\t$2 ~ /^W[A-Z0-9]+$/ ||\n\t\t$2 ~ /^P_/ ||\n\t\t$2 ~/^PPPIOC/ ||\n\t\t$2 ~ /^FAN_|FANOTIFY_/ ||\n\t\t$2 == \"HID_MAX_DESCRIPTOR_SIZE\" ||\n\t\t$2 ~ /^_?HIDIOC/ ||\n\t\t$2 ~ /^BUS_(USB|HIL|BLUETOOTH|VIRTUAL)$/ ||\n\t\t$2 ~ /^MTD/ ||\n\t\t$2 ~ /^OTP/ ||\n\t\t$2 ~ /^MEM/ ||\n\t\t$2 ~ /^WG/ ||\n\t\t$2 ~ /^FIB_RULE_/ ||\n\t\t$2 ~ /^BLK[A-Z]*(GET$|SET$|BUF$|PART$|SIZE|IOMIN$|IOOPT$|ALIGNOFF$|DISCARD|ROTATIONAL$|ZEROOUT$|GETDISKSEQ$)/ {printf(\"\\t%s = C.%s\\n\", $2, $2)}\n\t\t$2 ~ /^__WCOREFLAG$/ {next}\n\t\t$2 ~ /^__W[A-Z0-9]+$/ {printf(\"\\t%s = C.%s\\n\", substr($2,3), $2)}\n\n\t\t{next}\n\t' | sort\n\n\techo ')'\n) >_const.go\n\n# Pull out the error names for later.\nerrors=$(\n\techo '#include <errno.h>' | $CC -x c - -E -dM $ccflags |\n\tawk '$1==\"#define\" && $2 ~ /^E[A-Z0-9_]+$/ { print $2 }' |\n\tsort\n)\n\n# Pull out the signal names for later.\nsignals=$(\n\techo '#include <signal.h>' | $CC -x c - -E -dM $ccflags |\n\tawk '$1==\"#define\" && $2 ~ /^SIG[A-Z0-9]+$/ { print $2 }' |\n\tgrep -E -v '(SIGSTKSIZE|SIGSTKSZ|SIGRT|SIGMAX64)' |\n\tsort\n)\n\n# Again, writing regexps to a file.\necho '#include <errno.h>' | $CC -x c - -E -dM $ccflags |\n\tawk '$1==\"#define\" && $2 ~ /^E[A-Z0-9_]+$/ { print \"^\\t\" $2 \"[ \\t]*=\" }' |\n\tsort >_error.grep\necho '#include <signal.h>' | $CC -x c - -E -dM $ccflags |\n\tawk '$1==\"#define\" && $2 ~ /^SIG[A-Z0-9]+$/ { print \"^\\t\" $2 \"[ \\t]*=\" }' |\n\tgrep -E -v '(SIGSTKSIZE|SIGSTKSZ|SIGRT|SIGMAX64)' |\n\tsort >_signal.grep\n\necho '// mkerrors.sh' \"$@\"\necho '// Code generated by the command above; see README.md. DO NOT EDIT.'\necho\necho \"//go:build ${GOARCH} && ${GOOS}\"\necho\ngo tool cgo -godefs -- \"$@\" _const.go >_error.out\ncat _error.out | grep -vf _error.grep | grep -vf _signal.grep\necho\necho '// Errors'\necho 'const ('\ncat _error.out | grep -f _error.grep | sed 's/=\\(.*\\)/= syscall.Errno(\\1)/'\necho ')'\n\necho\necho '// Signals'\necho 'const ('\ncat _error.out | grep -f _signal.grep | sed 's/=\\(.*\\)/= syscall.Signal(\\1)/'\necho ')'\n\n# Run C program to print error and syscall strings.\n(\n\techo -E \"\n#include <stdio.h>\n#include <stdlib.h>\n#include <errno.h>\n#include <ctype.h>\n#include <string.h>\n#include <signal.h>\n\n#define nelem(x) (sizeof(x)/sizeof((x)[0]))\n\nenum { A = 'A', Z = 'Z', a = 'a', z = 'z' }; // avoid need for single quotes below\n\nstruct tuple {\n\tint num;\n\tconst char *name;\n};\n\nstruct tuple errors[] = {\n\"\n\tfor i in $errors\n\tdo\n\t\techo -E '\t{'$i', \"'$i'\" },'\n\tdone\n\n\techo -E \"\n};\n\nstruct tuple signals[] = {\n\"\n\tfor i in $signals\n\tdo\n\t\techo -E '\t{'$i', \"'$i'\" },'\n\tdone\n\n\t# Use -E because on some systems bash builtin interprets \\n itself.\n\techo -E '\n};\n\nstatic int\ntuplecmp(const void *a, const void *b)\n{\n\treturn ((struct tuple *)a)->num - ((struct tuple *)b)->num;\n}\n\nint\nmain(void)\n{\n\tint i, e;\n\tchar buf[1024], *p;\n\n\tprintf(\"\\n\\n// Error table\\n\");\n\tprintf(\"var errorList = [...]struct {\\n\");\n\tprintf(\"\\tnum  syscall.Errno\\n\");\n\tprintf(\"\\tname string\\n\");\n\tprintf(\"\\tdesc string\\n\");\n\tprintf(\"} {\\n\");\n\tqsort(errors, nelem(errors), sizeof errors[0], tuplecmp);\n\tfor(i=0; i<nelem(errors); i++) {\n\t\te = errors[i].num;\n\t\tif(i > 0 && errors[i-1].num == e)\n\t\t\tcontinue;\n\t\tstrncpy(buf, strerror(e), sizeof(buf) - 1);\n\t\tbuf[sizeof(buf) - 1] = '\\0';\n\t\t// lowercase first letter: Bad -> bad, but STREAM -> STREAM.\n\t\tif(A <= buf[0] && buf[0] <= Z && a <= buf[1] && buf[1] <= z)\n\t\t\tbuf[0] += a - A;\n\t\tprintf(\"\\t{ %d, \\\"%s\\\", \\\"%s\\\" },\\n\", e, errors[i].name, buf);\n\t}\n\tprintf(\"}\\n\\n\");\n\n\tprintf(\"\\n\\n// Signal table\\n\");\n\tprintf(\"var signalList = [...]struct {\\n\");\n\tprintf(\"\\tnum  syscall.Signal\\n\");\n\tprintf(\"\\tname string\\n\");\n\tprintf(\"\\tdesc string\\n\");\n\tprintf(\"} {\\n\");\n\tqsort(signals, nelem(signals), sizeof signals[0], tuplecmp);\n\tfor(i=0; i<nelem(signals); i++) {\n\t\te = signals[i].num;\n\t\tif(i > 0 && signals[i-1].num == e)\n\t\t\tcontinue;\n\t\tstrncpy(buf, strsignal(e), sizeof(buf) - 1);\n\t\tbuf[sizeof(buf) - 1] = '\\0';\n\t\t// lowercase first letter: Bad -> bad, but STREAM -> STREAM.\n\t\tif(A <= buf[0] && buf[0] <= Z && a <= buf[1] && buf[1] <= z)\n\t\t\tbuf[0] += a - A;\n\t\t// cut trailing : number.\n\t\tp = strrchr(buf, \":\"[0]);\n\t\tif(p)\n\t\t\t*p = '\\0';\n\t\tprintf(\"\\t{ %d, \\\"%s\\\", \\\"%s\\\" },\\n\", e, signals[i].name, buf);\n\t}\n\tprintf(\"}\\n\\n\");\n\n\treturn 0;\n}\n\n'\n) >_errors.c\n\n$CC $ccflags -o _errors _errors.c && $GORUN ./_errors && rm -f _errors.c _errors _const.go _error.grep _signal.grep _error.out\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/mmap_nomremap.go",
    "content": "// Copyright 2023 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || darwin || dragonfly || freebsd || openbsd || solaris || zos\n\npackage unix\n\nvar mapper = &mmapper{\n\tactive: make(map[*byte][]byte),\n\tmmap:   mmap,\n\tmunmap: munmap,\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/mremap.go",
    "content": "// Copyright 2023 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux || netbsd\n\npackage unix\n\nimport \"unsafe\"\n\ntype mremapMmapper struct {\n\tmmapper\n\tmremap func(oldaddr uintptr, oldlength uintptr, newlength uintptr, flags int, newaddr uintptr) (xaddr uintptr, err error)\n}\n\nvar mapper = &mremapMmapper{\n\tmmapper: mmapper{\n\t\tactive: make(map[*byte][]byte),\n\t\tmmap:   mmap,\n\t\tmunmap: munmap,\n\t},\n\tmremap: mremap,\n}\n\nfunc (m *mremapMmapper) Mremap(oldData []byte, newLength int, flags int) (data []byte, err error) {\n\tif newLength <= 0 || len(oldData) == 0 || len(oldData) != cap(oldData) || flags&mremapFixed != 0 {\n\t\treturn nil, EINVAL\n\t}\n\n\tpOld := &oldData[cap(oldData)-1]\n\tm.Lock()\n\tdefer m.Unlock()\n\tbOld := m.active[pOld]\n\tif bOld == nil || &bOld[0] != &oldData[0] {\n\t\treturn nil, EINVAL\n\t}\n\tnewAddr, errno := m.mremap(uintptr(unsafe.Pointer(&bOld[0])), uintptr(len(bOld)), uintptr(newLength), flags, 0)\n\tif errno != nil {\n\t\treturn nil, errno\n\t}\n\tbNew := unsafe.Slice((*byte)(unsafe.Pointer(newAddr)), newLength)\n\tpNew := &bNew[cap(bNew)-1]\n\tif flags&mremapDontunmap == 0 {\n\t\tdelete(m.active, pOld)\n\t}\n\tm.active[pNew] = bNew\n\treturn bNew, nil\n}\n\nfunc Mremap(oldData []byte, newLength int, flags int) (data []byte, err error) {\n\treturn mapper.Mremap(oldData, newLength, flags)\n}\n\nfunc MremapPtr(oldAddr unsafe.Pointer, oldSize uintptr, newAddr unsafe.Pointer, newSize uintptr, flags int) (ret unsafe.Pointer, err error) {\n\txaddr, err := mapper.mremap(uintptr(oldAddr), oldSize, newSize, flags, uintptr(newAddr))\n\treturn unsafe.Pointer(xaddr), err\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/pagesize_unix.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos\n\n// For Unix, get the pagesize from the runtime.\n\npackage unix\n\nimport \"syscall\"\n\nfunc Getpagesize() int {\n\treturn syscall.Getpagesize()\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/pledge_openbsd.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage unix\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"strconv\"\n)\n\n// Pledge implements the pledge syscall.\n//\n// This changes both the promises and execpromises; use PledgePromises or\n// PledgeExecpromises to only change the promises or execpromises\n// respectively.\n//\n// For more information see pledge(2).\nfunc Pledge(promises, execpromises string) error {\n\tif err := pledgeAvailable(); err != nil {\n\t\treturn err\n\t}\n\n\tpptr, err := BytePtrFromString(promises)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\texptr, err := BytePtrFromString(execpromises)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn pledge(pptr, exptr)\n}\n\n// PledgePromises implements the pledge syscall.\n//\n// This changes the promises and leaves the execpromises untouched.\n//\n// For more information see pledge(2).\nfunc PledgePromises(promises string) error {\n\tif err := pledgeAvailable(); err != nil {\n\t\treturn err\n\t}\n\n\tpptr, err := BytePtrFromString(promises)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn pledge(pptr, nil)\n}\n\n// PledgeExecpromises implements the pledge syscall.\n//\n// This changes the execpromises and leaves the promises untouched.\n//\n// For more information see pledge(2).\nfunc PledgeExecpromises(execpromises string) error {\n\tif err := pledgeAvailable(); err != nil {\n\t\treturn err\n\t}\n\n\texptr, err := BytePtrFromString(execpromises)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn pledge(nil, exptr)\n}\n\n// majmin returns major and minor version number for an OpenBSD system.\nfunc majmin() (major int, minor int, err error) {\n\tvar v Utsname\n\terr = Uname(&v)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tmajor, err = strconv.Atoi(string(v.Release[0]))\n\tif err != nil {\n\t\terr = errors.New(\"cannot parse major version number returned by uname\")\n\t\treturn\n\t}\n\n\tminor, err = strconv.Atoi(string(v.Release[2]))\n\tif err != nil {\n\t\terr = errors.New(\"cannot parse minor version number returned by uname\")\n\t\treturn\n\t}\n\n\treturn\n}\n\n// pledgeAvailable checks for availability of the pledge(2) syscall\n// based on the running OpenBSD version.\nfunc pledgeAvailable() error {\n\tmaj, min, err := majmin()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// Require OpenBSD 6.4 as a minimum.\n\tif maj < 6 || (maj == 6 && min <= 3) {\n\t\treturn fmt.Errorf(\"cannot call Pledge on OpenBSD %d.%d\", maj, min)\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/ptrace_darwin.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build darwin && !ios\n\npackage unix\n\nfunc ptrace(request int, pid int, addr uintptr, data uintptr) error {\n\treturn ptrace1(request, pid, addr, data)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/ptrace_ios.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build ios\n\npackage unix\n\nfunc ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {\n\treturn ENOTSUP\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/race.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (darwin && race) || (linux && race) || (freebsd && race)\n\npackage unix\n\nimport (\n\t\"runtime\"\n\t\"unsafe\"\n)\n\nconst raceenabled = true\n\nfunc raceAcquire(addr unsafe.Pointer) {\n\truntime.RaceAcquire(addr)\n}\n\nfunc raceReleaseMerge(addr unsafe.Pointer) {\n\truntime.RaceReleaseMerge(addr)\n}\n\nfunc raceReadRange(addr unsafe.Pointer, len int) {\n\truntime.RaceReadRange(addr, len)\n}\n\nfunc raceWriteRange(addr unsafe.Pointer, len int) {\n\truntime.RaceWriteRange(addr, len)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/race0.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || (darwin && !race) || (linux && !race) || (freebsd && !race) || netbsd || openbsd || solaris || dragonfly || zos\n\npackage unix\n\nimport (\n\t\"unsafe\"\n)\n\nconst raceenabled = false\n\nfunc raceAcquire(addr unsafe.Pointer) {\n}\n\nfunc raceReleaseMerge(addr unsafe.Pointer) {\n}\n\nfunc raceReadRange(addr unsafe.Pointer, len int) {\n}\n\nfunc raceWriteRange(addr unsafe.Pointer, len int) {\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/readdirent_getdents.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || dragonfly || freebsd || linux || netbsd || openbsd\n\npackage unix\n\n// ReadDirent reads directory entries from fd and writes them into buf.\nfunc ReadDirent(fd int, buf []byte) (n int, err error) {\n\treturn Getdents(fd, buf)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/readdirent_getdirentries.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build darwin || zos\n\npackage unix\n\nimport \"unsafe\"\n\n// ReadDirent reads directory entries from fd and writes them into buf.\nfunc ReadDirent(fd int, buf []byte) (n int, err error) {\n\t// Final argument is (basep *uintptr) and the syscall doesn't take nil.\n\t// 64 bits should be enough. (32 bits isn't even on 386). Since the\n\t// actual system call is getdirentries64, 64 is a good guess.\n\t// TODO(rsc): Can we use a single global basep for all calls?\n\tvar base = (*uintptr)(unsafe.Pointer(new(uint64)))\n\treturn Getdirentries(fd, buf, base)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/sockcmsg_dragonfly.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage unix\n\n// Round the length of a raw sockaddr up to align it properly.\nfunc cmsgAlignOf(salen int) int {\n\tsalign := SizeofPtr\n\tif SizeofPtr == 8 && !supportsABI(_dragonflyABIChangeVersion) {\n\t\t// 64-bit Dragonfly before the September 2019 ABI changes still requires\n\t\t// 32-bit aligned access to network subsystem.\n\t\tsalign = 4\n\t}\n\treturn (salen + salign - 1) & ^(salign - 1)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/sockcmsg_linux.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Socket control messages\n\npackage unix\n\nimport \"unsafe\"\n\n// UnixCredentials encodes credentials into a socket control message\n// for sending to another process. This can be used for\n// authentication.\nfunc UnixCredentials(ucred *Ucred) []byte {\n\tb := make([]byte, CmsgSpace(SizeofUcred))\n\th := (*Cmsghdr)(unsafe.Pointer(&b[0]))\n\th.Level = SOL_SOCKET\n\th.Type = SCM_CREDENTIALS\n\th.SetLen(CmsgLen(SizeofUcred))\n\t*(*Ucred)(h.data(0)) = *ucred\n\treturn b\n}\n\n// ParseUnixCredentials decodes a socket control message that contains\n// credentials in a Ucred structure. To receive such a message, the\n// SO_PASSCRED option must be enabled on the socket.\nfunc ParseUnixCredentials(m *SocketControlMessage) (*Ucred, error) {\n\tif m.Header.Level != SOL_SOCKET {\n\t\treturn nil, EINVAL\n\t}\n\tif m.Header.Type != SCM_CREDENTIALS {\n\t\treturn nil, EINVAL\n\t}\n\tucred := *(*Ucred)(unsafe.Pointer(&m.Data[0]))\n\treturn &ucred, nil\n}\n\n// PktInfo4 encodes Inet4Pktinfo into a socket control message of type IP_PKTINFO.\nfunc PktInfo4(info *Inet4Pktinfo) []byte {\n\tb := make([]byte, CmsgSpace(SizeofInet4Pktinfo))\n\th := (*Cmsghdr)(unsafe.Pointer(&b[0]))\n\th.Level = SOL_IP\n\th.Type = IP_PKTINFO\n\th.SetLen(CmsgLen(SizeofInet4Pktinfo))\n\t*(*Inet4Pktinfo)(h.data(0)) = *info\n\treturn b\n}\n\n// PktInfo6 encodes Inet6Pktinfo into a socket control message of type IPV6_PKTINFO.\nfunc PktInfo6(info *Inet6Pktinfo) []byte {\n\tb := make([]byte, CmsgSpace(SizeofInet6Pktinfo))\n\th := (*Cmsghdr)(unsafe.Pointer(&b[0]))\n\th.Level = SOL_IPV6\n\th.Type = IPV6_PKTINFO\n\th.SetLen(CmsgLen(SizeofInet6Pktinfo))\n\t*(*Inet6Pktinfo)(h.data(0)) = *info\n\treturn b\n}\n\n// ParseOrigDstAddr decodes a socket control message containing the original\n// destination address. To receive such a message the IP_RECVORIGDSTADDR or\n// IPV6_RECVORIGDSTADDR option must be enabled on the socket.\nfunc ParseOrigDstAddr(m *SocketControlMessage) (Sockaddr, error) {\n\tswitch {\n\tcase m.Header.Level == SOL_IP && m.Header.Type == IP_ORIGDSTADDR:\n\t\tpp := (*RawSockaddrInet4)(unsafe.Pointer(&m.Data[0]))\n\t\tsa := new(SockaddrInet4)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tsa.Addr = pp.Addr\n\t\treturn sa, nil\n\n\tcase m.Header.Level == SOL_IPV6 && m.Header.Type == IPV6_ORIGDSTADDR:\n\t\tpp := (*RawSockaddrInet6)(unsafe.Pointer(&m.Data[0]))\n\t\tsa := new(SockaddrInet6)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tsa.ZoneId = pp.Scope_id\n\t\tsa.Addr = pp.Addr\n\t\treturn sa, nil\n\n\tdefault:\n\t\treturn nil, EINVAL\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/sockcmsg_unix.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos\n\n// Socket control messages\n\npackage unix\n\nimport (\n\t\"unsafe\"\n)\n\n// CmsgLen returns the value to store in the Len field of the Cmsghdr\n// structure, taking into account any necessary alignment.\nfunc CmsgLen(datalen int) int {\n\treturn cmsgAlignOf(SizeofCmsghdr) + datalen\n}\n\n// CmsgSpace returns the number of bytes an ancillary element with\n// payload of the passed data length occupies.\nfunc CmsgSpace(datalen int) int {\n\treturn cmsgAlignOf(SizeofCmsghdr) + cmsgAlignOf(datalen)\n}\n\nfunc (h *Cmsghdr) data(offset uintptr) unsafe.Pointer {\n\treturn unsafe.Pointer(uintptr(unsafe.Pointer(h)) + uintptr(cmsgAlignOf(SizeofCmsghdr)) + offset)\n}\n\n// SocketControlMessage represents a socket control message.\ntype SocketControlMessage struct {\n\tHeader Cmsghdr\n\tData   []byte\n}\n\n// ParseSocketControlMessage parses b as an array of socket control\n// messages.\nfunc ParseSocketControlMessage(b []byte) ([]SocketControlMessage, error) {\n\tvar msgs []SocketControlMessage\n\ti := 0\n\tfor i+CmsgLen(0) <= len(b) {\n\t\th, dbuf, err := socketControlMessageHeaderAndData(b[i:])\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tm := SocketControlMessage{Header: *h, Data: dbuf}\n\t\tmsgs = append(msgs, m)\n\t\ti += cmsgAlignOf(int(h.Len))\n\t}\n\treturn msgs, nil\n}\n\n// ParseOneSocketControlMessage parses a single socket control message from b, returning the message header,\n// message data (a slice of b), and the remainder of b after that single message.\n// When there are no remaining messages, len(remainder) == 0.\nfunc ParseOneSocketControlMessage(b []byte) (hdr Cmsghdr, data []byte, remainder []byte, err error) {\n\th, dbuf, err := socketControlMessageHeaderAndData(b)\n\tif err != nil {\n\t\treturn Cmsghdr{}, nil, nil, err\n\t}\n\tif i := cmsgAlignOf(int(h.Len)); i < len(b) {\n\t\tremainder = b[i:]\n\t}\n\treturn *h, dbuf, remainder, nil\n}\n\nfunc socketControlMessageHeaderAndData(b []byte) (*Cmsghdr, []byte, error) {\n\th := (*Cmsghdr)(unsafe.Pointer(&b[0]))\n\tif h.Len < SizeofCmsghdr || uint64(h.Len) > uint64(len(b)) {\n\t\treturn nil, nil, EINVAL\n\t}\n\treturn h, b[cmsgAlignOf(SizeofCmsghdr):h.Len], nil\n}\n\n// UnixRights encodes a set of open file descriptors into a socket\n// control message for sending to another process.\nfunc UnixRights(fds ...int) []byte {\n\tdatalen := len(fds) * 4\n\tb := make([]byte, CmsgSpace(datalen))\n\th := (*Cmsghdr)(unsafe.Pointer(&b[0]))\n\th.Level = SOL_SOCKET\n\th.Type = SCM_RIGHTS\n\th.SetLen(CmsgLen(datalen))\n\tfor i, fd := range fds {\n\t\t*(*int32)(h.data(4 * uintptr(i))) = int32(fd)\n\t}\n\treturn b\n}\n\n// ParseUnixRights decodes a socket control message that contains an\n// integer array of open file descriptors from another process.\nfunc ParseUnixRights(m *SocketControlMessage) ([]int, error) {\n\tif m.Header.Level != SOL_SOCKET {\n\t\treturn nil, EINVAL\n\t}\n\tif m.Header.Type != SCM_RIGHTS {\n\t\treturn nil, EINVAL\n\t}\n\tfds := make([]int, len(m.Data)>>2)\n\tfor i, j := 0, 0; i < len(m.Data); i += 4 {\n\t\tfds[j] = int(*(*int32)(unsafe.Pointer(&m.Data[i])))\n\t\tj++\n\t}\n\treturn fds, nil\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/sockcmsg_unix_other.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || darwin || freebsd || linux || netbsd || openbsd || solaris || zos\n\npackage unix\n\nimport (\n\t\"runtime\"\n)\n\n// Round the length of a raw sockaddr up to align it properly.\nfunc cmsgAlignOf(salen int) int {\n\tsalign := SizeofPtr\n\n\t// dragonfly needs to check ABI version at runtime, see cmsgAlignOf in\n\t// sockcmsg_dragonfly.go\n\tswitch runtime.GOOS {\n\tcase \"aix\":\n\t\t// There is no alignment on AIX.\n\t\tsalign = 1\n\tcase \"darwin\", \"ios\", \"illumos\", \"solaris\":\n\t\t// NOTE: It seems like 64-bit Darwin, Illumos and Solaris\n\t\t// kernels still require 32-bit aligned access to network\n\t\t// subsystem.\n\t\tif SizeofPtr == 8 {\n\t\t\tsalign = 4\n\t\t}\n\tcase \"netbsd\", \"openbsd\":\n\t\t// NetBSD and OpenBSD armv7 require 64-bit alignment.\n\t\tif runtime.GOARCH == \"arm\" {\n\t\t\tsalign = 8\n\t\t}\n\t\t// NetBSD aarch64 requires 128-bit alignment.\n\t\tif runtime.GOOS == \"netbsd\" && runtime.GOARCH == \"arm64\" {\n\t\t\tsalign = 16\n\t\t}\n\tcase \"zos\":\n\t\t// z/OS socket macros use [32-bit] sizeof(int) alignment,\n\t\t// not pointer width.\n\t\tsalign = SizeofInt\n\t}\n\n\treturn (salen + salign - 1) & ^(salign - 1)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/sockcmsg_zos.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Socket control messages\n\npackage unix\n\nimport \"unsafe\"\n\n// UnixCredentials encodes credentials into a socket control message\n// for sending to another process. This can be used for\n// authentication.\nfunc UnixCredentials(ucred *Ucred) []byte {\n\tb := make([]byte, CmsgSpace(SizeofUcred))\n\th := (*Cmsghdr)(unsafe.Pointer(&b[0]))\n\th.Level = SOL_SOCKET\n\th.Type = SCM_CREDENTIALS\n\th.SetLen(CmsgLen(SizeofUcred))\n\t*(*Ucred)(h.data(0)) = *ucred\n\treturn b\n}\n\n// ParseUnixCredentials decodes a socket control message that contains\n// credentials in a Ucred structure. To receive such a message, the\n// SO_PASSCRED option must be enabled on the socket.\nfunc ParseUnixCredentials(m *SocketControlMessage) (*Ucred, error) {\n\tif m.Header.Level != SOL_SOCKET {\n\t\treturn nil, EINVAL\n\t}\n\tif m.Header.Type != SCM_CREDENTIALS {\n\t\treturn nil, EINVAL\n\t}\n\tucred := *(*Ucred)(unsafe.Pointer(&m.Data[0]))\n\treturn &ucred, nil\n}\n\n// PktInfo4 encodes Inet4Pktinfo into a socket control message of type IP_PKTINFO.\nfunc PktInfo4(info *Inet4Pktinfo) []byte {\n\tb := make([]byte, CmsgSpace(SizeofInet4Pktinfo))\n\th := (*Cmsghdr)(unsafe.Pointer(&b[0]))\n\th.Level = SOL_IP\n\th.Type = IP_PKTINFO\n\th.SetLen(CmsgLen(SizeofInet4Pktinfo))\n\t*(*Inet4Pktinfo)(h.data(0)) = *info\n\treturn b\n}\n\n// PktInfo6 encodes Inet6Pktinfo into a socket control message of type IPV6_PKTINFO.\nfunc PktInfo6(info *Inet6Pktinfo) []byte {\n\tb := make([]byte, CmsgSpace(SizeofInet6Pktinfo))\n\th := (*Cmsghdr)(unsafe.Pointer(&b[0]))\n\th.Level = SOL_IPV6\n\th.Type = IPV6_PKTINFO\n\th.SetLen(CmsgLen(SizeofInet6Pktinfo))\n\t*(*Inet6Pktinfo)(h.data(0)) = *info\n\treturn b\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/symaddr_zos_s390x.s",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build zos && s390x && gc\n\n#include \"textflag.h\"\n\n//  provide the address of function variable to be fixed up.\n\nTEXT ·getPipe2Addr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Pipe2(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\nTEXT ·get_FlockAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Flock(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\nTEXT ·get_GetxattrAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Getxattr(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\nTEXT ·get_NanosleepAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Nanosleep(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\nTEXT ·get_SetxattrAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Setxattr(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\nTEXT ·get_Wait4Addr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Wait4(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\nTEXT ·get_MountAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Mount(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\nTEXT ·get_UnmountAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Unmount(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\nTEXT ·get_UtimesNanoAtAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·UtimesNanoAt(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\nTEXT ·get_UtimesNanoAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·UtimesNano(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\nTEXT ·get_MkfifoatAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Mkfifoat(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\nTEXT ·get_ChtagAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Chtag(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\nTEXT ·get_ReadlinkatAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Readlinkat(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\t\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/syscall.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos\n\n// Package unix contains an interface to the low-level operating system\n// primitives. OS details vary depending on the underlying system, and\n// by default, godoc will display OS-specific documentation for the current\n// system. If you want godoc to display OS documentation for another\n// system, set $GOOS and $GOARCH to the desired system. For example, if\n// you want to view documentation for freebsd/arm on linux/amd64, set $GOOS\n// to freebsd and $GOARCH to arm.\n//\n// The primary use of this package is inside other packages that provide a more\n// portable interface to the system, such as \"os\", \"time\" and \"net\".  Use\n// those packages rather than this one if you can.\n//\n// For details of the functions and data types in this package consult\n// the manuals for the appropriate operating system.\n//\n// These calls return err == nil to indicate success; otherwise\n// err represents an operating system error describing the failure and\n// holds a value of type syscall.Errno.\npackage unix // import \"golang.org/x/sys/unix\"\n\nimport (\n\t\"bytes\"\n\t\"strings\"\n\t\"unsafe\"\n)\n\n// ByteSliceFromString returns a NUL-terminated slice of bytes\n// containing the text of s. If s contains a NUL byte at any\n// location, it returns (nil, EINVAL).\nfunc ByteSliceFromString(s string) ([]byte, error) {\n\tif strings.IndexByte(s, 0) != -1 {\n\t\treturn nil, EINVAL\n\t}\n\ta := make([]byte, len(s)+1)\n\tcopy(a, s)\n\treturn a, nil\n}\n\n// BytePtrFromString returns a pointer to a NUL-terminated array of\n// bytes containing the text of s. If s contains a NUL byte at any\n// location, it returns (nil, EINVAL).\nfunc BytePtrFromString(s string) (*byte, error) {\n\ta, err := ByteSliceFromString(s)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &a[0], nil\n}\n\n// ByteSliceToString returns a string form of the text represented by the slice s, with a terminating NUL and any\n// bytes after the NUL removed.\nfunc ByteSliceToString(s []byte) string {\n\tif i := bytes.IndexByte(s, 0); i != -1 {\n\t\ts = s[:i]\n\t}\n\treturn string(s)\n}\n\n// BytePtrToString takes a pointer to a sequence of text and returns the corresponding string.\n// If the pointer is nil, it returns the empty string. It assumes that the text sequence is terminated\n// at a zero byte; if the zero byte is not present, the program may crash.\nfunc BytePtrToString(p *byte) string {\n\tif p == nil {\n\t\treturn \"\"\n\t}\n\tif *p == 0 {\n\t\treturn \"\"\n\t}\n\n\t// Find NUL terminator.\n\tn := 0\n\tfor ptr := unsafe.Pointer(p); *(*byte)(ptr) != 0; n++ {\n\t\tptr = unsafe.Pointer(uintptr(ptr) + 1)\n\t}\n\n\treturn string(unsafe.Slice(p, n))\n}\n\n// Single-word zero for use when we need a valid pointer to 0 bytes.\nvar _zero uintptr\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/syscall_aix.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix\n\n// Aix system calls.\n// This file is compiled as ordinary Go code,\n// but it is also input to mksyscall,\n// which parses the //sys lines and generates system call stubs.\n// Note that sometimes we use a lowercase //sys name and\n// wrap it in our own nicer implementation.\n\npackage unix\n\nimport \"unsafe\"\n\n/*\n * Wrapped\n */\n\nfunc Access(path string, mode uint32) (err error) {\n\treturn Faccessat(AT_FDCWD, path, mode, 0)\n}\n\nfunc Chmod(path string, mode uint32) (err error) {\n\treturn Fchmodat(AT_FDCWD, path, mode, 0)\n}\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\treturn Fchownat(AT_FDCWD, path, uid, gid, 0)\n}\n\nfunc Creat(path string, mode uint32) (fd int, err error) {\n\treturn Open(path, O_CREAT|O_WRONLY|O_TRUNC, mode)\n}\n\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\nfunc Utimes(path string, tv []Timeval) error {\n\tif len(tv) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))\n}\n\n//sys\tutimensat(dirfd int, path string, times *[2]Timespec, flag int) (err error)\n\nfunc UtimesNano(path string, ts []Timespec) error {\n\tif len(ts) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)\n}\n\nfunc UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error {\n\tif ts == nil {\n\t\treturn utimensat(dirfd, path, nil, flags)\n\t}\n\tif len(ts) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags)\n}\n\nfunc (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Port < 0 || sa.Port > 0xFFFF {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_INET\n\tp := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))\n\tp[0] = byte(sa.Port >> 8)\n\tp[1] = byte(sa.Port)\n\tsa.raw.Addr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrInet4, nil\n}\n\nfunc (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Port < 0 || sa.Port > 0xFFFF {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_INET6\n\tp := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))\n\tp[0] = byte(sa.Port >> 8)\n\tp[1] = byte(sa.Port)\n\tsa.raw.Scope_id = sa.ZoneId\n\tsa.raw.Addr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrInet6, nil\n}\n\nfunc (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tname := sa.Name\n\tn := len(name)\n\tif n > len(sa.raw.Path) {\n\t\treturn nil, 0, EINVAL\n\t}\n\tif n == len(sa.raw.Path) && name[0] != '@' {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_UNIX\n\tfor i := 0; i < n; i++ {\n\t\tsa.raw.Path[i] = uint8(name[i])\n\t}\n\t// length is family (uint16), name, NUL.\n\tsl := _Socklen(2)\n\tif n > 0 {\n\t\tsl += _Socklen(n) + 1\n\t}\n\tif sa.raw.Path[0] == '@' || (sa.raw.Path[0] == 0 && sl > 3) {\n\t\t// Check sl > 3 so we don't change unnamed socket behavior.\n\t\tsa.raw.Path[0] = 0\n\t\t// Don't count trailing NUL for abstract address.\n\t\tsl--\n\t}\n\n\treturn unsafe.Pointer(&sa.raw), sl, nil\n}\n\nfunc Getsockname(fd int) (sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tif err = getsockname(fd, &rsa, &len); err != nil {\n\t\treturn\n\t}\n\treturn anyToSockaddr(fd, &rsa)\n}\n\n//sys\tgetcwd(buf []byte) (err error)\n\nconst ImplementsGetwd = true\n\nfunc Getwd() (ret string, err error) {\n\tfor len := uint64(4096); ; len *= 2 {\n\t\tb := make([]byte, len)\n\t\terr := getcwd(b)\n\t\tif err == nil {\n\t\t\ti := 0\n\t\t\tfor b[i] != 0 {\n\t\t\t\ti++\n\t\t\t}\n\t\t\treturn string(b[0:i]), nil\n\t\t}\n\t\tif err != ERANGE {\n\t\t\treturn \"\", err\n\t\t}\n\t}\n}\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\terr = getcwd(buf)\n\tif err == nil {\n\t\ti := 0\n\t\tfor buf[i] != 0 {\n\t\t\ti++\n\t\t}\n\t\tn = i + 1\n\t}\n\treturn\n}\n\nfunc Getgroups() (gids []int, err error) {\n\tn, err := getgroups(0, nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif n == 0 {\n\t\treturn nil, nil\n\t}\n\n\t// Sanity check group count. Max is 16 on BSD.\n\tif n < 0 || n > 1000 {\n\t\treturn nil, EINVAL\n\t}\n\n\ta := make([]_Gid_t, n)\n\tn, err = getgroups(n, &a[0])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tgids = make([]int, n)\n\tfor i, v := range a[0:n] {\n\t\tgids[i] = int(v)\n\t}\n\treturn\n}\n\nfunc Setgroups(gids []int) (err error) {\n\tif len(gids) == 0 {\n\t\treturn setgroups(0, nil)\n\t}\n\n\ta := make([]_Gid_t, len(gids))\n\tfor i, v := range gids {\n\t\ta[i] = _Gid_t(v)\n\t}\n\treturn setgroups(len(a), &a[0])\n}\n\n/*\n * Socket\n */\n\n//sys\taccept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error)\n\nfunc Accept(fd int) (nfd int, sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tnfd, err = accept(fd, &rsa, &len)\n\tif nfd == -1 {\n\t\treturn\n\t}\n\tsa, err = anyToSockaddr(fd, &rsa)\n\tif err != nil {\n\t\tClose(nfd)\n\t\tnfd = 0\n\t}\n\treturn\n}\n\nfunc recvmsgRaw(fd int, iov []Iovec, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn int, recvflags int, err error) {\n\tvar msg Msghdr\n\tmsg.Name = (*byte)(unsafe.Pointer(rsa))\n\tmsg.Namelen = uint32(SizeofSockaddrAny)\n\tvar dummy byte\n\tif len(oob) > 0 {\n\t\t// receive at least one normal byte\n\t\tif emptyIovecs(iov) {\n\t\t\tvar iova [1]Iovec\n\t\t\tiova[0].Base = &dummy\n\t\t\tiova[0].SetLen(1)\n\t\t\tiov = iova[:]\n\t\t}\n\t\tmsg.Control = (*byte)(unsafe.Pointer(&oob[0]))\n\t\tmsg.SetControllen(len(oob))\n\t}\n\tif len(iov) > 0 {\n\t\tmsg.Iov = &iov[0]\n\t\tmsg.SetIovlen(len(iov))\n\t}\n\tif n, err = recvmsg(fd, &msg, flags); n == -1 {\n\t\treturn\n\t}\n\toobn = int(msg.Controllen)\n\trecvflags = int(msg.Flags)\n\treturn\n}\n\nfunc sendmsgN(fd int, iov []Iovec, oob []byte, ptr unsafe.Pointer, salen _Socklen, flags int) (n int, err error) {\n\tvar msg Msghdr\n\tmsg.Name = (*byte)(unsafe.Pointer(ptr))\n\tmsg.Namelen = uint32(salen)\n\tvar dummy byte\n\tvar empty bool\n\tif len(oob) > 0 {\n\t\t// send at least one normal byte\n\t\tempty = emptyIovecs(iov)\n\t\tif empty {\n\t\t\tvar iova [1]Iovec\n\t\t\tiova[0].Base = &dummy\n\t\t\tiova[0].SetLen(1)\n\t\t\tiov = iova[:]\n\t\t}\n\t\tmsg.Control = (*byte)(unsafe.Pointer(&oob[0]))\n\t\tmsg.SetControllen(len(oob))\n\t}\n\tif len(iov) > 0 {\n\t\tmsg.Iov = &iov[0]\n\t\tmsg.SetIovlen(len(iov))\n\t}\n\tif n, err = sendmsg(fd, &msg, flags); err != nil {\n\t\treturn 0, err\n\t}\n\tif len(oob) > 0 && empty {\n\t\tn = 0\n\t}\n\treturn n, nil\n}\n\nfunc anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {\n\tswitch rsa.Addr.Family {\n\n\tcase AF_UNIX:\n\t\tpp := (*RawSockaddrUnix)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrUnix)\n\n\t\t// Some versions of AIX have a bug in getsockname (see IV78655).\n\t\t// We can't rely on sa.Len being set correctly.\n\t\tn := SizeofSockaddrUnix - 3 // subtract leading Family, Len, terminating NUL.\n\t\tfor i := 0; i < n; i++ {\n\t\t\tif pp.Path[i] == 0 {\n\t\t\t\tn = i\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tsa.Name = string(unsafe.Slice((*byte)(unsafe.Pointer(&pp.Path[0])), n))\n\t\treturn sa, nil\n\n\tcase AF_INET:\n\t\tpp := (*RawSockaddrInet4)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrInet4)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tsa.Addr = pp.Addr\n\t\treturn sa, nil\n\n\tcase AF_INET6:\n\t\tpp := (*RawSockaddrInet6)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrInet6)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tsa.ZoneId = pp.Scope_id\n\t\tsa.Addr = pp.Addr\n\t\treturn sa, nil\n\t}\n\treturn nil, EAFNOSUPPORT\n}\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\terr = gettimeofday(tv, nil)\n\treturn\n}\n\nfunc Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\treturn sendfile(outfd, infd, offset, count)\n}\n\n// TODO\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\treturn -1, ENOSYS\n}\n\nfunc direntIno(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Ino), unsafe.Sizeof(Dirent{}.Ino))\n}\n\nfunc direntReclen(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen))\n}\n\nfunc direntNamlen(buf []byte) (uint64, bool) {\n\treclen, ok := direntReclen(buf)\n\tif !ok {\n\t\treturn 0, false\n\t}\n\treturn reclen - uint64(unsafe.Offsetof(Dirent{}.Name)), true\n}\n\n//sys\tgetdirent(fd int, buf []byte) (n int, err error)\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\treturn getdirent(fd, buf)\n}\n\n//sys\twait4(pid Pid_t, status *_C_int, options int, rusage *Rusage) (wpid Pid_t, err error)\n\nfunc Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) {\n\tvar status _C_int\n\tvar r Pid_t\n\terr = ERESTART\n\t// AIX wait4 may return with ERESTART errno, while the process is still\n\t// active.\n\tfor err == ERESTART {\n\t\tr, err = wait4(Pid_t(pid), &status, options, rusage)\n\t}\n\twpid = int(r)\n\tif wstatus != nil {\n\t\t*wstatus = WaitStatus(status)\n\t}\n\treturn\n}\n\n/*\n * Wait\n */\n\ntype WaitStatus uint32\n\nfunc (w WaitStatus) Stopped() bool { return w&0x40 != 0 }\nfunc (w WaitStatus) StopSignal() Signal {\n\tif !w.Stopped() {\n\t\treturn -1\n\t}\n\treturn Signal(w>>8) & 0xFF\n}\n\nfunc (w WaitStatus) Exited() bool { return w&0xFF == 0 }\nfunc (w WaitStatus) ExitStatus() int {\n\tif !w.Exited() {\n\t\treturn -1\n\t}\n\treturn int((w >> 8) & 0xFF)\n}\n\nfunc (w WaitStatus) Signaled() bool { return w&0x40 == 0 && w&0xFF != 0 }\nfunc (w WaitStatus) Signal() Signal {\n\tif !w.Signaled() {\n\t\treturn -1\n\t}\n\treturn Signal(w>>16) & 0xFF\n}\n\nfunc (w WaitStatus) Continued() bool { return w&0x01000000 != 0 }\n\nfunc (w WaitStatus) CoreDump() bool { return w&0x80 == 0x80 }\n\nfunc (w WaitStatus) TrapCause() int { return -1 }\n\n//sys\tioctl(fd int, req int, arg uintptr) (err error)\n//sys\tioctlPtr(fd int, req int, arg unsafe.Pointer) (err error) = ioctl\n\n// fcntl must never be called with cmd=F_DUP2FD because it doesn't work on AIX\n// There is no way to create a custom fcntl and to keep //sys fcntl easily,\n// Therefore, the programmer must call dup2 instead of fcntl in this case.\n\n// FcntlInt performs a fcntl syscall on fd with the provided command and argument.\n//sys\tFcntlInt(fd uintptr, cmd int, arg int) (r int,err error) = fcntl\n\n// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command.\n//sys\tFcntlFlock(fd uintptr, cmd int, lk *Flock_t) (err error) = fcntl\n\n//sys\tfcntl(fd int, cmd int, arg int) (val int, err error)\n\n//sys\tfsyncRange(fd int, how int, start int64, length int64) (err error) = fsync_range\n\nfunc Fsync(fd int) error {\n\treturn fsyncRange(fd, O_SYNC, 0, 0)\n}\n\n/*\n * Direct access\n */\n\n//sys\tAcct(path string) (err error)\n//sys\tChdir(path string) (err error)\n//sys\tChroot(path string) (err error)\n//sys\tClose(fd int) (err error)\n//sys\tDup(oldfd int) (fd int, err error)\n//sys\tExit(code int)\n//sys\tFaccessat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchdir(fd int) (err error)\n//sys\tFchmod(fd int, mode uint32) (err error)\n//sys\tFchmodat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchownat(dirfd int, path string, uid int, gid int, flags int) (err error)\n//sys\tFdatasync(fd int) (err error)\n// readdir_r\n//sysnb\tGetpgid(pid int) (pgid int, err error)\n\n//sys\tGetpgrp() (pid int)\n\n//sysnb\tGetpid() (pid int)\n//sysnb\tGetppid() (ppid int)\n//sys\tGetpriority(which int, who int) (prio int, err error)\n//sysnb\tGetrusage(who int, rusage *Rusage) (err error)\n//sysnb\tGetsid(pid int) (sid int, err error)\n//sysnb\tKill(pid int, sig Signal) (err error)\n//sys\tKlogctl(typ int, buf []byte) (n int, err error) = syslog\n//sys\tMkdir(dirfd int, path string, mode uint32) (err error)\n//sys\tMkdirat(dirfd int, path string, mode uint32) (err error)\n//sys\tMkfifo(path string, mode uint32) (err error)\n//sys\tMknod(path string, mode uint32, dev int) (err error)\n//sys\tMknodat(dirfd int, path string, mode uint32, dev int) (err error)\n//sys\tNanosleep(time *Timespec, leftover *Timespec) (err error)\n//sys\tOpen(path string, mode int, perm uint32) (fd int, err error) = open64\n//sys\tOpenat(dirfd int, path string, flags int, mode uint32) (fd int, err error)\n//sys\tread(fd int, p []byte) (n int, err error)\n//sys\tReadlink(path string, buf []byte) (n int, err error)\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSetdomainname(p []byte) (err error)\n//sys\tSethostname(p []byte) (err error)\n//sysnb\tSetpgid(pid int, pgid int) (err error)\n//sysnb\tSetsid() (pid int, err error)\n//sysnb\tSettimeofday(tv *Timeval) (err error)\n\n//sys\tSetuid(uid int) (err error)\n//sys\tSetgid(uid int) (err error)\n\n//sys\tSetpriority(which int, who int, prio int) (err error)\n//sys\tStatx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error)\n//sys\tSync()\n//sysnb\tTimes(tms *Tms) (ticks uintptr, err error)\n//sysnb\tUmask(mask int) (oldmask int)\n//sysnb\tUname(buf *Utsname) (err error)\n//sys\tUnlink(path string) (err error)\n//sys\tUnlinkat(dirfd int, path string, flags int) (err error)\n//sys\tUstat(dev int, ubuf *Ustat_t) (err error)\n//sys\twrite(fd int, p []byte) (n int, err error)\n\n//sys\tDup2(oldfd int, newfd int) (err error)\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = posix_fadvise64\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tfstat(fd int, stat *Stat_t) (err error)\n//sys\tfstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = fstatat\n//sys\tFstatfs(fd int, buf *Statfs_t) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetuid() (uid int)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tListen(s int, n int) (err error)\n//sys\tlstat(path string, stat *Stat_t) (err error)\n//sys\tPause() (err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = pread64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = pwrite64\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)\n//sys\tPselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error)\n//sysnb\tSetregid(rgid int, egid int) (err error)\n//sysnb\tSetreuid(ruid int, euid int) (err error)\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)\n//sys\tstat(path string, statptr *Stat_t) (err error)\n//sys\tStatfs(path string, buf *Statfs_t) (err error)\n//sys\tTruncate(path string, length int64) (err error)\n\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n\n// In order to use msghdr structure with Control, Controllen, nrecvmsg and nsendmsg must be used.\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error) = nrecvmsg\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error) = nsendmsg\n\n//sys\tmunmap(addr uintptr, length uintptr) (err error)\n//sys\tMadvise(b []byte, advice int) (err error)\n//sys\tMprotect(b []byte, prot int) (err error)\n//sys\tMlock(b []byte) (err error)\n//sys\tMlockall(flags int) (err error)\n//sys\tMsync(b []byte, flags int) (err error)\n//sys\tMunlock(b []byte) (err error)\n//sys\tMunlockall() (err error)\n\n//sysnb\tpipe(p *[2]_C_int) (err error)\n\nfunc Pipe(p []int) (err error) {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\terr = pipe(&pp)\n\tif err == nil {\n\t\tp[0] = int(pp[0])\n\t\tp[1] = int(pp[1])\n\t}\n\treturn\n}\n\n//sys\tpoll(fds *PollFd, nfds int, timeout int) (n int, err error)\n\nfunc Poll(fds []PollFd, timeout int) (n int, err error) {\n\tif len(fds) == 0 {\n\t\treturn poll(nil, 0, timeout)\n\t}\n\treturn poll(&fds[0], len(fds), timeout)\n}\n\n//sys\tgettimeofday(tv *Timeval, tzp *Timezone) (err error)\n//sysnb\tTime(t *Time_t) (tt Time_t, err error)\n//sys\tUtime(path string, buf *Utimbuf) (err error)\n\n//sys\tGetsystemcfg(label int) (n uint64)\n\n//sys\tumount(target string) (err error)\n\nfunc Unmount(target string, flags int) (err error) {\n\tif flags != 0 {\n\t\t// AIX doesn't have any flags for umount.\n\t\treturn ENOSYS\n\t}\n\treturn umount(target)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix && ppc\n\npackage unix\n\n//sysnb\tGetrlimit(resource int, rlim *Rlimit) (err error) = getrlimit64\n//sys\tSeek(fd int, offset int64, whence int) (off int64, err error) = lseek64\n\n//sys\tmmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: int32(sec), Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: int32(sec), Usec: int32(usec)}\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc Fstat(fd int, stat *Stat_t) error {\n\treturn fstat(fd, stat)\n}\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) error {\n\treturn fstatat(dirfd, path, stat, flags)\n}\n\nfunc Lstat(path string, stat *Stat_t) error {\n\treturn lstat(path, stat)\n}\n\nfunc Stat(path string, statptr *Stat_t) error {\n\treturn stat(path, statptr)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix && ppc64\n\npackage unix\n\n//sysnb\tGetrlimit(resource int, rlim *Rlimit) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (off int64, err error) = lseek\n\n//sys\tmmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) = mmap64\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: int64(sec), Usec: int32(usec)}\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\n// In order to only have Timespec structure, type of Stat_t's fields\n// Atim, Mtim and Ctim is changed from StTimespec to Timespec during\n// ztypes generation.\n// On ppc64, Timespec.Nsec is an int64 while StTimespec.Nsec is an\n// int32, so the fields' value must be modified.\nfunc fixStatTimFields(stat *Stat_t) {\n\tstat.Atim.Nsec >>= 32\n\tstat.Mtim.Nsec >>= 32\n\tstat.Ctim.Nsec >>= 32\n}\n\nfunc Fstat(fd int, stat *Stat_t) error {\n\terr := fstat(fd, stat)\n\tif err != nil {\n\t\treturn err\n\t}\n\tfixStatTimFields(stat)\n\treturn nil\n}\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) error {\n\terr := fstatat(dirfd, path, stat, flags)\n\tif err != nil {\n\t\treturn err\n\t}\n\tfixStatTimFields(stat)\n\treturn nil\n}\n\nfunc Lstat(path string, stat *Stat_t) error {\n\terr := lstat(path, stat)\n\tif err != nil {\n\t\treturn err\n\t}\n\tfixStatTimFields(stat)\n\treturn nil\n}\n\nfunc Stat(path string, statptr *Stat_t) error {\n\terr := stat(path, statptr)\n\tif err != nil {\n\t\treturn err\n\t}\n\tfixStatTimFields(statptr)\n\treturn nil\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/syscall_bsd.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build darwin || dragonfly || freebsd || netbsd || openbsd\n\n// BSD system call wrappers shared by *BSD based systems\n// including OS X (Darwin) and FreeBSD.  Like the other\n// syscall_*.go files it is compiled as Go code but also\n// used as input to mksyscall which parses the //sys\n// lines and generates system call stubs.\n\npackage unix\n\nimport (\n\t\"runtime\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nconst ImplementsGetwd = true\n\nfunc Getwd() (string, error) {\n\tvar buf [PathMax]byte\n\t_, err := Getcwd(buf[0:])\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tn := clen(buf[:])\n\tif n < 1 {\n\t\treturn \"\", EINVAL\n\t}\n\treturn string(buf[:n]), nil\n}\n\n/*\n * Wrapped\n */\n\n//sysnb\tgetgroups(ngid int, gid *_Gid_t) (n int, err error)\n//sysnb\tsetgroups(ngid int, gid *_Gid_t) (err error)\n\nfunc Getgroups() (gids []int, err error) {\n\tn, err := getgroups(0, nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif n == 0 {\n\t\treturn nil, nil\n\t}\n\n\t// Sanity check group count. Max is 16 on BSD.\n\tif n < 0 || n > 1000 {\n\t\treturn nil, EINVAL\n\t}\n\n\ta := make([]_Gid_t, n)\n\tn, err = getgroups(n, &a[0])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tgids = make([]int, n)\n\tfor i, v := range a[0:n] {\n\t\tgids[i] = int(v)\n\t}\n\treturn\n}\n\nfunc Setgroups(gids []int) (err error) {\n\tif len(gids) == 0 {\n\t\treturn setgroups(0, nil)\n\t}\n\n\ta := make([]_Gid_t, len(gids))\n\tfor i, v := range gids {\n\t\ta[i] = _Gid_t(v)\n\t}\n\treturn setgroups(len(a), &a[0])\n}\n\n// Wait status is 7 bits at bottom, either 0 (exited),\n// 0x7F (stopped), or a signal number that caused an exit.\n// The 0x80 bit is whether there was a core dump.\n// An extra number (exit code, signal causing a stop)\n// is in the high bits.\n\ntype WaitStatus uint32\n\nconst (\n\tmask  = 0x7F\n\tcore  = 0x80\n\tshift = 8\n\n\texited  = 0\n\tkilled  = 9\n\tstopped = 0x7F\n)\n\nfunc (w WaitStatus) Exited() bool { return w&mask == exited }\n\nfunc (w WaitStatus) ExitStatus() int {\n\tif w&mask != exited {\n\t\treturn -1\n\t}\n\treturn int(w >> shift)\n}\n\nfunc (w WaitStatus) Signaled() bool { return w&mask != stopped && w&mask != 0 }\n\nfunc (w WaitStatus) Signal() syscall.Signal {\n\tsig := syscall.Signal(w & mask)\n\tif sig == stopped || sig == 0 {\n\t\treturn -1\n\t}\n\treturn sig\n}\n\nfunc (w WaitStatus) CoreDump() bool { return w.Signaled() && w&core != 0 }\n\nfunc (w WaitStatus) Stopped() bool { return w&mask == stopped && syscall.Signal(w>>shift) != SIGSTOP }\n\nfunc (w WaitStatus) Killed() bool { return w&mask == killed && syscall.Signal(w>>shift) != SIGKILL }\n\nfunc (w WaitStatus) Continued() bool { return w&mask == stopped && syscall.Signal(w>>shift) == SIGSTOP }\n\nfunc (w WaitStatus) StopSignal() syscall.Signal {\n\tif !w.Stopped() {\n\t\treturn -1\n\t}\n\treturn syscall.Signal(w>>shift) & 0xFF\n}\n\nfunc (w WaitStatus) TrapCause() int { return -1 }\n\n//sys\twait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error)\n\nfunc Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) {\n\tvar status _C_int\n\twpid, err = wait4(pid, &status, options, rusage)\n\tif wstatus != nil {\n\t\t*wstatus = WaitStatus(status)\n\t}\n\treturn\n}\n\n//sys\taccept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\tShutdown(s int, how int) (err error)\n\nfunc (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Port < 0 || sa.Port > 0xFFFF {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Len = SizeofSockaddrInet4\n\tsa.raw.Family = AF_INET\n\tp := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))\n\tp[0] = byte(sa.Port >> 8)\n\tp[1] = byte(sa.Port)\n\tsa.raw.Addr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil\n}\n\nfunc (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Port < 0 || sa.Port > 0xFFFF {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Len = SizeofSockaddrInet6\n\tsa.raw.Family = AF_INET6\n\tp := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))\n\tp[0] = byte(sa.Port >> 8)\n\tp[1] = byte(sa.Port)\n\tsa.raw.Scope_id = sa.ZoneId\n\tsa.raw.Addr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil\n}\n\nfunc (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tname := sa.Name\n\tn := len(name)\n\tif n >= len(sa.raw.Path) || n == 0 {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Len = byte(3 + n) // 2 for Family, Len; 1 for NUL\n\tsa.raw.Family = AF_UNIX\n\tfor i := 0; i < n; i++ {\n\t\tsa.raw.Path[i] = int8(name[i])\n\t}\n\treturn unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil\n}\n\nfunc (sa *SockaddrDatalink) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Index == 0 {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Len = sa.Len\n\tsa.raw.Family = AF_LINK\n\tsa.raw.Index = sa.Index\n\tsa.raw.Type = sa.Type\n\tsa.raw.Nlen = sa.Nlen\n\tsa.raw.Alen = sa.Alen\n\tsa.raw.Slen = sa.Slen\n\tsa.raw.Data = sa.Data\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrDatalink, nil\n}\n\nfunc anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {\n\tswitch rsa.Addr.Family {\n\tcase AF_LINK:\n\t\tpp := (*RawSockaddrDatalink)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrDatalink)\n\t\tsa.Len = pp.Len\n\t\tsa.Family = pp.Family\n\t\tsa.Index = pp.Index\n\t\tsa.Type = pp.Type\n\t\tsa.Nlen = pp.Nlen\n\t\tsa.Alen = pp.Alen\n\t\tsa.Slen = pp.Slen\n\t\tsa.Data = pp.Data\n\t\treturn sa, nil\n\n\tcase AF_UNIX:\n\t\tpp := (*RawSockaddrUnix)(unsafe.Pointer(rsa))\n\t\tif pp.Len < 2 || pp.Len > SizeofSockaddrUnix {\n\t\t\treturn nil, EINVAL\n\t\t}\n\t\tsa := new(SockaddrUnix)\n\n\t\t// Some BSDs include the trailing NUL in the length, whereas\n\t\t// others do not. Work around this by subtracting the leading\n\t\t// family and len. The path is then scanned to see if a NUL\n\t\t// terminator still exists within the length.\n\t\tn := int(pp.Len) - 2 // subtract leading Family, Len\n\t\tfor i := 0; i < n; i++ {\n\t\t\tif pp.Path[i] == 0 {\n\t\t\t\t// found early NUL; assume Len included the NUL\n\t\t\t\t// or was overestimating.\n\t\t\t\tn = i\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tsa.Name = string(unsafe.Slice((*byte)(unsafe.Pointer(&pp.Path[0])), n))\n\t\treturn sa, nil\n\n\tcase AF_INET:\n\t\tpp := (*RawSockaddrInet4)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrInet4)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tsa.Addr = pp.Addr\n\t\treturn sa, nil\n\n\tcase AF_INET6:\n\t\tpp := (*RawSockaddrInet6)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrInet6)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tsa.ZoneId = pp.Scope_id\n\t\tsa.Addr = pp.Addr\n\t\treturn sa, nil\n\t}\n\treturn anyToSockaddrGOOS(fd, rsa)\n}\n\nfunc Accept(fd int) (nfd int, sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tnfd, err = accept(fd, &rsa, &len)\n\tif err != nil {\n\t\treturn\n\t}\n\tif (runtime.GOOS == \"darwin\" || runtime.GOOS == \"ios\") && len == 0 {\n\t\t// Accepted socket has no address.\n\t\t// This is likely due to a bug in xnu kernels,\n\t\t// where instead of ECONNABORTED error socket\n\t\t// is accepted, but has no address.\n\t\tClose(nfd)\n\t\treturn 0, nil, ECONNABORTED\n\t}\n\tsa, err = anyToSockaddr(fd, &rsa)\n\tif err != nil {\n\t\tClose(nfd)\n\t\tnfd = 0\n\t}\n\treturn\n}\n\nfunc Getsockname(fd int) (sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tif err = getsockname(fd, &rsa, &len); err != nil {\n\t\treturn\n\t}\n\t// TODO(jsing): DragonFly has a \"bug\" (see issue 3349), which should be\n\t// reported upstream.\n\tif runtime.GOOS == \"dragonfly\" && rsa.Addr.Family == AF_UNSPEC && rsa.Addr.Len == 0 {\n\t\trsa.Addr.Family = AF_UNIX\n\t\trsa.Addr.Len = SizeofSockaddrUnix\n\t}\n\treturn anyToSockaddr(fd, &rsa)\n}\n\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n\n// GetsockoptString returns the string value of the socket option opt for the\n// socket associated with fd at the given socket level.\nfunc GetsockoptString(fd, level, opt int) (string, error) {\n\tbuf := make([]byte, 256)\n\tvallen := _Socklen(len(buf))\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\treturn ByteSliceToString(buf[:vallen]), nil\n}\n\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n\nfunc recvmsgRaw(fd int, iov []Iovec, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn int, recvflags int, err error) {\n\tvar msg Msghdr\n\tmsg.Name = (*byte)(unsafe.Pointer(rsa))\n\tmsg.Namelen = uint32(SizeofSockaddrAny)\n\tvar dummy byte\n\tif len(oob) > 0 {\n\t\t// receive at least one normal byte\n\t\tif emptyIovecs(iov) {\n\t\t\tvar iova [1]Iovec\n\t\t\tiova[0].Base = &dummy\n\t\t\tiova[0].SetLen(1)\n\t\t\tiov = iova[:]\n\t\t}\n\t\tmsg.Control = (*byte)(unsafe.Pointer(&oob[0]))\n\t\tmsg.SetControllen(len(oob))\n\t}\n\tif len(iov) > 0 {\n\t\tmsg.Iov = &iov[0]\n\t\tmsg.SetIovlen(len(iov))\n\t}\n\tif n, err = recvmsg(fd, &msg, flags); err != nil {\n\t\treturn\n\t}\n\toobn = int(msg.Controllen)\n\trecvflags = int(msg.Flags)\n\treturn\n}\n\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n\nfunc sendmsgN(fd int, iov []Iovec, oob []byte, ptr unsafe.Pointer, salen _Socklen, flags int) (n int, err error) {\n\tvar msg Msghdr\n\tmsg.Name = (*byte)(unsafe.Pointer(ptr))\n\tmsg.Namelen = uint32(salen)\n\tvar dummy byte\n\tvar empty bool\n\tif len(oob) > 0 {\n\t\t// send at least one normal byte\n\t\tempty = emptyIovecs(iov)\n\t\tif empty {\n\t\t\tvar iova [1]Iovec\n\t\t\tiova[0].Base = &dummy\n\t\t\tiova[0].SetLen(1)\n\t\t\tiov = iova[:]\n\t\t}\n\t\tmsg.Control = (*byte)(unsafe.Pointer(&oob[0]))\n\t\tmsg.SetControllen(len(oob))\n\t}\n\tif len(iov) > 0 {\n\t\tmsg.Iov = &iov[0]\n\t\tmsg.SetIovlen(len(iov))\n\t}\n\tif n, err = sendmsg(fd, &msg, flags); err != nil {\n\t\treturn 0, err\n\t}\n\tif len(oob) > 0 && empty {\n\t\tn = 0\n\t}\n\treturn n, nil\n}\n\n//sys\tkevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error)\n\nfunc Kevent(kq int, changes, events []Kevent_t, timeout *Timespec) (n int, err error) {\n\tvar change, event unsafe.Pointer\n\tif len(changes) > 0 {\n\t\tchange = unsafe.Pointer(&changes[0])\n\t}\n\tif len(events) > 0 {\n\t\tevent = unsafe.Pointer(&events[0])\n\t}\n\treturn kevent(kq, change, len(changes), event, len(events), timeout)\n}\n\n// sysctlmib translates name to mib number and appends any additional args.\nfunc sysctlmib(name string, args ...int) ([]_C_int, error) {\n\t// Translate name to mib number.\n\tmib, err := nametomib(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tfor _, a := range args {\n\t\tmib = append(mib, _C_int(a))\n\t}\n\n\treturn mib, nil\n}\n\nfunc Sysctl(name string) (string, error) {\n\treturn SysctlArgs(name)\n}\n\nfunc SysctlArgs(name string, args ...int) (string, error) {\n\tbuf, err := SysctlRaw(name, args...)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tn := len(buf)\n\n\t// Throw away terminating NUL.\n\tif n > 0 && buf[n-1] == '\\x00' {\n\t\tn--\n\t}\n\treturn string(buf[0:n]), nil\n}\n\nfunc SysctlUint32(name string) (uint32, error) {\n\treturn SysctlUint32Args(name)\n}\n\nfunc SysctlUint32Args(name string, args ...int) (uint32, error) {\n\tmib, err := sysctlmib(name, args...)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\tn := uintptr(4)\n\tbuf := make([]byte, 4)\n\tif err := sysctl(mib, &buf[0], &n, nil, 0); err != nil {\n\t\treturn 0, err\n\t}\n\tif n != 4 {\n\t\treturn 0, EIO\n\t}\n\treturn *(*uint32)(unsafe.Pointer(&buf[0])), nil\n}\n\nfunc SysctlUint64(name string, args ...int) (uint64, error) {\n\tmib, err := sysctlmib(name, args...)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\tn := uintptr(8)\n\tbuf := make([]byte, 8)\n\tif err := sysctl(mib, &buf[0], &n, nil, 0); err != nil {\n\t\treturn 0, err\n\t}\n\tif n != 8 {\n\t\treturn 0, EIO\n\t}\n\treturn *(*uint64)(unsafe.Pointer(&buf[0])), nil\n}\n\nfunc SysctlRaw(name string, args ...int) ([]byte, error) {\n\tmib, err := sysctlmib(name, args...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Find size.\n\tn := uintptr(0)\n\tif err := sysctl(mib, nil, &n, nil, 0); err != nil {\n\t\treturn nil, err\n\t}\n\tif n == 0 {\n\t\treturn nil, nil\n\t}\n\n\t// Read into buffer of that size.\n\tbuf := make([]byte, n)\n\tif err := sysctl(mib, &buf[0], &n, nil, 0); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// The actual call may return less than the original reported required\n\t// size so ensure we deal with that.\n\treturn buf[:n], nil\n}\n\nfunc SysctlClockinfo(name string) (*Clockinfo, error) {\n\tmib, err := sysctlmib(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tn := uintptr(SizeofClockinfo)\n\tvar ci Clockinfo\n\tif err := sysctl(mib, (*byte)(unsafe.Pointer(&ci)), &n, nil, 0); err != nil {\n\t\treturn nil, err\n\t}\n\tif n != SizeofClockinfo {\n\t\treturn nil, EIO\n\t}\n\treturn &ci, nil\n}\n\nfunc SysctlTimeval(name string) (*Timeval, error) {\n\tmib, err := sysctlmib(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar tv Timeval\n\tn := uintptr(unsafe.Sizeof(tv))\n\tif err := sysctl(mib, (*byte)(unsafe.Pointer(&tv)), &n, nil, 0); err != nil {\n\t\treturn nil, err\n\t}\n\tif n != unsafe.Sizeof(tv) {\n\t\treturn nil, EIO\n\t}\n\treturn &tv, nil\n}\n\n//sys\tutimes(path string, timeval *[2]Timeval) (err error)\n\nfunc Utimes(path string, tv []Timeval) error {\n\tif tv == nil {\n\t\treturn utimes(path, nil)\n\t}\n\tif len(tv) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))\n}\n\nfunc UtimesNano(path string, ts []Timespec) error {\n\tif ts == nil {\n\t\terr := utimensat(AT_FDCWD, path, nil, 0)\n\t\tif err != ENOSYS {\n\t\t\treturn err\n\t\t}\n\t\treturn utimes(path, nil)\n\t}\n\tif len(ts) != 2 {\n\t\treturn EINVAL\n\t}\n\terr := utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)\n\tif err != ENOSYS {\n\t\treturn err\n\t}\n\t// Not as efficient as it could be because Timespec and\n\t// Timeval have different types in the different OSes\n\ttv := [2]Timeval{\n\t\tNsecToTimeval(TimespecToNsec(ts[0])),\n\t\tNsecToTimeval(TimespecToNsec(ts[1])),\n\t}\n\treturn utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))\n}\n\nfunc UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error {\n\tif ts == nil {\n\t\treturn utimensat(dirfd, path, nil, flags)\n\t}\n\tif len(ts) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags)\n}\n\n//sys\tfutimes(fd int, timeval *[2]Timeval) (err error)\n\nfunc Futimes(fd int, tv []Timeval) error {\n\tif tv == nil {\n\t\treturn futimes(fd, nil)\n\t}\n\tif len(tv) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn futimes(fd, (*[2]Timeval)(unsafe.Pointer(&tv[0])))\n}\n\n//sys\tpoll(fds *PollFd, nfds int, timeout int) (n int, err error)\n\nfunc Poll(fds []PollFd, timeout int) (n int, err error) {\n\tif len(fds) == 0 {\n\t\treturn poll(nil, 0, timeout)\n\t}\n\treturn poll(&fds[0], len(fds), timeout)\n}\n\n// TODO: wrap\n//\tAcct(name nil-string) (err error)\n//\tGethostuuid(uuid *byte, timeout *Timespec) (err error)\n//\tPtrace(req int, pid int, addr uintptr, data int) (ret uintptr, err error)\n\n//sys\tMadvise(b []byte, behav int) (err error)\n//sys\tMlock(b []byte) (err error)\n//sys\tMlockall(flags int) (err error)\n//sys\tMprotect(b []byte, prot int) (err error)\n//sys\tMsync(b []byte, flags int) (err error)\n//sys\tMunlock(b []byte) (err error)\n//sys\tMunlockall() (err error)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/syscall_darwin.go",
    "content": "// Copyright 2009,2010 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Darwin system calls.\n// This file is compiled as ordinary Go code,\n// but it is also input to mksyscall,\n// which parses the //sys lines and generates system call stubs.\n// Note that sometimes we use a lowercase //sys name and wrap\n// it in our own nicer implementation, either here or in\n// syscall_bsd.go or syscall_unix.go.\n\npackage unix\n\nimport (\n\t\"fmt\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n//sys\tclosedir(dir uintptr) (err error)\n//sys\treaddir_r(dir uintptr, entry *Dirent, result **Dirent) (res Errno)\n\nfunc fdopendir(fd int) (dir uintptr, err error) {\n\tr0, _, e1 := syscall_syscallPtr(libc_fdopendir_trampoline_addr, uintptr(fd), 0, 0)\n\tdir = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fdopendir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fdopendir fdopendir \"/usr/lib/libSystem.B.dylib\"\n\nfunc Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {\n\t// Simulate Getdirentries using fdopendir/readdir_r/closedir.\n\t// We store the number of entries to skip in the seek\n\t// offset of fd. See issue #31368.\n\t// It's not the full required semantics, but should handle the case\n\t// of calling Getdirentries or ReadDirent repeatedly.\n\t// It won't handle assigning the results of lseek to *basep, or handle\n\t// the directory being edited underfoot.\n\tskip, err := Seek(fd, 0, 1 /* SEEK_CUR */)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\t// We need to duplicate the incoming file descriptor\n\t// because the caller expects to retain control of it, but\n\t// fdopendir expects to take control of its argument.\n\t// Just Dup'ing the file descriptor is not enough, as the\n\t// result shares underlying state. Use Openat to make a really\n\t// new file descriptor referring to the same directory.\n\tfd2, err := Openat(fd, \".\", O_RDONLY, 0)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\td, err := fdopendir(fd2)\n\tif err != nil {\n\t\tClose(fd2)\n\t\treturn 0, err\n\t}\n\tdefer closedir(d)\n\n\tvar cnt int64\n\tfor {\n\t\tvar entry Dirent\n\t\tvar entryp *Dirent\n\t\te := readdir_r(d, &entry, &entryp)\n\t\tif e != 0 {\n\t\t\treturn n, errnoErr(e)\n\t\t}\n\t\tif entryp == nil {\n\t\t\tbreak\n\t\t}\n\t\tif skip > 0 {\n\t\t\tskip--\n\t\t\tcnt++\n\t\t\tcontinue\n\t\t}\n\n\t\treclen := int(entry.Reclen)\n\t\tif reclen > len(buf) {\n\t\t\t// Not enough room. Return for now.\n\t\t\t// The counter will let us know where we should start up again.\n\t\t\t// Note: this strategy for suspending in the middle and\n\t\t\t// restarting is O(n^2) in the length of the directory. Oh well.\n\t\t\tbreak\n\t\t}\n\n\t\t// Copy entry into return buffer.\n\t\ts := unsafe.Slice((*byte)(unsafe.Pointer(&entry)), reclen)\n\t\tcopy(buf, s)\n\n\t\tbuf = buf[reclen:]\n\t\tn += reclen\n\t\tcnt++\n\t}\n\t// Set the seek offset of the input fd to record\n\t// how many files we've already returned.\n\t_, err = Seek(fd, cnt, 0 /* SEEK_SET */)\n\tif err != nil {\n\t\treturn n, err\n\t}\n\n\treturn n, nil\n}\n\n// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets.\ntype SockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [12]int8\n\traw    RawSockaddrDatalink\n}\n\n// SockaddrCtl implements the Sockaddr interface for AF_SYSTEM type sockets.\ntype SockaddrCtl struct {\n\tID   uint32\n\tUnit uint32\n\traw  RawSockaddrCtl\n}\n\nfunc (sa *SockaddrCtl) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tsa.raw.Sc_len = SizeofSockaddrCtl\n\tsa.raw.Sc_family = AF_SYSTEM\n\tsa.raw.Ss_sysaddr = AF_SYS_CONTROL\n\tsa.raw.Sc_id = sa.ID\n\tsa.raw.Sc_unit = sa.Unit\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrCtl, nil\n}\n\n// SockaddrVM implements the Sockaddr interface for AF_VSOCK type sockets.\n// SockaddrVM provides access to Darwin VM sockets: a mechanism that enables\n// bidirectional communication between a hypervisor and its guest virtual\n// machines.\ntype SockaddrVM struct {\n\t// CID and Port specify a context ID and port address for a VM socket.\n\t// Guests have a unique CID, and hosts may have a well-known CID of:\n\t//  - VMADDR_CID_HYPERVISOR: refers to the hypervisor process.\n\t//  - VMADDR_CID_LOCAL: refers to local communication (loopback).\n\t//  - VMADDR_CID_HOST: refers to other processes on the host.\n\tCID  uint32\n\tPort uint32\n\traw  RawSockaddrVM\n}\n\nfunc (sa *SockaddrVM) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tsa.raw.Len = SizeofSockaddrVM\n\tsa.raw.Family = AF_VSOCK\n\tsa.raw.Port = sa.Port\n\tsa.raw.Cid = sa.CID\n\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrVM, nil\n}\n\nfunc anyToSockaddrGOOS(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {\n\tswitch rsa.Addr.Family {\n\tcase AF_SYSTEM:\n\t\tpp := (*RawSockaddrCtl)(unsafe.Pointer(rsa))\n\t\tif pp.Ss_sysaddr == AF_SYS_CONTROL {\n\t\t\tsa := new(SockaddrCtl)\n\t\t\tsa.ID = pp.Sc_id\n\t\t\tsa.Unit = pp.Sc_unit\n\t\t\treturn sa, nil\n\t\t}\n\tcase AF_VSOCK:\n\t\tpp := (*RawSockaddrVM)(unsafe.Pointer(rsa))\n\t\tsa := &SockaddrVM{\n\t\t\tCID:  pp.Cid,\n\t\t\tPort: pp.Port,\n\t\t}\n\t\treturn sa, nil\n\t}\n\treturn nil, EAFNOSUPPORT\n}\n\n// Some external packages rely on SYS___SYSCTL being defined to implement their\n// own sysctl wrappers. Provide it here, even though direct syscalls are no\n// longer supported on darwin.\nconst SYS___SYSCTL = SYS_SYSCTL\n\n// Translate \"kern.hostname\" to []_C_int{0,1,2,3}.\nfunc nametomib(name string) (mib []_C_int, err error) {\n\tconst siz = unsafe.Sizeof(mib[0])\n\n\t// NOTE(rsc): It seems strange to set the buffer to have\n\t// size CTL_MAXNAME+2 but use only CTL_MAXNAME\n\t// as the size. I don't know why the +2 is here, but the\n\t// kernel uses +2 for its own implementation of this function.\n\t// I am scared that if we don't include the +2 here, the kernel\n\t// will silently write 2 words farther than we specify\n\t// and we'll get memory corruption.\n\tvar buf [CTL_MAXNAME + 2]_C_int\n\tn := uintptr(CTL_MAXNAME) * siz\n\n\tp := (*byte)(unsafe.Pointer(&buf[0]))\n\tbytes, err := ByteSliceFromString(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Magic sysctl: \"setting\" 0.3 to a string name\n\t// lets you read back the array of integers form.\n\tif err = sysctl([]_C_int{0, 3}, p, &n, &bytes[0], uintptr(len(name))); err != nil {\n\t\treturn nil, err\n\t}\n\treturn buf[0 : n/siz], nil\n}\n\nfunc direntIno(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Ino), unsafe.Sizeof(Dirent{}.Ino))\n}\n\nfunc direntReclen(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen))\n}\n\nfunc direntNamlen(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen))\n}\n\nfunc PtraceAttach(pid int) (err error) { return ptrace(PT_ATTACH, pid, 0, 0) }\nfunc PtraceDetach(pid int) (err error) { return ptrace(PT_DETACH, pid, 0, 0) }\nfunc PtraceDenyAttach() (err error)    { return ptrace(PT_DENY_ATTACH, 0, 0, 0) }\n\n//sysnb\tpipe(p *[2]int32) (err error)\n\nfunc Pipe(p []int) (err error) {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar x [2]int32\n\terr = pipe(&x)\n\tif err == nil {\n\t\tp[0] = int(x[0])\n\t\tp[1] = int(x[1])\n\t}\n\treturn\n}\n\nfunc Getfsstat(buf []Statfs_t, flags int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tvar bufsize uintptr\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t\tbufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf))\n\t}\n\treturn getfsstat(_p0, bufsize, flags)\n}\n\nfunc xattrPointer(dest []byte) *byte {\n\t// It's only when dest is set to NULL that the OS X implementations of\n\t// getxattr() and listxattr() return the current sizes of the named attributes.\n\t// An empty byte array is not sufficient. To maintain the same behaviour as the\n\t// linux implementation, we wrap around the system calls and pass in NULL when\n\t// dest is empty.\n\tvar destp *byte\n\tif len(dest) > 0 {\n\t\tdestp = &dest[0]\n\t}\n\treturn destp\n}\n\n//sys\tgetxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error)\n\nfunc Getxattr(path string, attr string, dest []byte) (sz int, err error) {\n\treturn getxattr(path, attr, xattrPointer(dest), len(dest), 0, 0)\n}\n\nfunc Lgetxattr(link string, attr string, dest []byte) (sz int, err error) {\n\treturn getxattr(link, attr, xattrPointer(dest), len(dest), 0, XATTR_NOFOLLOW)\n}\n\n//sys\tfgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error)\n\nfunc Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) {\n\treturn fgetxattr(fd, attr, xattrPointer(dest), len(dest), 0, 0)\n}\n\n//sys\tsetxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error)\n\nfunc Setxattr(path string, attr string, data []byte, flags int) (err error) {\n\t// The parameters for the OS X implementation vary slightly compared to the\n\t// linux system call, specifically the position parameter:\n\t//\n\t//  linux:\n\t//      int setxattr(\n\t//          const char *path,\n\t//          const char *name,\n\t//          const void *value,\n\t//          size_t size,\n\t//          int flags\n\t//      );\n\t//\n\t//  darwin:\n\t//      int setxattr(\n\t//          const char *path,\n\t//          const char *name,\n\t//          void *value,\n\t//          size_t size,\n\t//          u_int32_t position,\n\t//          int options\n\t//      );\n\t//\n\t// position specifies the offset within the extended attribute. In the\n\t// current implementation, only the resource fork extended attribute makes\n\t// use of this argument. For all others, position is reserved. We simply\n\t// default to setting it to zero.\n\treturn setxattr(path, attr, xattrPointer(data), len(data), 0, flags)\n}\n\nfunc Lsetxattr(link string, attr string, data []byte, flags int) (err error) {\n\treturn setxattr(link, attr, xattrPointer(data), len(data), 0, flags|XATTR_NOFOLLOW)\n}\n\n//sys\tfsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error)\n\nfunc Fsetxattr(fd int, attr string, data []byte, flags int) (err error) {\n\treturn fsetxattr(fd, attr, xattrPointer(data), len(data), 0, 0)\n}\n\n//sys\tremovexattr(path string, attr string, options int) (err error)\n\nfunc Removexattr(path string, attr string) (err error) {\n\t// We wrap around and explicitly zero out the options provided to the OS X\n\t// implementation of removexattr, we do so for interoperability with the\n\t// linux variant.\n\treturn removexattr(path, attr, 0)\n}\n\nfunc Lremovexattr(link string, attr string) (err error) {\n\treturn removexattr(link, attr, XATTR_NOFOLLOW)\n}\n\n//sys\tfremovexattr(fd int, attr string, options int) (err error)\n\nfunc Fremovexattr(fd int, attr string) (err error) {\n\treturn fremovexattr(fd, attr, 0)\n}\n\n//sys\tlistxattr(path string, dest *byte, size int, options int) (sz int, err error)\n\nfunc Listxattr(path string, dest []byte) (sz int, err error) {\n\treturn listxattr(path, xattrPointer(dest), len(dest), 0)\n}\n\nfunc Llistxattr(link string, dest []byte) (sz int, err error) {\n\treturn listxattr(link, xattrPointer(dest), len(dest), XATTR_NOFOLLOW)\n}\n\n//sys\tflistxattr(fd int, dest *byte, size int, options int) (sz int, err error)\n\nfunc Flistxattr(fd int, dest []byte) (sz int, err error) {\n\treturn flistxattr(fd, xattrPointer(dest), len(dest), 0)\n}\n\n//sys\tutimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error)\n\n/*\n * Wrapped\n */\n\n//sys\tfcntl(fd int, cmd int, arg int) (val int, err error)\n\n//sys\tkill(pid int, signum int, posix int) (err error)\n\nfunc Kill(pid int, signum syscall.Signal) (err error) { return kill(pid, int(signum), 1) }\n\n//sys\tioctl(fd int, req uint, arg uintptr) (err error)\n//sys\tioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) = SYS_IOCTL\n\nfunc IoctlCtlInfo(fd int, ctlInfo *CtlInfo) error {\n\treturn ioctlPtr(fd, CTLIOCGINFO, unsafe.Pointer(ctlInfo))\n}\n\n// IfreqMTU is struct ifreq used to get or set a network device's MTU.\ntype IfreqMTU struct {\n\tName [IFNAMSIZ]byte\n\tMTU  int32\n}\n\n// IoctlGetIfreqMTU performs the SIOCGIFMTU ioctl operation on fd to get the MTU\n// of the network device specified by ifname.\nfunc IoctlGetIfreqMTU(fd int, ifname string) (*IfreqMTU, error) {\n\tvar ifreq IfreqMTU\n\tcopy(ifreq.Name[:], ifname)\n\terr := ioctlPtr(fd, SIOCGIFMTU, unsafe.Pointer(&ifreq))\n\treturn &ifreq, err\n}\n\n// IoctlSetIfreqMTU performs the SIOCSIFMTU ioctl operation on fd to set the MTU\n// of the network device specified by ifreq.Name.\nfunc IoctlSetIfreqMTU(fd int, ifreq *IfreqMTU) error {\n\treturn ioctlPtr(fd, SIOCSIFMTU, unsafe.Pointer(ifreq))\n}\n\n//sys\trenamexNp(from string, to string, flag uint32) (err error)\n\nfunc RenamexNp(from string, to string, flag uint32) (err error) {\n\treturn renamexNp(from, to, flag)\n}\n\n//sys\trenameatxNp(fromfd int, from string, tofd int, to string, flag uint32) (err error)\n\nfunc RenameatxNp(fromfd int, from string, tofd int, to string, flag uint32) (err error) {\n\treturn renameatxNp(fromfd, from, tofd, to, flag)\n}\n\n//sys\tsysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS_SYSCTL\n\nfunc Uname(uname *Utsname) error {\n\tmib := []_C_int{CTL_KERN, KERN_OSTYPE}\n\tn := unsafe.Sizeof(uname.Sysname)\n\tif err := sysctl(mib, &uname.Sysname[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_HOSTNAME}\n\tn = unsafe.Sizeof(uname.Nodename)\n\tif err := sysctl(mib, &uname.Nodename[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_OSRELEASE}\n\tn = unsafe.Sizeof(uname.Release)\n\tif err := sysctl(mib, &uname.Release[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_VERSION}\n\tn = unsafe.Sizeof(uname.Version)\n\tif err := sysctl(mib, &uname.Version[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\t// The version might have newlines or tabs in it, convert them to\n\t// spaces.\n\tfor i, b := range uname.Version {\n\t\tif b == '\\n' || b == '\\t' {\n\t\t\tif i == len(uname.Version)-1 {\n\t\t\t\tuname.Version[i] = 0\n\t\t\t} else {\n\t\t\t\tuname.Version[i] = ' '\n\t\t\t}\n\t\t}\n\t}\n\n\tmib = []_C_int{CTL_HW, HW_MACHINE}\n\tn = unsafe.Sizeof(uname.Machine)\n\tif err := sysctl(mib, &uname.Machine[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\nfunc Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\tvar length = int64(count)\n\terr = sendfile(infd, outfd, *offset, &length, nil, 0)\n\twritten = int(length)\n\treturn\n}\n\nfunc GetsockoptIPMreqn(fd, level, opt int) (*IPMreqn, error) {\n\tvar value IPMreqn\n\tvallen := _Socklen(SizeofIPMreqn)\n\terrno := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, errno\n}\n\nfunc SetsockoptIPMreqn(fd, level, opt int, mreq *IPMreqn) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(mreq), unsafe.Sizeof(*mreq))\n}\n\n// GetsockoptXucred is a getsockopt wrapper that returns an Xucred struct.\n// The usual level and opt are SOL_LOCAL and LOCAL_PEERCRED, respectively.\nfunc GetsockoptXucred(fd, level, opt int) (*Xucred, error) {\n\tx := new(Xucred)\n\tvallen := _Socklen(SizeofXucred)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(x), &vallen)\n\treturn x, err\n}\n\nfunc GetsockoptTCPConnectionInfo(fd, level, opt int) (*TCPConnectionInfo, error) {\n\tvar value TCPConnectionInfo\n\tvallen := _Socklen(SizeofTCPConnectionInfo)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\nfunc SysctlKinfoProc(name string, args ...int) (*KinfoProc, error) {\n\tmib, err := sysctlmib(name, args...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar kinfo KinfoProc\n\tn := uintptr(SizeofKinfoProc)\n\tif err := sysctl(mib, (*byte)(unsafe.Pointer(&kinfo)), &n, nil, 0); err != nil {\n\t\treturn nil, err\n\t}\n\tif n != SizeofKinfoProc {\n\t\treturn nil, EIO\n\t}\n\treturn &kinfo, nil\n}\n\nfunc SysctlKinfoProcSlice(name string, args ...int) ([]KinfoProc, error) {\n\tmib, err := sysctlmib(name, args...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tfor {\n\t\t// Find size.\n\t\tn := uintptr(0)\n\t\tif err := sysctl(mib, nil, &n, nil, 0); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif n == 0 {\n\t\t\treturn nil, nil\n\t\t}\n\t\tif n%SizeofKinfoProc != 0 {\n\t\t\treturn nil, fmt.Errorf(\"sysctl() returned a size of %d, which is not a multiple of %d\", n, SizeofKinfoProc)\n\t\t}\n\n\t\t// Read into buffer of that size.\n\t\tbuf := make([]KinfoProc, n/SizeofKinfoProc)\n\t\tif err := sysctl(mib, (*byte)(unsafe.Pointer(&buf[0])), &n, nil, 0); err != nil {\n\t\t\tif err == ENOMEM {\n\t\t\t\t// Process table grew. Try again.\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\treturn nil, err\n\t\t}\n\t\tif n%SizeofKinfoProc != 0 {\n\t\t\treturn nil, fmt.Errorf(\"sysctl() returned a size of %d, which is not a multiple of %d\", n, SizeofKinfoProc)\n\t\t}\n\n\t\t// The actual call may return less than the original reported required\n\t\t// size so ensure we deal with that.\n\t\treturn buf[:n/SizeofKinfoProc], nil\n\t}\n}\n\n//sys\tpthread_chdir_np(path string) (err error)\n\nfunc PthreadChdir(path string) (err error) {\n\treturn pthread_chdir_np(path)\n}\n\n//sys\tpthread_fchdir_np(fd int) (err error)\n\nfunc PthreadFchdir(fd int) (err error) {\n\treturn pthread_fchdir_np(fd)\n}\n\n// Connectx calls connectx(2) to initiate a connection on a socket.\n//\n// srcIf, srcAddr, and dstAddr are filled into a [SaEndpoints] struct and passed as the endpoints argument.\n//\n//   - srcIf is the optional source interface index. 0 means unspecified.\n//   - srcAddr is the optional source address. nil means unspecified.\n//   - dstAddr is the destination address.\n//\n// On success, Connectx returns the number of bytes enqueued for transmission.\nfunc Connectx(fd int, srcIf uint32, srcAddr, dstAddr Sockaddr, associd SaeAssocID, flags uint32, iov []Iovec, connid *SaeConnID) (n uintptr, err error) {\n\tendpoints := SaEndpoints{\n\t\tSrcif: srcIf,\n\t}\n\n\tif srcAddr != nil {\n\t\taddrp, addrlen, err := srcAddr.sockaddr()\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\tendpoints.Srcaddr = (*RawSockaddr)(addrp)\n\t\tendpoints.Srcaddrlen = uint32(addrlen)\n\t}\n\n\tif dstAddr != nil {\n\t\taddrp, addrlen, err := dstAddr.sockaddr()\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\tendpoints.Dstaddr = (*RawSockaddr)(addrp)\n\t\tendpoints.Dstaddrlen = uint32(addrlen)\n\t}\n\n\terr = connectx(fd, &endpoints, associd, flags, iov, &n, connid)\n\treturn\n}\n\nconst minIovec = 8\n\nfunc Readv(fd int, iovs [][]byte) (n int, err error) {\n\tiovecs := make([]Iovec, 0, minIovec)\n\tiovecs = appendBytes(iovecs, iovs)\n\tn, err = readv(fd, iovecs)\n\treadvRacedetect(iovecs, n, err)\n\treturn n, err\n}\n\nfunc Preadv(fd int, iovs [][]byte, offset int64) (n int, err error) {\n\tiovecs := make([]Iovec, 0, minIovec)\n\tiovecs = appendBytes(iovecs, iovs)\n\tn, err = preadv(fd, iovecs, offset)\n\treadvRacedetect(iovecs, n, err)\n\treturn n, err\n}\n\nfunc Writev(fd int, iovs [][]byte) (n int, err error) {\n\tiovecs := make([]Iovec, 0, minIovec)\n\tiovecs = appendBytes(iovecs, iovs)\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\tn, err = writev(fd, iovecs)\n\twritevRacedetect(iovecs, n)\n\treturn n, err\n}\n\nfunc Pwritev(fd int, iovs [][]byte, offset int64) (n int, err error) {\n\tiovecs := make([]Iovec, 0, minIovec)\n\tiovecs = appendBytes(iovecs, iovs)\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\tn, err = pwritev(fd, iovecs, offset)\n\twritevRacedetect(iovecs, n)\n\treturn n, err\n}\n\nfunc appendBytes(vecs []Iovec, bs [][]byte) []Iovec {\n\tfor _, b := range bs {\n\t\tvar v Iovec\n\t\tv.SetLen(len(b))\n\t\tif len(b) > 0 {\n\t\t\tv.Base = &b[0]\n\t\t} else {\n\t\t\tv.Base = (*byte)(unsafe.Pointer(&_zero))\n\t\t}\n\t\tvecs = append(vecs, v)\n\t}\n\treturn vecs\n}\n\nfunc writevRacedetect(iovecs []Iovec, n int) {\n\tif !raceenabled {\n\t\treturn\n\t}\n\tfor i := 0; n > 0 && i < len(iovecs); i++ {\n\t\tm := int(iovecs[i].Len)\n\t\tif m > n {\n\t\t\tm = n\n\t\t}\n\t\tn -= m\n\t\tif m > 0 {\n\t\t\traceReadRange(unsafe.Pointer(iovecs[i].Base), m)\n\t\t}\n\t}\n}\n\nfunc readvRacedetect(iovecs []Iovec, n int, err error) {\n\tif !raceenabled {\n\t\treturn\n\t}\n\tfor i := 0; n > 0 && i < len(iovecs); i++ {\n\t\tm := int(iovecs[i].Len)\n\t\tif m > n {\n\t\t\tm = n\n\t\t}\n\t\tn -= m\n\t\tif m > 0 {\n\t\t\traceWriteRange(unsafe.Pointer(iovecs[i].Base), m)\n\t\t}\n\t}\n\tif err == nil {\n\t\traceAcquire(unsafe.Pointer(&ioSync))\n\t}\n}\n\n//sys\tconnectx(fd int, endpoints *SaEndpoints, associd SaeAssocID, flags uint32, iov []Iovec, n *uintptr, connid *SaeConnID) (err error)\n//sys\tsendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error)\n\n//sys\tshmat(id int, addr uintptr, flag int) (ret uintptr, err error)\n//sys\tshmctl(id int, cmd int, buf *SysvShmDesc) (result int, err error)\n//sys\tshmdt(addr uintptr) (err error)\n//sys\tshmget(key int, size int, flag int) (id int, err error)\n\n/*\n * Exposed directly\n */\n//sys\tAccess(path string, mode uint32) (err error)\n//sys\tAdjtime(delta *Timeval, olddelta *Timeval) (err error)\n//sys\tChdir(path string) (err error)\n//sys\tChflags(path string, flags int) (err error)\n//sys\tChmod(path string, mode uint32) (err error)\n//sys\tChown(path string, uid int, gid int) (err error)\n//sys\tChroot(path string) (err error)\n//sys\tClockGettime(clockid int32, time *Timespec) (err error)\n//sys\tClose(fd int) (err error)\n//sys\tClonefile(src string, dst string, flags int) (err error)\n//sys\tClonefileat(srcDirfd int, src string, dstDirfd int, dst string, flags int) (err error)\n//sys\tDup(fd int) (nfd int, err error)\n//sys\tDup2(from int, to int) (err error)\n//sys\tExchangedata(path1 string, path2 string, options int) (err error)\n//sys\tExit(code int)\n//sys\tFaccessat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchdir(fd int) (err error)\n//sys\tFchflags(fd int, flags int) (err error)\n//sys\tFchmod(fd int, mode uint32) (err error)\n//sys\tFchmodat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFchownat(dirfd int, path string, uid int, gid int, flags int) (err error)\n//sys\tFclonefileat(srcDirfd int, dstDirfd int, dst string, flags int) (err error)\n//sys\tFlock(fd int, how int) (err error)\n//sys\tFpathconf(fd int, name int) (val int, err error)\n//sys\tFsync(fd int) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sys\tGetcwd(buf []byte) (n int, err error)\n//sys\tGetdtablesize() (size int)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (uid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetpgid(pid int) (pgid int, err error)\n//sysnb\tGetpgrp() (pgrp int)\n//sysnb\tGetpid() (pid int)\n//sysnb\tGetppid() (ppid int)\n//sys\tGetpriority(which int, who int) (prio int, err error)\n//sysnb\tGetrlimit(which int, lim *Rlimit) (err error)\n//sysnb\tGetrusage(who int, rusage *Rusage) (err error)\n//sysnb\tGetsid(pid int) (sid int, err error)\n//sysnb\tGettimeofday(tp *Timeval) (err error)\n//sysnb\tGetuid() (uid int)\n//sysnb\tIssetugid() (tainted bool)\n//sys\tKqueue() (fd int, err error)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tLink(path string, link string) (err error)\n//sys\tLinkat(pathfd int, path string, linkfd int, link string, flags int) (err error)\n//sys\tListen(s int, backlog int) (err error)\n//sys\tMkdir(path string, mode uint32) (err error)\n//sys\tMkdirat(dirfd int, path string, mode uint32) (err error)\n//sys\tMkfifo(path string, mode uint32) (err error)\n//sys\tMknod(path string, mode uint32, dev int) (err error)\n//sys\tMount(fsType string, dir string, flags int, data unsafe.Pointer) (err error)\n//sys\tOpen(path string, mode int, perm uint32) (fd int, err error)\n//sys\tOpenat(dirfd int, path string, mode int, perm uint32) (fd int, err error)\n//sys\tPathconf(path string, name int) (val int, err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error)\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error)\n//sys\tread(fd int, p []byte) (n int, err error)\n//sys\tReadlink(path string, buf []byte) (n int, err error)\n//sys\tReadlinkat(dirfd int, path string, buf []byte) (n int, err error)\n//sys\tRename(from string, to string) (err error)\n//sys\tRenameat(fromfd int, from string, tofd int, to string) (err error)\n//sys\tRevoke(path string) (err error)\n//sys\tRmdir(path string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)\n//sys\tSetattrlist(path string, attrlist *Attrlist, attrBuf []byte, options int) (err error)\n//sys\tSetegid(egid int) (err error)\n//sysnb\tSeteuid(euid int) (err error)\n//sysnb\tSetgid(gid int) (err error)\n//sys\tSetlogin(name string) (err error)\n//sysnb\tSetpgid(pid int, pgid int) (err error)\n//sys\tSetpriority(which int, who int, prio int) (err error)\n//sys\tSetprivexec(flag int) (err error)\n//sysnb\tSetregid(rgid int, egid int) (err error)\n//sysnb\tSetreuid(ruid int, euid int) (err error)\n//sysnb\tSetsid() (pid int, err error)\n//sysnb\tSettimeofday(tp *Timeval) (err error)\n//sysnb\tSetuid(uid int) (err error)\n//sys\tSymlink(path string, link string) (err error)\n//sys\tSymlinkat(oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSync() (err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\tUmask(newmask int) (oldmask int)\n//sys\tUndelete(path string) (err error)\n//sys\tUnlink(path string) (err error)\n//sys\tUnlinkat(dirfd int, path string, flags int) (err error)\n//sys\tUnmount(path string, flags int) (err error)\n//sys\twrite(fd int, p []byte) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)\n//sys\tmunmap(addr uintptr, length uintptr) (err error)\n//sys\treadv(fd int, iovecs []Iovec) (n int, err error)\n//sys\tpreadv(fd int, iovecs []Iovec, offset int64) (n int, err error)\n//sys\twritev(fd int, iovecs []Iovec) (n int, err error)\n//sys\tpwritev(fd int, iovecs []Iovec, offset int64) (n int, err error)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build amd64 && darwin\n\npackage unix\n\nimport \"syscall\"\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: int32(usec)}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)\n\n//sys\tFstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64\n//sys\tFstatat(fd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64\n//sys\tFstatfs(fd int, stat *Statfs_t) (err error) = SYS_FSTATFS64\n//sys\tgetfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT64\n//sys\tLstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64\n//sys\tptrace1(request int, pid int, addr uintptr, data uintptr) (err error) = SYS_ptrace\n//sys\tStat(path string, stat *Stat_t) (err error) = SYS_STAT64\n//sys\tStatfs(path string, stat *Statfs_t) (err error) = SYS_STATFS64\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build arm64 && darwin\n\npackage unix\n\nimport \"syscall\"\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: int32(usec)}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) // sic\n\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(fd int, path string, stat *Stat_t, flags int) (err error)\n//sys\tFstatfs(fd int, stat *Statfs_t) (err error)\n//sys\tgetfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT\n//sys\tLstat(path string, stat *Stat_t) (err error)\n//sys\tptrace1(request int, pid int, addr uintptr, data uintptr) (err error) = SYS_ptrace\n//sys\tStat(path string, stat *Stat_t) (err error)\n//sys\tStatfs(path string, stat *Statfs_t) (err error)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build darwin\n\npackage unix\n\nimport _ \"unsafe\"\n\n// Implemented in the runtime package (runtime/sys_darwin.go)\nfunc syscall_syscall(fn, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno)\nfunc syscall_syscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)\nfunc syscall_syscall6X(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)\nfunc syscall_syscall9(fn, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err Errno) // 32-bit only\nfunc syscall_rawSyscall(fn, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno)\nfunc syscall_rawSyscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)\nfunc syscall_syscallPtr(fn, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno)\n\n//go:linkname syscall_syscall syscall.syscall\n//go:linkname syscall_syscall6 syscall.syscall6\n//go:linkname syscall_syscall6X syscall.syscall6X\n//go:linkname syscall_syscall9 syscall.syscall9\n//go:linkname syscall_rawSyscall syscall.rawSyscall\n//go:linkname syscall_rawSyscall6 syscall.rawSyscall6\n//go:linkname syscall_syscallPtr syscall.syscallPtr\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/syscall_dragonfly.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// DragonFly BSD system calls.\n// This file is compiled as ordinary Go code,\n// but it is also input to mksyscall,\n// which parses the //sys lines and generates system call stubs.\n// Note that sometimes we use a lowercase //sys name and wrap\n// it in our own nicer implementation, either here or in\n// syscall_bsd.go or syscall_unix.go.\n\npackage unix\n\nimport (\n\t\"sync\"\n\t\"unsafe\"\n)\n\n// See version list in https://github.com/DragonFlyBSD/DragonFlyBSD/blob/master/sys/sys/param.h\nvar (\n\tosreldateOnce sync.Once\n\tosreldate     uint32\n)\n\n// First __DragonFly_version after September 2019 ABI changes\n// http://lists.dragonflybsd.org/pipermail/users/2019-September/358280.html\nconst _dragonflyABIChangeVersion = 500705\n\nfunc supportsABI(ver uint32) bool {\n\tosreldateOnce.Do(func() { osreldate, _ = SysctlUint32(\"kern.osreldate\") })\n\treturn osreldate >= ver\n}\n\n// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets.\ntype SockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [12]int8\n\tRcf    uint16\n\tRoute  [16]uint16\n\traw    RawSockaddrDatalink\n}\n\nfunc anyToSockaddrGOOS(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {\n\treturn nil, EAFNOSUPPORT\n}\n\n// Translate \"kern.hostname\" to []_C_int{0,1,2,3}.\nfunc nametomib(name string) (mib []_C_int, err error) {\n\tconst siz = unsafe.Sizeof(mib[0])\n\n\t// NOTE(rsc): It seems strange to set the buffer to have\n\t// size CTL_MAXNAME+2 but use only CTL_MAXNAME\n\t// as the size. I don't know why the +2 is here, but the\n\t// kernel uses +2 for its own implementation of this function.\n\t// I am scared that if we don't include the +2 here, the kernel\n\t// will silently write 2 words farther than we specify\n\t// and we'll get memory corruption.\n\tvar buf [CTL_MAXNAME + 2]_C_int\n\tn := uintptr(CTL_MAXNAME) * siz\n\n\tp := (*byte)(unsafe.Pointer(&buf[0]))\n\tbytes, err := ByteSliceFromString(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Magic sysctl: \"setting\" 0.3 to a string name\n\t// lets you read back the array of integers form.\n\tif err = sysctl([]_C_int{0, 3}, p, &n, &bytes[0], uintptr(len(name))); err != nil {\n\t\treturn nil, err\n\t}\n\treturn buf[0 : n/siz], nil\n}\n\nfunc direntIno(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Fileno), unsafe.Sizeof(Dirent{}.Fileno))\n}\n\nfunc direntReclen(buf []byte) (uint64, bool) {\n\tnamlen, ok := direntNamlen(buf)\n\tif !ok {\n\t\treturn 0, false\n\t}\n\treturn (16 + namlen + 1 + 7) &^ 7, true\n}\n\nfunc direntNamlen(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen))\n}\n\n//sysnb\tpipe() (r int, w int, err error)\n\nfunc Pipe(p []int) (err error) {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tr, w, err := pipe()\n\tif err == nil {\n\t\tp[0], p[1] = r, w\n\t}\n\treturn\n}\n\n//sysnb\tpipe2(p *[2]_C_int, flags int) (r int, w int, err error)\n\nfunc Pipe2(p []int, flags int) (err error) {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\t// pipe2 on dragonfly takes an fds array as an argument, but still\n\t// returns the file descriptors.\n\tr, w, err := pipe2(&pp, flags)\n\tif err == nil {\n\t\tp[0], p[1] = r, w\n\t}\n\treturn err\n}\n\n//sys\textpread(fd int, p []byte, flags int, offset int64) (n int, err error)\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\treturn extpread(fd, p, 0, offset)\n}\n\n//sys\textpwrite(fd int, p []byte, flags int, offset int64) (n int, err error)\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\treturn extpwrite(fd, p, 0, offset)\n}\n\nfunc Accept4(fd, flags int) (nfd int, sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tnfd, err = accept4(fd, &rsa, &len, flags)\n\tif err != nil {\n\t\treturn\n\t}\n\tif len > SizeofSockaddrAny {\n\t\tpanic(\"RawSockaddrAny too small\")\n\t}\n\tsa, err = anyToSockaddr(fd, &rsa)\n\tif err != nil {\n\t\tClose(nfd)\n\t\tnfd = 0\n\t}\n\treturn\n}\n\n//sys\tGetcwd(buf []byte) (n int, err error) = SYS___GETCWD\n\nfunc Getfsstat(buf []Statfs_t, flags int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tvar bufsize uintptr\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t\tbufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf))\n\t}\n\tr0, _, e1 := Syscall(SYS_GETFSSTAT, uintptr(_p0), bufsize, uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n//sys\tioctl(fd int, req uint, arg uintptr) (err error)\n//sys\tioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) = SYS_IOCTL\n\n//sys\tsysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL\n\nfunc sysctlUname(mib []_C_int, old *byte, oldlen *uintptr) error {\n\terr := sysctl(mib, old, oldlen, nil, 0)\n\tif err != nil {\n\t\t// Utsname members on Dragonfly are only 32 bytes and\n\t\t// the syscall returns ENOMEM in case the actual value\n\t\t// is longer.\n\t\tif err == ENOMEM {\n\t\t\terr = nil\n\t\t}\n\t}\n\treturn err\n}\n\nfunc Uname(uname *Utsname) error {\n\tmib := []_C_int{CTL_KERN, KERN_OSTYPE}\n\tn := unsafe.Sizeof(uname.Sysname)\n\tif err := sysctlUname(mib, &uname.Sysname[0], &n); err != nil {\n\t\treturn err\n\t}\n\tuname.Sysname[unsafe.Sizeof(uname.Sysname)-1] = 0\n\n\tmib = []_C_int{CTL_KERN, KERN_HOSTNAME}\n\tn = unsafe.Sizeof(uname.Nodename)\n\tif err := sysctlUname(mib, &uname.Nodename[0], &n); err != nil {\n\t\treturn err\n\t}\n\tuname.Nodename[unsafe.Sizeof(uname.Nodename)-1] = 0\n\n\tmib = []_C_int{CTL_KERN, KERN_OSRELEASE}\n\tn = unsafe.Sizeof(uname.Release)\n\tif err := sysctlUname(mib, &uname.Release[0], &n); err != nil {\n\t\treturn err\n\t}\n\tuname.Release[unsafe.Sizeof(uname.Release)-1] = 0\n\n\tmib = []_C_int{CTL_KERN, KERN_VERSION}\n\tn = unsafe.Sizeof(uname.Version)\n\tif err := sysctlUname(mib, &uname.Version[0], &n); err != nil {\n\t\treturn err\n\t}\n\n\t// The version might have newlines or tabs in it, convert them to\n\t// spaces.\n\tfor i, b := range uname.Version {\n\t\tif b == '\\n' || b == '\\t' {\n\t\t\tif i == len(uname.Version)-1 {\n\t\t\t\tuname.Version[i] = 0\n\t\t\t} else {\n\t\t\t\tuname.Version[i] = ' '\n\t\t\t}\n\t\t}\n\t}\n\n\tmib = []_C_int{CTL_HW, HW_MACHINE}\n\tn = unsafe.Sizeof(uname.Machine)\n\tif err := sysctlUname(mib, &uname.Machine[0], &n); err != nil {\n\t\treturn err\n\t}\n\tuname.Machine[unsafe.Sizeof(uname.Machine)-1] = 0\n\n\treturn nil\n}\n\nfunc Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\treturn sendfile(outfd, infd, offset, count)\n}\n\nfunc Dup3(oldfd, newfd, flags int) error {\n\tif oldfd == newfd || flags&^O_CLOEXEC != 0 {\n\t\treturn EINVAL\n\t}\n\thow := F_DUP2FD\n\tif flags&O_CLOEXEC != 0 {\n\t\thow = F_DUP2FD_CLOEXEC\n\t}\n\t_, err := fcntl(oldfd, how, newfd)\n\treturn err\n}\n\n/*\n * Exposed directly\n */\n//sys\tAccess(path string, mode uint32) (err error)\n//sys\tAdjtime(delta *Timeval, olddelta *Timeval) (err error)\n//sys\tChdir(path string) (err error)\n//sys\tChflags(path string, flags int) (err error)\n//sys\tChmod(path string, mode uint32) (err error)\n//sys\tChown(path string, uid int, gid int) (err error)\n//sys\tChroot(path string) (err error)\n//sys\tClockGettime(clockid int32, time *Timespec) (err error)\n//sys\tClose(fd int) (err error)\n//sys\tDup(fd int) (nfd int, err error)\n//sys\tDup2(from int, to int) (err error)\n//sys\tExit(code int)\n//sys\tFaccessat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchdir(fd int) (err error)\n//sys\tFchflags(fd int, flags int) (err error)\n//sys\tFchmod(fd int, mode uint32) (err error)\n//sys\tFchmodat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFchownat(dirfd int, path string, uid int, gid int, flags int) (err error)\n//sys\tFlock(fd int, how int) (err error)\n//sys\tFpathconf(fd int, name int) (val int, err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(fd int, path string, stat *Stat_t, flags int) (err error)\n//sys\tFstatfs(fd int, stat *Statfs_t) (err error)\n//sys\tFsync(fd int) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sys\tGetdents(fd int, buf []byte) (n int, err error)\n//sys\tGetdirentries(fd int, buf []byte, basep *uintptr) (n int, err error)\n//sys\tGetdtablesize() (size int)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (uid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetpgid(pid int) (pgid int, err error)\n//sysnb\tGetpgrp() (pgrp int)\n//sysnb\tGetpid() (pid int)\n//sysnb\tGetppid() (ppid int)\n//sys\tGetpriority(which int, who int) (prio int, err error)\n//sysnb\tGetrlimit(which int, lim *Rlimit) (err error)\n//sysnb\tGetrusage(who int, rusage *Rusage) (err error)\n//sysnb\tGetsid(pid int) (sid int, err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tIssetugid() (tainted bool)\n//sys\tKill(pid int, signum syscall.Signal) (err error)\n//sys\tKqueue() (fd int, err error)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tLink(path string, link string) (err error)\n//sys\tLinkat(pathfd int, path string, linkfd int, link string, flags int) (err error)\n//sys\tListen(s int, backlog int) (err error)\n//sys\tLstat(path string, stat *Stat_t) (err error)\n//sys\tMkdir(path string, mode uint32) (err error)\n//sys\tMkdirat(dirfd int, path string, mode uint32) (err error)\n//sys\tMkfifo(path string, mode uint32) (err error)\n//sys\tMknod(path string, mode uint32, dev int) (err error)\n//sys\tMknodat(fd int, path string, mode uint32, dev int) (err error)\n//sys\tNanosleep(time *Timespec, leftover *Timespec) (err error)\n//sys\tOpen(path string, mode int, perm uint32) (fd int, err error)\n//sys\tOpenat(dirfd int, path string, mode int, perm uint32) (fd int, err error)\n//sys\tPathconf(path string, name int) (val int, err error)\n//sys\tread(fd int, p []byte) (n int, err error)\n//sys\tReadlink(path string, buf []byte) (n int, err error)\n//sys\tRename(from string, to string) (err error)\n//sys\tRenameat(fromfd int, from string, tofd int, to string) (err error)\n//sys\tRevoke(path string) (err error)\n//sys\tRmdir(path string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)\n//sysnb\tSetegid(egid int) (err error)\n//sysnb\tSeteuid(euid int) (err error)\n//sysnb\tSetgid(gid int) (err error)\n//sys\tSetlogin(name string) (err error)\n//sysnb\tSetpgid(pid int, pgid int) (err error)\n//sys\tSetpriority(which int, who int, prio int) (err error)\n//sysnb\tSetregid(rgid int, egid int) (err error)\n//sysnb\tSetreuid(ruid int, euid int) (err error)\n//sysnb\tSetresgid(rgid int, egid int, sgid int) (err error)\n//sysnb\tSetresuid(ruid int, euid int, suid int) (err error)\n//sysnb\tSetsid() (pid int, err error)\n//sysnb\tSettimeofday(tp *Timeval) (err error)\n//sysnb\tSetuid(uid int) (err error)\n//sys\tStat(path string, stat *Stat_t) (err error)\n//sys\tStatfs(path string, stat *Statfs_t) (err error)\n//sys\tSymlink(path string, link string) (err error)\n//sys\tSymlinkat(oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSync() (err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\tUmask(newmask int) (oldmask int)\n//sys\tUndelete(path string) (err error)\n//sys\tUnlink(path string) (err error)\n//sys\tUnlinkat(dirfd int, path string, flags int) (err error)\n//sys\tUnmount(path string, flags int) (err error)\n//sys\twrite(fd int, p []byte) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)\n//sys\tmunmap(addr uintptr, length uintptr) (err error)\n//sys\taccept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error)\n//sys\tutimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build amd64 && dragonfly\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tvar writtenOut uint64 = 0\n\t_, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0, 0)\n\n\twritten = int(writtenOut)\n\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\nfunc Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/syscall_freebsd.go",
    "content": "// Copyright 2009,2010 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// FreeBSD system calls.\n// This file is compiled as ordinary Go code,\n// but it is also input to mksyscall,\n// which parses the //sys lines and generates system call stubs.\n// Note that sometimes we use a lowercase //sys name and wrap\n// it in our own nicer implementation, either here or in\n// syscall_bsd.go or syscall_unix.go.\n\npackage unix\n\nimport (\n\t\"errors\"\n\t\"sync\"\n\t\"unsafe\"\n)\n\n// See https://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/versions.html.\nvar (\n\tosreldateOnce sync.Once\n\tosreldate     uint32\n)\n\nfunc supportsABI(ver uint32) bool {\n\tosreldateOnce.Do(func() { osreldate, _ = SysctlUint32(\"kern.osreldate\") })\n\treturn osreldate >= ver\n}\n\n// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets.\ntype SockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [46]int8\n\traw    RawSockaddrDatalink\n}\n\nfunc anyToSockaddrGOOS(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {\n\treturn nil, EAFNOSUPPORT\n}\n\n// Translate \"kern.hostname\" to []_C_int{0,1,2,3}.\nfunc nametomib(name string) (mib []_C_int, err error) {\n\tconst siz = unsafe.Sizeof(mib[0])\n\n\t// NOTE(rsc): It seems strange to set the buffer to have\n\t// size CTL_MAXNAME+2 but use only CTL_MAXNAME\n\t// as the size. I don't know why the +2 is here, but the\n\t// kernel uses +2 for its own implementation of this function.\n\t// I am scared that if we don't include the +2 here, the kernel\n\t// will silently write 2 words farther than we specify\n\t// and we'll get memory corruption.\n\tvar buf [CTL_MAXNAME + 2]_C_int\n\tn := uintptr(CTL_MAXNAME) * siz\n\n\tp := (*byte)(unsafe.Pointer(&buf[0]))\n\tbytes, err := ByteSliceFromString(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Magic sysctl: \"setting\" 0.3 to a string name\n\t// lets you read back the array of integers form.\n\tif err = sysctl([]_C_int{0, 3}, p, &n, &bytes[0], uintptr(len(name))); err != nil {\n\t\treturn nil, err\n\t}\n\treturn buf[0 : n/siz], nil\n}\n\nfunc direntIno(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Fileno), unsafe.Sizeof(Dirent{}.Fileno))\n}\n\nfunc direntReclen(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen))\n}\n\nfunc direntNamlen(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen))\n}\n\nfunc Pipe(p []int) (err error) {\n\treturn Pipe2(p, 0)\n}\n\n//sysnb\tpipe2(p *[2]_C_int, flags int) (err error)\n\nfunc Pipe2(p []int, flags int) error {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\terr := pipe2(&pp, flags)\n\tif err == nil {\n\t\tp[0] = int(pp[0])\n\t\tp[1] = int(pp[1])\n\t}\n\treturn err\n}\n\nfunc GetsockoptIPMreqn(fd, level, opt int) (*IPMreqn, error) {\n\tvar value IPMreqn\n\tvallen := _Socklen(SizeofIPMreqn)\n\terrno := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, errno\n}\n\nfunc SetsockoptIPMreqn(fd, level, opt int, mreq *IPMreqn) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(mreq), unsafe.Sizeof(*mreq))\n}\n\n// GetsockoptXucred is a getsockopt wrapper that returns an Xucred struct.\n// The usual level and opt are SOL_LOCAL and LOCAL_PEERCRED, respectively.\nfunc GetsockoptXucred(fd, level, opt int) (*Xucred, error) {\n\tx := new(Xucred)\n\tvallen := _Socklen(SizeofXucred)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(x), &vallen)\n\treturn x, err\n}\n\nfunc Accept4(fd, flags int) (nfd int, sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tnfd, err = accept4(fd, &rsa, &len, flags)\n\tif err != nil {\n\t\treturn\n\t}\n\tif len > SizeofSockaddrAny {\n\t\tpanic(\"RawSockaddrAny too small\")\n\t}\n\tsa, err = anyToSockaddr(fd, &rsa)\n\tif err != nil {\n\t\tClose(nfd)\n\t\tnfd = 0\n\t}\n\treturn\n}\n\n//sys\tGetcwd(buf []byte) (n int, err error) = SYS___GETCWD\n\nfunc Getfsstat(buf []Statfs_t, flags int) (n int, err error) {\n\tvar (\n\t\t_p0     unsafe.Pointer\n\t\tbufsize uintptr\n\t)\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t\tbufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf))\n\t}\n\tr0, _, e1 := Syscall(SYS_GETFSSTAT, uintptr(_p0), bufsize, uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n//sys\tioctl(fd int, req uint, arg uintptr) (err error) = SYS_IOCTL\n//sys\tioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) = SYS_IOCTL\n\n//sys\tsysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL\n\nfunc Uname(uname *Utsname) error {\n\tmib := []_C_int{CTL_KERN, KERN_OSTYPE}\n\tn := unsafe.Sizeof(uname.Sysname)\n\t// Suppress ENOMEM errors to be compatible with the C library __xuname() implementation.\n\tif err := sysctl(mib, &uname.Sysname[0], &n, nil, 0); err != nil && !errors.Is(err, ENOMEM) {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_HOSTNAME}\n\tn = unsafe.Sizeof(uname.Nodename)\n\tif err := sysctl(mib, &uname.Nodename[0], &n, nil, 0); err != nil && !errors.Is(err, ENOMEM) {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_OSRELEASE}\n\tn = unsafe.Sizeof(uname.Release)\n\tif err := sysctl(mib, &uname.Release[0], &n, nil, 0); err != nil && !errors.Is(err, ENOMEM) {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_VERSION}\n\tn = unsafe.Sizeof(uname.Version)\n\tif err := sysctl(mib, &uname.Version[0], &n, nil, 0); err != nil && !errors.Is(err, ENOMEM) {\n\t\treturn err\n\t}\n\n\t// The version might have newlines or tabs in it, convert them to\n\t// spaces.\n\tfor i, b := range uname.Version {\n\t\tif b == '\\n' || b == '\\t' {\n\t\t\tif i == len(uname.Version)-1 {\n\t\t\t\tuname.Version[i] = 0\n\t\t\t} else {\n\t\t\t\tuname.Version[i] = ' '\n\t\t\t}\n\t\t}\n\t}\n\n\tmib = []_C_int{CTL_HW, HW_MACHINE}\n\tn = unsafe.Sizeof(uname.Machine)\n\tif err := sysctl(mib, &uname.Machine[0], &n, nil, 0); err != nil && !errors.Is(err, ENOMEM) {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\nfunc Stat(path string, st *Stat_t) (err error) {\n\treturn Fstatat(AT_FDCWD, path, st, 0)\n}\n\nfunc Lstat(path string, st *Stat_t) (err error) {\n\treturn Fstatat(AT_FDCWD, path, st, AT_SYMLINK_NOFOLLOW)\n}\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\treturn Getdirentries(fd, buf, nil)\n}\n\nfunc Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {\n\tif basep == nil || unsafe.Sizeof(*basep) == 8 {\n\t\treturn getdirentries(fd, buf, (*uint64)(unsafe.Pointer(basep)))\n\t}\n\t// The syscall needs a 64-bit base. On 32-bit machines\n\t// we can't just use the basep passed in. See #32498.\n\tvar base uint64 = uint64(*basep)\n\tn, err = getdirentries(fd, buf, &base)\n\t*basep = uintptr(base)\n\tif base>>32 != 0 {\n\t\t// We can't stuff the base back into a uintptr, so any\n\t\t// future calls would be suspect. Generate an error.\n\t\t// EIO is allowed by getdirentries.\n\t\terr = EIO\n\t}\n\treturn\n}\n\nfunc Mknod(path string, mode uint32, dev uint64) (err error) {\n\treturn Mknodat(AT_FDCWD, path, mode, dev)\n}\n\nfunc Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\treturn sendfile(outfd, infd, offset, count)\n}\n\n//sys\tptrace(request int, pid int, addr uintptr, data int) (err error)\n//sys\tptracePtr(request int, pid int, addr unsafe.Pointer, data int) (err error) = SYS_PTRACE\n\nfunc PtraceAttach(pid int) (err error) {\n\treturn ptrace(PT_ATTACH, pid, 0, 0)\n}\n\nfunc PtraceCont(pid int, signal int) (err error) {\n\treturn ptrace(PT_CONTINUE, pid, 1, signal)\n}\n\nfunc PtraceDetach(pid int) (err error) {\n\treturn ptrace(PT_DETACH, pid, 1, 0)\n}\n\nfunc PtraceGetFpRegs(pid int, fpregsout *FpReg) (err error) {\n\treturn ptracePtr(PT_GETFPREGS, pid, unsafe.Pointer(fpregsout), 0)\n}\n\nfunc PtraceGetRegs(pid int, regsout *Reg) (err error) {\n\treturn ptracePtr(PT_GETREGS, pid, unsafe.Pointer(regsout), 0)\n}\n\nfunc PtraceIO(req int, pid int, offs uintptr, out []byte, countin int) (count int, err error) {\n\tioDesc := PtraceIoDesc{\n\t\tOp:   int32(req),\n\t\tOffs: offs,\n\t}\n\tif countin > 0 {\n\t\t_ = out[:countin] // check bounds\n\t\tioDesc.Addr = &out[0]\n\t} else if out != nil {\n\t\tioDesc.Addr = (*byte)(unsafe.Pointer(&_zero))\n\t}\n\tioDesc.SetLen(countin)\n\n\terr = ptracePtr(PT_IO, pid, unsafe.Pointer(&ioDesc), 0)\n\treturn int(ioDesc.Len), err\n}\n\nfunc PtraceLwpEvents(pid int, enable int) (err error) {\n\treturn ptrace(PT_LWP_EVENTS, pid, 0, enable)\n}\n\nfunc PtraceLwpInfo(pid int, info *PtraceLwpInfoStruct) (err error) {\n\treturn ptracePtr(PT_LWPINFO, pid, unsafe.Pointer(info), int(unsafe.Sizeof(*info)))\n}\n\nfunc PtracePeekData(pid int, addr uintptr, out []byte) (count int, err error) {\n\treturn PtraceIO(PIOD_READ_D, pid, addr, out, SizeofLong)\n}\n\nfunc PtracePeekText(pid int, addr uintptr, out []byte) (count int, err error) {\n\treturn PtraceIO(PIOD_READ_I, pid, addr, out, SizeofLong)\n}\n\nfunc PtracePokeData(pid int, addr uintptr, data []byte) (count int, err error) {\n\treturn PtraceIO(PIOD_WRITE_D, pid, addr, data, SizeofLong)\n}\n\nfunc PtracePokeText(pid int, addr uintptr, data []byte) (count int, err error) {\n\treturn PtraceIO(PIOD_WRITE_I, pid, addr, data, SizeofLong)\n}\n\nfunc PtraceSetRegs(pid int, regs *Reg) (err error) {\n\treturn ptracePtr(PT_SETREGS, pid, unsafe.Pointer(regs), 0)\n}\n\nfunc PtraceSingleStep(pid int) (err error) {\n\treturn ptrace(PT_STEP, pid, 1, 0)\n}\n\nfunc Dup3(oldfd, newfd, flags int) error {\n\tif oldfd == newfd || flags&^O_CLOEXEC != 0 {\n\t\treturn EINVAL\n\t}\n\thow := F_DUP2FD\n\tif flags&O_CLOEXEC != 0 {\n\t\thow = F_DUP2FD_CLOEXEC\n\t}\n\t_, err := fcntl(oldfd, how, newfd)\n\treturn err\n}\n\n/*\n * Exposed directly\n */\n//sys\tAccess(path string, mode uint32) (err error)\n//sys\tAdjtime(delta *Timeval, olddelta *Timeval) (err error)\n//sys\tCapEnter() (err error)\n//sys\tcapRightsGet(version int, fd int, rightsp *CapRights) (err error) = SYS___CAP_RIGHTS_GET\n//sys\tcapRightsLimit(fd int, rightsp *CapRights) (err error)\n//sys\tChdir(path string) (err error)\n//sys\tChflags(path string, flags int) (err error)\n//sys\tChmod(path string, mode uint32) (err error)\n//sys\tChown(path string, uid int, gid int) (err error)\n//sys\tChroot(path string) (err error)\n//sys\tClockGettime(clockid int32, time *Timespec) (err error)\n//sys\tClose(fd int) (err error)\n//sys\tDup(fd int) (nfd int, err error)\n//sys\tDup2(from int, to int) (err error)\n//sys\tExit(code int)\n//sys\tExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error)\n//sys\tExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error)\n//sys\tExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error)\n//sys\tExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error)\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_POSIX_FADVISE\n//sys\tFaccessat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchdir(fd int) (err error)\n//sys\tFchflags(fd int, flags int) (err error)\n//sys\tFchmod(fd int, mode uint32) (err error)\n//sys\tFchmodat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFchownat(dirfd int, path string, uid int, gid int, flags int) (err error)\n//sys\tFlock(fd int, how int) (err error)\n//sys\tFpathconf(fd int, name int) (val int, err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(fd int, path string, stat *Stat_t, flags int) (err error)\n//sys\tFstatfs(fd int, stat *Statfs_t) (err error)\n//sys\tFsync(fd int) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sys\tgetdirentries(fd int, buf []byte, basep *uint64) (n int, err error)\n//sys\tGetdtablesize() (size int)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (uid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetpgid(pid int) (pgid int, err error)\n//sysnb\tGetpgrp() (pgrp int)\n//sysnb\tGetpid() (pid int)\n//sysnb\tGetppid() (ppid int)\n//sys\tGetpriority(which int, who int) (prio int, err error)\n//sysnb\tGetrlimit(which int, lim *Rlimit) (err error)\n//sysnb\tGetrusage(who int, rusage *Rusage) (err error)\n//sysnb\tGetsid(pid int) (sid int, err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tIssetugid() (tainted bool)\n//sys\tKill(pid int, signum syscall.Signal) (err error)\n//sys\tKqueue() (fd int, err error)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tLink(path string, link string) (err error)\n//sys\tLinkat(pathfd int, path string, linkfd int, link string, flags int) (err error)\n//sys\tListen(s int, backlog int) (err error)\n//sys\tMkdir(path string, mode uint32) (err error)\n//sys\tMkdirat(dirfd int, path string, mode uint32) (err error)\n//sys\tMkfifo(path string, mode uint32) (err error)\n//sys\tMknodat(fd int, path string, mode uint32, dev uint64) (err error)\n//sys\tNanosleep(time *Timespec, leftover *Timespec) (err error)\n//sys\tOpen(path string, mode int, perm uint32) (fd int, err error)\n//sys\tOpenat(fdat int, path string, mode int, perm uint32) (fd int, err error)\n//sys\tPathconf(path string, name int) (val int, err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error)\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error)\n//sys\tread(fd int, p []byte) (n int, err error)\n//sys\tReadlink(path string, buf []byte) (n int, err error)\n//sys\tReadlinkat(dirfd int, path string, buf []byte) (n int, err error)\n//sys\tRename(from string, to string) (err error)\n//sys\tRenameat(fromfd int, from string, tofd int, to string) (err error)\n//sys\tRevoke(path string) (err error)\n//sys\tRmdir(path string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)\n//sysnb\tSetegid(egid int) (err error)\n//sysnb\tSeteuid(euid int) (err error)\n//sysnb\tSetgid(gid int) (err error)\n//sys\tSetlogin(name string) (err error)\n//sysnb\tSetpgid(pid int, pgid int) (err error)\n//sys\tSetpriority(which int, who int, prio int) (err error)\n//sysnb\tSetregid(rgid int, egid int) (err error)\n//sysnb\tSetreuid(ruid int, euid int) (err error)\n//sysnb\tSetresgid(rgid int, egid int, sgid int) (err error)\n//sysnb\tSetresuid(ruid int, euid int, suid int) (err error)\n//sysnb\tSetsid() (pid int, err error)\n//sysnb\tSettimeofday(tp *Timeval) (err error)\n//sysnb\tSetuid(uid int) (err error)\n//sys\tStatfs(path string, stat *Statfs_t) (err error)\n//sys\tSymlink(path string, link string) (err error)\n//sys\tSymlinkat(oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSync() (err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\tUmask(newmask int) (oldmask int)\n//sys\tUndelete(path string) (err error)\n//sys\tUnlink(path string) (err error)\n//sys\tUnlinkat(dirfd int, path string, flags int) (err error)\n//sys\tUnmount(path string, flags int) (err error)\n//sys\twrite(fd int, p []byte) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)\n//sys\tmunmap(addr uintptr, length uintptr) (err error)\n//sys\taccept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error)\n//sys\tutimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build 386 && freebsd\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: int32(sec), Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: int32(sec), Usec: int32(usec)}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint32(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc (d *PtraceIoDesc) SetLen(length int) {\n\td.Len = uint32(length)\n}\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tvar writtenOut uint64 = 0\n\t_, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr((*offset)>>32), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0)\n\n\twritten = int(writtenOut)\n\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\nfunc Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)\n\nfunc PtraceGetFsBase(pid int, fsbase *int64) (err error) {\n\treturn ptracePtr(PT_GETFSBASE, pid, unsafe.Pointer(fsbase), 0)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build amd64 && freebsd\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc (d *PtraceIoDesc) SetLen(length int) {\n\td.Len = uint64(length)\n}\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tvar writtenOut uint64 = 0\n\t_, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0, 0)\n\n\twritten = int(writtenOut)\n\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\nfunc Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)\n\nfunc PtraceGetFsBase(pid int, fsbase *int64) (err error) {\n\treturn ptracePtr(PT_GETFSBASE, pid, unsafe.Pointer(fsbase), 0)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build arm && freebsd\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: int32(usec)}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint32(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc (d *PtraceIoDesc) SetLen(length int) {\n\td.Len = uint32(length)\n}\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tvar writtenOut uint64 = 0\n\t_, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr((*offset)>>32), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0)\n\n\twritten = int(writtenOut)\n\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\nfunc Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build arm64 && freebsd\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc (d *PtraceIoDesc) SetLen(length int) {\n\td.Len = uint64(length)\n}\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tvar writtenOut uint64 = 0\n\t_, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0, 0)\n\n\twritten = int(writtenOut)\n\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\nfunc Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/syscall_freebsd_riscv64.go",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build riscv64 && freebsd\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc (d *PtraceIoDesc) SetLen(length int) {\n\td.Len = uint64(length)\n}\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tvar writtenOut uint64 = 0\n\t_, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0, 0)\n\n\twritten = int(writtenOut)\n\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\nfunc Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/syscall_hurd.go",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build hurd\n\npackage unix\n\n/*\n#include <stdint.h>\nint ioctl(int, unsigned long int, uintptr_t);\n*/\nimport \"C\"\nimport \"unsafe\"\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\tr0, er := C.ioctl(C.int(fd), C.ulong(req), C.uintptr_t(arg))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\tr0, er := C.ioctl(C.int(fd), C.ulong(req), C.uintptr_t(uintptr(arg)))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/syscall_hurd_386.go",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build 386 && hurd\n\npackage unix\n\nconst (\n\tTIOCGETA = 0x62251713\n)\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/syscall_illumos.go",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// illumos system calls not present on Solaris.\n\n//go:build amd64 && illumos\n\npackage unix\n\nimport (\n\t\"unsafe\"\n)\n\nfunc bytes2iovec(bs [][]byte) []Iovec {\n\tiovecs := make([]Iovec, len(bs))\n\tfor i, b := range bs {\n\t\tiovecs[i].SetLen(len(b))\n\t\tif len(b) > 0 {\n\t\t\tiovecs[i].Base = &b[0]\n\t\t} else {\n\t\t\tiovecs[i].Base = (*byte)(unsafe.Pointer(&_zero))\n\t\t}\n\t}\n\treturn iovecs\n}\n\n//sys\treadv(fd int, iovs []Iovec) (n int, err error)\n\nfunc Readv(fd int, iovs [][]byte) (n int, err error) {\n\tiovecs := bytes2iovec(iovs)\n\tn, err = readv(fd, iovecs)\n\treturn n, err\n}\n\n//sys\tpreadv(fd int, iovs []Iovec, off int64) (n int, err error)\n\nfunc Preadv(fd int, iovs [][]byte, off int64) (n int, err error) {\n\tiovecs := bytes2iovec(iovs)\n\tn, err = preadv(fd, iovecs, off)\n\treturn n, err\n}\n\n//sys\twritev(fd int, iovs []Iovec) (n int, err error)\n\nfunc Writev(fd int, iovs [][]byte) (n int, err error) {\n\tiovecs := bytes2iovec(iovs)\n\tn, err = writev(fd, iovecs)\n\treturn n, err\n}\n\n//sys\tpwritev(fd int, iovs []Iovec, off int64) (n int, err error)\n\nfunc Pwritev(fd int, iovs [][]byte, off int64) (n int, err error) {\n\tiovecs := bytes2iovec(iovs)\n\tn, err = pwritev(fd, iovecs, off)\n\treturn n, err\n}\n\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) = libsocket.accept4\n\nfunc Accept4(fd int, flags int) (nfd int, sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tnfd, err = accept4(fd, &rsa, &len, flags)\n\tif err != nil {\n\t\treturn\n\t}\n\tif len > SizeofSockaddrAny {\n\t\tpanic(\"RawSockaddrAny too small\")\n\t}\n\tsa, err = anyToSockaddr(fd, &rsa)\n\tif err != nil {\n\t\tClose(nfd)\n\t\tnfd = 0\n\t}\n\treturn\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/syscall_linux.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Linux system calls.\n// This file is compiled as ordinary Go code,\n// but it is also input to mksyscall,\n// which parses the //sys lines and generates system call stubs.\n// Note that sometimes we use a lowercase //sys name and\n// wrap it in our own nicer implementation.\n\npackage unix\n\nimport (\n\t\"encoding/binary\"\n\t\"slices\"\n\t\"strconv\"\n\t\"syscall\"\n\t\"time\"\n\t\"unsafe\"\n)\n\n/*\n * Wrapped\n */\n\nfunc Access(path string, mode uint32) (err error) {\n\treturn Faccessat(AT_FDCWD, path, mode, 0)\n}\n\nfunc Chmod(path string, mode uint32) (err error) {\n\treturn Fchmodat(AT_FDCWD, path, mode, 0)\n}\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\treturn Fchownat(AT_FDCWD, path, uid, gid, 0)\n}\n\nfunc Creat(path string, mode uint32) (fd int, err error) {\n\treturn Open(path, O_CREAT|O_WRONLY|O_TRUNC, mode)\n}\n\nfunc EpollCreate(size int) (fd int, err error) {\n\tif size <= 0 {\n\t\treturn -1, EINVAL\n\t}\n\treturn EpollCreate1(0)\n}\n\n//sys\tFanotifyInit(flags uint, event_f_flags uint) (fd int, err error)\n//sys\tfanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error)\n\nfunc FanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname string) (err error) {\n\tif pathname == \"\" {\n\t\treturn fanotifyMark(fd, flags, mask, dirFd, nil)\n\t}\n\tp, err := BytePtrFromString(pathname)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn fanotifyMark(fd, flags, mask, dirFd, p)\n}\n\n//sys\tfchmodat(dirfd int, path string, mode uint32) (err error)\n//sys\tfchmodat2(dirfd int, path string, mode uint32, flags int) (err error)\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) error {\n\t// Linux fchmodat doesn't support the flags parameter, but fchmodat2 does.\n\t// Try fchmodat2 if flags are specified.\n\tif flags != 0 {\n\t\terr := fchmodat2(dirfd, path, mode, flags)\n\t\tif err == ENOSYS {\n\t\t\t// fchmodat2 isn't available. If the flags are known to be valid,\n\t\t\t// return EOPNOTSUPP to indicate that fchmodat doesn't support them.\n\t\t\tif flags&^(AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) != 0 {\n\t\t\t\treturn EINVAL\n\t\t\t} else if flags&(AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) != 0 {\n\t\t\t\treturn EOPNOTSUPP\n\t\t\t}\n\t\t}\n\t\treturn err\n\t}\n\treturn fchmodat(dirfd, path, mode)\n}\n\nfunc InotifyInit() (fd int, err error) {\n\treturn InotifyInit1(0)\n}\n\n//sys\tioctl(fd int, req uint, arg uintptr) (err error) = SYS_IOCTL\n//sys\tioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) = SYS_IOCTL\n\n// ioctl itself should not be exposed directly, but additional get/set functions\n// for specific types are permissible. These are defined in ioctl.go and\n// ioctl_linux.go.\n//\n// The third argument to ioctl is often a pointer but sometimes an integer.\n// Callers should use ioctlPtr when the third argument is a pointer and ioctl\n// when the third argument is an integer.\n//\n// TODO: some existing code incorrectly uses ioctl when it should use ioctlPtr.\n\n//sys\tLinkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error)\n\nfunc Link(oldpath string, newpath string) (err error) {\n\treturn Linkat(AT_FDCWD, oldpath, AT_FDCWD, newpath, 0)\n}\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\treturn Mkdirat(AT_FDCWD, path, mode)\n}\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\treturn Mknodat(AT_FDCWD, path, mode, dev)\n}\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\treturn openat(AT_FDCWD, path, mode|O_LARGEFILE, perm)\n}\n\n//sys\topenat(dirfd int, path string, flags int, mode uint32) (fd int, err error)\n\nfunc Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {\n\treturn openat(dirfd, path, flags|O_LARGEFILE, mode)\n}\n\n//sys\topenat2(dirfd int, path string, open_how *OpenHow, size int) (fd int, err error)\n\nfunc Openat2(dirfd int, path string, how *OpenHow) (fd int, err error) {\n\treturn openat2(dirfd, path, how, SizeofOpenHow)\n}\n\nfunc Pipe(p []int) error {\n\treturn Pipe2(p, 0)\n}\n\n//sysnb\tpipe2(p *[2]_C_int, flags int) (err error)\n\nfunc Pipe2(p []int, flags int) error {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\terr := pipe2(&pp, flags)\n\tif err == nil {\n\t\tp[0] = int(pp[0])\n\t\tp[1] = int(pp[1])\n\t}\n\treturn err\n}\n\n//sys\tppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error)\n\nfunc Ppoll(fds []PollFd, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tif len(fds) == 0 {\n\t\treturn ppoll(nil, 0, timeout, sigmask)\n\t}\n\treturn ppoll(&fds[0], len(fds), timeout, sigmask)\n}\n\nfunc Poll(fds []PollFd, timeout int) (n int, err error) {\n\tvar ts *Timespec\n\tif timeout >= 0 {\n\t\tts = new(Timespec)\n\t\t*ts = NsecToTimespec(int64(timeout) * 1e6)\n\t}\n\treturn Ppoll(fds, ts, nil)\n}\n\n//sys\tReadlinkat(dirfd int, path string, buf []byte) (n int, err error)\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\treturn Readlinkat(AT_FDCWD, path, buf)\n}\n\nfunc Rename(oldpath string, newpath string) (err error) {\n\treturn Renameat(AT_FDCWD, oldpath, AT_FDCWD, newpath)\n}\n\nfunc Rmdir(path string) error {\n\treturn Unlinkat(AT_FDCWD, path, AT_REMOVEDIR)\n}\n\n//sys\tSymlinkat(oldpath string, newdirfd int, newpath string) (err error)\n\nfunc Symlink(oldpath string, newpath string) (err error) {\n\treturn Symlinkat(oldpath, AT_FDCWD, newpath)\n}\n\nfunc Unlink(path string) error {\n\treturn Unlinkat(AT_FDCWD, path, 0)\n}\n\n//sys\tUnlinkat(dirfd int, path string, flags int) (err error)\n\nfunc Utimes(path string, tv []Timeval) error {\n\tif tv == nil {\n\t\terr := utimensat(AT_FDCWD, path, nil, 0)\n\t\tif err != ENOSYS {\n\t\t\treturn err\n\t\t}\n\t\treturn utimes(path, nil)\n\t}\n\tif len(tv) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar ts [2]Timespec\n\tts[0] = NsecToTimespec(TimevalToNsec(tv[0]))\n\tts[1] = NsecToTimespec(TimevalToNsec(tv[1]))\n\terr := utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)\n\tif err != ENOSYS {\n\t\treturn err\n\t}\n\treturn utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))\n}\n\n//sys\tutimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error)\n\nfunc UtimesNano(path string, ts []Timespec) error {\n\treturn UtimesNanoAt(AT_FDCWD, path, ts, 0)\n}\n\nfunc UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error {\n\tif ts == nil {\n\t\treturn utimensat(dirfd, path, nil, flags)\n\t}\n\tif len(ts) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags)\n}\n\nfunc Futimesat(dirfd int, path string, tv []Timeval) error {\n\tif tv == nil {\n\t\treturn futimesat(dirfd, path, nil)\n\t}\n\tif len(tv) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn futimesat(dirfd, path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))\n}\n\nfunc Futimes(fd int, tv []Timeval) (err error) {\n\t// Believe it or not, this is the best we can do on Linux\n\t// (and is what glibc does).\n\treturn Utimes(\"/proc/self/fd/\"+strconv.Itoa(fd), tv)\n}\n\nconst ImplementsGetwd = true\n\n//sys\tGetcwd(buf []byte) (n int, err error)\n\nfunc Getwd() (wd string, err error) {\n\tvar buf [PathMax]byte\n\tn, err := Getcwd(buf[0:])\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\t// Getcwd returns the number of bytes written to buf, including the NUL.\n\tif n < 1 || n > len(buf) || buf[n-1] != 0 {\n\t\treturn \"\", EINVAL\n\t}\n\t// In some cases, Linux can return a path that starts with the\n\t// \"(unreachable)\" prefix, which can potentially be a valid relative\n\t// path. To work around that, return ENOENT if path is not absolute.\n\tif buf[0] != '/' {\n\t\treturn \"\", ENOENT\n\t}\n\n\treturn string(buf[0 : n-1]), nil\n}\n\nfunc Getgroups() (gids []int, err error) {\n\tn, err := getgroups(0, nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif n == 0 {\n\t\treturn nil, nil\n\t}\n\n\t// Sanity check group count. Max is 1<<16 on Linux.\n\tif n < 0 || n > 1<<20 {\n\t\treturn nil, EINVAL\n\t}\n\n\ta := make([]_Gid_t, n)\n\tn, err = getgroups(n, &a[0])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tgids = make([]int, n)\n\tfor i, v := range a[0:n] {\n\t\tgids[i] = int(v)\n\t}\n\treturn\n}\n\nfunc Setgroups(gids []int) (err error) {\n\tif len(gids) == 0 {\n\t\treturn setgroups(0, nil)\n\t}\n\n\ta := make([]_Gid_t, len(gids))\n\tfor i, v := range gids {\n\t\ta[i] = _Gid_t(v)\n\t}\n\treturn setgroups(len(a), &a[0])\n}\n\ntype WaitStatus uint32\n\n// Wait status is 7 bits at bottom, either 0 (exited),\n// 0x7F (stopped), or a signal number that caused an exit.\n// The 0x80 bit is whether there was a core dump.\n// An extra number (exit code, signal causing a stop)\n// is in the high bits. At least that's the idea.\n// There are various irregularities. For example, the\n// \"continued\" status is 0xFFFF, distinguishing itself\n// from stopped via the core dump bit.\n\nconst (\n\tmask    = 0x7F\n\tcore    = 0x80\n\texited  = 0x00\n\tstopped = 0x7F\n\tshift   = 8\n)\n\nfunc (w WaitStatus) Exited() bool { return w&mask == exited }\n\nfunc (w WaitStatus) Signaled() bool { return w&mask != stopped && w&mask != exited }\n\nfunc (w WaitStatus) Stopped() bool { return w&0xFF == stopped }\n\nfunc (w WaitStatus) Continued() bool { return w == 0xFFFF }\n\nfunc (w WaitStatus) CoreDump() bool { return w.Signaled() && w&core != 0 }\n\nfunc (w WaitStatus) ExitStatus() int {\n\tif !w.Exited() {\n\t\treturn -1\n\t}\n\treturn int(w>>shift) & 0xFF\n}\n\nfunc (w WaitStatus) Signal() syscall.Signal {\n\tif !w.Signaled() {\n\t\treturn -1\n\t}\n\treturn syscall.Signal(w & mask)\n}\n\nfunc (w WaitStatus) StopSignal() syscall.Signal {\n\tif !w.Stopped() {\n\t\treturn -1\n\t}\n\treturn syscall.Signal(w>>shift) & 0xFF\n}\n\nfunc (w WaitStatus) TrapCause() int {\n\tif w.StopSignal() != SIGTRAP {\n\t\treturn -1\n\t}\n\treturn int(w>>shift) >> 8\n}\n\n//sys\twait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error)\n\nfunc Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) {\n\tvar status _C_int\n\twpid, err = wait4(pid, &status, options, rusage)\n\tif wstatus != nil {\n\t\t*wstatus = WaitStatus(status)\n\t}\n\treturn\n}\n\n//sys\tWaitid(idType int, id int, info *Siginfo, options int, rusage *Rusage) (err error)\n\nfunc Mkfifo(path string, mode uint32) error {\n\treturn Mknod(path, mode|S_IFIFO, 0)\n}\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) error {\n\treturn Mknodat(dirfd, path, mode|S_IFIFO, 0)\n}\n\nfunc (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Port < 0 || sa.Port > 0xFFFF {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_INET\n\tp := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))\n\tp[0] = byte(sa.Port >> 8)\n\tp[1] = byte(sa.Port)\n\tsa.raw.Addr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrInet4, nil\n}\n\nfunc (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Port < 0 || sa.Port > 0xFFFF {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_INET6\n\tp := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))\n\tp[0] = byte(sa.Port >> 8)\n\tp[1] = byte(sa.Port)\n\tsa.raw.Scope_id = sa.ZoneId\n\tsa.raw.Addr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrInet6, nil\n}\n\nfunc (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tname := sa.Name\n\tn := len(name)\n\tif n >= len(sa.raw.Path) {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_UNIX\n\tfor i := range n {\n\t\tsa.raw.Path[i] = int8(name[i])\n\t}\n\t// length is family (uint16), name, NUL.\n\tsl := _Socklen(2)\n\tif n > 0 {\n\t\tsl += _Socklen(n) + 1\n\t}\n\tif sa.raw.Path[0] == '@' || (sa.raw.Path[0] == 0 && sl > 3) {\n\t\t// Check sl > 3 so we don't change unnamed socket behavior.\n\t\tsa.raw.Path[0] = 0\n\t\t// Don't count trailing NUL for abstract address.\n\t\tsl--\n\t}\n\n\treturn unsafe.Pointer(&sa.raw), sl, nil\n}\n\n// SockaddrLinklayer implements the Sockaddr interface for AF_PACKET type sockets.\ntype SockaddrLinklayer struct {\n\tProtocol uint16\n\tIfindex  int\n\tHatype   uint16\n\tPkttype  uint8\n\tHalen    uint8\n\tAddr     [8]byte\n\traw      RawSockaddrLinklayer\n}\n\nfunc (sa *SockaddrLinklayer) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Ifindex < 0 || sa.Ifindex > 0x7fffffff {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_PACKET\n\tsa.raw.Protocol = sa.Protocol\n\tsa.raw.Ifindex = int32(sa.Ifindex)\n\tsa.raw.Hatype = sa.Hatype\n\tsa.raw.Pkttype = sa.Pkttype\n\tsa.raw.Halen = sa.Halen\n\tsa.raw.Addr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrLinklayer, nil\n}\n\n// SockaddrNetlink implements the Sockaddr interface for AF_NETLINK type sockets.\ntype SockaddrNetlink struct {\n\tFamily uint16\n\tPad    uint16\n\tPid    uint32\n\tGroups uint32\n\traw    RawSockaddrNetlink\n}\n\nfunc (sa *SockaddrNetlink) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tsa.raw.Family = AF_NETLINK\n\tsa.raw.Pad = sa.Pad\n\tsa.raw.Pid = sa.Pid\n\tsa.raw.Groups = sa.Groups\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrNetlink, nil\n}\n\n// SockaddrHCI implements the Sockaddr interface for AF_BLUETOOTH type sockets\n// using the HCI protocol.\ntype SockaddrHCI struct {\n\tDev     uint16\n\tChannel uint16\n\traw     RawSockaddrHCI\n}\n\nfunc (sa *SockaddrHCI) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tsa.raw.Family = AF_BLUETOOTH\n\tsa.raw.Dev = sa.Dev\n\tsa.raw.Channel = sa.Channel\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrHCI, nil\n}\n\n// SockaddrL2 implements the Sockaddr interface for AF_BLUETOOTH type sockets\n// using the L2CAP protocol.\ntype SockaddrL2 struct {\n\tPSM      uint16\n\tCID      uint16\n\tAddr     [6]uint8\n\tAddrType uint8\n\traw      RawSockaddrL2\n}\n\nfunc (sa *SockaddrL2) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tsa.raw.Family = AF_BLUETOOTH\n\tpsm := (*[2]byte)(unsafe.Pointer(&sa.raw.Psm))\n\tpsm[0] = byte(sa.PSM)\n\tpsm[1] = byte(sa.PSM >> 8)\n\tfor i := range len(sa.Addr) {\n\t\tsa.raw.Bdaddr[i] = sa.Addr[len(sa.Addr)-1-i]\n\t}\n\tcid := (*[2]byte)(unsafe.Pointer(&sa.raw.Cid))\n\tcid[0] = byte(sa.CID)\n\tcid[1] = byte(sa.CID >> 8)\n\tsa.raw.Bdaddr_type = sa.AddrType\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrL2, nil\n}\n\n// SockaddrRFCOMM implements the Sockaddr interface for AF_BLUETOOTH type sockets\n// using the RFCOMM protocol.\n//\n// Server example:\n//\n//\tfd, _ := Socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM)\n//\t_ = unix.Bind(fd, &unix.SockaddrRFCOMM{\n//\t\tChannel: 1,\n//\t\tAddr:    [6]uint8{0, 0, 0, 0, 0, 0}, // BDADDR_ANY or 00:00:00:00:00:00\n//\t})\n//\t_ = Listen(fd, 1)\n//\tnfd, sa, _ := Accept(fd)\n//\tfmt.Printf(\"conn addr=%v fd=%d\", sa.(*unix.SockaddrRFCOMM).Addr, nfd)\n//\tRead(nfd, buf)\n//\n// Client example:\n//\n//\tfd, _ := Socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM)\n//\t_ = Connect(fd, &SockaddrRFCOMM{\n//\t\tChannel: 1,\n//\t\tAddr:    [6]byte{0x11, 0x22, 0x33, 0xaa, 0xbb, 0xcc}, // CC:BB:AA:33:22:11\n//\t})\n//\tWrite(fd, []byte(`hello`))\ntype SockaddrRFCOMM struct {\n\t// Addr represents a bluetooth address, byte ordering is little-endian.\n\tAddr [6]uint8\n\n\t// Channel is a designated bluetooth channel, only 1-30 are available for use.\n\t// Since Linux 2.6.7 and further zero value is the first available channel.\n\tChannel uint8\n\n\traw RawSockaddrRFCOMM\n}\n\nfunc (sa *SockaddrRFCOMM) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tsa.raw.Family = AF_BLUETOOTH\n\tsa.raw.Channel = sa.Channel\n\tsa.raw.Bdaddr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrRFCOMM, nil\n}\n\n// SockaddrCAN implements the Sockaddr interface for AF_CAN type sockets.\n// The RxID and TxID fields are used for transport protocol addressing in\n// (CAN_TP16, CAN_TP20, CAN_MCNET, and CAN_ISOTP), they can be left with\n// zero values for CAN_RAW and CAN_BCM sockets as they have no meaning.\n//\n// The SockaddrCAN struct must be bound to the socket file descriptor\n// using Bind before the CAN socket can be used.\n//\n//\t// Read one raw CAN frame\n//\tfd, _ := Socket(AF_CAN, SOCK_RAW, CAN_RAW)\n//\taddr := &SockaddrCAN{Ifindex: index}\n//\tBind(fd, addr)\n//\tframe := make([]byte, 16)\n//\tRead(fd, frame)\n//\n// The full SocketCAN documentation can be found in the linux kernel\n// archives at: https://www.kernel.org/doc/Documentation/networking/can.txt\ntype SockaddrCAN struct {\n\tIfindex int\n\tRxID    uint32\n\tTxID    uint32\n\traw     RawSockaddrCAN\n}\n\nfunc (sa *SockaddrCAN) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Ifindex < 0 || sa.Ifindex > 0x7fffffff {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_CAN\n\tsa.raw.Ifindex = int32(sa.Ifindex)\n\trx := (*[4]byte)(unsafe.Pointer(&sa.RxID))\n\tfor i := range 4 {\n\t\tsa.raw.Addr[i] = rx[i]\n\t}\n\ttx := (*[4]byte)(unsafe.Pointer(&sa.TxID))\n\tfor i := range 4 {\n\t\tsa.raw.Addr[i+4] = tx[i]\n\t}\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrCAN, nil\n}\n\n// SockaddrCANJ1939 implements the Sockaddr interface for AF_CAN using J1939\n// protocol (https://en.wikipedia.org/wiki/SAE_J1939). For more information\n// on the purposes of the fields, check the official linux kernel documentation\n// available here: https://www.kernel.org/doc/Documentation/networking/j1939.rst\ntype SockaddrCANJ1939 struct {\n\tIfindex int\n\tName    uint64\n\tPGN     uint32\n\tAddr    uint8\n\traw     RawSockaddrCAN\n}\n\nfunc (sa *SockaddrCANJ1939) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Ifindex < 0 || sa.Ifindex > 0x7fffffff {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_CAN\n\tsa.raw.Ifindex = int32(sa.Ifindex)\n\tn := (*[8]byte)(unsafe.Pointer(&sa.Name))\n\tfor i := range 8 {\n\t\tsa.raw.Addr[i] = n[i]\n\t}\n\tp := (*[4]byte)(unsafe.Pointer(&sa.PGN))\n\tfor i := range 4 {\n\t\tsa.raw.Addr[i+8] = p[i]\n\t}\n\tsa.raw.Addr[12] = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrCAN, nil\n}\n\n// SockaddrALG implements the Sockaddr interface for AF_ALG type sockets.\n// SockaddrALG enables userspace access to the Linux kernel's cryptography\n// subsystem. The Type and Name fields specify which type of hash or cipher\n// should be used with a given socket.\n//\n// To create a file descriptor that provides access to a hash or cipher, both\n// Bind and Accept must be used. Once the setup process is complete, input\n// data can be written to the socket, processed by the kernel, and then read\n// back as hash output or ciphertext.\n//\n// Here is an example of using an AF_ALG socket with SHA1 hashing.\n// The initial socket setup process is as follows:\n//\n//\t// Open a socket to perform SHA1 hashing.\n//\tfd, _ := unix.Socket(unix.AF_ALG, unix.SOCK_SEQPACKET, 0)\n//\taddr := &unix.SockaddrALG{Type: \"hash\", Name: \"sha1\"}\n//\tunix.Bind(fd, addr)\n//\t// Note: unix.Accept does not work at this time; must invoke accept()\n//\t// manually using unix.Syscall.\n//\thashfd, _, _ := unix.Syscall(unix.SYS_ACCEPT, uintptr(fd), 0, 0)\n//\n// Once a file descriptor has been returned from Accept, it may be used to\n// perform SHA1 hashing. The descriptor is not safe for concurrent use, but\n// may be re-used repeatedly with subsequent Write and Read operations.\n//\n// When hashing a small byte slice or string, a single Write and Read may\n// be used:\n//\n//\t// Assume hashfd is already configured using the setup process.\n//\thash := os.NewFile(hashfd, \"sha1\")\n//\t// Hash an input string and read the results. Each Write discards\n//\t// previous hash state. Read always reads the current state.\n//\tb := make([]byte, 20)\n//\tfor i := 0; i < 2; i++ {\n//\t    io.WriteString(hash, \"Hello, world.\")\n//\t    hash.Read(b)\n//\t    fmt.Println(hex.EncodeToString(b))\n//\t}\n//\t// Output:\n//\t// 2ae01472317d1935a84797ec1983ae243fc6aa28\n//\t// 2ae01472317d1935a84797ec1983ae243fc6aa28\n//\n// For hashing larger byte slices, or byte streams such as those read from\n// a file or socket, use Sendto with MSG_MORE to instruct the kernel to update\n// the hash digest instead of creating a new one for a given chunk and finalizing it.\n//\n//\t// Assume hashfd and addr are already configured using the setup process.\n//\thash := os.NewFile(hashfd, \"sha1\")\n//\t// Hash the contents of a file.\n//\tf, _ := os.Open(\"/tmp/linux-4.10-rc7.tar.xz\")\n//\tb := make([]byte, 4096)\n//\tfor {\n//\t    n, err := f.Read(b)\n//\t    if err == io.EOF {\n//\t        break\n//\t    }\n//\t    unix.Sendto(hashfd, b[:n], unix.MSG_MORE, addr)\n//\t}\n//\thash.Read(b)\n//\tfmt.Println(hex.EncodeToString(b))\n//\t// Output: 85cdcad0c06eef66f805ecce353bec9accbeecc5\n//\n// For more information, see: http://www.chronox.de/crypto-API/crypto/userspace-if.html.\ntype SockaddrALG struct {\n\tType    string\n\tName    string\n\tFeature uint32\n\tMask    uint32\n\traw     RawSockaddrALG\n}\n\nfunc (sa *SockaddrALG) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\t// Leave room for NUL byte terminator.\n\tif len(sa.Type) > len(sa.raw.Type)-1 {\n\t\treturn nil, 0, EINVAL\n\t}\n\tif len(sa.Name) > len(sa.raw.Name)-1 {\n\t\treturn nil, 0, EINVAL\n\t}\n\n\tsa.raw.Family = AF_ALG\n\tsa.raw.Feat = sa.Feature\n\tsa.raw.Mask = sa.Mask\n\n\tcopy(sa.raw.Type[:], sa.Type)\n\tcopy(sa.raw.Name[:], sa.Name)\n\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrALG, nil\n}\n\n// SockaddrVM implements the Sockaddr interface for AF_VSOCK type sockets.\n// SockaddrVM provides access to Linux VM sockets: a mechanism that enables\n// bidirectional communication between a hypervisor and its guest virtual\n// machines.\ntype SockaddrVM struct {\n\t// CID and Port specify a context ID and port address for a VM socket.\n\t// Guests have a unique CID, and hosts may have a well-known CID of:\n\t//  - VMADDR_CID_HYPERVISOR: refers to the hypervisor process.\n\t//  - VMADDR_CID_LOCAL: refers to local communication (loopback).\n\t//  - VMADDR_CID_HOST: refers to other processes on the host.\n\tCID   uint32\n\tPort  uint32\n\tFlags uint8\n\traw   RawSockaddrVM\n}\n\nfunc (sa *SockaddrVM) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tsa.raw.Family = AF_VSOCK\n\tsa.raw.Port = sa.Port\n\tsa.raw.Cid = sa.CID\n\tsa.raw.Flags = sa.Flags\n\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrVM, nil\n}\n\ntype SockaddrXDP struct {\n\tFlags        uint16\n\tIfindex      uint32\n\tQueueID      uint32\n\tSharedUmemFD uint32\n\traw          RawSockaddrXDP\n}\n\nfunc (sa *SockaddrXDP) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tsa.raw.Family = AF_XDP\n\tsa.raw.Flags = sa.Flags\n\tsa.raw.Ifindex = sa.Ifindex\n\tsa.raw.Queue_id = sa.QueueID\n\tsa.raw.Shared_umem_fd = sa.SharedUmemFD\n\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrXDP, nil\n}\n\n// This constant mirrors the #define of PX_PROTO_OE in\n// linux/if_pppox.h. We're defining this by hand here instead of\n// autogenerating through mkerrors.sh because including\n// linux/if_pppox.h causes some declaration conflicts with other\n// includes (linux/if_pppox.h includes linux/in.h, which conflicts\n// with netinet/in.h). Given that we only need a single zero constant\n// out of that file, it's cleaner to just define it by hand here.\nconst px_proto_oe = 0\n\ntype SockaddrPPPoE struct {\n\tSID    uint16\n\tRemote []byte\n\tDev    string\n\traw    RawSockaddrPPPoX\n}\n\nfunc (sa *SockaddrPPPoE) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif len(sa.Remote) != 6 {\n\t\treturn nil, 0, EINVAL\n\t}\n\tif len(sa.Dev) > IFNAMSIZ-1 {\n\t\treturn nil, 0, EINVAL\n\t}\n\n\t*(*uint16)(unsafe.Pointer(&sa.raw[0])) = AF_PPPOX\n\t// This next field is in host-endian byte order. We can't use the\n\t// same unsafe pointer cast as above, because this value is not\n\t// 32-bit aligned and some architectures don't allow unaligned\n\t// access.\n\t//\n\t// However, the value of px_proto_oe is 0, so we can use\n\t// encoding/binary helpers to write the bytes without worrying\n\t// about the ordering.\n\tbinary.BigEndian.PutUint32(sa.raw[2:6], px_proto_oe)\n\t// This field is deliberately big-endian, unlike the previous\n\t// one. The kernel expects SID to be in network byte order.\n\tbinary.BigEndian.PutUint16(sa.raw[6:8], sa.SID)\n\tcopy(sa.raw[8:14], sa.Remote)\n\tclear(sa.raw[14 : 14+IFNAMSIZ])\n\tcopy(sa.raw[14:], sa.Dev)\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrPPPoX, nil\n}\n\n// SockaddrTIPC implements the Sockaddr interface for AF_TIPC type sockets.\n// For more information on TIPC, see: http://tipc.sourceforge.net/.\ntype SockaddrTIPC struct {\n\t// Scope is the publication scopes when binding service/service range.\n\t// Should be set to TIPC_CLUSTER_SCOPE or TIPC_NODE_SCOPE.\n\tScope int\n\n\t// Addr is the type of address used to manipulate a socket. Addr must be\n\t// one of:\n\t//  - *TIPCSocketAddr: \"id\" variant in the C addr union\n\t//  - *TIPCServiceRange: \"nameseq\" variant in the C addr union\n\t//  - *TIPCServiceName: \"name\" variant in the C addr union\n\t//\n\t// If nil, EINVAL will be returned when the structure is used.\n\tAddr TIPCAddr\n\n\traw RawSockaddrTIPC\n}\n\n// TIPCAddr is implemented by types that can be used as an address for\n// SockaddrTIPC. It is only implemented by *TIPCSocketAddr, *TIPCServiceRange,\n// and *TIPCServiceName.\ntype TIPCAddr interface {\n\ttipcAddrtype() uint8\n\ttipcAddr() [12]byte\n}\n\nfunc (sa *TIPCSocketAddr) tipcAddr() [12]byte {\n\tvar out [12]byte\n\tcopy(out[:], (*(*[unsafe.Sizeof(TIPCSocketAddr{})]byte)(unsafe.Pointer(sa)))[:])\n\treturn out\n}\n\nfunc (sa *TIPCSocketAddr) tipcAddrtype() uint8 { return TIPC_SOCKET_ADDR }\n\nfunc (sa *TIPCServiceRange) tipcAddr() [12]byte {\n\tvar out [12]byte\n\tcopy(out[:], (*(*[unsafe.Sizeof(TIPCServiceRange{})]byte)(unsafe.Pointer(sa)))[:])\n\treturn out\n}\n\nfunc (sa *TIPCServiceRange) tipcAddrtype() uint8 { return TIPC_SERVICE_RANGE }\n\nfunc (sa *TIPCServiceName) tipcAddr() [12]byte {\n\tvar out [12]byte\n\tcopy(out[:], (*(*[unsafe.Sizeof(TIPCServiceName{})]byte)(unsafe.Pointer(sa)))[:])\n\treturn out\n}\n\nfunc (sa *TIPCServiceName) tipcAddrtype() uint8 { return TIPC_SERVICE_ADDR }\n\nfunc (sa *SockaddrTIPC) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Addr == nil {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_TIPC\n\tsa.raw.Scope = int8(sa.Scope)\n\tsa.raw.Addrtype = sa.Addr.tipcAddrtype()\n\tsa.raw.Addr = sa.Addr.tipcAddr()\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrTIPC, nil\n}\n\n// SockaddrL2TPIP implements the Sockaddr interface for IPPROTO_L2TP/AF_INET sockets.\ntype SockaddrL2TPIP struct {\n\tAddr   [4]byte\n\tConnId uint32\n\traw    RawSockaddrL2TPIP\n}\n\nfunc (sa *SockaddrL2TPIP) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tsa.raw.Family = AF_INET\n\tsa.raw.Conn_id = sa.ConnId\n\tsa.raw.Addr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrL2TPIP, nil\n}\n\n// SockaddrL2TPIP6 implements the Sockaddr interface for IPPROTO_L2TP/AF_INET6 sockets.\ntype SockaddrL2TPIP6 struct {\n\tAddr   [16]byte\n\tZoneId uint32\n\tConnId uint32\n\traw    RawSockaddrL2TPIP6\n}\n\nfunc (sa *SockaddrL2TPIP6) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tsa.raw.Family = AF_INET6\n\tsa.raw.Conn_id = sa.ConnId\n\tsa.raw.Scope_id = sa.ZoneId\n\tsa.raw.Addr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrL2TPIP6, nil\n}\n\n// SockaddrIUCV implements the Sockaddr interface for AF_IUCV sockets.\ntype SockaddrIUCV struct {\n\tUserID string\n\tName   string\n\traw    RawSockaddrIUCV\n}\n\nfunc (sa *SockaddrIUCV) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tsa.raw.Family = AF_IUCV\n\t// These are EBCDIC encoded by the kernel, but we still need to pad them\n\t// with blanks. Initializing with blanks allows the caller to feed in either\n\t// a padded or an unpadded string.\n\tfor i := range 8 {\n\t\tsa.raw.Nodeid[i] = ' '\n\t\tsa.raw.User_id[i] = ' '\n\t\tsa.raw.Name[i] = ' '\n\t}\n\tif len(sa.UserID) > 8 || len(sa.Name) > 8 {\n\t\treturn nil, 0, EINVAL\n\t}\n\tfor i, b := range []byte(sa.UserID[:]) {\n\t\tsa.raw.User_id[i] = int8(b)\n\t}\n\tfor i, b := range []byte(sa.Name[:]) {\n\t\tsa.raw.Name[i] = int8(b)\n\t}\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrIUCV, nil\n}\n\ntype SockaddrNFC struct {\n\tDeviceIdx   uint32\n\tTargetIdx   uint32\n\tNFCProtocol uint32\n\traw         RawSockaddrNFC\n}\n\nfunc (sa *SockaddrNFC) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tsa.raw.Sa_family = AF_NFC\n\tsa.raw.Dev_idx = sa.DeviceIdx\n\tsa.raw.Target_idx = sa.TargetIdx\n\tsa.raw.Nfc_protocol = sa.NFCProtocol\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrNFC, nil\n}\n\ntype SockaddrNFCLLCP struct {\n\tDeviceIdx      uint32\n\tTargetIdx      uint32\n\tNFCProtocol    uint32\n\tDestinationSAP uint8\n\tSourceSAP      uint8\n\tServiceName    string\n\traw            RawSockaddrNFCLLCP\n}\n\nfunc (sa *SockaddrNFCLLCP) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tsa.raw.Sa_family = AF_NFC\n\tsa.raw.Dev_idx = sa.DeviceIdx\n\tsa.raw.Target_idx = sa.TargetIdx\n\tsa.raw.Nfc_protocol = sa.NFCProtocol\n\tsa.raw.Dsap = sa.DestinationSAP\n\tsa.raw.Ssap = sa.SourceSAP\n\tif len(sa.ServiceName) > len(sa.raw.Service_name) {\n\t\treturn nil, 0, EINVAL\n\t}\n\tcopy(sa.raw.Service_name[:], sa.ServiceName)\n\tsa.raw.SetServiceNameLen(len(sa.ServiceName))\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrNFCLLCP, nil\n}\n\nvar socketProtocol = func(fd int) (int, error) {\n\treturn GetsockoptInt(fd, SOL_SOCKET, SO_PROTOCOL)\n}\n\nfunc anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {\n\tswitch rsa.Addr.Family {\n\tcase AF_NETLINK:\n\t\tpp := (*RawSockaddrNetlink)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrNetlink)\n\t\tsa.Family = pp.Family\n\t\tsa.Pad = pp.Pad\n\t\tsa.Pid = pp.Pid\n\t\tsa.Groups = pp.Groups\n\t\treturn sa, nil\n\n\tcase AF_PACKET:\n\t\tpp := (*RawSockaddrLinklayer)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrLinklayer)\n\t\tsa.Protocol = pp.Protocol\n\t\tsa.Ifindex = int(pp.Ifindex)\n\t\tsa.Hatype = pp.Hatype\n\t\tsa.Pkttype = pp.Pkttype\n\t\tsa.Halen = pp.Halen\n\t\tsa.Addr = pp.Addr\n\t\treturn sa, nil\n\n\tcase AF_UNIX:\n\t\tpp := (*RawSockaddrUnix)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrUnix)\n\t\tif pp.Path[0] == 0 {\n\t\t\t// \"Abstract\" Unix domain socket.\n\t\t\t// Rewrite leading NUL as @ for textual display.\n\t\t\t// (This is the standard convention.)\n\t\t\t// Not friendly to overwrite in place,\n\t\t\t// but the callers below don't care.\n\t\t\tpp.Path[0] = '@'\n\t\t}\n\n\t\t// Assume path ends at NUL.\n\t\t// This is not technically the Linux semantics for\n\t\t// abstract Unix domain sockets--they are supposed\n\t\t// to be uninterpreted fixed-size binary blobs--but\n\t\t// everyone uses this convention.\n\t\tn := 0\n\t\tfor n < len(pp.Path) && pp.Path[n] != 0 {\n\t\t\tn++\n\t\t}\n\t\tsa.Name = string(unsafe.Slice((*byte)(unsafe.Pointer(&pp.Path[0])), n))\n\t\treturn sa, nil\n\n\tcase AF_INET:\n\t\tproto, err := socketProtocol(fd)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tswitch proto {\n\t\tcase IPPROTO_L2TP:\n\t\t\tpp := (*RawSockaddrL2TPIP)(unsafe.Pointer(rsa))\n\t\t\tsa := new(SockaddrL2TPIP)\n\t\t\tsa.ConnId = pp.Conn_id\n\t\t\tsa.Addr = pp.Addr\n\t\t\treturn sa, nil\n\t\tdefault:\n\t\t\tpp := (*RawSockaddrInet4)(unsafe.Pointer(rsa))\n\t\t\tsa := new(SockaddrInet4)\n\t\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\t\tsa.Addr = pp.Addr\n\t\t\treturn sa, nil\n\t\t}\n\n\tcase AF_INET6:\n\t\tproto, err := socketProtocol(fd)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tswitch proto {\n\t\tcase IPPROTO_L2TP:\n\t\t\tpp := (*RawSockaddrL2TPIP6)(unsafe.Pointer(rsa))\n\t\t\tsa := new(SockaddrL2TPIP6)\n\t\t\tsa.ConnId = pp.Conn_id\n\t\t\tsa.ZoneId = pp.Scope_id\n\t\t\tsa.Addr = pp.Addr\n\t\t\treturn sa, nil\n\t\tdefault:\n\t\t\tpp := (*RawSockaddrInet6)(unsafe.Pointer(rsa))\n\t\t\tsa := new(SockaddrInet6)\n\t\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\t\tsa.ZoneId = pp.Scope_id\n\t\t\tsa.Addr = pp.Addr\n\t\t\treturn sa, nil\n\t\t}\n\n\tcase AF_VSOCK:\n\t\tpp := (*RawSockaddrVM)(unsafe.Pointer(rsa))\n\t\tsa := &SockaddrVM{\n\t\t\tCID:   pp.Cid,\n\t\t\tPort:  pp.Port,\n\t\t\tFlags: pp.Flags,\n\t\t}\n\t\treturn sa, nil\n\tcase AF_BLUETOOTH:\n\t\tproto, err := socketProtocol(fd)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\t// only BTPROTO_L2CAP and BTPROTO_RFCOMM can accept connections\n\t\tswitch proto {\n\t\tcase BTPROTO_L2CAP:\n\t\t\tpp := (*RawSockaddrL2)(unsafe.Pointer(rsa))\n\t\t\tsa := &SockaddrL2{\n\t\t\t\tPSM:      pp.Psm,\n\t\t\t\tCID:      pp.Cid,\n\t\t\t\tAddr:     pp.Bdaddr,\n\t\t\t\tAddrType: pp.Bdaddr_type,\n\t\t\t}\n\t\t\treturn sa, nil\n\t\tcase BTPROTO_RFCOMM:\n\t\t\tpp := (*RawSockaddrRFCOMM)(unsafe.Pointer(rsa))\n\t\t\tsa := &SockaddrRFCOMM{\n\t\t\t\tChannel: pp.Channel,\n\t\t\t\tAddr:    pp.Bdaddr,\n\t\t\t}\n\t\t\treturn sa, nil\n\t\t}\n\tcase AF_XDP:\n\t\tpp := (*RawSockaddrXDP)(unsafe.Pointer(rsa))\n\t\tsa := &SockaddrXDP{\n\t\t\tFlags:        pp.Flags,\n\t\t\tIfindex:      pp.Ifindex,\n\t\t\tQueueID:      pp.Queue_id,\n\t\t\tSharedUmemFD: pp.Shared_umem_fd,\n\t\t}\n\t\treturn sa, nil\n\tcase AF_PPPOX:\n\t\tpp := (*RawSockaddrPPPoX)(unsafe.Pointer(rsa))\n\t\tif binary.BigEndian.Uint32(pp[2:6]) != px_proto_oe {\n\t\t\treturn nil, EINVAL\n\t\t}\n\t\tsa := &SockaddrPPPoE{\n\t\t\tSID:    binary.BigEndian.Uint16(pp[6:8]),\n\t\t\tRemote: pp[8:14],\n\t\t}\n\t\tfor i := 14; i < 14+IFNAMSIZ; i++ {\n\t\t\tif pp[i] == 0 {\n\t\t\t\tsa.Dev = string(pp[14:i])\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\treturn sa, nil\n\tcase AF_TIPC:\n\t\tpp := (*RawSockaddrTIPC)(unsafe.Pointer(rsa))\n\n\t\tsa := &SockaddrTIPC{\n\t\t\tScope: int(pp.Scope),\n\t\t}\n\n\t\t// Determine which union variant is present in pp.Addr by checking\n\t\t// pp.Addrtype.\n\t\tswitch pp.Addrtype {\n\t\tcase TIPC_SERVICE_RANGE:\n\t\t\tsa.Addr = (*TIPCServiceRange)(unsafe.Pointer(&pp.Addr))\n\t\tcase TIPC_SERVICE_ADDR:\n\t\t\tsa.Addr = (*TIPCServiceName)(unsafe.Pointer(&pp.Addr))\n\t\tcase TIPC_SOCKET_ADDR:\n\t\t\tsa.Addr = (*TIPCSocketAddr)(unsafe.Pointer(&pp.Addr))\n\t\tdefault:\n\t\t\treturn nil, EINVAL\n\t\t}\n\n\t\treturn sa, nil\n\tcase AF_IUCV:\n\t\tpp := (*RawSockaddrIUCV)(unsafe.Pointer(rsa))\n\n\t\tvar user [8]byte\n\t\tvar name [8]byte\n\n\t\tfor i := range 8 {\n\t\t\tuser[i] = byte(pp.User_id[i])\n\t\t\tname[i] = byte(pp.Name[i])\n\t\t}\n\n\t\tsa := &SockaddrIUCV{\n\t\t\tUserID: string(user[:]),\n\t\t\tName:   string(name[:]),\n\t\t}\n\t\treturn sa, nil\n\n\tcase AF_CAN:\n\t\tproto, err := socketProtocol(fd)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tpp := (*RawSockaddrCAN)(unsafe.Pointer(rsa))\n\n\t\tswitch proto {\n\t\tcase CAN_J1939:\n\t\t\tsa := &SockaddrCANJ1939{\n\t\t\t\tIfindex: int(pp.Ifindex),\n\t\t\t}\n\t\t\tname := (*[8]byte)(unsafe.Pointer(&sa.Name))\n\t\t\tfor i := range 8 {\n\t\t\t\tname[i] = pp.Addr[i]\n\t\t\t}\n\t\t\tpgn := (*[4]byte)(unsafe.Pointer(&sa.PGN))\n\t\t\tfor i := range 4 {\n\t\t\t\tpgn[i] = pp.Addr[i+8]\n\t\t\t}\n\t\t\taddr := (*[1]byte)(unsafe.Pointer(&sa.Addr))\n\t\t\taddr[0] = pp.Addr[12]\n\t\t\treturn sa, nil\n\t\tdefault:\n\t\t\tsa := &SockaddrCAN{\n\t\t\t\tIfindex: int(pp.Ifindex),\n\t\t\t}\n\t\t\trx := (*[4]byte)(unsafe.Pointer(&sa.RxID))\n\t\t\tfor i := range 4 {\n\t\t\t\trx[i] = pp.Addr[i]\n\t\t\t}\n\t\t\ttx := (*[4]byte)(unsafe.Pointer(&sa.TxID))\n\t\t\tfor i := range 4 {\n\t\t\t\ttx[i] = pp.Addr[i+4]\n\t\t\t}\n\t\t\treturn sa, nil\n\t\t}\n\tcase AF_NFC:\n\t\tproto, err := socketProtocol(fd)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tswitch proto {\n\t\tcase NFC_SOCKPROTO_RAW:\n\t\t\tpp := (*RawSockaddrNFC)(unsafe.Pointer(rsa))\n\t\t\tsa := &SockaddrNFC{\n\t\t\t\tDeviceIdx:   pp.Dev_idx,\n\t\t\t\tTargetIdx:   pp.Target_idx,\n\t\t\t\tNFCProtocol: pp.Nfc_protocol,\n\t\t\t}\n\t\t\treturn sa, nil\n\t\tcase NFC_SOCKPROTO_LLCP:\n\t\t\tpp := (*RawSockaddrNFCLLCP)(unsafe.Pointer(rsa))\n\t\t\tif uint64(pp.Service_name_len) > uint64(len(pp.Service_name)) {\n\t\t\t\treturn nil, EINVAL\n\t\t\t}\n\t\t\tsa := &SockaddrNFCLLCP{\n\t\t\t\tDeviceIdx:      pp.Dev_idx,\n\t\t\t\tTargetIdx:      pp.Target_idx,\n\t\t\t\tNFCProtocol:    pp.Nfc_protocol,\n\t\t\t\tDestinationSAP: pp.Dsap,\n\t\t\t\tSourceSAP:      pp.Ssap,\n\t\t\t\tServiceName:    string(pp.Service_name[:pp.Service_name_len]),\n\t\t\t}\n\t\t\treturn sa, nil\n\t\tdefault:\n\t\t\treturn nil, EINVAL\n\t\t}\n\t}\n\treturn nil, EAFNOSUPPORT\n}\n\nfunc Accept(fd int) (nfd int, sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tnfd, err = accept4(fd, &rsa, &len, 0)\n\tif err != nil {\n\t\treturn\n\t}\n\tsa, err = anyToSockaddr(fd, &rsa)\n\tif err != nil {\n\t\tClose(nfd)\n\t\tnfd = 0\n\t}\n\treturn\n}\n\nfunc Accept4(fd int, flags int) (nfd int, sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tnfd, err = accept4(fd, &rsa, &len, flags)\n\tif err != nil {\n\t\treturn\n\t}\n\tif len > SizeofSockaddrAny {\n\t\tpanic(\"RawSockaddrAny too small\")\n\t}\n\tsa, err = anyToSockaddr(fd, &rsa)\n\tif err != nil {\n\t\tClose(nfd)\n\t\tnfd = 0\n\t}\n\treturn\n}\n\nfunc Getsockname(fd int) (sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tif err = getsockname(fd, &rsa, &len); err != nil {\n\t\treturn\n\t}\n\treturn anyToSockaddr(fd, &rsa)\n}\n\nfunc GetsockoptIPMreqn(fd, level, opt int) (*IPMreqn, error) {\n\tvar value IPMreqn\n\tvallen := _Socklen(SizeofIPMreqn)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\nfunc GetsockoptUcred(fd, level, opt int) (*Ucred, error) {\n\tvar value Ucred\n\tvallen := _Socklen(SizeofUcred)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\nfunc GetsockoptTCPInfo(fd, level, opt int) (*TCPInfo, error) {\n\tvar value TCPInfo\n\tvallen := _Socklen(SizeofTCPInfo)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\n// GetsockoptTCPCCVegasInfo returns algorithm specific congestion control information for a socket using the \"vegas\"\n// algorithm.\n//\n// The socket's congestion control algorighm can be retrieved via [GetsockoptString] with the [TCP_CONGESTION] option:\n//\n//\talgo, err := unix.GetsockoptString(fd, unix.IPPROTO_TCP, unix.TCP_CONGESTION)\nfunc GetsockoptTCPCCVegasInfo(fd, level, opt int) (*TCPVegasInfo, error) {\n\tvar value [SizeofTCPCCInfo / 4]uint32 // ensure proper alignment\n\tvallen := _Socklen(SizeofTCPCCInfo)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value[0]), &vallen)\n\tout := (*TCPVegasInfo)(unsafe.Pointer(&value[0]))\n\treturn out, err\n}\n\n// GetsockoptTCPCCDCTCPInfo returns algorithm specific congestion control information for a socket using the \"dctp\"\n// algorithm.\n//\n// The socket's congestion control algorighm can be retrieved via [GetsockoptString] with the [TCP_CONGESTION] option:\n//\n//\talgo, err := unix.GetsockoptString(fd, unix.IPPROTO_TCP, unix.TCP_CONGESTION)\nfunc GetsockoptTCPCCDCTCPInfo(fd, level, opt int) (*TCPDCTCPInfo, error) {\n\tvar value [SizeofTCPCCInfo / 4]uint32 // ensure proper alignment\n\tvallen := _Socklen(SizeofTCPCCInfo)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value[0]), &vallen)\n\tout := (*TCPDCTCPInfo)(unsafe.Pointer(&value[0]))\n\treturn out, err\n}\n\n// GetsockoptTCPCCBBRInfo returns algorithm specific congestion control information for a socket using the \"bbr\"\n// algorithm.\n//\n// The socket's congestion control algorighm can be retrieved via [GetsockoptString] with the [TCP_CONGESTION] option:\n//\n//\talgo, err := unix.GetsockoptString(fd, unix.IPPROTO_TCP, unix.TCP_CONGESTION)\nfunc GetsockoptTCPCCBBRInfo(fd, level, opt int) (*TCPBBRInfo, error) {\n\tvar value [SizeofTCPCCInfo / 4]uint32 // ensure proper alignment\n\tvallen := _Socklen(SizeofTCPCCInfo)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value[0]), &vallen)\n\tout := (*TCPBBRInfo)(unsafe.Pointer(&value[0]))\n\treturn out, err\n}\n\n// GetsockoptString returns the string value of the socket option opt for the\n// socket associated with fd at the given socket level.\nfunc GetsockoptString(fd, level, opt int) (string, error) {\n\tbuf := make([]byte, 256)\n\tvallen := _Socklen(len(buf))\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen)\n\tif err != nil {\n\t\tif err == ERANGE {\n\t\t\tbuf = make([]byte, vallen)\n\t\t\terr = getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen)\n\t\t}\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t}\n\treturn ByteSliceToString(buf[:vallen]), nil\n}\n\nfunc GetsockoptTpacketStats(fd, level, opt int) (*TpacketStats, error) {\n\tvar value TpacketStats\n\tvallen := _Socklen(SizeofTpacketStats)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\nfunc GetsockoptTpacketStatsV3(fd, level, opt int) (*TpacketStatsV3, error) {\n\tvar value TpacketStatsV3\n\tvallen := _Socklen(SizeofTpacketStatsV3)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\nfunc SetsockoptIPMreqn(fd, level, opt int, mreq *IPMreqn) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(mreq), unsafe.Sizeof(*mreq))\n}\n\nfunc SetsockoptPacketMreq(fd, level, opt int, mreq *PacketMreq) error {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(mreq), unsafe.Sizeof(*mreq))\n}\n\n// SetsockoptSockFprog attaches a classic BPF or an extended BPF program to a\n// socket to filter incoming packets.  See 'man 7 socket' for usage information.\nfunc SetsockoptSockFprog(fd, level, opt int, fprog *SockFprog) error {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(fprog), unsafe.Sizeof(*fprog))\n}\n\nfunc SetsockoptCanRawFilter(fd, level, opt int, filter []CanFilter) error {\n\tvar p unsafe.Pointer\n\tif len(filter) > 0 {\n\t\tp = unsafe.Pointer(&filter[0])\n\t}\n\treturn setsockopt(fd, level, opt, p, uintptr(len(filter)*SizeofCanFilter))\n}\n\nfunc SetsockoptTpacketReq(fd, level, opt int, tp *TpacketReq) error {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(tp), unsafe.Sizeof(*tp))\n}\n\nfunc SetsockoptTpacketReq3(fd, level, opt int, tp *TpacketReq3) error {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(tp), unsafe.Sizeof(*tp))\n}\n\nfunc SetsockoptTCPRepairOpt(fd, level, opt int, o []TCPRepairOpt) (err error) {\n\tif len(o) == 0 {\n\t\treturn EINVAL\n\t}\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(&o[0]), uintptr(SizeofTCPRepairOpt*len(o)))\n}\n\nfunc SetsockoptTCPMD5Sig(fd, level, opt int, s *TCPMD5Sig) error {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(s), unsafe.Sizeof(*s))\n}\n\n// Keyctl Commands (http://man7.org/linux/man-pages/man2/keyctl.2.html)\n\n// KeyctlInt calls keyctl commands in which each argument is an int.\n// These commands are KEYCTL_REVOKE, KEYCTL_CHOWN, KEYCTL_CLEAR, KEYCTL_LINK,\n// KEYCTL_UNLINK, KEYCTL_NEGATE, KEYCTL_SET_REQKEY_KEYRING, KEYCTL_SET_TIMEOUT,\n// KEYCTL_ASSUME_AUTHORITY, KEYCTL_SESSION_TO_PARENT, KEYCTL_REJECT,\n// KEYCTL_INVALIDATE, and KEYCTL_GET_PERSISTENT.\n//sys\tKeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) = SYS_KEYCTL\n\n// KeyctlBuffer calls keyctl commands in which the third and fourth\n// arguments are a buffer and its length, respectively.\n// These commands are KEYCTL_UPDATE, KEYCTL_READ, and KEYCTL_INSTANTIATE.\n//sys\tKeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) = SYS_KEYCTL\n\n// KeyctlString calls keyctl commands which return a string.\n// These commands are KEYCTL_DESCRIBE and KEYCTL_GET_SECURITY.\nfunc KeyctlString(cmd int, id int) (string, error) {\n\t// We must loop as the string data may change in between the syscalls.\n\t// We could allocate a large buffer here to reduce the chance that the\n\t// syscall needs to be called twice; however, this is unnecessary as\n\t// the performance loss is negligible.\n\tvar buffer []byte\n\tfor {\n\t\t// Try to fill the buffer with data\n\t\tlength, err := KeyctlBuffer(cmd, id, buffer, 0)\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\n\t\t// Check if the data was written\n\t\tif length <= len(buffer) {\n\t\t\t// Exclude the null terminator\n\t\t\treturn string(buffer[:length-1]), nil\n\t\t}\n\n\t\t// Make a bigger buffer if needed\n\t\tbuffer = make([]byte, length)\n\t}\n}\n\n// Keyctl commands with special signatures.\n\n// KeyctlGetKeyringID implements the KEYCTL_GET_KEYRING_ID command.\n// See the full documentation at:\n// http://man7.org/linux/man-pages/man3/keyctl_get_keyring_ID.3.html\nfunc KeyctlGetKeyringID(id int, create bool) (ringid int, err error) {\n\tcreateInt := 0\n\tif create {\n\t\tcreateInt = 1\n\t}\n\treturn KeyctlInt(KEYCTL_GET_KEYRING_ID, id, createInt, 0, 0)\n}\n\n// KeyctlSetperm implements the KEYCTL_SETPERM command. The perm value is the\n// key handle permission mask as described in the \"keyctl setperm\" section of\n// http://man7.org/linux/man-pages/man1/keyctl.1.html.\n// See the full documentation at:\n// http://man7.org/linux/man-pages/man3/keyctl_setperm.3.html\nfunc KeyctlSetperm(id int, perm uint32) error {\n\t_, err := KeyctlInt(KEYCTL_SETPERM, id, int(perm), 0, 0)\n\treturn err\n}\n\n//sys\tkeyctlJoin(cmd int, arg2 string) (ret int, err error) = SYS_KEYCTL\n\n// KeyctlJoinSessionKeyring implements the KEYCTL_JOIN_SESSION_KEYRING command.\n// See the full documentation at:\n// http://man7.org/linux/man-pages/man3/keyctl_join_session_keyring.3.html\nfunc KeyctlJoinSessionKeyring(name string) (ringid int, err error) {\n\treturn keyctlJoin(KEYCTL_JOIN_SESSION_KEYRING, name)\n}\n\n//sys\tkeyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) = SYS_KEYCTL\n\n// KeyctlSearch implements the KEYCTL_SEARCH command.\n// See the full documentation at:\n// http://man7.org/linux/man-pages/man3/keyctl_search.3.html\nfunc KeyctlSearch(ringid int, keyType, description string, destRingid int) (id int, err error) {\n\treturn keyctlSearch(KEYCTL_SEARCH, ringid, keyType, description, destRingid)\n}\n\n//sys\tkeyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) = SYS_KEYCTL\n\n// KeyctlInstantiateIOV implements the KEYCTL_INSTANTIATE_IOV command. This\n// command is similar to KEYCTL_INSTANTIATE, except that the payload is a slice\n// of Iovec (each of which represents a buffer) instead of a single buffer.\n// See the full documentation at:\n// http://man7.org/linux/man-pages/man3/keyctl_instantiate_iov.3.html\nfunc KeyctlInstantiateIOV(id int, payload []Iovec, ringid int) error {\n\treturn keyctlIOV(KEYCTL_INSTANTIATE_IOV, id, payload, ringid)\n}\n\n//sys\tkeyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) = SYS_KEYCTL\n\n// KeyctlDHCompute implements the KEYCTL_DH_COMPUTE command. This command\n// computes a Diffie-Hellman shared secret based on the provide params. The\n// secret is written to the provided buffer and the returned size is the number\n// of bytes written (returning an error if there is insufficient space in the\n// buffer). If a nil buffer is passed in, this function returns the minimum\n// buffer length needed to store the appropriate data. Note that this differs\n// from KEYCTL_READ's behavior which always returns the requested payload size.\n// See the full documentation at:\n// http://man7.org/linux/man-pages/man3/keyctl_dh_compute.3.html\nfunc KeyctlDHCompute(params *KeyctlDHParams, buffer []byte) (size int, err error) {\n\treturn keyctlDH(KEYCTL_DH_COMPUTE, params, buffer)\n}\n\n// KeyctlRestrictKeyring implements the KEYCTL_RESTRICT_KEYRING command. This\n// command limits the set of keys that can be linked to the keyring, regardless\n// of keyring permissions. The command requires the \"setattr\" permission.\n//\n// When called with an empty keyType the command locks the keyring, preventing\n// any further keys from being linked to the keyring.\n//\n// The \"asymmetric\" keyType defines restrictions requiring key payloads to be\n// DER encoded X.509 certificates signed by keys in another keyring. Restrictions\n// for \"asymmetric\" include \"builtin_trusted\", \"builtin_and_secondary_trusted\",\n// \"key_or_keyring:<key>\", and \"key_or_keyring:<key>:chain\".\n//\n// As of Linux 4.12, only the \"asymmetric\" keyType defines type-specific\n// restrictions.\n//\n// See the full documentation at:\n// http://man7.org/linux/man-pages/man3/keyctl_restrict_keyring.3.html\n// http://man7.org/linux/man-pages/man2/keyctl.2.html\nfunc KeyctlRestrictKeyring(ringid int, keyType string, restriction string) error {\n\tif keyType == \"\" {\n\t\treturn keyctlRestrictKeyring(KEYCTL_RESTRICT_KEYRING, ringid)\n\t}\n\treturn keyctlRestrictKeyringByType(KEYCTL_RESTRICT_KEYRING, ringid, keyType, restriction)\n}\n\n//sys\tkeyctlRestrictKeyringByType(cmd int, arg2 int, keyType string, restriction string) (err error) = SYS_KEYCTL\n//sys\tkeyctlRestrictKeyring(cmd int, arg2 int) (err error) = SYS_KEYCTL\n\nfunc recvmsgRaw(fd int, iov []Iovec, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn int, recvflags int, err error) {\n\tvar msg Msghdr\n\tmsg.Name = (*byte)(unsafe.Pointer(rsa))\n\tmsg.Namelen = uint32(SizeofSockaddrAny)\n\tvar dummy byte\n\tif len(oob) > 0 {\n\t\tif emptyIovecs(iov) {\n\t\t\tvar sockType int\n\t\t\tsockType, err = GetsockoptInt(fd, SOL_SOCKET, SO_TYPE)\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// receive at least one normal byte\n\t\t\tif sockType != SOCK_DGRAM {\n\t\t\t\tvar iova [1]Iovec\n\t\t\t\tiova[0].Base = &dummy\n\t\t\t\tiova[0].SetLen(1)\n\t\t\t\tiov = iova[:]\n\t\t\t}\n\t\t}\n\t\tmsg.Control = &oob[0]\n\t\tmsg.SetControllen(len(oob))\n\t}\n\tif len(iov) > 0 {\n\t\tmsg.Iov = &iov[0]\n\t\tmsg.SetIovlen(len(iov))\n\t}\n\tif n, err = recvmsg(fd, &msg, flags); err != nil {\n\t\treturn\n\t}\n\toobn = int(msg.Controllen)\n\trecvflags = int(msg.Flags)\n\treturn\n}\n\nfunc sendmsgN(fd int, iov []Iovec, oob []byte, ptr unsafe.Pointer, salen _Socklen, flags int) (n int, err error) {\n\tvar msg Msghdr\n\tmsg.Name = (*byte)(ptr)\n\tmsg.Namelen = uint32(salen)\n\tvar dummy byte\n\tvar empty bool\n\tif len(oob) > 0 {\n\t\tempty = emptyIovecs(iov)\n\t\tif empty {\n\t\t\tvar sockType int\n\t\t\tsockType, err = GetsockoptInt(fd, SOL_SOCKET, SO_TYPE)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\t// send at least one normal byte\n\t\t\tif sockType != SOCK_DGRAM {\n\t\t\t\tvar iova [1]Iovec\n\t\t\t\tiova[0].Base = &dummy\n\t\t\t\tiova[0].SetLen(1)\n\t\t\t\tiov = iova[:]\n\t\t\t}\n\t\t}\n\t\tmsg.Control = &oob[0]\n\t\tmsg.SetControllen(len(oob))\n\t}\n\tif len(iov) > 0 {\n\t\tmsg.Iov = &iov[0]\n\t\tmsg.SetIovlen(len(iov))\n\t}\n\tif n, err = sendmsg(fd, &msg, flags); err != nil {\n\t\treturn 0, err\n\t}\n\tif len(oob) > 0 && empty {\n\t\tn = 0\n\t}\n\treturn n, nil\n}\n\n// BindToDevice binds the socket associated with fd to device.\nfunc BindToDevice(fd int, device string) (err error) {\n\treturn SetsockoptString(fd, SOL_SOCKET, SO_BINDTODEVICE, device)\n}\n\n//sys\tptrace(request int, pid int, addr uintptr, data uintptr) (err error)\n//sys\tptracePtr(request int, pid int, addr uintptr, data unsafe.Pointer) (err error) = SYS_PTRACE\n\nfunc ptracePeek(req int, pid int, addr uintptr, out []byte) (count int, err error) {\n\t// The peek requests are machine-size oriented, so we wrap it\n\t// to retrieve arbitrary-length data.\n\n\t// The ptrace syscall differs from glibc's ptrace.\n\t// Peeks returns the word in *data, not as the return value.\n\n\tvar buf [SizeofPtr]byte\n\n\t// Leading edge. PEEKTEXT/PEEKDATA don't require aligned\n\t// access (PEEKUSER warns that it might), but if we don't\n\t// align our reads, we might straddle an unmapped page\n\t// boundary and not get the bytes leading up to the page\n\t// boundary.\n\tn := 0\n\tif addr%SizeofPtr != 0 {\n\t\terr = ptracePtr(req, pid, addr-addr%SizeofPtr, unsafe.Pointer(&buf[0]))\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\tn += copy(out, buf[addr%SizeofPtr:])\n\t\tout = out[n:]\n\t}\n\n\t// Remainder.\n\tfor len(out) > 0 {\n\t\t// We use an internal buffer to guarantee alignment.\n\t\t// It's not documented if this is necessary, but we're paranoid.\n\t\terr = ptracePtr(req, pid, addr+uintptr(n), unsafe.Pointer(&buf[0]))\n\t\tif err != nil {\n\t\t\treturn n, err\n\t\t}\n\t\tcopied := copy(out, buf[0:])\n\t\tn += copied\n\t\tout = out[copied:]\n\t}\n\n\treturn n, nil\n}\n\nfunc PtracePeekText(pid int, addr uintptr, out []byte) (count int, err error) {\n\treturn ptracePeek(PTRACE_PEEKTEXT, pid, addr, out)\n}\n\nfunc PtracePeekData(pid int, addr uintptr, out []byte) (count int, err error) {\n\treturn ptracePeek(PTRACE_PEEKDATA, pid, addr, out)\n}\n\nfunc PtracePeekUser(pid int, addr uintptr, out []byte) (count int, err error) {\n\treturn ptracePeek(PTRACE_PEEKUSR, pid, addr, out)\n}\n\nfunc ptracePoke(pokeReq int, peekReq int, pid int, addr uintptr, data []byte) (count int, err error) {\n\t// As for ptracePeek, we need to align our accesses to deal\n\t// with the possibility of straddling an invalid page.\n\n\t// Leading edge.\n\tn := 0\n\tif addr%SizeofPtr != 0 {\n\t\tvar buf [SizeofPtr]byte\n\t\terr = ptracePtr(peekReq, pid, addr-addr%SizeofPtr, unsafe.Pointer(&buf[0]))\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\tn += copy(buf[addr%SizeofPtr:], data)\n\t\tword := *((*uintptr)(unsafe.Pointer(&buf[0])))\n\t\terr = ptrace(pokeReq, pid, addr-addr%SizeofPtr, word)\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\tdata = data[n:]\n\t}\n\n\t// Interior.\n\tfor len(data) > SizeofPtr {\n\t\tword := *((*uintptr)(unsafe.Pointer(&data[0])))\n\t\terr = ptrace(pokeReq, pid, addr+uintptr(n), word)\n\t\tif err != nil {\n\t\t\treturn n, err\n\t\t}\n\t\tn += SizeofPtr\n\t\tdata = data[SizeofPtr:]\n\t}\n\n\t// Trailing edge.\n\tif len(data) > 0 {\n\t\tvar buf [SizeofPtr]byte\n\t\terr = ptracePtr(peekReq, pid, addr+uintptr(n), unsafe.Pointer(&buf[0]))\n\t\tif err != nil {\n\t\t\treturn n, err\n\t\t}\n\t\tcopy(buf[0:], data)\n\t\tword := *((*uintptr)(unsafe.Pointer(&buf[0])))\n\t\terr = ptrace(pokeReq, pid, addr+uintptr(n), word)\n\t\tif err != nil {\n\t\t\treturn n, err\n\t\t}\n\t\tn += len(data)\n\t}\n\n\treturn n, nil\n}\n\nfunc PtracePokeText(pid int, addr uintptr, data []byte) (count int, err error) {\n\treturn ptracePoke(PTRACE_POKETEXT, PTRACE_PEEKTEXT, pid, addr, data)\n}\n\nfunc PtracePokeData(pid int, addr uintptr, data []byte) (count int, err error) {\n\treturn ptracePoke(PTRACE_POKEDATA, PTRACE_PEEKDATA, pid, addr, data)\n}\n\nfunc PtracePokeUser(pid int, addr uintptr, data []byte) (count int, err error) {\n\treturn ptracePoke(PTRACE_POKEUSR, PTRACE_PEEKUSR, pid, addr, data)\n}\n\n// elfNT_PRSTATUS is a copy of the debug/elf.NT_PRSTATUS constant so\n// x/sys/unix doesn't need to depend on debug/elf and thus\n// compress/zlib, debug/dwarf, and other packages.\nconst elfNT_PRSTATUS = 1\n\nfunc PtraceGetRegs(pid int, regsout *PtraceRegs) (err error) {\n\tvar iov Iovec\n\tiov.Base = (*byte)(unsafe.Pointer(regsout))\n\tiov.SetLen(int(unsafe.Sizeof(*regsout)))\n\treturn ptracePtr(PTRACE_GETREGSET, pid, uintptr(elfNT_PRSTATUS), unsafe.Pointer(&iov))\n}\n\nfunc PtraceSetRegs(pid int, regs *PtraceRegs) (err error) {\n\tvar iov Iovec\n\tiov.Base = (*byte)(unsafe.Pointer(regs))\n\tiov.SetLen(int(unsafe.Sizeof(*regs)))\n\treturn ptracePtr(PTRACE_SETREGSET, pid, uintptr(elfNT_PRSTATUS), unsafe.Pointer(&iov))\n}\n\nfunc PtraceSetOptions(pid int, options int) (err error) {\n\treturn ptrace(PTRACE_SETOPTIONS, pid, 0, uintptr(options))\n}\n\nfunc PtraceGetEventMsg(pid int) (msg uint, err error) {\n\tvar data _C_long\n\terr = ptracePtr(PTRACE_GETEVENTMSG, pid, 0, unsafe.Pointer(&data))\n\tmsg = uint(data)\n\treturn\n}\n\nfunc PtraceCont(pid int, signal int) (err error) {\n\treturn ptrace(PTRACE_CONT, pid, 0, uintptr(signal))\n}\n\nfunc PtraceSyscall(pid int, signal int) (err error) {\n\treturn ptrace(PTRACE_SYSCALL, pid, 0, uintptr(signal))\n}\n\nfunc PtraceSingleStep(pid int) (err error) { return ptrace(PTRACE_SINGLESTEP, pid, 0, 0) }\n\nfunc PtraceInterrupt(pid int) (err error) { return ptrace(PTRACE_INTERRUPT, pid, 0, 0) }\n\nfunc PtraceAttach(pid int) (err error) { return ptrace(PTRACE_ATTACH, pid, 0, 0) }\n\nfunc PtraceSeize(pid int) (err error) { return ptrace(PTRACE_SEIZE, pid, 0, 0) }\n\nfunc PtraceDetach(pid int) (err error) { return ptrace(PTRACE_DETACH, pid, 0, 0) }\n\n//sys\treboot(magic1 uint, magic2 uint, cmd int, arg string) (err error)\n\nfunc Reboot(cmd int) (err error) {\n\treturn reboot(LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, cmd, \"\")\n}\n\nfunc direntIno(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Ino), unsafe.Sizeof(Dirent{}.Ino))\n}\n\nfunc direntReclen(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen))\n}\n\nfunc direntNamlen(buf []byte) (uint64, bool) {\n\treclen, ok := direntReclen(buf)\n\tif !ok {\n\t\treturn 0, false\n\t}\n\treturn reclen - uint64(unsafe.Offsetof(Dirent{}.Name)), true\n}\n\n//sys\tmount(source string, target string, fstype string, flags uintptr, data *byte) (err error)\n\nfunc Mount(source string, target string, fstype string, flags uintptr, data string) (err error) {\n\t// Certain file systems get rather angry and EINVAL if you give\n\t// them an empty string of data, rather than NULL.\n\tif data == \"\" {\n\t\treturn mount(source, target, fstype, flags, nil)\n\t}\n\tdatap, err := BytePtrFromString(data)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn mount(source, target, fstype, flags, datap)\n}\n\n//sys\tmountSetattr(dirfd int, pathname string, flags uint, attr *MountAttr, size uintptr) (err error) = SYS_MOUNT_SETATTR\n\n// MountSetattr is a wrapper for mount_setattr(2).\n// https://man7.org/linux/man-pages/man2/mount_setattr.2.html\n//\n// Requires kernel >= 5.12.\nfunc MountSetattr(dirfd int, pathname string, flags uint, attr *MountAttr) error {\n\treturn mountSetattr(dirfd, pathname, flags, attr, unsafe.Sizeof(*attr))\n}\n\nfunc Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\treturn sendfile(outfd, infd, offset, count)\n}\n\n// Sendto\n// Recvfrom\n// Socketpair\n\n/*\n * Direct access\n */\n//sys\tAcct(path string) (err error)\n//sys\tAddKey(keyType string, description string, payload []byte, ringid int) (id int, err error)\n//sys\tAdjtimex(buf *Timex) (state int, err error)\n//sysnb\tCapget(hdr *CapUserHeader, data *CapUserData) (err error)\n//sysnb\tCapset(hdr *CapUserHeader, data *CapUserData) (err error)\n//sys\tChdir(path string) (err error)\n//sys\tChroot(path string) (err error)\n//sys\tClockAdjtime(clockid int32, buf *Timex) (state int, err error)\n//sys\tClockGetres(clockid int32, res *Timespec) (err error)\n//sys\tClockGettime(clockid int32, time *Timespec) (err error)\n//sys\tClockSettime(clockid int32, time *Timespec) (err error)\n//sys\tClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error)\n//sys\tClose(fd int) (err error)\n//sys\tCloseRange(first uint, last uint, flags uint) (err error)\n//sys\tCopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error)\n//sys\tDeleteModule(name string, flags int) (err error)\n//sys\tDup(oldfd int) (fd int, err error)\n\nfunc Dup2(oldfd, newfd int) error {\n\treturn Dup3(oldfd, newfd, 0)\n}\n\n//sys\tDup3(oldfd int, newfd int, flags int) (err error)\n//sysnb\tEpollCreate1(flag int) (fd int, err error)\n//sysnb\tEpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error)\n//sys\tEventfd(initval uint, flags int) (fd int, err error) = SYS_EVENTFD2\n//sys\tExit(code int) = SYS_EXIT_GROUP\n//sys\tFallocate(fd int, mode uint32, off int64, len int64) (err error)\n//sys\tFchdir(fd int) (err error)\n//sys\tFchmod(fd int, mode uint32) (err error)\n//sys\tFchownat(dirfd int, path string, uid int, gid int, flags int) (err error)\n//sys\tFdatasync(fd int) (err error)\n//sys\tFgetxattr(fd int, attr string, dest []byte) (sz int, err error)\n//sys\tFinitModule(fd int, params string, flags int) (err error)\n//sys\tFlistxattr(fd int, dest []byte) (sz int, err error)\n//sys\tFlock(fd int, how int) (err error)\n//sys\tFremovexattr(fd int, attr string) (err error)\n//sys\tFsetxattr(fd int, attr string, dest []byte, flags int) (err error)\n//sys\tFsync(fd int) (err error)\n//sys\tFsmount(fd int, flags int, mountAttrs int) (fsfd int, err error)\n//sys\tFsopen(fsName string, flags int) (fd int, err error)\n//sys\tFspick(dirfd int, pathName string, flags int) (fd int, err error)\n\n//sys\tfsconfig(fd int, cmd uint, key *byte, value *byte, aux int) (err error)\n\nfunc fsconfigCommon(fd int, cmd uint, key string, value *byte, aux int) (err error) {\n\tvar keyp *byte\n\tif keyp, err = BytePtrFromString(key); err != nil {\n\t\treturn\n\t}\n\treturn fsconfig(fd, cmd, keyp, value, aux)\n}\n\n// FsconfigSetFlag is equivalent to fsconfig(2) called\n// with cmd == FSCONFIG_SET_FLAG.\n//\n// fd is the filesystem context to act upon.\n// key the parameter key to set.\nfunc FsconfigSetFlag(fd int, key string) (err error) {\n\treturn fsconfigCommon(fd, FSCONFIG_SET_FLAG, key, nil, 0)\n}\n\n// FsconfigSetString is equivalent to fsconfig(2) called\n// with cmd == FSCONFIG_SET_STRING.\n//\n// fd is the filesystem context to act upon.\n// key the parameter key to set.\n// value is the parameter value to set.\nfunc FsconfigSetString(fd int, key string, value string) (err error) {\n\tvar valuep *byte\n\tif valuep, err = BytePtrFromString(value); err != nil {\n\t\treturn\n\t}\n\treturn fsconfigCommon(fd, FSCONFIG_SET_STRING, key, valuep, 0)\n}\n\n// FsconfigSetBinary is equivalent to fsconfig(2) called\n// with cmd == FSCONFIG_SET_BINARY.\n//\n// fd is the filesystem context to act upon.\n// key the parameter key to set.\n// value is the parameter value to set.\nfunc FsconfigSetBinary(fd int, key string, value []byte) (err error) {\n\tif len(value) == 0 {\n\t\treturn EINVAL\n\t}\n\treturn fsconfigCommon(fd, FSCONFIG_SET_BINARY, key, &value[0], len(value))\n}\n\n// FsconfigSetPath is equivalent to fsconfig(2) called\n// with cmd == FSCONFIG_SET_PATH.\n//\n// fd is the filesystem context to act upon.\n// key the parameter key to set.\n// path is a non-empty path for specified key.\n// atfd is a file descriptor at which to start lookup from or AT_FDCWD.\nfunc FsconfigSetPath(fd int, key string, path string, atfd int) (err error) {\n\tvar valuep *byte\n\tif valuep, err = BytePtrFromString(path); err != nil {\n\t\treturn\n\t}\n\treturn fsconfigCommon(fd, FSCONFIG_SET_PATH, key, valuep, atfd)\n}\n\n// FsconfigSetPathEmpty is equivalent to fsconfig(2) called\n// with cmd == FSCONFIG_SET_PATH_EMPTY. The same as\n// FconfigSetPath but with AT_PATH_EMPTY implied.\nfunc FsconfigSetPathEmpty(fd int, key string, path string, atfd int) (err error) {\n\tvar valuep *byte\n\tif valuep, err = BytePtrFromString(path); err != nil {\n\t\treturn\n\t}\n\treturn fsconfigCommon(fd, FSCONFIG_SET_PATH_EMPTY, key, valuep, atfd)\n}\n\n// FsconfigSetFd is equivalent to fsconfig(2) called\n// with cmd == FSCONFIG_SET_FD.\n//\n// fd is the filesystem context to act upon.\n// key the parameter key to set.\n// value is a file descriptor to be assigned to specified key.\nfunc FsconfigSetFd(fd int, key string, value int) (err error) {\n\treturn fsconfigCommon(fd, FSCONFIG_SET_FD, key, nil, value)\n}\n\n// FsconfigCreate is equivalent to fsconfig(2) called\n// with cmd == FSCONFIG_CMD_CREATE.\n//\n// fd is the filesystem context to act upon.\nfunc FsconfigCreate(fd int) (err error) {\n\treturn fsconfig(fd, FSCONFIG_CMD_CREATE, nil, nil, 0)\n}\n\n// FsconfigReconfigure is equivalent to fsconfig(2) called\n// with cmd == FSCONFIG_CMD_RECONFIGURE.\n//\n// fd is the filesystem context to act upon.\nfunc FsconfigReconfigure(fd int) (err error) {\n\treturn fsconfig(fd, FSCONFIG_CMD_RECONFIGURE, nil, nil, 0)\n}\n\n//sys\tGetdents(fd int, buf []byte) (n int, err error) = SYS_GETDENTS64\n//sysnb\tGetpgid(pid int) (pgid int, err error)\n\nfunc Getpgrp() (pid int) {\n\tpid, _ = Getpgid(0)\n\treturn\n}\n\n//sysnb\tGetpid() (pid int)\n//sysnb\tGetppid() (ppid int)\n//sys\tGetpriority(which int, who int) (prio int, err error)\n\nfunc Getrandom(buf []byte, flags int) (n int, err error) {\n\tvdsoRet, supported := vgetrandom(buf, uint32(flags))\n\tif supported {\n\t\tif vdsoRet < 0 {\n\t\t\treturn 0, errnoErr(syscall.Errno(-vdsoRet))\n\t\t}\n\t\treturn vdsoRet, nil\n\t}\n\tvar p *byte\n\tif len(buf) > 0 {\n\t\tp = &buf[0]\n\t}\n\tr, _, e := Syscall(SYS_GETRANDOM, uintptr(unsafe.Pointer(p)), uintptr(len(buf)), uintptr(flags))\n\tif e != 0 {\n\t\treturn 0, errnoErr(e)\n\t}\n\treturn int(r), nil\n}\n\n//sysnb\tGetrusage(who int, rusage *Rusage) (err error)\n//sysnb\tGetsid(pid int) (sid int, err error)\n//sysnb\tGettid() (tid int)\n//sys\tGetxattr(path string, attr string, dest []byte) (sz int, err error)\n//sys\tInitModule(moduleImage []byte, params string) (err error)\n//sys\tInotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error)\n//sysnb\tInotifyInit1(flags int) (fd int, err error)\n//sysnb\tInotifyRmWatch(fd int, watchdesc uint32) (success int, err error)\n//sysnb\tKill(pid int, sig syscall.Signal) (err error)\n//sys\tKlogctl(typ int, buf []byte) (n int, err error) = SYS_SYSLOG\n//sys\tLgetxattr(path string, attr string, dest []byte) (sz int, err error)\n//sys\tListxattr(path string, dest []byte) (sz int, err error)\n//sys\tLlistxattr(path string, dest []byte) (sz int, err error)\n//sys\tLremovexattr(path string, attr string) (err error)\n//sys\tLsetxattr(path string, attr string, data []byte, flags int) (err error)\n//sys\tMemfdCreate(name string, flags int) (fd int, err error)\n//sys\tMkdirat(dirfd int, path string, mode uint32) (err error)\n//sys\tMknodat(dirfd int, path string, mode uint32, dev int) (err error)\n//sys\tMoveMount(fromDirfd int, fromPathName string, toDirfd int, toPathName string, flags int) (err error)\n//sys\tNanosleep(time *Timespec, leftover *Timespec) (err error)\n//sys\tOpenTree(dfd int, fileName string, flags uint) (r int, err error)\n//sys\tPerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error)\n//sys\tPivotRoot(newroot string, putold string) (err error) = SYS_PIVOT_ROOT\n//sys\tPrctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error)\n//sys\tpselect6(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *sigset_argpack) (n int, err error)\n//sys\tread(fd int, p []byte) (n int, err error)\n//sys\tRemovexattr(path string, attr string) (err error)\n//sys\tRenameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error)\n//sys\tRequestKey(keyType string, description string, callback string, destRingid int) (id int, err error)\n//sys\tSetdomainname(p []byte) (err error)\n//sys\tSethostname(p []byte) (err error)\n//sysnb\tSetpgid(pid int, pgid int) (err error)\n//sysnb\tSetsid() (pid int, err error)\n//sysnb\tSettimeofday(tv *Timeval) (err error)\n//sys\tSetns(fd int, nstype int) (err error)\n\n//go:linkname syscall_prlimit syscall.prlimit\nfunc syscall_prlimit(pid, resource int, newlimit, old *syscall.Rlimit) error\n\nfunc Prlimit(pid, resource int, newlimit, old *Rlimit) error {\n\t// Just call the syscall version, because as of Go 1.21\n\t// it will affect starting a new process.\n\treturn syscall_prlimit(pid, resource, (*syscall.Rlimit)(newlimit), (*syscall.Rlimit)(old))\n}\n\n// PrctlRetInt performs a prctl operation specified by option and further\n// optional arguments arg2 through arg5 depending on option. It returns a\n// non-negative integer that is returned by the prctl syscall.\nfunc PrctlRetInt(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (int, error) {\n\tret, _, err := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)\n\tif err != 0 {\n\t\treturn 0, err\n\t}\n\treturn int(ret), nil\n}\n\nfunc Setuid(uid int) (err error) {\n\treturn syscall.Setuid(uid)\n}\n\nfunc Setgid(gid int) (err error) {\n\treturn syscall.Setgid(gid)\n}\n\nfunc Setreuid(ruid, euid int) (err error) {\n\treturn syscall.Setreuid(ruid, euid)\n}\n\nfunc Setregid(rgid, egid int) (err error) {\n\treturn syscall.Setregid(rgid, egid)\n}\n\nfunc Setresuid(ruid, euid, suid int) (err error) {\n\treturn syscall.Setresuid(ruid, euid, suid)\n}\n\nfunc Setresgid(rgid, egid, sgid int) (err error) {\n\treturn syscall.Setresgid(rgid, egid, sgid)\n}\n\n// SetfsgidRetGid sets fsgid for current thread and returns previous fsgid set.\n// setfsgid(2) will return a non-nil error only if its caller lacks CAP_SETUID capability.\n// If the call fails due to other reasons, current fsgid will be returned.\nfunc SetfsgidRetGid(gid int) (int, error) {\n\treturn setfsgid(gid)\n}\n\n// SetfsuidRetUid sets fsuid for current thread and returns previous fsuid set.\n// setfsgid(2) will return a non-nil error only if its caller lacks CAP_SETUID capability\n// If the call fails due to other reasons, current fsuid will be returned.\nfunc SetfsuidRetUid(uid int) (int, error) {\n\treturn setfsuid(uid)\n}\n\nfunc Setfsgid(gid int) error {\n\t_, err := setfsgid(gid)\n\treturn err\n}\n\nfunc Setfsuid(uid int) error {\n\t_, err := setfsuid(uid)\n\treturn err\n}\n\nfunc Signalfd(fd int, sigmask *Sigset_t, flags int) (newfd int, err error) {\n\treturn signalfd(fd, sigmask, _C__NSIG/8, flags)\n}\n\n//sys\tSetpriority(which int, who int, prio int) (err error)\n//sys\tSetxattr(path string, attr string, data []byte, flags int) (err error)\n//sys\tsignalfd(fd int, sigmask *Sigset_t, maskSize uintptr, flags int) (newfd int, err error) = SYS_SIGNALFD4\n//sys\tStatx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error)\n//sys\tSync()\n//sys\tSyncfs(fd int) (err error)\n//sysnb\tSysinfo(info *Sysinfo_t) (err error)\n//sys\tTee(rfd int, wfd int, len int, flags int) (n int64, err error)\n//sysnb\tTimerfdCreate(clockid int, flags int) (fd int, err error)\n//sysnb\tTimerfdGettime(fd int, currValue *ItimerSpec) (err error)\n//sysnb\tTimerfdSettime(fd int, flags int, newValue *ItimerSpec, oldValue *ItimerSpec) (err error)\n//sysnb\tTgkill(tgid int, tid int, sig syscall.Signal) (err error)\n//sysnb\tTimes(tms *Tms) (ticks uintptr, err error)\n//sysnb\tUmask(mask int) (oldmask int)\n//sysnb\tUname(buf *Utsname) (err error)\n//sys\tUnmount(target string, flags int) (err error) = SYS_UMOUNT2\n//sys\tUnshare(flags int) (err error)\n//sys\twrite(fd int, p []byte) (n int, err error)\n//sys\texitThread(code int) (err error) = SYS_EXIT\n//sys\treadv(fd int, iovs []Iovec) (n int, err error) = SYS_READV\n//sys\twritev(fd int, iovs []Iovec) (n int, err error) = SYS_WRITEV\n//sys\tpreadv(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr) (n int, err error) = SYS_PREADV\n//sys\tpwritev(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr) (n int, err error) = SYS_PWRITEV\n//sys\tpreadv2(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr, flags int) (n int, err error) = SYS_PREADV2\n//sys\tpwritev2(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr, flags int) (n int, err error) = SYS_PWRITEV2\n\n// minIovec is the size of the small initial allocation used by\n// Readv, Writev, etc.\n//\n// This small allocation gets stack allocated, which lets the\n// common use case of len(iovs) <= minIovs avoid more expensive\n// heap allocations.\nconst minIovec = 8\n\n// appendBytes converts bs to Iovecs and appends them to vecs.\nfunc appendBytes(vecs []Iovec, bs [][]byte) []Iovec {\n\tfor _, b := range bs {\n\t\tvar v Iovec\n\t\tv.SetLen(len(b))\n\t\tif len(b) > 0 {\n\t\t\tv.Base = &b[0]\n\t\t} else {\n\t\t\tv.Base = (*byte)(unsafe.Pointer(&_zero))\n\t\t}\n\t\tvecs = append(vecs, v)\n\t}\n\treturn vecs\n}\n\n// offs2lohi splits offs into its low and high order bits.\nfunc offs2lohi(offs int64) (lo, hi uintptr) {\n\tconst longBits = SizeofLong * 8\n\treturn uintptr(offs), uintptr(uint64(offs) >> (longBits - 1) >> 1) // two shifts to avoid false positive in vet\n}\n\nfunc Readv(fd int, iovs [][]byte) (n int, err error) {\n\tiovecs := make([]Iovec, 0, minIovec)\n\tiovecs = appendBytes(iovecs, iovs)\n\tn, err = readv(fd, iovecs)\n\treadvRacedetect(iovecs, n, err)\n\treturn n, err\n}\n\nfunc Preadv(fd int, iovs [][]byte, offset int64) (n int, err error) {\n\tiovecs := make([]Iovec, 0, minIovec)\n\tiovecs = appendBytes(iovecs, iovs)\n\tlo, hi := offs2lohi(offset)\n\tn, err = preadv(fd, iovecs, lo, hi)\n\treadvRacedetect(iovecs, n, err)\n\treturn n, err\n}\n\nfunc Preadv2(fd int, iovs [][]byte, offset int64, flags int) (n int, err error) {\n\tiovecs := make([]Iovec, 0, minIovec)\n\tiovecs = appendBytes(iovecs, iovs)\n\tlo, hi := offs2lohi(offset)\n\tn, err = preadv2(fd, iovecs, lo, hi, flags)\n\treadvRacedetect(iovecs, n, err)\n\treturn n, err\n}\n\nfunc readvRacedetect(iovecs []Iovec, n int, err error) {\n\tif !raceenabled {\n\t\treturn\n\t}\n\tfor i := 0; n > 0 && i < len(iovecs); i++ {\n\t\tm := min(int(iovecs[i].Len), n)\n\t\tn -= m\n\t\tif m > 0 {\n\t\t\traceWriteRange(unsafe.Pointer(iovecs[i].Base), m)\n\t\t}\n\t}\n\tif err == nil {\n\t\traceAcquire(unsafe.Pointer(&ioSync))\n\t}\n}\n\nfunc Writev(fd int, iovs [][]byte) (n int, err error) {\n\tiovecs := make([]Iovec, 0, minIovec)\n\tiovecs = appendBytes(iovecs, iovs)\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\tn, err = writev(fd, iovecs)\n\twritevRacedetect(iovecs, n)\n\treturn n, err\n}\n\nfunc Pwritev(fd int, iovs [][]byte, offset int64) (n int, err error) {\n\tiovecs := make([]Iovec, 0, minIovec)\n\tiovecs = appendBytes(iovecs, iovs)\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\tlo, hi := offs2lohi(offset)\n\tn, err = pwritev(fd, iovecs, lo, hi)\n\twritevRacedetect(iovecs, n)\n\treturn n, err\n}\n\nfunc Pwritev2(fd int, iovs [][]byte, offset int64, flags int) (n int, err error) {\n\tiovecs := make([]Iovec, 0, minIovec)\n\tiovecs = appendBytes(iovecs, iovs)\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\tlo, hi := offs2lohi(offset)\n\tn, err = pwritev2(fd, iovecs, lo, hi, flags)\n\twritevRacedetect(iovecs, n)\n\treturn n, err\n}\n\nfunc writevRacedetect(iovecs []Iovec, n int) {\n\tif !raceenabled {\n\t\treturn\n\t}\n\tfor i := 0; n > 0 && i < len(iovecs); i++ {\n\t\tm := min(int(iovecs[i].Len), n)\n\t\tn -= m\n\t\tif m > 0 {\n\t\t\traceReadRange(unsafe.Pointer(iovecs[i].Base), m)\n\t\t}\n\t}\n}\n\n// mmap varies by architecture; see syscall_linux_*.go.\n//sys\tmunmap(addr uintptr, length uintptr) (err error)\n//sys\tmremap(oldaddr uintptr, oldlength uintptr, newlength uintptr, flags int, newaddr uintptr) (xaddr uintptr, err error)\n//sys\tMadvise(b []byte, advice int) (err error)\n//sys\tMprotect(b []byte, prot int) (err error)\n//sys\tMlock(b []byte) (err error)\n//sys\tMlockall(flags int) (err error)\n//sys\tMsync(b []byte, flags int) (err error)\n//sys\tMunlock(b []byte) (err error)\n//sys\tMunlockall() (err error)\n\nconst (\n\tmremapFixed     = MREMAP_FIXED\n\tmremapDontunmap = MREMAP_DONTUNMAP\n\tmremapMaymove   = MREMAP_MAYMOVE\n)\n\n// Vmsplice splices user pages from a slice of Iovecs into a pipe specified by fd,\n// using the specified flags.\nfunc Vmsplice(fd int, iovs []Iovec, flags int) (int, error) {\n\tvar p unsafe.Pointer\n\tif len(iovs) > 0 {\n\t\tp = unsafe.Pointer(&iovs[0])\n\t}\n\n\tn, _, errno := Syscall6(SYS_VMSPLICE, uintptr(fd), uintptr(p), uintptr(len(iovs)), uintptr(flags), 0, 0)\n\tif errno != 0 {\n\t\treturn 0, syscall.Errno(errno)\n\t}\n\n\treturn int(n), nil\n}\n\nfunc isGroupMember(gid int) bool {\n\tgroups, err := Getgroups()\n\tif err != nil {\n\t\treturn false\n\t}\n\n\treturn slices.Contains(groups, gid)\n}\n\nfunc isCapDacOverrideSet() bool {\n\thdr := CapUserHeader{Version: LINUX_CAPABILITY_VERSION_3}\n\tdata := [2]CapUserData{}\n\terr := Capget(&hdr, &data[0])\n\n\treturn err == nil && data[0].Effective&(1<<CAP_DAC_OVERRIDE) != 0\n}\n\n//sys\tfaccessat(dirfd int, path string, mode uint32) (err error)\n//sys\tFaccessat2(dirfd int, path string, mode uint32, flags int) (err error)\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tif flags == 0 {\n\t\treturn faccessat(dirfd, path, mode)\n\t}\n\n\tif err := Faccessat2(dirfd, path, mode, flags); err != ENOSYS && err != EPERM {\n\t\treturn err\n\t}\n\n\t// The Linux kernel faccessat system call does not take any flags.\n\t// The glibc faccessat implements the flags itself; see\n\t// https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/faccessat.c;hb=HEAD\n\t// Because people naturally expect syscall.Faccessat to act\n\t// like C faccessat, we do the same.\n\n\tif flags & ^(AT_SYMLINK_NOFOLLOW|AT_EACCESS) != 0 {\n\t\treturn EINVAL\n\t}\n\n\tvar st Stat_t\n\tif err := Fstatat(dirfd, path, &st, flags&AT_SYMLINK_NOFOLLOW); err != nil {\n\t\treturn err\n\t}\n\n\tmode &= 7\n\tif mode == 0 {\n\t\treturn nil\n\t}\n\n\tvar uid int\n\tif flags&AT_EACCESS != 0 {\n\t\tuid = Geteuid()\n\t\tif uid != 0 && isCapDacOverrideSet() {\n\t\t\t// If CAP_DAC_OVERRIDE is set, file access check is\n\t\t\t// done by the kernel in the same way as for root\n\t\t\t// (see generic_permission() in the Linux sources).\n\t\t\tuid = 0\n\t\t}\n\t} else {\n\t\tuid = Getuid()\n\t}\n\n\tif uid == 0 {\n\t\tif mode&1 == 0 {\n\t\t\t// Root can read and write any file.\n\t\t\treturn nil\n\t\t}\n\t\tif st.Mode&0111 != 0 {\n\t\t\t// Root can execute any file that anybody can execute.\n\t\t\treturn nil\n\t\t}\n\t\treturn EACCES\n\t}\n\n\tvar fmode uint32\n\tif uint32(uid) == st.Uid {\n\t\tfmode = (st.Mode >> 6) & 7\n\t} else {\n\t\tvar gid int\n\t\tif flags&AT_EACCESS != 0 {\n\t\t\tgid = Getegid()\n\t\t} else {\n\t\t\tgid = Getgid()\n\t\t}\n\n\t\tif uint32(gid) == st.Gid || isGroupMember(int(st.Gid)) {\n\t\t\tfmode = (st.Mode >> 3) & 7\n\t\t} else {\n\t\t\tfmode = st.Mode & 7\n\t\t}\n\t}\n\n\tif fmode&mode == mode {\n\t\treturn nil\n\t}\n\n\treturn EACCES\n}\n\n//sys\tnameToHandleAt(dirFD int, pathname string, fh *fileHandle, mountID *_C_int, flags int) (err error) = SYS_NAME_TO_HANDLE_AT\n//sys\topenByHandleAt(mountFD int, fh *fileHandle, flags int) (fd int, err error) = SYS_OPEN_BY_HANDLE_AT\n\n// fileHandle is the argument to nameToHandleAt and openByHandleAt. We\n// originally tried to generate it via unix/linux/types.go with \"type\n// fileHandle C.struct_file_handle\" but that generated empty structs\n// for mips64 and mips64le. Instead, hard code it for now (it's the\n// same everywhere else) until the mips64 generator issue is fixed.\ntype fileHandle struct {\n\tBytes uint32\n\tType  int32\n}\n\n// FileHandle represents the C struct file_handle used by\n// name_to_handle_at (see NameToHandleAt) and open_by_handle_at (see\n// OpenByHandleAt).\ntype FileHandle struct {\n\t*fileHandle\n}\n\n// NewFileHandle constructs a FileHandle.\nfunc NewFileHandle(handleType int32, handle []byte) FileHandle {\n\tconst hdrSize = unsafe.Sizeof(fileHandle{})\n\tbuf := make([]byte, hdrSize+uintptr(len(handle)))\n\tcopy(buf[hdrSize:], handle)\n\tfh := (*fileHandle)(unsafe.Pointer(&buf[0]))\n\tfh.Type = handleType\n\tfh.Bytes = uint32(len(handle))\n\treturn FileHandle{fh}\n}\n\nfunc (fh *FileHandle) Size() int   { return int(fh.fileHandle.Bytes) }\nfunc (fh *FileHandle) Type() int32 { return fh.fileHandle.Type }\nfunc (fh *FileHandle) Bytes() []byte {\n\tn := fh.Size()\n\tif n == 0 {\n\t\treturn nil\n\t}\n\treturn unsafe.Slice((*byte)(unsafe.Pointer(uintptr(unsafe.Pointer(&fh.fileHandle.Type))+4)), n)\n}\n\n// NameToHandleAt wraps the name_to_handle_at system call; it obtains\n// a handle for a path name.\nfunc NameToHandleAt(dirfd int, path string, flags int) (handle FileHandle, mountID int, err error) {\n\tvar mid _C_int\n\t// Try first with a small buffer, assuming the handle will\n\t// only be 32 bytes.\n\tsize := uint32(32 + unsafe.Sizeof(fileHandle{}))\n\tdidResize := false\n\tfor {\n\t\tbuf := make([]byte, size)\n\t\tfh := (*fileHandle)(unsafe.Pointer(&buf[0]))\n\t\tfh.Bytes = size - uint32(unsafe.Sizeof(fileHandle{}))\n\t\terr = nameToHandleAt(dirfd, path, fh, &mid, flags)\n\t\tif err == EOVERFLOW {\n\t\t\tif didResize {\n\t\t\t\t// We shouldn't need to resize more than once\n\t\t\t\treturn\n\t\t\t}\n\t\t\tdidResize = true\n\t\t\tsize = fh.Bytes + uint32(unsafe.Sizeof(fileHandle{}))\n\t\t\tcontinue\n\t\t}\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t\treturn FileHandle{fh}, int(mid), nil\n\t}\n}\n\n// OpenByHandleAt wraps the open_by_handle_at system call; it opens a\n// file via a handle as previously returned by NameToHandleAt.\nfunc OpenByHandleAt(mountFD int, handle FileHandle, flags int) (fd int, err error) {\n\treturn openByHandleAt(mountFD, handle.fileHandle, flags)\n}\n\n// Klogset wraps the sys_syslog system call; it sets console_loglevel to\n// the value specified by arg and passes a dummy pointer to bufp.\nfunc Klogset(typ int, arg int) (err error) {\n\tvar p unsafe.Pointer\n\t_, _, errno := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(p), uintptr(arg))\n\tif errno != 0 {\n\t\treturn errnoErr(errno)\n\t}\n\treturn nil\n}\n\n// RemoteIovec is Iovec with the pointer replaced with an integer.\n// It is used for ProcessVMReadv and ProcessVMWritev, where the pointer\n// refers to a location in a different process' address space, which\n// would confuse the Go garbage collector.\ntype RemoteIovec struct {\n\tBase uintptr\n\tLen  int\n}\n\n//sys\tProcessVMReadv(pid int, localIov []Iovec, remoteIov []RemoteIovec, flags uint) (n int, err error) = SYS_PROCESS_VM_READV\n//sys\tProcessVMWritev(pid int, localIov []Iovec, remoteIov []RemoteIovec, flags uint) (n int, err error) = SYS_PROCESS_VM_WRITEV\n\n//sys\tPidfdOpen(pid int, flags int) (fd int, err error) = SYS_PIDFD_OPEN\n//sys\tPidfdGetfd(pidfd int, targetfd int, flags int) (fd int, err error) = SYS_PIDFD_GETFD\n//sys\tPidfdSendSignal(pidfd int, sig Signal, info *Siginfo, flags int) (err error) = SYS_PIDFD_SEND_SIGNAL\n\n//sys\tshmat(id int, addr uintptr, flag int) (ret uintptr, err error)\n//sys\tshmctl(id int, cmd int, buf *SysvShmDesc) (result int, err error)\n//sys\tshmdt(addr uintptr) (err error)\n//sys\tshmget(key int, size int, flag int) (id int, err error)\n\n//sys\tgetitimer(which int, currValue *Itimerval) (err error)\n//sys\tsetitimer(which int, newValue *Itimerval, oldValue *Itimerval) (err error)\n\n// MakeItimerval creates an Itimerval from interval and value durations.\nfunc MakeItimerval(interval, value time.Duration) Itimerval {\n\treturn Itimerval{\n\t\tInterval: NsecToTimeval(interval.Nanoseconds()),\n\t\tValue:    NsecToTimeval(value.Nanoseconds()),\n\t}\n}\n\n// A value which may be passed to the which parameter for Getitimer and\n// Setitimer.\ntype ItimerWhich int\n\n// Possible which values for Getitimer and Setitimer.\nconst (\n\tItimerReal    ItimerWhich = ITIMER_REAL\n\tItimerVirtual ItimerWhich = ITIMER_VIRTUAL\n\tItimerProf    ItimerWhich = ITIMER_PROF\n)\n\n// Getitimer wraps getitimer(2) to return the current value of the timer\n// specified by which.\nfunc Getitimer(which ItimerWhich) (Itimerval, error) {\n\tvar it Itimerval\n\tif err := getitimer(int(which), &it); err != nil {\n\t\treturn Itimerval{}, err\n\t}\n\n\treturn it, nil\n}\n\n// Setitimer wraps setitimer(2) to arm or disarm the timer specified by which.\n// It returns the previous value of the timer.\n//\n// If the Itimerval argument is the zero value, the timer will be disarmed.\nfunc Setitimer(which ItimerWhich, it Itimerval) (Itimerval, error) {\n\tvar prev Itimerval\n\tif err := setitimer(int(which), &it, &prev); err != nil {\n\t\treturn Itimerval{}, err\n\t}\n\n\treturn prev, nil\n}\n\n//sysnb\trtSigprocmask(how int, set *Sigset_t, oldset *Sigset_t, sigsetsize uintptr) (err error) = SYS_RT_SIGPROCMASK\n\nfunc PthreadSigmask(how int, set, oldset *Sigset_t) error {\n\tif oldset != nil {\n\t\t// Explicitly clear in case Sigset_t is larger than _C__NSIG.\n\t\t*oldset = Sigset_t{}\n\t}\n\treturn rtSigprocmask(how, set, oldset, _C__NSIG/8)\n}\n\n//sysnb\tgetresuid(ruid *_C_int, euid *_C_int, suid *_C_int)\n//sysnb\tgetresgid(rgid *_C_int, egid *_C_int, sgid *_C_int)\n\nfunc Getresuid() (ruid, euid, suid int) {\n\tvar r, e, s _C_int\n\tgetresuid(&r, &e, &s)\n\treturn int(r), int(e), int(s)\n}\n\nfunc Getresgid() (rgid, egid, sgid int) {\n\tvar r, e, s _C_int\n\tgetresgid(&r, &e, &s)\n\treturn int(r), int(e), int(s)\n}\n\n// Pselect is a wrapper around the Linux pselect6 system call.\n// This version does not modify the timeout argument.\nfunc Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\t// Per https://man7.org/linux/man-pages/man2/select.2.html#NOTES,\n\t// The Linux pselect6() system call modifies its timeout argument.\n\t// [Not modifying the argument] is the behavior required by POSIX.1-2001.\n\tvar mutableTimeout *Timespec\n\tif timeout != nil {\n\t\tmutableTimeout = new(Timespec)\n\t\t*mutableTimeout = *timeout\n\t}\n\n\t// The final argument of the pselect6() system call is not a\n\t// sigset_t * pointer, but is instead a structure\n\tvar kernelMask *sigset_argpack\n\tif sigmask != nil {\n\t\twordBits := 32 << (^uintptr(0) >> 63) // see math.intSize\n\n\t\t// A sigset stores one bit per signal,\n\t\t// offset by 1 (because signal 0 does not exist).\n\t\t// So the number of words needed is ⌈__C_NSIG - 1 / wordBits⌉.\n\t\tsigsetWords := (_C__NSIG - 1 + wordBits - 1) / (wordBits)\n\n\t\tsigsetBytes := uintptr(sigsetWords * (wordBits / 8))\n\t\tkernelMask = &sigset_argpack{\n\t\t\tss:    sigmask,\n\t\t\tssLen: sigsetBytes,\n\t\t}\n\t}\n\n\treturn pselect6(nfd, r, w, e, mutableTimeout, kernelMask)\n}\n\n//sys\tschedSetattr(pid int, attr *SchedAttr, flags uint) (err error)\n//sys\tschedGetattr(pid int, attr *SchedAttr, size uint, flags uint) (err error)\n\n// SchedSetAttr is a wrapper for sched_setattr(2) syscall.\n// https://man7.org/linux/man-pages/man2/sched_setattr.2.html\nfunc SchedSetAttr(pid int, attr *SchedAttr, flags uint) error {\n\tif attr == nil {\n\t\treturn EINVAL\n\t}\n\tattr.Size = SizeofSchedAttr\n\treturn schedSetattr(pid, attr, flags)\n}\n\n// SchedGetAttr is a wrapper for sched_getattr(2) syscall.\n// https://man7.org/linux/man-pages/man2/sched_getattr.2.html\nfunc SchedGetAttr(pid int, flags uint) (*SchedAttr, error) {\n\tattr := &SchedAttr{}\n\tif err := schedGetattr(pid, attr, SizeofSchedAttr, flags); err != nil {\n\t\treturn nil, err\n\t}\n\treturn attr, nil\n}\n\n//sys\tCachestat(fd uint, crange *CachestatRange, cstat *Cachestat_t, flags uint) (err error)\n//sys\tMseal(b []byte, flags uint) (err error)\n\n//sys\tsetMemPolicy(mode int, mask *CPUSet, size int) (err error) = SYS_SET_MEMPOLICY\n\nfunc SetMemPolicy(mode int, mask *CPUSet) error {\n\treturn setMemPolicy(mode, mask, _CPU_SETSIZE)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/syscall_linux_386.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build 386 && linux\n\npackage unix\n\nimport (\n\t\"unsafe\"\n)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: int32(sec), Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: int32(sec), Usec: int32(usec)}\n}\n\n// 64-bit file system and 32-bit uid calls\n// (386 default is 32-bit file system and 16-bit uid).\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64_64\n//sys\tFchown(fd int, uid int, gid int) (err error) = SYS_FCHOWN32\n//sys\tFstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64\n//sys\tFstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64\n//sys\tFtruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64\n//sysnb\tGetegid() (egid int) = SYS_GETEGID32\n//sysnb\tGeteuid() (euid int) = SYS_GETEUID32\n//sysnb\tGetgid() (gid int) = SYS_GETGID32\n//sysnb\tGetuid() (uid int) = SYS_GETUID32\n//sys\tIoperm(from int, num int, on int) (err error)\n//sys\tIopl(level int) (err error)\n//sys\tLchown(path string, uid int, gid int) (err error) = SYS_LCHOWN32\n//sys\tLstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64\n//sys\tsetfsgid(gid int) (prev int, err error) = SYS_SETFSGID32\n//sys\tsetfsuid(uid int) (prev int, err error) = SYS_SETFSUID32\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error)\n//sys\tStat(path string, stat *Stat_t) (err error) = SYS_STAT64\n//sys\tSyncFileRange(fd int, off int64, n int64, flags int) (err error)\n//sys\tTruncate(path string, length int64) (err error) = SYS_TRUNCATE64\n//sys\tUstat(dev int, ubuf *Ustat_t) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error) = SYS_GETGROUPS32\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error) = SYS_SETGROUPS32\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT\n\n//sys\tmmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error)\n//sys\tPause() (err error)\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tpage := uintptr(offset / 4096)\n\tif offset != int64(page)*4096 {\n\t\treturn 0, EINVAL\n\t}\n\treturn mmap2(addr, length, prot, flags, fd, page)\n}\n\ntype rlimit32 struct {\n\tCur uint32\n\tMax uint32\n}\n\n//sysnb\tgetrlimit(resource int, rlim *rlimit32) (err error) = SYS_GETRLIMIT\n\nconst rlimInf32 = ^uint32(0)\nconst rlimInf64 = ^uint64(0)\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\terr = Prlimit(0, resource, nil, rlim)\n\tif err != ENOSYS {\n\t\treturn err\n\t}\n\n\trl := rlimit32{}\n\terr = getrlimit(resource, &rl)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif rl.Cur == rlimInf32 {\n\t\trlim.Cur = rlimInf64\n\t} else {\n\t\trlim.Cur = uint64(rl.Cur)\n\t}\n\n\tif rl.Max == rlimInf32 {\n\t\trlim.Max = rlimInf64\n\t} else {\n\t\trlim.Max = uint64(rl.Max)\n\t}\n\treturn\n}\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tnewoffset, errno := seek(fd, offset, whence)\n\tif errno != 0 {\n\t\treturn 0, errno\n\t}\n\treturn newoffset, nil\n}\n\n//sys\tfutimesat(dirfd int, path string, times *[2]Timeval) (err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n//sysnb\tTime(t *Time_t) (tt Time_t, err error)\n//sys\tUtime(path string, buf *Utimbuf) (err error)\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\n// On x86 Linux, all the socket calls go through an extra indirection,\n// I think because the 5-register system call interface can't handle\n// the 6-argument calls like sendto and recvfrom. Instead the\n// arguments to the underlying system call are the number below\n// and a pointer to an array of uintptr. We hide the pointer in the\n// socketcall assembly to avoid allocation on every system call.\n\nconst (\n\t// see linux/net.h\n\t_SOCKET      = 1\n\t_BIND        = 2\n\t_CONNECT     = 3\n\t_LISTEN      = 4\n\t_ACCEPT      = 5\n\t_GETSOCKNAME = 6\n\t_GETPEERNAME = 7\n\t_SOCKETPAIR  = 8\n\t_SEND        = 9\n\t_RECV        = 10\n\t_SENDTO      = 11\n\t_RECVFROM    = 12\n\t_SHUTDOWN    = 13\n\t_SETSOCKOPT  = 14\n\t_GETSOCKOPT  = 15\n\t_SENDMSG     = 16\n\t_RECVMSG     = 17\n\t_ACCEPT4     = 18\n\t_RECVMMSG    = 19\n\t_SENDMMSG    = 20\n)\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tfd, e := socketcall(_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc getsockname(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, e := rawsocketcall(_GETSOCKNAME, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc getpeername(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, e := rawsocketcall(_GETPEERNAME, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc socketpair(domain int, typ int, flags int, fd *[2]int32) (err error) {\n\t_, e := rawsocketcall(_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(flags), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, e := socketcall(_BIND, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, e := socketcall(_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tfd, e := rawsocketcall(_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto), 0, 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, e := socketcall(_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, e := socketcall(_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), vallen, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc recvfrom(s int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar base uintptr\n\tif len(p) > 0 {\n\t\tbase = uintptr(unsafe.Pointer(&p[0]))\n\t}\n\tn, e := socketcall(_RECVFROM, uintptr(s), base, uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc sendto(s int, p []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar base uintptr\n\tif len(p) > 0 {\n\t\tbase = uintptr(unsafe.Pointer(&p[0]))\n\t}\n\t_, e := socketcall(_SENDTO, uintptr(s), base, uintptr(len(p)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tn, e := socketcall(_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tn, e := socketcall(_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc Listen(s int, n int) (err error) {\n\t_, e := socketcall(_LISTEN, uintptr(s), uintptr(n), 0, 0, 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc Shutdown(s, how int) (err error) {\n\t_, e := socketcall(_SHUTDOWN, uintptr(s), uintptr(how), 0, 0, 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e := Syscall(SYS_FSTATFS64, uintptr(fd), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf)))\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tpathp, err := BytePtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\t_, _, e := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(pathp)), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf)))\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return uint64(uint32(r.Eip)) }\n\nfunc (r *PtraceRegs) SetPC(pc uint64) { r.Eip = int32(pc) }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {\n\trsa.Service_name_len = uint32(length)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/syscall_linux_alarm.go",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && (386 || amd64 || mips || mipsle || mips64 || mipsle || ppc64 || ppc64le || ppc || s390x || sparc64)\n\npackage unix\n\n// SYS_ALARM is not defined on arm or riscv, but is available for other GOARCH\n// values.\n\n//sys\tAlarm(seconds uint) (remaining uint, err error)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build amd64 && linux\n\npackage unix\n\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_NEWFSTATAT\n//sys\tFstatfs(fd int, buf *Statfs_t) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetrlimit(resource int, rlim *Rlimit) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tIoperm(from int, num int, on int) (err error)\n//sys\tIopl(level int) (err error)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tListen(s int, n int) (err error)\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\treturn Fstatat(AT_FDCWD, path, stat, AT_SYMLINK_NOFOLLOW)\n}\n\n//sys\tMemfdSecret(flags int) (fd int, err error)\n//sys\tPause() (err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tvar ts *Timespec\n\tif timeout != nil {\n\t\tts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000}\n\t}\n\treturn pselect6(nfd, r, w, e, ts, nil)\n}\n\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error)\n//sys\tsetfsgid(gid int) (prev int, err error)\n//sys\tsetfsuid(uid int) (prev int, err error)\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\t// Use fstatat, because Android's seccomp policy blocks stat.\n\treturn Fstatat(AT_FDCWD, path, stat, 0)\n}\n\n//sys\tStatfs(path string, buf *Statfs_t) (err error)\n//sys\tSyncFileRange(fd int, off int64, n int64, flags int) (err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\tUstat(dev int, ubuf *Ustat_t) (err error)\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)\n\n//sys\tfutimesat(dirfd int, path string, times *[2]Timeval) (err error)\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\terrno := gettimeofday(tv)\n\tif errno != 0 {\n\t\treturn errno\n\t}\n\treturn nil\n}\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tvar tv Timeval\n\terrno := gettimeofday(&tv)\n\tif errno != 0 {\n\t\treturn 0, errno\n\t}\n\tif t != nil {\n\t\t*t = Time_t(tv.Sec)\n\t}\n\treturn Time_t(tv.Sec), nil\n}\n\n//sys\tUtime(path string, buf *Utimbuf) (err error)\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return r.Rip }\n\nfunc (r *PtraceRegs) SetPC(pc uint64) { r.Rip = pc }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint64(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint64(length)\n}\n\nfunc (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {\n\trsa.Service_name_len = uint64(length)\n}\n\n//sys\tkexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error)\n\nfunc KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error {\n\tcmdlineLen := len(cmdline)\n\tif cmdlineLen > 0 {\n\t\t// Account for the additional NULL byte added by\n\t\t// BytePtrFromString in kexecFileLoad. The kexec_file_load\n\t\t// syscall expects a NULL-terminated string.\n\t\tcmdlineLen++\n\t}\n\treturn kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build amd64 && linux && gc\n\npackage unix\n\nimport \"syscall\"\n\n//go:noescape\nfunc gettimeofday(tv *Timeval) (err syscall.Errno)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/syscall_linux_arm.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build arm && linux\n\npackage unix\n\nimport (\n\t\"unsafe\"\n)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: int32(sec), Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: int32(sec), Usec: int32(usec)}\n}\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tnewoffset, errno := seek(fd, offset, whence)\n\tif errno != 0 {\n\t\treturn 0, errno\n\t}\n\treturn newoffset, nil\n}\n\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error) = SYS_GETGROUPS32\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error) = SYS_SETGROUPS32\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tsocketpair(domain int, typ int, flags int, fd *[2]int32) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n\n// 64-bit file system and 32-bit uid calls\n// (16-bit uid calls are not always supported in newer kernels)\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)\n//sys\tFchown(fd int, uid int, gid int) (err error) = SYS_FCHOWN32\n//sys\tFstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64\n//sys\tFstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64\n//sysnb\tGetegid() (egid int) = SYS_GETEGID32\n//sysnb\tGeteuid() (euid int) = SYS_GETEUID32\n//sysnb\tGetgid() (gid int) = SYS_GETGID32\n//sysnb\tGetuid() (uid int) = SYS_GETUID32\n//sys\tLchown(path string, uid int, gid int) (err error) = SYS_LCHOWN32\n//sys\tListen(s int, n int) (err error)\n//sys\tLstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64\n//sys\tPause() (err error)\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT\n//sys\tsetfsgid(gid int) (prev int, err error) = SYS_SETFSGID32\n//sys\tsetfsuid(uid int) (prev int, err error) = SYS_SETFSUID32\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error)\n//sys\tStat(path string, stat *Stat_t) (err error) = SYS_STAT64\n//sys\tUstat(dev int, ubuf *Ustat_t) (err error)\n\n//sys\tfutimesat(dirfd int, path string, times *[2]Timeval) (err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n\nfunc Time(t *Time_t) (Time_t, error) {\n\tvar tv Timeval\n\terr := Gettimeofday(&tv)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tif t != nil {\n\t\t*t = Time_t(tv.Sec)\n\t}\n\treturn Time_t(tv.Sec), nil\n}\n\nfunc Utime(path string, buf *Utimbuf) error {\n\ttv := []Timeval{\n\t\t{Sec: buf.Actime},\n\t\t{Sec: buf.Modtime},\n\t}\n\treturn Utimes(path, tv)\n}\n\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tTruncate(path string, length int64) (err error) = SYS_TRUNCATE64\n//sys\tFtruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_ARM_FADVISE64_64, uintptr(fd), uintptr(advice), uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n//sys\tmmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error)\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e := Syscall(SYS_FSTATFS64, uintptr(fd), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf)))\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tpathp, err := BytePtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\t_, _, e := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(pathp)), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf)))\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tpage := uintptr(offset / 4096)\n\tif offset != int64(page)*4096 {\n\t\treturn 0, EINVAL\n\t}\n\treturn mmap2(addr, length, prot, flags, fd, page)\n}\n\ntype rlimit32 struct {\n\tCur uint32\n\tMax uint32\n}\n\n//sysnb\tgetrlimit(resource int, rlim *rlimit32) (err error) = SYS_UGETRLIMIT\n\nconst rlimInf32 = ^uint32(0)\nconst rlimInf64 = ^uint64(0)\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\terr = Prlimit(0, resource, nil, rlim)\n\tif err != ENOSYS {\n\t\treturn err\n\t}\n\n\trl := rlimit32{}\n\terr = getrlimit(resource, &rl)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif rl.Cur == rlimInf32 {\n\t\trlim.Cur = rlimInf64\n\t} else {\n\t\trlim.Cur = uint64(rl.Cur)\n\t}\n\n\tif rl.Max == rlimInf32 {\n\t\trlim.Max = rlimInf64\n\t} else {\n\t\trlim.Max = uint64(rl.Max)\n\t}\n\treturn\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return uint64(r.Uregs[15]) }\n\nfunc (r *PtraceRegs) SetPC(pc uint64) { r.Uregs[15] = uint32(pc) }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {\n\trsa.Service_name_len = uint32(length)\n}\n\n//sys\tarmSyncFileRange(fd int, flags int, off int64, n int64) (err error) = SYS_ARM_SYNC_FILE_RANGE\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) error {\n\t// The sync_file_range and arm_sync_file_range syscalls differ only in the\n\t// order of their arguments.\n\treturn armSyncFileRange(fd, flags, off, n)\n}\n\n//sys\tkexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error)\n\nfunc KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error {\n\tcmdlineLen := len(cmdline)\n\tif cmdlineLen > 0 {\n\t\t// Account for the additional NULL byte added by\n\t\t// BytePtrFromString in kexecFileLoad. The kexec_file_load\n\t\t// syscall expects a NULL-terminated string.\n\t\tcmdlineLen++\n\t}\n\treturn kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build arm64 && linux\n\npackage unix\n\nimport \"unsafe\"\n\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) = SYS_EPOLL_PWAIT\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(fd int, path string, stat *Stat_t, flags int) (err error)\n//sys\tFstatfs(fd int, buf *Statfs_t) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tgetrlimit(resource int, rlim *Rlimit) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tListen(s int, n int) (err error)\n//sys\tMemfdSecret(flags int) (fd int, err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tvar ts *Timespec\n\tif timeout != nil {\n\t\tts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000}\n\t}\n\treturn pselect6(nfd, r, w, e, ts, nil)\n}\n\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error)\n//sys\tsetfsgid(gid int) (prev int, err error)\n//sys\tsetfsuid(uid int) (prev int, err error)\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\treturn Fstatat(AT_FDCWD, path, stat, 0)\n}\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\treturn Fchownat(AT_FDCWD, path, uid, gid, AT_SYMLINK_NOFOLLOW)\n}\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\treturn Fstatat(AT_FDCWD, path, stat, AT_SYMLINK_NOFOLLOW)\n}\n\n//sys\tStatfs(path string, buf *Statfs_t) (err error)\n//sys\tSyncFileRange(fd int, off int64, n int64, flags int) (err error)\n//sys\tTruncate(path string, length int64) (err error)\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\treturn ENOSYS\n}\n\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)\n\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc futimesat(dirfd int, path string, tv *[2]Timeval) (err error) {\n\tif tv == nil {\n\t\treturn utimensat(dirfd, path, nil, 0)\n\t}\n\n\tts := []Timespec{\n\t\tNsecToTimespec(TimevalToNsec(tv[0])),\n\t\tNsecToTimespec(TimevalToNsec(tv[1])),\n\t}\n\treturn utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)\n}\n\nfunc Time(t *Time_t) (Time_t, error) {\n\tvar tv Timeval\n\terr := Gettimeofday(&tv)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tif t != nil {\n\t\t*t = Time_t(tv.Sec)\n\t}\n\treturn Time_t(tv.Sec), nil\n}\n\nfunc Utime(path string, buf *Utimbuf) error {\n\ttv := []Timeval{\n\t\t{Sec: buf.Actime},\n\t\t{Sec: buf.Modtime},\n\t}\n\treturn Utimes(path, tv)\n}\n\nfunc utimes(path string, tv *[2]Timeval) (err error) {\n\tif tv == nil {\n\t\treturn utimensat(AT_FDCWD, path, nil, 0)\n\t}\n\n\tts := []Timespec{\n\t\tNsecToTimespec(TimevalToNsec(tv[0])),\n\t\tNsecToTimespec(TimevalToNsec(tv[1])),\n\t}\n\treturn utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)\n}\n\n// Getrlimit prefers the prlimit64 system call. See issue 38604.\nfunc Getrlimit(resource int, rlim *Rlimit) error {\n\terr := Prlimit(0, resource, nil, rlim)\n\tif err != ENOSYS {\n\t\treturn err\n\t}\n\treturn getrlimit(resource, rlim)\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return r.Pc }\n\nfunc (r *PtraceRegs) SetPC(pc uint64) { r.Pc = pc }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint64(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint64(length)\n}\n\nfunc (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {\n\trsa.Service_name_len = uint64(length)\n}\n\nfunc Pause() error {\n\t_, err := ppoll(nil, 0, nil, nil)\n\treturn err\n}\n\n//sys\tkexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error)\n\nfunc KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error {\n\tcmdlineLen := len(cmdline)\n\tif cmdlineLen > 0 {\n\t\t// Account for the additional NULL byte added by\n\t\t// BytePtrFromString in kexecFileLoad. The kexec_file_load\n\t\t// syscall expects a NULL-terminated string.\n\t\tcmdlineLen++\n\t}\n\treturn kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)\n}\n\nconst SYS_FSTATAT = SYS_NEWFSTATAT\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/syscall_linux_gc.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && gc\n\npackage unix\n\n// SyscallNoError may be used instead of Syscall for syscalls that don't fail.\nfunc SyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr)\n\n// RawSyscallNoError may be used instead of RawSyscall for syscalls that don't\n// fail.\nfunc RawSyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && gc && 386\n\npackage unix\n\nimport \"syscall\"\n\n// Underlying system call writes to newoffset via pointer.\n// Implemented in assembly to avoid allocation.\nfunc seek(fd int, offset int64, whence int) (newoffset int64, err syscall.Errno)\n\nfunc socketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (n int, err syscall.Errno)\nfunc rawsocketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (n int, err syscall.Errno)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/syscall_linux_gc_arm.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build arm && gc && linux\n\npackage unix\n\nimport \"syscall\"\n\n// Underlying system call writes to newoffset via pointer.\n// Implemented in assembly to avoid allocation.\nfunc seek(fd int, offset int64, whence int) (newoffset int64, err syscall.Errno)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && gccgo && 386\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc seek(fd int, offset int64, whence int) (int64, syscall.Errno) {\n\tvar newoffset int64\n\toffsetLow := uint32(offset & 0xffffffff)\n\toffsetHigh := uint32((offset >> 32) & 0xffffffff)\n\t_, _, err := Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offsetHigh), uintptr(offsetLow), uintptr(unsafe.Pointer(&newoffset)), uintptr(whence), 0)\n\treturn newoffset, err\n}\n\nfunc socketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (int, syscall.Errno) {\n\tfd, _, err := Syscall(SYS_SOCKETCALL, uintptr(call), uintptr(unsafe.Pointer(&a0)), 0)\n\treturn int(fd), err\n}\n\nfunc rawsocketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (int, syscall.Errno) {\n\tfd, _, err := RawSyscall(SYS_SOCKETCALL, uintptr(call), uintptr(unsafe.Pointer(&a0)), 0)\n\treturn int(fd), err\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && gccgo && arm\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc seek(fd int, offset int64, whence int) (int64, syscall.Errno) {\n\tvar newoffset int64\n\toffsetLow := uint32(offset & 0xffffffff)\n\toffsetHigh := uint32((offset >> 32) & 0xffffffff)\n\t_, _, err := Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offsetHigh), uintptr(offsetLow), uintptr(unsafe.Pointer(&newoffset)), uintptr(whence), 0)\n\treturn newoffset, err\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/syscall_linux_loong64.go",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build loong64 && linux\n\npackage unix\n\nimport \"unsafe\"\n\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) = SYS_EPOLL_PWAIT\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFstatfs(fd int, buf *Statfs_t) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetuid() (uid int)\n//sys\tListen(s int, n int) (err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tSeek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tvar ts *Timespec\n\tif timeout != nil {\n\t\tts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000}\n\t}\n\treturn pselect6(nfd, r, w, e, ts, nil)\n}\n\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error)\n//sys\tsetfsgid(gid int) (prev int, err error)\n//sys\tsetfsuid(uid int) (prev int, err error)\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)\n\nfunc timespecFromStatxTimestamp(x StatxTimestamp) Timespec {\n\treturn Timespec{\n\t\tSec:  x.Sec,\n\t\tNsec: int64(x.Nsec),\n\t}\n}\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) error {\n\tvar r Statx_t\n\t// Do it the glibc way, add AT_NO_AUTOMOUNT.\n\tif err := Statx(fd, path, AT_NO_AUTOMOUNT|flags, STATX_BASIC_STATS, &r); err != nil {\n\t\treturn err\n\t}\n\n\tstat.Dev = Mkdev(r.Dev_major, r.Dev_minor)\n\tstat.Ino = r.Ino\n\tstat.Mode = uint32(r.Mode)\n\tstat.Nlink = r.Nlink\n\tstat.Uid = r.Uid\n\tstat.Gid = r.Gid\n\tstat.Rdev = Mkdev(r.Rdev_major, r.Rdev_minor)\n\t// hope we don't get to process files so large to overflow these size\n\t// fields...\n\tstat.Size = int64(r.Size)\n\tstat.Blksize = int32(r.Blksize)\n\tstat.Blocks = int64(r.Blocks)\n\tstat.Atim = timespecFromStatxTimestamp(r.Atime)\n\tstat.Mtim = timespecFromStatxTimestamp(r.Mtime)\n\tstat.Ctim = timespecFromStatxTimestamp(r.Ctime)\n\n\treturn nil\n}\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\treturn Fstatat(fd, \"\", stat, AT_EMPTY_PATH)\n}\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\treturn Fstatat(AT_FDCWD, path, stat, 0)\n}\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\treturn Fchownat(AT_FDCWD, path, uid, gid, AT_SYMLINK_NOFOLLOW)\n}\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\treturn Fstatat(AT_FDCWD, path, stat, AT_SYMLINK_NOFOLLOW)\n}\n\n//sys\tStatfs(path string, buf *Statfs_t) (err error)\n//sys\tSyncFileRange(fd int, off int64, n int64, flags int) (err error)\n//sys\tTruncate(path string, length int64) (err error)\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\treturn ENOSYS\n}\n\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)\n\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\terr = Prlimit(0, resource, nil, rlim)\n\treturn\n}\n\nfunc futimesat(dirfd int, path string, tv *[2]Timeval) (err error) {\n\tif tv == nil {\n\t\treturn utimensat(dirfd, path, nil, 0)\n\t}\n\n\tts := []Timespec{\n\t\tNsecToTimespec(TimevalToNsec(tv[0])),\n\t\tNsecToTimespec(TimevalToNsec(tv[1])),\n\t}\n\treturn utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)\n}\n\nfunc Time(t *Time_t) (Time_t, error) {\n\tvar tv Timeval\n\terr := Gettimeofday(&tv)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tif t != nil {\n\t\t*t = Time_t(tv.Sec)\n\t}\n\treturn Time_t(tv.Sec), nil\n}\n\nfunc Utime(path string, buf *Utimbuf) error {\n\ttv := []Timeval{\n\t\t{Sec: buf.Actime},\n\t\t{Sec: buf.Modtime},\n\t}\n\treturn Utimes(path, tv)\n}\n\nfunc utimes(path string, tv *[2]Timeval) (err error) {\n\tif tv == nil {\n\t\treturn utimensat(AT_FDCWD, path, nil, 0)\n\t}\n\n\tts := []Timespec{\n\t\tNsecToTimespec(TimevalToNsec(tv[0])),\n\t\tNsecToTimespec(TimevalToNsec(tv[1])),\n\t}\n\treturn utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return r.Era }\n\nfunc (r *PtraceRegs) SetPC(era uint64) { r.Era = era }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint64(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint64(length)\n}\n\nfunc (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {\n\trsa.Service_name_len = uint64(length)\n}\n\nfunc Pause() error {\n\t_, err := ppoll(nil, 0, nil, nil)\n\treturn err\n}\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\treturn Renameat2(olddirfd, oldpath, newdirfd, newpath, 0)\n}\n\n//sys\tkexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error)\n\nfunc KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error {\n\tcmdlineLen := len(cmdline)\n\tif cmdlineLen > 0 {\n\t\t// Account for the additional NULL byte added by\n\t\t// BytePtrFromString in kexecFileLoad. The kexec_file_load\n\t\t// syscall expects a NULL-terminated string.\n\t\tcmdlineLen++\n\t}\n\treturn kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)\n}\n\nconst SYS_FSTATAT = SYS_NEWFSTATAT\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && (mips64 || mips64le)\n\npackage unix\n\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFstatfs(fd int, buf *Statfs_t) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetrlimit(resource int, rlim *Rlimit) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tListen(s int, n int) (err error)\n//sys\tPause() (err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tvar ts *Timespec\n\tif timeout != nil {\n\t\tts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000}\n\t}\n\treturn pselect6(nfd, r, w, e, ts, nil)\n}\n\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error)\n//sys\tsetfsgid(gid int) (prev int, err error)\n//sys\tsetfsuid(uid int) (prev int, err error)\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)\n//sys\tStatfs(path string, buf *Statfs_t) (err error)\n//sys\tSyncFileRange(fd int, off int64, n int64, flags int) (err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\tUstat(dev int, ubuf *Ustat_t) (err error)\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)\n\n//sys\tfutimesat(dirfd int, path string, times *[2]Timeval) (err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tvar tv Timeval\n\terr = Gettimeofday(&tv)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tif t != nil {\n\t\t*t = Time_t(tv.Sec)\n\t}\n\treturn Time_t(tv.Sec), nil\n}\n\n//sys\tUtime(path string, buf *Utimbuf) (err error)\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc Ioperm(from int, num int, on int) (err error) {\n\treturn ENOSYS\n}\n\nfunc Iopl(level int) (err error) {\n\treturn ENOSYS\n}\n\ntype stat_t struct {\n\tDev        uint32\n\tPad0       [3]int32\n\tIno        uint64\n\tMode       uint32\n\tNlink      uint32\n\tUid        uint32\n\tGid        uint32\n\tRdev       uint32\n\tPad1       [3]uint32\n\tSize       int64\n\tAtime      uint32\n\tAtime_nsec uint32\n\tMtime      uint32\n\tMtime_nsec uint32\n\tCtime      uint32\n\tCtime_nsec uint32\n\tBlksize    uint32\n\tPad2       uint32\n\tBlocks     int64\n}\n\n//sys\tfstat(fd int, st *stat_t) (err error)\n//sys\tfstatat(dirfd int, path string, st *stat_t, flags int) (err error) = SYS_NEWFSTATAT\n//sys\tlstat(path string, st *stat_t) (err error)\n//sys\tstat(path string, st *stat_t) (err error)\n\nfunc Fstat(fd int, s *Stat_t) (err error) {\n\tst := &stat_t{}\n\terr = fstat(fd, st)\n\tfillStat_t(s, st)\n\treturn\n}\n\nfunc Fstatat(dirfd int, path string, s *Stat_t, flags int) (err error) {\n\tst := &stat_t{}\n\terr = fstatat(dirfd, path, st, flags)\n\tfillStat_t(s, st)\n\treturn\n}\n\nfunc Lstat(path string, s *Stat_t) (err error) {\n\tst := &stat_t{}\n\terr = lstat(path, st)\n\tfillStat_t(s, st)\n\treturn\n}\n\nfunc Stat(path string, s *Stat_t) (err error) {\n\tst := &stat_t{}\n\terr = stat(path, st)\n\tfillStat_t(s, st)\n\treturn\n}\n\nfunc fillStat_t(s *Stat_t, st *stat_t) {\n\ts.Dev = st.Dev\n\ts.Ino = st.Ino\n\ts.Mode = st.Mode\n\ts.Nlink = st.Nlink\n\ts.Uid = st.Uid\n\ts.Gid = st.Gid\n\ts.Rdev = st.Rdev\n\ts.Size = st.Size\n\ts.Atim = Timespec{int64(st.Atime), int64(st.Atime_nsec)}\n\ts.Mtim = Timespec{int64(st.Mtime), int64(st.Mtime_nsec)}\n\ts.Ctim = Timespec{int64(st.Ctime), int64(st.Ctime_nsec)}\n\ts.Blksize = st.Blksize\n\ts.Blocks = st.Blocks\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return r.Epc }\n\nfunc (r *PtraceRegs) SetPC(pc uint64) { r.Epc = pc }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint64(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint64(length)\n}\n\nfunc (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {\n\trsa.Service_name_len = uint64(length)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && (mips || mipsle)\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)\n\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFtruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetuid() (uid int)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tListen(s int, n int) (err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64\n//sys\tsetfsgid(gid int) (prev int, err error)\n//sys\tsetfsuid(uid int) (prev int, err error)\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error)\n//sys\tSyncFileRange(fd int, off int64, n int64, flags int) (err error)\n//sys\tTruncate(path string, length int64) (err error) = SYS_TRUNCATE64\n//sys\tUstat(dev int, ubuf *Ustat_t) (err error)\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n\n//sys\tIoperm(from int, num int, on int) (err error)\n//sys\tIopl(level int) (err error)\n\n//sys\tfutimesat(dirfd int, path string, times *[2]Timeval) (err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n//sysnb\tTime(t *Time_t) (tt Time_t, err error)\n//sys\tUtime(path string, buf *Utimbuf) (err error)\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\n//sys\tLstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64\n//sys\tFstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64\n//sys\tFstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64\n//sys\tStat(path string, stat *Stat_t) (err error) = SYS_STAT64\n\n//sys\tPause() (err error)\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e := Syscall(SYS_FSTATFS64, uintptr(fd), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf)))\n\tif e != 0 {\n\t\terr = errnoErr(e)\n\t}\n\treturn\n}\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tp, err := BytePtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\t_, _, e := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(p)), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf)))\n\tif e != 0 {\n\t\terr = errnoErr(e)\n\t}\n\treturn\n}\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\t_, _, e := Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offset>>32), uintptr(offset), uintptr(unsafe.Pointer(&off)), uintptr(whence), 0)\n\tif e != 0 {\n\t\terr = errnoErr(e)\n\t}\n\treturn\n}\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: int32(sec), Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: int32(sec), Usec: int32(usec)}\n}\n\n//sys\tmmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error)\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tpage := uintptr(offset / 4096)\n\tif offset != int64(page)*4096 {\n\t\treturn 0, EINVAL\n\t}\n\treturn mmap2(addr, length, prot, flags, fd, page)\n}\n\nconst rlimInf32 = ^uint32(0)\nconst rlimInf64 = ^uint64(0)\n\ntype rlimit32 struct {\n\tCur uint32\n\tMax uint32\n}\n\n//sysnb\tgetrlimit(resource int, rlim *rlimit32) (err error) = SYS_GETRLIMIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\terr = Prlimit(0, resource, nil, rlim)\n\tif err != ENOSYS {\n\t\treturn err\n\t}\n\n\trl := rlimit32{}\n\terr = getrlimit(resource, &rl)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif rl.Cur == rlimInf32 {\n\t\trlim.Cur = rlimInf64\n\t} else {\n\t\trlim.Cur = uint64(rl.Cur)\n\t}\n\n\tif rl.Max == rlimInf32 {\n\t\trlim.Max = rlimInf64\n\t} else {\n\t\trlim.Max = uint64(rl.Max)\n\t}\n\treturn\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return r.Epc }\n\nfunc (r *PtraceRegs) SetPC(pc uint64) { r.Epc = pc }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {\n\trsa.Service_name_len = uint32(length)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/syscall_linux_ppc.go",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && ppc\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64\n//sys\tFstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64\n//sys\tFtruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetuid() (uid int)\n//sys\tIoperm(from int, num int, on int) (err error)\n//sys\tIopl(level int) (err error)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tListen(s int, n int) (err error)\n//sys\tLstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64\n//sys\tPause() (err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64\n//sys\tsetfsgid(gid int) (prev int, err error)\n//sys\tsetfsuid(uid int) (prev int, err error)\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error)\n//sys\tStat(path string, stat *Stat_t) (err error) = SYS_STAT64\n//sys\tTruncate(path string, length int64) (err error) = SYS_TRUNCATE64\n//sys\tUstat(dev int, ubuf *Ustat_t) (err error)\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n\n//sys\tfutimesat(dirfd int, path string, times *[2]Timeval) (err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n//sysnb\tTime(t *Time_t) (tt Time_t, err error)\n//sys\tUtime(path string, buf *Utimbuf) (err error)\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64_64, uintptr(fd), uintptr(advice), uintptr(offset>>32), uintptr(offset), uintptr(length>>32), uintptr(length))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc seek(fd int, offset int64, whence int) (int64, syscall.Errno) {\n\tvar newoffset int64\n\toffsetLow := uint32(offset & 0xffffffff)\n\toffsetHigh := uint32((offset >> 32) & 0xffffffff)\n\t_, _, err := Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offsetHigh), uintptr(offsetLow), uintptr(unsafe.Pointer(&newoffset)), uintptr(whence), 0)\n\treturn newoffset, err\n}\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tnewoffset, errno := seek(fd, offset, whence)\n\tif errno != 0 {\n\t\treturn 0, errno\n\t}\n\treturn newoffset, nil\n}\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e := Syscall(SYS_FSTATFS64, uintptr(fd), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf)))\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tpathp, err := BytePtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\t_, _, e := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(pathp)), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf)))\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\n//sys\tmmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error)\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tpage := uintptr(offset / 4096)\n\tif offset != int64(page)*4096 {\n\t\treturn 0, EINVAL\n\t}\n\treturn mmap2(addr, length, prot, flags, fd, page)\n}\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: int32(sec), Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: int32(sec), Usec: int32(usec)}\n}\n\ntype rlimit32 struct {\n\tCur uint32\n\tMax uint32\n}\n\n//sysnb\tgetrlimit(resource int, rlim *rlimit32) (err error) = SYS_UGETRLIMIT\n\nconst rlimInf32 = ^uint32(0)\nconst rlimInf64 = ^uint64(0)\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\terr = Prlimit(0, resource, nil, rlim)\n\tif err != ENOSYS {\n\t\treturn err\n\t}\n\n\trl := rlimit32{}\n\terr = getrlimit(resource, &rl)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif rl.Cur == rlimInf32 {\n\t\trlim.Cur = rlimInf64\n\t} else {\n\t\trlim.Cur = uint64(rl.Cur)\n\t}\n\n\tif rl.Max == rlimInf32 {\n\t\trlim.Max = rlimInf64\n\t} else {\n\t\trlim.Max = uint64(rl.Max)\n\t}\n\treturn\n}\n\nfunc (r *PtraceRegs) PC() uint32 { return r.Nip }\n\nfunc (r *PtraceRegs) SetPC(pc uint32) { r.Nip = pc }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {\n\trsa.Service_name_len = uint32(length)\n}\n\n//sys\tsyncFileRange2(fd int, flags int, off int64, n int64) (err error) = SYS_SYNC_FILE_RANGE2\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) error {\n\t// The sync_file_range and sync_file_range2 syscalls differ only in the\n\t// order of their arguments.\n\treturn syncFileRange2(fd, flags, off, n)\n}\n\n//sys\tkexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error)\n\nfunc KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error {\n\tcmdlineLen := len(cmdline)\n\tif cmdlineLen > 0 {\n\t\t// Account for the additional NULL byte added by\n\t\t// BytePtrFromString in kexecFileLoad. The kexec_file_load\n\t\t// syscall expects a NULL-terminated string.\n\t\tcmdlineLen++\n\t}\n\treturn kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && (ppc64 || ppc64le)\n\npackage unix\n\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_NEWFSTATAT\n//sys\tFstatfs(fd int, buf *Statfs_t) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetrlimit(resource int, rlim *Rlimit) (err error) = SYS_UGETRLIMIT\n//sysnb\tGetuid() (uid int)\n//sys\tIoperm(from int, num int, on int) (err error)\n//sys\tIopl(level int) (err error)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tListen(s int, n int) (err error)\n//sys\tLstat(path string, stat *Stat_t) (err error)\n//sys\tPause() (err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error)\n//sys\tsetfsgid(gid int) (prev int, err error)\n//sys\tsetfsuid(uid int) (prev int, err error)\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)\n//sys\tStat(path string, stat *Stat_t) (err error)\n//sys\tStatfs(path string, buf *Statfs_t) (err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\tUstat(dev int, ubuf *Ustat_t) (err error)\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)\n\n//sys\tfutimesat(dirfd int, path string, times *[2]Timeval) (err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n//sysnb\tTime(t *Time_t) (tt Time_t, err error)\n//sys\tUtime(path string, buf *Utimbuf) (err error)\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return r.Nip }\n\nfunc (r *PtraceRegs) SetPC(pc uint64) { r.Nip = pc }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint64(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint64(length)\n}\n\nfunc (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {\n\trsa.Service_name_len = uint64(length)\n}\n\n//sys\tsyncFileRange2(fd int, flags int, off int64, n int64) (err error) = SYS_SYNC_FILE_RANGE2\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) error {\n\t// The sync_file_range and sync_file_range2 syscalls differ only in the\n\t// order of their arguments.\n\treturn syncFileRange2(fd, flags, off, n)\n}\n\n//sys\tkexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error)\n\nfunc KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error {\n\tcmdlineLen := len(cmdline)\n\tif cmdlineLen > 0 {\n\t\t// Account for the additional NULL byte added by\n\t\t// BytePtrFromString in kexecFileLoad. The kexec_file_load\n\t\t// syscall expects a NULL-terminated string.\n\t\tcmdlineLen++\n\t}\n\treturn kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build riscv64 && linux\n\npackage unix\n\nimport \"unsafe\"\n\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) = SYS_EPOLL_PWAIT\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(fd int, path string, stat *Stat_t, flags int) (err error)\n//sys\tFstatfs(fd int, buf *Statfs_t) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetrlimit(resource int, rlim *Rlimit) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tListen(s int, n int) (err error)\n//sys\tMemfdSecret(flags int) (fd int, err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tSeek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tvar ts *Timespec\n\tif timeout != nil {\n\t\tts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000}\n\t}\n\treturn pselect6(nfd, r, w, e, ts, nil)\n}\n\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error)\n//sys\tsetfsgid(gid int) (prev int, err error)\n//sys\tsetfsuid(uid int) (prev int, err error)\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\treturn Fstatat(AT_FDCWD, path, stat, 0)\n}\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\treturn Fchownat(AT_FDCWD, path, uid, gid, AT_SYMLINK_NOFOLLOW)\n}\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\treturn Fstatat(AT_FDCWD, path, stat, AT_SYMLINK_NOFOLLOW)\n}\n\n//sys\tStatfs(path string, buf *Statfs_t) (err error)\n//sys\tSyncFileRange(fd int, off int64, n int64, flags int) (err error)\n//sys\tTruncate(path string, length int64) (err error)\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\treturn ENOSYS\n}\n\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)\n\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc futimesat(dirfd int, path string, tv *[2]Timeval) (err error) {\n\tif tv == nil {\n\t\treturn utimensat(dirfd, path, nil, 0)\n\t}\n\n\tts := []Timespec{\n\t\tNsecToTimespec(TimevalToNsec(tv[0])),\n\t\tNsecToTimespec(TimevalToNsec(tv[1])),\n\t}\n\treturn utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)\n}\n\nfunc Time(t *Time_t) (Time_t, error) {\n\tvar tv Timeval\n\terr := Gettimeofday(&tv)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tif t != nil {\n\t\t*t = Time_t(tv.Sec)\n\t}\n\treturn Time_t(tv.Sec), nil\n}\n\nfunc Utime(path string, buf *Utimbuf) error {\n\ttv := []Timeval{\n\t\t{Sec: buf.Actime},\n\t\t{Sec: buf.Modtime},\n\t}\n\treturn Utimes(path, tv)\n}\n\nfunc utimes(path string, tv *[2]Timeval) (err error) {\n\tif tv == nil {\n\t\treturn utimensat(AT_FDCWD, path, nil, 0)\n\t}\n\n\tts := []Timespec{\n\t\tNsecToTimespec(TimevalToNsec(tv[0])),\n\t\tNsecToTimespec(TimevalToNsec(tv[1])),\n\t}\n\treturn utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return r.Pc }\n\nfunc (r *PtraceRegs) SetPC(pc uint64) { r.Pc = pc }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint64(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint64(length)\n}\n\nfunc (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {\n\trsa.Service_name_len = uint64(length)\n}\n\nfunc Pause() error {\n\t_, err := ppoll(nil, 0, nil, nil)\n\treturn err\n}\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\treturn Renameat2(olddirfd, oldpath, newdirfd, newpath, 0)\n}\n\n//sys\tkexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error)\n\nfunc KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error {\n\tcmdlineLen := len(cmdline)\n\tif cmdlineLen > 0 {\n\t\t// Account for the additional NULL byte added by\n\t\t// BytePtrFromString in kexecFileLoad. The kexec_file_load\n\t\t// syscall expects a NULL-terminated string.\n\t\tcmdlineLen++\n\t}\n\treturn kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)\n}\n\n//sys\triscvHWProbe(pairs []RISCVHWProbePairs, cpuCount uintptr, cpus *CPUSet, flags uint) (err error)\n\nfunc RISCVHWProbe(pairs []RISCVHWProbePairs, set *CPUSet, flags uint) (err error) {\n\tvar setSize uintptr\n\n\tif set != nil {\n\t\tsetSize = uintptr(unsafe.Sizeof(*set))\n\t}\n\treturn riscvHWProbe(pairs, setSize, set, flags)\n}\n\nconst SYS_FSTATAT = SYS_NEWFSTATAT\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build s390x && linux\n\npackage unix\n\nimport (\n\t\"unsafe\"\n)\n\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_NEWFSTATAT\n//sys\tFstatfs(fd int, buf *Statfs_t) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetrlimit(resource int, rlim *Rlimit) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tLstat(path string, stat *Stat_t) (err error)\n//sys\tPause() (err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error)\n//sys\tsetfsgid(gid int) (prev int, err error)\n//sys\tsetfsuid(uid int) (prev int, err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)\n//sys\tStat(path string, stat *Stat_t) (err error)\n//sys\tStatfs(path string, buf *Statfs_t) (err error)\n//sys\tSyncFileRange(fd int, off int64, n int64, flags int) (err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\tUstat(dev int, ubuf *Ustat_t) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n\n//sys\tfutimesat(dirfd int, path string, times *[2]Timeval) (err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tvar tv Timeval\n\terr = Gettimeofday(&tv)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tif t != nil {\n\t\t*t = Time_t(tv.Sec)\n\t}\n\treturn Time_t(tv.Sec), nil\n}\n\n//sys\tUtime(path string, buf *Utimbuf) (err error)\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc Ioperm(from int, num int, on int) (err error) {\n\treturn ENOSYS\n}\n\nfunc Iopl(level int) (err error) {\n\treturn ENOSYS\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return r.Psw.Addr }\n\nfunc (r *PtraceRegs) SetPC(pc uint64) { r.Psw.Addr = pc }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint64(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint64(length)\n}\n\nfunc (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {\n\trsa.Service_name_len = uint64(length)\n}\n\n// Linux on s390x uses the old mmap interface, which requires arguments to be passed in a struct.\n// mmap2 also requires arguments to be passed in a struct; it is currently not exposed in <asm/unistd.h>.\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tmmap_args := [6]uintptr{addr, length, uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)}\n\tr0, _, e1 := Syscall(SYS_MMAP, uintptr(unsafe.Pointer(&mmap_args[0])), 0, 0)\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// On s390x Linux, all the socket calls go through an extra indirection.\n// The arguments to the underlying system call (SYS_SOCKETCALL) are the\n// number below and a pointer to an array of uintptr.\nconst (\n\t// see linux/net.h\n\tnetSocket      = 1\n\tnetBind        = 2\n\tnetConnect     = 3\n\tnetListen      = 4\n\tnetAccept      = 5\n\tnetGetSockName = 6\n\tnetGetPeerName = 7\n\tnetSocketPair  = 8\n\tnetSend        = 9\n\tnetRecv        = 10\n\tnetSendTo      = 11\n\tnetRecvFrom    = 12\n\tnetShutdown    = 13\n\tnetSetSockOpt  = 14\n\tnetGetSockOpt  = 15\n\tnetSendMsg     = 16\n\tnetRecvMsg     = 17\n\tnetAccept4     = 18\n\tnetRecvMMsg    = 19\n\tnetSendMMsg    = 20\n)\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (int, error) {\n\targs := [4]uintptr{uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags)}\n\tfd, _, err := Syscall(SYS_SOCKETCALL, netAccept4, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn 0, err\n\t}\n\treturn int(fd), nil\n}\n\nfunc getsockname(s int, rsa *RawSockaddrAny, addrlen *_Socklen) error {\n\targs := [3]uintptr{uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))}\n\t_, _, err := RawSyscall(SYS_SOCKETCALL, netGetSockName, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc getpeername(s int, rsa *RawSockaddrAny, addrlen *_Socklen) error {\n\targs := [3]uintptr{uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))}\n\t_, _, err := RawSyscall(SYS_SOCKETCALL, netGetPeerName, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc socketpair(domain int, typ int, flags int, fd *[2]int32) error {\n\targs := [4]uintptr{uintptr(domain), uintptr(typ), uintptr(flags), uintptr(unsafe.Pointer(fd))}\n\t_, _, err := RawSyscall(SYS_SOCKETCALL, netSocketPair, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) error {\n\targs := [3]uintptr{uintptr(s), uintptr(addr), uintptr(addrlen)}\n\t_, _, err := Syscall(SYS_SOCKETCALL, netBind, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) error {\n\targs := [3]uintptr{uintptr(s), uintptr(addr), uintptr(addrlen)}\n\t_, _, err := Syscall(SYS_SOCKETCALL, netConnect, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc socket(domain int, typ int, proto int) (int, error) {\n\targs := [3]uintptr{uintptr(domain), uintptr(typ), uintptr(proto)}\n\tfd, _, err := RawSyscall(SYS_SOCKETCALL, netSocket, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn 0, err\n\t}\n\treturn int(fd), nil\n}\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) error {\n\targs := [5]uintptr{uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen))}\n\t_, _, err := Syscall(SYS_SOCKETCALL, netGetSockOpt, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) error {\n\targs := [5]uintptr{uintptr(s), uintptr(level), uintptr(name), uintptr(val), vallen}\n\t_, _, err := Syscall(SYS_SOCKETCALL, netSetSockOpt, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc recvfrom(s int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (int, error) {\n\tvar base uintptr\n\tif len(p) > 0 {\n\t\tbase = uintptr(unsafe.Pointer(&p[0]))\n\t}\n\targs := [6]uintptr{uintptr(s), base, uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))}\n\tn, _, err := Syscall(SYS_SOCKETCALL, netRecvFrom, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn 0, err\n\t}\n\treturn int(n), nil\n}\n\nfunc sendto(s int, p []byte, flags int, to unsafe.Pointer, addrlen _Socklen) error {\n\tvar base uintptr\n\tif len(p) > 0 {\n\t\tbase = uintptr(unsafe.Pointer(&p[0]))\n\t}\n\targs := [6]uintptr{uintptr(s), base, uintptr(len(p)), uintptr(flags), uintptr(to), uintptr(addrlen)}\n\t_, _, err := Syscall(SYS_SOCKETCALL, netSendTo, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (int, error) {\n\targs := [3]uintptr{uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)}\n\tn, _, err := Syscall(SYS_SOCKETCALL, netRecvMsg, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn 0, err\n\t}\n\treturn int(n), nil\n}\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (int, error) {\n\targs := [3]uintptr{uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)}\n\tn, _, err := Syscall(SYS_SOCKETCALL, netSendMsg, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn 0, err\n\t}\n\treturn int(n), nil\n}\n\nfunc Listen(s int, n int) error {\n\targs := [2]uintptr{uintptr(s), uintptr(n)}\n\t_, _, err := Syscall(SYS_SOCKETCALL, netListen, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc Shutdown(s, how int) error {\n\targs := [2]uintptr{uintptr(s), uintptr(how)}\n\t_, _, err := Syscall(SYS_SOCKETCALL, netShutdown, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n//sys\tkexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error)\n\nfunc KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error {\n\tcmdlineLen := len(cmdline)\n\tif cmdlineLen > 0 {\n\t\t// Account for the additional NULL byte added by\n\t\t// BytePtrFromString in kexecFileLoad. The kexec_file_load\n\t\t// syscall expects a NULL-terminated string.\n\t\tcmdlineLen++\n\t}\n\treturn kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build sparc64 && linux\n\npackage unix\n\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64\n//sys\tFstatfs(fd int, buf *Statfs_t) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetrlimit(resource int, rlim *Rlimit) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tListen(s int, n int) (err error)\n//sys\tLstat(path string, stat *Stat_t) (err error)\n//sys\tPause() (err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error)\n//sys\tsetfsgid(gid int) (prev int, err error)\n//sys\tsetfsuid(uid int) (prev int, err error)\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)\n//sys\tStat(path string, stat *Stat_t) (err error)\n//sys\tStatfs(path string, buf *Statfs_t) (err error)\n//sys\tSyncFileRange(fd int, off int64, n int64, flags int) (err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)\n\nfunc Ioperm(from int, num int, on int) (err error) {\n\treturn ENOSYS\n}\n\nfunc Iopl(level int) (err error) {\n\treturn ENOSYS\n}\n\n//sys\tfutimesat(dirfd int, path string, times *[2]Timeval) (err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tvar tv Timeval\n\terr = Gettimeofday(&tv)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tif t != nil {\n\t\t*t = Time_t(tv.Sec)\n\t}\n\treturn Time_t(tv.Sec), nil\n}\n\n//sys\tUtime(path string, buf *Utimbuf) (err error)\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: int32(usec)}\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return r.Tpc }\n\nfunc (r *PtraceRegs) SetPC(pc uint64) { r.Tpc = pc }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint64(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint64(length)\n}\n\nfunc (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {\n\trsa.Service_name_len = uint64(length)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/syscall_netbsd.go",
    "content": "// Copyright 2009,2010 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// NetBSD system calls.\n// This file is compiled as ordinary Go code,\n// but it is also input to mksyscall,\n// which parses the //sys lines and generates system call stubs.\n// Note that sometimes we use a lowercase //sys name and wrap\n// it in our own nicer implementation, either here or in\n// syscall_bsd.go or syscall_unix.go.\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets.\ntype SockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [12]int8\n\traw    RawSockaddrDatalink\n}\n\nfunc anyToSockaddrGOOS(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {\n\treturn nil, EAFNOSUPPORT\n}\n\nfunc Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)\n\nfunc sysctlNodes(mib []_C_int) (nodes []Sysctlnode, err error) {\n\tvar olen uintptr\n\n\t// Get a list of all sysctl nodes below the given MIB by performing\n\t// a sysctl for the given MIB with CTL_QUERY appended.\n\tmib = append(mib, CTL_QUERY)\n\tqnode := Sysctlnode{Flags: SYSCTL_VERS_1}\n\tqp := (*byte)(unsafe.Pointer(&qnode))\n\tsz := unsafe.Sizeof(qnode)\n\tif err = sysctl(mib, nil, &olen, qp, sz); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Now that we know the size, get the actual nodes.\n\tnodes = make([]Sysctlnode, olen/sz)\n\tnp := (*byte)(unsafe.Pointer(&nodes[0]))\n\tif err = sysctl(mib, np, &olen, qp, sz); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn nodes, nil\n}\n\nfunc nametomib(name string) (mib []_C_int, err error) {\n\t// Split name into components.\n\tvar parts []string\n\tlast := 0\n\tfor i := 0; i < len(name); i++ {\n\t\tif name[i] == '.' {\n\t\t\tparts = append(parts, name[last:i])\n\t\t\tlast = i + 1\n\t\t}\n\t}\n\tparts = append(parts, name[last:])\n\n\t// Discover the nodes and construct the MIB OID.\n\tfor partno, part := range parts {\n\t\tnodes, err := sysctlNodes(mib)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tfor _, node := range nodes {\n\t\t\tn := make([]byte, 0)\n\t\t\tfor i := range node.Name {\n\t\t\t\tif node.Name[i] != 0 {\n\t\t\t\t\tn = append(n, byte(node.Name[i]))\n\t\t\t\t}\n\t\t\t}\n\t\t\tif string(n) == part {\n\t\t\t\tmib = append(mib, _C_int(node.Num))\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif len(mib) != partno+1 {\n\t\t\treturn nil, EINVAL\n\t\t}\n\t}\n\n\treturn mib, nil\n}\n\nfunc direntIno(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Fileno), unsafe.Sizeof(Dirent{}.Fileno))\n}\n\nfunc direntReclen(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen))\n}\n\nfunc direntNamlen(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen))\n}\n\nfunc SysctlUvmexp(name string) (*Uvmexp, error) {\n\tmib, err := sysctlmib(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tn := uintptr(SizeofUvmexp)\n\tvar u Uvmexp\n\tif err := sysctl(mib, (*byte)(unsafe.Pointer(&u)), &n, nil, 0); err != nil {\n\t\treturn nil, err\n\t}\n\treturn &u, nil\n}\n\nfunc Pipe(p []int) (err error) {\n\treturn Pipe2(p, 0)\n}\n\n//sysnb\tpipe2(p *[2]_C_int, flags int) (err error)\n\nfunc Pipe2(p []int, flags int) error {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\terr := pipe2(&pp, flags)\n\tif err == nil {\n\t\tp[0] = int(pp[0])\n\t\tp[1] = int(pp[1])\n\t}\n\treturn err\n}\n\n//sys\tGetdents(fd int, buf []byte) (n int, err error)\n\nfunc Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {\n\tn, err = Getdents(fd, buf)\n\tif err != nil || basep == nil {\n\t\treturn\n\t}\n\n\tvar off int64\n\toff, err = Seek(fd, 0, 1 /* SEEK_CUR */)\n\tif err != nil {\n\t\t*basep = ^uintptr(0)\n\t\treturn\n\t}\n\t*basep = uintptr(off)\n\tif unsafe.Sizeof(*basep) == 8 {\n\t\treturn\n\t}\n\tif off>>32 != 0 {\n\t\t// We can't stuff the offset back into a uintptr, so any\n\t\t// future calls would be suspect. Generate an error.\n\t\t// EIO is allowed by getdirentries.\n\t\terr = EIO\n\t}\n\treturn\n}\n\n//sys\tGetcwd(buf []byte) (n int, err error) = SYS___GETCWD\n\n// TODO\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\treturn -1, ENOSYS\n}\n\n//sys\tioctl(fd int, req uint, arg uintptr) (err error)\n//sys\tioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) = SYS_IOCTL\n\n//sys\tsysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL\n\nfunc IoctlGetPtmget(fd int, req uint) (*Ptmget, error) {\n\tvar value Ptmget\n\terr := ioctlPtr(fd, req, unsafe.Pointer(&value))\n\treturn &value, err\n}\n\nfunc Uname(uname *Utsname) error {\n\tmib := []_C_int{CTL_KERN, KERN_OSTYPE}\n\tn := unsafe.Sizeof(uname.Sysname)\n\tif err := sysctl(mib, &uname.Sysname[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_HOSTNAME}\n\tn = unsafe.Sizeof(uname.Nodename)\n\tif err := sysctl(mib, &uname.Nodename[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_OSRELEASE}\n\tn = unsafe.Sizeof(uname.Release)\n\tif err := sysctl(mib, &uname.Release[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_VERSION}\n\tn = unsafe.Sizeof(uname.Version)\n\tif err := sysctl(mib, &uname.Version[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\t// The version might have newlines or tabs in it, convert them to\n\t// spaces.\n\tfor i, b := range uname.Version {\n\t\tif b == '\\n' || b == '\\t' {\n\t\t\tif i == len(uname.Version)-1 {\n\t\t\t\tuname.Version[i] = 0\n\t\t\t} else {\n\t\t\t\tuname.Version[i] = ' '\n\t\t\t}\n\t\t}\n\t}\n\n\tmib = []_C_int{CTL_HW, HW_MACHINE}\n\tn = unsafe.Sizeof(uname.Machine)\n\tif err := sysctl(mib, &uname.Machine[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\nfunc Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\treturn sendfile(outfd, infd, offset, count)\n}\n\nfunc Fstatvfs(fd int, buf *Statvfs_t) (err error) {\n\treturn Fstatvfs1(fd, buf, ST_WAIT)\n}\n\nfunc Statvfs(path string, buf *Statvfs_t) (err error) {\n\treturn Statvfs1(path, buf, ST_WAIT)\n}\n\nfunc Getvfsstat(buf []Statvfs_t, flags int) (n int, err error) {\n\tvar (\n\t\t_p0     unsafe.Pointer\n\t\tbufsize uintptr\n\t)\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t\tbufsize = unsafe.Sizeof(Statvfs_t{}) * uintptr(len(buf))\n\t}\n\tr0, _, e1 := Syscall(SYS_GETVFSSTAT, uintptr(_p0), bufsize, uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n/*\n * Exposed directly\n */\n//sys\tAccess(path string, mode uint32) (err error)\n//sys\tAdjtime(delta *Timeval, olddelta *Timeval) (err error)\n//sys\tChdir(path string) (err error)\n//sys\tChflags(path string, flags int) (err error)\n//sys\tChmod(path string, mode uint32) (err error)\n//sys\tChown(path string, uid int, gid int) (err error)\n//sys\tChroot(path string) (err error)\n//sys\tClockGettime(clockid int32, time *Timespec) (err error)\n//sys\tClose(fd int) (err error)\n//sys\tDup(fd int) (nfd int, err error)\n//sys\tDup2(from int, to int) (err error)\n//sys\tDup3(from int, to int, flags int) (err error)\n//sys\tExit(code int)\n//sys\tExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error)\n//sys\tExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error)\n//sys\tExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error)\n//sys\tExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error)\n//sys\tFaccessat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_POSIX_FADVISE\n//sys\tFchdir(fd int) (err error)\n//sys\tFchflags(fd int, flags int) (err error)\n//sys\tFchmod(fd int, mode uint32) (err error)\n//sys\tFchmodat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFchownat(dirfd int, path string, uid int, gid int, flags int) (err error)\n//sys\tFlock(fd int, how int) (err error)\n//sys\tFpathconf(fd int, name int) (val int, err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(fd int, path string, stat *Stat_t, flags int) (err error)\n//sys\tFstatvfs1(fd int, buf *Statvfs_t, flags int) (err error) = SYS_FSTATVFS1\n//sys\tFsync(fd int) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (uid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetpgid(pid int) (pgid int, err error)\n//sysnb\tGetpgrp() (pgrp int)\n//sysnb\tGetpid() (pid int)\n//sysnb\tGetppid() (ppid int)\n//sys\tGetpriority(which int, who int) (prio int, err error)\n//sysnb\tGetrlimit(which int, lim *Rlimit) (err error)\n//sysnb\tGetrusage(who int, rusage *Rusage) (err error)\n//sysnb\tGetsid(pid int) (sid int, err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tIssetugid() (tainted bool)\n//sys\tKill(pid int, signum syscall.Signal) (err error)\n//sys\tKqueue() (fd int, err error)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tLink(path string, link string) (err error)\n//sys\tLinkat(pathfd int, path string, linkfd int, link string, flags int) (err error)\n//sys\tListen(s int, backlog int) (err error)\n//sys\tLstat(path string, stat *Stat_t) (err error)\n//sys\tMkdir(path string, mode uint32) (err error)\n//sys\tMkdirat(dirfd int, path string, mode uint32) (err error)\n//sys\tMkfifo(path string, mode uint32) (err error)\n//sys\tMkfifoat(dirfd int, path string, mode uint32) (err error)\n//sys\tMknod(path string, mode uint32, dev int) (err error)\n//sys\tMknodat(dirfd int, path string, mode uint32, dev int) (err error)\n//sys\tNanosleep(time *Timespec, leftover *Timespec) (err error)\n//sys\tOpen(path string, mode int, perm uint32) (fd int, err error)\n//sys\tOpenat(dirfd int, path string, mode int, perm uint32) (fd int, err error)\n//sys\tPathconf(path string, name int) (val int, err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error)\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error)\n//sys\tread(fd int, p []byte) (n int, err error)\n//sys\tReadlink(path string, buf []byte) (n int, err error)\n//sys\tReadlinkat(dirfd int, path string, buf []byte) (n int, err error)\n//sys\tRename(from string, to string) (err error)\n//sys\tRenameat(fromfd int, from string, tofd int, to string) (err error)\n//sys\tRevoke(path string) (err error)\n//sys\tRmdir(path string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)\n//sysnb\tSetegid(egid int) (err error)\n//sysnb\tSeteuid(euid int) (err error)\n//sysnb\tSetgid(gid int) (err error)\n//sysnb\tSetpgid(pid int, pgid int) (err error)\n//sys\tSetpriority(which int, who int, prio int) (err error)\n//sysnb\tSetregid(rgid int, egid int) (err error)\n//sysnb\tSetreuid(ruid int, euid int) (err error)\n//sysnb\tSetsid() (pid int, err error)\n//sysnb\tSettimeofday(tp *Timeval) (err error)\n//sysnb\tSetuid(uid int) (err error)\n//sys\tStat(path string, stat *Stat_t) (err error)\n//sys\tStatvfs1(path string, buf *Statvfs_t, flags int) (err error) = SYS_STATVFS1\n//sys\tSymlink(path string, link string) (err error)\n//sys\tSymlinkat(oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSync() (err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\tUmask(newmask int) (oldmask int)\n//sys\tUnlink(path string) (err error)\n//sys\tUnlinkat(dirfd int, path string, flags int) (err error)\n//sys\tUnmount(path string, flags int) (err error)\n//sys\twrite(fd int, p []byte) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)\n//sys\tmunmap(addr uintptr, length uintptr) (err error)\n//sys\tutimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error)\n\nconst (\n\tmremapFixed     = MAP_FIXED\n\tmremapDontunmap = 0\n\tmremapMaymove   = 0\n)\n\n//sys\tmremapNetBSD(oldp uintptr, oldsize uintptr, newp uintptr, newsize uintptr, flags int) (xaddr uintptr, err error) = SYS_MREMAP\n\nfunc mremap(oldaddr uintptr, oldlength uintptr, newlength uintptr, flags int, newaddr uintptr) (uintptr, error) {\n\treturn mremapNetBSD(oldaddr, oldlength, newaddr, newlength, flags)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build 386 && netbsd\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: int32(usec)}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint32(fd)\n\tk.Filter = uint32(mode)\n\tk.Flags = uint32(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build amd64 && netbsd\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: int32(usec)}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = uint32(mode)\n\tk.Flags = uint32(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build arm && netbsd\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: int32(usec)}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint32(fd)\n\tk.Filter = uint32(mode)\n\tk.Flags = uint32(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build arm64 && netbsd\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: int32(usec)}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = uint32(mode)\n\tk.Flags = uint32(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/syscall_openbsd.go",
    "content": "// Copyright 2009,2010 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// OpenBSD system calls.\n// This file is compiled as ordinary Go code,\n// but it is also input to mksyscall,\n// which parses the //sys lines and generates system call stubs.\n// Note that sometimes we use a lowercase //sys name and wrap\n// it in our own nicer implementation, either here or in\n// syscall_bsd.go or syscall_unix.go.\n\npackage unix\n\nimport (\n\t\"sort\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets.\ntype SockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [24]int8\n\traw    RawSockaddrDatalink\n}\n\nfunc anyToSockaddrGOOS(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {\n\treturn nil, EAFNOSUPPORT\n}\n\nfunc Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)\n\nfunc nametomib(name string) (mib []_C_int, err error) {\n\ti := sort.Search(len(sysctlMib), func(i int) bool {\n\t\treturn sysctlMib[i].ctlname >= name\n\t})\n\tif i < len(sysctlMib) && sysctlMib[i].ctlname == name {\n\t\treturn sysctlMib[i].ctloid, nil\n\t}\n\treturn nil, EINVAL\n}\n\nfunc direntIno(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Fileno), unsafe.Sizeof(Dirent{}.Fileno))\n}\n\nfunc direntReclen(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen))\n}\n\nfunc direntNamlen(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen))\n}\n\nfunc SysctlUvmexp(name string) (*Uvmexp, error) {\n\tmib, err := sysctlmib(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tn := uintptr(SizeofUvmexp)\n\tvar u Uvmexp\n\tif err := sysctl(mib, (*byte)(unsafe.Pointer(&u)), &n, nil, 0); err != nil {\n\t\treturn nil, err\n\t}\n\tif n != SizeofUvmexp {\n\t\treturn nil, EIO\n\t}\n\treturn &u, nil\n}\n\nfunc Pipe(p []int) (err error) {\n\treturn Pipe2(p, 0)\n}\n\n//sysnb\tpipe2(p *[2]_C_int, flags int) (err error)\n\nfunc Pipe2(p []int, flags int) error {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\terr := pipe2(&pp, flags)\n\tif err == nil {\n\t\tp[0] = int(pp[0])\n\t\tp[1] = int(pp[1])\n\t}\n\treturn err\n}\n\n//sys\tGetdents(fd int, buf []byte) (n int, err error)\n\nfunc Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {\n\tn, err = Getdents(fd, buf)\n\tif err != nil || basep == nil {\n\t\treturn\n\t}\n\n\tvar off int64\n\toff, err = Seek(fd, 0, 1 /* SEEK_CUR */)\n\tif err != nil {\n\t\t*basep = ^uintptr(0)\n\t\treturn\n\t}\n\t*basep = uintptr(off)\n\tif unsafe.Sizeof(*basep) == 8 {\n\t\treturn\n\t}\n\tif off>>32 != 0 {\n\t\t// We can't stuff the offset back into a uintptr, so any\n\t\t// future calls would be suspect. Generate an error.\n\t\t// EIO was allowed by getdirentries.\n\t\terr = EIO\n\t}\n\treturn\n}\n\n//sys\tGetcwd(buf []byte) (n int, err error) = SYS___GETCWD\n\nfunc Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\treturn sendfile(outfd, infd, offset, count)\n}\n\n// TODO\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\treturn -1, ENOSYS\n}\n\nfunc Getfsstat(buf []Statfs_t, flags int) (n int, err error) {\n\tvar bufptr *Statfs_t\n\tvar bufsize uintptr\n\tif len(buf) > 0 {\n\t\tbufptr = &buf[0]\n\t\tbufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf))\n\t}\n\treturn getfsstat(bufptr, bufsize, flags)\n}\n\n//sysnb\tgetresuid(ruid *_C_int, euid *_C_int, suid *_C_int)\n//sysnb\tgetresgid(rgid *_C_int, egid *_C_int, sgid *_C_int)\n\nfunc Getresuid() (ruid, euid, suid int) {\n\tvar r, e, s _C_int\n\tgetresuid(&r, &e, &s)\n\treturn int(r), int(e), int(s)\n}\n\nfunc Getresgid() (rgid, egid, sgid int) {\n\tvar r, e, s _C_int\n\tgetresgid(&r, &e, &s)\n\treturn int(r), int(e), int(s)\n}\n\n//sys\tioctl(fd int, req uint, arg uintptr) (err error)\n//sys\tioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) = SYS_IOCTL\n\n//sys\tsysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL\n\n//sys\tfcntl(fd int, cmd int, arg int) (n int, err error)\n//sys\tfcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) = SYS_FCNTL\n\n// FcntlInt performs a fcntl syscall on fd with the provided command and argument.\nfunc FcntlInt(fd uintptr, cmd, arg int) (int, error) {\n\treturn fcntl(int(fd), cmd, arg)\n}\n\n// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command.\nfunc FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error {\n\t_, err := fcntlPtr(int(fd), cmd, unsafe.Pointer(lk))\n\treturn err\n}\n\n//sys\tppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error)\n\nfunc Ppoll(fds []PollFd, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tif len(fds) == 0 {\n\t\treturn ppoll(nil, 0, timeout, sigmask)\n\t}\n\treturn ppoll(&fds[0], len(fds), timeout, sigmask)\n}\n\nfunc Uname(uname *Utsname) error {\n\tmib := []_C_int{CTL_KERN, KERN_OSTYPE}\n\tn := unsafe.Sizeof(uname.Sysname)\n\tif err := sysctl(mib, &uname.Sysname[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_HOSTNAME}\n\tn = unsafe.Sizeof(uname.Nodename)\n\tif err := sysctl(mib, &uname.Nodename[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_OSRELEASE}\n\tn = unsafe.Sizeof(uname.Release)\n\tif err := sysctl(mib, &uname.Release[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_VERSION}\n\tn = unsafe.Sizeof(uname.Version)\n\tif err := sysctl(mib, &uname.Version[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\t// The version might have newlines or tabs in it, convert them to\n\t// spaces.\n\tfor i, b := range uname.Version {\n\t\tif b == '\\n' || b == '\\t' {\n\t\t\tif i == len(uname.Version)-1 {\n\t\t\t\tuname.Version[i] = 0\n\t\t\t} else {\n\t\t\t\tuname.Version[i] = ' '\n\t\t\t}\n\t\t}\n\t}\n\n\tmib = []_C_int{CTL_HW, HW_MACHINE}\n\tn = unsafe.Sizeof(uname.Machine)\n\tif err := sysctl(mib, &uname.Machine[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\n/*\n * Exposed directly\n */\n//sys\tAccess(path string, mode uint32) (err error)\n//sys\tAdjtime(delta *Timeval, olddelta *Timeval) (err error)\n//sys\tChdir(path string) (err error)\n//sys\tChflags(path string, flags int) (err error)\n//sys\tChmod(path string, mode uint32) (err error)\n//sys\tChown(path string, uid int, gid int) (err error)\n//sys\tChroot(path string) (err error)\n//sys\tClockGettime(clockid int32, time *Timespec) (err error)\n//sys\tClose(fd int) (err error)\n//sys\tDup(fd int) (nfd int, err error)\n//sys\tDup2(from int, to int) (err error)\n//sys\tDup3(from int, to int, flags int) (err error)\n//sys\tExit(code int)\n//sys\tFaccessat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchdir(fd int) (err error)\n//sys\tFchflags(fd int, flags int) (err error)\n//sys\tFchmod(fd int, mode uint32) (err error)\n//sys\tFchmodat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFchownat(dirfd int, path string, uid int, gid int, flags int) (err error)\n//sys\tFlock(fd int, how int) (err error)\n//sys\tFpathconf(fd int, name int) (val int, err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(fd int, path string, stat *Stat_t, flags int) (err error)\n//sys\tFstatfs(fd int, stat *Statfs_t) (err error)\n//sys\tFsync(fd int) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (uid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetpgid(pid int) (pgid int, err error)\n//sysnb\tGetpgrp() (pgrp int)\n//sysnb\tGetpid() (pid int)\n//sysnb\tGetppid() (ppid int)\n//sys\tGetpriority(which int, who int) (prio int, err error)\n//sysnb\tGetrlimit(which int, lim *Rlimit) (err error)\n//sysnb\tGetrtable() (rtable int, err error)\n//sysnb\tGetrusage(who int, rusage *Rusage) (err error)\n//sysnb\tGetsid(pid int) (sid int, err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tIssetugid() (tainted bool)\n//sys\tKill(pid int, signum syscall.Signal) (err error)\n//sys\tKqueue() (fd int, err error)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tLink(path string, link string) (err error)\n//sys\tLinkat(pathfd int, path string, linkfd int, link string, flags int) (err error)\n//sys\tListen(s int, backlog int) (err error)\n//sys\tLstat(path string, stat *Stat_t) (err error)\n//sys\tMkdir(path string, mode uint32) (err error)\n//sys\tMkdirat(dirfd int, path string, mode uint32) (err error)\n//sys\tMkfifo(path string, mode uint32) (err error)\n//sys\tMkfifoat(dirfd int, path string, mode uint32) (err error)\n//sys\tMknod(path string, mode uint32, dev int) (err error)\n//sys\tMknodat(dirfd int, path string, mode uint32, dev int) (err error)\n//sys\tMount(fsType string, dir string, flags int, data unsafe.Pointer) (err error)\n//sys\tNanosleep(time *Timespec, leftover *Timespec) (err error)\n//sys\tOpen(path string, mode int, perm uint32) (fd int, err error)\n//sys\tOpenat(dirfd int, path string, mode int, perm uint32) (fd int, err error)\n//sys\tPathconf(path string, name int) (val int, err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error)\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error)\n//sys\tread(fd int, p []byte) (n int, err error)\n//sys\tReadlink(path string, buf []byte) (n int, err error)\n//sys\tReadlinkat(dirfd int, path string, buf []byte) (n int, err error)\n//sys\tRename(from string, to string) (err error)\n//sys\tRenameat(fromfd int, from string, tofd int, to string) (err error)\n//sys\tRevoke(path string) (err error)\n//sys\tRmdir(path string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)\n//sysnb\tSetegid(egid int) (err error)\n//sysnb\tSeteuid(euid int) (err error)\n//sysnb\tSetgid(gid int) (err error)\n//sys\tSetlogin(name string) (err error)\n//sysnb\tSetpgid(pid int, pgid int) (err error)\n//sys\tSetpriority(which int, who int, prio int) (err error)\n//sysnb\tSetregid(rgid int, egid int) (err error)\n//sysnb\tSetreuid(ruid int, euid int) (err error)\n//sysnb\tSetresgid(rgid int, egid int, sgid int) (err error)\n//sysnb\tSetresuid(ruid int, euid int, suid int) (err error)\n//sysnb\tSetrtable(rtable int) (err error)\n//sysnb\tSetsid() (pid int, err error)\n//sysnb\tSettimeofday(tp *Timeval) (err error)\n//sysnb\tSetuid(uid int) (err error)\n//sys\tStat(path string, stat *Stat_t) (err error)\n//sys\tStatfs(path string, stat *Statfs_t) (err error)\n//sys\tSymlink(path string, link string) (err error)\n//sys\tSymlinkat(oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSync() (err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\tUmask(newmask int) (oldmask int)\n//sys\tUnlink(path string) (err error)\n//sys\tUnlinkat(dirfd int, path string, flags int) (err error)\n//sys\tUnmount(path string, flags int) (err error)\n//sys\twrite(fd int, p []byte) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)\n//sys\tmunmap(addr uintptr, length uintptr) (err error)\n//sys\tgetfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error)\n//sys\tutimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error)\n//sys\tpledge(promises *byte, execpromises *byte) (err error)\n//sys\tunveil(path *byte, flags *byte) (err error)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build 386 && openbsd\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: int32(usec)}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint32(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\n// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions\n// of openbsd/386 the syscall is called sysctl instead of __sysctl.\nconst SYS___SYSCTL = SYS_SYSCTL\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build amd64 && openbsd\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\n// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions\n// of openbsd/amd64 the syscall is called sysctl instead of __sysctl.\nconst SYS___SYSCTL = SYS_SYSCTL\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build arm && openbsd\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: int32(usec)}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint32(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\n// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions\n// of openbsd/arm the syscall is called sysctl instead of __sysctl.\nconst SYS___SYSCTL = SYS_SYSCTL\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build arm64 && openbsd\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\n// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions\n// of openbsd/amd64 the syscall is called sysctl instead of __sysctl.\nconst SYS___SYSCTL = SYS_SYSCTL\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/syscall_openbsd_libc.go",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build openbsd\n\npackage unix\n\nimport _ \"unsafe\"\n\n// Implemented in the runtime package (runtime/sys_openbsd3.go)\nfunc syscall_syscall(fn, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno)\nfunc syscall_syscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)\nfunc syscall_syscall10(fn, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 uintptr) (r1, r2 uintptr, err Errno)\nfunc syscall_rawSyscall(fn, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno)\nfunc syscall_rawSyscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)\n\n//go:linkname syscall_syscall syscall.syscall\n//go:linkname syscall_syscall6 syscall.syscall6\n//go:linkname syscall_syscall10 syscall.syscall10\n//go:linkname syscall_rawSyscall syscall.rawSyscall\n//go:linkname syscall_rawSyscall6 syscall.rawSyscall6\n\nfunc syscall_syscall9(fn, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err Errno) {\n\treturn syscall_syscall10(fn, a1, a2, a3, a4, a5, a6, a7, a8, a9, 0)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/syscall_openbsd_mips64.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\n// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions\n// of OpenBSD the syscall is called sysctl instead of __sysctl.\nconst SYS___SYSCTL = SYS_SYSCTL\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/syscall_openbsd_ppc64.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build ppc64 && openbsd\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\n// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions\n// of openbsd/ppc64 the syscall is called sysctl instead of __sysctl.\nconst SYS___SYSCTL = SYS_SYSCTL\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/syscall_openbsd_riscv64.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build riscv64 && openbsd\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\n// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions\n// of openbsd/riscv64 the syscall is called sysctl instead of __sysctl.\nconst SYS___SYSCTL = SYS_SYSCTL\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/syscall_solaris.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Solaris system calls.\n// This file is compiled as ordinary Go code,\n// but it is also input to mksyscall,\n// which parses the //sys lines and generates system call stubs.\n// Note that sometimes we use a lowercase //sys name and wrap\n// it in our own nicer implementation, either here or in\n// syscall_solaris.go or syscall_unix.go.\n\npackage unix\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"runtime\"\n\t\"sync\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// Implemented in runtime/syscall_solaris.go.\ntype syscallFunc uintptr\n\nfunc rawSysvicall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno)\nfunc sysvicall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno)\n\n// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets.\ntype SockaddrDatalink struct {\n\tFamily uint16\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [244]int8\n\traw    RawSockaddrDatalink\n}\n\nfunc direntIno(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Ino), unsafe.Sizeof(Dirent{}.Ino))\n}\n\nfunc direntReclen(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen))\n}\n\nfunc direntNamlen(buf []byte) (uint64, bool) {\n\treclen, ok := direntReclen(buf)\n\tif !ok {\n\t\treturn 0, false\n\t}\n\treturn reclen - uint64(unsafe.Offsetof(Dirent{}.Name)), true\n}\n\n//sysnb\tpipe(p *[2]_C_int) (n int, err error)\n\nfunc Pipe(p []int) (err error) {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\tn, err := pipe(&pp)\n\tif n != 0 {\n\t\treturn err\n\t}\n\tif err == nil {\n\t\tp[0] = int(pp[0])\n\t\tp[1] = int(pp[1])\n\t}\n\treturn nil\n}\n\n//sysnb\tpipe2(p *[2]_C_int, flags int) (err error)\n\nfunc Pipe2(p []int, flags int) error {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\terr := pipe2(&pp, flags)\n\tif err == nil {\n\t\tp[0] = int(pp[0])\n\t\tp[1] = int(pp[1])\n\t}\n\treturn err\n}\n\nfunc (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Port < 0 || sa.Port > 0xFFFF {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_INET\n\tp := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))\n\tp[0] = byte(sa.Port >> 8)\n\tp[1] = byte(sa.Port)\n\tsa.raw.Addr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrInet4, nil\n}\n\nfunc (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Port < 0 || sa.Port > 0xFFFF {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_INET6\n\tp := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))\n\tp[0] = byte(sa.Port >> 8)\n\tp[1] = byte(sa.Port)\n\tsa.raw.Scope_id = sa.ZoneId\n\tsa.raw.Addr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrInet6, nil\n}\n\nfunc (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tname := sa.Name\n\tn := len(name)\n\tif n >= len(sa.raw.Path) {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_UNIX\n\tfor i := 0; i < n; i++ {\n\t\tsa.raw.Path[i] = int8(name[i])\n\t}\n\t// length is family (uint16), name, NUL.\n\tsl := _Socklen(2)\n\tif n > 0 {\n\t\tsl += _Socklen(n) + 1\n\t}\n\tif sa.raw.Path[0] == '@' || (sa.raw.Path[0] == 0 && sl > 3) {\n\t\t// Check sl > 3 so we don't change unnamed socket behavior.\n\t\tsa.raw.Path[0] = 0\n\t\t// Don't count trailing NUL for abstract address.\n\t\tsl--\n\t}\n\n\treturn unsafe.Pointer(&sa.raw), sl, nil\n}\n\n//sys\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) = libsocket.getsockname\n\nfunc Getsockname(fd int) (sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tif err = getsockname(fd, &rsa, &len); err != nil {\n\t\treturn\n\t}\n\treturn anyToSockaddr(fd, &rsa)\n}\n\n// GetsockoptString returns the string value of the socket option opt for the\n// socket associated with fd at the given socket level.\nfunc GetsockoptString(fd, level, opt int) (string, error) {\n\tbuf := make([]byte, 256)\n\tvallen := _Socklen(len(buf))\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\treturn ByteSliceToString(buf[:vallen]), nil\n}\n\nconst ImplementsGetwd = true\n\n//sys\tGetcwd(buf []byte) (n int, err error)\n\nfunc Getwd() (wd string, err error) {\n\tvar buf [PathMax]byte\n\t// Getcwd will return an error if it failed for any reason.\n\t_, err = Getcwd(buf[0:])\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tn := clen(buf[:])\n\tif n < 1 {\n\t\treturn \"\", EINVAL\n\t}\n\treturn string(buf[:n]), nil\n}\n\n/*\n * Wrapped\n */\n\n//sysnb\tgetgroups(ngid int, gid *_Gid_t) (n int, err error)\n//sysnb\tsetgroups(ngid int, gid *_Gid_t) (err error)\n\nfunc Getgroups() (gids []int, err error) {\n\tn, err := getgroups(0, nil)\n\t// Check for error and sanity check group count. Newer versions of\n\t// Solaris allow up to 1024 (NGROUPS_MAX).\n\tif n < 0 || n > 1024 {\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn nil, EINVAL\n\t} else if n == 0 {\n\t\treturn nil, nil\n\t}\n\n\ta := make([]_Gid_t, n)\n\tn, err = getgroups(n, &a[0])\n\tif n == -1 {\n\t\treturn nil, err\n\t}\n\tgids = make([]int, n)\n\tfor i, v := range a[0:n] {\n\t\tgids[i] = int(v)\n\t}\n\treturn\n}\n\nfunc Setgroups(gids []int) (err error) {\n\tif len(gids) == 0 {\n\t\treturn setgroups(0, nil)\n\t}\n\n\ta := make([]_Gid_t, len(gids))\n\tfor i, v := range gids {\n\t\ta[i] = _Gid_t(v)\n\t}\n\treturn setgroups(len(a), &a[0])\n}\n\n// ReadDirent reads directory entries from fd and writes them into buf.\nfunc ReadDirent(fd int, buf []byte) (n int, err error) {\n\t// Final argument is (basep *uintptr) and the syscall doesn't take nil.\n\t// TODO(rsc): Can we use a single global basep for all calls?\n\treturn Getdents(fd, buf, new(uintptr))\n}\n\n// Wait status is 7 bits at bottom, either 0 (exited),\n// 0x7F (stopped), or a signal number that caused an exit.\n// The 0x80 bit is whether there was a core dump.\n// An extra number (exit code, signal causing a stop)\n// is in the high bits.\n\ntype WaitStatus uint32\n\nconst (\n\tmask  = 0x7F\n\tcore  = 0x80\n\tshift = 8\n\n\texited  = 0\n\tstopped = 0x7F\n)\n\nfunc (w WaitStatus) Exited() bool { return w&mask == exited }\n\nfunc (w WaitStatus) ExitStatus() int {\n\tif w&mask != exited {\n\t\treturn -1\n\t}\n\treturn int(w >> shift)\n}\n\nfunc (w WaitStatus) Signaled() bool { return w&mask != stopped && w&mask != 0 }\n\nfunc (w WaitStatus) Signal() syscall.Signal {\n\tsig := syscall.Signal(w & mask)\n\tif sig == stopped || sig == 0 {\n\t\treturn -1\n\t}\n\treturn sig\n}\n\nfunc (w WaitStatus) CoreDump() bool { return w.Signaled() && w&core != 0 }\n\nfunc (w WaitStatus) Stopped() bool { return w&mask == stopped && syscall.Signal(w>>shift) != SIGSTOP }\n\nfunc (w WaitStatus) Continued() bool { return w&mask == stopped && syscall.Signal(w>>shift) == SIGSTOP }\n\nfunc (w WaitStatus) StopSignal() syscall.Signal {\n\tif !w.Stopped() {\n\t\treturn -1\n\t}\n\treturn syscall.Signal(w>>shift) & 0xFF\n}\n\nfunc (w WaitStatus) TrapCause() int { return -1 }\n\n//sys\twait4(pid int32, statusp *_C_int, options int, rusage *Rusage) (wpid int32, err error)\n\nfunc Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (int, error) {\n\tvar status _C_int\n\trpid, err := wait4(int32(pid), &status, options, rusage)\n\twpid := int(rpid)\n\tif wpid == -1 {\n\t\treturn wpid, err\n\t}\n\tif wstatus != nil {\n\t\t*wstatus = WaitStatus(status)\n\t}\n\treturn wpid, nil\n}\n\n//sys\tgethostname(buf []byte) (n int, err error)\n\nfunc Gethostname() (name string, err error) {\n\tvar buf [MaxHostNameLen]byte\n\tn, err := gethostname(buf[:])\n\tif n != 0 {\n\t\treturn \"\", err\n\t}\n\tn = clen(buf[:])\n\tif n < 1 {\n\t\treturn \"\", EFAULT\n\t}\n\treturn string(buf[:n]), nil\n}\n\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\nfunc Utimes(path string, tv []Timeval) (err error) {\n\tif tv == nil {\n\t\treturn utimes(path, nil)\n\t}\n\tif len(tv) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))\n}\n\n//sys\tutimensat(fd int, path string, times *[2]Timespec, flag int) (err error)\n\nfunc UtimesNano(path string, ts []Timespec) error {\n\tif ts == nil {\n\t\treturn utimensat(AT_FDCWD, path, nil, 0)\n\t}\n\tif len(ts) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)\n}\n\nfunc UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error {\n\tif ts == nil {\n\t\treturn utimensat(dirfd, path, nil, flags)\n\t}\n\tif len(ts) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags)\n}\n\n//sys\tfcntl(fd int, cmd int, arg int) (val int, err error)\n\n// FcntlInt performs a fcntl syscall on fd with the provided command and argument.\nfunc FcntlInt(fd uintptr, cmd, arg int) (int, error) {\n\tvalptr, _, errno := sysvicall6(uintptr(unsafe.Pointer(&procfcntl)), 3, uintptr(fd), uintptr(cmd), uintptr(arg), 0, 0, 0)\n\tvar err error\n\tif errno != 0 {\n\t\terr = errno\n\t}\n\treturn int(valptr), err\n}\n\n// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command.\nfunc FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procfcntl)), 3, uintptr(fd), uintptr(cmd), uintptr(unsafe.Pointer(lk)), 0, 0, 0)\n\tif e1 != 0 {\n\t\treturn e1\n\t}\n\treturn nil\n}\n\n//sys\tfutimesat(fildes int, path *byte, times *[2]Timeval) (err error)\n\nfunc Futimesat(dirfd int, path string, tv []Timeval) error {\n\tpathp, err := BytePtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif tv == nil {\n\t\treturn futimesat(dirfd, pathp, nil)\n\t}\n\tif len(tv) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn futimesat(dirfd, pathp, (*[2]Timeval)(unsafe.Pointer(&tv[0])))\n}\n\n// Solaris doesn't have an futimes function because it allows NULL to be\n// specified as the path for futimesat. However, Go doesn't like\n// NULL-style string interfaces, so this simple wrapper is provided.\nfunc Futimes(fd int, tv []Timeval) error {\n\tif tv == nil {\n\t\treturn futimesat(fd, nil, nil)\n\t}\n\tif len(tv) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn futimesat(fd, nil, (*[2]Timeval)(unsafe.Pointer(&tv[0])))\n}\n\nfunc anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {\n\tswitch rsa.Addr.Family {\n\tcase AF_UNIX:\n\t\tpp := (*RawSockaddrUnix)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrUnix)\n\t\t// Assume path ends at NUL.\n\t\t// This is not technically the Solaris semantics for\n\t\t// abstract Unix domain sockets -- they are supposed\n\t\t// to be uninterpreted fixed-size binary blobs -- but\n\t\t// everyone uses this convention.\n\t\tn := 0\n\t\tfor n < len(pp.Path) && pp.Path[n] != 0 {\n\t\t\tn++\n\t\t}\n\t\tsa.Name = string(unsafe.Slice((*byte)(unsafe.Pointer(&pp.Path[0])), n))\n\t\treturn sa, nil\n\n\tcase AF_INET:\n\t\tpp := (*RawSockaddrInet4)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrInet4)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tsa.Addr = pp.Addr\n\t\treturn sa, nil\n\n\tcase AF_INET6:\n\t\tpp := (*RawSockaddrInet6)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrInet6)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tsa.ZoneId = pp.Scope_id\n\t\tsa.Addr = pp.Addr\n\t\treturn sa, nil\n\t}\n\treturn nil, EAFNOSUPPORT\n}\n\n//sys\taccept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) = libsocket.accept\n\nfunc Accept(fd int) (nfd int, sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tnfd, err = accept(fd, &rsa, &len)\n\tif nfd == -1 {\n\t\treturn\n\t}\n\tsa, err = anyToSockaddr(fd, &rsa)\n\tif err != nil {\n\t\tClose(nfd)\n\t\tnfd = 0\n\t}\n\treturn\n}\n\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error) = libsocket.__xnet_recvmsg\n\nfunc recvmsgRaw(fd int, iov []Iovec, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn int, recvflags int, err error) {\n\tvar msg Msghdr\n\tmsg.Name = (*byte)(unsafe.Pointer(rsa))\n\tmsg.Namelen = uint32(SizeofSockaddrAny)\n\tvar dummy byte\n\tif len(oob) > 0 {\n\t\t// receive at least one normal byte\n\t\tif emptyIovecs(iov) {\n\t\t\tvar iova [1]Iovec\n\t\t\tiova[0].Base = &dummy\n\t\t\tiova[0].SetLen(1)\n\t\t\tiov = iova[:]\n\t\t}\n\t\tmsg.Accrightslen = int32(len(oob))\n\t}\n\tif len(iov) > 0 {\n\t\tmsg.Iov = &iov[0]\n\t\tmsg.SetIovlen(len(iov))\n\t}\n\tif n, err = recvmsg(fd, &msg, flags); n == -1 {\n\t\treturn\n\t}\n\toobn = int(msg.Accrightslen)\n\treturn\n}\n\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error) = libsocket.__xnet_sendmsg\n\nfunc sendmsgN(fd int, iov []Iovec, oob []byte, ptr unsafe.Pointer, salen _Socklen, flags int) (n int, err error) {\n\tvar msg Msghdr\n\tmsg.Name = (*byte)(unsafe.Pointer(ptr))\n\tmsg.Namelen = uint32(salen)\n\tvar dummy byte\n\tvar empty bool\n\tif len(oob) > 0 {\n\t\t// send at least one normal byte\n\t\tempty = emptyIovecs(iov)\n\t\tif empty {\n\t\t\tvar iova [1]Iovec\n\t\t\tiova[0].Base = &dummy\n\t\t\tiova[0].SetLen(1)\n\t\t\tiov = iova[:]\n\t\t}\n\t\tmsg.Accrightslen = int32(len(oob))\n\t}\n\tif len(iov) > 0 {\n\t\tmsg.Iov = &iov[0]\n\t\tmsg.SetIovlen(len(iov))\n\t}\n\tif n, err = sendmsg(fd, &msg, flags); err != nil {\n\t\treturn 0, err\n\t}\n\tif len(oob) > 0 && empty {\n\t\tn = 0\n\t}\n\treturn n, nil\n}\n\n//sys\tacct(path *byte) (err error)\n\nfunc Acct(path string) (err error) {\n\tif len(path) == 0 {\n\t\t// Assume caller wants to disable accounting.\n\t\treturn acct(nil)\n\t}\n\n\tpathp, err := BytePtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn acct(pathp)\n}\n\n//sys\t__makedev(version int, major uint, minor uint) (val uint64)\n\nfunc Mkdev(major, minor uint32) uint64 {\n\treturn __makedev(NEWDEV, uint(major), uint(minor))\n}\n\n//sys\t__major(version int, dev uint64) (val uint)\n\nfunc Major(dev uint64) uint32 {\n\treturn uint32(__major(NEWDEV, dev))\n}\n\n//sys\t__minor(version int, dev uint64) (val uint)\n\nfunc Minor(dev uint64) uint32 {\n\treturn uint32(__minor(NEWDEV, dev))\n}\n\n/*\n * Expose the ioctl function\n */\n\n//sys\tioctlRet(fd int, req int, arg uintptr) (ret int, err error) = libc.ioctl\n//sys\tioctlPtrRet(fd int, req int, arg unsafe.Pointer) (ret int, err error) = libc.ioctl\n\nfunc ioctl(fd int, req int, arg uintptr) (err error) {\n\t_, err = ioctlRet(fd, req, arg)\n\treturn err\n}\n\nfunc ioctlPtr(fd int, req int, arg unsafe.Pointer) (err error) {\n\t_, err = ioctlPtrRet(fd, req, arg)\n\treturn err\n}\n\nfunc IoctlSetTermio(fd int, req int, value *Termio) error {\n\treturn ioctlPtr(fd, req, unsafe.Pointer(value))\n}\n\nfunc IoctlGetTermio(fd int, req int) (*Termio, error) {\n\tvar value Termio\n\terr := ioctlPtr(fd, req, unsafe.Pointer(&value))\n\treturn &value, err\n}\n\n//sys\tpoll(fds *PollFd, nfds int, timeout int) (n int, err error)\n\nfunc Poll(fds []PollFd, timeout int) (n int, err error) {\n\tif len(fds) == 0 {\n\t\treturn poll(nil, 0, timeout)\n\t}\n\treturn poll(&fds[0], len(fds), timeout)\n}\n\nfunc Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\treturn sendfile(outfd, infd, offset, count)\n}\n\n/*\n * Exposed directly\n */\n//sys\tAccess(path string, mode uint32) (err error)\n//sys\tAdjtime(delta *Timeval, olddelta *Timeval) (err error)\n//sys\tChdir(path string) (err error)\n//sys\tChmod(path string, mode uint32) (err error)\n//sys\tChown(path string, uid int, gid int) (err error)\n//sys\tChroot(path string) (err error)\n//sys\tClockGettime(clockid int32, time *Timespec) (err error)\n//sys\tClose(fd int) (err error)\n//sys\tCreat(path string, mode uint32) (fd int, err error)\n//sys\tDup(fd int) (nfd int, err error)\n//sys\tDup2(oldfd int, newfd int) (err error)\n//sys\tExit(code int)\n//sys\tFaccessat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchdir(fd int) (err error)\n//sys\tFchmod(fd int, mode uint32) (err error)\n//sys\tFchmodat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFchownat(dirfd int, path string, uid int, gid int, flags int) (err error)\n//sys\tFdatasync(fd int) (err error)\n//sys\tFlock(fd int, how int) (err error)\n//sys\tFpathconf(fd int, name int) (val int, err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(fd int, path string, stat *Stat_t, flags int) (err error)\n//sys\tFstatvfs(fd int, vfsstat *Statvfs_t) (err error)\n//sys\tGetdents(fd int, buf []byte, basep *uintptr) (n int, err error)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetpid() (pid int)\n//sysnb\tGetpgid(pid int) (pgid int, err error)\n//sysnb\tGetpgrp() (pgid int, err error)\n//sys\tGeteuid() (euid int)\n//sys\tGetegid() (egid int)\n//sys\tGetppid() (ppid int)\n//sys\tGetpriority(which int, who int) (n int, err error)\n//sysnb\tGetrlimit(which int, lim *Rlimit) (err error)\n//sysnb\tGetrusage(who int, rusage *Rusage) (err error)\n//sysnb\tGetsid(pid int) (sid int, err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tKill(pid int, signum syscall.Signal) (err error)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tLink(path string, link string) (err error)\n//sys\tListen(s int, backlog int) (err error) = libsocket.__xnet_listen\n//sys\tLstat(path string, stat *Stat_t) (err error)\n//sys\tMadvise(b []byte, advice int) (err error)\n//sys\tMkdir(path string, mode uint32) (err error)\n//sys\tMkdirat(dirfd int, path string, mode uint32) (err error)\n//sys\tMkfifo(path string, mode uint32) (err error)\n//sys\tMkfifoat(dirfd int, path string, mode uint32) (err error)\n//sys\tMknod(path string, mode uint32, dev int) (err error)\n//sys\tMknodat(dirfd int, path string, mode uint32, dev int) (err error)\n//sys\tMlock(b []byte) (err error)\n//sys\tMlockall(flags int) (err error)\n//sys\tMprotect(b []byte, prot int) (err error)\n//sys\tMsync(b []byte, flags int) (err error)\n//sys\tMunlock(b []byte) (err error)\n//sys\tMunlockall() (err error)\n//sys\tNanosleep(time *Timespec, leftover *Timespec) (err error)\n//sys\tOpen(path string, mode int, perm uint32) (fd int, err error)\n//sys\tOpenat(dirfd int, path string, flags int, mode uint32) (fd int, err error)\n//sys\tPathconf(path string, name int) (val int, err error)\n//sys\tPause() (err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error)\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error)\n//sys\tread(fd int, p []byte) (n int, err error)\n//sys\tReadlink(path string, buf []byte) (n int, err error)\n//sys\tRename(from string, to string) (err error)\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\n//sys\tRmdir(path string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (newoffset int64, err error) = lseek\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)\n//sysnb\tSetegid(egid int) (err error)\n//sysnb\tSeteuid(euid int) (err error)\n//sysnb\tSetgid(gid int) (err error)\n//sys\tSethostname(p []byte) (err error)\n//sysnb\tSetpgid(pid int, pgid int) (err error)\n//sys\tSetpriority(which int, who int, prio int) (err error)\n//sysnb\tSetregid(rgid int, egid int) (err error)\n//sysnb\tSetreuid(ruid int, euid int) (err error)\n//sysnb\tSetsid() (pid int, err error)\n//sysnb\tSetuid(uid int) (err error)\n//sys\tShutdown(s int, how int) (err error) = libsocket.shutdown\n//sys\tStat(path string, stat *Stat_t) (err error)\n//sys\tStatvfs(path string, vfsstat *Statvfs_t) (err error)\n//sys\tSymlink(path string, link string) (err error)\n//sys\tSync() (err error)\n//sys\tSysconf(which int) (n int64, err error)\n//sysnb\tTimes(tms *Tms) (ticks uintptr, err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\tFsync(fd int) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sys\tUmask(mask int) (oldmask int)\n//sysnb\tUname(buf *Utsname) (err error)\n//sys\tUnmount(target string, flags int) (err error) = libc.umount\n//sys\tUnlink(path string) (err error)\n//sys\tUnlinkat(dirfd int, path string, flags int) (err error)\n//sys\tUstat(dev int, ubuf *Ustat_t) (err error)\n//sys\tUtime(path string, buf *Utimbuf) (err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) = libsocket.__xnet_bind\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) = libsocket.__xnet_connect\n//sys\tmmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)\n//sys\tmunmap(addr uintptr, length uintptr) (err error)\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = libsendfile.sendfile\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) = libsocket.__xnet_sendto\n//sys\tsocket(domain int, typ int, proto int) (fd int, err error) = libsocket.__xnet_socket\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error) = libsocket.__xnet_socketpair\n//sys\twrite(fd int, p []byte) (n int, err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) = libsocket.__xnet_getsockopt\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) = libsocket.getpeername\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) = libsocket.setsockopt\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) = libsocket.recvfrom\n\n// Event Ports\n\ntype fileObjCookie struct {\n\tfobj   *fileObj\n\tcookie interface{}\n}\n\n// EventPort provides a safe abstraction on top of Solaris/illumos Event Ports.\ntype EventPort struct {\n\tport  int\n\tmu    sync.Mutex\n\tfds   map[uintptr]*fileObjCookie\n\tpaths map[string]*fileObjCookie\n\t// The user cookie presents an interesting challenge from a memory management perspective.\n\t// There are two paths by which we can discover that it is no longer in use:\n\t// 1. The user calls port_dissociate before any events fire\n\t// 2. An event fires and we return it to the user\n\t// The tricky situation is if the event has fired in the kernel but\n\t// the user hasn't requested/received it yet.\n\t// If the user wants to port_dissociate before the event has been processed,\n\t// we should handle things gracefully. To do so, we need to keep an extra\n\t// reference to the cookie around until the event is processed\n\t// thus the otherwise seemingly extraneous \"cookies\" map\n\t// The key of this map is a pointer to the corresponding fCookie\n\tcookies map[*fileObjCookie]struct{}\n}\n\n// PortEvent is an abstraction of the port_event C struct.\n// Compare Source against PORT_SOURCE_FILE or PORT_SOURCE_FD\n// to see if Path or Fd was the event source. The other will be\n// uninitialized.\ntype PortEvent struct {\n\tCookie interface{}\n\tEvents int32\n\tFd     uintptr\n\tPath   string\n\tSource uint16\n\tfobj   *fileObj\n}\n\n// NewEventPort creates a new EventPort including the\n// underlying call to port_create(3c).\nfunc NewEventPort() (*EventPort, error) {\n\tport, err := port_create()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\te := &EventPort{\n\t\tport:    port,\n\t\tfds:     make(map[uintptr]*fileObjCookie),\n\t\tpaths:   make(map[string]*fileObjCookie),\n\t\tcookies: make(map[*fileObjCookie]struct{}),\n\t}\n\treturn e, nil\n}\n\n//sys\tport_create() (n int, err error)\n//sys\tport_associate(port int, source int, object uintptr, events int, user *byte) (n int, err error)\n//sys\tport_dissociate(port int, source int, object uintptr) (n int, err error)\n//sys\tport_get(port int, pe *portEvent, timeout *Timespec) (n int, err error)\n//sys\tport_getn(port int, pe *portEvent, max uint32, nget *uint32, timeout *Timespec) (n int, err error)\n\n// Close closes the event port.\nfunc (e *EventPort) Close() error {\n\te.mu.Lock()\n\tdefer e.mu.Unlock()\n\terr := Close(e.port)\n\tif err != nil {\n\t\treturn err\n\t}\n\te.fds = nil\n\te.paths = nil\n\te.cookies = nil\n\treturn nil\n}\n\n// PathIsWatched checks to see if path is associated with this EventPort.\nfunc (e *EventPort) PathIsWatched(path string) bool {\n\te.mu.Lock()\n\tdefer e.mu.Unlock()\n\t_, found := e.paths[path]\n\treturn found\n}\n\n// FdIsWatched checks to see if fd is associated with this EventPort.\nfunc (e *EventPort) FdIsWatched(fd uintptr) bool {\n\te.mu.Lock()\n\tdefer e.mu.Unlock()\n\t_, found := e.fds[fd]\n\treturn found\n}\n\n// AssociatePath wraps port_associate(3c) for a filesystem path including\n// creating the necessary file_obj from the provided stat information.\nfunc (e *EventPort) AssociatePath(path string, stat os.FileInfo, events int, cookie interface{}) error {\n\te.mu.Lock()\n\tdefer e.mu.Unlock()\n\tif _, found := e.paths[path]; found {\n\t\treturn fmt.Errorf(\"%v is already associated with this Event Port\", path)\n\t}\n\tfCookie, err := createFileObjCookie(path, stat, cookie)\n\tif err != nil {\n\t\treturn err\n\t}\n\t_, err = port_associate(e.port, PORT_SOURCE_FILE, uintptr(unsafe.Pointer(fCookie.fobj)), events, (*byte)(unsafe.Pointer(fCookie)))\n\tif err != nil {\n\t\treturn err\n\t}\n\te.paths[path] = fCookie\n\te.cookies[fCookie] = struct{}{}\n\treturn nil\n}\n\n// DissociatePath wraps port_dissociate(3c) for a filesystem path.\nfunc (e *EventPort) DissociatePath(path string) error {\n\te.mu.Lock()\n\tdefer e.mu.Unlock()\n\tf, ok := e.paths[path]\n\tif !ok {\n\t\treturn fmt.Errorf(\"%v is not associated with this Event Port\", path)\n\t}\n\t_, err := port_dissociate(e.port, PORT_SOURCE_FILE, uintptr(unsafe.Pointer(f.fobj)))\n\t// If the path is no longer associated with this event port (ENOENT)\n\t// we should delete it from our map. We can still return ENOENT to the caller.\n\t// But we need to save the cookie\n\tif err != nil && err != ENOENT {\n\t\treturn err\n\t}\n\tif err == nil {\n\t\t// dissociate was successful, safe to delete the cookie\n\t\tfCookie := e.paths[path]\n\t\tdelete(e.cookies, fCookie)\n\t}\n\tdelete(e.paths, path)\n\treturn err\n}\n\n// AssociateFd wraps calls to port_associate(3c) on file descriptors.\nfunc (e *EventPort) AssociateFd(fd uintptr, events int, cookie interface{}) error {\n\te.mu.Lock()\n\tdefer e.mu.Unlock()\n\tif _, found := e.fds[fd]; found {\n\t\treturn fmt.Errorf(\"%v is already associated with this Event Port\", fd)\n\t}\n\tfCookie, err := createFileObjCookie(\"\", nil, cookie)\n\tif err != nil {\n\t\treturn err\n\t}\n\t_, err = port_associate(e.port, PORT_SOURCE_FD, fd, events, (*byte)(unsafe.Pointer(fCookie)))\n\tif err != nil {\n\t\treturn err\n\t}\n\te.fds[fd] = fCookie\n\te.cookies[fCookie] = struct{}{}\n\treturn nil\n}\n\n// DissociateFd wraps calls to port_dissociate(3c) on file descriptors.\nfunc (e *EventPort) DissociateFd(fd uintptr) error {\n\te.mu.Lock()\n\tdefer e.mu.Unlock()\n\t_, ok := e.fds[fd]\n\tif !ok {\n\t\treturn fmt.Errorf(\"%v is not associated with this Event Port\", fd)\n\t}\n\t_, err := port_dissociate(e.port, PORT_SOURCE_FD, fd)\n\tif err != nil && err != ENOENT {\n\t\treturn err\n\t}\n\tif err == nil {\n\t\t// dissociate was successful, safe to delete the cookie\n\t\tfCookie := e.fds[fd]\n\t\tdelete(e.cookies, fCookie)\n\t}\n\tdelete(e.fds, fd)\n\treturn err\n}\n\nfunc createFileObjCookie(name string, stat os.FileInfo, cookie interface{}) (*fileObjCookie, error) {\n\tfCookie := new(fileObjCookie)\n\tfCookie.cookie = cookie\n\tif name != \"\" && stat != nil {\n\t\tfCookie.fobj = new(fileObj)\n\t\tbs, err := ByteSliceFromString(name)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tfCookie.fobj.Name = (*int8)(unsafe.Pointer(&bs[0]))\n\t\ts := stat.Sys().(*syscall.Stat_t)\n\t\tfCookie.fobj.Atim.Sec = s.Atim.Sec\n\t\tfCookie.fobj.Atim.Nsec = s.Atim.Nsec\n\t\tfCookie.fobj.Mtim.Sec = s.Mtim.Sec\n\t\tfCookie.fobj.Mtim.Nsec = s.Mtim.Nsec\n\t\tfCookie.fobj.Ctim.Sec = s.Ctim.Sec\n\t\tfCookie.fobj.Ctim.Nsec = s.Ctim.Nsec\n\t}\n\treturn fCookie, nil\n}\n\n// GetOne wraps port_get(3c) and returns a single PortEvent.\nfunc (e *EventPort) GetOne(t *Timespec) (*PortEvent, error) {\n\tpe := new(portEvent)\n\t_, err := port_get(e.port, pe, t)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tp := new(PortEvent)\n\te.mu.Lock()\n\tdefer e.mu.Unlock()\n\terr = e.peIntToExt(pe, p)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn p, nil\n}\n\n// peIntToExt converts a cgo portEvent struct into the friendlier PortEvent\n// NOTE: Always call this function while holding the e.mu mutex\nfunc (e *EventPort) peIntToExt(peInt *portEvent, peExt *PortEvent) error {\n\tif e.cookies == nil {\n\t\treturn fmt.Errorf(\"this EventPort is already closed\")\n\t}\n\tpeExt.Events = peInt.Events\n\tpeExt.Source = peInt.Source\n\tfCookie := (*fileObjCookie)(unsafe.Pointer(peInt.User))\n\t_, found := e.cookies[fCookie]\n\n\tif !found {\n\t\tpanic(\"unexpected event port address; may be due to kernel bug; see https://go.dev/issue/54254\")\n\t}\n\tpeExt.Cookie = fCookie.cookie\n\tdelete(e.cookies, fCookie)\n\n\tswitch peInt.Source {\n\tcase PORT_SOURCE_FD:\n\t\tpeExt.Fd = uintptr(peInt.Object)\n\t\t// Only remove the fds entry if it exists and this cookie matches\n\t\tif fobj, ok := e.fds[peExt.Fd]; ok {\n\t\t\tif fobj == fCookie {\n\t\t\t\tdelete(e.fds, peExt.Fd)\n\t\t\t}\n\t\t}\n\tcase PORT_SOURCE_FILE:\n\t\tpeExt.fobj = fCookie.fobj\n\t\tpeExt.Path = BytePtrToString((*byte)(unsafe.Pointer(peExt.fobj.Name)))\n\t\t// Only remove the paths entry if it exists and this cookie matches\n\t\tif fobj, ok := e.paths[peExt.Path]; ok {\n\t\t\tif fobj == fCookie {\n\t\t\t\tdelete(e.paths, peExt.Path)\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\n// Pending wraps port_getn(3c) and returns how many events are pending.\nfunc (e *EventPort) Pending() (int, error) {\n\tvar n uint32 = 0\n\t_, err := port_getn(e.port, nil, 0, &n, nil)\n\treturn int(n), err\n}\n\n// Get wraps port_getn(3c) and fills a slice of PortEvent.\n// It will block until either min events have been received\n// or the timeout has been exceeded. It will return how many\n// events were actually received along with any error information.\nfunc (e *EventPort) Get(s []PortEvent, min int, timeout *Timespec) (int, error) {\n\tif min == 0 {\n\t\treturn 0, fmt.Errorf(\"need to request at least one event or use Pending() instead\")\n\t}\n\tif len(s) < min {\n\t\treturn 0, fmt.Errorf(\"len(s) (%d) is less than min events requested (%d)\", len(s), min)\n\t}\n\tgot := uint32(min)\n\tmax := uint32(len(s))\n\tvar err error\n\tps := make([]portEvent, max)\n\t_, err = port_getn(e.port, &ps[0], max, &got, timeout)\n\t// got will be trustworthy with ETIME, but not any other error.\n\tif err != nil && err != ETIME {\n\t\treturn 0, err\n\t}\n\te.mu.Lock()\n\tdefer e.mu.Unlock()\n\tvalid := 0\n\tfor i := 0; i < int(got); i++ {\n\t\terr2 := e.peIntToExt(&ps[i], &s[i])\n\t\tif err2 != nil {\n\t\t\tif valid == 0 && err == nil {\n\t\t\t\t// If err2 is the only error and there are no valid events\n\t\t\t\t// to return, return it to the caller.\n\t\t\t\terr = err2\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t\tvalid = i + 1\n\t}\n\treturn valid, err\n}\n\n//sys\tputmsg(fd int, clptr *strbuf, dataptr *strbuf, flags int) (err error)\n\nfunc Putmsg(fd int, cl []byte, data []byte, flags int) (err error) {\n\tvar clp, datap *strbuf\n\tif len(cl) > 0 {\n\t\tclp = &strbuf{\n\t\t\tLen: int32(len(cl)),\n\t\t\tBuf: (*int8)(unsafe.Pointer(&cl[0])),\n\t\t}\n\t}\n\tif len(data) > 0 {\n\t\tdatap = &strbuf{\n\t\t\tLen: int32(len(data)),\n\t\t\tBuf: (*int8)(unsafe.Pointer(&data[0])),\n\t\t}\n\t}\n\treturn putmsg(fd, clp, datap, flags)\n}\n\n//sys\tgetmsg(fd int, clptr *strbuf, dataptr *strbuf, flags *int) (err error)\n\nfunc Getmsg(fd int, cl []byte, data []byte) (retCl []byte, retData []byte, flags int, err error) {\n\tvar clp, datap *strbuf\n\tif len(cl) > 0 {\n\t\tclp = &strbuf{\n\t\t\tMaxlen: int32(len(cl)),\n\t\t\tBuf:    (*int8)(unsafe.Pointer(&cl[0])),\n\t\t}\n\t}\n\tif len(data) > 0 {\n\t\tdatap = &strbuf{\n\t\t\tMaxlen: int32(len(data)),\n\t\t\tBuf:    (*int8)(unsafe.Pointer(&data[0])),\n\t\t}\n\t}\n\n\tif err = getmsg(fd, clp, datap, &flags); err != nil {\n\t\treturn nil, nil, 0, err\n\t}\n\n\tif len(cl) > 0 {\n\t\tretCl = cl[:clp.Len]\n\t}\n\tif len(data) > 0 {\n\t\tretData = data[:datap.Len]\n\t}\n\treturn retCl, retData, flags, nil\n}\n\nfunc IoctlSetIntRetInt(fd int, req int, arg int) (int, error) {\n\treturn ioctlRet(fd, req, uintptr(arg))\n}\n\n// Lifreq Helpers\n\nfunc (l *Lifreq) SetName(name string) error {\n\tif len(name) >= len(l.Name) {\n\t\treturn fmt.Errorf(\"name cannot be more than %d characters\", len(l.Name)-1)\n\t}\n\tfor i := range name {\n\t\tl.Name[i] = int8(name[i])\n\t}\n\treturn nil\n}\n\nfunc (l *Lifreq) SetLifruInt(d int) {\n\t*(*int)(unsafe.Pointer(&l.Lifru[0])) = d\n}\n\nfunc (l *Lifreq) GetLifruInt() int {\n\treturn *(*int)(unsafe.Pointer(&l.Lifru[0]))\n}\n\nfunc (l *Lifreq) SetLifruUint(d uint) {\n\t*(*uint)(unsafe.Pointer(&l.Lifru[0])) = d\n}\n\nfunc (l *Lifreq) GetLifruUint() uint {\n\treturn *(*uint)(unsafe.Pointer(&l.Lifru[0]))\n}\n\nfunc IoctlLifreq(fd int, req int, l *Lifreq) error {\n\treturn ioctlPtr(fd, req, unsafe.Pointer(l))\n}\n\n// Strioctl Helpers\n\nfunc (s *Strioctl) SetInt(i int) {\n\ts.Len = int32(unsafe.Sizeof(i))\n\ts.Dp = (*int8)(unsafe.Pointer(&i))\n}\n\nfunc IoctlSetStrioctlRetInt(fd int, req int, s *Strioctl) (int, error) {\n\treturn ioctlPtrRet(fd, req, unsafe.Pointer(s))\n}\n\n// Ucred Helpers\n// See ucred(3c) and getpeerucred(3c)\n\n//sys\tgetpeerucred(fd uintptr, ucred *uintptr) (err error)\n//sys\tucredFree(ucred uintptr) = ucred_free\n//sys\tucredGet(pid int) (ucred uintptr, err error) = ucred_get\n//sys\tucredGeteuid(ucred uintptr) (uid int) = ucred_geteuid\n//sys\tucredGetegid(ucred uintptr) (gid int) = ucred_getegid\n//sys\tucredGetruid(ucred uintptr) (uid int) = ucred_getruid\n//sys\tucredGetrgid(ucred uintptr) (gid int) = ucred_getrgid\n//sys\tucredGetsuid(ucred uintptr) (uid int) = ucred_getsuid\n//sys\tucredGetsgid(ucred uintptr) (gid int) = ucred_getsgid\n//sys\tucredGetpid(ucred uintptr) (pid int) = ucred_getpid\n\n// Ucred is an opaque struct that holds user credentials.\ntype Ucred struct {\n\tucred uintptr\n}\n\n// We need to ensure that ucredFree is called on the underlying ucred\n// when the Ucred is garbage collected.\nfunc ucredFinalizer(u *Ucred) {\n\tucredFree(u.ucred)\n}\n\nfunc GetPeerUcred(fd uintptr) (*Ucred, error) {\n\tvar ucred uintptr\n\terr := getpeerucred(fd, &ucred)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tresult := &Ucred{\n\t\tucred: ucred,\n\t}\n\t// set the finalizer on the result so that the ucred will be freed\n\truntime.SetFinalizer(result, ucredFinalizer)\n\treturn result, nil\n}\n\nfunc UcredGet(pid int) (*Ucred, error) {\n\tucred, err := ucredGet(pid)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tresult := &Ucred{\n\t\tucred: ucred,\n\t}\n\t// set the finalizer on the result so that the ucred will be freed\n\truntime.SetFinalizer(result, ucredFinalizer)\n\treturn result, nil\n}\n\nfunc (u *Ucred) Geteuid() int {\n\tdefer runtime.KeepAlive(u)\n\treturn ucredGeteuid(u.ucred)\n}\n\nfunc (u *Ucred) Getruid() int {\n\tdefer runtime.KeepAlive(u)\n\treturn ucredGetruid(u.ucred)\n}\n\nfunc (u *Ucred) Getsuid() int {\n\tdefer runtime.KeepAlive(u)\n\treturn ucredGetsuid(u.ucred)\n}\n\nfunc (u *Ucred) Getegid() int {\n\tdefer runtime.KeepAlive(u)\n\treturn ucredGetegid(u.ucred)\n}\n\nfunc (u *Ucred) Getrgid() int {\n\tdefer runtime.KeepAlive(u)\n\treturn ucredGetrgid(u.ucred)\n}\n\nfunc (u *Ucred) Getsgid() int {\n\tdefer runtime.KeepAlive(u)\n\treturn ucredGetsgid(u.ucred)\n}\n\nfunc (u *Ucred) Getpid() int {\n\tdefer runtime.KeepAlive(u)\n\treturn ucredGetpid(u.ucred)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build amd64 && solaris\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/syscall_unix.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris\n\npackage unix\n\nimport (\n\t\"bytes\"\n\t\"sort\"\n\t\"sync\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar (\n\tStdin  = 0\n\tStdout = 1\n\tStderr = 2\n)\n\n// Do the interface allocations only once for common\n// Errno values.\nvar (\n\terrEAGAIN error = syscall.EAGAIN\n\terrEINVAL error = syscall.EINVAL\n\terrENOENT error = syscall.ENOENT\n)\n\nvar (\n\tsignalNameMapOnce sync.Once\n\tsignalNameMap     map[string]syscall.Signal\n)\n\n// errnoErr returns common boxed Errno values, to prevent\n// allocations at runtime.\nfunc errnoErr(e syscall.Errno) error {\n\tswitch e {\n\tcase 0:\n\t\treturn nil\n\tcase EAGAIN:\n\t\treturn errEAGAIN\n\tcase EINVAL:\n\t\treturn errEINVAL\n\tcase ENOENT:\n\t\treturn errENOENT\n\t}\n\treturn e\n}\n\n// ErrnoName returns the error name for error number e.\nfunc ErrnoName(e syscall.Errno) string {\n\ti := sort.Search(len(errorList), func(i int) bool {\n\t\treturn errorList[i].num >= e\n\t})\n\tif i < len(errorList) && errorList[i].num == e {\n\t\treturn errorList[i].name\n\t}\n\treturn \"\"\n}\n\n// SignalName returns the signal name for signal number s.\nfunc SignalName(s syscall.Signal) string {\n\ti := sort.Search(len(signalList), func(i int) bool {\n\t\treturn signalList[i].num >= s\n\t})\n\tif i < len(signalList) && signalList[i].num == s {\n\t\treturn signalList[i].name\n\t}\n\treturn \"\"\n}\n\n// SignalNum returns the syscall.Signal for signal named s,\n// or 0 if a signal with such name is not found.\n// The signal name should start with \"SIG\".\nfunc SignalNum(s string) syscall.Signal {\n\tsignalNameMapOnce.Do(func() {\n\t\tsignalNameMap = make(map[string]syscall.Signal, len(signalList))\n\t\tfor _, signal := range signalList {\n\t\t\tsignalNameMap[signal.name] = signal.num\n\t\t}\n\t})\n\treturn signalNameMap[s]\n}\n\n// clen returns the index of the first NULL byte in n or len(n) if n contains no NULL byte.\nfunc clen(n []byte) int {\n\ti := bytes.IndexByte(n, 0)\n\tif i == -1 {\n\t\ti = len(n)\n\t}\n\treturn i\n}\n\n// Mmap manager, for use by operating system-specific implementations.\n\ntype mmapper struct {\n\tsync.Mutex\n\tactive map[*byte][]byte // active mappings; key is last byte in mapping\n\tmmap   func(addr, length uintptr, prot, flags, fd int, offset int64) (uintptr, error)\n\tmunmap func(addr uintptr, length uintptr) error\n}\n\nfunc (m *mmapper) Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) {\n\tif length <= 0 {\n\t\treturn nil, EINVAL\n\t}\n\n\t// Map the requested memory.\n\taddr, errno := m.mmap(0, uintptr(length), prot, flags, fd, offset)\n\tif errno != nil {\n\t\treturn nil, errno\n\t}\n\n\t// Use unsafe to convert addr into a []byte.\n\tb := unsafe.Slice((*byte)(unsafe.Pointer(addr)), length)\n\n\t// Register mapping in m and return it.\n\tp := &b[cap(b)-1]\n\tm.Lock()\n\tdefer m.Unlock()\n\tm.active[p] = b\n\treturn b, nil\n}\n\nfunc (m *mmapper) Munmap(data []byte) (err error) {\n\tif len(data) == 0 || len(data) != cap(data) {\n\t\treturn EINVAL\n\t}\n\n\t// Find the base of the mapping.\n\tp := &data[cap(data)-1]\n\tm.Lock()\n\tdefer m.Unlock()\n\tb := m.active[p]\n\tif b == nil || &b[0] != &data[0] {\n\t\treturn EINVAL\n\t}\n\n\t// Unmap the memory and update m.\n\tif errno := m.munmap(uintptr(unsafe.Pointer(&b[0])), uintptr(len(b))); errno != nil {\n\t\treturn errno\n\t}\n\tdelete(m.active, p)\n\treturn nil\n}\n\nfunc Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) {\n\treturn mapper.Mmap(fd, offset, length, prot, flags)\n}\n\nfunc Munmap(b []byte) (err error) {\n\treturn mapper.Munmap(b)\n}\n\nfunc MmapPtr(fd int, offset int64, addr unsafe.Pointer, length uintptr, prot int, flags int) (ret unsafe.Pointer, err error) {\n\txaddr, err := mapper.mmap(uintptr(addr), length, prot, flags, fd, offset)\n\treturn unsafe.Pointer(xaddr), err\n}\n\nfunc MunmapPtr(addr unsafe.Pointer, length uintptr) (err error) {\n\treturn mapper.munmap(uintptr(addr), length)\n}\n\nfunc Read(fd int, p []byte) (n int, err error) {\n\tn, err = read(fd, p)\n\tif raceenabled {\n\t\tif n > 0 {\n\t\t\traceWriteRange(unsafe.Pointer(&p[0]), n)\n\t\t}\n\t\tif err == nil {\n\t\t\traceAcquire(unsafe.Pointer(&ioSync))\n\t\t}\n\t}\n\treturn\n}\n\nfunc Write(fd int, p []byte) (n int, err error) {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\tn, err = write(fd, p)\n\tif raceenabled && n > 0 {\n\t\traceReadRange(unsafe.Pointer(&p[0]), n)\n\t}\n\treturn\n}\n\nfunc Pread(fd int, p []byte, offset int64) (n int, err error) {\n\tn, err = pread(fd, p, offset)\n\tif raceenabled {\n\t\tif n > 0 {\n\t\t\traceWriteRange(unsafe.Pointer(&p[0]), n)\n\t\t}\n\t\tif err == nil {\n\t\t\traceAcquire(unsafe.Pointer(&ioSync))\n\t\t}\n\t}\n\treturn\n}\n\nfunc Pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\tn, err = pwrite(fd, p, offset)\n\tif raceenabled && n > 0 {\n\t\traceReadRange(unsafe.Pointer(&p[0]), n)\n\t}\n\treturn\n}\n\n// For testing: clients can set this flag to force\n// creation of IPv6 sockets to return EAFNOSUPPORT.\nvar SocketDisableIPv6 bool\n\n// Sockaddr represents a socket address.\ntype Sockaddr interface {\n\tsockaddr() (ptr unsafe.Pointer, len _Socklen, err error) // lowercase; only we can define Sockaddrs\n}\n\n// SockaddrInet4 implements the Sockaddr interface for AF_INET type sockets.\ntype SockaddrInet4 struct {\n\tPort int\n\tAddr [4]byte\n\traw  RawSockaddrInet4\n}\n\n// SockaddrInet6 implements the Sockaddr interface for AF_INET6 type sockets.\ntype SockaddrInet6 struct {\n\tPort   int\n\tZoneId uint32\n\tAddr   [16]byte\n\traw    RawSockaddrInet6\n}\n\n// SockaddrUnix implements the Sockaddr interface for AF_UNIX type sockets.\ntype SockaddrUnix struct {\n\tName string\n\traw  RawSockaddrUnix\n}\n\nfunc Bind(fd int, sa Sockaddr) (err error) {\n\tptr, n, err := sa.sockaddr()\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn bind(fd, ptr, n)\n}\n\nfunc Connect(fd int, sa Sockaddr) (err error) {\n\tptr, n, err := sa.sockaddr()\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn connect(fd, ptr, n)\n}\n\nfunc Getpeername(fd int) (sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tif err = getpeername(fd, &rsa, &len); err != nil {\n\t\treturn\n\t}\n\treturn anyToSockaddr(fd, &rsa)\n}\n\nfunc GetsockoptByte(fd, level, opt int) (value byte, err error) {\n\tvar n byte\n\tvallen := _Socklen(1)\n\terr = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen)\n\treturn n, err\n}\n\nfunc GetsockoptInt(fd, level, opt int) (value int, err error) {\n\tvar n int32\n\tvallen := _Socklen(4)\n\terr = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen)\n\treturn int(n), err\n}\n\nfunc GetsockoptInet4Addr(fd, level, opt int) (value [4]byte, err error) {\n\tvallen := _Socklen(4)\n\terr = getsockopt(fd, level, opt, unsafe.Pointer(&value[0]), &vallen)\n\treturn value, err\n}\n\nfunc GetsockoptIPMreq(fd, level, opt int) (*IPMreq, error) {\n\tvar value IPMreq\n\tvallen := _Socklen(SizeofIPMreq)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\nfunc GetsockoptIPv6Mreq(fd, level, opt int) (*IPv6Mreq, error) {\n\tvar value IPv6Mreq\n\tvallen := _Socklen(SizeofIPv6Mreq)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\nfunc GetsockoptIPv6MTUInfo(fd, level, opt int) (*IPv6MTUInfo, error) {\n\tvar value IPv6MTUInfo\n\tvallen := _Socklen(SizeofIPv6MTUInfo)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\nfunc GetsockoptICMPv6Filter(fd, level, opt int) (*ICMPv6Filter, error) {\n\tvar value ICMPv6Filter\n\tvallen := _Socklen(SizeofICMPv6Filter)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\nfunc GetsockoptLinger(fd, level, opt int) (*Linger, error) {\n\tvar linger Linger\n\tvallen := _Socklen(SizeofLinger)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&linger), &vallen)\n\treturn &linger, err\n}\n\nfunc GetsockoptTimeval(fd, level, opt int) (*Timeval, error) {\n\tvar tv Timeval\n\tvallen := _Socklen(unsafe.Sizeof(tv))\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&tv), &vallen)\n\treturn &tv, err\n}\n\nfunc GetsockoptUint64(fd, level, opt int) (value uint64, err error) {\n\tvar n uint64\n\tvallen := _Socklen(8)\n\terr = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen)\n\treturn n, err\n}\n\nfunc Recvfrom(fd int, p []byte, flags int) (n int, from Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tif n, err = recvfrom(fd, p, flags, &rsa, &len); err != nil {\n\t\treturn\n\t}\n\tif rsa.Addr.Family != AF_UNSPEC {\n\t\tfrom, err = anyToSockaddr(fd, &rsa)\n\t}\n\treturn\n}\n\n// Recvmsg receives a message from a socket using the recvmsg system call. The\n// received non-control data will be written to p, and any \"out of band\"\n// control data will be written to oob. The flags are passed to recvmsg.\n//\n// The results are:\n//   - n is the number of non-control data bytes read into p\n//   - oobn is the number of control data bytes read into oob; this may be interpreted using [ParseSocketControlMessage]\n//   - recvflags is flags returned by recvmsg\n//   - from is the address of the sender\n//\n// If the underlying socket type is not SOCK_DGRAM, a received message\n// containing oob data and a single '\\0' of non-control data is treated as if\n// the message contained only control data, i.e. n will be zero on return.\nfunc Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) {\n\tvar iov [1]Iovec\n\tif len(p) > 0 {\n\t\tiov[0].Base = &p[0]\n\t\tiov[0].SetLen(len(p))\n\t}\n\tvar rsa RawSockaddrAny\n\tif n, oobn, recvflags, err = recvmsgRaw(fd, iov[:], oob, flags, &rsa); err != nil {\n\t\treturn\n\t}\n\t// source address is only specified if the socket is unconnected\n\tif rsa.Addr.Family != AF_UNSPEC {\n\t\tfrom, err = anyToSockaddr(fd, &rsa)\n\t}\n\treturn\n}\n\n// RecvmsgBuffers receives a message from a socket using the recvmsg system\n// call. This function is equivalent to Recvmsg, but non-control data read is\n// scattered into the buffers slices.\nfunc RecvmsgBuffers(fd int, buffers [][]byte, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) {\n\tiov := make([]Iovec, len(buffers))\n\tfor i := range buffers {\n\t\tif len(buffers[i]) > 0 {\n\t\t\tiov[i].Base = &buffers[i][0]\n\t\t\tiov[i].SetLen(len(buffers[i]))\n\t\t} else {\n\t\t\tiov[i].Base = (*byte)(unsafe.Pointer(&_zero))\n\t\t}\n\t}\n\tvar rsa RawSockaddrAny\n\tif n, oobn, recvflags, err = recvmsgRaw(fd, iov, oob, flags, &rsa); err != nil {\n\t\treturn\n\t}\n\tif rsa.Addr.Family != AF_UNSPEC {\n\t\tfrom, err = anyToSockaddr(fd, &rsa)\n\t}\n\treturn\n}\n\n// Sendmsg sends a message on a socket to an address using the sendmsg system\n// call. This function is equivalent to SendmsgN, but does not return the\n// number of bytes actually sent.\nfunc Sendmsg(fd int, p, oob []byte, to Sockaddr, flags int) (err error) {\n\t_, err = SendmsgN(fd, p, oob, to, flags)\n\treturn\n}\n\n// SendmsgN sends a message on a socket to an address using the sendmsg system\n// call. p contains the non-control data to send, and oob contains the \"out of\n// band\" control data. The flags are passed to sendmsg. The number of\n// non-control bytes actually written to the socket is returned.\n//\n// Some socket types do not support sending control data without accompanying\n// non-control data. If p is empty, and oob contains control data, and the\n// underlying socket type is not SOCK_DGRAM, p will be treated as containing a\n// single '\\0' and the return value will indicate zero bytes sent.\n//\n// The Go function Recvmsg, if called with an empty p and a non-empty oob,\n// will read and ignore this additional '\\0'.  If the message is received by\n// code that does not use Recvmsg, or that does not use Go at all, that code\n// will need to be written to expect and ignore the additional '\\0'.\n//\n// If you need to send non-empty oob with p actually empty, and if the\n// underlying socket type supports it, you can do so via a raw system call as\n// follows:\n//\n//\tmsg := &unix.Msghdr{\n//\t    Control: &oob[0],\n//\t}\n//\tmsg.SetControllen(len(oob))\n//\tn, _, errno := unix.Syscall(unix.SYS_SENDMSG, uintptr(fd), uintptr(unsafe.Pointer(msg)), flags)\nfunc SendmsgN(fd int, p, oob []byte, to Sockaddr, flags int) (n int, err error) {\n\tvar iov [1]Iovec\n\tif len(p) > 0 {\n\t\tiov[0].Base = &p[0]\n\t\tiov[0].SetLen(len(p))\n\t}\n\tvar ptr unsafe.Pointer\n\tvar salen _Socklen\n\tif to != nil {\n\t\tptr, salen, err = to.sockaddr()\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t}\n\treturn sendmsgN(fd, iov[:], oob, ptr, salen, flags)\n}\n\n// SendmsgBuffers sends a message on a socket to an address using the sendmsg\n// system call. This function is equivalent to SendmsgN, but the non-control\n// data is gathered from buffers.\nfunc SendmsgBuffers(fd int, buffers [][]byte, oob []byte, to Sockaddr, flags int) (n int, err error) {\n\tiov := make([]Iovec, len(buffers))\n\tfor i := range buffers {\n\t\tif len(buffers[i]) > 0 {\n\t\t\tiov[i].Base = &buffers[i][0]\n\t\t\tiov[i].SetLen(len(buffers[i]))\n\t\t} else {\n\t\t\tiov[i].Base = (*byte)(unsafe.Pointer(&_zero))\n\t\t}\n\t}\n\tvar ptr unsafe.Pointer\n\tvar salen _Socklen\n\tif to != nil {\n\t\tptr, salen, err = to.sockaddr()\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t}\n\treturn sendmsgN(fd, iov, oob, ptr, salen, flags)\n}\n\nfunc Send(s int, buf []byte, flags int) (err error) {\n\treturn sendto(s, buf, flags, nil, 0)\n}\n\nfunc Sendto(fd int, p []byte, flags int, to Sockaddr) (err error) {\n\tvar ptr unsafe.Pointer\n\tvar salen _Socklen\n\tif to != nil {\n\t\tptr, salen, err = to.sockaddr()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn sendto(fd, p, flags, ptr, salen)\n}\n\nfunc SetsockoptByte(fd, level, opt int, value byte) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(&value), 1)\n}\n\nfunc SetsockoptInt(fd, level, opt int, value int) (err error) {\n\tvar n = int32(value)\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(&n), 4)\n}\n\nfunc SetsockoptInet4Addr(fd, level, opt int, value [4]byte) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(&value[0]), 4)\n}\n\nfunc SetsockoptIPMreq(fd, level, opt int, mreq *IPMreq) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(mreq), SizeofIPMreq)\n}\n\nfunc SetsockoptIPv6Mreq(fd, level, opt int, mreq *IPv6Mreq) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(mreq), SizeofIPv6Mreq)\n}\n\nfunc SetsockoptICMPv6Filter(fd, level, opt int, filter *ICMPv6Filter) error {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(filter), SizeofICMPv6Filter)\n}\n\nfunc SetsockoptLinger(fd, level, opt int, l *Linger) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(l), SizeofLinger)\n}\n\nfunc SetsockoptString(fd, level, opt int, s string) (err error) {\n\tvar p unsafe.Pointer\n\tif len(s) > 0 {\n\t\tp = unsafe.Pointer(&[]byte(s)[0])\n\t}\n\treturn setsockopt(fd, level, opt, p, uintptr(len(s)))\n}\n\nfunc SetsockoptTimeval(fd, level, opt int, tv *Timeval) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(tv), unsafe.Sizeof(*tv))\n}\n\nfunc SetsockoptUint64(fd, level, opt int, value uint64) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(&value), 8)\n}\n\nfunc Socket(domain, typ, proto int) (fd int, err error) {\n\tif domain == AF_INET6 && SocketDisableIPv6 {\n\t\treturn -1, EAFNOSUPPORT\n\t}\n\tfd, err = socket(domain, typ, proto)\n\treturn\n}\n\nfunc Socketpair(domain, typ, proto int) (fd [2]int, err error) {\n\tvar fdx [2]int32\n\terr = socketpair(domain, typ, proto, &fdx)\n\tif err == nil {\n\t\tfd[0] = int(fdx[0])\n\t\tfd[1] = int(fdx[1])\n\t}\n\treturn\n}\n\nvar ioSync int64\n\nfunc CloseOnExec(fd int) { fcntl(fd, F_SETFD, FD_CLOEXEC) }\n\nfunc SetNonblock(fd int, nonblocking bool) (err error) {\n\tflag, err := fcntl(fd, F_GETFL, 0)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif (flag&O_NONBLOCK != 0) == nonblocking {\n\t\treturn nil\n\t}\n\tif nonblocking {\n\t\tflag |= O_NONBLOCK\n\t} else {\n\t\tflag &= ^O_NONBLOCK\n\t}\n\t_, err = fcntl(fd, F_SETFL, flag)\n\treturn err\n}\n\n// Exec calls execve(2), which replaces the calling executable in the process\n// tree. argv0 should be the full path to an executable (\"/bin/ls\") and the\n// executable name should also be the first argument in argv ([\"ls\", \"-l\"]).\n// envv are the environment variables that should be passed to the new\n// process ([\"USER=go\", \"PWD=/tmp\"]).\nfunc Exec(argv0 string, argv []string, envv []string) error {\n\treturn syscall.Exec(argv0, argv, envv)\n}\n\n// Lutimes sets the access and modification times tv on path. If path refers to\n// a symlink, it is not dereferenced and the timestamps are set on the symlink.\n// If tv is nil, the access and modification times are set to the current time.\n// Otherwise tv must contain exactly 2 elements, with access time as the first\n// element and modification time as the second element.\nfunc Lutimes(path string, tv []Timeval) error {\n\tif tv == nil {\n\t\treturn UtimesNanoAt(AT_FDCWD, path, nil, AT_SYMLINK_NOFOLLOW)\n\t}\n\tif len(tv) != 2 {\n\t\treturn EINVAL\n\t}\n\tts := []Timespec{\n\t\tNsecToTimespec(TimevalToNsec(tv[0])),\n\t\tNsecToTimespec(TimevalToNsec(tv[1])),\n\t}\n\treturn UtimesNanoAt(AT_FDCWD, path, ts, AT_SYMLINK_NOFOLLOW)\n}\n\n// emptyIovecs reports whether there are no bytes in the slice of Iovec.\nfunc emptyIovecs(iov []Iovec) bool {\n\tfor i := range iov {\n\t\tif iov[i].Len > 0 {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// Setrlimit sets a resource limit.\nfunc Setrlimit(resource int, rlim *Rlimit) error {\n\t// Just call the syscall version, because as of Go 1.21\n\t// it will affect starting a new process.\n\treturn syscall.Setrlimit(resource, (*syscall.Rlimit)(rlim))\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/syscall_unix_gc.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (darwin || dragonfly || freebsd || (linux && !ppc64 && !ppc64le) || netbsd || openbsd || solaris) && gc\n\npackage unix\n\nimport \"syscall\"\n\nfunc Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno)\nfunc Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno)\nfunc RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno)\nfunc RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && (ppc64le || ppc64) && gc\n\npackage unix\n\nimport \"syscall\"\n\nfunc Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) {\n\treturn syscall.Syscall(trap, a1, a2, a3)\n}\nfunc Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) {\n\treturn syscall.Syscall6(trap, a1, a2, a3, a4, a5, a6)\n}\nfunc RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) {\n\treturn syscall.RawSyscall(trap, a1, a2, a3)\n}\nfunc RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) {\n\treturn syscall.RawSyscall6(trap, a1, a2, a3, a4, a5, a6)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/syscall_zos_s390x.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build zos && s390x\n\n// Many of the following syscalls are not available on all versions of z/OS.\n// Some missing calls have legacy implementations/simulations but others\n// will be missing completely. To achieve consistent failing behaviour on\n// legacy systems, we first test the function pointer via a safeloading\n// mechanism to see if the function exists on a given system. Then execution\n// is branched to either continue the function call, or return an error.\n\npackage unix\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"os\"\n\t\"reflect\"\n\t\"regexp\"\n\t\"runtime\"\n\t\"sort\"\n\t\"strings\"\n\t\"sync\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n//go:noescape\nfunc initZosLibVec()\n\n//go:noescape\nfunc GetZosLibVec() uintptr\n\nfunc init() {\n\tinitZosLibVec()\n\tr0, _, _ := CallLeFuncWithPtrReturn(GetZosLibVec()+SYS_____GETENV_A<<4, uintptr(unsafe.Pointer(&([]byte(\"__ZOS_XSYSTRACE\\x00\"))[0])))\n\tif r0 != 0 {\n\t\tn, _, _ := CallLeFuncWithPtrReturn(GetZosLibVec()+SYS___ATOI_A<<4, r0)\n\t\tZosTraceLevel = int(n)\n\t\tr0, _, _ := CallLeFuncWithPtrReturn(GetZosLibVec()+SYS_____GETENV_A<<4, uintptr(unsafe.Pointer(&([]byte(\"__ZOS_XSYSTRACEFD\\x00\"))[0])))\n\t\tif r0 != 0 {\n\t\t\tfd, _, _ := CallLeFuncWithPtrReturn(GetZosLibVec()+SYS___ATOI_A<<4, r0)\n\t\t\tf := os.NewFile(fd, \"zostracefile\")\n\t\t\tif f != nil {\n\t\t\t\tZosTracefile = f\n\t\t\t}\n\t\t}\n\n\t}\n}\n\n//go:noescape\nfunc CallLeFuncWithErr(funcdesc uintptr, parms ...uintptr) (ret, errno2 uintptr, err Errno)\n\n//go:noescape\nfunc CallLeFuncWithPtrReturn(funcdesc uintptr, parms ...uintptr) (ret, errno2 uintptr, err Errno)\n\n// -------------------------------\n// pointer validity test\n// good pointer returns 0\n// bad pointer returns 1\n//\n//go:nosplit\nfunc ptrtest(uintptr) uint64\n\n// Load memory at ptr location with error handling if the location is invalid\n//\n//go:noescape\nfunc safeload(ptr uintptr) (value uintptr, error uintptr)\n\nconst (\n\tentrypointLocationOffset = 8 // From function descriptor\n\n\txplinkEyecatcher   = 0x00c300c500c500f1 // \".C.E.E.1\"\n\teyecatcherOffset   = 16                 // From function entrypoint (negative)\n\tppa1LocationOffset = 8                  // From function entrypoint (negative)\n\n\tnameLenOffset = 0x14 // From PPA1 start\n\tnameOffset    = 0x16 // From PPA1 start\n)\n\nfunc getPpaOffset(funcptr uintptr) int64 {\n\tentrypoint, err := safeload(funcptr + entrypointLocationOffset)\n\tif err != 0 {\n\t\treturn -1\n\t}\n\n\t// XPLink functions have \".C.E.E.1\" as the first 8 bytes (EBCDIC)\n\tval, err := safeload(entrypoint - eyecatcherOffset)\n\tif err != 0 {\n\t\treturn -1\n\t}\n\tif val != xplinkEyecatcher {\n\t\treturn -1\n\t}\n\n\tppaoff, err := safeload(entrypoint - ppa1LocationOffset)\n\tif err != 0 {\n\t\treturn -1\n\t}\n\n\tppaoff >>= 32\n\treturn int64(ppaoff)\n}\n\n//-------------------------------\n// function descriptor pointer validity test\n// good pointer returns 0\n// bad pointer returns 1\n\n// TODO: currently mksyscall_zos_s390x.go generate empty string for funcName\n// have correct funcName pass to the funcptrtest function\nfunc funcptrtest(funcptr uintptr, funcName string) uint64 {\n\tentrypoint, err := safeload(funcptr + entrypointLocationOffset)\n\tif err != 0 {\n\t\treturn 1\n\t}\n\n\tppaoff := getPpaOffset(funcptr)\n\tif ppaoff == -1 {\n\t\treturn 1\n\t}\n\n\t// PPA1 offset value is from the start of the entire function block, not the entrypoint\n\tppa1 := (entrypoint - eyecatcherOffset) + uintptr(ppaoff)\n\n\tnameLen, err := safeload(ppa1 + nameLenOffset)\n\tif err != 0 {\n\t\treturn 1\n\t}\n\n\tnameLen >>= 48\n\tif nameLen > 128 {\n\t\treturn 1\n\t}\n\n\t// no function name input to argument end here\n\tif funcName == \"\" {\n\t\treturn 0\n\t}\n\n\tvar funcname [128]byte\n\tfor i := 0; i < int(nameLen); i += 8 {\n\t\tv, err := safeload(ppa1 + nameOffset + uintptr(i))\n\t\tif err != 0 {\n\t\t\treturn 1\n\t\t}\n\t\tfuncname[i] = byte(v >> 56)\n\t\tfuncname[i+1] = byte(v >> 48)\n\t\tfuncname[i+2] = byte(v >> 40)\n\t\tfuncname[i+3] = byte(v >> 32)\n\t\tfuncname[i+4] = byte(v >> 24)\n\t\tfuncname[i+5] = byte(v >> 16)\n\t\tfuncname[i+6] = byte(v >> 8)\n\t\tfuncname[i+7] = byte(v)\n\t}\n\n\truntime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS___E2A_L<<4, // __e2a_l\n\t\t[]uintptr{uintptr(unsafe.Pointer(&funcname[0])), nameLen})\n\n\tname := string(funcname[:nameLen])\n\tif name != funcName {\n\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n// For detection of capabilities on a system.\n// Is function descriptor f a valid function?\nfunc isValidLeFunc(f uintptr) error {\n\tret := funcptrtest(f, \"\")\n\tif ret != 0 {\n\t\treturn fmt.Errorf(\"Bad pointer, not an LE function \")\n\t}\n\treturn nil\n}\n\n// Retrieve function name from descriptor\nfunc getLeFuncName(f uintptr) (string, error) {\n\t// assume it has been checked, only check ppa1 validity here\n\tentry := ((*[2]uintptr)(unsafe.Pointer(f)))[1]\n\tpreamp := ((*[4]uint32)(unsafe.Pointer(entry - eyecatcherOffset)))\n\n\toffsetPpa1 := preamp[2]\n\tif offsetPpa1 > 0x0ffff {\n\t\treturn \"\", fmt.Errorf(\"PPA1 offset seems too big 0x%x\\n\", offsetPpa1)\n\t}\n\n\tppa1 := uintptr(unsafe.Pointer(preamp)) + uintptr(offsetPpa1)\n\tres := ptrtest(ppa1)\n\tif res != 0 {\n\t\treturn \"\", fmt.Errorf(\"PPA1 address not valid\")\n\t}\n\n\tsize := *(*uint16)(unsafe.Pointer(ppa1 + nameLenOffset))\n\tif size > 128 {\n\t\treturn \"\", fmt.Errorf(\"Function name seems too long, length=%d\\n\", size)\n\t}\n\n\tvar name [128]byte\n\tfuncname := (*[128]byte)(unsafe.Pointer(ppa1 + nameOffset))\n\tcopy(name[0:size], funcname[0:size])\n\n\truntime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS___E2A_L<<4, // __e2a_l\n\t\t[]uintptr{uintptr(unsafe.Pointer(&name[0])), uintptr(size)})\n\n\treturn string(name[:size]), nil\n}\n\n// Check z/OS version\nfunc zosLeVersion() (version, release uint32) {\n\tp1 := (*(*uintptr)(unsafe.Pointer(uintptr(1208)))) >> 32\n\tp1 = *(*uintptr)(unsafe.Pointer(uintptr(p1 + 88)))\n\tp1 = *(*uintptr)(unsafe.Pointer(uintptr(p1 + 8)))\n\tp1 = *(*uintptr)(unsafe.Pointer(uintptr(p1 + 984)))\n\tvrm := *(*uint32)(unsafe.Pointer(p1 + 80))\n\tversion = (vrm & 0x00ff0000) >> 16\n\trelease = (vrm & 0x0000ff00) >> 8\n\treturn\n}\n\n// returns a zos C FILE * for stdio fd 0, 1, 2\nfunc ZosStdioFilep(fd int32) uintptr {\n\treturn uintptr(*(*uint64)(unsafe.Pointer(uintptr(*(*uint64)(unsafe.Pointer(uintptr(*(*uint64)(unsafe.Pointer(uintptr(uint64(*(*uint32)(unsafe.Pointer(uintptr(1208)))) + 80))) + uint64((fd+2)<<3))))))))\n}\n\nfunc copyStat(stat *Stat_t, statLE *Stat_LE_t) {\n\tstat.Dev = uint64(statLE.Dev)\n\tstat.Ino = uint64(statLE.Ino)\n\tstat.Nlink = uint64(statLE.Nlink)\n\tstat.Mode = uint32(statLE.Mode)\n\tstat.Uid = uint32(statLE.Uid)\n\tstat.Gid = uint32(statLE.Gid)\n\tstat.Rdev = uint64(statLE.Rdev)\n\tstat.Size = statLE.Size\n\tstat.Atim.Sec = int64(statLE.Atim)\n\tstat.Atim.Nsec = 0 //zos doesn't return nanoseconds\n\tstat.Mtim.Sec = int64(statLE.Mtim)\n\tstat.Mtim.Nsec = 0 //zos doesn't return nanoseconds\n\tstat.Ctim.Sec = int64(statLE.Ctim)\n\tstat.Ctim.Nsec = 0 //zos doesn't return nanoseconds\n\tstat.Blksize = int64(statLE.Blksize)\n\tstat.Blocks = statLE.Blocks\n}\n\nfunc svcCall(fnptr unsafe.Pointer, argv *unsafe.Pointer, dsa *uint64)\nfunc svcLoad(name *byte) unsafe.Pointer\nfunc svcUnload(name *byte, fnptr unsafe.Pointer) int64\n\nfunc (d *Dirent) NameString() string {\n\tif d == nil {\n\t\treturn \"\"\n\t}\n\ts := string(d.Name[:])\n\tidx := strings.IndexByte(s, 0)\n\tif idx == -1 {\n\t\treturn s\n\t} else {\n\t\treturn s[:idx]\n\t}\n}\n\nfunc DecodeData(dest []byte, sz int, val uint64) {\n\tfor i := 0; i < sz; i++ {\n\t\tdest[sz-1-i] = byte((val >> (uint64(i * 8))) & 0xff)\n\t}\n}\n\nfunc EncodeData(data []byte) uint64 {\n\tvar value uint64\n\tsz := len(data)\n\tfor i := 0; i < sz; i++ {\n\t\tvalue |= uint64(data[i]) << uint64(((sz - i - 1) * 8))\n\t}\n\treturn value\n}\n\nfunc (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Port < 0 || sa.Port > 0xFFFF {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Len = SizeofSockaddrInet4\n\tsa.raw.Family = AF_INET\n\tp := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))\n\tp[0] = byte(sa.Port >> 8)\n\tp[1] = byte(sa.Port)\n\tfor i := 0; i < len(sa.Addr); i++ {\n\t\tsa.raw.Addr[i] = sa.Addr[i]\n\t}\n\treturn unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil\n}\n\nfunc (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Port < 0 || sa.Port > 0xFFFF {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Len = SizeofSockaddrInet6\n\tsa.raw.Family = AF_INET6\n\tp := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))\n\tp[0] = byte(sa.Port >> 8)\n\tp[1] = byte(sa.Port)\n\tsa.raw.Scope_id = sa.ZoneId\n\tfor i := 0; i < len(sa.Addr); i++ {\n\t\tsa.raw.Addr[i] = sa.Addr[i]\n\t}\n\treturn unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil\n}\n\nfunc (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tname := sa.Name\n\tn := len(name)\n\tif n >= len(sa.raw.Path) || n == 0 {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Len = byte(3 + n) // 2 for Family, Len; 1 for NUL\n\tsa.raw.Family = AF_UNIX\n\tfor i := 0; i < n; i++ {\n\t\tsa.raw.Path[i] = int8(name[i])\n\t}\n\treturn unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil\n}\n\nfunc anyToSockaddr(_ int, rsa *RawSockaddrAny) (Sockaddr, error) {\n\t// TODO(neeilan): Implement use of first param (fd)\n\tswitch rsa.Addr.Family {\n\tcase AF_UNIX:\n\t\tpp := (*RawSockaddrUnix)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrUnix)\n\t\t// For z/OS, only replace NUL with @ when the\n\t\t// length is not zero.\n\t\tif pp.Len != 0 && pp.Path[0] == 0 {\n\t\t\t// \"Abstract\" Unix domain socket.\n\t\t\t// Rewrite leading NUL as @ for textual display.\n\t\t\t// (This is the standard convention.)\n\t\t\t// Not friendly to overwrite in place,\n\t\t\t// but the callers below don't care.\n\t\t\tpp.Path[0] = '@'\n\t\t}\n\n\t\t// Assume path ends at NUL.\n\t\t//\n\t\t// For z/OS, the length of the name is a field\n\t\t// in the structure. To be on the safe side, we\n\t\t// will still scan the name for a NUL but only\n\t\t// to the length provided in the structure.\n\t\t//\n\t\t// This is not technically the Linux semantics for\n\t\t// abstract Unix domain sockets--they are supposed\n\t\t// to be uninterpreted fixed-size binary blobs--but\n\t\t// everyone uses this convention.\n\t\tn := 0\n\t\tfor n < int(pp.Len) && pp.Path[n] != 0 {\n\t\t\tn++\n\t\t}\n\t\tsa.Name = string(unsafe.Slice((*byte)(unsafe.Pointer(&pp.Path[0])), n))\n\t\treturn sa, nil\n\n\tcase AF_INET:\n\t\tpp := (*RawSockaddrInet4)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrInet4)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tfor i := 0; i < len(sa.Addr); i++ {\n\t\t\tsa.Addr[i] = pp.Addr[i]\n\t\t}\n\t\treturn sa, nil\n\n\tcase AF_INET6:\n\t\tpp := (*RawSockaddrInet6)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrInet6)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tsa.ZoneId = pp.Scope_id\n\t\tfor i := 0; i < len(sa.Addr); i++ {\n\t\t\tsa.Addr[i] = pp.Addr[i]\n\t\t}\n\t\treturn sa, nil\n\t}\n\treturn nil, EAFNOSUPPORT\n}\n\nfunc Accept(fd int) (nfd int, sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tnfd, err = accept(fd, &rsa, &len)\n\tif err != nil {\n\t\treturn\n\t}\n\t// TODO(neeilan): Remove 0 in call\n\tsa, err = anyToSockaddr(0, &rsa)\n\tif err != nil {\n\t\tClose(nfd)\n\t\tnfd = 0\n\t}\n\treturn\n}\n\nfunc Accept4(fd int, flags int) (nfd int, sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tnfd, err = accept4(fd, &rsa, &len, flags)\n\tif err != nil {\n\t\treturn\n\t}\n\tif len > SizeofSockaddrAny {\n\t\tpanic(\"RawSockaddrAny too small\")\n\t}\n\t// TODO(neeilan): Remove 0 in call\n\tsa, err = anyToSockaddr(0, &rsa)\n\tif err != nil {\n\t\tClose(nfd)\n\t\tnfd = 0\n\t}\n\treturn\n}\n\nfunc Ctermid() (tty string, err error) {\n\tvar termdev [1025]byte\n\truntime.EnterSyscall()\n\tr0, err2, err1 := CallLeFuncWithPtrReturn(GetZosLibVec()+SYS___CTERMID_A<<4, uintptr(unsafe.Pointer(&termdev[0])))\n\truntime.ExitSyscall()\n\tif r0 == 0 {\n\t\treturn \"\", fmt.Errorf(\"%s (errno2=0x%x)\\n\", err1.Error(), err2)\n\t}\n\ts := string(termdev[:])\n\tidx := strings.Index(s, string(rune(0)))\n\tif idx == -1 {\n\t\ttty = s\n\t} else {\n\t\ttty = s[:idx]\n\t}\n\treturn\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = int32(length)\n}\n\n//sys   fcntl(fd int, cmd int, arg int) (val int, err error)\n//sys   Flistxattr(fd int, dest []byte) (sz int, err error) = SYS___FLISTXATTR_A\n//sys   Fremovexattr(fd int, attr string) (err error) = SYS___FREMOVEXATTR_A\n//sys\tread(fd int, p []byte) (n int, err error)\n//sys\twrite(fd int, p []byte) (n int, err error)\n\n//sys   Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) = SYS___FGETXATTR_A\n//sys   Fsetxattr(fd int, attr string, data []byte, flag int) (err error) = SYS___FSETXATTR_A\n\n//sys\taccept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) = SYS___ACCEPT_A\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) = SYS___ACCEPT4_A\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) = SYS___BIND_A\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) = SYS___CONNECT_A\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) = SYS___GETPEERNAME_A\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) = SYS___GETSOCKNAME_A\n//sys   Removexattr(path string, attr string) (err error) = SYS___REMOVEXATTR_A\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) = SYS___RECVFROM_A\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) = SYS___SENDTO_A\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error) = SYS___RECVMSG_A\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error) = SYS___SENDMSG_A\n//sys   mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) = SYS_MMAP\n//sys   munmap(addr uintptr, length uintptr) (err error) = SYS_MUNMAP\n//sys   ioctl(fd int, req int, arg uintptr) (err error) = SYS_IOCTL\n//sys   ioctlPtr(fd int, req int, arg unsafe.Pointer) (err error) = SYS_IOCTL\n//sys\tshmat(id int, addr uintptr, flag int) (ret uintptr, err error) = SYS_SHMAT\n//sys\tshmctl(id int, cmd int, buf *SysvShmDesc) (result int, err error) = SYS_SHMCTL64\n//sys\tshmdt(addr uintptr) (err error) = SYS_SHMDT\n//sys\tshmget(key int, size int, flag int) (id int, err error) = SYS_SHMGET\n\n//sys   Access(path string, mode uint32) (err error) = SYS___ACCESS_A\n//sys   Chdir(path string) (err error) = SYS___CHDIR_A\n//sys\tChown(path string, uid int, gid int) (err error) = SYS___CHOWN_A\n//sys\tChmod(path string, mode uint32) (err error) = SYS___CHMOD_A\n//sys   Creat(path string, mode uint32) (fd int, err error) = SYS___CREAT_A\n//sys\tDup(oldfd int) (fd int, err error)\n//sys\tDup2(oldfd int, newfd int) (err error)\n//sys\tDup3(oldfd int, newfd int, flags int) (err error) = SYS_DUP3\n//sys\tDirfd(dirp uintptr) (fd int, err error) = SYS_DIRFD\n//sys\tEpollCreate(size int) (fd int, err error) = SYS_EPOLL_CREATE\n//sys\tEpollCreate1(flags int) (fd int, err error) = SYS_EPOLL_CREATE1\n//sys\tEpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) = SYS_EPOLL_CTL\n//sys\tEpollPwait(epfd int, events []EpollEvent, msec int, sigmask *int) (n int, err error) = SYS_EPOLL_PWAIT\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) = SYS_EPOLL_WAIT\n//sys\tErrno2() (er2 int) = SYS___ERRNO2\n//sys\tEventfd(initval uint, flags int) (fd int, err error) = SYS_EVENTFD\n//sys\tExit(code int)\n//sys\tFaccessat(dirfd int, path string, mode uint32, flags int) (err error) = SYS___FACCESSAT_A\n\nfunc Faccessat2(dirfd int, path string, mode uint32, flags int) (err error) {\n\treturn Faccessat(dirfd, path, mode, flags)\n}\n\n//sys\tFchdir(fd int) (err error)\n//sys\tFchmod(fd int, mode uint32) (err error)\n//sys\tFchmodat(dirfd int, path string, mode uint32, flags int) (err error) = SYS___FCHMODAT_A\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFchownat(fd int, path string, uid int, gid int, flags int) (err error) = SYS___FCHOWNAT_A\n//sys\tFcntlInt(fd uintptr, cmd int, arg int) (retval int, err error) = SYS_FCNTL\n//sys\tFdatasync(fd int) (err error) = SYS_FDATASYNC\n//sys\tfstat(fd int, stat *Stat_LE_t) (err error)\n//sys\tfstatat(dirfd int, path string, stat *Stat_LE_t, flags int) (err error) = SYS___FSTATAT_A\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\tvar statLE Stat_LE_t\n\terr = fstat(fd, &statLE)\n\tcopyStat(stat, &statLE)\n\treturn\n}\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar statLE Stat_LE_t\n\terr = fstatat(dirfd, path, &statLE, flags)\n\tcopyStat(stat, &statLE)\n\treturn\n}\n\nfunc impl_Getxattr(path string, attr string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p2 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___GETXATTR_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)))\n\tsz = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_GetxattrAddr() *(func(path string, attr string, dest []byte) (sz int, err error))\n\nvar Getxattr = enter_Getxattr\n\nfunc enter_Getxattr(path string, attr string, dest []byte) (sz int, err error) {\n\tfuncref := get_GetxattrAddr()\n\tif validGetxattr() {\n\t\t*funcref = impl_Getxattr\n\t} else {\n\t\t*funcref = error_Getxattr\n\t}\n\treturn (*funcref)(path, attr, dest)\n}\n\nfunc error_Getxattr(path string, attr string, dest []byte) (sz int, err error) {\n\treturn -1, ENOSYS\n}\n\nfunc validGetxattr() bool {\n\tif funcptrtest(GetZosLibVec()+SYS___GETXATTR_A<<4, \"\") == 0 {\n\t\tif name, err := getLeFuncName(GetZosLibVec() + SYS___GETXATTR_A<<4); err == nil {\n\t\t\treturn name == \"__getxattr_a\"\n\t\t}\n\t}\n\treturn false\n}\n\n//sys   Lgetxattr(link string, attr string, dest []byte) (sz int, err error) = SYS___LGETXATTR_A\n//sys   Lsetxattr(path string, attr string, data []byte, flags int) (err error) = SYS___LSETXATTR_A\n\nfunc impl_Setxattr(path string, attr string, data []byte, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(data) > 0 {\n\t\t_p2 = unsafe.Pointer(&data[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___SETXATTR_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags))\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_SetxattrAddr() *(func(path string, attr string, data []byte, flags int) (err error))\n\nvar Setxattr = enter_Setxattr\n\nfunc enter_Setxattr(path string, attr string, data []byte, flags int) (err error) {\n\tfuncref := get_SetxattrAddr()\n\tif validSetxattr() {\n\t\t*funcref = impl_Setxattr\n\t} else {\n\t\t*funcref = error_Setxattr\n\t}\n\treturn (*funcref)(path, attr, data, flags)\n}\n\nfunc error_Setxattr(path string, attr string, data []byte, flags int) (err error) {\n\treturn ENOSYS\n}\n\nfunc validSetxattr() bool {\n\tif funcptrtest(GetZosLibVec()+SYS___SETXATTR_A<<4, \"\") == 0 {\n\t\tif name, err := getLeFuncName(GetZosLibVec() + SYS___SETXATTR_A<<4); err == nil {\n\t\t\treturn name == \"__setxattr_a\"\n\t\t}\n\t}\n\treturn false\n}\n\n//sys\tFstatfs(fd int, buf *Statfs_t) (err error) = SYS_FSTATFS\n//sys\tFstatvfs(fd int, stat *Statvfs_t) (err error) = SYS_FSTATVFS\n//sys\tFsync(fd int) (err error)\n//sys\tFutimes(fd int, tv []Timeval) (err error) = SYS_FUTIMES\n//sys\tFutimesat(dirfd int, path string, tv []Timeval) (err error) = SYS___FUTIMESAT_A\n//sys\tFtruncate(fd int, length int64) (err error)\n//sys\tGetrandom(buf []byte, flags int) (n int, err error) = SYS_GETRANDOM\n//sys\tInotifyInit() (fd int, err error) = SYS_INOTIFY_INIT\n//sys\tInotifyInit1(flags int) (fd int, err error) = SYS_INOTIFY_INIT1\n//sys\tInotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) = SYS___INOTIFY_ADD_WATCH_A\n//sys\tInotifyRmWatch(fd int, watchdesc uint32) (success int, err error) = SYS_INOTIFY_RM_WATCH\n//sys   Listxattr(path string, dest []byte) (sz int, err error) = SYS___LISTXATTR_A\n//sys   Llistxattr(path string, dest []byte) (sz int, err error) = SYS___LLISTXATTR_A\n//sys   Lremovexattr(path string, attr string) (err error) = SYS___LREMOVEXATTR_A\n//sys\tLutimes(path string, tv []Timeval) (err error) = SYS___LUTIMES_A\n//sys   Mprotect(b []byte, prot int) (err error) = SYS_MPROTECT\n//sys   Msync(b []byte, flags int) (err error) = SYS_MSYNC\n//sys   Console2(cmsg *ConsMsg2, modstr *byte, concmd *uint32) (err error) = SYS___CONSOLE2\n\n// Pipe2 begin\n\n//go:nosplit\nfunc getPipe2Addr() *(func([]int, int) error)\n\nvar Pipe2 = pipe2Enter\n\nfunc pipe2Enter(p []int, flags int) (err error) {\n\tif funcptrtest(GetZosLibVec()+SYS_PIPE2<<4, \"\") == 0 {\n\t\t*getPipe2Addr() = pipe2Impl\n\t} else {\n\t\t*getPipe2Addr() = pipe2Error\n\t}\n\treturn (*getPipe2Addr())(p, flags)\n}\n\nfunc pipe2Impl(p []int, flags int) (err error) {\n\tvar pp [2]_C_int\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_PIPE2<<4, uintptr(unsafe.Pointer(&pp[0])), uintptr(flags))\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t} else {\n\t\tp[0] = int(pp[0])\n\t\tp[1] = int(pp[1])\n\t}\n\treturn\n}\nfunc pipe2Error(p []int, flags int) (err error) {\n\treturn fmt.Errorf(\"Pipe2 is not available on this system\")\n}\n\n// Pipe2 end\n\n//sys   Poll(fds []PollFd, timeout int) (n int, err error) = SYS_POLL\n\nfunc Readdir(dir uintptr) (dirent *Dirent, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___READDIR_A<<4, uintptr(dir))\n\truntime.ExitSyscall()\n\tdirent = (*Dirent)(unsafe.Pointer(r0))\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//sys\tReaddir_r(dirp uintptr, entry *direntLE, result **direntLE) (err error) = SYS___READDIR_R_A\n//sys\tStatfs(path string, buf *Statfs_t) (err error) = SYS___STATFS_A\n//sys\tSyncfs(fd int) (err error) = SYS_SYNCFS\n//sys   Times(tms *Tms) (ticks uintptr, err error) = SYS_TIMES\n//sys   W_Getmntent(buff *byte, size int) (lastsys int, err error) = SYS_W_GETMNTENT\n//sys   W_Getmntent_A(buff *byte, size int) (lastsys int, err error) = SYS___W_GETMNTENT_A\n\n//sys   mount_LE(path string, filesystem string, fstype string, mtm uint32, parmlen int32, parm string) (err error) = SYS___MOUNT_A\n//sys   unmount_LE(filesystem string, mtm int) (err error) = SYS___UMOUNT_A\n//sys   Chroot(path string) (err error) = SYS___CHROOT_A\n//sys   Select(nmsgsfds int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (ret int, err error) = SYS_SELECT\n//sysnb Uname(buf *Utsname) (err error) = SYS_____OSNAME_A\n//sys   Unshare(flags int) (err error) = SYS_UNSHARE\n\nfunc Ptsname(fd int) (name string, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithPtrReturn(GetZosLibVec()+SYS___PTSNAME_A<<4, uintptr(fd))\n\truntime.ExitSyscall()\n\tif r0 == 0 {\n\t\terr = errnoErr2(e1, e2)\n\t} else {\n\t\tname = u2s(unsafe.Pointer(r0))\n\t}\n\treturn\n}\n\nfunc u2s(cstr unsafe.Pointer) string {\n\tstr := (*[1024]uint8)(cstr)\n\ti := 0\n\tfor str[i] != 0 {\n\t\ti++\n\t}\n\treturn string(str[:i])\n}\n\nfunc Close(fd int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_CLOSE<<4, uintptr(fd))\n\truntime.ExitSyscall()\n\tfor i := 0; e1 == EAGAIN && i < 10; i++ {\n\t\truntime.EnterSyscall()\n\t\tCallLeFuncWithErr(GetZosLibVec()+SYS_USLEEP<<4, uintptr(10))\n\t\truntime.ExitSyscall()\n\t\truntime.EnterSyscall()\n\t\tr0, e2, e1 = CallLeFuncWithErr(GetZosLibVec()+SYS_CLOSE<<4, uintptr(fd))\n\t\truntime.ExitSyscall()\n\t}\n\tif r0 != 0 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// Dummy function: there are no semantics for Madvise on z/OS\nfunc Madvise(b []byte, advice int) (err error) {\n\treturn\n}\n\nfunc Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) {\n\treturn mapper.Mmap(fd, offset, length, prot, flags)\n}\n\nfunc Munmap(b []byte) (err error) {\n\treturn mapper.Munmap(b)\n}\n\nfunc MmapPtr(fd int, offset int64, addr unsafe.Pointer, length uintptr, prot int, flags int) (ret unsafe.Pointer, err error) {\n\txaddr, err := mapper.mmap(uintptr(addr), length, prot, flags, fd, offset)\n\treturn unsafe.Pointer(xaddr), err\n}\n\nfunc MunmapPtr(addr unsafe.Pointer, length uintptr) (err error) {\n\treturn mapper.munmap(uintptr(addr), length)\n}\n\n//sys   Gethostname(buf []byte) (err error) = SYS___GETHOSTNAME_A\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetpid() (pid int)\n//sysnb\tGetpgid(pid int) (pgid int, err error) = SYS_GETPGID\n\nfunc Getpgrp() (pid int) {\n\tpid, _ = Getpgid(0)\n\treturn\n}\n\n//sysnb\tGetppid() (pid int)\n//sys\tGetpriority(which int, who int) (prio int, err error)\n//sysnb\tGetrlimit(resource int, rlim *Rlimit) (err error) = SYS_GETRLIMIT\n\n//sysnb getrusage(who int, rusage *rusage_zos) (err error) = SYS_GETRUSAGE\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\tvar ruz rusage_zos\n\terr = getrusage(who, &ruz)\n\t//Only the first two fields of Rusage are set\n\trusage.Utime.Sec = ruz.Utime.Sec\n\trusage.Utime.Usec = int64(ruz.Utime.Usec)\n\trusage.Stime.Sec = ruz.Stime.Sec\n\trusage.Stime.Usec = int64(ruz.Stime.Usec)\n\treturn\n}\n\n//sys\tGetegid() (egid int) = SYS_GETEGID\n//sys\tGeteuid() (euid int) = SYS_GETEUID\n//sysnb Getsid(pid int) (sid int, err error) = SYS_GETSID\n//sysnb\tGetuid() (uid int)\n//sysnb\tKill(pid int, sig Signal) (err error)\n//sys\tLchown(path string, uid int, gid int) (err error) = SYS___LCHOWN_A\n//sys\tLink(path string, link string) (err error) = SYS___LINK_A\n//sys\tLinkat(oldDirFd int, oldPath string, newDirFd int, newPath string, flags int) (err error) = SYS___LINKAT_A\n//sys\tListen(s int, n int) (err error)\n//sys\tlstat(path string, stat *Stat_LE_t) (err error) = SYS___LSTAT_A\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar statLE Stat_LE_t\n\terr = lstat(path, &statLE)\n\tcopyStat(stat, &statLE)\n\treturn\n}\n\n// for checking symlinks begins with $VERSION/ $SYSNAME/ $SYSSYMR/ $SYSSYMA/\nfunc isSpecialPath(path []byte) (v bool) {\n\tvar special = [4][8]byte{\n\t\t{'V', 'E', 'R', 'S', 'I', 'O', 'N', '/'},\n\t\t{'S', 'Y', 'S', 'N', 'A', 'M', 'E', '/'},\n\t\t{'S', 'Y', 'S', 'S', 'Y', 'M', 'R', '/'},\n\t\t{'S', 'Y', 'S', 'S', 'Y', 'M', 'A', '/'}}\n\n\tvar i, j int\n\tfor i = 0; i < len(special); i++ {\n\t\tfor j = 0; j < len(special[i]); j++ {\n\t\t\tif path[j] != special[i][j] {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif j == len(special[i]) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc realpath(srcpath string, abspath []byte) (pathlen int, errno int) {\n\tvar source [1024]byte\n\tcopy(source[:], srcpath)\n\tsource[len(srcpath)] = 0\n\tret := runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS___REALPATH_A<<4, //__realpath_a()\n\t\t[]uintptr{uintptr(unsafe.Pointer(&source[0])),\n\t\t\tuintptr(unsafe.Pointer(&abspath[0]))})\n\tif ret != 0 {\n\t\tindex := bytes.IndexByte(abspath[:], byte(0))\n\t\tif index != -1 {\n\t\t\treturn index, 0\n\t\t}\n\t} else {\n\t\terrptr := (*int)(unsafe.Pointer(runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS___ERRNO<<4, []uintptr{}))) //__errno()\n\t\treturn 0, *errptr\n\t}\n\treturn 0, 245 // EBADDATA   245\n}\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tn = int(runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS___READLINK_A<<4,\n\t\t[]uintptr{uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))}))\n\truntime.KeepAlive(unsafe.Pointer(_p0))\n\tif n == -1 {\n\t\tvalue := *(*int32)(unsafe.Pointer(runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS___ERRNO<<4, []uintptr{})))\n\t\terr = errnoErr(Errno(value))\n\t} else {\n\t\tif buf[0] == '$' {\n\t\t\tif isSpecialPath(buf[1:9]) {\n\t\t\t\tcnt, err1 := realpath(path, buf)\n\t\t\t\tif err1 == 0 {\n\t\t\t\t\tn = cnt\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn\n}\n\nfunc impl_Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___READLINKAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\truntime.ExitSyscall()\n\tn = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t\treturn n, err\n\t} else {\n\t\tif buf[0] == '$' {\n\t\t\tif isSpecialPath(buf[1:9]) {\n\t\t\t\tcnt, err1 := realpath(path, buf)\n\t\t\t\tif err1 == 0 {\n\t\t\t\t\tn = cnt\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_ReadlinkatAddr() *(func(dirfd int, path string, buf []byte) (n int, err error))\n\nvar Readlinkat = enter_Readlinkat\n\nfunc enter_Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tfuncref := get_ReadlinkatAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___READLINKAT_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Readlinkat\n\t} else {\n\t\t*funcref = error_Readlinkat\n\t}\n\treturn (*funcref)(dirfd, path, buf)\n}\n\nfunc error_Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tn = -1\n\terr = ENOSYS\n\treturn\n}\n\n//sys\tMkdir(path string, mode uint32) (err error) = SYS___MKDIR_A\n//sys\tMkdirat(dirfd int, path string, mode uint32) (err error) = SYS___MKDIRAT_A\n//sys   Mkfifo(path string, mode uint32) (err error) = SYS___MKFIFO_A\n//sys\tMknod(path string, mode uint32, dev int) (err error) = SYS___MKNOD_A\n//sys\tMknodat(dirfd int, path string, mode uint32, dev int) (err error) = SYS___MKNODAT_A\n//sys\tPivotRoot(newroot string, oldroot string) (err error) = SYS___PIVOT_ROOT_A\n//sys\tPread(fd int, p []byte, offset int64) (n int, err error)\n//sys\tPwrite(fd int, p []byte, offset int64) (n int, err error)\n//sys\tPrctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) = SYS___PRCTL_A\n//sysnb\tPrlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) = SYS_PRLIMIT\n//sys\tRename(from string, to string) (err error) = SYS___RENAME_A\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) = SYS___RENAMEAT_A\n//sys\tRenameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) = SYS___RENAMEAT2_A\n//sys\tRmdir(path string) (err error) = SYS___RMDIR_A\n//sys   Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK\n//sys\tSetegid(egid int) (err error) = SYS_SETEGID\n//sys\tSeteuid(euid int) (err error) = SYS_SETEUID\n//sys\tSethostname(p []byte) (err error) = SYS___SETHOSTNAME_A\n//sys   Setns(fd int, nstype int) (err error) = SYS_SETNS\n//sys\tSetpriority(which int, who int, prio int) (err error)\n//sysnb\tSetpgid(pid int, pgid int) (err error) = SYS_SETPGID\n//sysnb\tSetrlimit(resource int, lim *Rlimit) (err error)\n//sysnb\tSetregid(rgid int, egid int) (err error) = SYS_SETREGID\n//sysnb\tSetreuid(ruid int, euid int) (err error) = SYS_SETREUID\n//sysnb\tSetsid() (pid int, err error) = SYS_SETSID\n//sys\tSetuid(uid int) (err error) = SYS_SETUID\n//sys\tSetgid(uid int) (err error) = SYS_SETGID\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tstat(path string, statLE *Stat_LE_t) (err error) = SYS___STAT_A\n\nfunc Stat(path string, sta *Stat_t) (err error) {\n\tvar statLE Stat_LE_t\n\terr = stat(path, &statLE)\n\tcopyStat(sta, &statLE)\n\treturn\n}\n\n//sys\tSymlink(path string, link string) (err error) = SYS___SYMLINK_A\n//sys\tSymlinkat(oldPath string, dirfd int, newPath string) (err error) = SYS___SYMLINKAT_A\n//sys\tSync() = SYS_SYNC\n//sys\tTruncate(path string, length int64) (err error) = SYS___TRUNCATE_A\n//sys\tTcgetattr(fildes int, termptr *Termios) (err error) = SYS_TCGETATTR\n//sys\tTcsetattr(fildes int, when int, termptr *Termios) (err error) = SYS_TCSETATTR\n//sys\tUmask(mask int) (oldmask int)\n//sys\tUnlink(path string) (err error) = SYS___UNLINK_A\n//sys\tUnlinkat(dirfd int, path string, flags int) (err error) = SYS___UNLINKAT_A\n//sys\tUtime(path string, utim *Utimbuf) (err error) = SYS___UTIME_A\n\n//sys\topen(path string, mode int, perm uint32) (fd int, err error) = SYS___OPEN_A\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tif mode&O_ACCMODE == 0 {\n\t\tmode |= O_RDONLY\n\t}\n\treturn open(path, mode, perm)\n}\n\n//sys\topenat(dirfd int, path string, flags int, mode uint32) (fd int, err error) = SYS___OPENAT_A\n\nfunc Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {\n\tif flags&O_ACCMODE == 0 {\n\t\tflags |= O_RDONLY\n\t}\n\treturn openat(dirfd, path, flags, mode)\n}\n\n//sys\topenat2(dirfd int, path string, open_how *OpenHow, size int) (fd int, err error) = SYS___OPENAT2_A\n\nfunc Openat2(dirfd int, path string, how *OpenHow) (fd int, err error) {\n\tif how.Flags&O_ACCMODE == 0 {\n\t\thow.Flags |= O_RDONLY\n\t}\n\treturn openat2(dirfd, path, how, SizeofOpenHow)\n}\n\nfunc ZosFdToPath(dirfd int) (path string, err error) {\n\tvar buffer [1024]byte\n\truntime.EnterSyscall()\n\tret, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_W_IOCTL<<4, uintptr(dirfd), 17, 1024, uintptr(unsafe.Pointer(&buffer[0])))\n\truntime.ExitSyscall()\n\tif ret == 0 {\n\t\tzb := bytes.IndexByte(buffer[:], 0)\n\t\tif zb == -1 {\n\t\t\tzb = len(buffer)\n\t\t}\n\t\tCallLeFuncWithErr(GetZosLibVec()+SYS___E2A_L<<4, uintptr(unsafe.Pointer(&buffer[0])), uintptr(zb))\n\t\treturn string(buffer[:zb]), nil\n\t}\n\treturn \"\", errnoErr2(e1, e2)\n}\n\n//sys\tremove(path string) (err error)\n\nfunc Remove(path string) error {\n\treturn remove(path)\n}\n\nconst ImplementsGetwd = true\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar p unsafe.Pointer\n\tif len(buf) > 0 {\n\t\tp = unsafe.Pointer(&buf[0])\n\t} else {\n\t\tp = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithPtrReturn(GetZosLibVec()+SYS___GETCWD_A<<4, uintptr(p), uintptr(len(buf)))\n\truntime.ExitSyscall()\n\tn = clen(buf) + 1\n\tif r0 == 0 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\nfunc Getwd() (wd string, err error) {\n\tvar buf [PathMax]byte\n\tn, err := Getcwd(buf[0:])\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\t// Getcwd returns the number of bytes written to buf, including the NUL.\n\tif n < 1 || n > len(buf) || buf[n-1] != 0 {\n\t\treturn \"\", EINVAL\n\t}\n\treturn string(buf[0 : n-1]), nil\n}\n\nfunc Getgroups() (gids []int, err error) {\n\tn, err := getgroups(0, nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif n == 0 {\n\t\treturn nil, nil\n\t}\n\n\t// Sanity check group count.  Max is 1<<16 on Linux.\n\tif n < 0 || n > 1<<20 {\n\t\treturn nil, EINVAL\n\t}\n\n\ta := make([]_Gid_t, n)\n\tn, err = getgroups(n, &a[0])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tgids = make([]int, n)\n\tfor i, v := range a[0:n] {\n\t\tgids[i] = int(v)\n\t}\n\treturn\n}\n\nfunc Setgroups(gids []int) (err error) {\n\tif len(gids) == 0 {\n\t\treturn setgroups(0, nil)\n\t}\n\n\ta := make([]_Gid_t, len(gids))\n\tfor i, v := range gids {\n\t\ta[i] = _Gid_t(v)\n\t}\n\treturn setgroups(len(a), &a[0])\n}\n\nfunc gettid() uint64\n\nfunc Gettid() (tid int) {\n\treturn int(gettid())\n}\n\ntype WaitStatus uint32\n\n// Wait status is 7 bits at bottom, either 0 (exited),\n// 0x7F (stopped), or a signal number that caused an exit.\n// The 0x80 bit is whether there was a core dump.\n// An extra number (exit code, signal causing a stop)\n// is in the high bits.  At least that's the idea.\n// There are various irregularities.  For example, the\n// \"continued\" status is 0xFFFF, distinguishing itself\n// from stopped via the core dump bit.\n\nconst (\n\tmask    = 0x7F\n\tcore    = 0x80\n\texited  = 0x00\n\tstopped = 0x7F\n\tshift   = 8\n)\n\nfunc (w WaitStatus) Exited() bool { return w&mask == exited }\n\nfunc (w WaitStatus) Signaled() bool { return w&mask != stopped && w&mask != exited }\n\nfunc (w WaitStatus) Stopped() bool { return w&0xFF == stopped }\n\nfunc (w WaitStatus) Continued() bool { return w == 0xFFFF }\n\nfunc (w WaitStatus) CoreDump() bool { return w.Signaled() && w&core != 0 }\n\nfunc (w WaitStatus) ExitStatus() int {\n\tif !w.Exited() {\n\t\treturn -1\n\t}\n\treturn int(w>>shift) & 0xFF\n}\n\nfunc (w WaitStatus) Signal() Signal {\n\tif !w.Signaled() {\n\t\treturn -1\n\t}\n\treturn Signal(w & mask)\n}\n\nfunc (w WaitStatus) StopSignal() Signal {\n\tif !w.Stopped() {\n\t\treturn -1\n\t}\n\treturn Signal(w>>shift) & 0xFF\n}\n\nfunc (w WaitStatus) TrapCause() int { return -1 }\n\n//sys\twaitid(idType int, id int, info *Siginfo, options int) (err error)\n\nfunc Waitid(idType int, id int, info *Siginfo, options int, rusage *Rusage) (err error) {\n\treturn waitid(idType, id, info, options)\n}\n\n//sys\twaitpid(pid int, wstatus *_C_int, options int) (wpid int, err error)\n\nfunc impl_Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_WAIT4<<4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)))\n\truntime.ExitSyscall()\n\twpid = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_Wait4Addr() *(func(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error))\n\nvar Wait4 = enter_Wait4\n\nfunc enter_Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) {\n\tfuncref := get_Wait4Addr()\n\tif funcptrtest(GetZosLibVec()+SYS_WAIT4<<4, \"\") == 0 {\n\t\t*funcref = impl_Wait4\n\t} else {\n\t\t*funcref = legacyWait4\n\t}\n\treturn (*funcref)(pid, wstatus, options, rusage)\n}\n\nfunc legacyWait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) {\n\t// TODO(mundaym): z/OS doesn't have wait4. I don't think getrusage does what we want.\n\t// At the moment rusage will not be touched.\n\tvar status _C_int\n\twpid, err = waitpid(pid, &status, options)\n\tif wstatus != nil {\n\t\t*wstatus = WaitStatus(status)\n\t}\n\treturn\n}\n\n//sysnb\tgettimeofday(tv *timeval_zos) (err error)\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\tvar tvz timeval_zos\n\terr = gettimeofday(&tvz)\n\ttv.Sec = tvz.Sec\n\ttv.Usec = int64(tvz.Usec)\n\treturn\n}\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tvar tv Timeval\n\terr = Gettimeofday(&tv)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tif t != nil {\n\t\t*t = Time_t(tv.Sec)\n\t}\n\treturn Time_t(tv.Sec), nil\n}\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval { //fix\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\n//sysnb pipe(p *[2]_C_int) (err error)\n\nfunc Pipe(p []int) (err error) {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\terr = pipe(&pp)\n\tp[0] = int(pp[0])\n\tp[1] = int(pp[1])\n\treturn\n}\n\n//sys\tutimes(path string, timeval *[2]Timeval) (err error) = SYS___UTIMES_A\n\nfunc Utimes(path string, tv []Timeval) (err error) {\n\tif tv == nil {\n\t\treturn utimes(path, nil)\n\t}\n\tif len(tv) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))\n}\n\n//sys\tutimensat(dirfd int, path string, ts *[2]Timespec, flags int) (err error) = SYS___UTIMENSAT_A\n\nfunc validUtimensat() bool {\n\tif funcptrtest(GetZosLibVec()+SYS___UTIMENSAT_A<<4, \"\") == 0 {\n\t\tif name, err := getLeFuncName(GetZosLibVec() + SYS___UTIMENSAT_A<<4); err == nil {\n\t\t\treturn name == \"__utimensat_a\"\n\t\t}\n\t}\n\treturn false\n}\n\n// Begin UtimesNano\n\n//go:nosplit\nfunc get_UtimesNanoAddr() *(func(path string, ts []Timespec) (err error))\n\nvar UtimesNano = enter_UtimesNano\n\nfunc enter_UtimesNano(path string, ts []Timespec) (err error) {\n\tfuncref := get_UtimesNanoAddr()\n\tif validUtimensat() {\n\t\t*funcref = utimesNanoImpl\n\t} else {\n\t\t*funcref = legacyUtimesNano\n\t}\n\treturn (*funcref)(path, ts)\n}\n\nfunc utimesNanoImpl(path string, ts []Timespec) (err error) {\n\tif ts == nil {\n\t\treturn utimensat(AT_FDCWD, path, nil, 0)\n\t}\n\tif len(ts) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)\n}\n\nfunc legacyUtimesNano(path string, ts []Timespec) (err error) {\n\tif len(ts) != 2 {\n\t\treturn EINVAL\n\t}\n\t// Not as efficient as it could be because Timespec and\n\t// Timeval have different types in the different OSes\n\ttv := [2]Timeval{\n\t\tNsecToTimeval(TimespecToNsec(ts[0])),\n\t\tNsecToTimeval(TimespecToNsec(ts[1])),\n\t}\n\treturn utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))\n}\n\n// End UtimesNano\n\n// Begin UtimesNanoAt\n\n//go:nosplit\nfunc get_UtimesNanoAtAddr() *(func(dirfd int, path string, ts []Timespec, flags int) (err error))\n\nvar UtimesNanoAt = enter_UtimesNanoAt\n\nfunc enter_UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) (err error) {\n\tfuncref := get_UtimesNanoAtAddr()\n\tif validUtimensat() {\n\t\t*funcref = utimesNanoAtImpl\n\t} else {\n\t\t*funcref = legacyUtimesNanoAt\n\t}\n\treturn (*funcref)(dirfd, path, ts, flags)\n}\n\nfunc utimesNanoAtImpl(dirfd int, path string, ts []Timespec, flags int) (err error) {\n\tif ts == nil {\n\t\treturn utimensat(dirfd, path, nil, flags)\n\t}\n\tif len(ts) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags)\n}\n\nfunc legacyUtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) (err error) {\n\tif path[0] != '/' {\n\t\tdirPath, err := ZosFdToPath(dirfd)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpath = dirPath + \"/\" + path\n\t}\n\tif flags == AT_SYMLINK_NOFOLLOW {\n\t\tif len(ts) != 2 {\n\t\t\treturn EINVAL\n\t\t}\n\n\t\tif ts[0].Nsec >= 5e8 {\n\t\t\tts[0].Sec++\n\t\t}\n\t\tts[0].Nsec = 0\n\t\tif ts[1].Nsec >= 5e8 {\n\t\t\tts[1].Sec++\n\t\t}\n\t\tts[1].Nsec = 0\n\n\t\t// Not as efficient as it could be because Timespec and\n\t\t// Timeval have different types in the different OSes\n\t\ttv := []Timeval{\n\t\t\tNsecToTimeval(TimespecToNsec(ts[0])),\n\t\t\tNsecToTimeval(TimespecToNsec(ts[1])),\n\t\t}\n\t\treturn Lutimes(path, tv)\n\t}\n\treturn UtimesNano(path, ts)\n}\n\n// End UtimesNanoAt\n\nfunc Getsockname(fd int) (sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tif err = getsockname(fd, &rsa, &len); err != nil {\n\t\treturn\n\t}\n\t// TODO(neeilan) : Remove this 0 ( added to get sys/unix compiling on z/OS )\n\treturn anyToSockaddr(0, &rsa)\n}\n\nconst (\n\t// identifier constants\n\tnwmHeaderIdentifier    = 0xd5e6d4c8\n\tnwmFilterIdentifier    = 0xd5e6d4c6\n\tnwmTCPConnIdentifier   = 0xd5e6d4c3\n\tnwmRecHeaderIdentifier = 0xd5e6d4d9\n\tnwmIPStatsIdentifier   = 0xd5e6d4c9d7e2e340\n\tnwmIPGStatsIdentifier  = 0xd5e6d4c9d7c7e2e3\n\tnwmTCPStatsIdentifier  = 0xd5e6d4e3c3d7e2e3\n\tnwmUDPStatsIdentifier  = 0xd5e6d4e4c4d7e2e3\n\tnwmICMPGStatsEntry     = 0xd5e6d4c9c3d4d7c7\n\tnwmICMPTStatsEntry     = 0xd5e6d4c9c3d4d7e3\n\n\t// nwmHeader constants\n\tnwmVersion1   = 1\n\tnwmVersion2   = 2\n\tnwmCurrentVer = 2\n\n\tnwmTCPConnType     = 1\n\tnwmGlobalStatsType = 14\n\n\t// nwmFilter constants\n\tnwmFilterLclAddrMask = 0x20000000 // Local address\n\tnwmFilterSrcAddrMask = 0x20000000 // Source address\n\tnwmFilterLclPortMask = 0x10000000 // Local port\n\tnwmFilterSrcPortMask = 0x10000000 // Source port\n\n\t// nwmConnEntry constants\n\tnwmTCPStateClosed   = 1\n\tnwmTCPStateListen   = 2\n\tnwmTCPStateSynSent  = 3\n\tnwmTCPStateSynRcvd  = 4\n\tnwmTCPStateEstab    = 5\n\tnwmTCPStateFinWait1 = 6\n\tnwmTCPStateFinWait2 = 7\n\tnwmTCPStateClosWait = 8\n\tnwmTCPStateLastAck  = 9\n\tnwmTCPStateClosing  = 10\n\tnwmTCPStateTimeWait = 11\n\tnwmTCPStateDeletTCB = 12\n\n\t// Existing constants on linux\n\tBPF_TCP_CLOSE        = 1\n\tBPF_TCP_LISTEN       = 2\n\tBPF_TCP_SYN_SENT     = 3\n\tBPF_TCP_SYN_RECV     = 4\n\tBPF_TCP_ESTABLISHED  = 5\n\tBPF_TCP_FIN_WAIT1    = 6\n\tBPF_TCP_FIN_WAIT2    = 7\n\tBPF_TCP_CLOSE_WAIT   = 8\n\tBPF_TCP_LAST_ACK     = 9\n\tBPF_TCP_CLOSING      = 10\n\tBPF_TCP_TIME_WAIT    = 11\n\tBPF_TCP_NEW_SYN_RECV = -1\n\tBPF_TCP_MAX_STATES   = -2\n)\n\ntype nwmTriplet struct {\n\toffset uint32\n\tlength uint32\n\tnumber uint32\n}\n\ntype nwmQuadruplet struct {\n\toffset uint32\n\tlength uint32\n\tnumber uint32\n\tmatch  uint32\n}\n\ntype nwmHeader struct {\n\tident       uint32\n\tlength      uint32\n\tversion     uint16\n\tnwmType     uint16\n\tbytesNeeded uint32\n\toptions     uint32\n\t_           [16]byte\n\tinputDesc   nwmTriplet\n\toutputDesc  nwmQuadruplet\n}\n\ntype nwmFilter struct {\n\tident         uint32\n\tflags         uint32\n\tresourceName  [8]byte\n\tresourceId    uint32\n\tlistenerId    uint32\n\tlocal         [28]byte // union of sockaddr4 and sockaddr6\n\tremote        [28]byte // union of sockaddr4 and sockaddr6\n\t_             uint16\n\t_             uint16\n\tasid          uint16\n\t_             [2]byte\n\ttnLuName      [8]byte\n\ttnMonGrp      uint32\n\ttnAppl        [8]byte\n\tapplData      [40]byte\n\tnInterface    [16]byte\n\tdVipa         [16]byte\n\tdVipaPfx      uint16\n\tdVipaPort     uint16\n\tdVipaFamily   byte\n\t_             [3]byte\n\tdestXCF       [16]byte\n\tdestXCFPfx    uint16\n\tdestXCFFamily byte\n\t_             [1]byte\n\ttargIP        [16]byte\n\ttargIPPfx     uint16\n\ttargIPFamily  byte\n\t_             [1]byte\n\t_             [20]byte\n}\n\ntype nwmRecHeader struct {\n\tident  uint32\n\tlength uint32\n\tnumber byte\n\t_      [3]byte\n}\n\ntype nwmTCPStatsEntry struct {\n\tident             uint64\n\tcurrEstab         uint32\n\tactiveOpened      uint32\n\tpassiveOpened     uint32\n\tconnClosed        uint32\n\testabResets       uint32\n\tattemptFails      uint32\n\tpassiveDrops      uint32\n\ttimeWaitReused    uint32\n\tinSegs            uint64\n\tpredictAck        uint32\n\tpredictData       uint32\n\tinDupAck          uint32\n\tinBadSum          uint32\n\tinBadLen          uint32\n\tinShort           uint32\n\tinDiscOldTime     uint32\n\tinAllBeforeWin    uint32\n\tinSomeBeforeWin   uint32\n\tinAllAfterWin     uint32\n\tinSomeAfterWin    uint32\n\tinOutOfOrder      uint32\n\tinAfterClose      uint32\n\tinWinProbes       uint32\n\tinWinUpdates      uint32\n\toutWinUpdates     uint32\n\toutSegs           uint64\n\toutDelayAcks      uint32\n\toutRsts           uint32\n\tretransSegs       uint32\n\tretransTimeouts   uint32\n\tretransDrops      uint32\n\tpmtuRetrans       uint32\n\tpmtuErrors        uint32\n\toutWinProbes      uint32\n\tprobeDrops        uint32\n\tkeepAliveProbes   uint32\n\tkeepAliveDrops    uint32\n\tfinwait2Drops     uint32\n\tacceptCount       uint64\n\tinBulkQSegs       uint64\n\tinDiscards        uint64\n\tconnFloods        uint32\n\tconnStalls        uint32\n\tcfgEphemDef       uint16\n\tephemInUse        uint16\n\tephemHiWater      uint16\n\tflags             byte\n\t_                 [1]byte\n\tephemExhaust      uint32\n\tsmcRCurrEstabLnks uint32\n\tsmcRLnkActTimeOut uint32\n\tsmcRActLnkOpened  uint32\n\tsmcRPasLnkOpened  uint32\n\tsmcRLnksClosed    uint32\n\tsmcRCurrEstab     uint32\n\tsmcRActiveOpened  uint32\n\tsmcRPassiveOpened uint32\n\tsmcRConnClosed    uint32\n\tsmcRInSegs        uint64\n\tsmcROutSegs       uint64\n\tsmcRInRsts        uint32\n\tsmcROutRsts       uint32\n\tsmcDCurrEstabLnks uint32\n\tsmcDActLnkOpened  uint32\n\tsmcDPasLnkOpened  uint32\n\tsmcDLnksClosed    uint32\n\tsmcDCurrEstab     uint32\n\tsmcDActiveOpened  uint32\n\tsmcDPassiveOpened uint32\n\tsmcDConnClosed    uint32\n\tsmcDInSegs        uint64\n\tsmcDOutSegs       uint64\n\tsmcDInRsts        uint32\n\tsmcDOutRsts       uint32\n}\n\ntype nwmConnEntry struct {\n\tident             uint32\n\tlocal             [28]byte // union of sockaddr4 and sockaddr6\n\tremote            [28]byte // union of sockaddr4 and sockaddr6\n\tstartTime         [8]byte  // uint64, changed to prevent padding from being inserted\n\tlastActivity      [8]byte  // uint64\n\tbytesIn           [8]byte  // uint64\n\tbytesOut          [8]byte  // uint64\n\tinSegs            [8]byte  // uint64\n\toutSegs           [8]byte  // uint64\n\tstate             uint16\n\tactiveOpen        byte\n\tflag01            byte\n\toutBuffered       uint32\n\tinBuffered        uint32\n\tmaxSndWnd         uint32\n\treXmtCount        uint32\n\tcongestionWnd     uint32\n\tssThresh          uint32\n\troundTripTime     uint32\n\troundTripVar      uint32\n\tsendMSS           uint32\n\tsndWnd            uint32\n\trcvBufSize        uint32\n\tsndBufSize        uint32\n\toutOfOrderCount   uint32\n\tlcl0WindowCount   uint32\n\trmt0WindowCount   uint32\n\tdupacks           uint32\n\tflag02            byte\n\tsockOpt6Cont      byte\n\tasid              uint16\n\tresourceName      [8]byte\n\tresourceId        uint32\n\tsubtask           uint32\n\tsockOpt           byte\n\tsockOpt6          byte\n\tclusterConnFlag   byte\n\tproto             byte\n\ttargetAppl        [8]byte\n\tluName            [8]byte\n\tclientUserId      [8]byte\n\tlogMode           [8]byte\n\ttimeStamp         uint32\n\ttimeStampAge      uint32\n\tserverResourceId  uint32\n\tintfName          [16]byte\n\tttlsStatPol       byte\n\tttlsStatConn      byte\n\tttlsSSLProt       uint16\n\tttlsNegCiph       [2]byte\n\tttlsSecType       byte\n\tttlsFIPS140Mode   byte\n\tttlsUserID        [8]byte\n\tapplData          [40]byte\n\tinOldestTime      [8]byte // uint64\n\toutOldestTime     [8]byte // uint64\n\ttcpTrustedPartner byte\n\t_                 [3]byte\n\tbulkDataIntfName  [16]byte\n\tttlsNegCiph4      [4]byte\n\tsmcReason         uint32\n\tlclSMCLinkId      uint32\n\trmtSMCLinkId      uint32\n\tsmcStatus         byte\n\tsmcFlags          byte\n\t_                 [2]byte\n\trcvWnd            uint32\n\tlclSMCBufSz       uint32\n\trmtSMCBufSz       uint32\n\tttlsSessID        [32]byte\n\tttlsSessIDLen     int16\n\t_                 [1]byte\n\tsmcDStatus        byte\n\tsmcDReason        uint32\n}\n\nvar svcNameTable [][]byte = [][]byte{\n\t[]byte(\"\\xc5\\xe9\\xc2\\xd5\\xd4\\xc9\\xc6\\xf4\"), // svc_EZBNMIF4\n}\n\nconst (\n\tsvc_EZBNMIF4 = 0\n)\n\nfunc GetsockoptTCPInfo(fd, level, opt int) (*TCPInfo, error) {\n\tjobname := []byte(\"\\x5c\\x40\\x40\\x40\\x40\\x40\\x40\\x40\") // \"*\"\n\tresponseBuffer := [4096]byte{0}\n\tvar bufferAlet, reasonCode uint32 = 0, 0\n\tvar bufferLen, returnValue, returnCode int32 = 4096, 0, 0\n\n\tdsa := [18]uint64{0}\n\tvar argv [7]unsafe.Pointer\n\targv[0] = unsafe.Pointer(&jobname[0])\n\targv[1] = unsafe.Pointer(&responseBuffer[0])\n\targv[2] = unsafe.Pointer(&bufferAlet)\n\targv[3] = unsafe.Pointer(&bufferLen)\n\targv[4] = unsafe.Pointer(&returnValue)\n\targv[5] = unsafe.Pointer(&returnCode)\n\targv[6] = unsafe.Pointer(&reasonCode)\n\n\trequest := (*struct {\n\t\theader nwmHeader\n\t\tfilter nwmFilter\n\t})(unsafe.Pointer(&responseBuffer[0]))\n\n\tEZBNMIF4 := svcLoad(&svcNameTable[svc_EZBNMIF4][0])\n\tif EZBNMIF4 == nil {\n\t\treturn nil, errnoErr(EINVAL)\n\t}\n\n\t// GetGlobalStats EZBNMIF4 call\n\trequest.header.ident = nwmHeaderIdentifier\n\trequest.header.length = uint32(unsafe.Sizeof(request.header))\n\trequest.header.version = nwmCurrentVer\n\trequest.header.nwmType = nwmGlobalStatsType\n\trequest.header.options = 0x80000000\n\n\tsvcCall(EZBNMIF4, &argv[0], &dsa[0])\n\n\t// outputDesc field is filled by EZBNMIF4 on success\n\tif returnCode != 0 || request.header.outputDesc.offset == 0 {\n\t\treturn nil, errnoErr(EINVAL)\n\t}\n\n\t// Check that EZBNMIF4 returned a nwmRecHeader\n\trecHeader := (*nwmRecHeader)(unsafe.Pointer(&responseBuffer[request.header.outputDesc.offset]))\n\tif recHeader.ident != nwmRecHeaderIdentifier {\n\t\treturn nil, errnoErr(EINVAL)\n\t}\n\n\t// Parse nwmTriplets to get offsets of returned entries\n\tvar sections []*uint64\n\tvar sectionDesc *nwmTriplet = (*nwmTriplet)(unsafe.Pointer(&responseBuffer[0]))\n\tfor i := uint32(0); i < uint32(recHeader.number); i++ {\n\t\toffset := request.header.outputDesc.offset + uint32(unsafe.Sizeof(*recHeader)) + i*uint32(unsafe.Sizeof(*sectionDesc))\n\t\tsectionDesc = (*nwmTriplet)(unsafe.Pointer(&responseBuffer[offset]))\n\t\tfor j := uint32(0); j < sectionDesc.number; j++ {\n\t\t\toffset = request.header.outputDesc.offset + sectionDesc.offset + j*sectionDesc.length\n\t\t\tsections = append(sections, (*uint64)(unsafe.Pointer(&responseBuffer[offset])))\n\t\t}\n\t}\n\n\t// Find nwmTCPStatsEntry in returned entries\n\tvar tcpStats *nwmTCPStatsEntry = nil\n\tfor _, ptr := range sections {\n\t\tswitch *ptr {\n\t\tcase nwmTCPStatsIdentifier:\n\t\t\tif tcpStats != nil {\n\t\t\t\treturn nil, errnoErr(EINVAL)\n\t\t\t}\n\t\t\ttcpStats = (*nwmTCPStatsEntry)(unsafe.Pointer(ptr))\n\t\tcase nwmIPStatsIdentifier:\n\t\tcase nwmIPGStatsIdentifier:\n\t\tcase nwmUDPStatsIdentifier:\n\t\tcase nwmICMPGStatsEntry:\n\t\tcase nwmICMPTStatsEntry:\n\t\tdefault:\n\t\t\treturn nil, errnoErr(EINVAL)\n\t\t}\n\t}\n\tif tcpStats == nil {\n\t\treturn nil, errnoErr(EINVAL)\n\t}\n\n\t// GetConnectionDetail EZBNMIF4 call\n\tresponseBuffer = [4096]byte{0}\n\tdsa = [18]uint64{0}\n\tbufferAlet, reasonCode = 0, 0\n\tbufferLen, returnValue, returnCode = 4096, 0, 0\n\tnameptr := (*uint32)(unsafe.Pointer(uintptr(0x21c))) // Get jobname of current process\n\tnameptr = (*uint32)(unsafe.Pointer(uintptr(*nameptr + 12)))\n\targv[0] = unsafe.Pointer(uintptr(*nameptr))\n\n\trequest.header.ident = nwmHeaderIdentifier\n\trequest.header.length = uint32(unsafe.Sizeof(request.header))\n\trequest.header.version = nwmCurrentVer\n\trequest.header.nwmType = nwmTCPConnType\n\trequest.header.options = 0x80000000\n\n\trequest.filter.ident = nwmFilterIdentifier\n\n\tvar localSockaddr RawSockaddrAny\n\tsocklen := _Socklen(SizeofSockaddrAny)\n\terr := getsockname(fd, &localSockaddr, &socklen)\n\tif err != nil {\n\t\treturn nil, errnoErr(EINVAL)\n\t}\n\tif localSockaddr.Addr.Family == AF_INET {\n\t\tlocalSockaddr := (*RawSockaddrInet4)(unsafe.Pointer(&localSockaddr.Addr))\n\t\tlocalSockFilter := (*RawSockaddrInet4)(unsafe.Pointer(&request.filter.local[0]))\n\t\tlocalSockFilter.Family = AF_INET\n\t\tvar i int\n\t\tfor i = 0; i < 4; i++ {\n\t\t\tif localSockaddr.Addr[i] != 0 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif i != 4 {\n\t\t\trequest.filter.flags |= nwmFilterLclAddrMask\n\t\t\tfor i = 0; i < 4; i++ {\n\t\t\t\tlocalSockFilter.Addr[i] = localSockaddr.Addr[i]\n\t\t\t}\n\t\t}\n\t\tif localSockaddr.Port != 0 {\n\t\t\trequest.filter.flags |= nwmFilterLclPortMask\n\t\t\tlocalSockFilter.Port = localSockaddr.Port\n\t\t}\n\t} else if localSockaddr.Addr.Family == AF_INET6 {\n\t\tlocalSockaddr := (*RawSockaddrInet6)(unsafe.Pointer(&localSockaddr.Addr))\n\t\tlocalSockFilter := (*RawSockaddrInet6)(unsafe.Pointer(&request.filter.local[0]))\n\t\tlocalSockFilter.Family = AF_INET6\n\t\tvar i int\n\t\tfor i = 0; i < 16; i++ {\n\t\t\tif localSockaddr.Addr[i] != 0 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif i != 16 {\n\t\t\trequest.filter.flags |= nwmFilterLclAddrMask\n\t\t\tfor i = 0; i < 16; i++ {\n\t\t\t\tlocalSockFilter.Addr[i] = localSockaddr.Addr[i]\n\t\t\t}\n\t\t}\n\t\tif localSockaddr.Port != 0 {\n\t\t\trequest.filter.flags |= nwmFilterLclPortMask\n\t\t\tlocalSockFilter.Port = localSockaddr.Port\n\t\t}\n\t}\n\n\tsvcCall(EZBNMIF4, &argv[0], &dsa[0])\n\n\t// outputDesc field is filled by EZBNMIF4 on success\n\tif returnCode != 0 || request.header.outputDesc.offset == 0 {\n\t\treturn nil, errnoErr(EINVAL)\n\t}\n\n\t// Check that EZBNMIF4 returned a nwmConnEntry\n\tconn := (*nwmConnEntry)(unsafe.Pointer(&responseBuffer[request.header.outputDesc.offset]))\n\tif conn.ident != nwmTCPConnIdentifier {\n\t\treturn nil, errnoErr(EINVAL)\n\t}\n\n\t// Copy data from the returned data structures into tcpInfo\n\t// Stats from nwmConnEntry are specific to that connection.\n\t// Stats from nwmTCPStatsEntry are global (to the interface?)\n\t// Fields may not be an exact match. Some fields have no equivalent.\n\tvar tcpinfo TCPInfo\n\ttcpinfo.State = uint8(conn.state)\n\ttcpinfo.Ca_state = 0 // dummy\n\ttcpinfo.Retransmits = uint8(tcpStats.retransSegs)\n\ttcpinfo.Probes = uint8(tcpStats.outWinProbes)\n\ttcpinfo.Backoff = 0 // dummy\n\ttcpinfo.Options = 0 // dummy\n\ttcpinfo.Rto = tcpStats.retransTimeouts\n\ttcpinfo.Ato = tcpStats.outDelayAcks\n\ttcpinfo.Snd_mss = conn.sendMSS\n\ttcpinfo.Rcv_mss = conn.sendMSS // dummy\n\ttcpinfo.Unacked = 0            // dummy\n\ttcpinfo.Sacked = 0             // dummy\n\ttcpinfo.Lost = 0               // dummy\n\ttcpinfo.Retrans = conn.reXmtCount\n\ttcpinfo.Fackets = 0 // dummy\n\ttcpinfo.Last_data_sent = uint32(*(*uint64)(unsafe.Pointer(&conn.lastActivity[0])))\n\ttcpinfo.Last_ack_sent = uint32(*(*uint64)(unsafe.Pointer(&conn.outOldestTime[0])))\n\ttcpinfo.Last_data_recv = uint32(*(*uint64)(unsafe.Pointer(&conn.inOldestTime[0])))\n\ttcpinfo.Last_ack_recv = uint32(*(*uint64)(unsafe.Pointer(&conn.inOldestTime[0])))\n\ttcpinfo.Pmtu = conn.sendMSS // dummy, NWMIfRouteMtu is a candidate\n\ttcpinfo.Rcv_ssthresh = conn.ssThresh\n\ttcpinfo.Rtt = conn.roundTripTime\n\ttcpinfo.Rttvar = conn.roundTripVar\n\ttcpinfo.Snd_ssthresh = conn.ssThresh // dummy\n\ttcpinfo.Snd_cwnd = conn.congestionWnd\n\ttcpinfo.Advmss = conn.sendMSS        // dummy\n\ttcpinfo.Reordering = 0               // dummy\n\ttcpinfo.Rcv_rtt = conn.roundTripTime // dummy\n\ttcpinfo.Rcv_space = conn.sendMSS     // dummy\n\ttcpinfo.Total_retrans = conn.reXmtCount\n\n\tsvcUnload(&svcNameTable[svc_EZBNMIF4][0], EZBNMIF4)\n\n\treturn &tcpinfo, nil\n}\n\n// GetsockoptString returns the string value of the socket option opt for the\n// socket associated with fd at the given socket level.\nfunc GetsockoptString(fd, level, opt int) (string, error) {\n\tbuf := make([]byte, 256)\n\tvallen := _Socklen(len(buf))\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\treturn ByteSliceToString(buf[:vallen]), nil\n}\n\nfunc Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) {\n\tvar msg Msghdr\n\tvar rsa RawSockaddrAny\n\tmsg.Name = (*byte)(unsafe.Pointer(&rsa))\n\tmsg.Namelen = SizeofSockaddrAny\n\tvar iov Iovec\n\tif len(p) > 0 {\n\t\tiov.Base = (*byte)(unsafe.Pointer(&p[0]))\n\t\tiov.SetLen(len(p))\n\t}\n\tvar dummy byte\n\tif len(oob) > 0 {\n\t\t// receive at least one normal byte\n\t\tif len(p) == 0 {\n\t\t\tiov.Base = &dummy\n\t\t\tiov.SetLen(1)\n\t\t}\n\t\tmsg.Control = (*byte)(unsafe.Pointer(&oob[0]))\n\t\tmsg.SetControllen(len(oob))\n\t}\n\tmsg.Iov = &iov\n\tmsg.Iovlen = 1\n\tif n, err = recvmsg(fd, &msg, flags); err != nil {\n\t\treturn\n\t}\n\toobn = int(msg.Controllen)\n\trecvflags = int(msg.Flags)\n\t// source address is only specified if the socket is unconnected\n\tif rsa.Addr.Family != AF_UNSPEC {\n\t\t// TODO(neeilan): Remove 0 arg added to get this compiling on z/OS\n\t\tfrom, err = anyToSockaddr(0, &rsa)\n\t}\n\treturn\n}\n\nfunc Sendmsg(fd int, p, oob []byte, to Sockaddr, flags int) (err error) {\n\t_, err = SendmsgN(fd, p, oob, to, flags)\n\treturn\n}\n\nfunc SendmsgN(fd int, p, oob []byte, to Sockaddr, flags int) (n int, err error) {\n\tvar ptr unsafe.Pointer\n\tvar salen _Socklen\n\tif to != nil {\n\t\tvar err error\n\t\tptr, salen, err = to.sockaddr()\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t}\n\tvar msg Msghdr\n\tmsg.Name = (*byte)(unsafe.Pointer(ptr))\n\tmsg.Namelen = int32(salen)\n\tvar iov Iovec\n\tif len(p) > 0 {\n\t\tiov.Base = (*byte)(unsafe.Pointer(&p[0]))\n\t\tiov.SetLen(len(p))\n\t}\n\tvar dummy byte\n\tif len(oob) > 0 {\n\t\t// send at least one normal byte\n\t\tif len(p) == 0 {\n\t\t\tiov.Base = &dummy\n\t\t\tiov.SetLen(1)\n\t\t}\n\t\tmsg.Control = (*byte)(unsafe.Pointer(&oob[0]))\n\t\tmsg.SetControllen(len(oob))\n\t}\n\tmsg.Iov = &iov\n\tmsg.Iovlen = 1\n\tif n, err = sendmsg(fd, &msg, flags); err != nil {\n\t\treturn 0, err\n\t}\n\tif len(oob) > 0 && len(p) == 0 {\n\t\tn = 0\n\t}\n\treturn n, nil\n}\n\nfunc Opendir(name string) (uintptr, error) {\n\tp, err := BytePtrFromString(name)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\terr = nil\n\truntime.EnterSyscall()\n\tdir, e2, e1 := CallLeFuncWithPtrReturn(GetZosLibVec()+SYS___OPENDIR_A<<4, uintptr(unsafe.Pointer(p)))\n\truntime.ExitSyscall()\n\truntime.KeepAlive(unsafe.Pointer(p))\n\tif dir == 0 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn dir, err\n}\n\n// clearsyscall.Errno resets the errno value to 0.\nfunc clearErrno()\n\nfunc Closedir(dir uintptr) error {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_CLOSEDIR<<4, dir)\n\truntime.ExitSyscall()\n\tif r0 != 0 {\n\t\treturn errnoErr2(e1, e2)\n\t}\n\treturn nil\n}\n\nfunc Seekdir(dir uintptr, pos int) {\n\truntime.EnterSyscall()\n\tCallLeFuncWithErr(GetZosLibVec()+SYS_SEEKDIR<<4, dir, uintptr(pos))\n\truntime.ExitSyscall()\n}\n\nfunc Telldir(dir uintptr) (int, error) {\n\tp, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_TELLDIR<<4, dir)\n\tpos := int(p)\n\tif int64(p) == -1 {\n\t\treturn pos, errnoErr2(e1, e2)\n\t}\n\treturn pos, nil\n}\n\n// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command.\nfunc FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error {\n\t// struct flock is packed on z/OS. We can't emulate that in Go so\n\t// instead we pack it here.\n\tvar flock [24]byte\n\t*(*int16)(unsafe.Pointer(&flock[0])) = lk.Type\n\t*(*int16)(unsafe.Pointer(&flock[2])) = lk.Whence\n\t*(*int64)(unsafe.Pointer(&flock[4])) = lk.Start\n\t*(*int64)(unsafe.Pointer(&flock[12])) = lk.Len\n\t*(*int32)(unsafe.Pointer(&flock[20])) = lk.Pid\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FCNTL<<4, fd, uintptr(cmd), uintptr(unsafe.Pointer(&flock)))\n\truntime.ExitSyscall()\n\tlk.Type = *(*int16)(unsafe.Pointer(&flock[0]))\n\tlk.Whence = *(*int16)(unsafe.Pointer(&flock[2]))\n\tlk.Start = *(*int64)(unsafe.Pointer(&flock[4]))\n\tlk.Len = *(*int64)(unsafe.Pointer(&flock[12]))\n\tlk.Pid = *(*int32)(unsafe.Pointer(&flock[20]))\n\tif r0 == 0 {\n\t\treturn nil\n\t}\n\treturn errnoErr2(e1, e2)\n}\n\nfunc impl_Flock(fd int, how int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FLOCK<<4, uintptr(fd), uintptr(how))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_FlockAddr() *(func(fd int, how int) (err error))\n\nvar Flock = enter_Flock\n\nfunc validFlock(fp uintptr) bool {\n\tif funcptrtest(GetZosLibVec()+SYS_FLOCK<<4, \"\") == 0 {\n\t\tif name, err := getLeFuncName(GetZosLibVec() + SYS_FLOCK<<4); err == nil {\n\t\t\treturn name == \"flock\"\n\t\t}\n\t}\n\treturn false\n}\n\nfunc enter_Flock(fd int, how int) (err error) {\n\tfuncref := get_FlockAddr()\n\tif validFlock(GetZosLibVec() + SYS_FLOCK<<4) {\n\t\t*funcref = impl_Flock\n\t} else {\n\t\t*funcref = legacyFlock\n\t}\n\treturn (*funcref)(fd, how)\n}\n\nfunc legacyFlock(fd int, how int) error {\n\n\tvar flock_type int16\n\tvar fcntl_cmd int\n\n\tswitch how {\n\tcase LOCK_SH | LOCK_NB:\n\t\tflock_type = F_RDLCK\n\t\tfcntl_cmd = F_SETLK\n\tcase LOCK_EX | LOCK_NB:\n\t\tflock_type = F_WRLCK\n\t\tfcntl_cmd = F_SETLK\n\tcase LOCK_EX:\n\t\tflock_type = F_WRLCK\n\t\tfcntl_cmd = F_SETLKW\n\tcase LOCK_UN:\n\t\tflock_type = F_UNLCK\n\t\tfcntl_cmd = F_SETLKW\n\tdefault:\n\t}\n\n\tflock := Flock_t{\n\t\tType:   int16(flock_type),\n\t\tWhence: int16(0),\n\t\tStart:  int64(0),\n\t\tLen:    int64(0),\n\t\tPid:    int32(Getppid()),\n\t}\n\n\terr := FcntlFlock(uintptr(fd), fcntl_cmd, &flock)\n\treturn err\n}\n\nfunc Mlock(b []byte) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MLOCKALL<<4, _BPX_NONSWAP)\n\truntime.ExitSyscall()\n\tif r0 != 0 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\nfunc Mlock2(b []byte, flags int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MLOCKALL<<4, _BPX_NONSWAP)\n\truntime.ExitSyscall()\n\tif r0 != 0 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\nfunc Mlockall(flags int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MLOCKALL<<4, _BPX_NONSWAP)\n\truntime.ExitSyscall()\n\tif r0 != 0 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\nfunc Munlock(b []byte) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MLOCKALL<<4, _BPX_SWAP)\n\truntime.ExitSyscall()\n\tif r0 != 0 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\nfunc Munlockall() (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MLOCKALL<<4, _BPX_SWAP)\n\truntime.ExitSyscall()\n\tif r0 != 0 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\nfunc ClockGettime(clockid int32, ts *Timespec) error {\n\n\tvar ticks_per_sec uint32 = 100 //TODO(kenan): value is currently hardcoded; need sysconf() call otherwise\n\tvar nsec_per_sec int64 = 1000000000\n\n\tif ts == nil {\n\t\treturn EFAULT\n\t}\n\tif clockid == CLOCK_REALTIME || clockid == CLOCK_MONOTONIC {\n\t\tvar nanotime int64 = runtime.Nanotime1()\n\t\tts.Sec = nanotime / nsec_per_sec\n\t\tts.Nsec = nanotime % nsec_per_sec\n\t} else if clockid == CLOCK_PROCESS_CPUTIME_ID || clockid == CLOCK_THREAD_CPUTIME_ID {\n\t\tvar tm Tms\n\t\t_, err := Times(&tm)\n\t\tif err != nil {\n\t\t\treturn EFAULT\n\t\t}\n\t\tts.Sec = int64(tm.Utime / ticks_per_sec)\n\t\tts.Nsec = int64(tm.Utime) * nsec_per_sec / int64(ticks_per_sec)\n\t} else {\n\t\treturn EINVAL\n\t}\n\treturn nil\n}\n\n// Chtag\n\n//go:nosplit\nfunc get_ChtagAddr() *(func(path string, ccsid uint64, textbit uint64) error)\n\nvar Chtag = enter_Chtag\n\nfunc enter_Chtag(path string, ccsid uint64, textbit uint64) error {\n\tfuncref := get_ChtagAddr()\n\tif validSetxattr() {\n\t\t*funcref = impl_Chtag\n\t} else {\n\t\t*funcref = legacy_Chtag\n\t}\n\treturn (*funcref)(path, ccsid, textbit)\n}\n\nfunc legacy_Chtag(path string, ccsid uint64, textbit uint64) error {\n\ttag := ccsid<<16 | textbit<<15\n\tvar tag_buff [8]byte\n\tDecodeData(tag_buff[:], 8, tag)\n\treturn Setxattr(path, \"filetag\", tag_buff[:], XATTR_REPLACE)\n}\n\nfunc impl_Chtag(path string, ccsid uint64, textbit uint64) error {\n\ttag := ccsid<<16 | textbit<<15\n\tvar tag_buff [4]byte\n\tDecodeData(tag_buff[:], 4, tag)\n\treturn Setxattr(path, \"system.filetag\", tag_buff[:], XATTR_REPLACE)\n}\n\n// End of Chtag\n\n// Nanosleep\n\n//go:nosplit\nfunc get_NanosleepAddr() *(func(time *Timespec, leftover *Timespec) error)\n\nvar Nanosleep = enter_Nanosleep\n\nfunc enter_Nanosleep(time *Timespec, leftover *Timespec) error {\n\tfuncref := get_NanosleepAddr()\n\tif funcptrtest(GetZosLibVec()+SYS_NANOSLEEP<<4, \"\") == 0 {\n\t\t*funcref = impl_Nanosleep\n\t} else {\n\t\t*funcref = legacyNanosleep\n\t}\n\treturn (*funcref)(time, leftover)\n}\n\nfunc impl_Nanosleep(time *Timespec, leftover *Timespec) error {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_NANOSLEEP<<4, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\treturn errnoErr2(e1, e2)\n\t}\n\treturn nil\n}\n\nfunc legacyNanosleep(time *Timespec, leftover *Timespec) error {\n\tt0 := runtime.Nanotime1()\n\tvar secrem uint32\n\tvar nsecrem uint32\n\ttotal := time.Sec*1000000000 + time.Nsec\n\telapsed := runtime.Nanotime1() - t0\n\tvar rv int32\n\tvar rc int32\n\tvar err error\n\t// repeatedly sleep for 1 second until less than 1 second left\n\tfor total-elapsed > 1000000000 {\n\t\trv, rc, _ = BpxCondTimedWait(uint32(1), uint32(0), uint32(CW_CONDVAR), &secrem, &nsecrem)\n\t\tif rv != 0 && rc != 112 { // 112 is EAGAIN\n\t\t\tif leftover != nil && rc == 120 { // 120 is EINTR\n\t\t\t\tleftover.Sec = int64(secrem)\n\t\t\t\tleftover.Nsec = int64(nsecrem)\n\t\t\t}\n\t\t\terr = Errno(rc)\n\t\t\treturn err\n\t\t}\n\t\telapsed = runtime.Nanotime1() - t0\n\t}\n\t// sleep the remainder\n\tif total > elapsed {\n\t\trv, rc, _ = BpxCondTimedWait(uint32(0), uint32(total-elapsed), uint32(CW_CONDVAR), &secrem, &nsecrem)\n\t}\n\tif leftover != nil && rc == 120 {\n\t\tleftover.Sec = int64(secrem)\n\t\tleftover.Nsec = int64(nsecrem)\n\t}\n\tif rv != 0 && rc != 112 {\n\t\terr = Errno(rc)\n\t}\n\treturn err\n}\n\n// End of Nanosleep\n\nvar (\n\tStdin  = 0\n\tStdout = 1\n\tStderr = 2\n)\n\n// Do the interface allocations only once for common\n// Errno values.\nvar (\n\terrEAGAIN error = syscall.EAGAIN\n\terrEINVAL error = syscall.EINVAL\n\terrENOENT error = syscall.ENOENT\n)\n\nvar ZosTraceLevel int\nvar ZosTracefile *os.File\n\nvar (\n\tsignalNameMapOnce sync.Once\n\tsignalNameMap     map[string]syscall.Signal\n)\n\n// errnoErr returns common boxed Errno values, to prevent\n// allocations at runtime.\nfunc errnoErr(e Errno) error {\n\tswitch e {\n\tcase 0:\n\t\treturn nil\n\tcase EAGAIN:\n\t\treturn errEAGAIN\n\tcase EINVAL:\n\t\treturn errEINVAL\n\tcase ENOENT:\n\t\treturn errENOENT\n\t}\n\treturn e\n}\n\nvar reg *regexp.Regexp\n\n// enhanced with zos specific errno2\nfunc errnoErr2(e Errno, e2 uintptr) error {\n\tswitch e {\n\tcase 0:\n\t\treturn nil\n\tcase EAGAIN:\n\t\treturn errEAGAIN\n\t\t/*\n\t\t\tAllow the retrieval of errno2 for EINVAL and ENOENT on zos\n\t\t\t\tcase EINVAL:\n\t\t\t\t\treturn errEINVAL\n\t\t\t\tcase ENOENT:\n\t\t\t\t\treturn errENOENT\n\t\t*/\n\t}\n\tif ZosTraceLevel > 0 {\n\t\tvar name string\n\t\tif reg == nil {\n\t\t\treg = regexp.MustCompile(\"(^unix\\\\.[^/]+$|.*\\\\/unix\\\\.[^/]+$)\")\n\t\t}\n\t\ti := 1\n\t\tpc, file, line, ok := runtime.Caller(i)\n\t\tif ok {\n\t\t\tname = runtime.FuncForPC(pc).Name()\n\t\t}\n\t\tfor ok && reg.MatchString(runtime.FuncForPC(pc).Name()) {\n\t\t\ti += 1\n\t\t\tpc, file, line, ok = runtime.Caller(i)\n\t\t}\n\t\tif ok {\n\t\t\tif ZosTracefile == nil {\n\t\t\t\tZosConsolePrintf(\"From %s:%d\\n\", file, line)\n\t\t\t\tZosConsolePrintf(\"%s: %s (errno2=0x%x)\\n\", name, e.Error(), e2)\n\t\t\t} else {\n\t\t\t\tfmt.Fprintf(ZosTracefile, \"From %s:%d\\n\", file, line)\n\t\t\t\tfmt.Fprintf(ZosTracefile, \"%s: %s (errno2=0x%x)\\n\", name, e.Error(), e2)\n\t\t\t}\n\t\t} else {\n\t\t\tif ZosTracefile == nil {\n\t\t\t\tZosConsolePrintf(\"%s (errno2=0x%x)\\n\", e.Error(), e2)\n\t\t\t} else {\n\t\t\t\tfmt.Fprintf(ZosTracefile, \"%s (errno2=0x%x)\\n\", e.Error(), e2)\n\t\t\t}\n\t\t}\n\t}\n\treturn e\n}\n\n// ErrnoName returns the error name for error number e.\nfunc ErrnoName(e Errno) string {\n\ti := sort.Search(len(errorList), func(i int) bool {\n\t\treturn errorList[i].num >= e\n\t})\n\tif i < len(errorList) && errorList[i].num == e {\n\t\treturn errorList[i].name\n\t}\n\treturn \"\"\n}\n\n// SignalName returns the signal name for signal number s.\nfunc SignalName(s syscall.Signal) string {\n\ti := sort.Search(len(signalList), func(i int) bool {\n\t\treturn signalList[i].num >= s\n\t})\n\tif i < len(signalList) && signalList[i].num == s {\n\t\treturn signalList[i].name\n\t}\n\treturn \"\"\n}\n\n// SignalNum returns the syscall.Signal for signal named s,\n// or 0 if a signal with such name is not found.\n// The signal name should start with \"SIG\".\nfunc SignalNum(s string) syscall.Signal {\n\tsignalNameMapOnce.Do(func() {\n\t\tsignalNameMap = make(map[string]syscall.Signal, len(signalList))\n\t\tfor _, signal := range signalList {\n\t\t\tsignalNameMap[signal.name] = signal.num\n\t\t}\n\t})\n\treturn signalNameMap[s]\n}\n\n// clen returns the index of the first NULL byte in n or len(n) if n contains no NULL byte.\nfunc clen(n []byte) int {\n\ti := bytes.IndexByte(n, 0)\n\tif i == -1 {\n\t\ti = len(n)\n\t}\n\treturn i\n}\n\n// Mmap manager, for use by operating system-specific implementations.\n\ntype mmapper struct {\n\tsync.Mutex\n\tactive map[*byte][]byte // active mappings; key is last byte in mapping\n\tmmap   func(addr, length uintptr, prot, flags, fd int, offset int64) (uintptr, error)\n\tmunmap func(addr uintptr, length uintptr) error\n}\n\nfunc (m *mmapper) Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) {\n\tif length <= 0 {\n\t\treturn nil, EINVAL\n\t}\n\n\t// Set __MAP_64 by default\n\tflags |= __MAP_64\n\n\t// Map the requested memory.\n\taddr, errno := m.mmap(0, uintptr(length), prot, flags, fd, offset)\n\tif errno != nil {\n\t\treturn nil, errno\n\t}\n\n\t// Slice memory layout\n\tvar sl = struct {\n\t\taddr uintptr\n\t\tlen  int\n\t\tcap  int\n\t}{addr, length, length}\n\n\t// Use unsafe to turn sl into a []byte.\n\tb := *(*[]byte)(unsafe.Pointer(&sl))\n\n\t// Register mapping in m and return it.\n\tp := &b[cap(b)-1]\n\tm.Lock()\n\tdefer m.Unlock()\n\tm.active[p] = b\n\treturn b, nil\n}\n\nfunc (m *mmapper) Munmap(data []byte) (err error) {\n\tif len(data) == 0 || len(data) != cap(data) {\n\t\treturn EINVAL\n\t}\n\n\t// Find the base of the mapping.\n\tp := &data[cap(data)-1]\n\tm.Lock()\n\tdefer m.Unlock()\n\tb := m.active[p]\n\tif b == nil || &b[0] != &data[0] {\n\t\treturn EINVAL\n\t}\n\n\t// Unmap the memory and update m.\n\tif errno := m.munmap(uintptr(unsafe.Pointer(&b[0])), uintptr(len(b))); errno != nil {\n\t\treturn errno\n\t}\n\tdelete(m.active, p)\n\treturn nil\n}\n\nfunc Read(fd int, p []byte) (n int, err error) {\n\tn, err = read(fd, p)\n\tif raceenabled {\n\t\tif n > 0 {\n\t\t\traceWriteRange(unsafe.Pointer(&p[0]), n)\n\t\t}\n\t\tif err == nil {\n\t\t\traceAcquire(unsafe.Pointer(&ioSync))\n\t\t}\n\t}\n\treturn\n}\n\nfunc Write(fd int, p []byte) (n int, err error) {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\tn, err = write(fd, p)\n\tif raceenabled && n > 0 {\n\t\traceReadRange(unsafe.Pointer(&p[0]), n)\n\t}\n\treturn\n}\n\n// For testing: clients can set this flag to force\n// creation of IPv6 sockets to return EAFNOSUPPORT.\nvar SocketDisableIPv6 bool\n\n// Sockaddr represents a socket address.\ntype Sockaddr interface {\n\tsockaddr() (ptr unsafe.Pointer, len _Socklen, err error) // lowercase; only we can define Sockaddrs\n}\n\n// SockaddrInet4 implements the Sockaddr interface for AF_INET type sockets.\ntype SockaddrInet4 struct {\n\tPort int\n\tAddr [4]byte\n\traw  RawSockaddrInet4\n}\n\n// SockaddrInet6 implements the Sockaddr interface for AF_INET6 type sockets.\ntype SockaddrInet6 struct {\n\tPort   int\n\tZoneId uint32\n\tAddr   [16]byte\n\traw    RawSockaddrInet6\n}\n\n// SockaddrUnix implements the Sockaddr interface for AF_UNIX type sockets.\ntype SockaddrUnix struct {\n\tName string\n\traw  RawSockaddrUnix\n}\n\nfunc Bind(fd int, sa Sockaddr) (err error) {\n\tptr, n, err := sa.sockaddr()\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn bind(fd, ptr, n)\n}\n\nfunc Connect(fd int, sa Sockaddr) (err error) {\n\tptr, n, err := sa.sockaddr()\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn connect(fd, ptr, n)\n}\n\nfunc Getpeername(fd int) (sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tif err = getpeername(fd, &rsa, &len); err != nil {\n\t\treturn\n\t}\n\treturn anyToSockaddr(fd, &rsa)\n}\n\nfunc GetsockoptByte(fd, level, opt int) (value byte, err error) {\n\tvar n byte\n\tvallen := _Socklen(1)\n\terr = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen)\n\treturn n, err\n}\n\nfunc GetsockoptInt(fd, level, opt int) (value int, err error) {\n\tvar n int32\n\tvallen := _Socklen(4)\n\terr = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen)\n\treturn int(n), err\n}\n\nfunc GetsockoptInet4Addr(fd, level, opt int) (value [4]byte, err error) {\n\tvallen := _Socklen(4)\n\terr = getsockopt(fd, level, opt, unsafe.Pointer(&value[0]), &vallen)\n\treturn value, err\n}\n\nfunc GetsockoptIPMreq(fd, level, opt int) (*IPMreq, error) {\n\tvar value IPMreq\n\tvallen := _Socklen(SizeofIPMreq)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\nfunc GetsockoptIPv6Mreq(fd, level, opt int) (*IPv6Mreq, error) {\n\tvar value IPv6Mreq\n\tvallen := _Socklen(SizeofIPv6Mreq)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\nfunc GetsockoptIPv6MTUInfo(fd, level, opt int) (*IPv6MTUInfo, error) {\n\tvar value IPv6MTUInfo\n\tvallen := _Socklen(SizeofIPv6MTUInfo)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\nfunc GetsockoptICMPv6Filter(fd, level, opt int) (*ICMPv6Filter, error) {\n\tvar value ICMPv6Filter\n\tvallen := _Socklen(SizeofICMPv6Filter)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\nfunc GetsockoptLinger(fd, level, opt int) (*Linger, error) {\n\tvar linger Linger\n\tvallen := _Socklen(SizeofLinger)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&linger), &vallen)\n\treturn &linger, err\n}\n\nfunc GetsockoptTimeval(fd, level, opt int) (*Timeval, error) {\n\tvar tv Timeval\n\tvallen := _Socklen(unsafe.Sizeof(tv))\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&tv), &vallen)\n\treturn &tv, err\n}\n\nfunc GetsockoptUint64(fd, level, opt int) (value uint64, err error) {\n\tvar n uint64\n\tvallen := _Socklen(8)\n\terr = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen)\n\treturn n, err\n}\n\nfunc Recvfrom(fd int, p []byte, flags int) (n int, from Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tif n, err = recvfrom(fd, p, flags, &rsa, &len); err != nil {\n\t\treturn\n\t}\n\tif rsa.Addr.Family != AF_UNSPEC {\n\t\tfrom, err = anyToSockaddr(fd, &rsa)\n\t}\n\treturn\n}\n\nfunc Sendto(fd int, p []byte, flags int, to Sockaddr) (err error) {\n\tptr, n, err := to.sockaddr()\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn sendto(fd, p, flags, ptr, n)\n}\n\nfunc SetsockoptByte(fd, level, opt int, value byte) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(&value), 1)\n}\n\nfunc SetsockoptInt(fd, level, opt int, value int) (err error) {\n\tvar n = int32(value)\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(&n), 4)\n}\n\nfunc SetsockoptInet4Addr(fd, level, opt int, value [4]byte) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(&value[0]), 4)\n}\n\nfunc SetsockoptIPMreq(fd, level, opt int, mreq *IPMreq) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(mreq), SizeofIPMreq)\n}\n\nfunc SetsockoptIPv6Mreq(fd, level, opt int, mreq *IPv6Mreq) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(mreq), SizeofIPv6Mreq)\n}\n\nfunc SetsockoptICMPv6Filter(fd, level, opt int, filter *ICMPv6Filter) error {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(filter), SizeofICMPv6Filter)\n}\n\nfunc SetsockoptLinger(fd, level, opt int, l *Linger) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(l), SizeofLinger)\n}\n\nfunc SetsockoptString(fd, level, opt int, s string) (err error) {\n\tvar p unsafe.Pointer\n\tif len(s) > 0 {\n\t\tp = unsafe.Pointer(&[]byte(s)[0])\n\t}\n\treturn setsockopt(fd, level, opt, p, uintptr(len(s)))\n}\n\nfunc SetsockoptTimeval(fd, level, opt int, tv *Timeval) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(tv), unsafe.Sizeof(*tv))\n}\n\nfunc SetsockoptUint64(fd, level, opt int, value uint64) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(&value), 8)\n}\n\nfunc Socket(domain, typ, proto int) (fd int, err error) {\n\tif domain == AF_INET6 && SocketDisableIPv6 {\n\t\treturn -1, EAFNOSUPPORT\n\t}\n\tfd, err = socket(domain, typ, proto)\n\treturn\n}\n\nfunc Socketpair(domain, typ, proto int) (fd [2]int, err error) {\n\tvar fdx [2]int32\n\terr = socketpair(domain, typ, proto, &fdx)\n\tif err == nil {\n\t\tfd[0] = int(fdx[0])\n\t\tfd[1] = int(fdx[1])\n\t}\n\treturn\n}\n\nvar ioSync int64\n\nfunc CloseOnExec(fd int) { fcntl(fd, F_SETFD, FD_CLOEXEC) }\n\nfunc SetNonblock(fd int, nonblocking bool) (err error) {\n\tflag, err := fcntl(fd, F_GETFL, 0)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif nonblocking {\n\t\tflag |= O_NONBLOCK\n\t} else {\n\t\tflag &= ^O_NONBLOCK\n\t}\n\t_, err = fcntl(fd, F_SETFL, flag)\n\treturn err\n}\n\n// Exec calls execve(2), which replaces the calling executable in the process\n// tree. argv0 should be the full path to an executable (\"/bin/ls\") and the\n// executable name should also be the first argument in argv ([\"ls\", \"-l\"]).\n// envv are the environment variables that should be passed to the new\n// process ([\"USER=go\", \"PWD=/tmp\"]).\nfunc Exec(argv0 string, argv []string, envv []string) error {\n\treturn syscall.Exec(argv0, argv, envv)\n}\n\nfunc Getag(path string) (ccsid uint16, flag uint16, err error) {\n\tvar val [8]byte\n\tsz, err := Getxattr(path, \"ccsid\", val[:])\n\tif err != nil {\n\t\treturn\n\t}\n\tccsid = uint16(EncodeData(val[0:sz]))\n\tsz, err = Getxattr(path, \"flags\", val[:])\n\tif err != nil {\n\t\treturn\n\t}\n\tflag = uint16(EncodeData(val[0:sz]) >> 15)\n\treturn\n}\n\n// Mount begin\nfunc impl_Mount(source string, target string, fstype string, flags uintptr, data string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(source)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(target)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 *byte\n\t_p2, err = BytePtrFromString(fstype)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p3 *byte\n\t_p3, err = BytePtrFromString(data)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MOUNT1_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(_p3)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_MountAddr() *(func(source string, target string, fstype string, flags uintptr, data string) (err error))\n\nvar Mount = enter_Mount\n\nfunc enter_Mount(source string, target string, fstype string, flags uintptr, data string) (err error) {\n\tfuncref := get_MountAddr()\n\tif validMount() {\n\t\t*funcref = impl_Mount\n\t} else {\n\t\t*funcref = legacyMount\n\t}\n\treturn (*funcref)(source, target, fstype, flags, data)\n}\n\nfunc legacyMount(source string, target string, fstype string, flags uintptr, data string) (err error) {\n\tif needspace := 8 - len(fstype); needspace <= 0 {\n\t\tfstype = fstype[0:8]\n\t} else {\n\t\tfstype += \"        \"[0:needspace]\n\t}\n\treturn mount_LE(target, source, fstype, uint32(flags), int32(len(data)), data)\n}\n\nfunc validMount() bool {\n\tif funcptrtest(GetZosLibVec()+SYS___MOUNT1_A<<4, \"\") == 0 {\n\t\tif name, err := getLeFuncName(GetZosLibVec() + SYS___MOUNT1_A<<4); err == nil {\n\t\t\treturn name == \"__mount1_a\"\n\t\t}\n\t}\n\treturn false\n}\n\n// Mount end\n\n// Unmount begin\nfunc impl_Unmount(target string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(target)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___UMOUNT2_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_UnmountAddr() *(func(target string, flags int) (err error))\n\nvar Unmount = enter_Unmount\n\nfunc enter_Unmount(target string, flags int) (err error) {\n\tfuncref := get_UnmountAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___UMOUNT2_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Unmount\n\t} else {\n\t\t*funcref = legacyUnmount\n\t}\n\treturn (*funcref)(target, flags)\n}\n\nfunc legacyUnmount(name string, mtm int) (err error) {\n\t// mountpoint is always a full path and starts with a '/'\n\t// check if input string is not a mountpoint but a filesystem name\n\tif name[0] != '/' {\n\t\treturn unmount_LE(name, mtm)\n\t}\n\t// treat name as mountpoint\n\tb2s := func(arr []byte) string {\n\t\tvar str string\n\t\tfor i := 0; i < len(arr); i++ {\n\t\t\tif arr[i] == 0 {\n\t\t\t\tstr = string(arr[:i])\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\treturn str\n\t}\n\tvar buffer struct {\n\t\theader W_Mnth\n\t\tfsinfo [64]W_Mntent\n\t}\n\tfs_count, err := W_Getmntent_A((*byte)(unsafe.Pointer(&buffer)), int(unsafe.Sizeof(buffer)))\n\tif err == nil {\n\t\terr = EINVAL\n\t\tfor i := 0; i < fs_count; i++ {\n\t\t\tif b2s(buffer.fsinfo[i].Mountpoint[:]) == name {\n\t\t\t\terr = unmount_LE(b2s(buffer.fsinfo[i].Fsname[:]), mtm)\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t} else if fs_count == 0 {\n\t\terr = EINVAL\n\t}\n\treturn err\n}\n\n// Unmount end\n\nfunc direntIno(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Ino), unsafe.Sizeof(Dirent{}.Ino))\n}\n\nfunc direntReclen(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen))\n}\n\nfunc direntNamlen(buf []byte) (uint64, bool) {\n\treclen, ok := direntReclen(buf)\n\tif !ok {\n\t\treturn 0, false\n\t}\n\treturn reclen - uint64(unsafe.Offsetof(Dirent{}.Name)), true\n}\n\nfunc direntLeToDirentUnix(dirent *direntLE, dir uintptr, path string) (Dirent, error) {\n\tvar d Dirent\n\n\td.Ino = uint64(dirent.Ino)\n\toffset, err := Telldir(dir)\n\tif err != nil {\n\t\treturn d, err\n\t}\n\n\td.Off = int64(offset)\n\ts := string(bytes.Split(dirent.Name[:], []byte{0})[0])\n\tcopy(d.Name[:], s)\n\n\td.Reclen = uint16(24 + len(d.NameString()))\n\tvar st Stat_t\n\tpath = path + \"/\" + s\n\terr = Lstat(path, &st)\n\tif err != nil {\n\t\treturn d, err\n\t}\n\n\td.Type = uint8(st.Mode >> 24)\n\treturn d, err\n}\n\nfunc Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {\n\t// Simulation of Getdirentries port from the Darwin implementation.\n\t// COMMENTS FROM DARWIN:\n\t// It's not the full required semantics, but should handle the case\n\t// of calling Getdirentries or ReadDirent repeatedly.\n\t// It won't handle assigning the results of lseek to *basep, or handle\n\t// the directory being edited underfoot.\n\n\tskip, err := Seek(fd, 0, 1 /* SEEK_CUR */)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\t// Get path from fd to avoid unavailable call (fdopendir)\n\tpath, err := ZosFdToPath(fd)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\td, err := Opendir(path)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tdefer Closedir(d)\n\n\tvar cnt int64\n\tfor {\n\t\tvar entryLE direntLE\n\t\tvar entrypLE *direntLE\n\t\te := Readdir_r(d, &entryLE, &entrypLE)\n\t\tif e != nil {\n\t\t\treturn n, e\n\t\t}\n\t\tif entrypLE == nil {\n\t\t\tbreak\n\t\t}\n\t\tif skip > 0 {\n\t\t\tskip--\n\t\t\tcnt++\n\t\t\tcontinue\n\t\t}\n\n\t\t// Dirent on zos has a different structure\n\t\tentry, e := direntLeToDirentUnix(&entryLE, d, path)\n\t\tif e != nil {\n\t\t\treturn n, e\n\t\t}\n\n\t\treclen := int(entry.Reclen)\n\t\tif reclen > len(buf) {\n\t\t\t// Not enough room. Return for now.\n\t\t\t// The counter will let us know where we should start up again.\n\t\t\t// Note: this strategy for suspending in the middle and\n\t\t\t// restarting is O(n^2) in the length of the directory. Oh well.\n\t\t\tbreak\n\t\t}\n\n\t\t// Copy entry into return buffer.\n\t\ts := unsafe.Slice((*byte)(unsafe.Pointer(&entry)), reclen)\n\t\tcopy(buf, s)\n\n\t\tbuf = buf[reclen:]\n\t\tn += reclen\n\t\tcnt++\n\t}\n\t// Set the seek offset of the input fd to record\n\t// how many files we've already returned.\n\t_, err = Seek(fd, cnt, 0 /* SEEK_SET */)\n\tif err != nil {\n\t\treturn n, err\n\t}\n\n\treturn n, nil\n}\n\nfunc Err2ad() (eadd *int) {\n\tr0, _, _ := CallLeFuncWithErr(GetZosLibVec() + SYS___ERR2AD<<4)\n\teadd = (*int)(unsafe.Pointer(r0))\n\treturn\n}\n\nfunc ZosConsolePrintf(format string, v ...interface{}) (int, error) {\n\ttype __cmsg struct {\n\t\t_            uint16\n\t\t_            [2]uint8\n\t\t__msg_length uint32\n\t\t__msg        uintptr\n\t\t_            [4]uint8\n\t}\n\tmsg := fmt.Sprintf(format, v...)\n\tstrptr := unsafe.Pointer((*reflect.StringHeader)(unsafe.Pointer(&msg)).Data)\n\tlen := (*reflect.StringHeader)(unsafe.Pointer(&msg)).Len\n\tcmsg := __cmsg{__msg_length: uint32(len), __msg: uintptr(strptr)}\n\tcmd := uint32(0)\n\truntime.EnterSyscall()\n\trc, err2, err1 := CallLeFuncWithErr(GetZosLibVec()+SYS_____CONSOLE_A<<4, uintptr(unsafe.Pointer(&cmsg)), 0, uintptr(unsafe.Pointer(&cmd)))\n\truntime.ExitSyscall()\n\tif rc != 0 {\n\t\treturn 0, fmt.Errorf(\"%s (errno2=0x%x)\\n\", err1.Error(), err2)\n\t}\n\treturn 0, nil\n}\nfunc ZosStringToEbcdicBytes(str string, nullterm bool) (ebcdicBytes []byte) {\n\tif nullterm {\n\t\tebcdicBytes = []byte(str + \"\\x00\")\n\t} else {\n\t\tebcdicBytes = []byte(str)\n\t}\n\tA2e(ebcdicBytes)\n\treturn\n}\nfunc ZosEbcdicBytesToString(b []byte, trimRight bool) (str string) {\n\tres := make([]byte, len(b))\n\tcopy(res, b)\n\tE2a(res)\n\tif trimRight {\n\t\tstr = string(bytes.TrimRight(res, \" \\x00\"))\n\t} else {\n\t\tstr = string(res)\n\t}\n\treturn\n}\n\nfunc fdToPath(dirfd int) (path string, err error) {\n\tvar buffer [1024]byte\n\t// w_ctrl()\n\tret := runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS_W_IOCTL<<4,\n\t\t[]uintptr{uintptr(dirfd), 17, 1024, uintptr(unsafe.Pointer(&buffer[0]))})\n\tif ret == 0 {\n\t\tzb := bytes.IndexByte(buffer[:], 0)\n\t\tif zb == -1 {\n\t\t\tzb = len(buffer)\n\t\t}\n\t\t// __e2a_l()\n\t\truntime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS___E2A_L<<4,\n\t\t\t[]uintptr{uintptr(unsafe.Pointer(&buffer[0])), uintptr(zb)})\n\t\treturn string(buffer[:zb]), nil\n\t}\n\t// __errno()\n\terrno := int(*(*int32)(unsafe.Pointer(runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS___ERRNO<<4,\n\t\t[]uintptr{}))))\n\t// __errno2()\n\terrno2 := int(runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS___ERRNO2<<4,\n\t\t[]uintptr{}))\n\t// strerror_r()\n\tret = runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS_STRERROR_R<<4,\n\t\t[]uintptr{uintptr(errno), uintptr(unsafe.Pointer(&buffer[0])), 1024})\n\tif ret == 0 {\n\t\tzb := bytes.IndexByte(buffer[:], 0)\n\t\tif zb == -1 {\n\t\t\tzb = len(buffer)\n\t\t}\n\t\treturn \"\", fmt.Errorf(\"%s (errno2=0x%x)\", buffer[:zb], errno2)\n\t} else {\n\t\treturn \"\", fmt.Errorf(\"fdToPath errno %d (errno2=0x%x)\", errno, errno2)\n\t}\n}\n\nfunc impl_Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MKFIFOAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_MkfifoatAddr() *(func(dirfd int, path string, mode uint32) (err error))\n\nvar Mkfifoat = enter_Mkfifoat\n\nfunc enter_Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tfuncref := get_MkfifoatAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___MKFIFOAT_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Mkfifoat\n\t} else {\n\t\t*funcref = legacy_Mkfifoat\n\t}\n\treturn (*funcref)(dirfd, path, mode)\n}\n\nfunc legacy_Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tdirname, err := ZosFdToPath(dirfd)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn Mkfifo(dirname+\"/\"+path, mode)\n}\n\n//sys\tPosix_openpt(oflag int) (fd int, err error) = SYS_POSIX_OPENPT\n//sys\tGrantpt(fildes int) (rc int, err error) = SYS_GRANTPT\n//sys\tUnlockpt(fildes int) (rc int, err error) = SYS_UNLOCKPT\n\nfunc fcntlAsIs(fd uintptr, cmd int, arg uintptr) (val int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FCNTL<<4, uintptr(fd), uintptr(cmd), arg)\n\truntime.ExitSyscall()\n\tval = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\nfunc Fcntl(fd uintptr, cmd int, op interface{}) (ret int, err error) {\n\tswitch op.(type) {\n\tcase *Flock_t:\n\t\terr = FcntlFlock(fd, cmd, op.(*Flock_t))\n\t\tif err != nil {\n\t\t\tret = -1\n\t\t}\n\t\treturn\n\tcase int:\n\t\treturn FcntlInt(fd, cmd, op.(int))\n\tcase *F_cnvrt:\n\t\treturn fcntlAsIs(fd, cmd, uintptr(unsafe.Pointer(op.(*F_cnvrt))))\n\tcase unsafe.Pointer:\n\t\treturn fcntlAsIs(fd, cmd, uintptr(op.(unsafe.Pointer)))\n\tdefault:\n\t\treturn -1, EINVAL\n\t}\n\treturn\n}\n\nfunc Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\treturn sendfile(outfd, infd, offset, count)\n}\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\t// TODO: use LE call instead if the call is implemented\n\toriginalOffset, err := Seek(infd, 0, SEEK_CUR)\n\tif err != nil {\n\t\treturn -1, err\n\t}\n\t//start reading data from in_fd\n\tif offset != nil {\n\t\t_, err := Seek(infd, *offset, SEEK_SET)\n\t\tif err != nil {\n\t\t\treturn -1, err\n\t\t}\n\t}\n\n\tbuf := make([]byte, count)\n\treadBuf := make([]byte, 0)\n\tvar n int = 0\n\tfor i := 0; i < count; i += n {\n\t\tn, err := Read(infd, buf)\n\t\tif n == 0 {\n\t\t\tif err != nil {\n\t\t\t\treturn -1, err\n\t\t\t} else { // EOF\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\treadBuf = append(readBuf, buf...)\n\t\tbuf = buf[0:0]\n\t}\n\n\tn2, err := Write(outfd, readBuf)\n\tif err != nil {\n\t\treturn -1, err\n\t}\n\n\t//When sendfile() returns, this variable will be set to the\n\t// offset of the byte following the last byte that was read.\n\tif offset != nil {\n\t\t*offset = *offset + int64(n)\n\t\t// If offset is not NULL, then sendfile() does not modify the file\n\t\t// offset of in_fd\n\t\t_, err := Seek(infd, originalOffset, SEEK_SET)\n\t\tif err != nil {\n\t\t\treturn -1, err\n\t\t}\n\t}\n\treturn n2, nil\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/sysvshm_linux.go",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux\n\npackage unix\n\nimport \"runtime\"\n\n// SysvShmCtl performs control operations on the shared memory segment\n// specified by id.\nfunc SysvShmCtl(id, cmd int, desc *SysvShmDesc) (result int, err error) {\n\tif runtime.GOARCH == \"arm\" ||\n\t\truntime.GOARCH == \"mips64\" || runtime.GOARCH == \"mips64le\" {\n\t\tcmd |= ipc_64\n\t}\n\n\treturn shmctl(id, cmd, desc)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/sysvshm_unix.go",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (darwin && !ios) || linux || zos\n\npackage unix\n\nimport \"unsafe\"\n\n// SysvShmAttach attaches the Sysv shared memory segment associated with the\n// shared memory identifier id.\nfunc SysvShmAttach(id int, addr uintptr, flag int) ([]byte, error) {\n\taddr, errno := shmat(id, addr, flag)\n\tif errno != nil {\n\t\treturn nil, errno\n\t}\n\n\t// Retrieve the size of the shared memory to enable slice creation\n\tvar info SysvShmDesc\n\n\t_, err := SysvShmCtl(id, IPC_STAT, &info)\n\tif err != nil {\n\t\t// release the shared memory if we can't find the size\n\n\t\t// ignoring error from shmdt as there's nothing sensible to return here\n\t\tshmdt(addr)\n\t\treturn nil, err\n\t}\n\n\t// Use unsafe to convert addr into a []byte.\n\tb := unsafe.Slice((*byte)(unsafe.Pointer(addr)), int(info.Segsz))\n\treturn b, nil\n}\n\n// SysvShmDetach unmaps the shared memory slice returned from SysvShmAttach.\n//\n// It is not safe to use the slice after calling this function.\nfunc SysvShmDetach(data []byte) error {\n\tif len(data) == 0 {\n\t\treturn EINVAL\n\t}\n\n\treturn shmdt(uintptr(unsafe.Pointer(&data[0])))\n}\n\n// SysvShmGet returns the Sysv shared memory identifier associated with key.\n// If the IPC_CREAT flag is specified a new segment is created.\nfunc SysvShmGet(key, size, flag int) (id int, err error) {\n\treturn shmget(key, size, flag)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/sysvshm_unix_other.go",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (darwin && !ios) || zos\n\npackage unix\n\n// SysvShmCtl performs control operations on the shared memory segment\n// specified by id.\nfunc SysvShmCtl(id, cmd int, desc *SysvShmDesc) (result int, err error) {\n\treturn shmctl(id, cmd, desc)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/timestruct.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos\n\npackage unix\n\nimport \"time\"\n\n// TimespecToNsec returns the time stored in ts as nanoseconds.\nfunc TimespecToNsec(ts Timespec) int64 { return ts.Nano() }\n\n// NsecToTimespec converts a number of nanoseconds into a Timespec.\nfunc NsecToTimespec(nsec int64) Timespec {\n\tsec := nsec / 1e9\n\tnsec = nsec % 1e9\n\tif nsec < 0 {\n\t\tnsec += 1e9\n\t\tsec--\n\t}\n\treturn setTimespec(sec, nsec)\n}\n\n// TimeToTimespec converts t into a Timespec.\n// On some 32-bit systems the range of valid Timespec values are smaller\n// than that of time.Time values.  So if t is out of the valid range of\n// Timespec, it returns a zero Timespec and ERANGE.\nfunc TimeToTimespec(t time.Time) (Timespec, error) {\n\tsec := t.Unix()\n\tnsec := int64(t.Nanosecond())\n\tts := setTimespec(sec, nsec)\n\n\t// Currently all targets have either int32 or int64 for Timespec.Sec.\n\t// If there were a new target with floating point type for it, we have\n\t// to consider the rounding error.\n\tif int64(ts.Sec) != sec {\n\t\treturn Timespec{}, ERANGE\n\t}\n\treturn ts, nil\n}\n\n// TimevalToNsec returns the time stored in tv as nanoseconds.\nfunc TimevalToNsec(tv Timeval) int64 { return tv.Nano() }\n\n// NsecToTimeval converts a number of nanoseconds into a Timeval.\nfunc NsecToTimeval(nsec int64) Timeval {\n\tnsec += 999 // round up to microsecond\n\tusec := nsec % 1e9 / 1e3\n\tsec := nsec / 1e9\n\tif usec < 0 {\n\t\tusec += 1e6\n\t\tsec--\n\t}\n\treturn setTimeval(sec, usec)\n}\n\n// Unix returns the time stored in ts as seconds plus nanoseconds.\nfunc (ts *Timespec) Unix() (sec int64, nsec int64) {\n\treturn int64(ts.Sec), int64(ts.Nsec)\n}\n\n// Unix returns the time stored in tv as seconds plus nanoseconds.\nfunc (tv *Timeval) Unix() (sec int64, nsec int64) {\n\treturn int64(tv.Sec), int64(tv.Usec) * 1000\n}\n\n// Nano returns the time stored in ts as nanoseconds.\nfunc (ts *Timespec) Nano() int64 {\n\treturn int64(ts.Sec)*1e9 + int64(ts.Nsec)\n}\n\n// Nano returns the time stored in tv as nanoseconds.\nfunc (tv *Timeval) Nano() int64 {\n\treturn int64(tv.Sec)*1e9 + int64(tv.Usec)*1000\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/unveil_openbsd.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage unix\n\nimport \"fmt\"\n\n// Unveil implements the unveil syscall.\n// For more information see unveil(2).\n// Note that the special case of blocking further\n// unveil calls is handled by UnveilBlock.\nfunc Unveil(path string, flags string) error {\n\tif err := supportsUnveil(); err != nil {\n\t\treturn err\n\t}\n\tpathPtr, err := BytePtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\tflagsPtr, err := BytePtrFromString(flags)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn unveil(pathPtr, flagsPtr)\n}\n\n// UnveilBlock blocks future unveil calls.\n// For more information see unveil(2).\nfunc UnveilBlock() error {\n\tif err := supportsUnveil(); err != nil {\n\t\treturn err\n\t}\n\treturn unveil(nil, nil)\n}\n\n// supportsUnveil checks for availability of the unveil(2) system call based\n// on the running OpenBSD version.\nfunc supportsUnveil() error {\n\tmaj, min, err := majmin()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// unveil is not available before 6.4\n\tif maj < 6 || (maj == 6 && min <= 3) {\n\t\treturn fmt.Errorf(\"cannot call Unveil on OpenBSD %d.%d\", maj, min)\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/vgetrandom_linux.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && go1.24\n\npackage unix\n\nimport _ \"unsafe\"\n\n//go:linkname vgetrandom runtime.vgetrandom\n//go:noescape\nfunc vgetrandom(p []byte, flags uint32) (ret int, supported bool)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/vgetrandom_unsupported.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build !linux || !go1.24\n\npackage unix\n\nfunc vgetrandom(p []byte, flags uint32) (ret int, supported bool) {\n\treturn -1, false\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/xattr_bsd.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build freebsd || netbsd\n\npackage unix\n\nimport (\n\t\"strings\"\n\t\"unsafe\"\n)\n\n// Derive extattr namespace and attribute name\n\nfunc xattrnamespace(fullattr string) (ns int, attr string, err error) {\n\ts := strings.IndexByte(fullattr, '.')\n\tif s == -1 {\n\t\treturn -1, \"\", ENOATTR\n\t}\n\n\tnamespace := fullattr[0:s]\n\tattr = fullattr[s+1:]\n\n\tswitch namespace {\n\tcase \"user\":\n\t\treturn EXTATTR_NAMESPACE_USER, attr, nil\n\tcase \"system\":\n\t\treturn EXTATTR_NAMESPACE_SYSTEM, attr, nil\n\tdefault:\n\t\treturn -1, \"\", ENOATTR\n\t}\n}\n\nfunc initxattrdest(dest []byte, idx int) (d unsafe.Pointer) {\n\tif len(dest) > idx {\n\t\treturn unsafe.Pointer(&dest[idx])\n\t}\n\tif dest != nil {\n\t\t// extattr_get_file and extattr_list_file treat NULL differently from\n\t\t// a non-NULL pointer of length zero. Preserve the property of nilness,\n\t\t// even if we can't use dest directly.\n\t\treturn unsafe.Pointer(&_zero)\n\t}\n\treturn nil\n}\n\n// FreeBSD and NetBSD implement their own syscalls to handle extended attributes\n\nfunc Getxattr(file string, attr string, dest []byte) (sz int, err error) {\n\td := initxattrdest(dest, 0)\n\tdestsize := len(dest)\n\n\tnsid, a, err := xattrnamespace(attr)\n\tif err != nil {\n\t\treturn -1, err\n\t}\n\n\treturn ExtattrGetFile(file, nsid, a, uintptr(d), destsize)\n}\n\nfunc Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) {\n\td := initxattrdest(dest, 0)\n\tdestsize := len(dest)\n\n\tnsid, a, err := xattrnamespace(attr)\n\tif err != nil {\n\t\treturn -1, err\n\t}\n\n\treturn ExtattrGetFd(fd, nsid, a, uintptr(d), destsize)\n}\n\nfunc Lgetxattr(link string, attr string, dest []byte) (sz int, err error) {\n\td := initxattrdest(dest, 0)\n\tdestsize := len(dest)\n\n\tnsid, a, err := xattrnamespace(attr)\n\tif err != nil {\n\t\treturn -1, err\n\t}\n\n\treturn ExtattrGetLink(link, nsid, a, uintptr(d), destsize)\n}\n\n// flags are unused on FreeBSD\n\nfunc Fsetxattr(fd int, attr string, data []byte, flags int) (err error) {\n\tvar d unsafe.Pointer\n\tif len(data) > 0 {\n\t\td = unsafe.Pointer(&data[0])\n\t}\n\tdatasiz := len(data)\n\n\tnsid, a, err := xattrnamespace(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\n\t_, err = ExtattrSetFd(fd, nsid, a, uintptr(d), datasiz)\n\treturn\n}\n\nfunc Setxattr(file string, attr string, data []byte, flags int) (err error) {\n\tvar d unsafe.Pointer\n\tif len(data) > 0 {\n\t\td = unsafe.Pointer(&data[0])\n\t}\n\tdatasiz := len(data)\n\n\tnsid, a, err := xattrnamespace(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\n\t_, err = ExtattrSetFile(file, nsid, a, uintptr(d), datasiz)\n\treturn\n}\n\nfunc Lsetxattr(link string, attr string, data []byte, flags int) (err error) {\n\tvar d unsafe.Pointer\n\tif len(data) > 0 {\n\t\td = unsafe.Pointer(&data[0])\n\t}\n\tdatasiz := len(data)\n\n\tnsid, a, err := xattrnamespace(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\n\t_, err = ExtattrSetLink(link, nsid, a, uintptr(d), datasiz)\n\treturn\n}\n\nfunc Removexattr(file string, attr string) (err error) {\n\tnsid, a, err := xattrnamespace(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\n\terr = ExtattrDeleteFile(file, nsid, a)\n\treturn\n}\n\nfunc Fremovexattr(fd int, attr string) (err error) {\n\tnsid, a, err := xattrnamespace(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\n\terr = ExtattrDeleteFd(fd, nsid, a)\n\treturn\n}\n\nfunc Lremovexattr(link string, attr string) (err error) {\n\tnsid, a, err := xattrnamespace(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\n\terr = ExtattrDeleteLink(link, nsid, a)\n\treturn\n}\n\nfunc Listxattr(file string, dest []byte) (sz int, err error) {\n\tdestsiz := len(dest)\n\n\t// FreeBSD won't allow you to list xattrs from multiple namespaces\n\ts, pos := 0, 0\n\tfor _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} {\n\t\tstmp, e := ListxattrNS(file, nsid, dest[pos:])\n\n\t\t/* Errors accessing system attrs are ignored so that\n\t\t * we can implement the Linux-like behavior of omitting errors that\n\t\t * we don't have read permissions on\n\t\t *\n\t\t * Linux will still error if we ask for user attributes on a file that\n\t\t * we don't have read permissions on, so don't ignore those errors\n\t\t */\n\t\tif e != nil {\n\t\t\tif e == EPERM && nsid != EXTATTR_NAMESPACE_USER {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\treturn s, e\n\t\t}\n\n\t\ts += stmp\n\t\tpos = s\n\t\tif pos > destsiz {\n\t\t\tpos = destsiz\n\t\t}\n\t}\n\n\treturn s, nil\n}\n\nfunc ListxattrNS(file string, nsid int, dest []byte) (sz int, err error) {\n\td := initxattrdest(dest, 0)\n\tdestsiz := len(dest)\n\n\ts, e := ExtattrListFile(file, nsid, uintptr(d), destsiz)\n\tif e != nil {\n\t\treturn 0, err\n\t}\n\n\treturn s, nil\n}\n\nfunc Flistxattr(fd int, dest []byte) (sz int, err error) {\n\tdestsiz := len(dest)\n\n\ts, pos := 0, 0\n\tfor _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} {\n\t\tstmp, e := FlistxattrNS(fd, nsid, dest[pos:])\n\n\t\tif e != nil {\n\t\t\tif e == EPERM && nsid != EXTATTR_NAMESPACE_USER {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\treturn s, e\n\t\t}\n\n\t\ts += stmp\n\t\tpos = s\n\t\tif pos > destsiz {\n\t\t\tpos = destsiz\n\t\t}\n\t}\n\n\treturn s, nil\n}\n\nfunc FlistxattrNS(fd int, nsid int, dest []byte) (sz int, err error) {\n\td := initxattrdest(dest, 0)\n\tdestsiz := len(dest)\n\n\ts, e := ExtattrListFd(fd, nsid, uintptr(d), destsiz)\n\tif e != nil {\n\t\treturn 0, err\n\t}\n\n\treturn s, nil\n}\n\nfunc Llistxattr(link string, dest []byte) (sz int, err error) {\n\tdestsiz := len(dest)\n\n\ts, pos := 0, 0\n\tfor _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} {\n\t\tstmp, e := LlistxattrNS(link, nsid, dest[pos:])\n\n\t\tif e != nil {\n\t\t\tif e == EPERM && nsid != EXTATTR_NAMESPACE_USER {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\treturn s, e\n\t\t}\n\n\t\ts += stmp\n\t\tpos = s\n\t\tif pos > destsiz {\n\t\t\tpos = destsiz\n\t\t}\n\t}\n\n\treturn s, nil\n}\n\nfunc LlistxattrNS(link string, nsid int, dest []byte) (sz int, err error) {\n\td := initxattrdest(dest, 0)\n\tdestsiz := len(dest)\n\n\ts, e := ExtattrListLink(link, nsid, uintptr(d), destsiz)\n\tif e != nil {\n\t\treturn 0, err\n\t}\n\n\treturn s, nil\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go",
    "content": "// mkerrors.sh -maix32\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc && aix\n\n// Created by cgo -godefs - DO NOT EDIT\n// cgo -godefs -- -maix32 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                  = 0x10\n\tAF_BYPASS                     = 0x19\n\tAF_CCITT                      = 0xa\n\tAF_CHAOS                      = 0x5\n\tAF_DATAKIT                    = 0x9\n\tAF_DECnet                     = 0xc\n\tAF_DLI                        = 0xd\n\tAF_ECMA                       = 0x8\n\tAF_HYLINK                     = 0xf\n\tAF_IMPLINK                    = 0x3\n\tAF_INET                       = 0x2\n\tAF_INET6                      = 0x18\n\tAF_INTF                       = 0x14\n\tAF_ISO                        = 0x7\n\tAF_LAT                        = 0xe\n\tAF_LINK                       = 0x12\n\tAF_LOCAL                      = 0x1\n\tAF_MAX                        = 0x1e\n\tAF_NDD                        = 0x17\n\tAF_NETWARE                    = 0x16\n\tAF_NS                         = 0x6\n\tAF_OSI                        = 0x7\n\tAF_PUP                        = 0x4\n\tAF_RIF                        = 0x15\n\tAF_ROUTE                      = 0x11\n\tAF_SNA                        = 0xb\n\tAF_UNIX                       = 0x1\n\tAF_UNSPEC                     = 0x0\n\tALTWERASE                     = 0x400000\n\tARPHRD_802_3                  = 0x6\n\tARPHRD_802_5                  = 0x6\n\tARPHRD_ETHER                  = 0x1\n\tARPHRD_FDDI                   = 0x1\n\tB0                            = 0x0\n\tB110                          = 0x3\n\tB1200                         = 0x9\n\tB134                          = 0x4\n\tB150                          = 0x5\n\tB1800                         = 0xa\n\tB19200                        = 0xe\n\tB200                          = 0x6\n\tB2400                         = 0xb\n\tB300                          = 0x7\n\tB38400                        = 0xf\n\tB4800                         = 0xc\n\tB50                           = 0x1\n\tB600                          = 0x8\n\tB75                           = 0x2\n\tB9600                         = 0xd\n\tBRKINT                        = 0x2\n\tBS0                           = 0x0\n\tBS1                           = 0x1000\n\tBSDLY                         = 0x1000\n\tCAP_AACCT                     = 0x6\n\tCAP_ARM_APPLICATION           = 0x5\n\tCAP_BYPASS_RAC_VMM            = 0x3\n\tCAP_CLEAR                     = 0x0\n\tCAP_CREDENTIALS               = 0x7\n\tCAP_EFFECTIVE                 = 0x1\n\tCAP_EWLM_AGENT                = 0x4\n\tCAP_INHERITABLE               = 0x2\n\tCAP_MAXIMUM                   = 0x7\n\tCAP_NUMA_ATTACH               = 0x2\n\tCAP_PERMITTED                 = 0x3\n\tCAP_PROPAGATE                 = 0x1\n\tCAP_PROPOGATE                 = 0x1\n\tCAP_SET                       = 0x1\n\tCBAUD                         = 0xf\n\tCFLUSH                        = 0xf\n\tCIBAUD                        = 0xf0000\n\tCLOCAL                        = 0x800\n\tCLOCK_MONOTONIC               = 0xa\n\tCLOCK_PROCESS_CPUTIME_ID      = 0xb\n\tCLOCK_REALTIME                = 0x9\n\tCLOCK_THREAD_CPUTIME_ID       = 0xc\n\tCR0                           = 0x0\n\tCR1                           = 0x100\n\tCR2                           = 0x200\n\tCR3                           = 0x300\n\tCRDLY                         = 0x300\n\tCREAD                         = 0x80\n\tCS5                           = 0x0\n\tCS6                           = 0x10\n\tCS7                           = 0x20\n\tCS8                           = 0x30\n\tCSIOCGIFCONF                  = -0x3ff796dc\n\tCSIZE                         = 0x30\n\tCSMAP_DIR                     = \"/usr/lib/nls/csmap/\"\n\tCSTART                        = '\\021'\n\tCSTOP                         = '\\023'\n\tCSTOPB                        = 0x40\n\tCSUSP                         = 0x1a\n\tECHO                          = 0x8\n\tECHOCTL                       = 0x20000\n\tECHOE                         = 0x10\n\tECHOK                         = 0x20\n\tECHOKE                        = 0x80000\n\tECHONL                        = 0x40\n\tECHOPRT                       = 0x40000\n\tECH_ICMPID                    = 0x2\n\tETHERNET_CSMACD               = 0x6\n\tEVENP                         = 0x80\n\tEXCONTINUE                    = 0x0\n\tEXDLOK                        = 0x3\n\tEXIO                          = 0x2\n\tEXPGIO                        = 0x0\n\tEXRESUME                      = 0x2\n\tEXRETURN                      = 0x1\n\tEXSIG                         = 0x4\n\tEXTA                          = 0xe\n\tEXTB                          = 0xf\n\tEXTRAP                        = 0x1\n\tEYEC_RTENTRYA                 = 0x257274656e747241\n\tEYEC_RTENTRYF                 = 0x257274656e747246\n\tE_ACC                         = 0x0\n\tFD_CLOEXEC                    = 0x1\n\tFD_SETSIZE                    = 0xfffe\n\tFF0                           = 0x0\n\tFF1                           = 0x2000\n\tFFDLY                         = 0x2000\n\tFLUSHBAND                     = 0x40\n\tFLUSHLOW                      = 0x8\n\tFLUSHO                        = 0x100000\n\tFLUSHR                        = 0x1\n\tFLUSHRW                       = 0x3\n\tFLUSHW                        = 0x2\n\tF_CLOSEM                      = 0xa\n\tF_DUP2FD                      = 0xe\n\tF_DUPFD                       = 0x0\n\tF_GETFD                       = 0x1\n\tF_GETFL                       = 0x3\n\tF_GETLK                       = 0x5\n\tF_GETLK64                     = 0xb\n\tF_GETOWN                      = 0x8\n\tF_LOCK                        = 0x1\n\tF_OK                          = 0x0\n\tF_RDLCK                       = 0x1\n\tF_SETFD                       = 0x2\n\tF_SETFL                       = 0x4\n\tF_SETLK                       = 0x6\n\tF_SETLK64                     = 0xc\n\tF_SETLKW                      = 0x7\n\tF_SETLKW64                    = 0xd\n\tF_SETOWN                      = 0x9\n\tF_TEST                        = 0x3\n\tF_TLOCK                       = 0x2\n\tF_TSTLK                       = 0xf\n\tF_ULOCK                       = 0x0\n\tF_UNLCK                       = 0x3\n\tF_WRLCK                       = 0x2\n\tHUPCL                         = 0x400\n\tIBSHIFT                       = 0x10\n\tICANON                        = 0x2\n\tICMP6_FILTER                  = 0x26\n\tICMP6_SEC_SEND_DEL            = 0x46\n\tICMP6_SEC_SEND_GET            = 0x47\n\tICMP6_SEC_SEND_SET            = 0x44\n\tICMP6_SEC_SEND_SET_CGA_ADDR   = 0x45\n\tICRNL                         = 0x100\n\tIEXTEN                        = 0x200000\n\tIFA_FIRSTALIAS                = 0x2000\n\tIFA_ROUTE                     = 0x1\n\tIFF_64BIT                     = 0x4000000\n\tIFF_ALLCAST                   = 0x20000\n\tIFF_ALLMULTI                  = 0x200\n\tIFF_BPF                       = 0x8000000\n\tIFF_BRIDGE                    = 0x40000\n\tIFF_BROADCAST                 = 0x2\n\tIFF_CANTCHANGE                = 0x80c52\n\tIFF_CHECKSUM_OFFLOAD          = 0x10000000\n\tIFF_D1                        = 0x8000\n\tIFF_D2                        = 0x4000\n\tIFF_D3                        = 0x2000\n\tIFF_D4                        = 0x1000\n\tIFF_DEBUG                     = 0x4\n\tIFF_DEVHEALTH                 = 0x4000\n\tIFF_DO_HW_LOOPBACK            = 0x10000\n\tIFF_GROUP_ROUTING             = 0x2000000\n\tIFF_IFBUFMGT                  = 0x800000\n\tIFF_LINK0                     = 0x100000\n\tIFF_LINK1                     = 0x200000\n\tIFF_LINK2                     = 0x400000\n\tIFF_LOOPBACK                  = 0x8\n\tIFF_MULTICAST                 = 0x80000\n\tIFF_NOARP                     = 0x80\n\tIFF_NOECHO                    = 0x800\n\tIFF_NOTRAILERS                = 0x20\n\tIFF_OACTIVE                   = 0x400\n\tIFF_POINTOPOINT               = 0x10\n\tIFF_PROMISC                   = 0x100\n\tIFF_PSEG                      = 0x40000000\n\tIFF_RUNNING                   = 0x40\n\tIFF_SIMPLEX                   = 0x800\n\tIFF_SNAP                      = 0x8000\n\tIFF_TCP_DISABLE_CKSUM         = 0x20000000\n\tIFF_TCP_NOCKSUM               = 0x1000000\n\tIFF_UP                        = 0x1\n\tIFF_VIPA                      = 0x80000000\n\tIFNAMSIZ                      = 0x10\n\tIFO_FLUSH                     = 0x1\n\tIFT_1822                      = 0x2\n\tIFT_AAL5                      = 0x31\n\tIFT_ARCNET                    = 0x23\n\tIFT_ARCNETPLUS                = 0x24\n\tIFT_ATM                       = 0x25\n\tIFT_CEPT                      = 0x13\n\tIFT_CLUSTER                   = 0x3e\n\tIFT_DS3                       = 0x1e\n\tIFT_EON                       = 0x19\n\tIFT_ETHER                     = 0x6\n\tIFT_FCS                       = 0x3a\n\tIFT_FDDI                      = 0xf\n\tIFT_FRELAY                    = 0x20\n\tIFT_FRELAYDCE                 = 0x2c\n\tIFT_GIFTUNNEL                 = 0x3c\n\tIFT_HDH1822                   = 0x3\n\tIFT_HF                        = 0x3d\n\tIFT_HIPPI                     = 0x2f\n\tIFT_HSSI                      = 0x2e\n\tIFT_HY                        = 0xe\n\tIFT_IB                        = 0xc7\n\tIFT_ISDNBASIC                 = 0x14\n\tIFT_ISDNPRIMARY               = 0x15\n\tIFT_ISO88022LLC               = 0x29\n\tIFT_ISO88023                  = 0x7\n\tIFT_ISO88024                  = 0x8\n\tIFT_ISO88025                  = 0x9\n\tIFT_ISO88026                  = 0xa\n\tIFT_LAPB                      = 0x10\n\tIFT_LOCALTALK                 = 0x2a\n\tIFT_LOOP                      = 0x18\n\tIFT_MIOX25                    = 0x26\n\tIFT_MODEM                     = 0x30\n\tIFT_NSIP                      = 0x1b\n\tIFT_OTHER                     = 0x1\n\tIFT_P10                       = 0xc\n\tIFT_P80                       = 0xd\n\tIFT_PARA                      = 0x22\n\tIFT_PPP                       = 0x17\n\tIFT_PROPMUX                   = 0x36\n\tIFT_PROPVIRTUAL               = 0x35\n\tIFT_PTPSERIAL                 = 0x16\n\tIFT_RS232                     = 0x21\n\tIFT_SDLC                      = 0x11\n\tIFT_SIP                       = 0x1f\n\tIFT_SLIP                      = 0x1c\n\tIFT_SMDSDXI                   = 0x2b\n\tIFT_SMDSICIP                  = 0x34\n\tIFT_SN                        = 0x38\n\tIFT_SONET                     = 0x27\n\tIFT_SONETPATH                 = 0x32\n\tIFT_SONETVT                   = 0x33\n\tIFT_SP                        = 0x39\n\tIFT_STARLAN                   = 0xb\n\tIFT_T1                        = 0x12\n\tIFT_TUNNEL                    = 0x3b\n\tIFT_ULTRA                     = 0x1d\n\tIFT_V35                       = 0x2d\n\tIFT_VIPA                      = 0x37\n\tIFT_X25                       = 0x5\n\tIFT_X25DDN                    = 0x4\n\tIFT_X25PLE                    = 0x28\n\tIFT_XETHER                    = 0x1a\n\tIGNBRK                        = 0x1\n\tIGNCR                         = 0x80\n\tIGNPAR                        = 0x4\n\tIMAXBEL                       = 0x10000\n\tINLCR                         = 0x40\n\tINPCK                         = 0x10\n\tIN_CLASSA_HOST                = 0xffffff\n\tIN_CLASSA_MAX                 = 0x80\n\tIN_CLASSA_NET                 = 0xff000000\n\tIN_CLASSA_NSHIFT              = 0x18\n\tIN_CLASSB_HOST                = 0xffff\n\tIN_CLASSB_MAX                 = 0x10000\n\tIN_CLASSB_NET                 = 0xffff0000\n\tIN_CLASSB_NSHIFT              = 0x10\n\tIN_CLASSC_HOST                = 0xff\n\tIN_CLASSC_NET                 = 0xffffff00\n\tIN_CLASSC_NSHIFT              = 0x8\n\tIN_CLASSD_HOST                = 0xfffffff\n\tIN_CLASSD_NET                 = 0xf0000000\n\tIN_CLASSD_NSHIFT              = 0x1c\n\tIN_LOOPBACKNET                = 0x7f\n\tIN_USE                        = 0x1\n\tIPPROTO_AH                    = 0x33\n\tIPPROTO_BIP                   = 0x53\n\tIPPROTO_DSTOPTS               = 0x3c\n\tIPPROTO_EGP                   = 0x8\n\tIPPROTO_EON                   = 0x50\n\tIPPROTO_ESP                   = 0x32\n\tIPPROTO_FRAGMENT              = 0x2c\n\tIPPROTO_GGP                   = 0x3\n\tIPPROTO_GIF                   = 0x8c\n\tIPPROTO_GRE                   = 0x2f\n\tIPPROTO_HOPOPTS               = 0x0\n\tIPPROTO_ICMP                  = 0x1\n\tIPPROTO_ICMPV6                = 0x3a\n\tIPPROTO_IDP                   = 0x16\n\tIPPROTO_IGMP                  = 0x2\n\tIPPROTO_IP                    = 0x0\n\tIPPROTO_IPIP                  = 0x4\n\tIPPROTO_IPV6                  = 0x29\n\tIPPROTO_LOCAL                 = 0x3f\n\tIPPROTO_MAX                   = 0x100\n\tIPPROTO_MH                    = 0x87\n\tIPPROTO_NONE                  = 0x3b\n\tIPPROTO_PUP                   = 0xc\n\tIPPROTO_QOS                   = 0x2d\n\tIPPROTO_RAW                   = 0xff\n\tIPPROTO_ROUTING               = 0x2b\n\tIPPROTO_RSVP                  = 0x2e\n\tIPPROTO_SCTP                  = 0x84\n\tIPPROTO_TCP                   = 0x6\n\tIPPROTO_TP                    = 0x1d\n\tIPPROTO_UDP                   = 0x11\n\tIPV6_ADDRFORM                 = 0x16\n\tIPV6_ADDR_PREFERENCES         = 0x4a\n\tIPV6_ADD_MEMBERSHIP           = 0xc\n\tIPV6_AIXRAWSOCKET             = 0x39\n\tIPV6_CHECKSUM                 = 0x27\n\tIPV6_DONTFRAG                 = 0x2d\n\tIPV6_DROP_MEMBERSHIP          = 0xd\n\tIPV6_DSTOPTS                  = 0x36\n\tIPV6_FLOWINFO_FLOWLABEL       = 0xffffff\n\tIPV6_FLOWINFO_PRIFLOW         = 0xfffffff\n\tIPV6_FLOWINFO_PRIORITY        = 0xf000000\n\tIPV6_FLOWINFO_SRFLAG          = 0x10000000\n\tIPV6_FLOWINFO_VERSION         = 0xf0000000\n\tIPV6_HOPLIMIT                 = 0x28\n\tIPV6_HOPOPTS                  = 0x34\n\tIPV6_JOIN_GROUP               = 0xc\n\tIPV6_LEAVE_GROUP              = 0xd\n\tIPV6_MIPDSTOPTS               = 0x36\n\tIPV6_MULTICAST_HOPS           = 0xa\n\tIPV6_MULTICAST_IF             = 0x9\n\tIPV6_MULTICAST_LOOP           = 0xb\n\tIPV6_NEXTHOP                  = 0x30\n\tIPV6_NOPROBE                  = 0x1c\n\tIPV6_PATHMTU                  = 0x2e\n\tIPV6_PKTINFO                  = 0x21\n\tIPV6_PKTOPTIONS               = 0x24\n\tIPV6_PRIORITY_10              = 0xa000000\n\tIPV6_PRIORITY_11              = 0xb000000\n\tIPV6_PRIORITY_12              = 0xc000000\n\tIPV6_PRIORITY_13              = 0xd000000\n\tIPV6_PRIORITY_14              = 0xe000000\n\tIPV6_PRIORITY_15              = 0xf000000\n\tIPV6_PRIORITY_8               = 0x8000000\n\tIPV6_PRIORITY_9               = 0x9000000\n\tIPV6_PRIORITY_BULK            = 0x4000000\n\tIPV6_PRIORITY_CONTROL         = 0x7000000\n\tIPV6_PRIORITY_FILLER          = 0x1000000\n\tIPV6_PRIORITY_INTERACTIVE     = 0x6000000\n\tIPV6_PRIORITY_RESERVED1       = 0x3000000\n\tIPV6_PRIORITY_RESERVED2       = 0x5000000\n\tIPV6_PRIORITY_UNATTENDED      = 0x2000000\n\tIPV6_PRIORITY_UNCHARACTERIZED = 0x0\n\tIPV6_RECVDSTOPTS              = 0x38\n\tIPV6_RECVHOPLIMIT             = 0x29\n\tIPV6_RECVHOPOPTS              = 0x35\n\tIPV6_RECVHOPS                 = 0x22\n\tIPV6_RECVIF                   = 0x1e\n\tIPV6_RECVPATHMTU              = 0x2f\n\tIPV6_RECVPKTINFO              = 0x23\n\tIPV6_RECVRTHDR                = 0x33\n\tIPV6_RECVSRCRT                = 0x1d\n\tIPV6_RECVTCLASS               = 0x2a\n\tIPV6_RTHDR                    = 0x32\n\tIPV6_RTHDRDSTOPTS             = 0x37\n\tIPV6_RTHDR_TYPE_0             = 0x0\n\tIPV6_RTHDR_TYPE_2             = 0x2\n\tIPV6_SENDIF                   = 0x1f\n\tIPV6_SRFLAG_LOOSE             = 0x0\n\tIPV6_SRFLAG_STRICT            = 0x10000000\n\tIPV6_TCLASS                   = 0x2b\n\tIPV6_TOKEN_LENGTH             = 0x40\n\tIPV6_UNICAST_HOPS             = 0x4\n\tIPV6_USE_MIN_MTU              = 0x2c\n\tIPV6_V6ONLY                   = 0x25\n\tIPV6_VERSION                  = 0x60000000\n\tIP_ADDRFORM                   = 0x16\n\tIP_ADD_MEMBERSHIP             = 0xc\n\tIP_ADD_SOURCE_MEMBERSHIP      = 0x3c\n\tIP_BLOCK_SOURCE               = 0x3a\n\tIP_BROADCAST_IF               = 0x10\n\tIP_CACHE_LINE_SIZE            = 0x80\n\tIP_DEFAULT_MULTICAST_LOOP     = 0x1\n\tIP_DEFAULT_MULTICAST_TTL      = 0x1\n\tIP_DF                         = 0x4000\n\tIP_DHCPMODE                   = 0x11\n\tIP_DONTFRAG                   = 0x19\n\tIP_DROP_MEMBERSHIP            = 0xd\n\tIP_DROP_SOURCE_MEMBERSHIP     = 0x3d\n\tIP_FINDPMTU                   = 0x1a\n\tIP_HDRINCL                    = 0x2\n\tIP_INC_MEMBERSHIPS            = 0x14\n\tIP_INIT_MEMBERSHIP            = 0x14\n\tIP_MAXPACKET                  = 0xffff\n\tIP_MF                         = 0x2000\n\tIP_MSS                        = 0x240\n\tIP_MULTICAST_HOPS             = 0xa\n\tIP_MULTICAST_IF               = 0x9\n\tIP_MULTICAST_LOOP             = 0xb\n\tIP_MULTICAST_TTL              = 0xa\n\tIP_OPT                        = 0x1b\n\tIP_OPTIONS                    = 0x1\n\tIP_PMTUAGE                    = 0x1b\n\tIP_RECVDSTADDR                = 0x7\n\tIP_RECVIF                     = 0x14\n\tIP_RECVIFINFO                 = 0xf\n\tIP_RECVINTERFACE              = 0x20\n\tIP_RECVMACHDR                 = 0xe\n\tIP_RECVOPTS                   = 0x5\n\tIP_RECVRETOPTS                = 0x6\n\tIP_RECVTTL                    = 0x22\n\tIP_RETOPTS                    = 0x8\n\tIP_SOURCE_FILTER              = 0x48\n\tIP_TOS                        = 0x3\n\tIP_TTL                        = 0x4\n\tIP_UNBLOCK_SOURCE             = 0x3b\n\tIP_UNICAST_HOPS               = 0x4\n\tISIG                          = 0x1\n\tISTRIP                        = 0x20\n\tIUCLC                         = 0x800\n\tIXANY                         = 0x1000\n\tIXOFF                         = 0x400\n\tIXON                          = 0x200\n\tI_FLUSH                       = 0x20005305\n\tLNOFLSH                       = 0x8000\n\tLOCK_EX                       = 0x2\n\tLOCK_NB                       = 0x4\n\tLOCK_SH                       = 0x1\n\tLOCK_UN                       = 0x8\n\tMADV_DONTNEED                 = 0x4\n\tMADV_NORMAL                   = 0x0\n\tMADV_RANDOM                   = 0x1\n\tMADV_SEQUENTIAL               = 0x2\n\tMADV_SPACEAVAIL               = 0x5\n\tMADV_WILLNEED                 = 0x3\n\tMAP_ANON                      = 0x10\n\tMAP_ANONYMOUS                 = 0x10\n\tMAP_FILE                      = 0x0\n\tMAP_FIXED                     = 0x100\n\tMAP_PRIVATE                   = 0x2\n\tMAP_SHARED                    = 0x1\n\tMAP_TYPE                      = 0xf0\n\tMAP_VARIABLE                  = 0x0\n\tMCAST_BLOCK_SOURCE            = 0x40\n\tMCAST_EXCLUDE                 = 0x2\n\tMCAST_INCLUDE                 = 0x1\n\tMCAST_JOIN_GROUP              = 0x3e\n\tMCAST_JOIN_SOURCE_GROUP       = 0x42\n\tMCAST_LEAVE_GROUP             = 0x3f\n\tMCAST_LEAVE_SOURCE_GROUP      = 0x43\n\tMCAST_SOURCE_FILTER           = 0x49\n\tMCAST_UNBLOCK_SOURCE          = 0x41\n\tMCL_CURRENT                   = 0x100\n\tMCL_FUTURE                    = 0x200\n\tMSG_ANY                       = 0x4\n\tMSG_ARGEXT                    = 0x400\n\tMSG_BAND                      = 0x2\n\tMSG_COMPAT                    = 0x8000\n\tMSG_CTRUNC                    = 0x20\n\tMSG_DONTROUTE                 = 0x4\n\tMSG_EOR                       = 0x8\n\tMSG_HIPRI                     = 0x1\n\tMSG_MAXIOVLEN                 = 0x10\n\tMSG_MPEG2                     = 0x80\n\tMSG_NONBLOCK                  = 0x4000\n\tMSG_NOSIGNAL                  = 0x100\n\tMSG_OOB                       = 0x1\n\tMSG_PEEK                      = 0x2\n\tMSG_TRUNC                     = 0x10\n\tMSG_WAITALL                   = 0x40\n\tMSG_WAITFORONE                = 0x200\n\tMS_ASYNC                      = 0x10\n\tMS_EINTR                      = 0x80\n\tMS_INVALIDATE                 = 0x40\n\tMS_PER_SEC                    = 0x3e8\n\tMS_SYNC                       = 0x20\n\tNFDBITS                       = 0x20\n\tNL0                           = 0x0\n\tNL1                           = 0x4000\n\tNL2                           = 0x8000\n\tNL3                           = 0xc000\n\tNLDLY                         = 0x4000\n\tNOFLSH                        = 0x80\n\tNOFLUSH                       = 0x80000000\n\tOCRNL                         = 0x8\n\tOFDEL                         = 0x80\n\tOFILL                         = 0x40\n\tOLCUC                         = 0x2\n\tONLCR                         = 0x4\n\tONLRET                        = 0x20\n\tONOCR                         = 0x10\n\tONOEOT                        = 0x80000\n\tOPOST                         = 0x1\n\tOXTABS                        = 0x40000\n\tO_ACCMODE                     = 0x23\n\tO_APPEND                      = 0x8\n\tO_CIO                         = 0x80\n\tO_CIOR                        = 0x800000000\n\tO_CLOEXEC                     = 0x800000\n\tO_CREAT                       = 0x100\n\tO_DEFER                       = 0x2000\n\tO_DELAY                       = 0x4000\n\tO_DIRECT                      = 0x8000000\n\tO_DIRECTORY                   = 0x80000\n\tO_DSYNC                       = 0x400000\n\tO_EFSOFF                      = 0x400000000\n\tO_EFSON                       = 0x200000000\n\tO_EXCL                        = 0x400\n\tO_EXEC                        = 0x20\n\tO_LARGEFILE                   = 0x4000000\n\tO_NDELAY                      = 0x8000\n\tO_NOCACHE                     = 0x100000\n\tO_NOCTTY                      = 0x800\n\tO_NOFOLLOW                    = 0x1000000\n\tO_NONBLOCK                    = 0x4\n\tO_NONE                        = 0x3\n\tO_NSHARE                      = 0x10000\n\tO_RAW                         = 0x100000000\n\tO_RDONLY                      = 0x0\n\tO_RDWR                        = 0x2\n\tO_RSHARE                      = 0x1000\n\tO_RSYNC                       = 0x200000\n\tO_SEARCH                      = 0x20\n\tO_SNAPSHOT                    = 0x40\n\tO_SYNC                        = 0x10\n\tO_TRUNC                       = 0x200\n\tO_TTY_INIT                    = 0x0\n\tO_WRONLY                      = 0x1\n\tPARENB                        = 0x100\n\tPAREXT                        = 0x100000\n\tPARMRK                        = 0x8\n\tPARODD                        = 0x200\n\tPENDIN                        = 0x20000000\n\tPRIO_PGRP                     = 0x1\n\tPRIO_PROCESS                  = 0x0\n\tPRIO_USER                     = 0x2\n\tPROT_EXEC                     = 0x4\n\tPROT_NONE                     = 0x0\n\tPROT_READ                     = 0x1\n\tPROT_WRITE                    = 0x2\n\tPR_64BIT                      = 0x20\n\tPR_ADDR                       = 0x2\n\tPR_ARGEXT                     = 0x400\n\tPR_ATOMIC                     = 0x1\n\tPR_CONNREQUIRED               = 0x4\n\tPR_FASTHZ                     = 0x5\n\tPR_INP                        = 0x40\n\tPR_INTRLEVEL                  = 0x8000\n\tPR_MLS                        = 0x100\n\tPR_MLS_1_LABEL                = 0x200\n\tPR_NOEOR                      = 0x4000\n\tPR_RIGHTS                     = 0x10\n\tPR_SLOWHZ                     = 0x2\n\tPR_WANTRCVD                   = 0x8\n\tRLIMIT_AS                     = 0x6\n\tRLIMIT_CORE                   = 0x4\n\tRLIMIT_CPU                    = 0x0\n\tRLIMIT_DATA                   = 0x2\n\tRLIMIT_FSIZE                  = 0x1\n\tRLIMIT_NOFILE                 = 0x7\n\tRLIMIT_NPROC                  = 0x9\n\tRLIMIT_RSS                    = 0x5\n\tRLIMIT_STACK                  = 0x3\n\tRLIM_INFINITY                 = 0x7fffffff\n\tRTAX_AUTHOR                   = 0x6\n\tRTAX_BRD                      = 0x7\n\tRTAX_DST                      = 0x0\n\tRTAX_GATEWAY                  = 0x1\n\tRTAX_GENMASK                  = 0x3\n\tRTAX_IFA                      = 0x5\n\tRTAX_IFP                      = 0x4\n\tRTAX_MAX                      = 0x8\n\tRTAX_NETMASK                  = 0x2\n\tRTA_AUTHOR                    = 0x40\n\tRTA_BRD                       = 0x80\n\tRTA_DOWNSTREAM                = 0x100\n\tRTA_DST                       = 0x1\n\tRTA_GATEWAY                   = 0x2\n\tRTA_GENMASK                   = 0x8\n\tRTA_IFA                       = 0x20\n\tRTA_IFP                       = 0x10\n\tRTA_NETMASK                   = 0x4\n\tRTC_IA64                      = 0x3\n\tRTC_POWER                     = 0x1\n\tRTC_POWER_PC                  = 0x2\n\tRTF_ACTIVE_DGD                = 0x1000000\n\tRTF_BCE                       = 0x80000\n\tRTF_BLACKHOLE                 = 0x1000\n\tRTF_BROADCAST                 = 0x400000\n\tRTF_BUL                       = 0x2000\n\tRTF_CLONE                     = 0x10000\n\tRTF_CLONED                    = 0x20000\n\tRTF_CLONING                   = 0x100\n\tRTF_DONE                      = 0x40\n\tRTF_DYNAMIC                   = 0x10\n\tRTF_FREE_IN_PROG              = 0x4000000\n\tRTF_GATEWAY                   = 0x2\n\tRTF_HOST                      = 0x4\n\tRTF_LLINFO                    = 0x400\n\tRTF_LOCAL                     = 0x200000\n\tRTF_MASK                      = 0x80\n\tRTF_MODIFIED                  = 0x20\n\tRTF_MULTICAST                 = 0x800000\n\tRTF_PERMANENT6                = 0x8000000\n\tRTF_PINNED                    = 0x100000\n\tRTF_PROTO1                    = 0x8000\n\tRTF_PROTO2                    = 0x4000\n\tRTF_PROTO3                    = 0x40000\n\tRTF_REJECT                    = 0x8\n\tRTF_SMALLMTU                  = 0x40000\n\tRTF_STATIC                    = 0x800\n\tRTF_STOPSRCH                  = 0x2000000\n\tRTF_UNREACHABLE               = 0x10000000\n\tRTF_UP                        = 0x1\n\tRTF_XRESOLVE                  = 0x200\n\tRTM_ADD                       = 0x1\n\tRTM_CHANGE                    = 0x3\n\tRTM_DELADDR                   = 0xd\n\tRTM_DELETE                    = 0x2\n\tRTM_EXPIRE                    = 0xf\n\tRTM_GET                       = 0x4\n\tRTM_GETNEXT                   = 0x11\n\tRTM_IFINFO                    = 0xe\n\tRTM_LOCK                      = 0x8\n\tRTM_LOSING                    = 0x5\n\tRTM_MISS                      = 0x7\n\tRTM_NEWADDR                   = 0xc\n\tRTM_OLDADD                    = 0x9\n\tRTM_OLDDEL                    = 0xa\n\tRTM_REDIRECT                  = 0x6\n\tRTM_RESOLVE                   = 0xb\n\tRTM_RTLOST                    = 0x10\n\tRTM_RTTUNIT                   = 0xf4240\n\tRTM_SAMEADDR                  = 0x12\n\tRTM_SET                       = 0x13\n\tRTM_VERSION                   = 0x2\n\tRTM_VERSION_GR                = 0x4\n\tRTM_VERSION_GR_COMPAT         = 0x3\n\tRTM_VERSION_POLICY            = 0x5\n\tRTM_VERSION_POLICY_EXT        = 0x6\n\tRTM_VERSION_POLICY_PRFN       = 0x7\n\tRTV_EXPIRE                    = 0x4\n\tRTV_HOPCOUNT                  = 0x2\n\tRTV_MTU                       = 0x1\n\tRTV_RPIPE                     = 0x8\n\tRTV_RTT                       = 0x40\n\tRTV_RTTVAR                    = 0x80\n\tRTV_SPIPE                     = 0x10\n\tRTV_SSTHRESH                  = 0x20\n\tRUSAGE_CHILDREN               = -0x1\n\tRUSAGE_SELF                   = 0x0\n\tRUSAGE_THREAD                 = 0x1\n\tSCM_RIGHTS                    = 0x1\n\tSHUT_RD                       = 0x0\n\tSHUT_RDWR                     = 0x2\n\tSHUT_WR                       = 0x1\n\tSIGMAX64                      = 0xff\n\tSIGQUEUE_MAX                  = 0x20\n\tSIOCADDIFVIPA                 = 0x20006942\n\tSIOCADDMTU                    = -0x7ffb9690\n\tSIOCADDMULTI                  = -0x7fdf96cf\n\tSIOCADDNETID                  = -0x7fd796a9\n\tSIOCADDRT                     = -0x7fcf8df6\n\tSIOCAIFADDR                   = -0x7fbf96e6\n\tSIOCATMARK                    = 0x40047307\n\tSIOCDARP                      = -0x7fb396e0\n\tSIOCDELIFVIPA                 = 0x20006943\n\tSIOCDELMTU                    = -0x7ffb968f\n\tSIOCDELMULTI                  = -0x7fdf96ce\n\tSIOCDELPMTU                   = -0x7fd78ff6\n\tSIOCDELRT                     = -0x7fcf8df5\n\tSIOCDIFADDR                   = -0x7fd796e7\n\tSIOCDNETOPT                   = -0x3ffe9680\n\tSIOCDX25XLATE                 = -0x7fd7969b\n\tSIOCFIFADDR                   = -0x7fdf966d\n\tSIOCGARP                      = -0x3fb396da\n\tSIOCGETMTUS                   = 0x2000696f\n\tSIOCGETSGCNT                  = -0x3feb8acc\n\tSIOCGETVIFCNT                 = -0x3feb8acd\n\tSIOCGHIWAT                    = 0x40047301\n\tSIOCGIFADDR                   = -0x3fd796df\n\tSIOCGIFADDRS                  = 0x2000698c\n\tSIOCGIFBAUDRATE               = -0x3fdf9669\n\tSIOCGIFBRDADDR                = -0x3fd796dd\n\tSIOCGIFCONF                   = -0x3ff796bb\n\tSIOCGIFCONFGLOB               = -0x3ff79670\n\tSIOCGIFDSTADDR                = -0x3fd796de\n\tSIOCGIFFLAGS                  = -0x3fd796ef\n\tSIOCGIFGIDLIST                = 0x20006968\n\tSIOCGIFHWADDR                 = -0x3fab966b\n\tSIOCGIFMETRIC                 = -0x3fd796e9\n\tSIOCGIFMTU                    = -0x3fd796aa\n\tSIOCGIFNETMASK                = -0x3fd796db\n\tSIOCGIFOPTIONS                = -0x3fd796d6\n\tSIOCGISNO                     = -0x3fd79695\n\tSIOCGLOADF                    = -0x3ffb967e\n\tSIOCGLOWAT                    = 0x40047303\n\tSIOCGNETOPT                   = -0x3ffe96a5\n\tSIOCGNETOPT1                  = -0x3fdf967f\n\tSIOCGNMTUS                    = 0x2000696e\n\tSIOCGPGRP                     = 0x40047309\n\tSIOCGSIZIFCONF                = 0x4004696a\n\tSIOCGSRCFILTER                = -0x3fe796cb\n\tSIOCGTUNEPHASE                = -0x3ffb9676\n\tSIOCGX25XLATE                 = -0x3fd7969c\n\tSIOCIFATTACH                  = -0x7fdf9699\n\tSIOCIFDETACH                  = -0x7fdf969a\n\tSIOCIFGETPKEY                 = -0x7fdf969b\n\tSIOCIF_ATM_DARP               = -0x7fdf9683\n\tSIOCIF_ATM_DUMPARP            = -0x7fdf9685\n\tSIOCIF_ATM_GARP               = -0x7fdf9682\n\tSIOCIF_ATM_IDLE               = -0x7fdf9686\n\tSIOCIF_ATM_SARP               = -0x7fdf9681\n\tSIOCIF_ATM_SNMPARP            = -0x7fdf9687\n\tSIOCIF_ATM_SVC                = -0x7fdf9684\n\tSIOCIF_ATM_UBR                = -0x7fdf9688\n\tSIOCIF_DEVHEALTH              = -0x7ffb966c\n\tSIOCIF_IB_ARP_INCOMP          = -0x7fdf9677\n\tSIOCIF_IB_ARP_TIMER           = -0x7fdf9678\n\tSIOCIF_IB_CLEAR_PINFO         = -0x3fdf966f\n\tSIOCIF_IB_DEL_ARP             = -0x7fdf967f\n\tSIOCIF_IB_DEL_PINFO           = -0x3fdf9670\n\tSIOCIF_IB_DUMP_ARP            = -0x7fdf9680\n\tSIOCIF_IB_GET_ARP             = -0x7fdf967e\n\tSIOCIF_IB_GET_INFO            = -0x3f879675\n\tSIOCIF_IB_GET_STATS           = -0x3f879672\n\tSIOCIF_IB_NOTIFY_ADDR_REM     = -0x3f87966a\n\tSIOCIF_IB_RESET_STATS         = -0x3f879671\n\tSIOCIF_IB_RESIZE_CQ           = -0x7fdf9679\n\tSIOCIF_IB_SET_ARP             = -0x7fdf967d\n\tSIOCIF_IB_SET_PKEY            = -0x7fdf967c\n\tSIOCIF_IB_SET_PORT            = -0x7fdf967b\n\tSIOCIF_IB_SET_QKEY            = -0x7fdf9676\n\tSIOCIF_IB_SET_QSIZE           = -0x7fdf967a\n\tSIOCLISTIFVIPA                = 0x20006944\n\tSIOCSARP                      = -0x7fb396e2\n\tSIOCSHIWAT                    = 0x80047300\n\tSIOCSIFADDR                   = -0x7fd796f4\n\tSIOCSIFADDRORI                = -0x7fdb9673\n\tSIOCSIFBRDADDR                = -0x7fd796ed\n\tSIOCSIFDSTADDR                = -0x7fd796f2\n\tSIOCSIFFLAGS                  = -0x7fd796f0\n\tSIOCSIFGIDLIST                = 0x20006969\n\tSIOCSIFMETRIC                 = -0x7fd796e8\n\tSIOCSIFMTU                    = -0x7fd796a8\n\tSIOCSIFNETDUMP                = -0x7fd796e4\n\tSIOCSIFNETMASK                = -0x7fd796ea\n\tSIOCSIFOPTIONS                = -0x7fd796d7\n\tSIOCSIFSUBCHAN                = -0x7fd796e5\n\tSIOCSISNO                     = -0x7fd79694\n\tSIOCSLOADF                    = -0x3ffb967d\n\tSIOCSLOWAT                    = 0x80047302\n\tSIOCSNETOPT                   = -0x7ffe96a6\n\tSIOCSPGRP                     = 0x80047308\n\tSIOCSX25XLATE                 = -0x7fd7969d\n\tSOCK_CONN_DGRAM               = 0x6\n\tSOCK_DGRAM                    = 0x2\n\tSOCK_RAW                      = 0x3\n\tSOCK_RDM                      = 0x4\n\tSOCK_SEQPACKET                = 0x5\n\tSOCK_STREAM                   = 0x1\n\tSOL_SOCKET                    = 0xffff\n\tSOMAXCONN                     = 0x400\n\tSO_ACCEPTCONN                 = 0x2\n\tSO_AUDIT                      = 0x8000\n\tSO_BROADCAST                  = 0x20\n\tSO_CKSUMRECV                  = 0x800\n\tSO_DEBUG                      = 0x1\n\tSO_DONTROUTE                  = 0x10\n\tSO_ERROR                      = 0x1007\n\tSO_KEEPALIVE                  = 0x8\n\tSO_KERNACCEPT                 = 0x2000\n\tSO_LINGER                     = 0x80\n\tSO_NOMULTIPATH                = 0x4000\n\tSO_NOREUSEADDR                = 0x1000\n\tSO_OOBINLINE                  = 0x100\n\tSO_PEERID                     = 0x1009\n\tSO_RCVBUF                     = 0x1002\n\tSO_RCVLOWAT                   = 0x1004\n\tSO_RCVTIMEO                   = 0x1006\n\tSO_REUSEADDR                  = 0x4\n\tSO_REUSEPORT                  = 0x200\n\tSO_SNDBUF                     = 0x1001\n\tSO_SNDLOWAT                   = 0x1003\n\tSO_SNDTIMEO                   = 0x1005\n\tSO_TIMESTAMPNS                = 0x100a\n\tSO_TYPE                       = 0x1008\n\tSO_USELOOPBACK                = 0x40\n\tSO_USE_IFBUFS                 = 0x400\n\tS_BANDURG                     = 0x400\n\tS_EMODFMT                     = 0x3c000000\n\tS_ENFMT                       = 0x400\n\tS_ERROR                       = 0x100\n\tS_HANGUP                      = 0x200\n\tS_HIPRI                       = 0x2\n\tS_ICRYPTO                     = 0x80000\n\tS_IEXEC                       = 0x40\n\tS_IFBLK                       = 0x6000\n\tS_IFCHR                       = 0x2000\n\tS_IFDIR                       = 0x4000\n\tS_IFIFO                       = 0x1000\n\tS_IFJOURNAL                   = 0x10000\n\tS_IFLNK                       = 0xa000\n\tS_IFMPX                       = 0x2200\n\tS_IFMT                        = 0xf000\n\tS_IFPDIR                      = 0x4000000\n\tS_IFPSDIR                     = 0x8000000\n\tS_IFPSSDIR                    = 0xc000000\n\tS_IFREG                       = 0x8000\n\tS_IFSOCK                      = 0xc000\n\tS_IFSYSEA                     = 0x30000000\n\tS_INPUT                       = 0x1\n\tS_IREAD                       = 0x100\n\tS_IRGRP                       = 0x20\n\tS_IROTH                       = 0x4\n\tS_IRUSR                       = 0x100\n\tS_IRWXG                       = 0x38\n\tS_IRWXO                       = 0x7\n\tS_IRWXU                       = 0x1c0\n\tS_ISGID                       = 0x400\n\tS_ISUID                       = 0x800\n\tS_ISVTX                       = 0x200\n\tS_ITCB                        = 0x1000000\n\tS_ITP                         = 0x800000\n\tS_IWGRP                       = 0x10\n\tS_IWOTH                       = 0x2\n\tS_IWRITE                      = 0x80\n\tS_IWUSR                       = 0x80\n\tS_IXACL                       = 0x2000000\n\tS_IXATTR                      = 0x40000\n\tS_IXGRP                       = 0x8\n\tS_IXINTERFACE                 = 0x100000\n\tS_IXMOD                       = 0x40000000\n\tS_IXOTH                       = 0x1\n\tS_IXUSR                       = 0x40\n\tS_MSG                         = 0x8\n\tS_OUTPUT                      = 0x4\n\tS_RDBAND                      = 0x20\n\tS_RDNORM                      = 0x10\n\tS_RESERVED1                   = 0x20000\n\tS_RESERVED2                   = 0x200000\n\tS_RESERVED3                   = 0x400000\n\tS_RESERVED4                   = 0x80000000\n\tS_RESFMT1                     = 0x10000000\n\tS_RESFMT10                    = 0x34000000\n\tS_RESFMT11                    = 0x38000000\n\tS_RESFMT12                    = 0x3c000000\n\tS_RESFMT2                     = 0x14000000\n\tS_RESFMT3                     = 0x18000000\n\tS_RESFMT4                     = 0x1c000000\n\tS_RESFMT5                     = 0x20000000\n\tS_RESFMT6                     = 0x24000000\n\tS_RESFMT7                     = 0x28000000\n\tS_RESFMT8                     = 0x2c000000\n\tS_WRBAND                      = 0x80\n\tS_WRNORM                      = 0x40\n\tTAB0                          = 0x0\n\tTAB1                          = 0x400\n\tTAB2                          = 0x800\n\tTAB3                          = 0xc00\n\tTABDLY                        = 0xc00\n\tTCFLSH                        = 0x540c\n\tTCGETA                        = 0x5405\n\tTCGETS                        = 0x5401\n\tTCIFLUSH                      = 0x0\n\tTCIOFF                        = 0x2\n\tTCIOFLUSH                     = 0x2\n\tTCION                         = 0x3\n\tTCOFLUSH                      = 0x1\n\tTCOOFF                        = 0x0\n\tTCOON                         = 0x1\n\tTCP_24DAYS_WORTH_OF_SLOWTICKS = 0x3f4800\n\tTCP_ACLADD                    = 0x23\n\tTCP_ACLBIND                   = 0x26\n\tTCP_ACLCLEAR                  = 0x22\n\tTCP_ACLDEL                    = 0x24\n\tTCP_ACLDENY                   = 0x8\n\tTCP_ACLFLUSH                  = 0x21\n\tTCP_ACLGID                    = 0x1\n\tTCP_ACLLS                     = 0x25\n\tTCP_ACLSUBNET                 = 0x4\n\tTCP_ACLUID                    = 0x2\n\tTCP_CWND_DF                   = 0x16\n\tTCP_CWND_IF                   = 0x15\n\tTCP_DELAY_ACK_FIN             = 0x2\n\tTCP_DELAY_ACK_SYN             = 0x1\n\tTCP_FASTNAME                  = 0x101080a\n\tTCP_KEEPCNT                   = 0x13\n\tTCP_KEEPIDLE                  = 0x11\n\tTCP_KEEPINTVL                 = 0x12\n\tTCP_LSPRIV                    = 0x29\n\tTCP_LUID                      = 0x20\n\tTCP_MAXBURST                  = 0x8\n\tTCP_MAXDF                     = 0x64\n\tTCP_MAXIF                     = 0x64\n\tTCP_MAXSEG                    = 0x2\n\tTCP_MAXWIN                    = 0xffff\n\tTCP_MAXWINDOWSCALE            = 0xe\n\tTCP_MAX_SACK                  = 0x4\n\tTCP_MSS                       = 0x5b4\n\tTCP_NODELAY                   = 0x1\n\tTCP_NODELAYACK                = 0x14\n\tTCP_NOREDUCE_CWND_EXIT_FRXMT  = 0x19\n\tTCP_NOREDUCE_CWND_IN_FRXMT    = 0x18\n\tTCP_NOTENTER_SSTART           = 0x17\n\tTCP_OPT                       = 0x19\n\tTCP_RFC1323                   = 0x4\n\tTCP_SETPRIV                   = 0x27\n\tTCP_STDURG                    = 0x10\n\tTCP_TIMESTAMP_OPTLEN          = 0xc\n\tTCP_UNSETPRIV                 = 0x28\n\tTCSAFLUSH                     = 0x2\n\tTCSBRK                        = 0x5409\n\tTCSETA                        = 0x5406\n\tTCSETAF                       = 0x5408\n\tTCSETAW                       = 0x5407\n\tTCSETS                        = 0x5402\n\tTCSETSF                       = 0x5404\n\tTCSETSW                       = 0x5403\n\tTCXONC                        = 0x540b\n\tTIMER_ABSTIME                 = 0x3e7\n\tTIMER_MAX                     = 0x20\n\tTIOC                          = 0x5400\n\tTIOCCBRK                      = 0x2000747a\n\tTIOCCDTR                      = 0x20007478\n\tTIOCCONS                      = 0x80047462\n\tTIOCEXCL                      = 0x2000740d\n\tTIOCFLUSH                     = 0x80047410\n\tTIOCGETC                      = 0x40067412\n\tTIOCGETD                      = 0x40047400\n\tTIOCGETP                      = 0x40067408\n\tTIOCGLTC                      = 0x40067474\n\tTIOCGPGRP                     = 0x40047477\n\tTIOCGSID                      = 0x40047448\n\tTIOCGSIZE                     = 0x40087468\n\tTIOCGWINSZ                    = 0x40087468\n\tTIOCHPCL                      = 0x20007402\n\tTIOCLBIC                      = 0x8004747e\n\tTIOCLBIS                      = 0x8004747f\n\tTIOCLGET                      = 0x4004747c\n\tTIOCLSET                      = 0x8004747d\n\tTIOCMBIC                      = 0x8004746b\n\tTIOCMBIS                      = 0x8004746c\n\tTIOCMGET                      = 0x4004746a\n\tTIOCMIWAIT                    = 0x80047464\n\tTIOCMODG                      = 0x40047403\n\tTIOCMODS                      = 0x80047404\n\tTIOCMSET                      = 0x8004746d\n\tTIOCM_CAR                     = 0x40\n\tTIOCM_CD                      = 0x40\n\tTIOCM_CTS                     = 0x20\n\tTIOCM_DSR                     = 0x100\n\tTIOCM_DTR                     = 0x2\n\tTIOCM_LE                      = 0x1\n\tTIOCM_RI                      = 0x80\n\tTIOCM_RNG                     = 0x80\n\tTIOCM_RTS                     = 0x4\n\tTIOCM_SR                      = 0x10\n\tTIOCM_ST                      = 0x8\n\tTIOCNOTTY                     = 0x20007471\n\tTIOCNXCL                      = 0x2000740e\n\tTIOCOUTQ                      = 0x40047473\n\tTIOCPKT                       = 0x80047470\n\tTIOCPKT_DATA                  = 0x0\n\tTIOCPKT_DOSTOP                = 0x20\n\tTIOCPKT_FLUSHREAD             = 0x1\n\tTIOCPKT_FLUSHWRITE            = 0x2\n\tTIOCPKT_NOSTOP                = 0x10\n\tTIOCPKT_START                 = 0x8\n\tTIOCPKT_STOP                  = 0x4\n\tTIOCREMOTE                    = 0x80047469\n\tTIOCSBRK                      = 0x2000747b\n\tTIOCSDTR                      = 0x20007479\n\tTIOCSETC                      = 0x80067411\n\tTIOCSETD                      = 0x80047401\n\tTIOCSETN                      = 0x8006740a\n\tTIOCSETP                      = 0x80067409\n\tTIOCSLTC                      = 0x80067475\n\tTIOCSPGRP                     = 0x80047476\n\tTIOCSSIZE                     = 0x80087467\n\tTIOCSTART                     = 0x2000746e\n\tTIOCSTI                       = 0x80017472\n\tTIOCSTOP                      = 0x2000746f\n\tTIOCSWINSZ                    = 0x80087467\n\tTIOCUCNTL                     = 0x80047466\n\tTOSTOP                        = 0x10000\n\tUTIME_NOW                     = -0x2\n\tUTIME_OMIT                    = -0x3\n\tVDISCRD                       = 0xc\n\tVDSUSP                        = 0xa\n\tVEOF                          = 0x4\n\tVEOL                          = 0x5\n\tVEOL2                         = 0x6\n\tVERASE                        = 0x2\n\tVINTR                         = 0x0\n\tVKILL                         = 0x3\n\tVLNEXT                        = 0xe\n\tVMIN                          = 0x4\n\tVQUIT                         = 0x1\n\tVREPRINT                      = 0xb\n\tVSTART                        = 0x7\n\tVSTOP                         = 0x8\n\tVSTRT                         = 0x7\n\tVSUSP                         = 0x9\n\tVT0                           = 0x0\n\tVT1                           = 0x8000\n\tVTDELAY                       = 0x2000\n\tVTDLY                         = 0x8000\n\tVTIME                         = 0x5\n\tVWERSE                        = 0xd\n\tWPARSTART                     = 0x1\n\tWPARSTOP                      = 0x2\n\tWPARTTYNAME                   = \"Global\"\n\tXCASE                         = 0x4\n\tXTABS                         = 0xc00\n\t_FDATAFLUSH                   = 0x2000000000\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x43)\n\tEADDRNOTAVAIL   = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x42)\n\tEAGAIN          = syscall.Errno(0xb)\n\tEALREADY        = syscall.Errno(0x38)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x78)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x75)\n\tECHILD          = syscall.Errno(0xa)\n\tECHRNG          = syscall.Errno(0x25)\n\tECLONEME        = syscall.Errno(0x52)\n\tECONNABORTED    = syscall.Errno(0x48)\n\tECONNREFUSED    = syscall.Errno(0x4f)\n\tECONNRESET      = syscall.Errno(0x49)\n\tECORRUPT        = syscall.Errno(0x59)\n\tEDEADLK         = syscall.Errno(0x2d)\n\tEDESTADDREQ     = syscall.Errno(0x3a)\n\tEDESTADDRREQ    = syscall.Errno(0x3a)\n\tEDIST           = syscall.Errno(0x35)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x58)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFORMAT         = syscall.Errno(0x30)\n\tEHOSTDOWN       = syscall.Errno(0x50)\n\tEHOSTUNREACH    = syscall.Errno(0x51)\n\tEIDRM           = syscall.Errno(0x24)\n\tEILSEQ          = syscall.Errno(0x74)\n\tEINPROGRESS     = syscall.Errno(0x37)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x4b)\n\tEISDIR          = syscall.Errno(0x15)\n\tEL2HLT          = syscall.Errno(0x2c)\n\tEL2NSYNC        = syscall.Errno(0x26)\n\tEL3HLT          = syscall.Errno(0x27)\n\tEL3RST          = syscall.Errno(0x28)\n\tELNRNG          = syscall.Errno(0x29)\n\tELOOP           = syscall.Errno(0x55)\n\tEMEDIA          = syscall.Errno(0x6e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x3b)\n\tEMULTIHOP       = syscall.Errno(0x7d)\n\tENAMETOOLONG    = syscall.Errno(0x56)\n\tENETDOWN        = syscall.Errno(0x45)\n\tENETRESET       = syscall.Errno(0x47)\n\tENETUNREACH     = syscall.Errno(0x46)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x70)\n\tENOBUFS         = syscall.Errno(0x4a)\n\tENOCONNECT      = syscall.Errno(0x32)\n\tENOCSI          = syscall.Errno(0x2b)\n\tENODATA         = syscall.Errno(0x7a)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x31)\n\tENOLINK         = syscall.Errno(0x7e)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x23)\n\tENOPROTOOPT     = syscall.Errno(0x3d)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x76)\n\tENOSTR          = syscall.Errno(0x7b)\n\tENOSYS          = syscall.Errno(0x6d)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x4c)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x11)\n\tENOTREADY       = syscall.Errno(0x2e)\n\tENOTRECOVERABLE = syscall.Errno(0x5e)\n\tENOTRUST        = syscall.Errno(0x72)\n\tENOTSOCK        = syscall.Errno(0x39)\n\tENOTSUP         = syscall.Errno(0x7c)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x40)\n\tEOVERFLOW       = syscall.Errno(0x7f)\n\tEOWNERDEAD      = syscall.Errno(0x5f)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x41)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x53)\n\tEPROTO          = syscall.Errno(0x79)\n\tEPROTONOSUPPORT = syscall.Errno(0x3e)\n\tEPROTOTYPE      = syscall.Errno(0x3c)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x5d)\n\tERESTART        = syscall.Errno(0x52)\n\tEROFS           = syscall.Errno(0x1e)\n\tESAD            = syscall.Errno(0x71)\n\tESHUTDOWN       = syscall.Errno(0x4d)\n\tESOCKTNOSUPPORT = syscall.Errno(0x3f)\n\tESOFT           = syscall.Errno(0x6f)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x34)\n\tESYSERROR       = syscall.Errno(0x5a)\n\tETIME           = syscall.Errno(0x77)\n\tETIMEDOUT       = syscall.Errno(0x4e)\n\tETOOMANYREFS    = syscall.Errno(0x73)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUNATCH         = syscall.Errno(0x2a)\n\tEUSERS          = syscall.Errno(0x54)\n\tEWOULDBLOCK     = syscall.Errno(0xb)\n\tEWRPROTECT      = syscall.Errno(0x2f)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT     = syscall.Signal(0x6)\n\tSIGAIO      = syscall.Signal(0x17)\n\tSIGALRM     = syscall.Signal(0xe)\n\tSIGALRM1    = syscall.Signal(0x26)\n\tSIGBUS      = syscall.Signal(0xa)\n\tSIGCAPI     = syscall.Signal(0x31)\n\tSIGCHLD     = syscall.Signal(0x14)\n\tSIGCLD      = syscall.Signal(0x14)\n\tSIGCONT     = syscall.Signal(0x13)\n\tSIGCPUFAIL  = syscall.Signal(0x3b)\n\tSIGDANGER   = syscall.Signal(0x21)\n\tSIGEMT      = syscall.Signal(0x7)\n\tSIGFPE      = syscall.Signal(0x8)\n\tSIGGRANT    = syscall.Signal(0x3c)\n\tSIGHUP      = syscall.Signal(0x1)\n\tSIGILL      = syscall.Signal(0x4)\n\tSIGINT      = syscall.Signal(0x2)\n\tSIGIO       = syscall.Signal(0x17)\n\tSIGIOINT    = syscall.Signal(0x10)\n\tSIGIOT      = syscall.Signal(0x6)\n\tSIGKAP      = syscall.Signal(0x3c)\n\tSIGKILL     = syscall.Signal(0x9)\n\tSIGLOST     = syscall.Signal(0x6)\n\tSIGMAX      = syscall.Signal(0x3f)\n\tSIGMAX32    = syscall.Signal(0x3f)\n\tSIGMIGRATE  = syscall.Signal(0x23)\n\tSIGMSG      = syscall.Signal(0x1b)\n\tSIGPIPE     = syscall.Signal(0xd)\n\tSIGPOLL     = syscall.Signal(0x17)\n\tSIGPRE      = syscall.Signal(0x24)\n\tSIGPROF     = syscall.Signal(0x20)\n\tSIGPTY      = syscall.Signal(0x17)\n\tSIGPWR      = syscall.Signal(0x1d)\n\tSIGQUIT     = syscall.Signal(0x3)\n\tSIGRECONFIG = syscall.Signal(0x3a)\n\tSIGRETRACT  = syscall.Signal(0x3d)\n\tSIGSAK      = syscall.Signal(0x3f)\n\tSIGSEGV     = syscall.Signal(0xb)\n\tSIGSOUND    = syscall.Signal(0x3e)\n\tSIGSTOP     = syscall.Signal(0x11)\n\tSIGSYS      = syscall.Signal(0xc)\n\tSIGSYSERROR = syscall.Signal(0x30)\n\tSIGTALRM    = syscall.Signal(0x26)\n\tSIGTERM     = syscall.Signal(0xf)\n\tSIGTRAP     = syscall.Signal(0x5)\n\tSIGTSTP     = syscall.Signal(0x12)\n\tSIGTTIN     = syscall.Signal(0x15)\n\tSIGTTOU     = syscall.Signal(0x16)\n\tSIGURG      = syscall.Signal(0x10)\n\tSIGUSR1     = syscall.Signal(0x1e)\n\tSIGUSR2     = syscall.Signal(0x1f)\n\tSIGVIRT     = syscall.Signal(0x25)\n\tSIGVTALRM   = syscall.Signal(0x22)\n\tSIGWAITING  = syscall.Signal(0x27)\n\tSIGWINCH    = syscall.Signal(0x1c)\n\tSIGXCPU     = syscall.Signal(0x18)\n\tSIGXFSZ     = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"not owner\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"I/O error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"arg list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file number\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EWOULDBLOCK\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"not enough space\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"ENOTEMPTY\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"file table overflow\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"not a typewriter\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"ENOMSG\", \"no message of desired type\"},\n\t{36, \"EIDRM\", \"identifier removed\"},\n\t{37, \"ECHRNG\", \"channel number out of range\"},\n\t{38, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{39, \"EL3HLT\", \"level 3 halted\"},\n\t{40, \"EL3RST\", \"level 3 reset\"},\n\t{41, \"ELNRNG\", \"link number out of range\"},\n\t{42, \"EUNATCH\", \"protocol driver not attached\"},\n\t{43, \"ENOCSI\", \"no CSI structure available\"},\n\t{44, \"EL2HLT\", \"level 2 halted\"},\n\t{45, \"EDEADLK\", \"deadlock condition if locked\"},\n\t{46, \"ENOTREADY\", \"device not ready\"},\n\t{47, \"EWRPROTECT\", \"write-protected media\"},\n\t{48, \"EFORMAT\", \"unformatted or incompatible media\"},\n\t{49, \"ENOLCK\", \"no locks available\"},\n\t{50, \"ENOCONNECT\", \"cannot Establish Connection\"},\n\t{52, \"ESTALE\", \"missing file or filesystem\"},\n\t{53, \"EDIST\", \"requests blocked by Administrator\"},\n\t{55, \"EINPROGRESS\", \"operation now in progress\"},\n\t{56, \"EALREADY\", \"operation already in progress\"},\n\t{57, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{58, \"EDESTADDREQ\", \"destination address required\"},\n\t{59, \"EMSGSIZE\", \"message too long\"},\n\t{60, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{61, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{62, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{63, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{64, \"EOPNOTSUPP\", \"operation not supported on socket\"},\n\t{65, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{66, \"EAFNOSUPPORT\", \"addr family not supported by protocol\"},\n\t{67, \"EADDRINUSE\", \"address already in use\"},\n\t{68, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{69, \"ENETDOWN\", \"network is down\"},\n\t{70, \"ENETUNREACH\", \"network is unreachable\"},\n\t{71, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{72, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{73, \"ECONNRESET\", \"connection reset by peer\"},\n\t{74, \"ENOBUFS\", \"no buffer space available\"},\n\t{75, \"EISCONN\", \"socket is already connected\"},\n\t{76, \"ENOTCONN\", \"socket is not connected\"},\n\t{77, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{78, \"ETIMEDOUT\", \"connection timed out\"},\n\t{79, \"ECONNREFUSED\", \"connection refused\"},\n\t{80, \"EHOSTDOWN\", \"host is down\"},\n\t{81, \"EHOSTUNREACH\", \"no route to host\"},\n\t{82, \"ERESTART\", \"restart the system call\"},\n\t{83, \"EPROCLIM\", \"too many processes\"},\n\t{84, \"EUSERS\", \"too many users\"},\n\t{85, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{86, \"ENAMETOOLONG\", \"file name too long\"},\n\t{88, \"EDQUOT\", \"disk quota exceeded\"},\n\t{89, \"ECORRUPT\", \"invalid file system control data detected\"},\n\t{90, \"ESYSERROR\", \"for future use \"},\n\t{93, \"EREMOTE\", \"item is not local to host\"},\n\t{94, \"ENOTRECOVERABLE\", \"state not recoverable \"},\n\t{95, \"EOWNERDEAD\", \"previous owner died \"},\n\t{109, \"ENOSYS\", \"function not implemented\"},\n\t{110, \"EMEDIA\", \"media surface error\"},\n\t{111, \"ESOFT\", \"I/O completed, but needs relocation\"},\n\t{112, \"ENOATTR\", \"no attribute found\"},\n\t{113, \"ESAD\", \"security Authentication Denied\"},\n\t{114, \"ENOTRUST\", \"not a Trusted Program\"},\n\t{115, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{116, \"EILSEQ\", \"invalid wide character\"},\n\t{117, \"ECANCELED\", \"asynchronous I/O cancelled\"},\n\t{118, \"ENOSR\", \"out of STREAMS resources\"},\n\t{119, \"ETIME\", \"system call timed out\"},\n\t{120, \"EBADMSG\", \"next message has wrong type\"},\n\t{121, \"EPROTO\", \"error in protocol\"},\n\t{122, \"ENODATA\", \"no message on stream head read q\"},\n\t{123, \"ENOSTR\", \"fd not associated with a stream\"},\n\t{124, \"ENOTSUP\", \"unsupported attribute value\"},\n\t{125, \"EMULTIHOP\", \"multihop is not allowed\"},\n\t{126, \"ENOLINK\", \"the server link has been severed\"},\n\t{127, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"IOT/Abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"stopped (signal)\"},\n\t{18, \"SIGTSTP\", \"stopped\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible/complete\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{27, \"SIGMSG\", \"input device data\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGPWR\", \"power-failure\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGPROF\", \"profiling timer expired\"},\n\t{33, \"SIGDANGER\", \"paging space low\"},\n\t{34, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{35, \"SIGMIGRATE\", \"signal 35\"},\n\t{36, \"SIGPRE\", \"signal 36\"},\n\t{37, \"SIGVIRT\", \"signal 37\"},\n\t{38, \"SIGTALRM\", \"signal 38\"},\n\t{39, \"SIGWAITING\", \"signal 39\"},\n\t{48, \"SIGSYSERROR\", \"signal 48\"},\n\t{49, \"SIGCAPI\", \"signal 49\"},\n\t{58, \"SIGRECONFIG\", \"signal 58\"},\n\t{59, \"SIGCPUFAIL\", \"CPU Failure Predicted\"},\n\t{60, \"SIGKAP\", \"monitor mode granted\"},\n\t{61, \"SIGRETRACT\", \"monitor mode retracted\"},\n\t{62, \"SIGSOUND\", \"sound completed\"},\n\t{63, \"SIGSAK\", \"secure attention\"},\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go",
    "content": "// mkerrors.sh -maix64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc64 && aix\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -maix64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                  = 0x10\n\tAF_BYPASS                     = 0x19\n\tAF_CCITT                      = 0xa\n\tAF_CHAOS                      = 0x5\n\tAF_DATAKIT                    = 0x9\n\tAF_DECnet                     = 0xc\n\tAF_DLI                        = 0xd\n\tAF_ECMA                       = 0x8\n\tAF_HYLINK                     = 0xf\n\tAF_IMPLINK                    = 0x3\n\tAF_INET                       = 0x2\n\tAF_INET6                      = 0x18\n\tAF_INTF                       = 0x14\n\tAF_ISO                        = 0x7\n\tAF_LAT                        = 0xe\n\tAF_LINK                       = 0x12\n\tAF_LOCAL                      = 0x1\n\tAF_MAX                        = 0x1e\n\tAF_NDD                        = 0x17\n\tAF_NETWARE                    = 0x16\n\tAF_NS                         = 0x6\n\tAF_OSI                        = 0x7\n\tAF_PUP                        = 0x4\n\tAF_RIF                        = 0x15\n\tAF_ROUTE                      = 0x11\n\tAF_SNA                        = 0xb\n\tAF_UNIX                       = 0x1\n\tAF_UNSPEC                     = 0x0\n\tALTWERASE                     = 0x400000\n\tARPHRD_802_3                  = 0x6\n\tARPHRD_802_5                  = 0x6\n\tARPHRD_ETHER                  = 0x1\n\tARPHRD_FDDI                   = 0x1\n\tB0                            = 0x0\n\tB110                          = 0x3\n\tB1200                         = 0x9\n\tB134                          = 0x4\n\tB150                          = 0x5\n\tB1800                         = 0xa\n\tB19200                        = 0xe\n\tB200                          = 0x6\n\tB2400                         = 0xb\n\tB300                          = 0x7\n\tB38400                        = 0xf\n\tB4800                         = 0xc\n\tB50                           = 0x1\n\tB600                          = 0x8\n\tB75                           = 0x2\n\tB9600                         = 0xd\n\tBRKINT                        = 0x2\n\tBS0                           = 0x0\n\tBS1                           = 0x1000\n\tBSDLY                         = 0x1000\n\tCAP_AACCT                     = 0x6\n\tCAP_ARM_APPLICATION           = 0x5\n\tCAP_BYPASS_RAC_VMM            = 0x3\n\tCAP_CLEAR                     = 0x0\n\tCAP_CREDENTIALS               = 0x7\n\tCAP_EFFECTIVE                 = 0x1\n\tCAP_EWLM_AGENT                = 0x4\n\tCAP_INHERITABLE               = 0x2\n\tCAP_MAXIMUM                   = 0x7\n\tCAP_NUMA_ATTACH               = 0x2\n\tCAP_PERMITTED                 = 0x3\n\tCAP_PROPAGATE                 = 0x1\n\tCAP_PROPOGATE                 = 0x1\n\tCAP_SET                       = 0x1\n\tCBAUD                         = 0xf\n\tCFLUSH                        = 0xf\n\tCIBAUD                        = 0xf0000\n\tCLOCAL                        = 0x800\n\tCLOCK_MONOTONIC               = 0xa\n\tCLOCK_PROCESS_CPUTIME_ID      = 0xb\n\tCLOCK_REALTIME                = 0x9\n\tCLOCK_THREAD_CPUTIME_ID       = 0xc\n\tCR0                           = 0x0\n\tCR1                           = 0x100\n\tCR2                           = 0x200\n\tCR3                           = 0x300\n\tCRDLY                         = 0x300\n\tCREAD                         = 0x80\n\tCS5                           = 0x0\n\tCS6                           = 0x10\n\tCS7                           = 0x20\n\tCS8                           = 0x30\n\tCSIOCGIFCONF                  = -0x3fef96dc\n\tCSIZE                         = 0x30\n\tCSMAP_DIR                     = \"/usr/lib/nls/csmap/\"\n\tCSTART                        = '\\021'\n\tCSTOP                         = '\\023'\n\tCSTOPB                        = 0x40\n\tCSUSP                         = 0x1a\n\tECHO                          = 0x8\n\tECHOCTL                       = 0x20000\n\tECHOE                         = 0x10\n\tECHOK                         = 0x20\n\tECHOKE                        = 0x80000\n\tECHONL                        = 0x40\n\tECHOPRT                       = 0x40000\n\tECH_ICMPID                    = 0x2\n\tETHERNET_CSMACD               = 0x6\n\tEVENP                         = 0x80\n\tEXCONTINUE                    = 0x0\n\tEXDLOK                        = 0x3\n\tEXIO                          = 0x2\n\tEXPGIO                        = 0x0\n\tEXRESUME                      = 0x2\n\tEXRETURN                      = 0x1\n\tEXSIG                         = 0x4\n\tEXTA                          = 0xe\n\tEXTB                          = 0xf\n\tEXTRAP                        = 0x1\n\tEYEC_RTENTRYA                 = 0x257274656e747241\n\tEYEC_RTENTRYF                 = 0x257274656e747246\n\tE_ACC                         = 0x0\n\tFD_CLOEXEC                    = 0x1\n\tFD_SETSIZE                    = 0xfffe\n\tFF0                           = 0x0\n\tFF1                           = 0x2000\n\tFFDLY                         = 0x2000\n\tFLUSHBAND                     = 0x40\n\tFLUSHLOW                      = 0x8\n\tFLUSHO                        = 0x100000\n\tFLUSHR                        = 0x1\n\tFLUSHRW                       = 0x3\n\tFLUSHW                        = 0x2\n\tF_CLOSEM                      = 0xa\n\tF_DUP2FD                      = 0xe\n\tF_DUPFD                       = 0x0\n\tF_GETFD                       = 0x1\n\tF_GETFL                       = 0x3\n\tF_GETLK                       = 0xb\n\tF_GETLK64                     = 0xb\n\tF_GETOWN                      = 0x8\n\tF_LOCK                        = 0x1\n\tF_OK                          = 0x0\n\tF_RDLCK                       = 0x1\n\tF_SETFD                       = 0x2\n\tF_SETFL                       = 0x4\n\tF_SETLK                       = 0xc\n\tF_SETLK64                     = 0xc\n\tF_SETLKW                      = 0xd\n\tF_SETLKW64                    = 0xd\n\tF_SETOWN                      = 0x9\n\tF_TEST                        = 0x3\n\tF_TLOCK                       = 0x2\n\tF_TSTLK                       = 0xf\n\tF_ULOCK                       = 0x0\n\tF_UNLCK                       = 0x3\n\tF_WRLCK                       = 0x2\n\tHUPCL                         = 0x400\n\tIBSHIFT                       = 0x10\n\tICANON                        = 0x2\n\tICMP6_FILTER                  = 0x26\n\tICMP6_SEC_SEND_DEL            = 0x46\n\tICMP6_SEC_SEND_GET            = 0x47\n\tICMP6_SEC_SEND_SET            = 0x44\n\tICMP6_SEC_SEND_SET_CGA_ADDR   = 0x45\n\tICRNL                         = 0x100\n\tIEXTEN                        = 0x200000\n\tIFA_FIRSTALIAS                = 0x2000\n\tIFA_ROUTE                     = 0x1\n\tIFF_64BIT                     = 0x4000000\n\tIFF_ALLCAST                   = 0x20000\n\tIFF_ALLMULTI                  = 0x200\n\tIFF_BPF                       = 0x8000000\n\tIFF_BRIDGE                    = 0x40000\n\tIFF_BROADCAST                 = 0x2\n\tIFF_CANTCHANGE                = 0x80c52\n\tIFF_CHECKSUM_OFFLOAD          = 0x10000000\n\tIFF_D1                        = 0x8000\n\tIFF_D2                        = 0x4000\n\tIFF_D3                        = 0x2000\n\tIFF_D4                        = 0x1000\n\tIFF_DEBUG                     = 0x4\n\tIFF_DEVHEALTH                 = 0x4000\n\tIFF_DO_HW_LOOPBACK            = 0x10000\n\tIFF_GROUP_ROUTING             = 0x2000000\n\tIFF_IFBUFMGT                  = 0x800000\n\tIFF_LINK0                     = 0x100000\n\tIFF_LINK1                     = 0x200000\n\tIFF_LINK2                     = 0x400000\n\tIFF_LOOPBACK                  = 0x8\n\tIFF_MULTICAST                 = 0x80000\n\tIFF_NOARP                     = 0x80\n\tIFF_NOECHO                    = 0x800\n\tIFF_NOTRAILERS                = 0x20\n\tIFF_OACTIVE                   = 0x400\n\tIFF_POINTOPOINT               = 0x10\n\tIFF_PROMISC                   = 0x100\n\tIFF_PSEG                      = 0x40000000\n\tIFF_RUNNING                   = 0x40\n\tIFF_SIMPLEX                   = 0x800\n\tIFF_SNAP                      = 0x8000\n\tIFF_TCP_DISABLE_CKSUM         = 0x20000000\n\tIFF_TCP_NOCKSUM               = 0x1000000\n\tIFF_UP                        = 0x1\n\tIFF_VIPA                      = 0x80000000\n\tIFNAMSIZ                      = 0x10\n\tIFO_FLUSH                     = 0x1\n\tIFT_1822                      = 0x2\n\tIFT_AAL5                      = 0x31\n\tIFT_ARCNET                    = 0x23\n\tIFT_ARCNETPLUS                = 0x24\n\tIFT_ATM                       = 0x25\n\tIFT_CEPT                      = 0x13\n\tIFT_CLUSTER                   = 0x3e\n\tIFT_DS3                       = 0x1e\n\tIFT_EON                       = 0x19\n\tIFT_ETHER                     = 0x6\n\tIFT_FCS                       = 0x3a\n\tIFT_FDDI                      = 0xf\n\tIFT_FRELAY                    = 0x20\n\tIFT_FRELAYDCE                 = 0x2c\n\tIFT_GIFTUNNEL                 = 0x3c\n\tIFT_HDH1822                   = 0x3\n\tIFT_HF                        = 0x3d\n\tIFT_HIPPI                     = 0x2f\n\tIFT_HSSI                      = 0x2e\n\tIFT_HY                        = 0xe\n\tIFT_IB                        = 0xc7\n\tIFT_ISDNBASIC                 = 0x14\n\tIFT_ISDNPRIMARY               = 0x15\n\tIFT_ISO88022LLC               = 0x29\n\tIFT_ISO88023                  = 0x7\n\tIFT_ISO88024                  = 0x8\n\tIFT_ISO88025                  = 0x9\n\tIFT_ISO88026                  = 0xa\n\tIFT_LAPB                      = 0x10\n\tIFT_LOCALTALK                 = 0x2a\n\tIFT_LOOP                      = 0x18\n\tIFT_MIOX25                    = 0x26\n\tIFT_MODEM                     = 0x30\n\tIFT_NSIP                      = 0x1b\n\tIFT_OTHER                     = 0x1\n\tIFT_P10                       = 0xc\n\tIFT_P80                       = 0xd\n\tIFT_PARA                      = 0x22\n\tIFT_PPP                       = 0x17\n\tIFT_PROPMUX                   = 0x36\n\tIFT_PROPVIRTUAL               = 0x35\n\tIFT_PTPSERIAL                 = 0x16\n\tIFT_RS232                     = 0x21\n\tIFT_SDLC                      = 0x11\n\tIFT_SIP                       = 0x1f\n\tIFT_SLIP                      = 0x1c\n\tIFT_SMDSDXI                   = 0x2b\n\tIFT_SMDSICIP                  = 0x34\n\tIFT_SN                        = 0x38\n\tIFT_SONET                     = 0x27\n\tIFT_SONETPATH                 = 0x32\n\tIFT_SONETVT                   = 0x33\n\tIFT_SP                        = 0x39\n\tIFT_STARLAN                   = 0xb\n\tIFT_T1                        = 0x12\n\tIFT_TUNNEL                    = 0x3b\n\tIFT_ULTRA                     = 0x1d\n\tIFT_V35                       = 0x2d\n\tIFT_VIPA                      = 0x37\n\tIFT_X25                       = 0x5\n\tIFT_X25DDN                    = 0x4\n\tIFT_X25PLE                    = 0x28\n\tIFT_XETHER                    = 0x1a\n\tIGNBRK                        = 0x1\n\tIGNCR                         = 0x80\n\tIGNPAR                        = 0x4\n\tIMAXBEL                       = 0x10000\n\tINLCR                         = 0x40\n\tINPCK                         = 0x10\n\tIN_CLASSA_HOST                = 0xffffff\n\tIN_CLASSA_MAX                 = 0x80\n\tIN_CLASSA_NET                 = 0xff000000\n\tIN_CLASSA_NSHIFT              = 0x18\n\tIN_CLASSB_HOST                = 0xffff\n\tIN_CLASSB_MAX                 = 0x10000\n\tIN_CLASSB_NET                 = 0xffff0000\n\tIN_CLASSB_NSHIFT              = 0x10\n\tIN_CLASSC_HOST                = 0xff\n\tIN_CLASSC_NET                 = 0xffffff00\n\tIN_CLASSC_NSHIFT              = 0x8\n\tIN_CLASSD_HOST                = 0xfffffff\n\tIN_CLASSD_NET                 = 0xf0000000\n\tIN_CLASSD_NSHIFT              = 0x1c\n\tIN_LOOPBACKNET                = 0x7f\n\tIN_USE                        = 0x1\n\tIPPROTO_AH                    = 0x33\n\tIPPROTO_BIP                   = 0x53\n\tIPPROTO_DSTOPTS               = 0x3c\n\tIPPROTO_EGP                   = 0x8\n\tIPPROTO_EON                   = 0x50\n\tIPPROTO_ESP                   = 0x32\n\tIPPROTO_FRAGMENT              = 0x2c\n\tIPPROTO_GGP                   = 0x3\n\tIPPROTO_GIF                   = 0x8c\n\tIPPROTO_GRE                   = 0x2f\n\tIPPROTO_HOPOPTS               = 0x0\n\tIPPROTO_ICMP                  = 0x1\n\tIPPROTO_ICMPV6                = 0x3a\n\tIPPROTO_IDP                   = 0x16\n\tIPPROTO_IGMP                  = 0x2\n\tIPPROTO_IP                    = 0x0\n\tIPPROTO_IPIP                  = 0x4\n\tIPPROTO_IPV6                  = 0x29\n\tIPPROTO_LOCAL                 = 0x3f\n\tIPPROTO_MAX                   = 0x100\n\tIPPROTO_MH                    = 0x87\n\tIPPROTO_NONE                  = 0x3b\n\tIPPROTO_PUP                   = 0xc\n\tIPPROTO_QOS                   = 0x2d\n\tIPPROTO_RAW                   = 0xff\n\tIPPROTO_ROUTING               = 0x2b\n\tIPPROTO_RSVP                  = 0x2e\n\tIPPROTO_SCTP                  = 0x84\n\tIPPROTO_TCP                   = 0x6\n\tIPPROTO_TP                    = 0x1d\n\tIPPROTO_UDP                   = 0x11\n\tIPV6_ADDRFORM                 = 0x16\n\tIPV6_ADDR_PREFERENCES         = 0x4a\n\tIPV6_ADD_MEMBERSHIP           = 0xc\n\tIPV6_AIXRAWSOCKET             = 0x39\n\tIPV6_CHECKSUM                 = 0x27\n\tIPV6_DONTFRAG                 = 0x2d\n\tIPV6_DROP_MEMBERSHIP          = 0xd\n\tIPV6_DSTOPTS                  = 0x36\n\tIPV6_FLOWINFO_FLOWLABEL       = 0xffffff\n\tIPV6_FLOWINFO_PRIFLOW         = 0xfffffff\n\tIPV6_FLOWINFO_PRIORITY        = 0xf000000\n\tIPV6_FLOWINFO_SRFLAG          = 0x10000000\n\tIPV6_FLOWINFO_VERSION         = 0xf0000000\n\tIPV6_HOPLIMIT                 = 0x28\n\tIPV6_HOPOPTS                  = 0x34\n\tIPV6_JOIN_GROUP               = 0xc\n\tIPV6_LEAVE_GROUP              = 0xd\n\tIPV6_MIPDSTOPTS               = 0x36\n\tIPV6_MULTICAST_HOPS           = 0xa\n\tIPV6_MULTICAST_IF             = 0x9\n\tIPV6_MULTICAST_LOOP           = 0xb\n\tIPV6_NEXTHOP                  = 0x30\n\tIPV6_NOPROBE                  = 0x1c\n\tIPV6_PATHMTU                  = 0x2e\n\tIPV6_PKTINFO                  = 0x21\n\tIPV6_PKTOPTIONS               = 0x24\n\tIPV6_PRIORITY_10              = 0xa000000\n\tIPV6_PRIORITY_11              = 0xb000000\n\tIPV6_PRIORITY_12              = 0xc000000\n\tIPV6_PRIORITY_13              = 0xd000000\n\tIPV6_PRIORITY_14              = 0xe000000\n\tIPV6_PRIORITY_15              = 0xf000000\n\tIPV6_PRIORITY_8               = 0x8000000\n\tIPV6_PRIORITY_9               = 0x9000000\n\tIPV6_PRIORITY_BULK            = 0x4000000\n\tIPV6_PRIORITY_CONTROL         = 0x7000000\n\tIPV6_PRIORITY_FILLER          = 0x1000000\n\tIPV6_PRIORITY_INTERACTIVE     = 0x6000000\n\tIPV6_PRIORITY_RESERVED1       = 0x3000000\n\tIPV6_PRIORITY_RESERVED2       = 0x5000000\n\tIPV6_PRIORITY_UNATTENDED      = 0x2000000\n\tIPV6_PRIORITY_UNCHARACTERIZED = 0x0\n\tIPV6_RECVDSTOPTS              = 0x38\n\tIPV6_RECVHOPLIMIT             = 0x29\n\tIPV6_RECVHOPOPTS              = 0x35\n\tIPV6_RECVHOPS                 = 0x22\n\tIPV6_RECVIF                   = 0x1e\n\tIPV6_RECVPATHMTU              = 0x2f\n\tIPV6_RECVPKTINFO              = 0x23\n\tIPV6_RECVRTHDR                = 0x33\n\tIPV6_RECVSRCRT                = 0x1d\n\tIPV6_RECVTCLASS               = 0x2a\n\tIPV6_RTHDR                    = 0x32\n\tIPV6_RTHDRDSTOPTS             = 0x37\n\tIPV6_RTHDR_TYPE_0             = 0x0\n\tIPV6_RTHDR_TYPE_2             = 0x2\n\tIPV6_SENDIF                   = 0x1f\n\tIPV6_SRFLAG_LOOSE             = 0x0\n\tIPV6_SRFLAG_STRICT            = 0x10000000\n\tIPV6_TCLASS                   = 0x2b\n\tIPV6_TOKEN_LENGTH             = 0x40\n\tIPV6_UNICAST_HOPS             = 0x4\n\tIPV6_USE_MIN_MTU              = 0x2c\n\tIPV6_V6ONLY                   = 0x25\n\tIPV6_VERSION                  = 0x60000000\n\tIP_ADDRFORM                   = 0x16\n\tIP_ADD_MEMBERSHIP             = 0xc\n\tIP_ADD_SOURCE_MEMBERSHIP      = 0x3c\n\tIP_BLOCK_SOURCE               = 0x3a\n\tIP_BROADCAST_IF               = 0x10\n\tIP_CACHE_LINE_SIZE            = 0x80\n\tIP_DEFAULT_MULTICAST_LOOP     = 0x1\n\tIP_DEFAULT_MULTICAST_TTL      = 0x1\n\tIP_DF                         = 0x4000\n\tIP_DHCPMODE                   = 0x11\n\tIP_DONTFRAG                   = 0x19\n\tIP_DROP_MEMBERSHIP            = 0xd\n\tIP_DROP_SOURCE_MEMBERSHIP     = 0x3d\n\tIP_FINDPMTU                   = 0x1a\n\tIP_HDRINCL                    = 0x2\n\tIP_INC_MEMBERSHIPS            = 0x14\n\tIP_INIT_MEMBERSHIP            = 0x14\n\tIP_MAXPACKET                  = 0xffff\n\tIP_MF                         = 0x2000\n\tIP_MSS                        = 0x240\n\tIP_MULTICAST_HOPS             = 0xa\n\tIP_MULTICAST_IF               = 0x9\n\tIP_MULTICAST_LOOP             = 0xb\n\tIP_MULTICAST_TTL              = 0xa\n\tIP_OPT                        = 0x1b\n\tIP_OPTIONS                    = 0x1\n\tIP_PMTUAGE                    = 0x1b\n\tIP_RECVDSTADDR                = 0x7\n\tIP_RECVIF                     = 0x14\n\tIP_RECVIFINFO                 = 0xf\n\tIP_RECVINTERFACE              = 0x20\n\tIP_RECVMACHDR                 = 0xe\n\tIP_RECVOPTS                   = 0x5\n\tIP_RECVRETOPTS                = 0x6\n\tIP_RECVTTL                    = 0x22\n\tIP_RETOPTS                    = 0x8\n\tIP_SOURCE_FILTER              = 0x48\n\tIP_TOS                        = 0x3\n\tIP_TTL                        = 0x4\n\tIP_UNBLOCK_SOURCE             = 0x3b\n\tIP_UNICAST_HOPS               = 0x4\n\tISIG                          = 0x1\n\tISTRIP                        = 0x20\n\tIUCLC                         = 0x800\n\tIXANY                         = 0x1000\n\tIXOFF                         = 0x400\n\tIXON                          = 0x200\n\tI_FLUSH                       = 0x20005305\n\tLNOFLSH                       = 0x8000\n\tLOCK_EX                       = 0x2\n\tLOCK_NB                       = 0x4\n\tLOCK_SH                       = 0x1\n\tLOCK_UN                       = 0x8\n\tMADV_DONTNEED                 = 0x4\n\tMADV_NORMAL                   = 0x0\n\tMADV_RANDOM                   = 0x1\n\tMADV_SEQUENTIAL               = 0x2\n\tMADV_SPACEAVAIL               = 0x5\n\tMADV_WILLNEED                 = 0x3\n\tMAP_ANON                      = 0x10\n\tMAP_ANONYMOUS                 = 0x10\n\tMAP_FILE                      = 0x0\n\tMAP_FIXED                     = 0x100\n\tMAP_PRIVATE                   = 0x2\n\tMAP_SHARED                    = 0x1\n\tMAP_TYPE                      = 0xf0\n\tMAP_VARIABLE                  = 0x0\n\tMCAST_BLOCK_SOURCE            = 0x40\n\tMCAST_EXCLUDE                 = 0x2\n\tMCAST_INCLUDE                 = 0x1\n\tMCAST_JOIN_GROUP              = 0x3e\n\tMCAST_JOIN_SOURCE_GROUP       = 0x42\n\tMCAST_LEAVE_GROUP             = 0x3f\n\tMCAST_LEAVE_SOURCE_GROUP      = 0x43\n\tMCAST_SOURCE_FILTER           = 0x49\n\tMCAST_UNBLOCK_SOURCE          = 0x41\n\tMCL_CURRENT                   = 0x100\n\tMCL_FUTURE                    = 0x200\n\tMSG_ANY                       = 0x4\n\tMSG_ARGEXT                    = 0x400\n\tMSG_BAND                      = 0x2\n\tMSG_COMPAT                    = 0x8000\n\tMSG_CTRUNC                    = 0x20\n\tMSG_DONTROUTE                 = 0x4\n\tMSG_EOR                       = 0x8\n\tMSG_HIPRI                     = 0x1\n\tMSG_MAXIOVLEN                 = 0x10\n\tMSG_MPEG2                     = 0x80\n\tMSG_NONBLOCK                  = 0x4000\n\tMSG_NOSIGNAL                  = 0x100\n\tMSG_OOB                       = 0x1\n\tMSG_PEEK                      = 0x2\n\tMSG_TRUNC                     = 0x10\n\tMSG_WAITALL                   = 0x40\n\tMSG_WAITFORONE                = 0x200\n\tMS_ASYNC                      = 0x10\n\tMS_EINTR                      = 0x80\n\tMS_INVALIDATE                 = 0x40\n\tMS_PER_SEC                    = 0x3e8\n\tMS_SYNC                       = 0x20\n\tNFDBITS                       = 0x40\n\tNL0                           = 0x0\n\tNL1                           = 0x4000\n\tNL2                           = 0x8000\n\tNL3                           = 0xc000\n\tNLDLY                         = 0x4000\n\tNOFLSH                        = 0x80\n\tNOFLUSH                       = 0x80000000\n\tOCRNL                         = 0x8\n\tOFDEL                         = 0x80\n\tOFILL                         = 0x40\n\tOLCUC                         = 0x2\n\tONLCR                         = 0x4\n\tONLRET                        = 0x20\n\tONOCR                         = 0x10\n\tONOEOT                        = 0x80000\n\tOPOST                         = 0x1\n\tOXTABS                        = 0x40000\n\tO_ACCMODE                     = 0x23\n\tO_APPEND                      = 0x8\n\tO_CIO                         = 0x80\n\tO_CIOR                        = 0x800000000\n\tO_CLOEXEC                     = 0x800000\n\tO_CREAT                       = 0x100\n\tO_DEFER                       = 0x2000\n\tO_DELAY                       = 0x4000\n\tO_DIRECT                      = 0x8000000\n\tO_DIRECTORY                   = 0x80000\n\tO_DSYNC                       = 0x400000\n\tO_EFSOFF                      = 0x400000000\n\tO_EFSON                       = 0x200000000\n\tO_EXCL                        = 0x400\n\tO_EXEC                        = 0x20\n\tO_LARGEFILE                   = 0x4000000\n\tO_NDELAY                      = 0x8000\n\tO_NOCACHE                     = 0x100000\n\tO_NOCTTY                      = 0x800\n\tO_NOFOLLOW                    = 0x1000000\n\tO_NONBLOCK                    = 0x4\n\tO_NONE                        = 0x3\n\tO_NSHARE                      = 0x10000\n\tO_RAW                         = 0x100000000\n\tO_RDONLY                      = 0x0\n\tO_RDWR                        = 0x2\n\tO_RSHARE                      = 0x1000\n\tO_RSYNC                       = 0x200000\n\tO_SEARCH                      = 0x20\n\tO_SNAPSHOT                    = 0x40\n\tO_SYNC                        = 0x10\n\tO_TRUNC                       = 0x200\n\tO_TTY_INIT                    = 0x0\n\tO_WRONLY                      = 0x1\n\tPARENB                        = 0x100\n\tPAREXT                        = 0x100000\n\tPARMRK                        = 0x8\n\tPARODD                        = 0x200\n\tPENDIN                        = 0x20000000\n\tPRIO_PGRP                     = 0x1\n\tPRIO_PROCESS                  = 0x0\n\tPRIO_USER                     = 0x2\n\tPROT_EXEC                     = 0x4\n\tPROT_NONE                     = 0x0\n\tPROT_READ                     = 0x1\n\tPROT_WRITE                    = 0x2\n\tPR_64BIT                      = 0x20\n\tPR_ADDR                       = 0x2\n\tPR_ARGEXT                     = 0x400\n\tPR_ATOMIC                     = 0x1\n\tPR_CONNREQUIRED               = 0x4\n\tPR_FASTHZ                     = 0x5\n\tPR_INP                        = 0x40\n\tPR_INTRLEVEL                  = 0x8000\n\tPR_MLS                        = 0x100\n\tPR_MLS_1_LABEL                = 0x200\n\tPR_NOEOR                      = 0x4000\n\tPR_RIGHTS                     = 0x10\n\tPR_SLOWHZ                     = 0x2\n\tPR_WANTRCVD                   = 0x8\n\tRLIMIT_AS                     = 0x6\n\tRLIMIT_CORE                   = 0x4\n\tRLIMIT_CPU                    = 0x0\n\tRLIMIT_DATA                   = 0x2\n\tRLIMIT_FSIZE                  = 0x1\n\tRLIMIT_NOFILE                 = 0x7\n\tRLIMIT_NPROC                  = 0x9\n\tRLIMIT_RSS                    = 0x5\n\tRLIMIT_STACK                  = 0x3\n\tRLIM_INFINITY                 = 0x7fffffffffffffff\n\tRTAX_AUTHOR                   = 0x6\n\tRTAX_BRD                      = 0x7\n\tRTAX_DST                      = 0x0\n\tRTAX_GATEWAY                  = 0x1\n\tRTAX_GENMASK                  = 0x3\n\tRTAX_IFA                      = 0x5\n\tRTAX_IFP                      = 0x4\n\tRTAX_MAX                      = 0x8\n\tRTAX_NETMASK                  = 0x2\n\tRTA_AUTHOR                    = 0x40\n\tRTA_BRD                       = 0x80\n\tRTA_DOWNSTREAM                = 0x100\n\tRTA_DST                       = 0x1\n\tRTA_GATEWAY                   = 0x2\n\tRTA_GENMASK                   = 0x8\n\tRTA_IFA                       = 0x20\n\tRTA_IFP                       = 0x10\n\tRTA_NETMASK                   = 0x4\n\tRTC_IA64                      = 0x3\n\tRTC_POWER                     = 0x1\n\tRTC_POWER_PC                  = 0x2\n\tRTF_ACTIVE_DGD                = 0x1000000\n\tRTF_BCE                       = 0x80000\n\tRTF_BLACKHOLE                 = 0x1000\n\tRTF_BROADCAST                 = 0x400000\n\tRTF_BUL                       = 0x2000\n\tRTF_CLONE                     = 0x10000\n\tRTF_CLONED                    = 0x20000\n\tRTF_CLONING                   = 0x100\n\tRTF_DONE                      = 0x40\n\tRTF_DYNAMIC                   = 0x10\n\tRTF_FREE_IN_PROG              = 0x4000000\n\tRTF_GATEWAY                   = 0x2\n\tRTF_HOST                      = 0x4\n\tRTF_LLINFO                    = 0x400\n\tRTF_LOCAL                     = 0x200000\n\tRTF_MASK                      = 0x80\n\tRTF_MODIFIED                  = 0x20\n\tRTF_MULTICAST                 = 0x800000\n\tRTF_PERMANENT6                = 0x8000000\n\tRTF_PINNED                    = 0x100000\n\tRTF_PROTO1                    = 0x8000\n\tRTF_PROTO2                    = 0x4000\n\tRTF_PROTO3                    = 0x40000\n\tRTF_REJECT                    = 0x8\n\tRTF_SMALLMTU                  = 0x40000\n\tRTF_STATIC                    = 0x800\n\tRTF_STOPSRCH                  = 0x2000000\n\tRTF_UNREACHABLE               = 0x10000000\n\tRTF_UP                        = 0x1\n\tRTF_XRESOLVE                  = 0x200\n\tRTM_ADD                       = 0x1\n\tRTM_CHANGE                    = 0x3\n\tRTM_DELADDR                   = 0xd\n\tRTM_DELETE                    = 0x2\n\tRTM_EXPIRE                    = 0xf\n\tRTM_GET                       = 0x4\n\tRTM_GETNEXT                   = 0x11\n\tRTM_IFINFO                    = 0xe\n\tRTM_LOCK                      = 0x8\n\tRTM_LOSING                    = 0x5\n\tRTM_MISS                      = 0x7\n\tRTM_NEWADDR                   = 0xc\n\tRTM_OLDADD                    = 0x9\n\tRTM_OLDDEL                    = 0xa\n\tRTM_REDIRECT                  = 0x6\n\tRTM_RESOLVE                   = 0xb\n\tRTM_RTLOST                    = 0x10\n\tRTM_RTTUNIT                   = 0xf4240\n\tRTM_SAMEADDR                  = 0x12\n\tRTM_SET                       = 0x13\n\tRTM_VERSION                   = 0x2\n\tRTM_VERSION_GR                = 0x4\n\tRTM_VERSION_GR_COMPAT         = 0x3\n\tRTM_VERSION_POLICY            = 0x5\n\tRTM_VERSION_POLICY_EXT        = 0x6\n\tRTM_VERSION_POLICY_PRFN       = 0x7\n\tRTV_EXPIRE                    = 0x4\n\tRTV_HOPCOUNT                  = 0x2\n\tRTV_MTU                       = 0x1\n\tRTV_RPIPE                     = 0x8\n\tRTV_RTT                       = 0x40\n\tRTV_RTTVAR                    = 0x80\n\tRTV_SPIPE                     = 0x10\n\tRTV_SSTHRESH                  = 0x20\n\tRUSAGE_CHILDREN               = -0x1\n\tRUSAGE_SELF                   = 0x0\n\tRUSAGE_THREAD                 = 0x1\n\tSCM_RIGHTS                    = 0x1\n\tSHUT_RD                       = 0x0\n\tSHUT_RDWR                     = 0x2\n\tSHUT_WR                       = 0x1\n\tSIGMAX64                      = 0xff\n\tSIGQUEUE_MAX                  = 0x20\n\tSIOCADDIFVIPA                 = 0x20006942\n\tSIOCADDMTU                    = -0x7ffb9690\n\tSIOCADDMULTI                  = -0x7fdf96cf\n\tSIOCADDNETID                  = -0x7fd796a9\n\tSIOCADDRT                     = -0x7fc78df6\n\tSIOCAIFADDR                   = -0x7fbf96e6\n\tSIOCATMARK                    = 0x40047307\n\tSIOCDARP                      = -0x7fb396e0\n\tSIOCDELIFVIPA                 = 0x20006943\n\tSIOCDELMTU                    = -0x7ffb968f\n\tSIOCDELMULTI                  = -0x7fdf96ce\n\tSIOCDELPMTU                   = -0x7fd78ff6\n\tSIOCDELRT                     = -0x7fc78df5\n\tSIOCDIFADDR                   = -0x7fd796e7\n\tSIOCDNETOPT                   = -0x3ffe9680\n\tSIOCDX25XLATE                 = -0x7fd7969b\n\tSIOCFIFADDR                   = -0x7fdf966d\n\tSIOCGARP                      = -0x3fb396da\n\tSIOCGETMTUS                   = 0x2000696f\n\tSIOCGETSGCNT                  = -0x3feb8acc\n\tSIOCGETVIFCNT                 = -0x3feb8acd\n\tSIOCGHIWAT                    = 0x40047301\n\tSIOCGIFADDR                   = -0x3fd796df\n\tSIOCGIFADDRS                  = 0x2000698c\n\tSIOCGIFBAUDRATE               = -0x3fdf9669\n\tSIOCGIFBRDADDR                = -0x3fd796dd\n\tSIOCGIFCONF                   = -0x3fef96bb\n\tSIOCGIFCONFGLOB               = -0x3fef9670\n\tSIOCGIFDSTADDR                = -0x3fd796de\n\tSIOCGIFFLAGS                  = -0x3fd796ef\n\tSIOCGIFGIDLIST                = 0x20006968\n\tSIOCGIFHWADDR                 = -0x3fab966b\n\tSIOCGIFMETRIC                 = -0x3fd796e9\n\tSIOCGIFMTU                    = -0x3fd796aa\n\tSIOCGIFNETMASK                = -0x3fd796db\n\tSIOCGIFOPTIONS                = -0x3fd796d6\n\tSIOCGISNO                     = -0x3fd79695\n\tSIOCGLOADF                    = -0x3ffb967e\n\tSIOCGLOWAT                    = 0x40047303\n\tSIOCGNETOPT                   = -0x3ffe96a5\n\tSIOCGNETOPT1                  = -0x3fdf967f\n\tSIOCGNMTUS                    = 0x2000696e\n\tSIOCGPGRP                     = 0x40047309\n\tSIOCGSIZIFCONF                = 0x4004696a\n\tSIOCGSRCFILTER                = -0x3fe796cb\n\tSIOCGTUNEPHASE                = -0x3ffb9676\n\tSIOCGX25XLATE                 = -0x3fd7969c\n\tSIOCIFATTACH                  = -0x7fdf9699\n\tSIOCIFDETACH                  = -0x7fdf969a\n\tSIOCIFGETPKEY                 = -0x7fdf969b\n\tSIOCIF_ATM_DARP               = -0x7fdf9683\n\tSIOCIF_ATM_DUMPARP            = -0x7fdf9685\n\tSIOCIF_ATM_GARP               = -0x7fdf9682\n\tSIOCIF_ATM_IDLE               = -0x7fdf9686\n\tSIOCIF_ATM_SARP               = -0x7fdf9681\n\tSIOCIF_ATM_SNMPARP            = -0x7fdf9687\n\tSIOCIF_ATM_SVC                = -0x7fdf9684\n\tSIOCIF_ATM_UBR                = -0x7fdf9688\n\tSIOCIF_DEVHEALTH              = -0x7ffb966c\n\tSIOCIF_IB_ARP_INCOMP          = -0x7fdf9677\n\tSIOCIF_IB_ARP_TIMER           = -0x7fdf9678\n\tSIOCIF_IB_CLEAR_PINFO         = -0x3fdf966f\n\tSIOCIF_IB_DEL_ARP             = -0x7fdf967f\n\tSIOCIF_IB_DEL_PINFO           = -0x3fdf9670\n\tSIOCIF_IB_DUMP_ARP            = -0x7fdf9680\n\tSIOCIF_IB_GET_ARP             = -0x7fdf967e\n\tSIOCIF_IB_GET_INFO            = -0x3f879675\n\tSIOCIF_IB_GET_STATS           = -0x3f879672\n\tSIOCIF_IB_NOTIFY_ADDR_REM     = -0x3f87966a\n\tSIOCIF_IB_RESET_STATS         = -0x3f879671\n\tSIOCIF_IB_RESIZE_CQ           = -0x7fdf9679\n\tSIOCIF_IB_SET_ARP             = -0x7fdf967d\n\tSIOCIF_IB_SET_PKEY            = -0x7fdf967c\n\tSIOCIF_IB_SET_PORT            = -0x7fdf967b\n\tSIOCIF_IB_SET_QKEY            = -0x7fdf9676\n\tSIOCIF_IB_SET_QSIZE           = -0x7fdf967a\n\tSIOCLISTIFVIPA                = 0x20006944\n\tSIOCSARP                      = -0x7fb396e2\n\tSIOCSHIWAT                    = 0xffffffff80047300\n\tSIOCSIFADDR                   = -0x7fd796f4\n\tSIOCSIFADDRORI                = -0x7fdb9673\n\tSIOCSIFBRDADDR                = -0x7fd796ed\n\tSIOCSIFDSTADDR                = -0x7fd796f2\n\tSIOCSIFFLAGS                  = -0x7fd796f0\n\tSIOCSIFGIDLIST                = 0x20006969\n\tSIOCSIFMETRIC                 = -0x7fd796e8\n\tSIOCSIFMTU                    = -0x7fd796a8\n\tSIOCSIFNETDUMP                = -0x7fd796e4\n\tSIOCSIFNETMASK                = -0x7fd796ea\n\tSIOCSIFOPTIONS                = -0x7fd796d7\n\tSIOCSIFSUBCHAN                = -0x7fd796e5\n\tSIOCSISNO                     = -0x7fd79694\n\tSIOCSLOADF                    = -0x3ffb967d\n\tSIOCSLOWAT                    = 0xffffffff80047302\n\tSIOCSNETOPT                   = -0x7ffe96a6\n\tSIOCSPGRP                     = 0xffffffff80047308\n\tSIOCSX25XLATE                 = -0x7fd7969d\n\tSOCK_CONN_DGRAM               = 0x6\n\tSOCK_DGRAM                    = 0x2\n\tSOCK_RAW                      = 0x3\n\tSOCK_RDM                      = 0x4\n\tSOCK_SEQPACKET                = 0x5\n\tSOCK_STREAM                   = 0x1\n\tSOL_SOCKET                    = 0xffff\n\tSOMAXCONN                     = 0x400\n\tSO_ACCEPTCONN                 = 0x2\n\tSO_AUDIT                      = 0x8000\n\tSO_BROADCAST                  = 0x20\n\tSO_CKSUMRECV                  = 0x800\n\tSO_DEBUG                      = 0x1\n\tSO_DONTROUTE                  = 0x10\n\tSO_ERROR                      = 0x1007\n\tSO_KEEPALIVE                  = 0x8\n\tSO_KERNACCEPT                 = 0x2000\n\tSO_LINGER                     = 0x80\n\tSO_NOMULTIPATH                = 0x4000\n\tSO_NOREUSEADDR                = 0x1000\n\tSO_OOBINLINE                  = 0x100\n\tSO_PEERID                     = 0x1009\n\tSO_RCVBUF                     = 0x1002\n\tSO_RCVLOWAT                   = 0x1004\n\tSO_RCVTIMEO                   = 0x1006\n\tSO_REUSEADDR                  = 0x4\n\tSO_REUSEPORT                  = 0x200\n\tSO_SNDBUF                     = 0x1001\n\tSO_SNDLOWAT                   = 0x1003\n\tSO_SNDTIMEO                   = 0x1005\n\tSO_TIMESTAMPNS                = 0x100a\n\tSO_TYPE                       = 0x1008\n\tSO_USELOOPBACK                = 0x40\n\tSO_USE_IFBUFS                 = 0x400\n\tS_BANDURG                     = 0x400\n\tS_EMODFMT                     = 0x3c000000\n\tS_ENFMT                       = 0x400\n\tS_ERROR                       = 0x100\n\tS_HANGUP                      = 0x200\n\tS_HIPRI                       = 0x2\n\tS_ICRYPTO                     = 0x80000\n\tS_IEXEC                       = 0x40\n\tS_IFBLK                       = 0x6000\n\tS_IFCHR                       = 0x2000\n\tS_IFDIR                       = 0x4000\n\tS_IFIFO                       = 0x1000\n\tS_IFJOURNAL                   = 0x10000\n\tS_IFLNK                       = 0xa000\n\tS_IFMPX                       = 0x2200\n\tS_IFMT                        = 0xf000\n\tS_IFPDIR                      = 0x4000000\n\tS_IFPSDIR                     = 0x8000000\n\tS_IFPSSDIR                    = 0xc000000\n\tS_IFREG                       = 0x8000\n\tS_IFSOCK                      = 0xc000\n\tS_IFSYSEA                     = 0x30000000\n\tS_INPUT                       = 0x1\n\tS_IREAD                       = 0x100\n\tS_IRGRP                       = 0x20\n\tS_IROTH                       = 0x4\n\tS_IRUSR                       = 0x100\n\tS_IRWXG                       = 0x38\n\tS_IRWXO                       = 0x7\n\tS_IRWXU                       = 0x1c0\n\tS_ISGID                       = 0x400\n\tS_ISUID                       = 0x800\n\tS_ISVTX                       = 0x200\n\tS_ITCB                        = 0x1000000\n\tS_ITP                         = 0x800000\n\tS_IWGRP                       = 0x10\n\tS_IWOTH                       = 0x2\n\tS_IWRITE                      = 0x80\n\tS_IWUSR                       = 0x80\n\tS_IXACL                       = 0x2000000\n\tS_IXATTR                      = 0x40000\n\tS_IXGRP                       = 0x8\n\tS_IXINTERFACE                 = 0x100000\n\tS_IXMOD                       = 0x40000000\n\tS_IXOTH                       = 0x1\n\tS_IXUSR                       = 0x40\n\tS_MSG                         = 0x8\n\tS_OUTPUT                      = 0x4\n\tS_RDBAND                      = 0x20\n\tS_RDNORM                      = 0x10\n\tS_RESERVED1                   = 0x20000\n\tS_RESERVED2                   = 0x200000\n\tS_RESERVED3                   = 0x400000\n\tS_RESERVED4                   = 0x80000000\n\tS_RESFMT1                     = 0x10000000\n\tS_RESFMT10                    = 0x34000000\n\tS_RESFMT11                    = 0x38000000\n\tS_RESFMT12                    = 0x3c000000\n\tS_RESFMT2                     = 0x14000000\n\tS_RESFMT3                     = 0x18000000\n\tS_RESFMT4                     = 0x1c000000\n\tS_RESFMT5                     = 0x20000000\n\tS_RESFMT6                     = 0x24000000\n\tS_RESFMT7                     = 0x28000000\n\tS_RESFMT8                     = 0x2c000000\n\tS_WRBAND                      = 0x80\n\tS_WRNORM                      = 0x40\n\tTAB0                          = 0x0\n\tTAB1                          = 0x400\n\tTAB2                          = 0x800\n\tTAB3                          = 0xc00\n\tTABDLY                        = 0xc00\n\tTCFLSH                        = 0x540c\n\tTCGETA                        = 0x5405\n\tTCGETS                        = 0x5401\n\tTCIFLUSH                      = 0x0\n\tTCIOFF                        = 0x2\n\tTCIOFLUSH                     = 0x2\n\tTCION                         = 0x3\n\tTCOFLUSH                      = 0x1\n\tTCOOFF                        = 0x0\n\tTCOON                         = 0x1\n\tTCP_24DAYS_WORTH_OF_SLOWTICKS = 0x3f4800\n\tTCP_ACLADD                    = 0x23\n\tTCP_ACLBIND                   = 0x26\n\tTCP_ACLCLEAR                  = 0x22\n\tTCP_ACLDEL                    = 0x24\n\tTCP_ACLDENY                   = 0x8\n\tTCP_ACLFLUSH                  = 0x21\n\tTCP_ACLGID                    = 0x1\n\tTCP_ACLLS                     = 0x25\n\tTCP_ACLSUBNET                 = 0x4\n\tTCP_ACLUID                    = 0x2\n\tTCP_CWND_DF                   = 0x16\n\tTCP_CWND_IF                   = 0x15\n\tTCP_DELAY_ACK_FIN             = 0x2\n\tTCP_DELAY_ACK_SYN             = 0x1\n\tTCP_FASTNAME                  = 0x101080a\n\tTCP_KEEPCNT                   = 0x13\n\tTCP_KEEPIDLE                  = 0x11\n\tTCP_KEEPINTVL                 = 0x12\n\tTCP_LSPRIV                    = 0x29\n\tTCP_LUID                      = 0x20\n\tTCP_MAXBURST                  = 0x8\n\tTCP_MAXDF                     = 0x64\n\tTCP_MAXIF                     = 0x64\n\tTCP_MAXSEG                    = 0x2\n\tTCP_MAXWIN                    = 0xffff\n\tTCP_MAXWINDOWSCALE            = 0xe\n\tTCP_MAX_SACK                  = 0x4\n\tTCP_MSS                       = 0x5b4\n\tTCP_NODELAY                   = 0x1\n\tTCP_NODELAYACK                = 0x14\n\tTCP_NOREDUCE_CWND_EXIT_FRXMT  = 0x19\n\tTCP_NOREDUCE_CWND_IN_FRXMT    = 0x18\n\tTCP_NOTENTER_SSTART           = 0x17\n\tTCP_OPT                       = 0x19\n\tTCP_RFC1323                   = 0x4\n\tTCP_SETPRIV                   = 0x27\n\tTCP_STDURG                    = 0x10\n\tTCP_TIMESTAMP_OPTLEN          = 0xc\n\tTCP_UNSETPRIV                 = 0x28\n\tTCSAFLUSH                     = 0x2\n\tTCSBRK                        = 0x5409\n\tTCSETA                        = 0x5406\n\tTCSETAF                       = 0x5408\n\tTCSETAW                       = 0x5407\n\tTCSETS                        = 0x5402\n\tTCSETSF                       = 0x5404\n\tTCSETSW                       = 0x5403\n\tTCXONC                        = 0x540b\n\tTIMER_ABSTIME                 = 0x3e7\n\tTIMER_MAX                     = 0x20\n\tTIOC                          = 0x5400\n\tTIOCCBRK                      = 0x2000747a\n\tTIOCCDTR                      = 0x20007478\n\tTIOCCONS                      = 0xffffffff80047462\n\tTIOCEXCL                      = 0x2000740d\n\tTIOCFLUSH                     = 0xffffffff80047410\n\tTIOCGETC                      = 0x40067412\n\tTIOCGETD                      = 0x40047400\n\tTIOCGETP                      = 0x40067408\n\tTIOCGLTC                      = 0x40067474\n\tTIOCGPGRP                     = 0x40047477\n\tTIOCGSID                      = 0x40047448\n\tTIOCGSIZE                     = 0x40087468\n\tTIOCGWINSZ                    = 0x40087468\n\tTIOCHPCL                      = 0x20007402\n\tTIOCLBIC                      = 0xffffffff8004747e\n\tTIOCLBIS                      = 0xffffffff8004747f\n\tTIOCLGET                      = 0x4004747c\n\tTIOCLSET                      = 0xffffffff8004747d\n\tTIOCMBIC                      = 0xffffffff8004746b\n\tTIOCMBIS                      = 0xffffffff8004746c\n\tTIOCMGET                      = 0x4004746a\n\tTIOCMIWAIT                    = 0xffffffff80047464\n\tTIOCMODG                      = 0x40047403\n\tTIOCMODS                      = 0xffffffff80047404\n\tTIOCMSET                      = 0xffffffff8004746d\n\tTIOCM_CAR                     = 0x40\n\tTIOCM_CD                      = 0x40\n\tTIOCM_CTS                     = 0x20\n\tTIOCM_DSR                     = 0x100\n\tTIOCM_DTR                     = 0x2\n\tTIOCM_LE                      = 0x1\n\tTIOCM_RI                      = 0x80\n\tTIOCM_RNG                     = 0x80\n\tTIOCM_RTS                     = 0x4\n\tTIOCM_SR                      = 0x10\n\tTIOCM_ST                      = 0x8\n\tTIOCNOTTY                     = 0x20007471\n\tTIOCNXCL                      = 0x2000740e\n\tTIOCOUTQ                      = 0x40047473\n\tTIOCPKT                       = 0xffffffff80047470\n\tTIOCPKT_DATA                  = 0x0\n\tTIOCPKT_DOSTOP                = 0x20\n\tTIOCPKT_FLUSHREAD             = 0x1\n\tTIOCPKT_FLUSHWRITE            = 0x2\n\tTIOCPKT_NOSTOP                = 0x10\n\tTIOCPKT_START                 = 0x8\n\tTIOCPKT_STOP                  = 0x4\n\tTIOCREMOTE                    = 0xffffffff80047469\n\tTIOCSBRK                      = 0x2000747b\n\tTIOCSDTR                      = 0x20007479\n\tTIOCSETC                      = 0xffffffff80067411\n\tTIOCSETD                      = 0xffffffff80047401\n\tTIOCSETN                      = 0xffffffff8006740a\n\tTIOCSETP                      = 0xffffffff80067409\n\tTIOCSLTC                      = 0xffffffff80067475\n\tTIOCSPGRP                     = 0xffffffff80047476\n\tTIOCSSIZE                     = 0xffffffff80087467\n\tTIOCSTART                     = 0x2000746e\n\tTIOCSTI                       = 0xffffffff80017472\n\tTIOCSTOP                      = 0x2000746f\n\tTIOCSWINSZ                    = 0xffffffff80087467\n\tTIOCUCNTL                     = 0xffffffff80047466\n\tTOSTOP                        = 0x10000\n\tUTIME_NOW                     = -0x2\n\tUTIME_OMIT                    = -0x3\n\tVDISCRD                       = 0xc\n\tVDSUSP                        = 0xa\n\tVEOF                          = 0x4\n\tVEOL                          = 0x5\n\tVEOL2                         = 0x6\n\tVERASE                        = 0x2\n\tVINTR                         = 0x0\n\tVKILL                         = 0x3\n\tVLNEXT                        = 0xe\n\tVMIN                          = 0x4\n\tVQUIT                         = 0x1\n\tVREPRINT                      = 0xb\n\tVSTART                        = 0x7\n\tVSTOP                         = 0x8\n\tVSTRT                         = 0x7\n\tVSUSP                         = 0x9\n\tVT0                           = 0x0\n\tVT1                           = 0x8000\n\tVTDELAY                       = 0x2000\n\tVTDLY                         = 0x8000\n\tVTIME                         = 0x5\n\tVWERSE                        = 0xd\n\tWPARSTART                     = 0x1\n\tWPARSTOP                      = 0x2\n\tWPARTTYNAME                   = \"Global\"\n\tXCASE                         = 0x4\n\tXTABS                         = 0xc00\n\t_FDATAFLUSH                   = 0x2000000000\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x43)\n\tEADDRNOTAVAIL   = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x42)\n\tEAGAIN          = syscall.Errno(0xb)\n\tEALREADY        = syscall.Errno(0x38)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x78)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x75)\n\tECHILD          = syscall.Errno(0xa)\n\tECHRNG          = syscall.Errno(0x25)\n\tECLONEME        = syscall.Errno(0x52)\n\tECONNABORTED    = syscall.Errno(0x48)\n\tECONNREFUSED    = syscall.Errno(0x4f)\n\tECONNRESET      = syscall.Errno(0x49)\n\tECORRUPT        = syscall.Errno(0x59)\n\tEDEADLK         = syscall.Errno(0x2d)\n\tEDESTADDREQ     = syscall.Errno(0x3a)\n\tEDESTADDRREQ    = syscall.Errno(0x3a)\n\tEDIST           = syscall.Errno(0x35)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x58)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFORMAT         = syscall.Errno(0x30)\n\tEHOSTDOWN       = syscall.Errno(0x50)\n\tEHOSTUNREACH    = syscall.Errno(0x51)\n\tEIDRM           = syscall.Errno(0x24)\n\tEILSEQ          = syscall.Errno(0x74)\n\tEINPROGRESS     = syscall.Errno(0x37)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x4b)\n\tEISDIR          = syscall.Errno(0x15)\n\tEL2HLT          = syscall.Errno(0x2c)\n\tEL2NSYNC        = syscall.Errno(0x26)\n\tEL3HLT          = syscall.Errno(0x27)\n\tEL3RST          = syscall.Errno(0x28)\n\tELNRNG          = syscall.Errno(0x29)\n\tELOOP           = syscall.Errno(0x55)\n\tEMEDIA          = syscall.Errno(0x6e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x3b)\n\tEMULTIHOP       = syscall.Errno(0x7d)\n\tENAMETOOLONG    = syscall.Errno(0x56)\n\tENETDOWN        = syscall.Errno(0x45)\n\tENETRESET       = syscall.Errno(0x47)\n\tENETUNREACH     = syscall.Errno(0x46)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x70)\n\tENOBUFS         = syscall.Errno(0x4a)\n\tENOCONNECT      = syscall.Errno(0x32)\n\tENOCSI          = syscall.Errno(0x2b)\n\tENODATA         = syscall.Errno(0x7a)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x31)\n\tENOLINK         = syscall.Errno(0x7e)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x23)\n\tENOPROTOOPT     = syscall.Errno(0x3d)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x76)\n\tENOSTR          = syscall.Errno(0x7b)\n\tENOSYS          = syscall.Errno(0x6d)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x4c)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x11)\n\tENOTREADY       = syscall.Errno(0x2e)\n\tENOTRECOVERABLE = syscall.Errno(0x5e)\n\tENOTRUST        = syscall.Errno(0x72)\n\tENOTSOCK        = syscall.Errno(0x39)\n\tENOTSUP         = syscall.Errno(0x7c)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x40)\n\tEOVERFLOW       = syscall.Errno(0x7f)\n\tEOWNERDEAD      = syscall.Errno(0x5f)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x41)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x53)\n\tEPROTO          = syscall.Errno(0x79)\n\tEPROTONOSUPPORT = syscall.Errno(0x3e)\n\tEPROTOTYPE      = syscall.Errno(0x3c)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x5d)\n\tERESTART        = syscall.Errno(0x52)\n\tEROFS           = syscall.Errno(0x1e)\n\tESAD            = syscall.Errno(0x71)\n\tESHUTDOWN       = syscall.Errno(0x4d)\n\tESOCKTNOSUPPORT = syscall.Errno(0x3f)\n\tESOFT           = syscall.Errno(0x6f)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x34)\n\tESYSERROR       = syscall.Errno(0x5a)\n\tETIME           = syscall.Errno(0x77)\n\tETIMEDOUT       = syscall.Errno(0x4e)\n\tETOOMANYREFS    = syscall.Errno(0x73)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUNATCH         = syscall.Errno(0x2a)\n\tEUSERS          = syscall.Errno(0x54)\n\tEWOULDBLOCK     = syscall.Errno(0xb)\n\tEWRPROTECT      = syscall.Errno(0x2f)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT     = syscall.Signal(0x6)\n\tSIGAIO      = syscall.Signal(0x17)\n\tSIGALRM     = syscall.Signal(0xe)\n\tSIGALRM1    = syscall.Signal(0x26)\n\tSIGBUS      = syscall.Signal(0xa)\n\tSIGCAPI     = syscall.Signal(0x31)\n\tSIGCHLD     = syscall.Signal(0x14)\n\tSIGCLD      = syscall.Signal(0x14)\n\tSIGCONT     = syscall.Signal(0x13)\n\tSIGCPUFAIL  = syscall.Signal(0x3b)\n\tSIGDANGER   = syscall.Signal(0x21)\n\tSIGEMT      = syscall.Signal(0x7)\n\tSIGFPE      = syscall.Signal(0x8)\n\tSIGGRANT    = syscall.Signal(0x3c)\n\tSIGHUP      = syscall.Signal(0x1)\n\tSIGILL      = syscall.Signal(0x4)\n\tSIGINT      = syscall.Signal(0x2)\n\tSIGIO       = syscall.Signal(0x17)\n\tSIGIOINT    = syscall.Signal(0x10)\n\tSIGIOT      = syscall.Signal(0x6)\n\tSIGKAP      = syscall.Signal(0x3c)\n\tSIGKILL     = syscall.Signal(0x9)\n\tSIGLOST     = syscall.Signal(0x6)\n\tSIGMAX      = syscall.Signal(0xff)\n\tSIGMAX32    = syscall.Signal(0x3f)\n\tSIGMIGRATE  = syscall.Signal(0x23)\n\tSIGMSG      = syscall.Signal(0x1b)\n\tSIGPIPE     = syscall.Signal(0xd)\n\tSIGPOLL     = syscall.Signal(0x17)\n\tSIGPRE      = syscall.Signal(0x24)\n\tSIGPROF     = syscall.Signal(0x20)\n\tSIGPTY      = syscall.Signal(0x17)\n\tSIGPWR      = syscall.Signal(0x1d)\n\tSIGQUIT     = syscall.Signal(0x3)\n\tSIGRECONFIG = syscall.Signal(0x3a)\n\tSIGRETRACT  = syscall.Signal(0x3d)\n\tSIGSAK      = syscall.Signal(0x3f)\n\tSIGSEGV     = syscall.Signal(0xb)\n\tSIGSOUND    = syscall.Signal(0x3e)\n\tSIGSTOP     = syscall.Signal(0x11)\n\tSIGSYS      = syscall.Signal(0xc)\n\tSIGSYSERROR = syscall.Signal(0x30)\n\tSIGTALRM    = syscall.Signal(0x26)\n\tSIGTERM     = syscall.Signal(0xf)\n\tSIGTRAP     = syscall.Signal(0x5)\n\tSIGTSTP     = syscall.Signal(0x12)\n\tSIGTTIN     = syscall.Signal(0x15)\n\tSIGTTOU     = syscall.Signal(0x16)\n\tSIGURG      = syscall.Signal(0x10)\n\tSIGUSR1     = syscall.Signal(0x1e)\n\tSIGUSR2     = syscall.Signal(0x1f)\n\tSIGVIRT     = syscall.Signal(0x25)\n\tSIGVTALRM   = syscall.Signal(0x22)\n\tSIGWAITING  = syscall.Signal(0x27)\n\tSIGWINCH    = syscall.Signal(0x1c)\n\tSIGXCPU     = syscall.Signal(0x18)\n\tSIGXFSZ     = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"not owner\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"I/O error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"arg list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file number\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EWOULDBLOCK\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"not enough space\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"ENOTEMPTY\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"file table overflow\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"not a typewriter\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"ENOMSG\", \"no message of desired type\"},\n\t{36, \"EIDRM\", \"identifier removed\"},\n\t{37, \"ECHRNG\", \"channel number out of range\"},\n\t{38, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{39, \"EL3HLT\", \"level 3 halted\"},\n\t{40, \"EL3RST\", \"level 3 reset\"},\n\t{41, \"ELNRNG\", \"link number out of range\"},\n\t{42, \"EUNATCH\", \"protocol driver not attached\"},\n\t{43, \"ENOCSI\", \"no CSI structure available\"},\n\t{44, \"EL2HLT\", \"level 2 halted\"},\n\t{45, \"EDEADLK\", \"deadlock condition if locked\"},\n\t{46, \"ENOTREADY\", \"device not ready\"},\n\t{47, \"EWRPROTECT\", \"write-protected media\"},\n\t{48, \"EFORMAT\", \"unformatted or incompatible media\"},\n\t{49, \"ENOLCK\", \"no locks available\"},\n\t{50, \"ENOCONNECT\", \"cannot Establish Connection\"},\n\t{52, \"ESTALE\", \"missing file or filesystem\"},\n\t{53, \"EDIST\", \"requests blocked by Administrator\"},\n\t{55, \"EINPROGRESS\", \"operation now in progress\"},\n\t{56, \"EALREADY\", \"operation already in progress\"},\n\t{57, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{58, \"EDESTADDREQ\", \"destination address required\"},\n\t{59, \"EMSGSIZE\", \"message too long\"},\n\t{60, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{61, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{62, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{63, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{64, \"EOPNOTSUPP\", \"operation not supported on socket\"},\n\t{65, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{66, \"EAFNOSUPPORT\", \"addr family not supported by protocol\"},\n\t{67, \"EADDRINUSE\", \"address already in use\"},\n\t{68, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{69, \"ENETDOWN\", \"network is down\"},\n\t{70, \"ENETUNREACH\", \"network is unreachable\"},\n\t{71, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{72, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{73, \"ECONNRESET\", \"connection reset by peer\"},\n\t{74, \"ENOBUFS\", \"no buffer space available\"},\n\t{75, \"EISCONN\", \"socket is already connected\"},\n\t{76, \"ENOTCONN\", \"socket is not connected\"},\n\t{77, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{78, \"ETIMEDOUT\", \"connection timed out\"},\n\t{79, \"ECONNREFUSED\", \"connection refused\"},\n\t{80, \"EHOSTDOWN\", \"host is down\"},\n\t{81, \"EHOSTUNREACH\", \"no route to host\"},\n\t{82, \"ERESTART\", \"restart the system call\"},\n\t{83, \"EPROCLIM\", \"too many processes\"},\n\t{84, \"EUSERS\", \"too many users\"},\n\t{85, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{86, \"ENAMETOOLONG\", \"file name too long\"},\n\t{88, \"EDQUOT\", \"disk quota exceeded\"},\n\t{89, \"ECORRUPT\", \"invalid file system control data detected\"},\n\t{90, \"ESYSERROR\", \"for future use \"},\n\t{93, \"EREMOTE\", \"item is not local to host\"},\n\t{94, \"ENOTRECOVERABLE\", \"state not recoverable \"},\n\t{95, \"EOWNERDEAD\", \"previous owner died \"},\n\t{109, \"ENOSYS\", \"function not implemented\"},\n\t{110, \"EMEDIA\", \"media surface error\"},\n\t{111, \"ESOFT\", \"I/O completed, but needs relocation\"},\n\t{112, \"ENOATTR\", \"no attribute found\"},\n\t{113, \"ESAD\", \"security Authentication Denied\"},\n\t{114, \"ENOTRUST\", \"not a Trusted Program\"},\n\t{115, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{116, \"EILSEQ\", \"invalid wide character\"},\n\t{117, \"ECANCELED\", \"asynchronous I/O cancelled\"},\n\t{118, \"ENOSR\", \"out of STREAMS resources\"},\n\t{119, \"ETIME\", \"system call timed out\"},\n\t{120, \"EBADMSG\", \"next message has wrong type\"},\n\t{121, \"EPROTO\", \"error in protocol\"},\n\t{122, \"ENODATA\", \"no message on stream head read q\"},\n\t{123, \"ENOSTR\", \"fd not associated with a stream\"},\n\t{124, \"ENOTSUP\", \"unsupported attribute value\"},\n\t{125, \"EMULTIHOP\", \"multihop is not allowed\"},\n\t{126, \"ENOLINK\", \"the server link has been severed\"},\n\t{127, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"IOT/Abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"stopped (signal)\"},\n\t{18, \"SIGTSTP\", \"stopped\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible/complete\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{27, \"SIGMSG\", \"input device data\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGPWR\", \"power-failure\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGPROF\", \"profiling timer expired\"},\n\t{33, \"SIGDANGER\", \"paging space low\"},\n\t{34, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{35, \"SIGMIGRATE\", \"signal 35\"},\n\t{36, \"SIGPRE\", \"signal 36\"},\n\t{37, \"SIGVIRT\", \"signal 37\"},\n\t{38, \"SIGTALRM\", \"signal 38\"},\n\t{39, \"SIGWAITING\", \"signal 39\"},\n\t{48, \"SIGSYSERROR\", \"signal 48\"},\n\t{49, \"SIGCAPI\", \"signal 49\"},\n\t{58, \"SIGRECONFIG\", \"signal 58\"},\n\t{59, \"SIGCPUFAIL\", \"CPU Failure Predicted\"},\n\t{60, \"SIGGRANT\", \"monitor mode granted\"},\n\t{61, \"SIGRETRACT\", \"monitor mode retracted\"},\n\t{62, \"SIGSOUND\", \"sound completed\"},\n\t{63, \"SIGMAX32\", \"secure attention\"},\n\t{255, \"SIGMAX\", \"signal 255\"},\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && darwin\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                            = 0x10\n\tAF_CCITT                                = 0xa\n\tAF_CHAOS                                = 0x5\n\tAF_CNT                                  = 0x15\n\tAF_COIP                                 = 0x14\n\tAF_DATAKIT                              = 0x9\n\tAF_DECnet                               = 0xc\n\tAF_DLI                                  = 0xd\n\tAF_E164                                 = 0x1c\n\tAF_ECMA                                 = 0x8\n\tAF_HYLINK                               = 0xf\n\tAF_IEEE80211                            = 0x25\n\tAF_IMPLINK                              = 0x3\n\tAF_INET                                 = 0x2\n\tAF_INET6                                = 0x1e\n\tAF_IPX                                  = 0x17\n\tAF_ISDN                                 = 0x1c\n\tAF_ISO                                  = 0x7\n\tAF_LAT                                  = 0xe\n\tAF_LINK                                 = 0x12\n\tAF_LOCAL                                = 0x1\n\tAF_MAX                                  = 0x29\n\tAF_NATM                                 = 0x1f\n\tAF_NDRV                                 = 0x1b\n\tAF_NETBIOS                              = 0x21\n\tAF_NS                                   = 0x6\n\tAF_OSI                                  = 0x7\n\tAF_PPP                                  = 0x22\n\tAF_PUP                                  = 0x4\n\tAF_RESERVED_36                          = 0x24\n\tAF_ROUTE                                = 0x11\n\tAF_SIP                                  = 0x18\n\tAF_SNA                                  = 0xb\n\tAF_SYSTEM                               = 0x20\n\tAF_SYS_CONTROL                          = 0x2\n\tAF_UNIX                                 = 0x1\n\tAF_UNSPEC                               = 0x0\n\tAF_UTUN                                 = 0x26\n\tAF_VSOCK                                = 0x28\n\tALTWERASE                               = 0x200\n\tATTR_BIT_MAP_COUNT                      = 0x5\n\tATTR_CMN_ACCESSMASK                     = 0x20000\n\tATTR_CMN_ACCTIME                        = 0x1000\n\tATTR_CMN_ADDEDTIME                      = 0x10000000\n\tATTR_CMN_BKUPTIME                       = 0x2000\n\tATTR_CMN_CHGTIME                        = 0x800\n\tATTR_CMN_CRTIME                         = 0x200\n\tATTR_CMN_DATA_PROTECT_FLAGS             = 0x40000000\n\tATTR_CMN_DEVID                          = 0x2\n\tATTR_CMN_DOCUMENT_ID                    = 0x100000\n\tATTR_CMN_ERROR                          = 0x20000000\n\tATTR_CMN_EXTENDED_SECURITY              = 0x400000\n\tATTR_CMN_FILEID                         = 0x2000000\n\tATTR_CMN_FLAGS                          = 0x40000\n\tATTR_CMN_FNDRINFO                       = 0x4000\n\tATTR_CMN_FSID                           = 0x4\n\tATTR_CMN_FULLPATH                       = 0x8000000\n\tATTR_CMN_GEN_COUNT                      = 0x80000\n\tATTR_CMN_GRPID                          = 0x10000\n\tATTR_CMN_GRPUUID                        = 0x1000000\n\tATTR_CMN_MODTIME                        = 0x400\n\tATTR_CMN_NAME                           = 0x1\n\tATTR_CMN_NAMEDATTRCOUNT                 = 0x80000\n\tATTR_CMN_NAMEDATTRLIST                  = 0x100000\n\tATTR_CMN_OBJID                          = 0x20\n\tATTR_CMN_OBJPERMANENTID                 = 0x40\n\tATTR_CMN_OBJTAG                         = 0x10\n\tATTR_CMN_OBJTYPE                        = 0x8\n\tATTR_CMN_OWNERID                        = 0x8000\n\tATTR_CMN_PARENTID                       = 0x4000000\n\tATTR_CMN_PAROBJID                       = 0x80\n\tATTR_CMN_RETURNED_ATTRS                 = 0x80000000\n\tATTR_CMN_SCRIPT                         = 0x100\n\tATTR_CMN_SETMASK                        = 0x51c7ff00\n\tATTR_CMN_USERACCESS                     = 0x200000\n\tATTR_CMN_UUID                           = 0x800000\n\tATTR_CMN_VALIDMASK                      = 0xffffffff\n\tATTR_CMN_VOLSETMASK                     = 0x6700\n\tATTR_FILE_ALLOCSIZE                     = 0x4\n\tATTR_FILE_CLUMPSIZE                     = 0x10\n\tATTR_FILE_DATAALLOCSIZE                 = 0x400\n\tATTR_FILE_DATAEXTENTS                   = 0x800\n\tATTR_FILE_DATALENGTH                    = 0x200\n\tATTR_FILE_DEVTYPE                       = 0x20\n\tATTR_FILE_FILETYPE                      = 0x40\n\tATTR_FILE_FORKCOUNT                     = 0x80\n\tATTR_FILE_FORKLIST                      = 0x100\n\tATTR_FILE_IOBLOCKSIZE                   = 0x8\n\tATTR_FILE_LINKCOUNT                     = 0x1\n\tATTR_FILE_RSRCALLOCSIZE                 = 0x2000\n\tATTR_FILE_RSRCEXTENTS                   = 0x4000\n\tATTR_FILE_RSRCLENGTH                    = 0x1000\n\tATTR_FILE_SETMASK                       = 0x20\n\tATTR_FILE_TOTALSIZE                     = 0x2\n\tATTR_FILE_VALIDMASK                     = 0x37ff\n\tATTR_VOL_ALLOCATIONCLUMP                = 0x40\n\tATTR_VOL_ATTRIBUTES                     = 0x40000000\n\tATTR_VOL_CAPABILITIES                   = 0x20000\n\tATTR_VOL_DIRCOUNT                       = 0x400\n\tATTR_VOL_ENCODINGSUSED                  = 0x10000\n\tATTR_VOL_FILECOUNT                      = 0x200\n\tATTR_VOL_FSTYPE                         = 0x1\n\tATTR_VOL_INFO                           = 0x80000000\n\tATTR_VOL_IOBLOCKSIZE                    = 0x80\n\tATTR_VOL_MAXOBJCOUNT                    = 0x800\n\tATTR_VOL_MINALLOCATION                  = 0x20\n\tATTR_VOL_MOUNTEDDEVICE                  = 0x8000\n\tATTR_VOL_MOUNTFLAGS                     = 0x4000\n\tATTR_VOL_MOUNTPOINT                     = 0x1000\n\tATTR_VOL_NAME                           = 0x2000\n\tATTR_VOL_OBJCOUNT                       = 0x100\n\tATTR_VOL_QUOTA_SIZE                     = 0x10000000\n\tATTR_VOL_RESERVED_SIZE                  = 0x20000000\n\tATTR_VOL_SETMASK                        = 0x80002000\n\tATTR_VOL_SIGNATURE                      = 0x2\n\tATTR_VOL_SIZE                           = 0x4\n\tATTR_VOL_SPACEAVAIL                     = 0x10\n\tATTR_VOL_SPACEFREE                      = 0x8\n\tATTR_VOL_SPACEUSED                      = 0x800000\n\tATTR_VOL_UUID                           = 0x40000\n\tATTR_VOL_VALIDMASK                      = 0xf087ffff\n\tB0                                      = 0x0\n\tB110                                    = 0x6e\n\tB115200                                 = 0x1c200\n\tB1200                                   = 0x4b0\n\tB134                                    = 0x86\n\tB14400                                  = 0x3840\n\tB150                                    = 0x96\n\tB1800                                   = 0x708\n\tB19200                                  = 0x4b00\n\tB200                                    = 0xc8\n\tB230400                                 = 0x38400\n\tB2400                                   = 0x960\n\tB28800                                  = 0x7080\n\tB300                                    = 0x12c\n\tB38400                                  = 0x9600\n\tB4800                                   = 0x12c0\n\tB50                                     = 0x32\n\tB57600                                  = 0xe100\n\tB600                                    = 0x258\n\tB7200                                   = 0x1c20\n\tB75                                     = 0x4b\n\tB76800                                  = 0x12c00\n\tB9600                                   = 0x2580\n\tBIOCFLUSH                               = 0x20004268\n\tBIOCGBLEN                               = 0x40044266\n\tBIOCGDLT                                = 0x4004426a\n\tBIOCGDLTLIST                            = 0xc00c4279\n\tBIOCGETIF                               = 0x4020426b\n\tBIOCGHDRCMPLT                           = 0x40044274\n\tBIOCGRSIG                               = 0x40044272\n\tBIOCGRTIMEOUT                           = 0x4010426e\n\tBIOCGSEESENT                            = 0x40044276\n\tBIOCGSTATS                              = 0x4008426f\n\tBIOCIMMEDIATE                           = 0x80044270\n\tBIOCPROMISC                             = 0x20004269\n\tBIOCSBLEN                               = 0xc0044266\n\tBIOCSDLT                                = 0x80044278\n\tBIOCSETF                                = 0x80104267\n\tBIOCSETFNR                              = 0x8010427e\n\tBIOCSETIF                               = 0x8020426c\n\tBIOCSHDRCMPLT                           = 0x80044275\n\tBIOCSRSIG                               = 0x80044273\n\tBIOCSRTIMEOUT                           = 0x8010426d\n\tBIOCSSEESENT                            = 0x80044277\n\tBIOCVERSION                             = 0x40044271\n\tBPF_A                                   = 0x10\n\tBPF_ABS                                 = 0x20\n\tBPF_ADD                                 = 0x0\n\tBPF_ALIGNMENT                           = 0x4\n\tBPF_ALU                                 = 0x4\n\tBPF_AND                                 = 0x50\n\tBPF_B                                   = 0x10\n\tBPF_DIV                                 = 0x30\n\tBPF_H                                   = 0x8\n\tBPF_IMM                                 = 0x0\n\tBPF_IND                                 = 0x40\n\tBPF_JA                                  = 0x0\n\tBPF_JEQ                                 = 0x10\n\tBPF_JGE                                 = 0x30\n\tBPF_JGT                                 = 0x20\n\tBPF_JMP                                 = 0x5\n\tBPF_JSET                                = 0x40\n\tBPF_K                                   = 0x0\n\tBPF_LD                                  = 0x0\n\tBPF_LDX                                 = 0x1\n\tBPF_LEN                                 = 0x80\n\tBPF_LSH                                 = 0x60\n\tBPF_MAJOR_VERSION                       = 0x1\n\tBPF_MAXBUFSIZE                          = 0x80000\n\tBPF_MAXINSNS                            = 0x200\n\tBPF_MEM                                 = 0x60\n\tBPF_MEMWORDS                            = 0x10\n\tBPF_MINBUFSIZE                          = 0x20\n\tBPF_MINOR_VERSION                       = 0x1\n\tBPF_MISC                                = 0x7\n\tBPF_MSH                                 = 0xa0\n\tBPF_MUL                                 = 0x20\n\tBPF_NEG                                 = 0x80\n\tBPF_OR                                  = 0x40\n\tBPF_RELEASE                             = 0x30bb6\n\tBPF_RET                                 = 0x6\n\tBPF_RSH                                 = 0x70\n\tBPF_ST                                  = 0x2\n\tBPF_STX                                 = 0x3\n\tBPF_SUB                                 = 0x10\n\tBPF_TAX                                 = 0x0\n\tBPF_TXA                                 = 0x80\n\tBPF_W                                   = 0x0\n\tBPF_X                                   = 0x8\n\tBRKINT                                  = 0x2\n\tBS0                                     = 0x0\n\tBS1                                     = 0x8000\n\tBSDLY                                   = 0x8000\n\tCFLUSH                                  = 0xf\n\tCLOCAL                                  = 0x8000\n\tCLOCK_MONOTONIC                         = 0x6\n\tCLOCK_MONOTONIC_RAW                     = 0x4\n\tCLOCK_MONOTONIC_RAW_APPROX              = 0x5\n\tCLOCK_PROCESS_CPUTIME_ID                = 0xc\n\tCLOCK_REALTIME                          = 0x0\n\tCLOCK_THREAD_CPUTIME_ID                 = 0x10\n\tCLOCK_UPTIME_RAW                        = 0x8\n\tCLOCK_UPTIME_RAW_APPROX                 = 0x9\n\tCLONE_NOFOLLOW                          = 0x1\n\tCLONE_NOOWNERCOPY                       = 0x2\n\tCONNECT_DATA_AUTHENTICATED              = 0x4\n\tCONNECT_DATA_IDEMPOTENT                 = 0x2\n\tCONNECT_RESUME_ON_READ_WRITE            = 0x1\n\tCR0                                     = 0x0\n\tCR1                                     = 0x1000\n\tCR2                                     = 0x2000\n\tCR3                                     = 0x3000\n\tCRDLY                                   = 0x3000\n\tCREAD                                   = 0x800\n\tCRTSCTS                                 = 0x30000\n\tCS5                                     = 0x0\n\tCS6                                     = 0x100\n\tCS7                                     = 0x200\n\tCS8                                     = 0x300\n\tCSIZE                                   = 0x300\n\tCSTART                                  = 0x11\n\tCSTATUS                                 = 0x14\n\tCSTOP                                   = 0x13\n\tCSTOPB                                  = 0x400\n\tCSUSP                                   = 0x1a\n\tCTLIOCGINFO                             = 0xc0644e03\n\tCTL_HW                                  = 0x6\n\tCTL_KERN                                = 0x1\n\tCTL_MAXNAME                             = 0xc\n\tCTL_NET                                 = 0x4\n\tDLT_A429                                = 0xb8\n\tDLT_A653_ICM                            = 0xb9\n\tDLT_AIRONET_HEADER                      = 0x78\n\tDLT_AOS                                 = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394              = 0x8a\n\tDLT_ARCNET                              = 0x7\n\tDLT_ARCNET_LINUX                        = 0x81\n\tDLT_ATM_CLIP                            = 0x13\n\tDLT_ATM_RFC1483                         = 0xb\n\tDLT_AURORA                              = 0x7e\n\tDLT_AX25                                = 0x3\n\tDLT_AX25_KISS                           = 0xca\n\tDLT_BACNET_MS_TP                        = 0xa5\n\tDLT_BLUETOOTH_HCI_H4                    = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR          = 0xc9\n\tDLT_CAN20B                              = 0xbe\n\tDLT_CAN_SOCKETCAN                       = 0xe3\n\tDLT_CHAOS                               = 0x5\n\tDLT_CHDLC                               = 0x68\n\tDLT_CISCO_IOS                           = 0x76\n\tDLT_C_HDLC                              = 0x68\n\tDLT_C_HDLC_WITH_DIR                     = 0xcd\n\tDLT_DBUS                                = 0xe7\n\tDLT_DECT                                = 0xdd\n\tDLT_DOCSIS                              = 0x8f\n\tDLT_DVB_CI                              = 0xeb\n\tDLT_ECONET                              = 0x73\n\tDLT_EN10MB                              = 0x1\n\tDLT_EN3MB                               = 0x2\n\tDLT_ENC                                 = 0x6d\n\tDLT_ERF                                 = 0xc5\n\tDLT_ERF_ETH                             = 0xaf\n\tDLT_ERF_POS                             = 0xb0\n\tDLT_FC_2                                = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS              = 0xe1\n\tDLT_FDDI                                = 0xa\n\tDLT_FLEXRAY                             = 0xd2\n\tDLT_FRELAY                              = 0x6b\n\tDLT_FRELAY_WITH_DIR                     = 0xce\n\tDLT_GCOM_SERIAL                         = 0xad\n\tDLT_GCOM_T1E1                           = 0xac\n\tDLT_GPF_F                               = 0xab\n\tDLT_GPF_T                               = 0xaa\n\tDLT_GPRS_LLC                            = 0xa9\n\tDLT_GSMTAP_ABIS                         = 0xda\n\tDLT_GSMTAP_UM                           = 0xd9\n\tDLT_HHDLC                               = 0x79\n\tDLT_IBM_SN                              = 0x92\n\tDLT_IBM_SP                              = 0x91\n\tDLT_IEEE802                             = 0x6\n\tDLT_IEEE802_11                          = 0x69\n\tDLT_IEEE802_11_RADIO                    = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS                = 0xa3\n\tDLT_IEEE802_15_4                        = 0xc3\n\tDLT_IEEE802_15_4_LINUX                  = 0xbf\n\tDLT_IEEE802_15_4_NOFCS                  = 0xe6\n\tDLT_IEEE802_15_4_NONASK_PHY             = 0xd7\n\tDLT_IEEE802_16_MAC_CPS                  = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO            = 0xc1\n\tDLT_IPFILTER                            = 0x74\n\tDLT_IPMB                                = 0xc7\n\tDLT_IPMB_LINUX                          = 0xd1\n\tDLT_IPNET                               = 0xe2\n\tDLT_IPOIB                               = 0xf2\n\tDLT_IPV4                                = 0xe4\n\tDLT_IPV6                                = 0xe5\n\tDLT_IP_OVER_FC                          = 0x7a\n\tDLT_JUNIPER_ATM1                        = 0x89\n\tDLT_JUNIPER_ATM2                        = 0x87\n\tDLT_JUNIPER_ATM_CEMIC                   = 0xee\n\tDLT_JUNIPER_CHDLC                       = 0xb5\n\tDLT_JUNIPER_ES                          = 0x84\n\tDLT_JUNIPER_ETHER                       = 0xb2\n\tDLT_JUNIPER_FIBRECHANNEL                = 0xea\n\tDLT_JUNIPER_FRELAY                      = 0xb4\n\tDLT_JUNIPER_GGSN                        = 0x85\n\tDLT_JUNIPER_ISM                         = 0xc2\n\tDLT_JUNIPER_MFR                         = 0x86\n\tDLT_JUNIPER_MLFR                        = 0x83\n\tDLT_JUNIPER_MLPPP                       = 0x82\n\tDLT_JUNIPER_MONITOR                     = 0xa4\n\tDLT_JUNIPER_PIC_PEER                    = 0xae\n\tDLT_JUNIPER_PPP                         = 0xb3\n\tDLT_JUNIPER_PPPOE                       = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM                   = 0xa8\n\tDLT_JUNIPER_SERVICES                    = 0x88\n\tDLT_JUNIPER_SRX_E2E                     = 0xe9\n\tDLT_JUNIPER_ST                          = 0xc8\n\tDLT_JUNIPER_VP                          = 0xb7\n\tDLT_JUNIPER_VS                          = 0xe8\n\tDLT_LAPB_WITH_DIR                       = 0xcf\n\tDLT_LAPD                                = 0xcb\n\tDLT_LIN                                 = 0xd4\n\tDLT_LINUX_EVDEV                         = 0xd8\n\tDLT_LINUX_IRDA                          = 0x90\n\tDLT_LINUX_LAPD                          = 0xb1\n\tDLT_LINUX_PPP_WITHDIRECTION             = 0xa6\n\tDLT_LINUX_SLL                           = 0x71\n\tDLT_LOOP                                = 0x6c\n\tDLT_LTALK                               = 0x72\n\tDLT_MATCHING_MAX                        = 0x10a\n\tDLT_MATCHING_MIN                        = 0x68\n\tDLT_MFR                                 = 0xb6\n\tDLT_MOST                                = 0xd3\n\tDLT_MPEG_2_TS                           = 0xf3\n\tDLT_MPLS                                = 0xdb\n\tDLT_MTP2                                = 0x8c\n\tDLT_MTP2_WITH_PHDR                      = 0x8b\n\tDLT_MTP3                                = 0x8d\n\tDLT_MUX27010                            = 0xec\n\tDLT_NETANALYZER                         = 0xf0\n\tDLT_NETANALYZER_TRANSPARENT             = 0xf1\n\tDLT_NFC_LLCP                            = 0xf5\n\tDLT_NFLOG                               = 0xef\n\tDLT_NG40                                = 0xf4\n\tDLT_NULL                                = 0x0\n\tDLT_PCI_EXP                             = 0x7d\n\tDLT_PFLOG                               = 0x75\n\tDLT_PFSYNC                              = 0x12\n\tDLT_PPI                                 = 0xc0\n\tDLT_PPP                                 = 0x9\n\tDLT_PPP_BSDOS                           = 0x10\n\tDLT_PPP_ETHER                           = 0x33\n\tDLT_PPP_PPPD                            = 0xa6\n\tDLT_PPP_SERIAL                          = 0x32\n\tDLT_PPP_WITH_DIR                        = 0xcc\n\tDLT_PPP_WITH_DIRECTION                  = 0xa6\n\tDLT_PRISM_HEADER                        = 0x77\n\tDLT_PRONET                              = 0x4\n\tDLT_RAIF1                               = 0xc6\n\tDLT_RAW                                 = 0xc\n\tDLT_RIO                                 = 0x7c\n\tDLT_SCCP                                = 0x8e\n\tDLT_SITA                                = 0xc4\n\tDLT_SLIP                                = 0x8\n\tDLT_SLIP_BSDOS                          = 0xf\n\tDLT_STANAG_5066_D_PDU                   = 0xed\n\tDLT_SUNATM                              = 0x7b\n\tDLT_SYMANTEC_FIREWALL                   = 0x63\n\tDLT_TZSP                                = 0x80\n\tDLT_USB                                 = 0xba\n\tDLT_USB_DARWIN                          = 0x10a\n\tDLT_USB_LINUX                           = 0xbd\n\tDLT_USB_LINUX_MMAPPED                   = 0xdc\n\tDLT_USER0                               = 0x93\n\tDLT_USER1                               = 0x94\n\tDLT_USER10                              = 0x9d\n\tDLT_USER11                              = 0x9e\n\tDLT_USER12                              = 0x9f\n\tDLT_USER13                              = 0xa0\n\tDLT_USER14                              = 0xa1\n\tDLT_USER15                              = 0xa2\n\tDLT_USER2                               = 0x95\n\tDLT_USER3                               = 0x96\n\tDLT_USER4                               = 0x97\n\tDLT_USER5                               = 0x98\n\tDLT_USER6                               = 0x99\n\tDLT_USER7                               = 0x9a\n\tDLT_USER8                               = 0x9b\n\tDLT_USER9                               = 0x9c\n\tDLT_WIHART                              = 0xdf\n\tDLT_X2E_SERIAL                          = 0xd5\n\tDLT_X2E_XORAYA                          = 0xd6\n\tDT_BLK                                  = 0x6\n\tDT_CHR                                  = 0x2\n\tDT_DIR                                  = 0x4\n\tDT_FIFO                                 = 0x1\n\tDT_LNK                                  = 0xa\n\tDT_REG                                  = 0x8\n\tDT_SOCK                                 = 0xc\n\tDT_UNKNOWN                              = 0x0\n\tDT_WHT                                  = 0xe\n\tECHO                                    = 0x8\n\tECHOCTL                                 = 0x40\n\tECHOE                                   = 0x2\n\tECHOK                                   = 0x4\n\tECHOKE                                  = 0x1\n\tECHONL                                  = 0x10\n\tECHOPRT                                 = 0x20\n\tEVFILT_AIO                              = -0x3\n\tEVFILT_EXCEPT                           = -0xf\n\tEVFILT_FS                               = -0x9\n\tEVFILT_MACHPORT                         = -0x8\n\tEVFILT_PROC                             = -0x5\n\tEVFILT_READ                             = -0x1\n\tEVFILT_SIGNAL                           = -0x6\n\tEVFILT_SYSCOUNT                         = 0x11\n\tEVFILT_THREADMARKER                     = 0x11\n\tEVFILT_TIMER                            = -0x7\n\tEVFILT_USER                             = -0xa\n\tEVFILT_VM                               = -0xc\n\tEVFILT_VNODE                            = -0x4\n\tEVFILT_WRITE                            = -0x2\n\tEV_ADD                                  = 0x1\n\tEV_CLEAR                                = 0x20\n\tEV_DELETE                               = 0x2\n\tEV_DISABLE                              = 0x8\n\tEV_DISPATCH                             = 0x80\n\tEV_DISPATCH2                            = 0x180\n\tEV_ENABLE                               = 0x4\n\tEV_EOF                                  = 0x8000\n\tEV_ERROR                                = 0x4000\n\tEV_FLAG0                                = 0x1000\n\tEV_FLAG1                                = 0x2000\n\tEV_ONESHOT                              = 0x10\n\tEV_OOBAND                               = 0x2000\n\tEV_POLL                                 = 0x1000\n\tEV_RECEIPT                              = 0x40\n\tEV_SYSFLAGS                             = 0xf000\n\tEV_UDATA_SPECIFIC                       = 0x100\n\tEV_VANISHED                             = 0x200\n\tEXTA                                    = 0x4b00\n\tEXTB                                    = 0x9600\n\tEXTPROC                                 = 0x800\n\tFD_CLOEXEC                              = 0x1\n\tFD_SETSIZE                              = 0x400\n\tFF0                                     = 0x0\n\tFF1                                     = 0x4000\n\tFFDLY                                   = 0x4000\n\tFLUSHO                                  = 0x800000\n\tFSOPT_ATTR_CMN_EXTENDED                 = 0x20\n\tFSOPT_NOFOLLOW                          = 0x1\n\tFSOPT_NOINMEMUPDATE                     = 0x2\n\tFSOPT_PACK_INVAL_ATTRS                  = 0x8\n\tFSOPT_REPORT_FULLSIZE                   = 0x4\n\tFSOPT_RETURN_REALDEV                    = 0x200\n\tF_ADDFILESIGS                           = 0x3d\n\tF_ADDFILESIGS_FOR_DYLD_SIM              = 0x53\n\tF_ADDFILESIGS_INFO                      = 0x67\n\tF_ADDFILESIGS_RETURN                    = 0x61\n\tF_ADDFILESUPPL                          = 0x68\n\tF_ADDSIGS                               = 0x3b\n\tF_ALLOCATEALL                           = 0x4\n\tF_ALLOCATECONTIG                        = 0x2\n\tF_BARRIERFSYNC                          = 0x55\n\tF_CHECK_LV                              = 0x62\n\tF_CHKCLEAN                              = 0x29\n\tF_DUPFD                                 = 0x0\n\tF_DUPFD_CLOEXEC                         = 0x43\n\tF_FINDSIGS                              = 0x4e\n\tF_FLUSH_DATA                            = 0x28\n\tF_FREEZE_FS                             = 0x35\n\tF_FULLFSYNC                             = 0x33\n\tF_GETCODEDIR                            = 0x48\n\tF_GETFD                                 = 0x1\n\tF_GETFL                                 = 0x3\n\tF_GETLK                                 = 0x7\n\tF_GETLKPID                              = 0x42\n\tF_GETNOSIGPIPE                          = 0x4a\n\tF_GETOWN                                = 0x5\n\tF_GETPATH                               = 0x32\n\tF_GETPATH_MTMINFO                       = 0x47\n\tF_GETPATH_NOFIRMLINK                    = 0x66\n\tF_GETPROTECTIONCLASS                    = 0x3f\n\tF_GETPROTECTIONLEVEL                    = 0x4d\n\tF_GETSIGSINFO                           = 0x69\n\tF_GLOBAL_NOCACHE                        = 0x37\n\tF_LOG2PHYS                              = 0x31\n\tF_LOG2PHYS_EXT                          = 0x41\n\tF_NOCACHE                               = 0x30\n\tF_NODIRECT                              = 0x3e\n\tF_OK                                    = 0x0\n\tF_PATHPKG_CHECK                         = 0x34\n\tF_PEOFPOSMODE                           = 0x3\n\tF_PREALLOCATE                           = 0x2a\n\tF_PUNCHHOLE                             = 0x63\n\tF_RDADVISE                              = 0x2c\n\tF_RDAHEAD                               = 0x2d\n\tF_RDLCK                                 = 0x1\n\tF_SETBACKINGSTORE                       = 0x46\n\tF_SETFD                                 = 0x2\n\tF_SETFL                                 = 0x4\n\tF_SETLK                                 = 0x8\n\tF_SETLKW                                = 0x9\n\tF_SETLKWTIMEOUT                         = 0xa\n\tF_SETNOSIGPIPE                          = 0x49\n\tF_SETOWN                                = 0x6\n\tF_SETPROTECTIONCLASS                    = 0x40\n\tF_SETSIZE                               = 0x2b\n\tF_SINGLE_WRITER                         = 0x4c\n\tF_SPECULATIVE_READ                      = 0x65\n\tF_THAW_FS                               = 0x36\n\tF_TRANSCODEKEY                          = 0x4b\n\tF_TRIM_ACTIVE_FILE                      = 0x64\n\tF_UNLCK                                 = 0x2\n\tF_VOLPOSMODE                            = 0x4\n\tF_WRLCK                                 = 0x3\n\tHUPCL                                   = 0x4000\n\tHW_MACHINE                              = 0x1\n\tICANON                                  = 0x100\n\tICMP6_FILTER                            = 0x12\n\tICRNL                                   = 0x100\n\tIEXTEN                                  = 0x400\n\tIFF_ALLMULTI                            = 0x200\n\tIFF_ALTPHYS                             = 0x4000\n\tIFF_BROADCAST                           = 0x2\n\tIFF_DEBUG                               = 0x4\n\tIFF_LINK0                               = 0x1000\n\tIFF_LINK1                               = 0x2000\n\tIFF_LINK2                               = 0x4000\n\tIFF_LOOPBACK                            = 0x8\n\tIFF_MULTICAST                           = 0x8000\n\tIFF_NOARP                               = 0x80\n\tIFF_NOTRAILERS                          = 0x20\n\tIFF_OACTIVE                             = 0x400\n\tIFF_POINTOPOINT                         = 0x10\n\tIFF_PROMISC                             = 0x100\n\tIFF_RUNNING                             = 0x40\n\tIFF_SIMPLEX                             = 0x800\n\tIFF_UP                                  = 0x1\n\tIFNAMSIZ                                = 0x10\n\tIFT_1822                                = 0x2\n\tIFT_6LOWPAN                             = 0x40\n\tIFT_AAL5                                = 0x31\n\tIFT_ARCNET                              = 0x23\n\tIFT_ARCNETPLUS                          = 0x24\n\tIFT_ATM                                 = 0x25\n\tIFT_BRIDGE                              = 0xd1\n\tIFT_CARP                                = 0xf8\n\tIFT_CELLULAR                            = 0xff\n\tIFT_CEPT                                = 0x13\n\tIFT_DS3                                 = 0x1e\n\tIFT_ENC                                 = 0xf4\n\tIFT_EON                                 = 0x19\n\tIFT_ETHER                               = 0x6\n\tIFT_FAITH                               = 0x38\n\tIFT_FDDI                                = 0xf\n\tIFT_FRELAY                              = 0x20\n\tIFT_FRELAYDCE                           = 0x2c\n\tIFT_GIF                                 = 0x37\n\tIFT_HDH1822                             = 0x3\n\tIFT_HIPPI                               = 0x2f\n\tIFT_HSSI                                = 0x2e\n\tIFT_HY                                  = 0xe\n\tIFT_IEEE1394                            = 0x90\n\tIFT_IEEE8023ADLAG                       = 0x88\n\tIFT_ISDNBASIC                           = 0x14\n\tIFT_ISDNPRIMARY                         = 0x15\n\tIFT_ISO88022LLC                         = 0x29\n\tIFT_ISO88023                            = 0x7\n\tIFT_ISO88024                            = 0x8\n\tIFT_ISO88025                            = 0x9\n\tIFT_ISO88026                            = 0xa\n\tIFT_L2VLAN                              = 0x87\n\tIFT_LAPB                                = 0x10\n\tIFT_LOCALTALK                           = 0x2a\n\tIFT_LOOP                                = 0x18\n\tIFT_MIOX25                              = 0x26\n\tIFT_MODEM                               = 0x30\n\tIFT_NSIP                                = 0x1b\n\tIFT_OTHER                               = 0x1\n\tIFT_P10                                 = 0xc\n\tIFT_P80                                 = 0xd\n\tIFT_PARA                                = 0x22\n\tIFT_PDP                                 = 0xff\n\tIFT_PFLOG                               = 0xf5\n\tIFT_PFSYNC                              = 0xf6\n\tIFT_PKTAP                               = 0xfe\n\tIFT_PPP                                 = 0x17\n\tIFT_PROPMUX                             = 0x36\n\tIFT_PROPVIRTUAL                         = 0x35\n\tIFT_PTPSERIAL                           = 0x16\n\tIFT_RS232                               = 0x21\n\tIFT_SDLC                                = 0x11\n\tIFT_SIP                                 = 0x1f\n\tIFT_SLIP                                = 0x1c\n\tIFT_SMDSDXI                             = 0x2b\n\tIFT_SMDSICIP                            = 0x34\n\tIFT_SONET                               = 0x27\n\tIFT_SONETPATH                           = 0x32\n\tIFT_SONETVT                             = 0x33\n\tIFT_STARLAN                             = 0xb\n\tIFT_STF                                 = 0x39\n\tIFT_T1                                  = 0x12\n\tIFT_ULTRA                               = 0x1d\n\tIFT_V35                                 = 0x2d\n\tIFT_X25                                 = 0x5\n\tIFT_X25DDN                              = 0x4\n\tIFT_X25PLE                              = 0x28\n\tIFT_XETHER                              = 0x1a\n\tIGNBRK                                  = 0x1\n\tIGNCR                                   = 0x80\n\tIGNPAR                                  = 0x4\n\tIMAXBEL                                 = 0x2000\n\tINLCR                                   = 0x40\n\tINPCK                                   = 0x10\n\tIN_CLASSA_HOST                          = 0xffffff\n\tIN_CLASSA_MAX                           = 0x80\n\tIN_CLASSA_NET                           = 0xff000000\n\tIN_CLASSA_NSHIFT                        = 0x18\n\tIN_CLASSB_HOST                          = 0xffff\n\tIN_CLASSB_MAX                           = 0x10000\n\tIN_CLASSB_NET                           = 0xffff0000\n\tIN_CLASSB_NSHIFT                        = 0x10\n\tIN_CLASSC_HOST                          = 0xff\n\tIN_CLASSC_NET                           = 0xffffff00\n\tIN_CLASSC_NSHIFT                        = 0x8\n\tIN_CLASSD_HOST                          = 0xfffffff\n\tIN_CLASSD_NET                           = 0xf0000000\n\tIN_CLASSD_NSHIFT                        = 0x1c\n\tIN_LINKLOCALNETNUM                      = 0xa9fe0000\n\tIN_LOOPBACKNET                          = 0x7f\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID          = 0x400473d1\n\tIPPROTO_3PC                             = 0x22\n\tIPPROTO_ADFS                            = 0x44\n\tIPPROTO_AH                              = 0x33\n\tIPPROTO_AHIP                            = 0x3d\n\tIPPROTO_APES                            = 0x63\n\tIPPROTO_ARGUS                           = 0xd\n\tIPPROTO_AX25                            = 0x5d\n\tIPPROTO_BHA                             = 0x31\n\tIPPROTO_BLT                             = 0x1e\n\tIPPROTO_BRSATMON                        = 0x4c\n\tIPPROTO_CFTP                            = 0x3e\n\tIPPROTO_CHAOS                           = 0x10\n\tIPPROTO_CMTP                            = 0x26\n\tIPPROTO_CPHB                            = 0x49\n\tIPPROTO_CPNX                            = 0x48\n\tIPPROTO_DDP                             = 0x25\n\tIPPROTO_DGP                             = 0x56\n\tIPPROTO_DIVERT                          = 0xfe\n\tIPPROTO_DONE                            = 0x101\n\tIPPROTO_DSTOPTS                         = 0x3c\n\tIPPROTO_EGP                             = 0x8\n\tIPPROTO_EMCON                           = 0xe\n\tIPPROTO_ENCAP                           = 0x62\n\tIPPROTO_EON                             = 0x50\n\tIPPROTO_ESP                             = 0x32\n\tIPPROTO_ETHERIP                         = 0x61\n\tIPPROTO_FRAGMENT                        = 0x2c\n\tIPPROTO_GGP                             = 0x3\n\tIPPROTO_GMTP                            = 0x64\n\tIPPROTO_GRE                             = 0x2f\n\tIPPROTO_HELLO                           = 0x3f\n\tIPPROTO_HMP                             = 0x14\n\tIPPROTO_HOPOPTS                         = 0x0\n\tIPPROTO_ICMP                            = 0x1\n\tIPPROTO_ICMPV6                          = 0x3a\n\tIPPROTO_IDP                             = 0x16\n\tIPPROTO_IDPR                            = 0x23\n\tIPPROTO_IDRP                            = 0x2d\n\tIPPROTO_IGMP                            = 0x2\n\tIPPROTO_IGP                             = 0x55\n\tIPPROTO_IGRP                            = 0x58\n\tIPPROTO_IL                              = 0x28\n\tIPPROTO_INLSP                           = 0x34\n\tIPPROTO_INP                             = 0x20\n\tIPPROTO_IP                              = 0x0\n\tIPPROTO_IPCOMP                          = 0x6c\n\tIPPROTO_IPCV                            = 0x47\n\tIPPROTO_IPEIP                           = 0x5e\n\tIPPROTO_IPIP                            = 0x4\n\tIPPROTO_IPPC                            = 0x43\n\tIPPROTO_IPV4                            = 0x4\n\tIPPROTO_IPV6                            = 0x29\n\tIPPROTO_IRTP                            = 0x1c\n\tIPPROTO_KRYPTOLAN                       = 0x41\n\tIPPROTO_LARP                            = 0x5b\n\tIPPROTO_LEAF1                           = 0x19\n\tIPPROTO_LEAF2                           = 0x1a\n\tIPPROTO_MAX                             = 0x100\n\tIPPROTO_MAXID                           = 0x34\n\tIPPROTO_MEAS                            = 0x13\n\tIPPROTO_MHRP                            = 0x30\n\tIPPROTO_MICP                            = 0x5f\n\tIPPROTO_MTP                             = 0x5c\n\tIPPROTO_MUX                             = 0x12\n\tIPPROTO_ND                              = 0x4d\n\tIPPROTO_NHRP                            = 0x36\n\tIPPROTO_NONE                            = 0x3b\n\tIPPROTO_NSP                             = 0x1f\n\tIPPROTO_NVPII                           = 0xb\n\tIPPROTO_OSPFIGP                         = 0x59\n\tIPPROTO_PGM                             = 0x71\n\tIPPROTO_PIGP                            = 0x9\n\tIPPROTO_PIM                             = 0x67\n\tIPPROTO_PRM                             = 0x15\n\tIPPROTO_PUP                             = 0xc\n\tIPPROTO_PVP                             = 0x4b\n\tIPPROTO_RAW                             = 0xff\n\tIPPROTO_RCCMON                          = 0xa\n\tIPPROTO_RDP                             = 0x1b\n\tIPPROTO_ROUTING                         = 0x2b\n\tIPPROTO_RSVP                            = 0x2e\n\tIPPROTO_RVD                             = 0x42\n\tIPPROTO_SATEXPAK                        = 0x40\n\tIPPROTO_SATMON                          = 0x45\n\tIPPROTO_SCCSP                           = 0x60\n\tIPPROTO_SCTP                            = 0x84\n\tIPPROTO_SDRP                            = 0x2a\n\tIPPROTO_SEP                             = 0x21\n\tIPPROTO_SRPC                            = 0x5a\n\tIPPROTO_ST                              = 0x7\n\tIPPROTO_SVMTP                           = 0x52\n\tIPPROTO_SWIPE                           = 0x35\n\tIPPROTO_TCF                             = 0x57\n\tIPPROTO_TCP                             = 0x6\n\tIPPROTO_TP                              = 0x1d\n\tIPPROTO_TPXX                            = 0x27\n\tIPPROTO_TRUNK1                          = 0x17\n\tIPPROTO_TRUNK2                          = 0x18\n\tIPPROTO_TTP                             = 0x54\n\tIPPROTO_UDP                             = 0x11\n\tIPPROTO_VINES                           = 0x53\n\tIPPROTO_VISA                            = 0x46\n\tIPPROTO_VMTP                            = 0x51\n\tIPPROTO_WBEXPAK                         = 0x4f\n\tIPPROTO_WBMON                           = 0x4e\n\tIPPROTO_WSN                             = 0x4a\n\tIPPROTO_XNET                            = 0xf\n\tIPPROTO_XTP                             = 0x24\n\tIPV6_2292DSTOPTS                        = 0x17\n\tIPV6_2292HOPLIMIT                       = 0x14\n\tIPV6_2292HOPOPTS                        = 0x16\n\tIPV6_2292NEXTHOP                        = 0x15\n\tIPV6_2292PKTINFO                        = 0x13\n\tIPV6_2292PKTOPTIONS                     = 0x19\n\tIPV6_2292RTHDR                          = 0x18\n\tIPV6_3542DSTOPTS                        = 0x32\n\tIPV6_3542HOPLIMIT                       = 0x2f\n\tIPV6_3542HOPOPTS                        = 0x31\n\tIPV6_3542NEXTHOP                        = 0x30\n\tIPV6_3542PKTINFO                        = 0x2e\n\tIPV6_3542RTHDR                          = 0x33\n\tIPV6_ADDR_MC_FLAGS_PREFIX               = 0x20\n\tIPV6_ADDR_MC_FLAGS_TRANSIENT            = 0x10\n\tIPV6_ADDR_MC_FLAGS_UNICAST_BASED        = 0x30\n\tIPV6_AUTOFLOWLABEL                      = 0x3b\n\tIPV6_BINDV6ONLY                         = 0x1b\n\tIPV6_BOUND_IF                           = 0x7d\n\tIPV6_CHECKSUM                           = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS             = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP             = 0x1\n\tIPV6_DEFHLIM                            = 0x40\n\tIPV6_DONTFRAG                           = 0x3e\n\tIPV6_DSTOPTS                            = 0x32\n\tIPV6_FAITH                              = 0x1d\n\tIPV6_FLOWINFO_MASK                      = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK                     = 0xffff0f00\n\tIPV6_FLOW_ECN_MASK                      = 0x3000\n\tIPV6_FRAGTTL                            = 0x3c\n\tIPV6_FW_ADD                             = 0x1e\n\tIPV6_FW_DEL                             = 0x1f\n\tIPV6_FW_FLUSH                           = 0x20\n\tIPV6_FW_GET                             = 0x22\n\tIPV6_FW_ZERO                            = 0x21\n\tIPV6_HLIMDEC                            = 0x1\n\tIPV6_HOPLIMIT                           = 0x2f\n\tIPV6_HOPOPTS                            = 0x31\n\tIPV6_IPSEC_POLICY                       = 0x1c\n\tIPV6_JOIN_GROUP                         = 0xc\n\tIPV6_LEAVE_GROUP                        = 0xd\n\tIPV6_MAXHLIM                            = 0xff\n\tIPV6_MAXOPTHDR                          = 0x800\n\tIPV6_MAXPACKET                          = 0xffff\n\tIPV6_MAX_GROUP_SRC_FILTER               = 0x200\n\tIPV6_MAX_MEMBERSHIPS                    = 0xfff\n\tIPV6_MAX_SOCK_SRC_FILTER                = 0x80\n\tIPV6_MIN_MEMBERSHIPS                    = 0x1f\n\tIPV6_MMTU                               = 0x500\n\tIPV6_MSFILTER                           = 0x4a\n\tIPV6_MULTICAST_HOPS                     = 0xa\n\tIPV6_MULTICAST_IF                       = 0x9\n\tIPV6_MULTICAST_LOOP                     = 0xb\n\tIPV6_NEXTHOP                            = 0x30\n\tIPV6_PATHMTU                            = 0x2c\n\tIPV6_PKTINFO                            = 0x2e\n\tIPV6_PORTRANGE                          = 0xe\n\tIPV6_PORTRANGE_DEFAULT                  = 0x0\n\tIPV6_PORTRANGE_HIGH                     = 0x1\n\tIPV6_PORTRANGE_LOW                      = 0x2\n\tIPV6_PREFER_TEMPADDR                    = 0x3f\n\tIPV6_RECVDSTOPTS                        = 0x28\n\tIPV6_RECVHOPLIMIT                       = 0x25\n\tIPV6_RECVHOPOPTS                        = 0x27\n\tIPV6_RECVPATHMTU                        = 0x2b\n\tIPV6_RECVPKTINFO                        = 0x3d\n\tIPV6_RECVRTHDR                          = 0x26\n\tIPV6_RECVTCLASS                         = 0x23\n\tIPV6_RTHDR                              = 0x33\n\tIPV6_RTHDRDSTOPTS                       = 0x39\n\tIPV6_RTHDR_LOOSE                        = 0x0\n\tIPV6_RTHDR_STRICT                       = 0x1\n\tIPV6_RTHDR_TYPE_0                       = 0x0\n\tIPV6_SOCKOPT_RESERVED1                  = 0x3\n\tIPV6_TCLASS                             = 0x24\n\tIPV6_UNICAST_HOPS                       = 0x4\n\tIPV6_USE_MIN_MTU                        = 0x2a\n\tIPV6_V6ONLY                             = 0x1b\n\tIPV6_VERSION                            = 0x60\n\tIPV6_VERSION_MASK                       = 0xf0\n\tIP_ADD_MEMBERSHIP                       = 0xc\n\tIP_ADD_SOURCE_MEMBERSHIP                = 0x46\n\tIP_BLOCK_SOURCE                         = 0x48\n\tIP_BOUND_IF                             = 0x19\n\tIP_DEFAULT_MULTICAST_LOOP               = 0x1\n\tIP_DEFAULT_MULTICAST_TTL                = 0x1\n\tIP_DF                                   = 0x4000\n\tIP_DONTFRAG                             = 0x1c\n\tIP_DROP_MEMBERSHIP                      = 0xd\n\tIP_DROP_SOURCE_MEMBERSHIP               = 0x47\n\tIP_DUMMYNET_CONFIGURE                   = 0x3c\n\tIP_DUMMYNET_DEL                         = 0x3d\n\tIP_DUMMYNET_FLUSH                       = 0x3e\n\tIP_DUMMYNET_GET                         = 0x40\n\tIP_FAITH                                = 0x16\n\tIP_FW_ADD                               = 0x28\n\tIP_FW_DEL                               = 0x29\n\tIP_FW_FLUSH                             = 0x2a\n\tIP_FW_GET                               = 0x2c\n\tIP_FW_RESETLOG                          = 0x2d\n\tIP_FW_ZERO                              = 0x2b\n\tIP_HDRINCL                              = 0x2\n\tIP_IPSEC_POLICY                         = 0x15\n\tIP_MAXPACKET                            = 0xffff\n\tIP_MAX_GROUP_SRC_FILTER                 = 0x200\n\tIP_MAX_MEMBERSHIPS                      = 0xfff\n\tIP_MAX_SOCK_MUTE_FILTER                 = 0x80\n\tIP_MAX_SOCK_SRC_FILTER                  = 0x80\n\tIP_MF                                   = 0x2000\n\tIP_MIN_MEMBERSHIPS                      = 0x1f\n\tIP_MSFILTER                             = 0x4a\n\tIP_MSS                                  = 0x240\n\tIP_MULTICAST_IF                         = 0x9\n\tIP_MULTICAST_IFINDEX                    = 0x42\n\tIP_MULTICAST_LOOP                       = 0xb\n\tIP_MULTICAST_TTL                        = 0xa\n\tIP_MULTICAST_VIF                        = 0xe\n\tIP_NAT__XXX                             = 0x37\n\tIP_OFFMASK                              = 0x1fff\n\tIP_OLD_FW_ADD                           = 0x32\n\tIP_OLD_FW_DEL                           = 0x33\n\tIP_OLD_FW_FLUSH                         = 0x34\n\tIP_OLD_FW_GET                           = 0x36\n\tIP_OLD_FW_RESETLOG                      = 0x38\n\tIP_OLD_FW_ZERO                          = 0x35\n\tIP_OPTIONS                              = 0x1\n\tIP_PKTINFO                              = 0x1a\n\tIP_PORTRANGE                            = 0x13\n\tIP_PORTRANGE_DEFAULT                    = 0x0\n\tIP_PORTRANGE_HIGH                       = 0x1\n\tIP_PORTRANGE_LOW                        = 0x2\n\tIP_RECVDSTADDR                          = 0x7\n\tIP_RECVIF                               = 0x14\n\tIP_RECVOPTS                             = 0x5\n\tIP_RECVPKTINFO                          = 0x1a\n\tIP_RECVRETOPTS                          = 0x6\n\tIP_RECVTOS                              = 0x1b\n\tIP_RECVTTL                              = 0x18\n\tIP_RETOPTS                              = 0x8\n\tIP_RF                                   = 0x8000\n\tIP_RSVP_OFF                             = 0x10\n\tIP_RSVP_ON                              = 0xf\n\tIP_RSVP_VIF_OFF                         = 0x12\n\tIP_RSVP_VIF_ON                          = 0x11\n\tIP_STRIPHDR                             = 0x17\n\tIP_TOS                                  = 0x3\n\tIP_TRAFFIC_MGT_BACKGROUND               = 0x41\n\tIP_TTL                                  = 0x4\n\tIP_UNBLOCK_SOURCE                       = 0x49\n\tISIG                                    = 0x80\n\tISTRIP                                  = 0x20\n\tIUTF8                                   = 0x4000\n\tIXANY                                   = 0x800\n\tIXOFF                                   = 0x400\n\tIXON                                    = 0x200\n\tKERN_HOSTNAME                           = 0xa\n\tKERN_OSRELEASE                          = 0x2\n\tKERN_OSTYPE                             = 0x1\n\tKERN_VERSION                            = 0x4\n\tLOCAL_PEERCRED                          = 0x1\n\tLOCAL_PEEREPID                          = 0x3\n\tLOCAL_PEEREUUID                         = 0x5\n\tLOCAL_PEERPID                           = 0x2\n\tLOCAL_PEERTOKEN                         = 0x6\n\tLOCAL_PEERUUID                          = 0x4\n\tLOCK_EX                                 = 0x2\n\tLOCK_NB                                 = 0x4\n\tLOCK_SH                                 = 0x1\n\tLOCK_UN                                 = 0x8\n\tMADV_CAN_REUSE                          = 0x9\n\tMADV_DONTNEED                           = 0x4\n\tMADV_FREE                               = 0x5\n\tMADV_FREE_REUSABLE                      = 0x7\n\tMADV_FREE_REUSE                         = 0x8\n\tMADV_NORMAL                             = 0x0\n\tMADV_PAGEOUT                            = 0xa\n\tMADV_RANDOM                             = 0x1\n\tMADV_SEQUENTIAL                         = 0x2\n\tMADV_WILLNEED                           = 0x3\n\tMADV_ZERO_WIRED_PAGES                   = 0x6\n\tMAP_32BIT                               = 0x8000\n\tMAP_ANON                                = 0x1000\n\tMAP_ANONYMOUS                           = 0x1000\n\tMAP_COPY                                = 0x2\n\tMAP_FILE                                = 0x0\n\tMAP_FIXED                               = 0x10\n\tMAP_HASSEMAPHORE                        = 0x200\n\tMAP_JIT                                 = 0x800\n\tMAP_NOCACHE                             = 0x400\n\tMAP_NOEXTEND                            = 0x100\n\tMAP_NORESERVE                           = 0x40\n\tMAP_PRIVATE                             = 0x2\n\tMAP_RENAME                              = 0x20\n\tMAP_RESERVED0080                        = 0x80\n\tMAP_RESILIENT_CODESIGN                  = 0x2000\n\tMAP_RESILIENT_MEDIA                     = 0x4000\n\tMAP_SHARED                              = 0x1\n\tMAP_TRANSLATED_ALLOW_EXECUTE            = 0x20000\n\tMAP_UNIX03                              = 0x40000\n\tMCAST_BLOCK_SOURCE                      = 0x54\n\tMCAST_EXCLUDE                           = 0x2\n\tMCAST_INCLUDE                           = 0x1\n\tMCAST_JOIN_GROUP                        = 0x50\n\tMCAST_JOIN_SOURCE_GROUP                 = 0x52\n\tMCAST_LEAVE_GROUP                       = 0x51\n\tMCAST_LEAVE_SOURCE_GROUP                = 0x53\n\tMCAST_UNBLOCK_SOURCE                    = 0x55\n\tMCAST_UNDEFINED                         = 0x0\n\tMCL_CURRENT                             = 0x1\n\tMCL_FUTURE                              = 0x2\n\tMNT_ASYNC                               = 0x40\n\tMNT_AUTOMOUNTED                         = 0x400000\n\tMNT_CMDFLAGS                            = 0xf0000\n\tMNT_CPROTECT                            = 0x80\n\tMNT_DEFWRITE                            = 0x2000000\n\tMNT_DONTBROWSE                          = 0x100000\n\tMNT_DOVOLFS                             = 0x8000\n\tMNT_DWAIT                               = 0x4\n\tMNT_EXPORTED                            = 0x100\n\tMNT_EXT_ROOT_DATA_VOL                   = 0x1\n\tMNT_FORCE                               = 0x80000\n\tMNT_IGNORE_OWNERSHIP                    = 0x200000\n\tMNT_JOURNALED                           = 0x800000\n\tMNT_LOCAL                               = 0x1000\n\tMNT_MULTILABEL                          = 0x4000000\n\tMNT_NOATIME                             = 0x10000000\n\tMNT_NOBLOCK                             = 0x20000\n\tMNT_NODEV                               = 0x10\n\tMNT_NOEXEC                              = 0x4\n\tMNT_NOSUID                              = 0x8\n\tMNT_NOUSERXATTR                         = 0x1000000\n\tMNT_NOWAIT                              = 0x2\n\tMNT_QUARANTINE                          = 0x400\n\tMNT_QUOTA                               = 0x2000\n\tMNT_RDONLY                              = 0x1\n\tMNT_RELOAD                              = 0x40000\n\tMNT_REMOVABLE                           = 0x200\n\tMNT_ROOTFS                              = 0x4000\n\tMNT_SNAPSHOT                            = 0x40000000\n\tMNT_STRICTATIME                         = 0x80000000\n\tMNT_SYNCHRONOUS                         = 0x2\n\tMNT_UNION                               = 0x20\n\tMNT_UNKNOWNPERMISSIONS                  = 0x200000\n\tMNT_UPDATE                              = 0x10000\n\tMNT_VISFLAGMASK                         = 0xd7f0f7ff\n\tMNT_WAIT                                = 0x1\n\tMSG_CTRUNC                              = 0x20\n\tMSG_DONTROUTE                           = 0x4\n\tMSG_DONTWAIT                            = 0x80\n\tMSG_EOF                                 = 0x100\n\tMSG_EOR                                 = 0x8\n\tMSG_FLUSH                               = 0x400\n\tMSG_HAVEMORE                            = 0x2000\n\tMSG_HOLD                                = 0x800\n\tMSG_NEEDSA                              = 0x10000\n\tMSG_NOSIGNAL                            = 0x80000\n\tMSG_OOB                                 = 0x1\n\tMSG_PEEK                                = 0x2\n\tMSG_RCVMORE                             = 0x4000\n\tMSG_SEND                                = 0x1000\n\tMSG_TRUNC                               = 0x10\n\tMSG_WAITALL                             = 0x40\n\tMSG_WAITSTREAM                          = 0x200\n\tMS_ASYNC                                = 0x1\n\tMS_DEACTIVATE                           = 0x8\n\tMS_INVALIDATE                           = 0x2\n\tMS_KILLPAGES                            = 0x4\n\tMS_SYNC                                 = 0x10\n\tNAME_MAX                                = 0xff\n\tNET_RT_DUMP                             = 0x1\n\tNET_RT_DUMP2                            = 0x7\n\tNET_RT_FLAGS                            = 0x2\n\tNET_RT_FLAGS_PRIV                       = 0xa\n\tNET_RT_IFLIST                           = 0x3\n\tNET_RT_IFLIST2                          = 0x6\n\tNET_RT_MAXID                            = 0xb\n\tNET_RT_STAT                             = 0x4\n\tNET_RT_TRASH                            = 0x5\n\tNFDBITS                                 = 0x20\n\tNL0                                     = 0x0\n\tNL1                                     = 0x100\n\tNL2                                     = 0x200\n\tNL3                                     = 0x300\n\tNLDLY                                   = 0x300\n\tNOFLSH                                  = 0x80000000\n\tNOKERNINFO                              = 0x2000000\n\tNOTE_ABSOLUTE                           = 0x8\n\tNOTE_ATTRIB                             = 0x8\n\tNOTE_BACKGROUND                         = 0x40\n\tNOTE_CHILD                              = 0x4\n\tNOTE_CRITICAL                           = 0x20\n\tNOTE_DELETE                             = 0x1\n\tNOTE_EXEC                               = 0x20000000\n\tNOTE_EXIT                               = 0x80000000\n\tNOTE_EXITSTATUS                         = 0x4000000\n\tNOTE_EXIT_CSERROR                       = 0x40000\n\tNOTE_EXIT_DECRYPTFAIL                   = 0x10000\n\tNOTE_EXIT_DETAIL                        = 0x2000000\n\tNOTE_EXIT_DETAIL_MASK                   = 0x70000\n\tNOTE_EXIT_MEMORY                        = 0x20000\n\tNOTE_EXIT_REPARENTED                    = 0x80000\n\tNOTE_EXTEND                             = 0x4\n\tNOTE_FFAND                              = 0x40000000\n\tNOTE_FFCOPY                             = 0xc0000000\n\tNOTE_FFCTRLMASK                         = 0xc0000000\n\tNOTE_FFLAGSMASK                         = 0xffffff\n\tNOTE_FFNOP                              = 0x0\n\tNOTE_FFOR                               = 0x80000000\n\tNOTE_FORK                               = 0x40000000\n\tNOTE_FUNLOCK                            = 0x100\n\tNOTE_LEEWAY                             = 0x10\n\tNOTE_LINK                               = 0x10\n\tNOTE_LOWAT                              = 0x1\n\tNOTE_MACHTIME                           = 0x100\n\tNOTE_MACH_CONTINUOUS_TIME               = 0x80\n\tNOTE_NONE                               = 0x80\n\tNOTE_NSECONDS                           = 0x4\n\tNOTE_OOB                                = 0x2\n\tNOTE_PCTRLMASK                          = -0x100000\n\tNOTE_PDATAMASK                          = 0xfffff\n\tNOTE_REAP                               = 0x10000000\n\tNOTE_RENAME                             = 0x20\n\tNOTE_REVOKE                             = 0x40\n\tNOTE_SECONDS                            = 0x1\n\tNOTE_SIGNAL                             = 0x8000000\n\tNOTE_TRACK                              = 0x1\n\tNOTE_TRACKERR                           = 0x2\n\tNOTE_TRIGGER                            = 0x1000000\n\tNOTE_USECONDS                           = 0x2\n\tNOTE_VM_ERROR                           = 0x10000000\n\tNOTE_VM_PRESSURE                        = 0x80000000\n\tNOTE_VM_PRESSURE_SUDDEN_TERMINATE       = 0x20000000\n\tNOTE_VM_PRESSURE_TERMINATE              = 0x40000000\n\tNOTE_WRITE                              = 0x2\n\tOCRNL                                   = 0x10\n\tOFDEL                                   = 0x20000\n\tOFILL                                   = 0x80\n\tONLCR                                   = 0x2\n\tONLRET                                  = 0x40\n\tONOCR                                   = 0x20\n\tONOEOT                                  = 0x8\n\tOPOST                                   = 0x1\n\tOXTABS                                  = 0x4\n\tO_ACCMODE                               = 0x3\n\tO_ALERT                                 = 0x20000000\n\tO_APPEND                                = 0x8\n\tO_ASYNC                                 = 0x40\n\tO_CLOEXEC                               = 0x1000000\n\tO_CREAT                                 = 0x200\n\tO_DIRECTORY                             = 0x100000\n\tO_DP_GETRAWENCRYPTED                    = 0x1\n\tO_DP_GETRAWUNENCRYPTED                  = 0x2\n\tO_DSYNC                                 = 0x400000\n\tO_EVTONLY                               = 0x8000\n\tO_EXCL                                  = 0x800\n\tO_EXLOCK                                = 0x20\n\tO_FSYNC                                 = 0x80\n\tO_NDELAY                                = 0x4\n\tO_NOCTTY                                = 0x20000\n\tO_NOFOLLOW                              = 0x100\n\tO_NOFOLLOW_ANY                          = 0x20000000\n\tO_NONBLOCK                              = 0x4\n\tO_POPUP                                 = 0x80000000\n\tO_RDONLY                                = 0x0\n\tO_RDWR                                  = 0x2\n\tO_SHLOCK                                = 0x10\n\tO_SYMLINK                               = 0x200000\n\tO_SYNC                                  = 0x80\n\tO_TRUNC                                 = 0x400\n\tO_WRONLY                                = 0x1\n\tPARENB                                  = 0x1000\n\tPARMRK                                  = 0x8\n\tPARODD                                  = 0x2000\n\tPENDIN                                  = 0x20000000\n\tPRIO_PGRP                               = 0x1\n\tPRIO_PROCESS                            = 0x0\n\tPRIO_USER                               = 0x2\n\tPROT_EXEC                               = 0x4\n\tPROT_NONE                               = 0x0\n\tPROT_READ                               = 0x1\n\tPROT_WRITE                              = 0x2\n\tPT_ATTACH                               = 0xa\n\tPT_ATTACHEXC                            = 0xe\n\tPT_CONTINUE                             = 0x7\n\tPT_DENY_ATTACH                          = 0x1f\n\tPT_DETACH                               = 0xb\n\tPT_FIRSTMACH                            = 0x20\n\tPT_FORCEQUOTA                           = 0x1e\n\tPT_KILL                                 = 0x8\n\tPT_READ_D                               = 0x2\n\tPT_READ_I                               = 0x1\n\tPT_READ_U                               = 0x3\n\tPT_SIGEXC                               = 0xc\n\tPT_STEP                                 = 0x9\n\tPT_THUPDATE                             = 0xd\n\tPT_TRACE_ME                             = 0x0\n\tPT_WRITE_D                              = 0x5\n\tPT_WRITE_I                              = 0x4\n\tPT_WRITE_U                              = 0x6\n\tRENAME_EXCL                             = 0x4\n\tRENAME_NOFOLLOW_ANY                     = 0x10\n\tRENAME_RESERVED1                        = 0x8\n\tRENAME_SECLUDE                          = 0x1\n\tRENAME_SWAP                             = 0x2\n\tRLIMIT_AS                               = 0x5\n\tRLIMIT_CORE                             = 0x4\n\tRLIMIT_CPU                              = 0x0\n\tRLIMIT_CPU_USAGE_MONITOR                = 0x2\n\tRLIMIT_DATA                             = 0x2\n\tRLIMIT_FSIZE                            = 0x1\n\tRLIMIT_MEMLOCK                          = 0x6\n\tRLIMIT_NOFILE                           = 0x8\n\tRLIMIT_NPROC                            = 0x7\n\tRLIMIT_RSS                              = 0x5\n\tRLIMIT_STACK                            = 0x3\n\tRLIM_INFINITY                           = 0x7fffffffffffffff\n\tRTAX_AUTHOR                             = 0x6\n\tRTAX_BRD                                = 0x7\n\tRTAX_DST                                = 0x0\n\tRTAX_GATEWAY                            = 0x1\n\tRTAX_GENMASK                            = 0x3\n\tRTAX_IFA                                = 0x5\n\tRTAX_IFP                                = 0x4\n\tRTAX_MAX                                = 0x8\n\tRTAX_NETMASK                            = 0x2\n\tRTA_AUTHOR                              = 0x40\n\tRTA_BRD                                 = 0x80\n\tRTA_DST                                 = 0x1\n\tRTA_GATEWAY                             = 0x2\n\tRTA_GENMASK                             = 0x8\n\tRTA_IFA                                 = 0x20\n\tRTA_IFP                                 = 0x10\n\tRTA_NETMASK                             = 0x4\n\tRTF_BLACKHOLE                           = 0x1000\n\tRTF_BROADCAST                           = 0x400000\n\tRTF_CLONING                             = 0x100\n\tRTF_CONDEMNED                           = 0x2000000\n\tRTF_DEAD                                = 0x20000000\n\tRTF_DELCLONE                            = 0x80\n\tRTF_DONE                                = 0x40\n\tRTF_DYNAMIC                             = 0x10\n\tRTF_GATEWAY                             = 0x2\n\tRTF_GLOBAL                              = 0x40000000\n\tRTF_HOST                                = 0x4\n\tRTF_IFREF                               = 0x4000000\n\tRTF_IFSCOPE                             = 0x1000000\n\tRTF_LLDATA                              = 0x400\n\tRTF_LLINFO                              = 0x400\n\tRTF_LOCAL                               = 0x200000\n\tRTF_MODIFIED                            = 0x20\n\tRTF_MULTICAST                           = 0x800000\n\tRTF_NOIFREF                             = 0x2000\n\tRTF_PINNED                              = 0x100000\n\tRTF_PRCLONING                           = 0x10000\n\tRTF_PROTO1                              = 0x8000\n\tRTF_PROTO2                              = 0x4000\n\tRTF_PROTO3                              = 0x40000\n\tRTF_PROXY                               = 0x8000000\n\tRTF_REJECT                              = 0x8\n\tRTF_ROUTER                              = 0x10000000\n\tRTF_STATIC                              = 0x800\n\tRTF_UP                                  = 0x1\n\tRTF_WASCLONED                           = 0x20000\n\tRTF_XRESOLVE                            = 0x200\n\tRTM_ADD                                 = 0x1\n\tRTM_CHANGE                              = 0x3\n\tRTM_DELADDR                             = 0xd\n\tRTM_DELETE                              = 0x2\n\tRTM_DELMADDR                            = 0x10\n\tRTM_GET                                 = 0x4\n\tRTM_GET2                                = 0x14\n\tRTM_IFINFO                              = 0xe\n\tRTM_IFINFO2                             = 0x12\n\tRTM_LOCK                                = 0x8\n\tRTM_LOSING                              = 0x5\n\tRTM_MISS                                = 0x7\n\tRTM_NEWADDR                             = 0xc\n\tRTM_NEWMADDR                            = 0xf\n\tRTM_NEWMADDR2                           = 0x13\n\tRTM_OLDADD                              = 0x9\n\tRTM_OLDDEL                              = 0xa\n\tRTM_REDIRECT                            = 0x6\n\tRTM_RESOLVE                             = 0xb\n\tRTM_RTTUNIT                             = 0xf4240\n\tRTM_VERSION                             = 0x5\n\tRTV_EXPIRE                              = 0x4\n\tRTV_HOPCOUNT                            = 0x2\n\tRTV_MTU                                 = 0x1\n\tRTV_RPIPE                               = 0x8\n\tRTV_RTT                                 = 0x40\n\tRTV_RTTVAR                              = 0x80\n\tRTV_SPIPE                               = 0x10\n\tRTV_SSTHRESH                            = 0x20\n\tRUSAGE_CHILDREN                         = -0x1\n\tRUSAGE_SELF                             = 0x0\n\tSAE_ASSOCID_ALL                         = 0xffffffff\n\tSAE_ASSOCID_ANY                         = 0x0\n\tSAE_CONNID_ALL                          = 0xffffffff\n\tSAE_CONNID_ANY                          = 0x0\n\tSCM_CREDS                               = 0x3\n\tSCM_RIGHTS                              = 0x1\n\tSCM_TIMESTAMP                           = 0x2\n\tSCM_TIMESTAMP_MONOTONIC                 = 0x4\n\tSEEK_CUR                                = 0x1\n\tSEEK_DATA                               = 0x4\n\tSEEK_END                                = 0x2\n\tSEEK_HOLE                               = 0x3\n\tSEEK_SET                                = 0x0\n\tSF_APPEND                               = 0x40000\n\tSF_ARCHIVED                             = 0x10000\n\tSF_DATALESS                             = 0x40000000\n\tSF_FIRMLINK                             = 0x800000\n\tSF_IMMUTABLE                            = 0x20000\n\tSF_NOUNLINK                             = 0x100000\n\tSF_RESTRICTED                           = 0x80000\n\tSF_SETTABLE                             = 0x3fff0000\n\tSF_SUPPORTED                            = 0x9f0000\n\tSF_SYNTHETIC                            = 0xc0000000\n\tSHUT_RD                                 = 0x0\n\tSHUT_RDWR                               = 0x2\n\tSHUT_WR                                 = 0x1\n\tSIOCADDMULTI                            = 0x80206931\n\tSIOCAIFADDR                             = 0x8040691a\n\tSIOCARPIPLL                             = 0xc0206928\n\tSIOCATMARK                              = 0x40047307\n\tSIOCAUTOADDR                            = 0xc0206926\n\tSIOCAUTONETMASK                         = 0x80206927\n\tSIOCDELMULTI                            = 0x80206932\n\tSIOCDIFADDR                             = 0x80206919\n\tSIOCDIFPHYADDR                          = 0x80206941\n\tSIOCGDRVSPEC                            = 0xc028697b\n\tSIOCGETVLAN                             = 0xc020697f\n\tSIOCGHIWAT                              = 0x40047301\n\tSIOCGIF6LOWPAN                          = 0xc02069c5\n\tSIOCGIFADDR                             = 0xc0206921\n\tSIOCGIFALTMTU                           = 0xc0206948\n\tSIOCGIFASYNCMAP                         = 0xc020697c\n\tSIOCGIFBOND                             = 0xc0206947\n\tSIOCGIFBRDADDR                          = 0xc0206923\n\tSIOCGIFCAP                              = 0xc020695b\n\tSIOCGIFCONF                             = 0xc00c6924\n\tSIOCGIFDEVMTU                           = 0xc0206944\n\tSIOCGIFDSTADDR                          = 0xc0206922\n\tSIOCGIFFLAGS                            = 0xc0206911\n\tSIOCGIFFUNCTIONALTYPE                   = 0xc02069ad\n\tSIOCGIFGENERIC                          = 0xc020693a\n\tSIOCGIFKPI                              = 0xc0206987\n\tSIOCGIFMAC                              = 0xc0206982\n\tSIOCGIFMEDIA                            = 0xc02c6938\n\tSIOCGIFMETRIC                           = 0xc0206917\n\tSIOCGIFMTU                              = 0xc0206933\n\tSIOCGIFNETMASK                          = 0xc0206925\n\tSIOCGIFPDSTADDR                         = 0xc0206940\n\tSIOCGIFPHYS                             = 0xc0206935\n\tSIOCGIFPSRCADDR                         = 0xc020693f\n\tSIOCGIFSTATUS                           = 0xc331693d\n\tSIOCGIFVLAN                             = 0xc020697f\n\tSIOCGIFWAKEFLAGS                        = 0xc0206988\n\tSIOCGIFXMEDIA                           = 0xc02c6948\n\tSIOCGLOWAT                              = 0x40047303\n\tSIOCGPGRP                               = 0x40047309\n\tSIOCIFCREATE                            = 0xc0206978\n\tSIOCIFCREATE2                           = 0xc020697a\n\tSIOCIFDESTROY                           = 0x80206979\n\tSIOCIFGCLONERS                          = 0xc0106981\n\tSIOCRSLVMULTI                           = 0xc010693b\n\tSIOCSDRVSPEC                            = 0x8028697b\n\tSIOCSETVLAN                             = 0x8020697e\n\tSIOCSHIWAT                              = 0x80047300\n\tSIOCSIF6LOWPAN                          = 0x802069c4\n\tSIOCSIFADDR                             = 0x8020690c\n\tSIOCSIFALTMTU                           = 0x80206945\n\tSIOCSIFASYNCMAP                         = 0x8020697d\n\tSIOCSIFBOND                             = 0x80206946\n\tSIOCSIFBRDADDR                          = 0x80206913\n\tSIOCSIFCAP                              = 0x8020695a\n\tSIOCSIFDSTADDR                          = 0x8020690e\n\tSIOCSIFFLAGS                            = 0x80206910\n\tSIOCSIFGENERIC                          = 0x80206939\n\tSIOCSIFKPI                              = 0x80206986\n\tSIOCSIFLLADDR                           = 0x8020693c\n\tSIOCSIFMAC                              = 0x80206983\n\tSIOCSIFMEDIA                            = 0xc0206937\n\tSIOCSIFMETRIC                           = 0x80206918\n\tSIOCSIFMTU                              = 0x80206934\n\tSIOCSIFNETMASK                          = 0x80206916\n\tSIOCSIFPHYADDR                          = 0x8040693e\n\tSIOCSIFPHYS                             = 0x80206936\n\tSIOCSIFVLAN                             = 0x8020697e\n\tSIOCSLOWAT                              = 0x80047302\n\tSIOCSPGRP                               = 0x80047308\n\tSOCK_DGRAM                              = 0x2\n\tSOCK_MAXADDRLEN                         = 0xff\n\tSOCK_RAW                                = 0x3\n\tSOCK_RDM                                = 0x4\n\tSOCK_SEQPACKET                          = 0x5\n\tSOCK_STREAM                             = 0x1\n\tSOL_LOCAL                               = 0x0\n\tSOL_SOCKET                              = 0xffff\n\tSOMAXCONN                               = 0x80\n\tSO_ACCEPTCONN                           = 0x2\n\tSO_BROADCAST                            = 0x20\n\tSO_DEBUG                                = 0x1\n\tSO_DONTROUTE                            = 0x10\n\tSO_DONTTRUNC                            = 0x2000\n\tSO_ERROR                                = 0x1007\n\tSO_KEEPALIVE                            = 0x8\n\tSO_LABEL                                = 0x1010\n\tSO_LINGER                               = 0x80\n\tSO_LINGER_SEC                           = 0x1080\n\tSO_NETSVC_MARKING_LEVEL                 = 0x1119\n\tSO_NET_SERVICE_TYPE                     = 0x1116\n\tSO_NKE                                  = 0x1021\n\tSO_NOADDRERR                            = 0x1023\n\tSO_NOSIGPIPE                            = 0x1022\n\tSO_NOTIFYCONFLICT                       = 0x1026\n\tSO_NP_EXTENSIONS                        = 0x1083\n\tSO_NREAD                                = 0x1020\n\tSO_NUMRCVPKT                            = 0x1112\n\tSO_NWRITE                               = 0x1024\n\tSO_OOBINLINE                            = 0x100\n\tSO_PEERLABEL                            = 0x1011\n\tSO_RANDOMPORT                           = 0x1082\n\tSO_RCVBUF                               = 0x1002\n\tSO_RCVLOWAT                             = 0x1004\n\tSO_RCVTIMEO                             = 0x1006\n\tSO_REUSEADDR                            = 0x4\n\tSO_REUSEPORT                            = 0x200\n\tSO_REUSESHAREUID                        = 0x1025\n\tSO_SNDBUF                               = 0x1001\n\tSO_SNDLOWAT                             = 0x1003\n\tSO_SNDTIMEO                             = 0x1005\n\tSO_TIMESTAMP                            = 0x400\n\tSO_TIMESTAMP_MONOTONIC                  = 0x800\n\tSO_TRACKER_ATTRIBUTE_FLAGS_APP_APPROVED = 0x1\n\tSO_TRACKER_ATTRIBUTE_FLAGS_DOMAIN_SHORT = 0x4\n\tSO_TRACKER_ATTRIBUTE_FLAGS_TRACKER      = 0x2\n\tSO_TRACKER_TRANSPARENCY_VERSION         = 0x3\n\tSO_TYPE                                 = 0x1008\n\tSO_UPCALLCLOSEWAIT                      = 0x1027\n\tSO_USELOOPBACK                          = 0x40\n\tSO_WANTMORE                             = 0x4000\n\tSO_WANTOOBFLAG                          = 0x8000\n\tS_IEXEC                                 = 0x40\n\tS_IFBLK                                 = 0x6000\n\tS_IFCHR                                 = 0x2000\n\tS_IFDIR                                 = 0x4000\n\tS_IFIFO                                 = 0x1000\n\tS_IFLNK                                 = 0xa000\n\tS_IFMT                                  = 0xf000\n\tS_IFREG                                 = 0x8000\n\tS_IFSOCK                                = 0xc000\n\tS_IFWHT                                 = 0xe000\n\tS_IREAD                                 = 0x100\n\tS_IRGRP                                 = 0x20\n\tS_IROTH                                 = 0x4\n\tS_IRUSR                                 = 0x100\n\tS_IRWXG                                 = 0x38\n\tS_IRWXO                                 = 0x7\n\tS_IRWXU                                 = 0x1c0\n\tS_ISGID                                 = 0x400\n\tS_ISTXT                                 = 0x200\n\tS_ISUID                                 = 0x800\n\tS_ISVTX                                 = 0x200\n\tS_IWGRP                                 = 0x10\n\tS_IWOTH                                 = 0x2\n\tS_IWRITE                                = 0x80\n\tS_IWUSR                                 = 0x80\n\tS_IXGRP                                 = 0x8\n\tS_IXOTH                                 = 0x1\n\tS_IXUSR                                 = 0x40\n\tTAB0                                    = 0x0\n\tTAB1                                    = 0x400\n\tTAB2                                    = 0x800\n\tTAB3                                    = 0x4\n\tTABDLY                                  = 0xc04\n\tTCIFLUSH                                = 0x1\n\tTCIOFF                                  = 0x3\n\tTCIOFLUSH                               = 0x3\n\tTCION                                   = 0x4\n\tTCOFLUSH                                = 0x2\n\tTCOOFF                                  = 0x1\n\tTCOON                                   = 0x2\n\tTCPOPT_CC                               = 0xb\n\tTCPOPT_CCECHO                           = 0xd\n\tTCPOPT_CCNEW                            = 0xc\n\tTCPOPT_EOL                              = 0x0\n\tTCPOPT_FASTOPEN                         = 0x22\n\tTCPOPT_MAXSEG                           = 0x2\n\tTCPOPT_NOP                              = 0x1\n\tTCPOPT_SACK                             = 0x5\n\tTCPOPT_SACK_HDR                         = 0x1010500\n\tTCPOPT_SACK_PERMITTED                   = 0x4\n\tTCPOPT_SACK_PERMIT_HDR                  = 0x1010402\n\tTCPOPT_SIGNATURE                        = 0x13\n\tTCPOPT_TIMESTAMP                        = 0x8\n\tTCPOPT_TSTAMP_HDR                       = 0x101080a\n\tTCPOPT_WINDOW                           = 0x3\n\tTCP_CONNECTIONTIMEOUT                   = 0x20\n\tTCP_CONNECTION_INFO                     = 0x106\n\tTCP_ENABLE_ECN                          = 0x104\n\tTCP_FASTOPEN                            = 0x105\n\tTCP_KEEPALIVE                           = 0x10\n\tTCP_KEEPCNT                             = 0x102\n\tTCP_KEEPINTVL                           = 0x101\n\tTCP_MAXHLEN                             = 0x3c\n\tTCP_MAXOLEN                             = 0x28\n\tTCP_MAXSEG                              = 0x2\n\tTCP_MAXWIN                              = 0xffff\n\tTCP_MAX_SACK                            = 0x4\n\tTCP_MAX_WINSHIFT                        = 0xe\n\tTCP_MINMSS                              = 0xd8\n\tTCP_MSS                                 = 0x200\n\tTCP_NODELAY                             = 0x1\n\tTCP_NOOPT                               = 0x8\n\tTCP_NOPUSH                              = 0x4\n\tTCP_NOTSENT_LOWAT                       = 0x201\n\tTCP_RXT_CONNDROPTIME                    = 0x80\n\tTCP_RXT_FINDROP                         = 0x100\n\tTCP_SENDMOREACKS                        = 0x103\n\tTCSAFLUSH                               = 0x2\n\tTIOCCBRK                                = 0x2000747a\n\tTIOCCDTR                                = 0x20007478\n\tTIOCCONS                                = 0x80047462\n\tTIOCDCDTIMESTAMP                        = 0x40107458\n\tTIOCDRAIN                               = 0x2000745e\n\tTIOCDSIMICROCODE                        = 0x20007455\n\tTIOCEXCL                                = 0x2000740d\n\tTIOCEXT                                 = 0x80047460\n\tTIOCFLUSH                               = 0x80047410\n\tTIOCGDRAINWAIT                          = 0x40047456\n\tTIOCGETA                                = 0x40487413\n\tTIOCGETD                                = 0x4004741a\n\tTIOCGPGRP                               = 0x40047477\n\tTIOCGWINSZ                              = 0x40087468\n\tTIOCIXOFF                               = 0x20007480\n\tTIOCIXON                                = 0x20007481\n\tTIOCMBIC                                = 0x8004746b\n\tTIOCMBIS                                = 0x8004746c\n\tTIOCMGDTRWAIT                           = 0x4004745a\n\tTIOCMGET                                = 0x4004746a\n\tTIOCMODG                                = 0x40047403\n\tTIOCMODS                                = 0x80047404\n\tTIOCMSDTRWAIT                           = 0x8004745b\n\tTIOCMSET                                = 0x8004746d\n\tTIOCM_CAR                               = 0x40\n\tTIOCM_CD                                = 0x40\n\tTIOCM_CTS                               = 0x20\n\tTIOCM_DSR                               = 0x100\n\tTIOCM_DTR                               = 0x2\n\tTIOCM_LE                                = 0x1\n\tTIOCM_RI                                = 0x80\n\tTIOCM_RNG                               = 0x80\n\tTIOCM_RTS                               = 0x4\n\tTIOCM_SR                                = 0x10\n\tTIOCM_ST                                = 0x8\n\tTIOCNOTTY                               = 0x20007471\n\tTIOCNXCL                                = 0x2000740e\n\tTIOCOUTQ                                = 0x40047473\n\tTIOCPKT                                 = 0x80047470\n\tTIOCPKT_DATA                            = 0x0\n\tTIOCPKT_DOSTOP                          = 0x20\n\tTIOCPKT_FLUSHREAD                       = 0x1\n\tTIOCPKT_FLUSHWRITE                      = 0x2\n\tTIOCPKT_IOCTL                           = 0x40\n\tTIOCPKT_NOSTOP                          = 0x10\n\tTIOCPKT_START                           = 0x8\n\tTIOCPKT_STOP                            = 0x4\n\tTIOCPTYGNAME                            = 0x40807453\n\tTIOCPTYGRANT                            = 0x20007454\n\tTIOCPTYUNLK                             = 0x20007452\n\tTIOCREMOTE                              = 0x80047469\n\tTIOCSBRK                                = 0x2000747b\n\tTIOCSCONS                               = 0x20007463\n\tTIOCSCTTY                               = 0x20007461\n\tTIOCSDRAINWAIT                          = 0x80047457\n\tTIOCSDTR                                = 0x20007479\n\tTIOCSETA                                = 0x80487414\n\tTIOCSETAF                               = 0x80487416\n\tTIOCSETAW                               = 0x80487415\n\tTIOCSETD                                = 0x8004741b\n\tTIOCSIG                                 = 0x2000745f\n\tTIOCSPGRP                               = 0x80047476\n\tTIOCSTART                               = 0x2000746e\n\tTIOCSTAT                                = 0x20007465\n\tTIOCSTI                                 = 0x80017472\n\tTIOCSTOP                                = 0x2000746f\n\tTIOCSWINSZ                              = 0x80087467\n\tTIOCTIMESTAMP                           = 0x40107459\n\tTIOCUCNTL                               = 0x80047466\n\tTOSTOP                                  = 0x400000\n\tUF_APPEND                               = 0x4\n\tUF_COMPRESSED                           = 0x20\n\tUF_DATAVAULT                            = 0x80\n\tUF_HIDDEN                               = 0x8000\n\tUF_IMMUTABLE                            = 0x2\n\tUF_NODUMP                               = 0x1\n\tUF_OPAQUE                               = 0x8\n\tUF_SETTABLE                             = 0xffff\n\tUF_TRACKED                              = 0x40\n\tVDISCARD                                = 0xf\n\tVDSUSP                                  = 0xb\n\tVEOF                                    = 0x0\n\tVEOL                                    = 0x1\n\tVEOL2                                   = 0x2\n\tVERASE                                  = 0x3\n\tVINTR                                   = 0x8\n\tVKILL                                   = 0x5\n\tVLNEXT                                  = 0xe\n\tVMADDR_CID_ANY                          = 0xffffffff\n\tVMADDR_CID_HOST                         = 0x2\n\tVMADDR_CID_HYPERVISOR                   = 0x0\n\tVMADDR_CID_RESERVED                     = 0x1\n\tVMADDR_PORT_ANY                         = 0xffffffff\n\tVMIN                                    = 0x10\n\tVM_LOADAVG                              = 0x2\n\tVM_MACHFACTOR                           = 0x4\n\tVM_MAXID                                = 0x6\n\tVM_METER                                = 0x1\n\tVM_SWAPUSAGE                            = 0x5\n\tVQUIT                                   = 0x9\n\tVREPRINT                                = 0x6\n\tVSTART                                  = 0xc\n\tVSTATUS                                 = 0x12\n\tVSTOP                                   = 0xd\n\tVSUSP                                   = 0xa\n\tVT0                                     = 0x0\n\tVT1                                     = 0x10000\n\tVTDLY                                   = 0x10000\n\tVTIME                                   = 0x11\n\tVWERASE                                 = 0x4\n\tWCONTINUED                              = 0x10\n\tWCOREFLAG                               = 0x80\n\tWEXITED                                 = 0x4\n\tWNOHANG                                 = 0x1\n\tWNOWAIT                                 = 0x20\n\tWORDSIZE                                = 0x40\n\tWSTOPPED                                = 0x8\n\tWUNTRACED                               = 0x2\n\tXATTR_CREATE                            = 0x2\n\tXATTR_NODEFAULT                         = 0x10\n\tXATTR_NOFOLLOW                          = 0x1\n\tXATTR_NOSECURITY                        = 0x8\n\tXATTR_REPLACE                           = 0x4\n\tXATTR_SHOWCOMPRESSION                   = 0x20\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADARCH        = syscall.Errno(0x56)\n\tEBADEXEC        = syscall.Errno(0x55)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMACHO       = syscall.Errno(0x58)\n\tEBADMSG         = syscall.Errno(0x5e)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x59)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDEVERR         = syscall.Errno(0x53)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x5a)\n\tEILSEQ          = syscall.Errno(0x5c)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x6a)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5f)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x5d)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODATA         = syscall.Errno(0x60)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x61)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x5b)\n\tENOPOLICY       = syscall.Errno(0x67)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x62)\n\tENOSTR          = syscall.Errno(0x63)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x68)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x2d)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x66)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEOWNERDEAD      = syscall.Errno(0x69)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x64)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tEPWROFF         = syscall.Errno(0x52)\n\tEQFULL          = syscall.Errno(0x6a)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHLIBVERS      = syscall.Errno(0x57)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIME           = syscall.Errno(0x65)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"ENOTSUP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EPWROFF\", \"device power is off\"},\n\t{83, \"EDEVERR\", \"device error\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"EBADEXEC\", \"bad executable (or shared library)\"},\n\t{86, \"EBADARCH\", \"bad CPU type in executable\"},\n\t{87, \"ESHLIBVERS\", \"shared library version mismatch\"},\n\t{88, \"EBADMACHO\", \"malformed Mach-o file\"},\n\t{89, \"ECANCELED\", \"operation canceled\"},\n\t{90, \"EIDRM\", \"identifier removed\"},\n\t{91, \"ENOMSG\", \"no message of desired type\"},\n\t{92, \"EILSEQ\", \"illegal byte sequence\"},\n\t{93, \"ENOATTR\", \"attribute not found\"},\n\t{94, \"EBADMSG\", \"bad message\"},\n\t{95, \"EMULTIHOP\", \"EMULTIHOP (Reserved)\"},\n\t{96, \"ENODATA\", \"no message available on STREAM\"},\n\t{97, \"ENOLINK\", \"ENOLINK (Reserved)\"},\n\t{98, \"ENOSR\", \"no STREAM resources\"},\n\t{99, \"ENOSTR\", \"not a STREAM\"},\n\t{100, \"EPROTO\", \"protocol error\"},\n\t{101, \"ETIME\", \"STREAM ioctl timeout\"},\n\t{102, \"EOPNOTSUPP\", \"operation not supported on socket\"},\n\t{103, \"ENOPOLICY\", \"policy not found\"},\n\t{104, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{105, \"EOWNERDEAD\", \"previous owner died\"},\n\t{106, \"EQFULL\", \"interface output queue is full\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGABRT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && darwin\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                            = 0x10\n\tAF_CCITT                                = 0xa\n\tAF_CHAOS                                = 0x5\n\tAF_CNT                                  = 0x15\n\tAF_COIP                                 = 0x14\n\tAF_DATAKIT                              = 0x9\n\tAF_DECnet                               = 0xc\n\tAF_DLI                                  = 0xd\n\tAF_E164                                 = 0x1c\n\tAF_ECMA                                 = 0x8\n\tAF_HYLINK                               = 0xf\n\tAF_IEEE80211                            = 0x25\n\tAF_IMPLINK                              = 0x3\n\tAF_INET                                 = 0x2\n\tAF_INET6                                = 0x1e\n\tAF_IPX                                  = 0x17\n\tAF_ISDN                                 = 0x1c\n\tAF_ISO                                  = 0x7\n\tAF_LAT                                  = 0xe\n\tAF_LINK                                 = 0x12\n\tAF_LOCAL                                = 0x1\n\tAF_MAX                                  = 0x29\n\tAF_NATM                                 = 0x1f\n\tAF_NDRV                                 = 0x1b\n\tAF_NETBIOS                              = 0x21\n\tAF_NS                                   = 0x6\n\tAF_OSI                                  = 0x7\n\tAF_PPP                                  = 0x22\n\tAF_PUP                                  = 0x4\n\tAF_RESERVED_36                          = 0x24\n\tAF_ROUTE                                = 0x11\n\tAF_SIP                                  = 0x18\n\tAF_SNA                                  = 0xb\n\tAF_SYSTEM                               = 0x20\n\tAF_SYS_CONTROL                          = 0x2\n\tAF_UNIX                                 = 0x1\n\tAF_UNSPEC                               = 0x0\n\tAF_UTUN                                 = 0x26\n\tAF_VSOCK                                = 0x28\n\tALTWERASE                               = 0x200\n\tATTR_BIT_MAP_COUNT                      = 0x5\n\tATTR_CMN_ACCESSMASK                     = 0x20000\n\tATTR_CMN_ACCTIME                        = 0x1000\n\tATTR_CMN_ADDEDTIME                      = 0x10000000\n\tATTR_CMN_BKUPTIME                       = 0x2000\n\tATTR_CMN_CHGTIME                        = 0x800\n\tATTR_CMN_CRTIME                         = 0x200\n\tATTR_CMN_DATA_PROTECT_FLAGS             = 0x40000000\n\tATTR_CMN_DEVID                          = 0x2\n\tATTR_CMN_DOCUMENT_ID                    = 0x100000\n\tATTR_CMN_ERROR                          = 0x20000000\n\tATTR_CMN_EXTENDED_SECURITY              = 0x400000\n\tATTR_CMN_FILEID                         = 0x2000000\n\tATTR_CMN_FLAGS                          = 0x40000\n\tATTR_CMN_FNDRINFO                       = 0x4000\n\tATTR_CMN_FSID                           = 0x4\n\tATTR_CMN_FULLPATH                       = 0x8000000\n\tATTR_CMN_GEN_COUNT                      = 0x80000\n\tATTR_CMN_GRPID                          = 0x10000\n\tATTR_CMN_GRPUUID                        = 0x1000000\n\tATTR_CMN_MODTIME                        = 0x400\n\tATTR_CMN_NAME                           = 0x1\n\tATTR_CMN_NAMEDATTRCOUNT                 = 0x80000\n\tATTR_CMN_NAMEDATTRLIST                  = 0x100000\n\tATTR_CMN_OBJID                          = 0x20\n\tATTR_CMN_OBJPERMANENTID                 = 0x40\n\tATTR_CMN_OBJTAG                         = 0x10\n\tATTR_CMN_OBJTYPE                        = 0x8\n\tATTR_CMN_OWNERID                        = 0x8000\n\tATTR_CMN_PARENTID                       = 0x4000000\n\tATTR_CMN_PAROBJID                       = 0x80\n\tATTR_CMN_RETURNED_ATTRS                 = 0x80000000\n\tATTR_CMN_SCRIPT                         = 0x100\n\tATTR_CMN_SETMASK                        = 0x51c7ff00\n\tATTR_CMN_USERACCESS                     = 0x200000\n\tATTR_CMN_UUID                           = 0x800000\n\tATTR_CMN_VALIDMASK                      = 0xffffffff\n\tATTR_CMN_VOLSETMASK                     = 0x6700\n\tATTR_FILE_ALLOCSIZE                     = 0x4\n\tATTR_FILE_CLUMPSIZE                     = 0x10\n\tATTR_FILE_DATAALLOCSIZE                 = 0x400\n\tATTR_FILE_DATAEXTENTS                   = 0x800\n\tATTR_FILE_DATALENGTH                    = 0x200\n\tATTR_FILE_DEVTYPE                       = 0x20\n\tATTR_FILE_FILETYPE                      = 0x40\n\tATTR_FILE_FORKCOUNT                     = 0x80\n\tATTR_FILE_FORKLIST                      = 0x100\n\tATTR_FILE_IOBLOCKSIZE                   = 0x8\n\tATTR_FILE_LINKCOUNT                     = 0x1\n\tATTR_FILE_RSRCALLOCSIZE                 = 0x2000\n\tATTR_FILE_RSRCEXTENTS                   = 0x4000\n\tATTR_FILE_RSRCLENGTH                    = 0x1000\n\tATTR_FILE_SETMASK                       = 0x20\n\tATTR_FILE_TOTALSIZE                     = 0x2\n\tATTR_FILE_VALIDMASK                     = 0x37ff\n\tATTR_VOL_ALLOCATIONCLUMP                = 0x40\n\tATTR_VOL_ATTRIBUTES                     = 0x40000000\n\tATTR_VOL_CAPABILITIES                   = 0x20000\n\tATTR_VOL_DIRCOUNT                       = 0x400\n\tATTR_VOL_ENCODINGSUSED                  = 0x10000\n\tATTR_VOL_FILECOUNT                      = 0x200\n\tATTR_VOL_FSTYPE                         = 0x1\n\tATTR_VOL_INFO                           = 0x80000000\n\tATTR_VOL_IOBLOCKSIZE                    = 0x80\n\tATTR_VOL_MAXOBJCOUNT                    = 0x800\n\tATTR_VOL_MINALLOCATION                  = 0x20\n\tATTR_VOL_MOUNTEDDEVICE                  = 0x8000\n\tATTR_VOL_MOUNTFLAGS                     = 0x4000\n\tATTR_VOL_MOUNTPOINT                     = 0x1000\n\tATTR_VOL_NAME                           = 0x2000\n\tATTR_VOL_OBJCOUNT                       = 0x100\n\tATTR_VOL_QUOTA_SIZE                     = 0x10000000\n\tATTR_VOL_RESERVED_SIZE                  = 0x20000000\n\tATTR_VOL_SETMASK                        = 0x80002000\n\tATTR_VOL_SIGNATURE                      = 0x2\n\tATTR_VOL_SIZE                           = 0x4\n\tATTR_VOL_SPACEAVAIL                     = 0x10\n\tATTR_VOL_SPACEFREE                      = 0x8\n\tATTR_VOL_SPACEUSED                      = 0x800000\n\tATTR_VOL_UUID                           = 0x40000\n\tATTR_VOL_VALIDMASK                      = 0xf087ffff\n\tB0                                      = 0x0\n\tB110                                    = 0x6e\n\tB115200                                 = 0x1c200\n\tB1200                                   = 0x4b0\n\tB134                                    = 0x86\n\tB14400                                  = 0x3840\n\tB150                                    = 0x96\n\tB1800                                   = 0x708\n\tB19200                                  = 0x4b00\n\tB200                                    = 0xc8\n\tB230400                                 = 0x38400\n\tB2400                                   = 0x960\n\tB28800                                  = 0x7080\n\tB300                                    = 0x12c\n\tB38400                                  = 0x9600\n\tB4800                                   = 0x12c0\n\tB50                                     = 0x32\n\tB57600                                  = 0xe100\n\tB600                                    = 0x258\n\tB7200                                   = 0x1c20\n\tB75                                     = 0x4b\n\tB76800                                  = 0x12c00\n\tB9600                                   = 0x2580\n\tBIOCFLUSH                               = 0x20004268\n\tBIOCGBLEN                               = 0x40044266\n\tBIOCGDLT                                = 0x4004426a\n\tBIOCGDLTLIST                            = 0xc00c4279\n\tBIOCGETIF                               = 0x4020426b\n\tBIOCGHDRCMPLT                           = 0x40044274\n\tBIOCGRSIG                               = 0x40044272\n\tBIOCGRTIMEOUT                           = 0x4010426e\n\tBIOCGSEESENT                            = 0x40044276\n\tBIOCGSTATS                              = 0x4008426f\n\tBIOCIMMEDIATE                           = 0x80044270\n\tBIOCPROMISC                             = 0x20004269\n\tBIOCSBLEN                               = 0xc0044266\n\tBIOCSDLT                                = 0x80044278\n\tBIOCSETF                                = 0x80104267\n\tBIOCSETFNR                              = 0x8010427e\n\tBIOCSETIF                               = 0x8020426c\n\tBIOCSHDRCMPLT                           = 0x80044275\n\tBIOCSRSIG                               = 0x80044273\n\tBIOCSRTIMEOUT                           = 0x8010426d\n\tBIOCSSEESENT                            = 0x80044277\n\tBIOCVERSION                             = 0x40044271\n\tBPF_A                                   = 0x10\n\tBPF_ABS                                 = 0x20\n\tBPF_ADD                                 = 0x0\n\tBPF_ALIGNMENT                           = 0x4\n\tBPF_ALU                                 = 0x4\n\tBPF_AND                                 = 0x50\n\tBPF_B                                   = 0x10\n\tBPF_DIV                                 = 0x30\n\tBPF_H                                   = 0x8\n\tBPF_IMM                                 = 0x0\n\tBPF_IND                                 = 0x40\n\tBPF_JA                                  = 0x0\n\tBPF_JEQ                                 = 0x10\n\tBPF_JGE                                 = 0x30\n\tBPF_JGT                                 = 0x20\n\tBPF_JMP                                 = 0x5\n\tBPF_JSET                                = 0x40\n\tBPF_K                                   = 0x0\n\tBPF_LD                                  = 0x0\n\tBPF_LDX                                 = 0x1\n\tBPF_LEN                                 = 0x80\n\tBPF_LSH                                 = 0x60\n\tBPF_MAJOR_VERSION                       = 0x1\n\tBPF_MAXBUFSIZE                          = 0x80000\n\tBPF_MAXINSNS                            = 0x200\n\tBPF_MEM                                 = 0x60\n\tBPF_MEMWORDS                            = 0x10\n\tBPF_MINBUFSIZE                          = 0x20\n\tBPF_MINOR_VERSION                       = 0x1\n\tBPF_MISC                                = 0x7\n\tBPF_MSH                                 = 0xa0\n\tBPF_MUL                                 = 0x20\n\tBPF_NEG                                 = 0x80\n\tBPF_OR                                  = 0x40\n\tBPF_RELEASE                             = 0x30bb6\n\tBPF_RET                                 = 0x6\n\tBPF_RSH                                 = 0x70\n\tBPF_ST                                  = 0x2\n\tBPF_STX                                 = 0x3\n\tBPF_SUB                                 = 0x10\n\tBPF_TAX                                 = 0x0\n\tBPF_TXA                                 = 0x80\n\tBPF_W                                   = 0x0\n\tBPF_X                                   = 0x8\n\tBRKINT                                  = 0x2\n\tBS0                                     = 0x0\n\tBS1                                     = 0x8000\n\tBSDLY                                   = 0x8000\n\tCFLUSH                                  = 0xf\n\tCLOCAL                                  = 0x8000\n\tCLOCK_MONOTONIC                         = 0x6\n\tCLOCK_MONOTONIC_RAW                     = 0x4\n\tCLOCK_MONOTONIC_RAW_APPROX              = 0x5\n\tCLOCK_PROCESS_CPUTIME_ID                = 0xc\n\tCLOCK_REALTIME                          = 0x0\n\tCLOCK_THREAD_CPUTIME_ID                 = 0x10\n\tCLOCK_UPTIME_RAW                        = 0x8\n\tCLOCK_UPTIME_RAW_APPROX                 = 0x9\n\tCLONE_NOFOLLOW                          = 0x1\n\tCLONE_NOOWNERCOPY                       = 0x2\n\tCONNECT_DATA_AUTHENTICATED              = 0x4\n\tCONNECT_DATA_IDEMPOTENT                 = 0x2\n\tCONNECT_RESUME_ON_READ_WRITE            = 0x1\n\tCR0                                     = 0x0\n\tCR1                                     = 0x1000\n\tCR2                                     = 0x2000\n\tCR3                                     = 0x3000\n\tCRDLY                                   = 0x3000\n\tCREAD                                   = 0x800\n\tCRTSCTS                                 = 0x30000\n\tCS5                                     = 0x0\n\tCS6                                     = 0x100\n\tCS7                                     = 0x200\n\tCS8                                     = 0x300\n\tCSIZE                                   = 0x300\n\tCSTART                                  = 0x11\n\tCSTATUS                                 = 0x14\n\tCSTOP                                   = 0x13\n\tCSTOPB                                  = 0x400\n\tCSUSP                                   = 0x1a\n\tCTLIOCGINFO                             = 0xc0644e03\n\tCTL_HW                                  = 0x6\n\tCTL_KERN                                = 0x1\n\tCTL_MAXNAME                             = 0xc\n\tCTL_NET                                 = 0x4\n\tDLT_A429                                = 0xb8\n\tDLT_A653_ICM                            = 0xb9\n\tDLT_AIRONET_HEADER                      = 0x78\n\tDLT_AOS                                 = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394              = 0x8a\n\tDLT_ARCNET                              = 0x7\n\tDLT_ARCNET_LINUX                        = 0x81\n\tDLT_ATM_CLIP                            = 0x13\n\tDLT_ATM_RFC1483                         = 0xb\n\tDLT_AURORA                              = 0x7e\n\tDLT_AX25                                = 0x3\n\tDLT_AX25_KISS                           = 0xca\n\tDLT_BACNET_MS_TP                        = 0xa5\n\tDLT_BLUETOOTH_HCI_H4                    = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR          = 0xc9\n\tDLT_CAN20B                              = 0xbe\n\tDLT_CAN_SOCKETCAN                       = 0xe3\n\tDLT_CHAOS                               = 0x5\n\tDLT_CHDLC                               = 0x68\n\tDLT_CISCO_IOS                           = 0x76\n\tDLT_C_HDLC                              = 0x68\n\tDLT_C_HDLC_WITH_DIR                     = 0xcd\n\tDLT_DBUS                                = 0xe7\n\tDLT_DECT                                = 0xdd\n\tDLT_DOCSIS                              = 0x8f\n\tDLT_DVB_CI                              = 0xeb\n\tDLT_ECONET                              = 0x73\n\tDLT_EN10MB                              = 0x1\n\tDLT_EN3MB                               = 0x2\n\tDLT_ENC                                 = 0x6d\n\tDLT_ERF                                 = 0xc5\n\tDLT_ERF_ETH                             = 0xaf\n\tDLT_ERF_POS                             = 0xb0\n\tDLT_FC_2                                = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS              = 0xe1\n\tDLT_FDDI                                = 0xa\n\tDLT_FLEXRAY                             = 0xd2\n\tDLT_FRELAY                              = 0x6b\n\tDLT_FRELAY_WITH_DIR                     = 0xce\n\tDLT_GCOM_SERIAL                         = 0xad\n\tDLT_GCOM_T1E1                           = 0xac\n\tDLT_GPF_F                               = 0xab\n\tDLT_GPF_T                               = 0xaa\n\tDLT_GPRS_LLC                            = 0xa9\n\tDLT_GSMTAP_ABIS                         = 0xda\n\tDLT_GSMTAP_UM                           = 0xd9\n\tDLT_HHDLC                               = 0x79\n\tDLT_IBM_SN                              = 0x92\n\tDLT_IBM_SP                              = 0x91\n\tDLT_IEEE802                             = 0x6\n\tDLT_IEEE802_11                          = 0x69\n\tDLT_IEEE802_11_RADIO                    = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS                = 0xa3\n\tDLT_IEEE802_15_4                        = 0xc3\n\tDLT_IEEE802_15_4_LINUX                  = 0xbf\n\tDLT_IEEE802_15_4_NOFCS                  = 0xe6\n\tDLT_IEEE802_15_4_NONASK_PHY             = 0xd7\n\tDLT_IEEE802_16_MAC_CPS                  = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO            = 0xc1\n\tDLT_IPFILTER                            = 0x74\n\tDLT_IPMB                                = 0xc7\n\tDLT_IPMB_LINUX                          = 0xd1\n\tDLT_IPNET                               = 0xe2\n\tDLT_IPOIB                               = 0xf2\n\tDLT_IPV4                                = 0xe4\n\tDLT_IPV6                                = 0xe5\n\tDLT_IP_OVER_FC                          = 0x7a\n\tDLT_JUNIPER_ATM1                        = 0x89\n\tDLT_JUNIPER_ATM2                        = 0x87\n\tDLT_JUNIPER_ATM_CEMIC                   = 0xee\n\tDLT_JUNIPER_CHDLC                       = 0xb5\n\tDLT_JUNIPER_ES                          = 0x84\n\tDLT_JUNIPER_ETHER                       = 0xb2\n\tDLT_JUNIPER_FIBRECHANNEL                = 0xea\n\tDLT_JUNIPER_FRELAY                      = 0xb4\n\tDLT_JUNIPER_GGSN                        = 0x85\n\tDLT_JUNIPER_ISM                         = 0xc2\n\tDLT_JUNIPER_MFR                         = 0x86\n\tDLT_JUNIPER_MLFR                        = 0x83\n\tDLT_JUNIPER_MLPPP                       = 0x82\n\tDLT_JUNIPER_MONITOR                     = 0xa4\n\tDLT_JUNIPER_PIC_PEER                    = 0xae\n\tDLT_JUNIPER_PPP                         = 0xb3\n\tDLT_JUNIPER_PPPOE                       = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM                   = 0xa8\n\tDLT_JUNIPER_SERVICES                    = 0x88\n\tDLT_JUNIPER_SRX_E2E                     = 0xe9\n\tDLT_JUNIPER_ST                          = 0xc8\n\tDLT_JUNIPER_VP                          = 0xb7\n\tDLT_JUNIPER_VS                          = 0xe8\n\tDLT_LAPB_WITH_DIR                       = 0xcf\n\tDLT_LAPD                                = 0xcb\n\tDLT_LIN                                 = 0xd4\n\tDLT_LINUX_EVDEV                         = 0xd8\n\tDLT_LINUX_IRDA                          = 0x90\n\tDLT_LINUX_LAPD                          = 0xb1\n\tDLT_LINUX_PPP_WITHDIRECTION             = 0xa6\n\tDLT_LINUX_SLL                           = 0x71\n\tDLT_LOOP                                = 0x6c\n\tDLT_LTALK                               = 0x72\n\tDLT_MATCHING_MAX                        = 0x10a\n\tDLT_MATCHING_MIN                        = 0x68\n\tDLT_MFR                                 = 0xb6\n\tDLT_MOST                                = 0xd3\n\tDLT_MPEG_2_TS                           = 0xf3\n\tDLT_MPLS                                = 0xdb\n\tDLT_MTP2                                = 0x8c\n\tDLT_MTP2_WITH_PHDR                      = 0x8b\n\tDLT_MTP3                                = 0x8d\n\tDLT_MUX27010                            = 0xec\n\tDLT_NETANALYZER                         = 0xf0\n\tDLT_NETANALYZER_TRANSPARENT             = 0xf1\n\tDLT_NFC_LLCP                            = 0xf5\n\tDLT_NFLOG                               = 0xef\n\tDLT_NG40                                = 0xf4\n\tDLT_NULL                                = 0x0\n\tDLT_PCI_EXP                             = 0x7d\n\tDLT_PFLOG                               = 0x75\n\tDLT_PFSYNC                              = 0x12\n\tDLT_PPI                                 = 0xc0\n\tDLT_PPP                                 = 0x9\n\tDLT_PPP_BSDOS                           = 0x10\n\tDLT_PPP_ETHER                           = 0x33\n\tDLT_PPP_PPPD                            = 0xa6\n\tDLT_PPP_SERIAL                          = 0x32\n\tDLT_PPP_WITH_DIR                        = 0xcc\n\tDLT_PPP_WITH_DIRECTION                  = 0xa6\n\tDLT_PRISM_HEADER                        = 0x77\n\tDLT_PRONET                              = 0x4\n\tDLT_RAIF1                               = 0xc6\n\tDLT_RAW                                 = 0xc\n\tDLT_RIO                                 = 0x7c\n\tDLT_SCCP                                = 0x8e\n\tDLT_SITA                                = 0xc4\n\tDLT_SLIP                                = 0x8\n\tDLT_SLIP_BSDOS                          = 0xf\n\tDLT_STANAG_5066_D_PDU                   = 0xed\n\tDLT_SUNATM                              = 0x7b\n\tDLT_SYMANTEC_FIREWALL                   = 0x63\n\tDLT_TZSP                                = 0x80\n\tDLT_USB                                 = 0xba\n\tDLT_USB_DARWIN                          = 0x10a\n\tDLT_USB_LINUX                           = 0xbd\n\tDLT_USB_LINUX_MMAPPED                   = 0xdc\n\tDLT_USER0                               = 0x93\n\tDLT_USER1                               = 0x94\n\tDLT_USER10                              = 0x9d\n\tDLT_USER11                              = 0x9e\n\tDLT_USER12                              = 0x9f\n\tDLT_USER13                              = 0xa0\n\tDLT_USER14                              = 0xa1\n\tDLT_USER15                              = 0xa2\n\tDLT_USER2                               = 0x95\n\tDLT_USER3                               = 0x96\n\tDLT_USER4                               = 0x97\n\tDLT_USER5                               = 0x98\n\tDLT_USER6                               = 0x99\n\tDLT_USER7                               = 0x9a\n\tDLT_USER8                               = 0x9b\n\tDLT_USER9                               = 0x9c\n\tDLT_WIHART                              = 0xdf\n\tDLT_X2E_SERIAL                          = 0xd5\n\tDLT_X2E_XORAYA                          = 0xd6\n\tDT_BLK                                  = 0x6\n\tDT_CHR                                  = 0x2\n\tDT_DIR                                  = 0x4\n\tDT_FIFO                                 = 0x1\n\tDT_LNK                                  = 0xa\n\tDT_REG                                  = 0x8\n\tDT_SOCK                                 = 0xc\n\tDT_UNKNOWN                              = 0x0\n\tDT_WHT                                  = 0xe\n\tECHO                                    = 0x8\n\tECHOCTL                                 = 0x40\n\tECHOE                                   = 0x2\n\tECHOK                                   = 0x4\n\tECHOKE                                  = 0x1\n\tECHONL                                  = 0x10\n\tECHOPRT                                 = 0x20\n\tEVFILT_AIO                              = -0x3\n\tEVFILT_EXCEPT                           = -0xf\n\tEVFILT_FS                               = -0x9\n\tEVFILT_MACHPORT                         = -0x8\n\tEVFILT_PROC                             = -0x5\n\tEVFILT_READ                             = -0x1\n\tEVFILT_SIGNAL                           = -0x6\n\tEVFILT_SYSCOUNT                         = 0x11\n\tEVFILT_THREADMARKER                     = 0x11\n\tEVFILT_TIMER                            = -0x7\n\tEVFILT_USER                             = -0xa\n\tEVFILT_VM                               = -0xc\n\tEVFILT_VNODE                            = -0x4\n\tEVFILT_WRITE                            = -0x2\n\tEV_ADD                                  = 0x1\n\tEV_CLEAR                                = 0x20\n\tEV_DELETE                               = 0x2\n\tEV_DISABLE                              = 0x8\n\tEV_DISPATCH                             = 0x80\n\tEV_DISPATCH2                            = 0x180\n\tEV_ENABLE                               = 0x4\n\tEV_EOF                                  = 0x8000\n\tEV_ERROR                                = 0x4000\n\tEV_FLAG0                                = 0x1000\n\tEV_FLAG1                                = 0x2000\n\tEV_ONESHOT                              = 0x10\n\tEV_OOBAND                               = 0x2000\n\tEV_POLL                                 = 0x1000\n\tEV_RECEIPT                              = 0x40\n\tEV_SYSFLAGS                             = 0xf000\n\tEV_UDATA_SPECIFIC                       = 0x100\n\tEV_VANISHED                             = 0x200\n\tEXTA                                    = 0x4b00\n\tEXTB                                    = 0x9600\n\tEXTPROC                                 = 0x800\n\tFD_CLOEXEC                              = 0x1\n\tFD_SETSIZE                              = 0x400\n\tFF0                                     = 0x0\n\tFF1                                     = 0x4000\n\tFFDLY                                   = 0x4000\n\tFLUSHO                                  = 0x800000\n\tFSOPT_ATTR_CMN_EXTENDED                 = 0x20\n\tFSOPT_NOFOLLOW                          = 0x1\n\tFSOPT_NOINMEMUPDATE                     = 0x2\n\tFSOPT_PACK_INVAL_ATTRS                  = 0x8\n\tFSOPT_REPORT_FULLSIZE                   = 0x4\n\tFSOPT_RETURN_REALDEV                    = 0x200\n\tF_ADDFILESIGS                           = 0x3d\n\tF_ADDFILESIGS_FOR_DYLD_SIM              = 0x53\n\tF_ADDFILESIGS_INFO                      = 0x67\n\tF_ADDFILESIGS_RETURN                    = 0x61\n\tF_ADDFILESUPPL                          = 0x68\n\tF_ADDSIGS                               = 0x3b\n\tF_ALLOCATEALL                           = 0x4\n\tF_ALLOCATECONTIG                        = 0x2\n\tF_BARRIERFSYNC                          = 0x55\n\tF_CHECK_LV                              = 0x62\n\tF_CHKCLEAN                              = 0x29\n\tF_DUPFD                                 = 0x0\n\tF_DUPFD_CLOEXEC                         = 0x43\n\tF_FINDSIGS                              = 0x4e\n\tF_FLUSH_DATA                            = 0x28\n\tF_FREEZE_FS                             = 0x35\n\tF_FULLFSYNC                             = 0x33\n\tF_GETCODEDIR                            = 0x48\n\tF_GETFD                                 = 0x1\n\tF_GETFL                                 = 0x3\n\tF_GETLK                                 = 0x7\n\tF_GETLKPID                              = 0x42\n\tF_GETNOSIGPIPE                          = 0x4a\n\tF_GETOWN                                = 0x5\n\tF_GETPATH                               = 0x32\n\tF_GETPATH_MTMINFO                       = 0x47\n\tF_GETPATH_NOFIRMLINK                    = 0x66\n\tF_GETPROTECTIONCLASS                    = 0x3f\n\tF_GETPROTECTIONLEVEL                    = 0x4d\n\tF_GETSIGSINFO                           = 0x69\n\tF_GLOBAL_NOCACHE                        = 0x37\n\tF_LOG2PHYS                              = 0x31\n\tF_LOG2PHYS_EXT                          = 0x41\n\tF_NOCACHE                               = 0x30\n\tF_NODIRECT                              = 0x3e\n\tF_OK                                    = 0x0\n\tF_PATHPKG_CHECK                         = 0x34\n\tF_PEOFPOSMODE                           = 0x3\n\tF_PREALLOCATE                           = 0x2a\n\tF_PUNCHHOLE                             = 0x63\n\tF_RDADVISE                              = 0x2c\n\tF_RDAHEAD                               = 0x2d\n\tF_RDLCK                                 = 0x1\n\tF_SETBACKINGSTORE                       = 0x46\n\tF_SETFD                                 = 0x2\n\tF_SETFL                                 = 0x4\n\tF_SETLK                                 = 0x8\n\tF_SETLKW                                = 0x9\n\tF_SETLKWTIMEOUT                         = 0xa\n\tF_SETNOSIGPIPE                          = 0x49\n\tF_SETOWN                                = 0x6\n\tF_SETPROTECTIONCLASS                    = 0x40\n\tF_SETSIZE                               = 0x2b\n\tF_SINGLE_WRITER                         = 0x4c\n\tF_SPECULATIVE_READ                      = 0x65\n\tF_THAW_FS                               = 0x36\n\tF_TRANSCODEKEY                          = 0x4b\n\tF_TRIM_ACTIVE_FILE                      = 0x64\n\tF_UNLCK                                 = 0x2\n\tF_VOLPOSMODE                            = 0x4\n\tF_WRLCK                                 = 0x3\n\tHUPCL                                   = 0x4000\n\tHW_MACHINE                              = 0x1\n\tICANON                                  = 0x100\n\tICMP6_FILTER                            = 0x12\n\tICRNL                                   = 0x100\n\tIEXTEN                                  = 0x400\n\tIFF_ALLMULTI                            = 0x200\n\tIFF_ALTPHYS                             = 0x4000\n\tIFF_BROADCAST                           = 0x2\n\tIFF_DEBUG                               = 0x4\n\tIFF_LINK0                               = 0x1000\n\tIFF_LINK1                               = 0x2000\n\tIFF_LINK2                               = 0x4000\n\tIFF_LOOPBACK                            = 0x8\n\tIFF_MULTICAST                           = 0x8000\n\tIFF_NOARP                               = 0x80\n\tIFF_NOTRAILERS                          = 0x20\n\tIFF_OACTIVE                             = 0x400\n\tIFF_POINTOPOINT                         = 0x10\n\tIFF_PROMISC                             = 0x100\n\tIFF_RUNNING                             = 0x40\n\tIFF_SIMPLEX                             = 0x800\n\tIFF_UP                                  = 0x1\n\tIFNAMSIZ                                = 0x10\n\tIFT_1822                                = 0x2\n\tIFT_6LOWPAN                             = 0x40\n\tIFT_AAL5                                = 0x31\n\tIFT_ARCNET                              = 0x23\n\tIFT_ARCNETPLUS                          = 0x24\n\tIFT_ATM                                 = 0x25\n\tIFT_BRIDGE                              = 0xd1\n\tIFT_CARP                                = 0xf8\n\tIFT_CELLULAR                            = 0xff\n\tIFT_CEPT                                = 0x13\n\tIFT_DS3                                 = 0x1e\n\tIFT_ENC                                 = 0xf4\n\tIFT_EON                                 = 0x19\n\tIFT_ETHER                               = 0x6\n\tIFT_FAITH                               = 0x38\n\tIFT_FDDI                                = 0xf\n\tIFT_FRELAY                              = 0x20\n\tIFT_FRELAYDCE                           = 0x2c\n\tIFT_GIF                                 = 0x37\n\tIFT_HDH1822                             = 0x3\n\tIFT_HIPPI                               = 0x2f\n\tIFT_HSSI                                = 0x2e\n\tIFT_HY                                  = 0xe\n\tIFT_IEEE1394                            = 0x90\n\tIFT_IEEE8023ADLAG                       = 0x88\n\tIFT_ISDNBASIC                           = 0x14\n\tIFT_ISDNPRIMARY                         = 0x15\n\tIFT_ISO88022LLC                         = 0x29\n\tIFT_ISO88023                            = 0x7\n\tIFT_ISO88024                            = 0x8\n\tIFT_ISO88025                            = 0x9\n\tIFT_ISO88026                            = 0xa\n\tIFT_L2VLAN                              = 0x87\n\tIFT_LAPB                                = 0x10\n\tIFT_LOCALTALK                           = 0x2a\n\tIFT_LOOP                                = 0x18\n\tIFT_MIOX25                              = 0x26\n\tIFT_MODEM                               = 0x30\n\tIFT_NSIP                                = 0x1b\n\tIFT_OTHER                               = 0x1\n\tIFT_P10                                 = 0xc\n\tIFT_P80                                 = 0xd\n\tIFT_PARA                                = 0x22\n\tIFT_PDP                                 = 0xff\n\tIFT_PFLOG                               = 0xf5\n\tIFT_PFSYNC                              = 0xf6\n\tIFT_PKTAP                               = 0xfe\n\tIFT_PPP                                 = 0x17\n\tIFT_PROPMUX                             = 0x36\n\tIFT_PROPVIRTUAL                         = 0x35\n\tIFT_PTPSERIAL                           = 0x16\n\tIFT_RS232                               = 0x21\n\tIFT_SDLC                                = 0x11\n\tIFT_SIP                                 = 0x1f\n\tIFT_SLIP                                = 0x1c\n\tIFT_SMDSDXI                             = 0x2b\n\tIFT_SMDSICIP                            = 0x34\n\tIFT_SONET                               = 0x27\n\tIFT_SONETPATH                           = 0x32\n\tIFT_SONETVT                             = 0x33\n\tIFT_STARLAN                             = 0xb\n\tIFT_STF                                 = 0x39\n\tIFT_T1                                  = 0x12\n\tIFT_ULTRA                               = 0x1d\n\tIFT_V35                                 = 0x2d\n\tIFT_X25                                 = 0x5\n\tIFT_X25DDN                              = 0x4\n\tIFT_X25PLE                              = 0x28\n\tIFT_XETHER                              = 0x1a\n\tIGNBRK                                  = 0x1\n\tIGNCR                                   = 0x80\n\tIGNPAR                                  = 0x4\n\tIMAXBEL                                 = 0x2000\n\tINLCR                                   = 0x40\n\tINPCK                                   = 0x10\n\tIN_CLASSA_HOST                          = 0xffffff\n\tIN_CLASSA_MAX                           = 0x80\n\tIN_CLASSA_NET                           = 0xff000000\n\tIN_CLASSA_NSHIFT                        = 0x18\n\tIN_CLASSB_HOST                          = 0xffff\n\tIN_CLASSB_MAX                           = 0x10000\n\tIN_CLASSB_NET                           = 0xffff0000\n\tIN_CLASSB_NSHIFT                        = 0x10\n\tIN_CLASSC_HOST                          = 0xff\n\tIN_CLASSC_NET                           = 0xffffff00\n\tIN_CLASSC_NSHIFT                        = 0x8\n\tIN_CLASSD_HOST                          = 0xfffffff\n\tIN_CLASSD_NET                           = 0xf0000000\n\tIN_CLASSD_NSHIFT                        = 0x1c\n\tIN_LINKLOCALNETNUM                      = 0xa9fe0000\n\tIN_LOOPBACKNET                          = 0x7f\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID          = 0x400473d1\n\tIPPROTO_3PC                             = 0x22\n\tIPPROTO_ADFS                            = 0x44\n\tIPPROTO_AH                              = 0x33\n\tIPPROTO_AHIP                            = 0x3d\n\tIPPROTO_APES                            = 0x63\n\tIPPROTO_ARGUS                           = 0xd\n\tIPPROTO_AX25                            = 0x5d\n\tIPPROTO_BHA                             = 0x31\n\tIPPROTO_BLT                             = 0x1e\n\tIPPROTO_BRSATMON                        = 0x4c\n\tIPPROTO_CFTP                            = 0x3e\n\tIPPROTO_CHAOS                           = 0x10\n\tIPPROTO_CMTP                            = 0x26\n\tIPPROTO_CPHB                            = 0x49\n\tIPPROTO_CPNX                            = 0x48\n\tIPPROTO_DDP                             = 0x25\n\tIPPROTO_DGP                             = 0x56\n\tIPPROTO_DIVERT                          = 0xfe\n\tIPPROTO_DONE                            = 0x101\n\tIPPROTO_DSTOPTS                         = 0x3c\n\tIPPROTO_EGP                             = 0x8\n\tIPPROTO_EMCON                           = 0xe\n\tIPPROTO_ENCAP                           = 0x62\n\tIPPROTO_EON                             = 0x50\n\tIPPROTO_ESP                             = 0x32\n\tIPPROTO_ETHERIP                         = 0x61\n\tIPPROTO_FRAGMENT                        = 0x2c\n\tIPPROTO_GGP                             = 0x3\n\tIPPROTO_GMTP                            = 0x64\n\tIPPROTO_GRE                             = 0x2f\n\tIPPROTO_HELLO                           = 0x3f\n\tIPPROTO_HMP                             = 0x14\n\tIPPROTO_HOPOPTS                         = 0x0\n\tIPPROTO_ICMP                            = 0x1\n\tIPPROTO_ICMPV6                          = 0x3a\n\tIPPROTO_IDP                             = 0x16\n\tIPPROTO_IDPR                            = 0x23\n\tIPPROTO_IDRP                            = 0x2d\n\tIPPROTO_IGMP                            = 0x2\n\tIPPROTO_IGP                             = 0x55\n\tIPPROTO_IGRP                            = 0x58\n\tIPPROTO_IL                              = 0x28\n\tIPPROTO_INLSP                           = 0x34\n\tIPPROTO_INP                             = 0x20\n\tIPPROTO_IP                              = 0x0\n\tIPPROTO_IPCOMP                          = 0x6c\n\tIPPROTO_IPCV                            = 0x47\n\tIPPROTO_IPEIP                           = 0x5e\n\tIPPROTO_IPIP                            = 0x4\n\tIPPROTO_IPPC                            = 0x43\n\tIPPROTO_IPV4                            = 0x4\n\tIPPROTO_IPV6                            = 0x29\n\tIPPROTO_IRTP                            = 0x1c\n\tIPPROTO_KRYPTOLAN                       = 0x41\n\tIPPROTO_LARP                            = 0x5b\n\tIPPROTO_LEAF1                           = 0x19\n\tIPPROTO_LEAF2                           = 0x1a\n\tIPPROTO_MAX                             = 0x100\n\tIPPROTO_MAXID                           = 0x34\n\tIPPROTO_MEAS                            = 0x13\n\tIPPROTO_MHRP                            = 0x30\n\tIPPROTO_MICP                            = 0x5f\n\tIPPROTO_MTP                             = 0x5c\n\tIPPROTO_MUX                             = 0x12\n\tIPPROTO_ND                              = 0x4d\n\tIPPROTO_NHRP                            = 0x36\n\tIPPROTO_NONE                            = 0x3b\n\tIPPROTO_NSP                             = 0x1f\n\tIPPROTO_NVPII                           = 0xb\n\tIPPROTO_OSPFIGP                         = 0x59\n\tIPPROTO_PGM                             = 0x71\n\tIPPROTO_PIGP                            = 0x9\n\tIPPROTO_PIM                             = 0x67\n\tIPPROTO_PRM                             = 0x15\n\tIPPROTO_PUP                             = 0xc\n\tIPPROTO_PVP                             = 0x4b\n\tIPPROTO_RAW                             = 0xff\n\tIPPROTO_RCCMON                          = 0xa\n\tIPPROTO_RDP                             = 0x1b\n\tIPPROTO_ROUTING                         = 0x2b\n\tIPPROTO_RSVP                            = 0x2e\n\tIPPROTO_RVD                             = 0x42\n\tIPPROTO_SATEXPAK                        = 0x40\n\tIPPROTO_SATMON                          = 0x45\n\tIPPROTO_SCCSP                           = 0x60\n\tIPPROTO_SCTP                            = 0x84\n\tIPPROTO_SDRP                            = 0x2a\n\tIPPROTO_SEP                             = 0x21\n\tIPPROTO_SRPC                            = 0x5a\n\tIPPROTO_ST                              = 0x7\n\tIPPROTO_SVMTP                           = 0x52\n\tIPPROTO_SWIPE                           = 0x35\n\tIPPROTO_TCF                             = 0x57\n\tIPPROTO_TCP                             = 0x6\n\tIPPROTO_TP                              = 0x1d\n\tIPPROTO_TPXX                            = 0x27\n\tIPPROTO_TRUNK1                          = 0x17\n\tIPPROTO_TRUNK2                          = 0x18\n\tIPPROTO_TTP                             = 0x54\n\tIPPROTO_UDP                             = 0x11\n\tIPPROTO_VINES                           = 0x53\n\tIPPROTO_VISA                            = 0x46\n\tIPPROTO_VMTP                            = 0x51\n\tIPPROTO_WBEXPAK                         = 0x4f\n\tIPPROTO_WBMON                           = 0x4e\n\tIPPROTO_WSN                             = 0x4a\n\tIPPROTO_XNET                            = 0xf\n\tIPPROTO_XTP                             = 0x24\n\tIPV6_2292DSTOPTS                        = 0x17\n\tIPV6_2292HOPLIMIT                       = 0x14\n\tIPV6_2292HOPOPTS                        = 0x16\n\tIPV6_2292NEXTHOP                        = 0x15\n\tIPV6_2292PKTINFO                        = 0x13\n\tIPV6_2292PKTOPTIONS                     = 0x19\n\tIPV6_2292RTHDR                          = 0x18\n\tIPV6_3542DSTOPTS                        = 0x32\n\tIPV6_3542HOPLIMIT                       = 0x2f\n\tIPV6_3542HOPOPTS                        = 0x31\n\tIPV6_3542NEXTHOP                        = 0x30\n\tIPV6_3542PKTINFO                        = 0x2e\n\tIPV6_3542RTHDR                          = 0x33\n\tIPV6_ADDR_MC_FLAGS_PREFIX               = 0x20\n\tIPV6_ADDR_MC_FLAGS_TRANSIENT            = 0x10\n\tIPV6_ADDR_MC_FLAGS_UNICAST_BASED        = 0x30\n\tIPV6_AUTOFLOWLABEL                      = 0x3b\n\tIPV6_BINDV6ONLY                         = 0x1b\n\tIPV6_BOUND_IF                           = 0x7d\n\tIPV6_CHECKSUM                           = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS             = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP             = 0x1\n\tIPV6_DEFHLIM                            = 0x40\n\tIPV6_DONTFRAG                           = 0x3e\n\tIPV6_DSTOPTS                            = 0x32\n\tIPV6_FAITH                              = 0x1d\n\tIPV6_FLOWINFO_MASK                      = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK                     = 0xffff0f00\n\tIPV6_FLOW_ECN_MASK                      = 0x3000\n\tIPV6_FRAGTTL                            = 0x3c\n\tIPV6_FW_ADD                             = 0x1e\n\tIPV6_FW_DEL                             = 0x1f\n\tIPV6_FW_FLUSH                           = 0x20\n\tIPV6_FW_GET                             = 0x22\n\tIPV6_FW_ZERO                            = 0x21\n\tIPV6_HLIMDEC                            = 0x1\n\tIPV6_HOPLIMIT                           = 0x2f\n\tIPV6_HOPOPTS                            = 0x31\n\tIPV6_IPSEC_POLICY                       = 0x1c\n\tIPV6_JOIN_GROUP                         = 0xc\n\tIPV6_LEAVE_GROUP                        = 0xd\n\tIPV6_MAXHLIM                            = 0xff\n\tIPV6_MAXOPTHDR                          = 0x800\n\tIPV6_MAXPACKET                          = 0xffff\n\tIPV6_MAX_GROUP_SRC_FILTER               = 0x200\n\tIPV6_MAX_MEMBERSHIPS                    = 0xfff\n\tIPV6_MAX_SOCK_SRC_FILTER                = 0x80\n\tIPV6_MIN_MEMBERSHIPS                    = 0x1f\n\tIPV6_MMTU                               = 0x500\n\tIPV6_MSFILTER                           = 0x4a\n\tIPV6_MULTICAST_HOPS                     = 0xa\n\tIPV6_MULTICAST_IF                       = 0x9\n\tIPV6_MULTICAST_LOOP                     = 0xb\n\tIPV6_NEXTHOP                            = 0x30\n\tIPV6_PATHMTU                            = 0x2c\n\tIPV6_PKTINFO                            = 0x2e\n\tIPV6_PORTRANGE                          = 0xe\n\tIPV6_PORTRANGE_DEFAULT                  = 0x0\n\tIPV6_PORTRANGE_HIGH                     = 0x1\n\tIPV6_PORTRANGE_LOW                      = 0x2\n\tIPV6_PREFER_TEMPADDR                    = 0x3f\n\tIPV6_RECVDSTOPTS                        = 0x28\n\tIPV6_RECVHOPLIMIT                       = 0x25\n\tIPV6_RECVHOPOPTS                        = 0x27\n\tIPV6_RECVPATHMTU                        = 0x2b\n\tIPV6_RECVPKTINFO                        = 0x3d\n\tIPV6_RECVRTHDR                          = 0x26\n\tIPV6_RECVTCLASS                         = 0x23\n\tIPV6_RTHDR                              = 0x33\n\tIPV6_RTHDRDSTOPTS                       = 0x39\n\tIPV6_RTHDR_LOOSE                        = 0x0\n\tIPV6_RTHDR_STRICT                       = 0x1\n\tIPV6_RTHDR_TYPE_0                       = 0x0\n\tIPV6_SOCKOPT_RESERVED1                  = 0x3\n\tIPV6_TCLASS                             = 0x24\n\tIPV6_UNICAST_HOPS                       = 0x4\n\tIPV6_USE_MIN_MTU                        = 0x2a\n\tIPV6_V6ONLY                             = 0x1b\n\tIPV6_VERSION                            = 0x60\n\tIPV6_VERSION_MASK                       = 0xf0\n\tIP_ADD_MEMBERSHIP                       = 0xc\n\tIP_ADD_SOURCE_MEMBERSHIP                = 0x46\n\tIP_BLOCK_SOURCE                         = 0x48\n\tIP_BOUND_IF                             = 0x19\n\tIP_DEFAULT_MULTICAST_LOOP               = 0x1\n\tIP_DEFAULT_MULTICAST_TTL                = 0x1\n\tIP_DF                                   = 0x4000\n\tIP_DONTFRAG                             = 0x1c\n\tIP_DROP_MEMBERSHIP                      = 0xd\n\tIP_DROP_SOURCE_MEMBERSHIP               = 0x47\n\tIP_DUMMYNET_CONFIGURE                   = 0x3c\n\tIP_DUMMYNET_DEL                         = 0x3d\n\tIP_DUMMYNET_FLUSH                       = 0x3e\n\tIP_DUMMYNET_GET                         = 0x40\n\tIP_FAITH                                = 0x16\n\tIP_FW_ADD                               = 0x28\n\tIP_FW_DEL                               = 0x29\n\tIP_FW_FLUSH                             = 0x2a\n\tIP_FW_GET                               = 0x2c\n\tIP_FW_RESETLOG                          = 0x2d\n\tIP_FW_ZERO                              = 0x2b\n\tIP_HDRINCL                              = 0x2\n\tIP_IPSEC_POLICY                         = 0x15\n\tIP_MAXPACKET                            = 0xffff\n\tIP_MAX_GROUP_SRC_FILTER                 = 0x200\n\tIP_MAX_MEMBERSHIPS                      = 0xfff\n\tIP_MAX_SOCK_MUTE_FILTER                 = 0x80\n\tIP_MAX_SOCK_SRC_FILTER                  = 0x80\n\tIP_MF                                   = 0x2000\n\tIP_MIN_MEMBERSHIPS                      = 0x1f\n\tIP_MSFILTER                             = 0x4a\n\tIP_MSS                                  = 0x240\n\tIP_MULTICAST_IF                         = 0x9\n\tIP_MULTICAST_IFINDEX                    = 0x42\n\tIP_MULTICAST_LOOP                       = 0xb\n\tIP_MULTICAST_TTL                        = 0xa\n\tIP_MULTICAST_VIF                        = 0xe\n\tIP_NAT__XXX                             = 0x37\n\tIP_OFFMASK                              = 0x1fff\n\tIP_OLD_FW_ADD                           = 0x32\n\tIP_OLD_FW_DEL                           = 0x33\n\tIP_OLD_FW_FLUSH                         = 0x34\n\tIP_OLD_FW_GET                           = 0x36\n\tIP_OLD_FW_RESETLOG                      = 0x38\n\tIP_OLD_FW_ZERO                          = 0x35\n\tIP_OPTIONS                              = 0x1\n\tIP_PKTINFO                              = 0x1a\n\tIP_PORTRANGE                            = 0x13\n\tIP_PORTRANGE_DEFAULT                    = 0x0\n\tIP_PORTRANGE_HIGH                       = 0x1\n\tIP_PORTRANGE_LOW                        = 0x2\n\tIP_RECVDSTADDR                          = 0x7\n\tIP_RECVIF                               = 0x14\n\tIP_RECVOPTS                             = 0x5\n\tIP_RECVPKTINFO                          = 0x1a\n\tIP_RECVRETOPTS                          = 0x6\n\tIP_RECVTOS                              = 0x1b\n\tIP_RECVTTL                              = 0x18\n\tIP_RETOPTS                              = 0x8\n\tIP_RF                                   = 0x8000\n\tIP_RSVP_OFF                             = 0x10\n\tIP_RSVP_ON                              = 0xf\n\tIP_RSVP_VIF_OFF                         = 0x12\n\tIP_RSVP_VIF_ON                          = 0x11\n\tIP_STRIPHDR                             = 0x17\n\tIP_TOS                                  = 0x3\n\tIP_TRAFFIC_MGT_BACKGROUND               = 0x41\n\tIP_TTL                                  = 0x4\n\tIP_UNBLOCK_SOURCE                       = 0x49\n\tISIG                                    = 0x80\n\tISTRIP                                  = 0x20\n\tIUTF8                                   = 0x4000\n\tIXANY                                   = 0x800\n\tIXOFF                                   = 0x400\n\tIXON                                    = 0x200\n\tKERN_HOSTNAME                           = 0xa\n\tKERN_OSRELEASE                          = 0x2\n\tKERN_OSTYPE                             = 0x1\n\tKERN_VERSION                            = 0x4\n\tLOCAL_PEERCRED                          = 0x1\n\tLOCAL_PEEREPID                          = 0x3\n\tLOCAL_PEEREUUID                         = 0x5\n\tLOCAL_PEERPID                           = 0x2\n\tLOCAL_PEERTOKEN                         = 0x6\n\tLOCAL_PEERUUID                          = 0x4\n\tLOCK_EX                                 = 0x2\n\tLOCK_NB                                 = 0x4\n\tLOCK_SH                                 = 0x1\n\tLOCK_UN                                 = 0x8\n\tMADV_CAN_REUSE                          = 0x9\n\tMADV_DONTNEED                           = 0x4\n\tMADV_FREE                               = 0x5\n\tMADV_FREE_REUSABLE                      = 0x7\n\tMADV_FREE_REUSE                         = 0x8\n\tMADV_NORMAL                             = 0x0\n\tMADV_PAGEOUT                            = 0xa\n\tMADV_RANDOM                             = 0x1\n\tMADV_SEQUENTIAL                         = 0x2\n\tMADV_WILLNEED                           = 0x3\n\tMADV_ZERO_WIRED_PAGES                   = 0x6\n\tMAP_32BIT                               = 0x8000\n\tMAP_ANON                                = 0x1000\n\tMAP_ANONYMOUS                           = 0x1000\n\tMAP_COPY                                = 0x2\n\tMAP_FILE                                = 0x0\n\tMAP_FIXED                               = 0x10\n\tMAP_HASSEMAPHORE                        = 0x200\n\tMAP_JIT                                 = 0x800\n\tMAP_NOCACHE                             = 0x400\n\tMAP_NOEXTEND                            = 0x100\n\tMAP_NORESERVE                           = 0x40\n\tMAP_PRIVATE                             = 0x2\n\tMAP_RENAME                              = 0x20\n\tMAP_RESERVED0080                        = 0x80\n\tMAP_RESILIENT_CODESIGN                  = 0x2000\n\tMAP_RESILIENT_MEDIA                     = 0x4000\n\tMAP_SHARED                              = 0x1\n\tMAP_TRANSLATED_ALLOW_EXECUTE            = 0x20000\n\tMAP_UNIX03                              = 0x40000\n\tMCAST_BLOCK_SOURCE                      = 0x54\n\tMCAST_EXCLUDE                           = 0x2\n\tMCAST_INCLUDE                           = 0x1\n\tMCAST_JOIN_GROUP                        = 0x50\n\tMCAST_JOIN_SOURCE_GROUP                 = 0x52\n\tMCAST_LEAVE_GROUP                       = 0x51\n\tMCAST_LEAVE_SOURCE_GROUP                = 0x53\n\tMCAST_UNBLOCK_SOURCE                    = 0x55\n\tMCAST_UNDEFINED                         = 0x0\n\tMCL_CURRENT                             = 0x1\n\tMCL_FUTURE                              = 0x2\n\tMNT_ASYNC                               = 0x40\n\tMNT_AUTOMOUNTED                         = 0x400000\n\tMNT_CMDFLAGS                            = 0xf0000\n\tMNT_CPROTECT                            = 0x80\n\tMNT_DEFWRITE                            = 0x2000000\n\tMNT_DONTBROWSE                          = 0x100000\n\tMNT_DOVOLFS                             = 0x8000\n\tMNT_DWAIT                               = 0x4\n\tMNT_EXPORTED                            = 0x100\n\tMNT_EXT_ROOT_DATA_VOL                   = 0x1\n\tMNT_FORCE                               = 0x80000\n\tMNT_IGNORE_OWNERSHIP                    = 0x200000\n\tMNT_JOURNALED                           = 0x800000\n\tMNT_LOCAL                               = 0x1000\n\tMNT_MULTILABEL                          = 0x4000000\n\tMNT_NOATIME                             = 0x10000000\n\tMNT_NOBLOCK                             = 0x20000\n\tMNT_NODEV                               = 0x10\n\tMNT_NOEXEC                              = 0x4\n\tMNT_NOSUID                              = 0x8\n\tMNT_NOUSERXATTR                         = 0x1000000\n\tMNT_NOWAIT                              = 0x2\n\tMNT_QUARANTINE                          = 0x400\n\tMNT_QUOTA                               = 0x2000\n\tMNT_RDONLY                              = 0x1\n\tMNT_RELOAD                              = 0x40000\n\tMNT_REMOVABLE                           = 0x200\n\tMNT_ROOTFS                              = 0x4000\n\tMNT_SNAPSHOT                            = 0x40000000\n\tMNT_STRICTATIME                         = 0x80000000\n\tMNT_SYNCHRONOUS                         = 0x2\n\tMNT_UNION                               = 0x20\n\tMNT_UNKNOWNPERMISSIONS                  = 0x200000\n\tMNT_UPDATE                              = 0x10000\n\tMNT_VISFLAGMASK                         = 0xd7f0f7ff\n\tMNT_WAIT                                = 0x1\n\tMSG_CTRUNC                              = 0x20\n\tMSG_DONTROUTE                           = 0x4\n\tMSG_DONTWAIT                            = 0x80\n\tMSG_EOF                                 = 0x100\n\tMSG_EOR                                 = 0x8\n\tMSG_FLUSH                               = 0x400\n\tMSG_HAVEMORE                            = 0x2000\n\tMSG_HOLD                                = 0x800\n\tMSG_NEEDSA                              = 0x10000\n\tMSG_NOSIGNAL                            = 0x80000\n\tMSG_OOB                                 = 0x1\n\tMSG_PEEK                                = 0x2\n\tMSG_RCVMORE                             = 0x4000\n\tMSG_SEND                                = 0x1000\n\tMSG_TRUNC                               = 0x10\n\tMSG_WAITALL                             = 0x40\n\tMSG_WAITSTREAM                          = 0x200\n\tMS_ASYNC                                = 0x1\n\tMS_DEACTIVATE                           = 0x8\n\tMS_INVALIDATE                           = 0x2\n\tMS_KILLPAGES                            = 0x4\n\tMS_SYNC                                 = 0x10\n\tNAME_MAX                                = 0xff\n\tNET_RT_DUMP                             = 0x1\n\tNET_RT_DUMP2                            = 0x7\n\tNET_RT_FLAGS                            = 0x2\n\tNET_RT_FLAGS_PRIV                       = 0xa\n\tNET_RT_IFLIST                           = 0x3\n\tNET_RT_IFLIST2                          = 0x6\n\tNET_RT_MAXID                            = 0xb\n\tNET_RT_STAT                             = 0x4\n\tNET_RT_TRASH                            = 0x5\n\tNFDBITS                                 = 0x20\n\tNL0                                     = 0x0\n\tNL1                                     = 0x100\n\tNL2                                     = 0x200\n\tNL3                                     = 0x300\n\tNLDLY                                   = 0x300\n\tNOFLSH                                  = 0x80000000\n\tNOKERNINFO                              = 0x2000000\n\tNOTE_ABSOLUTE                           = 0x8\n\tNOTE_ATTRIB                             = 0x8\n\tNOTE_BACKGROUND                         = 0x40\n\tNOTE_CHILD                              = 0x4\n\tNOTE_CRITICAL                           = 0x20\n\tNOTE_DELETE                             = 0x1\n\tNOTE_EXEC                               = 0x20000000\n\tNOTE_EXIT                               = 0x80000000\n\tNOTE_EXITSTATUS                         = 0x4000000\n\tNOTE_EXIT_CSERROR                       = 0x40000\n\tNOTE_EXIT_DECRYPTFAIL                   = 0x10000\n\tNOTE_EXIT_DETAIL                        = 0x2000000\n\tNOTE_EXIT_DETAIL_MASK                   = 0x70000\n\tNOTE_EXIT_MEMORY                        = 0x20000\n\tNOTE_EXIT_REPARENTED                    = 0x80000\n\tNOTE_EXTEND                             = 0x4\n\tNOTE_FFAND                              = 0x40000000\n\tNOTE_FFCOPY                             = 0xc0000000\n\tNOTE_FFCTRLMASK                         = 0xc0000000\n\tNOTE_FFLAGSMASK                         = 0xffffff\n\tNOTE_FFNOP                              = 0x0\n\tNOTE_FFOR                               = 0x80000000\n\tNOTE_FORK                               = 0x40000000\n\tNOTE_FUNLOCK                            = 0x100\n\tNOTE_LEEWAY                             = 0x10\n\tNOTE_LINK                               = 0x10\n\tNOTE_LOWAT                              = 0x1\n\tNOTE_MACHTIME                           = 0x100\n\tNOTE_MACH_CONTINUOUS_TIME               = 0x80\n\tNOTE_NONE                               = 0x80\n\tNOTE_NSECONDS                           = 0x4\n\tNOTE_OOB                                = 0x2\n\tNOTE_PCTRLMASK                          = -0x100000\n\tNOTE_PDATAMASK                          = 0xfffff\n\tNOTE_REAP                               = 0x10000000\n\tNOTE_RENAME                             = 0x20\n\tNOTE_REVOKE                             = 0x40\n\tNOTE_SECONDS                            = 0x1\n\tNOTE_SIGNAL                             = 0x8000000\n\tNOTE_TRACK                              = 0x1\n\tNOTE_TRACKERR                           = 0x2\n\tNOTE_TRIGGER                            = 0x1000000\n\tNOTE_USECONDS                           = 0x2\n\tNOTE_VM_ERROR                           = 0x10000000\n\tNOTE_VM_PRESSURE                        = 0x80000000\n\tNOTE_VM_PRESSURE_SUDDEN_TERMINATE       = 0x20000000\n\tNOTE_VM_PRESSURE_TERMINATE              = 0x40000000\n\tNOTE_WRITE                              = 0x2\n\tOCRNL                                   = 0x10\n\tOFDEL                                   = 0x20000\n\tOFILL                                   = 0x80\n\tONLCR                                   = 0x2\n\tONLRET                                  = 0x40\n\tONOCR                                   = 0x20\n\tONOEOT                                  = 0x8\n\tOPOST                                   = 0x1\n\tOXTABS                                  = 0x4\n\tO_ACCMODE                               = 0x3\n\tO_ALERT                                 = 0x20000000\n\tO_APPEND                                = 0x8\n\tO_ASYNC                                 = 0x40\n\tO_CLOEXEC                               = 0x1000000\n\tO_CREAT                                 = 0x200\n\tO_DIRECTORY                             = 0x100000\n\tO_DP_GETRAWENCRYPTED                    = 0x1\n\tO_DP_GETRAWUNENCRYPTED                  = 0x2\n\tO_DSYNC                                 = 0x400000\n\tO_EVTONLY                               = 0x8000\n\tO_EXCL                                  = 0x800\n\tO_EXLOCK                                = 0x20\n\tO_FSYNC                                 = 0x80\n\tO_NDELAY                                = 0x4\n\tO_NOCTTY                                = 0x20000\n\tO_NOFOLLOW                              = 0x100\n\tO_NOFOLLOW_ANY                          = 0x20000000\n\tO_NONBLOCK                              = 0x4\n\tO_POPUP                                 = 0x80000000\n\tO_RDONLY                                = 0x0\n\tO_RDWR                                  = 0x2\n\tO_SHLOCK                                = 0x10\n\tO_SYMLINK                               = 0x200000\n\tO_SYNC                                  = 0x80\n\tO_TRUNC                                 = 0x400\n\tO_WRONLY                                = 0x1\n\tPARENB                                  = 0x1000\n\tPARMRK                                  = 0x8\n\tPARODD                                  = 0x2000\n\tPENDIN                                  = 0x20000000\n\tPRIO_PGRP                               = 0x1\n\tPRIO_PROCESS                            = 0x0\n\tPRIO_USER                               = 0x2\n\tPROT_EXEC                               = 0x4\n\tPROT_NONE                               = 0x0\n\tPROT_READ                               = 0x1\n\tPROT_WRITE                              = 0x2\n\tPT_ATTACH                               = 0xa\n\tPT_ATTACHEXC                            = 0xe\n\tPT_CONTINUE                             = 0x7\n\tPT_DENY_ATTACH                          = 0x1f\n\tPT_DETACH                               = 0xb\n\tPT_FIRSTMACH                            = 0x20\n\tPT_FORCEQUOTA                           = 0x1e\n\tPT_KILL                                 = 0x8\n\tPT_READ_D                               = 0x2\n\tPT_READ_I                               = 0x1\n\tPT_READ_U                               = 0x3\n\tPT_SIGEXC                               = 0xc\n\tPT_STEP                                 = 0x9\n\tPT_THUPDATE                             = 0xd\n\tPT_TRACE_ME                             = 0x0\n\tPT_WRITE_D                              = 0x5\n\tPT_WRITE_I                              = 0x4\n\tPT_WRITE_U                              = 0x6\n\tRENAME_EXCL                             = 0x4\n\tRENAME_NOFOLLOW_ANY                     = 0x10\n\tRENAME_RESERVED1                        = 0x8\n\tRENAME_SECLUDE                          = 0x1\n\tRENAME_SWAP                             = 0x2\n\tRLIMIT_AS                               = 0x5\n\tRLIMIT_CORE                             = 0x4\n\tRLIMIT_CPU                              = 0x0\n\tRLIMIT_CPU_USAGE_MONITOR                = 0x2\n\tRLIMIT_DATA                             = 0x2\n\tRLIMIT_FSIZE                            = 0x1\n\tRLIMIT_MEMLOCK                          = 0x6\n\tRLIMIT_NOFILE                           = 0x8\n\tRLIMIT_NPROC                            = 0x7\n\tRLIMIT_RSS                              = 0x5\n\tRLIMIT_STACK                            = 0x3\n\tRLIM_INFINITY                           = 0x7fffffffffffffff\n\tRTAX_AUTHOR                             = 0x6\n\tRTAX_BRD                                = 0x7\n\tRTAX_DST                                = 0x0\n\tRTAX_GATEWAY                            = 0x1\n\tRTAX_GENMASK                            = 0x3\n\tRTAX_IFA                                = 0x5\n\tRTAX_IFP                                = 0x4\n\tRTAX_MAX                                = 0x8\n\tRTAX_NETMASK                            = 0x2\n\tRTA_AUTHOR                              = 0x40\n\tRTA_BRD                                 = 0x80\n\tRTA_DST                                 = 0x1\n\tRTA_GATEWAY                             = 0x2\n\tRTA_GENMASK                             = 0x8\n\tRTA_IFA                                 = 0x20\n\tRTA_IFP                                 = 0x10\n\tRTA_NETMASK                             = 0x4\n\tRTF_BLACKHOLE                           = 0x1000\n\tRTF_BROADCAST                           = 0x400000\n\tRTF_CLONING                             = 0x100\n\tRTF_CONDEMNED                           = 0x2000000\n\tRTF_DEAD                                = 0x20000000\n\tRTF_DELCLONE                            = 0x80\n\tRTF_DONE                                = 0x40\n\tRTF_DYNAMIC                             = 0x10\n\tRTF_GATEWAY                             = 0x2\n\tRTF_GLOBAL                              = 0x40000000\n\tRTF_HOST                                = 0x4\n\tRTF_IFREF                               = 0x4000000\n\tRTF_IFSCOPE                             = 0x1000000\n\tRTF_LLDATA                              = 0x400\n\tRTF_LLINFO                              = 0x400\n\tRTF_LOCAL                               = 0x200000\n\tRTF_MODIFIED                            = 0x20\n\tRTF_MULTICAST                           = 0x800000\n\tRTF_NOIFREF                             = 0x2000\n\tRTF_PINNED                              = 0x100000\n\tRTF_PRCLONING                           = 0x10000\n\tRTF_PROTO1                              = 0x8000\n\tRTF_PROTO2                              = 0x4000\n\tRTF_PROTO3                              = 0x40000\n\tRTF_PROXY                               = 0x8000000\n\tRTF_REJECT                              = 0x8\n\tRTF_ROUTER                              = 0x10000000\n\tRTF_STATIC                              = 0x800\n\tRTF_UP                                  = 0x1\n\tRTF_WASCLONED                           = 0x20000\n\tRTF_XRESOLVE                            = 0x200\n\tRTM_ADD                                 = 0x1\n\tRTM_CHANGE                              = 0x3\n\tRTM_DELADDR                             = 0xd\n\tRTM_DELETE                              = 0x2\n\tRTM_DELMADDR                            = 0x10\n\tRTM_GET                                 = 0x4\n\tRTM_GET2                                = 0x14\n\tRTM_IFINFO                              = 0xe\n\tRTM_IFINFO2                             = 0x12\n\tRTM_LOCK                                = 0x8\n\tRTM_LOSING                              = 0x5\n\tRTM_MISS                                = 0x7\n\tRTM_NEWADDR                             = 0xc\n\tRTM_NEWMADDR                            = 0xf\n\tRTM_NEWMADDR2                           = 0x13\n\tRTM_OLDADD                              = 0x9\n\tRTM_OLDDEL                              = 0xa\n\tRTM_REDIRECT                            = 0x6\n\tRTM_RESOLVE                             = 0xb\n\tRTM_RTTUNIT                             = 0xf4240\n\tRTM_VERSION                             = 0x5\n\tRTV_EXPIRE                              = 0x4\n\tRTV_HOPCOUNT                            = 0x2\n\tRTV_MTU                                 = 0x1\n\tRTV_RPIPE                               = 0x8\n\tRTV_RTT                                 = 0x40\n\tRTV_RTTVAR                              = 0x80\n\tRTV_SPIPE                               = 0x10\n\tRTV_SSTHRESH                            = 0x20\n\tRUSAGE_CHILDREN                         = -0x1\n\tRUSAGE_SELF                             = 0x0\n\tSAE_ASSOCID_ALL                         = 0xffffffff\n\tSAE_ASSOCID_ANY                         = 0x0\n\tSAE_CONNID_ALL                          = 0xffffffff\n\tSAE_CONNID_ANY                          = 0x0\n\tSCM_CREDS                               = 0x3\n\tSCM_RIGHTS                              = 0x1\n\tSCM_TIMESTAMP                           = 0x2\n\tSCM_TIMESTAMP_MONOTONIC                 = 0x4\n\tSEEK_CUR                                = 0x1\n\tSEEK_DATA                               = 0x4\n\tSEEK_END                                = 0x2\n\tSEEK_HOLE                               = 0x3\n\tSEEK_SET                                = 0x0\n\tSF_APPEND                               = 0x40000\n\tSF_ARCHIVED                             = 0x10000\n\tSF_DATALESS                             = 0x40000000\n\tSF_FIRMLINK                             = 0x800000\n\tSF_IMMUTABLE                            = 0x20000\n\tSF_NOUNLINK                             = 0x100000\n\tSF_RESTRICTED                           = 0x80000\n\tSF_SETTABLE                             = 0x3fff0000\n\tSF_SUPPORTED                            = 0x9f0000\n\tSF_SYNTHETIC                            = 0xc0000000\n\tSHUT_RD                                 = 0x0\n\tSHUT_RDWR                               = 0x2\n\tSHUT_WR                                 = 0x1\n\tSIOCADDMULTI                            = 0x80206931\n\tSIOCAIFADDR                             = 0x8040691a\n\tSIOCARPIPLL                             = 0xc0206928\n\tSIOCATMARK                              = 0x40047307\n\tSIOCAUTOADDR                            = 0xc0206926\n\tSIOCAUTONETMASK                         = 0x80206927\n\tSIOCDELMULTI                            = 0x80206932\n\tSIOCDIFADDR                             = 0x80206919\n\tSIOCDIFPHYADDR                          = 0x80206941\n\tSIOCGDRVSPEC                            = 0xc028697b\n\tSIOCGETVLAN                             = 0xc020697f\n\tSIOCGHIWAT                              = 0x40047301\n\tSIOCGIF6LOWPAN                          = 0xc02069c5\n\tSIOCGIFADDR                             = 0xc0206921\n\tSIOCGIFALTMTU                           = 0xc0206948\n\tSIOCGIFASYNCMAP                         = 0xc020697c\n\tSIOCGIFBOND                             = 0xc0206947\n\tSIOCGIFBRDADDR                          = 0xc0206923\n\tSIOCGIFCAP                              = 0xc020695b\n\tSIOCGIFCONF                             = 0xc00c6924\n\tSIOCGIFDEVMTU                           = 0xc0206944\n\tSIOCGIFDSTADDR                          = 0xc0206922\n\tSIOCGIFFLAGS                            = 0xc0206911\n\tSIOCGIFFUNCTIONALTYPE                   = 0xc02069ad\n\tSIOCGIFGENERIC                          = 0xc020693a\n\tSIOCGIFKPI                              = 0xc0206987\n\tSIOCGIFMAC                              = 0xc0206982\n\tSIOCGIFMEDIA                            = 0xc02c6938\n\tSIOCGIFMETRIC                           = 0xc0206917\n\tSIOCGIFMTU                              = 0xc0206933\n\tSIOCGIFNETMASK                          = 0xc0206925\n\tSIOCGIFPDSTADDR                         = 0xc0206940\n\tSIOCGIFPHYS                             = 0xc0206935\n\tSIOCGIFPSRCADDR                         = 0xc020693f\n\tSIOCGIFSTATUS                           = 0xc331693d\n\tSIOCGIFVLAN                             = 0xc020697f\n\tSIOCGIFWAKEFLAGS                        = 0xc0206988\n\tSIOCGIFXMEDIA                           = 0xc02c6948\n\tSIOCGLOWAT                              = 0x40047303\n\tSIOCGPGRP                               = 0x40047309\n\tSIOCIFCREATE                            = 0xc0206978\n\tSIOCIFCREATE2                           = 0xc020697a\n\tSIOCIFDESTROY                           = 0x80206979\n\tSIOCIFGCLONERS                          = 0xc0106981\n\tSIOCRSLVMULTI                           = 0xc010693b\n\tSIOCSDRVSPEC                            = 0x8028697b\n\tSIOCSETVLAN                             = 0x8020697e\n\tSIOCSHIWAT                              = 0x80047300\n\tSIOCSIF6LOWPAN                          = 0x802069c4\n\tSIOCSIFADDR                             = 0x8020690c\n\tSIOCSIFALTMTU                           = 0x80206945\n\tSIOCSIFASYNCMAP                         = 0x8020697d\n\tSIOCSIFBOND                             = 0x80206946\n\tSIOCSIFBRDADDR                          = 0x80206913\n\tSIOCSIFCAP                              = 0x8020695a\n\tSIOCSIFDSTADDR                          = 0x8020690e\n\tSIOCSIFFLAGS                            = 0x80206910\n\tSIOCSIFGENERIC                          = 0x80206939\n\tSIOCSIFKPI                              = 0x80206986\n\tSIOCSIFLLADDR                           = 0x8020693c\n\tSIOCSIFMAC                              = 0x80206983\n\tSIOCSIFMEDIA                            = 0xc0206937\n\tSIOCSIFMETRIC                           = 0x80206918\n\tSIOCSIFMTU                              = 0x80206934\n\tSIOCSIFNETMASK                          = 0x80206916\n\tSIOCSIFPHYADDR                          = 0x8040693e\n\tSIOCSIFPHYS                             = 0x80206936\n\tSIOCSIFVLAN                             = 0x8020697e\n\tSIOCSLOWAT                              = 0x80047302\n\tSIOCSPGRP                               = 0x80047308\n\tSOCK_DGRAM                              = 0x2\n\tSOCK_MAXADDRLEN                         = 0xff\n\tSOCK_RAW                                = 0x3\n\tSOCK_RDM                                = 0x4\n\tSOCK_SEQPACKET                          = 0x5\n\tSOCK_STREAM                             = 0x1\n\tSOL_LOCAL                               = 0x0\n\tSOL_SOCKET                              = 0xffff\n\tSOMAXCONN                               = 0x80\n\tSO_ACCEPTCONN                           = 0x2\n\tSO_BROADCAST                            = 0x20\n\tSO_DEBUG                                = 0x1\n\tSO_DONTROUTE                            = 0x10\n\tSO_DONTTRUNC                            = 0x2000\n\tSO_ERROR                                = 0x1007\n\tSO_KEEPALIVE                            = 0x8\n\tSO_LABEL                                = 0x1010\n\tSO_LINGER                               = 0x80\n\tSO_LINGER_SEC                           = 0x1080\n\tSO_NETSVC_MARKING_LEVEL                 = 0x1119\n\tSO_NET_SERVICE_TYPE                     = 0x1116\n\tSO_NKE                                  = 0x1021\n\tSO_NOADDRERR                            = 0x1023\n\tSO_NOSIGPIPE                            = 0x1022\n\tSO_NOTIFYCONFLICT                       = 0x1026\n\tSO_NP_EXTENSIONS                        = 0x1083\n\tSO_NREAD                                = 0x1020\n\tSO_NUMRCVPKT                            = 0x1112\n\tSO_NWRITE                               = 0x1024\n\tSO_OOBINLINE                            = 0x100\n\tSO_PEERLABEL                            = 0x1011\n\tSO_RANDOMPORT                           = 0x1082\n\tSO_RCVBUF                               = 0x1002\n\tSO_RCVLOWAT                             = 0x1004\n\tSO_RCVTIMEO                             = 0x1006\n\tSO_REUSEADDR                            = 0x4\n\tSO_REUSEPORT                            = 0x200\n\tSO_REUSESHAREUID                        = 0x1025\n\tSO_SNDBUF                               = 0x1001\n\tSO_SNDLOWAT                             = 0x1003\n\tSO_SNDTIMEO                             = 0x1005\n\tSO_TIMESTAMP                            = 0x400\n\tSO_TIMESTAMP_MONOTONIC                  = 0x800\n\tSO_TRACKER_ATTRIBUTE_FLAGS_APP_APPROVED = 0x1\n\tSO_TRACKER_ATTRIBUTE_FLAGS_DOMAIN_SHORT = 0x4\n\tSO_TRACKER_ATTRIBUTE_FLAGS_TRACKER      = 0x2\n\tSO_TRACKER_TRANSPARENCY_VERSION         = 0x3\n\tSO_TYPE                                 = 0x1008\n\tSO_UPCALLCLOSEWAIT                      = 0x1027\n\tSO_USELOOPBACK                          = 0x40\n\tSO_WANTMORE                             = 0x4000\n\tSO_WANTOOBFLAG                          = 0x8000\n\tS_IEXEC                                 = 0x40\n\tS_IFBLK                                 = 0x6000\n\tS_IFCHR                                 = 0x2000\n\tS_IFDIR                                 = 0x4000\n\tS_IFIFO                                 = 0x1000\n\tS_IFLNK                                 = 0xa000\n\tS_IFMT                                  = 0xf000\n\tS_IFREG                                 = 0x8000\n\tS_IFSOCK                                = 0xc000\n\tS_IFWHT                                 = 0xe000\n\tS_IREAD                                 = 0x100\n\tS_IRGRP                                 = 0x20\n\tS_IROTH                                 = 0x4\n\tS_IRUSR                                 = 0x100\n\tS_IRWXG                                 = 0x38\n\tS_IRWXO                                 = 0x7\n\tS_IRWXU                                 = 0x1c0\n\tS_ISGID                                 = 0x400\n\tS_ISTXT                                 = 0x200\n\tS_ISUID                                 = 0x800\n\tS_ISVTX                                 = 0x200\n\tS_IWGRP                                 = 0x10\n\tS_IWOTH                                 = 0x2\n\tS_IWRITE                                = 0x80\n\tS_IWUSR                                 = 0x80\n\tS_IXGRP                                 = 0x8\n\tS_IXOTH                                 = 0x1\n\tS_IXUSR                                 = 0x40\n\tTAB0                                    = 0x0\n\tTAB1                                    = 0x400\n\tTAB2                                    = 0x800\n\tTAB3                                    = 0x4\n\tTABDLY                                  = 0xc04\n\tTCIFLUSH                                = 0x1\n\tTCIOFF                                  = 0x3\n\tTCIOFLUSH                               = 0x3\n\tTCION                                   = 0x4\n\tTCOFLUSH                                = 0x2\n\tTCOOFF                                  = 0x1\n\tTCOON                                   = 0x2\n\tTCPOPT_CC                               = 0xb\n\tTCPOPT_CCECHO                           = 0xd\n\tTCPOPT_CCNEW                            = 0xc\n\tTCPOPT_EOL                              = 0x0\n\tTCPOPT_FASTOPEN                         = 0x22\n\tTCPOPT_MAXSEG                           = 0x2\n\tTCPOPT_NOP                              = 0x1\n\tTCPOPT_SACK                             = 0x5\n\tTCPOPT_SACK_HDR                         = 0x1010500\n\tTCPOPT_SACK_PERMITTED                   = 0x4\n\tTCPOPT_SACK_PERMIT_HDR                  = 0x1010402\n\tTCPOPT_SIGNATURE                        = 0x13\n\tTCPOPT_TIMESTAMP                        = 0x8\n\tTCPOPT_TSTAMP_HDR                       = 0x101080a\n\tTCPOPT_WINDOW                           = 0x3\n\tTCP_CONNECTIONTIMEOUT                   = 0x20\n\tTCP_CONNECTION_INFO                     = 0x106\n\tTCP_ENABLE_ECN                          = 0x104\n\tTCP_FASTOPEN                            = 0x105\n\tTCP_KEEPALIVE                           = 0x10\n\tTCP_KEEPCNT                             = 0x102\n\tTCP_KEEPINTVL                           = 0x101\n\tTCP_MAXHLEN                             = 0x3c\n\tTCP_MAXOLEN                             = 0x28\n\tTCP_MAXSEG                              = 0x2\n\tTCP_MAXWIN                              = 0xffff\n\tTCP_MAX_SACK                            = 0x4\n\tTCP_MAX_WINSHIFT                        = 0xe\n\tTCP_MINMSS                              = 0xd8\n\tTCP_MSS                                 = 0x200\n\tTCP_NODELAY                             = 0x1\n\tTCP_NOOPT                               = 0x8\n\tTCP_NOPUSH                              = 0x4\n\tTCP_NOTSENT_LOWAT                       = 0x201\n\tTCP_RXT_CONNDROPTIME                    = 0x80\n\tTCP_RXT_FINDROP                         = 0x100\n\tTCP_SENDMOREACKS                        = 0x103\n\tTCSAFLUSH                               = 0x2\n\tTIOCCBRK                                = 0x2000747a\n\tTIOCCDTR                                = 0x20007478\n\tTIOCCONS                                = 0x80047462\n\tTIOCDCDTIMESTAMP                        = 0x40107458\n\tTIOCDRAIN                               = 0x2000745e\n\tTIOCDSIMICROCODE                        = 0x20007455\n\tTIOCEXCL                                = 0x2000740d\n\tTIOCEXT                                 = 0x80047460\n\tTIOCFLUSH                               = 0x80047410\n\tTIOCGDRAINWAIT                          = 0x40047456\n\tTIOCGETA                                = 0x40487413\n\tTIOCGETD                                = 0x4004741a\n\tTIOCGPGRP                               = 0x40047477\n\tTIOCGWINSZ                              = 0x40087468\n\tTIOCIXOFF                               = 0x20007480\n\tTIOCIXON                                = 0x20007481\n\tTIOCMBIC                                = 0x8004746b\n\tTIOCMBIS                                = 0x8004746c\n\tTIOCMGDTRWAIT                           = 0x4004745a\n\tTIOCMGET                                = 0x4004746a\n\tTIOCMODG                                = 0x40047403\n\tTIOCMODS                                = 0x80047404\n\tTIOCMSDTRWAIT                           = 0x8004745b\n\tTIOCMSET                                = 0x8004746d\n\tTIOCM_CAR                               = 0x40\n\tTIOCM_CD                                = 0x40\n\tTIOCM_CTS                               = 0x20\n\tTIOCM_DSR                               = 0x100\n\tTIOCM_DTR                               = 0x2\n\tTIOCM_LE                                = 0x1\n\tTIOCM_RI                                = 0x80\n\tTIOCM_RNG                               = 0x80\n\tTIOCM_RTS                               = 0x4\n\tTIOCM_SR                                = 0x10\n\tTIOCM_ST                                = 0x8\n\tTIOCNOTTY                               = 0x20007471\n\tTIOCNXCL                                = 0x2000740e\n\tTIOCOUTQ                                = 0x40047473\n\tTIOCPKT                                 = 0x80047470\n\tTIOCPKT_DATA                            = 0x0\n\tTIOCPKT_DOSTOP                          = 0x20\n\tTIOCPKT_FLUSHREAD                       = 0x1\n\tTIOCPKT_FLUSHWRITE                      = 0x2\n\tTIOCPKT_IOCTL                           = 0x40\n\tTIOCPKT_NOSTOP                          = 0x10\n\tTIOCPKT_START                           = 0x8\n\tTIOCPKT_STOP                            = 0x4\n\tTIOCPTYGNAME                            = 0x40807453\n\tTIOCPTYGRANT                            = 0x20007454\n\tTIOCPTYUNLK                             = 0x20007452\n\tTIOCREMOTE                              = 0x80047469\n\tTIOCSBRK                                = 0x2000747b\n\tTIOCSCONS                               = 0x20007463\n\tTIOCSCTTY                               = 0x20007461\n\tTIOCSDRAINWAIT                          = 0x80047457\n\tTIOCSDTR                                = 0x20007479\n\tTIOCSETA                                = 0x80487414\n\tTIOCSETAF                               = 0x80487416\n\tTIOCSETAW                               = 0x80487415\n\tTIOCSETD                                = 0x8004741b\n\tTIOCSIG                                 = 0x2000745f\n\tTIOCSPGRP                               = 0x80047476\n\tTIOCSTART                               = 0x2000746e\n\tTIOCSTAT                                = 0x20007465\n\tTIOCSTI                                 = 0x80017472\n\tTIOCSTOP                                = 0x2000746f\n\tTIOCSWINSZ                              = 0x80087467\n\tTIOCTIMESTAMP                           = 0x40107459\n\tTIOCUCNTL                               = 0x80047466\n\tTOSTOP                                  = 0x400000\n\tUF_APPEND                               = 0x4\n\tUF_COMPRESSED                           = 0x20\n\tUF_DATAVAULT                            = 0x80\n\tUF_HIDDEN                               = 0x8000\n\tUF_IMMUTABLE                            = 0x2\n\tUF_NODUMP                               = 0x1\n\tUF_OPAQUE                               = 0x8\n\tUF_SETTABLE                             = 0xffff\n\tUF_TRACKED                              = 0x40\n\tVDISCARD                                = 0xf\n\tVDSUSP                                  = 0xb\n\tVEOF                                    = 0x0\n\tVEOL                                    = 0x1\n\tVEOL2                                   = 0x2\n\tVERASE                                  = 0x3\n\tVINTR                                   = 0x8\n\tVKILL                                   = 0x5\n\tVLNEXT                                  = 0xe\n\tVMADDR_CID_ANY                          = 0xffffffff\n\tVMADDR_CID_HOST                         = 0x2\n\tVMADDR_CID_HYPERVISOR                   = 0x0\n\tVMADDR_CID_RESERVED                     = 0x1\n\tVMADDR_PORT_ANY                         = 0xffffffff\n\tVMIN                                    = 0x10\n\tVM_LOADAVG                              = 0x2\n\tVM_MACHFACTOR                           = 0x4\n\tVM_MAXID                                = 0x6\n\tVM_METER                                = 0x1\n\tVM_SWAPUSAGE                            = 0x5\n\tVQUIT                                   = 0x9\n\tVREPRINT                                = 0x6\n\tVSTART                                  = 0xc\n\tVSTATUS                                 = 0x12\n\tVSTOP                                   = 0xd\n\tVSUSP                                   = 0xa\n\tVT0                                     = 0x0\n\tVT1                                     = 0x10000\n\tVTDLY                                   = 0x10000\n\tVTIME                                   = 0x11\n\tVWERASE                                 = 0x4\n\tWCONTINUED                              = 0x10\n\tWCOREFLAG                               = 0x80\n\tWEXITED                                 = 0x4\n\tWNOHANG                                 = 0x1\n\tWNOWAIT                                 = 0x20\n\tWORDSIZE                                = 0x40\n\tWSTOPPED                                = 0x8\n\tWUNTRACED                               = 0x2\n\tXATTR_CREATE                            = 0x2\n\tXATTR_NODEFAULT                         = 0x10\n\tXATTR_NOFOLLOW                          = 0x1\n\tXATTR_NOSECURITY                        = 0x8\n\tXATTR_REPLACE                           = 0x4\n\tXATTR_SHOWCOMPRESSION                   = 0x20\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADARCH        = syscall.Errno(0x56)\n\tEBADEXEC        = syscall.Errno(0x55)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMACHO       = syscall.Errno(0x58)\n\tEBADMSG         = syscall.Errno(0x5e)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x59)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDEVERR         = syscall.Errno(0x53)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x5a)\n\tEILSEQ          = syscall.Errno(0x5c)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x6a)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5f)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x5d)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODATA         = syscall.Errno(0x60)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x61)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x5b)\n\tENOPOLICY       = syscall.Errno(0x67)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x62)\n\tENOSTR          = syscall.Errno(0x63)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x68)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x2d)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x66)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEOWNERDEAD      = syscall.Errno(0x69)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x64)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tEPWROFF         = syscall.Errno(0x52)\n\tEQFULL          = syscall.Errno(0x6a)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHLIBVERS      = syscall.Errno(0x57)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIME           = syscall.Errno(0x65)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"ENOTSUP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EPWROFF\", \"device power is off\"},\n\t{83, \"EDEVERR\", \"device error\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"EBADEXEC\", \"bad executable (or shared library)\"},\n\t{86, \"EBADARCH\", \"bad CPU type in executable\"},\n\t{87, \"ESHLIBVERS\", \"shared library version mismatch\"},\n\t{88, \"EBADMACHO\", \"malformed Mach-o file\"},\n\t{89, \"ECANCELED\", \"operation canceled\"},\n\t{90, \"EIDRM\", \"identifier removed\"},\n\t{91, \"ENOMSG\", \"no message of desired type\"},\n\t{92, \"EILSEQ\", \"illegal byte sequence\"},\n\t{93, \"ENOATTR\", \"attribute not found\"},\n\t{94, \"EBADMSG\", \"bad message\"},\n\t{95, \"EMULTIHOP\", \"EMULTIHOP (Reserved)\"},\n\t{96, \"ENODATA\", \"no message available on STREAM\"},\n\t{97, \"ENOLINK\", \"ENOLINK (Reserved)\"},\n\t{98, \"ENOSR\", \"no STREAM resources\"},\n\t{99, \"ENOSTR\", \"not a STREAM\"},\n\t{100, \"EPROTO\", \"protocol error\"},\n\t{101, \"ETIME\", \"STREAM ioctl timeout\"},\n\t{102, \"EOPNOTSUPP\", \"operation not supported on socket\"},\n\t{103, \"ENOPOLICY\", \"policy not found\"},\n\t{104, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{105, \"EOWNERDEAD\", \"previous owner died\"},\n\t{106, \"EQFULL\", \"interface output queue is full\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGABRT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && dragonfly\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_ATM                            = 0x1e\n\tAF_BLUETOOTH                      = 0x21\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_HYLINK                         = 0xf\n\tAF_IEEE80211                      = 0x23\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x1c\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x24\n\tAF_MPLS                           = 0x22\n\tAF_NATM                           = 0x1d\n\tAF_NETBIOS                        = 0x6\n\tAF_NETGRAPH                       = 0x20\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x11\n\tAF_SIP                            = 0x18\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tALTWERASE                         = 0x200\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB460800                           = 0x70800\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB921600                           = 0xe1000\n\tB9600                             = 0x2580\n\tBIOCFEEDBACK                      = 0x8004427d\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc0104279\n\tBIOCGETIF                         = 0x4020426b\n\tBIOCGFEEDBACK                     = 0x4004427c\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRSIG                         = 0x40044272\n\tBIOCGRTIMEOUT                     = 0x4010426e\n\tBIOCGSEESENT                      = 0x40044276\n\tBIOCGSTATS                        = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCLOCK                          = 0x2000427a\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDLT                          = 0x80044278\n\tBIOCSETF                          = 0x80104267\n\tBIOCSETIF                         = 0x8020426c\n\tBIOCSETWF                         = 0x8010427b\n\tBIOCSFEEDBACK                     = 0x8004427d\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRSIG                         = 0x80044273\n\tBIOCSRTIMEOUT                     = 0x8010426d\n\tBIOCSSEESENT                      = 0x80044277\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x8\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DEFAULTBUFSIZE                = 0x1000\n\tBPF_DIV                           = 0x30\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x80000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MAX_CLONES                    = 0x80\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MOD                           = 0x90\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBPF_XOR                           = 0xa0\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLOCK_MONOTONIC                   = 0x4\n\tCLOCK_MONOTONIC_FAST              = 0xc\n\tCLOCK_MONOTONIC_PRECISE           = 0xb\n\tCLOCK_PROCESS_CPUTIME_ID          = 0xf\n\tCLOCK_PROF                        = 0x2\n\tCLOCK_REALTIME                    = 0x0\n\tCLOCK_REALTIME_FAST               = 0xa\n\tCLOCK_REALTIME_PRECISE            = 0x9\n\tCLOCK_SECOND                      = 0xd\n\tCLOCK_THREAD_CPUTIME_ID           = 0xe\n\tCLOCK_UPTIME                      = 0x5\n\tCLOCK_UPTIME_FAST                 = 0x8\n\tCLOCK_UPTIME_PRECISE              = 0x7\n\tCLOCK_VIRTUAL                     = 0x1\n\tCPUSTATES                         = 0x5\n\tCP_IDLE                           = 0x4\n\tCP_INTR                           = 0x3\n\tCP_NICE                           = 0x1\n\tCP_SYS                            = 0x2\n\tCP_USER                           = 0x0\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x30000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0x14\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tDLT_A429                          = 0xb8\n\tDLT_A653_ICM                      = 0xb9\n\tDLT_AIRONET_HEADER                = 0x78\n\tDLT_AOS                           = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394        = 0x8a\n\tDLT_ARCNET                        = 0x7\n\tDLT_ARCNET_LINUX                  = 0x81\n\tDLT_ATM_CLIP                      = 0x13\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AURORA                        = 0x7e\n\tDLT_AX25                          = 0x3\n\tDLT_AX25_KISS                     = 0xca\n\tDLT_BACNET_MS_TP                  = 0xa5\n\tDLT_BLUETOOTH_BREDR_BB            = 0xff\n\tDLT_BLUETOOTH_HCI_H4              = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR    = 0xc9\n\tDLT_BLUETOOTH_LE_LL               = 0xfb\n\tDLT_BLUETOOTH_LE_LL_WITH_PHDR     = 0x100\n\tDLT_BLUETOOTH_LINUX_MONITOR       = 0xfe\n\tDLT_CAN20B                        = 0xbe\n\tDLT_CAN_SOCKETCAN                 = 0xe3\n\tDLT_CHAOS                         = 0x5\n\tDLT_CHDLC                         = 0x68\n\tDLT_CISCO_IOS                     = 0x76\n\tDLT_C_HDLC                        = 0x68\n\tDLT_C_HDLC_WITH_DIR               = 0xcd\n\tDLT_DBUS                          = 0xe7\n\tDLT_DECT                          = 0xdd\n\tDLT_DOCSIS                        = 0x8f\n\tDLT_DVB_CI                        = 0xeb\n\tDLT_ECONET                        = 0x73\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0x6d\n\tDLT_EPON                          = 0x103\n\tDLT_ERF                           = 0xc5\n\tDLT_ERF_ETH                       = 0xaf\n\tDLT_ERF_POS                       = 0xb0\n\tDLT_FC_2                          = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS        = 0xe1\n\tDLT_FDDI                          = 0xa\n\tDLT_FLEXRAY                       = 0xd2\n\tDLT_FRELAY                        = 0x6b\n\tDLT_FRELAY_WITH_DIR               = 0xce\n\tDLT_GCOM_SERIAL                   = 0xad\n\tDLT_GCOM_T1E1                     = 0xac\n\tDLT_GPF_F                         = 0xab\n\tDLT_GPF_T                         = 0xaa\n\tDLT_GPRS_LLC                      = 0xa9\n\tDLT_GSMTAP_ABIS                   = 0xda\n\tDLT_GSMTAP_UM                     = 0xd9\n\tDLT_HHDLC                         = 0x79\n\tDLT_IBM_SN                        = 0x92\n\tDLT_IBM_SP                        = 0x91\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS          = 0xa3\n\tDLT_IEEE802_15_4                  = 0xc3\n\tDLT_IEEE802_15_4_LINUX            = 0xbf\n\tDLT_IEEE802_15_4_NOFCS            = 0xe6\n\tDLT_IEEE802_15_4_NONASK_PHY       = 0xd7\n\tDLT_IEEE802_16_MAC_CPS            = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO      = 0xc1\n\tDLT_INFINIBAND                    = 0xf7\n\tDLT_IPFILTER                      = 0x74\n\tDLT_IPMB                          = 0xc7\n\tDLT_IPMB_LINUX                    = 0xd1\n\tDLT_IPMI_HPM_2                    = 0x104\n\tDLT_IPNET                         = 0xe2\n\tDLT_IPOIB                         = 0xf2\n\tDLT_IPV4                          = 0xe4\n\tDLT_IPV6                          = 0xe5\n\tDLT_IP_OVER_FC                    = 0x7a\n\tDLT_ISO_14443                     = 0x108\n\tDLT_JUNIPER_ATM1                  = 0x89\n\tDLT_JUNIPER_ATM2                  = 0x87\n\tDLT_JUNIPER_ATM_CEMIC             = 0xee\n\tDLT_JUNIPER_CHDLC                 = 0xb5\n\tDLT_JUNIPER_ES                    = 0x84\n\tDLT_JUNIPER_ETHER                 = 0xb2\n\tDLT_JUNIPER_FIBRECHANNEL          = 0xea\n\tDLT_JUNIPER_FRELAY                = 0xb4\n\tDLT_JUNIPER_GGSN                  = 0x85\n\tDLT_JUNIPER_ISM                   = 0xc2\n\tDLT_JUNIPER_MFR                   = 0x86\n\tDLT_JUNIPER_MLFR                  = 0x83\n\tDLT_JUNIPER_MLPPP                 = 0x82\n\tDLT_JUNIPER_MONITOR               = 0xa4\n\tDLT_JUNIPER_PIC_PEER              = 0xae\n\tDLT_JUNIPER_PPP                   = 0xb3\n\tDLT_JUNIPER_PPPOE                 = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM             = 0xa8\n\tDLT_JUNIPER_SERVICES              = 0x88\n\tDLT_JUNIPER_SRX_E2E               = 0xe9\n\tDLT_JUNIPER_ST                    = 0xc8\n\tDLT_JUNIPER_VP                    = 0xb7\n\tDLT_JUNIPER_VS                    = 0xe8\n\tDLT_LAPB_WITH_DIR                 = 0xcf\n\tDLT_LAPD                          = 0xcb\n\tDLT_LIN                           = 0xd4\n\tDLT_LINUX_EVDEV                   = 0xd8\n\tDLT_LINUX_IRDA                    = 0x90\n\tDLT_LINUX_LAPD                    = 0xb1\n\tDLT_LINUX_SLL                     = 0x71\n\tDLT_LOOP                          = 0x6c\n\tDLT_LTALK                         = 0x72\n\tDLT_MATCHING_MAX                  = 0x109\n\tDLT_MATCHING_MIN                  = 0x68\n\tDLT_MFR                           = 0xb6\n\tDLT_MOST                          = 0xd3\n\tDLT_MPEG_2_TS                     = 0xf3\n\tDLT_MPLS                          = 0xdb\n\tDLT_MTP2                          = 0x8c\n\tDLT_MTP2_WITH_PHDR                = 0x8b\n\tDLT_MTP3                          = 0x8d\n\tDLT_MUX27010                      = 0xec\n\tDLT_NETANALYZER                   = 0xf0\n\tDLT_NETANALYZER_TRANSPARENT       = 0xf1\n\tDLT_NETLINK                       = 0xfd\n\tDLT_NFC_LLCP                      = 0xf5\n\tDLT_NFLOG                         = 0xef\n\tDLT_NG40                          = 0xf4\n\tDLT_NULL                          = 0x0\n\tDLT_PCI_EXP                       = 0x7d\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PKTAP                         = 0x102\n\tDLT_PPI                           = 0xc0\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0x10\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_PPPD                      = 0xa6\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PPP_WITH_DIR                  = 0xcc\n\tDLT_PRISM_HEADER                  = 0x77\n\tDLT_PROFIBUS_DL                   = 0x101\n\tDLT_PRONET                        = 0x4\n\tDLT_RAIF1                         = 0xc6\n\tDLT_RAW                           = 0xc\n\tDLT_RDS                           = 0x109\n\tDLT_REDBACK_SMARTEDGE             = 0x20\n\tDLT_RIO                           = 0x7c\n\tDLT_RTAC_SERIAL                   = 0xfa\n\tDLT_SCCP                          = 0x8e\n\tDLT_SCTP                          = 0xf8\n\tDLT_SITA                          = 0xc4\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xf\n\tDLT_STANAG_5066_D_PDU             = 0xed\n\tDLT_SUNATM                        = 0x7b\n\tDLT_SYMANTEC_FIREWALL             = 0x63\n\tDLT_TZSP                          = 0x80\n\tDLT_USB                           = 0xba\n\tDLT_USBPCAP                       = 0xf9\n\tDLT_USB_FREEBSD                   = 0xba\n\tDLT_USB_LINUX                     = 0xbd\n\tDLT_USB_LINUX_MMAPPED             = 0xdc\n\tDLT_USER0                         = 0x93\n\tDLT_USER1                         = 0x94\n\tDLT_USER10                        = 0x9d\n\tDLT_USER11                        = 0x9e\n\tDLT_USER12                        = 0x9f\n\tDLT_USER13                        = 0xa0\n\tDLT_USER14                        = 0xa1\n\tDLT_USER15                        = 0xa2\n\tDLT_USER2                         = 0x95\n\tDLT_USER3                         = 0x96\n\tDLT_USER4                         = 0x97\n\tDLT_USER5                         = 0x98\n\tDLT_USER6                         = 0x99\n\tDLT_USER7                         = 0x9a\n\tDLT_USER8                         = 0x9b\n\tDLT_USER9                         = 0x9c\n\tDLT_WATTSTOPPER_DLM               = 0x107\n\tDLT_WIHART                        = 0xdf\n\tDLT_WIRESHARK_UPPER_PDU           = 0xfc\n\tDLT_X2E_SERIAL                    = 0xd5\n\tDLT_X2E_XORAYA                    = 0xd6\n\tDLT_ZWAVE_R1_R2                   = 0x105\n\tDLT_ZWAVE_R3                      = 0x106\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DBF                            = 0xf\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tDT_WHT                            = 0xe\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEVFILT_AIO                        = -0x3\n\tEVFILT_EXCEPT                     = -0x8\n\tEVFILT_FS                         = -0xa\n\tEVFILT_MARKER                     = 0xf\n\tEVFILT_PROC                       = -0x5\n\tEVFILT_READ                       = -0x1\n\tEVFILT_SIGNAL                     = -0x6\n\tEVFILT_SYSCOUNT                   = 0xa\n\tEVFILT_TIMER                      = -0x7\n\tEVFILT_USER                       = -0x9\n\tEVFILT_VNODE                      = -0x4\n\tEVFILT_WRITE                      = -0x2\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_DISPATCH                       = 0x80\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_HUP                            = 0x800\n\tEV_NODATA                         = 0x1000\n\tEV_ONESHOT                        = 0x10\n\tEV_RECEIPT                        = 0x40\n\tEV_SYSFLAGS                       = 0xf800\n\tEXTA                              = 0x4b00\n\tEXTB                              = 0x9600\n\tEXTEXIT_LWP                       = 0x10000\n\tEXTEXIT_PROC                      = 0x0\n\tEXTEXIT_SETINT                    = 0x1\n\tEXTEXIT_SIMPLE                    = 0x0\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x400\n\tFLUSHO                            = 0x800000\n\tF_DUP2FD                          = 0xa\n\tF_DUP2FD_CLOEXEC                  = 0x12\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0x11\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETOWN                          = 0x5\n\tF_OK                              = 0x0\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_ALTPHYS                       = 0x4000\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x318e72\n\tIFF_DEBUG                         = 0x4\n\tIFF_IDIRECT                       = 0x200000\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MONITOR                       = 0x40000\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_NPOLLING                      = 0x100000\n\tIFF_OACTIVE                       = 0x400\n\tIFF_OACTIVE_COMPAT                = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_POLLING                       = 0x10000\n\tIFF_POLLING_COMPAT                = 0x10000\n\tIFF_PPROMISC                      = 0x20000\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_SMART                         = 0x20\n\tIFF_STATICARP                     = 0x80000\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf8\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ENC                           = 0xf4\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf1\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_STF                           = 0xf3\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIN_RFC3021_MASK                   = 0xfffffffe\n\tIPPROTO_3PC                       = 0x22\n\tIPPROTO_ADFS                      = 0x44\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_AHIP                      = 0x3d\n\tIPPROTO_APES                      = 0x63\n\tIPPROTO_ARGUS                     = 0xd\n\tIPPROTO_AX25                      = 0x5d\n\tIPPROTO_BHA                       = 0x31\n\tIPPROTO_BLT                       = 0x1e\n\tIPPROTO_BRSATMON                  = 0x4c\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_CFTP                      = 0x3e\n\tIPPROTO_CHAOS                     = 0x10\n\tIPPROTO_CMTP                      = 0x26\n\tIPPROTO_CPHB                      = 0x49\n\tIPPROTO_CPNX                      = 0x48\n\tIPPROTO_DDP                       = 0x25\n\tIPPROTO_DGP                       = 0x56\n\tIPPROTO_DIVERT                    = 0xfe\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_EMCON                     = 0xe\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GMTP                      = 0x64\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HELLO                     = 0x3f\n\tIPPROTO_HMP                       = 0x14\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IDPR                      = 0x23\n\tIPPROTO_IDRP                      = 0x2d\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IGP                       = 0x55\n\tIPPROTO_IGRP                      = 0x58\n\tIPPROTO_IL                        = 0x28\n\tIPPROTO_INLSP                     = 0x34\n\tIPPROTO_INP                       = 0x20\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPCV                      = 0x47\n\tIPPROTO_IPEIP                     = 0x5e\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPPC                      = 0x43\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_IRTP                      = 0x1c\n\tIPPROTO_KRYPTOLAN                 = 0x41\n\tIPPROTO_LARP                      = 0x5b\n\tIPPROTO_LEAF1                     = 0x19\n\tIPPROTO_LEAF2                     = 0x1a\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x34\n\tIPPROTO_MEAS                      = 0x13\n\tIPPROTO_MHRP                      = 0x30\n\tIPPROTO_MICP                      = 0x5f\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_MTP                       = 0x5c\n\tIPPROTO_MUX                       = 0x12\n\tIPPROTO_ND                        = 0x4d\n\tIPPROTO_NHRP                      = 0x36\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_NSP                       = 0x1f\n\tIPPROTO_NVPII                     = 0xb\n\tIPPROTO_OSPFIGP                   = 0x59\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PGM                       = 0x71\n\tIPPROTO_PIGP                      = 0x9\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PRM                       = 0x15\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_PVP                       = 0x4b\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_RCCMON                    = 0xa\n\tIPPROTO_RDP                       = 0x1b\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_RVD                       = 0x42\n\tIPPROTO_SATEXPAK                  = 0x40\n\tIPPROTO_SATMON                    = 0x45\n\tIPPROTO_SCCSP                     = 0x60\n\tIPPROTO_SDRP                      = 0x2a\n\tIPPROTO_SEP                       = 0x21\n\tIPPROTO_SKIP                      = 0x39\n\tIPPROTO_SRPC                      = 0x5a\n\tIPPROTO_ST                        = 0x7\n\tIPPROTO_SVMTP                     = 0x52\n\tIPPROTO_SWIPE                     = 0x35\n\tIPPROTO_TCF                       = 0x57\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TLSP                      = 0x38\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_TPXX                      = 0x27\n\tIPPROTO_TRUNK1                    = 0x17\n\tIPPROTO_TRUNK2                    = 0x18\n\tIPPROTO_TTP                       = 0x54\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_UNKNOWN                   = 0x102\n\tIPPROTO_VINES                     = 0x53\n\tIPPROTO_VISA                      = 0x46\n\tIPPROTO_VMTP                      = 0x51\n\tIPPROTO_WBEXPAK                   = 0x4f\n\tIPPROTO_WBMON                     = 0x4e\n\tIPPROTO_WSN                       = 0x4a\n\tIPPROTO_XNET                      = 0xf\n\tIPPROTO_XTP                       = 0x24\n\tIPV6_AUTOFLOWLABEL                = 0x3b\n\tIPV6_BINDV6ONLY                   = 0x1b\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_FW_ADD                       = 0x1e\n\tIPV6_FW_DEL                       = 0x1f\n\tIPV6_FW_FLUSH                     = 0x20\n\tIPV6_FW_GET                       = 0x22\n\tIPV6_FW_ZERO                      = 0x21\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MINHLIM                      = 0x28\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MSFILTER                     = 0x4a\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PKTOPTIONS                   = 0x34\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_PREFER_TEMPADDR              = 0x3f\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_DUMMYNET_CONFIGURE             = 0x3c\n\tIP_DUMMYNET_DEL                   = 0x3d\n\tIP_DUMMYNET_FLUSH                 = 0x3e\n\tIP_DUMMYNET_GET                   = 0x40\n\tIP_FW_ADD                         = 0x32\n\tIP_FW_DEL                         = 0x33\n\tIP_FW_FLUSH                       = 0x34\n\tIP_FW_GET                         = 0x36\n\tIP_FW_RESETLOG                    = 0x37\n\tIP_FW_TBL_ADD                     = 0x2a\n\tIP_FW_TBL_CREATE                  = 0x28\n\tIP_FW_TBL_DEL                     = 0x2b\n\tIP_FW_TBL_DESTROY                 = 0x29\n\tIP_FW_TBL_EXPIRE                  = 0x2f\n\tIP_FW_TBL_FLUSH                   = 0x2c\n\tIP_FW_TBL_GET                     = 0x2d\n\tIP_FW_TBL_ZERO                    = 0x2e\n\tIP_FW_X                           = 0x31\n\tIP_FW_ZERO                        = 0x35\n\tIP_HDRINCL                        = 0x2\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0x14\n\tIP_MF                             = 0x2000\n\tIP_MINTTL                         = 0x42\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_MULTICAST_VIF                  = 0xe\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVIF                         = 0x14\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVTTL                        = 0x41\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_RSVP_OFF                       = 0x10\n\tIP_RSVP_ON                        = 0xf\n\tIP_RSVP_VIF_OFF                   = 0x12\n\tIP_RSVP_VIF_ON                    = 0x11\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_AUTOSYNC                     = 0x7\n\tMADV_CONTROL_END                  = 0xb\n\tMADV_CONTROL_START                = 0xa\n\tMADV_CORE                         = 0x9\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x5\n\tMADV_INVAL                        = 0xa\n\tMADV_NOCORE                       = 0x8\n\tMADV_NORMAL                       = 0x0\n\tMADV_NOSYNC                       = 0x6\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SETMAP                       = 0xb\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ANON                          = 0x1000\n\tMAP_ANONYMOUS                     = 0x1000\n\tMAP_COPY                          = 0x2\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_HASSEMAPHORE                  = 0x200\n\tMAP_INHERIT                       = 0x80\n\tMAP_NOCORE                        = 0x20000\n\tMAP_NOEXTEND                      = 0x100\n\tMAP_NORESERVE                     = 0x40\n\tMAP_NOSYNC                        = 0x800\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x20\n\tMAP_SHARED                        = 0x1\n\tMAP_SIZEALIGN                     = 0x40000\n\tMAP_STACK                         = 0x400\n\tMAP_TRYFIXED                      = 0x10000\n\tMAP_VPAGETABLE                    = 0x2000\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_AUTOMOUNTED                   = 0x20\n\tMNT_CMDFLAGS                      = 0xf0000\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DELEXPORT                     = 0x20000\n\tMNT_EXKERB                        = 0x800\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXPUBLIC                      = 0x20000000\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_FORCE                         = 0x80000\n\tMNT_IGNORE                        = 0x800000\n\tMNT_LAZY                          = 0x4\n\tMNT_LOCAL                         = 0x1000\n\tMNT_NOATIME                       = 0x10000000\n\tMNT_NOCLUSTERR                    = 0x40000000\n\tMNT_NOCLUSTERW                    = 0x80000000\n\tMNT_NODEV                         = 0x10\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOSYMFOLLOW                   = 0x400000\n\tMNT_NOWAIT                        = 0x2\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x200000\n\tMNT_SUIDDIR                       = 0x100000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_TRIM                          = 0x1000000\n\tMNT_UPDATE                        = 0x10000\n\tMNT_USER                          = 0x8000\n\tMNT_VISFLAGMASK                   = 0xf1f0ffff\n\tMNT_WAIT                          = 0x1\n\tMSG_CMSG_CLOEXEC                  = 0x1000\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOF                           = 0x100\n\tMSG_EOR                           = 0x8\n\tMSG_FBLOCKING                     = 0x10000\n\tMSG_FMASK                         = 0xffff0000\n\tMSG_FNONBLOCKING                  = 0x20000\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_SYNC                          = 0x800\n\tMSG_TRUNC                         = 0x10\n\tMSG_UNUSED09                      = 0x200\n\tMSG_WAITALL                       = 0x40\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x2\n\tMS_SYNC                           = 0x0\n\tNAME_MAX                          = 0xff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x3\n\tNET_RT_MAXID                      = 0x4\n\tNFDBITS                           = 0x40\n\tNOFLSH                            = 0x80000000\n\tNOKERNINFO                        = 0x2000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FFAND                        = 0x40000000\n\tNOTE_FFCOPY                       = 0xc0000000\n\tNOTE_FFCTRLMASK                   = 0xc0000000\n\tNOTE_FFLAGSMASK                   = 0xffffff\n\tNOTE_FFNOP                        = 0x0\n\tNOTE_FFOR                         = 0x80000000\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_OOB                          = 0x2\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_TRIGGER                      = 0x1000000\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tONLCR                             = 0x2\n\tONLRET                            = 0x40\n\tONOCR                             = 0x20\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tOXTABS                            = 0x4\n\tO_ACCMODE                         = 0x3\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x20000\n\tO_CREAT                           = 0x200\n\tO_DIRECT                          = 0x10000\n\tO_DIRECTORY                       = 0x8000000\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FAPPEND                         = 0x100000\n\tO_FASYNCWRITE                     = 0x800000\n\tO_FBLOCKING                       = 0x40000\n\tO_FMASK                           = 0xfc0000\n\tO_FNONBLOCKING                    = 0x80000\n\tO_FOFFSET                         = 0x200000\n\tO_FSYNC                           = 0x80\n\tO_FSYNCWRITE                      = 0x400000\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tRLIMIT_AS                         = 0xa\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BRD                          = 0x7\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_MAX                          = 0xb\n\tRTAX_MPLS1                        = 0x8\n\tRTAX_MPLS2                        = 0x9\n\tRTAX_MPLS3                        = 0xa\n\tRTAX_NETMASK                      = 0x2\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BRD                           = 0x80\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_MPLS1                         = 0x100\n\tRTA_MPLS2                         = 0x200\n\tRTA_MPLS3                         = 0x400\n\tRTA_NETMASK                       = 0x4\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_BROADCAST                     = 0x400000\n\tRTF_CLONING                       = 0x100\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_LOCAL                         = 0x200000\n\tRTF_MODIFIED                      = 0x20\n\tRTF_MPLSOPS                       = 0x1000000\n\tRTF_MULTICAST                     = 0x800000\n\tRTF_PINNED                        = 0x100000\n\tRTF_PRCLONING                     = 0x10000\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_PROTO3                        = 0x40000\n\tRTF_REJECT                        = 0x8\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_WASCLONED                     = 0x20000\n\tRTF_XRESOLVE                      = 0x200\n\tRTM_ADD                           = 0x1\n\tRTM_CHANGE                        = 0x3\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_DELMADDR                      = 0x10\n\tRTM_GET                           = 0x4\n\tRTM_IEEE80211                     = 0x12\n\tRTM_IFANNOUNCE                    = 0x11\n\tRTM_IFINFO                        = 0xe\n\tRTM_LOCK                          = 0x8\n\tRTM_LOSING                        = 0x5\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_NEWMADDR                      = 0xf\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_RTTUNIT                       = 0xf4240\n\tRTM_VERSION                       = 0x7\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_IWCAPSEGS                     = 0x400\n\tRTV_IWMAXSEGS                     = 0x200\n\tRTV_MSL                           = 0x100\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tSCM_CREDS                         = 0x3\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x2\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80206931\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCAIFGROUP                      = 0x80286987\n\tSIOCALIFADDR                      = 0x8118691b\n\tSIOCATMARK                        = 0x40047307\n\tSIOCDELMULTI                      = 0x80206932\n\tSIOCDIFADDR                       = 0x80206919\n\tSIOCDIFGROUP                      = 0x80286989\n\tSIOCDIFPHYADDR                    = 0x80206949\n\tSIOCDLIFADDR                      = 0x8118691d\n\tSIOCGDRVSPEC                      = 0xc028697b\n\tSIOCGETSGCNT                      = 0xc0207210\n\tSIOCGETVIFCNT                     = 0xc028720f\n\tSIOCGHIWAT                        = 0x40047301\n\tSIOCGIFADDR                       = 0xc0206921\n\tSIOCGIFALIAS                      = 0xc0406929\n\tSIOCGIFBRDADDR                    = 0xc0206923\n\tSIOCGIFCAP                        = 0xc020691f\n\tSIOCGIFCONF                       = 0xc0106924\n\tSIOCGIFDATA                       = 0xc0206926\n\tSIOCGIFDSTADDR                    = 0xc0206922\n\tSIOCGIFFLAGS                      = 0xc0206911\n\tSIOCGIFGENERIC                    = 0xc020693a\n\tSIOCGIFGMEMB                      = 0xc028698a\n\tSIOCGIFGROUP                      = 0xc0286988\n\tSIOCGIFINDEX                      = 0xc0206920\n\tSIOCGIFMEDIA                      = 0xc0306938\n\tSIOCGIFMETRIC                     = 0xc0206917\n\tSIOCGIFMTU                        = 0xc0206933\n\tSIOCGIFNETMASK                    = 0xc0206925\n\tSIOCGIFPDSTADDR                   = 0xc0206948\n\tSIOCGIFPHYS                       = 0xc0206935\n\tSIOCGIFPOLLCPU                    = 0xc020697e\n\tSIOCGIFPSRCADDR                   = 0xc0206947\n\tSIOCGIFSTATUS                     = 0xc331693b\n\tSIOCGIFTSOLEN                     = 0xc0206980\n\tSIOCGLIFADDR                      = 0xc118691c\n\tSIOCGLIFPHYADDR                   = 0xc118694b\n\tSIOCGLOWAT                        = 0x40047303\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGPRIVATE_0                    = 0xc0206950\n\tSIOCGPRIVATE_1                    = 0xc0206951\n\tSIOCIFCREATE                      = 0xc020697a\n\tSIOCIFCREATE2                     = 0xc020697c\n\tSIOCIFDESTROY                     = 0x80206979\n\tSIOCIFGCLONERS                    = 0xc0106978\n\tSIOCSDRVSPEC                      = 0x8028697b\n\tSIOCSHIWAT                        = 0x80047300\n\tSIOCSIFADDR                       = 0x8020690c\n\tSIOCSIFBRDADDR                    = 0x80206913\n\tSIOCSIFCAP                        = 0x8020691e\n\tSIOCSIFDSTADDR                    = 0x8020690e\n\tSIOCSIFFLAGS                      = 0x80206910\n\tSIOCSIFGENERIC                    = 0x80206939\n\tSIOCSIFLLADDR                     = 0x8020693c\n\tSIOCSIFMEDIA                      = 0xc0206937\n\tSIOCSIFMETRIC                     = 0x80206918\n\tSIOCSIFMTU                        = 0x80206934\n\tSIOCSIFNAME                       = 0x80206928\n\tSIOCSIFNETMASK                    = 0x80206916\n\tSIOCSIFPHYADDR                    = 0x80406946\n\tSIOCSIFPHYS                       = 0x80206936\n\tSIOCSIFPOLLCPU                    = 0x8020697d\n\tSIOCSIFTSOLEN                     = 0x8020697f\n\tSIOCSLIFPHYADDR                   = 0x8118694a\n\tSIOCSLOWAT                        = 0x80047302\n\tSIOCSPGRP                         = 0x80047308\n\tSOCK_CLOEXEC                      = 0x10000000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_MAXADDRLEN                   = 0xff\n\tSOCK_NONBLOCK                     = 0x20000000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_ACCEPTFILTER                   = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_CPUHINT                        = 0x1030\n\tSO_DEBUG                          = 0x1\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NOSIGPIPE                      = 0x800\n\tSO_OOBINLINE                      = 0x100\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x1006\n\tSO_RERROR                         = 0x2000\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDSPACE                       = 0x100a\n\tSO_SNDTIMEO                       = 0x1005\n\tSO_TIMESTAMP                      = 0x400\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDB                            = 0x9000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IFWHT                           = 0xe000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tTAB0                              = 0x0\n\tTAB3                              = 0x4\n\tTABDLY                            = 0x4\n\tTCIFLUSH                          = 0x1\n\tTCIOFF                            = 0x3\n\tTCIOFLUSH                         = 0x3\n\tTCION                             = 0x4\n\tTCOFLUSH                          = 0x2\n\tTCOOFF                            = 0x1\n\tTCOON                             = 0x2\n\tTCP_FASTKEEP                      = 0x80\n\tTCP_KEEPCNT                       = 0x400\n\tTCP_KEEPIDLE                      = 0x100\n\tTCP_KEEPINIT                      = 0x20\n\tTCP_KEEPINTVL                     = 0x200\n\tTCP_MAXBURST                      = 0x4\n\tTCP_MAXHLEN                       = 0x3c\n\tTCP_MAXOLEN                       = 0x28\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MINMSS                        = 0x100\n\tTCP_MIN_WINSHIFT                  = 0x5\n\tTCP_MSS                           = 0x200\n\tTCP_NODELAY                       = 0x1\n\tTCP_NOOPT                         = 0x8\n\tTCP_NOPUSH                        = 0x4\n\tTCP_SIGNATURE_ENABLE              = 0x10\n\tTCSAFLUSH                         = 0x2\n\tTIMER_ABSTIME                     = 0x1\n\tTIMER_RELTIME                     = 0x0\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCONS                          = 0x80047462\n\tTIOCDCDTIMESTAMP                  = 0x40107458\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGDRAINWAIT                    = 0x40047456\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGSID                          = 0x40047463\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCISPTMASTER                    = 0x20007455\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGDTRWAIT                     = 0x4004745a\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMODG                          = 0x40047403\n\tTIOCMODS                          = 0x80047404\n\tTIOCMSDTRWAIT                     = 0x8004745b\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDRAINWAIT                    = 0x80047457\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSIG                           = 0x2000745f\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x20007465\n\tTIOCSTI                           = 0x80017472\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCTIMESTAMP                     = 0x40107459\n\tTIOCUCNTL                         = 0x80047466\n\tTOSTOP                            = 0x400000\n\tUTIME_NOW                         = -0x1\n\tUTIME_OMIT                        = -0x2\n\tVCHECKPT                          = 0x13\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVERASE2                           = 0x7\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVM_BCACHE_SIZE_MAX                = 0x0\n\tVM_SWZONE_SIZE_MAX                = 0x4000000000\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWCONTINUED                        = 0x4\n\tWCOREFLAG                         = 0x80\n\tWEXITED                           = 0x10\n\tWLINUXCLONE                       = 0x80000000\n\tWNOHANG                           = 0x1\n\tWNOWAIT                           = 0x8\n\tWSTOPPED                          = 0x2\n\tWTRAPPED                          = 0x20\n\tWUNTRACED                         = 0x2\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEASYNC          = syscall.Errno(0x63)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x59)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x55)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDOOFUS         = syscall.Errno(0x58)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x52)\n\tEILSEQ          = syscall.Errno(0x56)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x63)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5a)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x57)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x5b)\n\tENOMEDIUM       = syscall.Errno(0x5d)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x53)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x2d)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5c)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT     = syscall.Signal(0x6)\n\tSIGALRM     = syscall.Signal(0xe)\n\tSIGBUS      = syscall.Signal(0xa)\n\tSIGCHLD     = syscall.Signal(0x14)\n\tSIGCKPT     = syscall.Signal(0x21)\n\tSIGCKPTEXIT = syscall.Signal(0x22)\n\tSIGCONT     = syscall.Signal(0x13)\n\tSIGEMT      = syscall.Signal(0x7)\n\tSIGFPE      = syscall.Signal(0x8)\n\tSIGHUP      = syscall.Signal(0x1)\n\tSIGILL      = syscall.Signal(0x4)\n\tSIGINFO     = syscall.Signal(0x1d)\n\tSIGINT      = syscall.Signal(0x2)\n\tSIGIO       = syscall.Signal(0x17)\n\tSIGIOT      = syscall.Signal(0x6)\n\tSIGKILL     = syscall.Signal(0x9)\n\tSIGPIPE     = syscall.Signal(0xd)\n\tSIGPROF     = syscall.Signal(0x1b)\n\tSIGQUIT     = syscall.Signal(0x3)\n\tSIGSEGV     = syscall.Signal(0xb)\n\tSIGSTOP     = syscall.Signal(0x11)\n\tSIGSYS      = syscall.Signal(0xc)\n\tSIGTERM     = syscall.Signal(0xf)\n\tSIGTHR      = syscall.Signal(0x20)\n\tSIGTRAP     = syscall.Signal(0x5)\n\tSIGTSTP     = syscall.Signal(0x12)\n\tSIGTTIN     = syscall.Signal(0x15)\n\tSIGTTOU     = syscall.Signal(0x16)\n\tSIGURG      = syscall.Signal(0x10)\n\tSIGUSR1     = syscall.Signal(0x1e)\n\tSIGUSR2     = syscall.Signal(0x1f)\n\tSIGVTALRM   = syscall.Signal(0x1a)\n\tSIGWINCH    = syscall.Signal(0x1c)\n\tSIGXCPU     = syscall.Signal(0x18)\n\tSIGXFSZ     = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EWOULDBLOCK\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIDRM\", \"identifier removed\"},\n\t{83, \"ENOMSG\", \"no message of desired type\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"ECANCELED\", \"operation canceled\"},\n\t{86, \"EILSEQ\", \"illegal byte sequence\"},\n\t{87, \"ENOATTR\", \"attribute not found\"},\n\t{88, \"EDOOFUS\", \"programming error\"},\n\t{89, \"EBADMSG\", \"bad message\"},\n\t{90, \"EMULTIHOP\", \"multihop attempted\"},\n\t{91, \"ENOLINK\", \"link has been severed\"},\n\t{92, \"EPROTO\", \"protocol error\"},\n\t{93, \"ENOMEDIUM\", \"no medium found\"},\n\t{99, \"EASYNC\", \"unknown error: 99\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"thread Scheduler\"},\n\t{33, \"SIGCKPT\", \"checkPoint\"},\n\t{34, \"SIGCKPTEXIT\", \"checkPointExit\"},\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go",
    "content": "// mkerrors.sh -m32\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build 386 && freebsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m32 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                   = 0x10\n\tAF_ARP                         = 0x23\n\tAF_ATM                         = 0x1e\n\tAF_BLUETOOTH                   = 0x24\n\tAF_CCITT                       = 0xa\n\tAF_CHAOS                       = 0x5\n\tAF_CNT                         = 0x15\n\tAF_COIP                        = 0x14\n\tAF_DATAKIT                     = 0x9\n\tAF_DECnet                      = 0xc\n\tAF_DLI                         = 0xd\n\tAF_E164                        = 0x1a\n\tAF_ECMA                        = 0x8\n\tAF_HYLINK                      = 0xf\n\tAF_IEEE80211                   = 0x25\n\tAF_IMPLINK                     = 0x3\n\tAF_INET                        = 0x2\n\tAF_INET6                       = 0x1c\n\tAF_INET6_SDP                   = 0x2a\n\tAF_INET_SDP                    = 0x28\n\tAF_IPX                         = 0x17\n\tAF_ISDN                        = 0x1a\n\tAF_ISO                         = 0x7\n\tAF_LAT                         = 0xe\n\tAF_LINK                        = 0x12\n\tAF_LOCAL                       = 0x1\n\tAF_MAX                         = 0x2a\n\tAF_NATM                        = 0x1d\n\tAF_NETBIOS                     = 0x6\n\tAF_NETGRAPH                    = 0x20\n\tAF_OSI                         = 0x7\n\tAF_PUP                         = 0x4\n\tAF_ROUTE                       = 0x11\n\tAF_SCLUSTER                    = 0x22\n\tAF_SIP                         = 0x18\n\tAF_SLOW                        = 0x21\n\tAF_SNA                         = 0xb\n\tAF_UNIX                        = 0x1\n\tAF_UNSPEC                      = 0x0\n\tAF_VENDOR00                    = 0x27\n\tAF_VENDOR01                    = 0x29\n\tAF_VENDOR02                    = 0x2b\n\tAF_VENDOR03                    = 0x2d\n\tAF_VENDOR04                    = 0x2f\n\tAF_VENDOR05                    = 0x31\n\tAF_VENDOR06                    = 0x33\n\tAF_VENDOR07                    = 0x35\n\tAF_VENDOR08                    = 0x37\n\tAF_VENDOR09                    = 0x39\n\tAF_VENDOR10                    = 0x3b\n\tAF_VENDOR11                    = 0x3d\n\tAF_VENDOR12                    = 0x3f\n\tAF_VENDOR13                    = 0x41\n\tAF_VENDOR14                    = 0x43\n\tAF_VENDOR15                    = 0x45\n\tAF_VENDOR16                    = 0x47\n\tAF_VENDOR17                    = 0x49\n\tAF_VENDOR18                    = 0x4b\n\tAF_VENDOR19                    = 0x4d\n\tAF_VENDOR20                    = 0x4f\n\tAF_VENDOR21                    = 0x51\n\tAF_VENDOR22                    = 0x53\n\tAF_VENDOR23                    = 0x55\n\tAF_VENDOR24                    = 0x57\n\tAF_VENDOR25                    = 0x59\n\tAF_VENDOR26                    = 0x5b\n\tAF_VENDOR27                    = 0x5d\n\tAF_VENDOR28                    = 0x5f\n\tAF_VENDOR29                    = 0x61\n\tAF_VENDOR30                    = 0x63\n\tAF_VENDOR31                    = 0x65\n\tAF_VENDOR32                    = 0x67\n\tAF_VENDOR33                    = 0x69\n\tAF_VENDOR34                    = 0x6b\n\tAF_VENDOR35                    = 0x6d\n\tAF_VENDOR36                    = 0x6f\n\tAF_VENDOR37                    = 0x71\n\tAF_VENDOR38                    = 0x73\n\tAF_VENDOR39                    = 0x75\n\tAF_VENDOR40                    = 0x77\n\tAF_VENDOR41                    = 0x79\n\tAF_VENDOR42                    = 0x7b\n\tAF_VENDOR43                    = 0x7d\n\tAF_VENDOR44                    = 0x7f\n\tAF_VENDOR45                    = 0x81\n\tAF_VENDOR46                    = 0x83\n\tAF_VENDOR47                    = 0x85\n\tALTWERASE                      = 0x200\n\tB0                             = 0x0\n\tB110                           = 0x6e\n\tB115200                        = 0x1c200\n\tB1200                          = 0x4b0\n\tB134                           = 0x86\n\tB14400                         = 0x3840\n\tB150                           = 0x96\n\tB1800                          = 0x708\n\tB19200                         = 0x4b00\n\tB200                           = 0xc8\n\tB230400                        = 0x38400\n\tB2400                          = 0x960\n\tB28800                         = 0x7080\n\tB300                           = 0x12c\n\tB38400                         = 0x9600\n\tB460800                        = 0x70800\n\tB4800                          = 0x12c0\n\tB50                            = 0x32\n\tB57600                         = 0xe100\n\tB600                           = 0x258\n\tB7200                          = 0x1c20\n\tB75                            = 0x4b\n\tB76800                         = 0x12c00\n\tB921600                        = 0xe1000\n\tB9600                          = 0x2580\n\tBIOCFEEDBACK                   = 0x8004427c\n\tBIOCFLUSH                      = 0x20004268\n\tBIOCGBLEN                      = 0x40044266\n\tBIOCGDIRECTION                 = 0x40044276\n\tBIOCGDLT                       = 0x4004426a\n\tBIOCGDLTLIST                   = 0xc0084279\n\tBIOCGETBUFMODE                 = 0x4004427d\n\tBIOCGETIF                      = 0x4020426b\n\tBIOCGETZMAX                    = 0x4004427f\n\tBIOCGHDRCMPLT                  = 0x40044274\n\tBIOCGRSIG                      = 0x40044272\n\tBIOCGRTIMEOUT                  = 0x4008426e\n\tBIOCGSEESENT                   = 0x40044276\n\tBIOCGSTATS                     = 0x4008426f\n\tBIOCGTSTAMP                    = 0x40044283\n\tBIOCIMMEDIATE                  = 0x80044270\n\tBIOCLOCK                       = 0x2000427a\n\tBIOCPROMISC                    = 0x20004269\n\tBIOCROTZBUF                    = 0x400c4280\n\tBIOCSBLEN                      = 0xc0044266\n\tBIOCSDIRECTION                 = 0x80044277\n\tBIOCSDLT                       = 0x80044278\n\tBIOCSETBUFMODE                 = 0x8004427e\n\tBIOCSETF                       = 0x80084267\n\tBIOCSETFNR                     = 0x80084282\n\tBIOCSETIF                      = 0x8020426c\n\tBIOCSETVLANPCP                 = 0x80044285\n\tBIOCSETWF                      = 0x8008427b\n\tBIOCSETZBUF                    = 0x800c4281\n\tBIOCSHDRCMPLT                  = 0x80044275\n\tBIOCSRSIG                      = 0x80044273\n\tBIOCSRTIMEOUT                  = 0x8008426d\n\tBIOCSSEESENT                   = 0x80044277\n\tBIOCSTSTAMP                    = 0x80044284\n\tBIOCVERSION                    = 0x40044271\n\tBPF_A                          = 0x10\n\tBPF_ABS                        = 0x20\n\tBPF_ADD                        = 0x0\n\tBPF_ALIGNMENT                  = 0x4\n\tBPF_ALU                        = 0x4\n\tBPF_AND                        = 0x50\n\tBPF_B                          = 0x10\n\tBPF_BUFMODE_BUFFER             = 0x1\n\tBPF_BUFMODE_ZBUF               = 0x2\n\tBPF_DIV                        = 0x30\n\tBPF_H                          = 0x8\n\tBPF_IMM                        = 0x0\n\tBPF_IND                        = 0x40\n\tBPF_JA                         = 0x0\n\tBPF_JEQ                        = 0x10\n\tBPF_JGE                        = 0x30\n\tBPF_JGT                        = 0x20\n\tBPF_JMP                        = 0x5\n\tBPF_JSET                       = 0x40\n\tBPF_K                          = 0x0\n\tBPF_LD                         = 0x0\n\tBPF_LDX                        = 0x1\n\tBPF_LEN                        = 0x80\n\tBPF_LSH                        = 0x60\n\tBPF_MAJOR_VERSION              = 0x1\n\tBPF_MAXBUFSIZE                 = 0x80000\n\tBPF_MAXINSNS                   = 0x200\n\tBPF_MEM                        = 0x60\n\tBPF_MEMWORDS                   = 0x10\n\tBPF_MINBUFSIZE                 = 0x20\n\tBPF_MINOR_VERSION              = 0x1\n\tBPF_MISC                       = 0x7\n\tBPF_MOD                        = 0x90\n\tBPF_MSH                        = 0xa0\n\tBPF_MUL                        = 0x20\n\tBPF_NEG                        = 0x80\n\tBPF_OR                         = 0x40\n\tBPF_RELEASE                    = 0x30bb6\n\tBPF_RET                        = 0x6\n\tBPF_RSH                        = 0x70\n\tBPF_ST                         = 0x2\n\tBPF_STX                        = 0x3\n\tBPF_SUB                        = 0x10\n\tBPF_TAX                        = 0x0\n\tBPF_TXA                        = 0x80\n\tBPF_T_BINTIME                  = 0x2\n\tBPF_T_BINTIME_FAST             = 0x102\n\tBPF_T_BINTIME_MONOTONIC        = 0x202\n\tBPF_T_BINTIME_MONOTONIC_FAST   = 0x302\n\tBPF_T_FAST                     = 0x100\n\tBPF_T_FLAG_MASK                = 0x300\n\tBPF_T_FORMAT_MASK              = 0x3\n\tBPF_T_MICROTIME                = 0x0\n\tBPF_T_MICROTIME_FAST           = 0x100\n\tBPF_T_MICROTIME_MONOTONIC      = 0x200\n\tBPF_T_MICROTIME_MONOTONIC_FAST = 0x300\n\tBPF_T_MONOTONIC                = 0x200\n\tBPF_T_MONOTONIC_FAST           = 0x300\n\tBPF_T_NANOTIME                 = 0x1\n\tBPF_T_NANOTIME_FAST            = 0x101\n\tBPF_T_NANOTIME_MONOTONIC       = 0x201\n\tBPF_T_NANOTIME_MONOTONIC_FAST  = 0x301\n\tBPF_T_NONE                     = 0x3\n\tBPF_T_NORMAL                   = 0x0\n\tBPF_W                          = 0x0\n\tBPF_X                          = 0x8\n\tBPF_XOR                        = 0xa0\n\tBRKINT                         = 0x2\n\tCAP_ACCEPT                     = 0x200000020000000\n\tCAP_ACL_CHECK                  = 0x400000000010000\n\tCAP_ACL_DELETE                 = 0x400000000020000\n\tCAP_ACL_GET                    = 0x400000000040000\n\tCAP_ACL_SET                    = 0x400000000080000\n\tCAP_ALL0                       = 0x20007ffffffffff\n\tCAP_ALL1                       = 0x4000000001fffff\n\tCAP_BIND                       = 0x200000040000000\n\tCAP_BINDAT                     = 0x200008000000400\n\tCAP_CHFLAGSAT                  = 0x200000000001400\n\tCAP_CONNECT                    = 0x200000080000000\n\tCAP_CONNECTAT                  = 0x200010000000400\n\tCAP_CREATE                     = 0x200000000000040\n\tCAP_EVENT                      = 0x400000000000020\n\tCAP_EXTATTR_DELETE             = 0x400000000001000\n\tCAP_EXTATTR_GET                = 0x400000000002000\n\tCAP_EXTATTR_LIST               = 0x400000000004000\n\tCAP_EXTATTR_SET                = 0x400000000008000\n\tCAP_FCHDIR                     = 0x200000000000800\n\tCAP_FCHFLAGS                   = 0x200000000001000\n\tCAP_FCHMOD                     = 0x200000000002000\n\tCAP_FCHMODAT                   = 0x200000000002400\n\tCAP_FCHOWN                     = 0x200000000004000\n\tCAP_FCHOWNAT                   = 0x200000000004400\n\tCAP_FCNTL                      = 0x200000000008000\n\tCAP_FCNTL_ALL                  = 0x78\n\tCAP_FCNTL_GETFL                = 0x8\n\tCAP_FCNTL_GETOWN               = 0x20\n\tCAP_FCNTL_SETFL                = 0x10\n\tCAP_FCNTL_SETOWN               = 0x40\n\tCAP_FEXECVE                    = 0x200000000000080\n\tCAP_FLOCK                      = 0x200000000010000\n\tCAP_FPATHCONF                  = 0x200000000020000\n\tCAP_FSCK                       = 0x200000000040000\n\tCAP_FSTAT                      = 0x200000000080000\n\tCAP_FSTATAT                    = 0x200000000080400\n\tCAP_FSTATFS                    = 0x200000000100000\n\tCAP_FSYNC                      = 0x200000000000100\n\tCAP_FTRUNCATE                  = 0x200000000000200\n\tCAP_FUTIMES                    = 0x200000000200000\n\tCAP_FUTIMESAT                  = 0x200000000200400\n\tCAP_GETPEERNAME                = 0x200000100000000\n\tCAP_GETSOCKNAME                = 0x200000200000000\n\tCAP_GETSOCKOPT                 = 0x200000400000000\n\tCAP_IOCTL                      = 0x400000000000080\n\tCAP_IOCTLS_ALL                 = 0x7fffffff\n\tCAP_KQUEUE                     = 0x400000000100040\n\tCAP_KQUEUE_CHANGE              = 0x400000000100000\n\tCAP_KQUEUE_EVENT               = 0x400000000000040\n\tCAP_LINKAT_SOURCE              = 0x200020000000400\n\tCAP_LINKAT_TARGET              = 0x200000000400400\n\tCAP_LISTEN                     = 0x200000800000000\n\tCAP_LOOKUP                     = 0x200000000000400\n\tCAP_MAC_GET                    = 0x400000000000001\n\tCAP_MAC_SET                    = 0x400000000000002\n\tCAP_MKDIRAT                    = 0x200000000800400\n\tCAP_MKFIFOAT                   = 0x200000001000400\n\tCAP_MKNODAT                    = 0x200000002000400\n\tCAP_MMAP                       = 0x200000000000010\n\tCAP_MMAP_R                     = 0x20000000000001d\n\tCAP_MMAP_RW                    = 0x20000000000001f\n\tCAP_MMAP_RWX                   = 0x20000000000003f\n\tCAP_MMAP_RX                    = 0x20000000000003d\n\tCAP_MMAP_W                     = 0x20000000000001e\n\tCAP_MMAP_WX                    = 0x20000000000003e\n\tCAP_MMAP_X                     = 0x20000000000003c\n\tCAP_PDGETPID                   = 0x400000000000200\n\tCAP_PDKILL                     = 0x400000000000800\n\tCAP_PDWAIT                     = 0x400000000000400\n\tCAP_PEELOFF                    = 0x200001000000000\n\tCAP_POLL_EVENT                 = 0x400000000000020\n\tCAP_PREAD                      = 0x20000000000000d\n\tCAP_PWRITE                     = 0x20000000000000e\n\tCAP_READ                       = 0x200000000000001\n\tCAP_RECV                       = 0x200000000000001\n\tCAP_RENAMEAT_SOURCE            = 0x200000004000400\n\tCAP_RENAMEAT_TARGET            = 0x200040000000400\n\tCAP_RIGHTS_VERSION             = 0x0\n\tCAP_RIGHTS_VERSION_00          = 0x0\n\tCAP_SEEK                       = 0x20000000000000c\n\tCAP_SEEK_TELL                  = 0x200000000000004\n\tCAP_SEM_GETVALUE               = 0x400000000000004\n\tCAP_SEM_POST                   = 0x400000000000008\n\tCAP_SEM_WAIT                   = 0x400000000000010\n\tCAP_SEND                       = 0x200000000000002\n\tCAP_SETSOCKOPT                 = 0x200002000000000\n\tCAP_SHUTDOWN                   = 0x200004000000000\n\tCAP_SOCK_CLIENT                = 0x200007780000003\n\tCAP_SOCK_SERVER                = 0x200007f60000003\n\tCAP_SYMLINKAT                  = 0x200000008000400\n\tCAP_TTYHOOK                    = 0x400000000000100\n\tCAP_UNLINKAT                   = 0x200000010000400\n\tCAP_UNUSED0_44                 = 0x200080000000000\n\tCAP_UNUSED0_57                 = 0x300000000000000\n\tCAP_UNUSED1_22                 = 0x400000000200000\n\tCAP_UNUSED1_57                 = 0x500000000000000\n\tCAP_WRITE                      = 0x200000000000002\n\tCFLUSH                         = 0xf\n\tCLOCAL                         = 0x8000\n\tCLOCK_MONOTONIC                = 0x4\n\tCLOCK_MONOTONIC_FAST           = 0xc\n\tCLOCK_MONOTONIC_PRECISE        = 0xb\n\tCLOCK_PROCESS_CPUTIME_ID       = 0xf\n\tCLOCK_PROF                     = 0x2\n\tCLOCK_REALTIME                 = 0x0\n\tCLOCK_REALTIME_FAST            = 0xa\n\tCLOCK_REALTIME_PRECISE         = 0x9\n\tCLOCK_SECOND                   = 0xd\n\tCLOCK_THREAD_CPUTIME_ID        = 0xe\n\tCLOCK_UPTIME                   = 0x5\n\tCLOCK_UPTIME_FAST              = 0x8\n\tCLOCK_UPTIME_PRECISE           = 0x7\n\tCLOCK_VIRTUAL                  = 0x1\n\tCPUSTATES                      = 0x5\n\tCP_IDLE                        = 0x4\n\tCP_INTR                        = 0x3\n\tCP_NICE                        = 0x1\n\tCP_SYS                         = 0x2\n\tCP_USER                        = 0x0\n\tCREAD                          = 0x800\n\tCRTSCTS                        = 0x30000\n\tCS5                            = 0x0\n\tCS6                            = 0x100\n\tCS7                            = 0x200\n\tCS8                            = 0x300\n\tCSIZE                          = 0x300\n\tCSTART                         = 0x11\n\tCSTATUS                        = 0x14\n\tCSTOP                          = 0x13\n\tCSTOPB                         = 0x400\n\tCSUSP                          = 0x1a\n\tCTL_HW                         = 0x6\n\tCTL_KERN                       = 0x1\n\tCTL_MAXNAME                    = 0x18\n\tCTL_NET                        = 0x4\n\tDIOCGATTR                      = 0xc144648e\n\tDIOCGDELETE                    = 0x80106488\n\tDIOCGFLUSH                     = 0x20006487\n\tDIOCGFRONTSTUFF                = 0x40086486\n\tDIOCGFWHEADS                   = 0x40046483\n\tDIOCGFWSECTORS                 = 0x40046482\n\tDIOCGIDENT                     = 0x41006489\n\tDIOCGMEDIASIZE                 = 0x40086481\n\tDIOCGPHYSPATH                  = 0x4400648d\n\tDIOCGPROVIDERNAME              = 0x4400648a\n\tDIOCGSECTORSIZE                = 0x40046480\n\tDIOCGSTRIPEOFFSET              = 0x4008648c\n\tDIOCGSTRIPESIZE                = 0x4008648b\n\tDIOCSKERNELDUMP                = 0x804c6490\n\tDIOCSKERNELDUMP_FREEBSD11      = 0x80046485\n\tDIOCZONECMD                    = 0xc06c648f\n\tDLT_A429                       = 0xb8\n\tDLT_A653_ICM                   = 0xb9\n\tDLT_AIRONET_HEADER             = 0x78\n\tDLT_AOS                        = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394     = 0x8a\n\tDLT_ARCNET                     = 0x7\n\tDLT_ARCNET_LINUX               = 0x81\n\tDLT_ATM_CLIP                   = 0x13\n\tDLT_ATM_RFC1483                = 0xb\n\tDLT_AURORA                     = 0x7e\n\tDLT_AX25                       = 0x3\n\tDLT_AX25_KISS                  = 0xca\n\tDLT_BACNET_MS_TP               = 0xa5\n\tDLT_BLUETOOTH_BREDR_BB         = 0xff\n\tDLT_BLUETOOTH_HCI_H4           = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9\n\tDLT_BLUETOOTH_LE_LL            = 0xfb\n\tDLT_BLUETOOTH_LE_LL_WITH_PHDR  = 0x100\n\tDLT_BLUETOOTH_LINUX_MONITOR    = 0xfe\n\tDLT_CAN20B                     = 0xbe\n\tDLT_CAN_SOCKETCAN              = 0xe3\n\tDLT_CHAOS                      = 0x5\n\tDLT_CHDLC                      = 0x68\n\tDLT_CISCO_IOS                  = 0x76\n\tDLT_CLASS_NETBSD_RAWAF         = 0x2240000\n\tDLT_C_HDLC                     = 0x68\n\tDLT_C_HDLC_WITH_DIR            = 0xcd\n\tDLT_DBUS                       = 0xe7\n\tDLT_DECT                       = 0xdd\n\tDLT_DISPLAYPORT_AUX            = 0x113\n\tDLT_DOCSIS                     = 0x8f\n\tDLT_DOCSIS31_XRA31             = 0x111\n\tDLT_DVB_CI                     = 0xeb\n\tDLT_ECONET                     = 0x73\n\tDLT_EN10MB                     = 0x1\n\tDLT_EN3MB                      = 0x2\n\tDLT_ENC                        = 0x6d\n\tDLT_EPON                       = 0x103\n\tDLT_ERF                        = 0xc5\n\tDLT_ERF_ETH                    = 0xaf\n\tDLT_ERF_POS                    = 0xb0\n\tDLT_ETHERNET_MPACKET           = 0x112\n\tDLT_FC_2                       = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS     = 0xe1\n\tDLT_FDDI                       = 0xa\n\tDLT_FLEXRAY                    = 0xd2\n\tDLT_FRELAY                     = 0x6b\n\tDLT_FRELAY_WITH_DIR            = 0xce\n\tDLT_GCOM_SERIAL                = 0xad\n\tDLT_GCOM_T1E1                  = 0xac\n\tDLT_GPF_F                      = 0xab\n\tDLT_GPF_T                      = 0xaa\n\tDLT_GPRS_LLC                   = 0xa9\n\tDLT_GSMTAP_ABIS                = 0xda\n\tDLT_GSMTAP_UM                  = 0xd9\n\tDLT_IBM_SN                     = 0x92\n\tDLT_IBM_SP                     = 0x91\n\tDLT_IEEE802                    = 0x6\n\tDLT_IEEE802_11                 = 0x69\n\tDLT_IEEE802_11_RADIO           = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS       = 0xa3\n\tDLT_IEEE802_15_4               = 0xc3\n\tDLT_IEEE802_15_4_LINUX         = 0xbf\n\tDLT_IEEE802_15_4_NOFCS         = 0xe6\n\tDLT_IEEE802_15_4_NONASK_PHY    = 0xd7\n\tDLT_IEEE802_16_MAC_CPS         = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO   = 0xc1\n\tDLT_INFINIBAND                 = 0xf7\n\tDLT_IPFILTER                   = 0x74\n\tDLT_IPMB_KONTRON               = 0xc7\n\tDLT_IPMB_LINUX                 = 0xd1\n\tDLT_IPMI_HPM_2                 = 0x104\n\tDLT_IPNET                      = 0xe2\n\tDLT_IPOIB                      = 0xf2\n\tDLT_IPV4                       = 0xe4\n\tDLT_IPV6                       = 0xe5\n\tDLT_IP_OVER_FC                 = 0x7a\n\tDLT_ISO_14443                  = 0x108\n\tDLT_JUNIPER_ATM1               = 0x89\n\tDLT_JUNIPER_ATM2               = 0x87\n\tDLT_JUNIPER_ATM_CEMIC          = 0xee\n\tDLT_JUNIPER_CHDLC              = 0xb5\n\tDLT_JUNIPER_ES                 = 0x84\n\tDLT_JUNIPER_ETHER              = 0xb2\n\tDLT_JUNIPER_FIBRECHANNEL       = 0xea\n\tDLT_JUNIPER_FRELAY             = 0xb4\n\tDLT_JUNIPER_GGSN               = 0x85\n\tDLT_JUNIPER_ISM                = 0xc2\n\tDLT_JUNIPER_MFR                = 0x86\n\tDLT_JUNIPER_MLFR               = 0x83\n\tDLT_JUNIPER_MLPPP              = 0x82\n\tDLT_JUNIPER_MONITOR            = 0xa4\n\tDLT_JUNIPER_PIC_PEER           = 0xae\n\tDLT_JUNIPER_PPP                = 0xb3\n\tDLT_JUNIPER_PPPOE              = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM          = 0xa8\n\tDLT_JUNIPER_SERVICES           = 0x88\n\tDLT_JUNIPER_SRX_E2E            = 0xe9\n\tDLT_JUNIPER_ST                 = 0xc8\n\tDLT_JUNIPER_VP                 = 0xb7\n\tDLT_JUNIPER_VS                 = 0xe8\n\tDLT_LAPB_WITH_DIR              = 0xcf\n\tDLT_LAPD                       = 0xcb\n\tDLT_LIN                        = 0xd4\n\tDLT_LINUX_EVDEV                = 0xd8\n\tDLT_LINUX_IRDA                 = 0x90\n\tDLT_LINUX_LAPD                 = 0xb1\n\tDLT_LINUX_PPP_WITHDIRECTION    = 0xa6\n\tDLT_LINUX_SLL                  = 0x71\n\tDLT_LINUX_SLL2                 = 0x114\n\tDLT_LOOP                       = 0x6c\n\tDLT_LORATAP                    = 0x10e\n\tDLT_LTALK                      = 0x72\n\tDLT_MATCHING_MAX               = 0x114\n\tDLT_MATCHING_MIN               = 0x68\n\tDLT_MFR                        = 0xb6\n\tDLT_MOST                       = 0xd3\n\tDLT_MPEG_2_TS                  = 0xf3\n\tDLT_MPLS                       = 0xdb\n\tDLT_MTP2                       = 0x8c\n\tDLT_MTP2_WITH_PHDR             = 0x8b\n\tDLT_MTP3                       = 0x8d\n\tDLT_MUX27010                   = 0xec\n\tDLT_NETANALYZER                = 0xf0\n\tDLT_NETANALYZER_TRANSPARENT    = 0xf1\n\tDLT_NETLINK                    = 0xfd\n\tDLT_NFC_LLCP                   = 0xf5\n\tDLT_NFLOG                      = 0xef\n\tDLT_NG40                       = 0xf4\n\tDLT_NORDIC_BLE                 = 0x110\n\tDLT_NULL                       = 0x0\n\tDLT_OPENFLOW                   = 0x10b\n\tDLT_PCI_EXP                    = 0x7d\n\tDLT_PFLOG                      = 0x75\n\tDLT_PFSYNC                     = 0x79\n\tDLT_PKTAP                      = 0x102\n\tDLT_PPI                        = 0xc0\n\tDLT_PPP                        = 0x9\n\tDLT_PPP_BSDOS                  = 0xe\n\tDLT_PPP_ETHER                  = 0x33\n\tDLT_PPP_PPPD                   = 0xa6\n\tDLT_PPP_SERIAL                 = 0x32\n\tDLT_PPP_WITH_DIR               = 0xcc\n\tDLT_PPP_WITH_DIRECTION         = 0xa6\n\tDLT_PRISM_HEADER               = 0x77\n\tDLT_PROFIBUS_DL                = 0x101\n\tDLT_PRONET                     = 0x4\n\tDLT_RAIF1                      = 0xc6\n\tDLT_RAW                        = 0xc\n\tDLT_RDS                        = 0x109\n\tDLT_REDBACK_SMARTEDGE          = 0x20\n\tDLT_RIO                        = 0x7c\n\tDLT_RTAC_SERIAL                = 0xfa\n\tDLT_SCCP                       = 0x8e\n\tDLT_SCTP                       = 0xf8\n\tDLT_SDLC                       = 0x10c\n\tDLT_SITA                       = 0xc4\n\tDLT_SLIP                       = 0x8\n\tDLT_SLIP_BSDOS                 = 0xd\n\tDLT_STANAG_5066_D_PDU          = 0xed\n\tDLT_SUNATM                     = 0x7b\n\tDLT_SYMANTEC_FIREWALL          = 0x63\n\tDLT_TI_LLN_SNIFFER             = 0x10d\n\tDLT_TZSP                       = 0x80\n\tDLT_USB                        = 0xba\n\tDLT_USBPCAP                    = 0xf9\n\tDLT_USB_DARWIN                 = 0x10a\n\tDLT_USB_FREEBSD                = 0xba\n\tDLT_USB_LINUX                  = 0xbd\n\tDLT_USB_LINUX_MMAPPED          = 0xdc\n\tDLT_USER0                      = 0x93\n\tDLT_USER1                      = 0x94\n\tDLT_USER10                     = 0x9d\n\tDLT_USER11                     = 0x9e\n\tDLT_USER12                     = 0x9f\n\tDLT_USER13                     = 0xa0\n\tDLT_USER14                     = 0xa1\n\tDLT_USER15                     = 0xa2\n\tDLT_USER2                      = 0x95\n\tDLT_USER3                      = 0x96\n\tDLT_USER4                      = 0x97\n\tDLT_USER5                      = 0x98\n\tDLT_USER6                      = 0x99\n\tDLT_USER7                      = 0x9a\n\tDLT_USER8                      = 0x9b\n\tDLT_USER9                      = 0x9c\n\tDLT_VSOCK                      = 0x10f\n\tDLT_WATTSTOPPER_DLM            = 0x107\n\tDLT_WIHART                     = 0xdf\n\tDLT_WIRESHARK_UPPER_PDU        = 0xfc\n\tDLT_X2E_SERIAL                 = 0xd5\n\tDLT_X2E_XORAYA                 = 0xd6\n\tDLT_ZWAVE_R1_R2                = 0x105\n\tDLT_ZWAVE_R3                   = 0x106\n\tDT_BLK                         = 0x6\n\tDT_CHR                         = 0x2\n\tDT_DIR                         = 0x4\n\tDT_FIFO                        = 0x1\n\tDT_LNK                         = 0xa\n\tDT_REG                         = 0x8\n\tDT_SOCK                        = 0xc\n\tDT_UNKNOWN                     = 0x0\n\tDT_WHT                         = 0xe\n\tECHO                           = 0x8\n\tECHOCTL                        = 0x40\n\tECHOE                          = 0x2\n\tECHOK                          = 0x4\n\tECHOKE                         = 0x1\n\tECHONL                         = 0x10\n\tECHOPRT                        = 0x20\n\tEVFILT_AIO                     = -0x3\n\tEVFILT_EMPTY                   = -0xd\n\tEVFILT_FS                      = -0x9\n\tEVFILT_LIO                     = -0xa\n\tEVFILT_PROC                    = -0x5\n\tEVFILT_PROCDESC                = -0x8\n\tEVFILT_READ                    = -0x1\n\tEVFILT_SENDFILE                = -0xc\n\tEVFILT_SIGNAL                  = -0x6\n\tEVFILT_SYSCOUNT                = 0xd\n\tEVFILT_TIMER                   = -0x7\n\tEVFILT_USER                    = -0xb\n\tEVFILT_VNODE                   = -0x4\n\tEVFILT_WRITE                   = -0x2\n\tEVNAMEMAP_NAME_SIZE            = 0x40\n\tEV_ADD                         = 0x1\n\tEV_CLEAR                       = 0x20\n\tEV_DELETE                      = 0x2\n\tEV_DISABLE                     = 0x8\n\tEV_DISPATCH                    = 0x80\n\tEV_DROP                        = 0x1000\n\tEV_ENABLE                      = 0x4\n\tEV_EOF                         = 0x8000\n\tEV_ERROR                       = 0x4000\n\tEV_FLAG1                       = 0x2000\n\tEV_FLAG2                       = 0x4000\n\tEV_FORCEONESHOT                = 0x100\n\tEV_ONESHOT                     = 0x10\n\tEV_RECEIPT                     = 0x40\n\tEV_SYSFLAGS                    = 0xf000\n\tEXTA                           = 0x4b00\n\tEXTATTR_MAXNAMELEN             = 0xff\n\tEXTATTR_NAMESPACE_EMPTY        = 0x0\n\tEXTATTR_NAMESPACE_SYSTEM       = 0x2\n\tEXTATTR_NAMESPACE_USER         = 0x1\n\tEXTB                           = 0x9600\n\tEXTPROC                        = 0x800\n\tFD_CLOEXEC                     = 0x1\n\tFD_SETSIZE                     = 0x400\n\tFLUSHO                         = 0x800000\n\tF_CANCEL                       = 0x5\n\tF_DUP2FD                       = 0xa\n\tF_DUP2FD_CLOEXEC               = 0x12\n\tF_DUPFD                        = 0x0\n\tF_DUPFD_CLOEXEC                = 0x11\n\tF_GETFD                        = 0x1\n\tF_GETFL                        = 0x3\n\tF_GETLK                        = 0xb\n\tF_GETOWN                       = 0x5\n\tF_OGETLK                       = 0x7\n\tF_OK                           = 0x0\n\tF_OSETLK                       = 0x8\n\tF_OSETLKW                      = 0x9\n\tF_RDAHEAD                      = 0x10\n\tF_RDLCK                        = 0x1\n\tF_READAHEAD                    = 0xf\n\tF_SETFD                        = 0x2\n\tF_SETFL                        = 0x4\n\tF_SETLK                        = 0xc\n\tF_SETLKW                       = 0xd\n\tF_SETLK_REMOTE                 = 0xe\n\tF_SETOWN                       = 0x6\n\tF_UNLCK                        = 0x2\n\tF_UNLCKSYS                     = 0x4\n\tF_WRLCK                        = 0x3\n\tHUPCL                          = 0x4000\n\tHW_MACHINE                     = 0x1\n\tICANON                         = 0x100\n\tICMP6_FILTER                   = 0x12\n\tICRNL                          = 0x100\n\tIEXTEN                         = 0x400\n\tIFAN_ARRIVAL                   = 0x0\n\tIFAN_DEPARTURE                 = 0x1\n\tIFCAP_WOL_MAGIC                = 0x2000\n\tIFF_ALLMULTI                   = 0x200\n\tIFF_ALTPHYS                    = 0x4000\n\tIFF_BROADCAST                  = 0x2\n\tIFF_CANTCHANGE                 = 0x218f52\n\tIFF_CANTCONFIG                 = 0x10000\n\tIFF_DEBUG                      = 0x4\n\tIFF_DRV_OACTIVE                = 0x400\n\tIFF_DRV_RUNNING                = 0x40\n\tIFF_DYING                      = 0x200000\n\tIFF_LINK0                      = 0x1000\n\tIFF_LINK1                      = 0x2000\n\tIFF_LINK2                      = 0x4000\n\tIFF_LOOPBACK                   = 0x8\n\tIFF_MONITOR                    = 0x40000\n\tIFF_MULTICAST                  = 0x8000\n\tIFF_NOARP                      = 0x80\n\tIFF_NOGROUP                    = 0x800000\n\tIFF_OACTIVE                    = 0x400\n\tIFF_POINTOPOINT                = 0x10\n\tIFF_PPROMISC                   = 0x20000\n\tIFF_PROMISC                    = 0x100\n\tIFF_RENAMING                   = 0x400000\n\tIFF_RUNNING                    = 0x40\n\tIFF_SIMPLEX                    = 0x800\n\tIFF_STATICARP                  = 0x80000\n\tIFF_UP                         = 0x1\n\tIFNAMSIZ                       = 0x10\n\tIFT_BRIDGE                     = 0xd1\n\tIFT_CARP                       = 0xf8\n\tIFT_IEEE1394                   = 0x90\n\tIFT_INFINIBAND                 = 0xc7\n\tIFT_L2VLAN                     = 0x87\n\tIFT_L3IPVLAN                   = 0x88\n\tIFT_PPP                        = 0x17\n\tIFT_PROPVIRTUAL                = 0x35\n\tIGNBRK                         = 0x1\n\tIGNCR                          = 0x80\n\tIGNPAR                         = 0x4\n\tIMAXBEL                        = 0x2000\n\tINLCR                          = 0x40\n\tINPCK                          = 0x10\n\tIN_CLASSA_HOST                 = 0xffffff\n\tIN_CLASSA_MAX                  = 0x80\n\tIN_CLASSA_NET                  = 0xff000000\n\tIN_CLASSA_NSHIFT               = 0x18\n\tIN_CLASSB_HOST                 = 0xffff\n\tIN_CLASSB_MAX                  = 0x10000\n\tIN_CLASSB_NET                  = 0xffff0000\n\tIN_CLASSB_NSHIFT               = 0x10\n\tIN_CLASSC_HOST                 = 0xff\n\tIN_CLASSC_NET                  = 0xffffff00\n\tIN_CLASSC_NSHIFT               = 0x8\n\tIN_CLASSD_HOST                 = 0xfffffff\n\tIN_CLASSD_NET                  = 0xf0000000\n\tIN_CLASSD_NSHIFT               = 0x1c\n\tIN_LOOPBACKNET                 = 0x7f\n\tIN_RFC3021_MASK                = 0xfffffffe\n\tIPPROTO_3PC                    = 0x22\n\tIPPROTO_ADFS                   = 0x44\n\tIPPROTO_AH                     = 0x33\n\tIPPROTO_AHIP                   = 0x3d\n\tIPPROTO_APES                   = 0x63\n\tIPPROTO_ARGUS                  = 0xd\n\tIPPROTO_AX25                   = 0x5d\n\tIPPROTO_BHA                    = 0x31\n\tIPPROTO_BLT                    = 0x1e\n\tIPPROTO_BRSATMON               = 0x4c\n\tIPPROTO_CARP                   = 0x70\n\tIPPROTO_CFTP                   = 0x3e\n\tIPPROTO_CHAOS                  = 0x10\n\tIPPROTO_CMTP                   = 0x26\n\tIPPROTO_CPHB                   = 0x49\n\tIPPROTO_CPNX                   = 0x48\n\tIPPROTO_DCCP                   = 0x21\n\tIPPROTO_DDP                    = 0x25\n\tIPPROTO_DGP                    = 0x56\n\tIPPROTO_DIVERT                 = 0x102\n\tIPPROTO_DONE                   = 0x101\n\tIPPROTO_DSTOPTS                = 0x3c\n\tIPPROTO_EGP                    = 0x8\n\tIPPROTO_EMCON                  = 0xe\n\tIPPROTO_ENCAP                  = 0x62\n\tIPPROTO_EON                    = 0x50\n\tIPPROTO_ESP                    = 0x32\n\tIPPROTO_ETHERIP                = 0x61\n\tIPPROTO_FRAGMENT               = 0x2c\n\tIPPROTO_GGP                    = 0x3\n\tIPPROTO_GMTP                   = 0x64\n\tIPPROTO_GRE                    = 0x2f\n\tIPPROTO_HELLO                  = 0x3f\n\tIPPROTO_HIP                    = 0x8b\n\tIPPROTO_HMP                    = 0x14\n\tIPPROTO_HOPOPTS                = 0x0\n\tIPPROTO_ICMP                   = 0x1\n\tIPPROTO_ICMPV6                 = 0x3a\n\tIPPROTO_IDP                    = 0x16\n\tIPPROTO_IDPR                   = 0x23\n\tIPPROTO_IDRP                   = 0x2d\n\tIPPROTO_IGMP                   = 0x2\n\tIPPROTO_IGP                    = 0x55\n\tIPPROTO_IGRP                   = 0x58\n\tIPPROTO_IL                     = 0x28\n\tIPPROTO_INLSP                  = 0x34\n\tIPPROTO_INP                    = 0x20\n\tIPPROTO_IP                     = 0x0\n\tIPPROTO_IPCOMP                 = 0x6c\n\tIPPROTO_IPCV                   = 0x47\n\tIPPROTO_IPEIP                  = 0x5e\n\tIPPROTO_IPIP                   = 0x4\n\tIPPROTO_IPPC                   = 0x43\n\tIPPROTO_IPV4                   = 0x4\n\tIPPROTO_IPV6                   = 0x29\n\tIPPROTO_IRTP                   = 0x1c\n\tIPPROTO_KRYPTOLAN              = 0x41\n\tIPPROTO_LARP                   = 0x5b\n\tIPPROTO_LEAF1                  = 0x19\n\tIPPROTO_LEAF2                  = 0x1a\n\tIPPROTO_MAX                    = 0x100\n\tIPPROTO_MEAS                   = 0x13\n\tIPPROTO_MH                     = 0x87\n\tIPPROTO_MHRP                   = 0x30\n\tIPPROTO_MICP                   = 0x5f\n\tIPPROTO_MOBILE                 = 0x37\n\tIPPROTO_MPLS                   = 0x89\n\tIPPROTO_MTP                    = 0x5c\n\tIPPROTO_MUX                    = 0x12\n\tIPPROTO_ND                     = 0x4d\n\tIPPROTO_NHRP                   = 0x36\n\tIPPROTO_NONE                   = 0x3b\n\tIPPROTO_NSP                    = 0x1f\n\tIPPROTO_NVPII                  = 0xb\n\tIPPROTO_OLD_DIVERT             = 0xfe\n\tIPPROTO_OSPFIGP                = 0x59\n\tIPPROTO_PFSYNC                 = 0xf0\n\tIPPROTO_PGM                    = 0x71\n\tIPPROTO_PIGP                   = 0x9\n\tIPPROTO_PIM                    = 0x67\n\tIPPROTO_PRM                    = 0x15\n\tIPPROTO_PUP                    = 0xc\n\tIPPROTO_PVP                    = 0x4b\n\tIPPROTO_RAW                    = 0xff\n\tIPPROTO_RCCMON                 = 0xa\n\tIPPROTO_RDP                    = 0x1b\n\tIPPROTO_RESERVED_253           = 0xfd\n\tIPPROTO_RESERVED_254           = 0xfe\n\tIPPROTO_ROUTING                = 0x2b\n\tIPPROTO_RSVP                   = 0x2e\n\tIPPROTO_RVD                    = 0x42\n\tIPPROTO_SATEXPAK               = 0x40\n\tIPPROTO_SATMON                 = 0x45\n\tIPPROTO_SCCSP                  = 0x60\n\tIPPROTO_SCTP                   = 0x84\n\tIPPROTO_SDRP                   = 0x2a\n\tIPPROTO_SEND                   = 0x103\n\tIPPROTO_SHIM6                  = 0x8c\n\tIPPROTO_SKIP                   = 0x39\n\tIPPROTO_SPACER                 = 0x7fff\n\tIPPROTO_SRPC                   = 0x5a\n\tIPPROTO_ST                     = 0x7\n\tIPPROTO_SVMTP                  = 0x52\n\tIPPROTO_SWIPE                  = 0x35\n\tIPPROTO_TCF                    = 0x57\n\tIPPROTO_TCP                    = 0x6\n\tIPPROTO_TLSP                   = 0x38\n\tIPPROTO_TP                     = 0x1d\n\tIPPROTO_TPXX                   = 0x27\n\tIPPROTO_TRUNK1                 = 0x17\n\tIPPROTO_TRUNK2                 = 0x18\n\tIPPROTO_TTP                    = 0x54\n\tIPPROTO_UDP                    = 0x11\n\tIPPROTO_UDPLITE                = 0x88\n\tIPPROTO_VINES                  = 0x53\n\tIPPROTO_VISA                   = 0x46\n\tIPPROTO_VMTP                   = 0x51\n\tIPPROTO_WBEXPAK                = 0x4f\n\tIPPROTO_WBMON                  = 0x4e\n\tIPPROTO_WSN                    = 0x4a\n\tIPPROTO_XNET                   = 0xf\n\tIPPROTO_XTP                    = 0x24\n\tIPV6_AUTOFLOWLABEL             = 0x3b\n\tIPV6_BINDANY                   = 0x40\n\tIPV6_BINDMULTI                 = 0x41\n\tIPV6_BINDV6ONLY                = 0x1b\n\tIPV6_CHECKSUM                  = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS    = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP    = 0x1\n\tIPV6_DEFHLIM                   = 0x40\n\tIPV6_DONTFRAG                  = 0x3e\n\tIPV6_DSTOPTS                   = 0x32\n\tIPV6_FLOWID                    = 0x43\n\tIPV6_FLOWINFO_MASK             = 0xffffff0f\n\tIPV6_FLOWLABEL_LEN             = 0x14\n\tIPV6_FLOWLABEL_MASK            = 0xffff0f00\n\tIPV6_FLOWTYPE                  = 0x44\n\tIPV6_FRAGTTL                   = 0x78\n\tIPV6_FW_ADD                    = 0x1e\n\tIPV6_FW_DEL                    = 0x1f\n\tIPV6_FW_FLUSH                  = 0x20\n\tIPV6_FW_GET                    = 0x22\n\tIPV6_FW_ZERO                   = 0x21\n\tIPV6_HLIMDEC                   = 0x1\n\tIPV6_HOPLIMIT                  = 0x2f\n\tIPV6_HOPOPTS                   = 0x31\n\tIPV6_IPSEC_POLICY              = 0x1c\n\tIPV6_JOIN_GROUP                = 0xc\n\tIPV6_LEAVE_GROUP               = 0xd\n\tIPV6_MAXHLIM                   = 0xff\n\tIPV6_MAXOPTHDR                 = 0x800\n\tIPV6_MAXPACKET                 = 0xffff\n\tIPV6_MAX_GROUP_SRC_FILTER      = 0x200\n\tIPV6_MAX_MEMBERSHIPS           = 0xfff\n\tIPV6_MAX_SOCK_SRC_FILTER       = 0x80\n\tIPV6_MMTU                      = 0x500\n\tIPV6_MSFILTER                  = 0x4a\n\tIPV6_MULTICAST_HOPS            = 0xa\n\tIPV6_MULTICAST_IF              = 0x9\n\tIPV6_MULTICAST_LOOP            = 0xb\n\tIPV6_NEXTHOP                   = 0x30\n\tIPV6_ORIGDSTADDR               = 0x48\n\tIPV6_PATHMTU                   = 0x2c\n\tIPV6_PKTINFO                   = 0x2e\n\tIPV6_PORTRANGE                 = 0xe\n\tIPV6_PORTRANGE_DEFAULT         = 0x0\n\tIPV6_PORTRANGE_HIGH            = 0x1\n\tIPV6_PORTRANGE_LOW             = 0x2\n\tIPV6_PREFER_TEMPADDR           = 0x3f\n\tIPV6_RECVDSTOPTS               = 0x28\n\tIPV6_RECVFLOWID                = 0x46\n\tIPV6_RECVHOPLIMIT              = 0x25\n\tIPV6_RECVHOPOPTS               = 0x27\n\tIPV6_RECVORIGDSTADDR           = 0x48\n\tIPV6_RECVPATHMTU               = 0x2b\n\tIPV6_RECVPKTINFO               = 0x24\n\tIPV6_RECVRSSBUCKETID           = 0x47\n\tIPV6_RECVRTHDR                 = 0x26\n\tIPV6_RECVTCLASS                = 0x39\n\tIPV6_RSSBUCKETID               = 0x45\n\tIPV6_RSS_LISTEN_BUCKET         = 0x42\n\tIPV6_RTHDR                     = 0x33\n\tIPV6_RTHDRDSTOPTS              = 0x23\n\tIPV6_RTHDR_LOOSE               = 0x0\n\tIPV6_RTHDR_STRICT              = 0x1\n\tIPV6_RTHDR_TYPE_0              = 0x0\n\tIPV6_SOCKOPT_RESERVED1         = 0x3\n\tIPV6_TCLASS                    = 0x3d\n\tIPV6_UNICAST_HOPS              = 0x4\n\tIPV6_USE_MIN_MTU               = 0x2a\n\tIPV6_V6ONLY                    = 0x1b\n\tIPV6_VERSION                   = 0x60\n\tIPV6_VERSION_MASK              = 0xf0\n\tIPV6_VLAN_PCP                  = 0x4b\n\tIP_ADD_MEMBERSHIP              = 0xc\n\tIP_ADD_SOURCE_MEMBERSHIP       = 0x46\n\tIP_BINDANY                     = 0x18\n\tIP_BINDMULTI                   = 0x19\n\tIP_BLOCK_SOURCE                = 0x48\n\tIP_DEFAULT_MULTICAST_LOOP      = 0x1\n\tIP_DEFAULT_MULTICAST_TTL       = 0x1\n\tIP_DF                          = 0x4000\n\tIP_DONTFRAG                    = 0x43\n\tIP_DROP_MEMBERSHIP             = 0xd\n\tIP_DROP_SOURCE_MEMBERSHIP      = 0x47\n\tIP_DUMMYNET3                   = 0x31\n\tIP_DUMMYNET_CONFIGURE          = 0x3c\n\tIP_DUMMYNET_DEL                = 0x3d\n\tIP_DUMMYNET_FLUSH              = 0x3e\n\tIP_DUMMYNET_GET                = 0x40\n\tIP_FLOWID                      = 0x5a\n\tIP_FLOWTYPE                    = 0x5b\n\tIP_FW3                         = 0x30\n\tIP_FW_ADD                      = 0x32\n\tIP_FW_DEL                      = 0x33\n\tIP_FW_FLUSH                    = 0x34\n\tIP_FW_GET                      = 0x36\n\tIP_FW_NAT_CFG                  = 0x38\n\tIP_FW_NAT_DEL                  = 0x39\n\tIP_FW_NAT_GET_CONFIG           = 0x3a\n\tIP_FW_NAT_GET_LOG              = 0x3b\n\tIP_FW_RESETLOG                 = 0x37\n\tIP_FW_TABLE_ADD                = 0x28\n\tIP_FW_TABLE_DEL                = 0x29\n\tIP_FW_TABLE_FLUSH              = 0x2a\n\tIP_FW_TABLE_GETSIZE            = 0x2b\n\tIP_FW_TABLE_LIST               = 0x2c\n\tIP_FW_ZERO                     = 0x35\n\tIP_HDRINCL                     = 0x2\n\tIP_IPSEC_POLICY                = 0x15\n\tIP_MAXPACKET                   = 0xffff\n\tIP_MAX_GROUP_SRC_FILTER        = 0x200\n\tIP_MAX_MEMBERSHIPS             = 0xfff\n\tIP_MAX_SOCK_MUTE_FILTER        = 0x80\n\tIP_MAX_SOCK_SRC_FILTER         = 0x80\n\tIP_MF                          = 0x2000\n\tIP_MINTTL                      = 0x42\n\tIP_MSFILTER                    = 0x4a\n\tIP_MSS                         = 0x240\n\tIP_MULTICAST_IF                = 0x9\n\tIP_MULTICAST_LOOP              = 0xb\n\tIP_MULTICAST_TTL               = 0xa\n\tIP_MULTICAST_VIF               = 0xe\n\tIP_OFFMASK                     = 0x1fff\n\tIP_ONESBCAST                   = 0x17\n\tIP_OPTIONS                     = 0x1\n\tIP_ORIGDSTADDR                 = 0x1b\n\tIP_PORTRANGE                   = 0x13\n\tIP_PORTRANGE_DEFAULT           = 0x0\n\tIP_PORTRANGE_HIGH              = 0x1\n\tIP_PORTRANGE_LOW               = 0x2\n\tIP_RECVDSTADDR                 = 0x7\n\tIP_RECVFLOWID                  = 0x5d\n\tIP_RECVIF                      = 0x14\n\tIP_RECVOPTS                    = 0x5\n\tIP_RECVORIGDSTADDR             = 0x1b\n\tIP_RECVRETOPTS                 = 0x6\n\tIP_RECVRSSBUCKETID             = 0x5e\n\tIP_RECVTOS                     = 0x44\n\tIP_RECVTTL                     = 0x41\n\tIP_RETOPTS                     = 0x8\n\tIP_RF                          = 0x8000\n\tIP_RSSBUCKETID                 = 0x5c\n\tIP_RSS_LISTEN_BUCKET           = 0x1a\n\tIP_RSVP_OFF                    = 0x10\n\tIP_RSVP_ON                     = 0xf\n\tIP_RSVP_VIF_OFF                = 0x12\n\tIP_RSVP_VIF_ON                 = 0x11\n\tIP_SENDSRCADDR                 = 0x7\n\tIP_TOS                         = 0x3\n\tIP_TTL                         = 0x4\n\tIP_UNBLOCK_SOURCE              = 0x49\n\tIP_VLAN_PCP                    = 0x4b\n\tISIG                           = 0x80\n\tISTRIP                         = 0x20\n\tITIMER_PROF                    = 0x2\n\tITIMER_REAL                    = 0x0\n\tITIMER_VIRTUAL                 = 0x1\n\tIXANY                          = 0x800\n\tIXOFF                          = 0x400\n\tIXON                           = 0x200\n\tKERN_HOSTNAME                  = 0xa\n\tKERN_OSRELEASE                 = 0x2\n\tKERN_OSTYPE                    = 0x1\n\tKERN_VERSION                   = 0x4\n\tLOCAL_CONNWAIT                 = 0x4\n\tLOCAL_CREDS                    = 0x2\n\tLOCAL_PEERCRED                 = 0x1\n\tLOCAL_VENDOR                   = 0x80000000\n\tLOCK_EX                        = 0x2\n\tLOCK_NB                        = 0x4\n\tLOCK_SH                        = 0x1\n\tLOCK_UN                        = 0x8\n\tMADV_AUTOSYNC                  = 0x7\n\tMADV_CORE                      = 0x9\n\tMADV_DONTNEED                  = 0x4\n\tMADV_FREE                      = 0x5\n\tMADV_NOCORE                    = 0x8\n\tMADV_NORMAL                    = 0x0\n\tMADV_NOSYNC                    = 0x6\n\tMADV_PROTECT                   = 0xa\n\tMADV_RANDOM                    = 0x1\n\tMADV_SEQUENTIAL                = 0x2\n\tMADV_WILLNEED                  = 0x3\n\tMAP_ALIGNED_SUPER              = 0x1000000\n\tMAP_ALIGNMENT_MASK             = -0x1000000\n\tMAP_ALIGNMENT_SHIFT            = 0x18\n\tMAP_ANON                       = 0x1000\n\tMAP_ANONYMOUS                  = 0x1000\n\tMAP_COPY                       = 0x2\n\tMAP_EXCL                       = 0x4000\n\tMAP_FILE                       = 0x0\n\tMAP_FIXED                      = 0x10\n\tMAP_GUARD                      = 0x2000\n\tMAP_HASSEMAPHORE               = 0x200\n\tMAP_NOCORE                     = 0x20000\n\tMAP_NOSYNC                     = 0x800\n\tMAP_PREFAULT_READ              = 0x40000\n\tMAP_PRIVATE                    = 0x2\n\tMAP_RESERVED0020               = 0x20\n\tMAP_RESERVED0040               = 0x40\n\tMAP_RESERVED0080               = 0x80\n\tMAP_RESERVED0100               = 0x100\n\tMAP_SHARED                     = 0x1\n\tMAP_STACK                      = 0x400\n\tMCAST_BLOCK_SOURCE             = 0x54\n\tMCAST_EXCLUDE                  = 0x2\n\tMCAST_INCLUDE                  = 0x1\n\tMCAST_JOIN_GROUP               = 0x50\n\tMCAST_JOIN_SOURCE_GROUP        = 0x52\n\tMCAST_LEAVE_GROUP              = 0x51\n\tMCAST_LEAVE_SOURCE_GROUP       = 0x53\n\tMCAST_UNBLOCK_SOURCE           = 0x55\n\tMCAST_UNDEFINED                = 0x0\n\tMCL_CURRENT                    = 0x1\n\tMCL_FUTURE                     = 0x2\n\tMNT_ACLS                       = 0x8000000\n\tMNT_ASYNC                      = 0x40\n\tMNT_AUTOMOUNTED                = 0x200000000\n\tMNT_BYFSID                     = 0x8000000\n\tMNT_CMDFLAGS                   = 0xd0f0000\n\tMNT_DEFEXPORTED                = 0x200\n\tMNT_DELEXPORT                  = 0x20000\n\tMNT_EXKERB                     = 0x800\n\tMNT_EXPORTANON                 = 0x400\n\tMNT_EXPORTED                   = 0x100\n\tMNT_EXPUBLIC                   = 0x20000000\n\tMNT_EXRDONLY                   = 0x80\n\tMNT_FORCE                      = 0x80000\n\tMNT_GJOURNAL                   = 0x2000000\n\tMNT_IGNORE                     = 0x800000\n\tMNT_LAZY                       = 0x3\n\tMNT_LOCAL                      = 0x1000\n\tMNT_MULTILABEL                 = 0x4000000\n\tMNT_NFS4ACLS                   = 0x10\n\tMNT_NOATIME                    = 0x10000000\n\tMNT_NOCLUSTERR                 = 0x40000000\n\tMNT_NOCLUSTERW                 = 0x80000000\n\tMNT_NOEXEC                     = 0x4\n\tMNT_NONBUSY                    = 0x4000000\n\tMNT_NOSUID                     = 0x8\n\tMNT_NOSYMFOLLOW                = 0x400000\n\tMNT_NOWAIT                     = 0x2\n\tMNT_QUOTA                      = 0x2000\n\tMNT_RDONLY                     = 0x1\n\tMNT_RELOAD                     = 0x40000\n\tMNT_ROOTFS                     = 0x4000\n\tMNT_SNAPSHOT                   = 0x1000000\n\tMNT_SOFTDEP                    = 0x200000\n\tMNT_SUIDDIR                    = 0x100000\n\tMNT_SUJ                        = 0x100000000\n\tMNT_SUSPEND                    = 0x4\n\tMNT_SYNCHRONOUS                = 0x2\n\tMNT_UNION                      = 0x20\n\tMNT_UNTRUSTED                  = 0x800000000\n\tMNT_UPDATE                     = 0x10000\n\tMNT_UPDATEMASK                 = 0xad8d0807e\n\tMNT_USER                       = 0x8000\n\tMNT_VERIFIED                   = 0x400000000\n\tMNT_VISFLAGMASK                = 0xffef0ffff\n\tMNT_WAIT                       = 0x1\n\tMSG_CMSG_CLOEXEC               = 0x40000\n\tMSG_COMPAT                     = 0x8000\n\tMSG_CTRUNC                     = 0x20\n\tMSG_DONTROUTE                  = 0x4\n\tMSG_DONTWAIT                   = 0x80\n\tMSG_EOF                        = 0x100\n\tMSG_EOR                        = 0x8\n\tMSG_NBIO                       = 0x4000\n\tMSG_NOSIGNAL                   = 0x20000\n\tMSG_NOTIFICATION               = 0x2000\n\tMSG_OOB                        = 0x1\n\tMSG_PEEK                       = 0x2\n\tMSG_TRUNC                      = 0x10\n\tMSG_WAITALL                    = 0x40\n\tMSG_WAITFORONE                 = 0x80000\n\tMS_ASYNC                       = 0x1\n\tMS_INVALIDATE                  = 0x2\n\tMS_SYNC                        = 0x0\n\tNAME_MAX                       = 0xff\n\tNET_RT_DUMP                    = 0x1\n\tNET_RT_FLAGS                   = 0x2\n\tNET_RT_IFLIST                  = 0x3\n\tNET_RT_IFLISTL                 = 0x5\n\tNET_RT_IFMALIST                = 0x4\n\tNFDBITS                        = 0x20\n\tNOFLSH                         = 0x80000000\n\tNOKERNINFO                     = 0x2000000\n\tNOTE_ABSTIME                   = 0x10\n\tNOTE_ATTRIB                    = 0x8\n\tNOTE_CHILD                     = 0x4\n\tNOTE_CLOSE                     = 0x100\n\tNOTE_CLOSE_WRITE               = 0x200\n\tNOTE_DELETE                    = 0x1\n\tNOTE_EXEC                      = 0x20000000\n\tNOTE_EXIT                      = 0x80000000\n\tNOTE_EXTEND                    = 0x4\n\tNOTE_FFAND                     = 0x40000000\n\tNOTE_FFCOPY                    = 0xc0000000\n\tNOTE_FFCTRLMASK                = 0xc0000000\n\tNOTE_FFLAGSMASK                = 0xffffff\n\tNOTE_FFNOP                     = 0x0\n\tNOTE_FFOR                      = 0x80000000\n\tNOTE_FILE_POLL                 = 0x2\n\tNOTE_FORK                      = 0x40000000\n\tNOTE_LINK                      = 0x10\n\tNOTE_LOWAT                     = 0x1\n\tNOTE_MSECONDS                  = 0x2\n\tNOTE_NSECONDS                  = 0x8\n\tNOTE_OPEN                      = 0x80\n\tNOTE_PCTRLMASK                 = 0xf0000000\n\tNOTE_PDATAMASK                 = 0xfffff\n\tNOTE_READ                      = 0x400\n\tNOTE_RENAME                    = 0x20\n\tNOTE_REVOKE                    = 0x40\n\tNOTE_SECONDS                   = 0x1\n\tNOTE_TRACK                     = 0x1\n\tNOTE_TRACKERR                  = 0x2\n\tNOTE_TRIGGER                   = 0x1000000\n\tNOTE_USECONDS                  = 0x4\n\tNOTE_WRITE                     = 0x2\n\tOCRNL                          = 0x10\n\tONLCR                          = 0x2\n\tONLRET                         = 0x40\n\tONOCR                          = 0x20\n\tONOEOT                         = 0x8\n\tOPOST                          = 0x1\n\tOXTABS                         = 0x4\n\tO_ACCMODE                      = 0x3\n\tO_APPEND                       = 0x8\n\tO_ASYNC                        = 0x40\n\tO_CLOEXEC                      = 0x100000\n\tO_CREAT                        = 0x200\n\tO_DIRECT                       = 0x10000\n\tO_DIRECTORY                    = 0x20000\n\tO_EXCL                         = 0x800\n\tO_EXEC                         = 0x40000\n\tO_EXLOCK                       = 0x20\n\tO_FSYNC                        = 0x80\n\tO_NDELAY                       = 0x4\n\tO_NOCTTY                       = 0x8000\n\tO_NOFOLLOW                     = 0x100\n\tO_NONBLOCK                     = 0x4\n\tO_RDONLY                       = 0x0\n\tO_RDWR                         = 0x2\n\tO_RESOLVE_BENEATH              = 0x800000\n\tO_SEARCH                       = 0x40000\n\tO_SHLOCK                       = 0x10\n\tO_SYNC                         = 0x80\n\tO_TRUNC                        = 0x400\n\tO_TTY_INIT                     = 0x80000\n\tO_VERIFY                       = 0x200000\n\tO_WRONLY                       = 0x1\n\tPARENB                         = 0x1000\n\tPARMRK                         = 0x8\n\tPARODD                         = 0x2000\n\tPENDIN                         = 0x20000000\n\tPIOD_READ_D                    = 0x1\n\tPIOD_READ_I                    = 0x3\n\tPIOD_WRITE_D                   = 0x2\n\tPIOD_WRITE_I                   = 0x4\n\tPRIO_PGRP                      = 0x1\n\tPRIO_PROCESS                   = 0x0\n\tPRIO_USER                      = 0x2\n\tPROT_EXEC                      = 0x4\n\tPROT_NONE                      = 0x0\n\tPROT_READ                      = 0x1\n\tPROT_WRITE                     = 0x2\n\tPTRACE_DEFAULT                 = 0x1\n\tPTRACE_EXEC                    = 0x1\n\tPTRACE_FORK                    = 0x8\n\tPTRACE_LWP                     = 0x10\n\tPTRACE_SCE                     = 0x2\n\tPTRACE_SCX                     = 0x4\n\tPTRACE_SYSCALL                 = 0x6\n\tPTRACE_VFORK                   = 0x20\n\tPT_ATTACH                      = 0xa\n\tPT_CLEARSTEP                   = 0x10\n\tPT_CONTINUE                    = 0x7\n\tPT_DETACH                      = 0xb\n\tPT_FIRSTMACH                   = 0x40\n\tPT_FOLLOW_FORK                 = 0x17\n\tPT_GETDBREGS                   = 0x25\n\tPT_GETFPREGS                   = 0x23\n\tPT_GETFSBASE                   = 0x47\n\tPT_GETGSBASE                   = 0x49\n\tPT_GETLWPLIST                  = 0xf\n\tPT_GETNUMLWPS                  = 0xe\n\tPT_GETREGS                     = 0x21\n\tPT_GETXMMREGS                  = 0x40\n\tPT_GETXSTATE                   = 0x45\n\tPT_GETXSTATE_INFO              = 0x44\n\tPT_GET_EVENT_MASK              = 0x19\n\tPT_GET_SC_ARGS                 = 0x1b\n\tPT_GET_SC_RET                  = 0x1c\n\tPT_IO                          = 0xc\n\tPT_KILL                        = 0x8\n\tPT_LWPINFO                     = 0xd\n\tPT_LWP_EVENTS                  = 0x18\n\tPT_READ_D                      = 0x2\n\tPT_READ_I                      = 0x1\n\tPT_RESUME                      = 0x13\n\tPT_SETDBREGS                   = 0x26\n\tPT_SETFPREGS                   = 0x24\n\tPT_SETFSBASE                   = 0x48\n\tPT_SETGSBASE                   = 0x4a\n\tPT_SETREGS                     = 0x22\n\tPT_SETSTEP                     = 0x11\n\tPT_SETXMMREGS                  = 0x41\n\tPT_SETXSTATE                   = 0x46\n\tPT_SET_EVENT_MASK              = 0x1a\n\tPT_STEP                        = 0x9\n\tPT_SUSPEND                     = 0x12\n\tPT_SYSCALL                     = 0x16\n\tPT_TO_SCE                      = 0x14\n\tPT_TO_SCX                      = 0x15\n\tPT_TRACE_ME                    = 0x0\n\tPT_VM_ENTRY                    = 0x29\n\tPT_VM_TIMESTAMP                = 0x28\n\tPT_WRITE_D                     = 0x5\n\tPT_WRITE_I                     = 0x4\n\tP_ZONEID                       = 0xc\n\tRLIMIT_AS                      = 0xa\n\tRLIMIT_CORE                    = 0x4\n\tRLIMIT_CPU                     = 0x0\n\tRLIMIT_DATA                    = 0x2\n\tRLIMIT_FSIZE                   = 0x1\n\tRLIMIT_MEMLOCK                 = 0x6\n\tRLIMIT_NOFILE                  = 0x8\n\tRLIMIT_NPROC                   = 0x7\n\tRLIMIT_RSS                     = 0x5\n\tRLIMIT_STACK                   = 0x3\n\tRLIM_INFINITY                  = 0x7fffffffffffffff\n\tRTAX_AUTHOR                    = 0x6\n\tRTAX_BRD                       = 0x7\n\tRTAX_DST                       = 0x0\n\tRTAX_GATEWAY                   = 0x1\n\tRTAX_GENMASK                   = 0x3\n\tRTAX_IFA                       = 0x5\n\tRTAX_IFP                       = 0x4\n\tRTAX_MAX                       = 0x8\n\tRTAX_NETMASK                   = 0x2\n\tRTA_AUTHOR                     = 0x40\n\tRTA_BRD                        = 0x80\n\tRTA_DST                        = 0x1\n\tRTA_GATEWAY                    = 0x2\n\tRTA_GENMASK                    = 0x8\n\tRTA_IFA                        = 0x20\n\tRTA_IFP                        = 0x10\n\tRTA_NETMASK                    = 0x4\n\tRTF_BLACKHOLE                  = 0x1000\n\tRTF_BROADCAST                  = 0x400000\n\tRTF_DONE                       = 0x40\n\tRTF_DYNAMIC                    = 0x10\n\tRTF_FIXEDMTU                   = 0x80000\n\tRTF_FMASK                      = 0x1004d808\n\tRTF_GATEWAY                    = 0x2\n\tRTF_GWFLAG_COMPAT              = 0x80000000\n\tRTF_HOST                       = 0x4\n\tRTF_LLDATA                     = 0x400\n\tRTF_LLINFO                     = 0x400\n\tRTF_LOCAL                      = 0x200000\n\tRTF_MODIFIED                   = 0x20\n\tRTF_MULTICAST                  = 0x800000\n\tRTF_PINNED                     = 0x100000\n\tRTF_PROTO1                     = 0x8000\n\tRTF_PROTO2                     = 0x4000\n\tRTF_PROTO3                     = 0x40000\n\tRTF_REJECT                     = 0x8\n\tRTF_RNH_LOCKED                 = 0x40000000\n\tRTF_STATIC                     = 0x800\n\tRTF_STICKY                     = 0x10000000\n\tRTF_UP                         = 0x1\n\tRTF_XRESOLVE                   = 0x200\n\tRTM_ADD                        = 0x1\n\tRTM_CHANGE                     = 0x3\n\tRTM_DELADDR                    = 0xd\n\tRTM_DELETE                     = 0x2\n\tRTM_DELMADDR                   = 0x10\n\tRTM_GET                        = 0x4\n\tRTM_IEEE80211                  = 0x12\n\tRTM_IFANNOUNCE                 = 0x11\n\tRTM_IFINFO                     = 0xe\n\tRTM_LOCK                       = 0x8\n\tRTM_LOSING                     = 0x5\n\tRTM_MISS                       = 0x7\n\tRTM_NEWADDR                    = 0xc\n\tRTM_NEWMADDR                   = 0xf\n\tRTM_REDIRECT                   = 0x6\n\tRTM_RESOLVE                    = 0xb\n\tRTM_RTTUNIT                    = 0xf4240\n\tRTM_VERSION                    = 0x5\n\tRTV_EXPIRE                     = 0x4\n\tRTV_HOPCOUNT                   = 0x2\n\tRTV_MTU                        = 0x1\n\tRTV_RPIPE                      = 0x8\n\tRTV_RTT                        = 0x40\n\tRTV_RTTVAR                     = 0x80\n\tRTV_SPIPE                      = 0x10\n\tRTV_SSTHRESH                   = 0x20\n\tRTV_WEIGHT                     = 0x100\n\tRT_ALL_FIBS                    = -0x1\n\tRT_BLACKHOLE                   = 0x40\n\tRT_DEFAULT_FIB                 = 0x0\n\tRT_HAS_GW                      = 0x80\n\tRT_HAS_HEADER                  = 0x10\n\tRT_HAS_HEADER_BIT              = 0x4\n\tRT_L2_ME                       = 0x4\n\tRT_L2_ME_BIT                   = 0x2\n\tRT_LLE_CACHE                   = 0x100\n\tRT_MAY_LOOP                    = 0x8\n\tRT_MAY_LOOP_BIT                = 0x3\n\tRT_REJECT                      = 0x20\n\tRUSAGE_CHILDREN                = -0x1\n\tRUSAGE_SELF                    = 0x0\n\tRUSAGE_THREAD                  = 0x1\n\tSCM_BINTIME                    = 0x4\n\tSCM_CREDS                      = 0x3\n\tSCM_MONOTONIC                  = 0x6\n\tSCM_REALTIME                   = 0x5\n\tSCM_RIGHTS                     = 0x1\n\tSCM_TIMESTAMP                  = 0x2\n\tSCM_TIME_INFO                  = 0x7\n\tSEEK_CUR                       = 0x1\n\tSEEK_DATA                      = 0x3\n\tSEEK_END                       = 0x2\n\tSEEK_HOLE                      = 0x4\n\tSEEK_SET                       = 0x0\n\tSHUT_RD                        = 0x0\n\tSHUT_RDWR                      = 0x2\n\tSHUT_WR                        = 0x1\n\tSIOCADDMULTI                   = 0x80206931\n\tSIOCAIFADDR                    = 0x8040691a\n\tSIOCAIFGROUP                   = 0x80246987\n\tSIOCATMARK                     = 0x40047307\n\tSIOCDELMULTI                   = 0x80206932\n\tSIOCDIFADDR                    = 0x80206919\n\tSIOCDIFGROUP                   = 0x80246989\n\tSIOCDIFPHYADDR                 = 0x80206949\n\tSIOCGDRVSPEC                   = 0xc01c697b\n\tSIOCGETSGCNT                   = 0xc0147210\n\tSIOCGETVIFCNT                  = 0xc014720f\n\tSIOCGHIWAT                     = 0x40047301\n\tSIOCGHWADDR                    = 0xc020693e\n\tSIOCGI2C                       = 0xc020693d\n\tSIOCGIFADDR                    = 0xc0206921\n\tSIOCGIFALIAS                   = 0xc044692d\n\tSIOCGIFBRDADDR                 = 0xc0206923\n\tSIOCGIFCAP                     = 0xc020691f\n\tSIOCGIFCONF                    = 0xc0086924\n\tSIOCGIFDESCR                   = 0xc020692a\n\tSIOCGIFDOWNREASON              = 0xc058699a\n\tSIOCGIFDSTADDR                 = 0xc0206922\n\tSIOCGIFFIB                     = 0xc020695c\n\tSIOCGIFFLAGS                   = 0xc0206911\n\tSIOCGIFGENERIC                 = 0xc020693a\n\tSIOCGIFGMEMB                   = 0xc024698a\n\tSIOCGIFGROUP                   = 0xc0246988\n\tSIOCGIFINDEX                   = 0xc0206920\n\tSIOCGIFMAC                     = 0xc0206926\n\tSIOCGIFMEDIA                   = 0xc0286938\n\tSIOCGIFMETRIC                  = 0xc0206917\n\tSIOCGIFMTU                     = 0xc0206933\n\tSIOCGIFNETMASK                 = 0xc0206925\n\tSIOCGIFPDSTADDR                = 0xc0206948\n\tSIOCGIFPHYS                    = 0xc0206935\n\tSIOCGIFPSRCADDR                = 0xc0206947\n\tSIOCGIFRSSHASH                 = 0xc0186997\n\tSIOCGIFRSSKEY                  = 0xc0946996\n\tSIOCGIFSTATUS                  = 0xc331693b\n\tSIOCGIFXMEDIA                  = 0xc028698b\n\tSIOCGLANPCP                    = 0xc0206998\n\tSIOCGLOWAT                     = 0x40047303\n\tSIOCGPGRP                      = 0x40047309\n\tSIOCGPRIVATE_0                 = 0xc0206950\n\tSIOCGPRIVATE_1                 = 0xc0206951\n\tSIOCGTUNFIB                    = 0xc020695e\n\tSIOCIFCREATE                   = 0xc020697a\n\tSIOCIFCREATE2                  = 0xc020697c\n\tSIOCIFDESTROY                  = 0x80206979\n\tSIOCIFGCLONERS                 = 0xc00c6978\n\tSIOCSDRVSPEC                   = 0x801c697b\n\tSIOCSHIWAT                     = 0x80047300\n\tSIOCSIFADDR                    = 0x8020690c\n\tSIOCSIFBRDADDR                 = 0x80206913\n\tSIOCSIFCAP                     = 0x8020691e\n\tSIOCSIFDESCR                   = 0x80206929\n\tSIOCSIFDSTADDR                 = 0x8020690e\n\tSIOCSIFFIB                     = 0x8020695d\n\tSIOCSIFFLAGS                   = 0x80206910\n\tSIOCSIFGENERIC                 = 0x80206939\n\tSIOCSIFLLADDR                  = 0x8020693c\n\tSIOCSIFMAC                     = 0x80206927\n\tSIOCSIFMEDIA                   = 0xc0206937\n\tSIOCSIFMETRIC                  = 0x80206918\n\tSIOCSIFMTU                     = 0x80206934\n\tSIOCSIFNAME                    = 0x80206928\n\tSIOCSIFNETMASK                 = 0x80206916\n\tSIOCSIFPHYADDR                 = 0x80406946\n\tSIOCSIFPHYS                    = 0x80206936\n\tSIOCSIFRVNET                   = 0xc020695b\n\tSIOCSIFVNET                    = 0xc020695a\n\tSIOCSLANPCP                    = 0x80206999\n\tSIOCSLOWAT                     = 0x80047302\n\tSIOCSPGRP                      = 0x80047308\n\tSIOCSTUNFIB                    = 0x8020695f\n\tSOCK_CLOEXEC                   = 0x10000000\n\tSOCK_DGRAM                     = 0x2\n\tSOCK_MAXADDRLEN                = 0xff\n\tSOCK_NONBLOCK                  = 0x20000000\n\tSOCK_RAW                       = 0x3\n\tSOCK_RDM                       = 0x4\n\tSOCK_SEQPACKET                 = 0x5\n\tSOCK_STREAM                    = 0x1\n\tSOL_LOCAL                      = 0x0\n\tSOL_SOCKET                     = 0xffff\n\tSOMAXCONN                      = 0x80\n\tSO_ACCEPTCONN                  = 0x2\n\tSO_ACCEPTFILTER                = 0x1000\n\tSO_BINTIME                     = 0x2000\n\tSO_BROADCAST                   = 0x20\n\tSO_DEBUG                       = 0x1\n\tSO_DOMAIN                      = 0x1019\n\tSO_DONTROUTE                   = 0x10\n\tSO_ERROR                       = 0x1007\n\tSO_KEEPALIVE                   = 0x8\n\tSO_LABEL                       = 0x1009\n\tSO_LINGER                      = 0x80\n\tSO_LISTENINCQLEN               = 0x1013\n\tSO_LISTENQLEN                  = 0x1012\n\tSO_LISTENQLIMIT                = 0x1011\n\tSO_MAX_PACING_RATE             = 0x1018\n\tSO_NOSIGPIPE                   = 0x800\n\tSO_NO_DDP                      = 0x8000\n\tSO_NO_OFFLOAD                  = 0x4000\n\tSO_OOBINLINE                   = 0x100\n\tSO_PEERLABEL                   = 0x1010\n\tSO_PROTOCOL                    = 0x1016\n\tSO_PROTOTYPE                   = 0x1016\n\tSO_RCVBUF                      = 0x1002\n\tSO_RCVLOWAT                    = 0x1004\n\tSO_RCVTIMEO                    = 0x1006\n\tSO_RERROR                      = 0x20000\n\tSO_REUSEADDR                   = 0x4\n\tSO_REUSEPORT                   = 0x200\n\tSO_REUSEPORT_LB                = 0x10000\n\tSO_SETFIB                      = 0x1014\n\tSO_SNDBUF                      = 0x1001\n\tSO_SNDLOWAT                    = 0x1003\n\tSO_SNDTIMEO                    = 0x1005\n\tSO_TIMESTAMP                   = 0x400\n\tSO_TS_BINTIME                  = 0x1\n\tSO_TS_CLOCK                    = 0x1017\n\tSO_TS_CLOCK_MAX                = 0x3\n\tSO_TS_DEFAULT                  = 0x0\n\tSO_TS_MONOTONIC                = 0x3\n\tSO_TS_REALTIME                 = 0x2\n\tSO_TS_REALTIME_MICRO           = 0x0\n\tSO_TYPE                        = 0x1008\n\tSO_USELOOPBACK                 = 0x40\n\tSO_USER_COOKIE                 = 0x1015\n\tSO_VENDOR                      = 0x80000000\n\tS_BLKSIZE                      = 0x200\n\tS_IEXEC                        = 0x40\n\tS_IFBLK                        = 0x6000\n\tS_IFCHR                        = 0x2000\n\tS_IFDIR                        = 0x4000\n\tS_IFIFO                        = 0x1000\n\tS_IFLNK                        = 0xa000\n\tS_IFMT                         = 0xf000\n\tS_IFREG                        = 0x8000\n\tS_IFSOCK                       = 0xc000\n\tS_IFWHT                        = 0xe000\n\tS_IREAD                        = 0x100\n\tS_IRGRP                        = 0x20\n\tS_IROTH                        = 0x4\n\tS_IRUSR                        = 0x100\n\tS_IRWXG                        = 0x38\n\tS_IRWXO                        = 0x7\n\tS_IRWXU                        = 0x1c0\n\tS_ISGID                        = 0x400\n\tS_ISTXT                        = 0x200\n\tS_ISUID                        = 0x800\n\tS_ISVTX                        = 0x200\n\tS_IWGRP                        = 0x10\n\tS_IWOTH                        = 0x2\n\tS_IWRITE                       = 0x80\n\tS_IWUSR                        = 0x80\n\tS_IXGRP                        = 0x8\n\tS_IXOTH                        = 0x1\n\tS_IXUSR                        = 0x40\n\tTAB0                           = 0x0\n\tTAB3                           = 0x4\n\tTABDLY                         = 0x4\n\tTCIFLUSH                       = 0x1\n\tTCIOFF                         = 0x3\n\tTCIOFLUSH                      = 0x3\n\tTCION                          = 0x4\n\tTCOFLUSH                       = 0x2\n\tTCOOFF                         = 0x1\n\tTCOON                          = 0x2\n\tTCPOPT_EOL                     = 0x0\n\tTCPOPT_FAST_OPEN               = 0x22\n\tTCPOPT_MAXSEG                  = 0x2\n\tTCPOPT_NOP                     = 0x1\n\tTCPOPT_PAD                     = 0x0\n\tTCPOPT_SACK                    = 0x5\n\tTCPOPT_SACK_PERMITTED          = 0x4\n\tTCPOPT_SIGNATURE               = 0x13\n\tTCPOPT_TIMESTAMP               = 0x8\n\tTCPOPT_WINDOW                  = 0x3\n\tTCP_BBR_ACK_COMP_ALG           = 0x448\n\tTCP_BBR_ALGORITHM              = 0x43b\n\tTCP_BBR_DRAIN_INC_EXTRA        = 0x43c\n\tTCP_BBR_DRAIN_PG               = 0x42e\n\tTCP_BBR_EXTRA_GAIN             = 0x449\n\tTCP_BBR_EXTRA_STATE            = 0x453\n\tTCP_BBR_FLOOR_MIN_TSO          = 0x454\n\tTCP_BBR_HDWR_PACE              = 0x451\n\tTCP_BBR_HOLD_TARGET            = 0x436\n\tTCP_BBR_IWINTSO                = 0x42b\n\tTCP_BBR_LOWGAIN_FD             = 0x436\n\tTCP_BBR_LOWGAIN_HALF           = 0x435\n\tTCP_BBR_LOWGAIN_THRESH         = 0x434\n\tTCP_BBR_MAX_RTO                = 0x439\n\tTCP_BBR_MIN_RTO                = 0x438\n\tTCP_BBR_MIN_TOPACEOUT          = 0x455\n\tTCP_BBR_ONE_RETRAN             = 0x431\n\tTCP_BBR_PACE_CROSS             = 0x442\n\tTCP_BBR_PACE_DEL_TAR           = 0x43f\n\tTCP_BBR_PACE_OH                = 0x435\n\tTCP_BBR_PACE_PER_SEC           = 0x43e\n\tTCP_BBR_PACE_SEG_MAX           = 0x440\n\tTCP_BBR_PACE_SEG_MIN           = 0x441\n\tTCP_BBR_POLICER_DETECT         = 0x457\n\tTCP_BBR_PROBE_RTT_GAIN         = 0x44d\n\tTCP_BBR_PROBE_RTT_INT          = 0x430\n\tTCP_BBR_PROBE_RTT_LEN          = 0x44e\n\tTCP_BBR_RACK_RTT_USE           = 0x44a\n\tTCP_BBR_RECFORCE               = 0x42c\n\tTCP_BBR_REC_OVER_HPTS          = 0x43a\n\tTCP_BBR_RETRAN_WTSO            = 0x44b\n\tTCP_BBR_RWND_IS_APP            = 0x42f\n\tTCP_BBR_SEND_IWND_IN_TSO       = 0x44f\n\tTCP_BBR_STARTUP_EXIT_EPOCH     = 0x43d\n\tTCP_BBR_STARTUP_LOSS_EXIT      = 0x432\n\tTCP_BBR_STARTUP_PG             = 0x42d\n\tTCP_BBR_TMR_PACE_OH            = 0x448\n\tTCP_BBR_TSLIMITS               = 0x434\n\tTCP_BBR_TSTMP_RAISES           = 0x456\n\tTCP_BBR_UNLIMITED              = 0x43b\n\tTCP_BBR_USEDEL_RATE            = 0x437\n\tTCP_BBR_USE_LOWGAIN            = 0x433\n\tTCP_BBR_USE_RACK_CHEAT         = 0x450\n\tTCP_BBR_UTTER_MAX_TSO          = 0x452\n\tTCP_CA_NAME_MAX                = 0x10\n\tTCP_CCALGOOPT                  = 0x41\n\tTCP_CONGESTION                 = 0x40\n\tTCP_DATA_AFTER_CLOSE           = 0x44c\n\tTCP_DELACK                     = 0x48\n\tTCP_FASTOPEN                   = 0x401\n\tTCP_FASTOPEN_MAX_COOKIE_LEN    = 0x10\n\tTCP_FASTOPEN_MIN_COOKIE_LEN    = 0x4\n\tTCP_FASTOPEN_PSK_LEN           = 0x10\n\tTCP_FUNCTION_BLK               = 0x2000\n\tTCP_FUNCTION_NAME_LEN_MAX      = 0x20\n\tTCP_INFO                       = 0x20\n\tTCP_KEEPCNT                    = 0x400\n\tTCP_KEEPIDLE                   = 0x100\n\tTCP_KEEPINIT                   = 0x80\n\tTCP_KEEPINTVL                  = 0x200\n\tTCP_LOG                        = 0x22\n\tTCP_LOGBUF                     = 0x23\n\tTCP_LOGDUMP                    = 0x25\n\tTCP_LOGDUMPID                  = 0x26\n\tTCP_LOGID                      = 0x24\n\tTCP_LOG_ID_LEN                 = 0x40\n\tTCP_MAXBURST                   = 0x4\n\tTCP_MAXHLEN                    = 0x3c\n\tTCP_MAXOLEN                    = 0x28\n\tTCP_MAXSEG                     = 0x2\n\tTCP_MAXWIN                     = 0xffff\n\tTCP_MAX_SACK                   = 0x4\n\tTCP_MAX_WINSHIFT               = 0xe\n\tTCP_MD5SIG                     = 0x10\n\tTCP_MINMSS                     = 0xd8\n\tTCP_MSS                        = 0x218\n\tTCP_NODELAY                    = 0x1\n\tTCP_NOOPT                      = 0x8\n\tTCP_NOPUSH                     = 0x4\n\tTCP_PCAP_IN                    = 0x1000\n\tTCP_PCAP_OUT                   = 0x800\n\tTCP_RACK_EARLY_RECOV           = 0x423\n\tTCP_RACK_EARLY_SEG             = 0x424\n\tTCP_RACK_GP_INCREASE           = 0x446\n\tTCP_RACK_IDLE_REDUCE_HIGH      = 0x444\n\tTCP_RACK_MIN_PACE              = 0x445\n\tTCP_RACK_MIN_PACE_SEG          = 0x446\n\tTCP_RACK_MIN_TO                = 0x422\n\tTCP_RACK_PACE_ALWAYS           = 0x41f\n\tTCP_RACK_PACE_MAX_SEG          = 0x41e\n\tTCP_RACK_PACE_REDUCE           = 0x41d\n\tTCP_RACK_PKT_DELAY             = 0x428\n\tTCP_RACK_PROP                  = 0x41b\n\tTCP_RACK_PROP_RATE             = 0x420\n\tTCP_RACK_PRR_SENDALOT          = 0x421\n\tTCP_RACK_REORD_FADE            = 0x426\n\tTCP_RACK_REORD_THRESH          = 0x425\n\tTCP_RACK_TLP_INC_VAR           = 0x429\n\tTCP_RACK_TLP_REDUCE            = 0x41c\n\tTCP_RACK_TLP_THRESH            = 0x427\n\tTCP_RACK_TLP_USE               = 0x447\n\tTCP_VENDOR                     = 0x80000000\n\tTCSAFLUSH                      = 0x2\n\tTIMER_ABSTIME                  = 0x1\n\tTIMER_RELTIME                  = 0x0\n\tTIOCCBRK                       = 0x2000747a\n\tTIOCCDTR                       = 0x20007478\n\tTIOCCONS                       = 0x80047462\n\tTIOCDRAIN                      = 0x2000745e\n\tTIOCEXCL                       = 0x2000740d\n\tTIOCEXT                        = 0x80047460\n\tTIOCFLUSH                      = 0x80047410\n\tTIOCGDRAINWAIT                 = 0x40047456\n\tTIOCGETA                       = 0x402c7413\n\tTIOCGETD                       = 0x4004741a\n\tTIOCGPGRP                      = 0x40047477\n\tTIOCGPTN                       = 0x4004740f\n\tTIOCGSID                       = 0x40047463\n\tTIOCGWINSZ                     = 0x40087468\n\tTIOCMBIC                       = 0x8004746b\n\tTIOCMBIS                       = 0x8004746c\n\tTIOCMGDTRWAIT                  = 0x4004745a\n\tTIOCMGET                       = 0x4004746a\n\tTIOCMSDTRWAIT                  = 0x8004745b\n\tTIOCMSET                       = 0x8004746d\n\tTIOCM_CAR                      = 0x40\n\tTIOCM_CD                       = 0x40\n\tTIOCM_CTS                      = 0x20\n\tTIOCM_DCD                      = 0x40\n\tTIOCM_DSR                      = 0x100\n\tTIOCM_DTR                      = 0x2\n\tTIOCM_LE                       = 0x1\n\tTIOCM_RI                       = 0x80\n\tTIOCM_RNG                      = 0x80\n\tTIOCM_RTS                      = 0x4\n\tTIOCM_SR                       = 0x10\n\tTIOCM_ST                       = 0x8\n\tTIOCNOTTY                      = 0x20007471\n\tTIOCNXCL                       = 0x2000740e\n\tTIOCOUTQ                       = 0x40047473\n\tTIOCPKT                        = 0x80047470\n\tTIOCPKT_DATA                   = 0x0\n\tTIOCPKT_DOSTOP                 = 0x20\n\tTIOCPKT_FLUSHREAD              = 0x1\n\tTIOCPKT_FLUSHWRITE             = 0x2\n\tTIOCPKT_IOCTL                  = 0x40\n\tTIOCPKT_NOSTOP                 = 0x10\n\tTIOCPKT_START                  = 0x8\n\tTIOCPKT_STOP                   = 0x4\n\tTIOCPTMASTER                   = 0x2000741c\n\tTIOCSBRK                       = 0x2000747b\n\tTIOCSCTTY                      = 0x20007461\n\tTIOCSDRAINWAIT                 = 0x80047457\n\tTIOCSDTR                       = 0x20007479\n\tTIOCSETA                       = 0x802c7414\n\tTIOCSETAF                      = 0x802c7416\n\tTIOCSETAW                      = 0x802c7415\n\tTIOCSETD                       = 0x8004741b\n\tTIOCSIG                        = 0x2004745f\n\tTIOCSPGRP                      = 0x80047476\n\tTIOCSTART                      = 0x2000746e\n\tTIOCSTAT                       = 0x20007465\n\tTIOCSTI                        = 0x80017472\n\tTIOCSTOP                       = 0x2000746f\n\tTIOCSWINSZ                     = 0x80087467\n\tTIOCTIMESTAMP                  = 0x40087459\n\tTIOCUCNTL                      = 0x80047466\n\tTOSTOP                         = 0x400000\n\tUTIME_NOW                      = -0x1\n\tUTIME_OMIT                     = -0x2\n\tVDISCARD                       = 0xf\n\tVDSUSP                         = 0xb\n\tVEOF                           = 0x0\n\tVEOL                           = 0x1\n\tVEOL2                          = 0x2\n\tVERASE                         = 0x3\n\tVERASE2                        = 0x7\n\tVINTR                          = 0x8\n\tVKILL                          = 0x5\n\tVLNEXT                         = 0xe\n\tVMIN                           = 0x10\n\tVM_BCACHE_SIZE_MAX             = 0x70e0000\n\tVM_SWZONE_SIZE_MAX             = 0x2280000\n\tVQUIT                          = 0x9\n\tVREPRINT                       = 0x6\n\tVSTART                         = 0xc\n\tVSTATUS                        = 0x12\n\tVSTOP                          = 0xd\n\tVSUSP                          = 0xa\n\tVTIME                          = 0x11\n\tVWERASE                        = 0x4\n\tWCONTINUED                     = 0x4\n\tWCOREFLAG                      = 0x80\n\tWEXITED                        = 0x10\n\tWLINUXCLONE                    = 0x80000000\n\tWNOHANG                        = 0x1\n\tWNOWAIT                        = 0x8\n\tWSTOPPED                       = 0x2\n\tWTRAPPED                       = 0x20\n\tWUNTRACED                      = 0x2\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x59)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x55)\n\tECAPMODE        = syscall.Errno(0x5e)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDOOFUS         = syscall.Errno(0x58)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x52)\n\tEILSEQ          = syscall.Errno(0x56)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTEGRITY      = syscall.Errno(0x61)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x61)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5a)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x57)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x5b)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x53)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCAPABLE     = syscall.Errno(0x5d)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5f)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x2d)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEOWNERDEAD      = syscall.Errno(0x60)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5c)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGLIBRT  = syscall.Signal(0x21)\n\tSIGLWP    = syscall.Signal(0x20)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EWOULDBLOCK\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIDRM\", \"identifier removed\"},\n\t{83, \"ENOMSG\", \"no message of desired type\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"ECANCELED\", \"operation canceled\"},\n\t{86, \"EILSEQ\", \"illegal byte sequence\"},\n\t{87, \"ENOATTR\", \"attribute not found\"},\n\t{88, \"EDOOFUS\", \"programming error\"},\n\t{89, \"EBADMSG\", \"bad message\"},\n\t{90, \"EMULTIHOP\", \"multihop attempted\"},\n\t{91, \"ENOLINK\", \"link has been severed\"},\n\t{92, \"EPROTO\", \"protocol error\"},\n\t{93, \"ENOTCAPABLE\", \"capabilities insufficient\"},\n\t{94, \"ECAPMODE\", \"not permitted in capability mode\"},\n\t{95, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{96, \"EOWNERDEAD\", \"previous owner died\"},\n\t{97, \"EINTEGRITY\", \"integrity check failed\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"unknown signal\"},\n\t{33, \"SIGLIBRT\", \"unknown signal\"},\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && freebsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                   = 0x10\n\tAF_ARP                         = 0x23\n\tAF_ATM                         = 0x1e\n\tAF_BLUETOOTH                   = 0x24\n\tAF_CCITT                       = 0xa\n\tAF_CHAOS                       = 0x5\n\tAF_CNT                         = 0x15\n\tAF_COIP                        = 0x14\n\tAF_DATAKIT                     = 0x9\n\tAF_DECnet                      = 0xc\n\tAF_DLI                         = 0xd\n\tAF_E164                        = 0x1a\n\tAF_ECMA                        = 0x8\n\tAF_HYLINK                      = 0xf\n\tAF_IEEE80211                   = 0x25\n\tAF_IMPLINK                     = 0x3\n\tAF_INET                        = 0x2\n\tAF_INET6                       = 0x1c\n\tAF_INET6_SDP                   = 0x2a\n\tAF_INET_SDP                    = 0x28\n\tAF_IPX                         = 0x17\n\tAF_ISDN                        = 0x1a\n\tAF_ISO                         = 0x7\n\tAF_LAT                         = 0xe\n\tAF_LINK                        = 0x12\n\tAF_LOCAL                       = 0x1\n\tAF_MAX                         = 0x2a\n\tAF_NATM                        = 0x1d\n\tAF_NETBIOS                     = 0x6\n\tAF_NETGRAPH                    = 0x20\n\tAF_OSI                         = 0x7\n\tAF_PUP                         = 0x4\n\tAF_ROUTE                       = 0x11\n\tAF_SCLUSTER                    = 0x22\n\tAF_SIP                         = 0x18\n\tAF_SLOW                        = 0x21\n\tAF_SNA                         = 0xb\n\tAF_UNIX                        = 0x1\n\tAF_UNSPEC                      = 0x0\n\tAF_VENDOR00                    = 0x27\n\tAF_VENDOR01                    = 0x29\n\tAF_VENDOR02                    = 0x2b\n\tAF_VENDOR03                    = 0x2d\n\tAF_VENDOR04                    = 0x2f\n\tAF_VENDOR05                    = 0x31\n\tAF_VENDOR06                    = 0x33\n\tAF_VENDOR07                    = 0x35\n\tAF_VENDOR08                    = 0x37\n\tAF_VENDOR09                    = 0x39\n\tAF_VENDOR10                    = 0x3b\n\tAF_VENDOR11                    = 0x3d\n\tAF_VENDOR12                    = 0x3f\n\tAF_VENDOR13                    = 0x41\n\tAF_VENDOR14                    = 0x43\n\tAF_VENDOR15                    = 0x45\n\tAF_VENDOR16                    = 0x47\n\tAF_VENDOR17                    = 0x49\n\tAF_VENDOR18                    = 0x4b\n\tAF_VENDOR19                    = 0x4d\n\tAF_VENDOR20                    = 0x4f\n\tAF_VENDOR21                    = 0x51\n\tAF_VENDOR22                    = 0x53\n\tAF_VENDOR23                    = 0x55\n\tAF_VENDOR24                    = 0x57\n\tAF_VENDOR25                    = 0x59\n\tAF_VENDOR26                    = 0x5b\n\tAF_VENDOR27                    = 0x5d\n\tAF_VENDOR28                    = 0x5f\n\tAF_VENDOR29                    = 0x61\n\tAF_VENDOR30                    = 0x63\n\tAF_VENDOR31                    = 0x65\n\tAF_VENDOR32                    = 0x67\n\tAF_VENDOR33                    = 0x69\n\tAF_VENDOR34                    = 0x6b\n\tAF_VENDOR35                    = 0x6d\n\tAF_VENDOR36                    = 0x6f\n\tAF_VENDOR37                    = 0x71\n\tAF_VENDOR38                    = 0x73\n\tAF_VENDOR39                    = 0x75\n\tAF_VENDOR40                    = 0x77\n\tAF_VENDOR41                    = 0x79\n\tAF_VENDOR42                    = 0x7b\n\tAF_VENDOR43                    = 0x7d\n\tAF_VENDOR44                    = 0x7f\n\tAF_VENDOR45                    = 0x81\n\tAF_VENDOR46                    = 0x83\n\tAF_VENDOR47                    = 0x85\n\tALTWERASE                      = 0x200\n\tB0                             = 0x0\n\tB110                           = 0x6e\n\tB115200                        = 0x1c200\n\tB1200                          = 0x4b0\n\tB134                           = 0x86\n\tB14400                         = 0x3840\n\tB150                           = 0x96\n\tB1800                          = 0x708\n\tB19200                         = 0x4b00\n\tB200                           = 0xc8\n\tB230400                        = 0x38400\n\tB2400                          = 0x960\n\tB28800                         = 0x7080\n\tB300                           = 0x12c\n\tB38400                         = 0x9600\n\tB460800                        = 0x70800\n\tB4800                          = 0x12c0\n\tB50                            = 0x32\n\tB57600                         = 0xe100\n\tB600                           = 0x258\n\tB7200                          = 0x1c20\n\tB75                            = 0x4b\n\tB76800                         = 0x12c00\n\tB921600                        = 0xe1000\n\tB9600                          = 0x2580\n\tBIOCFEEDBACK                   = 0x8004427c\n\tBIOCFLUSH                      = 0x20004268\n\tBIOCGBLEN                      = 0x40044266\n\tBIOCGDIRECTION                 = 0x40044276\n\tBIOCGDLT                       = 0x4004426a\n\tBIOCGDLTLIST                   = 0xc0104279\n\tBIOCGETBUFMODE                 = 0x4004427d\n\tBIOCGETIF                      = 0x4020426b\n\tBIOCGETZMAX                    = 0x4008427f\n\tBIOCGHDRCMPLT                  = 0x40044274\n\tBIOCGRSIG                      = 0x40044272\n\tBIOCGRTIMEOUT                  = 0x4010426e\n\tBIOCGSEESENT                   = 0x40044276\n\tBIOCGSTATS                     = 0x4008426f\n\tBIOCGTSTAMP                    = 0x40044283\n\tBIOCIMMEDIATE                  = 0x80044270\n\tBIOCLOCK                       = 0x2000427a\n\tBIOCPROMISC                    = 0x20004269\n\tBIOCROTZBUF                    = 0x40184280\n\tBIOCSBLEN                      = 0xc0044266\n\tBIOCSDIRECTION                 = 0x80044277\n\tBIOCSDLT                       = 0x80044278\n\tBIOCSETBUFMODE                 = 0x8004427e\n\tBIOCSETF                       = 0x80104267\n\tBIOCSETFNR                     = 0x80104282\n\tBIOCSETIF                      = 0x8020426c\n\tBIOCSETVLANPCP                 = 0x80044285\n\tBIOCSETWF                      = 0x8010427b\n\tBIOCSETZBUF                    = 0x80184281\n\tBIOCSHDRCMPLT                  = 0x80044275\n\tBIOCSRSIG                      = 0x80044273\n\tBIOCSRTIMEOUT                  = 0x8010426d\n\tBIOCSSEESENT                   = 0x80044277\n\tBIOCSTSTAMP                    = 0x80044284\n\tBIOCVERSION                    = 0x40044271\n\tBPF_A                          = 0x10\n\tBPF_ABS                        = 0x20\n\tBPF_ADD                        = 0x0\n\tBPF_ALIGNMENT                  = 0x8\n\tBPF_ALU                        = 0x4\n\tBPF_AND                        = 0x50\n\tBPF_B                          = 0x10\n\tBPF_BUFMODE_BUFFER             = 0x1\n\tBPF_BUFMODE_ZBUF               = 0x2\n\tBPF_DIV                        = 0x30\n\tBPF_H                          = 0x8\n\tBPF_IMM                        = 0x0\n\tBPF_IND                        = 0x40\n\tBPF_JA                         = 0x0\n\tBPF_JEQ                        = 0x10\n\tBPF_JGE                        = 0x30\n\tBPF_JGT                        = 0x20\n\tBPF_JMP                        = 0x5\n\tBPF_JSET                       = 0x40\n\tBPF_K                          = 0x0\n\tBPF_LD                         = 0x0\n\tBPF_LDX                        = 0x1\n\tBPF_LEN                        = 0x80\n\tBPF_LSH                        = 0x60\n\tBPF_MAJOR_VERSION              = 0x1\n\tBPF_MAXBUFSIZE                 = 0x80000\n\tBPF_MAXINSNS                   = 0x200\n\tBPF_MEM                        = 0x60\n\tBPF_MEMWORDS                   = 0x10\n\tBPF_MINBUFSIZE                 = 0x20\n\tBPF_MINOR_VERSION              = 0x1\n\tBPF_MISC                       = 0x7\n\tBPF_MOD                        = 0x90\n\tBPF_MSH                        = 0xa0\n\tBPF_MUL                        = 0x20\n\tBPF_NEG                        = 0x80\n\tBPF_OR                         = 0x40\n\tBPF_RELEASE                    = 0x30bb6\n\tBPF_RET                        = 0x6\n\tBPF_RSH                        = 0x70\n\tBPF_ST                         = 0x2\n\tBPF_STX                        = 0x3\n\tBPF_SUB                        = 0x10\n\tBPF_TAX                        = 0x0\n\tBPF_TXA                        = 0x80\n\tBPF_T_BINTIME                  = 0x2\n\tBPF_T_BINTIME_FAST             = 0x102\n\tBPF_T_BINTIME_MONOTONIC        = 0x202\n\tBPF_T_BINTIME_MONOTONIC_FAST   = 0x302\n\tBPF_T_FAST                     = 0x100\n\tBPF_T_FLAG_MASK                = 0x300\n\tBPF_T_FORMAT_MASK              = 0x3\n\tBPF_T_MICROTIME                = 0x0\n\tBPF_T_MICROTIME_FAST           = 0x100\n\tBPF_T_MICROTIME_MONOTONIC      = 0x200\n\tBPF_T_MICROTIME_MONOTONIC_FAST = 0x300\n\tBPF_T_MONOTONIC                = 0x200\n\tBPF_T_MONOTONIC_FAST           = 0x300\n\tBPF_T_NANOTIME                 = 0x1\n\tBPF_T_NANOTIME_FAST            = 0x101\n\tBPF_T_NANOTIME_MONOTONIC       = 0x201\n\tBPF_T_NANOTIME_MONOTONIC_FAST  = 0x301\n\tBPF_T_NONE                     = 0x3\n\tBPF_T_NORMAL                   = 0x0\n\tBPF_W                          = 0x0\n\tBPF_X                          = 0x8\n\tBPF_XOR                        = 0xa0\n\tBRKINT                         = 0x2\n\tCAP_ACCEPT                     = 0x200000020000000\n\tCAP_ACL_CHECK                  = 0x400000000010000\n\tCAP_ACL_DELETE                 = 0x400000000020000\n\tCAP_ACL_GET                    = 0x400000000040000\n\tCAP_ACL_SET                    = 0x400000000080000\n\tCAP_ALL0                       = 0x20007ffffffffff\n\tCAP_ALL1                       = 0x4000000001fffff\n\tCAP_BIND                       = 0x200000040000000\n\tCAP_BINDAT                     = 0x200008000000400\n\tCAP_CHFLAGSAT                  = 0x200000000001400\n\tCAP_CONNECT                    = 0x200000080000000\n\tCAP_CONNECTAT                  = 0x200010000000400\n\tCAP_CREATE                     = 0x200000000000040\n\tCAP_EVENT                      = 0x400000000000020\n\tCAP_EXTATTR_DELETE             = 0x400000000001000\n\tCAP_EXTATTR_GET                = 0x400000000002000\n\tCAP_EXTATTR_LIST               = 0x400000000004000\n\tCAP_EXTATTR_SET                = 0x400000000008000\n\tCAP_FCHDIR                     = 0x200000000000800\n\tCAP_FCHFLAGS                   = 0x200000000001000\n\tCAP_FCHMOD                     = 0x200000000002000\n\tCAP_FCHMODAT                   = 0x200000000002400\n\tCAP_FCHOWN                     = 0x200000000004000\n\tCAP_FCHOWNAT                   = 0x200000000004400\n\tCAP_FCNTL                      = 0x200000000008000\n\tCAP_FCNTL_ALL                  = 0x78\n\tCAP_FCNTL_GETFL                = 0x8\n\tCAP_FCNTL_GETOWN               = 0x20\n\tCAP_FCNTL_SETFL                = 0x10\n\tCAP_FCNTL_SETOWN               = 0x40\n\tCAP_FEXECVE                    = 0x200000000000080\n\tCAP_FLOCK                      = 0x200000000010000\n\tCAP_FPATHCONF                  = 0x200000000020000\n\tCAP_FSCK                       = 0x200000000040000\n\tCAP_FSTAT                      = 0x200000000080000\n\tCAP_FSTATAT                    = 0x200000000080400\n\tCAP_FSTATFS                    = 0x200000000100000\n\tCAP_FSYNC                      = 0x200000000000100\n\tCAP_FTRUNCATE                  = 0x200000000000200\n\tCAP_FUTIMES                    = 0x200000000200000\n\tCAP_FUTIMESAT                  = 0x200000000200400\n\tCAP_GETPEERNAME                = 0x200000100000000\n\tCAP_GETSOCKNAME                = 0x200000200000000\n\tCAP_GETSOCKOPT                 = 0x200000400000000\n\tCAP_IOCTL                      = 0x400000000000080\n\tCAP_IOCTLS_ALL                 = 0x7fffffffffffffff\n\tCAP_KQUEUE                     = 0x400000000100040\n\tCAP_KQUEUE_CHANGE              = 0x400000000100000\n\tCAP_KQUEUE_EVENT               = 0x400000000000040\n\tCAP_LINKAT_SOURCE              = 0x200020000000400\n\tCAP_LINKAT_TARGET              = 0x200000000400400\n\tCAP_LISTEN                     = 0x200000800000000\n\tCAP_LOOKUP                     = 0x200000000000400\n\tCAP_MAC_GET                    = 0x400000000000001\n\tCAP_MAC_SET                    = 0x400000000000002\n\tCAP_MKDIRAT                    = 0x200000000800400\n\tCAP_MKFIFOAT                   = 0x200000001000400\n\tCAP_MKNODAT                    = 0x200000002000400\n\tCAP_MMAP                       = 0x200000000000010\n\tCAP_MMAP_R                     = 0x20000000000001d\n\tCAP_MMAP_RW                    = 0x20000000000001f\n\tCAP_MMAP_RWX                   = 0x20000000000003f\n\tCAP_MMAP_RX                    = 0x20000000000003d\n\tCAP_MMAP_W                     = 0x20000000000001e\n\tCAP_MMAP_WX                    = 0x20000000000003e\n\tCAP_MMAP_X                     = 0x20000000000003c\n\tCAP_PDGETPID                   = 0x400000000000200\n\tCAP_PDKILL                     = 0x400000000000800\n\tCAP_PDWAIT                     = 0x400000000000400\n\tCAP_PEELOFF                    = 0x200001000000000\n\tCAP_POLL_EVENT                 = 0x400000000000020\n\tCAP_PREAD                      = 0x20000000000000d\n\tCAP_PWRITE                     = 0x20000000000000e\n\tCAP_READ                       = 0x200000000000001\n\tCAP_RECV                       = 0x200000000000001\n\tCAP_RENAMEAT_SOURCE            = 0x200000004000400\n\tCAP_RENAMEAT_TARGET            = 0x200040000000400\n\tCAP_RIGHTS_VERSION             = 0x0\n\tCAP_RIGHTS_VERSION_00          = 0x0\n\tCAP_SEEK                       = 0x20000000000000c\n\tCAP_SEEK_TELL                  = 0x200000000000004\n\tCAP_SEM_GETVALUE               = 0x400000000000004\n\tCAP_SEM_POST                   = 0x400000000000008\n\tCAP_SEM_WAIT                   = 0x400000000000010\n\tCAP_SEND                       = 0x200000000000002\n\tCAP_SETSOCKOPT                 = 0x200002000000000\n\tCAP_SHUTDOWN                   = 0x200004000000000\n\tCAP_SOCK_CLIENT                = 0x200007780000003\n\tCAP_SOCK_SERVER                = 0x200007f60000003\n\tCAP_SYMLINKAT                  = 0x200000008000400\n\tCAP_TTYHOOK                    = 0x400000000000100\n\tCAP_UNLINKAT                   = 0x200000010000400\n\tCAP_UNUSED0_44                 = 0x200080000000000\n\tCAP_UNUSED0_57                 = 0x300000000000000\n\tCAP_UNUSED1_22                 = 0x400000000200000\n\tCAP_UNUSED1_57                 = 0x500000000000000\n\tCAP_WRITE                      = 0x200000000000002\n\tCFLUSH                         = 0xf\n\tCLOCAL                         = 0x8000\n\tCLOCK_MONOTONIC                = 0x4\n\tCLOCK_MONOTONIC_FAST           = 0xc\n\tCLOCK_MONOTONIC_PRECISE        = 0xb\n\tCLOCK_PROCESS_CPUTIME_ID       = 0xf\n\tCLOCK_PROF                     = 0x2\n\tCLOCK_REALTIME                 = 0x0\n\tCLOCK_REALTIME_FAST            = 0xa\n\tCLOCK_REALTIME_PRECISE         = 0x9\n\tCLOCK_SECOND                   = 0xd\n\tCLOCK_THREAD_CPUTIME_ID        = 0xe\n\tCLOCK_UPTIME                   = 0x5\n\tCLOCK_UPTIME_FAST              = 0x8\n\tCLOCK_UPTIME_PRECISE           = 0x7\n\tCLOCK_VIRTUAL                  = 0x1\n\tCPUSTATES                      = 0x5\n\tCP_IDLE                        = 0x4\n\tCP_INTR                        = 0x3\n\tCP_NICE                        = 0x1\n\tCP_SYS                         = 0x2\n\tCP_USER                        = 0x0\n\tCREAD                          = 0x800\n\tCRTSCTS                        = 0x30000\n\tCS5                            = 0x0\n\tCS6                            = 0x100\n\tCS7                            = 0x200\n\tCS8                            = 0x300\n\tCSIZE                          = 0x300\n\tCSTART                         = 0x11\n\tCSTATUS                        = 0x14\n\tCSTOP                          = 0x13\n\tCSTOPB                         = 0x400\n\tCSUSP                          = 0x1a\n\tCTL_HW                         = 0x6\n\tCTL_KERN                       = 0x1\n\tCTL_MAXNAME                    = 0x18\n\tCTL_NET                        = 0x4\n\tDIOCGATTR                      = 0xc148648e\n\tDIOCGDELETE                    = 0x80106488\n\tDIOCGFLUSH                     = 0x20006487\n\tDIOCGFRONTSTUFF                = 0x40086486\n\tDIOCGFWHEADS                   = 0x40046483\n\tDIOCGFWSECTORS                 = 0x40046482\n\tDIOCGIDENT                     = 0x41006489\n\tDIOCGMEDIASIZE                 = 0x40086481\n\tDIOCGPHYSPATH                  = 0x4400648d\n\tDIOCGPROVIDERNAME              = 0x4400648a\n\tDIOCGSECTORSIZE                = 0x40046480\n\tDIOCGSTRIPEOFFSET              = 0x4008648c\n\tDIOCGSTRIPESIZE                = 0x4008648b\n\tDIOCSKERNELDUMP                = 0x80506490\n\tDIOCSKERNELDUMP_FREEBSD11      = 0x80046485\n\tDIOCZONECMD                    = 0xc080648f\n\tDLT_A429                       = 0xb8\n\tDLT_A653_ICM                   = 0xb9\n\tDLT_AIRONET_HEADER             = 0x78\n\tDLT_AOS                        = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394     = 0x8a\n\tDLT_ARCNET                     = 0x7\n\tDLT_ARCNET_LINUX               = 0x81\n\tDLT_ATM_CLIP                   = 0x13\n\tDLT_ATM_RFC1483                = 0xb\n\tDLT_AURORA                     = 0x7e\n\tDLT_AX25                       = 0x3\n\tDLT_AX25_KISS                  = 0xca\n\tDLT_BACNET_MS_TP               = 0xa5\n\tDLT_BLUETOOTH_BREDR_BB         = 0xff\n\tDLT_BLUETOOTH_HCI_H4           = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9\n\tDLT_BLUETOOTH_LE_LL            = 0xfb\n\tDLT_BLUETOOTH_LE_LL_WITH_PHDR  = 0x100\n\tDLT_BLUETOOTH_LINUX_MONITOR    = 0xfe\n\tDLT_CAN20B                     = 0xbe\n\tDLT_CAN_SOCKETCAN              = 0xe3\n\tDLT_CHAOS                      = 0x5\n\tDLT_CHDLC                      = 0x68\n\tDLT_CISCO_IOS                  = 0x76\n\tDLT_CLASS_NETBSD_RAWAF         = 0x2240000\n\tDLT_C_HDLC                     = 0x68\n\tDLT_C_HDLC_WITH_DIR            = 0xcd\n\tDLT_DBUS                       = 0xe7\n\tDLT_DECT                       = 0xdd\n\tDLT_DISPLAYPORT_AUX            = 0x113\n\tDLT_DOCSIS                     = 0x8f\n\tDLT_DOCSIS31_XRA31             = 0x111\n\tDLT_DVB_CI                     = 0xeb\n\tDLT_ECONET                     = 0x73\n\tDLT_EN10MB                     = 0x1\n\tDLT_EN3MB                      = 0x2\n\tDLT_ENC                        = 0x6d\n\tDLT_EPON                       = 0x103\n\tDLT_ERF                        = 0xc5\n\tDLT_ERF_ETH                    = 0xaf\n\tDLT_ERF_POS                    = 0xb0\n\tDLT_ETHERNET_MPACKET           = 0x112\n\tDLT_FC_2                       = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS     = 0xe1\n\tDLT_FDDI                       = 0xa\n\tDLT_FLEXRAY                    = 0xd2\n\tDLT_FRELAY                     = 0x6b\n\tDLT_FRELAY_WITH_DIR            = 0xce\n\tDLT_GCOM_SERIAL                = 0xad\n\tDLT_GCOM_T1E1                  = 0xac\n\tDLT_GPF_F                      = 0xab\n\tDLT_GPF_T                      = 0xaa\n\tDLT_GPRS_LLC                   = 0xa9\n\tDLT_GSMTAP_ABIS                = 0xda\n\tDLT_GSMTAP_UM                  = 0xd9\n\tDLT_IBM_SN                     = 0x92\n\tDLT_IBM_SP                     = 0x91\n\tDLT_IEEE802                    = 0x6\n\tDLT_IEEE802_11                 = 0x69\n\tDLT_IEEE802_11_RADIO           = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS       = 0xa3\n\tDLT_IEEE802_15_4               = 0xc3\n\tDLT_IEEE802_15_4_LINUX         = 0xbf\n\tDLT_IEEE802_15_4_NOFCS         = 0xe6\n\tDLT_IEEE802_15_4_NONASK_PHY    = 0xd7\n\tDLT_IEEE802_16_MAC_CPS         = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO   = 0xc1\n\tDLT_INFINIBAND                 = 0xf7\n\tDLT_IPFILTER                   = 0x74\n\tDLT_IPMB_KONTRON               = 0xc7\n\tDLT_IPMB_LINUX                 = 0xd1\n\tDLT_IPMI_HPM_2                 = 0x104\n\tDLT_IPNET                      = 0xe2\n\tDLT_IPOIB                      = 0xf2\n\tDLT_IPV4                       = 0xe4\n\tDLT_IPV6                       = 0xe5\n\tDLT_IP_OVER_FC                 = 0x7a\n\tDLT_ISO_14443                  = 0x108\n\tDLT_JUNIPER_ATM1               = 0x89\n\tDLT_JUNIPER_ATM2               = 0x87\n\tDLT_JUNIPER_ATM_CEMIC          = 0xee\n\tDLT_JUNIPER_CHDLC              = 0xb5\n\tDLT_JUNIPER_ES                 = 0x84\n\tDLT_JUNIPER_ETHER              = 0xb2\n\tDLT_JUNIPER_FIBRECHANNEL       = 0xea\n\tDLT_JUNIPER_FRELAY             = 0xb4\n\tDLT_JUNIPER_GGSN               = 0x85\n\tDLT_JUNIPER_ISM                = 0xc2\n\tDLT_JUNIPER_MFR                = 0x86\n\tDLT_JUNIPER_MLFR               = 0x83\n\tDLT_JUNIPER_MLPPP              = 0x82\n\tDLT_JUNIPER_MONITOR            = 0xa4\n\tDLT_JUNIPER_PIC_PEER           = 0xae\n\tDLT_JUNIPER_PPP                = 0xb3\n\tDLT_JUNIPER_PPPOE              = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM          = 0xa8\n\tDLT_JUNIPER_SERVICES           = 0x88\n\tDLT_JUNIPER_SRX_E2E            = 0xe9\n\tDLT_JUNIPER_ST                 = 0xc8\n\tDLT_JUNIPER_VP                 = 0xb7\n\tDLT_JUNIPER_VS                 = 0xe8\n\tDLT_LAPB_WITH_DIR              = 0xcf\n\tDLT_LAPD                       = 0xcb\n\tDLT_LIN                        = 0xd4\n\tDLT_LINUX_EVDEV                = 0xd8\n\tDLT_LINUX_IRDA                 = 0x90\n\tDLT_LINUX_LAPD                 = 0xb1\n\tDLT_LINUX_PPP_WITHDIRECTION    = 0xa6\n\tDLT_LINUX_SLL                  = 0x71\n\tDLT_LINUX_SLL2                 = 0x114\n\tDLT_LOOP                       = 0x6c\n\tDLT_LORATAP                    = 0x10e\n\tDLT_LTALK                      = 0x72\n\tDLT_MATCHING_MAX               = 0x114\n\tDLT_MATCHING_MIN               = 0x68\n\tDLT_MFR                        = 0xb6\n\tDLT_MOST                       = 0xd3\n\tDLT_MPEG_2_TS                  = 0xf3\n\tDLT_MPLS                       = 0xdb\n\tDLT_MTP2                       = 0x8c\n\tDLT_MTP2_WITH_PHDR             = 0x8b\n\tDLT_MTP3                       = 0x8d\n\tDLT_MUX27010                   = 0xec\n\tDLT_NETANALYZER                = 0xf0\n\tDLT_NETANALYZER_TRANSPARENT    = 0xf1\n\tDLT_NETLINK                    = 0xfd\n\tDLT_NFC_LLCP                   = 0xf5\n\tDLT_NFLOG                      = 0xef\n\tDLT_NG40                       = 0xf4\n\tDLT_NORDIC_BLE                 = 0x110\n\tDLT_NULL                       = 0x0\n\tDLT_OPENFLOW                   = 0x10b\n\tDLT_PCI_EXP                    = 0x7d\n\tDLT_PFLOG                      = 0x75\n\tDLT_PFSYNC                     = 0x79\n\tDLT_PKTAP                      = 0x102\n\tDLT_PPI                        = 0xc0\n\tDLT_PPP                        = 0x9\n\tDLT_PPP_BSDOS                  = 0xe\n\tDLT_PPP_ETHER                  = 0x33\n\tDLT_PPP_PPPD                   = 0xa6\n\tDLT_PPP_SERIAL                 = 0x32\n\tDLT_PPP_WITH_DIR               = 0xcc\n\tDLT_PPP_WITH_DIRECTION         = 0xa6\n\tDLT_PRISM_HEADER               = 0x77\n\tDLT_PROFIBUS_DL                = 0x101\n\tDLT_PRONET                     = 0x4\n\tDLT_RAIF1                      = 0xc6\n\tDLT_RAW                        = 0xc\n\tDLT_RDS                        = 0x109\n\tDLT_REDBACK_SMARTEDGE          = 0x20\n\tDLT_RIO                        = 0x7c\n\tDLT_RTAC_SERIAL                = 0xfa\n\tDLT_SCCP                       = 0x8e\n\tDLT_SCTP                       = 0xf8\n\tDLT_SDLC                       = 0x10c\n\tDLT_SITA                       = 0xc4\n\tDLT_SLIP                       = 0x8\n\tDLT_SLIP_BSDOS                 = 0xd\n\tDLT_STANAG_5066_D_PDU          = 0xed\n\tDLT_SUNATM                     = 0x7b\n\tDLT_SYMANTEC_FIREWALL          = 0x63\n\tDLT_TI_LLN_SNIFFER             = 0x10d\n\tDLT_TZSP                       = 0x80\n\tDLT_USB                        = 0xba\n\tDLT_USBPCAP                    = 0xf9\n\tDLT_USB_DARWIN                 = 0x10a\n\tDLT_USB_FREEBSD                = 0xba\n\tDLT_USB_LINUX                  = 0xbd\n\tDLT_USB_LINUX_MMAPPED          = 0xdc\n\tDLT_USER0                      = 0x93\n\tDLT_USER1                      = 0x94\n\tDLT_USER10                     = 0x9d\n\tDLT_USER11                     = 0x9e\n\tDLT_USER12                     = 0x9f\n\tDLT_USER13                     = 0xa0\n\tDLT_USER14                     = 0xa1\n\tDLT_USER15                     = 0xa2\n\tDLT_USER2                      = 0x95\n\tDLT_USER3                      = 0x96\n\tDLT_USER4                      = 0x97\n\tDLT_USER5                      = 0x98\n\tDLT_USER6                      = 0x99\n\tDLT_USER7                      = 0x9a\n\tDLT_USER8                      = 0x9b\n\tDLT_USER9                      = 0x9c\n\tDLT_VSOCK                      = 0x10f\n\tDLT_WATTSTOPPER_DLM            = 0x107\n\tDLT_WIHART                     = 0xdf\n\tDLT_WIRESHARK_UPPER_PDU        = 0xfc\n\tDLT_X2E_SERIAL                 = 0xd5\n\tDLT_X2E_XORAYA                 = 0xd6\n\tDLT_ZWAVE_R1_R2                = 0x105\n\tDLT_ZWAVE_R3                   = 0x106\n\tDT_BLK                         = 0x6\n\tDT_CHR                         = 0x2\n\tDT_DIR                         = 0x4\n\tDT_FIFO                        = 0x1\n\tDT_LNK                         = 0xa\n\tDT_REG                         = 0x8\n\tDT_SOCK                        = 0xc\n\tDT_UNKNOWN                     = 0x0\n\tDT_WHT                         = 0xe\n\tECHO                           = 0x8\n\tECHOCTL                        = 0x40\n\tECHOE                          = 0x2\n\tECHOK                          = 0x4\n\tECHOKE                         = 0x1\n\tECHONL                         = 0x10\n\tECHOPRT                        = 0x20\n\tEVFILT_AIO                     = -0x3\n\tEVFILT_EMPTY                   = -0xd\n\tEVFILT_FS                      = -0x9\n\tEVFILT_LIO                     = -0xa\n\tEVFILT_PROC                    = -0x5\n\tEVFILT_PROCDESC                = -0x8\n\tEVFILT_READ                    = -0x1\n\tEVFILT_SENDFILE                = -0xc\n\tEVFILT_SIGNAL                  = -0x6\n\tEVFILT_SYSCOUNT                = 0xd\n\tEVFILT_TIMER                   = -0x7\n\tEVFILT_USER                    = -0xb\n\tEVFILT_VNODE                   = -0x4\n\tEVFILT_WRITE                   = -0x2\n\tEVNAMEMAP_NAME_SIZE            = 0x40\n\tEV_ADD                         = 0x1\n\tEV_CLEAR                       = 0x20\n\tEV_DELETE                      = 0x2\n\tEV_DISABLE                     = 0x8\n\tEV_DISPATCH                    = 0x80\n\tEV_DROP                        = 0x1000\n\tEV_ENABLE                      = 0x4\n\tEV_EOF                         = 0x8000\n\tEV_ERROR                       = 0x4000\n\tEV_FLAG1                       = 0x2000\n\tEV_FLAG2                       = 0x4000\n\tEV_FORCEONESHOT                = 0x100\n\tEV_ONESHOT                     = 0x10\n\tEV_RECEIPT                     = 0x40\n\tEV_SYSFLAGS                    = 0xf000\n\tEXTA                           = 0x4b00\n\tEXTATTR_MAXNAMELEN             = 0xff\n\tEXTATTR_NAMESPACE_EMPTY        = 0x0\n\tEXTATTR_NAMESPACE_SYSTEM       = 0x2\n\tEXTATTR_NAMESPACE_USER         = 0x1\n\tEXTB                           = 0x9600\n\tEXTPROC                        = 0x800\n\tFD_CLOEXEC                     = 0x1\n\tFD_SETSIZE                     = 0x400\n\tFLUSHO                         = 0x800000\n\tF_CANCEL                       = 0x5\n\tF_DUP2FD                       = 0xa\n\tF_DUP2FD_CLOEXEC               = 0x12\n\tF_DUPFD                        = 0x0\n\tF_DUPFD_CLOEXEC                = 0x11\n\tF_GETFD                        = 0x1\n\tF_GETFL                        = 0x3\n\tF_GETLK                        = 0xb\n\tF_GETOWN                       = 0x5\n\tF_OGETLK                       = 0x7\n\tF_OK                           = 0x0\n\tF_OSETLK                       = 0x8\n\tF_OSETLKW                      = 0x9\n\tF_RDAHEAD                      = 0x10\n\tF_RDLCK                        = 0x1\n\tF_READAHEAD                    = 0xf\n\tF_SETFD                        = 0x2\n\tF_SETFL                        = 0x4\n\tF_SETLK                        = 0xc\n\tF_SETLKW                       = 0xd\n\tF_SETLK_REMOTE                 = 0xe\n\tF_SETOWN                       = 0x6\n\tF_UNLCK                        = 0x2\n\tF_UNLCKSYS                     = 0x4\n\tF_WRLCK                        = 0x3\n\tHUPCL                          = 0x4000\n\tHW_MACHINE                     = 0x1\n\tICANON                         = 0x100\n\tICMP6_FILTER                   = 0x12\n\tICRNL                          = 0x100\n\tIEXTEN                         = 0x400\n\tIFAN_ARRIVAL                   = 0x0\n\tIFAN_DEPARTURE                 = 0x1\n\tIFCAP_WOL_MAGIC                = 0x2000\n\tIFF_ALLMULTI                   = 0x200\n\tIFF_ALTPHYS                    = 0x4000\n\tIFF_BROADCAST                  = 0x2\n\tIFF_CANTCHANGE                 = 0x218f52\n\tIFF_CANTCONFIG                 = 0x10000\n\tIFF_DEBUG                      = 0x4\n\tIFF_DRV_OACTIVE                = 0x400\n\tIFF_DRV_RUNNING                = 0x40\n\tIFF_DYING                      = 0x200000\n\tIFF_LINK0                      = 0x1000\n\tIFF_LINK1                      = 0x2000\n\tIFF_LINK2                      = 0x4000\n\tIFF_LOOPBACK                   = 0x8\n\tIFF_MONITOR                    = 0x40000\n\tIFF_MULTICAST                  = 0x8000\n\tIFF_NOARP                      = 0x80\n\tIFF_NOGROUP                    = 0x800000\n\tIFF_OACTIVE                    = 0x400\n\tIFF_POINTOPOINT                = 0x10\n\tIFF_PPROMISC                   = 0x20000\n\tIFF_PROMISC                    = 0x100\n\tIFF_RENAMING                   = 0x400000\n\tIFF_RUNNING                    = 0x40\n\tIFF_SIMPLEX                    = 0x800\n\tIFF_STATICARP                  = 0x80000\n\tIFF_UP                         = 0x1\n\tIFNAMSIZ                       = 0x10\n\tIFT_BRIDGE                     = 0xd1\n\tIFT_CARP                       = 0xf8\n\tIFT_IEEE1394                   = 0x90\n\tIFT_INFINIBAND                 = 0xc7\n\tIFT_L2VLAN                     = 0x87\n\tIFT_L3IPVLAN                   = 0x88\n\tIFT_PPP                        = 0x17\n\tIFT_PROPVIRTUAL                = 0x35\n\tIGNBRK                         = 0x1\n\tIGNCR                          = 0x80\n\tIGNPAR                         = 0x4\n\tIMAXBEL                        = 0x2000\n\tINLCR                          = 0x40\n\tINPCK                          = 0x10\n\tIN_CLASSA_HOST                 = 0xffffff\n\tIN_CLASSA_MAX                  = 0x80\n\tIN_CLASSA_NET                  = 0xff000000\n\tIN_CLASSA_NSHIFT               = 0x18\n\tIN_CLASSB_HOST                 = 0xffff\n\tIN_CLASSB_MAX                  = 0x10000\n\tIN_CLASSB_NET                  = 0xffff0000\n\tIN_CLASSB_NSHIFT               = 0x10\n\tIN_CLASSC_HOST                 = 0xff\n\tIN_CLASSC_NET                  = 0xffffff00\n\tIN_CLASSC_NSHIFT               = 0x8\n\tIN_CLASSD_HOST                 = 0xfffffff\n\tIN_CLASSD_NET                  = 0xf0000000\n\tIN_CLASSD_NSHIFT               = 0x1c\n\tIN_LOOPBACKNET                 = 0x7f\n\tIN_RFC3021_MASK                = 0xfffffffe\n\tIPPROTO_3PC                    = 0x22\n\tIPPROTO_ADFS                   = 0x44\n\tIPPROTO_AH                     = 0x33\n\tIPPROTO_AHIP                   = 0x3d\n\tIPPROTO_APES                   = 0x63\n\tIPPROTO_ARGUS                  = 0xd\n\tIPPROTO_AX25                   = 0x5d\n\tIPPROTO_BHA                    = 0x31\n\tIPPROTO_BLT                    = 0x1e\n\tIPPROTO_BRSATMON               = 0x4c\n\tIPPROTO_CARP                   = 0x70\n\tIPPROTO_CFTP                   = 0x3e\n\tIPPROTO_CHAOS                  = 0x10\n\tIPPROTO_CMTP                   = 0x26\n\tIPPROTO_CPHB                   = 0x49\n\tIPPROTO_CPNX                   = 0x48\n\tIPPROTO_DCCP                   = 0x21\n\tIPPROTO_DDP                    = 0x25\n\tIPPROTO_DGP                    = 0x56\n\tIPPROTO_DIVERT                 = 0x102\n\tIPPROTO_DONE                   = 0x101\n\tIPPROTO_DSTOPTS                = 0x3c\n\tIPPROTO_EGP                    = 0x8\n\tIPPROTO_EMCON                  = 0xe\n\tIPPROTO_ENCAP                  = 0x62\n\tIPPROTO_EON                    = 0x50\n\tIPPROTO_ESP                    = 0x32\n\tIPPROTO_ETHERIP                = 0x61\n\tIPPROTO_FRAGMENT               = 0x2c\n\tIPPROTO_GGP                    = 0x3\n\tIPPROTO_GMTP                   = 0x64\n\tIPPROTO_GRE                    = 0x2f\n\tIPPROTO_HELLO                  = 0x3f\n\tIPPROTO_HIP                    = 0x8b\n\tIPPROTO_HMP                    = 0x14\n\tIPPROTO_HOPOPTS                = 0x0\n\tIPPROTO_ICMP                   = 0x1\n\tIPPROTO_ICMPV6                 = 0x3a\n\tIPPROTO_IDP                    = 0x16\n\tIPPROTO_IDPR                   = 0x23\n\tIPPROTO_IDRP                   = 0x2d\n\tIPPROTO_IGMP                   = 0x2\n\tIPPROTO_IGP                    = 0x55\n\tIPPROTO_IGRP                   = 0x58\n\tIPPROTO_IL                     = 0x28\n\tIPPROTO_INLSP                  = 0x34\n\tIPPROTO_INP                    = 0x20\n\tIPPROTO_IP                     = 0x0\n\tIPPROTO_IPCOMP                 = 0x6c\n\tIPPROTO_IPCV                   = 0x47\n\tIPPROTO_IPEIP                  = 0x5e\n\tIPPROTO_IPIP                   = 0x4\n\tIPPROTO_IPPC                   = 0x43\n\tIPPROTO_IPV4                   = 0x4\n\tIPPROTO_IPV6                   = 0x29\n\tIPPROTO_IRTP                   = 0x1c\n\tIPPROTO_KRYPTOLAN              = 0x41\n\tIPPROTO_LARP                   = 0x5b\n\tIPPROTO_LEAF1                  = 0x19\n\tIPPROTO_LEAF2                  = 0x1a\n\tIPPROTO_MAX                    = 0x100\n\tIPPROTO_MEAS                   = 0x13\n\tIPPROTO_MH                     = 0x87\n\tIPPROTO_MHRP                   = 0x30\n\tIPPROTO_MICP                   = 0x5f\n\tIPPROTO_MOBILE                 = 0x37\n\tIPPROTO_MPLS                   = 0x89\n\tIPPROTO_MTP                    = 0x5c\n\tIPPROTO_MUX                    = 0x12\n\tIPPROTO_ND                     = 0x4d\n\tIPPROTO_NHRP                   = 0x36\n\tIPPROTO_NONE                   = 0x3b\n\tIPPROTO_NSP                    = 0x1f\n\tIPPROTO_NVPII                  = 0xb\n\tIPPROTO_OLD_DIVERT             = 0xfe\n\tIPPROTO_OSPFIGP                = 0x59\n\tIPPROTO_PFSYNC                 = 0xf0\n\tIPPROTO_PGM                    = 0x71\n\tIPPROTO_PIGP                   = 0x9\n\tIPPROTO_PIM                    = 0x67\n\tIPPROTO_PRM                    = 0x15\n\tIPPROTO_PUP                    = 0xc\n\tIPPROTO_PVP                    = 0x4b\n\tIPPROTO_RAW                    = 0xff\n\tIPPROTO_RCCMON                 = 0xa\n\tIPPROTO_RDP                    = 0x1b\n\tIPPROTO_RESERVED_253           = 0xfd\n\tIPPROTO_RESERVED_254           = 0xfe\n\tIPPROTO_ROUTING                = 0x2b\n\tIPPROTO_RSVP                   = 0x2e\n\tIPPROTO_RVD                    = 0x42\n\tIPPROTO_SATEXPAK               = 0x40\n\tIPPROTO_SATMON                 = 0x45\n\tIPPROTO_SCCSP                  = 0x60\n\tIPPROTO_SCTP                   = 0x84\n\tIPPROTO_SDRP                   = 0x2a\n\tIPPROTO_SEND                   = 0x103\n\tIPPROTO_SHIM6                  = 0x8c\n\tIPPROTO_SKIP                   = 0x39\n\tIPPROTO_SPACER                 = 0x7fff\n\tIPPROTO_SRPC                   = 0x5a\n\tIPPROTO_ST                     = 0x7\n\tIPPROTO_SVMTP                  = 0x52\n\tIPPROTO_SWIPE                  = 0x35\n\tIPPROTO_TCF                    = 0x57\n\tIPPROTO_TCP                    = 0x6\n\tIPPROTO_TLSP                   = 0x38\n\tIPPROTO_TP                     = 0x1d\n\tIPPROTO_TPXX                   = 0x27\n\tIPPROTO_TRUNK1                 = 0x17\n\tIPPROTO_TRUNK2                 = 0x18\n\tIPPROTO_TTP                    = 0x54\n\tIPPROTO_UDP                    = 0x11\n\tIPPROTO_UDPLITE                = 0x88\n\tIPPROTO_VINES                  = 0x53\n\tIPPROTO_VISA                   = 0x46\n\tIPPROTO_VMTP                   = 0x51\n\tIPPROTO_WBEXPAK                = 0x4f\n\tIPPROTO_WBMON                  = 0x4e\n\tIPPROTO_WSN                    = 0x4a\n\tIPPROTO_XNET                   = 0xf\n\tIPPROTO_XTP                    = 0x24\n\tIPV6_AUTOFLOWLABEL             = 0x3b\n\tIPV6_BINDANY                   = 0x40\n\tIPV6_BINDMULTI                 = 0x41\n\tIPV6_BINDV6ONLY                = 0x1b\n\tIPV6_CHECKSUM                  = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS    = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP    = 0x1\n\tIPV6_DEFHLIM                   = 0x40\n\tIPV6_DONTFRAG                  = 0x3e\n\tIPV6_DSTOPTS                   = 0x32\n\tIPV6_FLOWID                    = 0x43\n\tIPV6_FLOWINFO_MASK             = 0xffffff0f\n\tIPV6_FLOWLABEL_LEN             = 0x14\n\tIPV6_FLOWLABEL_MASK            = 0xffff0f00\n\tIPV6_FLOWTYPE                  = 0x44\n\tIPV6_FRAGTTL                   = 0x78\n\tIPV6_FW_ADD                    = 0x1e\n\tIPV6_FW_DEL                    = 0x1f\n\tIPV6_FW_FLUSH                  = 0x20\n\tIPV6_FW_GET                    = 0x22\n\tIPV6_FW_ZERO                   = 0x21\n\tIPV6_HLIMDEC                   = 0x1\n\tIPV6_HOPLIMIT                  = 0x2f\n\tIPV6_HOPOPTS                   = 0x31\n\tIPV6_IPSEC_POLICY              = 0x1c\n\tIPV6_JOIN_GROUP                = 0xc\n\tIPV6_LEAVE_GROUP               = 0xd\n\tIPV6_MAXHLIM                   = 0xff\n\tIPV6_MAXOPTHDR                 = 0x800\n\tIPV6_MAXPACKET                 = 0xffff\n\tIPV6_MAX_GROUP_SRC_FILTER      = 0x200\n\tIPV6_MAX_MEMBERSHIPS           = 0xfff\n\tIPV6_MAX_SOCK_SRC_FILTER       = 0x80\n\tIPV6_MMTU                      = 0x500\n\tIPV6_MSFILTER                  = 0x4a\n\tIPV6_MULTICAST_HOPS            = 0xa\n\tIPV6_MULTICAST_IF              = 0x9\n\tIPV6_MULTICAST_LOOP            = 0xb\n\tIPV6_NEXTHOP                   = 0x30\n\tIPV6_ORIGDSTADDR               = 0x48\n\tIPV6_PATHMTU                   = 0x2c\n\tIPV6_PKTINFO                   = 0x2e\n\tIPV6_PORTRANGE                 = 0xe\n\tIPV6_PORTRANGE_DEFAULT         = 0x0\n\tIPV6_PORTRANGE_HIGH            = 0x1\n\tIPV6_PORTRANGE_LOW             = 0x2\n\tIPV6_PREFER_TEMPADDR           = 0x3f\n\tIPV6_RECVDSTOPTS               = 0x28\n\tIPV6_RECVFLOWID                = 0x46\n\tIPV6_RECVHOPLIMIT              = 0x25\n\tIPV6_RECVHOPOPTS               = 0x27\n\tIPV6_RECVORIGDSTADDR           = 0x48\n\tIPV6_RECVPATHMTU               = 0x2b\n\tIPV6_RECVPKTINFO               = 0x24\n\tIPV6_RECVRSSBUCKETID           = 0x47\n\tIPV6_RECVRTHDR                 = 0x26\n\tIPV6_RECVTCLASS                = 0x39\n\tIPV6_RSSBUCKETID               = 0x45\n\tIPV6_RSS_LISTEN_BUCKET         = 0x42\n\tIPV6_RTHDR                     = 0x33\n\tIPV6_RTHDRDSTOPTS              = 0x23\n\tIPV6_RTHDR_LOOSE               = 0x0\n\tIPV6_RTHDR_STRICT              = 0x1\n\tIPV6_RTHDR_TYPE_0              = 0x0\n\tIPV6_SOCKOPT_RESERVED1         = 0x3\n\tIPV6_TCLASS                    = 0x3d\n\tIPV6_UNICAST_HOPS              = 0x4\n\tIPV6_USE_MIN_MTU               = 0x2a\n\tIPV6_V6ONLY                    = 0x1b\n\tIPV6_VERSION                   = 0x60\n\tIPV6_VERSION_MASK              = 0xf0\n\tIPV6_VLAN_PCP                  = 0x4b\n\tIP_ADD_MEMBERSHIP              = 0xc\n\tIP_ADD_SOURCE_MEMBERSHIP       = 0x46\n\tIP_BINDANY                     = 0x18\n\tIP_BINDMULTI                   = 0x19\n\tIP_BLOCK_SOURCE                = 0x48\n\tIP_DEFAULT_MULTICAST_LOOP      = 0x1\n\tIP_DEFAULT_MULTICAST_TTL       = 0x1\n\tIP_DF                          = 0x4000\n\tIP_DONTFRAG                    = 0x43\n\tIP_DROP_MEMBERSHIP             = 0xd\n\tIP_DROP_SOURCE_MEMBERSHIP      = 0x47\n\tIP_DUMMYNET3                   = 0x31\n\tIP_DUMMYNET_CONFIGURE          = 0x3c\n\tIP_DUMMYNET_DEL                = 0x3d\n\tIP_DUMMYNET_FLUSH              = 0x3e\n\tIP_DUMMYNET_GET                = 0x40\n\tIP_FLOWID                      = 0x5a\n\tIP_FLOWTYPE                    = 0x5b\n\tIP_FW3                         = 0x30\n\tIP_FW_ADD                      = 0x32\n\tIP_FW_DEL                      = 0x33\n\tIP_FW_FLUSH                    = 0x34\n\tIP_FW_GET                      = 0x36\n\tIP_FW_NAT_CFG                  = 0x38\n\tIP_FW_NAT_DEL                  = 0x39\n\tIP_FW_NAT_GET_CONFIG           = 0x3a\n\tIP_FW_NAT_GET_LOG              = 0x3b\n\tIP_FW_RESETLOG                 = 0x37\n\tIP_FW_TABLE_ADD                = 0x28\n\tIP_FW_TABLE_DEL                = 0x29\n\tIP_FW_TABLE_FLUSH              = 0x2a\n\tIP_FW_TABLE_GETSIZE            = 0x2b\n\tIP_FW_TABLE_LIST               = 0x2c\n\tIP_FW_ZERO                     = 0x35\n\tIP_HDRINCL                     = 0x2\n\tIP_IPSEC_POLICY                = 0x15\n\tIP_MAXPACKET                   = 0xffff\n\tIP_MAX_GROUP_SRC_FILTER        = 0x200\n\tIP_MAX_MEMBERSHIPS             = 0xfff\n\tIP_MAX_SOCK_MUTE_FILTER        = 0x80\n\tIP_MAX_SOCK_SRC_FILTER         = 0x80\n\tIP_MF                          = 0x2000\n\tIP_MINTTL                      = 0x42\n\tIP_MSFILTER                    = 0x4a\n\tIP_MSS                         = 0x240\n\tIP_MULTICAST_IF                = 0x9\n\tIP_MULTICAST_LOOP              = 0xb\n\tIP_MULTICAST_TTL               = 0xa\n\tIP_MULTICAST_VIF               = 0xe\n\tIP_OFFMASK                     = 0x1fff\n\tIP_ONESBCAST                   = 0x17\n\tIP_OPTIONS                     = 0x1\n\tIP_ORIGDSTADDR                 = 0x1b\n\tIP_PORTRANGE                   = 0x13\n\tIP_PORTRANGE_DEFAULT           = 0x0\n\tIP_PORTRANGE_HIGH              = 0x1\n\tIP_PORTRANGE_LOW               = 0x2\n\tIP_RECVDSTADDR                 = 0x7\n\tIP_RECVFLOWID                  = 0x5d\n\tIP_RECVIF                      = 0x14\n\tIP_RECVOPTS                    = 0x5\n\tIP_RECVORIGDSTADDR             = 0x1b\n\tIP_RECVRETOPTS                 = 0x6\n\tIP_RECVRSSBUCKETID             = 0x5e\n\tIP_RECVTOS                     = 0x44\n\tIP_RECVTTL                     = 0x41\n\tIP_RETOPTS                     = 0x8\n\tIP_RF                          = 0x8000\n\tIP_RSSBUCKETID                 = 0x5c\n\tIP_RSS_LISTEN_BUCKET           = 0x1a\n\tIP_RSVP_OFF                    = 0x10\n\tIP_RSVP_ON                     = 0xf\n\tIP_RSVP_VIF_OFF                = 0x12\n\tIP_RSVP_VIF_ON                 = 0x11\n\tIP_SENDSRCADDR                 = 0x7\n\tIP_TOS                         = 0x3\n\tIP_TTL                         = 0x4\n\tIP_UNBLOCK_SOURCE              = 0x49\n\tIP_VLAN_PCP                    = 0x4b\n\tISIG                           = 0x80\n\tISTRIP                         = 0x20\n\tITIMER_PROF                    = 0x2\n\tITIMER_REAL                    = 0x0\n\tITIMER_VIRTUAL                 = 0x1\n\tIXANY                          = 0x800\n\tIXOFF                          = 0x400\n\tIXON                           = 0x200\n\tKERN_HOSTNAME                  = 0xa\n\tKERN_OSRELEASE                 = 0x2\n\tKERN_OSTYPE                    = 0x1\n\tKERN_VERSION                   = 0x4\n\tLOCAL_CONNWAIT                 = 0x4\n\tLOCAL_CREDS                    = 0x2\n\tLOCAL_PEERCRED                 = 0x1\n\tLOCAL_VENDOR                   = 0x80000000\n\tLOCK_EX                        = 0x2\n\tLOCK_NB                        = 0x4\n\tLOCK_SH                        = 0x1\n\tLOCK_UN                        = 0x8\n\tMADV_AUTOSYNC                  = 0x7\n\tMADV_CORE                      = 0x9\n\tMADV_DONTNEED                  = 0x4\n\tMADV_FREE                      = 0x5\n\tMADV_NOCORE                    = 0x8\n\tMADV_NORMAL                    = 0x0\n\tMADV_NOSYNC                    = 0x6\n\tMADV_PROTECT                   = 0xa\n\tMADV_RANDOM                    = 0x1\n\tMADV_SEQUENTIAL                = 0x2\n\tMADV_WILLNEED                  = 0x3\n\tMAP_32BIT                      = 0x80000\n\tMAP_ALIGNED_SUPER              = 0x1000000\n\tMAP_ALIGNMENT_MASK             = -0x1000000\n\tMAP_ALIGNMENT_SHIFT            = 0x18\n\tMAP_ANON                       = 0x1000\n\tMAP_ANONYMOUS                  = 0x1000\n\tMAP_COPY                       = 0x2\n\tMAP_EXCL                       = 0x4000\n\tMAP_FILE                       = 0x0\n\tMAP_FIXED                      = 0x10\n\tMAP_GUARD                      = 0x2000\n\tMAP_HASSEMAPHORE               = 0x200\n\tMAP_NOCORE                     = 0x20000\n\tMAP_NOSYNC                     = 0x800\n\tMAP_PREFAULT_READ              = 0x40000\n\tMAP_PRIVATE                    = 0x2\n\tMAP_RESERVED0020               = 0x20\n\tMAP_RESERVED0040               = 0x40\n\tMAP_RESERVED0080               = 0x80\n\tMAP_RESERVED0100               = 0x100\n\tMAP_SHARED                     = 0x1\n\tMAP_STACK                      = 0x400\n\tMCAST_BLOCK_SOURCE             = 0x54\n\tMCAST_EXCLUDE                  = 0x2\n\tMCAST_INCLUDE                  = 0x1\n\tMCAST_JOIN_GROUP               = 0x50\n\tMCAST_JOIN_SOURCE_GROUP        = 0x52\n\tMCAST_LEAVE_GROUP              = 0x51\n\tMCAST_LEAVE_SOURCE_GROUP       = 0x53\n\tMCAST_UNBLOCK_SOURCE           = 0x55\n\tMCAST_UNDEFINED                = 0x0\n\tMCL_CURRENT                    = 0x1\n\tMCL_FUTURE                     = 0x2\n\tMNT_ACLS                       = 0x8000000\n\tMNT_ASYNC                      = 0x40\n\tMNT_AUTOMOUNTED                = 0x200000000\n\tMNT_BYFSID                     = 0x8000000\n\tMNT_CMDFLAGS                   = 0xd0f0000\n\tMNT_DEFEXPORTED                = 0x200\n\tMNT_DELEXPORT                  = 0x20000\n\tMNT_EXKERB                     = 0x800\n\tMNT_EXPORTANON                 = 0x400\n\tMNT_EXPORTED                   = 0x100\n\tMNT_EXPUBLIC                   = 0x20000000\n\tMNT_EXRDONLY                   = 0x80\n\tMNT_FORCE                      = 0x80000\n\tMNT_GJOURNAL                   = 0x2000000\n\tMNT_IGNORE                     = 0x800000\n\tMNT_LAZY                       = 0x3\n\tMNT_LOCAL                      = 0x1000\n\tMNT_MULTILABEL                 = 0x4000000\n\tMNT_NFS4ACLS                   = 0x10\n\tMNT_NOATIME                    = 0x10000000\n\tMNT_NOCLUSTERR                 = 0x40000000\n\tMNT_NOCLUSTERW                 = 0x80000000\n\tMNT_NOEXEC                     = 0x4\n\tMNT_NONBUSY                    = 0x4000000\n\tMNT_NOSUID                     = 0x8\n\tMNT_NOSYMFOLLOW                = 0x400000\n\tMNT_NOWAIT                     = 0x2\n\tMNT_QUOTA                      = 0x2000\n\tMNT_RDONLY                     = 0x1\n\tMNT_RELOAD                     = 0x40000\n\tMNT_ROOTFS                     = 0x4000\n\tMNT_SNAPSHOT                   = 0x1000000\n\tMNT_SOFTDEP                    = 0x200000\n\tMNT_SUIDDIR                    = 0x100000\n\tMNT_SUJ                        = 0x100000000\n\tMNT_SUSPEND                    = 0x4\n\tMNT_SYNCHRONOUS                = 0x2\n\tMNT_UNION                      = 0x20\n\tMNT_UNTRUSTED                  = 0x800000000\n\tMNT_UPDATE                     = 0x10000\n\tMNT_UPDATEMASK                 = 0xad8d0807e\n\tMNT_USER                       = 0x8000\n\tMNT_VERIFIED                   = 0x400000000\n\tMNT_VISFLAGMASK                = 0xffef0ffff\n\tMNT_WAIT                       = 0x1\n\tMSG_CMSG_CLOEXEC               = 0x40000\n\tMSG_COMPAT                     = 0x8000\n\tMSG_CTRUNC                     = 0x20\n\tMSG_DONTROUTE                  = 0x4\n\tMSG_DONTWAIT                   = 0x80\n\tMSG_EOF                        = 0x100\n\tMSG_EOR                        = 0x8\n\tMSG_NBIO                       = 0x4000\n\tMSG_NOSIGNAL                   = 0x20000\n\tMSG_NOTIFICATION               = 0x2000\n\tMSG_OOB                        = 0x1\n\tMSG_PEEK                       = 0x2\n\tMSG_TRUNC                      = 0x10\n\tMSG_WAITALL                    = 0x40\n\tMSG_WAITFORONE                 = 0x80000\n\tMS_ASYNC                       = 0x1\n\tMS_INVALIDATE                  = 0x2\n\tMS_SYNC                        = 0x0\n\tNAME_MAX                       = 0xff\n\tNET_RT_DUMP                    = 0x1\n\tNET_RT_FLAGS                   = 0x2\n\tNET_RT_IFLIST                  = 0x3\n\tNET_RT_IFLISTL                 = 0x5\n\tNET_RT_IFMALIST                = 0x4\n\tNFDBITS                        = 0x40\n\tNOFLSH                         = 0x80000000\n\tNOKERNINFO                     = 0x2000000\n\tNOTE_ABSTIME                   = 0x10\n\tNOTE_ATTRIB                    = 0x8\n\tNOTE_CHILD                     = 0x4\n\tNOTE_CLOSE                     = 0x100\n\tNOTE_CLOSE_WRITE               = 0x200\n\tNOTE_DELETE                    = 0x1\n\tNOTE_EXEC                      = 0x20000000\n\tNOTE_EXIT                      = 0x80000000\n\tNOTE_EXTEND                    = 0x4\n\tNOTE_FFAND                     = 0x40000000\n\tNOTE_FFCOPY                    = 0xc0000000\n\tNOTE_FFCTRLMASK                = 0xc0000000\n\tNOTE_FFLAGSMASK                = 0xffffff\n\tNOTE_FFNOP                     = 0x0\n\tNOTE_FFOR                      = 0x80000000\n\tNOTE_FILE_POLL                 = 0x2\n\tNOTE_FORK                      = 0x40000000\n\tNOTE_LINK                      = 0x10\n\tNOTE_LOWAT                     = 0x1\n\tNOTE_MSECONDS                  = 0x2\n\tNOTE_NSECONDS                  = 0x8\n\tNOTE_OPEN                      = 0x80\n\tNOTE_PCTRLMASK                 = 0xf0000000\n\tNOTE_PDATAMASK                 = 0xfffff\n\tNOTE_READ                      = 0x400\n\tNOTE_RENAME                    = 0x20\n\tNOTE_REVOKE                    = 0x40\n\tNOTE_SECONDS                   = 0x1\n\tNOTE_TRACK                     = 0x1\n\tNOTE_TRACKERR                  = 0x2\n\tNOTE_TRIGGER                   = 0x1000000\n\tNOTE_USECONDS                  = 0x4\n\tNOTE_WRITE                     = 0x2\n\tOCRNL                          = 0x10\n\tONLCR                          = 0x2\n\tONLRET                         = 0x40\n\tONOCR                          = 0x20\n\tONOEOT                         = 0x8\n\tOPOST                          = 0x1\n\tOXTABS                         = 0x4\n\tO_ACCMODE                      = 0x3\n\tO_APPEND                       = 0x8\n\tO_ASYNC                        = 0x40\n\tO_CLOEXEC                      = 0x100000\n\tO_CREAT                        = 0x200\n\tO_DIRECT                       = 0x10000\n\tO_DIRECTORY                    = 0x20000\n\tO_EXCL                         = 0x800\n\tO_EXEC                         = 0x40000\n\tO_EXLOCK                       = 0x20\n\tO_FSYNC                        = 0x80\n\tO_NDELAY                       = 0x4\n\tO_NOCTTY                       = 0x8000\n\tO_NOFOLLOW                     = 0x100\n\tO_NONBLOCK                     = 0x4\n\tO_RDONLY                       = 0x0\n\tO_RDWR                         = 0x2\n\tO_RESOLVE_BENEATH              = 0x800000\n\tO_SEARCH                       = 0x40000\n\tO_SHLOCK                       = 0x10\n\tO_SYNC                         = 0x80\n\tO_TRUNC                        = 0x400\n\tO_TTY_INIT                     = 0x80000\n\tO_VERIFY                       = 0x200000\n\tO_WRONLY                       = 0x1\n\tPARENB                         = 0x1000\n\tPARMRK                         = 0x8\n\tPARODD                         = 0x2000\n\tPENDIN                         = 0x20000000\n\tPIOD_READ_D                    = 0x1\n\tPIOD_READ_I                    = 0x3\n\tPIOD_WRITE_D                   = 0x2\n\tPIOD_WRITE_I                   = 0x4\n\tPRIO_PGRP                      = 0x1\n\tPRIO_PROCESS                   = 0x0\n\tPRIO_USER                      = 0x2\n\tPROT_EXEC                      = 0x4\n\tPROT_NONE                      = 0x0\n\tPROT_READ                      = 0x1\n\tPROT_WRITE                     = 0x2\n\tPTRACE_DEFAULT                 = 0x1\n\tPTRACE_EXEC                    = 0x1\n\tPTRACE_FORK                    = 0x8\n\tPTRACE_LWP                     = 0x10\n\tPTRACE_SCE                     = 0x2\n\tPTRACE_SCX                     = 0x4\n\tPTRACE_SYSCALL                 = 0x6\n\tPTRACE_VFORK                   = 0x20\n\tPT_ATTACH                      = 0xa\n\tPT_CLEARSTEP                   = 0x10\n\tPT_CONTINUE                    = 0x7\n\tPT_DETACH                      = 0xb\n\tPT_FIRSTMACH                   = 0x40\n\tPT_FOLLOW_FORK                 = 0x17\n\tPT_GETDBREGS                   = 0x25\n\tPT_GETFPREGS                   = 0x23\n\tPT_GETFSBASE                   = 0x47\n\tPT_GETGSBASE                   = 0x49\n\tPT_GETLWPLIST                  = 0xf\n\tPT_GETNUMLWPS                  = 0xe\n\tPT_GETREGS                     = 0x21\n\tPT_GETXSTATE                   = 0x45\n\tPT_GETXSTATE_INFO              = 0x44\n\tPT_GET_EVENT_MASK              = 0x19\n\tPT_GET_SC_ARGS                 = 0x1b\n\tPT_GET_SC_RET                  = 0x1c\n\tPT_IO                          = 0xc\n\tPT_KILL                        = 0x8\n\tPT_LWPINFO                     = 0xd\n\tPT_LWP_EVENTS                  = 0x18\n\tPT_READ_D                      = 0x2\n\tPT_READ_I                      = 0x1\n\tPT_RESUME                      = 0x13\n\tPT_SETDBREGS                   = 0x26\n\tPT_SETFPREGS                   = 0x24\n\tPT_SETFSBASE                   = 0x48\n\tPT_SETGSBASE                   = 0x4a\n\tPT_SETREGS                     = 0x22\n\tPT_SETSTEP                     = 0x11\n\tPT_SETXSTATE                   = 0x46\n\tPT_SET_EVENT_MASK              = 0x1a\n\tPT_STEP                        = 0x9\n\tPT_SUSPEND                     = 0x12\n\tPT_SYSCALL                     = 0x16\n\tPT_TO_SCE                      = 0x14\n\tPT_TO_SCX                      = 0x15\n\tPT_TRACE_ME                    = 0x0\n\tPT_VM_ENTRY                    = 0x29\n\tPT_VM_TIMESTAMP                = 0x28\n\tPT_WRITE_D                     = 0x5\n\tPT_WRITE_I                     = 0x4\n\tP_ZONEID                       = 0xc\n\tRLIMIT_AS                      = 0xa\n\tRLIMIT_CORE                    = 0x4\n\tRLIMIT_CPU                     = 0x0\n\tRLIMIT_DATA                    = 0x2\n\tRLIMIT_FSIZE                   = 0x1\n\tRLIMIT_MEMLOCK                 = 0x6\n\tRLIMIT_NOFILE                  = 0x8\n\tRLIMIT_NPROC                   = 0x7\n\tRLIMIT_RSS                     = 0x5\n\tRLIMIT_STACK                   = 0x3\n\tRLIM_INFINITY                  = 0x7fffffffffffffff\n\tRTAX_AUTHOR                    = 0x6\n\tRTAX_BRD                       = 0x7\n\tRTAX_DST                       = 0x0\n\tRTAX_GATEWAY                   = 0x1\n\tRTAX_GENMASK                   = 0x3\n\tRTAX_IFA                       = 0x5\n\tRTAX_IFP                       = 0x4\n\tRTAX_MAX                       = 0x8\n\tRTAX_NETMASK                   = 0x2\n\tRTA_AUTHOR                     = 0x40\n\tRTA_BRD                        = 0x80\n\tRTA_DST                        = 0x1\n\tRTA_GATEWAY                    = 0x2\n\tRTA_GENMASK                    = 0x8\n\tRTA_IFA                        = 0x20\n\tRTA_IFP                        = 0x10\n\tRTA_NETMASK                    = 0x4\n\tRTF_BLACKHOLE                  = 0x1000\n\tRTF_BROADCAST                  = 0x400000\n\tRTF_DONE                       = 0x40\n\tRTF_DYNAMIC                    = 0x10\n\tRTF_FIXEDMTU                   = 0x80000\n\tRTF_FMASK                      = 0x1004d808\n\tRTF_GATEWAY                    = 0x2\n\tRTF_GWFLAG_COMPAT              = 0x80000000\n\tRTF_HOST                       = 0x4\n\tRTF_LLDATA                     = 0x400\n\tRTF_LLINFO                     = 0x400\n\tRTF_LOCAL                      = 0x200000\n\tRTF_MODIFIED                   = 0x20\n\tRTF_MULTICAST                  = 0x800000\n\tRTF_PINNED                     = 0x100000\n\tRTF_PROTO1                     = 0x8000\n\tRTF_PROTO2                     = 0x4000\n\tRTF_PROTO3                     = 0x40000\n\tRTF_REJECT                     = 0x8\n\tRTF_RNH_LOCKED                 = 0x40000000\n\tRTF_STATIC                     = 0x800\n\tRTF_STICKY                     = 0x10000000\n\tRTF_UP                         = 0x1\n\tRTF_XRESOLVE                   = 0x200\n\tRTM_ADD                        = 0x1\n\tRTM_CHANGE                     = 0x3\n\tRTM_DELADDR                    = 0xd\n\tRTM_DELETE                     = 0x2\n\tRTM_DELMADDR                   = 0x10\n\tRTM_GET                        = 0x4\n\tRTM_IEEE80211                  = 0x12\n\tRTM_IFANNOUNCE                 = 0x11\n\tRTM_IFINFO                     = 0xe\n\tRTM_LOCK                       = 0x8\n\tRTM_LOSING                     = 0x5\n\tRTM_MISS                       = 0x7\n\tRTM_NEWADDR                    = 0xc\n\tRTM_NEWMADDR                   = 0xf\n\tRTM_REDIRECT                   = 0x6\n\tRTM_RESOLVE                    = 0xb\n\tRTM_RTTUNIT                    = 0xf4240\n\tRTM_VERSION                    = 0x5\n\tRTV_EXPIRE                     = 0x4\n\tRTV_HOPCOUNT                   = 0x2\n\tRTV_MTU                        = 0x1\n\tRTV_RPIPE                      = 0x8\n\tRTV_RTT                        = 0x40\n\tRTV_RTTVAR                     = 0x80\n\tRTV_SPIPE                      = 0x10\n\tRTV_SSTHRESH                   = 0x20\n\tRTV_WEIGHT                     = 0x100\n\tRT_ALL_FIBS                    = -0x1\n\tRT_BLACKHOLE                   = 0x40\n\tRT_DEFAULT_FIB                 = 0x0\n\tRT_HAS_GW                      = 0x80\n\tRT_HAS_HEADER                  = 0x10\n\tRT_HAS_HEADER_BIT              = 0x4\n\tRT_L2_ME                       = 0x4\n\tRT_L2_ME_BIT                   = 0x2\n\tRT_LLE_CACHE                   = 0x100\n\tRT_MAY_LOOP                    = 0x8\n\tRT_MAY_LOOP_BIT                = 0x3\n\tRT_REJECT                      = 0x20\n\tRUSAGE_CHILDREN                = -0x1\n\tRUSAGE_SELF                    = 0x0\n\tRUSAGE_THREAD                  = 0x1\n\tSCM_BINTIME                    = 0x4\n\tSCM_CREDS                      = 0x3\n\tSCM_MONOTONIC                  = 0x6\n\tSCM_REALTIME                   = 0x5\n\tSCM_RIGHTS                     = 0x1\n\tSCM_TIMESTAMP                  = 0x2\n\tSCM_TIME_INFO                  = 0x7\n\tSEEK_CUR                       = 0x1\n\tSEEK_DATA                      = 0x3\n\tSEEK_END                       = 0x2\n\tSEEK_HOLE                      = 0x4\n\tSEEK_SET                       = 0x0\n\tSHUT_RD                        = 0x0\n\tSHUT_RDWR                      = 0x2\n\tSHUT_WR                        = 0x1\n\tSIOCADDMULTI                   = 0x80206931\n\tSIOCAIFADDR                    = 0x8040691a\n\tSIOCAIFGROUP                   = 0x80286987\n\tSIOCATMARK                     = 0x40047307\n\tSIOCDELMULTI                   = 0x80206932\n\tSIOCDIFADDR                    = 0x80206919\n\tSIOCDIFGROUP                   = 0x80286989\n\tSIOCDIFPHYADDR                 = 0x80206949\n\tSIOCGDRVSPEC                   = 0xc028697b\n\tSIOCGETSGCNT                   = 0xc0207210\n\tSIOCGETVIFCNT                  = 0xc028720f\n\tSIOCGHIWAT                     = 0x40047301\n\tSIOCGHWADDR                    = 0xc020693e\n\tSIOCGI2C                       = 0xc020693d\n\tSIOCGIFADDR                    = 0xc0206921\n\tSIOCGIFALIAS                   = 0xc044692d\n\tSIOCGIFBRDADDR                 = 0xc0206923\n\tSIOCGIFCAP                     = 0xc020691f\n\tSIOCGIFCONF                    = 0xc0106924\n\tSIOCGIFDESCR                   = 0xc020692a\n\tSIOCGIFDOWNREASON              = 0xc058699a\n\tSIOCGIFDSTADDR                 = 0xc0206922\n\tSIOCGIFFIB                     = 0xc020695c\n\tSIOCGIFFLAGS                   = 0xc0206911\n\tSIOCGIFGENERIC                 = 0xc020693a\n\tSIOCGIFGMEMB                   = 0xc028698a\n\tSIOCGIFGROUP                   = 0xc0286988\n\tSIOCGIFINDEX                   = 0xc0206920\n\tSIOCGIFMAC                     = 0xc0206926\n\tSIOCGIFMEDIA                   = 0xc0306938\n\tSIOCGIFMETRIC                  = 0xc0206917\n\tSIOCGIFMTU                     = 0xc0206933\n\tSIOCGIFNETMASK                 = 0xc0206925\n\tSIOCGIFPDSTADDR                = 0xc0206948\n\tSIOCGIFPHYS                    = 0xc0206935\n\tSIOCGIFPSRCADDR                = 0xc0206947\n\tSIOCGIFRSSHASH                 = 0xc0186997\n\tSIOCGIFRSSKEY                  = 0xc0946996\n\tSIOCGIFSTATUS                  = 0xc331693b\n\tSIOCGIFXMEDIA                  = 0xc030698b\n\tSIOCGLANPCP                    = 0xc0206998\n\tSIOCGLOWAT                     = 0x40047303\n\tSIOCGPGRP                      = 0x40047309\n\tSIOCGPRIVATE_0                 = 0xc0206950\n\tSIOCGPRIVATE_1                 = 0xc0206951\n\tSIOCGTUNFIB                    = 0xc020695e\n\tSIOCIFCREATE                   = 0xc020697a\n\tSIOCIFCREATE2                  = 0xc020697c\n\tSIOCIFDESTROY                  = 0x80206979\n\tSIOCIFGCLONERS                 = 0xc0106978\n\tSIOCSDRVSPEC                   = 0x8028697b\n\tSIOCSHIWAT                     = 0x80047300\n\tSIOCSIFADDR                    = 0x8020690c\n\tSIOCSIFBRDADDR                 = 0x80206913\n\tSIOCSIFCAP                     = 0x8020691e\n\tSIOCSIFDESCR                   = 0x80206929\n\tSIOCSIFDSTADDR                 = 0x8020690e\n\tSIOCSIFFIB                     = 0x8020695d\n\tSIOCSIFFLAGS                   = 0x80206910\n\tSIOCSIFGENERIC                 = 0x80206939\n\tSIOCSIFLLADDR                  = 0x8020693c\n\tSIOCSIFMAC                     = 0x80206927\n\tSIOCSIFMEDIA                   = 0xc0206937\n\tSIOCSIFMETRIC                  = 0x80206918\n\tSIOCSIFMTU                     = 0x80206934\n\tSIOCSIFNAME                    = 0x80206928\n\tSIOCSIFNETMASK                 = 0x80206916\n\tSIOCSIFPHYADDR                 = 0x80406946\n\tSIOCSIFPHYS                    = 0x80206936\n\tSIOCSIFRVNET                   = 0xc020695b\n\tSIOCSIFVNET                    = 0xc020695a\n\tSIOCSLANPCP                    = 0x80206999\n\tSIOCSLOWAT                     = 0x80047302\n\tSIOCSPGRP                      = 0x80047308\n\tSIOCSTUNFIB                    = 0x8020695f\n\tSOCK_CLOEXEC                   = 0x10000000\n\tSOCK_DGRAM                     = 0x2\n\tSOCK_MAXADDRLEN                = 0xff\n\tSOCK_NONBLOCK                  = 0x20000000\n\tSOCK_RAW                       = 0x3\n\tSOCK_RDM                       = 0x4\n\tSOCK_SEQPACKET                 = 0x5\n\tSOCK_STREAM                    = 0x1\n\tSOL_LOCAL                      = 0x0\n\tSOL_SOCKET                     = 0xffff\n\tSOMAXCONN                      = 0x80\n\tSO_ACCEPTCONN                  = 0x2\n\tSO_ACCEPTFILTER                = 0x1000\n\tSO_BINTIME                     = 0x2000\n\tSO_BROADCAST                   = 0x20\n\tSO_DEBUG                       = 0x1\n\tSO_DOMAIN                      = 0x1019\n\tSO_DONTROUTE                   = 0x10\n\tSO_ERROR                       = 0x1007\n\tSO_KEEPALIVE                   = 0x8\n\tSO_LABEL                       = 0x1009\n\tSO_LINGER                      = 0x80\n\tSO_LISTENINCQLEN               = 0x1013\n\tSO_LISTENQLEN                  = 0x1012\n\tSO_LISTENQLIMIT                = 0x1011\n\tSO_MAX_PACING_RATE             = 0x1018\n\tSO_NOSIGPIPE                   = 0x800\n\tSO_NO_DDP                      = 0x8000\n\tSO_NO_OFFLOAD                  = 0x4000\n\tSO_OOBINLINE                   = 0x100\n\tSO_PEERLABEL                   = 0x1010\n\tSO_PROTOCOL                    = 0x1016\n\tSO_PROTOTYPE                   = 0x1016\n\tSO_RCVBUF                      = 0x1002\n\tSO_RCVLOWAT                    = 0x1004\n\tSO_RCVTIMEO                    = 0x1006\n\tSO_RERROR                      = 0x20000\n\tSO_REUSEADDR                   = 0x4\n\tSO_REUSEPORT                   = 0x200\n\tSO_REUSEPORT_LB                = 0x10000\n\tSO_SETFIB                      = 0x1014\n\tSO_SNDBUF                      = 0x1001\n\tSO_SNDLOWAT                    = 0x1003\n\tSO_SNDTIMEO                    = 0x1005\n\tSO_TIMESTAMP                   = 0x400\n\tSO_TS_BINTIME                  = 0x1\n\tSO_TS_CLOCK                    = 0x1017\n\tSO_TS_CLOCK_MAX                = 0x3\n\tSO_TS_DEFAULT                  = 0x0\n\tSO_TS_MONOTONIC                = 0x3\n\tSO_TS_REALTIME                 = 0x2\n\tSO_TS_REALTIME_MICRO           = 0x0\n\tSO_TYPE                        = 0x1008\n\tSO_USELOOPBACK                 = 0x40\n\tSO_USER_COOKIE                 = 0x1015\n\tSO_VENDOR                      = 0x80000000\n\tS_BLKSIZE                      = 0x200\n\tS_IEXEC                        = 0x40\n\tS_IFBLK                        = 0x6000\n\tS_IFCHR                        = 0x2000\n\tS_IFDIR                        = 0x4000\n\tS_IFIFO                        = 0x1000\n\tS_IFLNK                        = 0xa000\n\tS_IFMT                         = 0xf000\n\tS_IFREG                        = 0x8000\n\tS_IFSOCK                       = 0xc000\n\tS_IFWHT                        = 0xe000\n\tS_IREAD                        = 0x100\n\tS_IRGRP                        = 0x20\n\tS_IROTH                        = 0x4\n\tS_IRUSR                        = 0x100\n\tS_IRWXG                        = 0x38\n\tS_IRWXO                        = 0x7\n\tS_IRWXU                        = 0x1c0\n\tS_ISGID                        = 0x400\n\tS_ISTXT                        = 0x200\n\tS_ISUID                        = 0x800\n\tS_ISVTX                        = 0x200\n\tS_IWGRP                        = 0x10\n\tS_IWOTH                        = 0x2\n\tS_IWRITE                       = 0x80\n\tS_IWUSR                        = 0x80\n\tS_IXGRP                        = 0x8\n\tS_IXOTH                        = 0x1\n\tS_IXUSR                        = 0x40\n\tTAB0                           = 0x0\n\tTAB3                           = 0x4\n\tTABDLY                         = 0x4\n\tTCIFLUSH                       = 0x1\n\tTCIOFF                         = 0x3\n\tTCIOFLUSH                      = 0x3\n\tTCION                          = 0x4\n\tTCOFLUSH                       = 0x2\n\tTCOOFF                         = 0x1\n\tTCOON                          = 0x2\n\tTCPOPT_EOL                     = 0x0\n\tTCPOPT_FAST_OPEN               = 0x22\n\tTCPOPT_MAXSEG                  = 0x2\n\tTCPOPT_NOP                     = 0x1\n\tTCPOPT_PAD                     = 0x0\n\tTCPOPT_SACK                    = 0x5\n\tTCPOPT_SACK_PERMITTED          = 0x4\n\tTCPOPT_SIGNATURE               = 0x13\n\tTCPOPT_TIMESTAMP               = 0x8\n\tTCPOPT_WINDOW                  = 0x3\n\tTCP_BBR_ACK_COMP_ALG           = 0x448\n\tTCP_BBR_ALGORITHM              = 0x43b\n\tTCP_BBR_DRAIN_INC_EXTRA        = 0x43c\n\tTCP_BBR_DRAIN_PG               = 0x42e\n\tTCP_BBR_EXTRA_GAIN             = 0x449\n\tTCP_BBR_EXTRA_STATE            = 0x453\n\tTCP_BBR_FLOOR_MIN_TSO          = 0x454\n\tTCP_BBR_HDWR_PACE              = 0x451\n\tTCP_BBR_HOLD_TARGET            = 0x436\n\tTCP_BBR_IWINTSO                = 0x42b\n\tTCP_BBR_LOWGAIN_FD             = 0x436\n\tTCP_BBR_LOWGAIN_HALF           = 0x435\n\tTCP_BBR_LOWGAIN_THRESH         = 0x434\n\tTCP_BBR_MAX_RTO                = 0x439\n\tTCP_BBR_MIN_RTO                = 0x438\n\tTCP_BBR_MIN_TOPACEOUT          = 0x455\n\tTCP_BBR_ONE_RETRAN             = 0x431\n\tTCP_BBR_PACE_CROSS             = 0x442\n\tTCP_BBR_PACE_DEL_TAR           = 0x43f\n\tTCP_BBR_PACE_OH                = 0x435\n\tTCP_BBR_PACE_PER_SEC           = 0x43e\n\tTCP_BBR_PACE_SEG_MAX           = 0x440\n\tTCP_BBR_PACE_SEG_MIN           = 0x441\n\tTCP_BBR_POLICER_DETECT         = 0x457\n\tTCP_BBR_PROBE_RTT_GAIN         = 0x44d\n\tTCP_BBR_PROBE_RTT_INT          = 0x430\n\tTCP_BBR_PROBE_RTT_LEN          = 0x44e\n\tTCP_BBR_RACK_RTT_USE           = 0x44a\n\tTCP_BBR_RECFORCE               = 0x42c\n\tTCP_BBR_REC_OVER_HPTS          = 0x43a\n\tTCP_BBR_RETRAN_WTSO            = 0x44b\n\tTCP_BBR_RWND_IS_APP            = 0x42f\n\tTCP_BBR_SEND_IWND_IN_TSO       = 0x44f\n\tTCP_BBR_STARTUP_EXIT_EPOCH     = 0x43d\n\tTCP_BBR_STARTUP_LOSS_EXIT      = 0x432\n\tTCP_BBR_STARTUP_PG             = 0x42d\n\tTCP_BBR_TMR_PACE_OH            = 0x448\n\tTCP_BBR_TSLIMITS               = 0x434\n\tTCP_BBR_TSTMP_RAISES           = 0x456\n\tTCP_BBR_UNLIMITED              = 0x43b\n\tTCP_BBR_USEDEL_RATE            = 0x437\n\tTCP_BBR_USE_LOWGAIN            = 0x433\n\tTCP_BBR_USE_RACK_CHEAT         = 0x450\n\tTCP_BBR_UTTER_MAX_TSO          = 0x452\n\tTCP_CA_NAME_MAX                = 0x10\n\tTCP_CCALGOOPT                  = 0x41\n\tTCP_CONGESTION                 = 0x40\n\tTCP_DATA_AFTER_CLOSE           = 0x44c\n\tTCP_DELACK                     = 0x48\n\tTCP_FASTOPEN                   = 0x401\n\tTCP_FASTOPEN_MAX_COOKIE_LEN    = 0x10\n\tTCP_FASTOPEN_MIN_COOKIE_LEN    = 0x4\n\tTCP_FASTOPEN_PSK_LEN           = 0x10\n\tTCP_FUNCTION_BLK               = 0x2000\n\tTCP_FUNCTION_NAME_LEN_MAX      = 0x20\n\tTCP_INFO                       = 0x20\n\tTCP_KEEPCNT                    = 0x400\n\tTCP_KEEPIDLE                   = 0x100\n\tTCP_KEEPINIT                   = 0x80\n\tTCP_KEEPINTVL                  = 0x200\n\tTCP_LOG                        = 0x22\n\tTCP_LOGBUF                     = 0x23\n\tTCP_LOGDUMP                    = 0x25\n\tTCP_LOGDUMPID                  = 0x26\n\tTCP_LOGID                      = 0x24\n\tTCP_LOG_ID_LEN                 = 0x40\n\tTCP_MAXBURST                   = 0x4\n\tTCP_MAXHLEN                    = 0x3c\n\tTCP_MAXOLEN                    = 0x28\n\tTCP_MAXSEG                     = 0x2\n\tTCP_MAXWIN                     = 0xffff\n\tTCP_MAX_SACK                   = 0x4\n\tTCP_MAX_WINSHIFT               = 0xe\n\tTCP_MD5SIG                     = 0x10\n\tTCP_MINMSS                     = 0xd8\n\tTCP_MSS                        = 0x218\n\tTCP_NODELAY                    = 0x1\n\tTCP_NOOPT                      = 0x8\n\tTCP_NOPUSH                     = 0x4\n\tTCP_PCAP_IN                    = 0x1000\n\tTCP_PCAP_OUT                   = 0x800\n\tTCP_RACK_EARLY_RECOV           = 0x423\n\tTCP_RACK_EARLY_SEG             = 0x424\n\tTCP_RACK_GP_INCREASE           = 0x446\n\tTCP_RACK_IDLE_REDUCE_HIGH      = 0x444\n\tTCP_RACK_MIN_PACE              = 0x445\n\tTCP_RACK_MIN_PACE_SEG          = 0x446\n\tTCP_RACK_MIN_TO                = 0x422\n\tTCP_RACK_PACE_ALWAYS           = 0x41f\n\tTCP_RACK_PACE_MAX_SEG          = 0x41e\n\tTCP_RACK_PACE_REDUCE           = 0x41d\n\tTCP_RACK_PKT_DELAY             = 0x428\n\tTCP_RACK_PROP                  = 0x41b\n\tTCP_RACK_PROP_RATE             = 0x420\n\tTCP_RACK_PRR_SENDALOT          = 0x421\n\tTCP_RACK_REORD_FADE            = 0x426\n\tTCP_RACK_REORD_THRESH          = 0x425\n\tTCP_RACK_TLP_INC_VAR           = 0x429\n\tTCP_RACK_TLP_REDUCE            = 0x41c\n\tTCP_RACK_TLP_THRESH            = 0x427\n\tTCP_RACK_TLP_USE               = 0x447\n\tTCP_VENDOR                     = 0x80000000\n\tTCSAFLUSH                      = 0x2\n\tTIMER_ABSTIME                  = 0x1\n\tTIMER_RELTIME                  = 0x0\n\tTIOCCBRK                       = 0x2000747a\n\tTIOCCDTR                       = 0x20007478\n\tTIOCCONS                       = 0x80047462\n\tTIOCDRAIN                      = 0x2000745e\n\tTIOCEXCL                       = 0x2000740d\n\tTIOCEXT                        = 0x80047460\n\tTIOCFLUSH                      = 0x80047410\n\tTIOCGDRAINWAIT                 = 0x40047456\n\tTIOCGETA                       = 0x402c7413\n\tTIOCGETD                       = 0x4004741a\n\tTIOCGPGRP                      = 0x40047477\n\tTIOCGPTN                       = 0x4004740f\n\tTIOCGSID                       = 0x40047463\n\tTIOCGWINSZ                     = 0x40087468\n\tTIOCMBIC                       = 0x8004746b\n\tTIOCMBIS                       = 0x8004746c\n\tTIOCMGDTRWAIT                  = 0x4004745a\n\tTIOCMGET                       = 0x4004746a\n\tTIOCMSDTRWAIT                  = 0x8004745b\n\tTIOCMSET                       = 0x8004746d\n\tTIOCM_CAR                      = 0x40\n\tTIOCM_CD                       = 0x40\n\tTIOCM_CTS                      = 0x20\n\tTIOCM_DCD                      = 0x40\n\tTIOCM_DSR                      = 0x100\n\tTIOCM_DTR                      = 0x2\n\tTIOCM_LE                       = 0x1\n\tTIOCM_RI                       = 0x80\n\tTIOCM_RNG                      = 0x80\n\tTIOCM_RTS                      = 0x4\n\tTIOCM_SR                       = 0x10\n\tTIOCM_ST                       = 0x8\n\tTIOCNOTTY                      = 0x20007471\n\tTIOCNXCL                       = 0x2000740e\n\tTIOCOUTQ                       = 0x40047473\n\tTIOCPKT                        = 0x80047470\n\tTIOCPKT_DATA                   = 0x0\n\tTIOCPKT_DOSTOP                 = 0x20\n\tTIOCPKT_FLUSHREAD              = 0x1\n\tTIOCPKT_FLUSHWRITE             = 0x2\n\tTIOCPKT_IOCTL                  = 0x40\n\tTIOCPKT_NOSTOP                 = 0x10\n\tTIOCPKT_START                  = 0x8\n\tTIOCPKT_STOP                   = 0x4\n\tTIOCPTMASTER                   = 0x2000741c\n\tTIOCSBRK                       = 0x2000747b\n\tTIOCSCTTY                      = 0x20007461\n\tTIOCSDRAINWAIT                 = 0x80047457\n\tTIOCSDTR                       = 0x20007479\n\tTIOCSETA                       = 0x802c7414\n\tTIOCSETAF                      = 0x802c7416\n\tTIOCSETAW                      = 0x802c7415\n\tTIOCSETD                       = 0x8004741b\n\tTIOCSIG                        = 0x2004745f\n\tTIOCSPGRP                      = 0x80047476\n\tTIOCSTART                      = 0x2000746e\n\tTIOCSTAT                       = 0x20007465\n\tTIOCSTI                        = 0x80017472\n\tTIOCSTOP                       = 0x2000746f\n\tTIOCSWINSZ                     = 0x80087467\n\tTIOCTIMESTAMP                  = 0x40107459\n\tTIOCUCNTL                      = 0x80047466\n\tTOSTOP                         = 0x400000\n\tUTIME_NOW                      = -0x1\n\tUTIME_OMIT                     = -0x2\n\tVDISCARD                       = 0xf\n\tVDSUSP                         = 0xb\n\tVEOF                           = 0x0\n\tVEOL                           = 0x1\n\tVEOL2                          = 0x2\n\tVERASE                         = 0x3\n\tVERASE2                        = 0x7\n\tVINTR                          = 0x8\n\tVKILL                          = 0x5\n\tVLNEXT                         = 0xe\n\tVMIN                           = 0x10\n\tVQUIT                          = 0x9\n\tVREPRINT                       = 0x6\n\tVSTART                         = 0xc\n\tVSTATUS                        = 0x12\n\tVSTOP                          = 0xd\n\tVSUSP                          = 0xa\n\tVTIME                          = 0x11\n\tVWERASE                        = 0x4\n\tWCONTINUED                     = 0x4\n\tWCOREFLAG                      = 0x80\n\tWEXITED                        = 0x10\n\tWLINUXCLONE                    = 0x80000000\n\tWNOHANG                        = 0x1\n\tWNOWAIT                        = 0x8\n\tWSTOPPED                       = 0x2\n\tWTRAPPED                       = 0x20\n\tWUNTRACED                      = 0x2\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x59)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x55)\n\tECAPMODE        = syscall.Errno(0x5e)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDOOFUS         = syscall.Errno(0x58)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x52)\n\tEILSEQ          = syscall.Errno(0x56)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTEGRITY      = syscall.Errno(0x61)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x61)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5a)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x57)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x5b)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x53)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCAPABLE     = syscall.Errno(0x5d)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5f)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x2d)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEOWNERDEAD      = syscall.Errno(0x60)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5c)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGLIBRT  = syscall.Signal(0x21)\n\tSIGLWP    = syscall.Signal(0x20)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EWOULDBLOCK\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIDRM\", \"identifier removed\"},\n\t{83, \"ENOMSG\", \"no message of desired type\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"ECANCELED\", \"operation canceled\"},\n\t{86, \"EILSEQ\", \"illegal byte sequence\"},\n\t{87, \"ENOATTR\", \"attribute not found\"},\n\t{88, \"EDOOFUS\", \"programming error\"},\n\t{89, \"EBADMSG\", \"bad message\"},\n\t{90, \"EMULTIHOP\", \"multihop attempted\"},\n\t{91, \"ENOLINK\", \"link has been severed\"},\n\t{92, \"EPROTO\", \"protocol error\"},\n\t{93, \"ENOTCAPABLE\", \"capabilities insufficient\"},\n\t{94, \"ECAPMODE\", \"not permitted in capability mode\"},\n\t{95, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{96, \"EOWNERDEAD\", \"previous owner died\"},\n\t{97, \"EINTEGRITY\", \"integrity check failed\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"unknown signal\"},\n\t{33, \"SIGLIBRT\", \"unknown signal\"},\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go",
    "content": "// mkerrors.sh\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm && freebsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                   = 0x10\n\tAF_ARP                         = 0x23\n\tAF_ATM                         = 0x1e\n\tAF_BLUETOOTH                   = 0x24\n\tAF_CCITT                       = 0xa\n\tAF_CHAOS                       = 0x5\n\tAF_CNT                         = 0x15\n\tAF_COIP                        = 0x14\n\tAF_DATAKIT                     = 0x9\n\tAF_DECnet                      = 0xc\n\tAF_DLI                         = 0xd\n\tAF_E164                        = 0x1a\n\tAF_ECMA                        = 0x8\n\tAF_HYLINK                      = 0xf\n\tAF_IEEE80211                   = 0x25\n\tAF_IMPLINK                     = 0x3\n\tAF_INET                        = 0x2\n\tAF_INET6                       = 0x1c\n\tAF_INET6_SDP                   = 0x2a\n\tAF_INET_SDP                    = 0x28\n\tAF_IPX                         = 0x17\n\tAF_ISDN                        = 0x1a\n\tAF_ISO                         = 0x7\n\tAF_LAT                         = 0xe\n\tAF_LINK                        = 0x12\n\tAF_LOCAL                       = 0x1\n\tAF_MAX                         = 0x2a\n\tAF_NATM                        = 0x1d\n\tAF_NETBIOS                     = 0x6\n\tAF_NETGRAPH                    = 0x20\n\tAF_OSI                         = 0x7\n\tAF_PUP                         = 0x4\n\tAF_ROUTE                       = 0x11\n\tAF_SCLUSTER                    = 0x22\n\tAF_SIP                         = 0x18\n\tAF_SLOW                        = 0x21\n\tAF_SNA                         = 0xb\n\tAF_UNIX                        = 0x1\n\tAF_UNSPEC                      = 0x0\n\tAF_VENDOR00                    = 0x27\n\tAF_VENDOR01                    = 0x29\n\tAF_VENDOR02                    = 0x2b\n\tAF_VENDOR03                    = 0x2d\n\tAF_VENDOR04                    = 0x2f\n\tAF_VENDOR05                    = 0x31\n\tAF_VENDOR06                    = 0x33\n\tAF_VENDOR07                    = 0x35\n\tAF_VENDOR08                    = 0x37\n\tAF_VENDOR09                    = 0x39\n\tAF_VENDOR10                    = 0x3b\n\tAF_VENDOR11                    = 0x3d\n\tAF_VENDOR12                    = 0x3f\n\tAF_VENDOR13                    = 0x41\n\tAF_VENDOR14                    = 0x43\n\tAF_VENDOR15                    = 0x45\n\tAF_VENDOR16                    = 0x47\n\tAF_VENDOR17                    = 0x49\n\tAF_VENDOR18                    = 0x4b\n\tAF_VENDOR19                    = 0x4d\n\tAF_VENDOR20                    = 0x4f\n\tAF_VENDOR21                    = 0x51\n\tAF_VENDOR22                    = 0x53\n\tAF_VENDOR23                    = 0x55\n\tAF_VENDOR24                    = 0x57\n\tAF_VENDOR25                    = 0x59\n\tAF_VENDOR26                    = 0x5b\n\tAF_VENDOR27                    = 0x5d\n\tAF_VENDOR28                    = 0x5f\n\tAF_VENDOR29                    = 0x61\n\tAF_VENDOR30                    = 0x63\n\tAF_VENDOR31                    = 0x65\n\tAF_VENDOR32                    = 0x67\n\tAF_VENDOR33                    = 0x69\n\tAF_VENDOR34                    = 0x6b\n\tAF_VENDOR35                    = 0x6d\n\tAF_VENDOR36                    = 0x6f\n\tAF_VENDOR37                    = 0x71\n\tAF_VENDOR38                    = 0x73\n\tAF_VENDOR39                    = 0x75\n\tAF_VENDOR40                    = 0x77\n\tAF_VENDOR41                    = 0x79\n\tAF_VENDOR42                    = 0x7b\n\tAF_VENDOR43                    = 0x7d\n\tAF_VENDOR44                    = 0x7f\n\tAF_VENDOR45                    = 0x81\n\tAF_VENDOR46                    = 0x83\n\tAF_VENDOR47                    = 0x85\n\tALTWERASE                      = 0x200\n\tB0                             = 0x0\n\tB110                           = 0x6e\n\tB115200                        = 0x1c200\n\tB1200                          = 0x4b0\n\tB134                           = 0x86\n\tB14400                         = 0x3840\n\tB150                           = 0x96\n\tB1800                          = 0x708\n\tB19200                         = 0x4b00\n\tB200                           = 0xc8\n\tB230400                        = 0x38400\n\tB2400                          = 0x960\n\tB28800                         = 0x7080\n\tB300                           = 0x12c\n\tB38400                         = 0x9600\n\tB460800                        = 0x70800\n\tB4800                          = 0x12c0\n\tB50                            = 0x32\n\tB57600                         = 0xe100\n\tB600                           = 0x258\n\tB7200                          = 0x1c20\n\tB75                            = 0x4b\n\tB76800                         = 0x12c00\n\tB921600                        = 0xe1000\n\tB9600                          = 0x2580\n\tBIOCFEEDBACK                   = 0x8004427c\n\tBIOCFLUSH                      = 0x20004268\n\tBIOCGBLEN                      = 0x40044266\n\tBIOCGDIRECTION                 = 0x40044276\n\tBIOCGDLT                       = 0x4004426a\n\tBIOCGDLTLIST                   = 0xc0084279\n\tBIOCGETBUFMODE                 = 0x4004427d\n\tBIOCGETIF                      = 0x4020426b\n\tBIOCGETZMAX                    = 0x4004427f\n\tBIOCGHDRCMPLT                  = 0x40044274\n\tBIOCGRSIG                      = 0x40044272\n\tBIOCGRTIMEOUT                  = 0x4010426e\n\tBIOCGSEESENT                   = 0x40044276\n\tBIOCGSTATS                     = 0x4008426f\n\tBIOCGTSTAMP                    = 0x40044283\n\tBIOCIMMEDIATE                  = 0x80044270\n\tBIOCLOCK                       = 0x2000427a\n\tBIOCPROMISC                    = 0x20004269\n\tBIOCROTZBUF                    = 0x400c4280\n\tBIOCSBLEN                      = 0xc0044266\n\tBIOCSDIRECTION                 = 0x80044277\n\tBIOCSDLT                       = 0x80044278\n\tBIOCSETBUFMODE                 = 0x8004427e\n\tBIOCSETF                       = 0x80084267\n\tBIOCSETFNR                     = 0x80084282\n\tBIOCSETIF                      = 0x8020426c\n\tBIOCSETVLANPCP                 = 0x80044285\n\tBIOCSETWF                      = 0x8008427b\n\tBIOCSETZBUF                    = 0x800c4281\n\tBIOCSHDRCMPLT                  = 0x80044275\n\tBIOCSRSIG                      = 0x80044273\n\tBIOCSRTIMEOUT                  = 0x8010426d\n\tBIOCSSEESENT                   = 0x80044277\n\tBIOCSTSTAMP                    = 0x80044284\n\tBIOCVERSION                    = 0x40044271\n\tBPF_A                          = 0x10\n\tBPF_ABS                        = 0x20\n\tBPF_ADD                        = 0x0\n\tBPF_ALIGNMENT                  = 0x4\n\tBPF_ALU                        = 0x4\n\tBPF_AND                        = 0x50\n\tBPF_B                          = 0x10\n\tBPF_BUFMODE_BUFFER             = 0x1\n\tBPF_BUFMODE_ZBUF               = 0x2\n\tBPF_DIV                        = 0x30\n\tBPF_H                          = 0x8\n\tBPF_IMM                        = 0x0\n\tBPF_IND                        = 0x40\n\tBPF_JA                         = 0x0\n\tBPF_JEQ                        = 0x10\n\tBPF_JGE                        = 0x30\n\tBPF_JGT                        = 0x20\n\tBPF_JMP                        = 0x5\n\tBPF_JSET                       = 0x40\n\tBPF_K                          = 0x0\n\tBPF_LD                         = 0x0\n\tBPF_LDX                        = 0x1\n\tBPF_LEN                        = 0x80\n\tBPF_LSH                        = 0x60\n\tBPF_MAJOR_VERSION              = 0x1\n\tBPF_MAXBUFSIZE                 = 0x80000\n\tBPF_MAXINSNS                   = 0x200\n\tBPF_MEM                        = 0x60\n\tBPF_MEMWORDS                   = 0x10\n\tBPF_MINBUFSIZE                 = 0x20\n\tBPF_MINOR_VERSION              = 0x1\n\tBPF_MISC                       = 0x7\n\tBPF_MOD                        = 0x90\n\tBPF_MSH                        = 0xa0\n\tBPF_MUL                        = 0x20\n\tBPF_NEG                        = 0x80\n\tBPF_OR                         = 0x40\n\tBPF_RELEASE                    = 0x30bb6\n\tBPF_RET                        = 0x6\n\tBPF_RSH                        = 0x70\n\tBPF_ST                         = 0x2\n\tBPF_STX                        = 0x3\n\tBPF_SUB                        = 0x10\n\tBPF_TAX                        = 0x0\n\tBPF_TXA                        = 0x80\n\tBPF_T_BINTIME                  = 0x2\n\tBPF_T_BINTIME_FAST             = 0x102\n\tBPF_T_BINTIME_MONOTONIC        = 0x202\n\tBPF_T_BINTIME_MONOTONIC_FAST   = 0x302\n\tBPF_T_FAST                     = 0x100\n\tBPF_T_FLAG_MASK                = 0x300\n\tBPF_T_FORMAT_MASK              = 0x3\n\tBPF_T_MICROTIME                = 0x0\n\tBPF_T_MICROTIME_FAST           = 0x100\n\tBPF_T_MICROTIME_MONOTONIC      = 0x200\n\tBPF_T_MICROTIME_MONOTONIC_FAST = 0x300\n\tBPF_T_MONOTONIC                = 0x200\n\tBPF_T_MONOTONIC_FAST           = 0x300\n\tBPF_T_NANOTIME                 = 0x1\n\tBPF_T_NANOTIME_FAST            = 0x101\n\tBPF_T_NANOTIME_MONOTONIC       = 0x201\n\tBPF_T_NANOTIME_MONOTONIC_FAST  = 0x301\n\tBPF_T_NONE                     = 0x3\n\tBPF_T_NORMAL                   = 0x0\n\tBPF_W                          = 0x0\n\tBPF_X                          = 0x8\n\tBPF_XOR                        = 0xa0\n\tBRKINT                         = 0x2\n\tCAP_ACCEPT                     = 0x200000020000000\n\tCAP_ACL_CHECK                  = 0x400000000010000\n\tCAP_ACL_DELETE                 = 0x400000000020000\n\tCAP_ACL_GET                    = 0x400000000040000\n\tCAP_ACL_SET                    = 0x400000000080000\n\tCAP_ALL0                       = 0x20007ffffffffff\n\tCAP_ALL1                       = 0x4000000001fffff\n\tCAP_BIND                       = 0x200000040000000\n\tCAP_BINDAT                     = 0x200008000000400\n\tCAP_CHFLAGSAT                  = 0x200000000001400\n\tCAP_CONNECT                    = 0x200000080000000\n\tCAP_CONNECTAT                  = 0x200010000000400\n\tCAP_CREATE                     = 0x200000000000040\n\tCAP_EVENT                      = 0x400000000000020\n\tCAP_EXTATTR_DELETE             = 0x400000000001000\n\tCAP_EXTATTR_GET                = 0x400000000002000\n\tCAP_EXTATTR_LIST               = 0x400000000004000\n\tCAP_EXTATTR_SET                = 0x400000000008000\n\tCAP_FCHDIR                     = 0x200000000000800\n\tCAP_FCHFLAGS                   = 0x200000000001000\n\tCAP_FCHMOD                     = 0x200000000002000\n\tCAP_FCHMODAT                   = 0x200000000002400\n\tCAP_FCHOWN                     = 0x200000000004000\n\tCAP_FCHOWNAT                   = 0x200000000004400\n\tCAP_FCNTL                      = 0x200000000008000\n\tCAP_FCNTL_ALL                  = 0x78\n\tCAP_FCNTL_GETFL                = 0x8\n\tCAP_FCNTL_GETOWN               = 0x20\n\tCAP_FCNTL_SETFL                = 0x10\n\tCAP_FCNTL_SETOWN               = 0x40\n\tCAP_FEXECVE                    = 0x200000000000080\n\tCAP_FLOCK                      = 0x200000000010000\n\tCAP_FPATHCONF                  = 0x200000000020000\n\tCAP_FSCK                       = 0x200000000040000\n\tCAP_FSTAT                      = 0x200000000080000\n\tCAP_FSTATAT                    = 0x200000000080400\n\tCAP_FSTATFS                    = 0x200000000100000\n\tCAP_FSYNC                      = 0x200000000000100\n\tCAP_FTRUNCATE                  = 0x200000000000200\n\tCAP_FUTIMES                    = 0x200000000200000\n\tCAP_FUTIMESAT                  = 0x200000000200400\n\tCAP_GETPEERNAME                = 0x200000100000000\n\tCAP_GETSOCKNAME                = 0x200000200000000\n\tCAP_GETSOCKOPT                 = 0x200000400000000\n\tCAP_IOCTL                      = 0x400000000000080\n\tCAP_IOCTLS_ALL                 = 0x7fffffff\n\tCAP_KQUEUE                     = 0x400000000100040\n\tCAP_KQUEUE_CHANGE              = 0x400000000100000\n\tCAP_KQUEUE_EVENT               = 0x400000000000040\n\tCAP_LINKAT_SOURCE              = 0x200020000000400\n\tCAP_LINKAT_TARGET              = 0x200000000400400\n\tCAP_LISTEN                     = 0x200000800000000\n\tCAP_LOOKUP                     = 0x200000000000400\n\tCAP_MAC_GET                    = 0x400000000000001\n\tCAP_MAC_SET                    = 0x400000000000002\n\tCAP_MKDIRAT                    = 0x200000000800400\n\tCAP_MKFIFOAT                   = 0x200000001000400\n\tCAP_MKNODAT                    = 0x200000002000400\n\tCAP_MMAP                       = 0x200000000000010\n\tCAP_MMAP_R                     = 0x20000000000001d\n\tCAP_MMAP_RW                    = 0x20000000000001f\n\tCAP_MMAP_RWX                   = 0x20000000000003f\n\tCAP_MMAP_RX                    = 0x20000000000003d\n\tCAP_MMAP_W                     = 0x20000000000001e\n\tCAP_MMAP_WX                    = 0x20000000000003e\n\tCAP_MMAP_X                     = 0x20000000000003c\n\tCAP_PDGETPID                   = 0x400000000000200\n\tCAP_PDKILL                     = 0x400000000000800\n\tCAP_PDWAIT                     = 0x400000000000400\n\tCAP_PEELOFF                    = 0x200001000000000\n\tCAP_POLL_EVENT                 = 0x400000000000020\n\tCAP_PREAD                      = 0x20000000000000d\n\tCAP_PWRITE                     = 0x20000000000000e\n\tCAP_READ                       = 0x200000000000001\n\tCAP_RECV                       = 0x200000000000001\n\tCAP_RENAMEAT_SOURCE            = 0x200000004000400\n\tCAP_RENAMEAT_TARGET            = 0x200040000000400\n\tCAP_RIGHTS_VERSION             = 0x0\n\tCAP_RIGHTS_VERSION_00          = 0x0\n\tCAP_SEEK                       = 0x20000000000000c\n\tCAP_SEEK_TELL                  = 0x200000000000004\n\tCAP_SEM_GETVALUE               = 0x400000000000004\n\tCAP_SEM_POST                   = 0x400000000000008\n\tCAP_SEM_WAIT                   = 0x400000000000010\n\tCAP_SEND                       = 0x200000000000002\n\tCAP_SETSOCKOPT                 = 0x200002000000000\n\tCAP_SHUTDOWN                   = 0x200004000000000\n\tCAP_SOCK_CLIENT                = 0x200007780000003\n\tCAP_SOCK_SERVER                = 0x200007f60000003\n\tCAP_SYMLINKAT                  = 0x200000008000400\n\tCAP_TTYHOOK                    = 0x400000000000100\n\tCAP_UNLINKAT                   = 0x200000010000400\n\tCAP_UNUSED0_44                 = 0x200080000000000\n\tCAP_UNUSED0_57                 = 0x300000000000000\n\tCAP_UNUSED1_22                 = 0x400000000200000\n\tCAP_UNUSED1_57                 = 0x500000000000000\n\tCAP_WRITE                      = 0x200000000000002\n\tCFLUSH                         = 0xf\n\tCLOCAL                         = 0x8000\n\tCLOCK_MONOTONIC                = 0x4\n\tCLOCK_MONOTONIC_FAST           = 0xc\n\tCLOCK_MONOTONIC_PRECISE        = 0xb\n\tCLOCK_PROCESS_CPUTIME_ID       = 0xf\n\tCLOCK_PROF                     = 0x2\n\tCLOCK_REALTIME                 = 0x0\n\tCLOCK_REALTIME_FAST            = 0xa\n\tCLOCK_REALTIME_PRECISE         = 0x9\n\tCLOCK_SECOND                   = 0xd\n\tCLOCK_THREAD_CPUTIME_ID        = 0xe\n\tCLOCK_UPTIME                   = 0x5\n\tCLOCK_UPTIME_FAST              = 0x8\n\tCLOCK_UPTIME_PRECISE           = 0x7\n\tCLOCK_VIRTUAL                  = 0x1\n\tCPUSTATES                      = 0x5\n\tCP_IDLE                        = 0x4\n\tCP_INTR                        = 0x3\n\tCP_NICE                        = 0x1\n\tCP_SYS                         = 0x2\n\tCP_USER                        = 0x0\n\tCREAD                          = 0x800\n\tCRTSCTS                        = 0x30000\n\tCS5                            = 0x0\n\tCS6                            = 0x100\n\tCS7                            = 0x200\n\tCS8                            = 0x300\n\tCSIZE                          = 0x300\n\tCSTART                         = 0x11\n\tCSTATUS                        = 0x14\n\tCSTOP                          = 0x13\n\tCSTOPB                         = 0x400\n\tCSUSP                          = 0x1a\n\tCTL_HW                         = 0x6\n\tCTL_KERN                       = 0x1\n\tCTL_MAXNAME                    = 0x18\n\tCTL_NET                        = 0x4\n\tDIOCGATTR                      = 0xc148648e\n\tDIOCGDELETE                    = 0x80106488\n\tDIOCGFLUSH                     = 0x20006487\n\tDIOCGFRONTSTUFF                = 0x40086486\n\tDIOCGFWHEADS                   = 0x40046483\n\tDIOCGFWSECTORS                 = 0x40046482\n\tDIOCGIDENT                     = 0x41006489\n\tDIOCGMEDIASIZE                 = 0x40086481\n\tDIOCGPHYSPATH                  = 0x4400648d\n\tDIOCGPROVIDERNAME              = 0x4400648a\n\tDIOCGSECTORSIZE                = 0x40046480\n\tDIOCGSTRIPEOFFSET              = 0x4008648c\n\tDIOCGSTRIPESIZE                = 0x4008648b\n\tDIOCSKERNELDUMP                = 0x804c6490\n\tDIOCSKERNELDUMP_FREEBSD11      = 0x80046485\n\tDIOCZONECMD                    = 0xc078648f\n\tDLT_A429                       = 0xb8\n\tDLT_A653_ICM                   = 0xb9\n\tDLT_AIRONET_HEADER             = 0x78\n\tDLT_AOS                        = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394     = 0x8a\n\tDLT_ARCNET                     = 0x7\n\tDLT_ARCNET_LINUX               = 0x81\n\tDLT_ATM_CLIP                   = 0x13\n\tDLT_ATM_RFC1483                = 0xb\n\tDLT_AURORA                     = 0x7e\n\tDLT_AX25                       = 0x3\n\tDLT_AX25_KISS                  = 0xca\n\tDLT_BACNET_MS_TP               = 0xa5\n\tDLT_BLUETOOTH_BREDR_BB         = 0xff\n\tDLT_BLUETOOTH_HCI_H4           = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9\n\tDLT_BLUETOOTH_LE_LL            = 0xfb\n\tDLT_BLUETOOTH_LE_LL_WITH_PHDR  = 0x100\n\tDLT_BLUETOOTH_LINUX_MONITOR    = 0xfe\n\tDLT_CAN20B                     = 0xbe\n\tDLT_CAN_SOCKETCAN              = 0xe3\n\tDLT_CHAOS                      = 0x5\n\tDLT_CHDLC                      = 0x68\n\tDLT_CISCO_IOS                  = 0x76\n\tDLT_CLASS_NETBSD_RAWAF         = 0x2240000\n\tDLT_C_HDLC                     = 0x68\n\tDLT_C_HDLC_WITH_DIR            = 0xcd\n\tDLT_DBUS                       = 0xe7\n\tDLT_DECT                       = 0xdd\n\tDLT_DISPLAYPORT_AUX            = 0x113\n\tDLT_DOCSIS                     = 0x8f\n\tDLT_DOCSIS31_XRA31             = 0x111\n\tDLT_DVB_CI                     = 0xeb\n\tDLT_ECONET                     = 0x73\n\tDLT_EN10MB                     = 0x1\n\tDLT_EN3MB                      = 0x2\n\tDLT_ENC                        = 0x6d\n\tDLT_EPON                       = 0x103\n\tDLT_ERF                        = 0xc5\n\tDLT_ERF_ETH                    = 0xaf\n\tDLT_ERF_POS                    = 0xb0\n\tDLT_ETHERNET_MPACKET           = 0x112\n\tDLT_FC_2                       = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS     = 0xe1\n\tDLT_FDDI                       = 0xa\n\tDLT_FLEXRAY                    = 0xd2\n\tDLT_FRELAY                     = 0x6b\n\tDLT_FRELAY_WITH_DIR            = 0xce\n\tDLT_GCOM_SERIAL                = 0xad\n\tDLT_GCOM_T1E1                  = 0xac\n\tDLT_GPF_F                      = 0xab\n\tDLT_GPF_T                      = 0xaa\n\tDLT_GPRS_LLC                   = 0xa9\n\tDLT_GSMTAP_ABIS                = 0xda\n\tDLT_GSMTAP_UM                  = 0xd9\n\tDLT_IBM_SN                     = 0x92\n\tDLT_IBM_SP                     = 0x91\n\tDLT_IEEE802                    = 0x6\n\tDLT_IEEE802_11                 = 0x69\n\tDLT_IEEE802_11_RADIO           = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS       = 0xa3\n\tDLT_IEEE802_15_4               = 0xc3\n\tDLT_IEEE802_15_4_LINUX         = 0xbf\n\tDLT_IEEE802_15_4_NOFCS         = 0xe6\n\tDLT_IEEE802_15_4_NONASK_PHY    = 0xd7\n\tDLT_IEEE802_16_MAC_CPS         = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO   = 0xc1\n\tDLT_INFINIBAND                 = 0xf7\n\tDLT_IPFILTER                   = 0x74\n\tDLT_IPMB_KONTRON               = 0xc7\n\tDLT_IPMB_LINUX                 = 0xd1\n\tDLT_IPMI_HPM_2                 = 0x104\n\tDLT_IPNET                      = 0xe2\n\tDLT_IPOIB                      = 0xf2\n\tDLT_IPV4                       = 0xe4\n\tDLT_IPV6                       = 0xe5\n\tDLT_IP_OVER_FC                 = 0x7a\n\tDLT_ISO_14443                  = 0x108\n\tDLT_JUNIPER_ATM1               = 0x89\n\tDLT_JUNIPER_ATM2               = 0x87\n\tDLT_JUNIPER_ATM_CEMIC          = 0xee\n\tDLT_JUNIPER_CHDLC              = 0xb5\n\tDLT_JUNIPER_ES                 = 0x84\n\tDLT_JUNIPER_ETHER              = 0xb2\n\tDLT_JUNIPER_FIBRECHANNEL       = 0xea\n\tDLT_JUNIPER_FRELAY             = 0xb4\n\tDLT_JUNIPER_GGSN               = 0x85\n\tDLT_JUNIPER_ISM                = 0xc2\n\tDLT_JUNIPER_MFR                = 0x86\n\tDLT_JUNIPER_MLFR               = 0x83\n\tDLT_JUNIPER_MLPPP              = 0x82\n\tDLT_JUNIPER_MONITOR            = 0xa4\n\tDLT_JUNIPER_PIC_PEER           = 0xae\n\tDLT_JUNIPER_PPP                = 0xb3\n\tDLT_JUNIPER_PPPOE              = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM          = 0xa8\n\tDLT_JUNIPER_SERVICES           = 0x88\n\tDLT_JUNIPER_SRX_E2E            = 0xe9\n\tDLT_JUNIPER_ST                 = 0xc8\n\tDLT_JUNIPER_VP                 = 0xb7\n\tDLT_JUNIPER_VS                 = 0xe8\n\tDLT_LAPB_WITH_DIR              = 0xcf\n\tDLT_LAPD                       = 0xcb\n\tDLT_LIN                        = 0xd4\n\tDLT_LINUX_EVDEV                = 0xd8\n\tDLT_LINUX_IRDA                 = 0x90\n\tDLT_LINUX_LAPD                 = 0xb1\n\tDLT_LINUX_PPP_WITHDIRECTION    = 0xa6\n\tDLT_LINUX_SLL                  = 0x71\n\tDLT_LINUX_SLL2                 = 0x114\n\tDLT_LOOP                       = 0x6c\n\tDLT_LORATAP                    = 0x10e\n\tDLT_LTALK                      = 0x72\n\tDLT_MATCHING_MAX               = 0x114\n\tDLT_MATCHING_MIN               = 0x68\n\tDLT_MFR                        = 0xb6\n\tDLT_MOST                       = 0xd3\n\tDLT_MPEG_2_TS                  = 0xf3\n\tDLT_MPLS                       = 0xdb\n\tDLT_MTP2                       = 0x8c\n\tDLT_MTP2_WITH_PHDR             = 0x8b\n\tDLT_MTP3                       = 0x8d\n\tDLT_MUX27010                   = 0xec\n\tDLT_NETANALYZER                = 0xf0\n\tDLT_NETANALYZER_TRANSPARENT    = 0xf1\n\tDLT_NETLINK                    = 0xfd\n\tDLT_NFC_LLCP                   = 0xf5\n\tDLT_NFLOG                      = 0xef\n\tDLT_NG40                       = 0xf4\n\tDLT_NORDIC_BLE                 = 0x110\n\tDLT_NULL                       = 0x0\n\tDLT_OPENFLOW                   = 0x10b\n\tDLT_PCI_EXP                    = 0x7d\n\tDLT_PFLOG                      = 0x75\n\tDLT_PFSYNC                     = 0x79\n\tDLT_PKTAP                      = 0x102\n\tDLT_PPI                        = 0xc0\n\tDLT_PPP                        = 0x9\n\tDLT_PPP_BSDOS                  = 0xe\n\tDLT_PPP_ETHER                  = 0x33\n\tDLT_PPP_PPPD                   = 0xa6\n\tDLT_PPP_SERIAL                 = 0x32\n\tDLT_PPP_WITH_DIR               = 0xcc\n\tDLT_PPP_WITH_DIRECTION         = 0xa6\n\tDLT_PRISM_HEADER               = 0x77\n\tDLT_PROFIBUS_DL                = 0x101\n\tDLT_PRONET                     = 0x4\n\tDLT_RAIF1                      = 0xc6\n\tDLT_RAW                        = 0xc\n\tDLT_RDS                        = 0x109\n\tDLT_REDBACK_SMARTEDGE          = 0x20\n\tDLT_RIO                        = 0x7c\n\tDLT_RTAC_SERIAL                = 0xfa\n\tDLT_SCCP                       = 0x8e\n\tDLT_SCTP                       = 0xf8\n\tDLT_SDLC                       = 0x10c\n\tDLT_SITA                       = 0xc4\n\tDLT_SLIP                       = 0x8\n\tDLT_SLIP_BSDOS                 = 0xd\n\tDLT_STANAG_5066_D_PDU          = 0xed\n\tDLT_SUNATM                     = 0x7b\n\tDLT_SYMANTEC_FIREWALL          = 0x63\n\tDLT_TI_LLN_SNIFFER             = 0x10d\n\tDLT_TZSP                       = 0x80\n\tDLT_USB                        = 0xba\n\tDLT_USBPCAP                    = 0xf9\n\tDLT_USB_DARWIN                 = 0x10a\n\tDLT_USB_FREEBSD                = 0xba\n\tDLT_USB_LINUX                  = 0xbd\n\tDLT_USB_LINUX_MMAPPED          = 0xdc\n\tDLT_USER0                      = 0x93\n\tDLT_USER1                      = 0x94\n\tDLT_USER10                     = 0x9d\n\tDLT_USER11                     = 0x9e\n\tDLT_USER12                     = 0x9f\n\tDLT_USER13                     = 0xa0\n\tDLT_USER14                     = 0xa1\n\tDLT_USER15                     = 0xa2\n\tDLT_USER2                      = 0x95\n\tDLT_USER3                      = 0x96\n\tDLT_USER4                      = 0x97\n\tDLT_USER5                      = 0x98\n\tDLT_USER6                      = 0x99\n\tDLT_USER7                      = 0x9a\n\tDLT_USER8                      = 0x9b\n\tDLT_USER9                      = 0x9c\n\tDLT_VSOCK                      = 0x10f\n\tDLT_WATTSTOPPER_DLM            = 0x107\n\tDLT_WIHART                     = 0xdf\n\tDLT_WIRESHARK_UPPER_PDU        = 0xfc\n\tDLT_X2E_SERIAL                 = 0xd5\n\tDLT_X2E_XORAYA                 = 0xd6\n\tDLT_ZWAVE_R1_R2                = 0x105\n\tDLT_ZWAVE_R3                   = 0x106\n\tDT_BLK                         = 0x6\n\tDT_CHR                         = 0x2\n\tDT_DIR                         = 0x4\n\tDT_FIFO                        = 0x1\n\tDT_LNK                         = 0xa\n\tDT_REG                         = 0x8\n\tDT_SOCK                        = 0xc\n\tDT_UNKNOWN                     = 0x0\n\tDT_WHT                         = 0xe\n\tECHO                           = 0x8\n\tECHOCTL                        = 0x40\n\tECHOE                          = 0x2\n\tECHOK                          = 0x4\n\tECHOKE                         = 0x1\n\tECHONL                         = 0x10\n\tECHOPRT                        = 0x20\n\tEVFILT_AIO                     = -0x3\n\tEVFILT_EMPTY                   = -0xd\n\tEVFILT_FS                      = -0x9\n\tEVFILT_LIO                     = -0xa\n\tEVFILT_PROC                    = -0x5\n\tEVFILT_PROCDESC                = -0x8\n\tEVFILT_READ                    = -0x1\n\tEVFILT_SENDFILE                = -0xc\n\tEVFILT_SIGNAL                  = -0x6\n\tEVFILT_SYSCOUNT                = 0xd\n\tEVFILT_TIMER                   = -0x7\n\tEVFILT_USER                    = -0xb\n\tEVFILT_VNODE                   = -0x4\n\tEVFILT_WRITE                   = -0x2\n\tEVNAMEMAP_NAME_SIZE            = 0x40\n\tEV_ADD                         = 0x1\n\tEV_CLEAR                       = 0x20\n\tEV_DELETE                      = 0x2\n\tEV_DISABLE                     = 0x8\n\tEV_DISPATCH                    = 0x80\n\tEV_DROP                        = 0x1000\n\tEV_ENABLE                      = 0x4\n\tEV_EOF                         = 0x8000\n\tEV_ERROR                       = 0x4000\n\tEV_FLAG1                       = 0x2000\n\tEV_FLAG2                       = 0x4000\n\tEV_FORCEONESHOT                = 0x100\n\tEV_ONESHOT                     = 0x10\n\tEV_RECEIPT                     = 0x40\n\tEV_SYSFLAGS                    = 0xf000\n\tEXTA                           = 0x4b00\n\tEXTATTR_MAXNAMELEN             = 0xff\n\tEXTATTR_NAMESPACE_EMPTY        = 0x0\n\tEXTATTR_NAMESPACE_SYSTEM       = 0x2\n\tEXTATTR_NAMESPACE_USER         = 0x1\n\tEXTB                           = 0x9600\n\tEXTPROC                        = 0x800\n\tFD_CLOEXEC                     = 0x1\n\tFD_SETSIZE                     = 0x400\n\tFLUSHO                         = 0x800000\n\tF_CANCEL                       = 0x5\n\tF_DUP2FD                       = 0xa\n\tF_DUP2FD_CLOEXEC               = 0x12\n\tF_DUPFD                        = 0x0\n\tF_DUPFD_CLOEXEC                = 0x11\n\tF_GETFD                        = 0x1\n\tF_GETFL                        = 0x3\n\tF_GETLK                        = 0xb\n\tF_GETOWN                       = 0x5\n\tF_OGETLK                       = 0x7\n\tF_OK                           = 0x0\n\tF_OSETLK                       = 0x8\n\tF_OSETLKW                      = 0x9\n\tF_RDAHEAD                      = 0x10\n\tF_RDLCK                        = 0x1\n\tF_READAHEAD                    = 0xf\n\tF_SETFD                        = 0x2\n\tF_SETFL                        = 0x4\n\tF_SETLK                        = 0xc\n\tF_SETLKW                       = 0xd\n\tF_SETLK_REMOTE                 = 0xe\n\tF_SETOWN                       = 0x6\n\tF_UNLCK                        = 0x2\n\tF_UNLCKSYS                     = 0x4\n\tF_WRLCK                        = 0x3\n\tHUPCL                          = 0x4000\n\tHW_MACHINE                     = 0x1\n\tICANON                         = 0x100\n\tICMP6_FILTER                   = 0x12\n\tICRNL                          = 0x100\n\tIEXTEN                         = 0x400\n\tIFAN_ARRIVAL                   = 0x0\n\tIFAN_DEPARTURE                 = 0x1\n\tIFCAP_WOL_MAGIC                = 0x2000\n\tIFF_ALLMULTI                   = 0x200\n\tIFF_ALTPHYS                    = 0x4000\n\tIFF_BROADCAST                  = 0x2\n\tIFF_CANTCHANGE                 = 0x218f52\n\tIFF_CANTCONFIG                 = 0x10000\n\tIFF_DEBUG                      = 0x4\n\tIFF_DRV_OACTIVE                = 0x400\n\tIFF_DRV_RUNNING                = 0x40\n\tIFF_DYING                      = 0x200000\n\tIFF_LINK0                      = 0x1000\n\tIFF_LINK1                      = 0x2000\n\tIFF_LINK2                      = 0x4000\n\tIFF_LOOPBACK                   = 0x8\n\tIFF_MONITOR                    = 0x40000\n\tIFF_MULTICAST                  = 0x8000\n\tIFF_NOARP                      = 0x80\n\tIFF_NOGROUP                    = 0x800000\n\tIFF_OACTIVE                    = 0x400\n\tIFF_POINTOPOINT                = 0x10\n\tIFF_PPROMISC                   = 0x20000\n\tIFF_PROMISC                    = 0x100\n\tIFF_RENAMING                   = 0x400000\n\tIFF_RUNNING                    = 0x40\n\tIFF_SIMPLEX                    = 0x800\n\tIFF_STATICARP                  = 0x80000\n\tIFF_UP                         = 0x1\n\tIFNAMSIZ                       = 0x10\n\tIFT_BRIDGE                     = 0xd1\n\tIFT_CARP                       = 0xf8\n\tIFT_IEEE1394                   = 0x90\n\tIFT_INFINIBAND                 = 0xc7\n\tIFT_L2VLAN                     = 0x87\n\tIFT_L3IPVLAN                   = 0x88\n\tIFT_PPP                        = 0x17\n\tIFT_PROPVIRTUAL                = 0x35\n\tIGNBRK                         = 0x1\n\tIGNCR                          = 0x80\n\tIGNPAR                         = 0x4\n\tIMAXBEL                        = 0x2000\n\tINLCR                          = 0x40\n\tINPCK                          = 0x10\n\tIN_CLASSA_HOST                 = 0xffffff\n\tIN_CLASSA_MAX                  = 0x80\n\tIN_CLASSA_NET                  = 0xff000000\n\tIN_CLASSA_NSHIFT               = 0x18\n\tIN_CLASSB_HOST                 = 0xffff\n\tIN_CLASSB_MAX                  = 0x10000\n\tIN_CLASSB_NET                  = 0xffff0000\n\tIN_CLASSB_NSHIFT               = 0x10\n\tIN_CLASSC_HOST                 = 0xff\n\tIN_CLASSC_NET                  = 0xffffff00\n\tIN_CLASSC_NSHIFT               = 0x8\n\tIN_CLASSD_HOST                 = 0xfffffff\n\tIN_CLASSD_NET                  = 0xf0000000\n\tIN_CLASSD_NSHIFT               = 0x1c\n\tIN_LOOPBACKNET                 = 0x7f\n\tIN_RFC3021_MASK                = 0xfffffffe\n\tIPPROTO_3PC                    = 0x22\n\tIPPROTO_ADFS                   = 0x44\n\tIPPROTO_AH                     = 0x33\n\tIPPROTO_AHIP                   = 0x3d\n\tIPPROTO_APES                   = 0x63\n\tIPPROTO_ARGUS                  = 0xd\n\tIPPROTO_AX25                   = 0x5d\n\tIPPROTO_BHA                    = 0x31\n\tIPPROTO_BLT                    = 0x1e\n\tIPPROTO_BRSATMON               = 0x4c\n\tIPPROTO_CARP                   = 0x70\n\tIPPROTO_CFTP                   = 0x3e\n\tIPPROTO_CHAOS                  = 0x10\n\tIPPROTO_CMTP                   = 0x26\n\tIPPROTO_CPHB                   = 0x49\n\tIPPROTO_CPNX                   = 0x48\n\tIPPROTO_DCCP                   = 0x21\n\tIPPROTO_DDP                    = 0x25\n\tIPPROTO_DGP                    = 0x56\n\tIPPROTO_DIVERT                 = 0x102\n\tIPPROTO_DONE                   = 0x101\n\tIPPROTO_DSTOPTS                = 0x3c\n\tIPPROTO_EGP                    = 0x8\n\tIPPROTO_EMCON                  = 0xe\n\tIPPROTO_ENCAP                  = 0x62\n\tIPPROTO_EON                    = 0x50\n\tIPPROTO_ESP                    = 0x32\n\tIPPROTO_ETHERIP                = 0x61\n\tIPPROTO_FRAGMENT               = 0x2c\n\tIPPROTO_GGP                    = 0x3\n\tIPPROTO_GMTP                   = 0x64\n\tIPPROTO_GRE                    = 0x2f\n\tIPPROTO_HELLO                  = 0x3f\n\tIPPROTO_HIP                    = 0x8b\n\tIPPROTO_HMP                    = 0x14\n\tIPPROTO_HOPOPTS                = 0x0\n\tIPPROTO_ICMP                   = 0x1\n\tIPPROTO_ICMPV6                 = 0x3a\n\tIPPROTO_IDP                    = 0x16\n\tIPPROTO_IDPR                   = 0x23\n\tIPPROTO_IDRP                   = 0x2d\n\tIPPROTO_IGMP                   = 0x2\n\tIPPROTO_IGP                    = 0x55\n\tIPPROTO_IGRP                   = 0x58\n\tIPPROTO_IL                     = 0x28\n\tIPPROTO_INLSP                  = 0x34\n\tIPPROTO_INP                    = 0x20\n\tIPPROTO_IP                     = 0x0\n\tIPPROTO_IPCOMP                 = 0x6c\n\tIPPROTO_IPCV                   = 0x47\n\tIPPROTO_IPEIP                  = 0x5e\n\tIPPROTO_IPIP                   = 0x4\n\tIPPROTO_IPPC                   = 0x43\n\tIPPROTO_IPV4                   = 0x4\n\tIPPROTO_IPV6                   = 0x29\n\tIPPROTO_IRTP                   = 0x1c\n\tIPPROTO_KRYPTOLAN              = 0x41\n\tIPPROTO_LARP                   = 0x5b\n\tIPPROTO_LEAF1                  = 0x19\n\tIPPROTO_LEAF2                  = 0x1a\n\tIPPROTO_MAX                    = 0x100\n\tIPPROTO_MEAS                   = 0x13\n\tIPPROTO_MH                     = 0x87\n\tIPPROTO_MHRP                   = 0x30\n\tIPPROTO_MICP                   = 0x5f\n\tIPPROTO_MOBILE                 = 0x37\n\tIPPROTO_MPLS                   = 0x89\n\tIPPROTO_MTP                    = 0x5c\n\tIPPROTO_MUX                    = 0x12\n\tIPPROTO_ND                     = 0x4d\n\tIPPROTO_NHRP                   = 0x36\n\tIPPROTO_NONE                   = 0x3b\n\tIPPROTO_NSP                    = 0x1f\n\tIPPROTO_NVPII                  = 0xb\n\tIPPROTO_OLD_DIVERT             = 0xfe\n\tIPPROTO_OSPFIGP                = 0x59\n\tIPPROTO_PFSYNC                 = 0xf0\n\tIPPROTO_PGM                    = 0x71\n\tIPPROTO_PIGP                   = 0x9\n\tIPPROTO_PIM                    = 0x67\n\tIPPROTO_PRM                    = 0x15\n\tIPPROTO_PUP                    = 0xc\n\tIPPROTO_PVP                    = 0x4b\n\tIPPROTO_RAW                    = 0xff\n\tIPPROTO_RCCMON                 = 0xa\n\tIPPROTO_RDP                    = 0x1b\n\tIPPROTO_RESERVED_253           = 0xfd\n\tIPPROTO_RESERVED_254           = 0xfe\n\tIPPROTO_ROUTING                = 0x2b\n\tIPPROTO_RSVP                   = 0x2e\n\tIPPROTO_RVD                    = 0x42\n\tIPPROTO_SATEXPAK               = 0x40\n\tIPPROTO_SATMON                 = 0x45\n\tIPPROTO_SCCSP                  = 0x60\n\tIPPROTO_SCTP                   = 0x84\n\tIPPROTO_SDRP                   = 0x2a\n\tIPPROTO_SEND                   = 0x103\n\tIPPROTO_SHIM6                  = 0x8c\n\tIPPROTO_SKIP                   = 0x39\n\tIPPROTO_SPACER                 = 0x7fff\n\tIPPROTO_SRPC                   = 0x5a\n\tIPPROTO_ST                     = 0x7\n\tIPPROTO_SVMTP                  = 0x52\n\tIPPROTO_SWIPE                  = 0x35\n\tIPPROTO_TCF                    = 0x57\n\tIPPROTO_TCP                    = 0x6\n\tIPPROTO_TLSP                   = 0x38\n\tIPPROTO_TP                     = 0x1d\n\tIPPROTO_TPXX                   = 0x27\n\tIPPROTO_TRUNK1                 = 0x17\n\tIPPROTO_TRUNK2                 = 0x18\n\tIPPROTO_TTP                    = 0x54\n\tIPPROTO_UDP                    = 0x11\n\tIPPROTO_UDPLITE                = 0x88\n\tIPPROTO_VINES                  = 0x53\n\tIPPROTO_VISA                   = 0x46\n\tIPPROTO_VMTP                   = 0x51\n\tIPPROTO_WBEXPAK                = 0x4f\n\tIPPROTO_WBMON                  = 0x4e\n\tIPPROTO_WSN                    = 0x4a\n\tIPPROTO_XNET                   = 0xf\n\tIPPROTO_XTP                    = 0x24\n\tIPV6_AUTOFLOWLABEL             = 0x3b\n\tIPV6_BINDANY                   = 0x40\n\tIPV6_BINDMULTI                 = 0x41\n\tIPV6_BINDV6ONLY                = 0x1b\n\tIPV6_CHECKSUM                  = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS    = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP    = 0x1\n\tIPV6_DEFHLIM                   = 0x40\n\tIPV6_DONTFRAG                  = 0x3e\n\tIPV6_DSTOPTS                   = 0x32\n\tIPV6_FLOWID                    = 0x43\n\tIPV6_FLOWINFO_MASK             = 0xffffff0f\n\tIPV6_FLOWLABEL_LEN             = 0x14\n\tIPV6_FLOWLABEL_MASK            = 0xffff0f00\n\tIPV6_FLOWTYPE                  = 0x44\n\tIPV6_FRAGTTL                   = 0x78\n\tIPV6_FW_ADD                    = 0x1e\n\tIPV6_FW_DEL                    = 0x1f\n\tIPV6_FW_FLUSH                  = 0x20\n\tIPV6_FW_GET                    = 0x22\n\tIPV6_FW_ZERO                   = 0x21\n\tIPV6_HLIMDEC                   = 0x1\n\tIPV6_HOPLIMIT                  = 0x2f\n\tIPV6_HOPOPTS                   = 0x31\n\tIPV6_IPSEC_POLICY              = 0x1c\n\tIPV6_JOIN_GROUP                = 0xc\n\tIPV6_LEAVE_GROUP               = 0xd\n\tIPV6_MAXHLIM                   = 0xff\n\tIPV6_MAXOPTHDR                 = 0x800\n\tIPV6_MAXPACKET                 = 0xffff\n\tIPV6_MAX_GROUP_SRC_FILTER      = 0x200\n\tIPV6_MAX_MEMBERSHIPS           = 0xfff\n\tIPV6_MAX_SOCK_SRC_FILTER       = 0x80\n\tIPV6_MMTU                      = 0x500\n\tIPV6_MSFILTER                  = 0x4a\n\tIPV6_MULTICAST_HOPS            = 0xa\n\tIPV6_MULTICAST_IF              = 0x9\n\tIPV6_MULTICAST_LOOP            = 0xb\n\tIPV6_NEXTHOP                   = 0x30\n\tIPV6_ORIGDSTADDR               = 0x48\n\tIPV6_PATHMTU                   = 0x2c\n\tIPV6_PKTINFO                   = 0x2e\n\tIPV6_PORTRANGE                 = 0xe\n\tIPV6_PORTRANGE_DEFAULT         = 0x0\n\tIPV6_PORTRANGE_HIGH            = 0x1\n\tIPV6_PORTRANGE_LOW             = 0x2\n\tIPV6_PREFER_TEMPADDR           = 0x3f\n\tIPV6_RECVDSTOPTS               = 0x28\n\tIPV6_RECVFLOWID                = 0x46\n\tIPV6_RECVHOPLIMIT              = 0x25\n\tIPV6_RECVHOPOPTS               = 0x27\n\tIPV6_RECVORIGDSTADDR           = 0x48\n\tIPV6_RECVPATHMTU               = 0x2b\n\tIPV6_RECVPKTINFO               = 0x24\n\tIPV6_RECVRSSBUCKETID           = 0x47\n\tIPV6_RECVRTHDR                 = 0x26\n\tIPV6_RECVTCLASS                = 0x39\n\tIPV6_RSSBUCKETID               = 0x45\n\tIPV6_RSS_LISTEN_BUCKET         = 0x42\n\tIPV6_RTHDR                     = 0x33\n\tIPV6_RTHDRDSTOPTS              = 0x23\n\tIPV6_RTHDR_LOOSE               = 0x0\n\tIPV6_RTHDR_STRICT              = 0x1\n\tIPV6_RTHDR_TYPE_0              = 0x0\n\tIPV6_SOCKOPT_RESERVED1         = 0x3\n\tIPV6_TCLASS                    = 0x3d\n\tIPV6_UNICAST_HOPS              = 0x4\n\tIPV6_USE_MIN_MTU               = 0x2a\n\tIPV6_V6ONLY                    = 0x1b\n\tIPV6_VERSION                   = 0x60\n\tIPV6_VERSION_MASK              = 0xf0\n\tIPV6_VLAN_PCP                  = 0x4b\n\tIP_ADD_MEMBERSHIP              = 0xc\n\tIP_ADD_SOURCE_MEMBERSHIP       = 0x46\n\tIP_BINDANY                     = 0x18\n\tIP_BINDMULTI                   = 0x19\n\tIP_BLOCK_SOURCE                = 0x48\n\tIP_DEFAULT_MULTICAST_LOOP      = 0x1\n\tIP_DEFAULT_MULTICAST_TTL       = 0x1\n\tIP_DF                          = 0x4000\n\tIP_DONTFRAG                    = 0x43\n\tIP_DROP_MEMBERSHIP             = 0xd\n\tIP_DROP_SOURCE_MEMBERSHIP      = 0x47\n\tIP_DUMMYNET3                   = 0x31\n\tIP_DUMMYNET_CONFIGURE          = 0x3c\n\tIP_DUMMYNET_DEL                = 0x3d\n\tIP_DUMMYNET_FLUSH              = 0x3e\n\tIP_DUMMYNET_GET                = 0x40\n\tIP_FLOWID                      = 0x5a\n\tIP_FLOWTYPE                    = 0x5b\n\tIP_FW3                         = 0x30\n\tIP_FW_ADD                      = 0x32\n\tIP_FW_DEL                      = 0x33\n\tIP_FW_FLUSH                    = 0x34\n\tIP_FW_GET                      = 0x36\n\tIP_FW_NAT_CFG                  = 0x38\n\tIP_FW_NAT_DEL                  = 0x39\n\tIP_FW_NAT_GET_CONFIG           = 0x3a\n\tIP_FW_NAT_GET_LOG              = 0x3b\n\tIP_FW_RESETLOG                 = 0x37\n\tIP_FW_TABLE_ADD                = 0x28\n\tIP_FW_TABLE_DEL                = 0x29\n\tIP_FW_TABLE_FLUSH              = 0x2a\n\tIP_FW_TABLE_GETSIZE            = 0x2b\n\tIP_FW_TABLE_LIST               = 0x2c\n\tIP_FW_ZERO                     = 0x35\n\tIP_HDRINCL                     = 0x2\n\tIP_IPSEC_POLICY                = 0x15\n\tIP_MAXPACKET                   = 0xffff\n\tIP_MAX_GROUP_SRC_FILTER        = 0x200\n\tIP_MAX_MEMBERSHIPS             = 0xfff\n\tIP_MAX_SOCK_MUTE_FILTER        = 0x80\n\tIP_MAX_SOCK_SRC_FILTER         = 0x80\n\tIP_MF                          = 0x2000\n\tIP_MINTTL                      = 0x42\n\tIP_MSFILTER                    = 0x4a\n\tIP_MSS                         = 0x240\n\tIP_MULTICAST_IF                = 0x9\n\tIP_MULTICAST_LOOP              = 0xb\n\tIP_MULTICAST_TTL               = 0xa\n\tIP_MULTICAST_VIF               = 0xe\n\tIP_OFFMASK                     = 0x1fff\n\tIP_ONESBCAST                   = 0x17\n\tIP_OPTIONS                     = 0x1\n\tIP_ORIGDSTADDR                 = 0x1b\n\tIP_PORTRANGE                   = 0x13\n\tIP_PORTRANGE_DEFAULT           = 0x0\n\tIP_PORTRANGE_HIGH              = 0x1\n\tIP_PORTRANGE_LOW               = 0x2\n\tIP_RECVDSTADDR                 = 0x7\n\tIP_RECVFLOWID                  = 0x5d\n\tIP_RECVIF                      = 0x14\n\tIP_RECVOPTS                    = 0x5\n\tIP_RECVORIGDSTADDR             = 0x1b\n\tIP_RECVRETOPTS                 = 0x6\n\tIP_RECVRSSBUCKETID             = 0x5e\n\tIP_RECVTOS                     = 0x44\n\tIP_RECVTTL                     = 0x41\n\tIP_RETOPTS                     = 0x8\n\tIP_RF                          = 0x8000\n\tIP_RSSBUCKETID                 = 0x5c\n\tIP_RSS_LISTEN_BUCKET           = 0x1a\n\tIP_RSVP_OFF                    = 0x10\n\tIP_RSVP_ON                     = 0xf\n\tIP_RSVP_VIF_OFF                = 0x12\n\tIP_RSVP_VIF_ON                 = 0x11\n\tIP_SENDSRCADDR                 = 0x7\n\tIP_TOS                         = 0x3\n\tIP_TTL                         = 0x4\n\tIP_UNBLOCK_SOURCE              = 0x49\n\tIP_VLAN_PCP                    = 0x4b\n\tISIG                           = 0x80\n\tISTRIP                         = 0x20\n\tITIMER_PROF                    = 0x2\n\tITIMER_REAL                    = 0x0\n\tITIMER_VIRTUAL                 = 0x1\n\tIXANY                          = 0x800\n\tIXOFF                          = 0x400\n\tIXON                           = 0x200\n\tKERN_HOSTNAME                  = 0xa\n\tKERN_OSRELEASE                 = 0x2\n\tKERN_OSTYPE                    = 0x1\n\tKERN_VERSION                   = 0x4\n\tLOCAL_CONNWAIT                 = 0x4\n\tLOCAL_CREDS                    = 0x2\n\tLOCAL_PEERCRED                 = 0x1\n\tLOCAL_VENDOR                   = 0x80000000\n\tLOCK_EX                        = 0x2\n\tLOCK_NB                        = 0x4\n\tLOCK_SH                        = 0x1\n\tLOCK_UN                        = 0x8\n\tMADV_AUTOSYNC                  = 0x7\n\tMADV_CORE                      = 0x9\n\tMADV_DONTNEED                  = 0x4\n\tMADV_FREE                      = 0x5\n\tMADV_NOCORE                    = 0x8\n\tMADV_NORMAL                    = 0x0\n\tMADV_NOSYNC                    = 0x6\n\tMADV_PROTECT                   = 0xa\n\tMADV_RANDOM                    = 0x1\n\tMADV_SEQUENTIAL                = 0x2\n\tMADV_WILLNEED                  = 0x3\n\tMAP_ALIGNED_SUPER              = 0x1000000\n\tMAP_ALIGNMENT_MASK             = -0x1000000\n\tMAP_ALIGNMENT_SHIFT            = 0x18\n\tMAP_ANON                       = 0x1000\n\tMAP_ANONYMOUS                  = 0x1000\n\tMAP_COPY                       = 0x2\n\tMAP_EXCL                       = 0x4000\n\tMAP_FILE                       = 0x0\n\tMAP_FIXED                      = 0x10\n\tMAP_GUARD                      = 0x2000\n\tMAP_HASSEMAPHORE               = 0x200\n\tMAP_NOCORE                     = 0x20000\n\tMAP_NOSYNC                     = 0x800\n\tMAP_PREFAULT_READ              = 0x40000\n\tMAP_PRIVATE                    = 0x2\n\tMAP_RESERVED0020               = 0x20\n\tMAP_RESERVED0040               = 0x40\n\tMAP_RESERVED0080               = 0x80\n\tMAP_RESERVED0100               = 0x100\n\tMAP_SHARED                     = 0x1\n\tMAP_STACK                      = 0x400\n\tMCAST_BLOCK_SOURCE             = 0x54\n\tMCAST_EXCLUDE                  = 0x2\n\tMCAST_INCLUDE                  = 0x1\n\tMCAST_JOIN_GROUP               = 0x50\n\tMCAST_JOIN_SOURCE_GROUP        = 0x52\n\tMCAST_LEAVE_GROUP              = 0x51\n\tMCAST_LEAVE_SOURCE_GROUP       = 0x53\n\tMCAST_UNBLOCK_SOURCE           = 0x55\n\tMCAST_UNDEFINED                = 0x0\n\tMCL_CURRENT                    = 0x1\n\tMCL_FUTURE                     = 0x2\n\tMNT_ACLS                       = 0x8000000\n\tMNT_ASYNC                      = 0x40\n\tMNT_AUTOMOUNTED                = 0x200000000\n\tMNT_BYFSID                     = 0x8000000\n\tMNT_CMDFLAGS                   = 0xd0f0000\n\tMNT_DEFEXPORTED                = 0x200\n\tMNT_DELEXPORT                  = 0x20000\n\tMNT_EXKERB                     = 0x800\n\tMNT_EXPORTANON                 = 0x400\n\tMNT_EXPORTED                   = 0x100\n\tMNT_EXPUBLIC                   = 0x20000000\n\tMNT_EXRDONLY                   = 0x80\n\tMNT_FORCE                      = 0x80000\n\tMNT_GJOURNAL                   = 0x2000000\n\tMNT_IGNORE                     = 0x800000\n\tMNT_LAZY                       = 0x3\n\tMNT_LOCAL                      = 0x1000\n\tMNT_MULTILABEL                 = 0x4000000\n\tMNT_NFS4ACLS                   = 0x10\n\tMNT_NOATIME                    = 0x10000000\n\tMNT_NOCLUSTERR                 = 0x40000000\n\tMNT_NOCLUSTERW                 = 0x80000000\n\tMNT_NOEXEC                     = 0x4\n\tMNT_NONBUSY                    = 0x4000000\n\tMNT_NOSUID                     = 0x8\n\tMNT_NOSYMFOLLOW                = 0x400000\n\tMNT_NOWAIT                     = 0x2\n\tMNT_QUOTA                      = 0x2000\n\tMNT_RDONLY                     = 0x1\n\tMNT_RELOAD                     = 0x40000\n\tMNT_ROOTFS                     = 0x4000\n\tMNT_SNAPSHOT                   = 0x1000000\n\tMNT_SOFTDEP                    = 0x200000\n\tMNT_SUIDDIR                    = 0x100000\n\tMNT_SUJ                        = 0x100000000\n\tMNT_SUSPEND                    = 0x4\n\tMNT_SYNCHRONOUS                = 0x2\n\tMNT_UNION                      = 0x20\n\tMNT_UNTRUSTED                  = 0x800000000\n\tMNT_UPDATE                     = 0x10000\n\tMNT_UPDATEMASK                 = 0xad8d0807e\n\tMNT_USER                       = 0x8000\n\tMNT_VERIFIED                   = 0x400000000\n\tMNT_VISFLAGMASK                = 0xffef0ffff\n\tMNT_WAIT                       = 0x1\n\tMSG_CMSG_CLOEXEC               = 0x40000\n\tMSG_COMPAT                     = 0x8000\n\tMSG_CTRUNC                     = 0x20\n\tMSG_DONTROUTE                  = 0x4\n\tMSG_DONTWAIT                   = 0x80\n\tMSG_EOF                        = 0x100\n\tMSG_EOR                        = 0x8\n\tMSG_NBIO                       = 0x4000\n\tMSG_NOSIGNAL                   = 0x20000\n\tMSG_NOTIFICATION               = 0x2000\n\tMSG_OOB                        = 0x1\n\tMSG_PEEK                       = 0x2\n\tMSG_TRUNC                      = 0x10\n\tMSG_WAITALL                    = 0x40\n\tMSG_WAITFORONE                 = 0x80000\n\tMS_ASYNC                       = 0x1\n\tMS_INVALIDATE                  = 0x2\n\tMS_SYNC                        = 0x0\n\tNAME_MAX                       = 0xff\n\tNET_RT_DUMP                    = 0x1\n\tNET_RT_FLAGS                   = 0x2\n\tNET_RT_IFLIST                  = 0x3\n\tNET_RT_IFLISTL                 = 0x5\n\tNET_RT_IFMALIST                = 0x4\n\tNFDBITS                        = 0x20\n\tNOFLSH                         = 0x80000000\n\tNOKERNINFO                     = 0x2000000\n\tNOTE_ABSTIME                   = 0x10\n\tNOTE_ATTRIB                    = 0x8\n\tNOTE_CHILD                     = 0x4\n\tNOTE_CLOSE                     = 0x100\n\tNOTE_CLOSE_WRITE               = 0x200\n\tNOTE_DELETE                    = 0x1\n\tNOTE_EXEC                      = 0x20000000\n\tNOTE_EXIT                      = 0x80000000\n\tNOTE_EXTEND                    = 0x4\n\tNOTE_FFAND                     = 0x40000000\n\tNOTE_FFCOPY                    = 0xc0000000\n\tNOTE_FFCTRLMASK                = 0xc0000000\n\tNOTE_FFLAGSMASK                = 0xffffff\n\tNOTE_FFNOP                     = 0x0\n\tNOTE_FFOR                      = 0x80000000\n\tNOTE_FILE_POLL                 = 0x2\n\tNOTE_FORK                      = 0x40000000\n\tNOTE_LINK                      = 0x10\n\tNOTE_LOWAT                     = 0x1\n\tNOTE_MSECONDS                  = 0x2\n\tNOTE_NSECONDS                  = 0x8\n\tNOTE_OPEN                      = 0x80\n\tNOTE_PCTRLMASK                 = 0xf0000000\n\tNOTE_PDATAMASK                 = 0xfffff\n\tNOTE_READ                      = 0x400\n\tNOTE_RENAME                    = 0x20\n\tNOTE_REVOKE                    = 0x40\n\tNOTE_SECONDS                   = 0x1\n\tNOTE_TRACK                     = 0x1\n\tNOTE_TRACKERR                  = 0x2\n\tNOTE_TRIGGER                   = 0x1000000\n\tNOTE_USECONDS                  = 0x4\n\tNOTE_WRITE                     = 0x2\n\tOCRNL                          = 0x10\n\tONLCR                          = 0x2\n\tONLRET                         = 0x40\n\tONOCR                          = 0x20\n\tONOEOT                         = 0x8\n\tOPOST                          = 0x1\n\tOXTABS                         = 0x4\n\tO_ACCMODE                      = 0x3\n\tO_APPEND                       = 0x8\n\tO_ASYNC                        = 0x40\n\tO_CLOEXEC                      = 0x100000\n\tO_CREAT                        = 0x200\n\tO_DIRECT                       = 0x10000\n\tO_DIRECTORY                    = 0x20000\n\tO_EXCL                         = 0x800\n\tO_EXEC                         = 0x40000\n\tO_EXLOCK                       = 0x20\n\tO_FSYNC                        = 0x80\n\tO_NDELAY                       = 0x4\n\tO_NOCTTY                       = 0x8000\n\tO_NOFOLLOW                     = 0x100\n\tO_NONBLOCK                     = 0x4\n\tO_RDONLY                       = 0x0\n\tO_RDWR                         = 0x2\n\tO_RESOLVE_BENEATH              = 0x800000\n\tO_SEARCH                       = 0x40000\n\tO_SHLOCK                       = 0x10\n\tO_SYNC                         = 0x80\n\tO_TRUNC                        = 0x400\n\tO_TTY_INIT                     = 0x80000\n\tO_VERIFY                       = 0x200000\n\tO_WRONLY                       = 0x1\n\tPARENB                         = 0x1000\n\tPARMRK                         = 0x8\n\tPARODD                         = 0x2000\n\tPENDIN                         = 0x20000000\n\tPIOD_READ_D                    = 0x1\n\tPIOD_READ_I                    = 0x3\n\tPIOD_WRITE_D                   = 0x2\n\tPIOD_WRITE_I                   = 0x4\n\tPRIO_PGRP                      = 0x1\n\tPRIO_PROCESS                   = 0x0\n\tPRIO_USER                      = 0x2\n\tPROT_EXEC                      = 0x4\n\tPROT_NONE                      = 0x0\n\tPROT_READ                      = 0x1\n\tPROT_WRITE                     = 0x2\n\tPTRACE_DEFAULT                 = 0x1\n\tPTRACE_EXEC                    = 0x1\n\tPTRACE_FORK                    = 0x8\n\tPTRACE_LWP                     = 0x10\n\tPTRACE_SCE                     = 0x2\n\tPTRACE_SCX                     = 0x4\n\tPTRACE_SYSCALL                 = 0x6\n\tPTRACE_VFORK                   = 0x20\n\tPT_ATTACH                      = 0xa\n\tPT_CLEARSTEP                   = 0x10\n\tPT_CONTINUE                    = 0x7\n\tPT_DETACH                      = 0xb\n\tPT_FIRSTMACH                   = 0x40\n\tPT_FOLLOW_FORK                 = 0x17\n\tPT_GETDBREGS                   = 0x25\n\tPT_GETFPREGS                   = 0x23\n\tPT_GETLWPLIST                  = 0xf\n\tPT_GETNUMLWPS                  = 0xe\n\tPT_GETREGS                     = 0x21\n\tPT_GETVFPREGS                  = 0x40\n\tPT_GET_EVENT_MASK              = 0x19\n\tPT_GET_SC_ARGS                 = 0x1b\n\tPT_GET_SC_RET                  = 0x1c\n\tPT_IO                          = 0xc\n\tPT_KILL                        = 0x8\n\tPT_LWPINFO                     = 0xd\n\tPT_LWP_EVENTS                  = 0x18\n\tPT_READ_D                      = 0x2\n\tPT_READ_I                      = 0x1\n\tPT_RESUME                      = 0x13\n\tPT_SETDBREGS                   = 0x26\n\tPT_SETFPREGS                   = 0x24\n\tPT_SETREGS                     = 0x22\n\tPT_SETSTEP                     = 0x11\n\tPT_SETVFPREGS                  = 0x41\n\tPT_SET_EVENT_MASK              = 0x1a\n\tPT_STEP                        = 0x9\n\tPT_SUSPEND                     = 0x12\n\tPT_SYSCALL                     = 0x16\n\tPT_TO_SCE                      = 0x14\n\tPT_TO_SCX                      = 0x15\n\tPT_TRACE_ME                    = 0x0\n\tPT_VM_ENTRY                    = 0x29\n\tPT_VM_TIMESTAMP                = 0x28\n\tPT_WRITE_D                     = 0x5\n\tPT_WRITE_I                     = 0x4\n\tP_ZONEID                       = 0xc\n\tRLIMIT_AS                      = 0xa\n\tRLIMIT_CORE                    = 0x4\n\tRLIMIT_CPU                     = 0x0\n\tRLIMIT_DATA                    = 0x2\n\tRLIMIT_FSIZE                   = 0x1\n\tRLIMIT_MEMLOCK                 = 0x6\n\tRLIMIT_NOFILE                  = 0x8\n\tRLIMIT_NPROC                   = 0x7\n\tRLIMIT_RSS                     = 0x5\n\tRLIMIT_STACK                   = 0x3\n\tRLIM_INFINITY                  = 0x7fffffffffffffff\n\tRTAX_AUTHOR                    = 0x6\n\tRTAX_BRD                       = 0x7\n\tRTAX_DST                       = 0x0\n\tRTAX_GATEWAY                   = 0x1\n\tRTAX_GENMASK                   = 0x3\n\tRTAX_IFA                       = 0x5\n\tRTAX_IFP                       = 0x4\n\tRTAX_MAX                       = 0x8\n\tRTAX_NETMASK                   = 0x2\n\tRTA_AUTHOR                     = 0x40\n\tRTA_BRD                        = 0x80\n\tRTA_DST                        = 0x1\n\tRTA_GATEWAY                    = 0x2\n\tRTA_GENMASK                    = 0x8\n\tRTA_IFA                        = 0x20\n\tRTA_IFP                        = 0x10\n\tRTA_NETMASK                    = 0x4\n\tRTF_BLACKHOLE                  = 0x1000\n\tRTF_BROADCAST                  = 0x400000\n\tRTF_DONE                       = 0x40\n\tRTF_DYNAMIC                    = 0x10\n\tRTF_FIXEDMTU                   = 0x80000\n\tRTF_FMASK                      = 0x1004d808\n\tRTF_GATEWAY                    = 0x2\n\tRTF_GWFLAG_COMPAT              = 0x80000000\n\tRTF_HOST                       = 0x4\n\tRTF_LLDATA                     = 0x400\n\tRTF_LLINFO                     = 0x400\n\tRTF_LOCAL                      = 0x200000\n\tRTF_MODIFIED                   = 0x20\n\tRTF_MULTICAST                  = 0x800000\n\tRTF_PINNED                     = 0x100000\n\tRTF_PROTO1                     = 0x8000\n\tRTF_PROTO2                     = 0x4000\n\tRTF_PROTO3                     = 0x40000\n\tRTF_REJECT                     = 0x8\n\tRTF_RNH_LOCKED                 = 0x40000000\n\tRTF_STATIC                     = 0x800\n\tRTF_STICKY                     = 0x10000000\n\tRTF_UP                         = 0x1\n\tRTF_XRESOLVE                   = 0x200\n\tRTM_ADD                        = 0x1\n\tRTM_CHANGE                     = 0x3\n\tRTM_DELADDR                    = 0xd\n\tRTM_DELETE                     = 0x2\n\tRTM_DELMADDR                   = 0x10\n\tRTM_GET                        = 0x4\n\tRTM_IEEE80211                  = 0x12\n\tRTM_IFANNOUNCE                 = 0x11\n\tRTM_IFINFO                     = 0xe\n\tRTM_LOCK                       = 0x8\n\tRTM_LOSING                     = 0x5\n\tRTM_MISS                       = 0x7\n\tRTM_NEWADDR                    = 0xc\n\tRTM_NEWMADDR                   = 0xf\n\tRTM_REDIRECT                   = 0x6\n\tRTM_RESOLVE                    = 0xb\n\tRTM_RTTUNIT                    = 0xf4240\n\tRTM_VERSION                    = 0x5\n\tRTV_EXPIRE                     = 0x4\n\tRTV_HOPCOUNT                   = 0x2\n\tRTV_MTU                        = 0x1\n\tRTV_RPIPE                      = 0x8\n\tRTV_RTT                        = 0x40\n\tRTV_RTTVAR                     = 0x80\n\tRTV_SPIPE                      = 0x10\n\tRTV_SSTHRESH                   = 0x20\n\tRTV_WEIGHT                     = 0x100\n\tRT_ALL_FIBS                    = -0x1\n\tRT_BLACKHOLE                   = 0x40\n\tRT_DEFAULT_FIB                 = 0x0\n\tRT_HAS_GW                      = 0x80\n\tRT_HAS_HEADER                  = 0x10\n\tRT_HAS_HEADER_BIT              = 0x4\n\tRT_L2_ME                       = 0x4\n\tRT_L2_ME_BIT                   = 0x2\n\tRT_LLE_CACHE                   = 0x100\n\tRT_MAY_LOOP                    = 0x8\n\tRT_MAY_LOOP_BIT                = 0x3\n\tRT_REJECT                      = 0x20\n\tRUSAGE_CHILDREN                = -0x1\n\tRUSAGE_SELF                    = 0x0\n\tRUSAGE_THREAD                  = 0x1\n\tSCM_BINTIME                    = 0x4\n\tSCM_CREDS                      = 0x3\n\tSCM_MONOTONIC                  = 0x6\n\tSCM_REALTIME                   = 0x5\n\tSCM_RIGHTS                     = 0x1\n\tSCM_TIMESTAMP                  = 0x2\n\tSCM_TIME_INFO                  = 0x7\n\tSEEK_CUR                       = 0x1\n\tSEEK_DATA                      = 0x3\n\tSEEK_END                       = 0x2\n\tSEEK_HOLE                      = 0x4\n\tSEEK_SET                       = 0x0\n\tSHUT_RD                        = 0x0\n\tSHUT_RDWR                      = 0x2\n\tSHUT_WR                        = 0x1\n\tSIOCADDMULTI                   = 0x80206931\n\tSIOCAIFADDR                    = 0x8040691a\n\tSIOCAIFGROUP                   = 0x80246987\n\tSIOCATMARK                     = 0x40047307\n\tSIOCDELMULTI                   = 0x80206932\n\tSIOCDIFADDR                    = 0x80206919\n\tSIOCDIFGROUP                   = 0x80246989\n\tSIOCDIFPHYADDR                 = 0x80206949\n\tSIOCGDRVSPEC                   = 0xc01c697b\n\tSIOCGETSGCNT                   = 0xc0147210\n\tSIOCGETVIFCNT                  = 0xc014720f\n\tSIOCGHIWAT                     = 0x40047301\n\tSIOCGHWADDR                    = 0xc020693e\n\tSIOCGI2C                       = 0xc020693d\n\tSIOCGIFADDR                    = 0xc0206921\n\tSIOCGIFALIAS                   = 0xc044692d\n\tSIOCGIFBRDADDR                 = 0xc0206923\n\tSIOCGIFCAP                     = 0xc020691f\n\tSIOCGIFCONF                    = 0xc0086924\n\tSIOCGIFDESCR                   = 0xc020692a\n\tSIOCGIFDOWNREASON              = 0xc058699a\n\tSIOCGIFDSTADDR                 = 0xc0206922\n\tSIOCGIFFIB                     = 0xc020695c\n\tSIOCGIFFLAGS                   = 0xc0206911\n\tSIOCGIFGENERIC                 = 0xc020693a\n\tSIOCGIFGMEMB                   = 0xc024698a\n\tSIOCGIFGROUP                   = 0xc0246988\n\tSIOCGIFINDEX                   = 0xc0206920\n\tSIOCGIFMAC                     = 0xc0206926\n\tSIOCGIFMEDIA                   = 0xc0286938\n\tSIOCGIFMETRIC                  = 0xc0206917\n\tSIOCGIFMTU                     = 0xc0206933\n\tSIOCGIFNETMASK                 = 0xc0206925\n\tSIOCGIFPDSTADDR                = 0xc0206948\n\tSIOCGIFPHYS                    = 0xc0206935\n\tSIOCGIFPSRCADDR                = 0xc0206947\n\tSIOCGIFRSSHASH                 = 0xc0186997\n\tSIOCGIFRSSKEY                  = 0xc0946996\n\tSIOCGIFSTATUS                  = 0xc331693b\n\tSIOCGIFXMEDIA                  = 0xc028698b\n\tSIOCGLANPCP                    = 0xc0206998\n\tSIOCGLOWAT                     = 0x40047303\n\tSIOCGPGRP                      = 0x40047309\n\tSIOCGPRIVATE_0                 = 0xc0206950\n\tSIOCGPRIVATE_1                 = 0xc0206951\n\tSIOCGTUNFIB                    = 0xc020695e\n\tSIOCIFCREATE                   = 0xc020697a\n\tSIOCIFCREATE2                  = 0xc020697c\n\tSIOCIFDESTROY                  = 0x80206979\n\tSIOCIFGCLONERS                 = 0xc00c6978\n\tSIOCSDRVSPEC                   = 0x801c697b\n\tSIOCSHIWAT                     = 0x80047300\n\tSIOCSIFADDR                    = 0x8020690c\n\tSIOCSIFBRDADDR                 = 0x80206913\n\tSIOCSIFCAP                     = 0x8020691e\n\tSIOCSIFDESCR                   = 0x80206929\n\tSIOCSIFDSTADDR                 = 0x8020690e\n\tSIOCSIFFIB                     = 0x8020695d\n\tSIOCSIFFLAGS                   = 0x80206910\n\tSIOCSIFGENERIC                 = 0x80206939\n\tSIOCSIFLLADDR                  = 0x8020693c\n\tSIOCSIFMAC                     = 0x80206927\n\tSIOCSIFMEDIA                   = 0xc0206937\n\tSIOCSIFMETRIC                  = 0x80206918\n\tSIOCSIFMTU                     = 0x80206934\n\tSIOCSIFNAME                    = 0x80206928\n\tSIOCSIFNETMASK                 = 0x80206916\n\tSIOCSIFPHYADDR                 = 0x80406946\n\tSIOCSIFPHYS                    = 0x80206936\n\tSIOCSIFRVNET                   = 0xc020695b\n\tSIOCSIFVNET                    = 0xc020695a\n\tSIOCSLANPCP                    = 0x80206999\n\tSIOCSLOWAT                     = 0x80047302\n\tSIOCSPGRP                      = 0x80047308\n\tSIOCSTUNFIB                    = 0x8020695f\n\tSOCK_CLOEXEC                   = 0x10000000\n\tSOCK_DGRAM                     = 0x2\n\tSOCK_MAXADDRLEN                = 0xff\n\tSOCK_NONBLOCK                  = 0x20000000\n\tSOCK_RAW                       = 0x3\n\tSOCK_RDM                       = 0x4\n\tSOCK_SEQPACKET                 = 0x5\n\tSOCK_STREAM                    = 0x1\n\tSOL_LOCAL                      = 0x0\n\tSOL_SOCKET                     = 0xffff\n\tSOMAXCONN                      = 0x80\n\tSO_ACCEPTCONN                  = 0x2\n\tSO_ACCEPTFILTER                = 0x1000\n\tSO_BINTIME                     = 0x2000\n\tSO_BROADCAST                   = 0x20\n\tSO_DEBUG                       = 0x1\n\tSO_DOMAIN                      = 0x1019\n\tSO_DONTROUTE                   = 0x10\n\tSO_ERROR                       = 0x1007\n\tSO_KEEPALIVE                   = 0x8\n\tSO_LABEL                       = 0x1009\n\tSO_LINGER                      = 0x80\n\tSO_LISTENINCQLEN               = 0x1013\n\tSO_LISTENQLEN                  = 0x1012\n\tSO_LISTENQLIMIT                = 0x1011\n\tSO_MAX_PACING_RATE             = 0x1018\n\tSO_NOSIGPIPE                   = 0x800\n\tSO_NO_DDP                      = 0x8000\n\tSO_NO_OFFLOAD                  = 0x4000\n\tSO_OOBINLINE                   = 0x100\n\tSO_PEERLABEL                   = 0x1010\n\tSO_PROTOCOL                    = 0x1016\n\tSO_PROTOTYPE                   = 0x1016\n\tSO_RCVBUF                      = 0x1002\n\tSO_RCVLOWAT                    = 0x1004\n\tSO_RCVTIMEO                    = 0x1006\n\tSO_RERROR                      = 0x20000\n\tSO_REUSEADDR                   = 0x4\n\tSO_REUSEPORT                   = 0x200\n\tSO_REUSEPORT_LB                = 0x10000\n\tSO_SETFIB                      = 0x1014\n\tSO_SNDBUF                      = 0x1001\n\tSO_SNDLOWAT                    = 0x1003\n\tSO_SNDTIMEO                    = 0x1005\n\tSO_TIMESTAMP                   = 0x400\n\tSO_TS_BINTIME                  = 0x1\n\tSO_TS_CLOCK                    = 0x1017\n\tSO_TS_CLOCK_MAX                = 0x3\n\tSO_TS_DEFAULT                  = 0x0\n\tSO_TS_MONOTONIC                = 0x3\n\tSO_TS_REALTIME                 = 0x2\n\tSO_TS_REALTIME_MICRO           = 0x0\n\tSO_TYPE                        = 0x1008\n\tSO_USELOOPBACK                 = 0x40\n\tSO_USER_COOKIE                 = 0x1015\n\tSO_VENDOR                      = 0x80000000\n\tS_BLKSIZE                      = 0x200\n\tS_IEXEC                        = 0x40\n\tS_IFBLK                        = 0x6000\n\tS_IFCHR                        = 0x2000\n\tS_IFDIR                        = 0x4000\n\tS_IFIFO                        = 0x1000\n\tS_IFLNK                        = 0xa000\n\tS_IFMT                         = 0xf000\n\tS_IFREG                        = 0x8000\n\tS_IFSOCK                       = 0xc000\n\tS_IFWHT                        = 0xe000\n\tS_IREAD                        = 0x100\n\tS_IRGRP                        = 0x20\n\tS_IROTH                        = 0x4\n\tS_IRUSR                        = 0x100\n\tS_IRWXG                        = 0x38\n\tS_IRWXO                        = 0x7\n\tS_IRWXU                        = 0x1c0\n\tS_ISGID                        = 0x400\n\tS_ISTXT                        = 0x200\n\tS_ISUID                        = 0x800\n\tS_ISVTX                        = 0x200\n\tS_IWGRP                        = 0x10\n\tS_IWOTH                        = 0x2\n\tS_IWRITE                       = 0x80\n\tS_IWUSR                        = 0x80\n\tS_IXGRP                        = 0x8\n\tS_IXOTH                        = 0x1\n\tS_IXUSR                        = 0x40\n\tTAB0                           = 0x0\n\tTAB3                           = 0x4\n\tTABDLY                         = 0x4\n\tTCIFLUSH                       = 0x1\n\tTCIOFF                         = 0x3\n\tTCIOFLUSH                      = 0x3\n\tTCION                          = 0x4\n\tTCOFLUSH                       = 0x2\n\tTCOOFF                         = 0x1\n\tTCOON                          = 0x2\n\tTCPOPT_EOL                     = 0x0\n\tTCPOPT_FAST_OPEN               = 0x22\n\tTCPOPT_MAXSEG                  = 0x2\n\tTCPOPT_NOP                     = 0x1\n\tTCPOPT_PAD                     = 0x0\n\tTCPOPT_SACK                    = 0x5\n\tTCPOPT_SACK_PERMITTED          = 0x4\n\tTCPOPT_SIGNATURE               = 0x13\n\tTCPOPT_TIMESTAMP               = 0x8\n\tTCPOPT_WINDOW                  = 0x3\n\tTCP_BBR_ACK_COMP_ALG           = 0x448\n\tTCP_BBR_ALGORITHM              = 0x43b\n\tTCP_BBR_DRAIN_INC_EXTRA        = 0x43c\n\tTCP_BBR_DRAIN_PG               = 0x42e\n\tTCP_BBR_EXTRA_GAIN             = 0x449\n\tTCP_BBR_EXTRA_STATE            = 0x453\n\tTCP_BBR_FLOOR_MIN_TSO          = 0x454\n\tTCP_BBR_HDWR_PACE              = 0x451\n\tTCP_BBR_HOLD_TARGET            = 0x436\n\tTCP_BBR_IWINTSO                = 0x42b\n\tTCP_BBR_LOWGAIN_FD             = 0x436\n\tTCP_BBR_LOWGAIN_HALF           = 0x435\n\tTCP_BBR_LOWGAIN_THRESH         = 0x434\n\tTCP_BBR_MAX_RTO                = 0x439\n\tTCP_BBR_MIN_RTO                = 0x438\n\tTCP_BBR_MIN_TOPACEOUT          = 0x455\n\tTCP_BBR_ONE_RETRAN             = 0x431\n\tTCP_BBR_PACE_CROSS             = 0x442\n\tTCP_BBR_PACE_DEL_TAR           = 0x43f\n\tTCP_BBR_PACE_OH                = 0x435\n\tTCP_BBR_PACE_PER_SEC           = 0x43e\n\tTCP_BBR_PACE_SEG_MAX           = 0x440\n\tTCP_BBR_PACE_SEG_MIN           = 0x441\n\tTCP_BBR_POLICER_DETECT         = 0x457\n\tTCP_BBR_PROBE_RTT_GAIN         = 0x44d\n\tTCP_BBR_PROBE_RTT_INT          = 0x430\n\tTCP_BBR_PROBE_RTT_LEN          = 0x44e\n\tTCP_BBR_RACK_RTT_USE           = 0x44a\n\tTCP_BBR_RECFORCE               = 0x42c\n\tTCP_BBR_REC_OVER_HPTS          = 0x43a\n\tTCP_BBR_RETRAN_WTSO            = 0x44b\n\tTCP_BBR_RWND_IS_APP            = 0x42f\n\tTCP_BBR_SEND_IWND_IN_TSO       = 0x44f\n\tTCP_BBR_STARTUP_EXIT_EPOCH     = 0x43d\n\tTCP_BBR_STARTUP_LOSS_EXIT      = 0x432\n\tTCP_BBR_STARTUP_PG             = 0x42d\n\tTCP_BBR_TMR_PACE_OH            = 0x448\n\tTCP_BBR_TSLIMITS               = 0x434\n\tTCP_BBR_TSTMP_RAISES           = 0x456\n\tTCP_BBR_UNLIMITED              = 0x43b\n\tTCP_BBR_USEDEL_RATE            = 0x437\n\tTCP_BBR_USE_LOWGAIN            = 0x433\n\tTCP_BBR_USE_RACK_CHEAT         = 0x450\n\tTCP_BBR_UTTER_MAX_TSO          = 0x452\n\tTCP_CA_NAME_MAX                = 0x10\n\tTCP_CCALGOOPT                  = 0x41\n\tTCP_CONGESTION                 = 0x40\n\tTCP_DATA_AFTER_CLOSE           = 0x44c\n\tTCP_DELACK                     = 0x48\n\tTCP_FASTOPEN                   = 0x401\n\tTCP_FASTOPEN_MAX_COOKIE_LEN    = 0x10\n\tTCP_FASTOPEN_MIN_COOKIE_LEN    = 0x4\n\tTCP_FASTOPEN_PSK_LEN           = 0x10\n\tTCP_FUNCTION_BLK               = 0x2000\n\tTCP_FUNCTION_NAME_LEN_MAX      = 0x20\n\tTCP_INFO                       = 0x20\n\tTCP_KEEPCNT                    = 0x400\n\tTCP_KEEPIDLE                   = 0x100\n\tTCP_KEEPINIT                   = 0x80\n\tTCP_KEEPINTVL                  = 0x200\n\tTCP_LOG                        = 0x22\n\tTCP_LOGBUF                     = 0x23\n\tTCP_LOGDUMP                    = 0x25\n\tTCP_LOGDUMPID                  = 0x26\n\tTCP_LOGID                      = 0x24\n\tTCP_LOG_ID_LEN                 = 0x40\n\tTCP_MAXBURST                   = 0x4\n\tTCP_MAXHLEN                    = 0x3c\n\tTCP_MAXOLEN                    = 0x28\n\tTCP_MAXSEG                     = 0x2\n\tTCP_MAXWIN                     = 0xffff\n\tTCP_MAX_SACK                   = 0x4\n\tTCP_MAX_WINSHIFT               = 0xe\n\tTCP_MD5SIG                     = 0x10\n\tTCP_MINMSS                     = 0xd8\n\tTCP_MSS                        = 0x218\n\tTCP_NODELAY                    = 0x1\n\tTCP_NOOPT                      = 0x8\n\tTCP_NOPUSH                     = 0x4\n\tTCP_PCAP_IN                    = 0x1000\n\tTCP_PCAP_OUT                   = 0x800\n\tTCP_RACK_EARLY_RECOV           = 0x423\n\tTCP_RACK_EARLY_SEG             = 0x424\n\tTCP_RACK_GP_INCREASE           = 0x446\n\tTCP_RACK_IDLE_REDUCE_HIGH      = 0x444\n\tTCP_RACK_MIN_PACE              = 0x445\n\tTCP_RACK_MIN_PACE_SEG          = 0x446\n\tTCP_RACK_MIN_TO                = 0x422\n\tTCP_RACK_PACE_ALWAYS           = 0x41f\n\tTCP_RACK_PACE_MAX_SEG          = 0x41e\n\tTCP_RACK_PACE_REDUCE           = 0x41d\n\tTCP_RACK_PKT_DELAY             = 0x428\n\tTCP_RACK_PROP                  = 0x41b\n\tTCP_RACK_PROP_RATE             = 0x420\n\tTCP_RACK_PRR_SENDALOT          = 0x421\n\tTCP_RACK_REORD_FADE            = 0x426\n\tTCP_RACK_REORD_THRESH          = 0x425\n\tTCP_RACK_TLP_INC_VAR           = 0x429\n\tTCP_RACK_TLP_REDUCE            = 0x41c\n\tTCP_RACK_TLP_THRESH            = 0x427\n\tTCP_RACK_TLP_USE               = 0x447\n\tTCP_VENDOR                     = 0x80000000\n\tTCSAFLUSH                      = 0x2\n\tTIMER_ABSTIME                  = 0x1\n\tTIMER_RELTIME                  = 0x0\n\tTIOCCBRK                       = 0x2000747a\n\tTIOCCDTR                       = 0x20007478\n\tTIOCCONS                       = 0x80047462\n\tTIOCDRAIN                      = 0x2000745e\n\tTIOCEXCL                       = 0x2000740d\n\tTIOCEXT                        = 0x80047460\n\tTIOCFLUSH                      = 0x80047410\n\tTIOCGDRAINWAIT                 = 0x40047456\n\tTIOCGETA                       = 0x402c7413\n\tTIOCGETD                       = 0x4004741a\n\tTIOCGPGRP                      = 0x40047477\n\tTIOCGPTN                       = 0x4004740f\n\tTIOCGSID                       = 0x40047463\n\tTIOCGWINSZ                     = 0x40087468\n\tTIOCMBIC                       = 0x8004746b\n\tTIOCMBIS                       = 0x8004746c\n\tTIOCMGDTRWAIT                  = 0x4004745a\n\tTIOCMGET                       = 0x4004746a\n\tTIOCMSDTRWAIT                  = 0x8004745b\n\tTIOCMSET                       = 0x8004746d\n\tTIOCM_CAR                      = 0x40\n\tTIOCM_CD                       = 0x40\n\tTIOCM_CTS                      = 0x20\n\tTIOCM_DCD                      = 0x40\n\tTIOCM_DSR                      = 0x100\n\tTIOCM_DTR                      = 0x2\n\tTIOCM_LE                       = 0x1\n\tTIOCM_RI                       = 0x80\n\tTIOCM_RNG                      = 0x80\n\tTIOCM_RTS                      = 0x4\n\tTIOCM_SR                       = 0x10\n\tTIOCM_ST                       = 0x8\n\tTIOCNOTTY                      = 0x20007471\n\tTIOCNXCL                       = 0x2000740e\n\tTIOCOUTQ                       = 0x40047473\n\tTIOCPKT                        = 0x80047470\n\tTIOCPKT_DATA                   = 0x0\n\tTIOCPKT_DOSTOP                 = 0x20\n\tTIOCPKT_FLUSHREAD              = 0x1\n\tTIOCPKT_FLUSHWRITE             = 0x2\n\tTIOCPKT_IOCTL                  = 0x40\n\tTIOCPKT_NOSTOP                 = 0x10\n\tTIOCPKT_START                  = 0x8\n\tTIOCPKT_STOP                   = 0x4\n\tTIOCPTMASTER                   = 0x2000741c\n\tTIOCSBRK                       = 0x2000747b\n\tTIOCSCTTY                      = 0x20007461\n\tTIOCSDRAINWAIT                 = 0x80047457\n\tTIOCSDTR                       = 0x20007479\n\tTIOCSETA                       = 0x802c7414\n\tTIOCSETAF                      = 0x802c7416\n\tTIOCSETAW                      = 0x802c7415\n\tTIOCSETD                       = 0x8004741b\n\tTIOCSIG                        = 0x2004745f\n\tTIOCSPGRP                      = 0x80047476\n\tTIOCSTART                      = 0x2000746e\n\tTIOCSTAT                       = 0x20007465\n\tTIOCSTI                        = 0x80017472\n\tTIOCSTOP                       = 0x2000746f\n\tTIOCSWINSZ                     = 0x80087467\n\tTIOCTIMESTAMP                  = 0x40107459\n\tTIOCUCNTL                      = 0x80047466\n\tTOSTOP                         = 0x400000\n\tUTIME_NOW                      = -0x1\n\tUTIME_OMIT                     = -0x2\n\tVDISCARD                       = 0xf\n\tVDSUSP                         = 0xb\n\tVEOF                           = 0x0\n\tVEOL                           = 0x1\n\tVEOL2                          = 0x2\n\tVERASE                         = 0x3\n\tVERASE2                        = 0x7\n\tVINTR                          = 0x8\n\tVKILL                          = 0x5\n\tVLNEXT                         = 0xe\n\tVMIN                           = 0x10\n\tVQUIT                          = 0x9\n\tVREPRINT                       = 0x6\n\tVSTART                         = 0xc\n\tVSTATUS                        = 0x12\n\tVSTOP                          = 0xd\n\tVSUSP                          = 0xa\n\tVTIME                          = 0x11\n\tVWERASE                        = 0x4\n\tWCONTINUED                     = 0x4\n\tWCOREFLAG                      = 0x80\n\tWEXITED                        = 0x10\n\tWLINUXCLONE                    = 0x80000000\n\tWNOHANG                        = 0x1\n\tWNOWAIT                        = 0x8\n\tWSTOPPED                       = 0x2\n\tWTRAPPED                       = 0x20\n\tWUNTRACED                      = 0x2\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x59)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x55)\n\tECAPMODE        = syscall.Errno(0x5e)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDOOFUS         = syscall.Errno(0x58)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x52)\n\tEILSEQ          = syscall.Errno(0x56)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTEGRITY      = syscall.Errno(0x61)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x61)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5a)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x57)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x5b)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x53)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCAPABLE     = syscall.Errno(0x5d)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5f)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x2d)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEOWNERDEAD      = syscall.Errno(0x60)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5c)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGLIBRT  = syscall.Signal(0x21)\n\tSIGLWP    = syscall.Signal(0x20)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EWOULDBLOCK\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIDRM\", \"identifier removed\"},\n\t{83, \"ENOMSG\", \"no message of desired type\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"ECANCELED\", \"operation canceled\"},\n\t{86, \"EILSEQ\", \"illegal byte sequence\"},\n\t{87, \"ENOATTR\", \"attribute not found\"},\n\t{88, \"EDOOFUS\", \"programming error\"},\n\t{89, \"EBADMSG\", \"bad message\"},\n\t{90, \"EMULTIHOP\", \"multihop attempted\"},\n\t{91, \"ENOLINK\", \"link has been severed\"},\n\t{92, \"EPROTO\", \"protocol error\"},\n\t{93, \"ENOTCAPABLE\", \"capabilities insufficient\"},\n\t{94, \"ECAPMODE\", \"not permitted in capability mode\"},\n\t{95, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{96, \"EOWNERDEAD\", \"previous owner died\"},\n\t{97, \"EINTEGRITY\", \"integrity check failed\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"unknown signal\"},\n\t{33, \"SIGLIBRT\", \"unknown signal\"},\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && freebsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                   = 0x10\n\tAF_ARP                         = 0x23\n\tAF_ATM                         = 0x1e\n\tAF_BLUETOOTH                   = 0x24\n\tAF_CCITT                       = 0xa\n\tAF_CHAOS                       = 0x5\n\tAF_CNT                         = 0x15\n\tAF_COIP                        = 0x14\n\tAF_DATAKIT                     = 0x9\n\tAF_DECnet                      = 0xc\n\tAF_DLI                         = 0xd\n\tAF_E164                        = 0x1a\n\tAF_ECMA                        = 0x8\n\tAF_HYLINK                      = 0xf\n\tAF_IEEE80211                   = 0x25\n\tAF_IMPLINK                     = 0x3\n\tAF_INET                        = 0x2\n\tAF_INET6                       = 0x1c\n\tAF_INET6_SDP                   = 0x2a\n\tAF_INET_SDP                    = 0x28\n\tAF_IPX                         = 0x17\n\tAF_ISDN                        = 0x1a\n\tAF_ISO                         = 0x7\n\tAF_LAT                         = 0xe\n\tAF_LINK                        = 0x12\n\tAF_LOCAL                       = 0x1\n\tAF_MAX                         = 0x2a\n\tAF_NATM                        = 0x1d\n\tAF_NETBIOS                     = 0x6\n\tAF_NETGRAPH                    = 0x20\n\tAF_OSI                         = 0x7\n\tAF_PUP                         = 0x4\n\tAF_ROUTE                       = 0x11\n\tAF_SCLUSTER                    = 0x22\n\tAF_SIP                         = 0x18\n\tAF_SLOW                        = 0x21\n\tAF_SNA                         = 0xb\n\tAF_UNIX                        = 0x1\n\tAF_UNSPEC                      = 0x0\n\tAF_VENDOR00                    = 0x27\n\tAF_VENDOR01                    = 0x29\n\tAF_VENDOR02                    = 0x2b\n\tAF_VENDOR03                    = 0x2d\n\tAF_VENDOR04                    = 0x2f\n\tAF_VENDOR05                    = 0x31\n\tAF_VENDOR06                    = 0x33\n\tAF_VENDOR07                    = 0x35\n\tAF_VENDOR08                    = 0x37\n\tAF_VENDOR09                    = 0x39\n\tAF_VENDOR10                    = 0x3b\n\tAF_VENDOR11                    = 0x3d\n\tAF_VENDOR12                    = 0x3f\n\tAF_VENDOR13                    = 0x41\n\tAF_VENDOR14                    = 0x43\n\tAF_VENDOR15                    = 0x45\n\tAF_VENDOR16                    = 0x47\n\tAF_VENDOR17                    = 0x49\n\tAF_VENDOR18                    = 0x4b\n\tAF_VENDOR19                    = 0x4d\n\tAF_VENDOR20                    = 0x4f\n\tAF_VENDOR21                    = 0x51\n\tAF_VENDOR22                    = 0x53\n\tAF_VENDOR23                    = 0x55\n\tAF_VENDOR24                    = 0x57\n\tAF_VENDOR25                    = 0x59\n\tAF_VENDOR26                    = 0x5b\n\tAF_VENDOR27                    = 0x5d\n\tAF_VENDOR28                    = 0x5f\n\tAF_VENDOR29                    = 0x61\n\tAF_VENDOR30                    = 0x63\n\tAF_VENDOR31                    = 0x65\n\tAF_VENDOR32                    = 0x67\n\tAF_VENDOR33                    = 0x69\n\tAF_VENDOR34                    = 0x6b\n\tAF_VENDOR35                    = 0x6d\n\tAF_VENDOR36                    = 0x6f\n\tAF_VENDOR37                    = 0x71\n\tAF_VENDOR38                    = 0x73\n\tAF_VENDOR39                    = 0x75\n\tAF_VENDOR40                    = 0x77\n\tAF_VENDOR41                    = 0x79\n\tAF_VENDOR42                    = 0x7b\n\tAF_VENDOR43                    = 0x7d\n\tAF_VENDOR44                    = 0x7f\n\tAF_VENDOR45                    = 0x81\n\tAF_VENDOR46                    = 0x83\n\tAF_VENDOR47                    = 0x85\n\tALTWERASE                      = 0x200\n\tB0                             = 0x0\n\tB110                           = 0x6e\n\tB115200                        = 0x1c200\n\tB1200                          = 0x4b0\n\tB134                           = 0x86\n\tB14400                         = 0x3840\n\tB150                           = 0x96\n\tB1800                          = 0x708\n\tB19200                         = 0x4b00\n\tB200                           = 0xc8\n\tB230400                        = 0x38400\n\tB2400                          = 0x960\n\tB28800                         = 0x7080\n\tB300                           = 0x12c\n\tB38400                         = 0x9600\n\tB460800                        = 0x70800\n\tB4800                          = 0x12c0\n\tB50                            = 0x32\n\tB57600                         = 0xe100\n\tB600                           = 0x258\n\tB7200                          = 0x1c20\n\tB75                            = 0x4b\n\tB76800                         = 0x12c00\n\tB921600                        = 0xe1000\n\tB9600                          = 0x2580\n\tBIOCFEEDBACK                   = 0x8004427c\n\tBIOCFLUSH                      = 0x20004268\n\tBIOCGBLEN                      = 0x40044266\n\tBIOCGDIRECTION                 = 0x40044276\n\tBIOCGDLT                       = 0x4004426a\n\tBIOCGDLTLIST                   = 0xc0104279\n\tBIOCGETBUFMODE                 = 0x4004427d\n\tBIOCGETIF                      = 0x4020426b\n\tBIOCGETZMAX                    = 0x4008427f\n\tBIOCGHDRCMPLT                  = 0x40044274\n\tBIOCGRSIG                      = 0x40044272\n\tBIOCGRTIMEOUT                  = 0x4010426e\n\tBIOCGSEESENT                   = 0x40044276\n\tBIOCGSTATS                     = 0x4008426f\n\tBIOCGTSTAMP                    = 0x40044283\n\tBIOCIMMEDIATE                  = 0x80044270\n\tBIOCLOCK                       = 0x2000427a\n\tBIOCPROMISC                    = 0x20004269\n\tBIOCROTZBUF                    = 0x40184280\n\tBIOCSBLEN                      = 0xc0044266\n\tBIOCSDIRECTION                 = 0x80044277\n\tBIOCSDLT                       = 0x80044278\n\tBIOCSETBUFMODE                 = 0x8004427e\n\tBIOCSETF                       = 0x80104267\n\tBIOCSETFNR                     = 0x80104282\n\tBIOCSETIF                      = 0x8020426c\n\tBIOCSETVLANPCP                 = 0x80044285\n\tBIOCSETWF                      = 0x8010427b\n\tBIOCSETZBUF                    = 0x80184281\n\tBIOCSHDRCMPLT                  = 0x80044275\n\tBIOCSRSIG                      = 0x80044273\n\tBIOCSRTIMEOUT                  = 0x8010426d\n\tBIOCSSEESENT                   = 0x80044277\n\tBIOCSTSTAMP                    = 0x80044284\n\tBIOCVERSION                    = 0x40044271\n\tBPF_A                          = 0x10\n\tBPF_ABS                        = 0x20\n\tBPF_ADD                        = 0x0\n\tBPF_ALIGNMENT                  = 0x8\n\tBPF_ALU                        = 0x4\n\tBPF_AND                        = 0x50\n\tBPF_B                          = 0x10\n\tBPF_BUFMODE_BUFFER             = 0x1\n\tBPF_BUFMODE_ZBUF               = 0x2\n\tBPF_DIV                        = 0x30\n\tBPF_H                          = 0x8\n\tBPF_IMM                        = 0x0\n\tBPF_IND                        = 0x40\n\tBPF_JA                         = 0x0\n\tBPF_JEQ                        = 0x10\n\tBPF_JGE                        = 0x30\n\tBPF_JGT                        = 0x20\n\tBPF_JMP                        = 0x5\n\tBPF_JSET                       = 0x40\n\tBPF_K                          = 0x0\n\tBPF_LD                         = 0x0\n\tBPF_LDX                        = 0x1\n\tBPF_LEN                        = 0x80\n\tBPF_LSH                        = 0x60\n\tBPF_MAJOR_VERSION              = 0x1\n\tBPF_MAXBUFSIZE                 = 0x80000\n\tBPF_MAXINSNS                   = 0x200\n\tBPF_MEM                        = 0x60\n\tBPF_MEMWORDS                   = 0x10\n\tBPF_MINBUFSIZE                 = 0x20\n\tBPF_MINOR_VERSION              = 0x1\n\tBPF_MISC                       = 0x7\n\tBPF_MOD                        = 0x90\n\tBPF_MSH                        = 0xa0\n\tBPF_MUL                        = 0x20\n\tBPF_NEG                        = 0x80\n\tBPF_OR                         = 0x40\n\tBPF_RELEASE                    = 0x30bb6\n\tBPF_RET                        = 0x6\n\tBPF_RSH                        = 0x70\n\tBPF_ST                         = 0x2\n\tBPF_STX                        = 0x3\n\tBPF_SUB                        = 0x10\n\tBPF_TAX                        = 0x0\n\tBPF_TXA                        = 0x80\n\tBPF_T_BINTIME                  = 0x2\n\tBPF_T_BINTIME_FAST             = 0x102\n\tBPF_T_BINTIME_MONOTONIC        = 0x202\n\tBPF_T_BINTIME_MONOTONIC_FAST   = 0x302\n\tBPF_T_FAST                     = 0x100\n\tBPF_T_FLAG_MASK                = 0x300\n\tBPF_T_FORMAT_MASK              = 0x3\n\tBPF_T_MICROTIME                = 0x0\n\tBPF_T_MICROTIME_FAST           = 0x100\n\tBPF_T_MICROTIME_MONOTONIC      = 0x200\n\tBPF_T_MICROTIME_MONOTONIC_FAST = 0x300\n\tBPF_T_MONOTONIC                = 0x200\n\tBPF_T_MONOTONIC_FAST           = 0x300\n\tBPF_T_NANOTIME                 = 0x1\n\tBPF_T_NANOTIME_FAST            = 0x101\n\tBPF_T_NANOTIME_MONOTONIC       = 0x201\n\tBPF_T_NANOTIME_MONOTONIC_FAST  = 0x301\n\tBPF_T_NONE                     = 0x3\n\tBPF_T_NORMAL                   = 0x0\n\tBPF_W                          = 0x0\n\tBPF_X                          = 0x8\n\tBPF_XOR                        = 0xa0\n\tBRKINT                         = 0x2\n\tCAP_ACCEPT                     = 0x200000020000000\n\tCAP_ACL_CHECK                  = 0x400000000010000\n\tCAP_ACL_DELETE                 = 0x400000000020000\n\tCAP_ACL_GET                    = 0x400000000040000\n\tCAP_ACL_SET                    = 0x400000000080000\n\tCAP_ALL0                       = 0x20007ffffffffff\n\tCAP_ALL1                       = 0x4000000001fffff\n\tCAP_BIND                       = 0x200000040000000\n\tCAP_BINDAT                     = 0x200008000000400\n\tCAP_CHFLAGSAT                  = 0x200000000001400\n\tCAP_CONNECT                    = 0x200000080000000\n\tCAP_CONNECTAT                  = 0x200010000000400\n\tCAP_CREATE                     = 0x200000000000040\n\tCAP_EVENT                      = 0x400000000000020\n\tCAP_EXTATTR_DELETE             = 0x400000000001000\n\tCAP_EXTATTR_GET                = 0x400000000002000\n\tCAP_EXTATTR_LIST               = 0x400000000004000\n\tCAP_EXTATTR_SET                = 0x400000000008000\n\tCAP_FCHDIR                     = 0x200000000000800\n\tCAP_FCHFLAGS                   = 0x200000000001000\n\tCAP_FCHMOD                     = 0x200000000002000\n\tCAP_FCHMODAT                   = 0x200000000002400\n\tCAP_FCHOWN                     = 0x200000000004000\n\tCAP_FCHOWNAT                   = 0x200000000004400\n\tCAP_FCNTL                      = 0x200000000008000\n\tCAP_FCNTL_ALL                  = 0x78\n\tCAP_FCNTL_GETFL                = 0x8\n\tCAP_FCNTL_GETOWN               = 0x20\n\tCAP_FCNTL_SETFL                = 0x10\n\tCAP_FCNTL_SETOWN               = 0x40\n\tCAP_FEXECVE                    = 0x200000000000080\n\tCAP_FLOCK                      = 0x200000000010000\n\tCAP_FPATHCONF                  = 0x200000000020000\n\tCAP_FSCK                       = 0x200000000040000\n\tCAP_FSTAT                      = 0x200000000080000\n\tCAP_FSTATAT                    = 0x200000000080400\n\tCAP_FSTATFS                    = 0x200000000100000\n\tCAP_FSYNC                      = 0x200000000000100\n\tCAP_FTRUNCATE                  = 0x200000000000200\n\tCAP_FUTIMES                    = 0x200000000200000\n\tCAP_FUTIMESAT                  = 0x200000000200400\n\tCAP_GETPEERNAME                = 0x200000100000000\n\tCAP_GETSOCKNAME                = 0x200000200000000\n\tCAP_GETSOCKOPT                 = 0x200000400000000\n\tCAP_IOCTL                      = 0x400000000000080\n\tCAP_IOCTLS_ALL                 = 0x7fffffffffffffff\n\tCAP_KQUEUE                     = 0x400000000100040\n\tCAP_KQUEUE_CHANGE              = 0x400000000100000\n\tCAP_KQUEUE_EVENT               = 0x400000000000040\n\tCAP_LINKAT_SOURCE              = 0x200020000000400\n\tCAP_LINKAT_TARGET              = 0x200000000400400\n\tCAP_LISTEN                     = 0x200000800000000\n\tCAP_LOOKUP                     = 0x200000000000400\n\tCAP_MAC_GET                    = 0x400000000000001\n\tCAP_MAC_SET                    = 0x400000000000002\n\tCAP_MKDIRAT                    = 0x200000000800400\n\tCAP_MKFIFOAT                   = 0x200000001000400\n\tCAP_MKNODAT                    = 0x200000002000400\n\tCAP_MMAP                       = 0x200000000000010\n\tCAP_MMAP_R                     = 0x20000000000001d\n\tCAP_MMAP_RW                    = 0x20000000000001f\n\tCAP_MMAP_RWX                   = 0x20000000000003f\n\tCAP_MMAP_RX                    = 0x20000000000003d\n\tCAP_MMAP_W                     = 0x20000000000001e\n\tCAP_MMAP_WX                    = 0x20000000000003e\n\tCAP_MMAP_X                     = 0x20000000000003c\n\tCAP_PDGETPID                   = 0x400000000000200\n\tCAP_PDKILL                     = 0x400000000000800\n\tCAP_PDWAIT                     = 0x400000000000400\n\tCAP_PEELOFF                    = 0x200001000000000\n\tCAP_POLL_EVENT                 = 0x400000000000020\n\tCAP_PREAD                      = 0x20000000000000d\n\tCAP_PWRITE                     = 0x20000000000000e\n\tCAP_READ                       = 0x200000000000001\n\tCAP_RECV                       = 0x200000000000001\n\tCAP_RENAMEAT_SOURCE            = 0x200000004000400\n\tCAP_RENAMEAT_TARGET            = 0x200040000000400\n\tCAP_RIGHTS_VERSION             = 0x0\n\tCAP_RIGHTS_VERSION_00          = 0x0\n\tCAP_SEEK                       = 0x20000000000000c\n\tCAP_SEEK_TELL                  = 0x200000000000004\n\tCAP_SEM_GETVALUE               = 0x400000000000004\n\tCAP_SEM_POST                   = 0x400000000000008\n\tCAP_SEM_WAIT                   = 0x400000000000010\n\tCAP_SEND                       = 0x200000000000002\n\tCAP_SETSOCKOPT                 = 0x200002000000000\n\tCAP_SHUTDOWN                   = 0x200004000000000\n\tCAP_SOCK_CLIENT                = 0x200007780000003\n\tCAP_SOCK_SERVER                = 0x200007f60000003\n\tCAP_SYMLINKAT                  = 0x200000008000400\n\tCAP_TTYHOOK                    = 0x400000000000100\n\tCAP_UNLINKAT                   = 0x200000010000400\n\tCAP_UNUSED0_44                 = 0x200080000000000\n\tCAP_UNUSED0_57                 = 0x300000000000000\n\tCAP_UNUSED1_22                 = 0x400000000200000\n\tCAP_UNUSED1_57                 = 0x500000000000000\n\tCAP_WRITE                      = 0x200000000000002\n\tCFLUSH                         = 0xf\n\tCLOCAL                         = 0x8000\n\tCLOCK_MONOTONIC                = 0x4\n\tCLOCK_MONOTONIC_FAST           = 0xc\n\tCLOCK_MONOTONIC_PRECISE        = 0xb\n\tCLOCK_PROCESS_CPUTIME_ID       = 0xf\n\tCLOCK_PROF                     = 0x2\n\tCLOCK_REALTIME                 = 0x0\n\tCLOCK_REALTIME_FAST            = 0xa\n\tCLOCK_REALTIME_PRECISE         = 0x9\n\tCLOCK_SECOND                   = 0xd\n\tCLOCK_THREAD_CPUTIME_ID        = 0xe\n\tCLOCK_UPTIME                   = 0x5\n\tCLOCK_UPTIME_FAST              = 0x8\n\tCLOCK_UPTIME_PRECISE           = 0x7\n\tCLOCK_VIRTUAL                  = 0x1\n\tCPUSTATES                      = 0x5\n\tCP_IDLE                        = 0x4\n\tCP_INTR                        = 0x3\n\tCP_NICE                        = 0x1\n\tCP_SYS                         = 0x2\n\tCP_USER                        = 0x0\n\tCREAD                          = 0x800\n\tCRTSCTS                        = 0x30000\n\tCS5                            = 0x0\n\tCS6                            = 0x100\n\tCS7                            = 0x200\n\tCS8                            = 0x300\n\tCSIZE                          = 0x300\n\tCSTART                         = 0x11\n\tCSTATUS                        = 0x14\n\tCSTOP                          = 0x13\n\tCSTOPB                         = 0x400\n\tCSUSP                          = 0x1a\n\tCTL_HW                         = 0x6\n\tCTL_KERN                       = 0x1\n\tCTL_MAXNAME                    = 0x18\n\tCTL_NET                        = 0x4\n\tDIOCGATTR                      = 0xc148648e\n\tDIOCGDELETE                    = 0x80106488\n\tDIOCGFLUSH                     = 0x20006487\n\tDIOCGFRONTSTUFF                = 0x40086486\n\tDIOCGFWHEADS                   = 0x40046483\n\tDIOCGFWSECTORS                 = 0x40046482\n\tDIOCGIDENT                     = 0x41006489\n\tDIOCGMEDIASIZE                 = 0x40086481\n\tDIOCGPHYSPATH                  = 0x4400648d\n\tDIOCGPROVIDERNAME              = 0x4400648a\n\tDIOCGSECTORSIZE                = 0x40046480\n\tDIOCGSTRIPEOFFSET              = 0x4008648c\n\tDIOCGSTRIPESIZE                = 0x4008648b\n\tDIOCSKERNELDUMP                = 0x80506490\n\tDIOCSKERNELDUMP_FREEBSD11      = 0x80046485\n\tDIOCZONECMD                    = 0xc080648f\n\tDLT_A429                       = 0xb8\n\tDLT_A653_ICM                   = 0xb9\n\tDLT_AIRONET_HEADER             = 0x78\n\tDLT_AOS                        = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394     = 0x8a\n\tDLT_ARCNET                     = 0x7\n\tDLT_ARCNET_LINUX               = 0x81\n\tDLT_ATM_CLIP                   = 0x13\n\tDLT_ATM_RFC1483                = 0xb\n\tDLT_AURORA                     = 0x7e\n\tDLT_AX25                       = 0x3\n\tDLT_AX25_KISS                  = 0xca\n\tDLT_BACNET_MS_TP               = 0xa5\n\tDLT_BLUETOOTH_BREDR_BB         = 0xff\n\tDLT_BLUETOOTH_HCI_H4           = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9\n\tDLT_BLUETOOTH_LE_LL            = 0xfb\n\tDLT_BLUETOOTH_LE_LL_WITH_PHDR  = 0x100\n\tDLT_BLUETOOTH_LINUX_MONITOR    = 0xfe\n\tDLT_CAN20B                     = 0xbe\n\tDLT_CAN_SOCKETCAN              = 0xe3\n\tDLT_CHAOS                      = 0x5\n\tDLT_CHDLC                      = 0x68\n\tDLT_CISCO_IOS                  = 0x76\n\tDLT_CLASS_NETBSD_RAWAF         = 0x2240000\n\tDLT_C_HDLC                     = 0x68\n\tDLT_C_HDLC_WITH_DIR            = 0xcd\n\tDLT_DBUS                       = 0xe7\n\tDLT_DECT                       = 0xdd\n\tDLT_DISPLAYPORT_AUX            = 0x113\n\tDLT_DOCSIS                     = 0x8f\n\tDLT_DOCSIS31_XRA31             = 0x111\n\tDLT_DVB_CI                     = 0xeb\n\tDLT_ECONET                     = 0x73\n\tDLT_EN10MB                     = 0x1\n\tDLT_EN3MB                      = 0x2\n\tDLT_ENC                        = 0x6d\n\tDLT_EPON                       = 0x103\n\tDLT_ERF                        = 0xc5\n\tDLT_ERF_ETH                    = 0xaf\n\tDLT_ERF_POS                    = 0xb0\n\tDLT_ETHERNET_MPACKET           = 0x112\n\tDLT_FC_2                       = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS     = 0xe1\n\tDLT_FDDI                       = 0xa\n\tDLT_FLEXRAY                    = 0xd2\n\tDLT_FRELAY                     = 0x6b\n\tDLT_FRELAY_WITH_DIR            = 0xce\n\tDLT_GCOM_SERIAL                = 0xad\n\tDLT_GCOM_T1E1                  = 0xac\n\tDLT_GPF_F                      = 0xab\n\tDLT_GPF_T                      = 0xaa\n\tDLT_GPRS_LLC                   = 0xa9\n\tDLT_GSMTAP_ABIS                = 0xda\n\tDLT_GSMTAP_UM                  = 0xd9\n\tDLT_IBM_SN                     = 0x92\n\tDLT_IBM_SP                     = 0x91\n\tDLT_IEEE802                    = 0x6\n\tDLT_IEEE802_11                 = 0x69\n\tDLT_IEEE802_11_RADIO           = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS       = 0xa3\n\tDLT_IEEE802_15_4               = 0xc3\n\tDLT_IEEE802_15_4_LINUX         = 0xbf\n\tDLT_IEEE802_15_4_NOFCS         = 0xe6\n\tDLT_IEEE802_15_4_NONASK_PHY    = 0xd7\n\tDLT_IEEE802_16_MAC_CPS         = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO   = 0xc1\n\tDLT_INFINIBAND                 = 0xf7\n\tDLT_IPFILTER                   = 0x74\n\tDLT_IPMB_KONTRON               = 0xc7\n\tDLT_IPMB_LINUX                 = 0xd1\n\tDLT_IPMI_HPM_2                 = 0x104\n\tDLT_IPNET                      = 0xe2\n\tDLT_IPOIB                      = 0xf2\n\tDLT_IPV4                       = 0xe4\n\tDLT_IPV6                       = 0xe5\n\tDLT_IP_OVER_FC                 = 0x7a\n\tDLT_ISO_14443                  = 0x108\n\tDLT_JUNIPER_ATM1               = 0x89\n\tDLT_JUNIPER_ATM2               = 0x87\n\tDLT_JUNIPER_ATM_CEMIC          = 0xee\n\tDLT_JUNIPER_CHDLC              = 0xb5\n\tDLT_JUNIPER_ES                 = 0x84\n\tDLT_JUNIPER_ETHER              = 0xb2\n\tDLT_JUNIPER_FIBRECHANNEL       = 0xea\n\tDLT_JUNIPER_FRELAY             = 0xb4\n\tDLT_JUNIPER_GGSN               = 0x85\n\tDLT_JUNIPER_ISM                = 0xc2\n\tDLT_JUNIPER_MFR                = 0x86\n\tDLT_JUNIPER_MLFR               = 0x83\n\tDLT_JUNIPER_MLPPP              = 0x82\n\tDLT_JUNIPER_MONITOR            = 0xa4\n\tDLT_JUNIPER_PIC_PEER           = 0xae\n\tDLT_JUNIPER_PPP                = 0xb3\n\tDLT_JUNIPER_PPPOE              = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM          = 0xa8\n\tDLT_JUNIPER_SERVICES           = 0x88\n\tDLT_JUNIPER_SRX_E2E            = 0xe9\n\tDLT_JUNIPER_ST                 = 0xc8\n\tDLT_JUNIPER_VP                 = 0xb7\n\tDLT_JUNIPER_VS                 = 0xe8\n\tDLT_LAPB_WITH_DIR              = 0xcf\n\tDLT_LAPD                       = 0xcb\n\tDLT_LIN                        = 0xd4\n\tDLT_LINUX_EVDEV                = 0xd8\n\tDLT_LINUX_IRDA                 = 0x90\n\tDLT_LINUX_LAPD                 = 0xb1\n\tDLT_LINUX_PPP_WITHDIRECTION    = 0xa6\n\tDLT_LINUX_SLL                  = 0x71\n\tDLT_LINUX_SLL2                 = 0x114\n\tDLT_LOOP                       = 0x6c\n\tDLT_LORATAP                    = 0x10e\n\tDLT_LTALK                      = 0x72\n\tDLT_MATCHING_MAX               = 0x114\n\tDLT_MATCHING_MIN               = 0x68\n\tDLT_MFR                        = 0xb6\n\tDLT_MOST                       = 0xd3\n\tDLT_MPEG_2_TS                  = 0xf3\n\tDLT_MPLS                       = 0xdb\n\tDLT_MTP2                       = 0x8c\n\tDLT_MTP2_WITH_PHDR             = 0x8b\n\tDLT_MTP3                       = 0x8d\n\tDLT_MUX27010                   = 0xec\n\tDLT_NETANALYZER                = 0xf0\n\tDLT_NETANALYZER_TRANSPARENT    = 0xf1\n\tDLT_NETLINK                    = 0xfd\n\tDLT_NFC_LLCP                   = 0xf5\n\tDLT_NFLOG                      = 0xef\n\tDLT_NG40                       = 0xf4\n\tDLT_NORDIC_BLE                 = 0x110\n\tDLT_NULL                       = 0x0\n\tDLT_OPENFLOW                   = 0x10b\n\tDLT_PCI_EXP                    = 0x7d\n\tDLT_PFLOG                      = 0x75\n\tDLT_PFSYNC                     = 0x79\n\tDLT_PKTAP                      = 0x102\n\tDLT_PPI                        = 0xc0\n\tDLT_PPP                        = 0x9\n\tDLT_PPP_BSDOS                  = 0xe\n\tDLT_PPP_ETHER                  = 0x33\n\tDLT_PPP_PPPD                   = 0xa6\n\tDLT_PPP_SERIAL                 = 0x32\n\tDLT_PPP_WITH_DIR               = 0xcc\n\tDLT_PPP_WITH_DIRECTION         = 0xa6\n\tDLT_PRISM_HEADER               = 0x77\n\tDLT_PROFIBUS_DL                = 0x101\n\tDLT_PRONET                     = 0x4\n\tDLT_RAIF1                      = 0xc6\n\tDLT_RAW                        = 0xc\n\tDLT_RDS                        = 0x109\n\tDLT_REDBACK_SMARTEDGE          = 0x20\n\tDLT_RIO                        = 0x7c\n\tDLT_RTAC_SERIAL                = 0xfa\n\tDLT_SCCP                       = 0x8e\n\tDLT_SCTP                       = 0xf8\n\tDLT_SDLC                       = 0x10c\n\tDLT_SITA                       = 0xc4\n\tDLT_SLIP                       = 0x8\n\tDLT_SLIP_BSDOS                 = 0xd\n\tDLT_STANAG_5066_D_PDU          = 0xed\n\tDLT_SUNATM                     = 0x7b\n\tDLT_SYMANTEC_FIREWALL          = 0x63\n\tDLT_TI_LLN_SNIFFER             = 0x10d\n\tDLT_TZSP                       = 0x80\n\tDLT_USB                        = 0xba\n\tDLT_USBPCAP                    = 0xf9\n\tDLT_USB_DARWIN                 = 0x10a\n\tDLT_USB_FREEBSD                = 0xba\n\tDLT_USB_LINUX                  = 0xbd\n\tDLT_USB_LINUX_MMAPPED          = 0xdc\n\tDLT_USER0                      = 0x93\n\tDLT_USER1                      = 0x94\n\tDLT_USER10                     = 0x9d\n\tDLT_USER11                     = 0x9e\n\tDLT_USER12                     = 0x9f\n\tDLT_USER13                     = 0xa0\n\tDLT_USER14                     = 0xa1\n\tDLT_USER15                     = 0xa2\n\tDLT_USER2                      = 0x95\n\tDLT_USER3                      = 0x96\n\tDLT_USER4                      = 0x97\n\tDLT_USER5                      = 0x98\n\tDLT_USER6                      = 0x99\n\tDLT_USER7                      = 0x9a\n\tDLT_USER8                      = 0x9b\n\tDLT_USER9                      = 0x9c\n\tDLT_VSOCK                      = 0x10f\n\tDLT_WATTSTOPPER_DLM            = 0x107\n\tDLT_WIHART                     = 0xdf\n\tDLT_WIRESHARK_UPPER_PDU        = 0xfc\n\tDLT_X2E_SERIAL                 = 0xd5\n\tDLT_X2E_XORAYA                 = 0xd6\n\tDLT_ZWAVE_R1_R2                = 0x105\n\tDLT_ZWAVE_R3                   = 0x106\n\tDT_BLK                         = 0x6\n\tDT_CHR                         = 0x2\n\tDT_DIR                         = 0x4\n\tDT_FIFO                        = 0x1\n\tDT_LNK                         = 0xa\n\tDT_REG                         = 0x8\n\tDT_SOCK                        = 0xc\n\tDT_UNKNOWN                     = 0x0\n\tDT_WHT                         = 0xe\n\tECHO                           = 0x8\n\tECHOCTL                        = 0x40\n\tECHOE                          = 0x2\n\tECHOK                          = 0x4\n\tECHOKE                         = 0x1\n\tECHONL                         = 0x10\n\tECHOPRT                        = 0x20\n\tEVFILT_AIO                     = -0x3\n\tEVFILT_EMPTY                   = -0xd\n\tEVFILT_FS                      = -0x9\n\tEVFILT_LIO                     = -0xa\n\tEVFILT_PROC                    = -0x5\n\tEVFILT_PROCDESC                = -0x8\n\tEVFILT_READ                    = -0x1\n\tEVFILT_SENDFILE                = -0xc\n\tEVFILT_SIGNAL                  = -0x6\n\tEVFILT_SYSCOUNT                = 0xd\n\tEVFILT_TIMER                   = -0x7\n\tEVFILT_USER                    = -0xb\n\tEVFILT_VNODE                   = -0x4\n\tEVFILT_WRITE                   = -0x2\n\tEVNAMEMAP_NAME_SIZE            = 0x40\n\tEV_ADD                         = 0x1\n\tEV_CLEAR                       = 0x20\n\tEV_DELETE                      = 0x2\n\tEV_DISABLE                     = 0x8\n\tEV_DISPATCH                    = 0x80\n\tEV_DROP                        = 0x1000\n\tEV_ENABLE                      = 0x4\n\tEV_EOF                         = 0x8000\n\tEV_ERROR                       = 0x4000\n\tEV_FLAG1                       = 0x2000\n\tEV_FLAG2                       = 0x4000\n\tEV_FORCEONESHOT                = 0x100\n\tEV_ONESHOT                     = 0x10\n\tEV_RECEIPT                     = 0x40\n\tEV_SYSFLAGS                    = 0xf000\n\tEXTA                           = 0x4b00\n\tEXTATTR_MAXNAMELEN             = 0xff\n\tEXTATTR_NAMESPACE_EMPTY        = 0x0\n\tEXTATTR_NAMESPACE_SYSTEM       = 0x2\n\tEXTATTR_NAMESPACE_USER         = 0x1\n\tEXTB                           = 0x9600\n\tEXTPROC                        = 0x800\n\tFD_CLOEXEC                     = 0x1\n\tFD_SETSIZE                     = 0x400\n\tFLUSHO                         = 0x800000\n\tF_CANCEL                       = 0x5\n\tF_DUP2FD                       = 0xa\n\tF_DUP2FD_CLOEXEC               = 0x12\n\tF_DUPFD                        = 0x0\n\tF_DUPFD_CLOEXEC                = 0x11\n\tF_GETFD                        = 0x1\n\tF_GETFL                        = 0x3\n\tF_GETLK                        = 0xb\n\tF_GETOWN                       = 0x5\n\tF_OGETLK                       = 0x7\n\tF_OK                           = 0x0\n\tF_OSETLK                       = 0x8\n\tF_OSETLKW                      = 0x9\n\tF_RDAHEAD                      = 0x10\n\tF_RDLCK                        = 0x1\n\tF_READAHEAD                    = 0xf\n\tF_SETFD                        = 0x2\n\tF_SETFL                        = 0x4\n\tF_SETLK                        = 0xc\n\tF_SETLKW                       = 0xd\n\tF_SETLK_REMOTE                 = 0xe\n\tF_SETOWN                       = 0x6\n\tF_UNLCK                        = 0x2\n\tF_UNLCKSYS                     = 0x4\n\tF_WRLCK                        = 0x3\n\tHUPCL                          = 0x4000\n\tHW_MACHINE                     = 0x1\n\tICANON                         = 0x100\n\tICMP6_FILTER                   = 0x12\n\tICRNL                          = 0x100\n\tIEXTEN                         = 0x400\n\tIFAN_ARRIVAL                   = 0x0\n\tIFAN_DEPARTURE                 = 0x1\n\tIFCAP_WOL_MAGIC                = 0x2000\n\tIFF_ALLMULTI                   = 0x200\n\tIFF_ALTPHYS                    = 0x4000\n\tIFF_BROADCAST                  = 0x2\n\tIFF_CANTCHANGE                 = 0x218f52\n\tIFF_CANTCONFIG                 = 0x10000\n\tIFF_DEBUG                      = 0x4\n\tIFF_DRV_OACTIVE                = 0x400\n\tIFF_DRV_RUNNING                = 0x40\n\tIFF_DYING                      = 0x200000\n\tIFF_LINK0                      = 0x1000\n\tIFF_LINK1                      = 0x2000\n\tIFF_LINK2                      = 0x4000\n\tIFF_LOOPBACK                   = 0x8\n\tIFF_MONITOR                    = 0x40000\n\tIFF_MULTICAST                  = 0x8000\n\tIFF_NOARP                      = 0x80\n\tIFF_NOGROUP                    = 0x800000\n\tIFF_OACTIVE                    = 0x400\n\tIFF_POINTOPOINT                = 0x10\n\tIFF_PPROMISC                   = 0x20000\n\tIFF_PROMISC                    = 0x100\n\tIFF_RENAMING                   = 0x400000\n\tIFF_RUNNING                    = 0x40\n\tIFF_SIMPLEX                    = 0x800\n\tIFF_STATICARP                  = 0x80000\n\tIFF_UP                         = 0x1\n\tIFNAMSIZ                       = 0x10\n\tIFT_BRIDGE                     = 0xd1\n\tIFT_CARP                       = 0xf8\n\tIFT_IEEE1394                   = 0x90\n\tIFT_INFINIBAND                 = 0xc7\n\tIFT_L2VLAN                     = 0x87\n\tIFT_L3IPVLAN                   = 0x88\n\tIFT_PPP                        = 0x17\n\tIFT_PROPVIRTUAL                = 0x35\n\tIGNBRK                         = 0x1\n\tIGNCR                          = 0x80\n\tIGNPAR                         = 0x4\n\tIMAXBEL                        = 0x2000\n\tINLCR                          = 0x40\n\tINPCK                          = 0x10\n\tIN_CLASSA_HOST                 = 0xffffff\n\tIN_CLASSA_MAX                  = 0x80\n\tIN_CLASSA_NET                  = 0xff000000\n\tIN_CLASSA_NSHIFT               = 0x18\n\tIN_CLASSB_HOST                 = 0xffff\n\tIN_CLASSB_MAX                  = 0x10000\n\tIN_CLASSB_NET                  = 0xffff0000\n\tIN_CLASSB_NSHIFT               = 0x10\n\tIN_CLASSC_HOST                 = 0xff\n\tIN_CLASSC_NET                  = 0xffffff00\n\tIN_CLASSC_NSHIFT               = 0x8\n\tIN_CLASSD_HOST                 = 0xfffffff\n\tIN_CLASSD_NET                  = 0xf0000000\n\tIN_CLASSD_NSHIFT               = 0x1c\n\tIN_LOOPBACKNET                 = 0x7f\n\tIN_RFC3021_MASK                = 0xfffffffe\n\tIPPROTO_3PC                    = 0x22\n\tIPPROTO_ADFS                   = 0x44\n\tIPPROTO_AH                     = 0x33\n\tIPPROTO_AHIP                   = 0x3d\n\tIPPROTO_APES                   = 0x63\n\tIPPROTO_ARGUS                  = 0xd\n\tIPPROTO_AX25                   = 0x5d\n\tIPPROTO_BHA                    = 0x31\n\tIPPROTO_BLT                    = 0x1e\n\tIPPROTO_BRSATMON               = 0x4c\n\tIPPROTO_CARP                   = 0x70\n\tIPPROTO_CFTP                   = 0x3e\n\tIPPROTO_CHAOS                  = 0x10\n\tIPPROTO_CMTP                   = 0x26\n\tIPPROTO_CPHB                   = 0x49\n\tIPPROTO_CPNX                   = 0x48\n\tIPPROTO_DCCP                   = 0x21\n\tIPPROTO_DDP                    = 0x25\n\tIPPROTO_DGP                    = 0x56\n\tIPPROTO_DIVERT                 = 0x102\n\tIPPROTO_DONE                   = 0x101\n\tIPPROTO_DSTOPTS                = 0x3c\n\tIPPROTO_EGP                    = 0x8\n\tIPPROTO_EMCON                  = 0xe\n\tIPPROTO_ENCAP                  = 0x62\n\tIPPROTO_EON                    = 0x50\n\tIPPROTO_ESP                    = 0x32\n\tIPPROTO_ETHERIP                = 0x61\n\tIPPROTO_FRAGMENT               = 0x2c\n\tIPPROTO_GGP                    = 0x3\n\tIPPROTO_GMTP                   = 0x64\n\tIPPROTO_GRE                    = 0x2f\n\tIPPROTO_HELLO                  = 0x3f\n\tIPPROTO_HIP                    = 0x8b\n\tIPPROTO_HMP                    = 0x14\n\tIPPROTO_HOPOPTS                = 0x0\n\tIPPROTO_ICMP                   = 0x1\n\tIPPROTO_ICMPV6                 = 0x3a\n\tIPPROTO_IDP                    = 0x16\n\tIPPROTO_IDPR                   = 0x23\n\tIPPROTO_IDRP                   = 0x2d\n\tIPPROTO_IGMP                   = 0x2\n\tIPPROTO_IGP                    = 0x55\n\tIPPROTO_IGRP                   = 0x58\n\tIPPROTO_IL                     = 0x28\n\tIPPROTO_INLSP                  = 0x34\n\tIPPROTO_INP                    = 0x20\n\tIPPROTO_IP                     = 0x0\n\tIPPROTO_IPCOMP                 = 0x6c\n\tIPPROTO_IPCV                   = 0x47\n\tIPPROTO_IPEIP                  = 0x5e\n\tIPPROTO_IPIP                   = 0x4\n\tIPPROTO_IPPC                   = 0x43\n\tIPPROTO_IPV4                   = 0x4\n\tIPPROTO_IPV6                   = 0x29\n\tIPPROTO_IRTP                   = 0x1c\n\tIPPROTO_KRYPTOLAN              = 0x41\n\tIPPROTO_LARP                   = 0x5b\n\tIPPROTO_LEAF1                  = 0x19\n\tIPPROTO_LEAF2                  = 0x1a\n\tIPPROTO_MAX                    = 0x100\n\tIPPROTO_MEAS                   = 0x13\n\tIPPROTO_MH                     = 0x87\n\tIPPROTO_MHRP                   = 0x30\n\tIPPROTO_MICP                   = 0x5f\n\tIPPROTO_MOBILE                 = 0x37\n\tIPPROTO_MPLS                   = 0x89\n\tIPPROTO_MTP                    = 0x5c\n\tIPPROTO_MUX                    = 0x12\n\tIPPROTO_ND                     = 0x4d\n\tIPPROTO_NHRP                   = 0x36\n\tIPPROTO_NONE                   = 0x3b\n\tIPPROTO_NSP                    = 0x1f\n\tIPPROTO_NVPII                  = 0xb\n\tIPPROTO_OLD_DIVERT             = 0xfe\n\tIPPROTO_OSPFIGP                = 0x59\n\tIPPROTO_PFSYNC                 = 0xf0\n\tIPPROTO_PGM                    = 0x71\n\tIPPROTO_PIGP                   = 0x9\n\tIPPROTO_PIM                    = 0x67\n\tIPPROTO_PRM                    = 0x15\n\tIPPROTO_PUP                    = 0xc\n\tIPPROTO_PVP                    = 0x4b\n\tIPPROTO_RAW                    = 0xff\n\tIPPROTO_RCCMON                 = 0xa\n\tIPPROTO_RDP                    = 0x1b\n\tIPPROTO_RESERVED_253           = 0xfd\n\tIPPROTO_RESERVED_254           = 0xfe\n\tIPPROTO_ROUTING                = 0x2b\n\tIPPROTO_RSVP                   = 0x2e\n\tIPPROTO_RVD                    = 0x42\n\tIPPROTO_SATEXPAK               = 0x40\n\tIPPROTO_SATMON                 = 0x45\n\tIPPROTO_SCCSP                  = 0x60\n\tIPPROTO_SCTP                   = 0x84\n\tIPPROTO_SDRP                   = 0x2a\n\tIPPROTO_SEND                   = 0x103\n\tIPPROTO_SHIM6                  = 0x8c\n\tIPPROTO_SKIP                   = 0x39\n\tIPPROTO_SPACER                 = 0x7fff\n\tIPPROTO_SRPC                   = 0x5a\n\tIPPROTO_ST                     = 0x7\n\tIPPROTO_SVMTP                  = 0x52\n\tIPPROTO_SWIPE                  = 0x35\n\tIPPROTO_TCF                    = 0x57\n\tIPPROTO_TCP                    = 0x6\n\tIPPROTO_TLSP                   = 0x38\n\tIPPROTO_TP                     = 0x1d\n\tIPPROTO_TPXX                   = 0x27\n\tIPPROTO_TRUNK1                 = 0x17\n\tIPPROTO_TRUNK2                 = 0x18\n\tIPPROTO_TTP                    = 0x54\n\tIPPROTO_UDP                    = 0x11\n\tIPPROTO_UDPLITE                = 0x88\n\tIPPROTO_VINES                  = 0x53\n\tIPPROTO_VISA                   = 0x46\n\tIPPROTO_VMTP                   = 0x51\n\tIPPROTO_WBEXPAK                = 0x4f\n\tIPPROTO_WBMON                  = 0x4e\n\tIPPROTO_WSN                    = 0x4a\n\tIPPROTO_XNET                   = 0xf\n\tIPPROTO_XTP                    = 0x24\n\tIPV6_AUTOFLOWLABEL             = 0x3b\n\tIPV6_BINDANY                   = 0x40\n\tIPV6_BINDMULTI                 = 0x41\n\tIPV6_BINDV6ONLY                = 0x1b\n\tIPV6_CHECKSUM                  = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS    = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP    = 0x1\n\tIPV6_DEFHLIM                   = 0x40\n\tIPV6_DONTFRAG                  = 0x3e\n\tIPV6_DSTOPTS                   = 0x32\n\tIPV6_FLOWID                    = 0x43\n\tIPV6_FLOWINFO_MASK             = 0xffffff0f\n\tIPV6_FLOWLABEL_LEN             = 0x14\n\tIPV6_FLOWLABEL_MASK            = 0xffff0f00\n\tIPV6_FLOWTYPE                  = 0x44\n\tIPV6_FRAGTTL                   = 0x78\n\tIPV6_FW_ADD                    = 0x1e\n\tIPV6_FW_DEL                    = 0x1f\n\tIPV6_FW_FLUSH                  = 0x20\n\tIPV6_FW_GET                    = 0x22\n\tIPV6_FW_ZERO                   = 0x21\n\tIPV6_HLIMDEC                   = 0x1\n\tIPV6_HOPLIMIT                  = 0x2f\n\tIPV6_HOPOPTS                   = 0x31\n\tIPV6_IPSEC_POLICY              = 0x1c\n\tIPV6_JOIN_GROUP                = 0xc\n\tIPV6_LEAVE_GROUP               = 0xd\n\tIPV6_MAXHLIM                   = 0xff\n\tIPV6_MAXOPTHDR                 = 0x800\n\tIPV6_MAXPACKET                 = 0xffff\n\tIPV6_MAX_GROUP_SRC_FILTER      = 0x200\n\tIPV6_MAX_MEMBERSHIPS           = 0xfff\n\tIPV6_MAX_SOCK_SRC_FILTER       = 0x80\n\tIPV6_MMTU                      = 0x500\n\tIPV6_MSFILTER                  = 0x4a\n\tIPV6_MULTICAST_HOPS            = 0xa\n\tIPV6_MULTICAST_IF              = 0x9\n\tIPV6_MULTICAST_LOOP            = 0xb\n\tIPV6_NEXTHOP                   = 0x30\n\tIPV6_ORIGDSTADDR               = 0x48\n\tIPV6_PATHMTU                   = 0x2c\n\tIPV6_PKTINFO                   = 0x2e\n\tIPV6_PORTRANGE                 = 0xe\n\tIPV6_PORTRANGE_DEFAULT         = 0x0\n\tIPV6_PORTRANGE_HIGH            = 0x1\n\tIPV6_PORTRANGE_LOW             = 0x2\n\tIPV6_PREFER_TEMPADDR           = 0x3f\n\tIPV6_RECVDSTOPTS               = 0x28\n\tIPV6_RECVFLOWID                = 0x46\n\tIPV6_RECVHOPLIMIT              = 0x25\n\tIPV6_RECVHOPOPTS               = 0x27\n\tIPV6_RECVORIGDSTADDR           = 0x48\n\tIPV6_RECVPATHMTU               = 0x2b\n\tIPV6_RECVPKTINFO               = 0x24\n\tIPV6_RECVRSSBUCKETID           = 0x47\n\tIPV6_RECVRTHDR                 = 0x26\n\tIPV6_RECVTCLASS                = 0x39\n\tIPV6_RSSBUCKETID               = 0x45\n\tIPV6_RSS_LISTEN_BUCKET         = 0x42\n\tIPV6_RTHDR                     = 0x33\n\tIPV6_RTHDRDSTOPTS              = 0x23\n\tIPV6_RTHDR_LOOSE               = 0x0\n\tIPV6_RTHDR_STRICT              = 0x1\n\tIPV6_RTHDR_TYPE_0              = 0x0\n\tIPV6_SOCKOPT_RESERVED1         = 0x3\n\tIPV6_TCLASS                    = 0x3d\n\tIPV6_UNICAST_HOPS              = 0x4\n\tIPV6_USE_MIN_MTU               = 0x2a\n\tIPV6_V6ONLY                    = 0x1b\n\tIPV6_VERSION                   = 0x60\n\tIPV6_VERSION_MASK              = 0xf0\n\tIPV6_VLAN_PCP                  = 0x4b\n\tIP_ADD_MEMBERSHIP              = 0xc\n\tIP_ADD_SOURCE_MEMBERSHIP       = 0x46\n\tIP_BINDANY                     = 0x18\n\tIP_BINDMULTI                   = 0x19\n\tIP_BLOCK_SOURCE                = 0x48\n\tIP_DEFAULT_MULTICAST_LOOP      = 0x1\n\tIP_DEFAULT_MULTICAST_TTL       = 0x1\n\tIP_DF                          = 0x4000\n\tIP_DONTFRAG                    = 0x43\n\tIP_DROP_MEMBERSHIP             = 0xd\n\tIP_DROP_SOURCE_MEMBERSHIP      = 0x47\n\tIP_DUMMYNET3                   = 0x31\n\tIP_DUMMYNET_CONFIGURE          = 0x3c\n\tIP_DUMMYNET_DEL                = 0x3d\n\tIP_DUMMYNET_FLUSH              = 0x3e\n\tIP_DUMMYNET_GET                = 0x40\n\tIP_FLOWID                      = 0x5a\n\tIP_FLOWTYPE                    = 0x5b\n\tIP_FW3                         = 0x30\n\tIP_FW_ADD                      = 0x32\n\tIP_FW_DEL                      = 0x33\n\tIP_FW_FLUSH                    = 0x34\n\tIP_FW_GET                      = 0x36\n\tIP_FW_NAT_CFG                  = 0x38\n\tIP_FW_NAT_DEL                  = 0x39\n\tIP_FW_NAT_GET_CONFIG           = 0x3a\n\tIP_FW_NAT_GET_LOG              = 0x3b\n\tIP_FW_RESETLOG                 = 0x37\n\tIP_FW_TABLE_ADD                = 0x28\n\tIP_FW_TABLE_DEL                = 0x29\n\tIP_FW_TABLE_FLUSH              = 0x2a\n\tIP_FW_TABLE_GETSIZE            = 0x2b\n\tIP_FW_TABLE_LIST               = 0x2c\n\tIP_FW_ZERO                     = 0x35\n\tIP_HDRINCL                     = 0x2\n\tIP_IPSEC_POLICY                = 0x15\n\tIP_MAXPACKET                   = 0xffff\n\tIP_MAX_GROUP_SRC_FILTER        = 0x200\n\tIP_MAX_MEMBERSHIPS             = 0xfff\n\tIP_MAX_SOCK_MUTE_FILTER        = 0x80\n\tIP_MAX_SOCK_SRC_FILTER         = 0x80\n\tIP_MF                          = 0x2000\n\tIP_MINTTL                      = 0x42\n\tIP_MSFILTER                    = 0x4a\n\tIP_MSS                         = 0x240\n\tIP_MULTICAST_IF                = 0x9\n\tIP_MULTICAST_LOOP              = 0xb\n\tIP_MULTICAST_TTL               = 0xa\n\tIP_MULTICAST_VIF               = 0xe\n\tIP_OFFMASK                     = 0x1fff\n\tIP_ONESBCAST                   = 0x17\n\tIP_OPTIONS                     = 0x1\n\tIP_ORIGDSTADDR                 = 0x1b\n\tIP_PORTRANGE                   = 0x13\n\tIP_PORTRANGE_DEFAULT           = 0x0\n\tIP_PORTRANGE_HIGH              = 0x1\n\tIP_PORTRANGE_LOW               = 0x2\n\tIP_RECVDSTADDR                 = 0x7\n\tIP_RECVFLOWID                  = 0x5d\n\tIP_RECVIF                      = 0x14\n\tIP_RECVOPTS                    = 0x5\n\tIP_RECVORIGDSTADDR             = 0x1b\n\tIP_RECVRETOPTS                 = 0x6\n\tIP_RECVRSSBUCKETID             = 0x5e\n\tIP_RECVTOS                     = 0x44\n\tIP_RECVTTL                     = 0x41\n\tIP_RETOPTS                     = 0x8\n\tIP_RF                          = 0x8000\n\tIP_RSSBUCKETID                 = 0x5c\n\tIP_RSS_LISTEN_BUCKET           = 0x1a\n\tIP_RSVP_OFF                    = 0x10\n\tIP_RSVP_ON                     = 0xf\n\tIP_RSVP_VIF_OFF                = 0x12\n\tIP_RSVP_VIF_ON                 = 0x11\n\tIP_SENDSRCADDR                 = 0x7\n\tIP_TOS                         = 0x3\n\tIP_TTL                         = 0x4\n\tIP_UNBLOCK_SOURCE              = 0x49\n\tIP_VLAN_PCP                    = 0x4b\n\tISIG                           = 0x80\n\tISTRIP                         = 0x20\n\tITIMER_PROF                    = 0x2\n\tITIMER_REAL                    = 0x0\n\tITIMER_VIRTUAL                 = 0x1\n\tIXANY                          = 0x800\n\tIXOFF                          = 0x400\n\tIXON                           = 0x200\n\tKERN_HOSTNAME                  = 0xa\n\tKERN_OSRELEASE                 = 0x2\n\tKERN_OSTYPE                    = 0x1\n\tKERN_VERSION                   = 0x4\n\tLOCAL_CONNWAIT                 = 0x4\n\tLOCAL_CREDS                    = 0x2\n\tLOCAL_PEERCRED                 = 0x1\n\tLOCAL_VENDOR                   = 0x80000000\n\tLOCK_EX                        = 0x2\n\tLOCK_NB                        = 0x4\n\tLOCK_SH                        = 0x1\n\tLOCK_UN                        = 0x8\n\tMADV_AUTOSYNC                  = 0x7\n\tMADV_CORE                      = 0x9\n\tMADV_DONTNEED                  = 0x4\n\tMADV_FREE                      = 0x5\n\tMADV_NOCORE                    = 0x8\n\tMADV_NORMAL                    = 0x0\n\tMADV_NOSYNC                    = 0x6\n\tMADV_PROTECT                   = 0xa\n\tMADV_RANDOM                    = 0x1\n\tMADV_SEQUENTIAL                = 0x2\n\tMADV_WILLNEED                  = 0x3\n\tMAP_32BIT                      = 0x80000\n\tMAP_ALIGNED_SUPER              = 0x1000000\n\tMAP_ALIGNMENT_MASK             = -0x1000000\n\tMAP_ALIGNMENT_SHIFT            = 0x18\n\tMAP_ANON                       = 0x1000\n\tMAP_ANONYMOUS                  = 0x1000\n\tMAP_COPY                       = 0x2\n\tMAP_EXCL                       = 0x4000\n\tMAP_FILE                       = 0x0\n\tMAP_FIXED                      = 0x10\n\tMAP_GUARD                      = 0x2000\n\tMAP_HASSEMAPHORE               = 0x200\n\tMAP_NOCORE                     = 0x20000\n\tMAP_NOSYNC                     = 0x800\n\tMAP_PREFAULT_READ              = 0x40000\n\tMAP_PRIVATE                    = 0x2\n\tMAP_RESERVED0020               = 0x20\n\tMAP_RESERVED0040               = 0x40\n\tMAP_RESERVED0080               = 0x80\n\tMAP_RESERVED0100               = 0x100\n\tMAP_SHARED                     = 0x1\n\tMAP_STACK                      = 0x400\n\tMCAST_BLOCK_SOURCE             = 0x54\n\tMCAST_EXCLUDE                  = 0x2\n\tMCAST_INCLUDE                  = 0x1\n\tMCAST_JOIN_GROUP               = 0x50\n\tMCAST_JOIN_SOURCE_GROUP        = 0x52\n\tMCAST_LEAVE_GROUP              = 0x51\n\tMCAST_LEAVE_SOURCE_GROUP       = 0x53\n\tMCAST_UNBLOCK_SOURCE           = 0x55\n\tMCAST_UNDEFINED                = 0x0\n\tMCL_CURRENT                    = 0x1\n\tMCL_FUTURE                     = 0x2\n\tMNT_ACLS                       = 0x8000000\n\tMNT_ASYNC                      = 0x40\n\tMNT_AUTOMOUNTED                = 0x200000000\n\tMNT_BYFSID                     = 0x8000000\n\tMNT_CMDFLAGS                   = 0xd0f0000\n\tMNT_DEFEXPORTED                = 0x200\n\tMNT_DELEXPORT                  = 0x20000\n\tMNT_EXKERB                     = 0x800\n\tMNT_EXPORTANON                 = 0x400\n\tMNT_EXPORTED                   = 0x100\n\tMNT_EXPUBLIC                   = 0x20000000\n\tMNT_EXRDONLY                   = 0x80\n\tMNT_FORCE                      = 0x80000\n\tMNT_GJOURNAL                   = 0x2000000\n\tMNT_IGNORE                     = 0x800000\n\tMNT_LAZY                       = 0x3\n\tMNT_LOCAL                      = 0x1000\n\tMNT_MULTILABEL                 = 0x4000000\n\tMNT_NFS4ACLS                   = 0x10\n\tMNT_NOATIME                    = 0x10000000\n\tMNT_NOCLUSTERR                 = 0x40000000\n\tMNT_NOCLUSTERW                 = 0x80000000\n\tMNT_NOEXEC                     = 0x4\n\tMNT_NONBUSY                    = 0x4000000\n\tMNT_NOSUID                     = 0x8\n\tMNT_NOSYMFOLLOW                = 0x400000\n\tMNT_NOWAIT                     = 0x2\n\tMNT_QUOTA                      = 0x2000\n\tMNT_RDONLY                     = 0x1\n\tMNT_RELOAD                     = 0x40000\n\tMNT_ROOTFS                     = 0x4000\n\tMNT_SNAPSHOT                   = 0x1000000\n\tMNT_SOFTDEP                    = 0x200000\n\tMNT_SUIDDIR                    = 0x100000\n\tMNT_SUJ                        = 0x100000000\n\tMNT_SUSPEND                    = 0x4\n\tMNT_SYNCHRONOUS                = 0x2\n\tMNT_UNION                      = 0x20\n\tMNT_UNTRUSTED                  = 0x800000000\n\tMNT_UPDATE                     = 0x10000\n\tMNT_UPDATEMASK                 = 0xad8d0807e\n\tMNT_USER                       = 0x8000\n\tMNT_VERIFIED                   = 0x400000000\n\tMNT_VISFLAGMASK                = 0xffef0ffff\n\tMNT_WAIT                       = 0x1\n\tMSG_CMSG_CLOEXEC               = 0x40000\n\tMSG_COMPAT                     = 0x8000\n\tMSG_CTRUNC                     = 0x20\n\tMSG_DONTROUTE                  = 0x4\n\tMSG_DONTWAIT                   = 0x80\n\tMSG_EOF                        = 0x100\n\tMSG_EOR                        = 0x8\n\tMSG_NBIO                       = 0x4000\n\tMSG_NOSIGNAL                   = 0x20000\n\tMSG_NOTIFICATION               = 0x2000\n\tMSG_OOB                        = 0x1\n\tMSG_PEEK                       = 0x2\n\tMSG_TRUNC                      = 0x10\n\tMSG_WAITALL                    = 0x40\n\tMSG_WAITFORONE                 = 0x80000\n\tMS_ASYNC                       = 0x1\n\tMS_INVALIDATE                  = 0x2\n\tMS_SYNC                        = 0x0\n\tNAME_MAX                       = 0xff\n\tNET_RT_DUMP                    = 0x1\n\tNET_RT_FLAGS                   = 0x2\n\tNET_RT_IFLIST                  = 0x3\n\tNET_RT_IFLISTL                 = 0x5\n\tNET_RT_IFMALIST                = 0x4\n\tNFDBITS                        = 0x40\n\tNOFLSH                         = 0x80000000\n\tNOKERNINFO                     = 0x2000000\n\tNOTE_ABSTIME                   = 0x10\n\tNOTE_ATTRIB                    = 0x8\n\tNOTE_CHILD                     = 0x4\n\tNOTE_CLOSE                     = 0x100\n\tNOTE_CLOSE_WRITE               = 0x200\n\tNOTE_DELETE                    = 0x1\n\tNOTE_EXEC                      = 0x20000000\n\tNOTE_EXIT                      = 0x80000000\n\tNOTE_EXTEND                    = 0x4\n\tNOTE_FFAND                     = 0x40000000\n\tNOTE_FFCOPY                    = 0xc0000000\n\tNOTE_FFCTRLMASK                = 0xc0000000\n\tNOTE_FFLAGSMASK                = 0xffffff\n\tNOTE_FFNOP                     = 0x0\n\tNOTE_FFOR                      = 0x80000000\n\tNOTE_FILE_POLL                 = 0x2\n\tNOTE_FORK                      = 0x40000000\n\tNOTE_LINK                      = 0x10\n\tNOTE_LOWAT                     = 0x1\n\tNOTE_MSECONDS                  = 0x2\n\tNOTE_NSECONDS                  = 0x8\n\tNOTE_OPEN                      = 0x80\n\tNOTE_PCTRLMASK                 = 0xf0000000\n\tNOTE_PDATAMASK                 = 0xfffff\n\tNOTE_READ                      = 0x400\n\tNOTE_RENAME                    = 0x20\n\tNOTE_REVOKE                    = 0x40\n\tNOTE_SECONDS                   = 0x1\n\tNOTE_TRACK                     = 0x1\n\tNOTE_TRACKERR                  = 0x2\n\tNOTE_TRIGGER                   = 0x1000000\n\tNOTE_USECONDS                  = 0x4\n\tNOTE_WRITE                     = 0x2\n\tOCRNL                          = 0x10\n\tONLCR                          = 0x2\n\tONLRET                         = 0x40\n\tONOCR                          = 0x20\n\tONOEOT                         = 0x8\n\tOPOST                          = 0x1\n\tOXTABS                         = 0x4\n\tO_ACCMODE                      = 0x3\n\tO_APPEND                       = 0x8\n\tO_ASYNC                        = 0x40\n\tO_CLOEXEC                      = 0x100000\n\tO_CREAT                        = 0x200\n\tO_DIRECT                       = 0x10000\n\tO_DIRECTORY                    = 0x20000\n\tO_EXCL                         = 0x800\n\tO_EXEC                         = 0x40000\n\tO_EXLOCK                       = 0x20\n\tO_FSYNC                        = 0x80\n\tO_NDELAY                       = 0x4\n\tO_NOCTTY                       = 0x8000\n\tO_NOFOLLOW                     = 0x100\n\tO_NONBLOCK                     = 0x4\n\tO_RDONLY                       = 0x0\n\tO_RDWR                         = 0x2\n\tO_RESOLVE_BENEATH              = 0x800000\n\tO_SEARCH                       = 0x40000\n\tO_SHLOCK                       = 0x10\n\tO_SYNC                         = 0x80\n\tO_TRUNC                        = 0x400\n\tO_TTY_INIT                     = 0x80000\n\tO_VERIFY                       = 0x200000\n\tO_WRONLY                       = 0x1\n\tPARENB                         = 0x1000\n\tPARMRK                         = 0x8\n\tPARODD                         = 0x2000\n\tPENDIN                         = 0x20000000\n\tPIOD_READ_D                    = 0x1\n\tPIOD_READ_I                    = 0x3\n\tPIOD_WRITE_D                   = 0x2\n\tPIOD_WRITE_I                   = 0x4\n\tPRIO_PGRP                      = 0x1\n\tPRIO_PROCESS                   = 0x0\n\tPRIO_USER                      = 0x2\n\tPROT_EXEC                      = 0x4\n\tPROT_NONE                      = 0x0\n\tPROT_READ                      = 0x1\n\tPROT_WRITE                     = 0x2\n\tPTRACE_DEFAULT                 = 0x1\n\tPTRACE_EXEC                    = 0x1\n\tPTRACE_FORK                    = 0x8\n\tPTRACE_LWP                     = 0x10\n\tPTRACE_SCE                     = 0x2\n\tPTRACE_SCX                     = 0x4\n\tPTRACE_SYSCALL                 = 0x6\n\tPTRACE_VFORK                   = 0x20\n\tPT_ATTACH                      = 0xa\n\tPT_CLEARSTEP                   = 0x10\n\tPT_CONTINUE                    = 0x7\n\tPT_DETACH                      = 0xb\n\tPT_FIRSTMACH                   = 0x40\n\tPT_FOLLOW_FORK                 = 0x17\n\tPT_GETDBREGS                   = 0x25\n\tPT_GETFPREGS                   = 0x23\n\tPT_GETLWPLIST                  = 0xf\n\tPT_GETNUMLWPS                  = 0xe\n\tPT_GETREGS                     = 0x21\n\tPT_GET_EVENT_MASK              = 0x19\n\tPT_GET_SC_ARGS                 = 0x1b\n\tPT_GET_SC_RET                  = 0x1c\n\tPT_IO                          = 0xc\n\tPT_KILL                        = 0x8\n\tPT_LWPINFO                     = 0xd\n\tPT_LWP_EVENTS                  = 0x18\n\tPT_READ_D                      = 0x2\n\tPT_READ_I                      = 0x1\n\tPT_RESUME                      = 0x13\n\tPT_SETDBREGS                   = 0x26\n\tPT_SETFPREGS                   = 0x24\n\tPT_SETREGS                     = 0x22\n\tPT_SETSTEP                     = 0x11\n\tPT_SET_EVENT_MASK              = 0x1a\n\tPT_STEP                        = 0x9\n\tPT_SUSPEND                     = 0x12\n\tPT_SYSCALL                     = 0x16\n\tPT_TO_SCE                      = 0x14\n\tPT_TO_SCX                      = 0x15\n\tPT_TRACE_ME                    = 0x0\n\tPT_VM_ENTRY                    = 0x29\n\tPT_VM_TIMESTAMP                = 0x28\n\tPT_WRITE_D                     = 0x5\n\tPT_WRITE_I                     = 0x4\n\tP_ZONEID                       = 0xc\n\tRLIMIT_AS                      = 0xa\n\tRLIMIT_CORE                    = 0x4\n\tRLIMIT_CPU                     = 0x0\n\tRLIMIT_DATA                    = 0x2\n\tRLIMIT_FSIZE                   = 0x1\n\tRLIMIT_MEMLOCK                 = 0x6\n\tRLIMIT_NOFILE                  = 0x8\n\tRLIMIT_NPROC                   = 0x7\n\tRLIMIT_RSS                     = 0x5\n\tRLIMIT_STACK                   = 0x3\n\tRLIM_INFINITY                  = 0x7fffffffffffffff\n\tRTAX_AUTHOR                    = 0x6\n\tRTAX_BRD                       = 0x7\n\tRTAX_DST                       = 0x0\n\tRTAX_GATEWAY                   = 0x1\n\tRTAX_GENMASK                   = 0x3\n\tRTAX_IFA                       = 0x5\n\tRTAX_IFP                       = 0x4\n\tRTAX_MAX                       = 0x8\n\tRTAX_NETMASK                   = 0x2\n\tRTA_AUTHOR                     = 0x40\n\tRTA_BRD                        = 0x80\n\tRTA_DST                        = 0x1\n\tRTA_GATEWAY                    = 0x2\n\tRTA_GENMASK                    = 0x8\n\tRTA_IFA                        = 0x20\n\tRTA_IFP                        = 0x10\n\tRTA_NETMASK                    = 0x4\n\tRTF_BLACKHOLE                  = 0x1000\n\tRTF_BROADCAST                  = 0x400000\n\tRTF_DONE                       = 0x40\n\tRTF_DYNAMIC                    = 0x10\n\tRTF_FIXEDMTU                   = 0x80000\n\tRTF_FMASK                      = 0x1004d808\n\tRTF_GATEWAY                    = 0x2\n\tRTF_GWFLAG_COMPAT              = 0x80000000\n\tRTF_HOST                       = 0x4\n\tRTF_LLDATA                     = 0x400\n\tRTF_LLINFO                     = 0x400\n\tRTF_LOCAL                      = 0x200000\n\tRTF_MODIFIED                   = 0x20\n\tRTF_MULTICAST                  = 0x800000\n\tRTF_PINNED                     = 0x100000\n\tRTF_PROTO1                     = 0x8000\n\tRTF_PROTO2                     = 0x4000\n\tRTF_PROTO3                     = 0x40000\n\tRTF_REJECT                     = 0x8\n\tRTF_RNH_LOCKED                 = 0x40000000\n\tRTF_STATIC                     = 0x800\n\tRTF_STICKY                     = 0x10000000\n\tRTF_UP                         = 0x1\n\tRTF_XRESOLVE                   = 0x200\n\tRTM_ADD                        = 0x1\n\tRTM_CHANGE                     = 0x3\n\tRTM_DELADDR                    = 0xd\n\tRTM_DELETE                     = 0x2\n\tRTM_DELMADDR                   = 0x10\n\tRTM_GET                        = 0x4\n\tRTM_IEEE80211                  = 0x12\n\tRTM_IFANNOUNCE                 = 0x11\n\tRTM_IFINFO                     = 0xe\n\tRTM_LOCK                       = 0x8\n\tRTM_LOSING                     = 0x5\n\tRTM_MISS                       = 0x7\n\tRTM_NEWADDR                    = 0xc\n\tRTM_NEWMADDR                   = 0xf\n\tRTM_REDIRECT                   = 0x6\n\tRTM_RESOLVE                    = 0xb\n\tRTM_RTTUNIT                    = 0xf4240\n\tRTM_VERSION                    = 0x5\n\tRTV_EXPIRE                     = 0x4\n\tRTV_HOPCOUNT                   = 0x2\n\tRTV_MTU                        = 0x1\n\tRTV_RPIPE                      = 0x8\n\tRTV_RTT                        = 0x40\n\tRTV_RTTVAR                     = 0x80\n\tRTV_SPIPE                      = 0x10\n\tRTV_SSTHRESH                   = 0x20\n\tRTV_WEIGHT                     = 0x100\n\tRT_ALL_FIBS                    = -0x1\n\tRT_BLACKHOLE                   = 0x40\n\tRT_DEFAULT_FIB                 = 0x0\n\tRT_HAS_GW                      = 0x80\n\tRT_HAS_HEADER                  = 0x10\n\tRT_HAS_HEADER_BIT              = 0x4\n\tRT_L2_ME                       = 0x4\n\tRT_L2_ME_BIT                   = 0x2\n\tRT_LLE_CACHE                   = 0x100\n\tRT_MAY_LOOP                    = 0x8\n\tRT_MAY_LOOP_BIT                = 0x3\n\tRT_REJECT                      = 0x20\n\tRUSAGE_CHILDREN                = -0x1\n\tRUSAGE_SELF                    = 0x0\n\tRUSAGE_THREAD                  = 0x1\n\tSCM_BINTIME                    = 0x4\n\tSCM_CREDS                      = 0x3\n\tSCM_MONOTONIC                  = 0x6\n\tSCM_REALTIME                   = 0x5\n\tSCM_RIGHTS                     = 0x1\n\tSCM_TIMESTAMP                  = 0x2\n\tSCM_TIME_INFO                  = 0x7\n\tSEEK_CUR                       = 0x1\n\tSEEK_DATA                      = 0x3\n\tSEEK_END                       = 0x2\n\tSEEK_HOLE                      = 0x4\n\tSEEK_SET                       = 0x0\n\tSHUT_RD                        = 0x0\n\tSHUT_RDWR                      = 0x2\n\tSHUT_WR                        = 0x1\n\tSIOCADDMULTI                   = 0x80206931\n\tSIOCAIFADDR                    = 0x8040691a\n\tSIOCAIFGROUP                   = 0x80286987\n\tSIOCATMARK                     = 0x40047307\n\tSIOCDELMULTI                   = 0x80206932\n\tSIOCDIFADDR                    = 0x80206919\n\tSIOCDIFGROUP                   = 0x80286989\n\tSIOCDIFPHYADDR                 = 0x80206949\n\tSIOCGDRVSPEC                   = 0xc028697b\n\tSIOCGETSGCNT                   = 0xc0207210\n\tSIOCGETVIFCNT                  = 0xc028720f\n\tSIOCGHIWAT                     = 0x40047301\n\tSIOCGHWADDR                    = 0xc020693e\n\tSIOCGI2C                       = 0xc020693d\n\tSIOCGIFADDR                    = 0xc0206921\n\tSIOCGIFALIAS                   = 0xc044692d\n\tSIOCGIFBRDADDR                 = 0xc0206923\n\tSIOCGIFCAP                     = 0xc020691f\n\tSIOCGIFCONF                    = 0xc0106924\n\tSIOCGIFDESCR                   = 0xc020692a\n\tSIOCGIFDOWNREASON              = 0xc058699a\n\tSIOCGIFDSTADDR                 = 0xc0206922\n\tSIOCGIFFIB                     = 0xc020695c\n\tSIOCGIFFLAGS                   = 0xc0206911\n\tSIOCGIFGENERIC                 = 0xc020693a\n\tSIOCGIFGMEMB                   = 0xc028698a\n\tSIOCGIFGROUP                   = 0xc0286988\n\tSIOCGIFINDEX                   = 0xc0206920\n\tSIOCGIFMAC                     = 0xc0206926\n\tSIOCGIFMEDIA                   = 0xc0306938\n\tSIOCGIFMETRIC                  = 0xc0206917\n\tSIOCGIFMTU                     = 0xc0206933\n\tSIOCGIFNETMASK                 = 0xc0206925\n\tSIOCGIFPDSTADDR                = 0xc0206948\n\tSIOCGIFPHYS                    = 0xc0206935\n\tSIOCGIFPSRCADDR                = 0xc0206947\n\tSIOCGIFRSSHASH                 = 0xc0186997\n\tSIOCGIFRSSKEY                  = 0xc0946996\n\tSIOCGIFSTATUS                  = 0xc331693b\n\tSIOCGIFXMEDIA                  = 0xc030698b\n\tSIOCGLANPCP                    = 0xc0206998\n\tSIOCGLOWAT                     = 0x40047303\n\tSIOCGPGRP                      = 0x40047309\n\tSIOCGPRIVATE_0                 = 0xc0206950\n\tSIOCGPRIVATE_1                 = 0xc0206951\n\tSIOCGTUNFIB                    = 0xc020695e\n\tSIOCIFCREATE                   = 0xc020697a\n\tSIOCIFCREATE2                  = 0xc020697c\n\tSIOCIFDESTROY                  = 0x80206979\n\tSIOCIFGCLONERS                 = 0xc0106978\n\tSIOCSDRVSPEC                   = 0x8028697b\n\tSIOCSHIWAT                     = 0x80047300\n\tSIOCSIFADDR                    = 0x8020690c\n\tSIOCSIFBRDADDR                 = 0x80206913\n\tSIOCSIFCAP                     = 0x8020691e\n\tSIOCSIFDESCR                   = 0x80206929\n\tSIOCSIFDSTADDR                 = 0x8020690e\n\tSIOCSIFFIB                     = 0x8020695d\n\tSIOCSIFFLAGS                   = 0x80206910\n\tSIOCSIFGENERIC                 = 0x80206939\n\tSIOCSIFLLADDR                  = 0x8020693c\n\tSIOCSIFMAC                     = 0x80206927\n\tSIOCSIFMEDIA                   = 0xc0206937\n\tSIOCSIFMETRIC                  = 0x80206918\n\tSIOCSIFMTU                     = 0x80206934\n\tSIOCSIFNAME                    = 0x80206928\n\tSIOCSIFNETMASK                 = 0x80206916\n\tSIOCSIFPHYADDR                 = 0x80406946\n\tSIOCSIFPHYS                    = 0x80206936\n\tSIOCSIFRVNET                   = 0xc020695b\n\tSIOCSIFVNET                    = 0xc020695a\n\tSIOCSLANPCP                    = 0x80206999\n\tSIOCSLOWAT                     = 0x80047302\n\tSIOCSPGRP                      = 0x80047308\n\tSIOCSTUNFIB                    = 0x8020695f\n\tSOCK_CLOEXEC                   = 0x10000000\n\tSOCK_DGRAM                     = 0x2\n\tSOCK_MAXADDRLEN                = 0xff\n\tSOCK_NONBLOCK                  = 0x20000000\n\tSOCK_RAW                       = 0x3\n\tSOCK_RDM                       = 0x4\n\tSOCK_SEQPACKET                 = 0x5\n\tSOCK_STREAM                    = 0x1\n\tSOL_LOCAL                      = 0x0\n\tSOL_SOCKET                     = 0xffff\n\tSOMAXCONN                      = 0x80\n\tSO_ACCEPTCONN                  = 0x2\n\tSO_ACCEPTFILTER                = 0x1000\n\tSO_BINTIME                     = 0x2000\n\tSO_BROADCAST                   = 0x20\n\tSO_DEBUG                       = 0x1\n\tSO_DOMAIN                      = 0x1019\n\tSO_DONTROUTE                   = 0x10\n\tSO_ERROR                       = 0x1007\n\tSO_KEEPALIVE                   = 0x8\n\tSO_LABEL                       = 0x1009\n\tSO_LINGER                      = 0x80\n\tSO_LISTENINCQLEN               = 0x1013\n\tSO_LISTENQLEN                  = 0x1012\n\tSO_LISTENQLIMIT                = 0x1011\n\tSO_MAX_PACING_RATE             = 0x1018\n\tSO_NOSIGPIPE                   = 0x800\n\tSO_NO_DDP                      = 0x8000\n\tSO_NO_OFFLOAD                  = 0x4000\n\tSO_OOBINLINE                   = 0x100\n\tSO_PEERLABEL                   = 0x1010\n\tSO_PROTOCOL                    = 0x1016\n\tSO_PROTOTYPE                   = 0x1016\n\tSO_RCVBUF                      = 0x1002\n\tSO_RCVLOWAT                    = 0x1004\n\tSO_RCVTIMEO                    = 0x1006\n\tSO_RERROR                      = 0x20000\n\tSO_REUSEADDR                   = 0x4\n\tSO_REUSEPORT                   = 0x200\n\tSO_REUSEPORT_LB                = 0x10000\n\tSO_SETFIB                      = 0x1014\n\tSO_SNDBUF                      = 0x1001\n\tSO_SNDLOWAT                    = 0x1003\n\tSO_SNDTIMEO                    = 0x1005\n\tSO_TIMESTAMP                   = 0x400\n\tSO_TS_BINTIME                  = 0x1\n\tSO_TS_CLOCK                    = 0x1017\n\tSO_TS_CLOCK_MAX                = 0x3\n\tSO_TS_DEFAULT                  = 0x0\n\tSO_TS_MONOTONIC                = 0x3\n\tSO_TS_REALTIME                 = 0x2\n\tSO_TS_REALTIME_MICRO           = 0x0\n\tSO_TYPE                        = 0x1008\n\tSO_USELOOPBACK                 = 0x40\n\tSO_USER_COOKIE                 = 0x1015\n\tSO_VENDOR                      = 0x80000000\n\tS_BLKSIZE                      = 0x200\n\tS_IEXEC                        = 0x40\n\tS_IFBLK                        = 0x6000\n\tS_IFCHR                        = 0x2000\n\tS_IFDIR                        = 0x4000\n\tS_IFIFO                        = 0x1000\n\tS_IFLNK                        = 0xa000\n\tS_IFMT                         = 0xf000\n\tS_IFREG                        = 0x8000\n\tS_IFSOCK                       = 0xc000\n\tS_IFWHT                        = 0xe000\n\tS_IREAD                        = 0x100\n\tS_IRGRP                        = 0x20\n\tS_IROTH                        = 0x4\n\tS_IRUSR                        = 0x100\n\tS_IRWXG                        = 0x38\n\tS_IRWXO                        = 0x7\n\tS_IRWXU                        = 0x1c0\n\tS_ISGID                        = 0x400\n\tS_ISTXT                        = 0x200\n\tS_ISUID                        = 0x800\n\tS_ISVTX                        = 0x200\n\tS_IWGRP                        = 0x10\n\tS_IWOTH                        = 0x2\n\tS_IWRITE                       = 0x80\n\tS_IWUSR                        = 0x80\n\tS_IXGRP                        = 0x8\n\tS_IXOTH                        = 0x1\n\tS_IXUSR                        = 0x40\n\tTAB0                           = 0x0\n\tTAB3                           = 0x4\n\tTABDLY                         = 0x4\n\tTCIFLUSH                       = 0x1\n\tTCIOFF                         = 0x3\n\tTCIOFLUSH                      = 0x3\n\tTCION                          = 0x4\n\tTCOFLUSH                       = 0x2\n\tTCOOFF                         = 0x1\n\tTCOON                          = 0x2\n\tTCPOPT_EOL                     = 0x0\n\tTCPOPT_FAST_OPEN               = 0x22\n\tTCPOPT_MAXSEG                  = 0x2\n\tTCPOPT_NOP                     = 0x1\n\tTCPOPT_PAD                     = 0x0\n\tTCPOPT_SACK                    = 0x5\n\tTCPOPT_SACK_PERMITTED          = 0x4\n\tTCPOPT_SIGNATURE               = 0x13\n\tTCPOPT_TIMESTAMP               = 0x8\n\tTCPOPT_WINDOW                  = 0x3\n\tTCP_BBR_ACK_COMP_ALG           = 0x448\n\tTCP_BBR_ALGORITHM              = 0x43b\n\tTCP_BBR_DRAIN_INC_EXTRA        = 0x43c\n\tTCP_BBR_DRAIN_PG               = 0x42e\n\tTCP_BBR_EXTRA_GAIN             = 0x449\n\tTCP_BBR_EXTRA_STATE            = 0x453\n\tTCP_BBR_FLOOR_MIN_TSO          = 0x454\n\tTCP_BBR_HDWR_PACE              = 0x451\n\tTCP_BBR_HOLD_TARGET            = 0x436\n\tTCP_BBR_IWINTSO                = 0x42b\n\tTCP_BBR_LOWGAIN_FD             = 0x436\n\tTCP_BBR_LOWGAIN_HALF           = 0x435\n\tTCP_BBR_LOWGAIN_THRESH         = 0x434\n\tTCP_BBR_MAX_RTO                = 0x439\n\tTCP_BBR_MIN_RTO                = 0x438\n\tTCP_BBR_MIN_TOPACEOUT          = 0x455\n\tTCP_BBR_ONE_RETRAN             = 0x431\n\tTCP_BBR_PACE_CROSS             = 0x442\n\tTCP_BBR_PACE_DEL_TAR           = 0x43f\n\tTCP_BBR_PACE_OH                = 0x435\n\tTCP_BBR_PACE_PER_SEC           = 0x43e\n\tTCP_BBR_PACE_SEG_MAX           = 0x440\n\tTCP_BBR_PACE_SEG_MIN           = 0x441\n\tTCP_BBR_POLICER_DETECT         = 0x457\n\tTCP_BBR_PROBE_RTT_GAIN         = 0x44d\n\tTCP_BBR_PROBE_RTT_INT          = 0x430\n\tTCP_BBR_PROBE_RTT_LEN          = 0x44e\n\tTCP_BBR_RACK_RTT_USE           = 0x44a\n\tTCP_BBR_RECFORCE               = 0x42c\n\tTCP_BBR_REC_OVER_HPTS          = 0x43a\n\tTCP_BBR_RETRAN_WTSO            = 0x44b\n\tTCP_BBR_RWND_IS_APP            = 0x42f\n\tTCP_BBR_SEND_IWND_IN_TSO       = 0x44f\n\tTCP_BBR_STARTUP_EXIT_EPOCH     = 0x43d\n\tTCP_BBR_STARTUP_LOSS_EXIT      = 0x432\n\tTCP_BBR_STARTUP_PG             = 0x42d\n\tTCP_BBR_TMR_PACE_OH            = 0x448\n\tTCP_BBR_TSLIMITS               = 0x434\n\tTCP_BBR_TSTMP_RAISES           = 0x456\n\tTCP_BBR_UNLIMITED              = 0x43b\n\tTCP_BBR_USEDEL_RATE            = 0x437\n\tTCP_BBR_USE_LOWGAIN            = 0x433\n\tTCP_BBR_USE_RACK_CHEAT         = 0x450\n\tTCP_BBR_UTTER_MAX_TSO          = 0x452\n\tTCP_CA_NAME_MAX                = 0x10\n\tTCP_CCALGOOPT                  = 0x41\n\tTCP_CONGESTION                 = 0x40\n\tTCP_DATA_AFTER_CLOSE           = 0x44c\n\tTCP_DELACK                     = 0x48\n\tTCP_FASTOPEN                   = 0x401\n\tTCP_FASTOPEN_MAX_COOKIE_LEN    = 0x10\n\tTCP_FASTOPEN_MIN_COOKIE_LEN    = 0x4\n\tTCP_FASTOPEN_PSK_LEN           = 0x10\n\tTCP_FUNCTION_BLK               = 0x2000\n\tTCP_FUNCTION_NAME_LEN_MAX      = 0x20\n\tTCP_INFO                       = 0x20\n\tTCP_KEEPCNT                    = 0x400\n\tTCP_KEEPIDLE                   = 0x100\n\tTCP_KEEPINIT                   = 0x80\n\tTCP_KEEPINTVL                  = 0x200\n\tTCP_LOG                        = 0x22\n\tTCP_LOGBUF                     = 0x23\n\tTCP_LOGDUMP                    = 0x25\n\tTCP_LOGDUMPID                  = 0x26\n\tTCP_LOGID                      = 0x24\n\tTCP_LOG_ID_LEN                 = 0x40\n\tTCP_MAXBURST                   = 0x4\n\tTCP_MAXHLEN                    = 0x3c\n\tTCP_MAXOLEN                    = 0x28\n\tTCP_MAXSEG                     = 0x2\n\tTCP_MAXWIN                     = 0xffff\n\tTCP_MAX_SACK                   = 0x4\n\tTCP_MAX_WINSHIFT               = 0xe\n\tTCP_MD5SIG                     = 0x10\n\tTCP_MINMSS                     = 0xd8\n\tTCP_MSS                        = 0x218\n\tTCP_NODELAY                    = 0x1\n\tTCP_NOOPT                      = 0x8\n\tTCP_NOPUSH                     = 0x4\n\tTCP_PCAP_IN                    = 0x1000\n\tTCP_PCAP_OUT                   = 0x800\n\tTCP_RACK_EARLY_RECOV           = 0x423\n\tTCP_RACK_EARLY_SEG             = 0x424\n\tTCP_RACK_GP_INCREASE           = 0x446\n\tTCP_RACK_IDLE_REDUCE_HIGH      = 0x444\n\tTCP_RACK_MIN_PACE              = 0x445\n\tTCP_RACK_MIN_PACE_SEG          = 0x446\n\tTCP_RACK_MIN_TO                = 0x422\n\tTCP_RACK_PACE_ALWAYS           = 0x41f\n\tTCP_RACK_PACE_MAX_SEG          = 0x41e\n\tTCP_RACK_PACE_REDUCE           = 0x41d\n\tTCP_RACK_PKT_DELAY             = 0x428\n\tTCP_RACK_PROP                  = 0x41b\n\tTCP_RACK_PROP_RATE             = 0x420\n\tTCP_RACK_PRR_SENDALOT          = 0x421\n\tTCP_RACK_REORD_FADE            = 0x426\n\tTCP_RACK_REORD_THRESH          = 0x425\n\tTCP_RACK_TLP_INC_VAR           = 0x429\n\tTCP_RACK_TLP_REDUCE            = 0x41c\n\tTCP_RACK_TLP_THRESH            = 0x427\n\tTCP_RACK_TLP_USE               = 0x447\n\tTCP_VENDOR                     = 0x80000000\n\tTCSAFLUSH                      = 0x2\n\tTIMER_ABSTIME                  = 0x1\n\tTIMER_RELTIME                  = 0x0\n\tTIOCCBRK                       = 0x2000747a\n\tTIOCCDTR                       = 0x20007478\n\tTIOCCONS                       = 0x80047462\n\tTIOCDRAIN                      = 0x2000745e\n\tTIOCEXCL                       = 0x2000740d\n\tTIOCEXT                        = 0x80047460\n\tTIOCFLUSH                      = 0x80047410\n\tTIOCGDRAINWAIT                 = 0x40047456\n\tTIOCGETA                       = 0x402c7413\n\tTIOCGETD                       = 0x4004741a\n\tTIOCGPGRP                      = 0x40047477\n\tTIOCGPTN                       = 0x4004740f\n\tTIOCGSID                       = 0x40047463\n\tTIOCGWINSZ                     = 0x40087468\n\tTIOCMBIC                       = 0x8004746b\n\tTIOCMBIS                       = 0x8004746c\n\tTIOCMGDTRWAIT                  = 0x4004745a\n\tTIOCMGET                       = 0x4004746a\n\tTIOCMSDTRWAIT                  = 0x8004745b\n\tTIOCMSET                       = 0x8004746d\n\tTIOCM_CAR                      = 0x40\n\tTIOCM_CD                       = 0x40\n\tTIOCM_CTS                      = 0x20\n\tTIOCM_DCD                      = 0x40\n\tTIOCM_DSR                      = 0x100\n\tTIOCM_DTR                      = 0x2\n\tTIOCM_LE                       = 0x1\n\tTIOCM_RI                       = 0x80\n\tTIOCM_RNG                      = 0x80\n\tTIOCM_RTS                      = 0x4\n\tTIOCM_SR                       = 0x10\n\tTIOCM_ST                       = 0x8\n\tTIOCNOTTY                      = 0x20007471\n\tTIOCNXCL                       = 0x2000740e\n\tTIOCOUTQ                       = 0x40047473\n\tTIOCPKT                        = 0x80047470\n\tTIOCPKT_DATA                   = 0x0\n\tTIOCPKT_DOSTOP                 = 0x20\n\tTIOCPKT_FLUSHREAD              = 0x1\n\tTIOCPKT_FLUSHWRITE             = 0x2\n\tTIOCPKT_IOCTL                  = 0x40\n\tTIOCPKT_NOSTOP                 = 0x10\n\tTIOCPKT_START                  = 0x8\n\tTIOCPKT_STOP                   = 0x4\n\tTIOCPTMASTER                   = 0x2000741c\n\tTIOCSBRK                       = 0x2000747b\n\tTIOCSCTTY                      = 0x20007461\n\tTIOCSDRAINWAIT                 = 0x80047457\n\tTIOCSDTR                       = 0x20007479\n\tTIOCSETA                       = 0x802c7414\n\tTIOCSETAF                      = 0x802c7416\n\tTIOCSETAW                      = 0x802c7415\n\tTIOCSETD                       = 0x8004741b\n\tTIOCSIG                        = 0x2004745f\n\tTIOCSPGRP                      = 0x80047476\n\tTIOCSTART                      = 0x2000746e\n\tTIOCSTAT                       = 0x20007465\n\tTIOCSTI                        = 0x80017472\n\tTIOCSTOP                       = 0x2000746f\n\tTIOCSWINSZ                     = 0x80087467\n\tTIOCTIMESTAMP                  = 0x40107459\n\tTIOCUCNTL                      = 0x80047466\n\tTOSTOP                         = 0x400000\n\tUTIME_NOW                      = -0x1\n\tUTIME_OMIT                     = -0x2\n\tVDISCARD                       = 0xf\n\tVDSUSP                         = 0xb\n\tVEOF                           = 0x0\n\tVEOL                           = 0x1\n\tVEOL2                          = 0x2\n\tVERASE                         = 0x3\n\tVERASE2                        = 0x7\n\tVINTR                          = 0x8\n\tVKILL                          = 0x5\n\tVLNEXT                         = 0xe\n\tVMIN                           = 0x10\n\tVM_BCACHE_SIZE_MAX             = 0x19000000\n\tVQUIT                          = 0x9\n\tVREPRINT                       = 0x6\n\tVSTART                         = 0xc\n\tVSTATUS                        = 0x12\n\tVSTOP                          = 0xd\n\tVSUSP                          = 0xa\n\tVTIME                          = 0x11\n\tVWERASE                        = 0x4\n\tWCONTINUED                     = 0x4\n\tWCOREFLAG                      = 0x80\n\tWEXITED                        = 0x10\n\tWLINUXCLONE                    = 0x80000000\n\tWNOHANG                        = 0x1\n\tWNOWAIT                        = 0x8\n\tWSTOPPED                       = 0x2\n\tWTRAPPED                       = 0x20\n\tWUNTRACED                      = 0x2\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x59)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x55)\n\tECAPMODE        = syscall.Errno(0x5e)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDOOFUS         = syscall.Errno(0x58)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x52)\n\tEILSEQ          = syscall.Errno(0x56)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTEGRITY      = syscall.Errno(0x61)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x61)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5a)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x57)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x5b)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x53)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCAPABLE     = syscall.Errno(0x5d)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5f)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x2d)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEOWNERDEAD      = syscall.Errno(0x60)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5c)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGLIBRT  = syscall.Signal(0x21)\n\tSIGLWP    = syscall.Signal(0x20)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EWOULDBLOCK\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIDRM\", \"identifier removed\"},\n\t{83, \"ENOMSG\", \"no message of desired type\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"ECANCELED\", \"operation canceled\"},\n\t{86, \"EILSEQ\", \"illegal byte sequence\"},\n\t{87, \"ENOATTR\", \"attribute not found\"},\n\t{88, \"EDOOFUS\", \"programming error\"},\n\t{89, \"EBADMSG\", \"bad message\"},\n\t{90, \"EMULTIHOP\", \"multihop attempted\"},\n\t{91, \"ENOLINK\", \"link has been severed\"},\n\t{92, \"EPROTO\", \"protocol error\"},\n\t{93, \"ENOTCAPABLE\", \"capabilities insufficient\"},\n\t{94, \"ECAPMODE\", \"not permitted in capability mode\"},\n\t{95, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{96, \"EOWNERDEAD\", \"previous owner died\"},\n\t{97, \"EINTEGRITY\", \"integrity check failed\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"unknown signal\"},\n\t{33, \"SIGLIBRT\", \"unknown signal\"},\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zerrors_freebsd_riscv64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build riscv64 && freebsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                   = 0x10\n\tAF_ARP                         = 0x23\n\tAF_ATM                         = 0x1e\n\tAF_BLUETOOTH                   = 0x24\n\tAF_CCITT                       = 0xa\n\tAF_CHAOS                       = 0x5\n\tAF_CNT                         = 0x15\n\tAF_COIP                        = 0x14\n\tAF_DATAKIT                     = 0x9\n\tAF_DECnet                      = 0xc\n\tAF_DLI                         = 0xd\n\tAF_E164                        = 0x1a\n\tAF_ECMA                        = 0x8\n\tAF_HYLINK                      = 0xf\n\tAF_HYPERV                      = 0x2b\n\tAF_IEEE80211                   = 0x25\n\tAF_IMPLINK                     = 0x3\n\tAF_INET                        = 0x2\n\tAF_INET6                       = 0x1c\n\tAF_INET6_SDP                   = 0x2a\n\tAF_INET_SDP                    = 0x28\n\tAF_IPX                         = 0x17\n\tAF_ISDN                        = 0x1a\n\tAF_ISO                         = 0x7\n\tAF_LAT                         = 0xe\n\tAF_LINK                        = 0x12\n\tAF_LOCAL                       = 0x1\n\tAF_MAX                         = 0x2b\n\tAF_NATM                        = 0x1d\n\tAF_NETBIOS                     = 0x6\n\tAF_NETGRAPH                    = 0x20\n\tAF_OSI                         = 0x7\n\tAF_PUP                         = 0x4\n\tAF_ROUTE                       = 0x11\n\tAF_SCLUSTER                    = 0x22\n\tAF_SIP                         = 0x18\n\tAF_SLOW                        = 0x21\n\tAF_SNA                         = 0xb\n\tAF_UNIX                        = 0x1\n\tAF_UNSPEC                      = 0x0\n\tAF_VENDOR00                    = 0x27\n\tAF_VENDOR01                    = 0x29\n\tAF_VENDOR03                    = 0x2d\n\tAF_VENDOR04                    = 0x2f\n\tAF_VENDOR05                    = 0x31\n\tAF_VENDOR06                    = 0x33\n\tAF_VENDOR07                    = 0x35\n\tAF_VENDOR08                    = 0x37\n\tAF_VENDOR09                    = 0x39\n\tAF_VENDOR10                    = 0x3b\n\tAF_VENDOR11                    = 0x3d\n\tAF_VENDOR12                    = 0x3f\n\tAF_VENDOR13                    = 0x41\n\tAF_VENDOR14                    = 0x43\n\tAF_VENDOR15                    = 0x45\n\tAF_VENDOR16                    = 0x47\n\tAF_VENDOR17                    = 0x49\n\tAF_VENDOR18                    = 0x4b\n\tAF_VENDOR19                    = 0x4d\n\tAF_VENDOR20                    = 0x4f\n\tAF_VENDOR21                    = 0x51\n\tAF_VENDOR22                    = 0x53\n\tAF_VENDOR23                    = 0x55\n\tAF_VENDOR24                    = 0x57\n\tAF_VENDOR25                    = 0x59\n\tAF_VENDOR26                    = 0x5b\n\tAF_VENDOR27                    = 0x5d\n\tAF_VENDOR28                    = 0x5f\n\tAF_VENDOR29                    = 0x61\n\tAF_VENDOR30                    = 0x63\n\tAF_VENDOR31                    = 0x65\n\tAF_VENDOR32                    = 0x67\n\tAF_VENDOR33                    = 0x69\n\tAF_VENDOR34                    = 0x6b\n\tAF_VENDOR35                    = 0x6d\n\tAF_VENDOR36                    = 0x6f\n\tAF_VENDOR37                    = 0x71\n\tAF_VENDOR38                    = 0x73\n\tAF_VENDOR39                    = 0x75\n\tAF_VENDOR40                    = 0x77\n\tAF_VENDOR41                    = 0x79\n\tAF_VENDOR42                    = 0x7b\n\tAF_VENDOR43                    = 0x7d\n\tAF_VENDOR44                    = 0x7f\n\tAF_VENDOR45                    = 0x81\n\tAF_VENDOR46                    = 0x83\n\tAF_VENDOR47                    = 0x85\n\tALTWERASE                      = 0x200\n\tB0                             = 0x0\n\tB1000000                       = 0xf4240\n\tB110                           = 0x6e\n\tB115200                        = 0x1c200\n\tB1200                          = 0x4b0\n\tB134                           = 0x86\n\tB14400                         = 0x3840\n\tB150                           = 0x96\n\tB1500000                       = 0x16e360\n\tB1800                          = 0x708\n\tB19200                         = 0x4b00\n\tB200                           = 0xc8\n\tB2000000                       = 0x1e8480\n\tB230400                        = 0x38400\n\tB2400                          = 0x960\n\tB2500000                       = 0x2625a0\n\tB28800                         = 0x7080\n\tB300                           = 0x12c\n\tB3000000                       = 0x2dc6c0\n\tB3500000                       = 0x3567e0\n\tB38400                         = 0x9600\n\tB4000000                       = 0x3d0900\n\tB460800                        = 0x70800\n\tB4800                          = 0x12c0\n\tB50                            = 0x32\n\tB500000                        = 0x7a120\n\tB57600                         = 0xe100\n\tB600                           = 0x258\n\tB7200                          = 0x1c20\n\tB75                            = 0x4b\n\tB76800                         = 0x12c00\n\tB921600                        = 0xe1000\n\tB9600                          = 0x2580\n\tBIOCFEEDBACK                   = 0x8004427c\n\tBIOCFLUSH                      = 0x20004268\n\tBIOCGBLEN                      = 0x40044266\n\tBIOCGDIRECTION                 = 0x40044276\n\tBIOCGDLT                       = 0x4004426a\n\tBIOCGDLTLIST                   = 0xc0104279\n\tBIOCGETBUFMODE                 = 0x4004427d\n\tBIOCGETIF                      = 0x4020426b\n\tBIOCGETZMAX                    = 0x4008427f\n\tBIOCGHDRCMPLT                  = 0x40044274\n\tBIOCGRSIG                      = 0x40044272\n\tBIOCGRTIMEOUT                  = 0x4010426e\n\tBIOCGSEESENT                   = 0x40044276\n\tBIOCGSTATS                     = 0x4008426f\n\tBIOCGTSTAMP                    = 0x40044283\n\tBIOCIMMEDIATE                  = 0x80044270\n\tBIOCLOCK                       = 0x2000427a\n\tBIOCPROMISC                    = 0x20004269\n\tBIOCROTZBUF                    = 0x40184280\n\tBIOCSBLEN                      = 0xc0044266\n\tBIOCSDIRECTION                 = 0x80044277\n\tBIOCSDLT                       = 0x80044278\n\tBIOCSETBUFMODE                 = 0x8004427e\n\tBIOCSETF                       = 0x80104267\n\tBIOCSETFNR                     = 0x80104282\n\tBIOCSETIF                      = 0x8020426c\n\tBIOCSETVLANPCP                 = 0x80044285\n\tBIOCSETWF                      = 0x8010427b\n\tBIOCSETZBUF                    = 0x80184281\n\tBIOCSHDRCMPLT                  = 0x80044275\n\tBIOCSRSIG                      = 0x80044273\n\tBIOCSRTIMEOUT                  = 0x8010426d\n\tBIOCSSEESENT                   = 0x80044277\n\tBIOCSTSTAMP                    = 0x80044284\n\tBIOCVERSION                    = 0x40044271\n\tBPF_A                          = 0x10\n\tBPF_ABS                        = 0x20\n\tBPF_ADD                        = 0x0\n\tBPF_ALIGNMENT                  = 0x8\n\tBPF_ALU                        = 0x4\n\tBPF_AND                        = 0x50\n\tBPF_B                          = 0x10\n\tBPF_BUFMODE_BUFFER             = 0x1\n\tBPF_BUFMODE_ZBUF               = 0x2\n\tBPF_DIV                        = 0x30\n\tBPF_H                          = 0x8\n\tBPF_IMM                        = 0x0\n\tBPF_IND                        = 0x40\n\tBPF_JA                         = 0x0\n\tBPF_JEQ                        = 0x10\n\tBPF_JGE                        = 0x30\n\tBPF_JGT                        = 0x20\n\tBPF_JMP                        = 0x5\n\tBPF_JSET                       = 0x40\n\tBPF_K                          = 0x0\n\tBPF_LD                         = 0x0\n\tBPF_LDX                        = 0x1\n\tBPF_LEN                        = 0x80\n\tBPF_LSH                        = 0x60\n\tBPF_MAJOR_VERSION              = 0x1\n\tBPF_MAXBUFSIZE                 = 0x80000\n\tBPF_MAXINSNS                   = 0x200\n\tBPF_MEM                        = 0x60\n\tBPF_MEMWORDS                   = 0x10\n\tBPF_MINBUFSIZE                 = 0x20\n\tBPF_MINOR_VERSION              = 0x1\n\tBPF_MISC                       = 0x7\n\tBPF_MOD                        = 0x90\n\tBPF_MSH                        = 0xa0\n\tBPF_MUL                        = 0x20\n\tBPF_NEG                        = 0x80\n\tBPF_OR                         = 0x40\n\tBPF_RELEASE                    = 0x30bb6\n\tBPF_RET                        = 0x6\n\tBPF_RSH                        = 0x70\n\tBPF_ST                         = 0x2\n\tBPF_STX                        = 0x3\n\tBPF_SUB                        = 0x10\n\tBPF_TAX                        = 0x0\n\tBPF_TXA                        = 0x80\n\tBPF_T_BINTIME                  = 0x2\n\tBPF_T_BINTIME_FAST             = 0x102\n\tBPF_T_BINTIME_MONOTONIC        = 0x202\n\tBPF_T_BINTIME_MONOTONIC_FAST   = 0x302\n\tBPF_T_FAST                     = 0x100\n\tBPF_T_FLAG_MASK                = 0x300\n\tBPF_T_FORMAT_MASK              = 0x3\n\tBPF_T_MICROTIME                = 0x0\n\tBPF_T_MICROTIME_FAST           = 0x100\n\tBPF_T_MICROTIME_MONOTONIC      = 0x200\n\tBPF_T_MICROTIME_MONOTONIC_FAST = 0x300\n\tBPF_T_MONOTONIC                = 0x200\n\tBPF_T_MONOTONIC_FAST           = 0x300\n\tBPF_T_NANOTIME                 = 0x1\n\tBPF_T_NANOTIME_FAST            = 0x101\n\tBPF_T_NANOTIME_MONOTONIC       = 0x201\n\tBPF_T_NANOTIME_MONOTONIC_FAST  = 0x301\n\tBPF_T_NONE                     = 0x3\n\tBPF_T_NORMAL                   = 0x0\n\tBPF_W                          = 0x0\n\tBPF_X                          = 0x8\n\tBPF_XOR                        = 0xa0\n\tBRKINT                         = 0x2\n\tCAP_ACCEPT                     = 0x200000020000000\n\tCAP_ACL_CHECK                  = 0x400000000010000\n\tCAP_ACL_DELETE                 = 0x400000000020000\n\tCAP_ACL_GET                    = 0x400000000040000\n\tCAP_ACL_SET                    = 0x400000000080000\n\tCAP_ALL0                       = 0x20007ffffffffff\n\tCAP_ALL1                       = 0x4000000001fffff\n\tCAP_BIND                       = 0x200000040000000\n\tCAP_BINDAT                     = 0x200008000000400\n\tCAP_CHFLAGSAT                  = 0x200000000001400\n\tCAP_CONNECT                    = 0x200000080000000\n\tCAP_CONNECTAT                  = 0x200010000000400\n\tCAP_CREATE                     = 0x200000000000040\n\tCAP_EVENT                      = 0x400000000000020\n\tCAP_EXTATTR_DELETE             = 0x400000000001000\n\tCAP_EXTATTR_GET                = 0x400000000002000\n\tCAP_EXTATTR_LIST               = 0x400000000004000\n\tCAP_EXTATTR_SET                = 0x400000000008000\n\tCAP_FCHDIR                     = 0x200000000000800\n\tCAP_FCHFLAGS                   = 0x200000000001000\n\tCAP_FCHMOD                     = 0x200000000002000\n\tCAP_FCHMODAT                   = 0x200000000002400\n\tCAP_FCHOWN                     = 0x200000000004000\n\tCAP_FCHOWNAT                   = 0x200000000004400\n\tCAP_FCNTL                      = 0x200000000008000\n\tCAP_FCNTL_ALL                  = 0x78\n\tCAP_FCNTL_GETFL                = 0x8\n\tCAP_FCNTL_GETOWN               = 0x20\n\tCAP_FCNTL_SETFL                = 0x10\n\tCAP_FCNTL_SETOWN               = 0x40\n\tCAP_FEXECVE                    = 0x200000000000080\n\tCAP_FLOCK                      = 0x200000000010000\n\tCAP_FPATHCONF                  = 0x200000000020000\n\tCAP_FSCK                       = 0x200000000040000\n\tCAP_FSTAT                      = 0x200000000080000\n\tCAP_FSTATAT                    = 0x200000000080400\n\tCAP_FSTATFS                    = 0x200000000100000\n\tCAP_FSYNC                      = 0x200000000000100\n\tCAP_FTRUNCATE                  = 0x200000000000200\n\tCAP_FUTIMES                    = 0x200000000200000\n\tCAP_FUTIMESAT                  = 0x200000000200400\n\tCAP_GETPEERNAME                = 0x200000100000000\n\tCAP_GETSOCKNAME                = 0x200000200000000\n\tCAP_GETSOCKOPT                 = 0x200000400000000\n\tCAP_IOCTL                      = 0x400000000000080\n\tCAP_IOCTLS_ALL                 = 0x7fffffffffffffff\n\tCAP_KQUEUE                     = 0x400000000100040\n\tCAP_KQUEUE_CHANGE              = 0x400000000100000\n\tCAP_KQUEUE_EVENT               = 0x400000000000040\n\tCAP_LINKAT_SOURCE              = 0x200020000000400\n\tCAP_LINKAT_TARGET              = 0x200000000400400\n\tCAP_LISTEN                     = 0x200000800000000\n\tCAP_LOOKUP                     = 0x200000000000400\n\tCAP_MAC_GET                    = 0x400000000000001\n\tCAP_MAC_SET                    = 0x400000000000002\n\tCAP_MKDIRAT                    = 0x200000000800400\n\tCAP_MKFIFOAT                   = 0x200000001000400\n\tCAP_MKNODAT                    = 0x200000002000400\n\tCAP_MMAP                       = 0x200000000000010\n\tCAP_MMAP_R                     = 0x20000000000001d\n\tCAP_MMAP_RW                    = 0x20000000000001f\n\tCAP_MMAP_RWX                   = 0x20000000000003f\n\tCAP_MMAP_RX                    = 0x20000000000003d\n\tCAP_MMAP_W                     = 0x20000000000001e\n\tCAP_MMAP_WX                    = 0x20000000000003e\n\tCAP_MMAP_X                     = 0x20000000000003c\n\tCAP_PDGETPID                   = 0x400000000000200\n\tCAP_PDKILL                     = 0x400000000000800\n\tCAP_PDWAIT                     = 0x400000000000400\n\tCAP_PEELOFF                    = 0x200001000000000\n\tCAP_POLL_EVENT                 = 0x400000000000020\n\tCAP_PREAD                      = 0x20000000000000d\n\tCAP_PWRITE                     = 0x20000000000000e\n\tCAP_READ                       = 0x200000000000001\n\tCAP_RECV                       = 0x200000000000001\n\tCAP_RENAMEAT_SOURCE            = 0x200000004000400\n\tCAP_RENAMEAT_TARGET            = 0x200040000000400\n\tCAP_RIGHTS_VERSION             = 0x0\n\tCAP_RIGHTS_VERSION_00          = 0x0\n\tCAP_SEEK                       = 0x20000000000000c\n\tCAP_SEEK_TELL                  = 0x200000000000004\n\tCAP_SEM_GETVALUE               = 0x400000000000004\n\tCAP_SEM_POST                   = 0x400000000000008\n\tCAP_SEM_WAIT                   = 0x400000000000010\n\tCAP_SEND                       = 0x200000000000002\n\tCAP_SETSOCKOPT                 = 0x200002000000000\n\tCAP_SHUTDOWN                   = 0x200004000000000\n\tCAP_SOCK_CLIENT                = 0x200007780000003\n\tCAP_SOCK_SERVER                = 0x200007f60000003\n\tCAP_SYMLINKAT                  = 0x200000008000400\n\tCAP_TTYHOOK                    = 0x400000000000100\n\tCAP_UNLINKAT                   = 0x200000010000400\n\tCAP_UNUSED0_44                 = 0x200080000000000\n\tCAP_UNUSED0_57                 = 0x300000000000000\n\tCAP_UNUSED1_22                 = 0x400000000200000\n\tCAP_UNUSED1_57                 = 0x500000000000000\n\tCAP_WRITE                      = 0x200000000000002\n\tCFLUSH                         = 0xf\n\tCLOCAL                         = 0x8000\n\tCLOCK_BOOTTIME                 = 0x5\n\tCLOCK_MONOTONIC                = 0x4\n\tCLOCK_MONOTONIC_COARSE         = 0xc\n\tCLOCK_MONOTONIC_FAST           = 0xc\n\tCLOCK_MONOTONIC_PRECISE        = 0xb\n\tCLOCK_PROCESS_CPUTIME_ID       = 0xf\n\tCLOCK_PROF                     = 0x2\n\tCLOCK_REALTIME                 = 0x0\n\tCLOCK_REALTIME_COARSE          = 0xa\n\tCLOCK_REALTIME_FAST            = 0xa\n\tCLOCK_REALTIME_PRECISE         = 0x9\n\tCLOCK_SECOND                   = 0xd\n\tCLOCK_THREAD_CPUTIME_ID        = 0xe\n\tCLOCK_UPTIME                   = 0x5\n\tCLOCK_UPTIME_FAST              = 0x8\n\tCLOCK_UPTIME_PRECISE           = 0x7\n\tCLOCK_VIRTUAL                  = 0x1\n\tCPUSTATES                      = 0x5\n\tCP_IDLE                        = 0x4\n\tCP_INTR                        = 0x3\n\tCP_NICE                        = 0x1\n\tCP_SYS                         = 0x2\n\tCP_USER                        = 0x0\n\tCREAD                          = 0x800\n\tCRTSCTS                        = 0x30000\n\tCS5                            = 0x0\n\tCS6                            = 0x100\n\tCS7                            = 0x200\n\tCS8                            = 0x300\n\tCSIZE                          = 0x300\n\tCSTART                         = 0x11\n\tCSTATUS                        = 0x14\n\tCSTOP                          = 0x13\n\tCSTOPB                         = 0x400\n\tCSUSP                          = 0x1a\n\tCTL_HW                         = 0x6\n\tCTL_KERN                       = 0x1\n\tCTL_MAXNAME                    = 0x18\n\tCTL_NET                        = 0x4\n\tDIOCGATTR                      = 0xc148648e\n\tDIOCGDELETE                    = 0x80106488\n\tDIOCGFLUSH                     = 0x20006487\n\tDIOCGFWHEADS                   = 0x40046483\n\tDIOCGFWSECTORS                 = 0x40046482\n\tDIOCGIDENT                     = 0x41006489\n\tDIOCGKERNELDUMP                = 0xc0986492\n\tDIOCGMEDIASIZE                 = 0x40086481\n\tDIOCGPHYSPATH                  = 0x4400648d\n\tDIOCGPROVIDERNAME              = 0x4400648a\n\tDIOCGSECTORSIZE                = 0x40046480\n\tDIOCGSTRIPEOFFSET              = 0x4008648c\n\tDIOCGSTRIPESIZE                = 0x4008648b\n\tDIOCSKERNELDUMP                = 0x80986491\n\tDIOCSKERNELDUMP_FREEBSD11      = 0x80046485\n\tDIOCSKERNELDUMP_FREEBSD12      = 0x80506490\n\tDIOCZONECMD                    = 0xc080648f\n\tDLT_A429                       = 0xb8\n\tDLT_A653_ICM                   = 0xb9\n\tDLT_AIRONET_HEADER             = 0x78\n\tDLT_AOS                        = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394     = 0x8a\n\tDLT_ARCNET                     = 0x7\n\tDLT_ARCNET_LINUX               = 0x81\n\tDLT_ATM_CLIP                   = 0x13\n\tDLT_ATM_RFC1483                = 0xb\n\tDLT_AURORA                     = 0x7e\n\tDLT_AX25                       = 0x3\n\tDLT_AX25_KISS                  = 0xca\n\tDLT_BACNET_MS_TP               = 0xa5\n\tDLT_BLUETOOTH_BREDR_BB         = 0xff\n\tDLT_BLUETOOTH_HCI_H4           = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9\n\tDLT_BLUETOOTH_LE_LL            = 0xfb\n\tDLT_BLUETOOTH_LE_LL_WITH_PHDR  = 0x100\n\tDLT_BLUETOOTH_LINUX_MONITOR    = 0xfe\n\tDLT_CAN20B                     = 0xbe\n\tDLT_CAN_SOCKETCAN              = 0xe3\n\tDLT_CHAOS                      = 0x5\n\tDLT_CHDLC                      = 0x68\n\tDLT_CISCO_IOS                  = 0x76\n\tDLT_CLASS_NETBSD_RAWAF         = 0x2240000\n\tDLT_C_HDLC                     = 0x68\n\tDLT_C_HDLC_WITH_DIR            = 0xcd\n\tDLT_DBUS                       = 0xe7\n\tDLT_DECT                       = 0xdd\n\tDLT_DISPLAYPORT_AUX            = 0x113\n\tDLT_DOCSIS                     = 0x8f\n\tDLT_DOCSIS31_XRA31             = 0x111\n\tDLT_DVB_CI                     = 0xeb\n\tDLT_ECONET                     = 0x73\n\tDLT_EN10MB                     = 0x1\n\tDLT_EN3MB                      = 0x2\n\tDLT_ENC                        = 0x6d\n\tDLT_EPON                       = 0x103\n\tDLT_ERF                        = 0xc5\n\tDLT_ERF_ETH                    = 0xaf\n\tDLT_ERF_POS                    = 0xb0\n\tDLT_ETHERNET_MPACKET           = 0x112\n\tDLT_FC_2                       = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS     = 0xe1\n\tDLT_FDDI                       = 0xa\n\tDLT_FLEXRAY                    = 0xd2\n\tDLT_FRELAY                     = 0x6b\n\tDLT_FRELAY_WITH_DIR            = 0xce\n\tDLT_GCOM_SERIAL                = 0xad\n\tDLT_GCOM_T1E1                  = 0xac\n\tDLT_GPF_F                      = 0xab\n\tDLT_GPF_T                      = 0xaa\n\tDLT_GPRS_LLC                   = 0xa9\n\tDLT_GSMTAP_ABIS                = 0xda\n\tDLT_GSMTAP_UM                  = 0xd9\n\tDLT_IBM_SN                     = 0x92\n\tDLT_IBM_SP                     = 0x91\n\tDLT_IEEE802                    = 0x6\n\tDLT_IEEE802_11                 = 0x69\n\tDLT_IEEE802_11_RADIO           = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS       = 0xa3\n\tDLT_IEEE802_15_4               = 0xc3\n\tDLT_IEEE802_15_4_LINUX         = 0xbf\n\tDLT_IEEE802_15_4_NOFCS         = 0xe6\n\tDLT_IEEE802_15_4_NONASK_PHY    = 0xd7\n\tDLT_IEEE802_16_MAC_CPS         = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO   = 0xc1\n\tDLT_INFINIBAND                 = 0xf7\n\tDLT_IPFILTER                   = 0x74\n\tDLT_IPMB_KONTRON               = 0xc7\n\tDLT_IPMB_LINUX                 = 0xd1\n\tDLT_IPMI_HPM_2                 = 0x104\n\tDLT_IPNET                      = 0xe2\n\tDLT_IPOIB                      = 0xf2\n\tDLT_IPV4                       = 0xe4\n\tDLT_IPV6                       = 0xe5\n\tDLT_IP_OVER_FC                 = 0x7a\n\tDLT_ISO_14443                  = 0x108\n\tDLT_JUNIPER_ATM1               = 0x89\n\tDLT_JUNIPER_ATM2               = 0x87\n\tDLT_JUNIPER_ATM_CEMIC          = 0xee\n\tDLT_JUNIPER_CHDLC              = 0xb5\n\tDLT_JUNIPER_ES                 = 0x84\n\tDLT_JUNIPER_ETHER              = 0xb2\n\tDLT_JUNIPER_FIBRECHANNEL       = 0xea\n\tDLT_JUNIPER_FRELAY             = 0xb4\n\tDLT_JUNIPER_GGSN               = 0x85\n\tDLT_JUNIPER_ISM                = 0xc2\n\tDLT_JUNIPER_MFR                = 0x86\n\tDLT_JUNIPER_MLFR               = 0x83\n\tDLT_JUNIPER_MLPPP              = 0x82\n\tDLT_JUNIPER_MONITOR            = 0xa4\n\tDLT_JUNIPER_PIC_PEER           = 0xae\n\tDLT_JUNIPER_PPP                = 0xb3\n\tDLT_JUNIPER_PPPOE              = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM          = 0xa8\n\tDLT_JUNIPER_SERVICES           = 0x88\n\tDLT_JUNIPER_SRX_E2E            = 0xe9\n\tDLT_JUNIPER_ST                 = 0xc8\n\tDLT_JUNIPER_VP                 = 0xb7\n\tDLT_JUNIPER_VS                 = 0xe8\n\tDLT_LAPB_WITH_DIR              = 0xcf\n\tDLT_LAPD                       = 0xcb\n\tDLT_LIN                        = 0xd4\n\tDLT_LINUX_EVDEV                = 0xd8\n\tDLT_LINUX_IRDA                 = 0x90\n\tDLT_LINUX_LAPD                 = 0xb1\n\tDLT_LINUX_PPP_WITHDIRECTION    = 0xa6\n\tDLT_LINUX_SLL                  = 0x71\n\tDLT_LINUX_SLL2                 = 0x114\n\tDLT_LOOP                       = 0x6c\n\tDLT_LORATAP                    = 0x10e\n\tDLT_LTALK                      = 0x72\n\tDLT_MATCHING_MAX               = 0x114\n\tDLT_MATCHING_MIN               = 0x68\n\tDLT_MFR                        = 0xb6\n\tDLT_MOST                       = 0xd3\n\tDLT_MPEG_2_TS                  = 0xf3\n\tDLT_MPLS                       = 0xdb\n\tDLT_MTP2                       = 0x8c\n\tDLT_MTP2_WITH_PHDR             = 0x8b\n\tDLT_MTP3                       = 0x8d\n\tDLT_MUX27010                   = 0xec\n\tDLT_NETANALYZER                = 0xf0\n\tDLT_NETANALYZER_TRANSPARENT    = 0xf1\n\tDLT_NETLINK                    = 0xfd\n\tDLT_NFC_LLCP                   = 0xf5\n\tDLT_NFLOG                      = 0xef\n\tDLT_NG40                       = 0xf4\n\tDLT_NORDIC_BLE                 = 0x110\n\tDLT_NULL                       = 0x0\n\tDLT_OPENFLOW                   = 0x10b\n\tDLT_PCI_EXP                    = 0x7d\n\tDLT_PFLOG                      = 0x75\n\tDLT_PFSYNC                     = 0x79\n\tDLT_PKTAP                      = 0x102\n\tDLT_PPI                        = 0xc0\n\tDLT_PPP                        = 0x9\n\tDLT_PPP_BSDOS                  = 0xe\n\tDLT_PPP_ETHER                  = 0x33\n\tDLT_PPP_PPPD                   = 0xa6\n\tDLT_PPP_SERIAL                 = 0x32\n\tDLT_PPP_WITH_DIR               = 0xcc\n\tDLT_PPP_WITH_DIRECTION         = 0xa6\n\tDLT_PRISM_HEADER               = 0x77\n\tDLT_PROFIBUS_DL                = 0x101\n\tDLT_PRONET                     = 0x4\n\tDLT_RAIF1                      = 0xc6\n\tDLT_RAW                        = 0xc\n\tDLT_RDS                        = 0x109\n\tDLT_REDBACK_SMARTEDGE          = 0x20\n\tDLT_RIO                        = 0x7c\n\tDLT_RTAC_SERIAL                = 0xfa\n\tDLT_SCCP                       = 0x8e\n\tDLT_SCTP                       = 0xf8\n\tDLT_SDLC                       = 0x10c\n\tDLT_SITA                       = 0xc4\n\tDLT_SLIP                       = 0x8\n\tDLT_SLIP_BSDOS                 = 0xd\n\tDLT_STANAG_5066_D_PDU          = 0xed\n\tDLT_SUNATM                     = 0x7b\n\tDLT_SYMANTEC_FIREWALL          = 0x63\n\tDLT_TI_LLN_SNIFFER             = 0x10d\n\tDLT_TZSP                       = 0x80\n\tDLT_USB                        = 0xba\n\tDLT_USBPCAP                    = 0xf9\n\tDLT_USB_DARWIN                 = 0x10a\n\tDLT_USB_FREEBSD                = 0xba\n\tDLT_USB_LINUX                  = 0xbd\n\tDLT_USB_LINUX_MMAPPED          = 0xdc\n\tDLT_USER0                      = 0x93\n\tDLT_USER1                      = 0x94\n\tDLT_USER10                     = 0x9d\n\tDLT_USER11                     = 0x9e\n\tDLT_USER12                     = 0x9f\n\tDLT_USER13                     = 0xa0\n\tDLT_USER14                     = 0xa1\n\tDLT_USER15                     = 0xa2\n\tDLT_USER2                      = 0x95\n\tDLT_USER3                      = 0x96\n\tDLT_USER4                      = 0x97\n\tDLT_USER5                      = 0x98\n\tDLT_USER6                      = 0x99\n\tDLT_USER7                      = 0x9a\n\tDLT_USER8                      = 0x9b\n\tDLT_USER9                      = 0x9c\n\tDLT_VSOCK                      = 0x10f\n\tDLT_WATTSTOPPER_DLM            = 0x107\n\tDLT_WIHART                     = 0xdf\n\tDLT_WIRESHARK_UPPER_PDU        = 0xfc\n\tDLT_X2E_SERIAL                 = 0xd5\n\tDLT_X2E_XORAYA                 = 0xd6\n\tDLT_ZWAVE_R1_R2                = 0x105\n\tDLT_ZWAVE_R3                   = 0x106\n\tDT_BLK                         = 0x6\n\tDT_CHR                         = 0x2\n\tDT_DIR                         = 0x4\n\tDT_FIFO                        = 0x1\n\tDT_LNK                         = 0xa\n\tDT_REG                         = 0x8\n\tDT_SOCK                        = 0xc\n\tDT_UNKNOWN                     = 0x0\n\tDT_WHT                         = 0xe\n\tECHO                           = 0x8\n\tECHOCTL                        = 0x40\n\tECHOE                          = 0x2\n\tECHOK                          = 0x4\n\tECHOKE                         = 0x1\n\tECHONL                         = 0x10\n\tECHOPRT                        = 0x20\n\tEHE_DEAD_PRIORITY              = -0x1\n\tEVFILT_AIO                     = -0x3\n\tEVFILT_EMPTY                   = -0xd\n\tEVFILT_FS                      = -0x9\n\tEVFILT_LIO                     = -0xa\n\tEVFILT_PROC                    = -0x5\n\tEVFILT_PROCDESC                = -0x8\n\tEVFILT_READ                    = -0x1\n\tEVFILT_SENDFILE                = -0xc\n\tEVFILT_SIGNAL                  = -0x6\n\tEVFILT_SYSCOUNT                = 0xd\n\tEVFILT_TIMER                   = -0x7\n\tEVFILT_USER                    = -0xb\n\tEVFILT_VNODE                   = -0x4\n\tEVFILT_WRITE                   = -0x2\n\tEVNAMEMAP_NAME_SIZE            = 0x40\n\tEV_ADD                         = 0x1\n\tEV_CLEAR                       = 0x20\n\tEV_DELETE                      = 0x2\n\tEV_DISABLE                     = 0x8\n\tEV_DISPATCH                    = 0x80\n\tEV_DROP                        = 0x1000\n\tEV_ENABLE                      = 0x4\n\tEV_EOF                         = 0x8000\n\tEV_ERROR                       = 0x4000\n\tEV_FLAG1                       = 0x2000\n\tEV_FLAG2                       = 0x4000\n\tEV_FORCEONESHOT                = 0x100\n\tEV_ONESHOT                     = 0x10\n\tEV_RECEIPT                     = 0x40\n\tEV_SYSFLAGS                    = 0xf000\n\tEXTA                           = 0x4b00\n\tEXTATTR_MAXNAMELEN             = 0xff\n\tEXTATTR_NAMESPACE_EMPTY        = 0x0\n\tEXTATTR_NAMESPACE_SYSTEM       = 0x2\n\tEXTATTR_NAMESPACE_USER         = 0x1\n\tEXTB                           = 0x9600\n\tEXTPROC                        = 0x800\n\tFD_CLOEXEC                     = 0x1\n\tFD_NONE                        = -0xc8\n\tFD_SETSIZE                     = 0x400\n\tFLUSHO                         = 0x800000\n\tF_ADD_SEALS                    = 0x13\n\tF_CANCEL                       = 0x5\n\tF_DUP2FD                       = 0xa\n\tF_DUP2FD_CLOEXEC               = 0x12\n\tF_DUPFD                        = 0x0\n\tF_DUPFD_CLOEXEC                = 0x11\n\tF_GETFD                        = 0x1\n\tF_GETFL                        = 0x3\n\tF_GETLK                        = 0xb\n\tF_GETOWN                       = 0x5\n\tF_GET_SEALS                    = 0x14\n\tF_ISUNIONSTACK                 = 0x15\n\tF_KINFO                        = 0x16\n\tF_OGETLK                       = 0x7\n\tF_OK                           = 0x0\n\tF_OSETLK                       = 0x8\n\tF_OSETLKW                      = 0x9\n\tF_RDAHEAD                      = 0x10\n\tF_RDLCK                        = 0x1\n\tF_READAHEAD                    = 0xf\n\tF_SEAL_GROW                    = 0x4\n\tF_SEAL_SEAL                    = 0x1\n\tF_SEAL_SHRINK                  = 0x2\n\tF_SEAL_WRITE                   = 0x8\n\tF_SETFD                        = 0x2\n\tF_SETFL                        = 0x4\n\tF_SETLK                        = 0xc\n\tF_SETLKW                       = 0xd\n\tF_SETLK_REMOTE                 = 0xe\n\tF_SETOWN                       = 0x6\n\tF_UNLCK                        = 0x2\n\tF_UNLCKSYS                     = 0x4\n\tF_WRLCK                        = 0x3\n\tHUPCL                          = 0x4000\n\tHW_MACHINE                     = 0x1\n\tICANON                         = 0x100\n\tICMP6_FILTER                   = 0x12\n\tICRNL                          = 0x100\n\tIEXTEN                         = 0x400\n\tIFAN_ARRIVAL                   = 0x0\n\tIFAN_DEPARTURE                 = 0x1\n\tIFCAP_WOL_MAGIC                = 0x2000\n\tIFF_ALLMULTI                   = 0x200\n\tIFF_ALTPHYS                    = 0x4000\n\tIFF_BROADCAST                  = 0x2\n\tIFF_CANTCHANGE                 = 0x218f72\n\tIFF_CANTCONFIG                 = 0x10000\n\tIFF_DEBUG                      = 0x4\n\tIFF_DRV_OACTIVE                = 0x400\n\tIFF_DRV_RUNNING                = 0x40\n\tIFF_DYING                      = 0x200000\n\tIFF_KNOWSEPOCH                 = 0x20\n\tIFF_LINK0                      = 0x1000\n\tIFF_LINK1                      = 0x2000\n\tIFF_LINK2                      = 0x4000\n\tIFF_LOOPBACK                   = 0x8\n\tIFF_MONITOR                    = 0x40000\n\tIFF_MULTICAST                  = 0x8000\n\tIFF_NOARP                      = 0x80\n\tIFF_NOGROUP                    = 0x800000\n\tIFF_OACTIVE                    = 0x400\n\tIFF_POINTOPOINT                = 0x10\n\tIFF_PPROMISC                   = 0x20000\n\tIFF_PROMISC                    = 0x100\n\tIFF_RENAMING                   = 0x400000\n\tIFF_RUNNING                    = 0x40\n\tIFF_SIMPLEX                    = 0x800\n\tIFF_STATICARP                  = 0x80000\n\tIFF_UP                         = 0x1\n\tIFNAMSIZ                       = 0x10\n\tIFT_BRIDGE                     = 0xd1\n\tIFT_CARP                       = 0xf8\n\tIFT_IEEE1394                   = 0x90\n\tIFT_INFINIBAND                 = 0xc7\n\tIFT_L2VLAN                     = 0x87\n\tIFT_L3IPVLAN                   = 0x88\n\tIFT_PPP                        = 0x17\n\tIFT_PROPVIRTUAL                = 0x35\n\tIGNBRK                         = 0x1\n\tIGNCR                          = 0x80\n\tIGNPAR                         = 0x4\n\tIMAXBEL                        = 0x2000\n\tINLCR                          = 0x40\n\tINPCK                          = 0x10\n\tIN_CLASSA_HOST                 = 0xffffff\n\tIN_CLASSA_MAX                  = 0x80\n\tIN_CLASSA_NET                  = 0xff000000\n\tIN_CLASSA_NSHIFT               = 0x18\n\tIN_CLASSB_HOST                 = 0xffff\n\tIN_CLASSB_MAX                  = 0x10000\n\tIN_CLASSB_NET                  = 0xffff0000\n\tIN_CLASSB_NSHIFT               = 0x10\n\tIN_CLASSC_HOST                 = 0xff\n\tIN_CLASSC_NET                  = 0xffffff00\n\tIN_CLASSC_NSHIFT               = 0x8\n\tIN_CLASSD_HOST                 = 0xfffffff\n\tIN_CLASSD_NET                  = 0xf0000000\n\tIN_CLASSD_NSHIFT               = 0x1c\n\tIN_LOOPBACKNET                 = 0x7f\n\tIN_NETMASK_DEFAULT             = 0xffffff00\n\tIN_RFC3021_MASK                = 0xfffffffe\n\tIPPROTO_3PC                    = 0x22\n\tIPPROTO_ADFS                   = 0x44\n\tIPPROTO_AH                     = 0x33\n\tIPPROTO_AHIP                   = 0x3d\n\tIPPROTO_APES                   = 0x63\n\tIPPROTO_ARGUS                  = 0xd\n\tIPPROTO_AX25                   = 0x5d\n\tIPPROTO_BHA                    = 0x31\n\tIPPROTO_BLT                    = 0x1e\n\tIPPROTO_BRSATMON               = 0x4c\n\tIPPROTO_CARP                   = 0x70\n\tIPPROTO_CFTP                   = 0x3e\n\tIPPROTO_CHAOS                  = 0x10\n\tIPPROTO_CMTP                   = 0x26\n\tIPPROTO_CPHB                   = 0x49\n\tIPPROTO_CPNX                   = 0x48\n\tIPPROTO_DCCP                   = 0x21\n\tIPPROTO_DDP                    = 0x25\n\tIPPROTO_DGP                    = 0x56\n\tIPPROTO_DIVERT                 = 0x102\n\tIPPROTO_DONE                   = 0x101\n\tIPPROTO_DSTOPTS                = 0x3c\n\tIPPROTO_EGP                    = 0x8\n\tIPPROTO_EMCON                  = 0xe\n\tIPPROTO_ENCAP                  = 0x62\n\tIPPROTO_EON                    = 0x50\n\tIPPROTO_ESP                    = 0x32\n\tIPPROTO_ETHERIP                = 0x61\n\tIPPROTO_FRAGMENT               = 0x2c\n\tIPPROTO_GGP                    = 0x3\n\tIPPROTO_GMTP                   = 0x64\n\tIPPROTO_GRE                    = 0x2f\n\tIPPROTO_HELLO                  = 0x3f\n\tIPPROTO_HIP                    = 0x8b\n\tIPPROTO_HMP                    = 0x14\n\tIPPROTO_HOPOPTS                = 0x0\n\tIPPROTO_ICMP                   = 0x1\n\tIPPROTO_ICMPV6                 = 0x3a\n\tIPPROTO_IDP                    = 0x16\n\tIPPROTO_IDPR                   = 0x23\n\tIPPROTO_IDRP                   = 0x2d\n\tIPPROTO_IGMP                   = 0x2\n\tIPPROTO_IGP                    = 0x55\n\tIPPROTO_IGRP                   = 0x58\n\tIPPROTO_IL                     = 0x28\n\tIPPROTO_INLSP                  = 0x34\n\tIPPROTO_INP                    = 0x20\n\tIPPROTO_IP                     = 0x0\n\tIPPROTO_IPCOMP                 = 0x6c\n\tIPPROTO_IPCV                   = 0x47\n\tIPPROTO_IPEIP                  = 0x5e\n\tIPPROTO_IPIP                   = 0x4\n\tIPPROTO_IPPC                   = 0x43\n\tIPPROTO_IPV4                   = 0x4\n\tIPPROTO_IPV6                   = 0x29\n\tIPPROTO_IRTP                   = 0x1c\n\tIPPROTO_KRYPTOLAN              = 0x41\n\tIPPROTO_LARP                   = 0x5b\n\tIPPROTO_LEAF1                  = 0x19\n\tIPPROTO_LEAF2                  = 0x1a\n\tIPPROTO_MAX                    = 0x100\n\tIPPROTO_MEAS                   = 0x13\n\tIPPROTO_MH                     = 0x87\n\tIPPROTO_MHRP                   = 0x30\n\tIPPROTO_MICP                   = 0x5f\n\tIPPROTO_MOBILE                 = 0x37\n\tIPPROTO_MPLS                   = 0x89\n\tIPPROTO_MTP                    = 0x5c\n\tIPPROTO_MUX                    = 0x12\n\tIPPROTO_ND                     = 0x4d\n\tIPPROTO_NHRP                   = 0x36\n\tIPPROTO_NONE                   = 0x3b\n\tIPPROTO_NSP                    = 0x1f\n\tIPPROTO_NVPII                  = 0xb\n\tIPPROTO_OLD_DIVERT             = 0xfe\n\tIPPROTO_OSPFIGP                = 0x59\n\tIPPROTO_PFSYNC                 = 0xf0\n\tIPPROTO_PGM                    = 0x71\n\tIPPROTO_PIGP                   = 0x9\n\tIPPROTO_PIM                    = 0x67\n\tIPPROTO_PRM                    = 0x15\n\tIPPROTO_PUP                    = 0xc\n\tIPPROTO_PVP                    = 0x4b\n\tIPPROTO_RAW                    = 0xff\n\tIPPROTO_RCCMON                 = 0xa\n\tIPPROTO_RDP                    = 0x1b\n\tIPPROTO_RESERVED_253           = 0xfd\n\tIPPROTO_RESERVED_254           = 0xfe\n\tIPPROTO_ROUTING                = 0x2b\n\tIPPROTO_RSVP                   = 0x2e\n\tIPPROTO_RVD                    = 0x42\n\tIPPROTO_SATEXPAK               = 0x40\n\tIPPROTO_SATMON                 = 0x45\n\tIPPROTO_SCCSP                  = 0x60\n\tIPPROTO_SCTP                   = 0x84\n\tIPPROTO_SDRP                   = 0x2a\n\tIPPROTO_SEND                   = 0x103\n\tIPPROTO_SHIM6                  = 0x8c\n\tIPPROTO_SKIP                   = 0x39\n\tIPPROTO_SPACER                 = 0x7fff\n\tIPPROTO_SRPC                   = 0x5a\n\tIPPROTO_ST                     = 0x7\n\tIPPROTO_SVMTP                  = 0x52\n\tIPPROTO_SWIPE                  = 0x35\n\tIPPROTO_TCF                    = 0x57\n\tIPPROTO_TCP                    = 0x6\n\tIPPROTO_TLSP                   = 0x38\n\tIPPROTO_TP                     = 0x1d\n\tIPPROTO_TPXX                   = 0x27\n\tIPPROTO_TRUNK1                 = 0x17\n\tIPPROTO_TRUNK2                 = 0x18\n\tIPPROTO_TTP                    = 0x54\n\tIPPROTO_UDP                    = 0x11\n\tIPPROTO_UDPLITE                = 0x88\n\tIPPROTO_VINES                  = 0x53\n\tIPPROTO_VISA                   = 0x46\n\tIPPROTO_VMTP                   = 0x51\n\tIPPROTO_WBEXPAK                = 0x4f\n\tIPPROTO_WBMON                  = 0x4e\n\tIPPROTO_WSN                    = 0x4a\n\tIPPROTO_XNET                   = 0xf\n\tIPPROTO_XTP                    = 0x24\n\tIPV6_AUTOFLOWLABEL             = 0x3b\n\tIPV6_BINDANY                   = 0x40\n\tIPV6_BINDMULTI                 = 0x41\n\tIPV6_BINDV6ONLY                = 0x1b\n\tIPV6_CHECKSUM                  = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS    = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP    = 0x1\n\tIPV6_DEFHLIM                   = 0x40\n\tIPV6_DONTFRAG                  = 0x3e\n\tIPV6_DSTOPTS                   = 0x32\n\tIPV6_FLOWID                    = 0x43\n\tIPV6_FLOWINFO_MASK             = 0xffffff0f\n\tIPV6_FLOWLABEL_LEN             = 0x14\n\tIPV6_FLOWLABEL_MASK            = 0xffff0f00\n\tIPV6_FLOWTYPE                  = 0x44\n\tIPV6_FRAGTTL                   = 0x78\n\tIPV6_FW_ADD                    = 0x1e\n\tIPV6_FW_DEL                    = 0x1f\n\tIPV6_FW_FLUSH                  = 0x20\n\tIPV6_FW_GET                    = 0x22\n\tIPV6_FW_ZERO                   = 0x21\n\tIPV6_HLIMDEC                   = 0x1\n\tIPV6_HOPLIMIT                  = 0x2f\n\tIPV6_HOPOPTS                   = 0x31\n\tIPV6_IPSEC_POLICY              = 0x1c\n\tIPV6_JOIN_GROUP                = 0xc\n\tIPV6_LEAVE_GROUP               = 0xd\n\tIPV6_MAXHLIM                   = 0xff\n\tIPV6_MAXOPTHDR                 = 0x800\n\tIPV6_MAXPACKET                 = 0xffff\n\tIPV6_MAX_GROUP_SRC_FILTER      = 0x200\n\tIPV6_MAX_MEMBERSHIPS           = 0xfff\n\tIPV6_MAX_SOCK_SRC_FILTER       = 0x80\n\tIPV6_MMTU                      = 0x500\n\tIPV6_MSFILTER                  = 0x4a\n\tIPV6_MULTICAST_HOPS            = 0xa\n\tIPV6_MULTICAST_IF              = 0x9\n\tIPV6_MULTICAST_LOOP            = 0xb\n\tIPV6_NEXTHOP                   = 0x30\n\tIPV6_ORIGDSTADDR               = 0x48\n\tIPV6_PATHMTU                   = 0x2c\n\tIPV6_PKTINFO                   = 0x2e\n\tIPV6_PORTRANGE                 = 0xe\n\tIPV6_PORTRANGE_DEFAULT         = 0x0\n\tIPV6_PORTRANGE_HIGH            = 0x1\n\tIPV6_PORTRANGE_LOW             = 0x2\n\tIPV6_PREFER_TEMPADDR           = 0x3f\n\tIPV6_RECVDSTOPTS               = 0x28\n\tIPV6_RECVFLOWID                = 0x46\n\tIPV6_RECVHOPLIMIT              = 0x25\n\tIPV6_RECVHOPOPTS               = 0x27\n\tIPV6_RECVORIGDSTADDR           = 0x48\n\tIPV6_RECVPATHMTU               = 0x2b\n\tIPV6_RECVPKTINFO               = 0x24\n\tIPV6_RECVRSSBUCKETID           = 0x47\n\tIPV6_RECVRTHDR                 = 0x26\n\tIPV6_RECVTCLASS                = 0x39\n\tIPV6_RSSBUCKETID               = 0x45\n\tIPV6_RSS_LISTEN_BUCKET         = 0x42\n\tIPV6_RTHDR                     = 0x33\n\tIPV6_RTHDRDSTOPTS              = 0x23\n\tIPV6_RTHDR_LOOSE               = 0x0\n\tIPV6_RTHDR_STRICT              = 0x1\n\tIPV6_RTHDR_TYPE_0              = 0x0\n\tIPV6_SOCKOPT_RESERVED1         = 0x3\n\tIPV6_TCLASS                    = 0x3d\n\tIPV6_UNICAST_HOPS              = 0x4\n\tIPV6_USE_MIN_MTU               = 0x2a\n\tIPV6_V6ONLY                    = 0x1b\n\tIPV6_VERSION                   = 0x60\n\tIPV6_VERSION_MASK              = 0xf0\n\tIPV6_VLAN_PCP                  = 0x4b\n\tIP_ADD_MEMBERSHIP              = 0xc\n\tIP_ADD_SOURCE_MEMBERSHIP       = 0x46\n\tIP_BINDANY                     = 0x18\n\tIP_BINDMULTI                   = 0x19\n\tIP_BLOCK_SOURCE                = 0x48\n\tIP_DEFAULT_MULTICAST_LOOP      = 0x1\n\tIP_DEFAULT_MULTICAST_TTL       = 0x1\n\tIP_DF                          = 0x4000\n\tIP_DONTFRAG                    = 0x43\n\tIP_DROP_MEMBERSHIP             = 0xd\n\tIP_DROP_SOURCE_MEMBERSHIP      = 0x47\n\tIP_DUMMYNET3                   = 0x31\n\tIP_DUMMYNET_CONFIGURE          = 0x3c\n\tIP_DUMMYNET_DEL                = 0x3d\n\tIP_DUMMYNET_FLUSH              = 0x3e\n\tIP_DUMMYNET_GET                = 0x40\n\tIP_FLOWID                      = 0x5a\n\tIP_FLOWTYPE                    = 0x5b\n\tIP_FW3                         = 0x30\n\tIP_FW_ADD                      = 0x32\n\tIP_FW_DEL                      = 0x33\n\tIP_FW_FLUSH                    = 0x34\n\tIP_FW_GET                      = 0x36\n\tIP_FW_NAT_CFG                  = 0x38\n\tIP_FW_NAT_DEL                  = 0x39\n\tIP_FW_NAT_GET_CONFIG           = 0x3a\n\tIP_FW_NAT_GET_LOG              = 0x3b\n\tIP_FW_RESETLOG                 = 0x37\n\tIP_FW_TABLE_ADD                = 0x28\n\tIP_FW_TABLE_DEL                = 0x29\n\tIP_FW_TABLE_FLUSH              = 0x2a\n\tIP_FW_TABLE_GETSIZE            = 0x2b\n\tIP_FW_TABLE_LIST               = 0x2c\n\tIP_FW_ZERO                     = 0x35\n\tIP_HDRINCL                     = 0x2\n\tIP_IPSEC_POLICY                = 0x15\n\tIP_MAXPACKET                   = 0xffff\n\tIP_MAX_GROUP_SRC_FILTER        = 0x200\n\tIP_MAX_MEMBERSHIPS             = 0xfff\n\tIP_MAX_SOCK_MUTE_FILTER        = 0x80\n\tIP_MAX_SOCK_SRC_FILTER         = 0x80\n\tIP_MF                          = 0x2000\n\tIP_MINTTL                      = 0x42\n\tIP_MSFILTER                    = 0x4a\n\tIP_MSS                         = 0x240\n\tIP_MULTICAST_IF                = 0x9\n\tIP_MULTICAST_LOOP              = 0xb\n\tIP_MULTICAST_TTL               = 0xa\n\tIP_MULTICAST_VIF               = 0xe\n\tIP_OFFMASK                     = 0x1fff\n\tIP_ONESBCAST                   = 0x17\n\tIP_OPTIONS                     = 0x1\n\tIP_ORIGDSTADDR                 = 0x1b\n\tIP_PORTRANGE                   = 0x13\n\tIP_PORTRANGE_DEFAULT           = 0x0\n\tIP_PORTRANGE_HIGH              = 0x1\n\tIP_PORTRANGE_LOW               = 0x2\n\tIP_RECVDSTADDR                 = 0x7\n\tIP_RECVFLOWID                  = 0x5d\n\tIP_RECVIF                      = 0x14\n\tIP_RECVOPTS                    = 0x5\n\tIP_RECVORIGDSTADDR             = 0x1b\n\tIP_RECVRETOPTS                 = 0x6\n\tIP_RECVRSSBUCKETID             = 0x5e\n\tIP_RECVTOS                     = 0x44\n\tIP_RECVTTL                     = 0x41\n\tIP_RETOPTS                     = 0x8\n\tIP_RF                          = 0x8000\n\tIP_RSSBUCKETID                 = 0x5c\n\tIP_RSS_LISTEN_BUCKET           = 0x1a\n\tIP_RSVP_OFF                    = 0x10\n\tIP_RSVP_ON                     = 0xf\n\tIP_RSVP_VIF_OFF                = 0x12\n\tIP_RSVP_VIF_ON                 = 0x11\n\tIP_SENDSRCADDR                 = 0x7\n\tIP_TOS                         = 0x3\n\tIP_TTL                         = 0x4\n\tIP_UNBLOCK_SOURCE              = 0x49\n\tIP_VLAN_PCP                    = 0x4b\n\tISIG                           = 0x80\n\tISTRIP                         = 0x20\n\tITIMER_PROF                    = 0x2\n\tITIMER_REAL                    = 0x0\n\tITIMER_VIRTUAL                 = 0x1\n\tIXANY                          = 0x800\n\tIXOFF                          = 0x400\n\tIXON                           = 0x200\n\tKERN_HOSTNAME                  = 0xa\n\tKERN_OSRELEASE                 = 0x2\n\tKERN_OSTYPE                    = 0x1\n\tKERN_VERSION                   = 0x4\n\tLOCAL_CONNWAIT                 = 0x4\n\tLOCAL_CREDS                    = 0x2\n\tLOCAL_CREDS_PERSISTENT         = 0x3\n\tLOCAL_PEERCRED                 = 0x1\n\tLOCAL_VENDOR                   = 0x80000000\n\tLOCK_EX                        = 0x2\n\tLOCK_NB                        = 0x4\n\tLOCK_SH                        = 0x1\n\tLOCK_UN                        = 0x8\n\tMADV_AUTOSYNC                  = 0x7\n\tMADV_CORE                      = 0x9\n\tMADV_DONTNEED                  = 0x4\n\tMADV_FREE                      = 0x5\n\tMADV_NOCORE                    = 0x8\n\tMADV_NORMAL                    = 0x0\n\tMADV_NOSYNC                    = 0x6\n\tMADV_PROTECT                   = 0xa\n\tMADV_RANDOM                    = 0x1\n\tMADV_SEQUENTIAL                = 0x2\n\tMADV_WILLNEED                  = 0x3\n\tMAP_32BIT                      = 0x80000\n\tMAP_ALIGNED_SUPER              = 0x1000000\n\tMAP_ALIGNMENT_MASK             = -0x1000000\n\tMAP_ALIGNMENT_SHIFT            = 0x18\n\tMAP_ANON                       = 0x1000\n\tMAP_ANONYMOUS                  = 0x1000\n\tMAP_COPY                       = 0x2\n\tMAP_EXCL                       = 0x4000\n\tMAP_FILE                       = 0x0\n\tMAP_FIXED                      = 0x10\n\tMAP_GUARD                      = 0x2000\n\tMAP_HASSEMAPHORE               = 0x200\n\tMAP_NOCORE                     = 0x20000\n\tMAP_NOSYNC                     = 0x800\n\tMAP_PREFAULT_READ              = 0x40000\n\tMAP_PRIVATE                    = 0x2\n\tMAP_RESERVED0020               = 0x20\n\tMAP_RESERVED0040               = 0x40\n\tMAP_RESERVED0080               = 0x80\n\tMAP_RESERVED0100               = 0x100\n\tMAP_SHARED                     = 0x1\n\tMAP_STACK                      = 0x400\n\tMCAST_BLOCK_SOURCE             = 0x54\n\tMCAST_EXCLUDE                  = 0x2\n\tMCAST_INCLUDE                  = 0x1\n\tMCAST_JOIN_GROUP               = 0x50\n\tMCAST_JOIN_SOURCE_GROUP        = 0x52\n\tMCAST_LEAVE_GROUP              = 0x51\n\tMCAST_LEAVE_SOURCE_GROUP       = 0x53\n\tMCAST_UNBLOCK_SOURCE           = 0x55\n\tMCAST_UNDEFINED                = 0x0\n\tMCL_CURRENT                    = 0x1\n\tMCL_FUTURE                     = 0x2\n\tMFD_ALLOW_SEALING              = 0x2\n\tMFD_CLOEXEC                    = 0x1\n\tMFD_HUGETLB                    = 0x4\n\tMFD_HUGE_16GB                  = -0x78000000\n\tMFD_HUGE_16MB                  = 0x60000000\n\tMFD_HUGE_1GB                   = 0x78000000\n\tMFD_HUGE_1MB                   = 0x50000000\n\tMFD_HUGE_256MB                 = 0x70000000\n\tMFD_HUGE_2GB                   = 0x7c000000\n\tMFD_HUGE_2MB                   = 0x54000000\n\tMFD_HUGE_32MB                  = 0x64000000\n\tMFD_HUGE_512KB                 = 0x4c000000\n\tMFD_HUGE_512MB                 = 0x74000000\n\tMFD_HUGE_64KB                  = 0x40000000\n\tMFD_HUGE_8MB                   = 0x5c000000\n\tMFD_HUGE_MASK                  = 0xfc000000\n\tMFD_HUGE_SHIFT                 = 0x1a\n\tMNT_ACLS                       = 0x8000000\n\tMNT_ASYNC                      = 0x40\n\tMNT_AUTOMOUNTED                = 0x200000000\n\tMNT_BYFSID                     = 0x8000000\n\tMNT_CMDFLAGS                   = 0x300d0f0000\n\tMNT_DEFEXPORTED                = 0x200\n\tMNT_DELEXPORT                  = 0x20000\n\tMNT_EMPTYDIR                   = 0x2000000000\n\tMNT_EXKERB                     = 0x800\n\tMNT_EXPORTANON                 = 0x400\n\tMNT_EXPORTED                   = 0x100\n\tMNT_EXPUBLIC                   = 0x20000000\n\tMNT_EXRDONLY                   = 0x80\n\tMNT_EXTLS                      = 0x4000000000\n\tMNT_EXTLSCERT                  = 0x8000000000\n\tMNT_EXTLSCERTUSER              = 0x10000000000\n\tMNT_FORCE                      = 0x80000\n\tMNT_GJOURNAL                   = 0x2000000\n\tMNT_IGNORE                     = 0x800000\n\tMNT_LAZY                       = 0x3\n\tMNT_LOCAL                      = 0x1000\n\tMNT_MULTILABEL                 = 0x4000000\n\tMNT_NFS4ACLS                   = 0x10\n\tMNT_NOATIME                    = 0x10000000\n\tMNT_NOCLUSTERR                 = 0x40000000\n\tMNT_NOCLUSTERW                 = 0x80000000\n\tMNT_NOCOVER                    = 0x1000000000\n\tMNT_NOEXEC                     = 0x4\n\tMNT_NONBUSY                    = 0x4000000\n\tMNT_NOSUID                     = 0x8\n\tMNT_NOSYMFOLLOW                = 0x400000\n\tMNT_NOWAIT                     = 0x2\n\tMNT_QUOTA                      = 0x2000\n\tMNT_RDONLY                     = 0x1\n\tMNT_RELOAD                     = 0x40000\n\tMNT_ROOTFS                     = 0x4000\n\tMNT_SNAPSHOT                   = 0x1000000\n\tMNT_SOFTDEP                    = 0x200000\n\tMNT_SUIDDIR                    = 0x100000\n\tMNT_SUJ                        = 0x100000000\n\tMNT_SUSPEND                    = 0x4\n\tMNT_SYNCHRONOUS                = 0x2\n\tMNT_UNION                      = 0x20\n\tMNT_UNTRUSTED                  = 0x800000000\n\tMNT_UPDATE                     = 0x10000\n\tMNT_UPDATEMASK                 = 0xad8d0807e\n\tMNT_USER                       = 0x8000\n\tMNT_VERIFIED                   = 0x400000000\n\tMNT_VISFLAGMASK                = 0xffef0ffff\n\tMNT_WAIT                       = 0x1\n\tMSG_CMSG_CLOEXEC               = 0x40000\n\tMSG_COMPAT                     = 0x8000\n\tMSG_CTRUNC                     = 0x20\n\tMSG_DONTROUTE                  = 0x4\n\tMSG_DONTWAIT                   = 0x80\n\tMSG_EOF                        = 0x100\n\tMSG_EOR                        = 0x8\n\tMSG_NBIO                       = 0x4000\n\tMSG_NOSIGNAL                   = 0x20000\n\tMSG_NOTIFICATION               = 0x2000\n\tMSG_OOB                        = 0x1\n\tMSG_PEEK                       = 0x2\n\tMSG_TRUNC                      = 0x10\n\tMSG_WAITALL                    = 0x40\n\tMSG_WAITFORONE                 = 0x80000\n\tMS_ASYNC                       = 0x1\n\tMS_INVALIDATE                  = 0x2\n\tMS_SYNC                        = 0x0\n\tNAME_MAX                       = 0xff\n\tNET_RT_DUMP                    = 0x1\n\tNET_RT_FLAGS                   = 0x2\n\tNET_RT_IFLIST                  = 0x3\n\tNET_RT_IFLISTL                 = 0x5\n\tNET_RT_IFMALIST                = 0x4\n\tNET_RT_NHGRP                   = 0x7\n\tNET_RT_NHOP                    = 0x6\n\tNFDBITS                        = 0x40\n\tNOFLSH                         = 0x80000000\n\tNOKERNINFO                     = 0x2000000\n\tNOTE_ABSTIME                   = 0x10\n\tNOTE_ATTRIB                    = 0x8\n\tNOTE_CHILD                     = 0x4\n\tNOTE_CLOSE                     = 0x100\n\tNOTE_CLOSE_WRITE               = 0x200\n\tNOTE_DELETE                    = 0x1\n\tNOTE_EXEC                      = 0x20000000\n\tNOTE_EXIT                      = 0x80000000\n\tNOTE_EXTEND                    = 0x4\n\tNOTE_FFAND                     = 0x40000000\n\tNOTE_FFCOPY                    = 0xc0000000\n\tNOTE_FFCTRLMASK                = 0xc0000000\n\tNOTE_FFLAGSMASK                = 0xffffff\n\tNOTE_FFNOP                     = 0x0\n\tNOTE_FFOR                      = 0x80000000\n\tNOTE_FILE_POLL                 = 0x2\n\tNOTE_FORK                      = 0x40000000\n\tNOTE_LINK                      = 0x10\n\tNOTE_LOWAT                     = 0x1\n\tNOTE_MSECONDS                  = 0x2\n\tNOTE_NSECONDS                  = 0x8\n\tNOTE_OPEN                      = 0x80\n\tNOTE_PCTRLMASK                 = 0xf0000000\n\tNOTE_PDATAMASK                 = 0xfffff\n\tNOTE_READ                      = 0x400\n\tNOTE_RENAME                    = 0x20\n\tNOTE_REVOKE                    = 0x40\n\tNOTE_SECONDS                   = 0x1\n\tNOTE_TRACK                     = 0x1\n\tNOTE_TRACKERR                  = 0x2\n\tNOTE_TRIGGER                   = 0x1000000\n\tNOTE_USECONDS                  = 0x4\n\tNOTE_WRITE                     = 0x2\n\tOCRNL                          = 0x10\n\tONLCR                          = 0x2\n\tONLRET                         = 0x40\n\tONOCR                          = 0x20\n\tONOEOT                         = 0x8\n\tOPOST                          = 0x1\n\tOXTABS                         = 0x4\n\tO_ACCMODE                      = 0x3\n\tO_APPEND                       = 0x8\n\tO_ASYNC                        = 0x40\n\tO_CLOEXEC                      = 0x100000\n\tO_CREAT                        = 0x200\n\tO_DIRECT                       = 0x10000\n\tO_DIRECTORY                    = 0x20000\n\tO_DSYNC                        = 0x1000000\n\tO_EMPTY_PATH                   = 0x2000000\n\tO_EXCL                         = 0x800\n\tO_EXEC                         = 0x40000\n\tO_EXLOCK                       = 0x20\n\tO_FSYNC                        = 0x80\n\tO_NDELAY                       = 0x4\n\tO_NOCTTY                       = 0x8000\n\tO_NOFOLLOW                     = 0x100\n\tO_NONBLOCK                     = 0x4\n\tO_PATH                         = 0x400000\n\tO_RDONLY                       = 0x0\n\tO_RDWR                         = 0x2\n\tO_RESOLVE_BENEATH              = 0x800000\n\tO_SEARCH                       = 0x40000\n\tO_SHLOCK                       = 0x10\n\tO_SYNC                         = 0x80\n\tO_TRUNC                        = 0x400\n\tO_TTY_INIT                     = 0x80000\n\tO_VERIFY                       = 0x200000\n\tO_WRONLY                       = 0x1\n\tPARENB                         = 0x1000\n\tPARMRK                         = 0x8\n\tPARODD                         = 0x2000\n\tPENDIN                         = 0x20000000\n\tPIOD_READ_D                    = 0x1\n\tPIOD_READ_I                    = 0x3\n\tPIOD_WRITE_D                   = 0x2\n\tPIOD_WRITE_I                   = 0x4\n\tPRIO_PGRP                      = 0x1\n\tPRIO_PROCESS                   = 0x0\n\tPRIO_USER                      = 0x2\n\tPROT_EXEC                      = 0x4\n\tPROT_NONE                      = 0x0\n\tPROT_READ                      = 0x1\n\tPROT_WRITE                     = 0x2\n\tPTRACE_DEFAULT                 = 0x1\n\tPTRACE_EXEC                    = 0x1\n\tPTRACE_FORK                    = 0x8\n\tPTRACE_LWP                     = 0x10\n\tPTRACE_SCE                     = 0x2\n\tPTRACE_SCX                     = 0x4\n\tPTRACE_SYSCALL                 = 0x6\n\tPTRACE_VFORK                   = 0x20\n\tPT_ATTACH                      = 0xa\n\tPT_CLEARSTEP                   = 0x10\n\tPT_CONTINUE                    = 0x7\n\tPT_COREDUMP                    = 0x1d\n\tPT_DETACH                      = 0xb\n\tPT_FIRSTMACH                   = 0x40\n\tPT_FOLLOW_FORK                 = 0x17\n\tPT_GETDBREGS                   = 0x25\n\tPT_GETFPREGS                   = 0x23\n\tPT_GETLWPLIST                  = 0xf\n\tPT_GETNUMLWPS                  = 0xe\n\tPT_GETREGS                     = 0x21\n\tPT_GET_EVENT_MASK              = 0x19\n\tPT_GET_SC_ARGS                 = 0x1b\n\tPT_GET_SC_RET                  = 0x1c\n\tPT_IO                          = 0xc\n\tPT_KILL                        = 0x8\n\tPT_LWPINFO                     = 0xd\n\tPT_LWP_EVENTS                  = 0x18\n\tPT_READ_D                      = 0x2\n\tPT_READ_I                      = 0x1\n\tPT_RESUME                      = 0x13\n\tPT_SETDBREGS                   = 0x26\n\tPT_SETFPREGS                   = 0x24\n\tPT_SETREGS                     = 0x22\n\tPT_SETSTEP                     = 0x11\n\tPT_SET_EVENT_MASK              = 0x1a\n\tPT_STEP                        = 0x9\n\tPT_SUSPEND                     = 0x12\n\tPT_SYSCALL                     = 0x16\n\tPT_TO_SCE                      = 0x14\n\tPT_TO_SCX                      = 0x15\n\tPT_TRACE_ME                    = 0x0\n\tPT_VM_ENTRY                    = 0x29\n\tPT_VM_TIMESTAMP                = 0x28\n\tPT_WRITE_D                     = 0x5\n\tPT_WRITE_I                     = 0x4\n\tP_ZONEID                       = 0xc\n\tRLIMIT_AS                      = 0xa\n\tRLIMIT_CORE                    = 0x4\n\tRLIMIT_CPU                     = 0x0\n\tRLIMIT_DATA                    = 0x2\n\tRLIMIT_FSIZE                   = 0x1\n\tRLIMIT_MEMLOCK                 = 0x6\n\tRLIMIT_NOFILE                  = 0x8\n\tRLIMIT_NPROC                   = 0x7\n\tRLIMIT_RSS                     = 0x5\n\tRLIMIT_STACK                   = 0x3\n\tRLIM_INFINITY                  = 0x7fffffffffffffff\n\tRTAX_AUTHOR                    = 0x6\n\tRTAX_BRD                       = 0x7\n\tRTAX_DST                       = 0x0\n\tRTAX_GATEWAY                   = 0x1\n\tRTAX_GENMASK                   = 0x3\n\tRTAX_IFA                       = 0x5\n\tRTAX_IFP                       = 0x4\n\tRTAX_MAX                       = 0x8\n\tRTAX_NETMASK                   = 0x2\n\tRTA_AUTHOR                     = 0x40\n\tRTA_BRD                        = 0x80\n\tRTA_DST                        = 0x1\n\tRTA_GATEWAY                    = 0x2\n\tRTA_GENMASK                    = 0x8\n\tRTA_IFA                        = 0x20\n\tRTA_IFP                        = 0x10\n\tRTA_NETMASK                    = 0x4\n\tRTF_BLACKHOLE                  = 0x1000\n\tRTF_BROADCAST                  = 0x400000\n\tRTF_DONE                       = 0x40\n\tRTF_DYNAMIC                    = 0x10\n\tRTF_FIXEDMTU                   = 0x80000\n\tRTF_FMASK                      = 0x1004d808\n\tRTF_GATEWAY                    = 0x2\n\tRTF_GWFLAG_COMPAT              = 0x80000000\n\tRTF_HOST                       = 0x4\n\tRTF_LLDATA                     = 0x400\n\tRTF_LLINFO                     = 0x400\n\tRTF_LOCAL                      = 0x200000\n\tRTF_MODIFIED                   = 0x20\n\tRTF_MULTICAST                  = 0x800000\n\tRTF_PINNED                     = 0x100000\n\tRTF_PROTO1                     = 0x8000\n\tRTF_PROTO2                     = 0x4000\n\tRTF_PROTO3                     = 0x40000\n\tRTF_REJECT                     = 0x8\n\tRTF_STATIC                     = 0x800\n\tRTF_STICKY                     = 0x10000000\n\tRTF_UP                         = 0x1\n\tRTF_XRESOLVE                   = 0x200\n\tRTM_ADD                        = 0x1\n\tRTM_CHANGE                     = 0x3\n\tRTM_DELADDR                    = 0xd\n\tRTM_DELETE                     = 0x2\n\tRTM_DELMADDR                   = 0x10\n\tRTM_GET                        = 0x4\n\tRTM_IEEE80211                  = 0x12\n\tRTM_IFANNOUNCE                 = 0x11\n\tRTM_IFINFO                     = 0xe\n\tRTM_LOCK                       = 0x8\n\tRTM_LOSING                     = 0x5\n\tRTM_MISS                       = 0x7\n\tRTM_NEWADDR                    = 0xc\n\tRTM_NEWMADDR                   = 0xf\n\tRTM_REDIRECT                   = 0x6\n\tRTM_RESOLVE                    = 0xb\n\tRTM_RTTUNIT                    = 0xf4240\n\tRTM_VERSION                    = 0x5\n\tRTV_EXPIRE                     = 0x4\n\tRTV_HOPCOUNT                   = 0x2\n\tRTV_MTU                        = 0x1\n\tRTV_RPIPE                      = 0x8\n\tRTV_RTT                        = 0x40\n\tRTV_RTTVAR                     = 0x80\n\tRTV_SPIPE                      = 0x10\n\tRTV_SSTHRESH                   = 0x20\n\tRTV_WEIGHT                     = 0x100\n\tRT_ALL_FIBS                    = -0x1\n\tRT_BLACKHOLE                   = 0x40\n\tRT_DEFAULT_FIB                 = 0x0\n\tRT_DEFAULT_WEIGHT              = 0x1\n\tRT_HAS_GW                      = 0x80\n\tRT_HAS_HEADER                  = 0x10\n\tRT_HAS_HEADER_BIT              = 0x4\n\tRT_L2_ME                       = 0x4\n\tRT_L2_ME_BIT                   = 0x2\n\tRT_LLE_CACHE                   = 0x100\n\tRT_MAX_WEIGHT                  = 0xffffff\n\tRT_MAY_LOOP                    = 0x8\n\tRT_MAY_LOOP_BIT                = 0x3\n\tRT_REJECT                      = 0x20\n\tRUSAGE_CHILDREN                = -0x1\n\tRUSAGE_SELF                    = 0x0\n\tRUSAGE_THREAD                  = 0x1\n\tSCM_BINTIME                    = 0x4\n\tSCM_CREDS                      = 0x3\n\tSCM_CREDS2                     = 0x8\n\tSCM_MONOTONIC                  = 0x6\n\tSCM_REALTIME                   = 0x5\n\tSCM_RIGHTS                     = 0x1\n\tSCM_TIMESTAMP                  = 0x2\n\tSCM_TIME_INFO                  = 0x7\n\tSEEK_CUR                       = 0x1\n\tSEEK_DATA                      = 0x3\n\tSEEK_END                       = 0x2\n\tSEEK_HOLE                      = 0x4\n\tSEEK_SET                       = 0x0\n\tSHUT_RD                        = 0x0\n\tSHUT_RDWR                      = 0x2\n\tSHUT_WR                        = 0x1\n\tSIOCADDMULTI                   = 0x80206931\n\tSIOCAIFADDR                    = 0x8040691a\n\tSIOCAIFGROUP                   = 0x80286987\n\tSIOCATMARK                     = 0x40047307\n\tSIOCDELMULTI                   = 0x80206932\n\tSIOCDIFADDR                    = 0x80206919\n\tSIOCDIFGROUP                   = 0x80286989\n\tSIOCDIFPHYADDR                 = 0x80206949\n\tSIOCGDRVSPEC                   = 0xc028697b\n\tSIOCGETSGCNT                   = 0xc0207210\n\tSIOCGETVIFCNT                  = 0xc028720f\n\tSIOCGHIWAT                     = 0x40047301\n\tSIOCGHWADDR                    = 0xc020693e\n\tSIOCGI2C                       = 0xc020693d\n\tSIOCGIFADDR                    = 0xc0206921\n\tSIOCGIFALIAS                   = 0xc044692d\n\tSIOCGIFBRDADDR                 = 0xc0206923\n\tSIOCGIFCAP                     = 0xc020691f\n\tSIOCGIFCONF                    = 0xc0106924\n\tSIOCGIFDATA                    = 0x8020692c\n\tSIOCGIFDESCR                   = 0xc020692a\n\tSIOCGIFDOWNREASON              = 0xc058699a\n\tSIOCGIFDSTADDR                 = 0xc0206922\n\tSIOCGIFFIB                     = 0xc020695c\n\tSIOCGIFFLAGS                   = 0xc0206911\n\tSIOCGIFGENERIC                 = 0xc020693a\n\tSIOCGIFGMEMB                   = 0xc028698a\n\tSIOCGIFGROUP                   = 0xc0286988\n\tSIOCGIFINDEX                   = 0xc0206920\n\tSIOCGIFMAC                     = 0xc0206926\n\tSIOCGIFMEDIA                   = 0xc0306938\n\tSIOCGIFMETRIC                  = 0xc0206917\n\tSIOCGIFMTU                     = 0xc0206933\n\tSIOCGIFNETMASK                 = 0xc0206925\n\tSIOCGIFPDSTADDR                = 0xc0206948\n\tSIOCGIFPHYS                    = 0xc0206935\n\tSIOCGIFPSRCADDR                = 0xc0206947\n\tSIOCGIFRSSHASH                 = 0xc0186997\n\tSIOCGIFRSSKEY                  = 0xc0946996\n\tSIOCGIFSTATUS                  = 0xc331693b\n\tSIOCGIFXMEDIA                  = 0xc030698b\n\tSIOCGLANPCP                    = 0xc0206998\n\tSIOCGLOWAT                     = 0x40047303\n\tSIOCGPGRP                      = 0x40047309\n\tSIOCGPRIVATE_0                 = 0xc0206950\n\tSIOCGPRIVATE_1                 = 0xc0206951\n\tSIOCGTUNFIB                    = 0xc020695e\n\tSIOCIFCREATE                   = 0xc020697a\n\tSIOCIFCREATE2                  = 0xc020697c\n\tSIOCIFDESTROY                  = 0x80206979\n\tSIOCIFGCLONERS                 = 0xc0106978\n\tSIOCSDRVSPEC                   = 0x8028697b\n\tSIOCSHIWAT                     = 0x80047300\n\tSIOCSIFADDR                    = 0x8020690c\n\tSIOCSIFBRDADDR                 = 0x80206913\n\tSIOCSIFCAP                     = 0x8020691e\n\tSIOCSIFDESCR                   = 0x80206929\n\tSIOCSIFDSTADDR                 = 0x8020690e\n\tSIOCSIFFIB                     = 0x8020695d\n\tSIOCSIFFLAGS                   = 0x80206910\n\tSIOCSIFGENERIC                 = 0x80206939\n\tSIOCSIFLLADDR                  = 0x8020693c\n\tSIOCSIFMAC                     = 0x80206927\n\tSIOCSIFMEDIA                   = 0xc0206937\n\tSIOCSIFMETRIC                  = 0x80206918\n\tSIOCSIFMTU                     = 0x80206934\n\tSIOCSIFNAME                    = 0x80206928\n\tSIOCSIFNETMASK                 = 0x80206916\n\tSIOCSIFPHYADDR                 = 0x80406946\n\tSIOCSIFPHYS                    = 0x80206936\n\tSIOCSIFRVNET                   = 0xc020695b\n\tSIOCSIFVNET                    = 0xc020695a\n\tSIOCSLANPCP                    = 0x80206999\n\tSIOCSLOWAT                     = 0x80047302\n\tSIOCSPGRP                      = 0x80047308\n\tSIOCSTUNFIB                    = 0x8020695f\n\tSOCK_CLOEXEC                   = 0x10000000\n\tSOCK_DGRAM                     = 0x2\n\tSOCK_MAXADDRLEN                = 0xff\n\tSOCK_NONBLOCK                  = 0x20000000\n\tSOCK_RAW                       = 0x3\n\tSOCK_RDM                       = 0x4\n\tSOCK_SEQPACKET                 = 0x5\n\tSOCK_STREAM                    = 0x1\n\tSOL_LOCAL                      = 0x0\n\tSOL_SOCKET                     = 0xffff\n\tSOMAXCONN                      = 0x80\n\tSO_ACCEPTCONN                  = 0x2\n\tSO_ACCEPTFILTER                = 0x1000\n\tSO_BINTIME                     = 0x2000\n\tSO_BROADCAST                   = 0x20\n\tSO_DEBUG                       = 0x1\n\tSO_DOMAIN                      = 0x1019\n\tSO_DONTROUTE                   = 0x10\n\tSO_ERROR                       = 0x1007\n\tSO_KEEPALIVE                   = 0x8\n\tSO_LABEL                       = 0x1009\n\tSO_LINGER                      = 0x80\n\tSO_LISTENINCQLEN               = 0x1013\n\tSO_LISTENQLEN                  = 0x1012\n\tSO_LISTENQLIMIT                = 0x1011\n\tSO_MAX_PACING_RATE             = 0x1018\n\tSO_NOSIGPIPE                   = 0x800\n\tSO_NO_DDP                      = 0x8000\n\tSO_NO_OFFLOAD                  = 0x4000\n\tSO_OOBINLINE                   = 0x100\n\tSO_PEERLABEL                   = 0x1010\n\tSO_PROTOCOL                    = 0x1016\n\tSO_PROTOTYPE                   = 0x1016\n\tSO_RCVBUF                      = 0x1002\n\tSO_RCVLOWAT                    = 0x1004\n\tSO_RCVTIMEO                    = 0x1006\n\tSO_RERROR                      = 0x20000\n\tSO_REUSEADDR                   = 0x4\n\tSO_REUSEPORT                   = 0x200\n\tSO_REUSEPORT_LB                = 0x10000\n\tSO_SETFIB                      = 0x1014\n\tSO_SNDBUF                      = 0x1001\n\tSO_SNDLOWAT                    = 0x1003\n\tSO_SNDTIMEO                    = 0x1005\n\tSO_TIMESTAMP                   = 0x400\n\tSO_TS_BINTIME                  = 0x1\n\tSO_TS_CLOCK                    = 0x1017\n\tSO_TS_CLOCK_MAX                = 0x3\n\tSO_TS_DEFAULT                  = 0x0\n\tSO_TS_MONOTONIC                = 0x3\n\tSO_TS_REALTIME                 = 0x2\n\tSO_TS_REALTIME_MICRO           = 0x0\n\tSO_TYPE                        = 0x1008\n\tSO_USELOOPBACK                 = 0x40\n\tSO_USER_COOKIE                 = 0x1015\n\tSO_VENDOR                      = 0x80000000\n\tS_BLKSIZE                      = 0x200\n\tS_IEXEC                        = 0x40\n\tS_IFBLK                        = 0x6000\n\tS_IFCHR                        = 0x2000\n\tS_IFDIR                        = 0x4000\n\tS_IFIFO                        = 0x1000\n\tS_IFLNK                        = 0xa000\n\tS_IFMT                         = 0xf000\n\tS_IFREG                        = 0x8000\n\tS_IFSOCK                       = 0xc000\n\tS_IFWHT                        = 0xe000\n\tS_IREAD                        = 0x100\n\tS_IRGRP                        = 0x20\n\tS_IROTH                        = 0x4\n\tS_IRUSR                        = 0x100\n\tS_IRWXG                        = 0x38\n\tS_IRWXO                        = 0x7\n\tS_IRWXU                        = 0x1c0\n\tS_ISGID                        = 0x400\n\tS_ISTXT                        = 0x200\n\tS_ISUID                        = 0x800\n\tS_ISVTX                        = 0x200\n\tS_IWGRP                        = 0x10\n\tS_IWOTH                        = 0x2\n\tS_IWRITE                       = 0x80\n\tS_IWUSR                        = 0x80\n\tS_IXGRP                        = 0x8\n\tS_IXOTH                        = 0x1\n\tS_IXUSR                        = 0x40\n\tTAB0                           = 0x0\n\tTAB3                           = 0x4\n\tTABDLY                         = 0x4\n\tTCIFLUSH                       = 0x1\n\tTCIOFF                         = 0x3\n\tTCIOFLUSH                      = 0x3\n\tTCION                          = 0x4\n\tTCOFLUSH                       = 0x2\n\tTCOOFF                         = 0x1\n\tTCOON                          = 0x2\n\tTCPOPT_EOL                     = 0x0\n\tTCPOPT_FAST_OPEN               = 0x22\n\tTCPOPT_MAXSEG                  = 0x2\n\tTCPOPT_NOP                     = 0x1\n\tTCPOPT_PAD                     = 0x0\n\tTCPOPT_SACK                    = 0x5\n\tTCPOPT_SACK_PERMITTED          = 0x4\n\tTCPOPT_SIGNATURE               = 0x13\n\tTCPOPT_TIMESTAMP               = 0x8\n\tTCPOPT_WINDOW                  = 0x3\n\tTCP_BBR_ACK_COMP_ALG           = 0x448\n\tTCP_BBR_ALGORITHM              = 0x43b\n\tTCP_BBR_DRAIN_INC_EXTRA        = 0x43c\n\tTCP_BBR_DRAIN_PG               = 0x42e\n\tTCP_BBR_EXTRA_GAIN             = 0x449\n\tTCP_BBR_EXTRA_STATE            = 0x453\n\tTCP_BBR_FLOOR_MIN_TSO          = 0x454\n\tTCP_BBR_HDWR_PACE              = 0x451\n\tTCP_BBR_HOLD_TARGET            = 0x436\n\tTCP_BBR_IWINTSO                = 0x42b\n\tTCP_BBR_LOWGAIN_FD             = 0x436\n\tTCP_BBR_LOWGAIN_HALF           = 0x435\n\tTCP_BBR_LOWGAIN_THRESH         = 0x434\n\tTCP_BBR_MAX_RTO                = 0x439\n\tTCP_BBR_MIN_RTO                = 0x438\n\tTCP_BBR_MIN_TOPACEOUT          = 0x455\n\tTCP_BBR_ONE_RETRAN             = 0x431\n\tTCP_BBR_PACE_CROSS             = 0x442\n\tTCP_BBR_PACE_DEL_TAR           = 0x43f\n\tTCP_BBR_PACE_OH                = 0x435\n\tTCP_BBR_PACE_PER_SEC           = 0x43e\n\tTCP_BBR_PACE_SEG_MAX           = 0x440\n\tTCP_BBR_PACE_SEG_MIN           = 0x441\n\tTCP_BBR_POLICER_DETECT         = 0x457\n\tTCP_BBR_PROBE_RTT_GAIN         = 0x44d\n\tTCP_BBR_PROBE_RTT_INT          = 0x430\n\tTCP_BBR_PROBE_RTT_LEN          = 0x44e\n\tTCP_BBR_RACK_INIT_RATE         = 0x458\n\tTCP_BBR_RACK_RTT_USE           = 0x44a\n\tTCP_BBR_RECFORCE               = 0x42c\n\tTCP_BBR_REC_OVER_HPTS          = 0x43a\n\tTCP_BBR_RETRAN_WTSO            = 0x44b\n\tTCP_BBR_RWND_IS_APP            = 0x42f\n\tTCP_BBR_SEND_IWND_IN_TSO       = 0x44f\n\tTCP_BBR_STARTUP_EXIT_EPOCH     = 0x43d\n\tTCP_BBR_STARTUP_LOSS_EXIT      = 0x432\n\tTCP_BBR_STARTUP_PG             = 0x42d\n\tTCP_BBR_TMR_PACE_OH            = 0x448\n\tTCP_BBR_TSLIMITS               = 0x434\n\tTCP_BBR_TSTMP_RAISES           = 0x456\n\tTCP_BBR_UNLIMITED              = 0x43b\n\tTCP_BBR_USEDEL_RATE            = 0x437\n\tTCP_BBR_USE_LOWGAIN            = 0x433\n\tTCP_BBR_USE_RACK_CHEAT         = 0x450\n\tTCP_BBR_USE_RACK_RR            = 0x450\n\tTCP_BBR_UTTER_MAX_TSO          = 0x452\n\tTCP_CA_NAME_MAX                = 0x10\n\tTCP_CCALGOOPT                  = 0x41\n\tTCP_CONGESTION                 = 0x40\n\tTCP_DATA_AFTER_CLOSE           = 0x44c\n\tTCP_DEFER_OPTIONS              = 0x470\n\tTCP_DELACK                     = 0x48\n\tTCP_FASTOPEN                   = 0x401\n\tTCP_FASTOPEN_MAX_COOKIE_LEN    = 0x10\n\tTCP_FASTOPEN_MIN_COOKIE_LEN    = 0x4\n\tTCP_FASTOPEN_PSK_LEN           = 0x10\n\tTCP_FAST_RSM_HACK              = 0x471\n\tTCP_FIN_IS_RST                 = 0x49\n\tTCP_FUNCTION_BLK               = 0x2000\n\tTCP_FUNCTION_NAME_LEN_MAX      = 0x20\n\tTCP_HDWR_RATE_CAP              = 0x46a\n\tTCP_HDWR_UP_ONLY               = 0x46c\n\tTCP_IDLE_REDUCE                = 0x46\n\tTCP_INFO                       = 0x20\n\tTCP_IWND_NB                    = 0x2b\n\tTCP_IWND_NSEG                  = 0x2c\n\tTCP_KEEPCNT                    = 0x400\n\tTCP_KEEPIDLE                   = 0x100\n\tTCP_KEEPINIT                   = 0x80\n\tTCP_KEEPINTVL                  = 0x200\n\tTCP_LOG                        = 0x22\n\tTCP_LOGBUF                     = 0x23\n\tTCP_LOGDUMP                    = 0x25\n\tTCP_LOGDUMPID                  = 0x26\n\tTCP_LOGID                      = 0x24\n\tTCP_LOGID_CNT                  = 0x2e\n\tTCP_LOG_ID_LEN                 = 0x40\n\tTCP_LOG_LIMIT                  = 0x4a\n\tTCP_LOG_TAG                    = 0x2f\n\tTCP_MAXBURST                   = 0x4\n\tTCP_MAXHLEN                    = 0x3c\n\tTCP_MAXOLEN                    = 0x28\n\tTCP_MAXPEAKRATE                = 0x45\n\tTCP_MAXSEG                     = 0x2\n\tTCP_MAXUNACKTIME               = 0x44\n\tTCP_MAXWIN                     = 0xffff\n\tTCP_MAX_SACK                   = 0x4\n\tTCP_MAX_WINSHIFT               = 0xe\n\tTCP_MD5SIG                     = 0x10\n\tTCP_MINMSS                     = 0xd8\n\tTCP_MSS                        = 0x218\n\tTCP_NODELAY                    = 0x1\n\tTCP_NOOPT                      = 0x8\n\tTCP_NOPUSH                     = 0x4\n\tTCP_NO_PRR                     = 0x462\n\tTCP_PACING_RATE_CAP            = 0x46b\n\tTCP_PCAP_IN                    = 0x1000\n\tTCP_PCAP_OUT                   = 0x800\n\tTCP_PERF_INFO                  = 0x4e\n\tTCP_PROC_ACCOUNTING            = 0x4c\n\tTCP_RACK_ABC_VAL               = 0x46d\n\tTCP_RACK_CHEAT_NOT_CONF_RATE   = 0x459\n\tTCP_RACK_DO_DETECTION          = 0x449\n\tTCP_RACK_EARLY_RECOV           = 0x423\n\tTCP_RACK_EARLY_SEG             = 0x424\n\tTCP_RACK_FORCE_MSEG            = 0x45d\n\tTCP_RACK_GP_INCREASE           = 0x446\n\tTCP_RACK_GP_INCREASE_CA        = 0x45a\n\tTCP_RACK_GP_INCREASE_REC       = 0x45c\n\tTCP_RACK_GP_INCREASE_SS        = 0x45b\n\tTCP_RACK_IDLE_REDUCE_HIGH      = 0x444\n\tTCP_RACK_MBUF_QUEUE            = 0x41a\n\tTCP_RACK_MEASURE_CNT           = 0x46f\n\tTCP_RACK_MIN_PACE              = 0x445\n\tTCP_RACK_MIN_PACE_SEG          = 0x446\n\tTCP_RACK_MIN_TO                = 0x422\n\tTCP_RACK_NONRXT_CFG_RATE       = 0x463\n\tTCP_RACK_NO_PUSH_AT_MAX        = 0x466\n\tTCP_RACK_PACE_ALWAYS           = 0x41f\n\tTCP_RACK_PACE_MAX_SEG          = 0x41e\n\tTCP_RACK_PACE_RATE_CA          = 0x45e\n\tTCP_RACK_PACE_RATE_REC         = 0x460\n\tTCP_RACK_PACE_RATE_SS          = 0x45f\n\tTCP_RACK_PACE_REDUCE           = 0x41d\n\tTCP_RACK_PACE_TO_FILL          = 0x467\n\tTCP_RACK_PACING_BETA           = 0x472\n\tTCP_RACK_PACING_BETA_ECN       = 0x473\n\tTCP_RACK_PKT_DELAY             = 0x428\n\tTCP_RACK_PROFILE               = 0x469\n\tTCP_RACK_PROP                  = 0x41b\n\tTCP_RACK_PROP_RATE             = 0x420\n\tTCP_RACK_PRR_SENDALOT          = 0x421\n\tTCP_RACK_REORD_FADE            = 0x426\n\tTCP_RACK_REORD_THRESH          = 0x425\n\tTCP_RACK_RR_CONF               = 0x459\n\tTCP_RACK_TIMER_SLOP            = 0x474\n\tTCP_RACK_TLP_INC_VAR           = 0x429\n\tTCP_RACK_TLP_REDUCE            = 0x41c\n\tTCP_RACK_TLP_THRESH            = 0x427\n\tTCP_RACK_TLP_USE               = 0x447\n\tTCP_REC_ABC_VAL                = 0x46e\n\tTCP_REMOTE_UDP_ENCAPS_PORT     = 0x47\n\tTCP_REUSPORT_LB_NUMA           = 0x402\n\tTCP_REUSPORT_LB_NUMA_CURDOM    = -0x1\n\tTCP_REUSPORT_LB_NUMA_NODOM     = -0x2\n\tTCP_RXTLS_ENABLE               = 0x29\n\tTCP_RXTLS_MODE                 = 0x2a\n\tTCP_SHARED_CWND_ALLOWED        = 0x4b\n\tTCP_SHARED_CWND_ENABLE         = 0x464\n\tTCP_SHARED_CWND_TIME_LIMIT     = 0x468\n\tTCP_STATS                      = 0x21\n\tTCP_TIMELY_DYN_ADJ             = 0x465\n\tTCP_TLS_MODE_IFNET             = 0x2\n\tTCP_TLS_MODE_NONE              = 0x0\n\tTCP_TLS_MODE_SW                = 0x1\n\tTCP_TLS_MODE_TOE               = 0x3\n\tTCP_TXTLS_ENABLE               = 0x27\n\tTCP_TXTLS_MODE                 = 0x28\n\tTCP_USER_LOG                   = 0x30\n\tTCP_USE_CMP_ACKS               = 0x4d\n\tTCP_VENDOR                     = 0x80000000\n\tTCSAFLUSH                      = 0x2\n\tTIMER_ABSTIME                  = 0x1\n\tTIMER_RELTIME                  = 0x0\n\tTIOCCBRK                       = 0x2000747a\n\tTIOCCDTR                       = 0x20007478\n\tTIOCCONS                       = 0x80047462\n\tTIOCDRAIN                      = 0x2000745e\n\tTIOCEXCL                       = 0x2000740d\n\tTIOCEXT                        = 0x80047460\n\tTIOCFLUSH                      = 0x80047410\n\tTIOCGDRAINWAIT                 = 0x40047456\n\tTIOCGETA                       = 0x402c7413\n\tTIOCGETD                       = 0x4004741a\n\tTIOCGPGRP                      = 0x40047477\n\tTIOCGPTN                       = 0x4004740f\n\tTIOCGSID                       = 0x40047463\n\tTIOCGWINSZ                     = 0x40087468\n\tTIOCMBIC                       = 0x8004746b\n\tTIOCMBIS                       = 0x8004746c\n\tTIOCMGDTRWAIT                  = 0x4004745a\n\tTIOCMGET                       = 0x4004746a\n\tTIOCMSDTRWAIT                  = 0x8004745b\n\tTIOCMSET                       = 0x8004746d\n\tTIOCM_CAR                      = 0x40\n\tTIOCM_CD                       = 0x40\n\tTIOCM_CTS                      = 0x20\n\tTIOCM_DCD                      = 0x40\n\tTIOCM_DSR                      = 0x100\n\tTIOCM_DTR                      = 0x2\n\tTIOCM_LE                       = 0x1\n\tTIOCM_RI                       = 0x80\n\tTIOCM_RNG                      = 0x80\n\tTIOCM_RTS                      = 0x4\n\tTIOCM_SR                       = 0x10\n\tTIOCM_ST                       = 0x8\n\tTIOCNOTTY                      = 0x20007471\n\tTIOCNXCL                       = 0x2000740e\n\tTIOCOUTQ                       = 0x40047473\n\tTIOCPKT                        = 0x80047470\n\tTIOCPKT_DATA                   = 0x0\n\tTIOCPKT_DOSTOP                 = 0x20\n\tTIOCPKT_FLUSHREAD              = 0x1\n\tTIOCPKT_FLUSHWRITE             = 0x2\n\tTIOCPKT_IOCTL                  = 0x40\n\tTIOCPKT_NOSTOP                 = 0x10\n\tTIOCPKT_START                  = 0x8\n\tTIOCPKT_STOP                   = 0x4\n\tTIOCPTMASTER                   = 0x2000741c\n\tTIOCSBRK                       = 0x2000747b\n\tTIOCSCTTY                      = 0x20007461\n\tTIOCSDRAINWAIT                 = 0x80047457\n\tTIOCSDTR                       = 0x20007479\n\tTIOCSETA                       = 0x802c7414\n\tTIOCSETAF                      = 0x802c7416\n\tTIOCSETAW                      = 0x802c7415\n\tTIOCSETD                       = 0x8004741b\n\tTIOCSIG                        = 0x2004745f\n\tTIOCSPGRP                      = 0x80047476\n\tTIOCSTART                      = 0x2000746e\n\tTIOCSTAT                       = 0x20007465\n\tTIOCSTI                        = 0x80017472\n\tTIOCSTOP                       = 0x2000746f\n\tTIOCSWINSZ                     = 0x80087467\n\tTIOCTIMESTAMP                  = 0x40107459\n\tTIOCUCNTL                      = 0x80047466\n\tTOSTOP                         = 0x400000\n\tUTIME_NOW                      = -0x1\n\tUTIME_OMIT                     = -0x2\n\tVDISCARD                       = 0xf\n\tVDSUSP                         = 0xb\n\tVEOF                           = 0x0\n\tVEOL                           = 0x1\n\tVEOL2                          = 0x2\n\tVERASE                         = 0x3\n\tVERASE2                        = 0x7\n\tVINTR                          = 0x8\n\tVKILL                          = 0x5\n\tVLNEXT                         = 0xe\n\tVMIN                           = 0x10\n\tVQUIT                          = 0x9\n\tVREPRINT                       = 0x6\n\tVSTART                         = 0xc\n\tVSTATUS                        = 0x12\n\tVSTOP                          = 0xd\n\tVSUSP                          = 0xa\n\tVTIME                          = 0x11\n\tVWERASE                        = 0x4\n\tWCONTINUED                     = 0x4\n\tWCOREFLAG                      = 0x80\n\tWEXITED                        = 0x10\n\tWLINUXCLONE                    = 0x80000000\n\tWNOHANG                        = 0x1\n\tWNOWAIT                        = 0x8\n\tWSTOPPED                       = 0x2\n\tWTRAPPED                       = 0x20\n\tWUNTRACED                      = 0x2\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x59)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x55)\n\tECAPMODE        = syscall.Errno(0x5e)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDOOFUS         = syscall.Errno(0x58)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x52)\n\tEILSEQ          = syscall.Errno(0x56)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTEGRITY      = syscall.Errno(0x61)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x61)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5a)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x57)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x5b)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x53)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCAPABLE     = syscall.Errno(0x5d)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5f)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x2d)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEOWNERDEAD      = syscall.Errno(0x60)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5c)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGLIBRT  = syscall.Signal(0x21)\n\tSIGLWP    = syscall.Signal(0x20)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EWOULDBLOCK\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIDRM\", \"identifier removed\"},\n\t{83, \"ENOMSG\", \"no message of desired type\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"ECANCELED\", \"operation canceled\"},\n\t{86, \"EILSEQ\", \"illegal byte sequence\"},\n\t{87, \"ENOATTR\", \"attribute not found\"},\n\t{88, \"EDOOFUS\", \"programming error\"},\n\t{89, \"EBADMSG\", \"bad message\"},\n\t{90, \"EMULTIHOP\", \"multihop attempted\"},\n\t{91, \"ENOLINK\", \"link has been severed\"},\n\t{92, \"EPROTO\", \"protocol error\"},\n\t{93, \"ENOTCAPABLE\", \"capabilities insufficient\"},\n\t{94, \"ECAPMODE\", \"not permitted in capability mode\"},\n\t{95, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{96, \"EOWNERDEAD\", \"previous owner died\"},\n\t{97, \"EINTEGRITY\", \"integrity check failed\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"unknown signal\"},\n\t{33, \"SIGLIBRT\", \"unknown signal\"},\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zerrors_linux.go",
    "content": "// Code generated by mkmerge; DO NOT EDIT.\n\n//go:build linux\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAAFS_MAGIC                                  = 0x5a3c69f0\n\tADFS_SUPER_MAGIC                            = 0xadf5\n\tAFFS_SUPER_MAGIC                            = 0xadff\n\tAFS_FS_MAGIC                                = 0x6b414653\n\tAFS_SUPER_MAGIC                             = 0x5346414f\n\tAF_ALG                                      = 0x26\n\tAF_APPLETALK                                = 0x5\n\tAF_ASH                                      = 0x12\n\tAF_ATMPVC                                   = 0x8\n\tAF_ATMSVC                                   = 0x14\n\tAF_AX25                                     = 0x3\n\tAF_BLUETOOTH                                = 0x1f\n\tAF_BRIDGE                                   = 0x7\n\tAF_CAIF                                     = 0x25\n\tAF_CAN                                      = 0x1d\n\tAF_DECnet                                   = 0xc\n\tAF_ECONET                                   = 0x13\n\tAF_FILE                                     = 0x1\n\tAF_IB                                       = 0x1b\n\tAF_IEEE802154                               = 0x24\n\tAF_INET                                     = 0x2\n\tAF_INET6                                    = 0xa\n\tAF_IPX                                      = 0x4\n\tAF_IRDA                                     = 0x17\n\tAF_ISDN                                     = 0x22\n\tAF_IUCV                                     = 0x20\n\tAF_KCM                                      = 0x29\n\tAF_KEY                                      = 0xf\n\tAF_LLC                                      = 0x1a\n\tAF_LOCAL                                    = 0x1\n\tAF_MAX                                      = 0x2e\n\tAF_MCTP                                     = 0x2d\n\tAF_MPLS                                     = 0x1c\n\tAF_NETBEUI                                  = 0xd\n\tAF_NETLINK                                  = 0x10\n\tAF_NETROM                                   = 0x6\n\tAF_NFC                                      = 0x27\n\tAF_PACKET                                   = 0x11\n\tAF_PHONET                                   = 0x23\n\tAF_PPPOX                                    = 0x18\n\tAF_QIPCRTR                                  = 0x2a\n\tAF_RDS                                      = 0x15\n\tAF_ROSE                                     = 0xb\n\tAF_ROUTE                                    = 0x10\n\tAF_RXRPC                                    = 0x21\n\tAF_SECURITY                                 = 0xe\n\tAF_SMC                                      = 0x2b\n\tAF_SNA                                      = 0x16\n\tAF_TIPC                                     = 0x1e\n\tAF_UNIX                                     = 0x1\n\tAF_UNSPEC                                   = 0x0\n\tAF_VSOCK                                    = 0x28\n\tAF_WANPIPE                                  = 0x19\n\tAF_X25                                      = 0x9\n\tAF_XDP                                      = 0x2c\n\tALG_OP_DECRYPT                              = 0x0\n\tALG_OP_ENCRYPT                              = 0x1\n\tALG_SET_AEAD_ASSOCLEN                       = 0x4\n\tALG_SET_AEAD_AUTHSIZE                       = 0x5\n\tALG_SET_DRBG_ENTROPY                        = 0x6\n\tALG_SET_IV                                  = 0x2\n\tALG_SET_KEY                                 = 0x1\n\tALG_SET_KEY_BY_KEY_SERIAL                   = 0x7\n\tALG_SET_OP                                  = 0x3\n\tANON_INODE_FS_MAGIC                         = 0x9041934\n\tARPHRD_6LOWPAN                              = 0x339\n\tARPHRD_ADAPT                                = 0x108\n\tARPHRD_APPLETLK                             = 0x8\n\tARPHRD_ARCNET                               = 0x7\n\tARPHRD_ASH                                  = 0x30d\n\tARPHRD_ATM                                  = 0x13\n\tARPHRD_AX25                                 = 0x3\n\tARPHRD_BIF                                  = 0x307\n\tARPHRD_CAIF                                 = 0x336\n\tARPHRD_CAN                                  = 0x118\n\tARPHRD_CHAOS                                = 0x5\n\tARPHRD_CISCO                                = 0x201\n\tARPHRD_CSLIP                                = 0x101\n\tARPHRD_CSLIP6                               = 0x103\n\tARPHRD_DDCMP                                = 0x205\n\tARPHRD_DLCI                                 = 0xf\n\tARPHRD_ECONET                               = 0x30e\n\tARPHRD_EETHER                               = 0x2\n\tARPHRD_ETHER                                = 0x1\n\tARPHRD_EUI64                                = 0x1b\n\tARPHRD_FCAL                                 = 0x311\n\tARPHRD_FCFABRIC                             = 0x313\n\tARPHRD_FCPL                                 = 0x312\n\tARPHRD_FCPP                                 = 0x310\n\tARPHRD_FDDI                                 = 0x306\n\tARPHRD_FRAD                                 = 0x302\n\tARPHRD_HDLC                                 = 0x201\n\tARPHRD_HIPPI                                = 0x30c\n\tARPHRD_HWX25                                = 0x110\n\tARPHRD_IEEE1394                             = 0x18\n\tARPHRD_IEEE802                              = 0x6\n\tARPHRD_IEEE80211                            = 0x321\n\tARPHRD_IEEE80211_PRISM                      = 0x322\n\tARPHRD_IEEE80211_RADIOTAP                   = 0x323\n\tARPHRD_IEEE802154                           = 0x324\n\tARPHRD_IEEE802154_MONITOR                   = 0x325\n\tARPHRD_IEEE802_TR                           = 0x320\n\tARPHRD_INFINIBAND                           = 0x20\n\tARPHRD_IP6GRE                               = 0x337\n\tARPHRD_IPDDP                                = 0x309\n\tARPHRD_IPGRE                                = 0x30a\n\tARPHRD_IRDA                                 = 0x30f\n\tARPHRD_LAPB                                 = 0x204\n\tARPHRD_LOCALTLK                             = 0x305\n\tARPHRD_LOOPBACK                             = 0x304\n\tARPHRD_MCTP                                 = 0x122\n\tARPHRD_METRICOM                             = 0x17\n\tARPHRD_NETLINK                              = 0x338\n\tARPHRD_NETROM                               = 0x0\n\tARPHRD_NONE                                 = 0xfffe\n\tARPHRD_PHONET                               = 0x334\n\tARPHRD_PHONET_PIPE                          = 0x335\n\tARPHRD_PIMREG                               = 0x30b\n\tARPHRD_PPP                                  = 0x200\n\tARPHRD_PRONET                               = 0x4\n\tARPHRD_RAWHDLC                              = 0x206\n\tARPHRD_RAWIP                                = 0x207\n\tARPHRD_ROSE                                 = 0x10e\n\tARPHRD_RSRVD                                = 0x104\n\tARPHRD_SIT                                  = 0x308\n\tARPHRD_SKIP                                 = 0x303\n\tARPHRD_SLIP                                 = 0x100\n\tARPHRD_SLIP6                                = 0x102\n\tARPHRD_TUNNEL                               = 0x300\n\tARPHRD_TUNNEL6                              = 0x301\n\tARPHRD_VOID                                 = 0xffff\n\tARPHRD_VSOCKMON                             = 0x33a\n\tARPHRD_X25                                  = 0x10f\n\tAUDIT_ADD                                   = 0x3eb\n\tAUDIT_ADD_RULE                              = 0x3f3\n\tAUDIT_ALWAYS                                = 0x2\n\tAUDIT_ANOM_ABEND                            = 0x6a5\n\tAUDIT_ANOM_CREAT                            = 0x6a7\n\tAUDIT_ANOM_LINK                             = 0x6a6\n\tAUDIT_ANOM_PROMISCUOUS                      = 0x6a4\n\tAUDIT_ARCH                                  = 0xb\n\tAUDIT_ARCH_AARCH64                          = 0xc00000b7\n\tAUDIT_ARCH_ALPHA                            = 0xc0009026\n\tAUDIT_ARCH_ARCOMPACT                        = 0x4000005d\n\tAUDIT_ARCH_ARCOMPACTBE                      = 0x5d\n\tAUDIT_ARCH_ARCV2                            = 0x400000c3\n\tAUDIT_ARCH_ARCV2BE                          = 0xc3\n\tAUDIT_ARCH_ARM                              = 0x40000028\n\tAUDIT_ARCH_ARMEB                            = 0x28\n\tAUDIT_ARCH_C6X                              = 0x4000008c\n\tAUDIT_ARCH_C6XBE                            = 0x8c\n\tAUDIT_ARCH_CRIS                             = 0x4000004c\n\tAUDIT_ARCH_CSKY                             = 0x400000fc\n\tAUDIT_ARCH_FRV                              = 0x5441\n\tAUDIT_ARCH_H8300                            = 0x2e\n\tAUDIT_ARCH_HEXAGON                          = 0xa4\n\tAUDIT_ARCH_I386                             = 0x40000003\n\tAUDIT_ARCH_IA64                             = 0xc0000032\n\tAUDIT_ARCH_LOONGARCH32                      = 0x40000102\n\tAUDIT_ARCH_LOONGARCH64                      = 0xc0000102\n\tAUDIT_ARCH_M32R                             = 0x58\n\tAUDIT_ARCH_M68K                             = 0x4\n\tAUDIT_ARCH_MICROBLAZE                       = 0xbd\n\tAUDIT_ARCH_MIPS                             = 0x8\n\tAUDIT_ARCH_MIPS64                           = 0x80000008\n\tAUDIT_ARCH_MIPS64N32                        = 0xa0000008\n\tAUDIT_ARCH_MIPSEL                           = 0x40000008\n\tAUDIT_ARCH_MIPSEL64                         = 0xc0000008\n\tAUDIT_ARCH_MIPSEL64N32                      = 0xe0000008\n\tAUDIT_ARCH_NDS32                            = 0x400000a7\n\tAUDIT_ARCH_NDS32BE                          = 0xa7\n\tAUDIT_ARCH_NIOS2                            = 0x40000071\n\tAUDIT_ARCH_OPENRISC                         = 0x5c\n\tAUDIT_ARCH_PARISC                           = 0xf\n\tAUDIT_ARCH_PARISC64                         = 0x8000000f\n\tAUDIT_ARCH_PPC                              = 0x14\n\tAUDIT_ARCH_PPC64                            = 0x80000015\n\tAUDIT_ARCH_PPC64LE                          = 0xc0000015\n\tAUDIT_ARCH_RISCV32                          = 0x400000f3\n\tAUDIT_ARCH_RISCV64                          = 0xc00000f3\n\tAUDIT_ARCH_S390                             = 0x16\n\tAUDIT_ARCH_S390X                            = 0x80000016\n\tAUDIT_ARCH_SH                               = 0x2a\n\tAUDIT_ARCH_SH64                             = 0x8000002a\n\tAUDIT_ARCH_SHEL                             = 0x4000002a\n\tAUDIT_ARCH_SHEL64                           = 0xc000002a\n\tAUDIT_ARCH_SPARC                            = 0x2\n\tAUDIT_ARCH_SPARC64                          = 0x8000002b\n\tAUDIT_ARCH_TILEGX                           = 0xc00000bf\n\tAUDIT_ARCH_TILEGX32                         = 0x400000bf\n\tAUDIT_ARCH_TILEPRO                          = 0x400000bc\n\tAUDIT_ARCH_UNICORE                          = 0x4000006e\n\tAUDIT_ARCH_X86_64                           = 0xc000003e\n\tAUDIT_ARCH_XTENSA                           = 0x5e\n\tAUDIT_ARG0                                  = 0xc8\n\tAUDIT_ARG1                                  = 0xc9\n\tAUDIT_ARG2                                  = 0xca\n\tAUDIT_ARG3                                  = 0xcb\n\tAUDIT_AVC                                   = 0x578\n\tAUDIT_AVC_PATH                              = 0x57a\n\tAUDIT_BITMASK_SIZE                          = 0x40\n\tAUDIT_BIT_MASK                              = 0x8000000\n\tAUDIT_BIT_TEST                              = 0x48000000\n\tAUDIT_BPF                                   = 0x536\n\tAUDIT_BPRM_FCAPS                            = 0x529\n\tAUDIT_CAPSET                                = 0x52a\n\tAUDIT_CLASS_CHATTR                          = 0x2\n\tAUDIT_CLASS_CHATTR_32                       = 0x3\n\tAUDIT_CLASS_DIR_WRITE                       = 0x0\n\tAUDIT_CLASS_DIR_WRITE_32                    = 0x1\n\tAUDIT_CLASS_READ                            = 0x4\n\tAUDIT_CLASS_READ_32                         = 0x5\n\tAUDIT_CLASS_SIGNAL                          = 0x8\n\tAUDIT_CLASS_SIGNAL_32                       = 0x9\n\tAUDIT_CLASS_WRITE                           = 0x6\n\tAUDIT_CLASS_WRITE_32                        = 0x7\n\tAUDIT_COMPARE_AUID_TO_EUID                  = 0x10\n\tAUDIT_COMPARE_AUID_TO_FSUID                 = 0xe\n\tAUDIT_COMPARE_AUID_TO_OBJ_UID               = 0x5\n\tAUDIT_COMPARE_AUID_TO_SUID                  = 0xf\n\tAUDIT_COMPARE_EGID_TO_FSGID                 = 0x17\n\tAUDIT_COMPARE_EGID_TO_OBJ_GID               = 0x4\n\tAUDIT_COMPARE_EGID_TO_SGID                  = 0x18\n\tAUDIT_COMPARE_EUID_TO_FSUID                 = 0x12\n\tAUDIT_COMPARE_EUID_TO_OBJ_UID               = 0x3\n\tAUDIT_COMPARE_EUID_TO_SUID                  = 0x11\n\tAUDIT_COMPARE_FSGID_TO_OBJ_GID              = 0x9\n\tAUDIT_COMPARE_FSUID_TO_OBJ_UID              = 0x8\n\tAUDIT_COMPARE_GID_TO_EGID                   = 0x14\n\tAUDIT_COMPARE_GID_TO_FSGID                  = 0x15\n\tAUDIT_COMPARE_GID_TO_OBJ_GID                = 0x2\n\tAUDIT_COMPARE_GID_TO_SGID                   = 0x16\n\tAUDIT_COMPARE_SGID_TO_FSGID                 = 0x19\n\tAUDIT_COMPARE_SGID_TO_OBJ_GID               = 0x7\n\tAUDIT_COMPARE_SUID_TO_FSUID                 = 0x13\n\tAUDIT_COMPARE_SUID_TO_OBJ_UID               = 0x6\n\tAUDIT_COMPARE_UID_TO_AUID                   = 0xa\n\tAUDIT_COMPARE_UID_TO_EUID                   = 0xb\n\tAUDIT_COMPARE_UID_TO_FSUID                  = 0xc\n\tAUDIT_COMPARE_UID_TO_OBJ_UID                = 0x1\n\tAUDIT_COMPARE_UID_TO_SUID                   = 0xd\n\tAUDIT_CONFIG_CHANGE                         = 0x519\n\tAUDIT_CWD                                   = 0x51b\n\tAUDIT_DAEMON_ABORT                          = 0x4b2\n\tAUDIT_DAEMON_CONFIG                         = 0x4b3\n\tAUDIT_DAEMON_END                            = 0x4b1\n\tAUDIT_DAEMON_START                          = 0x4b0\n\tAUDIT_DEL                                   = 0x3ec\n\tAUDIT_DEL_RULE                              = 0x3f4\n\tAUDIT_DEVMAJOR                              = 0x64\n\tAUDIT_DEVMINOR                              = 0x65\n\tAUDIT_DIR                                   = 0x6b\n\tAUDIT_DM_CTRL                               = 0x53a\n\tAUDIT_DM_EVENT                              = 0x53b\n\tAUDIT_EGID                                  = 0x6\n\tAUDIT_EOE                                   = 0x528\n\tAUDIT_EQUAL                                 = 0x40000000\n\tAUDIT_EUID                                  = 0x2\n\tAUDIT_EVENT_LISTENER                        = 0x537\n\tAUDIT_EXE                                   = 0x70\n\tAUDIT_EXECVE                                = 0x51d\n\tAUDIT_EXIT                                  = 0x67\n\tAUDIT_FAIL_PANIC                            = 0x2\n\tAUDIT_FAIL_PRINTK                           = 0x1\n\tAUDIT_FAIL_SILENT                           = 0x0\n\tAUDIT_FANOTIFY                              = 0x533\n\tAUDIT_FD_PAIR                               = 0x525\n\tAUDIT_FEATURE_BITMAP_ALL                    = 0x7f\n\tAUDIT_FEATURE_BITMAP_BACKLOG_LIMIT          = 0x1\n\tAUDIT_FEATURE_BITMAP_BACKLOG_WAIT_TIME      = 0x2\n\tAUDIT_FEATURE_BITMAP_EXCLUDE_EXTEND         = 0x8\n\tAUDIT_FEATURE_BITMAP_EXECUTABLE_PATH        = 0x4\n\tAUDIT_FEATURE_BITMAP_FILTER_FS              = 0x40\n\tAUDIT_FEATURE_BITMAP_LOST_RESET             = 0x20\n\tAUDIT_FEATURE_BITMAP_SESSIONID_FILTER       = 0x10\n\tAUDIT_FEATURE_CHANGE                        = 0x530\n\tAUDIT_FEATURE_LOGINUID_IMMUTABLE            = 0x1\n\tAUDIT_FEATURE_ONLY_UNSET_LOGINUID           = 0x0\n\tAUDIT_FEATURE_VERSION                       = 0x1\n\tAUDIT_FIELD_COMPARE                         = 0x6f\n\tAUDIT_FILETYPE                              = 0x6c\n\tAUDIT_FILTERKEY                             = 0xd2\n\tAUDIT_FILTER_ENTRY                          = 0x2\n\tAUDIT_FILTER_EXCLUDE                        = 0x5\n\tAUDIT_FILTER_EXIT                           = 0x4\n\tAUDIT_FILTER_FS                             = 0x6\n\tAUDIT_FILTER_PREPEND                        = 0x10\n\tAUDIT_FILTER_TASK                           = 0x1\n\tAUDIT_FILTER_TYPE                           = 0x5\n\tAUDIT_FILTER_URING_EXIT                     = 0x7\n\tAUDIT_FILTER_USER                           = 0x0\n\tAUDIT_FILTER_WATCH                          = 0x3\n\tAUDIT_FIRST_KERN_ANOM_MSG                   = 0x6a4\n\tAUDIT_FIRST_USER_MSG                        = 0x44c\n\tAUDIT_FIRST_USER_MSG2                       = 0x834\n\tAUDIT_FSGID                                 = 0x8\n\tAUDIT_FSTYPE                                = 0x1a\n\tAUDIT_FSUID                                 = 0x4\n\tAUDIT_GET                                   = 0x3e8\n\tAUDIT_GET_FEATURE                           = 0x3fb\n\tAUDIT_GID                                   = 0x5\n\tAUDIT_GREATER_THAN                          = 0x20000000\n\tAUDIT_GREATER_THAN_OR_EQUAL                 = 0x60000000\n\tAUDIT_INODE                                 = 0x66\n\tAUDIT_INTEGRITY_DATA                        = 0x708\n\tAUDIT_INTEGRITY_EVM_XATTR                   = 0x70e\n\tAUDIT_INTEGRITY_HASH                        = 0x70b\n\tAUDIT_INTEGRITY_METADATA                    = 0x709\n\tAUDIT_INTEGRITY_PCR                         = 0x70c\n\tAUDIT_INTEGRITY_POLICY_RULE                 = 0x70f\n\tAUDIT_INTEGRITY_RULE                        = 0x70d\n\tAUDIT_INTEGRITY_STATUS                      = 0x70a\n\tAUDIT_INTEGRITY_USERSPACE                   = 0x710\n\tAUDIT_IPC                                   = 0x517\n\tAUDIT_IPC_SET_PERM                          = 0x51f\n\tAUDIT_IPE_ACCESS                            = 0x58c\n\tAUDIT_IPE_CONFIG_CHANGE                     = 0x58d\n\tAUDIT_IPE_POLICY_LOAD                       = 0x58e\n\tAUDIT_KERNEL                                = 0x7d0\n\tAUDIT_KERNEL_OTHER                          = 0x524\n\tAUDIT_KERN_MODULE                           = 0x532\n\tAUDIT_LANDLOCK_ACCESS                       = 0x58f\n\tAUDIT_LANDLOCK_DOMAIN                       = 0x590\n\tAUDIT_LAST_FEATURE                          = 0x1\n\tAUDIT_LAST_KERN_ANOM_MSG                    = 0x707\n\tAUDIT_LAST_USER_MSG                         = 0x4af\n\tAUDIT_LAST_USER_MSG2                        = 0xbb7\n\tAUDIT_LESS_THAN                             = 0x10000000\n\tAUDIT_LESS_THAN_OR_EQUAL                    = 0x50000000\n\tAUDIT_LIST                                  = 0x3ea\n\tAUDIT_LIST_RULES                            = 0x3f5\n\tAUDIT_LOGIN                                 = 0x3ee\n\tAUDIT_LOGINUID                              = 0x9\n\tAUDIT_LOGINUID_SET                          = 0x18\n\tAUDIT_MAC_CALIPSO_ADD                       = 0x58a\n\tAUDIT_MAC_CALIPSO_DEL                       = 0x58b\n\tAUDIT_MAC_CIPSOV4_ADD                       = 0x57f\n\tAUDIT_MAC_CIPSOV4_DEL                       = 0x580\n\tAUDIT_MAC_CONFIG_CHANGE                     = 0x57d\n\tAUDIT_MAC_IPSEC_ADDSA                       = 0x583\n\tAUDIT_MAC_IPSEC_ADDSPD                      = 0x585\n\tAUDIT_MAC_IPSEC_DELSA                       = 0x584\n\tAUDIT_MAC_IPSEC_DELSPD                      = 0x586\n\tAUDIT_MAC_IPSEC_EVENT                       = 0x587\n\tAUDIT_MAC_MAP_ADD                           = 0x581\n\tAUDIT_MAC_MAP_DEL                           = 0x582\n\tAUDIT_MAC_POLICY_LOAD                       = 0x57b\n\tAUDIT_MAC_STATUS                            = 0x57c\n\tAUDIT_MAC_UNLBL_ALLOW                       = 0x57e\n\tAUDIT_MAC_UNLBL_STCADD                      = 0x588\n\tAUDIT_MAC_UNLBL_STCDEL                      = 0x589\n\tAUDIT_MAKE_EQUIV                            = 0x3f7\n\tAUDIT_MAX_FIELDS                            = 0x40\n\tAUDIT_MAX_FIELD_COMPARE                     = 0x19\n\tAUDIT_MAX_KEY_LEN                           = 0x100\n\tAUDIT_MESSAGE_TEXT_MAX                      = 0x2170\n\tAUDIT_MMAP                                  = 0x52b\n\tAUDIT_MQ_GETSETATTR                         = 0x523\n\tAUDIT_MQ_NOTIFY                             = 0x522\n\tAUDIT_MQ_OPEN                               = 0x520\n\tAUDIT_MQ_SENDRECV                           = 0x521\n\tAUDIT_MSGTYPE                               = 0xc\n\tAUDIT_NEGATE                                = 0x80000000\n\tAUDIT_NETFILTER_CFG                         = 0x52d\n\tAUDIT_NETFILTER_PKT                         = 0x52c\n\tAUDIT_NEVER                                 = 0x0\n\tAUDIT_NLGRP_MAX                             = 0x1\n\tAUDIT_NOT_EQUAL                             = 0x30000000\n\tAUDIT_NR_FILTERS                            = 0x8\n\tAUDIT_OBJ_GID                               = 0x6e\n\tAUDIT_OBJ_LEV_HIGH                          = 0x17\n\tAUDIT_OBJ_LEV_LOW                           = 0x16\n\tAUDIT_OBJ_PID                               = 0x526\n\tAUDIT_OBJ_ROLE                              = 0x14\n\tAUDIT_OBJ_TYPE                              = 0x15\n\tAUDIT_OBJ_UID                               = 0x6d\n\tAUDIT_OBJ_USER                              = 0x13\n\tAUDIT_OPENAT2                               = 0x539\n\tAUDIT_OPERATORS                             = 0x78000000\n\tAUDIT_PATH                                  = 0x516\n\tAUDIT_PERM                                  = 0x6a\n\tAUDIT_PERM_ATTR                             = 0x8\n\tAUDIT_PERM_EXEC                             = 0x1\n\tAUDIT_PERM_READ                             = 0x4\n\tAUDIT_PERM_WRITE                            = 0x2\n\tAUDIT_PERS                                  = 0xa\n\tAUDIT_PID                                   = 0x0\n\tAUDIT_POSSIBLE                              = 0x1\n\tAUDIT_PPID                                  = 0x12\n\tAUDIT_PROCTITLE                             = 0x52f\n\tAUDIT_REPLACE                               = 0x531\n\tAUDIT_SADDR_FAM                             = 0x71\n\tAUDIT_SECCOMP                               = 0x52e\n\tAUDIT_SELINUX_ERR                           = 0x579\n\tAUDIT_SESSIONID                             = 0x19\n\tAUDIT_SET                                   = 0x3e9\n\tAUDIT_SET_FEATURE                           = 0x3fa\n\tAUDIT_SGID                                  = 0x7\n\tAUDIT_SID_UNSET                             = 0xffffffff\n\tAUDIT_SIGNAL_INFO                           = 0x3f2\n\tAUDIT_SOCKADDR                              = 0x51a\n\tAUDIT_SOCKETCALL                            = 0x518\n\tAUDIT_STATUS_BACKLOG_LIMIT                  = 0x10\n\tAUDIT_STATUS_BACKLOG_WAIT_TIME              = 0x20\n\tAUDIT_STATUS_BACKLOG_WAIT_TIME_ACTUAL       = 0x80\n\tAUDIT_STATUS_ENABLED                        = 0x1\n\tAUDIT_STATUS_FAILURE                        = 0x2\n\tAUDIT_STATUS_LOST                           = 0x40\n\tAUDIT_STATUS_PID                            = 0x4\n\tAUDIT_STATUS_RATE_LIMIT                     = 0x8\n\tAUDIT_SUBJ_CLR                              = 0x11\n\tAUDIT_SUBJ_ROLE                             = 0xe\n\tAUDIT_SUBJ_SEN                              = 0x10\n\tAUDIT_SUBJ_TYPE                             = 0xf\n\tAUDIT_SUBJ_USER                             = 0xd\n\tAUDIT_SUCCESS                               = 0x68\n\tAUDIT_SUID                                  = 0x3\n\tAUDIT_SYSCALL                               = 0x514\n\tAUDIT_SYSCALL_CLASSES                       = 0x10\n\tAUDIT_TIME_ADJNTPVAL                        = 0x535\n\tAUDIT_TIME_INJOFFSET                        = 0x534\n\tAUDIT_TRIM                                  = 0x3f6\n\tAUDIT_TTY                                   = 0x527\n\tAUDIT_TTY_GET                               = 0x3f8\n\tAUDIT_TTY_SET                               = 0x3f9\n\tAUDIT_UID                                   = 0x1\n\tAUDIT_UID_UNSET                             = 0xffffffff\n\tAUDIT_UNUSED_BITS                           = 0x7fffc00\n\tAUDIT_URINGOP                               = 0x538\n\tAUDIT_USER                                  = 0x3ed\n\tAUDIT_USER_AVC                              = 0x453\n\tAUDIT_USER_TTY                              = 0x464\n\tAUDIT_VERSION_BACKLOG_LIMIT                 = 0x1\n\tAUDIT_VERSION_BACKLOG_WAIT_TIME             = 0x2\n\tAUDIT_VERSION_LATEST                        = 0x7f\n\tAUDIT_WATCH                                 = 0x69\n\tAUDIT_WATCH_INS                             = 0x3ef\n\tAUDIT_WATCH_LIST                            = 0x3f1\n\tAUDIT_WATCH_REM                             = 0x3f0\n\tAUTOFS_SUPER_MAGIC                          = 0x187\n\tB0                                          = 0x0\n\tB110                                        = 0x3\n\tB1200                                       = 0x9\n\tB134                                        = 0x4\n\tB150                                        = 0x5\n\tB1800                                       = 0xa\n\tB19200                                      = 0xe\n\tB200                                        = 0x6\n\tB2400                                       = 0xb\n\tB300                                        = 0x7\n\tB38400                                      = 0xf\n\tB4800                                       = 0xc\n\tB50                                         = 0x1\n\tB600                                        = 0x8\n\tB75                                         = 0x2\n\tB9600                                       = 0xd\n\tBCACHEFS_SUPER_MAGIC                        = 0xca451a4e\n\tBDEVFS_MAGIC                                = 0x62646576\n\tBINDERFS_SUPER_MAGIC                        = 0x6c6f6f70\n\tBINFMTFS_MAGIC                              = 0x42494e4d\n\tBPF_A                                       = 0x10\n\tBPF_ABS                                     = 0x20\n\tBPF_ADD                                     = 0x0\n\tBPF_ALU                                     = 0x4\n\tBPF_ALU64                                   = 0x7\n\tBPF_AND                                     = 0x50\n\tBPF_ARSH                                    = 0xc0\n\tBPF_ATOMIC                                  = 0xc0\n\tBPF_B                                       = 0x10\n\tBPF_BUILD_ID_SIZE                           = 0x14\n\tBPF_CALL                                    = 0x80\n\tBPF_CMPXCHG                                 = 0xf1\n\tBPF_DIV                                     = 0x30\n\tBPF_DW                                      = 0x18\n\tBPF_END                                     = 0xd0\n\tBPF_EXIT                                    = 0x90\n\tBPF_FETCH                                   = 0x1\n\tBPF_FROM_BE                                 = 0x8\n\tBPF_FROM_LE                                 = 0x0\n\tBPF_FS_MAGIC                                = 0xcafe4a11\n\tBPF_F_AFTER                                 = 0x10\n\tBPF_F_ALLOW_MULTI                           = 0x2\n\tBPF_F_ALLOW_OVERRIDE                        = 0x1\n\tBPF_F_ANY_ALIGNMENT                         = 0x2\n\tBPF_F_BEFORE                                = 0x8\n\tBPF_F_ID                                    = 0x20\n\tBPF_F_NETFILTER_IP_DEFRAG                   = 0x1\n\tBPF_F_PREORDER                              = 0x40\n\tBPF_F_QUERY_EFFECTIVE                       = 0x1\n\tBPF_F_REDIRECT_FLAGS                        = 0x19\n\tBPF_F_REPLACE                               = 0x4\n\tBPF_F_SLEEPABLE                             = 0x10\n\tBPF_F_STRICT_ALIGNMENT                      = 0x1\n\tBPF_F_TEST_REG_INVARIANTS                   = 0x80\n\tBPF_F_TEST_RND_HI32                         = 0x4\n\tBPF_F_TEST_RUN_ON_CPU                       = 0x1\n\tBPF_F_TEST_SKB_CHECKSUM_COMPLETE            = 0x4\n\tBPF_F_TEST_STATE_FREQ                       = 0x8\n\tBPF_F_TEST_XDP_LIVE_FRAMES                  = 0x2\n\tBPF_F_XDP_DEV_BOUND_ONLY                    = 0x40\n\tBPF_F_XDP_HAS_FRAGS                         = 0x20\n\tBPF_H                                       = 0x8\n\tBPF_IMM                                     = 0x0\n\tBPF_IND                                     = 0x40\n\tBPF_JA                                      = 0x0\n\tBPF_JCOND                                   = 0xe0\n\tBPF_JEQ                                     = 0x10\n\tBPF_JGE                                     = 0x30\n\tBPF_JGT                                     = 0x20\n\tBPF_JLE                                     = 0xb0\n\tBPF_JLT                                     = 0xa0\n\tBPF_JMP                                     = 0x5\n\tBPF_JMP32                                   = 0x6\n\tBPF_JNE                                     = 0x50\n\tBPF_JSET                                    = 0x40\n\tBPF_JSGE                                    = 0x70\n\tBPF_JSGT                                    = 0x60\n\tBPF_JSLE                                    = 0xd0\n\tBPF_JSLT                                    = 0xc0\n\tBPF_K                                       = 0x0\n\tBPF_LD                                      = 0x0\n\tBPF_LDX                                     = 0x1\n\tBPF_LEN                                     = 0x80\n\tBPF_LL_OFF                                  = -0x200000\n\tBPF_LOAD_ACQ                                = 0x100\n\tBPF_LSH                                     = 0x60\n\tBPF_MAJOR_VERSION                           = 0x1\n\tBPF_MAXINSNS                                = 0x1000\n\tBPF_MEM                                     = 0x60\n\tBPF_MEMSX                                   = 0x80\n\tBPF_MEMWORDS                                = 0x10\n\tBPF_MINOR_VERSION                           = 0x1\n\tBPF_MISC                                    = 0x7\n\tBPF_MOD                                     = 0x90\n\tBPF_MOV                                     = 0xb0\n\tBPF_MSH                                     = 0xa0\n\tBPF_MUL                                     = 0x20\n\tBPF_NEG                                     = 0x80\n\tBPF_NET_OFF                                 = -0x100000\n\tBPF_OBJ_NAME_LEN                            = 0x10\n\tBPF_OR                                      = 0x40\n\tBPF_PSEUDO_BTF_ID                           = 0x3\n\tBPF_PSEUDO_CALL                             = 0x1\n\tBPF_PSEUDO_FUNC                             = 0x4\n\tBPF_PSEUDO_KFUNC_CALL                       = 0x2\n\tBPF_PSEUDO_MAP_FD                           = 0x1\n\tBPF_PSEUDO_MAP_IDX                          = 0x5\n\tBPF_PSEUDO_MAP_IDX_VALUE                    = 0x6\n\tBPF_PSEUDO_MAP_VALUE                        = 0x2\n\tBPF_RET                                     = 0x6\n\tBPF_RSH                                     = 0x70\n\tBPF_ST                                      = 0x2\n\tBPF_STORE_REL                               = 0x110\n\tBPF_STX                                     = 0x3\n\tBPF_SUB                                     = 0x10\n\tBPF_TAG_SIZE                                = 0x8\n\tBPF_TAX                                     = 0x0\n\tBPF_TO_BE                                   = 0x8\n\tBPF_TO_LE                                   = 0x0\n\tBPF_TXA                                     = 0x80\n\tBPF_W                                       = 0x0\n\tBPF_X                                       = 0x8\n\tBPF_XADD                                    = 0xc0\n\tBPF_XCHG                                    = 0xe1\n\tBPF_XOR                                     = 0xa0\n\tBRKINT                                      = 0x2\n\tBS0                                         = 0x0\n\tBTRFS_SUPER_MAGIC                           = 0x9123683e\n\tBTRFS_TEST_MAGIC                            = 0x73727279\n\tBUS_BLUETOOTH                               = 0x5\n\tBUS_HIL                                     = 0x4\n\tBUS_USB                                     = 0x3\n\tBUS_VIRTUAL                                 = 0x6\n\tCAN_BCM                                     = 0x2\n\tCAN_BUS_OFF_THRESHOLD                       = 0x100\n\tCAN_CTRLMODE_3_SAMPLES                      = 0x4\n\tCAN_CTRLMODE_BERR_REPORTING                 = 0x10\n\tCAN_CTRLMODE_CC_LEN8_DLC                    = 0x100\n\tCAN_CTRLMODE_FD                             = 0x20\n\tCAN_CTRLMODE_FD_NON_ISO                     = 0x80\n\tCAN_CTRLMODE_LISTENONLY                     = 0x2\n\tCAN_CTRLMODE_LOOPBACK                       = 0x1\n\tCAN_CTRLMODE_ONE_SHOT                       = 0x8\n\tCAN_CTRLMODE_PRESUME_ACK                    = 0x40\n\tCAN_CTRLMODE_TDC_AUTO                       = 0x200\n\tCAN_CTRLMODE_TDC_MANUAL                     = 0x400\n\tCAN_EFF_FLAG                                = 0x80000000\n\tCAN_EFF_ID_BITS                             = 0x1d\n\tCAN_EFF_MASK                                = 0x1fffffff\n\tCAN_ERROR_PASSIVE_THRESHOLD                 = 0x80\n\tCAN_ERROR_WARNING_THRESHOLD                 = 0x60\n\tCAN_ERR_ACK                                 = 0x20\n\tCAN_ERR_BUSERROR                            = 0x80\n\tCAN_ERR_BUSOFF                              = 0x40\n\tCAN_ERR_CNT                                 = 0x200\n\tCAN_ERR_CRTL                                = 0x4\n\tCAN_ERR_CRTL_ACTIVE                         = 0x40\n\tCAN_ERR_CRTL_RX_OVERFLOW                    = 0x1\n\tCAN_ERR_CRTL_RX_PASSIVE                     = 0x10\n\tCAN_ERR_CRTL_RX_WARNING                     = 0x4\n\tCAN_ERR_CRTL_TX_OVERFLOW                    = 0x2\n\tCAN_ERR_CRTL_TX_PASSIVE                     = 0x20\n\tCAN_ERR_CRTL_TX_WARNING                     = 0x8\n\tCAN_ERR_CRTL_UNSPEC                         = 0x0\n\tCAN_ERR_DLC                                 = 0x8\n\tCAN_ERR_FLAG                                = 0x20000000\n\tCAN_ERR_LOSTARB                             = 0x2\n\tCAN_ERR_LOSTARB_UNSPEC                      = 0x0\n\tCAN_ERR_MASK                                = 0x1fffffff\n\tCAN_ERR_PROT                                = 0x8\n\tCAN_ERR_PROT_ACTIVE                         = 0x40\n\tCAN_ERR_PROT_BIT                            = 0x1\n\tCAN_ERR_PROT_BIT0                           = 0x8\n\tCAN_ERR_PROT_BIT1                           = 0x10\n\tCAN_ERR_PROT_FORM                           = 0x2\n\tCAN_ERR_PROT_LOC_ACK                        = 0x19\n\tCAN_ERR_PROT_LOC_ACK_DEL                    = 0x1b\n\tCAN_ERR_PROT_LOC_CRC_DEL                    = 0x18\n\tCAN_ERR_PROT_LOC_CRC_SEQ                    = 0x8\n\tCAN_ERR_PROT_LOC_DATA                       = 0xa\n\tCAN_ERR_PROT_LOC_DLC                        = 0xb\n\tCAN_ERR_PROT_LOC_EOF                        = 0x1a\n\tCAN_ERR_PROT_LOC_ID04_00                    = 0xe\n\tCAN_ERR_PROT_LOC_ID12_05                    = 0xf\n\tCAN_ERR_PROT_LOC_ID17_13                    = 0x7\n\tCAN_ERR_PROT_LOC_ID20_18                    = 0x6\n\tCAN_ERR_PROT_LOC_ID28_21                    = 0x2\n\tCAN_ERR_PROT_LOC_IDE                        = 0x5\n\tCAN_ERR_PROT_LOC_INTERM                     = 0x12\n\tCAN_ERR_PROT_LOC_RES0                       = 0x9\n\tCAN_ERR_PROT_LOC_RES1                       = 0xd\n\tCAN_ERR_PROT_LOC_RTR                        = 0xc\n\tCAN_ERR_PROT_LOC_SOF                        = 0x3\n\tCAN_ERR_PROT_LOC_SRTR                       = 0x4\n\tCAN_ERR_PROT_LOC_UNSPEC                     = 0x0\n\tCAN_ERR_PROT_OVERLOAD                       = 0x20\n\tCAN_ERR_PROT_STUFF                          = 0x4\n\tCAN_ERR_PROT_TX                             = 0x80\n\tCAN_ERR_PROT_UNSPEC                         = 0x0\n\tCAN_ERR_RESTARTED                           = 0x100\n\tCAN_ERR_TRX                                 = 0x10\n\tCAN_ERR_TRX_CANH_NO_WIRE                    = 0x4\n\tCAN_ERR_TRX_CANH_SHORT_TO_BAT               = 0x5\n\tCAN_ERR_TRX_CANH_SHORT_TO_GND               = 0x7\n\tCAN_ERR_TRX_CANH_SHORT_TO_VCC               = 0x6\n\tCAN_ERR_TRX_CANL_NO_WIRE                    = 0x40\n\tCAN_ERR_TRX_CANL_SHORT_TO_BAT               = 0x50\n\tCAN_ERR_TRX_CANL_SHORT_TO_CANH              = 0x80\n\tCAN_ERR_TRX_CANL_SHORT_TO_GND               = 0x70\n\tCAN_ERR_TRX_CANL_SHORT_TO_VCC               = 0x60\n\tCAN_ERR_TRX_UNSPEC                          = 0x0\n\tCAN_ERR_TX_TIMEOUT                          = 0x1\n\tCAN_INV_FILTER                              = 0x20000000\n\tCAN_ISOTP                                   = 0x6\n\tCAN_J1939                                   = 0x7\n\tCAN_MAX_DLC                                 = 0x8\n\tCAN_MAX_DLEN                                = 0x8\n\tCAN_MAX_RAW_DLC                             = 0xf\n\tCAN_MCNET                                   = 0x5\n\tCAN_MTU                                     = 0x10\n\tCAN_NPROTO                                  = 0x8\n\tCAN_RAW                                     = 0x1\n\tCAN_RAW_FILTER_MAX                          = 0x200\n\tCAN_RAW_XL_VCID_RX_FILTER                   = 0x4\n\tCAN_RAW_XL_VCID_TX_PASS                     = 0x2\n\tCAN_RAW_XL_VCID_TX_SET                      = 0x1\n\tCAN_RTR_FLAG                                = 0x40000000\n\tCAN_SFF_ID_BITS                             = 0xb\n\tCAN_SFF_MASK                                = 0x7ff\n\tCAN_TERMINATION_DISABLED                    = 0x0\n\tCAN_TP16                                    = 0x3\n\tCAN_TP20                                    = 0x4\n\tCAP_AUDIT_CONTROL                           = 0x1e\n\tCAP_AUDIT_READ                              = 0x25\n\tCAP_AUDIT_WRITE                             = 0x1d\n\tCAP_BLOCK_SUSPEND                           = 0x24\n\tCAP_BPF                                     = 0x27\n\tCAP_CHECKPOINT_RESTORE                      = 0x28\n\tCAP_CHOWN                                   = 0x0\n\tCAP_DAC_OVERRIDE                            = 0x1\n\tCAP_DAC_READ_SEARCH                         = 0x2\n\tCAP_FOWNER                                  = 0x3\n\tCAP_FSETID                                  = 0x4\n\tCAP_IPC_LOCK                                = 0xe\n\tCAP_IPC_OWNER                               = 0xf\n\tCAP_KILL                                    = 0x5\n\tCAP_LAST_CAP                                = 0x28\n\tCAP_LEASE                                   = 0x1c\n\tCAP_LINUX_IMMUTABLE                         = 0x9\n\tCAP_MAC_ADMIN                               = 0x21\n\tCAP_MAC_OVERRIDE                            = 0x20\n\tCAP_MKNOD                                   = 0x1b\n\tCAP_NET_ADMIN                               = 0xc\n\tCAP_NET_BIND_SERVICE                        = 0xa\n\tCAP_NET_BROADCAST                           = 0xb\n\tCAP_NET_RAW                                 = 0xd\n\tCAP_PERFMON                                 = 0x26\n\tCAP_SETFCAP                                 = 0x1f\n\tCAP_SETGID                                  = 0x6\n\tCAP_SETPCAP                                 = 0x8\n\tCAP_SETUID                                  = 0x7\n\tCAP_SYSLOG                                  = 0x22\n\tCAP_SYS_ADMIN                               = 0x15\n\tCAP_SYS_BOOT                                = 0x16\n\tCAP_SYS_CHROOT                              = 0x12\n\tCAP_SYS_MODULE                              = 0x10\n\tCAP_SYS_NICE                                = 0x17\n\tCAP_SYS_PACCT                               = 0x14\n\tCAP_SYS_PTRACE                              = 0x13\n\tCAP_SYS_RAWIO                               = 0x11\n\tCAP_SYS_RESOURCE                            = 0x18\n\tCAP_SYS_TIME                                = 0x19\n\tCAP_SYS_TTY_CONFIG                          = 0x1a\n\tCAP_WAKE_ALARM                              = 0x23\n\tCEPH_SUPER_MAGIC                            = 0xc36400\n\tCFLUSH                                      = 0xf\n\tCGROUP2_SUPER_MAGIC                         = 0x63677270\n\tCGROUP_SUPER_MAGIC                          = 0x27e0eb\n\tCIFS_SUPER_MAGIC                            = 0xff534d42\n\tCLOCK_BOOTTIME                              = 0x7\n\tCLOCK_BOOTTIME_ALARM                        = 0x9\n\tCLOCK_DEFAULT                               = 0x0\n\tCLOCK_EXT                                   = 0x1\n\tCLOCK_INT                                   = 0x2\n\tCLOCK_MONOTONIC                             = 0x1\n\tCLOCK_MONOTONIC_COARSE                      = 0x6\n\tCLOCK_MONOTONIC_RAW                         = 0x4\n\tCLOCK_PROCESS_CPUTIME_ID                    = 0x2\n\tCLOCK_REALTIME                              = 0x0\n\tCLOCK_REALTIME_ALARM                        = 0x8\n\tCLOCK_REALTIME_COARSE                       = 0x5\n\tCLOCK_TAI                                   = 0xb\n\tCLOCK_THREAD_CPUTIME_ID                     = 0x3\n\tCLOCK_TXFROMRX                              = 0x4\n\tCLOCK_TXINT                                 = 0x3\n\tCLONE_ARGS_SIZE_VER0                        = 0x40\n\tCLONE_ARGS_SIZE_VER1                        = 0x50\n\tCLONE_ARGS_SIZE_VER2                        = 0x58\n\tCLONE_CHILD_CLEARTID                        = 0x200000\n\tCLONE_CHILD_SETTID                          = 0x1000000\n\tCLONE_CLEAR_SIGHAND                         = 0x100000000\n\tCLONE_DETACHED                              = 0x400000\n\tCLONE_FILES                                 = 0x400\n\tCLONE_FS                                    = 0x200\n\tCLONE_INTO_CGROUP                           = 0x200000000\n\tCLONE_IO                                    = 0x80000000\n\tCLONE_NEWCGROUP                             = 0x2000000\n\tCLONE_NEWIPC                                = 0x8000000\n\tCLONE_NEWNET                                = 0x40000000\n\tCLONE_NEWNS                                 = 0x20000\n\tCLONE_NEWPID                                = 0x20000000\n\tCLONE_NEWTIME                               = 0x80\n\tCLONE_NEWUSER                               = 0x10000000\n\tCLONE_NEWUTS                                = 0x4000000\n\tCLONE_PARENT                                = 0x8000\n\tCLONE_PARENT_SETTID                         = 0x100000\n\tCLONE_PIDFD                                 = 0x1000\n\tCLONE_PTRACE                                = 0x2000\n\tCLONE_SETTLS                                = 0x80000\n\tCLONE_SIGHAND                               = 0x800\n\tCLONE_SYSVSEM                               = 0x40000\n\tCLONE_THREAD                                = 0x10000\n\tCLONE_UNTRACED                              = 0x800000\n\tCLONE_VFORK                                 = 0x4000\n\tCLONE_VM                                    = 0x100\n\tCMSPAR                                      = 0x40000000\n\tCODA_SUPER_MAGIC                            = 0x73757245\n\tCR0                                         = 0x0\n\tCRAMFS_MAGIC                                = 0x28cd3d45\n\tCRTSCTS                                     = 0x80000000\n\tCRYPTO_MAX_NAME                             = 0x40\n\tCRYPTO_MSG_MAX                              = 0x15\n\tCRYPTO_NR_MSGTYPES                          = 0x6\n\tCRYPTO_REPORT_MAXSIZE                       = 0x160\n\tCS5                                         = 0x0\n\tCSIGNAL                                     = 0xff\n\tCSTART                                      = 0x11\n\tCSTATUS                                     = 0x0\n\tCSTOP                                       = 0x13\n\tCSUSP                                       = 0x1a\n\tDAXFS_MAGIC                                 = 0x64646178\n\tDEBUGFS_MAGIC                               = 0x64626720\n\tDEVLINK_CMD_ESWITCH_MODE_GET                = 0x1d\n\tDEVLINK_CMD_ESWITCH_MODE_SET                = 0x1e\n\tDEVLINK_FLASH_OVERWRITE_IDENTIFIERS         = 0x2\n\tDEVLINK_FLASH_OVERWRITE_SETTINGS            = 0x1\n\tDEVLINK_GENL_MCGRP_CONFIG_NAME              = \"config\"\n\tDEVLINK_GENL_NAME                           = \"devlink\"\n\tDEVLINK_GENL_VERSION                        = 0x1\n\tDEVLINK_PORT_FN_CAP_IPSEC_CRYPTO            = 0x4\n\tDEVLINK_PORT_FN_CAP_IPSEC_PACKET            = 0x8\n\tDEVLINK_PORT_FN_CAP_MIGRATABLE              = 0x2\n\tDEVLINK_PORT_FN_CAP_ROCE                    = 0x1\n\tDEVLINK_SB_THRESHOLD_TO_ALPHA_MAX           = 0x14\n\tDEVLINK_SUPPORTED_FLASH_OVERWRITE_SECTIONS  = 0x3\n\tDEVMEM_MAGIC                                = 0x454d444d\n\tDEVPTS_SUPER_MAGIC                          = 0x1cd1\n\tDMA_BUF_MAGIC                               = 0x444d4142\n\tDM_ACTIVE_PRESENT_FLAG                      = 0x20\n\tDM_BUFFER_FULL_FLAG                         = 0x100\n\tDM_CONTROL_NODE                             = \"control\"\n\tDM_DATA_OUT_FLAG                            = 0x10000\n\tDM_DEFERRED_REMOVE                          = 0x20000\n\tDM_DEV_ARM_POLL                             = 0xc138fd10\n\tDM_DEV_CREATE                               = 0xc138fd03\n\tDM_DEV_REMOVE                               = 0xc138fd04\n\tDM_DEV_RENAME                               = 0xc138fd05\n\tDM_DEV_SET_GEOMETRY                         = 0xc138fd0f\n\tDM_DEV_STATUS                               = 0xc138fd07\n\tDM_DEV_SUSPEND                              = 0xc138fd06\n\tDM_DEV_WAIT                                 = 0xc138fd08\n\tDM_DIR                                      = \"mapper\"\n\tDM_GET_TARGET_VERSION                       = 0xc138fd11\n\tDM_IMA_MEASUREMENT_FLAG                     = 0x80000\n\tDM_INACTIVE_PRESENT_FLAG                    = 0x40\n\tDM_INTERNAL_SUSPEND_FLAG                    = 0x40000\n\tDM_IOCTL                                    = 0xfd\n\tDM_LIST_DEVICES                             = 0xc138fd02\n\tDM_LIST_VERSIONS                            = 0xc138fd0d\n\tDM_MAX_TYPE_NAME                            = 0x10\n\tDM_NAME_LEN                                 = 0x80\n\tDM_NAME_LIST_FLAG_DOESNT_HAVE_UUID          = 0x2\n\tDM_NAME_LIST_FLAG_HAS_UUID                  = 0x1\n\tDM_NOFLUSH_FLAG                             = 0x800\n\tDM_PERSISTENT_DEV_FLAG                      = 0x8\n\tDM_QUERY_INACTIVE_TABLE_FLAG                = 0x1000\n\tDM_READONLY_FLAG                            = 0x1\n\tDM_REMOVE_ALL                               = 0xc138fd01\n\tDM_SECURE_DATA_FLAG                         = 0x8000\n\tDM_SKIP_BDGET_FLAG                          = 0x200\n\tDM_SKIP_LOCKFS_FLAG                         = 0x400\n\tDM_STATUS_TABLE_FLAG                        = 0x10\n\tDM_SUSPEND_FLAG                             = 0x2\n\tDM_TABLE_CLEAR                              = 0xc138fd0a\n\tDM_TABLE_DEPS                               = 0xc138fd0b\n\tDM_TABLE_LOAD                               = 0xc138fd09\n\tDM_TABLE_STATUS                             = 0xc138fd0c\n\tDM_TARGET_MSG                               = 0xc138fd0e\n\tDM_UEVENT_GENERATED_FLAG                    = 0x2000\n\tDM_UUID_FLAG                                = 0x4000\n\tDM_UUID_LEN                                 = 0x81\n\tDM_VERSION                                  = 0xc138fd00\n\tDM_VERSION_EXTRA                            = \"-ioctl (2025-04-28)\"\n\tDM_VERSION_MAJOR                            = 0x4\n\tDM_VERSION_MINOR                            = 0x32\n\tDM_VERSION_PATCHLEVEL                       = 0x0\n\tDT_ADDRRNGHI                                = 0x6ffffeff\n\tDT_ADDRRNGLO                                = 0x6ffffe00\n\tDT_BLK                                      = 0x6\n\tDT_CHR                                      = 0x2\n\tDT_DEBUG                                    = 0x15\n\tDT_DIR                                      = 0x4\n\tDT_ENCODING                                 = 0x20\n\tDT_FIFO                                     = 0x1\n\tDT_FINI                                     = 0xd\n\tDT_FLAGS_1                                  = 0x6ffffffb\n\tDT_GNU_HASH                                 = 0x6ffffef5\n\tDT_HASH                                     = 0x4\n\tDT_HIOS                                     = 0x6ffff000\n\tDT_HIPROC                                   = 0x7fffffff\n\tDT_INIT                                     = 0xc\n\tDT_JMPREL                                   = 0x17\n\tDT_LNK                                      = 0xa\n\tDT_LOOS                                     = 0x6000000d\n\tDT_LOPROC                                   = 0x70000000\n\tDT_NEEDED                                   = 0x1\n\tDT_NULL                                     = 0x0\n\tDT_PLTGOT                                   = 0x3\n\tDT_PLTREL                                   = 0x14\n\tDT_PLTRELSZ                                 = 0x2\n\tDT_REG                                      = 0x8\n\tDT_REL                                      = 0x11\n\tDT_RELA                                     = 0x7\n\tDT_RELACOUNT                                = 0x6ffffff9\n\tDT_RELAENT                                  = 0x9\n\tDT_RELASZ                                   = 0x8\n\tDT_RELCOUNT                                 = 0x6ffffffa\n\tDT_RELENT                                   = 0x13\n\tDT_RELSZ                                    = 0x12\n\tDT_RPATH                                    = 0xf\n\tDT_SOCK                                     = 0xc\n\tDT_SONAME                                   = 0xe\n\tDT_STRSZ                                    = 0xa\n\tDT_STRTAB                                   = 0x5\n\tDT_SYMBOLIC                                 = 0x10\n\tDT_SYMENT                                   = 0xb\n\tDT_SYMTAB                                   = 0x6\n\tDT_TEXTREL                                  = 0x16\n\tDT_UNKNOWN                                  = 0x0\n\tDT_VALRNGHI                                 = 0x6ffffdff\n\tDT_VALRNGLO                                 = 0x6ffffd00\n\tDT_VERDEF                                   = 0x6ffffffc\n\tDT_VERDEFNUM                                = 0x6ffffffd\n\tDT_VERNEED                                  = 0x6ffffffe\n\tDT_VERNEEDNUM                               = 0x6fffffff\n\tDT_VERSYM                                   = 0x6ffffff0\n\tDT_WHT                                      = 0xe\n\tECHO                                        = 0x8\n\tECRYPTFS_SUPER_MAGIC                        = 0xf15f\n\tEFD_SEMAPHORE                               = 0x1\n\tEFIVARFS_MAGIC                              = 0xde5e81e4\n\tEFS_SUPER_MAGIC                             = 0x414a53\n\tEI_CLASS                                    = 0x4\n\tEI_DATA                                     = 0x5\n\tEI_MAG0                                     = 0x0\n\tEI_MAG1                                     = 0x1\n\tEI_MAG2                                     = 0x2\n\tEI_MAG3                                     = 0x3\n\tEI_NIDENT                                   = 0x10\n\tEI_OSABI                                    = 0x7\n\tEI_PAD                                      = 0x8\n\tEI_VERSION                                  = 0x6\n\tELFCLASS32                                  = 0x1\n\tELFCLASS64                                  = 0x2\n\tELFCLASSNONE                                = 0x0\n\tELFCLASSNUM                                 = 0x3\n\tELFDATA2LSB                                 = 0x1\n\tELFDATA2MSB                                 = 0x2\n\tELFDATANONE                                 = 0x0\n\tELFMAG                                      = \"\\177ELF\"\n\tELFMAG0                                     = 0x7f\n\tELFMAG1                                     = 'E'\n\tELFMAG2                                     = 'L'\n\tELFMAG3                                     = 'F'\n\tELFOSABI_LINUX                              = 0x3\n\tELFOSABI_NONE                               = 0x0\n\tEM_386                                      = 0x3\n\tEM_486                                      = 0x6\n\tEM_68K                                      = 0x4\n\tEM_860                                      = 0x7\n\tEM_88K                                      = 0x5\n\tEM_AARCH64                                  = 0xb7\n\tEM_ALPHA                                    = 0x9026\n\tEM_ALTERA_NIOS2                             = 0x71\n\tEM_ARCOMPACT                                = 0x5d\n\tEM_ARCV2                                    = 0xc3\n\tEM_ARM                                      = 0x28\n\tEM_BLACKFIN                                 = 0x6a\n\tEM_BPF                                      = 0xf7\n\tEM_CRIS                                     = 0x4c\n\tEM_CSKY                                     = 0xfc\n\tEM_CYGNUS_M32R                              = 0x9041\n\tEM_CYGNUS_MN10300                           = 0xbeef\n\tEM_FRV                                      = 0x5441\n\tEM_H8_300                                   = 0x2e\n\tEM_HEXAGON                                  = 0xa4\n\tEM_IA_64                                    = 0x32\n\tEM_LOONGARCH                                = 0x102\n\tEM_M32                                      = 0x1\n\tEM_M32R                                     = 0x58\n\tEM_MICROBLAZE                               = 0xbd\n\tEM_MIPS                                     = 0x8\n\tEM_MIPS_RS3_LE                              = 0xa\n\tEM_MIPS_RS4_BE                              = 0xa\n\tEM_MN10300                                  = 0x59\n\tEM_NDS32                                    = 0xa7\n\tEM_NONE                                     = 0x0\n\tEM_OPENRISC                                 = 0x5c\n\tEM_PARISC                                   = 0xf\n\tEM_PPC                                      = 0x14\n\tEM_PPC64                                    = 0x15\n\tEM_RISCV                                    = 0xf3\n\tEM_S390                                     = 0x16\n\tEM_S390_OLD                                 = 0xa390\n\tEM_SH                                       = 0x2a\n\tEM_SPARC                                    = 0x2\n\tEM_SPARC32PLUS                              = 0x12\n\tEM_SPARCV9                                  = 0x2b\n\tEM_SPU                                      = 0x17\n\tEM_TILEGX                                   = 0xbf\n\tEM_TILEPRO                                  = 0xbc\n\tEM_TI_C6000                                 = 0x8c\n\tEM_UNICORE                                  = 0x6e\n\tEM_X86_64                                   = 0x3e\n\tEM_XTENSA                                   = 0x5e\n\tENCODING_DEFAULT                            = 0x0\n\tENCODING_FM_MARK                            = 0x3\n\tENCODING_FM_SPACE                           = 0x4\n\tENCODING_MANCHESTER                         = 0x5\n\tENCODING_NRZ                                = 0x1\n\tENCODING_NRZI                               = 0x2\n\tEPOLLERR                                    = 0x8\n\tEPOLLET                                     = 0x80000000\n\tEPOLLEXCLUSIVE                              = 0x10000000\n\tEPOLLHUP                                    = 0x10\n\tEPOLLIN                                     = 0x1\n\tEPOLLMSG                                    = 0x400\n\tEPOLLONESHOT                                = 0x40000000\n\tEPOLLOUT                                    = 0x4\n\tEPOLLPRI                                    = 0x2\n\tEPOLLRDBAND                                 = 0x80\n\tEPOLLRDHUP                                  = 0x2000\n\tEPOLLRDNORM                                 = 0x40\n\tEPOLLWAKEUP                                 = 0x20000000\n\tEPOLLWRBAND                                 = 0x200\n\tEPOLLWRNORM                                 = 0x100\n\tEPOLL_CTL_ADD                               = 0x1\n\tEPOLL_CTL_DEL                               = 0x2\n\tEPOLL_CTL_MOD                               = 0x3\n\tEPOLL_IOC_TYPE                              = 0x8a\n\tEROFS_SUPER_MAGIC_V1                        = 0xe0f5e1e2\n\tETHTOOL_BUSINFO_LEN                         = 0x20\n\tETHTOOL_EROMVERS_LEN                        = 0x20\n\tETHTOOL_FAMILY_NAME                         = \"ethtool\"\n\tETHTOOL_FAMILY_VERSION                      = 0x1\n\tETHTOOL_FEC_AUTO                            = 0x2\n\tETHTOOL_FEC_BASER                           = 0x10\n\tETHTOOL_FEC_LLRS                            = 0x20\n\tETHTOOL_FEC_NONE                            = 0x1\n\tETHTOOL_FEC_OFF                             = 0x4\n\tETHTOOL_FEC_RS                              = 0x8\n\tETHTOOL_FLAG_ALL                            = 0x7\n\tETHTOOL_FLASHDEV                            = 0x33\n\tETHTOOL_FLASH_MAX_FILENAME                  = 0x80\n\tETHTOOL_FWVERS_LEN                          = 0x20\n\tETHTOOL_F_COMPAT                            = 0x4\n\tETHTOOL_F_UNSUPPORTED                       = 0x1\n\tETHTOOL_F_WISH                              = 0x2\n\tETHTOOL_GCHANNELS                           = 0x3c\n\tETHTOOL_GCOALESCE                           = 0xe\n\tETHTOOL_GDRVINFO                            = 0x3\n\tETHTOOL_GEEE                                = 0x44\n\tETHTOOL_GEEPROM                             = 0xb\n\tETHTOOL_GENL_NAME                           = \"ethtool\"\n\tETHTOOL_GENL_VERSION                        = 0x1\n\tETHTOOL_GET_DUMP_DATA                       = 0x40\n\tETHTOOL_GET_DUMP_FLAG                       = 0x3f\n\tETHTOOL_GET_TS_INFO                         = 0x41\n\tETHTOOL_GFEATURES                           = 0x3a\n\tETHTOOL_GFECPARAM                           = 0x50\n\tETHTOOL_GFLAGS                              = 0x25\n\tETHTOOL_GGRO                                = 0x2b\n\tETHTOOL_GGSO                                = 0x23\n\tETHTOOL_GLINK                               = 0xa\n\tETHTOOL_GLINKSETTINGS                       = 0x4c\n\tETHTOOL_GMODULEEEPROM                       = 0x43\n\tETHTOOL_GMODULEINFO                         = 0x42\n\tETHTOOL_GMSGLVL                             = 0x7\n\tETHTOOL_GPAUSEPARAM                         = 0x12\n\tETHTOOL_GPERMADDR                           = 0x20\n\tETHTOOL_GPFLAGS                             = 0x27\n\tETHTOOL_GPHYSTATS                           = 0x4a\n\tETHTOOL_GREGS                               = 0x4\n\tETHTOOL_GRINGPARAM                          = 0x10\n\tETHTOOL_GRSSH                               = 0x46\n\tETHTOOL_GRXCLSRLALL                         = 0x30\n\tETHTOOL_GRXCLSRLCNT                         = 0x2e\n\tETHTOOL_GRXCLSRULE                          = 0x2f\n\tETHTOOL_GRXCSUM                             = 0x14\n\tETHTOOL_GRXFH                               = 0x29\n\tETHTOOL_GRXFHINDIR                          = 0x38\n\tETHTOOL_GRXNTUPLE                           = 0x36\n\tETHTOOL_GRXRINGS                            = 0x2d\n\tETHTOOL_GSET                                = 0x1\n\tETHTOOL_GSG                                 = 0x18\n\tETHTOOL_GSSET_INFO                          = 0x37\n\tETHTOOL_GSTATS                              = 0x1d\n\tETHTOOL_GSTRINGS                            = 0x1b\n\tETHTOOL_GTSO                                = 0x1e\n\tETHTOOL_GTUNABLE                            = 0x48\n\tETHTOOL_GTXCSUM                             = 0x16\n\tETHTOOL_GUFO                                = 0x21\n\tETHTOOL_GWOL                                = 0x5\n\tETHTOOL_MCGRP_MONITOR_NAME                  = \"monitor\"\n\tETHTOOL_NWAY_RST                            = 0x9\n\tETHTOOL_PERQUEUE                            = 0x4b\n\tETHTOOL_PHYS_ID                             = 0x1c\n\tETHTOOL_PHY_EDPD_DFLT_TX_MSECS              = 0xffff\n\tETHTOOL_PHY_EDPD_DISABLE                    = 0x0\n\tETHTOOL_PHY_EDPD_NO_TX                      = 0xfffe\n\tETHTOOL_PHY_FAST_LINK_DOWN_OFF              = 0xff\n\tETHTOOL_PHY_FAST_LINK_DOWN_ON               = 0x0\n\tETHTOOL_PHY_GTUNABLE                        = 0x4e\n\tETHTOOL_PHY_STUNABLE                        = 0x4f\n\tETHTOOL_RESET                               = 0x34\n\tETHTOOL_RXNTUPLE_ACTION_CLEAR               = -0x2\n\tETHTOOL_RXNTUPLE_ACTION_DROP                = -0x1\n\tETHTOOL_RX_FLOW_SPEC_RING                   = 0xffffffff\n\tETHTOOL_RX_FLOW_SPEC_RING_VF                = 0xff00000000\n\tETHTOOL_RX_FLOW_SPEC_RING_VF_OFF            = 0x20\n\tETHTOOL_SCHANNELS                           = 0x3d\n\tETHTOOL_SCOALESCE                           = 0xf\n\tETHTOOL_SEEE                                = 0x45\n\tETHTOOL_SEEPROM                             = 0xc\n\tETHTOOL_SET_DUMP                            = 0x3e\n\tETHTOOL_SFEATURES                           = 0x3b\n\tETHTOOL_SFECPARAM                           = 0x51\n\tETHTOOL_SFLAGS                              = 0x26\n\tETHTOOL_SGRO                                = 0x2c\n\tETHTOOL_SGSO                                = 0x24\n\tETHTOOL_SLINKSETTINGS                       = 0x4d\n\tETHTOOL_SMSGLVL                             = 0x8\n\tETHTOOL_SPAUSEPARAM                         = 0x13\n\tETHTOOL_SPFLAGS                             = 0x28\n\tETHTOOL_SRINGPARAM                          = 0x11\n\tETHTOOL_SRSSH                               = 0x47\n\tETHTOOL_SRXCLSRLDEL                         = 0x31\n\tETHTOOL_SRXCLSRLINS                         = 0x32\n\tETHTOOL_SRXCSUM                             = 0x15\n\tETHTOOL_SRXFH                               = 0x2a\n\tETHTOOL_SRXFHINDIR                          = 0x39\n\tETHTOOL_SRXNTUPLE                           = 0x35\n\tETHTOOL_SSET                                = 0x2\n\tETHTOOL_SSG                                 = 0x19\n\tETHTOOL_STSO                                = 0x1f\n\tETHTOOL_STUNABLE                            = 0x49\n\tETHTOOL_STXCSUM                             = 0x17\n\tETHTOOL_SUFO                                = 0x22\n\tETHTOOL_SWOL                                = 0x6\n\tETHTOOL_TEST                                = 0x1a\n\tETH_P_1588                                  = 0x88f7\n\tETH_P_8021AD                                = 0x88a8\n\tETH_P_8021AH                                = 0x88e7\n\tETH_P_8021Q                                 = 0x8100\n\tETH_P_80221                                 = 0x8917\n\tETH_P_802_2                                 = 0x4\n\tETH_P_802_3                                 = 0x1\n\tETH_P_802_3_MIN                             = 0x600\n\tETH_P_802_EX1                               = 0x88b5\n\tETH_P_AARP                                  = 0x80f3\n\tETH_P_AF_IUCV                               = 0xfbfb\n\tETH_P_ALL                                   = 0x3\n\tETH_P_AOE                                   = 0x88a2\n\tETH_P_ARCNET                                = 0x1a\n\tETH_P_ARP                                   = 0x806\n\tETH_P_ATALK                                 = 0x809b\n\tETH_P_ATMFATE                               = 0x8884\n\tETH_P_ATMMPOA                               = 0x884c\n\tETH_P_AX25                                  = 0x2\n\tETH_P_BATMAN                                = 0x4305\n\tETH_P_BPQ                                   = 0x8ff\n\tETH_P_CAIF                                  = 0xf7\n\tETH_P_CAN                                   = 0xc\n\tETH_P_CANFD                                 = 0xd\n\tETH_P_CANXL                                 = 0xe\n\tETH_P_CFM                                   = 0x8902\n\tETH_P_CONTROL                               = 0x16\n\tETH_P_CUST                                  = 0x6006\n\tETH_P_DDCMP                                 = 0x6\n\tETH_P_DEC                                   = 0x6000\n\tETH_P_DIAG                                  = 0x6005\n\tETH_P_DNA_DL                                = 0x6001\n\tETH_P_DNA_RC                                = 0x6002\n\tETH_P_DNA_RT                                = 0x6003\n\tETH_P_DSA                                   = 0x1b\n\tETH_P_DSA_8021Q                             = 0xdadb\n\tETH_P_DSA_A5PSW                             = 0xe001\n\tETH_P_ECONET                                = 0x18\n\tETH_P_EDSA                                  = 0xdada\n\tETH_P_ERSPAN                                = 0x88be\n\tETH_P_ERSPAN2                               = 0x22eb\n\tETH_P_ETHERCAT                              = 0x88a4\n\tETH_P_FCOE                                  = 0x8906\n\tETH_P_FIP                                   = 0x8914\n\tETH_P_HDLC                                  = 0x19\n\tETH_P_HSR                                   = 0x892f\n\tETH_P_IBOE                                  = 0x8915\n\tETH_P_IEEE802154                            = 0xf6\n\tETH_P_IEEEPUP                               = 0xa00\n\tETH_P_IEEEPUPAT                             = 0xa01\n\tETH_P_IFE                                   = 0xed3e\n\tETH_P_IP                                    = 0x800\n\tETH_P_IPV6                                  = 0x86dd\n\tETH_P_IPX                                   = 0x8137\n\tETH_P_IRDA                                  = 0x17\n\tETH_P_LAT                                   = 0x6004\n\tETH_P_LINK_CTL                              = 0x886c\n\tETH_P_LLDP                                  = 0x88cc\n\tETH_P_LOCALTALK                             = 0x9\n\tETH_P_LOOP                                  = 0x60\n\tETH_P_LOOPBACK                              = 0x9000\n\tETH_P_MACSEC                                = 0x88e5\n\tETH_P_MAP                                   = 0xf9\n\tETH_P_MCTP                                  = 0xfa\n\tETH_P_MOBITEX                               = 0x15\n\tETH_P_MPLS_MC                               = 0x8848\n\tETH_P_MPLS_UC                               = 0x8847\n\tETH_P_MRP                                   = 0x88e3\n\tETH_P_MVRP                                  = 0x88f5\n\tETH_P_NCSI                                  = 0x88f8\n\tETH_P_NSH                                   = 0x894f\n\tETH_P_PAE                                   = 0x888e\n\tETH_P_PAUSE                                 = 0x8808\n\tETH_P_PHONET                                = 0xf5\n\tETH_P_PPPTALK                               = 0x10\n\tETH_P_PPP_DISC                              = 0x8863\n\tETH_P_PPP_MP                                = 0x8\n\tETH_P_PPP_SES                               = 0x8864\n\tETH_P_PREAUTH                               = 0x88c7\n\tETH_P_PROFINET                              = 0x8892\n\tETH_P_PRP                                   = 0x88fb\n\tETH_P_PUP                                   = 0x200\n\tETH_P_PUPAT                                 = 0x201\n\tETH_P_QINQ1                                 = 0x9100\n\tETH_P_QINQ2                                 = 0x9200\n\tETH_P_QINQ3                                 = 0x9300\n\tETH_P_RARP                                  = 0x8035\n\tETH_P_REALTEK                               = 0x8899\n\tETH_P_SCA                                   = 0x6007\n\tETH_P_SLOW                                  = 0x8809\n\tETH_P_SNAP                                  = 0x5\n\tETH_P_TDLS                                  = 0x890d\n\tETH_P_TEB                                   = 0x6558\n\tETH_P_TIPC                                  = 0x88ca\n\tETH_P_TRAILER                               = 0x1c\n\tETH_P_TR_802_2                              = 0x11\n\tETH_P_TSN                                   = 0x22f0\n\tETH_P_WAN_PPP                               = 0x7\n\tETH_P_WCCP                                  = 0x883e\n\tETH_P_X25                                   = 0x805\n\tETH_P_XDSA                                  = 0xf8\n\tET_CORE                                     = 0x4\n\tET_DYN                                      = 0x3\n\tET_EXEC                                     = 0x2\n\tET_HIPROC                                   = 0xffff\n\tET_LOPROC                                   = 0xff00\n\tET_NONE                                     = 0x0\n\tET_REL                                      = 0x1\n\tEV_ABS                                      = 0x3\n\tEV_CNT                                      = 0x20\n\tEV_CURRENT                                  = 0x1\n\tEV_FF                                       = 0x15\n\tEV_FF_STATUS                                = 0x17\n\tEV_KEY                                      = 0x1\n\tEV_LED                                      = 0x11\n\tEV_MAX                                      = 0x1f\n\tEV_MSC                                      = 0x4\n\tEV_NONE                                     = 0x0\n\tEV_NUM                                      = 0x2\n\tEV_PWR                                      = 0x16\n\tEV_REL                                      = 0x2\n\tEV_REP                                      = 0x14\n\tEV_SND                                      = 0x12\n\tEV_SW                                       = 0x5\n\tEV_SYN                                      = 0x0\n\tEV_VERSION                                  = 0x10001\n\tEXABYTE_ENABLE_NEST                         = 0xf0\n\tEXFAT_SUPER_MAGIC                           = 0x2011bab0\n\tEXT2_SUPER_MAGIC                            = 0xef53\n\tEXT3_SUPER_MAGIC                            = 0xef53\n\tEXT4_SUPER_MAGIC                            = 0xef53\n\tEXTA                                        = 0xe\n\tEXTB                                        = 0xf\n\tF2FS_SUPER_MAGIC                            = 0xf2f52010\n\tFALLOC_FL_ALLOCATE_RANGE                    = 0x0\n\tFALLOC_FL_COLLAPSE_RANGE                    = 0x8\n\tFALLOC_FL_INSERT_RANGE                      = 0x20\n\tFALLOC_FL_KEEP_SIZE                         = 0x1\n\tFALLOC_FL_NO_HIDE_STALE                     = 0x4\n\tFALLOC_FL_PUNCH_HOLE                        = 0x2\n\tFALLOC_FL_UNSHARE_RANGE                     = 0x40\n\tFALLOC_FL_ZERO_RANGE                        = 0x10\n\tFANOTIFY_METADATA_VERSION                   = 0x3\n\tFAN_ACCESS                                  = 0x1\n\tFAN_ACCESS_PERM                             = 0x20000\n\tFAN_ALLOW                                   = 0x1\n\tFAN_ALL_CLASS_BITS                          = 0xc\n\tFAN_ALL_EVENTS                              = 0x3b\n\tFAN_ALL_INIT_FLAGS                          = 0x3f\n\tFAN_ALL_MARK_FLAGS                          = 0xff\n\tFAN_ALL_OUTGOING_EVENTS                     = 0x3403b\n\tFAN_ALL_PERM_EVENTS                         = 0x30000\n\tFAN_ATTRIB                                  = 0x4\n\tFAN_AUDIT                                   = 0x10\n\tFAN_CLASS_CONTENT                           = 0x4\n\tFAN_CLASS_NOTIF                             = 0x0\n\tFAN_CLASS_PRE_CONTENT                       = 0x8\n\tFAN_CLOEXEC                                 = 0x1\n\tFAN_CLOSE                                   = 0x18\n\tFAN_CLOSE_NOWRITE                           = 0x10\n\tFAN_CLOSE_WRITE                             = 0x8\n\tFAN_CREATE                                  = 0x100\n\tFAN_DELETE                                  = 0x200\n\tFAN_DELETE_SELF                             = 0x400\n\tFAN_DENY                                    = 0x2\n\tFAN_ENABLE_AUDIT                            = 0x40\n\tFAN_EPIDFD                                  = -0x2\n\tFAN_ERRNO_BITS                              = 0x8\n\tFAN_ERRNO_MASK                              = 0xff\n\tFAN_ERRNO_SHIFT                             = 0x18\n\tFAN_EVENT_INFO_TYPE_DFID                    = 0x3\n\tFAN_EVENT_INFO_TYPE_DFID_NAME               = 0x2\n\tFAN_EVENT_INFO_TYPE_ERROR                   = 0x5\n\tFAN_EVENT_INFO_TYPE_FID                     = 0x1\n\tFAN_EVENT_INFO_TYPE_MNT                     = 0x7\n\tFAN_EVENT_INFO_TYPE_NEW_DFID_NAME           = 0xc\n\tFAN_EVENT_INFO_TYPE_OLD_DFID_NAME           = 0xa\n\tFAN_EVENT_INFO_TYPE_PIDFD                   = 0x4\n\tFAN_EVENT_INFO_TYPE_RANGE                   = 0x6\n\tFAN_EVENT_METADATA_LEN                      = 0x18\n\tFAN_EVENT_ON_CHILD                          = 0x8000000\n\tFAN_FS_ERROR                                = 0x8000\n\tFAN_INFO                                    = 0x20\n\tFAN_MARK_ADD                                = 0x1\n\tFAN_MARK_DONT_FOLLOW                        = 0x4\n\tFAN_MARK_EVICTABLE                          = 0x200\n\tFAN_MARK_FILESYSTEM                         = 0x100\n\tFAN_MARK_FLUSH                              = 0x80\n\tFAN_MARK_IGNORE                             = 0x400\n\tFAN_MARK_IGNORED_MASK                       = 0x20\n\tFAN_MARK_IGNORED_SURV_MODIFY                = 0x40\n\tFAN_MARK_IGNORE_SURV                        = 0x440\n\tFAN_MARK_INODE                              = 0x0\n\tFAN_MARK_MNTNS                              = 0x110\n\tFAN_MARK_MOUNT                              = 0x10\n\tFAN_MARK_ONLYDIR                            = 0x8\n\tFAN_MARK_REMOVE                             = 0x2\n\tFAN_MNT_ATTACH                              = 0x1000000\n\tFAN_MNT_DETACH                              = 0x2000000\n\tFAN_MODIFY                                  = 0x2\n\tFAN_MOVE                                    = 0xc0\n\tFAN_MOVED_FROM                              = 0x40\n\tFAN_MOVED_TO                                = 0x80\n\tFAN_MOVE_SELF                               = 0x800\n\tFAN_NOFD                                    = -0x1\n\tFAN_NONBLOCK                                = 0x2\n\tFAN_NOPIDFD                                 = -0x1\n\tFAN_ONDIR                                   = 0x40000000\n\tFAN_OPEN                                    = 0x20\n\tFAN_OPEN_EXEC                               = 0x1000\n\tFAN_OPEN_EXEC_PERM                          = 0x40000\n\tFAN_OPEN_PERM                               = 0x10000\n\tFAN_PRE_ACCESS                              = 0x100000\n\tFAN_Q_OVERFLOW                              = 0x4000\n\tFAN_RENAME                                  = 0x10000000\n\tFAN_REPORT_DFID_NAME                        = 0xc00\n\tFAN_REPORT_DFID_NAME_TARGET                 = 0x1e00\n\tFAN_REPORT_DIR_FID                          = 0x400\n\tFAN_REPORT_FD_ERROR                         = 0x2000\n\tFAN_REPORT_FID                              = 0x200\n\tFAN_REPORT_MNT                              = 0x4000\n\tFAN_REPORT_NAME                             = 0x800\n\tFAN_REPORT_PIDFD                            = 0x80\n\tFAN_REPORT_TARGET_FID                       = 0x1000\n\tFAN_REPORT_TID                              = 0x100\n\tFAN_RESPONSE_INFO_AUDIT_RULE                = 0x1\n\tFAN_RESPONSE_INFO_NONE                      = 0x0\n\tFAN_UNLIMITED_MARKS                         = 0x20\n\tFAN_UNLIMITED_QUEUE                         = 0x10\n\tFD_CLOEXEC                                  = 0x1\n\tFD_SETSIZE                                  = 0x400\n\tFF0                                         = 0x0\n\tFIB_RULE_DEV_DETACHED                       = 0x8\n\tFIB_RULE_FIND_SADDR                         = 0x10000\n\tFIB_RULE_IIF_DETACHED                       = 0x8\n\tFIB_RULE_INVERT                             = 0x2\n\tFIB_RULE_OIF_DETACHED                       = 0x10\n\tFIB_RULE_PERMANENT                          = 0x1\n\tFIB_RULE_UNRESOLVED                         = 0x4\n\tFIDEDUPERANGE                               = 0xc0189436\n\tFSCRYPT_ADD_KEY_FLAG_HW_WRAPPED             = 0x1\n\tFSCRYPT_KEY_DESCRIPTOR_SIZE                 = 0x8\n\tFSCRYPT_KEY_DESC_PREFIX                     = \"fscrypt:\"\n\tFSCRYPT_KEY_DESC_PREFIX_SIZE                = 0x8\n\tFSCRYPT_KEY_IDENTIFIER_SIZE                 = 0x10\n\tFSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY  = 0x1\n\tFSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS = 0x2\n\tFSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR            = 0x1\n\tFSCRYPT_KEY_SPEC_TYPE_IDENTIFIER            = 0x2\n\tFSCRYPT_KEY_STATUS_ABSENT                   = 0x1\n\tFSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF       = 0x1\n\tFSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED     = 0x3\n\tFSCRYPT_KEY_STATUS_PRESENT                  = 0x2\n\tFSCRYPT_MAX_KEY_SIZE                        = 0x40\n\tFSCRYPT_MODE_ADIANTUM                       = 0x9\n\tFSCRYPT_MODE_AES_128_CBC                    = 0x5\n\tFSCRYPT_MODE_AES_128_CTS                    = 0x6\n\tFSCRYPT_MODE_AES_256_CTS                    = 0x4\n\tFSCRYPT_MODE_AES_256_HCTR2                  = 0xa\n\tFSCRYPT_MODE_AES_256_XTS                    = 0x1\n\tFSCRYPT_MODE_SM4_CTS                        = 0x8\n\tFSCRYPT_MODE_SM4_XTS                        = 0x7\n\tFSCRYPT_POLICY_FLAGS_PAD_16                 = 0x2\n\tFSCRYPT_POLICY_FLAGS_PAD_32                 = 0x3\n\tFSCRYPT_POLICY_FLAGS_PAD_4                  = 0x0\n\tFSCRYPT_POLICY_FLAGS_PAD_8                  = 0x1\n\tFSCRYPT_POLICY_FLAGS_PAD_MASK               = 0x3\n\tFSCRYPT_POLICY_FLAG_DIRECT_KEY              = 0x4\n\tFSCRYPT_POLICY_FLAG_IV_INO_LBLK_32          = 0x10\n\tFSCRYPT_POLICY_FLAG_IV_INO_LBLK_64          = 0x8\n\tFSCRYPT_POLICY_V1                           = 0x0\n\tFSCRYPT_POLICY_V2                           = 0x2\n\tFS_ENCRYPTION_MODE_ADIANTUM                 = 0x9\n\tFS_ENCRYPTION_MODE_AES_128_CBC              = 0x5\n\tFS_ENCRYPTION_MODE_AES_128_CTS              = 0x6\n\tFS_ENCRYPTION_MODE_AES_256_CBC              = 0x3\n\tFS_ENCRYPTION_MODE_AES_256_CTS              = 0x4\n\tFS_ENCRYPTION_MODE_AES_256_GCM              = 0x2\n\tFS_ENCRYPTION_MODE_AES_256_XTS              = 0x1\n\tFS_ENCRYPTION_MODE_INVALID                  = 0x0\n\tFS_IOC_ADD_ENCRYPTION_KEY                   = 0xc0506617\n\tFS_IOC_GET_ENCRYPTION_KEY_STATUS            = 0xc080661a\n\tFS_IOC_GET_ENCRYPTION_POLICY_EX             = 0xc0096616\n\tFS_IOC_MEASURE_VERITY                       = 0xc0046686\n\tFS_IOC_READ_VERITY_METADATA                 = 0xc0286687\n\tFS_IOC_REMOVE_ENCRYPTION_KEY                = 0xc0406618\n\tFS_IOC_REMOVE_ENCRYPTION_KEY_ALL_USERS      = 0xc0406619\n\tFS_KEY_DESCRIPTOR_SIZE                      = 0x8\n\tFS_KEY_DESC_PREFIX                          = \"fscrypt:\"\n\tFS_KEY_DESC_PREFIX_SIZE                     = 0x8\n\tFS_MAX_KEY_SIZE                             = 0x40\n\tFS_POLICY_FLAGS_PAD_16                      = 0x2\n\tFS_POLICY_FLAGS_PAD_32                      = 0x3\n\tFS_POLICY_FLAGS_PAD_4                       = 0x0\n\tFS_POLICY_FLAGS_PAD_8                       = 0x1\n\tFS_POLICY_FLAGS_PAD_MASK                    = 0x3\n\tFS_POLICY_FLAGS_VALID                       = 0x7\n\tFS_VERITY_FL                                = 0x100000\n\tFS_VERITY_HASH_ALG_SHA256                   = 0x1\n\tFS_VERITY_HASH_ALG_SHA512                   = 0x2\n\tFS_VERITY_METADATA_TYPE_DESCRIPTOR          = 0x2\n\tFS_VERITY_METADATA_TYPE_MERKLE_TREE         = 0x1\n\tFS_VERITY_METADATA_TYPE_SIGNATURE           = 0x3\n\tFUSE_SUPER_MAGIC                            = 0x65735546\n\tFUTEXFS_SUPER_MAGIC                         = 0xbad1dea\n\tF_ADD_SEALS                                 = 0x409\n\tF_CREATED_QUERY                             = 0x404\n\tF_DUPFD                                     = 0x0\n\tF_DUPFD_CLOEXEC                             = 0x406\n\tF_DUPFD_QUERY                               = 0x403\n\tF_EXLCK                                     = 0x4\n\tF_GETFD                                     = 0x1\n\tF_GETFL                                     = 0x3\n\tF_GETLEASE                                  = 0x401\n\tF_GETOWN_EX                                 = 0x10\n\tF_GETPIPE_SZ                                = 0x408\n\tF_GETSIG                                    = 0xb\n\tF_GET_FILE_RW_HINT                          = 0x40d\n\tF_GET_RW_HINT                               = 0x40b\n\tF_GET_SEALS                                 = 0x40a\n\tF_LOCK                                      = 0x1\n\tF_NOTIFY                                    = 0x402\n\tF_OFD_GETLK                                 = 0x24\n\tF_OFD_SETLK                                 = 0x25\n\tF_OFD_SETLKW                                = 0x26\n\tF_OK                                        = 0x0\n\tF_SEAL_EXEC                                 = 0x20\n\tF_SEAL_FUTURE_WRITE                         = 0x10\n\tF_SEAL_GROW                                 = 0x4\n\tF_SEAL_SEAL                                 = 0x1\n\tF_SEAL_SHRINK                               = 0x2\n\tF_SEAL_WRITE                                = 0x8\n\tF_SETFD                                     = 0x2\n\tF_SETFL                                     = 0x4\n\tF_SETLEASE                                  = 0x400\n\tF_SETOWN_EX                                 = 0xf\n\tF_SETPIPE_SZ                                = 0x407\n\tF_SETSIG                                    = 0xa\n\tF_SET_FILE_RW_HINT                          = 0x40e\n\tF_SET_RW_HINT                               = 0x40c\n\tF_SHLCK                                     = 0x8\n\tF_TEST                                      = 0x3\n\tF_TLOCK                                     = 0x2\n\tF_ULOCK                                     = 0x0\n\tGENL_ADMIN_PERM                             = 0x1\n\tGENL_CMD_CAP_DO                             = 0x2\n\tGENL_CMD_CAP_DUMP                           = 0x4\n\tGENL_CMD_CAP_HASPOL                         = 0x8\n\tGENL_HDRLEN                                 = 0x4\n\tGENL_ID_CTRL                                = 0x10\n\tGENL_ID_PMCRAID                             = 0x12\n\tGENL_ID_VFS_DQUOT                           = 0x11\n\tGENL_MAX_ID                                 = 0x3ff\n\tGENL_MIN_ID                                 = 0x10\n\tGENL_NAMSIZ                                 = 0x10\n\tGENL_START_ALLOC                            = 0x13\n\tGENL_UNS_ADMIN_PERM                         = 0x10\n\tGRND_INSECURE                               = 0x4\n\tGRND_NONBLOCK                               = 0x1\n\tGRND_RANDOM                                 = 0x2\n\tHDIO_DRIVE_CMD                              = 0x31f\n\tHDIO_DRIVE_CMD_AEB                          = 0x31e\n\tHDIO_DRIVE_CMD_HDR_SIZE                     = 0x4\n\tHDIO_DRIVE_HOB_HDR_SIZE                     = 0x8\n\tHDIO_DRIVE_RESET                            = 0x31c\n\tHDIO_DRIVE_TASK                             = 0x31e\n\tHDIO_DRIVE_TASKFILE                         = 0x31d\n\tHDIO_DRIVE_TASK_HDR_SIZE                    = 0x8\n\tHDIO_GETGEO                                 = 0x301\n\tHDIO_GET_32BIT                              = 0x309\n\tHDIO_GET_ACOUSTIC                           = 0x30f\n\tHDIO_GET_ADDRESS                            = 0x310\n\tHDIO_GET_BUSSTATE                           = 0x31a\n\tHDIO_GET_DMA                                = 0x30b\n\tHDIO_GET_IDENTITY                           = 0x30d\n\tHDIO_GET_KEEPSETTINGS                       = 0x308\n\tHDIO_GET_MULTCOUNT                          = 0x304\n\tHDIO_GET_NICE                               = 0x30c\n\tHDIO_GET_NOWERR                             = 0x30a\n\tHDIO_GET_QDMA                               = 0x305\n\tHDIO_GET_UNMASKINTR                         = 0x302\n\tHDIO_GET_WCACHE                             = 0x30e\n\tHDIO_OBSOLETE_IDENTITY                      = 0x307\n\tHDIO_SCAN_HWIF                              = 0x328\n\tHDIO_SET_32BIT                              = 0x324\n\tHDIO_SET_ACOUSTIC                           = 0x32c\n\tHDIO_SET_ADDRESS                            = 0x32f\n\tHDIO_SET_BUSSTATE                           = 0x32d\n\tHDIO_SET_DMA                                = 0x326\n\tHDIO_SET_KEEPSETTINGS                       = 0x323\n\tHDIO_SET_MULTCOUNT                          = 0x321\n\tHDIO_SET_NICE                               = 0x329\n\tHDIO_SET_NOWERR                             = 0x325\n\tHDIO_SET_PIO_MODE                           = 0x327\n\tHDIO_SET_QDMA                               = 0x32e\n\tHDIO_SET_UNMASKINTR                         = 0x322\n\tHDIO_SET_WCACHE                             = 0x32b\n\tHDIO_SET_XFER                               = 0x306\n\tHDIO_TRISTATE_HWIF                          = 0x31b\n\tHDIO_UNREGISTER_HWIF                        = 0x32a\n\tHID_MAX_DESCRIPTOR_SIZE                     = 0x1000\n\tHOSTFS_SUPER_MAGIC                          = 0xc0ffee\n\tHPFS_SUPER_MAGIC                            = 0xf995e849\n\tHUGETLBFS_MAGIC                             = 0x958458f6\n\tIBSHIFT                                     = 0x10\n\tICRNL                                       = 0x100\n\tIFA_F_DADFAILED                             = 0x8\n\tIFA_F_DEPRECATED                            = 0x20\n\tIFA_F_HOMEADDRESS                           = 0x10\n\tIFA_F_MANAGETEMPADDR                        = 0x100\n\tIFA_F_MCAUTOJOIN                            = 0x400\n\tIFA_F_NODAD                                 = 0x2\n\tIFA_F_NOPREFIXROUTE                         = 0x200\n\tIFA_F_OPTIMISTIC                            = 0x4\n\tIFA_F_PERMANENT                             = 0x80\n\tIFA_F_SECONDARY                             = 0x1\n\tIFA_F_STABLE_PRIVACY                        = 0x800\n\tIFA_F_TEMPORARY                             = 0x1\n\tIFA_F_TENTATIVE                             = 0x40\n\tIFA_MAX                                     = 0xb\n\tIFF_ALLMULTI                                = 0x200\n\tIFF_ATTACH_QUEUE                            = 0x200\n\tIFF_AUTOMEDIA                               = 0x4000\n\tIFF_BROADCAST                               = 0x2\n\tIFF_DEBUG                                   = 0x4\n\tIFF_DETACH_QUEUE                            = 0x400\n\tIFF_DORMANT                                 = 0x20000\n\tIFF_DYNAMIC                                 = 0x8000\n\tIFF_ECHO                                    = 0x40000\n\tIFF_LOOPBACK                                = 0x8\n\tIFF_LOWER_UP                                = 0x10000\n\tIFF_MASTER                                  = 0x400\n\tIFF_MULTICAST                               = 0x1000\n\tIFF_MULTI_QUEUE                             = 0x100\n\tIFF_NAPI                                    = 0x10\n\tIFF_NAPI_FRAGS                              = 0x20\n\tIFF_NOARP                                   = 0x80\n\tIFF_NOFILTER                                = 0x1000\n\tIFF_NOTRAILERS                              = 0x20\n\tIFF_NO_CARRIER                              = 0x40\n\tIFF_NO_PI                                   = 0x1000\n\tIFF_ONE_QUEUE                               = 0x2000\n\tIFF_PERSIST                                 = 0x800\n\tIFF_POINTOPOINT                             = 0x10\n\tIFF_PORTSEL                                 = 0x2000\n\tIFF_PROMISC                                 = 0x100\n\tIFF_RUNNING                                 = 0x40\n\tIFF_SLAVE                                   = 0x800\n\tIFF_TAP                                     = 0x2\n\tIFF_TUN                                     = 0x1\n\tIFF_TUN_EXCL                                = 0x8000\n\tIFF_UP                                      = 0x1\n\tIFF_VNET_HDR                                = 0x4000\n\tIFF_VOLATILE                                = 0x70c5a\n\tIFNAMSIZ                                    = 0x10\n\tIGNBRK                                      = 0x1\n\tIGNCR                                       = 0x80\n\tIGNPAR                                      = 0x4\n\tIMAXBEL                                     = 0x2000\n\tINLCR                                       = 0x40\n\tINPCK                                       = 0x10\n\tIN_ACCESS                                   = 0x1\n\tIN_ALL_EVENTS                               = 0xfff\n\tIN_ATTRIB                                   = 0x4\n\tIN_CLASSA_HOST                              = 0xffffff\n\tIN_CLASSA_MAX                               = 0x80\n\tIN_CLASSA_NET                               = 0xff000000\n\tIN_CLASSA_NSHIFT                            = 0x18\n\tIN_CLASSB_HOST                              = 0xffff\n\tIN_CLASSB_MAX                               = 0x10000\n\tIN_CLASSB_NET                               = 0xffff0000\n\tIN_CLASSB_NSHIFT                            = 0x10\n\tIN_CLASSC_HOST                              = 0xff\n\tIN_CLASSC_NET                               = 0xffffff00\n\tIN_CLASSC_NSHIFT                            = 0x8\n\tIN_CLOSE                                    = 0x18\n\tIN_CLOSE_NOWRITE                            = 0x10\n\tIN_CLOSE_WRITE                              = 0x8\n\tIN_CREATE                                   = 0x100\n\tIN_DELETE                                   = 0x200\n\tIN_DELETE_SELF                              = 0x400\n\tIN_DONT_FOLLOW                              = 0x2000000\n\tIN_EXCL_UNLINK                              = 0x4000000\n\tIN_IGNORED                                  = 0x8000\n\tIN_ISDIR                                    = 0x40000000\n\tIN_LOOPBACKNET                              = 0x7f\n\tIN_MASK_ADD                                 = 0x20000000\n\tIN_MASK_CREATE                              = 0x10000000\n\tIN_MODIFY                                   = 0x2\n\tIN_MOVE                                     = 0xc0\n\tIN_MOVED_FROM                               = 0x40\n\tIN_MOVED_TO                                 = 0x80\n\tIN_MOVE_SELF                                = 0x800\n\tIN_ONESHOT                                  = 0x80000000\n\tIN_ONLYDIR                                  = 0x1000000\n\tIN_OPEN                                     = 0x20\n\tIN_Q_OVERFLOW                               = 0x4000\n\tIN_UNMOUNT                                  = 0x2000\n\tIOCTL_MEI_CONNECT_CLIENT                    = 0xc0104801\n\tIOCTL_MEI_CONNECT_CLIENT_VTAG               = 0xc0144804\n\tIPPROTO_AH                                  = 0x33\n\tIPPROTO_BEETPH                              = 0x5e\n\tIPPROTO_COMP                                = 0x6c\n\tIPPROTO_DCCP                                = 0x21\n\tIPPROTO_DSTOPTS                             = 0x3c\n\tIPPROTO_EGP                                 = 0x8\n\tIPPROTO_ENCAP                               = 0x62\n\tIPPROTO_ESP                                 = 0x32\n\tIPPROTO_ETHERNET                            = 0x8f\n\tIPPROTO_FRAGMENT                            = 0x2c\n\tIPPROTO_GRE                                 = 0x2f\n\tIPPROTO_HOPOPTS                             = 0x0\n\tIPPROTO_ICMP                                = 0x1\n\tIPPROTO_ICMPV6                              = 0x3a\n\tIPPROTO_IDP                                 = 0x16\n\tIPPROTO_IGMP                                = 0x2\n\tIPPROTO_IP                                  = 0x0\n\tIPPROTO_IPIP                                = 0x4\n\tIPPROTO_IPV6                                = 0x29\n\tIPPROTO_L2TP                                = 0x73\n\tIPPROTO_MH                                  = 0x87\n\tIPPROTO_MPLS                                = 0x89\n\tIPPROTO_MPTCP                               = 0x106\n\tIPPROTO_MTP                                 = 0x5c\n\tIPPROTO_NONE                                = 0x3b\n\tIPPROTO_PIM                                 = 0x67\n\tIPPROTO_PUP                                 = 0xc\n\tIPPROTO_RAW                                 = 0xff\n\tIPPROTO_ROUTING                             = 0x2b\n\tIPPROTO_RSVP                                = 0x2e\n\tIPPROTO_SCTP                                = 0x84\n\tIPPROTO_SMC                                 = 0x100\n\tIPPROTO_TCP                                 = 0x6\n\tIPPROTO_TP                                  = 0x1d\n\tIPPROTO_UDP                                 = 0x11\n\tIPPROTO_UDPLITE                             = 0x88\n\tIPV6_2292DSTOPTS                            = 0x4\n\tIPV6_2292HOPLIMIT                           = 0x8\n\tIPV6_2292HOPOPTS                            = 0x3\n\tIPV6_2292PKTINFO                            = 0x2\n\tIPV6_2292PKTOPTIONS                         = 0x6\n\tIPV6_2292RTHDR                              = 0x5\n\tIPV6_ADDRFORM                               = 0x1\n\tIPV6_ADDR_PREFERENCES                       = 0x48\n\tIPV6_ADD_MEMBERSHIP                         = 0x14\n\tIPV6_AUTHHDR                                = 0xa\n\tIPV6_AUTOFLOWLABEL                          = 0x46\n\tIPV6_CHECKSUM                               = 0x7\n\tIPV6_DONTFRAG                               = 0x3e\n\tIPV6_DROP_MEMBERSHIP                        = 0x15\n\tIPV6_DSTOPTS                                = 0x3b\n\tIPV6_FREEBIND                               = 0x4e\n\tIPV6_HDRINCL                                = 0x24\n\tIPV6_HOPLIMIT                               = 0x34\n\tIPV6_HOPOPTS                                = 0x36\n\tIPV6_IPSEC_POLICY                           = 0x22\n\tIPV6_JOIN_ANYCAST                           = 0x1b\n\tIPV6_JOIN_GROUP                             = 0x14\n\tIPV6_LEAVE_ANYCAST                          = 0x1c\n\tIPV6_LEAVE_GROUP                            = 0x15\n\tIPV6_MINHOPCOUNT                            = 0x49\n\tIPV6_MTU                                    = 0x18\n\tIPV6_MTU_DISCOVER                           = 0x17\n\tIPV6_MULTICAST_ALL                          = 0x1d\n\tIPV6_MULTICAST_HOPS                         = 0x12\n\tIPV6_MULTICAST_IF                           = 0x11\n\tIPV6_MULTICAST_LOOP                         = 0x13\n\tIPV6_NEXTHOP                                = 0x9\n\tIPV6_ORIGDSTADDR                            = 0x4a\n\tIPV6_PATHMTU                                = 0x3d\n\tIPV6_PKTINFO                                = 0x32\n\tIPV6_PMTUDISC_DO                            = 0x2\n\tIPV6_PMTUDISC_DONT                          = 0x0\n\tIPV6_PMTUDISC_INTERFACE                     = 0x4\n\tIPV6_PMTUDISC_OMIT                          = 0x5\n\tIPV6_PMTUDISC_PROBE                         = 0x3\n\tIPV6_PMTUDISC_WANT                          = 0x1\n\tIPV6_RECVDSTOPTS                            = 0x3a\n\tIPV6_RECVERR                                = 0x19\n\tIPV6_RECVERR_RFC4884                        = 0x1f\n\tIPV6_RECVFRAGSIZE                           = 0x4d\n\tIPV6_RECVHOPLIMIT                           = 0x33\n\tIPV6_RECVHOPOPTS                            = 0x35\n\tIPV6_RECVORIGDSTADDR                        = 0x4a\n\tIPV6_RECVPATHMTU                            = 0x3c\n\tIPV6_RECVPKTINFO                            = 0x31\n\tIPV6_RECVRTHDR                              = 0x38\n\tIPV6_RECVTCLASS                             = 0x42\n\tIPV6_ROUTER_ALERT                           = 0x16\n\tIPV6_ROUTER_ALERT_ISOLATE                   = 0x1e\n\tIPV6_RTHDR                                  = 0x39\n\tIPV6_RTHDRDSTOPTS                           = 0x37\n\tIPV6_RTHDR_LOOSE                            = 0x0\n\tIPV6_RTHDR_STRICT                           = 0x1\n\tIPV6_RTHDR_TYPE_0                           = 0x0\n\tIPV6_RXDSTOPTS                              = 0x3b\n\tIPV6_RXHOPOPTS                              = 0x36\n\tIPV6_TCLASS                                 = 0x43\n\tIPV6_TRANSPARENT                            = 0x4b\n\tIPV6_UNICAST_HOPS                           = 0x10\n\tIPV6_UNICAST_IF                             = 0x4c\n\tIPV6_V6ONLY                                 = 0x1a\n\tIPV6_VERSION                                = 0x60\n\tIPV6_VERSION_MASK                           = 0xf0\n\tIPV6_XFRM_POLICY                            = 0x23\n\tIP_ADD_MEMBERSHIP                           = 0x23\n\tIP_ADD_SOURCE_MEMBERSHIP                    = 0x27\n\tIP_BIND_ADDRESS_NO_PORT                     = 0x18\n\tIP_BLOCK_SOURCE                             = 0x26\n\tIP_CHECKSUM                                 = 0x17\n\tIP_DEFAULT_MULTICAST_LOOP                   = 0x1\n\tIP_DEFAULT_MULTICAST_TTL                    = 0x1\n\tIP_DF                                       = 0x4000\n\tIP_DROP_MEMBERSHIP                          = 0x24\n\tIP_DROP_SOURCE_MEMBERSHIP                   = 0x28\n\tIP_FREEBIND                                 = 0xf\n\tIP_HDRINCL                                  = 0x3\n\tIP_IPSEC_POLICY                             = 0x10\n\tIP_LOCAL_PORT_RANGE                         = 0x33\n\tIP_MAXPACKET                                = 0xffff\n\tIP_MAX_MEMBERSHIPS                          = 0x14\n\tIP_MF                                       = 0x2000\n\tIP_MINTTL                                   = 0x15\n\tIP_MSFILTER                                 = 0x29\n\tIP_MSS                                      = 0x240\n\tIP_MTU                                      = 0xe\n\tIP_MTU_DISCOVER                             = 0xa\n\tIP_MULTICAST_ALL                            = 0x31\n\tIP_MULTICAST_IF                             = 0x20\n\tIP_MULTICAST_LOOP                           = 0x22\n\tIP_MULTICAST_TTL                            = 0x21\n\tIP_NODEFRAG                                 = 0x16\n\tIP_OFFMASK                                  = 0x1fff\n\tIP_OPTIONS                                  = 0x4\n\tIP_ORIGDSTADDR                              = 0x14\n\tIP_PASSSEC                                  = 0x12\n\tIP_PKTINFO                                  = 0x8\n\tIP_PKTOPTIONS                               = 0x9\n\tIP_PMTUDISC                                 = 0xa\n\tIP_PMTUDISC_DO                              = 0x2\n\tIP_PMTUDISC_DONT                            = 0x0\n\tIP_PMTUDISC_INTERFACE                       = 0x4\n\tIP_PMTUDISC_OMIT                            = 0x5\n\tIP_PMTUDISC_PROBE                           = 0x3\n\tIP_PMTUDISC_WANT                            = 0x1\n\tIP_PROTOCOL                                 = 0x34\n\tIP_RECVERR                                  = 0xb\n\tIP_RECVERR_RFC4884                          = 0x1a\n\tIP_RECVFRAGSIZE                             = 0x19\n\tIP_RECVOPTS                                 = 0x6\n\tIP_RECVORIGDSTADDR                          = 0x14\n\tIP_RECVRETOPTS                              = 0x7\n\tIP_RECVTOS                                  = 0xd\n\tIP_RECVTTL                                  = 0xc\n\tIP_RETOPTS                                  = 0x7\n\tIP_RF                                       = 0x8000\n\tIP_ROUTER_ALERT                             = 0x5\n\tIP_TOS                                      = 0x1\n\tIP_TRANSPARENT                              = 0x13\n\tIP_TTL                                      = 0x2\n\tIP_UNBLOCK_SOURCE                           = 0x25\n\tIP_UNICAST_IF                               = 0x32\n\tIP_XFRM_POLICY                              = 0x11\n\tISOFS_SUPER_MAGIC                           = 0x9660\n\tISTRIP                                      = 0x20\n\tITIMER_PROF                                 = 0x2\n\tITIMER_REAL                                 = 0x0\n\tITIMER_VIRTUAL                              = 0x1\n\tIUTF8                                       = 0x4000\n\tIXANY                                       = 0x800\n\tJFFS2_SUPER_MAGIC                           = 0x72b6\n\tKCMPROTO_CONNECTED                          = 0x0\n\tKCM_RECV_DISABLE                            = 0x1\n\tKEXEC_ARCH_386                              = 0x30000\n\tKEXEC_ARCH_68K                              = 0x40000\n\tKEXEC_ARCH_AARCH64                          = 0xb70000\n\tKEXEC_ARCH_ARM                              = 0x280000\n\tKEXEC_ARCH_DEFAULT                          = 0x0\n\tKEXEC_ARCH_IA_64                            = 0x320000\n\tKEXEC_ARCH_LOONGARCH                        = 0x1020000\n\tKEXEC_ARCH_MASK                             = 0xffff0000\n\tKEXEC_ARCH_MIPS                             = 0x80000\n\tKEXEC_ARCH_MIPS_LE                          = 0xa0000\n\tKEXEC_ARCH_PARISC                           = 0xf0000\n\tKEXEC_ARCH_PPC                              = 0x140000\n\tKEXEC_ARCH_PPC64                            = 0x150000\n\tKEXEC_ARCH_RISCV                            = 0xf30000\n\tKEXEC_ARCH_S390                             = 0x160000\n\tKEXEC_ARCH_SH                               = 0x2a0000\n\tKEXEC_ARCH_X86_64                           = 0x3e0000\n\tKEXEC_CRASH_HOTPLUG_SUPPORT                 = 0x8\n\tKEXEC_FILE_DEBUG                            = 0x8\n\tKEXEC_FILE_NO_INITRAMFS                     = 0x4\n\tKEXEC_FILE_ON_CRASH                         = 0x2\n\tKEXEC_FILE_UNLOAD                           = 0x1\n\tKEXEC_ON_CRASH                              = 0x1\n\tKEXEC_PRESERVE_CONTEXT                      = 0x2\n\tKEXEC_SEGMENT_MAX                           = 0x10\n\tKEXEC_UPDATE_ELFCOREHDR                     = 0x4\n\tKEYCTL_ASSUME_AUTHORITY                     = 0x10\n\tKEYCTL_CAPABILITIES                         = 0x1f\n\tKEYCTL_CAPS0_BIG_KEY                        = 0x10\n\tKEYCTL_CAPS0_CAPABILITIES                   = 0x1\n\tKEYCTL_CAPS0_DIFFIE_HELLMAN                 = 0x4\n\tKEYCTL_CAPS0_INVALIDATE                     = 0x20\n\tKEYCTL_CAPS0_MOVE                           = 0x80\n\tKEYCTL_CAPS0_PERSISTENT_KEYRINGS            = 0x2\n\tKEYCTL_CAPS0_PUBLIC_KEY                     = 0x8\n\tKEYCTL_CAPS0_RESTRICT_KEYRING               = 0x40\n\tKEYCTL_CAPS1_NOTIFICATIONS                  = 0x4\n\tKEYCTL_CAPS1_NS_KEYRING_NAME                = 0x1\n\tKEYCTL_CAPS1_NS_KEY_TAG                     = 0x2\n\tKEYCTL_CHOWN                                = 0x4\n\tKEYCTL_CLEAR                                = 0x7\n\tKEYCTL_DESCRIBE                             = 0x6\n\tKEYCTL_DH_COMPUTE                           = 0x17\n\tKEYCTL_GET_KEYRING_ID                       = 0x0\n\tKEYCTL_GET_PERSISTENT                       = 0x16\n\tKEYCTL_GET_SECURITY                         = 0x11\n\tKEYCTL_INSTANTIATE                          = 0xc\n\tKEYCTL_INSTANTIATE_IOV                      = 0x14\n\tKEYCTL_INVALIDATE                           = 0x15\n\tKEYCTL_JOIN_SESSION_KEYRING                 = 0x1\n\tKEYCTL_LINK                                 = 0x8\n\tKEYCTL_MOVE                                 = 0x1e\n\tKEYCTL_MOVE_EXCL                            = 0x1\n\tKEYCTL_NEGATE                               = 0xd\n\tKEYCTL_PKEY_DECRYPT                         = 0x1a\n\tKEYCTL_PKEY_ENCRYPT                         = 0x19\n\tKEYCTL_PKEY_QUERY                           = 0x18\n\tKEYCTL_PKEY_SIGN                            = 0x1b\n\tKEYCTL_PKEY_VERIFY                          = 0x1c\n\tKEYCTL_READ                                 = 0xb\n\tKEYCTL_REJECT                               = 0x13\n\tKEYCTL_RESTRICT_KEYRING                     = 0x1d\n\tKEYCTL_REVOKE                               = 0x3\n\tKEYCTL_SEARCH                               = 0xa\n\tKEYCTL_SESSION_TO_PARENT                    = 0x12\n\tKEYCTL_SETPERM                              = 0x5\n\tKEYCTL_SET_REQKEY_KEYRING                   = 0xe\n\tKEYCTL_SET_TIMEOUT                          = 0xf\n\tKEYCTL_SUPPORTS_DECRYPT                     = 0x2\n\tKEYCTL_SUPPORTS_ENCRYPT                     = 0x1\n\tKEYCTL_SUPPORTS_SIGN                        = 0x4\n\tKEYCTL_SUPPORTS_VERIFY                      = 0x8\n\tKEYCTL_UNLINK                               = 0x9\n\tKEYCTL_UPDATE                               = 0x2\n\tKEYCTL_WATCH_KEY                            = 0x20\n\tKEY_REQKEY_DEFL_DEFAULT                     = 0x0\n\tKEY_REQKEY_DEFL_GROUP_KEYRING               = 0x6\n\tKEY_REQKEY_DEFL_NO_CHANGE                   = -0x1\n\tKEY_REQKEY_DEFL_PROCESS_KEYRING             = 0x2\n\tKEY_REQKEY_DEFL_REQUESTOR_KEYRING           = 0x7\n\tKEY_REQKEY_DEFL_SESSION_KEYRING             = 0x3\n\tKEY_REQKEY_DEFL_THREAD_KEYRING              = 0x1\n\tKEY_REQKEY_DEFL_USER_KEYRING                = 0x4\n\tKEY_REQKEY_DEFL_USER_SESSION_KEYRING        = 0x5\n\tKEY_SPEC_GROUP_KEYRING                      = -0x6\n\tKEY_SPEC_PROCESS_KEYRING                    = -0x2\n\tKEY_SPEC_REQKEY_AUTH_KEY                    = -0x7\n\tKEY_SPEC_REQUESTOR_KEYRING                  = -0x8\n\tKEY_SPEC_SESSION_KEYRING                    = -0x3\n\tKEY_SPEC_THREAD_KEYRING                     = -0x1\n\tKEY_SPEC_USER_KEYRING                       = -0x4\n\tKEY_SPEC_USER_SESSION_KEYRING               = -0x5\n\tLANDLOCK_ACCESS_FS_EXECUTE                  = 0x1\n\tLANDLOCK_ACCESS_FS_IOCTL_DEV                = 0x8000\n\tLANDLOCK_ACCESS_FS_MAKE_BLOCK               = 0x800\n\tLANDLOCK_ACCESS_FS_MAKE_CHAR                = 0x40\n\tLANDLOCK_ACCESS_FS_MAKE_DIR                 = 0x80\n\tLANDLOCK_ACCESS_FS_MAKE_FIFO                = 0x400\n\tLANDLOCK_ACCESS_FS_MAKE_REG                 = 0x100\n\tLANDLOCK_ACCESS_FS_MAKE_SOCK                = 0x200\n\tLANDLOCK_ACCESS_FS_MAKE_SYM                 = 0x1000\n\tLANDLOCK_ACCESS_FS_READ_DIR                 = 0x8\n\tLANDLOCK_ACCESS_FS_READ_FILE                = 0x4\n\tLANDLOCK_ACCESS_FS_REFER                    = 0x2000\n\tLANDLOCK_ACCESS_FS_REMOVE_DIR               = 0x10\n\tLANDLOCK_ACCESS_FS_REMOVE_FILE              = 0x20\n\tLANDLOCK_ACCESS_FS_TRUNCATE                 = 0x4000\n\tLANDLOCK_ACCESS_FS_WRITE_FILE               = 0x2\n\tLANDLOCK_ACCESS_NET_BIND_TCP                = 0x1\n\tLANDLOCK_ACCESS_NET_CONNECT_TCP             = 0x2\n\tLANDLOCK_CREATE_RULESET_ERRATA              = 0x2\n\tLANDLOCK_CREATE_RULESET_VERSION             = 0x1\n\tLANDLOCK_RESTRICT_SELF_LOG_NEW_EXEC_ON      = 0x2\n\tLANDLOCK_RESTRICT_SELF_LOG_SAME_EXEC_OFF    = 0x1\n\tLANDLOCK_RESTRICT_SELF_LOG_SUBDOMAINS_OFF   = 0x4\n\tLANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET         = 0x1\n\tLANDLOCK_SCOPE_SIGNAL                       = 0x2\n\tLINUX_REBOOT_CMD_CAD_OFF                    = 0x0\n\tLINUX_REBOOT_CMD_CAD_ON                     = 0x89abcdef\n\tLINUX_REBOOT_CMD_HALT                       = 0xcdef0123\n\tLINUX_REBOOT_CMD_KEXEC                      = 0x45584543\n\tLINUX_REBOOT_CMD_POWER_OFF                  = 0x4321fedc\n\tLINUX_REBOOT_CMD_RESTART                    = 0x1234567\n\tLINUX_REBOOT_CMD_RESTART2                   = 0xa1b2c3d4\n\tLINUX_REBOOT_CMD_SW_SUSPEND                 = 0xd000fce2\n\tLINUX_REBOOT_MAGIC1                         = 0xfee1dead\n\tLINUX_REBOOT_MAGIC2                         = 0x28121969\n\tLOCK_EX                                     = 0x2\n\tLOCK_NB                                     = 0x4\n\tLOCK_SH                                     = 0x1\n\tLOCK_UN                                     = 0x8\n\tLOOP_CLR_FD                                 = 0x4c01\n\tLOOP_CONFIGURE                              = 0x4c0a\n\tLOOP_CTL_ADD                                = 0x4c80\n\tLOOP_CTL_GET_FREE                           = 0x4c82\n\tLOOP_CTL_REMOVE                             = 0x4c81\n\tLOOP_GET_STATUS                             = 0x4c03\n\tLOOP_GET_STATUS64                           = 0x4c05\n\tLOOP_SET_BLOCK_SIZE                         = 0x4c09\n\tLOOP_SET_CAPACITY                           = 0x4c07\n\tLOOP_SET_DIRECT_IO                          = 0x4c08\n\tLOOP_SET_FD                                 = 0x4c00\n\tLOOP_SET_STATUS                             = 0x4c02\n\tLOOP_SET_STATUS64                           = 0x4c04\n\tLOOP_SET_STATUS_CLEARABLE_FLAGS             = 0x4\n\tLOOP_SET_STATUS_SETTABLE_FLAGS              = 0xc\n\tLO_KEY_SIZE                                 = 0x20\n\tLO_NAME_SIZE                                = 0x40\n\tLWTUNNEL_IP6_MAX                            = 0x8\n\tLWTUNNEL_IP_MAX                             = 0x8\n\tLWTUNNEL_IP_OPTS_MAX                        = 0x3\n\tLWTUNNEL_IP_OPT_ERSPAN_MAX                  = 0x4\n\tLWTUNNEL_IP_OPT_GENEVE_MAX                  = 0x3\n\tLWTUNNEL_IP_OPT_VXLAN_MAX                   = 0x1\n\tMADV_COLD                                   = 0x14\n\tMADV_COLLAPSE                               = 0x19\n\tMADV_DODUMP                                 = 0x11\n\tMADV_DOFORK                                 = 0xb\n\tMADV_DONTDUMP                               = 0x10\n\tMADV_DONTFORK                               = 0xa\n\tMADV_DONTNEED                               = 0x4\n\tMADV_DONTNEED_LOCKED                        = 0x18\n\tMADV_FREE                                   = 0x8\n\tMADV_HUGEPAGE                               = 0xe\n\tMADV_HWPOISON                               = 0x64\n\tMADV_KEEPONFORK                             = 0x13\n\tMADV_MERGEABLE                              = 0xc\n\tMADV_NOHUGEPAGE                             = 0xf\n\tMADV_NORMAL                                 = 0x0\n\tMADV_PAGEOUT                                = 0x15\n\tMADV_POPULATE_READ                          = 0x16\n\tMADV_POPULATE_WRITE                         = 0x17\n\tMADV_RANDOM                                 = 0x1\n\tMADV_REMOVE                                 = 0x9\n\tMADV_SEQUENTIAL                             = 0x2\n\tMADV_UNMERGEABLE                            = 0xd\n\tMADV_WILLNEED                               = 0x3\n\tMADV_WIPEONFORK                             = 0x12\n\tMAP_DROPPABLE                               = 0x8\n\tMAP_FILE                                    = 0x0\n\tMAP_FIXED                                   = 0x10\n\tMAP_FIXED_NOREPLACE                         = 0x100000\n\tMAP_HUGE_16GB                               = 0x88000000\n\tMAP_HUGE_16KB                               = 0x38000000\n\tMAP_HUGE_16MB                               = 0x60000000\n\tMAP_HUGE_1GB                                = 0x78000000\n\tMAP_HUGE_1MB                                = 0x50000000\n\tMAP_HUGE_256MB                              = 0x70000000\n\tMAP_HUGE_2GB                                = 0x7c000000\n\tMAP_HUGE_2MB                                = 0x54000000\n\tMAP_HUGE_32MB                               = 0x64000000\n\tMAP_HUGE_512KB                              = 0x4c000000\n\tMAP_HUGE_512MB                              = 0x74000000\n\tMAP_HUGE_64KB                               = 0x40000000\n\tMAP_HUGE_8MB                                = 0x5c000000\n\tMAP_HUGE_MASK                               = 0x3f\n\tMAP_HUGE_SHIFT                              = 0x1a\n\tMAP_PRIVATE                                 = 0x2\n\tMAP_SHARED                                  = 0x1\n\tMAP_SHARED_VALIDATE                         = 0x3\n\tMAP_TYPE                                    = 0xf\n\tMCAST_BLOCK_SOURCE                          = 0x2b\n\tMCAST_EXCLUDE                               = 0x0\n\tMCAST_INCLUDE                               = 0x1\n\tMCAST_JOIN_GROUP                            = 0x2a\n\tMCAST_JOIN_SOURCE_GROUP                     = 0x2e\n\tMCAST_LEAVE_GROUP                           = 0x2d\n\tMCAST_LEAVE_SOURCE_GROUP                    = 0x2f\n\tMCAST_MSFILTER                              = 0x30\n\tMCAST_UNBLOCK_SOURCE                        = 0x2c\n\tMEMGETREGIONINFO                            = 0xc0104d08\n\tMEMREADOOB64                                = 0xc0184d16\n\tMEMWRITE                                    = 0xc0304d18\n\tMEMWRITEOOB64                               = 0xc0184d15\n\tMFD_ALLOW_SEALING                           = 0x2\n\tMFD_CLOEXEC                                 = 0x1\n\tMFD_EXEC                                    = 0x10\n\tMFD_HUGETLB                                 = 0x4\n\tMFD_HUGE_16GB                               = 0x88000000\n\tMFD_HUGE_16MB                               = 0x60000000\n\tMFD_HUGE_1GB                                = 0x78000000\n\tMFD_HUGE_1MB                                = 0x50000000\n\tMFD_HUGE_256MB                              = 0x70000000\n\tMFD_HUGE_2GB                                = 0x7c000000\n\tMFD_HUGE_2MB                                = 0x54000000\n\tMFD_HUGE_32MB                               = 0x64000000\n\tMFD_HUGE_512KB                              = 0x4c000000\n\tMFD_HUGE_512MB                              = 0x74000000\n\tMFD_HUGE_64KB                               = 0x40000000\n\tMFD_HUGE_8MB                                = 0x5c000000\n\tMFD_HUGE_MASK                               = 0x3f\n\tMFD_HUGE_SHIFT                              = 0x1a\n\tMFD_NOEXEC_SEAL                             = 0x8\n\tMINIX2_SUPER_MAGIC                          = 0x2468\n\tMINIX2_SUPER_MAGIC2                         = 0x2478\n\tMINIX3_SUPER_MAGIC                          = 0x4d5a\n\tMINIX_SUPER_MAGIC                           = 0x137f\n\tMINIX_SUPER_MAGIC2                          = 0x138f\n\tMNT_DETACH                                  = 0x2\n\tMNT_EXPIRE                                  = 0x4\n\tMNT_FORCE                                   = 0x1\n\tMNT_ID_REQ_SIZE_VER0                        = 0x18\n\tMNT_ID_REQ_SIZE_VER1                        = 0x20\n\tMNT_NS_INFO_SIZE_VER0                       = 0x10\n\tMODULE_INIT_COMPRESSED_FILE                 = 0x4\n\tMODULE_INIT_IGNORE_MODVERSIONS              = 0x1\n\tMODULE_INIT_IGNORE_VERMAGIC                 = 0x2\n\tMOUNT_ATTR_IDMAP                            = 0x100000\n\tMOUNT_ATTR_NOATIME                          = 0x10\n\tMOUNT_ATTR_NODEV                            = 0x4\n\tMOUNT_ATTR_NODIRATIME                       = 0x80\n\tMOUNT_ATTR_NOEXEC                           = 0x8\n\tMOUNT_ATTR_NOSUID                           = 0x2\n\tMOUNT_ATTR_NOSYMFOLLOW                      = 0x200000\n\tMOUNT_ATTR_RDONLY                           = 0x1\n\tMOUNT_ATTR_RELATIME                         = 0x0\n\tMOUNT_ATTR_SIZE_VER0                        = 0x20\n\tMOUNT_ATTR_STRICTATIME                      = 0x20\n\tMOUNT_ATTR__ATIME                           = 0x70\n\tMREMAP_DONTUNMAP                            = 0x4\n\tMREMAP_FIXED                                = 0x2\n\tMREMAP_MAYMOVE                              = 0x1\n\tMSDOS_SUPER_MAGIC                           = 0x4d44\n\tMSG_BATCH                                   = 0x40000\n\tMSG_CMSG_CLOEXEC                            = 0x40000000\n\tMSG_CONFIRM                                 = 0x800\n\tMSG_CTRUNC                                  = 0x8\n\tMSG_DONTROUTE                               = 0x4\n\tMSG_DONTWAIT                                = 0x40\n\tMSG_EOR                                     = 0x80\n\tMSG_ERRQUEUE                                = 0x2000\n\tMSG_FASTOPEN                                = 0x20000000\n\tMSG_FIN                                     = 0x200\n\tMSG_MORE                                    = 0x8000\n\tMSG_NOSIGNAL                                = 0x4000\n\tMSG_OOB                                     = 0x1\n\tMSG_PEEK                                    = 0x2\n\tMSG_PROXY                                   = 0x10\n\tMSG_RST                                     = 0x1000\n\tMSG_SOCK_DEVMEM                             = 0x2000000\n\tMSG_SYN                                     = 0x400\n\tMSG_TRUNC                                   = 0x20\n\tMSG_TRYHARD                                 = 0x4\n\tMSG_WAITALL                                 = 0x100\n\tMSG_WAITFORONE                              = 0x10000\n\tMSG_ZEROCOPY                                = 0x4000000\n\tMS_ACTIVE                                   = 0x40000000\n\tMS_ASYNC                                    = 0x1\n\tMS_BIND                                     = 0x1000\n\tMS_BORN                                     = 0x20000000\n\tMS_DIRSYNC                                  = 0x80\n\tMS_INVALIDATE                               = 0x2\n\tMS_I_VERSION                                = 0x800000\n\tMS_KERNMOUNT                                = 0x400000\n\tMS_LAZYTIME                                 = 0x2000000\n\tMS_MANDLOCK                                 = 0x40\n\tMS_MGC_MSK                                  = 0xffff0000\n\tMS_MGC_VAL                                  = 0xc0ed0000\n\tMS_MOVE                                     = 0x2000\n\tMS_NOATIME                                  = 0x400\n\tMS_NODEV                                    = 0x4\n\tMS_NODIRATIME                               = 0x800\n\tMS_NOEXEC                                   = 0x8\n\tMS_NOREMOTELOCK                             = 0x8000000\n\tMS_NOSEC                                    = 0x10000000\n\tMS_NOSUID                                   = 0x2\n\tMS_NOSYMFOLLOW                              = 0x100\n\tMS_NOUSER                                   = -0x80000000\n\tMS_POSIXACL                                 = 0x10000\n\tMS_PRIVATE                                  = 0x40000\n\tMS_RDONLY                                   = 0x1\n\tMS_REC                                      = 0x4000\n\tMS_RELATIME                                 = 0x200000\n\tMS_REMOUNT                                  = 0x20\n\tMS_RMT_MASK                                 = 0x2800051\n\tMS_SHARED                                   = 0x100000\n\tMS_SILENT                                   = 0x8000\n\tMS_SLAVE                                    = 0x80000\n\tMS_STRICTATIME                              = 0x1000000\n\tMS_SUBMOUNT                                 = 0x4000000\n\tMS_SYNC                                     = 0x4\n\tMS_SYNCHRONOUS                              = 0x10\n\tMS_UNBINDABLE                               = 0x20000\n\tMS_VERBOSE                                  = 0x8000\n\tMTD_ABSENT                                  = 0x0\n\tMTD_BIT_WRITEABLE                           = 0x800\n\tMTD_CAP_NANDFLASH                           = 0x400\n\tMTD_CAP_NORFLASH                            = 0xc00\n\tMTD_CAP_NVRAM                               = 0x1c00\n\tMTD_CAP_RAM                                 = 0x1c00\n\tMTD_CAP_ROM                                 = 0x0\n\tMTD_DATAFLASH                               = 0x6\n\tMTD_INODE_FS_MAGIC                          = 0x11307854\n\tMTD_MAX_ECCPOS_ENTRIES                      = 0x40\n\tMTD_MAX_OOBFREE_ENTRIES                     = 0x8\n\tMTD_MLCNANDFLASH                            = 0x8\n\tMTD_NANDECC_AUTOPLACE                       = 0x2\n\tMTD_NANDECC_AUTOPL_USR                      = 0x4\n\tMTD_NANDECC_OFF                             = 0x0\n\tMTD_NANDECC_PLACE                           = 0x1\n\tMTD_NANDECC_PLACEONLY                       = 0x3\n\tMTD_NANDFLASH                               = 0x4\n\tMTD_NORFLASH                                = 0x3\n\tMTD_NO_ERASE                                = 0x1000\n\tMTD_OTP_FACTORY                             = 0x1\n\tMTD_OTP_OFF                                 = 0x0\n\tMTD_OTP_USER                                = 0x2\n\tMTD_POWERUP_LOCK                            = 0x2000\n\tMTD_RAM                                     = 0x1\n\tMTD_ROM                                     = 0x2\n\tMTD_SLC_ON_MLC_EMULATION                    = 0x4000\n\tMTD_UBIVOLUME                               = 0x7\n\tMTD_WRITEABLE                               = 0x400\n\tNAME_MAX                                    = 0xff\n\tNCP_SUPER_MAGIC                             = 0x564c\n\tNETLINK_ADD_MEMBERSHIP                      = 0x1\n\tNETLINK_AUDIT                               = 0x9\n\tNETLINK_BROADCAST_ERROR                     = 0x4\n\tNETLINK_CAP_ACK                             = 0xa\n\tNETLINK_CONNECTOR                           = 0xb\n\tNETLINK_CRYPTO                              = 0x15\n\tNETLINK_DNRTMSG                             = 0xe\n\tNETLINK_DROP_MEMBERSHIP                     = 0x2\n\tNETLINK_ECRYPTFS                            = 0x13\n\tNETLINK_EXT_ACK                             = 0xb\n\tNETLINK_FIB_LOOKUP                          = 0xa\n\tNETLINK_FIREWALL                            = 0x3\n\tNETLINK_GENERIC                             = 0x10\n\tNETLINK_GET_STRICT_CHK                      = 0xc\n\tNETLINK_INET_DIAG                           = 0x4\n\tNETLINK_IP6_FW                              = 0xd\n\tNETLINK_ISCSI                               = 0x8\n\tNETLINK_KOBJECT_UEVENT                      = 0xf\n\tNETLINK_LISTEN_ALL_NSID                     = 0x8\n\tNETLINK_LIST_MEMBERSHIPS                    = 0x9\n\tNETLINK_NETFILTER                           = 0xc\n\tNETLINK_NFLOG                               = 0x5\n\tNETLINK_NO_ENOBUFS                          = 0x5\n\tNETLINK_PKTINFO                             = 0x3\n\tNETLINK_RDMA                                = 0x14\n\tNETLINK_ROUTE                               = 0x0\n\tNETLINK_RX_RING                             = 0x6\n\tNETLINK_SCSITRANSPORT                       = 0x12\n\tNETLINK_SELINUX                             = 0x7\n\tNETLINK_SMC                                 = 0x16\n\tNETLINK_SOCK_DIAG                           = 0x4\n\tNETLINK_TX_RING                             = 0x7\n\tNETLINK_UNUSED                              = 0x1\n\tNETLINK_USERSOCK                            = 0x2\n\tNETLINK_XFRM                                = 0x6\n\tNETNSA_MAX                                  = 0x5\n\tNETNSA_NSID_NOT_ASSIGNED                    = -0x1\n\tNFC_ATR_REQ_GB_MAXSIZE                      = 0x30\n\tNFC_ATR_REQ_MAXSIZE                         = 0x40\n\tNFC_ATR_RES_GB_MAXSIZE                      = 0x2f\n\tNFC_ATR_RES_MAXSIZE                         = 0x40\n\tNFC_ATS_MAXSIZE                             = 0x14\n\tNFC_COMM_ACTIVE                             = 0x0\n\tNFC_COMM_PASSIVE                            = 0x1\n\tNFC_DEVICE_NAME_MAXSIZE                     = 0x8\n\tNFC_DIRECTION_RX                            = 0x0\n\tNFC_DIRECTION_TX                            = 0x1\n\tNFC_FIRMWARE_NAME_MAXSIZE                   = 0x20\n\tNFC_GB_MAXSIZE                              = 0x30\n\tNFC_GENL_MCAST_EVENT_NAME                   = \"events\"\n\tNFC_GENL_NAME                               = \"nfc\"\n\tNFC_GENL_VERSION                            = 0x1\n\tNFC_HEADER_SIZE                             = 0x1\n\tNFC_ISO15693_UID_MAXSIZE                    = 0x8\n\tNFC_LLCP_MAX_SERVICE_NAME                   = 0x3f\n\tNFC_LLCP_MIUX                               = 0x1\n\tNFC_LLCP_REMOTE_LTO                         = 0x3\n\tNFC_LLCP_REMOTE_MIU                         = 0x2\n\tNFC_LLCP_REMOTE_RW                          = 0x4\n\tNFC_LLCP_RW                                 = 0x0\n\tNFC_NFCID1_MAXSIZE                          = 0xa\n\tNFC_NFCID2_MAXSIZE                          = 0x8\n\tNFC_NFCID3_MAXSIZE                          = 0xa\n\tNFC_PROTO_FELICA                            = 0x3\n\tNFC_PROTO_FELICA_MASK                       = 0x8\n\tNFC_PROTO_ISO14443                          = 0x4\n\tNFC_PROTO_ISO14443_B                        = 0x6\n\tNFC_PROTO_ISO14443_B_MASK                   = 0x40\n\tNFC_PROTO_ISO14443_MASK                     = 0x10\n\tNFC_PROTO_ISO15693                          = 0x7\n\tNFC_PROTO_ISO15693_MASK                     = 0x80\n\tNFC_PROTO_JEWEL                             = 0x1\n\tNFC_PROTO_JEWEL_MASK                        = 0x2\n\tNFC_PROTO_MAX                               = 0x8\n\tNFC_PROTO_MIFARE                            = 0x2\n\tNFC_PROTO_MIFARE_MASK                       = 0x4\n\tNFC_PROTO_NFC_DEP                           = 0x5\n\tNFC_PROTO_NFC_DEP_MASK                      = 0x20\n\tNFC_RAW_HEADER_SIZE                         = 0x2\n\tNFC_RF_INITIATOR                            = 0x0\n\tNFC_RF_NONE                                 = 0x2\n\tNFC_RF_TARGET                               = 0x1\n\tNFC_SENSB_RES_MAXSIZE                       = 0xc\n\tNFC_SENSF_RES_MAXSIZE                       = 0x12\n\tNFC_SE_DISABLED                             = 0x0\n\tNFC_SE_EMBEDDED                             = 0x2\n\tNFC_SE_ENABLED                              = 0x1\n\tNFC_SE_UICC                                 = 0x1\n\tNFC_SOCKPROTO_LLCP                          = 0x1\n\tNFC_SOCKPROTO_MAX                           = 0x2\n\tNFC_SOCKPROTO_RAW                           = 0x0\n\tNFNETLINK_V0                                = 0x0\n\tNFNLGRP_ACCT_QUOTA                          = 0x8\n\tNFNLGRP_CONNTRACK_DESTROY                   = 0x3\n\tNFNLGRP_CONNTRACK_EXP_DESTROY               = 0x6\n\tNFNLGRP_CONNTRACK_EXP_NEW                   = 0x4\n\tNFNLGRP_CONNTRACK_EXP_UPDATE                = 0x5\n\tNFNLGRP_CONNTRACK_NEW                       = 0x1\n\tNFNLGRP_CONNTRACK_UPDATE                    = 0x2\n\tNFNLGRP_MAX                                 = 0x9\n\tNFNLGRP_NFTABLES                            = 0x7\n\tNFNLGRP_NFTRACE                             = 0x9\n\tNFNLGRP_NONE                                = 0x0\n\tNFNL_BATCH_MAX                              = 0x1\n\tNFNL_MSG_BATCH_BEGIN                        = 0x10\n\tNFNL_MSG_BATCH_END                          = 0x11\n\tNFNL_NFA_NEST                               = 0x8000\n\tNFNL_SUBSYS_ACCT                            = 0x7\n\tNFNL_SUBSYS_COUNT                           = 0xd\n\tNFNL_SUBSYS_CTHELPER                        = 0x9\n\tNFNL_SUBSYS_CTNETLINK                       = 0x1\n\tNFNL_SUBSYS_CTNETLINK_EXP                   = 0x2\n\tNFNL_SUBSYS_CTNETLINK_TIMEOUT               = 0x8\n\tNFNL_SUBSYS_HOOK                            = 0xc\n\tNFNL_SUBSYS_IPSET                           = 0x6\n\tNFNL_SUBSYS_NFTABLES                        = 0xa\n\tNFNL_SUBSYS_NFT_COMPAT                      = 0xb\n\tNFNL_SUBSYS_NONE                            = 0x0\n\tNFNL_SUBSYS_OSF                             = 0x5\n\tNFNL_SUBSYS_QUEUE                           = 0x3\n\tNFNL_SUBSYS_ULOG                            = 0x4\n\tNFS_SUPER_MAGIC                             = 0x6969\n\tNFT_BITWISE_BOOL                            = 0x0\n\tNFT_CHAIN_FLAGS                             = 0x7\n\tNFT_CHAIN_MAXNAMELEN                        = 0x100\n\tNFT_CT_MAX                                  = 0x17\n\tNFT_DATA_RESERVED_MASK                      = 0xffffff00\n\tNFT_DATA_VALUE_MAXLEN                       = 0x40\n\tNFT_EXTHDR_OP_MAX                           = 0x4\n\tNFT_FIB_RESULT_MAX                          = 0x3\n\tNFT_INNER_MASK                              = 0xf\n\tNFT_LOGLEVEL_MAX                            = 0x8\n\tNFT_NAME_MAXLEN                             = 0x100\n\tNFT_NG_MAX                                  = 0x1\n\tNFT_OBJECT_CONNLIMIT                        = 0x5\n\tNFT_OBJECT_COUNTER                          = 0x1\n\tNFT_OBJECT_CT_EXPECT                        = 0x9\n\tNFT_OBJECT_CT_HELPER                        = 0x3\n\tNFT_OBJECT_CT_TIMEOUT                       = 0x7\n\tNFT_OBJECT_LIMIT                            = 0x4\n\tNFT_OBJECT_MAX                              = 0xa\n\tNFT_OBJECT_QUOTA                            = 0x2\n\tNFT_OBJECT_SECMARK                          = 0x8\n\tNFT_OBJECT_SYNPROXY                         = 0xa\n\tNFT_OBJECT_TUNNEL                           = 0x6\n\tNFT_OBJECT_UNSPEC                           = 0x0\n\tNFT_OBJ_MAXNAMELEN                          = 0x100\n\tNFT_OSF_MAXGENRELEN                         = 0x10\n\tNFT_QUEUE_FLAG_BYPASS                       = 0x1\n\tNFT_QUEUE_FLAG_CPU_FANOUT                   = 0x2\n\tNFT_QUEUE_FLAG_MASK                         = 0x3\n\tNFT_REG32_COUNT                             = 0x10\n\tNFT_REG32_SIZE                              = 0x4\n\tNFT_REG_MAX                                 = 0x4\n\tNFT_REG_SIZE                                = 0x10\n\tNFT_REJECT_ICMPX_MAX                        = 0x3\n\tNFT_RT_MAX                                  = 0x4\n\tNFT_SECMARK_CTX_MAXLEN                      = 0x1000\n\tNFT_SET_MAXNAMELEN                          = 0x100\n\tNFT_SOCKET_MAX                              = 0x3\n\tNFT_TABLE_F_MASK                            = 0x7\n\tNFT_TABLE_MAXNAMELEN                        = 0x100\n\tNFT_TRACETYPE_MAX                           = 0x3\n\tNFT_TUNNEL_F_MASK                           = 0x7\n\tNFT_TUNNEL_MAX                              = 0x1\n\tNFT_TUNNEL_MODE_MAX                         = 0x2\n\tNFT_USERDATA_MAXLEN                         = 0x100\n\tNFT_XFRM_KEY_MAX                            = 0x6\n\tNF_NAT_RANGE_MAP_IPS                        = 0x1\n\tNF_NAT_RANGE_MASK                           = 0x7f\n\tNF_NAT_RANGE_NETMAP                         = 0x40\n\tNF_NAT_RANGE_PERSISTENT                     = 0x8\n\tNF_NAT_RANGE_PROTO_OFFSET                   = 0x20\n\tNF_NAT_RANGE_PROTO_RANDOM                   = 0x4\n\tNF_NAT_RANGE_PROTO_RANDOM_ALL               = 0x14\n\tNF_NAT_RANGE_PROTO_RANDOM_FULLY             = 0x10\n\tNF_NAT_RANGE_PROTO_SPECIFIED                = 0x2\n\tNILFS_SUPER_MAGIC                           = 0x3434\n\tNL0                                         = 0x0\n\tNL1                                         = 0x100\n\tNLA_ALIGNTO                                 = 0x4\n\tNLA_F_NESTED                                = 0x8000\n\tNLA_F_NET_BYTEORDER                         = 0x4000\n\tNLA_HDRLEN                                  = 0x4\n\tNLMSG_ALIGNTO                               = 0x4\n\tNLMSG_DONE                                  = 0x3\n\tNLMSG_ERROR                                 = 0x2\n\tNLMSG_HDRLEN                                = 0x10\n\tNLMSG_MIN_TYPE                              = 0x10\n\tNLMSG_NOOP                                  = 0x1\n\tNLMSG_OVERRUN                               = 0x4\n\tNLM_F_ACK                                   = 0x4\n\tNLM_F_ACK_TLVS                              = 0x200\n\tNLM_F_APPEND                                = 0x800\n\tNLM_F_ATOMIC                                = 0x400\n\tNLM_F_BULK                                  = 0x200\n\tNLM_F_CAPPED                                = 0x100\n\tNLM_F_CREATE                                = 0x400\n\tNLM_F_DUMP                                  = 0x300\n\tNLM_F_DUMP_FILTERED                         = 0x20\n\tNLM_F_DUMP_INTR                             = 0x10\n\tNLM_F_ECHO                                  = 0x8\n\tNLM_F_EXCL                                  = 0x200\n\tNLM_F_MATCH                                 = 0x200\n\tNLM_F_MULTI                                 = 0x2\n\tNLM_F_NONREC                                = 0x100\n\tNLM_F_REPLACE                               = 0x100\n\tNLM_F_REQUEST                               = 0x1\n\tNLM_F_ROOT                                  = 0x100\n\tNN_386_IOPERM                               = \"LINUX\"\n\tNN_386_TLS                                  = \"LINUX\"\n\tNN_ARC_V2                                   = \"LINUX\"\n\tNN_ARM_FPMR                                 = \"LINUX\"\n\tNN_ARM_GCS                                  = \"LINUX\"\n\tNN_ARM_HW_BREAK                             = \"LINUX\"\n\tNN_ARM_HW_WATCH                             = \"LINUX\"\n\tNN_ARM_PACA_KEYS                            = \"LINUX\"\n\tNN_ARM_PACG_KEYS                            = \"LINUX\"\n\tNN_ARM_PAC_ENABLED_KEYS                     = \"LINUX\"\n\tNN_ARM_PAC_MASK                             = \"LINUX\"\n\tNN_ARM_POE                                  = \"LINUX\"\n\tNN_ARM_SSVE                                 = \"LINUX\"\n\tNN_ARM_SVE                                  = \"LINUX\"\n\tNN_ARM_SYSTEM_CALL                          = \"LINUX\"\n\tNN_ARM_TAGGED_ADDR_CTRL                     = \"LINUX\"\n\tNN_ARM_TLS                                  = \"LINUX\"\n\tNN_ARM_VFP                                  = \"LINUX\"\n\tNN_ARM_ZA                                   = \"LINUX\"\n\tNN_ARM_ZT                                   = \"LINUX\"\n\tNN_AUXV                                     = \"CORE\"\n\tNN_FILE                                     = \"CORE\"\n\tNN_GNU_PROPERTY_TYPE_0                      = \"GNU\"\n\tNN_LOONGARCH_CPUCFG                         = \"LINUX\"\n\tNN_LOONGARCH_CSR                            = \"LINUX\"\n\tNN_LOONGARCH_HW_BREAK                       = \"LINUX\"\n\tNN_LOONGARCH_HW_WATCH                       = \"LINUX\"\n\tNN_LOONGARCH_LASX                           = \"LINUX\"\n\tNN_LOONGARCH_LBT                            = \"LINUX\"\n\tNN_LOONGARCH_LSX                            = \"LINUX\"\n\tNN_MIPS_DSP                                 = \"LINUX\"\n\tNN_MIPS_FP_MODE                             = \"LINUX\"\n\tNN_MIPS_MSA                                 = \"LINUX\"\n\tNN_PPC_DEXCR                                = \"LINUX\"\n\tNN_PPC_DSCR                                 = \"LINUX\"\n\tNN_PPC_EBB                                  = \"LINUX\"\n\tNN_PPC_HASHKEYR                             = \"LINUX\"\n\tNN_PPC_PKEY                                 = \"LINUX\"\n\tNN_PPC_PMU                                  = \"LINUX\"\n\tNN_PPC_PPR                                  = \"LINUX\"\n\tNN_PPC_SPE                                  = \"LINUX\"\n\tNN_PPC_TAR                                  = \"LINUX\"\n\tNN_PPC_TM_CDSCR                             = \"LINUX\"\n\tNN_PPC_TM_CFPR                              = \"LINUX\"\n\tNN_PPC_TM_CGPR                              = \"LINUX\"\n\tNN_PPC_TM_CPPR                              = \"LINUX\"\n\tNN_PPC_TM_CTAR                              = \"LINUX\"\n\tNN_PPC_TM_CVMX                              = \"LINUX\"\n\tNN_PPC_TM_CVSX                              = \"LINUX\"\n\tNN_PPC_TM_SPR                               = \"LINUX\"\n\tNN_PPC_VMX                                  = \"LINUX\"\n\tNN_PPC_VSX                                  = \"LINUX\"\n\tNN_PRFPREG                                  = \"CORE\"\n\tNN_PRPSINFO                                 = \"CORE\"\n\tNN_PRSTATUS                                 = \"CORE\"\n\tNN_PRXFPREG                                 = \"LINUX\"\n\tNN_RISCV_CSR                                = \"LINUX\"\n\tNN_RISCV_TAGGED_ADDR_CTRL                   = \"LINUX\"\n\tNN_RISCV_VECTOR                             = \"LINUX\"\n\tNN_S390_CTRS                                = \"LINUX\"\n\tNN_S390_GS_BC                               = \"LINUX\"\n\tNN_S390_GS_CB                               = \"LINUX\"\n\tNN_S390_HIGH_GPRS                           = \"LINUX\"\n\tNN_S390_LAST_BREAK                          = \"LINUX\"\n\tNN_S390_PREFIX                              = \"LINUX\"\n\tNN_S390_PV_CPU_DATA                         = \"LINUX\"\n\tNN_S390_RI_CB                               = \"LINUX\"\n\tNN_S390_SYSTEM_CALL                         = \"LINUX\"\n\tNN_S390_TDB                                 = \"LINUX\"\n\tNN_S390_TIMER                               = \"LINUX\"\n\tNN_S390_TODCMP                              = \"LINUX\"\n\tNN_S390_TODPREG                             = \"LINUX\"\n\tNN_S390_VXRS_HIGH                           = \"LINUX\"\n\tNN_S390_VXRS_LOW                            = \"LINUX\"\n\tNN_SIGINFO                                  = \"CORE\"\n\tNN_TASKSTRUCT                               = \"CORE\"\n\tNN_VMCOREDD                                 = \"LINUX\"\n\tNN_X86_SHSTK                                = \"LINUX\"\n\tNN_X86_XSAVE_LAYOUT                         = \"LINUX\"\n\tNN_X86_XSTATE                               = \"LINUX\"\n\tNSFS_MAGIC                                  = 0x6e736673\n\tNT_386_IOPERM                               = 0x201\n\tNT_386_TLS                                  = 0x200\n\tNT_ARC_V2                                   = 0x600\n\tNT_ARM_FPMR                                 = 0x40e\n\tNT_ARM_GCS                                  = 0x410\n\tNT_ARM_HW_BREAK                             = 0x402\n\tNT_ARM_HW_WATCH                             = 0x403\n\tNT_ARM_PACA_KEYS                            = 0x407\n\tNT_ARM_PACG_KEYS                            = 0x408\n\tNT_ARM_PAC_ENABLED_KEYS                     = 0x40a\n\tNT_ARM_PAC_MASK                             = 0x406\n\tNT_ARM_POE                                  = 0x40f\n\tNT_ARM_SSVE                                 = 0x40b\n\tNT_ARM_SVE                                  = 0x405\n\tNT_ARM_SYSTEM_CALL                          = 0x404\n\tNT_ARM_TAGGED_ADDR_CTRL                     = 0x409\n\tNT_ARM_TLS                                  = 0x401\n\tNT_ARM_VFP                                  = 0x400\n\tNT_ARM_ZA                                   = 0x40c\n\tNT_ARM_ZT                                   = 0x40d\n\tNT_AUXV                                     = 0x6\n\tNT_FILE                                     = 0x46494c45\n\tNT_GNU_PROPERTY_TYPE_0                      = 0x5\n\tNT_LOONGARCH_CPUCFG                         = 0xa00\n\tNT_LOONGARCH_CSR                            = 0xa01\n\tNT_LOONGARCH_HW_BREAK                       = 0xa05\n\tNT_LOONGARCH_HW_WATCH                       = 0xa06\n\tNT_LOONGARCH_LASX                           = 0xa03\n\tNT_LOONGARCH_LBT                            = 0xa04\n\tNT_LOONGARCH_LSX                            = 0xa02\n\tNT_MIPS_DSP                                 = 0x800\n\tNT_MIPS_FP_MODE                             = 0x801\n\tNT_MIPS_MSA                                 = 0x802\n\tNT_PPC_DEXCR                                = 0x111\n\tNT_PPC_DSCR                                 = 0x105\n\tNT_PPC_EBB                                  = 0x106\n\tNT_PPC_HASHKEYR                             = 0x112\n\tNT_PPC_PKEY                                 = 0x110\n\tNT_PPC_PMU                                  = 0x107\n\tNT_PPC_PPR                                  = 0x104\n\tNT_PPC_SPE                                  = 0x101\n\tNT_PPC_TAR                                  = 0x103\n\tNT_PPC_TM_CDSCR                             = 0x10f\n\tNT_PPC_TM_CFPR                              = 0x109\n\tNT_PPC_TM_CGPR                              = 0x108\n\tNT_PPC_TM_CPPR                              = 0x10e\n\tNT_PPC_TM_CTAR                              = 0x10d\n\tNT_PPC_TM_CVMX                              = 0x10a\n\tNT_PPC_TM_CVSX                              = 0x10b\n\tNT_PPC_TM_SPR                               = 0x10c\n\tNT_PPC_VMX                                  = 0x100\n\tNT_PPC_VSX                                  = 0x102\n\tNT_PRFPREG                                  = 0x2\n\tNT_PRPSINFO                                 = 0x3\n\tNT_PRSTATUS                                 = 0x1\n\tNT_PRXFPREG                                 = 0x46e62b7f\n\tNT_RISCV_CSR                                = 0x900\n\tNT_RISCV_TAGGED_ADDR_CTRL                   = 0x902\n\tNT_RISCV_VECTOR                             = 0x901\n\tNT_S390_CTRS                                = 0x304\n\tNT_S390_GS_BC                               = 0x30c\n\tNT_S390_GS_CB                               = 0x30b\n\tNT_S390_HIGH_GPRS                           = 0x300\n\tNT_S390_LAST_BREAK                          = 0x306\n\tNT_S390_PREFIX                              = 0x305\n\tNT_S390_PV_CPU_DATA                         = 0x30e\n\tNT_S390_RI_CB                               = 0x30d\n\tNT_S390_SYSTEM_CALL                         = 0x307\n\tNT_S390_TDB                                 = 0x308\n\tNT_S390_TIMER                               = 0x301\n\tNT_S390_TODCMP                              = 0x302\n\tNT_S390_TODPREG                             = 0x303\n\tNT_S390_VXRS_HIGH                           = 0x30a\n\tNT_S390_VXRS_LOW                            = 0x309\n\tNT_SIGINFO                                  = 0x53494749\n\tNT_TASKSTRUCT                               = 0x4\n\tNT_VMCOREDD                                 = 0x700\n\tNT_X86_SHSTK                                = 0x204\n\tNT_X86_XSAVE_LAYOUT                         = 0x205\n\tNT_X86_XSTATE                               = 0x202\n\tOCFS2_SUPER_MAGIC                           = 0x7461636f\n\tOCRNL                                       = 0x8\n\tOFDEL                                       = 0x80\n\tOFILL                                       = 0x40\n\tONLRET                                      = 0x20\n\tONOCR                                       = 0x10\n\tOPENPROM_SUPER_MAGIC                        = 0x9fa1\n\tOPOST                                       = 0x1\n\tOVERLAYFS_SUPER_MAGIC                       = 0x794c7630\n\tO_ACCMODE                                   = 0x3\n\tO_RDONLY                                    = 0x0\n\tO_RDWR                                      = 0x2\n\tO_WRONLY                                    = 0x1\n\tPACKET_ADD_MEMBERSHIP                       = 0x1\n\tPACKET_AUXDATA                              = 0x8\n\tPACKET_BROADCAST                            = 0x1\n\tPACKET_COPY_THRESH                          = 0x7\n\tPACKET_DROP_MEMBERSHIP                      = 0x2\n\tPACKET_FANOUT                               = 0x12\n\tPACKET_FANOUT_CBPF                          = 0x6\n\tPACKET_FANOUT_CPU                           = 0x2\n\tPACKET_FANOUT_DATA                          = 0x16\n\tPACKET_FANOUT_EBPF                          = 0x7\n\tPACKET_FANOUT_FLAG_DEFRAG                   = 0x8000\n\tPACKET_FANOUT_FLAG_IGNORE_OUTGOING          = 0x4000\n\tPACKET_FANOUT_FLAG_ROLLOVER                 = 0x1000\n\tPACKET_FANOUT_FLAG_UNIQUEID                 = 0x2000\n\tPACKET_FANOUT_HASH                          = 0x0\n\tPACKET_FANOUT_LB                            = 0x1\n\tPACKET_FANOUT_QM                            = 0x5\n\tPACKET_FANOUT_RND                           = 0x4\n\tPACKET_FANOUT_ROLLOVER                      = 0x3\n\tPACKET_FASTROUTE                            = 0x6\n\tPACKET_HDRLEN                               = 0xb\n\tPACKET_HOST                                 = 0x0\n\tPACKET_IGNORE_OUTGOING                      = 0x17\n\tPACKET_KERNEL                               = 0x7\n\tPACKET_LOOPBACK                             = 0x5\n\tPACKET_LOSS                                 = 0xe\n\tPACKET_MR_ALLMULTI                          = 0x2\n\tPACKET_MR_MULTICAST                         = 0x0\n\tPACKET_MR_PROMISC                           = 0x1\n\tPACKET_MR_UNICAST                           = 0x3\n\tPACKET_MULTICAST                            = 0x2\n\tPACKET_ORIGDEV                              = 0x9\n\tPACKET_OTHERHOST                            = 0x3\n\tPACKET_OUTGOING                             = 0x4\n\tPACKET_QDISC_BYPASS                         = 0x14\n\tPACKET_RECV_OUTPUT                          = 0x3\n\tPACKET_RESERVE                              = 0xc\n\tPACKET_ROLLOVER_STATS                       = 0x15\n\tPACKET_RX_RING                              = 0x5\n\tPACKET_STATISTICS                           = 0x6\n\tPACKET_TIMESTAMP                            = 0x11\n\tPACKET_TX_HAS_OFF                           = 0x13\n\tPACKET_TX_RING                              = 0xd\n\tPACKET_TX_TIMESTAMP                         = 0x10\n\tPACKET_USER                                 = 0x6\n\tPACKET_VERSION                              = 0xa\n\tPACKET_VNET_HDR                             = 0xf\n\tPACKET_VNET_HDR_SZ                          = 0x18\n\tPARITY_CRC16_PR0                            = 0x2\n\tPARITY_CRC16_PR0_CCITT                      = 0x4\n\tPARITY_CRC16_PR1                            = 0x3\n\tPARITY_CRC16_PR1_CCITT                      = 0x5\n\tPARITY_CRC32_PR0_CCITT                      = 0x6\n\tPARITY_CRC32_PR1_CCITT                      = 0x7\n\tPARITY_DEFAULT                              = 0x0\n\tPARITY_NONE                                 = 0x1\n\tPARMRK                                      = 0x8\n\tPERF_ATTR_SIZE_VER0                         = 0x40\n\tPERF_ATTR_SIZE_VER1                         = 0x48\n\tPERF_ATTR_SIZE_VER2                         = 0x50\n\tPERF_ATTR_SIZE_VER3                         = 0x60\n\tPERF_ATTR_SIZE_VER4                         = 0x68\n\tPERF_ATTR_SIZE_VER5                         = 0x70\n\tPERF_ATTR_SIZE_VER6                         = 0x78\n\tPERF_ATTR_SIZE_VER7                         = 0x80\n\tPERF_ATTR_SIZE_VER8                         = 0x88\n\tPERF_AUX_FLAG_COLLISION                     = 0x8\n\tPERF_AUX_FLAG_CORESIGHT_FORMAT_CORESIGHT    = 0x0\n\tPERF_AUX_FLAG_CORESIGHT_FORMAT_RAW          = 0x100\n\tPERF_AUX_FLAG_OVERWRITE                     = 0x2\n\tPERF_AUX_FLAG_PARTIAL                       = 0x4\n\tPERF_AUX_FLAG_PMU_FORMAT_TYPE_MASK          = 0xff00\n\tPERF_AUX_FLAG_TRUNCATED                     = 0x1\n\tPERF_BRANCH_ENTRY_INFO_BITS_MAX             = 0x21\n\tPERF_BR_ARM64_DEBUG_DATA                    = 0x7\n\tPERF_BR_ARM64_DEBUG_EXIT                    = 0x5\n\tPERF_BR_ARM64_DEBUG_HALT                    = 0x4\n\tPERF_BR_ARM64_DEBUG_INST                    = 0x6\n\tPERF_BR_ARM64_FIQ                           = 0x3\n\tPERF_FLAG_FD_CLOEXEC                        = 0x8\n\tPERF_FLAG_FD_NO_GROUP                       = 0x1\n\tPERF_FLAG_FD_OUTPUT                         = 0x2\n\tPERF_FLAG_PID_CGROUP                        = 0x4\n\tPERF_HW_EVENT_MASK                          = 0xffffffff\n\tPERF_MAX_CONTEXTS_PER_STACK                 = 0x8\n\tPERF_MAX_STACK_DEPTH                        = 0x7f\n\tPERF_MEM_BLK_ADDR                           = 0x4\n\tPERF_MEM_BLK_DATA                           = 0x2\n\tPERF_MEM_BLK_NA                             = 0x1\n\tPERF_MEM_BLK_SHIFT                          = 0x28\n\tPERF_MEM_HOPS_0                             = 0x1\n\tPERF_MEM_HOPS_1                             = 0x2\n\tPERF_MEM_HOPS_2                             = 0x3\n\tPERF_MEM_HOPS_3                             = 0x4\n\tPERF_MEM_HOPS_SHIFT                         = 0x2b\n\tPERF_MEM_LOCK_LOCKED                        = 0x2\n\tPERF_MEM_LOCK_NA                            = 0x1\n\tPERF_MEM_LOCK_SHIFT                         = 0x18\n\tPERF_MEM_LVLNUM_ANY_CACHE                   = 0xb\n\tPERF_MEM_LVLNUM_CXL                         = 0x9\n\tPERF_MEM_LVLNUM_IO                          = 0xa\n\tPERF_MEM_LVLNUM_L1                          = 0x1\n\tPERF_MEM_LVLNUM_L2                          = 0x2\n\tPERF_MEM_LVLNUM_L2_MHB                      = 0x5\n\tPERF_MEM_LVLNUM_L3                          = 0x3\n\tPERF_MEM_LVLNUM_L4                          = 0x4\n\tPERF_MEM_LVLNUM_LFB                         = 0xc\n\tPERF_MEM_LVLNUM_MSC                         = 0x6\n\tPERF_MEM_LVLNUM_NA                          = 0xf\n\tPERF_MEM_LVLNUM_PMEM                        = 0xe\n\tPERF_MEM_LVLNUM_RAM                         = 0xd\n\tPERF_MEM_LVLNUM_SHIFT                       = 0x21\n\tPERF_MEM_LVLNUM_UNC                         = 0x8\n\tPERF_MEM_LVL_HIT                            = 0x2\n\tPERF_MEM_LVL_IO                             = 0x1000\n\tPERF_MEM_LVL_L1                             = 0x8\n\tPERF_MEM_LVL_L2                             = 0x20\n\tPERF_MEM_LVL_L3                             = 0x40\n\tPERF_MEM_LVL_LFB                            = 0x10\n\tPERF_MEM_LVL_LOC_RAM                        = 0x80\n\tPERF_MEM_LVL_MISS                           = 0x4\n\tPERF_MEM_LVL_NA                             = 0x1\n\tPERF_MEM_LVL_REM_CCE1                       = 0x400\n\tPERF_MEM_LVL_REM_CCE2                       = 0x800\n\tPERF_MEM_LVL_REM_RAM1                       = 0x100\n\tPERF_MEM_LVL_REM_RAM2                       = 0x200\n\tPERF_MEM_LVL_SHIFT                          = 0x5\n\tPERF_MEM_LVL_UNC                            = 0x2000\n\tPERF_MEM_OP_EXEC                            = 0x10\n\tPERF_MEM_OP_LOAD                            = 0x2\n\tPERF_MEM_OP_NA                              = 0x1\n\tPERF_MEM_OP_PFETCH                          = 0x8\n\tPERF_MEM_OP_SHIFT                           = 0x0\n\tPERF_MEM_OP_STORE                           = 0x4\n\tPERF_MEM_REMOTE_REMOTE                      = 0x1\n\tPERF_MEM_REMOTE_SHIFT                       = 0x25\n\tPERF_MEM_SNOOPX_FWD                         = 0x1\n\tPERF_MEM_SNOOPX_PEER                        = 0x2\n\tPERF_MEM_SNOOPX_SHIFT                       = 0x26\n\tPERF_MEM_SNOOP_HIT                          = 0x4\n\tPERF_MEM_SNOOP_HITM                         = 0x10\n\tPERF_MEM_SNOOP_MISS                         = 0x8\n\tPERF_MEM_SNOOP_NA                           = 0x1\n\tPERF_MEM_SNOOP_NONE                         = 0x2\n\tPERF_MEM_SNOOP_SHIFT                        = 0x13\n\tPERF_MEM_TLB_HIT                            = 0x2\n\tPERF_MEM_TLB_L1                             = 0x8\n\tPERF_MEM_TLB_L2                             = 0x10\n\tPERF_MEM_TLB_MISS                           = 0x4\n\tPERF_MEM_TLB_NA                             = 0x1\n\tPERF_MEM_TLB_OS                             = 0x40\n\tPERF_MEM_TLB_SHIFT                          = 0x1a\n\tPERF_MEM_TLB_WK                             = 0x20\n\tPERF_PMU_TYPE_SHIFT                         = 0x20\n\tPERF_RECORD_KSYMBOL_FLAGS_UNREGISTER        = 0x1\n\tPERF_RECORD_MISC_COMM_EXEC                  = 0x2000\n\tPERF_RECORD_MISC_CPUMODE_MASK               = 0x7\n\tPERF_RECORD_MISC_CPUMODE_UNKNOWN            = 0x0\n\tPERF_RECORD_MISC_EXACT_IP                   = 0x4000\n\tPERF_RECORD_MISC_EXT_RESERVED               = 0x8000\n\tPERF_RECORD_MISC_FORK_EXEC                  = 0x2000\n\tPERF_RECORD_MISC_GUEST_KERNEL               = 0x4\n\tPERF_RECORD_MISC_GUEST_USER                 = 0x5\n\tPERF_RECORD_MISC_HYPERVISOR                 = 0x3\n\tPERF_RECORD_MISC_KERNEL                     = 0x1\n\tPERF_RECORD_MISC_MMAP_BUILD_ID              = 0x4000\n\tPERF_RECORD_MISC_MMAP_DATA                  = 0x2000\n\tPERF_RECORD_MISC_PROC_MAP_PARSE_TIMEOUT     = 0x1000\n\tPERF_RECORD_MISC_SWITCH_OUT                 = 0x2000\n\tPERF_RECORD_MISC_SWITCH_OUT_PREEMPT         = 0x4000\n\tPERF_RECORD_MISC_USER                       = 0x2\n\tPERF_SAMPLE_BRANCH_PLM_ALL                  = 0x7\n\tPERF_SAMPLE_WEIGHT_TYPE                     = 0x1004000\n\tPF_ALG                                      = 0x26\n\tPF_APPLETALK                                = 0x5\n\tPF_ASH                                      = 0x12\n\tPF_ATMPVC                                   = 0x8\n\tPF_ATMSVC                                   = 0x14\n\tPF_AX25                                     = 0x3\n\tPF_BLUETOOTH                                = 0x1f\n\tPF_BRIDGE                                   = 0x7\n\tPF_CAIF                                     = 0x25\n\tPF_CAN                                      = 0x1d\n\tPF_DECnet                                   = 0xc\n\tPF_ECONET                                   = 0x13\n\tPF_FILE                                     = 0x1\n\tPF_IB                                       = 0x1b\n\tPF_IEEE802154                               = 0x24\n\tPF_INET                                     = 0x2\n\tPF_INET6                                    = 0xa\n\tPF_IPX                                      = 0x4\n\tPF_IRDA                                     = 0x17\n\tPF_ISDN                                     = 0x22\n\tPF_IUCV                                     = 0x20\n\tPF_KCM                                      = 0x29\n\tPF_KEY                                      = 0xf\n\tPF_LLC                                      = 0x1a\n\tPF_LOCAL                                    = 0x1\n\tPF_MAX                                      = 0x2e\n\tPF_MCTP                                     = 0x2d\n\tPF_MPLS                                     = 0x1c\n\tPF_NETBEUI                                  = 0xd\n\tPF_NETLINK                                  = 0x10\n\tPF_NETROM                                   = 0x6\n\tPF_NFC                                      = 0x27\n\tPF_PACKET                                   = 0x11\n\tPF_PHONET                                   = 0x23\n\tPF_PPPOX                                    = 0x18\n\tPF_QIPCRTR                                  = 0x2a\n\tPF_R                                        = 0x4\n\tPF_RDS                                      = 0x15\n\tPF_ROSE                                     = 0xb\n\tPF_ROUTE                                    = 0x10\n\tPF_RXRPC                                    = 0x21\n\tPF_SECURITY                                 = 0xe\n\tPF_SMC                                      = 0x2b\n\tPF_SNA                                      = 0x16\n\tPF_TIPC                                     = 0x1e\n\tPF_UNIX                                     = 0x1\n\tPF_UNSPEC                                   = 0x0\n\tPF_VSOCK                                    = 0x28\n\tPF_W                                        = 0x2\n\tPF_WANPIPE                                  = 0x19\n\tPF_X                                        = 0x1\n\tPF_X25                                      = 0x9\n\tPF_XDP                                      = 0x2c\n\tPID_FS_MAGIC                                = 0x50494446\n\tPIPEFS_MAGIC                                = 0x50495045\n\tPPPIOCGNPMODE                               = 0xc008744c\n\tPPPIOCNEWUNIT                               = 0xc004743e\n\tPRIO_PGRP                                   = 0x1\n\tPRIO_PROCESS                                = 0x0\n\tPRIO_USER                                   = 0x2\n\tPROCFS_IOCTL_MAGIC                          = 'f'\n\tPROC_SUPER_MAGIC                            = 0x9fa0\n\tPROT_EXEC                                   = 0x4\n\tPROT_GROWSDOWN                              = 0x1000000\n\tPROT_GROWSUP                                = 0x2000000\n\tPROT_NONE                                   = 0x0\n\tPROT_READ                                   = 0x1\n\tPROT_WRITE                                  = 0x2\n\tPR_CAPBSET_DROP                             = 0x18\n\tPR_CAPBSET_READ                             = 0x17\n\tPR_CAP_AMBIENT                              = 0x2f\n\tPR_CAP_AMBIENT_CLEAR_ALL                    = 0x4\n\tPR_CAP_AMBIENT_IS_SET                       = 0x1\n\tPR_CAP_AMBIENT_LOWER                        = 0x3\n\tPR_CAP_AMBIENT_RAISE                        = 0x2\n\tPR_ENDIAN_BIG                               = 0x0\n\tPR_ENDIAN_LITTLE                            = 0x1\n\tPR_ENDIAN_PPC_LITTLE                        = 0x2\n\tPR_FPEMU_NOPRINT                            = 0x1\n\tPR_FPEMU_SIGFPE                             = 0x2\n\tPR_FP_EXC_ASYNC                             = 0x2\n\tPR_FP_EXC_DISABLED                          = 0x0\n\tPR_FP_EXC_DIV                               = 0x10000\n\tPR_FP_EXC_INV                               = 0x100000\n\tPR_FP_EXC_NONRECOV                          = 0x1\n\tPR_FP_EXC_OVF                               = 0x20000\n\tPR_FP_EXC_PRECISE                           = 0x3\n\tPR_FP_EXC_RES                               = 0x80000\n\tPR_FP_EXC_SW_ENABLE                         = 0x80\n\tPR_FP_EXC_UND                               = 0x40000\n\tPR_FP_MODE_FR                               = 0x1\n\tPR_FP_MODE_FRE                              = 0x2\n\tPR_FUTEX_HASH                               = 0x4e\n\tPR_FUTEX_HASH_GET_IMMUTABLE                 = 0x3\n\tPR_FUTEX_HASH_GET_SLOTS                     = 0x2\n\tPR_FUTEX_HASH_SET_SLOTS                     = 0x1\n\tPR_GET_AUXV                                 = 0x41555856\n\tPR_GET_CHILD_SUBREAPER                      = 0x25\n\tPR_GET_DUMPABLE                             = 0x3\n\tPR_GET_ENDIAN                               = 0x13\n\tPR_GET_FPEMU                                = 0x9\n\tPR_GET_FPEXC                                = 0xb\n\tPR_GET_FP_MODE                              = 0x2e\n\tPR_GET_IO_FLUSHER                           = 0x3a\n\tPR_GET_KEEPCAPS                             = 0x7\n\tPR_GET_MDWE                                 = 0x42\n\tPR_GET_MEMORY_MERGE                         = 0x44\n\tPR_GET_NAME                                 = 0x10\n\tPR_GET_NO_NEW_PRIVS                         = 0x27\n\tPR_GET_PDEATHSIG                            = 0x2\n\tPR_GET_SECCOMP                              = 0x15\n\tPR_GET_SECUREBITS                           = 0x1b\n\tPR_GET_SHADOW_STACK_STATUS                  = 0x4a\n\tPR_GET_SPECULATION_CTRL                     = 0x34\n\tPR_GET_TAGGED_ADDR_CTRL                     = 0x38\n\tPR_GET_THP_DISABLE                          = 0x2a\n\tPR_GET_TID_ADDRESS                          = 0x28\n\tPR_GET_TIMERSLACK                           = 0x1e\n\tPR_GET_TIMING                               = 0xd\n\tPR_GET_TSC                                  = 0x19\n\tPR_GET_UNALIGN                              = 0x5\n\tPR_LOCK_SHADOW_STACK_STATUS                 = 0x4c\n\tPR_MCE_KILL                                 = 0x21\n\tPR_MCE_KILL_CLEAR                           = 0x0\n\tPR_MCE_KILL_DEFAULT                         = 0x2\n\tPR_MCE_KILL_EARLY                           = 0x1\n\tPR_MCE_KILL_GET                             = 0x22\n\tPR_MCE_KILL_LATE                            = 0x0\n\tPR_MCE_KILL_SET                             = 0x1\n\tPR_MDWE_NO_INHERIT                          = 0x2\n\tPR_MDWE_REFUSE_EXEC_GAIN                    = 0x1\n\tPR_MPX_DISABLE_MANAGEMENT                   = 0x2c\n\tPR_MPX_ENABLE_MANAGEMENT                    = 0x2b\n\tPR_MTE_TAG_MASK                             = 0x7fff8\n\tPR_MTE_TAG_SHIFT                            = 0x3\n\tPR_MTE_TCF_ASYNC                            = 0x4\n\tPR_MTE_TCF_MASK                             = 0x6\n\tPR_MTE_TCF_NONE                             = 0x0\n\tPR_MTE_TCF_SHIFT                            = 0x1\n\tPR_MTE_TCF_SYNC                             = 0x2\n\tPR_PAC_APDAKEY                              = 0x4\n\tPR_PAC_APDBKEY                              = 0x8\n\tPR_PAC_APGAKEY                              = 0x10\n\tPR_PAC_APIAKEY                              = 0x1\n\tPR_PAC_APIBKEY                              = 0x2\n\tPR_PAC_GET_ENABLED_KEYS                     = 0x3d\n\tPR_PAC_RESET_KEYS                           = 0x36\n\tPR_PAC_SET_ENABLED_KEYS                     = 0x3c\n\tPR_PMLEN_MASK                               = 0x7f000000\n\tPR_PMLEN_SHIFT                              = 0x18\n\tPR_PPC_DEXCR_CTRL_CLEAR                     = 0x4\n\tPR_PPC_DEXCR_CTRL_CLEAR_ONEXEC              = 0x10\n\tPR_PPC_DEXCR_CTRL_EDITABLE                  = 0x1\n\tPR_PPC_DEXCR_CTRL_MASK                      = 0x1f\n\tPR_PPC_DEXCR_CTRL_SET                       = 0x2\n\tPR_PPC_DEXCR_CTRL_SET_ONEXEC                = 0x8\n\tPR_PPC_DEXCR_IBRTPD                         = 0x1\n\tPR_PPC_DEXCR_NPHIE                          = 0x3\n\tPR_PPC_DEXCR_SBHE                           = 0x0\n\tPR_PPC_DEXCR_SRAPD                          = 0x2\n\tPR_PPC_GET_DEXCR                            = 0x48\n\tPR_PPC_SET_DEXCR                            = 0x49\n\tPR_RISCV_CTX_SW_FENCEI_OFF                  = 0x1\n\tPR_RISCV_CTX_SW_FENCEI_ON                   = 0x0\n\tPR_RISCV_SCOPE_PER_PROCESS                  = 0x0\n\tPR_RISCV_SCOPE_PER_THREAD                   = 0x1\n\tPR_RISCV_SET_ICACHE_FLUSH_CTX               = 0x47\n\tPR_RISCV_V_GET_CONTROL                      = 0x46\n\tPR_RISCV_V_SET_CONTROL                      = 0x45\n\tPR_RISCV_V_VSTATE_CTRL_CUR_MASK             = 0x3\n\tPR_RISCV_V_VSTATE_CTRL_DEFAULT              = 0x0\n\tPR_RISCV_V_VSTATE_CTRL_INHERIT              = 0x10\n\tPR_RISCV_V_VSTATE_CTRL_MASK                 = 0x1f\n\tPR_RISCV_V_VSTATE_CTRL_NEXT_MASK            = 0xc\n\tPR_RISCV_V_VSTATE_CTRL_OFF                  = 0x1\n\tPR_RISCV_V_VSTATE_CTRL_ON                   = 0x2\n\tPR_SCHED_CORE                               = 0x3e\n\tPR_SCHED_CORE_CREATE                        = 0x1\n\tPR_SCHED_CORE_GET                           = 0x0\n\tPR_SCHED_CORE_MAX                           = 0x4\n\tPR_SCHED_CORE_SCOPE_PROCESS_GROUP           = 0x2\n\tPR_SCHED_CORE_SCOPE_THREAD                  = 0x0\n\tPR_SCHED_CORE_SCOPE_THREAD_GROUP            = 0x1\n\tPR_SCHED_CORE_SHARE_FROM                    = 0x3\n\tPR_SCHED_CORE_SHARE_TO                      = 0x2\n\tPR_SET_CHILD_SUBREAPER                      = 0x24\n\tPR_SET_DUMPABLE                             = 0x4\n\tPR_SET_ENDIAN                               = 0x14\n\tPR_SET_FPEMU                                = 0xa\n\tPR_SET_FPEXC                                = 0xc\n\tPR_SET_FP_MODE                              = 0x2d\n\tPR_SET_IO_FLUSHER                           = 0x39\n\tPR_SET_KEEPCAPS                             = 0x8\n\tPR_SET_MDWE                                 = 0x41\n\tPR_SET_MEMORY_MERGE                         = 0x43\n\tPR_SET_MM                                   = 0x23\n\tPR_SET_MM_ARG_END                           = 0x9\n\tPR_SET_MM_ARG_START                         = 0x8\n\tPR_SET_MM_AUXV                              = 0xc\n\tPR_SET_MM_BRK                               = 0x7\n\tPR_SET_MM_END_CODE                          = 0x2\n\tPR_SET_MM_END_DATA                          = 0x4\n\tPR_SET_MM_ENV_END                           = 0xb\n\tPR_SET_MM_ENV_START                         = 0xa\n\tPR_SET_MM_EXE_FILE                          = 0xd\n\tPR_SET_MM_MAP                               = 0xe\n\tPR_SET_MM_MAP_SIZE                          = 0xf\n\tPR_SET_MM_START_BRK                         = 0x6\n\tPR_SET_MM_START_CODE                        = 0x1\n\tPR_SET_MM_START_DATA                        = 0x3\n\tPR_SET_MM_START_STACK                       = 0x5\n\tPR_SET_NAME                                 = 0xf\n\tPR_SET_NO_NEW_PRIVS                         = 0x26\n\tPR_SET_PDEATHSIG                            = 0x1\n\tPR_SET_PTRACER                              = 0x59616d61\n\tPR_SET_SECCOMP                              = 0x16\n\tPR_SET_SECUREBITS                           = 0x1c\n\tPR_SET_SHADOW_STACK_STATUS                  = 0x4b\n\tPR_SET_SPECULATION_CTRL                     = 0x35\n\tPR_SET_SYSCALL_USER_DISPATCH                = 0x3b\n\tPR_SET_TAGGED_ADDR_CTRL                     = 0x37\n\tPR_SET_THP_DISABLE                          = 0x29\n\tPR_SET_TIMERSLACK                           = 0x1d\n\tPR_SET_TIMING                               = 0xe\n\tPR_SET_TSC                                  = 0x1a\n\tPR_SET_UNALIGN                              = 0x6\n\tPR_SET_VMA                                  = 0x53564d41\n\tPR_SET_VMA_ANON_NAME                        = 0x0\n\tPR_SHADOW_STACK_ENABLE                      = 0x1\n\tPR_SHADOW_STACK_PUSH                        = 0x4\n\tPR_SHADOW_STACK_WRITE                       = 0x2\n\tPR_SME_GET_VL                               = 0x40\n\tPR_SME_SET_VL                               = 0x3f\n\tPR_SME_SET_VL_ONEXEC                        = 0x40000\n\tPR_SME_VL_INHERIT                           = 0x20000\n\tPR_SME_VL_LEN_MASK                          = 0xffff\n\tPR_SPEC_DISABLE                             = 0x4\n\tPR_SPEC_DISABLE_NOEXEC                      = 0x10\n\tPR_SPEC_ENABLE                              = 0x2\n\tPR_SPEC_FORCE_DISABLE                       = 0x8\n\tPR_SPEC_INDIRECT_BRANCH                     = 0x1\n\tPR_SPEC_L1D_FLUSH                           = 0x2\n\tPR_SPEC_NOT_AFFECTED                        = 0x0\n\tPR_SPEC_PRCTL                               = 0x1\n\tPR_SPEC_STORE_BYPASS                        = 0x0\n\tPR_SVE_GET_VL                               = 0x33\n\tPR_SVE_SET_VL                               = 0x32\n\tPR_SVE_SET_VL_ONEXEC                        = 0x40000\n\tPR_SVE_VL_INHERIT                           = 0x20000\n\tPR_SVE_VL_LEN_MASK                          = 0xffff\n\tPR_SYS_DISPATCH_OFF                         = 0x0\n\tPR_SYS_DISPATCH_ON                          = 0x1\n\tPR_TAGGED_ADDR_ENABLE                       = 0x1\n\tPR_TASK_PERF_EVENTS_DISABLE                 = 0x1f\n\tPR_TASK_PERF_EVENTS_ENABLE                  = 0x20\n\tPR_TIMER_CREATE_RESTORE_IDS                 = 0x4d\n\tPR_TIMER_CREATE_RESTORE_IDS_GET             = 0x2\n\tPR_TIMER_CREATE_RESTORE_IDS_OFF             = 0x0\n\tPR_TIMER_CREATE_RESTORE_IDS_ON              = 0x1\n\tPR_TIMING_STATISTICAL                       = 0x0\n\tPR_TIMING_TIMESTAMP                         = 0x1\n\tPR_TSC_ENABLE                               = 0x1\n\tPR_TSC_SIGSEGV                              = 0x2\n\tPR_UNALIGN_NOPRINT                          = 0x1\n\tPR_UNALIGN_SIGBUS                           = 0x2\n\tPSTOREFS_MAGIC                              = 0x6165676c\n\tPTP_CLK_MAGIC                               = '='\n\tPTP_ENABLE_FEATURE                          = 0x1\n\tPTP_EXTTS_EDGES                             = 0x6\n\tPTP_EXTTS_EVENT_VALID                       = 0x1\n\tPTP_EXTTS_V1_VALID_FLAGS                    = 0x7\n\tPTP_EXTTS_VALID_FLAGS                       = 0x1f\n\tPTP_EXT_OFFSET                              = 0x10\n\tPTP_FALLING_EDGE                            = 0x4\n\tPTP_MAX_SAMPLES                             = 0x19\n\tPTP_PEROUT_DUTY_CYCLE                       = 0x2\n\tPTP_PEROUT_ONE_SHOT                         = 0x1\n\tPTP_PEROUT_PHASE                            = 0x4\n\tPTP_PEROUT_V1_VALID_FLAGS                   = 0x0\n\tPTP_PEROUT_VALID_FLAGS                      = 0x7\n\tPTP_PIN_GETFUNC                             = 0xc0603d06\n\tPTP_PIN_GETFUNC2                            = 0xc0603d0f\n\tPTP_RISING_EDGE                             = 0x2\n\tPTP_STRICT_FLAGS                            = 0x8\n\tPTP_SYS_OFFSET_EXTENDED                     = 0xc4c03d09\n\tPTP_SYS_OFFSET_EXTENDED2                    = 0xc4c03d12\n\tPTP_SYS_OFFSET_PRECISE                      = 0xc0403d08\n\tPTP_SYS_OFFSET_PRECISE2                     = 0xc0403d11\n\tPTRACE_ATTACH                               = 0x10\n\tPTRACE_CONT                                 = 0x7\n\tPTRACE_DETACH                               = 0x11\n\tPTRACE_EVENTMSG_SYSCALL_ENTRY               = 0x1\n\tPTRACE_EVENTMSG_SYSCALL_EXIT                = 0x2\n\tPTRACE_EVENT_CLONE                          = 0x3\n\tPTRACE_EVENT_EXEC                           = 0x4\n\tPTRACE_EVENT_EXIT                           = 0x6\n\tPTRACE_EVENT_FORK                           = 0x1\n\tPTRACE_EVENT_SECCOMP                        = 0x7\n\tPTRACE_EVENT_STOP                           = 0x80\n\tPTRACE_EVENT_VFORK                          = 0x2\n\tPTRACE_EVENT_VFORK_DONE                     = 0x5\n\tPTRACE_GETEVENTMSG                          = 0x4201\n\tPTRACE_GETREGS                              = 0xc\n\tPTRACE_GETREGSET                            = 0x4204\n\tPTRACE_GETSIGINFO                           = 0x4202\n\tPTRACE_GETSIGMASK                           = 0x420a\n\tPTRACE_GET_RSEQ_CONFIGURATION               = 0x420f\n\tPTRACE_GET_SYSCALL_INFO                     = 0x420e\n\tPTRACE_GET_SYSCALL_USER_DISPATCH_CONFIG     = 0x4211\n\tPTRACE_INTERRUPT                            = 0x4207\n\tPTRACE_KILL                                 = 0x8\n\tPTRACE_LISTEN                               = 0x4208\n\tPTRACE_O_EXITKILL                           = 0x100000\n\tPTRACE_O_MASK                               = 0x3000ff\n\tPTRACE_O_SUSPEND_SECCOMP                    = 0x200000\n\tPTRACE_O_TRACECLONE                         = 0x8\n\tPTRACE_O_TRACEEXEC                          = 0x10\n\tPTRACE_O_TRACEEXIT                          = 0x40\n\tPTRACE_O_TRACEFORK                          = 0x2\n\tPTRACE_O_TRACESECCOMP                       = 0x80\n\tPTRACE_O_TRACESYSGOOD                       = 0x1\n\tPTRACE_O_TRACEVFORK                         = 0x4\n\tPTRACE_O_TRACEVFORKDONE                     = 0x20\n\tPTRACE_PEEKDATA                             = 0x2\n\tPTRACE_PEEKSIGINFO                          = 0x4209\n\tPTRACE_PEEKSIGINFO_SHARED                   = 0x1\n\tPTRACE_PEEKTEXT                             = 0x1\n\tPTRACE_PEEKUSR                              = 0x3\n\tPTRACE_POKEDATA                             = 0x5\n\tPTRACE_POKETEXT                             = 0x4\n\tPTRACE_POKEUSR                              = 0x6\n\tPTRACE_SECCOMP_GET_FILTER                   = 0x420c\n\tPTRACE_SECCOMP_GET_METADATA                 = 0x420d\n\tPTRACE_SEIZE                                = 0x4206\n\tPTRACE_SETOPTIONS                           = 0x4200\n\tPTRACE_SETREGS                              = 0xd\n\tPTRACE_SETREGSET                            = 0x4205\n\tPTRACE_SETSIGINFO                           = 0x4203\n\tPTRACE_SETSIGMASK                           = 0x420b\n\tPTRACE_SET_SYSCALL_INFO                     = 0x4212\n\tPTRACE_SET_SYSCALL_USER_DISPATCH_CONFIG     = 0x4210\n\tPTRACE_SINGLESTEP                           = 0x9\n\tPTRACE_SYSCALL                              = 0x18\n\tPTRACE_SYSCALL_INFO_ENTRY                   = 0x1\n\tPTRACE_SYSCALL_INFO_EXIT                    = 0x2\n\tPTRACE_SYSCALL_INFO_NONE                    = 0x0\n\tPTRACE_SYSCALL_INFO_SECCOMP                 = 0x3\n\tPTRACE_TRACEME                              = 0x0\n\tPT_AARCH64_MEMTAG_MTE                       = 0x70000002\n\tPT_DYNAMIC                                  = 0x2\n\tPT_GNU_EH_FRAME                             = 0x6474e550\n\tPT_GNU_PROPERTY                             = 0x6474e553\n\tPT_GNU_RELRO                                = 0x6474e552\n\tPT_GNU_STACK                                = 0x6474e551\n\tPT_HIOS                                     = 0x6fffffff\n\tPT_HIPROC                                   = 0x7fffffff\n\tPT_INTERP                                   = 0x3\n\tPT_LOAD                                     = 0x1\n\tPT_LOOS                                     = 0x60000000\n\tPT_LOPROC                                   = 0x70000000\n\tPT_NOTE                                     = 0x4\n\tPT_NULL                                     = 0x0\n\tPT_PHDR                                     = 0x6\n\tPT_SHLIB                                    = 0x5\n\tPT_TLS                                      = 0x7\n\tP_ALL                                       = 0x0\n\tP_PGID                                      = 0x2\n\tP_PID                                       = 0x1\n\tP_PIDFD                                     = 0x3\n\tQNX4_SUPER_MAGIC                            = 0x2f\n\tQNX6_SUPER_MAGIC                            = 0x68191122\n\tRAMFS_MAGIC                                 = 0x858458f6\n\tRAW_PAYLOAD_DIGITAL                         = 0x3\n\tRAW_PAYLOAD_HCI                             = 0x2\n\tRAW_PAYLOAD_LLCP                            = 0x0\n\tRAW_PAYLOAD_NCI                             = 0x1\n\tRAW_PAYLOAD_PROPRIETARY                     = 0x4\n\tRDTGROUP_SUPER_MAGIC                        = 0x7655821\n\tREISERFS_SUPER_MAGIC                        = 0x52654973\n\tRENAME_EXCHANGE                             = 0x2\n\tRENAME_NOREPLACE                            = 0x1\n\tRENAME_WHITEOUT                             = 0x4\n\tRLIMIT_CORE                                 = 0x4\n\tRLIMIT_CPU                                  = 0x0\n\tRLIMIT_DATA                                 = 0x2\n\tRLIMIT_FSIZE                                = 0x1\n\tRLIMIT_LOCKS                                = 0xa\n\tRLIMIT_MSGQUEUE                             = 0xc\n\tRLIMIT_NICE                                 = 0xd\n\tRLIMIT_RTPRIO                               = 0xe\n\tRLIMIT_RTTIME                               = 0xf\n\tRLIMIT_SIGPENDING                           = 0xb\n\tRLIMIT_STACK                                = 0x3\n\tRLIM_INFINITY                               = 0xffffffffffffffff\n\tRTAX_ADVMSS                                 = 0x8\n\tRTAX_CC_ALGO                                = 0x10\n\tRTAX_CWND                                   = 0x7\n\tRTAX_FASTOPEN_NO_COOKIE                     = 0x11\n\tRTAX_FEATURES                               = 0xc\n\tRTAX_FEATURE_ALLFRAG                        = 0x8\n\tRTAX_FEATURE_ECN                            = 0x1\n\tRTAX_FEATURE_MASK                           = 0x1f\n\tRTAX_FEATURE_SACK                           = 0x2\n\tRTAX_FEATURE_TCP_USEC_TS                    = 0x10\n\tRTAX_FEATURE_TIMESTAMP                      = 0x4\n\tRTAX_HOPLIMIT                               = 0xa\n\tRTAX_INITCWND                               = 0xb\n\tRTAX_INITRWND                               = 0xe\n\tRTAX_LOCK                                   = 0x1\n\tRTAX_MAX                                    = 0x11\n\tRTAX_MTU                                    = 0x2\n\tRTAX_QUICKACK                               = 0xf\n\tRTAX_REORDERING                             = 0x9\n\tRTAX_RTO_MIN                                = 0xd\n\tRTAX_RTT                                    = 0x4\n\tRTAX_RTTVAR                                 = 0x5\n\tRTAX_SSTHRESH                               = 0x6\n\tRTAX_UNSPEC                                 = 0x0\n\tRTAX_WINDOW                                 = 0x3\n\tRTA_ALIGNTO                                 = 0x4\n\tRTA_MAX                                     = 0x1f\n\tRTCF_DIRECTSRC                              = 0x4000000\n\tRTCF_DOREDIRECT                             = 0x1000000\n\tRTCF_LOG                                    = 0x2000000\n\tRTCF_MASQ                                   = 0x400000\n\tRTCF_NAT                                    = 0x800000\n\tRTCF_VALVE                                  = 0x200000\n\tRTC_AF                                      = 0x20\n\tRTC_BSM_DIRECT                              = 0x1\n\tRTC_BSM_DISABLED                            = 0x0\n\tRTC_BSM_LEVEL                               = 0x2\n\tRTC_BSM_STANDBY                             = 0x3\n\tRTC_FEATURE_ALARM                           = 0x0\n\tRTC_FEATURE_ALARM_RES_2S                    = 0x3\n\tRTC_FEATURE_ALARM_RES_MINUTE                = 0x1\n\tRTC_FEATURE_ALARM_WAKEUP_ONLY               = 0x7\n\tRTC_FEATURE_BACKUP_SWITCH_MODE              = 0x6\n\tRTC_FEATURE_CNT                             = 0x8\n\tRTC_FEATURE_CORRECTION                      = 0x5\n\tRTC_FEATURE_NEED_WEEK_DAY                   = 0x2\n\tRTC_FEATURE_UPDATE_INTERRUPT                = 0x4\n\tRTC_IRQF                                    = 0x80\n\tRTC_MAX_FREQ                                = 0x2000\n\tRTC_PARAM_BACKUP_SWITCH_MODE                = 0x2\n\tRTC_PARAM_CORRECTION                        = 0x1\n\tRTC_PARAM_FEATURES                          = 0x0\n\tRTC_PF                                      = 0x40\n\tRTC_UF                                      = 0x10\n\tRTF_ADDRCLASSMASK                           = 0xf8000000\n\tRTF_ADDRCONF                                = 0x40000\n\tRTF_ALLONLINK                               = 0x20000\n\tRTF_BROADCAST                               = 0x10000000\n\tRTF_CACHE                                   = 0x1000000\n\tRTF_DEFAULT                                 = 0x10000\n\tRTF_DYNAMIC                                 = 0x10\n\tRTF_FLOW                                    = 0x2000000\n\tRTF_GATEWAY                                 = 0x2\n\tRTF_HOST                                    = 0x4\n\tRTF_INTERFACE                               = 0x40000000\n\tRTF_IRTT                                    = 0x100\n\tRTF_LINKRT                                  = 0x100000\n\tRTF_LOCAL                                   = 0x80000000\n\tRTF_MODIFIED                                = 0x20\n\tRTF_MSS                                     = 0x40\n\tRTF_MTU                                     = 0x40\n\tRTF_MULTICAST                               = 0x20000000\n\tRTF_NAT                                     = 0x8000000\n\tRTF_NOFORWARD                               = 0x1000\n\tRTF_NONEXTHOP                               = 0x200000\n\tRTF_NOPMTUDISC                              = 0x4000\n\tRTF_POLICY                                  = 0x4000000\n\tRTF_REINSTATE                               = 0x8\n\tRTF_REJECT                                  = 0x200\n\tRTF_STATIC                                  = 0x400\n\tRTF_THROW                                   = 0x2000\n\tRTF_UP                                      = 0x1\n\tRTF_WINDOW                                  = 0x80\n\tRTF_XRESOLVE                                = 0x800\n\tRTMGRP_DECnet_IFADDR                        = 0x1000\n\tRTMGRP_DECnet_ROUTE                         = 0x4000\n\tRTMGRP_IPV4_IFADDR                          = 0x10\n\tRTMGRP_IPV4_MROUTE                          = 0x20\n\tRTMGRP_IPV4_ROUTE                           = 0x40\n\tRTMGRP_IPV4_RULE                            = 0x80\n\tRTMGRP_IPV6_IFADDR                          = 0x100\n\tRTMGRP_IPV6_IFINFO                          = 0x800\n\tRTMGRP_IPV6_MROUTE                          = 0x200\n\tRTMGRP_IPV6_PREFIX                          = 0x20000\n\tRTMGRP_IPV6_ROUTE                           = 0x400\n\tRTMGRP_LINK                                 = 0x1\n\tRTMGRP_NEIGH                                = 0x4\n\tRTMGRP_NOTIFY                               = 0x2\n\tRTMGRP_TC                                   = 0x8\n\tRTM_BASE                                    = 0x10\n\tRTM_DELACTION                               = 0x31\n\tRTM_DELADDR                                 = 0x15\n\tRTM_DELADDRLABEL                            = 0x49\n\tRTM_DELANYCAST                              = 0x3d\n\tRTM_DELCHAIN                                = 0x65\n\tRTM_DELLINK                                 = 0x11\n\tRTM_DELLINKPROP                             = 0x6d\n\tRTM_DELMDB                                  = 0x55\n\tRTM_DELMULTICAST                            = 0x39\n\tRTM_DELNEIGH                                = 0x1d\n\tRTM_DELNETCONF                              = 0x51\n\tRTM_DELNEXTHOP                              = 0x69\n\tRTM_DELNEXTHOPBUCKET                        = 0x75\n\tRTM_DELNSID                                 = 0x59\n\tRTM_DELQDISC                                = 0x25\n\tRTM_DELROUTE                                = 0x19\n\tRTM_DELRULE                                 = 0x21\n\tRTM_DELTCLASS                               = 0x29\n\tRTM_DELTFILTER                              = 0x2d\n\tRTM_DELTUNNEL                               = 0x79\n\tRTM_DELVLAN                                 = 0x71\n\tRTM_F_CLONED                                = 0x200\n\tRTM_F_EQUALIZE                              = 0x400\n\tRTM_F_FIB_MATCH                             = 0x2000\n\tRTM_F_LOOKUP_TABLE                          = 0x1000\n\tRTM_F_NOTIFY                                = 0x100\n\tRTM_F_OFFLOAD                               = 0x4000\n\tRTM_F_OFFLOAD_FAILED                        = 0x20000000\n\tRTM_F_PREFIX                                = 0x800\n\tRTM_F_TRAP                                  = 0x8000\n\tRTM_GETACTION                               = 0x32\n\tRTM_GETADDR                                 = 0x16\n\tRTM_GETADDRLABEL                            = 0x4a\n\tRTM_GETANYCAST                              = 0x3e\n\tRTM_GETCHAIN                                = 0x66\n\tRTM_GETDCB                                  = 0x4e\n\tRTM_GETLINK                                 = 0x12\n\tRTM_GETLINKPROP                             = 0x6e\n\tRTM_GETMDB                                  = 0x56\n\tRTM_GETMULTICAST                            = 0x3a\n\tRTM_GETNEIGH                                = 0x1e\n\tRTM_GETNEIGHTBL                             = 0x42\n\tRTM_GETNETCONF                              = 0x52\n\tRTM_GETNEXTHOP                              = 0x6a\n\tRTM_GETNEXTHOPBUCKET                        = 0x76\n\tRTM_GETNSID                                 = 0x5a\n\tRTM_GETQDISC                                = 0x26\n\tRTM_GETROUTE                                = 0x1a\n\tRTM_GETRULE                                 = 0x22\n\tRTM_GETSTATS                                = 0x5e\n\tRTM_GETTCLASS                               = 0x2a\n\tRTM_GETTFILTER                              = 0x2e\n\tRTM_GETTUNNEL                               = 0x7a\n\tRTM_GETVLAN                                 = 0x72\n\tRTM_MAX                                     = 0x7b\n\tRTM_NEWACTION                               = 0x30\n\tRTM_NEWADDR                                 = 0x14\n\tRTM_NEWADDRLABEL                            = 0x48\n\tRTM_NEWANYCAST                              = 0x3c\n\tRTM_NEWCACHEREPORT                          = 0x60\n\tRTM_NEWCHAIN                                = 0x64\n\tRTM_NEWLINK                                 = 0x10\n\tRTM_NEWLINKPROP                             = 0x6c\n\tRTM_NEWMDB                                  = 0x54\n\tRTM_NEWMULTICAST                            = 0x38\n\tRTM_NEWNDUSEROPT                            = 0x44\n\tRTM_NEWNEIGH                                = 0x1c\n\tRTM_NEWNEIGHTBL                             = 0x40\n\tRTM_NEWNETCONF                              = 0x50\n\tRTM_NEWNEXTHOP                              = 0x68\n\tRTM_NEWNEXTHOPBUCKET                        = 0x74\n\tRTM_NEWNSID                                 = 0x58\n\tRTM_NEWPREFIX                               = 0x34\n\tRTM_NEWQDISC                                = 0x24\n\tRTM_NEWROUTE                                = 0x18\n\tRTM_NEWRULE                                 = 0x20\n\tRTM_NEWSTATS                                = 0x5c\n\tRTM_NEWTCLASS                               = 0x28\n\tRTM_NEWTFILTER                              = 0x2c\n\tRTM_NEWTUNNEL                               = 0x78\n\tRTM_NEWVLAN                                 = 0x70\n\tRTM_NR_FAMILIES                             = 0x1b\n\tRTM_NR_MSGTYPES                             = 0x6c\n\tRTM_SETDCB                                  = 0x4f\n\tRTM_SETLINK                                 = 0x13\n\tRTM_SETNEIGHTBL                             = 0x43\n\tRTM_SETSTATS                                = 0x5f\n\tRTNH_ALIGNTO                                = 0x4\n\tRTNH_COMPARE_MASK                           = 0x59\n\tRTNH_F_DEAD                                 = 0x1\n\tRTNH_F_LINKDOWN                             = 0x10\n\tRTNH_F_OFFLOAD                              = 0x8\n\tRTNH_F_ONLINK                               = 0x4\n\tRTNH_F_PERVASIVE                            = 0x2\n\tRTNH_F_TRAP                                 = 0x40\n\tRTNH_F_UNRESOLVED                           = 0x20\n\tRTN_MAX                                     = 0xb\n\tRTPROT_BABEL                                = 0x2a\n\tRTPROT_BGP                                  = 0xba\n\tRTPROT_BIRD                                 = 0xc\n\tRTPROT_BOOT                                 = 0x3\n\tRTPROT_DHCP                                 = 0x10\n\tRTPROT_DNROUTED                             = 0xd\n\tRTPROT_EIGRP                                = 0xc0\n\tRTPROT_GATED                                = 0x8\n\tRTPROT_ISIS                                 = 0xbb\n\tRTPROT_KEEPALIVED                           = 0x12\n\tRTPROT_KERNEL                               = 0x2\n\tRTPROT_MROUTED                              = 0x11\n\tRTPROT_MRT                                  = 0xa\n\tRTPROT_NTK                                  = 0xf\n\tRTPROT_OPENR                                = 0x63\n\tRTPROT_OSPF                                 = 0xbc\n\tRTPROT_OVN                                  = 0x54\n\tRTPROT_RA                                   = 0x9\n\tRTPROT_REDIRECT                             = 0x1\n\tRTPROT_RIP                                  = 0xbd\n\tRTPROT_STATIC                               = 0x4\n\tRTPROT_UNSPEC                               = 0x0\n\tRTPROT_XORP                                 = 0xe\n\tRTPROT_ZEBRA                                = 0xb\n\tRT_CLASS_DEFAULT                            = 0xfd\n\tRT_CLASS_LOCAL                              = 0xff\n\tRT_CLASS_MAIN                               = 0xfe\n\tRT_CLASS_MAX                                = 0xff\n\tRT_CLASS_UNSPEC                             = 0x0\n\tRUSAGE_CHILDREN                             = -0x1\n\tRUSAGE_SELF                                 = 0x0\n\tRUSAGE_THREAD                               = 0x1\n\tRWF_APPEND                                  = 0x10\n\tRWF_ATOMIC                                  = 0x40\n\tRWF_DONTCACHE                               = 0x80\n\tRWF_DSYNC                                   = 0x2\n\tRWF_HIPRI                                   = 0x1\n\tRWF_NOAPPEND                                = 0x20\n\tRWF_NOWAIT                                  = 0x8\n\tRWF_SUPPORTED                               = 0xff\n\tRWF_SYNC                                    = 0x4\n\tRWF_WRITE_LIFE_NOT_SET                      = 0x0\n\tSCHED_BATCH                                 = 0x3\n\tSCHED_DEADLINE                              = 0x6\n\tSCHED_EXT                                   = 0x7\n\tSCHED_FIFO                                  = 0x1\n\tSCHED_FLAG_ALL                              = 0x7f\n\tSCHED_FLAG_DL_OVERRUN                       = 0x4\n\tSCHED_FLAG_KEEP_ALL                         = 0x18\n\tSCHED_FLAG_KEEP_PARAMS                      = 0x10\n\tSCHED_FLAG_KEEP_POLICY                      = 0x8\n\tSCHED_FLAG_RECLAIM                          = 0x2\n\tSCHED_FLAG_RESET_ON_FORK                    = 0x1\n\tSCHED_FLAG_UTIL_CLAMP                       = 0x60\n\tSCHED_FLAG_UTIL_CLAMP_MAX                   = 0x40\n\tSCHED_FLAG_UTIL_CLAMP_MIN                   = 0x20\n\tSCHED_IDLE                                  = 0x5\n\tSCHED_NORMAL                                = 0x0\n\tSCHED_RESET_ON_FORK                         = 0x40000000\n\tSCHED_RR                                    = 0x2\n\tSCM_CREDENTIALS                             = 0x2\n\tSCM_PIDFD                                   = 0x4\n\tSCM_RIGHTS                                  = 0x1\n\tSCM_SECURITY                                = 0x3\n\tSCM_TIMESTAMP                               = 0x1d\n\tSC_LOG_FLUSH                                = 0x100000\n\tSECCOMP_ADDFD_FLAG_SEND                     = 0x2\n\tSECCOMP_ADDFD_FLAG_SETFD                    = 0x1\n\tSECCOMP_FILTER_FLAG_LOG                     = 0x2\n\tSECCOMP_FILTER_FLAG_NEW_LISTENER            = 0x8\n\tSECCOMP_FILTER_FLAG_SPEC_ALLOW              = 0x4\n\tSECCOMP_FILTER_FLAG_TSYNC                   = 0x1\n\tSECCOMP_FILTER_FLAG_TSYNC_ESRCH             = 0x10\n\tSECCOMP_FILTER_FLAG_WAIT_KILLABLE_RECV      = 0x20\n\tSECCOMP_GET_ACTION_AVAIL                    = 0x2\n\tSECCOMP_GET_NOTIF_SIZES                     = 0x3\n\tSECCOMP_IOCTL_NOTIF_RECV                    = 0xc0502100\n\tSECCOMP_IOCTL_NOTIF_SEND                    = 0xc0182101\n\tSECCOMP_IOC_MAGIC                           = '!'\n\tSECCOMP_MODE_DISABLED                       = 0x0\n\tSECCOMP_MODE_FILTER                         = 0x2\n\tSECCOMP_MODE_STRICT                         = 0x1\n\tSECCOMP_RET_ACTION                          = 0x7fff0000\n\tSECCOMP_RET_ACTION_FULL                     = 0xffff0000\n\tSECCOMP_RET_ALLOW                           = 0x7fff0000\n\tSECCOMP_RET_DATA                            = 0xffff\n\tSECCOMP_RET_ERRNO                           = 0x50000\n\tSECCOMP_RET_KILL                            = 0x0\n\tSECCOMP_RET_KILL_PROCESS                    = 0x80000000\n\tSECCOMP_RET_KILL_THREAD                     = 0x0\n\tSECCOMP_RET_LOG                             = 0x7ffc0000\n\tSECCOMP_RET_TRACE                           = 0x7ff00000\n\tSECCOMP_RET_TRAP                            = 0x30000\n\tSECCOMP_RET_USER_NOTIF                      = 0x7fc00000\n\tSECCOMP_SET_MODE_FILTER                     = 0x1\n\tSECCOMP_SET_MODE_STRICT                     = 0x0\n\tSECCOMP_USER_NOTIF_FD_SYNC_WAKE_UP          = 0x1\n\tSECCOMP_USER_NOTIF_FLAG_CONTINUE            = 0x1\n\tSECRETMEM_MAGIC                             = 0x5345434d\n\tSECURITYFS_MAGIC                            = 0x73636673\n\tSEEK_CUR                                    = 0x1\n\tSEEK_DATA                                   = 0x3\n\tSEEK_END                                    = 0x2\n\tSEEK_HOLE                                   = 0x4\n\tSEEK_MAX                                    = 0x4\n\tSEEK_SET                                    = 0x0\n\tSELINUX_MAGIC                               = 0xf97cff8c\n\tSHF_ALLOC                                   = 0x2\n\tSHF_EXCLUDE                                 = 0x8000000\n\tSHF_EXECINSTR                               = 0x4\n\tSHF_GROUP                                   = 0x200\n\tSHF_INFO_LINK                               = 0x40\n\tSHF_LINK_ORDER                              = 0x80\n\tSHF_MASKOS                                  = 0xff00000\n\tSHF_MASKPROC                                = 0xf0000000\n\tSHF_MERGE                                   = 0x10\n\tSHF_ORDERED                                 = 0x4000000\n\tSHF_OS_NONCONFORMING                        = 0x100\n\tSHF_RELA_LIVEPATCH                          = 0x100000\n\tSHF_RO_AFTER_INIT                           = 0x200000\n\tSHF_STRINGS                                 = 0x20\n\tSHF_TLS                                     = 0x400\n\tSHF_WRITE                                   = 0x1\n\tSHN_ABS                                     = 0xfff1\n\tSHN_COMMON                                  = 0xfff2\n\tSHN_HIPROC                                  = 0xff1f\n\tSHN_HIRESERVE                               = 0xffff\n\tSHN_LIVEPATCH                               = 0xff20\n\tSHN_LOPROC                                  = 0xff00\n\tSHN_LORESERVE                               = 0xff00\n\tSHN_UNDEF                                   = 0x0\n\tSHT_DYNAMIC                                 = 0x6\n\tSHT_DYNSYM                                  = 0xb\n\tSHT_HASH                                    = 0x5\n\tSHT_HIPROC                                  = 0x7fffffff\n\tSHT_HIUSER                                  = 0xffffffff\n\tSHT_LOPROC                                  = 0x70000000\n\tSHT_LOUSER                                  = 0x80000000\n\tSHT_NOBITS                                  = 0x8\n\tSHT_NOTE                                    = 0x7\n\tSHT_NULL                                    = 0x0\n\tSHT_NUM                                     = 0xc\n\tSHT_PROGBITS                                = 0x1\n\tSHT_REL                                     = 0x9\n\tSHT_RELA                                    = 0x4\n\tSHT_SHLIB                                   = 0xa\n\tSHT_STRTAB                                  = 0x3\n\tSHT_SYMTAB                                  = 0x2\n\tSHUT_RD                                     = 0x0\n\tSHUT_RDWR                                   = 0x2\n\tSHUT_WR                                     = 0x1\n\tSIOCADDDLCI                                 = 0x8980\n\tSIOCADDMULTI                                = 0x8931\n\tSIOCADDRT                                   = 0x890b\n\tSIOCBONDCHANGEACTIVE                        = 0x8995\n\tSIOCBONDENSLAVE                             = 0x8990\n\tSIOCBONDINFOQUERY                           = 0x8994\n\tSIOCBONDRELEASE                             = 0x8991\n\tSIOCBONDSETHWADDR                           = 0x8992\n\tSIOCBONDSLAVEINFOQUERY                      = 0x8993\n\tSIOCBRADDBR                                 = 0x89a0\n\tSIOCBRADDIF                                 = 0x89a2\n\tSIOCBRDELBR                                 = 0x89a1\n\tSIOCBRDELIF                                 = 0x89a3\n\tSIOCDARP                                    = 0x8953\n\tSIOCDELDLCI                                 = 0x8981\n\tSIOCDELMULTI                                = 0x8932\n\tSIOCDELRT                                   = 0x890c\n\tSIOCDEVPRIVATE                              = 0x89f0\n\tSIOCDIFADDR                                 = 0x8936\n\tSIOCDRARP                                   = 0x8960\n\tSIOCETHTOOL                                 = 0x8946\n\tSIOCGARP                                    = 0x8954\n\tSIOCGETLINKNAME                             = 0x89e0\n\tSIOCGETNODEID                               = 0x89e1\n\tSIOCGHWTSTAMP                               = 0x89b1\n\tSIOCGIFADDR                                 = 0x8915\n\tSIOCGIFBR                                   = 0x8940\n\tSIOCGIFBRDADDR                              = 0x8919\n\tSIOCGIFCONF                                 = 0x8912\n\tSIOCGIFCOUNT                                = 0x8938\n\tSIOCGIFDSTADDR                              = 0x8917\n\tSIOCGIFENCAP                                = 0x8925\n\tSIOCGIFFLAGS                                = 0x8913\n\tSIOCGIFHWADDR                               = 0x8927\n\tSIOCGIFINDEX                                = 0x8933\n\tSIOCGIFMAP                                  = 0x8970\n\tSIOCGIFMEM                                  = 0x891f\n\tSIOCGIFMETRIC                               = 0x891d\n\tSIOCGIFMTU                                  = 0x8921\n\tSIOCGIFNAME                                 = 0x8910\n\tSIOCGIFNETMASK                              = 0x891b\n\tSIOCGIFPFLAGS                               = 0x8935\n\tSIOCGIFSLAVE                                = 0x8929\n\tSIOCGIFTXQLEN                               = 0x8942\n\tSIOCGIFVLAN                                 = 0x8982\n\tSIOCGMIIPHY                                 = 0x8947\n\tSIOCGMIIREG                                 = 0x8948\n\tSIOCGPPPCSTATS                              = 0x89f2\n\tSIOCGPPPSTATS                               = 0x89f0\n\tSIOCGPPPVER                                 = 0x89f1\n\tSIOCGRARP                                   = 0x8961\n\tSIOCGSKNS                                   = 0x894c\n\tSIOCGSTAMP                                  = 0x8906\n\tSIOCGSTAMPNS                                = 0x8907\n\tSIOCGSTAMPNS_OLD                            = 0x8907\n\tSIOCGSTAMP_OLD                              = 0x8906\n\tSIOCKCMATTACH                               = 0x89e0\n\tSIOCKCMCLONE                                = 0x89e2\n\tSIOCKCMUNATTACH                             = 0x89e1\n\tSIOCOUTQNSD                                 = 0x894b\n\tSIOCPROTOPRIVATE                            = 0x89e0\n\tSIOCRTMSG                                   = 0x890d\n\tSIOCSARP                                    = 0x8955\n\tSIOCSHWTSTAMP                               = 0x89b0\n\tSIOCSIFADDR                                 = 0x8916\n\tSIOCSIFBR                                   = 0x8941\n\tSIOCSIFBRDADDR                              = 0x891a\n\tSIOCSIFDSTADDR                              = 0x8918\n\tSIOCSIFENCAP                                = 0x8926\n\tSIOCSIFFLAGS                                = 0x8914\n\tSIOCSIFHWADDR                               = 0x8924\n\tSIOCSIFHWBROADCAST                          = 0x8937\n\tSIOCSIFLINK                                 = 0x8911\n\tSIOCSIFMAP                                  = 0x8971\n\tSIOCSIFMEM                                  = 0x8920\n\tSIOCSIFMETRIC                               = 0x891e\n\tSIOCSIFMTU                                  = 0x8922\n\tSIOCSIFNAME                                 = 0x8923\n\tSIOCSIFNETMASK                              = 0x891c\n\tSIOCSIFPFLAGS                               = 0x8934\n\tSIOCSIFSLAVE                                = 0x8930\n\tSIOCSIFTXQLEN                               = 0x8943\n\tSIOCSIFVLAN                                 = 0x8983\n\tSIOCSMIIREG                                 = 0x8949\n\tSIOCSRARP                                   = 0x8962\n\tSIOCWANDEV                                  = 0x894a\n\tSK_DIAG_BPF_STORAGE_MAX                     = 0x3\n\tSK_DIAG_BPF_STORAGE_REQ_MAX                 = 0x1\n\tSMACK_MAGIC                                 = 0x43415d53\n\tSMART_AUTOSAVE                              = 0xd2\n\tSMART_AUTO_OFFLINE                          = 0xdb\n\tSMART_DISABLE                               = 0xd9\n\tSMART_ENABLE                                = 0xd8\n\tSMART_HCYL_PASS                             = 0xc2\n\tSMART_IMMEDIATE_OFFLINE                     = 0xd4\n\tSMART_LCYL_PASS                             = 0x4f\n\tSMART_READ_LOG_SECTOR                       = 0xd5\n\tSMART_READ_THRESHOLDS                       = 0xd1\n\tSMART_READ_VALUES                           = 0xd0\n\tSMART_SAVE                                  = 0xd3\n\tSMART_STATUS                                = 0xda\n\tSMART_WRITE_LOG_SECTOR                      = 0xd6\n\tSMART_WRITE_THRESHOLDS                      = 0xd7\n\tSMB2_SUPER_MAGIC                            = 0xfe534d42\n\tSMB_SUPER_MAGIC                             = 0x517b\n\tSOCKFS_MAGIC                                = 0x534f434b\n\tSOCK_BUF_LOCK_MASK                          = 0x3\n\tSOCK_DCCP                                   = 0x6\n\tSOCK_DESTROY                                = 0x15\n\tSOCK_DIAG_BY_FAMILY                         = 0x14\n\tSOCK_IOC_TYPE                               = 0x89\n\tSOCK_PACKET                                 = 0xa\n\tSOCK_RAW                                    = 0x3\n\tSOCK_RCVBUF_LOCK                            = 0x2\n\tSOCK_RDM                                    = 0x4\n\tSOCK_SEQPACKET                              = 0x5\n\tSOCK_SNDBUF_LOCK                            = 0x1\n\tSOCK_TXREHASH_DEFAULT                       = 0xff\n\tSOCK_TXREHASH_DISABLED                      = 0x0\n\tSOCK_TXREHASH_ENABLED                       = 0x1\n\tSOL_AAL                                     = 0x109\n\tSOL_ALG                                     = 0x117\n\tSOL_ATM                                     = 0x108\n\tSOL_CAIF                                    = 0x116\n\tSOL_CAN_BASE                                = 0x64\n\tSOL_CAN_RAW                                 = 0x65\n\tSOL_DCCP                                    = 0x10d\n\tSOL_DECNET                                  = 0x105\n\tSOL_ICMPV6                                  = 0x3a\n\tSOL_IP                                      = 0x0\n\tSOL_IPV6                                    = 0x29\n\tSOL_IRDA                                    = 0x10a\n\tSOL_IUCV                                    = 0x115\n\tSOL_KCM                                     = 0x119\n\tSOL_LLC                                     = 0x10c\n\tSOL_MCTP                                    = 0x11d\n\tSOL_MPTCP                                   = 0x11c\n\tSOL_NETBEUI                                 = 0x10b\n\tSOL_NETLINK                                 = 0x10e\n\tSOL_NFC                                     = 0x118\n\tSOL_PACKET                                  = 0x107\n\tSOL_PNPIPE                                  = 0x113\n\tSOL_PPPOL2TP                                = 0x111\n\tSOL_RAW                                     = 0xff\n\tSOL_RDS                                     = 0x114\n\tSOL_RXRPC                                   = 0x110\n\tSOL_SMC                                     = 0x11e\n\tSOL_TCP                                     = 0x6\n\tSOL_TIPC                                    = 0x10f\n\tSOL_TLS                                     = 0x11a\n\tSOL_UDP                                     = 0x11\n\tSOL_VSOCK                                   = 0x11f\n\tSOL_X25                                     = 0x106\n\tSOL_XDP                                     = 0x11b\n\tSOMAXCONN                                   = 0x1000\n\tSO_ATTACH_FILTER                            = 0x1a\n\tSO_DEBUG                                    = 0x1\n\tSO_DETACH_BPF                               = 0x1b\n\tSO_DETACH_FILTER                            = 0x1b\n\tSO_EE_CODE_TXTIME_INVALID_PARAM             = 0x1\n\tSO_EE_CODE_TXTIME_MISSED                    = 0x2\n\tSO_EE_CODE_ZEROCOPY_COPIED                  = 0x1\n\tSO_EE_ORIGIN_ICMP                           = 0x2\n\tSO_EE_ORIGIN_ICMP6                          = 0x3\n\tSO_EE_ORIGIN_LOCAL                          = 0x1\n\tSO_EE_ORIGIN_NONE                           = 0x0\n\tSO_EE_ORIGIN_TIMESTAMPING                   = 0x4\n\tSO_EE_ORIGIN_TXSTATUS                       = 0x4\n\tSO_EE_ORIGIN_TXTIME                         = 0x6\n\tSO_EE_ORIGIN_ZEROCOPY                       = 0x5\n\tSO_EE_RFC4884_FLAG_INVALID                  = 0x1\n\tSO_GET_FILTER                               = 0x1a\n\tSO_NO_CHECK                                 = 0xb\n\tSO_PEERNAME                                 = 0x1c\n\tSO_PRIORITY                                 = 0xc\n\tSO_TIMESTAMP                                = 0x1d\n\tSO_TIMESTAMP_OLD                            = 0x1d\n\tSO_VM_SOCKETS_BUFFER_MAX_SIZE               = 0x2\n\tSO_VM_SOCKETS_BUFFER_MIN_SIZE               = 0x1\n\tSO_VM_SOCKETS_BUFFER_SIZE                   = 0x0\n\tSO_VM_SOCKETS_CONNECT_TIMEOUT               = 0x6\n\tSO_VM_SOCKETS_CONNECT_TIMEOUT_NEW           = 0x8\n\tSO_VM_SOCKETS_CONNECT_TIMEOUT_OLD           = 0x6\n\tSO_VM_SOCKETS_NONBLOCK_TXRX                 = 0x7\n\tSO_VM_SOCKETS_PEER_HOST_VM_ID               = 0x3\n\tSO_VM_SOCKETS_TRUSTED                       = 0x5\n\tSPLICE_F_GIFT                               = 0x8\n\tSPLICE_F_MORE                               = 0x4\n\tSPLICE_F_MOVE                               = 0x1\n\tSPLICE_F_NONBLOCK                           = 0x2\n\tSQUASHFS_MAGIC                              = 0x73717368\n\tSTACK_END_MAGIC                             = 0x57ac6e9d\n\tSTATX_ALL                                   = 0xfff\n\tSTATX_ATIME                                 = 0x20\n\tSTATX_ATTR_APPEND                           = 0x20\n\tSTATX_ATTR_AUTOMOUNT                        = 0x1000\n\tSTATX_ATTR_COMPRESSED                       = 0x4\n\tSTATX_ATTR_DAX                              = 0x200000\n\tSTATX_ATTR_ENCRYPTED                        = 0x800\n\tSTATX_ATTR_IMMUTABLE                        = 0x10\n\tSTATX_ATTR_MOUNT_ROOT                       = 0x2000\n\tSTATX_ATTR_NODUMP                           = 0x40\n\tSTATX_ATTR_VERITY                           = 0x100000\n\tSTATX_ATTR_WRITE_ATOMIC                     = 0x400000\n\tSTATX_BASIC_STATS                           = 0x7ff\n\tSTATX_BLOCKS                                = 0x400\n\tSTATX_BTIME                                 = 0x800\n\tSTATX_CTIME                                 = 0x80\n\tSTATX_DIOALIGN                              = 0x2000\n\tSTATX_DIO_READ_ALIGN                        = 0x20000\n\tSTATX_GID                                   = 0x10\n\tSTATX_INO                                   = 0x100\n\tSTATX_MNT_ID                                = 0x1000\n\tSTATX_MNT_ID_UNIQUE                         = 0x4000\n\tSTATX_MODE                                  = 0x2\n\tSTATX_MTIME                                 = 0x40\n\tSTATX_NLINK                                 = 0x4\n\tSTATX_SIZE                                  = 0x200\n\tSTATX_SUBVOL                                = 0x8000\n\tSTATX_TYPE                                  = 0x1\n\tSTATX_UID                                   = 0x8\n\tSTATX_WRITE_ATOMIC                          = 0x10000\n\tSTATX__RESERVED                             = 0x80000000\n\tSTB_GLOBAL                                  = 0x1\n\tSTB_LOCAL                                   = 0x0\n\tSTB_WEAK                                    = 0x2\n\tSTT_COMMON                                  = 0x5\n\tSTT_FILE                                    = 0x4\n\tSTT_FUNC                                    = 0x2\n\tSTT_NOTYPE                                  = 0x0\n\tSTT_OBJECT                                  = 0x1\n\tSTT_SECTION                                 = 0x3\n\tSTT_TLS                                     = 0x6\n\tSYNC_FILE_RANGE_WAIT_AFTER                  = 0x4\n\tSYNC_FILE_RANGE_WAIT_BEFORE                 = 0x1\n\tSYNC_FILE_RANGE_WRITE                       = 0x2\n\tSYNC_FILE_RANGE_WRITE_AND_WAIT              = 0x7\n\tSYSFS_MAGIC                                 = 0x62656572\n\tS_BLKSIZE                                   = 0x200\n\tS_IEXEC                                     = 0x40\n\tS_IFBLK                                     = 0x6000\n\tS_IFCHR                                     = 0x2000\n\tS_IFDIR                                     = 0x4000\n\tS_IFIFO                                     = 0x1000\n\tS_IFLNK                                     = 0xa000\n\tS_IFMT                                      = 0xf000\n\tS_IFREG                                     = 0x8000\n\tS_IFSOCK                                    = 0xc000\n\tS_IREAD                                     = 0x100\n\tS_IRGRP                                     = 0x20\n\tS_IROTH                                     = 0x4\n\tS_IRUSR                                     = 0x100\n\tS_IRWXG                                     = 0x38\n\tS_IRWXO                                     = 0x7\n\tS_IRWXU                                     = 0x1c0\n\tS_ISGID                                     = 0x400\n\tS_ISUID                                     = 0x800\n\tS_ISVTX                                     = 0x200\n\tS_IWGRP                                     = 0x10\n\tS_IWOTH                                     = 0x2\n\tS_IWRITE                                    = 0x80\n\tS_IWUSR                                     = 0x80\n\tS_IXGRP                                     = 0x8\n\tS_IXOTH                                     = 0x1\n\tS_IXUSR                                     = 0x40\n\tTAB0                                        = 0x0\n\tTASKSTATS_CMD_ATTR_MAX                      = 0x4\n\tTASKSTATS_CMD_MAX                           = 0x2\n\tTASKSTATS_GENL_NAME                         = \"TASKSTATS\"\n\tTASKSTATS_GENL_VERSION                      = 0x1\n\tTASKSTATS_TYPE_MAX                          = 0x6\n\tTASKSTATS_VERSION                           = 0x10\n\tTCIFLUSH                                    = 0x0\n\tTCIOFF                                      = 0x2\n\tTCIOFLUSH                                   = 0x2\n\tTCION                                       = 0x3\n\tTCOFLUSH                                    = 0x1\n\tTCOOFF                                      = 0x0\n\tTCOON                                       = 0x1\n\tTCPOPT_EOL                                  = 0x0\n\tTCPOPT_MAXSEG                               = 0x2\n\tTCPOPT_NOP                                  = 0x1\n\tTCPOPT_SACK                                 = 0x5\n\tTCPOPT_SACK_PERMITTED                       = 0x4\n\tTCPOPT_TIMESTAMP                            = 0x8\n\tTCPOPT_TSTAMP_HDR                           = 0x101080a\n\tTCPOPT_WINDOW                               = 0x3\n\tTCP_CC_INFO                                 = 0x1a\n\tTCP_CM_INQ                                  = 0x24\n\tTCP_CONGESTION                              = 0xd\n\tTCP_COOKIE_IN_ALWAYS                        = 0x1\n\tTCP_COOKIE_MAX                              = 0x10\n\tTCP_COOKIE_MIN                              = 0x8\n\tTCP_COOKIE_OUT_NEVER                        = 0x2\n\tTCP_COOKIE_PAIR_SIZE                        = 0x20\n\tTCP_COOKIE_TRANSACTIONS                     = 0xf\n\tTCP_CORK                                    = 0x3\n\tTCP_DEFER_ACCEPT                            = 0x9\n\tTCP_FASTOPEN                                = 0x17\n\tTCP_FASTOPEN_CONNECT                        = 0x1e\n\tTCP_FASTOPEN_KEY                            = 0x21\n\tTCP_FASTOPEN_NO_COOKIE                      = 0x22\n\tTCP_INFO                                    = 0xb\n\tTCP_INQ                                     = 0x24\n\tTCP_KEEPCNT                                 = 0x6\n\tTCP_KEEPIDLE                                = 0x4\n\tTCP_KEEPINTVL                               = 0x5\n\tTCP_LINGER2                                 = 0x8\n\tTCP_MAXSEG                                  = 0x2\n\tTCP_MAXWIN                                  = 0xffff\n\tTCP_MAX_WINSHIFT                            = 0xe\n\tTCP_MD5SIG                                  = 0xe\n\tTCP_MD5SIG_EXT                              = 0x20\n\tTCP_MD5SIG_FLAG_IFINDEX                     = 0x2\n\tTCP_MD5SIG_FLAG_PREFIX                      = 0x1\n\tTCP_MD5SIG_MAXKEYLEN                        = 0x50\n\tTCP_MSS                                     = 0x200\n\tTCP_MSS_DEFAULT                             = 0x218\n\tTCP_MSS_DESIRED                             = 0x4c4\n\tTCP_NODELAY                                 = 0x1\n\tTCP_NOTSENT_LOWAT                           = 0x19\n\tTCP_QUEUE_SEQ                               = 0x15\n\tTCP_QUICKACK                                = 0xc\n\tTCP_REPAIR                                  = 0x13\n\tTCP_REPAIR_OFF                              = 0x0\n\tTCP_REPAIR_OFF_NO_WP                        = -0x1\n\tTCP_REPAIR_ON                               = 0x1\n\tTCP_REPAIR_OPTIONS                          = 0x16\n\tTCP_REPAIR_QUEUE                            = 0x14\n\tTCP_REPAIR_WINDOW                           = 0x1d\n\tTCP_SAVED_SYN                               = 0x1c\n\tTCP_SAVE_SYN                                = 0x1b\n\tTCP_SYNCNT                                  = 0x7\n\tTCP_S_DATA_IN                               = 0x4\n\tTCP_S_DATA_OUT                              = 0x8\n\tTCP_THIN_DUPACK                             = 0x11\n\tTCP_THIN_LINEAR_TIMEOUTS                    = 0x10\n\tTCP_TIMESTAMP                               = 0x18\n\tTCP_TX_DELAY                                = 0x25\n\tTCP_ULP                                     = 0x1f\n\tTCP_USER_TIMEOUT                            = 0x12\n\tTCP_WINDOW_CLAMP                            = 0xa\n\tTCP_ZEROCOPY_RECEIVE                        = 0x23\n\tTFD_TIMER_ABSTIME                           = 0x1\n\tTFD_TIMER_CANCEL_ON_SET                     = 0x2\n\tTIMER_ABSTIME                               = 0x1\n\tTIOCM_DTR                                   = 0x2\n\tTIOCM_LE                                    = 0x1\n\tTIOCM_RTS                                   = 0x4\n\tTIOCPKT_DATA                                = 0x0\n\tTIOCPKT_DOSTOP                              = 0x20\n\tTIOCPKT_FLUSHREAD                           = 0x1\n\tTIOCPKT_FLUSHWRITE                          = 0x2\n\tTIOCPKT_IOCTL                               = 0x40\n\tTIOCPKT_NOSTOP                              = 0x10\n\tTIOCPKT_START                               = 0x8\n\tTIOCPKT_STOP                                = 0x4\n\tTIPC_ADDR_ID                                = 0x3\n\tTIPC_ADDR_MCAST                             = 0x1\n\tTIPC_ADDR_NAME                              = 0x2\n\tTIPC_ADDR_NAMESEQ                           = 0x1\n\tTIPC_AEAD_ALG_NAME                          = 0x20\n\tTIPC_AEAD_KEYLEN_MAX                        = 0x24\n\tTIPC_AEAD_KEYLEN_MIN                        = 0x14\n\tTIPC_AEAD_KEY_SIZE_MAX                      = 0x48\n\tTIPC_CFG_SRV                                = 0x0\n\tTIPC_CLUSTER_BITS                           = 0xc\n\tTIPC_CLUSTER_MASK                           = 0xfff000\n\tTIPC_CLUSTER_OFFSET                         = 0xc\n\tTIPC_CLUSTER_SIZE                           = 0xfff\n\tTIPC_CONN_SHUTDOWN                          = 0x5\n\tTIPC_CONN_TIMEOUT                           = 0x82\n\tTIPC_CRITICAL_IMPORTANCE                    = 0x3\n\tTIPC_DESTNAME                               = 0x3\n\tTIPC_DEST_DROPPABLE                         = 0x81\n\tTIPC_ERRINFO                                = 0x1\n\tTIPC_ERR_NO_NAME                            = 0x1\n\tTIPC_ERR_NO_NODE                            = 0x3\n\tTIPC_ERR_NO_PORT                            = 0x2\n\tTIPC_ERR_OVERLOAD                           = 0x4\n\tTIPC_GROUP_JOIN                             = 0x87\n\tTIPC_GROUP_LEAVE                            = 0x88\n\tTIPC_GROUP_LOOPBACK                         = 0x1\n\tTIPC_GROUP_MEMBER_EVTS                      = 0x2\n\tTIPC_HIGH_IMPORTANCE                        = 0x2\n\tTIPC_IMPORTANCE                             = 0x7f\n\tTIPC_LINK_STATE                             = 0x2\n\tTIPC_LOW_IMPORTANCE                         = 0x0\n\tTIPC_MAX_BEARER_NAME                        = 0x20\n\tTIPC_MAX_IF_NAME                            = 0x10\n\tTIPC_MAX_LINK_NAME                          = 0x44\n\tTIPC_MAX_MEDIA_NAME                         = 0x10\n\tTIPC_MAX_USER_MSG_SIZE                      = 0x101d0\n\tTIPC_MCAST_BROADCAST                        = 0x85\n\tTIPC_MCAST_REPLICAST                        = 0x86\n\tTIPC_MEDIUM_IMPORTANCE                      = 0x1\n\tTIPC_NODEID_LEN                             = 0x10\n\tTIPC_NODELAY                                = 0x8a\n\tTIPC_NODE_BITS                              = 0xc\n\tTIPC_NODE_MASK                              = 0xfff\n\tTIPC_NODE_OFFSET                            = 0x0\n\tTIPC_NODE_RECVQ_DEPTH                       = 0x83\n\tTIPC_NODE_SIZE                              = 0xfff\n\tTIPC_NODE_STATE                             = 0x0\n\tTIPC_OK                                     = 0x0\n\tTIPC_PUBLISHED                              = 0x1\n\tTIPC_REKEYING_NOW                           = 0xffffffff\n\tTIPC_RESERVED_TYPES                         = 0x40\n\tTIPC_RETDATA                                = 0x2\n\tTIPC_SERVICE_ADDR                           = 0x2\n\tTIPC_SERVICE_RANGE                          = 0x1\n\tTIPC_SOCKET_ADDR                            = 0x3\n\tTIPC_SOCK_RECVQ_DEPTH                       = 0x84\n\tTIPC_SOCK_RECVQ_USED                        = 0x89\n\tTIPC_SRC_DROPPABLE                          = 0x80\n\tTIPC_SUBSCR_TIMEOUT                         = 0x3\n\tTIPC_SUB_CANCEL                             = 0x4\n\tTIPC_SUB_PORTS                              = 0x1\n\tTIPC_SUB_SERVICE                            = 0x2\n\tTIPC_TOP_SRV                                = 0x1\n\tTIPC_WAIT_FOREVER                           = 0xffffffff\n\tTIPC_WITHDRAWN                              = 0x2\n\tTIPC_ZONE_BITS                              = 0x8\n\tTIPC_ZONE_CLUSTER_MASK                      = 0xfffff000\n\tTIPC_ZONE_MASK                              = 0xff000000\n\tTIPC_ZONE_OFFSET                            = 0x18\n\tTIPC_ZONE_SCOPE                             = 0x1\n\tTIPC_ZONE_SIZE                              = 0xff\n\tTMPFS_MAGIC                                 = 0x1021994\n\tTPACKET_ALIGNMENT                           = 0x10\n\tTPACKET_HDRLEN                              = 0x34\n\tTP_STATUS_AVAILABLE                         = 0x0\n\tTP_STATUS_BLK_TMO                           = 0x20\n\tTP_STATUS_COPY                              = 0x2\n\tTP_STATUS_CSUMNOTREADY                      = 0x8\n\tTP_STATUS_CSUM_VALID                        = 0x80\n\tTP_STATUS_GSO_TCP                           = 0x100\n\tTP_STATUS_KERNEL                            = 0x0\n\tTP_STATUS_LOSING                            = 0x4\n\tTP_STATUS_SENDING                           = 0x2\n\tTP_STATUS_SEND_REQUEST                      = 0x1\n\tTP_STATUS_TS_RAW_HARDWARE                   = 0x80000000\n\tTP_STATUS_TS_SOFTWARE                       = 0x20000000\n\tTP_STATUS_TS_SYS_HARDWARE                   = 0x40000000\n\tTP_STATUS_USER                              = 0x1\n\tTP_STATUS_VLAN_TPID_VALID                   = 0x40\n\tTP_STATUS_VLAN_VALID                        = 0x10\n\tTP_STATUS_WRONG_FORMAT                      = 0x4\n\tTRACEFS_MAGIC                               = 0x74726163\n\tTS_COMM_LEN                                 = 0x20\n\tUBI_IOCECNFO                                = 0xc01c6f06\n\tUDF_SUPER_MAGIC                             = 0x15013346\n\tUDP_CORK                                    = 0x1\n\tUDP_ENCAP                                   = 0x64\n\tUDP_ENCAP_ESPINUDP                          = 0x2\n\tUDP_ENCAP_ESPINUDP_NON_IKE                  = 0x1\n\tUDP_ENCAP_GTP0                              = 0x4\n\tUDP_ENCAP_GTP1U                             = 0x5\n\tUDP_ENCAP_L2TPINUDP                         = 0x3\n\tUDP_GRO                                     = 0x68\n\tUDP_NO_CHECK6_RX                            = 0x66\n\tUDP_NO_CHECK6_TX                            = 0x65\n\tUDP_SEGMENT                                 = 0x67\n\tUMOUNT_NOFOLLOW                             = 0x8\n\tUSBDEVICE_SUPER_MAGIC                       = 0x9fa2\n\tUTIME_NOW                                   = 0x3fffffff\n\tUTIME_OMIT                                  = 0x3ffffffe\n\tV9FS_MAGIC                                  = 0x1021997\n\tVERASE                                      = 0x2\n\tVER_FLG_BASE                                = 0x1\n\tVER_FLG_WEAK                                = 0x2\n\tVINTR                                       = 0x0\n\tVKILL                                       = 0x3\n\tVLNEXT                                      = 0xf\n\tVMADDR_CID_ANY                              = 0xffffffff\n\tVMADDR_CID_HOST                             = 0x2\n\tVMADDR_CID_HYPERVISOR                       = 0x0\n\tVMADDR_CID_LOCAL                            = 0x1\n\tVMADDR_FLAG_TO_HOST                         = 0x1\n\tVMADDR_PORT_ANY                             = 0xffffffff\n\tVM_SOCKETS_INVALID_VERSION                  = 0xffffffff\n\tVQUIT                                       = 0x1\n\tVT0                                         = 0x0\n\tWAKE_MAGIC                                  = 0x20\n\tWALL                                        = 0x40000000\n\tWCLONE                                      = 0x80000000\n\tWCONTINUED                                  = 0x8\n\tWDIOC_SETPRETIMEOUT                         = 0xc0045708\n\tWDIOC_SETTIMEOUT                            = 0xc0045706\n\tWDIOF_ALARMONLY                             = 0x400\n\tWDIOF_CARDRESET                             = 0x20\n\tWDIOF_EXTERN1                               = 0x4\n\tWDIOF_EXTERN2                               = 0x8\n\tWDIOF_FANFAULT                              = 0x2\n\tWDIOF_KEEPALIVEPING                         = 0x8000\n\tWDIOF_MAGICCLOSE                            = 0x100\n\tWDIOF_OVERHEAT                              = 0x1\n\tWDIOF_POWEROVER                             = 0x40\n\tWDIOF_POWERUNDER                            = 0x10\n\tWDIOF_PRETIMEOUT                            = 0x200\n\tWDIOF_SETTIMEOUT                            = 0x80\n\tWDIOF_UNKNOWN                               = -0x1\n\tWDIOS_DISABLECARD                           = 0x1\n\tWDIOS_ENABLECARD                            = 0x2\n\tWDIOS_TEMPPANIC                             = 0x4\n\tWDIOS_UNKNOWN                               = -0x1\n\tWEXITED                                     = 0x4\n\tWGALLOWEDIP_A_MAX                           = 0x4\n\tWGDEVICE_A_MAX                              = 0x8\n\tWGPEER_A_MAX                                = 0xa\n\tWG_CMD_MAX                                  = 0x1\n\tWG_GENL_NAME                                = \"wireguard\"\n\tWG_GENL_VERSION                             = 0x1\n\tWG_KEY_LEN                                  = 0x20\n\tWIN_ACKMEDIACHANGE                          = 0xdb\n\tWIN_CHECKPOWERMODE1                         = 0xe5\n\tWIN_CHECKPOWERMODE2                         = 0x98\n\tWIN_DEVICE_RESET                            = 0x8\n\tWIN_DIAGNOSE                                = 0x90\n\tWIN_DOORLOCK                                = 0xde\n\tWIN_DOORUNLOCK                              = 0xdf\n\tWIN_DOWNLOAD_MICROCODE                      = 0x92\n\tWIN_FLUSH_CACHE                             = 0xe7\n\tWIN_FLUSH_CACHE_EXT                         = 0xea\n\tWIN_FORMAT                                  = 0x50\n\tWIN_GETMEDIASTATUS                          = 0xda\n\tWIN_IDENTIFY                                = 0xec\n\tWIN_IDENTIFY_DMA                            = 0xee\n\tWIN_IDLEIMMEDIATE                           = 0xe1\n\tWIN_INIT                                    = 0x60\n\tWIN_MEDIAEJECT                              = 0xed\n\tWIN_MULTREAD                                = 0xc4\n\tWIN_MULTREAD_EXT                            = 0x29\n\tWIN_MULTWRITE                               = 0xc5\n\tWIN_MULTWRITE_EXT                           = 0x39\n\tWIN_NOP                                     = 0x0\n\tWIN_PACKETCMD                               = 0xa0\n\tWIN_PIDENTIFY                               = 0xa1\n\tWIN_POSTBOOT                                = 0xdc\n\tWIN_PREBOOT                                 = 0xdd\n\tWIN_QUEUED_SERVICE                          = 0xa2\n\tWIN_READ                                    = 0x20\n\tWIN_READDMA                                 = 0xc8\n\tWIN_READDMA_EXT                             = 0x25\n\tWIN_READDMA_ONCE                            = 0xc9\n\tWIN_READDMA_QUEUED                          = 0xc7\n\tWIN_READDMA_QUEUED_EXT                      = 0x26\n\tWIN_READ_BUFFER                             = 0xe4\n\tWIN_READ_EXT                                = 0x24\n\tWIN_READ_LONG                               = 0x22\n\tWIN_READ_LONG_ONCE                          = 0x23\n\tWIN_READ_NATIVE_MAX                         = 0xf8\n\tWIN_READ_NATIVE_MAX_EXT                     = 0x27\n\tWIN_READ_ONCE                               = 0x21\n\tWIN_RECAL                                   = 0x10\n\tWIN_RESTORE                                 = 0x10\n\tWIN_SECURITY_DISABLE                        = 0xf6\n\tWIN_SECURITY_ERASE_PREPARE                  = 0xf3\n\tWIN_SECURITY_ERASE_UNIT                     = 0xf4\n\tWIN_SECURITY_FREEZE_LOCK                    = 0xf5\n\tWIN_SECURITY_SET_PASS                       = 0xf1\n\tWIN_SECURITY_UNLOCK                         = 0xf2\n\tWIN_SEEK                                    = 0x70\n\tWIN_SETFEATURES                             = 0xef\n\tWIN_SETIDLE1                                = 0xe3\n\tWIN_SETIDLE2                                = 0x97\n\tWIN_SETMULT                                 = 0xc6\n\tWIN_SET_MAX                                 = 0xf9\n\tWIN_SET_MAX_EXT                             = 0x37\n\tWIN_SLEEPNOW1                               = 0xe6\n\tWIN_SLEEPNOW2                               = 0x99\n\tWIN_SMART                                   = 0xb0\n\tWIN_SPECIFY                                 = 0x91\n\tWIN_SRST                                    = 0x8\n\tWIN_STANDBY                                 = 0xe2\n\tWIN_STANDBY2                                = 0x96\n\tWIN_STANDBYNOW1                             = 0xe0\n\tWIN_STANDBYNOW2                             = 0x94\n\tWIN_VERIFY                                  = 0x40\n\tWIN_VERIFY_EXT                              = 0x42\n\tWIN_VERIFY_ONCE                             = 0x41\n\tWIN_WRITE                                   = 0x30\n\tWIN_WRITEDMA                                = 0xca\n\tWIN_WRITEDMA_EXT                            = 0x35\n\tWIN_WRITEDMA_ONCE                           = 0xcb\n\tWIN_WRITEDMA_QUEUED                         = 0xcc\n\tWIN_WRITEDMA_QUEUED_EXT                     = 0x36\n\tWIN_WRITE_BUFFER                            = 0xe8\n\tWIN_WRITE_EXT                               = 0x34\n\tWIN_WRITE_LONG                              = 0x32\n\tWIN_WRITE_LONG_ONCE                         = 0x33\n\tWIN_WRITE_ONCE                              = 0x31\n\tWIN_WRITE_SAME                              = 0xe9\n\tWIN_WRITE_VERIFY                            = 0x3c\n\tWNOHANG                                     = 0x1\n\tWNOTHREAD                                   = 0x20000000\n\tWNOWAIT                                     = 0x1000000\n\tWSTOPPED                                    = 0x2\n\tWUNTRACED                                   = 0x2\n\tXATTR_CREATE                                = 0x1\n\tXATTR_REPLACE                               = 0x2\n\tXDP_COPY                                    = 0x2\n\tXDP_FLAGS_DRV_MODE                          = 0x4\n\tXDP_FLAGS_HW_MODE                           = 0x8\n\tXDP_FLAGS_MASK                              = 0x1f\n\tXDP_FLAGS_MODES                             = 0xe\n\tXDP_FLAGS_REPLACE                           = 0x10\n\tXDP_FLAGS_SKB_MODE                          = 0x2\n\tXDP_FLAGS_UPDATE_IF_NOEXIST                 = 0x1\n\tXDP_MMAP_OFFSETS                            = 0x1\n\tXDP_OPTIONS                                 = 0x8\n\tXDP_OPTIONS_ZEROCOPY                        = 0x1\n\tXDP_PACKET_HEADROOM                         = 0x100\n\tXDP_PGOFF_RX_RING                           = 0x0\n\tXDP_PGOFF_TX_RING                           = 0x80000000\n\tXDP_PKT_CONTD                               = 0x1\n\tXDP_RING_NEED_WAKEUP                        = 0x1\n\tXDP_RX_RING                                 = 0x2\n\tXDP_SHARED_UMEM                             = 0x1\n\tXDP_STATISTICS                              = 0x7\n\tXDP_TXMD_FLAGS_CHECKSUM                     = 0x2\n\tXDP_TXMD_FLAGS_LAUNCH_TIME                  = 0x4\n\tXDP_TXMD_FLAGS_TIMESTAMP                    = 0x1\n\tXDP_TX_METADATA                             = 0x2\n\tXDP_TX_RING                                 = 0x3\n\tXDP_UMEM_COMPLETION_RING                    = 0x6\n\tXDP_UMEM_FILL_RING                          = 0x5\n\tXDP_UMEM_PGOFF_COMPLETION_RING              = 0x180000000\n\tXDP_UMEM_PGOFF_FILL_RING                    = 0x100000000\n\tXDP_UMEM_REG                                = 0x4\n\tXDP_UMEM_TX_METADATA_LEN                    = 0x4\n\tXDP_UMEM_TX_SW_CSUM                         = 0x2\n\tXDP_UMEM_UNALIGNED_CHUNK_FLAG               = 0x1\n\tXDP_USE_NEED_WAKEUP                         = 0x8\n\tXDP_USE_SG                                  = 0x10\n\tXDP_ZEROCOPY                                = 0x4\n\tXENFS_SUPER_MAGIC                           = 0xabba1974\n\tXFS_SUPER_MAGIC                             = 0x58465342\n\tZONEFS_MAGIC                                = 0x5a4f4653\n\t_HIDIOCGRAWNAME_LEN                         = 0x80\n\t_HIDIOCGRAWPHYS_LEN                         = 0x40\n\t_HIDIOCGRAWUNIQ_LEN                         = 0x40\n)\n\n// Errors\nconst (\n\tE2BIG       = syscall.Errno(0x7)\n\tEACCES      = syscall.Errno(0xd)\n\tEAGAIN      = syscall.Errno(0xb)\n\tEBADF       = syscall.Errno(0x9)\n\tEBUSY       = syscall.Errno(0x10)\n\tECHILD      = syscall.Errno(0xa)\n\tEDOM        = syscall.Errno(0x21)\n\tEEXIST      = syscall.Errno(0x11)\n\tEFAULT      = syscall.Errno(0xe)\n\tEFBIG       = syscall.Errno(0x1b)\n\tEINTR       = syscall.Errno(0x4)\n\tEINVAL      = syscall.Errno(0x16)\n\tEIO         = syscall.Errno(0x5)\n\tEISDIR      = syscall.Errno(0x15)\n\tEMFILE      = syscall.Errno(0x18)\n\tEMLINK      = syscall.Errno(0x1f)\n\tENFILE      = syscall.Errno(0x17)\n\tENODEV      = syscall.Errno(0x13)\n\tENOENT      = syscall.Errno(0x2)\n\tENOEXEC     = syscall.Errno(0x8)\n\tENOMEM      = syscall.Errno(0xc)\n\tENOSPC      = syscall.Errno(0x1c)\n\tENOTBLK     = syscall.Errno(0xf)\n\tENOTDIR     = syscall.Errno(0x14)\n\tENOTTY      = syscall.Errno(0x19)\n\tENXIO       = syscall.Errno(0x6)\n\tEPERM       = syscall.Errno(0x1)\n\tEPIPE       = syscall.Errno(0x20)\n\tERANGE      = syscall.Errno(0x22)\n\tEROFS       = syscall.Errno(0x1e)\n\tESPIPE      = syscall.Errno(0x1d)\n\tESRCH       = syscall.Errno(0x3)\n\tETXTBSY     = syscall.Errno(0x1a)\n\tEWOULDBLOCK = syscall.Errno(0xb)\n\tEXDEV       = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT = syscall.Signal(0x6)\n\tSIGALRM = syscall.Signal(0xe)\n\tSIGFPE  = syscall.Signal(0x8)\n\tSIGHUP  = syscall.Signal(0x1)\n\tSIGILL  = syscall.Signal(0x4)\n\tSIGINT  = syscall.Signal(0x2)\n\tSIGIOT  = syscall.Signal(0x6)\n\tSIGKILL = syscall.Signal(0x9)\n\tSIGPIPE = syscall.Signal(0xd)\n\tSIGQUIT = syscall.Signal(0x3)\n\tSIGSEGV = syscall.Signal(0xb)\n\tSIGTERM = syscall.Signal(0xf)\n\tSIGTRAP = syscall.Signal(0x5)\n)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zerrors_linux_386.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/386/include -m32\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build 386 && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/386/include -m32 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x1008\n\tB115200                          = 0x1002\n\tB1152000                         = 0x1009\n\tB1500000                         = 0x100a\n\tB2000000                         = 0x100b\n\tB230400                          = 0x1003\n\tB2500000                         = 0x100c\n\tB3000000                         = 0x100d\n\tB3500000                         = 0x100e\n\tB4000000                         = 0x100f\n\tB460800                          = 0x1004\n\tB500000                          = 0x1005\n\tB57600                           = 0x1001\n\tB576000                          = 0x1006\n\tB921600                          = 0x1007\n\tBLKALIGNOFF                      = 0x127a\n\tBLKBSZGET                        = 0x80041270\n\tBLKBSZSET                        = 0x40041271\n\tBLKDISCARD                       = 0x1277\n\tBLKDISCARDZEROES                 = 0x127c\n\tBLKFLSBUF                        = 0x1261\n\tBLKFRAGET                        = 0x1265\n\tBLKFRASET                        = 0x1264\n\tBLKGETDISKSEQ                    = 0x80081280\n\tBLKGETSIZE                       = 0x1260\n\tBLKGETSIZE64                     = 0x80041272\n\tBLKIOMIN                         = 0x1278\n\tBLKIOOPT                         = 0x1279\n\tBLKPBSZGET                       = 0x127b\n\tBLKRAGET                         = 0x1263\n\tBLKRASET                         = 0x1262\n\tBLKROGET                         = 0x125e\n\tBLKROSET                         = 0x125d\n\tBLKROTATIONAL                    = 0x127e\n\tBLKRRPART                        = 0x125f\n\tBLKSECDISCARD                    = 0x127d\n\tBLKSECTGET                       = 0x1267\n\tBLKSECTSET                       = 0x1266\n\tBLKSSZGET                        = 0x1268\n\tBLKZEROOUT                       = 0x127f\n\tBOTHER                           = 0x1000\n\tBS1                              = 0x2000\n\tBSDLY                            = 0x2000\n\tCBAUD                            = 0x100f\n\tCBAUDEX                          = 0x1000\n\tCIBAUD                           = 0x100f0000\n\tCLOCAL                           = 0x800\n\tCR1                              = 0x200\n\tCR2                              = 0x400\n\tCR3                              = 0x600\n\tCRDLY                            = 0x600\n\tCREAD                            = 0x80\n\tCS6                              = 0x10\n\tCS7                              = 0x20\n\tCS8                              = 0x30\n\tCSIZE                            = 0x30\n\tCSTOPB                           = 0x40\n\tDM_MPATH_PROBE_PATHS             = 0xfd12\n\tECCGETLAYOUT                     = 0x81484d11\n\tECCGETSTATS                      = 0x80104d12\n\tECHOCTL                          = 0x200\n\tECHOE                            = 0x10\n\tECHOK                            = 0x20\n\tECHOKE                           = 0x800\n\tECHONL                           = 0x40\n\tECHOPRT                          = 0x400\n\tEFD_CLOEXEC                      = 0x80000\n\tEFD_NONBLOCK                     = 0x800\n\tEPIOCGPARAMS                     = 0x80088a02\n\tEPIOCSPARAMS                     = 0x40088a01\n\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000\n\tFF1                              = 0x8000\n\tFFDLY                            = 0x8000\n\tFICLONE                          = 0x40049409\n\tFICLONERANGE                     = 0x4020940d\n\tFLUSHO                           = 0x1000\n\tFP_XSTATE_MAGIC2                 = 0x46505845\n\tFS_IOC_ENABLE_VERITY             = 0x40806685\n\tFS_IOC_GETFLAGS                  = 0x80046601\n\tFS_IOC_GET_ENCRYPTION_NONCE      = 0x8010661b\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x400c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x40106614\n\tFS_IOC_SETFLAGS                  = 0x40046602\n\tFS_IOC_SET_ENCRYPTION_POLICY     = 0x800c6613\n\tF_GETLK                          = 0xc\n\tF_GETLK64                        = 0xc\n\tF_GETOWN                         = 0x9\n\tF_RDLCK                          = 0x0\n\tF_SETLK                          = 0xd\n\tF_SETLK64                        = 0xd\n\tF_SETLKW                         = 0xe\n\tF_SETLKW64                       = 0xe\n\tF_SETOWN                         = 0x8\n\tF_UNLCK                          = 0x2\n\tF_WRLCK                          = 0x1\n\tHIDIOCGRAWINFO                   = 0x80084803\n\tHIDIOCGRDESC                     = 0x90044802\n\tHIDIOCGRDESCSIZE                 = 0x80044801\n\tHIDIOCREVOKE                     = 0x4004480d\n\tHUPCL                            = 0x400\n\tICANON                           = 0x2\n\tIEXTEN                           = 0x8000\n\tIN_CLOEXEC                       = 0x80000\n\tIN_NONBLOCK                      = 0x800\n\tIOCTL_MEI_NOTIFY_GET             = 0x80044803\n\tIOCTL_MEI_NOTIFY_SET             = 0x40044802\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x7b9\n\tIPV6_FLOWINFO_MASK               = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK              = 0xffff0f00\n\tISIG                             = 0x1\n\tIUCLC                            = 0x200\n\tIXOFF                            = 0x1000\n\tIXON                             = 0x400\n\tMAP_32BIT                        = 0x40\n\tMAP_ABOVE4G                      = 0x80\n\tMAP_ANON                         = 0x20\n\tMAP_ANONYMOUS                    = 0x20\n\tMAP_DENYWRITE                    = 0x800\n\tMAP_EXECUTABLE                   = 0x1000\n\tMAP_GROWSDOWN                    = 0x100\n\tMAP_HUGETLB                      = 0x40000\n\tMAP_LOCKED                       = 0x2000\n\tMAP_NONBLOCK                     = 0x10000\n\tMAP_NORESERVE                    = 0x4000\n\tMAP_POPULATE                     = 0x8000\n\tMAP_STACK                        = 0x20000\n\tMAP_SYNC                         = 0x80000\n\tMCL_CURRENT                      = 0x1\n\tMCL_FUTURE                       = 0x2\n\tMCL_ONFAULT                      = 0x4\n\tMEMERASE                         = 0x40084d02\n\tMEMERASE64                       = 0x40104d14\n\tMEMGETBADBLOCK                   = 0x40084d0b\n\tMEMGETINFO                       = 0x80204d01\n\tMEMGETOOBSEL                     = 0x80c84d0a\n\tMEMGETREGIONCOUNT                = 0x80044d07\n\tMEMISLOCKED                      = 0x80084d17\n\tMEMLOCK                          = 0x40084d05\n\tMEMREAD                          = 0xc03c4d1a\n\tMEMREADOOB                       = 0xc00c4d04\n\tMEMSETBADBLOCK                   = 0x40084d0c\n\tMEMUNLOCK                        = 0x40084d06\n\tMEMWRITEOOB                      = 0xc00c4d03\n\tMTDFILEMODE                      = 0x4d13\n\tNFDBITS                          = 0x20\n\tNLDLY                            = 0x100\n\tNOFLSH                           = 0x80\n\tNS_GET_MNTNS_ID                  = 0x8008b705\n\tNS_GET_NSTYPE                    = 0xb703\n\tNS_GET_OWNER_UID                 = 0xb704\n\tNS_GET_PARENT                    = 0xb702\n\tNS_GET_PID_FROM_PIDNS            = 0x8004b706\n\tNS_GET_PID_IN_PIDNS              = 0x8004b708\n\tNS_GET_TGID_FROM_PIDNS           = 0x8004b707\n\tNS_GET_TGID_IN_PIDNS             = 0x8004b709\n\tNS_GET_USERNS                    = 0xb701\n\tOLCUC                            = 0x2\n\tONLCR                            = 0x4\n\tOTPERASE                         = 0x400c4d19\n\tOTPGETREGIONCOUNT                = 0x40044d0e\n\tOTPGETREGIONINFO                 = 0x400c4d0f\n\tOTPLOCK                          = 0x800c4d10\n\tOTPSELECT                        = 0x80044d0d\n\tO_APPEND                         = 0x400\n\tO_ASYNC                          = 0x2000\n\tO_CLOEXEC                        = 0x80000\n\tO_CREAT                          = 0x40\n\tO_DIRECT                         = 0x4000\n\tO_DIRECTORY                      = 0x10000\n\tO_DSYNC                          = 0x1000\n\tO_EXCL                           = 0x80\n\tO_FSYNC                          = 0x101000\n\tO_LARGEFILE                      = 0x8000\n\tO_NDELAY                         = 0x800\n\tO_NOATIME                        = 0x40000\n\tO_NOCTTY                         = 0x100\n\tO_NOFOLLOW                       = 0x20000\n\tO_NONBLOCK                       = 0x800\n\tO_PATH                           = 0x200000\n\tO_RSYNC                          = 0x101000\n\tO_SYNC                           = 0x101000\n\tO_TMPFILE                        = 0x410000\n\tO_TRUNC                          = 0x200\n\tPARENB                           = 0x100\n\tPARODD                           = 0x200\n\tPENDIN                           = 0x4000\n\tPERF_EVENT_IOC_DISABLE           = 0x2401\n\tPERF_EVENT_IOC_ENABLE            = 0x2400\n\tPERF_EVENT_IOC_ID                = 0x80042407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4004240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT      = 0x40042409\n\tPERF_EVENT_IOC_PERIOD            = 0x40082404\n\tPERF_EVENT_IOC_QUERY_BPF         = 0xc004240a\n\tPERF_EVENT_IOC_REFRESH           = 0x2402\n\tPERF_EVENT_IOC_RESET             = 0x2403\n\tPERF_EVENT_IOC_SET_BPF           = 0x40042408\n\tPERF_EVENT_IOC_SET_FILTER        = 0x40042406\n\tPERF_EVENT_IOC_SET_OUTPUT        = 0x2405\n\tPPPIOCATTACH                     = 0x4004743d\n\tPPPIOCATTCHAN                    = 0x40047438\n\tPPPIOCBRIDGECHAN                 = 0x40047435\n\tPPPIOCCONNECT                    = 0x4004743a\n\tPPPIOCDETACH                     = 0x4004743c\n\tPPPIOCDISCONN                    = 0x7439\n\tPPPIOCGASYNCMAP                  = 0x80047458\n\tPPPIOCGCHAN                      = 0x80047437\n\tPPPIOCGDEBUG                     = 0x80047441\n\tPPPIOCGFLAGS                     = 0x8004745a\n\tPPPIOCGIDLE                      = 0x8008743f\n\tPPPIOCGIDLE32                    = 0x8008743f\n\tPPPIOCGIDLE64                    = 0x8010743f\n\tPPPIOCGL2TPSTATS                 = 0x80487436\n\tPPPIOCGMRU                       = 0x80047453\n\tPPPIOCGRASYNCMAP                 = 0x80047455\n\tPPPIOCGUNIT                      = 0x80047456\n\tPPPIOCGXASYNCMAP                 = 0x80207450\n\tPPPIOCSACTIVE                    = 0x40087446\n\tPPPIOCSASYNCMAP                  = 0x40047457\n\tPPPIOCSCOMPRESS                  = 0x400c744d\n\tPPPIOCSDEBUG                     = 0x40047440\n\tPPPIOCSFLAGS                     = 0x40047459\n\tPPPIOCSMAXCID                    = 0x40047451\n\tPPPIOCSMRRU                      = 0x4004743b\n\tPPPIOCSMRU                       = 0x40047452\n\tPPPIOCSNPMODE                    = 0x4008744b\n\tPPPIOCSPASS                      = 0x40087447\n\tPPPIOCSRASYNCMAP                 = 0x40047454\n\tPPPIOCSXASYNCMAP                 = 0x4020744f\n\tPPPIOCUNBRIDGECHAN               = 0x7434\n\tPPPIOCXFERUNIT                   = 0x744e\n\tPR_SET_PTRACER_ANY               = 0xffffffff\n\tPTP_CLOCK_GETCAPS                = 0x80503d01\n\tPTP_CLOCK_GETCAPS2               = 0x80503d0a\n\tPTP_ENABLE_PPS                   = 0x40043d04\n\tPTP_ENABLE_PPS2                  = 0x40043d0d\n\tPTP_EXTTS_REQUEST                = 0x40103d02\n\tPTP_EXTTS_REQUEST2               = 0x40103d0b\n\tPTP_MASK_CLEAR_ALL               = 0x3d13\n\tPTP_MASK_EN_SINGLE               = 0x40043d14\n\tPTP_PEROUT_REQUEST               = 0x40383d03\n\tPTP_PEROUT_REQUEST2              = 0x40383d0c\n\tPTP_PIN_SETFUNC                  = 0x40603d07\n\tPTP_PIN_SETFUNC2                 = 0x40603d10\n\tPTP_SYS_OFFSET                   = 0x43403d05\n\tPTP_SYS_OFFSET2                  = 0x43403d0e\n\tPTRACE_GETFPREGS                 = 0xe\n\tPTRACE_GETFPXREGS                = 0x12\n\tPTRACE_GET_THREAD_AREA           = 0x19\n\tPTRACE_OLDSETOPTIONS             = 0x15\n\tPTRACE_SETFPREGS                 = 0xf\n\tPTRACE_SETFPXREGS                = 0x13\n\tPTRACE_SET_THREAD_AREA           = 0x1a\n\tPTRACE_SINGLEBLOCK               = 0x21\n\tPTRACE_SYSEMU                    = 0x1f\n\tPTRACE_SYSEMU_SINGLESTEP         = 0x20\n\tRLIMIT_AS                        = 0x9\n\tRLIMIT_MEMLOCK                   = 0x8\n\tRLIMIT_NOFILE                    = 0x7\n\tRLIMIT_NPROC                     = 0x6\n\tRLIMIT_RSS                       = 0x5\n\tRNDADDENTROPY                    = 0x40085203\n\tRNDADDTOENTCNT                   = 0x40045201\n\tRNDCLEARPOOL                     = 0x5206\n\tRNDGETENTCNT                     = 0x80045200\n\tRNDGETPOOL                       = 0x80085202\n\tRNDRESEEDCRNG                    = 0x5207\n\tRNDZAPENTCNT                     = 0x5204\n\tRTC_AIE_OFF                      = 0x7002\n\tRTC_AIE_ON                       = 0x7001\n\tRTC_ALM_READ                     = 0x80247008\n\tRTC_ALM_SET                      = 0x40247007\n\tRTC_EPOCH_READ                   = 0x8004700d\n\tRTC_EPOCH_SET                    = 0x4004700e\n\tRTC_IRQP_READ                    = 0x8004700b\n\tRTC_IRQP_SET                     = 0x4004700c\n\tRTC_PARAM_GET                    = 0x40187013\n\tRTC_PARAM_SET                    = 0x40187014\n\tRTC_PIE_OFF                      = 0x7006\n\tRTC_PIE_ON                       = 0x7005\n\tRTC_PLL_GET                      = 0x801c7011\n\tRTC_PLL_SET                      = 0x401c7012\n\tRTC_RD_TIME                      = 0x80247009\n\tRTC_SET_TIME                     = 0x4024700a\n\tRTC_UIE_OFF                      = 0x7004\n\tRTC_UIE_ON                       = 0x7003\n\tRTC_VL_CLR                       = 0x7014\n\tRTC_VL_READ                      = 0x80047013\n\tRTC_WIE_OFF                      = 0x7010\n\tRTC_WIE_ON                       = 0x700f\n\tRTC_WKALM_RD                     = 0x80287010\n\tRTC_WKALM_SET                    = 0x4028700f\n\tSCM_DEVMEM_DMABUF                = 0x4f\n\tSCM_DEVMEM_LINEAR                = 0x4e\n\tSCM_TIMESTAMPING                 = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS       = 0x36\n\tSCM_TIMESTAMPING_PKTINFO         = 0x3a\n\tSCM_TIMESTAMPNS                  = 0x23\n\tSCM_TS_OPT_ID                    = 0x51\n\tSCM_TXTIME                       = 0x3d\n\tSCM_WIFI_STATUS                  = 0x29\n\tSECCOMP_IOCTL_NOTIF_ADDFD        = 0x40182103\n\tSECCOMP_IOCTL_NOTIF_ID_VALID     = 0x40082102\n\tSECCOMP_IOCTL_NOTIF_SET_FLAGS    = 0x40082104\n\tSFD_CLOEXEC                      = 0x80000\n\tSFD_NONBLOCK                     = 0x800\n\tSIOCATMARK                       = 0x8905\n\tSIOCGPGRP                        = 0x8904\n\tSIOCGSTAMPNS_NEW                 = 0x80108907\n\tSIOCGSTAMP_NEW                   = 0x80108906\n\tSIOCINQ                          = 0x541b\n\tSIOCOUTQ                         = 0x5411\n\tSIOCSPGRP                        = 0x8902\n\tSOCK_CLOEXEC                     = 0x80000\n\tSOCK_DGRAM                       = 0x2\n\tSOCK_NONBLOCK                    = 0x800\n\tSOCK_STREAM                      = 0x1\n\tSOL_SOCKET                       = 0x1\n\tSO_ACCEPTCONN                    = 0x1e\n\tSO_ATTACH_BPF                    = 0x32\n\tSO_ATTACH_REUSEPORT_CBPF         = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF         = 0x34\n\tSO_BINDTODEVICE                  = 0x19\n\tSO_BINDTOIFINDEX                 = 0x3e\n\tSO_BPF_EXTENSIONS                = 0x30\n\tSO_BROADCAST                     = 0x6\n\tSO_BSDCOMPAT                     = 0xe\n\tSO_BUF_LOCK                      = 0x48\n\tSO_BUSY_POLL                     = 0x2e\n\tSO_BUSY_POLL_BUDGET              = 0x46\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\n\tSO_DEVMEM_DMABUF                 = 0x4f\n\tSO_DEVMEM_DONTNEED               = 0x50\n\tSO_DEVMEM_LINEAR                 = 0x4e\n\tSO_DOMAIN                        = 0x27\n\tSO_DONTROUTE                     = 0x5\n\tSO_ERROR                         = 0x4\n\tSO_INCOMING_CPU                  = 0x31\n\tSO_INCOMING_NAPI_ID              = 0x38\n\tSO_KEEPALIVE                     = 0x9\n\tSO_LINGER                        = 0xd\n\tSO_LOCK_FILTER                   = 0x2c\n\tSO_MARK                          = 0x24\n\tSO_MAX_PACING_RATE               = 0x2f\n\tSO_MEMINFO                       = 0x37\n\tSO_NETNS_COOKIE                  = 0x47\n\tSO_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0xa\n\tSO_PASSCRED                      = 0x10\n\tSO_PASSPIDFD                     = 0x4c\n\tSO_PASSRIGHTS                    = 0x53\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x11\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERPIDFD                     = 0x4d\n\tSO_PEERSEC                       = 0x1f\n\tSO_PREFER_BUSY_POLL              = 0x45\n\tSO_PROTOCOL                      = 0x26\n\tSO_RCVBUF                        = 0x8\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x12\n\tSO_RCVMARK                       = 0x4b\n\tSO_RCVPRIORITY                   = 0x52\n\tSO_RCVTIMEO                      = 0x14\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x14\n\tSO_RESERVE_MEM                   = 0x49\n\tSO_REUSEADDR                     = 0x2\n\tSO_REUSEPORT                     = 0xf\n\tSO_RXQ_OVFL                      = 0x28\n\tSO_SECURITY_AUTHENTICATION       = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK   = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT = 0x17\n\tSO_SELECT_ERR_QUEUE              = 0x2d\n\tSO_SNDBUF                        = 0x7\n\tSO_SNDBUFFORCE                   = 0x20\n\tSO_SNDLOWAT                      = 0x13\n\tSO_SNDTIMEO                      = 0x15\n\tSO_SNDTIMEO_NEW                  = 0x43\n\tSO_SNDTIMEO_OLD                  = 0x15\n\tSO_TIMESTAMPING                  = 0x25\n\tSO_TIMESTAMPING_NEW              = 0x41\n\tSO_TIMESTAMPING_OLD              = 0x25\n\tSO_TIMESTAMPNS                   = 0x23\n\tSO_TIMESTAMPNS_NEW               = 0x40\n\tSO_TIMESTAMPNS_OLD               = 0x23\n\tSO_TIMESTAMP_NEW                 = 0x3f\n\tSO_TXREHASH                      = 0x4a\n\tSO_TXTIME                        = 0x3d\n\tSO_TYPE                          = 0x3\n\tSO_WIFI_STATUS                   = 0x29\n\tSO_ZEROCOPY                      = 0x3c\n\tTAB1                             = 0x800\n\tTAB2                             = 0x1000\n\tTAB3                             = 0x1800\n\tTABDLY                           = 0x1800\n\tTCFLSH                           = 0x540b\n\tTCGETA                           = 0x5405\n\tTCGETS                           = 0x5401\n\tTCGETS2                          = 0x802c542a\n\tTCGETX                           = 0x5432\n\tTCSAFLUSH                        = 0x2\n\tTCSBRK                           = 0x5409\n\tTCSBRKP                          = 0x5425\n\tTCSETA                           = 0x5406\n\tTCSETAF                          = 0x5408\n\tTCSETAW                          = 0x5407\n\tTCSETS                           = 0x5402\n\tTCSETS2                          = 0x402c542b\n\tTCSETSF                          = 0x5404\n\tTCSETSF2                         = 0x402c542d\n\tTCSETSW                          = 0x5403\n\tTCSETSW2                         = 0x402c542c\n\tTCSETX                           = 0x5433\n\tTCSETXF                          = 0x5434\n\tTCSETXW                          = 0x5435\n\tTCXONC                           = 0x540a\n\tTFD_CLOEXEC                      = 0x80000\n\tTFD_NONBLOCK                     = 0x800\n\tTIOCCBRK                         = 0x5428\n\tTIOCCONS                         = 0x541d\n\tTIOCEXCL                         = 0x540c\n\tTIOCGDEV                         = 0x80045432\n\tTIOCGETD                         = 0x5424\n\tTIOCGEXCL                        = 0x80045440\n\tTIOCGICOUNT                      = 0x545d\n\tTIOCGISO7816                     = 0x80285442\n\tTIOCGLCKTRMIOS                   = 0x5456\n\tTIOCGPGRP                        = 0x540f\n\tTIOCGPKT                         = 0x80045438\n\tTIOCGPTLCK                       = 0x80045439\n\tTIOCGPTN                         = 0x80045430\n\tTIOCGPTPEER                      = 0x5441\n\tTIOCGRS485                       = 0x542e\n\tTIOCGSERIAL                      = 0x541e\n\tTIOCGSID                         = 0x5429\n\tTIOCGSOFTCAR                     = 0x5419\n\tTIOCGWINSZ                       = 0x5413\n\tTIOCINQ                          = 0x541b\n\tTIOCLINUX                        = 0x541c\n\tTIOCMBIC                         = 0x5417\n\tTIOCMBIS                         = 0x5416\n\tTIOCMGET                         = 0x5415\n\tTIOCMIWAIT                       = 0x545c\n\tTIOCMSET                         = 0x5418\n\tTIOCM_CAR                        = 0x40\n\tTIOCM_CD                         = 0x40\n\tTIOCM_CTS                        = 0x20\n\tTIOCM_DSR                        = 0x100\n\tTIOCM_RI                         = 0x80\n\tTIOCM_RNG                        = 0x80\n\tTIOCM_SR                         = 0x10\n\tTIOCM_ST                         = 0x8\n\tTIOCNOTTY                        = 0x5422\n\tTIOCNXCL                         = 0x540d\n\tTIOCOUTQ                         = 0x5411\n\tTIOCPKT                          = 0x5420\n\tTIOCSBRK                         = 0x5427\n\tTIOCSCTTY                        = 0x540e\n\tTIOCSERCONFIG                    = 0x5453\n\tTIOCSERGETLSR                    = 0x5459\n\tTIOCSERGETMULTI                  = 0x545a\n\tTIOCSERGSTRUCT                   = 0x5458\n\tTIOCSERGWILD                     = 0x5454\n\tTIOCSERSETMULTI                  = 0x545b\n\tTIOCSERSWILD                     = 0x5455\n\tTIOCSER_TEMT                     = 0x1\n\tTIOCSETD                         = 0x5423\n\tTIOCSIG                          = 0x40045436\n\tTIOCSISO7816                     = 0xc0285443\n\tTIOCSLCKTRMIOS                   = 0x5457\n\tTIOCSPGRP                        = 0x5410\n\tTIOCSPTLCK                       = 0x40045431\n\tTIOCSRS485                       = 0x542f\n\tTIOCSSERIAL                      = 0x541f\n\tTIOCSSOFTCAR                     = 0x541a\n\tTIOCSTI                          = 0x5412\n\tTIOCSWINSZ                       = 0x5414\n\tTIOCVHANGUP                      = 0x5437\n\tTOSTOP                           = 0x100\n\tTUNATTACHFILTER                  = 0x400854d5\n\tTUNDETACHFILTER                  = 0x400854d6\n\tTUNGETDEVNETNS                   = 0x54e3\n\tTUNGETFEATURES                   = 0x800454cf\n\tTUNGETFILTER                     = 0x800854db\n\tTUNGETIFF                        = 0x800454d2\n\tTUNGETSNDBUF                     = 0x800454d3\n\tTUNGETVNETBE                     = 0x800454df\n\tTUNGETVNETHDRSZ                  = 0x800454d7\n\tTUNGETVNETLE                     = 0x800454dd\n\tTUNSETCARRIER                    = 0x400454e2\n\tTUNSETDEBUG                      = 0x400454c9\n\tTUNSETFILTEREBPF                 = 0x800454e1\n\tTUNSETGROUP                      = 0x400454ce\n\tTUNSETIFF                        = 0x400454ca\n\tTUNSETIFINDEX                    = 0x400454da\n\tTUNSETLINK                       = 0x400454cd\n\tTUNSETNOCSUM                     = 0x400454c8\n\tTUNSETOFFLOAD                    = 0x400454d0\n\tTUNSETOWNER                      = 0x400454cc\n\tTUNSETPERSIST                    = 0x400454cb\n\tTUNSETQUEUE                      = 0x400454d9\n\tTUNSETSNDBUF                     = 0x400454d4\n\tTUNSETSTEERINGEBPF               = 0x800454e0\n\tTUNSETTXFILTER                   = 0x400454d1\n\tTUNSETVNETBE                     = 0x400454de\n\tTUNSETVNETHDRSZ                  = 0x400454d8\n\tTUNSETVNETLE                     = 0x400454dc\n\tUBI_IOCATT                       = 0x40186f40\n\tUBI_IOCDET                       = 0x40046f41\n\tUBI_IOCEBCH                      = 0x40044f02\n\tUBI_IOCEBER                      = 0x40044f01\n\tUBI_IOCEBISMAP                   = 0x80044f05\n\tUBI_IOCEBMAP                     = 0x40084f03\n\tUBI_IOCEBUNMAP                   = 0x40044f04\n\tUBI_IOCMKVOL                     = 0x40986f00\n\tUBI_IOCRMVOL                     = 0x40046f01\n\tUBI_IOCRNVOL                     = 0x51106f03\n\tUBI_IOCRPEB                      = 0x40046f04\n\tUBI_IOCRSVOL                     = 0x400c6f02\n\tUBI_IOCSETVOLPROP                = 0x40104f06\n\tUBI_IOCSPEB                      = 0x40046f05\n\tUBI_IOCVOLCRBLK                  = 0x40804f07\n\tUBI_IOCVOLRMBLK                  = 0x4f08\n\tUBI_IOCVOLUP                     = 0x40084f00\n\tVDISCARD                         = 0xd\n\tVEOF                             = 0x4\n\tVEOL                             = 0xb\n\tVEOL2                            = 0x10\n\tVMIN                             = 0x6\n\tVREPRINT                         = 0xc\n\tVSTART                           = 0x8\n\tVSTOP                            = 0x9\n\tVSUSP                            = 0xa\n\tVSWTC                            = 0x7\n\tVT1                              = 0x4000\n\tVTDLY                            = 0x4000\n\tVTIME                            = 0x5\n\tVWERASE                          = 0xe\n\tWDIOC_GETBOOTSTATUS              = 0x80045702\n\tWDIOC_GETPRETIMEOUT              = 0x80045709\n\tWDIOC_GETSTATUS                  = 0x80045701\n\tWDIOC_GETSUPPORT                 = 0x80285700\n\tWDIOC_GETTEMP                    = 0x80045703\n\tWDIOC_GETTIMELEFT                = 0x8004570a\n\tWDIOC_GETTIMEOUT                 = 0x80045707\n\tWDIOC_KEEPALIVE                  = 0x80045705\n\tWDIOC_SETOPTIONS                 = 0x80045704\n\tWORDSIZE                         = 0x20\n\tX86_FXSR_MAGIC                   = 0x0\n\tXCASE                            = 0x4\n\tXTABS                            = 0x1800\n\t_HIDIOCGRAWNAME                  = 0x80804804\n\t_HIDIOCGRAWPHYS                  = 0x80404805\n\t_HIDIOCGRAWUNIQ                  = 0x80404808\n)\n\n// Errors\nconst (\n\tEADDRINUSE      = syscall.Errno(0x62)\n\tEADDRNOTAVAIL   = syscall.Errno(0x63)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x61)\n\tEALREADY        = syscall.Errno(0x72)\n\tEBADE           = syscall.Errno(0x34)\n\tEBADFD          = syscall.Errno(0x4d)\n\tEBADMSG         = syscall.Errno(0x4a)\n\tEBADR           = syscall.Errno(0x35)\n\tEBADRQC         = syscall.Errno(0x38)\n\tEBADSLT         = syscall.Errno(0x39)\n\tEBFONT          = syscall.Errno(0x3b)\n\tECANCELED       = syscall.Errno(0x7d)\n\tECHRNG          = syscall.Errno(0x2c)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x67)\n\tECONNREFUSED    = syscall.Errno(0x6f)\n\tECONNRESET      = syscall.Errno(0x68)\n\tEDEADLK         = syscall.Errno(0x23)\n\tEDEADLOCK       = syscall.Errno(0x23)\n\tEDESTADDRREQ    = syscall.Errno(0x59)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x7a)\n\tEHOSTDOWN       = syscall.Errno(0x70)\n\tEHOSTUNREACH    = syscall.Errno(0x71)\n\tEHWPOISON       = syscall.Errno(0x85)\n\tEIDRM           = syscall.Errno(0x2b)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x73)\n\tEISCONN         = syscall.Errno(0x6a)\n\tEISNAM          = syscall.Errno(0x78)\n\tEKEYEXPIRED     = syscall.Errno(0x7f)\n\tEKEYREJECTED    = syscall.Errno(0x81)\n\tEKEYREVOKED     = syscall.Errno(0x80)\n\tEL2HLT          = syscall.Errno(0x33)\n\tEL2NSYNC        = syscall.Errno(0x2d)\n\tEL3HLT          = syscall.Errno(0x2e)\n\tEL3RST          = syscall.Errno(0x2f)\n\tELIBACC         = syscall.Errno(0x4f)\n\tELIBBAD         = syscall.Errno(0x50)\n\tELIBEXEC        = syscall.Errno(0x53)\n\tELIBMAX         = syscall.Errno(0x52)\n\tELIBSCN         = syscall.Errno(0x51)\n\tELNRNG          = syscall.Errno(0x30)\n\tELOOP           = syscall.Errno(0x28)\n\tEMEDIUMTYPE     = syscall.Errno(0x7c)\n\tEMSGSIZE        = syscall.Errno(0x5a)\n\tEMULTIHOP       = syscall.Errno(0x48)\n\tENAMETOOLONG    = syscall.Errno(0x24)\n\tENAVAIL         = syscall.Errno(0x77)\n\tENETDOWN        = syscall.Errno(0x64)\n\tENETRESET       = syscall.Errno(0x66)\n\tENETUNREACH     = syscall.Errno(0x65)\n\tENOANO          = syscall.Errno(0x37)\n\tENOBUFS         = syscall.Errno(0x69)\n\tENOCSI          = syscall.Errno(0x32)\n\tENODATA         = syscall.Errno(0x3d)\n\tENOKEY          = syscall.Errno(0x7e)\n\tENOLCK          = syscall.Errno(0x25)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x7b)\n\tENOMSG          = syscall.Errno(0x2a)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x5c)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x26)\n\tENOTCONN        = syscall.Errno(0x6b)\n\tENOTEMPTY       = syscall.Errno(0x27)\n\tENOTNAM         = syscall.Errno(0x76)\n\tENOTRECOVERABLE = syscall.Errno(0x83)\n\tENOTSOCK        = syscall.Errno(0x58)\n\tENOTSUP         = syscall.Errno(0x5f)\n\tENOTUNIQ        = syscall.Errno(0x4c)\n\tEOPNOTSUPP      = syscall.Errno(0x5f)\n\tEOVERFLOW       = syscall.Errno(0x4b)\n\tEOWNERDEAD      = syscall.Errno(0x82)\n\tEPFNOSUPPORT    = syscall.Errno(0x60)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x5d)\n\tEPROTOTYPE      = syscall.Errno(0x5b)\n\tEREMCHG         = syscall.Errno(0x4e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x79)\n\tERESTART        = syscall.Errno(0x55)\n\tERFKILL         = syscall.Errno(0x84)\n\tESHUTDOWN       = syscall.Errno(0x6c)\n\tESOCKTNOSUPPORT = syscall.Errno(0x5e)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x74)\n\tESTRPIPE        = syscall.Errno(0x56)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x6e)\n\tETOOMANYREFS    = syscall.Errno(0x6d)\n\tEUCLEAN         = syscall.Errno(0x75)\n\tEUNATCH         = syscall.Errno(0x31)\n\tEUSERS          = syscall.Errno(0x57)\n\tEXFULL          = syscall.Errno(0x36)\n)\n\n// Signals\nconst (\n\tSIGBUS    = syscall.Signal(0x7)\n\tSIGCHLD   = syscall.Signal(0x11)\n\tSIGCLD    = syscall.Signal(0x11)\n\tSIGCONT   = syscall.Signal(0x12)\n\tSIGIO     = syscall.Signal(0x1d)\n\tSIGPOLL   = syscall.Signal(0x1d)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x1e)\n\tSIGSTKFLT = syscall.Signal(0x10)\n\tSIGSTOP   = syscall.Signal(0x13)\n\tSIGSYS    = syscall.Signal(0x1f)\n\tSIGTSTP   = syscall.Signal(0x14)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x17)\n\tSIGUSR1   = syscall.Signal(0xa)\n\tSIGUSR2   = syscall.Signal(0xc)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{36, \"ENAMETOOLONG\", \"file name too long\"},\n\t{37, \"ENOLCK\", \"no locks available\"},\n\t{38, \"ENOSYS\", \"function not implemented\"},\n\t{39, \"ENOTEMPTY\", \"directory not empty\"},\n\t{40, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{42, \"ENOMSG\", \"no message of desired type\"},\n\t{43, \"EIDRM\", \"identifier removed\"},\n\t{44, \"ECHRNG\", \"channel number out of range\"},\n\t{45, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{46, \"EL3HLT\", \"level 3 halted\"},\n\t{47, \"EL3RST\", \"level 3 reset\"},\n\t{48, \"ELNRNG\", \"link number out of range\"},\n\t{49, \"EUNATCH\", \"protocol driver not attached\"},\n\t{50, \"ENOCSI\", \"no CSI structure available\"},\n\t{51, \"EL2HLT\", \"level 2 halted\"},\n\t{52, \"EBADE\", \"invalid exchange\"},\n\t{53, \"EBADR\", \"invalid request descriptor\"},\n\t{54, \"EXFULL\", \"exchange full\"},\n\t{55, \"ENOANO\", \"no anode\"},\n\t{56, \"EBADRQC\", \"invalid request code\"},\n\t{57, \"EBADSLT\", \"invalid slot\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{72, \"EMULTIHOP\", \"multihop attempted\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EBADMSG\", \"bad message\"},\n\t{75, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{76, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{77, \"EBADFD\", \"file descriptor in bad state\"},\n\t{78, \"EREMCHG\", \"remote address changed\"},\n\t{79, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{80, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{81, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{82, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{83, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{84, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{85, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{86, \"ESTRPIPE\", \"streams pipe error\"},\n\t{87, \"EUSERS\", \"too many users\"},\n\t{88, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{89, \"EDESTADDRREQ\", \"destination address required\"},\n\t{90, \"EMSGSIZE\", \"message too long\"},\n\t{91, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{92, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{93, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{94, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{95, \"ENOTSUP\", \"operation not supported\"},\n\t{96, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{97, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{98, \"EADDRINUSE\", \"address already in use\"},\n\t{99, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{100, \"ENETDOWN\", \"network is down\"},\n\t{101, \"ENETUNREACH\", \"network is unreachable\"},\n\t{102, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{103, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{104, \"ECONNRESET\", \"connection reset by peer\"},\n\t{105, \"ENOBUFS\", \"no buffer space available\"},\n\t{106, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{107, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{108, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{109, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{110, \"ETIMEDOUT\", \"connection timed out\"},\n\t{111, \"ECONNREFUSED\", \"connection refused\"},\n\t{112, \"EHOSTDOWN\", \"host is down\"},\n\t{113, \"EHOSTUNREACH\", \"no route to host\"},\n\t{114, \"EALREADY\", \"operation already in progress\"},\n\t{115, \"EINPROGRESS\", \"operation now in progress\"},\n\t{116, \"ESTALE\", \"stale file handle\"},\n\t{117, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{118, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{119, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{120, \"EISNAM\", \"is a named type file\"},\n\t{121, \"EREMOTEIO\", \"remote I/O error\"},\n\t{122, \"EDQUOT\", \"disk quota exceeded\"},\n\t{123, \"ENOMEDIUM\", \"no medium found\"},\n\t{124, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{125, \"ECANCELED\", \"operation canceled\"},\n\t{126, \"ENOKEY\", \"required key not available\"},\n\t{127, \"EKEYEXPIRED\", \"key has expired\"},\n\t{128, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{129, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{130, \"EOWNERDEAD\", \"owner died\"},\n\t{131, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{132, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{133, \"EHWPOISON\", \"memory page has hardware error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGBUS\", \"bus error\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGUSR1\", \"user defined signal 1\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGUSR2\", \"user defined signal 2\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGSTKFLT\", \"stack fault\"},\n\t{17, \"SIGCHLD\", \"child exited\"},\n\t{18, \"SIGCONT\", \"continued\"},\n\t{19, \"SIGSTOP\", \"stopped (signal)\"},\n\t{20, \"SIGTSTP\", \"stopped\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGURG\", \"urgent I/O condition\"},\n\t{24, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"file size limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window changed\"},\n\t{29, \"SIGIO\", \"I/O possible\"},\n\t{30, \"SIGPWR\", \"power failure\"},\n\t{31, \"SIGSYS\", \"bad system call\"},\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/amd64/include -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/amd64/include -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x1008\n\tB115200                          = 0x1002\n\tB1152000                         = 0x1009\n\tB1500000                         = 0x100a\n\tB2000000                         = 0x100b\n\tB230400                          = 0x1003\n\tB2500000                         = 0x100c\n\tB3000000                         = 0x100d\n\tB3500000                         = 0x100e\n\tB4000000                         = 0x100f\n\tB460800                          = 0x1004\n\tB500000                          = 0x1005\n\tB57600                           = 0x1001\n\tB576000                          = 0x1006\n\tB921600                          = 0x1007\n\tBLKALIGNOFF                      = 0x127a\n\tBLKBSZGET                        = 0x80081270\n\tBLKBSZSET                        = 0x40081271\n\tBLKDISCARD                       = 0x1277\n\tBLKDISCARDZEROES                 = 0x127c\n\tBLKFLSBUF                        = 0x1261\n\tBLKFRAGET                        = 0x1265\n\tBLKFRASET                        = 0x1264\n\tBLKGETDISKSEQ                    = 0x80081280\n\tBLKGETSIZE                       = 0x1260\n\tBLKGETSIZE64                     = 0x80081272\n\tBLKIOMIN                         = 0x1278\n\tBLKIOOPT                         = 0x1279\n\tBLKPBSZGET                       = 0x127b\n\tBLKRAGET                         = 0x1263\n\tBLKRASET                         = 0x1262\n\tBLKROGET                         = 0x125e\n\tBLKROSET                         = 0x125d\n\tBLKROTATIONAL                    = 0x127e\n\tBLKRRPART                        = 0x125f\n\tBLKSECDISCARD                    = 0x127d\n\tBLKSECTGET                       = 0x1267\n\tBLKSECTSET                       = 0x1266\n\tBLKSSZGET                        = 0x1268\n\tBLKZEROOUT                       = 0x127f\n\tBOTHER                           = 0x1000\n\tBS1                              = 0x2000\n\tBSDLY                            = 0x2000\n\tCBAUD                            = 0x100f\n\tCBAUDEX                          = 0x1000\n\tCIBAUD                           = 0x100f0000\n\tCLOCAL                           = 0x800\n\tCR1                              = 0x200\n\tCR2                              = 0x400\n\tCR3                              = 0x600\n\tCRDLY                            = 0x600\n\tCREAD                            = 0x80\n\tCS6                              = 0x10\n\tCS7                              = 0x20\n\tCS8                              = 0x30\n\tCSIZE                            = 0x30\n\tCSTOPB                           = 0x40\n\tDM_MPATH_PROBE_PATHS             = 0xfd12\n\tECCGETLAYOUT                     = 0x81484d11\n\tECCGETSTATS                      = 0x80104d12\n\tECHOCTL                          = 0x200\n\tECHOE                            = 0x10\n\tECHOK                            = 0x20\n\tECHOKE                           = 0x800\n\tECHONL                           = 0x40\n\tECHOPRT                          = 0x400\n\tEFD_CLOEXEC                      = 0x80000\n\tEFD_NONBLOCK                     = 0x800\n\tEPIOCGPARAMS                     = 0x80088a02\n\tEPIOCSPARAMS                     = 0x40088a01\n\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000\n\tFF1                              = 0x8000\n\tFFDLY                            = 0x8000\n\tFICLONE                          = 0x40049409\n\tFICLONERANGE                     = 0x4020940d\n\tFLUSHO                           = 0x1000\n\tFP_XSTATE_MAGIC2                 = 0x46505845\n\tFS_IOC_ENABLE_VERITY             = 0x40806685\n\tFS_IOC_GETFLAGS                  = 0x80086601\n\tFS_IOC_GET_ENCRYPTION_NONCE      = 0x8010661b\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x400c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x40106614\n\tFS_IOC_SETFLAGS                  = 0x40086602\n\tFS_IOC_SET_ENCRYPTION_POLICY     = 0x800c6613\n\tF_GETLK                          = 0x5\n\tF_GETLK64                        = 0x5\n\tF_GETOWN                         = 0x9\n\tF_RDLCK                          = 0x0\n\tF_SETLK                          = 0x6\n\tF_SETLK64                        = 0x6\n\tF_SETLKW                         = 0x7\n\tF_SETLKW64                       = 0x7\n\tF_SETOWN                         = 0x8\n\tF_UNLCK                          = 0x2\n\tF_WRLCK                          = 0x1\n\tHIDIOCGRAWINFO                   = 0x80084803\n\tHIDIOCGRDESC                     = 0x90044802\n\tHIDIOCGRDESCSIZE                 = 0x80044801\n\tHIDIOCREVOKE                     = 0x4004480d\n\tHUPCL                            = 0x400\n\tICANON                           = 0x2\n\tIEXTEN                           = 0x8000\n\tIN_CLOEXEC                       = 0x80000\n\tIN_NONBLOCK                      = 0x800\n\tIOCTL_MEI_NOTIFY_GET             = 0x80044803\n\tIOCTL_MEI_NOTIFY_SET             = 0x40044802\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x7b9\n\tIPV6_FLOWINFO_MASK               = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK              = 0xffff0f00\n\tISIG                             = 0x1\n\tIUCLC                            = 0x200\n\tIXOFF                            = 0x1000\n\tIXON                             = 0x400\n\tMAP_32BIT                        = 0x40\n\tMAP_ABOVE4G                      = 0x80\n\tMAP_ANON                         = 0x20\n\tMAP_ANONYMOUS                    = 0x20\n\tMAP_DENYWRITE                    = 0x800\n\tMAP_EXECUTABLE                   = 0x1000\n\tMAP_GROWSDOWN                    = 0x100\n\tMAP_HUGETLB                      = 0x40000\n\tMAP_LOCKED                       = 0x2000\n\tMAP_NONBLOCK                     = 0x10000\n\tMAP_NORESERVE                    = 0x4000\n\tMAP_POPULATE                     = 0x8000\n\tMAP_STACK                        = 0x20000\n\tMAP_SYNC                         = 0x80000\n\tMCL_CURRENT                      = 0x1\n\tMCL_FUTURE                       = 0x2\n\tMCL_ONFAULT                      = 0x4\n\tMEMERASE                         = 0x40084d02\n\tMEMERASE64                       = 0x40104d14\n\tMEMGETBADBLOCK                   = 0x40084d0b\n\tMEMGETINFO                       = 0x80204d01\n\tMEMGETOOBSEL                     = 0x80c84d0a\n\tMEMGETREGIONCOUNT                = 0x80044d07\n\tMEMISLOCKED                      = 0x80084d17\n\tMEMLOCK                          = 0x40084d05\n\tMEMREAD                          = 0xc0404d1a\n\tMEMREADOOB                       = 0xc0104d04\n\tMEMSETBADBLOCK                   = 0x40084d0c\n\tMEMUNLOCK                        = 0x40084d06\n\tMEMWRITEOOB                      = 0xc0104d03\n\tMTDFILEMODE                      = 0x4d13\n\tNFDBITS                          = 0x40\n\tNLDLY                            = 0x100\n\tNOFLSH                           = 0x80\n\tNS_GET_MNTNS_ID                  = 0x8008b705\n\tNS_GET_NSTYPE                    = 0xb703\n\tNS_GET_OWNER_UID                 = 0xb704\n\tNS_GET_PARENT                    = 0xb702\n\tNS_GET_PID_FROM_PIDNS            = 0x8004b706\n\tNS_GET_PID_IN_PIDNS              = 0x8004b708\n\tNS_GET_TGID_FROM_PIDNS           = 0x8004b707\n\tNS_GET_TGID_IN_PIDNS             = 0x8004b709\n\tNS_GET_USERNS                    = 0xb701\n\tOLCUC                            = 0x2\n\tONLCR                            = 0x4\n\tOTPERASE                         = 0x400c4d19\n\tOTPGETREGIONCOUNT                = 0x40044d0e\n\tOTPGETREGIONINFO                 = 0x400c4d0f\n\tOTPLOCK                          = 0x800c4d10\n\tOTPSELECT                        = 0x80044d0d\n\tO_APPEND                         = 0x400\n\tO_ASYNC                          = 0x2000\n\tO_CLOEXEC                        = 0x80000\n\tO_CREAT                          = 0x40\n\tO_DIRECT                         = 0x4000\n\tO_DIRECTORY                      = 0x10000\n\tO_DSYNC                          = 0x1000\n\tO_EXCL                           = 0x80\n\tO_FSYNC                          = 0x101000\n\tO_LARGEFILE                      = 0x0\n\tO_NDELAY                         = 0x800\n\tO_NOATIME                        = 0x40000\n\tO_NOCTTY                         = 0x100\n\tO_NOFOLLOW                       = 0x20000\n\tO_NONBLOCK                       = 0x800\n\tO_PATH                           = 0x200000\n\tO_RSYNC                          = 0x101000\n\tO_SYNC                           = 0x101000\n\tO_TMPFILE                        = 0x410000\n\tO_TRUNC                          = 0x200\n\tPARENB                           = 0x100\n\tPARODD                           = 0x200\n\tPENDIN                           = 0x4000\n\tPERF_EVENT_IOC_DISABLE           = 0x2401\n\tPERF_EVENT_IOC_ENABLE            = 0x2400\n\tPERF_EVENT_IOC_ID                = 0x80082407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4008240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT      = 0x40042409\n\tPERF_EVENT_IOC_PERIOD            = 0x40082404\n\tPERF_EVENT_IOC_QUERY_BPF         = 0xc008240a\n\tPERF_EVENT_IOC_REFRESH           = 0x2402\n\tPERF_EVENT_IOC_RESET             = 0x2403\n\tPERF_EVENT_IOC_SET_BPF           = 0x40042408\n\tPERF_EVENT_IOC_SET_FILTER        = 0x40082406\n\tPERF_EVENT_IOC_SET_OUTPUT        = 0x2405\n\tPPPIOCATTACH                     = 0x4004743d\n\tPPPIOCATTCHAN                    = 0x40047438\n\tPPPIOCBRIDGECHAN                 = 0x40047435\n\tPPPIOCCONNECT                    = 0x4004743a\n\tPPPIOCDETACH                     = 0x4004743c\n\tPPPIOCDISCONN                    = 0x7439\n\tPPPIOCGASYNCMAP                  = 0x80047458\n\tPPPIOCGCHAN                      = 0x80047437\n\tPPPIOCGDEBUG                     = 0x80047441\n\tPPPIOCGFLAGS                     = 0x8004745a\n\tPPPIOCGIDLE                      = 0x8010743f\n\tPPPIOCGIDLE32                    = 0x8008743f\n\tPPPIOCGIDLE64                    = 0x8010743f\n\tPPPIOCGL2TPSTATS                 = 0x80487436\n\tPPPIOCGMRU                       = 0x80047453\n\tPPPIOCGRASYNCMAP                 = 0x80047455\n\tPPPIOCGUNIT                      = 0x80047456\n\tPPPIOCGXASYNCMAP                 = 0x80207450\n\tPPPIOCSACTIVE                    = 0x40107446\n\tPPPIOCSASYNCMAP                  = 0x40047457\n\tPPPIOCSCOMPRESS                  = 0x4010744d\n\tPPPIOCSDEBUG                     = 0x40047440\n\tPPPIOCSFLAGS                     = 0x40047459\n\tPPPIOCSMAXCID                    = 0x40047451\n\tPPPIOCSMRRU                      = 0x4004743b\n\tPPPIOCSMRU                       = 0x40047452\n\tPPPIOCSNPMODE                    = 0x4008744b\n\tPPPIOCSPASS                      = 0x40107447\n\tPPPIOCSRASYNCMAP                 = 0x40047454\n\tPPPIOCSXASYNCMAP                 = 0x4020744f\n\tPPPIOCUNBRIDGECHAN               = 0x7434\n\tPPPIOCXFERUNIT                   = 0x744e\n\tPR_SET_PTRACER_ANY               = 0xffffffffffffffff\n\tPTP_CLOCK_GETCAPS                = 0x80503d01\n\tPTP_CLOCK_GETCAPS2               = 0x80503d0a\n\tPTP_ENABLE_PPS                   = 0x40043d04\n\tPTP_ENABLE_PPS2                  = 0x40043d0d\n\tPTP_EXTTS_REQUEST                = 0x40103d02\n\tPTP_EXTTS_REQUEST2               = 0x40103d0b\n\tPTP_MASK_CLEAR_ALL               = 0x3d13\n\tPTP_MASK_EN_SINGLE               = 0x40043d14\n\tPTP_PEROUT_REQUEST               = 0x40383d03\n\tPTP_PEROUT_REQUEST2              = 0x40383d0c\n\tPTP_PIN_SETFUNC                  = 0x40603d07\n\tPTP_PIN_SETFUNC2                 = 0x40603d10\n\tPTP_SYS_OFFSET                   = 0x43403d05\n\tPTP_SYS_OFFSET2                  = 0x43403d0e\n\tPTRACE_ARCH_PRCTL                = 0x1e\n\tPTRACE_GETFPREGS                 = 0xe\n\tPTRACE_GETFPXREGS                = 0x12\n\tPTRACE_GET_THREAD_AREA           = 0x19\n\tPTRACE_OLDSETOPTIONS             = 0x15\n\tPTRACE_SETFPREGS                 = 0xf\n\tPTRACE_SETFPXREGS                = 0x13\n\tPTRACE_SET_THREAD_AREA           = 0x1a\n\tPTRACE_SINGLEBLOCK               = 0x21\n\tPTRACE_SYSEMU                    = 0x1f\n\tPTRACE_SYSEMU_SINGLESTEP         = 0x20\n\tRLIMIT_AS                        = 0x9\n\tRLIMIT_MEMLOCK                   = 0x8\n\tRLIMIT_NOFILE                    = 0x7\n\tRLIMIT_NPROC                     = 0x6\n\tRLIMIT_RSS                       = 0x5\n\tRNDADDENTROPY                    = 0x40085203\n\tRNDADDTOENTCNT                   = 0x40045201\n\tRNDCLEARPOOL                     = 0x5206\n\tRNDGETENTCNT                     = 0x80045200\n\tRNDGETPOOL                       = 0x80085202\n\tRNDRESEEDCRNG                    = 0x5207\n\tRNDZAPENTCNT                     = 0x5204\n\tRTC_AIE_OFF                      = 0x7002\n\tRTC_AIE_ON                       = 0x7001\n\tRTC_ALM_READ                     = 0x80247008\n\tRTC_ALM_SET                      = 0x40247007\n\tRTC_EPOCH_READ                   = 0x8008700d\n\tRTC_EPOCH_SET                    = 0x4008700e\n\tRTC_IRQP_READ                    = 0x8008700b\n\tRTC_IRQP_SET                     = 0x4008700c\n\tRTC_PARAM_GET                    = 0x40187013\n\tRTC_PARAM_SET                    = 0x40187014\n\tRTC_PIE_OFF                      = 0x7006\n\tRTC_PIE_ON                       = 0x7005\n\tRTC_PLL_GET                      = 0x80207011\n\tRTC_PLL_SET                      = 0x40207012\n\tRTC_RD_TIME                      = 0x80247009\n\tRTC_SET_TIME                     = 0x4024700a\n\tRTC_UIE_OFF                      = 0x7004\n\tRTC_UIE_ON                       = 0x7003\n\tRTC_VL_CLR                       = 0x7014\n\tRTC_VL_READ                      = 0x80047013\n\tRTC_WIE_OFF                      = 0x7010\n\tRTC_WIE_ON                       = 0x700f\n\tRTC_WKALM_RD                     = 0x80287010\n\tRTC_WKALM_SET                    = 0x4028700f\n\tSCM_DEVMEM_DMABUF                = 0x4f\n\tSCM_DEVMEM_LINEAR                = 0x4e\n\tSCM_TIMESTAMPING                 = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS       = 0x36\n\tSCM_TIMESTAMPING_PKTINFO         = 0x3a\n\tSCM_TIMESTAMPNS                  = 0x23\n\tSCM_TS_OPT_ID                    = 0x51\n\tSCM_TXTIME                       = 0x3d\n\tSCM_WIFI_STATUS                  = 0x29\n\tSECCOMP_IOCTL_NOTIF_ADDFD        = 0x40182103\n\tSECCOMP_IOCTL_NOTIF_ID_VALID     = 0x40082102\n\tSECCOMP_IOCTL_NOTIF_SET_FLAGS    = 0x40082104\n\tSFD_CLOEXEC                      = 0x80000\n\tSFD_NONBLOCK                     = 0x800\n\tSIOCATMARK                       = 0x8905\n\tSIOCGPGRP                        = 0x8904\n\tSIOCGSTAMPNS_NEW                 = 0x80108907\n\tSIOCGSTAMP_NEW                   = 0x80108906\n\tSIOCINQ                          = 0x541b\n\tSIOCOUTQ                         = 0x5411\n\tSIOCSPGRP                        = 0x8902\n\tSOCK_CLOEXEC                     = 0x80000\n\tSOCK_DGRAM                       = 0x2\n\tSOCK_NONBLOCK                    = 0x800\n\tSOCK_STREAM                      = 0x1\n\tSOL_SOCKET                       = 0x1\n\tSO_ACCEPTCONN                    = 0x1e\n\tSO_ATTACH_BPF                    = 0x32\n\tSO_ATTACH_REUSEPORT_CBPF         = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF         = 0x34\n\tSO_BINDTODEVICE                  = 0x19\n\tSO_BINDTOIFINDEX                 = 0x3e\n\tSO_BPF_EXTENSIONS                = 0x30\n\tSO_BROADCAST                     = 0x6\n\tSO_BSDCOMPAT                     = 0xe\n\tSO_BUF_LOCK                      = 0x48\n\tSO_BUSY_POLL                     = 0x2e\n\tSO_BUSY_POLL_BUDGET              = 0x46\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\n\tSO_DEVMEM_DMABUF                 = 0x4f\n\tSO_DEVMEM_DONTNEED               = 0x50\n\tSO_DEVMEM_LINEAR                 = 0x4e\n\tSO_DOMAIN                        = 0x27\n\tSO_DONTROUTE                     = 0x5\n\tSO_ERROR                         = 0x4\n\tSO_INCOMING_CPU                  = 0x31\n\tSO_INCOMING_NAPI_ID              = 0x38\n\tSO_KEEPALIVE                     = 0x9\n\tSO_LINGER                        = 0xd\n\tSO_LOCK_FILTER                   = 0x2c\n\tSO_MARK                          = 0x24\n\tSO_MAX_PACING_RATE               = 0x2f\n\tSO_MEMINFO                       = 0x37\n\tSO_NETNS_COOKIE                  = 0x47\n\tSO_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0xa\n\tSO_PASSCRED                      = 0x10\n\tSO_PASSPIDFD                     = 0x4c\n\tSO_PASSRIGHTS                    = 0x53\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x11\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERPIDFD                     = 0x4d\n\tSO_PEERSEC                       = 0x1f\n\tSO_PREFER_BUSY_POLL              = 0x45\n\tSO_PROTOCOL                      = 0x26\n\tSO_RCVBUF                        = 0x8\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x12\n\tSO_RCVMARK                       = 0x4b\n\tSO_RCVPRIORITY                   = 0x52\n\tSO_RCVTIMEO                      = 0x14\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x14\n\tSO_RESERVE_MEM                   = 0x49\n\tSO_REUSEADDR                     = 0x2\n\tSO_REUSEPORT                     = 0xf\n\tSO_RXQ_OVFL                      = 0x28\n\tSO_SECURITY_AUTHENTICATION       = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK   = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT = 0x17\n\tSO_SELECT_ERR_QUEUE              = 0x2d\n\tSO_SNDBUF                        = 0x7\n\tSO_SNDBUFFORCE                   = 0x20\n\tSO_SNDLOWAT                      = 0x13\n\tSO_SNDTIMEO                      = 0x15\n\tSO_SNDTIMEO_NEW                  = 0x43\n\tSO_SNDTIMEO_OLD                  = 0x15\n\tSO_TIMESTAMPING                  = 0x25\n\tSO_TIMESTAMPING_NEW              = 0x41\n\tSO_TIMESTAMPING_OLD              = 0x25\n\tSO_TIMESTAMPNS                   = 0x23\n\tSO_TIMESTAMPNS_NEW               = 0x40\n\tSO_TIMESTAMPNS_OLD               = 0x23\n\tSO_TIMESTAMP_NEW                 = 0x3f\n\tSO_TXREHASH                      = 0x4a\n\tSO_TXTIME                        = 0x3d\n\tSO_TYPE                          = 0x3\n\tSO_WIFI_STATUS                   = 0x29\n\tSO_ZEROCOPY                      = 0x3c\n\tTAB1                             = 0x800\n\tTAB2                             = 0x1000\n\tTAB3                             = 0x1800\n\tTABDLY                           = 0x1800\n\tTCFLSH                           = 0x540b\n\tTCGETA                           = 0x5405\n\tTCGETS                           = 0x5401\n\tTCGETS2                          = 0x802c542a\n\tTCGETX                           = 0x5432\n\tTCSAFLUSH                        = 0x2\n\tTCSBRK                           = 0x5409\n\tTCSBRKP                          = 0x5425\n\tTCSETA                           = 0x5406\n\tTCSETAF                          = 0x5408\n\tTCSETAW                          = 0x5407\n\tTCSETS                           = 0x5402\n\tTCSETS2                          = 0x402c542b\n\tTCSETSF                          = 0x5404\n\tTCSETSF2                         = 0x402c542d\n\tTCSETSW                          = 0x5403\n\tTCSETSW2                         = 0x402c542c\n\tTCSETX                           = 0x5433\n\tTCSETXF                          = 0x5434\n\tTCSETXW                          = 0x5435\n\tTCXONC                           = 0x540a\n\tTFD_CLOEXEC                      = 0x80000\n\tTFD_NONBLOCK                     = 0x800\n\tTIOCCBRK                         = 0x5428\n\tTIOCCONS                         = 0x541d\n\tTIOCEXCL                         = 0x540c\n\tTIOCGDEV                         = 0x80045432\n\tTIOCGETD                         = 0x5424\n\tTIOCGEXCL                        = 0x80045440\n\tTIOCGICOUNT                      = 0x545d\n\tTIOCGISO7816                     = 0x80285442\n\tTIOCGLCKTRMIOS                   = 0x5456\n\tTIOCGPGRP                        = 0x540f\n\tTIOCGPKT                         = 0x80045438\n\tTIOCGPTLCK                       = 0x80045439\n\tTIOCGPTN                         = 0x80045430\n\tTIOCGPTPEER                      = 0x5441\n\tTIOCGRS485                       = 0x542e\n\tTIOCGSERIAL                      = 0x541e\n\tTIOCGSID                         = 0x5429\n\tTIOCGSOFTCAR                     = 0x5419\n\tTIOCGWINSZ                       = 0x5413\n\tTIOCINQ                          = 0x541b\n\tTIOCLINUX                        = 0x541c\n\tTIOCMBIC                         = 0x5417\n\tTIOCMBIS                         = 0x5416\n\tTIOCMGET                         = 0x5415\n\tTIOCMIWAIT                       = 0x545c\n\tTIOCMSET                         = 0x5418\n\tTIOCM_CAR                        = 0x40\n\tTIOCM_CD                         = 0x40\n\tTIOCM_CTS                        = 0x20\n\tTIOCM_DSR                        = 0x100\n\tTIOCM_RI                         = 0x80\n\tTIOCM_RNG                        = 0x80\n\tTIOCM_SR                         = 0x10\n\tTIOCM_ST                         = 0x8\n\tTIOCNOTTY                        = 0x5422\n\tTIOCNXCL                         = 0x540d\n\tTIOCOUTQ                         = 0x5411\n\tTIOCPKT                          = 0x5420\n\tTIOCSBRK                         = 0x5427\n\tTIOCSCTTY                        = 0x540e\n\tTIOCSERCONFIG                    = 0x5453\n\tTIOCSERGETLSR                    = 0x5459\n\tTIOCSERGETMULTI                  = 0x545a\n\tTIOCSERGSTRUCT                   = 0x5458\n\tTIOCSERGWILD                     = 0x5454\n\tTIOCSERSETMULTI                  = 0x545b\n\tTIOCSERSWILD                     = 0x5455\n\tTIOCSER_TEMT                     = 0x1\n\tTIOCSETD                         = 0x5423\n\tTIOCSIG                          = 0x40045436\n\tTIOCSISO7816                     = 0xc0285443\n\tTIOCSLCKTRMIOS                   = 0x5457\n\tTIOCSPGRP                        = 0x5410\n\tTIOCSPTLCK                       = 0x40045431\n\tTIOCSRS485                       = 0x542f\n\tTIOCSSERIAL                      = 0x541f\n\tTIOCSSOFTCAR                     = 0x541a\n\tTIOCSTI                          = 0x5412\n\tTIOCSWINSZ                       = 0x5414\n\tTIOCVHANGUP                      = 0x5437\n\tTOSTOP                           = 0x100\n\tTUNATTACHFILTER                  = 0x401054d5\n\tTUNDETACHFILTER                  = 0x401054d6\n\tTUNGETDEVNETNS                   = 0x54e3\n\tTUNGETFEATURES                   = 0x800454cf\n\tTUNGETFILTER                     = 0x801054db\n\tTUNGETIFF                        = 0x800454d2\n\tTUNGETSNDBUF                     = 0x800454d3\n\tTUNGETVNETBE                     = 0x800454df\n\tTUNGETVNETHDRSZ                  = 0x800454d7\n\tTUNGETVNETLE                     = 0x800454dd\n\tTUNSETCARRIER                    = 0x400454e2\n\tTUNSETDEBUG                      = 0x400454c9\n\tTUNSETFILTEREBPF                 = 0x800454e1\n\tTUNSETGROUP                      = 0x400454ce\n\tTUNSETIFF                        = 0x400454ca\n\tTUNSETIFINDEX                    = 0x400454da\n\tTUNSETLINK                       = 0x400454cd\n\tTUNSETNOCSUM                     = 0x400454c8\n\tTUNSETOFFLOAD                    = 0x400454d0\n\tTUNSETOWNER                      = 0x400454cc\n\tTUNSETPERSIST                    = 0x400454cb\n\tTUNSETQUEUE                      = 0x400454d9\n\tTUNSETSNDBUF                     = 0x400454d4\n\tTUNSETSTEERINGEBPF               = 0x800454e0\n\tTUNSETTXFILTER                   = 0x400454d1\n\tTUNSETVNETBE                     = 0x400454de\n\tTUNSETVNETHDRSZ                  = 0x400454d8\n\tTUNSETVNETLE                     = 0x400454dc\n\tUBI_IOCATT                       = 0x40186f40\n\tUBI_IOCDET                       = 0x40046f41\n\tUBI_IOCEBCH                      = 0x40044f02\n\tUBI_IOCEBER                      = 0x40044f01\n\tUBI_IOCEBISMAP                   = 0x80044f05\n\tUBI_IOCEBMAP                     = 0x40084f03\n\tUBI_IOCEBUNMAP                   = 0x40044f04\n\tUBI_IOCMKVOL                     = 0x40986f00\n\tUBI_IOCRMVOL                     = 0x40046f01\n\tUBI_IOCRNVOL                     = 0x51106f03\n\tUBI_IOCRPEB                      = 0x40046f04\n\tUBI_IOCRSVOL                     = 0x400c6f02\n\tUBI_IOCSETVOLPROP                = 0x40104f06\n\tUBI_IOCSPEB                      = 0x40046f05\n\tUBI_IOCVOLCRBLK                  = 0x40804f07\n\tUBI_IOCVOLRMBLK                  = 0x4f08\n\tUBI_IOCVOLUP                     = 0x40084f00\n\tVDISCARD                         = 0xd\n\tVEOF                             = 0x4\n\tVEOL                             = 0xb\n\tVEOL2                            = 0x10\n\tVMIN                             = 0x6\n\tVREPRINT                         = 0xc\n\tVSTART                           = 0x8\n\tVSTOP                            = 0x9\n\tVSUSP                            = 0xa\n\tVSWTC                            = 0x7\n\tVT1                              = 0x4000\n\tVTDLY                            = 0x4000\n\tVTIME                            = 0x5\n\tVWERASE                          = 0xe\n\tWDIOC_GETBOOTSTATUS              = 0x80045702\n\tWDIOC_GETPRETIMEOUT              = 0x80045709\n\tWDIOC_GETSTATUS                  = 0x80045701\n\tWDIOC_GETSUPPORT                 = 0x80285700\n\tWDIOC_GETTEMP                    = 0x80045703\n\tWDIOC_GETTIMELEFT                = 0x8004570a\n\tWDIOC_GETTIMEOUT                 = 0x80045707\n\tWDIOC_KEEPALIVE                  = 0x80045705\n\tWDIOC_SETOPTIONS                 = 0x80045704\n\tWORDSIZE                         = 0x40\n\tXCASE                            = 0x4\n\tXTABS                            = 0x1800\n\t_HIDIOCGRAWNAME                  = 0x80804804\n\t_HIDIOCGRAWPHYS                  = 0x80404805\n\t_HIDIOCGRAWUNIQ                  = 0x80404808\n)\n\n// Errors\nconst (\n\tEADDRINUSE      = syscall.Errno(0x62)\n\tEADDRNOTAVAIL   = syscall.Errno(0x63)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x61)\n\tEALREADY        = syscall.Errno(0x72)\n\tEBADE           = syscall.Errno(0x34)\n\tEBADFD          = syscall.Errno(0x4d)\n\tEBADMSG         = syscall.Errno(0x4a)\n\tEBADR           = syscall.Errno(0x35)\n\tEBADRQC         = syscall.Errno(0x38)\n\tEBADSLT         = syscall.Errno(0x39)\n\tEBFONT          = syscall.Errno(0x3b)\n\tECANCELED       = syscall.Errno(0x7d)\n\tECHRNG          = syscall.Errno(0x2c)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x67)\n\tECONNREFUSED    = syscall.Errno(0x6f)\n\tECONNRESET      = syscall.Errno(0x68)\n\tEDEADLK         = syscall.Errno(0x23)\n\tEDEADLOCK       = syscall.Errno(0x23)\n\tEDESTADDRREQ    = syscall.Errno(0x59)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x7a)\n\tEHOSTDOWN       = syscall.Errno(0x70)\n\tEHOSTUNREACH    = syscall.Errno(0x71)\n\tEHWPOISON       = syscall.Errno(0x85)\n\tEIDRM           = syscall.Errno(0x2b)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x73)\n\tEISCONN         = syscall.Errno(0x6a)\n\tEISNAM          = syscall.Errno(0x78)\n\tEKEYEXPIRED     = syscall.Errno(0x7f)\n\tEKEYREJECTED    = syscall.Errno(0x81)\n\tEKEYREVOKED     = syscall.Errno(0x80)\n\tEL2HLT          = syscall.Errno(0x33)\n\tEL2NSYNC        = syscall.Errno(0x2d)\n\tEL3HLT          = syscall.Errno(0x2e)\n\tEL3RST          = syscall.Errno(0x2f)\n\tELIBACC         = syscall.Errno(0x4f)\n\tELIBBAD         = syscall.Errno(0x50)\n\tELIBEXEC        = syscall.Errno(0x53)\n\tELIBMAX         = syscall.Errno(0x52)\n\tELIBSCN         = syscall.Errno(0x51)\n\tELNRNG          = syscall.Errno(0x30)\n\tELOOP           = syscall.Errno(0x28)\n\tEMEDIUMTYPE     = syscall.Errno(0x7c)\n\tEMSGSIZE        = syscall.Errno(0x5a)\n\tEMULTIHOP       = syscall.Errno(0x48)\n\tENAMETOOLONG    = syscall.Errno(0x24)\n\tENAVAIL         = syscall.Errno(0x77)\n\tENETDOWN        = syscall.Errno(0x64)\n\tENETRESET       = syscall.Errno(0x66)\n\tENETUNREACH     = syscall.Errno(0x65)\n\tENOANO          = syscall.Errno(0x37)\n\tENOBUFS         = syscall.Errno(0x69)\n\tENOCSI          = syscall.Errno(0x32)\n\tENODATA         = syscall.Errno(0x3d)\n\tENOKEY          = syscall.Errno(0x7e)\n\tENOLCK          = syscall.Errno(0x25)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x7b)\n\tENOMSG          = syscall.Errno(0x2a)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x5c)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x26)\n\tENOTCONN        = syscall.Errno(0x6b)\n\tENOTEMPTY       = syscall.Errno(0x27)\n\tENOTNAM         = syscall.Errno(0x76)\n\tENOTRECOVERABLE = syscall.Errno(0x83)\n\tENOTSOCK        = syscall.Errno(0x58)\n\tENOTSUP         = syscall.Errno(0x5f)\n\tENOTUNIQ        = syscall.Errno(0x4c)\n\tEOPNOTSUPP      = syscall.Errno(0x5f)\n\tEOVERFLOW       = syscall.Errno(0x4b)\n\tEOWNERDEAD      = syscall.Errno(0x82)\n\tEPFNOSUPPORT    = syscall.Errno(0x60)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x5d)\n\tEPROTOTYPE      = syscall.Errno(0x5b)\n\tEREMCHG         = syscall.Errno(0x4e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x79)\n\tERESTART        = syscall.Errno(0x55)\n\tERFKILL         = syscall.Errno(0x84)\n\tESHUTDOWN       = syscall.Errno(0x6c)\n\tESOCKTNOSUPPORT = syscall.Errno(0x5e)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x74)\n\tESTRPIPE        = syscall.Errno(0x56)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x6e)\n\tETOOMANYREFS    = syscall.Errno(0x6d)\n\tEUCLEAN         = syscall.Errno(0x75)\n\tEUNATCH         = syscall.Errno(0x31)\n\tEUSERS          = syscall.Errno(0x57)\n\tEXFULL          = syscall.Errno(0x36)\n)\n\n// Signals\nconst (\n\tSIGBUS    = syscall.Signal(0x7)\n\tSIGCHLD   = syscall.Signal(0x11)\n\tSIGCLD    = syscall.Signal(0x11)\n\tSIGCONT   = syscall.Signal(0x12)\n\tSIGIO     = syscall.Signal(0x1d)\n\tSIGPOLL   = syscall.Signal(0x1d)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x1e)\n\tSIGSTKFLT = syscall.Signal(0x10)\n\tSIGSTOP   = syscall.Signal(0x13)\n\tSIGSYS    = syscall.Signal(0x1f)\n\tSIGTSTP   = syscall.Signal(0x14)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x17)\n\tSIGUSR1   = syscall.Signal(0xa)\n\tSIGUSR2   = syscall.Signal(0xc)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{36, \"ENAMETOOLONG\", \"file name too long\"},\n\t{37, \"ENOLCK\", \"no locks available\"},\n\t{38, \"ENOSYS\", \"function not implemented\"},\n\t{39, \"ENOTEMPTY\", \"directory not empty\"},\n\t{40, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{42, \"ENOMSG\", \"no message of desired type\"},\n\t{43, \"EIDRM\", \"identifier removed\"},\n\t{44, \"ECHRNG\", \"channel number out of range\"},\n\t{45, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{46, \"EL3HLT\", \"level 3 halted\"},\n\t{47, \"EL3RST\", \"level 3 reset\"},\n\t{48, \"ELNRNG\", \"link number out of range\"},\n\t{49, \"EUNATCH\", \"protocol driver not attached\"},\n\t{50, \"ENOCSI\", \"no CSI structure available\"},\n\t{51, \"EL2HLT\", \"level 2 halted\"},\n\t{52, \"EBADE\", \"invalid exchange\"},\n\t{53, \"EBADR\", \"invalid request descriptor\"},\n\t{54, \"EXFULL\", \"exchange full\"},\n\t{55, \"ENOANO\", \"no anode\"},\n\t{56, \"EBADRQC\", \"invalid request code\"},\n\t{57, \"EBADSLT\", \"invalid slot\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{72, \"EMULTIHOP\", \"multihop attempted\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EBADMSG\", \"bad message\"},\n\t{75, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{76, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{77, \"EBADFD\", \"file descriptor in bad state\"},\n\t{78, \"EREMCHG\", \"remote address changed\"},\n\t{79, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{80, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{81, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{82, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{83, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{84, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{85, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{86, \"ESTRPIPE\", \"streams pipe error\"},\n\t{87, \"EUSERS\", \"too many users\"},\n\t{88, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{89, \"EDESTADDRREQ\", \"destination address required\"},\n\t{90, \"EMSGSIZE\", \"message too long\"},\n\t{91, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{92, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{93, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{94, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{95, \"ENOTSUP\", \"operation not supported\"},\n\t{96, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{97, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{98, \"EADDRINUSE\", \"address already in use\"},\n\t{99, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{100, \"ENETDOWN\", \"network is down\"},\n\t{101, \"ENETUNREACH\", \"network is unreachable\"},\n\t{102, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{103, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{104, \"ECONNRESET\", \"connection reset by peer\"},\n\t{105, \"ENOBUFS\", \"no buffer space available\"},\n\t{106, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{107, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{108, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{109, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{110, \"ETIMEDOUT\", \"connection timed out\"},\n\t{111, \"ECONNREFUSED\", \"connection refused\"},\n\t{112, \"EHOSTDOWN\", \"host is down\"},\n\t{113, \"EHOSTUNREACH\", \"no route to host\"},\n\t{114, \"EALREADY\", \"operation already in progress\"},\n\t{115, \"EINPROGRESS\", \"operation now in progress\"},\n\t{116, \"ESTALE\", \"stale file handle\"},\n\t{117, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{118, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{119, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{120, \"EISNAM\", \"is a named type file\"},\n\t{121, \"EREMOTEIO\", \"remote I/O error\"},\n\t{122, \"EDQUOT\", \"disk quota exceeded\"},\n\t{123, \"ENOMEDIUM\", \"no medium found\"},\n\t{124, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{125, \"ECANCELED\", \"operation canceled\"},\n\t{126, \"ENOKEY\", \"required key not available\"},\n\t{127, \"EKEYEXPIRED\", \"key has expired\"},\n\t{128, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{129, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{130, \"EOWNERDEAD\", \"owner died\"},\n\t{131, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{132, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{133, \"EHWPOISON\", \"memory page has hardware error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGBUS\", \"bus error\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGUSR1\", \"user defined signal 1\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGUSR2\", \"user defined signal 2\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGSTKFLT\", \"stack fault\"},\n\t{17, \"SIGCHLD\", \"child exited\"},\n\t{18, \"SIGCONT\", \"continued\"},\n\t{19, \"SIGSTOP\", \"stopped (signal)\"},\n\t{20, \"SIGTSTP\", \"stopped\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGURG\", \"urgent I/O condition\"},\n\t{24, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"file size limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window changed\"},\n\t{29, \"SIGIO\", \"I/O possible\"},\n\t{30, \"SIGPWR\", \"power failure\"},\n\t{31, \"SIGSYS\", \"bad system call\"},\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/arm/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/arm/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x1008\n\tB115200                          = 0x1002\n\tB1152000                         = 0x1009\n\tB1500000                         = 0x100a\n\tB2000000                         = 0x100b\n\tB230400                          = 0x1003\n\tB2500000                         = 0x100c\n\tB3000000                         = 0x100d\n\tB3500000                         = 0x100e\n\tB4000000                         = 0x100f\n\tB460800                          = 0x1004\n\tB500000                          = 0x1005\n\tB57600                           = 0x1001\n\tB576000                          = 0x1006\n\tB921600                          = 0x1007\n\tBLKALIGNOFF                      = 0x127a\n\tBLKBSZGET                        = 0x80041270\n\tBLKBSZSET                        = 0x40041271\n\tBLKDISCARD                       = 0x1277\n\tBLKDISCARDZEROES                 = 0x127c\n\tBLKFLSBUF                        = 0x1261\n\tBLKFRAGET                        = 0x1265\n\tBLKFRASET                        = 0x1264\n\tBLKGETDISKSEQ                    = 0x80081280\n\tBLKGETSIZE                       = 0x1260\n\tBLKGETSIZE64                     = 0x80041272\n\tBLKIOMIN                         = 0x1278\n\tBLKIOOPT                         = 0x1279\n\tBLKPBSZGET                       = 0x127b\n\tBLKRAGET                         = 0x1263\n\tBLKRASET                         = 0x1262\n\tBLKROGET                         = 0x125e\n\tBLKROSET                         = 0x125d\n\tBLKROTATIONAL                    = 0x127e\n\tBLKRRPART                        = 0x125f\n\tBLKSECDISCARD                    = 0x127d\n\tBLKSECTGET                       = 0x1267\n\tBLKSECTSET                       = 0x1266\n\tBLKSSZGET                        = 0x1268\n\tBLKZEROOUT                       = 0x127f\n\tBOTHER                           = 0x1000\n\tBS1                              = 0x2000\n\tBSDLY                            = 0x2000\n\tCBAUD                            = 0x100f\n\tCBAUDEX                          = 0x1000\n\tCIBAUD                           = 0x100f0000\n\tCLOCAL                           = 0x800\n\tCR1                              = 0x200\n\tCR2                              = 0x400\n\tCR3                              = 0x600\n\tCRDLY                            = 0x600\n\tCREAD                            = 0x80\n\tCS6                              = 0x10\n\tCS7                              = 0x20\n\tCS8                              = 0x30\n\tCSIZE                            = 0x30\n\tCSTOPB                           = 0x40\n\tDM_MPATH_PROBE_PATHS             = 0xfd12\n\tECCGETLAYOUT                     = 0x81484d11\n\tECCGETSTATS                      = 0x80104d12\n\tECHOCTL                          = 0x200\n\tECHOE                            = 0x10\n\tECHOK                            = 0x20\n\tECHOKE                           = 0x800\n\tECHONL                           = 0x40\n\tECHOPRT                          = 0x400\n\tEFD_CLOEXEC                      = 0x80000\n\tEFD_NONBLOCK                     = 0x800\n\tEPIOCGPARAMS                     = 0x80088a02\n\tEPIOCSPARAMS                     = 0x40088a01\n\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000\n\tFF1                              = 0x8000\n\tFFDLY                            = 0x8000\n\tFICLONE                          = 0x40049409\n\tFICLONERANGE                     = 0x4020940d\n\tFLUSHO                           = 0x1000\n\tFS_IOC_ENABLE_VERITY             = 0x40806685\n\tFS_IOC_GETFLAGS                  = 0x80046601\n\tFS_IOC_GET_ENCRYPTION_NONCE      = 0x8010661b\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x400c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x40106614\n\tFS_IOC_SETFLAGS                  = 0x40046602\n\tFS_IOC_SET_ENCRYPTION_POLICY     = 0x800c6613\n\tF_GETLK                          = 0xc\n\tF_GETLK64                        = 0xc\n\tF_GETOWN                         = 0x9\n\tF_RDLCK                          = 0x0\n\tF_SETLK                          = 0xd\n\tF_SETLK64                        = 0xd\n\tF_SETLKW                         = 0xe\n\tF_SETLKW64                       = 0xe\n\tF_SETOWN                         = 0x8\n\tF_UNLCK                          = 0x2\n\tF_WRLCK                          = 0x1\n\tHIDIOCGRAWINFO                   = 0x80084803\n\tHIDIOCGRDESC                     = 0x90044802\n\tHIDIOCGRDESCSIZE                 = 0x80044801\n\tHIDIOCREVOKE                     = 0x4004480d\n\tHUPCL                            = 0x400\n\tICANON                           = 0x2\n\tIEXTEN                           = 0x8000\n\tIN_CLOEXEC                       = 0x80000\n\tIN_NONBLOCK                      = 0x800\n\tIOCTL_MEI_NOTIFY_GET             = 0x80044803\n\tIOCTL_MEI_NOTIFY_SET             = 0x40044802\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x7b9\n\tIPV6_FLOWINFO_MASK               = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK              = 0xffff0f00\n\tISIG                             = 0x1\n\tIUCLC                            = 0x200\n\tIXOFF                            = 0x1000\n\tIXON                             = 0x400\n\tMAP_ANON                         = 0x20\n\tMAP_ANONYMOUS                    = 0x20\n\tMAP_DENYWRITE                    = 0x800\n\tMAP_EXECUTABLE                   = 0x1000\n\tMAP_GROWSDOWN                    = 0x100\n\tMAP_HUGETLB                      = 0x40000\n\tMAP_LOCKED                       = 0x2000\n\tMAP_NONBLOCK                     = 0x10000\n\tMAP_NORESERVE                    = 0x4000\n\tMAP_POPULATE                     = 0x8000\n\tMAP_STACK                        = 0x20000\n\tMAP_SYNC                         = 0x80000\n\tMCL_CURRENT                      = 0x1\n\tMCL_FUTURE                       = 0x2\n\tMCL_ONFAULT                      = 0x4\n\tMEMERASE                         = 0x40084d02\n\tMEMERASE64                       = 0x40104d14\n\tMEMGETBADBLOCK                   = 0x40084d0b\n\tMEMGETINFO                       = 0x80204d01\n\tMEMGETOOBSEL                     = 0x80c84d0a\n\tMEMGETREGIONCOUNT                = 0x80044d07\n\tMEMISLOCKED                      = 0x80084d17\n\tMEMLOCK                          = 0x40084d05\n\tMEMREAD                          = 0xc0404d1a\n\tMEMREADOOB                       = 0xc00c4d04\n\tMEMSETBADBLOCK                   = 0x40084d0c\n\tMEMUNLOCK                        = 0x40084d06\n\tMEMWRITEOOB                      = 0xc00c4d03\n\tMTDFILEMODE                      = 0x4d13\n\tNFDBITS                          = 0x20\n\tNLDLY                            = 0x100\n\tNOFLSH                           = 0x80\n\tNS_GET_MNTNS_ID                  = 0x8008b705\n\tNS_GET_NSTYPE                    = 0xb703\n\tNS_GET_OWNER_UID                 = 0xb704\n\tNS_GET_PARENT                    = 0xb702\n\tNS_GET_PID_FROM_PIDNS            = 0x8004b706\n\tNS_GET_PID_IN_PIDNS              = 0x8004b708\n\tNS_GET_TGID_FROM_PIDNS           = 0x8004b707\n\tNS_GET_TGID_IN_PIDNS             = 0x8004b709\n\tNS_GET_USERNS                    = 0xb701\n\tOLCUC                            = 0x2\n\tONLCR                            = 0x4\n\tOTPERASE                         = 0x400c4d19\n\tOTPGETREGIONCOUNT                = 0x40044d0e\n\tOTPGETREGIONINFO                 = 0x400c4d0f\n\tOTPLOCK                          = 0x800c4d10\n\tOTPSELECT                        = 0x80044d0d\n\tO_APPEND                         = 0x400\n\tO_ASYNC                          = 0x2000\n\tO_CLOEXEC                        = 0x80000\n\tO_CREAT                          = 0x40\n\tO_DIRECT                         = 0x10000\n\tO_DIRECTORY                      = 0x4000\n\tO_DSYNC                          = 0x1000\n\tO_EXCL                           = 0x80\n\tO_FSYNC                          = 0x101000\n\tO_LARGEFILE                      = 0x20000\n\tO_NDELAY                         = 0x800\n\tO_NOATIME                        = 0x40000\n\tO_NOCTTY                         = 0x100\n\tO_NOFOLLOW                       = 0x8000\n\tO_NONBLOCK                       = 0x800\n\tO_PATH                           = 0x200000\n\tO_RSYNC                          = 0x101000\n\tO_SYNC                           = 0x101000\n\tO_TMPFILE                        = 0x404000\n\tO_TRUNC                          = 0x200\n\tPARENB                           = 0x100\n\tPARODD                           = 0x200\n\tPENDIN                           = 0x4000\n\tPERF_EVENT_IOC_DISABLE           = 0x2401\n\tPERF_EVENT_IOC_ENABLE            = 0x2400\n\tPERF_EVENT_IOC_ID                = 0x80042407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4004240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT      = 0x40042409\n\tPERF_EVENT_IOC_PERIOD            = 0x40082404\n\tPERF_EVENT_IOC_QUERY_BPF         = 0xc004240a\n\tPERF_EVENT_IOC_REFRESH           = 0x2402\n\tPERF_EVENT_IOC_RESET             = 0x2403\n\tPERF_EVENT_IOC_SET_BPF           = 0x40042408\n\tPERF_EVENT_IOC_SET_FILTER        = 0x40042406\n\tPERF_EVENT_IOC_SET_OUTPUT        = 0x2405\n\tPPPIOCATTACH                     = 0x4004743d\n\tPPPIOCATTCHAN                    = 0x40047438\n\tPPPIOCBRIDGECHAN                 = 0x40047435\n\tPPPIOCCONNECT                    = 0x4004743a\n\tPPPIOCDETACH                     = 0x4004743c\n\tPPPIOCDISCONN                    = 0x7439\n\tPPPIOCGASYNCMAP                  = 0x80047458\n\tPPPIOCGCHAN                      = 0x80047437\n\tPPPIOCGDEBUG                     = 0x80047441\n\tPPPIOCGFLAGS                     = 0x8004745a\n\tPPPIOCGIDLE                      = 0x8008743f\n\tPPPIOCGIDLE32                    = 0x8008743f\n\tPPPIOCGIDLE64                    = 0x8010743f\n\tPPPIOCGL2TPSTATS                 = 0x80487436\n\tPPPIOCGMRU                       = 0x80047453\n\tPPPIOCGRASYNCMAP                 = 0x80047455\n\tPPPIOCGUNIT                      = 0x80047456\n\tPPPIOCGXASYNCMAP                 = 0x80207450\n\tPPPIOCSACTIVE                    = 0x40087446\n\tPPPIOCSASYNCMAP                  = 0x40047457\n\tPPPIOCSCOMPRESS                  = 0x400c744d\n\tPPPIOCSDEBUG                     = 0x40047440\n\tPPPIOCSFLAGS                     = 0x40047459\n\tPPPIOCSMAXCID                    = 0x40047451\n\tPPPIOCSMRRU                      = 0x4004743b\n\tPPPIOCSMRU                       = 0x40047452\n\tPPPIOCSNPMODE                    = 0x4008744b\n\tPPPIOCSPASS                      = 0x40087447\n\tPPPIOCSRASYNCMAP                 = 0x40047454\n\tPPPIOCSXASYNCMAP                 = 0x4020744f\n\tPPPIOCUNBRIDGECHAN               = 0x7434\n\tPPPIOCXFERUNIT                   = 0x744e\n\tPR_SET_PTRACER_ANY               = 0xffffffff\n\tPTP_CLOCK_GETCAPS                = 0x80503d01\n\tPTP_CLOCK_GETCAPS2               = 0x80503d0a\n\tPTP_ENABLE_PPS                   = 0x40043d04\n\tPTP_ENABLE_PPS2                  = 0x40043d0d\n\tPTP_EXTTS_REQUEST                = 0x40103d02\n\tPTP_EXTTS_REQUEST2               = 0x40103d0b\n\tPTP_MASK_CLEAR_ALL               = 0x3d13\n\tPTP_MASK_EN_SINGLE               = 0x40043d14\n\tPTP_PEROUT_REQUEST               = 0x40383d03\n\tPTP_PEROUT_REQUEST2              = 0x40383d0c\n\tPTP_PIN_SETFUNC                  = 0x40603d07\n\tPTP_PIN_SETFUNC2                 = 0x40603d10\n\tPTP_SYS_OFFSET                   = 0x43403d05\n\tPTP_SYS_OFFSET2                  = 0x43403d0e\n\tPTRACE_GETCRUNCHREGS             = 0x19\n\tPTRACE_GETFDPIC                  = 0x1f\n\tPTRACE_GETFDPIC_EXEC             = 0x0\n\tPTRACE_GETFDPIC_INTERP           = 0x1\n\tPTRACE_GETFPREGS                 = 0xe\n\tPTRACE_GETHBPREGS                = 0x1d\n\tPTRACE_GETVFPREGS                = 0x1b\n\tPTRACE_GETWMMXREGS               = 0x12\n\tPTRACE_GET_THREAD_AREA           = 0x16\n\tPTRACE_OLDSETOPTIONS             = 0x15\n\tPTRACE_SETCRUNCHREGS             = 0x1a\n\tPTRACE_SETFPREGS                 = 0xf\n\tPTRACE_SETHBPREGS                = 0x1e\n\tPTRACE_SETVFPREGS                = 0x1c\n\tPTRACE_SETWMMXREGS               = 0x13\n\tPTRACE_SET_SYSCALL               = 0x17\n\tPT_DATA_ADDR                     = 0x10004\n\tPT_TEXT_ADDR                     = 0x10000\n\tPT_TEXT_END_ADDR                 = 0x10008\n\tRLIMIT_AS                        = 0x9\n\tRLIMIT_MEMLOCK                   = 0x8\n\tRLIMIT_NOFILE                    = 0x7\n\tRLIMIT_NPROC                     = 0x6\n\tRLIMIT_RSS                       = 0x5\n\tRNDADDENTROPY                    = 0x40085203\n\tRNDADDTOENTCNT                   = 0x40045201\n\tRNDCLEARPOOL                     = 0x5206\n\tRNDGETENTCNT                     = 0x80045200\n\tRNDGETPOOL                       = 0x80085202\n\tRNDRESEEDCRNG                    = 0x5207\n\tRNDZAPENTCNT                     = 0x5204\n\tRTC_AIE_OFF                      = 0x7002\n\tRTC_AIE_ON                       = 0x7001\n\tRTC_ALM_READ                     = 0x80247008\n\tRTC_ALM_SET                      = 0x40247007\n\tRTC_EPOCH_READ                   = 0x8004700d\n\tRTC_EPOCH_SET                    = 0x4004700e\n\tRTC_IRQP_READ                    = 0x8004700b\n\tRTC_IRQP_SET                     = 0x4004700c\n\tRTC_PARAM_GET                    = 0x40187013\n\tRTC_PARAM_SET                    = 0x40187014\n\tRTC_PIE_OFF                      = 0x7006\n\tRTC_PIE_ON                       = 0x7005\n\tRTC_PLL_GET                      = 0x801c7011\n\tRTC_PLL_SET                      = 0x401c7012\n\tRTC_RD_TIME                      = 0x80247009\n\tRTC_SET_TIME                     = 0x4024700a\n\tRTC_UIE_OFF                      = 0x7004\n\tRTC_UIE_ON                       = 0x7003\n\tRTC_VL_CLR                       = 0x7014\n\tRTC_VL_READ                      = 0x80047013\n\tRTC_WIE_OFF                      = 0x7010\n\tRTC_WIE_ON                       = 0x700f\n\tRTC_WKALM_RD                     = 0x80287010\n\tRTC_WKALM_SET                    = 0x4028700f\n\tSCM_DEVMEM_DMABUF                = 0x4f\n\tSCM_DEVMEM_LINEAR                = 0x4e\n\tSCM_TIMESTAMPING                 = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS       = 0x36\n\tSCM_TIMESTAMPING_PKTINFO         = 0x3a\n\tSCM_TIMESTAMPNS                  = 0x23\n\tSCM_TS_OPT_ID                    = 0x51\n\tSCM_TXTIME                       = 0x3d\n\tSCM_WIFI_STATUS                  = 0x29\n\tSECCOMP_IOCTL_NOTIF_ADDFD        = 0x40182103\n\tSECCOMP_IOCTL_NOTIF_ID_VALID     = 0x40082102\n\tSECCOMP_IOCTL_NOTIF_SET_FLAGS    = 0x40082104\n\tSFD_CLOEXEC                      = 0x80000\n\tSFD_NONBLOCK                     = 0x800\n\tSIOCATMARK                       = 0x8905\n\tSIOCGPGRP                        = 0x8904\n\tSIOCGSTAMPNS_NEW                 = 0x80108907\n\tSIOCGSTAMP_NEW                   = 0x80108906\n\tSIOCINQ                          = 0x541b\n\tSIOCOUTQ                         = 0x5411\n\tSIOCSPGRP                        = 0x8902\n\tSOCK_CLOEXEC                     = 0x80000\n\tSOCK_DGRAM                       = 0x2\n\tSOCK_NONBLOCK                    = 0x800\n\tSOCK_STREAM                      = 0x1\n\tSOL_SOCKET                       = 0x1\n\tSO_ACCEPTCONN                    = 0x1e\n\tSO_ATTACH_BPF                    = 0x32\n\tSO_ATTACH_REUSEPORT_CBPF         = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF         = 0x34\n\tSO_BINDTODEVICE                  = 0x19\n\tSO_BINDTOIFINDEX                 = 0x3e\n\tSO_BPF_EXTENSIONS                = 0x30\n\tSO_BROADCAST                     = 0x6\n\tSO_BSDCOMPAT                     = 0xe\n\tSO_BUF_LOCK                      = 0x48\n\tSO_BUSY_POLL                     = 0x2e\n\tSO_BUSY_POLL_BUDGET              = 0x46\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\n\tSO_DEVMEM_DMABUF                 = 0x4f\n\tSO_DEVMEM_DONTNEED               = 0x50\n\tSO_DEVMEM_LINEAR                 = 0x4e\n\tSO_DOMAIN                        = 0x27\n\tSO_DONTROUTE                     = 0x5\n\tSO_ERROR                         = 0x4\n\tSO_INCOMING_CPU                  = 0x31\n\tSO_INCOMING_NAPI_ID              = 0x38\n\tSO_KEEPALIVE                     = 0x9\n\tSO_LINGER                        = 0xd\n\tSO_LOCK_FILTER                   = 0x2c\n\tSO_MARK                          = 0x24\n\tSO_MAX_PACING_RATE               = 0x2f\n\tSO_MEMINFO                       = 0x37\n\tSO_NETNS_COOKIE                  = 0x47\n\tSO_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0xa\n\tSO_PASSCRED                      = 0x10\n\tSO_PASSPIDFD                     = 0x4c\n\tSO_PASSRIGHTS                    = 0x53\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x11\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERPIDFD                     = 0x4d\n\tSO_PEERSEC                       = 0x1f\n\tSO_PREFER_BUSY_POLL              = 0x45\n\tSO_PROTOCOL                      = 0x26\n\tSO_RCVBUF                        = 0x8\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x12\n\tSO_RCVMARK                       = 0x4b\n\tSO_RCVPRIORITY                   = 0x52\n\tSO_RCVTIMEO                      = 0x14\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x14\n\tSO_RESERVE_MEM                   = 0x49\n\tSO_REUSEADDR                     = 0x2\n\tSO_REUSEPORT                     = 0xf\n\tSO_RXQ_OVFL                      = 0x28\n\tSO_SECURITY_AUTHENTICATION       = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK   = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT = 0x17\n\tSO_SELECT_ERR_QUEUE              = 0x2d\n\tSO_SNDBUF                        = 0x7\n\tSO_SNDBUFFORCE                   = 0x20\n\tSO_SNDLOWAT                      = 0x13\n\tSO_SNDTIMEO                      = 0x15\n\tSO_SNDTIMEO_NEW                  = 0x43\n\tSO_SNDTIMEO_OLD                  = 0x15\n\tSO_TIMESTAMPING                  = 0x25\n\tSO_TIMESTAMPING_NEW              = 0x41\n\tSO_TIMESTAMPING_OLD              = 0x25\n\tSO_TIMESTAMPNS                   = 0x23\n\tSO_TIMESTAMPNS_NEW               = 0x40\n\tSO_TIMESTAMPNS_OLD               = 0x23\n\tSO_TIMESTAMP_NEW                 = 0x3f\n\tSO_TXREHASH                      = 0x4a\n\tSO_TXTIME                        = 0x3d\n\tSO_TYPE                          = 0x3\n\tSO_WIFI_STATUS                   = 0x29\n\tSO_ZEROCOPY                      = 0x3c\n\tTAB1                             = 0x800\n\tTAB2                             = 0x1000\n\tTAB3                             = 0x1800\n\tTABDLY                           = 0x1800\n\tTCFLSH                           = 0x540b\n\tTCGETA                           = 0x5405\n\tTCGETS                           = 0x5401\n\tTCGETS2                          = 0x802c542a\n\tTCGETX                           = 0x5432\n\tTCSAFLUSH                        = 0x2\n\tTCSBRK                           = 0x5409\n\tTCSBRKP                          = 0x5425\n\tTCSETA                           = 0x5406\n\tTCSETAF                          = 0x5408\n\tTCSETAW                          = 0x5407\n\tTCSETS                           = 0x5402\n\tTCSETS2                          = 0x402c542b\n\tTCSETSF                          = 0x5404\n\tTCSETSF2                         = 0x402c542d\n\tTCSETSW                          = 0x5403\n\tTCSETSW2                         = 0x402c542c\n\tTCSETX                           = 0x5433\n\tTCSETXF                          = 0x5434\n\tTCSETXW                          = 0x5435\n\tTCXONC                           = 0x540a\n\tTFD_CLOEXEC                      = 0x80000\n\tTFD_NONBLOCK                     = 0x800\n\tTIOCCBRK                         = 0x5428\n\tTIOCCONS                         = 0x541d\n\tTIOCEXCL                         = 0x540c\n\tTIOCGDEV                         = 0x80045432\n\tTIOCGETD                         = 0x5424\n\tTIOCGEXCL                        = 0x80045440\n\tTIOCGICOUNT                      = 0x545d\n\tTIOCGISO7816                     = 0x80285442\n\tTIOCGLCKTRMIOS                   = 0x5456\n\tTIOCGPGRP                        = 0x540f\n\tTIOCGPKT                         = 0x80045438\n\tTIOCGPTLCK                       = 0x80045439\n\tTIOCGPTN                         = 0x80045430\n\tTIOCGPTPEER                      = 0x5441\n\tTIOCGRS485                       = 0x542e\n\tTIOCGSERIAL                      = 0x541e\n\tTIOCGSID                         = 0x5429\n\tTIOCGSOFTCAR                     = 0x5419\n\tTIOCGWINSZ                       = 0x5413\n\tTIOCINQ                          = 0x541b\n\tTIOCLINUX                        = 0x541c\n\tTIOCMBIC                         = 0x5417\n\tTIOCMBIS                         = 0x5416\n\tTIOCMGET                         = 0x5415\n\tTIOCMIWAIT                       = 0x545c\n\tTIOCMSET                         = 0x5418\n\tTIOCM_CAR                        = 0x40\n\tTIOCM_CD                         = 0x40\n\tTIOCM_CTS                        = 0x20\n\tTIOCM_DSR                        = 0x100\n\tTIOCM_RI                         = 0x80\n\tTIOCM_RNG                        = 0x80\n\tTIOCM_SR                         = 0x10\n\tTIOCM_ST                         = 0x8\n\tTIOCNOTTY                        = 0x5422\n\tTIOCNXCL                         = 0x540d\n\tTIOCOUTQ                         = 0x5411\n\tTIOCPKT                          = 0x5420\n\tTIOCSBRK                         = 0x5427\n\tTIOCSCTTY                        = 0x540e\n\tTIOCSERCONFIG                    = 0x5453\n\tTIOCSERGETLSR                    = 0x5459\n\tTIOCSERGETMULTI                  = 0x545a\n\tTIOCSERGSTRUCT                   = 0x5458\n\tTIOCSERGWILD                     = 0x5454\n\tTIOCSERSETMULTI                  = 0x545b\n\tTIOCSERSWILD                     = 0x5455\n\tTIOCSER_TEMT                     = 0x1\n\tTIOCSETD                         = 0x5423\n\tTIOCSIG                          = 0x40045436\n\tTIOCSISO7816                     = 0xc0285443\n\tTIOCSLCKTRMIOS                   = 0x5457\n\tTIOCSPGRP                        = 0x5410\n\tTIOCSPTLCK                       = 0x40045431\n\tTIOCSRS485                       = 0x542f\n\tTIOCSSERIAL                      = 0x541f\n\tTIOCSSOFTCAR                     = 0x541a\n\tTIOCSTI                          = 0x5412\n\tTIOCSWINSZ                       = 0x5414\n\tTIOCVHANGUP                      = 0x5437\n\tTOSTOP                           = 0x100\n\tTUNATTACHFILTER                  = 0x400854d5\n\tTUNDETACHFILTER                  = 0x400854d6\n\tTUNGETDEVNETNS                   = 0x54e3\n\tTUNGETFEATURES                   = 0x800454cf\n\tTUNGETFILTER                     = 0x800854db\n\tTUNGETIFF                        = 0x800454d2\n\tTUNGETSNDBUF                     = 0x800454d3\n\tTUNGETVNETBE                     = 0x800454df\n\tTUNGETVNETHDRSZ                  = 0x800454d7\n\tTUNGETVNETLE                     = 0x800454dd\n\tTUNSETCARRIER                    = 0x400454e2\n\tTUNSETDEBUG                      = 0x400454c9\n\tTUNSETFILTEREBPF                 = 0x800454e1\n\tTUNSETGROUP                      = 0x400454ce\n\tTUNSETIFF                        = 0x400454ca\n\tTUNSETIFINDEX                    = 0x400454da\n\tTUNSETLINK                       = 0x400454cd\n\tTUNSETNOCSUM                     = 0x400454c8\n\tTUNSETOFFLOAD                    = 0x400454d0\n\tTUNSETOWNER                      = 0x400454cc\n\tTUNSETPERSIST                    = 0x400454cb\n\tTUNSETQUEUE                      = 0x400454d9\n\tTUNSETSNDBUF                     = 0x400454d4\n\tTUNSETSTEERINGEBPF               = 0x800454e0\n\tTUNSETTXFILTER                   = 0x400454d1\n\tTUNSETVNETBE                     = 0x400454de\n\tTUNSETVNETHDRSZ                  = 0x400454d8\n\tTUNSETVNETLE                     = 0x400454dc\n\tUBI_IOCATT                       = 0x40186f40\n\tUBI_IOCDET                       = 0x40046f41\n\tUBI_IOCEBCH                      = 0x40044f02\n\tUBI_IOCEBER                      = 0x40044f01\n\tUBI_IOCEBISMAP                   = 0x80044f05\n\tUBI_IOCEBMAP                     = 0x40084f03\n\tUBI_IOCEBUNMAP                   = 0x40044f04\n\tUBI_IOCMKVOL                     = 0x40986f00\n\tUBI_IOCRMVOL                     = 0x40046f01\n\tUBI_IOCRNVOL                     = 0x51106f03\n\tUBI_IOCRPEB                      = 0x40046f04\n\tUBI_IOCRSVOL                     = 0x400c6f02\n\tUBI_IOCSETVOLPROP                = 0x40104f06\n\tUBI_IOCSPEB                      = 0x40046f05\n\tUBI_IOCVOLCRBLK                  = 0x40804f07\n\tUBI_IOCVOLRMBLK                  = 0x4f08\n\tUBI_IOCVOLUP                     = 0x40084f00\n\tVDISCARD                         = 0xd\n\tVEOF                             = 0x4\n\tVEOL                             = 0xb\n\tVEOL2                            = 0x10\n\tVMIN                             = 0x6\n\tVREPRINT                         = 0xc\n\tVSTART                           = 0x8\n\tVSTOP                            = 0x9\n\tVSUSP                            = 0xa\n\tVSWTC                            = 0x7\n\tVT1                              = 0x4000\n\tVTDLY                            = 0x4000\n\tVTIME                            = 0x5\n\tVWERASE                          = 0xe\n\tWDIOC_GETBOOTSTATUS              = 0x80045702\n\tWDIOC_GETPRETIMEOUT              = 0x80045709\n\tWDIOC_GETSTATUS                  = 0x80045701\n\tWDIOC_GETSUPPORT                 = 0x80285700\n\tWDIOC_GETTEMP                    = 0x80045703\n\tWDIOC_GETTIMELEFT                = 0x8004570a\n\tWDIOC_GETTIMEOUT                 = 0x80045707\n\tWDIOC_KEEPALIVE                  = 0x80045705\n\tWDIOC_SETOPTIONS                 = 0x80045704\n\tWORDSIZE                         = 0x20\n\tXCASE                            = 0x4\n\tXTABS                            = 0x1800\n\t_HIDIOCGRAWNAME                  = 0x80804804\n\t_HIDIOCGRAWPHYS                  = 0x80404805\n\t_HIDIOCGRAWUNIQ                  = 0x80404808\n)\n\n// Errors\nconst (\n\tEADDRINUSE      = syscall.Errno(0x62)\n\tEADDRNOTAVAIL   = syscall.Errno(0x63)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x61)\n\tEALREADY        = syscall.Errno(0x72)\n\tEBADE           = syscall.Errno(0x34)\n\tEBADFD          = syscall.Errno(0x4d)\n\tEBADMSG         = syscall.Errno(0x4a)\n\tEBADR           = syscall.Errno(0x35)\n\tEBADRQC         = syscall.Errno(0x38)\n\tEBADSLT         = syscall.Errno(0x39)\n\tEBFONT          = syscall.Errno(0x3b)\n\tECANCELED       = syscall.Errno(0x7d)\n\tECHRNG          = syscall.Errno(0x2c)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x67)\n\tECONNREFUSED    = syscall.Errno(0x6f)\n\tECONNRESET      = syscall.Errno(0x68)\n\tEDEADLK         = syscall.Errno(0x23)\n\tEDEADLOCK       = syscall.Errno(0x23)\n\tEDESTADDRREQ    = syscall.Errno(0x59)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x7a)\n\tEHOSTDOWN       = syscall.Errno(0x70)\n\tEHOSTUNREACH    = syscall.Errno(0x71)\n\tEHWPOISON       = syscall.Errno(0x85)\n\tEIDRM           = syscall.Errno(0x2b)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x73)\n\tEISCONN         = syscall.Errno(0x6a)\n\tEISNAM          = syscall.Errno(0x78)\n\tEKEYEXPIRED     = syscall.Errno(0x7f)\n\tEKEYREJECTED    = syscall.Errno(0x81)\n\tEKEYREVOKED     = syscall.Errno(0x80)\n\tEL2HLT          = syscall.Errno(0x33)\n\tEL2NSYNC        = syscall.Errno(0x2d)\n\tEL3HLT          = syscall.Errno(0x2e)\n\tEL3RST          = syscall.Errno(0x2f)\n\tELIBACC         = syscall.Errno(0x4f)\n\tELIBBAD         = syscall.Errno(0x50)\n\tELIBEXEC        = syscall.Errno(0x53)\n\tELIBMAX         = syscall.Errno(0x52)\n\tELIBSCN         = syscall.Errno(0x51)\n\tELNRNG          = syscall.Errno(0x30)\n\tELOOP           = syscall.Errno(0x28)\n\tEMEDIUMTYPE     = syscall.Errno(0x7c)\n\tEMSGSIZE        = syscall.Errno(0x5a)\n\tEMULTIHOP       = syscall.Errno(0x48)\n\tENAMETOOLONG    = syscall.Errno(0x24)\n\tENAVAIL         = syscall.Errno(0x77)\n\tENETDOWN        = syscall.Errno(0x64)\n\tENETRESET       = syscall.Errno(0x66)\n\tENETUNREACH     = syscall.Errno(0x65)\n\tENOANO          = syscall.Errno(0x37)\n\tENOBUFS         = syscall.Errno(0x69)\n\tENOCSI          = syscall.Errno(0x32)\n\tENODATA         = syscall.Errno(0x3d)\n\tENOKEY          = syscall.Errno(0x7e)\n\tENOLCK          = syscall.Errno(0x25)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x7b)\n\tENOMSG          = syscall.Errno(0x2a)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x5c)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x26)\n\tENOTCONN        = syscall.Errno(0x6b)\n\tENOTEMPTY       = syscall.Errno(0x27)\n\tENOTNAM         = syscall.Errno(0x76)\n\tENOTRECOVERABLE = syscall.Errno(0x83)\n\tENOTSOCK        = syscall.Errno(0x58)\n\tENOTSUP         = syscall.Errno(0x5f)\n\tENOTUNIQ        = syscall.Errno(0x4c)\n\tEOPNOTSUPP      = syscall.Errno(0x5f)\n\tEOVERFLOW       = syscall.Errno(0x4b)\n\tEOWNERDEAD      = syscall.Errno(0x82)\n\tEPFNOSUPPORT    = syscall.Errno(0x60)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x5d)\n\tEPROTOTYPE      = syscall.Errno(0x5b)\n\tEREMCHG         = syscall.Errno(0x4e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x79)\n\tERESTART        = syscall.Errno(0x55)\n\tERFKILL         = syscall.Errno(0x84)\n\tESHUTDOWN       = syscall.Errno(0x6c)\n\tESOCKTNOSUPPORT = syscall.Errno(0x5e)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x74)\n\tESTRPIPE        = syscall.Errno(0x56)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x6e)\n\tETOOMANYREFS    = syscall.Errno(0x6d)\n\tEUCLEAN         = syscall.Errno(0x75)\n\tEUNATCH         = syscall.Errno(0x31)\n\tEUSERS          = syscall.Errno(0x57)\n\tEXFULL          = syscall.Errno(0x36)\n)\n\n// Signals\nconst (\n\tSIGBUS    = syscall.Signal(0x7)\n\tSIGCHLD   = syscall.Signal(0x11)\n\tSIGCLD    = syscall.Signal(0x11)\n\tSIGCONT   = syscall.Signal(0x12)\n\tSIGIO     = syscall.Signal(0x1d)\n\tSIGPOLL   = syscall.Signal(0x1d)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x1e)\n\tSIGSTKFLT = syscall.Signal(0x10)\n\tSIGSTOP   = syscall.Signal(0x13)\n\tSIGSYS    = syscall.Signal(0x1f)\n\tSIGTSTP   = syscall.Signal(0x14)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x17)\n\tSIGUSR1   = syscall.Signal(0xa)\n\tSIGUSR2   = syscall.Signal(0xc)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{36, \"ENAMETOOLONG\", \"file name too long\"},\n\t{37, \"ENOLCK\", \"no locks available\"},\n\t{38, \"ENOSYS\", \"function not implemented\"},\n\t{39, \"ENOTEMPTY\", \"directory not empty\"},\n\t{40, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{42, \"ENOMSG\", \"no message of desired type\"},\n\t{43, \"EIDRM\", \"identifier removed\"},\n\t{44, \"ECHRNG\", \"channel number out of range\"},\n\t{45, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{46, \"EL3HLT\", \"level 3 halted\"},\n\t{47, \"EL3RST\", \"level 3 reset\"},\n\t{48, \"ELNRNG\", \"link number out of range\"},\n\t{49, \"EUNATCH\", \"protocol driver not attached\"},\n\t{50, \"ENOCSI\", \"no CSI structure available\"},\n\t{51, \"EL2HLT\", \"level 2 halted\"},\n\t{52, \"EBADE\", \"invalid exchange\"},\n\t{53, \"EBADR\", \"invalid request descriptor\"},\n\t{54, \"EXFULL\", \"exchange full\"},\n\t{55, \"ENOANO\", \"no anode\"},\n\t{56, \"EBADRQC\", \"invalid request code\"},\n\t{57, \"EBADSLT\", \"invalid slot\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{72, \"EMULTIHOP\", \"multihop attempted\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EBADMSG\", \"bad message\"},\n\t{75, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{76, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{77, \"EBADFD\", \"file descriptor in bad state\"},\n\t{78, \"EREMCHG\", \"remote address changed\"},\n\t{79, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{80, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{81, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{82, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{83, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{84, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{85, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{86, \"ESTRPIPE\", \"streams pipe error\"},\n\t{87, \"EUSERS\", \"too many users\"},\n\t{88, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{89, \"EDESTADDRREQ\", \"destination address required\"},\n\t{90, \"EMSGSIZE\", \"message too long\"},\n\t{91, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{92, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{93, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{94, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{95, \"ENOTSUP\", \"operation not supported\"},\n\t{96, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{97, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{98, \"EADDRINUSE\", \"address already in use\"},\n\t{99, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{100, \"ENETDOWN\", \"network is down\"},\n\t{101, \"ENETUNREACH\", \"network is unreachable\"},\n\t{102, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{103, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{104, \"ECONNRESET\", \"connection reset by peer\"},\n\t{105, \"ENOBUFS\", \"no buffer space available\"},\n\t{106, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{107, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{108, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{109, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{110, \"ETIMEDOUT\", \"connection timed out\"},\n\t{111, \"ECONNREFUSED\", \"connection refused\"},\n\t{112, \"EHOSTDOWN\", \"host is down\"},\n\t{113, \"EHOSTUNREACH\", \"no route to host\"},\n\t{114, \"EALREADY\", \"operation already in progress\"},\n\t{115, \"EINPROGRESS\", \"operation now in progress\"},\n\t{116, \"ESTALE\", \"stale file handle\"},\n\t{117, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{118, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{119, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{120, \"EISNAM\", \"is a named type file\"},\n\t{121, \"EREMOTEIO\", \"remote I/O error\"},\n\t{122, \"EDQUOT\", \"disk quota exceeded\"},\n\t{123, \"ENOMEDIUM\", \"no medium found\"},\n\t{124, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{125, \"ECANCELED\", \"operation canceled\"},\n\t{126, \"ENOKEY\", \"required key not available\"},\n\t{127, \"EKEYEXPIRED\", \"key has expired\"},\n\t{128, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{129, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{130, \"EOWNERDEAD\", \"owner died\"},\n\t{131, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{132, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{133, \"EHWPOISON\", \"memory page has hardware error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGBUS\", \"bus error\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGUSR1\", \"user defined signal 1\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGUSR2\", \"user defined signal 2\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGSTKFLT\", \"stack fault\"},\n\t{17, \"SIGCHLD\", \"child exited\"},\n\t{18, \"SIGCONT\", \"continued\"},\n\t{19, \"SIGSTOP\", \"stopped (signal)\"},\n\t{20, \"SIGTSTP\", \"stopped\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGURG\", \"urgent I/O condition\"},\n\t{24, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"file size limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window changed\"},\n\t{29, \"SIGIO\", \"I/O possible\"},\n\t{30, \"SIGPWR\", \"power failure\"},\n\t{31, \"SIGSYS\", \"bad system call\"},\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/arm64/include -fsigned-char\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/arm64/include -fsigned-char _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x1008\n\tB115200                          = 0x1002\n\tB1152000                         = 0x1009\n\tB1500000                         = 0x100a\n\tB2000000                         = 0x100b\n\tB230400                          = 0x1003\n\tB2500000                         = 0x100c\n\tB3000000                         = 0x100d\n\tB3500000                         = 0x100e\n\tB4000000                         = 0x100f\n\tB460800                          = 0x1004\n\tB500000                          = 0x1005\n\tB57600                           = 0x1001\n\tB576000                          = 0x1006\n\tB921600                          = 0x1007\n\tBLKALIGNOFF                      = 0x127a\n\tBLKBSZGET                        = 0x80081270\n\tBLKBSZSET                        = 0x40081271\n\tBLKDISCARD                       = 0x1277\n\tBLKDISCARDZEROES                 = 0x127c\n\tBLKFLSBUF                        = 0x1261\n\tBLKFRAGET                        = 0x1265\n\tBLKFRASET                        = 0x1264\n\tBLKGETDISKSEQ                    = 0x80081280\n\tBLKGETSIZE                       = 0x1260\n\tBLKGETSIZE64                     = 0x80081272\n\tBLKIOMIN                         = 0x1278\n\tBLKIOOPT                         = 0x1279\n\tBLKPBSZGET                       = 0x127b\n\tBLKRAGET                         = 0x1263\n\tBLKRASET                         = 0x1262\n\tBLKROGET                         = 0x125e\n\tBLKROSET                         = 0x125d\n\tBLKROTATIONAL                    = 0x127e\n\tBLKRRPART                        = 0x125f\n\tBLKSECDISCARD                    = 0x127d\n\tBLKSECTGET                       = 0x1267\n\tBLKSECTSET                       = 0x1266\n\tBLKSSZGET                        = 0x1268\n\tBLKZEROOUT                       = 0x127f\n\tBOTHER                           = 0x1000\n\tBS1                              = 0x2000\n\tBSDLY                            = 0x2000\n\tCBAUD                            = 0x100f\n\tCBAUDEX                          = 0x1000\n\tCIBAUD                           = 0x100f0000\n\tCLOCAL                           = 0x800\n\tCR1                              = 0x200\n\tCR2                              = 0x400\n\tCR3                              = 0x600\n\tCRDLY                            = 0x600\n\tCREAD                            = 0x80\n\tCS6                              = 0x10\n\tCS7                              = 0x20\n\tCS8                              = 0x30\n\tCSIZE                            = 0x30\n\tCSTOPB                           = 0x40\n\tDM_MPATH_PROBE_PATHS             = 0xfd12\n\tECCGETLAYOUT                     = 0x81484d11\n\tECCGETSTATS                      = 0x80104d12\n\tECHOCTL                          = 0x200\n\tECHOE                            = 0x10\n\tECHOK                            = 0x20\n\tECHOKE                           = 0x800\n\tECHONL                           = 0x40\n\tECHOPRT                          = 0x400\n\tEFD_CLOEXEC                      = 0x80000\n\tEFD_NONBLOCK                     = 0x800\n\tEPIOCGPARAMS                     = 0x80088a02\n\tEPIOCSPARAMS                     = 0x40088a01\n\tEPOLL_CLOEXEC                    = 0x80000\n\tESR_MAGIC                        = 0x45535201\n\tEXTPROC                          = 0x10000\n\tEXTRA_MAGIC                      = 0x45585401\n\tFF1                              = 0x8000\n\tFFDLY                            = 0x8000\n\tFICLONE                          = 0x40049409\n\tFICLONERANGE                     = 0x4020940d\n\tFLUSHO                           = 0x1000\n\tFPMR_MAGIC                       = 0x46504d52\n\tFPSIMD_MAGIC                     = 0x46508001\n\tFS_IOC_ENABLE_VERITY             = 0x40806685\n\tFS_IOC_GETFLAGS                  = 0x80086601\n\tFS_IOC_GET_ENCRYPTION_NONCE      = 0x8010661b\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x400c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x40106614\n\tFS_IOC_SETFLAGS                  = 0x40086602\n\tFS_IOC_SET_ENCRYPTION_POLICY     = 0x800c6613\n\tF_GETLK                          = 0x5\n\tF_GETLK64                        = 0x5\n\tF_GETOWN                         = 0x9\n\tF_RDLCK                          = 0x0\n\tF_SETLK                          = 0x6\n\tF_SETLK64                        = 0x6\n\tF_SETLKW                         = 0x7\n\tF_SETLKW64                       = 0x7\n\tF_SETOWN                         = 0x8\n\tF_UNLCK                          = 0x2\n\tF_WRLCK                          = 0x1\n\tGCS_MAGIC                        = 0x47435300\n\tHIDIOCGRAWINFO                   = 0x80084803\n\tHIDIOCGRDESC                     = 0x90044802\n\tHIDIOCGRDESCSIZE                 = 0x80044801\n\tHIDIOCREVOKE                     = 0x4004480d\n\tHUPCL                            = 0x400\n\tICANON                           = 0x2\n\tIEXTEN                           = 0x8000\n\tIN_CLOEXEC                       = 0x80000\n\tIN_NONBLOCK                      = 0x800\n\tIOCTL_MEI_NOTIFY_GET             = 0x80044803\n\tIOCTL_MEI_NOTIFY_SET             = 0x40044802\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x7b9\n\tIPV6_FLOWINFO_MASK               = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK              = 0xffff0f00\n\tISIG                             = 0x1\n\tIUCLC                            = 0x200\n\tIXOFF                            = 0x1000\n\tIXON                             = 0x400\n\tMAP_ANON                         = 0x20\n\tMAP_ANONYMOUS                    = 0x20\n\tMAP_DENYWRITE                    = 0x800\n\tMAP_EXECUTABLE                   = 0x1000\n\tMAP_GROWSDOWN                    = 0x100\n\tMAP_HUGETLB                      = 0x40000\n\tMAP_LOCKED                       = 0x2000\n\tMAP_NONBLOCK                     = 0x10000\n\tMAP_NORESERVE                    = 0x4000\n\tMAP_POPULATE                     = 0x8000\n\tMAP_STACK                        = 0x20000\n\tMAP_SYNC                         = 0x80000\n\tMCL_CURRENT                      = 0x1\n\tMCL_FUTURE                       = 0x2\n\tMCL_ONFAULT                      = 0x4\n\tMEMERASE                         = 0x40084d02\n\tMEMERASE64                       = 0x40104d14\n\tMEMGETBADBLOCK                   = 0x40084d0b\n\tMEMGETINFO                       = 0x80204d01\n\tMEMGETOOBSEL                     = 0x80c84d0a\n\tMEMGETREGIONCOUNT                = 0x80044d07\n\tMEMISLOCKED                      = 0x80084d17\n\tMEMLOCK                          = 0x40084d05\n\tMEMREAD                          = 0xc0404d1a\n\tMEMREADOOB                       = 0xc0104d04\n\tMEMSETBADBLOCK                   = 0x40084d0c\n\tMEMUNLOCK                        = 0x40084d06\n\tMEMWRITEOOB                      = 0xc0104d03\n\tMTDFILEMODE                      = 0x4d13\n\tNFDBITS                          = 0x40\n\tNLDLY                            = 0x100\n\tNOFLSH                           = 0x80\n\tNS_GET_MNTNS_ID                  = 0x8008b705\n\tNS_GET_NSTYPE                    = 0xb703\n\tNS_GET_OWNER_UID                 = 0xb704\n\tNS_GET_PARENT                    = 0xb702\n\tNS_GET_PID_FROM_PIDNS            = 0x8004b706\n\tNS_GET_PID_IN_PIDNS              = 0x8004b708\n\tNS_GET_TGID_FROM_PIDNS           = 0x8004b707\n\tNS_GET_TGID_IN_PIDNS             = 0x8004b709\n\tNS_GET_USERNS                    = 0xb701\n\tOLCUC                            = 0x2\n\tONLCR                            = 0x4\n\tOTPERASE                         = 0x400c4d19\n\tOTPGETREGIONCOUNT                = 0x40044d0e\n\tOTPGETREGIONINFO                 = 0x400c4d0f\n\tOTPLOCK                          = 0x800c4d10\n\tOTPSELECT                        = 0x80044d0d\n\tO_APPEND                         = 0x400\n\tO_ASYNC                          = 0x2000\n\tO_CLOEXEC                        = 0x80000\n\tO_CREAT                          = 0x40\n\tO_DIRECT                         = 0x10000\n\tO_DIRECTORY                      = 0x4000\n\tO_DSYNC                          = 0x1000\n\tO_EXCL                           = 0x80\n\tO_FSYNC                          = 0x101000\n\tO_LARGEFILE                      = 0x0\n\tO_NDELAY                         = 0x800\n\tO_NOATIME                        = 0x40000\n\tO_NOCTTY                         = 0x100\n\tO_NOFOLLOW                       = 0x8000\n\tO_NONBLOCK                       = 0x800\n\tO_PATH                           = 0x200000\n\tO_RSYNC                          = 0x101000\n\tO_SYNC                           = 0x101000\n\tO_TMPFILE                        = 0x404000\n\tO_TRUNC                          = 0x200\n\tPARENB                           = 0x100\n\tPARODD                           = 0x200\n\tPENDIN                           = 0x4000\n\tPERF_EVENT_IOC_DISABLE           = 0x2401\n\tPERF_EVENT_IOC_ENABLE            = 0x2400\n\tPERF_EVENT_IOC_ID                = 0x80082407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4008240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT      = 0x40042409\n\tPERF_EVENT_IOC_PERIOD            = 0x40082404\n\tPERF_EVENT_IOC_QUERY_BPF         = 0xc008240a\n\tPERF_EVENT_IOC_REFRESH           = 0x2402\n\tPERF_EVENT_IOC_RESET             = 0x2403\n\tPERF_EVENT_IOC_SET_BPF           = 0x40042408\n\tPERF_EVENT_IOC_SET_FILTER        = 0x40082406\n\tPERF_EVENT_IOC_SET_OUTPUT        = 0x2405\n\tPOE_MAGIC                        = 0x504f4530\n\tPPPIOCATTACH                     = 0x4004743d\n\tPPPIOCATTCHAN                    = 0x40047438\n\tPPPIOCBRIDGECHAN                 = 0x40047435\n\tPPPIOCCONNECT                    = 0x4004743a\n\tPPPIOCDETACH                     = 0x4004743c\n\tPPPIOCDISCONN                    = 0x7439\n\tPPPIOCGASYNCMAP                  = 0x80047458\n\tPPPIOCGCHAN                      = 0x80047437\n\tPPPIOCGDEBUG                     = 0x80047441\n\tPPPIOCGFLAGS                     = 0x8004745a\n\tPPPIOCGIDLE                      = 0x8010743f\n\tPPPIOCGIDLE32                    = 0x8008743f\n\tPPPIOCGIDLE64                    = 0x8010743f\n\tPPPIOCGL2TPSTATS                 = 0x80487436\n\tPPPIOCGMRU                       = 0x80047453\n\tPPPIOCGRASYNCMAP                 = 0x80047455\n\tPPPIOCGUNIT                      = 0x80047456\n\tPPPIOCGXASYNCMAP                 = 0x80207450\n\tPPPIOCSACTIVE                    = 0x40107446\n\tPPPIOCSASYNCMAP                  = 0x40047457\n\tPPPIOCSCOMPRESS                  = 0x4010744d\n\tPPPIOCSDEBUG                     = 0x40047440\n\tPPPIOCSFLAGS                     = 0x40047459\n\tPPPIOCSMAXCID                    = 0x40047451\n\tPPPIOCSMRRU                      = 0x4004743b\n\tPPPIOCSMRU                       = 0x40047452\n\tPPPIOCSNPMODE                    = 0x4008744b\n\tPPPIOCSPASS                      = 0x40107447\n\tPPPIOCSRASYNCMAP                 = 0x40047454\n\tPPPIOCSXASYNCMAP                 = 0x4020744f\n\tPPPIOCUNBRIDGECHAN               = 0x7434\n\tPPPIOCXFERUNIT                   = 0x744e\n\tPROT_BTI                         = 0x10\n\tPROT_MTE                         = 0x20\n\tPR_SET_PTRACER_ANY               = 0xffffffffffffffff\n\tPTP_CLOCK_GETCAPS                = 0x80503d01\n\tPTP_CLOCK_GETCAPS2               = 0x80503d0a\n\tPTP_ENABLE_PPS                   = 0x40043d04\n\tPTP_ENABLE_PPS2                  = 0x40043d0d\n\tPTP_EXTTS_REQUEST                = 0x40103d02\n\tPTP_EXTTS_REQUEST2               = 0x40103d0b\n\tPTP_MASK_CLEAR_ALL               = 0x3d13\n\tPTP_MASK_EN_SINGLE               = 0x40043d14\n\tPTP_PEROUT_REQUEST               = 0x40383d03\n\tPTP_PEROUT_REQUEST2              = 0x40383d0c\n\tPTP_PIN_SETFUNC                  = 0x40603d07\n\tPTP_PIN_SETFUNC2                 = 0x40603d10\n\tPTP_SYS_OFFSET                   = 0x43403d05\n\tPTP_SYS_OFFSET2                  = 0x43403d0e\n\tPTRACE_PEEKMTETAGS               = 0x21\n\tPTRACE_POKEMTETAGS               = 0x22\n\tPTRACE_SYSEMU                    = 0x1f\n\tPTRACE_SYSEMU_SINGLESTEP         = 0x20\n\tRLIMIT_AS                        = 0x9\n\tRLIMIT_MEMLOCK                   = 0x8\n\tRLIMIT_NOFILE                    = 0x7\n\tRLIMIT_NPROC                     = 0x6\n\tRLIMIT_RSS                       = 0x5\n\tRNDADDENTROPY                    = 0x40085203\n\tRNDADDTOENTCNT                   = 0x40045201\n\tRNDCLEARPOOL                     = 0x5206\n\tRNDGETENTCNT                     = 0x80045200\n\tRNDGETPOOL                       = 0x80085202\n\tRNDRESEEDCRNG                    = 0x5207\n\tRNDZAPENTCNT                     = 0x5204\n\tRTC_AIE_OFF                      = 0x7002\n\tRTC_AIE_ON                       = 0x7001\n\tRTC_ALM_READ                     = 0x80247008\n\tRTC_ALM_SET                      = 0x40247007\n\tRTC_EPOCH_READ                   = 0x8008700d\n\tRTC_EPOCH_SET                    = 0x4008700e\n\tRTC_IRQP_READ                    = 0x8008700b\n\tRTC_IRQP_SET                     = 0x4008700c\n\tRTC_PARAM_GET                    = 0x40187013\n\tRTC_PARAM_SET                    = 0x40187014\n\tRTC_PIE_OFF                      = 0x7006\n\tRTC_PIE_ON                       = 0x7005\n\tRTC_PLL_GET                      = 0x80207011\n\tRTC_PLL_SET                      = 0x40207012\n\tRTC_RD_TIME                      = 0x80247009\n\tRTC_SET_TIME                     = 0x4024700a\n\tRTC_UIE_OFF                      = 0x7004\n\tRTC_UIE_ON                       = 0x7003\n\tRTC_VL_CLR                       = 0x7014\n\tRTC_VL_READ                      = 0x80047013\n\tRTC_WIE_OFF                      = 0x7010\n\tRTC_WIE_ON                       = 0x700f\n\tRTC_WKALM_RD                     = 0x80287010\n\tRTC_WKALM_SET                    = 0x4028700f\n\tSCM_DEVMEM_DMABUF                = 0x4f\n\tSCM_DEVMEM_LINEAR                = 0x4e\n\tSCM_TIMESTAMPING                 = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS       = 0x36\n\tSCM_TIMESTAMPING_PKTINFO         = 0x3a\n\tSCM_TIMESTAMPNS                  = 0x23\n\tSCM_TS_OPT_ID                    = 0x51\n\tSCM_TXTIME                       = 0x3d\n\tSCM_WIFI_STATUS                  = 0x29\n\tSECCOMP_IOCTL_NOTIF_ADDFD        = 0x40182103\n\tSECCOMP_IOCTL_NOTIF_ID_VALID     = 0x40082102\n\tSECCOMP_IOCTL_NOTIF_SET_FLAGS    = 0x40082104\n\tSFD_CLOEXEC                      = 0x80000\n\tSFD_NONBLOCK                     = 0x800\n\tSIOCATMARK                       = 0x8905\n\tSIOCGPGRP                        = 0x8904\n\tSIOCGSTAMPNS_NEW                 = 0x80108907\n\tSIOCGSTAMP_NEW                   = 0x80108906\n\tSIOCINQ                          = 0x541b\n\tSIOCOUTQ                         = 0x5411\n\tSIOCSPGRP                        = 0x8902\n\tSOCK_CLOEXEC                     = 0x80000\n\tSOCK_DGRAM                       = 0x2\n\tSOCK_NONBLOCK                    = 0x800\n\tSOCK_STREAM                      = 0x1\n\tSOL_SOCKET                       = 0x1\n\tSO_ACCEPTCONN                    = 0x1e\n\tSO_ATTACH_BPF                    = 0x32\n\tSO_ATTACH_REUSEPORT_CBPF         = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF         = 0x34\n\tSO_BINDTODEVICE                  = 0x19\n\tSO_BINDTOIFINDEX                 = 0x3e\n\tSO_BPF_EXTENSIONS                = 0x30\n\tSO_BROADCAST                     = 0x6\n\tSO_BSDCOMPAT                     = 0xe\n\tSO_BUF_LOCK                      = 0x48\n\tSO_BUSY_POLL                     = 0x2e\n\tSO_BUSY_POLL_BUDGET              = 0x46\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\n\tSO_DEVMEM_DMABUF                 = 0x4f\n\tSO_DEVMEM_DONTNEED               = 0x50\n\tSO_DEVMEM_LINEAR                 = 0x4e\n\tSO_DOMAIN                        = 0x27\n\tSO_DONTROUTE                     = 0x5\n\tSO_ERROR                         = 0x4\n\tSO_INCOMING_CPU                  = 0x31\n\tSO_INCOMING_NAPI_ID              = 0x38\n\tSO_KEEPALIVE                     = 0x9\n\tSO_LINGER                        = 0xd\n\tSO_LOCK_FILTER                   = 0x2c\n\tSO_MARK                          = 0x24\n\tSO_MAX_PACING_RATE               = 0x2f\n\tSO_MEMINFO                       = 0x37\n\tSO_NETNS_COOKIE                  = 0x47\n\tSO_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0xa\n\tSO_PASSCRED                      = 0x10\n\tSO_PASSPIDFD                     = 0x4c\n\tSO_PASSRIGHTS                    = 0x53\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x11\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERPIDFD                     = 0x4d\n\tSO_PEERSEC                       = 0x1f\n\tSO_PREFER_BUSY_POLL              = 0x45\n\tSO_PROTOCOL                      = 0x26\n\tSO_RCVBUF                        = 0x8\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x12\n\tSO_RCVMARK                       = 0x4b\n\tSO_RCVPRIORITY                   = 0x52\n\tSO_RCVTIMEO                      = 0x14\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x14\n\tSO_RESERVE_MEM                   = 0x49\n\tSO_REUSEADDR                     = 0x2\n\tSO_REUSEPORT                     = 0xf\n\tSO_RXQ_OVFL                      = 0x28\n\tSO_SECURITY_AUTHENTICATION       = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK   = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT = 0x17\n\tSO_SELECT_ERR_QUEUE              = 0x2d\n\tSO_SNDBUF                        = 0x7\n\tSO_SNDBUFFORCE                   = 0x20\n\tSO_SNDLOWAT                      = 0x13\n\tSO_SNDTIMEO                      = 0x15\n\tSO_SNDTIMEO_NEW                  = 0x43\n\tSO_SNDTIMEO_OLD                  = 0x15\n\tSO_TIMESTAMPING                  = 0x25\n\tSO_TIMESTAMPING_NEW              = 0x41\n\tSO_TIMESTAMPING_OLD              = 0x25\n\tSO_TIMESTAMPNS                   = 0x23\n\tSO_TIMESTAMPNS_NEW               = 0x40\n\tSO_TIMESTAMPNS_OLD               = 0x23\n\tSO_TIMESTAMP_NEW                 = 0x3f\n\tSO_TXREHASH                      = 0x4a\n\tSO_TXTIME                        = 0x3d\n\tSO_TYPE                          = 0x3\n\tSO_WIFI_STATUS                   = 0x29\n\tSO_ZEROCOPY                      = 0x3c\n\tSVE_MAGIC                        = 0x53564501\n\tTAB1                             = 0x800\n\tTAB2                             = 0x1000\n\tTAB3                             = 0x1800\n\tTABDLY                           = 0x1800\n\tTCFLSH                           = 0x540b\n\tTCGETA                           = 0x5405\n\tTCGETS                           = 0x5401\n\tTCGETS2                          = 0x802c542a\n\tTCGETX                           = 0x5432\n\tTCSAFLUSH                        = 0x2\n\tTCSBRK                           = 0x5409\n\tTCSBRKP                          = 0x5425\n\tTCSETA                           = 0x5406\n\tTCSETAF                          = 0x5408\n\tTCSETAW                          = 0x5407\n\tTCSETS                           = 0x5402\n\tTCSETS2                          = 0x402c542b\n\tTCSETSF                          = 0x5404\n\tTCSETSF2                         = 0x402c542d\n\tTCSETSW                          = 0x5403\n\tTCSETSW2                         = 0x402c542c\n\tTCSETX                           = 0x5433\n\tTCSETXF                          = 0x5434\n\tTCSETXW                          = 0x5435\n\tTCXONC                           = 0x540a\n\tTFD_CLOEXEC                      = 0x80000\n\tTFD_NONBLOCK                     = 0x800\n\tTIOCCBRK                         = 0x5428\n\tTIOCCONS                         = 0x541d\n\tTIOCEXCL                         = 0x540c\n\tTIOCGDEV                         = 0x80045432\n\tTIOCGETD                         = 0x5424\n\tTIOCGEXCL                        = 0x80045440\n\tTIOCGICOUNT                      = 0x545d\n\tTIOCGISO7816                     = 0x80285442\n\tTIOCGLCKTRMIOS                   = 0x5456\n\tTIOCGPGRP                        = 0x540f\n\tTIOCGPKT                         = 0x80045438\n\tTIOCGPTLCK                       = 0x80045439\n\tTIOCGPTN                         = 0x80045430\n\tTIOCGPTPEER                      = 0x5441\n\tTIOCGRS485                       = 0x542e\n\tTIOCGSERIAL                      = 0x541e\n\tTIOCGSID                         = 0x5429\n\tTIOCGSOFTCAR                     = 0x5419\n\tTIOCGWINSZ                       = 0x5413\n\tTIOCINQ                          = 0x541b\n\tTIOCLINUX                        = 0x541c\n\tTIOCMBIC                         = 0x5417\n\tTIOCMBIS                         = 0x5416\n\tTIOCMGET                         = 0x5415\n\tTIOCMIWAIT                       = 0x545c\n\tTIOCMSET                         = 0x5418\n\tTIOCM_CAR                        = 0x40\n\tTIOCM_CD                         = 0x40\n\tTIOCM_CTS                        = 0x20\n\tTIOCM_DSR                        = 0x100\n\tTIOCM_RI                         = 0x80\n\tTIOCM_RNG                        = 0x80\n\tTIOCM_SR                         = 0x10\n\tTIOCM_ST                         = 0x8\n\tTIOCNOTTY                        = 0x5422\n\tTIOCNXCL                         = 0x540d\n\tTIOCOUTQ                         = 0x5411\n\tTIOCPKT                          = 0x5420\n\tTIOCSBRK                         = 0x5427\n\tTIOCSCTTY                        = 0x540e\n\tTIOCSERCONFIG                    = 0x5453\n\tTIOCSERGETLSR                    = 0x5459\n\tTIOCSERGETMULTI                  = 0x545a\n\tTIOCSERGSTRUCT                   = 0x5458\n\tTIOCSERGWILD                     = 0x5454\n\tTIOCSERSETMULTI                  = 0x545b\n\tTIOCSERSWILD                     = 0x5455\n\tTIOCSER_TEMT                     = 0x1\n\tTIOCSETD                         = 0x5423\n\tTIOCSIG                          = 0x40045436\n\tTIOCSISO7816                     = 0xc0285443\n\tTIOCSLCKTRMIOS                   = 0x5457\n\tTIOCSPGRP                        = 0x5410\n\tTIOCSPTLCK                       = 0x40045431\n\tTIOCSRS485                       = 0x542f\n\tTIOCSSERIAL                      = 0x541f\n\tTIOCSSOFTCAR                     = 0x541a\n\tTIOCSTI                          = 0x5412\n\tTIOCSWINSZ                       = 0x5414\n\tTIOCVHANGUP                      = 0x5437\n\tTOSTOP                           = 0x100\n\tTPIDR2_MAGIC                     = 0x54504902\n\tTUNATTACHFILTER                  = 0x401054d5\n\tTUNDETACHFILTER                  = 0x401054d6\n\tTUNGETDEVNETNS                   = 0x54e3\n\tTUNGETFEATURES                   = 0x800454cf\n\tTUNGETFILTER                     = 0x801054db\n\tTUNGETIFF                        = 0x800454d2\n\tTUNGETSNDBUF                     = 0x800454d3\n\tTUNGETVNETBE                     = 0x800454df\n\tTUNGETVNETHDRSZ                  = 0x800454d7\n\tTUNGETVNETLE                     = 0x800454dd\n\tTUNSETCARRIER                    = 0x400454e2\n\tTUNSETDEBUG                      = 0x400454c9\n\tTUNSETFILTEREBPF                 = 0x800454e1\n\tTUNSETGROUP                      = 0x400454ce\n\tTUNSETIFF                        = 0x400454ca\n\tTUNSETIFINDEX                    = 0x400454da\n\tTUNSETLINK                       = 0x400454cd\n\tTUNSETNOCSUM                     = 0x400454c8\n\tTUNSETOFFLOAD                    = 0x400454d0\n\tTUNSETOWNER                      = 0x400454cc\n\tTUNSETPERSIST                    = 0x400454cb\n\tTUNSETQUEUE                      = 0x400454d9\n\tTUNSETSNDBUF                     = 0x400454d4\n\tTUNSETSTEERINGEBPF               = 0x800454e0\n\tTUNSETTXFILTER                   = 0x400454d1\n\tTUNSETVNETBE                     = 0x400454de\n\tTUNSETVNETHDRSZ                  = 0x400454d8\n\tTUNSETVNETLE                     = 0x400454dc\n\tUBI_IOCATT                       = 0x40186f40\n\tUBI_IOCDET                       = 0x40046f41\n\tUBI_IOCEBCH                      = 0x40044f02\n\tUBI_IOCEBER                      = 0x40044f01\n\tUBI_IOCEBISMAP                   = 0x80044f05\n\tUBI_IOCEBMAP                     = 0x40084f03\n\tUBI_IOCEBUNMAP                   = 0x40044f04\n\tUBI_IOCMKVOL                     = 0x40986f00\n\tUBI_IOCRMVOL                     = 0x40046f01\n\tUBI_IOCRNVOL                     = 0x51106f03\n\tUBI_IOCRPEB                      = 0x40046f04\n\tUBI_IOCRSVOL                     = 0x400c6f02\n\tUBI_IOCSETVOLPROP                = 0x40104f06\n\tUBI_IOCSPEB                      = 0x40046f05\n\tUBI_IOCVOLCRBLK                  = 0x40804f07\n\tUBI_IOCVOLRMBLK                  = 0x4f08\n\tUBI_IOCVOLUP                     = 0x40084f00\n\tVDISCARD                         = 0xd\n\tVEOF                             = 0x4\n\tVEOL                             = 0xb\n\tVEOL2                            = 0x10\n\tVMIN                             = 0x6\n\tVREPRINT                         = 0xc\n\tVSTART                           = 0x8\n\tVSTOP                            = 0x9\n\tVSUSP                            = 0xa\n\tVSWTC                            = 0x7\n\tVT1                              = 0x4000\n\tVTDLY                            = 0x4000\n\tVTIME                            = 0x5\n\tVWERASE                          = 0xe\n\tWDIOC_GETBOOTSTATUS              = 0x80045702\n\tWDIOC_GETPRETIMEOUT              = 0x80045709\n\tWDIOC_GETSTATUS                  = 0x80045701\n\tWDIOC_GETSUPPORT                 = 0x80285700\n\tWDIOC_GETTEMP                    = 0x80045703\n\tWDIOC_GETTIMELEFT                = 0x8004570a\n\tWDIOC_GETTIMEOUT                 = 0x80045707\n\tWDIOC_KEEPALIVE                  = 0x80045705\n\tWDIOC_SETOPTIONS                 = 0x80045704\n\tWORDSIZE                         = 0x40\n\tXCASE                            = 0x4\n\tXTABS                            = 0x1800\n\tZA_MAGIC                         = 0x54366345\n\tZT_MAGIC                         = 0x5a544e01\n\t_HIDIOCGRAWNAME                  = 0x80804804\n\t_HIDIOCGRAWPHYS                  = 0x80404805\n\t_HIDIOCGRAWUNIQ                  = 0x80404808\n)\n\n// Errors\nconst (\n\tEADDRINUSE      = syscall.Errno(0x62)\n\tEADDRNOTAVAIL   = syscall.Errno(0x63)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x61)\n\tEALREADY        = syscall.Errno(0x72)\n\tEBADE           = syscall.Errno(0x34)\n\tEBADFD          = syscall.Errno(0x4d)\n\tEBADMSG         = syscall.Errno(0x4a)\n\tEBADR           = syscall.Errno(0x35)\n\tEBADRQC         = syscall.Errno(0x38)\n\tEBADSLT         = syscall.Errno(0x39)\n\tEBFONT          = syscall.Errno(0x3b)\n\tECANCELED       = syscall.Errno(0x7d)\n\tECHRNG          = syscall.Errno(0x2c)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x67)\n\tECONNREFUSED    = syscall.Errno(0x6f)\n\tECONNRESET      = syscall.Errno(0x68)\n\tEDEADLK         = syscall.Errno(0x23)\n\tEDEADLOCK       = syscall.Errno(0x23)\n\tEDESTADDRREQ    = syscall.Errno(0x59)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x7a)\n\tEHOSTDOWN       = syscall.Errno(0x70)\n\tEHOSTUNREACH    = syscall.Errno(0x71)\n\tEHWPOISON       = syscall.Errno(0x85)\n\tEIDRM           = syscall.Errno(0x2b)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x73)\n\tEISCONN         = syscall.Errno(0x6a)\n\tEISNAM          = syscall.Errno(0x78)\n\tEKEYEXPIRED     = syscall.Errno(0x7f)\n\tEKEYREJECTED    = syscall.Errno(0x81)\n\tEKEYREVOKED     = syscall.Errno(0x80)\n\tEL2HLT          = syscall.Errno(0x33)\n\tEL2NSYNC        = syscall.Errno(0x2d)\n\tEL3HLT          = syscall.Errno(0x2e)\n\tEL3RST          = syscall.Errno(0x2f)\n\tELIBACC         = syscall.Errno(0x4f)\n\tELIBBAD         = syscall.Errno(0x50)\n\tELIBEXEC        = syscall.Errno(0x53)\n\tELIBMAX         = syscall.Errno(0x52)\n\tELIBSCN         = syscall.Errno(0x51)\n\tELNRNG          = syscall.Errno(0x30)\n\tELOOP           = syscall.Errno(0x28)\n\tEMEDIUMTYPE     = syscall.Errno(0x7c)\n\tEMSGSIZE        = syscall.Errno(0x5a)\n\tEMULTIHOP       = syscall.Errno(0x48)\n\tENAMETOOLONG    = syscall.Errno(0x24)\n\tENAVAIL         = syscall.Errno(0x77)\n\tENETDOWN        = syscall.Errno(0x64)\n\tENETRESET       = syscall.Errno(0x66)\n\tENETUNREACH     = syscall.Errno(0x65)\n\tENOANO          = syscall.Errno(0x37)\n\tENOBUFS         = syscall.Errno(0x69)\n\tENOCSI          = syscall.Errno(0x32)\n\tENODATA         = syscall.Errno(0x3d)\n\tENOKEY          = syscall.Errno(0x7e)\n\tENOLCK          = syscall.Errno(0x25)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x7b)\n\tENOMSG          = syscall.Errno(0x2a)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x5c)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x26)\n\tENOTCONN        = syscall.Errno(0x6b)\n\tENOTEMPTY       = syscall.Errno(0x27)\n\tENOTNAM         = syscall.Errno(0x76)\n\tENOTRECOVERABLE = syscall.Errno(0x83)\n\tENOTSOCK        = syscall.Errno(0x58)\n\tENOTSUP         = syscall.Errno(0x5f)\n\tENOTUNIQ        = syscall.Errno(0x4c)\n\tEOPNOTSUPP      = syscall.Errno(0x5f)\n\tEOVERFLOW       = syscall.Errno(0x4b)\n\tEOWNERDEAD      = syscall.Errno(0x82)\n\tEPFNOSUPPORT    = syscall.Errno(0x60)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x5d)\n\tEPROTOTYPE      = syscall.Errno(0x5b)\n\tEREMCHG         = syscall.Errno(0x4e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x79)\n\tERESTART        = syscall.Errno(0x55)\n\tERFKILL         = syscall.Errno(0x84)\n\tESHUTDOWN       = syscall.Errno(0x6c)\n\tESOCKTNOSUPPORT = syscall.Errno(0x5e)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x74)\n\tESTRPIPE        = syscall.Errno(0x56)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x6e)\n\tETOOMANYREFS    = syscall.Errno(0x6d)\n\tEUCLEAN         = syscall.Errno(0x75)\n\tEUNATCH         = syscall.Errno(0x31)\n\tEUSERS          = syscall.Errno(0x57)\n\tEXFULL          = syscall.Errno(0x36)\n)\n\n// Signals\nconst (\n\tSIGBUS    = syscall.Signal(0x7)\n\tSIGCHLD   = syscall.Signal(0x11)\n\tSIGCLD    = syscall.Signal(0x11)\n\tSIGCONT   = syscall.Signal(0x12)\n\tSIGIO     = syscall.Signal(0x1d)\n\tSIGPOLL   = syscall.Signal(0x1d)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x1e)\n\tSIGSTKFLT = syscall.Signal(0x10)\n\tSIGSTOP   = syscall.Signal(0x13)\n\tSIGSYS    = syscall.Signal(0x1f)\n\tSIGTSTP   = syscall.Signal(0x14)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x17)\n\tSIGUSR1   = syscall.Signal(0xa)\n\tSIGUSR2   = syscall.Signal(0xc)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{36, \"ENAMETOOLONG\", \"file name too long\"},\n\t{37, \"ENOLCK\", \"no locks available\"},\n\t{38, \"ENOSYS\", \"function not implemented\"},\n\t{39, \"ENOTEMPTY\", \"directory not empty\"},\n\t{40, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{42, \"ENOMSG\", \"no message of desired type\"},\n\t{43, \"EIDRM\", \"identifier removed\"},\n\t{44, \"ECHRNG\", \"channel number out of range\"},\n\t{45, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{46, \"EL3HLT\", \"level 3 halted\"},\n\t{47, \"EL3RST\", \"level 3 reset\"},\n\t{48, \"ELNRNG\", \"link number out of range\"},\n\t{49, \"EUNATCH\", \"protocol driver not attached\"},\n\t{50, \"ENOCSI\", \"no CSI structure available\"},\n\t{51, \"EL2HLT\", \"level 2 halted\"},\n\t{52, \"EBADE\", \"invalid exchange\"},\n\t{53, \"EBADR\", \"invalid request descriptor\"},\n\t{54, \"EXFULL\", \"exchange full\"},\n\t{55, \"ENOANO\", \"no anode\"},\n\t{56, \"EBADRQC\", \"invalid request code\"},\n\t{57, \"EBADSLT\", \"invalid slot\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{72, \"EMULTIHOP\", \"multihop attempted\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EBADMSG\", \"bad message\"},\n\t{75, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{76, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{77, \"EBADFD\", \"file descriptor in bad state\"},\n\t{78, \"EREMCHG\", \"remote address changed\"},\n\t{79, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{80, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{81, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{82, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{83, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{84, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{85, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{86, \"ESTRPIPE\", \"streams pipe error\"},\n\t{87, \"EUSERS\", \"too many users\"},\n\t{88, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{89, \"EDESTADDRREQ\", \"destination address required\"},\n\t{90, \"EMSGSIZE\", \"message too long\"},\n\t{91, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{92, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{93, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{94, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{95, \"ENOTSUP\", \"operation not supported\"},\n\t{96, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{97, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{98, \"EADDRINUSE\", \"address already in use\"},\n\t{99, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{100, \"ENETDOWN\", \"network is down\"},\n\t{101, \"ENETUNREACH\", \"network is unreachable\"},\n\t{102, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{103, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{104, \"ECONNRESET\", \"connection reset by peer\"},\n\t{105, \"ENOBUFS\", \"no buffer space available\"},\n\t{106, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{107, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{108, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{109, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{110, \"ETIMEDOUT\", \"connection timed out\"},\n\t{111, \"ECONNREFUSED\", \"connection refused\"},\n\t{112, \"EHOSTDOWN\", \"host is down\"},\n\t{113, \"EHOSTUNREACH\", \"no route to host\"},\n\t{114, \"EALREADY\", \"operation already in progress\"},\n\t{115, \"EINPROGRESS\", \"operation now in progress\"},\n\t{116, \"ESTALE\", \"stale file handle\"},\n\t{117, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{118, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{119, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{120, \"EISNAM\", \"is a named type file\"},\n\t{121, \"EREMOTEIO\", \"remote I/O error\"},\n\t{122, \"EDQUOT\", \"disk quota exceeded\"},\n\t{123, \"ENOMEDIUM\", \"no medium found\"},\n\t{124, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{125, \"ECANCELED\", \"operation canceled\"},\n\t{126, \"ENOKEY\", \"required key not available\"},\n\t{127, \"EKEYEXPIRED\", \"key has expired\"},\n\t{128, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{129, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{130, \"EOWNERDEAD\", \"owner died\"},\n\t{131, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{132, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{133, \"EHWPOISON\", \"memory page has hardware error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGBUS\", \"bus error\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGUSR1\", \"user defined signal 1\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGUSR2\", \"user defined signal 2\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGSTKFLT\", \"stack fault\"},\n\t{17, \"SIGCHLD\", \"child exited\"},\n\t{18, \"SIGCONT\", \"continued\"},\n\t{19, \"SIGSTOP\", \"stopped (signal)\"},\n\t{20, \"SIGTSTP\", \"stopped\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGURG\", \"urgent I/O condition\"},\n\t{24, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"file size limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window changed\"},\n\t{29, \"SIGIO\", \"I/O possible\"},\n\t{30, \"SIGPWR\", \"power failure\"},\n\t{31, \"SIGSYS\", \"bad system call\"},\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/loong64/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build loong64 && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/loong64/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x1008\n\tB115200                          = 0x1002\n\tB1152000                         = 0x1009\n\tB1500000                         = 0x100a\n\tB2000000                         = 0x100b\n\tB230400                          = 0x1003\n\tB2500000                         = 0x100c\n\tB3000000                         = 0x100d\n\tB3500000                         = 0x100e\n\tB4000000                         = 0x100f\n\tB460800                          = 0x1004\n\tB500000                          = 0x1005\n\tB57600                           = 0x1001\n\tB576000                          = 0x1006\n\tB921600                          = 0x1007\n\tBLKALIGNOFF                      = 0x127a\n\tBLKBSZGET                        = 0x80081270\n\tBLKBSZSET                        = 0x40081271\n\tBLKDISCARD                       = 0x1277\n\tBLKDISCARDZEROES                 = 0x127c\n\tBLKFLSBUF                        = 0x1261\n\tBLKFRAGET                        = 0x1265\n\tBLKFRASET                        = 0x1264\n\tBLKGETDISKSEQ                    = 0x80081280\n\tBLKGETSIZE                       = 0x1260\n\tBLKGETSIZE64                     = 0x80081272\n\tBLKIOMIN                         = 0x1278\n\tBLKIOOPT                         = 0x1279\n\tBLKPBSZGET                       = 0x127b\n\tBLKRAGET                         = 0x1263\n\tBLKRASET                         = 0x1262\n\tBLKROGET                         = 0x125e\n\tBLKROSET                         = 0x125d\n\tBLKROTATIONAL                    = 0x127e\n\tBLKRRPART                        = 0x125f\n\tBLKSECDISCARD                    = 0x127d\n\tBLKSECTGET                       = 0x1267\n\tBLKSECTSET                       = 0x1266\n\tBLKSSZGET                        = 0x1268\n\tBLKZEROOUT                       = 0x127f\n\tBOTHER                           = 0x1000\n\tBS1                              = 0x2000\n\tBSDLY                            = 0x2000\n\tCBAUD                            = 0x100f\n\tCBAUDEX                          = 0x1000\n\tCIBAUD                           = 0x100f0000\n\tCLOCAL                           = 0x800\n\tCR1                              = 0x200\n\tCR2                              = 0x400\n\tCR3                              = 0x600\n\tCRDLY                            = 0x600\n\tCREAD                            = 0x80\n\tCS6                              = 0x10\n\tCS7                              = 0x20\n\tCS8                              = 0x30\n\tCSIZE                            = 0x30\n\tCSTOPB                           = 0x40\n\tDM_MPATH_PROBE_PATHS             = 0xfd12\n\tECCGETLAYOUT                     = 0x81484d11\n\tECCGETSTATS                      = 0x80104d12\n\tECHOCTL                          = 0x200\n\tECHOE                            = 0x10\n\tECHOK                            = 0x20\n\tECHOKE                           = 0x800\n\tECHONL                           = 0x40\n\tECHOPRT                          = 0x400\n\tEFD_CLOEXEC                      = 0x80000\n\tEFD_NONBLOCK                     = 0x800\n\tEPIOCGPARAMS                     = 0x80088a02\n\tEPIOCSPARAMS                     = 0x40088a01\n\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000\n\tFF1                              = 0x8000\n\tFFDLY                            = 0x8000\n\tFICLONE                          = 0x40049409\n\tFICLONERANGE                     = 0x4020940d\n\tFLUSHO                           = 0x1000\n\tFPU_CTX_MAGIC                    = 0x46505501\n\tFS_IOC_ENABLE_VERITY             = 0x40806685\n\tFS_IOC_GETFLAGS                  = 0x80086601\n\tFS_IOC_GET_ENCRYPTION_NONCE      = 0x8010661b\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x400c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x40106614\n\tFS_IOC_SETFLAGS                  = 0x40086602\n\tFS_IOC_SET_ENCRYPTION_POLICY     = 0x800c6613\n\tF_GETLK                          = 0x5\n\tF_GETLK64                        = 0x5\n\tF_GETOWN                         = 0x9\n\tF_RDLCK                          = 0x0\n\tF_SETLK                          = 0x6\n\tF_SETLK64                        = 0x6\n\tF_SETLKW                         = 0x7\n\tF_SETLKW64                       = 0x7\n\tF_SETOWN                         = 0x8\n\tF_UNLCK                          = 0x2\n\tF_WRLCK                          = 0x1\n\tHIDIOCGRAWINFO                   = 0x80084803\n\tHIDIOCGRDESC                     = 0x90044802\n\tHIDIOCGRDESCSIZE                 = 0x80044801\n\tHIDIOCREVOKE                     = 0x4004480d\n\tHUPCL                            = 0x400\n\tICANON                           = 0x2\n\tIEXTEN                           = 0x8000\n\tIN_CLOEXEC                       = 0x80000\n\tIN_NONBLOCK                      = 0x800\n\tIOCTL_MEI_NOTIFY_GET             = 0x80044803\n\tIOCTL_MEI_NOTIFY_SET             = 0x40044802\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x7b9\n\tIPV6_FLOWINFO_MASK               = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK              = 0xffff0f00\n\tISIG                             = 0x1\n\tIUCLC                            = 0x200\n\tIXOFF                            = 0x1000\n\tIXON                             = 0x400\n\tLASX_CTX_MAGIC                   = 0x41535801\n\tLBT_CTX_MAGIC                    = 0x42540001\n\tLSX_CTX_MAGIC                    = 0x53580001\n\tMAP_ANON                         = 0x20\n\tMAP_ANONYMOUS                    = 0x20\n\tMAP_DENYWRITE                    = 0x800\n\tMAP_EXECUTABLE                   = 0x1000\n\tMAP_GROWSDOWN                    = 0x100\n\tMAP_HUGETLB                      = 0x40000\n\tMAP_LOCKED                       = 0x2000\n\tMAP_NONBLOCK                     = 0x10000\n\tMAP_NORESERVE                    = 0x4000\n\tMAP_POPULATE                     = 0x8000\n\tMAP_STACK                        = 0x20000\n\tMAP_SYNC                         = 0x80000\n\tMCL_CURRENT                      = 0x1\n\tMCL_FUTURE                       = 0x2\n\tMCL_ONFAULT                      = 0x4\n\tMEMERASE                         = 0x40084d02\n\tMEMERASE64                       = 0x40104d14\n\tMEMGETBADBLOCK                   = 0x40084d0b\n\tMEMGETINFO                       = 0x80204d01\n\tMEMGETOOBSEL                     = 0x80c84d0a\n\tMEMGETREGIONCOUNT                = 0x80044d07\n\tMEMISLOCKED                      = 0x80084d17\n\tMEMLOCK                          = 0x40084d05\n\tMEMREAD                          = 0xc0404d1a\n\tMEMREADOOB                       = 0xc0104d04\n\tMEMSETBADBLOCK                   = 0x40084d0c\n\tMEMUNLOCK                        = 0x40084d06\n\tMEMWRITEOOB                      = 0xc0104d03\n\tMTDFILEMODE                      = 0x4d13\n\tNFDBITS                          = 0x40\n\tNLDLY                            = 0x100\n\tNOFLSH                           = 0x80\n\tNS_GET_MNTNS_ID                  = 0x8008b705\n\tNS_GET_NSTYPE                    = 0xb703\n\tNS_GET_OWNER_UID                 = 0xb704\n\tNS_GET_PARENT                    = 0xb702\n\tNS_GET_PID_FROM_PIDNS            = 0x8004b706\n\tNS_GET_PID_IN_PIDNS              = 0x8004b708\n\tNS_GET_TGID_FROM_PIDNS           = 0x8004b707\n\tNS_GET_TGID_IN_PIDNS             = 0x8004b709\n\tNS_GET_USERNS                    = 0xb701\n\tOLCUC                            = 0x2\n\tONLCR                            = 0x4\n\tOTPERASE                         = 0x400c4d19\n\tOTPGETREGIONCOUNT                = 0x40044d0e\n\tOTPGETREGIONINFO                 = 0x400c4d0f\n\tOTPLOCK                          = 0x800c4d10\n\tOTPSELECT                        = 0x80044d0d\n\tO_APPEND                         = 0x400\n\tO_ASYNC                          = 0x2000\n\tO_CLOEXEC                        = 0x80000\n\tO_CREAT                          = 0x40\n\tO_DIRECT                         = 0x4000\n\tO_DIRECTORY                      = 0x10000\n\tO_DSYNC                          = 0x1000\n\tO_EXCL                           = 0x80\n\tO_FSYNC                          = 0x101000\n\tO_LARGEFILE                      = 0x0\n\tO_NDELAY                         = 0x800\n\tO_NOATIME                        = 0x40000\n\tO_NOCTTY                         = 0x100\n\tO_NOFOLLOW                       = 0x20000\n\tO_NONBLOCK                       = 0x800\n\tO_PATH                           = 0x200000\n\tO_RSYNC                          = 0x101000\n\tO_SYNC                           = 0x101000\n\tO_TMPFILE                        = 0x410000\n\tO_TRUNC                          = 0x200\n\tPARENB                           = 0x100\n\tPARODD                           = 0x200\n\tPENDIN                           = 0x4000\n\tPERF_EVENT_IOC_DISABLE           = 0x2401\n\tPERF_EVENT_IOC_ENABLE            = 0x2400\n\tPERF_EVENT_IOC_ID                = 0x80082407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4008240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT      = 0x40042409\n\tPERF_EVENT_IOC_PERIOD            = 0x40082404\n\tPERF_EVENT_IOC_QUERY_BPF         = 0xc008240a\n\tPERF_EVENT_IOC_REFRESH           = 0x2402\n\tPERF_EVENT_IOC_RESET             = 0x2403\n\tPERF_EVENT_IOC_SET_BPF           = 0x40042408\n\tPERF_EVENT_IOC_SET_FILTER        = 0x40082406\n\tPERF_EVENT_IOC_SET_OUTPUT        = 0x2405\n\tPPPIOCATTACH                     = 0x4004743d\n\tPPPIOCATTCHAN                    = 0x40047438\n\tPPPIOCBRIDGECHAN                 = 0x40047435\n\tPPPIOCCONNECT                    = 0x4004743a\n\tPPPIOCDETACH                     = 0x4004743c\n\tPPPIOCDISCONN                    = 0x7439\n\tPPPIOCGASYNCMAP                  = 0x80047458\n\tPPPIOCGCHAN                      = 0x80047437\n\tPPPIOCGDEBUG                     = 0x80047441\n\tPPPIOCGFLAGS                     = 0x8004745a\n\tPPPIOCGIDLE                      = 0x8010743f\n\tPPPIOCGIDLE32                    = 0x8008743f\n\tPPPIOCGIDLE64                    = 0x8010743f\n\tPPPIOCGL2TPSTATS                 = 0x80487436\n\tPPPIOCGMRU                       = 0x80047453\n\tPPPIOCGRASYNCMAP                 = 0x80047455\n\tPPPIOCGUNIT                      = 0x80047456\n\tPPPIOCGXASYNCMAP                 = 0x80207450\n\tPPPIOCSACTIVE                    = 0x40107446\n\tPPPIOCSASYNCMAP                  = 0x40047457\n\tPPPIOCSCOMPRESS                  = 0x4010744d\n\tPPPIOCSDEBUG                     = 0x40047440\n\tPPPIOCSFLAGS                     = 0x40047459\n\tPPPIOCSMAXCID                    = 0x40047451\n\tPPPIOCSMRRU                      = 0x4004743b\n\tPPPIOCSMRU                       = 0x40047452\n\tPPPIOCSNPMODE                    = 0x4008744b\n\tPPPIOCSPASS                      = 0x40107447\n\tPPPIOCSRASYNCMAP                 = 0x40047454\n\tPPPIOCSXASYNCMAP                 = 0x4020744f\n\tPPPIOCUNBRIDGECHAN               = 0x7434\n\tPPPIOCXFERUNIT                   = 0x744e\n\tPR_SET_PTRACER_ANY               = 0xffffffffffffffff\n\tPTP_CLOCK_GETCAPS                = 0x80503d01\n\tPTP_CLOCK_GETCAPS2               = 0x80503d0a\n\tPTP_ENABLE_PPS                   = 0x40043d04\n\tPTP_ENABLE_PPS2                  = 0x40043d0d\n\tPTP_EXTTS_REQUEST                = 0x40103d02\n\tPTP_EXTTS_REQUEST2               = 0x40103d0b\n\tPTP_MASK_CLEAR_ALL               = 0x3d13\n\tPTP_MASK_EN_SINGLE               = 0x40043d14\n\tPTP_PEROUT_REQUEST               = 0x40383d03\n\tPTP_PEROUT_REQUEST2              = 0x40383d0c\n\tPTP_PIN_SETFUNC                  = 0x40603d07\n\tPTP_PIN_SETFUNC2                 = 0x40603d10\n\tPTP_SYS_OFFSET                   = 0x43403d05\n\tPTP_SYS_OFFSET2                  = 0x43403d0e\n\tPTRACE_SYSEMU                    = 0x1f\n\tPTRACE_SYSEMU_SINGLESTEP         = 0x20\n\tRLIMIT_AS                        = 0x9\n\tRLIMIT_MEMLOCK                   = 0x8\n\tRLIMIT_NOFILE                    = 0x7\n\tRLIMIT_NPROC                     = 0x6\n\tRLIMIT_RSS                       = 0x5\n\tRNDADDENTROPY                    = 0x40085203\n\tRNDADDTOENTCNT                   = 0x40045201\n\tRNDCLEARPOOL                     = 0x5206\n\tRNDGETENTCNT                     = 0x80045200\n\tRNDGETPOOL                       = 0x80085202\n\tRNDRESEEDCRNG                    = 0x5207\n\tRNDZAPENTCNT                     = 0x5204\n\tRTC_AIE_OFF                      = 0x7002\n\tRTC_AIE_ON                       = 0x7001\n\tRTC_ALM_READ                     = 0x80247008\n\tRTC_ALM_SET                      = 0x40247007\n\tRTC_EPOCH_READ                   = 0x8008700d\n\tRTC_EPOCH_SET                    = 0x4008700e\n\tRTC_IRQP_READ                    = 0x8008700b\n\tRTC_IRQP_SET                     = 0x4008700c\n\tRTC_PARAM_GET                    = 0x40187013\n\tRTC_PARAM_SET                    = 0x40187014\n\tRTC_PIE_OFF                      = 0x7006\n\tRTC_PIE_ON                       = 0x7005\n\tRTC_PLL_GET                      = 0x80207011\n\tRTC_PLL_SET                      = 0x40207012\n\tRTC_RD_TIME                      = 0x80247009\n\tRTC_SET_TIME                     = 0x4024700a\n\tRTC_UIE_OFF                      = 0x7004\n\tRTC_UIE_ON                       = 0x7003\n\tRTC_VL_CLR                       = 0x7014\n\tRTC_VL_READ                      = 0x80047013\n\tRTC_WIE_OFF                      = 0x7010\n\tRTC_WIE_ON                       = 0x700f\n\tRTC_WKALM_RD                     = 0x80287010\n\tRTC_WKALM_SET                    = 0x4028700f\n\tSCM_DEVMEM_DMABUF                = 0x4f\n\tSCM_DEVMEM_LINEAR                = 0x4e\n\tSCM_TIMESTAMPING                 = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS       = 0x36\n\tSCM_TIMESTAMPING_PKTINFO         = 0x3a\n\tSCM_TIMESTAMPNS                  = 0x23\n\tSCM_TS_OPT_ID                    = 0x51\n\tSCM_TXTIME                       = 0x3d\n\tSCM_WIFI_STATUS                  = 0x29\n\tSECCOMP_IOCTL_NOTIF_ADDFD        = 0x40182103\n\tSECCOMP_IOCTL_NOTIF_ID_VALID     = 0x40082102\n\tSECCOMP_IOCTL_NOTIF_SET_FLAGS    = 0x40082104\n\tSFD_CLOEXEC                      = 0x80000\n\tSFD_NONBLOCK                     = 0x800\n\tSIOCATMARK                       = 0x8905\n\tSIOCGPGRP                        = 0x8904\n\tSIOCGSTAMPNS_NEW                 = 0x80108907\n\tSIOCGSTAMP_NEW                   = 0x80108906\n\tSIOCINQ                          = 0x541b\n\tSIOCOUTQ                         = 0x5411\n\tSIOCSPGRP                        = 0x8902\n\tSOCK_CLOEXEC                     = 0x80000\n\tSOCK_DGRAM                       = 0x2\n\tSOCK_NONBLOCK                    = 0x800\n\tSOCK_STREAM                      = 0x1\n\tSOL_SOCKET                       = 0x1\n\tSO_ACCEPTCONN                    = 0x1e\n\tSO_ATTACH_BPF                    = 0x32\n\tSO_ATTACH_REUSEPORT_CBPF         = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF         = 0x34\n\tSO_BINDTODEVICE                  = 0x19\n\tSO_BINDTOIFINDEX                 = 0x3e\n\tSO_BPF_EXTENSIONS                = 0x30\n\tSO_BROADCAST                     = 0x6\n\tSO_BSDCOMPAT                     = 0xe\n\tSO_BUF_LOCK                      = 0x48\n\tSO_BUSY_POLL                     = 0x2e\n\tSO_BUSY_POLL_BUDGET              = 0x46\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\n\tSO_DEVMEM_DMABUF                 = 0x4f\n\tSO_DEVMEM_DONTNEED               = 0x50\n\tSO_DEVMEM_LINEAR                 = 0x4e\n\tSO_DOMAIN                        = 0x27\n\tSO_DONTROUTE                     = 0x5\n\tSO_ERROR                         = 0x4\n\tSO_INCOMING_CPU                  = 0x31\n\tSO_INCOMING_NAPI_ID              = 0x38\n\tSO_KEEPALIVE                     = 0x9\n\tSO_LINGER                        = 0xd\n\tSO_LOCK_FILTER                   = 0x2c\n\tSO_MARK                          = 0x24\n\tSO_MAX_PACING_RATE               = 0x2f\n\tSO_MEMINFO                       = 0x37\n\tSO_NETNS_COOKIE                  = 0x47\n\tSO_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0xa\n\tSO_PASSCRED                      = 0x10\n\tSO_PASSPIDFD                     = 0x4c\n\tSO_PASSRIGHTS                    = 0x53\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x11\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERPIDFD                     = 0x4d\n\tSO_PEERSEC                       = 0x1f\n\tSO_PREFER_BUSY_POLL              = 0x45\n\tSO_PROTOCOL                      = 0x26\n\tSO_RCVBUF                        = 0x8\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x12\n\tSO_RCVMARK                       = 0x4b\n\tSO_RCVPRIORITY                   = 0x52\n\tSO_RCVTIMEO                      = 0x14\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x14\n\tSO_RESERVE_MEM                   = 0x49\n\tSO_REUSEADDR                     = 0x2\n\tSO_REUSEPORT                     = 0xf\n\tSO_RXQ_OVFL                      = 0x28\n\tSO_SECURITY_AUTHENTICATION       = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK   = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT = 0x17\n\tSO_SELECT_ERR_QUEUE              = 0x2d\n\tSO_SNDBUF                        = 0x7\n\tSO_SNDBUFFORCE                   = 0x20\n\tSO_SNDLOWAT                      = 0x13\n\tSO_SNDTIMEO                      = 0x15\n\tSO_SNDTIMEO_NEW                  = 0x43\n\tSO_SNDTIMEO_OLD                  = 0x15\n\tSO_TIMESTAMPING                  = 0x25\n\tSO_TIMESTAMPING_NEW              = 0x41\n\tSO_TIMESTAMPING_OLD              = 0x25\n\tSO_TIMESTAMPNS                   = 0x23\n\tSO_TIMESTAMPNS_NEW               = 0x40\n\tSO_TIMESTAMPNS_OLD               = 0x23\n\tSO_TIMESTAMP_NEW                 = 0x3f\n\tSO_TXREHASH                      = 0x4a\n\tSO_TXTIME                        = 0x3d\n\tSO_TYPE                          = 0x3\n\tSO_WIFI_STATUS                   = 0x29\n\tSO_ZEROCOPY                      = 0x3c\n\tTAB1                             = 0x800\n\tTAB2                             = 0x1000\n\tTAB3                             = 0x1800\n\tTABDLY                           = 0x1800\n\tTCFLSH                           = 0x540b\n\tTCGETA                           = 0x5405\n\tTCGETS                           = 0x5401\n\tTCGETS2                          = 0x802c542a\n\tTCGETX                           = 0x5432\n\tTCSAFLUSH                        = 0x2\n\tTCSBRK                           = 0x5409\n\tTCSBRKP                          = 0x5425\n\tTCSETA                           = 0x5406\n\tTCSETAF                          = 0x5408\n\tTCSETAW                          = 0x5407\n\tTCSETS                           = 0x5402\n\tTCSETS2                          = 0x402c542b\n\tTCSETSF                          = 0x5404\n\tTCSETSF2                         = 0x402c542d\n\tTCSETSW                          = 0x5403\n\tTCSETSW2                         = 0x402c542c\n\tTCSETX                           = 0x5433\n\tTCSETXF                          = 0x5434\n\tTCSETXW                          = 0x5435\n\tTCXONC                           = 0x540a\n\tTFD_CLOEXEC                      = 0x80000\n\tTFD_NONBLOCK                     = 0x800\n\tTIOCCBRK                         = 0x5428\n\tTIOCCONS                         = 0x541d\n\tTIOCEXCL                         = 0x540c\n\tTIOCGDEV                         = 0x80045432\n\tTIOCGETD                         = 0x5424\n\tTIOCGEXCL                        = 0x80045440\n\tTIOCGICOUNT                      = 0x545d\n\tTIOCGISO7816                     = 0x80285442\n\tTIOCGLCKTRMIOS                   = 0x5456\n\tTIOCGPGRP                        = 0x540f\n\tTIOCGPKT                         = 0x80045438\n\tTIOCGPTLCK                       = 0x80045439\n\tTIOCGPTN                         = 0x80045430\n\tTIOCGPTPEER                      = 0x5441\n\tTIOCGRS485                       = 0x542e\n\tTIOCGSERIAL                      = 0x541e\n\tTIOCGSID                         = 0x5429\n\tTIOCGSOFTCAR                     = 0x5419\n\tTIOCGWINSZ                       = 0x5413\n\tTIOCINQ                          = 0x541b\n\tTIOCLINUX                        = 0x541c\n\tTIOCMBIC                         = 0x5417\n\tTIOCMBIS                         = 0x5416\n\tTIOCMGET                         = 0x5415\n\tTIOCMIWAIT                       = 0x545c\n\tTIOCMSET                         = 0x5418\n\tTIOCM_CAR                        = 0x40\n\tTIOCM_CD                         = 0x40\n\tTIOCM_CTS                        = 0x20\n\tTIOCM_DSR                        = 0x100\n\tTIOCM_RI                         = 0x80\n\tTIOCM_RNG                        = 0x80\n\tTIOCM_SR                         = 0x10\n\tTIOCM_ST                         = 0x8\n\tTIOCNOTTY                        = 0x5422\n\tTIOCNXCL                         = 0x540d\n\tTIOCOUTQ                         = 0x5411\n\tTIOCPKT                          = 0x5420\n\tTIOCSBRK                         = 0x5427\n\tTIOCSCTTY                        = 0x540e\n\tTIOCSERCONFIG                    = 0x5453\n\tTIOCSERGETLSR                    = 0x5459\n\tTIOCSERGETMULTI                  = 0x545a\n\tTIOCSERGSTRUCT                   = 0x5458\n\tTIOCSERGWILD                     = 0x5454\n\tTIOCSERSETMULTI                  = 0x545b\n\tTIOCSERSWILD                     = 0x5455\n\tTIOCSER_TEMT                     = 0x1\n\tTIOCSETD                         = 0x5423\n\tTIOCSIG                          = 0x40045436\n\tTIOCSISO7816                     = 0xc0285443\n\tTIOCSLCKTRMIOS                   = 0x5457\n\tTIOCSPGRP                        = 0x5410\n\tTIOCSPTLCK                       = 0x40045431\n\tTIOCSRS485                       = 0x542f\n\tTIOCSSERIAL                      = 0x541f\n\tTIOCSSOFTCAR                     = 0x541a\n\tTIOCSTI                          = 0x5412\n\tTIOCSWINSZ                       = 0x5414\n\tTIOCVHANGUP                      = 0x5437\n\tTOSTOP                           = 0x100\n\tTUNATTACHFILTER                  = 0x401054d5\n\tTUNDETACHFILTER                  = 0x401054d6\n\tTUNGETDEVNETNS                   = 0x54e3\n\tTUNGETFEATURES                   = 0x800454cf\n\tTUNGETFILTER                     = 0x801054db\n\tTUNGETIFF                        = 0x800454d2\n\tTUNGETSNDBUF                     = 0x800454d3\n\tTUNGETVNETBE                     = 0x800454df\n\tTUNGETVNETHDRSZ                  = 0x800454d7\n\tTUNGETVNETLE                     = 0x800454dd\n\tTUNSETCARRIER                    = 0x400454e2\n\tTUNSETDEBUG                      = 0x400454c9\n\tTUNSETFILTEREBPF                 = 0x800454e1\n\tTUNSETGROUP                      = 0x400454ce\n\tTUNSETIFF                        = 0x400454ca\n\tTUNSETIFINDEX                    = 0x400454da\n\tTUNSETLINK                       = 0x400454cd\n\tTUNSETNOCSUM                     = 0x400454c8\n\tTUNSETOFFLOAD                    = 0x400454d0\n\tTUNSETOWNER                      = 0x400454cc\n\tTUNSETPERSIST                    = 0x400454cb\n\tTUNSETQUEUE                      = 0x400454d9\n\tTUNSETSNDBUF                     = 0x400454d4\n\tTUNSETSTEERINGEBPF               = 0x800454e0\n\tTUNSETTXFILTER                   = 0x400454d1\n\tTUNSETVNETBE                     = 0x400454de\n\tTUNSETVNETHDRSZ                  = 0x400454d8\n\tTUNSETVNETLE                     = 0x400454dc\n\tUBI_IOCATT                       = 0x40186f40\n\tUBI_IOCDET                       = 0x40046f41\n\tUBI_IOCEBCH                      = 0x40044f02\n\tUBI_IOCEBER                      = 0x40044f01\n\tUBI_IOCEBISMAP                   = 0x80044f05\n\tUBI_IOCEBMAP                     = 0x40084f03\n\tUBI_IOCEBUNMAP                   = 0x40044f04\n\tUBI_IOCMKVOL                     = 0x40986f00\n\tUBI_IOCRMVOL                     = 0x40046f01\n\tUBI_IOCRNVOL                     = 0x51106f03\n\tUBI_IOCRPEB                      = 0x40046f04\n\tUBI_IOCRSVOL                     = 0x400c6f02\n\tUBI_IOCSETVOLPROP                = 0x40104f06\n\tUBI_IOCSPEB                      = 0x40046f05\n\tUBI_IOCVOLCRBLK                  = 0x40804f07\n\tUBI_IOCVOLRMBLK                  = 0x4f08\n\tUBI_IOCVOLUP                     = 0x40084f00\n\tVDISCARD                         = 0xd\n\tVEOF                             = 0x4\n\tVEOL                             = 0xb\n\tVEOL2                            = 0x10\n\tVMIN                             = 0x6\n\tVREPRINT                         = 0xc\n\tVSTART                           = 0x8\n\tVSTOP                            = 0x9\n\tVSUSP                            = 0xa\n\tVSWTC                            = 0x7\n\tVT1                              = 0x4000\n\tVTDLY                            = 0x4000\n\tVTIME                            = 0x5\n\tVWERASE                          = 0xe\n\tWDIOC_GETBOOTSTATUS              = 0x80045702\n\tWDIOC_GETPRETIMEOUT              = 0x80045709\n\tWDIOC_GETSTATUS                  = 0x80045701\n\tWDIOC_GETSUPPORT                 = 0x80285700\n\tWDIOC_GETTEMP                    = 0x80045703\n\tWDIOC_GETTIMELEFT                = 0x8004570a\n\tWDIOC_GETTIMEOUT                 = 0x80045707\n\tWDIOC_KEEPALIVE                  = 0x80045705\n\tWDIOC_SETOPTIONS                 = 0x80045704\n\tWORDSIZE                         = 0x40\n\tXCASE                            = 0x4\n\tXTABS                            = 0x1800\n\t_HIDIOCGRAWNAME                  = 0x80804804\n\t_HIDIOCGRAWPHYS                  = 0x80404805\n\t_HIDIOCGRAWUNIQ                  = 0x80404808\n)\n\n// Errors\nconst (\n\tEADDRINUSE      = syscall.Errno(0x62)\n\tEADDRNOTAVAIL   = syscall.Errno(0x63)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x61)\n\tEALREADY        = syscall.Errno(0x72)\n\tEBADE           = syscall.Errno(0x34)\n\tEBADFD          = syscall.Errno(0x4d)\n\tEBADMSG         = syscall.Errno(0x4a)\n\tEBADR           = syscall.Errno(0x35)\n\tEBADRQC         = syscall.Errno(0x38)\n\tEBADSLT         = syscall.Errno(0x39)\n\tEBFONT          = syscall.Errno(0x3b)\n\tECANCELED       = syscall.Errno(0x7d)\n\tECHRNG          = syscall.Errno(0x2c)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x67)\n\tECONNREFUSED    = syscall.Errno(0x6f)\n\tECONNRESET      = syscall.Errno(0x68)\n\tEDEADLK         = syscall.Errno(0x23)\n\tEDEADLOCK       = syscall.Errno(0x23)\n\tEDESTADDRREQ    = syscall.Errno(0x59)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x7a)\n\tEHOSTDOWN       = syscall.Errno(0x70)\n\tEHOSTUNREACH    = syscall.Errno(0x71)\n\tEHWPOISON       = syscall.Errno(0x85)\n\tEIDRM           = syscall.Errno(0x2b)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x73)\n\tEISCONN         = syscall.Errno(0x6a)\n\tEISNAM          = syscall.Errno(0x78)\n\tEKEYEXPIRED     = syscall.Errno(0x7f)\n\tEKEYREJECTED    = syscall.Errno(0x81)\n\tEKEYREVOKED     = syscall.Errno(0x80)\n\tEL2HLT          = syscall.Errno(0x33)\n\tEL2NSYNC        = syscall.Errno(0x2d)\n\tEL3HLT          = syscall.Errno(0x2e)\n\tEL3RST          = syscall.Errno(0x2f)\n\tELIBACC         = syscall.Errno(0x4f)\n\tELIBBAD         = syscall.Errno(0x50)\n\tELIBEXEC        = syscall.Errno(0x53)\n\tELIBMAX         = syscall.Errno(0x52)\n\tELIBSCN         = syscall.Errno(0x51)\n\tELNRNG          = syscall.Errno(0x30)\n\tELOOP           = syscall.Errno(0x28)\n\tEMEDIUMTYPE     = syscall.Errno(0x7c)\n\tEMSGSIZE        = syscall.Errno(0x5a)\n\tEMULTIHOP       = syscall.Errno(0x48)\n\tENAMETOOLONG    = syscall.Errno(0x24)\n\tENAVAIL         = syscall.Errno(0x77)\n\tENETDOWN        = syscall.Errno(0x64)\n\tENETRESET       = syscall.Errno(0x66)\n\tENETUNREACH     = syscall.Errno(0x65)\n\tENOANO          = syscall.Errno(0x37)\n\tENOBUFS         = syscall.Errno(0x69)\n\tENOCSI          = syscall.Errno(0x32)\n\tENODATA         = syscall.Errno(0x3d)\n\tENOKEY          = syscall.Errno(0x7e)\n\tENOLCK          = syscall.Errno(0x25)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x7b)\n\tENOMSG          = syscall.Errno(0x2a)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x5c)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x26)\n\tENOTCONN        = syscall.Errno(0x6b)\n\tENOTEMPTY       = syscall.Errno(0x27)\n\tENOTNAM         = syscall.Errno(0x76)\n\tENOTRECOVERABLE = syscall.Errno(0x83)\n\tENOTSOCK        = syscall.Errno(0x58)\n\tENOTSUP         = syscall.Errno(0x5f)\n\tENOTUNIQ        = syscall.Errno(0x4c)\n\tEOPNOTSUPP      = syscall.Errno(0x5f)\n\tEOVERFLOW       = syscall.Errno(0x4b)\n\tEOWNERDEAD      = syscall.Errno(0x82)\n\tEPFNOSUPPORT    = syscall.Errno(0x60)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x5d)\n\tEPROTOTYPE      = syscall.Errno(0x5b)\n\tEREMCHG         = syscall.Errno(0x4e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x79)\n\tERESTART        = syscall.Errno(0x55)\n\tERFKILL         = syscall.Errno(0x84)\n\tESHUTDOWN       = syscall.Errno(0x6c)\n\tESOCKTNOSUPPORT = syscall.Errno(0x5e)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x74)\n\tESTRPIPE        = syscall.Errno(0x56)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x6e)\n\tETOOMANYREFS    = syscall.Errno(0x6d)\n\tEUCLEAN         = syscall.Errno(0x75)\n\tEUNATCH         = syscall.Errno(0x31)\n\tEUSERS          = syscall.Errno(0x57)\n\tEXFULL          = syscall.Errno(0x36)\n)\n\n// Signals\nconst (\n\tSIGBUS    = syscall.Signal(0x7)\n\tSIGCHLD   = syscall.Signal(0x11)\n\tSIGCLD    = syscall.Signal(0x11)\n\tSIGCONT   = syscall.Signal(0x12)\n\tSIGIO     = syscall.Signal(0x1d)\n\tSIGPOLL   = syscall.Signal(0x1d)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x1e)\n\tSIGSTKFLT = syscall.Signal(0x10)\n\tSIGSTOP   = syscall.Signal(0x13)\n\tSIGSYS    = syscall.Signal(0x1f)\n\tSIGTSTP   = syscall.Signal(0x14)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x17)\n\tSIGUSR1   = syscall.Signal(0xa)\n\tSIGUSR2   = syscall.Signal(0xc)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{36, \"ENAMETOOLONG\", \"file name too long\"},\n\t{37, \"ENOLCK\", \"no locks available\"},\n\t{38, \"ENOSYS\", \"function not implemented\"},\n\t{39, \"ENOTEMPTY\", \"directory not empty\"},\n\t{40, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{42, \"ENOMSG\", \"no message of desired type\"},\n\t{43, \"EIDRM\", \"identifier removed\"},\n\t{44, \"ECHRNG\", \"channel number out of range\"},\n\t{45, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{46, \"EL3HLT\", \"level 3 halted\"},\n\t{47, \"EL3RST\", \"level 3 reset\"},\n\t{48, \"ELNRNG\", \"link number out of range\"},\n\t{49, \"EUNATCH\", \"protocol driver not attached\"},\n\t{50, \"ENOCSI\", \"no CSI structure available\"},\n\t{51, \"EL2HLT\", \"level 2 halted\"},\n\t{52, \"EBADE\", \"invalid exchange\"},\n\t{53, \"EBADR\", \"invalid request descriptor\"},\n\t{54, \"EXFULL\", \"exchange full\"},\n\t{55, \"ENOANO\", \"no anode\"},\n\t{56, \"EBADRQC\", \"invalid request code\"},\n\t{57, \"EBADSLT\", \"invalid slot\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{72, \"EMULTIHOP\", \"multihop attempted\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EBADMSG\", \"bad message\"},\n\t{75, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{76, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{77, \"EBADFD\", \"file descriptor in bad state\"},\n\t{78, \"EREMCHG\", \"remote address changed\"},\n\t{79, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{80, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{81, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{82, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{83, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{84, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{85, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{86, \"ESTRPIPE\", \"streams pipe error\"},\n\t{87, \"EUSERS\", \"too many users\"},\n\t{88, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{89, \"EDESTADDRREQ\", \"destination address required\"},\n\t{90, \"EMSGSIZE\", \"message too long\"},\n\t{91, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{92, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{93, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{94, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{95, \"ENOTSUP\", \"operation not supported\"},\n\t{96, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{97, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{98, \"EADDRINUSE\", \"address already in use\"},\n\t{99, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{100, \"ENETDOWN\", \"network is down\"},\n\t{101, \"ENETUNREACH\", \"network is unreachable\"},\n\t{102, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{103, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{104, \"ECONNRESET\", \"connection reset by peer\"},\n\t{105, \"ENOBUFS\", \"no buffer space available\"},\n\t{106, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{107, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{108, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{109, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{110, \"ETIMEDOUT\", \"connection timed out\"},\n\t{111, \"ECONNREFUSED\", \"connection refused\"},\n\t{112, \"EHOSTDOWN\", \"host is down\"},\n\t{113, \"EHOSTUNREACH\", \"no route to host\"},\n\t{114, \"EALREADY\", \"operation already in progress\"},\n\t{115, \"EINPROGRESS\", \"operation now in progress\"},\n\t{116, \"ESTALE\", \"stale file handle\"},\n\t{117, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{118, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{119, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{120, \"EISNAM\", \"is a named type file\"},\n\t{121, \"EREMOTEIO\", \"remote I/O error\"},\n\t{122, \"EDQUOT\", \"disk quota exceeded\"},\n\t{123, \"ENOMEDIUM\", \"no medium found\"},\n\t{124, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{125, \"ECANCELED\", \"operation canceled\"},\n\t{126, \"ENOKEY\", \"required key not available\"},\n\t{127, \"EKEYEXPIRED\", \"key has expired\"},\n\t{128, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{129, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{130, \"EOWNERDEAD\", \"owner died\"},\n\t{131, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{132, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{133, \"EHWPOISON\", \"memory page has hardware error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGBUS\", \"bus error\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGUSR1\", \"user defined signal 1\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGUSR2\", \"user defined signal 2\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGSTKFLT\", \"stack fault\"},\n\t{17, \"SIGCHLD\", \"child exited\"},\n\t{18, \"SIGCONT\", \"continued\"},\n\t{19, \"SIGSTOP\", \"stopped (signal)\"},\n\t{20, \"SIGTSTP\", \"stopped\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGURG\", \"urgent I/O condition\"},\n\t{24, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"file size limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window changed\"},\n\t{29, \"SIGIO\", \"I/O possible\"},\n\t{30, \"SIGPWR\", \"power failure\"},\n\t{31, \"SIGSYS\", \"bad system call\"},\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/mips/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mips && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/mips/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x1008\n\tB115200                          = 0x1002\n\tB1152000                         = 0x1009\n\tB1500000                         = 0x100a\n\tB2000000                         = 0x100b\n\tB230400                          = 0x1003\n\tB2500000                         = 0x100c\n\tB3000000                         = 0x100d\n\tB3500000                         = 0x100e\n\tB4000000                         = 0x100f\n\tB460800                          = 0x1004\n\tB500000                          = 0x1005\n\tB57600                           = 0x1001\n\tB576000                          = 0x1006\n\tB921600                          = 0x1007\n\tBLKALIGNOFF                      = 0x2000127a\n\tBLKBSZGET                        = 0x40041270\n\tBLKBSZSET                        = 0x80041271\n\tBLKDISCARD                       = 0x20001277\n\tBLKDISCARDZEROES                 = 0x2000127c\n\tBLKFLSBUF                        = 0x20001261\n\tBLKFRAGET                        = 0x20001265\n\tBLKFRASET                        = 0x20001264\n\tBLKGETDISKSEQ                    = 0x40081280\n\tBLKGETSIZE                       = 0x20001260\n\tBLKGETSIZE64                     = 0x40041272\n\tBLKIOMIN                         = 0x20001278\n\tBLKIOOPT                         = 0x20001279\n\tBLKPBSZGET                       = 0x2000127b\n\tBLKRAGET                         = 0x20001263\n\tBLKRASET                         = 0x20001262\n\tBLKROGET                         = 0x2000125e\n\tBLKROSET                         = 0x2000125d\n\tBLKROTATIONAL                    = 0x2000127e\n\tBLKRRPART                        = 0x2000125f\n\tBLKSECDISCARD                    = 0x2000127d\n\tBLKSECTGET                       = 0x20001267\n\tBLKSECTSET                       = 0x20001266\n\tBLKSSZGET                        = 0x20001268\n\tBLKZEROOUT                       = 0x2000127f\n\tBOTHER                           = 0x1000\n\tBS1                              = 0x2000\n\tBSDLY                            = 0x2000\n\tCBAUD                            = 0x100f\n\tCBAUDEX                          = 0x1000\n\tCIBAUD                           = 0x100f0000\n\tCLOCAL                           = 0x800\n\tCR1                              = 0x200\n\tCR2                              = 0x400\n\tCR3                              = 0x600\n\tCRDLY                            = 0x600\n\tCREAD                            = 0x80\n\tCS6                              = 0x10\n\tCS7                              = 0x20\n\tCS8                              = 0x30\n\tCSIZE                            = 0x30\n\tCSTOPB                           = 0x40\n\tDM_MPATH_PROBE_PATHS             = 0x2000fd12\n\tECCGETLAYOUT                     = 0x41484d11\n\tECCGETSTATS                      = 0x40104d12\n\tECHOCTL                          = 0x200\n\tECHOE                            = 0x10\n\tECHOK                            = 0x20\n\tECHOKE                           = 0x800\n\tECHONL                           = 0x40\n\tECHOPRT                          = 0x400\n\tEFD_CLOEXEC                      = 0x80000\n\tEFD_NONBLOCK                     = 0x80\n\tEPIOCGPARAMS                     = 0x40088a02\n\tEPIOCSPARAMS                     = 0x80088a01\n\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000\n\tFF1                              = 0x8000\n\tFFDLY                            = 0x8000\n\tFICLONE                          = 0x80049409\n\tFICLONERANGE                     = 0x8020940d\n\tFLUSHO                           = 0x2000\n\tFS_IOC_ENABLE_VERITY             = 0x80806685\n\tFS_IOC_GETFLAGS                  = 0x40046601\n\tFS_IOC_GET_ENCRYPTION_NONCE      = 0x4010661b\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x800c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x80106614\n\tFS_IOC_SETFLAGS                  = 0x80046602\n\tFS_IOC_SET_ENCRYPTION_POLICY     = 0x400c6613\n\tF_GETLK                          = 0x21\n\tF_GETLK64                        = 0x21\n\tF_GETOWN                         = 0x17\n\tF_RDLCK                          = 0x0\n\tF_SETLK                          = 0x22\n\tF_SETLK64                        = 0x22\n\tF_SETLKW                         = 0x23\n\tF_SETLKW64                       = 0x23\n\tF_SETOWN                         = 0x18\n\tF_UNLCK                          = 0x2\n\tF_WRLCK                          = 0x1\n\tHIDIOCGRAWINFO                   = 0x40084803\n\tHIDIOCGRDESC                     = 0x50044802\n\tHIDIOCGRDESCSIZE                 = 0x40044801\n\tHIDIOCREVOKE                     = 0x8004480d\n\tHUPCL                            = 0x400\n\tICANON                           = 0x2\n\tIEXTEN                           = 0x100\n\tIN_CLOEXEC                       = 0x80000\n\tIN_NONBLOCK                      = 0x80\n\tIOCTL_MEI_NOTIFY_GET             = 0x40044803\n\tIOCTL_MEI_NOTIFY_SET             = 0x80044802\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x200007b9\n\tIPV6_FLOWINFO_MASK               = 0xfffffff\n\tIPV6_FLOWLABEL_MASK              = 0xfffff\n\tISIG                             = 0x1\n\tIUCLC                            = 0x200\n\tIXOFF                            = 0x1000\n\tIXON                             = 0x400\n\tMAP_ANON                         = 0x800\n\tMAP_ANONYMOUS                    = 0x800\n\tMAP_DENYWRITE                    = 0x2000\n\tMAP_EXECUTABLE                   = 0x4000\n\tMAP_GROWSDOWN                    = 0x1000\n\tMAP_HUGETLB                      = 0x80000\n\tMAP_LOCKED                       = 0x8000\n\tMAP_NONBLOCK                     = 0x20000\n\tMAP_NORESERVE                    = 0x400\n\tMAP_POPULATE                     = 0x10000\n\tMAP_RENAME                       = 0x800\n\tMAP_STACK                        = 0x40000\n\tMCL_CURRENT                      = 0x1\n\tMCL_FUTURE                       = 0x2\n\tMCL_ONFAULT                      = 0x4\n\tMEMERASE                         = 0x80084d02\n\tMEMERASE64                       = 0x80104d14\n\tMEMGETBADBLOCK                   = 0x80084d0b\n\tMEMGETINFO                       = 0x40204d01\n\tMEMGETOOBSEL                     = 0x40c84d0a\n\tMEMGETREGIONCOUNT                = 0x40044d07\n\tMEMISLOCKED                      = 0x40084d17\n\tMEMLOCK                          = 0x80084d05\n\tMEMREAD                          = 0xc0404d1a\n\tMEMREADOOB                       = 0xc00c4d04\n\tMEMSETBADBLOCK                   = 0x80084d0c\n\tMEMUNLOCK                        = 0x80084d06\n\tMEMWRITEOOB                      = 0xc00c4d03\n\tMTDFILEMODE                      = 0x20004d13\n\tNFDBITS                          = 0x20\n\tNLDLY                            = 0x100\n\tNOFLSH                           = 0x80\n\tNS_GET_MNTNS_ID                  = 0x4008b705\n\tNS_GET_NSTYPE                    = 0x2000b703\n\tNS_GET_OWNER_UID                 = 0x2000b704\n\tNS_GET_PARENT                    = 0x2000b702\n\tNS_GET_PID_FROM_PIDNS            = 0x4004b706\n\tNS_GET_PID_IN_PIDNS              = 0x4004b708\n\tNS_GET_TGID_FROM_PIDNS           = 0x4004b707\n\tNS_GET_TGID_IN_PIDNS             = 0x4004b709\n\tNS_GET_USERNS                    = 0x2000b701\n\tOLCUC                            = 0x2\n\tONLCR                            = 0x4\n\tOTPERASE                         = 0x800c4d19\n\tOTPGETREGIONCOUNT                = 0x80044d0e\n\tOTPGETREGIONINFO                 = 0x800c4d0f\n\tOTPLOCK                          = 0x400c4d10\n\tOTPSELECT                        = 0x40044d0d\n\tO_APPEND                         = 0x8\n\tO_ASYNC                          = 0x1000\n\tO_CLOEXEC                        = 0x80000\n\tO_CREAT                          = 0x100\n\tO_DIRECT                         = 0x8000\n\tO_DIRECTORY                      = 0x10000\n\tO_DSYNC                          = 0x10\n\tO_EXCL                           = 0x400\n\tO_FSYNC                          = 0x4010\n\tO_LARGEFILE                      = 0x2000\n\tO_NDELAY                         = 0x80\n\tO_NOATIME                        = 0x40000\n\tO_NOCTTY                         = 0x800\n\tO_NOFOLLOW                       = 0x20000\n\tO_NONBLOCK                       = 0x80\n\tO_PATH                           = 0x200000\n\tO_RSYNC                          = 0x4010\n\tO_SYNC                           = 0x4010\n\tO_TMPFILE                        = 0x410000\n\tO_TRUNC                          = 0x200\n\tPARENB                           = 0x100\n\tPARODD                           = 0x200\n\tPENDIN                           = 0x4000\n\tPERF_EVENT_IOC_DISABLE           = 0x20002401\n\tPERF_EVENT_IOC_ENABLE            = 0x20002400\n\tPERF_EVENT_IOC_ID                = 0x40042407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8004240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT      = 0x80042409\n\tPERF_EVENT_IOC_PERIOD            = 0x80082404\n\tPERF_EVENT_IOC_QUERY_BPF         = 0xc004240a\n\tPERF_EVENT_IOC_REFRESH           = 0x20002402\n\tPERF_EVENT_IOC_RESET             = 0x20002403\n\tPERF_EVENT_IOC_SET_BPF           = 0x80042408\n\tPERF_EVENT_IOC_SET_FILTER        = 0x80042406\n\tPERF_EVENT_IOC_SET_OUTPUT        = 0x20002405\n\tPPPIOCATTACH                     = 0x8004743d\n\tPPPIOCATTCHAN                    = 0x80047438\n\tPPPIOCBRIDGECHAN                 = 0x80047435\n\tPPPIOCCONNECT                    = 0x8004743a\n\tPPPIOCDETACH                     = 0x8004743c\n\tPPPIOCDISCONN                    = 0x20007439\n\tPPPIOCGASYNCMAP                  = 0x40047458\n\tPPPIOCGCHAN                      = 0x40047437\n\tPPPIOCGDEBUG                     = 0x40047441\n\tPPPIOCGFLAGS                     = 0x4004745a\n\tPPPIOCGIDLE                      = 0x4008743f\n\tPPPIOCGIDLE32                    = 0x4008743f\n\tPPPIOCGIDLE64                    = 0x4010743f\n\tPPPIOCGL2TPSTATS                 = 0x40487436\n\tPPPIOCGMRU                       = 0x40047453\n\tPPPIOCGRASYNCMAP                 = 0x40047455\n\tPPPIOCGUNIT                      = 0x40047456\n\tPPPIOCGXASYNCMAP                 = 0x40207450\n\tPPPIOCSACTIVE                    = 0x80087446\n\tPPPIOCSASYNCMAP                  = 0x80047457\n\tPPPIOCSCOMPRESS                  = 0x800c744d\n\tPPPIOCSDEBUG                     = 0x80047440\n\tPPPIOCSFLAGS                     = 0x80047459\n\tPPPIOCSMAXCID                    = 0x80047451\n\tPPPIOCSMRRU                      = 0x8004743b\n\tPPPIOCSMRU                       = 0x80047452\n\tPPPIOCSNPMODE                    = 0x8008744b\n\tPPPIOCSPASS                      = 0x80087447\n\tPPPIOCSRASYNCMAP                 = 0x80047454\n\tPPPIOCSXASYNCMAP                 = 0x8020744f\n\tPPPIOCUNBRIDGECHAN               = 0x20007434\n\tPPPIOCXFERUNIT                   = 0x2000744e\n\tPR_SET_PTRACER_ANY               = 0xffffffff\n\tPTP_CLOCK_GETCAPS                = 0x40503d01\n\tPTP_CLOCK_GETCAPS2               = 0x40503d0a\n\tPTP_ENABLE_PPS                   = 0x80043d04\n\tPTP_ENABLE_PPS2                  = 0x80043d0d\n\tPTP_EXTTS_REQUEST                = 0x80103d02\n\tPTP_EXTTS_REQUEST2               = 0x80103d0b\n\tPTP_MASK_CLEAR_ALL               = 0x20003d13\n\tPTP_MASK_EN_SINGLE               = 0x80043d14\n\tPTP_PEROUT_REQUEST               = 0x80383d03\n\tPTP_PEROUT_REQUEST2              = 0x80383d0c\n\tPTP_PIN_SETFUNC                  = 0x80603d07\n\tPTP_PIN_SETFUNC2                 = 0x80603d10\n\tPTP_SYS_OFFSET                   = 0x83403d05\n\tPTP_SYS_OFFSET2                  = 0x83403d0e\n\tPTRACE_GETFPREGS                 = 0xe\n\tPTRACE_GET_THREAD_AREA           = 0x19\n\tPTRACE_GET_THREAD_AREA_3264      = 0xc4\n\tPTRACE_GET_WATCH_REGS            = 0xd0\n\tPTRACE_OLDSETOPTIONS             = 0x15\n\tPTRACE_PEEKDATA_3264             = 0xc1\n\tPTRACE_PEEKTEXT_3264             = 0xc0\n\tPTRACE_POKEDATA_3264             = 0xc3\n\tPTRACE_POKETEXT_3264             = 0xc2\n\tPTRACE_SETFPREGS                 = 0xf\n\tPTRACE_SET_THREAD_AREA           = 0x1a\n\tPTRACE_SET_WATCH_REGS            = 0xd1\n\tRLIMIT_AS                        = 0x6\n\tRLIMIT_MEMLOCK                   = 0x9\n\tRLIMIT_NOFILE                    = 0x5\n\tRLIMIT_NPROC                     = 0x8\n\tRLIMIT_RSS                       = 0x7\n\tRNDADDENTROPY                    = 0x80085203\n\tRNDADDTOENTCNT                   = 0x80045201\n\tRNDCLEARPOOL                     = 0x20005206\n\tRNDGETENTCNT                     = 0x40045200\n\tRNDGETPOOL                       = 0x40085202\n\tRNDRESEEDCRNG                    = 0x20005207\n\tRNDZAPENTCNT                     = 0x20005204\n\tRTC_AIE_OFF                      = 0x20007002\n\tRTC_AIE_ON                       = 0x20007001\n\tRTC_ALM_READ                     = 0x40247008\n\tRTC_ALM_SET                      = 0x80247007\n\tRTC_EPOCH_READ                   = 0x4004700d\n\tRTC_EPOCH_SET                    = 0x8004700e\n\tRTC_IRQP_READ                    = 0x4004700b\n\tRTC_IRQP_SET                     = 0x8004700c\n\tRTC_PARAM_GET                    = 0x80187013\n\tRTC_PARAM_SET                    = 0x80187014\n\tRTC_PIE_OFF                      = 0x20007006\n\tRTC_PIE_ON                       = 0x20007005\n\tRTC_PLL_GET                      = 0x401c7011\n\tRTC_PLL_SET                      = 0x801c7012\n\tRTC_RD_TIME                      = 0x40247009\n\tRTC_SET_TIME                     = 0x8024700a\n\tRTC_UIE_OFF                      = 0x20007004\n\tRTC_UIE_ON                       = 0x20007003\n\tRTC_VL_CLR                       = 0x20007014\n\tRTC_VL_READ                      = 0x40047013\n\tRTC_WIE_OFF                      = 0x20007010\n\tRTC_WIE_ON                       = 0x2000700f\n\tRTC_WKALM_RD                     = 0x40287010\n\tRTC_WKALM_SET                    = 0x8028700f\n\tSCM_DEVMEM_DMABUF                = 0x4f\n\tSCM_DEVMEM_LINEAR                = 0x4e\n\tSCM_TIMESTAMPING                 = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS       = 0x36\n\tSCM_TIMESTAMPING_PKTINFO         = 0x3a\n\tSCM_TIMESTAMPNS                  = 0x23\n\tSCM_TS_OPT_ID                    = 0x51\n\tSCM_TXTIME                       = 0x3d\n\tSCM_WIFI_STATUS                  = 0x29\n\tSECCOMP_IOCTL_NOTIF_ADDFD        = 0x80182103\n\tSECCOMP_IOCTL_NOTIF_ID_VALID     = 0x80082102\n\tSECCOMP_IOCTL_NOTIF_SET_FLAGS    = 0x80082104\n\tSFD_CLOEXEC                      = 0x80000\n\tSFD_NONBLOCK                     = 0x80\n\tSIOCATMARK                       = 0x40047307\n\tSIOCGPGRP                        = 0x40047309\n\tSIOCGSTAMPNS_NEW                 = 0x40108907\n\tSIOCGSTAMP_NEW                   = 0x40108906\n\tSIOCINQ                          = 0x467f\n\tSIOCOUTQ                         = 0x7472\n\tSIOCSPGRP                        = 0x80047308\n\tSOCK_CLOEXEC                     = 0x80000\n\tSOCK_DGRAM                       = 0x1\n\tSOCK_NONBLOCK                    = 0x80\n\tSOCK_STREAM                      = 0x2\n\tSOL_SOCKET                       = 0xffff\n\tSO_ACCEPTCONN                    = 0x1009\n\tSO_ATTACH_BPF                    = 0x32\n\tSO_ATTACH_REUSEPORT_CBPF         = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF         = 0x34\n\tSO_BINDTODEVICE                  = 0x19\n\tSO_BINDTOIFINDEX                 = 0x3e\n\tSO_BPF_EXTENSIONS                = 0x30\n\tSO_BROADCAST                     = 0x20\n\tSO_BSDCOMPAT                     = 0xe\n\tSO_BUF_LOCK                      = 0x48\n\tSO_BUSY_POLL                     = 0x2e\n\tSO_BUSY_POLL_BUDGET              = 0x46\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\n\tSO_DEVMEM_DMABUF                 = 0x4f\n\tSO_DEVMEM_DONTNEED               = 0x50\n\tSO_DEVMEM_LINEAR                 = 0x4e\n\tSO_DOMAIN                        = 0x1029\n\tSO_DONTROUTE                     = 0x10\n\tSO_ERROR                         = 0x1007\n\tSO_INCOMING_CPU                  = 0x31\n\tSO_INCOMING_NAPI_ID              = 0x38\n\tSO_KEEPALIVE                     = 0x8\n\tSO_LINGER                        = 0x80\n\tSO_LOCK_FILTER                   = 0x2c\n\tSO_MARK                          = 0x24\n\tSO_MAX_PACING_RATE               = 0x2f\n\tSO_MEMINFO                       = 0x37\n\tSO_NETNS_COOKIE                  = 0x47\n\tSO_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0x100\n\tSO_PASSCRED                      = 0x11\n\tSO_PASSPIDFD                     = 0x4c\n\tSO_PASSRIGHTS                    = 0x53\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x12\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERPIDFD                     = 0x4d\n\tSO_PEERSEC                       = 0x1e\n\tSO_PREFER_BUSY_POLL              = 0x45\n\tSO_PROTOCOL                      = 0x1028\n\tSO_RCVBUF                        = 0x1002\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x1004\n\tSO_RCVMARK                       = 0x4b\n\tSO_RCVPRIORITY                   = 0x52\n\tSO_RCVTIMEO                      = 0x1006\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x1006\n\tSO_RESERVE_MEM                   = 0x49\n\tSO_REUSEADDR                     = 0x4\n\tSO_REUSEPORT                     = 0x200\n\tSO_RXQ_OVFL                      = 0x28\n\tSO_SECURITY_AUTHENTICATION       = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK   = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT = 0x17\n\tSO_SELECT_ERR_QUEUE              = 0x2d\n\tSO_SNDBUF                        = 0x1001\n\tSO_SNDBUFFORCE                   = 0x1f\n\tSO_SNDLOWAT                      = 0x1003\n\tSO_SNDTIMEO                      = 0x1005\n\tSO_SNDTIMEO_NEW                  = 0x43\n\tSO_SNDTIMEO_OLD                  = 0x1005\n\tSO_STYLE                         = 0x1008\n\tSO_TIMESTAMPING                  = 0x25\n\tSO_TIMESTAMPING_NEW              = 0x41\n\tSO_TIMESTAMPING_OLD              = 0x25\n\tSO_TIMESTAMPNS                   = 0x23\n\tSO_TIMESTAMPNS_NEW               = 0x40\n\tSO_TIMESTAMPNS_OLD               = 0x23\n\tSO_TIMESTAMP_NEW                 = 0x3f\n\tSO_TXREHASH                      = 0x4a\n\tSO_TXTIME                        = 0x3d\n\tSO_TYPE                          = 0x1008\n\tSO_WIFI_STATUS                   = 0x29\n\tSO_ZEROCOPY                      = 0x3c\n\tTAB1                             = 0x800\n\tTAB2                             = 0x1000\n\tTAB3                             = 0x1800\n\tTABDLY                           = 0x1800\n\tTCFLSH                           = 0x5407\n\tTCGETA                           = 0x5401\n\tTCGETS                           = 0x540d\n\tTCGETS2                          = 0x4030542a\n\tTCSAFLUSH                        = 0x5410\n\tTCSBRK                           = 0x5405\n\tTCSBRKP                          = 0x5486\n\tTCSETA                           = 0x5402\n\tTCSETAF                          = 0x5404\n\tTCSETAW                          = 0x5403\n\tTCSETS                           = 0x540e\n\tTCSETS2                          = 0x8030542b\n\tTCSETSF                          = 0x5410\n\tTCSETSF2                         = 0x8030542d\n\tTCSETSW                          = 0x540f\n\tTCSETSW2                         = 0x8030542c\n\tTCXONC                           = 0x5406\n\tTFD_CLOEXEC                      = 0x80000\n\tTFD_NONBLOCK                     = 0x80\n\tTIOCCBRK                         = 0x5428\n\tTIOCCONS                         = 0x80047478\n\tTIOCEXCL                         = 0x740d\n\tTIOCGDEV                         = 0x40045432\n\tTIOCGETD                         = 0x7400\n\tTIOCGETP                         = 0x7408\n\tTIOCGEXCL                        = 0x40045440\n\tTIOCGICOUNT                      = 0x5492\n\tTIOCGISO7816                     = 0x40285442\n\tTIOCGLCKTRMIOS                   = 0x548b\n\tTIOCGLTC                         = 0x7474\n\tTIOCGPGRP                        = 0x40047477\n\tTIOCGPKT                         = 0x40045438\n\tTIOCGPTLCK                       = 0x40045439\n\tTIOCGPTN                         = 0x40045430\n\tTIOCGPTPEER                      = 0x20005441\n\tTIOCGRS485                       = 0x4020542e\n\tTIOCGSERIAL                      = 0x5484\n\tTIOCGSID                         = 0x7416\n\tTIOCGSOFTCAR                     = 0x5481\n\tTIOCGWINSZ                       = 0x40087468\n\tTIOCINQ                          = 0x467f\n\tTIOCLINUX                        = 0x5483\n\tTIOCMBIC                         = 0x741c\n\tTIOCMBIS                         = 0x741b\n\tTIOCMGET                         = 0x741d\n\tTIOCMIWAIT                       = 0x5491\n\tTIOCMSET                         = 0x741a\n\tTIOCM_CAR                        = 0x100\n\tTIOCM_CD                         = 0x100\n\tTIOCM_CTS                        = 0x40\n\tTIOCM_DSR                        = 0x400\n\tTIOCM_RI                         = 0x200\n\tTIOCM_RNG                        = 0x200\n\tTIOCM_SR                         = 0x20\n\tTIOCM_ST                         = 0x10\n\tTIOCNOTTY                        = 0x5471\n\tTIOCNXCL                         = 0x740e\n\tTIOCOUTQ                         = 0x7472\n\tTIOCPKT                          = 0x5470\n\tTIOCSBRK                         = 0x5427\n\tTIOCSCTTY                        = 0x5480\n\tTIOCSERCONFIG                    = 0x5488\n\tTIOCSERGETLSR                    = 0x548e\n\tTIOCSERGETMULTI                  = 0x548f\n\tTIOCSERGSTRUCT                   = 0x548d\n\tTIOCSERGWILD                     = 0x5489\n\tTIOCSERSETMULTI                  = 0x5490\n\tTIOCSERSWILD                     = 0x548a\n\tTIOCSER_TEMT                     = 0x1\n\tTIOCSETD                         = 0x7401\n\tTIOCSETN                         = 0x740a\n\tTIOCSETP                         = 0x7409\n\tTIOCSIG                          = 0x80045436\n\tTIOCSISO7816                     = 0xc0285443\n\tTIOCSLCKTRMIOS                   = 0x548c\n\tTIOCSLTC                         = 0x7475\n\tTIOCSPGRP                        = 0x80047476\n\tTIOCSPTLCK                       = 0x80045431\n\tTIOCSRS485                       = 0xc020542f\n\tTIOCSSERIAL                      = 0x5485\n\tTIOCSSOFTCAR                     = 0x5482\n\tTIOCSTI                          = 0x5472\n\tTIOCSWINSZ                       = 0x80087467\n\tTIOCVHANGUP                      = 0x5437\n\tTOSTOP                           = 0x8000\n\tTUNATTACHFILTER                  = 0x800854d5\n\tTUNDETACHFILTER                  = 0x800854d6\n\tTUNGETDEVNETNS                   = 0x200054e3\n\tTUNGETFEATURES                   = 0x400454cf\n\tTUNGETFILTER                     = 0x400854db\n\tTUNGETIFF                        = 0x400454d2\n\tTUNGETSNDBUF                     = 0x400454d3\n\tTUNGETVNETBE                     = 0x400454df\n\tTUNGETVNETHDRSZ                  = 0x400454d7\n\tTUNGETVNETLE                     = 0x400454dd\n\tTUNSETCARRIER                    = 0x800454e2\n\tTUNSETDEBUG                      = 0x800454c9\n\tTUNSETFILTEREBPF                 = 0x400454e1\n\tTUNSETGROUP                      = 0x800454ce\n\tTUNSETIFF                        = 0x800454ca\n\tTUNSETIFINDEX                    = 0x800454da\n\tTUNSETLINK                       = 0x800454cd\n\tTUNSETNOCSUM                     = 0x800454c8\n\tTUNSETOFFLOAD                    = 0x800454d0\n\tTUNSETOWNER                      = 0x800454cc\n\tTUNSETPERSIST                    = 0x800454cb\n\tTUNSETQUEUE                      = 0x800454d9\n\tTUNSETSNDBUF                     = 0x800454d4\n\tTUNSETSTEERINGEBPF               = 0x400454e0\n\tTUNSETTXFILTER                   = 0x800454d1\n\tTUNSETVNETBE                     = 0x800454de\n\tTUNSETVNETHDRSZ                  = 0x800454d8\n\tTUNSETVNETLE                     = 0x800454dc\n\tUBI_IOCATT                       = 0x80186f40\n\tUBI_IOCDET                       = 0x80046f41\n\tUBI_IOCEBCH                      = 0x80044f02\n\tUBI_IOCEBER                      = 0x80044f01\n\tUBI_IOCEBISMAP                   = 0x40044f05\n\tUBI_IOCEBMAP                     = 0x80084f03\n\tUBI_IOCEBUNMAP                   = 0x80044f04\n\tUBI_IOCMKVOL                     = 0x80986f00\n\tUBI_IOCRMVOL                     = 0x80046f01\n\tUBI_IOCRNVOL                     = 0x91106f03\n\tUBI_IOCRPEB                      = 0x80046f04\n\tUBI_IOCRSVOL                     = 0x800c6f02\n\tUBI_IOCSETVOLPROP                = 0x80104f06\n\tUBI_IOCSPEB                      = 0x80046f05\n\tUBI_IOCVOLCRBLK                  = 0x80804f07\n\tUBI_IOCVOLRMBLK                  = 0x20004f08\n\tUBI_IOCVOLUP                     = 0x80084f00\n\tVDISCARD                         = 0xd\n\tVEOF                             = 0x10\n\tVEOL                             = 0x11\n\tVEOL2                            = 0x6\n\tVMIN                             = 0x4\n\tVREPRINT                         = 0xc\n\tVSTART                           = 0x8\n\tVSTOP                            = 0x9\n\tVSUSP                            = 0xa\n\tVSWTC                            = 0x7\n\tVSWTCH                           = 0x7\n\tVT1                              = 0x4000\n\tVTDLY                            = 0x4000\n\tVTIME                            = 0x5\n\tVWERASE                          = 0xe\n\tWDIOC_GETBOOTSTATUS              = 0x40045702\n\tWDIOC_GETPRETIMEOUT              = 0x40045709\n\tWDIOC_GETSTATUS                  = 0x40045701\n\tWDIOC_GETSUPPORT                 = 0x40285700\n\tWDIOC_GETTEMP                    = 0x40045703\n\tWDIOC_GETTIMELEFT                = 0x4004570a\n\tWDIOC_GETTIMEOUT                 = 0x40045707\n\tWDIOC_KEEPALIVE                  = 0x40045705\n\tWDIOC_SETOPTIONS                 = 0x40045704\n\tWORDSIZE                         = 0x20\n\tXCASE                            = 0x4\n\tXTABS                            = 0x1800\n\t_HIDIOCGRAWNAME                  = 0x40804804\n\t_HIDIOCGRAWPHYS                  = 0x40404805\n\t_HIDIOCGRAWUNIQ                  = 0x40404808\n)\n\n// Errors\nconst (\n\tEADDRINUSE      = syscall.Errno(0x7d)\n\tEADDRNOTAVAIL   = syscall.Errno(0x7e)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x7c)\n\tEALREADY        = syscall.Errno(0x95)\n\tEBADE           = syscall.Errno(0x32)\n\tEBADFD          = syscall.Errno(0x51)\n\tEBADMSG         = syscall.Errno(0x4d)\n\tEBADR           = syscall.Errno(0x33)\n\tEBADRQC         = syscall.Errno(0x36)\n\tEBADSLT         = syscall.Errno(0x37)\n\tEBFONT          = syscall.Errno(0x3b)\n\tECANCELED       = syscall.Errno(0x9e)\n\tECHRNG          = syscall.Errno(0x25)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x82)\n\tECONNREFUSED    = syscall.Errno(0x92)\n\tECONNRESET      = syscall.Errno(0x83)\n\tEDEADLK         = syscall.Errno(0x2d)\n\tEDEADLOCK       = syscall.Errno(0x38)\n\tEDESTADDRREQ    = syscall.Errno(0x60)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x46d)\n\tEHOSTDOWN       = syscall.Errno(0x93)\n\tEHOSTUNREACH    = syscall.Errno(0x94)\n\tEHWPOISON       = syscall.Errno(0xa8)\n\tEIDRM           = syscall.Errno(0x24)\n\tEILSEQ          = syscall.Errno(0x58)\n\tEINIT           = syscall.Errno(0x8d)\n\tEINPROGRESS     = syscall.Errno(0x96)\n\tEISCONN         = syscall.Errno(0x85)\n\tEISNAM          = syscall.Errno(0x8b)\n\tEKEYEXPIRED     = syscall.Errno(0xa2)\n\tEKEYREJECTED    = syscall.Errno(0xa4)\n\tEKEYREVOKED     = syscall.Errno(0xa3)\n\tEL2HLT          = syscall.Errno(0x2c)\n\tEL2NSYNC        = syscall.Errno(0x26)\n\tEL3HLT          = syscall.Errno(0x27)\n\tEL3RST          = syscall.Errno(0x28)\n\tELIBACC         = syscall.Errno(0x53)\n\tELIBBAD         = syscall.Errno(0x54)\n\tELIBEXEC        = syscall.Errno(0x57)\n\tELIBMAX         = syscall.Errno(0x56)\n\tELIBSCN         = syscall.Errno(0x55)\n\tELNRNG          = syscall.Errno(0x29)\n\tELOOP           = syscall.Errno(0x5a)\n\tEMEDIUMTYPE     = syscall.Errno(0xa0)\n\tEMSGSIZE        = syscall.Errno(0x61)\n\tEMULTIHOP       = syscall.Errno(0x4a)\n\tENAMETOOLONG    = syscall.Errno(0x4e)\n\tENAVAIL         = syscall.Errno(0x8a)\n\tENETDOWN        = syscall.Errno(0x7f)\n\tENETRESET       = syscall.Errno(0x81)\n\tENETUNREACH     = syscall.Errno(0x80)\n\tENOANO          = syscall.Errno(0x35)\n\tENOBUFS         = syscall.Errno(0x84)\n\tENOCSI          = syscall.Errno(0x2b)\n\tENODATA         = syscall.Errno(0x3d)\n\tENOKEY          = syscall.Errno(0xa1)\n\tENOLCK          = syscall.Errno(0x2e)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x9f)\n\tENOMSG          = syscall.Errno(0x23)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x63)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x59)\n\tENOTCONN        = syscall.Errno(0x86)\n\tENOTEMPTY       = syscall.Errno(0x5d)\n\tENOTNAM         = syscall.Errno(0x89)\n\tENOTRECOVERABLE = syscall.Errno(0xa6)\n\tENOTSOCK        = syscall.Errno(0x5f)\n\tENOTSUP         = syscall.Errno(0x7a)\n\tENOTUNIQ        = syscall.Errno(0x50)\n\tEOPNOTSUPP      = syscall.Errno(0x7a)\n\tEOVERFLOW       = syscall.Errno(0x4f)\n\tEOWNERDEAD      = syscall.Errno(0xa5)\n\tEPFNOSUPPORT    = syscall.Errno(0x7b)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x78)\n\tEPROTOTYPE      = syscall.Errno(0x62)\n\tEREMCHG         = syscall.Errno(0x52)\n\tEREMDEV         = syscall.Errno(0x8e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x8c)\n\tERESTART        = syscall.Errno(0x5b)\n\tERFKILL         = syscall.Errno(0xa7)\n\tESHUTDOWN       = syscall.Errno(0x8f)\n\tESOCKTNOSUPPORT = syscall.Errno(0x79)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x97)\n\tESTRPIPE        = syscall.Errno(0x5c)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x91)\n\tETOOMANYREFS    = syscall.Errno(0x90)\n\tEUCLEAN         = syscall.Errno(0x87)\n\tEUNATCH         = syscall.Errno(0x2a)\n\tEUSERS          = syscall.Errno(0x5e)\n\tEXFULL          = syscall.Errno(0x34)\n)\n\n// Signals\nconst (\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x12)\n\tSIGCLD    = syscall.Signal(0x12)\n\tSIGCONT   = syscall.Signal(0x19)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGIO     = syscall.Signal(0x16)\n\tSIGPOLL   = syscall.Signal(0x16)\n\tSIGPROF   = syscall.Signal(0x1d)\n\tSIGPWR    = syscall.Signal(0x13)\n\tSIGSTOP   = syscall.Signal(0x17)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTSTP   = syscall.Signal(0x18)\n\tSIGTTIN   = syscall.Signal(0x1a)\n\tSIGTTOU   = syscall.Signal(0x1b)\n\tSIGURG    = syscall.Signal(0x15)\n\tSIGUSR1   = syscall.Signal(0x10)\n\tSIGUSR2   = syscall.Signal(0x11)\n\tSIGVTALRM = syscall.Signal(0x1c)\n\tSIGWINCH  = syscall.Signal(0x14)\n\tSIGXCPU   = syscall.Signal(0x1e)\n\tSIGXFSZ   = syscall.Signal(0x1f)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"ENOMSG\", \"no message of desired type\"},\n\t{36, \"EIDRM\", \"identifier removed\"},\n\t{37, \"ECHRNG\", \"channel number out of range\"},\n\t{38, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{39, \"EL3HLT\", \"level 3 halted\"},\n\t{40, \"EL3RST\", \"level 3 reset\"},\n\t{41, \"ELNRNG\", \"link number out of range\"},\n\t{42, \"EUNATCH\", \"protocol driver not attached\"},\n\t{43, \"ENOCSI\", \"no CSI structure available\"},\n\t{44, \"EL2HLT\", \"level 2 halted\"},\n\t{45, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{46, \"ENOLCK\", \"no locks available\"},\n\t{50, \"EBADE\", \"invalid exchange\"},\n\t{51, \"EBADR\", \"invalid request descriptor\"},\n\t{52, \"EXFULL\", \"exchange full\"},\n\t{53, \"ENOANO\", \"no anode\"},\n\t{54, \"EBADRQC\", \"invalid request code\"},\n\t{55, \"EBADSLT\", \"invalid slot\"},\n\t{56, \"EDEADLOCK\", \"file locking deadlock error\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EMULTIHOP\", \"multihop attempted\"},\n\t{77, \"EBADMSG\", \"bad message\"},\n\t{78, \"ENAMETOOLONG\", \"file name too long\"},\n\t{79, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{80, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{81, \"EBADFD\", \"file descriptor in bad state\"},\n\t{82, \"EREMCHG\", \"remote address changed\"},\n\t{83, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{84, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{85, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{86, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{87, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{88, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{89, \"ENOSYS\", \"function not implemented\"},\n\t{90, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{91, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{92, \"ESTRPIPE\", \"streams pipe error\"},\n\t{93, \"ENOTEMPTY\", \"directory not empty\"},\n\t{94, \"EUSERS\", \"too many users\"},\n\t{95, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{96, \"EDESTADDRREQ\", \"destination address required\"},\n\t{97, \"EMSGSIZE\", \"message too long\"},\n\t{98, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{99, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{120, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{121, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{122, \"ENOTSUP\", \"operation not supported\"},\n\t{123, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{124, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{125, \"EADDRINUSE\", \"address already in use\"},\n\t{126, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{127, \"ENETDOWN\", \"network is down\"},\n\t{128, \"ENETUNREACH\", \"network is unreachable\"},\n\t{129, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{130, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{131, \"ECONNRESET\", \"connection reset by peer\"},\n\t{132, \"ENOBUFS\", \"no buffer space available\"},\n\t{133, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{134, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{135, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{137, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{138, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{139, \"EISNAM\", \"is a named type file\"},\n\t{140, \"EREMOTEIO\", \"remote I/O error\"},\n\t{141, \"EINIT\", \"unknown error 141\"},\n\t{142, \"EREMDEV\", \"unknown error 142\"},\n\t{143, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{144, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{145, \"ETIMEDOUT\", \"connection timed out\"},\n\t{146, \"ECONNREFUSED\", \"connection refused\"},\n\t{147, \"EHOSTDOWN\", \"host is down\"},\n\t{148, \"EHOSTUNREACH\", \"no route to host\"},\n\t{149, \"EALREADY\", \"operation already in progress\"},\n\t{150, \"EINPROGRESS\", \"operation now in progress\"},\n\t{151, \"ESTALE\", \"stale file handle\"},\n\t{158, \"ECANCELED\", \"operation canceled\"},\n\t{159, \"ENOMEDIUM\", \"no medium found\"},\n\t{160, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{161, \"ENOKEY\", \"required key not available\"},\n\t{162, \"EKEYEXPIRED\", \"key has expired\"},\n\t{163, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{164, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{165, \"EOWNERDEAD\", \"owner died\"},\n\t{166, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{167, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{168, \"EHWPOISON\", \"memory page has hardware error\"},\n\t{1133, \"EDQUOT\", \"disk quota exceeded\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGUSR1\", \"user defined signal 1\"},\n\t{17, \"SIGUSR2\", \"user defined signal 2\"},\n\t{18, \"SIGCHLD\", \"child exited\"},\n\t{19, \"SIGPWR\", \"power failure\"},\n\t{20, \"SIGWINCH\", \"window changed\"},\n\t{21, \"SIGURG\", \"urgent I/O condition\"},\n\t{22, \"SIGIO\", \"I/O possible\"},\n\t{23, \"SIGSTOP\", \"stopped (signal)\"},\n\t{24, \"SIGTSTP\", \"stopped\"},\n\t{25, \"SIGCONT\", \"continued\"},\n\t{26, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{27, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{28, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{29, \"SIGPROF\", \"profiling timer expired\"},\n\t{30, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{31, \"SIGXFSZ\", \"file size limit exceeded\"},\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/mips64/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mips64 && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/mips64/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x1008\n\tB115200                          = 0x1002\n\tB1152000                         = 0x1009\n\tB1500000                         = 0x100a\n\tB2000000                         = 0x100b\n\tB230400                          = 0x1003\n\tB2500000                         = 0x100c\n\tB3000000                         = 0x100d\n\tB3500000                         = 0x100e\n\tB4000000                         = 0x100f\n\tB460800                          = 0x1004\n\tB500000                          = 0x1005\n\tB57600                           = 0x1001\n\tB576000                          = 0x1006\n\tB921600                          = 0x1007\n\tBLKALIGNOFF                      = 0x2000127a\n\tBLKBSZGET                        = 0x40081270\n\tBLKBSZSET                        = 0x80081271\n\tBLKDISCARD                       = 0x20001277\n\tBLKDISCARDZEROES                 = 0x2000127c\n\tBLKFLSBUF                        = 0x20001261\n\tBLKFRAGET                        = 0x20001265\n\tBLKFRASET                        = 0x20001264\n\tBLKGETDISKSEQ                    = 0x40081280\n\tBLKGETSIZE                       = 0x20001260\n\tBLKGETSIZE64                     = 0x40081272\n\tBLKIOMIN                         = 0x20001278\n\tBLKIOOPT                         = 0x20001279\n\tBLKPBSZGET                       = 0x2000127b\n\tBLKRAGET                         = 0x20001263\n\tBLKRASET                         = 0x20001262\n\tBLKROGET                         = 0x2000125e\n\tBLKROSET                         = 0x2000125d\n\tBLKROTATIONAL                    = 0x2000127e\n\tBLKRRPART                        = 0x2000125f\n\tBLKSECDISCARD                    = 0x2000127d\n\tBLKSECTGET                       = 0x20001267\n\tBLKSECTSET                       = 0x20001266\n\tBLKSSZGET                        = 0x20001268\n\tBLKZEROOUT                       = 0x2000127f\n\tBOTHER                           = 0x1000\n\tBS1                              = 0x2000\n\tBSDLY                            = 0x2000\n\tCBAUD                            = 0x100f\n\tCBAUDEX                          = 0x1000\n\tCIBAUD                           = 0x100f0000\n\tCLOCAL                           = 0x800\n\tCR1                              = 0x200\n\tCR2                              = 0x400\n\tCR3                              = 0x600\n\tCRDLY                            = 0x600\n\tCREAD                            = 0x80\n\tCS6                              = 0x10\n\tCS7                              = 0x20\n\tCS8                              = 0x30\n\tCSIZE                            = 0x30\n\tCSTOPB                           = 0x40\n\tDM_MPATH_PROBE_PATHS             = 0x2000fd12\n\tECCGETLAYOUT                     = 0x41484d11\n\tECCGETSTATS                      = 0x40104d12\n\tECHOCTL                          = 0x200\n\tECHOE                            = 0x10\n\tECHOK                            = 0x20\n\tECHOKE                           = 0x800\n\tECHONL                           = 0x40\n\tECHOPRT                          = 0x400\n\tEFD_CLOEXEC                      = 0x80000\n\tEFD_NONBLOCK                     = 0x80\n\tEPIOCGPARAMS                     = 0x40088a02\n\tEPIOCSPARAMS                     = 0x80088a01\n\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000\n\tFF1                              = 0x8000\n\tFFDLY                            = 0x8000\n\tFICLONE                          = 0x80049409\n\tFICLONERANGE                     = 0x8020940d\n\tFLUSHO                           = 0x2000\n\tFS_IOC_ENABLE_VERITY             = 0x80806685\n\tFS_IOC_GETFLAGS                  = 0x40086601\n\tFS_IOC_GET_ENCRYPTION_NONCE      = 0x4010661b\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x800c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x80106614\n\tFS_IOC_SETFLAGS                  = 0x80086602\n\tFS_IOC_SET_ENCRYPTION_POLICY     = 0x400c6613\n\tF_GETLK                          = 0xe\n\tF_GETLK64                        = 0xe\n\tF_GETOWN                         = 0x17\n\tF_RDLCK                          = 0x0\n\tF_SETLK                          = 0x6\n\tF_SETLK64                        = 0x6\n\tF_SETLKW                         = 0x7\n\tF_SETLKW64                       = 0x7\n\tF_SETOWN                         = 0x18\n\tF_UNLCK                          = 0x2\n\tF_WRLCK                          = 0x1\n\tHIDIOCGRAWINFO                   = 0x40084803\n\tHIDIOCGRDESC                     = 0x50044802\n\tHIDIOCGRDESCSIZE                 = 0x40044801\n\tHIDIOCREVOKE                     = 0x8004480d\n\tHUPCL                            = 0x400\n\tICANON                           = 0x2\n\tIEXTEN                           = 0x100\n\tIN_CLOEXEC                       = 0x80000\n\tIN_NONBLOCK                      = 0x80\n\tIOCTL_MEI_NOTIFY_GET             = 0x40044803\n\tIOCTL_MEI_NOTIFY_SET             = 0x80044802\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x200007b9\n\tIPV6_FLOWINFO_MASK               = 0xfffffff\n\tIPV6_FLOWLABEL_MASK              = 0xfffff\n\tISIG                             = 0x1\n\tIUCLC                            = 0x200\n\tIXOFF                            = 0x1000\n\tIXON                             = 0x400\n\tMAP_ANON                         = 0x800\n\tMAP_ANONYMOUS                    = 0x800\n\tMAP_DENYWRITE                    = 0x2000\n\tMAP_EXECUTABLE                   = 0x4000\n\tMAP_GROWSDOWN                    = 0x1000\n\tMAP_HUGETLB                      = 0x80000\n\tMAP_LOCKED                       = 0x8000\n\tMAP_NONBLOCK                     = 0x20000\n\tMAP_NORESERVE                    = 0x400\n\tMAP_POPULATE                     = 0x10000\n\tMAP_RENAME                       = 0x800\n\tMAP_STACK                        = 0x40000\n\tMCL_CURRENT                      = 0x1\n\tMCL_FUTURE                       = 0x2\n\tMCL_ONFAULT                      = 0x4\n\tMEMERASE                         = 0x80084d02\n\tMEMERASE64                       = 0x80104d14\n\tMEMGETBADBLOCK                   = 0x80084d0b\n\tMEMGETINFO                       = 0x40204d01\n\tMEMGETOOBSEL                     = 0x40c84d0a\n\tMEMGETREGIONCOUNT                = 0x40044d07\n\tMEMISLOCKED                      = 0x40084d17\n\tMEMLOCK                          = 0x80084d05\n\tMEMREAD                          = 0xc0404d1a\n\tMEMREADOOB                       = 0xc0104d04\n\tMEMSETBADBLOCK                   = 0x80084d0c\n\tMEMUNLOCK                        = 0x80084d06\n\tMEMWRITEOOB                      = 0xc0104d03\n\tMTDFILEMODE                      = 0x20004d13\n\tNFDBITS                          = 0x40\n\tNLDLY                            = 0x100\n\tNOFLSH                           = 0x80\n\tNS_GET_MNTNS_ID                  = 0x4008b705\n\tNS_GET_NSTYPE                    = 0x2000b703\n\tNS_GET_OWNER_UID                 = 0x2000b704\n\tNS_GET_PARENT                    = 0x2000b702\n\tNS_GET_PID_FROM_PIDNS            = 0x4004b706\n\tNS_GET_PID_IN_PIDNS              = 0x4004b708\n\tNS_GET_TGID_FROM_PIDNS           = 0x4004b707\n\tNS_GET_TGID_IN_PIDNS             = 0x4004b709\n\tNS_GET_USERNS                    = 0x2000b701\n\tOLCUC                            = 0x2\n\tONLCR                            = 0x4\n\tOTPERASE                         = 0x800c4d19\n\tOTPGETREGIONCOUNT                = 0x80044d0e\n\tOTPGETREGIONINFO                 = 0x800c4d0f\n\tOTPLOCK                          = 0x400c4d10\n\tOTPSELECT                        = 0x40044d0d\n\tO_APPEND                         = 0x8\n\tO_ASYNC                          = 0x1000\n\tO_CLOEXEC                        = 0x80000\n\tO_CREAT                          = 0x100\n\tO_DIRECT                         = 0x8000\n\tO_DIRECTORY                      = 0x10000\n\tO_DSYNC                          = 0x10\n\tO_EXCL                           = 0x400\n\tO_FSYNC                          = 0x4010\n\tO_LARGEFILE                      = 0x0\n\tO_NDELAY                         = 0x80\n\tO_NOATIME                        = 0x40000\n\tO_NOCTTY                         = 0x800\n\tO_NOFOLLOW                       = 0x20000\n\tO_NONBLOCK                       = 0x80\n\tO_PATH                           = 0x200000\n\tO_RSYNC                          = 0x4010\n\tO_SYNC                           = 0x4010\n\tO_TMPFILE                        = 0x410000\n\tO_TRUNC                          = 0x200\n\tPARENB                           = 0x100\n\tPARODD                           = 0x200\n\tPENDIN                           = 0x4000\n\tPERF_EVENT_IOC_DISABLE           = 0x20002401\n\tPERF_EVENT_IOC_ENABLE            = 0x20002400\n\tPERF_EVENT_IOC_ID                = 0x40082407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8008240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT      = 0x80042409\n\tPERF_EVENT_IOC_PERIOD            = 0x80082404\n\tPERF_EVENT_IOC_QUERY_BPF         = 0xc008240a\n\tPERF_EVENT_IOC_REFRESH           = 0x20002402\n\tPERF_EVENT_IOC_RESET             = 0x20002403\n\tPERF_EVENT_IOC_SET_BPF           = 0x80042408\n\tPERF_EVENT_IOC_SET_FILTER        = 0x80082406\n\tPERF_EVENT_IOC_SET_OUTPUT        = 0x20002405\n\tPPPIOCATTACH                     = 0x8004743d\n\tPPPIOCATTCHAN                    = 0x80047438\n\tPPPIOCBRIDGECHAN                 = 0x80047435\n\tPPPIOCCONNECT                    = 0x8004743a\n\tPPPIOCDETACH                     = 0x8004743c\n\tPPPIOCDISCONN                    = 0x20007439\n\tPPPIOCGASYNCMAP                  = 0x40047458\n\tPPPIOCGCHAN                      = 0x40047437\n\tPPPIOCGDEBUG                     = 0x40047441\n\tPPPIOCGFLAGS                     = 0x4004745a\n\tPPPIOCGIDLE                      = 0x4010743f\n\tPPPIOCGIDLE32                    = 0x4008743f\n\tPPPIOCGIDLE64                    = 0x4010743f\n\tPPPIOCGL2TPSTATS                 = 0x40487436\n\tPPPIOCGMRU                       = 0x40047453\n\tPPPIOCGRASYNCMAP                 = 0x40047455\n\tPPPIOCGUNIT                      = 0x40047456\n\tPPPIOCGXASYNCMAP                 = 0x40207450\n\tPPPIOCSACTIVE                    = 0x80107446\n\tPPPIOCSASYNCMAP                  = 0x80047457\n\tPPPIOCSCOMPRESS                  = 0x8010744d\n\tPPPIOCSDEBUG                     = 0x80047440\n\tPPPIOCSFLAGS                     = 0x80047459\n\tPPPIOCSMAXCID                    = 0x80047451\n\tPPPIOCSMRRU                      = 0x8004743b\n\tPPPIOCSMRU                       = 0x80047452\n\tPPPIOCSNPMODE                    = 0x8008744b\n\tPPPIOCSPASS                      = 0x80107447\n\tPPPIOCSRASYNCMAP                 = 0x80047454\n\tPPPIOCSXASYNCMAP                 = 0x8020744f\n\tPPPIOCUNBRIDGECHAN               = 0x20007434\n\tPPPIOCXFERUNIT                   = 0x2000744e\n\tPR_SET_PTRACER_ANY               = 0xffffffffffffffff\n\tPTP_CLOCK_GETCAPS                = 0x40503d01\n\tPTP_CLOCK_GETCAPS2               = 0x40503d0a\n\tPTP_ENABLE_PPS                   = 0x80043d04\n\tPTP_ENABLE_PPS2                  = 0x80043d0d\n\tPTP_EXTTS_REQUEST                = 0x80103d02\n\tPTP_EXTTS_REQUEST2               = 0x80103d0b\n\tPTP_MASK_CLEAR_ALL               = 0x20003d13\n\tPTP_MASK_EN_SINGLE               = 0x80043d14\n\tPTP_PEROUT_REQUEST               = 0x80383d03\n\tPTP_PEROUT_REQUEST2              = 0x80383d0c\n\tPTP_PIN_SETFUNC                  = 0x80603d07\n\tPTP_PIN_SETFUNC2                 = 0x80603d10\n\tPTP_SYS_OFFSET                   = 0x83403d05\n\tPTP_SYS_OFFSET2                  = 0x83403d0e\n\tPTRACE_GETFPREGS                 = 0xe\n\tPTRACE_GET_THREAD_AREA           = 0x19\n\tPTRACE_GET_THREAD_AREA_3264      = 0xc4\n\tPTRACE_GET_WATCH_REGS            = 0xd0\n\tPTRACE_OLDSETOPTIONS             = 0x15\n\tPTRACE_PEEKDATA_3264             = 0xc1\n\tPTRACE_PEEKTEXT_3264             = 0xc0\n\tPTRACE_POKEDATA_3264             = 0xc3\n\tPTRACE_POKETEXT_3264             = 0xc2\n\tPTRACE_SETFPREGS                 = 0xf\n\tPTRACE_SET_THREAD_AREA           = 0x1a\n\tPTRACE_SET_WATCH_REGS            = 0xd1\n\tRLIMIT_AS                        = 0x6\n\tRLIMIT_MEMLOCK                   = 0x9\n\tRLIMIT_NOFILE                    = 0x5\n\tRLIMIT_NPROC                     = 0x8\n\tRLIMIT_RSS                       = 0x7\n\tRNDADDENTROPY                    = 0x80085203\n\tRNDADDTOENTCNT                   = 0x80045201\n\tRNDCLEARPOOL                     = 0x20005206\n\tRNDGETENTCNT                     = 0x40045200\n\tRNDGETPOOL                       = 0x40085202\n\tRNDRESEEDCRNG                    = 0x20005207\n\tRNDZAPENTCNT                     = 0x20005204\n\tRTC_AIE_OFF                      = 0x20007002\n\tRTC_AIE_ON                       = 0x20007001\n\tRTC_ALM_READ                     = 0x40247008\n\tRTC_ALM_SET                      = 0x80247007\n\tRTC_EPOCH_READ                   = 0x4008700d\n\tRTC_EPOCH_SET                    = 0x8008700e\n\tRTC_IRQP_READ                    = 0x4008700b\n\tRTC_IRQP_SET                     = 0x8008700c\n\tRTC_PARAM_GET                    = 0x80187013\n\tRTC_PARAM_SET                    = 0x80187014\n\tRTC_PIE_OFF                      = 0x20007006\n\tRTC_PIE_ON                       = 0x20007005\n\tRTC_PLL_GET                      = 0x40207011\n\tRTC_PLL_SET                      = 0x80207012\n\tRTC_RD_TIME                      = 0x40247009\n\tRTC_SET_TIME                     = 0x8024700a\n\tRTC_UIE_OFF                      = 0x20007004\n\tRTC_UIE_ON                       = 0x20007003\n\tRTC_VL_CLR                       = 0x20007014\n\tRTC_VL_READ                      = 0x40047013\n\tRTC_WIE_OFF                      = 0x20007010\n\tRTC_WIE_ON                       = 0x2000700f\n\tRTC_WKALM_RD                     = 0x40287010\n\tRTC_WKALM_SET                    = 0x8028700f\n\tSCM_DEVMEM_DMABUF                = 0x4f\n\tSCM_DEVMEM_LINEAR                = 0x4e\n\tSCM_TIMESTAMPING                 = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS       = 0x36\n\tSCM_TIMESTAMPING_PKTINFO         = 0x3a\n\tSCM_TIMESTAMPNS                  = 0x23\n\tSCM_TS_OPT_ID                    = 0x51\n\tSCM_TXTIME                       = 0x3d\n\tSCM_WIFI_STATUS                  = 0x29\n\tSECCOMP_IOCTL_NOTIF_ADDFD        = 0x80182103\n\tSECCOMP_IOCTL_NOTIF_ID_VALID     = 0x80082102\n\tSECCOMP_IOCTL_NOTIF_SET_FLAGS    = 0x80082104\n\tSFD_CLOEXEC                      = 0x80000\n\tSFD_NONBLOCK                     = 0x80\n\tSIOCATMARK                       = 0x40047307\n\tSIOCGPGRP                        = 0x40047309\n\tSIOCGSTAMPNS_NEW                 = 0x40108907\n\tSIOCGSTAMP_NEW                   = 0x40108906\n\tSIOCINQ                          = 0x467f\n\tSIOCOUTQ                         = 0x7472\n\tSIOCSPGRP                        = 0x80047308\n\tSOCK_CLOEXEC                     = 0x80000\n\tSOCK_DGRAM                       = 0x1\n\tSOCK_NONBLOCK                    = 0x80\n\tSOCK_STREAM                      = 0x2\n\tSOL_SOCKET                       = 0xffff\n\tSO_ACCEPTCONN                    = 0x1009\n\tSO_ATTACH_BPF                    = 0x32\n\tSO_ATTACH_REUSEPORT_CBPF         = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF         = 0x34\n\tSO_BINDTODEVICE                  = 0x19\n\tSO_BINDTOIFINDEX                 = 0x3e\n\tSO_BPF_EXTENSIONS                = 0x30\n\tSO_BROADCAST                     = 0x20\n\tSO_BSDCOMPAT                     = 0xe\n\tSO_BUF_LOCK                      = 0x48\n\tSO_BUSY_POLL                     = 0x2e\n\tSO_BUSY_POLL_BUDGET              = 0x46\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\n\tSO_DEVMEM_DMABUF                 = 0x4f\n\tSO_DEVMEM_DONTNEED               = 0x50\n\tSO_DEVMEM_LINEAR                 = 0x4e\n\tSO_DOMAIN                        = 0x1029\n\tSO_DONTROUTE                     = 0x10\n\tSO_ERROR                         = 0x1007\n\tSO_INCOMING_CPU                  = 0x31\n\tSO_INCOMING_NAPI_ID              = 0x38\n\tSO_KEEPALIVE                     = 0x8\n\tSO_LINGER                        = 0x80\n\tSO_LOCK_FILTER                   = 0x2c\n\tSO_MARK                          = 0x24\n\tSO_MAX_PACING_RATE               = 0x2f\n\tSO_MEMINFO                       = 0x37\n\tSO_NETNS_COOKIE                  = 0x47\n\tSO_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0x100\n\tSO_PASSCRED                      = 0x11\n\tSO_PASSPIDFD                     = 0x4c\n\tSO_PASSRIGHTS                    = 0x53\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x12\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERPIDFD                     = 0x4d\n\tSO_PEERSEC                       = 0x1e\n\tSO_PREFER_BUSY_POLL              = 0x45\n\tSO_PROTOCOL                      = 0x1028\n\tSO_RCVBUF                        = 0x1002\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x1004\n\tSO_RCVMARK                       = 0x4b\n\tSO_RCVPRIORITY                   = 0x52\n\tSO_RCVTIMEO                      = 0x1006\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x1006\n\tSO_RESERVE_MEM                   = 0x49\n\tSO_REUSEADDR                     = 0x4\n\tSO_REUSEPORT                     = 0x200\n\tSO_RXQ_OVFL                      = 0x28\n\tSO_SECURITY_AUTHENTICATION       = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK   = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT = 0x17\n\tSO_SELECT_ERR_QUEUE              = 0x2d\n\tSO_SNDBUF                        = 0x1001\n\tSO_SNDBUFFORCE                   = 0x1f\n\tSO_SNDLOWAT                      = 0x1003\n\tSO_SNDTIMEO                      = 0x1005\n\tSO_SNDTIMEO_NEW                  = 0x43\n\tSO_SNDTIMEO_OLD                  = 0x1005\n\tSO_STYLE                         = 0x1008\n\tSO_TIMESTAMPING                  = 0x25\n\tSO_TIMESTAMPING_NEW              = 0x41\n\tSO_TIMESTAMPING_OLD              = 0x25\n\tSO_TIMESTAMPNS                   = 0x23\n\tSO_TIMESTAMPNS_NEW               = 0x40\n\tSO_TIMESTAMPNS_OLD               = 0x23\n\tSO_TIMESTAMP_NEW                 = 0x3f\n\tSO_TXREHASH                      = 0x4a\n\tSO_TXTIME                        = 0x3d\n\tSO_TYPE                          = 0x1008\n\tSO_WIFI_STATUS                   = 0x29\n\tSO_ZEROCOPY                      = 0x3c\n\tTAB1                             = 0x800\n\tTAB2                             = 0x1000\n\tTAB3                             = 0x1800\n\tTABDLY                           = 0x1800\n\tTCFLSH                           = 0x5407\n\tTCGETA                           = 0x5401\n\tTCGETS                           = 0x540d\n\tTCGETS2                          = 0x4030542a\n\tTCSAFLUSH                        = 0x5410\n\tTCSBRK                           = 0x5405\n\tTCSBRKP                          = 0x5486\n\tTCSETA                           = 0x5402\n\tTCSETAF                          = 0x5404\n\tTCSETAW                          = 0x5403\n\tTCSETS                           = 0x540e\n\tTCSETS2                          = 0x8030542b\n\tTCSETSF                          = 0x5410\n\tTCSETSF2                         = 0x8030542d\n\tTCSETSW                          = 0x540f\n\tTCSETSW2                         = 0x8030542c\n\tTCXONC                           = 0x5406\n\tTFD_CLOEXEC                      = 0x80000\n\tTFD_NONBLOCK                     = 0x80\n\tTIOCCBRK                         = 0x5428\n\tTIOCCONS                         = 0x80047478\n\tTIOCEXCL                         = 0x740d\n\tTIOCGDEV                         = 0x40045432\n\tTIOCGETD                         = 0x7400\n\tTIOCGETP                         = 0x7408\n\tTIOCGEXCL                        = 0x40045440\n\tTIOCGICOUNT                      = 0x5492\n\tTIOCGISO7816                     = 0x40285442\n\tTIOCGLCKTRMIOS                   = 0x548b\n\tTIOCGLTC                         = 0x7474\n\tTIOCGPGRP                        = 0x40047477\n\tTIOCGPKT                         = 0x40045438\n\tTIOCGPTLCK                       = 0x40045439\n\tTIOCGPTN                         = 0x40045430\n\tTIOCGPTPEER                      = 0x20005441\n\tTIOCGRS485                       = 0x4020542e\n\tTIOCGSERIAL                      = 0x5484\n\tTIOCGSID                         = 0x7416\n\tTIOCGSOFTCAR                     = 0x5481\n\tTIOCGWINSZ                       = 0x40087468\n\tTIOCINQ                          = 0x467f\n\tTIOCLINUX                        = 0x5483\n\tTIOCMBIC                         = 0x741c\n\tTIOCMBIS                         = 0x741b\n\tTIOCMGET                         = 0x741d\n\tTIOCMIWAIT                       = 0x5491\n\tTIOCMSET                         = 0x741a\n\tTIOCM_CAR                        = 0x100\n\tTIOCM_CD                         = 0x100\n\tTIOCM_CTS                        = 0x40\n\tTIOCM_DSR                        = 0x400\n\tTIOCM_RI                         = 0x200\n\tTIOCM_RNG                        = 0x200\n\tTIOCM_SR                         = 0x20\n\tTIOCM_ST                         = 0x10\n\tTIOCNOTTY                        = 0x5471\n\tTIOCNXCL                         = 0x740e\n\tTIOCOUTQ                         = 0x7472\n\tTIOCPKT                          = 0x5470\n\tTIOCSBRK                         = 0x5427\n\tTIOCSCTTY                        = 0x5480\n\tTIOCSERCONFIG                    = 0x5488\n\tTIOCSERGETLSR                    = 0x548e\n\tTIOCSERGETMULTI                  = 0x548f\n\tTIOCSERGSTRUCT                   = 0x548d\n\tTIOCSERGWILD                     = 0x5489\n\tTIOCSERSETMULTI                  = 0x5490\n\tTIOCSERSWILD                     = 0x548a\n\tTIOCSER_TEMT                     = 0x1\n\tTIOCSETD                         = 0x7401\n\tTIOCSETN                         = 0x740a\n\tTIOCSETP                         = 0x7409\n\tTIOCSIG                          = 0x80045436\n\tTIOCSISO7816                     = 0xc0285443\n\tTIOCSLCKTRMIOS                   = 0x548c\n\tTIOCSLTC                         = 0x7475\n\tTIOCSPGRP                        = 0x80047476\n\tTIOCSPTLCK                       = 0x80045431\n\tTIOCSRS485                       = 0xc020542f\n\tTIOCSSERIAL                      = 0x5485\n\tTIOCSSOFTCAR                     = 0x5482\n\tTIOCSTI                          = 0x5472\n\tTIOCSWINSZ                       = 0x80087467\n\tTIOCVHANGUP                      = 0x5437\n\tTOSTOP                           = 0x8000\n\tTUNATTACHFILTER                  = 0x801054d5\n\tTUNDETACHFILTER                  = 0x801054d6\n\tTUNGETDEVNETNS                   = 0x200054e3\n\tTUNGETFEATURES                   = 0x400454cf\n\tTUNGETFILTER                     = 0x401054db\n\tTUNGETIFF                        = 0x400454d2\n\tTUNGETSNDBUF                     = 0x400454d3\n\tTUNGETVNETBE                     = 0x400454df\n\tTUNGETVNETHDRSZ                  = 0x400454d7\n\tTUNGETVNETLE                     = 0x400454dd\n\tTUNSETCARRIER                    = 0x800454e2\n\tTUNSETDEBUG                      = 0x800454c9\n\tTUNSETFILTEREBPF                 = 0x400454e1\n\tTUNSETGROUP                      = 0x800454ce\n\tTUNSETIFF                        = 0x800454ca\n\tTUNSETIFINDEX                    = 0x800454da\n\tTUNSETLINK                       = 0x800454cd\n\tTUNSETNOCSUM                     = 0x800454c8\n\tTUNSETOFFLOAD                    = 0x800454d0\n\tTUNSETOWNER                      = 0x800454cc\n\tTUNSETPERSIST                    = 0x800454cb\n\tTUNSETQUEUE                      = 0x800454d9\n\tTUNSETSNDBUF                     = 0x800454d4\n\tTUNSETSTEERINGEBPF               = 0x400454e0\n\tTUNSETTXFILTER                   = 0x800454d1\n\tTUNSETVNETBE                     = 0x800454de\n\tTUNSETVNETHDRSZ                  = 0x800454d8\n\tTUNSETVNETLE                     = 0x800454dc\n\tUBI_IOCATT                       = 0x80186f40\n\tUBI_IOCDET                       = 0x80046f41\n\tUBI_IOCEBCH                      = 0x80044f02\n\tUBI_IOCEBER                      = 0x80044f01\n\tUBI_IOCEBISMAP                   = 0x40044f05\n\tUBI_IOCEBMAP                     = 0x80084f03\n\tUBI_IOCEBUNMAP                   = 0x80044f04\n\tUBI_IOCMKVOL                     = 0x80986f00\n\tUBI_IOCRMVOL                     = 0x80046f01\n\tUBI_IOCRNVOL                     = 0x91106f03\n\tUBI_IOCRPEB                      = 0x80046f04\n\tUBI_IOCRSVOL                     = 0x800c6f02\n\tUBI_IOCSETVOLPROP                = 0x80104f06\n\tUBI_IOCSPEB                      = 0x80046f05\n\tUBI_IOCVOLCRBLK                  = 0x80804f07\n\tUBI_IOCVOLRMBLK                  = 0x20004f08\n\tUBI_IOCVOLUP                     = 0x80084f00\n\tVDISCARD                         = 0xd\n\tVEOF                             = 0x10\n\tVEOL                             = 0x11\n\tVEOL2                            = 0x6\n\tVMIN                             = 0x4\n\tVREPRINT                         = 0xc\n\tVSTART                           = 0x8\n\tVSTOP                            = 0x9\n\tVSUSP                            = 0xa\n\tVSWTC                            = 0x7\n\tVSWTCH                           = 0x7\n\tVT1                              = 0x4000\n\tVTDLY                            = 0x4000\n\tVTIME                            = 0x5\n\tVWERASE                          = 0xe\n\tWDIOC_GETBOOTSTATUS              = 0x40045702\n\tWDIOC_GETPRETIMEOUT              = 0x40045709\n\tWDIOC_GETSTATUS                  = 0x40045701\n\tWDIOC_GETSUPPORT                 = 0x40285700\n\tWDIOC_GETTEMP                    = 0x40045703\n\tWDIOC_GETTIMELEFT                = 0x4004570a\n\tWDIOC_GETTIMEOUT                 = 0x40045707\n\tWDIOC_KEEPALIVE                  = 0x40045705\n\tWDIOC_SETOPTIONS                 = 0x40045704\n\tWORDSIZE                         = 0x40\n\tXCASE                            = 0x4\n\tXTABS                            = 0x1800\n\t_HIDIOCGRAWNAME                  = 0x40804804\n\t_HIDIOCGRAWPHYS                  = 0x40404805\n\t_HIDIOCGRAWUNIQ                  = 0x40404808\n)\n\n// Errors\nconst (\n\tEADDRINUSE      = syscall.Errno(0x7d)\n\tEADDRNOTAVAIL   = syscall.Errno(0x7e)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x7c)\n\tEALREADY        = syscall.Errno(0x95)\n\tEBADE           = syscall.Errno(0x32)\n\tEBADFD          = syscall.Errno(0x51)\n\tEBADMSG         = syscall.Errno(0x4d)\n\tEBADR           = syscall.Errno(0x33)\n\tEBADRQC         = syscall.Errno(0x36)\n\tEBADSLT         = syscall.Errno(0x37)\n\tEBFONT          = syscall.Errno(0x3b)\n\tECANCELED       = syscall.Errno(0x9e)\n\tECHRNG          = syscall.Errno(0x25)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x82)\n\tECONNREFUSED    = syscall.Errno(0x92)\n\tECONNRESET      = syscall.Errno(0x83)\n\tEDEADLK         = syscall.Errno(0x2d)\n\tEDEADLOCK       = syscall.Errno(0x38)\n\tEDESTADDRREQ    = syscall.Errno(0x60)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x46d)\n\tEHOSTDOWN       = syscall.Errno(0x93)\n\tEHOSTUNREACH    = syscall.Errno(0x94)\n\tEHWPOISON       = syscall.Errno(0xa8)\n\tEIDRM           = syscall.Errno(0x24)\n\tEILSEQ          = syscall.Errno(0x58)\n\tEINIT           = syscall.Errno(0x8d)\n\tEINPROGRESS     = syscall.Errno(0x96)\n\tEISCONN         = syscall.Errno(0x85)\n\tEISNAM          = syscall.Errno(0x8b)\n\tEKEYEXPIRED     = syscall.Errno(0xa2)\n\tEKEYREJECTED    = syscall.Errno(0xa4)\n\tEKEYREVOKED     = syscall.Errno(0xa3)\n\tEL2HLT          = syscall.Errno(0x2c)\n\tEL2NSYNC        = syscall.Errno(0x26)\n\tEL3HLT          = syscall.Errno(0x27)\n\tEL3RST          = syscall.Errno(0x28)\n\tELIBACC         = syscall.Errno(0x53)\n\tELIBBAD         = syscall.Errno(0x54)\n\tELIBEXEC        = syscall.Errno(0x57)\n\tELIBMAX         = syscall.Errno(0x56)\n\tELIBSCN         = syscall.Errno(0x55)\n\tELNRNG          = syscall.Errno(0x29)\n\tELOOP           = syscall.Errno(0x5a)\n\tEMEDIUMTYPE     = syscall.Errno(0xa0)\n\tEMSGSIZE        = syscall.Errno(0x61)\n\tEMULTIHOP       = syscall.Errno(0x4a)\n\tENAMETOOLONG    = syscall.Errno(0x4e)\n\tENAVAIL         = syscall.Errno(0x8a)\n\tENETDOWN        = syscall.Errno(0x7f)\n\tENETRESET       = syscall.Errno(0x81)\n\tENETUNREACH     = syscall.Errno(0x80)\n\tENOANO          = syscall.Errno(0x35)\n\tENOBUFS         = syscall.Errno(0x84)\n\tENOCSI          = syscall.Errno(0x2b)\n\tENODATA         = syscall.Errno(0x3d)\n\tENOKEY          = syscall.Errno(0xa1)\n\tENOLCK          = syscall.Errno(0x2e)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x9f)\n\tENOMSG          = syscall.Errno(0x23)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x63)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x59)\n\tENOTCONN        = syscall.Errno(0x86)\n\tENOTEMPTY       = syscall.Errno(0x5d)\n\tENOTNAM         = syscall.Errno(0x89)\n\tENOTRECOVERABLE = syscall.Errno(0xa6)\n\tENOTSOCK        = syscall.Errno(0x5f)\n\tENOTSUP         = syscall.Errno(0x7a)\n\tENOTUNIQ        = syscall.Errno(0x50)\n\tEOPNOTSUPP      = syscall.Errno(0x7a)\n\tEOVERFLOW       = syscall.Errno(0x4f)\n\tEOWNERDEAD      = syscall.Errno(0xa5)\n\tEPFNOSUPPORT    = syscall.Errno(0x7b)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x78)\n\tEPROTOTYPE      = syscall.Errno(0x62)\n\tEREMCHG         = syscall.Errno(0x52)\n\tEREMDEV         = syscall.Errno(0x8e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x8c)\n\tERESTART        = syscall.Errno(0x5b)\n\tERFKILL         = syscall.Errno(0xa7)\n\tESHUTDOWN       = syscall.Errno(0x8f)\n\tESOCKTNOSUPPORT = syscall.Errno(0x79)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x97)\n\tESTRPIPE        = syscall.Errno(0x5c)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x91)\n\tETOOMANYREFS    = syscall.Errno(0x90)\n\tEUCLEAN         = syscall.Errno(0x87)\n\tEUNATCH         = syscall.Errno(0x2a)\n\tEUSERS          = syscall.Errno(0x5e)\n\tEXFULL          = syscall.Errno(0x34)\n)\n\n// Signals\nconst (\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x12)\n\tSIGCLD    = syscall.Signal(0x12)\n\tSIGCONT   = syscall.Signal(0x19)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGIO     = syscall.Signal(0x16)\n\tSIGPOLL   = syscall.Signal(0x16)\n\tSIGPROF   = syscall.Signal(0x1d)\n\tSIGPWR    = syscall.Signal(0x13)\n\tSIGSTOP   = syscall.Signal(0x17)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTSTP   = syscall.Signal(0x18)\n\tSIGTTIN   = syscall.Signal(0x1a)\n\tSIGTTOU   = syscall.Signal(0x1b)\n\tSIGURG    = syscall.Signal(0x15)\n\tSIGUSR1   = syscall.Signal(0x10)\n\tSIGUSR2   = syscall.Signal(0x11)\n\tSIGVTALRM = syscall.Signal(0x1c)\n\tSIGWINCH  = syscall.Signal(0x14)\n\tSIGXCPU   = syscall.Signal(0x1e)\n\tSIGXFSZ   = syscall.Signal(0x1f)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"ENOMSG\", \"no message of desired type\"},\n\t{36, \"EIDRM\", \"identifier removed\"},\n\t{37, \"ECHRNG\", \"channel number out of range\"},\n\t{38, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{39, \"EL3HLT\", \"level 3 halted\"},\n\t{40, \"EL3RST\", \"level 3 reset\"},\n\t{41, \"ELNRNG\", \"link number out of range\"},\n\t{42, \"EUNATCH\", \"protocol driver not attached\"},\n\t{43, \"ENOCSI\", \"no CSI structure available\"},\n\t{44, \"EL2HLT\", \"level 2 halted\"},\n\t{45, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{46, \"ENOLCK\", \"no locks available\"},\n\t{50, \"EBADE\", \"invalid exchange\"},\n\t{51, \"EBADR\", \"invalid request descriptor\"},\n\t{52, \"EXFULL\", \"exchange full\"},\n\t{53, \"ENOANO\", \"no anode\"},\n\t{54, \"EBADRQC\", \"invalid request code\"},\n\t{55, \"EBADSLT\", \"invalid slot\"},\n\t{56, \"EDEADLOCK\", \"file locking deadlock error\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EMULTIHOP\", \"multihop attempted\"},\n\t{77, \"EBADMSG\", \"bad message\"},\n\t{78, \"ENAMETOOLONG\", \"file name too long\"},\n\t{79, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{80, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{81, \"EBADFD\", \"file descriptor in bad state\"},\n\t{82, \"EREMCHG\", \"remote address changed\"},\n\t{83, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{84, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{85, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{86, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{87, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{88, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{89, \"ENOSYS\", \"function not implemented\"},\n\t{90, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{91, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{92, \"ESTRPIPE\", \"streams pipe error\"},\n\t{93, \"ENOTEMPTY\", \"directory not empty\"},\n\t{94, \"EUSERS\", \"too many users\"},\n\t{95, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{96, \"EDESTADDRREQ\", \"destination address required\"},\n\t{97, \"EMSGSIZE\", \"message too long\"},\n\t{98, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{99, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{120, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{121, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{122, \"ENOTSUP\", \"operation not supported\"},\n\t{123, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{124, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{125, \"EADDRINUSE\", \"address already in use\"},\n\t{126, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{127, \"ENETDOWN\", \"network is down\"},\n\t{128, \"ENETUNREACH\", \"network is unreachable\"},\n\t{129, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{130, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{131, \"ECONNRESET\", \"connection reset by peer\"},\n\t{132, \"ENOBUFS\", \"no buffer space available\"},\n\t{133, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{134, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{135, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{137, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{138, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{139, \"EISNAM\", \"is a named type file\"},\n\t{140, \"EREMOTEIO\", \"remote I/O error\"},\n\t{141, \"EINIT\", \"unknown error 141\"},\n\t{142, \"EREMDEV\", \"unknown error 142\"},\n\t{143, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{144, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{145, \"ETIMEDOUT\", \"connection timed out\"},\n\t{146, \"ECONNREFUSED\", \"connection refused\"},\n\t{147, \"EHOSTDOWN\", \"host is down\"},\n\t{148, \"EHOSTUNREACH\", \"no route to host\"},\n\t{149, \"EALREADY\", \"operation already in progress\"},\n\t{150, \"EINPROGRESS\", \"operation now in progress\"},\n\t{151, \"ESTALE\", \"stale file handle\"},\n\t{158, \"ECANCELED\", \"operation canceled\"},\n\t{159, \"ENOMEDIUM\", \"no medium found\"},\n\t{160, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{161, \"ENOKEY\", \"required key not available\"},\n\t{162, \"EKEYEXPIRED\", \"key has expired\"},\n\t{163, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{164, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{165, \"EOWNERDEAD\", \"owner died\"},\n\t{166, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{167, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{168, \"EHWPOISON\", \"memory page has hardware error\"},\n\t{1133, \"EDQUOT\", \"disk quota exceeded\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGUSR1\", \"user defined signal 1\"},\n\t{17, \"SIGUSR2\", \"user defined signal 2\"},\n\t{18, \"SIGCHLD\", \"child exited\"},\n\t{19, \"SIGPWR\", \"power failure\"},\n\t{20, \"SIGWINCH\", \"window changed\"},\n\t{21, \"SIGURG\", \"urgent I/O condition\"},\n\t{22, \"SIGIO\", \"I/O possible\"},\n\t{23, \"SIGSTOP\", \"stopped (signal)\"},\n\t{24, \"SIGTSTP\", \"stopped\"},\n\t{25, \"SIGCONT\", \"continued\"},\n\t{26, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{27, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{28, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{29, \"SIGPROF\", \"profiling timer expired\"},\n\t{30, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{31, \"SIGXFSZ\", \"file size limit exceeded\"},\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/mips64le/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mips64le && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/mips64le/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x1008\n\tB115200                          = 0x1002\n\tB1152000                         = 0x1009\n\tB1500000                         = 0x100a\n\tB2000000                         = 0x100b\n\tB230400                          = 0x1003\n\tB2500000                         = 0x100c\n\tB3000000                         = 0x100d\n\tB3500000                         = 0x100e\n\tB4000000                         = 0x100f\n\tB460800                          = 0x1004\n\tB500000                          = 0x1005\n\tB57600                           = 0x1001\n\tB576000                          = 0x1006\n\tB921600                          = 0x1007\n\tBLKALIGNOFF                      = 0x2000127a\n\tBLKBSZGET                        = 0x40081270\n\tBLKBSZSET                        = 0x80081271\n\tBLKDISCARD                       = 0x20001277\n\tBLKDISCARDZEROES                 = 0x2000127c\n\tBLKFLSBUF                        = 0x20001261\n\tBLKFRAGET                        = 0x20001265\n\tBLKFRASET                        = 0x20001264\n\tBLKGETDISKSEQ                    = 0x40081280\n\tBLKGETSIZE                       = 0x20001260\n\tBLKGETSIZE64                     = 0x40081272\n\tBLKIOMIN                         = 0x20001278\n\tBLKIOOPT                         = 0x20001279\n\tBLKPBSZGET                       = 0x2000127b\n\tBLKRAGET                         = 0x20001263\n\tBLKRASET                         = 0x20001262\n\tBLKROGET                         = 0x2000125e\n\tBLKROSET                         = 0x2000125d\n\tBLKROTATIONAL                    = 0x2000127e\n\tBLKRRPART                        = 0x2000125f\n\tBLKSECDISCARD                    = 0x2000127d\n\tBLKSECTGET                       = 0x20001267\n\tBLKSECTSET                       = 0x20001266\n\tBLKSSZGET                        = 0x20001268\n\tBLKZEROOUT                       = 0x2000127f\n\tBOTHER                           = 0x1000\n\tBS1                              = 0x2000\n\tBSDLY                            = 0x2000\n\tCBAUD                            = 0x100f\n\tCBAUDEX                          = 0x1000\n\tCIBAUD                           = 0x100f0000\n\tCLOCAL                           = 0x800\n\tCR1                              = 0x200\n\tCR2                              = 0x400\n\tCR3                              = 0x600\n\tCRDLY                            = 0x600\n\tCREAD                            = 0x80\n\tCS6                              = 0x10\n\tCS7                              = 0x20\n\tCS8                              = 0x30\n\tCSIZE                            = 0x30\n\tCSTOPB                           = 0x40\n\tDM_MPATH_PROBE_PATHS             = 0x2000fd12\n\tECCGETLAYOUT                     = 0x41484d11\n\tECCGETSTATS                      = 0x40104d12\n\tECHOCTL                          = 0x200\n\tECHOE                            = 0x10\n\tECHOK                            = 0x20\n\tECHOKE                           = 0x800\n\tECHONL                           = 0x40\n\tECHOPRT                          = 0x400\n\tEFD_CLOEXEC                      = 0x80000\n\tEFD_NONBLOCK                     = 0x80\n\tEPIOCGPARAMS                     = 0x40088a02\n\tEPIOCSPARAMS                     = 0x80088a01\n\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000\n\tFF1                              = 0x8000\n\tFFDLY                            = 0x8000\n\tFICLONE                          = 0x80049409\n\tFICLONERANGE                     = 0x8020940d\n\tFLUSHO                           = 0x2000\n\tFS_IOC_ENABLE_VERITY             = 0x80806685\n\tFS_IOC_GETFLAGS                  = 0x40086601\n\tFS_IOC_GET_ENCRYPTION_NONCE      = 0x4010661b\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x800c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x80106614\n\tFS_IOC_SETFLAGS                  = 0x80086602\n\tFS_IOC_SET_ENCRYPTION_POLICY     = 0x400c6613\n\tF_GETLK                          = 0xe\n\tF_GETLK64                        = 0xe\n\tF_GETOWN                         = 0x17\n\tF_RDLCK                          = 0x0\n\tF_SETLK                          = 0x6\n\tF_SETLK64                        = 0x6\n\tF_SETLKW                         = 0x7\n\tF_SETLKW64                       = 0x7\n\tF_SETOWN                         = 0x18\n\tF_UNLCK                          = 0x2\n\tF_WRLCK                          = 0x1\n\tHIDIOCGRAWINFO                   = 0x40084803\n\tHIDIOCGRDESC                     = 0x50044802\n\tHIDIOCGRDESCSIZE                 = 0x40044801\n\tHIDIOCREVOKE                     = 0x8004480d\n\tHUPCL                            = 0x400\n\tICANON                           = 0x2\n\tIEXTEN                           = 0x100\n\tIN_CLOEXEC                       = 0x80000\n\tIN_NONBLOCK                      = 0x80\n\tIOCTL_MEI_NOTIFY_GET             = 0x40044803\n\tIOCTL_MEI_NOTIFY_SET             = 0x80044802\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x200007b9\n\tIPV6_FLOWINFO_MASK               = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK              = 0xffff0f00\n\tISIG                             = 0x1\n\tIUCLC                            = 0x200\n\tIXOFF                            = 0x1000\n\tIXON                             = 0x400\n\tMAP_ANON                         = 0x800\n\tMAP_ANONYMOUS                    = 0x800\n\tMAP_DENYWRITE                    = 0x2000\n\tMAP_EXECUTABLE                   = 0x4000\n\tMAP_GROWSDOWN                    = 0x1000\n\tMAP_HUGETLB                      = 0x80000\n\tMAP_LOCKED                       = 0x8000\n\tMAP_NONBLOCK                     = 0x20000\n\tMAP_NORESERVE                    = 0x400\n\tMAP_POPULATE                     = 0x10000\n\tMAP_RENAME                       = 0x800\n\tMAP_STACK                        = 0x40000\n\tMCL_CURRENT                      = 0x1\n\tMCL_FUTURE                       = 0x2\n\tMCL_ONFAULT                      = 0x4\n\tMEMERASE                         = 0x80084d02\n\tMEMERASE64                       = 0x80104d14\n\tMEMGETBADBLOCK                   = 0x80084d0b\n\tMEMGETINFO                       = 0x40204d01\n\tMEMGETOOBSEL                     = 0x40c84d0a\n\tMEMGETREGIONCOUNT                = 0x40044d07\n\tMEMISLOCKED                      = 0x40084d17\n\tMEMLOCK                          = 0x80084d05\n\tMEMREAD                          = 0xc0404d1a\n\tMEMREADOOB                       = 0xc0104d04\n\tMEMSETBADBLOCK                   = 0x80084d0c\n\tMEMUNLOCK                        = 0x80084d06\n\tMEMWRITEOOB                      = 0xc0104d03\n\tMTDFILEMODE                      = 0x20004d13\n\tNFDBITS                          = 0x40\n\tNLDLY                            = 0x100\n\tNOFLSH                           = 0x80\n\tNS_GET_MNTNS_ID                  = 0x4008b705\n\tNS_GET_NSTYPE                    = 0x2000b703\n\tNS_GET_OWNER_UID                 = 0x2000b704\n\tNS_GET_PARENT                    = 0x2000b702\n\tNS_GET_PID_FROM_PIDNS            = 0x4004b706\n\tNS_GET_PID_IN_PIDNS              = 0x4004b708\n\tNS_GET_TGID_FROM_PIDNS           = 0x4004b707\n\tNS_GET_TGID_IN_PIDNS             = 0x4004b709\n\tNS_GET_USERNS                    = 0x2000b701\n\tOLCUC                            = 0x2\n\tONLCR                            = 0x4\n\tOTPERASE                         = 0x800c4d19\n\tOTPGETREGIONCOUNT                = 0x80044d0e\n\tOTPGETREGIONINFO                 = 0x800c4d0f\n\tOTPLOCK                          = 0x400c4d10\n\tOTPSELECT                        = 0x40044d0d\n\tO_APPEND                         = 0x8\n\tO_ASYNC                          = 0x1000\n\tO_CLOEXEC                        = 0x80000\n\tO_CREAT                          = 0x100\n\tO_DIRECT                         = 0x8000\n\tO_DIRECTORY                      = 0x10000\n\tO_DSYNC                          = 0x10\n\tO_EXCL                           = 0x400\n\tO_FSYNC                          = 0x4010\n\tO_LARGEFILE                      = 0x0\n\tO_NDELAY                         = 0x80\n\tO_NOATIME                        = 0x40000\n\tO_NOCTTY                         = 0x800\n\tO_NOFOLLOW                       = 0x20000\n\tO_NONBLOCK                       = 0x80\n\tO_PATH                           = 0x200000\n\tO_RSYNC                          = 0x4010\n\tO_SYNC                           = 0x4010\n\tO_TMPFILE                        = 0x410000\n\tO_TRUNC                          = 0x200\n\tPARENB                           = 0x100\n\tPARODD                           = 0x200\n\tPENDIN                           = 0x4000\n\tPERF_EVENT_IOC_DISABLE           = 0x20002401\n\tPERF_EVENT_IOC_ENABLE            = 0x20002400\n\tPERF_EVENT_IOC_ID                = 0x40082407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8008240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT      = 0x80042409\n\tPERF_EVENT_IOC_PERIOD            = 0x80082404\n\tPERF_EVENT_IOC_QUERY_BPF         = 0xc008240a\n\tPERF_EVENT_IOC_REFRESH           = 0x20002402\n\tPERF_EVENT_IOC_RESET             = 0x20002403\n\tPERF_EVENT_IOC_SET_BPF           = 0x80042408\n\tPERF_EVENT_IOC_SET_FILTER        = 0x80082406\n\tPERF_EVENT_IOC_SET_OUTPUT        = 0x20002405\n\tPPPIOCATTACH                     = 0x8004743d\n\tPPPIOCATTCHAN                    = 0x80047438\n\tPPPIOCBRIDGECHAN                 = 0x80047435\n\tPPPIOCCONNECT                    = 0x8004743a\n\tPPPIOCDETACH                     = 0x8004743c\n\tPPPIOCDISCONN                    = 0x20007439\n\tPPPIOCGASYNCMAP                  = 0x40047458\n\tPPPIOCGCHAN                      = 0x40047437\n\tPPPIOCGDEBUG                     = 0x40047441\n\tPPPIOCGFLAGS                     = 0x4004745a\n\tPPPIOCGIDLE                      = 0x4010743f\n\tPPPIOCGIDLE32                    = 0x4008743f\n\tPPPIOCGIDLE64                    = 0x4010743f\n\tPPPIOCGL2TPSTATS                 = 0x40487436\n\tPPPIOCGMRU                       = 0x40047453\n\tPPPIOCGRASYNCMAP                 = 0x40047455\n\tPPPIOCGUNIT                      = 0x40047456\n\tPPPIOCGXASYNCMAP                 = 0x40207450\n\tPPPIOCSACTIVE                    = 0x80107446\n\tPPPIOCSASYNCMAP                  = 0x80047457\n\tPPPIOCSCOMPRESS                  = 0x8010744d\n\tPPPIOCSDEBUG                     = 0x80047440\n\tPPPIOCSFLAGS                     = 0x80047459\n\tPPPIOCSMAXCID                    = 0x80047451\n\tPPPIOCSMRRU                      = 0x8004743b\n\tPPPIOCSMRU                       = 0x80047452\n\tPPPIOCSNPMODE                    = 0x8008744b\n\tPPPIOCSPASS                      = 0x80107447\n\tPPPIOCSRASYNCMAP                 = 0x80047454\n\tPPPIOCSXASYNCMAP                 = 0x8020744f\n\tPPPIOCUNBRIDGECHAN               = 0x20007434\n\tPPPIOCXFERUNIT                   = 0x2000744e\n\tPR_SET_PTRACER_ANY               = 0xffffffffffffffff\n\tPTP_CLOCK_GETCAPS                = 0x40503d01\n\tPTP_CLOCK_GETCAPS2               = 0x40503d0a\n\tPTP_ENABLE_PPS                   = 0x80043d04\n\tPTP_ENABLE_PPS2                  = 0x80043d0d\n\tPTP_EXTTS_REQUEST                = 0x80103d02\n\tPTP_EXTTS_REQUEST2               = 0x80103d0b\n\tPTP_MASK_CLEAR_ALL               = 0x20003d13\n\tPTP_MASK_EN_SINGLE               = 0x80043d14\n\tPTP_PEROUT_REQUEST               = 0x80383d03\n\tPTP_PEROUT_REQUEST2              = 0x80383d0c\n\tPTP_PIN_SETFUNC                  = 0x80603d07\n\tPTP_PIN_SETFUNC2                 = 0x80603d10\n\tPTP_SYS_OFFSET                   = 0x83403d05\n\tPTP_SYS_OFFSET2                  = 0x83403d0e\n\tPTRACE_GETFPREGS                 = 0xe\n\tPTRACE_GET_THREAD_AREA           = 0x19\n\tPTRACE_GET_THREAD_AREA_3264      = 0xc4\n\tPTRACE_GET_WATCH_REGS            = 0xd0\n\tPTRACE_OLDSETOPTIONS             = 0x15\n\tPTRACE_PEEKDATA_3264             = 0xc1\n\tPTRACE_PEEKTEXT_3264             = 0xc0\n\tPTRACE_POKEDATA_3264             = 0xc3\n\tPTRACE_POKETEXT_3264             = 0xc2\n\tPTRACE_SETFPREGS                 = 0xf\n\tPTRACE_SET_THREAD_AREA           = 0x1a\n\tPTRACE_SET_WATCH_REGS            = 0xd1\n\tRLIMIT_AS                        = 0x6\n\tRLIMIT_MEMLOCK                   = 0x9\n\tRLIMIT_NOFILE                    = 0x5\n\tRLIMIT_NPROC                     = 0x8\n\tRLIMIT_RSS                       = 0x7\n\tRNDADDENTROPY                    = 0x80085203\n\tRNDADDTOENTCNT                   = 0x80045201\n\tRNDCLEARPOOL                     = 0x20005206\n\tRNDGETENTCNT                     = 0x40045200\n\tRNDGETPOOL                       = 0x40085202\n\tRNDRESEEDCRNG                    = 0x20005207\n\tRNDZAPENTCNT                     = 0x20005204\n\tRTC_AIE_OFF                      = 0x20007002\n\tRTC_AIE_ON                       = 0x20007001\n\tRTC_ALM_READ                     = 0x40247008\n\tRTC_ALM_SET                      = 0x80247007\n\tRTC_EPOCH_READ                   = 0x4008700d\n\tRTC_EPOCH_SET                    = 0x8008700e\n\tRTC_IRQP_READ                    = 0x4008700b\n\tRTC_IRQP_SET                     = 0x8008700c\n\tRTC_PARAM_GET                    = 0x80187013\n\tRTC_PARAM_SET                    = 0x80187014\n\tRTC_PIE_OFF                      = 0x20007006\n\tRTC_PIE_ON                       = 0x20007005\n\tRTC_PLL_GET                      = 0x40207011\n\tRTC_PLL_SET                      = 0x80207012\n\tRTC_RD_TIME                      = 0x40247009\n\tRTC_SET_TIME                     = 0x8024700a\n\tRTC_UIE_OFF                      = 0x20007004\n\tRTC_UIE_ON                       = 0x20007003\n\tRTC_VL_CLR                       = 0x20007014\n\tRTC_VL_READ                      = 0x40047013\n\tRTC_WIE_OFF                      = 0x20007010\n\tRTC_WIE_ON                       = 0x2000700f\n\tRTC_WKALM_RD                     = 0x40287010\n\tRTC_WKALM_SET                    = 0x8028700f\n\tSCM_DEVMEM_DMABUF                = 0x4f\n\tSCM_DEVMEM_LINEAR                = 0x4e\n\tSCM_TIMESTAMPING                 = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS       = 0x36\n\tSCM_TIMESTAMPING_PKTINFO         = 0x3a\n\tSCM_TIMESTAMPNS                  = 0x23\n\tSCM_TS_OPT_ID                    = 0x51\n\tSCM_TXTIME                       = 0x3d\n\tSCM_WIFI_STATUS                  = 0x29\n\tSECCOMP_IOCTL_NOTIF_ADDFD        = 0x80182103\n\tSECCOMP_IOCTL_NOTIF_ID_VALID     = 0x80082102\n\tSECCOMP_IOCTL_NOTIF_SET_FLAGS    = 0x80082104\n\tSFD_CLOEXEC                      = 0x80000\n\tSFD_NONBLOCK                     = 0x80\n\tSIOCATMARK                       = 0x40047307\n\tSIOCGPGRP                        = 0x40047309\n\tSIOCGSTAMPNS_NEW                 = 0x40108907\n\tSIOCGSTAMP_NEW                   = 0x40108906\n\tSIOCINQ                          = 0x467f\n\tSIOCOUTQ                         = 0x7472\n\tSIOCSPGRP                        = 0x80047308\n\tSOCK_CLOEXEC                     = 0x80000\n\tSOCK_DGRAM                       = 0x1\n\tSOCK_NONBLOCK                    = 0x80\n\tSOCK_STREAM                      = 0x2\n\tSOL_SOCKET                       = 0xffff\n\tSO_ACCEPTCONN                    = 0x1009\n\tSO_ATTACH_BPF                    = 0x32\n\tSO_ATTACH_REUSEPORT_CBPF         = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF         = 0x34\n\tSO_BINDTODEVICE                  = 0x19\n\tSO_BINDTOIFINDEX                 = 0x3e\n\tSO_BPF_EXTENSIONS                = 0x30\n\tSO_BROADCAST                     = 0x20\n\tSO_BSDCOMPAT                     = 0xe\n\tSO_BUF_LOCK                      = 0x48\n\tSO_BUSY_POLL                     = 0x2e\n\tSO_BUSY_POLL_BUDGET              = 0x46\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\n\tSO_DEVMEM_DMABUF                 = 0x4f\n\tSO_DEVMEM_DONTNEED               = 0x50\n\tSO_DEVMEM_LINEAR                 = 0x4e\n\tSO_DOMAIN                        = 0x1029\n\tSO_DONTROUTE                     = 0x10\n\tSO_ERROR                         = 0x1007\n\tSO_INCOMING_CPU                  = 0x31\n\tSO_INCOMING_NAPI_ID              = 0x38\n\tSO_KEEPALIVE                     = 0x8\n\tSO_LINGER                        = 0x80\n\tSO_LOCK_FILTER                   = 0x2c\n\tSO_MARK                          = 0x24\n\tSO_MAX_PACING_RATE               = 0x2f\n\tSO_MEMINFO                       = 0x37\n\tSO_NETNS_COOKIE                  = 0x47\n\tSO_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0x100\n\tSO_PASSCRED                      = 0x11\n\tSO_PASSPIDFD                     = 0x4c\n\tSO_PASSRIGHTS                    = 0x53\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x12\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERPIDFD                     = 0x4d\n\tSO_PEERSEC                       = 0x1e\n\tSO_PREFER_BUSY_POLL              = 0x45\n\tSO_PROTOCOL                      = 0x1028\n\tSO_RCVBUF                        = 0x1002\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x1004\n\tSO_RCVMARK                       = 0x4b\n\tSO_RCVPRIORITY                   = 0x52\n\tSO_RCVTIMEO                      = 0x1006\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x1006\n\tSO_RESERVE_MEM                   = 0x49\n\tSO_REUSEADDR                     = 0x4\n\tSO_REUSEPORT                     = 0x200\n\tSO_RXQ_OVFL                      = 0x28\n\tSO_SECURITY_AUTHENTICATION       = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK   = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT = 0x17\n\tSO_SELECT_ERR_QUEUE              = 0x2d\n\tSO_SNDBUF                        = 0x1001\n\tSO_SNDBUFFORCE                   = 0x1f\n\tSO_SNDLOWAT                      = 0x1003\n\tSO_SNDTIMEO                      = 0x1005\n\tSO_SNDTIMEO_NEW                  = 0x43\n\tSO_SNDTIMEO_OLD                  = 0x1005\n\tSO_STYLE                         = 0x1008\n\tSO_TIMESTAMPING                  = 0x25\n\tSO_TIMESTAMPING_NEW              = 0x41\n\tSO_TIMESTAMPING_OLD              = 0x25\n\tSO_TIMESTAMPNS                   = 0x23\n\tSO_TIMESTAMPNS_NEW               = 0x40\n\tSO_TIMESTAMPNS_OLD               = 0x23\n\tSO_TIMESTAMP_NEW                 = 0x3f\n\tSO_TXREHASH                      = 0x4a\n\tSO_TXTIME                        = 0x3d\n\tSO_TYPE                          = 0x1008\n\tSO_WIFI_STATUS                   = 0x29\n\tSO_ZEROCOPY                      = 0x3c\n\tTAB1                             = 0x800\n\tTAB2                             = 0x1000\n\tTAB3                             = 0x1800\n\tTABDLY                           = 0x1800\n\tTCFLSH                           = 0x5407\n\tTCGETA                           = 0x5401\n\tTCGETS                           = 0x540d\n\tTCGETS2                          = 0x4030542a\n\tTCSAFLUSH                        = 0x5410\n\tTCSBRK                           = 0x5405\n\tTCSBRKP                          = 0x5486\n\tTCSETA                           = 0x5402\n\tTCSETAF                          = 0x5404\n\tTCSETAW                          = 0x5403\n\tTCSETS                           = 0x540e\n\tTCSETS2                          = 0x8030542b\n\tTCSETSF                          = 0x5410\n\tTCSETSF2                         = 0x8030542d\n\tTCSETSW                          = 0x540f\n\tTCSETSW2                         = 0x8030542c\n\tTCXONC                           = 0x5406\n\tTFD_CLOEXEC                      = 0x80000\n\tTFD_NONBLOCK                     = 0x80\n\tTIOCCBRK                         = 0x5428\n\tTIOCCONS                         = 0x80047478\n\tTIOCEXCL                         = 0x740d\n\tTIOCGDEV                         = 0x40045432\n\tTIOCGETD                         = 0x7400\n\tTIOCGETP                         = 0x7408\n\tTIOCGEXCL                        = 0x40045440\n\tTIOCGICOUNT                      = 0x5492\n\tTIOCGISO7816                     = 0x40285442\n\tTIOCGLCKTRMIOS                   = 0x548b\n\tTIOCGLTC                         = 0x7474\n\tTIOCGPGRP                        = 0x40047477\n\tTIOCGPKT                         = 0x40045438\n\tTIOCGPTLCK                       = 0x40045439\n\tTIOCGPTN                         = 0x40045430\n\tTIOCGPTPEER                      = 0x20005441\n\tTIOCGRS485                       = 0x4020542e\n\tTIOCGSERIAL                      = 0x5484\n\tTIOCGSID                         = 0x7416\n\tTIOCGSOFTCAR                     = 0x5481\n\tTIOCGWINSZ                       = 0x40087468\n\tTIOCINQ                          = 0x467f\n\tTIOCLINUX                        = 0x5483\n\tTIOCMBIC                         = 0x741c\n\tTIOCMBIS                         = 0x741b\n\tTIOCMGET                         = 0x741d\n\tTIOCMIWAIT                       = 0x5491\n\tTIOCMSET                         = 0x741a\n\tTIOCM_CAR                        = 0x100\n\tTIOCM_CD                         = 0x100\n\tTIOCM_CTS                        = 0x40\n\tTIOCM_DSR                        = 0x400\n\tTIOCM_RI                         = 0x200\n\tTIOCM_RNG                        = 0x200\n\tTIOCM_SR                         = 0x20\n\tTIOCM_ST                         = 0x10\n\tTIOCNOTTY                        = 0x5471\n\tTIOCNXCL                         = 0x740e\n\tTIOCOUTQ                         = 0x7472\n\tTIOCPKT                          = 0x5470\n\tTIOCSBRK                         = 0x5427\n\tTIOCSCTTY                        = 0x5480\n\tTIOCSERCONFIG                    = 0x5488\n\tTIOCSERGETLSR                    = 0x548e\n\tTIOCSERGETMULTI                  = 0x548f\n\tTIOCSERGSTRUCT                   = 0x548d\n\tTIOCSERGWILD                     = 0x5489\n\tTIOCSERSETMULTI                  = 0x5490\n\tTIOCSERSWILD                     = 0x548a\n\tTIOCSER_TEMT                     = 0x1\n\tTIOCSETD                         = 0x7401\n\tTIOCSETN                         = 0x740a\n\tTIOCSETP                         = 0x7409\n\tTIOCSIG                          = 0x80045436\n\tTIOCSISO7816                     = 0xc0285443\n\tTIOCSLCKTRMIOS                   = 0x548c\n\tTIOCSLTC                         = 0x7475\n\tTIOCSPGRP                        = 0x80047476\n\tTIOCSPTLCK                       = 0x80045431\n\tTIOCSRS485                       = 0xc020542f\n\tTIOCSSERIAL                      = 0x5485\n\tTIOCSSOFTCAR                     = 0x5482\n\tTIOCSTI                          = 0x5472\n\tTIOCSWINSZ                       = 0x80087467\n\tTIOCVHANGUP                      = 0x5437\n\tTOSTOP                           = 0x8000\n\tTUNATTACHFILTER                  = 0x801054d5\n\tTUNDETACHFILTER                  = 0x801054d6\n\tTUNGETDEVNETNS                   = 0x200054e3\n\tTUNGETFEATURES                   = 0x400454cf\n\tTUNGETFILTER                     = 0x401054db\n\tTUNGETIFF                        = 0x400454d2\n\tTUNGETSNDBUF                     = 0x400454d3\n\tTUNGETVNETBE                     = 0x400454df\n\tTUNGETVNETHDRSZ                  = 0x400454d7\n\tTUNGETVNETLE                     = 0x400454dd\n\tTUNSETCARRIER                    = 0x800454e2\n\tTUNSETDEBUG                      = 0x800454c9\n\tTUNSETFILTEREBPF                 = 0x400454e1\n\tTUNSETGROUP                      = 0x800454ce\n\tTUNSETIFF                        = 0x800454ca\n\tTUNSETIFINDEX                    = 0x800454da\n\tTUNSETLINK                       = 0x800454cd\n\tTUNSETNOCSUM                     = 0x800454c8\n\tTUNSETOFFLOAD                    = 0x800454d0\n\tTUNSETOWNER                      = 0x800454cc\n\tTUNSETPERSIST                    = 0x800454cb\n\tTUNSETQUEUE                      = 0x800454d9\n\tTUNSETSNDBUF                     = 0x800454d4\n\tTUNSETSTEERINGEBPF               = 0x400454e0\n\tTUNSETTXFILTER                   = 0x800454d1\n\tTUNSETVNETBE                     = 0x800454de\n\tTUNSETVNETHDRSZ                  = 0x800454d8\n\tTUNSETVNETLE                     = 0x800454dc\n\tUBI_IOCATT                       = 0x80186f40\n\tUBI_IOCDET                       = 0x80046f41\n\tUBI_IOCEBCH                      = 0x80044f02\n\tUBI_IOCEBER                      = 0x80044f01\n\tUBI_IOCEBISMAP                   = 0x40044f05\n\tUBI_IOCEBMAP                     = 0x80084f03\n\tUBI_IOCEBUNMAP                   = 0x80044f04\n\tUBI_IOCMKVOL                     = 0x80986f00\n\tUBI_IOCRMVOL                     = 0x80046f01\n\tUBI_IOCRNVOL                     = 0x91106f03\n\tUBI_IOCRPEB                      = 0x80046f04\n\tUBI_IOCRSVOL                     = 0x800c6f02\n\tUBI_IOCSETVOLPROP                = 0x80104f06\n\tUBI_IOCSPEB                      = 0x80046f05\n\tUBI_IOCVOLCRBLK                  = 0x80804f07\n\tUBI_IOCVOLRMBLK                  = 0x20004f08\n\tUBI_IOCVOLUP                     = 0x80084f00\n\tVDISCARD                         = 0xd\n\tVEOF                             = 0x10\n\tVEOL                             = 0x11\n\tVEOL2                            = 0x6\n\tVMIN                             = 0x4\n\tVREPRINT                         = 0xc\n\tVSTART                           = 0x8\n\tVSTOP                            = 0x9\n\tVSUSP                            = 0xa\n\tVSWTC                            = 0x7\n\tVSWTCH                           = 0x7\n\tVT1                              = 0x4000\n\tVTDLY                            = 0x4000\n\tVTIME                            = 0x5\n\tVWERASE                          = 0xe\n\tWDIOC_GETBOOTSTATUS              = 0x40045702\n\tWDIOC_GETPRETIMEOUT              = 0x40045709\n\tWDIOC_GETSTATUS                  = 0x40045701\n\tWDIOC_GETSUPPORT                 = 0x40285700\n\tWDIOC_GETTEMP                    = 0x40045703\n\tWDIOC_GETTIMELEFT                = 0x4004570a\n\tWDIOC_GETTIMEOUT                 = 0x40045707\n\tWDIOC_KEEPALIVE                  = 0x40045705\n\tWDIOC_SETOPTIONS                 = 0x40045704\n\tWORDSIZE                         = 0x40\n\tXCASE                            = 0x4\n\tXTABS                            = 0x1800\n\t_HIDIOCGRAWNAME                  = 0x40804804\n\t_HIDIOCGRAWPHYS                  = 0x40404805\n\t_HIDIOCGRAWUNIQ                  = 0x40404808\n)\n\n// Errors\nconst (\n\tEADDRINUSE      = syscall.Errno(0x7d)\n\tEADDRNOTAVAIL   = syscall.Errno(0x7e)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x7c)\n\tEALREADY        = syscall.Errno(0x95)\n\tEBADE           = syscall.Errno(0x32)\n\tEBADFD          = syscall.Errno(0x51)\n\tEBADMSG         = syscall.Errno(0x4d)\n\tEBADR           = syscall.Errno(0x33)\n\tEBADRQC         = syscall.Errno(0x36)\n\tEBADSLT         = syscall.Errno(0x37)\n\tEBFONT          = syscall.Errno(0x3b)\n\tECANCELED       = syscall.Errno(0x9e)\n\tECHRNG          = syscall.Errno(0x25)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x82)\n\tECONNREFUSED    = syscall.Errno(0x92)\n\tECONNRESET      = syscall.Errno(0x83)\n\tEDEADLK         = syscall.Errno(0x2d)\n\tEDEADLOCK       = syscall.Errno(0x38)\n\tEDESTADDRREQ    = syscall.Errno(0x60)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x46d)\n\tEHOSTDOWN       = syscall.Errno(0x93)\n\tEHOSTUNREACH    = syscall.Errno(0x94)\n\tEHWPOISON       = syscall.Errno(0xa8)\n\tEIDRM           = syscall.Errno(0x24)\n\tEILSEQ          = syscall.Errno(0x58)\n\tEINIT           = syscall.Errno(0x8d)\n\tEINPROGRESS     = syscall.Errno(0x96)\n\tEISCONN         = syscall.Errno(0x85)\n\tEISNAM          = syscall.Errno(0x8b)\n\tEKEYEXPIRED     = syscall.Errno(0xa2)\n\tEKEYREJECTED    = syscall.Errno(0xa4)\n\tEKEYREVOKED     = syscall.Errno(0xa3)\n\tEL2HLT          = syscall.Errno(0x2c)\n\tEL2NSYNC        = syscall.Errno(0x26)\n\tEL3HLT          = syscall.Errno(0x27)\n\tEL3RST          = syscall.Errno(0x28)\n\tELIBACC         = syscall.Errno(0x53)\n\tELIBBAD         = syscall.Errno(0x54)\n\tELIBEXEC        = syscall.Errno(0x57)\n\tELIBMAX         = syscall.Errno(0x56)\n\tELIBSCN         = syscall.Errno(0x55)\n\tELNRNG          = syscall.Errno(0x29)\n\tELOOP           = syscall.Errno(0x5a)\n\tEMEDIUMTYPE     = syscall.Errno(0xa0)\n\tEMSGSIZE        = syscall.Errno(0x61)\n\tEMULTIHOP       = syscall.Errno(0x4a)\n\tENAMETOOLONG    = syscall.Errno(0x4e)\n\tENAVAIL         = syscall.Errno(0x8a)\n\tENETDOWN        = syscall.Errno(0x7f)\n\tENETRESET       = syscall.Errno(0x81)\n\tENETUNREACH     = syscall.Errno(0x80)\n\tENOANO          = syscall.Errno(0x35)\n\tENOBUFS         = syscall.Errno(0x84)\n\tENOCSI          = syscall.Errno(0x2b)\n\tENODATA         = syscall.Errno(0x3d)\n\tENOKEY          = syscall.Errno(0xa1)\n\tENOLCK          = syscall.Errno(0x2e)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x9f)\n\tENOMSG          = syscall.Errno(0x23)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x63)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x59)\n\tENOTCONN        = syscall.Errno(0x86)\n\tENOTEMPTY       = syscall.Errno(0x5d)\n\tENOTNAM         = syscall.Errno(0x89)\n\tENOTRECOVERABLE = syscall.Errno(0xa6)\n\tENOTSOCK        = syscall.Errno(0x5f)\n\tENOTSUP         = syscall.Errno(0x7a)\n\tENOTUNIQ        = syscall.Errno(0x50)\n\tEOPNOTSUPP      = syscall.Errno(0x7a)\n\tEOVERFLOW       = syscall.Errno(0x4f)\n\tEOWNERDEAD      = syscall.Errno(0xa5)\n\tEPFNOSUPPORT    = syscall.Errno(0x7b)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x78)\n\tEPROTOTYPE      = syscall.Errno(0x62)\n\tEREMCHG         = syscall.Errno(0x52)\n\tEREMDEV         = syscall.Errno(0x8e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x8c)\n\tERESTART        = syscall.Errno(0x5b)\n\tERFKILL         = syscall.Errno(0xa7)\n\tESHUTDOWN       = syscall.Errno(0x8f)\n\tESOCKTNOSUPPORT = syscall.Errno(0x79)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x97)\n\tESTRPIPE        = syscall.Errno(0x5c)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x91)\n\tETOOMANYREFS    = syscall.Errno(0x90)\n\tEUCLEAN         = syscall.Errno(0x87)\n\tEUNATCH         = syscall.Errno(0x2a)\n\tEUSERS          = syscall.Errno(0x5e)\n\tEXFULL          = syscall.Errno(0x34)\n)\n\n// Signals\nconst (\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x12)\n\tSIGCLD    = syscall.Signal(0x12)\n\tSIGCONT   = syscall.Signal(0x19)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGIO     = syscall.Signal(0x16)\n\tSIGPOLL   = syscall.Signal(0x16)\n\tSIGPROF   = syscall.Signal(0x1d)\n\tSIGPWR    = syscall.Signal(0x13)\n\tSIGSTOP   = syscall.Signal(0x17)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTSTP   = syscall.Signal(0x18)\n\tSIGTTIN   = syscall.Signal(0x1a)\n\tSIGTTOU   = syscall.Signal(0x1b)\n\tSIGURG    = syscall.Signal(0x15)\n\tSIGUSR1   = syscall.Signal(0x10)\n\tSIGUSR2   = syscall.Signal(0x11)\n\tSIGVTALRM = syscall.Signal(0x1c)\n\tSIGWINCH  = syscall.Signal(0x14)\n\tSIGXCPU   = syscall.Signal(0x1e)\n\tSIGXFSZ   = syscall.Signal(0x1f)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"ENOMSG\", \"no message of desired type\"},\n\t{36, \"EIDRM\", \"identifier removed\"},\n\t{37, \"ECHRNG\", \"channel number out of range\"},\n\t{38, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{39, \"EL3HLT\", \"level 3 halted\"},\n\t{40, \"EL3RST\", \"level 3 reset\"},\n\t{41, \"ELNRNG\", \"link number out of range\"},\n\t{42, \"EUNATCH\", \"protocol driver not attached\"},\n\t{43, \"ENOCSI\", \"no CSI structure available\"},\n\t{44, \"EL2HLT\", \"level 2 halted\"},\n\t{45, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{46, \"ENOLCK\", \"no locks available\"},\n\t{50, \"EBADE\", \"invalid exchange\"},\n\t{51, \"EBADR\", \"invalid request descriptor\"},\n\t{52, \"EXFULL\", \"exchange full\"},\n\t{53, \"ENOANO\", \"no anode\"},\n\t{54, \"EBADRQC\", \"invalid request code\"},\n\t{55, \"EBADSLT\", \"invalid slot\"},\n\t{56, \"EDEADLOCK\", \"file locking deadlock error\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EMULTIHOP\", \"multihop attempted\"},\n\t{77, \"EBADMSG\", \"bad message\"},\n\t{78, \"ENAMETOOLONG\", \"file name too long\"},\n\t{79, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{80, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{81, \"EBADFD\", \"file descriptor in bad state\"},\n\t{82, \"EREMCHG\", \"remote address changed\"},\n\t{83, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{84, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{85, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{86, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{87, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{88, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{89, \"ENOSYS\", \"function not implemented\"},\n\t{90, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{91, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{92, \"ESTRPIPE\", \"streams pipe error\"},\n\t{93, \"ENOTEMPTY\", \"directory not empty\"},\n\t{94, \"EUSERS\", \"too many users\"},\n\t{95, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{96, \"EDESTADDRREQ\", \"destination address required\"},\n\t{97, \"EMSGSIZE\", \"message too long\"},\n\t{98, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{99, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{120, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{121, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{122, \"ENOTSUP\", \"operation not supported\"},\n\t{123, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{124, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{125, \"EADDRINUSE\", \"address already in use\"},\n\t{126, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{127, \"ENETDOWN\", \"network is down\"},\n\t{128, \"ENETUNREACH\", \"network is unreachable\"},\n\t{129, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{130, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{131, \"ECONNRESET\", \"connection reset by peer\"},\n\t{132, \"ENOBUFS\", \"no buffer space available\"},\n\t{133, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{134, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{135, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{137, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{138, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{139, \"EISNAM\", \"is a named type file\"},\n\t{140, \"EREMOTEIO\", \"remote I/O error\"},\n\t{141, \"EINIT\", \"unknown error 141\"},\n\t{142, \"EREMDEV\", \"unknown error 142\"},\n\t{143, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{144, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{145, \"ETIMEDOUT\", \"connection timed out\"},\n\t{146, \"ECONNREFUSED\", \"connection refused\"},\n\t{147, \"EHOSTDOWN\", \"host is down\"},\n\t{148, \"EHOSTUNREACH\", \"no route to host\"},\n\t{149, \"EALREADY\", \"operation already in progress\"},\n\t{150, \"EINPROGRESS\", \"operation now in progress\"},\n\t{151, \"ESTALE\", \"stale file handle\"},\n\t{158, \"ECANCELED\", \"operation canceled\"},\n\t{159, \"ENOMEDIUM\", \"no medium found\"},\n\t{160, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{161, \"ENOKEY\", \"required key not available\"},\n\t{162, \"EKEYEXPIRED\", \"key has expired\"},\n\t{163, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{164, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{165, \"EOWNERDEAD\", \"owner died\"},\n\t{166, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{167, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{168, \"EHWPOISON\", \"memory page has hardware error\"},\n\t{1133, \"EDQUOT\", \"disk quota exceeded\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGUSR1\", \"user defined signal 1\"},\n\t{17, \"SIGUSR2\", \"user defined signal 2\"},\n\t{18, \"SIGCHLD\", \"child exited\"},\n\t{19, \"SIGPWR\", \"power failure\"},\n\t{20, \"SIGWINCH\", \"window changed\"},\n\t{21, \"SIGURG\", \"urgent I/O condition\"},\n\t{22, \"SIGIO\", \"I/O possible\"},\n\t{23, \"SIGSTOP\", \"stopped (signal)\"},\n\t{24, \"SIGTSTP\", \"stopped\"},\n\t{25, \"SIGCONT\", \"continued\"},\n\t{26, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{27, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{28, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{29, \"SIGPROF\", \"profiling timer expired\"},\n\t{30, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{31, \"SIGXFSZ\", \"file size limit exceeded\"},\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/mipsle/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mipsle && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/mipsle/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x1008\n\tB115200                          = 0x1002\n\tB1152000                         = 0x1009\n\tB1500000                         = 0x100a\n\tB2000000                         = 0x100b\n\tB230400                          = 0x1003\n\tB2500000                         = 0x100c\n\tB3000000                         = 0x100d\n\tB3500000                         = 0x100e\n\tB4000000                         = 0x100f\n\tB460800                          = 0x1004\n\tB500000                          = 0x1005\n\tB57600                           = 0x1001\n\tB576000                          = 0x1006\n\tB921600                          = 0x1007\n\tBLKALIGNOFF                      = 0x2000127a\n\tBLKBSZGET                        = 0x40041270\n\tBLKBSZSET                        = 0x80041271\n\tBLKDISCARD                       = 0x20001277\n\tBLKDISCARDZEROES                 = 0x2000127c\n\tBLKFLSBUF                        = 0x20001261\n\tBLKFRAGET                        = 0x20001265\n\tBLKFRASET                        = 0x20001264\n\tBLKGETDISKSEQ                    = 0x40081280\n\tBLKGETSIZE                       = 0x20001260\n\tBLKGETSIZE64                     = 0x40041272\n\tBLKIOMIN                         = 0x20001278\n\tBLKIOOPT                         = 0x20001279\n\tBLKPBSZGET                       = 0x2000127b\n\tBLKRAGET                         = 0x20001263\n\tBLKRASET                         = 0x20001262\n\tBLKROGET                         = 0x2000125e\n\tBLKROSET                         = 0x2000125d\n\tBLKROTATIONAL                    = 0x2000127e\n\tBLKRRPART                        = 0x2000125f\n\tBLKSECDISCARD                    = 0x2000127d\n\tBLKSECTGET                       = 0x20001267\n\tBLKSECTSET                       = 0x20001266\n\tBLKSSZGET                        = 0x20001268\n\tBLKZEROOUT                       = 0x2000127f\n\tBOTHER                           = 0x1000\n\tBS1                              = 0x2000\n\tBSDLY                            = 0x2000\n\tCBAUD                            = 0x100f\n\tCBAUDEX                          = 0x1000\n\tCIBAUD                           = 0x100f0000\n\tCLOCAL                           = 0x800\n\tCR1                              = 0x200\n\tCR2                              = 0x400\n\tCR3                              = 0x600\n\tCRDLY                            = 0x600\n\tCREAD                            = 0x80\n\tCS6                              = 0x10\n\tCS7                              = 0x20\n\tCS8                              = 0x30\n\tCSIZE                            = 0x30\n\tCSTOPB                           = 0x40\n\tDM_MPATH_PROBE_PATHS             = 0x2000fd12\n\tECCGETLAYOUT                     = 0x41484d11\n\tECCGETSTATS                      = 0x40104d12\n\tECHOCTL                          = 0x200\n\tECHOE                            = 0x10\n\tECHOK                            = 0x20\n\tECHOKE                           = 0x800\n\tECHONL                           = 0x40\n\tECHOPRT                          = 0x400\n\tEFD_CLOEXEC                      = 0x80000\n\tEFD_NONBLOCK                     = 0x80\n\tEPIOCGPARAMS                     = 0x40088a02\n\tEPIOCSPARAMS                     = 0x80088a01\n\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000\n\tFF1                              = 0x8000\n\tFFDLY                            = 0x8000\n\tFICLONE                          = 0x80049409\n\tFICLONERANGE                     = 0x8020940d\n\tFLUSHO                           = 0x2000\n\tFS_IOC_ENABLE_VERITY             = 0x80806685\n\tFS_IOC_GETFLAGS                  = 0x40046601\n\tFS_IOC_GET_ENCRYPTION_NONCE      = 0x4010661b\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x800c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x80106614\n\tFS_IOC_SETFLAGS                  = 0x80046602\n\tFS_IOC_SET_ENCRYPTION_POLICY     = 0x400c6613\n\tF_GETLK                          = 0x21\n\tF_GETLK64                        = 0x21\n\tF_GETOWN                         = 0x17\n\tF_RDLCK                          = 0x0\n\tF_SETLK                          = 0x22\n\tF_SETLK64                        = 0x22\n\tF_SETLKW                         = 0x23\n\tF_SETLKW64                       = 0x23\n\tF_SETOWN                         = 0x18\n\tF_UNLCK                          = 0x2\n\tF_WRLCK                          = 0x1\n\tHIDIOCGRAWINFO                   = 0x40084803\n\tHIDIOCGRDESC                     = 0x50044802\n\tHIDIOCGRDESCSIZE                 = 0x40044801\n\tHIDIOCREVOKE                     = 0x8004480d\n\tHUPCL                            = 0x400\n\tICANON                           = 0x2\n\tIEXTEN                           = 0x100\n\tIN_CLOEXEC                       = 0x80000\n\tIN_NONBLOCK                      = 0x80\n\tIOCTL_MEI_NOTIFY_GET             = 0x40044803\n\tIOCTL_MEI_NOTIFY_SET             = 0x80044802\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x200007b9\n\tIPV6_FLOWINFO_MASK               = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK              = 0xffff0f00\n\tISIG                             = 0x1\n\tIUCLC                            = 0x200\n\tIXOFF                            = 0x1000\n\tIXON                             = 0x400\n\tMAP_ANON                         = 0x800\n\tMAP_ANONYMOUS                    = 0x800\n\tMAP_DENYWRITE                    = 0x2000\n\tMAP_EXECUTABLE                   = 0x4000\n\tMAP_GROWSDOWN                    = 0x1000\n\tMAP_HUGETLB                      = 0x80000\n\tMAP_LOCKED                       = 0x8000\n\tMAP_NONBLOCK                     = 0x20000\n\tMAP_NORESERVE                    = 0x400\n\tMAP_POPULATE                     = 0x10000\n\tMAP_RENAME                       = 0x800\n\tMAP_STACK                        = 0x40000\n\tMCL_CURRENT                      = 0x1\n\tMCL_FUTURE                       = 0x2\n\tMCL_ONFAULT                      = 0x4\n\tMEMERASE                         = 0x80084d02\n\tMEMERASE64                       = 0x80104d14\n\tMEMGETBADBLOCK                   = 0x80084d0b\n\tMEMGETINFO                       = 0x40204d01\n\tMEMGETOOBSEL                     = 0x40c84d0a\n\tMEMGETREGIONCOUNT                = 0x40044d07\n\tMEMISLOCKED                      = 0x40084d17\n\tMEMLOCK                          = 0x80084d05\n\tMEMREAD                          = 0xc0404d1a\n\tMEMREADOOB                       = 0xc00c4d04\n\tMEMSETBADBLOCK                   = 0x80084d0c\n\tMEMUNLOCK                        = 0x80084d06\n\tMEMWRITEOOB                      = 0xc00c4d03\n\tMTDFILEMODE                      = 0x20004d13\n\tNFDBITS                          = 0x20\n\tNLDLY                            = 0x100\n\tNOFLSH                           = 0x80\n\tNS_GET_MNTNS_ID                  = 0x4008b705\n\tNS_GET_NSTYPE                    = 0x2000b703\n\tNS_GET_OWNER_UID                 = 0x2000b704\n\tNS_GET_PARENT                    = 0x2000b702\n\tNS_GET_PID_FROM_PIDNS            = 0x4004b706\n\tNS_GET_PID_IN_PIDNS              = 0x4004b708\n\tNS_GET_TGID_FROM_PIDNS           = 0x4004b707\n\tNS_GET_TGID_IN_PIDNS             = 0x4004b709\n\tNS_GET_USERNS                    = 0x2000b701\n\tOLCUC                            = 0x2\n\tONLCR                            = 0x4\n\tOTPERASE                         = 0x800c4d19\n\tOTPGETREGIONCOUNT                = 0x80044d0e\n\tOTPGETREGIONINFO                 = 0x800c4d0f\n\tOTPLOCK                          = 0x400c4d10\n\tOTPSELECT                        = 0x40044d0d\n\tO_APPEND                         = 0x8\n\tO_ASYNC                          = 0x1000\n\tO_CLOEXEC                        = 0x80000\n\tO_CREAT                          = 0x100\n\tO_DIRECT                         = 0x8000\n\tO_DIRECTORY                      = 0x10000\n\tO_DSYNC                          = 0x10\n\tO_EXCL                           = 0x400\n\tO_FSYNC                          = 0x4010\n\tO_LARGEFILE                      = 0x2000\n\tO_NDELAY                         = 0x80\n\tO_NOATIME                        = 0x40000\n\tO_NOCTTY                         = 0x800\n\tO_NOFOLLOW                       = 0x20000\n\tO_NONBLOCK                       = 0x80\n\tO_PATH                           = 0x200000\n\tO_RSYNC                          = 0x4010\n\tO_SYNC                           = 0x4010\n\tO_TMPFILE                        = 0x410000\n\tO_TRUNC                          = 0x200\n\tPARENB                           = 0x100\n\tPARODD                           = 0x200\n\tPENDIN                           = 0x4000\n\tPERF_EVENT_IOC_DISABLE           = 0x20002401\n\tPERF_EVENT_IOC_ENABLE            = 0x20002400\n\tPERF_EVENT_IOC_ID                = 0x40042407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8004240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT      = 0x80042409\n\tPERF_EVENT_IOC_PERIOD            = 0x80082404\n\tPERF_EVENT_IOC_QUERY_BPF         = 0xc004240a\n\tPERF_EVENT_IOC_REFRESH           = 0x20002402\n\tPERF_EVENT_IOC_RESET             = 0x20002403\n\tPERF_EVENT_IOC_SET_BPF           = 0x80042408\n\tPERF_EVENT_IOC_SET_FILTER        = 0x80042406\n\tPERF_EVENT_IOC_SET_OUTPUT        = 0x20002405\n\tPPPIOCATTACH                     = 0x8004743d\n\tPPPIOCATTCHAN                    = 0x80047438\n\tPPPIOCBRIDGECHAN                 = 0x80047435\n\tPPPIOCCONNECT                    = 0x8004743a\n\tPPPIOCDETACH                     = 0x8004743c\n\tPPPIOCDISCONN                    = 0x20007439\n\tPPPIOCGASYNCMAP                  = 0x40047458\n\tPPPIOCGCHAN                      = 0x40047437\n\tPPPIOCGDEBUG                     = 0x40047441\n\tPPPIOCGFLAGS                     = 0x4004745a\n\tPPPIOCGIDLE                      = 0x4008743f\n\tPPPIOCGIDLE32                    = 0x4008743f\n\tPPPIOCGIDLE64                    = 0x4010743f\n\tPPPIOCGL2TPSTATS                 = 0x40487436\n\tPPPIOCGMRU                       = 0x40047453\n\tPPPIOCGRASYNCMAP                 = 0x40047455\n\tPPPIOCGUNIT                      = 0x40047456\n\tPPPIOCGXASYNCMAP                 = 0x40207450\n\tPPPIOCSACTIVE                    = 0x80087446\n\tPPPIOCSASYNCMAP                  = 0x80047457\n\tPPPIOCSCOMPRESS                  = 0x800c744d\n\tPPPIOCSDEBUG                     = 0x80047440\n\tPPPIOCSFLAGS                     = 0x80047459\n\tPPPIOCSMAXCID                    = 0x80047451\n\tPPPIOCSMRRU                      = 0x8004743b\n\tPPPIOCSMRU                       = 0x80047452\n\tPPPIOCSNPMODE                    = 0x8008744b\n\tPPPIOCSPASS                      = 0x80087447\n\tPPPIOCSRASYNCMAP                 = 0x80047454\n\tPPPIOCSXASYNCMAP                 = 0x8020744f\n\tPPPIOCUNBRIDGECHAN               = 0x20007434\n\tPPPIOCXFERUNIT                   = 0x2000744e\n\tPR_SET_PTRACER_ANY               = 0xffffffff\n\tPTP_CLOCK_GETCAPS                = 0x40503d01\n\tPTP_CLOCK_GETCAPS2               = 0x40503d0a\n\tPTP_ENABLE_PPS                   = 0x80043d04\n\tPTP_ENABLE_PPS2                  = 0x80043d0d\n\tPTP_EXTTS_REQUEST                = 0x80103d02\n\tPTP_EXTTS_REQUEST2               = 0x80103d0b\n\tPTP_MASK_CLEAR_ALL               = 0x20003d13\n\tPTP_MASK_EN_SINGLE               = 0x80043d14\n\tPTP_PEROUT_REQUEST               = 0x80383d03\n\tPTP_PEROUT_REQUEST2              = 0x80383d0c\n\tPTP_PIN_SETFUNC                  = 0x80603d07\n\tPTP_PIN_SETFUNC2                 = 0x80603d10\n\tPTP_SYS_OFFSET                   = 0x83403d05\n\tPTP_SYS_OFFSET2                  = 0x83403d0e\n\tPTRACE_GETFPREGS                 = 0xe\n\tPTRACE_GET_THREAD_AREA           = 0x19\n\tPTRACE_GET_THREAD_AREA_3264      = 0xc4\n\tPTRACE_GET_WATCH_REGS            = 0xd0\n\tPTRACE_OLDSETOPTIONS             = 0x15\n\tPTRACE_PEEKDATA_3264             = 0xc1\n\tPTRACE_PEEKTEXT_3264             = 0xc0\n\tPTRACE_POKEDATA_3264             = 0xc3\n\tPTRACE_POKETEXT_3264             = 0xc2\n\tPTRACE_SETFPREGS                 = 0xf\n\tPTRACE_SET_THREAD_AREA           = 0x1a\n\tPTRACE_SET_WATCH_REGS            = 0xd1\n\tRLIMIT_AS                        = 0x6\n\tRLIMIT_MEMLOCK                   = 0x9\n\tRLIMIT_NOFILE                    = 0x5\n\tRLIMIT_NPROC                     = 0x8\n\tRLIMIT_RSS                       = 0x7\n\tRNDADDENTROPY                    = 0x80085203\n\tRNDADDTOENTCNT                   = 0x80045201\n\tRNDCLEARPOOL                     = 0x20005206\n\tRNDGETENTCNT                     = 0x40045200\n\tRNDGETPOOL                       = 0x40085202\n\tRNDRESEEDCRNG                    = 0x20005207\n\tRNDZAPENTCNT                     = 0x20005204\n\tRTC_AIE_OFF                      = 0x20007002\n\tRTC_AIE_ON                       = 0x20007001\n\tRTC_ALM_READ                     = 0x40247008\n\tRTC_ALM_SET                      = 0x80247007\n\tRTC_EPOCH_READ                   = 0x4004700d\n\tRTC_EPOCH_SET                    = 0x8004700e\n\tRTC_IRQP_READ                    = 0x4004700b\n\tRTC_IRQP_SET                     = 0x8004700c\n\tRTC_PARAM_GET                    = 0x80187013\n\tRTC_PARAM_SET                    = 0x80187014\n\tRTC_PIE_OFF                      = 0x20007006\n\tRTC_PIE_ON                       = 0x20007005\n\tRTC_PLL_GET                      = 0x401c7011\n\tRTC_PLL_SET                      = 0x801c7012\n\tRTC_RD_TIME                      = 0x40247009\n\tRTC_SET_TIME                     = 0x8024700a\n\tRTC_UIE_OFF                      = 0x20007004\n\tRTC_UIE_ON                       = 0x20007003\n\tRTC_VL_CLR                       = 0x20007014\n\tRTC_VL_READ                      = 0x40047013\n\tRTC_WIE_OFF                      = 0x20007010\n\tRTC_WIE_ON                       = 0x2000700f\n\tRTC_WKALM_RD                     = 0x40287010\n\tRTC_WKALM_SET                    = 0x8028700f\n\tSCM_DEVMEM_DMABUF                = 0x4f\n\tSCM_DEVMEM_LINEAR                = 0x4e\n\tSCM_TIMESTAMPING                 = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS       = 0x36\n\tSCM_TIMESTAMPING_PKTINFO         = 0x3a\n\tSCM_TIMESTAMPNS                  = 0x23\n\tSCM_TS_OPT_ID                    = 0x51\n\tSCM_TXTIME                       = 0x3d\n\tSCM_WIFI_STATUS                  = 0x29\n\tSECCOMP_IOCTL_NOTIF_ADDFD        = 0x80182103\n\tSECCOMP_IOCTL_NOTIF_ID_VALID     = 0x80082102\n\tSECCOMP_IOCTL_NOTIF_SET_FLAGS    = 0x80082104\n\tSFD_CLOEXEC                      = 0x80000\n\tSFD_NONBLOCK                     = 0x80\n\tSIOCATMARK                       = 0x40047307\n\tSIOCGPGRP                        = 0x40047309\n\tSIOCGSTAMPNS_NEW                 = 0x40108907\n\tSIOCGSTAMP_NEW                   = 0x40108906\n\tSIOCINQ                          = 0x467f\n\tSIOCOUTQ                         = 0x7472\n\tSIOCSPGRP                        = 0x80047308\n\tSOCK_CLOEXEC                     = 0x80000\n\tSOCK_DGRAM                       = 0x1\n\tSOCK_NONBLOCK                    = 0x80\n\tSOCK_STREAM                      = 0x2\n\tSOL_SOCKET                       = 0xffff\n\tSO_ACCEPTCONN                    = 0x1009\n\tSO_ATTACH_BPF                    = 0x32\n\tSO_ATTACH_REUSEPORT_CBPF         = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF         = 0x34\n\tSO_BINDTODEVICE                  = 0x19\n\tSO_BINDTOIFINDEX                 = 0x3e\n\tSO_BPF_EXTENSIONS                = 0x30\n\tSO_BROADCAST                     = 0x20\n\tSO_BSDCOMPAT                     = 0xe\n\tSO_BUF_LOCK                      = 0x48\n\tSO_BUSY_POLL                     = 0x2e\n\tSO_BUSY_POLL_BUDGET              = 0x46\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\n\tSO_DEVMEM_DMABUF                 = 0x4f\n\tSO_DEVMEM_DONTNEED               = 0x50\n\tSO_DEVMEM_LINEAR                 = 0x4e\n\tSO_DOMAIN                        = 0x1029\n\tSO_DONTROUTE                     = 0x10\n\tSO_ERROR                         = 0x1007\n\tSO_INCOMING_CPU                  = 0x31\n\tSO_INCOMING_NAPI_ID              = 0x38\n\tSO_KEEPALIVE                     = 0x8\n\tSO_LINGER                        = 0x80\n\tSO_LOCK_FILTER                   = 0x2c\n\tSO_MARK                          = 0x24\n\tSO_MAX_PACING_RATE               = 0x2f\n\tSO_MEMINFO                       = 0x37\n\tSO_NETNS_COOKIE                  = 0x47\n\tSO_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0x100\n\tSO_PASSCRED                      = 0x11\n\tSO_PASSPIDFD                     = 0x4c\n\tSO_PASSRIGHTS                    = 0x53\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x12\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERPIDFD                     = 0x4d\n\tSO_PEERSEC                       = 0x1e\n\tSO_PREFER_BUSY_POLL              = 0x45\n\tSO_PROTOCOL                      = 0x1028\n\tSO_RCVBUF                        = 0x1002\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x1004\n\tSO_RCVMARK                       = 0x4b\n\tSO_RCVPRIORITY                   = 0x52\n\tSO_RCVTIMEO                      = 0x1006\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x1006\n\tSO_RESERVE_MEM                   = 0x49\n\tSO_REUSEADDR                     = 0x4\n\tSO_REUSEPORT                     = 0x200\n\tSO_RXQ_OVFL                      = 0x28\n\tSO_SECURITY_AUTHENTICATION       = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK   = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT = 0x17\n\tSO_SELECT_ERR_QUEUE              = 0x2d\n\tSO_SNDBUF                        = 0x1001\n\tSO_SNDBUFFORCE                   = 0x1f\n\tSO_SNDLOWAT                      = 0x1003\n\tSO_SNDTIMEO                      = 0x1005\n\tSO_SNDTIMEO_NEW                  = 0x43\n\tSO_SNDTIMEO_OLD                  = 0x1005\n\tSO_STYLE                         = 0x1008\n\tSO_TIMESTAMPING                  = 0x25\n\tSO_TIMESTAMPING_NEW              = 0x41\n\tSO_TIMESTAMPING_OLD              = 0x25\n\tSO_TIMESTAMPNS                   = 0x23\n\tSO_TIMESTAMPNS_NEW               = 0x40\n\tSO_TIMESTAMPNS_OLD               = 0x23\n\tSO_TIMESTAMP_NEW                 = 0x3f\n\tSO_TXREHASH                      = 0x4a\n\tSO_TXTIME                        = 0x3d\n\tSO_TYPE                          = 0x1008\n\tSO_WIFI_STATUS                   = 0x29\n\tSO_ZEROCOPY                      = 0x3c\n\tTAB1                             = 0x800\n\tTAB2                             = 0x1000\n\tTAB3                             = 0x1800\n\tTABDLY                           = 0x1800\n\tTCFLSH                           = 0x5407\n\tTCGETA                           = 0x5401\n\tTCGETS                           = 0x540d\n\tTCGETS2                          = 0x4030542a\n\tTCSAFLUSH                        = 0x5410\n\tTCSBRK                           = 0x5405\n\tTCSBRKP                          = 0x5486\n\tTCSETA                           = 0x5402\n\tTCSETAF                          = 0x5404\n\tTCSETAW                          = 0x5403\n\tTCSETS                           = 0x540e\n\tTCSETS2                          = 0x8030542b\n\tTCSETSF                          = 0x5410\n\tTCSETSF2                         = 0x8030542d\n\tTCSETSW                          = 0x540f\n\tTCSETSW2                         = 0x8030542c\n\tTCXONC                           = 0x5406\n\tTFD_CLOEXEC                      = 0x80000\n\tTFD_NONBLOCK                     = 0x80\n\tTIOCCBRK                         = 0x5428\n\tTIOCCONS                         = 0x80047478\n\tTIOCEXCL                         = 0x740d\n\tTIOCGDEV                         = 0x40045432\n\tTIOCGETD                         = 0x7400\n\tTIOCGETP                         = 0x7408\n\tTIOCGEXCL                        = 0x40045440\n\tTIOCGICOUNT                      = 0x5492\n\tTIOCGISO7816                     = 0x40285442\n\tTIOCGLCKTRMIOS                   = 0x548b\n\tTIOCGLTC                         = 0x7474\n\tTIOCGPGRP                        = 0x40047477\n\tTIOCGPKT                         = 0x40045438\n\tTIOCGPTLCK                       = 0x40045439\n\tTIOCGPTN                         = 0x40045430\n\tTIOCGPTPEER                      = 0x20005441\n\tTIOCGRS485                       = 0x4020542e\n\tTIOCGSERIAL                      = 0x5484\n\tTIOCGSID                         = 0x7416\n\tTIOCGSOFTCAR                     = 0x5481\n\tTIOCGWINSZ                       = 0x40087468\n\tTIOCINQ                          = 0x467f\n\tTIOCLINUX                        = 0x5483\n\tTIOCMBIC                         = 0x741c\n\tTIOCMBIS                         = 0x741b\n\tTIOCMGET                         = 0x741d\n\tTIOCMIWAIT                       = 0x5491\n\tTIOCMSET                         = 0x741a\n\tTIOCM_CAR                        = 0x100\n\tTIOCM_CD                         = 0x100\n\tTIOCM_CTS                        = 0x40\n\tTIOCM_DSR                        = 0x400\n\tTIOCM_RI                         = 0x200\n\tTIOCM_RNG                        = 0x200\n\tTIOCM_SR                         = 0x20\n\tTIOCM_ST                         = 0x10\n\tTIOCNOTTY                        = 0x5471\n\tTIOCNXCL                         = 0x740e\n\tTIOCOUTQ                         = 0x7472\n\tTIOCPKT                          = 0x5470\n\tTIOCSBRK                         = 0x5427\n\tTIOCSCTTY                        = 0x5480\n\tTIOCSERCONFIG                    = 0x5488\n\tTIOCSERGETLSR                    = 0x548e\n\tTIOCSERGETMULTI                  = 0x548f\n\tTIOCSERGSTRUCT                   = 0x548d\n\tTIOCSERGWILD                     = 0x5489\n\tTIOCSERSETMULTI                  = 0x5490\n\tTIOCSERSWILD                     = 0x548a\n\tTIOCSER_TEMT                     = 0x1\n\tTIOCSETD                         = 0x7401\n\tTIOCSETN                         = 0x740a\n\tTIOCSETP                         = 0x7409\n\tTIOCSIG                          = 0x80045436\n\tTIOCSISO7816                     = 0xc0285443\n\tTIOCSLCKTRMIOS                   = 0x548c\n\tTIOCSLTC                         = 0x7475\n\tTIOCSPGRP                        = 0x80047476\n\tTIOCSPTLCK                       = 0x80045431\n\tTIOCSRS485                       = 0xc020542f\n\tTIOCSSERIAL                      = 0x5485\n\tTIOCSSOFTCAR                     = 0x5482\n\tTIOCSTI                          = 0x5472\n\tTIOCSWINSZ                       = 0x80087467\n\tTIOCVHANGUP                      = 0x5437\n\tTOSTOP                           = 0x8000\n\tTUNATTACHFILTER                  = 0x800854d5\n\tTUNDETACHFILTER                  = 0x800854d6\n\tTUNGETDEVNETNS                   = 0x200054e3\n\tTUNGETFEATURES                   = 0x400454cf\n\tTUNGETFILTER                     = 0x400854db\n\tTUNGETIFF                        = 0x400454d2\n\tTUNGETSNDBUF                     = 0x400454d3\n\tTUNGETVNETBE                     = 0x400454df\n\tTUNGETVNETHDRSZ                  = 0x400454d7\n\tTUNGETVNETLE                     = 0x400454dd\n\tTUNSETCARRIER                    = 0x800454e2\n\tTUNSETDEBUG                      = 0x800454c9\n\tTUNSETFILTEREBPF                 = 0x400454e1\n\tTUNSETGROUP                      = 0x800454ce\n\tTUNSETIFF                        = 0x800454ca\n\tTUNSETIFINDEX                    = 0x800454da\n\tTUNSETLINK                       = 0x800454cd\n\tTUNSETNOCSUM                     = 0x800454c8\n\tTUNSETOFFLOAD                    = 0x800454d0\n\tTUNSETOWNER                      = 0x800454cc\n\tTUNSETPERSIST                    = 0x800454cb\n\tTUNSETQUEUE                      = 0x800454d9\n\tTUNSETSNDBUF                     = 0x800454d4\n\tTUNSETSTEERINGEBPF               = 0x400454e0\n\tTUNSETTXFILTER                   = 0x800454d1\n\tTUNSETVNETBE                     = 0x800454de\n\tTUNSETVNETHDRSZ                  = 0x800454d8\n\tTUNSETVNETLE                     = 0x800454dc\n\tUBI_IOCATT                       = 0x80186f40\n\tUBI_IOCDET                       = 0x80046f41\n\tUBI_IOCEBCH                      = 0x80044f02\n\tUBI_IOCEBER                      = 0x80044f01\n\tUBI_IOCEBISMAP                   = 0x40044f05\n\tUBI_IOCEBMAP                     = 0x80084f03\n\tUBI_IOCEBUNMAP                   = 0x80044f04\n\tUBI_IOCMKVOL                     = 0x80986f00\n\tUBI_IOCRMVOL                     = 0x80046f01\n\tUBI_IOCRNVOL                     = 0x91106f03\n\tUBI_IOCRPEB                      = 0x80046f04\n\tUBI_IOCRSVOL                     = 0x800c6f02\n\tUBI_IOCSETVOLPROP                = 0x80104f06\n\tUBI_IOCSPEB                      = 0x80046f05\n\tUBI_IOCVOLCRBLK                  = 0x80804f07\n\tUBI_IOCVOLRMBLK                  = 0x20004f08\n\tUBI_IOCVOLUP                     = 0x80084f00\n\tVDISCARD                         = 0xd\n\tVEOF                             = 0x10\n\tVEOL                             = 0x11\n\tVEOL2                            = 0x6\n\tVMIN                             = 0x4\n\tVREPRINT                         = 0xc\n\tVSTART                           = 0x8\n\tVSTOP                            = 0x9\n\tVSUSP                            = 0xa\n\tVSWTC                            = 0x7\n\tVSWTCH                           = 0x7\n\tVT1                              = 0x4000\n\tVTDLY                            = 0x4000\n\tVTIME                            = 0x5\n\tVWERASE                          = 0xe\n\tWDIOC_GETBOOTSTATUS              = 0x40045702\n\tWDIOC_GETPRETIMEOUT              = 0x40045709\n\tWDIOC_GETSTATUS                  = 0x40045701\n\tWDIOC_GETSUPPORT                 = 0x40285700\n\tWDIOC_GETTEMP                    = 0x40045703\n\tWDIOC_GETTIMELEFT                = 0x4004570a\n\tWDIOC_GETTIMEOUT                 = 0x40045707\n\tWDIOC_KEEPALIVE                  = 0x40045705\n\tWDIOC_SETOPTIONS                 = 0x40045704\n\tWORDSIZE                         = 0x20\n\tXCASE                            = 0x4\n\tXTABS                            = 0x1800\n\t_HIDIOCGRAWNAME                  = 0x40804804\n\t_HIDIOCGRAWPHYS                  = 0x40404805\n\t_HIDIOCGRAWUNIQ                  = 0x40404808\n)\n\n// Errors\nconst (\n\tEADDRINUSE      = syscall.Errno(0x7d)\n\tEADDRNOTAVAIL   = syscall.Errno(0x7e)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x7c)\n\tEALREADY        = syscall.Errno(0x95)\n\tEBADE           = syscall.Errno(0x32)\n\tEBADFD          = syscall.Errno(0x51)\n\tEBADMSG         = syscall.Errno(0x4d)\n\tEBADR           = syscall.Errno(0x33)\n\tEBADRQC         = syscall.Errno(0x36)\n\tEBADSLT         = syscall.Errno(0x37)\n\tEBFONT          = syscall.Errno(0x3b)\n\tECANCELED       = syscall.Errno(0x9e)\n\tECHRNG          = syscall.Errno(0x25)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x82)\n\tECONNREFUSED    = syscall.Errno(0x92)\n\tECONNRESET      = syscall.Errno(0x83)\n\tEDEADLK         = syscall.Errno(0x2d)\n\tEDEADLOCK       = syscall.Errno(0x38)\n\tEDESTADDRREQ    = syscall.Errno(0x60)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x46d)\n\tEHOSTDOWN       = syscall.Errno(0x93)\n\tEHOSTUNREACH    = syscall.Errno(0x94)\n\tEHWPOISON       = syscall.Errno(0xa8)\n\tEIDRM           = syscall.Errno(0x24)\n\tEILSEQ          = syscall.Errno(0x58)\n\tEINIT           = syscall.Errno(0x8d)\n\tEINPROGRESS     = syscall.Errno(0x96)\n\tEISCONN         = syscall.Errno(0x85)\n\tEISNAM          = syscall.Errno(0x8b)\n\tEKEYEXPIRED     = syscall.Errno(0xa2)\n\tEKEYREJECTED    = syscall.Errno(0xa4)\n\tEKEYREVOKED     = syscall.Errno(0xa3)\n\tEL2HLT          = syscall.Errno(0x2c)\n\tEL2NSYNC        = syscall.Errno(0x26)\n\tEL3HLT          = syscall.Errno(0x27)\n\tEL3RST          = syscall.Errno(0x28)\n\tELIBACC         = syscall.Errno(0x53)\n\tELIBBAD         = syscall.Errno(0x54)\n\tELIBEXEC        = syscall.Errno(0x57)\n\tELIBMAX         = syscall.Errno(0x56)\n\tELIBSCN         = syscall.Errno(0x55)\n\tELNRNG          = syscall.Errno(0x29)\n\tELOOP           = syscall.Errno(0x5a)\n\tEMEDIUMTYPE     = syscall.Errno(0xa0)\n\tEMSGSIZE        = syscall.Errno(0x61)\n\tEMULTIHOP       = syscall.Errno(0x4a)\n\tENAMETOOLONG    = syscall.Errno(0x4e)\n\tENAVAIL         = syscall.Errno(0x8a)\n\tENETDOWN        = syscall.Errno(0x7f)\n\tENETRESET       = syscall.Errno(0x81)\n\tENETUNREACH     = syscall.Errno(0x80)\n\tENOANO          = syscall.Errno(0x35)\n\tENOBUFS         = syscall.Errno(0x84)\n\tENOCSI          = syscall.Errno(0x2b)\n\tENODATA         = syscall.Errno(0x3d)\n\tENOKEY          = syscall.Errno(0xa1)\n\tENOLCK          = syscall.Errno(0x2e)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x9f)\n\tENOMSG          = syscall.Errno(0x23)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x63)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x59)\n\tENOTCONN        = syscall.Errno(0x86)\n\tENOTEMPTY       = syscall.Errno(0x5d)\n\tENOTNAM         = syscall.Errno(0x89)\n\tENOTRECOVERABLE = syscall.Errno(0xa6)\n\tENOTSOCK        = syscall.Errno(0x5f)\n\tENOTSUP         = syscall.Errno(0x7a)\n\tENOTUNIQ        = syscall.Errno(0x50)\n\tEOPNOTSUPP      = syscall.Errno(0x7a)\n\tEOVERFLOW       = syscall.Errno(0x4f)\n\tEOWNERDEAD      = syscall.Errno(0xa5)\n\tEPFNOSUPPORT    = syscall.Errno(0x7b)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x78)\n\tEPROTOTYPE      = syscall.Errno(0x62)\n\tEREMCHG         = syscall.Errno(0x52)\n\tEREMDEV         = syscall.Errno(0x8e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x8c)\n\tERESTART        = syscall.Errno(0x5b)\n\tERFKILL         = syscall.Errno(0xa7)\n\tESHUTDOWN       = syscall.Errno(0x8f)\n\tESOCKTNOSUPPORT = syscall.Errno(0x79)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x97)\n\tESTRPIPE        = syscall.Errno(0x5c)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x91)\n\tETOOMANYREFS    = syscall.Errno(0x90)\n\tEUCLEAN         = syscall.Errno(0x87)\n\tEUNATCH         = syscall.Errno(0x2a)\n\tEUSERS          = syscall.Errno(0x5e)\n\tEXFULL          = syscall.Errno(0x34)\n)\n\n// Signals\nconst (\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x12)\n\tSIGCLD    = syscall.Signal(0x12)\n\tSIGCONT   = syscall.Signal(0x19)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGIO     = syscall.Signal(0x16)\n\tSIGPOLL   = syscall.Signal(0x16)\n\tSIGPROF   = syscall.Signal(0x1d)\n\tSIGPWR    = syscall.Signal(0x13)\n\tSIGSTOP   = syscall.Signal(0x17)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTSTP   = syscall.Signal(0x18)\n\tSIGTTIN   = syscall.Signal(0x1a)\n\tSIGTTOU   = syscall.Signal(0x1b)\n\tSIGURG    = syscall.Signal(0x15)\n\tSIGUSR1   = syscall.Signal(0x10)\n\tSIGUSR2   = syscall.Signal(0x11)\n\tSIGVTALRM = syscall.Signal(0x1c)\n\tSIGWINCH  = syscall.Signal(0x14)\n\tSIGXCPU   = syscall.Signal(0x1e)\n\tSIGXFSZ   = syscall.Signal(0x1f)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"ENOMSG\", \"no message of desired type\"},\n\t{36, \"EIDRM\", \"identifier removed\"},\n\t{37, \"ECHRNG\", \"channel number out of range\"},\n\t{38, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{39, \"EL3HLT\", \"level 3 halted\"},\n\t{40, \"EL3RST\", \"level 3 reset\"},\n\t{41, \"ELNRNG\", \"link number out of range\"},\n\t{42, \"EUNATCH\", \"protocol driver not attached\"},\n\t{43, \"ENOCSI\", \"no CSI structure available\"},\n\t{44, \"EL2HLT\", \"level 2 halted\"},\n\t{45, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{46, \"ENOLCK\", \"no locks available\"},\n\t{50, \"EBADE\", \"invalid exchange\"},\n\t{51, \"EBADR\", \"invalid request descriptor\"},\n\t{52, \"EXFULL\", \"exchange full\"},\n\t{53, \"ENOANO\", \"no anode\"},\n\t{54, \"EBADRQC\", \"invalid request code\"},\n\t{55, \"EBADSLT\", \"invalid slot\"},\n\t{56, \"EDEADLOCK\", \"file locking deadlock error\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EMULTIHOP\", \"multihop attempted\"},\n\t{77, \"EBADMSG\", \"bad message\"},\n\t{78, \"ENAMETOOLONG\", \"file name too long\"},\n\t{79, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{80, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{81, \"EBADFD\", \"file descriptor in bad state\"},\n\t{82, \"EREMCHG\", \"remote address changed\"},\n\t{83, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{84, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{85, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{86, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{87, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{88, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{89, \"ENOSYS\", \"function not implemented\"},\n\t{90, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{91, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{92, \"ESTRPIPE\", \"streams pipe error\"},\n\t{93, \"ENOTEMPTY\", \"directory not empty\"},\n\t{94, \"EUSERS\", \"too many users\"},\n\t{95, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{96, \"EDESTADDRREQ\", \"destination address required\"},\n\t{97, \"EMSGSIZE\", \"message too long\"},\n\t{98, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{99, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{120, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{121, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{122, \"ENOTSUP\", \"operation not supported\"},\n\t{123, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{124, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{125, \"EADDRINUSE\", \"address already in use\"},\n\t{126, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{127, \"ENETDOWN\", \"network is down\"},\n\t{128, \"ENETUNREACH\", \"network is unreachable\"},\n\t{129, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{130, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{131, \"ECONNRESET\", \"connection reset by peer\"},\n\t{132, \"ENOBUFS\", \"no buffer space available\"},\n\t{133, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{134, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{135, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{137, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{138, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{139, \"EISNAM\", \"is a named type file\"},\n\t{140, \"EREMOTEIO\", \"remote I/O error\"},\n\t{141, \"EINIT\", \"unknown error 141\"},\n\t{142, \"EREMDEV\", \"unknown error 142\"},\n\t{143, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{144, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{145, \"ETIMEDOUT\", \"connection timed out\"},\n\t{146, \"ECONNREFUSED\", \"connection refused\"},\n\t{147, \"EHOSTDOWN\", \"host is down\"},\n\t{148, \"EHOSTUNREACH\", \"no route to host\"},\n\t{149, \"EALREADY\", \"operation already in progress\"},\n\t{150, \"EINPROGRESS\", \"operation now in progress\"},\n\t{151, \"ESTALE\", \"stale file handle\"},\n\t{158, \"ECANCELED\", \"operation canceled\"},\n\t{159, \"ENOMEDIUM\", \"no medium found\"},\n\t{160, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{161, \"ENOKEY\", \"required key not available\"},\n\t{162, \"EKEYEXPIRED\", \"key has expired\"},\n\t{163, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{164, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{165, \"EOWNERDEAD\", \"owner died\"},\n\t{166, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{167, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{168, \"EHWPOISON\", \"memory page has hardware error\"},\n\t{1133, \"EDQUOT\", \"disk quota exceeded\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGUSR1\", \"user defined signal 1\"},\n\t{17, \"SIGUSR2\", \"user defined signal 2\"},\n\t{18, \"SIGCHLD\", \"child exited\"},\n\t{19, \"SIGPWR\", \"power failure\"},\n\t{20, \"SIGWINCH\", \"window changed\"},\n\t{21, \"SIGURG\", \"urgent I/O condition\"},\n\t{22, \"SIGIO\", \"I/O possible\"},\n\t{23, \"SIGSTOP\", \"stopped (signal)\"},\n\t{24, \"SIGTSTP\", \"stopped\"},\n\t{25, \"SIGCONT\", \"continued\"},\n\t{26, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{27, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{28, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{29, \"SIGPROF\", \"profiling timer expired\"},\n\t{30, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{31, \"SIGXFSZ\", \"file size limit exceeded\"},\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/ppc/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/ppc/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x17\n\tB115200                          = 0x11\n\tB1152000                         = 0x18\n\tB1500000                         = 0x19\n\tB2000000                         = 0x1a\n\tB230400                          = 0x12\n\tB2500000                         = 0x1b\n\tB3000000                         = 0x1c\n\tB3500000                         = 0x1d\n\tB4000000                         = 0x1e\n\tB460800                          = 0x13\n\tB500000                          = 0x14\n\tB57600                           = 0x10\n\tB576000                          = 0x15\n\tB921600                          = 0x16\n\tBLKALIGNOFF                      = 0x2000127a\n\tBLKBSZGET                        = 0x40041270\n\tBLKBSZSET                        = 0x80041271\n\tBLKDISCARD                       = 0x20001277\n\tBLKDISCARDZEROES                 = 0x2000127c\n\tBLKFLSBUF                        = 0x20001261\n\tBLKFRAGET                        = 0x20001265\n\tBLKFRASET                        = 0x20001264\n\tBLKGETDISKSEQ                    = 0x40081280\n\tBLKGETSIZE                       = 0x20001260\n\tBLKGETSIZE64                     = 0x40041272\n\tBLKIOMIN                         = 0x20001278\n\tBLKIOOPT                         = 0x20001279\n\tBLKPBSZGET                       = 0x2000127b\n\tBLKRAGET                         = 0x20001263\n\tBLKRASET                         = 0x20001262\n\tBLKROGET                         = 0x2000125e\n\tBLKROSET                         = 0x2000125d\n\tBLKROTATIONAL                    = 0x2000127e\n\tBLKRRPART                        = 0x2000125f\n\tBLKSECDISCARD                    = 0x2000127d\n\tBLKSECTGET                       = 0x20001267\n\tBLKSECTSET                       = 0x20001266\n\tBLKSSZGET                        = 0x20001268\n\tBLKZEROOUT                       = 0x2000127f\n\tBOTHER                           = 0x1f\n\tBS1                              = 0x8000\n\tBSDLY                            = 0x8000\n\tCBAUD                            = 0xff\n\tCBAUDEX                          = 0x0\n\tCIBAUD                           = 0xff0000\n\tCLOCAL                           = 0x8000\n\tCR1                              = 0x1000\n\tCR2                              = 0x2000\n\tCR3                              = 0x3000\n\tCRDLY                            = 0x3000\n\tCREAD                            = 0x800\n\tCS6                              = 0x100\n\tCS7                              = 0x200\n\tCS8                              = 0x300\n\tCSIZE                            = 0x300\n\tCSTOPB                           = 0x400\n\tDM_MPATH_PROBE_PATHS             = 0x2000fd12\n\tECCGETLAYOUT                     = 0x41484d11\n\tECCGETSTATS                      = 0x40104d12\n\tECHOCTL                          = 0x40\n\tECHOE                            = 0x2\n\tECHOK                            = 0x4\n\tECHOKE                           = 0x1\n\tECHONL                           = 0x10\n\tECHOPRT                          = 0x20\n\tEFD_CLOEXEC                      = 0x80000\n\tEFD_NONBLOCK                     = 0x800\n\tEPIOCGPARAMS                     = 0x40088a02\n\tEPIOCSPARAMS                     = 0x80088a01\n\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000000\n\tFF1                              = 0x4000\n\tFFDLY                            = 0x4000\n\tFICLONE                          = 0x80049409\n\tFICLONERANGE                     = 0x8020940d\n\tFLUSHO                           = 0x800000\n\tFS_IOC_ENABLE_VERITY             = 0x80806685\n\tFS_IOC_GETFLAGS                  = 0x40046601\n\tFS_IOC_GET_ENCRYPTION_NONCE      = 0x4010661b\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x800c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x80106614\n\tFS_IOC_SETFLAGS                  = 0x80046602\n\tFS_IOC_SET_ENCRYPTION_POLICY     = 0x400c6613\n\tF_GETLK                          = 0xc\n\tF_GETLK64                        = 0xc\n\tF_GETOWN                         = 0x9\n\tF_RDLCK                          = 0x0\n\tF_SETLK                          = 0xd\n\tF_SETLK64                        = 0xd\n\tF_SETLKW                         = 0xe\n\tF_SETLKW64                       = 0xe\n\tF_SETOWN                         = 0x8\n\tF_UNLCK                          = 0x2\n\tF_WRLCK                          = 0x1\n\tHIDIOCGRAWINFO                   = 0x40084803\n\tHIDIOCGRDESC                     = 0x50044802\n\tHIDIOCGRDESCSIZE                 = 0x40044801\n\tHIDIOCREVOKE                     = 0x8004480d\n\tHUPCL                            = 0x4000\n\tICANON                           = 0x100\n\tIEXTEN                           = 0x400\n\tIN_CLOEXEC                       = 0x80000\n\tIN_NONBLOCK                      = 0x800\n\tIOCTL_MEI_NOTIFY_GET             = 0x40044803\n\tIOCTL_MEI_NOTIFY_SET             = 0x80044802\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x200007b9\n\tIPV6_FLOWINFO_MASK               = 0xfffffff\n\tIPV6_FLOWLABEL_MASK              = 0xfffff\n\tISIG                             = 0x80\n\tIUCLC                            = 0x1000\n\tIXOFF                            = 0x400\n\tIXON                             = 0x200\n\tMAP_ANON                         = 0x20\n\tMAP_ANONYMOUS                    = 0x20\n\tMAP_DENYWRITE                    = 0x800\n\tMAP_EXECUTABLE                   = 0x1000\n\tMAP_GROWSDOWN                    = 0x100\n\tMAP_HUGETLB                      = 0x40000\n\tMAP_LOCKED                       = 0x80\n\tMAP_NONBLOCK                     = 0x10000\n\tMAP_NORESERVE                    = 0x40\n\tMAP_POPULATE                     = 0x8000\n\tMAP_STACK                        = 0x20000\n\tMAP_SYNC                         = 0x80000\n\tMCL_CURRENT                      = 0x2000\n\tMCL_FUTURE                       = 0x4000\n\tMCL_ONFAULT                      = 0x8000\n\tMEMERASE                         = 0x80084d02\n\tMEMERASE64                       = 0x80104d14\n\tMEMGETBADBLOCK                   = 0x80084d0b\n\tMEMGETINFO                       = 0x40204d01\n\tMEMGETOOBSEL                     = 0x40c84d0a\n\tMEMGETREGIONCOUNT                = 0x40044d07\n\tMEMISLOCKED                      = 0x40084d17\n\tMEMLOCK                          = 0x80084d05\n\tMEMREAD                          = 0xc0404d1a\n\tMEMREADOOB                       = 0xc00c4d04\n\tMEMSETBADBLOCK                   = 0x80084d0c\n\tMEMUNLOCK                        = 0x80084d06\n\tMEMWRITEOOB                      = 0xc00c4d03\n\tMTDFILEMODE                      = 0x20004d13\n\tNFDBITS                          = 0x20\n\tNL2                              = 0x200\n\tNL3                              = 0x300\n\tNLDLY                            = 0x300\n\tNOFLSH                           = 0x80000000\n\tNS_GET_MNTNS_ID                  = 0x4008b705\n\tNS_GET_NSTYPE                    = 0x2000b703\n\tNS_GET_OWNER_UID                 = 0x2000b704\n\tNS_GET_PARENT                    = 0x2000b702\n\tNS_GET_PID_FROM_PIDNS            = 0x4004b706\n\tNS_GET_PID_IN_PIDNS              = 0x4004b708\n\tNS_GET_TGID_FROM_PIDNS           = 0x4004b707\n\tNS_GET_TGID_IN_PIDNS             = 0x4004b709\n\tNS_GET_USERNS                    = 0x2000b701\n\tOLCUC                            = 0x4\n\tONLCR                            = 0x2\n\tOTPERASE                         = 0x800c4d19\n\tOTPGETREGIONCOUNT                = 0x80044d0e\n\tOTPGETREGIONINFO                 = 0x800c4d0f\n\tOTPLOCK                          = 0x400c4d10\n\tOTPSELECT                        = 0x40044d0d\n\tO_APPEND                         = 0x400\n\tO_ASYNC                          = 0x2000\n\tO_CLOEXEC                        = 0x80000\n\tO_CREAT                          = 0x40\n\tO_DIRECT                         = 0x20000\n\tO_DIRECTORY                      = 0x4000\n\tO_DSYNC                          = 0x1000\n\tO_EXCL                           = 0x80\n\tO_FSYNC                          = 0x101000\n\tO_LARGEFILE                      = 0x10000\n\tO_NDELAY                         = 0x800\n\tO_NOATIME                        = 0x40000\n\tO_NOCTTY                         = 0x100\n\tO_NOFOLLOW                       = 0x8000\n\tO_NONBLOCK                       = 0x800\n\tO_PATH                           = 0x200000\n\tO_RSYNC                          = 0x101000\n\tO_SYNC                           = 0x101000\n\tO_TMPFILE                        = 0x404000\n\tO_TRUNC                          = 0x200\n\tPARENB                           = 0x1000\n\tPARODD                           = 0x2000\n\tPENDIN                           = 0x20000000\n\tPERF_EVENT_IOC_DISABLE           = 0x20002401\n\tPERF_EVENT_IOC_ENABLE            = 0x20002400\n\tPERF_EVENT_IOC_ID                = 0x40042407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8004240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT      = 0x80042409\n\tPERF_EVENT_IOC_PERIOD            = 0x80082404\n\tPERF_EVENT_IOC_QUERY_BPF         = 0xc004240a\n\tPERF_EVENT_IOC_REFRESH           = 0x20002402\n\tPERF_EVENT_IOC_RESET             = 0x20002403\n\tPERF_EVENT_IOC_SET_BPF           = 0x80042408\n\tPERF_EVENT_IOC_SET_FILTER        = 0x80042406\n\tPERF_EVENT_IOC_SET_OUTPUT        = 0x20002405\n\tPPPIOCATTACH                     = 0x8004743d\n\tPPPIOCATTCHAN                    = 0x80047438\n\tPPPIOCBRIDGECHAN                 = 0x80047435\n\tPPPIOCCONNECT                    = 0x8004743a\n\tPPPIOCDETACH                     = 0x8004743c\n\tPPPIOCDISCONN                    = 0x20007439\n\tPPPIOCGASYNCMAP                  = 0x40047458\n\tPPPIOCGCHAN                      = 0x40047437\n\tPPPIOCGDEBUG                     = 0x40047441\n\tPPPIOCGFLAGS                     = 0x4004745a\n\tPPPIOCGIDLE                      = 0x4008743f\n\tPPPIOCGIDLE32                    = 0x4008743f\n\tPPPIOCGIDLE64                    = 0x4010743f\n\tPPPIOCGL2TPSTATS                 = 0x40487436\n\tPPPIOCGMRU                       = 0x40047453\n\tPPPIOCGRASYNCMAP                 = 0x40047455\n\tPPPIOCGUNIT                      = 0x40047456\n\tPPPIOCGXASYNCMAP                 = 0x40207450\n\tPPPIOCSACTIVE                    = 0x80087446\n\tPPPIOCSASYNCMAP                  = 0x80047457\n\tPPPIOCSCOMPRESS                  = 0x800c744d\n\tPPPIOCSDEBUG                     = 0x80047440\n\tPPPIOCSFLAGS                     = 0x80047459\n\tPPPIOCSMAXCID                    = 0x80047451\n\tPPPIOCSMRRU                      = 0x8004743b\n\tPPPIOCSMRU                       = 0x80047452\n\tPPPIOCSNPMODE                    = 0x8008744b\n\tPPPIOCSPASS                      = 0x80087447\n\tPPPIOCSRASYNCMAP                 = 0x80047454\n\tPPPIOCSXASYNCMAP                 = 0x8020744f\n\tPPPIOCUNBRIDGECHAN               = 0x20007434\n\tPPPIOCXFERUNIT                   = 0x2000744e\n\tPROT_SAO                         = 0x10\n\tPR_SET_PTRACER_ANY               = 0xffffffff\n\tPTP_CLOCK_GETCAPS                = 0x40503d01\n\tPTP_CLOCK_GETCAPS2               = 0x40503d0a\n\tPTP_ENABLE_PPS                   = 0x80043d04\n\tPTP_ENABLE_PPS2                  = 0x80043d0d\n\tPTP_EXTTS_REQUEST                = 0x80103d02\n\tPTP_EXTTS_REQUEST2               = 0x80103d0b\n\tPTP_MASK_CLEAR_ALL               = 0x20003d13\n\tPTP_MASK_EN_SINGLE               = 0x80043d14\n\tPTP_PEROUT_REQUEST               = 0x80383d03\n\tPTP_PEROUT_REQUEST2              = 0x80383d0c\n\tPTP_PIN_SETFUNC                  = 0x80603d07\n\tPTP_PIN_SETFUNC2                 = 0x80603d10\n\tPTP_SYS_OFFSET                   = 0x83403d05\n\tPTP_SYS_OFFSET2                  = 0x83403d0e\n\tPTRACE_GETEVRREGS                = 0x14\n\tPTRACE_GETFPREGS                 = 0xe\n\tPTRACE_GETREGS64                 = 0x16\n\tPTRACE_GETVRREGS                 = 0x12\n\tPTRACE_GETVSRREGS                = 0x1b\n\tPTRACE_GET_DEBUGREG              = 0x19\n\tPTRACE_SETEVRREGS                = 0x15\n\tPTRACE_SETFPREGS                 = 0xf\n\tPTRACE_SETREGS64                 = 0x17\n\tPTRACE_SETVRREGS                 = 0x13\n\tPTRACE_SETVSRREGS                = 0x1c\n\tPTRACE_SET_DEBUGREG              = 0x1a\n\tPTRACE_SINGLEBLOCK               = 0x100\n\tPTRACE_SYSEMU                    = 0x1d\n\tPTRACE_SYSEMU_SINGLESTEP         = 0x1e\n\tPT_CCR                           = 0x26\n\tPT_CTR                           = 0x23\n\tPT_DAR                           = 0x29\n\tPT_DSCR                          = 0x2c\n\tPT_DSISR                         = 0x2a\n\tPT_FPR0                          = 0x30\n\tPT_FPR31                         = 0x6e\n\tPT_FPSCR                         = 0x71\n\tPT_LNK                           = 0x24\n\tPT_MQ                            = 0x27\n\tPT_MSR                           = 0x21\n\tPT_NIP                           = 0x20\n\tPT_ORIG_R3                       = 0x22\n\tPT_R0                            = 0x0\n\tPT_R1                            = 0x1\n\tPT_R10                           = 0xa\n\tPT_R11                           = 0xb\n\tPT_R12                           = 0xc\n\tPT_R13                           = 0xd\n\tPT_R14                           = 0xe\n\tPT_R15                           = 0xf\n\tPT_R16                           = 0x10\n\tPT_R17                           = 0x11\n\tPT_R18                           = 0x12\n\tPT_R19                           = 0x13\n\tPT_R2                            = 0x2\n\tPT_R20                           = 0x14\n\tPT_R21                           = 0x15\n\tPT_R22                           = 0x16\n\tPT_R23                           = 0x17\n\tPT_R24                           = 0x18\n\tPT_R25                           = 0x19\n\tPT_R26                           = 0x1a\n\tPT_R27                           = 0x1b\n\tPT_R28                           = 0x1c\n\tPT_R29                           = 0x1d\n\tPT_R3                            = 0x3\n\tPT_R30                           = 0x1e\n\tPT_R31                           = 0x1f\n\tPT_R4                            = 0x4\n\tPT_R5                            = 0x5\n\tPT_R6                            = 0x6\n\tPT_R7                            = 0x7\n\tPT_R8                            = 0x8\n\tPT_R9                            = 0x9\n\tPT_REGS_COUNT                    = 0x2c\n\tPT_RESULT                        = 0x2b\n\tPT_TRAP                          = 0x28\n\tPT_XER                           = 0x25\n\tRLIMIT_AS                        = 0x9\n\tRLIMIT_MEMLOCK                   = 0x8\n\tRLIMIT_NOFILE                    = 0x7\n\tRLIMIT_NPROC                     = 0x6\n\tRLIMIT_RSS                       = 0x5\n\tRNDADDENTROPY                    = 0x80085203\n\tRNDADDTOENTCNT                   = 0x80045201\n\tRNDCLEARPOOL                     = 0x20005206\n\tRNDGETENTCNT                     = 0x40045200\n\tRNDGETPOOL                       = 0x40085202\n\tRNDRESEEDCRNG                    = 0x20005207\n\tRNDZAPENTCNT                     = 0x20005204\n\tRTC_AIE_OFF                      = 0x20007002\n\tRTC_AIE_ON                       = 0x20007001\n\tRTC_ALM_READ                     = 0x40247008\n\tRTC_ALM_SET                      = 0x80247007\n\tRTC_EPOCH_READ                   = 0x4004700d\n\tRTC_EPOCH_SET                    = 0x8004700e\n\tRTC_IRQP_READ                    = 0x4004700b\n\tRTC_IRQP_SET                     = 0x8004700c\n\tRTC_PARAM_GET                    = 0x80187013\n\tRTC_PARAM_SET                    = 0x80187014\n\tRTC_PIE_OFF                      = 0x20007006\n\tRTC_PIE_ON                       = 0x20007005\n\tRTC_PLL_GET                      = 0x401c7011\n\tRTC_PLL_SET                      = 0x801c7012\n\tRTC_RD_TIME                      = 0x40247009\n\tRTC_SET_TIME                     = 0x8024700a\n\tRTC_UIE_OFF                      = 0x20007004\n\tRTC_UIE_ON                       = 0x20007003\n\tRTC_VL_CLR                       = 0x20007014\n\tRTC_VL_READ                      = 0x40047013\n\tRTC_WIE_OFF                      = 0x20007010\n\tRTC_WIE_ON                       = 0x2000700f\n\tRTC_WKALM_RD                     = 0x40287010\n\tRTC_WKALM_SET                    = 0x8028700f\n\tSCM_DEVMEM_DMABUF                = 0x4f\n\tSCM_DEVMEM_LINEAR                = 0x4e\n\tSCM_TIMESTAMPING                 = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS       = 0x36\n\tSCM_TIMESTAMPING_PKTINFO         = 0x3a\n\tSCM_TIMESTAMPNS                  = 0x23\n\tSCM_TS_OPT_ID                    = 0x51\n\tSCM_TXTIME                       = 0x3d\n\tSCM_WIFI_STATUS                  = 0x29\n\tSECCOMP_IOCTL_NOTIF_ADDFD        = 0x80182103\n\tSECCOMP_IOCTL_NOTIF_ID_VALID     = 0x80082102\n\tSECCOMP_IOCTL_NOTIF_SET_FLAGS    = 0x80082104\n\tSFD_CLOEXEC                      = 0x80000\n\tSFD_NONBLOCK                     = 0x800\n\tSIOCATMARK                       = 0x8905\n\tSIOCGPGRP                        = 0x8904\n\tSIOCGSTAMPNS_NEW                 = 0x40108907\n\tSIOCGSTAMP_NEW                   = 0x40108906\n\tSIOCINQ                          = 0x4004667f\n\tSIOCOUTQ                         = 0x40047473\n\tSIOCSPGRP                        = 0x8902\n\tSOCK_CLOEXEC                     = 0x80000\n\tSOCK_DGRAM                       = 0x2\n\tSOCK_NONBLOCK                    = 0x800\n\tSOCK_STREAM                      = 0x1\n\tSOL_SOCKET                       = 0x1\n\tSO_ACCEPTCONN                    = 0x1e\n\tSO_ATTACH_BPF                    = 0x32\n\tSO_ATTACH_REUSEPORT_CBPF         = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF         = 0x34\n\tSO_BINDTODEVICE                  = 0x19\n\tSO_BINDTOIFINDEX                 = 0x3e\n\tSO_BPF_EXTENSIONS                = 0x30\n\tSO_BROADCAST                     = 0x6\n\tSO_BSDCOMPAT                     = 0xe\n\tSO_BUF_LOCK                      = 0x48\n\tSO_BUSY_POLL                     = 0x2e\n\tSO_BUSY_POLL_BUDGET              = 0x46\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\n\tSO_DEVMEM_DMABUF                 = 0x4f\n\tSO_DEVMEM_DONTNEED               = 0x50\n\tSO_DEVMEM_LINEAR                 = 0x4e\n\tSO_DOMAIN                        = 0x27\n\tSO_DONTROUTE                     = 0x5\n\tSO_ERROR                         = 0x4\n\tSO_INCOMING_CPU                  = 0x31\n\tSO_INCOMING_NAPI_ID              = 0x38\n\tSO_KEEPALIVE                     = 0x9\n\tSO_LINGER                        = 0xd\n\tSO_LOCK_FILTER                   = 0x2c\n\tSO_MARK                          = 0x24\n\tSO_MAX_PACING_RATE               = 0x2f\n\tSO_MEMINFO                       = 0x37\n\tSO_NETNS_COOKIE                  = 0x47\n\tSO_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0xa\n\tSO_PASSCRED                      = 0x14\n\tSO_PASSPIDFD                     = 0x4c\n\tSO_PASSRIGHTS                    = 0x53\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x15\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERPIDFD                     = 0x4d\n\tSO_PEERSEC                       = 0x1f\n\tSO_PREFER_BUSY_POLL              = 0x45\n\tSO_PROTOCOL                      = 0x26\n\tSO_RCVBUF                        = 0x8\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x10\n\tSO_RCVMARK                       = 0x4b\n\tSO_RCVPRIORITY                   = 0x52\n\tSO_RCVTIMEO                      = 0x12\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x12\n\tSO_RESERVE_MEM                   = 0x49\n\tSO_REUSEADDR                     = 0x2\n\tSO_REUSEPORT                     = 0xf\n\tSO_RXQ_OVFL                      = 0x28\n\tSO_SECURITY_AUTHENTICATION       = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK   = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT = 0x17\n\tSO_SELECT_ERR_QUEUE              = 0x2d\n\tSO_SNDBUF                        = 0x7\n\tSO_SNDBUFFORCE                   = 0x20\n\tSO_SNDLOWAT                      = 0x11\n\tSO_SNDTIMEO                      = 0x13\n\tSO_SNDTIMEO_NEW                  = 0x43\n\tSO_SNDTIMEO_OLD                  = 0x13\n\tSO_TIMESTAMPING                  = 0x25\n\tSO_TIMESTAMPING_NEW              = 0x41\n\tSO_TIMESTAMPING_OLD              = 0x25\n\tSO_TIMESTAMPNS                   = 0x23\n\tSO_TIMESTAMPNS_NEW               = 0x40\n\tSO_TIMESTAMPNS_OLD               = 0x23\n\tSO_TIMESTAMP_NEW                 = 0x3f\n\tSO_TXREHASH                      = 0x4a\n\tSO_TXTIME                        = 0x3d\n\tSO_TYPE                          = 0x3\n\tSO_WIFI_STATUS                   = 0x29\n\tSO_ZEROCOPY                      = 0x3c\n\tTAB1                             = 0x400\n\tTAB2                             = 0x800\n\tTAB3                             = 0xc00\n\tTABDLY                           = 0xc00\n\tTCFLSH                           = 0x2000741f\n\tTCGETA                           = 0x40147417\n\tTCGETS                           = 0x402c7413\n\tTCSAFLUSH                        = 0x2\n\tTCSBRK                           = 0x2000741d\n\tTCSBRKP                          = 0x5425\n\tTCSETA                           = 0x80147418\n\tTCSETAF                          = 0x8014741c\n\tTCSETAW                          = 0x80147419\n\tTCSETS                           = 0x802c7414\n\tTCSETSF                          = 0x802c7416\n\tTCSETSW                          = 0x802c7415\n\tTCXONC                           = 0x2000741e\n\tTFD_CLOEXEC                      = 0x80000\n\tTFD_NONBLOCK                     = 0x800\n\tTIOCCBRK                         = 0x5428\n\tTIOCCONS                         = 0x541d\n\tTIOCEXCL                         = 0x540c\n\tTIOCGDEV                         = 0x40045432\n\tTIOCGETC                         = 0x40067412\n\tTIOCGETD                         = 0x5424\n\tTIOCGETP                         = 0x40067408\n\tTIOCGEXCL                        = 0x40045440\n\tTIOCGICOUNT                      = 0x545d\n\tTIOCGISO7816                     = 0x40285442\n\tTIOCGLCKTRMIOS                   = 0x5456\n\tTIOCGLTC                         = 0x40067474\n\tTIOCGPGRP                        = 0x40047477\n\tTIOCGPKT                         = 0x40045438\n\tTIOCGPTLCK                       = 0x40045439\n\tTIOCGPTN                         = 0x40045430\n\tTIOCGPTPEER                      = 0x20005441\n\tTIOCGRS485                       = 0x542e\n\tTIOCGSERIAL                      = 0x541e\n\tTIOCGSID                         = 0x5429\n\tTIOCGSOFTCAR                     = 0x5419\n\tTIOCGWINSZ                       = 0x40087468\n\tTIOCINQ                          = 0x4004667f\n\tTIOCLINUX                        = 0x541c\n\tTIOCMBIC                         = 0x5417\n\tTIOCMBIS                         = 0x5416\n\tTIOCMGET                         = 0x5415\n\tTIOCMIWAIT                       = 0x545c\n\tTIOCMSET                         = 0x5418\n\tTIOCM_CAR                        = 0x40\n\tTIOCM_CD                         = 0x40\n\tTIOCM_CTS                        = 0x20\n\tTIOCM_DSR                        = 0x100\n\tTIOCM_LOOP                       = 0x8000\n\tTIOCM_OUT1                       = 0x2000\n\tTIOCM_OUT2                       = 0x4000\n\tTIOCM_RI                         = 0x80\n\tTIOCM_RNG                        = 0x80\n\tTIOCM_SR                         = 0x10\n\tTIOCM_ST                         = 0x8\n\tTIOCNOTTY                        = 0x5422\n\tTIOCNXCL                         = 0x540d\n\tTIOCOUTQ                         = 0x40047473\n\tTIOCPKT                          = 0x5420\n\tTIOCSBRK                         = 0x5427\n\tTIOCSCTTY                        = 0x540e\n\tTIOCSERCONFIG                    = 0x5453\n\tTIOCSERGETLSR                    = 0x5459\n\tTIOCSERGETMULTI                  = 0x545a\n\tTIOCSERGSTRUCT                   = 0x5458\n\tTIOCSERGWILD                     = 0x5454\n\tTIOCSERSETMULTI                  = 0x545b\n\tTIOCSERSWILD                     = 0x5455\n\tTIOCSER_TEMT                     = 0x1\n\tTIOCSETC                         = 0x80067411\n\tTIOCSETD                         = 0x5423\n\tTIOCSETN                         = 0x8006740a\n\tTIOCSETP                         = 0x80067409\n\tTIOCSIG                          = 0x80045436\n\tTIOCSISO7816                     = 0xc0285443\n\tTIOCSLCKTRMIOS                   = 0x5457\n\tTIOCSLTC                         = 0x80067475\n\tTIOCSPGRP                        = 0x80047476\n\tTIOCSPTLCK                       = 0x80045431\n\tTIOCSRS485                       = 0x542f\n\tTIOCSSERIAL                      = 0x541f\n\tTIOCSSOFTCAR                     = 0x541a\n\tTIOCSTART                        = 0x2000746e\n\tTIOCSTI                          = 0x5412\n\tTIOCSTOP                         = 0x2000746f\n\tTIOCSWINSZ                       = 0x80087467\n\tTIOCVHANGUP                      = 0x5437\n\tTOSTOP                           = 0x400000\n\tTUNATTACHFILTER                  = 0x800854d5\n\tTUNDETACHFILTER                  = 0x800854d6\n\tTUNGETDEVNETNS                   = 0x200054e3\n\tTUNGETFEATURES                   = 0x400454cf\n\tTUNGETFILTER                     = 0x400854db\n\tTUNGETIFF                        = 0x400454d2\n\tTUNGETSNDBUF                     = 0x400454d3\n\tTUNGETVNETBE                     = 0x400454df\n\tTUNGETVNETHDRSZ                  = 0x400454d7\n\tTUNGETVNETLE                     = 0x400454dd\n\tTUNSETCARRIER                    = 0x800454e2\n\tTUNSETDEBUG                      = 0x800454c9\n\tTUNSETFILTEREBPF                 = 0x400454e1\n\tTUNSETGROUP                      = 0x800454ce\n\tTUNSETIFF                        = 0x800454ca\n\tTUNSETIFINDEX                    = 0x800454da\n\tTUNSETLINK                       = 0x800454cd\n\tTUNSETNOCSUM                     = 0x800454c8\n\tTUNSETOFFLOAD                    = 0x800454d0\n\tTUNSETOWNER                      = 0x800454cc\n\tTUNSETPERSIST                    = 0x800454cb\n\tTUNSETQUEUE                      = 0x800454d9\n\tTUNSETSNDBUF                     = 0x800454d4\n\tTUNSETSTEERINGEBPF               = 0x400454e0\n\tTUNSETTXFILTER                   = 0x800454d1\n\tTUNSETVNETBE                     = 0x800454de\n\tTUNSETVNETHDRSZ                  = 0x800454d8\n\tTUNSETVNETLE                     = 0x800454dc\n\tUBI_IOCATT                       = 0x80186f40\n\tUBI_IOCDET                       = 0x80046f41\n\tUBI_IOCEBCH                      = 0x80044f02\n\tUBI_IOCEBER                      = 0x80044f01\n\tUBI_IOCEBISMAP                   = 0x40044f05\n\tUBI_IOCEBMAP                     = 0x80084f03\n\tUBI_IOCEBUNMAP                   = 0x80044f04\n\tUBI_IOCMKVOL                     = 0x80986f00\n\tUBI_IOCRMVOL                     = 0x80046f01\n\tUBI_IOCRNVOL                     = 0x91106f03\n\tUBI_IOCRPEB                      = 0x80046f04\n\tUBI_IOCRSVOL                     = 0x800c6f02\n\tUBI_IOCSETVOLPROP                = 0x80104f06\n\tUBI_IOCSPEB                      = 0x80046f05\n\tUBI_IOCVOLCRBLK                  = 0x80804f07\n\tUBI_IOCVOLRMBLK                  = 0x20004f08\n\tUBI_IOCVOLUP                     = 0x80084f00\n\tVDISCARD                         = 0x10\n\tVEOF                             = 0x4\n\tVEOL                             = 0x6\n\tVEOL2                            = 0x8\n\tVMIN                             = 0x5\n\tVREPRINT                         = 0xb\n\tVSTART                           = 0xd\n\tVSTOP                            = 0xe\n\tVSUSP                            = 0xc\n\tVSWTC                            = 0x9\n\tVT1                              = 0x10000\n\tVTDLY                            = 0x10000\n\tVTIME                            = 0x7\n\tVWERASE                          = 0xa\n\tWDIOC_GETBOOTSTATUS              = 0x40045702\n\tWDIOC_GETPRETIMEOUT              = 0x40045709\n\tWDIOC_GETSTATUS                  = 0x40045701\n\tWDIOC_GETSUPPORT                 = 0x40285700\n\tWDIOC_GETTEMP                    = 0x40045703\n\tWDIOC_GETTIMELEFT                = 0x4004570a\n\tWDIOC_GETTIMEOUT                 = 0x40045707\n\tWDIOC_KEEPALIVE                  = 0x40045705\n\tWDIOC_SETOPTIONS                 = 0x40045704\n\tWORDSIZE                         = 0x20\n\tXCASE                            = 0x4000\n\tXTABS                            = 0xc00\n\t_HIDIOCGRAWNAME                  = 0x40804804\n\t_HIDIOCGRAWPHYS                  = 0x40404805\n\t_HIDIOCGRAWUNIQ                  = 0x40404808\n)\n\n// Errors\nconst (\n\tEADDRINUSE      = syscall.Errno(0x62)\n\tEADDRNOTAVAIL   = syscall.Errno(0x63)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x61)\n\tEALREADY        = syscall.Errno(0x72)\n\tEBADE           = syscall.Errno(0x34)\n\tEBADFD          = syscall.Errno(0x4d)\n\tEBADMSG         = syscall.Errno(0x4a)\n\tEBADR           = syscall.Errno(0x35)\n\tEBADRQC         = syscall.Errno(0x38)\n\tEBADSLT         = syscall.Errno(0x39)\n\tEBFONT          = syscall.Errno(0x3b)\n\tECANCELED       = syscall.Errno(0x7d)\n\tECHRNG          = syscall.Errno(0x2c)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x67)\n\tECONNREFUSED    = syscall.Errno(0x6f)\n\tECONNRESET      = syscall.Errno(0x68)\n\tEDEADLK         = syscall.Errno(0x23)\n\tEDEADLOCK       = syscall.Errno(0x3a)\n\tEDESTADDRREQ    = syscall.Errno(0x59)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x7a)\n\tEHOSTDOWN       = syscall.Errno(0x70)\n\tEHOSTUNREACH    = syscall.Errno(0x71)\n\tEHWPOISON       = syscall.Errno(0x85)\n\tEIDRM           = syscall.Errno(0x2b)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x73)\n\tEISCONN         = syscall.Errno(0x6a)\n\tEISNAM          = syscall.Errno(0x78)\n\tEKEYEXPIRED     = syscall.Errno(0x7f)\n\tEKEYREJECTED    = syscall.Errno(0x81)\n\tEKEYREVOKED     = syscall.Errno(0x80)\n\tEL2HLT          = syscall.Errno(0x33)\n\tEL2NSYNC        = syscall.Errno(0x2d)\n\tEL3HLT          = syscall.Errno(0x2e)\n\tEL3RST          = syscall.Errno(0x2f)\n\tELIBACC         = syscall.Errno(0x4f)\n\tELIBBAD         = syscall.Errno(0x50)\n\tELIBEXEC        = syscall.Errno(0x53)\n\tELIBMAX         = syscall.Errno(0x52)\n\tELIBSCN         = syscall.Errno(0x51)\n\tELNRNG          = syscall.Errno(0x30)\n\tELOOP           = syscall.Errno(0x28)\n\tEMEDIUMTYPE     = syscall.Errno(0x7c)\n\tEMSGSIZE        = syscall.Errno(0x5a)\n\tEMULTIHOP       = syscall.Errno(0x48)\n\tENAMETOOLONG    = syscall.Errno(0x24)\n\tENAVAIL         = syscall.Errno(0x77)\n\tENETDOWN        = syscall.Errno(0x64)\n\tENETRESET       = syscall.Errno(0x66)\n\tENETUNREACH     = syscall.Errno(0x65)\n\tENOANO          = syscall.Errno(0x37)\n\tENOBUFS         = syscall.Errno(0x69)\n\tENOCSI          = syscall.Errno(0x32)\n\tENODATA         = syscall.Errno(0x3d)\n\tENOKEY          = syscall.Errno(0x7e)\n\tENOLCK          = syscall.Errno(0x25)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x7b)\n\tENOMSG          = syscall.Errno(0x2a)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x5c)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x26)\n\tENOTCONN        = syscall.Errno(0x6b)\n\tENOTEMPTY       = syscall.Errno(0x27)\n\tENOTNAM         = syscall.Errno(0x76)\n\tENOTRECOVERABLE = syscall.Errno(0x83)\n\tENOTSOCK        = syscall.Errno(0x58)\n\tENOTSUP         = syscall.Errno(0x5f)\n\tENOTUNIQ        = syscall.Errno(0x4c)\n\tEOPNOTSUPP      = syscall.Errno(0x5f)\n\tEOVERFLOW       = syscall.Errno(0x4b)\n\tEOWNERDEAD      = syscall.Errno(0x82)\n\tEPFNOSUPPORT    = syscall.Errno(0x60)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x5d)\n\tEPROTOTYPE      = syscall.Errno(0x5b)\n\tEREMCHG         = syscall.Errno(0x4e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x79)\n\tERESTART        = syscall.Errno(0x55)\n\tERFKILL         = syscall.Errno(0x84)\n\tESHUTDOWN       = syscall.Errno(0x6c)\n\tESOCKTNOSUPPORT = syscall.Errno(0x5e)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x74)\n\tESTRPIPE        = syscall.Errno(0x56)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x6e)\n\tETOOMANYREFS    = syscall.Errno(0x6d)\n\tEUCLEAN         = syscall.Errno(0x75)\n\tEUNATCH         = syscall.Errno(0x31)\n\tEUSERS          = syscall.Errno(0x57)\n\tEXFULL          = syscall.Errno(0x36)\n)\n\n// Signals\nconst (\n\tSIGBUS    = syscall.Signal(0x7)\n\tSIGCHLD   = syscall.Signal(0x11)\n\tSIGCLD    = syscall.Signal(0x11)\n\tSIGCONT   = syscall.Signal(0x12)\n\tSIGIO     = syscall.Signal(0x1d)\n\tSIGPOLL   = syscall.Signal(0x1d)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x1e)\n\tSIGSTKFLT = syscall.Signal(0x10)\n\tSIGSTOP   = syscall.Signal(0x13)\n\tSIGSYS    = syscall.Signal(0x1f)\n\tSIGTSTP   = syscall.Signal(0x14)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x17)\n\tSIGUSR1   = syscall.Signal(0xa)\n\tSIGUSR2   = syscall.Signal(0xc)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{36, \"ENAMETOOLONG\", \"file name too long\"},\n\t{37, \"ENOLCK\", \"no locks available\"},\n\t{38, \"ENOSYS\", \"function not implemented\"},\n\t{39, \"ENOTEMPTY\", \"directory not empty\"},\n\t{40, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{42, \"ENOMSG\", \"no message of desired type\"},\n\t{43, \"EIDRM\", \"identifier removed\"},\n\t{44, \"ECHRNG\", \"channel number out of range\"},\n\t{45, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{46, \"EL3HLT\", \"level 3 halted\"},\n\t{47, \"EL3RST\", \"level 3 reset\"},\n\t{48, \"ELNRNG\", \"link number out of range\"},\n\t{49, \"EUNATCH\", \"protocol driver not attached\"},\n\t{50, \"ENOCSI\", \"no CSI structure available\"},\n\t{51, \"EL2HLT\", \"level 2 halted\"},\n\t{52, \"EBADE\", \"invalid exchange\"},\n\t{53, \"EBADR\", \"invalid request descriptor\"},\n\t{54, \"EXFULL\", \"exchange full\"},\n\t{55, \"ENOANO\", \"no anode\"},\n\t{56, \"EBADRQC\", \"invalid request code\"},\n\t{57, \"EBADSLT\", \"invalid slot\"},\n\t{58, \"EDEADLOCK\", \"file locking deadlock error\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{72, \"EMULTIHOP\", \"multihop attempted\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EBADMSG\", \"bad message\"},\n\t{75, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{76, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{77, \"EBADFD\", \"file descriptor in bad state\"},\n\t{78, \"EREMCHG\", \"remote address changed\"},\n\t{79, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{80, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{81, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{82, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{83, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{84, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{85, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{86, \"ESTRPIPE\", \"streams pipe error\"},\n\t{87, \"EUSERS\", \"too many users\"},\n\t{88, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{89, \"EDESTADDRREQ\", \"destination address required\"},\n\t{90, \"EMSGSIZE\", \"message too long\"},\n\t{91, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{92, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{93, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{94, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{95, \"ENOTSUP\", \"operation not supported\"},\n\t{96, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{97, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{98, \"EADDRINUSE\", \"address already in use\"},\n\t{99, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{100, \"ENETDOWN\", \"network is down\"},\n\t{101, \"ENETUNREACH\", \"network is unreachable\"},\n\t{102, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{103, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{104, \"ECONNRESET\", \"connection reset by peer\"},\n\t{105, \"ENOBUFS\", \"no buffer space available\"},\n\t{106, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{107, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{108, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{109, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{110, \"ETIMEDOUT\", \"connection timed out\"},\n\t{111, \"ECONNREFUSED\", \"connection refused\"},\n\t{112, \"EHOSTDOWN\", \"host is down\"},\n\t{113, \"EHOSTUNREACH\", \"no route to host\"},\n\t{114, \"EALREADY\", \"operation already in progress\"},\n\t{115, \"EINPROGRESS\", \"operation now in progress\"},\n\t{116, \"ESTALE\", \"stale file handle\"},\n\t{117, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{118, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{119, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{120, \"EISNAM\", \"is a named type file\"},\n\t{121, \"EREMOTEIO\", \"remote I/O error\"},\n\t{122, \"EDQUOT\", \"disk quota exceeded\"},\n\t{123, \"ENOMEDIUM\", \"no medium found\"},\n\t{124, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{125, \"ECANCELED\", \"operation canceled\"},\n\t{126, \"ENOKEY\", \"required key not available\"},\n\t{127, \"EKEYEXPIRED\", \"key has expired\"},\n\t{128, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{129, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{130, \"EOWNERDEAD\", \"owner died\"},\n\t{131, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{132, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{133, \"EHWPOISON\", \"memory page has hardware error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGBUS\", \"bus error\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGUSR1\", \"user defined signal 1\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGUSR2\", \"user defined signal 2\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGSTKFLT\", \"stack fault\"},\n\t{17, \"SIGCHLD\", \"child exited\"},\n\t{18, \"SIGCONT\", \"continued\"},\n\t{19, \"SIGSTOP\", \"stopped (signal)\"},\n\t{20, \"SIGTSTP\", \"stopped\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGURG\", \"urgent I/O condition\"},\n\t{24, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"file size limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window changed\"},\n\t{29, \"SIGIO\", \"I/O possible\"},\n\t{30, \"SIGPWR\", \"power failure\"},\n\t{31, \"SIGSYS\", \"bad system call\"},\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/ppc64/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc64 && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/ppc64/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x17\n\tB115200                          = 0x11\n\tB1152000                         = 0x18\n\tB1500000                         = 0x19\n\tB2000000                         = 0x1a\n\tB230400                          = 0x12\n\tB2500000                         = 0x1b\n\tB3000000                         = 0x1c\n\tB3500000                         = 0x1d\n\tB4000000                         = 0x1e\n\tB460800                          = 0x13\n\tB500000                          = 0x14\n\tB57600                           = 0x10\n\tB576000                          = 0x15\n\tB921600                          = 0x16\n\tBLKALIGNOFF                      = 0x2000127a\n\tBLKBSZGET                        = 0x40081270\n\tBLKBSZSET                        = 0x80081271\n\tBLKDISCARD                       = 0x20001277\n\tBLKDISCARDZEROES                 = 0x2000127c\n\tBLKFLSBUF                        = 0x20001261\n\tBLKFRAGET                        = 0x20001265\n\tBLKFRASET                        = 0x20001264\n\tBLKGETDISKSEQ                    = 0x40081280\n\tBLKGETSIZE                       = 0x20001260\n\tBLKGETSIZE64                     = 0x40081272\n\tBLKIOMIN                         = 0x20001278\n\tBLKIOOPT                         = 0x20001279\n\tBLKPBSZGET                       = 0x2000127b\n\tBLKRAGET                         = 0x20001263\n\tBLKRASET                         = 0x20001262\n\tBLKROGET                         = 0x2000125e\n\tBLKROSET                         = 0x2000125d\n\tBLKROTATIONAL                    = 0x2000127e\n\tBLKRRPART                        = 0x2000125f\n\tBLKSECDISCARD                    = 0x2000127d\n\tBLKSECTGET                       = 0x20001267\n\tBLKSECTSET                       = 0x20001266\n\tBLKSSZGET                        = 0x20001268\n\tBLKZEROOUT                       = 0x2000127f\n\tBOTHER                           = 0x1f\n\tBS1                              = 0x8000\n\tBSDLY                            = 0x8000\n\tCBAUD                            = 0xff\n\tCBAUDEX                          = 0x0\n\tCIBAUD                           = 0xff0000\n\tCLOCAL                           = 0x8000\n\tCR1                              = 0x1000\n\tCR2                              = 0x2000\n\tCR3                              = 0x3000\n\tCRDLY                            = 0x3000\n\tCREAD                            = 0x800\n\tCS6                              = 0x100\n\tCS7                              = 0x200\n\tCS8                              = 0x300\n\tCSIZE                            = 0x300\n\tCSTOPB                           = 0x400\n\tDM_MPATH_PROBE_PATHS             = 0x2000fd12\n\tECCGETLAYOUT                     = 0x41484d11\n\tECCGETSTATS                      = 0x40104d12\n\tECHOCTL                          = 0x40\n\tECHOE                            = 0x2\n\tECHOK                            = 0x4\n\tECHOKE                           = 0x1\n\tECHONL                           = 0x10\n\tECHOPRT                          = 0x20\n\tEFD_CLOEXEC                      = 0x80000\n\tEFD_NONBLOCK                     = 0x800\n\tEPIOCGPARAMS                     = 0x40088a02\n\tEPIOCSPARAMS                     = 0x80088a01\n\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000000\n\tFF1                              = 0x4000\n\tFFDLY                            = 0x4000\n\tFICLONE                          = 0x80049409\n\tFICLONERANGE                     = 0x8020940d\n\tFLUSHO                           = 0x800000\n\tFS_IOC_ENABLE_VERITY             = 0x80806685\n\tFS_IOC_GETFLAGS                  = 0x40086601\n\tFS_IOC_GET_ENCRYPTION_NONCE      = 0x4010661b\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x800c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x80106614\n\tFS_IOC_SETFLAGS                  = 0x80086602\n\tFS_IOC_SET_ENCRYPTION_POLICY     = 0x400c6613\n\tF_GETLK                          = 0x5\n\tF_GETLK64                        = 0xc\n\tF_GETOWN                         = 0x9\n\tF_RDLCK                          = 0x0\n\tF_SETLK                          = 0x6\n\tF_SETLK64                        = 0xd\n\tF_SETLKW                         = 0x7\n\tF_SETLKW64                       = 0xe\n\tF_SETOWN                         = 0x8\n\tF_UNLCK                          = 0x2\n\tF_WRLCK                          = 0x1\n\tHIDIOCGRAWINFO                   = 0x40084803\n\tHIDIOCGRDESC                     = 0x50044802\n\tHIDIOCGRDESCSIZE                 = 0x40044801\n\tHIDIOCREVOKE                     = 0x8004480d\n\tHUPCL                            = 0x4000\n\tICANON                           = 0x100\n\tIEXTEN                           = 0x400\n\tIN_CLOEXEC                       = 0x80000\n\tIN_NONBLOCK                      = 0x800\n\tIOCTL_MEI_NOTIFY_GET             = 0x40044803\n\tIOCTL_MEI_NOTIFY_SET             = 0x80044802\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x200007b9\n\tIPV6_FLOWINFO_MASK               = 0xfffffff\n\tIPV6_FLOWLABEL_MASK              = 0xfffff\n\tISIG                             = 0x80\n\tIUCLC                            = 0x1000\n\tIXOFF                            = 0x400\n\tIXON                             = 0x200\n\tMAP_ANON                         = 0x20\n\tMAP_ANONYMOUS                    = 0x20\n\tMAP_DENYWRITE                    = 0x800\n\tMAP_EXECUTABLE                   = 0x1000\n\tMAP_GROWSDOWN                    = 0x100\n\tMAP_HUGETLB                      = 0x40000\n\tMAP_LOCKED                       = 0x80\n\tMAP_NONBLOCK                     = 0x10000\n\tMAP_NORESERVE                    = 0x40\n\tMAP_POPULATE                     = 0x8000\n\tMAP_STACK                        = 0x20000\n\tMAP_SYNC                         = 0x80000\n\tMCL_CURRENT                      = 0x2000\n\tMCL_FUTURE                       = 0x4000\n\tMCL_ONFAULT                      = 0x8000\n\tMEMERASE                         = 0x80084d02\n\tMEMERASE64                       = 0x80104d14\n\tMEMGETBADBLOCK                   = 0x80084d0b\n\tMEMGETINFO                       = 0x40204d01\n\tMEMGETOOBSEL                     = 0x40c84d0a\n\tMEMGETREGIONCOUNT                = 0x40044d07\n\tMEMISLOCKED                      = 0x40084d17\n\tMEMLOCK                          = 0x80084d05\n\tMEMREAD                          = 0xc0404d1a\n\tMEMREADOOB                       = 0xc0104d04\n\tMEMSETBADBLOCK                   = 0x80084d0c\n\tMEMUNLOCK                        = 0x80084d06\n\tMEMWRITEOOB                      = 0xc0104d03\n\tMTDFILEMODE                      = 0x20004d13\n\tNFDBITS                          = 0x40\n\tNL2                              = 0x200\n\tNL3                              = 0x300\n\tNLDLY                            = 0x300\n\tNOFLSH                           = 0x80000000\n\tNS_GET_MNTNS_ID                  = 0x4008b705\n\tNS_GET_NSTYPE                    = 0x2000b703\n\tNS_GET_OWNER_UID                 = 0x2000b704\n\tNS_GET_PARENT                    = 0x2000b702\n\tNS_GET_PID_FROM_PIDNS            = 0x4004b706\n\tNS_GET_PID_IN_PIDNS              = 0x4004b708\n\tNS_GET_TGID_FROM_PIDNS           = 0x4004b707\n\tNS_GET_TGID_IN_PIDNS             = 0x4004b709\n\tNS_GET_USERNS                    = 0x2000b701\n\tOLCUC                            = 0x4\n\tONLCR                            = 0x2\n\tOTPERASE                         = 0x800c4d19\n\tOTPGETREGIONCOUNT                = 0x80044d0e\n\tOTPGETREGIONINFO                 = 0x800c4d0f\n\tOTPLOCK                          = 0x400c4d10\n\tOTPSELECT                        = 0x40044d0d\n\tO_APPEND                         = 0x400\n\tO_ASYNC                          = 0x2000\n\tO_CLOEXEC                        = 0x80000\n\tO_CREAT                          = 0x40\n\tO_DIRECT                         = 0x20000\n\tO_DIRECTORY                      = 0x4000\n\tO_DSYNC                          = 0x1000\n\tO_EXCL                           = 0x80\n\tO_FSYNC                          = 0x101000\n\tO_LARGEFILE                      = 0x0\n\tO_NDELAY                         = 0x800\n\tO_NOATIME                        = 0x40000\n\tO_NOCTTY                         = 0x100\n\tO_NOFOLLOW                       = 0x8000\n\tO_NONBLOCK                       = 0x800\n\tO_PATH                           = 0x200000\n\tO_RSYNC                          = 0x101000\n\tO_SYNC                           = 0x101000\n\tO_TMPFILE                        = 0x404000\n\tO_TRUNC                          = 0x200\n\tPARENB                           = 0x1000\n\tPARODD                           = 0x2000\n\tPENDIN                           = 0x20000000\n\tPERF_EVENT_IOC_DISABLE           = 0x20002401\n\tPERF_EVENT_IOC_ENABLE            = 0x20002400\n\tPERF_EVENT_IOC_ID                = 0x40082407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8008240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT      = 0x80042409\n\tPERF_EVENT_IOC_PERIOD            = 0x80082404\n\tPERF_EVENT_IOC_QUERY_BPF         = 0xc008240a\n\tPERF_EVENT_IOC_REFRESH           = 0x20002402\n\tPERF_EVENT_IOC_RESET             = 0x20002403\n\tPERF_EVENT_IOC_SET_BPF           = 0x80042408\n\tPERF_EVENT_IOC_SET_FILTER        = 0x80082406\n\tPERF_EVENT_IOC_SET_OUTPUT        = 0x20002405\n\tPPPIOCATTACH                     = 0x8004743d\n\tPPPIOCATTCHAN                    = 0x80047438\n\tPPPIOCBRIDGECHAN                 = 0x80047435\n\tPPPIOCCONNECT                    = 0x8004743a\n\tPPPIOCDETACH                     = 0x8004743c\n\tPPPIOCDISCONN                    = 0x20007439\n\tPPPIOCGASYNCMAP                  = 0x40047458\n\tPPPIOCGCHAN                      = 0x40047437\n\tPPPIOCGDEBUG                     = 0x40047441\n\tPPPIOCGFLAGS                     = 0x4004745a\n\tPPPIOCGIDLE                      = 0x4010743f\n\tPPPIOCGIDLE32                    = 0x4008743f\n\tPPPIOCGIDLE64                    = 0x4010743f\n\tPPPIOCGL2TPSTATS                 = 0x40487436\n\tPPPIOCGMRU                       = 0x40047453\n\tPPPIOCGRASYNCMAP                 = 0x40047455\n\tPPPIOCGUNIT                      = 0x40047456\n\tPPPIOCGXASYNCMAP                 = 0x40207450\n\tPPPIOCSACTIVE                    = 0x80107446\n\tPPPIOCSASYNCMAP                  = 0x80047457\n\tPPPIOCSCOMPRESS                  = 0x8010744d\n\tPPPIOCSDEBUG                     = 0x80047440\n\tPPPIOCSFLAGS                     = 0x80047459\n\tPPPIOCSMAXCID                    = 0x80047451\n\tPPPIOCSMRRU                      = 0x8004743b\n\tPPPIOCSMRU                       = 0x80047452\n\tPPPIOCSNPMODE                    = 0x8008744b\n\tPPPIOCSPASS                      = 0x80107447\n\tPPPIOCSRASYNCMAP                 = 0x80047454\n\tPPPIOCSXASYNCMAP                 = 0x8020744f\n\tPPPIOCUNBRIDGECHAN               = 0x20007434\n\tPPPIOCXFERUNIT                   = 0x2000744e\n\tPROT_SAO                         = 0x10\n\tPR_SET_PTRACER_ANY               = 0xffffffffffffffff\n\tPTP_CLOCK_GETCAPS                = 0x40503d01\n\tPTP_CLOCK_GETCAPS2               = 0x40503d0a\n\tPTP_ENABLE_PPS                   = 0x80043d04\n\tPTP_ENABLE_PPS2                  = 0x80043d0d\n\tPTP_EXTTS_REQUEST                = 0x80103d02\n\tPTP_EXTTS_REQUEST2               = 0x80103d0b\n\tPTP_MASK_CLEAR_ALL               = 0x20003d13\n\tPTP_MASK_EN_SINGLE               = 0x80043d14\n\tPTP_PEROUT_REQUEST               = 0x80383d03\n\tPTP_PEROUT_REQUEST2              = 0x80383d0c\n\tPTP_PIN_SETFUNC                  = 0x80603d07\n\tPTP_PIN_SETFUNC2                 = 0x80603d10\n\tPTP_SYS_OFFSET                   = 0x83403d05\n\tPTP_SYS_OFFSET2                  = 0x83403d0e\n\tPTRACE_GETEVRREGS                = 0x14\n\tPTRACE_GETFPREGS                 = 0xe\n\tPTRACE_GETREGS64                 = 0x16\n\tPTRACE_GETVRREGS                 = 0x12\n\tPTRACE_GETVSRREGS                = 0x1b\n\tPTRACE_GET_DEBUGREG              = 0x19\n\tPTRACE_SETEVRREGS                = 0x15\n\tPTRACE_SETFPREGS                 = 0xf\n\tPTRACE_SETREGS64                 = 0x17\n\tPTRACE_SETVRREGS                 = 0x13\n\tPTRACE_SETVSRREGS                = 0x1c\n\tPTRACE_SET_DEBUGREG              = 0x1a\n\tPTRACE_SINGLEBLOCK               = 0x100\n\tPTRACE_SYSEMU                    = 0x1d\n\tPTRACE_SYSEMU_SINGLESTEP         = 0x1e\n\tPT_CCR                           = 0x26\n\tPT_CTR                           = 0x23\n\tPT_DAR                           = 0x29\n\tPT_DSCR                          = 0x2c\n\tPT_DSISR                         = 0x2a\n\tPT_FPR0                          = 0x30\n\tPT_FPSCR                         = 0x50\n\tPT_LNK                           = 0x24\n\tPT_MSR                           = 0x21\n\tPT_NIP                           = 0x20\n\tPT_ORIG_R3                       = 0x22\n\tPT_R0                            = 0x0\n\tPT_R1                            = 0x1\n\tPT_R10                           = 0xa\n\tPT_R11                           = 0xb\n\tPT_R12                           = 0xc\n\tPT_R13                           = 0xd\n\tPT_R14                           = 0xe\n\tPT_R15                           = 0xf\n\tPT_R16                           = 0x10\n\tPT_R17                           = 0x11\n\tPT_R18                           = 0x12\n\tPT_R19                           = 0x13\n\tPT_R2                            = 0x2\n\tPT_R20                           = 0x14\n\tPT_R21                           = 0x15\n\tPT_R22                           = 0x16\n\tPT_R23                           = 0x17\n\tPT_R24                           = 0x18\n\tPT_R25                           = 0x19\n\tPT_R26                           = 0x1a\n\tPT_R27                           = 0x1b\n\tPT_R28                           = 0x1c\n\tPT_R29                           = 0x1d\n\tPT_R3                            = 0x3\n\tPT_R30                           = 0x1e\n\tPT_R31                           = 0x1f\n\tPT_R4                            = 0x4\n\tPT_R5                            = 0x5\n\tPT_R6                            = 0x6\n\tPT_R7                            = 0x7\n\tPT_R8                            = 0x8\n\tPT_R9                            = 0x9\n\tPT_REGS_COUNT                    = 0x2c\n\tPT_RESULT                        = 0x2b\n\tPT_SOFTE                         = 0x27\n\tPT_TRAP                          = 0x28\n\tPT_VR0                           = 0x52\n\tPT_VRSAVE                        = 0x94\n\tPT_VSCR                          = 0x93\n\tPT_VSR0                          = 0x96\n\tPT_VSR31                         = 0xd4\n\tPT_XER                           = 0x25\n\tRLIMIT_AS                        = 0x9\n\tRLIMIT_MEMLOCK                   = 0x8\n\tRLIMIT_NOFILE                    = 0x7\n\tRLIMIT_NPROC                     = 0x6\n\tRLIMIT_RSS                       = 0x5\n\tRNDADDENTROPY                    = 0x80085203\n\tRNDADDTOENTCNT                   = 0x80045201\n\tRNDCLEARPOOL                     = 0x20005206\n\tRNDGETENTCNT                     = 0x40045200\n\tRNDGETPOOL                       = 0x40085202\n\tRNDRESEEDCRNG                    = 0x20005207\n\tRNDZAPENTCNT                     = 0x20005204\n\tRTC_AIE_OFF                      = 0x20007002\n\tRTC_AIE_ON                       = 0x20007001\n\tRTC_ALM_READ                     = 0x40247008\n\tRTC_ALM_SET                      = 0x80247007\n\tRTC_EPOCH_READ                   = 0x4008700d\n\tRTC_EPOCH_SET                    = 0x8008700e\n\tRTC_IRQP_READ                    = 0x4008700b\n\tRTC_IRQP_SET                     = 0x8008700c\n\tRTC_PARAM_GET                    = 0x80187013\n\tRTC_PARAM_SET                    = 0x80187014\n\tRTC_PIE_OFF                      = 0x20007006\n\tRTC_PIE_ON                       = 0x20007005\n\tRTC_PLL_GET                      = 0x40207011\n\tRTC_PLL_SET                      = 0x80207012\n\tRTC_RD_TIME                      = 0x40247009\n\tRTC_SET_TIME                     = 0x8024700a\n\tRTC_UIE_OFF                      = 0x20007004\n\tRTC_UIE_ON                       = 0x20007003\n\tRTC_VL_CLR                       = 0x20007014\n\tRTC_VL_READ                      = 0x40047013\n\tRTC_WIE_OFF                      = 0x20007010\n\tRTC_WIE_ON                       = 0x2000700f\n\tRTC_WKALM_RD                     = 0x40287010\n\tRTC_WKALM_SET                    = 0x8028700f\n\tSCM_DEVMEM_DMABUF                = 0x4f\n\tSCM_DEVMEM_LINEAR                = 0x4e\n\tSCM_TIMESTAMPING                 = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS       = 0x36\n\tSCM_TIMESTAMPING_PKTINFO         = 0x3a\n\tSCM_TIMESTAMPNS                  = 0x23\n\tSCM_TS_OPT_ID                    = 0x51\n\tSCM_TXTIME                       = 0x3d\n\tSCM_WIFI_STATUS                  = 0x29\n\tSECCOMP_IOCTL_NOTIF_ADDFD        = 0x80182103\n\tSECCOMP_IOCTL_NOTIF_ID_VALID     = 0x80082102\n\tSECCOMP_IOCTL_NOTIF_SET_FLAGS    = 0x80082104\n\tSFD_CLOEXEC                      = 0x80000\n\tSFD_NONBLOCK                     = 0x800\n\tSIOCATMARK                       = 0x8905\n\tSIOCGPGRP                        = 0x8904\n\tSIOCGSTAMPNS_NEW                 = 0x40108907\n\tSIOCGSTAMP_NEW                   = 0x40108906\n\tSIOCINQ                          = 0x4004667f\n\tSIOCOUTQ                         = 0x40047473\n\tSIOCSPGRP                        = 0x8902\n\tSOCK_CLOEXEC                     = 0x80000\n\tSOCK_DGRAM                       = 0x2\n\tSOCK_NONBLOCK                    = 0x800\n\tSOCK_STREAM                      = 0x1\n\tSOL_SOCKET                       = 0x1\n\tSO_ACCEPTCONN                    = 0x1e\n\tSO_ATTACH_BPF                    = 0x32\n\tSO_ATTACH_REUSEPORT_CBPF         = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF         = 0x34\n\tSO_BINDTODEVICE                  = 0x19\n\tSO_BINDTOIFINDEX                 = 0x3e\n\tSO_BPF_EXTENSIONS                = 0x30\n\tSO_BROADCAST                     = 0x6\n\tSO_BSDCOMPAT                     = 0xe\n\tSO_BUF_LOCK                      = 0x48\n\tSO_BUSY_POLL                     = 0x2e\n\tSO_BUSY_POLL_BUDGET              = 0x46\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\n\tSO_DEVMEM_DMABUF                 = 0x4f\n\tSO_DEVMEM_DONTNEED               = 0x50\n\tSO_DEVMEM_LINEAR                 = 0x4e\n\tSO_DOMAIN                        = 0x27\n\tSO_DONTROUTE                     = 0x5\n\tSO_ERROR                         = 0x4\n\tSO_INCOMING_CPU                  = 0x31\n\tSO_INCOMING_NAPI_ID              = 0x38\n\tSO_KEEPALIVE                     = 0x9\n\tSO_LINGER                        = 0xd\n\tSO_LOCK_FILTER                   = 0x2c\n\tSO_MARK                          = 0x24\n\tSO_MAX_PACING_RATE               = 0x2f\n\tSO_MEMINFO                       = 0x37\n\tSO_NETNS_COOKIE                  = 0x47\n\tSO_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0xa\n\tSO_PASSCRED                      = 0x14\n\tSO_PASSPIDFD                     = 0x4c\n\tSO_PASSRIGHTS                    = 0x53\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x15\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERPIDFD                     = 0x4d\n\tSO_PEERSEC                       = 0x1f\n\tSO_PREFER_BUSY_POLL              = 0x45\n\tSO_PROTOCOL                      = 0x26\n\tSO_RCVBUF                        = 0x8\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x10\n\tSO_RCVMARK                       = 0x4b\n\tSO_RCVPRIORITY                   = 0x52\n\tSO_RCVTIMEO                      = 0x12\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x12\n\tSO_RESERVE_MEM                   = 0x49\n\tSO_REUSEADDR                     = 0x2\n\tSO_REUSEPORT                     = 0xf\n\tSO_RXQ_OVFL                      = 0x28\n\tSO_SECURITY_AUTHENTICATION       = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK   = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT = 0x17\n\tSO_SELECT_ERR_QUEUE              = 0x2d\n\tSO_SNDBUF                        = 0x7\n\tSO_SNDBUFFORCE                   = 0x20\n\tSO_SNDLOWAT                      = 0x11\n\tSO_SNDTIMEO                      = 0x13\n\tSO_SNDTIMEO_NEW                  = 0x43\n\tSO_SNDTIMEO_OLD                  = 0x13\n\tSO_TIMESTAMPING                  = 0x25\n\tSO_TIMESTAMPING_NEW              = 0x41\n\tSO_TIMESTAMPING_OLD              = 0x25\n\tSO_TIMESTAMPNS                   = 0x23\n\tSO_TIMESTAMPNS_NEW               = 0x40\n\tSO_TIMESTAMPNS_OLD               = 0x23\n\tSO_TIMESTAMP_NEW                 = 0x3f\n\tSO_TXREHASH                      = 0x4a\n\tSO_TXTIME                        = 0x3d\n\tSO_TYPE                          = 0x3\n\tSO_WIFI_STATUS                   = 0x29\n\tSO_ZEROCOPY                      = 0x3c\n\tTAB1                             = 0x400\n\tTAB2                             = 0x800\n\tTAB3                             = 0xc00\n\tTABDLY                           = 0xc00\n\tTCFLSH                           = 0x2000741f\n\tTCGETA                           = 0x40147417\n\tTCGETS                           = 0x402c7413\n\tTCSAFLUSH                        = 0x2\n\tTCSBRK                           = 0x2000741d\n\tTCSBRKP                          = 0x5425\n\tTCSETA                           = 0x80147418\n\tTCSETAF                          = 0x8014741c\n\tTCSETAW                          = 0x80147419\n\tTCSETS                           = 0x802c7414\n\tTCSETSF                          = 0x802c7416\n\tTCSETSW                          = 0x802c7415\n\tTCXONC                           = 0x2000741e\n\tTFD_CLOEXEC                      = 0x80000\n\tTFD_NONBLOCK                     = 0x800\n\tTIOCCBRK                         = 0x5428\n\tTIOCCONS                         = 0x541d\n\tTIOCEXCL                         = 0x540c\n\tTIOCGDEV                         = 0x40045432\n\tTIOCGETC                         = 0x40067412\n\tTIOCGETD                         = 0x5424\n\tTIOCGETP                         = 0x40067408\n\tTIOCGEXCL                        = 0x40045440\n\tTIOCGICOUNT                      = 0x545d\n\tTIOCGISO7816                     = 0x40285442\n\tTIOCGLCKTRMIOS                   = 0x5456\n\tTIOCGLTC                         = 0x40067474\n\tTIOCGPGRP                        = 0x40047477\n\tTIOCGPKT                         = 0x40045438\n\tTIOCGPTLCK                       = 0x40045439\n\tTIOCGPTN                         = 0x40045430\n\tTIOCGPTPEER                      = 0x20005441\n\tTIOCGRS485                       = 0x542e\n\tTIOCGSERIAL                      = 0x541e\n\tTIOCGSID                         = 0x5429\n\tTIOCGSOFTCAR                     = 0x5419\n\tTIOCGWINSZ                       = 0x40087468\n\tTIOCINQ                          = 0x4004667f\n\tTIOCLINUX                        = 0x541c\n\tTIOCMBIC                         = 0x5417\n\tTIOCMBIS                         = 0x5416\n\tTIOCMGET                         = 0x5415\n\tTIOCMIWAIT                       = 0x545c\n\tTIOCMSET                         = 0x5418\n\tTIOCM_CAR                        = 0x40\n\tTIOCM_CD                         = 0x40\n\tTIOCM_CTS                        = 0x20\n\tTIOCM_DSR                        = 0x100\n\tTIOCM_LOOP                       = 0x8000\n\tTIOCM_OUT1                       = 0x2000\n\tTIOCM_OUT2                       = 0x4000\n\tTIOCM_RI                         = 0x80\n\tTIOCM_RNG                        = 0x80\n\tTIOCM_SR                         = 0x10\n\tTIOCM_ST                         = 0x8\n\tTIOCNOTTY                        = 0x5422\n\tTIOCNXCL                         = 0x540d\n\tTIOCOUTQ                         = 0x40047473\n\tTIOCPKT                          = 0x5420\n\tTIOCSBRK                         = 0x5427\n\tTIOCSCTTY                        = 0x540e\n\tTIOCSERCONFIG                    = 0x5453\n\tTIOCSERGETLSR                    = 0x5459\n\tTIOCSERGETMULTI                  = 0x545a\n\tTIOCSERGSTRUCT                   = 0x5458\n\tTIOCSERGWILD                     = 0x5454\n\tTIOCSERSETMULTI                  = 0x545b\n\tTIOCSERSWILD                     = 0x5455\n\tTIOCSER_TEMT                     = 0x1\n\tTIOCSETC                         = 0x80067411\n\tTIOCSETD                         = 0x5423\n\tTIOCSETN                         = 0x8006740a\n\tTIOCSETP                         = 0x80067409\n\tTIOCSIG                          = 0x80045436\n\tTIOCSISO7816                     = 0xc0285443\n\tTIOCSLCKTRMIOS                   = 0x5457\n\tTIOCSLTC                         = 0x80067475\n\tTIOCSPGRP                        = 0x80047476\n\tTIOCSPTLCK                       = 0x80045431\n\tTIOCSRS485                       = 0x542f\n\tTIOCSSERIAL                      = 0x541f\n\tTIOCSSOFTCAR                     = 0x541a\n\tTIOCSTART                        = 0x2000746e\n\tTIOCSTI                          = 0x5412\n\tTIOCSTOP                         = 0x2000746f\n\tTIOCSWINSZ                       = 0x80087467\n\tTIOCVHANGUP                      = 0x5437\n\tTOSTOP                           = 0x400000\n\tTUNATTACHFILTER                  = 0x801054d5\n\tTUNDETACHFILTER                  = 0x801054d6\n\tTUNGETDEVNETNS                   = 0x200054e3\n\tTUNGETFEATURES                   = 0x400454cf\n\tTUNGETFILTER                     = 0x401054db\n\tTUNGETIFF                        = 0x400454d2\n\tTUNGETSNDBUF                     = 0x400454d3\n\tTUNGETVNETBE                     = 0x400454df\n\tTUNGETVNETHDRSZ                  = 0x400454d7\n\tTUNGETVNETLE                     = 0x400454dd\n\tTUNSETCARRIER                    = 0x800454e2\n\tTUNSETDEBUG                      = 0x800454c9\n\tTUNSETFILTEREBPF                 = 0x400454e1\n\tTUNSETGROUP                      = 0x800454ce\n\tTUNSETIFF                        = 0x800454ca\n\tTUNSETIFINDEX                    = 0x800454da\n\tTUNSETLINK                       = 0x800454cd\n\tTUNSETNOCSUM                     = 0x800454c8\n\tTUNSETOFFLOAD                    = 0x800454d0\n\tTUNSETOWNER                      = 0x800454cc\n\tTUNSETPERSIST                    = 0x800454cb\n\tTUNSETQUEUE                      = 0x800454d9\n\tTUNSETSNDBUF                     = 0x800454d4\n\tTUNSETSTEERINGEBPF               = 0x400454e0\n\tTUNSETTXFILTER                   = 0x800454d1\n\tTUNSETVNETBE                     = 0x800454de\n\tTUNSETVNETHDRSZ                  = 0x800454d8\n\tTUNSETVNETLE                     = 0x800454dc\n\tUBI_IOCATT                       = 0x80186f40\n\tUBI_IOCDET                       = 0x80046f41\n\tUBI_IOCEBCH                      = 0x80044f02\n\tUBI_IOCEBER                      = 0x80044f01\n\tUBI_IOCEBISMAP                   = 0x40044f05\n\tUBI_IOCEBMAP                     = 0x80084f03\n\tUBI_IOCEBUNMAP                   = 0x80044f04\n\tUBI_IOCMKVOL                     = 0x80986f00\n\tUBI_IOCRMVOL                     = 0x80046f01\n\tUBI_IOCRNVOL                     = 0x91106f03\n\tUBI_IOCRPEB                      = 0x80046f04\n\tUBI_IOCRSVOL                     = 0x800c6f02\n\tUBI_IOCSETVOLPROP                = 0x80104f06\n\tUBI_IOCSPEB                      = 0x80046f05\n\tUBI_IOCVOLCRBLK                  = 0x80804f07\n\tUBI_IOCVOLRMBLK                  = 0x20004f08\n\tUBI_IOCVOLUP                     = 0x80084f00\n\tVDISCARD                         = 0x10\n\tVEOF                             = 0x4\n\tVEOL                             = 0x6\n\tVEOL2                            = 0x8\n\tVMIN                             = 0x5\n\tVREPRINT                         = 0xb\n\tVSTART                           = 0xd\n\tVSTOP                            = 0xe\n\tVSUSP                            = 0xc\n\tVSWTC                            = 0x9\n\tVT1                              = 0x10000\n\tVTDLY                            = 0x10000\n\tVTIME                            = 0x7\n\tVWERASE                          = 0xa\n\tWDIOC_GETBOOTSTATUS              = 0x40045702\n\tWDIOC_GETPRETIMEOUT              = 0x40045709\n\tWDIOC_GETSTATUS                  = 0x40045701\n\tWDIOC_GETSUPPORT                 = 0x40285700\n\tWDIOC_GETTEMP                    = 0x40045703\n\tWDIOC_GETTIMELEFT                = 0x4004570a\n\tWDIOC_GETTIMEOUT                 = 0x40045707\n\tWDIOC_KEEPALIVE                  = 0x40045705\n\tWDIOC_SETOPTIONS                 = 0x40045704\n\tWORDSIZE                         = 0x40\n\tXCASE                            = 0x4000\n\tXTABS                            = 0xc00\n\t_HIDIOCGRAWNAME                  = 0x40804804\n\t_HIDIOCGRAWPHYS                  = 0x40404805\n\t_HIDIOCGRAWUNIQ                  = 0x40404808\n)\n\n// Errors\nconst (\n\tEADDRINUSE      = syscall.Errno(0x62)\n\tEADDRNOTAVAIL   = syscall.Errno(0x63)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x61)\n\tEALREADY        = syscall.Errno(0x72)\n\tEBADE           = syscall.Errno(0x34)\n\tEBADFD          = syscall.Errno(0x4d)\n\tEBADMSG         = syscall.Errno(0x4a)\n\tEBADR           = syscall.Errno(0x35)\n\tEBADRQC         = syscall.Errno(0x38)\n\tEBADSLT         = syscall.Errno(0x39)\n\tEBFONT          = syscall.Errno(0x3b)\n\tECANCELED       = syscall.Errno(0x7d)\n\tECHRNG          = syscall.Errno(0x2c)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x67)\n\tECONNREFUSED    = syscall.Errno(0x6f)\n\tECONNRESET      = syscall.Errno(0x68)\n\tEDEADLK         = syscall.Errno(0x23)\n\tEDEADLOCK       = syscall.Errno(0x3a)\n\tEDESTADDRREQ    = syscall.Errno(0x59)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x7a)\n\tEHOSTDOWN       = syscall.Errno(0x70)\n\tEHOSTUNREACH    = syscall.Errno(0x71)\n\tEHWPOISON       = syscall.Errno(0x85)\n\tEIDRM           = syscall.Errno(0x2b)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x73)\n\tEISCONN         = syscall.Errno(0x6a)\n\tEISNAM          = syscall.Errno(0x78)\n\tEKEYEXPIRED     = syscall.Errno(0x7f)\n\tEKEYREJECTED    = syscall.Errno(0x81)\n\tEKEYREVOKED     = syscall.Errno(0x80)\n\tEL2HLT          = syscall.Errno(0x33)\n\tEL2NSYNC        = syscall.Errno(0x2d)\n\tEL3HLT          = syscall.Errno(0x2e)\n\tEL3RST          = syscall.Errno(0x2f)\n\tELIBACC         = syscall.Errno(0x4f)\n\tELIBBAD         = syscall.Errno(0x50)\n\tELIBEXEC        = syscall.Errno(0x53)\n\tELIBMAX         = syscall.Errno(0x52)\n\tELIBSCN         = syscall.Errno(0x51)\n\tELNRNG          = syscall.Errno(0x30)\n\tELOOP           = syscall.Errno(0x28)\n\tEMEDIUMTYPE     = syscall.Errno(0x7c)\n\tEMSGSIZE        = syscall.Errno(0x5a)\n\tEMULTIHOP       = syscall.Errno(0x48)\n\tENAMETOOLONG    = syscall.Errno(0x24)\n\tENAVAIL         = syscall.Errno(0x77)\n\tENETDOWN        = syscall.Errno(0x64)\n\tENETRESET       = syscall.Errno(0x66)\n\tENETUNREACH     = syscall.Errno(0x65)\n\tENOANO          = syscall.Errno(0x37)\n\tENOBUFS         = syscall.Errno(0x69)\n\tENOCSI          = syscall.Errno(0x32)\n\tENODATA         = syscall.Errno(0x3d)\n\tENOKEY          = syscall.Errno(0x7e)\n\tENOLCK          = syscall.Errno(0x25)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x7b)\n\tENOMSG          = syscall.Errno(0x2a)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x5c)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x26)\n\tENOTCONN        = syscall.Errno(0x6b)\n\tENOTEMPTY       = syscall.Errno(0x27)\n\tENOTNAM         = syscall.Errno(0x76)\n\tENOTRECOVERABLE = syscall.Errno(0x83)\n\tENOTSOCK        = syscall.Errno(0x58)\n\tENOTSUP         = syscall.Errno(0x5f)\n\tENOTUNIQ        = syscall.Errno(0x4c)\n\tEOPNOTSUPP      = syscall.Errno(0x5f)\n\tEOVERFLOW       = syscall.Errno(0x4b)\n\tEOWNERDEAD      = syscall.Errno(0x82)\n\tEPFNOSUPPORT    = syscall.Errno(0x60)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x5d)\n\tEPROTOTYPE      = syscall.Errno(0x5b)\n\tEREMCHG         = syscall.Errno(0x4e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x79)\n\tERESTART        = syscall.Errno(0x55)\n\tERFKILL         = syscall.Errno(0x84)\n\tESHUTDOWN       = syscall.Errno(0x6c)\n\tESOCKTNOSUPPORT = syscall.Errno(0x5e)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x74)\n\tESTRPIPE        = syscall.Errno(0x56)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x6e)\n\tETOOMANYREFS    = syscall.Errno(0x6d)\n\tEUCLEAN         = syscall.Errno(0x75)\n\tEUNATCH         = syscall.Errno(0x31)\n\tEUSERS          = syscall.Errno(0x57)\n\tEXFULL          = syscall.Errno(0x36)\n)\n\n// Signals\nconst (\n\tSIGBUS    = syscall.Signal(0x7)\n\tSIGCHLD   = syscall.Signal(0x11)\n\tSIGCLD    = syscall.Signal(0x11)\n\tSIGCONT   = syscall.Signal(0x12)\n\tSIGIO     = syscall.Signal(0x1d)\n\tSIGPOLL   = syscall.Signal(0x1d)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x1e)\n\tSIGSTKFLT = syscall.Signal(0x10)\n\tSIGSTOP   = syscall.Signal(0x13)\n\tSIGSYS    = syscall.Signal(0x1f)\n\tSIGTSTP   = syscall.Signal(0x14)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x17)\n\tSIGUSR1   = syscall.Signal(0xa)\n\tSIGUSR2   = syscall.Signal(0xc)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{36, \"ENAMETOOLONG\", \"file name too long\"},\n\t{37, \"ENOLCK\", \"no locks available\"},\n\t{38, \"ENOSYS\", \"function not implemented\"},\n\t{39, \"ENOTEMPTY\", \"directory not empty\"},\n\t{40, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{42, \"ENOMSG\", \"no message of desired type\"},\n\t{43, \"EIDRM\", \"identifier removed\"},\n\t{44, \"ECHRNG\", \"channel number out of range\"},\n\t{45, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{46, \"EL3HLT\", \"level 3 halted\"},\n\t{47, \"EL3RST\", \"level 3 reset\"},\n\t{48, \"ELNRNG\", \"link number out of range\"},\n\t{49, \"EUNATCH\", \"protocol driver not attached\"},\n\t{50, \"ENOCSI\", \"no CSI structure available\"},\n\t{51, \"EL2HLT\", \"level 2 halted\"},\n\t{52, \"EBADE\", \"invalid exchange\"},\n\t{53, \"EBADR\", \"invalid request descriptor\"},\n\t{54, \"EXFULL\", \"exchange full\"},\n\t{55, \"ENOANO\", \"no anode\"},\n\t{56, \"EBADRQC\", \"invalid request code\"},\n\t{57, \"EBADSLT\", \"invalid slot\"},\n\t{58, \"EDEADLOCK\", \"file locking deadlock error\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{72, \"EMULTIHOP\", \"multihop attempted\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EBADMSG\", \"bad message\"},\n\t{75, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{76, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{77, \"EBADFD\", \"file descriptor in bad state\"},\n\t{78, \"EREMCHG\", \"remote address changed\"},\n\t{79, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{80, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{81, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{82, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{83, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{84, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{85, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{86, \"ESTRPIPE\", \"streams pipe error\"},\n\t{87, \"EUSERS\", \"too many users\"},\n\t{88, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{89, \"EDESTADDRREQ\", \"destination address required\"},\n\t{90, \"EMSGSIZE\", \"message too long\"},\n\t{91, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{92, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{93, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{94, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{95, \"ENOTSUP\", \"operation not supported\"},\n\t{96, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{97, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{98, \"EADDRINUSE\", \"address already in use\"},\n\t{99, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{100, \"ENETDOWN\", \"network is down\"},\n\t{101, \"ENETUNREACH\", \"network is unreachable\"},\n\t{102, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{103, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{104, \"ECONNRESET\", \"connection reset by peer\"},\n\t{105, \"ENOBUFS\", \"no buffer space available\"},\n\t{106, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{107, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{108, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{109, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{110, \"ETIMEDOUT\", \"connection timed out\"},\n\t{111, \"ECONNREFUSED\", \"connection refused\"},\n\t{112, \"EHOSTDOWN\", \"host is down\"},\n\t{113, \"EHOSTUNREACH\", \"no route to host\"},\n\t{114, \"EALREADY\", \"operation already in progress\"},\n\t{115, \"EINPROGRESS\", \"operation now in progress\"},\n\t{116, \"ESTALE\", \"stale file handle\"},\n\t{117, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{118, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{119, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{120, \"EISNAM\", \"is a named type file\"},\n\t{121, \"EREMOTEIO\", \"remote I/O error\"},\n\t{122, \"EDQUOT\", \"disk quota exceeded\"},\n\t{123, \"ENOMEDIUM\", \"no medium found\"},\n\t{124, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{125, \"ECANCELED\", \"operation canceled\"},\n\t{126, \"ENOKEY\", \"required key not available\"},\n\t{127, \"EKEYEXPIRED\", \"key has expired\"},\n\t{128, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{129, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{130, \"EOWNERDEAD\", \"owner died\"},\n\t{131, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{132, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{133, \"EHWPOISON\", \"memory page has hardware error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGBUS\", \"bus error\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGUSR1\", \"user defined signal 1\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGUSR2\", \"user defined signal 2\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGSTKFLT\", \"stack fault\"},\n\t{17, \"SIGCHLD\", \"child exited\"},\n\t{18, \"SIGCONT\", \"continued\"},\n\t{19, \"SIGSTOP\", \"stopped (signal)\"},\n\t{20, \"SIGTSTP\", \"stopped\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGURG\", \"urgent I/O condition\"},\n\t{24, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"file size limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window changed\"},\n\t{29, \"SIGIO\", \"I/O possible\"},\n\t{30, \"SIGPWR\", \"power failure\"},\n\t{31, \"SIGSYS\", \"bad system call\"},\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/ppc64le/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc64le && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/ppc64le/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x17\n\tB115200                          = 0x11\n\tB1152000                         = 0x18\n\tB1500000                         = 0x19\n\tB2000000                         = 0x1a\n\tB230400                          = 0x12\n\tB2500000                         = 0x1b\n\tB3000000                         = 0x1c\n\tB3500000                         = 0x1d\n\tB4000000                         = 0x1e\n\tB460800                          = 0x13\n\tB500000                          = 0x14\n\tB57600                           = 0x10\n\tB576000                          = 0x15\n\tB921600                          = 0x16\n\tBLKALIGNOFF                      = 0x2000127a\n\tBLKBSZGET                        = 0x40081270\n\tBLKBSZSET                        = 0x80081271\n\tBLKDISCARD                       = 0x20001277\n\tBLKDISCARDZEROES                 = 0x2000127c\n\tBLKFLSBUF                        = 0x20001261\n\tBLKFRAGET                        = 0x20001265\n\tBLKFRASET                        = 0x20001264\n\tBLKGETDISKSEQ                    = 0x40081280\n\tBLKGETSIZE                       = 0x20001260\n\tBLKGETSIZE64                     = 0x40081272\n\tBLKIOMIN                         = 0x20001278\n\tBLKIOOPT                         = 0x20001279\n\tBLKPBSZGET                       = 0x2000127b\n\tBLKRAGET                         = 0x20001263\n\tBLKRASET                         = 0x20001262\n\tBLKROGET                         = 0x2000125e\n\tBLKROSET                         = 0x2000125d\n\tBLKROTATIONAL                    = 0x2000127e\n\tBLKRRPART                        = 0x2000125f\n\tBLKSECDISCARD                    = 0x2000127d\n\tBLKSECTGET                       = 0x20001267\n\tBLKSECTSET                       = 0x20001266\n\tBLKSSZGET                        = 0x20001268\n\tBLKZEROOUT                       = 0x2000127f\n\tBOTHER                           = 0x1f\n\tBS1                              = 0x8000\n\tBSDLY                            = 0x8000\n\tCBAUD                            = 0xff\n\tCBAUDEX                          = 0x0\n\tCIBAUD                           = 0xff0000\n\tCLOCAL                           = 0x8000\n\tCR1                              = 0x1000\n\tCR2                              = 0x2000\n\tCR3                              = 0x3000\n\tCRDLY                            = 0x3000\n\tCREAD                            = 0x800\n\tCS6                              = 0x100\n\tCS7                              = 0x200\n\tCS8                              = 0x300\n\tCSIZE                            = 0x300\n\tCSTOPB                           = 0x400\n\tDM_MPATH_PROBE_PATHS             = 0x2000fd12\n\tECCGETLAYOUT                     = 0x41484d11\n\tECCGETSTATS                      = 0x40104d12\n\tECHOCTL                          = 0x40\n\tECHOE                            = 0x2\n\tECHOK                            = 0x4\n\tECHOKE                           = 0x1\n\tECHONL                           = 0x10\n\tECHOPRT                          = 0x20\n\tEFD_CLOEXEC                      = 0x80000\n\tEFD_NONBLOCK                     = 0x800\n\tEPIOCGPARAMS                     = 0x40088a02\n\tEPIOCSPARAMS                     = 0x80088a01\n\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000000\n\tFF1                              = 0x4000\n\tFFDLY                            = 0x4000\n\tFICLONE                          = 0x80049409\n\tFICLONERANGE                     = 0x8020940d\n\tFLUSHO                           = 0x800000\n\tFS_IOC_ENABLE_VERITY             = 0x80806685\n\tFS_IOC_GETFLAGS                  = 0x40086601\n\tFS_IOC_GET_ENCRYPTION_NONCE      = 0x4010661b\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x800c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x80106614\n\tFS_IOC_SETFLAGS                  = 0x80086602\n\tFS_IOC_SET_ENCRYPTION_POLICY     = 0x400c6613\n\tF_GETLK                          = 0x5\n\tF_GETLK64                        = 0xc\n\tF_GETOWN                         = 0x9\n\tF_RDLCK                          = 0x0\n\tF_SETLK                          = 0x6\n\tF_SETLK64                        = 0xd\n\tF_SETLKW                         = 0x7\n\tF_SETLKW64                       = 0xe\n\tF_SETOWN                         = 0x8\n\tF_UNLCK                          = 0x2\n\tF_WRLCK                          = 0x1\n\tHIDIOCGRAWINFO                   = 0x40084803\n\tHIDIOCGRDESC                     = 0x50044802\n\tHIDIOCGRDESCSIZE                 = 0x40044801\n\tHIDIOCREVOKE                     = 0x8004480d\n\tHUPCL                            = 0x4000\n\tICANON                           = 0x100\n\tIEXTEN                           = 0x400\n\tIN_CLOEXEC                       = 0x80000\n\tIN_NONBLOCK                      = 0x800\n\tIOCTL_MEI_NOTIFY_GET             = 0x40044803\n\tIOCTL_MEI_NOTIFY_SET             = 0x80044802\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x200007b9\n\tIPV6_FLOWINFO_MASK               = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK              = 0xffff0f00\n\tISIG                             = 0x80\n\tIUCLC                            = 0x1000\n\tIXOFF                            = 0x400\n\tIXON                             = 0x200\n\tMAP_ANON                         = 0x20\n\tMAP_ANONYMOUS                    = 0x20\n\tMAP_DENYWRITE                    = 0x800\n\tMAP_EXECUTABLE                   = 0x1000\n\tMAP_GROWSDOWN                    = 0x100\n\tMAP_HUGETLB                      = 0x40000\n\tMAP_LOCKED                       = 0x80\n\tMAP_NONBLOCK                     = 0x10000\n\tMAP_NORESERVE                    = 0x40\n\tMAP_POPULATE                     = 0x8000\n\tMAP_STACK                        = 0x20000\n\tMAP_SYNC                         = 0x80000\n\tMCL_CURRENT                      = 0x2000\n\tMCL_FUTURE                       = 0x4000\n\tMCL_ONFAULT                      = 0x8000\n\tMEMERASE                         = 0x80084d02\n\tMEMERASE64                       = 0x80104d14\n\tMEMGETBADBLOCK                   = 0x80084d0b\n\tMEMGETINFO                       = 0x40204d01\n\tMEMGETOOBSEL                     = 0x40c84d0a\n\tMEMGETREGIONCOUNT                = 0x40044d07\n\tMEMISLOCKED                      = 0x40084d17\n\tMEMLOCK                          = 0x80084d05\n\tMEMREAD                          = 0xc0404d1a\n\tMEMREADOOB                       = 0xc0104d04\n\tMEMSETBADBLOCK                   = 0x80084d0c\n\tMEMUNLOCK                        = 0x80084d06\n\tMEMWRITEOOB                      = 0xc0104d03\n\tMTDFILEMODE                      = 0x20004d13\n\tNFDBITS                          = 0x40\n\tNL2                              = 0x200\n\tNL3                              = 0x300\n\tNLDLY                            = 0x300\n\tNOFLSH                           = 0x80000000\n\tNS_GET_MNTNS_ID                  = 0x4008b705\n\tNS_GET_NSTYPE                    = 0x2000b703\n\tNS_GET_OWNER_UID                 = 0x2000b704\n\tNS_GET_PARENT                    = 0x2000b702\n\tNS_GET_PID_FROM_PIDNS            = 0x4004b706\n\tNS_GET_PID_IN_PIDNS              = 0x4004b708\n\tNS_GET_TGID_FROM_PIDNS           = 0x4004b707\n\tNS_GET_TGID_IN_PIDNS             = 0x4004b709\n\tNS_GET_USERNS                    = 0x2000b701\n\tOLCUC                            = 0x4\n\tONLCR                            = 0x2\n\tOTPERASE                         = 0x800c4d19\n\tOTPGETREGIONCOUNT                = 0x80044d0e\n\tOTPGETREGIONINFO                 = 0x800c4d0f\n\tOTPLOCK                          = 0x400c4d10\n\tOTPSELECT                        = 0x40044d0d\n\tO_APPEND                         = 0x400\n\tO_ASYNC                          = 0x2000\n\tO_CLOEXEC                        = 0x80000\n\tO_CREAT                          = 0x40\n\tO_DIRECT                         = 0x20000\n\tO_DIRECTORY                      = 0x4000\n\tO_DSYNC                          = 0x1000\n\tO_EXCL                           = 0x80\n\tO_FSYNC                          = 0x101000\n\tO_LARGEFILE                      = 0x0\n\tO_NDELAY                         = 0x800\n\tO_NOATIME                        = 0x40000\n\tO_NOCTTY                         = 0x100\n\tO_NOFOLLOW                       = 0x8000\n\tO_NONBLOCK                       = 0x800\n\tO_PATH                           = 0x200000\n\tO_RSYNC                          = 0x101000\n\tO_SYNC                           = 0x101000\n\tO_TMPFILE                        = 0x404000\n\tO_TRUNC                          = 0x200\n\tPARENB                           = 0x1000\n\tPARODD                           = 0x2000\n\tPENDIN                           = 0x20000000\n\tPERF_EVENT_IOC_DISABLE           = 0x20002401\n\tPERF_EVENT_IOC_ENABLE            = 0x20002400\n\tPERF_EVENT_IOC_ID                = 0x40082407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8008240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT      = 0x80042409\n\tPERF_EVENT_IOC_PERIOD            = 0x80082404\n\tPERF_EVENT_IOC_QUERY_BPF         = 0xc008240a\n\tPERF_EVENT_IOC_REFRESH           = 0x20002402\n\tPERF_EVENT_IOC_RESET             = 0x20002403\n\tPERF_EVENT_IOC_SET_BPF           = 0x80042408\n\tPERF_EVENT_IOC_SET_FILTER        = 0x80082406\n\tPERF_EVENT_IOC_SET_OUTPUT        = 0x20002405\n\tPPPIOCATTACH                     = 0x8004743d\n\tPPPIOCATTCHAN                    = 0x80047438\n\tPPPIOCBRIDGECHAN                 = 0x80047435\n\tPPPIOCCONNECT                    = 0x8004743a\n\tPPPIOCDETACH                     = 0x8004743c\n\tPPPIOCDISCONN                    = 0x20007439\n\tPPPIOCGASYNCMAP                  = 0x40047458\n\tPPPIOCGCHAN                      = 0x40047437\n\tPPPIOCGDEBUG                     = 0x40047441\n\tPPPIOCGFLAGS                     = 0x4004745a\n\tPPPIOCGIDLE                      = 0x4010743f\n\tPPPIOCGIDLE32                    = 0x4008743f\n\tPPPIOCGIDLE64                    = 0x4010743f\n\tPPPIOCGL2TPSTATS                 = 0x40487436\n\tPPPIOCGMRU                       = 0x40047453\n\tPPPIOCGRASYNCMAP                 = 0x40047455\n\tPPPIOCGUNIT                      = 0x40047456\n\tPPPIOCGXASYNCMAP                 = 0x40207450\n\tPPPIOCSACTIVE                    = 0x80107446\n\tPPPIOCSASYNCMAP                  = 0x80047457\n\tPPPIOCSCOMPRESS                  = 0x8010744d\n\tPPPIOCSDEBUG                     = 0x80047440\n\tPPPIOCSFLAGS                     = 0x80047459\n\tPPPIOCSMAXCID                    = 0x80047451\n\tPPPIOCSMRRU                      = 0x8004743b\n\tPPPIOCSMRU                       = 0x80047452\n\tPPPIOCSNPMODE                    = 0x8008744b\n\tPPPIOCSPASS                      = 0x80107447\n\tPPPIOCSRASYNCMAP                 = 0x80047454\n\tPPPIOCSXASYNCMAP                 = 0x8020744f\n\tPPPIOCUNBRIDGECHAN               = 0x20007434\n\tPPPIOCXFERUNIT                   = 0x2000744e\n\tPROT_SAO                         = 0x10\n\tPR_SET_PTRACER_ANY               = 0xffffffffffffffff\n\tPTP_CLOCK_GETCAPS                = 0x40503d01\n\tPTP_CLOCK_GETCAPS2               = 0x40503d0a\n\tPTP_ENABLE_PPS                   = 0x80043d04\n\tPTP_ENABLE_PPS2                  = 0x80043d0d\n\tPTP_EXTTS_REQUEST                = 0x80103d02\n\tPTP_EXTTS_REQUEST2               = 0x80103d0b\n\tPTP_MASK_CLEAR_ALL               = 0x20003d13\n\tPTP_MASK_EN_SINGLE               = 0x80043d14\n\tPTP_PEROUT_REQUEST               = 0x80383d03\n\tPTP_PEROUT_REQUEST2              = 0x80383d0c\n\tPTP_PIN_SETFUNC                  = 0x80603d07\n\tPTP_PIN_SETFUNC2                 = 0x80603d10\n\tPTP_SYS_OFFSET                   = 0x83403d05\n\tPTP_SYS_OFFSET2                  = 0x83403d0e\n\tPTRACE_GETEVRREGS                = 0x14\n\tPTRACE_GETFPREGS                 = 0xe\n\tPTRACE_GETREGS64                 = 0x16\n\tPTRACE_GETVRREGS                 = 0x12\n\tPTRACE_GETVSRREGS                = 0x1b\n\tPTRACE_GET_DEBUGREG              = 0x19\n\tPTRACE_SETEVRREGS                = 0x15\n\tPTRACE_SETFPREGS                 = 0xf\n\tPTRACE_SETREGS64                 = 0x17\n\tPTRACE_SETVRREGS                 = 0x13\n\tPTRACE_SETVSRREGS                = 0x1c\n\tPTRACE_SET_DEBUGREG              = 0x1a\n\tPTRACE_SINGLEBLOCK               = 0x100\n\tPTRACE_SYSEMU                    = 0x1d\n\tPTRACE_SYSEMU_SINGLESTEP         = 0x1e\n\tPT_CCR                           = 0x26\n\tPT_CTR                           = 0x23\n\tPT_DAR                           = 0x29\n\tPT_DSCR                          = 0x2c\n\tPT_DSISR                         = 0x2a\n\tPT_FPR0                          = 0x30\n\tPT_FPSCR                         = 0x50\n\tPT_LNK                           = 0x24\n\tPT_MSR                           = 0x21\n\tPT_NIP                           = 0x20\n\tPT_ORIG_R3                       = 0x22\n\tPT_R0                            = 0x0\n\tPT_R1                            = 0x1\n\tPT_R10                           = 0xa\n\tPT_R11                           = 0xb\n\tPT_R12                           = 0xc\n\tPT_R13                           = 0xd\n\tPT_R14                           = 0xe\n\tPT_R15                           = 0xf\n\tPT_R16                           = 0x10\n\tPT_R17                           = 0x11\n\tPT_R18                           = 0x12\n\tPT_R19                           = 0x13\n\tPT_R2                            = 0x2\n\tPT_R20                           = 0x14\n\tPT_R21                           = 0x15\n\tPT_R22                           = 0x16\n\tPT_R23                           = 0x17\n\tPT_R24                           = 0x18\n\tPT_R25                           = 0x19\n\tPT_R26                           = 0x1a\n\tPT_R27                           = 0x1b\n\tPT_R28                           = 0x1c\n\tPT_R29                           = 0x1d\n\tPT_R3                            = 0x3\n\tPT_R30                           = 0x1e\n\tPT_R31                           = 0x1f\n\tPT_R4                            = 0x4\n\tPT_R5                            = 0x5\n\tPT_R6                            = 0x6\n\tPT_R7                            = 0x7\n\tPT_R8                            = 0x8\n\tPT_R9                            = 0x9\n\tPT_REGS_COUNT                    = 0x2c\n\tPT_RESULT                        = 0x2b\n\tPT_SOFTE                         = 0x27\n\tPT_TRAP                          = 0x28\n\tPT_VR0                           = 0x52\n\tPT_VRSAVE                        = 0x94\n\tPT_VSCR                          = 0x93\n\tPT_VSR0                          = 0x96\n\tPT_VSR31                         = 0xd4\n\tPT_XER                           = 0x25\n\tRLIMIT_AS                        = 0x9\n\tRLIMIT_MEMLOCK                   = 0x8\n\tRLIMIT_NOFILE                    = 0x7\n\tRLIMIT_NPROC                     = 0x6\n\tRLIMIT_RSS                       = 0x5\n\tRNDADDENTROPY                    = 0x80085203\n\tRNDADDTOENTCNT                   = 0x80045201\n\tRNDCLEARPOOL                     = 0x20005206\n\tRNDGETENTCNT                     = 0x40045200\n\tRNDGETPOOL                       = 0x40085202\n\tRNDRESEEDCRNG                    = 0x20005207\n\tRNDZAPENTCNT                     = 0x20005204\n\tRTC_AIE_OFF                      = 0x20007002\n\tRTC_AIE_ON                       = 0x20007001\n\tRTC_ALM_READ                     = 0x40247008\n\tRTC_ALM_SET                      = 0x80247007\n\tRTC_EPOCH_READ                   = 0x4008700d\n\tRTC_EPOCH_SET                    = 0x8008700e\n\tRTC_IRQP_READ                    = 0x4008700b\n\tRTC_IRQP_SET                     = 0x8008700c\n\tRTC_PARAM_GET                    = 0x80187013\n\tRTC_PARAM_SET                    = 0x80187014\n\tRTC_PIE_OFF                      = 0x20007006\n\tRTC_PIE_ON                       = 0x20007005\n\tRTC_PLL_GET                      = 0x40207011\n\tRTC_PLL_SET                      = 0x80207012\n\tRTC_RD_TIME                      = 0x40247009\n\tRTC_SET_TIME                     = 0x8024700a\n\tRTC_UIE_OFF                      = 0x20007004\n\tRTC_UIE_ON                       = 0x20007003\n\tRTC_VL_CLR                       = 0x20007014\n\tRTC_VL_READ                      = 0x40047013\n\tRTC_WIE_OFF                      = 0x20007010\n\tRTC_WIE_ON                       = 0x2000700f\n\tRTC_WKALM_RD                     = 0x40287010\n\tRTC_WKALM_SET                    = 0x8028700f\n\tSCM_DEVMEM_DMABUF                = 0x4f\n\tSCM_DEVMEM_LINEAR                = 0x4e\n\tSCM_TIMESTAMPING                 = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS       = 0x36\n\tSCM_TIMESTAMPING_PKTINFO         = 0x3a\n\tSCM_TIMESTAMPNS                  = 0x23\n\tSCM_TS_OPT_ID                    = 0x51\n\tSCM_TXTIME                       = 0x3d\n\tSCM_WIFI_STATUS                  = 0x29\n\tSECCOMP_IOCTL_NOTIF_ADDFD        = 0x80182103\n\tSECCOMP_IOCTL_NOTIF_ID_VALID     = 0x80082102\n\tSECCOMP_IOCTL_NOTIF_SET_FLAGS    = 0x80082104\n\tSFD_CLOEXEC                      = 0x80000\n\tSFD_NONBLOCK                     = 0x800\n\tSIOCATMARK                       = 0x8905\n\tSIOCGPGRP                        = 0x8904\n\tSIOCGSTAMPNS_NEW                 = 0x40108907\n\tSIOCGSTAMP_NEW                   = 0x40108906\n\tSIOCINQ                          = 0x4004667f\n\tSIOCOUTQ                         = 0x40047473\n\tSIOCSPGRP                        = 0x8902\n\tSOCK_CLOEXEC                     = 0x80000\n\tSOCK_DGRAM                       = 0x2\n\tSOCK_NONBLOCK                    = 0x800\n\tSOCK_STREAM                      = 0x1\n\tSOL_SOCKET                       = 0x1\n\tSO_ACCEPTCONN                    = 0x1e\n\tSO_ATTACH_BPF                    = 0x32\n\tSO_ATTACH_REUSEPORT_CBPF         = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF         = 0x34\n\tSO_BINDTODEVICE                  = 0x19\n\tSO_BINDTOIFINDEX                 = 0x3e\n\tSO_BPF_EXTENSIONS                = 0x30\n\tSO_BROADCAST                     = 0x6\n\tSO_BSDCOMPAT                     = 0xe\n\tSO_BUF_LOCK                      = 0x48\n\tSO_BUSY_POLL                     = 0x2e\n\tSO_BUSY_POLL_BUDGET              = 0x46\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\n\tSO_DEVMEM_DMABUF                 = 0x4f\n\tSO_DEVMEM_DONTNEED               = 0x50\n\tSO_DEVMEM_LINEAR                 = 0x4e\n\tSO_DOMAIN                        = 0x27\n\tSO_DONTROUTE                     = 0x5\n\tSO_ERROR                         = 0x4\n\tSO_INCOMING_CPU                  = 0x31\n\tSO_INCOMING_NAPI_ID              = 0x38\n\tSO_KEEPALIVE                     = 0x9\n\tSO_LINGER                        = 0xd\n\tSO_LOCK_FILTER                   = 0x2c\n\tSO_MARK                          = 0x24\n\tSO_MAX_PACING_RATE               = 0x2f\n\tSO_MEMINFO                       = 0x37\n\tSO_NETNS_COOKIE                  = 0x47\n\tSO_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0xa\n\tSO_PASSCRED                      = 0x14\n\tSO_PASSPIDFD                     = 0x4c\n\tSO_PASSRIGHTS                    = 0x53\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x15\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERPIDFD                     = 0x4d\n\tSO_PEERSEC                       = 0x1f\n\tSO_PREFER_BUSY_POLL              = 0x45\n\tSO_PROTOCOL                      = 0x26\n\tSO_RCVBUF                        = 0x8\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x10\n\tSO_RCVMARK                       = 0x4b\n\tSO_RCVPRIORITY                   = 0x52\n\tSO_RCVTIMEO                      = 0x12\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x12\n\tSO_RESERVE_MEM                   = 0x49\n\tSO_REUSEADDR                     = 0x2\n\tSO_REUSEPORT                     = 0xf\n\tSO_RXQ_OVFL                      = 0x28\n\tSO_SECURITY_AUTHENTICATION       = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK   = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT = 0x17\n\tSO_SELECT_ERR_QUEUE              = 0x2d\n\tSO_SNDBUF                        = 0x7\n\tSO_SNDBUFFORCE                   = 0x20\n\tSO_SNDLOWAT                      = 0x11\n\tSO_SNDTIMEO                      = 0x13\n\tSO_SNDTIMEO_NEW                  = 0x43\n\tSO_SNDTIMEO_OLD                  = 0x13\n\tSO_TIMESTAMPING                  = 0x25\n\tSO_TIMESTAMPING_NEW              = 0x41\n\tSO_TIMESTAMPING_OLD              = 0x25\n\tSO_TIMESTAMPNS                   = 0x23\n\tSO_TIMESTAMPNS_NEW               = 0x40\n\tSO_TIMESTAMPNS_OLD               = 0x23\n\tSO_TIMESTAMP_NEW                 = 0x3f\n\tSO_TXREHASH                      = 0x4a\n\tSO_TXTIME                        = 0x3d\n\tSO_TYPE                          = 0x3\n\tSO_WIFI_STATUS                   = 0x29\n\tSO_ZEROCOPY                      = 0x3c\n\tTAB1                             = 0x400\n\tTAB2                             = 0x800\n\tTAB3                             = 0xc00\n\tTABDLY                           = 0xc00\n\tTCFLSH                           = 0x2000741f\n\tTCGETA                           = 0x40147417\n\tTCGETS                           = 0x402c7413\n\tTCSAFLUSH                        = 0x2\n\tTCSBRK                           = 0x2000741d\n\tTCSBRKP                          = 0x5425\n\tTCSETA                           = 0x80147418\n\tTCSETAF                          = 0x8014741c\n\tTCSETAW                          = 0x80147419\n\tTCSETS                           = 0x802c7414\n\tTCSETSF                          = 0x802c7416\n\tTCSETSW                          = 0x802c7415\n\tTCXONC                           = 0x2000741e\n\tTFD_CLOEXEC                      = 0x80000\n\tTFD_NONBLOCK                     = 0x800\n\tTIOCCBRK                         = 0x5428\n\tTIOCCONS                         = 0x541d\n\tTIOCEXCL                         = 0x540c\n\tTIOCGDEV                         = 0x40045432\n\tTIOCGETC                         = 0x40067412\n\tTIOCGETD                         = 0x5424\n\tTIOCGETP                         = 0x40067408\n\tTIOCGEXCL                        = 0x40045440\n\tTIOCGICOUNT                      = 0x545d\n\tTIOCGISO7816                     = 0x40285442\n\tTIOCGLCKTRMIOS                   = 0x5456\n\tTIOCGLTC                         = 0x40067474\n\tTIOCGPGRP                        = 0x40047477\n\tTIOCGPKT                         = 0x40045438\n\tTIOCGPTLCK                       = 0x40045439\n\tTIOCGPTN                         = 0x40045430\n\tTIOCGPTPEER                      = 0x20005441\n\tTIOCGRS485                       = 0x542e\n\tTIOCGSERIAL                      = 0x541e\n\tTIOCGSID                         = 0x5429\n\tTIOCGSOFTCAR                     = 0x5419\n\tTIOCGWINSZ                       = 0x40087468\n\tTIOCINQ                          = 0x4004667f\n\tTIOCLINUX                        = 0x541c\n\tTIOCMBIC                         = 0x5417\n\tTIOCMBIS                         = 0x5416\n\tTIOCMGET                         = 0x5415\n\tTIOCMIWAIT                       = 0x545c\n\tTIOCMSET                         = 0x5418\n\tTIOCM_CAR                        = 0x40\n\tTIOCM_CD                         = 0x40\n\tTIOCM_CTS                        = 0x20\n\tTIOCM_DSR                        = 0x100\n\tTIOCM_LOOP                       = 0x8000\n\tTIOCM_OUT1                       = 0x2000\n\tTIOCM_OUT2                       = 0x4000\n\tTIOCM_RI                         = 0x80\n\tTIOCM_RNG                        = 0x80\n\tTIOCM_SR                         = 0x10\n\tTIOCM_ST                         = 0x8\n\tTIOCNOTTY                        = 0x5422\n\tTIOCNXCL                         = 0x540d\n\tTIOCOUTQ                         = 0x40047473\n\tTIOCPKT                          = 0x5420\n\tTIOCSBRK                         = 0x5427\n\tTIOCSCTTY                        = 0x540e\n\tTIOCSERCONFIG                    = 0x5453\n\tTIOCSERGETLSR                    = 0x5459\n\tTIOCSERGETMULTI                  = 0x545a\n\tTIOCSERGSTRUCT                   = 0x5458\n\tTIOCSERGWILD                     = 0x5454\n\tTIOCSERSETMULTI                  = 0x545b\n\tTIOCSERSWILD                     = 0x5455\n\tTIOCSER_TEMT                     = 0x1\n\tTIOCSETC                         = 0x80067411\n\tTIOCSETD                         = 0x5423\n\tTIOCSETN                         = 0x8006740a\n\tTIOCSETP                         = 0x80067409\n\tTIOCSIG                          = 0x80045436\n\tTIOCSISO7816                     = 0xc0285443\n\tTIOCSLCKTRMIOS                   = 0x5457\n\tTIOCSLTC                         = 0x80067475\n\tTIOCSPGRP                        = 0x80047476\n\tTIOCSPTLCK                       = 0x80045431\n\tTIOCSRS485                       = 0x542f\n\tTIOCSSERIAL                      = 0x541f\n\tTIOCSSOFTCAR                     = 0x541a\n\tTIOCSTART                        = 0x2000746e\n\tTIOCSTI                          = 0x5412\n\tTIOCSTOP                         = 0x2000746f\n\tTIOCSWINSZ                       = 0x80087467\n\tTIOCVHANGUP                      = 0x5437\n\tTOSTOP                           = 0x400000\n\tTUNATTACHFILTER                  = 0x801054d5\n\tTUNDETACHFILTER                  = 0x801054d6\n\tTUNGETDEVNETNS                   = 0x200054e3\n\tTUNGETFEATURES                   = 0x400454cf\n\tTUNGETFILTER                     = 0x401054db\n\tTUNGETIFF                        = 0x400454d2\n\tTUNGETSNDBUF                     = 0x400454d3\n\tTUNGETVNETBE                     = 0x400454df\n\tTUNGETVNETHDRSZ                  = 0x400454d7\n\tTUNGETVNETLE                     = 0x400454dd\n\tTUNSETCARRIER                    = 0x800454e2\n\tTUNSETDEBUG                      = 0x800454c9\n\tTUNSETFILTEREBPF                 = 0x400454e1\n\tTUNSETGROUP                      = 0x800454ce\n\tTUNSETIFF                        = 0x800454ca\n\tTUNSETIFINDEX                    = 0x800454da\n\tTUNSETLINK                       = 0x800454cd\n\tTUNSETNOCSUM                     = 0x800454c8\n\tTUNSETOFFLOAD                    = 0x800454d0\n\tTUNSETOWNER                      = 0x800454cc\n\tTUNSETPERSIST                    = 0x800454cb\n\tTUNSETQUEUE                      = 0x800454d9\n\tTUNSETSNDBUF                     = 0x800454d4\n\tTUNSETSTEERINGEBPF               = 0x400454e0\n\tTUNSETTXFILTER                   = 0x800454d1\n\tTUNSETVNETBE                     = 0x800454de\n\tTUNSETVNETHDRSZ                  = 0x800454d8\n\tTUNSETVNETLE                     = 0x800454dc\n\tUBI_IOCATT                       = 0x80186f40\n\tUBI_IOCDET                       = 0x80046f41\n\tUBI_IOCEBCH                      = 0x80044f02\n\tUBI_IOCEBER                      = 0x80044f01\n\tUBI_IOCEBISMAP                   = 0x40044f05\n\tUBI_IOCEBMAP                     = 0x80084f03\n\tUBI_IOCEBUNMAP                   = 0x80044f04\n\tUBI_IOCMKVOL                     = 0x80986f00\n\tUBI_IOCRMVOL                     = 0x80046f01\n\tUBI_IOCRNVOL                     = 0x91106f03\n\tUBI_IOCRPEB                      = 0x80046f04\n\tUBI_IOCRSVOL                     = 0x800c6f02\n\tUBI_IOCSETVOLPROP                = 0x80104f06\n\tUBI_IOCSPEB                      = 0x80046f05\n\tUBI_IOCVOLCRBLK                  = 0x80804f07\n\tUBI_IOCVOLRMBLK                  = 0x20004f08\n\tUBI_IOCVOLUP                     = 0x80084f00\n\tVDISCARD                         = 0x10\n\tVEOF                             = 0x4\n\tVEOL                             = 0x6\n\tVEOL2                            = 0x8\n\tVMIN                             = 0x5\n\tVREPRINT                         = 0xb\n\tVSTART                           = 0xd\n\tVSTOP                            = 0xe\n\tVSUSP                            = 0xc\n\tVSWTC                            = 0x9\n\tVT1                              = 0x10000\n\tVTDLY                            = 0x10000\n\tVTIME                            = 0x7\n\tVWERASE                          = 0xa\n\tWDIOC_GETBOOTSTATUS              = 0x40045702\n\tWDIOC_GETPRETIMEOUT              = 0x40045709\n\tWDIOC_GETSTATUS                  = 0x40045701\n\tWDIOC_GETSUPPORT                 = 0x40285700\n\tWDIOC_GETTEMP                    = 0x40045703\n\tWDIOC_GETTIMELEFT                = 0x4004570a\n\tWDIOC_GETTIMEOUT                 = 0x40045707\n\tWDIOC_KEEPALIVE                  = 0x40045705\n\tWDIOC_SETOPTIONS                 = 0x40045704\n\tWORDSIZE                         = 0x40\n\tXCASE                            = 0x4000\n\tXTABS                            = 0xc00\n\t_HIDIOCGRAWNAME                  = 0x40804804\n\t_HIDIOCGRAWPHYS                  = 0x40404805\n\t_HIDIOCGRAWUNIQ                  = 0x40404808\n)\n\n// Errors\nconst (\n\tEADDRINUSE      = syscall.Errno(0x62)\n\tEADDRNOTAVAIL   = syscall.Errno(0x63)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x61)\n\tEALREADY        = syscall.Errno(0x72)\n\tEBADE           = syscall.Errno(0x34)\n\tEBADFD          = syscall.Errno(0x4d)\n\tEBADMSG         = syscall.Errno(0x4a)\n\tEBADR           = syscall.Errno(0x35)\n\tEBADRQC         = syscall.Errno(0x38)\n\tEBADSLT         = syscall.Errno(0x39)\n\tEBFONT          = syscall.Errno(0x3b)\n\tECANCELED       = syscall.Errno(0x7d)\n\tECHRNG          = syscall.Errno(0x2c)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x67)\n\tECONNREFUSED    = syscall.Errno(0x6f)\n\tECONNRESET      = syscall.Errno(0x68)\n\tEDEADLK         = syscall.Errno(0x23)\n\tEDEADLOCK       = syscall.Errno(0x3a)\n\tEDESTADDRREQ    = syscall.Errno(0x59)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x7a)\n\tEHOSTDOWN       = syscall.Errno(0x70)\n\tEHOSTUNREACH    = syscall.Errno(0x71)\n\tEHWPOISON       = syscall.Errno(0x85)\n\tEIDRM           = syscall.Errno(0x2b)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x73)\n\tEISCONN         = syscall.Errno(0x6a)\n\tEISNAM          = syscall.Errno(0x78)\n\tEKEYEXPIRED     = syscall.Errno(0x7f)\n\tEKEYREJECTED    = syscall.Errno(0x81)\n\tEKEYREVOKED     = syscall.Errno(0x80)\n\tEL2HLT          = syscall.Errno(0x33)\n\tEL2NSYNC        = syscall.Errno(0x2d)\n\tEL3HLT          = syscall.Errno(0x2e)\n\tEL3RST          = syscall.Errno(0x2f)\n\tELIBACC         = syscall.Errno(0x4f)\n\tELIBBAD         = syscall.Errno(0x50)\n\tELIBEXEC        = syscall.Errno(0x53)\n\tELIBMAX         = syscall.Errno(0x52)\n\tELIBSCN         = syscall.Errno(0x51)\n\tELNRNG          = syscall.Errno(0x30)\n\tELOOP           = syscall.Errno(0x28)\n\tEMEDIUMTYPE     = syscall.Errno(0x7c)\n\tEMSGSIZE        = syscall.Errno(0x5a)\n\tEMULTIHOP       = syscall.Errno(0x48)\n\tENAMETOOLONG    = syscall.Errno(0x24)\n\tENAVAIL         = syscall.Errno(0x77)\n\tENETDOWN        = syscall.Errno(0x64)\n\tENETRESET       = syscall.Errno(0x66)\n\tENETUNREACH     = syscall.Errno(0x65)\n\tENOANO          = syscall.Errno(0x37)\n\tENOBUFS         = syscall.Errno(0x69)\n\tENOCSI          = syscall.Errno(0x32)\n\tENODATA         = syscall.Errno(0x3d)\n\tENOKEY          = syscall.Errno(0x7e)\n\tENOLCK          = syscall.Errno(0x25)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x7b)\n\tENOMSG          = syscall.Errno(0x2a)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x5c)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x26)\n\tENOTCONN        = syscall.Errno(0x6b)\n\tENOTEMPTY       = syscall.Errno(0x27)\n\tENOTNAM         = syscall.Errno(0x76)\n\tENOTRECOVERABLE = syscall.Errno(0x83)\n\tENOTSOCK        = syscall.Errno(0x58)\n\tENOTSUP         = syscall.Errno(0x5f)\n\tENOTUNIQ        = syscall.Errno(0x4c)\n\tEOPNOTSUPP      = syscall.Errno(0x5f)\n\tEOVERFLOW       = syscall.Errno(0x4b)\n\tEOWNERDEAD      = syscall.Errno(0x82)\n\tEPFNOSUPPORT    = syscall.Errno(0x60)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x5d)\n\tEPROTOTYPE      = syscall.Errno(0x5b)\n\tEREMCHG         = syscall.Errno(0x4e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x79)\n\tERESTART        = syscall.Errno(0x55)\n\tERFKILL         = syscall.Errno(0x84)\n\tESHUTDOWN       = syscall.Errno(0x6c)\n\tESOCKTNOSUPPORT = syscall.Errno(0x5e)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x74)\n\tESTRPIPE        = syscall.Errno(0x56)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x6e)\n\tETOOMANYREFS    = syscall.Errno(0x6d)\n\tEUCLEAN         = syscall.Errno(0x75)\n\tEUNATCH         = syscall.Errno(0x31)\n\tEUSERS          = syscall.Errno(0x57)\n\tEXFULL          = syscall.Errno(0x36)\n)\n\n// Signals\nconst (\n\tSIGBUS    = syscall.Signal(0x7)\n\tSIGCHLD   = syscall.Signal(0x11)\n\tSIGCLD    = syscall.Signal(0x11)\n\tSIGCONT   = syscall.Signal(0x12)\n\tSIGIO     = syscall.Signal(0x1d)\n\tSIGPOLL   = syscall.Signal(0x1d)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x1e)\n\tSIGSTKFLT = syscall.Signal(0x10)\n\tSIGSTOP   = syscall.Signal(0x13)\n\tSIGSYS    = syscall.Signal(0x1f)\n\tSIGTSTP   = syscall.Signal(0x14)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x17)\n\tSIGUSR1   = syscall.Signal(0xa)\n\tSIGUSR2   = syscall.Signal(0xc)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{36, \"ENAMETOOLONG\", \"file name too long\"},\n\t{37, \"ENOLCK\", \"no locks available\"},\n\t{38, \"ENOSYS\", \"function not implemented\"},\n\t{39, \"ENOTEMPTY\", \"directory not empty\"},\n\t{40, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{42, \"ENOMSG\", \"no message of desired type\"},\n\t{43, \"EIDRM\", \"identifier removed\"},\n\t{44, \"ECHRNG\", \"channel number out of range\"},\n\t{45, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{46, \"EL3HLT\", \"level 3 halted\"},\n\t{47, \"EL3RST\", \"level 3 reset\"},\n\t{48, \"ELNRNG\", \"link number out of range\"},\n\t{49, \"EUNATCH\", \"protocol driver not attached\"},\n\t{50, \"ENOCSI\", \"no CSI structure available\"},\n\t{51, \"EL2HLT\", \"level 2 halted\"},\n\t{52, \"EBADE\", \"invalid exchange\"},\n\t{53, \"EBADR\", \"invalid request descriptor\"},\n\t{54, \"EXFULL\", \"exchange full\"},\n\t{55, \"ENOANO\", \"no anode\"},\n\t{56, \"EBADRQC\", \"invalid request code\"},\n\t{57, \"EBADSLT\", \"invalid slot\"},\n\t{58, \"EDEADLOCK\", \"file locking deadlock error\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{72, \"EMULTIHOP\", \"multihop attempted\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EBADMSG\", \"bad message\"},\n\t{75, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{76, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{77, \"EBADFD\", \"file descriptor in bad state\"},\n\t{78, \"EREMCHG\", \"remote address changed\"},\n\t{79, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{80, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{81, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{82, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{83, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{84, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{85, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{86, \"ESTRPIPE\", \"streams pipe error\"},\n\t{87, \"EUSERS\", \"too many users\"},\n\t{88, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{89, \"EDESTADDRREQ\", \"destination address required\"},\n\t{90, \"EMSGSIZE\", \"message too long\"},\n\t{91, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{92, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{93, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{94, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{95, \"ENOTSUP\", \"operation not supported\"},\n\t{96, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{97, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{98, \"EADDRINUSE\", \"address already in use\"},\n\t{99, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{100, \"ENETDOWN\", \"network is down\"},\n\t{101, \"ENETUNREACH\", \"network is unreachable\"},\n\t{102, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{103, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{104, \"ECONNRESET\", \"connection reset by peer\"},\n\t{105, \"ENOBUFS\", \"no buffer space available\"},\n\t{106, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{107, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{108, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{109, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{110, \"ETIMEDOUT\", \"connection timed out\"},\n\t{111, \"ECONNREFUSED\", \"connection refused\"},\n\t{112, \"EHOSTDOWN\", \"host is down\"},\n\t{113, \"EHOSTUNREACH\", \"no route to host\"},\n\t{114, \"EALREADY\", \"operation already in progress\"},\n\t{115, \"EINPROGRESS\", \"operation now in progress\"},\n\t{116, \"ESTALE\", \"stale file handle\"},\n\t{117, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{118, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{119, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{120, \"EISNAM\", \"is a named type file\"},\n\t{121, \"EREMOTEIO\", \"remote I/O error\"},\n\t{122, \"EDQUOT\", \"disk quota exceeded\"},\n\t{123, \"ENOMEDIUM\", \"no medium found\"},\n\t{124, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{125, \"ECANCELED\", \"operation canceled\"},\n\t{126, \"ENOKEY\", \"required key not available\"},\n\t{127, \"EKEYEXPIRED\", \"key has expired\"},\n\t{128, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{129, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{130, \"EOWNERDEAD\", \"owner died\"},\n\t{131, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{132, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{133, \"EHWPOISON\", \"memory page has hardware error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGBUS\", \"bus error\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGUSR1\", \"user defined signal 1\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGUSR2\", \"user defined signal 2\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGSTKFLT\", \"stack fault\"},\n\t{17, \"SIGCHLD\", \"child exited\"},\n\t{18, \"SIGCONT\", \"continued\"},\n\t{19, \"SIGSTOP\", \"stopped (signal)\"},\n\t{20, \"SIGTSTP\", \"stopped\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGURG\", \"urgent I/O condition\"},\n\t{24, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"file size limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window changed\"},\n\t{29, \"SIGIO\", \"I/O possible\"},\n\t{30, \"SIGPWR\", \"power failure\"},\n\t{31, \"SIGSYS\", \"bad system call\"},\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/riscv64/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build riscv64 && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/riscv64/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x1008\n\tB115200                          = 0x1002\n\tB1152000                         = 0x1009\n\tB1500000                         = 0x100a\n\tB2000000                         = 0x100b\n\tB230400                          = 0x1003\n\tB2500000                         = 0x100c\n\tB3000000                         = 0x100d\n\tB3500000                         = 0x100e\n\tB4000000                         = 0x100f\n\tB460800                          = 0x1004\n\tB500000                          = 0x1005\n\tB57600                           = 0x1001\n\tB576000                          = 0x1006\n\tB921600                          = 0x1007\n\tBLKALIGNOFF                      = 0x127a\n\tBLKBSZGET                        = 0x80081270\n\tBLKBSZSET                        = 0x40081271\n\tBLKDISCARD                       = 0x1277\n\tBLKDISCARDZEROES                 = 0x127c\n\tBLKFLSBUF                        = 0x1261\n\tBLKFRAGET                        = 0x1265\n\tBLKFRASET                        = 0x1264\n\tBLKGETDISKSEQ                    = 0x80081280\n\tBLKGETSIZE                       = 0x1260\n\tBLKGETSIZE64                     = 0x80081272\n\tBLKIOMIN                         = 0x1278\n\tBLKIOOPT                         = 0x1279\n\tBLKPBSZGET                       = 0x127b\n\tBLKRAGET                         = 0x1263\n\tBLKRASET                         = 0x1262\n\tBLKROGET                         = 0x125e\n\tBLKROSET                         = 0x125d\n\tBLKROTATIONAL                    = 0x127e\n\tBLKRRPART                        = 0x125f\n\tBLKSECDISCARD                    = 0x127d\n\tBLKSECTGET                       = 0x1267\n\tBLKSECTSET                       = 0x1266\n\tBLKSSZGET                        = 0x1268\n\tBLKZEROOUT                       = 0x127f\n\tBOTHER                           = 0x1000\n\tBS1                              = 0x2000\n\tBSDLY                            = 0x2000\n\tCBAUD                            = 0x100f\n\tCBAUDEX                          = 0x1000\n\tCIBAUD                           = 0x100f0000\n\tCLOCAL                           = 0x800\n\tCR1                              = 0x200\n\tCR2                              = 0x400\n\tCR3                              = 0x600\n\tCRDLY                            = 0x600\n\tCREAD                            = 0x80\n\tCS6                              = 0x10\n\tCS7                              = 0x20\n\tCS8                              = 0x30\n\tCSIZE                            = 0x30\n\tCSTOPB                           = 0x40\n\tDM_MPATH_PROBE_PATHS             = 0xfd12\n\tECCGETLAYOUT                     = 0x81484d11\n\tECCGETSTATS                      = 0x80104d12\n\tECHOCTL                          = 0x200\n\tECHOE                            = 0x10\n\tECHOK                            = 0x20\n\tECHOKE                           = 0x800\n\tECHONL                           = 0x40\n\tECHOPRT                          = 0x400\n\tEFD_CLOEXEC                      = 0x80000\n\tEFD_NONBLOCK                     = 0x800\n\tEPIOCGPARAMS                     = 0x80088a02\n\tEPIOCSPARAMS                     = 0x40088a01\n\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000\n\tFF1                              = 0x8000\n\tFFDLY                            = 0x8000\n\tFICLONE                          = 0x40049409\n\tFICLONERANGE                     = 0x4020940d\n\tFLUSHO                           = 0x1000\n\tFS_IOC_ENABLE_VERITY             = 0x40806685\n\tFS_IOC_GETFLAGS                  = 0x80086601\n\tFS_IOC_GET_ENCRYPTION_NONCE      = 0x8010661b\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x400c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x40106614\n\tFS_IOC_SETFLAGS                  = 0x40086602\n\tFS_IOC_SET_ENCRYPTION_POLICY     = 0x800c6613\n\tF_GETLK                          = 0x5\n\tF_GETLK64                        = 0x5\n\tF_GETOWN                         = 0x9\n\tF_RDLCK                          = 0x0\n\tF_SETLK                          = 0x6\n\tF_SETLK64                        = 0x6\n\tF_SETLKW                         = 0x7\n\tF_SETLKW64                       = 0x7\n\tF_SETOWN                         = 0x8\n\tF_UNLCK                          = 0x2\n\tF_WRLCK                          = 0x1\n\tHIDIOCGRAWINFO                   = 0x80084803\n\tHIDIOCGRDESC                     = 0x90044802\n\tHIDIOCGRDESCSIZE                 = 0x80044801\n\tHIDIOCREVOKE                     = 0x4004480d\n\tHUPCL                            = 0x400\n\tICANON                           = 0x2\n\tIEXTEN                           = 0x8000\n\tIN_CLOEXEC                       = 0x80000\n\tIN_NONBLOCK                      = 0x800\n\tIOCTL_MEI_NOTIFY_GET             = 0x80044803\n\tIOCTL_MEI_NOTIFY_SET             = 0x40044802\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x7b9\n\tIPV6_FLOWINFO_MASK               = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK              = 0xffff0f00\n\tISIG                             = 0x1\n\tIUCLC                            = 0x200\n\tIXOFF                            = 0x1000\n\tIXON                             = 0x400\n\tMAP_ANON                         = 0x20\n\tMAP_ANONYMOUS                    = 0x20\n\tMAP_DENYWRITE                    = 0x800\n\tMAP_EXECUTABLE                   = 0x1000\n\tMAP_GROWSDOWN                    = 0x100\n\tMAP_HUGETLB                      = 0x40000\n\tMAP_LOCKED                       = 0x2000\n\tMAP_NONBLOCK                     = 0x10000\n\tMAP_NORESERVE                    = 0x4000\n\tMAP_POPULATE                     = 0x8000\n\tMAP_STACK                        = 0x20000\n\tMAP_SYNC                         = 0x80000\n\tMCL_CURRENT                      = 0x1\n\tMCL_FUTURE                       = 0x2\n\tMCL_ONFAULT                      = 0x4\n\tMEMERASE                         = 0x40084d02\n\tMEMERASE64                       = 0x40104d14\n\tMEMGETBADBLOCK                   = 0x40084d0b\n\tMEMGETINFO                       = 0x80204d01\n\tMEMGETOOBSEL                     = 0x80c84d0a\n\tMEMGETREGIONCOUNT                = 0x80044d07\n\tMEMISLOCKED                      = 0x80084d17\n\tMEMLOCK                          = 0x40084d05\n\tMEMREAD                          = 0xc0404d1a\n\tMEMREADOOB                       = 0xc0104d04\n\tMEMSETBADBLOCK                   = 0x40084d0c\n\tMEMUNLOCK                        = 0x40084d06\n\tMEMWRITEOOB                      = 0xc0104d03\n\tMTDFILEMODE                      = 0x4d13\n\tNFDBITS                          = 0x40\n\tNLDLY                            = 0x100\n\tNOFLSH                           = 0x80\n\tNS_GET_MNTNS_ID                  = 0x8008b705\n\tNS_GET_NSTYPE                    = 0xb703\n\tNS_GET_OWNER_UID                 = 0xb704\n\tNS_GET_PARENT                    = 0xb702\n\tNS_GET_PID_FROM_PIDNS            = 0x8004b706\n\tNS_GET_PID_IN_PIDNS              = 0x8004b708\n\tNS_GET_TGID_FROM_PIDNS           = 0x8004b707\n\tNS_GET_TGID_IN_PIDNS             = 0x8004b709\n\tNS_GET_USERNS                    = 0xb701\n\tOLCUC                            = 0x2\n\tONLCR                            = 0x4\n\tOTPERASE                         = 0x400c4d19\n\tOTPGETREGIONCOUNT                = 0x40044d0e\n\tOTPGETREGIONINFO                 = 0x400c4d0f\n\tOTPLOCK                          = 0x800c4d10\n\tOTPSELECT                        = 0x80044d0d\n\tO_APPEND                         = 0x400\n\tO_ASYNC                          = 0x2000\n\tO_CLOEXEC                        = 0x80000\n\tO_CREAT                          = 0x40\n\tO_DIRECT                         = 0x4000\n\tO_DIRECTORY                      = 0x10000\n\tO_DSYNC                          = 0x1000\n\tO_EXCL                           = 0x80\n\tO_FSYNC                          = 0x101000\n\tO_LARGEFILE                      = 0x0\n\tO_NDELAY                         = 0x800\n\tO_NOATIME                        = 0x40000\n\tO_NOCTTY                         = 0x100\n\tO_NOFOLLOW                       = 0x20000\n\tO_NONBLOCK                       = 0x800\n\tO_PATH                           = 0x200000\n\tO_RSYNC                          = 0x101000\n\tO_SYNC                           = 0x101000\n\tO_TMPFILE                        = 0x410000\n\tO_TRUNC                          = 0x200\n\tPARENB                           = 0x100\n\tPARODD                           = 0x200\n\tPENDIN                           = 0x4000\n\tPERF_EVENT_IOC_DISABLE           = 0x2401\n\tPERF_EVENT_IOC_ENABLE            = 0x2400\n\tPERF_EVENT_IOC_ID                = 0x80082407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4008240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT      = 0x40042409\n\tPERF_EVENT_IOC_PERIOD            = 0x40082404\n\tPERF_EVENT_IOC_QUERY_BPF         = 0xc008240a\n\tPERF_EVENT_IOC_REFRESH           = 0x2402\n\tPERF_EVENT_IOC_RESET             = 0x2403\n\tPERF_EVENT_IOC_SET_BPF           = 0x40042408\n\tPERF_EVENT_IOC_SET_FILTER        = 0x40082406\n\tPERF_EVENT_IOC_SET_OUTPUT        = 0x2405\n\tPPPIOCATTACH                     = 0x4004743d\n\tPPPIOCATTCHAN                    = 0x40047438\n\tPPPIOCBRIDGECHAN                 = 0x40047435\n\tPPPIOCCONNECT                    = 0x4004743a\n\tPPPIOCDETACH                     = 0x4004743c\n\tPPPIOCDISCONN                    = 0x7439\n\tPPPIOCGASYNCMAP                  = 0x80047458\n\tPPPIOCGCHAN                      = 0x80047437\n\tPPPIOCGDEBUG                     = 0x80047441\n\tPPPIOCGFLAGS                     = 0x8004745a\n\tPPPIOCGIDLE                      = 0x8010743f\n\tPPPIOCGIDLE32                    = 0x8008743f\n\tPPPIOCGIDLE64                    = 0x8010743f\n\tPPPIOCGL2TPSTATS                 = 0x80487436\n\tPPPIOCGMRU                       = 0x80047453\n\tPPPIOCGRASYNCMAP                 = 0x80047455\n\tPPPIOCGUNIT                      = 0x80047456\n\tPPPIOCGXASYNCMAP                 = 0x80207450\n\tPPPIOCSACTIVE                    = 0x40107446\n\tPPPIOCSASYNCMAP                  = 0x40047457\n\tPPPIOCSCOMPRESS                  = 0x4010744d\n\tPPPIOCSDEBUG                     = 0x40047440\n\tPPPIOCSFLAGS                     = 0x40047459\n\tPPPIOCSMAXCID                    = 0x40047451\n\tPPPIOCSMRRU                      = 0x4004743b\n\tPPPIOCSMRU                       = 0x40047452\n\tPPPIOCSNPMODE                    = 0x4008744b\n\tPPPIOCSPASS                      = 0x40107447\n\tPPPIOCSRASYNCMAP                 = 0x40047454\n\tPPPIOCSXASYNCMAP                 = 0x4020744f\n\tPPPIOCUNBRIDGECHAN               = 0x7434\n\tPPPIOCXFERUNIT                   = 0x744e\n\tPR_SET_PTRACER_ANY               = 0xffffffffffffffff\n\tPTP_CLOCK_GETCAPS                = 0x80503d01\n\tPTP_CLOCK_GETCAPS2               = 0x80503d0a\n\tPTP_ENABLE_PPS                   = 0x40043d04\n\tPTP_ENABLE_PPS2                  = 0x40043d0d\n\tPTP_EXTTS_REQUEST                = 0x40103d02\n\tPTP_EXTTS_REQUEST2               = 0x40103d0b\n\tPTP_MASK_CLEAR_ALL               = 0x3d13\n\tPTP_MASK_EN_SINGLE               = 0x40043d14\n\tPTP_PEROUT_REQUEST               = 0x40383d03\n\tPTP_PEROUT_REQUEST2              = 0x40383d0c\n\tPTP_PIN_SETFUNC                  = 0x40603d07\n\tPTP_PIN_SETFUNC2                 = 0x40603d10\n\tPTP_SYS_OFFSET                   = 0x43403d05\n\tPTP_SYS_OFFSET2                  = 0x43403d0e\n\tPTRACE_GETFDPIC                  = 0x21\n\tPTRACE_GETFDPIC_EXEC             = 0x0\n\tPTRACE_GETFDPIC_INTERP           = 0x1\n\tRLIMIT_AS                        = 0x9\n\tRLIMIT_MEMLOCK                   = 0x8\n\tRLIMIT_NOFILE                    = 0x7\n\tRLIMIT_NPROC                     = 0x6\n\tRLIMIT_RSS                       = 0x5\n\tRNDADDENTROPY                    = 0x40085203\n\tRNDADDTOENTCNT                   = 0x40045201\n\tRNDCLEARPOOL                     = 0x5206\n\tRNDGETENTCNT                     = 0x80045200\n\tRNDGETPOOL                       = 0x80085202\n\tRNDRESEEDCRNG                    = 0x5207\n\tRNDZAPENTCNT                     = 0x5204\n\tRTC_AIE_OFF                      = 0x7002\n\tRTC_AIE_ON                       = 0x7001\n\tRTC_ALM_READ                     = 0x80247008\n\tRTC_ALM_SET                      = 0x40247007\n\tRTC_EPOCH_READ                   = 0x8008700d\n\tRTC_EPOCH_SET                    = 0x4008700e\n\tRTC_IRQP_READ                    = 0x8008700b\n\tRTC_IRQP_SET                     = 0x4008700c\n\tRTC_PARAM_GET                    = 0x40187013\n\tRTC_PARAM_SET                    = 0x40187014\n\tRTC_PIE_OFF                      = 0x7006\n\tRTC_PIE_ON                       = 0x7005\n\tRTC_PLL_GET                      = 0x80207011\n\tRTC_PLL_SET                      = 0x40207012\n\tRTC_RD_TIME                      = 0x80247009\n\tRTC_SET_TIME                     = 0x4024700a\n\tRTC_UIE_OFF                      = 0x7004\n\tRTC_UIE_ON                       = 0x7003\n\tRTC_VL_CLR                       = 0x7014\n\tRTC_VL_READ                      = 0x80047013\n\tRTC_WIE_OFF                      = 0x7010\n\tRTC_WIE_ON                       = 0x700f\n\tRTC_WKALM_RD                     = 0x80287010\n\tRTC_WKALM_SET                    = 0x4028700f\n\tSCM_DEVMEM_DMABUF                = 0x4f\n\tSCM_DEVMEM_LINEAR                = 0x4e\n\tSCM_TIMESTAMPING                 = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS       = 0x36\n\tSCM_TIMESTAMPING_PKTINFO         = 0x3a\n\tSCM_TIMESTAMPNS                  = 0x23\n\tSCM_TS_OPT_ID                    = 0x51\n\tSCM_TXTIME                       = 0x3d\n\tSCM_WIFI_STATUS                  = 0x29\n\tSECCOMP_IOCTL_NOTIF_ADDFD        = 0x40182103\n\tSECCOMP_IOCTL_NOTIF_ID_VALID     = 0x40082102\n\tSECCOMP_IOCTL_NOTIF_SET_FLAGS    = 0x40082104\n\tSFD_CLOEXEC                      = 0x80000\n\tSFD_NONBLOCK                     = 0x800\n\tSIOCATMARK                       = 0x8905\n\tSIOCGPGRP                        = 0x8904\n\tSIOCGSTAMPNS_NEW                 = 0x80108907\n\tSIOCGSTAMP_NEW                   = 0x80108906\n\tSIOCINQ                          = 0x541b\n\tSIOCOUTQ                         = 0x5411\n\tSIOCSPGRP                        = 0x8902\n\tSOCK_CLOEXEC                     = 0x80000\n\tSOCK_DGRAM                       = 0x2\n\tSOCK_NONBLOCK                    = 0x800\n\tSOCK_STREAM                      = 0x1\n\tSOL_SOCKET                       = 0x1\n\tSO_ACCEPTCONN                    = 0x1e\n\tSO_ATTACH_BPF                    = 0x32\n\tSO_ATTACH_REUSEPORT_CBPF         = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF         = 0x34\n\tSO_BINDTODEVICE                  = 0x19\n\tSO_BINDTOIFINDEX                 = 0x3e\n\tSO_BPF_EXTENSIONS                = 0x30\n\tSO_BROADCAST                     = 0x6\n\tSO_BSDCOMPAT                     = 0xe\n\tSO_BUF_LOCK                      = 0x48\n\tSO_BUSY_POLL                     = 0x2e\n\tSO_BUSY_POLL_BUDGET              = 0x46\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\n\tSO_DEVMEM_DMABUF                 = 0x4f\n\tSO_DEVMEM_DONTNEED               = 0x50\n\tSO_DEVMEM_LINEAR                 = 0x4e\n\tSO_DOMAIN                        = 0x27\n\tSO_DONTROUTE                     = 0x5\n\tSO_ERROR                         = 0x4\n\tSO_INCOMING_CPU                  = 0x31\n\tSO_INCOMING_NAPI_ID              = 0x38\n\tSO_KEEPALIVE                     = 0x9\n\tSO_LINGER                        = 0xd\n\tSO_LOCK_FILTER                   = 0x2c\n\tSO_MARK                          = 0x24\n\tSO_MAX_PACING_RATE               = 0x2f\n\tSO_MEMINFO                       = 0x37\n\tSO_NETNS_COOKIE                  = 0x47\n\tSO_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0xa\n\tSO_PASSCRED                      = 0x10\n\tSO_PASSPIDFD                     = 0x4c\n\tSO_PASSRIGHTS                    = 0x53\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x11\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERPIDFD                     = 0x4d\n\tSO_PEERSEC                       = 0x1f\n\tSO_PREFER_BUSY_POLL              = 0x45\n\tSO_PROTOCOL                      = 0x26\n\tSO_RCVBUF                        = 0x8\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x12\n\tSO_RCVMARK                       = 0x4b\n\tSO_RCVPRIORITY                   = 0x52\n\tSO_RCVTIMEO                      = 0x14\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x14\n\tSO_RESERVE_MEM                   = 0x49\n\tSO_REUSEADDR                     = 0x2\n\tSO_REUSEPORT                     = 0xf\n\tSO_RXQ_OVFL                      = 0x28\n\tSO_SECURITY_AUTHENTICATION       = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK   = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT = 0x17\n\tSO_SELECT_ERR_QUEUE              = 0x2d\n\tSO_SNDBUF                        = 0x7\n\tSO_SNDBUFFORCE                   = 0x20\n\tSO_SNDLOWAT                      = 0x13\n\tSO_SNDTIMEO                      = 0x15\n\tSO_SNDTIMEO_NEW                  = 0x43\n\tSO_SNDTIMEO_OLD                  = 0x15\n\tSO_TIMESTAMPING                  = 0x25\n\tSO_TIMESTAMPING_NEW              = 0x41\n\tSO_TIMESTAMPING_OLD              = 0x25\n\tSO_TIMESTAMPNS                   = 0x23\n\tSO_TIMESTAMPNS_NEW               = 0x40\n\tSO_TIMESTAMPNS_OLD               = 0x23\n\tSO_TIMESTAMP_NEW                 = 0x3f\n\tSO_TXREHASH                      = 0x4a\n\tSO_TXTIME                        = 0x3d\n\tSO_TYPE                          = 0x3\n\tSO_WIFI_STATUS                   = 0x29\n\tSO_ZEROCOPY                      = 0x3c\n\tTAB1                             = 0x800\n\tTAB2                             = 0x1000\n\tTAB3                             = 0x1800\n\tTABDLY                           = 0x1800\n\tTCFLSH                           = 0x540b\n\tTCGETA                           = 0x5405\n\tTCGETS                           = 0x5401\n\tTCGETS2                          = 0x802c542a\n\tTCGETX                           = 0x5432\n\tTCSAFLUSH                        = 0x2\n\tTCSBRK                           = 0x5409\n\tTCSBRKP                          = 0x5425\n\tTCSETA                           = 0x5406\n\tTCSETAF                          = 0x5408\n\tTCSETAW                          = 0x5407\n\tTCSETS                           = 0x5402\n\tTCSETS2                          = 0x402c542b\n\tTCSETSF                          = 0x5404\n\tTCSETSF2                         = 0x402c542d\n\tTCSETSW                          = 0x5403\n\tTCSETSW2                         = 0x402c542c\n\tTCSETX                           = 0x5433\n\tTCSETXF                          = 0x5434\n\tTCSETXW                          = 0x5435\n\tTCXONC                           = 0x540a\n\tTFD_CLOEXEC                      = 0x80000\n\tTFD_NONBLOCK                     = 0x800\n\tTIOCCBRK                         = 0x5428\n\tTIOCCONS                         = 0x541d\n\tTIOCEXCL                         = 0x540c\n\tTIOCGDEV                         = 0x80045432\n\tTIOCGETD                         = 0x5424\n\tTIOCGEXCL                        = 0x80045440\n\tTIOCGICOUNT                      = 0x545d\n\tTIOCGISO7816                     = 0x80285442\n\tTIOCGLCKTRMIOS                   = 0x5456\n\tTIOCGPGRP                        = 0x540f\n\tTIOCGPKT                         = 0x80045438\n\tTIOCGPTLCK                       = 0x80045439\n\tTIOCGPTN                         = 0x80045430\n\tTIOCGPTPEER                      = 0x5441\n\tTIOCGRS485                       = 0x542e\n\tTIOCGSERIAL                      = 0x541e\n\tTIOCGSID                         = 0x5429\n\tTIOCGSOFTCAR                     = 0x5419\n\tTIOCGWINSZ                       = 0x5413\n\tTIOCINQ                          = 0x541b\n\tTIOCLINUX                        = 0x541c\n\tTIOCMBIC                         = 0x5417\n\tTIOCMBIS                         = 0x5416\n\tTIOCMGET                         = 0x5415\n\tTIOCMIWAIT                       = 0x545c\n\tTIOCMSET                         = 0x5418\n\tTIOCM_CAR                        = 0x40\n\tTIOCM_CD                         = 0x40\n\tTIOCM_CTS                        = 0x20\n\tTIOCM_DSR                        = 0x100\n\tTIOCM_RI                         = 0x80\n\tTIOCM_RNG                        = 0x80\n\tTIOCM_SR                         = 0x10\n\tTIOCM_ST                         = 0x8\n\tTIOCNOTTY                        = 0x5422\n\tTIOCNXCL                         = 0x540d\n\tTIOCOUTQ                         = 0x5411\n\tTIOCPKT                          = 0x5420\n\tTIOCSBRK                         = 0x5427\n\tTIOCSCTTY                        = 0x540e\n\tTIOCSERCONFIG                    = 0x5453\n\tTIOCSERGETLSR                    = 0x5459\n\tTIOCSERGETMULTI                  = 0x545a\n\tTIOCSERGSTRUCT                   = 0x5458\n\tTIOCSERGWILD                     = 0x5454\n\tTIOCSERSETMULTI                  = 0x545b\n\tTIOCSERSWILD                     = 0x5455\n\tTIOCSER_TEMT                     = 0x1\n\tTIOCSETD                         = 0x5423\n\tTIOCSIG                          = 0x40045436\n\tTIOCSISO7816                     = 0xc0285443\n\tTIOCSLCKTRMIOS                   = 0x5457\n\tTIOCSPGRP                        = 0x5410\n\tTIOCSPTLCK                       = 0x40045431\n\tTIOCSRS485                       = 0x542f\n\tTIOCSSERIAL                      = 0x541f\n\tTIOCSSOFTCAR                     = 0x541a\n\tTIOCSTI                          = 0x5412\n\tTIOCSWINSZ                       = 0x5414\n\tTIOCVHANGUP                      = 0x5437\n\tTOSTOP                           = 0x100\n\tTUNATTACHFILTER                  = 0x401054d5\n\tTUNDETACHFILTER                  = 0x401054d6\n\tTUNGETDEVNETNS                   = 0x54e3\n\tTUNGETFEATURES                   = 0x800454cf\n\tTUNGETFILTER                     = 0x801054db\n\tTUNGETIFF                        = 0x800454d2\n\tTUNGETSNDBUF                     = 0x800454d3\n\tTUNGETVNETBE                     = 0x800454df\n\tTUNGETVNETHDRSZ                  = 0x800454d7\n\tTUNGETVNETLE                     = 0x800454dd\n\tTUNSETCARRIER                    = 0x400454e2\n\tTUNSETDEBUG                      = 0x400454c9\n\tTUNSETFILTEREBPF                 = 0x800454e1\n\tTUNSETGROUP                      = 0x400454ce\n\tTUNSETIFF                        = 0x400454ca\n\tTUNSETIFINDEX                    = 0x400454da\n\tTUNSETLINK                       = 0x400454cd\n\tTUNSETNOCSUM                     = 0x400454c8\n\tTUNSETOFFLOAD                    = 0x400454d0\n\tTUNSETOWNER                      = 0x400454cc\n\tTUNSETPERSIST                    = 0x400454cb\n\tTUNSETQUEUE                      = 0x400454d9\n\tTUNSETSNDBUF                     = 0x400454d4\n\tTUNSETSTEERINGEBPF               = 0x800454e0\n\tTUNSETTXFILTER                   = 0x400454d1\n\tTUNSETVNETBE                     = 0x400454de\n\tTUNSETVNETHDRSZ                  = 0x400454d8\n\tTUNSETVNETLE                     = 0x400454dc\n\tUBI_IOCATT                       = 0x40186f40\n\tUBI_IOCDET                       = 0x40046f41\n\tUBI_IOCEBCH                      = 0x40044f02\n\tUBI_IOCEBER                      = 0x40044f01\n\tUBI_IOCEBISMAP                   = 0x80044f05\n\tUBI_IOCEBMAP                     = 0x40084f03\n\tUBI_IOCEBUNMAP                   = 0x40044f04\n\tUBI_IOCMKVOL                     = 0x40986f00\n\tUBI_IOCRMVOL                     = 0x40046f01\n\tUBI_IOCRNVOL                     = 0x51106f03\n\tUBI_IOCRPEB                      = 0x40046f04\n\tUBI_IOCRSVOL                     = 0x400c6f02\n\tUBI_IOCSETVOLPROP                = 0x40104f06\n\tUBI_IOCSPEB                      = 0x40046f05\n\tUBI_IOCVOLCRBLK                  = 0x40804f07\n\tUBI_IOCVOLRMBLK                  = 0x4f08\n\tUBI_IOCVOLUP                     = 0x40084f00\n\tVDISCARD                         = 0xd\n\tVEOF                             = 0x4\n\tVEOL                             = 0xb\n\tVEOL2                            = 0x10\n\tVMIN                             = 0x6\n\tVREPRINT                         = 0xc\n\tVSTART                           = 0x8\n\tVSTOP                            = 0x9\n\tVSUSP                            = 0xa\n\tVSWTC                            = 0x7\n\tVT1                              = 0x4000\n\tVTDLY                            = 0x4000\n\tVTIME                            = 0x5\n\tVWERASE                          = 0xe\n\tWDIOC_GETBOOTSTATUS              = 0x80045702\n\tWDIOC_GETPRETIMEOUT              = 0x80045709\n\tWDIOC_GETSTATUS                  = 0x80045701\n\tWDIOC_GETSUPPORT                 = 0x80285700\n\tWDIOC_GETTEMP                    = 0x80045703\n\tWDIOC_GETTIMELEFT                = 0x8004570a\n\tWDIOC_GETTIMEOUT                 = 0x80045707\n\tWDIOC_KEEPALIVE                  = 0x80045705\n\tWDIOC_SETOPTIONS                 = 0x80045704\n\tWORDSIZE                         = 0x40\n\tXCASE                            = 0x4\n\tXTABS                            = 0x1800\n\t_HIDIOCGRAWNAME                  = 0x80804804\n\t_HIDIOCGRAWPHYS                  = 0x80404805\n\t_HIDIOCGRAWUNIQ                  = 0x80404808\n)\n\n// Errors\nconst (\n\tEADDRINUSE      = syscall.Errno(0x62)\n\tEADDRNOTAVAIL   = syscall.Errno(0x63)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x61)\n\tEALREADY        = syscall.Errno(0x72)\n\tEBADE           = syscall.Errno(0x34)\n\tEBADFD          = syscall.Errno(0x4d)\n\tEBADMSG         = syscall.Errno(0x4a)\n\tEBADR           = syscall.Errno(0x35)\n\tEBADRQC         = syscall.Errno(0x38)\n\tEBADSLT         = syscall.Errno(0x39)\n\tEBFONT          = syscall.Errno(0x3b)\n\tECANCELED       = syscall.Errno(0x7d)\n\tECHRNG          = syscall.Errno(0x2c)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x67)\n\tECONNREFUSED    = syscall.Errno(0x6f)\n\tECONNRESET      = syscall.Errno(0x68)\n\tEDEADLK         = syscall.Errno(0x23)\n\tEDEADLOCK       = syscall.Errno(0x23)\n\tEDESTADDRREQ    = syscall.Errno(0x59)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x7a)\n\tEHOSTDOWN       = syscall.Errno(0x70)\n\tEHOSTUNREACH    = syscall.Errno(0x71)\n\tEHWPOISON       = syscall.Errno(0x85)\n\tEIDRM           = syscall.Errno(0x2b)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x73)\n\tEISCONN         = syscall.Errno(0x6a)\n\tEISNAM          = syscall.Errno(0x78)\n\tEKEYEXPIRED     = syscall.Errno(0x7f)\n\tEKEYREJECTED    = syscall.Errno(0x81)\n\tEKEYREVOKED     = syscall.Errno(0x80)\n\tEL2HLT          = syscall.Errno(0x33)\n\tEL2NSYNC        = syscall.Errno(0x2d)\n\tEL3HLT          = syscall.Errno(0x2e)\n\tEL3RST          = syscall.Errno(0x2f)\n\tELIBACC         = syscall.Errno(0x4f)\n\tELIBBAD         = syscall.Errno(0x50)\n\tELIBEXEC        = syscall.Errno(0x53)\n\tELIBMAX         = syscall.Errno(0x52)\n\tELIBSCN         = syscall.Errno(0x51)\n\tELNRNG          = syscall.Errno(0x30)\n\tELOOP           = syscall.Errno(0x28)\n\tEMEDIUMTYPE     = syscall.Errno(0x7c)\n\tEMSGSIZE        = syscall.Errno(0x5a)\n\tEMULTIHOP       = syscall.Errno(0x48)\n\tENAMETOOLONG    = syscall.Errno(0x24)\n\tENAVAIL         = syscall.Errno(0x77)\n\tENETDOWN        = syscall.Errno(0x64)\n\tENETRESET       = syscall.Errno(0x66)\n\tENETUNREACH     = syscall.Errno(0x65)\n\tENOANO          = syscall.Errno(0x37)\n\tENOBUFS         = syscall.Errno(0x69)\n\tENOCSI          = syscall.Errno(0x32)\n\tENODATA         = syscall.Errno(0x3d)\n\tENOKEY          = syscall.Errno(0x7e)\n\tENOLCK          = syscall.Errno(0x25)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x7b)\n\tENOMSG          = syscall.Errno(0x2a)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x5c)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x26)\n\tENOTCONN        = syscall.Errno(0x6b)\n\tENOTEMPTY       = syscall.Errno(0x27)\n\tENOTNAM         = syscall.Errno(0x76)\n\tENOTRECOVERABLE = syscall.Errno(0x83)\n\tENOTSOCK        = syscall.Errno(0x58)\n\tENOTSUP         = syscall.Errno(0x5f)\n\tENOTUNIQ        = syscall.Errno(0x4c)\n\tEOPNOTSUPP      = syscall.Errno(0x5f)\n\tEOVERFLOW       = syscall.Errno(0x4b)\n\tEOWNERDEAD      = syscall.Errno(0x82)\n\tEPFNOSUPPORT    = syscall.Errno(0x60)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x5d)\n\tEPROTOTYPE      = syscall.Errno(0x5b)\n\tEREMCHG         = syscall.Errno(0x4e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x79)\n\tERESTART        = syscall.Errno(0x55)\n\tERFKILL         = syscall.Errno(0x84)\n\tESHUTDOWN       = syscall.Errno(0x6c)\n\tESOCKTNOSUPPORT = syscall.Errno(0x5e)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x74)\n\tESTRPIPE        = syscall.Errno(0x56)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x6e)\n\tETOOMANYREFS    = syscall.Errno(0x6d)\n\tEUCLEAN         = syscall.Errno(0x75)\n\tEUNATCH         = syscall.Errno(0x31)\n\tEUSERS          = syscall.Errno(0x57)\n\tEXFULL          = syscall.Errno(0x36)\n)\n\n// Signals\nconst (\n\tSIGBUS    = syscall.Signal(0x7)\n\tSIGCHLD   = syscall.Signal(0x11)\n\tSIGCLD    = syscall.Signal(0x11)\n\tSIGCONT   = syscall.Signal(0x12)\n\tSIGIO     = syscall.Signal(0x1d)\n\tSIGPOLL   = syscall.Signal(0x1d)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x1e)\n\tSIGSTKFLT = syscall.Signal(0x10)\n\tSIGSTOP   = syscall.Signal(0x13)\n\tSIGSYS    = syscall.Signal(0x1f)\n\tSIGTSTP   = syscall.Signal(0x14)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x17)\n\tSIGUSR1   = syscall.Signal(0xa)\n\tSIGUSR2   = syscall.Signal(0xc)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{36, \"ENAMETOOLONG\", \"file name too long\"},\n\t{37, \"ENOLCK\", \"no locks available\"},\n\t{38, \"ENOSYS\", \"function not implemented\"},\n\t{39, \"ENOTEMPTY\", \"directory not empty\"},\n\t{40, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{42, \"ENOMSG\", \"no message of desired type\"},\n\t{43, \"EIDRM\", \"identifier removed\"},\n\t{44, \"ECHRNG\", \"channel number out of range\"},\n\t{45, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{46, \"EL3HLT\", \"level 3 halted\"},\n\t{47, \"EL3RST\", \"level 3 reset\"},\n\t{48, \"ELNRNG\", \"link number out of range\"},\n\t{49, \"EUNATCH\", \"protocol driver not attached\"},\n\t{50, \"ENOCSI\", \"no CSI structure available\"},\n\t{51, \"EL2HLT\", \"level 2 halted\"},\n\t{52, \"EBADE\", \"invalid exchange\"},\n\t{53, \"EBADR\", \"invalid request descriptor\"},\n\t{54, \"EXFULL\", \"exchange full\"},\n\t{55, \"ENOANO\", \"no anode\"},\n\t{56, \"EBADRQC\", \"invalid request code\"},\n\t{57, \"EBADSLT\", \"invalid slot\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{72, \"EMULTIHOP\", \"multihop attempted\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EBADMSG\", \"bad message\"},\n\t{75, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{76, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{77, \"EBADFD\", \"file descriptor in bad state\"},\n\t{78, \"EREMCHG\", \"remote address changed\"},\n\t{79, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{80, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{81, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{82, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{83, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{84, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{85, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{86, \"ESTRPIPE\", \"streams pipe error\"},\n\t{87, \"EUSERS\", \"too many users\"},\n\t{88, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{89, \"EDESTADDRREQ\", \"destination address required\"},\n\t{90, \"EMSGSIZE\", \"message too long\"},\n\t{91, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{92, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{93, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{94, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{95, \"ENOTSUP\", \"operation not supported\"},\n\t{96, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{97, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{98, \"EADDRINUSE\", \"address already in use\"},\n\t{99, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{100, \"ENETDOWN\", \"network is down\"},\n\t{101, \"ENETUNREACH\", \"network is unreachable\"},\n\t{102, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{103, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{104, \"ECONNRESET\", \"connection reset by peer\"},\n\t{105, \"ENOBUFS\", \"no buffer space available\"},\n\t{106, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{107, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{108, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{109, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{110, \"ETIMEDOUT\", \"connection timed out\"},\n\t{111, \"ECONNREFUSED\", \"connection refused\"},\n\t{112, \"EHOSTDOWN\", \"host is down\"},\n\t{113, \"EHOSTUNREACH\", \"no route to host\"},\n\t{114, \"EALREADY\", \"operation already in progress\"},\n\t{115, \"EINPROGRESS\", \"operation now in progress\"},\n\t{116, \"ESTALE\", \"stale file handle\"},\n\t{117, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{118, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{119, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{120, \"EISNAM\", \"is a named type file\"},\n\t{121, \"EREMOTEIO\", \"remote I/O error\"},\n\t{122, \"EDQUOT\", \"disk quota exceeded\"},\n\t{123, \"ENOMEDIUM\", \"no medium found\"},\n\t{124, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{125, \"ECANCELED\", \"operation canceled\"},\n\t{126, \"ENOKEY\", \"required key not available\"},\n\t{127, \"EKEYEXPIRED\", \"key has expired\"},\n\t{128, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{129, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{130, \"EOWNERDEAD\", \"owner died\"},\n\t{131, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{132, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{133, \"EHWPOISON\", \"memory page has hardware error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGBUS\", \"bus error\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGUSR1\", \"user defined signal 1\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGUSR2\", \"user defined signal 2\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGSTKFLT\", \"stack fault\"},\n\t{17, \"SIGCHLD\", \"child exited\"},\n\t{18, \"SIGCONT\", \"continued\"},\n\t{19, \"SIGSTOP\", \"stopped (signal)\"},\n\t{20, \"SIGTSTP\", \"stopped\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGURG\", \"urgent I/O condition\"},\n\t{24, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"file size limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window changed\"},\n\t{29, \"SIGIO\", \"I/O possible\"},\n\t{30, \"SIGPWR\", \"power failure\"},\n\t{31, \"SIGSYS\", \"bad system call\"},\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/s390x/include -fsigned-char\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build s390x && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/s390x/include -fsigned-char _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x1008\n\tB115200                          = 0x1002\n\tB1152000                         = 0x1009\n\tB1500000                         = 0x100a\n\tB2000000                         = 0x100b\n\tB230400                          = 0x1003\n\tB2500000                         = 0x100c\n\tB3000000                         = 0x100d\n\tB3500000                         = 0x100e\n\tB4000000                         = 0x100f\n\tB460800                          = 0x1004\n\tB500000                          = 0x1005\n\tB57600                           = 0x1001\n\tB576000                          = 0x1006\n\tB921600                          = 0x1007\n\tBLKALIGNOFF                      = 0x127a\n\tBLKBSZGET                        = 0x80081270\n\tBLKBSZSET                        = 0x40081271\n\tBLKDISCARD                       = 0x1277\n\tBLKDISCARDZEROES                 = 0x127c\n\tBLKFLSBUF                        = 0x1261\n\tBLKFRAGET                        = 0x1265\n\tBLKFRASET                        = 0x1264\n\tBLKGETDISKSEQ                    = 0x80081280\n\tBLKGETSIZE                       = 0x1260\n\tBLKGETSIZE64                     = 0x80081272\n\tBLKIOMIN                         = 0x1278\n\tBLKIOOPT                         = 0x1279\n\tBLKPBSZGET                       = 0x127b\n\tBLKRAGET                         = 0x1263\n\tBLKRASET                         = 0x1262\n\tBLKROGET                         = 0x125e\n\tBLKROSET                         = 0x125d\n\tBLKROTATIONAL                    = 0x127e\n\tBLKRRPART                        = 0x125f\n\tBLKSECDISCARD                    = 0x127d\n\tBLKSECTGET                       = 0x1267\n\tBLKSECTSET                       = 0x1266\n\tBLKSSZGET                        = 0x1268\n\tBLKZEROOUT                       = 0x127f\n\tBOTHER                           = 0x1000\n\tBS1                              = 0x2000\n\tBSDLY                            = 0x2000\n\tCBAUD                            = 0x100f\n\tCBAUDEX                          = 0x1000\n\tCIBAUD                           = 0x100f0000\n\tCLOCAL                           = 0x800\n\tCR1                              = 0x200\n\tCR2                              = 0x400\n\tCR3                              = 0x600\n\tCRDLY                            = 0x600\n\tCREAD                            = 0x80\n\tCS6                              = 0x10\n\tCS7                              = 0x20\n\tCS8                              = 0x30\n\tCSIZE                            = 0x30\n\tCSTOPB                           = 0x40\n\tDM_MPATH_PROBE_PATHS             = 0xfd12\n\tECCGETLAYOUT                     = 0x81484d11\n\tECCGETSTATS                      = 0x80104d12\n\tECHOCTL                          = 0x200\n\tECHOE                            = 0x10\n\tECHOK                            = 0x20\n\tECHOKE                           = 0x800\n\tECHONL                           = 0x40\n\tECHOPRT                          = 0x400\n\tEFD_CLOEXEC                      = 0x80000\n\tEFD_NONBLOCK                     = 0x800\n\tEPIOCGPARAMS                     = 0x80088a02\n\tEPIOCSPARAMS                     = 0x40088a01\n\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000\n\tFF1                              = 0x8000\n\tFFDLY                            = 0x8000\n\tFICLONE                          = 0x40049409\n\tFICLONERANGE                     = 0x4020940d\n\tFLUSHO                           = 0x1000\n\tFS_IOC_ENABLE_VERITY             = 0x40806685\n\tFS_IOC_GETFLAGS                  = 0x80086601\n\tFS_IOC_GET_ENCRYPTION_NONCE      = 0x8010661b\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x400c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x40106614\n\tFS_IOC_SETFLAGS                  = 0x40086602\n\tFS_IOC_SET_ENCRYPTION_POLICY     = 0x800c6613\n\tF_GETLK                          = 0x5\n\tF_GETLK64                        = 0x5\n\tF_GETOWN                         = 0x9\n\tF_RDLCK                          = 0x0\n\tF_SETLK                          = 0x6\n\tF_SETLK64                        = 0x6\n\tF_SETLKW                         = 0x7\n\tF_SETLKW64                       = 0x7\n\tF_SETOWN                         = 0x8\n\tF_UNLCK                          = 0x2\n\tF_WRLCK                          = 0x1\n\tHIDIOCGRAWINFO                   = 0x80084803\n\tHIDIOCGRDESC                     = 0x90044802\n\tHIDIOCGRDESCSIZE                 = 0x80044801\n\tHIDIOCREVOKE                     = 0x4004480d\n\tHUPCL                            = 0x400\n\tICANON                           = 0x2\n\tIEXTEN                           = 0x8000\n\tIN_CLOEXEC                       = 0x80000\n\tIN_NONBLOCK                      = 0x800\n\tIOCTL_MEI_NOTIFY_GET             = 0x80044803\n\tIOCTL_MEI_NOTIFY_SET             = 0x40044802\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x7b9\n\tIPV6_FLOWINFO_MASK               = 0xfffffff\n\tIPV6_FLOWLABEL_MASK              = 0xfffff\n\tISIG                             = 0x1\n\tIUCLC                            = 0x200\n\tIXOFF                            = 0x1000\n\tIXON                             = 0x400\n\tMAP_ANON                         = 0x20\n\tMAP_ANONYMOUS                    = 0x20\n\tMAP_DENYWRITE                    = 0x800\n\tMAP_EXECUTABLE                   = 0x1000\n\tMAP_GROWSDOWN                    = 0x100\n\tMAP_HUGETLB                      = 0x40000\n\tMAP_LOCKED                       = 0x2000\n\tMAP_NONBLOCK                     = 0x10000\n\tMAP_NORESERVE                    = 0x4000\n\tMAP_POPULATE                     = 0x8000\n\tMAP_STACK                        = 0x20000\n\tMAP_SYNC                         = 0x80000\n\tMCL_CURRENT                      = 0x1\n\tMCL_FUTURE                       = 0x2\n\tMCL_ONFAULT                      = 0x4\n\tMEMERASE                         = 0x40084d02\n\tMEMERASE64                       = 0x40104d14\n\tMEMGETBADBLOCK                   = 0x40084d0b\n\tMEMGETINFO                       = 0x80204d01\n\tMEMGETOOBSEL                     = 0x80c84d0a\n\tMEMGETREGIONCOUNT                = 0x80044d07\n\tMEMISLOCKED                      = 0x80084d17\n\tMEMLOCK                          = 0x40084d05\n\tMEMREAD                          = 0xc0404d1a\n\tMEMREADOOB                       = 0xc0104d04\n\tMEMSETBADBLOCK                   = 0x40084d0c\n\tMEMUNLOCK                        = 0x40084d06\n\tMEMWRITEOOB                      = 0xc0104d03\n\tMTDFILEMODE                      = 0x4d13\n\tNFDBITS                          = 0x40\n\tNLDLY                            = 0x100\n\tNOFLSH                           = 0x80\n\tNS_GET_MNTNS_ID                  = 0x8008b705\n\tNS_GET_NSTYPE                    = 0xb703\n\tNS_GET_OWNER_UID                 = 0xb704\n\tNS_GET_PARENT                    = 0xb702\n\tNS_GET_PID_FROM_PIDNS            = 0x8004b706\n\tNS_GET_PID_IN_PIDNS              = 0x8004b708\n\tNS_GET_TGID_FROM_PIDNS           = 0x8004b707\n\tNS_GET_TGID_IN_PIDNS             = 0x8004b709\n\tNS_GET_USERNS                    = 0xb701\n\tOLCUC                            = 0x2\n\tONLCR                            = 0x4\n\tOTPERASE                         = 0x400c4d19\n\tOTPGETREGIONCOUNT                = 0x40044d0e\n\tOTPGETREGIONINFO                 = 0x400c4d0f\n\tOTPLOCK                          = 0x800c4d10\n\tOTPSELECT                        = 0x80044d0d\n\tO_APPEND                         = 0x400\n\tO_ASYNC                          = 0x2000\n\tO_CLOEXEC                        = 0x80000\n\tO_CREAT                          = 0x40\n\tO_DIRECT                         = 0x4000\n\tO_DIRECTORY                      = 0x10000\n\tO_DSYNC                          = 0x1000\n\tO_EXCL                           = 0x80\n\tO_FSYNC                          = 0x101000\n\tO_LARGEFILE                      = 0x0\n\tO_NDELAY                         = 0x800\n\tO_NOATIME                        = 0x40000\n\tO_NOCTTY                         = 0x100\n\tO_NOFOLLOW                       = 0x20000\n\tO_NONBLOCK                       = 0x800\n\tO_PATH                           = 0x200000\n\tO_RSYNC                          = 0x101000\n\tO_SYNC                           = 0x101000\n\tO_TMPFILE                        = 0x410000\n\tO_TRUNC                          = 0x200\n\tPARENB                           = 0x100\n\tPARODD                           = 0x200\n\tPENDIN                           = 0x4000\n\tPERF_EVENT_IOC_DISABLE           = 0x2401\n\tPERF_EVENT_IOC_ENABLE            = 0x2400\n\tPERF_EVENT_IOC_ID                = 0x80082407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4008240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT      = 0x40042409\n\tPERF_EVENT_IOC_PERIOD            = 0x40082404\n\tPERF_EVENT_IOC_QUERY_BPF         = 0xc008240a\n\tPERF_EVENT_IOC_REFRESH           = 0x2402\n\tPERF_EVENT_IOC_RESET             = 0x2403\n\tPERF_EVENT_IOC_SET_BPF           = 0x40042408\n\tPERF_EVENT_IOC_SET_FILTER        = 0x40082406\n\tPERF_EVENT_IOC_SET_OUTPUT        = 0x2405\n\tPPPIOCATTACH                     = 0x4004743d\n\tPPPIOCATTCHAN                    = 0x40047438\n\tPPPIOCBRIDGECHAN                 = 0x40047435\n\tPPPIOCCONNECT                    = 0x4004743a\n\tPPPIOCDETACH                     = 0x4004743c\n\tPPPIOCDISCONN                    = 0x7439\n\tPPPIOCGASYNCMAP                  = 0x80047458\n\tPPPIOCGCHAN                      = 0x80047437\n\tPPPIOCGDEBUG                     = 0x80047441\n\tPPPIOCGFLAGS                     = 0x8004745a\n\tPPPIOCGIDLE                      = 0x8010743f\n\tPPPIOCGIDLE32                    = 0x8008743f\n\tPPPIOCGIDLE64                    = 0x8010743f\n\tPPPIOCGL2TPSTATS                 = 0x80487436\n\tPPPIOCGMRU                       = 0x80047453\n\tPPPIOCGRASYNCMAP                 = 0x80047455\n\tPPPIOCGUNIT                      = 0x80047456\n\tPPPIOCGXASYNCMAP                 = 0x80207450\n\tPPPIOCSACTIVE                    = 0x40107446\n\tPPPIOCSASYNCMAP                  = 0x40047457\n\tPPPIOCSCOMPRESS                  = 0x4010744d\n\tPPPIOCSDEBUG                     = 0x40047440\n\tPPPIOCSFLAGS                     = 0x40047459\n\tPPPIOCSMAXCID                    = 0x40047451\n\tPPPIOCSMRRU                      = 0x4004743b\n\tPPPIOCSMRU                       = 0x40047452\n\tPPPIOCSNPMODE                    = 0x4008744b\n\tPPPIOCSPASS                      = 0x40107447\n\tPPPIOCSRASYNCMAP                 = 0x40047454\n\tPPPIOCSXASYNCMAP                 = 0x4020744f\n\tPPPIOCUNBRIDGECHAN               = 0x7434\n\tPPPIOCXFERUNIT                   = 0x744e\n\tPR_SET_PTRACER_ANY               = 0xffffffffffffffff\n\tPTP_CLOCK_GETCAPS                = 0x80503d01\n\tPTP_CLOCK_GETCAPS2               = 0x80503d0a\n\tPTP_ENABLE_PPS                   = 0x40043d04\n\tPTP_ENABLE_PPS2                  = 0x40043d0d\n\tPTP_EXTTS_REQUEST                = 0x40103d02\n\tPTP_EXTTS_REQUEST2               = 0x40103d0b\n\tPTP_MASK_CLEAR_ALL               = 0x3d13\n\tPTP_MASK_EN_SINGLE               = 0x40043d14\n\tPTP_PEROUT_REQUEST               = 0x40383d03\n\tPTP_PEROUT_REQUEST2              = 0x40383d0c\n\tPTP_PIN_SETFUNC                  = 0x40603d07\n\tPTP_PIN_SETFUNC2                 = 0x40603d10\n\tPTP_SYS_OFFSET                   = 0x43403d05\n\tPTP_SYS_OFFSET2                  = 0x43403d0e\n\tPTRACE_DISABLE_TE                = 0x5010\n\tPTRACE_ENABLE_TE                 = 0x5009\n\tPTRACE_GET_LAST_BREAK            = 0x5006\n\tPTRACE_OLDSETOPTIONS             = 0x15\n\tPTRACE_PEEKDATA_AREA             = 0x5003\n\tPTRACE_PEEKTEXT_AREA             = 0x5002\n\tPTRACE_PEEKUSR_AREA              = 0x5000\n\tPTRACE_PEEK_SYSTEM_CALL          = 0x5007\n\tPTRACE_POKEDATA_AREA             = 0x5005\n\tPTRACE_POKETEXT_AREA             = 0x5004\n\tPTRACE_POKEUSR_AREA              = 0x5001\n\tPTRACE_POKE_SYSTEM_CALL          = 0x5008\n\tPTRACE_PROT                      = 0x15\n\tPTRACE_SINGLEBLOCK               = 0xc\n\tPTRACE_SYSEMU                    = 0x1f\n\tPTRACE_SYSEMU_SINGLESTEP         = 0x20\n\tPTRACE_TE_ABORT_RAND             = 0x5011\n\tPT_ACR0                          = 0x90\n\tPT_ACR1                          = 0x94\n\tPT_ACR10                         = 0xb8\n\tPT_ACR11                         = 0xbc\n\tPT_ACR12                         = 0xc0\n\tPT_ACR13                         = 0xc4\n\tPT_ACR14                         = 0xc8\n\tPT_ACR15                         = 0xcc\n\tPT_ACR2                          = 0x98\n\tPT_ACR3                          = 0x9c\n\tPT_ACR4                          = 0xa0\n\tPT_ACR5                          = 0xa4\n\tPT_ACR6                          = 0xa8\n\tPT_ACR7                          = 0xac\n\tPT_ACR8                          = 0xb0\n\tPT_ACR9                          = 0xb4\n\tPT_CR_10                         = 0x168\n\tPT_CR_11                         = 0x170\n\tPT_CR_9                          = 0x160\n\tPT_ENDREGS                       = 0x1af\n\tPT_FPC                           = 0xd8\n\tPT_FPR0                          = 0xe0\n\tPT_FPR1                          = 0xe8\n\tPT_FPR10                         = 0x130\n\tPT_FPR11                         = 0x138\n\tPT_FPR12                         = 0x140\n\tPT_FPR13                         = 0x148\n\tPT_FPR14                         = 0x150\n\tPT_FPR15                         = 0x158\n\tPT_FPR2                          = 0xf0\n\tPT_FPR3                          = 0xf8\n\tPT_FPR4                          = 0x100\n\tPT_FPR5                          = 0x108\n\tPT_FPR6                          = 0x110\n\tPT_FPR7                          = 0x118\n\tPT_FPR8                          = 0x120\n\tPT_FPR9                          = 0x128\n\tPT_GPR0                          = 0x10\n\tPT_GPR1                          = 0x18\n\tPT_GPR10                         = 0x60\n\tPT_GPR11                         = 0x68\n\tPT_GPR12                         = 0x70\n\tPT_GPR13                         = 0x78\n\tPT_GPR14                         = 0x80\n\tPT_GPR15                         = 0x88\n\tPT_GPR2                          = 0x20\n\tPT_GPR3                          = 0x28\n\tPT_GPR4                          = 0x30\n\tPT_GPR5                          = 0x38\n\tPT_GPR6                          = 0x40\n\tPT_GPR7                          = 0x48\n\tPT_GPR8                          = 0x50\n\tPT_GPR9                          = 0x58\n\tPT_IEEE_IP                       = 0x1a8\n\tPT_LASTOFF                       = 0x1a8\n\tPT_ORIGGPR2                      = 0xd0\n\tPT_PSWADDR                       = 0x8\n\tPT_PSWMASK                       = 0x0\n\tRLIMIT_AS                        = 0x9\n\tRLIMIT_MEMLOCK                   = 0x8\n\tRLIMIT_NOFILE                    = 0x7\n\tRLIMIT_NPROC                     = 0x6\n\tRLIMIT_RSS                       = 0x5\n\tRNDADDENTROPY                    = 0x40085203\n\tRNDADDTOENTCNT                   = 0x40045201\n\tRNDCLEARPOOL                     = 0x5206\n\tRNDGETENTCNT                     = 0x80045200\n\tRNDGETPOOL                       = 0x80085202\n\tRNDRESEEDCRNG                    = 0x5207\n\tRNDZAPENTCNT                     = 0x5204\n\tRTC_AIE_OFF                      = 0x7002\n\tRTC_AIE_ON                       = 0x7001\n\tRTC_ALM_READ                     = 0x80247008\n\tRTC_ALM_SET                      = 0x40247007\n\tRTC_EPOCH_READ                   = 0x8008700d\n\tRTC_EPOCH_SET                    = 0x4008700e\n\tRTC_IRQP_READ                    = 0x8008700b\n\tRTC_IRQP_SET                     = 0x4008700c\n\tRTC_PARAM_GET                    = 0x40187013\n\tRTC_PARAM_SET                    = 0x40187014\n\tRTC_PIE_OFF                      = 0x7006\n\tRTC_PIE_ON                       = 0x7005\n\tRTC_PLL_GET                      = 0x80207011\n\tRTC_PLL_SET                      = 0x40207012\n\tRTC_RD_TIME                      = 0x80247009\n\tRTC_SET_TIME                     = 0x4024700a\n\tRTC_UIE_OFF                      = 0x7004\n\tRTC_UIE_ON                       = 0x7003\n\tRTC_VL_CLR                       = 0x7014\n\tRTC_VL_READ                      = 0x80047013\n\tRTC_WIE_OFF                      = 0x7010\n\tRTC_WIE_ON                       = 0x700f\n\tRTC_WKALM_RD                     = 0x80287010\n\tRTC_WKALM_SET                    = 0x4028700f\n\tSCM_DEVMEM_DMABUF                = 0x4f\n\tSCM_DEVMEM_LINEAR                = 0x4e\n\tSCM_TIMESTAMPING                 = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS       = 0x36\n\tSCM_TIMESTAMPING_PKTINFO         = 0x3a\n\tSCM_TIMESTAMPNS                  = 0x23\n\tSCM_TS_OPT_ID                    = 0x51\n\tSCM_TXTIME                       = 0x3d\n\tSCM_WIFI_STATUS                  = 0x29\n\tSECCOMP_IOCTL_NOTIF_ADDFD        = 0x40182103\n\tSECCOMP_IOCTL_NOTIF_ID_VALID     = 0x40082102\n\tSECCOMP_IOCTL_NOTIF_SET_FLAGS    = 0x40082104\n\tSFD_CLOEXEC                      = 0x80000\n\tSFD_NONBLOCK                     = 0x800\n\tSIOCATMARK                       = 0x8905\n\tSIOCGPGRP                        = 0x8904\n\tSIOCGSTAMPNS_NEW                 = 0x80108907\n\tSIOCGSTAMP_NEW                   = 0x80108906\n\tSIOCINQ                          = 0x541b\n\tSIOCOUTQ                         = 0x5411\n\tSIOCSPGRP                        = 0x8902\n\tSOCK_CLOEXEC                     = 0x80000\n\tSOCK_DGRAM                       = 0x2\n\tSOCK_NONBLOCK                    = 0x800\n\tSOCK_STREAM                      = 0x1\n\tSOL_SOCKET                       = 0x1\n\tSO_ACCEPTCONN                    = 0x1e\n\tSO_ATTACH_BPF                    = 0x32\n\tSO_ATTACH_REUSEPORT_CBPF         = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF         = 0x34\n\tSO_BINDTODEVICE                  = 0x19\n\tSO_BINDTOIFINDEX                 = 0x3e\n\tSO_BPF_EXTENSIONS                = 0x30\n\tSO_BROADCAST                     = 0x6\n\tSO_BSDCOMPAT                     = 0xe\n\tSO_BUF_LOCK                      = 0x48\n\tSO_BUSY_POLL                     = 0x2e\n\tSO_BUSY_POLL_BUDGET              = 0x46\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\n\tSO_DEVMEM_DMABUF                 = 0x4f\n\tSO_DEVMEM_DONTNEED               = 0x50\n\tSO_DEVMEM_LINEAR                 = 0x4e\n\tSO_DOMAIN                        = 0x27\n\tSO_DONTROUTE                     = 0x5\n\tSO_ERROR                         = 0x4\n\tSO_INCOMING_CPU                  = 0x31\n\tSO_INCOMING_NAPI_ID              = 0x38\n\tSO_KEEPALIVE                     = 0x9\n\tSO_LINGER                        = 0xd\n\tSO_LOCK_FILTER                   = 0x2c\n\tSO_MARK                          = 0x24\n\tSO_MAX_PACING_RATE               = 0x2f\n\tSO_MEMINFO                       = 0x37\n\tSO_NETNS_COOKIE                  = 0x47\n\tSO_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0xa\n\tSO_PASSCRED                      = 0x10\n\tSO_PASSPIDFD                     = 0x4c\n\tSO_PASSRIGHTS                    = 0x53\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x11\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERPIDFD                     = 0x4d\n\tSO_PEERSEC                       = 0x1f\n\tSO_PREFER_BUSY_POLL              = 0x45\n\tSO_PROTOCOL                      = 0x26\n\tSO_RCVBUF                        = 0x8\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x12\n\tSO_RCVMARK                       = 0x4b\n\tSO_RCVPRIORITY                   = 0x52\n\tSO_RCVTIMEO                      = 0x14\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x14\n\tSO_RESERVE_MEM                   = 0x49\n\tSO_REUSEADDR                     = 0x2\n\tSO_REUSEPORT                     = 0xf\n\tSO_RXQ_OVFL                      = 0x28\n\tSO_SECURITY_AUTHENTICATION       = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK   = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT = 0x17\n\tSO_SELECT_ERR_QUEUE              = 0x2d\n\tSO_SNDBUF                        = 0x7\n\tSO_SNDBUFFORCE                   = 0x20\n\tSO_SNDLOWAT                      = 0x13\n\tSO_SNDTIMEO                      = 0x15\n\tSO_SNDTIMEO_NEW                  = 0x43\n\tSO_SNDTIMEO_OLD                  = 0x15\n\tSO_TIMESTAMPING                  = 0x25\n\tSO_TIMESTAMPING_NEW              = 0x41\n\tSO_TIMESTAMPING_OLD              = 0x25\n\tSO_TIMESTAMPNS                   = 0x23\n\tSO_TIMESTAMPNS_NEW               = 0x40\n\tSO_TIMESTAMPNS_OLD               = 0x23\n\tSO_TIMESTAMP_NEW                 = 0x3f\n\tSO_TXREHASH                      = 0x4a\n\tSO_TXTIME                        = 0x3d\n\tSO_TYPE                          = 0x3\n\tSO_WIFI_STATUS                   = 0x29\n\tSO_ZEROCOPY                      = 0x3c\n\tTAB1                             = 0x800\n\tTAB2                             = 0x1000\n\tTAB3                             = 0x1800\n\tTABDLY                           = 0x1800\n\tTCFLSH                           = 0x540b\n\tTCGETA                           = 0x5405\n\tTCGETS                           = 0x5401\n\tTCGETS2                          = 0x802c542a\n\tTCGETX                           = 0x5432\n\tTCSAFLUSH                        = 0x2\n\tTCSBRK                           = 0x5409\n\tTCSBRKP                          = 0x5425\n\tTCSETA                           = 0x5406\n\tTCSETAF                          = 0x5408\n\tTCSETAW                          = 0x5407\n\tTCSETS                           = 0x5402\n\tTCSETS2                          = 0x402c542b\n\tTCSETSF                          = 0x5404\n\tTCSETSF2                         = 0x402c542d\n\tTCSETSW                          = 0x5403\n\tTCSETSW2                         = 0x402c542c\n\tTCSETX                           = 0x5433\n\tTCSETXF                          = 0x5434\n\tTCSETXW                          = 0x5435\n\tTCXONC                           = 0x540a\n\tTFD_CLOEXEC                      = 0x80000\n\tTFD_NONBLOCK                     = 0x800\n\tTIOCCBRK                         = 0x5428\n\tTIOCCONS                         = 0x541d\n\tTIOCEXCL                         = 0x540c\n\tTIOCGDEV                         = 0x80045432\n\tTIOCGETD                         = 0x5424\n\tTIOCGEXCL                        = 0x80045440\n\tTIOCGICOUNT                      = 0x545d\n\tTIOCGISO7816                     = 0x80285442\n\tTIOCGLCKTRMIOS                   = 0x5456\n\tTIOCGPGRP                        = 0x540f\n\tTIOCGPKT                         = 0x80045438\n\tTIOCGPTLCK                       = 0x80045439\n\tTIOCGPTN                         = 0x80045430\n\tTIOCGPTPEER                      = 0x5441\n\tTIOCGRS485                       = 0x542e\n\tTIOCGSERIAL                      = 0x541e\n\tTIOCGSID                         = 0x5429\n\tTIOCGSOFTCAR                     = 0x5419\n\tTIOCGWINSZ                       = 0x5413\n\tTIOCINQ                          = 0x541b\n\tTIOCLINUX                        = 0x541c\n\tTIOCMBIC                         = 0x5417\n\tTIOCMBIS                         = 0x5416\n\tTIOCMGET                         = 0x5415\n\tTIOCMIWAIT                       = 0x545c\n\tTIOCMSET                         = 0x5418\n\tTIOCM_CAR                        = 0x40\n\tTIOCM_CD                         = 0x40\n\tTIOCM_CTS                        = 0x20\n\tTIOCM_DSR                        = 0x100\n\tTIOCM_RI                         = 0x80\n\tTIOCM_RNG                        = 0x80\n\tTIOCM_SR                         = 0x10\n\tTIOCM_ST                         = 0x8\n\tTIOCNOTTY                        = 0x5422\n\tTIOCNXCL                         = 0x540d\n\tTIOCOUTQ                         = 0x5411\n\tTIOCPKT                          = 0x5420\n\tTIOCSBRK                         = 0x5427\n\tTIOCSCTTY                        = 0x540e\n\tTIOCSERCONFIG                    = 0x5453\n\tTIOCSERGETLSR                    = 0x5459\n\tTIOCSERGETMULTI                  = 0x545a\n\tTIOCSERGSTRUCT                   = 0x5458\n\tTIOCSERGWILD                     = 0x5454\n\tTIOCSERSETMULTI                  = 0x545b\n\tTIOCSERSWILD                     = 0x5455\n\tTIOCSER_TEMT                     = 0x1\n\tTIOCSETD                         = 0x5423\n\tTIOCSIG                          = 0x40045436\n\tTIOCSISO7816                     = 0xc0285443\n\tTIOCSLCKTRMIOS                   = 0x5457\n\tTIOCSPGRP                        = 0x5410\n\tTIOCSPTLCK                       = 0x40045431\n\tTIOCSRS485                       = 0x542f\n\tTIOCSSERIAL                      = 0x541f\n\tTIOCSSOFTCAR                     = 0x541a\n\tTIOCSTI                          = 0x5412\n\tTIOCSWINSZ                       = 0x5414\n\tTIOCVHANGUP                      = 0x5437\n\tTOSTOP                           = 0x100\n\tTUNATTACHFILTER                  = 0x401054d5\n\tTUNDETACHFILTER                  = 0x401054d6\n\tTUNGETDEVNETNS                   = 0x54e3\n\tTUNGETFEATURES                   = 0x800454cf\n\tTUNGETFILTER                     = 0x801054db\n\tTUNGETIFF                        = 0x800454d2\n\tTUNGETSNDBUF                     = 0x800454d3\n\tTUNGETVNETBE                     = 0x800454df\n\tTUNGETVNETHDRSZ                  = 0x800454d7\n\tTUNGETVNETLE                     = 0x800454dd\n\tTUNSETCARRIER                    = 0x400454e2\n\tTUNSETDEBUG                      = 0x400454c9\n\tTUNSETFILTEREBPF                 = 0x800454e1\n\tTUNSETGROUP                      = 0x400454ce\n\tTUNSETIFF                        = 0x400454ca\n\tTUNSETIFINDEX                    = 0x400454da\n\tTUNSETLINK                       = 0x400454cd\n\tTUNSETNOCSUM                     = 0x400454c8\n\tTUNSETOFFLOAD                    = 0x400454d0\n\tTUNSETOWNER                      = 0x400454cc\n\tTUNSETPERSIST                    = 0x400454cb\n\tTUNSETQUEUE                      = 0x400454d9\n\tTUNSETSNDBUF                     = 0x400454d4\n\tTUNSETSTEERINGEBPF               = 0x800454e0\n\tTUNSETTXFILTER                   = 0x400454d1\n\tTUNSETVNETBE                     = 0x400454de\n\tTUNSETVNETHDRSZ                  = 0x400454d8\n\tTUNSETVNETLE                     = 0x400454dc\n\tUBI_IOCATT                       = 0x40186f40\n\tUBI_IOCDET                       = 0x40046f41\n\tUBI_IOCEBCH                      = 0x40044f02\n\tUBI_IOCEBER                      = 0x40044f01\n\tUBI_IOCEBISMAP                   = 0x80044f05\n\tUBI_IOCEBMAP                     = 0x40084f03\n\tUBI_IOCEBUNMAP                   = 0x40044f04\n\tUBI_IOCMKVOL                     = 0x40986f00\n\tUBI_IOCRMVOL                     = 0x40046f01\n\tUBI_IOCRNVOL                     = 0x51106f03\n\tUBI_IOCRPEB                      = 0x40046f04\n\tUBI_IOCRSVOL                     = 0x400c6f02\n\tUBI_IOCSETVOLPROP                = 0x40104f06\n\tUBI_IOCSPEB                      = 0x40046f05\n\tUBI_IOCVOLCRBLK                  = 0x40804f07\n\tUBI_IOCVOLRMBLK                  = 0x4f08\n\tUBI_IOCVOLUP                     = 0x40084f00\n\tVDISCARD                         = 0xd\n\tVEOF                             = 0x4\n\tVEOL                             = 0xb\n\tVEOL2                            = 0x10\n\tVMIN                             = 0x6\n\tVREPRINT                         = 0xc\n\tVSTART                           = 0x8\n\tVSTOP                            = 0x9\n\tVSUSP                            = 0xa\n\tVSWTC                            = 0x7\n\tVT1                              = 0x4000\n\tVTDLY                            = 0x4000\n\tVTIME                            = 0x5\n\tVWERASE                          = 0xe\n\tWDIOC_GETBOOTSTATUS              = 0x80045702\n\tWDIOC_GETPRETIMEOUT              = 0x80045709\n\tWDIOC_GETSTATUS                  = 0x80045701\n\tWDIOC_GETSUPPORT                 = 0x80285700\n\tWDIOC_GETTEMP                    = 0x80045703\n\tWDIOC_GETTIMELEFT                = 0x8004570a\n\tWDIOC_GETTIMEOUT                 = 0x80045707\n\tWDIOC_KEEPALIVE                  = 0x80045705\n\tWDIOC_SETOPTIONS                 = 0x80045704\n\tWORDSIZE                         = 0x40\n\tXCASE                            = 0x4\n\tXTABS                            = 0x1800\n\t_HIDIOCGRAWNAME                  = 0x80804804\n\t_HIDIOCGRAWPHYS                  = 0x80404805\n\t_HIDIOCGRAWUNIQ                  = 0x80404808\n)\n\n// Errors\nconst (\n\tEADDRINUSE      = syscall.Errno(0x62)\n\tEADDRNOTAVAIL   = syscall.Errno(0x63)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x61)\n\tEALREADY        = syscall.Errno(0x72)\n\tEBADE           = syscall.Errno(0x34)\n\tEBADFD          = syscall.Errno(0x4d)\n\tEBADMSG         = syscall.Errno(0x4a)\n\tEBADR           = syscall.Errno(0x35)\n\tEBADRQC         = syscall.Errno(0x38)\n\tEBADSLT         = syscall.Errno(0x39)\n\tEBFONT          = syscall.Errno(0x3b)\n\tECANCELED       = syscall.Errno(0x7d)\n\tECHRNG          = syscall.Errno(0x2c)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x67)\n\tECONNREFUSED    = syscall.Errno(0x6f)\n\tECONNRESET      = syscall.Errno(0x68)\n\tEDEADLK         = syscall.Errno(0x23)\n\tEDEADLOCK       = syscall.Errno(0x23)\n\tEDESTADDRREQ    = syscall.Errno(0x59)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x7a)\n\tEHOSTDOWN       = syscall.Errno(0x70)\n\tEHOSTUNREACH    = syscall.Errno(0x71)\n\tEHWPOISON       = syscall.Errno(0x85)\n\tEIDRM           = syscall.Errno(0x2b)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x73)\n\tEISCONN         = syscall.Errno(0x6a)\n\tEISNAM          = syscall.Errno(0x78)\n\tEKEYEXPIRED     = syscall.Errno(0x7f)\n\tEKEYREJECTED    = syscall.Errno(0x81)\n\tEKEYREVOKED     = syscall.Errno(0x80)\n\tEL2HLT          = syscall.Errno(0x33)\n\tEL2NSYNC        = syscall.Errno(0x2d)\n\tEL3HLT          = syscall.Errno(0x2e)\n\tEL3RST          = syscall.Errno(0x2f)\n\tELIBACC         = syscall.Errno(0x4f)\n\tELIBBAD         = syscall.Errno(0x50)\n\tELIBEXEC        = syscall.Errno(0x53)\n\tELIBMAX         = syscall.Errno(0x52)\n\tELIBSCN         = syscall.Errno(0x51)\n\tELNRNG          = syscall.Errno(0x30)\n\tELOOP           = syscall.Errno(0x28)\n\tEMEDIUMTYPE     = syscall.Errno(0x7c)\n\tEMSGSIZE        = syscall.Errno(0x5a)\n\tEMULTIHOP       = syscall.Errno(0x48)\n\tENAMETOOLONG    = syscall.Errno(0x24)\n\tENAVAIL         = syscall.Errno(0x77)\n\tENETDOWN        = syscall.Errno(0x64)\n\tENETRESET       = syscall.Errno(0x66)\n\tENETUNREACH     = syscall.Errno(0x65)\n\tENOANO          = syscall.Errno(0x37)\n\tENOBUFS         = syscall.Errno(0x69)\n\tENOCSI          = syscall.Errno(0x32)\n\tENODATA         = syscall.Errno(0x3d)\n\tENOKEY          = syscall.Errno(0x7e)\n\tENOLCK          = syscall.Errno(0x25)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x7b)\n\tENOMSG          = syscall.Errno(0x2a)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x5c)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x26)\n\tENOTCONN        = syscall.Errno(0x6b)\n\tENOTEMPTY       = syscall.Errno(0x27)\n\tENOTNAM         = syscall.Errno(0x76)\n\tENOTRECOVERABLE = syscall.Errno(0x83)\n\tENOTSOCK        = syscall.Errno(0x58)\n\tENOTSUP         = syscall.Errno(0x5f)\n\tENOTUNIQ        = syscall.Errno(0x4c)\n\tEOPNOTSUPP      = syscall.Errno(0x5f)\n\tEOVERFLOW       = syscall.Errno(0x4b)\n\tEOWNERDEAD      = syscall.Errno(0x82)\n\tEPFNOSUPPORT    = syscall.Errno(0x60)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x5d)\n\tEPROTOTYPE      = syscall.Errno(0x5b)\n\tEREMCHG         = syscall.Errno(0x4e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x79)\n\tERESTART        = syscall.Errno(0x55)\n\tERFKILL         = syscall.Errno(0x84)\n\tESHUTDOWN       = syscall.Errno(0x6c)\n\tESOCKTNOSUPPORT = syscall.Errno(0x5e)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x74)\n\tESTRPIPE        = syscall.Errno(0x56)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x6e)\n\tETOOMANYREFS    = syscall.Errno(0x6d)\n\tEUCLEAN         = syscall.Errno(0x75)\n\tEUNATCH         = syscall.Errno(0x31)\n\tEUSERS          = syscall.Errno(0x57)\n\tEXFULL          = syscall.Errno(0x36)\n)\n\n// Signals\nconst (\n\tSIGBUS    = syscall.Signal(0x7)\n\tSIGCHLD   = syscall.Signal(0x11)\n\tSIGCLD    = syscall.Signal(0x11)\n\tSIGCONT   = syscall.Signal(0x12)\n\tSIGIO     = syscall.Signal(0x1d)\n\tSIGPOLL   = syscall.Signal(0x1d)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x1e)\n\tSIGSTKFLT = syscall.Signal(0x10)\n\tSIGSTOP   = syscall.Signal(0x13)\n\tSIGSYS    = syscall.Signal(0x1f)\n\tSIGTSTP   = syscall.Signal(0x14)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x17)\n\tSIGUSR1   = syscall.Signal(0xa)\n\tSIGUSR2   = syscall.Signal(0xc)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{36, \"ENAMETOOLONG\", \"file name too long\"},\n\t{37, \"ENOLCK\", \"no locks available\"},\n\t{38, \"ENOSYS\", \"function not implemented\"},\n\t{39, \"ENOTEMPTY\", \"directory not empty\"},\n\t{40, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{42, \"ENOMSG\", \"no message of desired type\"},\n\t{43, \"EIDRM\", \"identifier removed\"},\n\t{44, \"ECHRNG\", \"channel number out of range\"},\n\t{45, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{46, \"EL3HLT\", \"level 3 halted\"},\n\t{47, \"EL3RST\", \"level 3 reset\"},\n\t{48, \"ELNRNG\", \"link number out of range\"},\n\t{49, \"EUNATCH\", \"protocol driver not attached\"},\n\t{50, \"ENOCSI\", \"no CSI structure available\"},\n\t{51, \"EL2HLT\", \"level 2 halted\"},\n\t{52, \"EBADE\", \"invalid exchange\"},\n\t{53, \"EBADR\", \"invalid request descriptor\"},\n\t{54, \"EXFULL\", \"exchange full\"},\n\t{55, \"ENOANO\", \"no anode\"},\n\t{56, \"EBADRQC\", \"invalid request code\"},\n\t{57, \"EBADSLT\", \"invalid slot\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{72, \"EMULTIHOP\", \"multihop attempted\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EBADMSG\", \"bad message\"},\n\t{75, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{76, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{77, \"EBADFD\", \"file descriptor in bad state\"},\n\t{78, \"EREMCHG\", \"remote address changed\"},\n\t{79, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{80, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{81, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{82, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{83, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{84, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{85, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{86, \"ESTRPIPE\", \"streams pipe error\"},\n\t{87, \"EUSERS\", \"too many users\"},\n\t{88, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{89, \"EDESTADDRREQ\", \"destination address required\"},\n\t{90, \"EMSGSIZE\", \"message too long\"},\n\t{91, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{92, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{93, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{94, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{95, \"ENOTSUP\", \"operation not supported\"},\n\t{96, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{97, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{98, \"EADDRINUSE\", \"address already in use\"},\n\t{99, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{100, \"ENETDOWN\", \"network is down\"},\n\t{101, \"ENETUNREACH\", \"network is unreachable\"},\n\t{102, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{103, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{104, \"ECONNRESET\", \"connection reset by peer\"},\n\t{105, \"ENOBUFS\", \"no buffer space available\"},\n\t{106, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{107, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{108, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{109, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{110, \"ETIMEDOUT\", \"connection timed out\"},\n\t{111, \"ECONNREFUSED\", \"connection refused\"},\n\t{112, \"EHOSTDOWN\", \"host is down\"},\n\t{113, \"EHOSTUNREACH\", \"no route to host\"},\n\t{114, \"EALREADY\", \"operation already in progress\"},\n\t{115, \"EINPROGRESS\", \"operation now in progress\"},\n\t{116, \"ESTALE\", \"stale file handle\"},\n\t{117, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{118, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{119, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{120, \"EISNAM\", \"is a named type file\"},\n\t{121, \"EREMOTEIO\", \"remote I/O error\"},\n\t{122, \"EDQUOT\", \"disk quota exceeded\"},\n\t{123, \"ENOMEDIUM\", \"no medium found\"},\n\t{124, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{125, \"ECANCELED\", \"operation canceled\"},\n\t{126, \"ENOKEY\", \"required key not available\"},\n\t{127, \"EKEYEXPIRED\", \"key has expired\"},\n\t{128, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{129, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{130, \"EOWNERDEAD\", \"owner died\"},\n\t{131, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{132, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{133, \"EHWPOISON\", \"memory page has hardware error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGBUS\", \"bus error\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGUSR1\", \"user defined signal 1\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGUSR2\", \"user defined signal 2\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGSTKFLT\", \"stack fault\"},\n\t{17, \"SIGCHLD\", \"child exited\"},\n\t{18, \"SIGCONT\", \"continued\"},\n\t{19, \"SIGSTOP\", \"stopped (signal)\"},\n\t{20, \"SIGTSTP\", \"stopped\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGURG\", \"urgent I/O condition\"},\n\t{24, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"file size limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window changed\"},\n\t{29, \"SIGIO\", \"I/O possible\"},\n\t{30, \"SIGPWR\", \"power failure\"},\n\t{31, \"SIGSYS\", \"bad system call\"},\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/sparc64/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build sparc64 && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/sparc64/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tASI_LEON_DFLUSH                  = 0x11\n\tASI_LEON_IFLUSH                  = 0x10\n\tASI_LEON_MMUFLUSH                = 0x18\n\tB1000000                         = 0x1008\n\tB115200                          = 0x1002\n\tB1152000                         = 0x1009\n\tB1500000                         = 0x100a\n\tB2000000                         = 0x100b\n\tB230400                          = 0x1003\n\tB2500000                         = 0x100c\n\tB3000000                         = 0x100d\n\tB3500000                         = 0x100e\n\tB4000000                         = 0x100f\n\tB460800                          = 0x1004\n\tB500000                          = 0x1005\n\tB57600                           = 0x1001\n\tB576000                          = 0x1006\n\tB921600                          = 0x1007\n\tBLKALIGNOFF                      = 0x2000127a\n\tBLKBSZGET                        = 0x40081270\n\tBLKBSZSET                        = 0x80081271\n\tBLKDISCARD                       = 0x20001277\n\tBLKDISCARDZEROES                 = 0x2000127c\n\tBLKFLSBUF                        = 0x20001261\n\tBLKFRAGET                        = 0x20001265\n\tBLKFRASET                        = 0x20001264\n\tBLKGETDISKSEQ                    = 0x40081280\n\tBLKGETSIZE                       = 0x20001260\n\tBLKGETSIZE64                     = 0x40081272\n\tBLKIOMIN                         = 0x20001278\n\tBLKIOOPT                         = 0x20001279\n\tBLKPBSZGET                       = 0x2000127b\n\tBLKRAGET                         = 0x20001263\n\tBLKRASET                         = 0x20001262\n\tBLKROGET                         = 0x2000125e\n\tBLKROSET                         = 0x2000125d\n\tBLKROTATIONAL                    = 0x2000127e\n\tBLKRRPART                        = 0x2000125f\n\tBLKSECDISCARD                    = 0x2000127d\n\tBLKSECTGET                       = 0x20001267\n\tBLKSECTSET                       = 0x20001266\n\tBLKSSZGET                        = 0x20001268\n\tBLKZEROOUT                       = 0x2000127f\n\tBOTHER                           = 0x1000\n\tBS1                              = 0x2000\n\tBSDLY                            = 0x2000\n\tCBAUD                            = 0x100f\n\tCBAUDEX                          = 0x1000\n\tCIBAUD                           = 0x100f0000\n\tCLOCAL                           = 0x800\n\tCR1                              = 0x200\n\tCR2                              = 0x400\n\tCR3                              = 0x600\n\tCRDLY                            = 0x600\n\tCREAD                            = 0x80\n\tCS6                              = 0x10\n\tCS7                              = 0x20\n\tCS8                              = 0x30\n\tCSIZE                            = 0x30\n\tCSTOPB                           = 0x40\n\tDM_MPATH_PROBE_PATHS             = 0x2000fd12\n\tECCGETLAYOUT                     = 0x41484d11\n\tECCGETSTATS                      = 0x40104d12\n\tECHOCTL                          = 0x200\n\tECHOE                            = 0x10\n\tECHOK                            = 0x20\n\tECHOKE                           = 0x800\n\tECHONL                           = 0x40\n\tECHOPRT                          = 0x400\n\tEFD_CLOEXEC                      = 0x400000\n\tEFD_NONBLOCK                     = 0x4000\n\tEMT_TAGOVF                       = 0x1\n\tEPIOCGPARAMS                     = 0x40088a02\n\tEPIOCSPARAMS                     = 0x80088a01\n\tEPOLL_CLOEXEC                    = 0x400000\n\tEXTPROC                          = 0x10000\n\tFF1                              = 0x8000\n\tFFDLY                            = 0x8000\n\tFICLONE                          = 0x80049409\n\tFICLONERANGE                     = 0x8020940d\n\tFLUSHO                           = 0x1000\n\tFS_IOC_ENABLE_VERITY             = 0x80806685\n\tFS_IOC_GETFLAGS                  = 0x40086601\n\tFS_IOC_GET_ENCRYPTION_NONCE      = 0x4010661b\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x800c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x80106614\n\tFS_IOC_SETFLAGS                  = 0x80086602\n\tFS_IOC_SET_ENCRYPTION_POLICY     = 0x400c6613\n\tF_GETLK                          = 0x7\n\tF_GETLK64                        = 0x7\n\tF_GETOWN                         = 0x5\n\tF_RDLCK                          = 0x1\n\tF_SETLK                          = 0x8\n\tF_SETLK64                        = 0x8\n\tF_SETLKW                         = 0x9\n\tF_SETLKW64                       = 0x9\n\tF_SETOWN                         = 0x6\n\tF_UNLCK                          = 0x3\n\tF_WRLCK                          = 0x2\n\tHIDIOCGRAWINFO                   = 0x40084803\n\tHIDIOCGRDESC                     = 0x50044802\n\tHIDIOCGRDESCSIZE                 = 0x40044801\n\tHIDIOCREVOKE                     = 0x8004480d\n\tHUPCL                            = 0x400\n\tICANON                           = 0x2\n\tIEXTEN                           = 0x8000\n\tIN_CLOEXEC                       = 0x400000\n\tIN_NONBLOCK                      = 0x4000\n\tIOCTL_MEI_NOTIFY_GET             = 0x40044803\n\tIOCTL_MEI_NOTIFY_SET             = 0x80044802\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x200007b9\n\tIPV6_FLOWINFO_MASK               = 0xfffffff\n\tIPV6_FLOWLABEL_MASK              = 0xfffff\n\tISIG                             = 0x1\n\tIUCLC                            = 0x200\n\tIXOFF                            = 0x1000\n\tIXON                             = 0x400\n\tMAP_ANON                         = 0x20\n\tMAP_ANONYMOUS                    = 0x20\n\tMAP_DENYWRITE                    = 0x800\n\tMAP_EXECUTABLE                   = 0x1000\n\tMAP_GROWSDOWN                    = 0x200\n\tMAP_HUGETLB                      = 0x40000\n\tMAP_LOCKED                       = 0x100\n\tMAP_NONBLOCK                     = 0x10000\n\tMAP_NORESERVE                    = 0x40\n\tMAP_POPULATE                     = 0x8000\n\tMAP_RENAME                       = 0x20\n\tMAP_STACK                        = 0x20000\n\tMAP_SYNC                         = 0x80000\n\tMCL_CURRENT                      = 0x2000\n\tMCL_FUTURE                       = 0x4000\n\tMCL_ONFAULT                      = 0x8000\n\tMEMERASE                         = 0x80084d02\n\tMEMERASE64                       = 0x80104d14\n\tMEMGETBADBLOCK                   = 0x80084d0b\n\tMEMGETINFO                       = 0x40204d01\n\tMEMGETOOBSEL                     = 0x40c84d0a\n\tMEMGETREGIONCOUNT                = 0x40044d07\n\tMEMISLOCKED                      = 0x40084d17\n\tMEMLOCK                          = 0x80084d05\n\tMEMREAD                          = 0xc0404d1a\n\tMEMREADOOB                       = 0xc0104d04\n\tMEMSETBADBLOCK                   = 0x80084d0c\n\tMEMUNLOCK                        = 0x80084d06\n\tMEMWRITEOOB                      = 0xc0104d03\n\tMTDFILEMODE                      = 0x20004d13\n\tNFDBITS                          = 0x40\n\tNLDLY                            = 0x100\n\tNOFLSH                           = 0x80\n\tNS_GET_MNTNS_ID                  = 0x4008b705\n\tNS_GET_NSTYPE                    = 0x2000b703\n\tNS_GET_OWNER_UID                 = 0x2000b704\n\tNS_GET_PARENT                    = 0x2000b702\n\tNS_GET_PID_FROM_PIDNS            = 0x4004b706\n\tNS_GET_PID_IN_PIDNS              = 0x4004b708\n\tNS_GET_TGID_FROM_PIDNS           = 0x4004b707\n\tNS_GET_TGID_IN_PIDNS             = 0x4004b709\n\tNS_GET_USERNS                    = 0x2000b701\n\tOLCUC                            = 0x2\n\tONLCR                            = 0x4\n\tOTPERASE                         = 0x800c4d19\n\tOTPGETREGIONCOUNT                = 0x80044d0e\n\tOTPGETREGIONINFO                 = 0x800c4d0f\n\tOTPLOCK                          = 0x400c4d10\n\tOTPSELECT                        = 0x40044d0d\n\tO_APPEND                         = 0x8\n\tO_ASYNC                          = 0x40\n\tO_CLOEXEC                        = 0x400000\n\tO_CREAT                          = 0x200\n\tO_DIRECT                         = 0x100000\n\tO_DIRECTORY                      = 0x10000\n\tO_DSYNC                          = 0x2000\n\tO_EXCL                           = 0x800\n\tO_FSYNC                          = 0x802000\n\tO_LARGEFILE                      = 0x0\n\tO_NDELAY                         = 0x4004\n\tO_NOATIME                        = 0x200000\n\tO_NOCTTY                         = 0x8000\n\tO_NOFOLLOW                       = 0x20000\n\tO_NONBLOCK                       = 0x4000\n\tO_PATH                           = 0x1000000\n\tO_RSYNC                          = 0x802000\n\tO_SYNC                           = 0x802000\n\tO_TMPFILE                        = 0x2010000\n\tO_TRUNC                          = 0x400\n\tPARENB                           = 0x100\n\tPARODD                           = 0x200\n\tPENDIN                           = 0x4000\n\tPERF_EVENT_IOC_DISABLE           = 0x20002401\n\tPERF_EVENT_IOC_ENABLE            = 0x20002400\n\tPERF_EVENT_IOC_ID                = 0x40082407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8008240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT      = 0x80042409\n\tPERF_EVENT_IOC_PERIOD            = 0x80082404\n\tPERF_EVENT_IOC_QUERY_BPF         = 0xc008240a\n\tPERF_EVENT_IOC_REFRESH           = 0x20002402\n\tPERF_EVENT_IOC_RESET             = 0x20002403\n\tPERF_EVENT_IOC_SET_BPF           = 0x80042408\n\tPERF_EVENT_IOC_SET_FILTER        = 0x80082406\n\tPERF_EVENT_IOC_SET_OUTPUT        = 0x20002405\n\tPPPIOCATTACH                     = 0x8004743d\n\tPPPIOCATTCHAN                    = 0x80047438\n\tPPPIOCBRIDGECHAN                 = 0x80047435\n\tPPPIOCCONNECT                    = 0x8004743a\n\tPPPIOCDETACH                     = 0x8004743c\n\tPPPIOCDISCONN                    = 0x20007439\n\tPPPIOCGASYNCMAP                  = 0x40047458\n\tPPPIOCGCHAN                      = 0x40047437\n\tPPPIOCGDEBUG                     = 0x40047441\n\tPPPIOCGFLAGS                     = 0x4004745a\n\tPPPIOCGIDLE                      = 0x4010743f\n\tPPPIOCGIDLE32                    = 0x4008743f\n\tPPPIOCGIDLE64                    = 0x4010743f\n\tPPPIOCGL2TPSTATS                 = 0x40487436\n\tPPPIOCGMRU                       = 0x40047453\n\tPPPIOCGRASYNCMAP                 = 0x40047455\n\tPPPIOCGUNIT                      = 0x40047456\n\tPPPIOCGXASYNCMAP                 = 0x40207450\n\tPPPIOCSACTIVE                    = 0x80107446\n\tPPPIOCSASYNCMAP                  = 0x80047457\n\tPPPIOCSCOMPRESS                  = 0x8010744d\n\tPPPIOCSDEBUG                     = 0x80047440\n\tPPPIOCSFLAGS                     = 0x80047459\n\tPPPIOCSMAXCID                    = 0x80047451\n\tPPPIOCSMRRU                      = 0x8004743b\n\tPPPIOCSMRU                       = 0x80047452\n\tPPPIOCSNPMODE                    = 0x8008744b\n\tPPPIOCSPASS                      = 0x80107447\n\tPPPIOCSRASYNCMAP                 = 0x80047454\n\tPPPIOCSXASYNCMAP                 = 0x8020744f\n\tPPPIOCUNBRIDGECHAN               = 0x20007434\n\tPPPIOCXFERUNIT                   = 0x2000744e\n\tPR_SET_PTRACER_ANY               = 0xffffffffffffffff\n\tPTP_CLOCK_GETCAPS                = 0x40503d01\n\tPTP_CLOCK_GETCAPS2               = 0x40503d0a\n\tPTP_ENABLE_PPS                   = 0x80043d04\n\tPTP_ENABLE_PPS2                  = 0x80043d0d\n\tPTP_EXTTS_REQUEST                = 0x80103d02\n\tPTP_EXTTS_REQUEST2               = 0x80103d0b\n\tPTP_MASK_CLEAR_ALL               = 0x20003d13\n\tPTP_MASK_EN_SINGLE               = 0x80043d14\n\tPTP_PEROUT_REQUEST               = 0x80383d03\n\tPTP_PEROUT_REQUEST2              = 0x80383d0c\n\tPTP_PIN_SETFUNC                  = 0x80603d07\n\tPTP_PIN_SETFUNC2                 = 0x80603d10\n\tPTP_SYS_OFFSET                   = 0x83403d05\n\tPTP_SYS_OFFSET2                  = 0x83403d0e\n\tPTRACE_GETFPAREGS                = 0x14\n\tPTRACE_GETFPREGS                 = 0xe\n\tPTRACE_GETFPREGS64               = 0x19\n\tPTRACE_GETREGS64                 = 0x16\n\tPTRACE_READDATA                  = 0x10\n\tPTRACE_READTEXT                  = 0x12\n\tPTRACE_SETFPAREGS                = 0x15\n\tPTRACE_SETFPREGS                 = 0xf\n\tPTRACE_SETFPREGS64               = 0x1a\n\tPTRACE_SETREGS64                 = 0x17\n\tPTRACE_SPARC_DETACH              = 0xb\n\tPTRACE_WRITEDATA                 = 0x11\n\tPTRACE_WRITETEXT                 = 0x13\n\tPT_FP                            = 0x48\n\tPT_G0                            = 0x10\n\tPT_G1                            = 0x14\n\tPT_G2                            = 0x18\n\tPT_G3                            = 0x1c\n\tPT_G4                            = 0x20\n\tPT_G5                            = 0x24\n\tPT_G6                            = 0x28\n\tPT_G7                            = 0x2c\n\tPT_I0                            = 0x30\n\tPT_I1                            = 0x34\n\tPT_I2                            = 0x38\n\tPT_I3                            = 0x3c\n\tPT_I4                            = 0x40\n\tPT_I5                            = 0x44\n\tPT_I6                            = 0x48\n\tPT_I7                            = 0x4c\n\tPT_NPC                           = 0x8\n\tPT_PC                            = 0x4\n\tPT_PSR                           = 0x0\n\tPT_REGS_MAGIC                    = 0x57ac6c00\n\tPT_TNPC                          = 0x90\n\tPT_TPC                           = 0x88\n\tPT_TSTATE                        = 0x80\n\tPT_V9_FP                         = 0x70\n\tPT_V9_G0                         = 0x0\n\tPT_V9_G1                         = 0x8\n\tPT_V9_G2                         = 0x10\n\tPT_V9_G3                         = 0x18\n\tPT_V9_G4                         = 0x20\n\tPT_V9_G5                         = 0x28\n\tPT_V9_G6                         = 0x30\n\tPT_V9_G7                         = 0x38\n\tPT_V9_I0                         = 0x40\n\tPT_V9_I1                         = 0x48\n\tPT_V9_I2                         = 0x50\n\tPT_V9_I3                         = 0x58\n\tPT_V9_I4                         = 0x60\n\tPT_V9_I5                         = 0x68\n\tPT_V9_I6                         = 0x70\n\tPT_V9_I7                         = 0x78\n\tPT_V9_MAGIC                      = 0x9c\n\tPT_V9_TNPC                       = 0x90\n\tPT_V9_TPC                        = 0x88\n\tPT_V9_TSTATE                     = 0x80\n\tPT_V9_Y                          = 0x98\n\tPT_WIM                           = 0x10\n\tPT_Y                             = 0xc\n\tRLIMIT_AS                        = 0x9\n\tRLIMIT_MEMLOCK                   = 0x8\n\tRLIMIT_NOFILE                    = 0x6\n\tRLIMIT_NPROC                     = 0x7\n\tRLIMIT_RSS                       = 0x5\n\tRNDADDENTROPY                    = 0x80085203\n\tRNDADDTOENTCNT                   = 0x80045201\n\tRNDCLEARPOOL                     = 0x20005206\n\tRNDGETENTCNT                     = 0x40045200\n\tRNDGETPOOL                       = 0x40085202\n\tRNDRESEEDCRNG                    = 0x20005207\n\tRNDZAPENTCNT                     = 0x20005204\n\tRTC_AIE_OFF                      = 0x20007002\n\tRTC_AIE_ON                       = 0x20007001\n\tRTC_ALM_READ                     = 0x40247008\n\tRTC_ALM_SET                      = 0x80247007\n\tRTC_EPOCH_READ                   = 0x4008700d\n\tRTC_EPOCH_SET                    = 0x8008700e\n\tRTC_IRQP_READ                    = 0x4008700b\n\tRTC_IRQP_SET                     = 0x8008700c\n\tRTC_PARAM_GET                    = 0x80187013\n\tRTC_PARAM_SET                    = 0x80187014\n\tRTC_PIE_OFF                      = 0x20007006\n\tRTC_PIE_ON                       = 0x20007005\n\tRTC_PLL_GET                      = 0x40207011\n\tRTC_PLL_SET                      = 0x80207012\n\tRTC_RD_TIME                      = 0x40247009\n\tRTC_SET_TIME                     = 0x8024700a\n\tRTC_UIE_OFF                      = 0x20007004\n\tRTC_UIE_ON                       = 0x20007003\n\tRTC_VL_CLR                       = 0x20007014\n\tRTC_VL_READ                      = 0x40047013\n\tRTC_WIE_OFF                      = 0x20007010\n\tRTC_WIE_ON                       = 0x2000700f\n\tRTC_WKALM_RD                     = 0x40287010\n\tRTC_WKALM_SET                    = 0x8028700f\n\tSCM_DEVMEM_DMABUF                = 0x58\n\tSCM_DEVMEM_LINEAR                = 0x57\n\tSCM_TIMESTAMPING                 = 0x23\n\tSCM_TIMESTAMPING_OPT_STATS       = 0x38\n\tSCM_TIMESTAMPING_PKTINFO         = 0x3c\n\tSCM_TIMESTAMPNS                  = 0x21\n\tSCM_TS_OPT_ID                    = 0x5a\n\tSCM_TXTIME                       = 0x3f\n\tSCM_WIFI_STATUS                  = 0x25\n\tSECCOMP_IOCTL_NOTIF_ADDFD        = 0x80182103\n\tSECCOMP_IOCTL_NOTIF_ID_VALID     = 0x80082102\n\tSECCOMP_IOCTL_NOTIF_SET_FLAGS    = 0x80082104\n\tSFD_CLOEXEC                      = 0x400000\n\tSFD_NONBLOCK                     = 0x4000\n\tSF_FP                            = 0x38\n\tSF_I0                            = 0x20\n\tSF_I1                            = 0x24\n\tSF_I2                            = 0x28\n\tSF_I3                            = 0x2c\n\tSF_I4                            = 0x30\n\tSF_I5                            = 0x34\n\tSF_L0                            = 0x0\n\tSF_L1                            = 0x4\n\tSF_L2                            = 0x8\n\tSF_L3                            = 0xc\n\tSF_L4                            = 0x10\n\tSF_L5                            = 0x14\n\tSF_L6                            = 0x18\n\tSF_L7                            = 0x1c\n\tSF_PC                            = 0x3c\n\tSF_RETP                          = 0x40\n\tSF_V9_FP                         = 0x70\n\tSF_V9_I0                         = 0x40\n\tSF_V9_I1                         = 0x48\n\tSF_V9_I2                         = 0x50\n\tSF_V9_I3                         = 0x58\n\tSF_V9_I4                         = 0x60\n\tSF_V9_I5                         = 0x68\n\tSF_V9_L0                         = 0x0\n\tSF_V9_L1                         = 0x8\n\tSF_V9_L2                         = 0x10\n\tSF_V9_L3                         = 0x18\n\tSF_V9_L4                         = 0x20\n\tSF_V9_L5                         = 0x28\n\tSF_V9_L6                         = 0x30\n\tSF_V9_L7                         = 0x38\n\tSF_V9_PC                         = 0x78\n\tSF_V9_RETP                       = 0x80\n\tSF_V9_XARG0                      = 0x88\n\tSF_V9_XARG1                      = 0x90\n\tSF_V9_XARG2                      = 0x98\n\tSF_V9_XARG3                      = 0xa0\n\tSF_V9_XARG4                      = 0xa8\n\tSF_V9_XARG5                      = 0xb0\n\tSF_V9_XXARG                      = 0xb8\n\tSF_XARG0                         = 0x44\n\tSF_XARG1                         = 0x48\n\tSF_XARG2                         = 0x4c\n\tSF_XARG3                         = 0x50\n\tSF_XARG4                         = 0x54\n\tSF_XARG5                         = 0x58\n\tSF_XXARG                         = 0x5c\n\tSIOCATMARK                       = 0x8905\n\tSIOCGPGRP                        = 0x8904\n\tSIOCGSTAMPNS_NEW                 = 0x40108907\n\tSIOCGSTAMP_NEW                   = 0x40108906\n\tSIOCINQ                          = 0x4004667f\n\tSIOCOUTQ                         = 0x40047473\n\tSIOCSPGRP                        = 0x8902\n\tSOCK_CLOEXEC                     = 0x400000\n\tSOCK_DGRAM                       = 0x2\n\tSOCK_NONBLOCK                    = 0x4000\n\tSOCK_STREAM                      = 0x1\n\tSOL_SOCKET                       = 0xffff\n\tSO_ACCEPTCONN                    = 0x8000\n\tSO_ATTACH_BPF                    = 0x34\n\tSO_ATTACH_REUSEPORT_CBPF         = 0x35\n\tSO_ATTACH_REUSEPORT_EBPF         = 0x36\n\tSO_BINDTODEVICE                  = 0xd\n\tSO_BINDTOIFINDEX                 = 0x41\n\tSO_BPF_EXTENSIONS                = 0x32\n\tSO_BROADCAST                     = 0x20\n\tSO_BSDCOMPAT                     = 0x400\n\tSO_BUF_LOCK                      = 0x51\n\tSO_BUSY_POLL                     = 0x30\n\tSO_BUSY_POLL_BUDGET              = 0x49\n\tSO_CNX_ADVICE                    = 0x37\n\tSO_COOKIE                        = 0x3b\n\tSO_DETACH_REUSEPORT_BPF          = 0x47\n\tSO_DEVMEM_DMABUF                 = 0x58\n\tSO_DEVMEM_DONTNEED               = 0x59\n\tSO_DEVMEM_LINEAR                 = 0x57\n\tSO_DOMAIN                        = 0x1029\n\tSO_DONTROUTE                     = 0x10\n\tSO_ERROR                         = 0x1007\n\tSO_INCOMING_CPU                  = 0x33\n\tSO_INCOMING_NAPI_ID              = 0x3a\n\tSO_KEEPALIVE                     = 0x8\n\tSO_LINGER                        = 0x80\n\tSO_LOCK_FILTER                   = 0x28\n\tSO_MARK                          = 0x22\n\tSO_MAX_PACING_RATE               = 0x31\n\tSO_MEMINFO                       = 0x39\n\tSO_NETNS_COOKIE                  = 0x50\n\tSO_NOFCS                         = 0x27\n\tSO_OOBINLINE                     = 0x100\n\tSO_PASSCRED                      = 0x2\n\tSO_PASSPIDFD                     = 0x55\n\tSO_PASSRIGHTS                    = 0x5c\n\tSO_PASSSEC                       = 0x1f\n\tSO_PEEK_OFF                      = 0x26\n\tSO_PEERCRED                      = 0x40\n\tSO_PEERGROUPS                    = 0x3d\n\tSO_PEERPIDFD                     = 0x56\n\tSO_PEERSEC                       = 0x1e\n\tSO_PREFER_BUSY_POLL              = 0x48\n\tSO_PROTOCOL                      = 0x1028\n\tSO_RCVBUF                        = 0x1002\n\tSO_RCVBUFFORCE                   = 0x100b\n\tSO_RCVLOWAT                      = 0x800\n\tSO_RCVMARK                       = 0x54\n\tSO_RCVPRIORITY                   = 0x5b\n\tSO_RCVTIMEO                      = 0x2000\n\tSO_RCVTIMEO_NEW                  = 0x44\n\tSO_RCVTIMEO_OLD                  = 0x2000\n\tSO_RESERVE_MEM                   = 0x52\n\tSO_REUSEADDR                     = 0x4\n\tSO_REUSEPORT                     = 0x200\n\tSO_RXQ_OVFL                      = 0x24\n\tSO_SECURITY_AUTHENTICATION       = 0x5001\n\tSO_SECURITY_ENCRYPTION_NETWORK   = 0x5004\n\tSO_SECURITY_ENCRYPTION_TRANSPORT = 0x5002\n\tSO_SELECT_ERR_QUEUE              = 0x29\n\tSO_SNDBUF                        = 0x1001\n\tSO_SNDBUFFORCE                   = 0x100a\n\tSO_SNDLOWAT                      = 0x1000\n\tSO_SNDTIMEO                      = 0x4000\n\tSO_SNDTIMEO_NEW                  = 0x45\n\tSO_SNDTIMEO_OLD                  = 0x4000\n\tSO_TIMESTAMPING                  = 0x23\n\tSO_TIMESTAMPING_NEW              = 0x43\n\tSO_TIMESTAMPING_OLD              = 0x23\n\tSO_TIMESTAMPNS                   = 0x21\n\tSO_TIMESTAMPNS_NEW               = 0x42\n\tSO_TIMESTAMPNS_OLD               = 0x21\n\tSO_TIMESTAMP_NEW                 = 0x46\n\tSO_TXREHASH                      = 0x53\n\tSO_TXTIME                        = 0x3f\n\tSO_TYPE                          = 0x1008\n\tSO_WIFI_STATUS                   = 0x25\n\tSO_ZEROCOPY                      = 0x3e\n\tTAB1                             = 0x800\n\tTAB2                             = 0x1000\n\tTAB3                             = 0x1800\n\tTABDLY                           = 0x1800\n\tTCFLSH                           = 0x20005407\n\tTCGETA                           = 0x40125401\n\tTCGETS                           = 0x40245408\n\tTCGETS2                          = 0x402c540c\n\tTCSAFLUSH                        = 0x2\n\tTCSBRK                           = 0x20005405\n\tTCSBRKP                          = 0x5425\n\tTCSETA                           = 0x80125402\n\tTCSETAF                          = 0x80125404\n\tTCSETAW                          = 0x80125403\n\tTCSETS                           = 0x80245409\n\tTCSETS2                          = 0x802c540d\n\tTCSETSF                          = 0x8024540b\n\tTCSETSF2                         = 0x802c540f\n\tTCSETSW                          = 0x8024540a\n\tTCSETSW2                         = 0x802c540e\n\tTCXONC                           = 0x20005406\n\tTFD_CLOEXEC                      = 0x400000\n\tTFD_NONBLOCK                     = 0x4000\n\tTIOCCBRK                         = 0x2000747a\n\tTIOCCONS                         = 0x20007424\n\tTIOCEXCL                         = 0x2000740d\n\tTIOCGDEV                         = 0x40045432\n\tTIOCGETD                         = 0x40047400\n\tTIOCGEXCL                        = 0x40045440\n\tTIOCGICOUNT                      = 0x545d\n\tTIOCGISO7816                     = 0x40285443\n\tTIOCGLCKTRMIOS                   = 0x5456\n\tTIOCGPGRP                        = 0x40047483\n\tTIOCGPKT                         = 0x40045438\n\tTIOCGPTLCK                       = 0x40045439\n\tTIOCGPTN                         = 0x40047486\n\tTIOCGPTPEER                      = 0x20007489\n\tTIOCGRS485                       = 0x40205441\n\tTIOCGSERIAL                      = 0x541e\n\tTIOCGSID                         = 0x40047485\n\tTIOCGSOFTCAR                     = 0x40047464\n\tTIOCGWINSZ                       = 0x40087468\n\tTIOCINQ                          = 0x4004667f\n\tTIOCLINUX                        = 0x541c\n\tTIOCMBIC                         = 0x8004746b\n\tTIOCMBIS                         = 0x8004746c\n\tTIOCMGET                         = 0x4004746a\n\tTIOCMIWAIT                       = 0x545c\n\tTIOCMSET                         = 0x8004746d\n\tTIOCM_CAR                        = 0x40\n\tTIOCM_CD                         = 0x40\n\tTIOCM_CTS                        = 0x20\n\tTIOCM_DSR                        = 0x100\n\tTIOCM_RI                         = 0x80\n\tTIOCM_RNG                        = 0x80\n\tTIOCM_SR                         = 0x10\n\tTIOCM_ST                         = 0x8\n\tTIOCNOTTY                        = 0x20007471\n\tTIOCNXCL                         = 0x2000740e\n\tTIOCOUTQ                         = 0x40047473\n\tTIOCPKT                          = 0x80047470\n\tTIOCSBRK                         = 0x2000747b\n\tTIOCSCTTY                        = 0x20007484\n\tTIOCSERCONFIG                    = 0x5453\n\tTIOCSERGETLSR                    = 0x5459\n\tTIOCSERGETMULTI                  = 0x545a\n\tTIOCSERGSTRUCT                   = 0x5458\n\tTIOCSERGWILD                     = 0x5454\n\tTIOCSERSETMULTI                  = 0x545b\n\tTIOCSERSWILD                     = 0x5455\n\tTIOCSETD                         = 0x80047401\n\tTIOCSIG                          = 0x80047488\n\tTIOCSISO7816                     = 0xc0285444\n\tTIOCSLCKTRMIOS                   = 0x5457\n\tTIOCSPGRP                        = 0x80047482\n\tTIOCSPTLCK                       = 0x80047487\n\tTIOCSRS485                       = 0xc0205442\n\tTIOCSSERIAL                      = 0x541f\n\tTIOCSSOFTCAR                     = 0x80047465\n\tTIOCSTART                        = 0x2000746e\n\tTIOCSTI                          = 0x80017472\n\tTIOCSTOP                         = 0x2000746f\n\tTIOCSWINSZ                       = 0x80087467\n\tTIOCVHANGUP                      = 0x20005437\n\tTOSTOP                           = 0x100\n\tTUNATTACHFILTER                  = 0x801054d5\n\tTUNDETACHFILTER                  = 0x801054d6\n\tTUNGETDEVNETNS                   = 0x200054e3\n\tTUNGETFEATURES                   = 0x400454cf\n\tTUNGETFILTER                     = 0x401054db\n\tTUNGETIFF                        = 0x400454d2\n\tTUNGETSNDBUF                     = 0x400454d3\n\tTUNGETVNETBE                     = 0x400454df\n\tTUNGETVNETHDRSZ                  = 0x400454d7\n\tTUNGETVNETLE                     = 0x400454dd\n\tTUNSETCARRIER                    = 0x800454e2\n\tTUNSETDEBUG                      = 0x800454c9\n\tTUNSETFILTEREBPF                 = 0x400454e1\n\tTUNSETGROUP                      = 0x800454ce\n\tTUNSETIFF                        = 0x800454ca\n\tTUNSETIFINDEX                    = 0x800454da\n\tTUNSETLINK                       = 0x800454cd\n\tTUNSETNOCSUM                     = 0x800454c8\n\tTUNSETOFFLOAD                    = 0x800454d0\n\tTUNSETOWNER                      = 0x800454cc\n\tTUNSETPERSIST                    = 0x800454cb\n\tTUNSETQUEUE                      = 0x800454d9\n\tTUNSETSNDBUF                     = 0x800454d4\n\tTUNSETSTEERINGEBPF               = 0x400454e0\n\tTUNSETTXFILTER                   = 0x800454d1\n\tTUNSETVNETBE                     = 0x800454de\n\tTUNSETVNETHDRSZ                  = 0x800454d8\n\tTUNSETVNETLE                     = 0x800454dc\n\tUBI_IOCATT                       = 0x80186f40\n\tUBI_IOCDET                       = 0x80046f41\n\tUBI_IOCEBCH                      = 0x80044f02\n\tUBI_IOCEBER                      = 0x80044f01\n\tUBI_IOCEBISMAP                   = 0x40044f05\n\tUBI_IOCEBMAP                     = 0x80084f03\n\tUBI_IOCEBUNMAP                   = 0x80044f04\n\tUBI_IOCMKVOL                     = 0x80986f00\n\tUBI_IOCRMVOL                     = 0x80046f01\n\tUBI_IOCRNVOL                     = 0x91106f03\n\tUBI_IOCRPEB                      = 0x80046f04\n\tUBI_IOCRSVOL                     = 0x800c6f02\n\tUBI_IOCSETVOLPROP                = 0x80104f06\n\tUBI_IOCSPEB                      = 0x80046f05\n\tUBI_IOCVOLCRBLK                  = 0x80804f07\n\tUBI_IOCVOLRMBLK                  = 0x20004f08\n\tUBI_IOCVOLUP                     = 0x80084f00\n\tVDISCARD                         = 0xd\n\tVEOF                             = 0x4\n\tVEOL                             = 0xb\n\tVEOL2                            = 0x10\n\tVMIN                             = 0x6\n\tVREPRINT                         = 0xc\n\tVSTART                           = 0x8\n\tVSTOP                            = 0x9\n\tVSUSP                            = 0xa\n\tVSWTC                            = 0x7\n\tVT1                              = 0x4000\n\tVTDLY                            = 0x4000\n\tVTIME                            = 0x5\n\tVWERASE                          = 0xe\n\tWDIOC_GETBOOTSTATUS              = 0x40045702\n\tWDIOC_GETPRETIMEOUT              = 0x40045709\n\tWDIOC_GETSTATUS                  = 0x40045701\n\tWDIOC_GETSUPPORT                 = 0x40285700\n\tWDIOC_GETTEMP                    = 0x40045703\n\tWDIOC_GETTIMELEFT                = 0x4004570a\n\tWDIOC_GETTIMEOUT                 = 0x40045707\n\tWDIOC_KEEPALIVE                  = 0x40045705\n\tWDIOC_SETOPTIONS                 = 0x40045704\n\tWORDSIZE                         = 0x40\n\tXCASE                            = 0x4\n\tXTABS                            = 0x1800\n\t_HIDIOCGRAWNAME                  = 0x40804804\n\t_HIDIOCGRAWPHYS                  = 0x40404805\n\t_HIDIOCGRAWUNIQ                  = 0x40404808\n\t__TIOCFLUSH                      = 0x80047410\n)\n\n// Errors\nconst (\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEADV            = syscall.Errno(0x53)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEALREADY        = syscall.Errno(0x25)\n\tEBADE           = syscall.Errno(0x66)\n\tEBADFD          = syscall.Errno(0x5d)\n\tEBADMSG         = syscall.Errno(0x4c)\n\tEBADR           = syscall.Errno(0x67)\n\tEBADRQC         = syscall.Errno(0x6a)\n\tEBADSLT         = syscall.Errno(0x6b)\n\tEBFONT          = syscall.Errno(0x6d)\n\tECANCELED       = syscall.Errno(0x7f)\n\tECHRNG          = syscall.Errno(0x5e)\n\tECOMM           = syscall.Errno(0x55)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0x4e)\n\tEDEADLOCK       = syscall.Errno(0x6c)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOTDOT         = syscall.Errno(0x58)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEHWPOISON       = syscall.Errno(0x87)\n\tEIDRM           = syscall.Errno(0x4d)\n\tEILSEQ          = syscall.Errno(0x7a)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISNAM          = syscall.Errno(0x78)\n\tEKEYEXPIRED     = syscall.Errno(0x81)\n\tEKEYREJECTED    = syscall.Errno(0x83)\n\tEKEYREVOKED     = syscall.Errno(0x82)\n\tEL2HLT          = syscall.Errno(0x65)\n\tEL2NSYNC        = syscall.Errno(0x5f)\n\tEL3HLT          = syscall.Errno(0x60)\n\tEL3RST          = syscall.Errno(0x61)\n\tELIBACC         = syscall.Errno(0x72)\n\tELIBBAD         = syscall.Errno(0x70)\n\tELIBEXEC        = syscall.Errno(0x6e)\n\tELIBMAX         = syscall.Errno(0x7b)\n\tELIBSCN         = syscall.Errno(0x7c)\n\tELNRNG          = syscall.Errno(0x62)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMEDIUMTYPE     = syscall.Errno(0x7e)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x57)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENAVAIL         = syscall.Errno(0x77)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENOANO          = syscall.Errno(0x69)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENOCSI          = syscall.Errno(0x64)\n\tENODATA         = syscall.Errno(0x6f)\n\tENOKEY          = syscall.Errno(0x80)\n\tENOLCK          = syscall.Errno(0x4f)\n\tENOLINK         = syscall.Errno(0x52)\n\tENOMEDIUM       = syscall.Errno(0x7d)\n\tENOMSG          = syscall.Errno(0x4b)\n\tENONET          = syscall.Errno(0x50)\n\tENOPKG          = syscall.Errno(0x71)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSR           = syscall.Errno(0x4a)\n\tENOSTR          = syscall.Errno(0x48)\n\tENOSYS          = syscall.Errno(0x5a)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTNAM         = syscall.Errno(0x76)\n\tENOTRECOVERABLE = syscall.Errno(0x85)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x2d)\n\tENOTUNIQ        = syscall.Errno(0x73)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x5c)\n\tEOWNERDEAD      = syscall.Errno(0x84)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROTO          = syscall.Errno(0x56)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tEREMCHG         = syscall.Errno(0x59)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEREMOTEIO       = syscall.Errno(0x79)\n\tERESTART        = syscall.Errno(0x74)\n\tERFKILL         = syscall.Errno(0x86)\n\tERREMOTE        = syscall.Errno(0x51)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESRMNT          = syscall.Errno(0x54)\n\tESTALE          = syscall.Errno(0x46)\n\tESTRPIPE        = syscall.Errno(0x5b)\n\tETIME           = syscall.Errno(0x49)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tEUCLEAN         = syscall.Errno(0x75)\n\tEUNATCH         = syscall.Errno(0x63)\n\tEUSERS          = syscall.Errno(0x44)\n\tEXFULL          = syscall.Errno(0x68)\n)\n\n// Signals\nconst (\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCLD    = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGLOST   = syscall.Signal(0x1d)\n\tSIGPOLL   = syscall.Signal(0x17)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x1d)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"ENOTSUP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{57, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{58, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{60, \"ETIMEDOUT\", \"connection timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disk quota exceeded\"},\n\t{70, \"ESTALE\", \"stale file handle\"},\n\t{71, \"EREMOTE\", \"object is remote\"},\n\t{72, \"ENOSTR\", \"device not a stream\"},\n\t{73, \"ETIME\", \"timer expired\"},\n\t{74, \"ENOSR\", \"out of streams resources\"},\n\t{75, \"ENOMSG\", \"no message of desired type\"},\n\t{76, \"EBADMSG\", \"bad message\"},\n\t{77, \"EIDRM\", \"identifier removed\"},\n\t{78, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{79, \"ENOLCK\", \"no locks available\"},\n\t{80, \"ENONET\", \"machine is not on the network\"},\n\t{81, \"ERREMOTE\", \"unknown error 81\"},\n\t{82, \"ENOLINK\", \"link has been severed\"},\n\t{83, \"EADV\", \"advertise error\"},\n\t{84, \"ESRMNT\", \"srmount error\"},\n\t{85, \"ECOMM\", \"communication error on send\"},\n\t{86, \"EPROTO\", \"protocol error\"},\n\t{87, \"EMULTIHOP\", \"multihop attempted\"},\n\t{88, \"EDOTDOT\", \"RFS specific error\"},\n\t{89, \"EREMCHG\", \"remote address changed\"},\n\t{90, \"ENOSYS\", \"function not implemented\"},\n\t{91, \"ESTRPIPE\", \"streams pipe error\"},\n\t{92, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{93, \"EBADFD\", \"file descriptor in bad state\"},\n\t{94, \"ECHRNG\", \"channel number out of range\"},\n\t{95, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{96, \"EL3HLT\", \"level 3 halted\"},\n\t{97, \"EL3RST\", \"level 3 reset\"},\n\t{98, \"ELNRNG\", \"link number out of range\"},\n\t{99, \"EUNATCH\", \"protocol driver not attached\"},\n\t{100, \"ENOCSI\", \"no CSI structure available\"},\n\t{101, \"EL2HLT\", \"level 2 halted\"},\n\t{102, \"EBADE\", \"invalid exchange\"},\n\t{103, \"EBADR\", \"invalid request descriptor\"},\n\t{104, \"EXFULL\", \"exchange full\"},\n\t{105, \"ENOANO\", \"no anode\"},\n\t{106, \"EBADRQC\", \"invalid request code\"},\n\t{107, \"EBADSLT\", \"invalid slot\"},\n\t{108, \"EDEADLOCK\", \"file locking deadlock error\"},\n\t{109, \"EBFONT\", \"bad font file format\"},\n\t{110, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{111, \"ENODATA\", \"no data available\"},\n\t{112, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{113, \"ENOPKG\", \"package not installed\"},\n\t{114, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{115, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{116, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{117, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{118, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{119, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{120, \"EISNAM\", \"is a named type file\"},\n\t{121, \"EREMOTEIO\", \"remote I/O error\"},\n\t{122, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{123, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{124, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{125, \"ENOMEDIUM\", \"no medium found\"},\n\t{126, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{127, \"ECANCELED\", \"operation canceled\"},\n\t{128, \"ENOKEY\", \"required key not available\"},\n\t{129, \"EKEYEXPIRED\", \"key has expired\"},\n\t{130, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{131, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{132, \"EOWNERDEAD\", \"owner died\"},\n\t{133, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{134, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{135, \"EHWPOISON\", \"memory page has hardware error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"stopped (signal)\"},\n\t{18, \"SIGTSTP\", \"stopped\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"file size limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window changed\"},\n\t{29, \"SIGLOST\", \"power failure\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go",
    "content": "// mkerrors.sh -m32\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build 386 && netbsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m32 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_ARP                            = 0x1c\n\tAF_BLUETOOTH                      = 0x1f\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_HYLINK                         = 0xf\n\tAF_IEEE80211                      = 0x20\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x18\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x23\n\tAF_MPLS                           = 0x21\n\tAF_NATM                           = 0x1b\n\tAF_NS                             = 0x6\n\tAF_OROUTE                         = 0x11\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x22\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tARPHRD_ARCNET                     = 0x7\n\tARPHRD_ETHER                      = 0x1\n\tARPHRD_FRELAY                     = 0xf\n\tARPHRD_IEEE1394                   = 0x18\n\tARPHRD_IEEE802                    = 0x6\n\tARPHRD_STRIP                      = 0x17\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB460800                           = 0x70800\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB921600                           = 0xe1000\n\tB9600                             = 0x2580\n\tBIOCFEEDBACK                      = 0x8004427d\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc0084277\n\tBIOCGETIF                         = 0x4090426b\n\tBIOCGFEEDBACK                     = 0x4004427c\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRTIMEOUT                     = 0x400c427b\n\tBIOCGSEESENT                      = 0x40044278\n\tBIOCGSTATS                        = 0x4080426f\n\tBIOCGSTATSOLD                     = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDLT                          = 0x80044276\n\tBIOCSETF                          = 0x80084267\n\tBIOCSETIF                         = 0x8090426c\n\tBIOCSFEEDBACK                     = 0x8004427d\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRTIMEOUT                     = 0x800c427a\n\tBIOCSSEESENT                      = 0x80044279\n\tBIOCSTCPF                         = 0x80084272\n\tBIOCSUDPF                         = 0x80084273\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x4\n\tBPF_ALIGNMENT32                   = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DFLTBUFSIZE                   = 0x100000\n\tBPF_DIV                           = 0x30\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x1000000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLONE_CSIGNAL                     = 0xff\n\tCLONE_FILES                       = 0x400\n\tCLONE_FS                          = 0x200\n\tCLONE_PID                         = 0x1000\n\tCLONE_PTRACE                      = 0x2000\n\tCLONE_SIGHAND                     = 0x800\n\tCLONE_VFORK                       = 0x4000\n\tCLONE_VM                          = 0x100\n\tCPUSTATES                         = 0x5\n\tCP_IDLE                           = 0x4\n\tCP_INTR                           = 0x3\n\tCP_NICE                           = 0x1\n\tCP_SYS                            = 0x2\n\tCP_USER                           = 0x0\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x10000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0x14\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tCTL_QUERY                         = -0x2\n\tDIOCBSFLUSH                       = 0x20006478\n\tDLT_A429                          = 0xb8\n\tDLT_A653_ICM                      = 0xb9\n\tDLT_AIRONET_HEADER                = 0x78\n\tDLT_AOS                           = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394        = 0x8a\n\tDLT_ARCNET                        = 0x7\n\tDLT_ARCNET_LINUX                  = 0x81\n\tDLT_ATM_CLIP                      = 0x13\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AURORA                        = 0x7e\n\tDLT_AX25                          = 0x3\n\tDLT_AX25_KISS                     = 0xca\n\tDLT_BACNET_MS_TP                  = 0xa5\n\tDLT_BLUETOOTH_HCI_H4              = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR    = 0xc9\n\tDLT_CAN20B                        = 0xbe\n\tDLT_CAN_SOCKETCAN                 = 0xe3\n\tDLT_CHAOS                         = 0x5\n\tDLT_CISCO_IOS                     = 0x76\n\tDLT_C_HDLC                        = 0x68\n\tDLT_C_HDLC_WITH_DIR               = 0xcd\n\tDLT_DECT                          = 0xdd\n\tDLT_DOCSIS                        = 0x8f\n\tDLT_ECONET                        = 0x73\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0x6d\n\tDLT_ERF                           = 0xc5\n\tDLT_ERF_ETH                       = 0xaf\n\tDLT_ERF_POS                       = 0xb0\n\tDLT_FC_2                          = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS        = 0xe1\n\tDLT_FDDI                          = 0xa\n\tDLT_FLEXRAY                       = 0xd2\n\tDLT_FRELAY                        = 0x6b\n\tDLT_FRELAY_WITH_DIR               = 0xce\n\tDLT_GCOM_SERIAL                   = 0xad\n\tDLT_GCOM_T1E1                     = 0xac\n\tDLT_GPF_F                         = 0xab\n\tDLT_GPF_T                         = 0xaa\n\tDLT_GPRS_LLC                      = 0xa9\n\tDLT_GSMTAP_ABIS                   = 0xda\n\tDLT_GSMTAP_UM                     = 0xd9\n\tDLT_HDLC                          = 0x10\n\tDLT_HHDLC                         = 0x79\n\tDLT_HIPPI                         = 0xf\n\tDLT_IBM_SN                        = 0x92\n\tDLT_IBM_SP                        = 0x91\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS          = 0xa3\n\tDLT_IEEE802_15_4                  = 0xc3\n\tDLT_IEEE802_15_4_LINUX            = 0xbf\n\tDLT_IEEE802_15_4_NONASK_PHY       = 0xd7\n\tDLT_IEEE802_16_MAC_CPS            = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO      = 0xc1\n\tDLT_IPMB                          = 0xc7\n\tDLT_IPMB_LINUX                    = 0xd1\n\tDLT_IPNET                         = 0xe2\n\tDLT_IPV4                          = 0xe4\n\tDLT_IPV6                          = 0xe5\n\tDLT_IP_OVER_FC                    = 0x7a\n\tDLT_JUNIPER_ATM1                  = 0x89\n\tDLT_JUNIPER_ATM2                  = 0x87\n\tDLT_JUNIPER_CHDLC                 = 0xb5\n\tDLT_JUNIPER_ES                    = 0x84\n\tDLT_JUNIPER_ETHER                 = 0xb2\n\tDLT_JUNIPER_FRELAY                = 0xb4\n\tDLT_JUNIPER_GGSN                  = 0x85\n\tDLT_JUNIPER_ISM                   = 0xc2\n\tDLT_JUNIPER_MFR                   = 0x86\n\tDLT_JUNIPER_MLFR                  = 0x83\n\tDLT_JUNIPER_MLPPP                 = 0x82\n\tDLT_JUNIPER_MONITOR               = 0xa4\n\tDLT_JUNIPER_PIC_PEER              = 0xae\n\tDLT_JUNIPER_PPP                   = 0xb3\n\tDLT_JUNIPER_PPPOE                 = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM             = 0xa8\n\tDLT_JUNIPER_SERVICES              = 0x88\n\tDLT_JUNIPER_ST                    = 0xc8\n\tDLT_JUNIPER_VP                    = 0xb7\n\tDLT_LAPB_WITH_DIR                 = 0xcf\n\tDLT_LAPD                          = 0xcb\n\tDLT_LIN                           = 0xd4\n\tDLT_LINUX_EVDEV                   = 0xd8\n\tDLT_LINUX_IRDA                    = 0x90\n\tDLT_LINUX_LAPD                    = 0xb1\n\tDLT_LINUX_SLL                     = 0x71\n\tDLT_LOOP                          = 0x6c\n\tDLT_LTALK                         = 0x72\n\tDLT_MFR                           = 0xb6\n\tDLT_MOST                          = 0xd3\n\tDLT_MPLS                          = 0xdb\n\tDLT_MTP2                          = 0x8c\n\tDLT_MTP2_WITH_PHDR                = 0x8b\n\tDLT_MTP3                          = 0x8d\n\tDLT_NULL                          = 0x0\n\tDLT_PCI_EXP                       = 0x7d\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPI                           = 0xc0\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0xe\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_PPPD                      = 0xa6\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PPP_WITH_DIR                  = 0xcc\n\tDLT_PRISM_HEADER                  = 0x77\n\tDLT_PRONET                        = 0x4\n\tDLT_RAIF1                         = 0xc6\n\tDLT_RAW                           = 0xc\n\tDLT_RAWAF_MASK                    = 0x2240000\n\tDLT_RIO                           = 0x7c\n\tDLT_SCCP                          = 0x8e\n\tDLT_SITA                          = 0xc4\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xd\n\tDLT_SUNATM                        = 0x7b\n\tDLT_SYMANTEC_FIREWALL             = 0x63\n\tDLT_TZSP                          = 0x80\n\tDLT_USB                           = 0xba\n\tDLT_USB_LINUX                     = 0xbd\n\tDLT_USB_LINUX_MMAPPED             = 0xdc\n\tDLT_WIHART                        = 0xdf\n\tDLT_X2E_SERIAL                    = 0xd5\n\tDLT_X2E_XORAYA                    = 0xd6\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tDT_WHT                            = 0xe\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEMUL_LINUX                        = 0x1\n\tEMUL_LINUX32                      = 0x5\n\tEMUL_MAXID                        = 0x6\n\tEN_SW_CTL_INF                     = 0x1000\n\tEN_SW_CTL_PREC                    = 0x300\n\tEN_SW_CTL_ROUND                   = 0xc00\n\tEN_SW_DATACHAIN                   = 0x80\n\tEN_SW_DENORM                      = 0x2\n\tEN_SW_INVOP                       = 0x1\n\tEN_SW_OVERFLOW                    = 0x8\n\tEN_SW_PRECLOSS                    = 0x20\n\tEN_SW_UNDERFLOW                   = 0x10\n\tEN_SW_ZERODIV                     = 0x4\n\tETHERCAP_JUMBO_MTU                = 0x4\n\tETHERCAP_VLAN_HWTAGGING           = 0x2\n\tETHERCAP_VLAN_MTU                 = 0x1\n\tETHERMIN                          = 0x2e\n\tETHERMTU                          = 0x5dc\n\tETHERMTU_JUMBO                    = 0x2328\n\tETHERTYPE_8023                    = 0x4\n\tETHERTYPE_AARP                    = 0x80f3\n\tETHERTYPE_ACCTON                  = 0x8390\n\tETHERTYPE_AEONIC                  = 0x8036\n\tETHERTYPE_ALPHA                   = 0x814a\n\tETHERTYPE_AMBER                   = 0x6008\n\tETHERTYPE_AMOEBA                  = 0x8145\n\tETHERTYPE_APOLLO                  = 0x80f7\n\tETHERTYPE_APOLLODOMAIN            = 0x8019\n\tETHERTYPE_APPLETALK               = 0x809b\n\tETHERTYPE_APPLITEK                = 0x80c7\n\tETHERTYPE_ARGONAUT                = 0x803a\n\tETHERTYPE_ARP                     = 0x806\n\tETHERTYPE_AT                      = 0x809b\n\tETHERTYPE_ATALK                   = 0x809b\n\tETHERTYPE_ATOMIC                  = 0x86df\n\tETHERTYPE_ATT                     = 0x8069\n\tETHERTYPE_ATTSTANFORD             = 0x8008\n\tETHERTYPE_AUTOPHON                = 0x806a\n\tETHERTYPE_AXIS                    = 0x8856\n\tETHERTYPE_BCLOOP                  = 0x9003\n\tETHERTYPE_BOFL                    = 0x8102\n\tETHERTYPE_CABLETRON               = 0x7034\n\tETHERTYPE_CHAOS                   = 0x804\n\tETHERTYPE_COMDESIGN               = 0x806c\n\tETHERTYPE_COMPUGRAPHIC            = 0x806d\n\tETHERTYPE_COUNTERPOINT            = 0x8062\n\tETHERTYPE_CRONUS                  = 0x8004\n\tETHERTYPE_CRONUSVLN               = 0x8003\n\tETHERTYPE_DCA                     = 0x1234\n\tETHERTYPE_DDE                     = 0x807b\n\tETHERTYPE_DEBNI                   = 0xaaaa\n\tETHERTYPE_DECAM                   = 0x8048\n\tETHERTYPE_DECCUST                 = 0x6006\n\tETHERTYPE_DECDIAG                 = 0x6005\n\tETHERTYPE_DECDNS                  = 0x803c\n\tETHERTYPE_DECDTS                  = 0x803e\n\tETHERTYPE_DECEXPER                = 0x6000\n\tETHERTYPE_DECLAST                 = 0x8041\n\tETHERTYPE_DECLTM                  = 0x803f\n\tETHERTYPE_DECMUMPS                = 0x6009\n\tETHERTYPE_DECNETBIOS              = 0x8040\n\tETHERTYPE_DELTACON                = 0x86de\n\tETHERTYPE_DIDDLE                  = 0x4321\n\tETHERTYPE_DLOG1                   = 0x660\n\tETHERTYPE_DLOG2                   = 0x661\n\tETHERTYPE_DN                      = 0x6003\n\tETHERTYPE_DOGFIGHT                = 0x1989\n\tETHERTYPE_DSMD                    = 0x8039\n\tETHERTYPE_ECMA                    = 0x803\n\tETHERTYPE_ENCRYPT                 = 0x803d\n\tETHERTYPE_ES                      = 0x805d\n\tETHERTYPE_EXCELAN                 = 0x8010\n\tETHERTYPE_EXPERDATA               = 0x8049\n\tETHERTYPE_FLIP                    = 0x8146\n\tETHERTYPE_FLOWCONTROL             = 0x8808\n\tETHERTYPE_FRARP                   = 0x808\n\tETHERTYPE_GENDYN                  = 0x8068\n\tETHERTYPE_HAYES                   = 0x8130\n\tETHERTYPE_HIPPI_FP                = 0x8180\n\tETHERTYPE_HITACHI                 = 0x8820\n\tETHERTYPE_HP                      = 0x8005\n\tETHERTYPE_IEEEPUP                 = 0xa00\n\tETHERTYPE_IEEEPUPAT               = 0xa01\n\tETHERTYPE_IMLBL                   = 0x4c42\n\tETHERTYPE_IMLBLDIAG               = 0x424c\n\tETHERTYPE_IP                      = 0x800\n\tETHERTYPE_IPAS                    = 0x876c\n\tETHERTYPE_IPV6                    = 0x86dd\n\tETHERTYPE_IPX                     = 0x8137\n\tETHERTYPE_IPXNEW                  = 0x8037\n\tETHERTYPE_KALPANA                 = 0x8582\n\tETHERTYPE_LANBRIDGE               = 0x8038\n\tETHERTYPE_LANPROBE                = 0x8888\n\tETHERTYPE_LAT                     = 0x6004\n\tETHERTYPE_LBACK                   = 0x9000\n\tETHERTYPE_LITTLE                  = 0x8060\n\tETHERTYPE_LOGICRAFT               = 0x8148\n\tETHERTYPE_LOOPBACK                = 0x9000\n\tETHERTYPE_MATRA                   = 0x807a\n\tETHERTYPE_MAX                     = 0xffff\n\tETHERTYPE_MERIT                   = 0x807c\n\tETHERTYPE_MICP                    = 0x873a\n\tETHERTYPE_MOPDL                   = 0x6001\n\tETHERTYPE_MOPRC                   = 0x6002\n\tETHERTYPE_MOTOROLA                = 0x818d\n\tETHERTYPE_MPLS                    = 0x8847\n\tETHERTYPE_MPLS_MCAST              = 0x8848\n\tETHERTYPE_MUMPS                   = 0x813f\n\tETHERTYPE_NBPCC                   = 0x3c04\n\tETHERTYPE_NBPCLAIM                = 0x3c09\n\tETHERTYPE_NBPCLREQ                = 0x3c05\n\tETHERTYPE_NBPCLRSP                = 0x3c06\n\tETHERTYPE_NBPCREQ                 = 0x3c02\n\tETHERTYPE_NBPCRSP                 = 0x3c03\n\tETHERTYPE_NBPDG                   = 0x3c07\n\tETHERTYPE_NBPDGB                  = 0x3c08\n\tETHERTYPE_NBPDLTE                 = 0x3c0a\n\tETHERTYPE_NBPRAR                  = 0x3c0c\n\tETHERTYPE_NBPRAS                  = 0x3c0b\n\tETHERTYPE_NBPRST                  = 0x3c0d\n\tETHERTYPE_NBPSCD                  = 0x3c01\n\tETHERTYPE_NBPVCD                  = 0x3c00\n\tETHERTYPE_NBS                     = 0x802\n\tETHERTYPE_NCD                     = 0x8149\n\tETHERTYPE_NESTAR                  = 0x8006\n\tETHERTYPE_NETBEUI                 = 0x8191\n\tETHERTYPE_NOVELL                  = 0x8138\n\tETHERTYPE_NS                      = 0x600\n\tETHERTYPE_NSAT                    = 0x601\n\tETHERTYPE_NSCOMPAT                = 0x807\n\tETHERTYPE_NTRAILER                = 0x10\n\tETHERTYPE_OS9                     = 0x7007\n\tETHERTYPE_OS9NET                  = 0x7009\n\tETHERTYPE_PACER                   = 0x80c6\n\tETHERTYPE_PAE                     = 0x888e\n\tETHERTYPE_PCS                     = 0x4242\n\tETHERTYPE_PLANNING                = 0x8044\n\tETHERTYPE_PPP                     = 0x880b\n\tETHERTYPE_PPPOE                   = 0x8864\n\tETHERTYPE_PPPOEDISC               = 0x8863\n\tETHERTYPE_PRIMENTS                = 0x7031\n\tETHERTYPE_PUP                     = 0x200\n\tETHERTYPE_PUPAT                   = 0x200\n\tETHERTYPE_RACAL                   = 0x7030\n\tETHERTYPE_RATIONAL                = 0x8150\n\tETHERTYPE_RAWFR                   = 0x6559\n\tETHERTYPE_RCL                     = 0x1995\n\tETHERTYPE_RDP                     = 0x8739\n\tETHERTYPE_RETIX                   = 0x80f2\n\tETHERTYPE_REVARP                  = 0x8035\n\tETHERTYPE_SCA                     = 0x6007\n\tETHERTYPE_SECTRA                  = 0x86db\n\tETHERTYPE_SECUREDATA              = 0x876d\n\tETHERTYPE_SGITW                   = 0x817e\n\tETHERTYPE_SG_BOUNCE               = 0x8016\n\tETHERTYPE_SG_DIAG                 = 0x8013\n\tETHERTYPE_SG_NETGAMES             = 0x8014\n\tETHERTYPE_SG_RESV                 = 0x8015\n\tETHERTYPE_SIMNET                  = 0x5208\n\tETHERTYPE_SLOWPROTOCOLS           = 0x8809\n\tETHERTYPE_SNA                     = 0x80d5\n\tETHERTYPE_SNMP                    = 0x814c\n\tETHERTYPE_SONIX                   = 0xfaf5\n\tETHERTYPE_SPIDER                  = 0x809f\n\tETHERTYPE_SPRITE                  = 0x500\n\tETHERTYPE_STP                     = 0x8181\n\tETHERTYPE_TALARIS                 = 0x812b\n\tETHERTYPE_TALARISMC               = 0x852b\n\tETHERTYPE_TCPCOMP                 = 0x876b\n\tETHERTYPE_TCPSM                   = 0x9002\n\tETHERTYPE_TEC                     = 0x814f\n\tETHERTYPE_TIGAN                   = 0x802f\n\tETHERTYPE_TRAIL                   = 0x1000\n\tETHERTYPE_TRANSETHER              = 0x6558\n\tETHERTYPE_TYMSHARE                = 0x802e\n\tETHERTYPE_UBBST                   = 0x7005\n\tETHERTYPE_UBDEBUG                 = 0x900\n\tETHERTYPE_UBDIAGLOOP              = 0x7002\n\tETHERTYPE_UBDL                    = 0x7000\n\tETHERTYPE_UBNIU                   = 0x7001\n\tETHERTYPE_UBNMC                   = 0x7003\n\tETHERTYPE_VALID                   = 0x1600\n\tETHERTYPE_VARIAN                  = 0x80dd\n\tETHERTYPE_VAXELN                  = 0x803b\n\tETHERTYPE_VEECO                   = 0x8067\n\tETHERTYPE_VEXP                    = 0x805b\n\tETHERTYPE_VGLAB                   = 0x8131\n\tETHERTYPE_VINES                   = 0xbad\n\tETHERTYPE_VINESECHO               = 0xbaf\n\tETHERTYPE_VINESLOOP               = 0xbae\n\tETHERTYPE_VITAL                   = 0xff00\n\tETHERTYPE_VLAN                    = 0x8100\n\tETHERTYPE_VLTLMAN                 = 0x8080\n\tETHERTYPE_VPROD                   = 0x805c\n\tETHERTYPE_VURESERVED              = 0x8147\n\tETHERTYPE_WATERLOO                = 0x8130\n\tETHERTYPE_WELLFLEET               = 0x8103\n\tETHERTYPE_X25                     = 0x805\n\tETHERTYPE_X75                     = 0x801\n\tETHERTYPE_XNSSM                   = 0x9001\n\tETHERTYPE_XTP                     = 0x817d\n\tETHER_ADDR_LEN                    = 0x6\n\tETHER_CRC_LEN                     = 0x4\n\tETHER_CRC_POLY_BE                 = 0x4c11db6\n\tETHER_CRC_POLY_LE                 = 0xedb88320\n\tETHER_HDR_LEN                     = 0xe\n\tETHER_MAX_LEN                     = 0x5ee\n\tETHER_MAX_LEN_JUMBO               = 0x233a\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_PPPOE_ENCAP_LEN             = 0x8\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = 0x2\n\tEVFILT_PROC                       = 0x4\n\tEVFILT_READ                       = 0x0\n\tEVFILT_SIGNAL                     = 0x5\n\tEVFILT_SYSCOUNT                   = 0x7\n\tEVFILT_TIMER                      = 0x6\n\tEVFILT_VNODE                      = 0x3\n\tEVFILT_WRITE                      = 0x1\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_SYSFLAGS                       = 0xf000\n\tEXTA                              = 0x4b00\n\tEXTATTR_CMD_START                 = 0x1\n\tEXTATTR_CMD_STOP                  = 0x2\n\tEXTATTR_NAMESPACE_SYSTEM          = 0x2\n\tEXTATTR_NAMESPACE_USER            = 0x1\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x100\n\tFLUSHO                            = 0x800000\n\tF_CLOSEM                          = 0xa\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0xc\n\tF_FSCTL                           = -0x80000000\n\tF_FSDIRMASK                       = 0x70000000\n\tF_FSIN                            = 0x10000000\n\tF_FSINOUT                         = 0x30000000\n\tF_FSOUT                           = 0x20000000\n\tF_FSPRIV                          = 0x8000\n\tF_FSVOID                          = 0x40000000\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETNOSIGPIPE                    = 0xd\n\tF_GETOWN                          = 0x5\n\tF_MAXFD                           = 0xb\n\tF_OK                              = 0x0\n\tF_PARAM_MASK                      = 0xfff\n\tF_PARAM_MAX                       = 0xfff\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETNOSIGPIPE                    = 0xe\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFA_ROUTE                         = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x8f52\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_NOTRAILERS                    = 0x20\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf8\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ECONET                        = 0xce\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf2\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INFINIBAND                    = 0xc7\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LINEGROUP                     = 0xd2\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_PON155                        = 0xcf\n\tIFT_PON622                        = 0xd0\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPATM                       = 0xc5\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf1\n\tIFT_Q2931                         = 0xc9\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SIPSIG                        = 0xcc\n\tIFT_SIPTG                         = 0xcb\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_STF                           = 0xd7\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TELINK                        = 0xc8\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VIRTUALTG                     = 0xca\n\tIFT_VOICEDID                      = 0xd5\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEEMFGD                    = 0xd3\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFGDEANA                  = 0xd4\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERCABLE                = 0xc6\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_IPV6_ICMP                 = 0x3a\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x34\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_VRRP                      = 0x70\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPSEC_POLICY                 = 0x1c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_EF                             = 0x8000\n\tIP_ERRORMTU                       = 0x15\n\tIP_HDRINCL                        = 0x2\n\tIP_IPSEC_POLICY                   = 0x16\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0x14\n\tIP_MF                             = 0x2000\n\tIP_MINFRAGSIZE                    = 0x45\n\tIP_MINTTL                         = 0x18\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVIF                         = 0x14\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVTTL                        = 0x17\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x6\n\tMADV_NORMAL                       = 0x0\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SPACEAVAIL                   = 0x5\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ALIGNMENT_16MB                = 0x18000000\n\tMAP_ALIGNMENT_1TB                 = 0x28000000\n\tMAP_ALIGNMENT_256TB               = 0x30000000\n\tMAP_ALIGNMENT_4GB                 = 0x20000000\n\tMAP_ALIGNMENT_64KB                = 0x10000000\n\tMAP_ALIGNMENT_64PB                = 0x38000000\n\tMAP_ALIGNMENT_MASK                = -0x1000000\n\tMAP_ALIGNMENT_SHIFT               = 0x18\n\tMAP_ANON                          = 0x1000\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_HASSEMAPHORE                  = 0x200\n\tMAP_INHERIT                       = 0x80\n\tMAP_INHERIT_COPY                  = 0x1\n\tMAP_INHERIT_DEFAULT               = 0x1\n\tMAP_INHERIT_DONATE_COPY           = 0x3\n\tMAP_INHERIT_NONE                  = 0x2\n\tMAP_INHERIT_SHARE                 = 0x0\n\tMAP_NORESERVE                     = 0x40\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x20\n\tMAP_SHARED                        = 0x1\n\tMAP_STACK                         = 0x2000\n\tMAP_TRYFIXED                      = 0x400\n\tMAP_WIRED                         = 0x800\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_BASIC_FLAGS                   = 0xe782807f\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DISCARD                       = 0x800000\n\tMNT_EXKERB                        = 0x800\n\tMNT_EXNORESPORT                   = 0x8000000\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXPUBLIC                      = 0x10000000\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_EXTATTR                       = 0x1000000\n\tMNT_FORCE                         = 0x80000\n\tMNT_GETARGS                       = 0x400000\n\tMNT_IGNORE                        = 0x100000\n\tMNT_LAZY                          = 0x3\n\tMNT_LOCAL                         = 0x1000\n\tMNT_LOG                           = 0x2000000\n\tMNT_NOATIME                       = 0x4000000\n\tMNT_NOCOREDUMP                    = 0x8000\n\tMNT_NODEV                         = 0x10\n\tMNT_NODEVMTIME                    = 0x40000000\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOWAIT                        = 0x2\n\tMNT_OP_FLAGS                      = 0x4d0000\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELATIME                      = 0x20000\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x80000000\n\tMNT_SYMPERM                       = 0x20000000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UNION                         = 0x20\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0xff90ffff\n\tMNT_WAIT                          = 0x1\n\tMSG_BCAST                         = 0x100\n\tMSG_CMSG_CLOEXEC                  = 0x800\n\tMSG_CONTROLMBUF                   = 0x2000000\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOR                           = 0x8\n\tMSG_IOVUSRSPACE                   = 0x4000000\n\tMSG_LENUSRSPACE                   = 0x8000000\n\tMSG_MCAST                         = 0x200\n\tMSG_NAMEMBUF                      = 0x1000000\n\tMSG_NBIO                          = 0x1000\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_TRUNC                         = 0x10\n\tMSG_USERFLAGS                     = 0xffffff\n\tMSG_WAITALL                       = 0x40\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x2\n\tMS_SYNC                           = 0x4\n\tNAME_MAX                          = 0x1ff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x5\n\tNET_RT_MAXID                      = 0x6\n\tNET_RT_OIFLIST                    = 0x4\n\tNET_RT_OOIFLIST                   = 0x3\n\tNFDBITS                           = 0x20\n\tNOFLSH                            = 0x80000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOFIOGETBMAP                       = 0xc004667a\n\tONLCR                             = 0x2\n\tONLRET                            = 0x40\n\tONOCR                             = 0x20\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tO_ACCMODE                         = 0x3\n\tO_ALT_IO                          = 0x40000\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x400000\n\tO_CREAT                           = 0x200\n\tO_DIRECT                          = 0x80000\n\tO_DIRECTORY                       = 0x200000\n\tO_DSYNC                           = 0x10000\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_NOSIGPIPE                       = 0x1000000\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_RSYNC                           = 0x20000\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPRI_IOFLUSH                       = 0x7c\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tRLIMIT_AS                         = 0xa\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BRD                          = 0x7\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_MAX                          = 0x9\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_TAG                          = 0x8\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BRD                           = 0x80\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_NETMASK                       = 0x4\n\tRTA_TAG                           = 0x100\n\tRTF_ANNOUNCE                      = 0x20000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_CLONED                        = 0x2000\n\tRTF_CLONING                       = 0x100\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_MASK                          = 0x80\n\tRTF_MODIFIED                      = 0x20\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_REJECT                        = 0x8\n\tRTF_SRC                           = 0x10000\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_XRESOLVE                      = 0x200\n\tRTM_ADD                           = 0x1\n\tRTM_CHANGE                        = 0x3\n\tRTM_CHGADDR                       = 0x15\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_GET                           = 0x4\n\tRTM_IEEE80211                     = 0x11\n\tRTM_IFANNOUNCE                    = 0x10\n\tRTM_IFINFO                        = 0x14\n\tRTM_LLINFO_UPD                    = 0x13\n\tRTM_LOCK                          = 0x8\n\tRTM_LOSING                        = 0x5\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_OIFINFO                       = 0xf\n\tRTM_OLDADD                        = 0x9\n\tRTM_OLDDEL                        = 0xa\n\tRTM_OOIFINFO                      = 0xe\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_RTTUNIT                       = 0xf4240\n\tRTM_SETGATE                       = 0x12\n\tRTM_VERSION                       = 0x4\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tSCM_CREDS                         = 0x4\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x8\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80906931\n\tSIOCADDRT                         = 0x8030720a\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCALIFADDR                      = 0x8118691c\n\tSIOCATMARK                        = 0x40047307\n\tSIOCDELMULTI                      = 0x80906932\n\tSIOCDELRT                         = 0x8030720b\n\tSIOCDIFADDR                       = 0x80906919\n\tSIOCDIFPHYADDR                    = 0x80906949\n\tSIOCDLIFADDR                      = 0x8118691e\n\tSIOCGDRVSPEC                      = 0xc01c697b\n\tSIOCGETPFSYNC                     = 0xc09069f8\n\tSIOCGETSGCNT                      = 0xc0147534\n\tSIOCGETVIFCNT                     = 0xc0147533\n\tSIOCGHIWAT                        = 0x40047301\n\tSIOCGIFADDR                       = 0xc0906921\n\tSIOCGIFADDRPREF                   = 0xc0946920\n\tSIOCGIFALIAS                      = 0xc040691b\n\tSIOCGIFBRDADDR                    = 0xc0906923\n\tSIOCGIFCAP                        = 0xc0206976\n\tSIOCGIFCONF                       = 0xc0086926\n\tSIOCGIFDATA                       = 0xc0946985\n\tSIOCGIFDLT                        = 0xc0906977\n\tSIOCGIFDSTADDR                    = 0xc0906922\n\tSIOCGIFFLAGS                      = 0xc0906911\n\tSIOCGIFGENERIC                    = 0xc090693a\n\tSIOCGIFMEDIA                      = 0xc0286936\n\tSIOCGIFMETRIC                     = 0xc0906917\n\tSIOCGIFMTU                        = 0xc090697e\n\tSIOCGIFNETMASK                    = 0xc0906925\n\tSIOCGIFPDSTADDR                   = 0xc0906948\n\tSIOCGIFPSRCADDR                   = 0xc0906947\n\tSIOCGLIFADDR                      = 0xc118691d\n\tSIOCGLIFPHYADDR                   = 0xc118694b\n\tSIOCGLINKSTR                      = 0xc01c6987\n\tSIOCGLOWAT                        = 0x40047303\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGVH                           = 0xc0906983\n\tSIOCIFCREATE                      = 0x8090697a\n\tSIOCIFDESTROY                     = 0x80906979\n\tSIOCIFGCLONERS                    = 0xc00c6978\n\tSIOCINITIFADDR                    = 0xc0446984\n\tSIOCSDRVSPEC                      = 0x801c697b\n\tSIOCSETPFSYNC                     = 0x809069f7\n\tSIOCSHIWAT                        = 0x80047300\n\tSIOCSIFADDR                       = 0x8090690c\n\tSIOCSIFADDRPREF                   = 0x8094691f\n\tSIOCSIFBRDADDR                    = 0x80906913\n\tSIOCSIFCAP                        = 0x80206975\n\tSIOCSIFDSTADDR                    = 0x8090690e\n\tSIOCSIFFLAGS                      = 0x80906910\n\tSIOCSIFGENERIC                    = 0x80906939\n\tSIOCSIFMEDIA                      = 0xc0906935\n\tSIOCSIFMETRIC                     = 0x80906918\n\tSIOCSIFMTU                        = 0x8090697f\n\tSIOCSIFNETMASK                    = 0x80906916\n\tSIOCSIFPHYADDR                    = 0x80406946\n\tSIOCSLIFPHYADDR                   = 0x8118694a\n\tSIOCSLINKSTR                      = 0x801c6988\n\tSIOCSLOWAT                        = 0x80047302\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSVH                           = 0xc0906982\n\tSIOCZIFDATA                       = 0xc0946986\n\tSOCK_CLOEXEC                      = 0x10000000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_FLAGS_MASK                   = 0xf0000000\n\tSOCK_NONBLOCK                     = 0x20000000\n\tSOCK_NOSIGPIPE                    = 0x40000000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_ACCEPTFILTER                   = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NOHEADER                       = 0x100a\n\tSO_NOSIGPIPE                      = 0x800\n\tSO_OOBINLINE                      = 0x100\n\tSO_OVERFLOWED                     = 0x1009\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x100c\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x100b\n\tSO_TIMESTAMP                      = 0x2000\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tSYSCTL_VERSION                    = 0x1000000\n\tSYSCTL_VERS_0                     = 0x0\n\tSYSCTL_VERS_1                     = 0x1000000\n\tSYSCTL_VERS_MASK                  = 0xff000000\n\tS_ARCH1                           = 0x10000\n\tS_ARCH2                           = 0x20000\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IFWHT                           = 0xe000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tS_LOGIN_SET                       = 0x1\n\tTCIFLUSH                          = 0x1\n\tTCIOFLUSH                         = 0x3\n\tTCOFLUSH                          = 0x2\n\tTCP_CONGCTL                       = 0x20\n\tTCP_KEEPCNT                       = 0x6\n\tTCP_KEEPIDLE                      = 0x3\n\tTCP_KEEPINIT                      = 0x7\n\tTCP_KEEPINTVL                     = 0x5\n\tTCP_MAXBURST                      = 0x4\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MD5SIG                        = 0x10\n\tTCP_MINMSS                        = 0xd8\n\tTCP_MSS                           = 0x218\n\tTCP_NODELAY                       = 0x1\n\tTCSAFLUSH                         = 0x2\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCONS                          = 0x80047462\n\tTIOCDCDTIMESTAMP                  = 0x400c7458\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLAG_CDTRCTS                  = 0x10\n\tTIOCFLAG_CLOCAL                   = 0x2\n\tTIOCFLAG_CRTSCTS                  = 0x4\n\tTIOCFLAG_MDMBUF                   = 0x8\n\tTIOCFLAG_SOFTCAR                  = 0x1\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGFLAGS                        = 0x4004745d\n\tTIOCGLINED                        = 0x40207442\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGQSIZE                        = 0x40047481\n\tTIOCGRANTPT                       = 0x20007447\n\tTIOCGSID                          = 0x40047463\n\tTIOCGSIZE                         = 0x40087468\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCPTMGET                        = 0x40287446\n\tTIOCPTSNAME                       = 0x40287448\n\tTIOCRCVFRAME                      = 0x80047445\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x2000745f\n\tTIOCSLINED                        = 0x80207443\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSQSIZE                        = 0x80047480\n\tTIOCSSIZE                         = 0x80087467\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x80047465\n\tTIOCSTI                           = 0x80017472\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\n\tTIOCXMTFRAME                      = 0x80047444\n\tTOSTOP                            = 0x400000\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWALL                              = 0x8\n\tWALLSIG                           = 0x8\n\tWALTSIG                           = 0x4\n\tWCLONE                            = 0x4\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\n\tWNOWAIT                           = 0x10000\n\tWNOZOMBIE                         = 0x20000\n\tWOPTSCHECKED                      = 0x40000\n\tWSTOPPED                          = 0x7f\n\tWUNTRACED                         = 0x2\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x58)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x57)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x52)\n\tEILSEQ          = syscall.Errno(0x55)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x60)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5e)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x5d)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODATA         = syscall.Errno(0x59)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x5f)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x53)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x5a)\n\tENOSTR          = syscall.Errno(0x5b)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x56)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x60)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIME           = syscall.Errno(0x5c)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x20)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large or too small\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol option not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"connection timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIDRM\", \"identifier removed\"},\n\t{83, \"ENOMSG\", \"no message of desired type\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"EILSEQ\", \"illegal byte sequence\"},\n\t{86, \"ENOTSUP\", \"not supported\"},\n\t{87, \"ECANCELED\", \"operation Canceled\"},\n\t{88, \"EBADMSG\", \"bad or Corrupt message\"},\n\t{89, \"ENODATA\", \"no message available\"},\n\t{90, \"ENOSR\", \"no STREAM resources\"},\n\t{91, \"ENOSTR\", \"not a STREAM\"},\n\t{92, \"ETIME\", \"STREAM ioctl timeout\"},\n\t{93, \"ENOATTR\", \"attribute not found\"},\n\t{94, \"EMULTIHOP\", \"multihop attempted\"},\n\t{95, \"ENOLINK\", \"link has been severed\"},\n\t{96, \"ELAST\", \"protocol error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"stopped (signal)\"},\n\t{18, \"SIGTSTP\", \"stopped\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGPWR\", \"power fail/restart\"},\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && netbsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_ARP                            = 0x1c\n\tAF_BLUETOOTH                      = 0x1f\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_HYLINK                         = 0xf\n\tAF_IEEE80211                      = 0x20\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x18\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x23\n\tAF_MPLS                           = 0x21\n\tAF_NATM                           = 0x1b\n\tAF_NS                             = 0x6\n\tAF_OROUTE                         = 0x11\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x22\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tARPHRD_ARCNET                     = 0x7\n\tARPHRD_ETHER                      = 0x1\n\tARPHRD_FRELAY                     = 0xf\n\tARPHRD_IEEE1394                   = 0x18\n\tARPHRD_IEEE802                    = 0x6\n\tARPHRD_STRIP                      = 0x17\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB460800                           = 0x70800\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB921600                           = 0xe1000\n\tB9600                             = 0x2580\n\tBIOCFEEDBACK                      = 0x8004427d\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc0104277\n\tBIOCGETIF                         = 0x4090426b\n\tBIOCGFEEDBACK                     = 0x4004427c\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRTIMEOUT                     = 0x4010427b\n\tBIOCGSEESENT                      = 0x40044278\n\tBIOCGSTATS                        = 0x4080426f\n\tBIOCGSTATSOLD                     = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDLT                          = 0x80044276\n\tBIOCSETF                          = 0x80104267\n\tBIOCSETIF                         = 0x8090426c\n\tBIOCSFEEDBACK                     = 0x8004427d\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRTIMEOUT                     = 0x8010427a\n\tBIOCSSEESENT                      = 0x80044279\n\tBIOCSTCPF                         = 0x80104272\n\tBIOCSUDPF                         = 0x80104273\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x8\n\tBPF_ALIGNMENT32                   = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DFLTBUFSIZE                   = 0x100000\n\tBPF_DIV                           = 0x30\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x1000000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLONE_CSIGNAL                     = 0xff\n\tCLONE_FILES                       = 0x400\n\tCLONE_FS                          = 0x200\n\tCLONE_PID                         = 0x1000\n\tCLONE_PTRACE                      = 0x2000\n\tCLONE_SIGHAND                     = 0x800\n\tCLONE_VFORK                       = 0x4000\n\tCLONE_VM                          = 0x100\n\tCPUSTATES                         = 0x5\n\tCP_IDLE                           = 0x4\n\tCP_INTR                           = 0x3\n\tCP_NICE                           = 0x1\n\tCP_SYS                            = 0x2\n\tCP_USER                           = 0x0\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x10000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0x14\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tCTL_QUERY                         = -0x2\n\tDIOCBSFLUSH                       = 0x20006478\n\tDLT_A429                          = 0xb8\n\tDLT_A653_ICM                      = 0xb9\n\tDLT_AIRONET_HEADER                = 0x78\n\tDLT_AOS                           = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394        = 0x8a\n\tDLT_ARCNET                        = 0x7\n\tDLT_ARCNET_LINUX                  = 0x81\n\tDLT_ATM_CLIP                      = 0x13\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AURORA                        = 0x7e\n\tDLT_AX25                          = 0x3\n\tDLT_AX25_KISS                     = 0xca\n\tDLT_BACNET_MS_TP                  = 0xa5\n\tDLT_BLUETOOTH_HCI_H4              = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR    = 0xc9\n\tDLT_CAN20B                        = 0xbe\n\tDLT_CAN_SOCKETCAN                 = 0xe3\n\tDLT_CHAOS                         = 0x5\n\tDLT_CISCO_IOS                     = 0x76\n\tDLT_C_HDLC                        = 0x68\n\tDLT_C_HDLC_WITH_DIR               = 0xcd\n\tDLT_DECT                          = 0xdd\n\tDLT_DOCSIS                        = 0x8f\n\tDLT_ECONET                        = 0x73\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0x6d\n\tDLT_ERF                           = 0xc5\n\tDLT_ERF_ETH                       = 0xaf\n\tDLT_ERF_POS                       = 0xb0\n\tDLT_FC_2                          = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS        = 0xe1\n\tDLT_FDDI                          = 0xa\n\tDLT_FLEXRAY                       = 0xd2\n\tDLT_FRELAY                        = 0x6b\n\tDLT_FRELAY_WITH_DIR               = 0xce\n\tDLT_GCOM_SERIAL                   = 0xad\n\tDLT_GCOM_T1E1                     = 0xac\n\tDLT_GPF_F                         = 0xab\n\tDLT_GPF_T                         = 0xaa\n\tDLT_GPRS_LLC                      = 0xa9\n\tDLT_GSMTAP_ABIS                   = 0xda\n\tDLT_GSMTAP_UM                     = 0xd9\n\tDLT_HDLC                          = 0x10\n\tDLT_HHDLC                         = 0x79\n\tDLT_HIPPI                         = 0xf\n\tDLT_IBM_SN                        = 0x92\n\tDLT_IBM_SP                        = 0x91\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS          = 0xa3\n\tDLT_IEEE802_15_4                  = 0xc3\n\tDLT_IEEE802_15_4_LINUX            = 0xbf\n\tDLT_IEEE802_15_4_NONASK_PHY       = 0xd7\n\tDLT_IEEE802_16_MAC_CPS            = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO      = 0xc1\n\tDLT_IPMB                          = 0xc7\n\tDLT_IPMB_LINUX                    = 0xd1\n\tDLT_IPNET                         = 0xe2\n\tDLT_IPV4                          = 0xe4\n\tDLT_IPV6                          = 0xe5\n\tDLT_IP_OVER_FC                    = 0x7a\n\tDLT_JUNIPER_ATM1                  = 0x89\n\tDLT_JUNIPER_ATM2                  = 0x87\n\tDLT_JUNIPER_CHDLC                 = 0xb5\n\tDLT_JUNIPER_ES                    = 0x84\n\tDLT_JUNIPER_ETHER                 = 0xb2\n\tDLT_JUNIPER_FRELAY                = 0xb4\n\tDLT_JUNIPER_GGSN                  = 0x85\n\tDLT_JUNIPER_ISM                   = 0xc2\n\tDLT_JUNIPER_MFR                   = 0x86\n\tDLT_JUNIPER_MLFR                  = 0x83\n\tDLT_JUNIPER_MLPPP                 = 0x82\n\tDLT_JUNIPER_MONITOR               = 0xa4\n\tDLT_JUNIPER_PIC_PEER              = 0xae\n\tDLT_JUNIPER_PPP                   = 0xb3\n\tDLT_JUNIPER_PPPOE                 = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM             = 0xa8\n\tDLT_JUNIPER_SERVICES              = 0x88\n\tDLT_JUNIPER_ST                    = 0xc8\n\tDLT_JUNIPER_VP                    = 0xb7\n\tDLT_LAPB_WITH_DIR                 = 0xcf\n\tDLT_LAPD                          = 0xcb\n\tDLT_LIN                           = 0xd4\n\tDLT_LINUX_EVDEV                   = 0xd8\n\tDLT_LINUX_IRDA                    = 0x90\n\tDLT_LINUX_LAPD                    = 0xb1\n\tDLT_LINUX_SLL                     = 0x71\n\tDLT_LOOP                          = 0x6c\n\tDLT_LTALK                         = 0x72\n\tDLT_MFR                           = 0xb6\n\tDLT_MOST                          = 0xd3\n\tDLT_MPLS                          = 0xdb\n\tDLT_MTP2                          = 0x8c\n\tDLT_MTP2_WITH_PHDR                = 0x8b\n\tDLT_MTP3                          = 0x8d\n\tDLT_NULL                          = 0x0\n\tDLT_PCI_EXP                       = 0x7d\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPI                           = 0xc0\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0xe\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_PPPD                      = 0xa6\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PPP_WITH_DIR                  = 0xcc\n\tDLT_PRISM_HEADER                  = 0x77\n\tDLT_PRONET                        = 0x4\n\tDLT_RAIF1                         = 0xc6\n\tDLT_RAW                           = 0xc\n\tDLT_RAWAF_MASK                    = 0x2240000\n\tDLT_RIO                           = 0x7c\n\tDLT_SCCP                          = 0x8e\n\tDLT_SITA                          = 0xc4\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xd\n\tDLT_SUNATM                        = 0x7b\n\tDLT_SYMANTEC_FIREWALL             = 0x63\n\tDLT_TZSP                          = 0x80\n\tDLT_USB                           = 0xba\n\tDLT_USB_LINUX                     = 0xbd\n\tDLT_USB_LINUX_MMAPPED             = 0xdc\n\tDLT_WIHART                        = 0xdf\n\tDLT_X2E_SERIAL                    = 0xd5\n\tDLT_X2E_XORAYA                    = 0xd6\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tDT_WHT                            = 0xe\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEMUL_LINUX                        = 0x1\n\tEMUL_LINUX32                      = 0x5\n\tEMUL_MAXID                        = 0x6\n\tETHERCAP_JUMBO_MTU                = 0x4\n\tETHERCAP_VLAN_HWTAGGING           = 0x2\n\tETHERCAP_VLAN_MTU                 = 0x1\n\tETHERMIN                          = 0x2e\n\tETHERMTU                          = 0x5dc\n\tETHERMTU_JUMBO                    = 0x2328\n\tETHERTYPE_8023                    = 0x4\n\tETHERTYPE_AARP                    = 0x80f3\n\tETHERTYPE_ACCTON                  = 0x8390\n\tETHERTYPE_AEONIC                  = 0x8036\n\tETHERTYPE_ALPHA                   = 0x814a\n\tETHERTYPE_AMBER                   = 0x6008\n\tETHERTYPE_AMOEBA                  = 0x8145\n\tETHERTYPE_APOLLO                  = 0x80f7\n\tETHERTYPE_APOLLODOMAIN            = 0x8019\n\tETHERTYPE_APPLETALK               = 0x809b\n\tETHERTYPE_APPLITEK                = 0x80c7\n\tETHERTYPE_ARGONAUT                = 0x803a\n\tETHERTYPE_ARP                     = 0x806\n\tETHERTYPE_AT                      = 0x809b\n\tETHERTYPE_ATALK                   = 0x809b\n\tETHERTYPE_ATOMIC                  = 0x86df\n\tETHERTYPE_ATT                     = 0x8069\n\tETHERTYPE_ATTSTANFORD             = 0x8008\n\tETHERTYPE_AUTOPHON                = 0x806a\n\tETHERTYPE_AXIS                    = 0x8856\n\tETHERTYPE_BCLOOP                  = 0x9003\n\tETHERTYPE_BOFL                    = 0x8102\n\tETHERTYPE_CABLETRON               = 0x7034\n\tETHERTYPE_CHAOS                   = 0x804\n\tETHERTYPE_COMDESIGN               = 0x806c\n\tETHERTYPE_COMPUGRAPHIC            = 0x806d\n\tETHERTYPE_COUNTERPOINT            = 0x8062\n\tETHERTYPE_CRONUS                  = 0x8004\n\tETHERTYPE_CRONUSVLN               = 0x8003\n\tETHERTYPE_DCA                     = 0x1234\n\tETHERTYPE_DDE                     = 0x807b\n\tETHERTYPE_DEBNI                   = 0xaaaa\n\tETHERTYPE_DECAM                   = 0x8048\n\tETHERTYPE_DECCUST                 = 0x6006\n\tETHERTYPE_DECDIAG                 = 0x6005\n\tETHERTYPE_DECDNS                  = 0x803c\n\tETHERTYPE_DECDTS                  = 0x803e\n\tETHERTYPE_DECEXPER                = 0x6000\n\tETHERTYPE_DECLAST                 = 0x8041\n\tETHERTYPE_DECLTM                  = 0x803f\n\tETHERTYPE_DECMUMPS                = 0x6009\n\tETHERTYPE_DECNETBIOS              = 0x8040\n\tETHERTYPE_DELTACON                = 0x86de\n\tETHERTYPE_DIDDLE                  = 0x4321\n\tETHERTYPE_DLOG1                   = 0x660\n\tETHERTYPE_DLOG2                   = 0x661\n\tETHERTYPE_DN                      = 0x6003\n\tETHERTYPE_DOGFIGHT                = 0x1989\n\tETHERTYPE_DSMD                    = 0x8039\n\tETHERTYPE_ECMA                    = 0x803\n\tETHERTYPE_ENCRYPT                 = 0x803d\n\tETHERTYPE_ES                      = 0x805d\n\tETHERTYPE_EXCELAN                 = 0x8010\n\tETHERTYPE_EXPERDATA               = 0x8049\n\tETHERTYPE_FLIP                    = 0x8146\n\tETHERTYPE_FLOWCONTROL             = 0x8808\n\tETHERTYPE_FRARP                   = 0x808\n\tETHERTYPE_GENDYN                  = 0x8068\n\tETHERTYPE_HAYES                   = 0x8130\n\tETHERTYPE_HIPPI_FP                = 0x8180\n\tETHERTYPE_HITACHI                 = 0x8820\n\tETHERTYPE_HP                      = 0x8005\n\tETHERTYPE_IEEEPUP                 = 0xa00\n\tETHERTYPE_IEEEPUPAT               = 0xa01\n\tETHERTYPE_IMLBL                   = 0x4c42\n\tETHERTYPE_IMLBLDIAG               = 0x424c\n\tETHERTYPE_IP                      = 0x800\n\tETHERTYPE_IPAS                    = 0x876c\n\tETHERTYPE_IPV6                    = 0x86dd\n\tETHERTYPE_IPX                     = 0x8137\n\tETHERTYPE_IPXNEW                  = 0x8037\n\tETHERTYPE_KALPANA                 = 0x8582\n\tETHERTYPE_LANBRIDGE               = 0x8038\n\tETHERTYPE_LANPROBE                = 0x8888\n\tETHERTYPE_LAT                     = 0x6004\n\tETHERTYPE_LBACK                   = 0x9000\n\tETHERTYPE_LITTLE                  = 0x8060\n\tETHERTYPE_LOGICRAFT               = 0x8148\n\tETHERTYPE_LOOPBACK                = 0x9000\n\tETHERTYPE_MATRA                   = 0x807a\n\tETHERTYPE_MAX                     = 0xffff\n\tETHERTYPE_MERIT                   = 0x807c\n\tETHERTYPE_MICP                    = 0x873a\n\tETHERTYPE_MOPDL                   = 0x6001\n\tETHERTYPE_MOPRC                   = 0x6002\n\tETHERTYPE_MOTOROLA                = 0x818d\n\tETHERTYPE_MPLS                    = 0x8847\n\tETHERTYPE_MPLS_MCAST              = 0x8848\n\tETHERTYPE_MUMPS                   = 0x813f\n\tETHERTYPE_NBPCC                   = 0x3c04\n\tETHERTYPE_NBPCLAIM                = 0x3c09\n\tETHERTYPE_NBPCLREQ                = 0x3c05\n\tETHERTYPE_NBPCLRSP                = 0x3c06\n\tETHERTYPE_NBPCREQ                 = 0x3c02\n\tETHERTYPE_NBPCRSP                 = 0x3c03\n\tETHERTYPE_NBPDG                   = 0x3c07\n\tETHERTYPE_NBPDGB                  = 0x3c08\n\tETHERTYPE_NBPDLTE                 = 0x3c0a\n\tETHERTYPE_NBPRAR                  = 0x3c0c\n\tETHERTYPE_NBPRAS                  = 0x3c0b\n\tETHERTYPE_NBPRST                  = 0x3c0d\n\tETHERTYPE_NBPSCD                  = 0x3c01\n\tETHERTYPE_NBPVCD                  = 0x3c00\n\tETHERTYPE_NBS                     = 0x802\n\tETHERTYPE_NCD                     = 0x8149\n\tETHERTYPE_NESTAR                  = 0x8006\n\tETHERTYPE_NETBEUI                 = 0x8191\n\tETHERTYPE_NOVELL                  = 0x8138\n\tETHERTYPE_NS                      = 0x600\n\tETHERTYPE_NSAT                    = 0x601\n\tETHERTYPE_NSCOMPAT                = 0x807\n\tETHERTYPE_NTRAILER                = 0x10\n\tETHERTYPE_OS9                     = 0x7007\n\tETHERTYPE_OS9NET                  = 0x7009\n\tETHERTYPE_PACER                   = 0x80c6\n\tETHERTYPE_PAE                     = 0x888e\n\tETHERTYPE_PCS                     = 0x4242\n\tETHERTYPE_PLANNING                = 0x8044\n\tETHERTYPE_PPP                     = 0x880b\n\tETHERTYPE_PPPOE                   = 0x8864\n\tETHERTYPE_PPPOEDISC               = 0x8863\n\tETHERTYPE_PRIMENTS                = 0x7031\n\tETHERTYPE_PUP                     = 0x200\n\tETHERTYPE_PUPAT                   = 0x200\n\tETHERTYPE_RACAL                   = 0x7030\n\tETHERTYPE_RATIONAL                = 0x8150\n\tETHERTYPE_RAWFR                   = 0x6559\n\tETHERTYPE_RCL                     = 0x1995\n\tETHERTYPE_RDP                     = 0x8739\n\tETHERTYPE_RETIX                   = 0x80f2\n\tETHERTYPE_REVARP                  = 0x8035\n\tETHERTYPE_SCA                     = 0x6007\n\tETHERTYPE_SECTRA                  = 0x86db\n\tETHERTYPE_SECUREDATA              = 0x876d\n\tETHERTYPE_SGITW                   = 0x817e\n\tETHERTYPE_SG_BOUNCE               = 0x8016\n\tETHERTYPE_SG_DIAG                 = 0x8013\n\tETHERTYPE_SG_NETGAMES             = 0x8014\n\tETHERTYPE_SG_RESV                 = 0x8015\n\tETHERTYPE_SIMNET                  = 0x5208\n\tETHERTYPE_SLOWPROTOCOLS           = 0x8809\n\tETHERTYPE_SNA                     = 0x80d5\n\tETHERTYPE_SNMP                    = 0x814c\n\tETHERTYPE_SONIX                   = 0xfaf5\n\tETHERTYPE_SPIDER                  = 0x809f\n\tETHERTYPE_SPRITE                  = 0x500\n\tETHERTYPE_STP                     = 0x8181\n\tETHERTYPE_TALARIS                 = 0x812b\n\tETHERTYPE_TALARISMC               = 0x852b\n\tETHERTYPE_TCPCOMP                 = 0x876b\n\tETHERTYPE_TCPSM                   = 0x9002\n\tETHERTYPE_TEC                     = 0x814f\n\tETHERTYPE_TIGAN                   = 0x802f\n\tETHERTYPE_TRAIL                   = 0x1000\n\tETHERTYPE_TRANSETHER              = 0x6558\n\tETHERTYPE_TYMSHARE                = 0x802e\n\tETHERTYPE_UBBST                   = 0x7005\n\tETHERTYPE_UBDEBUG                 = 0x900\n\tETHERTYPE_UBDIAGLOOP              = 0x7002\n\tETHERTYPE_UBDL                    = 0x7000\n\tETHERTYPE_UBNIU                   = 0x7001\n\tETHERTYPE_UBNMC                   = 0x7003\n\tETHERTYPE_VALID                   = 0x1600\n\tETHERTYPE_VARIAN                  = 0x80dd\n\tETHERTYPE_VAXELN                  = 0x803b\n\tETHERTYPE_VEECO                   = 0x8067\n\tETHERTYPE_VEXP                    = 0x805b\n\tETHERTYPE_VGLAB                   = 0x8131\n\tETHERTYPE_VINES                   = 0xbad\n\tETHERTYPE_VINESECHO               = 0xbaf\n\tETHERTYPE_VINESLOOP               = 0xbae\n\tETHERTYPE_VITAL                   = 0xff00\n\tETHERTYPE_VLAN                    = 0x8100\n\tETHERTYPE_VLTLMAN                 = 0x8080\n\tETHERTYPE_VPROD                   = 0x805c\n\tETHERTYPE_VURESERVED              = 0x8147\n\tETHERTYPE_WATERLOO                = 0x8130\n\tETHERTYPE_WELLFLEET               = 0x8103\n\tETHERTYPE_X25                     = 0x805\n\tETHERTYPE_X75                     = 0x801\n\tETHERTYPE_XNSSM                   = 0x9001\n\tETHERTYPE_XTP                     = 0x817d\n\tETHER_ADDR_LEN                    = 0x6\n\tETHER_CRC_LEN                     = 0x4\n\tETHER_CRC_POLY_BE                 = 0x4c11db6\n\tETHER_CRC_POLY_LE                 = 0xedb88320\n\tETHER_HDR_LEN                     = 0xe\n\tETHER_MAX_LEN                     = 0x5ee\n\tETHER_MAX_LEN_JUMBO               = 0x233a\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_PPPOE_ENCAP_LEN             = 0x8\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = 0x2\n\tEVFILT_PROC                       = 0x4\n\tEVFILT_READ                       = 0x0\n\tEVFILT_SIGNAL                     = 0x5\n\tEVFILT_SYSCOUNT                   = 0x7\n\tEVFILT_TIMER                      = 0x6\n\tEVFILT_VNODE                      = 0x3\n\tEVFILT_WRITE                      = 0x1\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_SYSFLAGS                       = 0xf000\n\tEXTA                              = 0x4b00\n\tEXTATTR_CMD_START                 = 0x1\n\tEXTATTR_CMD_STOP                  = 0x2\n\tEXTATTR_NAMESPACE_SYSTEM          = 0x2\n\tEXTATTR_NAMESPACE_USER            = 0x1\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x100\n\tFLUSHO                            = 0x800000\n\tF_CLOSEM                          = 0xa\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0xc\n\tF_FSCTL                           = -0x80000000\n\tF_FSDIRMASK                       = 0x70000000\n\tF_FSIN                            = 0x10000000\n\tF_FSINOUT                         = 0x30000000\n\tF_FSOUT                           = 0x20000000\n\tF_FSPRIV                          = 0x8000\n\tF_FSVOID                          = 0x40000000\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETNOSIGPIPE                    = 0xd\n\tF_GETOWN                          = 0x5\n\tF_MAXFD                           = 0xb\n\tF_OK                              = 0x0\n\tF_PARAM_MASK                      = 0xfff\n\tF_PARAM_MAX                       = 0xfff\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETNOSIGPIPE                    = 0xe\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFA_ROUTE                         = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x8f52\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_NOTRAILERS                    = 0x20\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf8\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ECONET                        = 0xce\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf2\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INFINIBAND                    = 0xc7\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LINEGROUP                     = 0xd2\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_PON155                        = 0xcf\n\tIFT_PON622                        = 0xd0\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPATM                       = 0xc5\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf1\n\tIFT_Q2931                         = 0xc9\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SIPSIG                        = 0xcc\n\tIFT_SIPTG                         = 0xcb\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_STF                           = 0xd7\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TELINK                        = 0xc8\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VIRTUALTG                     = 0xca\n\tIFT_VOICEDID                      = 0xd5\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEEMFGD                    = 0xd3\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFGDEANA                  = 0xd4\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERCABLE                = 0xc6\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_IPV6_ICMP                 = 0x3a\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x34\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_VRRP                      = 0x70\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPSEC_POLICY                 = 0x1c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_EF                             = 0x8000\n\tIP_ERRORMTU                       = 0x15\n\tIP_HDRINCL                        = 0x2\n\tIP_IPSEC_POLICY                   = 0x16\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0x14\n\tIP_MF                             = 0x2000\n\tIP_MINFRAGSIZE                    = 0x45\n\tIP_MINTTL                         = 0x18\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVIF                         = 0x14\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVTTL                        = 0x17\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x6\n\tMADV_NORMAL                       = 0x0\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SPACEAVAIL                   = 0x5\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ALIGNMENT_16MB                = 0x18000000\n\tMAP_ALIGNMENT_1TB                 = 0x28000000\n\tMAP_ALIGNMENT_256TB               = 0x30000000\n\tMAP_ALIGNMENT_4GB                 = 0x20000000\n\tMAP_ALIGNMENT_64KB                = 0x10000000\n\tMAP_ALIGNMENT_64PB                = 0x38000000\n\tMAP_ALIGNMENT_MASK                = -0x1000000\n\tMAP_ALIGNMENT_SHIFT               = 0x18\n\tMAP_ANON                          = 0x1000\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_HASSEMAPHORE                  = 0x200\n\tMAP_INHERIT                       = 0x80\n\tMAP_INHERIT_COPY                  = 0x1\n\tMAP_INHERIT_DEFAULT               = 0x1\n\tMAP_INHERIT_DONATE_COPY           = 0x3\n\tMAP_INHERIT_NONE                  = 0x2\n\tMAP_INHERIT_SHARE                 = 0x0\n\tMAP_NORESERVE                     = 0x40\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x20\n\tMAP_SHARED                        = 0x1\n\tMAP_STACK                         = 0x2000\n\tMAP_TRYFIXED                      = 0x400\n\tMAP_WIRED                         = 0x800\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_BASIC_FLAGS                   = 0xe782807f\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DISCARD                       = 0x800000\n\tMNT_EXKERB                        = 0x800\n\tMNT_EXNORESPORT                   = 0x8000000\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXPUBLIC                      = 0x10000000\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_EXTATTR                       = 0x1000000\n\tMNT_FORCE                         = 0x80000\n\tMNT_GETARGS                       = 0x400000\n\tMNT_IGNORE                        = 0x100000\n\tMNT_LAZY                          = 0x3\n\tMNT_LOCAL                         = 0x1000\n\tMNT_LOG                           = 0x2000000\n\tMNT_NOATIME                       = 0x4000000\n\tMNT_NOCOREDUMP                    = 0x8000\n\tMNT_NODEV                         = 0x10\n\tMNT_NODEVMTIME                    = 0x40000000\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOWAIT                        = 0x2\n\tMNT_OP_FLAGS                      = 0x4d0000\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELATIME                      = 0x20000\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x80000000\n\tMNT_SYMPERM                       = 0x20000000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UNION                         = 0x20\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0xff90ffff\n\tMNT_WAIT                          = 0x1\n\tMSG_BCAST                         = 0x100\n\tMSG_CMSG_CLOEXEC                  = 0x800\n\tMSG_CONTROLMBUF                   = 0x2000000\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOR                           = 0x8\n\tMSG_IOVUSRSPACE                   = 0x4000000\n\tMSG_LENUSRSPACE                   = 0x8000000\n\tMSG_MCAST                         = 0x200\n\tMSG_NAMEMBUF                      = 0x1000000\n\tMSG_NBIO                          = 0x1000\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_TRUNC                         = 0x10\n\tMSG_USERFLAGS                     = 0xffffff\n\tMSG_WAITALL                       = 0x40\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x2\n\tMS_SYNC                           = 0x4\n\tNAME_MAX                          = 0x1ff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x5\n\tNET_RT_MAXID                      = 0x6\n\tNET_RT_OIFLIST                    = 0x4\n\tNET_RT_OOIFLIST                   = 0x3\n\tNFDBITS                           = 0x20\n\tNOFLSH                            = 0x80000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOFIOGETBMAP                       = 0xc004667a\n\tONLCR                             = 0x2\n\tONLRET                            = 0x40\n\tONOCR                             = 0x20\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tO_ACCMODE                         = 0x3\n\tO_ALT_IO                          = 0x40000\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x400000\n\tO_CREAT                           = 0x200\n\tO_DIRECT                          = 0x80000\n\tO_DIRECTORY                       = 0x200000\n\tO_DSYNC                           = 0x10000\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_NOSIGPIPE                       = 0x1000000\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_RSYNC                           = 0x20000\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPRI_IOFLUSH                       = 0x7c\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tRLIMIT_AS                         = 0xa\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BRD                          = 0x7\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_MAX                          = 0x9\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_TAG                          = 0x8\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BRD                           = 0x80\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_NETMASK                       = 0x4\n\tRTA_TAG                           = 0x100\n\tRTF_ANNOUNCE                      = 0x20000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_CLONED                        = 0x2000\n\tRTF_CLONING                       = 0x100\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_MASK                          = 0x80\n\tRTF_MODIFIED                      = 0x20\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_REJECT                        = 0x8\n\tRTF_SRC                           = 0x10000\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_XRESOLVE                      = 0x200\n\tRTM_ADD                           = 0x1\n\tRTM_CHANGE                        = 0x3\n\tRTM_CHGADDR                       = 0x15\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_GET                           = 0x4\n\tRTM_IEEE80211                     = 0x11\n\tRTM_IFANNOUNCE                    = 0x10\n\tRTM_IFINFO                        = 0x14\n\tRTM_LLINFO_UPD                    = 0x13\n\tRTM_LOCK                          = 0x8\n\tRTM_LOSING                        = 0x5\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_OIFINFO                       = 0xf\n\tRTM_OLDADD                        = 0x9\n\tRTM_OLDDEL                        = 0xa\n\tRTM_OOIFINFO                      = 0xe\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_RTTUNIT                       = 0xf4240\n\tRTM_SETGATE                       = 0x12\n\tRTM_VERSION                       = 0x4\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tSCM_CREDS                         = 0x4\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x8\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80906931\n\tSIOCADDRT                         = 0x8038720a\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCALIFADDR                      = 0x8118691c\n\tSIOCATMARK                        = 0x40047307\n\tSIOCDELMULTI                      = 0x80906932\n\tSIOCDELRT                         = 0x8038720b\n\tSIOCDIFADDR                       = 0x80906919\n\tSIOCDIFPHYADDR                    = 0x80906949\n\tSIOCDLIFADDR                      = 0x8118691e\n\tSIOCGDRVSPEC                      = 0xc028697b\n\tSIOCGETPFSYNC                     = 0xc09069f8\n\tSIOCGETSGCNT                      = 0xc0207534\n\tSIOCGETVIFCNT                     = 0xc0287533\n\tSIOCGHIWAT                        = 0x40047301\n\tSIOCGIFADDR                       = 0xc0906921\n\tSIOCGIFADDRPREF                   = 0xc0986920\n\tSIOCGIFALIAS                      = 0xc040691b\n\tSIOCGIFBRDADDR                    = 0xc0906923\n\tSIOCGIFCAP                        = 0xc0206976\n\tSIOCGIFCONF                       = 0xc0106926\n\tSIOCGIFDATA                       = 0xc0986985\n\tSIOCGIFDLT                        = 0xc0906977\n\tSIOCGIFDSTADDR                    = 0xc0906922\n\tSIOCGIFFLAGS                      = 0xc0906911\n\tSIOCGIFGENERIC                    = 0xc090693a\n\tSIOCGIFMEDIA                      = 0xc0306936\n\tSIOCGIFMETRIC                     = 0xc0906917\n\tSIOCGIFMTU                        = 0xc090697e\n\tSIOCGIFNETMASK                    = 0xc0906925\n\tSIOCGIFPDSTADDR                   = 0xc0906948\n\tSIOCGIFPSRCADDR                   = 0xc0906947\n\tSIOCGLIFADDR                      = 0xc118691d\n\tSIOCGLIFPHYADDR                   = 0xc118694b\n\tSIOCGLINKSTR                      = 0xc0286987\n\tSIOCGLOWAT                        = 0x40047303\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGVH                           = 0xc0906983\n\tSIOCIFCREATE                      = 0x8090697a\n\tSIOCIFDESTROY                     = 0x80906979\n\tSIOCIFGCLONERS                    = 0xc0106978\n\tSIOCINITIFADDR                    = 0xc0706984\n\tSIOCSDRVSPEC                      = 0x8028697b\n\tSIOCSETPFSYNC                     = 0x809069f7\n\tSIOCSHIWAT                        = 0x80047300\n\tSIOCSIFADDR                       = 0x8090690c\n\tSIOCSIFADDRPREF                   = 0x8098691f\n\tSIOCSIFBRDADDR                    = 0x80906913\n\tSIOCSIFCAP                        = 0x80206975\n\tSIOCSIFDSTADDR                    = 0x8090690e\n\tSIOCSIFFLAGS                      = 0x80906910\n\tSIOCSIFGENERIC                    = 0x80906939\n\tSIOCSIFMEDIA                      = 0xc0906935\n\tSIOCSIFMETRIC                     = 0x80906918\n\tSIOCSIFMTU                        = 0x8090697f\n\tSIOCSIFNETMASK                    = 0x80906916\n\tSIOCSIFPHYADDR                    = 0x80406946\n\tSIOCSLIFPHYADDR                   = 0x8118694a\n\tSIOCSLINKSTR                      = 0x80286988\n\tSIOCSLOWAT                        = 0x80047302\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSVH                           = 0xc0906982\n\tSIOCZIFDATA                       = 0xc0986986\n\tSOCK_CLOEXEC                      = 0x10000000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_FLAGS_MASK                   = 0xf0000000\n\tSOCK_NONBLOCK                     = 0x20000000\n\tSOCK_NOSIGPIPE                    = 0x40000000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_ACCEPTFILTER                   = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NOHEADER                       = 0x100a\n\tSO_NOSIGPIPE                      = 0x800\n\tSO_OOBINLINE                      = 0x100\n\tSO_OVERFLOWED                     = 0x1009\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x100c\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x100b\n\tSO_TIMESTAMP                      = 0x2000\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tSYSCTL_VERSION                    = 0x1000000\n\tSYSCTL_VERS_0                     = 0x0\n\tSYSCTL_VERS_1                     = 0x1000000\n\tSYSCTL_VERS_MASK                  = 0xff000000\n\tS_ARCH1                           = 0x10000\n\tS_ARCH2                           = 0x20000\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IFWHT                           = 0xe000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tS_LOGIN_SET                       = 0x1\n\tTCIFLUSH                          = 0x1\n\tTCIOFLUSH                         = 0x3\n\tTCOFLUSH                          = 0x2\n\tTCP_CONGCTL                       = 0x20\n\tTCP_KEEPCNT                       = 0x6\n\tTCP_KEEPIDLE                      = 0x3\n\tTCP_KEEPINIT                      = 0x7\n\tTCP_KEEPINTVL                     = 0x5\n\tTCP_MAXBURST                      = 0x4\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MD5SIG                        = 0x10\n\tTCP_MINMSS                        = 0xd8\n\tTCP_MSS                           = 0x218\n\tTCP_NODELAY                       = 0x1\n\tTCSAFLUSH                         = 0x2\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCONS                          = 0x80047462\n\tTIOCDCDTIMESTAMP                  = 0x40107458\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLAG_CDTRCTS                  = 0x10\n\tTIOCFLAG_CLOCAL                   = 0x2\n\tTIOCFLAG_CRTSCTS                  = 0x4\n\tTIOCFLAG_MDMBUF                   = 0x8\n\tTIOCFLAG_SOFTCAR                  = 0x1\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGFLAGS                        = 0x4004745d\n\tTIOCGLINED                        = 0x40207442\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGQSIZE                        = 0x40047481\n\tTIOCGRANTPT                       = 0x20007447\n\tTIOCGSID                          = 0x40047463\n\tTIOCGSIZE                         = 0x40087468\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCPTMGET                        = 0x40287446\n\tTIOCPTSNAME                       = 0x40287448\n\tTIOCRCVFRAME                      = 0x80087445\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x2000745f\n\tTIOCSLINED                        = 0x80207443\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSQSIZE                        = 0x80047480\n\tTIOCSSIZE                         = 0x80087467\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x80047465\n\tTIOCSTI                           = 0x80017472\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\n\tTIOCXMTFRAME                      = 0x80087444\n\tTOSTOP                            = 0x400000\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWALL                              = 0x8\n\tWALLSIG                           = 0x8\n\tWALTSIG                           = 0x4\n\tWCLONE                            = 0x4\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\n\tWNOWAIT                           = 0x10000\n\tWNOZOMBIE                         = 0x20000\n\tWOPTSCHECKED                      = 0x40000\n\tWSTOPPED                          = 0x7f\n\tWUNTRACED                         = 0x2\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x58)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x57)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x52)\n\tEILSEQ          = syscall.Errno(0x55)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x60)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5e)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x5d)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODATA         = syscall.Errno(0x59)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x5f)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x53)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x5a)\n\tENOSTR          = syscall.Errno(0x5b)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x56)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x60)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIME           = syscall.Errno(0x5c)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x20)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large or too small\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol option not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"connection timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIDRM\", \"identifier removed\"},\n\t{83, \"ENOMSG\", \"no message of desired type\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"EILSEQ\", \"illegal byte sequence\"},\n\t{86, \"ENOTSUP\", \"not supported\"},\n\t{87, \"ECANCELED\", \"operation Canceled\"},\n\t{88, \"EBADMSG\", \"bad or Corrupt message\"},\n\t{89, \"ENODATA\", \"no message available\"},\n\t{90, \"ENOSR\", \"no STREAM resources\"},\n\t{91, \"ENOSTR\", \"not a STREAM\"},\n\t{92, \"ETIME\", \"STREAM ioctl timeout\"},\n\t{93, \"ENOATTR\", \"attribute not found\"},\n\t{94, \"EMULTIHOP\", \"multihop attempted\"},\n\t{95, \"ENOLINK\", \"link has been severed\"},\n\t{96, \"ELAST\", \"protocol error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"stopped (signal)\"},\n\t{18, \"SIGTSTP\", \"stopped\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGPWR\", \"power fail/restart\"},\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go",
    "content": "// mkerrors.sh -marm\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm && netbsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -marm _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_ARP                            = 0x1c\n\tAF_BLUETOOTH                      = 0x1f\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_HYLINK                         = 0xf\n\tAF_IEEE80211                      = 0x20\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x18\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x23\n\tAF_MPLS                           = 0x21\n\tAF_NATM                           = 0x1b\n\tAF_NS                             = 0x6\n\tAF_OROUTE                         = 0x11\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x22\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tARPHRD_ARCNET                     = 0x7\n\tARPHRD_ETHER                      = 0x1\n\tARPHRD_FRELAY                     = 0xf\n\tARPHRD_IEEE1394                   = 0x18\n\tARPHRD_IEEE802                    = 0x6\n\tARPHRD_STRIP                      = 0x17\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB460800                           = 0x70800\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB921600                           = 0xe1000\n\tB9600                             = 0x2580\n\tBIOCFEEDBACK                      = 0x8004427d\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc0084277\n\tBIOCGETIF                         = 0x4090426b\n\tBIOCGFEEDBACK                     = 0x4004427c\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRTIMEOUT                     = 0x400c427b\n\tBIOCGSEESENT                      = 0x40044278\n\tBIOCGSTATS                        = 0x4080426f\n\tBIOCGSTATSOLD                     = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDLT                          = 0x80044276\n\tBIOCSETF                          = 0x80084267\n\tBIOCSETIF                         = 0x8090426c\n\tBIOCSFEEDBACK                     = 0x8004427d\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRTIMEOUT                     = 0x800c427a\n\tBIOCSSEESENT                      = 0x80044279\n\tBIOCSTCPF                         = 0x80084272\n\tBIOCSUDPF                         = 0x80084273\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x4\n\tBPF_ALIGNMENT32                   = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DFLTBUFSIZE                   = 0x100000\n\tBPF_DIV                           = 0x30\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x1000000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCPUSTATES                         = 0x5\n\tCP_IDLE                           = 0x4\n\tCP_INTR                           = 0x3\n\tCP_NICE                           = 0x1\n\tCP_SYS                            = 0x2\n\tCP_USER                           = 0x0\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x10000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0x14\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tCTL_QUERY                         = -0x2\n\tDIOCBSFLUSH                       = 0x20006478\n\tDLT_A429                          = 0xb8\n\tDLT_A653_ICM                      = 0xb9\n\tDLT_AIRONET_HEADER                = 0x78\n\tDLT_AOS                           = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394        = 0x8a\n\tDLT_ARCNET                        = 0x7\n\tDLT_ARCNET_LINUX                  = 0x81\n\tDLT_ATM_CLIP                      = 0x13\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AURORA                        = 0x7e\n\tDLT_AX25                          = 0x3\n\tDLT_AX25_KISS                     = 0xca\n\tDLT_BACNET_MS_TP                  = 0xa5\n\tDLT_BLUETOOTH_HCI_H4              = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR    = 0xc9\n\tDLT_CAN20B                        = 0xbe\n\tDLT_CAN_SOCKETCAN                 = 0xe3\n\tDLT_CHAOS                         = 0x5\n\tDLT_CISCO_IOS                     = 0x76\n\tDLT_C_HDLC                        = 0x68\n\tDLT_C_HDLC_WITH_DIR               = 0xcd\n\tDLT_DECT                          = 0xdd\n\tDLT_DOCSIS                        = 0x8f\n\tDLT_ECONET                        = 0x73\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0x6d\n\tDLT_ERF                           = 0xc5\n\tDLT_ERF_ETH                       = 0xaf\n\tDLT_ERF_POS                       = 0xb0\n\tDLT_FC_2                          = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS        = 0xe1\n\tDLT_FDDI                          = 0xa\n\tDLT_FLEXRAY                       = 0xd2\n\tDLT_FRELAY                        = 0x6b\n\tDLT_FRELAY_WITH_DIR               = 0xce\n\tDLT_GCOM_SERIAL                   = 0xad\n\tDLT_GCOM_T1E1                     = 0xac\n\tDLT_GPF_F                         = 0xab\n\tDLT_GPF_T                         = 0xaa\n\tDLT_GPRS_LLC                      = 0xa9\n\tDLT_GSMTAP_ABIS                   = 0xda\n\tDLT_GSMTAP_UM                     = 0xd9\n\tDLT_HDLC                          = 0x10\n\tDLT_HHDLC                         = 0x79\n\tDLT_HIPPI                         = 0xf\n\tDLT_IBM_SN                        = 0x92\n\tDLT_IBM_SP                        = 0x91\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS          = 0xa3\n\tDLT_IEEE802_15_4                  = 0xc3\n\tDLT_IEEE802_15_4_LINUX            = 0xbf\n\tDLT_IEEE802_15_4_NONASK_PHY       = 0xd7\n\tDLT_IEEE802_16_MAC_CPS            = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO      = 0xc1\n\tDLT_IPMB                          = 0xc7\n\tDLT_IPMB_LINUX                    = 0xd1\n\tDLT_IPNET                         = 0xe2\n\tDLT_IPV4                          = 0xe4\n\tDLT_IPV6                          = 0xe5\n\tDLT_IP_OVER_FC                    = 0x7a\n\tDLT_JUNIPER_ATM1                  = 0x89\n\tDLT_JUNIPER_ATM2                  = 0x87\n\tDLT_JUNIPER_CHDLC                 = 0xb5\n\tDLT_JUNIPER_ES                    = 0x84\n\tDLT_JUNIPER_ETHER                 = 0xb2\n\tDLT_JUNIPER_FRELAY                = 0xb4\n\tDLT_JUNIPER_GGSN                  = 0x85\n\tDLT_JUNIPER_ISM                   = 0xc2\n\tDLT_JUNIPER_MFR                   = 0x86\n\tDLT_JUNIPER_MLFR                  = 0x83\n\tDLT_JUNIPER_MLPPP                 = 0x82\n\tDLT_JUNIPER_MONITOR               = 0xa4\n\tDLT_JUNIPER_PIC_PEER              = 0xae\n\tDLT_JUNIPER_PPP                   = 0xb3\n\tDLT_JUNIPER_PPPOE                 = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM             = 0xa8\n\tDLT_JUNIPER_SERVICES              = 0x88\n\tDLT_JUNIPER_ST                    = 0xc8\n\tDLT_JUNIPER_VP                    = 0xb7\n\tDLT_LAPB_WITH_DIR                 = 0xcf\n\tDLT_LAPD                          = 0xcb\n\tDLT_LIN                           = 0xd4\n\tDLT_LINUX_EVDEV                   = 0xd8\n\tDLT_LINUX_IRDA                    = 0x90\n\tDLT_LINUX_LAPD                    = 0xb1\n\tDLT_LINUX_SLL                     = 0x71\n\tDLT_LOOP                          = 0x6c\n\tDLT_LTALK                         = 0x72\n\tDLT_MFR                           = 0xb6\n\tDLT_MOST                          = 0xd3\n\tDLT_MPLS                          = 0xdb\n\tDLT_MTP2                          = 0x8c\n\tDLT_MTP2_WITH_PHDR                = 0x8b\n\tDLT_MTP3                          = 0x8d\n\tDLT_NULL                          = 0x0\n\tDLT_PCI_EXP                       = 0x7d\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPI                           = 0xc0\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0xe\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_PPPD                      = 0xa6\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PPP_WITH_DIR                  = 0xcc\n\tDLT_PRISM_HEADER                  = 0x77\n\tDLT_PRONET                        = 0x4\n\tDLT_RAIF1                         = 0xc6\n\tDLT_RAW                           = 0xc\n\tDLT_RAWAF_MASK                    = 0x2240000\n\tDLT_RIO                           = 0x7c\n\tDLT_SCCP                          = 0x8e\n\tDLT_SITA                          = 0xc4\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xd\n\tDLT_SUNATM                        = 0x7b\n\tDLT_SYMANTEC_FIREWALL             = 0x63\n\tDLT_TZSP                          = 0x80\n\tDLT_USB                           = 0xba\n\tDLT_USB_LINUX                     = 0xbd\n\tDLT_USB_LINUX_MMAPPED             = 0xdc\n\tDLT_WIHART                        = 0xdf\n\tDLT_X2E_SERIAL                    = 0xd5\n\tDLT_X2E_XORAYA                    = 0xd6\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tDT_WHT                            = 0xe\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEMUL_LINUX                        = 0x1\n\tEMUL_LINUX32                      = 0x5\n\tEMUL_MAXID                        = 0x6\n\tETHERCAP_JUMBO_MTU                = 0x4\n\tETHERCAP_VLAN_HWTAGGING           = 0x2\n\tETHERCAP_VLAN_MTU                 = 0x1\n\tETHERMIN                          = 0x2e\n\tETHERMTU                          = 0x5dc\n\tETHERMTU_JUMBO                    = 0x2328\n\tETHERTYPE_8023                    = 0x4\n\tETHERTYPE_AARP                    = 0x80f3\n\tETHERTYPE_ACCTON                  = 0x8390\n\tETHERTYPE_AEONIC                  = 0x8036\n\tETHERTYPE_ALPHA                   = 0x814a\n\tETHERTYPE_AMBER                   = 0x6008\n\tETHERTYPE_AMOEBA                  = 0x8145\n\tETHERTYPE_APOLLO                  = 0x80f7\n\tETHERTYPE_APOLLODOMAIN            = 0x8019\n\tETHERTYPE_APPLETALK               = 0x809b\n\tETHERTYPE_APPLITEK                = 0x80c7\n\tETHERTYPE_ARGONAUT                = 0x803a\n\tETHERTYPE_ARP                     = 0x806\n\tETHERTYPE_AT                      = 0x809b\n\tETHERTYPE_ATALK                   = 0x809b\n\tETHERTYPE_ATOMIC                  = 0x86df\n\tETHERTYPE_ATT                     = 0x8069\n\tETHERTYPE_ATTSTANFORD             = 0x8008\n\tETHERTYPE_AUTOPHON                = 0x806a\n\tETHERTYPE_AXIS                    = 0x8856\n\tETHERTYPE_BCLOOP                  = 0x9003\n\tETHERTYPE_BOFL                    = 0x8102\n\tETHERTYPE_CABLETRON               = 0x7034\n\tETHERTYPE_CHAOS                   = 0x804\n\tETHERTYPE_COMDESIGN               = 0x806c\n\tETHERTYPE_COMPUGRAPHIC            = 0x806d\n\tETHERTYPE_COUNTERPOINT            = 0x8062\n\tETHERTYPE_CRONUS                  = 0x8004\n\tETHERTYPE_CRONUSVLN               = 0x8003\n\tETHERTYPE_DCA                     = 0x1234\n\tETHERTYPE_DDE                     = 0x807b\n\tETHERTYPE_DEBNI                   = 0xaaaa\n\tETHERTYPE_DECAM                   = 0x8048\n\tETHERTYPE_DECCUST                 = 0x6006\n\tETHERTYPE_DECDIAG                 = 0x6005\n\tETHERTYPE_DECDNS                  = 0x803c\n\tETHERTYPE_DECDTS                  = 0x803e\n\tETHERTYPE_DECEXPER                = 0x6000\n\tETHERTYPE_DECLAST                 = 0x8041\n\tETHERTYPE_DECLTM                  = 0x803f\n\tETHERTYPE_DECMUMPS                = 0x6009\n\tETHERTYPE_DECNETBIOS              = 0x8040\n\tETHERTYPE_DELTACON                = 0x86de\n\tETHERTYPE_DIDDLE                  = 0x4321\n\tETHERTYPE_DLOG1                   = 0x660\n\tETHERTYPE_DLOG2                   = 0x661\n\tETHERTYPE_DN                      = 0x6003\n\tETHERTYPE_DOGFIGHT                = 0x1989\n\tETHERTYPE_DSMD                    = 0x8039\n\tETHERTYPE_ECMA                    = 0x803\n\tETHERTYPE_ENCRYPT                 = 0x803d\n\tETHERTYPE_ES                      = 0x805d\n\tETHERTYPE_EXCELAN                 = 0x8010\n\tETHERTYPE_EXPERDATA               = 0x8049\n\tETHERTYPE_FLIP                    = 0x8146\n\tETHERTYPE_FLOWCONTROL             = 0x8808\n\tETHERTYPE_FRARP                   = 0x808\n\tETHERTYPE_GENDYN                  = 0x8068\n\tETHERTYPE_HAYES                   = 0x8130\n\tETHERTYPE_HIPPI_FP                = 0x8180\n\tETHERTYPE_HITACHI                 = 0x8820\n\tETHERTYPE_HP                      = 0x8005\n\tETHERTYPE_IEEEPUP                 = 0xa00\n\tETHERTYPE_IEEEPUPAT               = 0xa01\n\tETHERTYPE_IMLBL                   = 0x4c42\n\tETHERTYPE_IMLBLDIAG               = 0x424c\n\tETHERTYPE_IP                      = 0x800\n\tETHERTYPE_IPAS                    = 0x876c\n\tETHERTYPE_IPV6                    = 0x86dd\n\tETHERTYPE_IPX                     = 0x8137\n\tETHERTYPE_IPXNEW                  = 0x8037\n\tETHERTYPE_KALPANA                 = 0x8582\n\tETHERTYPE_LANBRIDGE               = 0x8038\n\tETHERTYPE_LANPROBE                = 0x8888\n\tETHERTYPE_LAT                     = 0x6004\n\tETHERTYPE_LBACK                   = 0x9000\n\tETHERTYPE_LITTLE                  = 0x8060\n\tETHERTYPE_LOGICRAFT               = 0x8148\n\tETHERTYPE_LOOPBACK                = 0x9000\n\tETHERTYPE_MATRA                   = 0x807a\n\tETHERTYPE_MAX                     = 0xffff\n\tETHERTYPE_MERIT                   = 0x807c\n\tETHERTYPE_MICP                    = 0x873a\n\tETHERTYPE_MOPDL                   = 0x6001\n\tETHERTYPE_MOPRC                   = 0x6002\n\tETHERTYPE_MOTOROLA                = 0x818d\n\tETHERTYPE_MPLS                    = 0x8847\n\tETHERTYPE_MPLS_MCAST              = 0x8848\n\tETHERTYPE_MUMPS                   = 0x813f\n\tETHERTYPE_NBPCC                   = 0x3c04\n\tETHERTYPE_NBPCLAIM                = 0x3c09\n\tETHERTYPE_NBPCLREQ                = 0x3c05\n\tETHERTYPE_NBPCLRSP                = 0x3c06\n\tETHERTYPE_NBPCREQ                 = 0x3c02\n\tETHERTYPE_NBPCRSP                 = 0x3c03\n\tETHERTYPE_NBPDG                   = 0x3c07\n\tETHERTYPE_NBPDGB                  = 0x3c08\n\tETHERTYPE_NBPDLTE                 = 0x3c0a\n\tETHERTYPE_NBPRAR                  = 0x3c0c\n\tETHERTYPE_NBPRAS                  = 0x3c0b\n\tETHERTYPE_NBPRST                  = 0x3c0d\n\tETHERTYPE_NBPSCD                  = 0x3c01\n\tETHERTYPE_NBPVCD                  = 0x3c00\n\tETHERTYPE_NBS                     = 0x802\n\tETHERTYPE_NCD                     = 0x8149\n\tETHERTYPE_NESTAR                  = 0x8006\n\tETHERTYPE_NETBEUI                 = 0x8191\n\tETHERTYPE_NOVELL                  = 0x8138\n\tETHERTYPE_NS                      = 0x600\n\tETHERTYPE_NSAT                    = 0x601\n\tETHERTYPE_NSCOMPAT                = 0x807\n\tETHERTYPE_NTRAILER                = 0x10\n\tETHERTYPE_OS9                     = 0x7007\n\tETHERTYPE_OS9NET                  = 0x7009\n\tETHERTYPE_PACER                   = 0x80c6\n\tETHERTYPE_PAE                     = 0x888e\n\tETHERTYPE_PCS                     = 0x4242\n\tETHERTYPE_PLANNING                = 0x8044\n\tETHERTYPE_PPP                     = 0x880b\n\tETHERTYPE_PPPOE                   = 0x8864\n\tETHERTYPE_PPPOEDISC               = 0x8863\n\tETHERTYPE_PRIMENTS                = 0x7031\n\tETHERTYPE_PUP                     = 0x200\n\tETHERTYPE_PUPAT                   = 0x200\n\tETHERTYPE_RACAL                   = 0x7030\n\tETHERTYPE_RATIONAL                = 0x8150\n\tETHERTYPE_RAWFR                   = 0x6559\n\tETHERTYPE_RCL                     = 0x1995\n\tETHERTYPE_RDP                     = 0x8739\n\tETHERTYPE_RETIX                   = 0x80f2\n\tETHERTYPE_REVARP                  = 0x8035\n\tETHERTYPE_SCA                     = 0x6007\n\tETHERTYPE_SECTRA                  = 0x86db\n\tETHERTYPE_SECUREDATA              = 0x876d\n\tETHERTYPE_SGITW                   = 0x817e\n\tETHERTYPE_SG_BOUNCE               = 0x8016\n\tETHERTYPE_SG_DIAG                 = 0x8013\n\tETHERTYPE_SG_NETGAMES             = 0x8014\n\tETHERTYPE_SG_RESV                 = 0x8015\n\tETHERTYPE_SIMNET                  = 0x5208\n\tETHERTYPE_SLOWPROTOCOLS           = 0x8809\n\tETHERTYPE_SNA                     = 0x80d5\n\tETHERTYPE_SNMP                    = 0x814c\n\tETHERTYPE_SONIX                   = 0xfaf5\n\tETHERTYPE_SPIDER                  = 0x809f\n\tETHERTYPE_SPRITE                  = 0x500\n\tETHERTYPE_STP                     = 0x8181\n\tETHERTYPE_TALARIS                 = 0x812b\n\tETHERTYPE_TALARISMC               = 0x852b\n\tETHERTYPE_TCPCOMP                 = 0x876b\n\tETHERTYPE_TCPSM                   = 0x9002\n\tETHERTYPE_TEC                     = 0x814f\n\tETHERTYPE_TIGAN                   = 0x802f\n\tETHERTYPE_TRAIL                   = 0x1000\n\tETHERTYPE_TRANSETHER              = 0x6558\n\tETHERTYPE_TYMSHARE                = 0x802e\n\tETHERTYPE_UBBST                   = 0x7005\n\tETHERTYPE_UBDEBUG                 = 0x900\n\tETHERTYPE_UBDIAGLOOP              = 0x7002\n\tETHERTYPE_UBDL                    = 0x7000\n\tETHERTYPE_UBNIU                   = 0x7001\n\tETHERTYPE_UBNMC                   = 0x7003\n\tETHERTYPE_VALID                   = 0x1600\n\tETHERTYPE_VARIAN                  = 0x80dd\n\tETHERTYPE_VAXELN                  = 0x803b\n\tETHERTYPE_VEECO                   = 0x8067\n\tETHERTYPE_VEXP                    = 0x805b\n\tETHERTYPE_VGLAB                   = 0x8131\n\tETHERTYPE_VINES                   = 0xbad\n\tETHERTYPE_VINESECHO               = 0xbaf\n\tETHERTYPE_VINESLOOP               = 0xbae\n\tETHERTYPE_VITAL                   = 0xff00\n\tETHERTYPE_VLAN                    = 0x8100\n\tETHERTYPE_VLTLMAN                 = 0x8080\n\tETHERTYPE_VPROD                   = 0x805c\n\tETHERTYPE_VURESERVED              = 0x8147\n\tETHERTYPE_WATERLOO                = 0x8130\n\tETHERTYPE_WELLFLEET               = 0x8103\n\tETHERTYPE_X25                     = 0x805\n\tETHERTYPE_X75                     = 0x801\n\tETHERTYPE_XNSSM                   = 0x9001\n\tETHERTYPE_XTP                     = 0x817d\n\tETHER_ADDR_LEN                    = 0x6\n\tETHER_CRC_LEN                     = 0x4\n\tETHER_CRC_POLY_BE                 = 0x4c11db6\n\tETHER_CRC_POLY_LE                 = 0xedb88320\n\tETHER_HDR_LEN                     = 0xe\n\tETHER_MAX_LEN                     = 0x5ee\n\tETHER_MAX_LEN_JUMBO               = 0x233a\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_PPPOE_ENCAP_LEN             = 0x8\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = 0x2\n\tEVFILT_PROC                       = 0x4\n\tEVFILT_READ                       = 0x0\n\tEVFILT_SIGNAL                     = 0x5\n\tEVFILT_SYSCOUNT                   = 0x7\n\tEVFILT_TIMER                      = 0x6\n\tEVFILT_VNODE                      = 0x3\n\tEVFILT_WRITE                      = 0x1\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_SYSFLAGS                       = 0xf000\n\tEXTA                              = 0x4b00\n\tEXTATTR_CMD_START                 = 0x1\n\tEXTATTR_CMD_STOP                  = 0x2\n\tEXTATTR_NAMESPACE_SYSTEM          = 0x2\n\tEXTATTR_NAMESPACE_USER            = 0x1\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x100\n\tFLUSHO                            = 0x800000\n\tF_CLOSEM                          = 0xa\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0xc\n\tF_FSCTL                           = -0x80000000\n\tF_FSDIRMASK                       = 0x70000000\n\tF_FSIN                            = 0x10000000\n\tF_FSINOUT                         = 0x30000000\n\tF_FSOUT                           = 0x20000000\n\tF_FSPRIV                          = 0x8000\n\tF_FSVOID                          = 0x40000000\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETNOSIGPIPE                    = 0xd\n\tF_GETOWN                          = 0x5\n\tF_MAXFD                           = 0xb\n\tF_OK                              = 0x0\n\tF_PARAM_MASK                      = 0xfff\n\tF_PARAM_MAX                       = 0xfff\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETNOSIGPIPE                    = 0xe\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFA_ROUTE                         = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x8f52\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_NOTRAILERS                    = 0x20\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf8\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ECONET                        = 0xce\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf2\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INFINIBAND                    = 0xc7\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LINEGROUP                     = 0xd2\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_PON155                        = 0xcf\n\tIFT_PON622                        = 0xd0\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPATM                       = 0xc5\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf1\n\tIFT_Q2931                         = 0xc9\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SIPSIG                        = 0xcc\n\tIFT_SIPTG                         = 0xcb\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_STF                           = 0xd7\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TELINK                        = 0xc8\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VIRTUALTG                     = 0xca\n\tIFT_VOICEDID                      = 0xd5\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEEMFGD                    = 0xd3\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFGDEANA                  = 0xd4\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERCABLE                = 0xc6\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_IPV6_ICMP                 = 0x3a\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x34\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_VRRP                      = 0x70\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPSEC_POLICY                 = 0x1c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_EF                             = 0x8000\n\tIP_ERRORMTU                       = 0x15\n\tIP_HDRINCL                        = 0x2\n\tIP_IPSEC_POLICY                   = 0x16\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0x14\n\tIP_MF                             = 0x2000\n\tIP_MINFRAGSIZE                    = 0x45\n\tIP_MINTTL                         = 0x18\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVIF                         = 0x14\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVTTL                        = 0x17\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x6\n\tMADV_NORMAL                       = 0x0\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SPACEAVAIL                   = 0x5\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ALIGNMENT_16MB                = 0x18000000\n\tMAP_ALIGNMENT_1TB                 = 0x28000000\n\tMAP_ALIGNMENT_256TB               = 0x30000000\n\tMAP_ALIGNMENT_4GB                 = 0x20000000\n\tMAP_ALIGNMENT_64KB                = 0x10000000\n\tMAP_ALIGNMENT_64PB                = 0x38000000\n\tMAP_ALIGNMENT_MASK                = -0x1000000\n\tMAP_ALIGNMENT_SHIFT               = 0x18\n\tMAP_ANON                          = 0x1000\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_HASSEMAPHORE                  = 0x200\n\tMAP_INHERIT                       = 0x80\n\tMAP_INHERIT_COPY                  = 0x1\n\tMAP_INHERIT_DEFAULT               = 0x1\n\tMAP_INHERIT_DONATE_COPY           = 0x3\n\tMAP_INHERIT_NONE                  = 0x2\n\tMAP_INHERIT_SHARE                 = 0x0\n\tMAP_NORESERVE                     = 0x40\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x20\n\tMAP_SHARED                        = 0x1\n\tMAP_STACK                         = 0x2000\n\tMAP_TRYFIXED                      = 0x400\n\tMAP_WIRED                         = 0x800\n\tMNT_ASYNC                         = 0x40\n\tMNT_BASIC_FLAGS                   = 0xe782807f\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DISCARD                       = 0x800000\n\tMNT_EXKERB                        = 0x800\n\tMNT_EXNORESPORT                   = 0x8000000\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXPUBLIC                      = 0x10000000\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_EXTATTR                       = 0x1000000\n\tMNT_FORCE                         = 0x80000\n\tMNT_GETARGS                       = 0x400000\n\tMNT_IGNORE                        = 0x100000\n\tMNT_LAZY                          = 0x3\n\tMNT_LOCAL                         = 0x1000\n\tMNT_LOG                           = 0x2000000\n\tMNT_NOATIME                       = 0x4000000\n\tMNT_NOCOREDUMP                    = 0x8000\n\tMNT_NODEV                         = 0x10\n\tMNT_NODEVMTIME                    = 0x40000000\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOWAIT                        = 0x2\n\tMNT_OP_FLAGS                      = 0x4d0000\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELATIME                      = 0x20000\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x80000000\n\tMNT_SYMPERM                       = 0x20000000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UNION                         = 0x20\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0xff90ffff\n\tMNT_WAIT                          = 0x1\n\tMSG_BCAST                         = 0x100\n\tMSG_CMSG_CLOEXEC                  = 0x800\n\tMSG_CONTROLMBUF                   = 0x2000000\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOR                           = 0x8\n\tMSG_IOVUSRSPACE                   = 0x4000000\n\tMSG_LENUSRSPACE                   = 0x8000000\n\tMSG_MCAST                         = 0x200\n\tMSG_NAMEMBUF                      = 0x1000000\n\tMSG_NBIO                          = 0x1000\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_TRUNC                         = 0x10\n\tMSG_USERFLAGS                     = 0xffffff\n\tMSG_WAITALL                       = 0x40\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x2\n\tMS_SYNC                           = 0x4\n\tNAME_MAX                          = 0x1ff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x5\n\tNET_RT_MAXID                      = 0x6\n\tNET_RT_OIFLIST                    = 0x4\n\tNET_RT_OOIFLIST                   = 0x3\n\tNFDBITS                           = 0x20\n\tNOFLSH                            = 0x80000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOFIOGETBMAP                       = 0xc004667a\n\tONLCR                             = 0x2\n\tONLRET                            = 0x40\n\tONOCR                             = 0x20\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tO_ACCMODE                         = 0x3\n\tO_ALT_IO                          = 0x40000\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x400000\n\tO_CREAT                           = 0x200\n\tO_DIRECT                          = 0x80000\n\tO_DIRECTORY                       = 0x200000\n\tO_DSYNC                           = 0x10000\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_NOSIGPIPE                       = 0x1000000\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_RSYNC                           = 0x20000\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tPRI_IOFLUSH                       = 0x7c\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tRLIMIT_AS                         = 0xa\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BRD                          = 0x7\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_MAX                          = 0x9\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_TAG                          = 0x8\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BRD                           = 0x80\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_NETMASK                       = 0x4\n\tRTA_TAG                           = 0x100\n\tRTF_ANNOUNCE                      = 0x20000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_CLONED                        = 0x2000\n\tRTF_CLONING                       = 0x100\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_MASK                          = 0x80\n\tRTF_MODIFIED                      = 0x20\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_REJECT                        = 0x8\n\tRTF_SRC                           = 0x10000\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_XRESOLVE                      = 0x200\n\tRTM_ADD                           = 0x1\n\tRTM_CHANGE                        = 0x3\n\tRTM_CHGADDR                       = 0x15\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_GET                           = 0x4\n\tRTM_IEEE80211                     = 0x11\n\tRTM_IFANNOUNCE                    = 0x10\n\tRTM_IFINFO                        = 0x14\n\tRTM_LLINFO_UPD                    = 0x13\n\tRTM_LOCK                          = 0x8\n\tRTM_LOSING                        = 0x5\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_OIFINFO                       = 0xf\n\tRTM_OLDADD                        = 0x9\n\tRTM_OLDDEL                        = 0xa\n\tRTM_OOIFINFO                      = 0xe\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_RTTUNIT                       = 0xf4240\n\tRTM_SETGATE                       = 0x12\n\tRTM_VERSION                       = 0x4\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tSCM_CREDS                         = 0x4\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x8\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80906931\n\tSIOCADDRT                         = 0x8030720a\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCALIFADDR                      = 0x8118691c\n\tSIOCATMARK                        = 0x40047307\n\tSIOCDELMULTI                      = 0x80906932\n\tSIOCDELRT                         = 0x8030720b\n\tSIOCDIFADDR                       = 0x80906919\n\tSIOCDIFPHYADDR                    = 0x80906949\n\tSIOCDLIFADDR                      = 0x8118691e\n\tSIOCGDRVSPEC                      = 0xc01c697b\n\tSIOCGETPFSYNC                     = 0xc09069f8\n\tSIOCGETSGCNT                      = 0xc0147534\n\tSIOCGETVIFCNT                     = 0xc0147533\n\tSIOCGHIWAT                        = 0x40047301\n\tSIOCGIFADDR                       = 0xc0906921\n\tSIOCGIFADDRPREF                   = 0xc0946920\n\tSIOCGIFALIAS                      = 0xc040691b\n\tSIOCGIFBRDADDR                    = 0xc0906923\n\tSIOCGIFCAP                        = 0xc0206976\n\tSIOCGIFCONF                       = 0xc0086926\n\tSIOCGIFDATA                       = 0xc0946985\n\tSIOCGIFDLT                        = 0xc0906977\n\tSIOCGIFDSTADDR                    = 0xc0906922\n\tSIOCGIFFLAGS                      = 0xc0906911\n\tSIOCGIFGENERIC                    = 0xc090693a\n\tSIOCGIFMEDIA                      = 0xc0286936\n\tSIOCGIFMETRIC                     = 0xc0906917\n\tSIOCGIFMTU                        = 0xc090697e\n\tSIOCGIFNETMASK                    = 0xc0906925\n\tSIOCGIFPDSTADDR                   = 0xc0906948\n\tSIOCGIFPSRCADDR                   = 0xc0906947\n\tSIOCGLIFADDR                      = 0xc118691d\n\tSIOCGLIFPHYADDR                   = 0xc118694b\n\tSIOCGLINKSTR                      = 0xc01c6987\n\tSIOCGLOWAT                        = 0x40047303\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGVH                           = 0xc0906983\n\tSIOCIFCREATE                      = 0x8090697a\n\tSIOCIFDESTROY                     = 0x80906979\n\tSIOCIFGCLONERS                    = 0xc00c6978\n\tSIOCINITIFADDR                    = 0xc0446984\n\tSIOCSDRVSPEC                      = 0x801c697b\n\tSIOCSETPFSYNC                     = 0x809069f7\n\tSIOCSHIWAT                        = 0x80047300\n\tSIOCSIFADDR                       = 0x8090690c\n\tSIOCSIFADDRPREF                   = 0x8094691f\n\tSIOCSIFBRDADDR                    = 0x80906913\n\tSIOCSIFCAP                        = 0x80206975\n\tSIOCSIFDSTADDR                    = 0x8090690e\n\tSIOCSIFFLAGS                      = 0x80906910\n\tSIOCSIFGENERIC                    = 0x80906939\n\tSIOCSIFMEDIA                      = 0xc0906935\n\tSIOCSIFMETRIC                     = 0x80906918\n\tSIOCSIFMTU                        = 0x8090697f\n\tSIOCSIFNETMASK                    = 0x80906916\n\tSIOCSIFPHYADDR                    = 0x80406946\n\tSIOCSLIFPHYADDR                   = 0x8118694a\n\tSIOCSLINKSTR                      = 0x801c6988\n\tSIOCSLOWAT                        = 0x80047302\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSVH                           = 0xc0906982\n\tSIOCZIFDATA                       = 0xc0946986\n\tSOCK_CLOEXEC                      = 0x10000000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_FLAGS_MASK                   = 0xf0000000\n\tSOCK_NONBLOCK                     = 0x20000000\n\tSOCK_NOSIGPIPE                    = 0x40000000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_ACCEPTFILTER                   = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NOHEADER                       = 0x100a\n\tSO_NOSIGPIPE                      = 0x800\n\tSO_OOBINLINE                      = 0x100\n\tSO_OVERFLOWED                     = 0x1009\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x100c\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x100b\n\tSO_TIMESTAMP                      = 0x2000\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tSYSCTL_VERSION                    = 0x1000000\n\tSYSCTL_VERS_0                     = 0x0\n\tSYSCTL_VERS_1                     = 0x1000000\n\tSYSCTL_VERS_MASK                  = 0xff000000\n\tS_ARCH1                           = 0x10000\n\tS_ARCH2                           = 0x20000\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IFWHT                           = 0xe000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tTCIFLUSH                          = 0x1\n\tTCIOFLUSH                         = 0x3\n\tTCOFLUSH                          = 0x2\n\tTCP_CONGCTL                       = 0x20\n\tTCP_KEEPCNT                       = 0x6\n\tTCP_KEEPIDLE                      = 0x3\n\tTCP_KEEPINIT                      = 0x7\n\tTCP_KEEPINTVL                     = 0x5\n\tTCP_MAXBURST                      = 0x4\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MD5SIG                        = 0x10\n\tTCP_MINMSS                        = 0xd8\n\tTCP_MSS                           = 0x218\n\tTCP_NODELAY                       = 0x1\n\tTCSAFLUSH                         = 0x2\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCONS                          = 0x80047462\n\tTIOCDCDTIMESTAMP                  = 0x400c7458\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLAG_CDTRCTS                  = 0x10\n\tTIOCFLAG_CLOCAL                   = 0x2\n\tTIOCFLAG_CRTSCTS                  = 0x4\n\tTIOCFLAG_MDMBUF                   = 0x8\n\tTIOCFLAG_SOFTCAR                  = 0x1\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGFLAGS                        = 0x4004745d\n\tTIOCGLINED                        = 0x40207442\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGQSIZE                        = 0x40047481\n\tTIOCGRANTPT                       = 0x20007447\n\tTIOCGSID                          = 0x40047463\n\tTIOCGSIZE                         = 0x40087468\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCPTMGET                        = 0x48087446\n\tTIOCPTSNAME                       = 0x48087448\n\tTIOCRCVFRAME                      = 0x80047445\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x2000745f\n\tTIOCSLINED                        = 0x80207443\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSQSIZE                        = 0x80047480\n\tTIOCSSIZE                         = 0x80087467\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x80047465\n\tTIOCSTI                           = 0x80017472\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\n\tTIOCXMTFRAME                      = 0x80047444\n\tTOSTOP                            = 0x400000\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWALL                              = 0x8\n\tWALLSIG                           = 0x8\n\tWALTSIG                           = 0x4\n\tWCLONE                            = 0x4\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\n\tWNOWAIT                           = 0x10000\n\tWNOZOMBIE                         = 0x20000\n\tWOPTSCHECKED                      = 0x40000\n\tWSTOPPED                          = 0x7f\n\tWUNTRACED                         = 0x2\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x58)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x57)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x52)\n\tEILSEQ          = syscall.Errno(0x55)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x60)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5e)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x5d)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODATA         = syscall.Errno(0x59)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x5f)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x53)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x5a)\n\tENOSTR          = syscall.Errno(0x5b)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x56)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x60)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIME           = syscall.Errno(0x5c)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x20)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large or too small\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol option not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"connection timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIDRM\", \"identifier removed\"},\n\t{83, \"ENOMSG\", \"no message of desired type\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"EILSEQ\", \"illegal byte sequence\"},\n\t{86, \"ENOTSUP\", \"not supported\"},\n\t{87, \"ECANCELED\", \"operation Canceled\"},\n\t{88, \"EBADMSG\", \"bad or Corrupt message\"},\n\t{89, \"ENODATA\", \"no message available\"},\n\t{90, \"ENOSR\", \"no STREAM resources\"},\n\t{91, \"ENOSTR\", \"not a STREAM\"},\n\t{92, \"ETIME\", \"STREAM ioctl timeout\"},\n\t{93, \"ENOATTR\", \"attribute not found\"},\n\t{94, \"EMULTIHOP\", \"multihop attempted\"},\n\t{95, \"ENOLINK\", \"link has been severed\"},\n\t{96, \"ELAST\", \"protocol error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"stopped (signal)\"},\n\t{18, \"SIGTSTP\", \"stopped\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGPWR\", \"power fail/restart\"},\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && netbsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_ARP                            = 0x1c\n\tAF_BLUETOOTH                      = 0x1f\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_HYLINK                         = 0xf\n\tAF_IEEE80211                      = 0x20\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x18\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x23\n\tAF_MPLS                           = 0x21\n\tAF_NATM                           = 0x1b\n\tAF_NS                             = 0x6\n\tAF_OROUTE                         = 0x11\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x22\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tARPHRD_ARCNET                     = 0x7\n\tARPHRD_ETHER                      = 0x1\n\tARPHRD_FRELAY                     = 0xf\n\tARPHRD_IEEE1394                   = 0x18\n\tARPHRD_IEEE802                    = 0x6\n\tARPHRD_STRIP                      = 0x17\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB460800                           = 0x70800\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB921600                           = 0xe1000\n\tB9600                             = 0x2580\n\tBIOCFEEDBACK                      = 0x8004427d\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc0104277\n\tBIOCGETIF                         = 0x4090426b\n\tBIOCGFEEDBACK                     = 0x4004427c\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRTIMEOUT                     = 0x4010427b\n\tBIOCGSEESENT                      = 0x40044278\n\tBIOCGSTATS                        = 0x4080426f\n\tBIOCGSTATSOLD                     = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDLT                          = 0x80044276\n\tBIOCSETF                          = 0x80104267\n\tBIOCSETIF                         = 0x8090426c\n\tBIOCSFEEDBACK                     = 0x8004427d\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRTIMEOUT                     = 0x8010427a\n\tBIOCSSEESENT                      = 0x80044279\n\tBIOCSTCPF                         = 0x80104272\n\tBIOCSUDPF                         = 0x80104273\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x8\n\tBPF_ALIGNMENT32                   = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DFLTBUFSIZE                   = 0x100000\n\tBPF_DIV                           = 0x30\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x1000000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLONE_CSIGNAL                     = 0xff\n\tCLONE_FILES                       = 0x400\n\tCLONE_FS                          = 0x200\n\tCLONE_PID                         = 0x1000\n\tCLONE_PTRACE                      = 0x2000\n\tCLONE_SIGHAND                     = 0x800\n\tCLONE_VFORK                       = 0x4000\n\tCLONE_VM                          = 0x100\n\tCPUSTATES                         = 0x5\n\tCP_IDLE                           = 0x4\n\tCP_INTR                           = 0x3\n\tCP_NICE                           = 0x1\n\tCP_SYS                            = 0x2\n\tCP_USER                           = 0x0\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x10000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0x14\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tCTL_QUERY                         = -0x2\n\tDIOCBSFLUSH                       = 0x20006478\n\tDLT_A429                          = 0xb8\n\tDLT_A653_ICM                      = 0xb9\n\tDLT_AIRONET_HEADER                = 0x78\n\tDLT_AOS                           = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394        = 0x8a\n\tDLT_ARCNET                        = 0x7\n\tDLT_ARCNET_LINUX                  = 0x81\n\tDLT_ATM_CLIP                      = 0x13\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AURORA                        = 0x7e\n\tDLT_AX25                          = 0x3\n\tDLT_AX25_KISS                     = 0xca\n\tDLT_BACNET_MS_TP                  = 0xa5\n\tDLT_BLUETOOTH_HCI_H4              = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR    = 0xc9\n\tDLT_CAN20B                        = 0xbe\n\tDLT_CAN_SOCKETCAN                 = 0xe3\n\tDLT_CHAOS                         = 0x5\n\tDLT_CISCO_IOS                     = 0x76\n\tDLT_C_HDLC                        = 0x68\n\tDLT_C_HDLC_WITH_DIR               = 0xcd\n\tDLT_DECT                          = 0xdd\n\tDLT_DOCSIS                        = 0x8f\n\tDLT_ECONET                        = 0x73\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0x6d\n\tDLT_ERF                           = 0xc5\n\tDLT_ERF_ETH                       = 0xaf\n\tDLT_ERF_POS                       = 0xb0\n\tDLT_FC_2                          = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS        = 0xe1\n\tDLT_FDDI                          = 0xa\n\tDLT_FLEXRAY                       = 0xd2\n\tDLT_FRELAY                        = 0x6b\n\tDLT_FRELAY_WITH_DIR               = 0xce\n\tDLT_GCOM_SERIAL                   = 0xad\n\tDLT_GCOM_T1E1                     = 0xac\n\tDLT_GPF_F                         = 0xab\n\tDLT_GPF_T                         = 0xaa\n\tDLT_GPRS_LLC                      = 0xa9\n\tDLT_GSMTAP_ABIS                   = 0xda\n\tDLT_GSMTAP_UM                     = 0xd9\n\tDLT_HDLC                          = 0x10\n\tDLT_HHDLC                         = 0x79\n\tDLT_HIPPI                         = 0xf\n\tDLT_IBM_SN                        = 0x92\n\tDLT_IBM_SP                        = 0x91\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS          = 0xa3\n\tDLT_IEEE802_15_4                  = 0xc3\n\tDLT_IEEE802_15_4_LINUX            = 0xbf\n\tDLT_IEEE802_15_4_NONASK_PHY       = 0xd7\n\tDLT_IEEE802_16_MAC_CPS            = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO      = 0xc1\n\tDLT_IPMB                          = 0xc7\n\tDLT_IPMB_LINUX                    = 0xd1\n\tDLT_IPNET                         = 0xe2\n\tDLT_IPV4                          = 0xe4\n\tDLT_IPV6                          = 0xe5\n\tDLT_IP_OVER_FC                    = 0x7a\n\tDLT_JUNIPER_ATM1                  = 0x89\n\tDLT_JUNIPER_ATM2                  = 0x87\n\tDLT_JUNIPER_CHDLC                 = 0xb5\n\tDLT_JUNIPER_ES                    = 0x84\n\tDLT_JUNIPER_ETHER                 = 0xb2\n\tDLT_JUNIPER_FRELAY                = 0xb4\n\tDLT_JUNIPER_GGSN                  = 0x85\n\tDLT_JUNIPER_ISM                   = 0xc2\n\tDLT_JUNIPER_MFR                   = 0x86\n\tDLT_JUNIPER_MLFR                  = 0x83\n\tDLT_JUNIPER_MLPPP                 = 0x82\n\tDLT_JUNIPER_MONITOR               = 0xa4\n\tDLT_JUNIPER_PIC_PEER              = 0xae\n\tDLT_JUNIPER_PPP                   = 0xb3\n\tDLT_JUNIPER_PPPOE                 = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM             = 0xa8\n\tDLT_JUNIPER_SERVICES              = 0x88\n\tDLT_JUNIPER_ST                    = 0xc8\n\tDLT_JUNIPER_VP                    = 0xb7\n\tDLT_LAPB_WITH_DIR                 = 0xcf\n\tDLT_LAPD                          = 0xcb\n\tDLT_LIN                           = 0xd4\n\tDLT_LINUX_EVDEV                   = 0xd8\n\tDLT_LINUX_IRDA                    = 0x90\n\tDLT_LINUX_LAPD                    = 0xb1\n\tDLT_LINUX_SLL                     = 0x71\n\tDLT_LOOP                          = 0x6c\n\tDLT_LTALK                         = 0x72\n\tDLT_MFR                           = 0xb6\n\tDLT_MOST                          = 0xd3\n\tDLT_MPLS                          = 0xdb\n\tDLT_MTP2                          = 0x8c\n\tDLT_MTP2_WITH_PHDR                = 0x8b\n\tDLT_MTP3                          = 0x8d\n\tDLT_NULL                          = 0x0\n\tDLT_PCI_EXP                       = 0x7d\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPI                           = 0xc0\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0xe\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_PPPD                      = 0xa6\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PPP_WITH_DIR                  = 0xcc\n\tDLT_PRISM_HEADER                  = 0x77\n\tDLT_PRONET                        = 0x4\n\tDLT_RAIF1                         = 0xc6\n\tDLT_RAW                           = 0xc\n\tDLT_RAWAF_MASK                    = 0x2240000\n\tDLT_RIO                           = 0x7c\n\tDLT_SCCP                          = 0x8e\n\tDLT_SITA                          = 0xc4\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xd\n\tDLT_SUNATM                        = 0x7b\n\tDLT_SYMANTEC_FIREWALL             = 0x63\n\tDLT_TZSP                          = 0x80\n\tDLT_USB                           = 0xba\n\tDLT_USB_LINUX                     = 0xbd\n\tDLT_USB_LINUX_MMAPPED             = 0xdc\n\tDLT_WIHART                        = 0xdf\n\tDLT_X2E_SERIAL                    = 0xd5\n\tDLT_X2E_XORAYA                    = 0xd6\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tDT_WHT                            = 0xe\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEMUL_LINUX                        = 0x1\n\tEMUL_LINUX32                      = 0x5\n\tEMUL_MAXID                        = 0x6\n\tETHERCAP_JUMBO_MTU                = 0x4\n\tETHERCAP_VLAN_HWTAGGING           = 0x2\n\tETHERCAP_VLAN_MTU                 = 0x1\n\tETHERMIN                          = 0x2e\n\tETHERMTU                          = 0x5dc\n\tETHERMTU_JUMBO                    = 0x2328\n\tETHERTYPE_8023                    = 0x4\n\tETHERTYPE_AARP                    = 0x80f3\n\tETHERTYPE_ACCTON                  = 0x8390\n\tETHERTYPE_AEONIC                  = 0x8036\n\tETHERTYPE_ALPHA                   = 0x814a\n\tETHERTYPE_AMBER                   = 0x6008\n\tETHERTYPE_AMOEBA                  = 0x8145\n\tETHERTYPE_APOLLO                  = 0x80f7\n\tETHERTYPE_APOLLODOMAIN            = 0x8019\n\tETHERTYPE_APPLETALK               = 0x809b\n\tETHERTYPE_APPLITEK                = 0x80c7\n\tETHERTYPE_ARGONAUT                = 0x803a\n\tETHERTYPE_ARP                     = 0x806\n\tETHERTYPE_AT                      = 0x809b\n\tETHERTYPE_ATALK                   = 0x809b\n\tETHERTYPE_ATOMIC                  = 0x86df\n\tETHERTYPE_ATT                     = 0x8069\n\tETHERTYPE_ATTSTANFORD             = 0x8008\n\tETHERTYPE_AUTOPHON                = 0x806a\n\tETHERTYPE_AXIS                    = 0x8856\n\tETHERTYPE_BCLOOP                  = 0x9003\n\tETHERTYPE_BOFL                    = 0x8102\n\tETHERTYPE_CABLETRON               = 0x7034\n\tETHERTYPE_CHAOS                   = 0x804\n\tETHERTYPE_COMDESIGN               = 0x806c\n\tETHERTYPE_COMPUGRAPHIC            = 0x806d\n\tETHERTYPE_COUNTERPOINT            = 0x8062\n\tETHERTYPE_CRONUS                  = 0x8004\n\tETHERTYPE_CRONUSVLN               = 0x8003\n\tETHERTYPE_DCA                     = 0x1234\n\tETHERTYPE_DDE                     = 0x807b\n\tETHERTYPE_DEBNI                   = 0xaaaa\n\tETHERTYPE_DECAM                   = 0x8048\n\tETHERTYPE_DECCUST                 = 0x6006\n\tETHERTYPE_DECDIAG                 = 0x6005\n\tETHERTYPE_DECDNS                  = 0x803c\n\tETHERTYPE_DECDTS                  = 0x803e\n\tETHERTYPE_DECEXPER                = 0x6000\n\tETHERTYPE_DECLAST                 = 0x8041\n\tETHERTYPE_DECLTM                  = 0x803f\n\tETHERTYPE_DECMUMPS                = 0x6009\n\tETHERTYPE_DECNETBIOS              = 0x8040\n\tETHERTYPE_DELTACON                = 0x86de\n\tETHERTYPE_DIDDLE                  = 0x4321\n\tETHERTYPE_DLOG1                   = 0x660\n\tETHERTYPE_DLOG2                   = 0x661\n\tETHERTYPE_DN                      = 0x6003\n\tETHERTYPE_DOGFIGHT                = 0x1989\n\tETHERTYPE_DSMD                    = 0x8039\n\tETHERTYPE_ECMA                    = 0x803\n\tETHERTYPE_ENCRYPT                 = 0x803d\n\tETHERTYPE_ES                      = 0x805d\n\tETHERTYPE_EXCELAN                 = 0x8010\n\tETHERTYPE_EXPERDATA               = 0x8049\n\tETHERTYPE_FLIP                    = 0x8146\n\tETHERTYPE_FLOWCONTROL             = 0x8808\n\tETHERTYPE_FRARP                   = 0x808\n\tETHERTYPE_GENDYN                  = 0x8068\n\tETHERTYPE_HAYES                   = 0x8130\n\tETHERTYPE_HIPPI_FP                = 0x8180\n\tETHERTYPE_HITACHI                 = 0x8820\n\tETHERTYPE_HP                      = 0x8005\n\tETHERTYPE_IEEEPUP                 = 0xa00\n\tETHERTYPE_IEEEPUPAT               = 0xa01\n\tETHERTYPE_IMLBL                   = 0x4c42\n\tETHERTYPE_IMLBLDIAG               = 0x424c\n\tETHERTYPE_IP                      = 0x800\n\tETHERTYPE_IPAS                    = 0x876c\n\tETHERTYPE_IPV6                    = 0x86dd\n\tETHERTYPE_IPX                     = 0x8137\n\tETHERTYPE_IPXNEW                  = 0x8037\n\tETHERTYPE_KALPANA                 = 0x8582\n\tETHERTYPE_LANBRIDGE               = 0x8038\n\tETHERTYPE_LANPROBE                = 0x8888\n\tETHERTYPE_LAT                     = 0x6004\n\tETHERTYPE_LBACK                   = 0x9000\n\tETHERTYPE_LITTLE                  = 0x8060\n\tETHERTYPE_LOGICRAFT               = 0x8148\n\tETHERTYPE_LOOPBACK                = 0x9000\n\tETHERTYPE_MATRA                   = 0x807a\n\tETHERTYPE_MAX                     = 0xffff\n\tETHERTYPE_MERIT                   = 0x807c\n\tETHERTYPE_MICP                    = 0x873a\n\tETHERTYPE_MOPDL                   = 0x6001\n\tETHERTYPE_MOPRC                   = 0x6002\n\tETHERTYPE_MOTOROLA                = 0x818d\n\tETHERTYPE_MPLS                    = 0x8847\n\tETHERTYPE_MPLS_MCAST              = 0x8848\n\tETHERTYPE_MUMPS                   = 0x813f\n\tETHERTYPE_NBPCC                   = 0x3c04\n\tETHERTYPE_NBPCLAIM                = 0x3c09\n\tETHERTYPE_NBPCLREQ                = 0x3c05\n\tETHERTYPE_NBPCLRSP                = 0x3c06\n\tETHERTYPE_NBPCREQ                 = 0x3c02\n\tETHERTYPE_NBPCRSP                 = 0x3c03\n\tETHERTYPE_NBPDG                   = 0x3c07\n\tETHERTYPE_NBPDGB                  = 0x3c08\n\tETHERTYPE_NBPDLTE                 = 0x3c0a\n\tETHERTYPE_NBPRAR                  = 0x3c0c\n\tETHERTYPE_NBPRAS                  = 0x3c0b\n\tETHERTYPE_NBPRST                  = 0x3c0d\n\tETHERTYPE_NBPSCD                  = 0x3c01\n\tETHERTYPE_NBPVCD                  = 0x3c00\n\tETHERTYPE_NBS                     = 0x802\n\tETHERTYPE_NCD                     = 0x8149\n\tETHERTYPE_NESTAR                  = 0x8006\n\tETHERTYPE_NETBEUI                 = 0x8191\n\tETHERTYPE_NOVELL                  = 0x8138\n\tETHERTYPE_NS                      = 0x600\n\tETHERTYPE_NSAT                    = 0x601\n\tETHERTYPE_NSCOMPAT                = 0x807\n\tETHERTYPE_NTRAILER                = 0x10\n\tETHERTYPE_OS9                     = 0x7007\n\tETHERTYPE_OS9NET                  = 0x7009\n\tETHERTYPE_PACER                   = 0x80c6\n\tETHERTYPE_PAE                     = 0x888e\n\tETHERTYPE_PCS                     = 0x4242\n\tETHERTYPE_PLANNING                = 0x8044\n\tETHERTYPE_PPP                     = 0x880b\n\tETHERTYPE_PPPOE                   = 0x8864\n\tETHERTYPE_PPPOEDISC               = 0x8863\n\tETHERTYPE_PRIMENTS                = 0x7031\n\tETHERTYPE_PUP                     = 0x200\n\tETHERTYPE_PUPAT                   = 0x200\n\tETHERTYPE_RACAL                   = 0x7030\n\tETHERTYPE_RATIONAL                = 0x8150\n\tETHERTYPE_RAWFR                   = 0x6559\n\tETHERTYPE_RCL                     = 0x1995\n\tETHERTYPE_RDP                     = 0x8739\n\tETHERTYPE_RETIX                   = 0x80f2\n\tETHERTYPE_REVARP                  = 0x8035\n\tETHERTYPE_SCA                     = 0x6007\n\tETHERTYPE_SECTRA                  = 0x86db\n\tETHERTYPE_SECUREDATA              = 0x876d\n\tETHERTYPE_SGITW                   = 0x817e\n\tETHERTYPE_SG_BOUNCE               = 0x8016\n\tETHERTYPE_SG_DIAG                 = 0x8013\n\tETHERTYPE_SG_NETGAMES             = 0x8014\n\tETHERTYPE_SG_RESV                 = 0x8015\n\tETHERTYPE_SIMNET                  = 0x5208\n\tETHERTYPE_SLOWPROTOCOLS           = 0x8809\n\tETHERTYPE_SNA                     = 0x80d5\n\tETHERTYPE_SNMP                    = 0x814c\n\tETHERTYPE_SONIX                   = 0xfaf5\n\tETHERTYPE_SPIDER                  = 0x809f\n\tETHERTYPE_SPRITE                  = 0x500\n\tETHERTYPE_STP                     = 0x8181\n\tETHERTYPE_TALARIS                 = 0x812b\n\tETHERTYPE_TALARISMC               = 0x852b\n\tETHERTYPE_TCPCOMP                 = 0x876b\n\tETHERTYPE_TCPSM                   = 0x9002\n\tETHERTYPE_TEC                     = 0x814f\n\tETHERTYPE_TIGAN                   = 0x802f\n\tETHERTYPE_TRAIL                   = 0x1000\n\tETHERTYPE_TRANSETHER              = 0x6558\n\tETHERTYPE_TYMSHARE                = 0x802e\n\tETHERTYPE_UBBST                   = 0x7005\n\tETHERTYPE_UBDEBUG                 = 0x900\n\tETHERTYPE_UBDIAGLOOP              = 0x7002\n\tETHERTYPE_UBDL                    = 0x7000\n\tETHERTYPE_UBNIU                   = 0x7001\n\tETHERTYPE_UBNMC                   = 0x7003\n\tETHERTYPE_VALID                   = 0x1600\n\tETHERTYPE_VARIAN                  = 0x80dd\n\tETHERTYPE_VAXELN                  = 0x803b\n\tETHERTYPE_VEECO                   = 0x8067\n\tETHERTYPE_VEXP                    = 0x805b\n\tETHERTYPE_VGLAB                   = 0x8131\n\tETHERTYPE_VINES                   = 0xbad\n\tETHERTYPE_VINESECHO               = 0xbaf\n\tETHERTYPE_VINESLOOP               = 0xbae\n\tETHERTYPE_VITAL                   = 0xff00\n\tETHERTYPE_VLAN                    = 0x8100\n\tETHERTYPE_VLTLMAN                 = 0x8080\n\tETHERTYPE_VPROD                   = 0x805c\n\tETHERTYPE_VURESERVED              = 0x8147\n\tETHERTYPE_WATERLOO                = 0x8130\n\tETHERTYPE_WELLFLEET               = 0x8103\n\tETHERTYPE_X25                     = 0x805\n\tETHERTYPE_X75                     = 0x801\n\tETHERTYPE_XNSSM                   = 0x9001\n\tETHERTYPE_XTP                     = 0x817d\n\tETHER_ADDR_LEN                    = 0x6\n\tETHER_CRC_LEN                     = 0x4\n\tETHER_CRC_POLY_BE                 = 0x4c11db6\n\tETHER_CRC_POLY_LE                 = 0xedb88320\n\tETHER_HDR_LEN                     = 0xe\n\tETHER_MAX_LEN                     = 0x5ee\n\tETHER_MAX_LEN_JUMBO               = 0x233a\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_PPPOE_ENCAP_LEN             = 0x8\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = 0x2\n\tEVFILT_PROC                       = 0x4\n\tEVFILT_READ                       = 0x0\n\tEVFILT_SIGNAL                     = 0x5\n\tEVFILT_SYSCOUNT                   = 0x7\n\tEVFILT_TIMER                      = 0x6\n\tEVFILT_VNODE                      = 0x3\n\tEVFILT_WRITE                      = 0x1\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_SYSFLAGS                       = 0xf000\n\tEXTA                              = 0x4b00\n\tEXTATTR_CMD_START                 = 0x1\n\tEXTATTR_CMD_STOP                  = 0x2\n\tEXTATTR_NAMESPACE_SYSTEM          = 0x2\n\tEXTATTR_NAMESPACE_USER            = 0x1\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x100\n\tFLUSHO                            = 0x800000\n\tF_CLOSEM                          = 0xa\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0xc\n\tF_FSCTL                           = -0x80000000\n\tF_FSDIRMASK                       = 0x70000000\n\tF_FSIN                            = 0x10000000\n\tF_FSINOUT                         = 0x30000000\n\tF_FSOUT                           = 0x20000000\n\tF_FSPRIV                          = 0x8000\n\tF_FSVOID                          = 0x40000000\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETNOSIGPIPE                    = 0xd\n\tF_GETOWN                          = 0x5\n\tF_MAXFD                           = 0xb\n\tF_OK                              = 0x0\n\tF_PARAM_MASK                      = 0xfff\n\tF_PARAM_MAX                       = 0xfff\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETNOSIGPIPE                    = 0xe\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFA_ROUTE                         = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x8f52\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_NOTRAILERS                    = 0x20\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf8\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ECONET                        = 0xce\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf2\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INFINIBAND                    = 0xc7\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LINEGROUP                     = 0xd2\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_PON155                        = 0xcf\n\tIFT_PON622                        = 0xd0\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPATM                       = 0xc5\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf1\n\tIFT_Q2931                         = 0xc9\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SIPSIG                        = 0xcc\n\tIFT_SIPTG                         = 0xcb\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_STF                           = 0xd7\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TELINK                        = 0xc8\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VIRTUALTG                     = 0xca\n\tIFT_VOICEDID                      = 0xd5\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEEMFGD                    = 0xd3\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFGDEANA                  = 0xd4\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERCABLE                = 0xc6\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_IPV6_ICMP                 = 0x3a\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x34\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_VRRP                      = 0x70\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPSEC_POLICY                 = 0x1c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_EF                             = 0x8000\n\tIP_ERRORMTU                       = 0x15\n\tIP_HDRINCL                        = 0x2\n\tIP_IPSEC_POLICY                   = 0x16\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0x14\n\tIP_MF                             = 0x2000\n\tIP_MINFRAGSIZE                    = 0x45\n\tIP_MINTTL                         = 0x18\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVIF                         = 0x14\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVTTL                        = 0x17\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x6\n\tMADV_NORMAL                       = 0x0\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SPACEAVAIL                   = 0x5\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ALIGNMENT_16MB                = 0x18000000\n\tMAP_ALIGNMENT_1TB                 = 0x28000000\n\tMAP_ALIGNMENT_256TB               = 0x30000000\n\tMAP_ALIGNMENT_4GB                 = 0x20000000\n\tMAP_ALIGNMENT_64KB                = 0x10000000\n\tMAP_ALIGNMENT_64PB                = 0x38000000\n\tMAP_ALIGNMENT_MASK                = -0x1000000\n\tMAP_ALIGNMENT_SHIFT               = 0x18\n\tMAP_ANON                          = 0x1000\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_HASSEMAPHORE                  = 0x200\n\tMAP_INHERIT                       = 0x80\n\tMAP_INHERIT_COPY                  = 0x1\n\tMAP_INHERIT_DEFAULT               = 0x1\n\tMAP_INHERIT_DONATE_COPY           = 0x3\n\tMAP_INHERIT_NONE                  = 0x2\n\tMAP_INHERIT_SHARE                 = 0x0\n\tMAP_NORESERVE                     = 0x40\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x20\n\tMAP_SHARED                        = 0x1\n\tMAP_STACK                         = 0x2000\n\tMAP_TRYFIXED                      = 0x400\n\tMAP_WIRED                         = 0x800\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_BASIC_FLAGS                   = 0xe782807f\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DISCARD                       = 0x800000\n\tMNT_EXKERB                        = 0x800\n\tMNT_EXNORESPORT                   = 0x8000000\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXPUBLIC                      = 0x10000000\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_EXTATTR                       = 0x1000000\n\tMNT_FORCE                         = 0x80000\n\tMNT_GETARGS                       = 0x400000\n\tMNT_IGNORE                        = 0x100000\n\tMNT_LAZY                          = 0x3\n\tMNT_LOCAL                         = 0x1000\n\tMNT_LOG                           = 0x2000000\n\tMNT_NOATIME                       = 0x4000000\n\tMNT_NOCOREDUMP                    = 0x8000\n\tMNT_NODEV                         = 0x10\n\tMNT_NODEVMTIME                    = 0x40000000\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOWAIT                        = 0x2\n\tMNT_OP_FLAGS                      = 0x4d0000\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELATIME                      = 0x20000\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x80000000\n\tMNT_SYMPERM                       = 0x20000000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UNION                         = 0x20\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0xff90ffff\n\tMNT_WAIT                          = 0x1\n\tMSG_BCAST                         = 0x100\n\tMSG_CMSG_CLOEXEC                  = 0x800\n\tMSG_CONTROLMBUF                   = 0x2000000\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOR                           = 0x8\n\tMSG_IOVUSRSPACE                   = 0x4000000\n\tMSG_LENUSRSPACE                   = 0x8000000\n\tMSG_MCAST                         = 0x200\n\tMSG_NAMEMBUF                      = 0x1000000\n\tMSG_NBIO                          = 0x1000\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_TRUNC                         = 0x10\n\tMSG_USERFLAGS                     = 0xffffff\n\tMSG_WAITALL                       = 0x40\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x2\n\tMS_SYNC                           = 0x4\n\tNAME_MAX                          = 0x1ff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x5\n\tNET_RT_MAXID                      = 0x6\n\tNET_RT_OIFLIST                    = 0x4\n\tNET_RT_OOIFLIST                   = 0x3\n\tNFDBITS                           = 0x20\n\tNOFLSH                            = 0x80000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOFIOGETBMAP                       = 0xc004667a\n\tONLCR                             = 0x2\n\tONLRET                            = 0x40\n\tONOCR                             = 0x20\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tO_ACCMODE                         = 0x3\n\tO_ALT_IO                          = 0x40000\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x400000\n\tO_CREAT                           = 0x200\n\tO_DIRECT                          = 0x80000\n\tO_DIRECTORY                       = 0x200000\n\tO_DSYNC                           = 0x10000\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_NOSIGPIPE                       = 0x1000000\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_RSYNC                           = 0x20000\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPRI_IOFLUSH                       = 0x7c\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tRLIMIT_AS                         = 0xa\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BRD                          = 0x7\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_MAX                          = 0x9\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_TAG                          = 0x8\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BRD                           = 0x80\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_NETMASK                       = 0x4\n\tRTA_TAG                           = 0x100\n\tRTF_ANNOUNCE                      = 0x20000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_CLONED                        = 0x2000\n\tRTF_CLONING                       = 0x100\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_MASK                          = 0x80\n\tRTF_MODIFIED                      = 0x20\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_REJECT                        = 0x8\n\tRTF_SRC                           = 0x10000\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_XRESOLVE                      = 0x200\n\tRTM_ADD                           = 0x1\n\tRTM_CHANGE                        = 0x3\n\tRTM_CHGADDR                       = 0x15\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_GET                           = 0x4\n\tRTM_IEEE80211                     = 0x11\n\tRTM_IFANNOUNCE                    = 0x10\n\tRTM_IFINFO                        = 0x14\n\tRTM_LLINFO_UPD                    = 0x13\n\tRTM_LOCK                          = 0x8\n\tRTM_LOSING                        = 0x5\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_OIFINFO                       = 0xf\n\tRTM_OLDADD                        = 0x9\n\tRTM_OLDDEL                        = 0xa\n\tRTM_OOIFINFO                      = 0xe\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_RTTUNIT                       = 0xf4240\n\tRTM_SETGATE                       = 0x12\n\tRTM_VERSION                       = 0x4\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tSCM_CREDS                         = 0x4\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x8\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80906931\n\tSIOCADDRT                         = 0x8038720a\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCALIFADDR                      = 0x8118691c\n\tSIOCATMARK                        = 0x40047307\n\tSIOCDELMULTI                      = 0x80906932\n\tSIOCDELRT                         = 0x8038720b\n\tSIOCDIFADDR                       = 0x80906919\n\tSIOCDIFPHYADDR                    = 0x80906949\n\tSIOCDLIFADDR                      = 0x8118691e\n\tSIOCGDRVSPEC                      = 0xc028697b\n\tSIOCGETPFSYNC                     = 0xc09069f8\n\tSIOCGETSGCNT                      = 0xc0207534\n\tSIOCGETVIFCNT                     = 0xc0287533\n\tSIOCGHIWAT                        = 0x40047301\n\tSIOCGIFADDR                       = 0xc0906921\n\tSIOCGIFADDRPREF                   = 0xc0986920\n\tSIOCGIFALIAS                      = 0xc040691b\n\tSIOCGIFBRDADDR                    = 0xc0906923\n\tSIOCGIFCAP                        = 0xc0206976\n\tSIOCGIFCONF                       = 0xc0106926\n\tSIOCGIFDATA                       = 0xc0986985\n\tSIOCGIFDLT                        = 0xc0906977\n\tSIOCGIFDSTADDR                    = 0xc0906922\n\tSIOCGIFFLAGS                      = 0xc0906911\n\tSIOCGIFGENERIC                    = 0xc090693a\n\tSIOCGIFMEDIA                      = 0xc0306936\n\tSIOCGIFMETRIC                     = 0xc0906917\n\tSIOCGIFMTU                        = 0xc090697e\n\tSIOCGIFNETMASK                    = 0xc0906925\n\tSIOCGIFPDSTADDR                   = 0xc0906948\n\tSIOCGIFPSRCADDR                   = 0xc0906947\n\tSIOCGLIFADDR                      = 0xc118691d\n\tSIOCGLIFPHYADDR                   = 0xc118694b\n\tSIOCGLINKSTR                      = 0xc0286987\n\tSIOCGLOWAT                        = 0x40047303\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGVH                           = 0xc0906983\n\tSIOCIFCREATE                      = 0x8090697a\n\tSIOCIFDESTROY                     = 0x80906979\n\tSIOCIFGCLONERS                    = 0xc0106978\n\tSIOCINITIFADDR                    = 0xc0706984\n\tSIOCSDRVSPEC                      = 0x8028697b\n\tSIOCSETPFSYNC                     = 0x809069f7\n\tSIOCSHIWAT                        = 0x80047300\n\tSIOCSIFADDR                       = 0x8090690c\n\tSIOCSIFADDRPREF                   = 0x8098691f\n\tSIOCSIFBRDADDR                    = 0x80906913\n\tSIOCSIFCAP                        = 0x80206975\n\tSIOCSIFDSTADDR                    = 0x8090690e\n\tSIOCSIFFLAGS                      = 0x80906910\n\tSIOCSIFGENERIC                    = 0x80906939\n\tSIOCSIFMEDIA                      = 0xc0906935\n\tSIOCSIFMETRIC                     = 0x80906918\n\tSIOCSIFMTU                        = 0x8090697f\n\tSIOCSIFNETMASK                    = 0x80906916\n\tSIOCSIFPHYADDR                    = 0x80406946\n\tSIOCSLIFPHYADDR                   = 0x8118694a\n\tSIOCSLINKSTR                      = 0x80286988\n\tSIOCSLOWAT                        = 0x80047302\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSVH                           = 0xc0906982\n\tSIOCZIFDATA                       = 0xc0986986\n\tSOCK_CLOEXEC                      = 0x10000000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_FLAGS_MASK                   = 0xf0000000\n\tSOCK_NONBLOCK                     = 0x20000000\n\tSOCK_NOSIGPIPE                    = 0x40000000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_ACCEPTFILTER                   = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NOHEADER                       = 0x100a\n\tSO_NOSIGPIPE                      = 0x800\n\tSO_OOBINLINE                      = 0x100\n\tSO_OVERFLOWED                     = 0x1009\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x100c\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x100b\n\tSO_TIMESTAMP                      = 0x2000\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tSYSCTL_VERSION                    = 0x1000000\n\tSYSCTL_VERS_0                     = 0x0\n\tSYSCTL_VERS_1                     = 0x1000000\n\tSYSCTL_VERS_MASK                  = 0xff000000\n\tS_ARCH1                           = 0x10000\n\tS_ARCH2                           = 0x20000\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IFWHT                           = 0xe000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tS_LOGIN_SET                       = 0x1\n\tTCIFLUSH                          = 0x1\n\tTCIOFLUSH                         = 0x3\n\tTCOFLUSH                          = 0x2\n\tTCP_CONGCTL                       = 0x20\n\tTCP_KEEPCNT                       = 0x6\n\tTCP_KEEPIDLE                      = 0x3\n\tTCP_KEEPINIT                      = 0x7\n\tTCP_KEEPINTVL                     = 0x5\n\tTCP_MAXBURST                      = 0x4\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MD5SIG                        = 0x10\n\tTCP_MINMSS                        = 0xd8\n\tTCP_MSS                           = 0x218\n\tTCP_NODELAY                       = 0x1\n\tTCSAFLUSH                         = 0x2\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCONS                          = 0x80047462\n\tTIOCDCDTIMESTAMP                  = 0x40107458\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLAG_CDTRCTS                  = 0x10\n\tTIOCFLAG_CLOCAL                   = 0x2\n\tTIOCFLAG_CRTSCTS                  = 0x4\n\tTIOCFLAG_MDMBUF                   = 0x8\n\tTIOCFLAG_SOFTCAR                  = 0x1\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGFLAGS                        = 0x4004745d\n\tTIOCGLINED                        = 0x40207442\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGQSIZE                        = 0x40047481\n\tTIOCGRANTPT                       = 0x20007447\n\tTIOCGSID                          = 0x40047463\n\tTIOCGSIZE                         = 0x40087468\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCPTMGET                        = 0x40287446\n\tTIOCPTSNAME                       = 0x40287448\n\tTIOCRCVFRAME                      = 0x80087445\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x2000745f\n\tTIOCSLINED                        = 0x80207443\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSQSIZE                        = 0x80047480\n\tTIOCSSIZE                         = 0x80087467\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x80047465\n\tTIOCSTI                           = 0x80017472\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\n\tTIOCXMTFRAME                      = 0x80087444\n\tTOSTOP                            = 0x400000\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWALL                              = 0x8\n\tWALLSIG                           = 0x8\n\tWALTSIG                           = 0x4\n\tWCLONE                            = 0x4\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\n\tWNOWAIT                           = 0x10000\n\tWNOZOMBIE                         = 0x20000\n\tWOPTSCHECKED                      = 0x40000\n\tWSTOPPED                          = 0x7f\n\tWUNTRACED                         = 0x2\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x58)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x57)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x52)\n\tEILSEQ          = syscall.Errno(0x55)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x60)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5e)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x5d)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODATA         = syscall.Errno(0x59)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x5f)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x53)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x5a)\n\tENOSTR          = syscall.Errno(0x5b)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x56)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x60)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIME           = syscall.Errno(0x5c)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x20)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large or too small\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol option not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"connection timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIDRM\", \"identifier removed\"},\n\t{83, \"ENOMSG\", \"no message of desired type\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"EILSEQ\", \"illegal byte sequence\"},\n\t{86, \"ENOTSUP\", \"not supported\"},\n\t{87, \"ECANCELED\", \"operation Canceled\"},\n\t{88, \"EBADMSG\", \"bad or Corrupt message\"},\n\t{89, \"ENODATA\", \"no message available\"},\n\t{90, \"ENOSR\", \"no STREAM resources\"},\n\t{91, \"ENOSTR\", \"not a STREAM\"},\n\t{92, \"ETIME\", \"STREAM ioctl timeout\"},\n\t{93, \"ENOATTR\", \"attribute not found\"},\n\t{94, \"EMULTIHOP\", \"multihop attempted\"},\n\t{95, \"ENOLINK\", \"link has been severed\"},\n\t{96, \"ELAST\", \"protocol error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"stopped (signal)\"},\n\t{18, \"SIGTSTP\", \"stopped\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGPWR\", \"power fail/restart\"},\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go",
    "content": "// mkerrors.sh -m32\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build 386 && openbsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m32 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_BLUETOOTH                      = 0x20\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_ENCAP                          = 0x1c\n\tAF_HYLINK                         = 0xf\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x18\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_KEY                            = 0x1e\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x24\n\tAF_MPLS                           = 0x21\n\tAF_NATM                           = 0x1b\n\tAF_NS                             = 0x6\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x11\n\tAF_SIP                            = 0x1d\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tALTWERASE                         = 0x200\n\tARPHRD_ETHER                      = 0x1\n\tARPHRD_FRELAY                     = 0xf\n\tARPHRD_IEEE1394                   = 0x18\n\tARPHRD_IEEE802                    = 0x6\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB9600                             = 0x2580\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDIRFILT                      = 0x4004427c\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc008427b\n\tBIOCGETIF                         = 0x4020426b\n\tBIOCGFILDROP                      = 0x40044278\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRSIG                         = 0x40044273\n\tBIOCGRTIMEOUT                     = 0x400c426e\n\tBIOCGSTATS                        = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCLOCK                          = 0x20004276\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDIRFILT                      = 0x8004427d\n\tBIOCSDLT                          = 0x8004427a\n\tBIOCSETF                          = 0x80084267\n\tBIOCSETIF                         = 0x8020426c\n\tBIOCSETWF                         = 0x80084277\n\tBIOCSFILDROP                      = 0x80044279\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRSIG                         = 0x80044272\n\tBIOCSRTIMEOUT                     = 0x800c426d\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DIRECTION_IN                  = 0x1\n\tBPF_DIRECTION_OUT                 = 0x2\n\tBPF_DIV                           = 0x30\n\tBPF_FILDROP_CAPTURE               = 0x1\n\tBPF_FILDROP_DROP                  = 0x2\n\tBPF_FILDROP_PASS                  = 0x0\n\tBPF_F_DIR_IN                      = 0x10\n\tBPF_F_DIR_MASK                    = 0x30\n\tBPF_F_DIR_OUT                     = 0x20\n\tBPF_F_DIR_SHIFT                   = 0x4\n\tBPF_F_FLOWID                      = 0x8\n\tBPF_F_PRI_MASK                    = 0x7\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x200000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RND                           = 0xc0\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLOCK_BOOTTIME                    = 0x6\n\tCLOCK_MONOTONIC                   = 0x3\n\tCLOCK_PROCESS_CPUTIME_ID          = 0x2\n\tCLOCK_REALTIME                    = 0x0\n\tCLOCK_THREAD_CPUTIME_ID           = 0x4\n\tCLOCK_UPTIME                      = 0x5\n\tCPUSTATES                         = 0x6\n\tCP_IDLE                           = 0x5\n\tCP_INTR                           = 0x4\n\tCP_NICE                           = 0x1\n\tCP_SPIN                           = 0x3\n\tCP_SYS                            = 0x2\n\tCP_USER                           = 0x0\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x10000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0xff\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tDIOCADDQUEUE                      = 0xc100445d\n\tDIOCADDRULE                       = 0xccc84404\n\tDIOCADDSTATE                      = 0xc1084425\n\tDIOCCHANGERULE                    = 0xccc8441a\n\tDIOCCLRIFFLAG                     = 0xc024445a\n\tDIOCCLRSRCNODES                   = 0x20004455\n\tDIOCCLRSTATES                     = 0xc0d04412\n\tDIOCCLRSTATUS                     = 0xc0244416\n\tDIOCGETLIMIT                      = 0xc0084427\n\tDIOCGETQSTATS                     = 0xc1084460\n\tDIOCGETQUEUE                      = 0xc100445f\n\tDIOCGETQUEUES                     = 0xc100445e\n\tDIOCGETRULE                       = 0xccc84407\n\tDIOCGETRULES                      = 0xccc84406\n\tDIOCGETRULESET                    = 0xc444443b\n\tDIOCGETRULESETS                   = 0xc444443a\n\tDIOCGETSRCNODES                   = 0xc0084454\n\tDIOCGETSTATE                      = 0xc1084413\n\tDIOCGETSTATES                     = 0xc0084419\n\tDIOCGETSTATUS                     = 0xc1e84415\n\tDIOCGETSYNFLWATS                  = 0xc0084463\n\tDIOCGETTIMEOUT                    = 0xc008441e\n\tDIOCIGETIFACES                    = 0xc0244457\n\tDIOCKILLSRCNODES                  = 0xc068445b\n\tDIOCKILLSTATES                    = 0xc0d04429\n\tDIOCNATLOOK                       = 0xc0504417\n\tDIOCOSFPADD                       = 0xc084444f\n\tDIOCOSFPFLUSH                     = 0x2000444e\n\tDIOCOSFPGET                       = 0xc0844450\n\tDIOCRADDADDRS                     = 0xc44c4443\n\tDIOCRADDTABLES                    = 0xc44c443d\n\tDIOCRCLRADDRS                     = 0xc44c4442\n\tDIOCRCLRASTATS                    = 0xc44c4448\n\tDIOCRCLRTABLES                    = 0xc44c443c\n\tDIOCRCLRTSTATS                    = 0xc44c4441\n\tDIOCRDELADDRS                     = 0xc44c4444\n\tDIOCRDELTABLES                    = 0xc44c443e\n\tDIOCRGETADDRS                     = 0xc44c4446\n\tDIOCRGETASTATS                    = 0xc44c4447\n\tDIOCRGETTABLES                    = 0xc44c443f\n\tDIOCRGETTSTATS                    = 0xc44c4440\n\tDIOCRINADEFINE                    = 0xc44c444d\n\tDIOCRSETADDRS                     = 0xc44c4445\n\tDIOCRSETTFLAGS                    = 0xc44c444a\n\tDIOCRTSTADDRS                     = 0xc44c4449\n\tDIOCSETDEBUG                      = 0xc0044418\n\tDIOCSETHOSTID                     = 0xc0044456\n\tDIOCSETIFFLAG                     = 0xc0244459\n\tDIOCSETLIMIT                      = 0xc0084428\n\tDIOCSETREASS                      = 0xc004445c\n\tDIOCSETSTATUSIF                   = 0xc0244414\n\tDIOCSETSYNCOOKIES                 = 0xc0014462\n\tDIOCSETSYNFLWATS                  = 0xc0084461\n\tDIOCSETTIMEOUT                    = 0xc008441d\n\tDIOCSTART                         = 0x20004401\n\tDIOCSTOP                          = 0x20004402\n\tDIOCXBEGIN                        = 0xc00c4451\n\tDIOCXCOMMIT                       = 0xc00c4452\n\tDIOCXROLLBACK                     = 0xc00c4453\n\tDLT_ARCNET                        = 0x7\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AX25                          = 0x3\n\tDLT_CHAOS                         = 0x5\n\tDLT_C_HDLC                        = 0x68\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0xd\n\tDLT_FDDI                          = 0xa\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_LOOP                          = 0xc\n\tDLT_MPLS                          = 0xdb\n\tDLT_NULL                          = 0x0\n\tDLT_OPENFLOW                      = 0x10b\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0x10\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PRONET                        = 0x4\n\tDLT_RAW                           = 0xe\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xf\n\tDLT_USBPCAP                       = 0xf9\n\tDLT_USER0                         = 0x93\n\tDLT_USER1                         = 0x94\n\tDLT_USER10                        = 0x9d\n\tDLT_USER11                        = 0x9e\n\tDLT_USER12                        = 0x9f\n\tDLT_USER13                        = 0xa0\n\tDLT_USER14                        = 0xa1\n\tDLT_USER15                        = 0xa2\n\tDLT_USER2                         = 0x95\n\tDLT_USER3                         = 0x96\n\tDLT_USER4                         = 0x97\n\tDLT_USER5                         = 0x98\n\tDLT_USER6                         = 0x99\n\tDLT_USER7                         = 0x9a\n\tDLT_USER8                         = 0x9b\n\tDLT_USER9                         = 0x9c\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEMT_TAGOVF                        = 0x1\n\tEMUL_ENABLED                      = 0x1\n\tEMUL_NATIVE                       = 0x2\n\tENDRUNDISC                        = 0x9\n\tETH64_8021_RSVD_MASK              = 0xfffffffffff0\n\tETH64_8021_RSVD_PREFIX            = 0x180c2000000\n\tETHERMIN                          = 0x2e\n\tETHERMTU                          = 0x5dc\n\tETHERTYPE_8023                    = 0x4\n\tETHERTYPE_AARP                    = 0x80f3\n\tETHERTYPE_ACCTON                  = 0x8390\n\tETHERTYPE_AEONIC                  = 0x8036\n\tETHERTYPE_ALPHA                   = 0x814a\n\tETHERTYPE_AMBER                   = 0x6008\n\tETHERTYPE_AMOEBA                  = 0x8145\n\tETHERTYPE_AOE                     = 0x88a2\n\tETHERTYPE_APOLLO                  = 0x80f7\n\tETHERTYPE_APOLLODOMAIN            = 0x8019\n\tETHERTYPE_APPLETALK               = 0x809b\n\tETHERTYPE_APPLITEK                = 0x80c7\n\tETHERTYPE_ARGONAUT                = 0x803a\n\tETHERTYPE_ARP                     = 0x806\n\tETHERTYPE_AT                      = 0x809b\n\tETHERTYPE_ATALK                   = 0x809b\n\tETHERTYPE_ATOMIC                  = 0x86df\n\tETHERTYPE_ATT                     = 0x8069\n\tETHERTYPE_ATTSTANFORD             = 0x8008\n\tETHERTYPE_AUTOPHON                = 0x806a\n\tETHERTYPE_AXIS                    = 0x8856\n\tETHERTYPE_BCLOOP                  = 0x9003\n\tETHERTYPE_BOFL                    = 0x8102\n\tETHERTYPE_CABLETRON               = 0x7034\n\tETHERTYPE_CHAOS                   = 0x804\n\tETHERTYPE_COMDESIGN               = 0x806c\n\tETHERTYPE_COMPUGRAPHIC            = 0x806d\n\tETHERTYPE_COUNTERPOINT            = 0x8062\n\tETHERTYPE_CRONUS                  = 0x8004\n\tETHERTYPE_CRONUSVLN               = 0x8003\n\tETHERTYPE_DCA                     = 0x1234\n\tETHERTYPE_DDE                     = 0x807b\n\tETHERTYPE_DEBNI                   = 0xaaaa\n\tETHERTYPE_DECAM                   = 0x8048\n\tETHERTYPE_DECCUST                 = 0x6006\n\tETHERTYPE_DECDIAG                 = 0x6005\n\tETHERTYPE_DECDNS                  = 0x803c\n\tETHERTYPE_DECDTS                  = 0x803e\n\tETHERTYPE_DECEXPER                = 0x6000\n\tETHERTYPE_DECLAST                 = 0x8041\n\tETHERTYPE_DECLTM                  = 0x803f\n\tETHERTYPE_DECMUMPS                = 0x6009\n\tETHERTYPE_DECNETBIOS              = 0x8040\n\tETHERTYPE_DELTACON                = 0x86de\n\tETHERTYPE_DIDDLE                  = 0x4321\n\tETHERTYPE_DLOG1                   = 0x660\n\tETHERTYPE_DLOG2                   = 0x661\n\tETHERTYPE_DN                      = 0x6003\n\tETHERTYPE_DOGFIGHT                = 0x1989\n\tETHERTYPE_DSMD                    = 0x8039\n\tETHERTYPE_EAPOL                   = 0x888e\n\tETHERTYPE_ECMA                    = 0x803\n\tETHERTYPE_ENCRYPT                 = 0x803d\n\tETHERTYPE_ES                      = 0x805d\n\tETHERTYPE_EXCELAN                 = 0x8010\n\tETHERTYPE_EXPERDATA               = 0x8049\n\tETHERTYPE_FLIP                    = 0x8146\n\tETHERTYPE_FLOWCONTROL             = 0x8808\n\tETHERTYPE_FRARP                   = 0x808\n\tETHERTYPE_GENDYN                  = 0x8068\n\tETHERTYPE_HAYES                   = 0x8130\n\tETHERTYPE_HIPPI_FP                = 0x8180\n\tETHERTYPE_HITACHI                 = 0x8820\n\tETHERTYPE_HP                      = 0x8005\n\tETHERTYPE_IEEEPUP                 = 0xa00\n\tETHERTYPE_IEEEPUPAT               = 0xa01\n\tETHERTYPE_IMLBL                   = 0x4c42\n\tETHERTYPE_IMLBLDIAG               = 0x424c\n\tETHERTYPE_IP                      = 0x800\n\tETHERTYPE_IPAS                    = 0x876c\n\tETHERTYPE_IPV6                    = 0x86dd\n\tETHERTYPE_IPX                     = 0x8137\n\tETHERTYPE_IPXNEW                  = 0x8037\n\tETHERTYPE_KALPANA                 = 0x8582\n\tETHERTYPE_LANBRIDGE               = 0x8038\n\tETHERTYPE_LANPROBE                = 0x8888\n\tETHERTYPE_LAT                     = 0x6004\n\tETHERTYPE_LBACK                   = 0x9000\n\tETHERTYPE_LITTLE                  = 0x8060\n\tETHERTYPE_LLDP                    = 0x88cc\n\tETHERTYPE_LOGICRAFT               = 0x8148\n\tETHERTYPE_LOOPBACK                = 0x9000\n\tETHERTYPE_MACSEC                  = 0x88e5\n\tETHERTYPE_MATRA                   = 0x807a\n\tETHERTYPE_MAX                     = 0xffff\n\tETHERTYPE_MERIT                   = 0x807c\n\tETHERTYPE_MICP                    = 0x873a\n\tETHERTYPE_MOPDL                   = 0x6001\n\tETHERTYPE_MOPRC                   = 0x6002\n\tETHERTYPE_MOTOROLA                = 0x818d\n\tETHERTYPE_MPLS                    = 0x8847\n\tETHERTYPE_MPLS_MCAST              = 0x8848\n\tETHERTYPE_MUMPS                   = 0x813f\n\tETHERTYPE_NBPCC                   = 0x3c04\n\tETHERTYPE_NBPCLAIM                = 0x3c09\n\tETHERTYPE_NBPCLREQ                = 0x3c05\n\tETHERTYPE_NBPCLRSP                = 0x3c06\n\tETHERTYPE_NBPCREQ                 = 0x3c02\n\tETHERTYPE_NBPCRSP                 = 0x3c03\n\tETHERTYPE_NBPDG                   = 0x3c07\n\tETHERTYPE_NBPDGB                  = 0x3c08\n\tETHERTYPE_NBPDLTE                 = 0x3c0a\n\tETHERTYPE_NBPRAR                  = 0x3c0c\n\tETHERTYPE_NBPRAS                  = 0x3c0b\n\tETHERTYPE_NBPRST                  = 0x3c0d\n\tETHERTYPE_NBPSCD                  = 0x3c01\n\tETHERTYPE_NBPVCD                  = 0x3c00\n\tETHERTYPE_NBS                     = 0x802\n\tETHERTYPE_NCD                     = 0x8149\n\tETHERTYPE_NESTAR                  = 0x8006\n\tETHERTYPE_NETBEUI                 = 0x8191\n\tETHERTYPE_NHRP                    = 0x2001\n\tETHERTYPE_NOVELL                  = 0x8138\n\tETHERTYPE_NS                      = 0x600\n\tETHERTYPE_NSAT                    = 0x601\n\tETHERTYPE_NSCOMPAT                = 0x807\n\tETHERTYPE_NSH                     = 0x984f\n\tETHERTYPE_NTRAILER                = 0x10\n\tETHERTYPE_OS9                     = 0x7007\n\tETHERTYPE_OS9NET                  = 0x7009\n\tETHERTYPE_PACER                   = 0x80c6\n\tETHERTYPE_PBB                     = 0x88e7\n\tETHERTYPE_PCS                     = 0x4242\n\tETHERTYPE_PLANNING                = 0x8044\n\tETHERTYPE_PPP                     = 0x880b\n\tETHERTYPE_PPPOE                   = 0x8864\n\tETHERTYPE_PPPOEDISC               = 0x8863\n\tETHERTYPE_PRIMENTS                = 0x7031\n\tETHERTYPE_PUP                     = 0x200\n\tETHERTYPE_PUPAT                   = 0x200\n\tETHERTYPE_QINQ                    = 0x88a8\n\tETHERTYPE_RACAL                   = 0x7030\n\tETHERTYPE_RATIONAL                = 0x8150\n\tETHERTYPE_RAWFR                   = 0x6559\n\tETHERTYPE_RCL                     = 0x1995\n\tETHERTYPE_RDP                     = 0x8739\n\tETHERTYPE_RETIX                   = 0x80f2\n\tETHERTYPE_REVARP                  = 0x8035\n\tETHERTYPE_SCA                     = 0x6007\n\tETHERTYPE_SECTRA                  = 0x86db\n\tETHERTYPE_SECUREDATA              = 0x876d\n\tETHERTYPE_SGITW                   = 0x817e\n\tETHERTYPE_SG_BOUNCE               = 0x8016\n\tETHERTYPE_SG_DIAG                 = 0x8013\n\tETHERTYPE_SG_NETGAMES             = 0x8014\n\tETHERTYPE_SG_RESV                 = 0x8015\n\tETHERTYPE_SIMNET                  = 0x5208\n\tETHERTYPE_SLOW                    = 0x8809\n\tETHERTYPE_SNA                     = 0x80d5\n\tETHERTYPE_SNMP                    = 0x814c\n\tETHERTYPE_SONIX                   = 0xfaf5\n\tETHERTYPE_SPIDER                  = 0x809f\n\tETHERTYPE_SPRITE                  = 0x500\n\tETHERTYPE_STP                     = 0x8181\n\tETHERTYPE_TALARIS                 = 0x812b\n\tETHERTYPE_TALARISMC               = 0x852b\n\tETHERTYPE_TCPCOMP                 = 0x876b\n\tETHERTYPE_TCPSM                   = 0x9002\n\tETHERTYPE_TEC                     = 0x814f\n\tETHERTYPE_TIGAN                   = 0x802f\n\tETHERTYPE_TRAIL                   = 0x1000\n\tETHERTYPE_TRANSETHER              = 0x6558\n\tETHERTYPE_TYMSHARE                = 0x802e\n\tETHERTYPE_UBBST                   = 0x7005\n\tETHERTYPE_UBDEBUG                 = 0x900\n\tETHERTYPE_UBDIAGLOOP              = 0x7002\n\tETHERTYPE_UBDL                    = 0x7000\n\tETHERTYPE_UBNIU                   = 0x7001\n\tETHERTYPE_UBNMC                   = 0x7003\n\tETHERTYPE_VALID                   = 0x1600\n\tETHERTYPE_VARIAN                  = 0x80dd\n\tETHERTYPE_VAXELN                  = 0x803b\n\tETHERTYPE_VEECO                   = 0x8067\n\tETHERTYPE_VEXP                    = 0x805b\n\tETHERTYPE_VGLAB                   = 0x8131\n\tETHERTYPE_VINES                   = 0xbad\n\tETHERTYPE_VINESECHO               = 0xbaf\n\tETHERTYPE_VINESLOOP               = 0xbae\n\tETHERTYPE_VITAL                   = 0xff00\n\tETHERTYPE_VLAN                    = 0x8100\n\tETHERTYPE_VLTLMAN                 = 0x8080\n\tETHERTYPE_VPROD                   = 0x805c\n\tETHERTYPE_VURESERVED              = 0x8147\n\tETHERTYPE_WATERLOO                = 0x8130\n\tETHERTYPE_WELLFLEET               = 0x8103\n\tETHERTYPE_X25                     = 0x805\n\tETHERTYPE_X75                     = 0x801\n\tETHERTYPE_XNSSM                   = 0x9001\n\tETHERTYPE_XTP                     = 0x817d\n\tETHER_ADDR_LEN                    = 0x6\n\tETHER_ALIGN                       = 0x2\n\tETHER_CRC_LEN                     = 0x4\n\tETHER_CRC_POLY_BE                 = 0x4c11db6\n\tETHER_CRC_POLY_LE                 = 0xedb88320\n\tETHER_HDR_LEN                     = 0xe\n\tETHER_MAX_DIX_LEN                 = 0x600\n\tETHER_MAX_HARDMTU_LEN             = 0xff9b\n\tETHER_MAX_LEN                     = 0x5ee\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = -0x3\n\tEVFILT_DEVICE                     = -0x8\n\tEVFILT_EXCEPT                     = -0x9\n\tEVFILT_PROC                       = -0x5\n\tEVFILT_READ                       = -0x1\n\tEVFILT_SIGNAL                     = -0x6\n\tEVFILT_SYSCOUNT                   = 0x9\n\tEVFILT_TIMER                      = -0x7\n\tEVFILT_VNODE                      = -0x4\n\tEVFILT_WRITE                      = -0x2\n\tEVL_ENCAPLEN                      = 0x4\n\tEVL_PRIO_BITS                     = 0xd\n\tEVL_PRIO_MAX                      = 0x7\n\tEVL_VLID_MASK                     = 0xfff\n\tEVL_VLID_MAX                      = 0xffe\n\tEVL_VLID_MIN                      = 0x1\n\tEVL_VLID_NULL                     = 0x0\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_DISPATCH                       = 0x80\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_RECEIPT                        = 0x40\n\tEV_SYSFLAGS                       = 0xf800\n\tEXTA                              = 0x4b00\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x400\n\tFLUSHO                            = 0x800000\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0xa\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETOWN                          = 0x5\n\tF_ISATTY                          = 0xb\n\tF_OK                              = 0x0\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x8e52\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_STATICARP                     = 0x20\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BLUETOOTH                     = 0xf8\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf7\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DUMMY                         = 0xf1\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ECONET                        = 0xce\n\tIFT_ENC                           = 0xf4\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf3\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INFINIBAND                    = 0xc7\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LINEGROUP                     = 0xd2\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MBIM                          = 0xfa\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFLOW                         = 0xf9\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_PON155                        = 0xcf\n\tIFT_PON622                        = 0xd0\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPATM                       = 0xc5\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf2\n\tIFT_Q2931                         = 0xc9\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SIPSIG                        = 0xcc\n\tIFT_SIPTG                         = 0xcb\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TELINK                        = 0xc8\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VIRTUALTG                     = 0xca\n\tIFT_VOICEDID                      = 0xd5\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEEMFGD                    = 0xd3\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFGDEANA                  = 0xd4\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERCABLE                = 0xc6\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_WIREGUARD                     = 0xfb\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIN_RFC3021_HOST                   = 0x1\n\tIN_RFC3021_NET                    = 0xfffffffe\n\tIN_RFC3021_NSHIFT                 = 0x1f\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_DIVERT                    = 0x102\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x103\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_MPLS                      = 0x89\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_SCTP                      = 0x84\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_UDPLITE                   = 0x88\n\tIPV6_AUTH_LEVEL                   = 0x35\n\tIPV6_AUTOFLOWLABEL                = 0x3b\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_ESP_NETWORK_LEVEL            = 0x37\n\tIPV6_ESP_TRANS_LEVEL              = 0x36\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPCOMP_LEVEL                 = 0x3c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MINHOPCOUNT                  = 0x41\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_OPTIONS                      = 0x1\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PIPEX                        = 0x3f\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVDSTPORT                  = 0x40\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTABLE                       = 0x1021\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_AUTH_LEVEL                     = 0x14\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_ESP_NETWORK_LEVEL              = 0x16\n\tIP_ESP_TRANS_LEVEL                = 0x15\n\tIP_HDRINCL                        = 0x2\n\tIP_IPCOMP_LEVEL                   = 0x1d\n\tIP_IPDEFTTL                       = 0x25\n\tIP_IPSECFLOWINFO                  = 0x24\n\tIP_IPSEC_LOCAL_AUTH               = 0x1b\n\tIP_IPSEC_LOCAL_CRED               = 0x19\n\tIP_IPSEC_LOCAL_ID                 = 0x17\n\tIP_IPSEC_REMOTE_AUTH              = 0x1c\n\tIP_IPSEC_REMOTE_CRED              = 0x1a\n\tIP_IPSEC_REMOTE_ID                = 0x18\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0xfff\n\tIP_MF                             = 0x2000\n\tIP_MINTTL                         = 0x20\n\tIP_MIN_MEMBERSHIPS                = 0xf\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PIPEX                          = 0x22\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVDSTPORT                    = 0x21\n\tIP_RECVIF                         = 0x1e\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVRTABLE                     = 0x23\n\tIP_RECVTTL                        = 0x1f\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_RTABLE                         = 0x1021\n\tIP_SENDSRCADDR                    = 0x7\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tITIMER_PROF                       = 0x2\n\tITIMER_REAL                       = 0x0\n\tITIMER_VIRTUAL                    = 0x1\n\tIUCLC                             = 0x1000\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLCNT_OVERLOAD_FLUSH               = 0x6\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x6\n\tMADV_NORMAL                       = 0x0\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SPACEAVAIL                   = 0x5\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ANON                          = 0x1000\n\tMAP_ANONYMOUS                     = 0x1000\n\tMAP_CONCEAL                       = 0x8000\n\tMAP_COPY                          = 0x2\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_FLAGMASK                      = 0xfff7\n\tMAP_HASSEMAPHORE                  = 0x0\n\tMAP_INHERIT                       = 0x0\n\tMAP_INHERIT_COPY                  = 0x1\n\tMAP_INHERIT_NONE                  = 0x2\n\tMAP_INHERIT_SHARE                 = 0x0\n\tMAP_INHERIT_ZERO                  = 0x3\n\tMAP_NOEXTEND                      = 0x0\n\tMAP_NORESERVE                     = 0x0\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x0\n\tMAP_SHARED                        = 0x1\n\tMAP_STACK                         = 0x4000\n\tMAP_TRYFIXED                      = 0x0\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DELEXPORT                     = 0x20000\n\tMNT_DOOMED                        = 0x8000000\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_FORCE                         = 0x80000\n\tMNT_LAZY                          = 0x3\n\tMNT_LOCAL                         = 0x1000\n\tMNT_NOATIME                       = 0x8000\n\tMNT_NODEV                         = 0x10\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOPERM                        = 0x20\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOWAIT                        = 0x2\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x4000000\n\tMNT_STALLED                       = 0x100000\n\tMNT_SWAPPABLE                     = 0x200000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0x400ffff\n\tMNT_WAIT                          = 0x1\n\tMNT_WANTRDWR                      = 0x2000000\n\tMNT_WXALLOWED                     = 0x800\n\tMOUNT_AFS                         = \"afs\"\n\tMOUNT_CD9660                      = \"cd9660\"\n\tMOUNT_EXT2FS                      = \"ext2fs\"\n\tMOUNT_FFS                         = \"ffs\"\n\tMOUNT_FUSEFS                      = \"fuse\"\n\tMOUNT_MFS                         = \"mfs\"\n\tMOUNT_MSDOS                       = \"msdos\"\n\tMOUNT_NCPFS                       = \"ncpfs\"\n\tMOUNT_NFS                         = \"nfs\"\n\tMOUNT_NTFS                        = \"ntfs\"\n\tMOUNT_TMPFS                       = \"tmpfs\"\n\tMOUNT_UDF                         = \"udf\"\n\tMOUNT_UFS                         = \"ffs\"\n\tMSG_BCAST                         = 0x100\n\tMSG_CMSG_CLOEXEC                  = 0x800\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOR                           = 0x8\n\tMSG_MCAST                         = 0x200\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_TRUNC                         = 0x10\n\tMSG_WAITALL                       = 0x40\n\tMSG_WAITFORONE                    = 0x1000\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x4\n\tMS_SYNC                           = 0x2\n\tNAME_MAX                          = 0xff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x3\n\tNET_RT_IFNAMES                    = 0x6\n\tNET_RT_MAXID                      = 0x8\n\tNET_RT_SOURCE                     = 0x7\n\tNET_RT_STATS                      = 0x4\n\tNET_RT_TABLE                      = 0x5\n\tNFDBITS                           = 0x20\n\tNOFLSH                            = 0x80000000\n\tNOKERNINFO                        = 0x2000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHANGE                       = 0x1\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EOF                          = 0x2\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_OOB                          = 0x4\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_TRUNCATE                     = 0x80\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOLCUC                             = 0x20\n\tONLCR                             = 0x2\n\tONLRET                            = 0x80\n\tONOCR                             = 0x40\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tOXTABS                            = 0x4\n\tO_ACCMODE                         = 0x3\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x10000\n\tO_CREAT                           = 0x200\n\tO_DIRECTORY                       = 0x20000\n\tO_DSYNC                           = 0x80\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_RSYNC                           = 0x80\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPF_FLUSH                          = 0x1\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BFD                          = 0xb\n\tRTAX_BRD                          = 0x7\n\tRTAX_DNS                          = 0xc\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_LABEL                        = 0xa\n\tRTAX_MAX                          = 0xf\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_SEARCH                       = 0xe\n\tRTAX_SRC                          = 0x8\n\tRTAX_SRCMASK                      = 0x9\n\tRTAX_STATIC                       = 0xd\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BFD                           = 0x800\n\tRTA_BRD                           = 0x80\n\tRTA_DNS                           = 0x1000\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_LABEL                         = 0x400\n\tRTA_NETMASK                       = 0x4\n\tRTA_SEARCH                        = 0x4000\n\tRTA_SRC                           = 0x100\n\tRTA_SRCMASK                       = 0x200\n\tRTA_STATIC                        = 0x2000\n\tRTF_ANNOUNCE                      = 0x4000\n\tRTF_BFD                           = 0x1000000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_BROADCAST                     = 0x400000\n\tRTF_CACHED                        = 0x20000\n\tRTF_CLONED                        = 0x10000\n\tRTF_CLONING                       = 0x100\n\tRTF_CONNECTED                     = 0x800000\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_FMASK                         = 0x110fc08\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_LOCAL                         = 0x200000\n\tRTF_MODIFIED                      = 0x20\n\tRTF_MPATH                         = 0x40000\n\tRTF_MPLS                          = 0x100000\n\tRTF_MULTICAST                     = 0x200\n\tRTF_PERMANENT_ARP                 = 0x2000\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_PROTO3                        = 0x2000\n\tRTF_REJECT                        = 0x8\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_USETRAILERS                   = 0x8000\n\tRTM_80211INFO                     = 0x15\n\tRTM_ADD                           = 0x1\n\tRTM_BFD                           = 0x12\n\tRTM_CHANGE                        = 0x3\n\tRTM_CHGADDRATTR                   = 0x14\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_DESYNC                        = 0x10\n\tRTM_GET                           = 0x4\n\tRTM_IFANNOUNCE                    = 0xf\n\tRTM_IFINFO                        = 0xe\n\tRTM_INVALIDATE                    = 0x11\n\tRTM_LOSING                        = 0x5\n\tRTM_MAXSIZE                       = 0x800\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_PROPOSAL                      = 0x13\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_SOURCE                        = 0x16\n\tRTM_VERSION                       = 0x5\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRT_TABLEID_BITS                   = 0x8\n\tRT_TABLEID_MASK                   = 0xff\n\tRT_TABLEID_MAX                    = 0xff\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tRUSAGE_THREAD                     = 0x1\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x4\n\tSEEK_CUR                          = 0x1\n\tSEEK_END                          = 0x2\n\tSEEK_SET                          = 0x0\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80206931\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCAIFGROUP                      = 0x80246987\n\tSIOCATMARK                        = 0x40047307\n\tSIOCBRDGADD                       = 0x805c693c\n\tSIOCBRDGADDL                      = 0x805c6949\n\tSIOCBRDGADDS                      = 0x805c6941\n\tSIOCBRDGARL                       = 0x808c694d\n\tSIOCBRDGDADDR                     = 0x81286947\n\tSIOCBRDGDEL                       = 0x805c693d\n\tSIOCBRDGDELS                      = 0x805c6942\n\tSIOCBRDGFLUSH                     = 0x805c6948\n\tSIOCBRDGFRL                       = 0x808c694e\n\tSIOCBRDGGCACHE                    = 0xc0146941\n\tSIOCBRDGGFD                       = 0xc0146952\n\tSIOCBRDGGHT                       = 0xc0146951\n\tSIOCBRDGGIFFLGS                   = 0xc05c693e\n\tSIOCBRDGGMA                       = 0xc0146953\n\tSIOCBRDGGPARAM                    = 0xc03c6958\n\tSIOCBRDGGPRI                      = 0xc0146950\n\tSIOCBRDGGRL                       = 0xc028694f\n\tSIOCBRDGGTO                       = 0xc0146946\n\tSIOCBRDGIFS                       = 0xc05c6942\n\tSIOCBRDGRTS                       = 0xc0186943\n\tSIOCBRDGSADDR                     = 0xc1286944\n\tSIOCBRDGSCACHE                    = 0x80146940\n\tSIOCBRDGSFD                       = 0x80146952\n\tSIOCBRDGSHT                       = 0x80146951\n\tSIOCBRDGSIFCOST                   = 0x805c6955\n\tSIOCBRDGSIFFLGS                   = 0x805c693f\n\tSIOCBRDGSIFPRIO                   = 0x805c6954\n\tSIOCBRDGSIFPROT                   = 0x805c694a\n\tSIOCBRDGSMA                       = 0x80146953\n\tSIOCBRDGSPRI                      = 0x80146950\n\tSIOCBRDGSPROTO                    = 0x8014695a\n\tSIOCBRDGSTO                       = 0x80146945\n\tSIOCBRDGSTXHC                     = 0x80146959\n\tSIOCDELLABEL                      = 0x80206997\n\tSIOCDELMULTI                      = 0x80206932\n\tSIOCDIFADDR                       = 0x80206919\n\tSIOCDIFGROUP                      = 0x80246989\n\tSIOCDIFPARENT                     = 0x802069b4\n\tSIOCDIFPHYADDR                    = 0x80206949\n\tSIOCDPWE3NEIGHBOR                 = 0x802069de\n\tSIOCDVNETID                       = 0x802069af\n\tSIOCGETKALIVE                     = 0xc01869a4\n\tSIOCGETLABEL                      = 0x8020699a\n\tSIOCGETMPWCFG                     = 0xc02069ae\n\tSIOCGETPFLOW                      = 0xc02069fe\n\tSIOCGETPFSYNC                     = 0xc02069f8\n\tSIOCGETSGCNT                      = 0xc0147534\n\tSIOCGETVIFCNT                     = 0xc0147533\n\tSIOCGETVLAN                       = 0xc0206990\n\tSIOCGIFADDR                       = 0xc0206921\n\tSIOCGIFBRDADDR                    = 0xc0206923\n\tSIOCGIFCONF                       = 0xc0086924\n\tSIOCGIFDATA                       = 0xc020691b\n\tSIOCGIFDESCR                      = 0xc0206981\n\tSIOCGIFDSTADDR                    = 0xc0206922\n\tSIOCGIFFLAGS                      = 0xc0206911\n\tSIOCGIFGATTR                      = 0xc024698b\n\tSIOCGIFGENERIC                    = 0xc020693a\n\tSIOCGIFGLIST                      = 0xc024698d\n\tSIOCGIFGMEMB                      = 0xc024698a\n\tSIOCGIFGROUP                      = 0xc0246988\n\tSIOCGIFHARDMTU                    = 0xc02069a5\n\tSIOCGIFLLPRIO                     = 0xc02069b6\n\tSIOCGIFMEDIA                      = 0xc0386938\n\tSIOCGIFMETRIC                     = 0xc0206917\n\tSIOCGIFMTU                        = 0xc020697e\n\tSIOCGIFNETMASK                    = 0xc0206925\n\tSIOCGIFPAIR                       = 0xc02069b1\n\tSIOCGIFPARENT                     = 0xc02069b3\n\tSIOCGIFPRIORITY                   = 0xc020699c\n\tSIOCGIFRDOMAIN                    = 0xc02069a0\n\tSIOCGIFRTLABEL                    = 0xc0206983\n\tSIOCGIFRXR                        = 0x802069aa\n\tSIOCGIFSFFPAGE                    = 0xc1126939\n\tSIOCGIFXFLAGS                     = 0xc020699e\n\tSIOCGLIFPHYADDR                   = 0xc218694b\n\tSIOCGLIFPHYDF                     = 0xc02069c2\n\tSIOCGLIFPHYECN                    = 0xc02069c8\n\tSIOCGLIFPHYRTABLE                 = 0xc02069a2\n\tSIOCGLIFPHYTTL                    = 0xc02069a9\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGPWE3                         = 0xc0206998\n\tSIOCGPWE3CTRLWORD                 = 0xc02069dc\n\tSIOCGPWE3FAT                      = 0xc02069dd\n\tSIOCGPWE3NEIGHBOR                 = 0xc21869de\n\tSIOCGRXHPRIO                      = 0xc02069db\n\tSIOCGSPPPPARAMS                   = 0xc0206994\n\tSIOCGTXHPRIO                      = 0xc02069c6\n\tSIOCGUMBINFO                      = 0xc02069be\n\tSIOCGUMBPARAM                     = 0xc02069c0\n\tSIOCGVH                           = 0xc02069f6\n\tSIOCGVNETFLOWID                   = 0xc02069c4\n\tSIOCGVNETID                       = 0xc02069a7\n\tSIOCIFAFATTACH                    = 0x801169ab\n\tSIOCIFAFDETACH                    = 0x801169ac\n\tSIOCIFCREATE                      = 0x8020697a\n\tSIOCIFDESTROY                     = 0x80206979\n\tSIOCIFGCLONERS                    = 0xc00c6978\n\tSIOCSETKALIVE                     = 0x801869a3\n\tSIOCSETLABEL                      = 0x80206999\n\tSIOCSETMPWCFG                     = 0x802069ad\n\tSIOCSETPFLOW                      = 0x802069fd\n\tSIOCSETPFSYNC                     = 0x802069f7\n\tSIOCSETVLAN                       = 0x8020698f\n\tSIOCSIFADDR                       = 0x8020690c\n\tSIOCSIFBRDADDR                    = 0x80206913\n\tSIOCSIFDESCR                      = 0x80206980\n\tSIOCSIFDSTADDR                    = 0x8020690e\n\tSIOCSIFFLAGS                      = 0x80206910\n\tSIOCSIFGATTR                      = 0x8024698c\n\tSIOCSIFGENERIC                    = 0x80206939\n\tSIOCSIFLLADDR                     = 0x8020691f\n\tSIOCSIFLLPRIO                     = 0x802069b5\n\tSIOCSIFMEDIA                      = 0xc0206937\n\tSIOCSIFMETRIC                     = 0x80206918\n\tSIOCSIFMTU                        = 0x8020697f\n\tSIOCSIFNETMASK                    = 0x80206916\n\tSIOCSIFPAIR                       = 0x802069b0\n\tSIOCSIFPARENT                     = 0x802069b2\n\tSIOCSIFPRIORITY                   = 0x8020699b\n\tSIOCSIFRDOMAIN                    = 0x8020699f\n\tSIOCSIFRTLABEL                    = 0x80206982\n\tSIOCSIFXFLAGS                     = 0x8020699d\n\tSIOCSLIFPHYADDR                   = 0x8218694a\n\tSIOCSLIFPHYDF                     = 0x802069c1\n\tSIOCSLIFPHYECN                    = 0x802069c7\n\tSIOCSLIFPHYRTABLE                 = 0x802069a1\n\tSIOCSLIFPHYTTL                    = 0x802069a8\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSPWE3CTRLWORD                 = 0x802069dc\n\tSIOCSPWE3FAT                      = 0x802069dd\n\tSIOCSPWE3NEIGHBOR                 = 0x821869de\n\tSIOCSRXHPRIO                      = 0x802069db\n\tSIOCSSPPPPARAMS                   = 0x80206993\n\tSIOCSTXHPRIO                      = 0x802069c5\n\tSIOCSUMBPARAM                     = 0x802069bf\n\tSIOCSVH                           = 0xc02069f5\n\tSIOCSVNETFLOWID                   = 0x802069c3\n\tSIOCSVNETID                       = 0x802069a6\n\tSOCK_CLOEXEC                      = 0x8000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_DNS                          = 0x1000\n\tSOCK_NONBLOCK                     = 0x4000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_BINDANY                        = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DOMAIN                         = 0x1024\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NETPROC                        = 0x1020\n\tSO_OOBINLINE                      = 0x100\n\tSO_PEERCRED                       = 0x1022\n\tSO_PROTOCOL                       = 0x1025\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x1006\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_RTABLE                         = 0x1021\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x1005\n\tSO_SPLICE                         = 0x1023\n\tSO_TIMESTAMP                      = 0x800\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tSO_ZEROIZE                        = 0x2000\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tTCIFLUSH                          = 0x1\n\tTCIOFF                            = 0x3\n\tTCIOFLUSH                         = 0x3\n\tTCION                             = 0x4\n\tTCOFLUSH                          = 0x2\n\tTCOOFF                            = 0x1\n\tTCOON                             = 0x2\n\tTCPOPT_EOL                        = 0x0\n\tTCPOPT_MAXSEG                     = 0x2\n\tTCPOPT_NOP                        = 0x1\n\tTCPOPT_SACK                       = 0x5\n\tTCPOPT_SACK_HDR                   = 0x1010500\n\tTCPOPT_SACK_PERMITTED             = 0x4\n\tTCPOPT_SACK_PERMIT_HDR            = 0x1010402\n\tTCPOPT_SIGNATURE                  = 0x13\n\tTCPOPT_TIMESTAMP                  = 0x8\n\tTCPOPT_TSTAMP_HDR                 = 0x101080a\n\tTCPOPT_WINDOW                     = 0x3\n\tTCP_INFO                          = 0x9\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_SACK                      = 0x3\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MD5SIG                        = 0x4\n\tTCP_MSS                           = 0x200\n\tTCP_NODELAY                       = 0x1\n\tTCP_NOPUSH                        = 0x10\n\tTCP_SACKHOLE_LIMIT                = 0x80\n\tTCP_SACK_ENABLE                   = 0x8\n\tTCSAFLUSH                         = 0x2\n\tTIMER_ABSTIME                     = 0x1\n\tTIMER_RELTIME                     = 0x0\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCHKVERAUTH                    = 0x2000741e\n\tTIOCCLRVERAUTH                    = 0x2000741d\n\tTIOCCONS                          = 0x80047462\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLAG_CLOCAL                   = 0x2\n\tTIOCFLAG_CRTSCTS                  = 0x4\n\tTIOCFLAG_MDMBUF                   = 0x8\n\tTIOCFLAG_PPS                      = 0x10\n\tTIOCFLAG_SOFTCAR                  = 0x1\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGFLAGS                        = 0x4004745d\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGSID                          = 0x40047463\n\tTIOCGTSTAMP                       = 0x400c745b\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMODG                          = 0x4004746a\n\tTIOCMODS                          = 0x8004746d\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSETVERAUTH                    = 0x8004741c\n\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x8004745f\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x20007465\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSTSTAMP                       = 0x8008745a\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\n\tTIOCUCNTL_CBRK                    = 0x7a\n\tTIOCUCNTL_SBRK                    = 0x7b\n\tTOSTOP                            = 0x400000\n\tUTIME_NOW                         = -0x2\n\tUTIME_OMIT                        = -0x1\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVM_ANONMIN                        = 0x7\n\tVM_LOADAVG                        = 0x2\n\tVM_MALLOC_CONF                    = 0xc\n\tVM_MAXID                          = 0xd\n\tVM_MAXSLP                         = 0xa\n\tVM_METER                          = 0x1\n\tVM_NKMEMPAGES                     = 0x6\n\tVM_PSSTRINGS                      = 0x3\n\tVM_SWAPENCRYPT                    = 0x5\n\tVM_USPACE                         = 0xb\n\tVM_UVMEXP                         = 0x4\n\tVM_VNODEMIN                       = 0x9\n\tVM_VTEXTMIN                       = 0x8\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWALTSIG                           = 0x4\n\tWCONTINUED                        = 0x8\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\n\tWUNTRACED                         = 0x2\n\tXCASE                             = 0x1000000\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x5c)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x58)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x59)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEIPSEC          = syscall.Errno(0x52)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x5f)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMEDIUMTYPE     = syscall.Errno(0x56)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x53)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOMEDIUM       = syscall.Errno(0x55)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x5a)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5d)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x5b)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x57)\n\tEOWNERDEAD      = syscall.Errno(0x5e)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5f)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disk quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC program not available\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIPSEC\", \"IPsec processing failure\"},\n\t{83, \"ENOATTR\", \"attribute not found\"},\n\t{84, \"EILSEQ\", \"illegal byte sequence\"},\n\t{85, \"ENOMEDIUM\", \"no medium found\"},\n\t{86, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{87, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{88, \"ECANCELED\", \"operation canceled\"},\n\t{89, \"EIDRM\", \"identifier removed\"},\n\t{90, \"ENOMSG\", \"no message of desired type\"},\n\t{91, \"ENOTSUP\", \"not supported\"},\n\t{92, \"EBADMSG\", \"bad message\"},\n\t{93, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{94, \"EOWNERDEAD\", \"previous owner died\"},\n\t{95, \"ELAST\", \"protocol error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"thread AST\"},\n\t{28672, \"SIGSTKSZ\", \"unknown signal\"},\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && openbsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_BLUETOOTH                      = 0x20\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_ENCAP                          = 0x1c\n\tAF_HYLINK                         = 0xf\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x18\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_KEY                            = 0x1e\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x24\n\tAF_MPLS                           = 0x21\n\tAF_NATM                           = 0x1b\n\tAF_NS                             = 0x6\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x11\n\tAF_SIP                            = 0x1d\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tALTWERASE                         = 0x200\n\tARPHRD_ETHER                      = 0x1\n\tARPHRD_FRELAY                     = 0xf\n\tARPHRD_IEEE1394                   = 0x18\n\tARPHRD_IEEE802                    = 0x6\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB9600                             = 0x2580\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDIRFILT                      = 0x4004427c\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc010427b\n\tBIOCGETIF                         = 0x4020426b\n\tBIOCGFILDROP                      = 0x40044278\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRSIG                         = 0x40044273\n\tBIOCGRTIMEOUT                     = 0x4010426e\n\tBIOCGSTATS                        = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCLOCK                          = 0x20004276\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDIRFILT                      = 0x8004427d\n\tBIOCSDLT                          = 0x8004427a\n\tBIOCSETF                          = 0x80104267\n\tBIOCSETIF                         = 0x8020426c\n\tBIOCSETWF                         = 0x80104277\n\tBIOCSFILDROP                      = 0x80044279\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRSIG                         = 0x80044272\n\tBIOCSRTIMEOUT                     = 0x8010426d\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DIRECTION_IN                  = 0x1\n\tBPF_DIRECTION_OUT                 = 0x2\n\tBPF_DIV                           = 0x30\n\tBPF_FILDROP_CAPTURE               = 0x1\n\tBPF_FILDROP_DROP                  = 0x2\n\tBPF_FILDROP_PASS                  = 0x0\n\tBPF_F_DIR_IN                      = 0x10\n\tBPF_F_DIR_MASK                    = 0x30\n\tBPF_F_DIR_OUT                     = 0x20\n\tBPF_F_DIR_SHIFT                   = 0x4\n\tBPF_F_FLOWID                      = 0x8\n\tBPF_F_PRI_MASK                    = 0x7\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x200000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RND                           = 0xc0\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLOCK_BOOTTIME                    = 0x6\n\tCLOCK_MONOTONIC                   = 0x3\n\tCLOCK_PROCESS_CPUTIME_ID          = 0x2\n\tCLOCK_REALTIME                    = 0x0\n\tCLOCK_THREAD_CPUTIME_ID           = 0x4\n\tCLOCK_UPTIME                      = 0x5\n\tCPUSTATES                         = 0x6\n\tCP_IDLE                           = 0x5\n\tCP_INTR                           = 0x4\n\tCP_NICE                           = 0x1\n\tCP_SPIN                           = 0x3\n\tCP_SYS                            = 0x2\n\tCP_USER                           = 0x0\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x10000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0xff\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tDIOCADDQUEUE                      = 0xc110445d\n\tDIOCADDRULE                       = 0xcd604404\n\tDIOCADDSTATE                      = 0xc1084425\n\tDIOCCHANGERULE                    = 0xcd60441a\n\tDIOCCLRIFFLAG                     = 0xc028445a\n\tDIOCCLRSRCNODES                   = 0x20004455\n\tDIOCCLRSTATES                     = 0xc0e04412\n\tDIOCCLRSTATUS                     = 0xc0284416\n\tDIOCGETLIMIT                      = 0xc0084427\n\tDIOCGETQSTATS                     = 0xc1204460\n\tDIOCGETQUEUE                      = 0xc110445f\n\tDIOCGETQUEUES                     = 0xc110445e\n\tDIOCGETRULE                       = 0xcd604407\n\tDIOCGETRULES                      = 0xcd604406\n\tDIOCGETRULESET                    = 0xc444443b\n\tDIOCGETRULESETS                   = 0xc444443a\n\tDIOCGETSRCNODES                   = 0xc0104454\n\tDIOCGETSTATE                      = 0xc1084413\n\tDIOCGETSTATES                     = 0xc0104419\n\tDIOCGETSTATUS                     = 0xc1e84415\n\tDIOCGETSYNFLWATS                  = 0xc0084463\n\tDIOCGETTIMEOUT                    = 0xc008441e\n\tDIOCIGETIFACES                    = 0xc0284457\n\tDIOCKILLSRCNODES                  = 0xc080445b\n\tDIOCKILLSTATES                    = 0xc0e04429\n\tDIOCNATLOOK                       = 0xc0504417\n\tDIOCOSFPADD                       = 0xc088444f\n\tDIOCOSFPFLUSH                     = 0x2000444e\n\tDIOCOSFPGET                       = 0xc0884450\n\tDIOCRADDADDRS                     = 0xc4504443\n\tDIOCRADDTABLES                    = 0xc450443d\n\tDIOCRCLRADDRS                     = 0xc4504442\n\tDIOCRCLRASTATS                    = 0xc4504448\n\tDIOCRCLRTABLES                    = 0xc450443c\n\tDIOCRCLRTSTATS                    = 0xc4504441\n\tDIOCRDELADDRS                     = 0xc4504444\n\tDIOCRDELTABLES                    = 0xc450443e\n\tDIOCRGETADDRS                     = 0xc4504446\n\tDIOCRGETASTATS                    = 0xc4504447\n\tDIOCRGETTABLES                    = 0xc450443f\n\tDIOCRGETTSTATS                    = 0xc4504440\n\tDIOCRINADEFINE                    = 0xc450444d\n\tDIOCRSETADDRS                     = 0xc4504445\n\tDIOCRSETTFLAGS                    = 0xc450444a\n\tDIOCRTSTADDRS                     = 0xc4504449\n\tDIOCSETDEBUG                      = 0xc0044418\n\tDIOCSETHOSTID                     = 0xc0044456\n\tDIOCSETIFFLAG                     = 0xc0284459\n\tDIOCSETLIMIT                      = 0xc0084428\n\tDIOCSETREASS                      = 0xc004445c\n\tDIOCSETSTATUSIF                   = 0xc0284414\n\tDIOCSETSYNCOOKIES                 = 0xc0014462\n\tDIOCSETSYNFLWATS                  = 0xc0084461\n\tDIOCSETTIMEOUT                    = 0xc008441d\n\tDIOCSTART                         = 0x20004401\n\tDIOCSTOP                          = 0x20004402\n\tDIOCXBEGIN                        = 0xc0104451\n\tDIOCXCOMMIT                       = 0xc0104452\n\tDIOCXROLLBACK                     = 0xc0104453\n\tDLT_ARCNET                        = 0x7\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AX25                          = 0x3\n\tDLT_CHAOS                         = 0x5\n\tDLT_C_HDLC                        = 0x68\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0xd\n\tDLT_FDDI                          = 0xa\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_LOOP                          = 0xc\n\tDLT_MPLS                          = 0xdb\n\tDLT_NULL                          = 0x0\n\tDLT_OPENFLOW                      = 0x10b\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0x10\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PRONET                        = 0x4\n\tDLT_RAW                           = 0xe\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xf\n\tDLT_USBPCAP                       = 0xf9\n\tDLT_USER0                         = 0x93\n\tDLT_USER1                         = 0x94\n\tDLT_USER10                        = 0x9d\n\tDLT_USER11                        = 0x9e\n\tDLT_USER12                        = 0x9f\n\tDLT_USER13                        = 0xa0\n\tDLT_USER14                        = 0xa1\n\tDLT_USER15                        = 0xa2\n\tDLT_USER2                         = 0x95\n\tDLT_USER3                         = 0x96\n\tDLT_USER4                         = 0x97\n\tDLT_USER5                         = 0x98\n\tDLT_USER6                         = 0x99\n\tDLT_USER7                         = 0x9a\n\tDLT_USER8                         = 0x9b\n\tDLT_USER9                         = 0x9c\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEMT_TAGOVF                        = 0x1\n\tEMUL_ENABLED                      = 0x1\n\tEMUL_NATIVE                       = 0x2\n\tENDRUNDISC                        = 0x9\n\tETH64_8021_RSVD_MASK              = 0xfffffffffff0\n\tETH64_8021_RSVD_PREFIX            = 0x180c2000000\n\tETHERMIN                          = 0x2e\n\tETHERMTU                          = 0x5dc\n\tETHERTYPE_8023                    = 0x4\n\tETHERTYPE_AARP                    = 0x80f3\n\tETHERTYPE_ACCTON                  = 0x8390\n\tETHERTYPE_AEONIC                  = 0x8036\n\tETHERTYPE_ALPHA                   = 0x814a\n\tETHERTYPE_AMBER                   = 0x6008\n\tETHERTYPE_AMOEBA                  = 0x8145\n\tETHERTYPE_AOE                     = 0x88a2\n\tETHERTYPE_APOLLO                  = 0x80f7\n\tETHERTYPE_APOLLODOMAIN            = 0x8019\n\tETHERTYPE_APPLETALK               = 0x809b\n\tETHERTYPE_APPLITEK                = 0x80c7\n\tETHERTYPE_ARGONAUT                = 0x803a\n\tETHERTYPE_ARP                     = 0x806\n\tETHERTYPE_AT                      = 0x809b\n\tETHERTYPE_ATALK                   = 0x809b\n\tETHERTYPE_ATOMIC                  = 0x86df\n\tETHERTYPE_ATT                     = 0x8069\n\tETHERTYPE_ATTSTANFORD             = 0x8008\n\tETHERTYPE_AUTOPHON                = 0x806a\n\tETHERTYPE_AXIS                    = 0x8856\n\tETHERTYPE_BCLOOP                  = 0x9003\n\tETHERTYPE_BOFL                    = 0x8102\n\tETHERTYPE_CABLETRON               = 0x7034\n\tETHERTYPE_CHAOS                   = 0x804\n\tETHERTYPE_COMDESIGN               = 0x806c\n\tETHERTYPE_COMPUGRAPHIC            = 0x806d\n\tETHERTYPE_COUNTERPOINT            = 0x8062\n\tETHERTYPE_CRONUS                  = 0x8004\n\tETHERTYPE_CRONUSVLN               = 0x8003\n\tETHERTYPE_DCA                     = 0x1234\n\tETHERTYPE_DDE                     = 0x807b\n\tETHERTYPE_DEBNI                   = 0xaaaa\n\tETHERTYPE_DECAM                   = 0x8048\n\tETHERTYPE_DECCUST                 = 0x6006\n\tETHERTYPE_DECDIAG                 = 0x6005\n\tETHERTYPE_DECDNS                  = 0x803c\n\tETHERTYPE_DECDTS                  = 0x803e\n\tETHERTYPE_DECEXPER                = 0x6000\n\tETHERTYPE_DECLAST                 = 0x8041\n\tETHERTYPE_DECLTM                  = 0x803f\n\tETHERTYPE_DECMUMPS                = 0x6009\n\tETHERTYPE_DECNETBIOS              = 0x8040\n\tETHERTYPE_DELTACON                = 0x86de\n\tETHERTYPE_DIDDLE                  = 0x4321\n\tETHERTYPE_DLOG1                   = 0x660\n\tETHERTYPE_DLOG2                   = 0x661\n\tETHERTYPE_DN                      = 0x6003\n\tETHERTYPE_DOGFIGHT                = 0x1989\n\tETHERTYPE_DSMD                    = 0x8039\n\tETHERTYPE_EAPOL                   = 0x888e\n\tETHERTYPE_ECMA                    = 0x803\n\tETHERTYPE_ENCRYPT                 = 0x803d\n\tETHERTYPE_ES                      = 0x805d\n\tETHERTYPE_EXCELAN                 = 0x8010\n\tETHERTYPE_EXPERDATA               = 0x8049\n\tETHERTYPE_FLIP                    = 0x8146\n\tETHERTYPE_FLOWCONTROL             = 0x8808\n\tETHERTYPE_FRARP                   = 0x808\n\tETHERTYPE_GENDYN                  = 0x8068\n\tETHERTYPE_HAYES                   = 0x8130\n\tETHERTYPE_HIPPI_FP                = 0x8180\n\tETHERTYPE_HITACHI                 = 0x8820\n\tETHERTYPE_HP                      = 0x8005\n\tETHERTYPE_IEEEPUP                 = 0xa00\n\tETHERTYPE_IEEEPUPAT               = 0xa01\n\tETHERTYPE_IMLBL                   = 0x4c42\n\tETHERTYPE_IMLBLDIAG               = 0x424c\n\tETHERTYPE_IP                      = 0x800\n\tETHERTYPE_IPAS                    = 0x876c\n\tETHERTYPE_IPV6                    = 0x86dd\n\tETHERTYPE_IPX                     = 0x8137\n\tETHERTYPE_IPXNEW                  = 0x8037\n\tETHERTYPE_KALPANA                 = 0x8582\n\tETHERTYPE_LANBRIDGE               = 0x8038\n\tETHERTYPE_LANPROBE                = 0x8888\n\tETHERTYPE_LAT                     = 0x6004\n\tETHERTYPE_LBACK                   = 0x9000\n\tETHERTYPE_LITTLE                  = 0x8060\n\tETHERTYPE_LLDP                    = 0x88cc\n\tETHERTYPE_LOGICRAFT               = 0x8148\n\tETHERTYPE_LOOPBACK                = 0x9000\n\tETHERTYPE_MACSEC                  = 0x88e5\n\tETHERTYPE_MATRA                   = 0x807a\n\tETHERTYPE_MAX                     = 0xffff\n\tETHERTYPE_MERIT                   = 0x807c\n\tETHERTYPE_MICP                    = 0x873a\n\tETHERTYPE_MOPDL                   = 0x6001\n\tETHERTYPE_MOPRC                   = 0x6002\n\tETHERTYPE_MOTOROLA                = 0x818d\n\tETHERTYPE_MPLS                    = 0x8847\n\tETHERTYPE_MPLS_MCAST              = 0x8848\n\tETHERTYPE_MUMPS                   = 0x813f\n\tETHERTYPE_NBPCC                   = 0x3c04\n\tETHERTYPE_NBPCLAIM                = 0x3c09\n\tETHERTYPE_NBPCLREQ                = 0x3c05\n\tETHERTYPE_NBPCLRSP                = 0x3c06\n\tETHERTYPE_NBPCREQ                 = 0x3c02\n\tETHERTYPE_NBPCRSP                 = 0x3c03\n\tETHERTYPE_NBPDG                   = 0x3c07\n\tETHERTYPE_NBPDGB                  = 0x3c08\n\tETHERTYPE_NBPDLTE                 = 0x3c0a\n\tETHERTYPE_NBPRAR                  = 0x3c0c\n\tETHERTYPE_NBPRAS                  = 0x3c0b\n\tETHERTYPE_NBPRST                  = 0x3c0d\n\tETHERTYPE_NBPSCD                  = 0x3c01\n\tETHERTYPE_NBPVCD                  = 0x3c00\n\tETHERTYPE_NBS                     = 0x802\n\tETHERTYPE_NCD                     = 0x8149\n\tETHERTYPE_NESTAR                  = 0x8006\n\tETHERTYPE_NETBEUI                 = 0x8191\n\tETHERTYPE_NHRP                    = 0x2001\n\tETHERTYPE_NOVELL                  = 0x8138\n\tETHERTYPE_NS                      = 0x600\n\tETHERTYPE_NSAT                    = 0x601\n\tETHERTYPE_NSCOMPAT                = 0x807\n\tETHERTYPE_NSH                     = 0x984f\n\tETHERTYPE_NTRAILER                = 0x10\n\tETHERTYPE_OS9                     = 0x7007\n\tETHERTYPE_OS9NET                  = 0x7009\n\tETHERTYPE_PACER                   = 0x80c6\n\tETHERTYPE_PBB                     = 0x88e7\n\tETHERTYPE_PCS                     = 0x4242\n\tETHERTYPE_PLANNING                = 0x8044\n\tETHERTYPE_PPP                     = 0x880b\n\tETHERTYPE_PPPOE                   = 0x8864\n\tETHERTYPE_PPPOEDISC               = 0x8863\n\tETHERTYPE_PRIMENTS                = 0x7031\n\tETHERTYPE_PUP                     = 0x200\n\tETHERTYPE_PUPAT                   = 0x200\n\tETHERTYPE_QINQ                    = 0x88a8\n\tETHERTYPE_RACAL                   = 0x7030\n\tETHERTYPE_RATIONAL                = 0x8150\n\tETHERTYPE_RAWFR                   = 0x6559\n\tETHERTYPE_RCL                     = 0x1995\n\tETHERTYPE_RDP                     = 0x8739\n\tETHERTYPE_RETIX                   = 0x80f2\n\tETHERTYPE_REVARP                  = 0x8035\n\tETHERTYPE_SCA                     = 0x6007\n\tETHERTYPE_SECTRA                  = 0x86db\n\tETHERTYPE_SECUREDATA              = 0x876d\n\tETHERTYPE_SGITW                   = 0x817e\n\tETHERTYPE_SG_BOUNCE               = 0x8016\n\tETHERTYPE_SG_DIAG                 = 0x8013\n\tETHERTYPE_SG_NETGAMES             = 0x8014\n\tETHERTYPE_SG_RESV                 = 0x8015\n\tETHERTYPE_SIMNET                  = 0x5208\n\tETHERTYPE_SLOW                    = 0x8809\n\tETHERTYPE_SNA                     = 0x80d5\n\tETHERTYPE_SNMP                    = 0x814c\n\tETHERTYPE_SONIX                   = 0xfaf5\n\tETHERTYPE_SPIDER                  = 0x809f\n\tETHERTYPE_SPRITE                  = 0x500\n\tETHERTYPE_STP                     = 0x8181\n\tETHERTYPE_TALARIS                 = 0x812b\n\tETHERTYPE_TALARISMC               = 0x852b\n\tETHERTYPE_TCPCOMP                 = 0x876b\n\tETHERTYPE_TCPSM                   = 0x9002\n\tETHERTYPE_TEC                     = 0x814f\n\tETHERTYPE_TIGAN                   = 0x802f\n\tETHERTYPE_TRAIL                   = 0x1000\n\tETHERTYPE_TRANSETHER              = 0x6558\n\tETHERTYPE_TYMSHARE                = 0x802e\n\tETHERTYPE_UBBST                   = 0x7005\n\tETHERTYPE_UBDEBUG                 = 0x900\n\tETHERTYPE_UBDIAGLOOP              = 0x7002\n\tETHERTYPE_UBDL                    = 0x7000\n\tETHERTYPE_UBNIU                   = 0x7001\n\tETHERTYPE_UBNMC                   = 0x7003\n\tETHERTYPE_VALID                   = 0x1600\n\tETHERTYPE_VARIAN                  = 0x80dd\n\tETHERTYPE_VAXELN                  = 0x803b\n\tETHERTYPE_VEECO                   = 0x8067\n\tETHERTYPE_VEXP                    = 0x805b\n\tETHERTYPE_VGLAB                   = 0x8131\n\tETHERTYPE_VINES                   = 0xbad\n\tETHERTYPE_VINESECHO               = 0xbaf\n\tETHERTYPE_VINESLOOP               = 0xbae\n\tETHERTYPE_VITAL                   = 0xff00\n\tETHERTYPE_VLAN                    = 0x8100\n\tETHERTYPE_VLTLMAN                 = 0x8080\n\tETHERTYPE_VPROD                   = 0x805c\n\tETHERTYPE_VURESERVED              = 0x8147\n\tETHERTYPE_WATERLOO                = 0x8130\n\tETHERTYPE_WELLFLEET               = 0x8103\n\tETHERTYPE_X25                     = 0x805\n\tETHERTYPE_X75                     = 0x801\n\tETHERTYPE_XNSSM                   = 0x9001\n\tETHERTYPE_XTP                     = 0x817d\n\tETHER_ADDR_LEN                    = 0x6\n\tETHER_ALIGN                       = 0x2\n\tETHER_CRC_LEN                     = 0x4\n\tETHER_CRC_POLY_BE                 = 0x4c11db6\n\tETHER_CRC_POLY_LE                 = 0xedb88320\n\tETHER_HDR_LEN                     = 0xe\n\tETHER_MAX_DIX_LEN                 = 0x600\n\tETHER_MAX_HARDMTU_LEN             = 0xff9b\n\tETHER_MAX_LEN                     = 0x5ee\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = -0x3\n\tEVFILT_DEVICE                     = -0x8\n\tEVFILT_EXCEPT                     = -0x9\n\tEVFILT_PROC                       = -0x5\n\tEVFILT_READ                       = -0x1\n\tEVFILT_SIGNAL                     = -0x6\n\tEVFILT_SYSCOUNT                   = 0x9\n\tEVFILT_TIMER                      = -0x7\n\tEVFILT_VNODE                      = -0x4\n\tEVFILT_WRITE                      = -0x2\n\tEVL_ENCAPLEN                      = 0x4\n\tEVL_PRIO_BITS                     = 0xd\n\tEVL_PRIO_MAX                      = 0x7\n\tEVL_VLID_MASK                     = 0xfff\n\tEVL_VLID_MAX                      = 0xffe\n\tEVL_VLID_MIN                      = 0x1\n\tEVL_VLID_NULL                     = 0x0\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_DISPATCH                       = 0x80\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_RECEIPT                        = 0x40\n\tEV_SYSFLAGS                       = 0xf800\n\tEXTA                              = 0x4b00\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x400\n\tFLUSHO                            = 0x800000\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0xa\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETOWN                          = 0x5\n\tF_ISATTY                          = 0xb\n\tF_OK                              = 0x0\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x8e52\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_STATICARP                     = 0x20\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BLUETOOTH                     = 0xf8\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf7\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DUMMY                         = 0xf1\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ECONET                        = 0xce\n\tIFT_ENC                           = 0xf4\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf3\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INFINIBAND                    = 0xc7\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LINEGROUP                     = 0xd2\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MBIM                          = 0xfa\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFLOW                         = 0xf9\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_PON155                        = 0xcf\n\tIFT_PON622                        = 0xd0\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPATM                       = 0xc5\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf2\n\tIFT_Q2931                         = 0xc9\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SIPSIG                        = 0xcc\n\tIFT_SIPTG                         = 0xcb\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TELINK                        = 0xc8\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VIRTUALTG                     = 0xca\n\tIFT_VOICEDID                      = 0xd5\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEEMFGD                    = 0xd3\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFGDEANA                  = 0xd4\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERCABLE                = 0xc6\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_WIREGUARD                     = 0xfb\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIN_RFC3021_HOST                   = 0x1\n\tIN_RFC3021_NET                    = 0xfffffffe\n\tIN_RFC3021_NSHIFT                 = 0x1f\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_DIVERT                    = 0x102\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x103\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_MPLS                      = 0x89\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_SCTP                      = 0x84\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_UDPLITE                   = 0x88\n\tIPV6_AUTH_LEVEL                   = 0x35\n\tIPV6_AUTOFLOWLABEL                = 0x3b\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_ESP_NETWORK_LEVEL            = 0x37\n\tIPV6_ESP_TRANS_LEVEL              = 0x36\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPCOMP_LEVEL                 = 0x3c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MINHOPCOUNT                  = 0x41\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_OPTIONS                      = 0x1\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PIPEX                        = 0x3f\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVDSTPORT                  = 0x40\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTABLE                       = 0x1021\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_AUTH_LEVEL                     = 0x14\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_ESP_NETWORK_LEVEL              = 0x16\n\tIP_ESP_TRANS_LEVEL                = 0x15\n\tIP_HDRINCL                        = 0x2\n\tIP_IPCOMP_LEVEL                   = 0x1d\n\tIP_IPDEFTTL                       = 0x25\n\tIP_IPSECFLOWINFO                  = 0x24\n\tIP_IPSEC_LOCAL_AUTH               = 0x1b\n\tIP_IPSEC_LOCAL_CRED               = 0x19\n\tIP_IPSEC_LOCAL_ID                 = 0x17\n\tIP_IPSEC_REMOTE_AUTH              = 0x1c\n\tIP_IPSEC_REMOTE_CRED              = 0x1a\n\tIP_IPSEC_REMOTE_ID                = 0x18\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0xfff\n\tIP_MF                             = 0x2000\n\tIP_MINTTL                         = 0x20\n\tIP_MIN_MEMBERSHIPS                = 0xf\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PIPEX                          = 0x22\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVDSTPORT                    = 0x21\n\tIP_RECVIF                         = 0x1e\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVRTABLE                     = 0x23\n\tIP_RECVTTL                        = 0x1f\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_RTABLE                         = 0x1021\n\tIP_SENDSRCADDR                    = 0x7\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tITIMER_PROF                       = 0x2\n\tITIMER_REAL                       = 0x0\n\tITIMER_VIRTUAL                    = 0x1\n\tIUCLC                             = 0x1000\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLCNT_OVERLOAD_FLUSH               = 0x6\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x6\n\tMADV_NORMAL                       = 0x0\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SPACEAVAIL                   = 0x5\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ANON                          = 0x1000\n\tMAP_ANONYMOUS                     = 0x1000\n\tMAP_CONCEAL                       = 0x8000\n\tMAP_COPY                          = 0x2\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_FLAGMASK                      = 0xfff7\n\tMAP_HASSEMAPHORE                  = 0x0\n\tMAP_INHERIT                       = 0x0\n\tMAP_INHERIT_COPY                  = 0x1\n\tMAP_INHERIT_NONE                  = 0x2\n\tMAP_INHERIT_SHARE                 = 0x0\n\tMAP_INHERIT_ZERO                  = 0x3\n\tMAP_NOEXTEND                      = 0x0\n\tMAP_NORESERVE                     = 0x0\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x0\n\tMAP_SHARED                        = 0x1\n\tMAP_STACK                         = 0x4000\n\tMAP_TRYFIXED                      = 0x0\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DELEXPORT                     = 0x20000\n\tMNT_DOOMED                        = 0x8000000\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_FORCE                         = 0x80000\n\tMNT_LAZY                          = 0x3\n\tMNT_LOCAL                         = 0x1000\n\tMNT_NOATIME                       = 0x8000\n\tMNT_NODEV                         = 0x10\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOPERM                        = 0x20\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOWAIT                        = 0x2\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x4000000\n\tMNT_STALLED                       = 0x100000\n\tMNT_SWAPPABLE                     = 0x200000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0x400ffff\n\tMNT_WAIT                          = 0x1\n\tMNT_WANTRDWR                      = 0x2000000\n\tMNT_WXALLOWED                     = 0x800\n\tMOUNT_AFS                         = \"afs\"\n\tMOUNT_CD9660                      = \"cd9660\"\n\tMOUNT_EXT2FS                      = \"ext2fs\"\n\tMOUNT_FFS                         = \"ffs\"\n\tMOUNT_FUSEFS                      = \"fuse\"\n\tMOUNT_MFS                         = \"mfs\"\n\tMOUNT_MSDOS                       = \"msdos\"\n\tMOUNT_NCPFS                       = \"ncpfs\"\n\tMOUNT_NFS                         = \"nfs\"\n\tMOUNT_NTFS                        = \"ntfs\"\n\tMOUNT_TMPFS                       = \"tmpfs\"\n\tMOUNT_UDF                         = \"udf\"\n\tMOUNT_UFS                         = \"ffs\"\n\tMSG_BCAST                         = 0x100\n\tMSG_CMSG_CLOEXEC                  = 0x800\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOR                           = 0x8\n\tMSG_MCAST                         = 0x200\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_TRUNC                         = 0x10\n\tMSG_WAITALL                       = 0x40\n\tMSG_WAITFORONE                    = 0x1000\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x4\n\tMS_SYNC                           = 0x2\n\tNAME_MAX                          = 0xff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x3\n\tNET_RT_IFNAMES                    = 0x6\n\tNET_RT_MAXID                      = 0x8\n\tNET_RT_SOURCE                     = 0x7\n\tNET_RT_STATS                      = 0x4\n\tNET_RT_TABLE                      = 0x5\n\tNFDBITS                           = 0x20\n\tNOFLSH                            = 0x80000000\n\tNOKERNINFO                        = 0x2000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHANGE                       = 0x1\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EOF                          = 0x2\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_OOB                          = 0x4\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_TRUNCATE                     = 0x80\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOLCUC                             = 0x20\n\tONLCR                             = 0x2\n\tONLRET                            = 0x80\n\tONOCR                             = 0x40\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tOXTABS                            = 0x4\n\tO_ACCMODE                         = 0x3\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x10000\n\tO_CREAT                           = 0x200\n\tO_DIRECTORY                       = 0x20000\n\tO_DSYNC                           = 0x80\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_RSYNC                           = 0x80\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPF_FLUSH                          = 0x1\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BFD                          = 0xb\n\tRTAX_BRD                          = 0x7\n\tRTAX_DNS                          = 0xc\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_LABEL                        = 0xa\n\tRTAX_MAX                          = 0xf\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_SEARCH                       = 0xe\n\tRTAX_SRC                          = 0x8\n\tRTAX_SRCMASK                      = 0x9\n\tRTAX_STATIC                       = 0xd\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BFD                           = 0x800\n\tRTA_BRD                           = 0x80\n\tRTA_DNS                           = 0x1000\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_LABEL                         = 0x400\n\tRTA_NETMASK                       = 0x4\n\tRTA_SEARCH                        = 0x4000\n\tRTA_SRC                           = 0x100\n\tRTA_SRCMASK                       = 0x200\n\tRTA_STATIC                        = 0x2000\n\tRTF_ANNOUNCE                      = 0x4000\n\tRTF_BFD                           = 0x1000000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_BROADCAST                     = 0x400000\n\tRTF_CACHED                        = 0x20000\n\tRTF_CLONED                        = 0x10000\n\tRTF_CLONING                       = 0x100\n\tRTF_CONNECTED                     = 0x800000\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_FMASK                         = 0x110fc08\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_LOCAL                         = 0x200000\n\tRTF_MODIFIED                      = 0x20\n\tRTF_MPATH                         = 0x40000\n\tRTF_MPLS                          = 0x100000\n\tRTF_MULTICAST                     = 0x200\n\tRTF_PERMANENT_ARP                 = 0x2000\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_PROTO3                        = 0x2000\n\tRTF_REJECT                        = 0x8\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_USETRAILERS                   = 0x8000\n\tRTM_80211INFO                     = 0x15\n\tRTM_ADD                           = 0x1\n\tRTM_BFD                           = 0x12\n\tRTM_CHANGE                        = 0x3\n\tRTM_CHGADDRATTR                   = 0x14\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_DESYNC                        = 0x10\n\tRTM_GET                           = 0x4\n\tRTM_IFANNOUNCE                    = 0xf\n\tRTM_IFINFO                        = 0xe\n\tRTM_INVALIDATE                    = 0x11\n\tRTM_LOSING                        = 0x5\n\tRTM_MAXSIZE                       = 0x800\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_PROPOSAL                      = 0x13\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_SOURCE                        = 0x16\n\tRTM_VERSION                       = 0x5\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRT_TABLEID_BITS                   = 0x8\n\tRT_TABLEID_MASK                   = 0xff\n\tRT_TABLEID_MAX                    = 0xff\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tRUSAGE_THREAD                     = 0x1\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x4\n\tSEEK_CUR                          = 0x1\n\tSEEK_END                          = 0x2\n\tSEEK_SET                          = 0x0\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80206931\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCAIFGROUP                      = 0x80286987\n\tSIOCATMARK                        = 0x40047307\n\tSIOCBRDGADD                       = 0x8060693c\n\tSIOCBRDGADDL                      = 0x80606949\n\tSIOCBRDGADDS                      = 0x80606941\n\tSIOCBRDGARL                       = 0x808c694d\n\tSIOCBRDGDADDR                     = 0x81286947\n\tSIOCBRDGDEL                       = 0x8060693d\n\tSIOCBRDGDELS                      = 0x80606942\n\tSIOCBRDGFLUSH                     = 0x80606948\n\tSIOCBRDGFRL                       = 0x808c694e\n\tSIOCBRDGGCACHE                    = 0xc0146941\n\tSIOCBRDGGFD                       = 0xc0146952\n\tSIOCBRDGGHT                       = 0xc0146951\n\tSIOCBRDGGIFFLGS                   = 0xc060693e\n\tSIOCBRDGGMA                       = 0xc0146953\n\tSIOCBRDGGPARAM                    = 0xc0406958\n\tSIOCBRDGGPRI                      = 0xc0146950\n\tSIOCBRDGGRL                       = 0xc030694f\n\tSIOCBRDGGTO                       = 0xc0146946\n\tSIOCBRDGIFS                       = 0xc0606942\n\tSIOCBRDGRTS                       = 0xc0206943\n\tSIOCBRDGSADDR                     = 0xc1286944\n\tSIOCBRDGSCACHE                    = 0x80146940\n\tSIOCBRDGSFD                       = 0x80146952\n\tSIOCBRDGSHT                       = 0x80146951\n\tSIOCBRDGSIFCOST                   = 0x80606955\n\tSIOCBRDGSIFFLGS                   = 0x8060693f\n\tSIOCBRDGSIFPRIO                   = 0x80606954\n\tSIOCBRDGSIFPROT                   = 0x8060694a\n\tSIOCBRDGSMA                       = 0x80146953\n\tSIOCBRDGSPRI                      = 0x80146950\n\tSIOCBRDGSPROTO                    = 0x8014695a\n\tSIOCBRDGSTO                       = 0x80146945\n\tSIOCBRDGSTXHC                     = 0x80146959\n\tSIOCDELLABEL                      = 0x80206997\n\tSIOCDELMULTI                      = 0x80206932\n\tSIOCDIFADDR                       = 0x80206919\n\tSIOCDIFGROUP                      = 0x80286989\n\tSIOCDIFPARENT                     = 0x802069b4\n\tSIOCDIFPHYADDR                    = 0x80206949\n\tSIOCDPWE3NEIGHBOR                 = 0x802069de\n\tSIOCDVNETID                       = 0x802069af\n\tSIOCGETKALIVE                     = 0xc01869a4\n\tSIOCGETLABEL                      = 0x8020699a\n\tSIOCGETMPWCFG                     = 0xc02069ae\n\tSIOCGETPFLOW                      = 0xc02069fe\n\tSIOCGETPFSYNC                     = 0xc02069f8\n\tSIOCGETSGCNT                      = 0xc0207534\n\tSIOCGETVIFCNT                     = 0xc0287533\n\tSIOCGETVLAN                       = 0xc0206990\n\tSIOCGIFADDR                       = 0xc0206921\n\tSIOCGIFBRDADDR                    = 0xc0206923\n\tSIOCGIFCONF                       = 0xc0106924\n\tSIOCGIFDATA                       = 0xc020691b\n\tSIOCGIFDESCR                      = 0xc0206981\n\tSIOCGIFDSTADDR                    = 0xc0206922\n\tSIOCGIFFLAGS                      = 0xc0206911\n\tSIOCGIFGATTR                      = 0xc028698b\n\tSIOCGIFGENERIC                    = 0xc020693a\n\tSIOCGIFGLIST                      = 0xc028698d\n\tSIOCGIFGMEMB                      = 0xc028698a\n\tSIOCGIFGROUP                      = 0xc0286988\n\tSIOCGIFHARDMTU                    = 0xc02069a5\n\tSIOCGIFLLPRIO                     = 0xc02069b6\n\tSIOCGIFMEDIA                      = 0xc0406938\n\tSIOCGIFMETRIC                     = 0xc0206917\n\tSIOCGIFMTU                        = 0xc020697e\n\tSIOCGIFNETMASK                    = 0xc0206925\n\tSIOCGIFPAIR                       = 0xc02069b1\n\tSIOCGIFPARENT                     = 0xc02069b3\n\tSIOCGIFPRIORITY                   = 0xc020699c\n\tSIOCGIFRDOMAIN                    = 0xc02069a0\n\tSIOCGIFRTLABEL                    = 0xc0206983\n\tSIOCGIFRXR                        = 0x802069aa\n\tSIOCGIFSFFPAGE                    = 0xc1126939\n\tSIOCGIFXFLAGS                     = 0xc020699e\n\tSIOCGLIFPHYADDR                   = 0xc218694b\n\tSIOCGLIFPHYDF                     = 0xc02069c2\n\tSIOCGLIFPHYECN                    = 0xc02069c8\n\tSIOCGLIFPHYRTABLE                 = 0xc02069a2\n\tSIOCGLIFPHYTTL                    = 0xc02069a9\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGPWE3                         = 0xc0206998\n\tSIOCGPWE3CTRLWORD                 = 0xc02069dc\n\tSIOCGPWE3FAT                      = 0xc02069dd\n\tSIOCGPWE3NEIGHBOR                 = 0xc21869de\n\tSIOCGRXHPRIO                      = 0xc02069db\n\tSIOCGSPPPPARAMS                   = 0xc0206994\n\tSIOCGTXHPRIO                      = 0xc02069c6\n\tSIOCGUMBINFO                      = 0xc02069be\n\tSIOCGUMBPARAM                     = 0xc02069c0\n\tSIOCGVH                           = 0xc02069f6\n\tSIOCGVNETFLOWID                   = 0xc02069c4\n\tSIOCGVNETID                       = 0xc02069a7\n\tSIOCIFAFATTACH                    = 0x801169ab\n\tSIOCIFAFDETACH                    = 0x801169ac\n\tSIOCIFCREATE                      = 0x8020697a\n\tSIOCIFDESTROY                     = 0x80206979\n\tSIOCIFGCLONERS                    = 0xc0106978\n\tSIOCSETKALIVE                     = 0x801869a3\n\tSIOCSETLABEL                      = 0x80206999\n\tSIOCSETMPWCFG                     = 0x802069ad\n\tSIOCSETPFLOW                      = 0x802069fd\n\tSIOCSETPFSYNC                     = 0x802069f7\n\tSIOCSETVLAN                       = 0x8020698f\n\tSIOCSIFADDR                       = 0x8020690c\n\tSIOCSIFBRDADDR                    = 0x80206913\n\tSIOCSIFDESCR                      = 0x80206980\n\tSIOCSIFDSTADDR                    = 0x8020690e\n\tSIOCSIFFLAGS                      = 0x80206910\n\tSIOCSIFGATTR                      = 0x8028698c\n\tSIOCSIFGENERIC                    = 0x80206939\n\tSIOCSIFLLADDR                     = 0x8020691f\n\tSIOCSIFLLPRIO                     = 0x802069b5\n\tSIOCSIFMEDIA                      = 0xc0206937\n\tSIOCSIFMETRIC                     = 0x80206918\n\tSIOCSIFMTU                        = 0x8020697f\n\tSIOCSIFNETMASK                    = 0x80206916\n\tSIOCSIFPAIR                       = 0x802069b0\n\tSIOCSIFPARENT                     = 0x802069b2\n\tSIOCSIFPRIORITY                   = 0x8020699b\n\tSIOCSIFRDOMAIN                    = 0x8020699f\n\tSIOCSIFRTLABEL                    = 0x80206982\n\tSIOCSIFXFLAGS                     = 0x8020699d\n\tSIOCSLIFPHYADDR                   = 0x8218694a\n\tSIOCSLIFPHYDF                     = 0x802069c1\n\tSIOCSLIFPHYECN                    = 0x802069c7\n\tSIOCSLIFPHYRTABLE                 = 0x802069a1\n\tSIOCSLIFPHYTTL                    = 0x802069a8\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSPWE3CTRLWORD                 = 0x802069dc\n\tSIOCSPWE3FAT                      = 0x802069dd\n\tSIOCSPWE3NEIGHBOR                 = 0x821869de\n\tSIOCSRXHPRIO                      = 0x802069db\n\tSIOCSSPPPPARAMS                   = 0x80206993\n\tSIOCSTXHPRIO                      = 0x802069c5\n\tSIOCSUMBPARAM                     = 0x802069bf\n\tSIOCSVH                           = 0xc02069f5\n\tSIOCSVNETFLOWID                   = 0x802069c3\n\tSIOCSVNETID                       = 0x802069a6\n\tSOCK_CLOEXEC                      = 0x8000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_DNS                          = 0x1000\n\tSOCK_NONBLOCK                     = 0x4000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_BINDANY                        = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DOMAIN                         = 0x1024\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NETPROC                        = 0x1020\n\tSO_OOBINLINE                      = 0x100\n\tSO_PEERCRED                       = 0x1022\n\tSO_PROTOCOL                       = 0x1025\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x1006\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_RTABLE                         = 0x1021\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x1005\n\tSO_SPLICE                         = 0x1023\n\tSO_TIMESTAMP                      = 0x800\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tSO_ZEROIZE                        = 0x2000\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tTCIFLUSH                          = 0x1\n\tTCIOFF                            = 0x3\n\tTCIOFLUSH                         = 0x3\n\tTCION                             = 0x4\n\tTCOFLUSH                          = 0x2\n\tTCOOFF                            = 0x1\n\tTCOON                             = 0x2\n\tTCPOPT_EOL                        = 0x0\n\tTCPOPT_MAXSEG                     = 0x2\n\tTCPOPT_NOP                        = 0x1\n\tTCPOPT_SACK                       = 0x5\n\tTCPOPT_SACK_HDR                   = 0x1010500\n\tTCPOPT_SACK_PERMITTED             = 0x4\n\tTCPOPT_SACK_PERMIT_HDR            = 0x1010402\n\tTCPOPT_SIGNATURE                  = 0x13\n\tTCPOPT_TIMESTAMP                  = 0x8\n\tTCPOPT_TSTAMP_HDR                 = 0x101080a\n\tTCPOPT_WINDOW                     = 0x3\n\tTCP_INFO                          = 0x9\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_SACK                      = 0x3\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MD5SIG                        = 0x4\n\tTCP_MSS                           = 0x200\n\tTCP_NODELAY                       = 0x1\n\tTCP_NOPUSH                        = 0x10\n\tTCP_SACKHOLE_LIMIT                = 0x80\n\tTCP_SACK_ENABLE                   = 0x8\n\tTCSAFLUSH                         = 0x2\n\tTIMER_ABSTIME                     = 0x1\n\tTIMER_RELTIME                     = 0x0\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCHKVERAUTH                    = 0x2000741e\n\tTIOCCLRVERAUTH                    = 0x2000741d\n\tTIOCCONS                          = 0x80047462\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLAG_CLOCAL                   = 0x2\n\tTIOCFLAG_CRTSCTS                  = 0x4\n\tTIOCFLAG_MDMBUF                   = 0x8\n\tTIOCFLAG_PPS                      = 0x10\n\tTIOCFLAG_SOFTCAR                  = 0x1\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGFLAGS                        = 0x4004745d\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGSID                          = 0x40047463\n\tTIOCGTSTAMP                       = 0x4010745b\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMODG                          = 0x4004746a\n\tTIOCMODS                          = 0x8004746d\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSETVERAUTH                    = 0x8004741c\n\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x8004745f\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x20007465\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSTSTAMP                       = 0x8008745a\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\n\tTIOCUCNTL_CBRK                    = 0x7a\n\tTIOCUCNTL_SBRK                    = 0x7b\n\tTOSTOP                            = 0x400000\n\tUTIME_NOW                         = -0x2\n\tUTIME_OMIT                        = -0x1\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVM_ANONMIN                        = 0x7\n\tVM_LOADAVG                        = 0x2\n\tVM_MALLOC_CONF                    = 0xc\n\tVM_MAXID                          = 0xd\n\tVM_MAXSLP                         = 0xa\n\tVM_METER                          = 0x1\n\tVM_NKMEMPAGES                     = 0x6\n\tVM_PSSTRINGS                      = 0x3\n\tVM_SWAPENCRYPT                    = 0x5\n\tVM_USPACE                         = 0xb\n\tVM_UVMEXP                         = 0x4\n\tVM_VNODEMIN                       = 0x9\n\tVM_VTEXTMIN                       = 0x8\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWALTSIG                           = 0x4\n\tWCONTINUED                        = 0x8\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\n\tWUNTRACED                         = 0x2\n\tXCASE                             = 0x1000000\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x5c)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x58)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x59)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEIPSEC          = syscall.Errno(0x52)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x5f)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMEDIUMTYPE     = syscall.Errno(0x56)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x53)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOMEDIUM       = syscall.Errno(0x55)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x5a)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5d)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x5b)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x57)\n\tEOWNERDEAD      = syscall.Errno(0x5e)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5f)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disk quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC program not available\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIPSEC\", \"IPsec processing failure\"},\n\t{83, \"ENOATTR\", \"attribute not found\"},\n\t{84, \"EILSEQ\", \"illegal byte sequence\"},\n\t{85, \"ENOMEDIUM\", \"no medium found\"},\n\t{86, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{87, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{88, \"ECANCELED\", \"operation canceled\"},\n\t{89, \"EIDRM\", \"identifier removed\"},\n\t{90, \"ENOMSG\", \"no message of desired type\"},\n\t{91, \"ENOTSUP\", \"not supported\"},\n\t{92, \"EBADMSG\", \"bad message\"},\n\t{93, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{94, \"EOWNERDEAD\", \"previous owner died\"},\n\t{95, \"ELAST\", \"protocol error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"thread AST\"},\n\t{28672, \"SIGSTKSZ\", \"unknown signal\"},\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go",
    "content": "// mkerrors.sh\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm && openbsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_BLUETOOTH                      = 0x20\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_ENCAP                          = 0x1c\n\tAF_HYLINK                         = 0xf\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x18\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_KEY                            = 0x1e\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x24\n\tAF_MPLS                           = 0x21\n\tAF_NATM                           = 0x1b\n\tAF_NS                             = 0x6\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x11\n\tAF_SIP                            = 0x1d\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tALTWERASE                         = 0x200\n\tARPHRD_ETHER                      = 0x1\n\tARPHRD_FRELAY                     = 0xf\n\tARPHRD_IEEE1394                   = 0x18\n\tARPHRD_IEEE802                    = 0x6\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB9600                             = 0x2580\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDIRFILT                      = 0x4004427c\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc008427b\n\tBIOCGETIF                         = 0x4020426b\n\tBIOCGFILDROP                      = 0x40044278\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRSIG                         = 0x40044273\n\tBIOCGRTIMEOUT                     = 0x4010426e\n\tBIOCGSTATS                        = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCLOCK                          = 0x20004276\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDIRFILT                      = 0x8004427d\n\tBIOCSDLT                          = 0x8004427a\n\tBIOCSETF                          = 0x80084267\n\tBIOCSETIF                         = 0x8020426c\n\tBIOCSETWF                         = 0x80084277\n\tBIOCSFILDROP                      = 0x80044279\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRSIG                         = 0x80044272\n\tBIOCSRTIMEOUT                     = 0x8010426d\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DIRECTION_IN                  = 0x1\n\tBPF_DIRECTION_OUT                 = 0x2\n\tBPF_DIV                           = 0x30\n\tBPF_FILDROP_CAPTURE               = 0x1\n\tBPF_FILDROP_DROP                  = 0x2\n\tBPF_FILDROP_PASS                  = 0x0\n\tBPF_F_DIR_IN                      = 0x10\n\tBPF_F_DIR_MASK                    = 0x30\n\tBPF_F_DIR_OUT                     = 0x20\n\tBPF_F_DIR_SHIFT                   = 0x4\n\tBPF_F_FLOWID                      = 0x8\n\tBPF_F_PRI_MASK                    = 0x7\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x200000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RND                           = 0xc0\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLOCK_BOOTTIME                    = 0x6\n\tCLOCK_MONOTONIC                   = 0x3\n\tCLOCK_PROCESS_CPUTIME_ID          = 0x2\n\tCLOCK_REALTIME                    = 0x0\n\tCLOCK_THREAD_CPUTIME_ID           = 0x4\n\tCLOCK_UPTIME                      = 0x5\n\tCPUSTATES                         = 0x6\n\tCP_IDLE                           = 0x5\n\tCP_INTR                           = 0x4\n\tCP_NICE                           = 0x1\n\tCP_SPIN                           = 0x3\n\tCP_SYS                            = 0x2\n\tCP_USER                           = 0x0\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x10000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0xff\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tDIOCADDQUEUE                      = 0xc100445d\n\tDIOCADDRULE                       = 0xcce04404\n\tDIOCADDSTATE                      = 0xc1084425\n\tDIOCCHANGERULE                    = 0xcce0441a\n\tDIOCCLRIFFLAG                     = 0xc024445a\n\tDIOCCLRSRCNODES                   = 0x20004455\n\tDIOCCLRSTATES                     = 0xc0d04412\n\tDIOCCLRSTATUS                     = 0xc0244416\n\tDIOCGETLIMIT                      = 0xc0084427\n\tDIOCGETQSTATS                     = 0xc1084460\n\tDIOCGETQUEUE                      = 0xc100445f\n\tDIOCGETQUEUES                     = 0xc100445e\n\tDIOCGETRULE                       = 0xcce04407\n\tDIOCGETRULES                      = 0xcce04406\n\tDIOCGETRULESET                    = 0xc444443b\n\tDIOCGETRULESETS                   = 0xc444443a\n\tDIOCGETSRCNODES                   = 0xc0084454\n\tDIOCGETSTATE                      = 0xc1084413\n\tDIOCGETSTATES                     = 0xc0084419\n\tDIOCGETSTATUS                     = 0xc1e84415\n\tDIOCGETSYNFLWATS                  = 0xc0084463\n\tDIOCGETTIMEOUT                    = 0xc008441e\n\tDIOCIGETIFACES                    = 0xc0244457\n\tDIOCKILLSRCNODES                  = 0xc068445b\n\tDIOCKILLSTATES                    = 0xc0d04429\n\tDIOCNATLOOK                       = 0xc0504417\n\tDIOCOSFPADD                       = 0xc088444f\n\tDIOCOSFPFLUSH                     = 0x2000444e\n\tDIOCOSFPGET                       = 0xc0884450\n\tDIOCRADDADDRS                     = 0xc44c4443\n\tDIOCRADDTABLES                    = 0xc44c443d\n\tDIOCRCLRADDRS                     = 0xc44c4442\n\tDIOCRCLRASTATS                    = 0xc44c4448\n\tDIOCRCLRTABLES                    = 0xc44c443c\n\tDIOCRCLRTSTATS                    = 0xc44c4441\n\tDIOCRDELADDRS                     = 0xc44c4444\n\tDIOCRDELTABLES                    = 0xc44c443e\n\tDIOCRGETADDRS                     = 0xc44c4446\n\tDIOCRGETASTATS                    = 0xc44c4447\n\tDIOCRGETTABLES                    = 0xc44c443f\n\tDIOCRGETTSTATS                    = 0xc44c4440\n\tDIOCRINADEFINE                    = 0xc44c444d\n\tDIOCRSETADDRS                     = 0xc44c4445\n\tDIOCRSETTFLAGS                    = 0xc44c444a\n\tDIOCRTSTADDRS                     = 0xc44c4449\n\tDIOCSETDEBUG                      = 0xc0044418\n\tDIOCSETHOSTID                     = 0xc0044456\n\tDIOCSETIFFLAG                     = 0xc0244459\n\tDIOCSETLIMIT                      = 0xc0084428\n\tDIOCSETREASS                      = 0xc004445c\n\tDIOCSETSTATUSIF                   = 0xc0244414\n\tDIOCSETSYNCOOKIES                 = 0xc0014462\n\tDIOCSETSYNFLWATS                  = 0xc0084461\n\tDIOCSETTIMEOUT                    = 0xc008441d\n\tDIOCSTART                         = 0x20004401\n\tDIOCSTOP                          = 0x20004402\n\tDIOCXBEGIN                        = 0xc00c4451\n\tDIOCXCOMMIT                       = 0xc00c4452\n\tDIOCXROLLBACK                     = 0xc00c4453\n\tDLT_ARCNET                        = 0x7\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AX25                          = 0x3\n\tDLT_CHAOS                         = 0x5\n\tDLT_C_HDLC                        = 0x68\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0xd\n\tDLT_FDDI                          = 0xa\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_LOOP                          = 0xc\n\tDLT_MPLS                          = 0xdb\n\tDLT_NULL                          = 0x0\n\tDLT_OPENFLOW                      = 0x10b\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0x10\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PRONET                        = 0x4\n\tDLT_RAW                           = 0xe\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xf\n\tDLT_USBPCAP                       = 0xf9\n\tDLT_USER0                         = 0x93\n\tDLT_USER1                         = 0x94\n\tDLT_USER10                        = 0x9d\n\tDLT_USER11                        = 0x9e\n\tDLT_USER12                        = 0x9f\n\tDLT_USER13                        = 0xa0\n\tDLT_USER14                        = 0xa1\n\tDLT_USER15                        = 0xa2\n\tDLT_USER2                         = 0x95\n\tDLT_USER3                         = 0x96\n\tDLT_USER4                         = 0x97\n\tDLT_USER5                         = 0x98\n\tDLT_USER6                         = 0x99\n\tDLT_USER7                         = 0x9a\n\tDLT_USER8                         = 0x9b\n\tDLT_USER9                         = 0x9c\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEMT_TAGOVF                        = 0x1\n\tEMUL_ENABLED                      = 0x1\n\tEMUL_NATIVE                       = 0x2\n\tENDRUNDISC                        = 0x9\n\tETH64_8021_RSVD_MASK              = 0xfffffffffff0\n\tETH64_8021_RSVD_PREFIX            = 0x180c2000000\n\tETHERMIN                          = 0x2e\n\tETHERMTU                          = 0x5dc\n\tETHERTYPE_8023                    = 0x4\n\tETHERTYPE_AARP                    = 0x80f3\n\tETHERTYPE_ACCTON                  = 0x8390\n\tETHERTYPE_AEONIC                  = 0x8036\n\tETHERTYPE_ALPHA                   = 0x814a\n\tETHERTYPE_AMBER                   = 0x6008\n\tETHERTYPE_AMOEBA                  = 0x8145\n\tETHERTYPE_AOE                     = 0x88a2\n\tETHERTYPE_APOLLO                  = 0x80f7\n\tETHERTYPE_APOLLODOMAIN            = 0x8019\n\tETHERTYPE_APPLETALK               = 0x809b\n\tETHERTYPE_APPLITEK                = 0x80c7\n\tETHERTYPE_ARGONAUT                = 0x803a\n\tETHERTYPE_ARP                     = 0x806\n\tETHERTYPE_AT                      = 0x809b\n\tETHERTYPE_ATALK                   = 0x809b\n\tETHERTYPE_ATOMIC                  = 0x86df\n\tETHERTYPE_ATT                     = 0x8069\n\tETHERTYPE_ATTSTANFORD             = 0x8008\n\tETHERTYPE_AUTOPHON                = 0x806a\n\tETHERTYPE_AXIS                    = 0x8856\n\tETHERTYPE_BCLOOP                  = 0x9003\n\tETHERTYPE_BOFL                    = 0x8102\n\tETHERTYPE_CABLETRON               = 0x7034\n\tETHERTYPE_CHAOS                   = 0x804\n\tETHERTYPE_COMDESIGN               = 0x806c\n\tETHERTYPE_COMPUGRAPHIC            = 0x806d\n\tETHERTYPE_COUNTERPOINT            = 0x8062\n\tETHERTYPE_CRONUS                  = 0x8004\n\tETHERTYPE_CRONUSVLN               = 0x8003\n\tETHERTYPE_DCA                     = 0x1234\n\tETHERTYPE_DDE                     = 0x807b\n\tETHERTYPE_DEBNI                   = 0xaaaa\n\tETHERTYPE_DECAM                   = 0x8048\n\tETHERTYPE_DECCUST                 = 0x6006\n\tETHERTYPE_DECDIAG                 = 0x6005\n\tETHERTYPE_DECDNS                  = 0x803c\n\tETHERTYPE_DECDTS                  = 0x803e\n\tETHERTYPE_DECEXPER                = 0x6000\n\tETHERTYPE_DECLAST                 = 0x8041\n\tETHERTYPE_DECLTM                  = 0x803f\n\tETHERTYPE_DECMUMPS                = 0x6009\n\tETHERTYPE_DECNETBIOS              = 0x8040\n\tETHERTYPE_DELTACON                = 0x86de\n\tETHERTYPE_DIDDLE                  = 0x4321\n\tETHERTYPE_DLOG1                   = 0x660\n\tETHERTYPE_DLOG2                   = 0x661\n\tETHERTYPE_DN                      = 0x6003\n\tETHERTYPE_DOGFIGHT                = 0x1989\n\tETHERTYPE_DSMD                    = 0x8039\n\tETHERTYPE_EAPOL                   = 0x888e\n\tETHERTYPE_ECMA                    = 0x803\n\tETHERTYPE_ENCRYPT                 = 0x803d\n\tETHERTYPE_ES                      = 0x805d\n\tETHERTYPE_EXCELAN                 = 0x8010\n\tETHERTYPE_EXPERDATA               = 0x8049\n\tETHERTYPE_FLIP                    = 0x8146\n\tETHERTYPE_FLOWCONTROL             = 0x8808\n\tETHERTYPE_FRARP                   = 0x808\n\tETHERTYPE_GENDYN                  = 0x8068\n\tETHERTYPE_HAYES                   = 0x8130\n\tETHERTYPE_HIPPI_FP                = 0x8180\n\tETHERTYPE_HITACHI                 = 0x8820\n\tETHERTYPE_HP                      = 0x8005\n\tETHERTYPE_IEEEPUP                 = 0xa00\n\tETHERTYPE_IEEEPUPAT               = 0xa01\n\tETHERTYPE_IMLBL                   = 0x4c42\n\tETHERTYPE_IMLBLDIAG               = 0x424c\n\tETHERTYPE_IP                      = 0x800\n\tETHERTYPE_IPAS                    = 0x876c\n\tETHERTYPE_IPV6                    = 0x86dd\n\tETHERTYPE_IPX                     = 0x8137\n\tETHERTYPE_IPXNEW                  = 0x8037\n\tETHERTYPE_KALPANA                 = 0x8582\n\tETHERTYPE_LANBRIDGE               = 0x8038\n\tETHERTYPE_LANPROBE                = 0x8888\n\tETHERTYPE_LAT                     = 0x6004\n\tETHERTYPE_LBACK                   = 0x9000\n\tETHERTYPE_LITTLE                  = 0x8060\n\tETHERTYPE_LLDP                    = 0x88cc\n\tETHERTYPE_LOGICRAFT               = 0x8148\n\tETHERTYPE_LOOPBACK                = 0x9000\n\tETHERTYPE_MACSEC                  = 0x88e5\n\tETHERTYPE_MATRA                   = 0x807a\n\tETHERTYPE_MAX                     = 0xffff\n\tETHERTYPE_MERIT                   = 0x807c\n\tETHERTYPE_MICP                    = 0x873a\n\tETHERTYPE_MOPDL                   = 0x6001\n\tETHERTYPE_MOPRC                   = 0x6002\n\tETHERTYPE_MOTOROLA                = 0x818d\n\tETHERTYPE_MPLS                    = 0x8847\n\tETHERTYPE_MPLS_MCAST              = 0x8848\n\tETHERTYPE_MUMPS                   = 0x813f\n\tETHERTYPE_NBPCC                   = 0x3c04\n\tETHERTYPE_NBPCLAIM                = 0x3c09\n\tETHERTYPE_NBPCLREQ                = 0x3c05\n\tETHERTYPE_NBPCLRSP                = 0x3c06\n\tETHERTYPE_NBPCREQ                 = 0x3c02\n\tETHERTYPE_NBPCRSP                 = 0x3c03\n\tETHERTYPE_NBPDG                   = 0x3c07\n\tETHERTYPE_NBPDGB                  = 0x3c08\n\tETHERTYPE_NBPDLTE                 = 0x3c0a\n\tETHERTYPE_NBPRAR                  = 0x3c0c\n\tETHERTYPE_NBPRAS                  = 0x3c0b\n\tETHERTYPE_NBPRST                  = 0x3c0d\n\tETHERTYPE_NBPSCD                  = 0x3c01\n\tETHERTYPE_NBPVCD                  = 0x3c00\n\tETHERTYPE_NBS                     = 0x802\n\tETHERTYPE_NCD                     = 0x8149\n\tETHERTYPE_NESTAR                  = 0x8006\n\tETHERTYPE_NETBEUI                 = 0x8191\n\tETHERTYPE_NHRP                    = 0x2001\n\tETHERTYPE_NOVELL                  = 0x8138\n\tETHERTYPE_NS                      = 0x600\n\tETHERTYPE_NSAT                    = 0x601\n\tETHERTYPE_NSCOMPAT                = 0x807\n\tETHERTYPE_NSH                     = 0x984f\n\tETHERTYPE_NTRAILER                = 0x10\n\tETHERTYPE_OS9                     = 0x7007\n\tETHERTYPE_OS9NET                  = 0x7009\n\tETHERTYPE_PACER                   = 0x80c6\n\tETHERTYPE_PBB                     = 0x88e7\n\tETHERTYPE_PCS                     = 0x4242\n\tETHERTYPE_PLANNING                = 0x8044\n\tETHERTYPE_PPP                     = 0x880b\n\tETHERTYPE_PPPOE                   = 0x8864\n\tETHERTYPE_PPPOEDISC               = 0x8863\n\tETHERTYPE_PRIMENTS                = 0x7031\n\tETHERTYPE_PUP                     = 0x200\n\tETHERTYPE_PUPAT                   = 0x200\n\tETHERTYPE_QINQ                    = 0x88a8\n\tETHERTYPE_RACAL                   = 0x7030\n\tETHERTYPE_RATIONAL                = 0x8150\n\tETHERTYPE_RAWFR                   = 0x6559\n\tETHERTYPE_RCL                     = 0x1995\n\tETHERTYPE_RDP                     = 0x8739\n\tETHERTYPE_RETIX                   = 0x80f2\n\tETHERTYPE_REVARP                  = 0x8035\n\tETHERTYPE_SCA                     = 0x6007\n\tETHERTYPE_SECTRA                  = 0x86db\n\tETHERTYPE_SECUREDATA              = 0x876d\n\tETHERTYPE_SGITW                   = 0x817e\n\tETHERTYPE_SG_BOUNCE               = 0x8016\n\tETHERTYPE_SG_DIAG                 = 0x8013\n\tETHERTYPE_SG_NETGAMES             = 0x8014\n\tETHERTYPE_SG_RESV                 = 0x8015\n\tETHERTYPE_SIMNET                  = 0x5208\n\tETHERTYPE_SLOW                    = 0x8809\n\tETHERTYPE_SNA                     = 0x80d5\n\tETHERTYPE_SNMP                    = 0x814c\n\tETHERTYPE_SONIX                   = 0xfaf5\n\tETHERTYPE_SPIDER                  = 0x809f\n\tETHERTYPE_SPRITE                  = 0x500\n\tETHERTYPE_STP                     = 0x8181\n\tETHERTYPE_TALARIS                 = 0x812b\n\tETHERTYPE_TALARISMC               = 0x852b\n\tETHERTYPE_TCPCOMP                 = 0x876b\n\tETHERTYPE_TCPSM                   = 0x9002\n\tETHERTYPE_TEC                     = 0x814f\n\tETHERTYPE_TIGAN                   = 0x802f\n\tETHERTYPE_TRAIL                   = 0x1000\n\tETHERTYPE_TRANSETHER              = 0x6558\n\tETHERTYPE_TYMSHARE                = 0x802e\n\tETHERTYPE_UBBST                   = 0x7005\n\tETHERTYPE_UBDEBUG                 = 0x900\n\tETHERTYPE_UBDIAGLOOP              = 0x7002\n\tETHERTYPE_UBDL                    = 0x7000\n\tETHERTYPE_UBNIU                   = 0x7001\n\tETHERTYPE_UBNMC                   = 0x7003\n\tETHERTYPE_VALID                   = 0x1600\n\tETHERTYPE_VARIAN                  = 0x80dd\n\tETHERTYPE_VAXELN                  = 0x803b\n\tETHERTYPE_VEECO                   = 0x8067\n\tETHERTYPE_VEXP                    = 0x805b\n\tETHERTYPE_VGLAB                   = 0x8131\n\tETHERTYPE_VINES                   = 0xbad\n\tETHERTYPE_VINESECHO               = 0xbaf\n\tETHERTYPE_VINESLOOP               = 0xbae\n\tETHERTYPE_VITAL                   = 0xff00\n\tETHERTYPE_VLAN                    = 0x8100\n\tETHERTYPE_VLTLMAN                 = 0x8080\n\tETHERTYPE_VPROD                   = 0x805c\n\tETHERTYPE_VURESERVED              = 0x8147\n\tETHERTYPE_WATERLOO                = 0x8130\n\tETHERTYPE_WELLFLEET               = 0x8103\n\tETHERTYPE_X25                     = 0x805\n\tETHERTYPE_X75                     = 0x801\n\tETHERTYPE_XNSSM                   = 0x9001\n\tETHERTYPE_XTP                     = 0x817d\n\tETHER_ADDR_LEN                    = 0x6\n\tETHER_ALIGN                       = 0x2\n\tETHER_CRC_LEN                     = 0x4\n\tETHER_CRC_POLY_BE                 = 0x4c11db6\n\tETHER_CRC_POLY_LE                 = 0xedb88320\n\tETHER_HDR_LEN                     = 0xe\n\tETHER_MAX_DIX_LEN                 = 0x600\n\tETHER_MAX_HARDMTU_LEN             = 0xff9b\n\tETHER_MAX_LEN                     = 0x5ee\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = -0x3\n\tEVFILT_DEVICE                     = -0x8\n\tEVFILT_EXCEPT                     = -0x9\n\tEVFILT_PROC                       = -0x5\n\tEVFILT_READ                       = -0x1\n\tEVFILT_SIGNAL                     = -0x6\n\tEVFILT_SYSCOUNT                   = 0x9\n\tEVFILT_TIMER                      = -0x7\n\tEVFILT_VNODE                      = -0x4\n\tEVFILT_WRITE                      = -0x2\n\tEVL_ENCAPLEN                      = 0x4\n\tEVL_PRIO_BITS                     = 0xd\n\tEVL_PRIO_MAX                      = 0x7\n\tEVL_VLID_MASK                     = 0xfff\n\tEVL_VLID_MAX                      = 0xffe\n\tEVL_VLID_MIN                      = 0x1\n\tEVL_VLID_NULL                     = 0x0\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_DISPATCH                       = 0x80\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_RECEIPT                        = 0x40\n\tEV_SYSFLAGS                       = 0xf800\n\tEXTA                              = 0x4b00\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x400\n\tFLUSHO                            = 0x800000\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0xa\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETOWN                          = 0x5\n\tF_ISATTY                          = 0xb\n\tF_OK                              = 0x0\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x8e52\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_STATICARP                     = 0x20\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BLUETOOTH                     = 0xf8\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf7\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DUMMY                         = 0xf1\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ECONET                        = 0xce\n\tIFT_ENC                           = 0xf4\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf3\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INFINIBAND                    = 0xc7\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LINEGROUP                     = 0xd2\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MBIM                          = 0xfa\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFLOW                         = 0xf9\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_PON155                        = 0xcf\n\tIFT_PON622                        = 0xd0\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPATM                       = 0xc5\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf2\n\tIFT_Q2931                         = 0xc9\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SIPSIG                        = 0xcc\n\tIFT_SIPTG                         = 0xcb\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TELINK                        = 0xc8\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VIRTUALTG                     = 0xca\n\tIFT_VOICEDID                      = 0xd5\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEEMFGD                    = 0xd3\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFGDEANA                  = 0xd4\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERCABLE                = 0xc6\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_WIREGUARD                     = 0xfb\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIN_RFC3021_HOST                   = 0x1\n\tIN_RFC3021_NET                    = 0xfffffffe\n\tIN_RFC3021_NSHIFT                 = 0x1f\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_DIVERT                    = 0x102\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x103\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_MPLS                      = 0x89\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_SCTP                      = 0x84\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_UDPLITE                   = 0x88\n\tIPV6_AUTH_LEVEL                   = 0x35\n\tIPV6_AUTOFLOWLABEL                = 0x3b\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_ESP_NETWORK_LEVEL            = 0x37\n\tIPV6_ESP_TRANS_LEVEL              = 0x36\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPCOMP_LEVEL                 = 0x3c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MINHOPCOUNT                  = 0x41\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_OPTIONS                      = 0x1\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PIPEX                        = 0x3f\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVDSTPORT                  = 0x40\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTABLE                       = 0x1021\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_AUTH_LEVEL                     = 0x14\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_ESP_NETWORK_LEVEL              = 0x16\n\tIP_ESP_TRANS_LEVEL                = 0x15\n\tIP_HDRINCL                        = 0x2\n\tIP_IPCOMP_LEVEL                   = 0x1d\n\tIP_IPDEFTTL                       = 0x25\n\tIP_IPSECFLOWINFO                  = 0x24\n\tIP_IPSEC_LOCAL_AUTH               = 0x1b\n\tIP_IPSEC_LOCAL_CRED               = 0x19\n\tIP_IPSEC_LOCAL_ID                 = 0x17\n\tIP_IPSEC_REMOTE_AUTH              = 0x1c\n\tIP_IPSEC_REMOTE_CRED              = 0x1a\n\tIP_IPSEC_REMOTE_ID                = 0x18\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0xfff\n\tIP_MF                             = 0x2000\n\tIP_MINTTL                         = 0x20\n\tIP_MIN_MEMBERSHIPS                = 0xf\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PIPEX                          = 0x22\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVDSTPORT                    = 0x21\n\tIP_RECVIF                         = 0x1e\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVRTABLE                     = 0x23\n\tIP_RECVTTL                        = 0x1f\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_RTABLE                         = 0x1021\n\tIP_SENDSRCADDR                    = 0x7\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tITIMER_PROF                       = 0x2\n\tITIMER_REAL                       = 0x0\n\tITIMER_VIRTUAL                    = 0x1\n\tIUCLC                             = 0x1000\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLCNT_OVERLOAD_FLUSH               = 0x6\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x6\n\tMADV_NORMAL                       = 0x0\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SPACEAVAIL                   = 0x5\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ANON                          = 0x1000\n\tMAP_ANONYMOUS                     = 0x1000\n\tMAP_CONCEAL                       = 0x8000\n\tMAP_COPY                          = 0x2\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_FLAGMASK                      = 0xfff7\n\tMAP_HASSEMAPHORE                  = 0x0\n\tMAP_INHERIT                       = 0x0\n\tMAP_INHERIT_COPY                  = 0x1\n\tMAP_INHERIT_NONE                  = 0x2\n\tMAP_INHERIT_SHARE                 = 0x0\n\tMAP_INHERIT_ZERO                  = 0x3\n\tMAP_NOEXTEND                      = 0x0\n\tMAP_NORESERVE                     = 0x0\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x0\n\tMAP_SHARED                        = 0x1\n\tMAP_STACK                         = 0x4000\n\tMAP_TRYFIXED                      = 0x0\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DELEXPORT                     = 0x20000\n\tMNT_DOOMED                        = 0x8000000\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_FORCE                         = 0x80000\n\tMNT_LAZY                          = 0x3\n\tMNT_LOCAL                         = 0x1000\n\tMNT_NOATIME                       = 0x8000\n\tMNT_NODEV                         = 0x10\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOPERM                        = 0x20\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOWAIT                        = 0x2\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x4000000\n\tMNT_STALLED                       = 0x100000\n\tMNT_SWAPPABLE                     = 0x200000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0x400ffff\n\tMNT_WAIT                          = 0x1\n\tMNT_WANTRDWR                      = 0x2000000\n\tMNT_WXALLOWED                     = 0x800\n\tMOUNT_AFS                         = \"afs\"\n\tMOUNT_CD9660                      = \"cd9660\"\n\tMOUNT_EXT2FS                      = \"ext2fs\"\n\tMOUNT_FFS                         = \"ffs\"\n\tMOUNT_FUSEFS                      = \"fuse\"\n\tMOUNT_MFS                         = \"mfs\"\n\tMOUNT_MSDOS                       = \"msdos\"\n\tMOUNT_NCPFS                       = \"ncpfs\"\n\tMOUNT_NFS                         = \"nfs\"\n\tMOUNT_NTFS                        = \"ntfs\"\n\tMOUNT_TMPFS                       = \"tmpfs\"\n\tMOUNT_UDF                         = \"udf\"\n\tMOUNT_UFS                         = \"ffs\"\n\tMSG_BCAST                         = 0x100\n\tMSG_CMSG_CLOEXEC                  = 0x800\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOR                           = 0x8\n\tMSG_MCAST                         = 0x200\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_TRUNC                         = 0x10\n\tMSG_WAITALL                       = 0x40\n\tMSG_WAITFORONE                    = 0x1000\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x4\n\tMS_SYNC                           = 0x2\n\tNAME_MAX                          = 0xff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x3\n\tNET_RT_IFNAMES                    = 0x6\n\tNET_RT_MAXID                      = 0x8\n\tNET_RT_SOURCE                     = 0x7\n\tNET_RT_STATS                      = 0x4\n\tNET_RT_TABLE                      = 0x5\n\tNFDBITS                           = 0x20\n\tNOFLSH                            = 0x80000000\n\tNOKERNINFO                        = 0x2000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHANGE                       = 0x1\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EOF                          = 0x2\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_OOB                          = 0x4\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_TRUNCATE                     = 0x80\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOLCUC                             = 0x20\n\tONLCR                             = 0x2\n\tONLRET                            = 0x80\n\tONOCR                             = 0x40\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tOXTABS                            = 0x4\n\tO_ACCMODE                         = 0x3\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x10000\n\tO_CREAT                           = 0x200\n\tO_DIRECTORY                       = 0x20000\n\tO_DSYNC                           = 0x80\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_RSYNC                           = 0x80\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPF_FLUSH                          = 0x1\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BFD                          = 0xb\n\tRTAX_BRD                          = 0x7\n\tRTAX_DNS                          = 0xc\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_LABEL                        = 0xa\n\tRTAX_MAX                          = 0xf\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_SEARCH                       = 0xe\n\tRTAX_SRC                          = 0x8\n\tRTAX_SRCMASK                      = 0x9\n\tRTAX_STATIC                       = 0xd\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BFD                           = 0x800\n\tRTA_BRD                           = 0x80\n\tRTA_DNS                           = 0x1000\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_LABEL                         = 0x400\n\tRTA_NETMASK                       = 0x4\n\tRTA_SEARCH                        = 0x4000\n\tRTA_SRC                           = 0x100\n\tRTA_SRCMASK                       = 0x200\n\tRTA_STATIC                        = 0x2000\n\tRTF_ANNOUNCE                      = 0x4000\n\tRTF_BFD                           = 0x1000000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_BROADCAST                     = 0x400000\n\tRTF_CACHED                        = 0x20000\n\tRTF_CLONED                        = 0x10000\n\tRTF_CLONING                       = 0x100\n\tRTF_CONNECTED                     = 0x800000\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_FMASK                         = 0x110fc08\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_LOCAL                         = 0x200000\n\tRTF_MODIFIED                      = 0x20\n\tRTF_MPATH                         = 0x40000\n\tRTF_MPLS                          = 0x100000\n\tRTF_MULTICAST                     = 0x200\n\tRTF_PERMANENT_ARP                 = 0x2000\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_PROTO3                        = 0x2000\n\tRTF_REJECT                        = 0x8\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_USETRAILERS                   = 0x8000\n\tRTM_80211INFO                     = 0x15\n\tRTM_ADD                           = 0x1\n\tRTM_BFD                           = 0x12\n\tRTM_CHANGE                        = 0x3\n\tRTM_CHGADDRATTR                   = 0x14\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_DESYNC                        = 0x10\n\tRTM_GET                           = 0x4\n\tRTM_IFANNOUNCE                    = 0xf\n\tRTM_IFINFO                        = 0xe\n\tRTM_INVALIDATE                    = 0x11\n\tRTM_LOSING                        = 0x5\n\tRTM_MAXSIZE                       = 0x800\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_PROPOSAL                      = 0x13\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_SOURCE                        = 0x16\n\tRTM_VERSION                       = 0x5\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRT_TABLEID_BITS                   = 0x8\n\tRT_TABLEID_MASK                   = 0xff\n\tRT_TABLEID_MAX                    = 0xff\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tRUSAGE_THREAD                     = 0x1\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x4\n\tSEEK_CUR                          = 0x1\n\tSEEK_END                          = 0x2\n\tSEEK_SET                          = 0x0\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80206931\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCAIFGROUP                      = 0x80246987\n\tSIOCATMARK                        = 0x40047307\n\tSIOCBRDGADD                       = 0x8060693c\n\tSIOCBRDGADDL                      = 0x80606949\n\tSIOCBRDGADDS                      = 0x80606941\n\tSIOCBRDGARL                       = 0x808c694d\n\tSIOCBRDGDADDR                     = 0x81286947\n\tSIOCBRDGDEL                       = 0x8060693d\n\tSIOCBRDGDELS                      = 0x80606942\n\tSIOCBRDGFLUSH                     = 0x80606948\n\tSIOCBRDGFRL                       = 0x808c694e\n\tSIOCBRDGGCACHE                    = 0xc0146941\n\tSIOCBRDGGFD                       = 0xc0146952\n\tSIOCBRDGGHT                       = 0xc0146951\n\tSIOCBRDGGIFFLGS                   = 0xc060693e\n\tSIOCBRDGGMA                       = 0xc0146953\n\tSIOCBRDGGPARAM                    = 0xc0406958\n\tSIOCBRDGGPRI                      = 0xc0146950\n\tSIOCBRDGGRL                       = 0xc028694f\n\tSIOCBRDGGTO                       = 0xc0146946\n\tSIOCBRDGIFS                       = 0xc0606942\n\tSIOCBRDGRTS                       = 0xc0186943\n\tSIOCBRDGSADDR                     = 0xc1286944\n\tSIOCBRDGSCACHE                    = 0x80146940\n\tSIOCBRDGSFD                       = 0x80146952\n\tSIOCBRDGSHT                       = 0x80146951\n\tSIOCBRDGSIFCOST                   = 0x80606955\n\tSIOCBRDGSIFFLGS                   = 0x8060693f\n\tSIOCBRDGSIFPRIO                   = 0x80606954\n\tSIOCBRDGSIFPROT                   = 0x8060694a\n\tSIOCBRDGSMA                       = 0x80146953\n\tSIOCBRDGSPRI                      = 0x80146950\n\tSIOCBRDGSPROTO                    = 0x8014695a\n\tSIOCBRDGSTO                       = 0x80146945\n\tSIOCBRDGSTXHC                     = 0x80146959\n\tSIOCDELLABEL                      = 0x80206997\n\tSIOCDELMULTI                      = 0x80206932\n\tSIOCDIFADDR                       = 0x80206919\n\tSIOCDIFGROUP                      = 0x80246989\n\tSIOCDIFPARENT                     = 0x802069b4\n\tSIOCDIFPHYADDR                    = 0x80206949\n\tSIOCDPWE3NEIGHBOR                 = 0x802069de\n\tSIOCDVNETID                       = 0x802069af\n\tSIOCGETKALIVE                     = 0xc01869a4\n\tSIOCGETLABEL                      = 0x8020699a\n\tSIOCGETMPWCFG                     = 0xc02069ae\n\tSIOCGETPFLOW                      = 0xc02069fe\n\tSIOCGETPFSYNC                     = 0xc02069f8\n\tSIOCGETSGCNT                      = 0xc0147534\n\tSIOCGETVIFCNT                     = 0xc0147533\n\tSIOCGETVLAN                       = 0xc0206990\n\tSIOCGIFADDR                       = 0xc0206921\n\tSIOCGIFBRDADDR                    = 0xc0206923\n\tSIOCGIFCONF                       = 0xc0086924\n\tSIOCGIFDATA                       = 0xc020691b\n\tSIOCGIFDESCR                      = 0xc0206981\n\tSIOCGIFDSTADDR                    = 0xc0206922\n\tSIOCGIFFLAGS                      = 0xc0206911\n\tSIOCGIFGATTR                      = 0xc024698b\n\tSIOCGIFGENERIC                    = 0xc020693a\n\tSIOCGIFGLIST                      = 0xc024698d\n\tSIOCGIFGMEMB                      = 0xc024698a\n\tSIOCGIFGROUP                      = 0xc0246988\n\tSIOCGIFHARDMTU                    = 0xc02069a5\n\tSIOCGIFLLPRIO                     = 0xc02069b6\n\tSIOCGIFMEDIA                      = 0xc0386938\n\tSIOCGIFMETRIC                     = 0xc0206917\n\tSIOCGIFMTU                        = 0xc020697e\n\tSIOCGIFNETMASK                    = 0xc0206925\n\tSIOCGIFPAIR                       = 0xc02069b1\n\tSIOCGIFPARENT                     = 0xc02069b3\n\tSIOCGIFPRIORITY                   = 0xc020699c\n\tSIOCGIFRDOMAIN                    = 0xc02069a0\n\tSIOCGIFRTLABEL                    = 0xc0206983\n\tSIOCGIFRXR                        = 0x802069aa\n\tSIOCGIFSFFPAGE                    = 0xc1126939\n\tSIOCGIFXFLAGS                     = 0xc020699e\n\tSIOCGLIFPHYADDR                   = 0xc218694b\n\tSIOCGLIFPHYDF                     = 0xc02069c2\n\tSIOCGLIFPHYECN                    = 0xc02069c8\n\tSIOCGLIFPHYRTABLE                 = 0xc02069a2\n\tSIOCGLIFPHYTTL                    = 0xc02069a9\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGPWE3                         = 0xc0206998\n\tSIOCGPWE3CTRLWORD                 = 0xc02069dc\n\tSIOCGPWE3FAT                      = 0xc02069dd\n\tSIOCGPWE3NEIGHBOR                 = 0xc21869de\n\tSIOCGRXHPRIO                      = 0xc02069db\n\tSIOCGSPPPPARAMS                   = 0xc0206994\n\tSIOCGTXHPRIO                      = 0xc02069c6\n\tSIOCGUMBINFO                      = 0xc02069be\n\tSIOCGUMBPARAM                     = 0xc02069c0\n\tSIOCGVH                           = 0xc02069f6\n\tSIOCGVNETFLOWID                   = 0xc02069c4\n\tSIOCGVNETID                       = 0xc02069a7\n\tSIOCIFAFATTACH                    = 0x801169ab\n\tSIOCIFAFDETACH                    = 0x801169ac\n\tSIOCIFCREATE                      = 0x8020697a\n\tSIOCIFDESTROY                     = 0x80206979\n\tSIOCIFGCLONERS                    = 0xc00c6978\n\tSIOCSETKALIVE                     = 0x801869a3\n\tSIOCSETLABEL                      = 0x80206999\n\tSIOCSETMPWCFG                     = 0x802069ad\n\tSIOCSETPFLOW                      = 0x802069fd\n\tSIOCSETPFSYNC                     = 0x802069f7\n\tSIOCSETVLAN                       = 0x8020698f\n\tSIOCSIFADDR                       = 0x8020690c\n\tSIOCSIFBRDADDR                    = 0x80206913\n\tSIOCSIFDESCR                      = 0x80206980\n\tSIOCSIFDSTADDR                    = 0x8020690e\n\tSIOCSIFFLAGS                      = 0x80206910\n\tSIOCSIFGATTR                      = 0x8024698c\n\tSIOCSIFGENERIC                    = 0x80206939\n\tSIOCSIFLLADDR                     = 0x8020691f\n\tSIOCSIFLLPRIO                     = 0x802069b5\n\tSIOCSIFMEDIA                      = 0xc0206937\n\tSIOCSIFMETRIC                     = 0x80206918\n\tSIOCSIFMTU                        = 0x8020697f\n\tSIOCSIFNETMASK                    = 0x80206916\n\tSIOCSIFPAIR                       = 0x802069b0\n\tSIOCSIFPARENT                     = 0x802069b2\n\tSIOCSIFPRIORITY                   = 0x8020699b\n\tSIOCSIFRDOMAIN                    = 0x8020699f\n\tSIOCSIFRTLABEL                    = 0x80206982\n\tSIOCSIFXFLAGS                     = 0x8020699d\n\tSIOCSLIFPHYADDR                   = 0x8218694a\n\tSIOCSLIFPHYDF                     = 0x802069c1\n\tSIOCSLIFPHYECN                    = 0x802069c7\n\tSIOCSLIFPHYRTABLE                 = 0x802069a1\n\tSIOCSLIFPHYTTL                    = 0x802069a8\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSPWE3CTRLWORD                 = 0x802069dc\n\tSIOCSPWE3FAT                      = 0x802069dd\n\tSIOCSPWE3NEIGHBOR                 = 0x821869de\n\tSIOCSRXHPRIO                      = 0x802069db\n\tSIOCSSPPPPARAMS                   = 0x80206993\n\tSIOCSTXHPRIO                      = 0x802069c5\n\tSIOCSUMBPARAM                     = 0x802069bf\n\tSIOCSVH                           = 0xc02069f5\n\tSIOCSVNETFLOWID                   = 0x802069c3\n\tSIOCSVNETID                       = 0x802069a6\n\tSOCK_CLOEXEC                      = 0x8000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_DNS                          = 0x1000\n\tSOCK_NONBLOCK                     = 0x4000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_BINDANY                        = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DOMAIN                         = 0x1024\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NETPROC                        = 0x1020\n\tSO_OOBINLINE                      = 0x100\n\tSO_PEERCRED                       = 0x1022\n\tSO_PROTOCOL                       = 0x1025\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x1006\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_RTABLE                         = 0x1021\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x1005\n\tSO_SPLICE                         = 0x1023\n\tSO_TIMESTAMP                      = 0x800\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tSO_ZEROIZE                        = 0x2000\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tTCIFLUSH                          = 0x1\n\tTCIOFF                            = 0x3\n\tTCIOFLUSH                         = 0x3\n\tTCION                             = 0x4\n\tTCOFLUSH                          = 0x2\n\tTCOOFF                            = 0x1\n\tTCOON                             = 0x2\n\tTCPOPT_EOL                        = 0x0\n\tTCPOPT_MAXSEG                     = 0x2\n\tTCPOPT_NOP                        = 0x1\n\tTCPOPT_SACK                       = 0x5\n\tTCPOPT_SACK_HDR                   = 0x1010500\n\tTCPOPT_SACK_PERMITTED             = 0x4\n\tTCPOPT_SACK_PERMIT_HDR            = 0x1010402\n\tTCPOPT_SIGNATURE                  = 0x13\n\tTCPOPT_TIMESTAMP                  = 0x8\n\tTCPOPT_TSTAMP_HDR                 = 0x101080a\n\tTCPOPT_WINDOW                     = 0x3\n\tTCP_INFO                          = 0x9\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_SACK                      = 0x3\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MD5SIG                        = 0x4\n\tTCP_MSS                           = 0x200\n\tTCP_NODELAY                       = 0x1\n\tTCP_NOPUSH                        = 0x10\n\tTCP_SACKHOLE_LIMIT                = 0x80\n\tTCP_SACK_ENABLE                   = 0x8\n\tTCSAFLUSH                         = 0x2\n\tTIMER_ABSTIME                     = 0x1\n\tTIMER_RELTIME                     = 0x0\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCHKVERAUTH                    = 0x2000741e\n\tTIOCCLRVERAUTH                    = 0x2000741d\n\tTIOCCONS                          = 0x80047462\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLAG_CLOCAL                   = 0x2\n\tTIOCFLAG_CRTSCTS                  = 0x4\n\tTIOCFLAG_MDMBUF                   = 0x8\n\tTIOCFLAG_PPS                      = 0x10\n\tTIOCFLAG_SOFTCAR                  = 0x1\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGFLAGS                        = 0x4004745d\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGSID                          = 0x40047463\n\tTIOCGTSTAMP                       = 0x4010745b\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMODG                          = 0x4004746a\n\tTIOCMODS                          = 0x8004746d\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSETVERAUTH                    = 0x8004741c\n\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x8004745f\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x20007465\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSTSTAMP                       = 0x8008745a\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\n\tTIOCUCNTL_CBRK                    = 0x7a\n\tTIOCUCNTL_SBRK                    = 0x7b\n\tTOSTOP                            = 0x400000\n\tUTIME_NOW                         = -0x2\n\tUTIME_OMIT                        = -0x1\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVM_ANONMIN                        = 0x7\n\tVM_LOADAVG                        = 0x2\n\tVM_MALLOC_CONF                    = 0xc\n\tVM_MAXID                          = 0xd\n\tVM_MAXSLP                         = 0xa\n\tVM_METER                          = 0x1\n\tVM_NKMEMPAGES                     = 0x6\n\tVM_PSSTRINGS                      = 0x3\n\tVM_SWAPENCRYPT                    = 0x5\n\tVM_USPACE                         = 0xb\n\tVM_UVMEXP                         = 0x4\n\tVM_VNODEMIN                       = 0x9\n\tVM_VTEXTMIN                       = 0x8\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWALTSIG                           = 0x4\n\tWCONTINUED                        = 0x8\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\n\tWUNTRACED                         = 0x2\n\tXCASE                             = 0x1000000\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x5c)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x58)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x59)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEIPSEC          = syscall.Errno(0x52)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x5f)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMEDIUMTYPE     = syscall.Errno(0x56)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x53)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOMEDIUM       = syscall.Errno(0x55)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x5a)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5d)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x5b)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x57)\n\tEOWNERDEAD      = syscall.Errno(0x5e)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5f)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disk quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC program not available\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIPSEC\", \"IPsec processing failure\"},\n\t{83, \"ENOATTR\", \"attribute not found\"},\n\t{84, \"EILSEQ\", \"illegal byte sequence\"},\n\t{85, \"ENOMEDIUM\", \"no medium found\"},\n\t{86, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{87, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{88, \"ECANCELED\", \"operation canceled\"},\n\t{89, \"EIDRM\", \"identifier removed\"},\n\t{90, \"ENOMSG\", \"no message of desired type\"},\n\t{91, \"ENOTSUP\", \"not supported\"},\n\t{92, \"EBADMSG\", \"bad message\"},\n\t{93, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{94, \"EOWNERDEAD\", \"previous owner died\"},\n\t{95, \"ELAST\", \"protocol error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"thread AST\"},\n\t{28672, \"SIGSTKSZ\", \"unknown signal\"},\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && openbsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_BLUETOOTH                      = 0x20\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_ENCAP                          = 0x1c\n\tAF_HYLINK                         = 0xf\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x18\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_KEY                            = 0x1e\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x24\n\tAF_MPLS                           = 0x21\n\tAF_NATM                           = 0x1b\n\tAF_NS                             = 0x6\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x11\n\tAF_SIP                            = 0x1d\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tALTWERASE                         = 0x200\n\tARPHRD_ETHER                      = 0x1\n\tARPHRD_FRELAY                     = 0xf\n\tARPHRD_IEEE1394                   = 0x18\n\tARPHRD_IEEE802                    = 0x6\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB9600                             = 0x2580\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDIRFILT                      = 0x4004427c\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc010427b\n\tBIOCGETIF                         = 0x4020426b\n\tBIOCGFILDROP                      = 0x40044278\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRSIG                         = 0x40044273\n\tBIOCGRTIMEOUT                     = 0x4010426e\n\tBIOCGSTATS                        = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCLOCK                          = 0x20004276\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDIRFILT                      = 0x8004427d\n\tBIOCSDLT                          = 0x8004427a\n\tBIOCSETF                          = 0x80104267\n\tBIOCSETIF                         = 0x8020426c\n\tBIOCSETWF                         = 0x80104277\n\tBIOCSFILDROP                      = 0x80044279\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRSIG                         = 0x80044272\n\tBIOCSRTIMEOUT                     = 0x8010426d\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DIRECTION_IN                  = 0x1\n\tBPF_DIRECTION_OUT                 = 0x2\n\tBPF_DIV                           = 0x30\n\tBPF_FILDROP_CAPTURE               = 0x1\n\tBPF_FILDROP_DROP                  = 0x2\n\tBPF_FILDROP_PASS                  = 0x0\n\tBPF_F_DIR_IN                      = 0x10\n\tBPF_F_DIR_MASK                    = 0x30\n\tBPF_F_DIR_OUT                     = 0x20\n\tBPF_F_DIR_SHIFT                   = 0x4\n\tBPF_F_FLOWID                      = 0x8\n\tBPF_F_PRI_MASK                    = 0x7\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x200000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RND                           = 0xc0\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLOCK_BOOTTIME                    = 0x6\n\tCLOCK_MONOTONIC                   = 0x3\n\tCLOCK_PROCESS_CPUTIME_ID          = 0x2\n\tCLOCK_REALTIME                    = 0x0\n\tCLOCK_THREAD_CPUTIME_ID           = 0x4\n\tCLOCK_UPTIME                      = 0x5\n\tCPUSTATES                         = 0x6\n\tCP_IDLE                           = 0x5\n\tCP_INTR                           = 0x4\n\tCP_NICE                           = 0x1\n\tCP_SPIN                           = 0x3\n\tCP_SYS                            = 0x2\n\tCP_USER                           = 0x0\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x10000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0xff\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tDIOCADDQUEUE                      = 0xc110445d\n\tDIOCADDRULE                       = 0xcd604404\n\tDIOCADDSTATE                      = 0xc1084425\n\tDIOCCHANGERULE                    = 0xcd60441a\n\tDIOCCLRIFFLAG                     = 0xc028445a\n\tDIOCCLRSRCNODES                   = 0x20004455\n\tDIOCCLRSTATES                     = 0xc0e04412\n\tDIOCCLRSTATUS                     = 0xc0284416\n\tDIOCGETLIMIT                      = 0xc0084427\n\tDIOCGETQSTATS                     = 0xc1204460\n\tDIOCGETQUEUE                      = 0xc110445f\n\tDIOCGETQUEUES                     = 0xc110445e\n\tDIOCGETRULE                       = 0xcd604407\n\tDIOCGETRULES                      = 0xcd604406\n\tDIOCGETRULESET                    = 0xc444443b\n\tDIOCGETRULESETS                   = 0xc444443a\n\tDIOCGETSRCNODES                   = 0xc0104454\n\tDIOCGETSTATE                      = 0xc1084413\n\tDIOCGETSTATES                     = 0xc0104419\n\tDIOCGETSTATUS                     = 0xc1e84415\n\tDIOCGETSYNFLWATS                  = 0xc0084463\n\tDIOCGETTIMEOUT                    = 0xc008441e\n\tDIOCIGETIFACES                    = 0xc0284457\n\tDIOCKILLSRCNODES                  = 0xc080445b\n\tDIOCKILLSTATES                    = 0xc0e04429\n\tDIOCNATLOOK                       = 0xc0504417\n\tDIOCOSFPADD                       = 0xc088444f\n\tDIOCOSFPFLUSH                     = 0x2000444e\n\tDIOCOSFPGET                       = 0xc0884450\n\tDIOCRADDADDRS                     = 0xc4504443\n\tDIOCRADDTABLES                    = 0xc450443d\n\tDIOCRCLRADDRS                     = 0xc4504442\n\tDIOCRCLRASTATS                    = 0xc4504448\n\tDIOCRCLRTABLES                    = 0xc450443c\n\tDIOCRCLRTSTATS                    = 0xc4504441\n\tDIOCRDELADDRS                     = 0xc4504444\n\tDIOCRDELTABLES                    = 0xc450443e\n\tDIOCRGETADDRS                     = 0xc4504446\n\tDIOCRGETASTATS                    = 0xc4504447\n\tDIOCRGETTABLES                    = 0xc450443f\n\tDIOCRGETTSTATS                    = 0xc4504440\n\tDIOCRINADEFINE                    = 0xc450444d\n\tDIOCRSETADDRS                     = 0xc4504445\n\tDIOCRSETTFLAGS                    = 0xc450444a\n\tDIOCRTSTADDRS                     = 0xc4504449\n\tDIOCSETDEBUG                      = 0xc0044418\n\tDIOCSETHOSTID                     = 0xc0044456\n\tDIOCSETIFFLAG                     = 0xc0284459\n\tDIOCSETLIMIT                      = 0xc0084428\n\tDIOCSETREASS                      = 0xc004445c\n\tDIOCSETSTATUSIF                   = 0xc0284414\n\tDIOCSETSYNCOOKIES                 = 0xc0014462\n\tDIOCSETSYNFLWATS                  = 0xc0084461\n\tDIOCSETTIMEOUT                    = 0xc008441d\n\tDIOCSTART                         = 0x20004401\n\tDIOCSTOP                          = 0x20004402\n\tDIOCXBEGIN                        = 0xc0104451\n\tDIOCXCOMMIT                       = 0xc0104452\n\tDIOCXROLLBACK                     = 0xc0104453\n\tDLT_ARCNET                        = 0x7\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AX25                          = 0x3\n\tDLT_CHAOS                         = 0x5\n\tDLT_C_HDLC                        = 0x68\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0xd\n\tDLT_FDDI                          = 0xa\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_LOOP                          = 0xc\n\tDLT_MPLS                          = 0xdb\n\tDLT_NULL                          = 0x0\n\tDLT_OPENFLOW                      = 0x10b\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0x10\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PRONET                        = 0x4\n\tDLT_RAW                           = 0xe\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xf\n\tDLT_USBPCAP                       = 0xf9\n\tDLT_USER0                         = 0x93\n\tDLT_USER1                         = 0x94\n\tDLT_USER10                        = 0x9d\n\tDLT_USER11                        = 0x9e\n\tDLT_USER12                        = 0x9f\n\tDLT_USER13                        = 0xa0\n\tDLT_USER14                        = 0xa1\n\tDLT_USER15                        = 0xa2\n\tDLT_USER2                         = 0x95\n\tDLT_USER3                         = 0x96\n\tDLT_USER4                         = 0x97\n\tDLT_USER5                         = 0x98\n\tDLT_USER6                         = 0x99\n\tDLT_USER7                         = 0x9a\n\tDLT_USER8                         = 0x9b\n\tDLT_USER9                         = 0x9c\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEMT_TAGOVF                        = 0x1\n\tEMUL_ENABLED                      = 0x1\n\tEMUL_NATIVE                       = 0x2\n\tENDRUNDISC                        = 0x9\n\tETH64_8021_RSVD_MASK              = 0xfffffffffff0\n\tETH64_8021_RSVD_PREFIX            = 0x180c2000000\n\tETHERMIN                          = 0x2e\n\tETHERMTU                          = 0x5dc\n\tETHERTYPE_8023                    = 0x4\n\tETHERTYPE_AARP                    = 0x80f3\n\tETHERTYPE_ACCTON                  = 0x8390\n\tETHERTYPE_AEONIC                  = 0x8036\n\tETHERTYPE_ALPHA                   = 0x814a\n\tETHERTYPE_AMBER                   = 0x6008\n\tETHERTYPE_AMOEBA                  = 0x8145\n\tETHERTYPE_AOE                     = 0x88a2\n\tETHERTYPE_APOLLO                  = 0x80f7\n\tETHERTYPE_APOLLODOMAIN            = 0x8019\n\tETHERTYPE_APPLETALK               = 0x809b\n\tETHERTYPE_APPLITEK                = 0x80c7\n\tETHERTYPE_ARGONAUT                = 0x803a\n\tETHERTYPE_ARP                     = 0x806\n\tETHERTYPE_AT                      = 0x809b\n\tETHERTYPE_ATALK                   = 0x809b\n\tETHERTYPE_ATOMIC                  = 0x86df\n\tETHERTYPE_ATT                     = 0x8069\n\tETHERTYPE_ATTSTANFORD             = 0x8008\n\tETHERTYPE_AUTOPHON                = 0x806a\n\tETHERTYPE_AXIS                    = 0x8856\n\tETHERTYPE_BCLOOP                  = 0x9003\n\tETHERTYPE_BOFL                    = 0x8102\n\tETHERTYPE_CABLETRON               = 0x7034\n\tETHERTYPE_CHAOS                   = 0x804\n\tETHERTYPE_COMDESIGN               = 0x806c\n\tETHERTYPE_COMPUGRAPHIC            = 0x806d\n\tETHERTYPE_COUNTERPOINT            = 0x8062\n\tETHERTYPE_CRONUS                  = 0x8004\n\tETHERTYPE_CRONUSVLN               = 0x8003\n\tETHERTYPE_DCA                     = 0x1234\n\tETHERTYPE_DDE                     = 0x807b\n\tETHERTYPE_DEBNI                   = 0xaaaa\n\tETHERTYPE_DECAM                   = 0x8048\n\tETHERTYPE_DECCUST                 = 0x6006\n\tETHERTYPE_DECDIAG                 = 0x6005\n\tETHERTYPE_DECDNS                  = 0x803c\n\tETHERTYPE_DECDTS                  = 0x803e\n\tETHERTYPE_DECEXPER                = 0x6000\n\tETHERTYPE_DECLAST                 = 0x8041\n\tETHERTYPE_DECLTM                  = 0x803f\n\tETHERTYPE_DECMUMPS                = 0x6009\n\tETHERTYPE_DECNETBIOS              = 0x8040\n\tETHERTYPE_DELTACON                = 0x86de\n\tETHERTYPE_DIDDLE                  = 0x4321\n\tETHERTYPE_DLOG1                   = 0x660\n\tETHERTYPE_DLOG2                   = 0x661\n\tETHERTYPE_DN                      = 0x6003\n\tETHERTYPE_DOGFIGHT                = 0x1989\n\tETHERTYPE_DSMD                    = 0x8039\n\tETHERTYPE_EAPOL                   = 0x888e\n\tETHERTYPE_ECMA                    = 0x803\n\tETHERTYPE_ENCRYPT                 = 0x803d\n\tETHERTYPE_ES                      = 0x805d\n\tETHERTYPE_EXCELAN                 = 0x8010\n\tETHERTYPE_EXPERDATA               = 0x8049\n\tETHERTYPE_FLIP                    = 0x8146\n\tETHERTYPE_FLOWCONTROL             = 0x8808\n\tETHERTYPE_FRARP                   = 0x808\n\tETHERTYPE_GENDYN                  = 0x8068\n\tETHERTYPE_HAYES                   = 0x8130\n\tETHERTYPE_HIPPI_FP                = 0x8180\n\tETHERTYPE_HITACHI                 = 0x8820\n\tETHERTYPE_HP                      = 0x8005\n\tETHERTYPE_IEEEPUP                 = 0xa00\n\tETHERTYPE_IEEEPUPAT               = 0xa01\n\tETHERTYPE_IMLBL                   = 0x4c42\n\tETHERTYPE_IMLBLDIAG               = 0x424c\n\tETHERTYPE_IP                      = 0x800\n\tETHERTYPE_IPAS                    = 0x876c\n\tETHERTYPE_IPV6                    = 0x86dd\n\tETHERTYPE_IPX                     = 0x8137\n\tETHERTYPE_IPXNEW                  = 0x8037\n\tETHERTYPE_KALPANA                 = 0x8582\n\tETHERTYPE_LANBRIDGE               = 0x8038\n\tETHERTYPE_LANPROBE                = 0x8888\n\tETHERTYPE_LAT                     = 0x6004\n\tETHERTYPE_LBACK                   = 0x9000\n\tETHERTYPE_LITTLE                  = 0x8060\n\tETHERTYPE_LLDP                    = 0x88cc\n\tETHERTYPE_LOGICRAFT               = 0x8148\n\tETHERTYPE_LOOPBACK                = 0x9000\n\tETHERTYPE_MACSEC                  = 0x88e5\n\tETHERTYPE_MATRA                   = 0x807a\n\tETHERTYPE_MAX                     = 0xffff\n\tETHERTYPE_MERIT                   = 0x807c\n\tETHERTYPE_MICP                    = 0x873a\n\tETHERTYPE_MOPDL                   = 0x6001\n\tETHERTYPE_MOPRC                   = 0x6002\n\tETHERTYPE_MOTOROLA                = 0x818d\n\tETHERTYPE_MPLS                    = 0x8847\n\tETHERTYPE_MPLS_MCAST              = 0x8848\n\tETHERTYPE_MUMPS                   = 0x813f\n\tETHERTYPE_NBPCC                   = 0x3c04\n\tETHERTYPE_NBPCLAIM                = 0x3c09\n\tETHERTYPE_NBPCLREQ                = 0x3c05\n\tETHERTYPE_NBPCLRSP                = 0x3c06\n\tETHERTYPE_NBPCREQ                 = 0x3c02\n\tETHERTYPE_NBPCRSP                 = 0x3c03\n\tETHERTYPE_NBPDG                   = 0x3c07\n\tETHERTYPE_NBPDGB                  = 0x3c08\n\tETHERTYPE_NBPDLTE                 = 0x3c0a\n\tETHERTYPE_NBPRAR                  = 0x3c0c\n\tETHERTYPE_NBPRAS                  = 0x3c0b\n\tETHERTYPE_NBPRST                  = 0x3c0d\n\tETHERTYPE_NBPSCD                  = 0x3c01\n\tETHERTYPE_NBPVCD                  = 0x3c00\n\tETHERTYPE_NBS                     = 0x802\n\tETHERTYPE_NCD                     = 0x8149\n\tETHERTYPE_NESTAR                  = 0x8006\n\tETHERTYPE_NETBEUI                 = 0x8191\n\tETHERTYPE_NHRP                    = 0x2001\n\tETHERTYPE_NOVELL                  = 0x8138\n\tETHERTYPE_NS                      = 0x600\n\tETHERTYPE_NSAT                    = 0x601\n\tETHERTYPE_NSCOMPAT                = 0x807\n\tETHERTYPE_NSH                     = 0x984f\n\tETHERTYPE_NTRAILER                = 0x10\n\tETHERTYPE_OS9                     = 0x7007\n\tETHERTYPE_OS9NET                  = 0x7009\n\tETHERTYPE_PACER                   = 0x80c6\n\tETHERTYPE_PBB                     = 0x88e7\n\tETHERTYPE_PCS                     = 0x4242\n\tETHERTYPE_PLANNING                = 0x8044\n\tETHERTYPE_PPP                     = 0x880b\n\tETHERTYPE_PPPOE                   = 0x8864\n\tETHERTYPE_PPPOEDISC               = 0x8863\n\tETHERTYPE_PRIMENTS                = 0x7031\n\tETHERTYPE_PUP                     = 0x200\n\tETHERTYPE_PUPAT                   = 0x200\n\tETHERTYPE_QINQ                    = 0x88a8\n\tETHERTYPE_RACAL                   = 0x7030\n\tETHERTYPE_RATIONAL                = 0x8150\n\tETHERTYPE_RAWFR                   = 0x6559\n\tETHERTYPE_RCL                     = 0x1995\n\tETHERTYPE_RDP                     = 0x8739\n\tETHERTYPE_RETIX                   = 0x80f2\n\tETHERTYPE_REVARP                  = 0x8035\n\tETHERTYPE_SCA                     = 0x6007\n\tETHERTYPE_SECTRA                  = 0x86db\n\tETHERTYPE_SECUREDATA              = 0x876d\n\tETHERTYPE_SGITW                   = 0x817e\n\tETHERTYPE_SG_BOUNCE               = 0x8016\n\tETHERTYPE_SG_DIAG                 = 0x8013\n\tETHERTYPE_SG_NETGAMES             = 0x8014\n\tETHERTYPE_SG_RESV                 = 0x8015\n\tETHERTYPE_SIMNET                  = 0x5208\n\tETHERTYPE_SLOW                    = 0x8809\n\tETHERTYPE_SNA                     = 0x80d5\n\tETHERTYPE_SNMP                    = 0x814c\n\tETHERTYPE_SONIX                   = 0xfaf5\n\tETHERTYPE_SPIDER                  = 0x809f\n\tETHERTYPE_SPRITE                  = 0x500\n\tETHERTYPE_STP                     = 0x8181\n\tETHERTYPE_TALARIS                 = 0x812b\n\tETHERTYPE_TALARISMC               = 0x852b\n\tETHERTYPE_TCPCOMP                 = 0x876b\n\tETHERTYPE_TCPSM                   = 0x9002\n\tETHERTYPE_TEC                     = 0x814f\n\tETHERTYPE_TIGAN                   = 0x802f\n\tETHERTYPE_TRAIL                   = 0x1000\n\tETHERTYPE_TRANSETHER              = 0x6558\n\tETHERTYPE_TYMSHARE                = 0x802e\n\tETHERTYPE_UBBST                   = 0x7005\n\tETHERTYPE_UBDEBUG                 = 0x900\n\tETHERTYPE_UBDIAGLOOP              = 0x7002\n\tETHERTYPE_UBDL                    = 0x7000\n\tETHERTYPE_UBNIU                   = 0x7001\n\tETHERTYPE_UBNMC                   = 0x7003\n\tETHERTYPE_VALID                   = 0x1600\n\tETHERTYPE_VARIAN                  = 0x80dd\n\tETHERTYPE_VAXELN                  = 0x803b\n\tETHERTYPE_VEECO                   = 0x8067\n\tETHERTYPE_VEXP                    = 0x805b\n\tETHERTYPE_VGLAB                   = 0x8131\n\tETHERTYPE_VINES                   = 0xbad\n\tETHERTYPE_VINESECHO               = 0xbaf\n\tETHERTYPE_VINESLOOP               = 0xbae\n\tETHERTYPE_VITAL                   = 0xff00\n\tETHERTYPE_VLAN                    = 0x8100\n\tETHERTYPE_VLTLMAN                 = 0x8080\n\tETHERTYPE_VPROD                   = 0x805c\n\tETHERTYPE_VURESERVED              = 0x8147\n\tETHERTYPE_WATERLOO                = 0x8130\n\tETHERTYPE_WELLFLEET               = 0x8103\n\tETHERTYPE_X25                     = 0x805\n\tETHERTYPE_X75                     = 0x801\n\tETHERTYPE_XNSSM                   = 0x9001\n\tETHERTYPE_XTP                     = 0x817d\n\tETHER_ADDR_LEN                    = 0x6\n\tETHER_ALIGN                       = 0x2\n\tETHER_CRC_LEN                     = 0x4\n\tETHER_CRC_POLY_BE                 = 0x4c11db6\n\tETHER_CRC_POLY_LE                 = 0xedb88320\n\tETHER_HDR_LEN                     = 0xe\n\tETHER_MAX_DIX_LEN                 = 0x600\n\tETHER_MAX_HARDMTU_LEN             = 0xff9b\n\tETHER_MAX_LEN                     = 0x5ee\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = -0x3\n\tEVFILT_DEVICE                     = -0x8\n\tEVFILT_EXCEPT                     = -0x9\n\tEVFILT_PROC                       = -0x5\n\tEVFILT_READ                       = -0x1\n\tEVFILT_SIGNAL                     = -0x6\n\tEVFILT_SYSCOUNT                   = 0x9\n\tEVFILT_TIMER                      = -0x7\n\tEVFILT_VNODE                      = -0x4\n\tEVFILT_WRITE                      = -0x2\n\tEVL_ENCAPLEN                      = 0x4\n\tEVL_PRIO_BITS                     = 0xd\n\tEVL_PRIO_MAX                      = 0x7\n\tEVL_VLID_MASK                     = 0xfff\n\tEVL_VLID_MAX                      = 0xffe\n\tEVL_VLID_MIN                      = 0x1\n\tEVL_VLID_NULL                     = 0x0\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_DISPATCH                       = 0x80\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_RECEIPT                        = 0x40\n\tEV_SYSFLAGS                       = 0xf800\n\tEXTA                              = 0x4b00\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x400\n\tFLUSHO                            = 0x800000\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0xa\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETOWN                          = 0x5\n\tF_ISATTY                          = 0xb\n\tF_OK                              = 0x0\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x8e52\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_STATICARP                     = 0x20\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BLUETOOTH                     = 0xf8\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf7\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DUMMY                         = 0xf1\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ECONET                        = 0xce\n\tIFT_ENC                           = 0xf4\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf3\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INFINIBAND                    = 0xc7\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LINEGROUP                     = 0xd2\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MBIM                          = 0xfa\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFLOW                         = 0xf9\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_PON155                        = 0xcf\n\tIFT_PON622                        = 0xd0\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPATM                       = 0xc5\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf2\n\tIFT_Q2931                         = 0xc9\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SIPSIG                        = 0xcc\n\tIFT_SIPTG                         = 0xcb\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TELINK                        = 0xc8\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VIRTUALTG                     = 0xca\n\tIFT_VOICEDID                      = 0xd5\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEEMFGD                    = 0xd3\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFGDEANA                  = 0xd4\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERCABLE                = 0xc6\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_WIREGUARD                     = 0xfb\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIN_RFC3021_HOST                   = 0x1\n\tIN_RFC3021_NET                    = 0xfffffffe\n\tIN_RFC3021_NSHIFT                 = 0x1f\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_DIVERT                    = 0x102\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x103\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_MPLS                      = 0x89\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_SCTP                      = 0x84\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_UDPLITE                   = 0x88\n\tIPV6_AUTH_LEVEL                   = 0x35\n\tIPV6_AUTOFLOWLABEL                = 0x3b\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_ESP_NETWORK_LEVEL            = 0x37\n\tIPV6_ESP_TRANS_LEVEL              = 0x36\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPCOMP_LEVEL                 = 0x3c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MINHOPCOUNT                  = 0x41\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_OPTIONS                      = 0x1\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PIPEX                        = 0x3f\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVDSTPORT                  = 0x40\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTABLE                       = 0x1021\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_AUTH_LEVEL                     = 0x14\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_ESP_NETWORK_LEVEL              = 0x16\n\tIP_ESP_TRANS_LEVEL                = 0x15\n\tIP_HDRINCL                        = 0x2\n\tIP_IPCOMP_LEVEL                   = 0x1d\n\tIP_IPDEFTTL                       = 0x25\n\tIP_IPSECFLOWINFO                  = 0x24\n\tIP_IPSEC_LOCAL_AUTH               = 0x1b\n\tIP_IPSEC_LOCAL_CRED               = 0x19\n\tIP_IPSEC_LOCAL_ID                 = 0x17\n\tIP_IPSEC_REMOTE_AUTH              = 0x1c\n\tIP_IPSEC_REMOTE_CRED              = 0x1a\n\tIP_IPSEC_REMOTE_ID                = 0x18\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0xfff\n\tIP_MF                             = 0x2000\n\tIP_MINTTL                         = 0x20\n\tIP_MIN_MEMBERSHIPS                = 0xf\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PIPEX                          = 0x22\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVDSTPORT                    = 0x21\n\tIP_RECVIF                         = 0x1e\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVRTABLE                     = 0x23\n\tIP_RECVTTL                        = 0x1f\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_RTABLE                         = 0x1021\n\tIP_SENDSRCADDR                    = 0x7\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tITIMER_PROF                       = 0x2\n\tITIMER_REAL                       = 0x0\n\tITIMER_VIRTUAL                    = 0x1\n\tIUCLC                             = 0x1000\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLCNT_OVERLOAD_FLUSH               = 0x6\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x6\n\tMADV_NORMAL                       = 0x0\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SPACEAVAIL                   = 0x5\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ANON                          = 0x1000\n\tMAP_ANONYMOUS                     = 0x1000\n\tMAP_CONCEAL                       = 0x8000\n\tMAP_COPY                          = 0x2\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_FLAGMASK                      = 0xfff7\n\tMAP_HASSEMAPHORE                  = 0x0\n\tMAP_INHERIT                       = 0x0\n\tMAP_INHERIT_COPY                  = 0x1\n\tMAP_INHERIT_NONE                  = 0x2\n\tMAP_INHERIT_SHARE                 = 0x0\n\tMAP_INHERIT_ZERO                  = 0x3\n\tMAP_NOEXTEND                      = 0x0\n\tMAP_NORESERVE                     = 0x0\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x0\n\tMAP_SHARED                        = 0x1\n\tMAP_STACK                         = 0x4000\n\tMAP_TRYFIXED                      = 0x0\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DELEXPORT                     = 0x20000\n\tMNT_DOOMED                        = 0x8000000\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_FORCE                         = 0x80000\n\tMNT_LAZY                          = 0x3\n\tMNT_LOCAL                         = 0x1000\n\tMNT_NOATIME                       = 0x8000\n\tMNT_NODEV                         = 0x10\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOPERM                        = 0x20\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOWAIT                        = 0x2\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x4000000\n\tMNT_STALLED                       = 0x100000\n\tMNT_SWAPPABLE                     = 0x200000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0x400ffff\n\tMNT_WAIT                          = 0x1\n\tMNT_WANTRDWR                      = 0x2000000\n\tMNT_WXALLOWED                     = 0x800\n\tMOUNT_AFS                         = \"afs\"\n\tMOUNT_CD9660                      = \"cd9660\"\n\tMOUNT_EXT2FS                      = \"ext2fs\"\n\tMOUNT_FFS                         = \"ffs\"\n\tMOUNT_FUSEFS                      = \"fuse\"\n\tMOUNT_MFS                         = \"mfs\"\n\tMOUNT_MSDOS                       = \"msdos\"\n\tMOUNT_NCPFS                       = \"ncpfs\"\n\tMOUNT_NFS                         = \"nfs\"\n\tMOUNT_NTFS                        = \"ntfs\"\n\tMOUNT_TMPFS                       = \"tmpfs\"\n\tMOUNT_UDF                         = \"udf\"\n\tMOUNT_UFS                         = \"ffs\"\n\tMSG_BCAST                         = 0x100\n\tMSG_CMSG_CLOEXEC                  = 0x800\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOR                           = 0x8\n\tMSG_MCAST                         = 0x200\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_TRUNC                         = 0x10\n\tMSG_WAITALL                       = 0x40\n\tMSG_WAITFORONE                    = 0x1000\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x4\n\tMS_SYNC                           = 0x2\n\tNAME_MAX                          = 0xff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x3\n\tNET_RT_IFNAMES                    = 0x6\n\tNET_RT_MAXID                      = 0x8\n\tNET_RT_SOURCE                     = 0x7\n\tNET_RT_STATS                      = 0x4\n\tNET_RT_TABLE                      = 0x5\n\tNFDBITS                           = 0x20\n\tNOFLSH                            = 0x80000000\n\tNOKERNINFO                        = 0x2000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHANGE                       = 0x1\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EOF                          = 0x2\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_OOB                          = 0x4\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_TRUNCATE                     = 0x80\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOLCUC                             = 0x20\n\tONLCR                             = 0x2\n\tONLRET                            = 0x80\n\tONOCR                             = 0x40\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tOXTABS                            = 0x4\n\tO_ACCMODE                         = 0x3\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x10000\n\tO_CREAT                           = 0x200\n\tO_DIRECTORY                       = 0x20000\n\tO_DSYNC                           = 0x80\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_RSYNC                           = 0x80\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPF_FLUSH                          = 0x1\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BFD                          = 0xb\n\tRTAX_BRD                          = 0x7\n\tRTAX_DNS                          = 0xc\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_LABEL                        = 0xa\n\tRTAX_MAX                          = 0xf\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_SEARCH                       = 0xe\n\tRTAX_SRC                          = 0x8\n\tRTAX_SRCMASK                      = 0x9\n\tRTAX_STATIC                       = 0xd\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BFD                           = 0x800\n\tRTA_BRD                           = 0x80\n\tRTA_DNS                           = 0x1000\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_LABEL                         = 0x400\n\tRTA_NETMASK                       = 0x4\n\tRTA_SEARCH                        = 0x4000\n\tRTA_SRC                           = 0x100\n\tRTA_SRCMASK                       = 0x200\n\tRTA_STATIC                        = 0x2000\n\tRTF_ANNOUNCE                      = 0x4000\n\tRTF_BFD                           = 0x1000000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_BROADCAST                     = 0x400000\n\tRTF_CACHED                        = 0x20000\n\tRTF_CLONED                        = 0x10000\n\tRTF_CLONING                       = 0x100\n\tRTF_CONNECTED                     = 0x800000\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_FMASK                         = 0x110fc08\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_LOCAL                         = 0x200000\n\tRTF_MODIFIED                      = 0x20\n\tRTF_MPATH                         = 0x40000\n\tRTF_MPLS                          = 0x100000\n\tRTF_MULTICAST                     = 0x200\n\tRTF_PERMANENT_ARP                 = 0x2000\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_PROTO3                        = 0x2000\n\tRTF_REJECT                        = 0x8\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_USETRAILERS                   = 0x8000\n\tRTM_80211INFO                     = 0x15\n\tRTM_ADD                           = 0x1\n\tRTM_BFD                           = 0x12\n\tRTM_CHANGE                        = 0x3\n\tRTM_CHGADDRATTR                   = 0x14\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_DESYNC                        = 0x10\n\tRTM_GET                           = 0x4\n\tRTM_IFANNOUNCE                    = 0xf\n\tRTM_IFINFO                        = 0xe\n\tRTM_INVALIDATE                    = 0x11\n\tRTM_LOSING                        = 0x5\n\tRTM_MAXSIZE                       = 0x800\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_PROPOSAL                      = 0x13\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_SOURCE                        = 0x16\n\tRTM_VERSION                       = 0x5\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRT_TABLEID_BITS                   = 0x8\n\tRT_TABLEID_MASK                   = 0xff\n\tRT_TABLEID_MAX                    = 0xff\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tRUSAGE_THREAD                     = 0x1\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x4\n\tSEEK_CUR                          = 0x1\n\tSEEK_END                          = 0x2\n\tSEEK_SET                          = 0x0\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80206931\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCAIFGROUP                      = 0x80286987\n\tSIOCATMARK                        = 0x40047307\n\tSIOCBRDGADD                       = 0x8060693c\n\tSIOCBRDGADDL                      = 0x80606949\n\tSIOCBRDGADDS                      = 0x80606941\n\tSIOCBRDGARL                       = 0x808c694d\n\tSIOCBRDGDADDR                     = 0x81286947\n\tSIOCBRDGDEL                       = 0x8060693d\n\tSIOCBRDGDELS                      = 0x80606942\n\tSIOCBRDGFLUSH                     = 0x80606948\n\tSIOCBRDGFRL                       = 0x808c694e\n\tSIOCBRDGGCACHE                    = 0xc0146941\n\tSIOCBRDGGFD                       = 0xc0146952\n\tSIOCBRDGGHT                       = 0xc0146951\n\tSIOCBRDGGIFFLGS                   = 0xc060693e\n\tSIOCBRDGGMA                       = 0xc0146953\n\tSIOCBRDGGPARAM                    = 0xc0406958\n\tSIOCBRDGGPRI                      = 0xc0146950\n\tSIOCBRDGGRL                       = 0xc030694f\n\tSIOCBRDGGTO                       = 0xc0146946\n\tSIOCBRDGIFS                       = 0xc0606942\n\tSIOCBRDGRTS                       = 0xc0206943\n\tSIOCBRDGSADDR                     = 0xc1286944\n\tSIOCBRDGSCACHE                    = 0x80146940\n\tSIOCBRDGSFD                       = 0x80146952\n\tSIOCBRDGSHT                       = 0x80146951\n\tSIOCBRDGSIFCOST                   = 0x80606955\n\tSIOCBRDGSIFFLGS                   = 0x8060693f\n\tSIOCBRDGSIFPRIO                   = 0x80606954\n\tSIOCBRDGSIFPROT                   = 0x8060694a\n\tSIOCBRDGSMA                       = 0x80146953\n\tSIOCBRDGSPRI                      = 0x80146950\n\tSIOCBRDGSPROTO                    = 0x8014695a\n\tSIOCBRDGSTO                       = 0x80146945\n\tSIOCBRDGSTXHC                     = 0x80146959\n\tSIOCDELLABEL                      = 0x80206997\n\tSIOCDELMULTI                      = 0x80206932\n\tSIOCDIFADDR                       = 0x80206919\n\tSIOCDIFGROUP                      = 0x80286989\n\tSIOCDIFPARENT                     = 0x802069b4\n\tSIOCDIFPHYADDR                    = 0x80206949\n\tSIOCDPWE3NEIGHBOR                 = 0x802069de\n\tSIOCDVNETID                       = 0x802069af\n\tSIOCGETKALIVE                     = 0xc01869a4\n\tSIOCGETLABEL                      = 0x8020699a\n\tSIOCGETMPWCFG                     = 0xc02069ae\n\tSIOCGETPFLOW                      = 0xc02069fe\n\tSIOCGETPFSYNC                     = 0xc02069f8\n\tSIOCGETSGCNT                      = 0xc0207534\n\tSIOCGETVIFCNT                     = 0xc0287533\n\tSIOCGETVLAN                       = 0xc0206990\n\tSIOCGIFADDR                       = 0xc0206921\n\tSIOCGIFBRDADDR                    = 0xc0206923\n\tSIOCGIFCONF                       = 0xc0106924\n\tSIOCGIFDATA                       = 0xc020691b\n\tSIOCGIFDESCR                      = 0xc0206981\n\tSIOCGIFDSTADDR                    = 0xc0206922\n\tSIOCGIFFLAGS                      = 0xc0206911\n\tSIOCGIFGATTR                      = 0xc028698b\n\tSIOCGIFGENERIC                    = 0xc020693a\n\tSIOCGIFGLIST                      = 0xc028698d\n\tSIOCGIFGMEMB                      = 0xc028698a\n\tSIOCGIFGROUP                      = 0xc0286988\n\tSIOCGIFHARDMTU                    = 0xc02069a5\n\tSIOCGIFLLPRIO                     = 0xc02069b6\n\tSIOCGIFMEDIA                      = 0xc0406938\n\tSIOCGIFMETRIC                     = 0xc0206917\n\tSIOCGIFMTU                        = 0xc020697e\n\tSIOCGIFNETMASK                    = 0xc0206925\n\tSIOCGIFPAIR                       = 0xc02069b1\n\tSIOCGIFPARENT                     = 0xc02069b3\n\tSIOCGIFPRIORITY                   = 0xc020699c\n\tSIOCGIFRDOMAIN                    = 0xc02069a0\n\tSIOCGIFRTLABEL                    = 0xc0206983\n\tSIOCGIFRXR                        = 0x802069aa\n\tSIOCGIFSFFPAGE                    = 0xc1126939\n\tSIOCGIFXFLAGS                     = 0xc020699e\n\tSIOCGLIFPHYADDR                   = 0xc218694b\n\tSIOCGLIFPHYDF                     = 0xc02069c2\n\tSIOCGLIFPHYECN                    = 0xc02069c8\n\tSIOCGLIFPHYRTABLE                 = 0xc02069a2\n\tSIOCGLIFPHYTTL                    = 0xc02069a9\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGPWE3                         = 0xc0206998\n\tSIOCGPWE3CTRLWORD                 = 0xc02069dc\n\tSIOCGPWE3FAT                      = 0xc02069dd\n\tSIOCGPWE3NEIGHBOR                 = 0xc21869de\n\tSIOCGRXHPRIO                      = 0xc02069db\n\tSIOCGSPPPPARAMS                   = 0xc0206994\n\tSIOCGTXHPRIO                      = 0xc02069c6\n\tSIOCGUMBINFO                      = 0xc02069be\n\tSIOCGUMBPARAM                     = 0xc02069c0\n\tSIOCGVH                           = 0xc02069f6\n\tSIOCGVNETFLOWID                   = 0xc02069c4\n\tSIOCGVNETID                       = 0xc02069a7\n\tSIOCIFAFATTACH                    = 0x801169ab\n\tSIOCIFAFDETACH                    = 0x801169ac\n\tSIOCIFCREATE                      = 0x8020697a\n\tSIOCIFDESTROY                     = 0x80206979\n\tSIOCIFGCLONERS                    = 0xc0106978\n\tSIOCSETKALIVE                     = 0x801869a3\n\tSIOCSETLABEL                      = 0x80206999\n\tSIOCSETMPWCFG                     = 0x802069ad\n\tSIOCSETPFLOW                      = 0x802069fd\n\tSIOCSETPFSYNC                     = 0x802069f7\n\tSIOCSETVLAN                       = 0x8020698f\n\tSIOCSIFADDR                       = 0x8020690c\n\tSIOCSIFBRDADDR                    = 0x80206913\n\tSIOCSIFDESCR                      = 0x80206980\n\tSIOCSIFDSTADDR                    = 0x8020690e\n\tSIOCSIFFLAGS                      = 0x80206910\n\tSIOCSIFGATTR                      = 0x8028698c\n\tSIOCSIFGENERIC                    = 0x80206939\n\tSIOCSIFLLADDR                     = 0x8020691f\n\tSIOCSIFLLPRIO                     = 0x802069b5\n\tSIOCSIFMEDIA                      = 0xc0206937\n\tSIOCSIFMETRIC                     = 0x80206918\n\tSIOCSIFMTU                        = 0x8020697f\n\tSIOCSIFNETMASK                    = 0x80206916\n\tSIOCSIFPAIR                       = 0x802069b0\n\tSIOCSIFPARENT                     = 0x802069b2\n\tSIOCSIFPRIORITY                   = 0x8020699b\n\tSIOCSIFRDOMAIN                    = 0x8020699f\n\tSIOCSIFRTLABEL                    = 0x80206982\n\tSIOCSIFXFLAGS                     = 0x8020699d\n\tSIOCSLIFPHYADDR                   = 0x8218694a\n\tSIOCSLIFPHYDF                     = 0x802069c1\n\tSIOCSLIFPHYECN                    = 0x802069c7\n\tSIOCSLIFPHYRTABLE                 = 0x802069a1\n\tSIOCSLIFPHYTTL                    = 0x802069a8\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSPWE3CTRLWORD                 = 0x802069dc\n\tSIOCSPWE3FAT                      = 0x802069dd\n\tSIOCSPWE3NEIGHBOR                 = 0x821869de\n\tSIOCSRXHPRIO                      = 0x802069db\n\tSIOCSSPPPPARAMS                   = 0x80206993\n\tSIOCSTXHPRIO                      = 0x802069c5\n\tSIOCSUMBPARAM                     = 0x802069bf\n\tSIOCSVH                           = 0xc02069f5\n\tSIOCSVNETFLOWID                   = 0x802069c3\n\tSIOCSVNETID                       = 0x802069a6\n\tSOCK_CLOEXEC                      = 0x8000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_DNS                          = 0x1000\n\tSOCK_NONBLOCK                     = 0x4000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_BINDANY                        = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DOMAIN                         = 0x1024\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NETPROC                        = 0x1020\n\tSO_OOBINLINE                      = 0x100\n\tSO_PEERCRED                       = 0x1022\n\tSO_PROTOCOL                       = 0x1025\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x1006\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_RTABLE                         = 0x1021\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x1005\n\tSO_SPLICE                         = 0x1023\n\tSO_TIMESTAMP                      = 0x800\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tSO_ZEROIZE                        = 0x2000\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tTCIFLUSH                          = 0x1\n\tTCIOFF                            = 0x3\n\tTCIOFLUSH                         = 0x3\n\tTCION                             = 0x4\n\tTCOFLUSH                          = 0x2\n\tTCOOFF                            = 0x1\n\tTCOON                             = 0x2\n\tTCPOPT_EOL                        = 0x0\n\tTCPOPT_MAXSEG                     = 0x2\n\tTCPOPT_NOP                        = 0x1\n\tTCPOPT_SACK                       = 0x5\n\tTCPOPT_SACK_HDR                   = 0x1010500\n\tTCPOPT_SACK_PERMITTED             = 0x4\n\tTCPOPT_SACK_PERMIT_HDR            = 0x1010402\n\tTCPOPT_SIGNATURE                  = 0x13\n\tTCPOPT_TIMESTAMP                  = 0x8\n\tTCPOPT_TSTAMP_HDR                 = 0x101080a\n\tTCPOPT_WINDOW                     = 0x3\n\tTCP_INFO                          = 0x9\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_SACK                      = 0x3\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MD5SIG                        = 0x4\n\tTCP_MSS                           = 0x200\n\tTCP_NODELAY                       = 0x1\n\tTCP_NOPUSH                        = 0x10\n\tTCP_SACKHOLE_LIMIT                = 0x80\n\tTCP_SACK_ENABLE                   = 0x8\n\tTCSAFLUSH                         = 0x2\n\tTIMER_ABSTIME                     = 0x1\n\tTIMER_RELTIME                     = 0x0\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCHKVERAUTH                    = 0x2000741e\n\tTIOCCLRVERAUTH                    = 0x2000741d\n\tTIOCCONS                          = 0x80047462\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLAG_CLOCAL                   = 0x2\n\tTIOCFLAG_CRTSCTS                  = 0x4\n\tTIOCFLAG_MDMBUF                   = 0x8\n\tTIOCFLAG_PPS                      = 0x10\n\tTIOCFLAG_SOFTCAR                  = 0x1\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGFLAGS                        = 0x4004745d\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGSID                          = 0x40047463\n\tTIOCGTSTAMP                       = 0x4010745b\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMODG                          = 0x4004746a\n\tTIOCMODS                          = 0x8004746d\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSETVERAUTH                    = 0x8004741c\n\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x8004745f\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x20007465\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSTSTAMP                       = 0x8008745a\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\n\tTIOCUCNTL_CBRK                    = 0x7a\n\tTIOCUCNTL_SBRK                    = 0x7b\n\tTOSTOP                            = 0x400000\n\tUTIME_NOW                         = -0x2\n\tUTIME_OMIT                        = -0x1\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVM_ANONMIN                        = 0x7\n\tVM_LOADAVG                        = 0x2\n\tVM_MALLOC_CONF                    = 0xc\n\tVM_MAXID                          = 0xd\n\tVM_MAXSLP                         = 0xa\n\tVM_METER                          = 0x1\n\tVM_NKMEMPAGES                     = 0x6\n\tVM_PSSTRINGS                      = 0x3\n\tVM_SWAPENCRYPT                    = 0x5\n\tVM_USPACE                         = 0xb\n\tVM_UVMEXP                         = 0x4\n\tVM_VNODEMIN                       = 0x9\n\tVM_VTEXTMIN                       = 0x8\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWALTSIG                           = 0x4\n\tWCONTINUED                        = 0x8\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\n\tWUNTRACED                         = 0x2\n\tXCASE                             = 0x1000000\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x5c)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x58)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x59)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEIPSEC          = syscall.Errno(0x52)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x5f)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMEDIUMTYPE     = syscall.Errno(0x56)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x53)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOMEDIUM       = syscall.Errno(0x55)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x5a)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5d)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x5b)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x57)\n\tEOWNERDEAD      = syscall.Errno(0x5e)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5f)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disk quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC program not available\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIPSEC\", \"IPsec processing failure\"},\n\t{83, \"ENOATTR\", \"attribute not found\"},\n\t{84, \"EILSEQ\", \"illegal byte sequence\"},\n\t{85, \"ENOMEDIUM\", \"no medium found\"},\n\t{86, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{87, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{88, \"ECANCELED\", \"operation canceled\"},\n\t{89, \"EIDRM\", \"identifier removed\"},\n\t{90, \"ENOMSG\", \"no message of desired type\"},\n\t{91, \"ENOTSUP\", \"not supported\"},\n\t{92, \"EBADMSG\", \"bad message\"},\n\t{93, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{94, \"EOWNERDEAD\", \"previous owner died\"},\n\t{95, \"ELAST\", \"protocol error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"thread AST\"},\n\t{28672, \"SIGSTKSZ\", \"unknown signal\"},\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zerrors_openbsd_mips64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mips64 && openbsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_BLUETOOTH                      = 0x20\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_ENCAP                          = 0x1c\n\tAF_HYLINK                         = 0xf\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x18\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_KEY                            = 0x1e\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x24\n\tAF_MPLS                           = 0x21\n\tAF_NATM                           = 0x1b\n\tAF_NS                             = 0x6\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x11\n\tAF_SIP                            = 0x1d\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tALTWERASE                         = 0x200\n\tARPHRD_ETHER                      = 0x1\n\tARPHRD_FRELAY                     = 0xf\n\tARPHRD_IEEE1394                   = 0x18\n\tARPHRD_IEEE802                    = 0x6\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB9600                             = 0x2580\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDIRFILT                      = 0x4004427c\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc010427b\n\tBIOCGETIF                         = 0x4020426b\n\tBIOCGFILDROP                      = 0x40044278\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRSIG                         = 0x40044273\n\tBIOCGRTIMEOUT                     = 0x4010426e\n\tBIOCGSTATS                        = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCLOCK                          = 0x20004276\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDIRFILT                      = 0x8004427d\n\tBIOCSDLT                          = 0x8004427a\n\tBIOCSETF                          = 0x80104267\n\tBIOCSETIF                         = 0x8020426c\n\tBIOCSETWF                         = 0x80104277\n\tBIOCSFILDROP                      = 0x80044279\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRSIG                         = 0x80044272\n\tBIOCSRTIMEOUT                     = 0x8010426d\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DIRECTION_IN                  = 0x1\n\tBPF_DIRECTION_OUT                 = 0x2\n\tBPF_DIV                           = 0x30\n\tBPF_FILDROP_CAPTURE               = 0x1\n\tBPF_FILDROP_DROP                  = 0x2\n\tBPF_FILDROP_PASS                  = 0x0\n\tBPF_F_DIR_IN                      = 0x10\n\tBPF_F_DIR_MASK                    = 0x30\n\tBPF_F_DIR_OUT                     = 0x20\n\tBPF_F_DIR_SHIFT                   = 0x4\n\tBPF_F_FLOWID                      = 0x8\n\tBPF_F_PRI_MASK                    = 0x7\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x200000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RND                           = 0xc0\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLOCK_BOOTTIME                    = 0x6\n\tCLOCK_MONOTONIC                   = 0x3\n\tCLOCK_PROCESS_CPUTIME_ID          = 0x2\n\tCLOCK_REALTIME                    = 0x0\n\tCLOCK_THREAD_CPUTIME_ID           = 0x4\n\tCLOCK_UPTIME                      = 0x5\n\tCPUSTATES                         = 0x6\n\tCP_IDLE                           = 0x5\n\tCP_INTR                           = 0x4\n\tCP_NICE                           = 0x1\n\tCP_SPIN                           = 0x3\n\tCP_SYS                            = 0x2\n\tCP_USER                           = 0x0\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x10000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0xff\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tDIOCADDQUEUE                      = 0xc110445d\n\tDIOCADDRULE                       = 0xcd604404\n\tDIOCADDSTATE                      = 0xc1084425\n\tDIOCCHANGERULE                    = 0xcd60441a\n\tDIOCCLRIFFLAG                     = 0xc028445a\n\tDIOCCLRSRCNODES                   = 0x20004455\n\tDIOCCLRSTATES                     = 0xc0e04412\n\tDIOCCLRSTATUS                     = 0xc0284416\n\tDIOCGETLIMIT                      = 0xc0084427\n\tDIOCGETQSTATS                     = 0xc1204460\n\tDIOCGETQUEUE                      = 0xc110445f\n\tDIOCGETQUEUES                     = 0xc110445e\n\tDIOCGETRULE                       = 0xcd604407\n\tDIOCGETRULES                      = 0xcd604406\n\tDIOCGETRULESET                    = 0xc444443b\n\tDIOCGETRULESETS                   = 0xc444443a\n\tDIOCGETSRCNODES                   = 0xc0104454\n\tDIOCGETSTATE                      = 0xc1084413\n\tDIOCGETSTATES                     = 0xc0104419\n\tDIOCGETSTATUS                     = 0xc1e84415\n\tDIOCGETSYNFLWATS                  = 0xc0084463\n\tDIOCGETTIMEOUT                    = 0xc008441e\n\tDIOCIGETIFACES                    = 0xc0284457\n\tDIOCKILLSRCNODES                  = 0xc080445b\n\tDIOCKILLSTATES                    = 0xc0e04429\n\tDIOCNATLOOK                       = 0xc0504417\n\tDIOCOSFPADD                       = 0xc088444f\n\tDIOCOSFPFLUSH                     = 0x2000444e\n\tDIOCOSFPGET                       = 0xc0884450\n\tDIOCRADDADDRS                     = 0xc4504443\n\tDIOCRADDTABLES                    = 0xc450443d\n\tDIOCRCLRADDRS                     = 0xc4504442\n\tDIOCRCLRASTATS                    = 0xc4504448\n\tDIOCRCLRTABLES                    = 0xc450443c\n\tDIOCRCLRTSTATS                    = 0xc4504441\n\tDIOCRDELADDRS                     = 0xc4504444\n\tDIOCRDELTABLES                    = 0xc450443e\n\tDIOCRGETADDRS                     = 0xc4504446\n\tDIOCRGETASTATS                    = 0xc4504447\n\tDIOCRGETTABLES                    = 0xc450443f\n\tDIOCRGETTSTATS                    = 0xc4504440\n\tDIOCRINADEFINE                    = 0xc450444d\n\tDIOCRSETADDRS                     = 0xc4504445\n\tDIOCRSETTFLAGS                    = 0xc450444a\n\tDIOCRTSTADDRS                     = 0xc4504449\n\tDIOCSETDEBUG                      = 0xc0044418\n\tDIOCSETHOSTID                     = 0xc0044456\n\tDIOCSETIFFLAG                     = 0xc0284459\n\tDIOCSETLIMIT                      = 0xc0084428\n\tDIOCSETREASS                      = 0xc004445c\n\tDIOCSETSTATUSIF                   = 0xc0284414\n\tDIOCSETSYNCOOKIES                 = 0xc0014462\n\tDIOCSETSYNFLWATS                  = 0xc0084461\n\tDIOCSETTIMEOUT                    = 0xc008441d\n\tDIOCSTART                         = 0x20004401\n\tDIOCSTOP                          = 0x20004402\n\tDIOCXBEGIN                        = 0xc0104451\n\tDIOCXCOMMIT                       = 0xc0104452\n\tDIOCXROLLBACK                     = 0xc0104453\n\tDLT_ARCNET                        = 0x7\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AX25                          = 0x3\n\tDLT_CHAOS                         = 0x5\n\tDLT_C_HDLC                        = 0x68\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0xd\n\tDLT_FDDI                          = 0xa\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_LOOP                          = 0xc\n\tDLT_MPLS                          = 0xdb\n\tDLT_NULL                          = 0x0\n\tDLT_OPENFLOW                      = 0x10b\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0x10\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PRONET                        = 0x4\n\tDLT_RAW                           = 0xe\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xf\n\tDLT_USBPCAP                       = 0xf9\n\tDLT_USER0                         = 0x93\n\tDLT_USER1                         = 0x94\n\tDLT_USER10                        = 0x9d\n\tDLT_USER11                        = 0x9e\n\tDLT_USER12                        = 0x9f\n\tDLT_USER13                        = 0xa0\n\tDLT_USER14                        = 0xa1\n\tDLT_USER15                        = 0xa2\n\tDLT_USER2                         = 0x95\n\tDLT_USER3                         = 0x96\n\tDLT_USER4                         = 0x97\n\tDLT_USER5                         = 0x98\n\tDLT_USER6                         = 0x99\n\tDLT_USER7                         = 0x9a\n\tDLT_USER8                         = 0x9b\n\tDLT_USER9                         = 0x9c\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEMT_TAGOVF                        = 0x1\n\tEMUL_ENABLED                      = 0x1\n\tEMUL_NATIVE                       = 0x2\n\tENDRUNDISC                        = 0x9\n\tETH64_8021_RSVD_MASK              = 0xfffffffffff0\n\tETH64_8021_RSVD_PREFIX            = 0x180c2000000\n\tETHERMIN                          = 0x2e\n\tETHERMTU                          = 0x5dc\n\tETHERTYPE_8023                    = 0x4\n\tETHERTYPE_AARP                    = 0x80f3\n\tETHERTYPE_ACCTON                  = 0x8390\n\tETHERTYPE_AEONIC                  = 0x8036\n\tETHERTYPE_ALPHA                   = 0x814a\n\tETHERTYPE_AMBER                   = 0x6008\n\tETHERTYPE_AMOEBA                  = 0x8145\n\tETHERTYPE_AOE                     = 0x88a2\n\tETHERTYPE_APOLLO                  = 0x80f7\n\tETHERTYPE_APOLLODOMAIN            = 0x8019\n\tETHERTYPE_APPLETALK               = 0x809b\n\tETHERTYPE_APPLITEK                = 0x80c7\n\tETHERTYPE_ARGONAUT                = 0x803a\n\tETHERTYPE_ARP                     = 0x806\n\tETHERTYPE_AT                      = 0x809b\n\tETHERTYPE_ATALK                   = 0x809b\n\tETHERTYPE_ATOMIC                  = 0x86df\n\tETHERTYPE_ATT                     = 0x8069\n\tETHERTYPE_ATTSTANFORD             = 0x8008\n\tETHERTYPE_AUTOPHON                = 0x806a\n\tETHERTYPE_AXIS                    = 0x8856\n\tETHERTYPE_BCLOOP                  = 0x9003\n\tETHERTYPE_BOFL                    = 0x8102\n\tETHERTYPE_CABLETRON               = 0x7034\n\tETHERTYPE_CHAOS                   = 0x804\n\tETHERTYPE_COMDESIGN               = 0x806c\n\tETHERTYPE_COMPUGRAPHIC            = 0x806d\n\tETHERTYPE_COUNTERPOINT            = 0x8062\n\tETHERTYPE_CRONUS                  = 0x8004\n\tETHERTYPE_CRONUSVLN               = 0x8003\n\tETHERTYPE_DCA                     = 0x1234\n\tETHERTYPE_DDE                     = 0x807b\n\tETHERTYPE_DEBNI                   = 0xaaaa\n\tETHERTYPE_DECAM                   = 0x8048\n\tETHERTYPE_DECCUST                 = 0x6006\n\tETHERTYPE_DECDIAG                 = 0x6005\n\tETHERTYPE_DECDNS                  = 0x803c\n\tETHERTYPE_DECDTS                  = 0x803e\n\tETHERTYPE_DECEXPER                = 0x6000\n\tETHERTYPE_DECLAST                 = 0x8041\n\tETHERTYPE_DECLTM                  = 0x803f\n\tETHERTYPE_DECMUMPS                = 0x6009\n\tETHERTYPE_DECNETBIOS              = 0x8040\n\tETHERTYPE_DELTACON                = 0x86de\n\tETHERTYPE_DIDDLE                  = 0x4321\n\tETHERTYPE_DLOG1                   = 0x660\n\tETHERTYPE_DLOG2                   = 0x661\n\tETHERTYPE_DN                      = 0x6003\n\tETHERTYPE_DOGFIGHT                = 0x1989\n\tETHERTYPE_DSMD                    = 0x8039\n\tETHERTYPE_EAPOL                   = 0x888e\n\tETHERTYPE_ECMA                    = 0x803\n\tETHERTYPE_ENCRYPT                 = 0x803d\n\tETHERTYPE_ES                      = 0x805d\n\tETHERTYPE_EXCELAN                 = 0x8010\n\tETHERTYPE_EXPERDATA               = 0x8049\n\tETHERTYPE_FLIP                    = 0x8146\n\tETHERTYPE_FLOWCONTROL             = 0x8808\n\tETHERTYPE_FRARP                   = 0x808\n\tETHERTYPE_GENDYN                  = 0x8068\n\tETHERTYPE_HAYES                   = 0x8130\n\tETHERTYPE_HIPPI_FP                = 0x8180\n\tETHERTYPE_HITACHI                 = 0x8820\n\tETHERTYPE_HP                      = 0x8005\n\tETHERTYPE_IEEEPUP                 = 0xa00\n\tETHERTYPE_IEEEPUPAT               = 0xa01\n\tETHERTYPE_IMLBL                   = 0x4c42\n\tETHERTYPE_IMLBLDIAG               = 0x424c\n\tETHERTYPE_IP                      = 0x800\n\tETHERTYPE_IPAS                    = 0x876c\n\tETHERTYPE_IPV6                    = 0x86dd\n\tETHERTYPE_IPX                     = 0x8137\n\tETHERTYPE_IPXNEW                  = 0x8037\n\tETHERTYPE_KALPANA                 = 0x8582\n\tETHERTYPE_LANBRIDGE               = 0x8038\n\tETHERTYPE_LANPROBE                = 0x8888\n\tETHERTYPE_LAT                     = 0x6004\n\tETHERTYPE_LBACK                   = 0x9000\n\tETHERTYPE_LITTLE                  = 0x8060\n\tETHERTYPE_LLDP                    = 0x88cc\n\tETHERTYPE_LOGICRAFT               = 0x8148\n\tETHERTYPE_LOOPBACK                = 0x9000\n\tETHERTYPE_MACSEC                  = 0x88e5\n\tETHERTYPE_MATRA                   = 0x807a\n\tETHERTYPE_MAX                     = 0xffff\n\tETHERTYPE_MERIT                   = 0x807c\n\tETHERTYPE_MICP                    = 0x873a\n\tETHERTYPE_MOPDL                   = 0x6001\n\tETHERTYPE_MOPRC                   = 0x6002\n\tETHERTYPE_MOTOROLA                = 0x818d\n\tETHERTYPE_MPLS                    = 0x8847\n\tETHERTYPE_MPLS_MCAST              = 0x8848\n\tETHERTYPE_MUMPS                   = 0x813f\n\tETHERTYPE_NBPCC                   = 0x3c04\n\tETHERTYPE_NBPCLAIM                = 0x3c09\n\tETHERTYPE_NBPCLREQ                = 0x3c05\n\tETHERTYPE_NBPCLRSP                = 0x3c06\n\tETHERTYPE_NBPCREQ                 = 0x3c02\n\tETHERTYPE_NBPCRSP                 = 0x3c03\n\tETHERTYPE_NBPDG                   = 0x3c07\n\tETHERTYPE_NBPDGB                  = 0x3c08\n\tETHERTYPE_NBPDLTE                 = 0x3c0a\n\tETHERTYPE_NBPRAR                  = 0x3c0c\n\tETHERTYPE_NBPRAS                  = 0x3c0b\n\tETHERTYPE_NBPRST                  = 0x3c0d\n\tETHERTYPE_NBPSCD                  = 0x3c01\n\tETHERTYPE_NBPVCD                  = 0x3c00\n\tETHERTYPE_NBS                     = 0x802\n\tETHERTYPE_NCD                     = 0x8149\n\tETHERTYPE_NESTAR                  = 0x8006\n\tETHERTYPE_NETBEUI                 = 0x8191\n\tETHERTYPE_NHRP                    = 0x2001\n\tETHERTYPE_NOVELL                  = 0x8138\n\tETHERTYPE_NS                      = 0x600\n\tETHERTYPE_NSAT                    = 0x601\n\tETHERTYPE_NSCOMPAT                = 0x807\n\tETHERTYPE_NSH                     = 0x984f\n\tETHERTYPE_NTRAILER                = 0x10\n\tETHERTYPE_OS9                     = 0x7007\n\tETHERTYPE_OS9NET                  = 0x7009\n\tETHERTYPE_PACER                   = 0x80c6\n\tETHERTYPE_PBB                     = 0x88e7\n\tETHERTYPE_PCS                     = 0x4242\n\tETHERTYPE_PLANNING                = 0x8044\n\tETHERTYPE_PPP                     = 0x880b\n\tETHERTYPE_PPPOE                   = 0x8864\n\tETHERTYPE_PPPOEDISC               = 0x8863\n\tETHERTYPE_PRIMENTS                = 0x7031\n\tETHERTYPE_PUP                     = 0x200\n\tETHERTYPE_PUPAT                   = 0x200\n\tETHERTYPE_QINQ                    = 0x88a8\n\tETHERTYPE_RACAL                   = 0x7030\n\tETHERTYPE_RATIONAL                = 0x8150\n\tETHERTYPE_RAWFR                   = 0x6559\n\tETHERTYPE_RCL                     = 0x1995\n\tETHERTYPE_RDP                     = 0x8739\n\tETHERTYPE_RETIX                   = 0x80f2\n\tETHERTYPE_REVARP                  = 0x8035\n\tETHERTYPE_SCA                     = 0x6007\n\tETHERTYPE_SECTRA                  = 0x86db\n\tETHERTYPE_SECUREDATA              = 0x876d\n\tETHERTYPE_SGITW                   = 0x817e\n\tETHERTYPE_SG_BOUNCE               = 0x8016\n\tETHERTYPE_SG_DIAG                 = 0x8013\n\tETHERTYPE_SG_NETGAMES             = 0x8014\n\tETHERTYPE_SG_RESV                 = 0x8015\n\tETHERTYPE_SIMNET                  = 0x5208\n\tETHERTYPE_SLOW                    = 0x8809\n\tETHERTYPE_SNA                     = 0x80d5\n\tETHERTYPE_SNMP                    = 0x814c\n\tETHERTYPE_SONIX                   = 0xfaf5\n\tETHERTYPE_SPIDER                  = 0x809f\n\tETHERTYPE_SPRITE                  = 0x500\n\tETHERTYPE_STP                     = 0x8181\n\tETHERTYPE_TALARIS                 = 0x812b\n\tETHERTYPE_TALARISMC               = 0x852b\n\tETHERTYPE_TCPCOMP                 = 0x876b\n\tETHERTYPE_TCPSM                   = 0x9002\n\tETHERTYPE_TEC                     = 0x814f\n\tETHERTYPE_TIGAN                   = 0x802f\n\tETHERTYPE_TRAIL                   = 0x1000\n\tETHERTYPE_TRANSETHER              = 0x6558\n\tETHERTYPE_TYMSHARE                = 0x802e\n\tETHERTYPE_UBBST                   = 0x7005\n\tETHERTYPE_UBDEBUG                 = 0x900\n\tETHERTYPE_UBDIAGLOOP              = 0x7002\n\tETHERTYPE_UBDL                    = 0x7000\n\tETHERTYPE_UBNIU                   = 0x7001\n\tETHERTYPE_UBNMC                   = 0x7003\n\tETHERTYPE_VALID                   = 0x1600\n\tETHERTYPE_VARIAN                  = 0x80dd\n\tETHERTYPE_VAXELN                  = 0x803b\n\tETHERTYPE_VEECO                   = 0x8067\n\tETHERTYPE_VEXP                    = 0x805b\n\tETHERTYPE_VGLAB                   = 0x8131\n\tETHERTYPE_VINES                   = 0xbad\n\tETHERTYPE_VINESECHO               = 0xbaf\n\tETHERTYPE_VINESLOOP               = 0xbae\n\tETHERTYPE_VITAL                   = 0xff00\n\tETHERTYPE_VLAN                    = 0x8100\n\tETHERTYPE_VLTLMAN                 = 0x8080\n\tETHERTYPE_VPROD                   = 0x805c\n\tETHERTYPE_VURESERVED              = 0x8147\n\tETHERTYPE_WATERLOO                = 0x8130\n\tETHERTYPE_WELLFLEET               = 0x8103\n\tETHERTYPE_X25                     = 0x805\n\tETHERTYPE_X75                     = 0x801\n\tETHERTYPE_XNSSM                   = 0x9001\n\tETHERTYPE_XTP                     = 0x817d\n\tETHER_ADDR_LEN                    = 0x6\n\tETHER_ALIGN                       = 0x2\n\tETHER_CRC_LEN                     = 0x4\n\tETHER_CRC_POLY_BE                 = 0x4c11db6\n\tETHER_CRC_POLY_LE                 = 0xedb88320\n\tETHER_HDR_LEN                     = 0xe\n\tETHER_MAX_DIX_LEN                 = 0x600\n\tETHER_MAX_HARDMTU_LEN             = 0xff9b\n\tETHER_MAX_LEN                     = 0x5ee\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = -0x3\n\tEVFILT_DEVICE                     = -0x8\n\tEVFILT_EXCEPT                     = -0x9\n\tEVFILT_PROC                       = -0x5\n\tEVFILT_READ                       = -0x1\n\tEVFILT_SIGNAL                     = -0x6\n\tEVFILT_SYSCOUNT                   = 0x9\n\tEVFILT_TIMER                      = -0x7\n\tEVFILT_VNODE                      = -0x4\n\tEVFILT_WRITE                      = -0x2\n\tEVL_ENCAPLEN                      = 0x4\n\tEVL_PRIO_BITS                     = 0xd\n\tEVL_PRIO_MAX                      = 0x7\n\tEVL_VLID_MASK                     = 0xfff\n\tEVL_VLID_MAX                      = 0xffe\n\tEVL_VLID_MIN                      = 0x1\n\tEVL_VLID_NULL                     = 0x0\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_DISPATCH                       = 0x80\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_RECEIPT                        = 0x40\n\tEV_SYSFLAGS                       = 0xf800\n\tEXTA                              = 0x4b00\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x400\n\tFLUSHO                            = 0x800000\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0xa\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETOWN                          = 0x5\n\tF_ISATTY                          = 0xb\n\tF_OK                              = 0x0\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x8e52\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_STATICARP                     = 0x20\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BLUETOOTH                     = 0xf8\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf7\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DUMMY                         = 0xf1\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ECONET                        = 0xce\n\tIFT_ENC                           = 0xf4\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf3\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INFINIBAND                    = 0xc7\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LINEGROUP                     = 0xd2\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MBIM                          = 0xfa\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFLOW                         = 0xf9\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_PON155                        = 0xcf\n\tIFT_PON622                        = 0xd0\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPATM                       = 0xc5\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf2\n\tIFT_Q2931                         = 0xc9\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SIPSIG                        = 0xcc\n\tIFT_SIPTG                         = 0xcb\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TELINK                        = 0xc8\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VIRTUALTG                     = 0xca\n\tIFT_VOICEDID                      = 0xd5\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEEMFGD                    = 0xd3\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFGDEANA                  = 0xd4\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERCABLE                = 0xc6\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_WIREGUARD                     = 0xfb\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIN_RFC3021_HOST                   = 0x1\n\tIN_RFC3021_NET                    = 0xfffffffe\n\tIN_RFC3021_NSHIFT                 = 0x1f\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_DIVERT                    = 0x102\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x103\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_MPLS                      = 0x89\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_SCTP                      = 0x84\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_UDPLITE                   = 0x88\n\tIPV6_AUTH_LEVEL                   = 0x35\n\tIPV6_AUTOFLOWLABEL                = 0x3b\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_ESP_NETWORK_LEVEL            = 0x37\n\tIPV6_ESP_TRANS_LEVEL              = 0x36\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xfffffff\n\tIPV6_FLOWLABEL_MASK               = 0xfffff\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPCOMP_LEVEL                 = 0x3c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MINHOPCOUNT                  = 0x41\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_OPTIONS                      = 0x1\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PIPEX                        = 0x3f\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVDSTPORT                  = 0x40\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTABLE                       = 0x1021\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_AUTH_LEVEL                     = 0x14\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_ESP_NETWORK_LEVEL              = 0x16\n\tIP_ESP_TRANS_LEVEL                = 0x15\n\tIP_HDRINCL                        = 0x2\n\tIP_IPCOMP_LEVEL                   = 0x1d\n\tIP_IPDEFTTL                       = 0x25\n\tIP_IPSECFLOWINFO                  = 0x24\n\tIP_IPSEC_LOCAL_AUTH               = 0x1b\n\tIP_IPSEC_LOCAL_CRED               = 0x19\n\tIP_IPSEC_LOCAL_ID                 = 0x17\n\tIP_IPSEC_REMOTE_AUTH              = 0x1c\n\tIP_IPSEC_REMOTE_CRED              = 0x1a\n\tIP_IPSEC_REMOTE_ID                = 0x18\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0xfff\n\tIP_MF                             = 0x2000\n\tIP_MINTTL                         = 0x20\n\tIP_MIN_MEMBERSHIPS                = 0xf\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PIPEX                          = 0x22\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVDSTPORT                    = 0x21\n\tIP_RECVIF                         = 0x1e\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVRTABLE                     = 0x23\n\tIP_RECVTTL                        = 0x1f\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_RTABLE                         = 0x1021\n\tIP_SENDSRCADDR                    = 0x7\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tITIMER_PROF                       = 0x2\n\tITIMER_REAL                       = 0x0\n\tITIMER_VIRTUAL                    = 0x1\n\tIUCLC                             = 0x1000\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLCNT_OVERLOAD_FLUSH               = 0x6\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x6\n\tMADV_NORMAL                       = 0x0\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SPACEAVAIL                   = 0x5\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ANON                          = 0x1000\n\tMAP_ANONYMOUS                     = 0x1000\n\tMAP_CONCEAL                       = 0x8000\n\tMAP_COPY                          = 0x2\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_FLAGMASK                      = 0xfff7\n\tMAP_HASSEMAPHORE                  = 0x0\n\tMAP_INHERIT                       = 0x0\n\tMAP_INHERIT_COPY                  = 0x1\n\tMAP_INHERIT_NONE                  = 0x2\n\tMAP_INHERIT_SHARE                 = 0x0\n\tMAP_INHERIT_ZERO                  = 0x3\n\tMAP_NOEXTEND                      = 0x0\n\tMAP_NORESERVE                     = 0x0\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x0\n\tMAP_SHARED                        = 0x1\n\tMAP_STACK                         = 0x4000\n\tMAP_TRYFIXED                      = 0x0\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DELEXPORT                     = 0x20000\n\tMNT_DOOMED                        = 0x8000000\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_FORCE                         = 0x80000\n\tMNT_LAZY                          = 0x3\n\tMNT_LOCAL                         = 0x1000\n\tMNT_NOATIME                       = 0x8000\n\tMNT_NODEV                         = 0x10\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOPERM                        = 0x20\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOWAIT                        = 0x2\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x4000000\n\tMNT_STALLED                       = 0x100000\n\tMNT_SWAPPABLE                     = 0x200000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0x400ffff\n\tMNT_WAIT                          = 0x1\n\tMNT_WANTRDWR                      = 0x2000000\n\tMNT_WXALLOWED                     = 0x800\n\tMOUNT_AFS                         = \"afs\"\n\tMOUNT_CD9660                      = \"cd9660\"\n\tMOUNT_EXT2FS                      = \"ext2fs\"\n\tMOUNT_FFS                         = \"ffs\"\n\tMOUNT_FUSEFS                      = \"fuse\"\n\tMOUNT_MFS                         = \"mfs\"\n\tMOUNT_MSDOS                       = \"msdos\"\n\tMOUNT_NCPFS                       = \"ncpfs\"\n\tMOUNT_NFS                         = \"nfs\"\n\tMOUNT_NTFS                        = \"ntfs\"\n\tMOUNT_TMPFS                       = \"tmpfs\"\n\tMOUNT_UDF                         = \"udf\"\n\tMOUNT_UFS                         = \"ffs\"\n\tMSG_BCAST                         = 0x100\n\tMSG_CMSG_CLOEXEC                  = 0x800\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOR                           = 0x8\n\tMSG_MCAST                         = 0x200\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_TRUNC                         = 0x10\n\tMSG_WAITALL                       = 0x40\n\tMSG_WAITFORONE                    = 0x1000\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x4\n\tMS_SYNC                           = 0x2\n\tNAME_MAX                          = 0xff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x3\n\tNET_RT_IFNAMES                    = 0x6\n\tNET_RT_MAXID                      = 0x8\n\tNET_RT_SOURCE                     = 0x7\n\tNET_RT_STATS                      = 0x4\n\tNET_RT_TABLE                      = 0x5\n\tNFDBITS                           = 0x20\n\tNOFLSH                            = 0x80000000\n\tNOKERNINFO                        = 0x2000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHANGE                       = 0x1\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EOF                          = 0x2\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_OOB                          = 0x4\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_TRUNCATE                     = 0x80\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOLCUC                             = 0x20\n\tONLCR                             = 0x2\n\tONLRET                            = 0x80\n\tONOCR                             = 0x40\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tOXTABS                            = 0x4\n\tO_ACCMODE                         = 0x3\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x10000\n\tO_CREAT                           = 0x200\n\tO_DIRECTORY                       = 0x20000\n\tO_DSYNC                           = 0x80\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_RSYNC                           = 0x80\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPF_FLUSH                          = 0x1\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BFD                          = 0xb\n\tRTAX_BRD                          = 0x7\n\tRTAX_DNS                          = 0xc\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_LABEL                        = 0xa\n\tRTAX_MAX                          = 0xf\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_SEARCH                       = 0xe\n\tRTAX_SRC                          = 0x8\n\tRTAX_SRCMASK                      = 0x9\n\tRTAX_STATIC                       = 0xd\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BFD                           = 0x800\n\tRTA_BRD                           = 0x80\n\tRTA_DNS                           = 0x1000\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_LABEL                         = 0x400\n\tRTA_NETMASK                       = 0x4\n\tRTA_SEARCH                        = 0x4000\n\tRTA_SRC                           = 0x100\n\tRTA_SRCMASK                       = 0x200\n\tRTA_STATIC                        = 0x2000\n\tRTF_ANNOUNCE                      = 0x4000\n\tRTF_BFD                           = 0x1000000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_BROADCAST                     = 0x400000\n\tRTF_CACHED                        = 0x20000\n\tRTF_CLONED                        = 0x10000\n\tRTF_CLONING                       = 0x100\n\tRTF_CONNECTED                     = 0x800000\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_FMASK                         = 0x110fc08\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_LOCAL                         = 0x200000\n\tRTF_MODIFIED                      = 0x20\n\tRTF_MPATH                         = 0x40000\n\tRTF_MPLS                          = 0x100000\n\tRTF_MULTICAST                     = 0x200\n\tRTF_PERMANENT_ARP                 = 0x2000\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_PROTO3                        = 0x2000\n\tRTF_REJECT                        = 0x8\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_USETRAILERS                   = 0x8000\n\tRTM_80211INFO                     = 0x15\n\tRTM_ADD                           = 0x1\n\tRTM_BFD                           = 0x12\n\tRTM_CHANGE                        = 0x3\n\tRTM_CHGADDRATTR                   = 0x14\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_DESYNC                        = 0x10\n\tRTM_GET                           = 0x4\n\tRTM_IFANNOUNCE                    = 0xf\n\tRTM_IFINFO                        = 0xe\n\tRTM_INVALIDATE                    = 0x11\n\tRTM_LOSING                        = 0x5\n\tRTM_MAXSIZE                       = 0x800\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_PROPOSAL                      = 0x13\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_SOURCE                        = 0x16\n\tRTM_VERSION                       = 0x5\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRT_TABLEID_BITS                   = 0x8\n\tRT_TABLEID_MASK                   = 0xff\n\tRT_TABLEID_MAX                    = 0xff\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tRUSAGE_THREAD                     = 0x1\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x4\n\tSEEK_CUR                          = 0x1\n\tSEEK_END                          = 0x2\n\tSEEK_SET                          = 0x0\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80206931\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCAIFGROUP                      = 0x80286987\n\tSIOCATMARK                        = 0x40047307\n\tSIOCBRDGADD                       = 0x8060693c\n\tSIOCBRDGADDL                      = 0x80606949\n\tSIOCBRDGADDS                      = 0x80606941\n\tSIOCBRDGARL                       = 0x808c694d\n\tSIOCBRDGDADDR                     = 0x81286947\n\tSIOCBRDGDEL                       = 0x8060693d\n\tSIOCBRDGDELS                      = 0x80606942\n\tSIOCBRDGFLUSH                     = 0x80606948\n\tSIOCBRDGFRL                       = 0x808c694e\n\tSIOCBRDGGCACHE                    = 0xc0146941\n\tSIOCBRDGGFD                       = 0xc0146952\n\tSIOCBRDGGHT                       = 0xc0146951\n\tSIOCBRDGGIFFLGS                   = 0xc060693e\n\tSIOCBRDGGMA                       = 0xc0146953\n\tSIOCBRDGGPARAM                    = 0xc0406958\n\tSIOCBRDGGPRI                      = 0xc0146950\n\tSIOCBRDGGRL                       = 0xc030694f\n\tSIOCBRDGGTO                       = 0xc0146946\n\tSIOCBRDGIFS                       = 0xc0606942\n\tSIOCBRDGRTS                       = 0xc0206943\n\tSIOCBRDGSADDR                     = 0xc1286944\n\tSIOCBRDGSCACHE                    = 0x80146940\n\tSIOCBRDGSFD                       = 0x80146952\n\tSIOCBRDGSHT                       = 0x80146951\n\tSIOCBRDGSIFCOST                   = 0x80606955\n\tSIOCBRDGSIFFLGS                   = 0x8060693f\n\tSIOCBRDGSIFPRIO                   = 0x80606954\n\tSIOCBRDGSIFPROT                   = 0x8060694a\n\tSIOCBRDGSMA                       = 0x80146953\n\tSIOCBRDGSPRI                      = 0x80146950\n\tSIOCBRDGSPROTO                    = 0x8014695a\n\tSIOCBRDGSTO                       = 0x80146945\n\tSIOCBRDGSTXHC                     = 0x80146959\n\tSIOCDELLABEL                      = 0x80206997\n\tSIOCDELMULTI                      = 0x80206932\n\tSIOCDIFADDR                       = 0x80206919\n\tSIOCDIFGROUP                      = 0x80286989\n\tSIOCDIFPARENT                     = 0x802069b4\n\tSIOCDIFPHYADDR                    = 0x80206949\n\tSIOCDPWE3NEIGHBOR                 = 0x802069de\n\tSIOCDVNETID                       = 0x802069af\n\tSIOCGETKALIVE                     = 0xc01869a4\n\tSIOCGETLABEL                      = 0x8020699a\n\tSIOCGETMPWCFG                     = 0xc02069ae\n\tSIOCGETPFLOW                      = 0xc02069fe\n\tSIOCGETPFSYNC                     = 0xc02069f8\n\tSIOCGETSGCNT                      = 0xc0207534\n\tSIOCGETVIFCNT                     = 0xc0287533\n\tSIOCGETVLAN                       = 0xc0206990\n\tSIOCGIFADDR                       = 0xc0206921\n\tSIOCGIFBRDADDR                    = 0xc0206923\n\tSIOCGIFCONF                       = 0xc0106924\n\tSIOCGIFDATA                       = 0xc020691b\n\tSIOCGIFDESCR                      = 0xc0206981\n\tSIOCGIFDSTADDR                    = 0xc0206922\n\tSIOCGIFFLAGS                      = 0xc0206911\n\tSIOCGIFGATTR                      = 0xc028698b\n\tSIOCGIFGENERIC                    = 0xc020693a\n\tSIOCGIFGLIST                      = 0xc028698d\n\tSIOCGIFGMEMB                      = 0xc028698a\n\tSIOCGIFGROUP                      = 0xc0286988\n\tSIOCGIFHARDMTU                    = 0xc02069a5\n\tSIOCGIFLLPRIO                     = 0xc02069b6\n\tSIOCGIFMEDIA                      = 0xc0406938\n\tSIOCGIFMETRIC                     = 0xc0206917\n\tSIOCGIFMTU                        = 0xc020697e\n\tSIOCGIFNETMASK                    = 0xc0206925\n\tSIOCGIFPAIR                       = 0xc02069b1\n\tSIOCGIFPARENT                     = 0xc02069b3\n\tSIOCGIFPRIORITY                   = 0xc020699c\n\tSIOCGIFRDOMAIN                    = 0xc02069a0\n\tSIOCGIFRTLABEL                    = 0xc0206983\n\tSIOCGIFRXR                        = 0x802069aa\n\tSIOCGIFSFFPAGE                    = 0xc1126939\n\tSIOCGIFXFLAGS                     = 0xc020699e\n\tSIOCGLIFPHYADDR                   = 0xc218694b\n\tSIOCGLIFPHYDF                     = 0xc02069c2\n\tSIOCGLIFPHYECN                    = 0xc02069c8\n\tSIOCGLIFPHYRTABLE                 = 0xc02069a2\n\tSIOCGLIFPHYTTL                    = 0xc02069a9\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGPWE3                         = 0xc0206998\n\tSIOCGPWE3CTRLWORD                 = 0xc02069dc\n\tSIOCGPWE3FAT                      = 0xc02069dd\n\tSIOCGPWE3NEIGHBOR                 = 0xc21869de\n\tSIOCGRXHPRIO                      = 0xc02069db\n\tSIOCGSPPPPARAMS                   = 0xc0206994\n\tSIOCGTXHPRIO                      = 0xc02069c6\n\tSIOCGUMBINFO                      = 0xc02069be\n\tSIOCGUMBPARAM                     = 0xc02069c0\n\tSIOCGVH                           = 0xc02069f6\n\tSIOCGVNETFLOWID                   = 0xc02069c4\n\tSIOCGVNETID                       = 0xc02069a7\n\tSIOCIFAFATTACH                    = 0x801169ab\n\tSIOCIFAFDETACH                    = 0x801169ac\n\tSIOCIFCREATE                      = 0x8020697a\n\tSIOCIFDESTROY                     = 0x80206979\n\tSIOCIFGCLONERS                    = 0xc0106978\n\tSIOCSETKALIVE                     = 0x801869a3\n\tSIOCSETLABEL                      = 0x80206999\n\tSIOCSETMPWCFG                     = 0x802069ad\n\tSIOCSETPFLOW                      = 0x802069fd\n\tSIOCSETPFSYNC                     = 0x802069f7\n\tSIOCSETVLAN                       = 0x8020698f\n\tSIOCSIFADDR                       = 0x8020690c\n\tSIOCSIFBRDADDR                    = 0x80206913\n\tSIOCSIFDESCR                      = 0x80206980\n\tSIOCSIFDSTADDR                    = 0x8020690e\n\tSIOCSIFFLAGS                      = 0x80206910\n\tSIOCSIFGATTR                      = 0x8028698c\n\tSIOCSIFGENERIC                    = 0x80206939\n\tSIOCSIFLLADDR                     = 0x8020691f\n\tSIOCSIFLLPRIO                     = 0x802069b5\n\tSIOCSIFMEDIA                      = 0xc0206937\n\tSIOCSIFMETRIC                     = 0x80206918\n\tSIOCSIFMTU                        = 0x8020697f\n\tSIOCSIFNETMASK                    = 0x80206916\n\tSIOCSIFPAIR                       = 0x802069b0\n\tSIOCSIFPARENT                     = 0x802069b2\n\tSIOCSIFPRIORITY                   = 0x8020699b\n\tSIOCSIFRDOMAIN                    = 0x8020699f\n\tSIOCSIFRTLABEL                    = 0x80206982\n\tSIOCSIFXFLAGS                     = 0x8020699d\n\tSIOCSLIFPHYADDR                   = 0x8218694a\n\tSIOCSLIFPHYDF                     = 0x802069c1\n\tSIOCSLIFPHYECN                    = 0x802069c7\n\tSIOCSLIFPHYRTABLE                 = 0x802069a1\n\tSIOCSLIFPHYTTL                    = 0x802069a8\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSPWE3CTRLWORD                 = 0x802069dc\n\tSIOCSPWE3FAT                      = 0x802069dd\n\tSIOCSPWE3NEIGHBOR                 = 0x821869de\n\tSIOCSRXHPRIO                      = 0x802069db\n\tSIOCSSPPPPARAMS                   = 0x80206993\n\tSIOCSTXHPRIO                      = 0x802069c5\n\tSIOCSUMBPARAM                     = 0x802069bf\n\tSIOCSVH                           = 0xc02069f5\n\tSIOCSVNETFLOWID                   = 0x802069c3\n\tSIOCSVNETID                       = 0x802069a6\n\tSOCK_CLOEXEC                      = 0x8000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_DNS                          = 0x1000\n\tSOCK_NONBLOCK                     = 0x4000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_BINDANY                        = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DOMAIN                         = 0x1024\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NETPROC                        = 0x1020\n\tSO_OOBINLINE                      = 0x100\n\tSO_PEERCRED                       = 0x1022\n\tSO_PROTOCOL                       = 0x1025\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x1006\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_RTABLE                         = 0x1021\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x1005\n\tSO_SPLICE                         = 0x1023\n\tSO_TIMESTAMP                      = 0x800\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tSO_ZEROIZE                        = 0x2000\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tTCIFLUSH                          = 0x1\n\tTCIOFF                            = 0x3\n\tTCIOFLUSH                         = 0x3\n\tTCION                             = 0x4\n\tTCOFLUSH                          = 0x2\n\tTCOOFF                            = 0x1\n\tTCOON                             = 0x2\n\tTCPOPT_EOL                        = 0x0\n\tTCPOPT_MAXSEG                     = 0x2\n\tTCPOPT_NOP                        = 0x1\n\tTCPOPT_SACK                       = 0x5\n\tTCPOPT_SACK_HDR                   = 0x1010500\n\tTCPOPT_SACK_PERMITTED             = 0x4\n\tTCPOPT_SACK_PERMIT_HDR            = 0x1010402\n\tTCPOPT_SIGNATURE                  = 0x13\n\tTCPOPT_TIMESTAMP                  = 0x8\n\tTCPOPT_TSTAMP_HDR                 = 0x101080a\n\tTCPOPT_WINDOW                     = 0x3\n\tTCP_INFO                          = 0x9\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_SACK                      = 0x3\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MD5SIG                        = 0x4\n\tTCP_MSS                           = 0x200\n\tTCP_NODELAY                       = 0x1\n\tTCP_NOPUSH                        = 0x10\n\tTCP_SACKHOLE_LIMIT                = 0x80\n\tTCP_SACK_ENABLE                   = 0x8\n\tTCSAFLUSH                         = 0x2\n\tTIMER_ABSTIME                     = 0x1\n\tTIMER_RELTIME                     = 0x0\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCHKVERAUTH                    = 0x2000741e\n\tTIOCCLRVERAUTH                    = 0x2000741d\n\tTIOCCONS                          = 0x80047462\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLAG_CLOCAL                   = 0x2\n\tTIOCFLAG_CRTSCTS                  = 0x4\n\tTIOCFLAG_MDMBUF                   = 0x8\n\tTIOCFLAG_PPS                      = 0x10\n\tTIOCFLAG_SOFTCAR                  = 0x1\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGFLAGS                        = 0x4004745d\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGSID                          = 0x40047463\n\tTIOCGTSTAMP                       = 0x4010745b\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMODG                          = 0x4004746a\n\tTIOCMODS                          = 0x8004746d\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSETVERAUTH                    = 0x8004741c\n\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x8004745f\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x20007465\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSTSTAMP                       = 0x8008745a\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\n\tTIOCUCNTL_CBRK                    = 0x7a\n\tTIOCUCNTL_SBRK                    = 0x7b\n\tTOSTOP                            = 0x400000\n\tUTIME_NOW                         = -0x2\n\tUTIME_OMIT                        = -0x1\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVM_ANONMIN                        = 0x7\n\tVM_LOADAVG                        = 0x2\n\tVM_MALLOC_CONF                    = 0xc\n\tVM_MAXID                          = 0xd\n\tVM_MAXSLP                         = 0xa\n\tVM_METER                          = 0x1\n\tVM_NKMEMPAGES                     = 0x6\n\tVM_PSSTRINGS                      = 0x3\n\tVM_SWAPENCRYPT                    = 0x5\n\tVM_USPACE                         = 0xb\n\tVM_UVMEXP                         = 0x4\n\tVM_VNODEMIN                       = 0x9\n\tVM_VTEXTMIN                       = 0x8\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWALTSIG                           = 0x4\n\tWCONTINUED                        = 0x8\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\n\tWUNTRACED                         = 0x2\n\tXCASE                             = 0x1000000\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x5c)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x58)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x59)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEIPSEC          = syscall.Errno(0x52)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x5f)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMEDIUMTYPE     = syscall.Errno(0x56)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x53)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOMEDIUM       = syscall.Errno(0x55)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x5a)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5d)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x5b)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x57)\n\tEOWNERDEAD      = syscall.Errno(0x5e)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5f)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disk quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC program not available\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIPSEC\", \"IPsec processing failure\"},\n\t{83, \"ENOATTR\", \"attribute not found\"},\n\t{84, \"EILSEQ\", \"illegal byte sequence\"},\n\t{85, \"ENOMEDIUM\", \"no medium found\"},\n\t{86, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{87, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{88, \"ECANCELED\", \"operation canceled\"},\n\t{89, \"EIDRM\", \"identifier removed\"},\n\t{90, \"ENOMSG\", \"no message of desired type\"},\n\t{91, \"ENOTSUP\", \"not supported\"},\n\t{92, \"EBADMSG\", \"bad message\"},\n\t{93, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{94, \"EOWNERDEAD\", \"previous owner died\"},\n\t{95, \"ELAST\", \"protocol error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"thread AST\"},\n\t{81920, \"SIGSTKSZ\", \"unknown signal\"},\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zerrors_openbsd_ppc64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc64 && openbsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_BLUETOOTH                      = 0x20\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_ENCAP                          = 0x1c\n\tAF_HYLINK                         = 0xf\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x18\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_KEY                            = 0x1e\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x24\n\tAF_MPLS                           = 0x21\n\tAF_NATM                           = 0x1b\n\tAF_NS                             = 0x6\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x11\n\tAF_SIP                            = 0x1d\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tALTWERASE                         = 0x200\n\tARPHRD_ETHER                      = 0x1\n\tARPHRD_FRELAY                     = 0xf\n\tARPHRD_IEEE1394                   = 0x18\n\tARPHRD_IEEE802                    = 0x6\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB9600                             = 0x2580\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDIRFILT                      = 0x4004427c\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc010427b\n\tBIOCGETIF                         = 0x4020426b\n\tBIOCGFILDROP                      = 0x40044278\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRSIG                         = 0x40044273\n\tBIOCGRTIMEOUT                     = 0x4010426e\n\tBIOCGSTATS                        = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCLOCK                          = 0x20004276\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDIRFILT                      = 0x8004427d\n\tBIOCSDLT                          = 0x8004427a\n\tBIOCSETF                          = 0x80104267\n\tBIOCSETIF                         = 0x8020426c\n\tBIOCSETWF                         = 0x80104277\n\tBIOCSFILDROP                      = 0x80044279\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRSIG                         = 0x80044272\n\tBIOCSRTIMEOUT                     = 0x8010426d\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DIRECTION_IN                  = 0x1\n\tBPF_DIRECTION_OUT                 = 0x2\n\tBPF_DIV                           = 0x30\n\tBPF_FILDROP_CAPTURE               = 0x1\n\tBPF_FILDROP_DROP                  = 0x2\n\tBPF_FILDROP_PASS                  = 0x0\n\tBPF_F_DIR_IN                      = 0x10\n\tBPF_F_DIR_MASK                    = 0x30\n\tBPF_F_DIR_OUT                     = 0x20\n\tBPF_F_DIR_SHIFT                   = 0x4\n\tBPF_F_FLOWID                      = 0x8\n\tBPF_F_PRI_MASK                    = 0x7\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x200000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RND                           = 0xc0\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLOCK_BOOTTIME                    = 0x6\n\tCLOCK_MONOTONIC                   = 0x3\n\tCLOCK_PROCESS_CPUTIME_ID          = 0x2\n\tCLOCK_REALTIME                    = 0x0\n\tCLOCK_THREAD_CPUTIME_ID           = 0x4\n\tCLOCK_UPTIME                      = 0x5\n\tCPUSTATES                         = 0x6\n\tCP_IDLE                           = 0x5\n\tCP_INTR                           = 0x4\n\tCP_NICE                           = 0x1\n\tCP_SPIN                           = 0x3\n\tCP_SYS                            = 0x2\n\tCP_USER                           = 0x0\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x10000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0xff\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tDIOCADDQUEUE                      = 0xc110445d\n\tDIOCADDRULE                       = 0xcd604404\n\tDIOCADDSTATE                      = 0xc1084425\n\tDIOCCHANGERULE                    = 0xcd60441a\n\tDIOCCLRIFFLAG                     = 0xc028445a\n\tDIOCCLRSRCNODES                   = 0x20004455\n\tDIOCCLRSTATES                     = 0xc0e04412\n\tDIOCCLRSTATUS                     = 0xc0284416\n\tDIOCGETLIMIT                      = 0xc0084427\n\tDIOCGETQSTATS                     = 0xc1204460\n\tDIOCGETQUEUE                      = 0xc110445f\n\tDIOCGETQUEUES                     = 0xc110445e\n\tDIOCGETRULE                       = 0xcd604407\n\tDIOCGETRULES                      = 0xcd604406\n\tDIOCGETRULESET                    = 0xc444443b\n\tDIOCGETRULESETS                   = 0xc444443a\n\tDIOCGETSRCNODES                   = 0xc0104454\n\tDIOCGETSTATE                      = 0xc1084413\n\tDIOCGETSTATES                     = 0xc0104419\n\tDIOCGETSTATUS                     = 0xc1e84415\n\tDIOCGETSYNFLWATS                  = 0xc0084463\n\tDIOCGETTIMEOUT                    = 0xc008441e\n\tDIOCIGETIFACES                    = 0xc0284457\n\tDIOCKILLSRCNODES                  = 0xc080445b\n\tDIOCKILLSTATES                    = 0xc0e04429\n\tDIOCNATLOOK                       = 0xc0504417\n\tDIOCOSFPADD                       = 0xc088444f\n\tDIOCOSFPFLUSH                     = 0x2000444e\n\tDIOCOSFPGET                       = 0xc0884450\n\tDIOCRADDADDRS                     = 0xc4504443\n\tDIOCRADDTABLES                    = 0xc450443d\n\tDIOCRCLRADDRS                     = 0xc4504442\n\tDIOCRCLRASTATS                    = 0xc4504448\n\tDIOCRCLRTABLES                    = 0xc450443c\n\tDIOCRCLRTSTATS                    = 0xc4504441\n\tDIOCRDELADDRS                     = 0xc4504444\n\tDIOCRDELTABLES                    = 0xc450443e\n\tDIOCRGETADDRS                     = 0xc4504446\n\tDIOCRGETASTATS                    = 0xc4504447\n\tDIOCRGETTABLES                    = 0xc450443f\n\tDIOCRGETTSTATS                    = 0xc4504440\n\tDIOCRINADEFINE                    = 0xc450444d\n\tDIOCRSETADDRS                     = 0xc4504445\n\tDIOCRSETTFLAGS                    = 0xc450444a\n\tDIOCRTSTADDRS                     = 0xc4504449\n\tDIOCSETDEBUG                      = 0xc0044418\n\tDIOCSETHOSTID                     = 0xc0044456\n\tDIOCSETIFFLAG                     = 0xc0284459\n\tDIOCSETLIMIT                      = 0xc0084428\n\tDIOCSETREASS                      = 0xc004445c\n\tDIOCSETSTATUSIF                   = 0xc0284414\n\tDIOCSETSYNCOOKIES                 = 0xc0014462\n\tDIOCSETSYNFLWATS                  = 0xc0084461\n\tDIOCSETTIMEOUT                    = 0xc008441d\n\tDIOCSTART                         = 0x20004401\n\tDIOCSTOP                          = 0x20004402\n\tDIOCXBEGIN                        = 0xc0104451\n\tDIOCXCOMMIT                       = 0xc0104452\n\tDIOCXROLLBACK                     = 0xc0104453\n\tDLT_ARCNET                        = 0x7\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AX25                          = 0x3\n\tDLT_CHAOS                         = 0x5\n\tDLT_C_HDLC                        = 0x68\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0xd\n\tDLT_FDDI                          = 0xa\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_LOOP                          = 0xc\n\tDLT_MPLS                          = 0xdb\n\tDLT_NULL                          = 0x0\n\tDLT_OPENFLOW                      = 0x10b\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0x10\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PRONET                        = 0x4\n\tDLT_RAW                           = 0xe\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xf\n\tDLT_USBPCAP                       = 0xf9\n\tDLT_USER0                         = 0x93\n\tDLT_USER1                         = 0x94\n\tDLT_USER10                        = 0x9d\n\tDLT_USER11                        = 0x9e\n\tDLT_USER12                        = 0x9f\n\tDLT_USER13                        = 0xa0\n\tDLT_USER14                        = 0xa1\n\tDLT_USER15                        = 0xa2\n\tDLT_USER2                         = 0x95\n\tDLT_USER3                         = 0x96\n\tDLT_USER4                         = 0x97\n\tDLT_USER5                         = 0x98\n\tDLT_USER6                         = 0x99\n\tDLT_USER7                         = 0x9a\n\tDLT_USER8                         = 0x9b\n\tDLT_USER9                         = 0x9c\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEMT_TAGOVF                        = 0x1\n\tEMUL_ENABLED                      = 0x1\n\tEMUL_NATIVE                       = 0x2\n\tENDRUNDISC                        = 0x9\n\tETH64_8021_RSVD_MASK              = 0xfffffffffff0\n\tETH64_8021_RSVD_PREFIX            = 0x180c2000000\n\tETHERMIN                          = 0x2e\n\tETHERMTU                          = 0x5dc\n\tETHERTYPE_8023                    = 0x4\n\tETHERTYPE_AARP                    = 0x80f3\n\tETHERTYPE_ACCTON                  = 0x8390\n\tETHERTYPE_AEONIC                  = 0x8036\n\tETHERTYPE_ALPHA                   = 0x814a\n\tETHERTYPE_AMBER                   = 0x6008\n\tETHERTYPE_AMOEBA                  = 0x8145\n\tETHERTYPE_AOE                     = 0x88a2\n\tETHERTYPE_APOLLO                  = 0x80f7\n\tETHERTYPE_APOLLODOMAIN            = 0x8019\n\tETHERTYPE_APPLETALK               = 0x809b\n\tETHERTYPE_APPLITEK                = 0x80c7\n\tETHERTYPE_ARGONAUT                = 0x803a\n\tETHERTYPE_ARP                     = 0x806\n\tETHERTYPE_AT                      = 0x809b\n\tETHERTYPE_ATALK                   = 0x809b\n\tETHERTYPE_ATOMIC                  = 0x86df\n\tETHERTYPE_ATT                     = 0x8069\n\tETHERTYPE_ATTSTANFORD             = 0x8008\n\tETHERTYPE_AUTOPHON                = 0x806a\n\tETHERTYPE_AXIS                    = 0x8856\n\tETHERTYPE_BCLOOP                  = 0x9003\n\tETHERTYPE_BOFL                    = 0x8102\n\tETHERTYPE_CABLETRON               = 0x7034\n\tETHERTYPE_CHAOS                   = 0x804\n\tETHERTYPE_COMDESIGN               = 0x806c\n\tETHERTYPE_COMPUGRAPHIC            = 0x806d\n\tETHERTYPE_COUNTERPOINT            = 0x8062\n\tETHERTYPE_CRONUS                  = 0x8004\n\tETHERTYPE_CRONUSVLN               = 0x8003\n\tETHERTYPE_DCA                     = 0x1234\n\tETHERTYPE_DDE                     = 0x807b\n\tETHERTYPE_DEBNI                   = 0xaaaa\n\tETHERTYPE_DECAM                   = 0x8048\n\tETHERTYPE_DECCUST                 = 0x6006\n\tETHERTYPE_DECDIAG                 = 0x6005\n\tETHERTYPE_DECDNS                  = 0x803c\n\tETHERTYPE_DECDTS                  = 0x803e\n\tETHERTYPE_DECEXPER                = 0x6000\n\tETHERTYPE_DECLAST                 = 0x8041\n\tETHERTYPE_DECLTM                  = 0x803f\n\tETHERTYPE_DECMUMPS                = 0x6009\n\tETHERTYPE_DECNETBIOS              = 0x8040\n\tETHERTYPE_DELTACON                = 0x86de\n\tETHERTYPE_DIDDLE                  = 0x4321\n\tETHERTYPE_DLOG1                   = 0x660\n\tETHERTYPE_DLOG2                   = 0x661\n\tETHERTYPE_DN                      = 0x6003\n\tETHERTYPE_DOGFIGHT                = 0x1989\n\tETHERTYPE_DSMD                    = 0x8039\n\tETHERTYPE_EAPOL                   = 0x888e\n\tETHERTYPE_ECMA                    = 0x803\n\tETHERTYPE_ENCRYPT                 = 0x803d\n\tETHERTYPE_ES                      = 0x805d\n\tETHERTYPE_EXCELAN                 = 0x8010\n\tETHERTYPE_EXPERDATA               = 0x8049\n\tETHERTYPE_FLIP                    = 0x8146\n\tETHERTYPE_FLOWCONTROL             = 0x8808\n\tETHERTYPE_FRARP                   = 0x808\n\tETHERTYPE_GENDYN                  = 0x8068\n\tETHERTYPE_HAYES                   = 0x8130\n\tETHERTYPE_HIPPI_FP                = 0x8180\n\tETHERTYPE_HITACHI                 = 0x8820\n\tETHERTYPE_HP                      = 0x8005\n\tETHERTYPE_IEEEPUP                 = 0xa00\n\tETHERTYPE_IEEEPUPAT               = 0xa01\n\tETHERTYPE_IMLBL                   = 0x4c42\n\tETHERTYPE_IMLBLDIAG               = 0x424c\n\tETHERTYPE_IP                      = 0x800\n\tETHERTYPE_IPAS                    = 0x876c\n\tETHERTYPE_IPV6                    = 0x86dd\n\tETHERTYPE_IPX                     = 0x8137\n\tETHERTYPE_IPXNEW                  = 0x8037\n\tETHERTYPE_KALPANA                 = 0x8582\n\tETHERTYPE_LANBRIDGE               = 0x8038\n\tETHERTYPE_LANPROBE                = 0x8888\n\tETHERTYPE_LAT                     = 0x6004\n\tETHERTYPE_LBACK                   = 0x9000\n\tETHERTYPE_LITTLE                  = 0x8060\n\tETHERTYPE_LLDP                    = 0x88cc\n\tETHERTYPE_LOGICRAFT               = 0x8148\n\tETHERTYPE_LOOPBACK                = 0x9000\n\tETHERTYPE_MACSEC                  = 0x88e5\n\tETHERTYPE_MATRA                   = 0x807a\n\tETHERTYPE_MAX                     = 0xffff\n\tETHERTYPE_MERIT                   = 0x807c\n\tETHERTYPE_MICP                    = 0x873a\n\tETHERTYPE_MOPDL                   = 0x6001\n\tETHERTYPE_MOPRC                   = 0x6002\n\tETHERTYPE_MOTOROLA                = 0x818d\n\tETHERTYPE_MPLS                    = 0x8847\n\tETHERTYPE_MPLS_MCAST              = 0x8848\n\tETHERTYPE_MUMPS                   = 0x813f\n\tETHERTYPE_NBPCC                   = 0x3c04\n\tETHERTYPE_NBPCLAIM                = 0x3c09\n\tETHERTYPE_NBPCLREQ                = 0x3c05\n\tETHERTYPE_NBPCLRSP                = 0x3c06\n\tETHERTYPE_NBPCREQ                 = 0x3c02\n\tETHERTYPE_NBPCRSP                 = 0x3c03\n\tETHERTYPE_NBPDG                   = 0x3c07\n\tETHERTYPE_NBPDGB                  = 0x3c08\n\tETHERTYPE_NBPDLTE                 = 0x3c0a\n\tETHERTYPE_NBPRAR                  = 0x3c0c\n\tETHERTYPE_NBPRAS                  = 0x3c0b\n\tETHERTYPE_NBPRST                  = 0x3c0d\n\tETHERTYPE_NBPSCD                  = 0x3c01\n\tETHERTYPE_NBPVCD                  = 0x3c00\n\tETHERTYPE_NBS                     = 0x802\n\tETHERTYPE_NCD                     = 0x8149\n\tETHERTYPE_NESTAR                  = 0x8006\n\tETHERTYPE_NETBEUI                 = 0x8191\n\tETHERTYPE_NHRP                    = 0x2001\n\tETHERTYPE_NOVELL                  = 0x8138\n\tETHERTYPE_NS                      = 0x600\n\tETHERTYPE_NSAT                    = 0x601\n\tETHERTYPE_NSCOMPAT                = 0x807\n\tETHERTYPE_NSH                     = 0x984f\n\tETHERTYPE_NTRAILER                = 0x10\n\tETHERTYPE_OS9                     = 0x7007\n\tETHERTYPE_OS9NET                  = 0x7009\n\tETHERTYPE_PACER                   = 0x80c6\n\tETHERTYPE_PBB                     = 0x88e7\n\tETHERTYPE_PCS                     = 0x4242\n\tETHERTYPE_PLANNING                = 0x8044\n\tETHERTYPE_PPP                     = 0x880b\n\tETHERTYPE_PPPOE                   = 0x8864\n\tETHERTYPE_PPPOEDISC               = 0x8863\n\tETHERTYPE_PRIMENTS                = 0x7031\n\tETHERTYPE_PUP                     = 0x200\n\tETHERTYPE_PUPAT                   = 0x200\n\tETHERTYPE_QINQ                    = 0x88a8\n\tETHERTYPE_RACAL                   = 0x7030\n\tETHERTYPE_RATIONAL                = 0x8150\n\tETHERTYPE_RAWFR                   = 0x6559\n\tETHERTYPE_RCL                     = 0x1995\n\tETHERTYPE_RDP                     = 0x8739\n\tETHERTYPE_RETIX                   = 0x80f2\n\tETHERTYPE_REVARP                  = 0x8035\n\tETHERTYPE_SCA                     = 0x6007\n\tETHERTYPE_SECTRA                  = 0x86db\n\tETHERTYPE_SECUREDATA              = 0x876d\n\tETHERTYPE_SGITW                   = 0x817e\n\tETHERTYPE_SG_BOUNCE               = 0x8016\n\tETHERTYPE_SG_DIAG                 = 0x8013\n\tETHERTYPE_SG_NETGAMES             = 0x8014\n\tETHERTYPE_SG_RESV                 = 0x8015\n\tETHERTYPE_SIMNET                  = 0x5208\n\tETHERTYPE_SLOW                    = 0x8809\n\tETHERTYPE_SNA                     = 0x80d5\n\tETHERTYPE_SNMP                    = 0x814c\n\tETHERTYPE_SONIX                   = 0xfaf5\n\tETHERTYPE_SPIDER                  = 0x809f\n\tETHERTYPE_SPRITE                  = 0x500\n\tETHERTYPE_STP                     = 0x8181\n\tETHERTYPE_TALARIS                 = 0x812b\n\tETHERTYPE_TALARISMC               = 0x852b\n\tETHERTYPE_TCPCOMP                 = 0x876b\n\tETHERTYPE_TCPSM                   = 0x9002\n\tETHERTYPE_TEC                     = 0x814f\n\tETHERTYPE_TIGAN                   = 0x802f\n\tETHERTYPE_TRAIL                   = 0x1000\n\tETHERTYPE_TRANSETHER              = 0x6558\n\tETHERTYPE_TYMSHARE                = 0x802e\n\tETHERTYPE_UBBST                   = 0x7005\n\tETHERTYPE_UBDEBUG                 = 0x900\n\tETHERTYPE_UBDIAGLOOP              = 0x7002\n\tETHERTYPE_UBDL                    = 0x7000\n\tETHERTYPE_UBNIU                   = 0x7001\n\tETHERTYPE_UBNMC                   = 0x7003\n\tETHERTYPE_VALID                   = 0x1600\n\tETHERTYPE_VARIAN                  = 0x80dd\n\tETHERTYPE_VAXELN                  = 0x803b\n\tETHERTYPE_VEECO                   = 0x8067\n\tETHERTYPE_VEXP                    = 0x805b\n\tETHERTYPE_VGLAB                   = 0x8131\n\tETHERTYPE_VINES                   = 0xbad\n\tETHERTYPE_VINESECHO               = 0xbaf\n\tETHERTYPE_VINESLOOP               = 0xbae\n\tETHERTYPE_VITAL                   = 0xff00\n\tETHERTYPE_VLAN                    = 0x8100\n\tETHERTYPE_VLTLMAN                 = 0x8080\n\tETHERTYPE_VPROD                   = 0x805c\n\tETHERTYPE_VURESERVED              = 0x8147\n\tETHERTYPE_WATERLOO                = 0x8130\n\tETHERTYPE_WELLFLEET               = 0x8103\n\tETHERTYPE_X25                     = 0x805\n\tETHERTYPE_X75                     = 0x801\n\tETHERTYPE_XNSSM                   = 0x9001\n\tETHERTYPE_XTP                     = 0x817d\n\tETHER_ADDR_LEN                    = 0x6\n\tETHER_ALIGN                       = 0x2\n\tETHER_CRC_LEN                     = 0x4\n\tETHER_CRC_POLY_BE                 = 0x4c11db6\n\tETHER_CRC_POLY_LE                 = 0xedb88320\n\tETHER_HDR_LEN                     = 0xe\n\tETHER_MAX_DIX_LEN                 = 0x600\n\tETHER_MAX_HARDMTU_LEN             = 0xff9b\n\tETHER_MAX_LEN                     = 0x5ee\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = -0x3\n\tEVFILT_DEVICE                     = -0x8\n\tEVFILT_EXCEPT                     = -0x9\n\tEVFILT_PROC                       = -0x5\n\tEVFILT_READ                       = -0x1\n\tEVFILT_SIGNAL                     = -0x6\n\tEVFILT_SYSCOUNT                   = 0x9\n\tEVFILT_TIMER                      = -0x7\n\tEVFILT_VNODE                      = -0x4\n\tEVFILT_WRITE                      = -0x2\n\tEVL_ENCAPLEN                      = 0x4\n\tEVL_PRIO_BITS                     = 0xd\n\tEVL_PRIO_MAX                      = 0x7\n\tEVL_VLID_MASK                     = 0xfff\n\tEVL_VLID_MAX                      = 0xffe\n\tEVL_VLID_MIN                      = 0x1\n\tEVL_VLID_NULL                     = 0x0\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_DISPATCH                       = 0x80\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_RECEIPT                        = 0x40\n\tEV_SYSFLAGS                       = 0xf800\n\tEXTA                              = 0x4b00\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x400\n\tFLUSHO                            = 0x800000\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0xa\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETOWN                          = 0x5\n\tF_ISATTY                          = 0xb\n\tF_OK                              = 0x0\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x8e52\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_STATICARP                     = 0x20\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BLUETOOTH                     = 0xf8\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf7\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DUMMY                         = 0xf1\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ECONET                        = 0xce\n\tIFT_ENC                           = 0xf4\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf3\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INFINIBAND                    = 0xc7\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LINEGROUP                     = 0xd2\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MBIM                          = 0xfa\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFLOW                         = 0xf9\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_PON155                        = 0xcf\n\tIFT_PON622                        = 0xd0\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPATM                       = 0xc5\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf2\n\tIFT_Q2931                         = 0xc9\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SIPSIG                        = 0xcc\n\tIFT_SIPTG                         = 0xcb\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TELINK                        = 0xc8\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VIRTUALTG                     = 0xca\n\tIFT_VOICEDID                      = 0xd5\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEEMFGD                    = 0xd3\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFGDEANA                  = 0xd4\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERCABLE                = 0xc6\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_WIREGUARD                     = 0xfb\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIN_RFC3021_HOST                   = 0x1\n\tIN_RFC3021_NET                    = 0xfffffffe\n\tIN_RFC3021_NSHIFT                 = 0x1f\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_DIVERT                    = 0x102\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x103\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_MPLS                      = 0x89\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_SCTP                      = 0x84\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_UDPLITE                   = 0x88\n\tIPV6_AUTH_LEVEL                   = 0x35\n\tIPV6_AUTOFLOWLABEL                = 0x3b\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_ESP_NETWORK_LEVEL            = 0x37\n\tIPV6_ESP_TRANS_LEVEL              = 0x36\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xfffffff\n\tIPV6_FLOWLABEL_MASK               = 0xfffff\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPCOMP_LEVEL                 = 0x3c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MINHOPCOUNT                  = 0x41\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_OPTIONS                      = 0x1\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PIPEX                        = 0x3f\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVDSTPORT                  = 0x40\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTABLE                       = 0x1021\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_AUTH_LEVEL                     = 0x14\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_ESP_NETWORK_LEVEL              = 0x16\n\tIP_ESP_TRANS_LEVEL                = 0x15\n\tIP_HDRINCL                        = 0x2\n\tIP_IPCOMP_LEVEL                   = 0x1d\n\tIP_IPDEFTTL                       = 0x25\n\tIP_IPSECFLOWINFO                  = 0x24\n\tIP_IPSEC_LOCAL_AUTH               = 0x1b\n\tIP_IPSEC_LOCAL_CRED               = 0x19\n\tIP_IPSEC_LOCAL_ID                 = 0x17\n\tIP_IPSEC_REMOTE_AUTH              = 0x1c\n\tIP_IPSEC_REMOTE_CRED              = 0x1a\n\tIP_IPSEC_REMOTE_ID                = 0x18\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0xfff\n\tIP_MF                             = 0x2000\n\tIP_MINTTL                         = 0x20\n\tIP_MIN_MEMBERSHIPS                = 0xf\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PIPEX                          = 0x22\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVDSTPORT                    = 0x21\n\tIP_RECVIF                         = 0x1e\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVRTABLE                     = 0x23\n\tIP_RECVTTL                        = 0x1f\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_RTABLE                         = 0x1021\n\tIP_SENDSRCADDR                    = 0x7\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tITIMER_PROF                       = 0x2\n\tITIMER_REAL                       = 0x0\n\tITIMER_VIRTUAL                    = 0x1\n\tIUCLC                             = 0x1000\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLCNT_OVERLOAD_FLUSH               = 0x6\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x6\n\tMADV_NORMAL                       = 0x0\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SPACEAVAIL                   = 0x5\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ANON                          = 0x1000\n\tMAP_ANONYMOUS                     = 0x1000\n\tMAP_CONCEAL                       = 0x8000\n\tMAP_COPY                          = 0x2\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_FLAGMASK                      = 0xfff7\n\tMAP_HASSEMAPHORE                  = 0x0\n\tMAP_INHERIT                       = 0x0\n\tMAP_INHERIT_COPY                  = 0x1\n\tMAP_INHERIT_NONE                  = 0x2\n\tMAP_INHERIT_SHARE                 = 0x0\n\tMAP_INHERIT_ZERO                  = 0x3\n\tMAP_NOEXTEND                      = 0x0\n\tMAP_NORESERVE                     = 0x0\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x0\n\tMAP_SHARED                        = 0x1\n\tMAP_STACK                         = 0x4000\n\tMAP_TRYFIXED                      = 0x0\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DELEXPORT                     = 0x20000\n\tMNT_DOOMED                        = 0x8000000\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_FORCE                         = 0x80000\n\tMNT_LAZY                          = 0x3\n\tMNT_LOCAL                         = 0x1000\n\tMNT_NOATIME                       = 0x8000\n\tMNT_NODEV                         = 0x10\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOPERM                        = 0x20\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOWAIT                        = 0x2\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x4000000\n\tMNT_STALLED                       = 0x100000\n\tMNT_SWAPPABLE                     = 0x200000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0x400ffff\n\tMNT_WAIT                          = 0x1\n\tMNT_WANTRDWR                      = 0x2000000\n\tMNT_WXALLOWED                     = 0x800\n\tMOUNT_AFS                         = \"afs\"\n\tMOUNT_CD9660                      = \"cd9660\"\n\tMOUNT_EXT2FS                      = \"ext2fs\"\n\tMOUNT_FFS                         = \"ffs\"\n\tMOUNT_FUSEFS                      = \"fuse\"\n\tMOUNT_MFS                         = \"mfs\"\n\tMOUNT_MSDOS                       = \"msdos\"\n\tMOUNT_NCPFS                       = \"ncpfs\"\n\tMOUNT_NFS                         = \"nfs\"\n\tMOUNT_NTFS                        = \"ntfs\"\n\tMOUNT_TMPFS                       = \"tmpfs\"\n\tMOUNT_UDF                         = \"udf\"\n\tMOUNT_UFS                         = \"ffs\"\n\tMSG_BCAST                         = 0x100\n\tMSG_CMSG_CLOEXEC                  = 0x800\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOR                           = 0x8\n\tMSG_MCAST                         = 0x200\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_TRUNC                         = 0x10\n\tMSG_WAITALL                       = 0x40\n\tMSG_WAITFORONE                    = 0x1000\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x4\n\tMS_SYNC                           = 0x2\n\tNAME_MAX                          = 0xff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x3\n\tNET_RT_IFNAMES                    = 0x6\n\tNET_RT_MAXID                      = 0x8\n\tNET_RT_SOURCE                     = 0x7\n\tNET_RT_STATS                      = 0x4\n\tNET_RT_TABLE                      = 0x5\n\tNFDBITS                           = 0x20\n\tNOFLSH                            = 0x80000000\n\tNOKERNINFO                        = 0x2000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHANGE                       = 0x1\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EOF                          = 0x2\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_OOB                          = 0x4\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_TRUNCATE                     = 0x80\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOLCUC                             = 0x20\n\tONLCR                             = 0x2\n\tONLRET                            = 0x80\n\tONOCR                             = 0x40\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tOXTABS                            = 0x4\n\tO_ACCMODE                         = 0x3\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x10000\n\tO_CREAT                           = 0x200\n\tO_DIRECTORY                       = 0x20000\n\tO_DSYNC                           = 0x80\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_RSYNC                           = 0x80\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPF_FLUSH                          = 0x1\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BFD                          = 0xb\n\tRTAX_BRD                          = 0x7\n\tRTAX_DNS                          = 0xc\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_LABEL                        = 0xa\n\tRTAX_MAX                          = 0xf\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_SEARCH                       = 0xe\n\tRTAX_SRC                          = 0x8\n\tRTAX_SRCMASK                      = 0x9\n\tRTAX_STATIC                       = 0xd\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BFD                           = 0x800\n\tRTA_BRD                           = 0x80\n\tRTA_DNS                           = 0x1000\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_LABEL                         = 0x400\n\tRTA_NETMASK                       = 0x4\n\tRTA_SEARCH                        = 0x4000\n\tRTA_SRC                           = 0x100\n\tRTA_SRCMASK                       = 0x200\n\tRTA_STATIC                        = 0x2000\n\tRTF_ANNOUNCE                      = 0x4000\n\tRTF_BFD                           = 0x1000000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_BROADCAST                     = 0x400000\n\tRTF_CACHED                        = 0x20000\n\tRTF_CLONED                        = 0x10000\n\tRTF_CLONING                       = 0x100\n\tRTF_CONNECTED                     = 0x800000\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_FMASK                         = 0x110fc08\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_LOCAL                         = 0x200000\n\tRTF_MODIFIED                      = 0x20\n\tRTF_MPATH                         = 0x40000\n\tRTF_MPLS                          = 0x100000\n\tRTF_MULTICAST                     = 0x200\n\tRTF_PERMANENT_ARP                 = 0x2000\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_PROTO3                        = 0x2000\n\tRTF_REJECT                        = 0x8\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_USETRAILERS                   = 0x8000\n\tRTM_80211INFO                     = 0x15\n\tRTM_ADD                           = 0x1\n\tRTM_BFD                           = 0x12\n\tRTM_CHANGE                        = 0x3\n\tRTM_CHGADDRATTR                   = 0x14\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_DESYNC                        = 0x10\n\tRTM_GET                           = 0x4\n\tRTM_IFANNOUNCE                    = 0xf\n\tRTM_IFINFO                        = 0xe\n\tRTM_INVALIDATE                    = 0x11\n\tRTM_LOSING                        = 0x5\n\tRTM_MAXSIZE                       = 0x800\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_PROPOSAL                      = 0x13\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_SOURCE                        = 0x16\n\tRTM_VERSION                       = 0x5\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRT_TABLEID_BITS                   = 0x8\n\tRT_TABLEID_MASK                   = 0xff\n\tRT_TABLEID_MAX                    = 0xff\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tRUSAGE_THREAD                     = 0x1\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x4\n\tSEEK_CUR                          = 0x1\n\tSEEK_END                          = 0x2\n\tSEEK_SET                          = 0x0\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80206931\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCAIFGROUP                      = 0x80286987\n\tSIOCATMARK                        = 0x40047307\n\tSIOCBRDGADD                       = 0x8060693c\n\tSIOCBRDGADDL                      = 0x80606949\n\tSIOCBRDGADDS                      = 0x80606941\n\tSIOCBRDGARL                       = 0x808c694d\n\tSIOCBRDGDADDR                     = 0x81286947\n\tSIOCBRDGDEL                       = 0x8060693d\n\tSIOCBRDGDELS                      = 0x80606942\n\tSIOCBRDGFLUSH                     = 0x80606948\n\tSIOCBRDGFRL                       = 0x808c694e\n\tSIOCBRDGGCACHE                    = 0xc0146941\n\tSIOCBRDGGFD                       = 0xc0146952\n\tSIOCBRDGGHT                       = 0xc0146951\n\tSIOCBRDGGIFFLGS                   = 0xc060693e\n\tSIOCBRDGGMA                       = 0xc0146953\n\tSIOCBRDGGPARAM                    = 0xc0406958\n\tSIOCBRDGGPRI                      = 0xc0146950\n\tSIOCBRDGGRL                       = 0xc030694f\n\tSIOCBRDGGTO                       = 0xc0146946\n\tSIOCBRDGIFS                       = 0xc0606942\n\tSIOCBRDGRTS                       = 0xc0206943\n\tSIOCBRDGSADDR                     = 0xc1286944\n\tSIOCBRDGSCACHE                    = 0x80146940\n\tSIOCBRDGSFD                       = 0x80146952\n\tSIOCBRDGSHT                       = 0x80146951\n\tSIOCBRDGSIFCOST                   = 0x80606955\n\tSIOCBRDGSIFFLGS                   = 0x8060693f\n\tSIOCBRDGSIFPRIO                   = 0x80606954\n\tSIOCBRDGSIFPROT                   = 0x8060694a\n\tSIOCBRDGSMA                       = 0x80146953\n\tSIOCBRDGSPRI                      = 0x80146950\n\tSIOCBRDGSPROTO                    = 0x8014695a\n\tSIOCBRDGSTO                       = 0x80146945\n\tSIOCBRDGSTXHC                     = 0x80146959\n\tSIOCDELLABEL                      = 0x80206997\n\tSIOCDELMULTI                      = 0x80206932\n\tSIOCDIFADDR                       = 0x80206919\n\tSIOCDIFGROUP                      = 0x80286989\n\tSIOCDIFPARENT                     = 0x802069b4\n\tSIOCDIFPHYADDR                    = 0x80206949\n\tSIOCDPWE3NEIGHBOR                 = 0x802069de\n\tSIOCDVNETID                       = 0x802069af\n\tSIOCGETKALIVE                     = 0xc01869a4\n\tSIOCGETLABEL                      = 0x8020699a\n\tSIOCGETMPWCFG                     = 0xc02069ae\n\tSIOCGETPFLOW                      = 0xc02069fe\n\tSIOCGETPFSYNC                     = 0xc02069f8\n\tSIOCGETSGCNT                      = 0xc0207534\n\tSIOCGETVIFCNT                     = 0xc0287533\n\tSIOCGETVLAN                       = 0xc0206990\n\tSIOCGIFADDR                       = 0xc0206921\n\tSIOCGIFBRDADDR                    = 0xc0206923\n\tSIOCGIFCONF                       = 0xc0106924\n\tSIOCGIFDATA                       = 0xc020691b\n\tSIOCGIFDESCR                      = 0xc0206981\n\tSIOCGIFDSTADDR                    = 0xc0206922\n\tSIOCGIFFLAGS                      = 0xc0206911\n\tSIOCGIFGATTR                      = 0xc028698b\n\tSIOCGIFGENERIC                    = 0xc020693a\n\tSIOCGIFGLIST                      = 0xc028698d\n\tSIOCGIFGMEMB                      = 0xc028698a\n\tSIOCGIFGROUP                      = 0xc0286988\n\tSIOCGIFHARDMTU                    = 0xc02069a5\n\tSIOCGIFLLPRIO                     = 0xc02069b6\n\tSIOCGIFMEDIA                      = 0xc0406938\n\tSIOCGIFMETRIC                     = 0xc0206917\n\tSIOCGIFMTU                        = 0xc020697e\n\tSIOCGIFNETMASK                    = 0xc0206925\n\tSIOCGIFPAIR                       = 0xc02069b1\n\tSIOCGIFPARENT                     = 0xc02069b3\n\tSIOCGIFPRIORITY                   = 0xc020699c\n\tSIOCGIFRDOMAIN                    = 0xc02069a0\n\tSIOCGIFRTLABEL                    = 0xc0206983\n\tSIOCGIFRXR                        = 0x802069aa\n\tSIOCGIFSFFPAGE                    = 0xc1126939\n\tSIOCGIFXFLAGS                     = 0xc020699e\n\tSIOCGLIFPHYADDR                   = 0xc218694b\n\tSIOCGLIFPHYDF                     = 0xc02069c2\n\tSIOCGLIFPHYECN                    = 0xc02069c8\n\tSIOCGLIFPHYRTABLE                 = 0xc02069a2\n\tSIOCGLIFPHYTTL                    = 0xc02069a9\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGPWE3                         = 0xc0206998\n\tSIOCGPWE3CTRLWORD                 = 0xc02069dc\n\tSIOCGPWE3FAT                      = 0xc02069dd\n\tSIOCGPWE3NEIGHBOR                 = 0xc21869de\n\tSIOCGRXHPRIO                      = 0xc02069db\n\tSIOCGSPPPPARAMS                   = 0xc0206994\n\tSIOCGTXHPRIO                      = 0xc02069c6\n\tSIOCGUMBINFO                      = 0xc02069be\n\tSIOCGUMBPARAM                     = 0xc02069c0\n\tSIOCGVH                           = 0xc02069f6\n\tSIOCGVNETFLOWID                   = 0xc02069c4\n\tSIOCGVNETID                       = 0xc02069a7\n\tSIOCIFAFATTACH                    = 0x801169ab\n\tSIOCIFAFDETACH                    = 0x801169ac\n\tSIOCIFCREATE                      = 0x8020697a\n\tSIOCIFDESTROY                     = 0x80206979\n\tSIOCIFGCLONERS                    = 0xc0106978\n\tSIOCSETKALIVE                     = 0x801869a3\n\tSIOCSETLABEL                      = 0x80206999\n\tSIOCSETMPWCFG                     = 0x802069ad\n\tSIOCSETPFLOW                      = 0x802069fd\n\tSIOCSETPFSYNC                     = 0x802069f7\n\tSIOCSETVLAN                       = 0x8020698f\n\tSIOCSIFADDR                       = 0x8020690c\n\tSIOCSIFBRDADDR                    = 0x80206913\n\tSIOCSIFDESCR                      = 0x80206980\n\tSIOCSIFDSTADDR                    = 0x8020690e\n\tSIOCSIFFLAGS                      = 0x80206910\n\tSIOCSIFGATTR                      = 0x8028698c\n\tSIOCSIFGENERIC                    = 0x80206939\n\tSIOCSIFLLADDR                     = 0x8020691f\n\tSIOCSIFLLPRIO                     = 0x802069b5\n\tSIOCSIFMEDIA                      = 0xc0206937\n\tSIOCSIFMETRIC                     = 0x80206918\n\tSIOCSIFMTU                        = 0x8020697f\n\tSIOCSIFNETMASK                    = 0x80206916\n\tSIOCSIFPAIR                       = 0x802069b0\n\tSIOCSIFPARENT                     = 0x802069b2\n\tSIOCSIFPRIORITY                   = 0x8020699b\n\tSIOCSIFRDOMAIN                    = 0x8020699f\n\tSIOCSIFRTLABEL                    = 0x80206982\n\tSIOCSIFXFLAGS                     = 0x8020699d\n\tSIOCSLIFPHYADDR                   = 0x8218694a\n\tSIOCSLIFPHYDF                     = 0x802069c1\n\tSIOCSLIFPHYECN                    = 0x802069c7\n\tSIOCSLIFPHYRTABLE                 = 0x802069a1\n\tSIOCSLIFPHYTTL                    = 0x802069a8\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSPWE3CTRLWORD                 = 0x802069dc\n\tSIOCSPWE3FAT                      = 0x802069dd\n\tSIOCSPWE3NEIGHBOR                 = 0x821869de\n\tSIOCSRXHPRIO                      = 0x802069db\n\tSIOCSSPPPPARAMS                   = 0x80206993\n\tSIOCSTXHPRIO                      = 0x802069c5\n\tSIOCSUMBPARAM                     = 0x802069bf\n\tSIOCSVH                           = 0xc02069f5\n\tSIOCSVNETFLOWID                   = 0x802069c3\n\tSIOCSVNETID                       = 0x802069a6\n\tSOCK_CLOEXEC                      = 0x8000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_DNS                          = 0x1000\n\tSOCK_NONBLOCK                     = 0x4000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_BINDANY                        = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DOMAIN                         = 0x1024\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NETPROC                        = 0x1020\n\tSO_OOBINLINE                      = 0x100\n\tSO_PEERCRED                       = 0x1022\n\tSO_PROTOCOL                       = 0x1025\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x1006\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_RTABLE                         = 0x1021\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x1005\n\tSO_SPLICE                         = 0x1023\n\tSO_TIMESTAMP                      = 0x800\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tSO_ZEROIZE                        = 0x2000\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tTCIFLUSH                          = 0x1\n\tTCIOFF                            = 0x3\n\tTCIOFLUSH                         = 0x3\n\tTCION                             = 0x4\n\tTCOFLUSH                          = 0x2\n\tTCOOFF                            = 0x1\n\tTCOON                             = 0x2\n\tTCPOPT_EOL                        = 0x0\n\tTCPOPT_MAXSEG                     = 0x2\n\tTCPOPT_NOP                        = 0x1\n\tTCPOPT_SACK                       = 0x5\n\tTCPOPT_SACK_HDR                   = 0x1010500\n\tTCPOPT_SACK_PERMITTED             = 0x4\n\tTCPOPT_SACK_PERMIT_HDR            = 0x1010402\n\tTCPOPT_SIGNATURE                  = 0x13\n\tTCPOPT_TIMESTAMP                  = 0x8\n\tTCPOPT_TSTAMP_HDR                 = 0x101080a\n\tTCPOPT_WINDOW                     = 0x3\n\tTCP_INFO                          = 0x9\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_SACK                      = 0x3\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MD5SIG                        = 0x4\n\tTCP_MSS                           = 0x200\n\tTCP_NODELAY                       = 0x1\n\tTCP_NOPUSH                        = 0x10\n\tTCP_SACKHOLE_LIMIT                = 0x80\n\tTCP_SACK_ENABLE                   = 0x8\n\tTCSAFLUSH                         = 0x2\n\tTIMER_ABSTIME                     = 0x1\n\tTIMER_RELTIME                     = 0x0\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCHKVERAUTH                    = 0x2000741e\n\tTIOCCLRVERAUTH                    = 0x2000741d\n\tTIOCCONS                          = 0x80047462\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLAG_CLOCAL                   = 0x2\n\tTIOCFLAG_CRTSCTS                  = 0x4\n\tTIOCFLAG_MDMBUF                   = 0x8\n\tTIOCFLAG_PPS                      = 0x10\n\tTIOCFLAG_SOFTCAR                  = 0x1\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGFLAGS                        = 0x4004745d\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGSID                          = 0x40047463\n\tTIOCGTSTAMP                       = 0x4010745b\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMODG                          = 0x4004746a\n\tTIOCMODS                          = 0x8004746d\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSETVERAUTH                    = 0x8004741c\n\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x8004745f\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x20007465\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSTSTAMP                       = 0x8008745a\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\n\tTIOCUCNTL_CBRK                    = 0x7a\n\tTIOCUCNTL_SBRK                    = 0x7b\n\tTOSTOP                            = 0x400000\n\tUTIME_NOW                         = -0x2\n\tUTIME_OMIT                        = -0x1\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVM_ANONMIN                        = 0x7\n\tVM_LOADAVG                        = 0x2\n\tVM_MALLOC_CONF                    = 0xc\n\tVM_MAXID                          = 0xd\n\tVM_MAXSLP                         = 0xa\n\tVM_METER                          = 0x1\n\tVM_NKMEMPAGES                     = 0x6\n\tVM_PSSTRINGS                      = 0x3\n\tVM_SWAPENCRYPT                    = 0x5\n\tVM_USPACE                         = 0xb\n\tVM_UVMEXP                         = 0x4\n\tVM_VNODEMIN                       = 0x9\n\tVM_VTEXTMIN                       = 0x8\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWALTSIG                           = 0x4\n\tWCONTINUED                        = 0x8\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\n\tWUNTRACED                         = 0x2\n\tXCASE                             = 0x1000000\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x5c)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x58)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x59)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEIPSEC          = syscall.Errno(0x52)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x5f)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMEDIUMTYPE     = syscall.Errno(0x56)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x53)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOMEDIUM       = syscall.Errno(0x55)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x5a)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5d)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x5b)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x57)\n\tEOWNERDEAD      = syscall.Errno(0x5e)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5f)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disk quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC program not available\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIPSEC\", \"IPsec processing failure\"},\n\t{83, \"ENOATTR\", \"attribute not found\"},\n\t{84, \"EILSEQ\", \"illegal byte sequence\"},\n\t{85, \"ENOMEDIUM\", \"no medium found\"},\n\t{86, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{87, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{88, \"ECANCELED\", \"operation canceled\"},\n\t{89, \"EIDRM\", \"identifier removed\"},\n\t{90, \"ENOMSG\", \"no message of desired type\"},\n\t{91, \"ENOTSUP\", \"not supported\"},\n\t{92, \"EBADMSG\", \"bad message\"},\n\t{93, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{94, \"EOWNERDEAD\", \"previous owner died\"},\n\t{95, \"ELAST\", \"protocol error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGABRT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"thread AST\"},\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zerrors_openbsd_riscv64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build riscv64 && openbsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_BLUETOOTH                      = 0x20\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_ENCAP                          = 0x1c\n\tAF_HYLINK                         = 0xf\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x18\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_KEY                            = 0x1e\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x24\n\tAF_MPLS                           = 0x21\n\tAF_NATM                           = 0x1b\n\tAF_NS                             = 0x6\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x11\n\tAF_SIP                            = 0x1d\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tALTWERASE                         = 0x200\n\tARPHRD_ETHER                      = 0x1\n\tARPHRD_FRELAY                     = 0xf\n\tARPHRD_IEEE1394                   = 0x18\n\tARPHRD_IEEE802                    = 0x6\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB9600                             = 0x2580\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDIRFILT                      = 0x4004427c\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc010427b\n\tBIOCGETIF                         = 0x4020426b\n\tBIOCGFILDROP                      = 0x40044278\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRSIG                         = 0x40044273\n\tBIOCGRTIMEOUT                     = 0x4010426e\n\tBIOCGSTATS                        = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCLOCK                          = 0x20004276\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDIRFILT                      = 0x8004427d\n\tBIOCSDLT                          = 0x8004427a\n\tBIOCSETF                          = 0x80104267\n\tBIOCSETIF                         = 0x8020426c\n\tBIOCSETWF                         = 0x80104277\n\tBIOCSFILDROP                      = 0x80044279\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRSIG                         = 0x80044272\n\tBIOCSRTIMEOUT                     = 0x8010426d\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DIRECTION_IN                  = 0x1\n\tBPF_DIRECTION_OUT                 = 0x2\n\tBPF_DIV                           = 0x30\n\tBPF_FILDROP_CAPTURE               = 0x1\n\tBPF_FILDROP_DROP                  = 0x2\n\tBPF_FILDROP_PASS                  = 0x0\n\tBPF_F_DIR_IN                      = 0x10\n\tBPF_F_DIR_MASK                    = 0x30\n\tBPF_F_DIR_OUT                     = 0x20\n\tBPF_F_DIR_SHIFT                   = 0x4\n\tBPF_F_FLOWID                      = 0x8\n\tBPF_F_PRI_MASK                    = 0x7\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x200000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RND                           = 0xc0\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLOCK_BOOTTIME                    = 0x6\n\tCLOCK_MONOTONIC                   = 0x3\n\tCLOCK_PROCESS_CPUTIME_ID          = 0x2\n\tCLOCK_REALTIME                    = 0x0\n\tCLOCK_THREAD_CPUTIME_ID           = 0x4\n\tCLOCK_UPTIME                      = 0x5\n\tCPUSTATES                         = 0x6\n\tCP_IDLE                           = 0x5\n\tCP_INTR                           = 0x4\n\tCP_NICE                           = 0x1\n\tCP_SPIN                           = 0x3\n\tCP_SYS                            = 0x2\n\tCP_USER                           = 0x0\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x10000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0xff\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tDIOCADDQUEUE                      = 0xc110445d\n\tDIOCADDRULE                       = 0xcd604404\n\tDIOCADDSTATE                      = 0xc1084425\n\tDIOCCHANGERULE                    = 0xcd60441a\n\tDIOCCLRIFFLAG                     = 0xc028445a\n\tDIOCCLRSRCNODES                   = 0x20004455\n\tDIOCCLRSTATES                     = 0xc0e04412\n\tDIOCCLRSTATUS                     = 0xc0284416\n\tDIOCGETLIMIT                      = 0xc0084427\n\tDIOCGETQSTATS                     = 0xc1204460\n\tDIOCGETQUEUE                      = 0xc110445f\n\tDIOCGETQUEUES                     = 0xc110445e\n\tDIOCGETRULE                       = 0xcd604407\n\tDIOCGETRULES                      = 0xcd604406\n\tDIOCGETRULESET                    = 0xc444443b\n\tDIOCGETRULESETS                   = 0xc444443a\n\tDIOCGETSRCNODES                   = 0xc0104454\n\tDIOCGETSTATE                      = 0xc1084413\n\tDIOCGETSTATES                     = 0xc0104419\n\tDIOCGETSTATUS                     = 0xc1e84415\n\tDIOCGETSYNFLWATS                  = 0xc0084463\n\tDIOCGETTIMEOUT                    = 0xc008441e\n\tDIOCIGETIFACES                    = 0xc0284457\n\tDIOCKILLSRCNODES                  = 0xc080445b\n\tDIOCKILLSTATES                    = 0xc0e04429\n\tDIOCNATLOOK                       = 0xc0504417\n\tDIOCOSFPADD                       = 0xc088444f\n\tDIOCOSFPFLUSH                     = 0x2000444e\n\tDIOCOSFPGET                       = 0xc0884450\n\tDIOCRADDADDRS                     = 0xc4504443\n\tDIOCRADDTABLES                    = 0xc450443d\n\tDIOCRCLRADDRS                     = 0xc4504442\n\tDIOCRCLRASTATS                    = 0xc4504448\n\tDIOCRCLRTABLES                    = 0xc450443c\n\tDIOCRCLRTSTATS                    = 0xc4504441\n\tDIOCRDELADDRS                     = 0xc4504444\n\tDIOCRDELTABLES                    = 0xc450443e\n\tDIOCRGETADDRS                     = 0xc4504446\n\tDIOCRGETASTATS                    = 0xc4504447\n\tDIOCRGETTABLES                    = 0xc450443f\n\tDIOCRGETTSTATS                    = 0xc4504440\n\tDIOCRINADEFINE                    = 0xc450444d\n\tDIOCRSETADDRS                     = 0xc4504445\n\tDIOCRSETTFLAGS                    = 0xc450444a\n\tDIOCRTSTADDRS                     = 0xc4504449\n\tDIOCSETDEBUG                      = 0xc0044418\n\tDIOCSETHOSTID                     = 0xc0044456\n\tDIOCSETIFFLAG                     = 0xc0284459\n\tDIOCSETLIMIT                      = 0xc0084428\n\tDIOCSETREASS                      = 0xc004445c\n\tDIOCSETSTATUSIF                   = 0xc0284414\n\tDIOCSETSYNCOOKIES                 = 0xc0014462\n\tDIOCSETSYNFLWATS                  = 0xc0084461\n\tDIOCSETTIMEOUT                    = 0xc008441d\n\tDIOCSTART                         = 0x20004401\n\tDIOCSTOP                          = 0x20004402\n\tDIOCXBEGIN                        = 0xc0104451\n\tDIOCXCOMMIT                       = 0xc0104452\n\tDIOCXROLLBACK                     = 0xc0104453\n\tDLT_ARCNET                        = 0x7\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AX25                          = 0x3\n\tDLT_CHAOS                         = 0x5\n\tDLT_C_HDLC                        = 0x68\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0xd\n\tDLT_FDDI                          = 0xa\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_LOOP                          = 0xc\n\tDLT_MPLS                          = 0xdb\n\tDLT_NULL                          = 0x0\n\tDLT_OPENFLOW                      = 0x10b\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0x10\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PRONET                        = 0x4\n\tDLT_RAW                           = 0xe\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xf\n\tDLT_USBPCAP                       = 0xf9\n\tDLT_USER0                         = 0x93\n\tDLT_USER1                         = 0x94\n\tDLT_USER10                        = 0x9d\n\tDLT_USER11                        = 0x9e\n\tDLT_USER12                        = 0x9f\n\tDLT_USER13                        = 0xa0\n\tDLT_USER14                        = 0xa1\n\tDLT_USER15                        = 0xa2\n\tDLT_USER2                         = 0x95\n\tDLT_USER3                         = 0x96\n\tDLT_USER4                         = 0x97\n\tDLT_USER5                         = 0x98\n\tDLT_USER6                         = 0x99\n\tDLT_USER7                         = 0x9a\n\tDLT_USER8                         = 0x9b\n\tDLT_USER9                         = 0x9c\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEMT_TAGOVF                        = 0x1\n\tEMUL_ENABLED                      = 0x1\n\tEMUL_NATIVE                       = 0x2\n\tENDRUNDISC                        = 0x9\n\tETH64_8021_RSVD_MASK              = 0xfffffffffff0\n\tETH64_8021_RSVD_PREFIX            = 0x180c2000000\n\tETHERMIN                          = 0x2e\n\tETHERMTU                          = 0x5dc\n\tETHERTYPE_8023                    = 0x4\n\tETHERTYPE_AARP                    = 0x80f3\n\tETHERTYPE_ACCTON                  = 0x8390\n\tETHERTYPE_AEONIC                  = 0x8036\n\tETHERTYPE_ALPHA                   = 0x814a\n\tETHERTYPE_AMBER                   = 0x6008\n\tETHERTYPE_AMOEBA                  = 0x8145\n\tETHERTYPE_AOE                     = 0x88a2\n\tETHERTYPE_APOLLO                  = 0x80f7\n\tETHERTYPE_APOLLODOMAIN            = 0x8019\n\tETHERTYPE_APPLETALK               = 0x809b\n\tETHERTYPE_APPLITEK                = 0x80c7\n\tETHERTYPE_ARGONAUT                = 0x803a\n\tETHERTYPE_ARP                     = 0x806\n\tETHERTYPE_AT                      = 0x809b\n\tETHERTYPE_ATALK                   = 0x809b\n\tETHERTYPE_ATOMIC                  = 0x86df\n\tETHERTYPE_ATT                     = 0x8069\n\tETHERTYPE_ATTSTANFORD             = 0x8008\n\tETHERTYPE_AUTOPHON                = 0x806a\n\tETHERTYPE_AXIS                    = 0x8856\n\tETHERTYPE_BCLOOP                  = 0x9003\n\tETHERTYPE_BOFL                    = 0x8102\n\tETHERTYPE_CABLETRON               = 0x7034\n\tETHERTYPE_CHAOS                   = 0x804\n\tETHERTYPE_COMDESIGN               = 0x806c\n\tETHERTYPE_COMPUGRAPHIC            = 0x806d\n\tETHERTYPE_COUNTERPOINT            = 0x8062\n\tETHERTYPE_CRONUS                  = 0x8004\n\tETHERTYPE_CRONUSVLN               = 0x8003\n\tETHERTYPE_DCA                     = 0x1234\n\tETHERTYPE_DDE                     = 0x807b\n\tETHERTYPE_DEBNI                   = 0xaaaa\n\tETHERTYPE_DECAM                   = 0x8048\n\tETHERTYPE_DECCUST                 = 0x6006\n\tETHERTYPE_DECDIAG                 = 0x6005\n\tETHERTYPE_DECDNS                  = 0x803c\n\tETHERTYPE_DECDTS                  = 0x803e\n\tETHERTYPE_DECEXPER                = 0x6000\n\tETHERTYPE_DECLAST                 = 0x8041\n\tETHERTYPE_DECLTM                  = 0x803f\n\tETHERTYPE_DECMUMPS                = 0x6009\n\tETHERTYPE_DECNETBIOS              = 0x8040\n\tETHERTYPE_DELTACON                = 0x86de\n\tETHERTYPE_DIDDLE                  = 0x4321\n\tETHERTYPE_DLOG1                   = 0x660\n\tETHERTYPE_DLOG2                   = 0x661\n\tETHERTYPE_DN                      = 0x6003\n\tETHERTYPE_DOGFIGHT                = 0x1989\n\tETHERTYPE_DSMD                    = 0x8039\n\tETHERTYPE_EAPOL                   = 0x888e\n\tETHERTYPE_ECMA                    = 0x803\n\tETHERTYPE_ENCRYPT                 = 0x803d\n\tETHERTYPE_ES                      = 0x805d\n\tETHERTYPE_EXCELAN                 = 0x8010\n\tETHERTYPE_EXPERDATA               = 0x8049\n\tETHERTYPE_FLIP                    = 0x8146\n\tETHERTYPE_FLOWCONTROL             = 0x8808\n\tETHERTYPE_FRARP                   = 0x808\n\tETHERTYPE_GENDYN                  = 0x8068\n\tETHERTYPE_HAYES                   = 0x8130\n\tETHERTYPE_HIPPI_FP                = 0x8180\n\tETHERTYPE_HITACHI                 = 0x8820\n\tETHERTYPE_HP                      = 0x8005\n\tETHERTYPE_IEEEPUP                 = 0xa00\n\tETHERTYPE_IEEEPUPAT               = 0xa01\n\tETHERTYPE_IMLBL                   = 0x4c42\n\tETHERTYPE_IMLBLDIAG               = 0x424c\n\tETHERTYPE_IP                      = 0x800\n\tETHERTYPE_IPAS                    = 0x876c\n\tETHERTYPE_IPV6                    = 0x86dd\n\tETHERTYPE_IPX                     = 0x8137\n\tETHERTYPE_IPXNEW                  = 0x8037\n\tETHERTYPE_KALPANA                 = 0x8582\n\tETHERTYPE_LANBRIDGE               = 0x8038\n\tETHERTYPE_LANPROBE                = 0x8888\n\tETHERTYPE_LAT                     = 0x6004\n\tETHERTYPE_LBACK                   = 0x9000\n\tETHERTYPE_LITTLE                  = 0x8060\n\tETHERTYPE_LLDP                    = 0x88cc\n\tETHERTYPE_LOGICRAFT               = 0x8148\n\tETHERTYPE_LOOPBACK                = 0x9000\n\tETHERTYPE_MACSEC                  = 0x88e5\n\tETHERTYPE_MATRA                   = 0x807a\n\tETHERTYPE_MAX                     = 0xffff\n\tETHERTYPE_MERIT                   = 0x807c\n\tETHERTYPE_MICP                    = 0x873a\n\tETHERTYPE_MOPDL                   = 0x6001\n\tETHERTYPE_MOPRC                   = 0x6002\n\tETHERTYPE_MOTOROLA                = 0x818d\n\tETHERTYPE_MPLS                    = 0x8847\n\tETHERTYPE_MPLS_MCAST              = 0x8848\n\tETHERTYPE_MUMPS                   = 0x813f\n\tETHERTYPE_NBPCC                   = 0x3c04\n\tETHERTYPE_NBPCLAIM                = 0x3c09\n\tETHERTYPE_NBPCLREQ                = 0x3c05\n\tETHERTYPE_NBPCLRSP                = 0x3c06\n\tETHERTYPE_NBPCREQ                 = 0x3c02\n\tETHERTYPE_NBPCRSP                 = 0x3c03\n\tETHERTYPE_NBPDG                   = 0x3c07\n\tETHERTYPE_NBPDGB                  = 0x3c08\n\tETHERTYPE_NBPDLTE                 = 0x3c0a\n\tETHERTYPE_NBPRAR                  = 0x3c0c\n\tETHERTYPE_NBPRAS                  = 0x3c0b\n\tETHERTYPE_NBPRST                  = 0x3c0d\n\tETHERTYPE_NBPSCD                  = 0x3c01\n\tETHERTYPE_NBPVCD                  = 0x3c00\n\tETHERTYPE_NBS                     = 0x802\n\tETHERTYPE_NCD                     = 0x8149\n\tETHERTYPE_NESTAR                  = 0x8006\n\tETHERTYPE_NETBEUI                 = 0x8191\n\tETHERTYPE_NHRP                    = 0x2001\n\tETHERTYPE_NOVELL                  = 0x8138\n\tETHERTYPE_NS                      = 0x600\n\tETHERTYPE_NSAT                    = 0x601\n\tETHERTYPE_NSCOMPAT                = 0x807\n\tETHERTYPE_NSH                     = 0x984f\n\tETHERTYPE_NTRAILER                = 0x10\n\tETHERTYPE_OS9                     = 0x7007\n\tETHERTYPE_OS9NET                  = 0x7009\n\tETHERTYPE_PACER                   = 0x80c6\n\tETHERTYPE_PBB                     = 0x88e7\n\tETHERTYPE_PCS                     = 0x4242\n\tETHERTYPE_PLANNING                = 0x8044\n\tETHERTYPE_PPP                     = 0x880b\n\tETHERTYPE_PPPOE                   = 0x8864\n\tETHERTYPE_PPPOEDISC               = 0x8863\n\tETHERTYPE_PRIMENTS                = 0x7031\n\tETHERTYPE_PUP                     = 0x200\n\tETHERTYPE_PUPAT                   = 0x200\n\tETHERTYPE_QINQ                    = 0x88a8\n\tETHERTYPE_RACAL                   = 0x7030\n\tETHERTYPE_RATIONAL                = 0x8150\n\tETHERTYPE_RAWFR                   = 0x6559\n\tETHERTYPE_RCL                     = 0x1995\n\tETHERTYPE_RDP                     = 0x8739\n\tETHERTYPE_RETIX                   = 0x80f2\n\tETHERTYPE_REVARP                  = 0x8035\n\tETHERTYPE_SCA                     = 0x6007\n\tETHERTYPE_SECTRA                  = 0x86db\n\tETHERTYPE_SECUREDATA              = 0x876d\n\tETHERTYPE_SGITW                   = 0x817e\n\tETHERTYPE_SG_BOUNCE               = 0x8016\n\tETHERTYPE_SG_DIAG                 = 0x8013\n\tETHERTYPE_SG_NETGAMES             = 0x8014\n\tETHERTYPE_SG_RESV                 = 0x8015\n\tETHERTYPE_SIMNET                  = 0x5208\n\tETHERTYPE_SLOW                    = 0x8809\n\tETHERTYPE_SNA                     = 0x80d5\n\tETHERTYPE_SNMP                    = 0x814c\n\tETHERTYPE_SONIX                   = 0xfaf5\n\tETHERTYPE_SPIDER                  = 0x809f\n\tETHERTYPE_SPRITE                  = 0x500\n\tETHERTYPE_STP                     = 0x8181\n\tETHERTYPE_TALARIS                 = 0x812b\n\tETHERTYPE_TALARISMC               = 0x852b\n\tETHERTYPE_TCPCOMP                 = 0x876b\n\tETHERTYPE_TCPSM                   = 0x9002\n\tETHERTYPE_TEC                     = 0x814f\n\tETHERTYPE_TIGAN                   = 0x802f\n\tETHERTYPE_TRAIL                   = 0x1000\n\tETHERTYPE_TRANSETHER              = 0x6558\n\tETHERTYPE_TYMSHARE                = 0x802e\n\tETHERTYPE_UBBST                   = 0x7005\n\tETHERTYPE_UBDEBUG                 = 0x900\n\tETHERTYPE_UBDIAGLOOP              = 0x7002\n\tETHERTYPE_UBDL                    = 0x7000\n\tETHERTYPE_UBNIU                   = 0x7001\n\tETHERTYPE_UBNMC                   = 0x7003\n\tETHERTYPE_VALID                   = 0x1600\n\tETHERTYPE_VARIAN                  = 0x80dd\n\tETHERTYPE_VAXELN                  = 0x803b\n\tETHERTYPE_VEECO                   = 0x8067\n\tETHERTYPE_VEXP                    = 0x805b\n\tETHERTYPE_VGLAB                   = 0x8131\n\tETHERTYPE_VINES                   = 0xbad\n\tETHERTYPE_VINESECHO               = 0xbaf\n\tETHERTYPE_VINESLOOP               = 0xbae\n\tETHERTYPE_VITAL                   = 0xff00\n\tETHERTYPE_VLAN                    = 0x8100\n\tETHERTYPE_VLTLMAN                 = 0x8080\n\tETHERTYPE_VPROD                   = 0x805c\n\tETHERTYPE_VURESERVED              = 0x8147\n\tETHERTYPE_WATERLOO                = 0x8130\n\tETHERTYPE_WELLFLEET               = 0x8103\n\tETHERTYPE_X25                     = 0x805\n\tETHERTYPE_X75                     = 0x801\n\tETHERTYPE_XNSSM                   = 0x9001\n\tETHERTYPE_XTP                     = 0x817d\n\tETHER_ADDR_LEN                    = 0x6\n\tETHER_ALIGN                       = 0x2\n\tETHER_CRC_LEN                     = 0x4\n\tETHER_CRC_POLY_BE                 = 0x4c11db6\n\tETHER_CRC_POLY_LE                 = 0xedb88320\n\tETHER_HDR_LEN                     = 0xe\n\tETHER_MAX_DIX_LEN                 = 0x600\n\tETHER_MAX_HARDMTU_LEN             = 0xff9b\n\tETHER_MAX_LEN                     = 0x5ee\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = -0x3\n\tEVFILT_DEVICE                     = -0x8\n\tEVFILT_EXCEPT                     = -0x9\n\tEVFILT_PROC                       = -0x5\n\tEVFILT_READ                       = -0x1\n\tEVFILT_SIGNAL                     = -0x6\n\tEVFILT_SYSCOUNT                   = 0x9\n\tEVFILT_TIMER                      = -0x7\n\tEVFILT_VNODE                      = -0x4\n\tEVFILT_WRITE                      = -0x2\n\tEVL_ENCAPLEN                      = 0x4\n\tEVL_PRIO_BITS                     = 0xd\n\tEVL_PRIO_MAX                      = 0x7\n\tEVL_VLID_MASK                     = 0xfff\n\tEVL_VLID_MAX                      = 0xffe\n\tEVL_VLID_MIN                      = 0x1\n\tEVL_VLID_NULL                     = 0x0\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_DISPATCH                       = 0x80\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_RECEIPT                        = 0x40\n\tEV_SYSFLAGS                       = 0xf800\n\tEXTA                              = 0x4b00\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x400\n\tFLUSHO                            = 0x800000\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0xa\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETOWN                          = 0x5\n\tF_ISATTY                          = 0xb\n\tF_OK                              = 0x0\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x8e52\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_STATICARP                     = 0x20\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BLUETOOTH                     = 0xf8\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf7\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DUMMY                         = 0xf1\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ECONET                        = 0xce\n\tIFT_ENC                           = 0xf4\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf3\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INFINIBAND                    = 0xc7\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LINEGROUP                     = 0xd2\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MBIM                          = 0xfa\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFLOW                         = 0xf9\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_PON155                        = 0xcf\n\tIFT_PON622                        = 0xd0\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPATM                       = 0xc5\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf2\n\tIFT_Q2931                         = 0xc9\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SIPSIG                        = 0xcc\n\tIFT_SIPTG                         = 0xcb\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TELINK                        = 0xc8\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VIRTUALTG                     = 0xca\n\tIFT_VOICEDID                      = 0xd5\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEEMFGD                    = 0xd3\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFGDEANA                  = 0xd4\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERCABLE                = 0xc6\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_WIREGUARD                     = 0xfb\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIN_RFC3021_HOST                   = 0x1\n\tIN_RFC3021_NET                    = 0xfffffffe\n\tIN_RFC3021_NSHIFT                 = 0x1f\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_DIVERT                    = 0x102\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x103\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_MPLS                      = 0x89\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_SCTP                      = 0x84\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_UDPLITE                   = 0x88\n\tIPV6_AUTH_LEVEL                   = 0x35\n\tIPV6_AUTOFLOWLABEL                = 0x3b\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_ESP_NETWORK_LEVEL            = 0x37\n\tIPV6_ESP_TRANS_LEVEL              = 0x36\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPCOMP_LEVEL                 = 0x3c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MINHOPCOUNT                  = 0x41\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_OPTIONS                      = 0x1\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PIPEX                        = 0x3f\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVDSTPORT                  = 0x40\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTABLE                       = 0x1021\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_AUTH_LEVEL                     = 0x14\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_ESP_NETWORK_LEVEL              = 0x16\n\tIP_ESP_TRANS_LEVEL                = 0x15\n\tIP_HDRINCL                        = 0x2\n\tIP_IPCOMP_LEVEL                   = 0x1d\n\tIP_IPDEFTTL                       = 0x25\n\tIP_IPSECFLOWINFO                  = 0x24\n\tIP_IPSEC_LOCAL_AUTH               = 0x1b\n\tIP_IPSEC_LOCAL_CRED               = 0x19\n\tIP_IPSEC_LOCAL_ID                 = 0x17\n\tIP_IPSEC_REMOTE_AUTH              = 0x1c\n\tIP_IPSEC_REMOTE_CRED              = 0x1a\n\tIP_IPSEC_REMOTE_ID                = 0x18\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0xfff\n\tIP_MF                             = 0x2000\n\tIP_MINTTL                         = 0x20\n\tIP_MIN_MEMBERSHIPS                = 0xf\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PIPEX                          = 0x22\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVDSTPORT                    = 0x21\n\tIP_RECVIF                         = 0x1e\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVRTABLE                     = 0x23\n\tIP_RECVTTL                        = 0x1f\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_RTABLE                         = 0x1021\n\tIP_SENDSRCADDR                    = 0x7\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tITIMER_PROF                       = 0x2\n\tITIMER_REAL                       = 0x0\n\tITIMER_VIRTUAL                    = 0x1\n\tIUCLC                             = 0x1000\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLCNT_OVERLOAD_FLUSH               = 0x6\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x6\n\tMADV_NORMAL                       = 0x0\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SPACEAVAIL                   = 0x5\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ANON                          = 0x1000\n\tMAP_ANONYMOUS                     = 0x1000\n\tMAP_CONCEAL                       = 0x8000\n\tMAP_COPY                          = 0x2\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_FLAGMASK                      = 0xfff7\n\tMAP_HASSEMAPHORE                  = 0x0\n\tMAP_INHERIT                       = 0x0\n\tMAP_INHERIT_COPY                  = 0x1\n\tMAP_INHERIT_NONE                  = 0x2\n\tMAP_INHERIT_SHARE                 = 0x0\n\tMAP_INHERIT_ZERO                  = 0x3\n\tMAP_NOEXTEND                      = 0x0\n\tMAP_NORESERVE                     = 0x0\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x0\n\tMAP_SHARED                        = 0x1\n\tMAP_STACK                         = 0x4000\n\tMAP_TRYFIXED                      = 0x0\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DELEXPORT                     = 0x20000\n\tMNT_DOOMED                        = 0x8000000\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_FORCE                         = 0x80000\n\tMNT_LAZY                          = 0x3\n\tMNT_LOCAL                         = 0x1000\n\tMNT_NOATIME                       = 0x8000\n\tMNT_NODEV                         = 0x10\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOPERM                        = 0x20\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOWAIT                        = 0x2\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x4000000\n\tMNT_STALLED                       = 0x100000\n\tMNT_SWAPPABLE                     = 0x200000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0x400ffff\n\tMNT_WAIT                          = 0x1\n\tMNT_WANTRDWR                      = 0x2000000\n\tMNT_WXALLOWED                     = 0x800\n\tMOUNT_AFS                         = \"afs\"\n\tMOUNT_CD9660                      = \"cd9660\"\n\tMOUNT_EXT2FS                      = \"ext2fs\"\n\tMOUNT_FFS                         = \"ffs\"\n\tMOUNT_FUSEFS                      = \"fuse\"\n\tMOUNT_MFS                         = \"mfs\"\n\tMOUNT_MSDOS                       = \"msdos\"\n\tMOUNT_NCPFS                       = \"ncpfs\"\n\tMOUNT_NFS                         = \"nfs\"\n\tMOUNT_NTFS                        = \"ntfs\"\n\tMOUNT_TMPFS                       = \"tmpfs\"\n\tMOUNT_UDF                         = \"udf\"\n\tMOUNT_UFS                         = \"ffs\"\n\tMSG_BCAST                         = 0x100\n\tMSG_CMSG_CLOEXEC                  = 0x800\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOR                           = 0x8\n\tMSG_MCAST                         = 0x200\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_TRUNC                         = 0x10\n\tMSG_WAITALL                       = 0x40\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x4\n\tMS_SYNC                           = 0x2\n\tNAME_MAX                          = 0xff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x3\n\tNET_RT_IFNAMES                    = 0x6\n\tNET_RT_MAXID                      = 0x8\n\tNET_RT_SOURCE                     = 0x7\n\tNET_RT_STATS                      = 0x4\n\tNET_RT_TABLE                      = 0x5\n\tNFDBITS                           = 0x20\n\tNOFLSH                            = 0x80000000\n\tNOKERNINFO                        = 0x2000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHANGE                       = 0x1\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EOF                          = 0x2\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_OOB                          = 0x4\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_TRUNCATE                     = 0x80\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOLCUC                             = 0x20\n\tONLCR                             = 0x2\n\tONLRET                            = 0x80\n\tONOCR                             = 0x40\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tOXTABS                            = 0x4\n\tO_ACCMODE                         = 0x3\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x10000\n\tO_CREAT                           = 0x200\n\tO_DIRECTORY                       = 0x20000\n\tO_DSYNC                           = 0x80\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_RSYNC                           = 0x80\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPF_FLUSH                          = 0x1\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BFD                          = 0xb\n\tRTAX_BRD                          = 0x7\n\tRTAX_DNS                          = 0xc\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_LABEL                        = 0xa\n\tRTAX_MAX                          = 0xf\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_SEARCH                       = 0xe\n\tRTAX_SRC                          = 0x8\n\tRTAX_SRCMASK                      = 0x9\n\tRTAX_STATIC                       = 0xd\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BFD                           = 0x800\n\tRTA_BRD                           = 0x80\n\tRTA_DNS                           = 0x1000\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_LABEL                         = 0x400\n\tRTA_NETMASK                       = 0x4\n\tRTA_SEARCH                        = 0x4000\n\tRTA_SRC                           = 0x100\n\tRTA_SRCMASK                       = 0x200\n\tRTA_STATIC                        = 0x2000\n\tRTF_ANNOUNCE                      = 0x4000\n\tRTF_BFD                           = 0x1000000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_BROADCAST                     = 0x400000\n\tRTF_CACHED                        = 0x20000\n\tRTF_CLONED                        = 0x10000\n\tRTF_CLONING                       = 0x100\n\tRTF_CONNECTED                     = 0x800000\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_FMASK                         = 0x110fc08\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_LOCAL                         = 0x200000\n\tRTF_MODIFIED                      = 0x20\n\tRTF_MPATH                         = 0x40000\n\tRTF_MPLS                          = 0x100000\n\tRTF_MULTICAST                     = 0x200\n\tRTF_PERMANENT_ARP                 = 0x2000\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_PROTO3                        = 0x2000\n\tRTF_REJECT                        = 0x8\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_USETRAILERS                   = 0x8000\n\tRTM_80211INFO                     = 0x15\n\tRTM_ADD                           = 0x1\n\tRTM_BFD                           = 0x12\n\tRTM_CHANGE                        = 0x3\n\tRTM_CHGADDRATTR                   = 0x14\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_DESYNC                        = 0x10\n\tRTM_GET                           = 0x4\n\tRTM_IFANNOUNCE                    = 0xf\n\tRTM_IFINFO                        = 0xe\n\tRTM_INVALIDATE                    = 0x11\n\tRTM_LOSING                        = 0x5\n\tRTM_MAXSIZE                       = 0x800\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_PROPOSAL                      = 0x13\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_SOURCE                        = 0x16\n\tRTM_VERSION                       = 0x5\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRT_TABLEID_BITS                   = 0x8\n\tRT_TABLEID_MASK                   = 0xff\n\tRT_TABLEID_MAX                    = 0xff\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tRUSAGE_THREAD                     = 0x1\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x4\n\tSEEK_CUR                          = 0x1\n\tSEEK_END                          = 0x2\n\tSEEK_SET                          = 0x0\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80206931\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCAIFGROUP                      = 0x80286987\n\tSIOCATMARK                        = 0x40047307\n\tSIOCBRDGADD                       = 0x8060693c\n\tSIOCBRDGADDL                      = 0x80606949\n\tSIOCBRDGADDS                      = 0x80606941\n\tSIOCBRDGARL                       = 0x808c694d\n\tSIOCBRDGDADDR                     = 0x81286947\n\tSIOCBRDGDEL                       = 0x8060693d\n\tSIOCBRDGDELS                      = 0x80606942\n\tSIOCBRDGFLUSH                     = 0x80606948\n\tSIOCBRDGFRL                       = 0x808c694e\n\tSIOCBRDGGCACHE                    = 0xc0146941\n\tSIOCBRDGGFD                       = 0xc0146952\n\tSIOCBRDGGHT                       = 0xc0146951\n\tSIOCBRDGGIFFLGS                   = 0xc060693e\n\tSIOCBRDGGMA                       = 0xc0146953\n\tSIOCBRDGGPARAM                    = 0xc0406958\n\tSIOCBRDGGPRI                      = 0xc0146950\n\tSIOCBRDGGRL                       = 0xc030694f\n\tSIOCBRDGGTO                       = 0xc0146946\n\tSIOCBRDGIFS                       = 0xc0606942\n\tSIOCBRDGRTS                       = 0xc0206943\n\tSIOCBRDGSADDR                     = 0xc1286944\n\tSIOCBRDGSCACHE                    = 0x80146940\n\tSIOCBRDGSFD                       = 0x80146952\n\tSIOCBRDGSHT                       = 0x80146951\n\tSIOCBRDGSIFCOST                   = 0x80606955\n\tSIOCBRDGSIFFLGS                   = 0x8060693f\n\tSIOCBRDGSIFPRIO                   = 0x80606954\n\tSIOCBRDGSIFPROT                   = 0x8060694a\n\tSIOCBRDGSMA                       = 0x80146953\n\tSIOCBRDGSPRI                      = 0x80146950\n\tSIOCBRDGSPROTO                    = 0x8014695a\n\tSIOCBRDGSTO                       = 0x80146945\n\tSIOCBRDGSTXHC                     = 0x80146959\n\tSIOCDELLABEL                      = 0x80206997\n\tSIOCDELMULTI                      = 0x80206932\n\tSIOCDIFADDR                       = 0x80206919\n\tSIOCDIFGROUP                      = 0x80286989\n\tSIOCDIFPARENT                     = 0x802069b4\n\tSIOCDIFPHYADDR                    = 0x80206949\n\tSIOCDPWE3NEIGHBOR                 = 0x802069de\n\tSIOCDVNETID                       = 0x802069af\n\tSIOCGETKALIVE                     = 0xc01869a4\n\tSIOCGETLABEL                      = 0x8020699a\n\tSIOCGETMPWCFG                     = 0xc02069ae\n\tSIOCGETPFLOW                      = 0xc02069fe\n\tSIOCGETPFSYNC                     = 0xc02069f8\n\tSIOCGETSGCNT                      = 0xc0207534\n\tSIOCGETVIFCNT                     = 0xc0287533\n\tSIOCGETVLAN                       = 0xc0206990\n\tSIOCGIFADDR                       = 0xc0206921\n\tSIOCGIFBRDADDR                    = 0xc0206923\n\tSIOCGIFCONF                       = 0xc0106924\n\tSIOCGIFDATA                       = 0xc020691b\n\tSIOCGIFDESCR                      = 0xc0206981\n\tSIOCGIFDSTADDR                    = 0xc0206922\n\tSIOCGIFFLAGS                      = 0xc0206911\n\tSIOCGIFGATTR                      = 0xc028698b\n\tSIOCGIFGENERIC                    = 0xc020693a\n\tSIOCGIFGLIST                      = 0xc028698d\n\tSIOCGIFGMEMB                      = 0xc028698a\n\tSIOCGIFGROUP                      = 0xc0286988\n\tSIOCGIFHARDMTU                    = 0xc02069a5\n\tSIOCGIFLLPRIO                     = 0xc02069b6\n\tSIOCGIFMEDIA                      = 0xc0406938\n\tSIOCGIFMETRIC                     = 0xc0206917\n\tSIOCGIFMTU                        = 0xc020697e\n\tSIOCGIFNETMASK                    = 0xc0206925\n\tSIOCGIFPAIR                       = 0xc02069b1\n\tSIOCGIFPARENT                     = 0xc02069b3\n\tSIOCGIFPRIORITY                   = 0xc020699c\n\tSIOCGIFRDOMAIN                    = 0xc02069a0\n\tSIOCGIFRTLABEL                    = 0xc0206983\n\tSIOCGIFRXR                        = 0x802069aa\n\tSIOCGIFSFFPAGE                    = 0xc1126939\n\tSIOCGIFXFLAGS                     = 0xc020699e\n\tSIOCGLIFPHYADDR                   = 0xc218694b\n\tSIOCGLIFPHYDF                     = 0xc02069c2\n\tSIOCGLIFPHYECN                    = 0xc02069c8\n\tSIOCGLIFPHYRTABLE                 = 0xc02069a2\n\tSIOCGLIFPHYTTL                    = 0xc02069a9\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGPWE3                         = 0xc0206998\n\tSIOCGPWE3CTRLWORD                 = 0xc02069dc\n\tSIOCGPWE3FAT                      = 0xc02069dd\n\tSIOCGPWE3NEIGHBOR                 = 0xc21869de\n\tSIOCGRXHPRIO                      = 0xc02069db\n\tSIOCGSPPPPARAMS                   = 0xc0206994\n\tSIOCGTXHPRIO                      = 0xc02069c6\n\tSIOCGUMBINFO                      = 0xc02069be\n\tSIOCGUMBPARAM                     = 0xc02069c0\n\tSIOCGVH                           = 0xc02069f6\n\tSIOCGVNETFLOWID                   = 0xc02069c4\n\tSIOCGVNETID                       = 0xc02069a7\n\tSIOCIFAFATTACH                    = 0x801169ab\n\tSIOCIFAFDETACH                    = 0x801169ac\n\tSIOCIFCREATE                      = 0x8020697a\n\tSIOCIFDESTROY                     = 0x80206979\n\tSIOCIFGCLONERS                    = 0xc0106978\n\tSIOCSETKALIVE                     = 0x801869a3\n\tSIOCSETLABEL                      = 0x80206999\n\tSIOCSETMPWCFG                     = 0x802069ad\n\tSIOCSETPFLOW                      = 0x802069fd\n\tSIOCSETPFSYNC                     = 0x802069f7\n\tSIOCSETVLAN                       = 0x8020698f\n\tSIOCSIFADDR                       = 0x8020690c\n\tSIOCSIFBRDADDR                    = 0x80206913\n\tSIOCSIFDESCR                      = 0x80206980\n\tSIOCSIFDSTADDR                    = 0x8020690e\n\tSIOCSIFFLAGS                      = 0x80206910\n\tSIOCSIFGATTR                      = 0x8028698c\n\tSIOCSIFGENERIC                    = 0x80206939\n\tSIOCSIFLLADDR                     = 0x8020691f\n\tSIOCSIFLLPRIO                     = 0x802069b5\n\tSIOCSIFMEDIA                      = 0xc0206937\n\tSIOCSIFMETRIC                     = 0x80206918\n\tSIOCSIFMTU                        = 0x8020697f\n\tSIOCSIFNETMASK                    = 0x80206916\n\tSIOCSIFPAIR                       = 0x802069b0\n\tSIOCSIFPARENT                     = 0x802069b2\n\tSIOCSIFPRIORITY                   = 0x8020699b\n\tSIOCSIFRDOMAIN                    = 0x8020699f\n\tSIOCSIFRTLABEL                    = 0x80206982\n\tSIOCSIFXFLAGS                     = 0x8020699d\n\tSIOCSLIFPHYADDR                   = 0x8218694a\n\tSIOCSLIFPHYDF                     = 0x802069c1\n\tSIOCSLIFPHYECN                    = 0x802069c7\n\tSIOCSLIFPHYRTABLE                 = 0x802069a1\n\tSIOCSLIFPHYTTL                    = 0x802069a8\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSPWE3CTRLWORD                 = 0x802069dc\n\tSIOCSPWE3FAT                      = 0x802069dd\n\tSIOCSPWE3NEIGHBOR                 = 0x821869de\n\tSIOCSRXHPRIO                      = 0x802069db\n\tSIOCSSPPPPARAMS                   = 0x80206993\n\tSIOCSTXHPRIO                      = 0x802069c5\n\tSIOCSUMBPARAM                     = 0x802069bf\n\tSIOCSVH                           = 0xc02069f5\n\tSIOCSVNETFLOWID                   = 0x802069c3\n\tSIOCSVNETID                       = 0x802069a6\n\tSOCK_CLOEXEC                      = 0x8000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_DNS                          = 0x1000\n\tSOCK_NONBLOCK                     = 0x4000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_BINDANY                        = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DOMAIN                         = 0x1024\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NETPROC                        = 0x1020\n\tSO_OOBINLINE                      = 0x100\n\tSO_PEERCRED                       = 0x1022\n\tSO_PROTOCOL                       = 0x1025\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x1006\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_RTABLE                         = 0x1021\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x1005\n\tSO_SPLICE                         = 0x1023\n\tSO_TIMESTAMP                      = 0x800\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tSO_ZEROIZE                        = 0x2000\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tTCIFLUSH                          = 0x1\n\tTCIOFF                            = 0x3\n\tTCIOFLUSH                         = 0x3\n\tTCION                             = 0x4\n\tTCOFLUSH                          = 0x2\n\tTCOOFF                            = 0x1\n\tTCOON                             = 0x2\n\tTCPOPT_EOL                        = 0x0\n\tTCPOPT_MAXSEG                     = 0x2\n\tTCPOPT_NOP                        = 0x1\n\tTCPOPT_SACK                       = 0x5\n\tTCPOPT_SACK_HDR                   = 0x1010500\n\tTCPOPT_SACK_PERMITTED             = 0x4\n\tTCPOPT_SACK_PERMIT_HDR            = 0x1010402\n\tTCPOPT_SIGNATURE                  = 0x13\n\tTCPOPT_TIMESTAMP                  = 0x8\n\tTCPOPT_TSTAMP_HDR                 = 0x101080a\n\tTCPOPT_WINDOW                     = 0x3\n\tTCP_INFO                          = 0x9\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_SACK                      = 0x3\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MD5SIG                        = 0x4\n\tTCP_MSS                           = 0x200\n\tTCP_NODELAY                       = 0x1\n\tTCP_NOPUSH                        = 0x10\n\tTCP_SACKHOLE_LIMIT                = 0x80\n\tTCP_SACK_ENABLE                   = 0x8\n\tTCSAFLUSH                         = 0x2\n\tTIMER_ABSTIME                     = 0x1\n\tTIMER_RELTIME                     = 0x0\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCHKVERAUTH                    = 0x2000741e\n\tTIOCCLRVERAUTH                    = 0x2000741d\n\tTIOCCONS                          = 0x80047462\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLAG_CLOCAL                   = 0x2\n\tTIOCFLAG_CRTSCTS                  = 0x4\n\tTIOCFLAG_MDMBUF                   = 0x8\n\tTIOCFLAG_PPS                      = 0x10\n\tTIOCFLAG_SOFTCAR                  = 0x1\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGFLAGS                        = 0x4004745d\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGSID                          = 0x40047463\n\tTIOCGTSTAMP                       = 0x4010745b\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMODG                          = 0x4004746a\n\tTIOCMODS                          = 0x8004746d\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSETVERAUTH                    = 0x8004741c\n\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x8004745f\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x20007465\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSTSTAMP                       = 0x8008745a\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\n\tTIOCUCNTL_CBRK                    = 0x7a\n\tTIOCUCNTL_SBRK                    = 0x7b\n\tTOSTOP                            = 0x400000\n\tUTIME_NOW                         = -0x2\n\tUTIME_OMIT                        = -0x1\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVM_ANONMIN                        = 0x7\n\tVM_LOADAVG                        = 0x2\n\tVM_MALLOC_CONF                    = 0xc\n\tVM_MAXID                          = 0xd\n\tVM_MAXSLP                         = 0xa\n\tVM_METER                          = 0x1\n\tVM_NKMEMPAGES                     = 0x6\n\tVM_PSSTRINGS                      = 0x3\n\tVM_SWAPENCRYPT                    = 0x5\n\tVM_USPACE                         = 0xb\n\tVM_UVMEXP                         = 0x4\n\tVM_VNODEMIN                       = 0x9\n\tVM_VTEXTMIN                       = 0x8\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWALTSIG                           = 0x4\n\tWCONTINUED                        = 0x8\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\n\tWUNTRACED                         = 0x2\n\tXCASE                             = 0x1000000\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x5c)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x58)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x59)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEIPSEC          = syscall.Errno(0x52)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x5f)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMEDIUMTYPE     = syscall.Errno(0x56)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x53)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOMEDIUM       = syscall.Errno(0x55)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x5a)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5d)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x5b)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x57)\n\tEOWNERDEAD      = syscall.Errno(0x5e)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5f)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disk quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC program not available\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIPSEC\", \"IPsec processing failure\"},\n\t{83, \"ENOATTR\", \"attribute not found\"},\n\t{84, \"EILSEQ\", \"illegal byte sequence\"},\n\t{85, \"ENOMEDIUM\", \"no medium found\"},\n\t{86, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{87, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{88, \"ECANCELED\", \"operation canceled\"},\n\t{89, \"EIDRM\", \"identifier removed\"},\n\t{90, \"ENOMSG\", \"no message of desired type\"},\n\t{91, \"ENOTSUP\", \"not supported\"},\n\t{92, \"EBADMSG\", \"bad message\"},\n\t{93, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{94, \"EOWNERDEAD\", \"previous owner died\"},\n\t{95, \"ELAST\", \"protocol error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGABRT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"thread AST\"},\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && solaris\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_802                        = 0x12\n\tAF_APPLETALK                  = 0x10\n\tAF_CCITT                      = 0xa\n\tAF_CHAOS                      = 0x5\n\tAF_DATAKIT                    = 0x9\n\tAF_DECnet                     = 0xc\n\tAF_DLI                        = 0xd\n\tAF_ECMA                       = 0x8\n\tAF_FILE                       = 0x1\n\tAF_GOSIP                      = 0x16\n\tAF_HYLINK                     = 0xf\n\tAF_IMPLINK                    = 0x3\n\tAF_INET                       = 0x2\n\tAF_INET6                      = 0x1a\n\tAF_INET_OFFLOAD               = 0x1e\n\tAF_IPX                        = 0x17\n\tAF_KEY                        = 0x1b\n\tAF_LAT                        = 0xe\n\tAF_LINK                       = 0x19\n\tAF_LOCAL                      = 0x1\n\tAF_MAX                        = 0x20\n\tAF_NBS                        = 0x7\n\tAF_NCA                        = 0x1c\n\tAF_NIT                        = 0x11\n\tAF_NS                         = 0x6\n\tAF_OSI                        = 0x13\n\tAF_OSINET                     = 0x15\n\tAF_PACKET                     = 0x20\n\tAF_POLICY                     = 0x1d\n\tAF_PUP                        = 0x4\n\tAF_ROUTE                      = 0x18\n\tAF_SNA                        = 0xb\n\tAF_TRILL                      = 0x1f\n\tAF_UNIX                       = 0x1\n\tAF_UNSPEC                     = 0x0\n\tAF_X25                        = 0x14\n\tARPHRD_ARCNET                 = 0x7\n\tARPHRD_ATM                    = 0x10\n\tARPHRD_AX25                   = 0x3\n\tARPHRD_CHAOS                  = 0x5\n\tARPHRD_EETHER                 = 0x2\n\tARPHRD_ETHER                  = 0x1\n\tARPHRD_FC                     = 0x12\n\tARPHRD_FRAME                  = 0xf\n\tARPHRD_HDLC                   = 0x11\n\tARPHRD_IB                     = 0x20\n\tARPHRD_IEEE802                = 0x6\n\tARPHRD_IPATM                  = 0x13\n\tARPHRD_METRICOM               = 0x17\n\tARPHRD_TUNNEL                 = 0x1f\n\tB0                            = 0x0\n\tB110                          = 0x3\n\tB115200                       = 0x12\n\tB1200                         = 0x9\n\tB134                          = 0x4\n\tB150                          = 0x5\n\tB153600                       = 0x13\n\tB1800                         = 0xa\n\tB19200                        = 0xe\n\tB200                          = 0x6\n\tB230400                       = 0x14\n\tB2400                         = 0xb\n\tB300                          = 0x7\n\tB307200                       = 0x15\n\tB38400                        = 0xf\n\tB460800                       = 0x16\n\tB4800                         = 0xc\n\tB50                           = 0x1\n\tB57600                        = 0x10\n\tB600                          = 0x8\n\tB75                           = 0x2\n\tB76800                        = 0x11\n\tB921600                       = 0x17\n\tB9600                         = 0xd\n\tBIOCFLUSH                     = 0x20004268\n\tBIOCGBLEN                     = 0x40044266\n\tBIOCGDLT                      = 0x4004426a\n\tBIOCGDLTLIST                  = -0x3fefbd89\n\tBIOCGDLTLIST32                = -0x3ff7bd89\n\tBIOCGETIF                     = 0x4020426b\n\tBIOCGETLIF                    = 0x4078426b\n\tBIOCGHDRCMPLT                 = 0x40044274\n\tBIOCGRTIMEOUT                 = 0x4010427b\n\tBIOCGRTIMEOUT32               = 0x4008427b\n\tBIOCGSEESENT                  = 0x40044278\n\tBIOCGSTATS                    = 0x4080426f\n\tBIOCGSTATSOLD                 = 0x4008426f\n\tBIOCIMMEDIATE                 = -0x7ffbbd90\n\tBIOCPROMISC                   = 0x20004269\n\tBIOCSBLEN                     = -0x3ffbbd9a\n\tBIOCSDLT                      = -0x7ffbbd8a\n\tBIOCSETF                      = -0x7fefbd99\n\tBIOCSETF32                    = -0x7ff7bd99\n\tBIOCSETIF                     = -0x7fdfbd94\n\tBIOCSETLIF                    = -0x7f87bd94\n\tBIOCSHDRCMPLT                 = -0x7ffbbd8b\n\tBIOCSRTIMEOUT                 = -0x7fefbd86\n\tBIOCSRTIMEOUT32               = -0x7ff7bd86\n\tBIOCSSEESENT                  = -0x7ffbbd87\n\tBIOCSTCPF                     = -0x7fefbd8e\n\tBIOCSUDPF                     = -0x7fefbd8d\n\tBIOCVERSION                   = 0x40044271\n\tBPF_A                         = 0x10\n\tBPF_ABS                       = 0x20\n\tBPF_ADD                       = 0x0\n\tBPF_ALIGNMENT                 = 0x4\n\tBPF_ALU                       = 0x4\n\tBPF_AND                       = 0x50\n\tBPF_B                         = 0x10\n\tBPF_DFLTBUFSIZE               = 0x100000\n\tBPF_DIV                       = 0x30\n\tBPF_H                         = 0x8\n\tBPF_IMM                       = 0x0\n\tBPF_IND                       = 0x40\n\tBPF_JA                        = 0x0\n\tBPF_JEQ                       = 0x10\n\tBPF_JGE                       = 0x30\n\tBPF_JGT                       = 0x20\n\tBPF_JMP                       = 0x5\n\tBPF_JSET                      = 0x40\n\tBPF_K                         = 0x0\n\tBPF_LD                        = 0x0\n\tBPF_LDX                       = 0x1\n\tBPF_LEN                       = 0x80\n\tBPF_LSH                       = 0x60\n\tBPF_MAJOR_VERSION             = 0x1\n\tBPF_MAXBUFSIZE                = 0x1000000\n\tBPF_MAXINSNS                  = 0x200\n\tBPF_MEM                       = 0x60\n\tBPF_MEMWORDS                  = 0x10\n\tBPF_MINBUFSIZE                = 0x20\n\tBPF_MINOR_VERSION             = 0x1\n\tBPF_MISC                      = 0x7\n\tBPF_MSH                       = 0xa0\n\tBPF_MUL                       = 0x20\n\tBPF_NEG                       = 0x80\n\tBPF_OR                        = 0x40\n\tBPF_RELEASE                   = 0x30bb6\n\tBPF_RET                       = 0x6\n\tBPF_RSH                       = 0x70\n\tBPF_ST                        = 0x2\n\tBPF_STX                       = 0x3\n\tBPF_SUB                       = 0x10\n\tBPF_TAX                       = 0x0\n\tBPF_TXA                       = 0x80\n\tBPF_W                         = 0x0\n\tBPF_X                         = 0x8\n\tBRKINT                        = 0x2\n\tBS0                           = 0x0\n\tBS1                           = 0x2000\n\tBSDLY                         = 0x2000\n\tCBAUD                         = 0xf\n\tCFLUSH                        = 0xf\n\tCIBAUD                        = 0xf0000\n\tCLOCAL                        = 0x800\n\tCLOCK_HIGHRES                 = 0x4\n\tCLOCK_LEVEL                   = 0xa\n\tCLOCK_MONOTONIC               = 0x4\n\tCLOCK_PROCESS_CPUTIME_ID      = 0x5\n\tCLOCK_PROF                    = 0x2\n\tCLOCK_REALTIME                = 0x3\n\tCLOCK_THREAD_CPUTIME_ID       = 0x2\n\tCLOCK_VIRTUAL                 = 0x1\n\tCR0                           = 0x0\n\tCR1                           = 0x200\n\tCR2                           = 0x400\n\tCR3                           = 0x600\n\tCRDLY                         = 0x600\n\tCREAD                         = 0x80\n\tCRTSCTS                       = 0x80000000\n\tCS5                           = 0x0\n\tCS6                           = 0x10\n\tCS7                           = 0x20\n\tCS8                           = 0x30\n\tCSIZE                         = 0x30\n\tCSTART                        = 0x11\n\tCSTATUS                       = 0x14\n\tCSTOP                         = 0x13\n\tCSTOPB                        = 0x40\n\tCSUSP                         = 0x1a\n\tCSWTCH                        = 0x1a\n\tDIOC                          = 0x6400\n\tDIOCGETB                      = 0x6402\n\tDIOCGETC                      = 0x6401\n\tDIOCGETP                      = 0x6408\n\tDIOCSETE                      = 0x6403\n\tDIOCSETP                      = 0x6409\n\tDLT_AIRONET_HEADER            = 0x78\n\tDLT_APPLE_IP_OVER_IEEE1394    = 0x8a\n\tDLT_ARCNET                    = 0x7\n\tDLT_ARCNET_LINUX              = 0x81\n\tDLT_ATM_CLIP                  = 0x13\n\tDLT_ATM_RFC1483               = 0xb\n\tDLT_AURORA                    = 0x7e\n\tDLT_AX25                      = 0x3\n\tDLT_BACNET_MS_TP              = 0xa5\n\tDLT_CHAOS                     = 0x5\n\tDLT_CISCO_IOS                 = 0x76\n\tDLT_C_HDLC                    = 0x68\n\tDLT_DOCSIS                    = 0x8f\n\tDLT_ECONET                    = 0x73\n\tDLT_EN10MB                    = 0x1\n\tDLT_EN3MB                     = 0x2\n\tDLT_ENC                       = 0x6d\n\tDLT_ERF_ETH                   = 0xaf\n\tDLT_ERF_POS                   = 0xb0\n\tDLT_FDDI                      = 0xa\n\tDLT_FRELAY                    = 0x6b\n\tDLT_GCOM_SERIAL               = 0xad\n\tDLT_GCOM_T1E1                 = 0xac\n\tDLT_GPF_F                     = 0xab\n\tDLT_GPF_T                     = 0xaa\n\tDLT_GPRS_LLC                  = 0xa9\n\tDLT_HDLC                      = 0x10\n\tDLT_HHDLC                     = 0x79\n\tDLT_HIPPI                     = 0xf\n\tDLT_IBM_SN                    = 0x92\n\tDLT_IBM_SP                    = 0x91\n\tDLT_IEEE802                   = 0x6\n\tDLT_IEEE802_11                = 0x69\n\tDLT_IEEE802_11_RADIO          = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS      = 0xa3\n\tDLT_IPNET                     = 0xe2\n\tDLT_IPOIB                     = 0xa2\n\tDLT_IP_OVER_FC                = 0x7a\n\tDLT_JUNIPER_ATM1              = 0x89\n\tDLT_JUNIPER_ATM2              = 0x87\n\tDLT_JUNIPER_CHDLC             = 0xb5\n\tDLT_JUNIPER_ES                = 0x84\n\tDLT_JUNIPER_ETHER             = 0xb2\n\tDLT_JUNIPER_FRELAY            = 0xb4\n\tDLT_JUNIPER_GGSN              = 0x85\n\tDLT_JUNIPER_MFR               = 0x86\n\tDLT_JUNIPER_MLFR              = 0x83\n\tDLT_JUNIPER_MLPPP             = 0x82\n\tDLT_JUNIPER_MONITOR           = 0xa4\n\tDLT_JUNIPER_PIC_PEER          = 0xae\n\tDLT_JUNIPER_PPP               = 0xb3\n\tDLT_JUNIPER_PPPOE             = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM         = 0xa8\n\tDLT_JUNIPER_SERVICES          = 0x88\n\tDLT_LINUX_IRDA                = 0x90\n\tDLT_LINUX_LAPD                = 0xb1\n\tDLT_LINUX_SLL                 = 0x71\n\tDLT_LOOP                      = 0x6c\n\tDLT_LTALK                     = 0x72\n\tDLT_MTP2                      = 0x8c\n\tDLT_MTP2_WITH_PHDR            = 0x8b\n\tDLT_MTP3                      = 0x8d\n\tDLT_NULL                      = 0x0\n\tDLT_PCI_EXP                   = 0x7d\n\tDLT_PFLOG                     = 0x75\n\tDLT_PFSYNC                    = 0x12\n\tDLT_PPP                       = 0x9\n\tDLT_PPP_BSDOS                 = 0xe\n\tDLT_PPP_PPPD                  = 0xa6\n\tDLT_PRISM_HEADER              = 0x77\n\tDLT_PRONET                    = 0x4\n\tDLT_RAW                       = 0xc\n\tDLT_RAWAF_MASK                = 0x2240000\n\tDLT_RIO                       = 0x7c\n\tDLT_SCCP                      = 0x8e\n\tDLT_SLIP                      = 0x8\n\tDLT_SLIP_BSDOS                = 0xd\n\tDLT_SUNATM                    = 0x7b\n\tDLT_SYMANTEC_FIREWALL         = 0x63\n\tDLT_TZSP                      = 0x80\n\tECHO                          = 0x8\n\tECHOCTL                       = 0x200\n\tECHOE                         = 0x10\n\tECHOK                         = 0x20\n\tECHOKE                        = 0x800\n\tECHONL                        = 0x40\n\tECHOPRT                       = 0x400\n\tEMPTY_SET                     = 0x0\n\tEMT_CPCOVF                    = 0x1\n\tEQUALITY_CHECK                = 0x0\n\tEXTA                          = 0xe\n\tEXTB                          = 0xf\n\tFD_CLOEXEC                    = 0x1\n\tFD_NFDBITS                    = 0x40\n\tFD_SETSIZE                    = 0x10000\n\tFF0                           = 0x0\n\tFF1                           = 0x8000\n\tFFDLY                         = 0x8000\n\tFIORDCHK                      = 0x6603\n\tFLUSHALL                      = 0x1\n\tFLUSHDATA                     = 0x0\n\tFLUSHO                        = 0x2000\n\tF_ALLOCSP                     = 0xa\n\tF_ALLOCSP64                   = 0xa\n\tF_BADFD                       = 0x2e\n\tF_BLKSIZE                     = 0x13\n\tF_BLOCKS                      = 0x12\n\tF_CHKFL                       = 0x8\n\tF_COMPAT                      = 0x8\n\tF_DUP2FD                      = 0x9\n\tF_DUP2FD_CLOEXEC              = 0x24\n\tF_DUPFD                       = 0x0\n\tF_DUPFD_CLOEXEC               = 0x25\n\tF_FLOCK                       = 0x35\n\tF_FLOCK64                     = 0x35\n\tF_FLOCKW                      = 0x36\n\tF_FLOCKW64                    = 0x36\n\tF_FREESP                      = 0xb\n\tF_FREESP64                    = 0xb\n\tF_GETFD                       = 0x1\n\tF_GETFL                       = 0x3\n\tF_GETLK                       = 0xe\n\tF_GETLK64                     = 0xe\n\tF_GETOWN                      = 0x17\n\tF_GETXFL                      = 0x2d\n\tF_HASREMOTELOCKS              = 0x1a\n\tF_ISSTREAM                    = 0xd\n\tF_MANDDNY                     = 0x10\n\tF_MDACC                       = 0x20\n\tF_NODNY                       = 0x0\n\tF_NPRIV                       = 0x10\n\tF_OFD_GETLK                   = 0x2f\n\tF_OFD_GETLK64                 = 0x2f\n\tF_OFD_SETLK                   = 0x30\n\tF_OFD_SETLK64                 = 0x30\n\tF_OFD_SETLKW                  = 0x31\n\tF_OFD_SETLKW64                = 0x31\n\tF_PRIV                        = 0xf\n\tF_QUOTACTL                    = 0x11\n\tF_RDACC                       = 0x1\n\tF_RDDNY                       = 0x1\n\tF_RDLCK                       = 0x1\n\tF_REVOKE                      = 0x19\n\tF_RMACC                       = 0x4\n\tF_RMDNY                       = 0x4\n\tF_RWACC                       = 0x3\n\tF_RWDNY                       = 0x3\n\tF_SETFD                       = 0x2\n\tF_SETFL                       = 0x4\n\tF_SETLK                       = 0x6\n\tF_SETLK64                     = 0x6\n\tF_SETLK64_NBMAND              = 0x2a\n\tF_SETLKW                      = 0x7\n\tF_SETLKW64                    = 0x7\n\tF_SETLK_NBMAND                = 0x2a\n\tF_SETOWN                      = 0x18\n\tF_SHARE                       = 0x28\n\tF_SHARE_NBMAND                = 0x2b\n\tF_UNLCK                       = 0x3\n\tF_UNLKSYS                     = 0x4\n\tF_UNSHARE                     = 0x29\n\tF_WRACC                       = 0x2\n\tF_WRDNY                       = 0x2\n\tF_WRLCK                       = 0x2\n\tHUPCL                         = 0x400\n\tIBSHIFT                       = 0x10\n\tICANON                        = 0x2\n\tICMP6_FILTER                  = 0x1\n\tICRNL                         = 0x100\n\tIEXTEN                        = 0x8000\n\tIFF_ADDRCONF                  = 0x80000\n\tIFF_ALLMULTI                  = 0x200\n\tIFF_ANYCAST                   = 0x400000\n\tIFF_BROADCAST                 = 0x2\n\tIFF_CANTCHANGE                = 0x7f203003b5a\n\tIFF_COS_ENABLED               = 0x200000000\n\tIFF_DEBUG                     = 0x4\n\tIFF_DEPRECATED                = 0x40000\n\tIFF_DHCPRUNNING               = 0x4000\n\tIFF_DUPLICATE                 = 0x4000000000\n\tIFF_FAILED                    = 0x10000000\n\tIFF_FIXEDMTU                  = 0x1000000000\n\tIFF_INACTIVE                  = 0x40000000\n\tIFF_INTELLIGENT               = 0x400\n\tIFF_IPMP                      = 0x8000000000\n\tIFF_IPMP_CANTCHANGE           = 0x10000000\n\tIFF_IPMP_INVALID              = 0x1ec200080\n\tIFF_IPV4                      = 0x1000000\n\tIFF_IPV6                      = 0x2000000\n\tIFF_L3PROTECT                 = 0x40000000000\n\tIFF_LOOPBACK                  = 0x8\n\tIFF_MULTICAST                 = 0x800\n\tIFF_MULTI_BCAST               = 0x1000\n\tIFF_NOACCEPT                  = 0x4000000\n\tIFF_NOARP                     = 0x80\n\tIFF_NOFAILOVER                = 0x8000000\n\tIFF_NOLINKLOCAL               = 0x20000000000\n\tIFF_NOLOCAL                   = 0x20000\n\tIFF_NONUD                     = 0x200000\n\tIFF_NORTEXCH                  = 0x800000\n\tIFF_NOTRAILERS                = 0x20\n\tIFF_NOXMIT                    = 0x10000\n\tIFF_OFFLINE                   = 0x80000000\n\tIFF_POINTOPOINT               = 0x10\n\tIFF_PREFERRED                 = 0x400000000\n\tIFF_PRIVATE                   = 0x8000\n\tIFF_PROMISC                   = 0x100\n\tIFF_ROUTER                    = 0x100000\n\tIFF_RUNNING                   = 0x40\n\tIFF_STANDBY                   = 0x20000000\n\tIFF_TEMPORARY                 = 0x800000000\n\tIFF_UNNUMBERED                = 0x2000\n\tIFF_UP                        = 0x1\n\tIFF_VIRTUAL                   = 0x2000000000\n\tIFF_VRRP                      = 0x10000000000\n\tIFF_XRESOLV                   = 0x100000000\n\tIFNAMSIZ                      = 0x10\n\tIFT_1822                      = 0x2\n\tIFT_6TO4                      = 0xca\n\tIFT_AAL5                      = 0x31\n\tIFT_ARCNET                    = 0x23\n\tIFT_ARCNETPLUS                = 0x24\n\tIFT_ATM                       = 0x25\n\tIFT_CEPT                      = 0x13\n\tIFT_DS3                       = 0x1e\n\tIFT_EON                       = 0x19\n\tIFT_ETHER                     = 0x6\n\tIFT_FDDI                      = 0xf\n\tIFT_FRELAY                    = 0x20\n\tIFT_FRELAYDCE                 = 0x2c\n\tIFT_HDH1822                   = 0x3\n\tIFT_HIPPI                     = 0x2f\n\tIFT_HSSI                      = 0x2e\n\tIFT_HY                        = 0xe\n\tIFT_IB                        = 0xc7\n\tIFT_IPV4                      = 0xc8\n\tIFT_IPV6                      = 0xc9\n\tIFT_ISDNBASIC                 = 0x14\n\tIFT_ISDNPRIMARY               = 0x15\n\tIFT_ISO88022LLC               = 0x29\n\tIFT_ISO88023                  = 0x7\n\tIFT_ISO88024                  = 0x8\n\tIFT_ISO88025                  = 0x9\n\tIFT_ISO88026                  = 0xa\n\tIFT_LAPB                      = 0x10\n\tIFT_LOCALTALK                 = 0x2a\n\tIFT_LOOP                      = 0x18\n\tIFT_MIOX25                    = 0x26\n\tIFT_MODEM                     = 0x30\n\tIFT_NSIP                      = 0x1b\n\tIFT_OTHER                     = 0x1\n\tIFT_P10                       = 0xc\n\tIFT_P80                       = 0xd\n\tIFT_PARA                      = 0x22\n\tIFT_PPP                       = 0x17\n\tIFT_PROPMUX                   = 0x36\n\tIFT_PROPVIRTUAL               = 0x35\n\tIFT_PTPSERIAL                 = 0x16\n\tIFT_RS232                     = 0x21\n\tIFT_SDLC                      = 0x11\n\tIFT_SIP                       = 0x1f\n\tIFT_SLIP                      = 0x1c\n\tIFT_SMDSDXI                   = 0x2b\n\tIFT_SMDSICIP                  = 0x34\n\tIFT_SONET                     = 0x27\n\tIFT_SONETPATH                 = 0x32\n\tIFT_SONETVT                   = 0x33\n\tIFT_STARLAN                   = 0xb\n\tIFT_T1                        = 0x12\n\tIFT_ULTRA                     = 0x1d\n\tIFT_V35                       = 0x2d\n\tIFT_X25                       = 0x5\n\tIFT_X25DDN                    = 0x4\n\tIFT_X25PLE                    = 0x28\n\tIFT_XETHER                    = 0x1a\n\tIGNBRK                        = 0x1\n\tIGNCR                         = 0x80\n\tIGNPAR                        = 0x4\n\tIMAXBEL                       = 0x2000\n\tINLCR                         = 0x40\n\tINPCK                         = 0x10\n\tIN_AUTOCONF_MASK              = 0xffff0000\n\tIN_AUTOCONF_NET               = 0xa9fe0000\n\tIN_CLASSA_HOST                = 0xffffff\n\tIN_CLASSA_MAX                 = 0x80\n\tIN_CLASSA_NET                 = 0xff000000\n\tIN_CLASSA_NSHIFT              = 0x18\n\tIN_CLASSB_HOST                = 0xffff\n\tIN_CLASSB_MAX                 = 0x10000\n\tIN_CLASSB_NET                 = 0xffff0000\n\tIN_CLASSB_NSHIFT              = 0x10\n\tIN_CLASSC_HOST                = 0xff\n\tIN_CLASSC_NET                 = 0xffffff00\n\tIN_CLASSC_NSHIFT              = 0x8\n\tIN_CLASSD_HOST                = 0xfffffff\n\tIN_CLASSD_NET                 = 0xf0000000\n\tIN_CLASSD_NSHIFT              = 0x1c\n\tIN_CLASSE_NET                 = 0xffffffff\n\tIN_LOOPBACKNET                = 0x7f\n\tIN_PRIVATE12_MASK             = 0xfff00000\n\tIN_PRIVATE12_NET              = 0xac100000\n\tIN_PRIVATE16_MASK             = 0xffff0000\n\tIN_PRIVATE16_NET              = 0xc0a80000\n\tIN_PRIVATE8_MASK              = 0xff000000\n\tIN_PRIVATE8_NET               = 0xa000000\n\tIPPROTO_AH                    = 0x33\n\tIPPROTO_DSTOPTS               = 0x3c\n\tIPPROTO_EGP                   = 0x8\n\tIPPROTO_ENCAP                 = 0x4\n\tIPPROTO_EON                   = 0x50\n\tIPPROTO_ESP                   = 0x32\n\tIPPROTO_FRAGMENT              = 0x2c\n\tIPPROTO_GGP                   = 0x3\n\tIPPROTO_HELLO                 = 0x3f\n\tIPPROTO_HOPOPTS               = 0x0\n\tIPPROTO_ICMP                  = 0x1\n\tIPPROTO_ICMPV6                = 0x3a\n\tIPPROTO_IDP                   = 0x16\n\tIPPROTO_IGMP                  = 0x2\n\tIPPROTO_IP                    = 0x0\n\tIPPROTO_IPV6                  = 0x29\n\tIPPROTO_MAX                   = 0x100\n\tIPPROTO_ND                    = 0x4d\n\tIPPROTO_NONE                  = 0x3b\n\tIPPROTO_OSPF                  = 0x59\n\tIPPROTO_PIM                   = 0x67\n\tIPPROTO_PUP                   = 0xc\n\tIPPROTO_RAW                   = 0xff\n\tIPPROTO_ROUTING               = 0x2b\n\tIPPROTO_RSVP                  = 0x2e\n\tIPPROTO_SCTP                  = 0x84\n\tIPPROTO_TCP                   = 0x6\n\tIPPROTO_UDP                   = 0x11\n\tIPV6_ADD_MEMBERSHIP           = 0x9\n\tIPV6_BOUND_IF                 = 0x41\n\tIPV6_CHECKSUM                 = 0x18\n\tIPV6_DONTFRAG                 = 0x21\n\tIPV6_DROP_MEMBERSHIP          = 0xa\n\tIPV6_DSTOPTS                  = 0xf\n\tIPV6_FLOWINFO_FLOWLABEL       = 0xffff0f00\n\tIPV6_FLOWINFO_TCLASS          = 0xf00f\n\tIPV6_HOPLIMIT                 = 0xc\n\tIPV6_HOPOPTS                  = 0xe\n\tIPV6_JOIN_GROUP               = 0x9\n\tIPV6_LEAVE_GROUP              = 0xa\n\tIPV6_MULTICAST_HOPS           = 0x7\n\tIPV6_MULTICAST_IF             = 0x6\n\tIPV6_MULTICAST_LOOP           = 0x8\n\tIPV6_NEXTHOP                  = 0xd\n\tIPV6_PAD1_OPT                 = 0x0\n\tIPV6_PATHMTU                  = 0x25\n\tIPV6_PKTINFO                  = 0xb\n\tIPV6_PREFER_SRC_CGA           = 0x20\n\tIPV6_PREFER_SRC_CGADEFAULT    = 0x10\n\tIPV6_PREFER_SRC_CGAMASK       = 0x30\n\tIPV6_PREFER_SRC_COA           = 0x2\n\tIPV6_PREFER_SRC_DEFAULT       = 0x15\n\tIPV6_PREFER_SRC_HOME          = 0x1\n\tIPV6_PREFER_SRC_MASK          = 0x3f\n\tIPV6_PREFER_SRC_MIPDEFAULT    = 0x1\n\tIPV6_PREFER_SRC_MIPMASK       = 0x3\n\tIPV6_PREFER_SRC_NONCGA        = 0x10\n\tIPV6_PREFER_SRC_PUBLIC        = 0x4\n\tIPV6_PREFER_SRC_TMP           = 0x8\n\tIPV6_PREFER_SRC_TMPDEFAULT    = 0x4\n\tIPV6_PREFER_SRC_TMPMASK       = 0xc\n\tIPV6_RECVDSTOPTS              = 0x28\n\tIPV6_RECVHOPLIMIT             = 0x13\n\tIPV6_RECVHOPOPTS              = 0x14\n\tIPV6_RECVPATHMTU              = 0x24\n\tIPV6_RECVPKTINFO              = 0x12\n\tIPV6_RECVRTHDR                = 0x16\n\tIPV6_RECVRTHDRDSTOPTS         = 0x17\n\tIPV6_RECVTCLASS               = 0x19\n\tIPV6_RTHDR                    = 0x10\n\tIPV6_RTHDRDSTOPTS             = 0x11\n\tIPV6_RTHDR_TYPE_0             = 0x0\n\tIPV6_SEC_OPT                  = 0x22\n\tIPV6_SRC_PREFERENCES          = 0x23\n\tIPV6_TCLASS                   = 0x26\n\tIPV6_UNICAST_HOPS             = 0x5\n\tIPV6_UNSPEC_SRC               = 0x42\n\tIPV6_USE_MIN_MTU              = 0x20\n\tIPV6_V6ONLY                   = 0x27\n\tIP_ADD_MEMBERSHIP             = 0x13\n\tIP_ADD_SOURCE_MEMBERSHIP      = 0x17\n\tIP_BLOCK_SOURCE               = 0x15\n\tIP_BOUND_IF                   = 0x41\n\tIP_BROADCAST                  = 0x106\n\tIP_BROADCAST_TTL              = 0x43\n\tIP_DEFAULT_MULTICAST_LOOP     = 0x1\n\tIP_DEFAULT_MULTICAST_TTL      = 0x1\n\tIP_DF                         = 0x4000\n\tIP_DHCPINIT_IF                = 0x45\n\tIP_DONTFRAG                   = 0x1b\n\tIP_DONTROUTE                  = 0x105\n\tIP_DROP_MEMBERSHIP            = 0x14\n\tIP_DROP_SOURCE_MEMBERSHIP     = 0x18\n\tIP_HDRINCL                    = 0x2\n\tIP_MAXPACKET                  = 0xffff\n\tIP_MF                         = 0x2000\n\tIP_MSS                        = 0x240\n\tIP_MULTICAST_IF               = 0x10\n\tIP_MULTICAST_LOOP             = 0x12\n\tIP_MULTICAST_TTL              = 0x11\n\tIP_NEXTHOP                    = 0x19\n\tIP_OPTIONS                    = 0x1\n\tIP_PKTINFO                    = 0x1a\n\tIP_RECVDSTADDR                = 0x7\n\tIP_RECVIF                     = 0x9\n\tIP_RECVOPTS                   = 0x5\n\tIP_RECVPKTINFO                = 0x1a\n\tIP_RECVRETOPTS                = 0x6\n\tIP_RECVSLLA                   = 0xa\n\tIP_RECVTOS                    = 0xc\n\tIP_RECVTTL                    = 0xb\n\tIP_RETOPTS                    = 0x8\n\tIP_REUSEADDR                  = 0x104\n\tIP_SEC_OPT                    = 0x22\n\tIP_TOS                        = 0x3\n\tIP_TTL                        = 0x4\n\tIP_UNBLOCK_SOURCE             = 0x16\n\tIP_UNSPEC_SRC                 = 0x42\n\tISIG                          = 0x1\n\tISTRIP                        = 0x20\n\tIUCLC                         = 0x200\n\tIXANY                         = 0x800\n\tIXOFF                         = 0x1000\n\tIXON                          = 0x400\n\tLOCK_EX                       = 0x2\n\tLOCK_NB                       = 0x4\n\tLOCK_SH                       = 0x1\n\tLOCK_UN                       = 0x8\n\tMADV_ACCESS_DEFAULT           = 0x6\n\tMADV_ACCESS_LWP               = 0x7\n\tMADV_ACCESS_MANY              = 0x8\n\tMADV_DONTNEED                 = 0x4\n\tMADV_FREE                     = 0x5\n\tMADV_NORMAL                   = 0x0\n\tMADV_PURGE                    = 0x9\n\tMADV_RANDOM                   = 0x1\n\tMADV_SEQUENTIAL               = 0x2\n\tMADV_WILLNEED                 = 0x3\n\tMAP_32BIT                     = 0x80\n\tMAP_ALIGN                     = 0x200\n\tMAP_ANON                      = 0x100\n\tMAP_ANONYMOUS                 = 0x100\n\tMAP_FILE                      = 0x0\n\tMAP_FIXED                     = 0x10\n\tMAP_INITDATA                  = 0x800\n\tMAP_NORESERVE                 = 0x40\n\tMAP_PRIVATE                   = 0x2\n\tMAP_RENAME                    = 0x20\n\tMAP_SHARED                    = 0x1\n\tMAP_TEXT                      = 0x400\n\tMAP_TYPE                      = 0xf\n\tMCAST_BLOCK_SOURCE            = 0x2b\n\tMCAST_EXCLUDE                 = 0x2\n\tMCAST_INCLUDE                 = 0x1\n\tMCAST_JOIN_GROUP              = 0x29\n\tMCAST_JOIN_SOURCE_GROUP       = 0x2d\n\tMCAST_LEAVE_GROUP             = 0x2a\n\tMCAST_LEAVE_SOURCE_GROUP      = 0x2e\n\tMCAST_UNBLOCK_SOURCE          = 0x2c\n\tMCL_CURRENT                   = 0x1\n\tMCL_FUTURE                    = 0x2\n\tMSG_CTRUNC                    = 0x10\n\tMSG_DONTROUTE                 = 0x4\n\tMSG_DONTWAIT                  = 0x80\n\tMSG_DUPCTRL                   = 0x800\n\tMSG_EOR                       = 0x8\n\tMSG_MAXIOVLEN                 = 0x10\n\tMSG_NOSIGNAL                  = 0x200\n\tMSG_NOTIFICATION              = 0x100\n\tMSG_OOB                       = 0x1\n\tMSG_PEEK                      = 0x2\n\tMSG_TRUNC                     = 0x20\n\tMSG_WAITALL                   = 0x40\n\tMSG_XPG4_2                    = 0x8000\n\tMS_ASYNC                      = 0x1\n\tMS_INVALIDATE                 = 0x2\n\tMS_OLDSYNC                    = 0x0\n\tMS_SYNC                       = 0x4\n\tM_FLUSH                       = 0x86\n\tNAME_MAX                      = 0xff\n\tNEWDEV                        = 0x1\n\tNFDBITS                       = 0x40\n\tNL0                           = 0x0\n\tNL1                           = 0x100\n\tNLDLY                         = 0x100\n\tNOFLSH                        = 0x80\n\tOCRNL                         = 0x8\n\tOFDEL                         = 0x80\n\tOFILL                         = 0x40\n\tOLCUC                         = 0x2\n\tOLDDEV                        = 0x0\n\tONBITSMAJOR                   = 0x7\n\tONBITSMINOR                   = 0x8\n\tONLCR                         = 0x4\n\tONLRET                        = 0x20\n\tONOCR                         = 0x10\n\tOPENFAIL                      = -0x1\n\tOPOST                         = 0x1\n\tO_ACCMODE                     = 0x600003\n\tO_APPEND                      = 0x8\n\tO_CLOEXEC                     = 0x800000\n\tO_CREAT                       = 0x100\n\tO_DIRECT                      = 0x2000000\n\tO_DIRECTORY                   = 0x1000000\n\tO_DSYNC                       = 0x40\n\tO_EXCL                        = 0x400\n\tO_EXEC                        = 0x400000\n\tO_LARGEFILE                   = 0x2000\n\tO_NDELAY                      = 0x4\n\tO_NOCTTY                      = 0x800\n\tO_NOFOLLOW                    = 0x20000\n\tO_NOLINKS                     = 0x40000\n\tO_NONBLOCK                    = 0x80\n\tO_RDONLY                      = 0x0\n\tO_RDWR                        = 0x2\n\tO_RSYNC                       = 0x8000\n\tO_SEARCH                      = 0x200000\n\tO_SIOCGIFCONF                 = -0x3ff796ec\n\tO_SIOCGLIFCONF                = -0x3fef9688\n\tO_SYNC                        = 0x10\n\tO_TRUNC                       = 0x200\n\tO_WRONLY                      = 0x1\n\tO_XATTR                       = 0x4000\n\tPARENB                        = 0x100\n\tPAREXT                        = 0x100000\n\tPARMRK                        = 0x8\n\tPARODD                        = 0x200\n\tPENDIN                        = 0x4000\n\tPRIO_PGRP                     = 0x1\n\tPRIO_PROCESS                  = 0x0\n\tPRIO_USER                     = 0x2\n\tPROT_EXEC                     = 0x4\n\tPROT_NONE                     = 0x0\n\tPROT_READ                     = 0x1\n\tPROT_WRITE                    = 0x2\n\tRLIMIT_AS                     = 0x6\n\tRLIMIT_CORE                   = 0x4\n\tRLIMIT_CPU                    = 0x0\n\tRLIMIT_DATA                   = 0x2\n\tRLIMIT_FSIZE                  = 0x1\n\tRLIMIT_NOFILE                 = 0x5\n\tRLIMIT_STACK                  = 0x3\n\tRLIM_INFINITY                 = 0xfffffffffffffffd\n\tRTAX_AUTHOR                   = 0x6\n\tRTAX_BRD                      = 0x7\n\tRTAX_DST                      = 0x0\n\tRTAX_GATEWAY                  = 0x1\n\tRTAX_GENMASK                  = 0x3\n\tRTAX_IFA                      = 0x5\n\tRTAX_IFP                      = 0x4\n\tRTAX_MAX                      = 0x9\n\tRTAX_NETMASK                  = 0x2\n\tRTAX_SRC                      = 0x8\n\tRTA_AUTHOR                    = 0x40\n\tRTA_BRD                       = 0x80\n\tRTA_DST                       = 0x1\n\tRTA_GATEWAY                   = 0x2\n\tRTA_GENMASK                   = 0x8\n\tRTA_IFA                       = 0x20\n\tRTA_IFP                       = 0x10\n\tRTA_NETMASK                   = 0x4\n\tRTA_NUMBITS                   = 0x9\n\tRTA_SRC                       = 0x100\n\tRTF_BLACKHOLE                 = 0x1000\n\tRTF_CLONING                   = 0x100\n\tRTF_DONE                      = 0x40\n\tRTF_DYNAMIC                   = 0x10\n\tRTF_GATEWAY                   = 0x2\n\tRTF_HOST                      = 0x4\n\tRTF_INDIRECT                  = 0x40000\n\tRTF_KERNEL                    = 0x80000\n\tRTF_LLINFO                    = 0x400\n\tRTF_MASK                      = 0x80\n\tRTF_MODIFIED                  = 0x20\n\tRTF_MULTIRT                   = 0x10000\n\tRTF_PRIVATE                   = 0x2000\n\tRTF_PROTO1                    = 0x8000\n\tRTF_PROTO2                    = 0x4000\n\tRTF_REJECT                    = 0x8\n\tRTF_SETSRC                    = 0x20000\n\tRTF_STATIC                    = 0x800\n\tRTF_UP                        = 0x1\n\tRTF_XRESOLVE                  = 0x200\n\tRTF_ZONE                      = 0x100000\n\tRTM_ADD                       = 0x1\n\tRTM_CHANGE                    = 0x3\n\tRTM_CHGADDR                   = 0xf\n\tRTM_DELADDR                   = 0xd\n\tRTM_DELETE                    = 0x2\n\tRTM_FREEADDR                  = 0x10\n\tRTM_GET                       = 0x4\n\tRTM_IFINFO                    = 0xe\n\tRTM_LOCK                      = 0x8\n\tRTM_LOSING                    = 0x5\n\tRTM_MISS                      = 0x7\n\tRTM_NEWADDR                   = 0xc\n\tRTM_OLDADD                    = 0x9\n\tRTM_OLDDEL                    = 0xa\n\tRTM_REDIRECT                  = 0x6\n\tRTM_RESOLVE                   = 0xb\n\tRTM_VERSION                   = 0x3\n\tRTV_EXPIRE                    = 0x4\n\tRTV_HOPCOUNT                  = 0x2\n\tRTV_MTU                       = 0x1\n\tRTV_RPIPE                     = 0x8\n\tRTV_RTT                       = 0x40\n\tRTV_RTTVAR                    = 0x80\n\tRTV_SPIPE                     = 0x10\n\tRTV_SSTHRESH                  = 0x20\n\tRT_AWARE                      = 0x1\n\tRUSAGE_CHILDREN               = -0x1\n\tRUSAGE_SELF                   = 0x0\n\tSCM_RIGHTS                    = 0x1010\n\tSCM_TIMESTAMP                 = 0x1013\n\tSCM_UCRED                     = 0x1012\n\tSHUT_RD                       = 0x0\n\tSHUT_RDWR                     = 0x2\n\tSHUT_WR                       = 0x1\n\tSIG2STR_MAX                   = 0x20\n\tSIOCADDMULTI                  = -0x7fdf96cf\n\tSIOCADDRT                     = -0x7fcf8df6\n\tSIOCATMARK                    = 0x40047307\n\tSIOCDARP                      = -0x7fdb96e0\n\tSIOCDELMULTI                  = -0x7fdf96ce\n\tSIOCDELRT                     = -0x7fcf8df5\n\tSIOCDXARP                     = -0x7fff9658\n\tSIOCGARP                      = -0x3fdb96e1\n\tSIOCGDSTINFO                  = -0x3fff965c\n\tSIOCGENADDR                   = -0x3fdf96ab\n\tSIOCGENPSTATS                 = -0x3fdf96c7\n\tSIOCGETLSGCNT                 = -0x3fef8deb\n\tSIOCGETNAME                   = 0x40107334\n\tSIOCGETPEER                   = 0x40107335\n\tSIOCGETPROP                   = -0x3fff8f44\n\tSIOCGETSGCNT                  = -0x3feb8deb\n\tSIOCGETSYNC                   = -0x3fdf96d3\n\tSIOCGETVIFCNT                 = -0x3feb8dec\n\tSIOCGHIWAT                    = 0x40047301\n\tSIOCGIFADDR                   = -0x3fdf96f3\n\tSIOCGIFBRDADDR                = -0x3fdf96e9\n\tSIOCGIFCONF                   = -0x3ff796a4\n\tSIOCGIFDSTADDR                = -0x3fdf96f1\n\tSIOCGIFFLAGS                  = -0x3fdf96ef\n\tSIOCGIFHWADDR                 = -0x3fdf9647\n\tSIOCGIFINDEX                  = -0x3fdf96a6\n\tSIOCGIFMEM                    = -0x3fdf96ed\n\tSIOCGIFMETRIC                 = -0x3fdf96e5\n\tSIOCGIFMTU                    = -0x3fdf96ea\n\tSIOCGIFMUXID                  = -0x3fdf96a8\n\tSIOCGIFNETMASK                = -0x3fdf96e7\n\tSIOCGIFNUM                    = 0x40046957\n\tSIOCGIP6ADDRPOLICY            = -0x3fff965e\n\tSIOCGIPMSFILTER               = -0x3ffb964c\n\tSIOCGLIFADDR                  = -0x3f87968f\n\tSIOCGLIFBINDING               = -0x3f879666\n\tSIOCGLIFBRDADDR               = -0x3f879685\n\tSIOCGLIFCONF                  = -0x3fef965b\n\tSIOCGLIFDADSTATE              = -0x3f879642\n\tSIOCGLIFDSTADDR               = -0x3f87968d\n\tSIOCGLIFFLAGS                 = -0x3f87968b\n\tSIOCGLIFGROUPINFO             = -0x3f4b9663\n\tSIOCGLIFGROUPNAME             = -0x3f879664\n\tSIOCGLIFHWADDR                = -0x3f879640\n\tSIOCGLIFINDEX                 = -0x3f87967b\n\tSIOCGLIFLNKINFO               = -0x3f879674\n\tSIOCGLIFMETRIC                = -0x3f879681\n\tSIOCGLIFMTU                   = -0x3f879686\n\tSIOCGLIFMUXID                 = -0x3f87967d\n\tSIOCGLIFNETMASK               = -0x3f879683\n\tSIOCGLIFNUM                   = -0x3ff3967e\n\tSIOCGLIFSRCOF                 = -0x3fef964f\n\tSIOCGLIFSUBNET                = -0x3f879676\n\tSIOCGLIFTOKEN                 = -0x3f879678\n\tSIOCGLIFUSESRC                = -0x3f879651\n\tSIOCGLIFZONE                  = -0x3f879656\n\tSIOCGLOWAT                    = 0x40047303\n\tSIOCGMSFILTER                 = -0x3ffb964e\n\tSIOCGPGRP                     = 0x40047309\n\tSIOCGSTAMP                    = -0x3fef9646\n\tSIOCGXARP                     = -0x3fff9659\n\tSIOCIFDETACH                  = -0x7fdf96c8\n\tSIOCILB                       = -0x3ffb9645\n\tSIOCLIFADDIF                  = -0x3f879691\n\tSIOCLIFDELND                  = -0x7f879673\n\tSIOCLIFGETND                  = -0x3f879672\n\tSIOCLIFREMOVEIF               = -0x7f879692\n\tSIOCLIFSETND                  = -0x7f879671\n\tSIOCLOWER                     = -0x7fdf96d7\n\tSIOCSARP                      = -0x7fdb96e2\n\tSIOCSCTPGOPT                  = -0x3fef9653\n\tSIOCSCTPPEELOFF               = -0x3ffb9652\n\tSIOCSCTPSOPT                  = -0x7fef9654\n\tSIOCSENABLESDP                = -0x3ffb9649\n\tSIOCSETPROP                   = -0x7ffb8f43\n\tSIOCSETSYNC                   = -0x7fdf96d4\n\tSIOCSHIWAT                    = -0x7ffb8d00\n\tSIOCSIFADDR                   = -0x7fdf96f4\n\tSIOCSIFBRDADDR                = -0x7fdf96e8\n\tSIOCSIFDSTADDR                = -0x7fdf96f2\n\tSIOCSIFFLAGS                  = -0x7fdf96f0\n\tSIOCSIFINDEX                  = -0x7fdf96a5\n\tSIOCSIFMEM                    = -0x7fdf96ee\n\tSIOCSIFMETRIC                 = -0x7fdf96e4\n\tSIOCSIFMTU                    = -0x7fdf96eb\n\tSIOCSIFMUXID                  = -0x7fdf96a7\n\tSIOCSIFNAME                   = -0x7fdf96b7\n\tSIOCSIFNETMASK                = -0x7fdf96e6\n\tSIOCSIP6ADDRPOLICY            = -0x7fff965d\n\tSIOCSIPMSFILTER               = -0x7ffb964b\n\tSIOCSLGETREQ                  = -0x3fdf96b9\n\tSIOCSLIFADDR                  = -0x7f879690\n\tSIOCSLIFBRDADDR               = -0x7f879684\n\tSIOCSLIFDSTADDR               = -0x7f87968e\n\tSIOCSLIFFLAGS                 = -0x7f87968c\n\tSIOCSLIFGROUPNAME             = -0x7f879665\n\tSIOCSLIFINDEX                 = -0x7f87967a\n\tSIOCSLIFLNKINFO               = -0x7f879675\n\tSIOCSLIFMETRIC                = -0x7f879680\n\tSIOCSLIFMTU                   = -0x7f879687\n\tSIOCSLIFMUXID                 = -0x7f87967c\n\tSIOCSLIFNAME                  = -0x3f87967f\n\tSIOCSLIFNETMASK               = -0x7f879682\n\tSIOCSLIFPREFIX                = -0x3f879641\n\tSIOCSLIFSUBNET                = -0x7f879677\n\tSIOCSLIFTOKEN                 = -0x7f879679\n\tSIOCSLIFUSESRC                = -0x7f879650\n\tSIOCSLIFZONE                  = -0x7f879655\n\tSIOCSLOWAT                    = -0x7ffb8cfe\n\tSIOCSLSTAT                    = -0x7fdf96b8\n\tSIOCSMSFILTER                 = -0x7ffb964d\n\tSIOCSPGRP                     = -0x7ffb8cf8\n\tSIOCSPROMISC                  = -0x7ffb96d0\n\tSIOCSQPTR                     = -0x3ffb9648\n\tSIOCSSDSTATS                  = -0x3fdf96d2\n\tSIOCSSESTATS                  = -0x3fdf96d1\n\tSIOCSXARP                     = -0x7fff965a\n\tSIOCTMYADDR                   = -0x3ff79670\n\tSIOCTMYSITE                   = -0x3ff7966e\n\tSIOCTONLINK                   = -0x3ff7966f\n\tSIOCUPPER                     = -0x7fdf96d8\n\tSIOCX25RCV                    = -0x3fdf96c4\n\tSIOCX25TBL                    = -0x3fdf96c3\n\tSIOCX25XMT                    = -0x3fdf96c5\n\tSIOCXPROTO                    = 0x20007337\n\tSOCK_CLOEXEC                  = 0x80000\n\tSOCK_DGRAM                    = 0x1\n\tSOCK_NDELAY                   = 0x200000\n\tSOCK_NONBLOCK                 = 0x100000\n\tSOCK_RAW                      = 0x4\n\tSOCK_RDM                      = 0x5\n\tSOCK_SEQPACKET                = 0x6\n\tSOCK_STREAM                   = 0x2\n\tSOCK_TYPE_MASK                = 0xffff\n\tSOL_FILTER                    = 0xfffc\n\tSOL_PACKET                    = 0xfffd\n\tSOL_ROUTE                     = 0xfffe\n\tSOL_SOCKET                    = 0xffff\n\tSOMAXCONN                     = 0x80\n\tSO_ACCEPTCONN                 = 0x2\n\tSO_ALL                        = 0x3f\n\tSO_ALLZONES                   = 0x1014\n\tSO_ANON_MLP                   = 0x100a\n\tSO_ATTACH_FILTER              = 0x40000001\n\tSO_BAND                       = 0x4000\n\tSO_BROADCAST                  = 0x20\n\tSO_COPYOPT                    = 0x80000\n\tSO_DEBUG                      = 0x1\n\tSO_DELIM                      = 0x8000\n\tSO_DETACH_FILTER              = 0x40000002\n\tSO_DGRAM_ERRIND               = 0x200\n\tSO_DOMAIN                     = 0x100c\n\tSO_DONTLINGER                 = -0x81\n\tSO_DONTROUTE                  = 0x10\n\tSO_ERROPT                     = 0x40000\n\tSO_ERROR                      = 0x1007\n\tSO_EXCLBIND                   = 0x1015\n\tSO_HIWAT                      = 0x10\n\tSO_ISNTTY                     = 0x800\n\tSO_ISTTY                      = 0x400\n\tSO_KEEPALIVE                  = 0x8\n\tSO_LINGER                     = 0x80\n\tSO_LOWAT                      = 0x20\n\tSO_MAC_EXEMPT                 = 0x100b\n\tSO_MAC_IMPLICIT               = 0x1016\n\tSO_MAXBLK                     = 0x100000\n\tSO_MAXPSZ                     = 0x8\n\tSO_MINPSZ                     = 0x4\n\tSO_MREADOFF                   = 0x80\n\tSO_MREADON                    = 0x40\n\tSO_NDELOFF                    = 0x200\n\tSO_NDELON                     = 0x100\n\tSO_NODELIM                    = 0x10000\n\tSO_OOBINLINE                  = 0x100\n\tSO_PROTOTYPE                  = 0x1009\n\tSO_RCVBUF                     = 0x1002\n\tSO_RCVLOWAT                   = 0x1004\n\tSO_RCVPSH                     = 0x100d\n\tSO_RCVTIMEO                   = 0x1006\n\tSO_READOPT                    = 0x1\n\tSO_RECVUCRED                  = 0x400\n\tSO_REUSEADDR                  = 0x4\n\tSO_SECATTR                    = 0x1011\n\tSO_SNDBUF                     = 0x1001\n\tSO_SNDLOWAT                   = 0x1003\n\tSO_SNDTIMEO                   = 0x1005\n\tSO_STRHOLD                    = 0x20000\n\tSO_TAIL                       = 0x200000\n\tSO_TIMESTAMP                  = 0x1013\n\tSO_TONSTOP                    = 0x2000\n\tSO_TOSTOP                     = 0x1000\n\tSO_TYPE                       = 0x1008\n\tSO_USELOOPBACK                = 0x40\n\tSO_VRRP                       = 0x1017\n\tSO_WROFF                      = 0x2\n\tS_ENFMT                       = 0x400\n\tS_IAMB                        = 0x1ff\n\tS_IEXEC                       = 0x40\n\tS_IFBLK                       = 0x6000\n\tS_IFCHR                       = 0x2000\n\tS_IFDIR                       = 0x4000\n\tS_IFDOOR                      = 0xd000\n\tS_IFIFO                       = 0x1000\n\tS_IFLNK                       = 0xa000\n\tS_IFMT                        = 0xf000\n\tS_IFNAM                       = 0x5000\n\tS_IFPORT                      = 0xe000\n\tS_IFREG                       = 0x8000\n\tS_IFSOCK                      = 0xc000\n\tS_INSEM                       = 0x1\n\tS_INSHD                       = 0x2\n\tS_IREAD                       = 0x100\n\tS_IRGRP                       = 0x20\n\tS_IROTH                       = 0x4\n\tS_IRUSR                       = 0x100\n\tS_IRWXG                       = 0x38\n\tS_IRWXO                       = 0x7\n\tS_IRWXU                       = 0x1c0\n\tS_ISGID                       = 0x400\n\tS_ISUID                       = 0x800\n\tS_ISVTX                       = 0x200\n\tS_IWGRP                       = 0x10\n\tS_IWOTH                       = 0x2\n\tS_IWRITE                      = 0x80\n\tS_IWUSR                       = 0x80\n\tS_IXGRP                       = 0x8\n\tS_IXOTH                       = 0x1\n\tS_IXUSR                       = 0x40\n\tTAB0                          = 0x0\n\tTAB1                          = 0x800\n\tTAB2                          = 0x1000\n\tTAB3                          = 0x1800\n\tTABDLY                        = 0x1800\n\tTCFLSH                        = 0x5407\n\tTCGETA                        = 0x5401\n\tTCGETS                        = 0x540d\n\tTCIFLUSH                      = 0x0\n\tTCIOFF                        = 0x2\n\tTCIOFLUSH                     = 0x2\n\tTCION                         = 0x3\n\tTCOFLUSH                      = 0x1\n\tTCOOFF                        = 0x0\n\tTCOON                         = 0x1\n\tTCP_ABORT_THRESHOLD           = 0x11\n\tTCP_ANONPRIVBIND              = 0x20\n\tTCP_CONGESTION                = 0x25\n\tTCP_CONN_ABORT_THRESHOLD      = 0x13\n\tTCP_CONN_NOTIFY_THRESHOLD     = 0x12\n\tTCP_CORK                      = 0x18\n\tTCP_EXCLBIND                  = 0x21\n\tTCP_INIT_CWND                 = 0x15\n\tTCP_KEEPALIVE                 = 0x8\n\tTCP_KEEPALIVE_ABORT_THRESHOLD = 0x17\n\tTCP_KEEPALIVE_THRESHOLD       = 0x16\n\tTCP_KEEPCNT                   = 0x23\n\tTCP_KEEPIDLE                  = 0x22\n\tTCP_KEEPINTVL                 = 0x24\n\tTCP_LINGER2                   = 0x1c\n\tTCP_MAXSEG                    = 0x2\n\tTCP_MSS                       = 0x218\n\tTCP_NODELAY                   = 0x1\n\tTCP_NOTIFY_THRESHOLD          = 0x10\n\tTCP_RECVDSTADDR               = 0x14\n\tTCP_RTO_INITIAL               = 0x19\n\tTCP_RTO_MAX                   = 0x1b\n\tTCP_RTO_MIN                   = 0x1a\n\tTCSAFLUSH                     = 0x5410\n\tTCSBRK                        = 0x5405\n\tTCSETA                        = 0x5402\n\tTCSETAF                       = 0x5404\n\tTCSETAW                       = 0x5403\n\tTCSETS                        = 0x540e\n\tTCSETSF                       = 0x5410\n\tTCSETSW                       = 0x540f\n\tTCXONC                        = 0x5406\n\tTIMER_ABSTIME                 = 0x1\n\tTIMER_RELTIME                 = 0x0\n\tTIOC                          = 0x5400\n\tTIOCCBRK                      = 0x747a\n\tTIOCCDTR                      = 0x7478\n\tTIOCCILOOP                    = 0x746c\n\tTIOCEXCL                      = 0x740d\n\tTIOCFLUSH                     = 0x7410\n\tTIOCGETC                      = 0x7412\n\tTIOCGETD                      = 0x7400\n\tTIOCGETP                      = 0x7408\n\tTIOCGLTC                      = 0x7474\n\tTIOCGPGRP                     = 0x7414\n\tTIOCGPPS                      = 0x547d\n\tTIOCGPPSEV                    = 0x547f\n\tTIOCGSID                      = 0x7416\n\tTIOCGSOFTCAR                  = 0x5469\n\tTIOCGWINSZ                    = 0x5468\n\tTIOCHPCL                      = 0x7402\n\tTIOCKBOF                      = 0x5409\n\tTIOCKBON                      = 0x5408\n\tTIOCLBIC                      = 0x747e\n\tTIOCLBIS                      = 0x747f\n\tTIOCLGET                      = 0x747c\n\tTIOCLSET                      = 0x747d\n\tTIOCMBIC                      = 0x741c\n\tTIOCMBIS                      = 0x741b\n\tTIOCMGET                      = 0x741d\n\tTIOCMSET                      = 0x741a\n\tTIOCM_CAR                     = 0x40\n\tTIOCM_CD                      = 0x40\n\tTIOCM_CTS                     = 0x20\n\tTIOCM_DSR                     = 0x100\n\tTIOCM_DTR                     = 0x2\n\tTIOCM_LE                      = 0x1\n\tTIOCM_RI                      = 0x80\n\tTIOCM_RNG                     = 0x80\n\tTIOCM_RTS                     = 0x4\n\tTIOCM_SR                      = 0x10\n\tTIOCM_ST                      = 0x8\n\tTIOCNOTTY                     = 0x7471\n\tTIOCNXCL                      = 0x740e\n\tTIOCOUTQ                      = 0x7473\n\tTIOCREMOTE                    = 0x741e\n\tTIOCSBRK                      = 0x747b\n\tTIOCSCTTY                     = 0x7484\n\tTIOCSDTR                      = 0x7479\n\tTIOCSETC                      = 0x7411\n\tTIOCSETD                      = 0x7401\n\tTIOCSETN                      = 0x740a\n\tTIOCSETP                      = 0x7409\n\tTIOCSIGNAL                    = 0x741f\n\tTIOCSILOOP                    = 0x746d\n\tTIOCSLTC                      = 0x7475\n\tTIOCSPGRP                     = 0x7415\n\tTIOCSPPS                      = 0x547e\n\tTIOCSSOFTCAR                  = 0x546a\n\tTIOCSTART                     = 0x746e\n\tTIOCSTI                       = 0x7417\n\tTIOCSTOP                      = 0x746f\n\tTIOCSWINSZ                    = 0x5467\n\tTOSTOP                        = 0x100\n\tUTIME_NOW                     = -0x1\n\tUTIME_OMIT                    = -0x2\n\tVCEOF                         = 0x8\n\tVCEOL                         = 0x9\n\tVDISCARD                      = 0xd\n\tVDSUSP                        = 0xb\n\tVEOF                          = 0x4\n\tVEOL                          = 0x5\n\tVEOL2                         = 0x6\n\tVERASE                        = 0x2\n\tVERASE2                       = 0x11\n\tVINTR                         = 0x0\n\tVKILL                         = 0x3\n\tVLNEXT                        = 0xf\n\tVMIN                          = 0x4\n\tVQUIT                         = 0x1\n\tVREPRINT                      = 0xc\n\tVSTART                        = 0x8\n\tVSTATUS                       = 0x10\n\tVSTOP                         = 0x9\n\tVSUSP                         = 0xa\n\tVSWTCH                        = 0x7\n\tVT0                           = 0x0\n\tVT1                           = 0x4000\n\tVTDLY                         = 0x4000\n\tVTIME                         = 0x5\n\tVWERASE                       = 0xe\n\tWCONTFLG                      = 0xffff\n\tWCONTINUED                    = 0x8\n\tWCOREFLG                      = 0x80\n\tWEXITED                       = 0x1\n\tWNOHANG                       = 0x40\n\tWNOWAIT                       = 0x80\n\tWOPTMASK                      = 0xcf\n\tWRAP                          = 0x20000\n\tWSIGMASK                      = 0x7f\n\tWSTOPFLG                      = 0x7f\n\tWSTOPPED                      = 0x4\n\tWTRAPPED                      = 0x2\n\tWUNTRACED                     = 0x4\n\tXCASE                         = 0x4\n\tXTABS                         = 0x1800\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x7d)\n\tEADDRNOTAVAIL   = syscall.Errno(0x7e)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x7c)\n\tEAGAIN          = syscall.Errno(0xb)\n\tEALREADY        = syscall.Errno(0x95)\n\tEBADE           = syscall.Errno(0x32)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADFD          = syscall.Errno(0x51)\n\tEBADMSG         = syscall.Errno(0x4d)\n\tEBADR           = syscall.Errno(0x33)\n\tEBADRQC         = syscall.Errno(0x36)\n\tEBADSLT         = syscall.Errno(0x37)\n\tEBFONT          = syscall.Errno(0x39)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x2f)\n\tECHILD          = syscall.Errno(0xa)\n\tECHRNG          = syscall.Errno(0x25)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x82)\n\tECONNREFUSED    = syscall.Errno(0x92)\n\tECONNRESET      = syscall.Errno(0x83)\n\tEDEADLK         = syscall.Errno(0x2d)\n\tEDEADLOCK       = syscall.Errno(0x38)\n\tEDESTADDRREQ    = syscall.Errno(0x60)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x31)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEHOSTDOWN       = syscall.Errno(0x93)\n\tEHOSTUNREACH    = syscall.Errno(0x94)\n\tEIDRM           = syscall.Errno(0x24)\n\tEILSEQ          = syscall.Errno(0x58)\n\tEINPROGRESS     = syscall.Errno(0x96)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x85)\n\tEISDIR          = syscall.Errno(0x15)\n\tEL2HLT          = syscall.Errno(0x2c)\n\tEL2NSYNC        = syscall.Errno(0x26)\n\tEL3HLT          = syscall.Errno(0x27)\n\tEL3RST          = syscall.Errno(0x28)\n\tELIBACC         = syscall.Errno(0x53)\n\tELIBBAD         = syscall.Errno(0x54)\n\tELIBEXEC        = syscall.Errno(0x57)\n\tELIBMAX         = syscall.Errno(0x56)\n\tELIBSCN         = syscall.Errno(0x55)\n\tELNRNG          = syscall.Errno(0x29)\n\tELOCKUNMAPPED   = syscall.Errno(0x48)\n\tELOOP           = syscall.Errno(0x5a)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x61)\n\tEMULTIHOP       = syscall.Errno(0x4a)\n\tENAMETOOLONG    = syscall.Errno(0x4e)\n\tENETDOWN        = syscall.Errno(0x7f)\n\tENETRESET       = syscall.Errno(0x81)\n\tENETUNREACH     = syscall.Errno(0x80)\n\tENFILE          = syscall.Errno(0x17)\n\tENOANO          = syscall.Errno(0x35)\n\tENOBUFS         = syscall.Errno(0x84)\n\tENOCSI          = syscall.Errno(0x2b)\n\tENODATA         = syscall.Errno(0x3d)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x2e)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x23)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x63)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x59)\n\tENOTACTIVE      = syscall.Errno(0x49)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x86)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x5d)\n\tENOTRECOVERABLE = syscall.Errno(0x3b)\n\tENOTSOCK        = syscall.Errno(0x5f)\n\tENOTSUP         = syscall.Errno(0x30)\n\tENOTTY          = syscall.Errno(0x19)\n\tENOTUNIQ        = syscall.Errno(0x50)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x7a)\n\tEOVERFLOW       = syscall.Errno(0x4f)\n\tEOWNERDEAD      = syscall.Errno(0x3a)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x7b)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x78)\n\tEPROTOTYPE      = syscall.Errno(0x62)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMCHG         = syscall.Errno(0x52)\n\tEREMOTE         = syscall.Errno(0x42)\n\tERESTART        = syscall.Errno(0x5b)\n\tEROFS           = syscall.Errno(0x1e)\n\tESHUTDOWN       = syscall.Errno(0x8f)\n\tESOCKTNOSUPPORT = syscall.Errno(0x79)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x97)\n\tESTRPIPE        = syscall.Errno(0x5c)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x91)\n\tETOOMANYREFS    = syscall.Errno(0x90)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUNATCH         = syscall.Errno(0x2a)\n\tEUSERS          = syscall.Errno(0x5e)\n\tEWOULDBLOCK     = syscall.Errno(0xb)\n\tEXDEV           = syscall.Errno(0x12)\n\tEXFULL          = syscall.Errno(0x34)\n)\n\n// Signals\nconst (\n\tSIGABRT    = syscall.Signal(0x6)\n\tSIGALRM    = syscall.Signal(0xe)\n\tSIGBUS     = syscall.Signal(0xa)\n\tSIGCANCEL  = syscall.Signal(0x24)\n\tSIGCHLD    = syscall.Signal(0x12)\n\tSIGCLD     = syscall.Signal(0x12)\n\tSIGCONT    = syscall.Signal(0x19)\n\tSIGEMT     = syscall.Signal(0x7)\n\tSIGFPE     = syscall.Signal(0x8)\n\tSIGFREEZE  = syscall.Signal(0x22)\n\tSIGHUP     = syscall.Signal(0x1)\n\tSIGILL     = syscall.Signal(0x4)\n\tSIGINFO    = syscall.Signal(0x29)\n\tSIGINT     = syscall.Signal(0x2)\n\tSIGIO      = syscall.Signal(0x16)\n\tSIGIOT     = syscall.Signal(0x6)\n\tSIGJVM1    = syscall.Signal(0x27)\n\tSIGJVM2    = syscall.Signal(0x28)\n\tSIGKILL    = syscall.Signal(0x9)\n\tSIGLOST    = syscall.Signal(0x25)\n\tSIGLWP     = syscall.Signal(0x21)\n\tSIGPIPE    = syscall.Signal(0xd)\n\tSIGPOLL    = syscall.Signal(0x16)\n\tSIGPROF    = syscall.Signal(0x1d)\n\tSIGPWR     = syscall.Signal(0x13)\n\tSIGQUIT    = syscall.Signal(0x3)\n\tSIGSEGV    = syscall.Signal(0xb)\n\tSIGSTOP    = syscall.Signal(0x17)\n\tSIGSYS     = syscall.Signal(0xc)\n\tSIGTERM    = syscall.Signal(0xf)\n\tSIGTHAW    = syscall.Signal(0x23)\n\tSIGTRAP    = syscall.Signal(0x5)\n\tSIGTSTP    = syscall.Signal(0x18)\n\tSIGTTIN    = syscall.Signal(0x1a)\n\tSIGTTOU    = syscall.Signal(0x1b)\n\tSIGURG     = syscall.Signal(0x15)\n\tSIGUSR1    = syscall.Signal(0x10)\n\tSIGUSR2    = syscall.Signal(0x11)\n\tSIGVTALRM  = syscall.Signal(0x1c)\n\tSIGWAITING = syscall.Signal(0x20)\n\tSIGWINCH   = syscall.Signal(0x14)\n\tSIGXCPU    = syscall.Signal(0x1e)\n\tSIGXFSZ    = syscall.Signal(0x1f)\n\tSIGXRES    = syscall.Signal(0x26)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"not owner\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"I/O error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"arg list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file number\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"not enough space\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"file table overflow\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"ENOMSG\", \"no message of desired type\"},\n\t{36, \"EIDRM\", \"identifier removed\"},\n\t{37, \"ECHRNG\", \"channel number out of range\"},\n\t{38, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{39, \"EL3HLT\", \"level 3 halted\"},\n\t{40, \"EL3RST\", \"level 3 reset\"},\n\t{41, \"ELNRNG\", \"link number out of range\"},\n\t{42, \"EUNATCH\", \"protocol driver not attached\"},\n\t{43, \"ENOCSI\", \"no CSI structure available\"},\n\t{44, \"EL2HLT\", \"level 2 halted\"},\n\t{45, \"EDEADLK\", \"deadlock situation detected/avoided\"},\n\t{46, \"ENOLCK\", \"no record locks available\"},\n\t{47, \"ECANCELED\", \"operation canceled\"},\n\t{48, \"ENOTSUP\", \"operation not supported\"},\n\t{49, \"EDQUOT\", \"disc quota exceeded\"},\n\t{50, \"EBADE\", \"bad exchange descriptor\"},\n\t{51, \"EBADR\", \"bad request descriptor\"},\n\t{52, \"EXFULL\", \"message tables full\"},\n\t{53, \"ENOANO\", \"anode table overflow\"},\n\t{54, \"EBADRQC\", \"bad request code\"},\n\t{55, \"EBADSLT\", \"invalid slot\"},\n\t{56, \"EDEADLOCK\", \"file locking deadlock\"},\n\t{57, \"EBFONT\", \"bad font file format\"},\n\t{58, \"EOWNERDEAD\", \"owner of the lock died\"},\n\t{59, \"ENOTRECOVERABLE\", \"lock is not recoverable\"},\n\t{60, \"ENOSTR\", \"not a stream device\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of stream resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{72, \"ELOCKUNMAPPED\", \"locked lock was unmapped \"},\n\t{73, \"ENOTACTIVE\", \"facility is not active\"},\n\t{74, \"EMULTIHOP\", \"multihop attempted\"},\n\t{77, \"EBADMSG\", \"not a data message\"},\n\t{78, \"ENAMETOOLONG\", \"file name too long\"},\n\t{79, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{80, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{81, \"EBADFD\", \"file descriptor in bad state\"},\n\t{82, \"EREMCHG\", \"remote address changed\"},\n\t{83, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{84, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{85, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{86, \"ELIBMAX\", \"attempting to link in more shared libraries than system limit\"},\n\t{87, \"ELIBEXEC\", \"can not exec a shared library directly\"},\n\t{88, \"EILSEQ\", \"illegal byte sequence\"},\n\t{89, \"ENOSYS\", \"operation not applicable\"},\n\t{90, \"ELOOP\", \"number of symbolic links encountered during path name traversal exceeds MAXSYMLINKS\"},\n\t{91, \"ERESTART\", \"error 91\"},\n\t{92, \"ESTRPIPE\", \"error 92\"},\n\t{93, \"ENOTEMPTY\", \"directory not empty\"},\n\t{94, \"EUSERS\", \"too many users\"},\n\t{95, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{96, \"EDESTADDRREQ\", \"destination address required\"},\n\t{97, \"EMSGSIZE\", \"message too long\"},\n\t{98, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{99, \"ENOPROTOOPT\", \"option not supported by protocol\"},\n\t{120, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{121, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{122, \"EOPNOTSUPP\", \"operation not supported on transport endpoint\"},\n\t{123, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{124, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{125, \"EADDRINUSE\", \"address already in use\"},\n\t{126, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{127, \"ENETDOWN\", \"network is down\"},\n\t{128, \"ENETUNREACH\", \"network is unreachable\"},\n\t{129, \"ENETRESET\", \"network dropped connection because of reset\"},\n\t{130, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{131, \"ECONNRESET\", \"connection reset by peer\"},\n\t{132, \"ENOBUFS\", \"no buffer space available\"},\n\t{133, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{134, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{143, \"ESHUTDOWN\", \"cannot send after socket shutdown\"},\n\t{144, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{145, \"ETIMEDOUT\", \"connection timed out\"},\n\t{146, \"ECONNREFUSED\", \"connection refused\"},\n\t{147, \"EHOSTDOWN\", \"host is down\"},\n\t{148, \"EHOSTUNREACH\", \"no route to host\"},\n\t{149, \"EALREADY\", \"operation already in progress\"},\n\t{150, \"EINPROGRESS\", \"operation now in progress\"},\n\t{151, \"ESTALE\", \"stale NFS file handle\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal Instruction\"},\n\t{5, \"SIGTRAP\", \"trace/Breakpoint Trap\"},\n\t{6, \"SIGABRT\", \"abort\"},\n\t{7, \"SIGEMT\", \"emulation Trap\"},\n\t{8, \"SIGFPE\", \"arithmetic Exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus Error\"},\n\t{11, \"SIGSEGV\", \"segmentation Fault\"},\n\t{12, \"SIGSYS\", \"bad System Call\"},\n\t{13, \"SIGPIPE\", \"broken Pipe\"},\n\t{14, \"SIGALRM\", \"alarm Clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGUSR1\", \"user Signal 1\"},\n\t{17, \"SIGUSR2\", \"user Signal 2\"},\n\t{18, \"SIGCHLD\", \"child Status Changed\"},\n\t{19, \"SIGPWR\", \"power-Fail/Restart\"},\n\t{20, \"SIGWINCH\", \"window Size Change\"},\n\t{21, \"SIGURG\", \"urgent Socket Condition\"},\n\t{22, \"SIGIO\", \"pollable Event\"},\n\t{23, \"SIGSTOP\", \"stopped (signal)\"},\n\t{24, \"SIGTSTP\", \"stopped (user)\"},\n\t{25, \"SIGCONT\", \"continued\"},\n\t{26, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{27, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{28, \"SIGVTALRM\", \"virtual Timer Expired\"},\n\t{29, \"SIGPROF\", \"profiling Timer Expired\"},\n\t{30, \"SIGXCPU\", \"cpu Limit Exceeded\"},\n\t{31, \"SIGXFSZ\", \"file Size Limit Exceeded\"},\n\t{32, \"SIGWAITING\", \"no runnable lwp\"},\n\t{33, \"SIGLWP\", \"inter-lwp signal\"},\n\t{34, \"SIGFREEZE\", \"checkpoint Freeze\"},\n\t{35, \"SIGTHAW\", \"checkpoint Thaw\"},\n\t{36, \"SIGCANCEL\", \"thread Cancellation\"},\n\t{37, \"SIGLOST\", \"resource Lost\"},\n\t{38, \"SIGXRES\", \"resource Control Exceeded\"},\n\t{39, \"SIGJVM1\", \"reserved for JVM 1\"},\n\t{40, \"SIGJVM2\", \"reserved for JVM 2\"},\n\t{41, \"SIGINFO\", \"information Request\"},\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zerrors_zos_s390x.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build zos && s390x\n\n// Hand edited based on zerrors_linux_s390x.go\n// TODO: auto-generate.\n\npackage unix\n\nconst (\n\tBRKINT                   = 0x0001\n\tCLOCAL                   = 0x1\n\tCLOCK_MONOTONIC          = 0x1\n\tCLOCK_PROCESS_CPUTIME_ID = 0x2\n\tCLOCK_REALTIME           = 0x0\n\tCLOCK_THREAD_CPUTIME_ID  = 0x3\n\tCLONE_NEWIPC             = 0x08000000\n\tCLONE_NEWNET             = 0x40000000\n\tCLONE_NEWNS              = 0x00020000\n\tCLONE_NEWPID             = 0x20000000\n\tCLONE_NEWUTS             = 0x04000000\n\tCLONE_PARENT             = 0x00008000\n\tCS8                      = 0x0030\n\tCSIZE                    = 0x0030\n\tECHO                     = 0x00000008\n\tECHONL                   = 0x00000001\n\tEFD_SEMAPHORE            = 0x00002000\n\tEFD_CLOEXEC              = 0x00001000\n\tEFD_NONBLOCK             = 0x00000004\n\tEPOLL_CLOEXEC            = 0x00001000\n\tEPOLL_CTL_ADD            = 0\n\tEPOLL_CTL_MOD            = 1\n\tEPOLL_CTL_DEL            = 2\n\tEPOLLRDNORM              = 0x0001\n\tEPOLLRDBAND              = 0x0002\n\tEPOLLIN                  = 0x0003\n\tEPOLLOUT                 = 0x0004\n\tEPOLLWRBAND              = 0x0008\n\tEPOLLPRI                 = 0x0010\n\tEPOLLERR                 = 0x0020\n\tEPOLLHUP                 = 0x0040\n\tEPOLLEXCLUSIVE           = 0x20000000\n\tEPOLLONESHOT             = 0x40000000\n\tFD_CLOEXEC               = 0x01\n\tFD_CLOFORK               = 0x02\n\tFD_SETSIZE               = 0x800\n\tFNDELAY                  = 0x04\n\tF_CLOSFD                 = 9\n\tF_CONTROL_CVT            = 13\n\tF_DUPFD                  = 0\n\tF_DUPFD2                 = 8\n\tF_GETFD                  = 1\n\tF_GETFL                  = 259\n\tF_GETLK                  = 5\n\tF_GETOWN                 = 10\n\tF_OK                     = 0x0\n\tF_RDLCK                  = 1\n\tF_SETFD                  = 2\n\tF_SETFL                  = 4\n\tF_SETLK                  = 6\n\tF_SETLKW                 = 7\n\tF_SETOWN                 = 11\n\tF_SETTAG                 = 12\n\tF_UNLCK                  = 3\n\tF_WRLCK                  = 2\n\tFSTYPE_ZFS               = 0xe9 //\"Z\"\n\tFSTYPE_HFS               = 0xc8 //\"H\"\n\tFSTYPE_NFS               = 0xd5 //\"N\"\n\tFSTYPE_TFS               = 0xe3 //\"T\"\n\tFSTYPE_AUTOMOUNT         = 0xc1 //\"A\"\n\tGRND_NONBLOCK            = 1\n\tGRND_RANDOM              = 2\n\tHUPCL                    = 0x0100 // Hang up on last close\n\tIN_CLOEXEC               = 0x00001000\n\tIN_NONBLOCK              = 0x00000004\n\tIN_ACCESS                = 0x00000001\n\tIN_MODIFY                = 0x00000002\n\tIN_ATTRIB                = 0x00000004\n\tIN_CLOSE_WRITE           = 0x00000008\n\tIN_CLOSE_NOWRITE         = 0x00000010\n\tIN_OPEN                  = 0x00000020\n\tIN_MOVED_FROM            = 0x00000040\n\tIN_MOVED_TO              = 0x00000080\n\tIN_CREATE                = 0x00000100\n\tIN_DELETE                = 0x00000200\n\tIN_DELETE_SELF           = 0x00000400\n\tIN_MOVE_SELF             = 0x00000800\n\tIN_UNMOUNT               = 0x00002000\n\tIN_Q_OVERFLOW            = 0x00004000\n\tIN_IGNORED               = 0x00008000\n\tIN_CLOSE                 = (IN_CLOSE_WRITE | IN_CLOSE_NOWRITE)\n\tIN_MOVE                  = (IN_MOVED_FROM | IN_MOVED_TO)\n\tIN_ALL_EVENTS            = (IN_ACCESS | IN_MODIFY | IN_ATTRIB |\n\t\tIN_CLOSE | IN_OPEN | IN_MOVE |\n\t\tIN_CREATE | IN_DELETE | IN_DELETE_SELF |\n\t\tIN_MOVE_SELF)\n\tIN_ONLYDIR                      = 0x01000000\n\tIN_DONT_FOLLOW                  = 0x02000000\n\tIN_EXCL_UNLINK                  = 0x04000000\n\tIN_MASK_CREATE                  = 0x10000000\n\tIN_MASK_ADD                     = 0x20000000\n\tIN_ISDIR                        = 0x40000000\n\tIN_ONESHOT                      = 0x80000000\n\tIP6F_MORE_FRAG                  = 0x0001\n\tIP6F_OFF_MASK                   = 0xfff8\n\tIP6F_RESERVED_MASK              = 0x0006\n\tIP6OPT_JUMBO                    = 0xc2\n\tIP6OPT_JUMBO_LEN                = 6\n\tIP6OPT_MUTABLE                  = 0x20\n\tIP6OPT_NSAP_ADDR                = 0xc3\n\tIP6OPT_PAD1                     = 0x00\n\tIP6OPT_PADN                     = 0x01\n\tIP6OPT_ROUTER_ALERT             = 0x05\n\tIP6OPT_TUNNEL_LIMIT             = 0x04\n\tIP6OPT_TYPE_DISCARD             = 0x40\n\tIP6OPT_TYPE_FORCEICMP           = 0x80\n\tIP6OPT_TYPE_ICMP                = 0xc0\n\tIP6OPT_TYPE_SKIP                = 0x00\n\tIP6_ALERT_AN                    = 0x0002\n\tIP6_ALERT_MLD                   = 0x0000\n\tIP6_ALERT_RSVP                  = 0x0001\n\tIPPORT_RESERVED                 = 1024\n\tIPPORT_USERRESERVED             = 5000\n\tIPPROTO_AH                      = 51\n\tSOL_AH                          = 51\n\tIPPROTO_DSTOPTS                 = 60\n\tSOL_DSTOPTS                     = 60\n\tIPPROTO_EGP                     = 8\n\tSOL_EGP                         = 8\n\tIPPROTO_ESP                     = 50\n\tSOL_ESP                         = 50\n\tIPPROTO_FRAGMENT                = 44\n\tSOL_FRAGMENT                    = 44\n\tIPPROTO_GGP                     = 2\n\tSOL_GGP                         = 2\n\tIPPROTO_HOPOPTS                 = 0\n\tSOL_HOPOPTS                     = 0\n\tIPPROTO_ICMP                    = 1\n\tSOL_ICMP                        = 1\n\tIPPROTO_ICMPV6                  = 58\n\tSOL_ICMPV6                      = 58\n\tIPPROTO_IDP                     = 22\n\tSOL_IDP                         = 22\n\tIPPROTO_IP                      = 0\n\tSOL_IP                          = 0\n\tIPPROTO_IPV6                    = 41\n\tSOL_IPV6                        = 41\n\tIPPROTO_MAX                     = 256\n\tSOL_MAX                         = 256\n\tIPPROTO_NONE                    = 59\n\tSOL_NONE                        = 59\n\tIPPROTO_PUP                     = 12\n\tSOL_PUP                         = 12\n\tIPPROTO_RAW                     = 255\n\tSOL_RAW                         = 255\n\tIPPROTO_ROUTING                 = 43\n\tSOL_ROUTING                     = 43\n\tIPPROTO_TCP                     = 6\n\tSOL_TCP                         = 6\n\tIPPROTO_UDP                     = 17\n\tSOL_UDP                         = 17\n\tIPV6_ADDR_PREFERENCES           = 32\n\tIPV6_CHECKSUM                   = 19\n\tIPV6_DONTFRAG                   = 29\n\tIPV6_DSTOPTS                    = 23\n\tIPV6_HOPLIMIT                   = 11\n\tIPV6_HOPOPTS                    = 22\n\tIPV6_JOIN_GROUP                 = 5\n\tIPV6_LEAVE_GROUP                = 6\n\tIPV6_MULTICAST_HOPS             = 9\n\tIPV6_MULTICAST_IF               = 7\n\tIPV6_MULTICAST_LOOP             = 4\n\tIPV6_NEXTHOP                    = 20\n\tIPV6_PATHMTU                    = 12\n\tIPV6_PKTINFO                    = 13\n\tIPV6_PREFER_SRC_CGA             = 0x10\n\tIPV6_PREFER_SRC_COA             = 0x02\n\tIPV6_PREFER_SRC_HOME            = 0x01\n\tIPV6_PREFER_SRC_NONCGA          = 0x20\n\tIPV6_PREFER_SRC_PUBLIC          = 0x08\n\tIPV6_PREFER_SRC_TMP             = 0x04\n\tIPV6_RECVDSTOPTS                = 28\n\tIPV6_RECVHOPLIMIT               = 14\n\tIPV6_RECVHOPOPTS                = 26\n\tIPV6_RECVPATHMTU                = 16\n\tIPV6_RECVPKTINFO                = 15\n\tIPV6_RECVRTHDR                  = 25\n\tIPV6_RECVTCLASS                 = 31\n\tIPV6_RTHDR                      = 21\n\tIPV6_RTHDRDSTOPTS               = 24\n\tIPV6_RTHDR_TYPE_0               = 0\n\tIPV6_TCLASS                     = 30\n\tIPV6_UNICAST_HOPS               = 3\n\tIPV6_USE_MIN_MTU                = 18\n\tIPV6_V6ONLY                     = 10\n\tIP_ADD_MEMBERSHIP               = 5\n\tIP_ADD_SOURCE_MEMBERSHIP        = 12\n\tIP_BLOCK_SOURCE                 = 10\n\tIP_DEFAULT_MULTICAST_LOOP       = 1\n\tIP_DEFAULT_MULTICAST_TTL        = 1\n\tIP_DROP_MEMBERSHIP              = 6\n\tIP_DROP_SOURCE_MEMBERSHIP       = 13\n\tIP_MAX_MEMBERSHIPS              = 20\n\tIP_MULTICAST_IF                 = 7\n\tIP_MULTICAST_LOOP               = 4\n\tIP_MULTICAST_TTL                = 3\n\tIP_OPTIONS                      = 1\n\tIP_PKTINFO                      = 101\n\tIP_RECVPKTINFO                  = 102\n\tIP_TOS                          = 2\n\tIP_TTL                          = 14\n\tIP_UNBLOCK_SOURCE               = 11\n\tICMP6_FILTER                    = 1\n\tMCAST_INCLUDE                   = 0\n\tMCAST_EXCLUDE                   = 1\n\tMCAST_JOIN_GROUP                = 40\n\tMCAST_LEAVE_GROUP               = 41\n\tMCAST_JOIN_SOURCE_GROUP         = 42\n\tMCAST_LEAVE_SOURCE_GROUP        = 43\n\tMCAST_BLOCK_SOURCE              = 44\n\tMCAST_UNBLOCK_SOURCE            = 46\n\tICANON                          = 0x0010\n\tICRNL                           = 0x0002\n\tIEXTEN                          = 0x0020\n\tIGNBRK                          = 0x0004\n\tIGNCR                           = 0x0008\n\tINLCR                           = 0x0020\n\tISIG                            = 0x0040\n\tISTRIP                          = 0x0080\n\tIXON                            = 0x0200\n\tIXOFF                           = 0x0100\n\tLOCK_SH                         = 0x1\n\tLOCK_EX                         = 0x2\n\tLOCK_NB                         = 0x4\n\tLOCK_UN                         = 0x8\n\tPOLLIN                          = 0x0003\n\tPOLLOUT                         = 0x0004\n\tPOLLPRI                         = 0x0010\n\tPOLLERR                         = 0x0020\n\tPOLLHUP                         = 0x0040\n\tPOLLNVAL                        = 0x0080\n\tPROT_READ                       = 0x1 // mmap - page can be read\n\tPROT_WRITE                      = 0x2 // page can be written\n\tPROT_NONE                       = 0x4 // can't be accessed\n\tPROT_EXEC                       = 0x8 // can be executed\n\tMAP_PRIVATE                     = 0x1 // changes are private\n\tMAP_SHARED                      = 0x2 // changes are shared\n\tMAP_FIXED                       = 0x4 // place exactly\n\t__MAP_MEGA                      = 0x8\n\t__MAP_64                        = 0x10\n\tMAP_ANON                        = 0x20\n\tMAP_ANONYMOUS                   = 0x20\n\tMS_SYNC                         = 0x1 // msync - synchronous writes\n\tMS_ASYNC                        = 0x2 // asynchronous writes\n\tMS_INVALIDATE                   = 0x4 // invalidate mappings\n\tMS_BIND                         = 0x00001000\n\tMS_MOVE                         = 0x00002000\n\tMS_NOSUID                       = 0x00000002\n\tMS_PRIVATE                      = 0x00040000\n\tMS_REC                          = 0x00004000\n\tMS_REMOUNT                      = 0x00008000\n\tMS_RDONLY                       = 0x00000001\n\tMS_UNBINDABLE                   = 0x00020000\n\tMNT_DETACH                      = 0x00000004\n\tZOSDSFS_SUPER_MAGIC             = 0x44534653 // zOS DSFS\n\tNFS_SUPER_MAGIC                 = 0x6969     // NFS\n\tNSFS_MAGIC                      = 0x6e736673 // PROCNS\n\tPROC_SUPER_MAGIC                = 0x9fa0     // proc FS\n\tZOSTFS_SUPER_MAGIC              = 0x544653   // zOS TFS\n\tZOSUFS_SUPER_MAGIC              = 0x554653   // zOS UFS\n\tZOSZFS_SUPER_MAGIC              = 0x5A4653   // zOS ZFS\n\tMTM_RDONLY                      = 0x80000000\n\tMTM_RDWR                        = 0x40000000\n\tMTM_UMOUNT                      = 0x10000000\n\tMTM_IMMED                       = 0x08000000\n\tMTM_FORCE                       = 0x04000000\n\tMTM_DRAIN                       = 0x02000000\n\tMTM_RESET                       = 0x01000000\n\tMTM_SAMEMODE                    = 0x00100000\n\tMTM_UNQSEFORCE                  = 0x00040000\n\tMTM_NOSUID                      = 0x00000400\n\tMTM_SYNCHONLY                   = 0x00000200\n\tMTM_REMOUNT                     = 0x00000100\n\tMTM_NOSECURITY                  = 0x00000080\n\tNFDBITS                         = 0x20\n\tONLRET                          = 0x0020 // NL performs CR function\n\tO_ACCMODE                       = 0x03\n\tO_APPEND                        = 0x08\n\tO_ASYNCSIG                      = 0x0200\n\tO_CREAT                         = 0x80\n\tO_DIRECT                        = 0x00002000\n\tO_NOFOLLOW                      = 0x00004000\n\tO_DIRECTORY                     = 0x00008000\n\tO_PATH                          = 0x00080000\n\tO_CLOEXEC                       = 0x00001000\n\tO_EXCL                          = 0x40\n\tO_GETFL                         = 0x0F\n\tO_LARGEFILE                     = 0x0400\n\tO_NDELAY                        = 0x4\n\tO_NONBLOCK                      = 0x04\n\tO_RDONLY                        = 0x02\n\tO_RDWR                          = 0x03\n\tO_SYNC                          = 0x0100\n\tO_TRUNC                         = 0x10\n\tO_WRONLY                        = 0x01\n\tO_NOCTTY                        = 0x20\n\tOPOST                           = 0x0001\n\tONLCR                           = 0x0004\n\tPARENB                          = 0x0200\n\tPARMRK                          = 0x0400\n\tQUERYCVT                        = 3\n\tRUSAGE_CHILDREN                 = -0x1\n\tRUSAGE_SELF                     = 0x0 // RUSAGE_THREAD unsupported on z/OS\n\tSEEK_CUR                        = 1\n\tSEEK_END                        = 2\n\tSEEK_SET                        = 0\n\tSETAUTOCVTALL                   = 5\n\tSETAUTOCVTON                    = 2\n\tSETCVTALL                       = 4\n\tSETCVTOFF                       = 0\n\tSETCVTON                        = 1\n\tAF_APPLETALK                    = 16\n\tAF_CCITT                        = 10\n\tAF_CHAOS                        = 5\n\tAF_DATAKIT                      = 9\n\tAF_DLI                          = 13\n\tAF_ECMA                         = 8\n\tAF_HYLINK                       = 15\n\tAF_IMPLINK                      = 3\n\tAF_INET                         = 2\n\tAF_INET6                        = 19\n\tAF_INTF                         = 20\n\tAF_IUCV                         = 17\n\tAF_LAT                          = 14\n\tAF_LINK                         = 18\n\tAF_LOCAL                        = AF_UNIX // AF_LOCAL is an alias for AF_UNIX\n\tAF_MAX                          = 30\n\tAF_NBS                          = 7\n\tAF_NDD                          = 23\n\tAF_NETWARE                      = 22\n\tAF_NS                           = 6\n\tAF_PUP                          = 4\n\tAF_RIF                          = 21\n\tAF_ROUTE                        = 20\n\tAF_SNA                          = 11\n\tAF_UNIX                         = 1\n\tAF_UNSPEC                       = 0\n\tIBMTCP_IMAGE                    = 1\n\tMSG_ACK_EXPECTED                = 0x10\n\tMSG_ACK_GEN                     = 0x40\n\tMSG_ACK_TIMEOUT                 = 0x20\n\tMSG_CONNTERM                    = 0x80\n\tMSG_CTRUNC                      = 0x20\n\tMSG_DONTROUTE                   = 0x4\n\tMSG_EOF                         = 0x8000\n\tMSG_EOR                         = 0x8\n\tMSG_MAXIOVLEN                   = 16\n\tMSG_NONBLOCK                    = 0x4000\n\tMSG_OOB                         = 0x1\n\tMSG_PEEK                        = 0x2\n\tMSG_TRUNC                       = 0x10\n\tMSG_WAITALL                     = 0x40\n\tPRIO_PROCESS                    = 1\n\tPRIO_PGRP                       = 2\n\tPRIO_USER                       = 3\n\tRLIMIT_CPU                      = 0\n\tRLIMIT_FSIZE                    = 1\n\tRLIMIT_DATA                     = 2\n\tRLIMIT_STACK                    = 3\n\tRLIMIT_CORE                     = 4\n\tRLIMIT_AS                       = 5\n\tRLIMIT_NOFILE                   = 6\n\tRLIMIT_MEMLIMIT                 = 7\n\tRLIMIT_MEMLOCK                  = 0x8\n\tRLIM_INFINITY                   = 2147483647\n\tSCHED_FIFO                      = 0x2\n\tSCM_CREDENTIALS                 = 0x2\n\tSCM_RIGHTS                      = 0x01\n\tSF_CLOSE                        = 0x00000002\n\tSF_REUSE                        = 0x00000001\n\tSHM_RND                         = 0x2\n\tSHM_RDONLY                      = 0x1\n\tSHMLBA                          = 0x1000\n\tIPC_STAT                        = 0x3\n\tIPC_SET                         = 0x2\n\tIPC_RMID                        = 0x1\n\tIPC_PRIVATE                     = 0x0\n\tIPC_CREAT                       = 0x1000000\n\t__IPC_MEGA                      = 0x4000000\n\t__IPC_SHAREAS                   = 0x20000000\n\t__IPC_BELOWBAR                  = 0x10000000\n\tIPC_EXCL                        = 0x2000000\n\t__IPC_GIGA                      = 0x8000000\n\tSHUT_RD                         = 0\n\tSHUT_RDWR                       = 2\n\tSHUT_WR                         = 1\n\tSOCK_CLOEXEC                    = 0x00001000\n\tSOCK_CONN_DGRAM                 = 6\n\tSOCK_DGRAM                      = 2\n\tSOCK_NONBLOCK                   = 0x800\n\tSOCK_RAW                        = 3\n\tSOCK_RDM                        = 4\n\tSOCK_SEQPACKET                  = 5\n\tSOCK_STREAM                     = 1\n\tSOL_SOCKET                      = 0xffff\n\tSOMAXCONN                       = 10\n\tSO_ACCEPTCONN                   = 0x0002\n\tSO_ACCEPTECONNABORTED           = 0x0006\n\tSO_ACKNOW                       = 0x7700\n\tSO_BROADCAST                    = 0x0020\n\tSO_BULKMODE                     = 0x8000\n\tSO_CKSUMRECV                    = 0x0800\n\tSO_CLOSE                        = 0x01\n\tSO_CLUSTERCONNTYPE              = 0x00004001\n\tSO_CLUSTERCONNTYPE_INTERNAL     = 8\n\tSO_CLUSTERCONNTYPE_NOCONN       = 0\n\tSO_CLUSTERCONNTYPE_NONE         = 1\n\tSO_CLUSTERCONNTYPE_SAME_CLUSTER = 2\n\tSO_CLUSTERCONNTYPE_SAME_IMAGE   = 4\n\tSO_DEBUG                        = 0x0001\n\tSO_DONTROUTE                    = 0x0010\n\tSO_ERROR                        = 0x1007\n\tSO_IGNOREINCOMINGPUSH           = 0x1\n\tSO_IGNORESOURCEVIPA             = 0x0002\n\tSO_KEEPALIVE                    = 0x0008\n\tSO_LINGER                       = 0x0080\n\tSO_NONBLOCKLOCAL                = 0x8001\n\tSO_NOREUSEADDR                  = 0x1000\n\tSO_OOBINLINE                    = 0x0100\n\tSO_OPTACK                       = 0x8004\n\tSO_OPTMSS                       = 0x8003\n\tSO_RCVBUF                       = 0x1002\n\tSO_RCVLOWAT                     = 0x1004\n\tSO_RCVTIMEO                     = 0x1006\n\tSO_REUSEADDR                    = 0x0004\n\tSO_REUSEPORT                    = 0x0200\n\tSO_SECINFO                      = 0x00004002\n\tSO_SET                          = 0x0200\n\tSO_SNDBUF                       = 0x1001\n\tSO_SNDLOWAT                     = 0x1003\n\tSO_SNDTIMEO                     = 0x1005\n\tSO_TYPE                         = 0x1008\n\tSO_UNSET                        = 0x0400\n\tSO_USELOOPBACK                  = 0x0040\n\tSO_USE_IFBUFS                   = 0x0400\n\tS_ISUID                         = 0x0800\n\tS_ISGID                         = 0x0400\n\tS_ISVTX                         = 0x0200\n\tS_IRUSR                         = 0x0100\n\tS_IWUSR                         = 0x0080\n\tS_IXUSR                         = 0x0040\n\tS_IRWXU                         = 0x01C0\n\tS_IRGRP                         = 0x0020\n\tS_IWGRP                         = 0x0010\n\tS_IXGRP                         = 0x0008\n\tS_IRWXG                         = 0x0038\n\tS_IROTH                         = 0x0004\n\tS_IWOTH                         = 0x0002\n\tS_IXOTH                         = 0x0001\n\tS_IRWXO                         = 0x0007\n\tS_IREAD                         = S_IRUSR\n\tS_IWRITE                        = S_IWUSR\n\tS_IEXEC                         = S_IXUSR\n\tS_IFDIR                         = 0x01000000\n\tS_IFCHR                         = 0x02000000\n\tS_IFREG                         = 0x03000000\n\tS_IFFIFO                        = 0x04000000\n\tS_IFIFO                         = 0x04000000\n\tS_IFLNK                         = 0x05000000\n\tS_IFBLK                         = 0x06000000\n\tS_IFSOCK                        = 0x07000000\n\tS_IFVMEXTL                      = 0xFE000000\n\tS_IFVMEXTL_EXEC                 = 0x00010000\n\tS_IFVMEXTL_DATA                 = 0x00020000\n\tS_IFVMEXTL_MEL                  = 0x00030000\n\tS_IFEXTL                        = 0x00000001\n\tS_IFPROGCTL                     = 0x00000002\n\tS_IFAPFCTL                      = 0x00000004\n\tS_IFNOSHARE                     = 0x00000008\n\tS_IFSHARELIB                    = 0x00000010\n\tS_IFMT                          = 0xFF000000\n\tS_IFMST                         = 0x00FF0000\n\tTCP_KEEPALIVE                   = 0x8\n\tTCP_NODELAY                     = 0x1\n\tTIOCGWINSZ                      = 0x4008a368\n\tTIOCSWINSZ                      = 0x8008a367\n\tTIOCSBRK                        = 0x2000a77b\n\tTIOCCBRK                        = 0x2000a77a\n\tTIOCSTI                         = 0x8001a772\n\tTIOCGPGRP                       = 0x4004a777 // _IOR(167, 119, int)\n\tTCSANOW                         = 0\n\tTCSETS                          = 0 // equivalent to TCSANOW for tcsetattr\n\tTCSADRAIN                       = 1\n\tTCSETSW                         = 1 // equivalent to TCSADRAIN for tcsetattr\n\tTCSAFLUSH                       = 2\n\tTCSETSF                         = 2 // equivalent to TCSAFLUSH for tcsetattr\n\tTCGETS                          = 3 // not defined in ioctl.h -- zos golang only\n\tTCIFLUSH                        = 0\n\tTCOFLUSH                        = 1\n\tTCIOFLUSH                       = 2\n\tTCOOFF                          = 0\n\tTCOON                           = 1\n\tTCIOFF                          = 2\n\tTCION                           = 3\n\tTIOCSPGRP                       = 0x8004a776\n\tTIOCNOTTY                       = 0x2000a771\n\tTIOCEXCL                        = 0x2000a70d\n\tTIOCNXCL                        = 0x2000a70e\n\tTIOCGETD                        = 0x4004a700\n\tTIOCSETD                        = 0x8004a701\n\tTIOCPKT                         = 0x8004a770\n\tTIOCSTOP                        = 0x2000a76f\n\tTIOCSTART                       = 0x2000a76e\n\tTIOCUCNTL                       = 0x8004a766\n\tTIOCREMOTE                      = 0x8004a769\n\tTIOCMGET                        = 0x4004a76a\n\tTIOCMSET                        = 0x8004a76d\n\tTIOCMBIC                        = 0x8004a76b\n\tTIOCMBIS                        = 0x8004a76c\n\tVINTR                           = 0\n\tVQUIT                           = 1\n\tVERASE                          = 2\n\tVKILL                           = 3\n\tVEOF                            = 4\n\tVEOL                            = 5\n\tVMIN                            = 6\n\tVSTART                          = 7\n\tVSTOP                           = 8\n\tVSUSP                           = 9\n\tVTIME                           = 10\n\tWCONTINUED                      = 0x4\n\tWEXITED                         = 0x8\n\tWNOHANG                         = 0x1\n\tWNOWAIT                         = 0x20\n\tWSTOPPED                        = 0x10\n\tWUNTRACED                       = 0x2\n\t_BPX_SWAP                       = 1\n\t_BPX_NONSWAP                    = 2\n\tMCL_CURRENT                     = 1  // for Linux compatibility -- no zos semantics\n\tMCL_FUTURE                      = 2  // for Linux compatibility -- no zos semantics\n\tMCL_ONFAULT                     = 3  // for Linux compatibility -- no zos semantics\n\tMADV_NORMAL                     = 0  // for Linux compatibility -- no zos semantics\n\tMADV_RANDOM                     = 1  // for Linux compatibility -- no zos semantics\n\tMADV_SEQUENTIAL                 = 2  // for Linux compatibility -- no zos semantics\n\tMADV_WILLNEED                   = 3  // for Linux compatibility -- no zos semantics\n\tMADV_REMOVE                     = 4  // for Linux compatibility -- no zos semantics\n\tMADV_DONTFORK                   = 5  // for Linux compatibility -- no zos semantics\n\tMADV_DOFORK                     = 6  // for Linux compatibility -- no zos semantics\n\tMADV_HWPOISON                   = 7  // for Linux compatibility -- no zos semantics\n\tMADV_MERGEABLE                  = 8  // for Linux compatibility -- no zos semantics\n\tMADV_UNMERGEABLE                = 9  // for Linux compatibility -- no zos semantics\n\tMADV_SOFT_OFFLINE               = 10 // for Linux compatibility -- no zos semantics\n\tMADV_HUGEPAGE                   = 11 // for Linux compatibility -- no zos semantics\n\tMADV_NOHUGEPAGE                 = 12 // for Linux compatibility -- no zos semantics\n\tMADV_DONTDUMP                   = 13 // for Linux compatibility -- no zos semantics\n\tMADV_DODUMP                     = 14 // for Linux compatibility -- no zos semantics\n\tMADV_FREE                       = 15 // for Linux compatibility -- no zos semantics\n\tMADV_WIPEONFORK                 = 16 // for Linux compatibility -- no zos semantics\n\tMADV_KEEPONFORK                 = 17 // for Linux compatibility -- no zos semantics\n\tAT_SYMLINK_FOLLOW               = 0x400\n\tAT_SYMLINK_NOFOLLOW             = 0x100\n\tXATTR_CREATE                    = 0x1\n\tXATTR_REPLACE                   = 0x2\n\tP_PID                           = 0\n\tP_PGID                          = 1\n\tP_ALL                           = 2\n\tPR_SET_NAME                     = 15\n\tPR_GET_NAME                     = 16\n\tPR_SET_NO_NEW_PRIVS             = 38\n\tPR_GET_NO_NEW_PRIVS             = 39\n\tPR_SET_DUMPABLE                 = 4\n\tPR_GET_DUMPABLE                 = 3\n\tPR_SET_PDEATHSIG                = 1\n\tPR_GET_PDEATHSIG                = 2\n\tPR_SET_CHILD_SUBREAPER          = 36\n\tPR_GET_CHILD_SUBREAPER          = 37\n\tAT_FDCWD                        = -100\n\tAT_EACCESS                      = 0x200\n\tAT_EMPTY_PATH                   = 0x1000\n\tAT_REMOVEDIR                    = 0x200\n\tRENAME_NOREPLACE                = 1 << 0\n\tST_RDONLY                       = 1\n\tST_NOSUID                       = 2\n)\n\nconst (\n\tEDOM               = Errno(1)\n\tERANGE             = Errno(2)\n\tEACCES             = Errno(111)\n\tEAGAIN             = Errno(112)\n\tEBADF              = Errno(113)\n\tEBUSY              = Errno(114)\n\tECHILD             = Errno(115)\n\tEDEADLK            = Errno(116)\n\tEEXIST             = Errno(117)\n\tEFAULT             = Errno(118)\n\tEFBIG              = Errno(119)\n\tEINTR              = Errno(120)\n\tEINVAL             = Errno(121)\n\tEIO                = Errno(122)\n\tEISDIR             = Errno(123)\n\tEMFILE             = Errno(124)\n\tEMLINK             = Errno(125)\n\tENAMETOOLONG       = Errno(126)\n\tENFILE             = Errno(127)\n\tENOATTR            = Errno(265)\n\tENODEV             = Errno(128)\n\tENOENT             = Errno(129)\n\tENOEXEC            = Errno(130)\n\tENOLCK             = Errno(131)\n\tENOMEM             = Errno(132)\n\tENOSPC             = Errno(133)\n\tENOSYS             = Errno(134)\n\tENOTDIR            = Errno(135)\n\tENOTEMPTY          = Errno(136)\n\tENOTTY             = Errno(137)\n\tENXIO              = Errno(138)\n\tEPERM              = Errno(139)\n\tEPIPE              = Errno(140)\n\tEROFS              = Errno(141)\n\tESPIPE             = Errno(142)\n\tESRCH              = Errno(143)\n\tEXDEV              = Errno(144)\n\tE2BIG              = Errno(145)\n\tELOOP              = Errno(146)\n\tEILSEQ             = Errno(147)\n\tENODATA            = Errno(148)\n\tEOVERFLOW          = Errno(149)\n\tEMVSNOTUP          = Errno(150)\n\tECMSSTORAGE        = Errno(151)\n\tEMVSDYNALC         = Errno(151)\n\tEMVSCVAF           = Errno(152)\n\tEMVSCATLG          = Errno(153)\n\tECMSINITIAL        = Errno(156)\n\tEMVSINITIAL        = Errno(156)\n\tECMSERR            = Errno(157)\n\tEMVSERR            = Errno(157)\n\tEMVSPARM           = Errno(158)\n\tECMSPFSFILE        = Errno(159)\n\tEMVSPFSFILE        = Errno(159)\n\tEMVSBADCHAR        = Errno(160)\n\tECMSPFSPERM        = Errno(162)\n\tEMVSPFSPERM        = Errno(162)\n\tEMVSSAFEXTRERR     = Errno(163)\n\tEMVSSAF2ERR        = Errno(164)\n\tEMVSTODNOTSET      = Errno(165)\n\tEMVSPATHOPTS       = Errno(166)\n\tEMVSNORTL          = Errno(167)\n\tEMVSEXPIRE         = Errno(168)\n\tEMVSPASSWORD       = Errno(169)\n\tEMVSWLMERROR       = Errno(170)\n\tEMVSCPLERROR       = Errno(171)\n\tEMVSARMERROR       = Errno(172)\n\tELENOFORK          = Errno(200)\n\tELEMSGERR          = Errno(201)\n\tEFPMASKINV         = Errno(202)\n\tEFPMODEINV         = Errno(203)\n\tEBUFLEN            = Errno(227)\n\tEEXTLINK           = Errno(228)\n\tENODD              = Errno(229)\n\tECMSESMERR         = Errno(230)\n\tECPERR             = Errno(231)\n\tELEMULTITHREAD     = Errno(232)\n\tELEFENCE           = Errno(244)\n\tEBADDATA           = Errno(245)\n\tEUNKNOWN           = Errno(246)\n\tENOTSUP            = Errno(247)\n\tEBADNAME           = Errno(248)\n\tENOTSAFE           = Errno(249)\n\tELEMULTITHREADFORK = Errno(257)\n\tECUNNOENV          = Errno(258)\n\tECUNNOCONV         = Errno(259)\n\tECUNNOTALIGNED     = Errno(260)\n\tECUNERR            = Errno(262)\n\tEIBMBADCALL        = Errno(1000)\n\tEIBMBADPARM        = Errno(1001)\n\tEIBMSOCKOUTOFRANGE = Errno(1002)\n\tEIBMSOCKINUSE      = Errno(1003)\n\tEIBMIUCVERR        = Errno(1004)\n\tEOFFLOADboxERROR   = Errno(1005)\n\tEOFFLOADboxRESTART = Errno(1006)\n\tEOFFLOADboxDOWN    = Errno(1007)\n\tEIBMCONFLICT       = Errno(1008)\n\tEIBMCANCELLED      = Errno(1009)\n\tEIBMBADTCPNAME     = Errno(1011)\n\tENOTBLK            = Errno(1100)\n\tETXTBSY            = Errno(1101)\n\tEWOULDBLOCK        = Errno(1102)\n\tEINPROGRESS        = Errno(1103)\n\tEALREADY           = Errno(1104)\n\tENOTSOCK           = Errno(1105)\n\tEDESTADDRREQ       = Errno(1106)\n\tEMSGSIZE           = Errno(1107)\n\tEPROTOTYPE         = Errno(1108)\n\tENOPROTOOPT        = Errno(1109)\n\tEPROTONOSUPPORT    = Errno(1110)\n\tESOCKTNOSUPPORT    = Errno(1111)\n\tEOPNOTSUPP         = Errno(1112)\n\tEPFNOSUPPORT       = Errno(1113)\n\tEAFNOSUPPORT       = Errno(1114)\n\tEADDRINUSE         = Errno(1115)\n\tEADDRNOTAVAIL      = Errno(1116)\n\tENETDOWN           = Errno(1117)\n\tENETUNREACH        = Errno(1118)\n\tENETRESET          = Errno(1119)\n\tECONNABORTED       = Errno(1120)\n\tECONNRESET         = Errno(1121)\n\tENOBUFS            = Errno(1122)\n\tEISCONN            = Errno(1123)\n\tENOTCONN           = Errno(1124)\n\tESHUTDOWN          = Errno(1125)\n\tETOOMANYREFS       = Errno(1126)\n\tETIMEDOUT          = Errno(1127)\n\tECONNREFUSED       = Errno(1128)\n\tEHOSTDOWN          = Errno(1129)\n\tEHOSTUNREACH       = Errno(1130)\n\tEPROCLIM           = Errno(1131)\n\tEUSERS             = Errno(1132)\n\tEDQUOT             = Errno(1133)\n\tESTALE             = Errno(1134)\n\tEREMOTE            = Errno(1135)\n\tENOSTR             = Errno(1136)\n\tETIME              = Errno(1137)\n\tENOSR              = Errno(1138)\n\tENOMSG             = Errno(1139)\n\tEBADMSG            = Errno(1140)\n\tEIDRM              = Errno(1141)\n\tENONET             = Errno(1142)\n\tERREMOTE           = Errno(1143)\n\tENOLINK            = Errno(1144)\n\tEADV               = Errno(1145)\n\tESRMNT             = Errno(1146)\n\tECOMM              = Errno(1147)\n\tEPROTO             = Errno(1148)\n\tEMULTIHOP          = Errno(1149)\n\tEDOTDOT            = Errno(1150)\n\tEREMCHG            = Errno(1151)\n\tECANCELED          = Errno(1152)\n\tEINTRNODATA        = Errno(1159)\n\tENOREUSE           = Errno(1160)\n\tENOMOVE            = Errno(1161)\n)\n\n// Signals\nconst (\n\tSIGHUP    = Signal(1)\n\tSIGINT    = Signal(2)\n\tSIGABRT   = Signal(3)\n\tSIGILL    = Signal(4)\n\tSIGPOLL   = Signal(5)\n\tSIGURG    = Signal(6)\n\tSIGSTOP   = Signal(7)\n\tSIGFPE    = Signal(8)\n\tSIGKILL   = Signal(9)\n\tSIGBUS    = Signal(10)\n\tSIGSEGV   = Signal(11)\n\tSIGSYS    = Signal(12)\n\tSIGPIPE   = Signal(13)\n\tSIGALRM   = Signal(14)\n\tSIGTERM   = Signal(15)\n\tSIGUSR1   = Signal(16)\n\tSIGUSR2   = Signal(17)\n\tSIGABND   = Signal(18)\n\tSIGCONT   = Signal(19)\n\tSIGCHLD   = Signal(20)\n\tSIGTTIN   = Signal(21)\n\tSIGTTOU   = Signal(22)\n\tSIGIO     = Signal(23)\n\tSIGQUIT   = Signal(24)\n\tSIGTSTP   = Signal(25)\n\tSIGTRAP   = Signal(26)\n\tSIGIOERR  = Signal(27)\n\tSIGWINCH  = Signal(28)\n\tSIGXCPU   = Signal(29)\n\tSIGXFSZ   = Signal(30)\n\tSIGVTALRM = Signal(31)\n\tSIGPROF   = Signal(32)\n\tSIGDANGER = Signal(33)\n\tSIGTHSTOP = Signal(34)\n\tSIGTHCONT = Signal(35)\n\tSIGTRACE  = Signal(37)\n\tSIGDCE    = Signal(38)\n\tSIGDUMP   = Signal(39)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EDC5001I\", \"A domain error occurred.\"},\n\t{2, \"EDC5002I\", \"A range error occurred.\"},\n\t{111, \"EDC5111I\", \"Permission denied.\"},\n\t{112, \"EDC5112I\", \"Resource temporarily unavailable.\"},\n\t{113, \"EDC5113I\", \"Bad file descriptor.\"},\n\t{114, \"EDC5114I\", \"Resource busy.\"},\n\t{115, \"EDC5115I\", \"No child processes.\"},\n\t{116, \"EDC5116I\", \"Resource deadlock avoided.\"},\n\t{117, \"EDC5117I\", \"File exists.\"},\n\t{118, \"EDC5118I\", \"Incorrect address.\"},\n\t{119, \"EDC5119I\", \"File too large.\"},\n\t{120, \"EDC5120I\", \"Interrupted function call.\"},\n\t{121, \"EDC5121I\", \"Invalid argument.\"},\n\t{122, \"EDC5122I\", \"Input/output error.\"},\n\t{123, \"EDC5123I\", \"Is a directory.\"},\n\t{124, \"EDC5124I\", \"Too many open files.\"},\n\t{125, \"EDC5125I\", \"Too many links.\"},\n\t{126, \"EDC5126I\", \"Filename too long.\"},\n\t{127, \"EDC5127I\", \"Too many open files in system.\"},\n\t{128, \"EDC5128I\", \"No such device.\"},\n\t{129, \"EDC5129I\", \"No such file or directory.\"},\n\t{130, \"EDC5130I\", \"Exec format error.\"},\n\t{131, \"EDC5131I\", \"No locks available.\"},\n\t{132, \"EDC5132I\", \"Not enough memory.\"},\n\t{133, \"EDC5133I\", \"No space left on device.\"},\n\t{134, \"EDC5134I\", \"Function not implemented.\"},\n\t{135, \"EDC5135I\", \"Not a directory.\"},\n\t{136, \"EDC5136I\", \"Directory not empty.\"},\n\t{137, \"EDC5137I\", \"Inappropriate I/O control operation.\"},\n\t{138, \"EDC5138I\", \"No such device or address.\"},\n\t{139, \"EDC5139I\", \"Operation not permitted.\"},\n\t{140, \"EDC5140I\", \"Broken pipe.\"},\n\t{141, \"EDC5141I\", \"Read-only file system.\"},\n\t{142, \"EDC5142I\", \"Invalid seek.\"},\n\t{143, \"EDC5143I\", \"No such process.\"},\n\t{144, \"EDC5144I\", \"Improper link.\"},\n\t{145, \"EDC5145I\", \"The parameter list is too long, or the message to receive was too large for the buffer.\"},\n\t{146, \"EDC5146I\", \"Too many levels of symbolic links.\"},\n\t{147, \"EDC5147I\", \"Illegal byte sequence.\"},\n\t{148, \"EDC5148I\", \"The named attribute or data not available.\"},\n\t{149, \"EDC5149I\", \"Value Overflow Error.\"},\n\t{150, \"EDC5150I\", \"UNIX System Services is not active.\"},\n\t{151, \"EDC5151I\", \"Dynamic allocation error.\"},\n\t{152, \"EDC5152I\", \"Common VTOC access facility (CVAF) error.\"},\n\t{153, \"EDC5153I\", \"Catalog obtain error.\"},\n\t{156, \"EDC5156I\", \"Process initialization error.\"},\n\t{157, \"EDC5157I\", \"An internal error has occurred.\"},\n\t{158, \"EDC5158I\", \"Bad parameters were passed to the service.\"},\n\t{159, \"EDC5159I\", \"The Physical File System encountered a permanent file error.\"},\n\t{160, \"EDC5160I\", \"Bad character in environment variable name.\"},\n\t{162, \"EDC5162I\", \"The Physical File System encountered a system error.\"},\n\t{163, \"EDC5163I\", \"SAF/RACF extract error.\"},\n\t{164, \"EDC5164I\", \"SAF/RACF error.\"},\n\t{165, \"EDC5165I\", \"System TOD clock not set.\"},\n\t{166, \"EDC5166I\", \"Access mode argument on function call conflicts with PATHOPTS parameter on JCL DD statement.\"},\n\t{167, \"EDC5167I\", \"Access to the UNIX System Services version of the C RTL is denied.\"},\n\t{168, \"EDC5168I\", \"Password has expired.\"},\n\t{169, \"EDC5169I\", \"Password is invalid.\"},\n\t{170, \"EDC5170I\", \"An error was encountered with WLM.\"},\n\t{171, \"EDC5171I\", \"An error was encountered with CPL.\"},\n\t{172, \"EDC5172I\", \"An error was encountered with Application Response Measurement (ARM) component.\"},\n\t{200, \"EDC5200I\", \"The application contains a Language Environment member language that cannot tolerate a fork().\"},\n\t{201, \"EDC5201I\", \"The Language Environment message file was not found in the hierarchical file system.\"},\n\t{202, \"EDC5202E\", \"DLL facilities are not supported under SPC environment.\"},\n\t{203, \"EDC5203E\", \"DLL facilities are not supported under POSIX environment.\"},\n\t{227, \"EDC5227I\", \"Buffer is not long enough to contain a path definition\"},\n\t{228, \"EDC5228I\", \"The file referred to is an external link\"},\n\t{229, \"EDC5229I\", \"No path definition for ddname in effect\"},\n\t{230, \"EDC5230I\", \"ESM error.\"},\n\t{231, \"EDC5231I\", \"CP or the external security manager had an error\"},\n\t{232, \"EDC5232I\", \"The function failed because it was invoked from a multithread environment.\"},\n\t{244, \"EDC5244I\", \"The program, module or DLL is not supported in this environment.\"},\n\t{245, \"EDC5245I\", \"Data is not valid.\"},\n\t{246, \"EDC5246I\", \"Unknown system state.\"},\n\t{247, \"EDC5247I\", \"Operation not supported.\"},\n\t{248, \"EDC5248I\", \"The object name specified is not correct.\"},\n\t{249, \"EDC5249I\", \"The function is not allowed.\"},\n\t{257, \"EDC5257I\", \"Function cannot be called in the child process of a fork() from a multithreaded process until exec() is called.\"},\n\t{258, \"EDC5258I\", \"A CUN_RS_NO_UNI_ENV error was issued by Unicode Services.\"},\n\t{259, \"EDC5259I\", \"A CUN_RS_NO_CONVERSION error was issued by Unicode Services.\"},\n\t{260, \"EDC5260I\", \"A CUN_RS_TABLE_NOT_ALIGNED error was issued by Unicode Services.\"},\n\t{262, \"EDC5262I\", \"An iconv() function encountered an unexpected error while using Unicode Services.\"},\n\t{265, \"EDC5265I\", \"The named attribute not available.\"},\n\t{1000, \"EDC8000I\", \"A bad socket-call constant was found in the IUCV header.\"},\n\t{1001, \"EDC8001I\", \"An error was found in the IUCV header.\"},\n\t{1002, \"EDC8002I\", \"A socket descriptor is out of range.\"},\n\t{1003, \"EDC8003I\", \"A socket descriptor is in use.\"},\n\t{1004, \"EDC8004I\", \"Request failed because of an IUCV error.\"},\n\t{1005, \"EDC8005I\", \"Offload box error.\"},\n\t{1006, \"EDC8006I\", \"Offload box restarted.\"},\n\t{1007, \"EDC8007I\", \"Offload box down.\"},\n\t{1008, \"EDC8008I\", \"Already a conflicting call outstanding on socket.\"},\n\t{1009, \"EDC8009I\", \"Request cancelled using a SOCKcallCANCEL request.\"},\n\t{1011, \"EDC8011I\", \"A name of a PFS was specified that either is not configured or is not a Sockets PFS.\"},\n\t{1100, \"EDC8100I\", \"Block device required.\"},\n\t{1101, \"EDC8101I\", \"Text file busy.\"},\n\t{1102, \"EDC8102I\", \"Operation would block.\"},\n\t{1103, \"EDC8103I\", \"Operation now in progress.\"},\n\t{1104, \"EDC8104I\", \"Connection already in progress.\"},\n\t{1105, \"EDC8105I\", \"Socket operation on non-socket.\"},\n\t{1106, \"EDC8106I\", \"Destination address required.\"},\n\t{1107, \"EDC8107I\", \"Message too long.\"},\n\t{1108, \"EDC8108I\", \"Protocol wrong type for socket.\"},\n\t{1109, \"EDC8109I\", \"Protocol not available.\"},\n\t{1110, \"EDC8110I\", \"Protocol not supported.\"},\n\t{1111, \"EDC8111I\", \"Socket type not supported.\"},\n\t{1112, \"EDC8112I\", \"Operation not supported on socket.\"},\n\t{1113, \"EDC8113I\", \"Protocol family not supported.\"},\n\t{1114, \"EDC8114I\", \"Address family not supported.\"},\n\t{1115, \"EDC8115I\", \"Address already in use.\"},\n\t{1116, \"EDC8116I\", \"Address not available.\"},\n\t{1117, \"EDC8117I\", \"Network is down.\"},\n\t{1118, \"EDC8118I\", \"Network is unreachable.\"},\n\t{1119, \"EDC8119I\", \"Network dropped connection on reset.\"},\n\t{1120, \"EDC8120I\", \"Connection ended abnormally.\"},\n\t{1121, \"EDC8121I\", \"Connection reset.\"},\n\t{1122, \"EDC8122I\", \"No buffer space available.\"},\n\t{1123, \"EDC8123I\", \"Socket already connected.\"},\n\t{1124, \"EDC8124I\", \"Socket not connected.\"},\n\t{1125, \"EDC8125I\", \"Can't send after socket shutdown.\"},\n\t{1126, \"EDC8126I\", \"Too many references; can't splice.\"},\n\t{1127, \"EDC8127I\", \"Connection timed out.\"},\n\t{1128, \"EDC8128I\", \"Connection refused.\"},\n\t{1129, \"EDC8129I\", \"Host is not available.\"},\n\t{1130, \"EDC8130I\", \"Host cannot be reached.\"},\n\t{1131, \"EDC8131I\", \"Too many processes.\"},\n\t{1132, \"EDC8132I\", \"Too many users.\"},\n\t{1133, \"EDC8133I\", \"Disk quota exceeded.\"},\n\t{1134, \"EDC8134I\", \"Stale file handle.\"},\n\t{1135, \"\", \"\"},\n\t{1136, \"EDC8136I\", \"File is not a STREAM.\"},\n\t{1137, \"EDC8137I\", \"STREAMS ioctl() timeout.\"},\n\t{1138, \"EDC8138I\", \"No STREAMS resources.\"},\n\t{1139, \"EDC8139I\", \"The message identified by set_id and msg_id is not in the message catalog.\"},\n\t{1140, \"EDC8140I\", \"Bad message.\"},\n\t{1141, \"EDC8141I\", \"Identifier removed.\"},\n\t{1142, \"\", \"\"},\n\t{1143, \"\", \"\"},\n\t{1144, \"EDC8144I\", \"The link has been severed.\"},\n\t{1145, \"\", \"\"},\n\t{1146, \"\", \"\"},\n\t{1147, \"\", \"\"},\n\t{1148, \"EDC8148I\", \"Protocol error.\"},\n\t{1149, \"EDC8149I\", \"Multihop not allowed.\"},\n\t{1150, \"\", \"\"},\n\t{1151, \"\", \"\"},\n\t{1152, \"EDC8152I\", \"The asynchronous I/O request has been canceled.\"},\n\t{1159, \"EDC8159I\", \"Function call was interrupted before any data was received.\"},\n\t{1160, \"EDC8160I\", \"Socket reuse is not supported.\"},\n\t{1161, \"EDC8161I\", \"The file system cannot currently be moved.\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGABT\", \"aborted\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGPOLL\", \"pollable event\"},\n\t{6, \"SIGURG\", \"urgent I/O condition\"},\n\t{7, \"SIGSTOP\", \"stop process\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad argument to routine\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGUSR1\", \"user defined signal 1\"},\n\t{17, \"SIGUSR2\", \"user defined signal 2\"},\n\t{18, \"SIGABND\", \"abend\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGQUIT\", \"quit\"},\n\t{25, \"SIGTSTP\", \"stopped\"},\n\t{26, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{27, \"SIGIOER\", \"I/O error\"},\n\t{28, \"SIGWINCH\", \"window changed\"},\n\t{29, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{30, \"SIGXFSZ\", \"file size limit exceeded\"},\n\t{31, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{32, \"SIGPROF\", \"profiling timer expired\"},\n\t{33, \"SIGDANGER\", \"danger\"},\n\t{34, \"SIGTHSTOP\", \"stop thread\"},\n\t{35, \"SIGTHCONT\", \"continue thread\"},\n\t{37, \"SIGTRACE\", \"trace\"},\n\t{38, \"\", \"DCE\"},\n\t{39, \"SIGDUMP\", \"dump\"},\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zptrace_armnn_linux.go",
    "content": "// Code generated by linux/mkall.go generatePtracePair(\"arm\", \"arm64\"). DO NOT EDIT.\n\n//go:build linux && (arm || arm64)\n\npackage unix\n\nimport \"unsafe\"\n\n// PtraceRegsArm is the registers used by arm binaries.\ntype PtraceRegsArm struct {\n\tUregs [18]uint32\n}\n\n// PtraceGetRegsArm fetches the registers used by arm binaries.\nfunc PtraceGetRegsArm(pid int, regsout *PtraceRegsArm) error {\n\treturn ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout))\n}\n\n// PtraceSetRegsArm sets the registers used by arm binaries.\nfunc PtraceSetRegsArm(pid int, regs *PtraceRegsArm) error {\n\treturn ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs))\n}\n\n// PtraceRegsArm64 is the registers used by arm64 binaries.\ntype PtraceRegsArm64 struct {\n\tRegs   [31]uint64\n\tSp     uint64\n\tPc     uint64\n\tPstate uint64\n}\n\n// PtraceGetRegsArm64 fetches the registers used by arm64 binaries.\nfunc PtraceGetRegsArm64(pid int, regsout *PtraceRegsArm64) error {\n\treturn ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout))\n}\n\n// PtraceSetRegsArm64 sets the registers used by arm64 binaries.\nfunc PtraceSetRegsArm64(pid int, regs *PtraceRegsArm64) error {\n\treturn ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs))\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zptrace_linux_arm64.go",
    "content": "// Code generated by linux/mkall.go generatePtraceRegSet(\"arm64\"). DO NOT EDIT.\n\npackage unix\n\nimport \"unsafe\"\n\n// PtraceGetRegSetArm64 fetches the registers used by arm64 binaries.\nfunc PtraceGetRegSetArm64(pid, addr int, regsout *PtraceRegsArm64) error {\n\tiovec := Iovec{(*byte)(unsafe.Pointer(regsout)), uint64(unsafe.Sizeof(*regsout))}\n\treturn ptracePtr(PTRACE_GETREGSET, pid, uintptr(addr), unsafe.Pointer(&iovec))\n}\n\n// PtraceSetRegSetArm64 sets the registers used by arm64 binaries.\nfunc PtraceSetRegSetArm64(pid, addr int, regs *PtraceRegsArm64) error {\n\tiovec := Iovec{(*byte)(unsafe.Pointer(regs)), uint64(unsafe.Sizeof(*regs))}\n\treturn ptracePtr(PTRACE_SETREGSET, pid, uintptr(addr), unsafe.Pointer(&iovec))\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zptrace_mipsnn_linux.go",
    "content": "// Code generated by linux/mkall.go generatePtracePair(\"mips\", \"mips64\"). DO NOT EDIT.\n\n//go:build linux && (mips || mips64)\n\npackage unix\n\nimport \"unsafe\"\n\n// PtraceRegsMips is the registers used by mips binaries.\ntype PtraceRegsMips struct {\n\tRegs     [32]uint64\n\tLo       uint64\n\tHi       uint64\n\tEpc      uint64\n\tBadvaddr uint64\n\tStatus   uint64\n\tCause    uint64\n}\n\n// PtraceGetRegsMips fetches the registers used by mips binaries.\nfunc PtraceGetRegsMips(pid int, regsout *PtraceRegsMips) error {\n\treturn ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout))\n}\n\n// PtraceSetRegsMips sets the registers used by mips binaries.\nfunc PtraceSetRegsMips(pid int, regs *PtraceRegsMips) error {\n\treturn ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs))\n}\n\n// PtraceRegsMips64 is the registers used by mips64 binaries.\ntype PtraceRegsMips64 struct {\n\tRegs     [32]uint64\n\tLo       uint64\n\tHi       uint64\n\tEpc      uint64\n\tBadvaddr uint64\n\tStatus   uint64\n\tCause    uint64\n}\n\n// PtraceGetRegsMips64 fetches the registers used by mips64 binaries.\nfunc PtraceGetRegsMips64(pid int, regsout *PtraceRegsMips64) error {\n\treturn ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout))\n}\n\n// PtraceSetRegsMips64 sets the registers used by mips64 binaries.\nfunc PtraceSetRegsMips64(pid int, regs *PtraceRegsMips64) error {\n\treturn ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs))\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zptrace_mipsnnle_linux.go",
    "content": "// Code generated by linux/mkall.go generatePtracePair(\"mipsle\", \"mips64le\"). DO NOT EDIT.\n\n//go:build linux && (mipsle || mips64le)\n\npackage unix\n\nimport \"unsafe\"\n\n// PtraceRegsMipsle is the registers used by mipsle binaries.\ntype PtraceRegsMipsle struct {\n\tRegs     [32]uint64\n\tLo       uint64\n\tHi       uint64\n\tEpc      uint64\n\tBadvaddr uint64\n\tStatus   uint64\n\tCause    uint64\n}\n\n// PtraceGetRegsMipsle fetches the registers used by mipsle binaries.\nfunc PtraceGetRegsMipsle(pid int, regsout *PtraceRegsMipsle) error {\n\treturn ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout))\n}\n\n// PtraceSetRegsMipsle sets the registers used by mipsle binaries.\nfunc PtraceSetRegsMipsle(pid int, regs *PtraceRegsMipsle) error {\n\treturn ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs))\n}\n\n// PtraceRegsMips64le is the registers used by mips64le binaries.\ntype PtraceRegsMips64le struct {\n\tRegs     [32]uint64\n\tLo       uint64\n\tHi       uint64\n\tEpc      uint64\n\tBadvaddr uint64\n\tStatus   uint64\n\tCause    uint64\n}\n\n// PtraceGetRegsMips64le fetches the registers used by mips64le binaries.\nfunc PtraceGetRegsMips64le(pid int, regsout *PtraceRegsMips64le) error {\n\treturn ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout))\n}\n\n// PtraceSetRegsMips64le sets the registers used by mips64le binaries.\nfunc PtraceSetRegsMips64le(pid int, regs *PtraceRegsMips64le) error {\n\treturn ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs))\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zptrace_x86_linux.go",
    "content": "// Code generated by linux/mkall.go generatePtracePair(\"386\", \"amd64\"). DO NOT EDIT.\n\n//go:build linux && (386 || amd64)\n\npackage unix\n\nimport \"unsafe\"\n\n// PtraceRegs386 is the registers used by 386 binaries.\ntype PtraceRegs386 struct {\n\tEbx      int32\n\tEcx      int32\n\tEdx      int32\n\tEsi      int32\n\tEdi      int32\n\tEbp      int32\n\tEax      int32\n\tXds      int32\n\tXes      int32\n\tXfs      int32\n\tXgs      int32\n\tOrig_eax int32\n\tEip      int32\n\tXcs      int32\n\tEflags   int32\n\tEsp      int32\n\tXss      int32\n}\n\n// PtraceGetRegs386 fetches the registers used by 386 binaries.\nfunc PtraceGetRegs386(pid int, regsout *PtraceRegs386) error {\n\treturn ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout))\n}\n\n// PtraceSetRegs386 sets the registers used by 386 binaries.\nfunc PtraceSetRegs386(pid int, regs *PtraceRegs386) error {\n\treturn ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs))\n}\n\n// PtraceRegsAmd64 is the registers used by amd64 binaries.\ntype PtraceRegsAmd64 struct {\n\tR15      uint64\n\tR14      uint64\n\tR13      uint64\n\tR12      uint64\n\tRbp      uint64\n\tRbx      uint64\n\tR11      uint64\n\tR10      uint64\n\tR9       uint64\n\tR8       uint64\n\tRax      uint64\n\tRcx      uint64\n\tRdx      uint64\n\tRsi      uint64\n\tRdi      uint64\n\tOrig_rax uint64\n\tRip      uint64\n\tCs       uint64\n\tEflags   uint64\n\tRsp      uint64\n\tSs       uint64\n\tFs_base  uint64\n\tGs_base  uint64\n\tDs       uint64\n\tEs       uint64\n\tFs       uint64\n\tGs       uint64\n}\n\n// PtraceGetRegsAmd64 fetches the registers used by amd64 binaries.\nfunc PtraceGetRegsAmd64(pid int, regsout *PtraceRegsAmd64) error {\n\treturn ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout))\n}\n\n// PtraceSetRegsAmd64 sets the registers used by amd64 binaries.\nfunc PtraceSetRegsAmd64(pid int, regs *PtraceRegsAmd64) error {\n\treturn ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs))\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsymaddr_zos_s390x.s",
    "content": "// go run mksyscall_zos_s390x.go -o_sysnum zsysnum_zos_s390x.go -o_syscall zsyscall_zos_s390x.go -i_syscall syscall_zos_s390x.go -o_asm zsymaddr_zos_s390x.s\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build zos && s390x\n#include \"textflag.h\"\n\n//  provide the address of function variable to be fixed up.\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_FlistxattrAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Flistxattr(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_FremovexattrAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Fremovexattr(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_FgetxattrAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Fgetxattr(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_FsetxattrAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Fsetxattr(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_accept4Addr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·accept4(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_RemovexattrAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Removexattr(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_Dup3Addr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Dup3(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_DirfdAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Dirfd(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_EpollCreateAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·EpollCreate(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_EpollCreate1Addr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·EpollCreate1(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_EpollCtlAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·EpollCtl(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_EpollPwaitAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·EpollPwait(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_EpollWaitAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·EpollWait(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_EventfdAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Eventfd(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_FaccessatAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Faccessat(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_FchmodatAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Fchmodat(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_FchownatAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Fchownat(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_FdatasyncAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Fdatasync(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_fstatatAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·fstatat(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_LgetxattrAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Lgetxattr(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_LsetxattrAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Lsetxattr(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_FstatfsAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Fstatfs(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_FutimesAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Futimes(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_FutimesatAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Futimesat(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_GetrandomAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Getrandom(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_InotifyInitAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·InotifyInit(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_InotifyInit1Addr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·InotifyInit1(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_InotifyAddWatchAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·InotifyAddWatch(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_InotifyRmWatchAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·InotifyRmWatch(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_ListxattrAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Listxattr(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_LlistxattrAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Llistxattr(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_LremovexattrAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Lremovexattr(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_LutimesAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Lutimes(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_StatfsAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Statfs(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_SyncfsAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Syncfs(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_UnshareAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Unshare(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_LinkatAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Linkat(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_MkdiratAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Mkdirat(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_MknodatAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Mknodat(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_PivotRootAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·PivotRoot(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_PrctlAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Prctl(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_PrlimitAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Prlimit(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_RenameatAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Renameat(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_Renameat2Addr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Renameat2(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_SethostnameAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Sethostname(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_SetnsAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Setns(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_SymlinkatAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Symlinkat(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_UnlinkatAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Unlinkat(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_openatAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·openat(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_openat2Addr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·openat2(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_utimensatAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·utimensat(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go",
    "content": "// go run mksyscall_aix_ppc.go -aix -tags aix,ppc syscall_aix.go syscall_aix_ppc.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build aix && ppc\n\npackage unix\n\n/*\n#include <stdint.h>\n#include <stddef.h>\nint utimes(uintptr_t, uintptr_t);\nint utimensat(int, uintptr_t, uintptr_t, int);\nint getcwd(uintptr_t, size_t);\nint accept(int, uintptr_t, uintptr_t);\nint getdirent(int, uintptr_t, size_t);\nint wait4(int, uintptr_t, int, uintptr_t);\nint ioctl(int, int, uintptr_t);\nint fcntl(uintptr_t, int, uintptr_t);\nint fsync_range(int, int, long long, long long);\nint acct(uintptr_t);\nint chdir(uintptr_t);\nint chroot(uintptr_t);\nint close(int);\nint dup(int);\nvoid exit(int);\nint faccessat(int, uintptr_t, unsigned int, int);\nint fchdir(int);\nint fchmod(int, unsigned int);\nint fchmodat(int, uintptr_t, unsigned int, int);\nint fchownat(int, uintptr_t, int, int, int);\nint fdatasync(int);\nint getpgid(int);\nint getpgrp();\nint getpid();\nint getppid();\nint getpriority(int, int);\nint getrusage(int, uintptr_t);\nint getsid(int);\nint kill(int, int);\nint syslog(int, uintptr_t, size_t);\nint mkdir(int, uintptr_t, unsigned int);\nint mkdirat(int, uintptr_t, unsigned int);\nint mkfifo(uintptr_t, unsigned int);\nint mknod(uintptr_t, unsigned int, int);\nint mknodat(int, uintptr_t, unsigned int, int);\nint nanosleep(uintptr_t, uintptr_t);\nint open64(uintptr_t, int, unsigned int);\nint openat(int, uintptr_t, int, unsigned int);\nint read(int, uintptr_t, size_t);\nint readlink(uintptr_t, uintptr_t, size_t);\nint renameat(int, uintptr_t, int, uintptr_t);\nint setdomainname(uintptr_t, size_t);\nint sethostname(uintptr_t, size_t);\nint setpgid(int, int);\nint setsid();\nint settimeofday(uintptr_t);\nint setuid(int);\nint setgid(int);\nint setpriority(int, int, int);\nint statx(int, uintptr_t, int, int, uintptr_t);\nint sync();\nuintptr_t times(uintptr_t);\nint umask(int);\nint uname(uintptr_t);\nint unlink(uintptr_t);\nint unlinkat(int, uintptr_t, int);\nint ustat(int, uintptr_t);\nint write(int, uintptr_t, size_t);\nint dup2(int, int);\nint posix_fadvise64(int, long long, long long, int);\nint fchown(int, int, int);\nint fstat(int, uintptr_t);\nint fstatat(int, uintptr_t, uintptr_t, int);\nint fstatfs(int, uintptr_t);\nint ftruncate(int, long long);\nint getegid();\nint geteuid();\nint getgid();\nint getuid();\nint lchown(uintptr_t, int, int);\nint listen(int, int);\nint lstat(uintptr_t, uintptr_t);\nint pause();\nint pread64(int, uintptr_t, size_t, long long);\nint pwrite64(int, uintptr_t, size_t, long long);\n#define c_select select\nint select(int, uintptr_t, uintptr_t, uintptr_t, uintptr_t);\nint pselect(int, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t);\nint setregid(int, int);\nint setreuid(int, int);\nint shutdown(int, int);\nlong long splice(int, uintptr_t, int, uintptr_t, int, int);\nint stat(uintptr_t, uintptr_t);\nint statfs(uintptr_t, uintptr_t);\nint truncate(uintptr_t, long long);\nint bind(int, uintptr_t, uintptr_t);\nint connect(int, uintptr_t, uintptr_t);\nint getgroups(int, uintptr_t);\nint setgroups(int, uintptr_t);\nint getsockopt(int, int, int, uintptr_t, uintptr_t);\nint setsockopt(int, int, int, uintptr_t, uintptr_t);\nint socket(int, int, int);\nint socketpair(int, int, int, uintptr_t);\nint getpeername(int, uintptr_t, uintptr_t);\nint getsockname(int, uintptr_t, uintptr_t);\nint recvfrom(int, uintptr_t, size_t, int, uintptr_t, uintptr_t);\nint sendto(int, uintptr_t, size_t, int, uintptr_t, uintptr_t);\nint nrecvmsg(int, uintptr_t, int);\nint nsendmsg(int, uintptr_t, int);\nint munmap(uintptr_t, uintptr_t);\nint madvise(uintptr_t, size_t, int);\nint mprotect(uintptr_t, size_t, int);\nint mlock(uintptr_t, size_t);\nint mlockall(int);\nint msync(uintptr_t, size_t, int);\nint munlock(uintptr_t, size_t);\nint munlockall();\nint pipe(uintptr_t);\nint poll(uintptr_t, int, int);\nint gettimeofday(uintptr_t, uintptr_t);\nint time(uintptr_t);\nint utime(uintptr_t, uintptr_t);\nunsigned long long getsystemcfg(int);\nint umount(uintptr_t);\nint getrlimit64(int, uintptr_t);\nlong long lseek64(int, long long, int);\nuintptr_t mmap(uintptr_t, uintptr_t, int, int, int, long long);\n\n*/\nimport \"C\"\nimport (\n\t\"unsafe\"\n)\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.utimes(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(times))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flag int) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.utimensat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(times))), C.int(flag))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getcwd(buf []byte) (err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(buf)\n\tr0, er := C.getcwd(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, er := C.accept(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(rsa))), C.uintptr_t(uintptr(unsafe.Pointer(addrlen))))\n\tfd = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getdirent(fd int, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(buf)\n\tr0, er := C.getdirent(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid Pid_t, status *_C_int, options int, rusage *Rusage) (wpid Pid_t, err error) {\n\tr0, er := C.wait4(C.int(pid), C.uintptr_t(uintptr(unsafe.Pointer(status))), C.int(options), C.uintptr_t(uintptr(unsafe.Pointer(rusage))))\n\twpid = Pid_t(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req int, arg uintptr) (err error) {\n\tr0, er := C.ioctl(C.int(fd), C.int(req), C.uintptr_t(arg))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req int, arg unsafe.Pointer) (err error) {\n\tr0, er := C.ioctl(C.int(fd), C.int(req), C.uintptr_t(uintptr(arg)))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc FcntlInt(fd uintptr, cmd int, arg int) (r int, err error) {\n\tr0, er := C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(arg))\n\tr = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc FcntlFlock(fd uintptr, cmd int, lk *Flock_t) (err error) {\n\tr0, er := C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(uintptr(unsafe.Pointer(lk))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (val int, err error) {\n\tr0, er := C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(arg))\n\tval = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fsyncRange(fd int, how int, start int64, length int64) (err error) {\n\tr0, er := C.fsync_range(C.int(fd), C.int(how), C.longlong(start), C.longlong(length))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Acct(path string) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.acct(C.uintptr_t(_p0))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.chdir(C.uintptr_t(_p0))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.chroot(C.uintptr_t(_p0))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\tr0, er := C.close(C.int(fd))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(oldfd int) (fd int, err error) {\n\tr0, er := C.dup(C.int(oldfd))\n\tfd = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tC.exit(C.int(code))\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.faccessat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(flags))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\tr0, er := C.fchdir(C.int(fd))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\tr0, er := C.fchmod(C.int(fd), C.uint(mode))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.fchmodat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(flags))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.fchownat(C.int(dirfd), C.uintptr_t(_p0), C.int(uid), C.int(gid), C.int(flags))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fdatasync(fd int) (err error) {\n\tr0, er := C.fdatasync(C.int(fd))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, er := C.getpgid(C.int(pid))\n\tpgid = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pid int) {\n\tr0, _ := C.getpgrp()\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _ := C.getpid()\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _ := C.getppid()\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, er := C.getpriority(C.int(which), C.int(who))\n\tprio = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\tr0, er := C.getrusage(C.int(who), C.uintptr_t(uintptr(unsafe.Pointer(rusage))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, er := C.getsid(C.int(pid))\n\tsid = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, sig Signal) (err error) {\n\tr0, er := C.kill(C.int(pid), C.int(sig))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Klogctl(typ int, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(buf)\n\tr0, er := C.syslog(C.int(typ), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(dirfd int, path string, mode uint32) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.mkdir(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.mkdirat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.mkfifo(C.uintptr_t(_p0), C.uint(mode))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.mknod(C.uintptr_t(_p0), C.uint(mode), C.int(dev))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.mknodat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(dev))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\tr0, er := C.nanosleep(C.uintptr_t(uintptr(unsafe.Pointer(time))), C.uintptr_t(uintptr(unsafe.Pointer(leftover))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.open64(C.uintptr_t(_p0), C.int(mode), C.uint(perm))\n\tfd = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.openat(C.int(dirfd), C.uintptr_t(_p0), C.int(flags), C.uint(mode))\n\tfd = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(p)\n\tr0, er := C.read(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tvar _p1 *byte\n\tif len(buf) > 0 {\n\t\t_p1 = &buf[0]\n\t}\n\tvar _p2 int\n\t_p2 = len(buf)\n\tr0, er := C.readlink(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(_p1))), C.size_t(_p2))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(oldpath)))\n\t_p1 := uintptr(unsafe.Pointer(C.CString(newpath)))\n\tr0, er := C.renameat(C.int(olddirfd), C.uintptr_t(_p0), C.int(newdirfd), C.uintptr_t(_p1))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setdomainname(p []byte) (err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(p)\n\tr0, er := C.setdomainname(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sethostname(p []byte) (err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(p)\n\tr0, er := C.sethostname(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\tr0, er := C.setpgid(C.int(pid), C.int(pgid))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, er := C.setsid()\n\tpid = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tv *Timeval) (err error) {\n\tr0, er := C.settimeofday(C.uintptr_t(uintptr(unsafe.Pointer(tv))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\tr0, er := C.setuid(C.int(uid))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(uid int) (err error) {\n\tr0, er := C.setgid(C.int(uid))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\tr0, er := C.setpriority(C.int(which), C.int(who), C.int(prio))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.statx(C.int(dirfd), C.uintptr_t(_p0), C.int(flags), C.int(mask), C.uintptr_t(uintptr(unsafe.Pointer(stat))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() {\n\tC.sync()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Times(tms *Tms) (ticks uintptr, err error) {\n\tr0, er := C.times(C.uintptr_t(uintptr(unsafe.Pointer(tms))))\n\tticks = uintptr(r0)\n\tif uintptr(r0) == ^uintptr(0) && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(mask int) (oldmask int) {\n\tr0, _ := C.umask(C.int(mask))\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Uname(buf *Utsname) (err error) {\n\tr0, er := C.uname(C.uintptr_t(uintptr(unsafe.Pointer(buf))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.unlink(C.uintptr_t(_p0))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.unlinkat(C.int(dirfd), C.uintptr_t(_p0), C.int(flags))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\tr0, er := C.ustat(C.int(dev), C.uintptr_t(uintptr(unsafe.Pointer(ubuf))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(p)\n\tr0, er := C.write(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(oldfd int, newfd int) (err error) {\n\tr0, er := C.dup2(C.int(oldfd), C.int(newfd))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\tr0, er := C.posix_fadvise64(C.int(fd), C.longlong(offset), C.longlong(length), C.int(advice))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\tr0, er := C.fchown(C.int(fd), C.int(uid), C.int(gid))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstat(fd int, stat *Stat_t) (err error) {\n\tr0, er := C.fstat(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(stat))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.fstatat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(stat))), C.int(flags))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\tr0, er := C.fstatfs(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(buf))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\tr0, er := C.ftruncate(C.int(fd), C.longlong(length))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := C.getegid()\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := C.geteuid()\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := C.getgid()\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := C.getuid()\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.lchown(C.uintptr_t(_p0), C.int(uid), C.int(gid))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\tr0, er := C.listen(C.int(s), C.int(n))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc lstat(path string, stat *Stat_t) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.lstat(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(stat))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\tr0, er := C.pause()\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(p)\n\tr0, er := C.pread64(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.longlong(offset))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(p)\n\tr0, er := C.pwrite64(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.longlong(offset))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, er := C.c_select(C.int(nfd), C.uintptr_t(uintptr(unsafe.Pointer(r))), C.uintptr_t(uintptr(unsafe.Pointer(w))), C.uintptr_t(uintptr(unsafe.Pointer(e))), C.uintptr_t(uintptr(unsafe.Pointer(timeout))))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, er := C.pselect(C.int(nfd), C.uintptr_t(uintptr(unsafe.Pointer(r))), C.uintptr_t(uintptr(unsafe.Pointer(w))), C.uintptr_t(uintptr(unsafe.Pointer(e))), C.uintptr_t(uintptr(unsafe.Pointer(timeout))), C.uintptr_t(uintptr(unsafe.Pointer(sigmask))))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\tr0, er := C.setregid(C.int(rgid), C.int(egid))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\tr0, er := C.setreuid(C.int(ruid), C.int(euid))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\tr0, er := C.shutdown(C.int(fd), C.int(how))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, er := C.splice(C.int(rfd), C.uintptr_t(uintptr(unsafe.Pointer(roff))), C.int(wfd), C.uintptr_t(uintptr(unsafe.Pointer(woff))), C.int(len), C.int(flags))\n\tn = int64(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc stat(path string, statptr *Stat_t) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.stat(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(statptr))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.statfs(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(buf))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.truncate(C.uintptr_t(_p0), C.longlong(length))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\tr0, er := C.bind(C.int(s), C.uintptr_t(uintptr(addr)), C.uintptr_t(uintptr(addrlen)))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\tr0, er := C.connect(C.int(s), C.uintptr_t(uintptr(addr)), C.uintptr_t(uintptr(addrlen)))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, er := C.getgroups(C.int(n), C.uintptr_t(uintptr(unsafe.Pointer(list))))\n\tnn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\tr0, er := C.setgroups(C.int(n), C.uintptr_t(uintptr(unsafe.Pointer(list))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\tr0, er := C.getsockopt(C.int(s), C.int(level), C.int(name), C.uintptr_t(uintptr(val)), C.uintptr_t(uintptr(unsafe.Pointer(vallen))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\tr0, er := C.setsockopt(C.int(s), C.int(level), C.int(name), C.uintptr_t(uintptr(val)), C.uintptr_t(vallen))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, er := C.socket(C.int(domain), C.int(typ), C.int(proto))\n\tfd = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\tr0, er := C.socketpair(C.int(domain), C.int(typ), C.int(proto), C.uintptr_t(uintptr(unsafe.Pointer(fd))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\tr0, er := C.getpeername(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(rsa))), C.uintptr_t(uintptr(unsafe.Pointer(addrlen))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\tr0, er := C.getsockname(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(rsa))), C.uintptr_t(uintptr(unsafe.Pointer(addrlen))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(p)\n\tr0, er := C.recvfrom(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(flags), C.uintptr_t(uintptr(unsafe.Pointer(from))), C.uintptr_t(uintptr(unsafe.Pointer(fromlen))))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(buf)\n\tr0, er := C.sendto(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(flags), C.uintptr_t(uintptr(to)), C.uintptr_t(uintptr(addrlen)))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, er := C.nrecvmsg(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(msg))), C.int(flags))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, er := C.nsendmsg(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(msg))), C.int(flags))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\tr0, er := C.munmap(C.uintptr_t(addr), C.uintptr_t(length))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, advice int) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(b)\n\tr0, er := C.madvise(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(advice))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(b)\n\tr0, er := C.mprotect(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(prot))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(b)\n\tr0, er := C.mlock(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\tr0, er := C.mlockall(C.int(flags))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(b)\n\tr0, er := C.msync(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(flags))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(b)\n\tr0, er := C.munlock(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\tr0, er := C.munlockall()\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe(p *[2]_C_int) (err error) {\n\tr0, er := C.pipe(C.uintptr_t(uintptr(unsafe.Pointer(p))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, er := C.poll(C.uintptr_t(uintptr(unsafe.Pointer(fds))), C.int(nfds), C.int(timeout))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc gettimeofday(tv *Timeval, tzp *Timezone) (err error) {\n\tr0, er := C.gettimeofday(C.uintptr_t(uintptr(unsafe.Pointer(tv))), C.uintptr_t(uintptr(unsafe.Pointer(tzp))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tr0, er := C.time(C.uintptr_t(uintptr(unsafe.Pointer(t))))\n\ttt = Time_t(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.utime(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(buf))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsystemcfg(label int) (n uint64) {\n\tr0, _ := C.getsystemcfg(C.int(label))\n\tn = uint64(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc umount(target string) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(target)))\n\tr0, er := C.umount(C.uintptr_t(_p0))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\tr0, er := C.getrlimit64(C.int(resource), C.uintptr_t(uintptr(unsafe.Pointer(rlim))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, er := C.lseek64(C.int(fd), C.longlong(offset), C.int(whence))\n\toff = int64(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, er := C.mmap(C.uintptr_t(addr), C.uintptr_t(length), C.int(prot), C.int(flags), C.int(fd), C.longlong(offset))\n\txaddr = uintptr(r0)\n\tif uintptr(r0) == ^uintptr(0) && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go",
    "content": "// go run mksyscall_aix_ppc64.go -aix -tags aix,ppc64 syscall_aix.go syscall_aix_ppc64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build aix && ppc64\n\npackage unix\n\nimport (\n\t\"unsafe\"\n)\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callutimes(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flag int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callutimensat(dirfd, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), flag)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getcwd(buf []byte) (err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\t_, e1 := callgetcwd(uintptr(unsafe.Pointer(_p0)), len(buf))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, e1 := callaccept(s, uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getdirent(fd int, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tr0, e1 := callgetdirent(fd, uintptr(unsafe.Pointer(_p0)), len(buf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid Pid_t, status *_C_int, options int, rusage *Rusage) (wpid Pid_t, err error) {\n\tr0, e1 := callwait4(int(pid), uintptr(unsafe.Pointer(status)), options, uintptr(unsafe.Pointer(rusage)))\n\twpid = Pid_t(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req int, arg uintptr) (err error) {\n\t_, e1 := callioctl(fd, req, arg)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req int, arg unsafe.Pointer) (err error) {\n\t_, e1 := callioctl_ptr(fd, req, arg)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc FcntlInt(fd uintptr, cmd int, arg int) (r int, err error) {\n\tr0, e1 := callfcntl(fd, cmd, uintptr(arg))\n\tr = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc FcntlFlock(fd uintptr, cmd int, lk *Flock_t) (err error) {\n\t_, e1 := callfcntl(fd, cmd, uintptr(unsafe.Pointer(lk)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (val int, err error) {\n\tr0, e1 := callfcntl(uintptr(fd), cmd, uintptr(arg))\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fsyncRange(fd int, how int, start int64, length int64) (err error) {\n\t_, e1 := callfsync_range(fd, how, start, length)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Acct(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callacct(uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callchdir(uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callchroot(uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, e1 := callclose(fd)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(oldfd int) (fd int, err error) {\n\tr0, e1 := calldup(oldfd)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tcallexit(code)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callfaccessat(dirfd, uintptr(unsafe.Pointer(_p0)), mode, flags)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, e1 := callfchdir(fd)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, e1 := callfchmod(fd, mode)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callfchmodat(dirfd, uintptr(unsafe.Pointer(_p0)), mode, flags)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callfchownat(dirfd, uintptr(unsafe.Pointer(_p0)), uid, gid, flags)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fdatasync(fd int) (err error) {\n\t_, e1 := callfdatasync(fd)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, e1 := callgetpgid(pid)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pid int) {\n\tr0, _ := callgetpgrp()\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _ := callgetpid()\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _ := callgetppid()\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, e1 := callgetpriority(which, who)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, e1 := callgetrusage(who, uintptr(unsafe.Pointer(rusage)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, e1 := callgetsid(pid)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, sig Signal) (err error) {\n\t_, e1 := callkill(pid, int(sig))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Klogctl(typ int, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tr0, e1 := callsyslog(typ, uintptr(unsafe.Pointer(_p0)), len(buf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callmkdir(dirfd, uintptr(unsafe.Pointer(_p0)), mode)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callmkdirat(dirfd, uintptr(unsafe.Pointer(_p0)), mode)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callmkfifo(uintptr(unsafe.Pointer(_p0)), mode)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callmknod(uintptr(unsafe.Pointer(_p0)), mode, dev)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callmknodat(dirfd, uintptr(unsafe.Pointer(_p0)), mode, dev)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, e1 := callnanosleep(uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, e1 := callopen64(uintptr(unsafe.Pointer(_p0)), mode, perm)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, e1 := callopenat(dirfd, uintptr(unsafe.Pointer(_p0)), flags, mode)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tr0, e1 := callread(fd, uintptr(unsafe.Pointer(_p0)), len(p))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\tif len(buf) > 0 {\n\t\t_p1 = &buf[0]\n\t}\n\tr0, e1 := callreadlink(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), len(buf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callrenameat(olddirfd, uintptr(unsafe.Pointer(_p0)), newdirfd, uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setdomainname(p []byte) (err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\t_, e1 := callsetdomainname(uintptr(unsafe.Pointer(_p0)), len(p))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sethostname(p []byte) (err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\t_, e1 := callsethostname(uintptr(unsafe.Pointer(_p0)), len(p))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, e1 := callsetpgid(pid, pgid)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, e1 := callsetsid()\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tv *Timeval) (err error) {\n\t_, e1 := callsettimeofday(uintptr(unsafe.Pointer(tv)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, e1 := callsetuid(uid)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(uid int) (err error) {\n\t_, e1 := callsetgid(uid)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, e1 := callsetpriority(which, who, prio)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callstatx(dirfd, uintptr(unsafe.Pointer(_p0)), flags, mask, uintptr(unsafe.Pointer(stat)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() {\n\tcallsync()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Times(tms *Tms) (ticks uintptr, err error) {\n\tr0, e1 := calltimes(uintptr(unsafe.Pointer(tms)))\n\tticks = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(mask int) (oldmask int) {\n\tr0, _ := callumask(mask)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Uname(buf *Utsname) (err error) {\n\t_, e1 := calluname(uintptr(unsafe.Pointer(buf)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callunlink(uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callunlinkat(dirfd, uintptr(unsafe.Pointer(_p0)), flags)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, e1 := callustat(dev, uintptr(unsafe.Pointer(ubuf)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tr0, e1 := callwrite(fd, uintptr(unsafe.Pointer(_p0)), len(p))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(oldfd int, newfd int) (err error) {\n\t_, e1 := calldup2(oldfd, newfd)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, e1 := callposix_fadvise64(fd, offset, length, advice)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, e1 := callfchown(fd, uid, gid)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstat(fd int, stat *Stat_t) (err error) {\n\t_, e1 := callfstat(fd, uintptr(unsafe.Pointer(stat)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callfstatat(dirfd, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), flags)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, e1 := callfstatfs(fd, uintptr(unsafe.Pointer(buf)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, e1 := callftruncate(fd, length)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := callgetegid()\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := callgeteuid()\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := callgetgid()\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := callgetuid()\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := calllchown(uintptr(unsafe.Pointer(_p0)), uid, gid)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, e1 := calllisten(s, n)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := calllstat(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, e1 := callpause()\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tr0, e1 := callpread64(fd, uintptr(unsafe.Pointer(_p0)), len(p), offset)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tr0, e1 := callpwrite64(fd, uintptr(unsafe.Pointer(_p0)), len(p), offset)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, e1 := callselect(nfd, uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, e1 := callpselect(nfd, uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, e1 := callsetregid(rgid, egid)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, e1 := callsetreuid(ruid, euid)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, e1 := callshutdown(fd, how)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, e1 := callsplice(rfd, uintptr(unsafe.Pointer(roff)), wfd, uintptr(unsafe.Pointer(woff)), len, flags)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc stat(path string, statptr *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callstat(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(statptr)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callstatfs(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := calltruncate(uintptr(unsafe.Pointer(_p0)), length)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, e1 := callbind(s, uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, e1 := callconnect(s, uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, e1 := callgetgroups(n, uintptr(unsafe.Pointer(list)))\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, e1 := callsetgroups(n, uintptr(unsafe.Pointer(list)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, e1 := callgetsockopt(s, level, name, uintptr(val), uintptr(unsafe.Pointer(vallen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, e1 := callsetsockopt(s, level, name, uintptr(val), vallen)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, e1 := callsocket(domain, typ, proto)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, e1 := callsocketpair(domain, typ, proto, uintptr(unsafe.Pointer(fd)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, e1 := callgetpeername(fd, uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, e1 := callgetsockname(fd, uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tr0, e1 := callrecvfrom(fd, uintptr(unsafe.Pointer(_p0)), len(p), flags, uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\t_, e1 := callsendto(s, uintptr(unsafe.Pointer(_p0)), len(buf), flags, uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, e1 := callnrecvmsg(s, uintptr(unsafe.Pointer(msg)), flags)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, e1 := callnsendmsg(s, uintptr(unsafe.Pointer(msg)), flags)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, e1 := callmunmap(addr, length)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, advice int) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\t_, e1 := callmadvise(uintptr(unsafe.Pointer(_p0)), len(b), advice)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\t_, e1 := callmprotect(uintptr(unsafe.Pointer(_p0)), len(b), prot)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\t_, e1 := callmlock(uintptr(unsafe.Pointer(_p0)), len(b))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, e1 := callmlockall(flags)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\t_, e1 := callmsync(uintptr(unsafe.Pointer(_p0)), len(b), flags)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\t_, e1 := callmunlock(uintptr(unsafe.Pointer(_p0)), len(b))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, e1 := callmunlockall()\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe(p *[2]_C_int) (err error) {\n\t_, e1 := callpipe(uintptr(unsafe.Pointer(p)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, e1 := callpoll(uintptr(unsafe.Pointer(fds)), nfds, timeout)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc gettimeofday(tv *Timeval, tzp *Timezone) (err error) {\n\t_, e1 := callgettimeofday(uintptr(unsafe.Pointer(tv)), uintptr(unsafe.Pointer(tzp)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tr0, e1 := calltime(uintptr(unsafe.Pointer(t)))\n\ttt = Time_t(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callutime(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsystemcfg(label int) (n uint64) {\n\tr0, _ := callgetsystemcfg(label)\n\tn = uint64(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc umount(target string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(target)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callumount(uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, e1 := callgetrlimit(resource, uintptr(unsafe.Pointer(rlim)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, e1 := calllseek(fd, offset, whence)\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, e1 := callmmap64(addr, length, prot, flags, fd, offset)\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go",
    "content": "// go run mksyscall_aix_ppc64.go -aix -tags aix,ppc64 syscall_aix.go syscall_aix_ppc64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build aix && ppc64 && gc\n\npackage unix\n\nimport (\n\t\"unsafe\"\n)\n\n//go:cgo_import_dynamic libc_utimes utimes \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_utimensat utimensat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getcwd getcwd \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_accept accept \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getdirent getdirent \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_wait4 wait4 \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_ioctl ioctl \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fcntl fcntl \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fsync_range fsync_range \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_acct acct \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_chdir chdir \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_chroot chroot \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_close close \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_dup dup \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_exit exit \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_faccessat faccessat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fchdir fchdir \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fchmod fchmod \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fchmodat fchmodat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fchownat fchownat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fdatasync fdatasync \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getpgid getpgid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getpgrp getpgrp \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getpid getpid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getppid getppid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getpriority getpriority \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getrusage getrusage \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getsid getsid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_kill kill \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_syslog syslog \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_mkdir mkdir \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_mkdirat mkdirat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_mkfifo mkfifo \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_mknod mknod \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_mknodat mknodat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_nanosleep nanosleep \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_open64 open64 \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_openat openat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_read read \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_readlink readlink \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_renameat renameat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_setdomainname setdomainname \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_sethostname sethostname \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_setpgid setpgid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_setsid setsid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_settimeofday settimeofday \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_setuid setuid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_setgid setgid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_setpriority setpriority \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_statx statx \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_sync sync \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_times times \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_umask umask \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_uname uname \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_unlink unlink \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_unlinkat unlinkat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_ustat ustat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_write write \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_dup2 dup2 \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_posix_fadvise64 posix_fadvise64 \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fchown fchown \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fstat fstat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fstatat fstatat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fstatfs fstatfs \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_ftruncate ftruncate \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getegid getegid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_geteuid geteuid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getgid getgid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getuid getuid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_lchown lchown \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_listen listen \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_lstat lstat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_pause pause \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_pread64 pread64 \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_pwrite64 pwrite64 \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_select select \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_pselect pselect \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_setregid setregid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_setreuid setreuid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_shutdown shutdown \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_splice splice \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_stat stat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_statfs statfs \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_truncate truncate \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_bind bind \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_connect connect \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getgroups getgroups \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_setgroups setgroups \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getsockopt getsockopt \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_setsockopt setsockopt \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_socket socket \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_socketpair socketpair \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getpeername getpeername \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getsockname getsockname \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_recvfrom recvfrom \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_sendto sendto \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_nrecvmsg nrecvmsg \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_nsendmsg nsendmsg \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_munmap munmap \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_madvise madvise \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_mprotect mprotect \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_mlock mlock \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_mlockall mlockall \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_msync msync \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_munlock munlock \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_munlockall munlockall \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_pipe pipe \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_poll poll \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_gettimeofday gettimeofday \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_time time \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_utime utime \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getsystemcfg getsystemcfg \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_umount umount \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getrlimit getrlimit \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_lseek lseek \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_mmap64 mmap64 \"libc.a/shr_64.o\"\n\n//go:linkname libc_utimes libc_utimes\n//go:linkname libc_utimensat libc_utimensat\n//go:linkname libc_getcwd libc_getcwd\n//go:linkname libc_accept libc_accept\n//go:linkname libc_getdirent libc_getdirent\n//go:linkname libc_wait4 libc_wait4\n//go:linkname libc_ioctl libc_ioctl\n//go:linkname libc_fcntl libc_fcntl\n//go:linkname libc_fsync_range libc_fsync_range\n//go:linkname libc_acct libc_acct\n//go:linkname libc_chdir libc_chdir\n//go:linkname libc_chroot libc_chroot\n//go:linkname libc_close libc_close\n//go:linkname libc_dup libc_dup\n//go:linkname libc_exit libc_exit\n//go:linkname libc_faccessat libc_faccessat\n//go:linkname libc_fchdir libc_fchdir\n//go:linkname libc_fchmod libc_fchmod\n//go:linkname libc_fchmodat libc_fchmodat\n//go:linkname libc_fchownat libc_fchownat\n//go:linkname libc_fdatasync libc_fdatasync\n//go:linkname libc_getpgid libc_getpgid\n//go:linkname libc_getpgrp libc_getpgrp\n//go:linkname libc_getpid libc_getpid\n//go:linkname libc_getppid libc_getppid\n//go:linkname libc_getpriority libc_getpriority\n//go:linkname libc_getrusage libc_getrusage\n//go:linkname libc_getsid libc_getsid\n//go:linkname libc_kill libc_kill\n//go:linkname libc_syslog libc_syslog\n//go:linkname libc_mkdir libc_mkdir\n//go:linkname libc_mkdirat libc_mkdirat\n//go:linkname libc_mkfifo libc_mkfifo\n//go:linkname libc_mknod libc_mknod\n//go:linkname libc_mknodat libc_mknodat\n//go:linkname libc_nanosleep libc_nanosleep\n//go:linkname libc_open64 libc_open64\n//go:linkname libc_openat libc_openat\n//go:linkname libc_read libc_read\n//go:linkname libc_readlink libc_readlink\n//go:linkname libc_renameat libc_renameat\n//go:linkname libc_setdomainname libc_setdomainname\n//go:linkname libc_sethostname libc_sethostname\n//go:linkname libc_setpgid libc_setpgid\n//go:linkname libc_setsid libc_setsid\n//go:linkname libc_settimeofday libc_settimeofday\n//go:linkname libc_setuid libc_setuid\n//go:linkname libc_setgid libc_setgid\n//go:linkname libc_setpriority libc_setpriority\n//go:linkname libc_statx libc_statx\n//go:linkname libc_sync libc_sync\n//go:linkname libc_times libc_times\n//go:linkname libc_umask libc_umask\n//go:linkname libc_uname libc_uname\n//go:linkname libc_unlink libc_unlink\n//go:linkname libc_unlinkat libc_unlinkat\n//go:linkname libc_ustat libc_ustat\n//go:linkname libc_write libc_write\n//go:linkname libc_dup2 libc_dup2\n//go:linkname libc_posix_fadvise64 libc_posix_fadvise64\n//go:linkname libc_fchown libc_fchown\n//go:linkname libc_fstat libc_fstat\n//go:linkname libc_fstatat libc_fstatat\n//go:linkname libc_fstatfs libc_fstatfs\n//go:linkname libc_ftruncate libc_ftruncate\n//go:linkname libc_getegid libc_getegid\n//go:linkname libc_geteuid libc_geteuid\n//go:linkname libc_getgid libc_getgid\n//go:linkname libc_getuid libc_getuid\n//go:linkname libc_lchown libc_lchown\n//go:linkname libc_listen libc_listen\n//go:linkname libc_lstat libc_lstat\n//go:linkname libc_pause libc_pause\n//go:linkname libc_pread64 libc_pread64\n//go:linkname libc_pwrite64 libc_pwrite64\n//go:linkname libc_select libc_select\n//go:linkname libc_pselect libc_pselect\n//go:linkname libc_setregid libc_setregid\n//go:linkname libc_setreuid libc_setreuid\n//go:linkname libc_shutdown libc_shutdown\n//go:linkname libc_splice libc_splice\n//go:linkname libc_stat libc_stat\n//go:linkname libc_statfs libc_statfs\n//go:linkname libc_truncate libc_truncate\n//go:linkname libc_bind libc_bind\n//go:linkname libc_connect libc_connect\n//go:linkname libc_getgroups libc_getgroups\n//go:linkname libc_setgroups libc_setgroups\n//go:linkname libc_getsockopt libc_getsockopt\n//go:linkname libc_setsockopt libc_setsockopt\n//go:linkname libc_socket libc_socket\n//go:linkname libc_socketpair libc_socketpair\n//go:linkname libc_getpeername libc_getpeername\n//go:linkname libc_getsockname libc_getsockname\n//go:linkname libc_recvfrom libc_recvfrom\n//go:linkname libc_sendto libc_sendto\n//go:linkname libc_nrecvmsg libc_nrecvmsg\n//go:linkname libc_nsendmsg libc_nsendmsg\n//go:linkname libc_munmap libc_munmap\n//go:linkname libc_madvise libc_madvise\n//go:linkname libc_mprotect libc_mprotect\n//go:linkname libc_mlock libc_mlock\n//go:linkname libc_mlockall libc_mlockall\n//go:linkname libc_msync libc_msync\n//go:linkname libc_munlock libc_munlock\n//go:linkname libc_munlockall libc_munlockall\n//go:linkname libc_pipe libc_pipe\n//go:linkname libc_poll libc_poll\n//go:linkname libc_gettimeofday libc_gettimeofday\n//go:linkname libc_time libc_time\n//go:linkname libc_utime libc_utime\n//go:linkname libc_getsystemcfg libc_getsystemcfg\n//go:linkname libc_umount libc_umount\n//go:linkname libc_getrlimit libc_getrlimit\n//go:linkname libc_lseek libc_lseek\n//go:linkname libc_mmap64 libc_mmap64\n\ntype syscallFunc uintptr\n\nvar (\n\tlibc_utimes,\n\tlibc_utimensat,\n\tlibc_getcwd,\n\tlibc_accept,\n\tlibc_getdirent,\n\tlibc_wait4,\n\tlibc_ioctl,\n\tlibc_fcntl,\n\tlibc_fsync_range,\n\tlibc_acct,\n\tlibc_chdir,\n\tlibc_chroot,\n\tlibc_close,\n\tlibc_dup,\n\tlibc_exit,\n\tlibc_faccessat,\n\tlibc_fchdir,\n\tlibc_fchmod,\n\tlibc_fchmodat,\n\tlibc_fchownat,\n\tlibc_fdatasync,\n\tlibc_getpgid,\n\tlibc_getpgrp,\n\tlibc_getpid,\n\tlibc_getppid,\n\tlibc_getpriority,\n\tlibc_getrusage,\n\tlibc_getsid,\n\tlibc_kill,\n\tlibc_syslog,\n\tlibc_mkdir,\n\tlibc_mkdirat,\n\tlibc_mkfifo,\n\tlibc_mknod,\n\tlibc_mknodat,\n\tlibc_nanosleep,\n\tlibc_open64,\n\tlibc_openat,\n\tlibc_read,\n\tlibc_readlink,\n\tlibc_renameat,\n\tlibc_setdomainname,\n\tlibc_sethostname,\n\tlibc_setpgid,\n\tlibc_setsid,\n\tlibc_settimeofday,\n\tlibc_setuid,\n\tlibc_setgid,\n\tlibc_setpriority,\n\tlibc_statx,\n\tlibc_sync,\n\tlibc_times,\n\tlibc_umask,\n\tlibc_uname,\n\tlibc_unlink,\n\tlibc_unlinkat,\n\tlibc_ustat,\n\tlibc_write,\n\tlibc_dup2,\n\tlibc_posix_fadvise64,\n\tlibc_fchown,\n\tlibc_fstat,\n\tlibc_fstatat,\n\tlibc_fstatfs,\n\tlibc_ftruncate,\n\tlibc_getegid,\n\tlibc_geteuid,\n\tlibc_getgid,\n\tlibc_getuid,\n\tlibc_lchown,\n\tlibc_listen,\n\tlibc_lstat,\n\tlibc_pause,\n\tlibc_pread64,\n\tlibc_pwrite64,\n\tlibc_select,\n\tlibc_pselect,\n\tlibc_setregid,\n\tlibc_setreuid,\n\tlibc_shutdown,\n\tlibc_splice,\n\tlibc_stat,\n\tlibc_statfs,\n\tlibc_truncate,\n\tlibc_bind,\n\tlibc_connect,\n\tlibc_getgroups,\n\tlibc_setgroups,\n\tlibc_getsockopt,\n\tlibc_setsockopt,\n\tlibc_socket,\n\tlibc_socketpair,\n\tlibc_getpeername,\n\tlibc_getsockname,\n\tlibc_recvfrom,\n\tlibc_sendto,\n\tlibc_nrecvmsg,\n\tlibc_nsendmsg,\n\tlibc_munmap,\n\tlibc_madvise,\n\tlibc_mprotect,\n\tlibc_mlock,\n\tlibc_mlockall,\n\tlibc_msync,\n\tlibc_munlock,\n\tlibc_munlockall,\n\tlibc_pipe,\n\tlibc_poll,\n\tlibc_gettimeofday,\n\tlibc_time,\n\tlibc_utime,\n\tlibc_getsystemcfg,\n\tlibc_umount,\n\tlibc_getrlimit,\n\tlibc_lseek,\n\tlibc_mmap64 syscallFunc\n)\n\n// Implemented in runtime/syscall_aix.go.\nfunc rawSyscall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)\nfunc syscall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callutimes(_p0 uintptr, times uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_utimes)), 2, _p0, times, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callutimensat(dirfd int, _p0 uintptr, times uintptr, flag int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_utimensat)), 4, uintptr(dirfd), _p0, times, uintptr(flag), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetcwd(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getcwd)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callaccept(s int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_accept)), 3, uintptr(s), rsa, addrlen, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetdirent(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getdirent)), 3, uintptr(fd), _p0, uintptr(_lenp0), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callwait4(pid int, status uintptr, options int, rusage uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_wait4)), 4, uintptr(pid), status, uintptr(options), rusage, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callioctl(fd int, req int, arg uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_ioctl)), 3, uintptr(fd), uintptr(req), arg, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callioctl_ptr(fd int, req int, arg unsafe.Pointer) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_ioctl)), 3, uintptr(fd), uintptr(req), uintptr(arg), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfcntl(fd uintptr, cmd int, arg uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fcntl)), 3, fd, uintptr(cmd), arg, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfsync_range(fd int, how int, start int64, length int64) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fsync_range)), 4, uintptr(fd), uintptr(how), uintptr(start), uintptr(length), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callacct(_p0 uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_acct)), 1, _p0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callchdir(_p0 uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_chdir)), 1, _p0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callchroot(_p0 uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_chroot)), 1, _p0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callclose(fd int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_close)), 1, uintptr(fd), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calldup(oldfd int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_dup)), 1, uintptr(oldfd), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callexit(code int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_exit)), 1, uintptr(code), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfaccessat(dirfd int, _p0 uintptr, mode uint32, flags int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_faccessat)), 4, uintptr(dirfd), _p0, uintptr(mode), uintptr(flags), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfchdir(fd int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchdir)), 1, uintptr(fd), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfchmod(fd int, mode uint32) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchmod)), 2, uintptr(fd), uintptr(mode), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfchmodat(dirfd int, _p0 uintptr, mode uint32, flags int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchmodat)), 4, uintptr(dirfd), _p0, uintptr(mode), uintptr(flags), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfchownat(dirfd int, _p0 uintptr, uid int, gid int, flags int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchownat)), 5, uintptr(dirfd), _p0, uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfdatasync(fd int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fdatasync)), 1, uintptr(fd), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetpgid(pid int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getpgid)), 1, uintptr(pid), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetpgrp() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getpgrp)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetpid() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getpid)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetppid() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getppid)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetpriority(which int, who int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getpriority)), 2, uintptr(which), uintptr(who), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetrusage(who int, rusage uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getrusage)), 2, uintptr(who), rusage, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetsid(pid int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getsid)), 1, uintptr(pid), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callkill(pid int, sig int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_kill)), 2, uintptr(pid), uintptr(sig), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsyslog(typ int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_syslog)), 3, uintptr(typ), _p0, uintptr(_lenp0), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmkdir(dirfd int, _p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mkdir)), 3, uintptr(dirfd), _p0, uintptr(mode), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmkdirat(dirfd int, _p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mkdirat)), 3, uintptr(dirfd), _p0, uintptr(mode), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmkfifo(_p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mkfifo)), 2, _p0, uintptr(mode), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmknod(_p0 uintptr, mode uint32, dev int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mknod)), 3, _p0, uintptr(mode), uintptr(dev), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmknodat(dirfd int, _p0 uintptr, mode uint32, dev int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mknodat)), 4, uintptr(dirfd), _p0, uintptr(mode), uintptr(dev), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callnanosleep(time uintptr, leftover uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_nanosleep)), 2, time, leftover, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callopen64(_p0 uintptr, mode int, perm uint32) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_open64)), 3, _p0, uintptr(mode), uintptr(perm), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callopenat(dirfd int, _p0 uintptr, flags int, mode uint32) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_openat)), 4, uintptr(dirfd), _p0, uintptr(flags), uintptr(mode), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callread(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_read)), 3, uintptr(fd), _p0, uintptr(_lenp0), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callreadlink(_p0 uintptr, _p1 uintptr, _lenp1 int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_readlink)), 3, _p0, _p1, uintptr(_lenp1), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callrenameat(olddirfd int, _p0 uintptr, newdirfd int, _p1 uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_renameat)), 4, uintptr(olddirfd), _p0, uintptr(newdirfd), _p1, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetdomainname(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setdomainname)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsethostname(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_sethostname)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetpgid(pid int, pgid int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setpgid)), 2, uintptr(pid), uintptr(pgid), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetsid() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setsid)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsettimeofday(tv uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_settimeofday)), 1, tv, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetuid(uid int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setuid)), 1, uintptr(uid), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetgid(uid int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setgid)), 1, uintptr(uid), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetpriority(which int, who int, prio int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setpriority)), 3, uintptr(which), uintptr(who), uintptr(prio), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callstatx(dirfd int, _p0 uintptr, flags int, mask int, stat uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_statx)), 5, uintptr(dirfd), _p0, uintptr(flags), uintptr(mask), stat, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsync() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_sync)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calltimes(tms uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_times)), 1, tms, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callumask(mask int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_umask)), 1, uintptr(mask), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calluname(buf uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_uname)), 1, buf, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callunlink(_p0 uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_unlink)), 1, _p0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callunlinkat(dirfd int, _p0 uintptr, flags int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_unlinkat)), 3, uintptr(dirfd), _p0, uintptr(flags), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callustat(dev int, ubuf uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_ustat)), 2, uintptr(dev), ubuf, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callwrite(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_write)), 3, uintptr(fd), _p0, uintptr(_lenp0), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calldup2(oldfd int, newfd int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_dup2)), 2, uintptr(oldfd), uintptr(newfd), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callposix_fadvise64(fd int, offset int64, length int64, advice int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_posix_fadvise64)), 4, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfchown(fd int, uid int, gid int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchown)), 3, uintptr(fd), uintptr(uid), uintptr(gid), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfstat(fd int, stat uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fstat)), 2, uintptr(fd), stat, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfstatat(dirfd int, _p0 uintptr, stat uintptr, flags int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fstatat)), 4, uintptr(dirfd), _p0, stat, uintptr(flags), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfstatfs(fd int, buf uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fstatfs)), 2, uintptr(fd), buf, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callftruncate(fd int, length int64) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_ftruncate)), 2, uintptr(fd), uintptr(length), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetegid() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getegid)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgeteuid() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_geteuid)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetgid() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getgid)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetuid() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getuid)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calllchown(_p0 uintptr, uid int, gid int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_lchown)), 3, _p0, uintptr(uid), uintptr(gid), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calllisten(s int, n int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_listen)), 2, uintptr(s), uintptr(n), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calllstat(_p0 uintptr, stat uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_lstat)), 2, _p0, stat, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpause() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_pause)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpread64(fd int, _p0 uintptr, _lenp0 int, offset int64) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_pread64)), 4, uintptr(fd), _p0, uintptr(_lenp0), uintptr(offset), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpwrite64(fd int, _p0 uintptr, _lenp0 int, offset int64) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_pwrite64)), 4, uintptr(fd), _p0, uintptr(_lenp0), uintptr(offset), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callselect(nfd int, r uintptr, w uintptr, e uintptr, timeout uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_select)), 5, uintptr(nfd), r, w, e, timeout, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpselect(nfd int, r uintptr, w uintptr, e uintptr, timeout uintptr, sigmask uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_pselect)), 6, uintptr(nfd), r, w, e, timeout, sigmask)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetregid(rgid int, egid int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setregid)), 2, uintptr(rgid), uintptr(egid), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetreuid(ruid int, euid int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setreuid)), 2, uintptr(ruid), uintptr(euid), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callshutdown(fd int, how int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_shutdown)), 2, uintptr(fd), uintptr(how), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsplice(rfd int, roff uintptr, wfd int, woff uintptr, len int, flags int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_splice)), 6, uintptr(rfd), roff, uintptr(wfd), woff, uintptr(len), uintptr(flags))\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callstat(_p0 uintptr, statptr uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_stat)), 2, _p0, statptr, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callstatfs(_p0 uintptr, buf uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_statfs)), 2, _p0, buf, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calltruncate(_p0 uintptr, length int64) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_truncate)), 2, _p0, uintptr(length), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callbind(s int, addr uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_bind)), 3, uintptr(s), addr, addrlen, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callconnect(s int, addr uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_connect)), 3, uintptr(s), addr, addrlen, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetgroups(n int, list uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getgroups)), 2, uintptr(n), list, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetgroups(n int, list uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setgroups)), 2, uintptr(n), list, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetsockopt(s int, level int, name int, val uintptr, vallen uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getsockopt)), 5, uintptr(s), uintptr(level), uintptr(name), val, vallen, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetsockopt(s int, level int, name int, val uintptr, vallen uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setsockopt)), 5, uintptr(s), uintptr(level), uintptr(name), val, vallen, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsocket(domain int, typ int, proto int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_socket)), 3, uintptr(domain), uintptr(typ), uintptr(proto), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsocketpair(domain int, typ int, proto int, fd uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_socketpair)), 4, uintptr(domain), uintptr(typ), uintptr(proto), fd, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetpeername(fd int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getpeername)), 3, uintptr(fd), rsa, addrlen, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetsockname(fd int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getsockname)), 3, uintptr(fd), rsa, addrlen, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callrecvfrom(fd int, _p0 uintptr, _lenp0 int, flags int, from uintptr, fromlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_recvfrom)), 6, uintptr(fd), _p0, uintptr(_lenp0), uintptr(flags), from, fromlen)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsendto(s int, _p0 uintptr, _lenp0 int, flags int, to uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_sendto)), 6, uintptr(s), _p0, uintptr(_lenp0), uintptr(flags), to, addrlen)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callnrecvmsg(s int, msg uintptr, flags int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_nrecvmsg)), 3, uintptr(s), msg, uintptr(flags), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callnsendmsg(s int, msg uintptr, flags int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_nsendmsg)), 3, uintptr(s), msg, uintptr(flags), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmunmap(addr uintptr, length uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_munmap)), 2, addr, length, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmadvise(_p0 uintptr, _lenp0 int, advice int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_madvise)), 3, _p0, uintptr(_lenp0), uintptr(advice), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmprotect(_p0 uintptr, _lenp0 int, prot int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mprotect)), 3, _p0, uintptr(_lenp0), uintptr(prot), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmlock(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mlock)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmlockall(flags int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mlockall)), 1, uintptr(flags), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmsync(_p0 uintptr, _lenp0 int, flags int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_msync)), 3, _p0, uintptr(_lenp0), uintptr(flags), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmunlock(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_munlock)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmunlockall() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_munlockall)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpipe(p uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_pipe)), 1, p, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpoll(fds uintptr, nfds int, timeout int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_poll)), 3, fds, uintptr(nfds), uintptr(timeout), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgettimeofday(tv uintptr, tzp uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_gettimeofday)), 2, tv, tzp, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calltime(t uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_time)), 1, t, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callutime(_p0 uintptr, buf uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_utime)), 2, _p0, buf, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetsystemcfg(label int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getsystemcfg)), 1, uintptr(label), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callumount(_p0 uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_umount)), 1, _p0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetrlimit(resource int, rlim uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getrlimit)), 2, uintptr(resource), rlim, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calllseek(fd int, offset int64, whence int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_lseek)), 3, uintptr(fd), uintptr(offset), uintptr(whence), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmmap64(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mmap64)), 6, addr, length, uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))\n\treturn\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go",
    "content": "// go run mksyscall_aix_ppc64.go -aix -tags aix,ppc64 syscall_aix.go syscall_aix_ppc64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build aix && ppc64 && gccgo\n\npackage unix\n\n/*\n#include <stdint.h>\nint utimes(uintptr_t, uintptr_t);\nint utimensat(int, uintptr_t, uintptr_t, int);\nint getcwd(uintptr_t, size_t);\nint accept(int, uintptr_t, uintptr_t);\nint getdirent(int, uintptr_t, size_t);\nint wait4(int, uintptr_t, int, uintptr_t);\nint ioctl(int, int, uintptr_t);\nint fcntl(uintptr_t, int, uintptr_t);\nint fsync_range(int, int, long long, long long);\nint acct(uintptr_t);\nint chdir(uintptr_t);\nint chroot(uintptr_t);\nint close(int);\nint dup(int);\nvoid exit(int);\nint faccessat(int, uintptr_t, unsigned int, int);\nint fchdir(int);\nint fchmod(int, unsigned int);\nint fchmodat(int, uintptr_t, unsigned int, int);\nint fchownat(int, uintptr_t, int, int, int);\nint fdatasync(int);\nint getpgid(int);\nint getpgrp();\nint getpid();\nint getppid();\nint getpriority(int, int);\nint getrusage(int, uintptr_t);\nint getsid(int);\nint kill(int, int);\nint syslog(int, uintptr_t, size_t);\nint mkdir(int, uintptr_t, unsigned int);\nint mkdirat(int, uintptr_t, unsigned int);\nint mkfifo(uintptr_t, unsigned int);\nint mknod(uintptr_t, unsigned int, int);\nint mknodat(int, uintptr_t, unsigned int, int);\nint nanosleep(uintptr_t, uintptr_t);\nint open64(uintptr_t, int, unsigned int);\nint openat(int, uintptr_t, int, unsigned int);\nint read(int, uintptr_t, size_t);\nint readlink(uintptr_t, uintptr_t, size_t);\nint renameat(int, uintptr_t, int, uintptr_t);\nint setdomainname(uintptr_t, size_t);\nint sethostname(uintptr_t, size_t);\nint setpgid(int, int);\nint setsid();\nint settimeofday(uintptr_t);\nint setuid(int);\nint setgid(int);\nint setpriority(int, int, int);\nint statx(int, uintptr_t, int, int, uintptr_t);\nint sync();\nuintptr_t times(uintptr_t);\nint umask(int);\nint uname(uintptr_t);\nint unlink(uintptr_t);\nint unlinkat(int, uintptr_t, int);\nint ustat(int, uintptr_t);\nint write(int, uintptr_t, size_t);\nint dup2(int, int);\nint posix_fadvise64(int, long long, long long, int);\nint fchown(int, int, int);\nint fstat(int, uintptr_t);\nint fstatat(int, uintptr_t, uintptr_t, int);\nint fstatfs(int, uintptr_t);\nint ftruncate(int, long long);\nint getegid();\nint geteuid();\nint getgid();\nint getuid();\nint lchown(uintptr_t, int, int);\nint listen(int, int);\nint lstat(uintptr_t, uintptr_t);\nint pause();\nint pread64(int, uintptr_t, size_t, long long);\nint pwrite64(int, uintptr_t, size_t, long long);\n#define c_select select\nint select(int, uintptr_t, uintptr_t, uintptr_t, uintptr_t);\nint pselect(int, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t);\nint setregid(int, int);\nint setreuid(int, int);\nint shutdown(int, int);\nlong long splice(int, uintptr_t, int, uintptr_t, int, int);\nint stat(uintptr_t, uintptr_t);\nint statfs(uintptr_t, uintptr_t);\nint truncate(uintptr_t, long long);\nint bind(int, uintptr_t, uintptr_t);\nint connect(int, uintptr_t, uintptr_t);\nint getgroups(int, uintptr_t);\nint setgroups(int, uintptr_t);\nint getsockopt(int, int, int, uintptr_t, uintptr_t);\nint setsockopt(int, int, int, uintptr_t, uintptr_t);\nint socket(int, int, int);\nint socketpair(int, int, int, uintptr_t);\nint getpeername(int, uintptr_t, uintptr_t);\nint getsockname(int, uintptr_t, uintptr_t);\nint recvfrom(int, uintptr_t, size_t, int, uintptr_t, uintptr_t);\nint sendto(int, uintptr_t, size_t, int, uintptr_t, uintptr_t);\nint nrecvmsg(int, uintptr_t, int);\nint nsendmsg(int, uintptr_t, int);\nint munmap(uintptr_t, uintptr_t);\nint madvise(uintptr_t, size_t, int);\nint mprotect(uintptr_t, size_t, int);\nint mlock(uintptr_t, size_t);\nint mlockall(int);\nint msync(uintptr_t, size_t, int);\nint munlock(uintptr_t, size_t);\nint munlockall();\nint pipe(uintptr_t);\nint poll(uintptr_t, int, int);\nint gettimeofday(uintptr_t, uintptr_t);\nint time(uintptr_t);\nint utime(uintptr_t, uintptr_t);\nunsigned long long getsystemcfg(int);\nint umount(uintptr_t);\nint getrlimit(int, uintptr_t);\nlong long lseek(int, long long, int);\nuintptr_t mmap64(uintptr_t, uintptr_t, int, int, int, long long);\n\n*/\nimport \"C\"\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callutimes(_p0 uintptr, times uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.utimes(C.uintptr_t(_p0), C.uintptr_t(times)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callutimensat(dirfd int, _p0 uintptr, times uintptr, flag int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.utimensat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(times), C.int(flag)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetcwd(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getcwd(C.uintptr_t(_p0), C.size_t(_lenp0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callaccept(s int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.accept(C.int(s), C.uintptr_t(rsa), C.uintptr_t(addrlen)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetdirent(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getdirent(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callwait4(pid int, status uintptr, options int, rusage uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.wait4(C.int(pid), C.uintptr_t(status), C.int(options), C.uintptr_t(rusage)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callioctl(fd int, req int, arg uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.ioctl(C.int(fd), C.int(req), C.uintptr_t(arg)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callioctl_ptr(fd int, req int, arg unsafe.Pointer) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.ioctl(C.int(fd), C.int(req), C.uintptr_t(uintptr(arg))))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfcntl(fd uintptr, cmd int, arg uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(arg)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfsync_range(fd int, how int, start int64, length int64) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fsync_range(C.int(fd), C.int(how), C.longlong(start), C.longlong(length)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callacct(_p0 uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.acct(C.uintptr_t(_p0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callchdir(_p0 uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.chdir(C.uintptr_t(_p0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callchroot(_p0 uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.chroot(C.uintptr_t(_p0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callclose(fd int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.close(C.int(fd)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calldup(oldfd int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.dup(C.int(oldfd)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callexit(code int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.exit(C.int(code)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfaccessat(dirfd int, _p0 uintptr, mode uint32, flags int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.faccessat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(flags)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfchdir(fd int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fchdir(C.int(fd)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfchmod(fd int, mode uint32) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fchmod(C.int(fd), C.uint(mode)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfchmodat(dirfd int, _p0 uintptr, mode uint32, flags int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fchmodat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(flags)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfchownat(dirfd int, _p0 uintptr, uid int, gid int, flags int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fchownat(C.int(dirfd), C.uintptr_t(_p0), C.int(uid), C.int(gid), C.int(flags)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfdatasync(fd int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fdatasync(C.int(fd)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetpgid(pid int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getpgid(C.int(pid)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetpgrp() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getpgrp())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetpid() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getpid())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetppid() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getppid())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetpriority(which int, who int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getpriority(C.int(which), C.int(who)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetrusage(who int, rusage uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getrusage(C.int(who), C.uintptr_t(rusage)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetsid(pid int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getsid(C.int(pid)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callkill(pid int, sig int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.kill(C.int(pid), C.int(sig)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsyslog(typ int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.syslog(C.int(typ), C.uintptr_t(_p0), C.size_t(_lenp0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmkdir(dirfd int, _p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.mkdir(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmkdirat(dirfd int, _p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.mkdirat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmkfifo(_p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.mkfifo(C.uintptr_t(_p0), C.uint(mode)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmknod(_p0 uintptr, mode uint32, dev int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.mknod(C.uintptr_t(_p0), C.uint(mode), C.int(dev)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmknodat(dirfd int, _p0 uintptr, mode uint32, dev int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.mknodat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(dev)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callnanosleep(time uintptr, leftover uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.nanosleep(C.uintptr_t(time), C.uintptr_t(leftover)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callopen64(_p0 uintptr, mode int, perm uint32) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.open64(C.uintptr_t(_p0), C.int(mode), C.uint(perm)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callopenat(dirfd int, _p0 uintptr, flags int, mode uint32) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.openat(C.int(dirfd), C.uintptr_t(_p0), C.int(flags), C.uint(mode)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callread(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.read(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callreadlink(_p0 uintptr, _p1 uintptr, _lenp1 int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.readlink(C.uintptr_t(_p0), C.uintptr_t(_p1), C.size_t(_lenp1)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callrenameat(olddirfd int, _p0 uintptr, newdirfd int, _p1 uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.renameat(C.int(olddirfd), C.uintptr_t(_p0), C.int(newdirfd), C.uintptr_t(_p1)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetdomainname(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setdomainname(C.uintptr_t(_p0), C.size_t(_lenp0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsethostname(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.sethostname(C.uintptr_t(_p0), C.size_t(_lenp0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetpgid(pid int, pgid int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setpgid(C.int(pid), C.int(pgid)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetsid() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setsid())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsettimeofday(tv uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.settimeofday(C.uintptr_t(tv)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetuid(uid int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setuid(C.int(uid)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetgid(uid int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setgid(C.int(uid)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetpriority(which int, who int, prio int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setpriority(C.int(which), C.int(who), C.int(prio)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callstatx(dirfd int, _p0 uintptr, flags int, mask int, stat uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.statx(C.int(dirfd), C.uintptr_t(_p0), C.int(flags), C.int(mask), C.uintptr_t(stat)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsync() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.sync())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calltimes(tms uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.times(C.uintptr_t(tms)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callumask(mask int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.umask(C.int(mask)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calluname(buf uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.uname(C.uintptr_t(buf)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callunlink(_p0 uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.unlink(C.uintptr_t(_p0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callunlinkat(dirfd int, _p0 uintptr, flags int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.unlinkat(C.int(dirfd), C.uintptr_t(_p0), C.int(flags)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callustat(dev int, ubuf uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.ustat(C.int(dev), C.uintptr_t(ubuf)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callwrite(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.write(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calldup2(oldfd int, newfd int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.dup2(C.int(oldfd), C.int(newfd)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callposix_fadvise64(fd int, offset int64, length int64, advice int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.posix_fadvise64(C.int(fd), C.longlong(offset), C.longlong(length), C.int(advice)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfchown(fd int, uid int, gid int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fchown(C.int(fd), C.int(uid), C.int(gid)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfstat(fd int, stat uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fstat(C.int(fd), C.uintptr_t(stat)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfstatat(dirfd int, _p0 uintptr, stat uintptr, flags int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fstatat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(stat), C.int(flags)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfstatfs(fd int, buf uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fstatfs(C.int(fd), C.uintptr_t(buf)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callftruncate(fd int, length int64) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.ftruncate(C.int(fd), C.longlong(length)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetegid() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getegid())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgeteuid() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.geteuid())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetgid() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getgid())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetuid() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getuid())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calllchown(_p0 uintptr, uid int, gid int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.lchown(C.uintptr_t(_p0), C.int(uid), C.int(gid)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calllisten(s int, n int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.listen(C.int(s), C.int(n)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calllstat(_p0 uintptr, stat uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.lstat(C.uintptr_t(_p0), C.uintptr_t(stat)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpause() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.pause())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpread64(fd int, _p0 uintptr, _lenp0 int, offset int64) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.pread64(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0), C.longlong(offset)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpwrite64(fd int, _p0 uintptr, _lenp0 int, offset int64) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.pwrite64(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0), C.longlong(offset)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callselect(nfd int, r uintptr, w uintptr, e uintptr, timeout uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.c_select(C.int(nfd), C.uintptr_t(r), C.uintptr_t(w), C.uintptr_t(e), C.uintptr_t(timeout)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpselect(nfd int, r uintptr, w uintptr, e uintptr, timeout uintptr, sigmask uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.pselect(C.int(nfd), C.uintptr_t(r), C.uintptr_t(w), C.uintptr_t(e), C.uintptr_t(timeout), C.uintptr_t(sigmask)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetregid(rgid int, egid int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setregid(C.int(rgid), C.int(egid)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetreuid(ruid int, euid int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setreuid(C.int(ruid), C.int(euid)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callshutdown(fd int, how int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.shutdown(C.int(fd), C.int(how)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsplice(rfd int, roff uintptr, wfd int, woff uintptr, len int, flags int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.splice(C.int(rfd), C.uintptr_t(roff), C.int(wfd), C.uintptr_t(woff), C.int(len), C.int(flags)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callstat(_p0 uintptr, statptr uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.stat(C.uintptr_t(_p0), C.uintptr_t(statptr)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callstatfs(_p0 uintptr, buf uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.statfs(C.uintptr_t(_p0), C.uintptr_t(buf)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calltruncate(_p0 uintptr, length int64) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.truncate(C.uintptr_t(_p0), C.longlong(length)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callbind(s int, addr uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.bind(C.int(s), C.uintptr_t(addr), C.uintptr_t(addrlen)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callconnect(s int, addr uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.connect(C.int(s), C.uintptr_t(addr), C.uintptr_t(addrlen)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetgroups(n int, list uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getgroups(C.int(n), C.uintptr_t(list)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetgroups(n int, list uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setgroups(C.int(n), C.uintptr_t(list)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetsockopt(s int, level int, name int, val uintptr, vallen uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getsockopt(C.int(s), C.int(level), C.int(name), C.uintptr_t(val), C.uintptr_t(vallen)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetsockopt(s int, level int, name int, val uintptr, vallen uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setsockopt(C.int(s), C.int(level), C.int(name), C.uintptr_t(val), C.uintptr_t(vallen)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsocket(domain int, typ int, proto int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.socket(C.int(domain), C.int(typ), C.int(proto)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsocketpair(domain int, typ int, proto int, fd uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.socketpair(C.int(domain), C.int(typ), C.int(proto), C.uintptr_t(fd)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetpeername(fd int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getpeername(C.int(fd), C.uintptr_t(rsa), C.uintptr_t(addrlen)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetsockname(fd int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getsockname(C.int(fd), C.uintptr_t(rsa), C.uintptr_t(addrlen)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callrecvfrom(fd int, _p0 uintptr, _lenp0 int, flags int, from uintptr, fromlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.recvfrom(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0), C.int(flags), C.uintptr_t(from), C.uintptr_t(fromlen)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsendto(s int, _p0 uintptr, _lenp0 int, flags int, to uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.sendto(C.int(s), C.uintptr_t(_p0), C.size_t(_lenp0), C.int(flags), C.uintptr_t(to), C.uintptr_t(addrlen)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callnrecvmsg(s int, msg uintptr, flags int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.nrecvmsg(C.int(s), C.uintptr_t(msg), C.int(flags)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callnsendmsg(s int, msg uintptr, flags int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.nsendmsg(C.int(s), C.uintptr_t(msg), C.int(flags)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmunmap(addr uintptr, length uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.munmap(C.uintptr_t(addr), C.uintptr_t(length)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmadvise(_p0 uintptr, _lenp0 int, advice int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.madvise(C.uintptr_t(_p0), C.size_t(_lenp0), C.int(advice)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmprotect(_p0 uintptr, _lenp0 int, prot int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.mprotect(C.uintptr_t(_p0), C.size_t(_lenp0), C.int(prot)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmlock(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.mlock(C.uintptr_t(_p0), C.size_t(_lenp0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmlockall(flags int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.mlockall(C.int(flags)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmsync(_p0 uintptr, _lenp0 int, flags int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.msync(C.uintptr_t(_p0), C.size_t(_lenp0), C.int(flags)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmunlock(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.munlock(C.uintptr_t(_p0), C.size_t(_lenp0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmunlockall() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.munlockall())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpipe(p uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.pipe(C.uintptr_t(p)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpoll(fds uintptr, nfds int, timeout int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.poll(C.uintptr_t(fds), C.int(nfds), C.int(timeout)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgettimeofday(tv uintptr, tzp uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.gettimeofday(C.uintptr_t(tv), C.uintptr_t(tzp)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calltime(t uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.time(C.uintptr_t(t)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callutime(_p0 uintptr, buf uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.utime(C.uintptr_t(_p0), C.uintptr_t(buf)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetsystemcfg(label int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getsystemcfg(C.int(label)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callumount(_p0 uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.umount(C.uintptr_t(_p0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetrlimit(resource int, rlim uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getrlimit(C.int(resource), C.uintptr_t(rlim)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calllseek(fd int, offset int64, whence int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.lseek(C.int(fd), C.longlong(offset), C.int(whence)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmmap64(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.mmap64(C.uintptr_t(addr), C.uintptr_t(length), C.int(prot), C.int(flags), C.int(fd), C.longlong(offset)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go",
    "content": "// go run mksyscall.go -tags darwin,amd64 syscall_bsd.go syscall_darwin.go syscall_darwin_amd64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build darwin && amd64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgroups getgroups \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgroups setgroups \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_wait4_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_wait4 wait4 \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_accept_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_accept accept \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_bind_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_bind bind \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_connect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_connect connect \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socket_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socket socket \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockopt getsockopt \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsockopt setsockopt \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpeername_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpeername getpeername \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockname_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockname getsockname \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shutdown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shutdown shutdown \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socketpair_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socketpair socketpair \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvfrom_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvfrom recvfrom \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendto_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendto sendto \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvmsg recvmsg \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendmsg sendmsg \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kevent_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kevent kevent \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimes utimes \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_futimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_futimes futimes \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_poll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_poll poll \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_madvise_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_madvise madvise \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlock mlock \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlockall mlockall \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mprotect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mprotect mprotect \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_msync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_msync msync \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlock munlock \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlockall munlockall \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc closedir(dir uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_closedir_trampoline_addr, uintptr(dir), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_closedir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_closedir closedir \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc readdir_r(dir uintptr, entry *Dirent, result **Dirent) (res Errno) {\n\tr0, _, _ := syscall_syscall(libc_readdir_r_trampoline_addr, uintptr(dir), uintptr(unsafe.Pointer(entry)), uintptr(unsafe.Pointer(result)))\n\tres = Errno(r0)\n\treturn\n}\n\nvar libc_readdir_r_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readdir_r readdir_r \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe(p *[2]int32) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_pipe_trampoline_addr, uintptr(unsafe.Pointer(p)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pipe_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pipe pipe \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_getxattr_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getxattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getxattr getxattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_fgetxattr_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fgetxattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fgetxattr fgetxattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_setxattr_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setxattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setxattr setxattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fsetxattr_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fsetxattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fsetxattr fsetxattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc removexattr(path string, attr string, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_removexattr_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_removexattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_removexattr removexattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fremovexattr(fd int, attr string, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_fremovexattr_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fremovexattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fremovexattr fremovexattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc listxattr(path string, dest *byte, size int, options int) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_listxattr_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_listxattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_listxattr listxattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_flistxattr_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_flistxattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_flistxattr flistxattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_utimensat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimensat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimensat utimensat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (val int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fcntl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fcntl fcntl \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kill(pid int, signum int, posix int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), uintptr(posix))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kill_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kill kill \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ioctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ioctl ioctl \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc renamexNp(from string, to string, flag uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_renamex_np_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flag))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_renamex_np_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_renamex_np renamex_np \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc renameatxNp(fromfd int, from string, tofd int, to string, flag uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_renameatx_np_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), uintptr(flag), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_renameatx_np_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_renameatx_np renameatx_np \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sysctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sysctl sysctl \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pthread_chdir_np(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_pthread_chdir_np_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pthread_chdir_np_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pthread_chdir_np pthread_chdir_np \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pthread_fchdir_np(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_pthread_fchdir_np_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pthread_fchdir_np_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pthread_fchdir_np pthread_fchdir_np \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connectx(fd int, endpoints *SaEndpoints, associd SaeAssocID, flags uint32, iov []Iovec, n *uintptr, connid *SaeConnID) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(iov) > 0 {\n\t\t_p0 = unsafe.Pointer(&iov[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall9(libc_connectx_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(endpoints)), uintptr(associd), uintptr(flags), uintptr(_p0), uintptr(len(iov)), uintptr(unsafe.Pointer(n)), uintptr(unsafe.Pointer(connid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_connectx_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_connectx connectx \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_sendfile_trampoline_addr, uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendfile_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendfile sendfile \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc shmat(id int, addr uintptr, flag int) (ret uintptr, err error) {\n\tr0, _, e1 := syscall_syscall(libc_shmat_trampoline_addr, uintptr(id), uintptr(addr), uintptr(flag))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shmat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shmat shmat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc shmctl(id int, cmd int, buf *SysvShmDesc) (result int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_shmctl_trampoline_addr, uintptr(id), uintptr(cmd), uintptr(unsafe.Pointer(buf)))\n\tresult = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shmctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shmctl shmctl \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc shmdt(addr uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_shmdt_trampoline_addr, uintptr(addr), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shmdt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shmdt shmdt \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc shmget(key int, size int, flag int) (id int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_shmget_trampoline_addr, uintptr(key), uintptr(size), uintptr(flag))\n\tid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shmget_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shmget shmget \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_access_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_access access \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_adjtime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_adjtime adjtime \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chdir chdir \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chflags chflags \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chmod chmod \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chown chown \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chroot_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chroot chroot \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_clock_gettime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_clock_gettime clock_gettime \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_close_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_close close \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Clonefile(src string, dst string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(src)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(dst)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_clonefile_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_clonefile_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_clonefile clonefile \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Clonefileat(srcDirfd int, src string, dstDirfd int, dst string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(src)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(dst)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_clonefileat_trampoline_addr, uintptr(srcDirfd), uintptr(unsafe.Pointer(_p0)), uintptr(dstDirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_clonefileat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_clonefileat clonefileat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup dup \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup2 dup2 \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exchangedata(path1 string, path2 string, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path1)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(path2)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_exchangedata_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_exchangedata_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_exchangedata exchangedata \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tsyscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0)\n\treturn\n}\n\nvar libc_exit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_exit exit \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_faccessat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_faccessat faccessat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchdir fchdir \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchflags fchflags \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmod fchmod \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmodat fchmodat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchown fchown \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchownat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchownat fchownat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fclonefileat(srcDirfd int, dstDirfd int, dst string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(dst)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fclonefileat_trampoline_addr, uintptr(srcDirfd), uintptr(dstDirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fclonefileat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fclonefileat fclonefileat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_flock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_flock flock \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fpathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fpathconf fpathconf \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fsync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fsync fsync \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ftruncate_trampoline_addr, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ftruncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ftruncate ftruncate \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getcwd_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getcwd getcwd \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdtablesize() (size int) {\n\tr0, _, _ := syscall_syscall(libc_getdtablesize_trampoline_addr, 0, 0, 0)\n\tsize = int(r0)\n\treturn\n}\n\nvar libc_getdtablesize_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getdtablesize getdtablesize \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\nvar libc_getegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getegid getegid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_geteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_geteuid geteuid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\nvar libc_getgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgid getgid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgid getpgid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\nvar libc_getpgrp_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgrp getpgrp \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\nvar libc_getpid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpid getpid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\nvar libc_getppid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getppid getppid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpriority getpriority \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrlimit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrlimit getrlimit \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrusage_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrusage getrusage \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsid getsid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_gettimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_gettimeofday gettimeofday \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_getuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getuid getuid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := syscall_rawSyscall(libc_issetugid_trampoline_addr, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\nvar libc_issetugid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_issetugid issetugid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kqueue_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kqueue kqueue \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lchown lchown \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_link_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_link link \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_linkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_linkat linkat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_listen_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_listen listen \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdir mkdir \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdirat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdirat mkdirat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifo_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifo mkfifo \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknod mknod \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(fsType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(dir)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mount mount \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_open_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_open_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_open open \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_openat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_openat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_openat openat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_pathconf_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pathconf pathconf \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pread_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pread_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pread pread \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pwrite_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pwrite_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pwrite pwrite \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_read_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_read read \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_readlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlink readlink \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_readlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlinkat readlinkat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rename_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rename_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rename rename \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_renameat_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_renameat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_renameat renameat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_revoke_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_revoke_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_revoke revoke \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rmdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rmdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rmdir rmdir \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := syscall_syscall(libc_lseek_trampoline_addr, uintptr(fd), uintptr(offset), uintptr(whence))\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lseek_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lseek lseek \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_select_trampoline_addr, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_select_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_select select \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setattrlist(path string, attrlist *Attrlist, attrBuf []byte, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(attrBuf) > 0 {\n\t\t_p1 = unsafe.Pointer(&attrBuf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_setattrlist_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(attrlist)), uintptr(_p1), uintptr(len(attrBuf)), uintptr(options), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setattrlist_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setattrlist setattrlist \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setegid setegid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_seteuid_trampoline_addr, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_seteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_seteuid seteuid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgid_trampoline_addr, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgid setgid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_setlogin_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setlogin_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setlogin setlogin \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setpgid_trampoline_addr, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpgid setpgid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_setpriority_trampoline_addr, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpriority setpriority \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setprivexec(flag int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_setprivexec_trampoline_addr, uintptr(flag), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setprivexec_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setprivexec setprivexec \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setregid_trampoline_addr, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setregid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setregid setregid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setreuid_trampoline_addr, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setreuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setreuid setreuid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsid setsid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_settimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_settimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_settimeofday settimeofday \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setuid_trampoline_addr, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setuid setuid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlink symlink \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlinkat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlinkat symlinkat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := syscall_syscall(libc_sync_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sync sync \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_truncate_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_truncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_truncate truncate \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := syscall_syscall(libc_umask_trampoline_addr, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\nvar libc_umask_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_umask umask \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Undelete(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_undelete_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_undelete_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_undelete undelete \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlink unlink \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlinkat unlinkat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unmount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unmount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unmount unmount \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_write_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_write write \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_mmap_trampoline_addr, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mmap mmap \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_munmap_trampoline_addr, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munmap munmap \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc readv(fd int, iovecs []Iovec) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(iovecs) > 0 {\n\t\t_p0 = unsafe.Pointer(&iovecs[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_readv_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readv_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readv readv \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc preadv(fd int, iovecs []Iovec, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(iovecs) > 0 {\n\t\t_p0 = unsafe.Pointer(&iovecs[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_preadv_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_preadv_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_preadv preadv \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writev(fd int, iovecs []Iovec) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(iovecs) > 0 {\n\t\t_p0 = unsafe.Pointer(&iovecs[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_writev_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_writev_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_writev writev \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwritev(fd int, iovecs []Iovec, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(iovecs) > 0 {\n\t\t_p0 = unsafe.Pointer(&iovecs[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pwritev_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pwritev_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pwritev pwritev \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstat64_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstat64_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstat64 fstat64 \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fstatat64_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatat64_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatat64 fstatat64 \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstatfs64_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatfs64_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatfs64 fstatfs64 \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getfsstat64_trampoline_addr, uintptr(buf), uintptr(size), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getfsstat64_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getfsstat64 getfsstat64 \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lstat64_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lstat64_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lstat64 lstat64 \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptrace1(request int, pid int, addr uintptr, data uintptr) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_ptrace_trampoline_addr, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ptrace_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ptrace ptrace \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_stat64_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_stat64_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_stat64 stat64 \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_statfs64_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_statfs64_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_statfs64 statfs64 \"/usr/lib/libSystem.B.dylib\"\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s",
    "content": "// go run mkasm.go darwin amd64\n// Code generated by the command above; DO NOT EDIT.\n\n#include \"textflag.h\"\n\nTEXT libc_fdopendir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fdopendir(SB)\nGLOBL\t·libc_fdopendir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fdopendir_trampoline_addr(SB)/8, $libc_fdopendir_trampoline<>(SB)\n\nTEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgroups(SB)\nGLOBL\t·libc_getgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB)\n\nTEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgroups(SB)\nGLOBL\t·libc_setgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB)\n\nTEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_wait4(SB)\nGLOBL\t·libc_wait4_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB)\n\nTEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_accept(SB)\nGLOBL\t·libc_accept_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB)\n\nTEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_bind(SB)\nGLOBL\t·libc_bind_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB)\n\nTEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_connect(SB)\nGLOBL\t·libc_connect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB)\n\nTEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socket(SB)\nGLOBL\t·libc_socket_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB)\n\nTEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockopt(SB)\nGLOBL\t·libc_getsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB)\n\nTEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsockopt(SB)\nGLOBL\t·libc_setsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB)\n\nTEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpeername(SB)\nGLOBL\t·libc_getpeername_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB)\n\nTEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockname(SB)\nGLOBL\t·libc_getsockname_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB)\n\nTEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shutdown(SB)\nGLOBL\t·libc_shutdown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB)\n\nTEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socketpair(SB)\nGLOBL\t·libc_socketpair_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB)\n\nTEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvfrom(SB)\nGLOBL\t·libc_recvfrom_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB)\n\nTEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendto(SB)\nGLOBL\t·libc_sendto_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB)\n\nTEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvmsg(SB)\nGLOBL\t·libc_recvmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB)\n\nTEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendmsg(SB)\nGLOBL\t·libc_sendmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB)\n\nTEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kevent(SB)\nGLOBL\t·libc_kevent_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB)\n\nTEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimes(SB)\nGLOBL\t·libc_utimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB)\n\nTEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_futimes(SB)\nGLOBL\t·libc_futimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB)\n\nTEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_poll(SB)\nGLOBL\t·libc_poll_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB)\n\nTEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_madvise(SB)\nGLOBL\t·libc_madvise_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB)\n\nTEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlock(SB)\nGLOBL\t·libc_mlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB)\n\nTEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlockall(SB)\nGLOBL\t·libc_mlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB)\n\nTEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mprotect(SB)\nGLOBL\t·libc_mprotect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB)\n\nTEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_msync(SB)\nGLOBL\t·libc_msync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB)\n\nTEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlock(SB)\nGLOBL\t·libc_munlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB)\n\nTEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlockall(SB)\nGLOBL\t·libc_munlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB)\n\nTEXT libc_closedir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_closedir(SB)\nGLOBL\t·libc_closedir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_closedir_trampoline_addr(SB)/8, $libc_closedir_trampoline<>(SB)\n\nTEXT libc_readdir_r_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readdir_r(SB)\nGLOBL\t·libc_readdir_r_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readdir_r_trampoline_addr(SB)/8, $libc_readdir_r_trampoline<>(SB)\n\nTEXT libc_pipe_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pipe(SB)\nGLOBL\t·libc_pipe_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pipe_trampoline_addr(SB)/8, $libc_pipe_trampoline<>(SB)\n\nTEXT libc_getxattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getxattr(SB)\nGLOBL\t·libc_getxattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getxattr_trampoline_addr(SB)/8, $libc_getxattr_trampoline<>(SB)\n\nTEXT libc_fgetxattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fgetxattr(SB)\nGLOBL\t·libc_fgetxattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fgetxattr_trampoline_addr(SB)/8, $libc_fgetxattr_trampoline<>(SB)\n\nTEXT libc_setxattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setxattr(SB)\nGLOBL\t·libc_setxattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setxattr_trampoline_addr(SB)/8, $libc_setxattr_trampoline<>(SB)\n\nTEXT libc_fsetxattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fsetxattr(SB)\nGLOBL\t·libc_fsetxattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fsetxattr_trampoline_addr(SB)/8, $libc_fsetxattr_trampoline<>(SB)\n\nTEXT libc_removexattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_removexattr(SB)\nGLOBL\t·libc_removexattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_removexattr_trampoline_addr(SB)/8, $libc_removexattr_trampoline<>(SB)\n\nTEXT libc_fremovexattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fremovexattr(SB)\nGLOBL\t·libc_fremovexattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fremovexattr_trampoline_addr(SB)/8, $libc_fremovexattr_trampoline<>(SB)\n\nTEXT libc_listxattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_listxattr(SB)\nGLOBL\t·libc_listxattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_listxattr_trampoline_addr(SB)/8, $libc_listxattr_trampoline<>(SB)\n\nTEXT libc_flistxattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_flistxattr(SB)\nGLOBL\t·libc_flistxattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_flistxattr_trampoline_addr(SB)/8, $libc_flistxattr_trampoline<>(SB)\n\nTEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimensat(SB)\nGLOBL\t·libc_utimensat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB)\n\nTEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fcntl(SB)\nGLOBL\t·libc_fcntl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB)\n\nTEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kill(SB)\nGLOBL\t·libc_kill_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB)\n\nTEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ioctl(SB)\nGLOBL\t·libc_ioctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB)\n\nTEXT libc_renamex_np_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_renamex_np(SB)\nGLOBL\t·libc_renamex_np_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_renamex_np_trampoline_addr(SB)/8, $libc_renamex_np_trampoline<>(SB)\n\nTEXT libc_renameatx_np_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_renameatx_np(SB)\nGLOBL\t·libc_renameatx_np_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_renameatx_np_trampoline_addr(SB)/8, $libc_renameatx_np_trampoline<>(SB)\n\nTEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sysctl(SB)\nGLOBL\t·libc_sysctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB)\n\nTEXT libc_pthread_chdir_np_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pthread_chdir_np(SB)\nGLOBL\t·libc_pthread_chdir_np_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pthread_chdir_np_trampoline_addr(SB)/8, $libc_pthread_chdir_np_trampoline<>(SB)\n\nTEXT libc_pthread_fchdir_np_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pthread_fchdir_np(SB)\nGLOBL\t·libc_pthread_fchdir_np_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pthread_fchdir_np_trampoline_addr(SB)/8, $libc_pthread_fchdir_np_trampoline<>(SB)\n\nTEXT libc_connectx_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_connectx(SB)\nGLOBL\t·libc_connectx_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_connectx_trampoline_addr(SB)/8, $libc_connectx_trampoline<>(SB)\n\nTEXT libc_sendfile_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendfile(SB)\nGLOBL\t·libc_sendfile_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendfile_trampoline_addr(SB)/8, $libc_sendfile_trampoline<>(SB)\n\nTEXT libc_shmat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shmat(SB)\nGLOBL\t·libc_shmat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shmat_trampoline_addr(SB)/8, $libc_shmat_trampoline<>(SB)\n\nTEXT libc_shmctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shmctl(SB)\nGLOBL\t·libc_shmctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shmctl_trampoline_addr(SB)/8, $libc_shmctl_trampoline<>(SB)\n\nTEXT libc_shmdt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shmdt(SB)\nGLOBL\t·libc_shmdt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shmdt_trampoline_addr(SB)/8, $libc_shmdt_trampoline<>(SB)\n\nTEXT libc_shmget_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shmget(SB)\nGLOBL\t·libc_shmget_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shmget_trampoline_addr(SB)/8, $libc_shmget_trampoline<>(SB)\n\nTEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_access(SB)\nGLOBL\t·libc_access_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB)\n\nTEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_adjtime(SB)\nGLOBL\t·libc_adjtime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB)\n\nTEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chdir(SB)\nGLOBL\t·libc_chdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB)\n\nTEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chflags(SB)\nGLOBL\t·libc_chflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB)\n\nTEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chmod(SB)\nGLOBL\t·libc_chmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB)\n\nTEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chown(SB)\nGLOBL\t·libc_chown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB)\n\nTEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chroot(SB)\nGLOBL\t·libc_chroot_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB)\n\nTEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_clock_gettime(SB)\nGLOBL\t·libc_clock_gettime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB)\n\nTEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_close(SB)\nGLOBL\t·libc_close_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB)\n\nTEXT libc_clonefile_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_clonefile(SB)\nGLOBL\t·libc_clonefile_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_clonefile_trampoline_addr(SB)/8, $libc_clonefile_trampoline<>(SB)\n\nTEXT libc_clonefileat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_clonefileat(SB)\nGLOBL\t·libc_clonefileat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_clonefileat_trampoline_addr(SB)/8, $libc_clonefileat_trampoline<>(SB)\n\nTEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup(SB)\nGLOBL\t·libc_dup_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB)\n\nTEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup2(SB)\nGLOBL\t·libc_dup2_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB)\n\nTEXT libc_exchangedata_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_exchangedata(SB)\nGLOBL\t·libc_exchangedata_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_exchangedata_trampoline_addr(SB)/8, $libc_exchangedata_trampoline<>(SB)\n\nTEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_exit(SB)\nGLOBL\t·libc_exit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB)\n\nTEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_faccessat(SB)\nGLOBL\t·libc_faccessat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB)\n\nTEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchdir(SB)\nGLOBL\t·libc_fchdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB)\n\nTEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchflags(SB)\nGLOBL\t·libc_fchflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB)\n\nTEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmod(SB)\nGLOBL\t·libc_fchmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB)\n\nTEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmodat(SB)\nGLOBL\t·libc_fchmodat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB)\n\nTEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchown(SB)\nGLOBL\t·libc_fchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB)\n\nTEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchownat(SB)\nGLOBL\t·libc_fchownat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB)\n\nTEXT libc_fclonefileat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fclonefileat(SB)\nGLOBL\t·libc_fclonefileat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fclonefileat_trampoline_addr(SB)/8, $libc_fclonefileat_trampoline<>(SB)\n\nTEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_flock(SB)\nGLOBL\t·libc_flock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB)\n\nTEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fpathconf(SB)\nGLOBL\t·libc_fpathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB)\n\nTEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fsync(SB)\nGLOBL\t·libc_fsync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB)\n\nTEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ftruncate(SB)\nGLOBL\t·libc_ftruncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB)\n\nTEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getcwd(SB)\nGLOBL\t·libc_getcwd_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB)\n\nTEXT libc_getdtablesize_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getdtablesize(SB)\nGLOBL\t·libc_getdtablesize_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getdtablesize_trampoline_addr(SB)/8, $libc_getdtablesize_trampoline<>(SB)\n\nTEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getegid(SB)\nGLOBL\t·libc_getegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB)\n\nTEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_geteuid(SB)\nGLOBL\t·libc_geteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB)\n\nTEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgid(SB)\nGLOBL\t·libc_getgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB)\n\nTEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgid(SB)\nGLOBL\t·libc_getpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB)\n\nTEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgrp(SB)\nGLOBL\t·libc_getpgrp_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB)\n\nTEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpid(SB)\nGLOBL\t·libc_getpid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB)\n\nTEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getppid(SB)\nGLOBL\t·libc_getppid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB)\n\nTEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpriority(SB)\nGLOBL\t·libc_getpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB)\n\nTEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrlimit(SB)\nGLOBL\t·libc_getrlimit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB)\n\nTEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrusage(SB)\nGLOBL\t·libc_getrusage_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB)\n\nTEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsid(SB)\nGLOBL\t·libc_getsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB)\n\nTEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_gettimeofday(SB)\nGLOBL\t·libc_gettimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB)\n\nTEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getuid(SB)\nGLOBL\t·libc_getuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB)\n\nTEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_issetugid(SB)\nGLOBL\t·libc_issetugid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB)\n\nTEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kqueue(SB)\nGLOBL\t·libc_kqueue_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB)\n\nTEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lchown(SB)\nGLOBL\t·libc_lchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB)\n\nTEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_link(SB)\nGLOBL\t·libc_link_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB)\n\nTEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_linkat(SB)\nGLOBL\t·libc_linkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB)\n\nTEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_listen(SB)\nGLOBL\t·libc_listen_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB)\n\nTEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdir(SB)\nGLOBL\t·libc_mkdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB)\n\nTEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdirat(SB)\nGLOBL\t·libc_mkdirat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB)\n\nTEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifo(SB)\nGLOBL\t·libc_mkfifo_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB)\n\nTEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknod(SB)\nGLOBL\t·libc_mknod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB)\n\nTEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mount(SB)\nGLOBL\t·libc_mount_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB)\n\nTEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_open(SB)\nGLOBL\t·libc_open_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB)\n\nTEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_openat(SB)\nGLOBL\t·libc_openat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB)\n\nTEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pathconf(SB)\nGLOBL\t·libc_pathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB)\n\nTEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pread(SB)\nGLOBL\t·libc_pread_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB)\n\nTEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pwrite(SB)\nGLOBL\t·libc_pwrite_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB)\n\nTEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_read(SB)\nGLOBL\t·libc_read_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB)\n\nTEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlink(SB)\nGLOBL\t·libc_readlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB)\n\nTEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlinkat(SB)\nGLOBL\t·libc_readlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB)\n\nTEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rename(SB)\nGLOBL\t·libc_rename_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB)\n\nTEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_renameat(SB)\nGLOBL\t·libc_renameat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB)\n\nTEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_revoke(SB)\nGLOBL\t·libc_revoke_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB)\n\nTEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rmdir(SB)\nGLOBL\t·libc_rmdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB)\n\nTEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lseek(SB)\nGLOBL\t·libc_lseek_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB)\n\nTEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_select(SB)\nGLOBL\t·libc_select_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB)\n\nTEXT libc_setattrlist_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setattrlist(SB)\nGLOBL\t·libc_setattrlist_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setattrlist_trampoline_addr(SB)/8, $libc_setattrlist_trampoline<>(SB)\n\nTEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setegid(SB)\nGLOBL\t·libc_setegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB)\n\nTEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_seteuid(SB)\nGLOBL\t·libc_seteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB)\n\nTEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgid(SB)\nGLOBL\t·libc_setgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB)\n\nTEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setlogin(SB)\nGLOBL\t·libc_setlogin_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB)\n\nTEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpgid(SB)\nGLOBL\t·libc_setpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB)\n\nTEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpriority(SB)\nGLOBL\t·libc_setpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB)\n\nTEXT libc_setprivexec_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setprivexec(SB)\nGLOBL\t·libc_setprivexec_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setprivexec_trampoline_addr(SB)/8, $libc_setprivexec_trampoline<>(SB)\n\nTEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setregid(SB)\nGLOBL\t·libc_setregid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB)\n\nTEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setreuid(SB)\nGLOBL\t·libc_setreuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB)\n\nTEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsid(SB)\nGLOBL\t·libc_setsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB)\n\nTEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_settimeofday(SB)\nGLOBL\t·libc_settimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB)\n\nTEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setuid(SB)\nGLOBL\t·libc_setuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB)\n\nTEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlink(SB)\nGLOBL\t·libc_symlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB)\n\nTEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlinkat(SB)\nGLOBL\t·libc_symlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB)\n\nTEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sync(SB)\nGLOBL\t·libc_sync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB)\n\nTEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_truncate(SB)\nGLOBL\t·libc_truncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB)\n\nTEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_umask(SB)\nGLOBL\t·libc_umask_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB)\n\nTEXT libc_undelete_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_undelete(SB)\nGLOBL\t·libc_undelete_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_undelete_trampoline_addr(SB)/8, $libc_undelete_trampoline<>(SB)\n\nTEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlink(SB)\nGLOBL\t·libc_unlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB)\n\nTEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlinkat(SB)\nGLOBL\t·libc_unlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB)\n\nTEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unmount(SB)\nGLOBL\t·libc_unmount_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB)\n\nTEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_write(SB)\nGLOBL\t·libc_write_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB)\n\nTEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mmap(SB)\nGLOBL\t·libc_mmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB)\n\nTEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munmap(SB)\nGLOBL\t·libc_munmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB)\n\nTEXT libc_readv_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readv(SB)\nGLOBL\t·libc_readv_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readv_trampoline_addr(SB)/8, $libc_readv_trampoline<>(SB)\n\nTEXT libc_preadv_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_preadv(SB)\nGLOBL\t·libc_preadv_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_preadv_trampoline_addr(SB)/8, $libc_preadv_trampoline<>(SB)\n\nTEXT libc_writev_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_writev(SB)\nGLOBL\t·libc_writev_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_writev_trampoline_addr(SB)/8, $libc_writev_trampoline<>(SB)\n\nTEXT libc_pwritev_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pwritev(SB)\nGLOBL\t·libc_pwritev_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pwritev_trampoline_addr(SB)/8, $libc_pwritev_trampoline<>(SB)\n\nTEXT libc_fstat64_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstat64(SB)\nGLOBL\t·libc_fstat64_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstat64_trampoline_addr(SB)/8, $libc_fstat64_trampoline<>(SB)\n\nTEXT libc_fstatat64_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatat64(SB)\nGLOBL\t·libc_fstatat64_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatat64_trampoline_addr(SB)/8, $libc_fstatat64_trampoline<>(SB)\n\nTEXT libc_fstatfs64_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatfs64(SB)\nGLOBL\t·libc_fstatfs64_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatfs64_trampoline_addr(SB)/8, $libc_fstatfs64_trampoline<>(SB)\n\nTEXT libc_getfsstat64_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getfsstat64(SB)\nGLOBL\t·libc_getfsstat64_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getfsstat64_trampoline_addr(SB)/8, $libc_getfsstat64_trampoline<>(SB)\n\nTEXT libc_lstat64_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lstat64(SB)\nGLOBL\t·libc_lstat64_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lstat64_trampoline_addr(SB)/8, $libc_lstat64_trampoline<>(SB)\n\nTEXT libc_ptrace_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ptrace(SB)\nGLOBL\t·libc_ptrace_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ptrace_trampoline_addr(SB)/8, $libc_ptrace_trampoline<>(SB)\n\nTEXT libc_stat64_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_stat64(SB)\nGLOBL\t·libc_stat64_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_stat64_trampoline_addr(SB)/8, $libc_stat64_trampoline<>(SB)\n\nTEXT libc_statfs64_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_statfs64(SB)\nGLOBL\t·libc_statfs64_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_statfs64_trampoline_addr(SB)/8, $libc_statfs64_trampoline<>(SB)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go",
    "content": "// go run mksyscall.go -tags darwin,arm64 syscall_bsd.go syscall_darwin.go syscall_darwin_arm64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build darwin && arm64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgroups getgroups \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgroups setgroups \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_wait4_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_wait4 wait4 \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_accept_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_accept accept \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_bind_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_bind bind \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_connect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_connect connect \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socket_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socket socket \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockopt getsockopt \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsockopt setsockopt \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpeername_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpeername getpeername \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockname_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockname getsockname \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shutdown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shutdown shutdown \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socketpair_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socketpair socketpair \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvfrom_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvfrom recvfrom \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendto_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendto sendto \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvmsg recvmsg \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendmsg sendmsg \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kevent_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kevent kevent \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimes utimes \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_futimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_futimes futimes \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_poll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_poll poll \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_madvise_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_madvise madvise \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlock mlock \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlockall mlockall \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mprotect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mprotect mprotect \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_msync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_msync msync \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlock munlock \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlockall munlockall \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc closedir(dir uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_closedir_trampoline_addr, uintptr(dir), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_closedir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_closedir closedir \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc readdir_r(dir uintptr, entry *Dirent, result **Dirent) (res Errno) {\n\tr0, _, _ := syscall_syscall(libc_readdir_r_trampoline_addr, uintptr(dir), uintptr(unsafe.Pointer(entry)), uintptr(unsafe.Pointer(result)))\n\tres = Errno(r0)\n\treturn\n}\n\nvar libc_readdir_r_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readdir_r readdir_r \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe(p *[2]int32) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_pipe_trampoline_addr, uintptr(unsafe.Pointer(p)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pipe_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pipe pipe \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_getxattr_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getxattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getxattr getxattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_fgetxattr_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fgetxattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fgetxattr fgetxattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_setxattr_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setxattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setxattr setxattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fsetxattr_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fsetxattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fsetxattr fsetxattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc removexattr(path string, attr string, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_removexattr_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_removexattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_removexattr removexattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fremovexattr(fd int, attr string, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_fremovexattr_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fremovexattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fremovexattr fremovexattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc listxattr(path string, dest *byte, size int, options int) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_listxattr_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_listxattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_listxattr listxattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_flistxattr_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_flistxattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_flistxattr flistxattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_utimensat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimensat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimensat utimensat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (val int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fcntl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fcntl fcntl \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kill(pid int, signum int, posix int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), uintptr(posix))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kill_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kill kill \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ioctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ioctl ioctl \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc renamexNp(from string, to string, flag uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_renamex_np_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flag))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_renamex_np_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_renamex_np renamex_np \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc renameatxNp(fromfd int, from string, tofd int, to string, flag uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_renameatx_np_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), uintptr(flag), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_renameatx_np_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_renameatx_np renameatx_np \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sysctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sysctl sysctl \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pthread_chdir_np(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_pthread_chdir_np_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pthread_chdir_np_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pthread_chdir_np pthread_chdir_np \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pthread_fchdir_np(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_pthread_fchdir_np_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pthread_fchdir_np_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pthread_fchdir_np pthread_fchdir_np \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connectx(fd int, endpoints *SaEndpoints, associd SaeAssocID, flags uint32, iov []Iovec, n *uintptr, connid *SaeConnID) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(iov) > 0 {\n\t\t_p0 = unsafe.Pointer(&iov[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall9(libc_connectx_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(endpoints)), uintptr(associd), uintptr(flags), uintptr(_p0), uintptr(len(iov)), uintptr(unsafe.Pointer(n)), uintptr(unsafe.Pointer(connid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_connectx_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_connectx connectx \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_sendfile_trampoline_addr, uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendfile_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendfile sendfile \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc shmat(id int, addr uintptr, flag int) (ret uintptr, err error) {\n\tr0, _, e1 := syscall_syscall(libc_shmat_trampoline_addr, uintptr(id), uintptr(addr), uintptr(flag))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shmat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shmat shmat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc shmctl(id int, cmd int, buf *SysvShmDesc) (result int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_shmctl_trampoline_addr, uintptr(id), uintptr(cmd), uintptr(unsafe.Pointer(buf)))\n\tresult = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shmctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shmctl shmctl \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc shmdt(addr uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_shmdt_trampoline_addr, uintptr(addr), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shmdt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shmdt shmdt \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc shmget(key int, size int, flag int) (id int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_shmget_trampoline_addr, uintptr(key), uintptr(size), uintptr(flag))\n\tid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shmget_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shmget shmget \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_access_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_access access \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_adjtime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_adjtime adjtime \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chdir chdir \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chflags chflags \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chmod chmod \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chown chown \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chroot_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chroot chroot \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_clock_gettime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_clock_gettime clock_gettime \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_close_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_close close \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Clonefile(src string, dst string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(src)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(dst)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_clonefile_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_clonefile_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_clonefile clonefile \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Clonefileat(srcDirfd int, src string, dstDirfd int, dst string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(src)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(dst)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_clonefileat_trampoline_addr, uintptr(srcDirfd), uintptr(unsafe.Pointer(_p0)), uintptr(dstDirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_clonefileat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_clonefileat clonefileat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup dup \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup2 dup2 \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exchangedata(path1 string, path2 string, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path1)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(path2)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_exchangedata_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_exchangedata_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_exchangedata exchangedata \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tsyscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0)\n\treturn\n}\n\nvar libc_exit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_exit exit \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_faccessat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_faccessat faccessat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchdir fchdir \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchflags fchflags \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmod fchmod \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmodat fchmodat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchown fchown \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchownat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchownat fchownat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fclonefileat(srcDirfd int, dstDirfd int, dst string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(dst)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fclonefileat_trampoline_addr, uintptr(srcDirfd), uintptr(dstDirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fclonefileat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fclonefileat fclonefileat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_flock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_flock flock \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fpathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fpathconf fpathconf \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fsync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fsync fsync \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ftruncate_trampoline_addr, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ftruncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ftruncate ftruncate \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getcwd_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getcwd getcwd \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdtablesize() (size int) {\n\tr0, _, _ := syscall_syscall(libc_getdtablesize_trampoline_addr, 0, 0, 0)\n\tsize = int(r0)\n\treturn\n}\n\nvar libc_getdtablesize_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getdtablesize getdtablesize \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\nvar libc_getegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getegid getegid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_geteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_geteuid geteuid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\nvar libc_getgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgid getgid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgid getpgid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\nvar libc_getpgrp_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgrp getpgrp \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\nvar libc_getpid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpid getpid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\nvar libc_getppid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getppid getppid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpriority getpriority \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrlimit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrlimit getrlimit \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrusage_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrusage getrusage \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsid getsid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_gettimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_gettimeofday gettimeofday \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_getuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getuid getuid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := syscall_rawSyscall(libc_issetugid_trampoline_addr, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\nvar libc_issetugid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_issetugid issetugid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kqueue_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kqueue kqueue \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lchown lchown \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_link_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_link link \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_linkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_linkat linkat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_listen_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_listen listen \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdir mkdir \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdirat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdirat mkdirat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifo_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifo mkfifo \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknod mknod \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(fsType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(dir)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mount mount \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_open_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_open_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_open open \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_openat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_openat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_openat openat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_pathconf_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pathconf pathconf \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pread_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pread_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pread pread \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pwrite_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pwrite_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pwrite pwrite \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_read_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_read read \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_readlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlink readlink \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_readlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlinkat readlinkat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rename_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rename_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rename rename \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_renameat_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_renameat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_renameat renameat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_revoke_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_revoke_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_revoke revoke \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rmdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rmdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rmdir rmdir \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := syscall_syscall(libc_lseek_trampoline_addr, uintptr(fd), uintptr(offset), uintptr(whence))\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lseek_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lseek lseek \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_select_trampoline_addr, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_select_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_select select \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setattrlist(path string, attrlist *Attrlist, attrBuf []byte, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(attrBuf) > 0 {\n\t\t_p1 = unsafe.Pointer(&attrBuf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_setattrlist_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(attrlist)), uintptr(_p1), uintptr(len(attrBuf)), uintptr(options), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setattrlist_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setattrlist setattrlist \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setegid setegid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_seteuid_trampoline_addr, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_seteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_seteuid seteuid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgid_trampoline_addr, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgid setgid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_setlogin_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setlogin_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setlogin setlogin \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setpgid_trampoline_addr, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpgid setpgid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_setpriority_trampoline_addr, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpriority setpriority \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setprivexec(flag int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_setprivexec_trampoline_addr, uintptr(flag), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setprivexec_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setprivexec setprivexec \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setregid_trampoline_addr, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setregid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setregid setregid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setreuid_trampoline_addr, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setreuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setreuid setreuid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsid setsid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_settimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_settimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_settimeofday settimeofday \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setuid_trampoline_addr, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setuid setuid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlink symlink \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlinkat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlinkat symlinkat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := syscall_syscall(libc_sync_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sync sync \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_truncate_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_truncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_truncate truncate \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := syscall_syscall(libc_umask_trampoline_addr, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\nvar libc_umask_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_umask umask \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Undelete(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_undelete_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_undelete_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_undelete undelete \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlink unlink \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlinkat unlinkat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unmount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unmount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unmount unmount \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_write_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_write write \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_mmap_trampoline_addr, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mmap mmap \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_munmap_trampoline_addr, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munmap munmap \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc readv(fd int, iovecs []Iovec) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(iovecs) > 0 {\n\t\t_p0 = unsafe.Pointer(&iovecs[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_readv_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readv_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readv readv \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc preadv(fd int, iovecs []Iovec, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(iovecs) > 0 {\n\t\t_p0 = unsafe.Pointer(&iovecs[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_preadv_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_preadv_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_preadv preadv \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writev(fd int, iovecs []Iovec) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(iovecs) > 0 {\n\t\t_p0 = unsafe.Pointer(&iovecs[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_writev_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_writev_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_writev writev \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwritev(fd int, iovecs []Iovec, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(iovecs) > 0 {\n\t\t_p0 = unsafe.Pointer(&iovecs[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pwritev_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pwritev_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pwritev pwritev \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstat fstat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fstatat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatat fstatat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstatfs_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatfs fstatfs \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getfsstat_trampoline_addr, uintptr(buf), uintptr(size), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getfsstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getfsstat getfsstat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lstat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lstat lstat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptrace1(request int, pid int, addr uintptr, data uintptr) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_ptrace_trampoline_addr, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ptrace_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ptrace ptrace \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_stat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_stat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_stat stat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_statfs_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_statfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_statfs statfs \"/usr/lib/libSystem.B.dylib\"\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s",
    "content": "// go run mkasm.go darwin arm64\n// Code generated by the command above; DO NOT EDIT.\n\n#include \"textflag.h\"\n\nTEXT libc_fdopendir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fdopendir(SB)\nGLOBL\t·libc_fdopendir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fdopendir_trampoline_addr(SB)/8, $libc_fdopendir_trampoline<>(SB)\n\nTEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgroups(SB)\nGLOBL\t·libc_getgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB)\n\nTEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgroups(SB)\nGLOBL\t·libc_setgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB)\n\nTEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_wait4(SB)\nGLOBL\t·libc_wait4_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB)\n\nTEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_accept(SB)\nGLOBL\t·libc_accept_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB)\n\nTEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_bind(SB)\nGLOBL\t·libc_bind_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB)\n\nTEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_connect(SB)\nGLOBL\t·libc_connect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB)\n\nTEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socket(SB)\nGLOBL\t·libc_socket_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB)\n\nTEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockopt(SB)\nGLOBL\t·libc_getsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB)\n\nTEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsockopt(SB)\nGLOBL\t·libc_setsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB)\n\nTEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpeername(SB)\nGLOBL\t·libc_getpeername_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB)\n\nTEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockname(SB)\nGLOBL\t·libc_getsockname_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB)\n\nTEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shutdown(SB)\nGLOBL\t·libc_shutdown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB)\n\nTEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socketpair(SB)\nGLOBL\t·libc_socketpair_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB)\n\nTEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvfrom(SB)\nGLOBL\t·libc_recvfrom_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB)\n\nTEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendto(SB)\nGLOBL\t·libc_sendto_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB)\n\nTEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvmsg(SB)\nGLOBL\t·libc_recvmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB)\n\nTEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendmsg(SB)\nGLOBL\t·libc_sendmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB)\n\nTEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kevent(SB)\nGLOBL\t·libc_kevent_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB)\n\nTEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimes(SB)\nGLOBL\t·libc_utimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB)\n\nTEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_futimes(SB)\nGLOBL\t·libc_futimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB)\n\nTEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_poll(SB)\nGLOBL\t·libc_poll_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB)\n\nTEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_madvise(SB)\nGLOBL\t·libc_madvise_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB)\n\nTEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlock(SB)\nGLOBL\t·libc_mlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB)\n\nTEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlockall(SB)\nGLOBL\t·libc_mlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB)\n\nTEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mprotect(SB)\nGLOBL\t·libc_mprotect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB)\n\nTEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_msync(SB)\nGLOBL\t·libc_msync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB)\n\nTEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlock(SB)\nGLOBL\t·libc_munlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB)\n\nTEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlockall(SB)\nGLOBL\t·libc_munlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB)\n\nTEXT libc_closedir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_closedir(SB)\nGLOBL\t·libc_closedir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_closedir_trampoline_addr(SB)/8, $libc_closedir_trampoline<>(SB)\n\nTEXT libc_readdir_r_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readdir_r(SB)\nGLOBL\t·libc_readdir_r_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readdir_r_trampoline_addr(SB)/8, $libc_readdir_r_trampoline<>(SB)\n\nTEXT libc_pipe_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pipe(SB)\nGLOBL\t·libc_pipe_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pipe_trampoline_addr(SB)/8, $libc_pipe_trampoline<>(SB)\n\nTEXT libc_getxattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getxattr(SB)\nGLOBL\t·libc_getxattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getxattr_trampoline_addr(SB)/8, $libc_getxattr_trampoline<>(SB)\n\nTEXT libc_fgetxattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fgetxattr(SB)\nGLOBL\t·libc_fgetxattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fgetxattr_trampoline_addr(SB)/8, $libc_fgetxattr_trampoline<>(SB)\n\nTEXT libc_setxattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setxattr(SB)\nGLOBL\t·libc_setxattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setxattr_trampoline_addr(SB)/8, $libc_setxattr_trampoline<>(SB)\n\nTEXT libc_fsetxattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fsetxattr(SB)\nGLOBL\t·libc_fsetxattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fsetxattr_trampoline_addr(SB)/8, $libc_fsetxattr_trampoline<>(SB)\n\nTEXT libc_removexattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_removexattr(SB)\nGLOBL\t·libc_removexattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_removexattr_trampoline_addr(SB)/8, $libc_removexattr_trampoline<>(SB)\n\nTEXT libc_fremovexattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fremovexattr(SB)\nGLOBL\t·libc_fremovexattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fremovexattr_trampoline_addr(SB)/8, $libc_fremovexattr_trampoline<>(SB)\n\nTEXT libc_listxattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_listxattr(SB)\nGLOBL\t·libc_listxattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_listxattr_trampoline_addr(SB)/8, $libc_listxattr_trampoline<>(SB)\n\nTEXT libc_flistxattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_flistxattr(SB)\nGLOBL\t·libc_flistxattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_flistxattr_trampoline_addr(SB)/8, $libc_flistxattr_trampoline<>(SB)\n\nTEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimensat(SB)\nGLOBL\t·libc_utimensat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB)\n\nTEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fcntl(SB)\nGLOBL\t·libc_fcntl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB)\n\nTEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kill(SB)\nGLOBL\t·libc_kill_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB)\n\nTEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ioctl(SB)\nGLOBL\t·libc_ioctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB)\n\nTEXT libc_renamex_np_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_renamex_np(SB)\nGLOBL\t·libc_renamex_np_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_renamex_np_trampoline_addr(SB)/8, $libc_renamex_np_trampoline<>(SB)\n\nTEXT libc_renameatx_np_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_renameatx_np(SB)\nGLOBL\t·libc_renameatx_np_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_renameatx_np_trampoline_addr(SB)/8, $libc_renameatx_np_trampoline<>(SB)\n\nTEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sysctl(SB)\nGLOBL\t·libc_sysctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB)\n\nTEXT libc_pthread_chdir_np_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pthread_chdir_np(SB)\nGLOBL\t·libc_pthread_chdir_np_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pthread_chdir_np_trampoline_addr(SB)/8, $libc_pthread_chdir_np_trampoline<>(SB)\n\nTEXT libc_pthread_fchdir_np_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pthread_fchdir_np(SB)\nGLOBL\t·libc_pthread_fchdir_np_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pthread_fchdir_np_trampoline_addr(SB)/8, $libc_pthread_fchdir_np_trampoline<>(SB)\n\nTEXT libc_connectx_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_connectx(SB)\nGLOBL\t·libc_connectx_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_connectx_trampoline_addr(SB)/8, $libc_connectx_trampoline<>(SB)\n\nTEXT libc_sendfile_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendfile(SB)\nGLOBL\t·libc_sendfile_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendfile_trampoline_addr(SB)/8, $libc_sendfile_trampoline<>(SB)\n\nTEXT libc_shmat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shmat(SB)\nGLOBL\t·libc_shmat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shmat_trampoline_addr(SB)/8, $libc_shmat_trampoline<>(SB)\n\nTEXT libc_shmctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shmctl(SB)\nGLOBL\t·libc_shmctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shmctl_trampoline_addr(SB)/8, $libc_shmctl_trampoline<>(SB)\n\nTEXT libc_shmdt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shmdt(SB)\nGLOBL\t·libc_shmdt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shmdt_trampoline_addr(SB)/8, $libc_shmdt_trampoline<>(SB)\n\nTEXT libc_shmget_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shmget(SB)\nGLOBL\t·libc_shmget_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shmget_trampoline_addr(SB)/8, $libc_shmget_trampoline<>(SB)\n\nTEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_access(SB)\nGLOBL\t·libc_access_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB)\n\nTEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_adjtime(SB)\nGLOBL\t·libc_adjtime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB)\n\nTEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chdir(SB)\nGLOBL\t·libc_chdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB)\n\nTEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chflags(SB)\nGLOBL\t·libc_chflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB)\n\nTEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chmod(SB)\nGLOBL\t·libc_chmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB)\n\nTEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chown(SB)\nGLOBL\t·libc_chown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB)\n\nTEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chroot(SB)\nGLOBL\t·libc_chroot_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB)\n\nTEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_clock_gettime(SB)\nGLOBL\t·libc_clock_gettime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB)\n\nTEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_close(SB)\nGLOBL\t·libc_close_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB)\n\nTEXT libc_clonefile_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_clonefile(SB)\nGLOBL\t·libc_clonefile_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_clonefile_trampoline_addr(SB)/8, $libc_clonefile_trampoline<>(SB)\n\nTEXT libc_clonefileat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_clonefileat(SB)\nGLOBL\t·libc_clonefileat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_clonefileat_trampoline_addr(SB)/8, $libc_clonefileat_trampoline<>(SB)\n\nTEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup(SB)\nGLOBL\t·libc_dup_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB)\n\nTEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup2(SB)\nGLOBL\t·libc_dup2_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB)\n\nTEXT libc_exchangedata_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_exchangedata(SB)\nGLOBL\t·libc_exchangedata_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_exchangedata_trampoline_addr(SB)/8, $libc_exchangedata_trampoline<>(SB)\n\nTEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_exit(SB)\nGLOBL\t·libc_exit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB)\n\nTEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_faccessat(SB)\nGLOBL\t·libc_faccessat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB)\n\nTEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchdir(SB)\nGLOBL\t·libc_fchdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB)\n\nTEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchflags(SB)\nGLOBL\t·libc_fchflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB)\n\nTEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmod(SB)\nGLOBL\t·libc_fchmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB)\n\nTEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmodat(SB)\nGLOBL\t·libc_fchmodat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB)\n\nTEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchown(SB)\nGLOBL\t·libc_fchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB)\n\nTEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchownat(SB)\nGLOBL\t·libc_fchownat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB)\n\nTEXT libc_fclonefileat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fclonefileat(SB)\nGLOBL\t·libc_fclonefileat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fclonefileat_trampoline_addr(SB)/8, $libc_fclonefileat_trampoline<>(SB)\n\nTEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_flock(SB)\nGLOBL\t·libc_flock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB)\n\nTEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fpathconf(SB)\nGLOBL\t·libc_fpathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB)\n\nTEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fsync(SB)\nGLOBL\t·libc_fsync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB)\n\nTEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ftruncate(SB)\nGLOBL\t·libc_ftruncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB)\n\nTEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getcwd(SB)\nGLOBL\t·libc_getcwd_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB)\n\nTEXT libc_getdtablesize_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getdtablesize(SB)\nGLOBL\t·libc_getdtablesize_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getdtablesize_trampoline_addr(SB)/8, $libc_getdtablesize_trampoline<>(SB)\n\nTEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getegid(SB)\nGLOBL\t·libc_getegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB)\n\nTEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_geteuid(SB)\nGLOBL\t·libc_geteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB)\n\nTEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgid(SB)\nGLOBL\t·libc_getgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB)\n\nTEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgid(SB)\nGLOBL\t·libc_getpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB)\n\nTEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgrp(SB)\nGLOBL\t·libc_getpgrp_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB)\n\nTEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpid(SB)\nGLOBL\t·libc_getpid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB)\n\nTEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getppid(SB)\nGLOBL\t·libc_getppid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB)\n\nTEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpriority(SB)\nGLOBL\t·libc_getpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB)\n\nTEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrlimit(SB)\nGLOBL\t·libc_getrlimit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB)\n\nTEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrusage(SB)\nGLOBL\t·libc_getrusage_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB)\n\nTEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsid(SB)\nGLOBL\t·libc_getsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB)\n\nTEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_gettimeofday(SB)\nGLOBL\t·libc_gettimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB)\n\nTEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getuid(SB)\nGLOBL\t·libc_getuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB)\n\nTEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_issetugid(SB)\nGLOBL\t·libc_issetugid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB)\n\nTEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kqueue(SB)\nGLOBL\t·libc_kqueue_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB)\n\nTEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lchown(SB)\nGLOBL\t·libc_lchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB)\n\nTEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_link(SB)\nGLOBL\t·libc_link_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB)\n\nTEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_linkat(SB)\nGLOBL\t·libc_linkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB)\n\nTEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_listen(SB)\nGLOBL\t·libc_listen_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB)\n\nTEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdir(SB)\nGLOBL\t·libc_mkdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB)\n\nTEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdirat(SB)\nGLOBL\t·libc_mkdirat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB)\n\nTEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifo(SB)\nGLOBL\t·libc_mkfifo_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB)\n\nTEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknod(SB)\nGLOBL\t·libc_mknod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB)\n\nTEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mount(SB)\nGLOBL\t·libc_mount_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB)\n\nTEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_open(SB)\nGLOBL\t·libc_open_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB)\n\nTEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_openat(SB)\nGLOBL\t·libc_openat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB)\n\nTEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pathconf(SB)\nGLOBL\t·libc_pathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB)\n\nTEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pread(SB)\nGLOBL\t·libc_pread_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB)\n\nTEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pwrite(SB)\nGLOBL\t·libc_pwrite_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB)\n\nTEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_read(SB)\nGLOBL\t·libc_read_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB)\n\nTEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlink(SB)\nGLOBL\t·libc_readlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB)\n\nTEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlinkat(SB)\nGLOBL\t·libc_readlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB)\n\nTEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rename(SB)\nGLOBL\t·libc_rename_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB)\n\nTEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_renameat(SB)\nGLOBL\t·libc_renameat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB)\n\nTEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_revoke(SB)\nGLOBL\t·libc_revoke_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB)\n\nTEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rmdir(SB)\nGLOBL\t·libc_rmdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB)\n\nTEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lseek(SB)\nGLOBL\t·libc_lseek_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB)\n\nTEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_select(SB)\nGLOBL\t·libc_select_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB)\n\nTEXT libc_setattrlist_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setattrlist(SB)\nGLOBL\t·libc_setattrlist_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setattrlist_trampoline_addr(SB)/8, $libc_setattrlist_trampoline<>(SB)\n\nTEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setegid(SB)\nGLOBL\t·libc_setegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB)\n\nTEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_seteuid(SB)\nGLOBL\t·libc_seteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB)\n\nTEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgid(SB)\nGLOBL\t·libc_setgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB)\n\nTEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setlogin(SB)\nGLOBL\t·libc_setlogin_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB)\n\nTEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpgid(SB)\nGLOBL\t·libc_setpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB)\n\nTEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpriority(SB)\nGLOBL\t·libc_setpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB)\n\nTEXT libc_setprivexec_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setprivexec(SB)\nGLOBL\t·libc_setprivexec_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setprivexec_trampoline_addr(SB)/8, $libc_setprivexec_trampoline<>(SB)\n\nTEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setregid(SB)\nGLOBL\t·libc_setregid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB)\n\nTEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setreuid(SB)\nGLOBL\t·libc_setreuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB)\n\nTEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsid(SB)\nGLOBL\t·libc_setsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB)\n\nTEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_settimeofday(SB)\nGLOBL\t·libc_settimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB)\n\nTEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setuid(SB)\nGLOBL\t·libc_setuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB)\n\nTEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlink(SB)\nGLOBL\t·libc_symlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB)\n\nTEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlinkat(SB)\nGLOBL\t·libc_symlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB)\n\nTEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sync(SB)\nGLOBL\t·libc_sync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB)\n\nTEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_truncate(SB)\nGLOBL\t·libc_truncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB)\n\nTEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_umask(SB)\nGLOBL\t·libc_umask_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB)\n\nTEXT libc_undelete_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_undelete(SB)\nGLOBL\t·libc_undelete_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_undelete_trampoline_addr(SB)/8, $libc_undelete_trampoline<>(SB)\n\nTEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlink(SB)\nGLOBL\t·libc_unlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB)\n\nTEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlinkat(SB)\nGLOBL\t·libc_unlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB)\n\nTEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unmount(SB)\nGLOBL\t·libc_unmount_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB)\n\nTEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_write(SB)\nGLOBL\t·libc_write_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB)\n\nTEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mmap(SB)\nGLOBL\t·libc_mmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB)\n\nTEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munmap(SB)\nGLOBL\t·libc_munmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB)\n\nTEXT libc_readv_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readv(SB)\nGLOBL\t·libc_readv_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readv_trampoline_addr(SB)/8, $libc_readv_trampoline<>(SB)\n\nTEXT libc_preadv_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_preadv(SB)\nGLOBL\t·libc_preadv_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_preadv_trampoline_addr(SB)/8, $libc_preadv_trampoline<>(SB)\n\nTEXT libc_writev_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_writev(SB)\nGLOBL\t·libc_writev_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_writev_trampoline_addr(SB)/8, $libc_writev_trampoline<>(SB)\n\nTEXT libc_pwritev_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pwritev(SB)\nGLOBL\t·libc_pwritev_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pwritev_trampoline_addr(SB)/8, $libc_pwritev_trampoline<>(SB)\n\nTEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstat(SB)\nGLOBL\t·libc_fstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstat_trampoline_addr(SB)/8, $libc_fstat_trampoline<>(SB)\n\nTEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatat(SB)\nGLOBL\t·libc_fstatat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatat_trampoline_addr(SB)/8, $libc_fstatat_trampoline<>(SB)\n\nTEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatfs(SB)\nGLOBL\t·libc_fstatfs_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatfs_trampoline_addr(SB)/8, $libc_fstatfs_trampoline<>(SB)\n\nTEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getfsstat(SB)\nGLOBL\t·libc_getfsstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getfsstat_trampoline_addr(SB)/8, $libc_getfsstat_trampoline<>(SB)\n\nTEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lstat(SB)\nGLOBL\t·libc_lstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lstat_trampoline_addr(SB)/8, $libc_lstat_trampoline<>(SB)\n\nTEXT libc_ptrace_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ptrace(SB)\nGLOBL\t·libc_ptrace_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ptrace_trampoline_addr(SB)/8, $libc_ptrace_trampoline<>(SB)\n\nTEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_stat(SB)\nGLOBL\t·libc_stat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_stat_trampoline_addr(SB)/8, $libc_stat_trampoline<>(SB)\n\nTEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_statfs(SB)\nGLOBL\t·libc_statfs_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_statfs_trampoline_addr(SB)/8, $libc_statfs_trampoline<>(SB)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go",
    "content": "// go run mksyscall.go -dragonfly -tags dragonfly,amd64 syscall_bsd.go syscall_dragonfly.go syscall_dragonfly_amd64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build dragonfly && amd64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe() (r int, w int, err error) {\n\tr0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)\n\tr = int(r0)\n\tw = int(r1)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (r int, w int, err error) {\n\tr0, r1, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tr = int(r0)\n\tw = int(r1)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc extpread(fd int, p []byte, flags int, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTPREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(offset), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc extpwrite(fd int, p []byte, flags int, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTPWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(offset), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdtablesize() (size int) {\n\tr0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)\n\tsize = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(fd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(whence), 0, 0)\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Undelete(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), 0, 0)\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go",
    "content": "// go run mksyscall.go -l32 -tags freebsd,386 syscall_bsd.go syscall_freebsd.go syscall_freebsd_386.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build freebsd && 386\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptrace(request int, pid int, addr uintptr, data int) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptracePtr(request int, pid int, addr unsafe.Pointer, data int) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc CapEnter() (err error) {\n\t_, _, e1 := Syscall(SYS_CAP_ENTER, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc capRightsGet(version int, fd int, rightsp *CapRights) (err error) {\n\t_, _, e1 := Syscall(SYS___CAP_RIGHTS_GET, uintptr(version), uintptr(fd), uintptr(unsafe.Pointer(rightsp)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc capRightsLimit(fd int, rightsp *CapRights) (err error) {\n\t_, _, e1 := Syscall(SYS_CAP_RIGHTS_LIMIT, uintptr(fd), uintptr(unsafe.Pointer(rightsp)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32), uintptr(advice))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), uintptr(length>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getdirentries(fd int, buf []byte, basep *uint64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdtablesize() (size int) {\n\tr0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)\n\tsize = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(fd int, path string, mode uint32, dev uint64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), uintptr(dev>>32), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(fdat), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(whence), 0, 0)\n\tnewoffset = int64(int64(r1)<<32 | int64(r0))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Undelete(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos), uintptr(pos>>32), 0, 0)\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go",
    "content": "// go run mksyscall.go -tags freebsd,amd64 syscall_bsd.go syscall_freebsd.go syscall_freebsd_amd64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build freebsd && amd64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptrace(request int, pid int, addr uintptr, data int) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptracePtr(request int, pid int, addr unsafe.Pointer, data int) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc CapEnter() (err error) {\n\t_, _, e1 := Syscall(SYS_CAP_ENTER, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc capRightsGet(version int, fd int, rightsp *CapRights) (err error) {\n\t_, _, e1 := Syscall(SYS___CAP_RIGHTS_GET, uintptr(version), uintptr(fd), uintptr(unsafe.Pointer(rightsp)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc capRightsLimit(fd int, rightsp *CapRights) (err error) {\n\t_, _, e1 := Syscall(SYS_CAP_RIGHTS_LIMIT, uintptr(fd), uintptr(unsafe.Pointer(rightsp)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getdirentries(fd int, buf []byte, basep *uint64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdtablesize() (size int) {\n\tr0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)\n\tsize = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(fd int, path string, mode uint32, dev uint64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(fdat), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Undelete(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go",
    "content": "// go run mksyscall.go -l32 -arm -tags freebsd,arm syscall_bsd.go syscall_freebsd.go syscall_freebsd_arm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build freebsd && arm\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptrace(request int, pid int, addr uintptr, data int) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptracePtr(request int, pid int, addr unsafe.Pointer, data int) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc CapEnter() (err error) {\n\t_, _, e1 := Syscall(SYS_CAP_ENTER, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc capRightsGet(version int, fd int, rightsp *CapRights) (err error) {\n\t_, _, e1 := Syscall(SYS___CAP_RIGHTS_GET, uintptr(version), uintptr(fd), uintptr(unsafe.Pointer(rightsp)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc capRightsLimit(fd int, rightsp *CapRights) (err error) {\n\t_, _, e1 := Syscall(SYS_CAP_RIGHTS_LIMIT, uintptr(fd), uintptr(unsafe.Pointer(rightsp)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall9(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getdirentries(fd int, buf []byte, basep *uint64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdtablesize() (size int) {\n\tr0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)\n\tsize = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(fd int, path string, mode uint32, dev uint64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, uintptr(dev), uintptr(dev>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(fdat), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0)\n\tnewoffset = int64(int64(r1)<<32 | int64(r0))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Undelete(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0)\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go",
    "content": "// go run mksyscall.go -tags freebsd,arm64 syscall_bsd.go syscall_freebsd.go syscall_freebsd_arm64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build freebsd && arm64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptrace(request int, pid int, addr uintptr, data int) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptracePtr(request int, pid int, addr unsafe.Pointer, data int) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc CapEnter() (err error) {\n\t_, _, e1 := Syscall(SYS_CAP_ENTER, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc capRightsGet(version int, fd int, rightsp *CapRights) (err error) {\n\t_, _, e1 := Syscall(SYS___CAP_RIGHTS_GET, uintptr(version), uintptr(fd), uintptr(unsafe.Pointer(rightsp)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc capRightsLimit(fd int, rightsp *CapRights) (err error) {\n\t_, _, e1 := Syscall(SYS_CAP_RIGHTS_LIMIT, uintptr(fd), uintptr(unsafe.Pointer(rightsp)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getdirentries(fd int, buf []byte, basep *uint64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdtablesize() (size int) {\n\tr0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)\n\tsize = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(fd int, path string, mode uint32, dev uint64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(fdat), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Undelete(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsyscall_freebsd_riscv64.go",
    "content": "// go run mksyscall.go -tags freebsd,riscv64 syscall_bsd.go syscall_freebsd.go syscall_freebsd_riscv64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build freebsd && riscv64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptrace(request int, pid int, addr uintptr, data int) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptracePtr(request int, pid int, addr unsafe.Pointer, data int) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc CapEnter() (err error) {\n\t_, _, e1 := Syscall(SYS_CAP_ENTER, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc capRightsGet(version int, fd int, rightsp *CapRights) (err error) {\n\t_, _, e1 := Syscall(SYS___CAP_RIGHTS_GET, uintptr(version), uintptr(fd), uintptr(unsafe.Pointer(rightsp)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc capRightsLimit(fd int, rightsp *CapRights) (err error) {\n\t_, _, e1 := Syscall(SYS_CAP_RIGHTS_LIMIT, uintptr(fd), uintptr(unsafe.Pointer(rightsp)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getdirentries(fd int, buf []byte, basep *uint64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdtablesize() (size int) {\n\tr0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)\n\tsize = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(fd int, path string, mode uint32, dev uint64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(fdat), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Undelete(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsyscall_illumos_amd64.go",
    "content": "// go run mksyscall_solaris.go -illumos -tags illumos,amd64 syscall_illumos.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build illumos && amd64\n\npackage unix\n\nimport (\n\t\"unsafe\"\n)\n\n//go:cgo_import_dynamic libc_readv readv \"libc.so\"\n//go:cgo_import_dynamic libc_preadv preadv \"libc.so\"\n//go:cgo_import_dynamic libc_writev writev \"libc.so\"\n//go:cgo_import_dynamic libc_pwritev pwritev \"libc.so\"\n//go:cgo_import_dynamic libc_accept4 accept4 \"libsocket.so\"\n\n//go:linkname procreadv libc_readv\n//go:linkname procpreadv libc_preadv\n//go:linkname procwritev libc_writev\n//go:linkname procpwritev libc_pwritev\n//go:linkname procaccept4 libc_accept4\n\nvar (\n\tprocreadv,\n\tprocpreadv,\n\tprocwritev,\n\tprocpwritev,\n\tprocaccept4 syscallFunc\n)\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc readv(fd int, iovs []Iovec) (n int, err error) {\n\tvar _p0 *Iovec\n\tif len(iovs) > 0 {\n\t\t_p0 = &iovs[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procreadv)), 3, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(iovs)), 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc preadv(fd int, iovs []Iovec, off int64) (n int, err error) {\n\tvar _p0 *Iovec\n\tif len(iovs) > 0 {\n\t\t_p0 = &iovs[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procpreadv)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(iovs)), uintptr(off), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writev(fd int, iovs []Iovec) (n int, err error) {\n\tvar _p0 *Iovec\n\tif len(iovs) > 0 {\n\t\t_p0 = &iovs[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procwritev)), 3, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(iovs)), 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwritev(fd int, iovs []Iovec, off int64) (n int, err error) {\n\tvar _p0 *Iovec\n\tif len(iovs) > 0 {\n\t\t_p0 = &iovs[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procpwritev)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(iovs)), uintptr(off), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procaccept4)), 4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsyscall_linux.go",
    "content": "// Code generated by mkmerge; DO NOT EDIT.\n\n//go:build linux\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc FanotifyInit(flags uint, event_f_flags uint) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_FANOTIFY_INIT, uintptr(flags), uintptr(event_f_flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fchmodat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fchmodat2(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT2, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc openat2(dirfd int, path string, open_how *OpenHow, size int) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT2, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(open_how)), uintptr(size), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Waitid(idType int, id int, info *Siginfo, options int, rusage *Rusage) (err error) {\n\t_, _, e1 := Syscall6(SYS_WAITID, uintptr(idType), uintptr(id), uintptr(unsafe.Pointer(info)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlJoin(cmd int, arg2 string) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(arg2)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(arg3)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(arg4)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(payload) > 0 {\n\t\t_p0 = unsafe.Pointer(&payload[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlRestrictKeyringByType(cmd int, arg2 int, keyType string, restriction string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(keyType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(restriction)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlRestrictKeyring(cmd int, arg2 int) (err error) {\n\t_, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptracePtr(request int, pid int, addr uintptr, data unsafe.Pointer) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(arg)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(source)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(target)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 *byte\n\t_p2, err = BytePtrFromString(fstype)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mountSetattr(dirfd int, pathname string, flags uint, attr *MountAttr, size uintptr) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(pathname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MOUNT_SETATTR, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(unsafe.Pointer(attr)), uintptr(size), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Acct(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(keyType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(description)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(payload) > 0 {\n\t\t_p2 = unsafe.Pointer(&payload[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0)\n\tid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtimex(buf *Timex) (state int, err error) {\n\tr0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0)\n\tstate = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Capget(hdr *CapUserHeader, data *CapUserData) (err error) {\n\t_, _, e1 := RawSyscall(SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Capset(hdr *CapUserHeader, data *CapUserData) (err error) {\n\t_, _, e1 := RawSyscall(SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockAdjtime(clockid int32, buf *Timex) (state int, err error) {\n\tr0, _, e1 := Syscall(SYS_CLOCK_ADJTIME, uintptr(clockid), uintptr(unsafe.Pointer(buf)), 0)\n\tstate = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGetres(clockid int32, res *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockSettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_SETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) {\n\t_, _, e1 := Syscall6(SYS_CLOCK_NANOSLEEP, uintptr(clockid), uintptr(flags), uintptr(unsafe.Pointer(request)), uintptr(unsafe.Pointer(remain)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc CloseRange(first uint, last uint, flags uint) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE_RANGE, uintptr(first), uintptr(last), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc DeleteModule(name string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_DELETE_MODULE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(oldfd int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(oldfd int, newfd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollCreate1(flag int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Eventfd(initval uint, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fdatasync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc FinitModule(fd int, params string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(params)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FINIT_MODULE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flistxattr(fd int, dest []byte) (sz int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p0 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest)))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fremovexattr(fd int, attr string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsmount(fd int, flags int, mountAttrs int) (fsfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_FSMOUNT, uintptr(fd), uintptr(flags), uintptr(mountAttrs))\n\tfsfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsopen(fsName string, flags int) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(fsName)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_FSOPEN, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fspick(dirfd int, pathName string, flags int) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(pathName)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_FSPICK, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fsconfig(fd int, cmd uint, key *byte, value *byte, aux int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FSCONFIG, uintptr(fd), uintptr(cmd), uintptr(unsafe.Pointer(key)), uintptr(unsafe.Pointer(value)), uintptr(aux), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettid() (tid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0)\n\ttid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getxattr(path string, attr string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p2 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InitModule(moduleImage []byte, params string) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(moduleImage) > 0 {\n\t\t_p0 = unsafe.Pointer(&moduleImage[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(params)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_INIT_MODULE, uintptr(_p0), uintptr(len(moduleImage)), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(pathname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask))\n\twatchdesc = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InotifyInit1(flags int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0)\n\tsuccess = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, sig syscall.Signal) (err error) {\n\t_, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Klogctl(typ int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lgetxattr(path string, attr string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p2 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listxattr(path string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Llistxattr(path string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lremovexattr(path string, attr string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lsetxattr(path string, attr string, data []byte, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(data) > 0 {\n\t\t_p2 = unsafe.Pointer(&data[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc MemfdCreate(name string, flags int) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_MEMFD_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc MoveMount(fromDirfd int, fromPathName string, toDirfd int, toPathName string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(fromPathName)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(toPathName)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MOVE_MOUNT, uintptr(fromDirfd), uintptr(unsafe.Pointer(_p0)), uintptr(toDirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc OpenTree(dfd int, fileName string, flags uint) (r int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(fileName)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN_TREE, uintptr(dfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tr = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc PivotRoot(newroot string, putold string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(newroot)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(putold)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pselect6(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *sigset_argpack) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Removexattr(path string, attr string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(keyType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(description)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 *byte\n\t_p2, err = BytePtrFromString(callback)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0)\n\tid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setdomainname(p []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sethostname(p []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setns(fd int, nstype int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setxattr(path string, attr string, data []byte, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(data) > 0 {\n\t\t_p2 = unsafe.Pointer(&data[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc signalfd(fd int, sigmask *Sigset_t, maskSize uintptr, flags int) (newfd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(sigmask)), uintptr(maskSize), uintptr(flags), 0, 0)\n\tnewfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() {\n\tSyscallNoError(SYS_SYNC, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Syncfs(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sysinfo(info *Sysinfo_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc TimerfdCreate(clockid int, flags int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_TIMERFD_CREATE, uintptr(clockid), uintptr(flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc TimerfdGettime(fd int, currValue *ItimerSpec) (err error) {\n\t_, _, e1 := RawSyscall(SYS_TIMERFD_GETTIME, uintptr(fd), uintptr(unsafe.Pointer(currValue)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc TimerfdSettime(fd int, flags int, newValue *ItimerSpec, oldValue *ItimerSpec) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_TIMERFD_SETTIME, uintptr(fd), uintptr(flags), uintptr(unsafe.Pointer(newValue)), uintptr(unsafe.Pointer(oldValue)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {\n\t_, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Times(tms *Tms) (ticks uintptr, err error) {\n\tr0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0)\n\tticks = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(mask int) (oldmask int) {\n\tr0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Uname(buf *Utsname) (err error) {\n\t_, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(target string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(target)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unshare(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc exitThread(code int) (err error) {\n\t_, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc readv(fd int, iovs []Iovec) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(iovs) > 0 {\n\t\t_p0 = unsafe.Pointer(&iovs[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READV, uintptr(fd), uintptr(_p0), uintptr(len(iovs)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writev(fd int, iovs []Iovec) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(iovs) > 0 {\n\t\t_p0 = unsafe.Pointer(&iovs[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITEV, uintptr(fd), uintptr(_p0), uintptr(len(iovs)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc preadv(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(iovs) > 0 {\n\t\t_p0 = unsafe.Pointer(&iovs[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREADV, uintptr(fd), uintptr(_p0), uintptr(len(iovs)), uintptr(offs_l), uintptr(offs_h), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwritev(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(iovs) > 0 {\n\t\t_p0 = unsafe.Pointer(&iovs[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITEV, uintptr(fd), uintptr(_p0), uintptr(len(iovs)), uintptr(offs_l), uintptr(offs_h), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc preadv2(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr, flags int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(iovs) > 0 {\n\t\t_p0 = unsafe.Pointer(&iovs[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREADV2, uintptr(fd), uintptr(_p0), uintptr(len(iovs)), uintptr(offs_l), uintptr(offs_h), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwritev2(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr, flags int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(iovs) > 0 {\n\t\t_p0 = unsafe.Pointer(&iovs[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITEV2, uintptr(fd), uintptr(_p0), uintptr(len(iovs)), uintptr(offs_l), uintptr(offs_h), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mremap(oldaddr uintptr, oldlength uintptr, newlength uintptr, flags int, newaddr uintptr) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MREMAP, uintptr(oldaddr), uintptr(oldlength), uintptr(newlength), uintptr(flags), uintptr(newaddr), 0)\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, advice int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc faccessat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat2(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT2, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc nameToHandleAt(dirFD int, pathname string, fh *fileHandle, mountID *_C_int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(pathname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_NAME_TO_HANDLE_AT, uintptr(dirFD), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(fh)), uintptr(unsafe.Pointer(mountID)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc openByHandleAt(mountFD int, fh *fileHandle, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_OPEN_BY_HANDLE_AT, uintptr(mountFD), uintptr(unsafe.Pointer(fh)), uintptr(flags))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ProcessVMReadv(pid int, localIov []Iovec, remoteIov []RemoteIovec, flags uint) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(localIov) > 0 {\n\t\t_p0 = unsafe.Pointer(&localIov[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(remoteIov) > 0 {\n\t\t_p1 = unsafe.Pointer(&remoteIov[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PROCESS_VM_READV, uintptr(pid), uintptr(_p0), uintptr(len(localIov)), uintptr(_p1), uintptr(len(remoteIov)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ProcessVMWritev(pid int, localIov []Iovec, remoteIov []RemoteIovec, flags uint) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(localIov) > 0 {\n\t\t_p0 = unsafe.Pointer(&localIov[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(remoteIov) > 0 {\n\t\t_p1 = unsafe.Pointer(&remoteIov[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PROCESS_VM_WRITEV, uintptr(pid), uintptr(_p0), uintptr(len(localIov)), uintptr(_p1), uintptr(len(remoteIov)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc PidfdOpen(pid int, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_PIDFD_OPEN, uintptr(pid), uintptr(flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc PidfdGetfd(pidfd int, targetfd int, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_PIDFD_GETFD, uintptr(pidfd), uintptr(targetfd), uintptr(flags))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc PidfdSendSignal(pidfd int, sig Signal, info *Siginfo, flags int) (err error) {\n\t_, _, e1 := Syscall6(SYS_PIDFD_SEND_SIGNAL, uintptr(pidfd), uintptr(sig), uintptr(unsafe.Pointer(info)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc shmat(id int, addr uintptr, flag int) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall(SYS_SHMAT, uintptr(id), uintptr(addr), uintptr(flag))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc shmctl(id int, cmd int, buf *SysvShmDesc) (result int, err error) {\n\tr0, _, e1 := Syscall(SYS_SHMCTL, uintptr(id), uintptr(cmd), uintptr(unsafe.Pointer(buf)))\n\tresult = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc shmdt(addr uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_SHMDT, uintptr(addr), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc shmget(key int, size int, flag int) (id int, err error) {\n\tr0, _, e1 := Syscall(SYS_SHMGET, uintptr(key), uintptr(size), uintptr(flag))\n\tid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getitimer(which int, currValue *Itimerval) (err error) {\n\t_, _, e1 := Syscall(SYS_GETITIMER, uintptr(which), uintptr(unsafe.Pointer(currValue)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setitimer(which int, newValue *Itimerval, oldValue *Itimerval) (err error) {\n\t_, _, e1 := Syscall(SYS_SETITIMER, uintptr(which), uintptr(unsafe.Pointer(newValue)), uintptr(unsafe.Pointer(oldValue)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc rtSigprocmask(how int, set *Sigset_t, oldset *Sigset_t, sigsetsize uintptr) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_RT_SIGPROCMASK, uintptr(how), uintptr(unsafe.Pointer(set)), uintptr(unsafe.Pointer(oldset)), uintptr(sigsetsize), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) {\n\tRawSyscallNoError(SYS_GETRESUID, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid)))\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) {\n\tRawSyscallNoError(SYS_GETRESGID, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid)))\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc schedSetattr(pid int, attr *SchedAttr, flags uint) (err error) {\n\t_, _, e1 := Syscall(SYS_SCHED_SETATTR, uintptr(pid), uintptr(unsafe.Pointer(attr)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc schedGetattr(pid int, attr *SchedAttr, size uint, flags uint) (err error) {\n\t_, _, e1 := Syscall6(SYS_SCHED_GETATTR, uintptr(pid), uintptr(unsafe.Pointer(attr)), uintptr(size), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Cachestat(fd uint, crange *CachestatRange, cstat *Cachestat_t, flags uint) (err error) {\n\t_, _, e1 := Syscall6(SYS_CACHESTAT, uintptr(fd), uintptr(unsafe.Pointer(crange)), uintptr(unsafe.Pointer(cstat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mseal(b []byte, flags uint) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSEAL, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setMemPolicy(mode int, mask *CPUSet, size int) (err error) {\n\t_, _, e1 := Syscall(SYS_SET_MEMPOLICY, uintptr(mode), uintptr(unsafe.Pointer(mask)), uintptr(size))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go",
    "content": "// go run mksyscall.go -l32 -tags linux,386 syscall_linux.go syscall_linux_386.go syscall_linux_alarm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && 386\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(mask>>32), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(off>>32), uintptr(len), uintptr(len>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(int64(r1)<<32 | int64(r0))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64_64, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32), uintptr(advice))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN32, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE64, uintptr(fd), uintptr(length), uintptr(length>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID32, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID32, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID32, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID32, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ioperm(from int, num int, on int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Iopl(level int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN32, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID32, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID32, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(off>>32), uintptr(n), uintptr(n>>32), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS32, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS32, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getrlimit(resource int, rlim *rlimit32) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tr0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0)\n\ttt = Time_t(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Alarm(seconds uint) (remaining uint, err error) {\n\tr0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0)\n\tremaining = uint(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go",
    "content": "// go run mksyscall.go -tags linux,amd64 syscall_linux.go syscall_linux_amd64.go syscall_linux_alarm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && amd64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ioperm(from int, num int, on int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Iopl(level int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc MemfdSecret(flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_MEMFD_SECRET, uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(cmdline)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Alarm(seconds uint) (remaining uint, err error) {\n\tr0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0)\n\tremaining = uint(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go",
    "content": "// go run mksyscall.go -l32 -arm -tags linux,arm syscall_linux.go syscall_linux_arm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && arm\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(mask>>32), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(off>>32), uintptr(len), uintptr(len>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(int64(r1)<<32 | int64(r0))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS32, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS32, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, flags int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(flags), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN32, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID32, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID32, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID32, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID32, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN32, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID32, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID32, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FTRUNCATE64, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getrlimit(resource int, rlim *rlimit32) (err error) {\n\t_, _, e1 := RawSyscall(SYS_UGETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc armSyncFileRange(fd int, flags int, off int64, n int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_ARM_SYNC_FILE_RANGE, uintptr(fd), uintptr(flags), uintptr(off), uintptr(off>>32), uintptr(n), uintptr(n>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(cmdline)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go",
    "content": "// go run mksyscall.go -tags linux,arm64 syscall_linux.go syscall_linux_arm64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && arm64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_PWAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc MemfdSecret(flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_MEMFD_SECRET, uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(cmdline)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsyscall_linux_loong64.go",
    "content": "// go run mksyscall.go -tags linux,loong64 syscall_linux.go syscall_linux_loong64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && loong64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_PWAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(cmdline)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go",
    "content": "// go run mksyscall.go -b32 -arm -tags linux,mips syscall_linux.go syscall_linux_mipsx.go syscall_linux_alarm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && mips\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask>>32), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off>>32), uintptr(off), uintptr(len>>32), uintptr(len))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(int64(r0)<<32 | int64(r1))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall9(SYS_FADVISE64, uintptr(fd), 0, uintptr(offset>>32), uintptr(offset), uintptr(length>>32), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FTRUNCATE64, uintptr(fd), 0, uintptr(length>>32), uintptr(length), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset>>32), uintptr(offset))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset>>32), uintptr(offset))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall9(SYS_SYNC_FILE_RANGE, uintptr(fd), 0, uintptr(off>>32), uintptr(off), uintptr(n>>32), uintptr(n), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length>>32), uintptr(length), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ioperm(from int, num int, on int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Iopl(level int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tr0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0)\n\ttt = Time_t(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getrlimit(resource int, rlim *rlimit32) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Alarm(seconds uint) (remaining uint, err error) {\n\tr0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0)\n\tremaining = uint(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go",
    "content": "// go run mksyscall.go -tags linux,mips64 syscall_linux.go syscall_linux_mips64x.go syscall_linux_alarm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && mips64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstat(fd int, st *stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(st)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstatat(dirfd int, path string, st *stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc lstat(path string, st *stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc stat(path string, st *stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Alarm(seconds uint) (remaining uint, err error) {\n\tr0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0)\n\tremaining = uint(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go",
    "content": "// go run mksyscall.go -tags linux,mips64le syscall_linux.go syscall_linux_mips64x.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && mips64le\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstat(fd int, st *stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(st)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstatat(dirfd int, path string, st *stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc lstat(path string, st *stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc stat(path string, st *stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go",
    "content": "// go run mksyscall.go -l32 -arm -tags linux,mipsle syscall_linux.go syscall_linux_mipsx.go syscall_linux_alarm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && mipsle\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(mask>>32), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(off>>32), uintptr(len), uintptr(len>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(int64(r1)<<32 | int64(r0))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall9(SYS_FADVISE64, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FTRUNCATE64, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall9(SYS_SYNC_FILE_RANGE, uintptr(fd), 0, uintptr(off), uintptr(off>>32), uintptr(n), uintptr(n>>32), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ioperm(from int, num int, on int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Iopl(level int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tr0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0)\n\ttt = Time_t(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getrlimit(resource int, rlim *rlimit32) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Alarm(seconds uint) (remaining uint, err error) {\n\tr0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0)\n\tremaining = uint(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc.go",
    "content": "// go run mksyscall.go -b32 -tags linux,ppc syscall_linux.go syscall_linux_ppc.go syscall_linux_alarm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && ppc\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask>>32), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off>>32), uintptr(off), uintptr(len>>32), uintptr(len))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(int64(r0)<<32 | int64(r1))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE64, uintptr(fd), uintptr(length>>32), uintptr(length))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ioperm(from int, num int, on int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Iopl(level int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset>>32), uintptr(offset), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset>>32), uintptr(offset), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), uintptr(length>>32), uintptr(length))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tr0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0)\n\ttt = Time_t(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getrlimit(resource int, rlim *rlimit32) (err error) {\n\t_, _, e1 := RawSyscall(SYS_UGETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc syncFileRange2(fd int, flags int, off int64, n int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE2, uintptr(fd), uintptr(flags), uintptr(off>>32), uintptr(off), uintptr(n>>32), uintptr(n))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(cmdline)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Alarm(seconds uint) (remaining uint, err error) {\n\tr0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0)\n\tremaining = uint(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go",
    "content": "// go run mksyscall.go -tags linux,ppc64 syscall_linux.go syscall_linux_ppc64x.go syscall_linux_alarm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && ppc64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_UGETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ioperm(from int, num int, on int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Iopl(level int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tr0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0)\n\ttt = Time_t(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc syncFileRange2(fd int, flags int, off int64, n int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE2, uintptr(fd), uintptr(flags), uintptr(off), uintptr(n), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(cmdline)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Alarm(seconds uint) (remaining uint, err error) {\n\tr0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0)\n\tremaining = uint(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go",
    "content": "// go run mksyscall.go -tags linux,ppc64le syscall_linux.go syscall_linux_ppc64x.go syscall_linux_alarm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && ppc64le\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_UGETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ioperm(from int, num int, on int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Iopl(level int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tr0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0)\n\ttt = Time_t(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc syncFileRange2(fd int, flags int, off int64, n int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE2, uintptr(fd), uintptr(flags), uintptr(off), uintptr(n), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(cmdline)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Alarm(seconds uint) (remaining uint, err error) {\n\tr0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0)\n\tremaining = uint(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go",
    "content": "// go run mksyscall.go -tags linux,riscv64 syscall_linux.go syscall_linux_riscv64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && riscv64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_PWAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc MemfdSecret(flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_MEMFD_SECRET, uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(cmdline)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc riscvHWProbe(pairs []RISCVHWProbePairs, cpuCount uintptr, cpus *CPUSet, flags uint) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(pairs) > 0 {\n\t\t_p0 = unsafe.Pointer(&pairs[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_RISCV_HWPROBE, uintptr(_p0), uintptr(len(pairs)), uintptr(cpuCount), uintptr(unsafe.Pointer(cpus)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go",
    "content": "// go run mksyscall.go -tags linux,s390x syscall_linux.go syscall_linux_s390x.go syscall_linux_alarm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && s390x\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(cmdline)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Alarm(seconds uint) (remaining uint, err error) {\n\tr0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0)\n\tremaining = uint(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go",
    "content": "// go run mksyscall.go -tags linux,sparc64 syscall_linux.go syscall_linux_sparc64.go syscall_linux_alarm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && sparc64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Alarm(seconds uint) (remaining uint, err error) {\n\tr0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0)\n\tremaining = uint(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go",
    "content": "// go run mksyscall.go -l32 -netbsd -tags netbsd,386 syscall_bsd.go syscall_netbsd.go syscall_netbsd_386.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build netbsd && 386\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(from int, to int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP3, uintptr(from), uintptr(to), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall9(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), 0, uintptr(length), uintptr(length>>32), uintptr(advice), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatvfs1(fd int, buf *Statvfs_t, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATVFS1, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0)\n\tnewoffset = int64(int64(r1)<<32 | int64(r0))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statvfs1(path string, buf *Statvfs_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATVFS1, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0)\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mremapNetBSD(oldp uintptr, oldsize uintptr, newp uintptr, newsize uintptr, flags int) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MREMAP, uintptr(oldp), uintptr(oldsize), uintptr(newp), uintptr(newsize), uintptr(flags), 0)\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go",
    "content": "// go run mksyscall.go -netbsd -tags netbsd,amd64 syscall_bsd.go syscall_netbsd.go syscall_netbsd_amd64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build netbsd && amd64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(from int, to int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP3, uintptr(from), uintptr(to), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), 0, uintptr(length), uintptr(advice))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatvfs1(fd int, buf *Statvfs_t, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATVFS1, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(whence), 0, 0)\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statvfs1(path string, buf *Statvfs_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATVFS1, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), 0, 0)\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mremapNetBSD(oldp uintptr, oldsize uintptr, newp uintptr, newsize uintptr, flags int) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MREMAP, uintptr(oldp), uintptr(oldsize), uintptr(newp), uintptr(newsize), uintptr(flags), 0)\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go",
    "content": "// go run mksyscall.go -l32 -netbsd -arm -tags netbsd,arm syscall_bsd.go syscall_netbsd.go syscall_netbsd_arm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build netbsd && arm\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(from int, to int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP3, uintptr(from), uintptr(to), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall9(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), 0, uintptr(length), uintptr(length>>32), uintptr(advice), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatvfs1(fd int, buf *Statvfs_t, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATVFS1, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0)\n\tnewoffset = int64(int64(r1)<<32 | int64(r0))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statvfs1(path string, buf *Statvfs_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATVFS1, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0)\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mremapNetBSD(oldp uintptr, oldsize uintptr, newp uintptr, newsize uintptr, flags int) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MREMAP, uintptr(oldp), uintptr(oldsize), uintptr(newp), uintptr(newsize), uintptr(flags), 0)\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go",
    "content": "// go run mksyscall.go -netbsd -tags netbsd,arm64 syscall_bsd.go syscall_netbsd.go syscall_netbsd_arm64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build netbsd && arm64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(from int, to int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP3, uintptr(from), uintptr(to), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), 0, uintptr(length), uintptr(advice))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatvfs1(fd int, buf *Statvfs_t, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATVFS1, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(whence), 0, 0)\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statvfs1(path string, buf *Statvfs_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATVFS1, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), 0, 0)\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mremapNetBSD(oldp uintptr, oldsize uintptr, newp uintptr, newsize uintptr, flags int) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MREMAP, uintptr(oldp), uintptr(oldsize), uintptr(newp), uintptr(newsize), uintptr(flags), 0)\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go",
    "content": "// go run mksyscall.go -l32 -openbsd -libc -tags openbsd,386 syscall_bsd.go syscall_openbsd.go syscall_openbsd_386.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build openbsd && 386\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgroups getgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgroups setgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_wait4_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_wait4 wait4 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_accept_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_accept accept \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_bind_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_bind bind \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_connect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_connect connect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socket_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socket socket \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockopt getsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsockopt setsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpeername_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpeername getpeername \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockname_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockname getsockname \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shutdown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shutdown shutdown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socketpair_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socketpair socketpair \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvfrom_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvfrom recvfrom \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendto_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendto sendto \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvmsg recvmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendmsg sendmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kevent_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kevent kevent \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimes utimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_futimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_futimes futimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_poll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_poll poll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_madvise_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_madvise madvise \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlock mlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlockall mlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mprotect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mprotect mprotect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_msync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_msync msync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlock munlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlockall munlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_pipe2_trampoline_addr, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pipe2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pipe2 pipe2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getdents_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getdents_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getdents getdents \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getcwd_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getcwd getcwd \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) {\n\tsyscall_rawSyscall(libc_getresuid_trampoline_addr, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid)))\n\treturn\n}\n\nvar libc_getresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresuid getresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) {\n\tsyscall_rawSyscall(libc_getresgid_trampoline_addr, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid)))\n\treturn\n}\n\nvar libc_getresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresgid getresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ioctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ioctl ioctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sysctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sysctl sysctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fcntl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fcntl fcntl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_ppoll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ppoll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ppoll ppoll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_access_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_access access \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_adjtime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_adjtime adjtime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chdir chdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chflags chflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chmod chmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chown chown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chroot_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chroot chroot \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_clock_gettime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_clock_gettime clock_gettime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_close_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_close close \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup dup \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup2 dup2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(from int, to int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup3_trampoline_addr, uintptr(from), uintptr(to), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup3_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup3 dup3 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tsyscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0)\n\treturn\n}\n\nvar libc_exit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_exit exit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_faccessat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_faccessat faccessat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchdir fchdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchflags fchflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmod fchmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmodat fchmodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchown fchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchownat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchownat fchownat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_flock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_flock flock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fpathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fpathconf fpathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstat fstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fstatat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatat fstatat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstatfs_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatfs fstatfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fsync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fsync fsync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ftruncate_trampoline_addr, uintptr(fd), uintptr(length), uintptr(length>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ftruncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ftruncate ftruncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\nvar libc_getegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getegid getegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_geteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_geteuid geteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\nvar libc_getgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgid getgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgid getpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\nvar libc_getpgrp_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgrp getpgrp \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\nvar libc_getpid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpid getpid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\nvar libc_getppid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getppid getppid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpriority getpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrlimit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrlimit getrlimit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrtable() (rtable int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getrtable_trampoline_addr, 0, 0, 0)\n\trtable = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrtable getrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrusage_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrusage getrusage \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsid getsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_gettimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_gettimeofday gettimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_getuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getuid getuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := syscall_syscall(libc_issetugid_trampoline_addr, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\nvar libc_issetugid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_issetugid issetugid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kill_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kill kill \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kqueue_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kqueue kqueue \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lchown lchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_link_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_link link \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_linkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_linkat linkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_listen_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_listen listen \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lstat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lstat lstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdir mkdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdirat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdirat mkdirat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifo_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifo mkfifo \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifoat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifoat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifoat mkfifoat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknod mknod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mknodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknodat mknodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(fsType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(dir)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mount mount \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_nanosleep_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_nanosleep nanosleep \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_open_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_open_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_open open \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_openat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_openat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_openat openat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_pathconf_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pathconf pathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pread_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pread_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pread pread \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pwrite_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pwrite_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pwrite pwrite \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_read_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_read read \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_readlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlink readlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_readlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlinkat readlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rename_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rename_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rename rename \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_renameat_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_renameat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_renameat renameat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_revoke_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_revoke_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_revoke revoke \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rmdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rmdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rmdir rmdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, r1, e1 := syscall_syscall6(libc_lseek_trampoline_addr, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(whence), 0, 0)\n\tnewoffset = int64(int64(r1)<<32 | int64(r0))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lseek_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lseek lseek \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_select_trampoline_addr, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_select_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_select select \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setegid setegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_seteuid_trampoline_addr, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_seteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_seteuid seteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgid_trampoline_addr, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgid setgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_setlogin_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setlogin_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setlogin setlogin \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setpgid_trampoline_addr, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpgid setpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_setpriority_trampoline_addr, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpriority setpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setregid_trampoline_addr, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setregid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setregid setregid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setreuid_trampoline_addr, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setreuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setreuid setreuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setresgid_trampoline_addr, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setresgid setresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setresuid_trampoline_addr, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setresuid setresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setrtable(rtable int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setrtable_trampoline_addr, uintptr(rtable), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setrtable setrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsid setsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_settimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_settimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_settimeofday settimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setuid_trampoline_addr, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setuid setuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_stat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_stat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_stat stat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_statfs_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_statfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_statfs statfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlink symlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlinkat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlinkat symlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := syscall_syscall(libc_sync_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sync sync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_truncate_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_truncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_truncate truncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := syscall_syscall(libc_umask_trampoline_addr, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\nvar libc_umask_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_umask umask \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlink unlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlinkat unlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unmount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unmount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unmount unmount \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_write_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_write write \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := syscall_syscall9(libc_mmap_trampoline_addr, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos), uintptr(pos>>32), 0, 0)\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mmap mmap \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_munmap_trampoline_addr, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munmap munmap \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getfsstat_trampoline_addr, uintptr(unsafe.Pointer(stat)), uintptr(bufsize), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getfsstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getfsstat getfsstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_utimensat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimensat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimensat utimensat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pledge(promises *byte, execpromises *byte) (err error) {\n\t_, _, e1 := syscall_syscall(libc_pledge_trampoline_addr, uintptr(unsafe.Pointer(promises)), uintptr(unsafe.Pointer(execpromises)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pledge_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pledge pledge \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc unveil(path *byte, flags *byte) (err error) {\n\t_, _, e1 := syscall_syscall(libc_unveil_trampoline_addr, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(flags)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unveil_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unveil unveil \"libc.so\"\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.s",
    "content": "// go run mkasm.go openbsd 386\n// Code generated by the command above; DO NOT EDIT.\n\n#include \"textflag.h\"\n\nTEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgroups(SB)\nGLOBL\t·libc_getgroups_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getgroups_trampoline_addr(SB)/4, $libc_getgroups_trampoline<>(SB)\n\nTEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgroups(SB)\nGLOBL\t·libc_setgroups_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setgroups_trampoline_addr(SB)/4, $libc_setgroups_trampoline<>(SB)\n\nTEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_wait4(SB)\nGLOBL\t·libc_wait4_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_wait4_trampoline_addr(SB)/4, $libc_wait4_trampoline<>(SB)\n\nTEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_accept(SB)\nGLOBL\t·libc_accept_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_accept_trampoline_addr(SB)/4, $libc_accept_trampoline<>(SB)\n\nTEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_bind(SB)\nGLOBL\t·libc_bind_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_bind_trampoline_addr(SB)/4, $libc_bind_trampoline<>(SB)\n\nTEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_connect(SB)\nGLOBL\t·libc_connect_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_connect_trampoline_addr(SB)/4, $libc_connect_trampoline<>(SB)\n\nTEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socket(SB)\nGLOBL\t·libc_socket_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_socket_trampoline_addr(SB)/4, $libc_socket_trampoline<>(SB)\n\nTEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockopt(SB)\nGLOBL\t·libc_getsockopt_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getsockopt_trampoline_addr(SB)/4, $libc_getsockopt_trampoline<>(SB)\n\nTEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsockopt(SB)\nGLOBL\t·libc_setsockopt_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setsockopt_trampoline_addr(SB)/4, $libc_setsockopt_trampoline<>(SB)\n\nTEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpeername(SB)\nGLOBL\t·libc_getpeername_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getpeername_trampoline_addr(SB)/4, $libc_getpeername_trampoline<>(SB)\n\nTEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockname(SB)\nGLOBL\t·libc_getsockname_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getsockname_trampoline_addr(SB)/4, $libc_getsockname_trampoline<>(SB)\n\nTEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shutdown(SB)\nGLOBL\t·libc_shutdown_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_shutdown_trampoline_addr(SB)/4, $libc_shutdown_trampoline<>(SB)\n\nTEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socketpair(SB)\nGLOBL\t·libc_socketpair_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_socketpair_trampoline_addr(SB)/4, $libc_socketpair_trampoline<>(SB)\n\nTEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvfrom(SB)\nGLOBL\t·libc_recvfrom_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_recvfrom_trampoline_addr(SB)/4, $libc_recvfrom_trampoline<>(SB)\n\nTEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendto(SB)\nGLOBL\t·libc_sendto_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_sendto_trampoline_addr(SB)/4, $libc_sendto_trampoline<>(SB)\n\nTEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvmsg(SB)\nGLOBL\t·libc_recvmsg_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_recvmsg_trampoline_addr(SB)/4, $libc_recvmsg_trampoline<>(SB)\n\nTEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendmsg(SB)\nGLOBL\t·libc_sendmsg_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_sendmsg_trampoline_addr(SB)/4, $libc_sendmsg_trampoline<>(SB)\n\nTEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kevent(SB)\nGLOBL\t·libc_kevent_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_kevent_trampoline_addr(SB)/4, $libc_kevent_trampoline<>(SB)\n\nTEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimes(SB)\nGLOBL\t·libc_utimes_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_utimes_trampoline_addr(SB)/4, $libc_utimes_trampoline<>(SB)\n\nTEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_futimes(SB)\nGLOBL\t·libc_futimes_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_futimes_trampoline_addr(SB)/4, $libc_futimes_trampoline<>(SB)\n\nTEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_poll(SB)\nGLOBL\t·libc_poll_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_poll_trampoline_addr(SB)/4, $libc_poll_trampoline<>(SB)\n\nTEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_madvise(SB)\nGLOBL\t·libc_madvise_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_madvise_trampoline_addr(SB)/4, $libc_madvise_trampoline<>(SB)\n\nTEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlock(SB)\nGLOBL\t·libc_mlock_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mlock_trampoline_addr(SB)/4, $libc_mlock_trampoline<>(SB)\n\nTEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlockall(SB)\nGLOBL\t·libc_mlockall_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mlockall_trampoline_addr(SB)/4, $libc_mlockall_trampoline<>(SB)\n\nTEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mprotect(SB)\nGLOBL\t·libc_mprotect_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mprotect_trampoline_addr(SB)/4, $libc_mprotect_trampoline<>(SB)\n\nTEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_msync(SB)\nGLOBL\t·libc_msync_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_msync_trampoline_addr(SB)/4, $libc_msync_trampoline<>(SB)\n\nTEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlock(SB)\nGLOBL\t·libc_munlock_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_munlock_trampoline_addr(SB)/4, $libc_munlock_trampoline<>(SB)\n\nTEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlockall(SB)\nGLOBL\t·libc_munlockall_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_munlockall_trampoline_addr(SB)/4, $libc_munlockall_trampoline<>(SB)\n\nTEXT libc_pipe2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pipe2(SB)\nGLOBL\t·libc_pipe2_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_pipe2_trampoline_addr(SB)/4, $libc_pipe2_trampoline<>(SB)\n\nTEXT libc_getdents_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getdents(SB)\nGLOBL\t·libc_getdents_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getdents_trampoline_addr(SB)/4, $libc_getdents_trampoline<>(SB)\n\nTEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getcwd(SB)\nGLOBL\t·libc_getcwd_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getcwd_trampoline_addr(SB)/4, $libc_getcwd_trampoline<>(SB)\n\nTEXT libc_getresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getresuid(SB)\nGLOBL\t·libc_getresuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getresuid_trampoline_addr(SB)/4, $libc_getresuid_trampoline<>(SB)\n\nTEXT libc_getresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getresgid(SB)\nGLOBL\t·libc_getresgid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getresgid_trampoline_addr(SB)/4, $libc_getresgid_trampoline<>(SB)\n\nTEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ioctl(SB)\nGLOBL\t·libc_ioctl_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_ioctl_trampoline_addr(SB)/4, $libc_ioctl_trampoline<>(SB)\n\nTEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sysctl(SB)\nGLOBL\t·libc_sysctl_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_sysctl_trampoline_addr(SB)/4, $libc_sysctl_trampoline<>(SB)\n\nTEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fcntl(SB)\nGLOBL\t·libc_fcntl_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fcntl_trampoline_addr(SB)/4, $libc_fcntl_trampoline<>(SB)\n\nTEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ppoll(SB)\nGLOBL\t·libc_ppoll_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_ppoll_trampoline_addr(SB)/4, $libc_ppoll_trampoline<>(SB)\n\nTEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_access(SB)\nGLOBL\t·libc_access_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_access_trampoline_addr(SB)/4, $libc_access_trampoline<>(SB)\n\nTEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_adjtime(SB)\nGLOBL\t·libc_adjtime_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_adjtime_trampoline_addr(SB)/4, $libc_adjtime_trampoline<>(SB)\n\nTEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chdir(SB)\nGLOBL\t·libc_chdir_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_chdir_trampoline_addr(SB)/4, $libc_chdir_trampoline<>(SB)\n\nTEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chflags(SB)\nGLOBL\t·libc_chflags_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_chflags_trampoline_addr(SB)/4, $libc_chflags_trampoline<>(SB)\n\nTEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chmod(SB)\nGLOBL\t·libc_chmod_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_chmod_trampoline_addr(SB)/4, $libc_chmod_trampoline<>(SB)\n\nTEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chown(SB)\nGLOBL\t·libc_chown_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_chown_trampoline_addr(SB)/4, $libc_chown_trampoline<>(SB)\n\nTEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chroot(SB)\nGLOBL\t·libc_chroot_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_chroot_trampoline_addr(SB)/4, $libc_chroot_trampoline<>(SB)\n\nTEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_clock_gettime(SB)\nGLOBL\t·libc_clock_gettime_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_clock_gettime_trampoline_addr(SB)/4, $libc_clock_gettime_trampoline<>(SB)\n\nTEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_close(SB)\nGLOBL\t·libc_close_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_close_trampoline_addr(SB)/4, $libc_close_trampoline<>(SB)\n\nTEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup(SB)\nGLOBL\t·libc_dup_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_dup_trampoline_addr(SB)/4, $libc_dup_trampoline<>(SB)\n\nTEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup2(SB)\nGLOBL\t·libc_dup2_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_dup2_trampoline_addr(SB)/4, $libc_dup2_trampoline<>(SB)\n\nTEXT libc_dup3_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup3(SB)\nGLOBL\t·libc_dup3_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_dup3_trampoline_addr(SB)/4, $libc_dup3_trampoline<>(SB)\n\nTEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_exit(SB)\nGLOBL\t·libc_exit_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_exit_trampoline_addr(SB)/4, $libc_exit_trampoline<>(SB)\n\nTEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_faccessat(SB)\nGLOBL\t·libc_faccessat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_faccessat_trampoline_addr(SB)/4, $libc_faccessat_trampoline<>(SB)\n\nTEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchdir(SB)\nGLOBL\t·libc_fchdir_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fchdir_trampoline_addr(SB)/4, $libc_fchdir_trampoline<>(SB)\n\nTEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchflags(SB)\nGLOBL\t·libc_fchflags_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fchflags_trampoline_addr(SB)/4, $libc_fchflags_trampoline<>(SB)\n\nTEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmod(SB)\nGLOBL\t·libc_fchmod_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fchmod_trampoline_addr(SB)/4, $libc_fchmod_trampoline<>(SB)\n\nTEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmodat(SB)\nGLOBL\t·libc_fchmodat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fchmodat_trampoline_addr(SB)/4, $libc_fchmodat_trampoline<>(SB)\n\nTEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchown(SB)\nGLOBL\t·libc_fchown_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fchown_trampoline_addr(SB)/4, $libc_fchown_trampoline<>(SB)\n\nTEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchownat(SB)\nGLOBL\t·libc_fchownat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fchownat_trampoline_addr(SB)/4, $libc_fchownat_trampoline<>(SB)\n\nTEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_flock(SB)\nGLOBL\t·libc_flock_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_flock_trampoline_addr(SB)/4, $libc_flock_trampoline<>(SB)\n\nTEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fpathconf(SB)\nGLOBL\t·libc_fpathconf_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fpathconf_trampoline_addr(SB)/4, $libc_fpathconf_trampoline<>(SB)\n\nTEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstat(SB)\nGLOBL\t·libc_fstat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fstat_trampoline_addr(SB)/4, $libc_fstat_trampoline<>(SB)\n\nTEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatat(SB)\nGLOBL\t·libc_fstatat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fstatat_trampoline_addr(SB)/4, $libc_fstatat_trampoline<>(SB)\n\nTEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatfs(SB)\nGLOBL\t·libc_fstatfs_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fstatfs_trampoline_addr(SB)/4, $libc_fstatfs_trampoline<>(SB)\n\nTEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fsync(SB)\nGLOBL\t·libc_fsync_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fsync_trampoline_addr(SB)/4, $libc_fsync_trampoline<>(SB)\n\nTEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ftruncate(SB)\nGLOBL\t·libc_ftruncate_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_ftruncate_trampoline_addr(SB)/4, $libc_ftruncate_trampoline<>(SB)\n\nTEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getegid(SB)\nGLOBL\t·libc_getegid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getegid_trampoline_addr(SB)/4, $libc_getegid_trampoline<>(SB)\n\nTEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_geteuid(SB)\nGLOBL\t·libc_geteuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_geteuid_trampoline_addr(SB)/4, $libc_geteuid_trampoline<>(SB)\n\nTEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgid(SB)\nGLOBL\t·libc_getgid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getgid_trampoline_addr(SB)/4, $libc_getgid_trampoline<>(SB)\n\nTEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgid(SB)\nGLOBL\t·libc_getpgid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getpgid_trampoline_addr(SB)/4, $libc_getpgid_trampoline<>(SB)\n\nTEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgrp(SB)\nGLOBL\t·libc_getpgrp_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getpgrp_trampoline_addr(SB)/4, $libc_getpgrp_trampoline<>(SB)\n\nTEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpid(SB)\nGLOBL\t·libc_getpid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getpid_trampoline_addr(SB)/4, $libc_getpid_trampoline<>(SB)\n\nTEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getppid(SB)\nGLOBL\t·libc_getppid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getppid_trampoline_addr(SB)/4, $libc_getppid_trampoline<>(SB)\n\nTEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpriority(SB)\nGLOBL\t·libc_getpriority_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getpriority_trampoline_addr(SB)/4, $libc_getpriority_trampoline<>(SB)\n\nTEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrlimit(SB)\nGLOBL\t·libc_getrlimit_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getrlimit_trampoline_addr(SB)/4, $libc_getrlimit_trampoline<>(SB)\n\nTEXT libc_getrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrtable(SB)\nGLOBL\t·libc_getrtable_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getrtable_trampoline_addr(SB)/4, $libc_getrtable_trampoline<>(SB)\n\nTEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrusage(SB)\nGLOBL\t·libc_getrusage_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getrusage_trampoline_addr(SB)/4, $libc_getrusage_trampoline<>(SB)\n\nTEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsid(SB)\nGLOBL\t·libc_getsid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getsid_trampoline_addr(SB)/4, $libc_getsid_trampoline<>(SB)\n\nTEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_gettimeofday(SB)\nGLOBL\t·libc_gettimeofday_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_gettimeofday_trampoline_addr(SB)/4, $libc_gettimeofday_trampoline<>(SB)\n\nTEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getuid(SB)\nGLOBL\t·libc_getuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getuid_trampoline_addr(SB)/4, $libc_getuid_trampoline<>(SB)\n\nTEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_issetugid(SB)\nGLOBL\t·libc_issetugid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_issetugid_trampoline_addr(SB)/4, $libc_issetugid_trampoline<>(SB)\n\nTEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kill(SB)\nGLOBL\t·libc_kill_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_kill_trampoline_addr(SB)/4, $libc_kill_trampoline<>(SB)\n\nTEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kqueue(SB)\nGLOBL\t·libc_kqueue_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_kqueue_trampoline_addr(SB)/4, $libc_kqueue_trampoline<>(SB)\n\nTEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lchown(SB)\nGLOBL\t·libc_lchown_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_lchown_trampoline_addr(SB)/4, $libc_lchown_trampoline<>(SB)\n\nTEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_link(SB)\nGLOBL\t·libc_link_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_link_trampoline_addr(SB)/4, $libc_link_trampoline<>(SB)\n\nTEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_linkat(SB)\nGLOBL\t·libc_linkat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_linkat_trampoline_addr(SB)/4, $libc_linkat_trampoline<>(SB)\n\nTEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_listen(SB)\nGLOBL\t·libc_listen_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_listen_trampoline_addr(SB)/4, $libc_listen_trampoline<>(SB)\n\nTEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lstat(SB)\nGLOBL\t·libc_lstat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_lstat_trampoline_addr(SB)/4, $libc_lstat_trampoline<>(SB)\n\nTEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdir(SB)\nGLOBL\t·libc_mkdir_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mkdir_trampoline_addr(SB)/4, $libc_mkdir_trampoline<>(SB)\n\nTEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdirat(SB)\nGLOBL\t·libc_mkdirat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mkdirat_trampoline_addr(SB)/4, $libc_mkdirat_trampoline<>(SB)\n\nTEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifo(SB)\nGLOBL\t·libc_mkfifo_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mkfifo_trampoline_addr(SB)/4, $libc_mkfifo_trampoline<>(SB)\n\nTEXT libc_mkfifoat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifoat(SB)\nGLOBL\t·libc_mkfifoat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mkfifoat_trampoline_addr(SB)/4, $libc_mkfifoat_trampoline<>(SB)\n\nTEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknod(SB)\nGLOBL\t·libc_mknod_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mknod_trampoline_addr(SB)/4, $libc_mknod_trampoline<>(SB)\n\nTEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknodat(SB)\nGLOBL\t·libc_mknodat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mknodat_trampoline_addr(SB)/4, $libc_mknodat_trampoline<>(SB)\n\nTEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mount(SB)\nGLOBL\t·libc_mount_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mount_trampoline_addr(SB)/4, $libc_mount_trampoline<>(SB)\n\nTEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_nanosleep(SB)\nGLOBL\t·libc_nanosleep_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_nanosleep_trampoline_addr(SB)/4, $libc_nanosleep_trampoline<>(SB)\n\nTEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_open(SB)\nGLOBL\t·libc_open_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_open_trampoline_addr(SB)/4, $libc_open_trampoline<>(SB)\n\nTEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_openat(SB)\nGLOBL\t·libc_openat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_openat_trampoline_addr(SB)/4, $libc_openat_trampoline<>(SB)\n\nTEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pathconf(SB)\nGLOBL\t·libc_pathconf_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_pathconf_trampoline_addr(SB)/4, $libc_pathconf_trampoline<>(SB)\n\nTEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pread(SB)\nGLOBL\t·libc_pread_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_pread_trampoline_addr(SB)/4, $libc_pread_trampoline<>(SB)\n\nTEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pwrite(SB)\nGLOBL\t·libc_pwrite_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_pwrite_trampoline_addr(SB)/4, $libc_pwrite_trampoline<>(SB)\n\nTEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_read(SB)\nGLOBL\t·libc_read_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_read_trampoline_addr(SB)/4, $libc_read_trampoline<>(SB)\n\nTEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlink(SB)\nGLOBL\t·libc_readlink_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_readlink_trampoline_addr(SB)/4, $libc_readlink_trampoline<>(SB)\n\nTEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlinkat(SB)\nGLOBL\t·libc_readlinkat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_readlinkat_trampoline_addr(SB)/4, $libc_readlinkat_trampoline<>(SB)\n\nTEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rename(SB)\nGLOBL\t·libc_rename_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_rename_trampoline_addr(SB)/4, $libc_rename_trampoline<>(SB)\n\nTEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_renameat(SB)\nGLOBL\t·libc_renameat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_renameat_trampoline_addr(SB)/4, $libc_renameat_trampoline<>(SB)\n\nTEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_revoke(SB)\nGLOBL\t·libc_revoke_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_revoke_trampoline_addr(SB)/4, $libc_revoke_trampoline<>(SB)\n\nTEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rmdir(SB)\nGLOBL\t·libc_rmdir_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_rmdir_trampoline_addr(SB)/4, $libc_rmdir_trampoline<>(SB)\n\nTEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lseek(SB)\nGLOBL\t·libc_lseek_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_lseek_trampoline_addr(SB)/4, $libc_lseek_trampoline<>(SB)\n\nTEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_select(SB)\nGLOBL\t·libc_select_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_select_trampoline_addr(SB)/4, $libc_select_trampoline<>(SB)\n\nTEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setegid(SB)\nGLOBL\t·libc_setegid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setegid_trampoline_addr(SB)/4, $libc_setegid_trampoline<>(SB)\n\nTEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_seteuid(SB)\nGLOBL\t·libc_seteuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_seteuid_trampoline_addr(SB)/4, $libc_seteuid_trampoline<>(SB)\n\nTEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgid(SB)\nGLOBL\t·libc_setgid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setgid_trampoline_addr(SB)/4, $libc_setgid_trampoline<>(SB)\n\nTEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setlogin(SB)\nGLOBL\t·libc_setlogin_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setlogin_trampoline_addr(SB)/4, $libc_setlogin_trampoline<>(SB)\n\nTEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpgid(SB)\nGLOBL\t·libc_setpgid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setpgid_trampoline_addr(SB)/4, $libc_setpgid_trampoline<>(SB)\n\nTEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpriority(SB)\nGLOBL\t·libc_setpriority_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setpriority_trampoline_addr(SB)/4, $libc_setpriority_trampoline<>(SB)\n\nTEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setregid(SB)\nGLOBL\t·libc_setregid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setregid_trampoline_addr(SB)/4, $libc_setregid_trampoline<>(SB)\n\nTEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setreuid(SB)\nGLOBL\t·libc_setreuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setreuid_trampoline_addr(SB)/4, $libc_setreuid_trampoline<>(SB)\n\nTEXT libc_setresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setresgid(SB)\nGLOBL\t·libc_setresgid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setresgid_trampoline_addr(SB)/4, $libc_setresgid_trampoline<>(SB)\n\nTEXT libc_setresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setresuid(SB)\nGLOBL\t·libc_setresuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setresuid_trampoline_addr(SB)/4, $libc_setresuid_trampoline<>(SB)\n\nTEXT libc_setrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setrtable(SB)\nGLOBL\t·libc_setrtable_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setrtable_trampoline_addr(SB)/4, $libc_setrtable_trampoline<>(SB)\n\nTEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsid(SB)\nGLOBL\t·libc_setsid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setsid_trampoline_addr(SB)/4, $libc_setsid_trampoline<>(SB)\n\nTEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_settimeofday(SB)\nGLOBL\t·libc_settimeofday_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_settimeofday_trampoline_addr(SB)/4, $libc_settimeofday_trampoline<>(SB)\n\nTEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setuid(SB)\nGLOBL\t·libc_setuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setuid_trampoline_addr(SB)/4, $libc_setuid_trampoline<>(SB)\n\nTEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_stat(SB)\nGLOBL\t·libc_stat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_stat_trampoline_addr(SB)/4, $libc_stat_trampoline<>(SB)\n\nTEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_statfs(SB)\nGLOBL\t·libc_statfs_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_statfs_trampoline_addr(SB)/4, $libc_statfs_trampoline<>(SB)\n\nTEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlink(SB)\nGLOBL\t·libc_symlink_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_symlink_trampoline_addr(SB)/4, $libc_symlink_trampoline<>(SB)\n\nTEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlinkat(SB)\nGLOBL\t·libc_symlinkat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_symlinkat_trampoline_addr(SB)/4, $libc_symlinkat_trampoline<>(SB)\n\nTEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sync(SB)\nGLOBL\t·libc_sync_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_sync_trampoline_addr(SB)/4, $libc_sync_trampoline<>(SB)\n\nTEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_truncate(SB)\nGLOBL\t·libc_truncate_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_truncate_trampoline_addr(SB)/4, $libc_truncate_trampoline<>(SB)\n\nTEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_umask(SB)\nGLOBL\t·libc_umask_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_umask_trampoline_addr(SB)/4, $libc_umask_trampoline<>(SB)\n\nTEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlink(SB)\nGLOBL\t·libc_unlink_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_unlink_trampoline_addr(SB)/4, $libc_unlink_trampoline<>(SB)\n\nTEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlinkat(SB)\nGLOBL\t·libc_unlinkat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_unlinkat_trampoline_addr(SB)/4, $libc_unlinkat_trampoline<>(SB)\n\nTEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unmount(SB)\nGLOBL\t·libc_unmount_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_unmount_trampoline_addr(SB)/4, $libc_unmount_trampoline<>(SB)\n\nTEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_write(SB)\nGLOBL\t·libc_write_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_write_trampoline_addr(SB)/4, $libc_write_trampoline<>(SB)\n\nTEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mmap(SB)\nGLOBL\t·libc_mmap_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mmap_trampoline_addr(SB)/4, $libc_mmap_trampoline<>(SB)\n\nTEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munmap(SB)\nGLOBL\t·libc_munmap_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_munmap_trampoline_addr(SB)/4, $libc_munmap_trampoline<>(SB)\n\nTEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getfsstat(SB)\nGLOBL\t·libc_getfsstat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getfsstat_trampoline_addr(SB)/4, $libc_getfsstat_trampoline<>(SB)\n\nTEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimensat(SB)\nGLOBL\t·libc_utimensat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_utimensat_trampoline_addr(SB)/4, $libc_utimensat_trampoline<>(SB)\n\nTEXT libc_pledge_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pledge(SB)\nGLOBL\t·libc_pledge_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_pledge_trampoline_addr(SB)/4, $libc_pledge_trampoline<>(SB)\n\nTEXT libc_unveil_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unveil(SB)\nGLOBL\t·libc_unveil_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_unveil_trampoline_addr(SB)/4, $libc_unveil_trampoline<>(SB)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go",
    "content": "// go run mksyscall.go -openbsd -libc -tags openbsd,amd64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_amd64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build openbsd && amd64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgroups getgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgroups setgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_wait4_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_wait4 wait4 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_accept_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_accept accept \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_bind_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_bind bind \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_connect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_connect connect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socket_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socket socket \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockopt getsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsockopt setsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpeername_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpeername getpeername \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockname_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockname getsockname \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shutdown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shutdown shutdown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socketpair_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socketpair socketpair \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvfrom_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvfrom recvfrom \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendto_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendto sendto \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvmsg recvmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendmsg sendmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kevent_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kevent kevent \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimes utimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_futimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_futimes futimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_poll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_poll poll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_madvise_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_madvise madvise \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlock mlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlockall mlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mprotect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mprotect mprotect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_msync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_msync msync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlock munlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlockall munlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_pipe2_trampoline_addr, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pipe2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pipe2 pipe2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getdents_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getdents_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getdents getdents \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getcwd_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getcwd getcwd \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) {\n\tsyscall_rawSyscall(libc_getresuid_trampoline_addr, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid)))\n\treturn\n}\n\nvar libc_getresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresuid getresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) {\n\tsyscall_rawSyscall(libc_getresgid_trampoline_addr, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid)))\n\treturn\n}\n\nvar libc_getresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresgid getresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ioctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ioctl ioctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sysctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sysctl sysctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fcntl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fcntl fcntl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_ppoll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ppoll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ppoll ppoll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_access_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_access access \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_adjtime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_adjtime adjtime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chdir chdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chflags chflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chmod chmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chown chown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chroot_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chroot chroot \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_clock_gettime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_clock_gettime clock_gettime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_close_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_close close \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup dup \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup2 dup2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(from int, to int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup3_trampoline_addr, uintptr(from), uintptr(to), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup3_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup3 dup3 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tsyscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0)\n\treturn\n}\n\nvar libc_exit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_exit exit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_faccessat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_faccessat faccessat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchdir fchdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchflags fchflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmod fchmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmodat fchmodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchown fchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchownat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchownat fchownat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_flock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_flock flock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fpathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fpathconf fpathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstat fstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fstatat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatat fstatat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstatfs_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatfs fstatfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fsync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fsync fsync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ftruncate_trampoline_addr, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ftruncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ftruncate ftruncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\nvar libc_getegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getegid getegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_geteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_geteuid geteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\nvar libc_getgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgid getgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgid getpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\nvar libc_getpgrp_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgrp getpgrp \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\nvar libc_getpid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpid getpid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\nvar libc_getppid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getppid getppid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpriority getpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrlimit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrlimit getrlimit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrtable() (rtable int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getrtable_trampoline_addr, 0, 0, 0)\n\trtable = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrtable getrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrusage_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrusage getrusage \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsid getsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_gettimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_gettimeofday gettimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_getuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getuid getuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := syscall_syscall(libc_issetugid_trampoline_addr, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\nvar libc_issetugid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_issetugid issetugid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kill_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kill kill \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kqueue_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kqueue kqueue \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lchown lchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_link_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_link link \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_linkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_linkat linkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_listen_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_listen listen \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lstat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lstat lstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdir mkdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdirat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdirat mkdirat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifo_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifo mkfifo \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifoat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifoat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifoat mkfifoat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknod mknod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mknodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknodat mknodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(fsType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(dir)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mount mount \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_nanosleep_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_nanosleep nanosleep \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_open_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_open_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_open open \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_openat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_openat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_openat openat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_pathconf_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pathconf pathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pread_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pread_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pread pread \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pwrite_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pwrite_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pwrite pwrite \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_read_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_read read \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_readlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlink readlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_readlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlinkat readlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rename_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rename_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rename rename \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_renameat_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_renameat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_renameat renameat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_revoke_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_revoke_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_revoke revoke \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rmdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rmdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rmdir rmdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := syscall_syscall(libc_lseek_trampoline_addr, uintptr(fd), uintptr(offset), uintptr(whence))\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lseek_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lseek lseek \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_select_trampoline_addr, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_select_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_select select \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setegid setegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_seteuid_trampoline_addr, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_seteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_seteuid seteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgid_trampoline_addr, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgid setgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_setlogin_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setlogin_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setlogin setlogin \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setpgid_trampoline_addr, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpgid setpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_setpriority_trampoline_addr, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpriority setpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setregid_trampoline_addr, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setregid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setregid setregid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setreuid_trampoline_addr, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setreuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setreuid setreuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setresgid_trampoline_addr, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setresgid setresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setresuid_trampoline_addr, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setresuid setresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setrtable(rtable int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setrtable_trampoline_addr, uintptr(rtable), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setrtable setrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsid setsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_settimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_settimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_settimeofday settimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setuid_trampoline_addr, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setuid setuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_stat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_stat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_stat stat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_statfs_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_statfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_statfs statfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlink symlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlinkat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlinkat symlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := syscall_syscall(libc_sync_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sync sync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_truncate_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_truncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_truncate truncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := syscall_syscall(libc_umask_trampoline_addr, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\nvar libc_umask_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_umask umask \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlink unlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlinkat unlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unmount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unmount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unmount unmount \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_write_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_write write \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_mmap_trampoline_addr, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mmap mmap \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_munmap_trampoline_addr, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munmap munmap \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getfsstat_trampoline_addr, uintptr(unsafe.Pointer(stat)), uintptr(bufsize), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getfsstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getfsstat getfsstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_utimensat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimensat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimensat utimensat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pledge(promises *byte, execpromises *byte) (err error) {\n\t_, _, e1 := syscall_syscall(libc_pledge_trampoline_addr, uintptr(unsafe.Pointer(promises)), uintptr(unsafe.Pointer(execpromises)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pledge_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pledge pledge \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc unveil(path *byte, flags *byte) (err error) {\n\t_, _, e1 := syscall_syscall(libc_unveil_trampoline_addr, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(flags)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unveil_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unveil unveil \"libc.so\"\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.s",
    "content": "// go run mkasm.go openbsd amd64\n// Code generated by the command above; DO NOT EDIT.\n\n#include \"textflag.h\"\n\nTEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgroups(SB)\nGLOBL\t·libc_getgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB)\n\nTEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgroups(SB)\nGLOBL\t·libc_setgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB)\n\nTEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_wait4(SB)\nGLOBL\t·libc_wait4_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB)\n\nTEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_accept(SB)\nGLOBL\t·libc_accept_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB)\n\nTEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_bind(SB)\nGLOBL\t·libc_bind_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB)\n\nTEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_connect(SB)\nGLOBL\t·libc_connect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB)\n\nTEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socket(SB)\nGLOBL\t·libc_socket_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB)\n\nTEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockopt(SB)\nGLOBL\t·libc_getsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB)\n\nTEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsockopt(SB)\nGLOBL\t·libc_setsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB)\n\nTEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpeername(SB)\nGLOBL\t·libc_getpeername_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB)\n\nTEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockname(SB)\nGLOBL\t·libc_getsockname_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB)\n\nTEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shutdown(SB)\nGLOBL\t·libc_shutdown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB)\n\nTEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socketpair(SB)\nGLOBL\t·libc_socketpair_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB)\n\nTEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvfrom(SB)\nGLOBL\t·libc_recvfrom_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB)\n\nTEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendto(SB)\nGLOBL\t·libc_sendto_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB)\n\nTEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvmsg(SB)\nGLOBL\t·libc_recvmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB)\n\nTEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendmsg(SB)\nGLOBL\t·libc_sendmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB)\n\nTEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kevent(SB)\nGLOBL\t·libc_kevent_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB)\n\nTEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimes(SB)\nGLOBL\t·libc_utimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB)\n\nTEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_futimes(SB)\nGLOBL\t·libc_futimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB)\n\nTEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_poll(SB)\nGLOBL\t·libc_poll_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB)\n\nTEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_madvise(SB)\nGLOBL\t·libc_madvise_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB)\n\nTEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlock(SB)\nGLOBL\t·libc_mlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB)\n\nTEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlockall(SB)\nGLOBL\t·libc_mlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB)\n\nTEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mprotect(SB)\nGLOBL\t·libc_mprotect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB)\n\nTEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_msync(SB)\nGLOBL\t·libc_msync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB)\n\nTEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlock(SB)\nGLOBL\t·libc_munlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB)\n\nTEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlockall(SB)\nGLOBL\t·libc_munlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB)\n\nTEXT libc_pipe2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pipe2(SB)\nGLOBL\t·libc_pipe2_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pipe2_trampoline_addr(SB)/8, $libc_pipe2_trampoline<>(SB)\n\nTEXT libc_getdents_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getdents(SB)\nGLOBL\t·libc_getdents_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getdents_trampoline_addr(SB)/8, $libc_getdents_trampoline<>(SB)\n\nTEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getcwd(SB)\nGLOBL\t·libc_getcwd_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB)\n\nTEXT libc_getresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getresuid(SB)\nGLOBL\t·libc_getresuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getresuid_trampoline_addr(SB)/8, $libc_getresuid_trampoline<>(SB)\n\nTEXT libc_getresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getresgid(SB)\nGLOBL\t·libc_getresgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getresgid_trampoline_addr(SB)/8, $libc_getresgid_trampoline<>(SB)\n\nTEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ioctl(SB)\nGLOBL\t·libc_ioctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB)\n\nTEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sysctl(SB)\nGLOBL\t·libc_sysctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB)\n\nTEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fcntl(SB)\nGLOBL\t·libc_fcntl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB)\n\nTEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ppoll(SB)\nGLOBL\t·libc_ppoll_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ppoll_trampoline_addr(SB)/8, $libc_ppoll_trampoline<>(SB)\n\nTEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_access(SB)\nGLOBL\t·libc_access_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB)\n\nTEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_adjtime(SB)\nGLOBL\t·libc_adjtime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB)\n\nTEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chdir(SB)\nGLOBL\t·libc_chdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB)\n\nTEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chflags(SB)\nGLOBL\t·libc_chflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB)\n\nTEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chmod(SB)\nGLOBL\t·libc_chmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB)\n\nTEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chown(SB)\nGLOBL\t·libc_chown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB)\n\nTEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chroot(SB)\nGLOBL\t·libc_chroot_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB)\n\nTEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_clock_gettime(SB)\nGLOBL\t·libc_clock_gettime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB)\n\nTEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_close(SB)\nGLOBL\t·libc_close_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB)\n\nTEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup(SB)\nGLOBL\t·libc_dup_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB)\n\nTEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup2(SB)\nGLOBL\t·libc_dup2_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB)\n\nTEXT libc_dup3_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup3(SB)\nGLOBL\t·libc_dup3_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup3_trampoline_addr(SB)/8, $libc_dup3_trampoline<>(SB)\n\nTEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_exit(SB)\nGLOBL\t·libc_exit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB)\n\nTEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_faccessat(SB)\nGLOBL\t·libc_faccessat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB)\n\nTEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchdir(SB)\nGLOBL\t·libc_fchdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB)\n\nTEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchflags(SB)\nGLOBL\t·libc_fchflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB)\n\nTEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmod(SB)\nGLOBL\t·libc_fchmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB)\n\nTEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmodat(SB)\nGLOBL\t·libc_fchmodat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB)\n\nTEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchown(SB)\nGLOBL\t·libc_fchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB)\n\nTEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchownat(SB)\nGLOBL\t·libc_fchownat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB)\n\nTEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_flock(SB)\nGLOBL\t·libc_flock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB)\n\nTEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fpathconf(SB)\nGLOBL\t·libc_fpathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB)\n\nTEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstat(SB)\nGLOBL\t·libc_fstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstat_trampoline_addr(SB)/8, $libc_fstat_trampoline<>(SB)\n\nTEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatat(SB)\nGLOBL\t·libc_fstatat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatat_trampoline_addr(SB)/8, $libc_fstatat_trampoline<>(SB)\n\nTEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatfs(SB)\nGLOBL\t·libc_fstatfs_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatfs_trampoline_addr(SB)/8, $libc_fstatfs_trampoline<>(SB)\n\nTEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fsync(SB)\nGLOBL\t·libc_fsync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB)\n\nTEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ftruncate(SB)\nGLOBL\t·libc_ftruncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB)\n\nTEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getegid(SB)\nGLOBL\t·libc_getegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB)\n\nTEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_geteuid(SB)\nGLOBL\t·libc_geteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB)\n\nTEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgid(SB)\nGLOBL\t·libc_getgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB)\n\nTEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgid(SB)\nGLOBL\t·libc_getpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB)\n\nTEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgrp(SB)\nGLOBL\t·libc_getpgrp_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB)\n\nTEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpid(SB)\nGLOBL\t·libc_getpid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB)\n\nTEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getppid(SB)\nGLOBL\t·libc_getppid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB)\n\nTEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpriority(SB)\nGLOBL\t·libc_getpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB)\n\nTEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrlimit(SB)\nGLOBL\t·libc_getrlimit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB)\n\nTEXT libc_getrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrtable(SB)\nGLOBL\t·libc_getrtable_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrtable_trampoline_addr(SB)/8, $libc_getrtable_trampoline<>(SB)\n\nTEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrusage(SB)\nGLOBL\t·libc_getrusage_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB)\n\nTEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsid(SB)\nGLOBL\t·libc_getsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB)\n\nTEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_gettimeofday(SB)\nGLOBL\t·libc_gettimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB)\n\nTEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getuid(SB)\nGLOBL\t·libc_getuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB)\n\nTEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_issetugid(SB)\nGLOBL\t·libc_issetugid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB)\n\nTEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kill(SB)\nGLOBL\t·libc_kill_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB)\n\nTEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kqueue(SB)\nGLOBL\t·libc_kqueue_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB)\n\nTEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lchown(SB)\nGLOBL\t·libc_lchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB)\n\nTEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_link(SB)\nGLOBL\t·libc_link_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB)\n\nTEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_linkat(SB)\nGLOBL\t·libc_linkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB)\n\nTEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_listen(SB)\nGLOBL\t·libc_listen_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB)\n\nTEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lstat(SB)\nGLOBL\t·libc_lstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lstat_trampoline_addr(SB)/8, $libc_lstat_trampoline<>(SB)\n\nTEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdir(SB)\nGLOBL\t·libc_mkdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB)\n\nTEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdirat(SB)\nGLOBL\t·libc_mkdirat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB)\n\nTEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifo(SB)\nGLOBL\t·libc_mkfifo_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB)\n\nTEXT libc_mkfifoat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifoat(SB)\nGLOBL\t·libc_mkfifoat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkfifoat_trampoline_addr(SB)/8, $libc_mkfifoat_trampoline<>(SB)\n\nTEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknod(SB)\nGLOBL\t·libc_mknod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB)\n\nTEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknodat(SB)\nGLOBL\t·libc_mknodat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mknodat_trampoline_addr(SB)/8, $libc_mknodat_trampoline<>(SB)\n\nTEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mount(SB)\nGLOBL\t·libc_mount_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB)\n\nTEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_nanosleep(SB)\nGLOBL\t·libc_nanosleep_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_nanosleep_trampoline_addr(SB)/8, $libc_nanosleep_trampoline<>(SB)\n\nTEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_open(SB)\nGLOBL\t·libc_open_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB)\n\nTEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_openat(SB)\nGLOBL\t·libc_openat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB)\n\nTEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pathconf(SB)\nGLOBL\t·libc_pathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB)\n\nTEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pread(SB)\nGLOBL\t·libc_pread_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB)\n\nTEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pwrite(SB)\nGLOBL\t·libc_pwrite_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB)\n\nTEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_read(SB)\nGLOBL\t·libc_read_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB)\n\nTEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlink(SB)\nGLOBL\t·libc_readlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB)\n\nTEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlinkat(SB)\nGLOBL\t·libc_readlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB)\n\nTEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rename(SB)\nGLOBL\t·libc_rename_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB)\n\nTEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_renameat(SB)\nGLOBL\t·libc_renameat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB)\n\nTEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_revoke(SB)\nGLOBL\t·libc_revoke_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB)\n\nTEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rmdir(SB)\nGLOBL\t·libc_rmdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB)\n\nTEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lseek(SB)\nGLOBL\t·libc_lseek_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB)\n\nTEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_select(SB)\nGLOBL\t·libc_select_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB)\n\nTEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setegid(SB)\nGLOBL\t·libc_setegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB)\n\nTEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_seteuid(SB)\nGLOBL\t·libc_seteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB)\n\nTEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgid(SB)\nGLOBL\t·libc_setgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB)\n\nTEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setlogin(SB)\nGLOBL\t·libc_setlogin_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB)\n\nTEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpgid(SB)\nGLOBL\t·libc_setpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB)\n\nTEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpriority(SB)\nGLOBL\t·libc_setpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB)\n\nTEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setregid(SB)\nGLOBL\t·libc_setregid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB)\n\nTEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setreuid(SB)\nGLOBL\t·libc_setreuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB)\n\nTEXT libc_setresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setresgid(SB)\nGLOBL\t·libc_setresgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setresgid_trampoline_addr(SB)/8, $libc_setresgid_trampoline<>(SB)\n\nTEXT libc_setresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setresuid(SB)\nGLOBL\t·libc_setresuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setresuid_trampoline_addr(SB)/8, $libc_setresuid_trampoline<>(SB)\n\nTEXT libc_setrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setrtable(SB)\nGLOBL\t·libc_setrtable_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setrtable_trampoline_addr(SB)/8, $libc_setrtable_trampoline<>(SB)\n\nTEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsid(SB)\nGLOBL\t·libc_setsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB)\n\nTEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_settimeofday(SB)\nGLOBL\t·libc_settimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB)\n\nTEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setuid(SB)\nGLOBL\t·libc_setuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB)\n\nTEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_stat(SB)\nGLOBL\t·libc_stat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_stat_trampoline_addr(SB)/8, $libc_stat_trampoline<>(SB)\n\nTEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_statfs(SB)\nGLOBL\t·libc_statfs_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_statfs_trampoline_addr(SB)/8, $libc_statfs_trampoline<>(SB)\n\nTEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlink(SB)\nGLOBL\t·libc_symlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB)\n\nTEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlinkat(SB)\nGLOBL\t·libc_symlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB)\n\nTEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sync(SB)\nGLOBL\t·libc_sync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB)\n\nTEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_truncate(SB)\nGLOBL\t·libc_truncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB)\n\nTEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_umask(SB)\nGLOBL\t·libc_umask_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB)\n\nTEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlink(SB)\nGLOBL\t·libc_unlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB)\n\nTEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlinkat(SB)\nGLOBL\t·libc_unlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB)\n\nTEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unmount(SB)\nGLOBL\t·libc_unmount_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB)\n\nTEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_write(SB)\nGLOBL\t·libc_write_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB)\n\nTEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mmap(SB)\nGLOBL\t·libc_mmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB)\n\nTEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munmap(SB)\nGLOBL\t·libc_munmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB)\n\nTEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getfsstat(SB)\nGLOBL\t·libc_getfsstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getfsstat_trampoline_addr(SB)/8, $libc_getfsstat_trampoline<>(SB)\n\nTEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimensat(SB)\nGLOBL\t·libc_utimensat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB)\n\nTEXT libc_pledge_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pledge(SB)\nGLOBL\t·libc_pledge_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pledge_trampoline_addr(SB)/8, $libc_pledge_trampoline<>(SB)\n\nTEXT libc_unveil_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unveil(SB)\nGLOBL\t·libc_unveil_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unveil_trampoline_addr(SB)/8, $libc_unveil_trampoline<>(SB)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go",
    "content": "// go run mksyscall.go -l32 -openbsd -arm -libc -tags openbsd,arm syscall_bsd.go syscall_openbsd.go syscall_openbsd_arm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build openbsd && arm\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgroups getgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgroups setgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_wait4_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_wait4 wait4 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_accept_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_accept accept \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_bind_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_bind bind \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_connect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_connect connect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socket_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socket socket \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockopt getsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsockopt setsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpeername_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpeername getpeername \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockname_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockname getsockname \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shutdown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shutdown shutdown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socketpair_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socketpair socketpair \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvfrom_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvfrom recvfrom \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendto_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendto sendto \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvmsg recvmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendmsg sendmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kevent_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kevent kevent \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimes utimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_futimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_futimes futimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_poll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_poll poll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_madvise_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_madvise madvise \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlock mlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlockall mlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mprotect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mprotect mprotect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_msync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_msync msync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlock munlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlockall munlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_pipe2_trampoline_addr, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pipe2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pipe2 pipe2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getdents_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getdents_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getdents getdents \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getcwd_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getcwd getcwd \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) {\n\tsyscall_rawSyscall(libc_getresuid_trampoline_addr, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid)))\n\treturn\n}\n\nvar libc_getresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresuid getresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) {\n\tsyscall_rawSyscall(libc_getresgid_trampoline_addr, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid)))\n\treturn\n}\n\nvar libc_getresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresgid getresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ioctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ioctl ioctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sysctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sysctl sysctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fcntl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fcntl fcntl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_ppoll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ppoll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ppoll ppoll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_access_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_access access \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_adjtime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_adjtime adjtime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chdir chdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chflags chflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chmod chmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chown chown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chroot_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chroot chroot \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_clock_gettime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_clock_gettime clock_gettime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_close_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_close close \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup dup \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup2 dup2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(from int, to int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup3_trampoline_addr, uintptr(from), uintptr(to), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup3_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup3 dup3 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tsyscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0)\n\treturn\n}\n\nvar libc_exit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_exit exit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_faccessat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_faccessat faccessat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchdir fchdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchflags fchflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmod fchmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmodat fchmodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchown fchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchownat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchownat fchownat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_flock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_flock flock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fpathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fpathconf fpathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstat fstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fstatat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatat fstatat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstatfs_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatfs fstatfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fsync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fsync fsync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_ftruncate_trampoline_addr, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ftruncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ftruncate ftruncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\nvar libc_getegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getegid getegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_geteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_geteuid geteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\nvar libc_getgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgid getgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgid getpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\nvar libc_getpgrp_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgrp getpgrp \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\nvar libc_getpid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpid getpid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\nvar libc_getppid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getppid getppid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpriority getpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrlimit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrlimit getrlimit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrtable() (rtable int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getrtable_trampoline_addr, 0, 0, 0)\n\trtable = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrtable getrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrusage_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrusage getrusage \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsid getsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_gettimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_gettimeofday gettimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_getuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getuid getuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := syscall_syscall(libc_issetugid_trampoline_addr, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\nvar libc_issetugid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_issetugid issetugid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kill_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kill kill \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kqueue_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kqueue kqueue \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lchown lchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_link_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_link link \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_linkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_linkat linkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_listen_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_listen listen \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lstat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lstat lstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdir mkdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdirat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdirat mkdirat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifo_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifo mkfifo \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifoat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifoat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifoat mkfifoat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknod mknod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mknodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknodat mknodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(fsType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(dir)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mount mount \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_nanosleep_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_nanosleep nanosleep \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_open_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_open_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_open open \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_openat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_openat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_openat openat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_pathconf_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pathconf pathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pread_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pread_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pread pread \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pwrite_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pwrite_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pwrite pwrite \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_read_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_read read \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_readlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlink readlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_readlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlinkat readlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rename_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rename_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rename rename \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_renameat_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_renameat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_renameat renameat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_revoke_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_revoke_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_revoke revoke \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rmdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rmdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rmdir rmdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, r1, e1 := syscall_syscall6(libc_lseek_trampoline_addr, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0)\n\tnewoffset = int64(int64(r1)<<32 | int64(r0))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lseek_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lseek lseek \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_select_trampoline_addr, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_select_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_select select \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setegid setegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_seteuid_trampoline_addr, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_seteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_seteuid seteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgid_trampoline_addr, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgid setgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_setlogin_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setlogin_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setlogin setlogin \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setpgid_trampoline_addr, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpgid setpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_setpriority_trampoline_addr, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpriority setpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setregid_trampoline_addr, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setregid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setregid setregid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setreuid_trampoline_addr, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setreuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setreuid setreuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setresgid_trampoline_addr, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setresgid setresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setresuid_trampoline_addr, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setresuid setresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setrtable(rtable int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setrtable_trampoline_addr, uintptr(rtable), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setrtable setrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsid setsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_settimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_settimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_settimeofday settimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setuid_trampoline_addr, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setuid setuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_stat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_stat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_stat stat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_statfs_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_statfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_statfs statfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlink symlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlinkat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlinkat symlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := syscall_syscall(libc_sync_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sync sync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_truncate_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_truncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_truncate truncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := syscall_syscall(libc_umask_trampoline_addr, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\nvar libc_umask_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_umask umask \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlink unlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlinkat unlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unmount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unmount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unmount unmount \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_write_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_write write \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := syscall_syscall9(libc_mmap_trampoline_addr, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0)\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mmap mmap \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_munmap_trampoline_addr, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munmap munmap \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getfsstat_trampoline_addr, uintptr(unsafe.Pointer(stat)), uintptr(bufsize), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getfsstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getfsstat getfsstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_utimensat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimensat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimensat utimensat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pledge(promises *byte, execpromises *byte) (err error) {\n\t_, _, e1 := syscall_syscall(libc_pledge_trampoline_addr, uintptr(unsafe.Pointer(promises)), uintptr(unsafe.Pointer(execpromises)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pledge_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pledge pledge \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc unveil(path *byte, flags *byte) (err error) {\n\t_, _, e1 := syscall_syscall(libc_unveil_trampoline_addr, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(flags)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unveil_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unveil unveil \"libc.so\"\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.s",
    "content": "// go run mkasm.go openbsd arm\n// Code generated by the command above; DO NOT EDIT.\n\n#include \"textflag.h\"\n\nTEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgroups(SB)\nGLOBL\t·libc_getgroups_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getgroups_trampoline_addr(SB)/4, $libc_getgroups_trampoline<>(SB)\n\nTEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgroups(SB)\nGLOBL\t·libc_setgroups_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setgroups_trampoline_addr(SB)/4, $libc_setgroups_trampoline<>(SB)\n\nTEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_wait4(SB)\nGLOBL\t·libc_wait4_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_wait4_trampoline_addr(SB)/4, $libc_wait4_trampoline<>(SB)\n\nTEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_accept(SB)\nGLOBL\t·libc_accept_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_accept_trampoline_addr(SB)/4, $libc_accept_trampoline<>(SB)\n\nTEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_bind(SB)\nGLOBL\t·libc_bind_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_bind_trampoline_addr(SB)/4, $libc_bind_trampoline<>(SB)\n\nTEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_connect(SB)\nGLOBL\t·libc_connect_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_connect_trampoline_addr(SB)/4, $libc_connect_trampoline<>(SB)\n\nTEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socket(SB)\nGLOBL\t·libc_socket_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_socket_trampoline_addr(SB)/4, $libc_socket_trampoline<>(SB)\n\nTEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockopt(SB)\nGLOBL\t·libc_getsockopt_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getsockopt_trampoline_addr(SB)/4, $libc_getsockopt_trampoline<>(SB)\n\nTEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsockopt(SB)\nGLOBL\t·libc_setsockopt_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setsockopt_trampoline_addr(SB)/4, $libc_setsockopt_trampoline<>(SB)\n\nTEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpeername(SB)\nGLOBL\t·libc_getpeername_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getpeername_trampoline_addr(SB)/4, $libc_getpeername_trampoline<>(SB)\n\nTEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockname(SB)\nGLOBL\t·libc_getsockname_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getsockname_trampoline_addr(SB)/4, $libc_getsockname_trampoline<>(SB)\n\nTEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shutdown(SB)\nGLOBL\t·libc_shutdown_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_shutdown_trampoline_addr(SB)/4, $libc_shutdown_trampoline<>(SB)\n\nTEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socketpair(SB)\nGLOBL\t·libc_socketpair_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_socketpair_trampoline_addr(SB)/4, $libc_socketpair_trampoline<>(SB)\n\nTEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvfrom(SB)\nGLOBL\t·libc_recvfrom_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_recvfrom_trampoline_addr(SB)/4, $libc_recvfrom_trampoline<>(SB)\n\nTEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendto(SB)\nGLOBL\t·libc_sendto_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_sendto_trampoline_addr(SB)/4, $libc_sendto_trampoline<>(SB)\n\nTEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvmsg(SB)\nGLOBL\t·libc_recvmsg_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_recvmsg_trampoline_addr(SB)/4, $libc_recvmsg_trampoline<>(SB)\n\nTEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendmsg(SB)\nGLOBL\t·libc_sendmsg_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_sendmsg_trampoline_addr(SB)/4, $libc_sendmsg_trampoline<>(SB)\n\nTEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kevent(SB)\nGLOBL\t·libc_kevent_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_kevent_trampoline_addr(SB)/4, $libc_kevent_trampoline<>(SB)\n\nTEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimes(SB)\nGLOBL\t·libc_utimes_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_utimes_trampoline_addr(SB)/4, $libc_utimes_trampoline<>(SB)\n\nTEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_futimes(SB)\nGLOBL\t·libc_futimes_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_futimes_trampoline_addr(SB)/4, $libc_futimes_trampoline<>(SB)\n\nTEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_poll(SB)\nGLOBL\t·libc_poll_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_poll_trampoline_addr(SB)/4, $libc_poll_trampoline<>(SB)\n\nTEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_madvise(SB)\nGLOBL\t·libc_madvise_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_madvise_trampoline_addr(SB)/4, $libc_madvise_trampoline<>(SB)\n\nTEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlock(SB)\nGLOBL\t·libc_mlock_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mlock_trampoline_addr(SB)/4, $libc_mlock_trampoline<>(SB)\n\nTEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlockall(SB)\nGLOBL\t·libc_mlockall_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mlockall_trampoline_addr(SB)/4, $libc_mlockall_trampoline<>(SB)\n\nTEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mprotect(SB)\nGLOBL\t·libc_mprotect_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mprotect_trampoline_addr(SB)/4, $libc_mprotect_trampoline<>(SB)\n\nTEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_msync(SB)\nGLOBL\t·libc_msync_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_msync_trampoline_addr(SB)/4, $libc_msync_trampoline<>(SB)\n\nTEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlock(SB)\nGLOBL\t·libc_munlock_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_munlock_trampoline_addr(SB)/4, $libc_munlock_trampoline<>(SB)\n\nTEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlockall(SB)\nGLOBL\t·libc_munlockall_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_munlockall_trampoline_addr(SB)/4, $libc_munlockall_trampoline<>(SB)\n\nTEXT libc_pipe2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pipe2(SB)\nGLOBL\t·libc_pipe2_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_pipe2_trampoline_addr(SB)/4, $libc_pipe2_trampoline<>(SB)\n\nTEXT libc_getdents_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getdents(SB)\nGLOBL\t·libc_getdents_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getdents_trampoline_addr(SB)/4, $libc_getdents_trampoline<>(SB)\n\nTEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getcwd(SB)\nGLOBL\t·libc_getcwd_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getcwd_trampoline_addr(SB)/4, $libc_getcwd_trampoline<>(SB)\n\nTEXT libc_getresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getresuid(SB)\nGLOBL\t·libc_getresuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getresuid_trampoline_addr(SB)/4, $libc_getresuid_trampoline<>(SB)\n\nTEXT libc_getresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getresgid(SB)\nGLOBL\t·libc_getresgid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getresgid_trampoline_addr(SB)/4, $libc_getresgid_trampoline<>(SB)\n\nTEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ioctl(SB)\nGLOBL\t·libc_ioctl_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_ioctl_trampoline_addr(SB)/4, $libc_ioctl_trampoline<>(SB)\n\nTEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sysctl(SB)\nGLOBL\t·libc_sysctl_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_sysctl_trampoline_addr(SB)/4, $libc_sysctl_trampoline<>(SB)\n\nTEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fcntl(SB)\nGLOBL\t·libc_fcntl_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fcntl_trampoline_addr(SB)/4, $libc_fcntl_trampoline<>(SB)\n\nTEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ppoll(SB)\nGLOBL\t·libc_ppoll_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_ppoll_trampoline_addr(SB)/4, $libc_ppoll_trampoline<>(SB)\n\nTEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_access(SB)\nGLOBL\t·libc_access_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_access_trampoline_addr(SB)/4, $libc_access_trampoline<>(SB)\n\nTEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_adjtime(SB)\nGLOBL\t·libc_adjtime_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_adjtime_trampoline_addr(SB)/4, $libc_adjtime_trampoline<>(SB)\n\nTEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chdir(SB)\nGLOBL\t·libc_chdir_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_chdir_trampoline_addr(SB)/4, $libc_chdir_trampoline<>(SB)\n\nTEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chflags(SB)\nGLOBL\t·libc_chflags_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_chflags_trampoline_addr(SB)/4, $libc_chflags_trampoline<>(SB)\n\nTEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chmod(SB)\nGLOBL\t·libc_chmod_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_chmod_trampoline_addr(SB)/4, $libc_chmod_trampoline<>(SB)\n\nTEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chown(SB)\nGLOBL\t·libc_chown_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_chown_trampoline_addr(SB)/4, $libc_chown_trampoline<>(SB)\n\nTEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chroot(SB)\nGLOBL\t·libc_chroot_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_chroot_trampoline_addr(SB)/4, $libc_chroot_trampoline<>(SB)\n\nTEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_clock_gettime(SB)\nGLOBL\t·libc_clock_gettime_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_clock_gettime_trampoline_addr(SB)/4, $libc_clock_gettime_trampoline<>(SB)\n\nTEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_close(SB)\nGLOBL\t·libc_close_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_close_trampoline_addr(SB)/4, $libc_close_trampoline<>(SB)\n\nTEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup(SB)\nGLOBL\t·libc_dup_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_dup_trampoline_addr(SB)/4, $libc_dup_trampoline<>(SB)\n\nTEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup2(SB)\nGLOBL\t·libc_dup2_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_dup2_trampoline_addr(SB)/4, $libc_dup2_trampoline<>(SB)\n\nTEXT libc_dup3_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup3(SB)\nGLOBL\t·libc_dup3_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_dup3_trampoline_addr(SB)/4, $libc_dup3_trampoline<>(SB)\n\nTEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_exit(SB)\nGLOBL\t·libc_exit_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_exit_trampoline_addr(SB)/4, $libc_exit_trampoline<>(SB)\n\nTEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_faccessat(SB)\nGLOBL\t·libc_faccessat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_faccessat_trampoline_addr(SB)/4, $libc_faccessat_trampoline<>(SB)\n\nTEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchdir(SB)\nGLOBL\t·libc_fchdir_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fchdir_trampoline_addr(SB)/4, $libc_fchdir_trampoline<>(SB)\n\nTEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchflags(SB)\nGLOBL\t·libc_fchflags_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fchflags_trampoline_addr(SB)/4, $libc_fchflags_trampoline<>(SB)\n\nTEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmod(SB)\nGLOBL\t·libc_fchmod_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fchmod_trampoline_addr(SB)/4, $libc_fchmod_trampoline<>(SB)\n\nTEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmodat(SB)\nGLOBL\t·libc_fchmodat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fchmodat_trampoline_addr(SB)/4, $libc_fchmodat_trampoline<>(SB)\n\nTEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchown(SB)\nGLOBL\t·libc_fchown_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fchown_trampoline_addr(SB)/4, $libc_fchown_trampoline<>(SB)\n\nTEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchownat(SB)\nGLOBL\t·libc_fchownat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fchownat_trampoline_addr(SB)/4, $libc_fchownat_trampoline<>(SB)\n\nTEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_flock(SB)\nGLOBL\t·libc_flock_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_flock_trampoline_addr(SB)/4, $libc_flock_trampoline<>(SB)\n\nTEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fpathconf(SB)\nGLOBL\t·libc_fpathconf_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fpathconf_trampoline_addr(SB)/4, $libc_fpathconf_trampoline<>(SB)\n\nTEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstat(SB)\nGLOBL\t·libc_fstat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fstat_trampoline_addr(SB)/4, $libc_fstat_trampoline<>(SB)\n\nTEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatat(SB)\nGLOBL\t·libc_fstatat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fstatat_trampoline_addr(SB)/4, $libc_fstatat_trampoline<>(SB)\n\nTEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatfs(SB)\nGLOBL\t·libc_fstatfs_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fstatfs_trampoline_addr(SB)/4, $libc_fstatfs_trampoline<>(SB)\n\nTEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fsync(SB)\nGLOBL\t·libc_fsync_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fsync_trampoline_addr(SB)/4, $libc_fsync_trampoline<>(SB)\n\nTEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ftruncate(SB)\nGLOBL\t·libc_ftruncate_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_ftruncate_trampoline_addr(SB)/4, $libc_ftruncate_trampoline<>(SB)\n\nTEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getegid(SB)\nGLOBL\t·libc_getegid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getegid_trampoline_addr(SB)/4, $libc_getegid_trampoline<>(SB)\n\nTEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_geteuid(SB)\nGLOBL\t·libc_geteuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_geteuid_trampoline_addr(SB)/4, $libc_geteuid_trampoline<>(SB)\n\nTEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgid(SB)\nGLOBL\t·libc_getgid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getgid_trampoline_addr(SB)/4, $libc_getgid_trampoline<>(SB)\n\nTEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgid(SB)\nGLOBL\t·libc_getpgid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getpgid_trampoline_addr(SB)/4, $libc_getpgid_trampoline<>(SB)\n\nTEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgrp(SB)\nGLOBL\t·libc_getpgrp_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getpgrp_trampoline_addr(SB)/4, $libc_getpgrp_trampoline<>(SB)\n\nTEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpid(SB)\nGLOBL\t·libc_getpid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getpid_trampoline_addr(SB)/4, $libc_getpid_trampoline<>(SB)\n\nTEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getppid(SB)\nGLOBL\t·libc_getppid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getppid_trampoline_addr(SB)/4, $libc_getppid_trampoline<>(SB)\n\nTEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpriority(SB)\nGLOBL\t·libc_getpriority_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getpriority_trampoline_addr(SB)/4, $libc_getpriority_trampoline<>(SB)\n\nTEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrlimit(SB)\nGLOBL\t·libc_getrlimit_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getrlimit_trampoline_addr(SB)/4, $libc_getrlimit_trampoline<>(SB)\n\nTEXT libc_getrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrtable(SB)\nGLOBL\t·libc_getrtable_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getrtable_trampoline_addr(SB)/4, $libc_getrtable_trampoline<>(SB)\n\nTEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrusage(SB)\nGLOBL\t·libc_getrusage_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getrusage_trampoline_addr(SB)/4, $libc_getrusage_trampoline<>(SB)\n\nTEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsid(SB)\nGLOBL\t·libc_getsid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getsid_trampoline_addr(SB)/4, $libc_getsid_trampoline<>(SB)\n\nTEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_gettimeofday(SB)\nGLOBL\t·libc_gettimeofday_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_gettimeofday_trampoline_addr(SB)/4, $libc_gettimeofday_trampoline<>(SB)\n\nTEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getuid(SB)\nGLOBL\t·libc_getuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getuid_trampoline_addr(SB)/4, $libc_getuid_trampoline<>(SB)\n\nTEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_issetugid(SB)\nGLOBL\t·libc_issetugid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_issetugid_trampoline_addr(SB)/4, $libc_issetugid_trampoline<>(SB)\n\nTEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kill(SB)\nGLOBL\t·libc_kill_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_kill_trampoline_addr(SB)/4, $libc_kill_trampoline<>(SB)\n\nTEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kqueue(SB)\nGLOBL\t·libc_kqueue_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_kqueue_trampoline_addr(SB)/4, $libc_kqueue_trampoline<>(SB)\n\nTEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lchown(SB)\nGLOBL\t·libc_lchown_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_lchown_trampoline_addr(SB)/4, $libc_lchown_trampoline<>(SB)\n\nTEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_link(SB)\nGLOBL\t·libc_link_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_link_trampoline_addr(SB)/4, $libc_link_trampoline<>(SB)\n\nTEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_linkat(SB)\nGLOBL\t·libc_linkat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_linkat_trampoline_addr(SB)/4, $libc_linkat_trampoline<>(SB)\n\nTEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_listen(SB)\nGLOBL\t·libc_listen_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_listen_trampoline_addr(SB)/4, $libc_listen_trampoline<>(SB)\n\nTEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lstat(SB)\nGLOBL\t·libc_lstat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_lstat_trampoline_addr(SB)/4, $libc_lstat_trampoline<>(SB)\n\nTEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdir(SB)\nGLOBL\t·libc_mkdir_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mkdir_trampoline_addr(SB)/4, $libc_mkdir_trampoline<>(SB)\n\nTEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdirat(SB)\nGLOBL\t·libc_mkdirat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mkdirat_trampoline_addr(SB)/4, $libc_mkdirat_trampoline<>(SB)\n\nTEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifo(SB)\nGLOBL\t·libc_mkfifo_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mkfifo_trampoline_addr(SB)/4, $libc_mkfifo_trampoline<>(SB)\n\nTEXT libc_mkfifoat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifoat(SB)\nGLOBL\t·libc_mkfifoat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mkfifoat_trampoline_addr(SB)/4, $libc_mkfifoat_trampoline<>(SB)\n\nTEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknod(SB)\nGLOBL\t·libc_mknod_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mknod_trampoline_addr(SB)/4, $libc_mknod_trampoline<>(SB)\n\nTEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknodat(SB)\nGLOBL\t·libc_mknodat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mknodat_trampoline_addr(SB)/4, $libc_mknodat_trampoline<>(SB)\n\nTEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mount(SB)\nGLOBL\t·libc_mount_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mount_trampoline_addr(SB)/4, $libc_mount_trampoline<>(SB)\n\nTEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_nanosleep(SB)\nGLOBL\t·libc_nanosleep_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_nanosleep_trampoline_addr(SB)/4, $libc_nanosleep_trampoline<>(SB)\n\nTEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_open(SB)\nGLOBL\t·libc_open_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_open_trampoline_addr(SB)/4, $libc_open_trampoline<>(SB)\n\nTEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_openat(SB)\nGLOBL\t·libc_openat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_openat_trampoline_addr(SB)/4, $libc_openat_trampoline<>(SB)\n\nTEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pathconf(SB)\nGLOBL\t·libc_pathconf_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_pathconf_trampoline_addr(SB)/4, $libc_pathconf_trampoline<>(SB)\n\nTEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pread(SB)\nGLOBL\t·libc_pread_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_pread_trampoline_addr(SB)/4, $libc_pread_trampoline<>(SB)\n\nTEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pwrite(SB)\nGLOBL\t·libc_pwrite_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_pwrite_trampoline_addr(SB)/4, $libc_pwrite_trampoline<>(SB)\n\nTEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_read(SB)\nGLOBL\t·libc_read_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_read_trampoline_addr(SB)/4, $libc_read_trampoline<>(SB)\n\nTEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlink(SB)\nGLOBL\t·libc_readlink_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_readlink_trampoline_addr(SB)/4, $libc_readlink_trampoline<>(SB)\n\nTEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlinkat(SB)\nGLOBL\t·libc_readlinkat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_readlinkat_trampoline_addr(SB)/4, $libc_readlinkat_trampoline<>(SB)\n\nTEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rename(SB)\nGLOBL\t·libc_rename_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_rename_trampoline_addr(SB)/4, $libc_rename_trampoline<>(SB)\n\nTEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_renameat(SB)\nGLOBL\t·libc_renameat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_renameat_trampoline_addr(SB)/4, $libc_renameat_trampoline<>(SB)\n\nTEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_revoke(SB)\nGLOBL\t·libc_revoke_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_revoke_trampoline_addr(SB)/4, $libc_revoke_trampoline<>(SB)\n\nTEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rmdir(SB)\nGLOBL\t·libc_rmdir_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_rmdir_trampoline_addr(SB)/4, $libc_rmdir_trampoline<>(SB)\n\nTEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lseek(SB)\nGLOBL\t·libc_lseek_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_lseek_trampoline_addr(SB)/4, $libc_lseek_trampoline<>(SB)\n\nTEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_select(SB)\nGLOBL\t·libc_select_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_select_trampoline_addr(SB)/4, $libc_select_trampoline<>(SB)\n\nTEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setegid(SB)\nGLOBL\t·libc_setegid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setegid_trampoline_addr(SB)/4, $libc_setegid_trampoline<>(SB)\n\nTEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_seteuid(SB)\nGLOBL\t·libc_seteuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_seteuid_trampoline_addr(SB)/4, $libc_seteuid_trampoline<>(SB)\n\nTEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgid(SB)\nGLOBL\t·libc_setgid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setgid_trampoline_addr(SB)/4, $libc_setgid_trampoline<>(SB)\n\nTEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setlogin(SB)\nGLOBL\t·libc_setlogin_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setlogin_trampoline_addr(SB)/4, $libc_setlogin_trampoline<>(SB)\n\nTEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpgid(SB)\nGLOBL\t·libc_setpgid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setpgid_trampoline_addr(SB)/4, $libc_setpgid_trampoline<>(SB)\n\nTEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpriority(SB)\nGLOBL\t·libc_setpriority_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setpriority_trampoline_addr(SB)/4, $libc_setpriority_trampoline<>(SB)\n\nTEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setregid(SB)\nGLOBL\t·libc_setregid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setregid_trampoline_addr(SB)/4, $libc_setregid_trampoline<>(SB)\n\nTEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setreuid(SB)\nGLOBL\t·libc_setreuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setreuid_trampoline_addr(SB)/4, $libc_setreuid_trampoline<>(SB)\n\nTEXT libc_setresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setresgid(SB)\nGLOBL\t·libc_setresgid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setresgid_trampoline_addr(SB)/4, $libc_setresgid_trampoline<>(SB)\n\nTEXT libc_setresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setresuid(SB)\nGLOBL\t·libc_setresuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setresuid_trampoline_addr(SB)/4, $libc_setresuid_trampoline<>(SB)\n\nTEXT libc_setrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setrtable(SB)\nGLOBL\t·libc_setrtable_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setrtable_trampoline_addr(SB)/4, $libc_setrtable_trampoline<>(SB)\n\nTEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsid(SB)\nGLOBL\t·libc_setsid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setsid_trampoline_addr(SB)/4, $libc_setsid_trampoline<>(SB)\n\nTEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_settimeofday(SB)\nGLOBL\t·libc_settimeofday_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_settimeofday_trampoline_addr(SB)/4, $libc_settimeofday_trampoline<>(SB)\n\nTEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setuid(SB)\nGLOBL\t·libc_setuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setuid_trampoline_addr(SB)/4, $libc_setuid_trampoline<>(SB)\n\nTEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_stat(SB)\nGLOBL\t·libc_stat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_stat_trampoline_addr(SB)/4, $libc_stat_trampoline<>(SB)\n\nTEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_statfs(SB)\nGLOBL\t·libc_statfs_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_statfs_trampoline_addr(SB)/4, $libc_statfs_trampoline<>(SB)\n\nTEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlink(SB)\nGLOBL\t·libc_symlink_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_symlink_trampoline_addr(SB)/4, $libc_symlink_trampoline<>(SB)\n\nTEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlinkat(SB)\nGLOBL\t·libc_symlinkat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_symlinkat_trampoline_addr(SB)/4, $libc_symlinkat_trampoline<>(SB)\n\nTEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sync(SB)\nGLOBL\t·libc_sync_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_sync_trampoline_addr(SB)/4, $libc_sync_trampoline<>(SB)\n\nTEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_truncate(SB)\nGLOBL\t·libc_truncate_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_truncate_trampoline_addr(SB)/4, $libc_truncate_trampoline<>(SB)\n\nTEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_umask(SB)\nGLOBL\t·libc_umask_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_umask_trampoline_addr(SB)/4, $libc_umask_trampoline<>(SB)\n\nTEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlink(SB)\nGLOBL\t·libc_unlink_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_unlink_trampoline_addr(SB)/4, $libc_unlink_trampoline<>(SB)\n\nTEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlinkat(SB)\nGLOBL\t·libc_unlinkat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_unlinkat_trampoline_addr(SB)/4, $libc_unlinkat_trampoline<>(SB)\n\nTEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unmount(SB)\nGLOBL\t·libc_unmount_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_unmount_trampoline_addr(SB)/4, $libc_unmount_trampoline<>(SB)\n\nTEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_write(SB)\nGLOBL\t·libc_write_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_write_trampoline_addr(SB)/4, $libc_write_trampoline<>(SB)\n\nTEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mmap(SB)\nGLOBL\t·libc_mmap_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mmap_trampoline_addr(SB)/4, $libc_mmap_trampoline<>(SB)\n\nTEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munmap(SB)\nGLOBL\t·libc_munmap_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_munmap_trampoline_addr(SB)/4, $libc_munmap_trampoline<>(SB)\n\nTEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getfsstat(SB)\nGLOBL\t·libc_getfsstat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getfsstat_trampoline_addr(SB)/4, $libc_getfsstat_trampoline<>(SB)\n\nTEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimensat(SB)\nGLOBL\t·libc_utimensat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_utimensat_trampoline_addr(SB)/4, $libc_utimensat_trampoline<>(SB)\n\nTEXT libc_pledge_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pledge(SB)\nGLOBL\t·libc_pledge_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_pledge_trampoline_addr(SB)/4, $libc_pledge_trampoline<>(SB)\n\nTEXT libc_unveil_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unveil(SB)\nGLOBL\t·libc_unveil_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_unveil_trampoline_addr(SB)/4, $libc_unveil_trampoline<>(SB)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go",
    "content": "// go run mksyscall.go -openbsd -libc -tags openbsd,arm64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_arm64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build openbsd && arm64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgroups getgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgroups setgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_wait4_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_wait4 wait4 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_accept_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_accept accept \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_bind_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_bind bind \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_connect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_connect connect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socket_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socket socket \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockopt getsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsockopt setsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpeername_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpeername getpeername \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockname_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockname getsockname \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shutdown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shutdown shutdown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socketpair_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socketpair socketpair \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvfrom_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvfrom recvfrom \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendto_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendto sendto \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvmsg recvmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendmsg sendmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kevent_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kevent kevent \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimes utimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_futimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_futimes futimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_poll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_poll poll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_madvise_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_madvise madvise \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlock mlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlockall mlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mprotect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mprotect mprotect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_msync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_msync msync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlock munlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlockall munlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_pipe2_trampoline_addr, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pipe2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pipe2 pipe2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getdents_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getdents_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getdents getdents \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getcwd_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getcwd getcwd \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) {\n\tsyscall_rawSyscall(libc_getresuid_trampoline_addr, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid)))\n\treturn\n}\n\nvar libc_getresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresuid getresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) {\n\tsyscall_rawSyscall(libc_getresgid_trampoline_addr, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid)))\n\treturn\n}\n\nvar libc_getresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresgid getresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ioctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ioctl ioctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sysctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sysctl sysctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fcntl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fcntl fcntl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_ppoll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ppoll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ppoll ppoll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_access_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_access access \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_adjtime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_adjtime adjtime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chdir chdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chflags chflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chmod chmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chown chown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chroot_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chroot chroot \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_clock_gettime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_clock_gettime clock_gettime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_close_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_close close \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup dup \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup2 dup2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(from int, to int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup3_trampoline_addr, uintptr(from), uintptr(to), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup3_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup3 dup3 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tsyscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0)\n\treturn\n}\n\nvar libc_exit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_exit exit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_faccessat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_faccessat faccessat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchdir fchdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchflags fchflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmod fchmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmodat fchmodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchown fchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchownat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchownat fchownat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_flock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_flock flock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fpathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fpathconf fpathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstat fstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fstatat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatat fstatat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstatfs_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatfs fstatfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fsync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fsync fsync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ftruncate_trampoline_addr, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ftruncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ftruncate ftruncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\nvar libc_getegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getegid getegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_geteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_geteuid geteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\nvar libc_getgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgid getgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgid getpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\nvar libc_getpgrp_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgrp getpgrp \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\nvar libc_getpid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpid getpid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\nvar libc_getppid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getppid getppid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpriority getpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrlimit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrlimit getrlimit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrtable() (rtable int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getrtable_trampoline_addr, 0, 0, 0)\n\trtable = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrtable getrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrusage_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrusage getrusage \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsid getsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_gettimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_gettimeofday gettimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_getuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getuid getuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := syscall_syscall(libc_issetugid_trampoline_addr, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\nvar libc_issetugid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_issetugid issetugid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kill_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kill kill \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kqueue_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kqueue kqueue \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lchown lchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_link_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_link link \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_linkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_linkat linkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_listen_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_listen listen \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lstat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lstat lstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdir mkdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdirat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdirat mkdirat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifo_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifo mkfifo \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifoat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifoat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifoat mkfifoat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknod mknod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mknodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknodat mknodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(fsType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(dir)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mount mount \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_nanosleep_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_nanosleep nanosleep \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_open_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_open_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_open open \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_openat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_openat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_openat openat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_pathconf_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pathconf pathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pread_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pread_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pread pread \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pwrite_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pwrite_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pwrite pwrite \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_read_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_read read \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_readlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlink readlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_readlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlinkat readlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rename_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rename_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rename rename \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_renameat_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_renameat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_renameat renameat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_revoke_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_revoke_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_revoke revoke \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rmdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rmdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rmdir rmdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := syscall_syscall(libc_lseek_trampoline_addr, uintptr(fd), uintptr(offset), uintptr(whence))\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lseek_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lseek lseek \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_select_trampoline_addr, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_select_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_select select \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setegid setegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_seteuid_trampoline_addr, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_seteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_seteuid seteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgid_trampoline_addr, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgid setgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_setlogin_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setlogin_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setlogin setlogin \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setpgid_trampoline_addr, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpgid setpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_setpriority_trampoline_addr, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpriority setpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setregid_trampoline_addr, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setregid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setregid setregid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setreuid_trampoline_addr, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setreuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setreuid setreuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setresgid_trampoline_addr, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setresgid setresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setresuid_trampoline_addr, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setresuid setresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setrtable(rtable int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setrtable_trampoline_addr, uintptr(rtable), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setrtable setrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsid setsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_settimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_settimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_settimeofday settimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setuid_trampoline_addr, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setuid setuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_stat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_stat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_stat stat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_statfs_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_statfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_statfs statfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlink symlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlinkat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlinkat symlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := syscall_syscall(libc_sync_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sync sync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_truncate_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_truncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_truncate truncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := syscall_syscall(libc_umask_trampoline_addr, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\nvar libc_umask_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_umask umask \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlink unlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlinkat unlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unmount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unmount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unmount unmount \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_write_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_write write \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_mmap_trampoline_addr, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mmap mmap \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_munmap_trampoline_addr, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munmap munmap \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getfsstat_trampoline_addr, uintptr(unsafe.Pointer(stat)), uintptr(bufsize), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getfsstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getfsstat getfsstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_utimensat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimensat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimensat utimensat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pledge(promises *byte, execpromises *byte) (err error) {\n\t_, _, e1 := syscall_syscall(libc_pledge_trampoline_addr, uintptr(unsafe.Pointer(promises)), uintptr(unsafe.Pointer(execpromises)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pledge_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pledge pledge \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc unveil(path *byte, flags *byte) (err error) {\n\t_, _, e1 := syscall_syscall(libc_unveil_trampoline_addr, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(flags)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unveil_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unveil unveil \"libc.so\"\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.s",
    "content": "// go run mkasm.go openbsd arm64\n// Code generated by the command above; DO NOT EDIT.\n\n#include \"textflag.h\"\n\nTEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgroups(SB)\nGLOBL\t·libc_getgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB)\n\nTEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgroups(SB)\nGLOBL\t·libc_setgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB)\n\nTEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_wait4(SB)\nGLOBL\t·libc_wait4_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB)\n\nTEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_accept(SB)\nGLOBL\t·libc_accept_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB)\n\nTEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_bind(SB)\nGLOBL\t·libc_bind_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB)\n\nTEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_connect(SB)\nGLOBL\t·libc_connect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB)\n\nTEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socket(SB)\nGLOBL\t·libc_socket_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB)\n\nTEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockopt(SB)\nGLOBL\t·libc_getsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB)\n\nTEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsockopt(SB)\nGLOBL\t·libc_setsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB)\n\nTEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpeername(SB)\nGLOBL\t·libc_getpeername_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB)\n\nTEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockname(SB)\nGLOBL\t·libc_getsockname_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB)\n\nTEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shutdown(SB)\nGLOBL\t·libc_shutdown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB)\n\nTEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socketpair(SB)\nGLOBL\t·libc_socketpair_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB)\n\nTEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvfrom(SB)\nGLOBL\t·libc_recvfrom_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB)\n\nTEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendto(SB)\nGLOBL\t·libc_sendto_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB)\n\nTEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvmsg(SB)\nGLOBL\t·libc_recvmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB)\n\nTEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendmsg(SB)\nGLOBL\t·libc_sendmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB)\n\nTEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kevent(SB)\nGLOBL\t·libc_kevent_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB)\n\nTEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimes(SB)\nGLOBL\t·libc_utimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB)\n\nTEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_futimes(SB)\nGLOBL\t·libc_futimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB)\n\nTEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_poll(SB)\nGLOBL\t·libc_poll_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB)\n\nTEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_madvise(SB)\nGLOBL\t·libc_madvise_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB)\n\nTEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlock(SB)\nGLOBL\t·libc_mlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB)\n\nTEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlockall(SB)\nGLOBL\t·libc_mlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB)\n\nTEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mprotect(SB)\nGLOBL\t·libc_mprotect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB)\n\nTEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_msync(SB)\nGLOBL\t·libc_msync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB)\n\nTEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlock(SB)\nGLOBL\t·libc_munlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB)\n\nTEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlockall(SB)\nGLOBL\t·libc_munlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB)\n\nTEXT libc_pipe2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pipe2(SB)\nGLOBL\t·libc_pipe2_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pipe2_trampoline_addr(SB)/8, $libc_pipe2_trampoline<>(SB)\n\nTEXT libc_getdents_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getdents(SB)\nGLOBL\t·libc_getdents_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getdents_trampoline_addr(SB)/8, $libc_getdents_trampoline<>(SB)\n\nTEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getcwd(SB)\nGLOBL\t·libc_getcwd_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB)\n\nTEXT libc_getresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getresuid(SB)\nGLOBL\t·libc_getresuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getresuid_trampoline_addr(SB)/8, $libc_getresuid_trampoline<>(SB)\n\nTEXT libc_getresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getresgid(SB)\nGLOBL\t·libc_getresgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getresgid_trampoline_addr(SB)/8, $libc_getresgid_trampoline<>(SB)\n\nTEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ioctl(SB)\nGLOBL\t·libc_ioctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB)\n\nTEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sysctl(SB)\nGLOBL\t·libc_sysctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB)\n\nTEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fcntl(SB)\nGLOBL\t·libc_fcntl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB)\n\nTEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ppoll(SB)\nGLOBL\t·libc_ppoll_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ppoll_trampoline_addr(SB)/8, $libc_ppoll_trampoline<>(SB)\n\nTEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_access(SB)\nGLOBL\t·libc_access_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB)\n\nTEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_adjtime(SB)\nGLOBL\t·libc_adjtime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB)\n\nTEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chdir(SB)\nGLOBL\t·libc_chdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB)\n\nTEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chflags(SB)\nGLOBL\t·libc_chflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB)\n\nTEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chmod(SB)\nGLOBL\t·libc_chmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB)\n\nTEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chown(SB)\nGLOBL\t·libc_chown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB)\n\nTEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chroot(SB)\nGLOBL\t·libc_chroot_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB)\n\nTEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_clock_gettime(SB)\nGLOBL\t·libc_clock_gettime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB)\n\nTEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_close(SB)\nGLOBL\t·libc_close_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB)\n\nTEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup(SB)\nGLOBL\t·libc_dup_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB)\n\nTEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup2(SB)\nGLOBL\t·libc_dup2_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB)\n\nTEXT libc_dup3_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup3(SB)\nGLOBL\t·libc_dup3_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup3_trampoline_addr(SB)/8, $libc_dup3_trampoline<>(SB)\n\nTEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_exit(SB)\nGLOBL\t·libc_exit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB)\n\nTEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_faccessat(SB)\nGLOBL\t·libc_faccessat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB)\n\nTEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchdir(SB)\nGLOBL\t·libc_fchdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB)\n\nTEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchflags(SB)\nGLOBL\t·libc_fchflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB)\n\nTEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmod(SB)\nGLOBL\t·libc_fchmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB)\n\nTEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmodat(SB)\nGLOBL\t·libc_fchmodat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB)\n\nTEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchown(SB)\nGLOBL\t·libc_fchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB)\n\nTEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchownat(SB)\nGLOBL\t·libc_fchownat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB)\n\nTEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_flock(SB)\nGLOBL\t·libc_flock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB)\n\nTEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fpathconf(SB)\nGLOBL\t·libc_fpathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB)\n\nTEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstat(SB)\nGLOBL\t·libc_fstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstat_trampoline_addr(SB)/8, $libc_fstat_trampoline<>(SB)\n\nTEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatat(SB)\nGLOBL\t·libc_fstatat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatat_trampoline_addr(SB)/8, $libc_fstatat_trampoline<>(SB)\n\nTEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatfs(SB)\nGLOBL\t·libc_fstatfs_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatfs_trampoline_addr(SB)/8, $libc_fstatfs_trampoline<>(SB)\n\nTEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fsync(SB)\nGLOBL\t·libc_fsync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB)\n\nTEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ftruncate(SB)\nGLOBL\t·libc_ftruncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB)\n\nTEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getegid(SB)\nGLOBL\t·libc_getegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB)\n\nTEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_geteuid(SB)\nGLOBL\t·libc_geteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB)\n\nTEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgid(SB)\nGLOBL\t·libc_getgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB)\n\nTEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgid(SB)\nGLOBL\t·libc_getpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB)\n\nTEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgrp(SB)\nGLOBL\t·libc_getpgrp_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB)\n\nTEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpid(SB)\nGLOBL\t·libc_getpid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB)\n\nTEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getppid(SB)\nGLOBL\t·libc_getppid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB)\n\nTEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpriority(SB)\nGLOBL\t·libc_getpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB)\n\nTEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrlimit(SB)\nGLOBL\t·libc_getrlimit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB)\n\nTEXT libc_getrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrtable(SB)\nGLOBL\t·libc_getrtable_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrtable_trampoline_addr(SB)/8, $libc_getrtable_trampoline<>(SB)\n\nTEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrusage(SB)\nGLOBL\t·libc_getrusage_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB)\n\nTEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsid(SB)\nGLOBL\t·libc_getsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB)\n\nTEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_gettimeofday(SB)\nGLOBL\t·libc_gettimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB)\n\nTEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getuid(SB)\nGLOBL\t·libc_getuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB)\n\nTEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_issetugid(SB)\nGLOBL\t·libc_issetugid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB)\n\nTEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kill(SB)\nGLOBL\t·libc_kill_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB)\n\nTEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kqueue(SB)\nGLOBL\t·libc_kqueue_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB)\n\nTEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lchown(SB)\nGLOBL\t·libc_lchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB)\n\nTEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_link(SB)\nGLOBL\t·libc_link_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB)\n\nTEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_linkat(SB)\nGLOBL\t·libc_linkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB)\n\nTEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_listen(SB)\nGLOBL\t·libc_listen_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB)\n\nTEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lstat(SB)\nGLOBL\t·libc_lstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lstat_trampoline_addr(SB)/8, $libc_lstat_trampoline<>(SB)\n\nTEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdir(SB)\nGLOBL\t·libc_mkdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB)\n\nTEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdirat(SB)\nGLOBL\t·libc_mkdirat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB)\n\nTEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifo(SB)\nGLOBL\t·libc_mkfifo_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB)\n\nTEXT libc_mkfifoat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifoat(SB)\nGLOBL\t·libc_mkfifoat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkfifoat_trampoline_addr(SB)/8, $libc_mkfifoat_trampoline<>(SB)\n\nTEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknod(SB)\nGLOBL\t·libc_mknod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB)\n\nTEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknodat(SB)\nGLOBL\t·libc_mknodat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mknodat_trampoline_addr(SB)/8, $libc_mknodat_trampoline<>(SB)\n\nTEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mount(SB)\nGLOBL\t·libc_mount_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB)\n\nTEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_nanosleep(SB)\nGLOBL\t·libc_nanosleep_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_nanosleep_trampoline_addr(SB)/8, $libc_nanosleep_trampoline<>(SB)\n\nTEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_open(SB)\nGLOBL\t·libc_open_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB)\n\nTEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_openat(SB)\nGLOBL\t·libc_openat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB)\n\nTEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pathconf(SB)\nGLOBL\t·libc_pathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB)\n\nTEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pread(SB)\nGLOBL\t·libc_pread_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB)\n\nTEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pwrite(SB)\nGLOBL\t·libc_pwrite_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB)\n\nTEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_read(SB)\nGLOBL\t·libc_read_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB)\n\nTEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlink(SB)\nGLOBL\t·libc_readlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB)\n\nTEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlinkat(SB)\nGLOBL\t·libc_readlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB)\n\nTEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rename(SB)\nGLOBL\t·libc_rename_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB)\n\nTEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_renameat(SB)\nGLOBL\t·libc_renameat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB)\n\nTEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_revoke(SB)\nGLOBL\t·libc_revoke_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB)\n\nTEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rmdir(SB)\nGLOBL\t·libc_rmdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB)\n\nTEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lseek(SB)\nGLOBL\t·libc_lseek_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB)\n\nTEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_select(SB)\nGLOBL\t·libc_select_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB)\n\nTEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setegid(SB)\nGLOBL\t·libc_setegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB)\n\nTEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_seteuid(SB)\nGLOBL\t·libc_seteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB)\n\nTEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgid(SB)\nGLOBL\t·libc_setgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB)\n\nTEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setlogin(SB)\nGLOBL\t·libc_setlogin_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB)\n\nTEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpgid(SB)\nGLOBL\t·libc_setpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB)\n\nTEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpriority(SB)\nGLOBL\t·libc_setpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB)\n\nTEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setregid(SB)\nGLOBL\t·libc_setregid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB)\n\nTEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setreuid(SB)\nGLOBL\t·libc_setreuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB)\n\nTEXT libc_setresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setresgid(SB)\nGLOBL\t·libc_setresgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setresgid_trampoline_addr(SB)/8, $libc_setresgid_trampoline<>(SB)\n\nTEXT libc_setresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setresuid(SB)\nGLOBL\t·libc_setresuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setresuid_trampoline_addr(SB)/8, $libc_setresuid_trampoline<>(SB)\n\nTEXT libc_setrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setrtable(SB)\nGLOBL\t·libc_setrtable_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setrtable_trampoline_addr(SB)/8, $libc_setrtable_trampoline<>(SB)\n\nTEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsid(SB)\nGLOBL\t·libc_setsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB)\n\nTEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_settimeofday(SB)\nGLOBL\t·libc_settimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB)\n\nTEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setuid(SB)\nGLOBL\t·libc_setuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB)\n\nTEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_stat(SB)\nGLOBL\t·libc_stat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_stat_trampoline_addr(SB)/8, $libc_stat_trampoline<>(SB)\n\nTEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_statfs(SB)\nGLOBL\t·libc_statfs_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_statfs_trampoline_addr(SB)/8, $libc_statfs_trampoline<>(SB)\n\nTEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlink(SB)\nGLOBL\t·libc_symlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB)\n\nTEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlinkat(SB)\nGLOBL\t·libc_symlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB)\n\nTEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sync(SB)\nGLOBL\t·libc_sync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB)\n\nTEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_truncate(SB)\nGLOBL\t·libc_truncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB)\n\nTEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_umask(SB)\nGLOBL\t·libc_umask_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB)\n\nTEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlink(SB)\nGLOBL\t·libc_unlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB)\n\nTEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlinkat(SB)\nGLOBL\t·libc_unlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB)\n\nTEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unmount(SB)\nGLOBL\t·libc_unmount_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB)\n\nTEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_write(SB)\nGLOBL\t·libc_write_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB)\n\nTEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mmap(SB)\nGLOBL\t·libc_mmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB)\n\nTEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munmap(SB)\nGLOBL\t·libc_munmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB)\n\nTEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getfsstat(SB)\nGLOBL\t·libc_getfsstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getfsstat_trampoline_addr(SB)/8, $libc_getfsstat_trampoline<>(SB)\n\nTEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimensat(SB)\nGLOBL\t·libc_utimensat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB)\n\nTEXT libc_pledge_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pledge(SB)\nGLOBL\t·libc_pledge_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pledge_trampoline_addr(SB)/8, $libc_pledge_trampoline<>(SB)\n\nTEXT libc_unveil_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unveil(SB)\nGLOBL\t·libc_unveil_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unveil_trampoline_addr(SB)/8, $libc_unveil_trampoline<>(SB)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go",
    "content": "// go run mksyscall.go -openbsd -libc -tags openbsd,mips64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_mips64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build openbsd && mips64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgroups getgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgroups setgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_wait4_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_wait4 wait4 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_accept_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_accept accept \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_bind_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_bind bind \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_connect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_connect connect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socket_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socket socket \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockopt getsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsockopt setsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpeername_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpeername getpeername \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockname_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockname getsockname \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shutdown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shutdown shutdown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socketpair_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socketpair socketpair \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvfrom_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvfrom recvfrom \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendto_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendto sendto \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvmsg recvmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendmsg sendmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kevent_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kevent kevent \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimes utimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_futimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_futimes futimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_poll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_poll poll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_madvise_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_madvise madvise \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlock mlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlockall mlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mprotect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mprotect mprotect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_msync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_msync msync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlock munlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlockall munlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_pipe2_trampoline_addr, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pipe2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pipe2 pipe2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getdents_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getdents_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getdents getdents \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getcwd_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getcwd getcwd \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) {\n\tsyscall_rawSyscall(libc_getresuid_trampoline_addr, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid)))\n\treturn\n}\n\nvar libc_getresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresuid getresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) {\n\tsyscall_rawSyscall(libc_getresgid_trampoline_addr, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid)))\n\treturn\n}\n\nvar libc_getresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresgid getresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ioctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ioctl ioctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sysctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sysctl sysctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fcntl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fcntl fcntl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_ppoll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ppoll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ppoll ppoll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_access_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_access access \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_adjtime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_adjtime adjtime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chdir chdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chflags chflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chmod chmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chown chown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chroot_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chroot chroot \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_clock_gettime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_clock_gettime clock_gettime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_close_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_close close \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup dup \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup2 dup2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(from int, to int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup3_trampoline_addr, uintptr(from), uintptr(to), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup3_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup3 dup3 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tsyscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0)\n\treturn\n}\n\nvar libc_exit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_exit exit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_faccessat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_faccessat faccessat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchdir fchdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchflags fchflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmod fchmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmodat fchmodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchown fchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchownat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchownat fchownat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_flock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_flock flock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fpathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fpathconf fpathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstat fstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fstatat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatat fstatat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstatfs_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatfs fstatfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fsync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fsync fsync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ftruncate_trampoline_addr, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ftruncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ftruncate ftruncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\nvar libc_getegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getegid getegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_geteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_geteuid geteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\nvar libc_getgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgid getgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgid getpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\nvar libc_getpgrp_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgrp getpgrp \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\nvar libc_getpid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpid getpid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\nvar libc_getppid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getppid getppid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpriority getpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrlimit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrlimit getrlimit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrtable() (rtable int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getrtable_trampoline_addr, 0, 0, 0)\n\trtable = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrtable getrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrusage_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrusage getrusage \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsid getsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_gettimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_gettimeofday gettimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_getuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getuid getuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := syscall_syscall(libc_issetugid_trampoline_addr, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\nvar libc_issetugid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_issetugid issetugid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kill_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kill kill \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kqueue_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kqueue kqueue \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lchown lchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_link_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_link link \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_linkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_linkat linkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_listen_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_listen listen \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lstat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lstat lstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdir mkdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdirat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdirat mkdirat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifo_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifo mkfifo \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifoat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifoat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifoat mkfifoat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknod mknod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mknodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknodat mknodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(fsType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(dir)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mount mount \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_nanosleep_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_nanosleep nanosleep \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_open_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_open_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_open open \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_openat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_openat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_openat openat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_pathconf_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pathconf pathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pread_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pread_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pread pread \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pwrite_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pwrite_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pwrite pwrite \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_read_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_read read \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_readlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlink readlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_readlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlinkat readlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rename_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rename_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rename rename \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_renameat_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_renameat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_renameat renameat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_revoke_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_revoke_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_revoke revoke \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rmdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rmdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rmdir rmdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := syscall_syscall(libc_lseek_trampoline_addr, uintptr(fd), uintptr(offset), uintptr(whence))\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lseek_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lseek lseek \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_select_trampoline_addr, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_select_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_select select \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setegid setegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_seteuid_trampoline_addr, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_seteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_seteuid seteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgid_trampoline_addr, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgid setgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_setlogin_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setlogin_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setlogin setlogin \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setpgid_trampoline_addr, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpgid setpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_setpriority_trampoline_addr, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpriority setpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setregid_trampoline_addr, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setregid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setregid setregid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setreuid_trampoline_addr, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setreuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setreuid setreuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setresgid_trampoline_addr, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setresgid setresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setresuid_trampoline_addr, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setresuid setresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setrtable(rtable int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setrtable_trampoline_addr, uintptr(rtable), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setrtable setrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsid setsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_settimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_settimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_settimeofday settimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setuid_trampoline_addr, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setuid setuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_stat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_stat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_stat stat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_statfs_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_statfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_statfs statfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlink symlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlinkat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlinkat symlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := syscall_syscall(libc_sync_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sync sync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_truncate_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_truncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_truncate truncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := syscall_syscall(libc_umask_trampoline_addr, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\nvar libc_umask_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_umask umask \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlink unlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlinkat unlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unmount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unmount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unmount unmount \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_write_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_write write \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_mmap_trampoline_addr, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mmap mmap \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_munmap_trampoline_addr, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munmap munmap \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getfsstat_trampoline_addr, uintptr(unsafe.Pointer(stat)), uintptr(bufsize), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getfsstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getfsstat getfsstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_utimensat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimensat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimensat utimensat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pledge(promises *byte, execpromises *byte) (err error) {\n\t_, _, e1 := syscall_syscall(libc_pledge_trampoline_addr, uintptr(unsafe.Pointer(promises)), uintptr(unsafe.Pointer(execpromises)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pledge_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pledge pledge \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc unveil(path *byte, flags *byte) (err error) {\n\t_, _, e1 := syscall_syscall(libc_unveil_trampoline_addr, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(flags)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unveil_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unveil unveil \"libc.so\"\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.s",
    "content": "// go run mkasm.go openbsd mips64\n// Code generated by the command above; DO NOT EDIT.\n\n#include \"textflag.h\"\n\nTEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgroups(SB)\nGLOBL\t·libc_getgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB)\n\nTEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgroups(SB)\nGLOBL\t·libc_setgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB)\n\nTEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_wait4(SB)\nGLOBL\t·libc_wait4_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB)\n\nTEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_accept(SB)\nGLOBL\t·libc_accept_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB)\n\nTEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_bind(SB)\nGLOBL\t·libc_bind_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB)\n\nTEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_connect(SB)\nGLOBL\t·libc_connect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB)\n\nTEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socket(SB)\nGLOBL\t·libc_socket_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB)\n\nTEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockopt(SB)\nGLOBL\t·libc_getsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB)\n\nTEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsockopt(SB)\nGLOBL\t·libc_setsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB)\n\nTEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpeername(SB)\nGLOBL\t·libc_getpeername_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB)\n\nTEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockname(SB)\nGLOBL\t·libc_getsockname_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB)\n\nTEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shutdown(SB)\nGLOBL\t·libc_shutdown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB)\n\nTEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socketpair(SB)\nGLOBL\t·libc_socketpair_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB)\n\nTEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvfrom(SB)\nGLOBL\t·libc_recvfrom_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB)\n\nTEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendto(SB)\nGLOBL\t·libc_sendto_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB)\n\nTEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvmsg(SB)\nGLOBL\t·libc_recvmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB)\n\nTEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendmsg(SB)\nGLOBL\t·libc_sendmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB)\n\nTEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kevent(SB)\nGLOBL\t·libc_kevent_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB)\n\nTEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimes(SB)\nGLOBL\t·libc_utimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB)\n\nTEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_futimes(SB)\nGLOBL\t·libc_futimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB)\n\nTEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_poll(SB)\nGLOBL\t·libc_poll_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB)\n\nTEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_madvise(SB)\nGLOBL\t·libc_madvise_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB)\n\nTEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlock(SB)\nGLOBL\t·libc_mlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB)\n\nTEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlockall(SB)\nGLOBL\t·libc_mlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB)\n\nTEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mprotect(SB)\nGLOBL\t·libc_mprotect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB)\n\nTEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_msync(SB)\nGLOBL\t·libc_msync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB)\n\nTEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlock(SB)\nGLOBL\t·libc_munlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB)\n\nTEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlockall(SB)\nGLOBL\t·libc_munlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB)\n\nTEXT libc_pipe2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pipe2(SB)\nGLOBL\t·libc_pipe2_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pipe2_trampoline_addr(SB)/8, $libc_pipe2_trampoline<>(SB)\n\nTEXT libc_getdents_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getdents(SB)\nGLOBL\t·libc_getdents_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getdents_trampoline_addr(SB)/8, $libc_getdents_trampoline<>(SB)\n\nTEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getcwd(SB)\nGLOBL\t·libc_getcwd_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB)\n\nTEXT libc_getresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getresuid(SB)\nGLOBL\t·libc_getresuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getresuid_trampoline_addr(SB)/8, $libc_getresuid_trampoline<>(SB)\n\nTEXT libc_getresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getresgid(SB)\nGLOBL\t·libc_getresgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getresgid_trampoline_addr(SB)/8, $libc_getresgid_trampoline<>(SB)\n\nTEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ioctl(SB)\nGLOBL\t·libc_ioctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB)\n\nTEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sysctl(SB)\nGLOBL\t·libc_sysctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB)\n\nTEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fcntl(SB)\nGLOBL\t·libc_fcntl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB)\n\nTEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ppoll(SB)\nGLOBL\t·libc_ppoll_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ppoll_trampoline_addr(SB)/8, $libc_ppoll_trampoline<>(SB)\n\nTEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_access(SB)\nGLOBL\t·libc_access_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB)\n\nTEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_adjtime(SB)\nGLOBL\t·libc_adjtime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB)\n\nTEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chdir(SB)\nGLOBL\t·libc_chdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB)\n\nTEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chflags(SB)\nGLOBL\t·libc_chflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB)\n\nTEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chmod(SB)\nGLOBL\t·libc_chmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB)\n\nTEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chown(SB)\nGLOBL\t·libc_chown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB)\n\nTEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chroot(SB)\nGLOBL\t·libc_chroot_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB)\n\nTEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_clock_gettime(SB)\nGLOBL\t·libc_clock_gettime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB)\n\nTEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_close(SB)\nGLOBL\t·libc_close_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB)\n\nTEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup(SB)\nGLOBL\t·libc_dup_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB)\n\nTEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup2(SB)\nGLOBL\t·libc_dup2_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB)\n\nTEXT libc_dup3_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup3(SB)\nGLOBL\t·libc_dup3_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup3_trampoline_addr(SB)/8, $libc_dup3_trampoline<>(SB)\n\nTEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_exit(SB)\nGLOBL\t·libc_exit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB)\n\nTEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_faccessat(SB)\nGLOBL\t·libc_faccessat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB)\n\nTEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchdir(SB)\nGLOBL\t·libc_fchdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB)\n\nTEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchflags(SB)\nGLOBL\t·libc_fchflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB)\n\nTEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmod(SB)\nGLOBL\t·libc_fchmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB)\n\nTEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmodat(SB)\nGLOBL\t·libc_fchmodat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB)\n\nTEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchown(SB)\nGLOBL\t·libc_fchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB)\n\nTEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchownat(SB)\nGLOBL\t·libc_fchownat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB)\n\nTEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_flock(SB)\nGLOBL\t·libc_flock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB)\n\nTEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fpathconf(SB)\nGLOBL\t·libc_fpathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB)\n\nTEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstat(SB)\nGLOBL\t·libc_fstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstat_trampoline_addr(SB)/8, $libc_fstat_trampoline<>(SB)\n\nTEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatat(SB)\nGLOBL\t·libc_fstatat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatat_trampoline_addr(SB)/8, $libc_fstatat_trampoline<>(SB)\n\nTEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatfs(SB)\nGLOBL\t·libc_fstatfs_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatfs_trampoline_addr(SB)/8, $libc_fstatfs_trampoline<>(SB)\n\nTEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fsync(SB)\nGLOBL\t·libc_fsync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB)\n\nTEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ftruncate(SB)\nGLOBL\t·libc_ftruncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB)\n\nTEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getegid(SB)\nGLOBL\t·libc_getegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB)\n\nTEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_geteuid(SB)\nGLOBL\t·libc_geteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB)\n\nTEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgid(SB)\nGLOBL\t·libc_getgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB)\n\nTEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgid(SB)\nGLOBL\t·libc_getpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB)\n\nTEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgrp(SB)\nGLOBL\t·libc_getpgrp_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB)\n\nTEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpid(SB)\nGLOBL\t·libc_getpid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB)\n\nTEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getppid(SB)\nGLOBL\t·libc_getppid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB)\n\nTEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpriority(SB)\nGLOBL\t·libc_getpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB)\n\nTEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrlimit(SB)\nGLOBL\t·libc_getrlimit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB)\n\nTEXT libc_getrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrtable(SB)\nGLOBL\t·libc_getrtable_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrtable_trampoline_addr(SB)/8, $libc_getrtable_trampoline<>(SB)\n\nTEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrusage(SB)\nGLOBL\t·libc_getrusage_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB)\n\nTEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsid(SB)\nGLOBL\t·libc_getsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB)\n\nTEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_gettimeofday(SB)\nGLOBL\t·libc_gettimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB)\n\nTEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getuid(SB)\nGLOBL\t·libc_getuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB)\n\nTEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_issetugid(SB)\nGLOBL\t·libc_issetugid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB)\n\nTEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kill(SB)\nGLOBL\t·libc_kill_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB)\n\nTEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kqueue(SB)\nGLOBL\t·libc_kqueue_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB)\n\nTEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lchown(SB)\nGLOBL\t·libc_lchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB)\n\nTEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_link(SB)\nGLOBL\t·libc_link_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB)\n\nTEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_linkat(SB)\nGLOBL\t·libc_linkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB)\n\nTEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_listen(SB)\nGLOBL\t·libc_listen_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB)\n\nTEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lstat(SB)\nGLOBL\t·libc_lstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lstat_trampoline_addr(SB)/8, $libc_lstat_trampoline<>(SB)\n\nTEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdir(SB)\nGLOBL\t·libc_mkdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB)\n\nTEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdirat(SB)\nGLOBL\t·libc_mkdirat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB)\n\nTEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifo(SB)\nGLOBL\t·libc_mkfifo_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB)\n\nTEXT libc_mkfifoat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifoat(SB)\nGLOBL\t·libc_mkfifoat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkfifoat_trampoline_addr(SB)/8, $libc_mkfifoat_trampoline<>(SB)\n\nTEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknod(SB)\nGLOBL\t·libc_mknod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB)\n\nTEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknodat(SB)\nGLOBL\t·libc_mknodat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mknodat_trampoline_addr(SB)/8, $libc_mknodat_trampoline<>(SB)\n\nTEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mount(SB)\nGLOBL\t·libc_mount_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB)\n\nTEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_nanosleep(SB)\nGLOBL\t·libc_nanosleep_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_nanosleep_trampoline_addr(SB)/8, $libc_nanosleep_trampoline<>(SB)\n\nTEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_open(SB)\nGLOBL\t·libc_open_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB)\n\nTEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_openat(SB)\nGLOBL\t·libc_openat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB)\n\nTEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pathconf(SB)\nGLOBL\t·libc_pathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB)\n\nTEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pread(SB)\nGLOBL\t·libc_pread_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB)\n\nTEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pwrite(SB)\nGLOBL\t·libc_pwrite_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB)\n\nTEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_read(SB)\nGLOBL\t·libc_read_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB)\n\nTEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlink(SB)\nGLOBL\t·libc_readlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB)\n\nTEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlinkat(SB)\nGLOBL\t·libc_readlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB)\n\nTEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rename(SB)\nGLOBL\t·libc_rename_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB)\n\nTEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_renameat(SB)\nGLOBL\t·libc_renameat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB)\n\nTEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_revoke(SB)\nGLOBL\t·libc_revoke_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB)\n\nTEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rmdir(SB)\nGLOBL\t·libc_rmdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB)\n\nTEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lseek(SB)\nGLOBL\t·libc_lseek_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB)\n\nTEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_select(SB)\nGLOBL\t·libc_select_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB)\n\nTEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setegid(SB)\nGLOBL\t·libc_setegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB)\n\nTEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_seteuid(SB)\nGLOBL\t·libc_seteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB)\n\nTEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgid(SB)\nGLOBL\t·libc_setgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB)\n\nTEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setlogin(SB)\nGLOBL\t·libc_setlogin_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB)\n\nTEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpgid(SB)\nGLOBL\t·libc_setpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB)\n\nTEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpriority(SB)\nGLOBL\t·libc_setpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB)\n\nTEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setregid(SB)\nGLOBL\t·libc_setregid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB)\n\nTEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setreuid(SB)\nGLOBL\t·libc_setreuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB)\n\nTEXT libc_setresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setresgid(SB)\nGLOBL\t·libc_setresgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setresgid_trampoline_addr(SB)/8, $libc_setresgid_trampoline<>(SB)\n\nTEXT libc_setresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setresuid(SB)\nGLOBL\t·libc_setresuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setresuid_trampoline_addr(SB)/8, $libc_setresuid_trampoline<>(SB)\n\nTEXT libc_setrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setrtable(SB)\nGLOBL\t·libc_setrtable_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setrtable_trampoline_addr(SB)/8, $libc_setrtable_trampoline<>(SB)\n\nTEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsid(SB)\nGLOBL\t·libc_setsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB)\n\nTEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_settimeofday(SB)\nGLOBL\t·libc_settimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB)\n\nTEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setuid(SB)\nGLOBL\t·libc_setuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB)\n\nTEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_stat(SB)\nGLOBL\t·libc_stat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_stat_trampoline_addr(SB)/8, $libc_stat_trampoline<>(SB)\n\nTEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_statfs(SB)\nGLOBL\t·libc_statfs_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_statfs_trampoline_addr(SB)/8, $libc_statfs_trampoline<>(SB)\n\nTEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlink(SB)\nGLOBL\t·libc_symlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB)\n\nTEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlinkat(SB)\nGLOBL\t·libc_symlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB)\n\nTEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sync(SB)\nGLOBL\t·libc_sync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB)\n\nTEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_truncate(SB)\nGLOBL\t·libc_truncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB)\n\nTEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_umask(SB)\nGLOBL\t·libc_umask_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB)\n\nTEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlink(SB)\nGLOBL\t·libc_unlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB)\n\nTEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlinkat(SB)\nGLOBL\t·libc_unlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB)\n\nTEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unmount(SB)\nGLOBL\t·libc_unmount_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB)\n\nTEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_write(SB)\nGLOBL\t·libc_write_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB)\n\nTEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mmap(SB)\nGLOBL\t·libc_mmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB)\n\nTEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munmap(SB)\nGLOBL\t·libc_munmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB)\n\nTEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getfsstat(SB)\nGLOBL\t·libc_getfsstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getfsstat_trampoline_addr(SB)/8, $libc_getfsstat_trampoline<>(SB)\n\nTEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimensat(SB)\nGLOBL\t·libc_utimensat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB)\n\nTEXT libc_pledge_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pledge(SB)\nGLOBL\t·libc_pledge_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pledge_trampoline_addr(SB)/8, $libc_pledge_trampoline<>(SB)\n\nTEXT libc_unveil_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unveil(SB)\nGLOBL\t·libc_unveil_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unveil_trampoline_addr(SB)/8, $libc_unveil_trampoline<>(SB)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.go",
    "content": "// go run mksyscall.go -openbsd -libc -tags openbsd,ppc64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_ppc64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build openbsd && ppc64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgroups getgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgroups setgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_wait4_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_wait4 wait4 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_accept_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_accept accept \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_bind_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_bind bind \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_connect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_connect connect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socket_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socket socket \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockopt getsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsockopt setsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpeername_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpeername getpeername \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockname_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockname getsockname \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shutdown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shutdown shutdown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socketpair_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socketpair socketpair \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvfrom_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvfrom recvfrom \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendto_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendto sendto \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvmsg recvmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendmsg sendmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kevent_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kevent kevent \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimes utimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_futimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_futimes futimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_poll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_poll poll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_madvise_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_madvise madvise \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlock mlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlockall mlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mprotect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mprotect mprotect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_msync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_msync msync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlock munlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlockall munlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_pipe2_trampoline_addr, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pipe2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pipe2 pipe2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getdents_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getdents_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getdents getdents \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getcwd_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getcwd getcwd \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) {\n\tsyscall_rawSyscall(libc_getresuid_trampoline_addr, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid)))\n\treturn\n}\n\nvar libc_getresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresuid getresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) {\n\tsyscall_rawSyscall(libc_getresgid_trampoline_addr, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid)))\n\treturn\n}\n\nvar libc_getresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresgid getresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ioctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ioctl ioctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sysctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sysctl sysctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fcntl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fcntl fcntl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_ppoll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ppoll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ppoll ppoll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_access_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_access access \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_adjtime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_adjtime adjtime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chdir chdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chflags chflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chmod chmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chown chown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chroot_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chroot chroot \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_clock_gettime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_clock_gettime clock_gettime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_close_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_close close \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup dup \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup2 dup2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(from int, to int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup3_trampoline_addr, uintptr(from), uintptr(to), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup3_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup3 dup3 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tsyscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0)\n\treturn\n}\n\nvar libc_exit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_exit exit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_faccessat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_faccessat faccessat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchdir fchdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchflags fchflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmod fchmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmodat fchmodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchown fchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchownat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchownat fchownat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_flock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_flock flock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fpathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fpathconf fpathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstat fstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fstatat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatat fstatat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstatfs_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatfs fstatfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fsync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fsync fsync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ftruncate_trampoline_addr, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ftruncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ftruncate ftruncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\nvar libc_getegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getegid getegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_geteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_geteuid geteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\nvar libc_getgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgid getgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgid getpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\nvar libc_getpgrp_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgrp getpgrp \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\nvar libc_getpid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpid getpid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\nvar libc_getppid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getppid getppid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpriority getpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrlimit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrlimit getrlimit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrtable() (rtable int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getrtable_trampoline_addr, 0, 0, 0)\n\trtable = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrtable getrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrusage_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrusage getrusage \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsid getsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_gettimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_gettimeofday gettimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_getuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getuid getuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := syscall_syscall(libc_issetugid_trampoline_addr, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\nvar libc_issetugid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_issetugid issetugid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kill_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kill kill \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kqueue_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kqueue kqueue \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lchown lchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_link_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_link link \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_linkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_linkat linkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_listen_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_listen listen \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lstat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lstat lstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdir mkdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdirat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdirat mkdirat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifo_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifo mkfifo \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifoat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifoat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifoat mkfifoat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknod mknod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mknodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknodat mknodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(fsType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(dir)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mount mount \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_nanosleep_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_nanosleep nanosleep \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_open_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_open_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_open open \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_openat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_openat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_openat openat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_pathconf_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pathconf pathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pread_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pread_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pread pread \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pwrite_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pwrite_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pwrite pwrite \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_read_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_read read \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_readlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlink readlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_readlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlinkat readlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rename_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rename_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rename rename \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_renameat_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_renameat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_renameat renameat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_revoke_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_revoke_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_revoke revoke \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rmdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rmdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rmdir rmdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := syscall_syscall(libc_lseek_trampoline_addr, uintptr(fd), uintptr(offset), uintptr(whence))\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lseek_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lseek lseek \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_select_trampoline_addr, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_select_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_select select \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setegid setegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_seteuid_trampoline_addr, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_seteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_seteuid seteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgid_trampoline_addr, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgid setgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_setlogin_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setlogin_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setlogin setlogin \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setpgid_trampoline_addr, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpgid setpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_setpriority_trampoline_addr, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpriority setpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setregid_trampoline_addr, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setregid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setregid setregid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setreuid_trampoline_addr, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setreuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setreuid setreuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setresgid_trampoline_addr, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setresgid setresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setresuid_trampoline_addr, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setresuid setresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setrtable(rtable int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setrtable_trampoline_addr, uintptr(rtable), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setrtable setrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsid setsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_settimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_settimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_settimeofday settimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setuid_trampoline_addr, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setuid setuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_stat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_stat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_stat stat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_statfs_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_statfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_statfs statfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlink symlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlinkat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlinkat symlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := syscall_syscall(libc_sync_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sync sync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_truncate_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_truncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_truncate truncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := syscall_syscall(libc_umask_trampoline_addr, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\nvar libc_umask_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_umask umask \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlink unlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlinkat unlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unmount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unmount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unmount unmount \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_write_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_write write \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_mmap_trampoline_addr, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mmap mmap \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_munmap_trampoline_addr, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munmap munmap \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getfsstat_trampoline_addr, uintptr(unsafe.Pointer(stat)), uintptr(bufsize), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getfsstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getfsstat getfsstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_utimensat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimensat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimensat utimensat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pledge(promises *byte, execpromises *byte) (err error) {\n\t_, _, e1 := syscall_syscall(libc_pledge_trampoline_addr, uintptr(unsafe.Pointer(promises)), uintptr(unsafe.Pointer(execpromises)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pledge_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pledge pledge \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc unveil(path *byte, flags *byte) (err error) {\n\t_, _, e1 := syscall_syscall(libc_unveil_trampoline_addr, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(flags)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unveil_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unveil unveil \"libc.so\"\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.s",
    "content": "// go run mkasm.go openbsd ppc64\n// Code generated by the command above; DO NOT EDIT.\n\n#include \"textflag.h\"\n\nTEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getgroups(SB)\n\tRET\nGLOBL\t·libc_getgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB)\n\nTEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setgroups(SB)\n\tRET\nGLOBL\t·libc_setgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB)\n\nTEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_wait4(SB)\n\tRET\nGLOBL\t·libc_wait4_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB)\n\nTEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_accept(SB)\n\tRET\nGLOBL\t·libc_accept_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB)\n\nTEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_bind(SB)\n\tRET\nGLOBL\t·libc_bind_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB)\n\nTEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_connect(SB)\n\tRET\nGLOBL\t·libc_connect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB)\n\nTEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_socket(SB)\n\tRET\nGLOBL\t·libc_socket_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB)\n\nTEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getsockopt(SB)\n\tRET\nGLOBL\t·libc_getsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB)\n\nTEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setsockopt(SB)\n\tRET\nGLOBL\t·libc_setsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB)\n\nTEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getpeername(SB)\n\tRET\nGLOBL\t·libc_getpeername_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB)\n\nTEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getsockname(SB)\n\tRET\nGLOBL\t·libc_getsockname_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB)\n\nTEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_shutdown(SB)\n\tRET\nGLOBL\t·libc_shutdown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB)\n\nTEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_socketpair(SB)\n\tRET\nGLOBL\t·libc_socketpair_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB)\n\nTEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_recvfrom(SB)\n\tRET\nGLOBL\t·libc_recvfrom_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB)\n\nTEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_sendto(SB)\n\tRET\nGLOBL\t·libc_sendto_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB)\n\nTEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_recvmsg(SB)\n\tRET\nGLOBL\t·libc_recvmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB)\n\nTEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_sendmsg(SB)\n\tRET\nGLOBL\t·libc_sendmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB)\n\nTEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_kevent(SB)\n\tRET\nGLOBL\t·libc_kevent_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB)\n\nTEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_utimes(SB)\n\tRET\nGLOBL\t·libc_utimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB)\n\nTEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_futimes(SB)\n\tRET\nGLOBL\t·libc_futimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB)\n\nTEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_poll(SB)\n\tRET\nGLOBL\t·libc_poll_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB)\n\nTEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_madvise(SB)\n\tRET\nGLOBL\t·libc_madvise_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB)\n\nTEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_mlock(SB)\n\tRET\nGLOBL\t·libc_mlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB)\n\nTEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_mlockall(SB)\n\tRET\nGLOBL\t·libc_mlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB)\n\nTEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_mprotect(SB)\n\tRET\nGLOBL\t·libc_mprotect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB)\n\nTEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_msync(SB)\n\tRET\nGLOBL\t·libc_msync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB)\n\nTEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_munlock(SB)\n\tRET\nGLOBL\t·libc_munlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB)\n\nTEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_munlockall(SB)\n\tRET\nGLOBL\t·libc_munlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB)\n\nTEXT libc_pipe2_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_pipe2(SB)\n\tRET\nGLOBL\t·libc_pipe2_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pipe2_trampoline_addr(SB)/8, $libc_pipe2_trampoline<>(SB)\n\nTEXT libc_getdents_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getdents(SB)\n\tRET\nGLOBL\t·libc_getdents_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getdents_trampoline_addr(SB)/8, $libc_getdents_trampoline<>(SB)\n\nTEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getcwd(SB)\n\tRET\nGLOBL\t·libc_getcwd_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB)\n\nTEXT libc_getresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getresuid(SB)\n\tRET\nGLOBL\t·libc_getresuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getresuid_trampoline_addr(SB)/8, $libc_getresuid_trampoline<>(SB)\n\nTEXT libc_getresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getresgid(SB)\n\tRET\nGLOBL\t·libc_getresgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getresgid_trampoline_addr(SB)/8, $libc_getresgid_trampoline<>(SB)\n\nTEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_ioctl(SB)\n\tRET\nGLOBL\t·libc_ioctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB)\n\nTEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_sysctl(SB)\n\tRET\nGLOBL\t·libc_sysctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB)\n\nTEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_fcntl(SB)\n\tRET\nGLOBL\t·libc_fcntl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB)\n\nTEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_ppoll(SB)\n\tRET\nGLOBL\t·libc_ppoll_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ppoll_trampoline_addr(SB)/8, $libc_ppoll_trampoline<>(SB)\n\nTEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_access(SB)\n\tRET\nGLOBL\t·libc_access_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB)\n\nTEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_adjtime(SB)\n\tRET\nGLOBL\t·libc_adjtime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB)\n\nTEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_chdir(SB)\n\tRET\nGLOBL\t·libc_chdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB)\n\nTEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_chflags(SB)\n\tRET\nGLOBL\t·libc_chflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB)\n\nTEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_chmod(SB)\n\tRET\nGLOBL\t·libc_chmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB)\n\nTEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_chown(SB)\n\tRET\nGLOBL\t·libc_chown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB)\n\nTEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_chroot(SB)\n\tRET\nGLOBL\t·libc_chroot_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB)\n\nTEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_clock_gettime(SB)\n\tRET\nGLOBL\t·libc_clock_gettime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB)\n\nTEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_close(SB)\n\tRET\nGLOBL\t·libc_close_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB)\n\nTEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_dup(SB)\n\tRET\nGLOBL\t·libc_dup_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB)\n\nTEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_dup2(SB)\n\tRET\nGLOBL\t·libc_dup2_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB)\n\nTEXT libc_dup3_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_dup3(SB)\n\tRET\nGLOBL\t·libc_dup3_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup3_trampoline_addr(SB)/8, $libc_dup3_trampoline<>(SB)\n\nTEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_exit(SB)\n\tRET\nGLOBL\t·libc_exit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB)\n\nTEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_faccessat(SB)\n\tRET\nGLOBL\t·libc_faccessat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB)\n\nTEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_fchdir(SB)\n\tRET\nGLOBL\t·libc_fchdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB)\n\nTEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_fchflags(SB)\n\tRET\nGLOBL\t·libc_fchflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB)\n\nTEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_fchmod(SB)\n\tRET\nGLOBL\t·libc_fchmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB)\n\nTEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_fchmodat(SB)\n\tRET\nGLOBL\t·libc_fchmodat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB)\n\nTEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_fchown(SB)\n\tRET\nGLOBL\t·libc_fchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB)\n\nTEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_fchownat(SB)\n\tRET\nGLOBL\t·libc_fchownat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB)\n\nTEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_flock(SB)\n\tRET\nGLOBL\t·libc_flock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB)\n\nTEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_fpathconf(SB)\n\tRET\nGLOBL\t·libc_fpathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB)\n\nTEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_fstat(SB)\n\tRET\nGLOBL\t·libc_fstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstat_trampoline_addr(SB)/8, $libc_fstat_trampoline<>(SB)\n\nTEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_fstatat(SB)\n\tRET\nGLOBL\t·libc_fstatat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatat_trampoline_addr(SB)/8, $libc_fstatat_trampoline<>(SB)\n\nTEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_fstatfs(SB)\n\tRET\nGLOBL\t·libc_fstatfs_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatfs_trampoline_addr(SB)/8, $libc_fstatfs_trampoline<>(SB)\n\nTEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_fsync(SB)\n\tRET\nGLOBL\t·libc_fsync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB)\n\nTEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_ftruncate(SB)\n\tRET\nGLOBL\t·libc_ftruncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB)\n\nTEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getegid(SB)\n\tRET\nGLOBL\t·libc_getegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB)\n\nTEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_geteuid(SB)\n\tRET\nGLOBL\t·libc_geteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB)\n\nTEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getgid(SB)\n\tRET\nGLOBL\t·libc_getgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB)\n\nTEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getpgid(SB)\n\tRET\nGLOBL\t·libc_getpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB)\n\nTEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getpgrp(SB)\n\tRET\nGLOBL\t·libc_getpgrp_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB)\n\nTEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getpid(SB)\n\tRET\nGLOBL\t·libc_getpid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB)\n\nTEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getppid(SB)\n\tRET\nGLOBL\t·libc_getppid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB)\n\nTEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getpriority(SB)\n\tRET\nGLOBL\t·libc_getpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB)\n\nTEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getrlimit(SB)\n\tRET\nGLOBL\t·libc_getrlimit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB)\n\nTEXT libc_getrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getrtable(SB)\n\tRET\nGLOBL\t·libc_getrtable_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrtable_trampoline_addr(SB)/8, $libc_getrtable_trampoline<>(SB)\n\nTEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getrusage(SB)\n\tRET\nGLOBL\t·libc_getrusage_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB)\n\nTEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getsid(SB)\n\tRET\nGLOBL\t·libc_getsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB)\n\nTEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_gettimeofday(SB)\n\tRET\nGLOBL\t·libc_gettimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB)\n\nTEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getuid(SB)\n\tRET\nGLOBL\t·libc_getuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB)\n\nTEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_issetugid(SB)\n\tRET\nGLOBL\t·libc_issetugid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB)\n\nTEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_kill(SB)\n\tRET\nGLOBL\t·libc_kill_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB)\n\nTEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_kqueue(SB)\n\tRET\nGLOBL\t·libc_kqueue_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB)\n\nTEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_lchown(SB)\n\tRET\nGLOBL\t·libc_lchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB)\n\nTEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_link(SB)\n\tRET\nGLOBL\t·libc_link_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB)\n\nTEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_linkat(SB)\n\tRET\nGLOBL\t·libc_linkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB)\n\nTEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_listen(SB)\n\tRET\nGLOBL\t·libc_listen_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB)\n\nTEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_lstat(SB)\n\tRET\nGLOBL\t·libc_lstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lstat_trampoline_addr(SB)/8, $libc_lstat_trampoline<>(SB)\n\nTEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_mkdir(SB)\n\tRET\nGLOBL\t·libc_mkdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB)\n\nTEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_mkdirat(SB)\n\tRET\nGLOBL\t·libc_mkdirat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB)\n\nTEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_mkfifo(SB)\n\tRET\nGLOBL\t·libc_mkfifo_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB)\n\nTEXT libc_mkfifoat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_mkfifoat(SB)\n\tRET\nGLOBL\t·libc_mkfifoat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkfifoat_trampoline_addr(SB)/8, $libc_mkfifoat_trampoline<>(SB)\n\nTEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_mknod(SB)\n\tRET\nGLOBL\t·libc_mknod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB)\n\nTEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_mknodat(SB)\n\tRET\nGLOBL\t·libc_mknodat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mknodat_trampoline_addr(SB)/8, $libc_mknodat_trampoline<>(SB)\n\nTEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_mount(SB)\n\tRET\nGLOBL\t·libc_mount_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB)\n\nTEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_nanosleep(SB)\n\tRET\nGLOBL\t·libc_nanosleep_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_nanosleep_trampoline_addr(SB)/8, $libc_nanosleep_trampoline<>(SB)\n\nTEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_open(SB)\n\tRET\nGLOBL\t·libc_open_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB)\n\nTEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_openat(SB)\n\tRET\nGLOBL\t·libc_openat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB)\n\nTEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_pathconf(SB)\n\tRET\nGLOBL\t·libc_pathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB)\n\nTEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_pread(SB)\n\tRET\nGLOBL\t·libc_pread_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB)\n\nTEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_pwrite(SB)\n\tRET\nGLOBL\t·libc_pwrite_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB)\n\nTEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_read(SB)\n\tRET\nGLOBL\t·libc_read_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB)\n\nTEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_readlink(SB)\n\tRET\nGLOBL\t·libc_readlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB)\n\nTEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_readlinkat(SB)\n\tRET\nGLOBL\t·libc_readlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB)\n\nTEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_rename(SB)\n\tRET\nGLOBL\t·libc_rename_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB)\n\nTEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_renameat(SB)\n\tRET\nGLOBL\t·libc_renameat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB)\n\nTEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_revoke(SB)\n\tRET\nGLOBL\t·libc_revoke_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB)\n\nTEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_rmdir(SB)\n\tRET\nGLOBL\t·libc_rmdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB)\n\nTEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_lseek(SB)\n\tRET\nGLOBL\t·libc_lseek_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB)\n\nTEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_select(SB)\n\tRET\nGLOBL\t·libc_select_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB)\n\nTEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setegid(SB)\n\tRET\nGLOBL\t·libc_setegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB)\n\nTEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_seteuid(SB)\n\tRET\nGLOBL\t·libc_seteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB)\n\nTEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setgid(SB)\n\tRET\nGLOBL\t·libc_setgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB)\n\nTEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setlogin(SB)\n\tRET\nGLOBL\t·libc_setlogin_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB)\n\nTEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setpgid(SB)\n\tRET\nGLOBL\t·libc_setpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB)\n\nTEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setpriority(SB)\n\tRET\nGLOBL\t·libc_setpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB)\n\nTEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setregid(SB)\n\tRET\nGLOBL\t·libc_setregid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB)\n\nTEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setreuid(SB)\n\tRET\nGLOBL\t·libc_setreuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB)\n\nTEXT libc_setresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setresgid(SB)\n\tRET\nGLOBL\t·libc_setresgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setresgid_trampoline_addr(SB)/8, $libc_setresgid_trampoline<>(SB)\n\nTEXT libc_setresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setresuid(SB)\n\tRET\nGLOBL\t·libc_setresuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setresuid_trampoline_addr(SB)/8, $libc_setresuid_trampoline<>(SB)\n\nTEXT libc_setrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setrtable(SB)\n\tRET\nGLOBL\t·libc_setrtable_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setrtable_trampoline_addr(SB)/8, $libc_setrtable_trampoline<>(SB)\n\nTEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setsid(SB)\n\tRET\nGLOBL\t·libc_setsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB)\n\nTEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_settimeofday(SB)\n\tRET\nGLOBL\t·libc_settimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB)\n\nTEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setuid(SB)\n\tRET\nGLOBL\t·libc_setuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB)\n\nTEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_stat(SB)\n\tRET\nGLOBL\t·libc_stat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_stat_trampoline_addr(SB)/8, $libc_stat_trampoline<>(SB)\n\nTEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_statfs(SB)\n\tRET\nGLOBL\t·libc_statfs_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_statfs_trampoline_addr(SB)/8, $libc_statfs_trampoline<>(SB)\n\nTEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_symlink(SB)\n\tRET\nGLOBL\t·libc_symlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB)\n\nTEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_symlinkat(SB)\n\tRET\nGLOBL\t·libc_symlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB)\n\nTEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_sync(SB)\n\tRET\nGLOBL\t·libc_sync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB)\n\nTEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_truncate(SB)\n\tRET\nGLOBL\t·libc_truncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB)\n\nTEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_umask(SB)\n\tRET\nGLOBL\t·libc_umask_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB)\n\nTEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_unlink(SB)\n\tRET\nGLOBL\t·libc_unlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB)\n\nTEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_unlinkat(SB)\n\tRET\nGLOBL\t·libc_unlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB)\n\nTEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_unmount(SB)\n\tRET\nGLOBL\t·libc_unmount_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB)\n\nTEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_write(SB)\n\tRET\nGLOBL\t·libc_write_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB)\n\nTEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_mmap(SB)\n\tRET\nGLOBL\t·libc_mmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB)\n\nTEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_munmap(SB)\n\tRET\nGLOBL\t·libc_munmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB)\n\nTEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getfsstat(SB)\n\tRET\nGLOBL\t·libc_getfsstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getfsstat_trampoline_addr(SB)/8, $libc_getfsstat_trampoline<>(SB)\n\nTEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_utimensat(SB)\n\tRET\nGLOBL\t·libc_utimensat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB)\n\nTEXT libc_pledge_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_pledge(SB)\n\tRET\nGLOBL\t·libc_pledge_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pledge_trampoline_addr(SB)/8, $libc_pledge_trampoline<>(SB)\n\nTEXT libc_unveil_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_unveil(SB)\n\tRET\nGLOBL\t·libc_unveil_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unveil_trampoline_addr(SB)/8, $libc_unveil_trampoline<>(SB)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.go",
    "content": "// go run mksyscall.go -openbsd -libc -tags openbsd,riscv64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_riscv64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build openbsd && riscv64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgroups getgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgroups setgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_wait4_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_wait4 wait4 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_accept_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_accept accept \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_bind_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_bind bind \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_connect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_connect connect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socket_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socket socket \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockopt getsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsockopt setsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpeername_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpeername getpeername \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockname_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockname getsockname \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shutdown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shutdown shutdown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socketpair_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socketpair socketpair \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvfrom_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvfrom recvfrom \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendto_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendto sendto \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvmsg recvmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendmsg sendmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kevent_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kevent kevent \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimes utimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_futimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_futimes futimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_poll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_poll poll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_madvise_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_madvise madvise \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlock mlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlockall mlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mprotect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mprotect mprotect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_msync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_msync msync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlock munlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlockall munlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_pipe2_trampoline_addr, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pipe2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pipe2 pipe2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getdents_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getdents_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getdents getdents \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getcwd_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getcwd getcwd \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) {\n\tsyscall_rawSyscall(libc_getresuid_trampoline_addr, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid)))\n\treturn\n}\n\nvar libc_getresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresuid getresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) {\n\tsyscall_rawSyscall(libc_getresgid_trampoline_addr, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid)))\n\treturn\n}\n\nvar libc_getresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresgid getresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ioctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ioctl ioctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sysctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sysctl sysctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fcntl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fcntl fcntl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_ppoll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ppoll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ppoll ppoll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_access_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_access access \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_adjtime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_adjtime adjtime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chdir chdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chflags chflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chmod chmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chown chown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chroot_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chroot chroot \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_clock_gettime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_clock_gettime clock_gettime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_close_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_close close \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup dup \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup2 dup2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(from int, to int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup3_trampoline_addr, uintptr(from), uintptr(to), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup3_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup3 dup3 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tsyscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0)\n\treturn\n}\n\nvar libc_exit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_exit exit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_faccessat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_faccessat faccessat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchdir fchdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchflags fchflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmod fchmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmodat fchmodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchown fchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchownat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchownat fchownat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_flock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_flock flock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fpathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fpathconf fpathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstat fstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fstatat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatat fstatat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstatfs_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatfs fstatfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fsync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fsync fsync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ftruncate_trampoline_addr, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ftruncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ftruncate ftruncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\nvar libc_getegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getegid getegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_geteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_geteuid geteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\nvar libc_getgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgid getgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgid getpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\nvar libc_getpgrp_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgrp getpgrp \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\nvar libc_getpid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpid getpid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\nvar libc_getppid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getppid getppid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpriority getpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrlimit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrlimit getrlimit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrtable() (rtable int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getrtable_trampoline_addr, 0, 0, 0)\n\trtable = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrtable getrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrusage_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrusage getrusage \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsid getsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_gettimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_gettimeofday gettimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_getuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getuid getuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := syscall_syscall(libc_issetugid_trampoline_addr, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\nvar libc_issetugid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_issetugid issetugid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kill_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kill kill \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kqueue_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kqueue kqueue \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lchown lchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_link_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_link link \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_linkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_linkat linkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_listen_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_listen listen \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lstat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lstat lstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdir mkdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdirat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdirat mkdirat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifo_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifo mkfifo \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifoat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifoat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifoat mkfifoat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknod mknod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mknodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknodat mknodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(fsType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(dir)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mount mount \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_nanosleep_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_nanosleep nanosleep \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_open_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_open_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_open open \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_openat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_openat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_openat openat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_pathconf_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pathconf pathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pread_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pread_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pread pread \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pwrite_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pwrite_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pwrite pwrite \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_read_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_read read \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_readlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlink readlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_readlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlinkat readlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rename_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rename_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rename rename \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_renameat_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_renameat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_renameat renameat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_revoke_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_revoke_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_revoke revoke \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rmdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rmdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rmdir rmdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := syscall_syscall(libc_lseek_trampoline_addr, uintptr(fd), uintptr(offset), uintptr(whence))\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lseek_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lseek lseek \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_select_trampoline_addr, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_select_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_select select \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setegid setegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_seteuid_trampoline_addr, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_seteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_seteuid seteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgid_trampoline_addr, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgid setgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_setlogin_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setlogin_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setlogin setlogin \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setpgid_trampoline_addr, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpgid setpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_setpriority_trampoline_addr, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpriority setpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setregid_trampoline_addr, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setregid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setregid setregid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setreuid_trampoline_addr, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setreuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setreuid setreuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setresgid_trampoline_addr, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setresgid setresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setresuid_trampoline_addr, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setresuid setresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setrtable(rtable int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setrtable_trampoline_addr, uintptr(rtable), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setrtable setrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsid setsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_settimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_settimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_settimeofday settimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setuid_trampoline_addr, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setuid setuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_stat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_stat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_stat stat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_statfs_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_statfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_statfs statfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlink symlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlinkat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlinkat symlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := syscall_syscall(libc_sync_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sync sync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_truncate_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_truncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_truncate truncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := syscall_syscall(libc_umask_trampoline_addr, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\nvar libc_umask_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_umask umask \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlink unlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlinkat unlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unmount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unmount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unmount unmount \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_write_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_write write \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_mmap_trampoline_addr, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mmap mmap \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_munmap_trampoline_addr, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munmap munmap \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getfsstat_trampoline_addr, uintptr(unsafe.Pointer(stat)), uintptr(bufsize), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getfsstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getfsstat getfsstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_utimensat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimensat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimensat utimensat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pledge(promises *byte, execpromises *byte) (err error) {\n\t_, _, e1 := syscall_syscall(libc_pledge_trampoline_addr, uintptr(unsafe.Pointer(promises)), uintptr(unsafe.Pointer(execpromises)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pledge_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pledge pledge \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc unveil(path *byte, flags *byte) (err error) {\n\t_, _, e1 := syscall_syscall(libc_unveil_trampoline_addr, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(flags)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unveil_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unveil unveil \"libc.so\"\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.s",
    "content": "// go run mkasm.go openbsd riscv64\n// Code generated by the command above; DO NOT EDIT.\n\n#include \"textflag.h\"\n\nTEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgroups(SB)\nGLOBL\t·libc_getgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB)\n\nTEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgroups(SB)\nGLOBL\t·libc_setgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB)\n\nTEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_wait4(SB)\nGLOBL\t·libc_wait4_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB)\n\nTEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_accept(SB)\nGLOBL\t·libc_accept_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB)\n\nTEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_bind(SB)\nGLOBL\t·libc_bind_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB)\n\nTEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_connect(SB)\nGLOBL\t·libc_connect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB)\n\nTEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socket(SB)\nGLOBL\t·libc_socket_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB)\n\nTEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockopt(SB)\nGLOBL\t·libc_getsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB)\n\nTEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsockopt(SB)\nGLOBL\t·libc_setsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB)\n\nTEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpeername(SB)\nGLOBL\t·libc_getpeername_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB)\n\nTEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockname(SB)\nGLOBL\t·libc_getsockname_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB)\n\nTEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shutdown(SB)\nGLOBL\t·libc_shutdown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB)\n\nTEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socketpair(SB)\nGLOBL\t·libc_socketpair_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB)\n\nTEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvfrom(SB)\nGLOBL\t·libc_recvfrom_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB)\n\nTEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendto(SB)\nGLOBL\t·libc_sendto_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB)\n\nTEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvmsg(SB)\nGLOBL\t·libc_recvmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB)\n\nTEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendmsg(SB)\nGLOBL\t·libc_sendmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB)\n\nTEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kevent(SB)\nGLOBL\t·libc_kevent_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB)\n\nTEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimes(SB)\nGLOBL\t·libc_utimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB)\n\nTEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_futimes(SB)\nGLOBL\t·libc_futimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB)\n\nTEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_poll(SB)\nGLOBL\t·libc_poll_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB)\n\nTEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_madvise(SB)\nGLOBL\t·libc_madvise_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB)\n\nTEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlock(SB)\nGLOBL\t·libc_mlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB)\n\nTEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlockall(SB)\nGLOBL\t·libc_mlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB)\n\nTEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mprotect(SB)\nGLOBL\t·libc_mprotect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB)\n\nTEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_msync(SB)\nGLOBL\t·libc_msync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB)\n\nTEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlock(SB)\nGLOBL\t·libc_munlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB)\n\nTEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlockall(SB)\nGLOBL\t·libc_munlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB)\n\nTEXT libc_pipe2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pipe2(SB)\nGLOBL\t·libc_pipe2_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pipe2_trampoline_addr(SB)/8, $libc_pipe2_trampoline<>(SB)\n\nTEXT libc_getdents_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getdents(SB)\nGLOBL\t·libc_getdents_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getdents_trampoline_addr(SB)/8, $libc_getdents_trampoline<>(SB)\n\nTEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getcwd(SB)\nGLOBL\t·libc_getcwd_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB)\n\nTEXT libc_getresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getresuid(SB)\nGLOBL\t·libc_getresuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getresuid_trampoline_addr(SB)/8, $libc_getresuid_trampoline<>(SB)\n\nTEXT libc_getresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getresgid(SB)\nGLOBL\t·libc_getresgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getresgid_trampoline_addr(SB)/8, $libc_getresgid_trampoline<>(SB)\n\nTEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ioctl(SB)\nGLOBL\t·libc_ioctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB)\n\nTEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sysctl(SB)\nGLOBL\t·libc_sysctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB)\n\nTEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fcntl(SB)\nGLOBL\t·libc_fcntl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB)\n\nTEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ppoll(SB)\nGLOBL\t·libc_ppoll_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ppoll_trampoline_addr(SB)/8, $libc_ppoll_trampoline<>(SB)\n\nTEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_access(SB)\nGLOBL\t·libc_access_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB)\n\nTEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_adjtime(SB)\nGLOBL\t·libc_adjtime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB)\n\nTEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chdir(SB)\nGLOBL\t·libc_chdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB)\n\nTEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chflags(SB)\nGLOBL\t·libc_chflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB)\n\nTEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chmod(SB)\nGLOBL\t·libc_chmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB)\n\nTEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chown(SB)\nGLOBL\t·libc_chown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB)\n\nTEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chroot(SB)\nGLOBL\t·libc_chroot_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB)\n\nTEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_clock_gettime(SB)\nGLOBL\t·libc_clock_gettime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB)\n\nTEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_close(SB)\nGLOBL\t·libc_close_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB)\n\nTEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup(SB)\nGLOBL\t·libc_dup_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB)\n\nTEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup2(SB)\nGLOBL\t·libc_dup2_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB)\n\nTEXT libc_dup3_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup3(SB)\nGLOBL\t·libc_dup3_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup3_trampoline_addr(SB)/8, $libc_dup3_trampoline<>(SB)\n\nTEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_exit(SB)\nGLOBL\t·libc_exit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB)\n\nTEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_faccessat(SB)\nGLOBL\t·libc_faccessat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB)\n\nTEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchdir(SB)\nGLOBL\t·libc_fchdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB)\n\nTEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchflags(SB)\nGLOBL\t·libc_fchflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB)\n\nTEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmod(SB)\nGLOBL\t·libc_fchmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB)\n\nTEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmodat(SB)\nGLOBL\t·libc_fchmodat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB)\n\nTEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchown(SB)\nGLOBL\t·libc_fchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB)\n\nTEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchownat(SB)\nGLOBL\t·libc_fchownat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB)\n\nTEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_flock(SB)\nGLOBL\t·libc_flock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB)\n\nTEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fpathconf(SB)\nGLOBL\t·libc_fpathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB)\n\nTEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstat(SB)\nGLOBL\t·libc_fstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstat_trampoline_addr(SB)/8, $libc_fstat_trampoline<>(SB)\n\nTEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatat(SB)\nGLOBL\t·libc_fstatat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatat_trampoline_addr(SB)/8, $libc_fstatat_trampoline<>(SB)\n\nTEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatfs(SB)\nGLOBL\t·libc_fstatfs_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatfs_trampoline_addr(SB)/8, $libc_fstatfs_trampoline<>(SB)\n\nTEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fsync(SB)\nGLOBL\t·libc_fsync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB)\n\nTEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ftruncate(SB)\nGLOBL\t·libc_ftruncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB)\n\nTEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getegid(SB)\nGLOBL\t·libc_getegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB)\n\nTEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_geteuid(SB)\nGLOBL\t·libc_geteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB)\n\nTEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgid(SB)\nGLOBL\t·libc_getgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB)\n\nTEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgid(SB)\nGLOBL\t·libc_getpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB)\n\nTEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgrp(SB)\nGLOBL\t·libc_getpgrp_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB)\n\nTEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpid(SB)\nGLOBL\t·libc_getpid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB)\n\nTEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getppid(SB)\nGLOBL\t·libc_getppid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB)\n\nTEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpriority(SB)\nGLOBL\t·libc_getpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB)\n\nTEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrlimit(SB)\nGLOBL\t·libc_getrlimit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB)\n\nTEXT libc_getrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrtable(SB)\nGLOBL\t·libc_getrtable_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrtable_trampoline_addr(SB)/8, $libc_getrtable_trampoline<>(SB)\n\nTEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrusage(SB)\nGLOBL\t·libc_getrusage_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB)\n\nTEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsid(SB)\nGLOBL\t·libc_getsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB)\n\nTEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_gettimeofday(SB)\nGLOBL\t·libc_gettimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB)\n\nTEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getuid(SB)\nGLOBL\t·libc_getuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB)\n\nTEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_issetugid(SB)\nGLOBL\t·libc_issetugid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB)\n\nTEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kill(SB)\nGLOBL\t·libc_kill_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB)\n\nTEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kqueue(SB)\nGLOBL\t·libc_kqueue_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB)\n\nTEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lchown(SB)\nGLOBL\t·libc_lchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB)\n\nTEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_link(SB)\nGLOBL\t·libc_link_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB)\n\nTEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_linkat(SB)\nGLOBL\t·libc_linkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB)\n\nTEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_listen(SB)\nGLOBL\t·libc_listen_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB)\n\nTEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lstat(SB)\nGLOBL\t·libc_lstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lstat_trampoline_addr(SB)/8, $libc_lstat_trampoline<>(SB)\n\nTEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdir(SB)\nGLOBL\t·libc_mkdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB)\n\nTEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdirat(SB)\nGLOBL\t·libc_mkdirat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB)\n\nTEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifo(SB)\nGLOBL\t·libc_mkfifo_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB)\n\nTEXT libc_mkfifoat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifoat(SB)\nGLOBL\t·libc_mkfifoat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkfifoat_trampoline_addr(SB)/8, $libc_mkfifoat_trampoline<>(SB)\n\nTEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknod(SB)\nGLOBL\t·libc_mknod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB)\n\nTEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknodat(SB)\nGLOBL\t·libc_mknodat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mknodat_trampoline_addr(SB)/8, $libc_mknodat_trampoline<>(SB)\n\nTEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mount(SB)\nGLOBL\t·libc_mount_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB)\n\nTEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_nanosleep(SB)\nGLOBL\t·libc_nanosleep_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_nanosleep_trampoline_addr(SB)/8, $libc_nanosleep_trampoline<>(SB)\n\nTEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_open(SB)\nGLOBL\t·libc_open_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB)\n\nTEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_openat(SB)\nGLOBL\t·libc_openat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB)\n\nTEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pathconf(SB)\nGLOBL\t·libc_pathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB)\n\nTEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pread(SB)\nGLOBL\t·libc_pread_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB)\n\nTEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pwrite(SB)\nGLOBL\t·libc_pwrite_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB)\n\nTEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_read(SB)\nGLOBL\t·libc_read_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB)\n\nTEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlink(SB)\nGLOBL\t·libc_readlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB)\n\nTEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlinkat(SB)\nGLOBL\t·libc_readlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB)\n\nTEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rename(SB)\nGLOBL\t·libc_rename_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB)\n\nTEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_renameat(SB)\nGLOBL\t·libc_renameat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB)\n\nTEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_revoke(SB)\nGLOBL\t·libc_revoke_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB)\n\nTEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rmdir(SB)\nGLOBL\t·libc_rmdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB)\n\nTEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lseek(SB)\nGLOBL\t·libc_lseek_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB)\n\nTEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_select(SB)\nGLOBL\t·libc_select_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB)\n\nTEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setegid(SB)\nGLOBL\t·libc_setegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB)\n\nTEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_seteuid(SB)\nGLOBL\t·libc_seteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB)\n\nTEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgid(SB)\nGLOBL\t·libc_setgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB)\n\nTEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setlogin(SB)\nGLOBL\t·libc_setlogin_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB)\n\nTEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpgid(SB)\nGLOBL\t·libc_setpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB)\n\nTEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpriority(SB)\nGLOBL\t·libc_setpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB)\n\nTEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setregid(SB)\nGLOBL\t·libc_setregid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB)\n\nTEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setreuid(SB)\nGLOBL\t·libc_setreuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB)\n\nTEXT libc_setresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setresgid(SB)\nGLOBL\t·libc_setresgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setresgid_trampoline_addr(SB)/8, $libc_setresgid_trampoline<>(SB)\n\nTEXT libc_setresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setresuid(SB)\nGLOBL\t·libc_setresuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setresuid_trampoline_addr(SB)/8, $libc_setresuid_trampoline<>(SB)\n\nTEXT libc_setrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setrtable(SB)\nGLOBL\t·libc_setrtable_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setrtable_trampoline_addr(SB)/8, $libc_setrtable_trampoline<>(SB)\n\nTEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsid(SB)\nGLOBL\t·libc_setsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB)\n\nTEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_settimeofday(SB)\nGLOBL\t·libc_settimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB)\n\nTEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setuid(SB)\nGLOBL\t·libc_setuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB)\n\nTEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_stat(SB)\nGLOBL\t·libc_stat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_stat_trampoline_addr(SB)/8, $libc_stat_trampoline<>(SB)\n\nTEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_statfs(SB)\nGLOBL\t·libc_statfs_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_statfs_trampoline_addr(SB)/8, $libc_statfs_trampoline<>(SB)\n\nTEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlink(SB)\nGLOBL\t·libc_symlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB)\n\nTEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlinkat(SB)\nGLOBL\t·libc_symlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB)\n\nTEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sync(SB)\nGLOBL\t·libc_sync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB)\n\nTEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_truncate(SB)\nGLOBL\t·libc_truncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB)\n\nTEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_umask(SB)\nGLOBL\t·libc_umask_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB)\n\nTEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlink(SB)\nGLOBL\t·libc_unlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB)\n\nTEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlinkat(SB)\nGLOBL\t·libc_unlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB)\n\nTEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unmount(SB)\nGLOBL\t·libc_unmount_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB)\n\nTEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_write(SB)\nGLOBL\t·libc_write_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB)\n\nTEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mmap(SB)\nGLOBL\t·libc_mmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB)\n\nTEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munmap(SB)\nGLOBL\t·libc_munmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB)\n\nTEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getfsstat(SB)\nGLOBL\t·libc_getfsstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getfsstat_trampoline_addr(SB)/8, $libc_getfsstat_trampoline<>(SB)\n\nTEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimensat(SB)\nGLOBL\t·libc_utimensat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB)\n\nTEXT libc_pledge_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pledge(SB)\nGLOBL\t·libc_pledge_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pledge_trampoline_addr(SB)/8, $libc_pledge_trampoline<>(SB)\n\nTEXT libc_unveil_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unveil(SB)\nGLOBL\t·libc_unveil_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unveil_trampoline_addr(SB)/8, $libc_unveil_trampoline<>(SB)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go",
    "content": "// go run mksyscall_solaris.go -tags solaris,amd64 syscall_solaris.go syscall_solaris_amd64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build solaris && amd64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n//go:cgo_import_dynamic libc_pipe pipe \"libc.so\"\n//go:cgo_import_dynamic libc_pipe2 pipe2 \"libc.so\"\n//go:cgo_import_dynamic libc_getsockname getsockname \"libsocket.so\"\n//go:cgo_import_dynamic libc_getcwd getcwd \"libc.so\"\n//go:cgo_import_dynamic libc_getgroups getgroups \"libc.so\"\n//go:cgo_import_dynamic libc_setgroups setgroups \"libc.so\"\n//go:cgo_import_dynamic libc_wait4 wait4 \"libc.so\"\n//go:cgo_import_dynamic libc_gethostname gethostname \"libc.so\"\n//go:cgo_import_dynamic libc_utimes utimes \"libc.so\"\n//go:cgo_import_dynamic libc_utimensat utimensat \"libc.so\"\n//go:cgo_import_dynamic libc_fcntl fcntl \"libc.so\"\n//go:cgo_import_dynamic libc_futimesat futimesat \"libc.so\"\n//go:cgo_import_dynamic libc_accept accept \"libsocket.so\"\n//go:cgo_import_dynamic libc___xnet_recvmsg __xnet_recvmsg \"libsocket.so\"\n//go:cgo_import_dynamic libc___xnet_sendmsg __xnet_sendmsg \"libsocket.so\"\n//go:cgo_import_dynamic libc_acct acct \"libc.so\"\n//go:cgo_import_dynamic libc___makedev __makedev \"libc.so\"\n//go:cgo_import_dynamic libc___major __major \"libc.so\"\n//go:cgo_import_dynamic libc___minor __minor \"libc.so\"\n//go:cgo_import_dynamic libc_ioctl ioctl \"libc.so\"\n//go:cgo_import_dynamic libc_poll poll \"libc.so\"\n//go:cgo_import_dynamic libc_access access \"libc.so\"\n//go:cgo_import_dynamic libc_adjtime adjtime \"libc.so\"\n//go:cgo_import_dynamic libc_chdir chdir \"libc.so\"\n//go:cgo_import_dynamic libc_chmod chmod \"libc.so\"\n//go:cgo_import_dynamic libc_chown chown \"libc.so\"\n//go:cgo_import_dynamic libc_chroot chroot \"libc.so\"\n//go:cgo_import_dynamic libc_clockgettime clockgettime \"libc.so\"\n//go:cgo_import_dynamic libc_close close \"libc.so\"\n//go:cgo_import_dynamic libc_creat creat \"libc.so\"\n//go:cgo_import_dynamic libc_dup dup \"libc.so\"\n//go:cgo_import_dynamic libc_dup2 dup2 \"libc.so\"\n//go:cgo_import_dynamic libc_exit exit \"libc.so\"\n//go:cgo_import_dynamic libc_faccessat faccessat \"libc.so\"\n//go:cgo_import_dynamic libc_fchdir fchdir \"libc.so\"\n//go:cgo_import_dynamic libc_fchmod fchmod \"libc.so\"\n//go:cgo_import_dynamic libc_fchmodat fchmodat \"libc.so\"\n//go:cgo_import_dynamic libc_fchown fchown \"libc.so\"\n//go:cgo_import_dynamic libc_fchownat fchownat \"libc.so\"\n//go:cgo_import_dynamic libc_fdatasync fdatasync \"libc.so\"\n//go:cgo_import_dynamic libc_flock flock \"libc.so\"\n//go:cgo_import_dynamic libc_fpathconf fpathconf \"libc.so\"\n//go:cgo_import_dynamic libc_fstat fstat \"libc.so\"\n//go:cgo_import_dynamic libc_fstatat fstatat \"libc.so\"\n//go:cgo_import_dynamic libc_fstatvfs fstatvfs \"libc.so\"\n//go:cgo_import_dynamic libc_getdents getdents \"libc.so\"\n//go:cgo_import_dynamic libc_getgid getgid \"libc.so\"\n//go:cgo_import_dynamic libc_getpid getpid \"libc.so\"\n//go:cgo_import_dynamic libc_getpgid getpgid \"libc.so\"\n//go:cgo_import_dynamic libc_getpgrp getpgrp \"libc.so\"\n//go:cgo_import_dynamic libc_geteuid geteuid \"libc.so\"\n//go:cgo_import_dynamic libc_getegid getegid \"libc.so\"\n//go:cgo_import_dynamic libc_getppid getppid \"libc.so\"\n//go:cgo_import_dynamic libc_getpriority getpriority \"libc.so\"\n//go:cgo_import_dynamic libc_getrlimit getrlimit \"libc.so\"\n//go:cgo_import_dynamic libc_getrusage getrusage \"libc.so\"\n//go:cgo_import_dynamic libc_getsid getsid \"libc.so\"\n//go:cgo_import_dynamic libc_gettimeofday gettimeofday \"libc.so\"\n//go:cgo_import_dynamic libc_getuid getuid \"libc.so\"\n//go:cgo_import_dynamic libc_kill kill \"libc.so\"\n//go:cgo_import_dynamic libc_lchown lchown \"libc.so\"\n//go:cgo_import_dynamic libc_link link \"libc.so\"\n//go:cgo_import_dynamic libc___xnet_listen __xnet_listen \"libsocket.so\"\n//go:cgo_import_dynamic libc_lstat lstat \"libc.so\"\n//go:cgo_import_dynamic libc_madvise madvise \"libc.so\"\n//go:cgo_import_dynamic libc_mkdir mkdir \"libc.so\"\n//go:cgo_import_dynamic libc_mkdirat mkdirat \"libc.so\"\n//go:cgo_import_dynamic libc_mkfifo mkfifo \"libc.so\"\n//go:cgo_import_dynamic libc_mkfifoat mkfifoat \"libc.so\"\n//go:cgo_import_dynamic libc_mknod mknod \"libc.so\"\n//go:cgo_import_dynamic libc_mknodat mknodat \"libc.so\"\n//go:cgo_import_dynamic libc_mlock mlock \"libc.so\"\n//go:cgo_import_dynamic libc_mlockall mlockall \"libc.so\"\n//go:cgo_import_dynamic libc_mprotect mprotect \"libc.so\"\n//go:cgo_import_dynamic libc_msync msync \"libc.so\"\n//go:cgo_import_dynamic libc_munlock munlock \"libc.so\"\n//go:cgo_import_dynamic libc_munlockall munlockall \"libc.so\"\n//go:cgo_import_dynamic libc_nanosleep nanosleep \"libc.so\"\n//go:cgo_import_dynamic libc_open open \"libc.so\"\n//go:cgo_import_dynamic libc_openat openat \"libc.so\"\n//go:cgo_import_dynamic libc_pathconf pathconf \"libc.so\"\n//go:cgo_import_dynamic libc_pause pause \"libc.so\"\n//go:cgo_import_dynamic libc_pread pread \"libc.so\"\n//go:cgo_import_dynamic libc_pwrite pwrite \"libc.so\"\n//go:cgo_import_dynamic libc_read read \"libc.so\"\n//go:cgo_import_dynamic libc_readlink readlink \"libc.so\"\n//go:cgo_import_dynamic libc_rename rename \"libc.so\"\n//go:cgo_import_dynamic libc_renameat renameat \"libc.so\"\n//go:cgo_import_dynamic libc_rmdir rmdir \"libc.so\"\n//go:cgo_import_dynamic libc_lseek lseek \"libc.so\"\n//go:cgo_import_dynamic libc_select select \"libc.so\"\n//go:cgo_import_dynamic libc_setegid setegid \"libc.so\"\n//go:cgo_import_dynamic libc_seteuid seteuid \"libc.so\"\n//go:cgo_import_dynamic libc_setgid setgid \"libc.so\"\n//go:cgo_import_dynamic libc_sethostname sethostname \"libc.so\"\n//go:cgo_import_dynamic libc_setpgid setpgid \"libc.so\"\n//go:cgo_import_dynamic libc_setpriority setpriority \"libc.so\"\n//go:cgo_import_dynamic libc_setregid setregid \"libc.so\"\n//go:cgo_import_dynamic libc_setreuid setreuid \"libc.so\"\n//go:cgo_import_dynamic libc_setsid setsid \"libc.so\"\n//go:cgo_import_dynamic libc_setuid setuid \"libc.so\"\n//go:cgo_import_dynamic libc_shutdown shutdown \"libsocket.so\"\n//go:cgo_import_dynamic libc_stat stat \"libc.so\"\n//go:cgo_import_dynamic libc_statvfs statvfs \"libc.so\"\n//go:cgo_import_dynamic libc_symlink symlink \"libc.so\"\n//go:cgo_import_dynamic libc_sync sync \"libc.so\"\n//go:cgo_import_dynamic libc_sysconf sysconf \"libc.so\"\n//go:cgo_import_dynamic libc_times times \"libc.so\"\n//go:cgo_import_dynamic libc_truncate truncate \"libc.so\"\n//go:cgo_import_dynamic libc_fsync fsync \"libc.so\"\n//go:cgo_import_dynamic libc_ftruncate ftruncate \"libc.so\"\n//go:cgo_import_dynamic libc_umask umask \"libc.so\"\n//go:cgo_import_dynamic libc_uname uname \"libc.so\"\n//go:cgo_import_dynamic libc_umount umount \"libc.so\"\n//go:cgo_import_dynamic libc_unlink unlink \"libc.so\"\n//go:cgo_import_dynamic libc_unlinkat unlinkat \"libc.so\"\n//go:cgo_import_dynamic libc_ustat ustat \"libc.so\"\n//go:cgo_import_dynamic libc_utime utime \"libc.so\"\n//go:cgo_import_dynamic libc___xnet_bind __xnet_bind \"libsocket.so\"\n//go:cgo_import_dynamic libc___xnet_connect __xnet_connect \"libsocket.so\"\n//go:cgo_import_dynamic libc_mmap mmap \"libc.so\"\n//go:cgo_import_dynamic libc_munmap munmap \"libc.so\"\n//go:cgo_import_dynamic libc_sendfile sendfile \"libsendfile.so\"\n//go:cgo_import_dynamic libc___xnet_sendto __xnet_sendto \"libsocket.so\"\n//go:cgo_import_dynamic libc___xnet_socket __xnet_socket \"libsocket.so\"\n//go:cgo_import_dynamic libc___xnet_socketpair __xnet_socketpair \"libsocket.so\"\n//go:cgo_import_dynamic libc_write write \"libc.so\"\n//go:cgo_import_dynamic libc___xnet_getsockopt __xnet_getsockopt \"libsocket.so\"\n//go:cgo_import_dynamic libc_getpeername getpeername \"libsocket.so\"\n//go:cgo_import_dynamic libc_setsockopt setsockopt \"libsocket.so\"\n//go:cgo_import_dynamic libc_recvfrom recvfrom \"libsocket.so\"\n//go:cgo_import_dynamic libc_getpeerucred getpeerucred \"libc.so\"\n//go:cgo_import_dynamic libc_ucred_get ucred_get \"libc.so\"\n//go:cgo_import_dynamic libc_ucred_geteuid ucred_geteuid \"libc.so\"\n//go:cgo_import_dynamic libc_ucred_getegid ucred_getegid \"libc.so\"\n//go:cgo_import_dynamic libc_ucred_getruid ucred_getruid \"libc.so\"\n//go:cgo_import_dynamic libc_ucred_getrgid ucred_getrgid \"libc.so\"\n//go:cgo_import_dynamic libc_ucred_getsuid ucred_getsuid \"libc.so\"\n//go:cgo_import_dynamic libc_ucred_getsgid ucred_getsgid \"libc.so\"\n//go:cgo_import_dynamic libc_ucred_getpid ucred_getpid \"libc.so\"\n//go:cgo_import_dynamic libc_ucred_free ucred_free \"libc.so\"\n//go:cgo_import_dynamic libc_port_create port_create \"libc.so\"\n//go:cgo_import_dynamic libc_port_associate port_associate \"libc.so\"\n//go:cgo_import_dynamic libc_port_dissociate port_dissociate \"libc.so\"\n//go:cgo_import_dynamic libc_port_get port_get \"libc.so\"\n//go:cgo_import_dynamic libc_port_getn port_getn \"libc.so\"\n//go:cgo_import_dynamic libc_putmsg putmsg \"libc.so\"\n//go:cgo_import_dynamic libc_getmsg getmsg \"libc.so\"\n\n//go:linkname procpipe libc_pipe\n//go:linkname procpipe2 libc_pipe2\n//go:linkname procgetsockname libc_getsockname\n//go:linkname procGetcwd libc_getcwd\n//go:linkname procgetgroups libc_getgroups\n//go:linkname procsetgroups libc_setgroups\n//go:linkname procwait4 libc_wait4\n//go:linkname procgethostname libc_gethostname\n//go:linkname procutimes libc_utimes\n//go:linkname procutimensat libc_utimensat\n//go:linkname procfcntl libc_fcntl\n//go:linkname procfutimesat libc_futimesat\n//go:linkname procaccept libc_accept\n//go:linkname proc__xnet_recvmsg libc___xnet_recvmsg\n//go:linkname proc__xnet_sendmsg libc___xnet_sendmsg\n//go:linkname procacct libc_acct\n//go:linkname proc__makedev libc___makedev\n//go:linkname proc__major libc___major\n//go:linkname proc__minor libc___minor\n//go:linkname procioctl libc_ioctl\n//go:linkname procpoll libc_poll\n//go:linkname procAccess libc_access\n//go:linkname procAdjtime libc_adjtime\n//go:linkname procChdir libc_chdir\n//go:linkname procChmod libc_chmod\n//go:linkname procChown libc_chown\n//go:linkname procChroot libc_chroot\n//go:linkname procClockGettime libc_clockgettime\n//go:linkname procClose libc_close\n//go:linkname procCreat libc_creat\n//go:linkname procDup libc_dup\n//go:linkname procDup2 libc_dup2\n//go:linkname procExit libc_exit\n//go:linkname procFaccessat libc_faccessat\n//go:linkname procFchdir libc_fchdir\n//go:linkname procFchmod libc_fchmod\n//go:linkname procFchmodat libc_fchmodat\n//go:linkname procFchown libc_fchown\n//go:linkname procFchownat libc_fchownat\n//go:linkname procFdatasync libc_fdatasync\n//go:linkname procFlock libc_flock\n//go:linkname procFpathconf libc_fpathconf\n//go:linkname procFstat libc_fstat\n//go:linkname procFstatat libc_fstatat\n//go:linkname procFstatvfs libc_fstatvfs\n//go:linkname procGetdents libc_getdents\n//go:linkname procGetgid libc_getgid\n//go:linkname procGetpid libc_getpid\n//go:linkname procGetpgid libc_getpgid\n//go:linkname procGetpgrp libc_getpgrp\n//go:linkname procGeteuid libc_geteuid\n//go:linkname procGetegid libc_getegid\n//go:linkname procGetppid libc_getppid\n//go:linkname procGetpriority libc_getpriority\n//go:linkname procGetrlimit libc_getrlimit\n//go:linkname procGetrusage libc_getrusage\n//go:linkname procGetsid libc_getsid\n//go:linkname procGettimeofday libc_gettimeofday\n//go:linkname procGetuid libc_getuid\n//go:linkname procKill libc_kill\n//go:linkname procLchown libc_lchown\n//go:linkname procLink libc_link\n//go:linkname proc__xnet_listen libc___xnet_listen\n//go:linkname procLstat libc_lstat\n//go:linkname procMadvise libc_madvise\n//go:linkname procMkdir libc_mkdir\n//go:linkname procMkdirat libc_mkdirat\n//go:linkname procMkfifo libc_mkfifo\n//go:linkname procMkfifoat libc_mkfifoat\n//go:linkname procMknod libc_mknod\n//go:linkname procMknodat libc_mknodat\n//go:linkname procMlock libc_mlock\n//go:linkname procMlockall libc_mlockall\n//go:linkname procMprotect libc_mprotect\n//go:linkname procMsync libc_msync\n//go:linkname procMunlock libc_munlock\n//go:linkname procMunlockall libc_munlockall\n//go:linkname procNanosleep libc_nanosleep\n//go:linkname procOpen libc_open\n//go:linkname procOpenat libc_openat\n//go:linkname procPathconf libc_pathconf\n//go:linkname procPause libc_pause\n//go:linkname procpread libc_pread\n//go:linkname procpwrite libc_pwrite\n//go:linkname procread libc_read\n//go:linkname procReadlink libc_readlink\n//go:linkname procRename libc_rename\n//go:linkname procRenameat libc_renameat\n//go:linkname procRmdir libc_rmdir\n//go:linkname proclseek libc_lseek\n//go:linkname procSelect libc_select\n//go:linkname procSetegid libc_setegid\n//go:linkname procSeteuid libc_seteuid\n//go:linkname procSetgid libc_setgid\n//go:linkname procSethostname libc_sethostname\n//go:linkname procSetpgid libc_setpgid\n//go:linkname procSetpriority libc_setpriority\n//go:linkname procSetregid libc_setregid\n//go:linkname procSetreuid libc_setreuid\n//go:linkname procSetsid libc_setsid\n//go:linkname procSetuid libc_setuid\n//go:linkname procshutdown libc_shutdown\n//go:linkname procStat libc_stat\n//go:linkname procStatvfs libc_statvfs\n//go:linkname procSymlink libc_symlink\n//go:linkname procSync libc_sync\n//go:linkname procSysconf libc_sysconf\n//go:linkname procTimes libc_times\n//go:linkname procTruncate libc_truncate\n//go:linkname procFsync libc_fsync\n//go:linkname procFtruncate libc_ftruncate\n//go:linkname procUmask libc_umask\n//go:linkname procUname libc_uname\n//go:linkname procumount libc_umount\n//go:linkname procUnlink libc_unlink\n//go:linkname procUnlinkat libc_unlinkat\n//go:linkname procUstat libc_ustat\n//go:linkname procUtime libc_utime\n//go:linkname proc__xnet_bind libc___xnet_bind\n//go:linkname proc__xnet_connect libc___xnet_connect\n//go:linkname procmmap libc_mmap\n//go:linkname procmunmap libc_munmap\n//go:linkname procsendfile libc_sendfile\n//go:linkname proc__xnet_sendto libc___xnet_sendto\n//go:linkname proc__xnet_socket libc___xnet_socket\n//go:linkname proc__xnet_socketpair libc___xnet_socketpair\n//go:linkname procwrite libc_write\n//go:linkname proc__xnet_getsockopt libc___xnet_getsockopt\n//go:linkname procgetpeername libc_getpeername\n//go:linkname procsetsockopt libc_setsockopt\n//go:linkname procrecvfrom libc_recvfrom\n//go:linkname procgetpeerucred libc_getpeerucred\n//go:linkname procucred_get libc_ucred_get\n//go:linkname procucred_geteuid libc_ucred_geteuid\n//go:linkname procucred_getegid libc_ucred_getegid\n//go:linkname procucred_getruid libc_ucred_getruid\n//go:linkname procucred_getrgid libc_ucred_getrgid\n//go:linkname procucred_getsuid libc_ucred_getsuid\n//go:linkname procucred_getsgid libc_ucred_getsgid\n//go:linkname procucred_getpid libc_ucred_getpid\n//go:linkname procucred_free libc_ucred_free\n//go:linkname procport_create libc_port_create\n//go:linkname procport_associate libc_port_associate\n//go:linkname procport_dissociate libc_port_dissociate\n//go:linkname procport_get libc_port_get\n//go:linkname procport_getn libc_port_getn\n//go:linkname procputmsg libc_putmsg\n//go:linkname procgetmsg libc_getmsg\n\nvar (\n\tprocpipe,\n\tprocpipe2,\n\tprocgetsockname,\n\tprocGetcwd,\n\tprocgetgroups,\n\tprocsetgroups,\n\tprocwait4,\n\tprocgethostname,\n\tprocutimes,\n\tprocutimensat,\n\tprocfcntl,\n\tprocfutimesat,\n\tprocaccept,\n\tproc__xnet_recvmsg,\n\tproc__xnet_sendmsg,\n\tprocacct,\n\tproc__makedev,\n\tproc__major,\n\tproc__minor,\n\tprocioctl,\n\tprocpoll,\n\tprocAccess,\n\tprocAdjtime,\n\tprocChdir,\n\tprocChmod,\n\tprocChown,\n\tprocChroot,\n\tprocClockGettime,\n\tprocClose,\n\tprocCreat,\n\tprocDup,\n\tprocDup2,\n\tprocExit,\n\tprocFaccessat,\n\tprocFchdir,\n\tprocFchmod,\n\tprocFchmodat,\n\tprocFchown,\n\tprocFchownat,\n\tprocFdatasync,\n\tprocFlock,\n\tprocFpathconf,\n\tprocFstat,\n\tprocFstatat,\n\tprocFstatvfs,\n\tprocGetdents,\n\tprocGetgid,\n\tprocGetpid,\n\tprocGetpgid,\n\tprocGetpgrp,\n\tprocGeteuid,\n\tprocGetegid,\n\tprocGetppid,\n\tprocGetpriority,\n\tprocGetrlimit,\n\tprocGetrusage,\n\tprocGetsid,\n\tprocGettimeofday,\n\tprocGetuid,\n\tprocKill,\n\tprocLchown,\n\tprocLink,\n\tproc__xnet_listen,\n\tprocLstat,\n\tprocMadvise,\n\tprocMkdir,\n\tprocMkdirat,\n\tprocMkfifo,\n\tprocMkfifoat,\n\tprocMknod,\n\tprocMknodat,\n\tprocMlock,\n\tprocMlockall,\n\tprocMprotect,\n\tprocMsync,\n\tprocMunlock,\n\tprocMunlockall,\n\tprocNanosleep,\n\tprocOpen,\n\tprocOpenat,\n\tprocPathconf,\n\tprocPause,\n\tprocpread,\n\tprocpwrite,\n\tprocread,\n\tprocReadlink,\n\tprocRename,\n\tprocRenameat,\n\tprocRmdir,\n\tproclseek,\n\tprocSelect,\n\tprocSetegid,\n\tprocSeteuid,\n\tprocSetgid,\n\tprocSethostname,\n\tprocSetpgid,\n\tprocSetpriority,\n\tprocSetregid,\n\tprocSetreuid,\n\tprocSetsid,\n\tprocSetuid,\n\tprocshutdown,\n\tprocStat,\n\tprocStatvfs,\n\tprocSymlink,\n\tprocSync,\n\tprocSysconf,\n\tprocTimes,\n\tprocTruncate,\n\tprocFsync,\n\tprocFtruncate,\n\tprocUmask,\n\tprocUname,\n\tprocumount,\n\tprocUnlink,\n\tprocUnlinkat,\n\tprocUstat,\n\tprocUtime,\n\tproc__xnet_bind,\n\tproc__xnet_connect,\n\tprocmmap,\n\tprocmunmap,\n\tprocsendfile,\n\tproc__xnet_sendto,\n\tproc__xnet_socket,\n\tproc__xnet_socketpair,\n\tprocwrite,\n\tproc__xnet_getsockopt,\n\tprocgetpeername,\n\tprocsetsockopt,\n\tprocrecvfrom,\n\tprocgetpeerucred,\n\tprocucred_get,\n\tprocucred_geteuid,\n\tprocucred_getegid,\n\tprocucred_getruid,\n\tprocucred_getrgid,\n\tprocucred_getsuid,\n\tprocucred_getsgid,\n\tprocucred_getpid,\n\tprocucred_free,\n\tprocport_create,\n\tprocport_associate,\n\tprocport_dissociate,\n\tprocport_get,\n\tprocport_getn,\n\tprocputmsg,\n\tprocgetmsg syscallFunc\n)\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe(p *[2]_C_int) (n int, err error) {\n\tr0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procpipe)), 1, uintptr(unsafe.Pointer(p)), 0, 0, 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procpipe2)), 2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procgetsockname)), 3, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procGetcwd)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), 0, 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procgetgroups)), 2, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0, 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procsetgroups)), 2, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int32, statusp *_C_int, options int, rusage *Rusage) (wpid int32, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procwait4)), 4, uintptr(pid), uintptr(unsafe.Pointer(statusp)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int32(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc gethostname(buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procgethostname)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), 0, 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procutimes)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(fd int, path string, times *[2]Timespec, flag int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procutimensat)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flag), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (val int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procfcntl)), 3, uintptr(fd), uintptr(cmd), uintptr(arg), 0, 0, 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(fildes int, path *byte, times *[2]Timeval) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procfutimesat)), 3, uintptr(fildes), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times)), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procaccept)), 3, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_recvmsg)), 3, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_sendmsg)), 3, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc acct(path *byte) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procacct)), 1, uintptr(unsafe.Pointer(path)), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc __makedev(version int, major uint, minor uint) (val uint64) {\n\tr0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&proc__makedev)), 3, uintptr(version), uintptr(major), uintptr(minor), 0, 0, 0)\n\tval = uint64(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc __major(version int, dev uint64) (val uint) {\n\tr0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&proc__major)), 2, uintptr(version), uintptr(dev), 0, 0, 0, 0)\n\tval = uint(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc __minor(version int, dev uint64) (val uint) {\n\tr0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&proc__minor)), 2, uintptr(version), uintptr(dev), 0, 0, 0, 0)\n\tval = uint(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlRet(fd int, req int, arg uintptr) (ret int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procioctl)), 3, uintptr(fd), uintptr(req), uintptr(arg), 0, 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtrRet(fd int, req int, arg unsafe.Pointer) (ret int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procioctl)), 3, uintptr(fd), uintptr(req), uintptr(arg), 0, 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procpoll)), 3, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout), 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procAccess)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procAdjtime)), 2, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procChdir)), 1, uintptr(unsafe.Pointer(_p0)), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procChmod)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procChown)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procChroot)), 1, uintptr(unsafe.Pointer(_p0)), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procClockGettime)), 2, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procClose)), 1, uintptr(fd), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Creat(path string, mode uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procCreat)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procDup)), 1, uintptr(fd), 0, 0, 0, 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(oldfd int, newfd int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procDup2)), 2, uintptr(oldfd), uintptr(newfd), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tsysvicall6(uintptr(unsafe.Pointer(&procExit)), 1, uintptr(code), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFaccessat)), 4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchdir)), 1, uintptr(fd), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchmod)), 2, uintptr(fd), uintptr(mode), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchmodat)), 4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchown)), 3, uintptr(fd), uintptr(uid), uintptr(gid), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchownat)), 5, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fdatasync(fd int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFdatasync)), 1, uintptr(fd), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFlock)), 2, uintptr(fd), uintptr(how), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFpathconf)), 2, uintptr(fd), uintptr(name), 0, 0, 0, 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFstat)), 2, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFstatat)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatvfs(fd int, vfsstat *Statvfs_t) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFstatvfs)), 2, uintptr(fd), uintptr(unsafe.Pointer(vfsstat)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte, basep *uintptr) (n int, err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procGetdents)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := rawSysvicall6(uintptr(unsafe.Pointer(&procGetgid)), 0, 0, 0, 0, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := rawSysvicall6(uintptr(unsafe.Pointer(&procGetpid)), 0, 0, 0, 0, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetpgid)), 1, uintptr(pid), 0, 0, 0, 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgid int, err error) {\n\tr0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetpgrp)), 0, 0, 0, 0, 0, 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procGeteuid)), 0, 0, 0, 0, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procGetegid)), 0, 0, 0, 0, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procGetppid)), 0, 0, 0, 0, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (n int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procGetpriority)), 2, uintptr(which), uintptr(who), 0, 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetrlimit)), 2, uintptr(which), uintptr(unsafe.Pointer(lim)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetrusage)), 2, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetsid)), 1, uintptr(pid), 0, 0, 0, 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGettimeofday)), 1, uintptr(unsafe.Pointer(tv)), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := rawSysvicall6(uintptr(unsafe.Pointer(&procGetuid)), 0, 0, 0, 0, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procKill)), 2, uintptr(pid), uintptr(signum), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procLchown)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procLink)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_listen)), 2, uintptr(s), uintptr(backlog), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procLstat)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, advice int) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMadvise)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), uintptr(advice), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMkdir)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMkdirat)), 3, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMkfifo)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMkfifoat)), 3, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMknod)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMknodat)), 4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMlock)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMlockall)), 1, uintptr(flags), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMprotect)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), uintptr(prot), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMsync)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), uintptr(flags), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMunlock)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMunlockall)), 0, 0, 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procNanosleep)), 2, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procOpen)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procOpenat)), 4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procPathconf)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0, 0, 0, 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procPause)), 0, 0, 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procpread)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procpwrite)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procread)), 3, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\tif len(buf) > 0 {\n\t\t_p1 = &buf[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procReadlink)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(len(buf)), 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procRename)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procRenameat)), 4, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procRmdir)), 1, uintptr(unsafe.Pointer(_p0)), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proclseek)), 3, uintptr(fd), uintptr(offset), uintptr(whence), 0, 0, 0)\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSelect)), 5, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetegid)), 1, uintptr(egid), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSeteuid)), 1, uintptr(euid), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetgid)), 1, uintptr(gid), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sethostname(p []byte) (err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSethostname)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetpgid)), 2, uintptr(pid), uintptr(pgid), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSetpriority)), 3, uintptr(which), uintptr(who), uintptr(prio), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetregid)), 2, uintptr(rgid), uintptr(egid), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetreuid)), 2, uintptr(ruid), uintptr(euid), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetsid)), 0, 0, 0, 0, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetuid)), 1, uintptr(uid), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procshutdown)), 2, uintptr(s), uintptr(how), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procStat)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statvfs(path string, vfsstat *Statvfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procStatvfs)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(vfsstat)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSymlink)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSync)), 0, 0, 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sysconf(which int) (n int64, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSysconf)), 1, uintptr(which), 0, 0, 0, 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Times(tms *Tms) (ticks uintptr, err error) {\n\tr0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procTimes)), 1, uintptr(unsafe.Pointer(tms)), 0, 0, 0, 0, 0)\n\tticks = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procTruncate)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFsync)), 1, uintptr(fd), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFtruncate)), 2, uintptr(fd), uintptr(length), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(mask int) (oldmask int) {\n\tr0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procUmask)), 1, uintptr(mask), 0, 0, 0, 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Uname(buf *Utsname) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procUname)), 1, uintptr(unsafe.Pointer(buf)), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(target string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(target)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procumount)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUnlink)), 1, uintptr(unsafe.Pointer(_p0)), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUnlinkat)), 3, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUstat)), 2, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUtime)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_bind)), 3, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_connect)), 3, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procmmap)), 6, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procmunmap)), 2, uintptr(addr), uintptr(length), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procsendfile)), 4, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_sendto)), 6, uintptr(s), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_socket)), 3, uintptr(domain), uintptr(typ), uintptr(proto), 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&proc__xnet_socketpair)), 4, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procwrite)), 3, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_getsockopt)), 5, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procgetpeername)), 3, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procsetsockopt)), 5, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procrecvfrom)), 6, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeerucred(fd uintptr, ucred *uintptr) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procgetpeerucred)), 2, uintptr(fd), uintptr(unsafe.Pointer(ucred)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ucredGet(pid int) (ucred uintptr, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procucred_get)), 1, uintptr(pid), 0, 0, 0, 0, 0)\n\tucred = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ucredGeteuid(ucred uintptr) (uid int) {\n\tr0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procucred_geteuid)), 1, uintptr(ucred), 0, 0, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ucredGetegid(ucred uintptr) (gid int) {\n\tr0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procucred_getegid)), 1, uintptr(ucred), 0, 0, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ucredGetruid(ucred uintptr) (uid int) {\n\tr0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procucred_getruid)), 1, uintptr(ucred), 0, 0, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ucredGetrgid(ucred uintptr) (gid int) {\n\tr0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procucred_getrgid)), 1, uintptr(ucred), 0, 0, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ucredGetsuid(ucred uintptr) (uid int) {\n\tr0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procucred_getsuid)), 1, uintptr(ucred), 0, 0, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ucredGetsgid(ucred uintptr) (gid int) {\n\tr0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procucred_getsgid)), 1, uintptr(ucred), 0, 0, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ucredGetpid(ucred uintptr) (pid int) {\n\tr0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procucred_getpid)), 1, uintptr(ucred), 0, 0, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ucredFree(ucred uintptr) {\n\tsysvicall6(uintptr(unsafe.Pointer(&procucred_free)), 1, uintptr(ucred), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc port_create() (n int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procport_create)), 0, 0, 0, 0, 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc port_associate(port int, source int, object uintptr, events int, user *byte) (n int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procport_associate)), 5, uintptr(port), uintptr(source), uintptr(object), uintptr(events), uintptr(unsafe.Pointer(user)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc port_dissociate(port int, source int, object uintptr) (n int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procport_dissociate)), 3, uintptr(port), uintptr(source), uintptr(object), 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc port_get(port int, pe *portEvent, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procport_get)), 3, uintptr(port), uintptr(unsafe.Pointer(pe)), uintptr(unsafe.Pointer(timeout)), 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc port_getn(port int, pe *portEvent, max uint32, nget *uint32, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procport_getn)), 5, uintptr(port), uintptr(unsafe.Pointer(pe)), uintptr(max), uintptr(unsafe.Pointer(nget)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc putmsg(fd int, clptr *strbuf, dataptr *strbuf, flags int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procputmsg)), 4, uintptr(fd), uintptr(unsafe.Pointer(clptr)), uintptr(unsafe.Pointer(dataptr)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getmsg(fd int, clptr *strbuf, dataptr *strbuf, flags *int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procgetmsg)), 4, uintptr(fd), uintptr(unsafe.Pointer(clptr)), uintptr(unsafe.Pointer(dataptr)), uintptr(unsafe.Pointer(flags)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsyscall_zos_s390x.go",
    "content": "// go run mksyscall_zos_s390x.go -o_sysnum zsysnum_zos_s390x.go -o_syscall zsyscall_zos_s390x.go -i_syscall syscall_zos_s390x.go -o_asm zsymaddr_zos_s390x.s\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build zos && s390x\n\npackage unix\n\nimport (\n\t\"runtime\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (val int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FCNTL<<4, uintptr(fd), uintptr(cmd), uintptr(arg))\n\truntime.ExitSyscall()\n\tval = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Flistxattr(fd int, dest []byte) (sz int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p0 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___FLISTXATTR_A<<4, uintptr(fd), uintptr(_p0), uintptr(len(dest)))\n\truntime.ExitSyscall()\n\tsz = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_FlistxattrAddr() *(func(fd int, dest []byte) (sz int, err error))\n\nvar Flistxattr = enter_Flistxattr\n\nfunc enter_Flistxattr(fd int, dest []byte) (sz int, err error) {\n\tfuncref := get_FlistxattrAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___FLISTXATTR_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Flistxattr\n\t} else {\n\t\t*funcref = error_Flistxattr\n\t}\n\treturn (*funcref)(fd, dest)\n}\n\nfunc error_Flistxattr(fd int, dest []byte) (sz int, err error) {\n\tsz = -1\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Fremovexattr(fd int, attr string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___FREMOVEXATTR_A<<4, uintptr(fd), uintptr(unsafe.Pointer(_p0)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_FremovexattrAddr() *(func(fd int, attr string) (err error))\n\nvar Fremovexattr = enter_Fremovexattr\n\nfunc enter_Fremovexattr(fd int, attr string) (err error) {\n\tfuncref := get_FremovexattrAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___FREMOVEXATTR_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Fremovexattr\n\t} else {\n\t\t*funcref = error_Fremovexattr\n\t}\n\treturn (*funcref)(fd, attr)\n}\n\nfunc error_Fremovexattr(fd int, attr string) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_READ<<4, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\truntime.ExitSyscall()\n\tn = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_WRITE<<4, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\truntime.ExitSyscall()\n\tn = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___FGETXATTR_A<<4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))\n\truntime.ExitSyscall()\n\tsz = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_FgetxattrAddr() *(func(fd int, attr string, dest []byte) (sz int, err error))\n\nvar Fgetxattr = enter_Fgetxattr\n\nfunc enter_Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) {\n\tfuncref := get_FgetxattrAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___FGETXATTR_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Fgetxattr\n\t} else {\n\t\t*funcref = error_Fgetxattr\n\t}\n\treturn (*funcref)(fd, attr, dest)\n}\n\nfunc error_Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) {\n\tsz = -1\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Fsetxattr(fd int, attr string, data []byte, flag int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(data) > 0 {\n\t\t_p1 = unsafe.Pointer(&data[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___FSETXATTR_A<<4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(data)), uintptr(flag))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_FsetxattrAddr() *(func(fd int, attr string, data []byte, flag int) (err error))\n\nvar Fsetxattr = enter_Fsetxattr\n\nfunc enter_Fsetxattr(fd int, attr string, data []byte, flag int) (err error) {\n\tfuncref := get_FsetxattrAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___FSETXATTR_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Fsetxattr\n\t} else {\n\t\t*funcref = error_Fsetxattr\n\t}\n\treturn (*funcref)(fd, attr, data, flag)\n}\n\nfunc error_Fsetxattr(fd int, attr string, data []byte, flag int) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___ACCEPT_A<<4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\truntime.ExitSyscall()\n\tfd = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___ACCEPT4_A<<4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags))\n\truntime.ExitSyscall()\n\tfd = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_accept4Addr() *(func(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error))\n\nvar accept4 = enter_accept4\n\nfunc enter_accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tfuncref := get_accept4Addr()\n\tif funcptrtest(GetZosLibVec()+SYS___ACCEPT4_A<<4, \"\") == 0 {\n\t\t*funcref = impl_accept4\n\t} else {\n\t\t*funcref = error_accept4\n\t}\n\treturn (*funcref)(s, rsa, addrlen, flags)\n}\n\nfunc error_accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tfd = -1\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___BIND_A<<4, uintptr(s), uintptr(addr), uintptr(addrlen))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___CONNECT_A<<4, uintptr(s), uintptr(addr), uintptr(addrlen))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_GETGROUPS<<4, uintptr(n), uintptr(unsafe.Pointer(list)))\n\tnn = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETGROUPS<<4, uintptr(n), uintptr(unsafe.Pointer(list)))\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_GETSOCKOPT<<4, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETSOCKOPT<<4, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SOCKET<<4, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SOCKETPAIR<<4, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)))\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___GETPEERNAME_A<<4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___GETSOCKNAME_A<<4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Removexattr(path string, attr string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___REMOVEXATTR_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_RemovexattrAddr() *(func(path string, attr string) (err error))\n\nvar Removexattr = enter_Removexattr\n\nfunc enter_Removexattr(path string, attr string) (err error) {\n\tfuncref := get_RemovexattrAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___REMOVEXATTR_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Removexattr\n\t} else {\n\t\t*funcref = error_Removexattr\n\t}\n\treturn (*funcref)(path, attr)\n}\n\nfunc error_Removexattr(path string, attr string) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___RECVFROM_A<<4, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\truntime.ExitSyscall()\n\tn = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___SENDTO_A<<4, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___RECVMSG_A<<4, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\truntime.ExitSyscall()\n\tn = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___SENDMSG_A<<4, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\truntime.ExitSyscall()\n\tn = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_MMAP<<4, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))\n\truntime.ExitSyscall()\n\tret = uintptr(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_MUNMAP<<4, uintptr(addr), uintptr(length))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req int, arg uintptr) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_IOCTL<<4, uintptr(fd), uintptr(req), uintptr(arg))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req int, arg unsafe.Pointer) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_IOCTL<<4, uintptr(fd), uintptr(req), uintptr(arg))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc shmat(id int, addr uintptr, flag int) (ret uintptr, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SHMAT<<4, uintptr(id), uintptr(addr), uintptr(flag))\n\truntime.ExitSyscall()\n\tret = uintptr(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc shmctl(id int, cmd int, buf *SysvShmDesc) (result int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SHMCTL64<<4, uintptr(id), uintptr(cmd), uintptr(unsafe.Pointer(buf)))\n\truntime.ExitSyscall()\n\tresult = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc shmdt(addr uintptr) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SHMDT<<4, uintptr(addr))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc shmget(key int, size int, flag int) (id int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SHMGET<<4, uintptr(key), uintptr(size), uintptr(flag))\n\truntime.ExitSyscall()\n\tid = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___ACCESS_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___CHDIR_A<<4, uintptr(unsafe.Pointer(_p0)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___CHOWN_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___CHMOD_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Creat(path string, mode uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___CREAT_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\truntime.ExitSyscall()\n\tfd = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(oldfd int) (fd int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_DUP<<4, uintptr(oldfd))\n\truntime.ExitSyscall()\n\tfd = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(oldfd int, newfd int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_DUP2<<4, uintptr(oldfd), uintptr(newfd))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Dup3(oldfd int, newfd int, flags int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_DUP3<<4, uintptr(oldfd), uintptr(newfd), uintptr(flags))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_Dup3Addr() *(func(oldfd int, newfd int, flags int) (err error))\n\nvar Dup3 = enter_Dup3\n\nfunc enter_Dup3(oldfd int, newfd int, flags int) (err error) {\n\tfuncref := get_Dup3Addr()\n\tif funcptrtest(GetZosLibVec()+SYS_DUP3<<4, \"\") == 0 {\n\t\t*funcref = impl_Dup3\n\t} else {\n\t\t*funcref = error_Dup3\n\t}\n\treturn (*funcref)(oldfd, newfd, flags)\n}\n\nfunc error_Dup3(oldfd int, newfd int, flags int) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Dirfd(dirp uintptr) (fd int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_DIRFD<<4, uintptr(dirp))\n\truntime.ExitSyscall()\n\tfd = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_DirfdAddr() *(func(dirp uintptr) (fd int, err error))\n\nvar Dirfd = enter_Dirfd\n\nfunc enter_Dirfd(dirp uintptr) (fd int, err error) {\n\tfuncref := get_DirfdAddr()\n\tif funcptrtest(GetZosLibVec()+SYS_DIRFD<<4, \"\") == 0 {\n\t\t*funcref = impl_Dirfd\n\t} else {\n\t\t*funcref = error_Dirfd\n\t}\n\treturn (*funcref)(dirp)\n}\n\nfunc error_Dirfd(dirp uintptr) (fd int, err error) {\n\tfd = -1\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_EpollCreate(size int) (fd int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_EPOLL_CREATE<<4, uintptr(size))\n\truntime.ExitSyscall()\n\tfd = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_EpollCreateAddr() *(func(size int) (fd int, err error))\n\nvar EpollCreate = enter_EpollCreate\n\nfunc enter_EpollCreate(size int) (fd int, err error) {\n\tfuncref := get_EpollCreateAddr()\n\tif funcptrtest(GetZosLibVec()+SYS_EPOLL_CREATE<<4, \"\") == 0 {\n\t\t*funcref = impl_EpollCreate\n\t} else {\n\t\t*funcref = error_EpollCreate\n\t}\n\treturn (*funcref)(size)\n}\n\nfunc error_EpollCreate(size int) (fd int, err error) {\n\tfd = -1\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_EpollCreate1(flags int) (fd int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_EPOLL_CREATE1<<4, uintptr(flags))\n\truntime.ExitSyscall()\n\tfd = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_EpollCreate1Addr() *(func(flags int) (fd int, err error))\n\nvar EpollCreate1 = enter_EpollCreate1\n\nfunc enter_EpollCreate1(flags int) (fd int, err error) {\n\tfuncref := get_EpollCreate1Addr()\n\tif funcptrtest(GetZosLibVec()+SYS_EPOLL_CREATE1<<4, \"\") == 0 {\n\t\t*funcref = impl_EpollCreate1\n\t} else {\n\t\t*funcref = error_EpollCreate1\n\t}\n\treturn (*funcref)(flags)\n}\n\nfunc error_EpollCreate1(flags int) (fd int, err error) {\n\tfd = -1\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_EPOLL_CTL<<4, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_EpollCtlAddr() *(func(epfd int, op int, fd int, event *EpollEvent) (err error))\n\nvar EpollCtl = enter_EpollCtl\n\nfunc enter_EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {\n\tfuncref := get_EpollCtlAddr()\n\tif funcptrtest(GetZosLibVec()+SYS_EPOLL_CTL<<4, \"\") == 0 {\n\t\t*funcref = impl_EpollCtl\n\t} else {\n\t\t*funcref = error_EpollCtl\n\t}\n\treturn (*funcref)(epfd, op, fd, event)\n}\n\nfunc error_EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_EpollPwait(epfd int, events []EpollEvent, msec int, sigmask *int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_EPOLL_PWAIT<<4, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), uintptr(unsafe.Pointer(sigmask)))\n\truntime.ExitSyscall()\n\tn = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_EpollPwaitAddr() *(func(epfd int, events []EpollEvent, msec int, sigmask *int) (n int, err error))\n\nvar EpollPwait = enter_EpollPwait\n\nfunc enter_EpollPwait(epfd int, events []EpollEvent, msec int, sigmask *int) (n int, err error) {\n\tfuncref := get_EpollPwaitAddr()\n\tif funcptrtest(GetZosLibVec()+SYS_EPOLL_PWAIT<<4, \"\") == 0 {\n\t\t*funcref = impl_EpollPwait\n\t} else {\n\t\t*funcref = error_EpollPwait\n\t}\n\treturn (*funcref)(epfd, events, msec, sigmask)\n}\n\nfunc error_EpollPwait(epfd int, events []EpollEvent, msec int, sigmask *int) (n int, err error) {\n\tn = -1\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_EPOLL_WAIT<<4, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec))\n\truntime.ExitSyscall()\n\tn = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_EpollWaitAddr() *(func(epfd int, events []EpollEvent, msec int) (n int, err error))\n\nvar EpollWait = enter_EpollWait\n\nfunc enter_EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tfuncref := get_EpollWaitAddr()\n\tif funcptrtest(GetZosLibVec()+SYS_EPOLL_WAIT<<4, \"\") == 0 {\n\t\t*funcref = impl_EpollWait\n\t} else {\n\t\t*funcref = error_EpollWait\n\t}\n\treturn (*funcref)(epfd, events, msec)\n}\n\nfunc error_EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tn = -1\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Errno2() (er2 int) {\n\truntime.EnterSyscall()\n\tr0, _, _ := CallLeFuncWithErr(GetZosLibVec() + SYS___ERRNO2<<4)\n\truntime.ExitSyscall()\n\ter2 = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Eventfd(initval uint, flags int) (fd int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_EVENTFD<<4, uintptr(initval), uintptr(flags))\n\truntime.ExitSyscall()\n\tfd = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_EventfdAddr() *(func(initval uint, flags int) (fd int, err error))\n\nvar Eventfd = enter_Eventfd\n\nfunc enter_Eventfd(initval uint, flags int) (fd int, err error) {\n\tfuncref := get_EventfdAddr()\n\tif funcptrtest(GetZosLibVec()+SYS_EVENTFD<<4, \"\") == 0 {\n\t\t*funcref = impl_Eventfd\n\t} else {\n\t\t*funcref = error_Eventfd\n\t}\n\treturn (*funcref)(initval, flags)\n}\n\nfunc error_Eventfd(initval uint, flags int) (fd int, err error) {\n\tfd = -1\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\truntime.EnterSyscall()\n\tCallLeFuncWithErr(GetZosLibVec()+SYS_EXIT<<4, uintptr(code))\n\truntime.ExitSyscall()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___FACCESSAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_FaccessatAddr() *(func(dirfd int, path string, mode uint32, flags int) (err error))\n\nvar Faccessat = enter_Faccessat\n\nfunc enter_Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tfuncref := get_FaccessatAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___FACCESSAT_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Faccessat\n\t} else {\n\t\t*funcref = error_Faccessat\n\t}\n\treturn (*funcref)(dirfd, path, mode, flags)\n}\n\nfunc error_Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FCHDIR<<4, uintptr(fd))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FCHMOD<<4, uintptr(fd), uintptr(mode))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___FCHMODAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_FchmodatAddr() *(func(dirfd int, path string, mode uint32, flags int) (err error))\n\nvar Fchmodat = enter_Fchmodat\n\nfunc enter_Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tfuncref := get_FchmodatAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___FCHMODAT_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Fchmodat\n\t} else {\n\t\t*funcref = error_Fchmodat\n\t}\n\treturn (*funcref)(dirfd, path, mode, flags)\n}\n\nfunc error_Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FCHOWN<<4, uintptr(fd), uintptr(uid), uintptr(gid))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Fchownat(fd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___FCHOWNAT_A<<4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_FchownatAddr() *(func(fd int, path string, uid int, gid int, flags int) (err error))\n\nvar Fchownat = enter_Fchownat\n\nfunc enter_Fchownat(fd int, path string, uid int, gid int, flags int) (err error) {\n\tfuncref := get_FchownatAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___FCHOWNAT_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Fchownat\n\t} else {\n\t\t*funcref = error_Fchownat\n\t}\n\treturn (*funcref)(fd, path, uid, gid, flags)\n}\n\nfunc error_Fchownat(fd int, path string, uid int, gid int, flags int) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc FcntlInt(fd uintptr, cmd int, arg int) (retval int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FCNTL<<4, uintptr(fd), uintptr(cmd), uintptr(arg))\n\truntime.ExitSyscall()\n\tretval = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Fdatasync(fd int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FDATASYNC<<4, uintptr(fd))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_FdatasyncAddr() *(func(fd int) (err error))\n\nvar Fdatasync = enter_Fdatasync\n\nfunc enter_Fdatasync(fd int) (err error) {\n\tfuncref := get_FdatasyncAddr()\n\tif funcptrtest(GetZosLibVec()+SYS_FDATASYNC<<4, \"\") == 0 {\n\t\t*funcref = impl_Fdatasync\n\t} else {\n\t\t*funcref = error_Fdatasync\n\t}\n\treturn (*funcref)(fd)\n}\n\nfunc error_Fdatasync(fd int) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstat(fd int, stat *Stat_LE_t) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FSTAT<<4, uintptr(fd), uintptr(unsafe.Pointer(stat)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_fstatat(dirfd int, path string, stat *Stat_LE_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___FSTATAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_fstatatAddr() *(func(dirfd int, path string, stat *Stat_LE_t, flags int) (err error))\n\nvar fstatat = enter_fstatat\n\nfunc enter_fstatat(dirfd int, path string, stat *Stat_LE_t, flags int) (err error) {\n\tfuncref := get_fstatatAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___FSTATAT_A<<4, \"\") == 0 {\n\t\t*funcref = impl_fstatat\n\t} else {\n\t\t*funcref = error_fstatat\n\t}\n\treturn (*funcref)(dirfd, path, stat, flags)\n}\n\nfunc error_fstatat(dirfd int, path string, stat *Stat_LE_t, flags int) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Lgetxattr(link string, attr string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p2 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___LGETXATTR_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)))\n\truntime.ExitSyscall()\n\tsz = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_LgetxattrAddr() *(func(link string, attr string, dest []byte) (sz int, err error))\n\nvar Lgetxattr = enter_Lgetxattr\n\nfunc enter_Lgetxattr(link string, attr string, dest []byte) (sz int, err error) {\n\tfuncref := get_LgetxattrAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___LGETXATTR_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Lgetxattr\n\t} else {\n\t\t*funcref = error_Lgetxattr\n\t}\n\treturn (*funcref)(link, attr, dest)\n}\n\nfunc error_Lgetxattr(link string, attr string, dest []byte) (sz int, err error) {\n\tsz = -1\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Lsetxattr(path string, attr string, data []byte, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(data) > 0 {\n\t\t_p2 = unsafe.Pointer(&data[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___LSETXATTR_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_LsetxattrAddr() *(func(path string, attr string, data []byte, flags int) (err error))\n\nvar Lsetxattr = enter_Lsetxattr\n\nfunc enter_Lsetxattr(path string, attr string, data []byte, flags int) (err error) {\n\tfuncref := get_LsetxattrAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___LSETXATTR_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Lsetxattr\n\t} else {\n\t\t*funcref = error_Lsetxattr\n\t}\n\treturn (*funcref)(path, attr, data, flags)\n}\n\nfunc error_Lsetxattr(path string, attr string, data []byte, flags int) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Fstatfs(fd int, buf *Statfs_t) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FSTATFS<<4, uintptr(fd), uintptr(unsafe.Pointer(buf)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_FstatfsAddr() *(func(fd int, buf *Statfs_t) (err error))\n\nvar Fstatfs = enter_Fstatfs\n\nfunc enter_Fstatfs(fd int, buf *Statfs_t) (err error) {\n\tfuncref := get_FstatfsAddr()\n\tif funcptrtest(GetZosLibVec()+SYS_FSTATFS<<4, \"\") == 0 {\n\t\t*funcref = impl_Fstatfs\n\t} else {\n\t\t*funcref = error_Fstatfs\n\t}\n\treturn (*funcref)(fd, buf)\n}\n\nfunc error_Fstatfs(fd int, buf *Statfs_t) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatvfs(fd int, stat *Statvfs_t) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FSTATVFS<<4, uintptr(fd), uintptr(unsafe.Pointer(stat)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FSYNC<<4, uintptr(fd))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Futimes(fd int, tv []Timeval) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(tv) > 0 {\n\t\t_p0 = unsafe.Pointer(&tv[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FUTIMES<<4, uintptr(fd), uintptr(_p0), uintptr(len(tv)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_FutimesAddr() *(func(fd int, tv []Timeval) (err error))\n\nvar Futimes = enter_Futimes\n\nfunc enter_Futimes(fd int, tv []Timeval) (err error) {\n\tfuncref := get_FutimesAddr()\n\tif funcptrtest(GetZosLibVec()+SYS_FUTIMES<<4, \"\") == 0 {\n\t\t*funcref = impl_Futimes\n\t} else {\n\t\t*funcref = error_Futimes\n\t}\n\treturn (*funcref)(fd, tv)\n}\n\nfunc error_Futimes(fd int, tv []Timeval) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Futimesat(dirfd int, path string, tv []Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(tv) > 0 {\n\t\t_p1 = unsafe.Pointer(&tv[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___FUTIMESAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(tv)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_FutimesatAddr() *(func(dirfd int, path string, tv []Timeval) (err error))\n\nvar Futimesat = enter_Futimesat\n\nfunc enter_Futimesat(dirfd int, path string, tv []Timeval) (err error) {\n\tfuncref := get_FutimesatAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___FUTIMESAT_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Futimesat\n\t} else {\n\t\t*funcref = error_Futimesat\n\t}\n\treturn (*funcref)(dirfd, path, tv)\n}\n\nfunc error_Futimesat(dirfd int, path string, tv []Timeval) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FTRUNCATE<<4, uintptr(fd), uintptr(length))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Getrandom(buf []byte, flags int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_GETRANDOM<<4, uintptr(_p0), uintptr(len(buf)), uintptr(flags))\n\truntime.ExitSyscall()\n\tn = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_GetrandomAddr() *(func(buf []byte, flags int) (n int, err error))\n\nvar Getrandom = enter_Getrandom\n\nfunc enter_Getrandom(buf []byte, flags int) (n int, err error) {\n\tfuncref := get_GetrandomAddr()\n\tif funcptrtest(GetZosLibVec()+SYS_GETRANDOM<<4, \"\") == 0 {\n\t\t*funcref = impl_Getrandom\n\t} else {\n\t\t*funcref = error_Getrandom\n\t}\n\treturn (*funcref)(buf, flags)\n}\n\nfunc error_Getrandom(buf []byte, flags int) (n int, err error) {\n\tn = -1\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_InotifyInit() (fd int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec() + SYS_INOTIFY_INIT<<4)\n\truntime.ExitSyscall()\n\tfd = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_InotifyInitAddr() *(func() (fd int, err error))\n\nvar InotifyInit = enter_InotifyInit\n\nfunc enter_InotifyInit() (fd int, err error) {\n\tfuncref := get_InotifyInitAddr()\n\tif funcptrtest(GetZosLibVec()+SYS_INOTIFY_INIT<<4, \"\") == 0 {\n\t\t*funcref = impl_InotifyInit\n\t} else {\n\t\t*funcref = error_InotifyInit\n\t}\n\treturn (*funcref)()\n}\n\nfunc error_InotifyInit() (fd int, err error) {\n\tfd = -1\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_InotifyInit1(flags int) (fd int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_INOTIFY_INIT1<<4, uintptr(flags))\n\truntime.ExitSyscall()\n\tfd = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_InotifyInit1Addr() *(func(flags int) (fd int, err error))\n\nvar InotifyInit1 = enter_InotifyInit1\n\nfunc enter_InotifyInit1(flags int) (fd int, err error) {\n\tfuncref := get_InotifyInit1Addr()\n\tif funcptrtest(GetZosLibVec()+SYS_INOTIFY_INIT1<<4, \"\") == 0 {\n\t\t*funcref = impl_InotifyInit1\n\t} else {\n\t\t*funcref = error_InotifyInit1\n\t}\n\treturn (*funcref)(flags)\n}\n\nfunc error_InotifyInit1(flags int) (fd int, err error) {\n\tfd = -1\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(pathname)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___INOTIFY_ADD_WATCH_A<<4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask))\n\truntime.ExitSyscall()\n\twatchdesc = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_InotifyAddWatchAddr() *(func(fd int, pathname string, mask uint32) (watchdesc int, err error))\n\nvar InotifyAddWatch = enter_InotifyAddWatch\n\nfunc enter_InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {\n\tfuncref := get_InotifyAddWatchAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___INOTIFY_ADD_WATCH_A<<4, \"\") == 0 {\n\t\t*funcref = impl_InotifyAddWatch\n\t} else {\n\t\t*funcref = error_InotifyAddWatch\n\t}\n\treturn (*funcref)(fd, pathname, mask)\n}\n\nfunc error_InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {\n\twatchdesc = -1\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_INOTIFY_RM_WATCH<<4, uintptr(fd), uintptr(watchdesc))\n\truntime.ExitSyscall()\n\tsuccess = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_InotifyRmWatchAddr() *(func(fd int, watchdesc uint32) (success int, err error))\n\nvar InotifyRmWatch = enter_InotifyRmWatch\n\nfunc enter_InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {\n\tfuncref := get_InotifyRmWatchAddr()\n\tif funcptrtest(GetZosLibVec()+SYS_INOTIFY_RM_WATCH<<4, \"\") == 0 {\n\t\t*funcref = impl_InotifyRmWatch\n\t} else {\n\t\t*funcref = error_InotifyRmWatch\n\t}\n\treturn (*funcref)(fd, watchdesc)\n}\n\nfunc error_InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {\n\tsuccess = -1\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Listxattr(path string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___LISTXATTR_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))\n\truntime.ExitSyscall()\n\tsz = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_ListxattrAddr() *(func(path string, dest []byte) (sz int, err error))\n\nvar Listxattr = enter_Listxattr\n\nfunc enter_Listxattr(path string, dest []byte) (sz int, err error) {\n\tfuncref := get_ListxattrAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___LISTXATTR_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Listxattr\n\t} else {\n\t\t*funcref = error_Listxattr\n\t}\n\treturn (*funcref)(path, dest)\n}\n\nfunc error_Listxattr(path string, dest []byte) (sz int, err error) {\n\tsz = -1\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Llistxattr(path string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___LLISTXATTR_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))\n\truntime.ExitSyscall()\n\tsz = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_LlistxattrAddr() *(func(path string, dest []byte) (sz int, err error))\n\nvar Llistxattr = enter_Llistxattr\n\nfunc enter_Llistxattr(path string, dest []byte) (sz int, err error) {\n\tfuncref := get_LlistxattrAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___LLISTXATTR_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Llistxattr\n\t} else {\n\t\t*funcref = error_Llistxattr\n\t}\n\treturn (*funcref)(path, dest)\n}\n\nfunc error_Llistxattr(path string, dest []byte) (sz int, err error) {\n\tsz = -1\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Lremovexattr(path string, attr string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___LREMOVEXATTR_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_LremovexattrAddr() *(func(path string, attr string) (err error))\n\nvar Lremovexattr = enter_Lremovexattr\n\nfunc enter_Lremovexattr(path string, attr string) (err error) {\n\tfuncref := get_LremovexattrAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___LREMOVEXATTR_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Lremovexattr\n\t} else {\n\t\t*funcref = error_Lremovexattr\n\t}\n\treturn (*funcref)(path, attr)\n}\n\nfunc error_Lremovexattr(path string, attr string) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Lutimes(path string, tv []Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(tv) > 0 {\n\t\t_p1 = unsafe.Pointer(&tv[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___LUTIMES_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(tv)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_LutimesAddr() *(func(path string, tv []Timeval) (err error))\n\nvar Lutimes = enter_Lutimes\n\nfunc enter_Lutimes(path string, tv []Timeval) (err error) {\n\tfuncref := get_LutimesAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___LUTIMES_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Lutimes\n\t} else {\n\t\t*funcref = error_Lutimes\n\t}\n\treturn (*funcref)(path, tv)\n}\n\nfunc error_Lutimes(path string, tv []Timeval) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_MPROTECT<<4, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_MSYNC<<4, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Console2(cmsg *ConsMsg2, modstr *byte, concmd *uint32) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___CONSOLE2<<4, uintptr(unsafe.Pointer(cmsg)), uintptr(unsafe.Pointer(modstr)), uintptr(unsafe.Pointer(concmd)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Poll(fds []PollFd, timeout int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(fds) > 0 {\n\t\t_p0 = unsafe.Pointer(&fds[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_POLL<<4, uintptr(_p0), uintptr(len(fds)), uintptr(timeout))\n\truntime.ExitSyscall()\n\tn = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readdir_r(dirp uintptr, entry *direntLE, result **direntLE) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___READDIR_R_A<<4, uintptr(dirp), uintptr(unsafe.Pointer(entry)), uintptr(unsafe.Pointer(result)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___STATFS_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_StatfsAddr() *(func(path string, buf *Statfs_t) (err error))\n\nvar Statfs = enter_Statfs\n\nfunc enter_Statfs(path string, buf *Statfs_t) (err error) {\n\tfuncref := get_StatfsAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___STATFS_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Statfs\n\t} else {\n\t\t*funcref = error_Statfs\n\t}\n\treturn (*funcref)(path, buf)\n}\n\nfunc error_Statfs(path string, buf *Statfs_t) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Syncfs(fd int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SYNCFS<<4, uintptr(fd))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_SyncfsAddr() *(func(fd int) (err error))\n\nvar Syncfs = enter_Syncfs\n\nfunc enter_Syncfs(fd int) (err error) {\n\tfuncref := get_SyncfsAddr()\n\tif funcptrtest(GetZosLibVec()+SYS_SYNCFS<<4, \"\") == 0 {\n\t\t*funcref = impl_Syncfs\n\t} else {\n\t\t*funcref = error_Syncfs\n\t}\n\treturn (*funcref)(fd)\n}\n\nfunc error_Syncfs(fd int) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Times(tms *Tms) (ticks uintptr, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_TIMES<<4, uintptr(unsafe.Pointer(tms)))\n\truntime.ExitSyscall()\n\tticks = uintptr(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc W_Getmntent(buff *byte, size int) (lastsys int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_W_GETMNTENT<<4, uintptr(unsafe.Pointer(buff)), uintptr(size))\n\truntime.ExitSyscall()\n\tlastsys = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc W_Getmntent_A(buff *byte, size int) (lastsys int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___W_GETMNTENT_A<<4, uintptr(unsafe.Pointer(buff)), uintptr(size))\n\truntime.ExitSyscall()\n\tlastsys = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mount_LE(path string, filesystem string, fstype string, mtm uint32, parmlen int32, parm string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(filesystem)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 *byte\n\t_p2, err = BytePtrFromString(fstype)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p3 *byte\n\t_p3, err = BytePtrFromString(parm)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MOUNT_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(mtm), uintptr(parmlen), uintptr(unsafe.Pointer(_p3)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc unmount_LE(filesystem string, mtm int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(filesystem)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___UMOUNT_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(mtm))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___CHROOT_A<<4, uintptr(unsafe.Pointer(_p0)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nmsgsfds int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (ret int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SELECT<<4, uintptr(nmsgsfds), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)))\n\truntime.ExitSyscall()\n\tret = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Uname(buf *Utsname) (err error) {\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_____OSNAME_A<<4, uintptr(unsafe.Pointer(buf)))\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Unshare(flags int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_UNSHARE<<4, uintptr(flags))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_UnshareAddr() *(func(flags int) (err error))\n\nvar Unshare = enter_Unshare\n\nfunc enter_Unshare(flags int) (err error) {\n\tfuncref := get_UnshareAddr()\n\tif funcptrtest(GetZosLibVec()+SYS_UNSHARE<<4, \"\") == 0 {\n\t\t*funcref = impl_Unshare\n\t} else {\n\t\t*funcref = error_Unshare\n\t}\n\treturn (*funcref)(flags)\n}\n\nfunc error_Unshare(flags int) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gethostname(buf []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___GETHOSTNAME_A<<4, uintptr(_p0), uintptr(len(buf)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := CallLeFuncWithErr(GetZosLibVec() + SYS_GETGID<<4)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := CallLeFuncWithErr(GetZosLibVec() + SYS_GETPID<<4)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_GETPGID<<4, uintptr(pid))\n\tpgid = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (pid int) {\n\tr0, _, _ := CallLeFuncWithErr(GetZosLibVec() + SYS_GETPPID<<4)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_GETPRIORITY<<4, uintptr(which), uintptr(who))\n\truntime.ExitSyscall()\n\tprio = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_GETRLIMIT<<4, uintptr(resource), uintptr(unsafe.Pointer(rlim)))\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getrusage(who int, rusage *rusage_zos) (err error) {\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_GETRUSAGE<<4, uintptr(who), uintptr(unsafe.Pointer(rusage)))\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\truntime.EnterSyscall()\n\tr0, _, _ := CallLeFuncWithErr(GetZosLibVec() + SYS_GETEGID<<4)\n\truntime.ExitSyscall()\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\truntime.EnterSyscall()\n\tr0, _, _ := CallLeFuncWithErr(GetZosLibVec() + SYS_GETEUID<<4)\n\truntime.ExitSyscall()\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_GETSID<<4, uintptr(pid))\n\tsid = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := CallLeFuncWithErr(GetZosLibVec() + SYS_GETUID<<4)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, sig Signal) (err error) {\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_KILL<<4, uintptr(pid), uintptr(sig))\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___LCHOWN_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___LINK_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Linkat(oldDirFd int, oldPath string, newDirFd int, newPath string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldPath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newPath)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___LINKAT_A<<4, uintptr(oldDirFd), uintptr(unsafe.Pointer(_p0)), uintptr(newDirFd), uintptr(unsafe.Pointer(_p1)), uintptr(flags))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_LinkatAddr() *(func(oldDirFd int, oldPath string, newDirFd int, newPath string, flags int) (err error))\n\nvar Linkat = enter_Linkat\n\nfunc enter_Linkat(oldDirFd int, oldPath string, newDirFd int, newPath string, flags int) (err error) {\n\tfuncref := get_LinkatAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___LINKAT_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Linkat\n\t} else {\n\t\t*funcref = error_Linkat\n\t}\n\treturn (*funcref)(oldDirFd, oldPath, newDirFd, newPath, flags)\n}\n\nfunc error_Linkat(oldDirFd int, oldPath string, newDirFd int, newPath string, flags int) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_LISTEN<<4, uintptr(s), uintptr(n))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc lstat(path string, stat *Stat_LE_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___LSTAT_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MKDIR_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MKDIRAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_MkdiratAddr() *(func(dirfd int, path string, mode uint32) (err error))\n\nvar Mkdirat = enter_Mkdirat\n\nfunc enter_Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tfuncref := get_MkdiratAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___MKDIRAT_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Mkdirat\n\t} else {\n\t\t*funcref = error_Mkdirat\n\t}\n\treturn (*funcref)(dirfd, path, mode)\n}\n\nfunc error_Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MKFIFO_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MKNOD_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MKNODAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_MknodatAddr() *(func(dirfd int, path string, mode uint32, dev int) (err error))\n\nvar Mknodat = enter_Mknodat\n\nfunc enter_Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tfuncref := get_MknodatAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___MKNODAT_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Mknodat\n\t} else {\n\t\t*funcref = error_Mknodat\n\t}\n\treturn (*funcref)(dirfd, path, mode, dev)\n}\n\nfunc error_Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_PivotRoot(newroot string, oldroot string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(newroot)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(oldroot)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___PIVOT_ROOT_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_PivotRootAddr() *(func(newroot string, oldroot string) (err error))\n\nvar PivotRoot = enter_PivotRoot\n\nfunc enter_PivotRoot(newroot string, oldroot string) (err error) {\n\tfuncref := get_PivotRootAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___PIVOT_ROOT_A<<4, \"\") == 0 {\n\t\t*funcref = impl_PivotRoot\n\t} else {\n\t\t*funcref = error_PivotRoot\n\t}\n\treturn (*funcref)(newroot, oldroot)\n}\n\nfunc error_PivotRoot(newroot string, oldroot string) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_PREAD<<4, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset))\n\truntime.ExitSyscall()\n\tn = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_PWRITE<<4, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset))\n\truntime.ExitSyscall()\n\tn = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___PRCTL_A<<4, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_PrctlAddr() *(func(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error))\n\nvar Prctl = enter_Prctl\n\nfunc enter_Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {\n\tfuncref := get_PrctlAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___PRCTL_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Prctl\n\t} else {\n\t\t*funcref = error_Prctl\n\t}\n\treturn (*funcref)(option, arg2, arg3, arg4, arg5)\n}\n\nfunc error_Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) {\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_PRLIMIT<<4, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)))\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_PrlimitAddr() *(func(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error))\n\nvar Prlimit = enter_Prlimit\n\nfunc enter_Prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) {\n\tfuncref := get_PrlimitAddr()\n\tif funcptrtest(GetZosLibVec()+SYS_PRLIMIT<<4, \"\") == 0 {\n\t\t*funcref = impl_Prlimit\n\t} else {\n\t\t*funcref = error_Prlimit\n\t}\n\treturn (*funcref)(pid, resource, newlimit, old)\n}\n\nfunc error_Prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___RENAME_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___RENAMEAT_A<<4, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_RenameatAddr() *(func(olddirfd int, oldpath string, newdirfd int, newpath string) (err error))\n\nvar Renameat = enter_Renameat\n\nfunc enter_Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tfuncref := get_RenameatAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___RENAMEAT_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Renameat\n\t} else {\n\t\t*funcref = error_Renameat\n\t}\n\treturn (*funcref)(olddirfd, oldpath, newdirfd, newpath)\n}\n\nfunc error_Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___RENAMEAT2_A<<4, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_Renameat2Addr() *(func(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error))\n\nvar Renameat2 = enter_Renameat2\n\nfunc enter_Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) {\n\tfuncref := get_Renameat2Addr()\n\tif funcptrtest(GetZosLibVec()+SYS___RENAMEAT2_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Renameat2\n\t} else {\n\t\t*funcref = error_Renameat2\n\t}\n\treturn (*funcref)(olddirfd, oldpath, newdirfd, newpath, flags)\n}\n\nfunc error_Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___RMDIR_A<<4, uintptr(unsafe.Pointer(_p0)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_LSEEK<<4, uintptr(fd), uintptr(offset), uintptr(whence))\n\truntime.ExitSyscall()\n\toff = int64(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETEGID<<4, uintptr(egid))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETEUID<<4, uintptr(euid))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Sethostname(p []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___SETHOSTNAME_A<<4, uintptr(_p0), uintptr(len(p)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_SethostnameAddr() *(func(p []byte) (err error))\n\nvar Sethostname = enter_Sethostname\n\nfunc enter_Sethostname(p []byte) (err error) {\n\tfuncref := get_SethostnameAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___SETHOSTNAME_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Sethostname\n\t} else {\n\t\t*funcref = error_Sethostname\n\t}\n\treturn (*funcref)(p)\n}\n\nfunc error_Sethostname(p []byte) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Setns(fd int, nstype int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETNS<<4, uintptr(fd), uintptr(nstype))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_SetnsAddr() *(func(fd int, nstype int) (err error))\n\nvar Setns = enter_Setns\n\nfunc enter_Setns(fd int, nstype int) (err error) {\n\tfuncref := get_SetnsAddr()\n\tif funcptrtest(GetZosLibVec()+SYS_SETNS<<4, \"\") == 0 {\n\t\t*funcref = impl_Setns\n\t} else {\n\t\t*funcref = error_Setns\n\t}\n\treturn (*funcref)(fd, nstype)\n}\n\nfunc error_Setns(fd int, nstype int) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETPRIORITY<<4, uintptr(which), uintptr(who), uintptr(prio))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETPGID<<4, uintptr(pid), uintptr(pgid))\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setrlimit(resource int, lim *Rlimit) (err error) {\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETRLIMIT<<4, uintptr(resource), uintptr(unsafe.Pointer(lim)))\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETREGID<<4, uintptr(rgid), uintptr(egid))\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETREUID<<4, uintptr(ruid), uintptr(euid))\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec() + SYS_SETSID<<4)\n\tpid = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETUID<<4, uintptr(uid))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(uid int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETGID<<4, uintptr(uid))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SHUTDOWN<<4, uintptr(fd), uintptr(how))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc stat(path string, statLE *Stat_LE_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___STAT_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(statLE)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___SYMLINK_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Symlinkat(oldPath string, dirfd int, newPath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldPath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newPath)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___SYMLINKAT_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(dirfd), uintptr(unsafe.Pointer(_p1)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_SymlinkatAddr() *(func(oldPath string, dirfd int, newPath string) (err error))\n\nvar Symlinkat = enter_Symlinkat\n\nfunc enter_Symlinkat(oldPath string, dirfd int, newPath string) (err error) {\n\tfuncref := get_SymlinkatAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___SYMLINKAT_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Symlinkat\n\t} else {\n\t\t*funcref = error_Symlinkat\n\t}\n\treturn (*funcref)(oldPath, dirfd, newPath)\n}\n\nfunc error_Symlinkat(oldPath string, dirfd int, newPath string) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() {\n\truntime.EnterSyscall()\n\tCallLeFuncWithErr(GetZosLibVec() + SYS_SYNC<<4)\n\truntime.ExitSyscall()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___TRUNCATE_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(length))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tcgetattr(fildes int, termptr *Termios) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_TCGETATTR<<4, uintptr(fildes), uintptr(unsafe.Pointer(termptr)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tcsetattr(fildes int, when int, termptr *Termios) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_TCSETATTR<<4, uintptr(fildes), uintptr(when), uintptr(unsafe.Pointer(termptr)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(mask int) (oldmask int) {\n\truntime.EnterSyscall()\n\tr0, _, _ := CallLeFuncWithErr(GetZosLibVec()+SYS_UMASK<<4, uintptr(mask))\n\truntime.ExitSyscall()\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___UNLINK_A<<4, uintptr(unsafe.Pointer(_p0)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___UNLINKAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_UnlinkatAddr() *(func(dirfd int, path string, flags int) (err error))\n\nvar Unlinkat = enter_Unlinkat\n\nfunc enter_Unlinkat(dirfd int, path string, flags int) (err error) {\n\tfuncref := get_UnlinkatAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___UNLINKAT_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Unlinkat\n\t} else {\n\t\t*funcref = error_Unlinkat\n\t}\n\treturn (*funcref)(dirfd, path, flags)\n}\n\nfunc error_Unlinkat(dirfd int, path string, flags int) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, utim *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___UTIME_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(utim)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___OPEN_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\truntime.ExitSyscall()\n\tfd = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___OPENAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode))\n\truntime.ExitSyscall()\n\tfd = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_openatAddr() *(func(dirfd int, path string, flags int, mode uint32) (fd int, err error))\n\nvar openat = enter_openat\n\nfunc enter_openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {\n\tfuncref := get_openatAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___OPENAT_A<<4, \"\") == 0 {\n\t\t*funcref = impl_openat\n\t} else {\n\t\t*funcref = error_openat\n\t}\n\treturn (*funcref)(dirfd, path, flags, mode)\n}\n\nfunc error_openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {\n\tfd = -1\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_openat2(dirfd int, path string, open_how *OpenHow, size int) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___OPENAT2_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(open_how)), uintptr(size))\n\truntime.ExitSyscall()\n\tfd = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_openat2Addr() *(func(dirfd int, path string, open_how *OpenHow, size int) (fd int, err error))\n\nvar openat2 = enter_openat2\n\nfunc enter_openat2(dirfd int, path string, open_how *OpenHow, size int) (fd int, err error) {\n\tfuncref := get_openat2Addr()\n\tif funcptrtest(GetZosLibVec()+SYS___OPENAT2_A<<4, \"\") == 0 {\n\t\t*funcref = impl_openat2\n\t} else {\n\t\t*funcref = error_openat2\n\t}\n\treturn (*funcref)(dirfd, path, open_how, size)\n}\n\nfunc error_openat2(dirfd int, path string, open_how *OpenHow, size int) (fd int, err error) {\n\tfd = -1\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc remove(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_REMOVE<<4, uintptr(unsafe.Pointer(_p0)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc waitid(idType int, id int, info *Siginfo, options int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_WAITID<<4, uintptr(idType), uintptr(id), uintptr(unsafe.Pointer(info)), uintptr(options))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc waitpid(pid int, wstatus *_C_int, options int) (wpid int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_WAITPID<<4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options))\n\truntime.ExitSyscall()\n\twpid = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc gettimeofday(tv *timeval_zos) (err error) {\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_GETTIMEOFDAY<<4, uintptr(unsafe.Pointer(tv)))\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe(p *[2]_C_int) (err error) {\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_PIPE<<4, uintptr(unsafe.Pointer(p)))\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___UTIMES_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_utimensat(dirfd int, path string, ts *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___UTIMENSAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(ts)), uintptr(flags))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_utimensatAddr() *(func(dirfd int, path string, ts *[2]Timespec, flags int) (err error))\n\nvar utimensat = enter_utimensat\n\nfunc enter_utimensat(dirfd int, path string, ts *[2]Timespec, flags int) (err error) {\n\tfuncref := get_utimensatAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___UTIMENSAT_A<<4, \"\") == 0 {\n\t\t*funcref = impl_utimensat\n\t} else {\n\t\t*funcref = error_utimensat\n\t}\n\treturn (*funcref)(dirfd, path, ts, flags)\n}\n\nfunc error_utimensat(dirfd int, path string, ts *[2]Timespec, flags int) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Posix_openpt(oflag int) (fd int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_POSIX_OPENPT<<4, uintptr(oflag))\n\truntime.ExitSyscall()\n\tfd = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Grantpt(fildes int) (rc int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_GRANTPT<<4, uintptr(fildes))\n\truntime.ExitSyscall()\n\trc = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlockpt(fildes int) (rc int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_UNLOCKPT<<4, uintptr(fildes))\n\truntime.ExitSyscall()\n\trc = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go",
    "content": "// go run mksysctl_openbsd.go\n// Code generated by the command above; DO NOT EDIT.\n\n//go:build 386 && openbsd\n\npackage unix\n\ntype mibentry struct {\n\tctlname string\n\tctloid  []_C_int\n}\n\nvar sysctlMib = []mibentry{\n\t{\"ddb.console\", []_C_int{9, 6}},\n\t{\"ddb.log\", []_C_int{9, 7}},\n\t{\"ddb.max_line\", []_C_int{9, 3}},\n\t{\"ddb.max_width\", []_C_int{9, 2}},\n\t{\"ddb.panic\", []_C_int{9, 5}},\n\t{\"ddb.profile\", []_C_int{9, 9}},\n\t{\"ddb.radix\", []_C_int{9, 1}},\n\t{\"ddb.tab_stop_width\", []_C_int{9, 4}},\n\t{\"ddb.trigger\", []_C_int{9, 8}},\n\t{\"fs.posix.setuid\", []_C_int{3, 1, 1}},\n\t{\"hw.allowpowerdown\", []_C_int{6, 22}},\n\t{\"hw.byteorder\", []_C_int{6, 4}},\n\t{\"hw.cpuspeed\", []_C_int{6, 12}},\n\t{\"hw.diskcount\", []_C_int{6, 10}},\n\t{\"hw.disknames\", []_C_int{6, 8}},\n\t{\"hw.diskstats\", []_C_int{6, 9}},\n\t{\"hw.machine\", []_C_int{6, 1}},\n\t{\"hw.model\", []_C_int{6, 2}},\n\t{\"hw.ncpu\", []_C_int{6, 3}},\n\t{\"hw.ncpufound\", []_C_int{6, 21}},\n\t{\"hw.ncpuonline\", []_C_int{6, 25}},\n\t{\"hw.pagesize\", []_C_int{6, 7}},\n\t{\"hw.perfpolicy\", []_C_int{6, 23}},\n\t{\"hw.physmem\", []_C_int{6, 19}},\n\t{\"hw.power\", []_C_int{6, 26}},\n\t{\"hw.product\", []_C_int{6, 15}},\n\t{\"hw.serialno\", []_C_int{6, 17}},\n\t{\"hw.setperf\", []_C_int{6, 13}},\n\t{\"hw.smt\", []_C_int{6, 24}},\n\t{\"hw.usermem\", []_C_int{6, 20}},\n\t{\"hw.uuid\", []_C_int{6, 18}},\n\t{\"hw.vendor\", []_C_int{6, 14}},\n\t{\"hw.version\", []_C_int{6, 16}},\n\t{\"kern.allowdt\", []_C_int{1, 65}},\n\t{\"kern.allowkmem\", []_C_int{1, 52}},\n\t{\"kern.argmax\", []_C_int{1, 8}},\n\t{\"kern.audio\", []_C_int{1, 84}},\n\t{\"kern.boottime\", []_C_int{1, 21}},\n\t{\"kern.bufcachepercent\", []_C_int{1, 72}},\n\t{\"kern.ccpu\", []_C_int{1, 45}},\n\t{\"kern.clockrate\", []_C_int{1, 12}},\n\t{\"kern.consbuf\", []_C_int{1, 83}},\n\t{\"kern.consbufsize\", []_C_int{1, 82}},\n\t{\"kern.consdev\", []_C_int{1, 75}},\n\t{\"kern.cp_time\", []_C_int{1, 40}},\n\t{\"kern.cp_time2\", []_C_int{1, 71}},\n\t{\"kern.cpustats\", []_C_int{1, 85}},\n\t{\"kern.domainname\", []_C_int{1, 22}},\n\t{\"kern.file\", []_C_int{1, 73}},\n\t{\"kern.forkstat\", []_C_int{1, 42}},\n\t{\"kern.fscale\", []_C_int{1, 46}},\n\t{\"kern.fsync\", []_C_int{1, 33}},\n\t{\"kern.global_ptrace\", []_C_int{1, 81}},\n\t{\"kern.hostid\", []_C_int{1, 11}},\n\t{\"kern.hostname\", []_C_int{1, 10}},\n\t{\"kern.intrcnt.nintrcnt\", []_C_int{1, 63, 1}},\n\t{\"kern.job_control\", []_C_int{1, 19}},\n\t{\"kern.malloc.buckets\", []_C_int{1, 39, 1}},\n\t{\"kern.malloc.kmemnames\", []_C_int{1, 39, 3}},\n\t{\"kern.maxclusters\", []_C_int{1, 67}},\n\t{\"kern.maxfiles\", []_C_int{1, 7}},\n\t{\"kern.maxlocksperuid\", []_C_int{1, 70}},\n\t{\"kern.maxpartitions\", []_C_int{1, 23}},\n\t{\"kern.maxproc\", []_C_int{1, 6}},\n\t{\"kern.maxthread\", []_C_int{1, 25}},\n\t{\"kern.maxvnodes\", []_C_int{1, 5}},\n\t{\"kern.mbstat\", []_C_int{1, 59}},\n\t{\"kern.msgbuf\", []_C_int{1, 48}},\n\t{\"kern.msgbufsize\", []_C_int{1, 38}},\n\t{\"kern.nchstats\", []_C_int{1, 41}},\n\t{\"kern.netlivelocks\", []_C_int{1, 76}},\n\t{\"kern.nfiles\", []_C_int{1, 56}},\n\t{\"kern.ngroups\", []_C_int{1, 18}},\n\t{\"kern.nosuidcoredump\", []_C_int{1, 32}},\n\t{\"kern.nprocs\", []_C_int{1, 47}},\n\t{\"kern.nthreads\", []_C_int{1, 26}},\n\t{\"kern.numvnodes\", []_C_int{1, 58}},\n\t{\"kern.osrelease\", []_C_int{1, 2}},\n\t{\"kern.osrevision\", []_C_int{1, 3}},\n\t{\"kern.ostype\", []_C_int{1, 1}},\n\t{\"kern.osversion\", []_C_int{1, 27}},\n\t{\"kern.pfstatus\", []_C_int{1, 86}},\n\t{\"kern.pool_debug\", []_C_int{1, 77}},\n\t{\"kern.posix1version\", []_C_int{1, 17}},\n\t{\"kern.proc\", []_C_int{1, 66}},\n\t{\"kern.rawpartition\", []_C_int{1, 24}},\n\t{\"kern.saved_ids\", []_C_int{1, 20}},\n\t{\"kern.securelevel\", []_C_int{1, 9}},\n\t{\"kern.seminfo\", []_C_int{1, 61}},\n\t{\"kern.shminfo\", []_C_int{1, 62}},\n\t{\"kern.somaxconn\", []_C_int{1, 28}},\n\t{\"kern.sominconn\", []_C_int{1, 29}},\n\t{\"kern.splassert\", []_C_int{1, 54}},\n\t{\"kern.stackgap_random\", []_C_int{1, 50}},\n\t{\"kern.sysvipc_info\", []_C_int{1, 51}},\n\t{\"kern.sysvmsg\", []_C_int{1, 34}},\n\t{\"kern.sysvsem\", []_C_int{1, 35}},\n\t{\"kern.sysvshm\", []_C_int{1, 36}},\n\t{\"kern.timecounter.choice\", []_C_int{1, 69, 4}},\n\t{\"kern.timecounter.hardware\", []_C_int{1, 69, 3}},\n\t{\"kern.timecounter.tick\", []_C_int{1, 69, 1}},\n\t{\"kern.timecounter.timestepwarnings\", []_C_int{1, 69, 2}},\n\t{\"kern.timeout_stats\", []_C_int{1, 87}},\n\t{\"kern.tty.tk_cancc\", []_C_int{1, 44, 4}},\n\t{\"kern.tty.tk_nin\", []_C_int{1, 44, 1}},\n\t{\"kern.tty.tk_nout\", []_C_int{1, 44, 2}},\n\t{\"kern.tty.tk_rawcc\", []_C_int{1, 44, 3}},\n\t{\"kern.tty.ttyinfo\", []_C_int{1, 44, 5}},\n\t{\"kern.ttycount\", []_C_int{1, 57}},\n\t{\"kern.utc_offset\", []_C_int{1, 88}},\n\t{\"kern.version\", []_C_int{1, 4}},\n\t{\"kern.video\", []_C_int{1, 89}},\n\t{\"kern.watchdog.auto\", []_C_int{1, 64, 2}},\n\t{\"kern.watchdog.period\", []_C_int{1, 64, 1}},\n\t{\"kern.witnesswatch\", []_C_int{1, 53}},\n\t{\"kern.wxabort\", []_C_int{1, 74}},\n\t{\"net.bpf.bufsize\", []_C_int{4, 31, 1}},\n\t{\"net.bpf.maxbufsize\", []_C_int{4, 31, 2}},\n\t{\"net.inet.ah.enable\", []_C_int{4, 2, 51, 1}},\n\t{\"net.inet.ah.stats\", []_C_int{4, 2, 51, 2}},\n\t{\"net.inet.carp.allow\", []_C_int{4, 2, 112, 1}},\n\t{\"net.inet.carp.log\", []_C_int{4, 2, 112, 3}},\n\t{\"net.inet.carp.preempt\", []_C_int{4, 2, 112, 2}},\n\t{\"net.inet.carp.stats\", []_C_int{4, 2, 112, 4}},\n\t{\"net.inet.divert.recvspace\", []_C_int{4, 2, 258, 1}},\n\t{\"net.inet.divert.sendspace\", []_C_int{4, 2, 258, 2}},\n\t{\"net.inet.divert.stats\", []_C_int{4, 2, 258, 3}},\n\t{\"net.inet.esp.enable\", []_C_int{4, 2, 50, 1}},\n\t{\"net.inet.esp.stats\", []_C_int{4, 2, 50, 4}},\n\t{\"net.inet.esp.udpencap\", []_C_int{4, 2, 50, 2}},\n\t{\"net.inet.esp.udpencap_port\", []_C_int{4, 2, 50, 3}},\n\t{\"net.inet.etherip.allow\", []_C_int{4, 2, 97, 1}},\n\t{\"net.inet.etherip.stats\", []_C_int{4, 2, 97, 2}},\n\t{\"net.inet.gre.allow\", []_C_int{4, 2, 47, 1}},\n\t{\"net.inet.gre.wccp\", []_C_int{4, 2, 47, 2}},\n\t{\"net.inet.icmp.bmcastecho\", []_C_int{4, 2, 1, 2}},\n\t{\"net.inet.icmp.errppslimit\", []_C_int{4, 2, 1, 3}},\n\t{\"net.inet.icmp.maskrepl\", []_C_int{4, 2, 1, 1}},\n\t{\"net.inet.icmp.rediraccept\", []_C_int{4, 2, 1, 4}},\n\t{\"net.inet.icmp.redirtimeout\", []_C_int{4, 2, 1, 5}},\n\t{\"net.inet.icmp.stats\", []_C_int{4, 2, 1, 7}},\n\t{\"net.inet.icmp.tstamprepl\", []_C_int{4, 2, 1, 6}},\n\t{\"net.inet.igmp.stats\", []_C_int{4, 2, 2, 1}},\n\t{\"net.inet.ip.arpdown\", []_C_int{4, 2, 0, 40}},\n\t{\"net.inet.ip.arpqueued\", []_C_int{4, 2, 0, 36}},\n\t{\"net.inet.ip.arptimeout\", []_C_int{4, 2, 0, 39}},\n\t{\"net.inet.ip.encdebug\", []_C_int{4, 2, 0, 12}},\n\t{\"net.inet.ip.forwarding\", []_C_int{4, 2, 0, 1}},\n\t{\"net.inet.ip.ifq.congestion\", []_C_int{4, 2, 0, 30, 4}},\n\t{\"net.inet.ip.ifq.drops\", []_C_int{4, 2, 0, 30, 3}},\n\t{\"net.inet.ip.ifq.len\", []_C_int{4, 2, 0, 30, 1}},\n\t{\"net.inet.ip.ifq.maxlen\", []_C_int{4, 2, 0, 30, 2}},\n\t{\"net.inet.ip.maxqueue\", []_C_int{4, 2, 0, 11}},\n\t{\"net.inet.ip.mforwarding\", []_C_int{4, 2, 0, 31}},\n\t{\"net.inet.ip.mrtmfc\", []_C_int{4, 2, 0, 37}},\n\t{\"net.inet.ip.mrtproto\", []_C_int{4, 2, 0, 34}},\n\t{\"net.inet.ip.mrtstats\", []_C_int{4, 2, 0, 35}},\n\t{\"net.inet.ip.mrtvif\", []_C_int{4, 2, 0, 38}},\n\t{\"net.inet.ip.mtu\", []_C_int{4, 2, 0, 4}},\n\t{\"net.inet.ip.mtudisc\", []_C_int{4, 2, 0, 27}},\n\t{\"net.inet.ip.mtudisctimeout\", []_C_int{4, 2, 0, 28}},\n\t{\"net.inet.ip.multipath\", []_C_int{4, 2, 0, 32}},\n\t{\"net.inet.ip.portfirst\", []_C_int{4, 2, 0, 7}},\n\t{\"net.inet.ip.porthifirst\", []_C_int{4, 2, 0, 9}},\n\t{\"net.inet.ip.porthilast\", []_C_int{4, 2, 0, 10}},\n\t{\"net.inet.ip.portlast\", []_C_int{4, 2, 0, 8}},\n\t{\"net.inet.ip.redirect\", []_C_int{4, 2, 0, 2}},\n\t{\"net.inet.ip.sourceroute\", []_C_int{4, 2, 0, 5}},\n\t{\"net.inet.ip.stats\", []_C_int{4, 2, 0, 33}},\n\t{\"net.inet.ip.ttl\", []_C_int{4, 2, 0, 3}},\n\t{\"net.inet.ipcomp.enable\", []_C_int{4, 2, 108, 1}},\n\t{\"net.inet.ipcomp.stats\", []_C_int{4, 2, 108, 2}},\n\t{\"net.inet.ipip.allow\", []_C_int{4, 2, 4, 1}},\n\t{\"net.inet.ipip.stats\", []_C_int{4, 2, 4, 2}},\n\t{\"net.inet.pfsync.stats\", []_C_int{4, 2, 240, 1}},\n\t{\"net.inet.tcp.ackonpush\", []_C_int{4, 2, 6, 13}},\n\t{\"net.inet.tcp.always_keepalive\", []_C_int{4, 2, 6, 22}},\n\t{\"net.inet.tcp.baddynamic\", []_C_int{4, 2, 6, 6}},\n\t{\"net.inet.tcp.drop\", []_C_int{4, 2, 6, 19}},\n\t{\"net.inet.tcp.ecn\", []_C_int{4, 2, 6, 14}},\n\t{\"net.inet.tcp.ident\", []_C_int{4, 2, 6, 9}},\n\t{\"net.inet.tcp.keepidle\", []_C_int{4, 2, 6, 3}},\n\t{\"net.inet.tcp.keepinittime\", []_C_int{4, 2, 6, 2}},\n\t{\"net.inet.tcp.keepintvl\", []_C_int{4, 2, 6, 4}},\n\t{\"net.inet.tcp.mssdflt\", []_C_int{4, 2, 6, 11}},\n\t{\"net.inet.tcp.reasslimit\", []_C_int{4, 2, 6, 18}},\n\t{\"net.inet.tcp.rfc1323\", []_C_int{4, 2, 6, 1}},\n\t{\"net.inet.tcp.rfc3390\", []_C_int{4, 2, 6, 17}},\n\t{\"net.inet.tcp.rootonly\", []_C_int{4, 2, 6, 24}},\n\t{\"net.inet.tcp.rstppslimit\", []_C_int{4, 2, 6, 12}},\n\t{\"net.inet.tcp.sack\", []_C_int{4, 2, 6, 10}},\n\t{\"net.inet.tcp.sackholelimit\", []_C_int{4, 2, 6, 20}},\n\t{\"net.inet.tcp.slowhz\", []_C_int{4, 2, 6, 5}},\n\t{\"net.inet.tcp.stats\", []_C_int{4, 2, 6, 21}},\n\t{\"net.inet.tcp.synbucketlimit\", []_C_int{4, 2, 6, 16}},\n\t{\"net.inet.tcp.syncachelimit\", []_C_int{4, 2, 6, 15}},\n\t{\"net.inet.tcp.synhashsize\", []_C_int{4, 2, 6, 25}},\n\t{\"net.inet.tcp.synuselimit\", []_C_int{4, 2, 6, 23}},\n\t{\"net.inet.udp.baddynamic\", []_C_int{4, 2, 17, 2}},\n\t{\"net.inet.udp.checksum\", []_C_int{4, 2, 17, 1}},\n\t{\"net.inet.udp.recvspace\", []_C_int{4, 2, 17, 3}},\n\t{\"net.inet.udp.rootonly\", []_C_int{4, 2, 17, 6}},\n\t{\"net.inet.udp.sendspace\", []_C_int{4, 2, 17, 4}},\n\t{\"net.inet.udp.stats\", []_C_int{4, 2, 17, 5}},\n\t{\"net.inet6.divert.recvspace\", []_C_int{4, 24, 86, 1}},\n\t{\"net.inet6.divert.sendspace\", []_C_int{4, 24, 86, 2}},\n\t{\"net.inet6.divert.stats\", []_C_int{4, 24, 86, 3}},\n\t{\"net.inet6.icmp6.errppslimit\", []_C_int{4, 24, 30, 14}},\n\t{\"net.inet6.icmp6.mtudisc_hiwat\", []_C_int{4, 24, 30, 16}},\n\t{\"net.inet6.icmp6.mtudisc_lowat\", []_C_int{4, 24, 30, 17}},\n\t{\"net.inet6.icmp6.nd6_debug\", []_C_int{4, 24, 30, 18}},\n\t{\"net.inet6.icmp6.nd6_delay\", []_C_int{4, 24, 30, 8}},\n\t{\"net.inet6.icmp6.nd6_maxnudhint\", []_C_int{4, 24, 30, 15}},\n\t{\"net.inet6.icmp6.nd6_mmaxtries\", []_C_int{4, 24, 30, 10}},\n\t{\"net.inet6.icmp6.nd6_umaxtries\", []_C_int{4, 24, 30, 9}},\n\t{\"net.inet6.icmp6.redirtimeout\", []_C_int{4, 24, 30, 3}},\n\t{\"net.inet6.ip6.auto_flowlabel\", []_C_int{4, 24, 17, 17}},\n\t{\"net.inet6.ip6.dad_count\", []_C_int{4, 24, 17, 16}},\n\t{\"net.inet6.ip6.dad_pending\", []_C_int{4, 24, 17, 49}},\n\t{\"net.inet6.ip6.defmcasthlim\", []_C_int{4, 24, 17, 18}},\n\t{\"net.inet6.ip6.forwarding\", []_C_int{4, 24, 17, 1}},\n\t{\"net.inet6.ip6.forwsrcrt\", []_C_int{4, 24, 17, 5}},\n\t{\"net.inet6.ip6.hdrnestlimit\", []_C_int{4, 24, 17, 15}},\n\t{\"net.inet6.ip6.hlim\", []_C_int{4, 24, 17, 3}},\n\t{\"net.inet6.ip6.log_interval\", []_C_int{4, 24, 17, 14}},\n\t{\"net.inet6.ip6.maxdynroutes\", []_C_int{4, 24, 17, 48}},\n\t{\"net.inet6.ip6.maxfragpackets\", []_C_int{4, 24, 17, 9}},\n\t{\"net.inet6.ip6.maxfrags\", []_C_int{4, 24, 17, 41}},\n\t{\"net.inet6.ip6.mforwarding\", []_C_int{4, 24, 17, 42}},\n\t{\"net.inet6.ip6.mrtmfc\", []_C_int{4, 24, 17, 53}},\n\t{\"net.inet6.ip6.mrtmif\", []_C_int{4, 24, 17, 52}},\n\t{\"net.inet6.ip6.mrtproto\", []_C_int{4, 24, 17, 8}},\n\t{\"net.inet6.ip6.mtudisctimeout\", []_C_int{4, 24, 17, 50}},\n\t{\"net.inet6.ip6.multicast_mtudisc\", []_C_int{4, 24, 17, 44}},\n\t{\"net.inet6.ip6.multipath\", []_C_int{4, 24, 17, 43}},\n\t{\"net.inet6.ip6.neighborgcthresh\", []_C_int{4, 24, 17, 45}},\n\t{\"net.inet6.ip6.redirect\", []_C_int{4, 24, 17, 2}},\n\t{\"net.inet6.ip6.soiikey\", []_C_int{4, 24, 17, 54}},\n\t{\"net.inet6.ip6.sourcecheck\", []_C_int{4, 24, 17, 10}},\n\t{\"net.inet6.ip6.sourcecheck_logint\", []_C_int{4, 24, 17, 11}},\n\t{\"net.inet6.ip6.use_deprecated\", []_C_int{4, 24, 17, 21}},\n\t{\"net.key.sadb_dump\", []_C_int{4, 30, 1}},\n\t{\"net.key.spd_dump\", []_C_int{4, 30, 2}},\n\t{\"net.mpls.ifq.congestion\", []_C_int{4, 33, 3, 4}},\n\t{\"net.mpls.ifq.drops\", []_C_int{4, 33, 3, 3}},\n\t{\"net.mpls.ifq.len\", []_C_int{4, 33, 3, 1}},\n\t{\"net.mpls.ifq.maxlen\", []_C_int{4, 33, 3, 2}},\n\t{\"net.mpls.mapttl_ip\", []_C_int{4, 33, 5}},\n\t{\"net.mpls.mapttl_ip6\", []_C_int{4, 33, 6}},\n\t{\"net.mpls.ttl\", []_C_int{4, 33, 2}},\n\t{\"net.pflow.stats\", []_C_int{4, 34, 1}},\n\t{\"net.pipex.enable\", []_C_int{4, 35, 1}},\n\t{\"vm.anonmin\", []_C_int{2, 7}},\n\t{\"vm.loadavg\", []_C_int{2, 2}},\n\t{\"vm.malloc_conf\", []_C_int{2, 12}},\n\t{\"vm.maxslp\", []_C_int{2, 10}},\n\t{\"vm.nkmempages\", []_C_int{2, 6}},\n\t{\"vm.psstrings\", []_C_int{2, 3}},\n\t{\"vm.swapencrypt.enable\", []_C_int{2, 5, 0}},\n\t{\"vm.swapencrypt.keyscreated\", []_C_int{2, 5, 1}},\n\t{\"vm.swapencrypt.keysdeleted\", []_C_int{2, 5, 2}},\n\t{\"vm.uspace\", []_C_int{2, 11}},\n\t{\"vm.uvmexp\", []_C_int{2, 4}},\n\t{\"vm.vmmeter\", []_C_int{2, 1}},\n\t{\"vm.vnodemin\", []_C_int{2, 9}},\n\t{\"vm.vtextmin\", []_C_int{2, 8}},\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go",
    "content": "// go run mksysctl_openbsd.go\n// Code generated by the command above; DO NOT EDIT.\n\n//go:build amd64 && openbsd\n\npackage unix\n\ntype mibentry struct {\n\tctlname string\n\tctloid  []_C_int\n}\n\nvar sysctlMib = []mibentry{\n\t{\"ddb.console\", []_C_int{9, 6}},\n\t{\"ddb.log\", []_C_int{9, 7}},\n\t{\"ddb.max_line\", []_C_int{9, 3}},\n\t{\"ddb.max_width\", []_C_int{9, 2}},\n\t{\"ddb.panic\", []_C_int{9, 5}},\n\t{\"ddb.profile\", []_C_int{9, 9}},\n\t{\"ddb.radix\", []_C_int{9, 1}},\n\t{\"ddb.tab_stop_width\", []_C_int{9, 4}},\n\t{\"ddb.trigger\", []_C_int{9, 8}},\n\t{\"fs.posix.setuid\", []_C_int{3, 1, 1}},\n\t{\"hw.allowpowerdown\", []_C_int{6, 22}},\n\t{\"hw.byteorder\", []_C_int{6, 4}},\n\t{\"hw.cpuspeed\", []_C_int{6, 12}},\n\t{\"hw.diskcount\", []_C_int{6, 10}},\n\t{\"hw.disknames\", []_C_int{6, 8}},\n\t{\"hw.diskstats\", []_C_int{6, 9}},\n\t{\"hw.machine\", []_C_int{6, 1}},\n\t{\"hw.model\", []_C_int{6, 2}},\n\t{\"hw.ncpu\", []_C_int{6, 3}},\n\t{\"hw.ncpufound\", []_C_int{6, 21}},\n\t{\"hw.ncpuonline\", []_C_int{6, 25}},\n\t{\"hw.pagesize\", []_C_int{6, 7}},\n\t{\"hw.perfpolicy\", []_C_int{6, 23}},\n\t{\"hw.physmem\", []_C_int{6, 19}},\n\t{\"hw.power\", []_C_int{6, 26}},\n\t{\"hw.product\", []_C_int{6, 15}},\n\t{\"hw.serialno\", []_C_int{6, 17}},\n\t{\"hw.setperf\", []_C_int{6, 13}},\n\t{\"hw.smt\", []_C_int{6, 24}},\n\t{\"hw.usermem\", []_C_int{6, 20}},\n\t{\"hw.uuid\", []_C_int{6, 18}},\n\t{\"hw.vendor\", []_C_int{6, 14}},\n\t{\"hw.version\", []_C_int{6, 16}},\n\t{\"kern.allowdt\", []_C_int{1, 65}},\n\t{\"kern.allowkmem\", []_C_int{1, 52}},\n\t{\"kern.argmax\", []_C_int{1, 8}},\n\t{\"kern.audio\", []_C_int{1, 84}},\n\t{\"kern.boottime\", []_C_int{1, 21}},\n\t{\"kern.bufcachepercent\", []_C_int{1, 72}},\n\t{\"kern.ccpu\", []_C_int{1, 45}},\n\t{\"kern.clockrate\", []_C_int{1, 12}},\n\t{\"kern.consbuf\", []_C_int{1, 83}},\n\t{\"kern.consbufsize\", []_C_int{1, 82}},\n\t{\"kern.consdev\", []_C_int{1, 75}},\n\t{\"kern.cp_time\", []_C_int{1, 40}},\n\t{\"kern.cp_time2\", []_C_int{1, 71}},\n\t{\"kern.cpustats\", []_C_int{1, 85}},\n\t{\"kern.domainname\", []_C_int{1, 22}},\n\t{\"kern.file\", []_C_int{1, 73}},\n\t{\"kern.forkstat\", []_C_int{1, 42}},\n\t{\"kern.fscale\", []_C_int{1, 46}},\n\t{\"kern.fsync\", []_C_int{1, 33}},\n\t{\"kern.global_ptrace\", []_C_int{1, 81}},\n\t{\"kern.hostid\", []_C_int{1, 11}},\n\t{\"kern.hostname\", []_C_int{1, 10}},\n\t{\"kern.intrcnt.nintrcnt\", []_C_int{1, 63, 1}},\n\t{\"kern.job_control\", []_C_int{1, 19}},\n\t{\"kern.malloc.buckets\", []_C_int{1, 39, 1}},\n\t{\"kern.malloc.kmemnames\", []_C_int{1, 39, 3}},\n\t{\"kern.maxclusters\", []_C_int{1, 67}},\n\t{\"kern.maxfiles\", []_C_int{1, 7}},\n\t{\"kern.maxlocksperuid\", []_C_int{1, 70}},\n\t{\"kern.maxpartitions\", []_C_int{1, 23}},\n\t{\"kern.maxproc\", []_C_int{1, 6}},\n\t{\"kern.maxthread\", []_C_int{1, 25}},\n\t{\"kern.maxvnodes\", []_C_int{1, 5}},\n\t{\"kern.mbstat\", []_C_int{1, 59}},\n\t{\"kern.msgbuf\", []_C_int{1, 48}},\n\t{\"kern.msgbufsize\", []_C_int{1, 38}},\n\t{\"kern.nchstats\", []_C_int{1, 41}},\n\t{\"kern.netlivelocks\", []_C_int{1, 76}},\n\t{\"kern.nfiles\", []_C_int{1, 56}},\n\t{\"kern.ngroups\", []_C_int{1, 18}},\n\t{\"kern.nosuidcoredump\", []_C_int{1, 32}},\n\t{\"kern.nprocs\", []_C_int{1, 47}},\n\t{\"kern.nthreads\", []_C_int{1, 26}},\n\t{\"kern.numvnodes\", []_C_int{1, 58}},\n\t{\"kern.osrelease\", []_C_int{1, 2}},\n\t{\"kern.osrevision\", []_C_int{1, 3}},\n\t{\"kern.ostype\", []_C_int{1, 1}},\n\t{\"kern.osversion\", []_C_int{1, 27}},\n\t{\"kern.pfstatus\", []_C_int{1, 86}},\n\t{\"kern.pool_debug\", []_C_int{1, 77}},\n\t{\"kern.posix1version\", []_C_int{1, 17}},\n\t{\"kern.proc\", []_C_int{1, 66}},\n\t{\"kern.rawpartition\", []_C_int{1, 24}},\n\t{\"kern.saved_ids\", []_C_int{1, 20}},\n\t{\"kern.securelevel\", []_C_int{1, 9}},\n\t{\"kern.seminfo\", []_C_int{1, 61}},\n\t{\"kern.shminfo\", []_C_int{1, 62}},\n\t{\"kern.somaxconn\", []_C_int{1, 28}},\n\t{\"kern.sominconn\", []_C_int{1, 29}},\n\t{\"kern.splassert\", []_C_int{1, 54}},\n\t{\"kern.stackgap_random\", []_C_int{1, 50}},\n\t{\"kern.sysvipc_info\", []_C_int{1, 51}},\n\t{\"kern.sysvmsg\", []_C_int{1, 34}},\n\t{\"kern.sysvsem\", []_C_int{1, 35}},\n\t{\"kern.sysvshm\", []_C_int{1, 36}},\n\t{\"kern.timecounter.choice\", []_C_int{1, 69, 4}},\n\t{\"kern.timecounter.hardware\", []_C_int{1, 69, 3}},\n\t{\"kern.timecounter.tick\", []_C_int{1, 69, 1}},\n\t{\"kern.timecounter.timestepwarnings\", []_C_int{1, 69, 2}},\n\t{\"kern.timeout_stats\", []_C_int{1, 87}},\n\t{\"kern.tty.tk_cancc\", []_C_int{1, 44, 4}},\n\t{\"kern.tty.tk_nin\", []_C_int{1, 44, 1}},\n\t{\"kern.tty.tk_nout\", []_C_int{1, 44, 2}},\n\t{\"kern.tty.tk_rawcc\", []_C_int{1, 44, 3}},\n\t{\"kern.tty.ttyinfo\", []_C_int{1, 44, 5}},\n\t{\"kern.ttycount\", []_C_int{1, 57}},\n\t{\"kern.utc_offset\", []_C_int{1, 88}},\n\t{\"kern.version\", []_C_int{1, 4}},\n\t{\"kern.video\", []_C_int{1, 89}},\n\t{\"kern.watchdog.auto\", []_C_int{1, 64, 2}},\n\t{\"kern.watchdog.period\", []_C_int{1, 64, 1}},\n\t{\"kern.witnesswatch\", []_C_int{1, 53}},\n\t{\"kern.wxabort\", []_C_int{1, 74}},\n\t{\"net.bpf.bufsize\", []_C_int{4, 31, 1}},\n\t{\"net.bpf.maxbufsize\", []_C_int{4, 31, 2}},\n\t{\"net.inet.ah.enable\", []_C_int{4, 2, 51, 1}},\n\t{\"net.inet.ah.stats\", []_C_int{4, 2, 51, 2}},\n\t{\"net.inet.carp.allow\", []_C_int{4, 2, 112, 1}},\n\t{\"net.inet.carp.log\", []_C_int{4, 2, 112, 3}},\n\t{\"net.inet.carp.preempt\", []_C_int{4, 2, 112, 2}},\n\t{\"net.inet.carp.stats\", []_C_int{4, 2, 112, 4}},\n\t{\"net.inet.divert.recvspace\", []_C_int{4, 2, 258, 1}},\n\t{\"net.inet.divert.sendspace\", []_C_int{4, 2, 258, 2}},\n\t{\"net.inet.divert.stats\", []_C_int{4, 2, 258, 3}},\n\t{\"net.inet.esp.enable\", []_C_int{4, 2, 50, 1}},\n\t{\"net.inet.esp.stats\", []_C_int{4, 2, 50, 4}},\n\t{\"net.inet.esp.udpencap\", []_C_int{4, 2, 50, 2}},\n\t{\"net.inet.esp.udpencap_port\", []_C_int{4, 2, 50, 3}},\n\t{\"net.inet.etherip.allow\", []_C_int{4, 2, 97, 1}},\n\t{\"net.inet.etherip.stats\", []_C_int{4, 2, 97, 2}},\n\t{\"net.inet.gre.allow\", []_C_int{4, 2, 47, 1}},\n\t{\"net.inet.gre.wccp\", []_C_int{4, 2, 47, 2}},\n\t{\"net.inet.icmp.bmcastecho\", []_C_int{4, 2, 1, 2}},\n\t{\"net.inet.icmp.errppslimit\", []_C_int{4, 2, 1, 3}},\n\t{\"net.inet.icmp.maskrepl\", []_C_int{4, 2, 1, 1}},\n\t{\"net.inet.icmp.rediraccept\", []_C_int{4, 2, 1, 4}},\n\t{\"net.inet.icmp.redirtimeout\", []_C_int{4, 2, 1, 5}},\n\t{\"net.inet.icmp.stats\", []_C_int{4, 2, 1, 7}},\n\t{\"net.inet.icmp.tstamprepl\", []_C_int{4, 2, 1, 6}},\n\t{\"net.inet.igmp.stats\", []_C_int{4, 2, 2, 1}},\n\t{\"net.inet.ip.arpdown\", []_C_int{4, 2, 0, 40}},\n\t{\"net.inet.ip.arpqueued\", []_C_int{4, 2, 0, 36}},\n\t{\"net.inet.ip.arptimeout\", []_C_int{4, 2, 0, 39}},\n\t{\"net.inet.ip.encdebug\", []_C_int{4, 2, 0, 12}},\n\t{\"net.inet.ip.forwarding\", []_C_int{4, 2, 0, 1}},\n\t{\"net.inet.ip.ifq.congestion\", []_C_int{4, 2, 0, 30, 4}},\n\t{\"net.inet.ip.ifq.drops\", []_C_int{4, 2, 0, 30, 3}},\n\t{\"net.inet.ip.ifq.len\", []_C_int{4, 2, 0, 30, 1}},\n\t{\"net.inet.ip.ifq.maxlen\", []_C_int{4, 2, 0, 30, 2}},\n\t{\"net.inet.ip.maxqueue\", []_C_int{4, 2, 0, 11}},\n\t{\"net.inet.ip.mforwarding\", []_C_int{4, 2, 0, 31}},\n\t{\"net.inet.ip.mrtmfc\", []_C_int{4, 2, 0, 37}},\n\t{\"net.inet.ip.mrtproto\", []_C_int{4, 2, 0, 34}},\n\t{\"net.inet.ip.mrtstats\", []_C_int{4, 2, 0, 35}},\n\t{\"net.inet.ip.mrtvif\", []_C_int{4, 2, 0, 38}},\n\t{\"net.inet.ip.mtu\", []_C_int{4, 2, 0, 4}},\n\t{\"net.inet.ip.mtudisc\", []_C_int{4, 2, 0, 27}},\n\t{\"net.inet.ip.mtudisctimeout\", []_C_int{4, 2, 0, 28}},\n\t{\"net.inet.ip.multipath\", []_C_int{4, 2, 0, 32}},\n\t{\"net.inet.ip.portfirst\", []_C_int{4, 2, 0, 7}},\n\t{\"net.inet.ip.porthifirst\", []_C_int{4, 2, 0, 9}},\n\t{\"net.inet.ip.porthilast\", []_C_int{4, 2, 0, 10}},\n\t{\"net.inet.ip.portlast\", []_C_int{4, 2, 0, 8}},\n\t{\"net.inet.ip.redirect\", []_C_int{4, 2, 0, 2}},\n\t{\"net.inet.ip.sourceroute\", []_C_int{4, 2, 0, 5}},\n\t{\"net.inet.ip.stats\", []_C_int{4, 2, 0, 33}},\n\t{\"net.inet.ip.ttl\", []_C_int{4, 2, 0, 3}},\n\t{\"net.inet.ipcomp.enable\", []_C_int{4, 2, 108, 1}},\n\t{\"net.inet.ipcomp.stats\", []_C_int{4, 2, 108, 2}},\n\t{\"net.inet.ipip.allow\", []_C_int{4, 2, 4, 1}},\n\t{\"net.inet.ipip.stats\", []_C_int{4, 2, 4, 2}},\n\t{\"net.inet.pfsync.stats\", []_C_int{4, 2, 240, 1}},\n\t{\"net.inet.tcp.ackonpush\", []_C_int{4, 2, 6, 13}},\n\t{\"net.inet.tcp.always_keepalive\", []_C_int{4, 2, 6, 22}},\n\t{\"net.inet.tcp.baddynamic\", []_C_int{4, 2, 6, 6}},\n\t{\"net.inet.tcp.drop\", []_C_int{4, 2, 6, 19}},\n\t{\"net.inet.tcp.ecn\", []_C_int{4, 2, 6, 14}},\n\t{\"net.inet.tcp.ident\", []_C_int{4, 2, 6, 9}},\n\t{\"net.inet.tcp.keepidle\", []_C_int{4, 2, 6, 3}},\n\t{\"net.inet.tcp.keepinittime\", []_C_int{4, 2, 6, 2}},\n\t{\"net.inet.tcp.keepintvl\", []_C_int{4, 2, 6, 4}},\n\t{\"net.inet.tcp.mssdflt\", []_C_int{4, 2, 6, 11}},\n\t{\"net.inet.tcp.reasslimit\", []_C_int{4, 2, 6, 18}},\n\t{\"net.inet.tcp.rfc1323\", []_C_int{4, 2, 6, 1}},\n\t{\"net.inet.tcp.rfc3390\", []_C_int{4, 2, 6, 17}},\n\t{\"net.inet.tcp.rootonly\", []_C_int{4, 2, 6, 24}},\n\t{\"net.inet.tcp.rstppslimit\", []_C_int{4, 2, 6, 12}},\n\t{\"net.inet.tcp.sack\", []_C_int{4, 2, 6, 10}},\n\t{\"net.inet.tcp.sackholelimit\", []_C_int{4, 2, 6, 20}},\n\t{\"net.inet.tcp.slowhz\", []_C_int{4, 2, 6, 5}},\n\t{\"net.inet.tcp.stats\", []_C_int{4, 2, 6, 21}},\n\t{\"net.inet.tcp.synbucketlimit\", []_C_int{4, 2, 6, 16}},\n\t{\"net.inet.tcp.syncachelimit\", []_C_int{4, 2, 6, 15}},\n\t{\"net.inet.tcp.synhashsize\", []_C_int{4, 2, 6, 25}},\n\t{\"net.inet.tcp.synuselimit\", []_C_int{4, 2, 6, 23}},\n\t{\"net.inet.udp.baddynamic\", []_C_int{4, 2, 17, 2}},\n\t{\"net.inet.udp.checksum\", []_C_int{4, 2, 17, 1}},\n\t{\"net.inet.udp.recvspace\", []_C_int{4, 2, 17, 3}},\n\t{\"net.inet.udp.rootonly\", []_C_int{4, 2, 17, 6}},\n\t{\"net.inet.udp.sendspace\", []_C_int{4, 2, 17, 4}},\n\t{\"net.inet.udp.stats\", []_C_int{4, 2, 17, 5}},\n\t{\"net.inet6.divert.recvspace\", []_C_int{4, 24, 86, 1}},\n\t{\"net.inet6.divert.sendspace\", []_C_int{4, 24, 86, 2}},\n\t{\"net.inet6.divert.stats\", []_C_int{4, 24, 86, 3}},\n\t{\"net.inet6.icmp6.errppslimit\", []_C_int{4, 24, 30, 14}},\n\t{\"net.inet6.icmp6.mtudisc_hiwat\", []_C_int{4, 24, 30, 16}},\n\t{\"net.inet6.icmp6.mtudisc_lowat\", []_C_int{4, 24, 30, 17}},\n\t{\"net.inet6.icmp6.nd6_debug\", []_C_int{4, 24, 30, 18}},\n\t{\"net.inet6.icmp6.nd6_delay\", []_C_int{4, 24, 30, 8}},\n\t{\"net.inet6.icmp6.nd6_maxnudhint\", []_C_int{4, 24, 30, 15}},\n\t{\"net.inet6.icmp6.nd6_mmaxtries\", []_C_int{4, 24, 30, 10}},\n\t{\"net.inet6.icmp6.nd6_umaxtries\", []_C_int{4, 24, 30, 9}},\n\t{\"net.inet6.icmp6.redirtimeout\", []_C_int{4, 24, 30, 3}},\n\t{\"net.inet6.ip6.auto_flowlabel\", []_C_int{4, 24, 17, 17}},\n\t{\"net.inet6.ip6.dad_count\", []_C_int{4, 24, 17, 16}},\n\t{\"net.inet6.ip6.dad_pending\", []_C_int{4, 24, 17, 49}},\n\t{\"net.inet6.ip6.defmcasthlim\", []_C_int{4, 24, 17, 18}},\n\t{\"net.inet6.ip6.forwarding\", []_C_int{4, 24, 17, 1}},\n\t{\"net.inet6.ip6.forwsrcrt\", []_C_int{4, 24, 17, 5}},\n\t{\"net.inet6.ip6.hdrnestlimit\", []_C_int{4, 24, 17, 15}},\n\t{\"net.inet6.ip6.hlim\", []_C_int{4, 24, 17, 3}},\n\t{\"net.inet6.ip6.log_interval\", []_C_int{4, 24, 17, 14}},\n\t{\"net.inet6.ip6.maxdynroutes\", []_C_int{4, 24, 17, 48}},\n\t{\"net.inet6.ip6.maxfragpackets\", []_C_int{4, 24, 17, 9}},\n\t{\"net.inet6.ip6.maxfrags\", []_C_int{4, 24, 17, 41}},\n\t{\"net.inet6.ip6.mforwarding\", []_C_int{4, 24, 17, 42}},\n\t{\"net.inet6.ip6.mrtmfc\", []_C_int{4, 24, 17, 53}},\n\t{\"net.inet6.ip6.mrtmif\", []_C_int{4, 24, 17, 52}},\n\t{\"net.inet6.ip6.mrtproto\", []_C_int{4, 24, 17, 8}},\n\t{\"net.inet6.ip6.mtudisctimeout\", []_C_int{4, 24, 17, 50}},\n\t{\"net.inet6.ip6.multicast_mtudisc\", []_C_int{4, 24, 17, 44}},\n\t{\"net.inet6.ip6.multipath\", []_C_int{4, 24, 17, 43}},\n\t{\"net.inet6.ip6.neighborgcthresh\", []_C_int{4, 24, 17, 45}},\n\t{\"net.inet6.ip6.redirect\", []_C_int{4, 24, 17, 2}},\n\t{\"net.inet6.ip6.soiikey\", []_C_int{4, 24, 17, 54}},\n\t{\"net.inet6.ip6.sourcecheck\", []_C_int{4, 24, 17, 10}},\n\t{\"net.inet6.ip6.sourcecheck_logint\", []_C_int{4, 24, 17, 11}},\n\t{\"net.inet6.ip6.use_deprecated\", []_C_int{4, 24, 17, 21}},\n\t{\"net.key.sadb_dump\", []_C_int{4, 30, 1}},\n\t{\"net.key.spd_dump\", []_C_int{4, 30, 2}},\n\t{\"net.mpls.ifq.congestion\", []_C_int{4, 33, 3, 4}},\n\t{\"net.mpls.ifq.drops\", []_C_int{4, 33, 3, 3}},\n\t{\"net.mpls.ifq.len\", []_C_int{4, 33, 3, 1}},\n\t{\"net.mpls.ifq.maxlen\", []_C_int{4, 33, 3, 2}},\n\t{\"net.mpls.mapttl_ip\", []_C_int{4, 33, 5}},\n\t{\"net.mpls.mapttl_ip6\", []_C_int{4, 33, 6}},\n\t{\"net.mpls.ttl\", []_C_int{4, 33, 2}},\n\t{\"net.pflow.stats\", []_C_int{4, 34, 1}},\n\t{\"net.pipex.enable\", []_C_int{4, 35, 1}},\n\t{\"vm.anonmin\", []_C_int{2, 7}},\n\t{\"vm.loadavg\", []_C_int{2, 2}},\n\t{\"vm.malloc_conf\", []_C_int{2, 12}},\n\t{\"vm.maxslp\", []_C_int{2, 10}},\n\t{\"vm.nkmempages\", []_C_int{2, 6}},\n\t{\"vm.psstrings\", []_C_int{2, 3}},\n\t{\"vm.swapencrypt.enable\", []_C_int{2, 5, 0}},\n\t{\"vm.swapencrypt.keyscreated\", []_C_int{2, 5, 1}},\n\t{\"vm.swapencrypt.keysdeleted\", []_C_int{2, 5, 2}},\n\t{\"vm.uspace\", []_C_int{2, 11}},\n\t{\"vm.uvmexp\", []_C_int{2, 4}},\n\t{\"vm.vmmeter\", []_C_int{2, 1}},\n\t{\"vm.vnodemin\", []_C_int{2, 9}},\n\t{\"vm.vtextmin\", []_C_int{2, 8}},\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go",
    "content": "// go run mksysctl_openbsd.go\n// Code generated by the command above; DO NOT EDIT.\n\n//go:build arm && openbsd\n\npackage unix\n\ntype mibentry struct {\n\tctlname string\n\tctloid  []_C_int\n}\n\nvar sysctlMib = []mibentry{\n\t{\"ddb.console\", []_C_int{9, 6}},\n\t{\"ddb.log\", []_C_int{9, 7}},\n\t{\"ddb.max_line\", []_C_int{9, 3}},\n\t{\"ddb.max_width\", []_C_int{9, 2}},\n\t{\"ddb.panic\", []_C_int{9, 5}},\n\t{\"ddb.profile\", []_C_int{9, 9}},\n\t{\"ddb.radix\", []_C_int{9, 1}},\n\t{\"ddb.tab_stop_width\", []_C_int{9, 4}},\n\t{\"ddb.trigger\", []_C_int{9, 8}},\n\t{\"fs.posix.setuid\", []_C_int{3, 1, 1}},\n\t{\"hw.allowpowerdown\", []_C_int{6, 22}},\n\t{\"hw.byteorder\", []_C_int{6, 4}},\n\t{\"hw.cpuspeed\", []_C_int{6, 12}},\n\t{\"hw.diskcount\", []_C_int{6, 10}},\n\t{\"hw.disknames\", []_C_int{6, 8}},\n\t{\"hw.diskstats\", []_C_int{6, 9}},\n\t{\"hw.machine\", []_C_int{6, 1}},\n\t{\"hw.model\", []_C_int{6, 2}},\n\t{\"hw.ncpu\", []_C_int{6, 3}},\n\t{\"hw.ncpufound\", []_C_int{6, 21}},\n\t{\"hw.ncpuonline\", []_C_int{6, 25}},\n\t{\"hw.pagesize\", []_C_int{6, 7}},\n\t{\"hw.perfpolicy\", []_C_int{6, 23}},\n\t{\"hw.physmem\", []_C_int{6, 19}},\n\t{\"hw.power\", []_C_int{6, 26}},\n\t{\"hw.product\", []_C_int{6, 15}},\n\t{\"hw.serialno\", []_C_int{6, 17}},\n\t{\"hw.setperf\", []_C_int{6, 13}},\n\t{\"hw.smt\", []_C_int{6, 24}},\n\t{\"hw.usermem\", []_C_int{6, 20}},\n\t{\"hw.uuid\", []_C_int{6, 18}},\n\t{\"hw.vendor\", []_C_int{6, 14}},\n\t{\"hw.version\", []_C_int{6, 16}},\n\t{\"kern.allowdt\", []_C_int{1, 65}},\n\t{\"kern.allowkmem\", []_C_int{1, 52}},\n\t{\"kern.argmax\", []_C_int{1, 8}},\n\t{\"kern.audio\", []_C_int{1, 84}},\n\t{\"kern.boottime\", []_C_int{1, 21}},\n\t{\"kern.bufcachepercent\", []_C_int{1, 72}},\n\t{\"kern.ccpu\", []_C_int{1, 45}},\n\t{\"kern.clockrate\", []_C_int{1, 12}},\n\t{\"kern.consbuf\", []_C_int{1, 83}},\n\t{\"kern.consbufsize\", []_C_int{1, 82}},\n\t{\"kern.consdev\", []_C_int{1, 75}},\n\t{\"kern.cp_time\", []_C_int{1, 40}},\n\t{\"kern.cp_time2\", []_C_int{1, 71}},\n\t{\"kern.cpustats\", []_C_int{1, 85}},\n\t{\"kern.domainname\", []_C_int{1, 22}},\n\t{\"kern.file\", []_C_int{1, 73}},\n\t{\"kern.forkstat\", []_C_int{1, 42}},\n\t{\"kern.fscale\", []_C_int{1, 46}},\n\t{\"kern.fsync\", []_C_int{1, 33}},\n\t{\"kern.global_ptrace\", []_C_int{1, 81}},\n\t{\"kern.hostid\", []_C_int{1, 11}},\n\t{\"kern.hostname\", []_C_int{1, 10}},\n\t{\"kern.intrcnt.nintrcnt\", []_C_int{1, 63, 1}},\n\t{\"kern.job_control\", []_C_int{1, 19}},\n\t{\"kern.malloc.buckets\", []_C_int{1, 39, 1}},\n\t{\"kern.malloc.kmemnames\", []_C_int{1, 39, 3}},\n\t{\"kern.maxclusters\", []_C_int{1, 67}},\n\t{\"kern.maxfiles\", []_C_int{1, 7}},\n\t{\"kern.maxlocksperuid\", []_C_int{1, 70}},\n\t{\"kern.maxpartitions\", []_C_int{1, 23}},\n\t{\"kern.maxproc\", []_C_int{1, 6}},\n\t{\"kern.maxthread\", []_C_int{1, 25}},\n\t{\"kern.maxvnodes\", []_C_int{1, 5}},\n\t{\"kern.mbstat\", []_C_int{1, 59}},\n\t{\"kern.msgbuf\", []_C_int{1, 48}},\n\t{\"kern.msgbufsize\", []_C_int{1, 38}},\n\t{\"kern.nchstats\", []_C_int{1, 41}},\n\t{\"kern.netlivelocks\", []_C_int{1, 76}},\n\t{\"kern.nfiles\", []_C_int{1, 56}},\n\t{\"kern.ngroups\", []_C_int{1, 18}},\n\t{\"kern.nosuidcoredump\", []_C_int{1, 32}},\n\t{\"kern.nprocs\", []_C_int{1, 47}},\n\t{\"kern.nthreads\", []_C_int{1, 26}},\n\t{\"kern.numvnodes\", []_C_int{1, 58}},\n\t{\"kern.osrelease\", []_C_int{1, 2}},\n\t{\"kern.osrevision\", []_C_int{1, 3}},\n\t{\"kern.ostype\", []_C_int{1, 1}},\n\t{\"kern.osversion\", []_C_int{1, 27}},\n\t{\"kern.pfstatus\", []_C_int{1, 86}},\n\t{\"kern.pool_debug\", []_C_int{1, 77}},\n\t{\"kern.posix1version\", []_C_int{1, 17}},\n\t{\"kern.proc\", []_C_int{1, 66}},\n\t{\"kern.rawpartition\", []_C_int{1, 24}},\n\t{\"kern.saved_ids\", []_C_int{1, 20}},\n\t{\"kern.securelevel\", []_C_int{1, 9}},\n\t{\"kern.seminfo\", []_C_int{1, 61}},\n\t{\"kern.shminfo\", []_C_int{1, 62}},\n\t{\"kern.somaxconn\", []_C_int{1, 28}},\n\t{\"kern.sominconn\", []_C_int{1, 29}},\n\t{\"kern.splassert\", []_C_int{1, 54}},\n\t{\"kern.stackgap_random\", []_C_int{1, 50}},\n\t{\"kern.sysvipc_info\", []_C_int{1, 51}},\n\t{\"kern.sysvmsg\", []_C_int{1, 34}},\n\t{\"kern.sysvsem\", []_C_int{1, 35}},\n\t{\"kern.sysvshm\", []_C_int{1, 36}},\n\t{\"kern.timecounter.choice\", []_C_int{1, 69, 4}},\n\t{\"kern.timecounter.hardware\", []_C_int{1, 69, 3}},\n\t{\"kern.timecounter.tick\", []_C_int{1, 69, 1}},\n\t{\"kern.timecounter.timestepwarnings\", []_C_int{1, 69, 2}},\n\t{\"kern.timeout_stats\", []_C_int{1, 87}},\n\t{\"kern.tty.tk_cancc\", []_C_int{1, 44, 4}},\n\t{\"kern.tty.tk_nin\", []_C_int{1, 44, 1}},\n\t{\"kern.tty.tk_nout\", []_C_int{1, 44, 2}},\n\t{\"kern.tty.tk_rawcc\", []_C_int{1, 44, 3}},\n\t{\"kern.tty.ttyinfo\", []_C_int{1, 44, 5}},\n\t{\"kern.ttycount\", []_C_int{1, 57}},\n\t{\"kern.utc_offset\", []_C_int{1, 88}},\n\t{\"kern.version\", []_C_int{1, 4}},\n\t{\"kern.video\", []_C_int{1, 89}},\n\t{\"kern.watchdog.auto\", []_C_int{1, 64, 2}},\n\t{\"kern.watchdog.period\", []_C_int{1, 64, 1}},\n\t{\"kern.witnesswatch\", []_C_int{1, 53}},\n\t{\"kern.wxabort\", []_C_int{1, 74}},\n\t{\"net.bpf.bufsize\", []_C_int{4, 31, 1}},\n\t{\"net.bpf.maxbufsize\", []_C_int{4, 31, 2}},\n\t{\"net.inet.ah.enable\", []_C_int{4, 2, 51, 1}},\n\t{\"net.inet.ah.stats\", []_C_int{4, 2, 51, 2}},\n\t{\"net.inet.carp.allow\", []_C_int{4, 2, 112, 1}},\n\t{\"net.inet.carp.log\", []_C_int{4, 2, 112, 3}},\n\t{\"net.inet.carp.preempt\", []_C_int{4, 2, 112, 2}},\n\t{\"net.inet.carp.stats\", []_C_int{4, 2, 112, 4}},\n\t{\"net.inet.divert.recvspace\", []_C_int{4, 2, 258, 1}},\n\t{\"net.inet.divert.sendspace\", []_C_int{4, 2, 258, 2}},\n\t{\"net.inet.divert.stats\", []_C_int{4, 2, 258, 3}},\n\t{\"net.inet.esp.enable\", []_C_int{4, 2, 50, 1}},\n\t{\"net.inet.esp.stats\", []_C_int{4, 2, 50, 4}},\n\t{\"net.inet.esp.udpencap\", []_C_int{4, 2, 50, 2}},\n\t{\"net.inet.esp.udpencap_port\", []_C_int{4, 2, 50, 3}},\n\t{\"net.inet.etherip.allow\", []_C_int{4, 2, 97, 1}},\n\t{\"net.inet.etherip.stats\", []_C_int{4, 2, 97, 2}},\n\t{\"net.inet.gre.allow\", []_C_int{4, 2, 47, 1}},\n\t{\"net.inet.gre.wccp\", []_C_int{4, 2, 47, 2}},\n\t{\"net.inet.icmp.bmcastecho\", []_C_int{4, 2, 1, 2}},\n\t{\"net.inet.icmp.errppslimit\", []_C_int{4, 2, 1, 3}},\n\t{\"net.inet.icmp.maskrepl\", []_C_int{4, 2, 1, 1}},\n\t{\"net.inet.icmp.rediraccept\", []_C_int{4, 2, 1, 4}},\n\t{\"net.inet.icmp.redirtimeout\", []_C_int{4, 2, 1, 5}},\n\t{\"net.inet.icmp.stats\", []_C_int{4, 2, 1, 7}},\n\t{\"net.inet.icmp.tstamprepl\", []_C_int{4, 2, 1, 6}},\n\t{\"net.inet.igmp.stats\", []_C_int{4, 2, 2, 1}},\n\t{\"net.inet.ip.arpdown\", []_C_int{4, 2, 0, 40}},\n\t{\"net.inet.ip.arpqueued\", []_C_int{4, 2, 0, 36}},\n\t{\"net.inet.ip.arptimeout\", []_C_int{4, 2, 0, 39}},\n\t{\"net.inet.ip.encdebug\", []_C_int{4, 2, 0, 12}},\n\t{\"net.inet.ip.forwarding\", []_C_int{4, 2, 0, 1}},\n\t{\"net.inet.ip.ifq.congestion\", []_C_int{4, 2, 0, 30, 4}},\n\t{\"net.inet.ip.ifq.drops\", []_C_int{4, 2, 0, 30, 3}},\n\t{\"net.inet.ip.ifq.len\", []_C_int{4, 2, 0, 30, 1}},\n\t{\"net.inet.ip.ifq.maxlen\", []_C_int{4, 2, 0, 30, 2}},\n\t{\"net.inet.ip.maxqueue\", []_C_int{4, 2, 0, 11}},\n\t{\"net.inet.ip.mforwarding\", []_C_int{4, 2, 0, 31}},\n\t{\"net.inet.ip.mrtmfc\", []_C_int{4, 2, 0, 37}},\n\t{\"net.inet.ip.mrtproto\", []_C_int{4, 2, 0, 34}},\n\t{\"net.inet.ip.mrtstats\", []_C_int{4, 2, 0, 35}},\n\t{\"net.inet.ip.mrtvif\", []_C_int{4, 2, 0, 38}},\n\t{\"net.inet.ip.mtu\", []_C_int{4, 2, 0, 4}},\n\t{\"net.inet.ip.mtudisc\", []_C_int{4, 2, 0, 27}},\n\t{\"net.inet.ip.mtudisctimeout\", []_C_int{4, 2, 0, 28}},\n\t{\"net.inet.ip.multipath\", []_C_int{4, 2, 0, 32}},\n\t{\"net.inet.ip.portfirst\", []_C_int{4, 2, 0, 7}},\n\t{\"net.inet.ip.porthifirst\", []_C_int{4, 2, 0, 9}},\n\t{\"net.inet.ip.porthilast\", []_C_int{4, 2, 0, 10}},\n\t{\"net.inet.ip.portlast\", []_C_int{4, 2, 0, 8}},\n\t{\"net.inet.ip.redirect\", []_C_int{4, 2, 0, 2}},\n\t{\"net.inet.ip.sourceroute\", []_C_int{4, 2, 0, 5}},\n\t{\"net.inet.ip.stats\", []_C_int{4, 2, 0, 33}},\n\t{\"net.inet.ip.ttl\", []_C_int{4, 2, 0, 3}},\n\t{\"net.inet.ipcomp.enable\", []_C_int{4, 2, 108, 1}},\n\t{\"net.inet.ipcomp.stats\", []_C_int{4, 2, 108, 2}},\n\t{\"net.inet.ipip.allow\", []_C_int{4, 2, 4, 1}},\n\t{\"net.inet.ipip.stats\", []_C_int{4, 2, 4, 2}},\n\t{\"net.inet.pfsync.stats\", []_C_int{4, 2, 240, 1}},\n\t{\"net.inet.tcp.ackonpush\", []_C_int{4, 2, 6, 13}},\n\t{\"net.inet.tcp.always_keepalive\", []_C_int{4, 2, 6, 22}},\n\t{\"net.inet.tcp.baddynamic\", []_C_int{4, 2, 6, 6}},\n\t{\"net.inet.tcp.drop\", []_C_int{4, 2, 6, 19}},\n\t{\"net.inet.tcp.ecn\", []_C_int{4, 2, 6, 14}},\n\t{\"net.inet.tcp.ident\", []_C_int{4, 2, 6, 9}},\n\t{\"net.inet.tcp.keepidle\", []_C_int{4, 2, 6, 3}},\n\t{\"net.inet.tcp.keepinittime\", []_C_int{4, 2, 6, 2}},\n\t{\"net.inet.tcp.keepintvl\", []_C_int{4, 2, 6, 4}},\n\t{\"net.inet.tcp.mssdflt\", []_C_int{4, 2, 6, 11}},\n\t{\"net.inet.tcp.reasslimit\", []_C_int{4, 2, 6, 18}},\n\t{\"net.inet.tcp.rfc1323\", []_C_int{4, 2, 6, 1}},\n\t{\"net.inet.tcp.rfc3390\", []_C_int{4, 2, 6, 17}},\n\t{\"net.inet.tcp.rootonly\", []_C_int{4, 2, 6, 24}},\n\t{\"net.inet.tcp.rstppslimit\", []_C_int{4, 2, 6, 12}},\n\t{\"net.inet.tcp.sack\", []_C_int{4, 2, 6, 10}},\n\t{\"net.inet.tcp.sackholelimit\", []_C_int{4, 2, 6, 20}},\n\t{\"net.inet.tcp.slowhz\", []_C_int{4, 2, 6, 5}},\n\t{\"net.inet.tcp.stats\", []_C_int{4, 2, 6, 21}},\n\t{\"net.inet.tcp.synbucketlimit\", []_C_int{4, 2, 6, 16}},\n\t{\"net.inet.tcp.syncachelimit\", []_C_int{4, 2, 6, 15}},\n\t{\"net.inet.tcp.synhashsize\", []_C_int{4, 2, 6, 25}},\n\t{\"net.inet.tcp.synuselimit\", []_C_int{4, 2, 6, 23}},\n\t{\"net.inet.udp.baddynamic\", []_C_int{4, 2, 17, 2}},\n\t{\"net.inet.udp.checksum\", []_C_int{4, 2, 17, 1}},\n\t{\"net.inet.udp.recvspace\", []_C_int{4, 2, 17, 3}},\n\t{\"net.inet.udp.rootonly\", []_C_int{4, 2, 17, 6}},\n\t{\"net.inet.udp.sendspace\", []_C_int{4, 2, 17, 4}},\n\t{\"net.inet.udp.stats\", []_C_int{4, 2, 17, 5}},\n\t{\"net.inet6.divert.recvspace\", []_C_int{4, 24, 86, 1}},\n\t{\"net.inet6.divert.sendspace\", []_C_int{4, 24, 86, 2}},\n\t{\"net.inet6.divert.stats\", []_C_int{4, 24, 86, 3}},\n\t{\"net.inet6.icmp6.errppslimit\", []_C_int{4, 24, 30, 14}},\n\t{\"net.inet6.icmp6.mtudisc_hiwat\", []_C_int{4, 24, 30, 16}},\n\t{\"net.inet6.icmp6.mtudisc_lowat\", []_C_int{4, 24, 30, 17}},\n\t{\"net.inet6.icmp6.nd6_debug\", []_C_int{4, 24, 30, 18}},\n\t{\"net.inet6.icmp6.nd6_delay\", []_C_int{4, 24, 30, 8}},\n\t{\"net.inet6.icmp6.nd6_maxnudhint\", []_C_int{4, 24, 30, 15}},\n\t{\"net.inet6.icmp6.nd6_mmaxtries\", []_C_int{4, 24, 30, 10}},\n\t{\"net.inet6.icmp6.nd6_umaxtries\", []_C_int{4, 24, 30, 9}},\n\t{\"net.inet6.icmp6.redirtimeout\", []_C_int{4, 24, 30, 3}},\n\t{\"net.inet6.ip6.auto_flowlabel\", []_C_int{4, 24, 17, 17}},\n\t{\"net.inet6.ip6.dad_count\", []_C_int{4, 24, 17, 16}},\n\t{\"net.inet6.ip6.dad_pending\", []_C_int{4, 24, 17, 49}},\n\t{\"net.inet6.ip6.defmcasthlim\", []_C_int{4, 24, 17, 18}},\n\t{\"net.inet6.ip6.forwarding\", []_C_int{4, 24, 17, 1}},\n\t{\"net.inet6.ip6.forwsrcrt\", []_C_int{4, 24, 17, 5}},\n\t{\"net.inet6.ip6.hdrnestlimit\", []_C_int{4, 24, 17, 15}},\n\t{\"net.inet6.ip6.hlim\", []_C_int{4, 24, 17, 3}},\n\t{\"net.inet6.ip6.log_interval\", []_C_int{4, 24, 17, 14}},\n\t{\"net.inet6.ip6.maxdynroutes\", []_C_int{4, 24, 17, 48}},\n\t{\"net.inet6.ip6.maxfragpackets\", []_C_int{4, 24, 17, 9}},\n\t{\"net.inet6.ip6.maxfrags\", []_C_int{4, 24, 17, 41}},\n\t{\"net.inet6.ip6.mforwarding\", []_C_int{4, 24, 17, 42}},\n\t{\"net.inet6.ip6.mrtmfc\", []_C_int{4, 24, 17, 53}},\n\t{\"net.inet6.ip6.mrtmif\", []_C_int{4, 24, 17, 52}},\n\t{\"net.inet6.ip6.mrtproto\", []_C_int{4, 24, 17, 8}},\n\t{\"net.inet6.ip6.mtudisctimeout\", []_C_int{4, 24, 17, 50}},\n\t{\"net.inet6.ip6.multicast_mtudisc\", []_C_int{4, 24, 17, 44}},\n\t{\"net.inet6.ip6.multipath\", []_C_int{4, 24, 17, 43}},\n\t{\"net.inet6.ip6.neighborgcthresh\", []_C_int{4, 24, 17, 45}},\n\t{\"net.inet6.ip6.redirect\", []_C_int{4, 24, 17, 2}},\n\t{\"net.inet6.ip6.soiikey\", []_C_int{4, 24, 17, 54}},\n\t{\"net.inet6.ip6.sourcecheck\", []_C_int{4, 24, 17, 10}},\n\t{\"net.inet6.ip6.sourcecheck_logint\", []_C_int{4, 24, 17, 11}},\n\t{\"net.inet6.ip6.use_deprecated\", []_C_int{4, 24, 17, 21}},\n\t{\"net.key.sadb_dump\", []_C_int{4, 30, 1}},\n\t{\"net.key.spd_dump\", []_C_int{4, 30, 2}},\n\t{\"net.mpls.ifq.congestion\", []_C_int{4, 33, 3, 4}},\n\t{\"net.mpls.ifq.drops\", []_C_int{4, 33, 3, 3}},\n\t{\"net.mpls.ifq.len\", []_C_int{4, 33, 3, 1}},\n\t{\"net.mpls.ifq.maxlen\", []_C_int{4, 33, 3, 2}},\n\t{\"net.mpls.mapttl_ip\", []_C_int{4, 33, 5}},\n\t{\"net.mpls.mapttl_ip6\", []_C_int{4, 33, 6}},\n\t{\"net.mpls.ttl\", []_C_int{4, 33, 2}},\n\t{\"net.pflow.stats\", []_C_int{4, 34, 1}},\n\t{\"net.pipex.enable\", []_C_int{4, 35, 1}},\n\t{\"vm.anonmin\", []_C_int{2, 7}},\n\t{\"vm.loadavg\", []_C_int{2, 2}},\n\t{\"vm.malloc_conf\", []_C_int{2, 12}},\n\t{\"vm.maxslp\", []_C_int{2, 10}},\n\t{\"vm.nkmempages\", []_C_int{2, 6}},\n\t{\"vm.psstrings\", []_C_int{2, 3}},\n\t{\"vm.swapencrypt.enable\", []_C_int{2, 5, 0}},\n\t{\"vm.swapencrypt.keyscreated\", []_C_int{2, 5, 1}},\n\t{\"vm.swapencrypt.keysdeleted\", []_C_int{2, 5, 2}},\n\t{\"vm.uspace\", []_C_int{2, 11}},\n\t{\"vm.uvmexp\", []_C_int{2, 4}},\n\t{\"vm.vmmeter\", []_C_int{2, 1}},\n\t{\"vm.vnodemin\", []_C_int{2, 9}},\n\t{\"vm.vtextmin\", []_C_int{2, 8}},\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm64.go",
    "content": "// go run mksysctl_openbsd.go\n// Code generated by the command above; DO NOT EDIT.\n\n//go:build arm64 && openbsd\n\npackage unix\n\ntype mibentry struct {\n\tctlname string\n\tctloid  []_C_int\n}\n\nvar sysctlMib = []mibentry{\n\t{\"ddb.console\", []_C_int{9, 6}},\n\t{\"ddb.log\", []_C_int{9, 7}},\n\t{\"ddb.max_line\", []_C_int{9, 3}},\n\t{\"ddb.max_width\", []_C_int{9, 2}},\n\t{\"ddb.panic\", []_C_int{9, 5}},\n\t{\"ddb.profile\", []_C_int{9, 9}},\n\t{\"ddb.radix\", []_C_int{9, 1}},\n\t{\"ddb.tab_stop_width\", []_C_int{9, 4}},\n\t{\"ddb.trigger\", []_C_int{9, 8}},\n\t{\"fs.posix.setuid\", []_C_int{3, 1, 1}},\n\t{\"hw.allowpowerdown\", []_C_int{6, 22}},\n\t{\"hw.byteorder\", []_C_int{6, 4}},\n\t{\"hw.cpuspeed\", []_C_int{6, 12}},\n\t{\"hw.diskcount\", []_C_int{6, 10}},\n\t{\"hw.disknames\", []_C_int{6, 8}},\n\t{\"hw.diskstats\", []_C_int{6, 9}},\n\t{\"hw.machine\", []_C_int{6, 1}},\n\t{\"hw.model\", []_C_int{6, 2}},\n\t{\"hw.ncpu\", []_C_int{6, 3}},\n\t{\"hw.ncpufound\", []_C_int{6, 21}},\n\t{\"hw.ncpuonline\", []_C_int{6, 25}},\n\t{\"hw.pagesize\", []_C_int{6, 7}},\n\t{\"hw.perfpolicy\", []_C_int{6, 23}},\n\t{\"hw.physmem\", []_C_int{6, 19}},\n\t{\"hw.power\", []_C_int{6, 26}},\n\t{\"hw.product\", []_C_int{6, 15}},\n\t{\"hw.serialno\", []_C_int{6, 17}},\n\t{\"hw.setperf\", []_C_int{6, 13}},\n\t{\"hw.smt\", []_C_int{6, 24}},\n\t{\"hw.usermem\", []_C_int{6, 20}},\n\t{\"hw.uuid\", []_C_int{6, 18}},\n\t{\"hw.vendor\", []_C_int{6, 14}},\n\t{\"hw.version\", []_C_int{6, 16}},\n\t{\"kern.allowdt\", []_C_int{1, 65}},\n\t{\"kern.allowkmem\", []_C_int{1, 52}},\n\t{\"kern.argmax\", []_C_int{1, 8}},\n\t{\"kern.audio\", []_C_int{1, 84}},\n\t{\"kern.boottime\", []_C_int{1, 21}},\n\t{\"kern.bufcachepercent\", []_C_int{1, 72}},\n\t{\"kern.ccpu\", []_C_int{1, 45}},\n\t{\"kern.clockrate\", []_C_int{1, 12}},\n\t{\"kern.consbuf\", []_C_int{1, 83}},\n\t{\"kern.consbufsize\", []_C_int{1, 82}},\n\t{\"kern.consdev\", []_C_int{1, 75}},\n\t{\"kern.cp_time\", []_C_int{1, 40}},\n\t{\"kern.cp_time2\", []_C_int{1, 71}},\n\t{\"kern.cpustats\", []_C_int{1, 85}},\n\t{\"kern.domainname\", []_C_int{1, 22}},\n\t{\"kern.file\", []_C_int{1, 73}},\n\t{\"kern.forkstat\", []_C_int{1, 42}},\n\t{\"kern.fscale\", []_C_int{1, 46}},\n\t{\"kern.fsync\", []_C_int{1, 33}},\n\t{\"kern.global_ptrace\", []_C_int{1, 81}},\n\t{\"kern.hostid\", []_C_int{1, 11}},\n\t{\"kern.hostname\", []_C_int{1, 10}},\n\t{\"kern.intrcnt.nintrcnt\", []_C_int{1, 63, 1}},\n\t{\"kern.job_control\", []_C_int{1, 19}},\n\t{\"kern.malloc.buckets\", []_C_int{1, 39, 1}},\n\t{\"kern.malloc.kmemnames\", []_C_int{1, 39, 3}},\n\t{\"kern.maxclusters\", []_C_int{1, 67}},\n\t{\"kern.maxfiles\", []_C_int{1, 7}},\n\t{\"kern.maxlocksperuid\", []_C_int{1, 70}},\n\t{\"kern.maxpartitions\", []_C_int{1, 23}},\n\t{\"kern.maxproc\", []_C_int{1, 6}},\n\t{\"kern.maxthread\", []_C_int{1, 25}},\n\t{\"kern.maxvnodes\", []_C_int{1, 5}},\n\t{\"kern.mbstat\", []_C_int{1, 59}},\n\t{\"kern.msgbuf\", []_C_int{1, 48}},\n\t{\"kern.msgbufsize\", []_C_int{1, 38}},\n\t{\"kern.nchstats\", []_C_int{1, 41}},\n\t{\"kern.netlivelocks\", []_C_int{1, 76}},\n\t{\"kern.nfiles\", []_C_int{1, 56}},\n\t{\"kern.ngroups\", []_C_int{1, 18}},\n\t{\"kern.nosuidcoredump\", []_C_int{1, 32}},\n\t{\"kern.nprocs\", []_C_int{1, 47}},\n\t{\"kern.nthreads\", []_C_int{1, 26}},\n\t{\"kern.numvnodes\", []_C_int{1, 58}},\n\t{\"kern.osrelease\", []_C_int{1, 2}},\n\t{\"kern.osrevision\", []_C_int{1, 3}},\n\t{\"kern.ostype\", []_C_int{1, 1}},\n\t{\"kern.osversion\", []_C_int{1, 27}},\n\t{\"kern.pfstatus\", []_C_int{1, 86}},\n\t{\"kern.pool_debug\", []_C_int{1, 77}},\n\t{\"kern.posix1version\", []_C_int{1, 17}},\n\t{\"kern.proc\", []_C_int{1, 66}},\n\t{\"kern.rawpartition\", []_C_int{1, 24}},\n\t{\"kern.saved_ids\", []_C_int{1, 20}},\n\t{\"kern.securelevel\", []_C_int{1, 9}},\n\t{\"kern.seminfo\", []_C_int{1, 61}},\n\t{\"kern.shminfo\", []_C_int{1, 62}},\n\t{\"kern.somaxconn\", []_C_int{1, 28}},\n\t{\"kern.sominconn\", []_C_int{1, 29}},\n\t{\"kern.splassert\", []_C_int{1, 54}},\n\t{\"kern.stackgap_random\", []_C_int{1, 50}},\n\t{\"kern.sysvipc_info\", []_C_int{1, 51}},\n\t{\"kern.sysvmsg\", []_C_int{1, 34}},\n\t{\"kern.sysvsem\", []_C_int{1, 35}},\n\t{\"kern.sysvshm\", []_C_int{1, 36}},\n\t{\"kern.timecounter.choice\", []_C_int{1, 69, 4}},\n\t{\"kern.timecounter.hardware\", []_C_int{1, 69, 3}},\n\t{\"kern.timecounter.tick\", []_C_int{1, 69, 1}},\n\t{\"kern.timecounter.timestepwarnings\", []_C_int{1, 69, 2}},\n\t{\"kern.timeout_stats\", []_C_int{1, 87}},\n\t{\"kern.tty.tk_cancc\", []_C_int{1, 44, 4}},\n\t{\"kern.tty.tk_nin\", []_C_int{1, 44, 1}},\n\t{\"kern.tty.tk_nout\", []_C_int{1, 44, 2}},\n\t{\"kern.tty.tk_rawcc\", []_C_int{1, 44, 3}},\n\t{\"kern.tty.ttyinfo\", []_C_int{1, 44, 5}},\n\t{\"kern.ttycount\", []_C_int{1, 57}},\n\t{\"kern.utc_offset\", []_C_int{1, 88}},\n\t{\"kern.version\", []_C_int{1, 4}},\n\t{\"kern.video\", []_C_int{1, 89}},\n\t{\"kern.watchdog.auto\", []_C_int{1, 64, 2}},\n\t{\"kern.watchdog.period\", []_C_int{1, 64, 1}},\n\t{\"kern.witnesswatch\", []_C_int{1, 53}},\n\t{\"kern.wxabort\", []_C_int{1, 74}},\n\t{\"net.bpf.bufsize\", []_C_int{4, 31, 1}},\n\t{\"net.bpf.maxbufsize\", []_C_int{4, 31, 2}},\n\t{\"net.inet.ah.enable\", []_C_int{4, 2, 51, 1}},\n\t{\"net.inet.ah.stats\", []_C_int{4, 2, 51, 2}},\n\t{\"net.inet.carp.allow\", []_C_int{4, 2, 112, 1}},\n\t{\"net.inet.carp.log\", []_C_int{4, 2, 112, 3}},\n\t{\"net.inet.carp.preempt\", []_C_int{4, 2, 112, 2}},\n\t{\"net.inet.carp.stats\", []_C_int{4, 2, 112, 4}},\n\t{\"net.inet.divert.recvspace\", []_C_int{4, 2, 258, 1}},\n\t{\"net.inet.divert.sendspace\", []_C_int{4, 2, 258, 2}},\n\t{\"net.inet.divert.stats\", []_C_int{4, 2, 258, 3}},\n\t{\"net.inet.esp.enable\", []_C_int{4, 2, 50, 1}},\n\t{\"net.inet.esp.stats\", []_C_int{4, 2, 50, 4}},\n\t{\"net.inet.esp.udpencap\", []_C_int{4, 2, 50, 2}},\n\t{\"net.inet.esp.udpencap_port\", []_C_int{4, 2, 50, 3}},\n\t{\"net.inet.etherip.allow\", []_C_int{4, 2, 97, 1}},\n\t{\"net.inet.etherip.stats\", []_C_int{4, 2, 97, 2}},\n\t{\"net.inet.gre.allow\", []_C_int{4, 2, 47, 1}},\n\t{\"net.inet.gre.wccp\", []_C_int{4, 2, 47, 2}},\n\t{\"net.inet.icmp.bmcastecho\", []_C_int{4, 2, 1, 2}},\n\t{\"net.inet.icmp.errppslimit\", []_C_int{4, 2, 1, 3}},\n\t{\"net.inet.icmp.maskrepl\", []_C_int{4, 2, 1, 1}},\n\t{\"net.inet.icmp.rediraccept\", []_C_int{4, 2, 1, 4}},\n\t{\"net.inet.icmp.redirtimeout\", []_C_int{4, 2, 1, 5}},\n\t{\"net.inet.icmp.stats\", []_C_int{4, 2, 1, 7}},\n\t{\"net.inet.icmp.tstamprepl\", []_C_int{4, 2, 1, 6}},\n\t{\"net.inet.igmp.stats\", []_C_int{4, 2, 2, 1}},\n\t{\"net.inet.ip.arpdown\", []_C_int{4, 2, 0, 40}},\n\t{\"net.inet.ip.arpqueued\", []_C_int{4, 2, 0, 36}},\n\t{\"net.inet.ip.arptimeout\", []_C_int{4, 2, 0, 39}},\n\t{\"net.inet.ip.encdebug\", []_C_int{4, 2, 0, 12}},\n\t{\"net.inet.ip.forwarding\", []_C_int{4, 2, 0, 1}},\n\t{\"net.inet.ip.ifq.congestion\", []_C_int{4, 2, 0, 30, 4}},\n\t{\"net.inet.ip.ifq.drops\", []_C_int{4, 2, 0, 30, 3}},\n\t{\"net.inet.ip.ifq.len\", []_C_int{4, 2, 0, 30, 1}},\n\t{\"net.inet.ip.ifq.maxlen\", []_C_int{4, 2, 0, 30, 2}},\n\t{\"net.inet.ip.maxqueue\", []_C_int{4, 2, 0, 11}},\n\t{\"net.inet.ip.mforwarding\", []_C_int{4, 2, 0, 31}},\n\t{\"net.inet.ip.mrtmfc\", []_C_int{4, 2, 0, 37}},\n\t{\"net.inet.ip.mrtproto\", []_C_int{4, 2, 0, 34}},\n\t{\"net.inet.ip.mrtstats\", []_C_int{4, 2, 0, 35}},\n\t{\"net.inet.ip.mrtvif\", []_C_int{4, 2, 0, 38}},\n\t{\"net.inet.ip.mtu\", []_C_int{4, 2, 0, 4}},\n\t{\"net.inet.ip.mtudisc\", []_C_int{4, 2, 0, 27}},\n\t{\"net.inet.ip.mtudisctimeout\", []_C_int{4, 2, 0, 28}},\n\t{\"net.inet.ip.multipath\", []_C_int{4, 2, 0, 32}},\n\t{\"net.inet.ip.portfirst\", []_C_int{4, 2, 0, 7}},\n\t{\"net.inet.ip.porthifirst\", []_C_int{4, 2, 0, 9}},\n\t{\"net.inet.ip.porthilast\", []_C_int{4, 2, 0, 10}},\n\t{\"net.inet.ip.portlast\", []_C_int{4, 2, 0, 8}},\n\t{\"net.inet.ip.redirect\", []_C_int{4, 2, 0, 2}},\n\t{\"net.inet.ip.sourceroute\", []_C_int{4, 2, 0, 5}},\n\t{\"net.inet.ip.stats\", []_C_int{4, 2, 0, 33}},\n\t{\"net.inet.ip.ttl\", []_C_int{4, 2, 0, 3}},\n\t{\"net.inet.ipcomp.enable\", []_C_int{4, 2, 108, 1}},\n\t{\"net.inet.ipcomp.stats\", []_C_int{4, 2, 108, 2}},\n\t{\"net.inet.ipip.allow\", []_C_int{4, 2, 4, 1}},\n\t{\"net.inet.ipip.stats\", []_C_int{4, 2, 4, 2}},\n\t{\"net.inet.pfsync.stats\", []_C_int{4, 2, 240, 1}},\n\t{\"net.inet.tcp.ackonpush\", []_C_int{4, 2, 6, 13}},\n\t{\"net.inet.tcp.always_keepalive\", []_C_int{4, 2, 6, 22}},\n\t{\"net.inet.tcp.baddynamic\", []_C_int{4, 2, 6, 6}},\n\t{\"net.inet.tcp.drop\", []_C_int{4, 2, 6, 19}},\n\t{\"net.inet.tcp.ecn\", []_C_int{4, 2, 6, 14}},\n\t{\"net.inet.tcp.ident\", []_C_int{4, 2, 6, 9}},\n\t{\"net.inet.tcp.keepidle\", []_C_int{4, 2, 6, 3}},\n\t{\"net.inet.tcp.keepinittime\", []_C_int{4, 2, 6, 2}},\n\t{\"net.inet.tcp.keepintvl\", []_C_int{4, 2, 6, 4}},\n\t{\"net.inet.tcp.mssdflt\", []_C_int{4, 2, 6, 11}},\n\t{\"net.inet.tcp.reasslimit\", []_C_int{4, 2, 6, 18}},\n\t{\"net.inet.tcp.rfc1323\", []_C_int{4, 2, 6, 1}},\n\t{\"net.inet.tcp.rfc3390\", []_C_int{4, 2, 6, 17}},\n\t{\"net.inet.tcp.rootonly\", []_C_int{4, 2, 6, 24}},\n\t{\"net.inet.tcp.rstppslimit\", []_C_int{4, 2, 6, 12}},\n\t{\"net.inet.tcp.sack\", []_C_int{4, 2, 6, 10}},\n\t{\"net.inet.tcp.sackholelimit\", []_C_int{4, 2, 6, 20}},\n\t{\"net.inet.tcp.slowhz\", []_C_int{4, 2, 6, 5}},\n\t{\"net.inet.tcp.stats\", []_C_int{4, 2, 6, 21}},\n\t{\"net.inet.tcp.synbucketlimit\", []_C_int{4, 2, 6, 16}},\n\t{\"net.inet.tcp.syncachelimit\", []_C_int{4, 2, 6, 15}},\n\t{\"net.inet.tcp.synhashsize\", []_C_int{4, 2, 6, 25}},\n\t{\"net.inet.tcp.synuselimit\", []_C_int{4, 2, 6, 23}},\n\t{\"net.inet.udp.baddynamic\", []_C_int{4, 2, 17, 2}},\n\t{\"net.inet.udp.checksum\", []_C_int{4, 2, 17, 1}},\n\t{\"net.inet.udp.recvspace\", []_C_int{4, 2, 17, 3}},\n\t{\"net.inet.udp.rootonly\", []_C_int{4, 2, 17, 6}},\n\t{\"net.inet.udp.sendspace\", []_C_int{4, 2, 17, 4}},\n\t{\"net.inet.udp.stats\", []_C_int{4, 2, 17, 5}},\n\t{\"net.inet6.divert.recvspace\", []_C_int{4, 24, 86, 1}},\n\t{\"net.inet6.divert.sendspace\", []_C_int{4, 24, 86, 2}},\n\t{\"net.inet6.divert.stats\", []_C_int{4, 24, 86, 3}},\n\t{\"net.inet6.icmp6.errppslimit\", []_C_int{4, 24, 30, 14}},\n\t{\"net.inet6.icmp6.mtudisc_hiwat\", []_C_int{4, 24, 30, 16}},\n\t{\"net.inet6.icmp6.mtudisc_lowat\", []_C_int{4, 24, 30, 17}},\n\t{\"net.inet6.icmp6.nd6_debug\", []_C_int{4, 24, 30, 18}},\n\t{\"net.inet6.icmp6.nd6_delay\", []_C_int{4, 24, 30, 8}},\n\t{\"net.inet6.icmp6.nd6_maxnudhint\", []_C_int{4, 24, 30, 15}},\n\t{\"net.inet6.icmp6.nd6_mmaxtries\", []_C_int{4, 24, 30, 10}},\n\t{\"net.inet6.icmp6.nd6_umaxtries\", []_C_int{4, 24, 30, 9}},\n\t{\"net.inet6.icmp6.redirtimeout\", []_C_int{4, 24, 30, 3}},\n\t{\"net.inet6.ip6.auto_flowlabel\", []_C_int{4, 24, 17, 17}},\n\t{\"net.inet6.ip6.dad_count\", []_C_int{4, 24, 17, 16}},\n\t{\"net.inet6.ip6.dad_pending\", []_C_int{4, 24, 17, 49}},\n\t{\"net.inet6.ip6.defmcasthlim\", []_C_int{4, 24, 17, 18}},\n\t{\"net.inet6.ip6.forwarding\", []_C_int{4, 24, 17, 1}},\n\t{\"net.inet6.ip6.forwsrcrt\", []_C_int{4, 24, 17, 5}},\n\t{\"net.inet6.ip6.hdrnestlimit\", []_C_int{4, 24, 17, 15}},\n\t{\"net.inet6.ip6.hlim\", []_C_int{4, 24, 17, 3}},\n\t{\"net.inet6.ip6.log_interval\", []_C_int{4, 24, 17, 14}},\n\t{\"net.inet6.ip6.maxdynroutes\", []_C_int{4, 24, 17, 48}},\n\t{\"net.inet6.ip6.maxfragpackets\", []_C_int{4, 24, 17, 9}},\n\t{\"net.inet6.ip6.maxfrags\", []_C_int{4, 24, 17, 41}},\n\t{\"net.inet6.ip6.mforwarding\", []_C_int{4, 24, 17, 42}},\n\t{\"net.inet6.ip6.mrtmfc\", []_C_int{4, 24, 17, 53}},\n\t{\"net.inet6.ip6.mrtmif\", []_C_int{4, 24, 17, 52}},\n\t{\"net.inet6.ip6.mrtproto\", []_C_int{4, 24, 17, 8}},\n\t{\"net.inet6.ip6.mtudisctimeout\", []_C_int{4, 24, 17, 50}},\n\t{\"net.inet6.ip6.multicast_mtudisc\", []_C_int{4, 24, 17, 44}},\n\t{\"net.inet6.ip6.multipath\", []_C_int{4, 24, 17, 43}},\n\t{\"net.inet6.ip6.neighborgcthresh\", []_C_int{4, 24, 17, 45}},\n\t{\"net.inet6.ip6.redirect\", []_C_int{4, 24, 17, 2}},\n\t{\"net.inet6.ip6.soiikey\", []_C_int{4, 24, 17, 54}},\n\t{\"net.inet6.ip6.sourcecheck\", []_C_int{4, 24, 17, 10}},\n\t{\"net.inet6.ip6.sourcecheck_logint\", []_C_int{4, 24, 17, 11}},\n\t{\"net.inet6.ip6.use_deprecated\", []_C_int{4, 24, 17, 21}},\n\t{\"net.key.sadb_dump\", []_C_int{4, 30, 1}},\n\t{\"net.key.spd_dump\", []_C_int{4, 30, 2}},\n\t{\"net.mpls.ifq.congestion\", []_C_int{4, 33, 3, 4}},\n\t{\"net.mpls.ifq.drops\", []_C_int{4, 33, 3, 3}},\n\t{\"net.mpls.ifq.len\", []_C_int{4, 33, 3, 1}},\n\t{\"net.mpls.ifq.maxlen\", []_C_int{4, 33, 3, 2}},\n\t{\"net.mpls.mapttl_ip\", []_C_int{4, 33, 5}},\n\t{\"net.mpls.mapttl_ip6\", []_C_int{4, 33, 6}},\n\t{\"net.mpls.ttl\", []_C_int{4, 33, 2}},\n\t{\"net.pflow.stats\", []_C_int{4, 34, 1}},\n\t{\"net.pipex.enable\", []_C_int{4, 35, 1}},\n\t{\"vm.anonmin\", []_C_int{2, 7}},\n\t{\"vm.loadavg\", []_C_int{2, 2}},\n\t{\"vm.malloc_conf\", []_C_int{2, 12}},\n\t{\"vm.maxslp\", []_C_int{2, 10}},\n\t{\"vm.nkmempages\", []_C_int{2, 6}},\n\t{\"vm.psstrings\", []_C_int{2, 3}},\n\t{\"vm.swapencrypt.enable\", []_C_int{2, 5, 0}},\n\t{\"vm.swapencrypt.keyscreated\", []_C_int{2, 5, 1}},\n\t{\"vm.swapencrypt.keysdeleted\", []_C_int{2, 5, 2}},\n\t{\"vm.uspace\", []_C_int{2, 11}},\n\t{\"vm.uvmexp\", []_C_int{2, 4}},\n\t{\"vm.vmmeter\", []_C_int{2, 1}},\n\t{\"vm.vnodemin\", []_C_int{2, 9}},\n\t{\"vm.vtextmin\", []_C_int{2, 8}},\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsysctl_openbsd_mips64.go",
    "content": "// go run mksysctl_openbsd.go\n// Code generated by the command above; DO NOT EDIT.\n\n//go:build mips64 && openbsd\n\npackage unix\n\ntype mibentry struct {\n\tctlname string\n\tctloid  []_C_int\n}\n\nvar sysctlMib = []mibentry{\n\t{\"ddb.console\", []_C_int{9, 6}},\n\t{\"ddb.log\", []_C_int{9, 7}},\n\t{\"ddb.max_line\", []_C_int{9, 3}},\n\t{\"ddb.max_width\", []_C_int{9, 2}},\n\t{\"ddb.panic\", []_C_int{9, 5}},\n\t{\"ddb.profile\", []_C_int{9, 9}},\n\t{\"ddb.radix\", []_C_int{9, 1}},\n\t{\"ddb.tab_stop_width\", []_C_int{9, 4}},\n\t{\"ddb.trigger\", []_C_int{9, 8}},\n\t{\"fs.posix.setuid\", []_C_int{3, 1, 1}},\n\t{\"hw.allowpowerdown\", []_C_int{6, 22}},\n\t{\"hw.byteorder\", []_C_int{6, 4}},\n\t{\"hw.cpuspeed\", []_C_int{6, 12}},\n\t{\"hw.diskcount\", []_C_int{6, 10}},\n\t{\"hw.disknames\", []_C_int{6, 8}},\n\t{\"hw.diskstats\", []_C_int{6, 9}},\n\t{\"hw.machine\", []_C_int{6, 1}},\n\t{\"hw.model\", []_C_int{6, 2}},\n\t{\"hw.ncpu\", []_C_int{6, 3}},\n\t{\"hw.ncpufound\", []_C_int{6, 21}},\n\t{\"hw.ncpuonline\", []_C_int{6, 25}},\n\t{\"hw.pagesize\", []_C_int{6, 7}},\n\t{\"hw.perfpolicy\", []_C_int{6, 23}},\n\t{\"hw.physmem\", []_C_int{6, 19}},\n\t{\"hw.power\", []_C_int{6, 26}},\n\t{\"hw.product\", []_C_int{6, 15}},\n\t{\"hw.serialno\", []_C_int{6, 17}},\n\t{\"hw.setperf\", []_C_int{6, 13}},\n\t{\"hw.smt\", []_C_int{6, 24}},\n\t{\"hw.usermem\", []_C_int{6, 20}},\n\t{\"hw.uuid\", []_C_int{6, 18}},\n\t{\"hw.vendor\", []_C_int{6, 14}},\n\t{\"hw.version\", []_C_int{6, 16}},\n\t{\"kern.allowdt\", []_C_int{1, 65}},\n\t{\"kern.allowkmem\", []_C_int{1, 52}},\n\t{\"kern.argmax\", []_C_int{1, 8}},\n\t{\"kern.audio\", []_C_int{1, 84}},\n\t{\"kern.boottime\", []_C_int{1, 21}},\n\t{\"kern.bufcachepercent\", []_C_int{1, 72}},\n\t{\"kern.ccpu\", []_C_int{1, 45}},\n\t{\"kern.clockrate\", []_C_int{1, 12}},\n\t{\"kern.consbuf\", []_C_int{1, 83}},\n\t{\"kern.consbufsize\", []_C_int{1, 82}},\n\t{\"kern.consdev\", []_C_int{1, 75}},\n\t{\"kern.cp_time\", []_C_int{1, 40}},\n\t{\"kern.cp_time2\", []_C_int{1, 71}},\n\t{\"kern.cpustats\", []_C_int{1, 85}},\n\t{\"kern.domainname\", []_C_int{1, 22}},\n\t{\"kern.file\", []_C_int{1, 73}},\n\t{\"kern.forkstat\", []_C_int{1, 42}},\n\t{\"kern.fscale\", []_C_int{1, 46}},\n\t{\"kern.fsync\", []_C_int{1, 33}},\n\t{\"kern.global_ptrace\", []_C_int{1, 81}},\n\t{\"kern.hostid\", []_C_int{1, 11}},\n\t{\"kern.hostname\", []_C_int{1, 10}},\n\t{\"kern.intrcnt.nintrcnt\", []_C_int{1, 63, 1}},\n\t{\"kern.job_control\", []_C_int{1, 19}},\n\t{\"kern.malloc.buckets\", []_C_int{1, 39, 1}},\n\t{\"kern.malloc.kmemnames\", []_C_int{1, 39, 3}},\n\t{\"kern.maxclusters\", []_C_int{1, 67}},\n\t{\"kern.maxfiles\", []_C_int{1, 7}},\n\t{\"kern.maxlocksperuid\", []_C_int{1, 70}},\n\t{\"kern.maxpartitions\", []_C_int{1, 23}},\n\t{\"kern.maxproc\", []_C_int{1, 6}},\n\t{\"kern.maxthread\", []_C_int{1, 25}},\n\t{\"kern.maxvnodes\", []_C_int{1, 5}},\n\t{\"kern.mbstat\", []_C_int{1, 59}},\n\t{\"kern.msgbuf\", []_C_int{1, 48}},\n\t{\"kern.msgbufsize\", []_C_int{1, 38}},\n\t{\"kern.nchstats\", []_C_int{1, 41}},\n\t{\"kern.netlivelocks\", []_C_int{1, 76}},\n\t{\"kern.nfiles\", []_C_int{1, 56}},\n\t{\"kern.ngroups\", []_C_int{1, 18}},\n\t{\"kern.nosuidcoredump\", []_C_int{1, 32}},\n\t{\"kern.nprocs\", []_C_int{1, 47}},\n\t{\"kern.nthreads\", []_C_int{1, 26}},\n\t{\"kern.numvnodes\", []_C_int{1, 58}},\n\t{\"kern.osrelease\", []_C_int{1, 2}},\n\t{\"kern.osrevision\", []_C_int{1, 3}},\n\t{\"kern.ostype\", []_C_int{1, 1}},\n\t{\"kern.osversion\", []_C_int{1, 27}},\n\t{\"kern.pfstatus\", []_C_int{1, 86}},\n\t{\"kern.pool_debug\", []_C_int{1, 77}},\n\t{\"kern.posix1version\", []_C_int{1, 17}},\n\t{\"kern.proc\", []_C_int{1, 66}},\n\t{\"kern.rawpartition\", []_C_int{1, 24}},\n\t{\"kern.saved_ids\", []_C_int{1, 20}},\n\t{\"kern.securelevel\", []_C_int{1, 9}},\n\t{\"kern.seminfo\", []_C_int{1, 61}},\n\t{\"kern.shminfo\", []_C_int{1, 62}},\n\t{\"kern.somaxconn\", []_C_int{1, 28}},\n\t{\"kern.sominconn\", []_C_int{1, 29}},\n\t{\"kern.splassert\", []_C_int{1, 54}},\n\t{\"kern.stackgap_random\", []_C_int{1, 50}},\n\t{\"kern.sysvipc_info\", []_C_int{1, 51}},\n\t{\"kern.sysvmsg\", []_C_int{1, 34}},\n\t{\"kern.sysvsem\", []_C_int{1, 35}},\n\t{\"kern.sysvshm\", []_C_int{1, 36}},\n\t{\"kern.timecounter.choice\", []_C_int{1, 69, 4}},\n\t{\"kern.timecounter.hardware\", []_C_int{1, 69, 3}},\n\t{\"kern.timecounter.tick\", []_C_int{1, 69, 1}},\n\t{\"kern.timecounter.timestepwarnings\", []_C_int{1, 69, 2}},\n\t{\"kern.timeout_stats\", []_C_int{1, 87}},\n\t{\"kern.tty.tk_cancc\", []_C_int{1, 44, 4}},\n\t{\"kern.tty.tk_nin\", []_C_int{1, 44, 1}},\n\t{\"kern.tty.tk_nout\", []_C_int{1, 44, 2}},\n\t{\"kern.tty.tk_rawcc\", []_C_int{1, 44, 3}},\n\t{\"kern.tty.ttyinfo\", []_C_int{1, 44, 5}},\n\t{\"kern.ttycount\", []_C_int{1, 57}},\n\t{\"kern.utc_offset\", []_C_int{1, 88}},\n\t{\"kern.version\", []_C_int{1, 4}},\n\t{\"kern.video\", []_C_int{1, 89}},\n\t{\"kern.watchdog.auto\", []_C_int{1, 64, 2}},\n\t{\"kern.watchdog.period\", []_C_int{1, 64, 1}},\n\t{\"kern.witnesswatch\", []_C_int{1, 53}},\n\t{\"kern.wxabort\", []_C_int{1, 74}},\n\t{\"net.bpf.bufsize\", []_C_int{4, 31, 1}},\n\t{\"net.bpf.maxbufsize\", []_C_int{4, 31, 2}},\n\t{\"net.inet.ah.enable\", []_C_int{4, 2, 51, 1}},\n\t{\"net.inet.ah.stats\", []_C_int{4, 2, 51, 2}},\n\t{\"net.inet.carp.allow\", []_C_int{4, 2, 112, 1}},\n\t{\"net.inet.carp.log\", []_C_int{4, 2, 112, 3}},\n\t{\"net.inet.carp.preempt\", []_C_int{4, 2, 112, 2}},\n\t{\"net.inet.carp.stats\", []_C_int{4, 2, 112, 4}},\n\t{\"net.inet.divert.recvspace\", []_C_int{4, 2, 258, 1}},\n\t{\"net.inet.divert.sendspace\", []_C_int{4, 2, 258, 2}},\n\t{\"net.inet.divert.stats\", []_C_int{4, 2, 258, 3}},\n\t{\"net.inet.esp.enable\", []_C_int{4, 2, 50, 1}},\n\t{\"net.inet.esp.stats\", []_C_int{4, 2, 50, 4}},\n\t{\"net.inet.esp.udpencap\", []_C_int{4, 2, 50, 2}},\n\t{\"net.inet.esp.udpencap_port\", []_C_int{4, 2, 50, 3}},\n\t{\"net.inet.etherip.allow\", []_C_int{4, 2, 97, 1}},\n\t{\"net.inet.etherip.stats\", []_C_int{4, 2, 97, 2}},\n\t{\"net.inet.gre.allow\", []_C_int{4, 2, 47, 1}},\n\t{\"net.inet.gre.wccp\", []_C_int{4, 2, 47, 2}},\n\t{\"net.inet.icmp.bmcastecho\", []_C_int{4, 2, 1, 2}},\n\t{\"net.inet.icmp.errppslimit\", []_C_int{4, 2, 1, 3}},\n\t{\"net.inet.icmp.maskrepl\", []_C_int{4, 2, 1, 1}},\n\t{\"net.inet.icmp.rediraccept\", []_C_int{4, 2, 1, 4}},\n\t{\"net.inet.icmp.redirtimeout\", []_C_int{4, 2, 1, 5}},\n\t{\"net.inet.icmp.stats\", []_C_int{4, 2, 1, 7}},\n\t{\"net.inet.icmp.tstamprepl\", []_C_int{4, 2, 1, 6}},\n\t{\"net.inet.igmp.stats\", []_C_int{4, 2, 2, 1}},\n\t{\"net.inet.ip.arpdown\", []_C_int{4, 2, 0, 40}},\n\t{\"net.inet.ip.arpqueued\", []_C_int{4, 2, 0, 36}},\n\t{\"net.inet.ip.arptimeout\", []_C_int{4, 2, 0, 39}},\n\t{\"net.inet.ip.encdebug\", []_C_int{4, 2, 0, 12}},\n\t{\"net.inet.ip.forwarding\", []_C_int{4, 2, 0, 1}},\n\t{\"net.inet.ip.ifq.congestion\", []_C_int{4, 2, 0, 30, 4}},\n\t{\"net.inet.ip.ifq.drops\", []_C_int{4, 2, 0, 30, 3}},\n\t{\"net.inet.ip.ifq.len\", []_C_int{4, 2, 0, 30, 1}},\n\t{\"net.inet.ip.ifq.maxlen\", []_C_int{4, 2, 0, 30, 2}},\n\t{\"net.inet.ip.maxqueue\", []_C_int{4, 2, 0, 11}},\n\t{\"net.inet.ip.mforwarding\", []_C_int{4, 2, 0, 31}},\n\t{\"net.inet.ip.mrtmfc\", []_C_int{4, 2, 0, 37}},\n\t{\"net.inet.ip.mrtproto\", []_C_int{4, 2, 0, 34}},\n\t{\"net.inet.ip.mrtstats\", []_C_int{4, 2, 0, 35}},\n\t{\"net.inet.ip.mrtvif\", []_C_int{4, 2, 0, 38}},\n\t{\"net.inet.ip.mtu\", []_C_int{4, 2, 0, 4}},\n\t{\"net.inet.ip.mtudisc\", []_C_int{4, 2, 0, 27}},\n\t{\"net.inet.ip.mtudisctimeout\", []_C_int{4, 2, 0, 28}},\n\t{\"net.inet.ip.multipath\", []_C_int{4, 2, 0, 32}},\n\t{\"net.inet.ip.portfirst\", []_C_int{4, 2, 0, 7}},\n\t{\"net.inet.ip.porthifirst\", []_C_int{4, 2, 0, 9}},\n\t{\"net.inet.ip.porthilast\", []_C_int{4, 2, 0, 10}},\n\t{\"net.inet.ip.portlast\", []_C_int{4, 2, 0, 8}},\n\t{\"net.inet.ip.redirect\", []_C_int{4, 2, 0, 2}},\n\t{\"net.inet.ip.sourceroute\", []_C_int{4, 2, 0, 5}},\n\t{\"net.inet.ip.stats\", []_C_int{4, 2, 0, 33}},\n\t{\"net.inet.ip.ttl\", []_C_int{4, 2, 0, 3}},\n\t{\"net.inet.ipcomp.enable\", []_C_int{4, 2, 108, 1}},\n\t{\"net.inet.ipcomp.stats\", []_C_int{4, 2, 108, 2}},\n\t{\"net.inet.ipip.allow\", []_C_int{4, 2, 4, 1}},\n\t{\"net.inet.ipip.stats\", []_C_int{4, 2, 4, 2}},\n\t{\"net.inet.pfsync.stats\", []_C_int{4, 2, 240, 1}},\n\t{\"net.inet.tcp.ackonpush\", []_C_int{4, 2, 6, 13}},\n\t{\"net.inet.tcp.always_keepalive\", []_C_int{4, 2, 6, 22}},\n\t{\"net.inet.tcp.baddynamic\", []_C_int{4, 2, 6, 6}},\n\t{\"net.inet.tcp.drop\", []_C_int{4, 2, 6, 19}},\n\t{\"net.inet.tcp.ecn\", []_C_int{4, 2, 6, 14}},\n\t{\"net.inet.tcp.ident\", []_C_int{4, 2, 6, 9}},\n\t{\"net.inet.tcp.keepidle\", []_C_int{4, 2, 6, 3}},\n\t{\"net.inet.tcp.keepinittime\", []_C_int{4, 2, 6, 2}},\n\t{\"net.inet.tcp.keepintvl\", []_C_int{4, 2, 6, 4}},\n\t{\"net.inet.tcp.mssdflt\", []_C_int{4, 2, 6, 11}},\n\t{\"net.inet.tcp.reasslimit\", []_C_int{4, 2, 6, 18}},\n\t{\"net.inet.tcp.rfc1323\", []_C_int{4, 2, 6, 1}},\n\t{\"net.inet.tcp.rfc3390\", []_C_int{4, 2, 6, 17}},\n\t{\"net.inet.tcp.rootonly\", []_C_int{4, 2, 6, 24}},\n\t{\"net.inet.tcp.rstppslimit\", []_C_int{4, 2, 6, 12}},\n\t{\"net.inet.tcp.sack\", []_C_int{4, 2, 6, 10}},\n\t{\"net.inet.tcp.sackholelimit\", []_C_int{4, 2, 6, 20}},\n\t{\"net.inet.tcp.slowhz\", []_C_int{4, 2, 6, 5}},\n\t{\"net.inet.tcp.stats\", []_C_int{4, 2, 6, 21}},\n\t{\"net.inet.tcp.synbucketlimit\", []_C_int{4, 2, 6, 16}},\n\t{\"net.inet.tcp.syncachelimit\", []_C_int{4, 2, 6, 15}},\n\t{\"net.inet.tcp.synhashsize\", []_C_int{4, 2, 6, 25}},\n\t{\"net.inet.tcp.synuselimit\", []_C_int{4, 2, 6, 23}},\n\t{\"net.inet.udp.baddynamic\", []_C_int{4, 2, 17, 2}},\n\t{\"net.inet.udp.checksum\", []_C_int{4, 2, 17, 1}},\n\t{\"net.inet.udp.recvspace\", []_C_int{4, 2, 17, 3}},\n\t{\"net.inet.udp.rootonly\", []_C_int{4, 2, 17, 6}},\n\t{\"net.inet.udp.sendspace\", []_C_int{4, 2, 17, 4}},\n\t{\"net.inet.udp.stats\", []_C_int{4, 2, 17, 5}},\n\t{\"net.inet6.divert.recvspace\", []_C_int{4, 24, 86, 1}},\n\t{\"net.inet6.divert.sendspace\", []_C_int{4, 24, 86, 2}},\n\t{\"net.inet6.divert.stats\", []_C_int{4, 24, 86, 3}},\n\t{\"net.inet6.icmp6.errppslimit\", []_C_int{4, 24, 30, 14}},\n\t{\"net.inet6.icmp6.mtudisc_hiwat\", []_C_int{4, 24, 30, 16}},\n\t{\"net.inet6.icmp6.mtudisc_lowat\", []_C_int{4, 24, 30, 17}},\n\t{\"net.inet6.icmp6.nd6_debug\", []_C_int{4, 24, 30, 18}},\n\t{\"net.inet6.icmp6.nd6_delay\", []_C_int{4, 24, 30, 8}},\n\t{\"net.inet6.icmp6.nd6_maxnudhint\", []_C_int{4, 24, 30, 15}},\n\t{\"net.inet6.icmp6.nd6_mmaxtries\", []_C_int{4, 24, 30, 10}},\n\t{\"net.inet6.icmp6.nd6_umaxtries\", []_C_int{4, 24, 30, 9}},\n\t{\"net.inet6.icmp6.redirtimeout\", []_C_int{4, 24, 30, 3}},\n\t{\"net.inet6.ip6.auto_flowlabel\", []_C_int{4, 24, 17, 17}},\n\t{\"net.inet6.ip6.dad_count\", []_C_int{4, 24, 17, 16}},\n\t{\"net.inet6.ip6.dad_pending\", []_C_int{4, 24, 17, 49}},\n\t{\"net.inet6.ip6.defmcasthlim\", []_C_int{4, 24, 17, 18}},\n\t{\"net.inet6.ip6.forwarding\", []_C_int{4, 24, 17, 1}},\n\t{\"net.inet6.ip6.forwsrcrt\", []_C_int{4, 24, 17, 5}},\n\t{\"net.inet6.ip6.hdrnestlimit\", []_C_int{4, 24, 17, 15}},\n\t{\"net.inet6.ip6.hlim\", []_C_int{4, 24, 17, 3}},\n\t{\"net.inet6.ip6.log_interval\", []_C_int{4, 24, 17, 14}},\n\t{\"net.inet6.ip6.maxdynroutes\", []_C_int{4, 24, 17, 48}},\n\t{\"net.inet6.ip6.maxfragpackets\", []_C_int{4, 24, 17, 9}},\n\t{\"net.inet6.ip6.maxfrags\", []_C_int{4, 24, 17, 41}},\n\t{\"net.inet6.ip6.mforwarding\", []_C_int{4, 24, 17, 42}},\n\t{\"net.inet6.ip6.mrtmfc\", []_C_int{4, 24, 17, 53}},\n\t{\"net.inet6.ip6.mrtmif\", []_C_int{4, 24, 17, 52}},\n\t{\"net.inet6.ip6.mrtproto\", []_C_int{4, 24, 17, 8}},\n\t{\"net.inet6.ip6.mtudisctimeout\", []_C_int{4, 24, 17, 50}},\n\t{\"net.inet6.ip6.multicast_mtudisc\", []_C_int{4, 24, 17, 44}},\n\t{\"net.inet6.ip6.multipath\", []_C_int{4, 24, 17, 43}},\n\t{\"net.inet6.ip6.neighborgcthresh\", []_C_int{4, 24, 17, 45}},\n\t{\"net.inet6.ip6.redirect\", []_C_int{4, 24, 17, 2}},\n\t{\"net.inet6.ip6.soiikey\", []_C_int{4, 24, 17, 54}},\n\t{\"net.inet6.ip6.sourcecheck\", []_C_int{4, 24, 17, 10}},\n\t{\"net.inet6.ip6.sourcecheck_logint\", []_C_int{4, 24, 17, 11}},\n\t{\"net.inet6.ip6.use_deprecated\", []_C_int{4, 24, 17, 21}},\n\t{\"net.key.sadb_dump\", []_C_int{4, 30, 1}},\n\t{\"net.key.spd_dump\", []_C_int{4, 30, 2}},\n\t{\"net.mpls.ifq.congestion\", []_C_int{4, 33, 3, 4}},\n\t{\"net.mpls.ifq.drops\", []_C_int{4, 33, 3, 3}},\n\t{\"net.mpls.ifq.len\", []_C_int{4, 33, 3, 1}},\n\t{\"net.mpls.ifq.maxlen\", []_C_int{4, 33, 3, 2}},\n\t{\"net.mpls.mapttl_ip\", []_C_int{4, 33, 5}},\n\t{\"net.mpls.mapttl_ip6\", []_C_int{4, 33, 6}},\n\t{\"net.mpls.ttl\", []_C_int{4, 33, 2}},\n\t{\"net.pflow.stats\", []_C_int{4, 34, 1}},\n\t{\"net.pipex.enable\", []_C_int{4, 35, 1}},\n\t{\"vm.anonmin\", []_C_int{2, 7}},\n\t{\"vm.loadavg\", []_C_int{2, 2}},\n\t{\"vm.malloc_conf\", []_C_int{2, 12}},\n\t{\"vm.maxslp\", []_C_int{2, 10}},\n\t{\"vm.nkmempages\", []_C_int{2, 6}},\n\t{\"vm.psstrings\", []_C_int{2, 3}},\n\t{\"vm.swapencrypt.enable\", []_C_int{2, 5, 0}},\n\t{\"vm.swapencrypt.keyscreated\", []_C_int{2, 5, 1}},\n\t{\"vm.swapencrypt.keysdeleted\", []_C_int{2, 5, 2}},\n\t{\"vm.uspace\", []_C_int{2, 11}},\n\t{\"vm.uvmexp\", []_C_int{2, 4}},\n\t{\"vm.vmmeter\", []_C_int{2, 1}},\n\t{\"vm.vnodemin\", []_C_int{2, 9}},\n\t{\"vm.vtextmin\", []_C_int{2, 8}},\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsysctl_openbsd_ppc64.go",
    "content": "// go run mksysctl_openbsd.go\n// Code generated by the command above; DO NOT EDIT.\n\n//go:build ppc64 && openbsd\n\npackage unix\n\ntype mibentry struct {\n\tctlname string\n\tctloid  []_C_int\n}\n\nvar sysctlMib = []mibentry{\n\t{\"ddb.console\", []_C_int{9, 6}},\n\t{\"ddb.log\", []_C_int{9, 7}},\n\t{\"ddb.max_line\", []_C_int{9, 3}},\n\t{\"ddb.max_width\", []_C_int{9, 2}},\n\t{\"ddb.panic\", []_C_int{9, 5}},\n\t{\"ddb.profile\", []_C_int{9, 9}},\n\t{\"ddb.radix\", []_C_int{9, 1}},\n\t{\"ddb.tab_stop_width\", []_C_int{9, 4}},\n\t{\"ddb.trigger\", []_C_int{9, 8}},\n\t{\"fs.posix.setuid\", []_C_int{3, 1, 1}},\n\t{\"hw.allowpowerdown\", []_C_int{6, 22}},\n\t{\"hw.byteorder\", []_C_int{6, 4}},\n\t{\"hw.cpuspeed\", []_C_int{6, 12}},\n\t{\"hw.diskcount\", []_C_int{6, 10}},\n\t{\"hw.disknames\", []_C_int{6, 8}},\n\t{\"hw.diskstats\", []_C_int{6, 9}},\n\t{\"hw.machine\", []_C_int{6, 1}},\n\t{\"hw.model\", []_C_int{6, 2}},\n\t{\"hw.ncpu\", []_C_int{6, 3}},\n\t{\"hw.ncpufound\", []_C_int{6, 21}},\n\t{\"hw.ncpuonline\", []_C_int{6, 25}},\n\t{\"hw.pagesize\", []_C_int{6, 7}},\n\t{\"hw.perfpolicy\", []_C_int{6, 23}},\n\t{\"hw.physmem\", []_C_int{6, 19}},\n\t{\"hw.power\", []_C_int{6, 26}},\n\t{\"hw.product\", []_C_int{6, 15}},\n\t{\"hw.serialno\", []_C_int{6, 17}},\n\t{\"hw.setperf\", []_C_int{6, 13}},\n\t{\"hw.smt\", []_C_int{6, 24}},\n\t{\"hw.usermem\", []_C_int{6, 20}},\n\t{\"hw.uuid\", []_C_int{6, 18}},\n\t{\"hw.vendor\", []_C_int{6, 14}},\n\t{\"hw.version\", []_C_int{6, 16}},\n\t{\"kern.allowdt\", []_C_int{1, 65}},\n\t{\"kern.allowkmem\", []_C_int{1, 52}},\n\t{\"kern.argmax\", []_C_int{1, 8}},\n\t{\"kern.audio\", []_C_int{1, 84}},\n\t{\"kern.boottime\", []_C_int{1, 21}},\n\t{\"kern.bufcachepercent\", []_C_int{1, 72}},\n\t{\"kern.ccpu\", []_C_int{1, 45}},\n\t{\"kern.clockrate\", []_C_int{1, 12}},\n\t{\"kern.consbuf\", []_C_int{1, 83}},\n\t{\"kern.consbufsize\", []_C_int{1, 82}},\n\t{\"kern.consdev\", []_C_int{1, 75}},\n\t{\"kern.cp_time\", []_C_int{1, 40}},\n\t{\"kern.cp_time2\", []_C_int{1, 71}},\n\t{\"kern.cpustats\", []_C_int{1, 85}},\n\t{\"kern.domainname\", []_C_int{1, 22}},\n\t{\"kern.file\", []_C_int{1, 73}},\n\t{\"kern.forkstat\", []_C_int{1, 42}},\n\t{\"kern.fscale\", []_C_int{1, 46}},\n\t{\"kern.fsync\", []_C_int{1, 33}},\n\t{\"kern.global_ptrace\", []_C_int{1, 81}},\n\t{\"kern.hostid\", []_C_int{1, 11}},\n\t{\"kern.hostname\", []_C_int{1, 10}},\n\t{\"kern.intrcnt.nintrcnt\", []_C_int{1, 63, 1}},\n\t{\"kern.job_control\", []_C_int{1, 19}},\n\t{\"kern.malloc.buckets\", []_C_int{1, 39, 1}},\n\t{\"kern.malloc.kmemnames\", []_C_int{1, 39, 3}},\n\t{\"kern.maxclusters\", []_C_int{1, 67}},\n\t{\"kern.maxfiles\", []_C_int{1, 7}},\n\t{\"kern.maxlocksperuid\", []_C_int{1, 70}},\n\t{\"kern.maxpartitions\", []_C_int{1, 23}},\n\t{\"kern.maxproc\", []_C_int{1, 6}},\n\t{\"kern.maxthread\", []_C_int{1, 25}},\n\t{\"kern.maxvnodes\", []_C_int{1, 5}},\n\t{\"kern.mbstat\", []_C_int{1, 59}},\n\t{\"kern.msgbuf\", []_C_int{1, 48}},\n\t{\"kern.msgbufsize\", []_C_int{1, 38}},\n\t{\"kern.nchstats\", []_C_int{1, 41}},\n\t{\"kern.netlivelocks\", []_C_int{1, 76}},\n\t{\"kern.nfiles\", []_C_int{1, 56}},\n\t{\"kern.ngroups\", []_C_int{1, 18}},\n\t{\"kern.nosuidcoredump\", []_C_int{1, 32}},\n\t{\"kern.nprocs\", []_C_int{1, 47}},\n\t{\"kern.nthreads\", []_C_int{1, 26}},\n\t{\"kern.numvnodes\", []_C_int{1, 58}},\n\t{\"kern.osrelease\", []_C_int{1, 2}},\n\t{\"kern.osrevision\", []_C_int{1, 3}},\n\t{\"kern.ostype\", []_C_int{1, 1}},\n\t{\"kern.osversion\", []_C_int{1, 27}},\n\t{\"kern.pfstatus\", []_C_int{1, 86}},\n\t{\"kern.pool_debug\", []_C_int{1, 77}},\n\t{\"kern.posix1version\", []_C_int{1, 17}},\n\t{\"kern.proc\", []_C_int{1, 66}},\n\t{\"kern.rawpartition\", []_C_int{1, 24}},\n\t{\"kern.saved_ids\", []_C_int{1, 20}},\n\t{\"kern.securelevel\", []_C_int{1, 9}},\n\t{\"kern.seminfo\", []_C_int{1, 61}},\n\t{\"kern.shminfo\", []_C_int{1, 62}},\n\t{\"kern.somaxconn\", []_C_int{1, 28}},\n\t{\"kern.sominconn\", []_C_int{1, 29}},\n\t{\"kern.splassert\", []_C_int{1, 54}},\n\t{\"kern.stackgap_random\", []_C_int{1, 50}},\n\t{\"kern.sysvipc_info\", []_C_int{1, 51}},\n\t{\"kern.sysvmsg\", []_C_int{1, 34}},\n\t{\"kern.sysvsem\", []_C_int{1, 35}},\n\t{\"kern.sysvshm\", []_C_int{1, 36}},\n\t{\"kern.timecounter.choice\", []_C_int{1, 69, 4}},\n\t{\"kern.timecounter.hardware\", []_C_int{1, 69, 3}},\n\t{\"kern.timecounter.tick\", []_C_int{1, 69, 1}},\n\t{\"kern.timecounter.timestepwarnings\", []_C_int{1, 69, 2}},\n\t{\"kern.timeout_stats\", []_C_int{1, 87}},\n\t{\"kern.tty.tk_cancc\", []_C_int{1, 44, 4}},\n\t{\"kern.tty.tk_nin\", []_C_int{1, 44, 1}},\n\t{\"kern.tty.tk_nout\", []_C_int{1, 44, 2}},\n\t{\"kern.tty.tk_rawcc\", []_C_int{1, 44, 3}},\n\t{\"kern.tty.ttyinfo\", []_C_int{1, 44, 5}},\n\t{\"kern.ttycount\", []_C_int{1, 57}},\n\t{\"kern.utc_offset\", []_C_int{1, 88}},\n\t{\"kern.version\", []_C_int{1, 4}},\n\t{\"kern.video\", []_C_int{1, 89}},\n\t{\"kern.watchdog.auto\", []_C_int{1, 64, 2}},\n\t{\"kern.watchdog.period\", []_C_int{1, 64, 1}},\n\t{\"kern.witnesswatch\", []_C_int{1, 53}},\n\t{\"kern.wxabort\", []_C_int{1, 74}},\n\t{\"net.bpf.bufsize\", []_C_int{4, 31, 1}},\n\t{\"net.bpf.maxbufsize\", []_C_int{4, 31, 2}},\n\t{\"net.inet.ah.enable\", []_C_int{4, 2, 51, 1}},\n\t{\"net.inet.ah.stats\", []_C_int{4, 2, 51, 2}},\n\t{\"net.inet.carp.allow\", []_C_int{4, 2, 112, 1}},\n\t{\"net.inet.carp.log\", []_C_int{4, 2, 112, 3}},\n\t{\"net.inet.carp.preempt\", []_C_int{4, 2, 112, 2}},\n\t{\"net.inet.carp.stats\", []_C_int{4, 2, 112, 4}},\n\t{\"net.inet.divert.recvspace\", []_C_int{4, 2, 258, 1}},\n\t{\"net.inet.divert.sendspace\", []_C_int{4, 2, 258, 2}},\n\t{\"net.inet.divert.stats\", []_C_int{4, 2, 258, 3}},\n\t{\"net.inet.esp.enable\", []_C_int{4, 2, 50, 1}},\n\t{\"net.inet.esp.stats\", []_C_int{4, 2, 50, 4}},\n\t{\"net.inet.esp.udpencap\", []_C_int{4, 2, 50, 2}},\n\t{\"net.inet.esp.udpencap_port\", []_C_int{4, 2, 50, 3}},\n\t{\"net.inet.etherip.allow\", []_C_int{4, 2, 97, 1}},\n\t{\"net.inet.etherip.stats\", []_C_int{4, 2, 97, 2}},\n\t{\"net.inet.gre.allow\", []_C_int{4, 2, 47, 1}},\n\t{\"net.inet.gre.wccp\", []_C_int{4, 2, 47, 2}},\n\t{\"net.inet.icmp.bmcastecho\", []_C_int{4, 2, 1, 2}},\n\t{\"net.inet.icmp.errppslimit\", []_C_int{4, 2, 1, 3}},\n\t{\"net.inet.icmp.maskrepl\", []_C_int{4, 2, 1, 1}},\n\t{\"net.inet.icmp.rediraccept\", []_C_int{4, 2, 1, 4}},\n\t{\"net.inet.icmp.redirtimeout\", []_C_int{4, 2, 1, 5}},\n\t{\"net.inet.icmp.stats\", []_C_int{4, 2, 1, 7}},\n\t{\"net.inet.icmp.tstamprepl\", []_C_int{4, 2, 1, 6}},\n\t{\"net.inet.igmp.stats\", []_C_int{4, 2, 2, 1}},\n\t{\"net.inet.ip.arpdown\", []_C_int{4, 2, 0, 40}},\n\t{\"net.inet.ip.arpqueued\", []_C_int{4, 2, 0, 36}},\n\t{\"net.inet.ip.arptimeout\", []_C_int{4, 2, 0, 39}},\n\t{\"net.inet.ip.encdebug\", []_C_int{4, 2, 0, 12}},\n\t{\"net.inet.ip.forwarding\", []_C_int{4, 2, 0, 1}},\n\t{\"net.inet.ip.ifq.congestion\", []_C_int{4, 2, 0, 30, 4}},\n\t{\"net.inet.ip.ifq.drops\", []_C_int{4, 2, 0, 30, 3}},\n\t{\"net.inet.ip.ifq.len\", []_C_int{4, 2, 0, 30, 1}},\n\t{\"net.inet.ip.ifq.maxlen\", []_C_int{4, 2, 0, 30, 2}},\n\t{\"net.inet.ip.maxqueue\", []_C_int{4, 2, 0, 11}},\n\t{\"net.inet.ip.mforwarding\", []_C_int{4, 2, 0, 31}},\n\t{\"net.inet.ip.mrtmfc\", []_C_int{4, 2, 0, 37}},\n\t{\"net.inet.ip.mrtproto\", []_C_int{4, 2, 0, 34}},\n\t{\"net.inet.ip.mrtstats\", []_C_int{4, 2, 0, 35}},\n\t{\"net.inet.ip.mrtvif\", []_C_int{4, 2, 0, 38}},\n\t{\"net.inet.ip.mtu\", []_C_int{4, 2, 0, 4}},\n\t{\"net.inet.ip.mtudisc\", []_C_int{4, 2, 0, 27}},\n\t{\"net.inet.ip.mtudisctimeout\", []_C_int{4, 2, 0, 28}},\n\t{\"net.inet.ip.multipath\", []_C_int{4, 2, 0, 32}},\n\t{\"net.inet.ip.portfirst\", []_C_int{4, 2, 0, 7}},\n\t{\"net.inet.ip.porthifirst\", []_C_int{4, 2, 0, 9}},\n\t{\"net.inet.ip.porthilast\", []_C_int{4, 2, 0, 10}},\n\t{\"net.inet.ip.portlast\", []_C_int{4, 2, 0, 8}},\n\t{\"net.inet.ip.redirect\", []_C_int{4, 2, 0, 2}},\n\t{\"net.inet.ip.sourceroute\", []_C_int{4, 2, 0, 5}},\n\t{\"net.inet.ip.stats\", []_C_int{4, 2, 0, 33}},\n\t{\"net.inet.ip.ttl\", []_C_int{4, 2, 0, 3}},\n\t{\"net.inet.ipcomp.enable\", []_C_int{4, 2, 108, 1}},\n\t{\"net.inet.ipcomp.stats\", []_C_int{4, 2, 108, 2}},\n\t{\"net.inet.ipip.allow\", []_C_int{4, 2, 4, 1}},\n\t{\"net.inet.ipip.stats\", []_C_int{4, 2, 4, 2}},\n\t{\"net.inet.pfsync.stats\", []_C_int{4, 2, 240, 1}},\n\t{\"net.inet.tcp.ackonpush\", []_C_int{4, 2, 6, 13}},\n\t{\"net.inet.tcp.always_keepalive\", []_C_int{4, 2, 6, 22}},\n\t{\"net.inet.tcp.baddynamic\", []_C_int{4, 2, 6, 6}},\n\t{\"net.inet.tcp.drop\", []_C_int{4, 2, 6, 19}},\n\t{\"net.inet.tcp.ecn\", []_C_int{4, 2, 6, 14}},\n\t{\"net.inet.tcp.ident\", []_C_int{4, 2, 6, 9}},\n\t{\"net.inet.tcp.keepidle\", []_C_int{4, 2, 6, 3}},\n\t{\"net.inet.tcp.keepinittime\", []_C_int{4, 2, 6, 2}},\n\t{\"net.inet.tcp.keepintvl\", []_C_int{4, 2, 6, 4}},\n\t{\"net.inet.tcp.mssdflt\", []_C_int{4, 2, 6, 11}},\n\t{\"net.inet.tcp.reasslimit\", []_C_int{4, 2, 6, 18}},\n\t{\"net.inet.tcp.rfc1323\", []_C_int{4, 2, 6, 1}},\n\t{\"net.inet.tcp.rfc3390\", []_C_int{4, 2, 6, 17}},\n\t{\"net.inet.tcp.rootonly\", []_C_int{4, 2, 6, 24}},\n\t{\"net.inet.tcp.rstppslimit\", []_C_int{4, 2, 6, 12}},\n\t{\"net.inet.tcp.sack\", []_C_int{4, 2, 6, 10}},\n\t{\"net.inet.tcp.sackholelimit\", []_C_int{4, 2, 6, 20}},\n\t{\"net.inet.tcp.slowhz\", []_C_int{4, 2, 6, 5}},\n\t{\"net.inet.tcp.stats\", []_C_int{4, 2, 6, 21}},\n\t{\"net.inet.tcp.synbucketlimit\", []_C_int{4, 2, 6, 16}},\n\t{\"net.inet.tcp.syncachelimit\", []_C_int{4, 2, 6, 15}},\n\t{\"net.inet.tcp.synhashsize\", []_C_int{4, 2, 6, 25}},\n\t{\"net.inet.tcp.synuselimit\", []_C_int{4, 2, 6, 23}},\n\t{\"net.inet.udp.baddynamic\", []_C_int{4, 2, 17, 2}},\n\t{\"net.inet.udp.checksum\", []_C_int{4, 2, 17, 1}},\n\t{\"net.inet.udp.recvspace\", []_C_int{4, 2, 17, 3}},\n\t{\"net.inet.udp.rootonly\", []_C_int{4, 2, 17, 6}},\n\t{\"net.inet.udp.sendspace\", []_C_int{4, 2, 17, 4}},\n\t{\"net.inet.udp.stats\", []_C_int{4, 2, 17, 5}},\n\t{\"net.inet6.divert.recvspace\", []_C_int{4, 24, 86, 1}},\n\t{\"net.inet6.divert.sendspace\", []_C_int{4, 24, 86, 2}},\n\t{\"net.inet6.divert.stats\", []_C_int{4, 24, 86, 3}},\n\t{\"net.inet6.icmp6.errppslimit\", []_C_int{4, 24, 30, 14}},\n\t{\"net.inet6.icmp6.mtudisc_hiwat\", []_C_int{4, 24, 30, 16}},\n\t{\"net.inet6.icmp6.mtudisc_lowat\", []_C_int{4, 24, 30, 17}},\n\t{\"net.inet6.icmp6.nd6_debug\", []_C_int{4, 24, 30, 18}},\n\t{\"net.inet6.icmp6.nd6_delay\", []_C_int{4, 24, 30, 8}},\n\t{\"net.inet6.icmp6.nd6_maxnudhint\", []_C_int{4, 24, 30, 15}},\n\t{\"net.inet6.icmp6.nd6_mmaxtries\", []_C_int{4, 24, 30, 10}},\n\t{\"net.inet6.icmp6.nd6_umaxtries\", []_C_int{4, 24, 30, 9}},\n\t{\"net.inet6.icmp6.redirtimeout\", []_C_int{4, 24, 30, 3}},\n\t{\"net.inet6.ip6.auto_flowlabel\", []_C_int{4, 24, 17, 17}},\n\t{\"net.inet6.ip6.dad_count\", []_C_int{4, 24, 17, 16}},\n\t{\"net.inet6.ip6.dad_pending\", []_C_int{4, 24, 17, 49}},\n\t{\"net.inet6.ip6.defmcasthlim\", []_C_int{4, 24, 17, 18}},\n\t{\"net.inet6.ip6.forwarding\", []_C_int{4, 24, 17, 1}},\n\t{\"net.inet6.ip6.forwsrcrt\", []_C_int{4, 24, 17, 5}},\n\t{\"net.inet6.ip6.hdrnestlimit\", []_C_int{4, 24, 17, 15}},\n\t{\"net.inet6.ip6.hlim\", []_C_int{4, 24, 17, 3}},\n\t{\"net.inet6.ip6.log_interval\", []_C_int{4, 24, 17, 14}},\n\t{\"net.inet6.ip6.maxdynroutes\", []_C_int{4, 24, 17, 48}},\n\t{\"net.inet6.ip6.maxfragpackets\", []_C_int{4, 24, 17, 9}},\n\t{\"net.inet6.ip6.maxfrags\", []_C_int{4, 24, 17, 41}},\n\t{\"net.inet6.ip6.mforwarding\", []_C_int{4, 24, 17, 42}},\n\t{\"net.inet6.ip6.mrtmfc\", []_C_int{4, 24, 17, 53}},\n\t{\"net.inet6.ip6.mrtmif\", []_C_int{4, 24, 17, 52}},\n\t{\"net.inet6.ip6.mrtproto\", []_C_int{4, 24, 17, 8}},\n\t{\"net.inet6.ip6.mtudisctimeout\", []_C_int{4, 24, 17, 50}},\n\t{\"net.inet6.ip6.multicast_mtudisc\", []_C_int{4, 24, 17, 44}},\n\t{\"net.inet6.ip6.multipath\", []_C_int{4, 24, 17, 43}},\n\t{\"net.inet6.ip6.neighborgcthresh\", []_C_int{4, 24, 17, 45}},\n\t{\"net.inet6.ip6.redirect\", []_C_int{4, 24, 17, 2}},\n\t{\"net.inet6.ip6.soiikey\", []_C_int{4, 24, 17, 54}},\n\t{\"net.inet6.ip6.sourcecheck\", []_C_int{4, 24, 17, 10}},\n\t{\"net.inet6.ip6.sourcecheck_logint\", []_C_int{4, 24, 17, 11}},\n\t{\"net.inet6.ip6.use_deprecated\", []_C_int{4, 24, 17, 21}},\n\t{\"net.key.sadb_dump\", []_C_int{4, 30, 1}},\n\t{\"net.key.spd_dump\", []_C_int{4, 30, 2}},\n\t{\"net.mpls.ifq.congestion\", []_C_int{4, 33, 3, 4}},\n\t{\"net.mpls.ifq.drops\", []_C_int{4, 33, 3, 3}},\n\t{\"net.mpls.ifq.len\", []_C_int{4, 33, 3, 1}},\n\t{\"net.mpls.ifq.maxlen\", []_C_int{4, 33, 3, 2}},\n\t{\"net.mpls.mapttl_ip\", []_C_int{4, 33, 5}},\n\t{\"net.mpls.mapttl_ip6\", []_C_int{4, 33, 6}},\n\t{\"net.mpls.ttl\", []_C_int{4, 33, 2}},\n\t{\"net.pflow.stats\", []_C_int{4, 34, 1}},\n\t{\"net.pipex.enable\", []_C_int{4, 35, 1}},\n\t{\"vm.anonmin\", []_C_int{2, 7}},\n\t{\"vm.loadavg\", []_C_int{2, 2}},\n\t{\"vm.malloc_conf\", []_C_int{2, 12}},\n\t{\"vm.maxslp\", []_C_int{2, 10}},\n\t{\"vm.nkmempages\", []_C_int{2, 6}},\n\t{\"vm.psstrings\", []_C_int{2, 3}},\n\t{\"vm.swapencrypt.enable\", []_C_int{2, 5, 0}},\n\t{\"vm.swapencrypt.keyscreated\", []_C_int{2, 5, 1}},\n\t{\"vm.swapencrypt.keysdeleted\", []_C_int{2, 5, 2}},\n\t{\"vm.uspace\", []_C_int{2, 11}},\n\t{\"vm.uvmexp\", []_C_int{2, 4}},\n\t{\"vm.vmmeter\", []_C_int{2, 1}},\n\t{\"vm.vnodemin\", []_C_int{2, 9}},\n\t{\"vm.vtextmin\", []_C_int{2, 8}},\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsysctl_openbsd_riscv64.go",
    "content": "// go run mksysctl_openbsd.go\n// Code generated by the command above; DO NOT EDIT.\n\n//go:build riscv64 && openbsd\n\npackage unix\n\ntype mibentry struct {\n\tctlname string\n\tctloid  []_C_int\n}\n\nvar sysctlMib = []mibentry{\n\t{\"ddb.console\", []_C_int{9, 6}},\n\t{\"ddb.log\", []_C_int{9, 7}},\n\t{\"ddb.max_line\", []_C_int{9, 3}},\n\t{\"ddb.max_width\", []_C_int{9, 2}},\n\t{\"ddb.panic\", []_C_int{9, 5}},\n\t{\"ddb.profile\", []_C_int{9, 9}},\n\t{\"ddb.radix\", []_C_int{9, 1}},\n\t{\"ddb.tab_stop_width\", []_C_int{9, 4}},\n\t{\"ddb.trigger\", []_C_int{9, 8}},\n\t{\"fs.posix.setuid\", []_C_int{3, 1, 1}},\n\t{\"hw.allowpowerdown\", []_C_int{6, 22}},\n\t{\"hw.byteorder\", []_C_int{6, 4}},\n\t{\"hw.cpuspeed\", []_C_int{6, 12}},\n\t{\"hw.diskcount\", []_C_int{6, 10}},\n\t{\"hw.disknames\", []_C_int{6, 8}},\n\t{\"hw.diskstats\", []_C_int{6, 9}},\n\t{\"hw.machine\", []_C_int{6, 1}},\n\t{\"hw.model\", []_C_int{6, 2}},\n\t{\"hw.ncpu\", []_C_int{6, 3}},\n\t{\"hw.ncpufound\", []_C_int{6, 21}},\n\t{\"hw.ncpuonline\", []_C_int{6, 25}},\n\t{\"hw.pagesize\", []_C_int{6, 7}},\n\t{\"hw.perfpolicy\", []_C_int{6, 23}},\n\t{\"hw.physmem\", []_C_int{6, 19}},\n\t{\"hw.power\", []_C_int{6, 26}},\n\t{\"hw.product\", []_C_int{6, 15}},\n\t{\"hw.serialno\", []_C_int{6, 17}},\n\t{\"hw.setperf\", []_C_int{6, 13}},\n\t{\"hw.smt\", []_C_int{6, 24}},\n\t{\"hw.usermem\", []_C_int{6, 20}},\n\t{\"hw.uuid\", []_C_int{6, 18}},\n\t{\"hw.vendor\", []_C_int{6, 14}},\n\t{\"hw.version\", []_C_int{6, 16}},\n\t{\"kern.allowdt\", []_C_int{1, 65}},\n\t{\"kern.allowkmem\", []_C_int{1, 52}},\n\t{\"kern.argmax\", []_C_int{1, 8}},\n\t{\"kern.audio\", []_C_int{1, 84}},\n\t{\"kern.boottime\", []_C_int{1, 21}},\n\t{\"kern.bufcachepercent\", []_C_int{1, 72}},\n\t{\"kern.ccpu\", []_C_int{1, 45}},\n\t{\"kern.clockrate\", []_C_int{1, 12}},\n\t{\"kern.consbuf\", []_C_int{1, 83}},\n\t{\"kern.consbufsize\", []_C_int{1, 82}},\n\t{\"kern.consdev\", []_C_int{1, 75}},\n\t{\"kern.cp_time\", []_C_int{1, 40}},\n\t{\"kern.cp_time2\", []_C_int{1, 71}},\n\t{\"kern.cpustats\", []_C_int{1, 85}},\n\t{\"kern.domainname\", []_C_int{1, 22}},\n\t{\"kern.file\", []_C_int{1, 73}},\n\t{\"kern.forkstat\", []_C_int{1, 42}},\n\t{\"kern.fscale\", []_C_int{1, 46}},\n\t{\"kern.fsync\", []_C_int{1, 33}},\n\t{\"kern.global_ptrace\", []_C_int{1, 81}},\n\t{\"kern.hostid\", []_C_int{1, 11}},\n\t{\"kern.hostname\", []_C_int{1, 10}},\n\t{\"kern.intrcnt.nintrcnt\", []_C_int{1, 63, 1}},\n\t{\"kern.job_control\", []_C_int{1, 19}},\n\t{\"kern.malloc.buckets\", []_C_int{1, 39, 1}},\n\t{\"kern.malloc.kmemnames\", []_C_int{1, 39, 3}},\n\t{\"kern.maxclusters\", []_C_int{1, 67}},\n\t{\"kern.maxfiles\", []_C_int{1, 7}},\n\t{\"kern.maxlocksperuid\", []_C_int{1, 70}},\n\t{\"kern.maxpartitions\", []_C_int{1, 23}},\n\t{\"kern.maxproc\", []_C_int{1, 6}},\n\t{\"kern.maxthread\", []_C_int{1, 25}},\n\t{\"kern.maxvnodes\", []_C_int{1, 5}},\n\t{\"kern.mbstat\", []_C_int{1, 59}},\n\t{\"kern.msgbuf\", []_C_int{1, 48}},\n\t{\"kern.msgbufsize\", []_C_int{1, 38}},\n\t{\"kern.nchstats\", []_C_int{1, 41}},\n\t{\"kern.netlivelocks\", []_C_int{1, 76}},\n\t{\"kern.nfiles\", []_C_int{1, 56}},\n\t{\"kern.ngroups\", []_C_int{1, 18}},\n\t{\"kern.nosuidcoredump\", []_C_int{1, 32}},\n\t{\"kern.nprocs\", []_C_int{1, 47}},\n\t{\"kern.nselcoll\", []_C_int{1, 43}},\n\t{\"kern.nthreads\", []_C_int{1, 26}},\n\t{\"kern.numvnodes\", []_C_int{1, 58}},\n\t{\"kern.osrelease\", []_C_int{1, 2}},\n\t{\"kern.osrevision\", []_C_int{1, 3}},\n\t{\"kern.ostype\", []_C_int{1, 1}},\n\t{\"kern.osversion\", []_C_int{1, 27}},\n\t{\"kern.pfstatus\", []_C_int{1, 86}},\n\t{\"kern.pool_debug\", []_C_int{1, 77}},\n\t{\"kern.posix1version\", []_C_int{1, 17}},\n\t{\"kern.proc\", []_C_int{1, 66}},\n\t{\"kern.rawpartition\", []_C_int{1, 24}},\n\t{\"kern.saved_ids\", []_C_int{1, 20}},\n\t{\"kern.securelevel\", []_C_int{1, 9}},\n\t{\"kern.seminfo\", []_C_int{1, 61}},\n\t{\"kern.shminfo\", []_C_int{1, 62}},\n\t{\"kern.somaxconn\", []_C_int{1, 28}},\n\t{\"kern.sominconn\", []_C_int{1, 29}},\n\t{\"kern.splassert\", []_C_int{1, 54}},\n\t{\"kern.stackgap_random\", []_C_int{1, 50}},\n\t{\"kern.sysvipc_info\", []_C_int{1, 51}},\n\t{\"kern.sysvmsg\", []_C_int{1, 34}},\n\t{\"kern.sysvsem\", []_C_int{1, 35}},\n\t{\"kern.sysvshm\", []_C_int{1, 36}},\n\t{\"kern.timecounter.choice\", []_C_int{1, 69, 4}},\n\t{\"kern.timecounter.hardware\", []_C_int{1, 69, 3}},\n\t{\"kern.timecounter.tick\", []_C_int{1, 69, 1}},\n\t{\"kern.timecounter.timestepwarnings\", []_C_int{1, 69, 2}},\n\t{\"kern.timeout_stats\", []_C_int{1, 87}},\n\t{\"kern.tty.tk_cancc\", []_C_int{1, 44, 4}},\n\t{\"kern.tty.tk_nin\", []_C_int{1, 44, 1}},\n\t{\"kern.tty.tk_nout\", []_C_int{1, 44, 2}},\n\t{\"kern.tty.tk_rawcc\", []_C_int{1, 44, 3}},\n\t{\"kern.tty.ttyinfo\", []_C_int{1, 44, 5}},\n\t{\"kern.ttycount\", []_C_int{1, 57}},\n\t{\"kern.utc_offset\", []_C_int{1, 88}},\n\t{\"kern.version\", []_C_int{1, 4}},\n\t{\"kern.video\", []_C_int{1, 89}},\n\t{\"kern.watchdog.auto\", []_C_int{1, 64, 2}},\n\t{\"kern.watchdog.period\", []_C_int{1, 64, 1}},\n\t{\"kern.witnesswatch\", []_C_int{1, 53}},\n\t{\"kern.wxabort\", []_C_int{1, 74}},\n\t{\"net.bpf.bufsize\", []_C_int{4, 31, 1}},\n\t{\"net.bpf.maxbufsize\", []_C_int{4, 31, 2}},\n\t{\"net.inet.ah.enable\", []_C_int{4, 2, 51, 1}},\n\t{\"net.inet.ah.stats\", []_C_int{4, 2, 51, 2}},\n\t{\"net.inet.carp.allow\", []_C_int{4, 2, 112, 1}},\n\t{\"net.inet.carp.log\", []_C_int{4, 2, 112, 3}},\n\t{\"net.inet.carp.preempt\", []_C_int{4, 2, 112, 2}},\n\t{\"net.inet.carp.stats\", []_C_int{4, 2, 112, 4}},\n\t{\"net.inet.divert.recvspace\", []_C_int{4, 2, 258, 1}},\n\t{\"net.inet.divert.sendspace\", []_C_int{4, 2, 258, 2}},\n\t{\"net.inet.divert.stats\", []_C_int{4, 2, 258, 3}},\n\t{\"net.inet.esp.enable\", []_C_int{4, 2, 50, 1}},\n\t{\"net.inet.esp.stats\", []_C_int{4, 2, 50, 4}},\n\t{\"net.inet.esp.udpencap\", []_C_int{4, 2, 50, 2}},\n\t{\"net.inet.esp.udpencap_port\", []_C_int{4, 2, 50, 3}},\n\t{\"net.inet.etherip.allow\", []_C_int{4, 2, 97, 1}},\n\t{\"net.inet.etherip.stats\", []_C_int{4, 2, 97, 2}},\n\t{\"net.inet.gre.allow\", []_C_int{4, 2, 47, 1}},\n\t{\"net.inet.gre.wccp\", []_C_int{4, 2, 47, 2}},\n\t{\"net.inet.icmp.bmcastecho\", []_C_int{4, 2, 1, 2}},\n\t{\"net.inet.icmp.errppslimit\", []_C_int{4, 2, 1, 3}},\n\t{\"net.inet.icmp.maskrepl\", []_C_int{4, 2, 1, 1}},\n\t{\"net.inet.icmp.rediraccept\", []_C_int{4, 2, 1, 4}},\n\t{\"net.inet.icmp.redirtimeout\", []_C_int{4, 2, 1, 5}},\n\t{\"net.inet.icmp.stats\", []_C_int{4, 2, 1, 7}},\n\t{\"net.inet.icmp.tstamprepl\", []_C_int{4, 2, 1, 6}},\n\t{\"net.inet.igmp.stats\", []_C_int{4, 2, 2, 1}},\n\t{\"net.inet.ip.arpdown\", []_C_int{4, 2, 0, 40}},\n\t{\"net.inet.ip.arpqueued\", []_C_int{4, 2, 0, 36}},\n\t{\"net.inet.ip.arptimeout\", []_C_int{4, 2, 0, 39}},\n\t{\"net.inet.ip.encdebug\", []_C_int{4, 2, 0, 12}},\n\t{\"net.inet.ip.forwarding\", []_C_int{4, 2, 0, 1}},\n\t{\"net.inet.ip.ifq.congestion\", []_C_int{4, 2, 0, 30, 4}},\n\t{\"net.inet.ip.ifq.drops\", []_C_int{4, 2, 0, 30, 3}},\n\t{\"net.inet.ip.ifq.len\", []_C_int{4, 2, 0, 30, 1}},\n\t{\"net.inet.ip.ifq.maxlen\", []_C_int{4, 2, 0, 30, 2}},\n\t{\"net.inet.ip.maxqueue\", []_C_int{4, 2, 0, 11}},\n\t{\"net.inet.ip.mforwarding\", []_C_int{4, 2, 0, 31}},\n\t{\"net.inet.ip.mrtmfc\", []_C_int{4, 2, 0, 37}},\n\t{\"net.inet.ip.mrtproto\", []_C_int{4, 2, 0, 34}},\n\t{\"net.inet.ip.mrtstats\", []_C_int{4, 2, 0, 35}},\n\t{\"net.inet.ip.mrtvif\", []_C_int{4, 2, 0, 38}},\n\t{\"net.inet.ip.mtu\", []_C_int{4, 2, 0, 4}},\n\t{\"net.inet.ip.mtudisc\", []_C_int{4, 2, 0, 27}},\n\t{\"net.inet.ip.mtudisctimeout\", []_C_int{4, 2, 0, 28}},\n\t{\"net.inet.ip.multipath\", []_C_int{4, 2, 0, 32}},\n\t{\"net.inet.ip.portfirst\", []_C_int{4, 2, 0, 7}},\n\t{\"net.inet.ip.porthifirst\", []_C_int{4, 2, 0, 9}},\n\t{\"net.inet.ip.porthilast\", []_C_int{4, 2, 0, 10}},\n\t{\"net.inet.ip.portlast\", []_C_int{4, 2, 0, 8}},\n\t{\"net.inet.ip.redirect\", []_C_int{4, 2, 0, 2}},\n\t{\"net.inet.ip.sourceroute\", []_C_int{4, 2, 0, 5}},\n\t{\"net.inet.ip.stats\", []_C_int{4, 2, 0, 33}},\n\t{\"net.inet.ip.ttl\", []_C_int{4, 2, 0, 3}},\n\t{\"net.inet.ipcomp.enable\", []_C_int{4, 2, 108, 1}},\n\t{\"net.inet.ipcomp.stats\", []_C_int{4, 2, 108, 2}},\n\t{\"net.inet.ipip.allow\", []_C_int{4, 2, 4, 1}},\n\t{\"net.inet.ipip.stats\", []_C_int{4, 2, 4, 2}},\n\t{\"net.inet.pfsync.stats\", []_C_int{4, 2, 240, 1}},\n\t{\"net.inet.tcp.ackonpush\", []_C_int{4, 2, 6, 13}},\n\t{\"net.inet.tcp.always_keepalive\", []_C_int{4, 2, 6, 22}},\n\t{\"net.inet.tcp.baddynamic\", []_C_int{4, 2, 6, 6}},\n\t{\"net.inet.tcp.drop\", []_C_int{4, 2, 6, 19}},\n\t{\"net.inet.tcp.ecn\", []_C_int{4, 2, 6, 14}},\n\t{\"net.inet.tcp.ident\", []_C_int{4, 2, 6, 9}},\n\t{\"net.inet.tcp.keepidle\", []_C_int{4, 2, 6, 3}},\n\t{\"net.inet.tcp.keepinittime\", []_C_int{4, 2, 6, 2}},\n\t{\"net.inet.tcp.keepintvl\", []_C_int{4, 2, 6, 4}},\n\t{\"net.inet.tcp.mssdflt\", []_C_int{4, 2, 6, 11}},\n\t{\"net.inet.tcp.reasslimit\", []_C_int{4, 2, 6, 18}},\n\t{\"net.inet.tcp.rfc1323\", []_C_int{4, 2, 6, 1}},\n\t{\"net.inet.tcp.rfc3390\", []_C_int{4, 2, 6, 17}},\n\t{\"net.inet.tcp.rootonly\", []_C_int{4, 2, 6, 24}},\n\t{\"net.inet.tcp.rstppslimit\", []_C_int{4, 2, 6, 12}},\n\t{\"net.inet.tcp.sack\", []_C_int{4, 2, 6, 10}},\n\t{\"net.inet.tcp.sackholelimit\", []_C_int{4, 2, 6, 20}},\n\t{\"net.inet.tcp.slowhz\", []_C_int{4, 2, 6, 5}},\n\t{\"net.inet.tcp.stats\", []_C_int{4, 2, 6, 21}},\n\t{\"net.inet.tcp.synbucketlimit\", []_C_int{4, 2, 6, 16}},\n\t{\"net.inet.tcp.syncachelimit\", []_C_int{4, 2, 6, 15}},\n\t{\"net.inet.tcp.synhashsize\", []_C_int{4, 2, 6, 25}},\n\t{\"net.inet.tcp.synuselimit\", []_C_int{4, 2, 6, 23}},\n\t{\"net.inet.udp.baddynamic\", []_C_int{4, 2, 17, 2}},\n\t{\"net.inet.udp.checksum\", []_C_int{4, 2, 17, 1}},\n\t{\"net.inet.udp.recvspace\", []_C_int{4, 2, 17, 3}},\n\t{\"net.inet.udp.rootonly\", []_C_int{4, 2, 17, 6}},\n\t{\"net.inet.udp.sendspace\", []_C_int{4, 2, 17, 4}},\n\t{\"net.inet.udp.stats\", []_C_int{4, 2, 17, 5}},\n\t{\"net.inet6.divert.recvspace\", []_C_int{4, 24, 86, 1}},\n\t{\"net.inet6.divert.sendspace\", []_C_int{4, 24, 86, 2}},\n\t{\"net.inet6.divert.stats\", []_C_int{4, 24, 86, 3}},\n\t{\"net.inet6.icmp6.errppslimit\", []_C_int{4, 24, 30, 14}},\n\t{\"net.inet6.icmp6.mtudisc_hiwat\", []_C_int{4, 24, 30, 16}},\n\t{\"net.inet6.icmp6.mtudisc_lowat\", []_C_int{4, 24, 30, 17}},\n\t{\"net.inet6.icmp6.nd6_debug\", []_C_int{4, 24, 30, 18}},\n\t{\"net.inet6.icmp6.nd6_delay\", []_C_int{4, 24, 30, 8}},\n\t{\"net.inet6.icmp6.nd6_maxnudhint\", []_C_int{4, 24, 30, 15}},\n\t{\"net.inet6.icmp6.nd6_mmaxtries\", []_C_int{4, 24, 30, 10}},\n\t{\"net.inet6.icmp6.nd6_umaxtries\", []_C_int{4, 24, 30, 9}},\n\t{\"net.inet6.icmp6.redirtimeout\", []_C_int{4, 24, 30, 3}},\n\t{\"net.inet6.ip6.auto_flowlabel\", []_C_int{4, 24, 17, 17}},\n\t{\"net.inet6.ip6.dad_count\", []_C_int{4, 24, 17, 16}},\n\t{\"net.inet6.ip6.dad_pending\", []_C_int{4, 24, 17, 49}},\n\t{\"net.inet6.ip6.defmcasthlim\", []_C_int{4, 24, 17, 18}},\n\t{\"net.inet6.ip6.forwarding\", []_C_int{4, 24, 17, 1}},\n\t{\"net.inet6.ip6.forwsrcrt\", []_C_int{4, 24, 17, 5}},\n\t{\"net.inet6.ip6.hdrnestlimit\", []_C_int{4, 24, 17, 15}},\n\t{\"net.inet6.ip6.hlim\", []_C_int{4, 24, 17, 3}},\n\t{\"net.inet6.ip6.log_interval\", []_C_int{4, 24, 17, 14}},\n\t{\"net.inet6.ip6.maxdynroutes\", []_C_int{4, 24, 17, 48}},\n\t{\"net.inet6.ip6.maxfragpackets\", []_C_int{4, 24, 17, 9}},\n\t{\"net.inet6.ip6.maxfrags\", []_C_int{4, 24, 17, 41}},\n\t{\"net.inet6.ip6.mforwarding\", []_C_int{4, 24, 17, 42}},\n\t{\"net.inet6.ip6.mrtmfc\", []_C_int{4, 24, 17, 53}},\n\t{\"net.inet6.ip6.mrtmif\", []_C_int{4, 24, 17, 52}},\n\t{\"net.inet6.ip6.mrtproto\", []_C_int{4, 24, 17, 8}},\n\t{\"net.inet6.ip6.mtudisctimeout\", []_C_int{4, 24, 17, 50}},\n\t{\"net.inet6.ip6.multicast_mtudisc\", []_C_int{4, 24, 17, 44}},\n\t{\"net.inet6.ip6.multipath\", []_C_int{4, 24, 17, 43}},\n\t{\"net.inet6.ip6.neighborgcthresh\", []_C_int{4, 24, 17, 45}},\n\t{\"net.inet6.ip6.redirect\", []_C_int{4, 24, 17, 2}},\n\t{\"net.inet6.ip6.soiikey\", []_C_int{4, 24, 17, 54}},\n\t{\"net.inet6.ip6.sourcecheck\", []_C_int{4, 24, 17, 10}},\n\t{\"net.inet6.ip6.sourcecheck_logint\", []_C_int{4, 24, 17, 11}},\n\t{\"net.inet6.ip6.use_deprecated\", []_C_int{4, 24, 17, 21}},\n\t{\"net.key.sadb_dump\", []_C_int{4, 30, 1}},\n\t{\"net.key.spd_dump\", []_C_int{4, 30, 2}},\n\t{\"net.mpls.ifq.congestion\", []_C_int{4, 33, 3, 4}},\n\t{\"net.mpls.ifq.drops\", []_C_int{4, 33, 3, 3}},\n\t{\"net.mpls.ifq.len\", []_C_int{4, 33, 3, 1}},\n\t{\"net.mpls.ifq.maxlen\", []_C_int{4, 33, 3, 2}},\n\t{\"net.mpls.mapttl_ip\", []_C_int{4, 33, 5}},\n\t{\"net.mpls.mapttl_ip6\", []_C_int{4, 33, 6}},\n\t{\"net.mpls.ttl\", []_C_int{4, 33, 2}},\n\t{\"net.pflow.stats\", []_C_int{4, 34, 1}},\n\t{\"net.pipex.enable\", []_C_int{4, 35, 1}},\n\t{\"vm.anonmin\", []_C_int{2, 7}},\n\t{\"vm.loadavg\", []_C_int{2, 2}},\n\t{\"vm.malloc_conf\", []_C_int{2, 12}},\n\t{\"vm.maxslp\", []_C_int{2, 10}},\n\t{\"vm.nkmempages\", []_C_int{2, 6}},\n\t{\"vm.psstrings\", []_C_int{2, 3}},\n\t{\"vm.swapencrypt.enable\", []_C_int{2, 5, 0}},\n\t{\"vm.swapencrypt.keyscreated\", []_C_int{2, 5, 1}},\n\t{\"vm.swapencrypt.keysdeleted\", []_C_int{2, 5, 2}},\n\t{\"vm.uspace\", []_C_int{2, 11}},\n\t{\"vm.uvmexp\", []_C_int{2, 4}},\n\t{\"vm.vmmeter\", []_C_int{2, 1}},\n\t{\"vm.vnodemin\", []_C_int{2, 9}},\n\t{\"vm.vtextmin\", []_C_int{2, 8}},\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go",
    "content": "// go run mksysnum.go /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/sys/syscall.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && darwin\n\npackage unix\n\n// Deprecated: Use libSystem wrappers instead of direct syscalls.\nconst (\n\tSYS_SYSCALL                        = 0\n\tSYS_EXIT                           = 1\n\tSYS_FORK                           = 2\n\tSYS_READ                           = 3\n\tSYS_WRITE                          = 4\n\tSYS_OPEN                           = 5\n\tSYS_CLOSE                          = 6\n\tSYS_WAIT4                          = 7\n\tSYS_LINK                           = 9\n\tSYS_UNLINK                         = 10\n\tSYS_CHDIR                          = 12\n\tSYS_FCHDIR                         = 13\n\tSYS_MKNOD                          = 14\n\tSYS_CHMOD                          = 15\n\tSYS_CHOWN                          = 16\n\tSYS_GETFSSTAT                      = 18\n\tSYS_GETPID                         = 20\n\tSYS_SETUID                         = 23\n\tSYS_GETUID                         = 24\n\tSYS_GETEUID                        = 25\n\tSYS_PTRACE                         = 26\n\tSYS_RECVMSG                        = 27\n\tSYS_SENDMSG                        = 28\n\tSYS_RECVFROM                       = 29\n\tSYS_ACCEPT                         = 30\n\tSYS_GETPEERNAME                    = 31\n\tSYS_GETSOCKNAME                    = 32\n\tSYS_ACCESS                         = 33\n\tSYS_CHFLAGS                        = 34\n\tSYS_FCHFLAGS                       = 35\n\tSYS_SYNC                           = 36\n\tSYS_KILL                           = 37\n\tSYS_GETPPID                        = 39\n\tSYS_DUP                            = 41\n\tSYS_PIPE                           = 42\n\tSYS_GETEGID                        = 43\n\tSYS_SIGACTION                      = 46\n\tSYS_GETGID                         = 47\n\tSYS_SIGPROCMASK                    = 48\n\tSYS_GETLOGIN                       = 49\n\tSYS_SETLOGIN                       = 50\n\tSYS_ACCT                           = 51\n\tSYS_SIGPENDING                     = 52\n\tSYS_SIGALTSTACK                    = 53\n\tSYS_IOCTL                          = 54\n\tSYS_REBOOT                         = 55\n\tSYS_REVOKE                         = 56\n\tSYS_SYMLINK                        = 57\n\tSYS_READLINK                       = 58\n\tSYS_EXECVE                         = 59\n\tSYS_UMASK                          = 60\n\tSYS_CHROOT                         = 61\n\tSYS_MSYNC                          = 65\n\tSYS_VFORK                          = 66\n\tSYS_MUNMAP                         = 73\n\tSYS_MPROTECT                       = 74\n\tSYS_MADVISE                        = 75\n\tSYS_MINCORE                        = 78\n\tSYS_GETGROUPS                      = 79\n\tSYS_SETGROUPS                      = 80\n\tSYS_GETPGRP                        = 81\n\tSYS_SETPGID                        = 82\n\tSYS_SETITIMER                      = 83\n\tSYS_SWAPON                         = 85\n\tSYS_GETITIMER                      = 86\n\tSYS_GETDTABLESIZE                  = 89\n\tSYS_DUP2                           = 90\n\tSYS_FCNTL                          = 92\n\tSYS_SELECT                         = 93\n\tSYS_FSYNC                          = 95\n\tSYS_SETPRIORITY                    = 96\n\tSYS_SOCKET                         = 97\n\tSYS_CONNECT                        = 98\n\tSYS_GETPRIORITY                    = 100\n\tSYS_BIND                           = 104\n\tSYS_SETSOCKOPT                     = 105\n\tSYS_LISTEN                         = 106\n\tSYS_SIGSUSPEND                     = 111\n\tSYS_GETTIMEOFDAY                   = 116\n\tSYS_GETRUSAGE                      = 117\n\tSYS_GETSOCKOPT                     = 118\n\tSYS_READV                          = 120\n\tSYS_WRITEV                         = 121\n\tSYS_SETTIMEOFDAY                   = 122\n\tSYS_FCHOWN                         = 123\n\tSYS_FCHMOD                         = 124\n\tSYS_SETREUID                       = 126\n\tSYS_SETREGID                       = 127\n\tSYS_RENAME                         = 128\n\tSYS_FLOCK                          = 131\n\tSYS_MKFIFO                         = 132\n\tSYS_SENDTO                         = 133\n\tSYS_SHUTDOWN                       = 134\n\tSYS_SOCKETPAIR                     = 135\n\tSYS_MKDIR                          = 136\n\tSYS_RMDIR                          = 137\n\tSYS_UTIMES                         = 138\n\tSYS_FUTIMES                        = 139\n\tSYS_ADJTIME                        = 140\n\tSYS_GETHOSTUUID                    = 142\n\tSYS_SETSID                         = 147\n\tSYS_GETPGID                        = 151\n\tSYS_SETPRIVEXEC                    = 152\n\tSYS_PREAD                          = 153\n\tSYS_PWRITE                         = 154\n\tSYS_NFSSVC                         = 155\n\tSYS_STATFS                         = 157\n\tSYS_FSTATFS                        = 158\n\tSYS_UNMOUNT                        = 159\n\tSYS_GETFH                          = 161\n\tSYS_QUOTACTL                       = 165\n\tSYS_MOUNT                          = 167\n\tSYS_CSOPS                          = 169\n\tSYS_CSOPS_AUDITTOKEN               = 170\n\tSYS_WAITID                         = 173\n\tSYS_KDEBUG_TYPEFILTER              = 177\n\tSYS_KDEBUG_TRACE_STRING            = 178\n\tSYS_KDEBUG_TRACE64                 = 179\n\tSYS_KDEBUG_TRACE                   = 180\n\tSYS_SETGID                         = 181\n\tSYS_SETEGID                        = 182\n\tSYS_SETEUID                        = 183\n\tSYS_SIGRETURN                      = 184\n\tSYS_THREAD_SELFCOUNTS              = 186\n\tSYS_FDATASYNC                      = 187\n\tSYS_STAT                           = 188\n\tSYS_FSTAT                          = 189\n\tSYS_LSTAT                          = 190\n\tSYS_PATHCONF                       = 191\n\tSYS_FPATHCONF                      = 192\n\tSYS_GETRLIMIT                      = 194\n\tSYS_SETRLIMIT                      = 195\n\tSYS_GETDIRENTRIES                  = 196\n\tSYS_MMAP                           = 197\n\tSYS_LSEEK                          = 199\n\tSYS_TRUNCATE                       = 200\n\tSYS_FTRUNCATE                      = 201\n\tSYS_SYSCTL                         = 202\n\tSYS_MLOCK                          = 203\n\tSYS_MUNLOCK                        = 204\n\tSYS_UNDELETE                       = 205\n\tSYS_OPEN_DPROTECTED_NP             = 216\n\tSYS_GETATTRLIST                    = 220\n\tSYS_SETATTRLIST                    = 221\n\tSYS_GETDIRENTRIESATTR              = 222\n\tSYS_EXCHANGEDATA                   = 223\n\tSYS_SEARCHFS                       = 225\n\tSYS_DELETE                         = 226\n\tSYS_COPYFILE                       = 227\n\tSYS_FGETATTRLIST                   = 228\n\tSYS_FSETATTRLIST                   = 229\n\tSYS_POLL                           = 230\n\tSYS_WATCHEVENT                     = 231\n\tSYS_WAITEVENT                      = 232\n\tSYS_MODWATCH                       = 233\n\tSYS_GETXATTR                       = 234\n\tSYS_FGETXATTR                      = 235\n\tSYS_SETXATTR                       = 236\n\tSYS_FSETXATTR                      = 237\n\tSYS_REMOVEXATTR                    = 238\n\tSYS_FREMOVEXATTR                   = 239\n\tSYS_LISTXATTR                      = 240\n\tSYS_FLISTXATTR                     = 241\n\tSYS_FSCTL                          = 242\n\tSYS_INITGROUPS                     = 243\n\tSYS_POSIX_SPAWN                    = 244\n\tSYS_FFSCTL                         = 245\n\tSYS_NFSCLNT                        = 247\n\tSYS_FHOPEN                         = 248\n\tSYS_MINHERIT                       = 250\n\tSYS_SEMSYS                         = 251\n\tSYS_MSGSYS                         = 252\n\tSYS_SHMSYS                         = 253\n\tSYS_SEMCTL                         = 254\n\tSYS_SEMGET                         = 255\n\tSYS_SEMOP                          = 256\n\tSYS_MSGCTL                         = 258\n\tSYS_MSGGET                         = 259\n\tSYS_MSGSND                         = 260\n\tSYS_MSGRCV                         = 261\n\tSYS_SHMAT                          = 262\n\tSYS_SHMCTL                         = 263\n\tSYS_SHMDT                          = 264\n\tSYS_SHMGET                         = 265\n\tSYS_SHM_OPEN                       = 266\n\tSYS_SHM_UNLINK                     = 267\n\tSYS_SEM_OPEN                       = 268\n\tSYS_SEM_CLOSE                      = 269\n\tSYS_SEM_UNLINK                     = 270\n\tSYS_SEM_WAIT                       = 271\n\tSYS_SEM_TRYWAIT                    = 272\n\tSYS_SEM_POST                       = 273\n\tSYS_SYSCTLBYNAME                   = 274\n\tSYS_OPEN_EXTENDED                  = 277\n\tSYS_UMASK_EXTENDED                 = 278\n\tSYS_STAT_EXTENDED                  = 279\n\tSYS_LSTAT_EXTENDED                 = 280\n\tSYS_FSTAT_EXTENDED                 = 281\n\tSYS_CHMOD_EXTENDED                 = 282\n\tSYS_FCHMOD_EXTENDED                = 283\n\tSYS_ACCESS_EXTENDED                = 284\n\tSYS_SETTID                         = 285\n\tSYS_GETTID                         = 286\n\tSYS_SETSGROUPS                     = 287\n\tSYS_GETSGROUPS                     = 288\n\tSYS_SETWGROUPS                     = 289\n\tSYS_GETWGROUPS                     = 290\n\tSYS_MKFIFO_EXTENDED                = 291\n\tSYS_MKDIR_EXTENDED                 = 292\n\tSYS_IDENTITYSVC                    = 293\n\tSYS_SHARED_REGION_CHECK_NP         = 294\n\tSYS_VM_PRESSURE_MONITOR            = 296\n\tSYS_PSYNCH_RW_LONGRDLOCK           = 297\n\tSYS_PSYNCH_RW_YIELDWRLOCK          = 298\n\tSYS_PSYNCH_RW_DOWNGRADE            = 299\n\tSYS_PSYNCH_RW_UPGRADE              = 300\n\tSYS_PSYNCH_MUTEXWAIT               = 301\n\tSYS_PSYNCH_MUTEXDROP               = 302\n\tSYS_PSYNCH_CVBROAD                 = 303\n\tSYS_PSYNCH_CVSIGNAL                = 304\n\tSYS_PSYNCH_CVWAIT                  = 305\n\tSYS_PSYNCH_RW_RDLOCK               = 306\n\tSYS_PSYNCH_RW_WRLOCK               = 307\n\tSYS_PSYNCH_RW_UNLOCK               = 308\n\tSYS_PSYNCH_RW_UNLOCK2              = 309\n\tSYS_GETSID                         = 310\n\tSYS_SETTID_WITH_PID                = 311\n\tSYS_PSYNCH_CVCLRPREPOST            = 312\n\tSYS_AIO_FSYNC                      = 313\n\tSYS_AIO_RETURN                     = 314\n\tSYS_AIO_SUSPEND                    = 315\n\tSYS_AIO_CANCEL                     = 316\n\tSYS_AIO_ERROR                      = 317\n\tSYS_AIO_READ                       = 318\n\tSYS_AIO_WRITE                      = 319\n\tSYS_LIO_LISTIO                     = 320\n\tSYS_IOPOLICYSYS                    = 322\n\tSYS_PROCESS_POLICY                 = 323\n\tSYS_MLOCKALL                       = 324\n\tSYS_MUNLOCKALL                     = 325\n\tSYS_ISSETUGID                      = 327\n\tSYS___PTHREAD_KILL                 = 328\n\tSYS___PTHREAD_SIGMASK              = 329\n\tSYS___SIGWAIT                      = 330\n\tSYS___DISABLE_THREADSIGNAL         = 331\n\tSYS___PTHREAD_MARKCANCEL           = 332\n\tSYS___PTHREAD_CANCELED             = 333\n\tSYS___SEMWAIT_SIGNAL               = 334\n\tSYS_PROC_INFO                      = 336\n\tSYS_SENDFILE                       = 337\n\tSYS_STAT64                         = 338\n\tSYS_FSTAT64                        = 339\n\tSYS_LSTAT64                        = 340\n\tSYS_STAT64_EXTENDED                = 341\n\tSYS_LSTAT64_EXTENDED               = 342\n\tSYS_FSTAT64_EXTENDED               = 343\n\tSYS_GETDIRENTRIES64                = 344\n\tSYS_STATFS64                       = 345\n\tSYS_FSTATFS64                      = 346\n\tSYS_GETFSSTAT64                    = 347\n\tSYS___PTHREAD_CHDIR                = 348\n\tSYS___PTHREAD_FCHDIR               = 349\n\tSYS_AUDIT                          = 350\n\tSYS_AUDITON                        = 351\n\tSYS_GETAUID                        = 353\n\tSYS_SETAUID                        = 354\n\tSYS_GETAUDIT_ADDR                  = 357\n\tSYS_SETAUDIT_ADDR                  = 358\n\tSYS_AUDITCTL                       = 359\n\tSYS_BSDTHREAD_CREATE               = 360\n\tSYS_BSDTHREAD_TERMINATE            = 361\n\tSYS_KQUEUE                         = 362\n\tSYS_KEVENT                         = 363\n\tSYS_LCHOWN                         = 364\n\tSYS_BSDTHREAD_REGISTER             = 366\n\tSYS_WORKQ_OPEN                     = 367\n\tSYS_WORKQ_KERNRETURN               = 368\n\tSYS_KEVENT64                       = 369\n\tSYS___OLD_SEMWAIT_SIGNAL           = 370\n\tSYS___OLD_SEMWAIT_SIGNAL_NOCANCEL  = 371\n\tSYS_THREAD_SELFID                  = 372\n\tSYS_LEDGER                         = 373\n\tSYS_KEVENT_QOS                     = 374\n\tSYS_KEVENT_ID                      = 375\n\tSYS___MAC_EXECVE                   = 380\n\tSYS___MAC_SYSCALL                  = 381\n\tSYS___MAC_GET_FILE                 = 382\n\tSYS___MAC_SET_FILE                 = 383\n\tSYS___MAC_GET_LINK                 = 384\n\tSYS___MAC_SET_LINK                 = 385\n\tSYS___MAC_GET_PROC                 = 386\n\tSYS___MAC_SET_PROC                 = 387\n\tSYS___MAC_GET_FD                   = 388\n\tSYS___MAC_SET_FD                   = 389\n\tSYS___MAC_GET_PID                  = 390\n\tSYS_PSELECT                        = 394\n\tSYS_PSELECT_NOCANCEL               = 395\n\tSYS_READ_NOCANCEL                  = 396\n\tSYS_WRITE_NOCANCEL                 = 397\n\tSYS_OPEN_NOCANCEL                  = 398\n\tSYS_CLOSE_NOCANCEL                 = 399\n\tSYS_WAIT4_NOCANCEL                 = 400\n\tSYS_RECVMSG_NOCANCEL               = 401\n\tSYS_SENDMSG_NOCANCEL               = 402\n\tSYS_RECVFROM_NOCANCEL              = 403\n\tSYS_ACCEPT_NOCANCEL                = 404\n\tSYS_MSYNC_NOCANCEL                 = 405\n\tSYS_FCNTL_NOCANCEL                 = 406\n\tSYS_SELECT_NOCANCEL                = 407\n\tSYS_FSYNC_NOCANCEL                 = 408\n\tSYS_CONNECT_NOCANCEL               = 409\n\tSYS_SIGSUSPEND_NOCANCEL            = 410\n\tSYS_READV_NOCANCEL                 = 411\n\tSYS_WRITEV_NOCANCEL                = 412\n\tSYS_SENDTO_NOCANCEL                = 413\n\tSYS_PREAD_NOCANCEL                 = 414\n\tSYS_PWRITE_NOCANCEL                = 415\n\tSYS_WAITID_NOCANCEL                = 416\n\tSYS_POLL_NOCANCEL                  = 417\n\tSYS_MSGSND_NOCANCEL                = 418\n\tSYS_MSGRCV_NOCANCEL                = 419\n\tSYS_SEM_WAIT_NOCANCEL              = 420\n\tSYS_AIO_SUSPEND_NOCANCEL           = 421\n\tSYS___SIGWAIT_NOCANCEL             = 422\n\tSYS___SEMWAIT_SIGNAL_NOCANCEL      = 423\n\tSYS___MAC_MOUNT                    = 424\n\tSYS___MAC_GET_MOUNT                = 425\n\tSYS___MAC_GETFSSTAT                = 426\n\tSYS_FSGETPATH                      = 427\n\tSYS_AUDIT_SESSION_SELF             = 428\n\tSYS_AUDIT_SESSION_JOIN             = 429\n\tSYS_FILEPORT_MAKEPORT              = 430\n\tSYS_FILEPORT_MAKEFD                = 431\n\tSYS_AUDIT_SESSION_PORT             = 432\n\tSYS_PID_SUSPEND                    = 433\n\tSYS_PID_RESUME                     = 434\n\tSYS_PID_HIBERNATE                  = 435\n\tSYS_PID_SHUTDOWN_SOCKETS           = 436\n\tSYS_SHARED_REGION_MAP_AND_SLIDE_NP = 438\n\tSYS_KAS_INFO                       = 439\n\tSYS_MEMORYSTATUS_CONTROL           = 440\n\tSYS_GUARDED_OPEN_NP                = 441\n\tSYS_GUARDED_CLOSE_NP               = 442\n\tSYS_GUARDED_KQUEUE_NP              = 443\n\tSYS_CHANGE_FDGUARD_NP              = 444\n\tSYS_USRCTL                         = 445\n\tSYS_PROC_RLIMIT_CONTROL            = 446\n\tSYS_CONNECTX                       = 447\n\tSYS_DISCONNECTX                    = 448\n\tSYS_PEELOFF                        = 449\n\tSYS_SOCKET_DELEGATE                = 450\n\tSYS_TELEMETRY                      = 451\n\tSYS_PROC_UUID_POLICY               = 452\n\tSYS_MEMORYSTATUS_GET_LEVEL         = 453\n\tSYS_SYSTEM_OVERRIDE                = 454\n\tSYS_VFS_PURGE                      = 455\n\tSYS_SFI_CTL                        = 456\n\tSYS_SFI_PIDCTL                     = 457\n\tSYS_COALITION                      = 458\n\tSYS_COALITION_INFO                 = 459\n\tSYS_NECP_MATCH_POLICY              = 460\n\tSYS_GETATTRLISTBULK                = 461\n\tSYS_CLONEFILEAT                    = 462\n\tSYS_OPENAT                         = 463\n\tSYS_OPENAT_NOCANCEL                = 464\n\tSYS_RENAMEAT                       = 465\n\tSYS_FACCESSAT                      = 466\n\tSYS_FCHMODAT                       = 467\n\tSYS_FCHOWNAT                       = 468\n\tSYS_FSTATAT                        = 469\n\tSYS_FSTATAT64                      = 470\n\tSYS_LINKAT                         = 471\n\tSYS_UNLINKAT                       = 472\n\tSYS_READLINKAT                     = 473\n\tSYS_SYMLINKAT                      = 474\n\tSYS_MKDIRAT                        = 475\n\tSYS_GETATTRLISTAT                  = 476\n\tSYS_PROC_TRACE_LOG                 = 477\n\tSYS_BSDTHREAD_CTL                  = 478\n\tSYS_OPENBYID_NP                    = 479\n\tSYS_RECVMSG_X                      = 480\n\tSYS_SENDMSG_X                      = 481\n\tSYS_THREAD_SELFUSAGE               = 482\n\tSYS_CSRCTL                         = 483\n\tSYS_GUARDED_OPEN_DPROTECTED_NP     = 484\n\tSYS_GUARDED_WRITE_NP               = 485\n\tSYS_GUARDED_PWRITE_NP              = 486\n\tSYS_GUARDED_WRITEV_NP              = 487\n\tSYS_RENAMEATX_NP                   = 488\n\tSYS_MREMAP_ENCRYPTED               = 489\n\tSYS_NETAGENT_TRIGGER               = 490\n\tSYS_STACK_SNAPSHOT_WITH_CONFIG     = 491\n\tSYS_MICROSTACKSHOT                 = 492\n\tSYS_GRAB_PGO_DATA                  = 493\n\tSYS_PERSONA                        = 494\n\tSYS_WORK_INTERVAL_CTL              = 499\n\tSYS_GETENTROPY                     = 500\n\tSYS_NECP_OPEN                      = 501\n\tSYS_NECP_CLIENT_ACTION             = 502\n\tSYS___NEXUS_OPEN                   = 503\n\tSYS___NEXUS_REGISTER               = 504\n\tSYS___NEXUS_DEREGISTER             = 505\n\tSYS___NEXUS_CREATE                 = 506\n\tSYS___NEXUS_DESTROY                = 507\n\tSYS___NEXUS_GET_OPT                = 508\n\tSYS___NEXUS_SET_OPT                = 509\n\tSYS___CHANNEL_OPEN                 = 510\n\tSYS___CHANNEL_GET_INFO             = 511\n\tSYS___CHANNEL_SYNC                 = 512\n\tSYS___CHANNEL_GET_OPT              = 513\n\tSYS___CHANNEL_SET_OPT              = 514\n\tSYS_ULOCK_WAIT                     = 515\n\tSYS_ULOCK_WAKE                     = 516\n\tSYS_FCLONEFILEAT                   = 517\n\tSYS_FS_SNAPSHOT                    = 518\n\tSYS_TERMINATE_WITH_PAYLOAD         = 520\n\tSYS_ABORT_WITH_PAYLOAD             = 521\n\tSYS_NECP_SESSION_OPEN              = 522\n\tSYS_NECP_SESSION_ACTION            = 523\n\tSYS_SETATTRLISTAT                  = 524\n\tSYS_NET_QOS_GUIDELINE              = 525\n\tSYS_FMOUNT                         = 526\n\tSYS_NTP_ADJTIME                    = 527\n\tSYS_NTP_GETTIME                    = 528\n\tSYS_OS_FAULT_WITH_PAYLOAD          = 529\n\tSYS_KQUEUE_WORKLOOP_CTL            = 530\n\tSYS___MACH_BRIDGE_REMOTE_TIME      = 531\n\tSYS_MAXSYSCALL                     = 532\n\tSYS_INVALID                        = 63\n)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go",
    "content": "// go run mksysnum.go /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.1.sdk/usr/include/sys/syscall.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && darwin\n\npackage unix\n\n// Deprecated: Use libSystem wrappers instead of direct syscalls.\nconst (\n\tSYS_SYSCALL                        = 0\n\tSYS_EXIT                           = 1\n\tSYS_FORK                           = 2\n\tSYS_READ                           = 3\n\tSYS_WRITE                          = 4\n\tSYS_OPEN                           = 5\n\tSYS_CLOSE                          = 6\n\tSYS_WAIT4                          = 7\n\tSYS_LINK                           = 9\n\tSYS_UNLINK                         = 10\n\tSYS_CHDIR                          = 12\n\tSYS_FCHDIR                         = 13\n\tSYS_MKNOD                          = 14\n\tSYS_CHMOD                          = 15\n\tSYS_CHOWN                          = 16\n\tSYS_GETFSSTAT                      = 18\n\tSYS_GETPID                         = 20\n\tSYS_SETUID                         = 23\n\tSYS_GETUID                         = 24\n\tSYS_GETEUID                        = 25\n\tSYS_PTRACE                         = 26\n\tSYS_RECVMSG                        = 27\n\tSYS_SENDMSG                        = 28\n\tSYS_RECVFROM                       = 29\n\tSYS_ACCEPT                         = 30\n\tSYS_GETPEERNAME                    = 31\n\tSYS_GETSOCKNAME                    = 32\n\tSYS_ACCESS                         = 33\n\tSYS_CHFLAGS                        = 34\n\tSYS_FCHFLAGS                       = 35\n\tSYS_SYNC                           = 36\n\tSYS_KILL                           = 37\n\tSYS_GETPPID                        = 39\n\tSYS_DUP                            = 41\n\tSYS_PIPE                           = 42\n\tSYS_GETEGID                        = 43\n\tSYS_SIGACTION                      = 46\n\tSYS_GETGID                         = 47\n\tSYS_SIGPROCMASK                    = 48\n\tSYS_GETLOGIN                       = 49\n\tSYS_SETLOGIN                       = 50\n\tSYS_ACCT                           = 51\n\tSYS_SIGPENDING                     = 52\n\tSYS_SIGALTSTACK                    = 53\n\tSYS_IOCTL                          = 54\n\tSYS_REBOOT                         = 55\n\tSYS_REVOKE                         = 56\n\tSYS_SYMLINK                        = 57\n\tSYS_READLINK                       = 58\n\tSYS_EXECVE                         = 59\n\tSYS_UMASK                          = 60\n\tSYS_CHROOT                         = 61\n\tSYS_MSYNC                          = 65\n\tSYS_VFORK                          = 66\n\tSYS_MUNMAP                         = 73\n\tSYS_MPROTECT                       = 74\n\tSYS_MADVISE                        = 75\n\tSYS_MINCORE                        = 78\n\tSYS_GETGROUPS                      = 79\n\tSYS_SETGROUPS                      = 80\n\tSYS_GETPGRP                        = 81\n\tSYS_SETPGID                        = 82\n\tSYS_SETITIMER                      = 83\n\tSYS_SWAPON                         = 85\n\tSYS_GETITIMER                      = 86\n\tSYS_GETDTABLESIZE                  = 89\n\tSYS_DUP2                           = 90\n\tSYS_FCNTL                          = 92\n\tSYS_SELECT                         = 93\n\tSYS_FSYNC                          = 95\n\tSYS_SETPRIORITY                    = 96\n\tSYS_SOCKET                         = 97\n\tSYS_CONNECT                        = 98\n\tSYS_GETPRIORITY                    = 100\n\tSYS_BIND                           = 104\n\tSYS_SETSOCKOPT                     = 105\n\tSYS_LISTEN                         = 106\n\tSYS_SIGSUSPEND                     = 111\n\tSYS_GETTIMEOFDAY                   = 116\n\tSYS_GETRUSAGE                      = 117\n\tSYS_GETSOCKOPT                     = 118\n\tSYS_READV                          = 120\n\tSYS_WRITEV                         = 121\n\tSYS_SETTIMEOFDAY                   = 122\n\tSYS_FCHOWN                         = 123\n\tSYS_FCHMOD                         = 124\n\tSYS_SETREUID                       = 126\n\tSYS_SETREGID                       = 127\n\tSYS_RENAME                         = 128\n\tSYS_FLOCK                          = 131\n\tSYS_MKFIFO                         = 132\n\tSYS_SENDTO                         = 133\n\tSYS_SHUTDOWN                       = 134\n\tSYS_SOCKETPAIR                     = 135\n\tSYS_MKDIR                          = 136\n\tSYS_RMDIR                          = 137\n\tSYS_UTIMES                         = 138\n\tSYS_FUTIMES                        = 139\n\tSYS_ADJTIME                        = 140\n\tSYS_GETHOSTUUID                    = 142\n\tSYS_SETSID                         = 147\n\tSYS_GETPGID                        = 151\n\tSYS_SETPRIVEXEC                    = 152\n\tSYS_PREAD                          = 153\n\tSYS_PWRITE                         = 154\n\tSYS_NFSSVC                         = 155\n\tSYS_STATFS                         = 157\n\tSYS_FSTATFS                        = 158\n\tSYS_UNMOUNT                        = 159\n\tSYS_GETFH                          = 161\n\tSYS_QUOTACTL                       = 165\n\tSYS_MOUNT                          = 167\n\tSYS_CSOPS                          = 169\n\tSYS_CSOPS_AUDITTOKEN               = 170\n\tSYS_WAITID                         = 173\n\tSYS_KDEBUG_TYPEFILTER              = 177\n\tSYS_KDEBUG_TRACE_STRING            = 178\n\tSYS_KDEBUG_TRACE64                 = 179\n\tSYS_KDEBUG_TRACE                   = 180\n\tSYS_SETGID                         = 181\n\tSYS_SETEGID                        = 182\n\tSYS_SETEUID                        = 183\n\tSYS_SIGRETURN                      = 184\n\tSYS_THREAD_SELFCOUNTS              = 186\n\tSYS_FDATASYNC                      = 187\n\tSYS_STAT                           = 188\n\tSYS_FSTAT                          = 189\n\tSYS_LSTAT                          = 190\n\tSYS_PATHCONF                       = 191\n\tSYS_FPATHCONF                      = 192\n\tSYS_GETRLIMIT                      = 194\n\tSYS_SETRLIMIT                      = 195\n\tSYS_GETDIRENTRIES                  = 196\n\tSYS_MMAP                           = 197\n\tSYS_LSEEK                          = 199\n\tSYS_TRUNCATE                       = 200\n\tSYS_FTRUNCATE                      = 201\n\tSYS_SYSCTL                         = 202\n\tSYS_MLOCK                          = 203\n\tSYS_MUNLOCK                        = 204\n\tSYS_UNDELETE                       = 205\n\tSYS_OPEN_DPROTECTED_NP             = 216\n\tSYS_GETATTRLIST                    = 220\n\tSYS_SETATTRLIST                    = 221\n\tSYS_GETDIRENTRIESATTR              = 222\n\tSYS_EXCHANGEDATA                   = 223\n\tSYS_SEARCHFS                       = 225\n\tSYS_DELETE                         = 226\n\tSYS_COPYFILE                       = 227\n\tSYS_FGETATTRLIST                   = 228\n\tSYS_FSETATTRLIST                   = 229\n\tSYS_POLL                           = 230\n\tSYS_WATCHEVENT                     = 231\n\tSYS_WAITEVENT                      = 232\n\tSYS_MODWATCH                       = 233\n\tSYS_GETXATTR                       = 234\n\tSYS_FGETXATTR                      = 235\n\tSYS_SETXATTR                       = 236\n\tSYS_FSETXATTR                      = 237\n\tSYS_REMOVEXATTR                    = 238\n\tSYS_FREMOVEXATTR                   = 239\n\tSYS_LISTXATTR                      = 240\n\tSYS_FLISTXATTR                     = 241\n\tSYS_FSCTL                          = 242\n\tSYS_INITGROUPS                     = 243\n\tSYS_POSIX_SPAWN                    = 244\n\tSYS_FFSCTL                         = 245\n\tSYS_NFSCLNT                        = 247\n\tSYS_FHOPEN                         = 248\n\tSYS_MINHERIT                       = 250\n\tSYS_SEMSYS                         = 251\n\tSYS_MSGSYS                         = 252\n\tSYS_SHMSYS                         = 253\n\tSYS_SEMCTL                         = 254\n\tSYS_SEMGET                         = 255\n\tSYS_SEMOP                          = 256\n\tSYS_MSGCTL                         = 258\n\tSYS_MSGGET                         = 259\n\tSYS_MSGSND                         = 260\n\tSYS_MSGRCV                         = 261\n\tSYS_SHMAT                          = 262\n\tSYS_SHMCTL                         = 263\n\tSYS_SHMDT                          = 264\n\tSYS_SHMGET                         = 265\n\tSYS_SHM_OPEN                       = 266\n\tSYS_SHM_UNLINK                     = 267\n\tSYS_SEM_OPEN                       = 268\n\tSYS_SEM_CLOSE                      = 269\n\tSYS_SEM_UNLINK                     = 270\n\tSYS_SEM_WAIT                       = 271\n\tSYS_SEM_TRYWAIT                    = 272\n\tSYS_SEM_POST                       = 273\n\tSYS_SYSCTLBYNAME                   = 274\n\tSYS_OPEN_EXTENDED                  = 277\n\tSYS_UMASK_EXTENDED                 = 278\n\tSYS_STAT_EXTENDED                  = 279\n\tSYS_LSTAT_EXTENDED                 = 280\n\tSYS_FSTAT_EXTENDED                 = 281\n\tSYS_CHMOD_EXTENDED                 = 282\n\tSYS_FCHMOD_EXTENDED                = 283\n\tSYS_ACCESS_EXTENDED                = 284\n\tSYS_SETTID                         = 285\n\tSYS_GETTID                         = 286\n\tSYS_SETSGROUPS                     = 287\n\tSYS_GETSGROUPS                     = 288\n\tSYS_SETWGROUPS                     = 289\n\tSYS_GETWGROUPS                     = 290\n\tSYS_MKFIFO_EXTENDED                = 291\n\tSYS_MKDIR_EXTENDED                 = 292\n\tSYS_IDENTITYSVC                    = 293\n\tSYS_SHARED_REGION_CHECK_NP         = 294\n\tSYS_VM_PRESSURE_MONITOR            = 296\n\tSYS_PSYNCH_RW_LONGRDLOCK           = 297\n\tSYS_PSYNCH_RW_YIELDWRLOCK          = 298\n\tSYS_PSYNCH_RW_DOWNGRADE            = 299\n\tSYS_PSYNCH_RW_UPGRADE              = 300\n\tSYS_PSYNCH_MUTEXWAIT               = 301\n\tSYS_PSYNCH_MUTEXDROP               = 302\n\tSYS_PSYNCH_CVBROAD                 = 303\n\tSYS_PSYNCH_CVSIGNAL                = 304\n\tSYS_PSYNCH_CVWAIT                  = 305\n\tSYS_PSYNCH_RW_RDLOCK               = 306\n\tSYS_PSYNCH_RW_WRLOCK               = 307\n\tSYS_PSYNCH_RW_UNLOCK               = 308\n\tSYS_PSYNCH_RW_UNLOCK2              = 309\n\tSYS_GETSID                         = 310\n\tSYS_SETTID_WITH_PID                = 311\n\tSYS_PSYNCH_CVCLRPREPOST            = 312\n\tSYS_AIO_FSYNC                      = 313\n\tSYS_AIO_RETURN                     = 314\n\tSYS_AIO_SUSPEND                    = 315\n\tSYS_AIO_CANCEL                     = 316\n\tSYS_AIO_ERROR                      = 317\n\tSYS_AIO_READ                       = 318\n\tSYS_AIO_WRITE                      = 319\n\tSYS_LIO_LISTIO                     = 320\n\tSYS_IOPOLICYSYS                    = 322\n\tSYS_PROCESS_POLICY                 = 323\n\tSYS_MLOCKALL                       = 324\n\tSYS_MUNLOCKALL                     = 325\n\tSYS_ISSETUGID                      = 327\n\tSYS___PTHREAD_KILL                 = 328\n\tSYS___PTHREAD_SIGMASK              = 329\n\tSYS___SIGWAIT                      = 330\n\tSYS___DISABLE_THREADSIGNAL         = 331\n\tSYS___PTHREAD_MARKCANCEL           = 332\n\tSYS___PTHREAD_CANCELED             = 333\n\tSYS___SEMWAIT_SIGNAL               = 334\n\tSYS_PROC_INFO                      = 336\n\tSYS_SENDFILE                       = 337\n\tSYS_STAT64                         = 338\n\tSYS_FSTAT64                        = 339\n\tSYS_LSTAT64                        = 340\n\tSYS_STAT64_EXTENDED                = 341\n\tSYS_LSTAT64_EXTENDED               = 342\n\tSYS_FSTAT64_EXTENDED               = 343\n\tSYS_GETDIRENTRIES64                = 344\n\tSYS_STATFS64                       = 345\n\tSYS_FSTATFS64                      = 346\n\tSYS_GETFSSTAT64                    = 347\n\tSYS___PTHREAD_CHDIR                = 348\n\tSYS___PTHREAD_FCHDIR               = 349\n\tSYS_AUDIT                          = 350\n\tSYS_AUDITON                        = 351\n\tSYS_GETAUID                        = 353\n\tSYS_SETAUID                        = 354\n\tSYS_GETAUDIT_ADDR                  = 357\n\tSYS_SETAUDIT_ADDR                  = 358\n\tSYS_AUDITCTL                       = 359\n\tSYS_BSDTHREAD_CREATE               = 360\n\tSYS_BSDTHREAD_TERMINATE            = 361\n\tSYS_KQUEUE                         = 362\n\tSYS_KEVENT                         = 363\n\tSYS_LCHOWN                         = 364\n\tSYS_BSDTHREAD_REGISTER             = 366\n\tSYS_WORKQ_OPEN                     = 367\n\tSYS_WORKQ_KERNRETURN               = 368\n\tSYS_KEVENT64                       = 369\n\tSYS___OLD_SEMWAIT_SIGNAL           = 370\n\tSYS___OLD_SEMWAIT_SIGNAL_NOCANCEL  = 371\n\tSYS_THREAD_SELFID                  = 372\n\tSYS_LEDGER                         = 373\n\tSYS_KEVENT_QOS                     = 374\n\tSYS_KEVENT_ID                      = 375\n\tSYS___MAC_EXECVE                   = 380\n\tSYS___MAC_SYSCALL                  = 381\n\tSYS___MAC_GET_FILE                 = 382\n\tSYS___MAC_SET_FILE                 = 383\n\tSYS___MAC_GET_LINK                 = 384\n\tSYS___MAC_SET_LINK                 = 385\n\tSYS___MAC_GET_PROC                 = 386\n\tSYS___MAC_SET_PROC                 = 387\n\tSYS___MAC_GET_FD                   = 388\n\tSYS___MAC_SET_FD                   = 389\n\tSYS___MAC_GET_PID                  = 390\n\tSYS_PSELECT                        = 394\n\tSYS_PSELECT_NOCANCEL               = 395\n\tSYS_READ_NOCANCEL                  = 396\n\tSYS_WRITE_NOCANCEL                 = 397\n\tSYS_OPEN_NOCANCEL                  = 398\n\tSYS_CLOSE_NOCANCEL                 = 399\n\tSYS_WAIT4_NOCANCEL                 = 400\n\tSYS_RECVMSG_NOCANCEL               = 401\n\tSYS_SENDMSG_NOCANCEL               = 402\n\tSYS_RECVFROM_NOCANCEL              = 403\n\tSYS_ACCEPT_NOCANCEL                = 404\n\tSYS_MSYNC_NOCANCEL                 = 405\n\tSYS_FCNTL_NOCANCEL                 = 406\n\tSYS_SELECT_NOCANCEL                = 407\n\tSYS_FSYNC_NOCANCEL                 = 408\n\tSYS_CONNECT_NOCANCEL               = 409\n\tSYS_SIGSUSPEND_NOCANCEL            = 410\n\tSYS_READV_NOCANCEL                 = 411\n\tSYS_WRITEV_NOCANCEL                = 412\n\tSYS_SENDTO_NOCANCEL                = 413\n\tSYS_PREAD_NOCANCEL                 = 414\n\tSYS_PWRITE_NOCANCEL                = 415\n\tSYS_WAITID_NOCANCEL                = 416\n\tSYS_POLL_NOCANCEL                  = 417\n\tSYS_MSGSND_NOCANCEL                = 418\n\tSYS_MSGRCV_NOCANCEL                = 419\n\tSYS_SEM_WAIT_NOCANCEL              = 420\n\tSYS_AIO_SUSPEND_NOCANCEL           = 421\n\tSYS___SIGWAIT_NOCANCEL             = 422\n\tSYS___SEMWAIT_SIGNAL_NOCANCEL      = 423\n\tSYS___MAC_MOUNT                    = 424\n\tSYS___MAC_GET_MOUNT                = 425\n\tSYS___MAC_GETFSSTAT                = 426\n\tSYS_FSGETPATH                      = 427\n\tSYS_AUDIT_SESSION_SELF             = 428\n\tSYS_AUDIT_SESSION_JOIN             = 429\n\tSYS_FILEPORT_MAKEPORT              = 430\n\tSYS_FILEPORT_MAKEFD                = 431\n\tSYS_AUDIT_SESSION_PORT             = 432\n\tSYS_PID_SUSPEND                    = 433\n\tSYS_PID_RESUME                     = 434\n\tSYS_PID_HIBERNATE                  = 435\n\tSYS_PID_SHUTDOWN_SOCKETS           = 436\n\tSYS_SHARED_REGION_MAP_AND_SLIDE_NP = 438\n\tSYS_KAS_INFO                       = 439\n\tSYS_MEMORYSTATUS_CONTROL           = 440\n\tSYS_GUARDED_OPEN_NP                = 441\n\tSYS_GUARDED_CLOSE_NP               = 442\n\tSYS_GUARDED_KQUEUE_NP              = 443\n\tSYS_CHANGE_FDGUARD_NP              = 444\n\tSYS_USRCTL                         = 445\n\tSYS_PROC_RLIMIT_CONTROL            = 446\n\tSYS_CONNECTX                       = 447\n\tSYS_DISCONNECTX                    = 448\n\tSYS_PEELOFF                        = 449\n\tSYS_SOCKET_DELEGATE                = 450\n\tSYS_TELEMETRY                      = 451\n\tSYS_PROC_UUID_POLICY               = 452\n\tSYS_MEMORYSTATUS_GET_LEVEL         = 453\n\tSYS_SYSTEM_OVERRIDE                = 454\n\tSYS_VFS_PURGE                      = 455\n\tSYS_SFI_CTL                        = 456\n\tSYS_SFI_PIDCTL                     = 457\n\tSYS_COALITION                      = 458\n\tSYS_COALITION_INFO                 = 459\n\tSYS_NECP_MATCH_POLICY              = 460\n\tSYS_GETATTRLISTBULK                = 461\n\tSYS_CLONEFILEAT                    = 462\n\tSYS_OPENAT                         = 463\n\tSYS_OPENAT_NOCANCEL                = 464\n\tSYS_RENAMEAT                       = 465\n\tSYS_FACCESSAT                      = 466\n\tSYS_FCHMODAT                       = 467\n\tSYS_FCHOWNAT                       = 468\n\tSYS_FSTATAT                        = 469\n\tSYS_FSTATAT64                      = 470\n\tSYS_LINKAT                         = 471\n\tSYS_UNLINKAT                       = 472\n\tSYS_READLINKAT                     = 473\n\tSYS_SYMLINKAT                      = 474\n\tSYS_MKDIRAT                        = 475\n\tSYS_GETATTRLISTAT                  = 476\n\tSYS_PROC_TRACE_LOG                 = 477\n\tSYS_BSDTHREAD_CTL                  = 478\n\tSYS_OPENBYID_NP                    = 479\n\tSYS_RECVMSG_X                      = 480\n\tSYS_SENDMSG_X                      = 481\n\tSYS_THREAD_SELFUSAGE               = 482\n\tSYS_CSRCTL                         = 483\n\tSYS_GUARDED_OPEN_DPROTECTED_NP     = 484\n\tSYS_GUARDED_WRITE_NP               = 485\n\tSYS_GUARDED_PWRITE_NP              = 486\n\tSYS_GUARDED_WRITEV_NP              = 487\n\tSYS_RENAMEATX_NP                   = 488\n\tSYS_MREMAP_ENCRYPTED               = 489\n\tSYS_NETAGENT_TRIGGER               = 490\n\tSYS_STACK_SNAPSHOT_WITH_CONFIG     = 491\n\tSYS_MICROSTACKSHOT                 = 492\n\tSYS_GRAB_PGO_DATA                  = 493\n\tSYS_PERSONA                        = 494\n\tSYS_WORK_INTERVAL_CTL              = 499\n\tSYS_GETENTROPY                     = 500\n\tSYS_NECP_OPEN                      = 501\n\tSYS_NECP_CLIENT_ACTION             = 502\n\tSYS___NEXUS_OPEN                   = 503\n\tSYS___NEXUS_REGISTER               = 504\n\tSYS___NEXUS_DEREGISTER             = 505\n\tSYS___NEXUS_CREATE                 = 506\n\tSYS___NEXUS_DESTROY                = 507\n\tSYS___NEXUS_GET_OPT                = 508\n\tSYS___NEXUS_SET_OPT                = 509\n\tSYS___CHANNEL_OPEN                 = 510\n\tSYS___CHANNEL_GET_INFO             = 511\n\tSYS___CHANNEL_SYNC                 = 512\n\tSYS___CHANNEL_GET_OPT              = 513\n\tSYS___CHANNEL_SET_OPT              = 514\n\tSYS_ULOCK_WAIT                     = 515\n\tSYS_ULOCK_WAKE                     = 516\n\tSYS_FCLONEFILEAT                   = 517\n\tSYS_FS_SNAPSHOT                    = 518\n\tSYS_TERMINATE_WITH_PAYLOAD         = 520\n\tSYS_ABORT_WITH_PAYLOAD             = 521\n\tSYS_NECP_SESSION_OPEN              = 522\n\tSYS_NECP_SESSION_ACTION            = 523\n\tSYS_SETATTRLISTAT                  = 524\n\tSYS_NET_QOS_GUIDELINE              = 525\n\tSYS_FMOUNT                         = 526\n\tSYS_NTP_ADJTIME                    = 527\n\tSYS_NTP_GETTIME                    = 528\n\tSYS_OS_FAULT_WITH_PAYLOAD          = 529\n\tSYS_MAXSYSCALL                     = 530\n\tSYS_INVALID                        = 63\n)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go",
    "content": "// go run mksysnum.go https://gitweb.dragonflybsd.org/dragonfly.git/blob_plain/HEAD:/sys/kern/syscalls.master\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && dragonfly\n\npackage unix\n\nconst (\n\tSYS_EXIT  = 1 // { void exit(int rval); }\n\tSYS_FORK  = 2 // { int fork(void); }\n\tSYS_READ  = 3 // { ssize_t read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN  = 5 // { int open(char *path, int flags, int mode); }\n\tSYS_CLOSE = 6 // { int close(int fd); }\n\tSYS_WAIT4 = 7 // { int wait4(int pid, int *status, int options, struct rusage *rusage); } wait4 wait_args int\n\t// SYS_NOSYS = 8;  // { int nosys(void); } __nosys nosys_args int\n\tSYS_LINK                   = 9   // { int link(char *path, char *link); }\n\tSYS_UNLINK                 = 10  // { int unlink(char *path); }\n\tSYS_CHDIR                  = 12  // { int chdir(char *path); }\n\tSYS_FCHDIR                 = 13  // { int fchdir(int fd); }\n\tSYS_MKNOD                  = 14  // { int mknod(char *path, int mode, int dev); }\n\tSYS_CHMOD                  = 15  // { int chmod(char *path, int mode); }\n\tSYS_CHOWN                  = 16  // { int chown(char *path, int uid, int gid); }\n\tSYS_OBREAK                 = 17  // { int obreak(char *nsize); } break obreak_args int\n\tSYS_GETFSSTAT              = 18  // { int getfsstat(struct statfs *buf, long bufsize, int flags); }\n\tSYS_GETPID                 = 20  // { pid_t getpid(void); }\n\tSYS_MOUNT                  = 21  // { int mount(char *type, char *path, int flags, caddr_t data); }\n\tSYS_UNMOUNT                = 22  // { int unmount(char *path, int flags); }\n\tSYS_SETUID                 = 23  // { int setuid(uid_t uid); }\n\tSYS_GETUID                 = 24  // { uid_t getuid(void); }\n\tSYS_GETEUID                = 25  // { uid_t geteuid(void); }\n\tSYS_PTRACE                 = 26  // { int ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG                = 27  // { int recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG                = 28  // { int sendmsg(int s, caddr_t msg, int flags); }\n\tSYS_RECVFROM               = 29  // { int recvfrom(int s, caddr_t buf, size_t len, int flags, caddr_t from, int *fromlenaddr); }\n\tSYS_ACCEPT                 = 30  // { int accept(int s, caddr_t name, int *anamelen); }\n\tSYS_GETPEERNAME            = 31  // { int getpeername(int fdes, caddr_t asa, int *alen); }\n\tSYS_GETSOCKNAME            = 32  // { int getsockname(int fdes, caddr_t asa, int *alen); }\n\tSYS_ACCESS                 = 33  // { int access(char *path, int flags); }\n\tSYS_CHFLAGS                = 34  // { int chflags(const char *path, u_long flags); }\n\tSYS_FCHFLAGS               = 35  // { int fchflags(int fd, u_long flags); }\n\tSYS_SYNC                   = 36  // { int sync(void); }\n\tSYS_KILL                   = 37  // { int kill(int pid, int signum); }\n\tSYS_GETPPID                = 39  // { pid_t getppid(void); }\n\tSYS_DUP                    = 41  // { int dup(int fd); }\n\tSYS_PIPE                   = 42  // { int pipe(void); }\n\tSYS_GETEGID                = 43  // { gid_t getegid(void); }\n\tSYS_PROFIL                 = 44  // { int profil(caddr_t samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE                 = 45  // { int ktrace(const char *fname, int ops, int facs, int pid); }\n\tSYS_GETGID                 = 47  // { gid_t getgid(void); }\n\tSYS_GETLOGIN               = 49  // { int getlogin(char *namebuf, size_t namelen); }\n\tSYS_SETLOGIN               = 50  // { int setlogin(char *namebuf); }\n\tSYS_ACCT                   = 51  // { int acct(char *path); }\n\tSYS_SIGALTSTACK            = 53  // { int sigaltstack(stack_t *ss, stack_t *oss); }\n\tSYS_IOCTL                  = 54  // { int ioctl(int fd, u_long com, caddr_t data); }\n\tSYS_REBOOT                 = 55  // { int reboot(int opt); }\n\tSYS_REVOKE                 = 56  // { int revoke(char *path); }\n\tSYS_SYMLINK                = 57  // { int symlink(char *path, char *link); }\n\tSYS_READLINK               = 58  // { int readlink(char *path, char *buf, int count); }\n\tSYS_EXECVE                 = 59  // { int execve(char *fname, char **argv, char **envv); }\n\tSYS_UMASK                  = 60  // { int umask(int newmask); } umask umask_args int\n\tSYS_CHROOT                 = 61  // { int chroot(char *path); }\n\tSYS_MSYNC                  = 65  // { int msync(void *addr, size_t len, int flags); }\n\tSYS_VFORK                  = 66  // { pid_t vfork(void); }\n\tSYS_SBRK                   = 69  // { caddr_t sbrk(size_t incr); }\n\tSYS_SSTK                   = 70  // { int sstk(size_t incr); }\n\tSYS_MUNMAP                 = 73  // { int munmap(void *addr, size_t len); }\n\tSYS_MPROTECT               = 74  // { int mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE                = 75  // { int madvise(void *addr, size_t len, int behav); }\n\tSYS_MINCORE                = 78  // { int mincore(const void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS              = 79  // { int getgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS              = 80  // { int setgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_GETPGRP                = 81  // { int getpgrp(void); }\n\tSYS_SETPGID                = 82  // { int setpgid(int pid, int pgid); }\n\tSYS_SETITIMER              = 83  // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_SWAPON                 = 85  // { int swapon(char *name); }\n\tSYS_GETITIMER              = 86  // { int getitimer(u_int which, struct itimerval *itv); }\n\tSYS_GETDTABLESIZE          = 89  // { int getdtablesize(void); }\n\tSYS_DUP2                   = 90  // { int dup2(int from, int to); }\n\tSYS_FCNTL                  = 92  // { int fcntl(int fd, int cmd, long arg); }\n\tSYS_SELECT                 = 93  // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_FSYNC                  = 95  // { int fsync(int fd); }\n\tSYS_SETPRIORITY            = 96  // { int setpriority(int which, int who, int prio); }\n\tSYS_SOCKET                 = 97  // { int socket(int domain, int type, int protocol); }\n\tSYS_CONNECT                = 98  // { int connect(int s, caddr_t name, int namelen); }\n\tSYS_GETPRIORITY            = 100 // { int getpriority(int which, int who); }\n\tSYS_BIND                   = 104 // { int bind(int s, caddr_t name, int namelen); }\n\tSYS_SETSOCKOPT             = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); }\n\tSYS_LISTEN                 = 106 // { int listen(int s, int backlog); }\n\tSYS_GETTIMEOFDAY           = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_GETRUSAGE              = 117 // { int getrusage(int who, struct rusage *rusage); }\n\tSYS_GETSOCKOPT             = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); }\n\tSYS_READV                  = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); }\n\tSYS_WRITEV                 = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); }\n\tSYS_SETTIMEOFDAY           = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); }\n\tSYS_FCHOWN                 = 123 // { int fchown(int fd, int uid, int gid); }\n\tSYS_FCHMOD                 = 124 // { int fchmod(int fd, int mode); }\n\tSYS_SETREUID               = 126 // { int setreuid(int ruid, int euid); }\n\tSYS_SETREGID               = 127 // { int setregid(int rgid, int egid); }\n\tSYS_RENAME                 = 128 // { int rename(char *from, char *to); }\n\tSYS_FLOCK                  = 131 // { int flock(int fd, int how); }\n\tSYS_MKFIFO                 = 132 // { int mkfifo(char *path, int mode); }\n\tSYS_SENDTO                 = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); }\n\tSYS_SHUTDOWN               = 134 // { int shutdown(int s, int how); }\n\tSYS_SOCKETPAIR             = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR                  = 136 // { int mkdir(char *path, int mode); }\n\tSYS_RMDIR                  = 137 // { int rmdir(char *path); }\n\tSYS_UTIMES                 = 138 // { int utimes(char *path, struct timeval *tptr); }\n\tSYS_ADJTIME                = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); }\n\tSYS_SETSID                 = 147 // { int setsid(void); }\n\tSYS_QUOTACTL               = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); }\n\tSYS_STATFS                 = 157 // { int statfs(char *path, struct statfs *buf); }\n\tSYS_FSTATFS                = 158 // { int fstatfs(int fd, struct statfs *buf); }\n\tSYS_GETFH                  = 161 // { int getfh(char *fname, struct fhandle *fhp); }\n\tSYS_SYSARCH                = 165 // { int sysarch(int op, char *parms); }\n\tSYS_RTPRIO                 = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); }\n\tSYS_EXTPREAD               = 173 // { ssize_t extpread(int fd, void *buf, size_t nbyte, int flags, off_t offset); }\n\tSYS_EXTPWRITE              = 174 // { ssize_t extpwrite(int fd, const void *buf, size_t nbyte, int flags, off_t offset); }\n\tSYS_NTP_ADJTIME            = 176 // { int ntp_adjtime(struct timex *tp); }\n\tSYS_SETGID                 = 181 // { int setgid(gid_t gid); }\n\tSYS_SETEGID                = 182 // { int setegid(gid_t egid); }\n\tSYS_SETEUID                = 183 // { int seteuid(uid_t euid); }\n\tSYS_PATHCONF               = 191 // { int pathconf(char *path, int name); }\n\tSYS_FPATHCONF              = 192 // { int fpathconf(int fd, int name); }\n\tSYS_GETRLIMIT              = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int\n\tSYS_SETRLIMIT              = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int\n\tSYS_MMAP                   = 197 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, int pad, off_t pos); }\n\tSYS_LSEEK                  = 199 // { off_t lseek(int fd, int pad, off_t offset, int whence); }\n\tSYS_TRUNCATE               = 200 // { int truncate(char *path, int pad, off_t length); }\n\tSYS_FTRUNCATE              = 201 // { int ftruncate(int fd, int pad, off_t length); }\n\tSYS___SYSCTL               = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int\n\tSYS_MLOCK                  = 203 // { int mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK                = 204 // { int munlock(const void *addr, size_t len); }\n\tSYS_UNDELETE               = 205 // { int undelete(char *path); }\n\tSYS_FUTIMES                = 206 // { int futimes(int fd, struct timeval *tptr); }\n\tSYS_GETPGID                = 207 // { int getpgid(pid_t pid); }\n\tSYS_POLL                   = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS___SEMCTL               = 220 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_SEMGET                 = 221 // { int semget(key_t key, int nsems, int semflg); }\n\tSYS_SEMOP                  = 222 // { int semop(int semid, struct sembuf *sops, u_int nsops); }\n\tSYS_MSGCTL                 = 224 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_MSGGET                 = 225 // { int msgget(key_t key, int msgflg); }\n\tSYS_MSGSND                 = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV                 = 227 // { int msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT                  = 228 // { caddr_t shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMCTL                 = 229 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_SHMDT                  = 230 // { int shmdt(const void *shmaddr); }\n\tSYS_SHMGET                 = 231 // { int shmget(key_t key, size_t size, int shmflg); }\n\tSYS_CLOCK_GETTIME          = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME          = 233 // { int clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES           = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_NANOSLEEP              = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_MINHERIT               = 250 // { int minherit(void *addr, size_t len, int inherit); }\n\tSYS_RFORK                  = 251 // { int rfork(int flags); }\n\tSYS_OPENBSD_POLL           = 252 // { int openbsd_poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_ISSETUGID              = 253 // { int issetugid(void); }\n\tSYS_LCHOWN                 = 254 // { int lchown(char *path, int uid, int gid); }\n\tSYS_LCHMOD                 = 274 // { int lchmod(char *path, mode_t mode); }\n\tSYS_LUTIMES                = 276 // { int lutimes(char *path, struct timeval *tptr); }\n\tSYS_EXTPREADV              = 289 // { ssize_t extpreadv(int fd, const struct iovec *iovp, int iovcnt, int flags, off_t offset); }\n\tSYS_EXTPWRITEV             = 290 // { ssize_t extpwritev(int fd, const struct iovec *iovp, int iovcnt, int flags, off_t offset); }\n\tSYS_FHSTATFS               = 297 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); }\n\tSYS_FHOPEN                 = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); }\n\tSYS_MODNEXT                = 300 // { int modnext(int modid); }\n\tSYS_MODSTAT                = 301 // { int modstat(int modid, struct module_stat* stat); }\n\tSYS_MODFNEXT               = 302 // { int modfnext(int modid); }\n\tSYS_MODFIND                = 303 // { int modfind(const char *name); }\n\tSYS_KLDLOAD                = 304 // { int kldload(const char *file); }\n\tSYS_KLDUNLOAD              = 305 // { int kldunload(int fileid); }\n\tSYS_KLDFIND                = 306 // { int kldfind(const char *file); }\n\tSYS_KLDNEXT                = 307 // { int kldnext(int fileid); }\n\tSYS_KLDSTAT                = 308 // { int kldstat(int fileid, struct kld_file_stat* stat); }\n\tSYS_KLDFIRSTMOD            = 309 // { int kldfirstmod(int fileid); }\n\tSYS_GETSID                 = 310 // { int getsid(pid_t pid); }\n\tSYS_SETRESUID              = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_SETRESGID              = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_AIO_RETURN             = 314 // { int aio_return(struct aiocb *aiocbp); }\n\tSYS_AIO_SUSPEND            = 315 // { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); }\n\tSYS_AIO_CANCEL             = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); }\n\tSYS_AIO_ERROR              = 317 // { int aio_error(struct aiocb *aiocbp); }\n\tSYS_AIO_READ               = 318 // { int aio_read(struct aiocb *aiocbp); }\n\tSYS_AIO_WRITE              = 319 // { int aio_write(struct aiocb *aiocbp); }\n\tSYS_LIO_LISTIO             = 320 // { int lio_listio(int mode, struct aiocb * const *acb_list, int nent, struct sigevent *sig); }\n\tSYS_YIELD                  = 321 // { int yield(void); }\n\tSYS_MLOCKALL               = 324 // { int mlockall(int how); }\n\tSYS_MUNLOCKALL             = 325 // { int munlockall(void); }\n\tSYS___GETCWD               = 326 // { int __getcwd(u_char *buf, u_int buflen); }\n\tSYS_SCHED_SETPARAM         = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); }\n\tSYS_SCHED_GETPARAM         = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); }\n\tSYS_SCHED_SETSCHEDULER     = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); }\n\tSYS_SCHED_GETSCHEDULER     = 330 // { int sched_getscheduler (pid_t pid); }\n\tSYS_SCHED_YIELD            = 331 // { int sched_yield (void); }\n\tSYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); }\n\tSYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); }\n\tSYS_SCHED_RR_GET_INTERVAL  = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); }\n\tSYS_UTRACE                 = 335 // { int utrace(const void *addr, size_t len); }\n\tSYS_KLDSYM                 = 337 // { int kldsym(int fileid, int cmd, void *data); }\n\tSYS_JAIL                   = 338 // { int jail(struct jail *jail); }\n\tSYS_SIGPROCMASK            = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); }\n\tSYS_SIGSUSPEND             = 341 // { int sigsuspend(const sigset_t *sigmask); }\n\tSYS_SIGACTION              = 342 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); }\n\tSYS_SIGPENDING             = 343 // { int sigpending(sigset_t *set); }\n\tSYS_SIGRETURN              = 344 // { int sigreturn(ucontext_t *sigcntxp); }\n\tSYS_SIGTIMEDWAIT           = 345 // { int sigtimedwait(const sigset_t *set,siginfo_t *info, const struct timespec *timeout); }\n\tSYS_SIGWAITINFO            = 346 // { int sigwaitinfo(const sigset_t *set,siginfo_t *info); }\n\tSYS___ACL_GET_FILE         = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_FILE         = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_GET_FD           = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_FD           = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_DELETE_FILE      = 351 // { int __acl_delete_file(const char *path, acl_type_t type); }\n\tSYS___ACL_DELETE_FD        = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); }\n\tSYS___ACL_ACLCHECK_FILE    = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_ACLCHECK_FD      = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS_EXTATTRCTL             = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FILE       = 356 // { int extattr_set_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FILE       = 357 // { int extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FILE    = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_AIO_WAITCOMPLETE       = 359 // { int aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); }\n\tSYS_GETRESUID              = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_GETRESGID              = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_KQUEUE                 = 362 // { int kqueue(void); }\n\tSYS_KEVENT                 = 363 // { int kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_KENV                   = 390 // { int kenv(int what, const char *name, char *value, int len); }\n\tSYS_LCHFLAGS               = 391 // { int lchflags(const char *path, u_long flags); }\n\tSYS_UUIDGEN                = 392 // { int uuidgen(struct uuid *store, int count); }\n\tSYS_SENDFILE               = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); }\n\tSYS_VARSYM_SET             = 450 // { int varsym_set(int level, const char *name, const char *data); }\n\tSYS_VARSYM_GET             = 451 // { int varsym_get(int mask, const char *wild, char *buf, int bufsize); }\n\tSYS_VARSYM_LIST            = 452 // { int varsym_list(int level, char *buf, int maxsize, int *marker); }\n\tSYS_EXEC_SYS_REGISTER      = 465 // { int exec_sys_register(void *entry); }\n\tSYS_EXEC_SYS_UNREGISTER    = 466 // { int exec_sys_unregister(int id); }\n\tSYS_SYS_CHECKPOINT         = 467 // { int sys_checkpoint(int type, int fd, pid_t pid, int retval); }\n\tSYS_MOUNTCTL               = 468 // { int mountctl(const char *path, int op, int fd, const void *ctl, int ctllen, void *buf, int buflen); }\n\tSYS_UMTX_SLEEP             = 469 // { int umtx_sleep(volatile const int *ptr, int value, int timeout); }\n\tSYS_UMTX_WAKEUP            = 470 // { int umtx_wakeup(volatile const int *ptr, int count); }\n\tSYS_JAIL_ATTACH            = 471 // { int jail_attach(int jid); }\n\tSYS_SET_TLS_AREA           = 472 // { int set_tls_area(int which, struct tls_info *info, size_t infosize); }\n\tSYS_GET_TLS_AREA           = 473 // { int get_tls_area(int which, struct tls_info *info, size_t infosize); }\n\tSYS_CLOSEFROM              = 474 // { int closefrom(int fd); }\n\tSYS_STAT                   = 475 // { int stat(const char *path, struct stat *ub); }\n\tSYS_FSTAT                  = 476 // { int fstat(int fd, struct stat *sb); }\n\tSYS_LSTAT                  = 477 // { int lstat(const char *path, struct stat *ub); }\n\tSYS_FHSTAT                 = 478 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); }\n\tSYS_GETDIRENTRIES          = 479 // { int getdirentries(int fd, char *buf, u_int count, long *basep); }\n\tSYS_GETDENTS               = 480 // { int getdents(int fd, char *buf, size_t count); }\n\tSYS_USCHED_SET             = 481 // { int usched_set(pid_t pid, int cmd, void *data, int bytes); }\n\tSYS_EXTACCEPT              = 482 // { int extaccept(int s, int flags, caddr_t name, int *anamelen); }\n\tSYS_EXTCONNECT             = 483 // { int extconnect(int s, int flags, caddr_t name, int namelen); }\n\tSYS_MCONTROL               = 485 // { int mcontrol(void *addr, size_t len, int behav, off_t value); }\n\tSYS_VMSPACE_CREATE         = 486 // { int vmspace_create(void *id, int type, void *data); }\n\tSYS_VMSPACE_DESTROY        = 487 // { int vmspace_destroy(void *id); }\n\tSYS_VMSPACE_CTL            = 488 // { int vmspace_ctl(void *id, int cmd, \t\tstruct trapframe *tframe,\tstruct vextframe *vframe); }\n\tSYS_VMSPACE_MMAP           = 489 // { int vmspace_mmap(void *id, void *addr, size_t len, int prot, int flags, int fd, off_t offset); }\n\tSYS_VMSPACE_MUNMAP         = 490 // { int vmspace_munmap(void *id, void *addr,\tsize_t len); }\n\tSYS_VMSPACE_MCONTROL       = 491 // { int vmspace_mcontrol(void *id, void *addr, \tsize_t len, int behav, off_t value); }\n\tSYS_VMSPACE_PREAD          = 492 // { ssize_t vmspace_pread(void *id, void *buf, size_t nbyte, int flags, off_t offset); }\n\tSYS_VMSPACE_PWRITE         = 493 // { ssize_t vmspace_pwrite(void *id, const void *buf, size_t nbyte, int flags, off_t offset); }\n\tSYS_EXTEXIT                = 494 // { void extexit(int how, int status, void *addr); }\n\tSYS_LWP_CREATE             = 495 // { int lwp_create(struct lwp_params *params); }\n\tSYS_LWP_GETTID             = 496 // { lwpid_t lwp_gettid(void); }\n\tSYS_LWP_KILL               = 497 // { int lwp_kill(pid_t pid, lwpid_t tid, int signum); }\n\tSYS_LWP_RTPRIO             = 498 // { int lwp_rtprio(int function, pid_t pid, lwpid_t tid, struct rtprio *rtp); }\n\tSYS_PSELECT                = 499 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts,    const sigset_t *sigmask); }\n\tSYS_STATVFS                = 500 // { int statvfs(const char *path, struct statvfs *buf); }\n\tSYS_FSTATVFS               = 501 // { int fstatvfs(int fd, struct statvfs *buf); }\n\tSYS_FHSTATVFS              = 502 // { int fhstatvfs(const struct fhandle *u_fhp, struct statvfs *buf); }\n\tSYS_GETVFSSTAT             = 503 // { int getvfsstat(struct statfs *buf,          struct statvfs *vbuf, long vbufsize, int flags); }\n\tSYS_OPENAT                 = 504 // { int openat(int fd, char *path, int flags, int mode); }\n\tSYS_FSTATAT                = 505 // { int fstatat(int fd, char *path, \tstruct stat *sb, int flags); }\n\tSYS_FCHMODAT               = 506 // { int fchmodat(int fd, char *path, int mode, int flags); }\n\tSYS_FCHOWNAT               = 507 // { int fchownat(int fd, char *path, int uid, int gid, int flags); }\n\tSYS_UNLINKAT               = 508 // { int unlinkat(int fd, char *path, int flags); }\n\tSYS_FACCESSAT              = 509 // { int faccessat(int fd, char *path, int amode, int flags); }\n\tSYS_MQ_OPEN                = 510 // { mqd_t mq_open(const char * name, int oflag, mode_t mode, struct mq_attr *attr); }\n\tSYS_MQ_CLOSE               = 511 // { int mq_close(mqd_t mqdes); }\n\tSYS_MQ_UNLINK              = 512 // { int mq_unlink(const char *name); }\n\tSYS_MQ_GETATTR             = 513 // { int mq_getattr(mqd_t mqdes, struct mq_attr *mqstat); }\n\tSYS_MQ_SETATTR             = 514 // { int mq_setattr(mqd_t mqdes, const struct mq_attr *mqstat, struct mq_attr *omqstat); }\n\tSYS_MQ_NOTIFY              = 515 // { int mq_notify(mqd_t mqdes, const struct sigevent *notification); }\n\tSYS_MQ_SEND                = 516 // { int mq_send(mqd_t mqdes, const char *msg_ptr, size_t msg_len, unsigned msg_prio); }\n\tSYS_MQ_RECEIVE             = 517 // { ssize_t mq_receive(mqd_t mqdes, char *msg_ptr, size_t msg_len, unsigned *msg_prio); }\n\tSYS_MQ_TIMEDSEND           = 518 // { int mq_timedsend(mqd_t mqdes, const char *msg_ptr, size_t msg_len, unsigned msg_prio, const struct timespec *abs_timeout); }\n\tSYS_MQ_TIMEDRECEIVE        = 519 // { ssize_t mq_timedreceive(mqd_t mqdes, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); }\n\tSYS_IOPRIO_SET             = 520 // { int ioprio_set(int which, int who, int prio); }\n\tSYS_IOPRIO_GET             = 521 // { int ioprio_get(int which, int who); }\n\tSYS_CHROOT_KERNEL          = 522 // { int chroot_kernel(char *path); }\n\tSYS_RENAMEAT               = 523 // { int renameat(int oldfd, char *old, int newfd, char *new); }\n\tSYS_MKDIRAT                = 524 // { int mkdirat(int fd, char *path, mode_t mode); }\n\tSYS_MKFIFOAT               = 525 // { int mkfifoat(int fd, char *path, mode_t mode); }\n\tSYS_MKNODAT                = 526 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); }\n\tSYS_READLINKAT             = 527 // { int readlinkat(int fd, char *path, char *buf, size_t bufsize); }\n\tSYS_SYMLINKAT              = 528 // { int symlinkat(char *path1, int fd, char *path2); }\n\tSYS_SWAPOFF                = 529 // { int swapoff(char *name); }\n\tSYS_VQUOTACTL              = 530 // { int vquotactl(const char *path, struct plistref *pref); }\n\tSYS_LINKAT                 = 531 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flags); }\n\tSYS_EACCESS                = 532 // { int eaccess(char *path, int flags); }\n\tSYS_LPATHCONF              = 533 // { int lpathconf(char *path, int name); }\n\tSYS_VMM_GUEST_CTL          = 534 // { int vmm_guest_ctl(int op, struct vmm_guest_options *options); }\n\tSYS_VMM_GUEST_SYNC_ADDR    = 535 // { int vmm_guest_sync_addr(long *dstaddr, long *srcaddr); }\n\tSYS_PROCCTL                = 536 // { int procctl(idtype_t idtype, id_t id, int cmd, void *data); }\n\tSYS_CHFLAGSAT              = 537 // { int chflagsat(int fd, const char *path, u_long flags, int atflags);}\n\tSYS_PIPE2                  = 538 // { int pipe2(int *fildes, int flags); }\n\tSYS_UTIMENSAT              = 539 // { int utimensat(int fd, const char *path, const struct timespec *ts, int flags); }\n\tSYS_FUTIMENS               = 540 // { int futimens(int fd, const struct timespec *ts); }\n\tSYS_ACCEPT4                = 541 // { int accept4(int s, caddr_t name, int *anamelen, int flags); }\n\tSYS_LWP_SETNAME            = 542 // { int lwp_setname(lwpid_t tid, const char *name); }\n\tSYS_PPOLL                  = 543 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *sigmask); }\n\tSYS_LWP_SETAFFINITY        = 544 // { int lwp_setaffinity(pid_t pid, lwpid_t tid, const cpumask_t *mask); }\n\tSYS_LWP_GETAFFINITY        = 545 // { int lwp_getaffinity(pid_t pid, lwpid_t tid, cpumask_t *mask); }\n\tSYS_LWP_CREATE2            = 546 // { int lwp_create2(struct lwp_params *params, const cpumask_t *mask); }\n\tSYS_GETCPUCLOCKID          = 547 // { int getcpuclockid(pid_t pid, lwpid_t lwp_id, clockid_t *clock_id); }\n\tSYS_WAIT6                  = 548 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); }\n\tSYS_LWP_GETNAME            = 549 // { int lwp_getname(lwpid_t tid, char *name, size_t len); }\n\tSYS_GETRANDOM              = 550 // { ssize_t getrandom(void *buf, size_t len, unsigned flags); }\n\tSYS___REALPATH             = 551 // { ssize_t __realpath(const char *path, char *buf, size_t len); }\n)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go",
    "content": "// go run mksysnum.go https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build 386 && freebsd\n\npackage unix\n\nconst (\n\t// SYS_NOSYS = 0;  // { int nosys(void); } syscall nosys_args int\n\tSYS_EXIT                     = 1   // { void sys_exit(int rval); } exit sys_exit_args void\n\tSYS_FORK                     = 2   // { int fork(void); }\n\tSYS_READ                     = 3   // { ssize_t read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE                    = 4   // { ssize_t write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN                     = 5   // { int open(char *path, int flags, int mode); }\n\tSYS_CLOSE                    = 6   // { int close(int fd); }\n\tSYS_WAIT4                    = 7   // { int wait4(int pid, int *status, int options, struct rusage *rusage); }\n\tSYS_LINK                     = 9   // { int link(char *path, char *link); }\n\tSYS_UNLINK                   = 10  // { int unlink(char *path); }\n\tSYS_CHDIR                    = 12  // { int chdir(char *path); }\n\tSYS_FCHDIR                   = 13  // { int fchdir(int fd); }\n\tSYS_CHMOD                    = 15  // { int chmod(char *path, int mode); }\n\tSYS_CHOWN                    = 16  // { int chown(char *path, int uid, int gid); }\n\tSYS_BREAK                    = 17  // { caddr_t break(char *nsize); }\n\tSYS_GETPID                   = 20  // { pid_t getpid(void); }\n\tSYS_MOUNT                    = 21  // { int mount(char *type, char *path, int flags, caddr_t data); }\n\tSYS_UNMOUNT                  = 22  // { int unmount(char *path, int flags); }\n\tSYS_SETUID                   = 23  // { int setuid(uid_t uid); }\n\tSYS_GETUID                   = 24  // { uid_t getuid(void); }\n\tSYS_GETEUID                  = 25  // { uid_t geteuid(void); }\n\tSYS_PTRACE                   = 26  // { int ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG                  = 27  // { int recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG                  = 28  // { int sendmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_RECVFROM                 = 29  // { int recvfrom(int s, caddr_t buf, size_t len, int flags, struct sockaddr * __restrict from, __socklen_t * __restrict fromlenaddr); }\n\tSYS_ACCEPT                   = 30  // { int accept(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen); }\n\tSYS_GETPEERNAME              = 31  // { int getpeername(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }\n\tSYS_GETSOCKNAME              = 32  // { int getsockname(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }\n\tSYS_ACCESS                   = 33  // { int access(char *path, int amode); }\n\tSYS_CHFLAGS                  = 34  // { int chflags(const char *path, u_long flags); }\n\tSYS_FCHFLAGS                 = 35  // { int fchflags(int fd, u_long flags); }\n\tSYS_SYNC                     = 36  // { int sync(void); }\n\tSYS_KILL                     = 37  // { int kill(int pid, int signum); }\n\tSYS_GETPPID                  = 39  // { pid_t getppid(void); }\n\tSYS_DUP                      = 41  // { int dup(u_int fd); }\n\tSYS_GETEGID                  = 43  // { gid_t getegid(void); }\n\tSYS_PROFIL                   = 44  // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); }\n\tSYS_KTRACE                   = 45  // { int ktrace(const char *fname, int ops, int facs, int pid); }\n\tSYS_GETGID                   = 47  // { gid_t getgid(void); }\n\tSYS_GETLOGIN                 = 49  // { int getlogin(char *namebuf, u_int namelen); }\n\tSYS_SETLOGIN                 = 50  // { int setlogin(char *namebuf); }\n\tSYS_ACCT                     = 51  // { int acct(char *path); }\n\tSYS_SIGALTSTACK              = 53  // { int sigaltstack(stack_t *ss, stack_t *oss); }\n\tSYS_IOCTL                    = 54  // { int ioctl(int fd, u_long com, caddr_t data); }\n\tSYS_REBOOT                   = 55  // { int reboot(int opt); }\n\tSYS_REVOKE                   = 56  // { int revoke(char *path); }\n\tSYS_SYMLINK                  = 57  // { int symlink(char *path, char *link); }\n\tSYS_READLINK                 = 58  // { ssize_t readlink(char *path, char *buf, size_t count); }\n\tSYS_EXECVE                   = 59  // { int execve(char *fname, char **argv, char **envv); }\n\tSYS_UMASK                    = 60  // { int umask(int newmask); }\n\tSYS_CHROOT                   = 61  // { int chroot(char *path); }\n\tSYS_MSYNC                    = 65  // { int msync(void *addr, size_t len, int flags); }\n\tSYS_VFORK                    = 66  // { int vfork(void); }\n\tSYS_SBRK                     = 69  // { int sbrk(int incr); }\n\tSYS_SSTK                     = 70  // { int sstk(int incr); }\n\tSYS_MUNMAP                   = 73  // { int munmap(void *addr, size_t len); }\n\tSYS_MPROTECT                 = 74  // { int mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE                  = 75  // { int madvise(void *addr, size_t len, int behav); }\n\tSYS_MINCORE                  = 78  // { int mincore(const void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS                = 79  // { int getgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS                = 80  // { int setgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_GETPGRP                  = 81  // { int getpgrp(void); }\n\tSYS_SETPGID                  = 82  // { int setpgid(int pid, int pgid); }\n\tSYS_SETITIMER                = 83  // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_SWAPON                   = 85  // { int swapon(char *name); }\n\tSYS_GETITIMER                = 86  // { int getitimer(u_int which, struct itimerval *itv); }\n\tSYS_GETDTABLESIZE            = 89  // { int getdtablesize(void); }\n\tSYS_DUP2                     = 90  // { int dup2(u_int from, u_int to); }\n\tSYS_FCNTL                    = 92  // { int fcntl(int fd, int cmd, long arg); }\n\tSYS_SELECT                   = 93  // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_FSYNC                    = 95  // { int fsync(int fd); }\n\tSYS_SETPRIORITY              = 96  // { int setpriority(int which, int who, int prio); }\n\tSYS_SOCKET                   = 97  // { int socket(int domain, int type, int protocol); }\n\tSYS_CONNECT                  = 98  // { int connect(int s, caddr_t name, int namelen); }\n\tSYS_GETPRIORITY              = 100 // { int getpriority(int which, int who); }\n\tSYS_BIND                     = 104 // { int bind(int s, caddr_t name, int namelen); }\n\tSYS_SETSOCKOPT               = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); }\n\tSYS_LISTEN                   = 106 // { int listen(int s, int backlog); }\n\tSYS_GETTIMEOFDAY             = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_GETRUSAGE                = 117 // { int getrusage(int who, struct rusage *rusage); }\n\tSYS_GETSOCKOPT               = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); }\n\tSYS_READV                    = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); }\n\tSYS_WRITEV                   = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); }\n\tSYS_SETTIMEOFDAY             = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); }\n\tSYS_FCHOWN                   = 123 // { int fchown(int fd, int uid, int gid); }\n\tSYS_FCHMOD                   = 124 // { int fchmod(int fd, int mode); }\n\tSYS_SETREUID                 = 126 // { int setreuid(int ruid, int euid); }\n\tSYS_SETREGID                 = 127 // { int setregid(int rgid, int egid); }\n\tSYS_RENAME                   = 128 // { int rename(char *from, char *to); }\n\tSYS_FLOCK                    = 131 // { int flock(int fd, int how); }\n\tSYS_MKFIFO                   = 132 // { int mkfifo(char *path, int mode); }\n\tSYS_SENDTO                   = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); }\n\tSYS_SHUTDOWN                 = 134 // { int shutdown(int s, int how); }\n\tSYS_SOCKETPAIR               = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR                    = 136 // { int mkdir(char *path, int mode); }\n\tSYS_RMDIR                    = 137 // { int rmdir(char *path); }\n\tSYS_UTIMES                   = 138 // { int utimes(char *path, struct timeval *tptr); }\n\tSYS_ADJTIME                  = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); }\n\tSYS_SETSID                   = 147 // { int setsid(void); }\n\tSYS_QUOTACTL                 = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); }\n\tSYS_NLM_SYSCALL              = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); }\n\tSYS_NFSSVC                   = 155 // { int nfssvc(int flag, caddr_t argp); }\n\tSYS_LGETFH                   = 160 // { int lgetfh(char *fname, struct fhandle *fhp); }\n\tSYS_GETFH                    = 161 // { int getfh(char *fname, struct fhandle *fhp); }\n\tSYS_SYSARCH                  = 165 // { int sysarch(int op, char *parms); }\n\tSYS_RTPRIO                   = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); }\n\tSYS_SEMSYS                   = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); }\n\tSYS_MSGSYS                   = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); }\n\tSYS_SHMSYS                   = 171 // { int shmsys(int which, int a2, int a3, int a4); }\n\tSYS_SETFIB                   = 175 // { int setfib(int fibnum); }\n\tSYS_NTP_ADJTIME              = 176 // { int ntp_adjtime(struct timex *tp); }\n\tSYS_SETGID                   = 181 // { int setgid(gid_t gid); }\n\tSYS_SETEGID                  = 182 // { int setegid(gid_t egid); }\n\tSYS_SETEUID                  = 183 // { int seteuid(uid_t euid); }\n\tSYS_PATHCONF                 = 191 // { int pathconf(char *path, int name); }\n\tSYS_FPATHCONF                = 192 // { int fpathconf(int fd, int name); }\n\tSYS_GETRLIMIT                = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int\n\tSYS_SETRLIMIT                = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int\n\tSYS___SYSCTL                 = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int\n\tSYS_MLOCK                    = 203 // { int mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK                  = 204 // { int munlock(const void *addr, size_t len); }\n\tSYS_UNDELETE                 = 205 // { int undelete(char *path); }\n\tSYS_FUTIMES                  = 206 // { int futimes(int fd, struct timeval *tptr); }\n\tSYS_GETPGID                  = 207 // { int getpgid(pid_t pid); }\n\tSYS_POLL                     = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_SEMGET                   = 221 // { int semget(key_t key, int nsems, int semflg); }\n\tSYS_SEMOP                    = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_MSGGET                   = 225 // { int msgget(key_t key, int msgflg); }\n\tSYS_MSGSND                   = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV                   = 227 // { ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT                    = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT                    = 230 // { int shmdt(const void *shmaddr); }\n\tSYS_SHMGET                   = 231 // { int shmget(key_t key, size_t size, int shmflg); }\n\tSYS_CLOCK_GETTIME            = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME            = 233 // { int clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES             = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_KTIMER_CREATE            = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); }\n\tSYS_KTIMER_DELETE            = 236 // { int ktimer_delete(int timerid); }\n\tSYS_KTIMER_SETTIME           = 237 // { int ktimer_settime(int timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }\n\tSYS_KTIMER_GETTIME           = 238 // { int ktimer_gettime(int timerid, struct itimerspec *value); }\n\tSYS_KTIMER_GETOVERRUN        = 239 // { int ktimer_getoverrun(int timerid); }\n\tSYS_NANOSLEEP                = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_FFCLOCK_GETCOUNTER       = 241 // { int ffclock_getcounter(ffcounter *ffcount); }\n\tSYS_FFCLOCK_SETESTIMATE      = 242 // { int ffclock_setestimate(struct ffclock_estimate *cest); }\n\tSYS_FFCLOCK_GETESTIMATE      = 243 // { int ffclock_getestimate(struct ffclock_estimate *cest); }\n\tSYS_CLOCK_NANOSLEEP          = 244 // { int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_CLOCK_GETCPUCLOCKID2     = 247 // { int clock_getcpuclockid2(id_t id, int which, clockid_t *clock_id); }\n\tSYS_NTP_GETTIME              = 248 // { int ntp_gettime(struct ntptimeval *ntvp); }\n\tSYS_MINHERIT                 = 250 // { int minherit(void *addr, size_t len, int inherit); }\n\tSYS_RFORK                    = 251 // { int rfork(int flags); }\n\tSYS_ISSETUGID                = 253 // { int issetugid(void); }\n\tSYS_LCHOWN                   = 254 // { int lchown(char *path, int uid, int gid); }\n\tSYS_AIO_READ                 = 255 // { int aio_read(struct aiocb *aiocbp); }\n\tSYS_AIO_WRITE                = 256 // { int aio_write(struct aiocb *aiocbp); }\n\tSYS_LIO_LISTIO               = 257 // { int lio_listio(int mode, struct aiocb* const *acb_list, int nent, struct sigevent *sig); }\n\tSYS_LCHMOD                   = 274 // { int lchmod(char *path, mode_t mode); }\n\tSYS_LUTIMES                  = 276 // { int lutimes(char *path, struct timeval *tptr); }\n\tSYS_PREADV                   = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }\n\tSYS_PWRITEV                  = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }\n\tSYS_FHOPEN                   = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); }\n\tSYS_MODNEXT                  = 300 // { int modnext(int modid); }\n\tSYS_MODSTAT                  = 301 // { int modstat(int modid, struct module_stat* stat); }\n\tSYS_MODFNEXT                 = 302 // { int modfnext(int modid); }\n\tSYS_MODFIND                  = 303 // { int modfind(const char *name); }\n\tSYS_KLDLOAD                  = 304 // { int kldload(const char *file); }\n\tSYS_KLDUNLOAD                = 305 // { int kldunload(int fileid); }\n\tSYS_KLDFIND                  = 306 // { int kldfind(const char *file); }\n\tSYS_KLDNEXT                  = 307 // { int kldnext(int fileid); }\n\tSYS_KLDSTAT                  = 308 // { int kldstat(int fileid, struct kld_file_stat *stat); }\n\tSYS_KLDFIRSTMOD              = 309 // { int kldfirstmod(int fileid); }\n\tSYS_GETSID                   = 310 // { int getsid(pid_t pid); }\n\tSYS_SETRESUID                = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_SETRESGID                = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_AIO_RETURN               = 314 // { ssize_t aio_return(struct aiocb *aiocbp); }\n\tSYS_AIO_SUSPEND              = 315 // { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); }\n\tSYS_AIO_CANCEL               = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); }\n\tSYS_AIO_ERROR                = 317 // { int aio_error(struct aiocb *aiocbp); }\n\tSYS_YIELD                    = 321 // { int yield(void); }\n\tSYS_MLOCKALL                 = 324 // { int mlockall(int how); }\n\tSYS_MUNLOCKALL               = 325 // { int munlockall(void); }\n\tSYS___GETCWD                 = 326 // { int __getcwd(char *buf, size_t buflen); }\n\tSYS_SCHED_SETPARAM           = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); }\n\tSYS_SCHED_GETPARAM           = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); }\n\tSYS_SCHED_SETSCHEDULER       = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); }\n\tSYS_SCHED_GETSCHEDULER       = 330 // { int sched_getscheduler (pid_t pid); }\n\tSYS_SCHED_YIELD              = 331 // { int sched_yield (void); }\n\tSYS_SCHED_GET_PRIORITY_MAX   = 332 // { int sched_get_priority_max (int policy); }\n\tSYS_SCHED_GET_PRIORITY_MIN   = 333 // { int sched_get_priority_min (int policy); }\n\tSYS_SCHED_RR_GET_INTERVAL    = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); }\n\tSYS_UTRACE                   = 335 // { int utrace(const void *addr, size_t len); }\n\tSYS_KLDSYM                   = 337 // { int kldsym(int fileid, int cmd, void *data); }\n\tSYS_JAIL                     = 338 // { int jail(struct jail *jail); }\n\tSYS_SIGPROCMASK              = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); }\n\tSYS_SIGSUSPEND               = 341 // { int sigsuspend(const sigset_t *sigmask); }\n\tSYS_SIGPENDING               = 343 // { int sigpending(sigset_t *set); }\n\tSYS_SIGTIMEDWAIT             = 345 // { int sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec *timeout); }\n\tSYS_SIGWAITINFO              = 346 // { int sigwaitinfo(const sigset_t *set, siginfo_t *info); }\n\tSYS___ACL_GET_FILE           = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_FILE           = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_GET_FD             = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_FD             = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_DELETE_FILE        = 351 // { int __acl_delete_file(const char *path, acl_type_t type); }\n\tSYS___ACL_DELETE_FD          = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); }\n\tSYS___ACL_ACLCHECK_FILE      = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_ACLCHECK_FD        = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS_EXTATTRCTL               = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FILE         = 356 // { ssize_t extattr_set_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FILE         = 357 // { ssize_t extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FILE      = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_AIO_WAITCOMPLETE         = 359 // { ssize_t aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); }\n\tSYS_GETRESUID                = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_GETRESGID                = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_KQUEUE                   = 362 // { int kqueue(void); }\n\tSYS_EXTATTR_SET_FD           = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FD           = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FD        = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }\n\tSYS___SETUGID                = 374 // { int __setugid(int flag); }\n\tSYS_EACCESS                  = 376 // { int eaccess(char *path, int amode); }\n\tSYS_NMOUNT                   = 378 // { int nmount(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS___MAC_GET_PROC           = 384 // { int __mac_get_proc(struct mac *mac_p); }\n\tSYS___MAC_SET_PROC           = 385 // { int __mac_set_proc(struct mac *mac_p); }\n\tSYS___MAC_GET_FD             = 386 // { int __mac_get_fd(int fd, struct mac *mac_p); }\n\tSYS___MAC_GET_FILE           = 387 // { int __mac_get_file(const char *path_p, struct mac *mac_p); }\n\tSYS___MAC_SET_FD             = 388 // { int __mac_set_fd(int fd, struct mac *mac_p); }\n\tSYS___MAC_SET_FILE           = 389 // { int __mac_set_file(const char *path_p, struct mac *mac_p); }\n\tSYS_KENV                     = 390 // { int kenv(int what, const char *name, char *value, int len); }\n\tSYS_LCHFLAGS                 = 391 // { int lchflags(const char *path, u_long flags); }\n\tSYS_UUIDGEN                  = 392 // { int uuidgen(struct uuid *store, int count); }\n\tSYS_SENDFILE                 = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); }\n\tSYS_MAC_SYSCALL              = 394 // { int mac_syscall(const char *policy, int call, void *arg); }\n\tSYS_KSEM_CLOSE               = 400 // { int ksem_close(semid_t id); }\n\tSYS_KSEM_POST                = 401 // { int ksem_post(semid_t id); }\n\tSYS_KSEM_WAIT                = 402 // { int ksem_wait(semid_t id); }\n\tSYS_KSEM_TRYWAIT             = 403 // { int ksem_trywait(semid_t id); }\n\tSYS_KSEM_INIT                = 404 // { int ksem_init(semid_t *idp, unsigned int value); }\n\tSYS_KSEM_OPEN                = 405 // { int ksem_open(semid_t *idp, const char *name, int oflag, mode_t mode, unsigned int value); }\n\tSYS_KSEM_UNLINK              = 406 // { int ksem_unlink(const char *name); }\n\tSYS_KSEM_GETVALUE            = 407 // { int ksem_getvalue(semid_t id, int *val); }\n\tSYS_KSEM_DESTROY             = 408 // { int ksem_destroy(semid_t id); }\n\tSYS___MAC_GET_PID            = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); }\n\tSYS___MAC_GET_LINK           = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); }\n\tSYS___MAC_SET_LINK           = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); }\n\tSYS_EXTATTR_SET_LINK         = 412 // { ssize_t extattr_set_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_LINK         = 413 // { ssize_t extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_LINK      = 414 // { int extattr_delete_link(const char *path, int attrnamespace, const char *attrname); }\n\tSYS___MAC_EXECVE             = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); }\n\tSYS_SIGACTION                = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); }\n\tSYS_SIGRETURN                = 417 // { int sigreturn(const struct __ucontext *sigcntxp); }\n\tSYS_GETCONTEXT               = 421 // { int getcontext(struct __ucontext *ucp); }\n\tSYS_SETCONTEXT               = 422 // { int setcontext(const struct __ucontext *ucp); }\n\tSYS_SWAPCONTEXT              = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); }\n\tSYS_SWAPOFF                  = 424 // { int swapoff(const char *name); }\n\tSYS___ACL_GET_LINK           = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_LINK           = 426 // { int __acl_set_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_DELETE_LINK        = 427 // { int __acl_delete_link(const char *path, acl_type_t type); }\n\tSYS___ACL_ACLCHECK_LINK      = 428 // { int __acl_aclcheck_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS_SIGWAIT                  = 429 // { int sigwait(const sigset_t *set, int *sig); }\n\tSYS_THR_CREATE               = 430 // { int thr_create(ucontext_t *ctx, long *id, int flags); }\n\tSYS_THR_EXIT                 = 431 // { void thr_exit(long *state); }\n\tSYS_THR_SELF                 = 432 // { int thr_self(long *id); }\n\tSYS_THR_KILL                 = 433 // { int thr_kill(long id, int sig); }\n\tSYS_JAIL_ATTACH              = 436 // { int jail_attach(int jid); }\n\tSYS_EXTATTR_LIST_FD          = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_FILE        = 438 // { ssize_t extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_LINK        = 439 // { ssize_t extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_KSEM_TIMEDWAIT           = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); }\n\tSYS_THR_SUSPEND              = 442 // { int thr_suspend(const struct timespec *timeout); }\n\tSYS_THR_WAKE                 = 443 // { int thr_wake(long id); }\n\tSYS_KLDUNLOADF               = 444 // { int kldunloadf(int fileid, int flags); }\n\tSYS_AUDIT                    = 445 // { int audit(const void *record, u_int length); }\n\tSYS_AUDITON                  = 446 // { int auditon(int cmd, void *data, u_int length); }\n\tSYS_GETAUID                  = 447 // { int getauid(uid_t *auid); }\n\tSYS_SETAUID                  = 448 // { int setauid(uid_t *auid); }\n\tSYS_GETAUDIT                 = 449 // { int getaudit(struct auditinfo *auditinfo); }\n\tSYS_SETAUDIT                 = 450 // { int setaudit(struct auditinfo *auditinfo); }\n\tSYS_GETAUDIT_ADDR            = 451 // { int getaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); }\n\tSYS_SETAUDIT_ADDR            = 452 // { int setaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); }\n\tSYS_AUDITCTL                 = 453 // { int auditctl(char *path); }\n\tSYS__UMTX_OP                 = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); }\n\tSYS_THR_NEW                  = 455 // { int thr_new(struct thr_param *param, int param_size); }\n\tSYS_SIGQUEUE                 = 456 // { int sigqueue(pid_t pid, int signum, void *value); }\n\tSYS_KMQ_OPEN                 = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); }\n\tSYS_KMQ_SETATTR              = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); }\n\tSYS_KMQ_TIMEDRECEIVE         = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); }\n\tSYS_KMQ_TIMEDSEND            = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len, unsigned msg_prio, const struct timespec *abs_timeout); }\n\tSYS_KMQ_NOTIFY               = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); }\n\tSYS_KMQ_UNLINK               = 462 // { int kmq_unlink(const char *path); }\n\tSYS_ABORT2                   = 463 // { int abort2(const char *why, int nargs, void **args); }\n\tSYS_THR_SET_NAME             = 464 // { int thr_set_name(long id, const char *name); }\n\tSYS_AIO_FSYNC                = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); }\n\tSYS_RTPRIO_THREAD            = 466 // { int rtprio_thread(int function, lwpid_t lwpid, struct rtprio *rtp); }\n\tSYS_SCTP_PEELOFF             = 471 // { int sctp_peeloff(int sd, uint32_t name); }\n\tSYS_SCTP_GENERIC_SENDMSG     = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }\n\tSYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }\n\tSYS_SCTP_GENERIC_RECVMSG     = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr *from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); }\n\tSYS_PREAD                    = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); }\n\tSYS_PWRITE                   = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); }\n\tSYS_MMAP                     = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); }\n\tSYS_LSEEK                    = 478 // { off_t lseek(int fd, off_t offset, int whence); }\n\tSYS_TRUNCATE                 = 479 // { int truncate(char *path, off_t length); }\n\tSYS_FTRUNCATE                = 480 // { int ftruncate(int fd, off_t length); }\n\tSYS_THR_KILL2                = 481 // { int thr_kill2(pid_t pid, long id, int sig); }\n\tSYS_SHM_OPEN                 = 482 // { int shm_open(const char *path, int flags, mode_t mode); }\n\tSYS_SHM_UNLINK               = 483 // { int shm_unlink(const char *path); }\n\tSYS_CPUSET                   = 484 // { int cpuset(cpusetid_t *setid); }\n\tSYS_CPUSET_SETID             = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, cpusetid_t setid); }\n\tSYS_CPUSET_GETID             = 486 // { int cpuset_getid(cpulevel_t level, cpuwhich_t which, id_t id, cpusetid_t *setid); }\n\tSYS_CPUSET_GETAFFINITY       = 487 // { int cpuset_getaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, cpuset_t *mask); }\n\tSYS_CPUSET_SETAFFINITY       = 488 // { int cpuset_setaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, const cpuset_t *mask); }\n\tSYS_FACCESSAT                = 489 // { int faccessat(int fd, char *path, int amode, int flag); }\n\tSYS_FCHMODAT                 = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT                 = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); }\n\tSYS_FEXECVE                  = 492 // { int fexecve(int fd, char **argv, char **envv); }\n\tSYS_FUTIMESAT                = 494 // { int futimesat(int fd, char *path, struct timeval *times); }\n\tSYS_LINKAT                   = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); }\n\tSYS_MKDIRAT                  = 496 // { int mkdirat(int fd, char *path, mode_t mode); }\n\tSYS_MKFIFOAT                 = 497 // { int mkfifoat(int fd, char *path, mode_t mode); }\n\tSYS_OPENAT                   = 499 // { int openat(int fd, char *path, int flag, mode_t mode); }\n\tSYS_READLINKAT               = 500 // { ssize_t readlinkat(int fd, char *path, char *buf, size_t bufsize); }\n\tSYS_RENAMEAT                 = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); }\n\tSYS_SYMLINKAT                = 502 // { int symlinkat(char *path1, int fd, char *path2); }\n\tSYS_UNLINKAT                 = 503 // { int unlinkat(int fd, char *path, int flag); }\n\tSYS_POSIX_OPENPT             = 504 // { int posix_openpt(int flags); }\n\tSYS_GSSD_SYSCALL             = 505 // { int gssd_syscall(char *path); }\n\tSYS_JAIL_GET                 = 506 // { int jail_get(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS_JAIL_SET                 = 507 // { int jail_set(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS_JAIL_REMOVE              = 508 // { int jail_remove(int jid); }\n\tSYS_CLOSEFROM                = 509 // { int closefrom(int lowfd); }\n\tSYS___SEMCTL                 = 510 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_MSGCTL                   = 511 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_SHMCTL                   = 512 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_LPATHCONF                = 513 // { int lpathconf(char *path, int name); }\n\tSYS___CAP_RIGHTS_GET         = 515 // { int __cap_rights_get(int version, int fd, cap_rights_t *rightsp); }\n\tSYS_CAP_ENTER                = 516 // { int cap_enter(void); }\n\tSYS_CAP_GETMODE              = 517 // { int cap_getmode(u_int *modep); }\n\tSYS_PDFORK                   = 518 // { int pdfork(int *fdp, int flags); }\n\tSYS_PDKILL                   = 519 // { int pdkill(int fd, int signum); }\n\tSYS_PDGETPID                 = 520 // { int pdgetpid(int fd, pid_t *pidp); }\n\tSYS_PSELECT                  = 522 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sm); }\n\tSYS_GETLOGINCLASS            = 523 // { int getloginclass(char *namebuf, size_t namelen); }\n\tSYS_SETLOGINCLASS            = 524 // { int setloginclass(const char *namebuf); }\n\tSYS_RCTL_GET_RACCT           = 525 // { int rctl_get_racct(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_GET_RULES           = 526 // { int rctl_get_rules(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_GET_LIMITS          = 527 // { int rctl_get_limits(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_ADD_RULE            = 528 // { int rctl_add_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_REMOVE_RULE         = 529 // { int rctl_remove_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_POSIX_FALLOCATE          = 530 // { int posix_fallocate(int fd, off_t offset, off_t len); }\n\tSYS_POSIX_FADVISE            = 531 // { int posix_fadvise(int fd, off_t offset, off_t len, int advice); }\n\tSYS_WAIT6                    = 532 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); }\n\tSYS_CAP_RIGHTS_LIMIT         = 533 // { int cap_rights_limit(int fd, cap_rights_t *rightsp); }\n\tSYS_CAP_IOCTLS_LIMIT         = 534 // { int cap_ioctls_limit(int fd, const u_long *cmds, size_t ncmds); }\n\tSYS_CAP_IOCTLS_GET           = 535 // { ssize_t cap_ioctls_get(int fd, u_long *cmds, size_t maxcmds); }\n\tSYS_CAP_FCNTLS_LIMIT         = 536 // { int cap_fcntls_limit(int fd, uint32_t fcntlrights); }\n\tSYS_CAP_FCNTLS_GET           = 537 // { int cap_fcntls_get(int fd, uint32_t *fcntlrightsp); }\n\tSYS_BINDAT                   = 538 // { int bindat(int fd, int s, caddr_t name, int namelen); }\n\tSYS_CONNECTAT                = 539 // { int connectat(int fd, int s, caddr_t name, int namelen); }\n\tSYS_CHFLAGSAT                = 540 // { int chflagsat(int fd, const char *path, u_long flags, int atflag); }\n\tSYS_ACCEPT4                  = 541 // { int accept4(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen, int flags); }\n\tSYS_PIPE2                    = 542 // { int pipe2(int *fildes, int flags); }\n\tSYS_AIO_MLOCK                = 543 // { int aio_mlock(struct aiocb *aiocbp); }\n\tSYS_PROCCTL                  = 544 // { int procctl(idtype_t idtype, id_t id, int com, void *data); }\n\tSYS_PPOLL                    = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); }\n\tSYS_FUTIMENS                 = 546 // { int futimens(int fd, struct timespec *times); }\n\tSYS_UTIMENSAT                = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); }\n\tSYS_FDATASYNC                = 550 // { int fdatasync(int fd); }\n\tSYS_FSTAT                    = 551 // { int fstat(int fd, struct stat *sb); }\n\tSYS_FSTATAT                  = 552 // { int fstatat(int fd, char *path, struct stat *buf, int flag); }\n\tSYS_FHSTAT                   = 553 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); }\n\tSYS_GETDIRENTRIES            = 554 // { ssize_t getdirentries(int fd, char *buf, size_t count, off_t *basep); }\n\tSYS_STATFS                   = 555 // { int statfs(char *path, struct statfs *buf); }\n\tSYS_FSTATFS                  = 556 // { int fstatfs(int fd, struct statfs *buf); }\n\tSYS_GETFSSTAT                = 557 // { int getfsstat(struct statfs *buf, long bufsize, int mode); }\n\tSYS_FHSTATFS                 = 558 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); }\n\tSYS_MKNODAT                  = 559 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); }\n\tSYS_KEVENT                   = 560 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_CPUSET_GETDOMAIN         = 561 // { int cpuset_getdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int *policy); }\n\tSYS_CPUSET_SETDOMAIN         = 562 // { int cpuset_setdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int policy); }\n\tSYS_GETRANDOM                = 563 // { int getrandom(void *buf, size_t buflen, unsigned int flags); }\n\tSYS_GETFHAT                  = 564 // { int getfhat(int fd, char *path, struct fhandle *fhp, int flags); }\n\tSYS_FHLINK                   = 565 // { int fhlink(struct fhandle *fhp, const char *to); }\n\tSYS_FHLINKAT                 = 566 // { int fhlinkat(struct fhandle *fhp, int tofd, const char *to,); }\n\tSYS_FHREADLINK               = 567 // { int fhreadlink(struct fhandle *fhp, char *buf, size_t bufsize); }\n\tSYS___SYSCTLBYNAME           = 570 // { int __sysctlbyname(const char *name, size_t namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }\n\tSYS_CLOSE_RANGE              = 575 // { int close_range(u_int lowfd, u_int highfd, int flags); }\n)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go",
    "content": "// go run mksysnum.go https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && freebsd\n\npackage unix\n\nconst (\n\t// SYS_NOSYS = 0;  // { int nosys(void); } syscall nosys_args int\n\tSYS_EXIT                     = 1   // { void sys_exit(int rval); } exit sys_exit_args void\n\tSYS_FORK                     = 2   // { int fork(void); }\n\tSYS_READ                     = 3   // { ssize_t read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE                    = 4   // { ssize_t write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN                     = 5   // { int open(char *path, int flags, int mode); }\n\tSYS_CLOSE                    = 6   // { int close(int fd); }\n\tSYS_WAIT4                    = 7   // { int wait4(int pid, int *status, int options, struct rusage *rusage); }\n\tSYS_LINK                     = 9   // { int link(char *path, char *link); }\n\tSYS_UNLINK                   = 10  // { int unlink(char *path); }\n\tSYS_CHDIR                    = 12  // { int chdir(char *path); }\n\tSYS_FCHDIR                   = 13  // { int fchdir(int fd); }\n\tSYS_CHMOD                    = 15  // { int chmod(char *path, int mode); }\n\tSYS_CHOWN                    = 16  // { int chown(char *path, int uid, int gid); }\n\tSYS_BREAK                    = 17  // { caddr_t break(char *nsize); }\n\tSYS_GETPID                   = 20  // { pid_t getpid(void); }\n\tSYS_MOUNT                    = 21  // { int mount(char *type, char *path, int flags, caddr_t data); }\n\tSYS_UNMOUNT                  = 22  // { int unmount(char *path, int flags); }\n\tSYS_SETUID                   = 23  // { int setuid(uid_t uid); }\n\tSYS_GETUID                   = 24  // { uid_t getuid(void); }\n\tSYS_GETEUID                  = 25  // { uid_t geteuid(void); }\n\tSYS_PTRACE                   = 26  // { int ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG                  = 27  // { int recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG                  = 28  // { int sendmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_RECVFROM                 = 29  // { int recvfrom(int s, caddr_t buf, size_t len, int flags, struct sockaddr * __restrict from, __socklen_t * __restrict fromlenaddr); }\n\tSYS_ACCEPT                   = 30  // { int accept(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen); }\n\tSYS_GETPEERNAME              = 31  // { int getpeername(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }\n\tSYS_GETSOCKNAME              = 32  // { int getsockname(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }\n\tSYS_ACCESS                   = 33  // { int access(char *path, int amode); }\n\tSYS_CHFLAGS                  = 34  // { int chflags(const char *path, u_long flags); }\n\tSYS_FCHFLAGS                 = 35  // { int fchflags(int fd, u_long flags); }\n\tSYS_SYNC                     = 36  // { int sync(void); }\n\tSYS_KILL                     = 37  // { int kill(int pid, int signum); }\n\tSYS_GETPPID                  = 39  // { pid_t getppid(void); }\n\tSYS_DUP                      = 41  // { int dup(u_int fd); }\n\tSYS_GETEGID                  = 43  // { gid_t getegid(void); }\n\tSYS_PROFIL                   = 44  // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); }\n\tSYS_KTRACE                   = 45  // { int ktrace(const char *fname, int ops, int facs, int pid); }\n\tSYS_GETGID                   = 47  // { gid_t getgid(void); }\n\tSYS_GETLOGIN                 = 49  // { int getlogin(char *namebuf, u_int namelen); }\n\tSYS_SETLOGIN                 = 50  // { int setlogin(char *namebuf); }\n\tSYS_ACCT                     = 51  // { int acct(char *path); }\n\tSYS_SIGALTSTACK              = 53  // { int sigaltstack(stack_t *ss, stack_t *oss); }\n\tSYS_IOCTL                    = 54  // { int ioctl(int fd, u_long com, caddr_t data); }\n\tSYS_REBOOT                   = 55  // { int reboot(int opt); }\n\tSYS_REVOKE                   = 56  // { int revoke(char *path); }\n\tSYS_SYMLINK                  = 57  // { int symlink(char *path, char *link); }\n\tSYS_READLINK                 = 58  // { ssize_t readlink(char *path, char *buf, size_t count); }\n\tSYS_EXECVE                   = 59  // { int execve(char *fname, char **argv, char **envv); }\n\tSYS_UMASK                    = 60  // { int umask(int newmask); }\n\tSYS_CHROOT                   = 61  // { int chroot(char *path); }\n\tSYS_MSYNC                    = 65  // { int msync(void *addr, size_t len, int flags); }\n\tSYS_VFORK                    = 66  // { int vfork(void); }\n\tSYS_SBRK                     = 69  // { int sbrk(int incr); }\n\tSYS_SSTK                     = 70  // { int sstk(int incr); }\n\tSYS_MUNMAP                   = 73  // { int munmap(void *addr, size_t len); }\n\tSYS_MPROTECT                 = 74  // { int mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE                  = 75  // { int madvise(void *addr, size_t len, int behav); }\n\tSYS_MINCORE                  = 78  // { int mincore(const void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS                = 79  // { int getgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS                = 80  // { int setgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_GETPGRP                  = 81  // { int getpgrp(void); }\n\tSYS_SETPGID                  = 82  // { int setpgid(int pid, int pgid); }\n\tSYS_SETITIMER                = 83  // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_SWAPON                   = 85  // { int swapon(char *name); }\n\tSYS_GETITIMER                = 86  // { int getitimer(u_int which, struct itimerval *itv); }\n\tSYS_GETDTABLESIZE            = 89  // { int getdtablesize(void); }\n\tSYS_DUP2                     = 90  // { int dup2(u_int from, u_int to); }\n\tSYS_FCNTL                    = 92  // { int fcntl(int fd, int cmd, long arg); }\n\tSYS_SELECT                   = 93  // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_FSYNC                    = 95  // { int fsync(int fd); }\n\tSYS_SETPRIORITY              = 96  // { int setpriority(int which, int who, int prio); }\n\tSYS_SOCKET                   = 97  // { int socket(int domain, int type, int protocol); }\n\tSYS_CONNECT                  = 98  // { int connect(int s, caddr_t name, int namelen); }\n\tSYS_GETPRIORITY              = 100 // { int getpriority(int which, int who); }\n\tSYS_BIND                     = 104 // { int bind(int s, caddr_t name, int namelen); }\n\tSYS_SETSOCKOPT               = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); }\n\tSYS_LISTEN                   = 106 // { int listen(int s, int backlog); }\n\tSYS_GETTIMEOFDAY             = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_GETRUSAGE                = 117 // { int getrusage(int who, struct rusage *rusage); }\n\tSYS_GETSOCKOPT               = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); }\n\tSYS_READV                    = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); }\n\tSYS_WRITEV                   = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); }\n\tSYS_SETTIMEOFDAY             = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); }\n\tSYS_FCHOWN                   = 123 // { int fchown(int fd, int uid, int gid); }\n\tSYS_FCHMOD                   = 124 // { int fchmod(int fd, int mode); }\n\tSYS_SETREUID                 = 126 // { int setreuid(int ruid, int euid); }\n\tSYS_SETREGID                 = 127 // { int setregid(int rgid, int egid); }\n\tSYS_RENAME                   = 128 // { int rename(char *from, char *to); }\n\tSYS_FLOCK                    = 131 // { int flock(int fd, int how); }\n\tSYS_MKFIFO                   = 132 // { int mkfifo(char *path, int mode); }\n\tSYS_SENDTO                   = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); }\n\tSYS_SHUTDOWN                 = 134 // { int shutdown(int s, int how); }\n\tSYS_SOCKETPAIR               = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR                    = 136 // { int mkdir(char *path, int mode); }\n\tSYS_RMDIR                    = 137 // { int rmdir(char *path); }\n\tSYS_UTIMES                   = 138 // { int utimes(char *path, struct timeval *tptr); }\n\tSYS_ADJTIME                  = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); }\n\tSYS_SETSID                   = 147 // { int setsid(void); }\n\tSYS_QUOTACTL                 = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); }\n\tSYS_NLM_SYSCALL              = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); }\n\tSYS_NFSSVC                   = 155 // { int nfssvc(int flag, caddr_t argp); }\n\tSYS_LGETFH                   = 160 // { int lgetfh(char *fname, struct fhandle *fhp); }\n\tSYS_GETFH                    = 161 // { int getfh(char *fname, struct fhandle *fhp); }\n\tSYS_SYSARCH                  = 165 // { int sysarch(int op, char *parms); }\n\tSYS_RTPRIO                   = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); }\n\tSYS_SEMSYS                   = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); }\n\tSYS_MSGSYS                   = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); }\n\tSYS_SHMSYS                   = 171 // { int shmsys(int which, int a2, int a3, int a4); }\n\tSYS_SETFIB                   = 175 // { int setfib(int fibnum); }\n\tSYS_NTP_ADJTIME              = 176 // { int ntp_adjtime(struct timex *tp); }\n\tSYS_SETGID                   = 181 // { int setgid(gid_t gid); }\n\tSYS_SETEGID                  = 182 // { int setegid(gid_t egid); }\n\tSYS_SETEUID                  = 183 // { int seteuid(uid_t euid); }\n\tSYS_PATHCONF                 = 191 // { int pathconf(char *path, int name); }\n\tSYS_FPATHCONF                = 192 // { int fpathconf(int fd, int name); }\n\tSYS_GETRLIMIT                = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int\n\tSYS_SETRLIMIT                = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int\n\tSYS___SYSCTL                 = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int\n\tSYS_MLOCK                    = 203 // { int mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK                  = 204 // { int munlock(const void *addr, size_t len); }\n\tSYS_UNDELETE                 = 205 // { int undelete(char *path); }\n\tSYS_FUTIMES                  = 206 // { int futimes(int fd, struct timeval *tptr); }\n\tSYS_GETPGID                  = 207 // { int getpgid(pid_t pid); }\n\tSYS_POLL                     = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_SEMGET                   = 221 // { int semget(key_t key, int nsems, int semflg); }\n\tSYS_SEMOP                    = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_MSGGET                   = 225 // { int msgget(key_t key, int msgflg); }\n\tSYS_MSGSND                   = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV                   = 227 // { ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT                    = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT                    = 230 // { int shmdt(const void *shmaddr); }\n\tSYS_SHMGET                   = 231 // { int shmget(key_t key, size_t size, int shmflg); }\n\tSYS_CLOCK_GETTIME            = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME            = 233 // { int clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES             = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_KTIMER_CREATE            = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); }\n\tSYS_KTIMER_DELETE            = 236 // { int ktimer_delete(int timerid); }\n\tSYS_KTIMER_SETTIME           = 237 // { int ktimer_settime(int timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }\n\tSYS_KTIMER_GETTIME           = 238 // { int ktimer_gettime(int timerid, struct itimerspec *value); }\n\tSYS_KTIMER_GETOVERRUN        = 239 // { int ktimer_getoverrun(int timerid); }\n\tSYS_NANOSLEEP                = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_FFCLOCK_GETCOUNTER       = 241 // { int ffclock_getcounter(ffcounter *ffcount); }\n\tSYS_FFCLOCK_SETESTIMATE      = 242 // { int ffclock_setestimate(struct ffclock_estimate *cest); }\n\tSYS_FFCLOCK_GETESTIMATE      = 243 // { int ffclock_getestimate(struct ffclock_estimate *cest); }\n\tSYS_CLOCK_NANOSLEEP          = 244 // { int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_CLOCK_GETCPUCLOCKID2     = 247 // { int clock_getcpuclockid2(id_t id, int which, clockid_t *clock_id); }\n\tSYS_NTP_GETTIME              = 248 // { int ntp_gettime(struct ntptimeval *ntvp); }\n\tSYS_MINHERIT                 = 250 // { int minherit(void *addr, size_t len, int inherit); }\n\tSYS_RFORK                    = 251 // { int rfork(int flags); }\n\tSYS_ISSETUGID                = 253 // { int issetugid(void); }\n\tSYS_LCHOWN                   = 254 // { int lchown(char *path, int uid, int gid); }\n\tSYS_AIO_READ                 = 255 // { int aio_read(struct aiocb *aiocbp); }\n\tSYS_AIO_WRITE                = 256 // { int aio_write(struct aiocb *aiocbp); }\n\tSYS_LIO_LISTIO               = 257 // { int lio_listio(int mode, struct aiocb* const *acb_list, int nent, struct sigevent *sig); }\n\tSYS_LCHMOD                   = 274 // { int lchmod(char *path, mode_t mode); }\n\tSYS_LUTIMES                  = 276 // { int lutimes(char *path, struct timeval *tptr); }\n\tSYS_PREADV                   = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }\n\tSYS_PWRITEV                  = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }\n\tSYS_FHOPEN                   = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); }\n\tSYS_MODNEXT                  = 300 // { int modnext(int modid); }\n\tSYS_MODSTAT                  = 301 // { int modstat(int modid, struct module_stat* stat); }\n\tSYS_MODFNEXT                 = 302 // { int modfnext(int modid); }\n\tSYS_MODFIND                  = 303 // { int modfind(const char *name); }\n\tSYS_KLDLOAD                  = 304 // { int kldload(const char *file); }\n\tSYS_KLDUNLOAD                = 305 // { int kldunload(int fileid); }\n\tSYS_KLDFIND                  = 306 // { int kldfind(const char *file); }\n\tSYS_KLDNEXT                  = 307 // { int kldnext(int fileid); }\n\tSYS_KLDSTAT                  = 308 // { int kldstat(int fileid, struct kld_file_stat *stat); }\n\tSYS_KLDFIRSTMOD              = 309 // { int kldfirstmod(int fileid); }\n\tSYS_GETSID                   = 310 // { int getsid(pid_t pid); }\n\tSYS_SETRESUID                = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_SETRESGID                = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_AIO_RETURN               = 314 // { ssize_t aio_return(struct aiocb *aiocbp); }\n\tSYS_AIO_SUSPEND              = 315 // { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); }\n\tSYS_AIO_CANCEL               = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); }\n\tSYS_AIO_ERROR                = 317 // { int aio_error(struct aiocb *aiocbp); }\n\tSYS_YIELD                    = 321 // { int yield(void); }\n\tSYS_MLOCKALL                 = 324 // { int mlockall(int how); }\n\tSYS_MUNLOCKALL               = 325 // { int munlockall(void); }\n\tSYS___GETCWD                 = 326 // { int __getcwd(char *buf, size_t buflen); }\n\tSYS_SCHED_SETPARAM           = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); }\n\tSYS_SCHED_GETPARAM           = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); }\n\tSYS_SCHED_SETSCHEDULER       = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); }\n\tSYS_SCHED_GETSCHEDULER       = 330 // { int sched_getscheduler (pid_t pid); }\n\tSYS_SCHED_YIELD              = 331 // { int sched_yield (void); }\n\tSYS_SCHED_GET_PRIORITY_MAX   = 332 // { int sched_get_priority_max (int policy); }\n\tSYS_SCHED_GET_PRIORITY_MIN   = 333 // { int sched_get_priority_min (int policy); }\n\tSYS_SCHED_RR_GET_INTERVAL    = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); }\n\tSYS_UTRACE                   = 335 // { int utrace(const void *addr, size_t len); }\n\tSYS_KLDSYM                   = 337 // { int kldsym(int fileid, int cmd, void *data); }\n\tSYS_JAIL                     = 338 // { int jail(struct jail *jail); }\n\tSYS_SIGPROCMASK              = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); }\n\tSYS_SIGSUSPEND               = 341 // { int sigsuspend(const sigset_t *sigmask); }\n\tSYS_SIGPENDING               = 343 // { int sigpending(sigset_t *set); }\n\tSYS_SIGTIMEDWAIT             = 345 // { int sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec *timeout); }\n\tSYS_SIGWAITINFO              = 346 // { int sigwaitinfo(const sigset_t *set, siginfo_t *info); }\n\tSYS___ACL_GET_FILE           = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_FILE           = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_GET_FD             = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_FD             = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_DELETE_FILE        = 351 // { int __acl_delete_file(const char *path, acl_type_t type); }\n\tSYS___ACL_DELETE_FD          = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); }\n\tSYS___ACL_ACLCHECK_FILE      = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_ACLCHECK_FD        = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS_EXTATTRCTL               = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FILE         = 356 // { ssize_t extattr_set_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FILE         = 357 // { ssize_t extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FILE      = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_AIO_WAITCOMPLETE         = 359 // { ssize_t aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); }\n\tSYS_GETRESUID                = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_GETRESGID                = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_KQUEUE                   = 362 // { int kqueue(void); }\n\tSYS_EXTATTR_SET_FD           = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FD           = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FD        = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }\n\tSYS___SETUGID                = 374 // { int __setugid(int flag); }\n\tSYS_EACCESS                  = 376 // { int eaccess(char *path, int amode); }\n\tSYS_NMOUNT                   = 378 // { int nmount(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS___MAC_GET_PROC           = 384 // { int __mac_get_proc(struct mac *mac_p); }\n\tSYS___MAC_SET_PROC           = 385 // { int __mac_set_proc(struct mac *mac_p); }\n\tSYS___MAC_GET_FD             = 386 // { int __mac_get_fd(int fd, struct mac *mac_p); }\n\tSYS___MAC_GET_FILE           = 387 // { int __mac_get_file(const char *path_p, struct mac *mac_p); }\n\tSYS___MAC_SET_FD             = 388 // { int __mac_set_fd(int fd, struct mac *mac_p); }\n\tSYS___MAC_SET_FILE           = 389 // { int __mac_set_file(const char *path_p, struct mac *mac_p); }\n\tSYS_KENV                     = 390 // { int kenv(int what, const char *name, char *value, int len); }\n\tSYS_LCHFLAGS                 = 391 // { int lchflags(const char *path, u_long flags); }\n\tSYS_UUIDGEN                  = 392 // { int uuidgen(struct uuid *store, int count); }\n\tSYS_SENDFILE                 = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); }\n\tSYS_MAC_SYSCALL              = 394 // { int mac_syscall(const char *policy, int call, void *arg); }\n\tSYS_KSEM_CLOSE               = 400 // { int ksem_close(semid_t id); }\n\tSYS_KSEM_POST                = 401 // { int ksem_post(semid_t id); }\n\tSYS_KSEM_WAIT                = 402 // { int ksem_wait(semid_t id); }\n\tSYS_KSEM_TRYWAIT             = 403 // { int ksem_trywait(semid_t id); }\n\tSYS_KSEM_INIT                = 404 // { int ksem_init(semid_t *idp, unsigned int value); }\n\tSYS_KSEM_OPEN                = 405 // { int ksem_open(semid_t *idp, const char *name, int oflag, mode_t mode, unsigned int value); }\n\tSYS_KSEM_UNLINK              = 406 // { int ksem_unlink(const char *name); }\n\tSYS_KSEM_GETVALUE            = 407 // { int ksem_getvalue(semid_t id, int *val); }\n\tSYS_KSEM_DESTROY             = 408 // { int ksem_destroy(semid_t id); }\n\tSYS___MAC_GET_PID            = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); }\n\tSYS___MAC_GET_LINK           = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); }\n\tSYS___MAC_SET_LINK           = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); }\n\tSYS_EXTATTR_SET_LINK         = 412 // { ssize_t extattr_set_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_LINK         = 413 // { ssize_t extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_LINK      = 414 // { int extattr_delete_link(const char *path, int attrnamespace, const char *attrname); }\n\tSYS___MAC_EXECVE             = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); }\n\tSYS_SIGACTION                = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); }\n\tSYS_SIGRETURN                = 417 // { int sigreturn(const struct __ucontext *sigcntxp); }\n\tSYS_GETCONTEXT               = 421 // { int getcontext(struct __ucontext *ucp); }\n\tSYS_SETCONTEXT               = 422 // { int setcontext(const struct __ucontext *ucp); }\n\tSYS_SWAPCONTEXT              = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); }\n\tSYS_SWAPOFF                  = 424 // { int swapoff(const char *name); }\n\tSYS___ACL_GET_LINK           = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_LINK           = 426 // { int __acl_set_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_DELETE_LINK        = 427 // { int __acl_delete_link(const char *path, acl_type_t type); }\n\tSYS___ACL_ACLCHECK_LINK      = 428 // { int __acl_aclcheck_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS_SIGWAIT                  = 429 // { int sigwait(const sigset_t *set, int *sig); }\n\tSYS_THR_CREATE               = 430 // { int thr_create(ucontext_t *ctx, long *id, int flags); }\n\tSYS_THR_EXIT                 = 431 // { void thr_exit(long *state); }\n\tSYS_THR_SELF                 = 432 // { int thr_self(long *id); }\n\tSYS_THR_KILL                 = 433 // { int thr_kill(long id, int sig); }\n\tSYS_JAIL_ATTACH              = 436 // { int jail_attach(int jid); }\n\tSYS_EXTATTR_LIST_FD          = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_FILE        = 438 // { ssize_t extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_LINK        = 439 // { ssize_t extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_KSEM_TIMEDWAIT           = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); }\n\tSYS_THR_SUSPEND              = 442 // { int thr_suspend(const struct timespec *timeout); }\n\tSYS_THR_WAKE                 = 443 // { int thr_wake(long id); }\n\tSYS_KLDUNLOADF               = 444 // { int kldunloadf(int fileid, int flags); }\n\tSYS_AUDIT                    = 445 // { int audit(const void *record, u_int length); }\n\tSYS_AUDITON                  = 446 // { int auditon(int cmd, void *data, u_int length); }\n\tSYS_GETAUID                  = 447 // { int getauid(uid_t *auid); }\n\tSYS_SETAUID                  = 448 // { int setauid(uid_t *auid); }\n\tSYS_GETAUDIT                 = 449 // { int getaudit(struct auditinfo *auditinfo); }\n\tSYS_SETAUDIT                 = 450 // { int setaudit(struct auditinfo *auditinfo); }\n\tSYS_GETAUDIT_ADDR            = 451 // { int getaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); }\n\tSYS_SETAUDIT_ADDR            = 452 // { int setaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); }\n\tSYS_AUDITCTL                 = 453 // { int auditctl(char *path); }\n\tSYS__UMTX_OP                 = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); }\n\tSYS_THR_NEW                  = 455 // { int thr_new(struct thr_param *param, int param_size); }\n\tSYS_SIGQUEUE                 = 456 // { int sigqueue(pid_t pid, int signum, void *value); }\n\tSYS_KMQ_OPEN                 = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); }\n\tSYS_KMQ_SETATTR              = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); }\n\tSYS_KMQ_TIMEDRECEIVE         = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); }\n\tSYS_KMQ_TIMEDSEND            = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len, unsigned msg_prio, const struct timespec *abs_timeout); }\n\tSYS_KMQ_NOTIFY               = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); }\n\tSYS_KMQ_UNLINK               = 462 // { int kmq_unlink(const char *path); }\n\tSYS_ABORT2                   = 463 // { int abort2(const char *why, int nargs, void **args); }\n\tSYS_THR_SET_NAME             = 464 // { int thr_set_name(long id, const char *name); }\n\tSYS_AIO_FSYNC                = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); }\n\tSYS_RTPRIO_THREAD            = 466 // { int rtprio_thread(int function, lwpid_t lwpid, struct rtprio *rtp); }\n\tSYS_SCTP_PEELOFF             = 471 // { int sctp_peeloff(int sd, uint32_t name); }\n\tSYS_SCTP_GENERIC_SENDMSG     = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }\n\tSYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }\n\tSYS_SCTP_GENERIC_RECVMSG     = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr *from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); }\n\tSYS_PREAD                    = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); }\n\tSYS_PWRITE                   = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); }\n\tSYS_MMAP                     = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); }\n\tSYS_LSEEK                    = 478 // { off_t lseek(int fd, off_t offset, int whence); }\n\tSYS_TRUNCATE                 = 479 // { int truncate(char *path, off_t length); }\n\tSYS_FTRUNCATE                = 480 // { int ftruncate(int fd, off_t length); }\n\tSYS_THR_KILL2                = 481 // { int thr_kill2(pid_t pid, long id, int sig); }\n\tSYS_SHM_OPEN                 = 482 // { int shm_open(const char *path, int flags, mode_t mode); }\n\tSYS_SHM_UNLINK               = 483 // { int shm_unlink(const char *path); }\n\tSYS_CPUSET                   = 484 // { int cpuset(cpusetid_t *setid); }\n\tSYS_CPUSET_SETID             = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, cpusetid_t setid); }\n\tSYS_CPUSET_GETID             = 486 // { int cpuset_getid(cpulevel_t level, cpuwhich_t which, id_t id, cpusetid_t *setid); }\n\tSYS_CPUSET_GETAFFINITY       = 487 // { int cpuset_getaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, cpuset_t *mask); }\n\tSYS_CPUSET_SETAFFINITY       = 488 // { int cpuset_setaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, const cpuset_t *mask); }\n\tSYS_FACCESSAT                = 489 // { int faccessat(int fd, char *path, int amode, int flag); }\n\tSYS_FCHMODAT                 = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT                 = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); }\n\tSYS_FEXECVE                  = 492 // { int fexecve(int fd, char **argv, char **envv); }\n\tSYS_FUTIMESAT                = 494 // { int futimesat(int fd, char *path, struct timeval *times); }\n\tSYS_LINKAT                   = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); }\n\tSYS_MKDIRAT                  = 496 // { int mkdirat(int fd, char *path, mode_t mode); }\n\tSYS_MKFIFOAT                 = 497 // { int mkfifoat(int fd, char *path, mode_t mode); }\n\tSYS_OPENAT                   = 499 // { int openat(int fd, char *path, int flag, mode_t mode); }\n\tSYS_READLINKAT               = 500 // { ssize_t readlinkat(int fd, char *path, char *buf, size_t bufsize); }\n\tSYS_RENAMEAT                 = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); }\n\tSYS_SYMLINKAT                = 502 // { int symlinkat(char *path1, int fd, char *path2); }\n\tSYS_UNLINKAT                 = 503 // { int unlinkat(int fd, char *path, int flag); }\n\tSYS_POSIX_OPENPT             = 504 // { int posix_openpt(int flags); }\n\tSYS_GSSD_SYSCALL             = 505 // { int gssd_syscall(char *path); }\n\tSYS_JAIL_GET                 = 506 // { int jail_get(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS_JAIL_SET                 = 507 // { int jail_set(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS_JAIL_REMOVE              = 508 // { int jail_remove(int jid); }\n\tSYS_CLOSEFROM                = 509 // { int closefrom(int lowfd); }\n\tSYS___SEMCTL                 = 510 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_MSGCTL                   = 511 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_SHMCTL                   = 512 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_LPATHCONF                = 513 // { int lpathconf(char *path, int name); }\n\tSYS___CAP_RIGHTS_GET         = 515 // { int __cap_rights_get(int version, int fd, cap_rights_t *rightsp); }\n\tSYS_CAP_ENTER                = 516 // { int cap_enter(void); }\n\tSYS_CAP_GETMODE              = 517 // { int cap_getmode(u_int *modep); }\n\tSYS_PDFORK                   = 518 // { int pdfork(int *fdp, int flags); }\n\tSYS_PDKILL                   = 519 // { int pdkill(int fd, int signum); }\n\tSYS_PDGETPID                 = 520 // { int pdgetpid(int fd, pid_t *pidp); }\n\tSYS_PSELECT                  = 522 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sm); }\n\tSYS_GETLOGINCLASS            = 523 // { int getloginclass(char *namebuf, size_t namelen); }\n\tSYS_SETLOGINCLASS            = 524 // { int setloginclass(const char *namebuf); }\n\tSYS_RCTL_GET_RACCT           = 525 // { int rctl_get_racct(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_GET_RULES           = 526 // { int rctl_get_rules(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_GET_LIMITS          = 527 // { int rctl_get_limits(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_ADD_RULE            = 528 // { int rctl_add_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_REMOVE_RULE         = 529 // { int rctl_remove_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_POSIX_FALLOCATE          = 530 // { int posix_fallocate(int fd, off_t offset, off_t len); }\n\tSYS_POSIX_FADVISE            = 531 // { int posix_fadvise(int fd, off_t offset, off_t len, int advice); }\n\tSYS_WAIT6                    = 532 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); }\n\tSYS_CAP_RIGHTS_LIMIT         = 533 // { int cap_rights_limit(int fd, cap_rights_t *rightsp); }\n\tSYS_CAP_IOCTLS_LIMIT         = 534 // { int cap_ioctls_limit(int fd, const u_long *cmds, size_t ncmds); }\n\tSYS_CAP_IOCTLS_GET           = 535 // { ssize_t cap_ioctls_get(int fd, u_long *cmds, size_t maxcmds); }\n\tSYS_CAP_FCNTLS_LIMIT         = 536 // { int cap_fcntls_limit(int fd, uint32_t fcntlrights); }\n\tSYS_CAP_FCNTLS_GET           = 537 // { int cap_fcntls_get(int fd, uint32_t *fcntlrightsp); }\n\tSYS_BINDAT                   = 538 // { int bindat(int fd, int s, caddr_t name, int namelen); }\n\tSYS_CONNECTAT                = 539 // { int connectat(int fd, int s, caddr_t name, int namelen); }\n\tSYS_CHFLAGSAT                = 540 // { int chflagsat(int fd, const char *path, u_long flags, int atflag); }\n\tSYS_ACCEPT4                  = 541 // { int accept4(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen, int flags); }\n\tSYS_PIPE2                    = 542 // { int pipe2(int *fildes, int flags); }\n\tSYS_AIO_MLOCK                = 543 // { int aio_mlock(struct aiocb *aiocbp); }\n\tSYS_PROCCTL                  = 544 // { int procctl(idtype_t idtype, id_t id, int com, void *data); }\n\tSYS_PPOLL                    = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); }\n\tSYS_FUTIMENS                 = 546 // { int futimens(int fd, struct timespec *times); }\n\tSYS_UTIMENSAT                = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); }\n\tSYS_FDATASYNC                = 550 // { int fdatasync(int fd); }\n\tSYS_FSTAT                    = 551 // { int fstat(int fd, struct stat *sb); }\n\tSYS_FSTATAT                  = 552 // { int fstatat(int fd, char *path, struct stat *buf, int flag); }\n\tSYS_FHSTAT                   = 553 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); }\n\tSYS_GETDIRENTRIES            = 554 // { ssize_t getdirentries(int fd, char *buf, size_t count, off_t *basep); }\n\tSYS_STATFS                   = 555 // { int statfs(char *path, struct statfs *buf); }\n\tSYS_FSTATFS                  = 556 // { int fstatfs(int fd, struct statfs *buf); }\n\tSYS_GETFSSTAT                = 557 // { int getfsstat(struct statfs *buf, long bufsize, int mode); }\n\tSYS_FHSTATFS                 = 558 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); }\n\tSYS_MKNODAT                  = 559 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); }\n\tSYS_KEVENT                   = 560 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_CPUSET_GETDOMAIN         = 561 // { int cpuset_getdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int *policy); }\n\tSYS_CPUSET_SETDOMAIN         = 562 // { int cpuset_setdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int policy); }\n\tSYS_GETRANDOM                = 563 // { int getrandom(void *buf, size_t buflen, unsigned int flags); }\n\tSYS_GETFHAT                  = 564 // { int getfhat(int fd, char *path, struct fhandle *fhp, int flags); }\n\tSYS_FHLINK                   = 565 // { int fhlink(struct fhandle *fhp, const char *to); }\n\tSYS_FHLINKAT                 = 566 // { int fhlinkat(struct fhandle *fhp, int tofd, const char *to,); }\n\tSYS_FHREADLINK               = 567 // { int fhreadlink(struct fhandle *fhp, char *buf, size_t bufsize); }\n\tSYS___SYSCTLBYNAME           = 570 // { int __sysctlbyname(const char *name, size_t namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }\n\tSYS_CLOSE_RANGE              = 575 // { int close_range(u_int lowfd, u_int highfd, int flags); }\n)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go",
    "content": "// go run mksysnum.go https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm && freebsd\n\npackage unix\n\nconst (\n\t// SYS_NOSYS = 0;  // { int nosys(void); } syscall nosys_args int\n\tSYS_EXIT                     = 1   // { void sys_exit(int rval); } exit sys_exit_args void\n\tSYS_FORK                     = 2   // { int fork(void); }\n\tSYS_READ                     = 3   // { ssize_t read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE                    = 4   // { ssize_t write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN                     = 5   // { int open(char *path, int flags, int mode); }\n\tSYS_CLOSE                    = 6   // { int close(int fd); }\n\tSYS_WAIT4                    = 7   // { int wait4(int pid, int *status, int options, struct rusage *rusage); }\n\tSYS_LINK                     = 9   // { int link(char *path, char *link); }\n\tSYS_UNLINK                   = 10  // { int unlink(char *path); }\n\tSYS_CHDIR                    = 12  // { int chdir(char *path); }\n\tSYS_FCHDIR                   = 13  // { int fchdir(int fd); }\n\tSYS_CHMOD                    = 15  // { int chmod(char *path, int mode); }\n\tSYS_CHOWN                    = 16  // { int chown(char *path, int uid, int gid); }\n\tSYS_BREAK                    = 17  // { caddr_t break(char *nsize); }\n\tSYS_GETPID                   = 20  // { pid_t getpid(void); }\n\tSYS_MOUNT                    = 21  // { int mount(char *type, char *path, int flags, caddr_t data); }\n\tSYS_UNMOUNT                  = 22  // { int unmount(char *path, int flags); }\n\tSYS_SETUID                   = 23  // { int setuid(uid_t uid); }\n\tSYS_GETUID                   = 24  // { uid_t getuid(void); }\n\tSYS_GETEUID                  = 25  // { uid_t geteuid(void); }\n\tSYS_PTRACE                   = 26  // { int ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG                  = 27  // { int recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG                  = 28  // { int sendmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_RECVFROM                 = 29  // { int recvfrom(int s, caddr_t buf, size_t len, int flags, struct sockaddr * __restrict from, __socklen_t * __restrict fromlenaddr); }\n\tSYS_ACCEPT                   = 30  // { int accept(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen); }\n\tSYS_GETPEERNAME              = 31  // { int getpeername(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }\n\tSYS_GETSOCKNAME              = 32  // { int getsockname(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }\n\tSYS_ACCESS                   = 33  // { int access(char *path, int amode); }\n\tSYS_CHFLAGS                  = 34  // { int chflags(const char *path, u_long flags); }\n\tSYS_FCHFLAGS                 = 35  // { int fchflags(int fd, u_long flags); }\n\tSYS_SYNC                     = 36  // { int sync(void); }\n\tSYS_KILL                     = 37  // { int kill(int pid, int signum); }\n\tSYS_GETPPID                  = 39  // { pid_t getppid(void); }\n\tSYS_DUP                      = 41  // { int dup(u_int fd); }\n\tSYS_GETEGID                  = 43  // { gid_t getegid(void); }\n\tSYS_PROFIL                   = 44  // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); }\n\tSYS_KTRACE                   = 45  // { int ktrace(const char *fname, int ops, int facs, int pid); }\n\tSYS_GETGID                   = 47  // { gid_t getgid(void); }\n\tSYS_GETLOGIN                 = 49  // { int getlogin(char *namebuf, u_int namelen); }\n\tSYS_SETLOGIN                 = 50  // { int setlogin(char *namebuf); }\n\tSYS_ACCT                     = 51  // { int acct(char *path); }\n\tSYS_SIGALTSTACK              = 53  // { int sigaltstack(stack_t *ss, stack_t *oss); }\n\tSYS_IOCTL                    = 54  // { int ioctl(int fd, u_long com, caddr_t data); }\n\tSYS_REBOOT                   = 55  // { int reboot(int opt); }\n\tSYS_REVOKE                   = 56  // { int revoke(char *path); }\n\tSYS_SYMLINK                  = 57  // { int symlink(char *path, char *link); }\n\tSYS_READLINK                 = 58  // { ssize_t readlink(char *path, char *buf, size_t count); }\n\tSYS_EXECVE                   = 59  // { int execve(char *fname, char **argv, char **envv); }\n\tSYS_UMASK                    = 60  // { int umask(int newmask); }\n\tSYS_CHROOT                   = 61  // { int chroot(char *path); }\n\tSYS_MSYNC                    = 65  // { int msync(void *addr, size_t len, int flags); }\n\tSYS_VFORK                    = 66  // { int vfork(void); }\n\tSYS_SBRK                     = 69  // { int sbrk(int incr); }\n\tSYS_SSTK                     = 70  // { int sstk(int incr); }\n\tSYS_MUNMAP                   = 73  // { int munmap(void *addr, size_t len); }\n\tSYS_MPROTECT                 = 74  // { int mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE                  = 75  // { int madvise(void *addr, size_t len, int behav); }\n\tSYS_MINCORE                  = 78  // { int mincore(const void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS                = 79  // { int getgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS                = 80  // { int setgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_GETPGRP                  = 81  // { int getpgrp(void); }\n\tSYS_SETPGID                  = 82  // { int setpgid(int pid, int pgid); }\n\tSYS_SETITIMER                = 83  // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_SWAPON                   = 85  // { int swapon(char *name); }\n\tSYS_GETITIMER                = 86  // { int getitimer(u_int which, struct itimerval *itv); }\n\tSYS_GETDTABLESIZE            = 89  // { int getdtablesize(void); }\n\tSYS_DUP2                     = 90  // { int dup2(u_int from, u_int to); }\n\tSYS_FCNTL                    = 92  // { int fcntl(int fd, int cmd, long arg); }\n\tSYS_SELECT                   = 93  // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_FSYNC                    = 95  // { int fsync(int fd); }\n\tSYS_SETPRIORITY              = 96  // { int setpriority(int which, int who, int prio); }\n\tSYS_SOCKET                   = 97  // { int socket(int domain, int type, int protocol); }\n\tSYS_CONNECT                  = 98  // { int connect(int s, caddr_t name, int namelen); }\n\tSYS_GETPRIORITY              = 100 // { int getpriority(int which, int who); }\n\tSYS_BIND                     = 104 // { int bind(int s, caddr_t name, int namelen); }\n\tSYS_SETSOCKOPT               = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); }\n\tSYS_LISTEN                   = 106 // { int listen(int s, int backlog); }\n\tSYS_GETTIMEOFDAY             = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_GETRUSAGE                = 117 // { int getrusage(int who, struct rusage *rusage); }\n\tSYS_GETSOCKOPT               = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); }\n\tSYS_READV                    = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); }\n\tSYS_WRITEV                   = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); }\n\tSYS_SETTIMEOFDAY             = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); }\n\tSYS_FCHOWN                   = 123 // { int fchown(int fd, int uid, int gid); }\n\tSYS_FCHMOD                   = 124 // { int fchmod(int fd, int mode); }\n\tSYS_SETREUID                 = 126 // { int setreuid(int ruid, int euid); }\n\tSYS_SETREGID                 = 127 // { int setregid(int rgid, int egid); }\n\tSYS_RENAME                   = 128 // { int rename(char *from, char *to); }\n\tSYS_FLOCK                    = 131 // { int flock(int fd, int how); }\n\tSYS_MKFIFO                   = 132 // { int mkfifo(char *path, int mode); }\n\tSYS_SENDTO                   = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); }\n\tSYS_SHUTDOWN                 = 134 // { int shutdown(int s, int how); }\n\tSYS_SOCKETPAIR               = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR                    = 136 // { int mkdir(char *path, int mode); }\n\tSYS_RMDIR                    = 137 // { int rmdir(char *path); }\n\tSYS_UTIMES                   = 138 // { int utimes(char *path, struct timeval *tptr); }\n\tSYS_ADJTIME                  = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); }\n\tSYS_SETSID                   = 147 // { int setsid(void); }\n\tSYS_QUOTACTL                 = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); }\n\tSYS_NLM_SYSCALL              = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); }\n\tSYS_NFSSVC                   = 155 // { int nfssvc(int flag, caddr_t argp); }\n\tSYS_LGETFH                   = 160 // { int lgetfh(char *fname, struct fhandle *fhp); }\n\tSYS_GETFH                    = 161 // { int getfh(char *fname, struct fhandle *fhp); }\n\tSYS_SYSARCH                  = 165 // { int sysarch(int op, char *parms); }\n\tSYS_RTPRIO                   = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); }\n\tSYS_SEMSYS                   = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); }\n\tSYS_MSGSYS                   = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); }\n\tSYS_SHMSYS                   = 171 // { int shmsys(int which, int a2, int a3, int a4); }\n\tSYS_SETFIB                   = 175 // { int setfib(int fibnum); }\n\tSYS_NTP_ADJTIME              = 176 // { int ntp_adjtime(struct timex *tp); }\n\tSYS_SETGID                   = 181 // { int setgid(gid_t gid); }\n\tSYS_SETEGID                  = 182 // { int setegid(gid_t egid); }\n\tSYS_SETEUID                  = 183 // { int seteuid(uid_t euid); }\n\tSYS_PATHCONF                 = 191 // { int pathconf(char *path, int name); }\n\tSYS_FPATHCONF                = 192 // { int fpathconf(int fd, int name); }\n\tSYS_GETRLIMIT                = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int\n\tSYS_SETRLIMIT                = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int\n\tSYS___SYSCTL                 = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int\n\tSYS_MLOCK                    = 203 // { int mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK                  = 204 // { int munlock(const void *addr, size_t len); }\n\tSYS_UNDELETE                 = 205 // { int undelete(char *path); }\n\tSYS_FUTIMES                  = 206 // { int futimes(int fd, struct timeval *tptr); }\n\tSYS_GETPGID                  = 207 // { int getpgid(pid_t pid); }\n\tSYS_POLL                     = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_SEMGET                   = 221 // { int semget(key_t key, int nsems, int semflg); }\n\tSYS_SEMOP                    = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_MSGGET                   = 225 // { int msgget(key_t key, int msgflg); }\n\tSYS_MSGSND                   = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV                   = 227 // { ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT                    = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT                    = 230 // { int shmdt(const void *shmaddr); }\n\tSYS_SHMGET                   = 231 // { int shmget(key_t key, size_t size, int shmflg); }\n\tSYS_CLOCK_GETTIME            = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME            = 233 // { int clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES             = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_KTIMER_CREATE            = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); }\n\tSYS_KTIMER_DELETE            = 236 // { int ktimer_delete(int timerid); }\n\tSYS_KTIMER_SETTIME           = 237 // { int ktimer_settime(int timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }\n\tSYS_KTIMER_GETTIME           = 238 // { int ktimer_gettime(int timerid, struct itimerspec *value); }\n\tSYS_KTIMER_GETOVERRUN        = 239 // { int ktimer_getoverrun(int timerid); }\n\tSYS_NANOSLEEP                = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_FFCLOCK_GETCOUNTER       = 241 // { int ffclock_getcounter(ffcounter *ffcount); }\n\tSYS_FFCLOCK_SETESTIMATE      = 242 // { int ffclock_setestimate(struct ffclock_estimate *cest); }\n\tSYS_FFCLOCK_GETESTIMATE      = 243 // { int ffclock_getestimate(struct ffclock_estimate *cest); }\n\tSYS_CLOCK_NANOSLEEP          = 244 // { int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_CLOCK_GETCPUCLOCKID2     = 247 // { int clock_getcpuclockid2(id_t id, int which, clockid_t *clock_id); }\n\tSYS_NTP_GETTIME              = 248 // { int ntp_gettime(struct ntptimeval *ntvp); }\n\tSYS_MINHERIT                 = 250 // { int minherit(void *addr, size_t len, int inherit); }\n\tSYS_RFORK                    = 251 // { int rfork(int flags); }\n\tSYS_ISSETUGID                = 253 // { int issetugid(void); }\n\tSYS_LCHOWN                   = 254 // { int lchown(char *path, int uid, int gid); }\n\tSYS_AIO_READ                 = 255 // { int aio_read(struct aiocb *aiocbp); }\n\tSYS_AIO_WRITE                = 256 // { int aio_write(struct aiocb *aiocbp); }\n\tSYS_LIO_LISTIO               = 257 // { int lio_listio(int mode, struct aiocb* const *acb_list, int nent, struct sigevent *sig); }\n\tSYS_LCHMOD                   = 274 // { int lchmod(char *path, mode_t mode); }\n\tSYS_LUTIMES                  = 276 // { int lutimes(char *path, struct timeval *tptr); }\n\tSYS_PREADV                   = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }\n\tSYS_PWRITEV                  = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }\n\tSYS_FHOPEN                   = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); }\n\tSYS_MODNEXT                  = 300 // { int modnext(int modid); }\n\tSYS_MODSTAT                  = 301 // { int modstat(int modid, struct module_stat* stat); }\n\tSYS_MODFNEXT                 = 302 // { int modfnext(int modid); }\n\tSYS_MODFIND                  = 303 // { int modfind(const char *name); }\n\tSYS_KLDLOAD                  = 304 // { int kldload(const char *file); }\n\tSYS_KLDUNLOAD                = 305 // { int kldunload(int fileid); }\n\tSYS_KLDFIND                  = 306 // { int kldfind(const char *file); }\n\tSYS_KLDNEXT                  = 307 // { int kldnext(int fileid); }\n\tSYS_KLDSTAT                  = 308 // { int kldstat(int fileid, struct kld_file_stat *stat); }\n\tSYS_KLDFIRSTMOD              = 309 // { int kldfirstmod(int fileid); }\n\tSYS_GETSID                   = 310 // { int getsid(pid_t pid); }\n\tSYS_SETRESUID                = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_SETRESGID                = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_AIO_RETURN               = 314 // { ssize_t aio_return(struct aiocb *aiocbp); }\n\tSYS_AIO_SUSPEND              = 315 // { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); }\n\tSYS_AIO_CANCEL               = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); }\n\tSYS_AIO_ERROR                = 317 // { int aio_error(struct aiocb *aiocbp); }\n\tSYS_YIELD                    = 321 // { int yield(void); }\n\tSYS_MLOCKALL                 = 324 // { int mlockall(int how); }\n\tSYS_MUNLOCKALL               = 325 // { int munlockall(void); }\n\tSYS___GETCWD                 = 326 // { int __getcwd(char *buf, size_t buflen); }\n\tSYS_SCHED_SETPARAM           = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); }\n\tSYS_SCHED_GETPARAM           = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); }\n\tSYS_SCHED_SETSCHEDULER       = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); }\n\tSYS_SCHED_GETSCHEDULER       = 330 // { int sched_getscheduler (pid_t pid); }\n\tSYS_SCHED_YIELD              = 331 // { int sched_yield (void); }\n\tSYS_SCHED_GET_PRIORITY_MAX   = 332 // { int sched_get_priority_max (int policy); }\n\tSYS_SCHED_GET_PRIORITY_MIN   = 333 // { int sched_get_priority_min (int policy); }\n\tSYS_SCHED_RR_GET_INTERVAL    = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); }\n\tSYS_UTRACE                   = 335 // { int utrace(const void *addr, size_t len); }\n\tSYS_KLDSYM                   = 337 // { int kldsym(int fileid, int cmd, void *data); }\n\tSYS_JAIL                     = 338 // { int jail(struct jail *jail); }\n\tSYS_SIGPROCMASK              = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); }\n\tSYS_SIGSUSPEND               = 341 // { int sigsuspend(const sigset_t *sigmask); }\n\tSYS_SIGPENDING               = 343 // { int sigpending(sigset_t *set); }\n\tSYS_SIGTIMEDWAIT             = 345 // { int sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec *timeout); }\n\tSYS_SIGWAITINFO              = 346 // { int sigwaitinfo(const sigset_t *set, siginfo_t *info); }\n\tSYS___ACL_GET_FILE           = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_FILE           = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_GET_FD             = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_FD             = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_DELETE_FILE        = 351 // { int __acl_delete_file(const char *path, acl_type_t type); }\n\tSYS___ACL_DELETE_FD          = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); }\n\tSYS___ACL_ACLCHECK_FILE      = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_ACLCHECK_FD        = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS_EXTATTRCTL               = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FILE         = 356 // { ssize_t extattr_set_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FILE         = 357 // { ssize_t extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FILE      = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_AIO_WAITCOMPLETE         = 359 // { ssize_t aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); }\n\tSYS_GETRESUID                = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_GETRESGID                = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_KQUEUE                   = 362 // { int kqueue(void); }\n\tSYS_EXTATTR_SET_FD           = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FD           = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FD        = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }\n\tSYS___SETUGID                = 374 // { int __setugid(int flag); }\n\tSYS_EACCESS                  = 376 // { int eaccess(char *path, int amode); }\n\tSYS_NMOUNT                   = 378 // { int nmount(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS___MAC_GET_PROC           = 384 // { int __mac_get_proc(struct mac *mac_p); }\n\tSYS___MAC_SET_PROC           = 385 // { int __mac_set_proc(struct mac *mac_p); }\n\tSYS___MAC_GET_FD             = 386 // { int __mac_get_fd(int fd, struct mac *mac_p); }\n\tSYS___MAC_GET_FILE           = 387 // { int __mac_get_file(const char *path_p, struct mac *mac_p); }\n\tSYS___MAC_SET_FD             = 388 // { int __mac_set_fd(int fd, struct mac *mac_p); }\n\tSYS___MAC_SET_FILE           = 389 // { int __mac_set_file(const char *path_p, struct mac *mac_p); }\n\tSYS_KENV                     = 390 // { int kenv(int what, const char *name, char *value, int len); }\n\tSYS_LCHFLAGS                 = 391 // { int lchflags(const char *path, u_long flags); }\n\tSYS_UUIDGEN                  = 392 // { int uuidgen(struct uuid *store, int count); }\n\tSYS_SENDFILE                 = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); }\n\tSYS_MAC_SYSCALL              = 394 // { int mac_syscall(const char *policy, int call, void *arg); }\n\tSYS_KSEM_CLOSE               = 400 // { int ksem_close(semid_t id); }\n\tSYS_KSEM_POST                = 401 // { int ksem_post(semid_t id); }\n\tSYS_KSEM_WAIT                = 402 // { int ksem_wait(semid_t id); }\n\tSYS_KSEM_TRYWAIT             = 403 // { int ksem_trywait(semid_t id); }\n\tSYS_KSEM_INIT                = 404 // { int ksem_init(semid_t *idp, unsigned int value); }\n\tSYS_KSEM_OPEN                = 405 // { int ksem_open(semid_t *idp, const char *name, int oflag, mode_t mode, unsigned int value); }\n\tSYS_KSEM_UNLINK              = 406 // { int ksem_unlink(const char *name); }\n\tSYS_KSEM_GETVALUE            = 407 // { int ksem_getvalue(semid_t id, int *val); }\n\tSYS_KSEM_DESTROY             = 408 // { int ksem_destroy(semid_t id); }\n\tSYS___MAC_GET_PID            = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); }\n\tSYS___MAC_GET_LINK           = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); }\n\tSYS___MAC_SET_LINK           = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); }\n\tSYS_EXTATTR_SET_LINK         = 412 // { ssize_t extattr_set_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_LINK         = 413 // { ssize_t extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_LINK      = 414 // { int extattr_delete_link(const char *path, int attrnamespace, const char *attrname); }\n\tSYS___MAC_EXECVE             = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); }\n\tSYS_SIGACTION                = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); }\n\tSYS_SIGRETURN                = 417 // { int sigreturn(const struct __ucontext *sigcntxp); }\n\tSYS_GETCONTEXT               = 421 // { int getcontext(struct __ucontext *ucp); }\n\tSYS_SETCONTEXT               = 422 // { int setcontext(const struct __ucontext *ucp); }\n\tSYS_SWAPCONTEXT              = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); }\n\tSYS_SWAPOFF                  = 424 // { int swapoff(const char *name); }\n\tSYS___ACL_GET_LINK           = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_LINK           = 426 // { int __acl_set_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_DELETE_LINK        = 427 // { int __acl_delete_link(const char *path, acl_type_t type); }\n\tSYS___ACL_ACLCHECK_LINK      = 428 // { int __acl_aclcheck_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS_SIGWAIT                  = 429 // { int sigwait(const sigset_t *set, int *sig); }\n\tSYS_THR_CREATE               = 430 // { int thr_create(ucontext_t *ctx, long *id, int flags); }\n\tSYS_THR_EXIT                 = 431 // { void thr_exit(long *state); }\n\tSYS_THR_SELF                 = 432 // { int thr_self(long *id); }\n\tSYS_THR_KILL                 = 433 // { int thr_kill(long id, int sig); }\n\tSYS_JAIL_ATTACH              = 436 // { int jail_attach(int jid); }\n\tSYS_EXTATTR_LIST_FD          = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_FILE        = 438 // { ssize_t extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_LINK        = 439 // { ssize_t extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_KSEM_TIMEDWAIT           = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); }\n\tSYS_THR_SUSPEND              = 442 // { int thr_suspend(const struct timespec *timeout); }\n\tSYS_THR_WAKE                 = 443 // { int thr_wake(long id); }\n\tSYS_KLDUNLOADF               = 444 // { int kldunloadf(int fileid, int flags); }\n\tSYS_AUDIT                    = 445 // { int audit(const void *record, u_int length); }\n\tSYS_AUDITON                  = 446 // { int auditon(int cmd, void *data, u_int length); }\n\tSYS_GETAUID                  = 447 // { int getauid(uid_t *auid); }\n\tSYS_SETAUID                  = 448 // { int setauid(uid_t *auid); }\n\tSYS_GETAUDIT                 = 449 // { int getaudit(struct auditinfo *auditinfo); }\n\tSYS_SETAUDIT                 = 450 // { int setaudit(struct auditinfo *auditinfo); }\n\tSYS_GETAUDIT_ADDR            = 451 // { int getaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); }\n\tSYS_SETAUDIT_ADDR            = 452 // { int setaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); }\n\tSYS_AUDITCTL                 = 453 // { int auditctl(char *path); }\n\tSYS__UMTX_OP                 = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); }\n\tSYS_THR_NEW                  = 455 // { int thr_new(struct thr_param *param, int param_size); }\n\tSYS_SIGQUEUE                 = 456 // { int sigqueue(pid_t pid, int signum, void *value); }\n\tSYS_KMQ_OPEN                 = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); }\n\tSYS_KMQ_SETATTR              = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); }\n\tSYS_KMQ_TIMEDRECEIVE         = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); }\n\tSYS_KMQ_TIMEDSEND            = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len, unsigned msg_prio, const struct timespec *abs_timeout); }\n\tSYS_KMQ_NOTIFY               = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); }\n\tSYS_KMQ_UNLINK               = 462 // { int kmq_unlink(const char *path); }\n\tSYS_ABORT2                   = 463 // { int abort2(const char *why, int nargs, void **args); }\n\tSYS_THR_SET_NAME             = 464 // { int thr_set_name(long id, const char *name); }\n\tSYS_AIO_FSYNC                = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); }\n\tSYS_RTPRIO_THREAD            = 466 // { int rtprio_thread(int function, lwpid_t lwpid, struct rtprio *rtp); }\n\tSYS_SCTP_PEELOFF             = 471 // { int sctp_peeloff(int sd, uint32_t name); }\n\tSYS_SCTP_GENERIC_SENDMSG     = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }\n\tSYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }\n\tSYS_SCTP_GENERIC_RECVMSG     = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr *from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); }\n\tSYS_PREAD                    = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); }\n\tSYS_PWRITE                   = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); }\n\tSYS_MMAP                     = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); }\n\tSYS_LSEEK                    = 478 // { off_t lseek(int fd, off_t offset, int whence); }\n\tSYS_TRUNCATE                 = 479 // { int truncate(char *path, off_t length); }\n\tSYS_FTRUNCATE                = 480 // { int ftruncate(int fd, off_t length); }\n\tSYS_THR_KILL2                = 481 // { int thr_kill2(pid_t pid, long id, int sig); }\n\tSYS_SHM_OPEN                 = 482 // { int shm_open(const char *path, int flags, mode_t mode); }\n\tSYS_SHM_UNLINK               = 483 // { int shm_unlink(const char *path); }\n\tSYS_CPUSET                   = 484 // { int cpuset(cpusetid_t *setid); }\n\tSYS_CPUSET_SETID             = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, cpusetid_t setid); }\n\tSYS_CPUSET_GETID             = 486 // { int cpuset_getid(cpulevel_t level, cpuwhich_t which, id_t id, cpusetid_t *setid); }\n\tSYS_CPUSET_GETAFFINITY       = 487 // { int cpuset_getaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, cpuset_t *mask); }\n\tSYS_CPUSET_SETAFFINITY       = 488 // { int cpuset_setaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, const cpuset_t *mask); }\n\tSYS_FACCESSAT                = 489 // { int faccessat(int fd, char *path, int amode, int flag); }\n\tSYS_FCHMODAT                 = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT                 = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); }\n\tSYS_FEXECVE                  = 492 // { int fexecve(int fd, char **argv, char **envv); }\n\tSYS_FUTIMESAT                = 494 // { int futimesat(int fd, char *path, struct timeval *times); }\n\tSYS_LINKAT                   = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); }\n\tSYS_MKDIRAT                  = 496 // { int mkdirat(int fd, char *path, mode_t mode); }\n\tSYS_MKFIFOAT                 = 497 // { int mkfifoat(int fd, char *path, mode_t mode); }\n\tSYS_OPENAT                   = 499 // { int openat(int fd, char *path, int flag, mode_t mode); }\n\tSYS_READLINKAT               = 500 // { ssize_t readlinkat(int fd, char *path, char *buf, size_t bufsize); }\n\tSYS_RENAMEAT                 = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); }\n\tSYS_SYMLINKAT                = 502 // { int symlinkat(char *path1, int fd, char *path2); }\n\tSYS_UNLINKAT                 = 503 // { int unlinkat(int fd, char *path, int flag); }\n\tSYS_POSIX_OPENPT             = 504 // { int posix_openpt(int flags); }\n\tSYS_GSSD_SYSCALL             = 505 // { int gssd_syscall(char *path); }\n\tSYS_JAIL_GET                 = 506 // { int jail_get(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS_JAIL_SET                 = 507 // { int jail_set(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS_JAIL_REMOVE              = 508 // { int jail_remove(int jid); }\n\tSYS_CLOSEFROM                = 509 // { int closefrom(int lowfd); }\n\tSYS___SEMCTL                 = 510 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_MSGCTL                   = 511 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_SHMCTL                   = 512 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_LPATHCONF                = 513 // { int lpathconf(char *path, int name); }\n\tSYS___CAP_RIGHTS_GET         = 515 // { int __cap_rights_get(int version, int fd, cap_rights_t *rightsp); }\n\tSYS_CAP_ENTER                = 516 // { int cap_enter(void); }\n\tSYS_CAP_GETMODE              = 517 // { int cap_getmode(u_int *modep); }\n\tSYS_PDFORK                   = 518 // { int pdfork(int *fdp, int flags); }\n\tSYS_PDKILL                   = 519 // { int pdkill(int fd, int signum); }\n\tSYS_PDGETPID                 = 520 // { int pdgetpid(int fd, pid_t *pidp); }\n\tSYS_PSELECT                  = 522 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sm); }\n\tSYS_GETLOGINCLASS            = 523 // { int getloginclass(char *namebuf, size_t namelen); }\n\tSYS_SETLOGINCLASS            = 524 // { int setloginclass(const char *namebuf); }\n\tSYS_RCTL_GET_RACCT           = 525 // { int rctl_get_racct(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_GET_RULES           = 526 // { int rctl_get_rules(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_GET_LIMITS          = 527 // { int rctl_get_limits(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_ADD_RULE            = 528 // { int rctl_add_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_REMOVE_RULE         = 529 // { int rctl_remove_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_POSIX_FALLOCATE          = 530 // { int posix_fallocate(int fd, off_t offset, off_t len); }\n\tSYS_POSIX_FADVISE            = 531 // { int posix_fadvise(int fd, off_t offset, off_t len, int advice); }\n\tSYS_WAIT6                    = 532 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); }\n\tSYS_CAP_RIGHTS_LIMIT         = 533 // { int cap_rights_limit(int fd, cap_rights_t *rightsp); }\n\tSYS_CAP_IOCTLS_LIMIT         = 534 // { int cap_ioctls_limit(int fd, const u_long *cmds, size_t ncmds); }\n\tSYS_CAP_IOCTLS_GET           = 535 // { ssize_t cap_ioctls_get(int fd, u_long *cmds, size_t maxcmds); }\n\tSYS_CAP_FCNTLS_LIMIT         = 536 // { int cap_fcntls_limit(int fd, uint32_t fcntlrights); }\n\tSYS_CAP_FCNTLS_GET           = 537 // { int cap_fcntls_get(int fd, uint32_t *fcntlrightsp); }\n\tSYS_BINDAT                   = 538 // { int bindat(int fd, int s, caddr_t name, int namelen); }\n\tSYS_CONNECTAT                = 539 // { int connectat(int fd, int s, caddr_t name, int namelen); }\n\tSYS_CHFLAGSAT                = 540 // { int chflagsat(int fd, const char *path, u_long flags, int atflag); }\n\tSYS_ACCEPT4                  = 541 // { int accept4(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen, int flags); }\n\tSYS_PIPE2                    = 542 // { int pipe2(int *fildes, int flags); }\n\tSYS_AIO_MLOCK                = 543 // { int aio_mlock(struct aiocb *aiocbp); }\n\tSYS_PROCCTL                  = 544 // { int procctl(idtype_t idtype, id_t id, int com, void *data); }\n\tSYS_PPOLL                    = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); }\n\tSYS_FUTIMENS                 = 546 // { int futimens(int fd, struct timespec *times); }\n\tSYS_UTIMENSAT                = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); }\n\tSYS_FDATASYNC                = 550 // { int fdatasync(int fd); }\n\tSYS_FSTAT                    = 551 // { int fstat(int fd, struct stat *sb); }\n\tSYS_FSTATAT                  = 552 // { int fstatat(int fd, char *path, struct stat *buf, int flag); }\n\tSYS_FHSTAT                   = 553 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); }\n\tSYS_GETDIRENTRIES            = 554 // { ssize_t getdirentries(int fd, char *buf, size_t count, off_t *basep); }\n\tSYS_STATFS                   = 555 // { int statfs(char *path, struct statfs *buf); }\n\tSYS_FSTATFS                  = 556 // { int fstatfs(int fd, struct statfs *buf); }\n\tSYS_GETFSSTAT                = 557 // { int getfsstat(struct statfs *buf, long bufsize, int mode); }\n\tSYS_FHSTATFS                 = 558 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); }\n\tSYS_MKNODAT                  = 559 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); }\n\tSYS_KEVENT                   = 560 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_CPUSET_GETDOMAIN         = 561 // { int cpuset_getdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int *policy); }\n\tSYS_CPUSET_SETDOMAIN         = 562 // { int cpuset_setdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int policy); }\n\tSYS_GETRANDOM                = 563 // { int getrandom(void *buf, size_t buflen, unsigned int flags); }\n\tSYS_GETFHAT                  = 564 // { int getfhat(int fd, char *path, struct fhandle *fhp, int flags); }\n\tSYS_FHLINK                   = 565 // { int fhlink(struct fhandle *fhp, const char *to); }\n\tSYS_FHLINKAT                 = 566 // { int fhlinkat(struct fhandle *fhp, int tofd, const char *to,); }\n\tSYS_FHREADLINK               = 567 // { int fhreadlink(struct fhandle *fhp, char *buf, size_t bufsize); }\n\tSYS___SYSCTLBYNAME           = 570 // { int __sysctlbyname(const char *name, size_t namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }\n\tSYS_CLOSE_RANGE              = 575 // { int close_range(u_int lowfd, u_int highfd, int flags); }\n)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go",
    "content": "// go run mksysnum.go https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && freebsd\n\npackage unix\n\nconst (\n\t// SYS_NOSYS = 0;  // { int nosys(void); } syscall nosys_args int\n\tSYS_EXIT                     = 1   // { void sys_exit(int rval); } exit sys_exit_args void\n\tSYS_FORK                     = 2   // { int fork(void); }\n\tSYS_READ                     = 3   // { ssize_t read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE                    = 4   // { ssize_t write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN                     = 5   // { int open(char *path, int flags, int mode); }\n\tSYS_CLOSE                    = 6   // { int close(int fd); }\n\tSYS_WAIT4                    = 7   // { int wait4(int pid, int *status, int options, struct rusage *rusage); }\n\tSYS_LINK                     = 9   // { int link(char *path, char *link); }\n\tSYS_UNLINK                   = 10  // { int unlink(char *path); }\n\tSYS_CHDIR                    = 12  // { int chdir(char *path); }\n\tSYS_FCHDIR                   = 13  // { int fchdir(int fd); }\n\tSYS_CHMOD                    = 15  // { int chmod(char *path, int mode); }\n\tSYS_CHOWN                    = 16  // { int chown(char *path, int uid, int gid); }\n\tSYS_BREAK                    = 17  // { caddr_t break(char *nsize); }\n\tSYS_GETPID                   = 20  // { pid_t getpid(void); }\n\tSYS_MOUNT                    = 21  // { int mount(char *type, char *path, int flags, caddr_t data); }\n\tSYS_UNMOUNT                  = 22  // { int unmount(char *path, int flags); }\n\tSYS_SETUID                   = 23  // { int setuid(uid_t uid); }\n\tSYS_GETUID                   = 24  // { uid_t getuid(void); }\n\tSYS_GETEUID                  = 25  // { uid_t geteuid(void); }\n\tSYS_PTRACE                   = 26  // { int ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG                  = 27  // { int recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG                  = 28  // { int sendmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_RECVFROM                 = 29  // { int recvfrom(int s, caddr_t buf, size_t len, int flags, struct sockaddr * __restrict from, __socklen_t * __restrict fromlenaddr); }\n\tSYS_ACCEPT                   = 30  // { int accept(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen); }\n\tSYS_GETPEERNAME              = 31  // { int getpeername(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }\n\tSYS_GETSOCKNAME              = 32  // { int getsockname(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }\n\tSYS_ACCESS                   = 33  // { int access(char *path, int amode); }\n\tSYS_CHFLAGS                  = 34  // { int chflags(const char *path, u_long flags); }\n\tSYS_FCHFLAGS                 = 35  // { int fchflags(int fd, u_long flags); }\n\tSYS_SYNC                     = 36  // { int sync(void); }\n\tSYS_KILL                     = 37  // { int kill(int pid, int signum); }\n\tSYS_GETPPID                  = 39  // { pid_t getppid(void); }\n\tSYS_DUP                      = 41  // { int dup(u_int fd); }\n\tSYS_GETEGID                  = 43  // { gid_t getegid(void); }\n\tSYS_PROFIL                   = 44  // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); }\n\tSYS_KTRACE                   = 45  // { int ktrace(const char *fname, int ops, int facs, int pid); }\n\tSYS_GETGID                   = 47  // { gid_t getgid(void); }\n\tSYS_GETLOGIN                 = 49  // { int getlogin(char *namebuf, u_int namelen); }\n\tSYS_SETLOGIN                 = 50  // { int setlogin(char *namebuf); }\n\tSYS_ACCT                     = 51  // { int acct(char *path); }\n\tSYS_SIGALTSTACK              = 53  // { int sigaltstack(stack_t *ss, stack_t *oss); }\n\tSYS_IOCTL                    = 54  // { int ioctl(int fd, u_long com, caddr_t data); }\n\tSYS_REBOOT                   = 55  // { int reboot(int opt); }\n\tSYS_REVOKE                   = 56  // { int revoke(char *path); }\n\tSYS_SYMLINK                  = 57  // { int symlink(char *path, char *link); }\n\tSYS_READLINK                 = 58  // { ssize_t readlink(char *path, char *buf, size_t count); }\n\tSYS_EXECVE                   = 59  // { int execve(char *fname, char **argv, char **envv); }\n\tSYS_UMASK                    = 60  // { int umask(int newmask); }\n\tSYS_CHROOT                   = 61  // { int chroot(char *path); }\n\tSYS_MSYNC                    = 65  // { int msync(void *addr, size_t len, int flags); }\n\tSYS_VFORK                    = 66  // { int vfork(void); }\n\tSYS_SBRK                     = 69  // { int sbrk(int incr); }\n\tSYS_SSTK                     = 70  // { int sstk(int incr); }\n\tSYS_MUNMAP                   = 73  // { int munmap(void *addr, size_t len); }\n\tSYS_MPROTECT                 = 74  // { int mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE                  = 75  // { int madvise(void *addr, size_t len, int behav); }\n\tSYS_MINCORE                  = 78  // { int mincore(const void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS                = 79  // { int getgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS                = 80  // { int setgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_GETPGRP                  = 81  // { int getpgrp(void); }\n\tSYS_SETPGID                  = 82  // { int setpgid(int pid, int pgid); }\n\tSYS_SETITIMER                = 83  // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_SWAPON                   = 85  // { int swapon(char *name); }\n\tSYS_GETITIMER                = 86  // { int getitimer(u_int which, struct itimerval *itv); }\n\tSYS_GETDTABLESIZE            = 89  // { int getdtablesize(void); }\n\tSYS_DUP2                     = 90  // { int dup2(u_int from, u_int to); }\n\tSYS_FCNTL                    = 92  // { int fcntl(int fd, int cmd, long arg); }\n\tSYS_SELECT                   = 93  // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_FSYNC                    = 95  // { int fsync(int fd); }\n\tSYS_SETPRIORITY              = 96  // { int setpriority(int which, int who, int prio); }\n\tSYS_SOCKET                   = 97  // { int socket(int domain, int type, int protocol); }\n\tSYS_CONNECT                  = 98  // { int connect(int s, caddr_t name, int namelen); }\n\tSYS_GETPRIORITY              = 100 // { int getpriority(int which, int who); }\n\tSYS_BIND                     = 104 // { int bind(int s, caddr_t name, int namelen); }\n\tSYS_SETSOCKOPT               = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); }\n\tSYS_LISTEN                   = 106 // { int listen(int s, int backlog); }\n\tSYS_GETTIMEOFDAY             = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_GETRUSAGE                = 117 // { int getrusage(int who, struct rusage *rusage); }\n\tSYS_GETSOCKOPT               = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); }\n\tSYS_READV                    = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); }\n\tSYS_WRITEV                   = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); }\n\tSYS_SETTIMEOFDAY             = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); }\n\tSYS_FCHOWN                   = 123 // { int fchown(int fd, int uid, int gid); }\n\tSYS_FCHMOD                   = 124 // { int fchmod(int fd, int mode); }\n\tSYS_SETREUID                 = 126 // { int setreuid(int ruid, int euid); }\n\tSYS_SETREGID                 = 127 // { int setregid(int rgid, int egid); }\n\tSYS_RENAME                   = 128 // { int rename(char *from, char *to); }\n\tSYS_FLOCK                    = 131 // { int flock(int fd, int how); }\n\tSYS_MKFIFO                   = 132 // { int mkfifo(char *path, int mode); }\n\tSYS_SENDTO                   = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); }\n\tSYS_SHUTDOWN                 = 134 // { int shutdown(int s, int how); }\n\tSYS_SOCKETPAIR               = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR                    = 136 // { int mkdir(char *path, int mode); }\n\tSYS_RMDIR                    = 137 // { int rmdir(char *path); }\n\tSYS_UTIMES                   = 138 // { int utimes(char *path, struct timeval *tptr); }\n\tSYS_ADJTIME                  = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); }\n\tSYS_SETSID                   = 147 // { int setsid(void); }\n\tSYS_QUOTACTL                 = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); }\n\tSYS_NLM_SYSCALL              = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); }\n\tSYS_NFSSVC                   = 155 // { int nfssvc(int flag, caddr_t argp); }\n\tSYS_LGETFH                   = 160 // { int lgetfh(char *fname, struct fhandle *fhp); }\n\tSYS_GETFH                    = 161 // { int getfh(char *fname, struct fhandle *fhp); }\n\tSYS_SYSARCH                  = 165 // { int sysarch(int op, char *parms); }\n\tSYS_RTPRIO                   = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); }\n\tSYS_SEMSYS                   = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); }\n\tSYS_MSGSYS                   = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); }\n\tSYS_SHMSYS                   = 171 // { int shmsys(int which, int a2, int a3, int a4); }\n\tSYS_SETFIB                   = 175 // { int setfib(int fibnum); }\n\tSYS_NTP_ADJTIME              = 176 // { int ntp_adjtime(struct timex *tp); }\n\tSYS_SETGID                   = 181 // { int setgid(gid_t gid); }\n\tSYS_SETEGID                  = 182 // { int setegid(gid_t egid); }\n\tSYS_SETEUID                  = 183 // { int seteuid(uid_t euid); }\n\tSYS_PATHCONF                 = 191 // { int pathconf(char *path, int name); }\n\tSYS_FPATHCONF                = 192 // { int fpathconf(int fd, int name); }\n\tSYS_GETRLIMIT                = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int\n\tSYS_SETRLIMIT                = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int\n\tSYS___SYSCTL                 = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int\n\tSYS_MLOCK                    = 203 // { int mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK                  = 204 // { int munlock(const void *addr, size_t len); }\n\tSYS_UNDELETE                 = 205 // { int undelete(char *path); }\n\tSYS_FUTIMES                  = 206 // { int futimes(int fd, struct timeval *tptr); }\n\tSYS_GETPGID                  = 207 // { int getpgid(pid_t pid); }\n\tSYS_POLL                     = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_SEMGET                   = 221 // { int semget(key_t key, int nsems, int semflg); }\n\tSYS_SEMOP                    = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_MSGGET                   = 225 // { int msgget(key_t key, int msgflg); }\n\tSYS_MSGSND                   = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV                   = 227 // { ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT                    = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT                    = 230 // { int shmdt(const void *shmaddr); }\n\tSYS_SHMGET                   = 231 // { int shmget(key_t key, size_t size, int shmflg); }\n\tSYS_CLOCK_GETTIME            = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME            = 233 // { int clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES             = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_KTIMER_CREATE            = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); }\n\tSYS_KTIMER_DELETE            = 236 // { int ktimer_delete(int timerid); }\n\tSYS_KTIMER_SETTIME           = 237 // { int ktimer_settime(int timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }\n\tSYS_KTIMER_GETTIME           = 238 // { int ktimer_gettime(int timerid, struct itimerspec *value); }\n\tSYS_KTIMER_GETOVERRUN        = 239 // { int ktimer_getoverrun(int timerid); }\n\tSYS_NANOSLEEP                = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_FFCLOCK_GETCOUNTER       = 241 // { int ffclock_getcounter(ffcounter *ffcount); }\n\tSYS_FFCLOCK_SETESTIMATE      = 242 // { int ffclock_setestimate(struct ffclock_estimate *cest); }\n\tSYS_FFCLOCK_GETESTIMATE      = 243 // { int ffclock_getestimate(struct ffclock_estimate *cest); }\n\tSYS_CLOCK_NANOSLEEP          = 244 // { int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_CLOCK_GETCPUCLOCKID2     = 247 // { int clock_getcpuclockid2(id_t id, int which, clockid_t *clock_id); }\n\tSYS_NTP_GETTIME              = 248 // { int ntp_gettime(struct ntptimeval *ntvp); }\n\tSYS_MINHERIT                 = 250 // { int minherit(void *addr, size_t len, int inherit); }\n\tSYS_RFORK                    = 251 // { int rfork(int flags); }\n\tSYS_ISSETUGID                = 253 // { int issetugid(void); }\n\tSYS_LCHOWN                   = 254 // { int lchown(char *path, int uid, int gid); }\n\tSYS_AIO_READ                 = 255 // { int aio_read(struct aiocb *aiocbp); }\n\tSYS_AIO_WRITE                = 256 // { int aio_write(struct aiocb *aiocbp); }\n\tSYS_LIO_LISTIO               = 257 // { int lio_listio(int mode, struct aiocb* const *acb_list, int nent, struct sigevent *sig); }\n\tSYS_LCHMOD                   = 274 // { int lchmod(char *path, mode_t mode); }\n\tSYS_LUTIMES                  = 276 // { int lutimes(char *path, struct timeval *tptr); }\n\tSYS_PREADV                   = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }\n\tSYS_PWRITEV                  = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }\n\tSYS_FHOPEN                   = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); }\n\tSYS_MODNEXT                  = 300 // { int modnext(int modid); }\n\tSYS_MODSTAT                  = 301 // { int modstat(int modid, struct module_stat* stat); }\n\tSYS_MODFNEXT                 = 302 // { int modfnext(int modid); }\n\tSYS_MODFIND                  = 303 // { int modfind(const char *name); }\n\tSYS_KLDLOAD                  = 304 // { int kldload(const char *file); }\n\tSYS_KLDUNLOAD                = 305 // { int kldunload(int fileid); }\n\tSYS_KLDFIND                  = 306 // { int kldfind(const char *file); }\n\tSYS_KLDNEXT                  = 307 // { int kldnext(int fileid); }\n\tSYS_KLDSTAT                  = 308 // { int kldstat(int fileid, struct kld_file_stat *stat); }\n\tSYS_KLDFIRSTMOD              = 309 // { int kldfirstmod(int fileid); }\n\tSYS_GETSID                   = 310 // { int getsid(pid_t pid); }\n\tSYS_SETRESUID                = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_SETRESGID                = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_AIO_RETURN               = 314 // { ssize_t aio_return(struct aiocb *aiocbp); }\n\tSYS_AIO_SUSPEND              = 315 // { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); }\n\tSYS_AIO_CANCEL               = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); }\n\tSYS_AIO_ERROR                = 317 // { int aio_error(struct aiocb *aiocbp); }\n\tSYS_YIELD                    = 321 // { int yield(void); }\n\tSYS_MLOCKALL                 = 324 // { int mlockall(int how); }\n\tSYS_MUNLOCKALL               = 325 // { int munlockall(void); }\n\tSYS___GETCWD                 = 326 // { int __getcwd(char *buf, size_t buflen); }\n\tSYS_SCHED_SETPARAM           = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); }\n\tSYS_SCHED_GETPARAM           = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); }\n\tSYS_SCHED_SETSCHEDULER       = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); }\n\tSYS_SCHED_GETSCHEDULER       = 330 // { int sched_getscheduler (pid_t pid); }\n\tSYS_SCHED_YIELD              = 331 // { int sched_yield (void); }\n\tSYS_SCHED_GET_PRIORITY_MAX   = 332 // { int sched_get_priority_max (int policy); }\n\tSYS_SCHED_GET_PRIORITY_MIN   = 333 // { int sched_get_priority_min (int policy); }\n\tSYS_SCHED_RR_GET_INTERVAL    = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); }\n\tSYS_UTRACE                   = 335 // { int utrace(const void *addr, size_t len); }\n\tSYS_KLDSYM                   = 337 // { int kldsym(int fileid, int cmd, void *data); }\n\tSYS_JAIL                     = 338 // { int jail(struct jail *jail); }\n\tSYS_SIGPROCMASK              = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); }\n\tSYS_SIGSUSPEND               = 341 // { int sigsuspend(const sigset_t *sigmask); }\n\tSYS_SIGPENDING               = 343 // { int sigpending(sigset_t *set); }\n\tSYS_SIGTIMEDWAIT             = 345 // { int sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec *timeout); }\n\tSYS_SIGWAITINFO              = 346 // { int sigwaitinfo(const sigset_t *set, siginfo_t *info); }\n\tSYS___ACL_GET_FILE           = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_FILE           = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_GET_FD             = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_FD             = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_DELETE_FILE        = 351 // { int __acl_delete_file(const char *path, acl_type_t type); }\n\tSYS___ACL_DELETE_FD          = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); }\n\tSYS___ACL_ACLCHECK_FILE      = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_ACLCHECK_FD        = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS_EXTATTRCTL               = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FILE         = 356 // { ssize_t extattr_set_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FILE         = 357 // { ssize_t extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FILE      = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_AIO_WAITCOMPLETE         = 359 // { ssize_t aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); }\n\tSYS_GETRESUID                = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_GETRESGID                = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_KQUEUE                   = 362 // { int kqueue(void); }\n\tSYS_EXTATTR_SET_FD           = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FD           = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FD        = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }\n\tSYS___SETUGID                = 374 // { int __setugid(int flag); }\n\tSYS_EACCESS                  = 376 // { int eaccess(char *path, int amode); }\n\tSYS_NMOUNT                   = 378 // { int nmount(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS___MAC_GET_PROC           = 384 // { int __mac_get_proc(struct mac *mac_p); }\n\tSYS___MAC_SET_PROC           = 385 // { int __mac_set_proc(struct mac *mac_p); }\n\tSYS___MAC_GET_FD             = 386 // { int __mac_get_fd(int fd, struct mac *mac_p); }\n\tSYS___MAC_GET_FILE           = 387 // { int __mac_get_file(const char *path_p, struct mac *mac_p); }\n\tSYS___MAC_SET_FD             = 388 // { int __mac_set_fd(int fd, struct mac *mac_p); }\n\tSYS___MAC_SET_FILE           = 389 // { int __mac_set_file(const char *path_p, struct mac *mac_p); }\n\tSYS_KENV                     = 390 // { int kenv(int what, const char *name, char *value, int len); }\n\tSYS_LCHFLAGS                 = 391 // { int lchflags(const char *path, u_long flags); }\n\tSYS_UUIDGEN                  = 392 // { int uuidgen(struct uuid *store, int count); }\n\tSYS_SENDFILE                 = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); }\n\tSYS_MAC_SYSCALL              = 394 // { int mac_syscall(const char *policy, int call, void *arg); }\n\tSYS_KSEM_CLOSE               = 400 // { int ksem_close(semid_t id); }\n\tSYS_KSEM_POST                = 401 // { int ksem_post(semid_t id); }\n\tSYS_KSEM_WAIT                = 402 // { int ksem_wait(semid_t id); }\n\tSYS_KSEM_TRYWAIT             = 403 // { int ksem_trywait(semid_t id); }\n\tSYS_KSEM_INIT                = 404 // { int ksem_init(semid_t *idp, unsigned int value); }\n\tSYS_KSEM_OPEN                = 405 // { int ksem_open(semid_t *idp, const char *name, int oflag, mode_t mode, unsigned int value); }\n\tSYS_KSEM_UNLINK              = 406 // { int ksem_unlink(const char *name); }\n\tSYS_KSEM_GETVALUE            = 407 // { int ksem_getvalue(semid_t id, int *val); }\n\tSYS_KSEM_DESTROY             = 408 // { int ksem_destroy(semid_t id); }\n\tSYS___MAC_GET_PID            = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); }\n\tSYS___MAC_GET_LINK           = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); }\n\tSYS___MAC_SET_LINK           = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); }\n\tSYS_EXTATTR_SET_LINK         = 412 // { ssize_t extattr_set_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_LINK         = 413 // { ssize_t extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_LINK      = 414 // { int extattr_delete_link(const char *path, int attrnamespace, const char *attrname); }\n\tSYS___MAC_EXECVE             = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); }\n\tSYS_SIGACTION                = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); }\n\tSYS_SIGRETURN                = 417 // { int sigreturn(const struct __ucontext *sigcntxp); }\n\tSYS_GETCONTEXT               = 421 // { int getcontext(struct __ucontext *ucp); }\n\tSYS_SETCONTEXT               = 422 // { int setcontext(const struct __ucontext *ucp); }\n\tSYS_SWAPCONTEXT              = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); }\n\tSYS_SWAPOFF                  = 424 // { int swapoff(const char *name); }\n\tSYS___ACL_GET_LINK           = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_LINK           = 426 // { int __acl_set_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_DELETE_LINK        = 427 // { int __acl_delete_link(const char *path, acl_type_t type); }\n\tSYS___ACL_ACLCHECK_LINK      = 428 // { int __acl_aclcheck_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS_SIGWAIT                  = 429 // { int sigwait(const sigset_t *set, int *sig); }\n\tSYS_THR_CREATE               = 430 // { int thr_create(ucontext_t *ctx, long *id, int flags); }\n\tSYS_THR_EXIT                 = 431 // { void thr_exit(long *state); }\n\tSYS_THR_SELF                 = 432 // { int thr_self(long *id); }\n\tSYS_THR_KILL                 = 433 // { int thr_kill(long id, int sig); }\n\tSYS_JAIL_ATTACH              = 436 // { int jail_attach(int jid); }\n\tSYS_EXTATTR_LIST_FD          = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_FILE        = 438 // { ssize_t extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_LINK        = 439 // { ssize_t extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_KSEM_TIMEDWAIT           = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); }\n\tSYS_THR_SUSPEND              = 442 // { int thr_suspend(const struct timespec *timeout); }\n\tSYS_THR_WAKE                 = 443 // { int thr_wake(long id); }\n\tSYS_KLDUNLOADF               = 444 // { int kldunloadf(int fileid, int flags); }\n\tSYS_AUDIT                    = 445 // { int audit(const void *record, u_int length); }\n\tSYS_AUDITON                  = 446 // { int auditon(int cmd, void *data, u_int length); }\n\tSYS_GETAUID                  = 447 // { int getauid(uid_t *auid); }\n\tSYS_SETAUID                  = 448 // { int setauid(uid_t *auid); }\n\tSYS_GETAUDIT                 = 449 // { int getaudit(struct auditinfo *auditinfo); }\n\tSYS_SETAUDIT                 = 450 // { int setaudit(struct auditinfo *auditinfo); }\n\tSYS_GETAUDIT_ADDR            = 451 // { int getaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); }\n\tSYS_SETAUDIT_ADDR            = 452 // { int setaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); }\n\tSYS_AUDITCTL                 = 453 // { int auditctl(char *path); }\n\tSYS__UMTX_OP                 = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); }\n\tSYS_THR_NEW                  = 455 // { int thr_new(struct thr_param *param, int param_size); }\n\tSYS_SIGQUEUE                 = 456 // { int sigqueue(pid_t pid, int signum, void *value); }\n\tSYS_KMQ_OPEN                 = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); }\n\tSYS_KMQ_SETATTR              = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); }\n\tSYS_KMQ_TIMEDRECEIVE         = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); }\n\tSYS_KMQ_TIMEDSEND            = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len, unsigned msg_prio, const struct timespec *abs_timeout); }\n\tSYS_KMQ_NOTIFY               = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); }\n\tSYS_KMQ_UNLINK               = 462 // { int kmq_unlink(const char *path); }\n\tSYS_ABORT2                   = 463 // { int abort2(const char *why, int nargs, void **args); }\n\tSYS_THR_SET_NAME             = 464 // { int thr_set_name(long id, const char *name); }\n\tSYS_AIO_FSYNC                = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); }\n\tSYS_RTPRIO_THREAD            = 466 // { int rtprio_thread(int function, lwpid_t lwpid, struct rtprio *rtp); }\n\tSYS_SCTP_PEELOFF             = 471 // { int sctp_peeloff(int sd, uint32_t name); }\n\tSYS_SCTP_GENERIC_SENDMSG     = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }\n\tSYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }\n\tSYS_SCTP_GENERIC_RECVMSG     = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr *from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); }\n\tSYS_PREAD                    = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); }\n\tSYS_PWRITE                   = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); }\n\tSYS_MMAP                     = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); }\n\tSYS_LSEEK                    = 478 // { off_t lseek(int fd, off_t offset, int whence); }\n\tSYS_TRUNCATE                 = 479 // { int truncate(char *path, off_t length); }\n\tSYS_FTRUNCATE                = 480 // { int ftruncate(int fd, off_t length); }\n\tSYS_THR_KILL2                = 481 // { int thr_kill2(pid_t pid, long id, int sig); }\n\tSYS_SHM_OPEN                 = 482 // { int shm_open(const char *path, int flags, mode_t mode); }\n\tSYS_SHM_UNLINK               = 483 // { int shm_unlink(const char *path); }\n\tSYS_CPUSET                   = 484 // { int cpuset(cpusetid_t *setid); }\n\tSYS_CPUSET_SETID             = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, cpusetid_t setid); }\n\tSYS_CPUSET_GETID             = 486 // { int cpuset_getid(cpulevel_t level, cpuwhich_t which, id_t id, cpusetid_t *setid); }\n\tSYS_CPUSET_GETAFFINITY       = 487 // { int cpuset_getaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, cpuset_t *mask); }\n\tSYS_CPUSET_SETAFFINITY       = 488 // { int cpuset_setaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, const cpuset_t *mask); }\n\tSYS_FACCESSAT                = 489 // { int faccessat(int fd, char *path, int amode, int flag); }\n\tSYS_FCHMODAT                 = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT                 = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); }\n\tSYS_FEXECVE                  = 492 // { int fexecve(int fd, char **argv, char **envv); }\n\tSYS_FUTIMESAT                = 494 // { int futimesat(int fd, char *path, struct timeval *times); }\n\tSYS_LINKAT                   = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); }\n\tSYS_MKDIRAT                  = 496 // { int mkdirat(int fd, char *path, mode_t mode); }\n\tSYS_MKFIFOAT                 = 497 // { int mkfifoat(int fd, char *path, mode_t mode); }\n\tSYS_OPENAT                   = 499 // { int openat(int fd, char *path, int flag, mode_t mode); }\n\tSYS_READLINKAT               = 500 // { ssize_t readlinkat(int fd, char *path, char *buf, size_t bufsize); }\n\tSYS_RENAMEAT                 = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); }\n\tSYS_SYMLINKAT                = 502 // { int symlinkat(char *path1, int fd, char *path2); }\n\tSYS_UNLINKAT                 = 503 // { int unlinkat(int fd, char *path, int flag); }\n\tSYS_POSIX_OPENPT             = 504 // { int posix_openpt(int flags); }\n\tSYS_GSSD_SYSCALL             = 505 // { int gssd_syscall(char *path); }\n\tSYS_JAIL_GET                 = 506 // { int jail_get(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS_JAIL_SET                 = 507 // { int jail_set(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS_JAIL_REMOVE              = 508 // { int jail_remove(int jid); }\n\tSYS_CLOSEFROM                = 509 // { int closefrom(int lowfd); }\n\tSYS___SEMCTL                 = 510 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_MSGCTL                   = 511 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_SHMCTL                   = 512 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_LPATHCONF                = 513 // { int lpathconf(char *path, int name); }\n\tSYS___CAP_RIGHTS_GET         = 515 // { int __cap_rights_get(int version, int fd, cap_rights_t *rightsp); }\n\tSYS_CAP_ENTER                = 516 // { int cap_enter(void); }\n\tSYS_CAP_GETMODE              = 517 // { int cap_getmode(u_int *modep); }\n\tSYS_PDFORK                   = 518 // { int pdfork(int *fdp, int flags); }\n\tSYS_PDKILL                   = 519 // { int pdkill(int fd, int signum); }\n\tSYS_PDGETPID                 = 520 // { int pdgetpid(int fd, pid_t *pidp); }\n\tSYS_PSELECT                  = 522 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sm); }\n\tSYS_GETLOGINCLASS            = 523 // { int getloginclass(char *namebuf, size_t namelen); }\n\tSYS_SETLOGINCLASS            = 524 // { int setloginclass(const char *namebuf); }\n\tSYS_RCTL_GET_RACCT           = 525 // { int rctl_get_racct(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_GET_RULES           = 526 // { int rctl_get_rules(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_GET_LIMITS          = 527 // { int rctl_get_limits(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_ADD_RULE            = 528 // { int rctl_add_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_REMOVE_RULE         = 529 // { int rctl_remove_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_POSIX_FALLOCATE          = 530 // { int posix_fallocate(int fd, off_t offset, off_t len); }\n\tSYS_POSIX_FADVISE            = 531 // { int posix_fadvise(int fd, off_t offset, off_t len, int advice); }\n\tSYS_WAIT6                    = 532 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); }\n\tSYS_CAP_RIGHTS_LIMIT         = 533 // { int cap_rights_limit(int fd, cap_rights_t *rightsp); }\n\tSYS_CAP_IOCTLS_LIMIT         = 534 // { int cap_ioctls_limit(int fd, const u_long *cmds, size_t ncmds); }\n\tSYS_CAP_IOCTLS_GET           = 535 // { ssize_t cap_ioctls_get(int fd, u_long *cmds, size_t maxcmds); }\n\tSYS_CAP_FCNTLS_LIMIT         = 536 // { int cap_fcntls_limit(int fd, uint32_t fcntlrights); }\n\tSYS_CAP_FCNTLS_GET           = 537 // { int cap_fcntls_get(int fd, uint32_t *fcntlrightsp); }\n\tSYS_BINDAT                   = 538 // { int bindat(int fd, int s, caddr_t name, int namelen); }\n\tSYS_CONNECTAT                = 539 // { int connectat(int fd, int s, caddr_t name, int namelen); }\n\tSYS_CHFLAGSAT                = 540 // { int chflagsat(int fd, const char *path, u_long flags, int atflag); }\n\tSYS_ACCEPT4                  = 541 // { int accept4(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen, int flags); }\n\tSYS_PIPE2                    = 542 // { int pipe2(int *fildes, int flags); }\n\tSYS_AIO_MLOCK                = 543 // { int aio_mlock(struct aiocb *aiocbp); }\n\tSYS_PROCCTL                  = 544 // { int procctl(idtype_t idtype, id_t id, int com, void *data); }\n\tSYS_PPOLL                    = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); }\n\tSYS_FUTIMENS                 = 546 // { int futimens(int fd, struct timespec *times); }\n\tSYS_UTIMENSAT                = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); }\n\tSYS_FDATASYNC                = 550 // { int fdatasync(int fd); }\n\tSYS_FSTAT                    = 551 // { int fstat(int fd, struct stat *sb); }\n\tSYS_FSTATAT                  = 552 // { int fstatat(int fd, char *path, struct stat *buf, int flag); }\n\tSYS_FHSTAT                   = 553 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); }\n\tSYS_GETDIRENTRIES            = 554 // { ssize_t getdirentries(int fd, char *buf, size_t count, off_t *basep); }\n\tSYS_STATFS                   = 555 // { int statfs(char *path, struct statfs *buf); }\n\tSYS_FSTATFS                  = 556 // { int fstatfs(int fd, struct statfs *buf); }\n\tSYS_GETFSSTAT                = 557 // { int getfsstat(struct statfs *buf, long bufsize, int mode); }\n\tSYS_FHSTATFS                 = 558 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); }\n\tSYS_MKNODAT                  = 559 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); }\n\tSYS_KEVENT                   = 560 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_CPUSET_GETDOMAIN         = 561 // { int cpuset_getdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int *policy); }\n\tSYS_CPUSET_SETDOMAIN         = 562 // { int cpuset_setdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int policy); }\n\tSYS_GETRANDOM                = 563 // { int getrandom(void *buf, size_t buflen, unsigned int flags); }\n\tSYS_GETFHAT                  = 564 // { int getfhat(int fd, char *path, struct fhandle *fhp, int flags); }\n\tSYS_FHLINK                   = 565 // { int fhlink(struct fhandle *fhp, const char *to); }\n\tSYS_FHLINKAT                 = 566 // { int fhlinkat(struct fhandle *fhp, int tofd, const char *to,); }\n\tSYS_FHREADLINK               = 567 // { int fhreadlink(struct fhandle *fhp, char *buf, size_t bufsize); }\n\tSYS___SYSCTLBYNAME           = 570 // { int __sysctlbyname(const char *name, size_t namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }\n\tSYS_CLOSE_RANGE              = 575 // { int close_range(u_int lowfd, u_int highfd, int flags); }\n)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsysnum_freebsd_riscv64.go",
    "content": "// go run mksysnum.go https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build riscv64 && freebsd\n\npackage unix\n\nconst (\n\t// SYS_NOSYS = 0;  // { int nosys(void); } syscall nosys_args int\n\tSYS_EXIT                     = 1   // { void sys_exit(int rval); } exit sys_exit_args void\n\tSYS_FORK                     = 2   // { int fork(void); }\n\tSYS_READ                     = 3   // { ssize_t read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE                    = 4   // { ssize_t write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN                     = 5   // { int open(char *path, int flags, int mode); }\n\tSYS_CLOSE                    = 6   // { int close(int fd); }\n\tSYS_WAIT4                    = 7   // { int wait4(int pid, int *status, int options, struct rusage *rusage); }\n\tSYS_LINK                     = 9   // { int link(char *path, char *link); }\n\tSYS_UNLINK                   = 10  // { int unlink(char *path); }\n\tSYS_CHDIR                    = 12  // { int chdir(char *path); }\n\tSYS_FCHDIR                   = 13  // { int fchdir(int fd); }\n\tSYS_CHMOD                    = 15  // { int chmod(char *path, int mode); }\n\tSYS_CHOWN                    = 16  // { int chown(char *path, int uid, int gid); }\n\tSYS_BREAK                    = 17  // { caddr_t break(char *nsize); }\n\tSYS_GETPID                   = 20  // { pid_t getpid(void); }\n\tSYS_MOUNT                    = 21  // { int mount(char *type, char *path, int flags, caddr_t data); }\n\tSYS_UNMOUNT                  = 22  // { int unmount(char *path, int flags); }\n\tSYS_SETUID                   = 23  // { int setuid(uid_t uid); }\n\tSYS_GETUID                   = 24  // { uid_t getuid(void); }\n\tSYS_GETEUID                  = 25  // { uid_t geteuid(void); }\n\tSYS_PTRACE                   = 26  // { int ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG                  = 27  // { int recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG                  = 28  // { int sendmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_RECVFROM                 = 29  // { int recvfrom(int s, caddr_t buf, size_t len, int flags, struct sockaddr * __restrict from, __socklen_t * __restrict fromlenaddr); }\n\tSYS_ACCEPT                   = 30  // { int accept(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen); }\n\tSYS_GETPEERNAME              = 31  // { int getpeername(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }\n\tSYS_GETSOCKNAME              = 32  // { int getsockname(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }\n\tSYS_ACCESS                   = 33  // { int access(char *path, int amode); }\n\tSYS_CHFLAGS                  = 34  // { int chflags(const char *path, u_long flags); }\n\tSYS_FCHFLAGS                 = 35  // { int fchflags(int fd, u_long flags); }\n\tSYS_SYNC                     = 36  // { int sync(void); }\n\tSYS_KILL                     = 37  // { int kill(int pid, int signum); }\n\tSYS_GETPPID                  = 39  // { pid_t getppid(void); }\n\tSYS_DUP                      = 41  // { int dup(u_int fd); }\n\tSYS_GETEGID                  = 43  // { gid_t getegid(void); }\n\tSYS_PROFIL                   = 44  // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); }\n\tSYS_KTRACE                   = 45  // { int ktrace(const char *fname, int ops, int facs, int pid); }\n\tSYS_GETGID                   = 47  // { gid_t getgid(void); }\n\tSYS_GETLOGIN                 = 49  // { int getlogin(char *namebuf, u_int namelen); }\n\tSYS_SETLOGIN                 = 50  // { int setlogin(char *namebuf); }\n\tSYS_ACCT                     = 51  // { int acct(char *path); }\n\tSYS_SIGALTSTACK              = 53  // { int sigaltstack(stack_t *ss, stack_t *oss); }\n\tSYS_IOCTL                    = 54  // { int ioctl(int fd, u_long com, caddr_t data); }\n\tSYS_REBOOT                   = 55  // { int reboot(int opt); }\n\tSYS_REVOKE                   = 56  // { int revoke(char *path); }\n\tSYS_SYMLINK                  = 57  // { int symlink(char *path, char *link); }\n\tSYS_READLINK                 = 58  // { ssize_t readlink(char *path, char *buf, size_t count); }\n\tSYS_EXECVE                   = 59  // { int execve(char *fname, char **argv, char **envv); }\n\tSYS_UMASK                    = 60  // { int umask(int newmask); }\n\tSYS_CHROOT                   = 61  // { int chroot(char *path); }\n\tSYS_MSYNC                    = 65  // { int msync(void *addr, size_t len, int flags); }\n\tSYS_VFORK                    = 66  // { int vfork(void); }\n\tSYS_SBRK                     = 69  // { int sbrk(int incr); }\n\tSYS_SSTK                     = 70  // { int sstk(int incr); }\n\tSYS_MUNMAP                   = 73  // { int munmap(void *addr, size_t len); }\n\tSYS_MPROTECT                 = 74  // { int mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE                  = 75  // { int madvise(void *addr, size_t len, int behav); }\n\tSYS_MINCORE                  = 78  // { int mincore(const void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS                = 79  // { int getgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS                = 80  // { int setgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_GETPGRP                  = 81  // { int getpgrp(void); }\n\tSYS_SETPGID                  = 82  // { int setpgid(int pid, int pgid); }\n\tSYS_SETITIMER                = 83  // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_SWAPON                   = 85  // { int swapon(char *name); }\n\tSYS_GETITIMER                = 86  // { int getitimer(u_int which, struct itimerval *itv); }\n\tSYS_GETDTABLESIZE            = 89  // { int getdtablesize(void); }\n\tSYS_DUP2                     = 90  // { int dup2(u_int from, u_int to); }\n\tSYS_FCNTL                    = 92  // { int fcntl(int fd, int cmd, long arg); }\n\tSYS_SELECT                   = 93  // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_FSYNC                    = 95  // { int fsync(int fd); }\n\tSYS_SETPRIORITY              = 96  // { int setpriority(int which, int who, int prio); }\n\tSYS_SOCKET                   = 97  // { int socket(int domain, int type, int protocol); }\n\tSYS_CONNECT                  = 98  // { int connect(int s, caddr_t name, int namelen); }\n\tSYS_GETPRIORITY              = 100 // { int getpriority(int which, int who); }\n\tSYS_BIND                     = 104 // { int bind(int s, caddr_t name, int namelen); }\n\tSYS_SETSOCKOPT               = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); }\n\tSYS_LISTEN                   = 106 // { int listen(int s, int backlog); }\n\tSYS_GETTIMEOFDAY             = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_GETRUSAGE                = 117 // { int getrusage(int who, struct rusage *rusage); }\n\tSYS_GETSOCKOPT               = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); }\n\tSYS_READV                    = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); }\n\tSYS_WRITEV                   = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); }\n\tSYS_SETTIMEOFDAY             = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); }\n\tSYS_FCHOWN                   = 123 // { int fchown(int fd, int uid, int gid); }\n\tSYS_FCHMOD                   = 124 // { int fchmod(int fd, int mode); }\n\tSYS_SETREUID                 = 126 // { int setreuid(int ruid, int euid); }\n\tSYS_SETREGID                 = 127 // { int setregid(int rgid, int egid); }\n\tSYS_RENAME                   = 128 // { int rename(char *from, char *to); }\n\tSYS_FLOCK                    = 131 // { int flock(int fd, int how); }\n\tSYS_MKFIFO                   = 132 // { int mkfifo(char *path, int mode); }\n\tSYS_SENDTO                   = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); }\n\tSYS_SHUTDOWN                 = 134 // { int shutdown(int s, int how); }\n\tSYS_SOCKETPAIR               = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR                    = 136 // { int mkdir(char *path, int mode); }\n\tSYS_RMDIR                    = 137 // { int rmdir(char *path); }\n\tSYS_UTIMES                   = 138 // { int utimes(char *path, struct timeval *tptr); }\n\tSYS_ADJTIME                  = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); }\n\tSYS_SETSID                   = 147 // { int setsid(void); }\n\tSYS_QUOTACTL                 = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); }\n\tSYS_NLM_SYSCALL              = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); }\n\tSYS_NFSSVC                   = 155 // { int nfssvc(int flag, caddr_t argp); }\n\tSYS_LGETFH                   = 160 // { int lgetfh(char *fname, struct fhandle *fhp); }\n\tSYS_GETFH                    = 161 // { int getfh(char *fname, struct fhandle *fhp); }\n\tSYS_SYSARCH                  = 165 // { int sysarch(int op, char *parms); }\n\tSYS_RTPRIO                   = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); }\n\tSYS_SEMSYS                   = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); }\n\tSYS_MSGSYS                   = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); }\n\tSYS_SHMSYS                   = 171 // { int shmsys(int which, int a2, int a3, int a4); }\n\tSYS_SETFIB                   = 175 // { int setfib(int fibnum); }\n\tSYS_NTP_ADJTIME              = 176 // { int ntp_adjtime(struct timex *tp); }\n\tSYS_SETGID                   = 181 // { int setgid(gid_t gid); }\n\tSYS_SETEGID                  = 182 // { int setegid(gid_t egid); }\n\tSYS_SETEUID                  = 183 // { int seteuid(uid_t euid); }\n\tSYS_PATHCONF                 = 191 // { int pathconf(char *path, int name); }\n\tSYS_FPATHCONF                = 192 // { int fpathconf(int fd, int name); }\n\tSYS_GETRLIMIT                = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int\n\tSYS_SETRLIMIT                = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int\n\tSYS___SYSCTL                 = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int\n\tSYS_MLOCK                    = 203 // { int mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK                  = 204 // { int munlock(const void *addr, size_t len); }\n\tSYS_UNDELETE                 = 205 // { int undelete(char *path); }\n\tSYS_FUTIMES                  = 206 // { int futimes(int fd, struct timeval *tptr); }\n\tSYS_GETPGID                  = 207 // { int getpgid(pid_t pid); }\n\tSYS_POLL                     = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_SEMGET                   = 221 // { int semget(key_t key, int nsems, int semflg); }\n\tSYS_SEMOP                    = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_MSGGET                   = 225 // { int msgget(key_t key, int msgflg); }\n\tSYS_MSGSND                   = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV                   = 227 // { ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT                    = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT                    = 230 // { int shmdt(const void *shmaddr); }\n\tSYS_SHMGET                   = 231 // { int shmget(key_t key, size_t size, int shmflg); }\n\tSYS_CLOCK_GETTIME            = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME            = 233 // { int clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES             = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_KTIMER_CREATE            = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); }\n\tSYS_KTIMER_DELETE            = 236 // { int ktimer_delete(int timerid); }\n\tSYS_KTIMER_SETTIME           = 237 // { int ktimer_settime(int timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }\n\tSYS_KTIMER_GETTIME           = 238 // { int ktimer_gettime(int timerid, struct itimerspec *value); }\n\tSYS_KTIMER_GETOVERRUN        = 239 // { int ktimer_getoverrun(int timerid); }\n\tSYS_NANOSLEEP                = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_FFCLOCK_GETCOUNTER       = 241 // { int ffclock_getcounter(ffcounter *ffcount); }\n\tSYS_FFCLOCK_SETESTIMATE      = 242 // { int ffclock_setestimate(struct ffclock_estimate *cest); }\n\tSYS_FFCLOCK_GETESTIMATE      = 243 // { int ffclock_getestimate(struct ffclock_estimate *cest); }\n\tSYS_CLOCK_NANOSLEEP          = 244 // { int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_CLOCK_GETCPUCLOCKID2     = 247 // { int clock_getcpuclockid2(id_t id, int which, clockid_t *clock_id); }\n\tSYS_NTP_GETTIME              = 248 // { int ntp_gettime(struct ntptimeval *ntvp); }\n\tSYS_MINHERIT                 = 250 // { int minherit(void *addr, size_t len, int inherit); }\n\tSYS_RFORK                    = 251 // { int rfork(int flags); }\n\tSYS_ISSETUGID                = 253 // { int issetugid(void); }\n\tSYS_LCHOWN                   = 254 // { int lchown(char *path, int uid, int gid); }\n\tSYS_AIO_READ                 = 255 // { int aio_read(struct aiocb *aiocbp); }\n\tSYS_AIO_WRITE                = 256 // { int aio_write(struct aiocb *aiocbp); }\n\tSYS_LIO_LISTIO               = 257 // { int lio_listio(int mode, struct aiocb* const *acb_list, int nent, struct sigevent *sig); }\n\tSYS_LCHMOD                   = 274 // { int lchmod(char *path, mode_t mode); }\n\tSYS_LUTIMES                  = 276 // { int lutimes(char *path, struct timeval *tptr); }\n\tSYS_PREADV                   = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }\n\tSYS_PWRITEV                  = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }\n\tSYS_FHOPEN                   = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); }\n\tSYS_MODNEXT                  = 300 // { int modnext(int modid); }\n\tSYS_MODSTAT                  = 301 // { int modstat(int modid, struct module_stat* stat); }\n\tSYS_MODFNEXT                 = 302 // { int modfnext(int modid); }\n\tSYS_MODFIND                  = 303 // { int modfind(const char *name); }\n\tSYS_KLDLOAD                  = 304 // { int kldload(const char *file); }\n\tSYS_KLDUNLOAD                = 305 // { int kldunload(int fileid); }\n\tSYS_KLDFIND                  = 306 // { int kldfind(const char *file); }\n\tSYS_KLDNEXT                  = 307 // { int kldnext(int fileid); }\n\tSYS_KLDSTAT                  = 308 // { int kldstat(int fileid, struct kld_file_stat *stat); }\n\tSYS_KLDFIRSTMOD              = 309 // { int kldfirstmod(int fileid); }\n\tSYS_GETSID                   = 310 // { int getsid(pid_t pid); }\n\tSYS_SETRESUID                = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_SETRESGID                = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_AIO_RETURN               = 314 // { ssize_t aio_return(struct aiocb *aiocbp); }\n\tSYS_AIO_SUSPEND              = 315 // { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); }\n\tSYS_AIO_CANCEL               = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); }\n\tSYS_AIO_ERROR                = 317 // { int aio_error(struct aiocb *aiocbp); }\n\tSYS_YIELD                    = 321 // { int yield(void); }\n\tSYS_MLOCKALL                 = 324 // { int mlockall(int how); }\n\tSYS_MUNLOCKALL               = 325 // { int munlockall(void); }\n\tSYS___GETCWD                 = 326 // { int __getcwd(char *buf, size_t buflen); }\n\tSYS_SCHED_SETPARAM           = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); }\n\tSYS_SCHED_GETPARAM           = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); }\n\tSYS_SCHED_SETSCHEDULER       = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); }\n\tSYS_SCHED_GETSCHEDULER       = 330 // { int sched_getscheduler (pid_t pid); }\n\tSYS_SCHED_YIELD              = 331 // { int sched_yield (void); }\n\tSYS_SCHED_GET_PRIORITY_MAX   = 332 // { int sched_get_priority_max (int policy); }\n\tSYS_SCHED_GET_PRIORITY_MIN   = 333 // { int sched_get_priority_min (int policy); }\n\tSYS_SCHED_RR_GET_INTERVAL    = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); }\n\tSYS_UTRACE                   = 335 // { int utrace(const void *addr, size_t len); }\n\tSYS_KLDSYM                   = 337 // { int kldsym(int fileid, int cmd, void *data); }\n\tSYS_JAIL                     = 338 // { int jail(struct jail *jail); }\n\tSYS_SIGPROCMASK              = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); }\n\tSYS_SIGSUSPEND               = 341 // { int sigsuspend(const sigset_t *sigmask); }\n\tSYS_SIGPENDING               = 343 // { int sigpending(sigset_t *set); }\n\tSYS_SIGTIMEDWAIT             = 345 // { int sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec *timeout); }\n\tSYS_SIGWAITINFO              = 346 // { int sigwaitinfo(const sigset_t *set, siginfo_t *info); }\n\tSYS___ACL_GET_FILE           = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_FILE           = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_GET_FD             = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_FD             = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_DELETE_FILE        = 351 // { int __acl_delete_file(const char *path, acl_type_t type); }\n\tSYS___ACL_DELETE_FD          = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); }\n\tSYS___ACL_ACLCHECK_FILE      = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_ACLCHECK_FD        = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS_EXTATTRCTL               = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FILE         = 356 // { ssize_t extattr_set_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FILE         = 357 // { ssize_t extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FILE      = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_AIO_WAITCOMPLETE         = 359 // { ssize_t aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); }\n\tSYS_GETRESUID                = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_GETRESGID                = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_KQUEUE                   = 362 // { int kqueue(void); }\n\tSYS_EXTATTR_SET_FD           = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FD           = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FD        = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }\n\tSYS___SETUGID                = 374 // { int __setugid(int flag); }\n\tSYS_EACCESS                  = 376 // { int eaccess(char *path, int amode); }\n\tSYS_NMOUNT                   = 378 // { int nmount(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS___MAC_GET_PROC           = 384 // { int __mac_get_proc(struct mac *mac_p); }\n\tSYS___MAC_SET_PROC           = 385 // { int __mac_set_proc(struct mac *mac_p); }\n\tSYS___MAC_GET_FD             = 386 // { int __mac_get_fd(int fd, struct mac *mac_p); }\n\tSYS___MAC_GET_FILE           = 387 // { int __mac_get_file(const char *path_p, struct mac *mac_p); }\n\tSYS___MAC_SET_FD             = 388 // { int __mac_set_fd(int fd, struct mac *mac_p); }\n\tSYS___MAC_SET_FILE           = 389 // { int __mac_set_file(const char *path_p, struct mac *mac_p); }\n\tSYS_KENV                     = 390 // { int kenv(int what, const char *name, char *value, int len); }\n\tSYS_LCHFLAGS                 = 391 // { int lchflags(const char *path, u_long flags); }\n\tSYS_UUIDGEN                  = 392 // { int uuidgen(struct uuid *store, int count); }\n\tSYS_SENDFILE                 = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); }\n\tSYS_MAC_SYSCALL              = 394 // { int mac_syscall(const char *policy, int call, void *arg); }\n\tSYS_KSEM_CLOSE               = 400 // { int ksem_close(semid_t id); }\n\tSYS_KSEM_POST                = 401 // { int ksem_post(semid_t id); }\n\tSYS_KSEM_WAIT                = 402 // { int ksem_wait(semid_t id); }\n\tSYS_KSEM_TRYWAIT             = 403 // { int ksem_trywait(semid_t id); }\n\tSYS_KSEM_INIT                = 404 // { int ksem_init(semid_t *idp, unsigned int value); }\n\tSYS_KSEM_OPEN                = 405 // { int ksem_open(semid_t *idp, const char *name, int oflag, mode_t mode, unsigned int value); }\n\tSYS_KSEM_UNLINK              = 406 // { int ksem_unlink(const char *name); }\n\tSYS_KSEM_GETVALUE            = 407 // { int ksem_getvalue(semid_t id, int *val); }\n\tSYS_KSEM_DESTROY             = 408 // { int ksem_destroy(semid_t id); }\n\tSYS___MAC_GET_PID            = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); }\n\tSYS___MAC_GET_LINK           = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); }\n\tSYS___MAC_SET_LINK           = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); }\n\tSYS_EXTATTR_SET_LINK         = 412 // { ssize_t extattr_set_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_LINK         = 413 // { ssize_t extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_LINK      = 414 // { int extattr_delete_link(const char *path, int attrnamespace, const char *attrname); }\n\tSYS___MAC_EXECVE             = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); }\n\tSYS_SIGACTION                = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); }\n\tSYS_SIGRETURN                = 417 // { int sigreturn(const struct __ucontext *sigcntxp); }\n\tSYS_GETCONTEXT               = 421 // { int getcontext(struct __ucontext *ucp); }\n\tSYS_SETCONTEXT               = 422 // { int setcontext(const struct __ucontext *ucp); }\n\tSYS_SWAPCONTEXT              = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); }\n\tSYS_SWAPOFF                  = 424 // { int swapoff(const char *name); }\n\tSYS___ACL_GET_LINK           = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_LINK           = 426 // { int __acl_set_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_DELETE_LINK        = 427 // { int __acl_delete_link(const char *path, acl_type_t type); }\n\tSYS___ACL_ACLCHECK_LINK      = 428 // { int __acl_aclcheck_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS_SIGWAIT                  = 429 // { int sigwait(const sigset_t *set, int *sig); }\n\tSYS_THR_CREATE               = 430 // { int thr_create(ucontext_t *ctx, long *id, int flags); }\n\tSYS_THR_EXIT                 = 431 // { void thr_exit(long *state); }\n\tSYS_THR_SELF                 = 432 // { int thr_self(long *id); }\n\tSYS_THR_KILL                 = 433 // { int thr_kill(long id, int sig); }\n\tSYS_JAIL_ATTACH              = 436 // { int jail_attach(int jid); }\n\tSYS_EXTATTR_LIST_FD          = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_FILE        = 438 // { ssize_t extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_LINK        = 439 // { ssize_t extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_KSEM_TIMEDWAIT           = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); }\n\tSYS_THR_SUSPEND              = 442 // { int thr_suspend(const struct timespec *timeout); }\n\tSYS_THR_WAKE                 = 443 // { int thr_wake(long id); }\n\tSYS_KLDUNLOADF               = 444 // { int kldunloadf(int fileid, int flags); }\n\tSYS_AUDIT                    = 445 // { int audit(const void *record, u_int length); }\n\tSYS_AUDITON                  = 446 // { int auditon(int cmd, void *data, u_int length); }\n\tSYS_GETAUID                  = 447 // { int getauid(uid_t *auid); }\n\tSYS_SETAUID                  = 448 // { int setauid(uid_t *auid); }\n\tSYS_GETAUDIT                 = 449 // { int getaudit(struct auditinfo *auditinfo); }\n\tSYS_SETAUDIT                 = 450 // { int setaudit(struct auditinfo *auditinfo); }\n\tSYS_GETAUDIT_ADDR            = 451 // { int getaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); }\n\tSYS_SETAUDIT_ADDR            = 452 // { int setaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); }\n\tSYS_AUDITCTL                 = 453 // { int auditctl(char *path); }\n\tSYS__UMTX_OP                 = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); }\n\tSYS_THR_NEW                  = 455 // { int thr_new(struct thr_param *param, int param_size); }\n\tSYS_SIGQUEUE                 = 456 // { int sigqueue(pid_t pid, int signum, void *value); }\n\tSYS_KMQ_OPEN                 = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); }\n\tSYS_KMQ_SETATTR              = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); }\n\tSYS_KMQ_TIMEDRECEIVE         = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); }\n\tSYS_KMQ_TIMEDSEND            = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len, unsigned msg_prio, const struct timespec *abs_timeout); }\n\tSYS_KMQ_NOTIFY               = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); }\n\tSYS_KMQ_UNLINK               = 462 // { int kmq_unlink(const char *path); }\n\tSYS_ABORT2                   = 463 // { int abort2(const char *why, int nargs, void **args); }\n\tSYS_THR_SET_NAME             = 464 // { int thr_set_name(long id, const char *name); }\n\tSYS_AIO_FSYNC                = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); }\n\tSYS_RTPRIO_THREAD            = 466 // { int rtprio_thread(int function, lwpid_t lwpid, struct rtprio *rtp); }\n\tSYS_SCTP_PEELOFF             = 471 // { int sctp_peeloff(int sd, uint32_t name); }\n\tSYS_SCTP_GENERIC_SENDMSG     = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }\n\tSYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }\n\tSYS_SCTP_GENERIC_RECVMSG     = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr *from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); }\n\tSYS_PREAD                    = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); }\n\tSYS_PWRITE                   = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); }\n\tSYS_MMAP                     = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); }\n\tSYS_LSEEK                    = 478 // { off_t lseek(int fd, off_t offset, int whence); }\n\tSYS_TRUNCATE                 = 479 // { int truncate(char *path, off_t length); }\n\tSYS_FTRUNCATE                = 480 // { int ftruncate(int fd, off_t length); }\n\tSYS_THR_KILL2                = 481 // { int thr_kill2(pid_t pid, long id, int sig); }\n\tSYS_SHM_OPEN                 = 482 // { int shm_open(const char *path, int flags, mode_t mode); }\n\tSYS_SHM_UNLINK               = 483 // { int shm_unlink(const char *path); }\n\tSYS_CPUSET                   = 484 // { int cpuset(cpusetid_t *setid); }\n\tSYS_CPUSET_SETID             = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, cpusetid_t setid); }\n\tSYS_CPUSET_GETID             = 486 // { int cpuset_getid(cpulevel_t level, cpuwhich_t which, id_t id, cpusetid_t *setid); }\n\tSYS_CPUSET_GETAFFINITY       = 487 // { int cpuset_getaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, cpuset_t *mask); }\n\tSYS_CPUSET_SETAFFINITY       = 488 // { int cpuset_setaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, const cpuset_t *mask); }\n\tSYS_FACCESSAT                = 489 // { int faccessat(int fd, char *path, int amode, int flag); }\n\tSYS_FCHMODAT                 = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT                 = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); }\n\tSYS_FEXECVE                  = 492 // { int fexecve(int fd, char **argv, char **envv); }\n\tSYS_FUTIMESAT                = 494 // { int futimesat(int fd, char *path, struct timeval *times); }\n\tSYS_LINKAT                   = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); }\n\tSYS_MKDIRAT                  = 496 // { int mkdirat(int fd, char *path, mode_t mode); }\n\tSYS_MKFIFOAT                 = 497 // { int mkfifoat(int fd, char *path, mode_t mode); }\n\tSYS_OPENAT                   = 499 // { int openat(int fd, char *path, int flag, mode_t mode); }\n\tSYS_READLINKAT               = 500 // { ssize_t readlinkat(int fd, char *path, char *buf, size_t bufsize); }\n\tSYS_RENAMEAT                 = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); }\n\tSYS_SYMLINKAT                = 502 // { int symlinkat(char *path1, int fd, char *path2); }\n\tSYS_UNLINKAT                 = 503 // { int unlinkat(int fd, char *path, int flag); }\n\tSYS_POSIX_OPENPT             = 504 // { int posix_openpt(int flags); }\n\tSYS_GSSD_SYSCALL             = 505 // { int gssd_syscall(char *path); }\n\tSYS_JAIL_GET                 = 506 // { int jail_get(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS_JAIL_SET                 = 507 // { int jail_set(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS_JAIL_REMOVE              = 508 // { int jail_remove(int jid); }\n\tSYS_CLOSEFROM                = 509 // { int closefrom(int lowfd); }\n\tSYS___SEMCTL                 = 510 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_MSGCTL                   = 511 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_SHMCTL                   = 512 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_LPATHCONF                = 513 // { int lpathconf(char *path, int name); }\n\tSYS___CAP_RIGHTS_GET         = 515 // { int __cap_rights_get(int version, int fd, cap_rights_t *rightsp); }\n\tSYS_CAP_ENTER                = 516 // { int cap_enter(void); }\n\tSYS_CAP_GETMODE              = 517 // { int cap_getmode(u_int *modep); }\n\tSYS_PDFORK                   = 518 // { int pdfork(int *fdp, int flags); }\n\tSYS_PDKILL                   = 519 // { int pdkill(int fd, int signum); }\n\tSYS_PDGETPID                 = 520 // { int pdgetpid(int fd, pid_t *pidp); }\n\tSYS_PSELECT                  = 522 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sm); }\n\tSYS_GETLOGINCLASS            = 523 // { int getloginclass(char *namebuf, size_t namelen); }\n\tSYS_SETLOGINCLASS            = 524 // { int setloginclass(const char *namebuf); }\n\tSYS_RCTL_GET_RACCT           = 525 // { int rctl_get_racct(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_GET_RULES           = 526 // { int rctl_get_rules(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_GET_LIMITS          = 527 // { int rctl_get_limits(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_ADD_RULE            = 528 // { int rctl_add_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_REMOVE_RULE         = 529 // { int rctl_remove_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_POSIX_FALLOCATE          = 530 // { int posix_fallocate(int fd, off_t offset, off_t len); }\n\tSYS_POSIX_FADVISE            = 531 // { int posix_fadvise(int fd, off_t offset, off_t len, int advice); }\n\tSYS_WAIT6                    = 532 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); }\n\tSYS_CAP_RIGHTS_LIMIT         = 533 // { int cap_rights_limit(int fd, cap_rights_t *rightsp); }\n\tSYS_CAP_IOCTLS_LIMIT         = 534 // { int cap_ioctls_limit(int fd, const u_long *cmds, size_t ncmds); }\n\tSYS_CAP_IOCTLS_GET           = 535 // { ssize_t cap_ioctls_get(int fd, u_long *cmds, size_t maxcmds); }\n\tSYS_CAP_FCNTLS_LIMIT         = 536 // { int cap_fcntls_limit(int fd, uint32_t fcntlrights); }\n\tSYS_CAP_FCNTLS_GET           = 537 // { int cap_fcntls_get(int fd, uint32_t *fcntlrightsp); }\n\tSYS_BINDAT                   = 538 // { int bindat(int fd, int s, caddr_t name, int namelen); }\n\tSYS_CONNECTAT                = 539 // { int connectat(int fd, int s, caddr_t name, int namelen); }\n\tSYS_CHFLAGSAT                = 540 // { int chflagsat(int fd, const char *path, u_long flags, int atflag); }\n\tSYS_ACCEPT4                  = 541 // { int accept4(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen, int flags); }\n\tSYS_PIPE2                    = 542 // { int pipe2(int *fildes, int flags); }\n\tSYS_AIO_MLOCK                = 543 // { int aio_mlock(struct aiocb *aiocbp); }\n\tSYS_PROCCTL                  = 544 // { int procctl(idtype_t idtype, id_t id, int com, void *data); }\n\tSYS_PPOLL                    = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); }\n\tSYS_FUTIMENS                 = 546 // { int futimens(int fd, struct timespec *times); }\n\tSYS_UTIMENSAT                = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); }\n\tSYS_FDATASYNC                = 550 // { int fdatasync(int fd); }\n\tSYS_FSTAT                    = 551 // { int fstat(int fd, struct stat *sb); }\n\tSYS_FSTATAT                  = 552 // { int fstatat(int fd, char *path, struct stat *buf, int flag); }\n\tSYS_FHSTAT                   = 553 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); }\n\tSYS_GETDIRENTRIES            = 554 // { ssize_t getdirentries(int fd, char *buf, size_t count, off_t *basep); }\n\tSYS_STATFS                   = 555 // { int statfs(char *path, struct statfs *buf); }\n\tSYS_FSTATFS                  = 556 // { int fstatfs(int fd, struct statfs *buf); }\n\tSYS_GETFSSTAT                = 557 // { int getfsstat(struct statfs *buf, long bufsize, int mode); }\n\tSYS_FHSTATFS                 = 558 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); }\n\tSYS_MKNODAT                  = 559 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); }\n\tSYS_KEVENT                   = 560 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_CPUSET_GETDOMAIN         = 561 // { int cpuset_getdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int *policy); }\n\tSYS_CPUSET_SETDOMAIN         = 562 // { int cpuset_setdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int policy); }\n\tSYS_GETRANDOM                = 563 // { int getrandom(void *buf, size_t buflen, unsigned int flags); }\n\tSYS_GETFHAT                  = 564 // { int getfhat(int fd, char *path, struct fhandle *fhp, int flags); }\n\tSYS_FHLINK                   = 565 // { int fhlink(struct fhandle *fhp, const char *to); }\n\tSYS_FHLINKAT                 = 566 // { int fhlinkat(struct fhandle *fhp, int tofd, const char *to,); }\n\tSYS_FHREADLINK               = 567 // { int fhreadlink(struct fhandle *fhp, char *buf, size_t bufsize); }\n\tSYS___SYSCTLBYNAME           = 570 // { int __sysctlbyname(const char *name, size_t namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }\n\tSYS_CLOSE_RANGE              = 575 // { int close_range(u_int lowfd, u_int highfd, int flags); }\n)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/386/include -m32 /tmp/386/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build 386 && linux\n\npackage unix\n\nconst (\n\tSYS_RESTART_SYSCALL              = 0\n\tSYS_EXIT                         = 1\n\tSYS_FORK                         = 2\n\tSYS_READ                         = 3\n\tSYS_WRITE                        = 4\n\tSYS_OPEN                         = 5\n\tSYS_CLOSE                        = 6\n\tSYS_WAITPID                      = 7\n\tSYS_CREAT                        = 8\n\tSYS_LINK                         = 9\n\tSYS_UNLINK                       = 10\n\tSYS_EXECVE                       = 11\n\tSYS_CHDIR                        = 12\n\tSYS_TIME                         = 13\n\tSYS_MKNOD                        = 14\n\tSYS_CHMOD                        = 15\n\tSYS_LCHOWN                       = 16\n\tSYS_BREAK                        = 17\n\tSYS_OLDSTAT                      = 18\n\tSYS_LSEEK                        = 19\n\tSYS_GETPID                       = 20\n\tSYS_MOUNT                        = 21\n\tSYS_UMOUNT                       = 22\n\tSYS_SETUID                       = 23\n\tSYS_GETUID                       = 24\n\tSYS_STIME                        = 25\n\tSYS_PTRACE                       = 26\n\tSYS_ALARM                        = 27\n\tSYS_OLDFSTAT                     = 28\n\tSYS_PAUSE                        = 29\n\tSYS_UTIME                        = 30\n\tSYS_STTY                         = 31\n\tSYS_GTTY                         = 32\n\tSYS_ACCESS                       = 33\n\tSYS_NICE                         = 34\n\tSYS_FTIME                        = 35\n\tSYS_SYNC                         = 36\n\tSYS_KILL                         = 37\n\tSYS_RENAME                       = 38\n\tSYS_MKDIR                        = 39\n\tSYS_RMDIR                        = 40\n\tSYS_DUP                          = 41\n\tSYS_PIPE                         = 42\n\tSYS_TIMES                        = 43\n\tSYS_PROF                         = 44\n\tSYS_BRK                          = 45\n\tSYS_SETGID                       = 46\n\tSYS_GETGID                       = 47\n\tSYS_SIGNAL                       = 48\n\tSYS_GETEUID                      = 49\n\tSYS_GETEGID                      = 50\n\tSYS_ACCT                         = 51\n\tSYS_UMOUNT2                      = 52\n\tSYS_LOCK                         = 53\n\tSYS_IOCTL                        = 54\n\tSYS_FCNTL                        = 55\n\tSYS_MPX                          = 56\n\tSYS_SETPGID                      = 57\n\tSYS_ULIMIT                       = 58\n\tSYS_OLDOLDUNAME                  = 59\n\tSYS_UMASK                        = 60\n\tSYS_CHROOT                       = 61\n\tSYS_USTAT                        = 62\n\tSYS_DUP2                         = 63\n\tSYS_GETPPID                      = 64\n\tSYS_GETPGRP                      = 65\n\tSYS_SETSID                       = 66\n\tSYS_SIGACTION                    = 67\n\tSYS_SGETMASK                     = 68\n\tSYS_SSETMASK                     = 69\n\tSYS_SETREUID                     = 70\n\tSYS_SETREGID                     = 71\n\tSYS_SIGSUSPEND                   = 72\n\tSYS_SIGPENDING                   = 73\n\tSYS_SETHOSTNAME                  = 74\n\tSYS_SETRLIMIT                    = 75\n\tSYS_GETRLIMIT                    = 76\n\tSYS_GETRUSAGE                    = 77\n\tSYS_GETTIMEOFDAY                 = 78\n\tSYS_SETTIMEOFDAY                 = 79\n\tSYS_GETGROUPS                    = 80\n\tSYS_SETGROUPS                    = 81\n\tSYS_SELECT                       = 82\n\tSYS_SYMLINK                      = 83\n\tSYS_OLDLSTAT                     = 84\n\tSYS_READLINK                     = 85\n\tSYS_USELIB                       = 86\n\tSYS_SWAPON                       = 87\n\tSYS_REBOOT                       = 88\n\tSYS_READDIR                      = 89\n\tSYS_MMAP                         = 90\n\tSYS_MUNMAP                       = 91\n\tSYS_TRUNCATE                     = 92\n\tSYS_FTRUNCATE                    = 93\n\tSYS_FCHMOD                       = 94\n\tSYS_FCHOWN                       = 95\n\tSYS_GETPRIORITY                  = 96\n\tSYS_SETPRIORITY                  = 97\n\tSYS_PROFIL                       = 98\n\tSYS_STATFS                       = 99\n\tSYS_FSTATFS                      = 100\n\tSYS_IOPERM                       = 101\n\tSYS_SOCKETCALL                   = 102\n\tSYS_SYSLOG                       = 103\n\tSYS_SETITIMER                    = 104\n\tSYS_GETITIMER                    = 105\n\tSYS_STAT                         = 106\n\tSYS_LSTAT                        = 107\n\tSYS_FSTAT                        = 108\n\tSYS_OLDUNAME                     = 109\n\tSYS_IOPL                         = 110\n\tSYS_VHANGUP                      = 111\n\tSYS_IDLE                         = 112\n\tSYS_VM86OLD                      = 113\n\tSYS_WAIT4                        = 114\n\tSYS_SWAPOFF                      = 115\n\tSYS_SYSINFO                      = 116\n\tSYS_IPC                          = 117\n\tSYS_FSYNC                        = 118\n\tSYS_SIGRETURN                    = 119\n\tSYS_CLONE                        = 120\n\tSYS_SETDOMAINNAME                = 121\n\tSYS_UNAME                        = 122\n\tSYS_MODIFY_LDT                   = 123\n\tSYS_ADJTIMEX                     = 124\n\tSYS_MPROTECT                     = 125\n\tSYS_SIGPROCMASK                  = 126\n\tSYS_CREATE_MODULE                = 127\n\tSYS_INIT_MODULE                  = 128\n\tSYS_DELETE_MODULE                = 129\n\tSYS_GET_KERNEL_SYMS              = 130\n\tSYS_QUOTACTL                     = 131\n\tSYS_GETPGID                      = 132\n\tSYS_FCHDIR                       = 133\n\tSYS_BDFLUSH                      = 134\n\tSYS_SYSFS                        = 135\n\tSYS_PERSONALITY                  = 136\n\tSYS_AFS_SYSCALL                  = 137\n\tSYS_SETFSUID                     = 138\n\tSYS_SETFSGID                     = 139\n\tSYS__LLSEEK                      = 140\n\tSYS_GETDENTS                     = 141\n\tSYS__NEWSELECT                   = 142\n\tSYS_FLOCK                        = 143\n\tSYS_MSYNC                        = 144\n\tSYS_READV                        = 145\n\tSYS_WRITEV                       = 146\n\tSYS_GETSID                       = 147\n\tSYS_FDATASYNC                    = 148\n\tSYS__SYSCTL                      = 149\n\tSYS_MLOCK                        = 150\n\tSYS_MUNLOCK                      = 151\n\tSYS_MLOCKALL                     = 152\n\tSYS_MUNLOCKALL                   = 153\n\tSYS_SCHED_SETPARAM               = 154\n\tSYS_SCHED_GETPARAM               = 155\n\tSYS_SCHED_SETSCHEDULER           = 156\n\tSYS_SCHED_GETSCHEDULER           = 157\n\tSYS_SCHED_YIELD                  = 158\n\tSYS_SCHED_GET_PRIORITY_MAX       = 159\n\tSYS_SCHED_GET_PRIORITY_MIN       = 160\n\tSYS_SCHED_RR_GET_INTERVAL        = 161\n\tSYS_NANOSLEEP                    = 162\n\tSYS_MREMAP                       = 163\n\tSYS_SETRESUID                    = 164\n\tSYS_GETRESUID                    = 165\n\tSYS_VM86                         = 166\n\tSYS_QUERY_MODULE                 = 167\n\tSYS_POLL                         = 168\n\tSYS_NFSSERVCTL                   = 169\n\tSYS_SETRESGID                    = 170\n\tSYS_GETRESGID                    = 171\n\tSYS_PRCTL                        = 172\n\tSYS_RT_SIGRETURN                 = 173\n\tSYS_RT_SIGACTION                 = 174\n\tSYS_RT_SIGPROCMASK               = 175\n\tSYS_RT_SIGPENDING                = 176\n\tSYS_RT_SIGTIMEDWAIT              = 177\n\tSYS_RT_SIGQUEUEINFO              = 178\n\tSYS_RT_SIGSUSPEND                = 179\n\tSYS_PREAD64                      = 180\n\tSYS_PWRITE64                     = 181\n\tSYS_CHOWN                        = 182\n\tSYS_GETCWD                       = 183\n\tSYS_CAPGET                       = 184\n\tSYS_CAPSET                       = 185\n\tSYS_SIGALTSTACK                  = 186\n\tSYS_SENDFILE                     = 187\n\tSYS_GETPMSG                      = 188\n\tSYS_PUTPMSG                      = 189\n\tSYS_VFORK                        = 190\n\tSYS_UGETRLIMIT                   = 191\n\tSYS_MMAP2                        = 192\n\tSYS_TRUNCATE64                   = 193\n\tSYS_FTRUNCATE64                  = 194\n\tSYS_STAT64                       = 195\n\tSYS_LSTAT64                      = 196\n\tSYS_FSTAT64                      = 197\n\tSYS_LCHOWN32                     = 198\n\tSYS_GETUID32                     = 199\n\tSYS_GETGID32                     = 200\n\tSYS_GETEUID32                    = 201\n\tSYS_GETEGID32                    = 202\n\tSYS_SETREUID32                   = 203\n\tSYS_SETREGID32                   = 204\n\tSYS_GETGROUPS32                  = 205\n\tSYS_SETGROUPS32                  = 206\n\tSYS_FCHOWN32                     = 207\n\tSYS_SETRESUID32                  = 208\n\tSYS_GETRESUID32                  = 209\n\tSYS_SETRESGID32                  = 210\n\tSYS_GETRESGID32                  = 211\n\tSYS_CHOWN32                      = 212\n\tSYS_SETUID32                     = 213\n\tSYS_SETGID32                     = 214\n\tSYS_SETFSUID32                   = 215\n\tSYS_SETFSGID32                   = 216\n\tSYS_PIVOT_ROOT                   = 217\n\tSYS_MINCORE                      = 218\n\tSYS_MADVISE                      = 219\n\tSYS_GETDENTS64                   = 220\n\tSYS_FCNTL64                      = 221\n\tSYS_GETTID                       = 224\n\tSYS_READAHEAD                    = 225\n\tSYS_SETXATTR                     = 226\n\tSYS_LSETXATTR                    = 227\n\tSYS_FSETXATTR                    = 228\n\tSYS_GETXATTR                     = 229\n\tSYS_LGETXATTR                    = 230\n\tSYS_FGETXATTR                    = 231\n\tSYS_LISTXATTR                    = 232\n\tSYS_LLISTXATTR                   = 233\n\tSYS_FLISTXATTR                   = 234\n\tSYS_REMOVEXATTR                  = 235\n\tSYS_LREMOVEXATTR                 = 236\n\tSYS_FREMOVEXATTR                 = 237\n\tSYS_TKILL                        = 238\n\tSYS_SENDFILE64                   = 239\n\tSYS_FUTEX                        = 240\n\tSYS_SCHED_SETAFFINITY            = 241\n\tSYS_SCHED_GETAFFINITY            = 242\n\tSYS_SET_THREAD_AREA              = 243\n\tSYS_GET_THREAD_AREA              = 244\n\tSYS_IO_SETUP                     = 245\n\tSYS_IO_DESTROY                   = 246\n\tSYS_IO_GETEVENTS                 = 247\n\tSYS_IO_SUBMIT                    = 248\n\tSYS_IO_CANCEL                    = 249\n\tSYS_FADVISE64                    = 250\n\tSYS_EXIT_GROUP                   = 252\n\tSYS_LOOKUP_DCOOKIE               = 253\n\tSYS_EPOLL_CREATE                 = 254\n\tSYS_EPOLL_CTL                    = 255\n\tSYS_EPOLL_WAIT                   = 256\n\tSYS_REMAP_FILE_PAGES             = 257\n\tSYS_SET_TID_ADDRESS              = 258\n\tSYS_TIMER_CREATE                 = 259\n\tSYS_TIMER_SETTIME                = 260\n\tSYS_TIMER_GETTIME                = 261\n\tSYS_TIMER_GETOVERRUN             = 262\n\tSYS_TIMER_DELETE                 = 263\n\tSYS_CLOCK_SETTIME                = 264\n\tSYS_CLOCK_GETTIME                = 265\n\tSYS_CLOCK_GETRES                 = 266\n\tSYS_CLOCK_NANOSLEEP              = 267\n\tSYS_STATFS64                     = 268\n\tSYS_FSTATFS64                    = 269\n\tSYS_TGKILL                       = 270\n\tSYS_UTIMES                       = 271\n\tSYS_FADVISE64_64                 = 272\n\tSYS_VSERVER                      = 273\n\tSYS_MBIND                        = 274\n\tSYS_GET_MEMPOLICY                = 275\n\tSYS_SET_MEMPOLICY                = 276\n\tSYS_MQ_OPEN                      = 277\n\tSYS_MQ_UNLINK                    = 278\n\tSYS_MQ_TIMEDSEND                 = 279\n\tSYS_MQ_TIMEDRECEIVE              = 280\n\tSYS_MQ_NOTIFY                    = 281\n\tSYS_MQ_GETSETATTR                = 282\n\tSYS_KEXEC_LOAD                   = 283\n\tSYS_WAITID                       = 284\n\tSYS_ADD_KEY                      = 286\n\tSYS_REQUEST_KEY                  = 287\n\tSYS_KEYCTL                       = 288\n\tSYS_IOPRIO_SET                   = 289\n\tSYS_IOPRIO_GET                   = 290\n\tSYS_INOTIFY_INIT                 = 291\n\tSYS_INOTIFY_ADD_WATCH            = 292\n\tSYS_INOTIFY_RM_WATCH             = 293\n\tSYS_MIGRATE_PAGES                = 294\n\tSYS_OPENAT                       = 295\n\tSYS_MKDIRAT                      = 296\n\tSYS_MKNODAT                      = 297\n\tSYS_FCHOWNAT                     = 298\n\tSYS_FUTIMESAT                    = 299\n\tSYS_FSTATAT64                    = 300\n\tSYS_UNLINKAT                     = 301\n\tSYS_RENAMEAT                     = 302\n\tSYS_LINKAT                       = 303\n\tSYS_SYMLINKAT                    = 304\n\tSYS_READLINKAT                   = 305\n\tSYS_FCHMODAT                     = 306\n\tSYS_FACCESSAT                    = 307\n\tSYS_PSELECT6                     = 308\n\tSYS_PPOLL                        = 309\n\tSYS_UNSHARE                      = 310\n\tSYS_SET_ROBUST_LIST              = 311\n\tSYS_GET_ROBUST_LIST              = 312\n\tSYS_SPLICE                       = 313\n\tSYS_SYNC_FILE_RANGE              = 314\n\tSYS_TEE                          = 315\n\tSYS_VMSPLICE                     = 316\n\tSYS_MOVE_PAGES                   = 317\n\tSYS_GETCPU                       = 318\n\tSYS_EPOLL_PWAIT                  = 319\n\tSYS_UTIMENSAT                    = 320\n\tSYS_SIGNALFD                     = 321\n\tSYS_TIMERFD_CREATE               = 322\n\tSYS_EVENTFD                      = 323\n\tSYS_FALLOCATE                    = 324\n\tSYS_TIMERFD_SETTIME              = 325\n\tSYS_TIMERFD_GETTIME              = 326\n\tSYS_SIGNALFD4                    = 327\n\tSYS_EVENTFD2                     = 328\n\tSYS_EPOLL_CREATE1                = 329\n\tSYS_DUP3                         = 330\n\tSYS_PIPE2                        = 331\n\tSYS_INOTIFY_INIT1                = 332\n\tSYS_PREADV                       = 333\n\tSYS_PWRITEV                      = 334\n\tSYS_RT_TGSIGQUEUEINFO            = 335\n\tSYS_PERF_EVENT_OPEN              = 336\n\tSYS_RECVMMSG                     = 337\n\tSYS_FANOTIFY_INIT                = 338\n\tSYS_FANOTIFY_MARK                = 339\n\tSYS_PRLIMIT64                    = 340\n\tSYS_NAME_TO_HANDLE_AT            = 341\n\tSYS_OPEN_BY_HANDLE_AT            = 342\n\tSYS_CLOCK_ADJTIME                = 343\n\tSYS_SYNCFS                       = 344\n\tSYS_SENDMMSG                     = 345\n\tSYS_SETNS                        = 346\n\tSYS_PROCESS_VM_READV             = 347\n\tSYS_PROCESS_VM_WRITEV            = 348\n\tSYS_KCMP                         = 349\n\tSYS_FINIT_MODULE                 = 350\n\tSYS_SCHED_SETATTR                = 351\n\tSYS_SCHED_GETATTR                = 352\n\tSYS_RENAMEAT2                    = 353\n\tSYS_SECCOMP                      = 354\n\tSYS_GETRANDOM                    = 355\n\tSYS_MEMFD_CREATE                 = 356\n\tSYS_BPF                          = 357\n\tSYS_EXECVEAT                     = 358\n\tSYS_SOCKET                       = 359\n\tSYS_SOCKETPAIR                   = 360\n\tSYS_BIND                         = 361\n\tSYS_CONNECT                      = 362\n\tSYS_LISTEN                       = 363\n\tSYS_ACCEPT4                      = 364\n\tSYS_GETSOCKOPT                   = 365\n\tSYS_SETSOCKOPT                   = 366\n\tSYS_GETSOCKNAME                  = 367\n\tSYS_GETPEERNAME                  = 368\n\tSYS_SENDTO                       = 369\n\tSYS_SENDMSG                      = 370\n\tSYS_RECVFROM                     = 371\n\tSYS_RECVMSG                      = 372\n\tSYS_SHUTDOWN                     = 373\n\tSYS_USERFAULTFD                  = 374\n\tSYS_MEMBARRIER                   = 375\n\tSYS_MLOCK2                       = 376\n\tSYS_COPY_FILE_RANGE              = 377\n\tSYS_PREADV2                      = 378\n\tSYS_PWRITEV2                     = 379\n\tSYS_PKEY_MPROTECT                = 380\n\tSYS_PKEY_ALLOC                   = 381\n\tSYS_PKEY_FREE                    = 382\n\tSYS_STATX                        = 383\n\tSYS_ARCH_PRCTL                   = 384\n\tSYS_IO_PGETEVENTS                = 385\n\tSYS_RSEQ                         = 386\n\tSYS_SEMGET                       = 393\n\tSYS_SEMCTL                       = 394\n\tSYS_SHMGET                       = 395\n\tSYS_SHMCTL                       = 396\n\tSYS_SHMAT                        = 397\n\tSYS_SHMDT                        = 398\n\tSYS_MSGGET                       = 399\n\tSYS_MSGSND                       = 400\n\tSYS_MSGRCV                       = 401\n\tSYS_MSGCTL                       = 402\n\tSYS_CLOCK_GETTIME64              = 403\n\tSYS_CLOCK_SETTIME64              = 404\n\tSYS_CLOCK_ADJTIME64              = 405\n\tSYS_CLOCK_GETRES_TIME64          = 406\n\tSYS_CLOCK_NANOSLEEP_TIME64       = 407\n\tSYS_TIMER_GETTIME64              = 408\n\tSYS_TIMER_SETTIME64              = 409\n\tSYS_TIMERFD_GETTIME64            = 410\n\tSYS_TIMERFD_SETTIME64            = 411\n\tSYS_UTIMENSAT_TIME64             = 412\n\tSYS_PSELECT6_TIME64              = 413\n\tSYS_PPOLL_TIME64                 = 414\n\tSYS_IO_PGETEVENTS_TIME64         = 416\n\tSYS_RECVMMSG_TIME64              = 417\n\tSYS_MQ_TIMEDSEND_TIME64          = 418\n\tSYS_MQ_TIMEDRECEIVE_TIME64       = 419\n\tSYS_SEMTIMEDOP_TIME64            = 420\n\tSYS_RT_SIGTIMEDWAIT_TIME64       = 421\n\tSYS_FUTEX_TIME64                 = 422\n\tSYS_SCHED_RR_GET_INTERVAL_TIME64 = 423\n\tSYS_PIDFD_SEND_SIGNAL            = 424\n\tSYS_IO_URING_SETUP               = 425\n\tSYS_IO_URING_ENTER               = 426\n\tSYS_IO_URING_REGISTER            = 427\n\tSYS_OPEN_TREE                    = 428\n\tSYS_MOVE_MOUNT                   = 429\n\tSYS_FSOPEN                       = 430\n\tSYS_FSCONFIG                     = 431\n\tSYS_FSMOUNT                      = 432\n\tSYS_FSPICK                       = 433\n\tSYS_PIDFD_OPEN                   = 434\n\tSYS_CLONE3                       = 435\n\tSYS_CLOSE_RANGE                  = 436\n\tSYS_OPENAT2                      = 437\n\tSYS_PIDFD_GETFD                  = 438\n\tSYS_FACCESSAT2                   = 439\n\tSYS_PROCESS_MADVISE              = 440\n\tSYS_EPOLL_PWAIT2                 = 441\n\tSYS_MOUNT_SETATTR                = 442\n\tSYS_QUOTACTL_FD                  = 443\n\tSYS_LANDLOCK_CREATE_RULESET      = 444\n\tSYS_LANDLOCK_ADD_RULE            = 445\n\tSYS_LANDLOCK_RESTRICT_SELF       = 446\n\tSYS_MEMFD_SECRET                 = 447\n\tSYS_PROCESS_MRELEASE             = 448\n\tSYS_FUTEX_WAITV                  = 449\n\tSYS_SET_MEMPOLICY_HOME_NODE      = 450\n\tSYS_CACHESTAT                    = 451\n\tSYS_FCHMODAT2                    = 452\n\tSYS_MAP_SHADOW_STACK             = 453\n\tSYS_FUTEX_WAKE                   = 454\n\tSYS_FUTEX_WAIT                   = 455\n\tSYS_FUTEX_REQUEUE                = 456\n\tSYS_STATMOUNT                    = 457\n\tSYS_LISTMOUNT                    = 458\n\tSYS_LSM_GET_SELF_ATTR            = 459\n\tSYS_LSM_SET_SELF_ATTR            = 460\n\tSYS_LSM_LIST_MODULES             = 461\n\tSYS_MSEAL                        = 462\n\tSYS_SETXATTRAT                   = 463\n\tSYS_GETXATTRAT                   = 464\n\tSYS_LISTXATTRAT                  = 465\n\tSYS_REMOVEXATTRAT                = 466\n\tSYS_OPEN_TREE_ATTR               = 467\n)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/amd64/include -m64 /tmp/amd64/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && linux\n\npackage unix\n\nconst (\n\tSYS_READ                    = 0\n\tSYS_WRITE                   = 1\n\tSYS_OPEN                    = 2\n\tSYS_CLOSE                   = 3\n\tSYS_STAT                    = 4\n\tSYS_FSTAT                   = 5\n\tSYS_LSTAT                   = 6\n\tSYS_POLL                    = 7\n\tSYS_LSEEK                   = 8\n\tSYS_MMAP                    = 9\n\tSYS_MPROTECT                = 10\n\tSYS_MUNMAP                  = 11\n\tSYS_BRK                     = 12\n\tSYS_RT_SIGACTION            = 13\n\tSYS_RT_SIGPROCMASK          = 14\n\tSYS_RT_SIGRETURN            = 15\n\tSYS_IOCTL                   = 16\n\tSYS_PREAD64                 = 17\n\tSYS_PWRITE64                = 18\n\tSYS_READV                   = 19\n\tSYS_WRITEV                  = 20\n\tSYS_ACCESS                  = 21\n\tSYS_PIPE                    = 22\n\tSYS_SELECT                  = 23\n\tSYS_SCHED_YIELD             = 24\n\tSYS_MREMAP                  = 25\n\tSYS_MSYNC                   = 26\n\tSYS_MINCORE                 = 27\n\tSYS_MADVISE                 = 28\n\tSYS_SHMGET                  = 29\n\tSYS_SHMAT                   = 30\n\tSYS_SHMCTL                  = 31\n\tSYS_DUP                     = 32\n\tSYS_DUP2                    = 33\n\tSYS_PAUSE                   = 34\n\tSYS_NANOSLEEP               = 35\n\tSYS_GETITIMER               = 36\n\tSYS_ALARM                   = 37\n\tSYS_SETITIMER               = 38\n\tSYS_GETPID                  = 39\n\tSYS_SENDFILE                = 40\n\tSYS_SOCKET                  = 41\n\tSYS_CONNECT                 = 42\n\tSYS_ACCEPT                  = 43\n\tSYS_SENDTO                  = 44\n\tSYS_RECVFROM                = 45\n\tSYS_SENDMSG                 = 46\n\tSYS_RECVMSG                 = 47\n\tSYS_SHUTDOWN                = 48\n\tSYS_BIND                    = 49\n\tSYS_LISTEN                  = 50\n\tSYS_GETSOCKNAME             = 51\n\tSYS_GETPEERNAME             = 52\n\tSYS_SOCKETPAIR              = 53\n\tSYS_SETSOCKOPT              = 54\n\tSYS_GETSOCKOPT              = 55\n\tSYS_CLONE                   = 56\n\tSYS_FORK                    = 57\n\tSYS_VFORK                   = 58\n\tSYS_EXECVE                  = 59\n\tSYS_EXIT                    = 60\n\tSYS_WAIT4                   = 61\n\tSYS_KILL                    = 62\n\tSYS_UNAME                   = 63\n\tSYS_SEMGET                  = 64\n\tSYS_SEMOP                   = 65\n\tSYS_SEMCTL                  = 66\n\tSYS_SHMDT                   = 67\n\tSYS_MSGGET                  = 68\n\tSYS_MSGSND                  = 69\n\tSYS_MSGRCV                  = 70\n\tSYS_MSGCTL                  = 71\n\tSYS_FCNTL                   = 72\n\tSYS_FLOCK                   = 73\n\tSYS_FSYNC                   = 74\n\tSYS_FDATASYNC               = 75\n\tSYS_TRUNCATE                = 76\n\tSYS_FTRUNCATE               = 77\n\tSYS_GETDENTS                = 78\n\tSYS_GETCWD                  = 79\n\tSYS_CHDIR                   = 80\n\tSYS_FCHDIR                  = 81\n\tSYS_RENAME                  = 82\n\tSYS_MKDIR                   = 83\n\tSYS_RMDIR                   = 84\n\tSYS_CREAT                   = 85\n\tSYS_LINK                    = 86\n\tSYS_UNLINK                  = 87\n\tSYS_SYMLINK                 = 88\n\tSYS_READLINK                = 89\n\tSYS_CHMOD                   = 90\n\tSYS_FCHMOD                  = 91\n\tSYS_CHOWN                   = 92\n\tSYS_FCHOWN                  = 93\n\tSYS_LCHOWN                  = 94\n\tSYS_UMASK                   = 95\n\tSYS_GETTIMEOFDAY            = 96\n\tSYS_GETRLIMIT               = 97\n\tSYS_GETRUSAGE               = 98\n\tSYS_SYSINFO                 = 99\n\tSYS_TIMES                   = 100\n\tSYS_PTRACE                  = 101\n\tSYS_GETUID                  = 102\n\tSYS_SYSLOG                  = 103\n\tSYS_GETGID                  = 104\n\tSYS_SETUID                  = 105\n\tSYS_SETGID                  = 106\n\tSYS_GETEUID                 = 107\n\tSYS_GETEGID                 = 108\n\tSYS_SETPGID                 = 109\n\tSYS_GETPPID                 = 110\n\tSYS_GETPGRP                 = 111\n\tSYS_SETSID                  = 112\n\tSYS_SETREUID                = 113\n\tSYS_SETREGID                = 114\n\tSYS_GETGROUPS               = 115\n\tSYS_SETGROUPS               = 116\n\tSYS_SETRESUID               = 117\n\tSYS_GETRESUID               = 118\n\tSYS_SETRESGID               = 119\n\tSYS_GETRESGID               = 120\n\tSYS_GETPGID                 = 121\n\tSYS_SETFSUID                = 122\n\tSYS_SETFSGID                = 123\n\tSYS_GETSID                  = 124\n\tSYS_CAPGET                  = 125\n\tSYS_CAPSET                  = 126\n\tSYS_RT_SIGPENDING           = 127\n\tSYS_RT_SIGTIMEDWAIT         = 128\n\tSYS_RT_SIGQUEUEINFO         = 129\n\tSYS_RT_SIGSUSPEND           = 130\n\tSYS_SIGALTSTACK             = 131\n\tSYS_UTIME                   = 132\n\tSYS_MKNOD                   = 133\n\tSYS_USELIB                  = 134\n\tSYS_PERSONALITY             = 135\n\tSYS_USTAT                   = 136\n\tSYS_STATFS                  = 137\n\tSYS_FSTATFS                 = 138\n\tSYS_SYSFS                   = 139\n\tSYS_GETPRIORITY             = 140\n\tSYS_SETPRIORITY             = 141\n\tSYS_SCHED_SETPARAM          = 142\n\tSYS_SCHED_GETPARAM          = 143\n\tSYS_SCHED_SETSCHEDULER      = 144\n\tSYS_SCHED_GETSCHEDULER      = 145\n\tSYS_SCHED_GET_PRIORITY_MAX  = 146\n\tSYS_SCHED_GET_PRIORITY_MIN  = 147\n\tSYS_SCHED_RR_GET_INTERVAL   = 148\n\tSYS_MLOCK                   = 149\n\tSYS_MUNLOCK                 = 150\n\tSYS_MLOCKALL                = 151\n\tSYS_MUNLOCKALL              = 152\n\tSYS_VHANGUP                 = 153\n\tSYS_MODIFY_LDT              = 154\n\tSYS_PIVOT_ROOT              = 155\n\tSYS__SYSCTL                 = 156\n\tSYS_PRCTL                   = 157\n\tSYS_ARCH_PRCTL              = 158\n\tSYS_ADJTIMEX                = 159\n\tSYS_SETRLIMIT               = 160\n\tSYS_CHROOT                  = 161\n\tSYS_SYNC                    = 162\n\tSYS_ACCT                    = 163\n\tSYS_SETTIMEOFDAY            = 164\n\tSYS_MOUNT                   = 165\n\tSYS_UMOUNT2                 = 166\n\tSYS_SWAPON                  = 167\n\tSYS_SWAPOFF                 = 168\n\tSYS_REBOOT                  = 169\n\tSYS_SETHOSTNAME             = 170\n\tSYS_SETDOMAINNAME           = 171\n\tSYS_IOPL                    = 172\n\tSYS_IOPERM                  = 173\n\tSYS_CREATE_MODULE           = 174\n\tSYS_INIT_MODULE             = 175\n\tSYS_DELETE_MODULE           = 176\n\tSYS_GET_KERNEL_SYMS         = 177\n\tSYS_QUERY_MODULE            = 178\n\tSYS_QUOTACTL                = 179\n\tSYS_NFSSERVCTL              = 180\n\tSYS_GETPMSG                 = 181\n\tSYS_PUTPMSG                 = 182\n\tSYS_AFS_SYSCALL             = 183\n\tSYS_TUXCALL                 = 184\n\tSYS_SECURITY                = 185\n\tSYS_GETTID                  = 186\n\tSYS_READAHEAD               = 187\n\tSYS_SETXATTR                = 188\n\tSYS_LSETXATTR               = 189\n\tSYS_FSETXATTR               = 190\n\tSYS_GETXATTR                = 191\n\tSYS_LGETXATTR               = 192\n\tSYS_FGETXATTR               = 193\n\tSYS_LISTXATTR               = 194\n\tSYS_LLISTXATTR              = 195\n\tSYS_FLISTXATTR              = 196\n\tSYS_REMOVEXATTR             = 197\n\tSYS_LREMOVEXATTR            = 198\n\tSYS_FREMOVEXATTR            = 199\n\tSYS_TKILL                   = 200\n\tSYS_TIME                    = 201\n\tSYS_FUTEX                   = 202\n\tSYS_SCHED_SETAFFINITY       = 203\n\tSYS_SCHED_GETAFFINITY       = 204\n\tSYS_SET_THREAD_AREA         = 205\n\tSYS_IO_SETUP                = 206\n\tSYS_IO_DESTROY              = 207\n\tSYS_IO_GETEVENTS            = 208\n\tSYS_IO_SUBMIT               = 209\n\tSYS_IO_CANCEL               = 210\n\tSYS_GET_THREAD_AREA         = 211\n\tSYS_LOOKUP_DCOOKIE          = 212\n\tSYS_EPOLL_CREATE            = 213\n\tSYS_EPOLL_CTL_OLD           = 214\n\tSYS_EPOLL_WAIT_OLD          = 215\n\tSYS_REMAP_FILE_PAGES        = 216\n\tSYS_GETDENTS64              = 217\n\tSYS_SET_TID_ADDRESS         = 218\n\tSYS_RESTART_SYSCALL         = 219\n\tSYS_SEMTIMEDOP              = 220\n\tSYS_FADVISE64               = 221\n\tSYS_TIMER_CREATE            = 222\n\tSYS_TIMER_SETTIME           = 223\n\tSYS_TIMER_GETTIME           = 224\n\tSYS_TIMER_GETOVERRUN        = 225\n\tSYS_TIMER_DELETE            = 226\n\tSYS_CLOCK_SETTIME           = 227\n\tSYS_CLOCK_GETTIME           = 228\n\tSYS_CLOCK_GETRES            = 229\n\tSYS_CLOCK_NANOSLEEP         = 230\n\tSYS_EXIT_GROUP              = 231\n\tSYS_EPOLL_WAIT              = 232\n\tSYS_EPOLL_CTL               = 233\n\tSYS_TGKILL                  = 234\n\tSYS_UTIMES                  = 235\n\tSYS_VSERVER                 = 236\n\tSYS_MBIND                   = 237\n\tSYS_SET_MEMPOLICY           = 238\n\tSYS_GET_MEMPOLICY           = 239\n\tSYS_MQ_OPEN                 = 240\n\tSYS_MQ_UNLINK               = 241\n\tSYS_MQ_TIMEDSEND            = 242\n\tSYS_MQ_TIMEDRECEIVE         = 243\n\tSYS_MQ_NOTIFY               = 244\n\tSYS_MQ_GETSETATTR           = 245\n\tSYS_KEXEC_LOAD              = 246\n\tSYS_WAITID                  = 247\n\tSYS_ADD_KEY                 = 248\n\tSYS_REQUEST_KEY             = 249\n\tSYS_KEYCTL                  = 250\n\tSYS_IOPRIO_SET              = 251\n\tSYS_IOPRIO_GET              = 252\n\tSYS_INOTIFY_INIT            = 253\n\tSYS_INOTIFY_ADD_WATCH       = 254\n\tSYS_INOTIFY_RM_WATCH        = 255\n\tSYS_MIGRATE_PAGES           = 256\n\tSYS_OPENAT                  = 257\n\tSYS_MKDIRAT                 = 258\n\tSYS_MKNODAT                 = 259\n\tSYS_FCHOWNAT                = 260\n\tSYS_FUTIMESAT               = 261\n\tSYS_NEWFSTATAT              = 262\n\tSYS_UNLINKAT                = 263\n\tSYS_RENAMEAT                = 264\n\tSYS_LINKAT                  = 265\n\tSYS_SYMLINKAT               = 266\n\tSYS_READLINKAT              = 267\n\tSYS_FCHMODAT                = 268\n\tSYS_FACCESSAT               = 269\n\tSYS_PSELECT6                = 270\n\tSYS_PPOLL                   = 271\n\tSYS_UNSHARE                 = 272\n\tSYS_SET_ROBUST_LIST         = 273\n\tSYS_GET_ROBUST_LIST         = 274\n\tSYS_SPLICE                  = 275\n\tSYS_TEE                     = 276\n\tSYS_SYNC_FILE_RANGE         = 277\n\tSYS_VMSPLICE                = 278\n\tSYS_MOVE_PAGES              = 279\n\tSYS_UTIMENSAT               = 280\n\tSYS_EPOLL_PWAIT             = 281\n\tSYS_SIGNALFD                = 282\n\tSYS_TIMERFD_CREATE          = 283\n\tSYS_EVENTFD                 = 284\n\tSYS_FALLOCATE               = 285\n\tSYS_TIMERFD_SETTIME         = 286\n\tSYS_TIMERFD_GETTIME         = 287\n\tSYS_ACCEPT4                 = 288\n\tSYS_SIGNALFD4               = 289\n\tSYS_EVENTFD2                = 290\n\tSYS_EPOLL_CREATE1           = 291\n\tSYS_DUP3                    = 292\n\tSYS_PIPE2                   = 293\n\tSYS_INOTIFY_INIT1           = 294\n\tSYS_PREADV                  = 295\n\tSYS_PWRITEV                 = 296\n\tSYS_RT_TGSIGQUEUEINFO       = 297\n\tSYS_PERF_EVENT_OPEN         = 298\n\tSYS_RECVMMSG                = 299\n\tSYS_FANOTIFY_INIT           = 300\n\tSYS_FANOTIFY_MARK           = 301\n\tSYS_PRLIMIT64               = 302\n\tSYS_NAME_TO_HANDLE_AT       = 303\n\tSYS_OPEN_BY_HANDLE_AT       = 304\n\tSYS_CLOCK_ADJTIME           = 305\n\tSYS_SYNCFS                  = 306\n\tSYS_SENDMMSG                = 307\n\tSYS_SETNS                   = 308\n\tSYS_GETCPU                  = 309\n\tSYS_PROCESS_VM_READV        = 310\n\tSYS_PROCESS_VM_WRITEV       = 311\n\tSYS_KCMP                    = 312\n\tSYS_FINIT_MODULE            = 313\n\tSYS_SCHED_SETATTR           = 314\n\tSYS_SCHED_GETATTR           = 315\n\tSYS_RENAMEAT2               = 316\n\tSYS_SECCOMP                 = 317\n\tSYS_GETRANDOM               = 318\n\tSYS_MEMFD_CREATE            = 319\n\tSYS_KEXEC_FILE_LOAD         = 320\n\tSYS_BPF                     = 321\n\tSYS_EXECVEAT                = 322\n\tSYS_USERFAULTFD             = 323\n\tSYS_MEMBARRIER              = 324\n\tSYS_MLOCK2                  = 325\n\tSYS_COPY_FILE_RANGE         = 326\n\tSYS_PREADV2                 = 327\n\tSYS_PWRITEV2                = 328\n\tSYS_PKEY_MPROTECT           = 329\n\tSYS_PKEY_ALLOC              = 330\n\tSYS_PKEY_FREE               = 331\n\tSYS_STATX                   = 332\n\tSYS_IO_PGETEVENTS           = 333\n\tSYS_RSEQ                    = 334\n\tSYS_URETPROBE               = 335\n\tSYS_PIDFD_SEND_SIGNAL       = 424\n\tSYS_IO_URING_SETUP          = 425\n\tSYS_IO_URING_ENTER          = 426\n\tSYS_IO_URING_REGISTER       = 427\n\tSYS_OPEN_TREE               = 428\n\tSYS_MOVE_MOUNT              = 429\n\tSYS_FSOPEN                  = 430\n\tSYS_FSCONFIG                = 431\n\tSYS_FSMOUNT                 = 432\n\tSYS_FSPICK                  = 433\n\tSYS_PIDFD_OPEN              = 434\n\tSYS_CLONE3                  = 435\n\tSYS_CLOSE_RANGE             = 436\n\tSYS_OPENAT2                 = 437\n\tSYS_PIDFD_GETFD             = 438\n\tSYS_FACCESSAT2              = 439\n\tSYS_PROCESS_MADVISE         = 440\n\tSYS_EPOLL_PWAIT2            = 441\n\tSYS_MOUNT_SETATTR           = 442\n\tSYS_QUOTACTL_FD             = 443\n\tSYS_LANDLOCK_CREATE_RULESET = 444\n\tSYS_LANDLOCK_ADD_RULE       = 445\n\tSYS_LANDLOCK_RESTRICT_SELF  = 446\n\tSYS_MEMFD_SECRET            = 447\n\tSYS_PROCESS_MRELEASE        = 448\n\tSYS_FUTEX_WAITV             = 449\n\tSYS_SET_MEMPOLICY_HOME_NODE = 450\n\tSYS_CACHESTAT               = 451\n\tSYS_FCHMODAT2               = 452\n\tSYS_MAP_SHADOW_STACK        = 453\n\tSYS_FUTEX_WAKE              = 454\n\tSYS_FUTEX_WAIT              = 455\n\tSYS_FUTEX_REQUEUE           = 456\n\tSYS_STATMOUNT               = 457\n\tSYS_LISTMOUNT               = 458\n\tSYS_LSM_GET_SELF_ATTR       = 459\n\tSYS_LSM_SET_SELF_ATTR       = 460\n\tSYS_LSM_LIST_MODULES        = 461\n\tSYS_MSEAL                   = 462\n\tSYS_SETXATTRAT              = 463\n\tSYS_GETXATTRAT              = 464\n\tSYS_LISTXATTRAT             = 465\n\tSYS_REMOVEXATTRAT           = 466\n\tSYS_OPEN_TREE_ATTR          = 467\n)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/arm/include /tmp/arm/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm && linux\n\npackage unix\n\nconst (\n\tSYS_SYSCALL_MASK                 = 0\n\tSYS_RESTART_SYSCALL              = 0\n\tSYS_EXIT                         = 1\n\tSYS_FORK                         = 2\n\tSYS_READ                         = 3\n\tSYS_WRITE                        = 4\n\tSYS_OPEN                         = 5\n\tSYS_CLOSE                        = 6\n\tSYS_CREAT                        = 8\n\tSYS_LINK                         = 9\n\tSYS_UNLINK                       = 10\n\tSYS_EXECVE                       = 11\n\tSYS_CHDIR                        = 12\n\tSYS_MKNOD                        = 14\n\tSYS_CHMOD                        = 15\n\tSYS_LCHOWN                       = 16\n\tSYS_LSEEK                        = 19\n\tSYS_GETPID                       = 20\n\tSYS_MOUNT                        = 21\n\tSYS_SETUID                       = 23\n\tSYS_GETUID                       = 24\n\tSYS_PTRACE                       = 26\n\tSYS_PAUSE                        = 29\n\tSYS_ACCESS                       = 33\n\tSYS_NICE                         = 34\n\tSYS_SYNC                         = 36\n\tSYS_KILL                         = 37\n\tSYS_RENAME                       = 38\n\tSYS_MKDIR                        = 39\n\tSYS_RMDIR                        = 40\n\tSYS_DUP                          = 41\n\tSYS_PIPE                         = 42\n\tSYS_TIMES                        = 43\n\tSYS_BRK                          = 45\n\tSYS_SETGID                       = 46\n\tSYS_GETGID                       = 47\n\tSYS_GETEUID                      = 49\n\tSYS_GETEGID                      = 50\n\tSYS_ACCT                         = 51\n\tSYS_UMOUNT2                      = 52\n\tSYS_IOCTL                        = 54\n\tSYS_FCNTL                        = 55\n\tSYS_SETPGID                      = 57\n\tSYS_UMASK                        = 60\n\tSYS_CHROOT                       = 61\n\tSYS_USTAT                        = 62\n\tSYS_DUP2                         = 63\n\tSYS_GETPPID                      = 64\n\tSYS_GETPGRP                      = 65\n\tSYS_SETSID                       = 66\n\tSYS_SIGACTION                    = 67\n\tSYS_SETREUID                     = 70\n\tSYS_SETREGID                     = 71\n\tSYS_SIGSUSPEND                   = 72\n\tSYS_SIGPENDING                   = 73\n\tSYS_SETHOSTNAME                  = 74\n\tSYS_SETRLIMIT                    = 75\n\tSYS_GETRUSAGE                    = 77\n\tSYS_GETTIMEOFDAY                 = 78\n\tSYS_SETTIMEOFDAY                 = 79\n\tSYS_GETGROUPS                    = 80\n\tSYS_SETGROUPS                    = 81\n\tSYS_SYMLINK                      = 83\n\tSYS_READLINK                     = 85\n\tSYS_USELIB                       = 86\n\tSYS_SWAPON                       = 87\n\tSYS_REBOOT                       = 88\n\tSYS_MUNMAP                       = 91\n\tSYS_TRUNCATE                     = 92\n\tSYS_FTRUNCATE                    = 93\n\tSYS_FCHMOD                       = 94\n\tSYS_FCHOWN                       = 95\n\tSYS_GETPRIORITY                  = 96\n\tSYS_SETPRIORITY                  = 97\n\tSYS_STATFS                       = 99\n\tSYS_FSTATFS                      = 100\n\tSYS_SYSLOG                       = 103\n\tSYS_SETITIMER                    = 104\n\tSYS_GETITIMER                    = 105\n\tSYS_STAT                         = 106\n\tSYS_LSTAT                        = 107\n\tSYS_FSTAT                        = 108\n\tSYS_VHANGUP                      = 111\n\tSYS_WAIT4                        = 114\n\tSYS_SWAPOFF                      = 115\n\tSYS_SYSINFO                      = 116\n\tSYS_FSYNC                        = 118\n\tSYS_SIGRETURN                    = 119\n\tSYS_CLONE                        = 120\n\tSYS_SETDOMAINNAME                = 121\n\tSYS_UNAME                        = 122\n\tSYS_ADJTIMEX                     = 124\n\tSYS_MPROTECT                     = 125\n\tSYS_SIGPROCMASK                  = 126\n\tSYS_INIT_MODULE                  = 128\n\tSYS_DELETE_MODULE                = 129\n\tSYS_QUOTACTL                     = 131\n\tSYS_GETPGID                      = 132\n\tSYS_FCHDIR                       = 133\n\tSYS_BDFLUSH                      = 134\n\tSYS_SYSFS                        = 135\n\tSYS_PERSONALITY                  = 136\n\tSYS_SETFSUID                     = 138\n\tSYS_SETFSGID                     = 139\n\tSYS__LLSEEK                      = 140\n\tSYS_GETDENTS                     = 141\n\tSYS__NEWSELECT                   = 142\n\tSYS_FLOCK                        = 143\n\tSYS_MSYNC                        = 144\n\tSYS_READV                        = 145\n\tSYS_WRITEV                       = 146\n\tSYS_GETSID                       = 147\n\tSYS_FDATASYNC                    = 148\n\tSYS__SYSCTL                      = 149\n\tSYS_MLOCK                        = 150\n\tSYS_MUNLOCK                      = 151\n\tSYS_MLOCKALL                     = 152\n\tSYS_MUNLOCKALL                   = 153\n\tSYS_SCHED_SETPARAM               = 154\n\tSYS_SCHED_GETPARAM               = 155\n\tSYS_SCHED_SETSCHEDULER           = 156\n\tSYS_SCHED_GETSCHEDULER           = 157\n\tSYS_SCHED_YIELD                  = 158\n\tSYS_SCHED_GET_PRIORITY_MAX       = 159\n\tSYS_SCHED_GET_PRIORITY_MIN       = 160\n\tSYS_SCHED_RR_GET_INTERVAL        = 161\n\tSYS_NANOSLEEP                    = 162\n\tSYS_MREMAP                       = 163\n\tSYS_SETRESUID                    = 164\n\tSYS_GETRESUID                    = 165\n\tSYS_POLL                         = 168\n\tSYS_NFSSERVCTL                   = 169\n\tSYS_SETRESGID                    = 170\n\tSYS_GETRESGID                    = 171\n\tSYS_PRCTL                        = 172\n\tSYS_RT_SIGRETURN                 = 173\n\tSYS_RT_SIGACTION                 = 174\n\tSYS_RT_SIGPROCMASK               = 175\n\tSYS_RT_SIGPENDING                = 176\n\tSYS_RT_SIGTIMEDWAIT              = 177\n\tSYS_RT_SIGQUEUEINFO              = 178\n\tSYS_RT_SIGSUSPEND                = 179\n\tSYS_PREAD64                      = 180\n\tSYS_PWRITE64                     = 181\n\tSYS_CHOWN                        = 182\n\tSYS_GETCWD                       = 183\n\tSYS_CAPGET                       = 184\n\tSYS_CAPSET                       = 185\n\tSYS_SIGALTSTACK                  = 186\n\tSYS_SENDFILE                     = 187\n\tSYS_VFORK                        = 190\n\tSYS_UGETRLIMIT                   = 191\n\tSYS_MMAP2                        = 192\n\tSYS_TRUNCATE64                   = 193\n\tSYS_FTRUNCATE64                  = 194\n\tSYS_STAT64                       = 195\n\tSYS_LSTAT64                      = 196\n\tSYS_FSTAT64                      = 197\n\tSYS_LCHOWN32                     = 198\n\tSYS_GETUID32                     = 199\n\tSYS_GETGID32                     = 200\n\tSYS_GETEUID32                    = 201\n\tSYS_GETEGID32                    = 202\n\tSYS_SETREUID32                   = 203\n\tSYS_SETREGID32                   = 204\n\tSYS_GETGROUPS32                  = 205\n\tSYS_SETGROUPS32                  = 206\n\tSYS_FCHOWN32                     = 207\n\tSYS_SETRESUID32                  = 208\n\tSYS_GETRESUID32                  = 209\n\tSYS_SETRESGID32                  = 210\n\tSYS_GETRESGID32                  = 211\n\tSYS_CHOWN32                      = 212\n\tSYS_SETUID32                     = 213\n\tSYS_SETGID32                     = 214\n\tSYS_SETFSUID32                   = 215\n\tSYS_SETFSGID32                   = 216\n\tSYS_GETDENTS64                   = 217\n\tSYS_PIVOT_ROOT                   = 218\n\tSYS_MINCORE                      = 219\n\tSYS_MADVISE                      = 220\n\tSYS_FCNTL64                      = 221\n\tSYS_GETTID                       = 224\n\tSYS_READAHEAD                    = 225\n\tSYS_SETXATTR                     = 226\n\tSYS_LSETXATTR                    = 227\n\tSYS_FSETXATTR                    = 228\n\tSYS_GETXATTR                     = 229\n\tSYS_LGETXATTR                    = 230\n\tSYS_FGETXATTR                    = 231\n\tSYS_LISTXATTR                    = 232\n\tSYS_LLISTXATTR                   = 233\n\tSYS_FLISTXATTR                   = 234\n\tSYS_REMOVEXATTR                  = 235\n\tSYS_LREMOVEXATTR                 = 236\n\tSYS_FREMOVEXATTR                 = 237\n\tSYS_TKILL                        = 238\n\tSYS_SENDFILE64                   = 239\n\tSYS_FUTEX                        = 240\n\tSYS_SCHED_SETAFFINITY            = 241\n\tSYS_SCHED_GETAFFINITY            = 242\n\tSYS_IO_SETUP                     = 243\n\tSYS_IO_DESTROY                   = 244\n\tSYS_IO_GETEVENTS                 = 245\n\tSYS_IO_SUBMIT                    = 246\n\tSYS_IO_CANCEL                    = 247\n\tSYS_EXIT_GROUP                   = 248\n\tSYS_LOOKUP_DCOOKIE               = 249\n\tSYS_EPOLL_CREATE                 = 250\n\tSYS_EPOLL_CTL                    = 251\n\tSYS_EPOLL_WAIT                   = 252\n\tSYS_REMAP_FILE_PAGES             = 253\n\tSYS_SET_TID_ADDRESS              = 256\n\tSYS_TIMER_CREATE                 = 257\n\tSYS_TIMER_SETTIME                = 258\n\tSYS_TIMER_GETTIME                = 259\n\tSYS_TIMER_GETOVERRUN             = 260\n\tSYS_TIMER_DELETE                 = 261\n\tSYS_CLOCK_SETTIME                = 262\n\tSYS_CLOCK_GETTIME                = 263\n\tSYS_CLOCK_GETRES                 = 264\n\tSYS_CLOCK_NANOSLEEP              = 265\n\tSYS_STATFS64                     = 266\n\tSYS_FSTATFS64                    = 267\n\tSYS_TGKILL                       = 268\n\tSYS_UTIMES                       = 269\n\tSYS_ARM_FADVISE64_64             = 270\n\tSYS_PCICONFIG_IOBASE             = 271\n\tSYS_PCICONFIG_READ               = 272\n\tSYS_PCICONFIG_WRITE              = 273\n\tSYS_MQ_OPEN                      = 274\n\tSYS_MQ_UNLINK                    = 275\n\tSYS_MQ_TIMEDSEND                 = 276\n\tSYS_MQ_TIMEDRECEIVE              = 277\n\tSYS_MQ_NOTIFY                    = 278\n\tSYS_MQ_GETSETATTR                = 279\n\tSYS_WAITID                       = 280\n\tSYS_SOCKET                       = 281\n\tSYS_BIND                         = 282\n\tSYS_CONNECT                      = 283\n\tSYS_LISTEN                       = 284\n\tSYS_ACCEPT                       = 285\n\tSYS_GETSOCKNAME                  = 286\n\tSYS_GETPEERNAME                  = 287\n\tSYS_SOCKETPAIR                   = 288\n\tSYS_SEND                         = 289\n\tSYS_SENDTO                       = 290\n\tSYS_RECV                         = 291\n\tSYS_RECVFROM                     = 292\n\tSYS_SHUTDOWN                     = 293\n\tSYS_SETSOCKOPT                   = 294\n\tSYS_GETSOCKOPT                   = 295\n\tSYS_SENDMSG                      = 296\n\tSYS_RECVMSG                      = 297\n\tSYS_SEMOP                        = 298\n\tSYS_SEMGET                       = 299\n\tSYS_SEMCTL                       = 300\n\tSYS_MSGSND                       = 301\n\tSYS_MSGRCV                       = 302\n\tSYS_MSGGET                       = 303\n\tSYS_MSGCTL                       = 304\n\tSYS_SHMAT                        = 305\n\tSYS_SHMDT                        = 306\n\tSYS_SHMGET                       = 307\n\tSYS_SHMCTL                       = 308\n\tSYS_ADD_KEY                      = 309\n\tSYS_REQUEST_KEY                  = 310\n\tSYS_KEYCTL                       = 311\n\tSYS_SEMTIMEDOP                   = 312\n\tSYS_VSERVER                      = 313\n\tSYS_IOPRIO_SET                   = 314\n\tSYS_IOPRIO_GET                   = 315\n\tSYS_INOTIFY_INIT                 = 316\n\tSYS_INOTIFY_ADD_WATCH            = 317\n\tSYS_INOTIFY_RM_WATCH             = 318\n\tSYS_MBIND                        = 319\n\tSYS_GET_MEMPOLICY                = 320\n\tSYS_SET_MEMPOLICY                = 321\n\tSYS_OPENAT                       = 322\n\tSYS_MKDIRAT                      = 323\n\tSYS_MKNODAT                      = 324\n\tSYS_FCHOWNAT                     = 325\n\tSYS_FUTIMESAT                    = 326\n\tSYS_FSTATAT64                    = 327\n\tSYS_UNLINKAT                     = 328\n\tSYS_RENAMEAT                     = 329\n\tSYS_LINKAT                       = 330\n\tSYS_SYMLINKAT                    = 331\n\tSYS_READLINKAT                   = 332\n\tSYS_FCHMODAT                     = 333\n\tSYS_FACCESSAT                    = 334\n\tSYS_PSELECT6                     = 335\n\tSYS_PPOLL                        = 336\n\tSYS_UNSHARE                      = 337\n\tSYS_SET_ROBUST_LIST              = 338\n\tSYS_GET_ROBUST_LIST              = 339\n\tSYS_SPLICE                       = 340\n\tSYS_ARM_SYNC_FILE_RANGE          = 341\n\tSYS_TEE                          = 342\n\tSYS_VMSPLICE                     = 343\n\tSYS_MOVE_PAGES                   = 344\n\tSYS_GETCPU                       = 345\n\tSYS_EPOLL_PWAIT                  = 346\n\tSYS_KEXEC_LOAD                   = 347\n\tSYS_UTIMENSAT                    = 348\n\tSYS_SIGNALFD                     = 349\n\tSYS_TIMERFD_CREATE               = 350\n\tSYS_EVENTFD                      = 351\n\tSYS_FALLOCATE                    = 352\n\tSYS_TIMERFD_SETTIME              = 353\n\tSYS_TIMERFD_GETTIME              = 354\n\tSYS_SIGNALFD4                    = 355\n\tSYS_EVENTFD2                     = 356\n\tSYS_EPOLL_CREATE1                = 357\n\tSYS_DUP3                         = 358\n\tSYS_PIPE2                        = 359\n\tSYS_INOTIFY_INIT1                = 360\n\tSYS_PREADV                       = 361\n\tSYS_PWRITEV                      = 362\n\tSYS_RT_TGSIGQUEUEINFO            = 363\n\tSYS_PERF_EVENT_OPEN              = 364\n\tSYS_RECVMMSG                     = 365\n\tSYS_ACCEPT4                      = 366\n\tSYS_FANOTIFY_INIT                = 367\n\tSYS_FANOTIFY_MARK                = 368\n\tSYS_PRLIMIT64                    = 369\n\tSYS_NAME_TO_HANDLE_AT            = 370\n\tSYS_OPEN_BY_HANDLE_AT            = 371\n\tSYS_CLOCK_ADJTIME                = 372\n\tSYS_SYNCFS                       = 373\n\tSYS_SENDMMSG                     = 374\n\tSYS_SETNS                        = 375\n\tSYS_PROCESS_VM_READV             = 376\n\tSYS_PROCESS_VM_WRITEV            = 377\n\tSYS_KCMP                         = 378\n\tSYS_FINIT_MODULE                 = 379\n\tSYS_SCHED_SETATTR                = 380\n\tSYS_SCHED_GETATTR                = 381\n\tSYS_RENAMEAT2                    = 382\n\tSYS_SECCOMP                      = 383\n\tSYS_GETRANDOM                    = 384\n\tSYS_MEMFD_CREATE                 = 385\n\tSYS_BPF                          = 386\n\tSYS_EXECVEAT                     = 387\n\tSYS_USERFAULTFD                  = 388\n\tSYS_MEMBARRIER                   = 389\n\tSYS_MLOCK2                       = 390\n\tSYS_COPY_FILE_RANGE              = 391\n\tSYS_PREADV2                      = 392\n\tSYS_PWRITEV2                     = 393\n\tSYS_PKEY_MPROTECT                = 394\n\tSYS_PKEY_ALLOC                   = 395\n\tSYS_PKEY_FREE                    = 396\n\tSYS_STATX                        = 397\n\tSYS_RSEQ                         = 398\n\tSYS_IO_PGETEVENTS                = 399\n\tSYS_MIGRATE_PAGES                = 400\n\tSYS_KEXEC_FILE_LOAD              = 401\n\tSYS_CLOCK_GETTIME64              = 403\n\tSYS_CLOCK_SETTIME64              = 404\n\tSYS_CLOCK_ADJTIME64              = 405\n\tSYS_CLOCK_GETRES_TIME64          = 406\n\tSYS_CLOCK_NANOSLEEP_TIME64       = 407\n\tSYS_TIMER_GETTIME64              = 408\n\tSYS_TIMER_SETTIME64              = 409\n\tSYS_TIMERFD_GETTIME64            = 410\n\tSYS_TIMERFD_SETTIME64            = 411\n\tSYS_UTIMENSAT_TIME64             = 412\n\tSYS_PSELECT6_TIME64              = 413\n\tSYS_PPOLL_TIME64                 = 414\n\tSYS_IO_PGETEVENTS_TIME64         = 416\n\tSYS_RECVMMSG_TIME64              = 417\n\tSYS_MQ_TIMEDSEND_TIME64          = 418\n\tSYS_MQ_TIMEDRECEIVE_TIME64       = 419\n\tSYS_SEMTIMEDOP_TIME64            = 420\n\tSYS_RT_SIGTIMEDWAIT_TIME64       = 421\n\tSYS_FUTEX_TIME64                 = 422\n\tSYS_SCHED_RR_GET_INTERVAL_TIME64 = 423\n\tSYS_PIDFD_SEND_SIGNAL            = 424\n\tSYS_IO_URING_SETUP               = 425\n\tSYS_IO_URING_ENTER               = 426\n\tSYS_IO_URING_REGISTER            = 427\n\tSYS_OPEN_TREE                    = 428\n\tSYS_MOVE_MOUNT                   = 429\n\tSYS_FSOPEN                       = 430\n\tSYS_FSCONFIG                     = 431\n\tSYS_FSMOUNT                      = 432\n\tSYS_FSPICK                       = 433\n\tSYS_PIDFD_OPEN                   = 434\n\tSYS_CLONE3                       = 435\n\tSYS_CLOSE_RANGE                  = 436\n\tSYS_OPENAT2                      = 437\n\tSYS_PIDFD_GETFD                  = 438\n\tSYS_FACCESSAT2                   = 439\n\tSYS_PROCESS_MADVISE              = 440\n\tSYS_EPOLL_PWAIT2                 = 441\n\tSYS_MOUNT_SETATTR                = 442\n\tSYS_QUOTACTL_FD                  = 443\n\tSYS_LANDLOCK_CREATE_RULESET      = 444\n\tSYS_LANDLOCK_ADD_RULE            = 445\n\tSYS_LANDLOCK_RESTRICT_SELF       = 446\n\tSYS_PROCESS_MRELEASE             = 448\n\tSYS_FUTEX_WAITV                  = 449\n\tSYS_SET_MEMPOLICY_HOME_NODE      = 450\n\tSYS_CACHESTAT                    = 451\n\tSYS_FCHMODAT2                    = 452\n\tSYS_MAP_SHADOW_STACK             = 453\n\tSYS_FUTEX_WAKE                   = 454\n\tSYS_FUTEX_WAIT                   = 455\n\tSYS_FUTEX_REQUEUE                = 456\n\tSYS_STATMOUNT                    = 457\n\tSYS_LISTMOUNT                    = 458\n\tSYS_LSM_GET_SELF_ATTR            = 459\n\tSYS_LSM_SET_SELF_ATTR            = 460\n\tSYS_LSM_LIST_MODULES             = 461\n\tSYS_MSEAL                        = 462\n\tSYS_SETXATTRAT                   = 463\n\tSYS_GETXATTRAT                   = 464\n\tSYS_LISTXATTRAT                  = 465\n\tSYS_REMOVEXATTRAT                = 466\n\tSYS_OPEN_TREE_ATTR               = 467\n)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/arm64/include -fsigned-char /tmp/arm64/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && linux\n\npackage unix\n\nconst (\n\tSYS_IO_SETUP                = 0\n\tSYS_IO_DESTROY              = 1\n\tSYS_IO_SUBMIT               = 2\n\tSYS_IO_CANCEL               = 3\n\tSYS_IO_GETEVENTS            = 4\n\tSYS_SETXATTR                = 5\n\tSYS_LSETXATTR               = 6\n\tSYS_FSETXATTR               = 7\n\tSYS_GETXATTR                = 8\n\tSYS_LGETXATTR               = 9\n\tSYS_FGETXATTR               = 10\n\tSYS_LISTXATTR               = 11\n\tSYS_LLISTXATTR              = 12\n\tSYS_FLISTXATTR              = 13\n\tSYS_REMOVEXATTR             = 14\n\tSYS_LREMOVEXATTR            = 15\n\tSYS_FREMOVEXATTR            = 16\n\tSYS_GETCWD                  = 17\n\tSYS_LOOKUP_DCOOKIE          = 18\n\tSYS_EVENTFD2                = 19\n\tSYS_EPOLL_CREATE1           = 20\n\tSYS_EPOLL_CTL               = 21\n\tSYS_EPOLL_PWAIT             = 22\n\tSYS_DUP                     = 23\n\tSYS_DUP3                    = 24\n\tSYS_FCNTL                   = 25\n\tSYS_INOTIFY_INIT1           = 26\n\tSYS_INOTIFY_ADD_WATCH       = 27\n\tSYS_INOTIFY_RM_WATCH        = 28\n\tSYS_IOCTL                   = 29\n\tSYS_IOPRIO_SET              = 30\n\tSYS_IOPRIO_GET              = 31\n\tSYS_FLOCK                   = 32\n\tSYS_MKNODAT                 = 33\n\tSYS_MKDIRAT                 = 34\n\tSYS_UNLINKAT                = 35\n\tSYS_SYMLINKAT               = 36\n\tSYS_LINKAT                  = 37\n\tSYS_RENAMEAT                = 38\n\tSYS_UMOUNT2                 = 39\n\tSYS_MOUNT                   = 40\n\tSYS_PIVOT_ROOT              = 41\n\tSYS_NFSSERVCTL              = 42\n\tSYS_STATFS                  = 43\n\tSYS_FSTATFS                 = 44\n\tSYS_TRUNCATE                = 45\n\tSYS_FTRUNCATE               = 46\n\tSYS_FALLOCATE               = 47\n\tSYS_FACCESSAT               = 48\n\tSYS_CHDIR                   = 49\n\tSYS_FCHDIR                  = 50\n\tSYS_CHROOT                  = 51\n\tSYS_FCHMOD                  = 52\n\tSYS_FCHMODAT                = 53\n\tSYS_FCHOWNAT                = 54\n\tSYS_FCHOWN                  = 55\n\tSYS_OPENAT                  = 56\n\tSYS_CLOSE                   = 57\n\tSYS_VHANGUP                 = 58\n\tSYS_PIPE2                   = 59\n\tSYS_QUOTACTL                = 60\n\tSYS_GETDENTS64              = 61\n\tSYS_LSEEK                   = 62\n\tSYS_READ                    = 63\n\tSYS_WRITE                   = 64\n\tSYS_READV                   = 65\n\tSYS_WRITEV                  = 66\n\tSYS_PREAD64                 = 67\n\tSYS_PWRITE64                = 68\n\tSYS_PREADV                  = 69\n\tSYS_PWRITEV                 = 70\n\tSYS_SENDFILE                = 71\n\tSYS_PSELECT6                = 72\n\tSYS_PPOLL                   = 73\n\tSYS_SIGNALFD4               = 74\n\tSYS_VMSPLICE                = 75\n\tSYS_SPLICE                  = 76\n\tSYS_TEE                     = 77\n\tSYS_READLINKAT              = 78\n\tSYS_NEWFSTATAT              = 79\n\tSYS_FSTAT                   = 80\n\tSYS_SYNC                    = 81\n\tSYS_FSYNC                   = 82\n\tSYS_FDATASYNC               = 83\n\tSYS_SYNC_FILE_RANGE         = 84\n\tSYS_TIMERFD_CREATE          = 85\n\tSYS_TIMERFD_SETTIME         = 86\n\tSYS_TIMERFD_GETTIME         = 87\n\tSYS_UTIMENSAT               = 88\n\tSYS_ACCT                    = 89\n\tSYS_CAPGET                  = 90\n\tSYS_CAPSET                  = 91\n\tSYS_PERSONALITY             = 92\n\tSYS_EXIT                    = 93\n\tSYS_EXIT_GROUP              = 94\n\tSYS_WAITID                  = 95\n\tSYS_SET_TID_ADDRESS         = 96\n\tSYS_UNSHARE                 = 97\n\tSYS_FUTEX                   = 98\n\tSYS_SET_ROBUST_LIST         = 99\n\tSYS_GET_ROBUST_LIST         = 100\n\tSYS_NANOSLEEP               = 101\n\tSYS_GETITIMER               = 102\n\tSYS_SETITIMER               = 103\n\tSYS_KEXEC_LOAD              = 104\n\tSYS_INIT_MODULE             = 105\n\tSYS_DELETE_MODULE           = 106\n\tSYS_TIMER_CREATE            = 107\n\tSYS_TIMER_GETTIME           = 108\n\tSYS_TIMER_GETOVERRUN        = 109\n\tSYS_TIMER_SETTIME           = 110\n\tSYS_TIMER_DELETE            = 111\n\tSYS_CLOCK_SETTIME           = 112\n\tSYS_CLOCK_GETTIME           = 113\n\tSYS_CLOCK_GETRES            = 114\n\tSYS_CLOCK_NANOSLEEP         = 115\n\tSYS_SYSLOG                  = 116\n\tSYS_PTRACE                  = 117\n\tSYS_SCHED_SETPARAM          = 118\n\tSYS_SCHED_SETSCHEDULER      = 119\n\tSYS_SCHED_GETSCHEDULER      = 120\n\tSYS_SCHED_GETPARAM          = 121\n\tSYS_SCHED_SETAFFINITY       = 122\n\tSYS_SCHED_GETAFFINITY       = 123\n\tSYS_SCHED_YIELD             = 124\n\tSYS_SCHED_GET_PRIORITY_MAX  = 125\n\tSYS_SCHED_GET_PRIORITY_MIN  = 126\n\tSYS_SCHED_RR_GET_INTERVAL   = 127\n\tSYS_RESTART_SYSCALL         = 128\n\tSYS_KILL                    = 129\n\tSYS_TKILL                   = 130\n\tSYS_TGKILL                  = 131\n\tSYS_SIGALTSTACK             = 132\n\tSYS_RT_SIGSUSPEND           = 133\n\tSYS_RT_SIGACTION            = 134\n\tSYS_RT_SIGPROCMASK          = 135\n\tSYS_RT_SIGPENDING           = 136\n\tSYS_RT_SIGTIMEDWAIT         = 137\n\tSYS_RT_SIGQUEUEINFO         = 138\n\tSYS_RT_SIGRETURN            = 139\n\tSYS_SETPRIORITY             = 140\n\tSYS_GETPRIORITY             = 141\n\tSYS_REBOOT                  = 142\n\tSYS_SETREGID                = 143\n\tSYS_SETGID                  = 144\n\tSYS_SETREUID                = 145\n\tSYS_SETUID                  = 146\n\tSYS_SETRESUID               = 147\n\tSYS_GETRESUID               = 148\n\tSYS_SETRESGID               = 149\n\tSYS_GETRESGID               = 150\n\tSYS_SETFSUID                = 151\n\tSYS_SETFSGID                = 152\n\tSYS_TIMES                   = 153\n\tSYS_SETPGID                 = 154\n\tSYS_GETPGID                 = 155\n\tSYS_GETSID                  = 156\n\tSYS_SETSID                  = 157\n\tSYS_GETGROUPS               = 158\n\tSYS_SETGROUPS               = 159\n\tSYS_UNAME                   = 160\n\tSYS_SETHOSTNAME             = 161\n\tSYS_SETDOMAINNAME           = 162\n\tSYS_GETRLIMIT               = 163\n\tSYS_SETRLIMIT               = 164\n\tSYS_GETRUSAGE               = 165\n\tSYS_UMASK                   = 166\n\tSYS_PRCTL                   = 167\n\tSYS_GETCPU                  = 168\n\tSYS_GETTIMEOFDAY            = 169\n\tSYS_SETTIMEOFDAY            = 170\n\tSYS_ADJTIMEX                = 171\n\tSYS_GETPID                  = 172\n\tSYS_GETPPID                 = 173\n\tSYS_GETUID                  = 174\n\tSYS_GETEUID                 = 175\n\tSYS_GETGID                  = 176\n\tSYS_GETEGID                 = 177\n\tSYS_GETTID                  = 178\n\tSYS_SYSINFO                 = 179\n\tSYS_MQ_OPEN                 = 180\n\tSYS_MQ_UNLINK               = 181\n\tSYS_MQ_TIMEDSEND            = 182\n\tSYS_MQ_TIMEDRECEIVE         = 183\n\tSYS_MQ_NOTIFY               = 184\n\tSYS_MQ_GETSETATTR           = 185\n\tSYS_MSGGET                  = 186\n\tSYS_MSGCTL                  = 187\n\tSYS_MSGRCV                  = 188\n\tSYS_MSGSND                  = 189\n\tSYS_SEMGET                  = 190\n\tSYS_SEMCTL                  = 191\n\tSYS_SEMTIMEDOP              = 192\n\tSYS_SEMOP                   = 193\n\tSYS_SHMGET                  = 194\n\tSYS_SHMCTL                  = 195\n\tSYS_SHMAT                   = 196\n\tSYS_SHMDT                   = 197\n\tSYS_SOCKET                  = 198\n\tSYS_SOCKETPAIR              = 199\n\tSYS_BIND                    = 200\n\tSYS_LISTEN                  = 201\n\tSYS_ACCEPT                  = 202\n\tSYS_CONNECT                 = 203\n\tSYS_GETSOCKNAME             = 204\n\tSYS_GETPEERNAME             = 205\n\tSYS_SENDTO                  = 206\n\tSYS_RECVFROM                = 207\n\tSYS_SETSOCKOPT              = 208\n\tSYS_GETSOCKOPT              = 209\n\tSYS_SHUTDOWN                = 210\n\tSYS_SENDMSG                 = 211\n\tSYS_RECVMSG                 = 212\n\tSYS_READAHEAD               = 213\n\tSYS_BRK                     = 214\n\tSYS_MUNMAP                  = 215\n\tSYS_MREMAP                  = 216\n\tSYS_ADD_KEY                 = 217\n\tSYS_REQUEST_KEY             = 218\n\tSYS_KEYCTL                  = 219\n\tSYS_CLONE                   = 220\n\tSYS_EXECVE                  = 221\n\tSYS_MMAP                    = 222\n\tSYS_FADVISE64               = 223\n\tSYS_SWAPON                  = 224\n\tSYS_SWAPOFF                 = 225\n\tSYS_MPROTECT                = 226\n\tSYS_MSYNC                   = 227\n\tSYS_MLOCK                   = 228\n\tSYS_MUNLOCK                 = 229\n\tSYS_MLOCKALL                = 230\n\tSYS_MUNLOCKALL              = 231\n\tSYS_MINCORE                 = 232\n\tSYS_MADVISE                 = 233\n\tSYS_REMAP_FILE_PAGES        = 234\n\tSYS_MBIND                   = 235\n\tSYS_GET_MEMPOLICY           = 236\n\tSYS_SET_MEMPOLICY           = 237\n\tSYS_MIGRATE_PAGES           = 238\n\tSYS_MOVE_PAGES              = 239\n\tSYS_RT_TGSIGQUEUEINFO       = 240\n\tSYS_PERF_EVENT_OPEN         = 241\n\tSYS_ACCEPT4                 = 242\n\tSYS_RECVMMSG                = 243\n\tSYS_ARCH_SPECIFIC_SYSCALL   = 244\n\tSYS_WAIT4                   = 260\n\tSYS_PRLIMIT64               = 261\n\tSYS_FANOTIFY_INIT           = 262\n\tSYS_FANOTIFY_MARK           = 263\n\tSYS_NAME_TO_HANDLE_AT       = 264\n\tSYS_OPEN_BY_HANDLE_AT       = 265\n\tSYS_CLOCK_ADJTIME           = 266\n\tSYS_SYNCFS                  = 267\n\tSYS_SETNS                   = 268\n\tSYS_SENDMMSG                = 269\n\tSYS_PROCESS_VM_READV        = 270\n\tSYS_PROCESS_VM_WRITEV       = 271\n\tSYS_KCMP                    = 272\n\tSYS_FINIT_MODULE            = 273\n\tSYS_SCHED_SETATTR           = 274\n\tSYS_SCHED_GETATTR           = 275\n\tSYS_RENAMEAT2               = 276\n\tSYS_SECCOMP                 = 277\n\tSYS_GETRANDOM               = 278\n\tSYS_MEMFD_CREATE            = 279\n\tSYS_BPF                     = 280\n\tSYS_EXECVEAT                = 281\n\tSYS_USERFAULTFD             = 282\n\tSYS_MEMBARRIER              = 283\n\tSYS_MLOCK2                  = 284\n\tSYS_COPY_FILE_RANGE         = 285\n\tSYS_PREADV2                 = 286\n\tSYS_PWRITEV2                = 287\n\tSYS_PKEY_MPROTECT           = 288\n\tSYS_PKEY_ALLOC              = 289\n\tSYS_PKEY_FREE               = 290\n\tSYS_STATX                   = 291\n\tSYS_IO_PGETEVENTS           = 292\n\tSYS_RSEQ                    = 293\n\tSYS_KEXEC_FILE_LOAD         = 294\n\tSYS_PIDFD_SEND_SIGNAL       = 424\n\tSYS_IO_URING_SETUP          = 425\n\tSYS_IO_URING_ENTER          = 426\n\tSYS_IO_URING_REGISTER       = 427\n\tSYS_OPEN_TREE               = 428\n\tSYS_MOVE_MOUNT              = 429\n\tSYS_FSOPEN                  = 430\n\tSYS_FSCONFIG                = 431\n\tSYS_FSMOUNT                 = 432\n\tSYS_FSPICK                  = 433\n\tSYS_PIDFD_OPEN              = 434\n\tSYS_CLONE3                  = 435\n\tSYS_CLOSE_RANGE             = 436\n\tSYS_OPENAT2                 = 437\n\tSYS_PIDFD_GETFD             = 438\n\tSYS_FACCESSAT2              = 439\n\tSYS_PROCESS_MADVISE         = 440\n\tSYS_EPOLL_PWAIT2            = 441\n\tSYS_MOUNT_SETATTR           = 442\n\tSYS_QUOTACTL_FD             = 443\n\tSYS_LANDLOCK_CREATE_RULESET = 444\n\tSYS_LANDLOCK_ADD_RULE       = 445\n\tSYS_LANDLOCK_RESTRICT_SELF  = 446\n\tSYS_MEMFD_SECRET            = 447\n\tSYS_PROCESS_MRELEASE        = 448\n\tSYS_FUTEX_WAITV             = 449\n\tSYS_SET_MEMPOLICY_HOME_NODE = 450\n\tSYS_CACHESTAT               = 451\n\tSYS_FCHMODAT2               = 452\n\tSYS_MAP_SHADOW_STACK        = 453\n\tSYS_FUTEX_WAKE              = 454\n\tSYS_FUTEX_WAIT              = 455\n\tSYS_FUTEX_REQUEUE           = 456\n\tSYS_STATMOUNT               = 457\n\tSYS_LISTMOUNT               = 458\n\tSYS_LSM_GET_SELF_ATTR       = 459\n\tSYS_LSM_SET_SELF_ATTR       = 460\n\tSYS_LSM_LIST_MODULES        = 461\n\tSYS_MSEAL                   = 462\n\tSYS_SETXATTRAT              = 463\n\tSYS_GETXATTRAT              = 464\n\tSYS_LISTXATTRAT             = 465\n\tSYS_REMOVEXATTRAT           = 466\n\tSYS_OPEN_TREE_ATTR          = 467\n)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/loong64/include /tmp/loong64/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build loong64 && linux\n\npackage unix\n\nconst (\n\tSYS_IO_SETUP                = 0\n\tSYS_IO_DESTROY              = 1\n\tSYS_IO_SUBMIT               = 2\n\tSYS_IO_CANCEL               = 3\n\tSYS_IO_GETEVENTS            = 4\n\tSYS_SETXATTR                = 5\n\tSYS_LSETXATTR               = 6\n\tSYS_FSETXATTR               = 7\n\tSYS_GETXATTR                = 8\n\tSYS_LGETXATTR               = 9\n\tSYS_FGETXATTR               = 10\n\tSYS_LISTXATTR               = 11\n\tSYS_LLISTXATTR              = 12\n\tSYS_FLISTXATTR              = 13\n\tSYS_REMOVEXATTR             = 14\n\tSYS_LREMOVEXATTR            = 15\n\tSYS_FREMOVEXATTR            = 16\n\tSYS_GETCWD                  = 17\n\tSYS_LOOKUP_DCOOKIE          = 18\n\tSYS_EVENTFD2                = 19\n\tSYS_EPOLL_CREATE1           = 20\n\tSYS_EPOLL_CTL               = 21\n\tSYS_EPOLL_PWAIT             = 22\n\tSYS_DUP                     = 23\n\tSYS_DUP3                    = 24\n\tSYS_FCNTL                   = 25\n\tSYS_INOTIFY_INIT1           = 26\n\tSYS_INOTIFY_ADD_WATCH       = 27\n\tSYS_INOTIFY_RM_WATCH        = 28\n\tSYS_IOCTL                   = 29\n\tSYS_IOPRIO_SET              = 30\n\tSYS_IOPRIO_GET              = 31\n\tSYS_FLOCK                   = 32\n\tSYS_MKNODAT                 = 33\n\tSYS_MKDIRAT                 = 34\n\tSYS_UNLINKAT                = 35\n\tSYS_SYMLINKAT               = 36\n\tSYS_LINKAT                  = 37\n\tSYS_UMOUNT2                 = 39\n\tSYS_MOUNT                   = 40\n\tSYS_PIVOT_ROOT              = 41\n\tSYS_NFSSERVCTL              = 42\n\tSYS_STATFS                  = 43\n\tSYS_FSTATFS                 = 44\n\tSYS_TRUNCATE                = 45\n\tSYS_FTRUNCATE               = 46\n\tSYS_FALLOCATE               = 47\n\tSYS_FACCESSAT               = 48\n\tSYS_CHDIR                   = 49\n\tSYS_FCHDIR                  = 50\n\tSYS_CHROOT                  = 51\n\tSYS_FCHMOD                  = 52\n\tSYS_FCHMODAT                = 53\n\tSYS_FCHOWNAT                = 54\n\tSYS_FCHOWN                  = 55\n\tSYS_OPENAT                  = 56\n\tSYS_CLOSE                   = 57\n\tSYS_VHANGUP                 = 58\n\tSYS_PIPE2                   = 59\n\tSYS_QUOTACTL                = 60\n\tSYS_GETDENTS64              = 61\n\tSYS_LSEEK                   = 62\n\tSYS_READ                    = 63\n\tSYS_WRITE                   = 64\n\tSYS_READV                   = 65\n\tSYS_WRITEV                  = 66\n\tSYS_PREAD64                 = 67\n\tSYS_PWRITE64                = 68\n\tSYS_PREADV                  = 69\n\tSYS_PWRITEV                 = 70\n\tSYS_SENDFILE                = 71\n\tSYS_PSELECT6                = 72\n\tSYS_PPOLL                   = 73\n\tSYS_SIGNALFD4               = 74\n\tSYS_VMSPLICE                = 75\n\tSYS_SPLICE                  = 76\n\tSYS_TEE                     = 77\n\tSYS_READLINKAT              = 78\n\tSYS_NEWFSTATAT              = 79\n\tSYS_FSTAT                   = 80\n\tSYS_SYNC                    = 81\n\tSYS_FSYNC                   = 82\n\tSYS_FDATASYNC               = 83\n\tSYS_SYNC_FILE_RANGE         = 84\n\tSYS_TIMERFD_CREATE          = 85\n\tSYS_TIMERFD_SETTIME         = 86\n\tSYS_TIMERFD_GETTIME         = 87\n\tSYS_UTIMENSAT               = 88\n\tSYS_ACCT                    = 89\n\tSYS_CAPGET                  = 90\n\tSYS_CAPSET                  = 91\n\tSYS_PERSONALITY             = 92\n\tSYS_EXIT                    = 93\n\tSYS_EXIT_GROUP              = 94\n\tSYS_WAITID                  = 95\n\tSYS_SET_TID_ADDRESS         = 96\n\tSYS_UNSHARE                 = 97\n\tSYS_FUTEX                   = 98\n\tSYS_SET_ROBUST_LIST         = 99\n\tSYS_GET_ROBUST_LIST         = 100\n\tSYS_NANOSLEEP               = 101\n\tSYS_GETITIMER               = 102\n\tSYS_SETITIMER               = 103\n\tSYS_KEXEC_LOAD              = 104\n\tSYS_INIT_MODULE             = 105\n\tSYS_DELETE_MODULE           = 106\n\tSYS_TIMER_CREATE            = 107\n\tSYS_TIMER_GETTIME           = 108\n\tSYS_TIMER_GETOVERRUN        = 109\n\tSYS_TIMER_SETTIME           = 110\n\tSYS_TIMER_DELETE            = 111\n\tSYS_CLOCK_SETTIME           = 112\n\tSYS_CLOCK_GETTIME           = 113\n\tSYS_CLOCK_GETRES            = 114\n\tSYS_CLOCK_NANOSLEEP         = 115\n\tSYS_SYSLOG                  = 116\n\tSYS_PTRACE                  = 117\n\tSYS_SCHED_SETPARAM          = 118\n\tSYS_SCHED_SETSCHEDULER      = 119\n\tSYS_SCHED_GETSCHEDULER      = 120\n\tSYS_SCHED_GETPARAM          = 121\n\tSYS_SCHED_SETAFFINITY       = 122\n\tSYS_SCHED_GETAFFINITY       = 123\n\tSYS_SCHED_YIELD             = 124\n\tSYS_SCHED_GET_PRIORITY_MAX  = 125\n\tSYS_SCHED_GET_PRIORITY_MIN  = 126\n\tSYS_SCHED_RR_GET_INTERVAL   = 127\n\tSYS_RESTART_SYSCALL         = 128\n\tSYS_KILL                    = 129\n\tSYS_TKILL                   = 130\n\tSYS_TGKILL                  = 131\n\tSYS_SIGALTSTACK             = 132\n\tSYS_RT_SIGSUSPEND           = 133\n\tSYS_RT_SIGACTION            = 134\n\tSYS_RT_SIGPROCMASK          = 135\n\tSYS_RT_SIGPENDING           = 136\n\tSYS_RT_SIGTIMEDWAIT         = 137\n\tSYS_RT_SIGQUEUEINFO         = 138\n\tSYS_RT_SIGRETURN            = 139\n\tSYS_SETPRIORITY             = 140\n\tSYS_GETPRIORITY             = 141\n\tSYS_REBOOT                  = 142\n\tSYS_SETREGID                = 143\n\tSYS_SETGID                  = 144\n\tSYS_SETREUID                = 145\n\tSYS_SETUID                  = 146\n\tSYS_SETRESUID               = 147\n\tSYS_GETRESUID               = 148\n\tSYS_SETRESGID               = 149\n\tSYS_GETRESGID               = 150\n\tSYS_SETFSUID                = 151\n\tSYS_SETFSGID                = 152\n\tSYS_TIMES                   = 153\n\tSYS_SETPGID                 = 154\n\tSYS_GETPGID                 = 155\n\tSYS_GETSID                  = 156\n\tSYS_SETSID                  = 157\n\tSYS_GETGROUPS               = 158\n\tSYS_SETGROUPS               = 159\n\tSYS_UNAME                   = 160\n\tSYS_SETHOSTNAME             = 161\n\tSYS_SETDOMAINNAME           = 162\n\tSYS_GETRUSAGE               = 165\n\tSYS_UMASK                   = 166\n\tSYS_PRCTL                   = 167\n\tSYS_GETCPU                  = 168\n\tSYS_GETTIMEOFDAY            = 169\n\tSYS_SETTIMEOFDAY            = 170\n\tSYS_ADJTIMEX                = 171\n\tSYS_GETPID                  = 172\n\tSYS_GETPPID                 = 173\n\tSYS_GETUID                  = 174\n\tSYS_GETEUID                 = 175\n\tSYS_GETGID                  = 176\n\tSYS_GETEGID                 = 177\n\tSYS_GETTID                  = 178\n\tSYS_SYSINFO                 = 179\n\tSYS_MQ_OPEN                 = 180\n\tSYS_MQ_UNLINK               = 181\n\tSYS_MQ_TIMEDSEND            = 182\n\tSYS_MQ_TIMEDRECEIVE         = 183\n\tSYS_MQ_NOTIFY               = 184\n\tSYS_MQ_GETSETATTR           = 185\n\tSYS_MSGGET                  = 186\n\tSYS_MSGCTL                  = 187\n\tSYS_MSGRCV                  = 188\n\tSYS_MSGSND                  = 189\n\tSYS_SEMGET                  = 190\n\tSYS_SEMCTL                  = 191\n\tSYS_SEMTIMEDOP              = 192\n\tSYS_SEMOP                   = 193\n\tSYS_SHMGET                  = 194\n\tSYS_SHMCTL                  = 195\n\tSYS_SHMAT                   = 196\n\tSYS_SHMDT                   = 197\n\tSYS_SOCKET                  = 198\n\tSYS_SOCKETPAIR              = 199\n\tSYS_BIND                    = 200\n\tSYS_LISTEN                  = 201\n\tSYS_ACCEPT                  = 202\n\tSYS_CONNECT                 = 203\n\tSYS_GETSOCKNAME             = 204\n\tSYS_GETPEERNAME             = 205\n\tSYS_SENDTO                  = 206\n\tSYS_RECVFROM                = 207\n\tSYS_SETSOCKOPT              = 208\n\tSYS_GETSOCKOPT              = 209\n\tSYS_SHUTDOWN                = 210\n\tSYS_SENDMSG                 = 211\n\tSYS_RECVMSG                 = 212\n\tSYS_READAHEAD               = 213\n\tSYS_BRK                     = 214\n\tSYS_MUNMAP                  = 215\n\tSYS_MREMAP                  = 216\n\tSYS_ADD_KEY                 = 217\n\tSYS_REQUEST_KEY             = 218\n\tSYS_KEYCTL                  = 219\n\tSYS_CLONE                   = 220\n\tSYS_EXECVE                  = 221\n\tSYS_MMAP                    = 222\n\tSYS_FADVISE64               = 223\n\tSYS_SWAPON                  = 224\n\tSYS_SWAPOFF                 = 225\n\tSYS_MPROTECT                = 226\n\tSYS_MSYNC                   = 227\n\tSYS_MLOCK                   = 228\n\tSYS_MUNLOCK                 = 229\n\tSYS_MLOCKALL                = 230\n\tSYS_MUNLOCKALL              = 231\n\tSYS_MINCORE                 = 232\n\tSYS_MADVISE                 = 233\n\tSYS_REMAP_FILE_PAGES        = 234\n\tSYS_MBIND                   = 235\n\tSYS_GET_MEMPOLICY           = 236\n\tSYS_SET_MEMPOLICY           = 237\n\tSYS_MIGRATE_PAGES           = 238\n\tSYS_MOVE_PAGES              = 239\n\tSYS_RT_TGSIGQUEUEINFO       = 240\n\tSYS_PERF_EVENT_OPEN         = 241\n\tSYS_ACCEPT4                 = 242\n\tSYS_RECVMMSG                = 243\n\tSYS_ARCH_SPECIFIC_SYSCALL   = 244\n\tSYS_WAIT4                   = 260\n\tSYS_PRLIMIT64               = 261\n\tSYS_FANOTIFY_INIT           = 262\n\tSYS_FANOTIFY_MARK           = 263\n\tSYS_NAME_TO_HANDLE_AT       = 264\n\tSYS_OPEN_BY_HANDLE_AT       = 265\n\tSYS_CLOCK_ADJTIME           = 266\n\tSYS_SYNCFS                  = 267\n\tSYS_SETNS                   = 268\n\tSYS_SENDMMSG                = 269\n\tSYS_PROCESS_VM_READV        = 270\n\tSYS_PROCESS_VM_WRITEV       = 271\n\tSYS_KCMP                    = 272\n\tSYS_FINIT_MODULE            = 273\n\tSYS_SCHED_SETATTR           = 274\n\tSYS_SCHED_GETATTR           = 275\n\tSYS_RENAMEAT2               = 276\n\tSYS_SECCOMP                 = 277\n\tSYS_GETRANDOM               = 278\n\tSYS_MEMFD_CREATE            = 279\n\tSYS_BPF                     = 280\n\tSYS_EXECVEAT                = 281\n\tSYS_USERFAULTFD             = 282\n\tSYS_MEMBARRIER              = 283\n\tSYS_MLOCK2                  = 284\n\tSYS_COPY_FILE_RANGE         = 285\n\tSYS_PREADV2                 = 286\n\tSYS_PWRITEV2                = 287\n\tSYS_PKEY_MPROTECT           = 288\n\tSYS_PKEY_ALLOC              = 289\n\tSYS_PKEY_FREE               = 290\n\tSYS_STATX                   = 291\n\tSYS_IO_PGETEVENTS           = 292\n\tSYS_RSEQ                    = 293\n\tSYS_KEXEC_FILE_LOAD         = 294\n\tSYS_PIDFD_SEND_SIGNAL       = 424\n\tSYS_IO_URING_SETUP          = 425\n\tSYS_IO_URING_ENTER          = 426\n\tSYS_IO_URING_REGISTER       = 427\n\tSYS_OPEN_TREE               = 428\n\tSYS_MOVE_MOUNT              = 429\n\tSYS_FSOPEN                  = 430\n\tSYS_FSCONFIG                = 431\n\tSYS_FSMOUNT                 = 432\n\tSYS_FSPICK                  = 433\n\tSYS_PIDFD_OPEN              = 434\n\tSYS_CLONE3                  = 435\n\tSYS_CLOSE_RANGE             = 436\n\tSYS_OPENAT2                 = 437\n\tSYS_PIDFD_GETFD             = 438\n\tSYS_FACCESSAT2              = 439\n\tSYS_PROCESS_MADVISE         = 440\n\tSYS_EPOLL_PWAIT2            = 441\n\tSYS_MOUNT_SETATTR           = 442\n\tSYS_QUOTACTL_FD             = 443\n\tSYS_LANDLOCK_CREATE_RULESET = 444\n\tSYS_LANDLOCK_ADD_RULE       = 445\n\tSYS_LANDLOCK_RESTRICT_SELF  = 446\n\tSYS_PROCESS_MRELEASE        = 448\n\tSYS_FUTEX_WAITV             = 449\n\tSYS_SET_MEMPOLICY_HOME_NODE = 450\n\tSYS_CACHESTAT               = 451\n\tSYS_FCHMODAT2               = 452\n\tSYS_MAP_SHADOW_STACK        = 453\n\tSYS_FUTEX_WAKE              = 454\n\tSYS_FUTEX_WAIT              = 455\n\tSYS_FUTEX_REQUEUE           = 456\n\tSYS_STATMOUNT               = 457\n\tSYS_LISTMOUNT               = 458\n\tSYS_LSM_GET_SELF_ATTR       = 459\n\tSYS_LSM_SET_SELF_ATTR       = 460\n\tSYS_LSM_LIST_MODULES        = 461\n\tSYS_MSEAL                   = 462\n\tSYS_SETXATTRAT              = 463\n\tSYS_GETXATTRAT              = 464\n\tSYS_LISTXATTRAT             = 465\n\tSYS_REMOVEXATTRAT           = 466\n\tSYS_OPEN_TREE_ATTR          = 467\n)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/mips/include /tmp/mips/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mips && linux\n\npackage unix\n\nconst (\n\tSYS_SYSCALL                      = 4000\n\tSYS_EXIT                         = 4001\n\tSYS_FORK                         = 4002\n\tSYS_READ                         = 4003\n\tSYS_WRITE                        = 4004\n\tSYS_OPEN                         = 4005\n\tSYS_CLOSE                        = 4006\n\tSYS_WAITPID                      = 4007\n\tSYS_CREAT                        = 4008\n\tSYS_LINK                         = 4009\n\tSYS_UNLINK                       = 4010\n\tSYS_EXECVE                       = 4011\n\tSYS_CHDIR                        = 4012\n\tSYS_TIME                         = 4013\n\tSYS_MKNOD                        = 4014\n\tSYS_CHMOD                        = 4015\n\tSYS_LCHOWN                       = 4016\n\tSYS_BREAK                        = 4017\n\tSYS_UNUSED18                     = 4018\n\tSYS_LSEEK                        = 4019\n\tSYS_GETPID                       = 4020\n\tSYS_MOUNT                        = 4021\n\tSYS_UMOUNT                       = 4022\n\tSYS_SETUID                       = 4023\n\tSYS_GETUID                       = 4024\n\tSYS_STIME                        = 4025\n\tSYS_PTRACE                       = 4026\n\tSYS_ALARM                        = 4027\n\tSYS_UNUSED28                     = 4028\n\tSYS_PAUSE                        = 4029\n\tSYS_UTIME                        = 4030\n\tSYS_STTY                         = 4031\n\tSYS_GTTY                         = 4032\n\tSYS_ACCESS                       = 4033\n\tSYS_NICE                         = 4034\n\tSYS_FTIME                        = 4035\n\tSYS_SYNC                         = 4036\n\tSYS_KILL                         = 4037\n\tSYS_RENAME                       = 4038\n\tSYS_MKDIR                        = 4039\n\tSYS_RMDIR                        = 4040\n\tSYS_DUP                          = 4041\n\tSYS_PIPE                         = 4042\n\tSYS_TIMES                        = 4043\n\tSYS_PROF                         = 4044\n\tSYS_BRK                          = 4045\n\tSYS_SETGID                       = 4046\n\tSYS_GETGID                       = 4047\n\tSYS_SIGNAL                       = 4048\n\tSYS_GETEUID                      = 4049\n\tSYS_GETEGID                      = 4050\n\tSYS_ACCT                         = 4051\n\tSYS_UMOUNT2                      = 4052\n\tSYS_LOCK                         = 4053\n\tSYS_IOCTL                        = 4054\n\tSYS_FCNTL                        = 4055\n\tSYS_MPX                          = 4056\n\tSYS_SETPGID                      = 4057\n\tSYS_ULIMIT                       = 4058\n\tSYS_UNUSED59                     = 4059\n\tSYS_UMASK                        = 4060\n\tSYS_CHROOT                       = 4061\n\tSYS_USTAT                        = 4062\n\tSYS_DUP2                         = 4063\n\tSYS_GETPPID                      = 4064\n\tSYS_GETPGRP                      = 4065\n\tSYS_SETSID                       = 4066\n\tSYS_SIGACTION                    = 4067\n\tSYS_SGETMASK                     = 4068\n\tSYS_SSETMASK                     = 4069\n\tSYS_SETREUID                     = 4070\n\tSYS_SETREGID                     = 4071\n\tSYS_SIGSUSPEND                   = 4072\n\tSYS_SIGPENDING                   = 4073\n\tSYS_SETHOSTNAME                  = 4074\n\tSYS_SETRLIMIT                    = 4075\n\tSYS_GETRLIMIT                    = 4076\n\tSYS_GETRUSAGE                    = 4077\n\tSYS_GETTIMEOFDAY                 = 4078\n\tSYS_SETTIMEOFDAY                 = 4079\n\tSYS_GETGROUPS                    = 4080\n\tSYS_SETGROUPS                    = 4081\n\tSYS_RESERVED82                   = 4082\n\tSYS_SYMLINK                      = 4083\n\tSYS_UNUSED84                     = 4084\n\tSYS_READLINK                     = 4085\n\tSYS_USELIB                       = 4086\n\tSYS_SWAPON                       = 4087\n\tSYS_REBOOT                       = 4088\n\tSYS_READDIR                      = 4089\n\tSYS_MMAP                         = 4090\n\tSYS_MUNMAP                       = 4091\n\tSYS_TRUNCATE                     = 4092\n\tSYS_FTRUNCATE                    = 4093\n\tSYS_FCHMOD                       = 4094\n\tSYS_FCHOWN                       = 4095\n\tSYS_GETPRIORITY                  = 4096\n\tSYS_SETPRIORITY                  = 4097\n\tSYS_PROFIL                       = 4098\n\tSYS_STATFS                       = 4099\n\tSYS_FSTATFS                      = 4100\n\tSYS_IOPERM                       = 4101\n\tSYS_SOCKETCALL                   = 4102\n\tSYS_SYSLOG                       = 4103\n\tSYS_SETITIMER                    = 4104\n\tSYS_GETITIMER                    = 4105\n\tSYS_STAT                         = 4106\n\tSYS_LSTAT                        = 4107\n\tSYS_FSTAT                        = 4108\n\tSYS_UNUSED109                    = 4109\n\tSYS_IOPL                         = 4110\n\tSYS_VHANGUP                      = 4111\n\tSYS_IDLE                         = 4112\n\tSYS_VM86                         = 4113\n\tSYS_WAIT4                        = 4114\n\tSYS_SWAPOFF                      = 4115\n\tSYS_SYSINFO                      = 4116\n\tSYS_IPC                          = 4117\n\tSYS_FSYNC                        = 4118\n\tSYS_SIGRETURN                    = 4119\n\tSYS_CLONE                        = 4120\n\tSYS_SETDOMAINNAME                = 4121\n\tSYS_UNAME                        = 4122\n\tSYS_MODIFY_LDT                   = 4123\n\tSYS_ADJTIMEX                     = 4124\n\tSYS_MPROTECT                     = 4125\n\tSYS_SIGPROCMASK                  = 4126\n\tSYS_CREATE_MODULE                = 4127\n\tSYS_INIT_MODULE                  = 4128\n\tSYS_DELETE_MODULE                = 4129\n\tSYS_GET_KERNEL_SYMS              = 4130\n\tSYS_QUOTACTL                     = 4131\n\tSYS_GETPGID                      = 4132\n\tSYS_FCHDIR                       = 4133\n\tSYS_BDFLUSH                      = 4134\n\tSYS_SYSFS                        = 4135\n\tSYS_PERSONALITY                  = 4136\n\tSYS_AFS_SYSCALL                  = 4137\n\tSYS_SETFSUID                     = 4138\n\tSYS_SETFSGID                     = 4139\n\tSYS__LLSEEK                      = 4140\n\tSYS_GETDENTS                     = 4141\n\tSYS__NEWSELECT                   = 4142\n\tSYS_FLOCK                        = 4143\n\tSYS_MSYNC                        = 4144\n\tSYS_READV                        = 4145\n\tSYS_WRITEV                       = 4146\n\tSYS_CACHEFLUSH                   = 4147\n\tSYS_CACHECTL                     = 4148\n\tSYS_SYSMIPS                      = 4149\n\tSYS_UNUSED150                    = 4150\n\tSYS_GETSID                       = 4151\n\tSYS_FDATASYNC                    = 4152\n\tSYS__SYSCTL                      = 4153\n\tSYS_MLOCK                        = 4154\n\tSYS_MUNLOCK                      = 4155\n\tSYS_MLOCKALL                     = 4156\n\tSYS_MUNLOCKALL                   = 4157\n\tSYS_SCHED_SETPARAM               = 4158\n\tSYS_SCHED_GETPARAM               = 4159\n\tSYS_SCHED_SETSCHEDULER           = 4160\n\tSYS_SCHED_GETSCHEDULER           = 4161\n\tSYS_SCHED_YIELD                  = 4162\n\tSYS_SCHED_GET_PRIORITY_MAX       = 4163\n\tSYS_SCHED_GET_PRIORITY_MIN       = 4164\n\tSYS_SCHED_RR_GET_INTERVAL        = 4165\n\tSYS_NANOSLEEP                    = 4166\n\tSYS_MREMAP                       = 4167\n\tSYS_ACCEPT                       = 4168\n\tSYS_BIND                         = 4169\n\tSYS_CONNECT                      = 4170\n\tSYS_GETPEERNAME                  = 4171\n\tSYS_GETSOCKNAME                  = 4172\n\tSYS_GETSOCKOPT                   = 4173\n\tSYS_LISTEN                       = 4174\n\tSYS_RECV                         = 4175\n\tSYS_RECVFROM                     = 4176\n\tSYS_RECVMSG                      = 4177\n\tSYS_SEND                         = 4178\n\tSYS_SENDMSG                      = 4179\n\tSYS_SENDTO                       = 4180\n\tSYS_SETSOCKOPT                   = 4181\n\tSYS_SHUTDOWN                     = 4182\n\tSYS_SOCKET                       = 4183\n\tSYS_SOCKETPAIR                   = 4184\n\tSYS_SETRESUID                    = 4185\n\tSYS_GETRESUID                    = 4186\n\tSYS_QUERY_MODULE                 = 4187\n\tSYS_POLL                         = 4188\n\tSYS_NFSSERVCTL                   = 4189\n\tSYS_SETRESGID                    = 4190\n\tSYS_GETRESGID                    = 4191\n\tSYS_PRCTL                        = 4192\n\tSYS_RT_SIGRETURN                 = 4193\n\tSYS_RT_SIGACTION                 = 4194\n\tSYS_RT_SIGPROCMASK               = 4195\n\tSYS_RT_SIGPENDING                = 4196\n\tSYS_RT_SIGTIMEDWAIT              = 4197\n\tSYS_RT_SIGQUEUEINFO              = 4198\n\tSYS_RT_SIGSUSPEND                = 4199\n\tSYS_PREAD64                      = 4200\n\tSYS_PWRITE64                     = 4201\n\tSYS_CHOWN                        = 4202\n\tSYS_GETCWD                       = 4203\n\tSYS_CAPGET                       = 4204\n\tSYS_CAPSET                       = 4205\n\tSYS_SIGALTSTACK                  = 4206\n\tSYS_SENDFILE                     = 4207\n\tSYS_GETPMSG                      = 4208\n\tSYS_PUTPMSG                      = 4209\n\tSYS_MMAP2                        = 4210\n\tSYS_TRUNCATE64                   = 4211\n\tSYS_FTRUNCATE64                  = 4212\n\tSYS_STAT64                       = 4213\n\tSYS_LSTAT64                      = 4214\n\tSYS_FSTAT64                      = 4215\n\tSYS_PIVOT_ROOT                   = 4216\n\tSYS_MINCORE                      = 4217\n\tSYS_MADVISE                      = 4218\n\tSYS_GETDENTS64                   = 4219\n\tSYS_FCNTL64                      = 4220\n\tSYS_RESERVED221                  = 4221\n\tSYS_GETTID                       = 4222\n\tSYS_READAHEAD                    = 4223\n\tSYS_SETXATTR                     = 4224\n\tSYS_LSETXATTR                    = 4225\n\tSYS_FSETXATTR                    = 4226\n\tSYS_GETXATTR                     = 4227\n\tSYS_LGETXATTR                    = 4228\n\tSYS_FGETXATTR                    = 4229\n\tSYS_LISTXATTR                    = 4230\n\tSYS_LLISTXATTR                   = 4231\n\tSYS_FLISTXATTR                   = 4232\n\tSYS_REMOVEXATTR                  = 4233\n\tSYS_LREMOVEXATTR                 = 4234\n\tSYS_FREMOVEXATTR                 = 4235\n\tSYS_TKILL                        = 4236\n\tSYS_SENDFILE64                   = 4237\n\tSYS_FUTEX                        = 4238\n\tSYS_SCHED_SETAFFINITY            = 4239\n\tSYS_SCHED_GETAFFINITY            = 4240\n\tSYS_IO_SETUP                     = 4241\n\tSYS_IO_DESTROY                   = 4242\n\tSYS_IO_GETEVENTS                 = 4243\n\tSYS_IO_SUBMIT                    = 4244\n\tSYS_IO_CANCEL                    = 4245\n\tSYS_EXIT_GROUP                   = 4246\n\tSYS_LOOKUP_DCOOKIE               = 4247\n\tSYS_EPOLL_CREATE                 = 4248\n\tSYS_EPOLL_CTL                    = 4249\n\tSYS_EPOLL_WAIT                   = 4250\n\tSYS_REMAP_FILE_PAGES             = 4251\n\tSYS_SET_TID_ADDRESS              = 4252\n\tSYS_RESTART_SYSCALL              = 4253\n\tSYS_FADVISE64                    = 4254\n\tSYS_STATFS64                     = 4255\n\tSYS_FSTATFS64                    = 4256\n\tSYS_TIMER_CREATE                 = 4257\n\tSYS_TIMER_SETTIME                = 4258\n\tSYS_TIMER_GETTIME                = 4259\n\tSYS_TIMER_GETOVERRUN             = 4260\n\tSYS_TIMER_DELETE                 = 4261\n\tSYS_CLOCK_SETTIME                = 4262\n\tSYS_CLOCK_GETTIME                = 4263\n\tSYS_CLOCK_GETRES                 = 4264\n\tSYS_CLOCK_NANOSLEEP              = 4265\n\tSYS_TGKILL                       = 4266\n\tSYS_UTIMES                       = 4267\n\tSYS_MBIND                        = 4268\n\tSYS_GET_MEMPOLICY                = 4269\n\tSYS_SET_MEMPOLICY                = 4270\n\tSYS_MQ_OPEN                      = 4271\n\tSYS_MQ_UNLINK                    = 4272\n\tSYS_MQ_TIMEDSEND                 = 4273\n\tSYS_MQ_TIMEDRECEIVE              = 4274\n\tSYS_MQ_NOTIFY                    = 4275\n\tSYS_MQ_GETSETATTR                = 4276\n\tSYS_VSERVER                      = 4277\n\tSYS_WAITID                       = 4278\n\tSYS_ADD_KEY                      = 4280\n\tSYS_REQUEST_KEY                  = 4281\n\tSYS_KEYCTL                       = 4282\n\tSYS_SET_THREAD_AREA              = 4283\n\tSYS_INOTIFY_INIT                 = 4284\n\tSYS_INOTIFY_ADD_WATCH            = 4285\n\tSYS_INOTIFY_RM_WATCH             = 4286\n\tSYS_MIGRATE_PAGES                = 4287\n\tSYS_OPENAT                       = 4288\n\tSYS_MKDIRAT                      = 4289\n\tSYS_MKNODAT                      = 4290\n\tSYS_FCHOWNAT                     = 4291\n\tSYS_FUTIMESAT                    = 4292\n\tSYS_FSTATAT64                    = 4293\n\tSYS_UNLINKAT                     = 4294\n\tSYS_RENAMEAT                     = 4295\n\tSYS_LINKAT                       = 4296\n\tSYS_SYMLINKAT                    = 4297\n\tSYS_READLINKAT                   = 4298\n\tSYS_FCHMODAT                     = 4299\n\tSYS_FACCESSAT                    = 4300\n\tSYS_PSELECT6                     = 4301\n\tSYS_PPOLL                        = 4302\n\tSYS_UNSHARE                      = 4303\n\tSYS_SPLICE                       = 4304\n\tSYS_SYNC_FILE_RANGE              = 4305\n\tSYS_TEE                          = 4306\n\tSYS_VMSPLICE                     = 4307\n\tSYS_MOVE_PAGES                   = 4308\n\tSYS_SET_ROBUST_LIST              = 4309\n\tSYS_GET_ROBUST_LIST              = 4310\n\tSYS_KEXEC_LOAD                   = 4311\n\tSYS_GETCPU                       = 4312\n\tSYS_EPOLL_PWAIT                  = 4313\n\tSYS_IOPRIO_SET                   = 4314\n\tSYS_IOPRIO_GET                   = 4315\n\tSYS_UTIMENSAT                    = 4316\n\tSYS_SIGNALFD                     = 4317\n\tSYS_TIMERFD                      = 4318\n\tSYS_EVENTFD                      = 4319\n\tSYS_FALLOCATE                    = 4320\n\tSYS_TIMERFD_CREATE               = 4321\n\tSYS_TIMERFD_GETTIME              = 4322\n\tSYS_TIMERFD_SETTIME              = 4323\n\tSYS_SIGNALFD4                    = 4324\n\tSYS_EVENTFD2                     = 4325\n\tSYS_EPOLL_CREATE1                = 4326\n\tSYS_DUP3                         = 4327\n\tSYS_PIPE2                        = 4328\n\tSYS_INOTIFY_INIT1                = 4329\n\tSYS_PREADV                       = 4330\n\tSYS_PWRITEV                      = 4331\n\tSYS_RT_TGSIGQUEUEINFO            = 4332\n\tSYS_PERF_EVENT_OPEN              = 4333\n\tSYS_ACCEPT4                      = 4334\n\tSYS_RECVMMSG                     = 4335\n\tSYS_FANOTIFY_INIT                = 4336\n\tSYS_FANOTIFY_MARK                = 4337\n\tSYS_PRLIMIT64                    = 4338\n\tSYS_NAME_TO_HANDLE_AT            = 4339\n\tSYS_OPEN_BY_HANDLE_AT            = 4340\n\tSYS_CLOCK_ADJTIME                = 4341\n\tSYS_SYNCFS                       = 4342\n\tSYS_SENDMMSG                     = 4343\n\tSYS_SETNS                        = 4344\n\tSYS_PROCESS_VM_READV             = 4345\n\tSYS_PROCESS_VM_WRITEV            = 4346\n\tSYS_KCMP                         = 4347\n\tSYS_FINIT_MODULE                 = 4348\n\tSYS_SCHED_SETATTR                = 4349\n\tSYS_SCHED_GETATTR                = 4350\n\tSYS_RENAMEAT2                    = 4351\n\tSYS_SECCOMP                      = 4352\n\tSYS_GETRANDOM                    = 4353\n\tSYS_MEMFD_CREATE                 = 4354\n\tSYS_BPF                          = 4355\n\tSYS_EXECVEAT                     = 4356\n\tSYS_USERFAULTFD                  = 4357\n\tSYS_MEMBARRIER                   = 4358\n\tSYS_MLOCK2                       = 4359\n\tSYS_COPY_FILE_RANGE              = 4360\n\tSYS_PREADV2                      = 4361\n\tSYS_PWRITEV2                     = 4362\n\tSYS_PKEY_MPROTECT                = 4363\n\tSYS_PKEY_ALLOC                   = 4364\n\tSYS_PKEY_FREE                    = 4365\n\tSYS_STATX                        = 4366\n\tSYS_RSEQ                         = 4367\n\tSYS_IO_PGETEVENTS                = 4368\n\tSYS_SEMGET                       = 4393\n\tSYS_SEMCTL                       = 4394\n\tSYS_SHMGET                       = 4395\n\tSYS_SHMCTL                       = 4396\n\tSYS_SHMAT                        = 4397\n\tSYS_SHMDT                        = 4398\n\tSYS_MSGGET                       = 4399\n\tSYS_MSGSND                       = 4400\n\tSYS_MSGRCV                       = 4401\n\tSYS_MSGCTL                       = 4402\n\tSYS_CLOCK_GETTIME64              = 4403\n\tSYS_CLOCK_SETTIME64              = 4404\n\tSYS_CLOCK_ADJTIME64              = 4405\n\tSYS_CLOCK_GETRES_TIME64          = 4406\n\tSYS_CLOCK_NANOSLEEP_TIME64       = 4407\n\tSYS_TIMER_GETTIME64              = 4408\n\tSYS_TIMER_SETTIME64              = 4409\n\tSYS_TIMERFD_GETTIME64            = 4410\n\tSYS_TIMERFD_SETTIME64            = 4411\n\tSYS_UTIMENSAT_TIME64             = 4412\n\tSYS_PSELECT6_TIME64              = 4413\n\tSYS_PPOLL_TIME64                 = 4414\n\tSYS_IO_PGETEVENTS_TIME64         = 4416\n\tSYS_RECVMMSG_TIME64              = 4417\n\tSYS_MQ_TIMEDSEND_TIME64          = 4418\n\tSYS_MQ_TIMEDRECEIVE_TIME64       = 4419\n\tSYS_SEMTIMEDOP_TIME64            = 4420\n\tSYS_RT_SIGTIMEDWAIT_TIME64       = 4421\n\tSYS_FUTEX_TIME64                 = 4422\n\tSYS_SCHED_RR_GET_INTERVAL_TIME64 = 4423\n\tSYS_PIDFD_SEND_SIGNAL            = 4424\n\tSYS_IO_URING_SETUP               = 4425\n\tSYS_IO_URING_ENTER               = 4426\n\tSYS_IO_URING_REGISTER            = 4427\n\tSYS_OPEN_TREE                    = 4428\n\tSYS_MOVE_MOUNT                   = 4429\n\tSYS_FSOPEN                       = 4430\n\tSYS_FSCONFIG                     = 4431\n\tSYS_FSMOUNT                      = 4432\n\tSYS_FSPICK                       = 4433\n\tSYS_PIDFD_OPEN                   = 4434\n\tSYS_CLONE3                       = 4435\n\tSYS_CLOSE_RANGE                  = 4436\n\tSYS_OPENAT2                      = 4437\n\tSYS_PIDFD_GETFD                  = 4438\n\tSYS_FACCESSAT2                   = 4439\n\tSYS_PROCESS_MADVISE              = 4440\n\tSYS_EPOLL_PWAIT2                 = 4441\n\tSYS_MOUNT_SETATTR                = 4442\n\tSYS_QUOTACTL_FD                  = 4443\n\tSYS_LANDLOCK_CREATE_RULESET      = 4444\n\tSYS_LANDLOCK_ADD_RULE            = 4445\n\tSYS_LANDLOCK_RESTRICT_SELF       = 4446\n\tSYS_PROCESS_MRELEASE             = 4448\n\tSYS_FUTEX_WAITV                  = 4449\n\tSYS_SET_MEMPOLICY_HOME_NODE      = 4450\n\tSYS_CACHESTAT                    = 4451\n\tSYS_FCHMODAT2                    = 4452\n\tSYS_MAP_SHADOW_STACK             = 4453\n\tSYS_FUTEX_WAKE                   = 4454\n\tSYS_FUTEX_WAIT                   = 4455\n\tSYS_FUTEX_REQUEUE                = 4456\n\tSYS_STATMOUNT                    = 4457\n\tSYS_LISTMOUNT                    = 4458\n\tSYS_LSM_GET_SELF_ATTR            = 4459\n\tSYS_LSM_SET_SELF_ATTR            = 4460\n\tSYS_LSM_LIST_MODULES             = 4461\n\tSYS_MSEAL                        = 4462\n\tSYS_SETXATTRAT                   = 4463\n\tSYS_GETXATTRAT                   = 4464\n\tSYS_LISTXATTRAT                  = 4465\n\tSYS_REMOVEXATTRAT                = 4466\n\tSYS_OPEN_TREE_ATTR               = 4467\n)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/mips64/include /tmp/mips64/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mips64 && linux\n\npackage unix\n\nconst (\n\tSYS_READ                    = 5000\n\tSYS_WRITE                   = 5001\n\tSYS_OPEN                    = 5002\n\tSYS_CLOSE                   = 5003\n\tSYS_STAT                    = 5004\n\tSYS_FSTAT                   = 5005\n\tSYS_LSTAT                   = 5006\n\tSYS_POLL                    = 5007\n\tSYS_LSEEK                   = 5008\n\tSYS_MMAP                    = 5009\n\tSYS_MPROTECT                = 5010\n\tSYS_MUNMAP                  = 5011\n\tSYS_BRK                     = 5012\n\tSYS_RT_SIGACTION            = 5013\n\tSYS_RT_SIGPROCMASK          = 5014\n\tSYS_IOCTL                   = 5015\n\tSYS_PREAD64                 = 5016\n\tSYS_PWRITE64                = 5017\n\tSYS_READV                   = 5018\n\tSYS_WRITEV                  = 5019\n\tSYS_ACCESS                  = 5020\n\tSYS_PIPE                    = 5021\n\tSYS__NEWSELECT              = 5022\n\tSYS_SCHED_YIELD             = 5023\n\tSYS_MREMAP                  = 5024\n\tSYS_MSYNC                   = 5025\n\tSYS_MINCORE                 = 5026\n\tSYS_MADVISE                 = 5027\n\tSYS_SHMGET                  = 5028\n\tSYS_SHMAT                   = 5029\n\tSYS_SHMCTL                  = 5030\n\tSYS_DUP                     = 5031\n\tSYS_DUP2                    = 5032\n\tSYS_PAUSE                   = 5033\n\tSYS_NANOSLEEP               = 5034\n\tSYS_GETITIMER               = 5035\n\tSYS_SETITIMER               = 5036\n\tSYS_ALARM                   = 5037\n\tSYS_GETPID                  = 5038\n\tSYS_SENDFILE                = 5039\n\tSYS_SOCKET                  = 5040\n\tSYS_CONNECT                 = 5041\n\tSYS_ACCEPT                  = 5042\n\tSYS_SENDTO                  = 5043\n\tSYS_RECVFROM                = 5044\n\tSYS_SENDMSG                 = 5045\n\tSYS_RECVMSG                 = 5046\n\tSYS_SHUTDOWN                = 5047\n\tSYS_BIND                    = 5048\n\tSYS_LISTEN                  = 5049\n\tSYS_GETSOCKNAME             = 5050\n\tSYS_GETPEERNAME             = 5051\n\tSYS_SOCKETPAIR              = 5052\n\tSYS_SETSOCKOPT              = 5053\n\tSYS_GETSOCKOPT              = 5054\n\tSYS_CLONE                   = 5055\n\tSYS_FORK                    = 5056\n\tSYS_EXECVE                  = 5057\n\tSYS_EXIT                    = 5058\n\tSYS_WAIT4                   = 5059\n\tSYS_KILL                    = 5060\n\tSYS_UNAME                   = 5061\n\tSYS_SEMGET                  = 5062\n\tSYS_SEMOP                   = 5063\n\tSYS_SEMCTL                  = 5064\n\tSYS_SHMDT                   = 5065\n\tSYS_MSGGET                  = 5066\n\tSYS_MSGSND                  = 5067\n\tSYS_MSGRCV                  = 5068\n\tSYS_MSGCTL                  = 5069\n\tSYS_FCNTL                   = 5070\n\tSYS_FLOCK                   = 5071\n\tSYS_FSYNC                   = 5072\n\tSYS_FDATASYNC               = 5073\n\tSYS_TRUNCATE                = 5074\n\tSYS_FTRUNCATE               = 5075\n\tSYS_GETDENTS                = 5076\n\tSYS_GETCWD                  = 5077\n\tSYS_CHDIR                   = 5078\n\tSYS_FCHDIR                  = 5079\n\tSYS_RENAME                  = 5080\n\tSYS_MKDIR                   = 5081\n\tSYS_RMDIR                   = 5082\n\tSYS_CREAT                   = 5083\n\tSYS_LINK                    = 5084\n\tSYS_UNLINK                  = 5085\n\tSYS_SYMLINK                 = 5086\n\tSYS_READLINK                = 5087\n\tSYS_CHMOD                   = 5088\n\tSYS_FCHMOD                  = 5089\n\tSYS_CHOWN                   = 5090\n\tSYS_FCHOWN                  = 5091\n\tSYS_LCHOWN                  = 5092\n\tSYS_UMASK                   = 5093\n\tSYS_GETTIMEOFDAY            = 5094\n\tSYS_GETRLIMIT               = 5095\n\tSYS_GETRUSAGE               = 5096\n\tSYS_SYSINFO                 = 5097\n\tSYS_TIMES                   = 5098\n\tSYS_PTRACE                  = 5099\n\tSYS_GETUID                  = 5100\n\tSYS_SYSLOG                  = 5101\n\tSYS_GETGID                  = 5102\n\tSYS_SETUID                  = 5103\n\tSYS_SETGID                  = 5104\n\tSYS_GETEUID                 = 5105\n\tSYS_GETEGID                 = 5106\n\tSYS_SETPGID                 = 5107\n\tSYS_GETPPID                 = 5108\n\tSYS_GETPGRP                 = 5109\n\tSYS_SETSID                  = 5110\n\tSYS_SETREUID                = 5111\n\tSYS_SETREGID                = 5112\n\tSYS_GETGROUPS               = 5113\n\tSYS_SETGROUPS               = 5114\n\tSYS_SETRESUID               = 5115\n\tSYS_GETRESUID               = 5116\n\tSYS_SETRESGID               = 5117\n\tSYS_GETRESGID               = 5118\n\tSYS_GETPGID                 = 5119\n\tSYS_SETFSUID                = 5120\n\tSYS_SETFSGID                = 5121\n\tSYS_GETSID                  = 5122\n\tSYS_CAPGET                  = 5123\n\tSYS_CAPSET                  = 5124\n\tSYS_RT_SIGPENDING           = 5125\n\tSYS_RT_SIGTIMEDWAIT         = 5126\n\tSYS_RT_SIGQUEUEINFO         = 5127\n\tSYS_RT_SIGSUSPEND           = 5128\n\tSYS_SIGALTSTACK             = 5129\n\tSYS_UTIME                   = 5130\n\tSYS_MKNOD                   = 5131\n\tSYS_PERSONALITY             = 5132\n\tSYS_USTAT                   = 5133\n\tSYS_STATFS                  = 5134\n\tSYS_FSTATFS                 = 5135\n\tSYS_SYSFS                   = 5136\n\tSYS_GETPRIORITY             = 5137\n\tSYS_SETPRIORITY             = 5138\n\tSYS_SCHED_SETPARAM          = 5139\n\tSYS_SCHED_GETPARAM          = 5140\n\tSYS_SCHED_SETSCHEDULER      = 5141\n\tSYS_SCHED_GETSCHEDULER      = 5142\n\tSYS_SCHED_GET_PRIORITY_MAX  = 5143\n\tSYS_SCHED_GET_PRIORITY_MIN  = 5144\n\tSYS_SCHED_RR_GET_INTERVAL   = 5145\n\tSYS_MLOCK                   = 5146\n\tSYS_MUNLOCK                 = 5147\n\tSYS_MLOCKALL                = 5148\n\tSYS_MUNLOCKALL              = 5149\n\tSYS_VHANGUP                 = 5150\n\tSYS_PIVOT_ROOT              = 5151\n\tSYS__SYSCTL                 = 5152\n\tSYS_PRCTL                   = 5153\n\tSYS_ADJTIMEX                = 5154\n\tSYS_SETRLIMIT               = 5155\n\tSYS_CHROOT                  = 5156\n\tSYS_SYNC                    = 5157\n\tSYS_ACCT                    = 5158\n\tSYS_SETTIMEOFDAY            = 5159\n\tSYS_MOUNT                   = 5160\n\tSYS_UMOUNT2                 = 5161\n\tSYS_SWAPON                  = 5162\n\tSYS_SWAPOFF                 = 5163\n\tSYS_REBOOT                  = 5164\n\tSYS_SETHOSTNAME             = 5165\n\tSYS_SETDOMAINNAME           = 5166\n\tSYS_CREATE_MODULE           = 5167\n\tSYS_INIT_MODULE             = 5168\n\tSYS_DELETE_MODULE           = 5169\n\tSYS_GET_KERNEL_SYMS         = 5170\n\tSYS_QUERY_MODULE            = 5171\n\tSYS_QUOTACTL                = 5172\n\tSYS_NFSSERVCTL              = 5173\n\tSYS_GETPMSG                 = 5174\n\tSYS_PUTPMSG                 = 5175\n\tSYS_AFS_SYSCALL             = 5176\n\tSYS_RESERVED177             = 5177\n\tSYS_GETTID                  = 5178\n\tSYS_READAHEAD               = 5179\n\tSYS_SETXATTR                = 5180\n\tSYS_LSETXATTR               = 5181\n\tSYS_FSETXATTR               = 5182\n\tSYS_GETXATTR                = 5183\n\tSYS_LGETXATTR               = 5184\n\tSYS_FGETXATTR               = 5185\n\tSYS_LISTXATTR               = 5186\n\tSYS_LLISTXATTR              = 5187\n\tSYS_FLISTXATTR              = 5188\n\tSYS_REMOVEXATTR             = 5189\n\tSYS_LREMOVEXATTR            = 5190\n\tSYS_FREMOVEXATTR            = 5191\n\tSYS_TKILL                   = 5192\n\tSYS_RESERVED193             = 5193\n\tSYS_FUTEX                   = 5194\n\tSYS_SCHED_SETAFFINITY       = 5195\n\tSYS_SCHED_GETAFFINITY       = 5196\n\tSYS_CACHEFLUSH              = 5197\n\tSYS_CACHECTL                = 5198\n\tSYS_SYSMIPS                 = 5199\n\tSYS_IO_SETUP                = 5200\n\tSYS_IO_DESTROY              = 5201\n\tSYS_IO_GETEVENTS            = 5202\n\tSYS_IO_SUBMIT               = 5203\n\tSYS_IO_CANCEL               = 5204\n\tSYS_EXIT_GROUP              = 5205\n\tSYS_LOOKUP_DCOOKIE          = 5206\n\tSYS_EPOLL_CREATE            = 5207\n\tSYS_EPOLL_CTL               = 5208\n\tSYS_EPOLL_WAIT              = 5209\n\tSYS_REMAP_FILE_PAGES        = 5210\n\tSYS_RT_SIGRETURN            = 5211\n\tSYS_SET_TID_ADDRESS         = 5212\n\tSYS_RESTART_SYSCALL         = 5213\n\tSYS_SEMTIMEDOP              = 5214\n\tSYS_FADVISE64               = 5215\n\tSYS_TIMER_CREATE            = 5216\n\tSYS_TIMER_SETTIME           = 5217\n\tSYS_TIMER_GETTIME           = 5218\n\tSYS_TIMER_GETOVERRUN        = 5219\n\tSYS_TIMER_DELETE            = 5220\n\tSYS_CLOCK_SETTIME           = 5221\n\tSYS_CLOCK_GETTIME           = 5222\n\tSYS_CLOCK_GETRES            = 5223\n\tSYS_CLOCK_NANOSLEEP         = 5224\n\tSYS_TGKILL                  = 5225\n\tSYS_UTIMES                  = 5226\n\tSYS_MBIND                   = 5227\n\tSYS_GET_MEMPOLICY           = 5228\n\tSYS_SET_MEMPOLICY           = 5229\n\tSYS_MQ_OPEN                 = 5230\n\tSYS_MQ_UNLINK               = 5231\n\tSYS_MQ_TIMEDSEND            = 5232\n\tSYS_MQ_TIMEDRECEIVE         = 5233\n\tSYS_MQ_NOTIFY               = 5234\n\tSYS_MQ_GETSETATTR           = 5235\n\tSYS_VSERVER                 = 5236\n\tSYS_WAITID                  = 5237\n\tSYS_ADD_KEY                 = 5239\n\tSYS_REQUEST_KEY             = 5240\n\tSYS_KEYCTL                  = 5241\n\tSYS_SET_THREAD_AREA         = 5242\n\tSYS_INOTIFY_INIT            = 5243\n\tSYS_INOTIFY_ADD_WATCH       = 5244\n\tSYS_INOTIFY_RM_WATCH        = 5245\n\tSYS_MIGRATE_PAGES           = 5246\n\tSYS_OPENAT                  = 5247\n\tSYS_MKDIRAT                 = 5248\n\tSYS_MKNODAT                 = 5249\n\tSYS_FCHOWNAT                = 5250\n\tSYS_FUTIMESAT               = 5251\n\tSYS_NEWFSTATAT              = 5252\n\tSYS_UNLINKAT                = 5253\n\tSYS_RENAMEAT                = 5254\n\tSYS_LINKAT                  = 5255\n\tSYS_SYMLINKAT               = 5256\n\tSYS_READLINKAT              = 5257\n\tSYS_FCHMODAT                = 5258\n\tSYS_FACCESSAT               = 5259\n\tSYS_PSELECT6                = 5260\n\tSYS_PPOLL                   = 5261\n\tSYS_UNSHARE                 = 5262\n\tSYS_SPLICE                  = 5263\n\tSYS_SYNC_FILE_RANGE         = 5264\n\tSYS_TEE                     = 5265\n\tSYS_VMSPLICE                = 5266\n\tSYS_MOVE_PAGES              = 5267\n\tSYS_SET_ROBUST_LIST         = 5268\n\tSYS_GET_ROBUST_LIST         = 5269\n\tSYS_KEXEC_LOAD              = 5270\n\tSYS_GETCPU                  = 5271\n\tSYS_EPOLL_PWAIT             = 5272\n\tSYS_IOPRIO_SET              = 5273\n\tSYS_IOPRIO_GET              = 5274\n\tSYS_UTIMENSAT               = 5275\n\tSYS_SIGNALFD                = 5276\n\tSYS_TIMERFD                 = 5277\n\tSYS_EVENTFD                 = 5278\n\tSYS_FALLOCATE               = 5279\n\tSYS_TIMERFD_CREATE          = 5280\n\tSYS_TIMERFD_GETTIME         = 5281\n\tSYS_TIMERFD_SETTIME         = 5282\n\tSYS_SIGNALFD4               = 5283\n\tSYS_EVENTFD2                = 5284\n\tSYS_EPOLL_CREATE1           = 5285\n\tSYS_DUP3                    = 5286\n\tSYS_PIPE2                   = 5287\n\tSYS_INOTIFY_INIT1           = 5288\n\tSYS_PREADV                  = 5289\n\tSYS_PWRITEV                 = 5290\n\tSYS_RT_TGSIGQUEUEINFO       = 5291\n\tSYS_PERF_EVENT_OPEN         = 5292\n\tSYS_ACCEPT4                 = 5293\n\tSYS_RECVMMSG                = 5294\n\tSYS_FANOTIFY_INIT           = 5295\n\tSYS_FANOTIFY_MARK           = 5296\n\tSYS_PRLIMIT64               = 5297\n\tSYS_NAME_TO_HANDLE_AT       = 5298\n\tSYS_OPEN_BY_HANDLE_AT       = 5299\n\tSYS_CLOCK_ADJTIME           = 5300\n\tSYS_SYNCFS                  = 5301\n\tSYS_SENDMMSG                = 5302\n\tSYS_SETNS                   = 5303\n\tSYS_PROCESS_VM_READV        = 5304\n\tSYS_PROCESS_VM_WRITEV       = 5305\n\tSYS_KCMP                    = 5306\n\tSYS_FINIT_MODULE            = 5307\n\tSYS_GETDENTS64              = 5308\n\tSYS_SCHED_SETATTR           = 5309\n\tSYS_SCHED_GETATTR           = 5310\n\tSYS_RENAMEAT2               = 5311\n\tSYS_SECCOMP                 = 5312\n\tSYS_GETRANDOM               = 5313\n\tSYS_MEMFD_CREATE            = 5314\n\tSYS_BPF                     = 5315\n\tSYS_EXECVEAT                = 5316\n\tSYS_USERFAULTFD             = 5317\n\tSYS_MEMBARRIER              = 5318\n\tSYS_MLOCK2                  = 5319\n\tSYS_COPY_FILE_RANGE         = 5320\n\tSYS_PREADV2                 = 5321\n\tSYS_PWRITEV2                = 5322\n\tSYS_PKEY_MPROTECT           = 5323\n\tSYS_PKEY_ALLOC              = 5324\n\tSYS_PKEY_FREE               = 5325\n\tSYS_STATX                   = 5326\n\tSYS_RSEQ                    = 5327\n\tSYS_IO_PGETEVENTS           = 5328\n\tSYS_PIDFD_SEND_SIGNAL       = 5424\n\tSYS_IO_URING_SETUP          = 5425\n\tSYS_IO_URING_ENTER          = 5426\n\tSYS_IO_URING_REGISTER       = 5427\n\tSYS_OPEN_TREE               = 5428\n\tSYS_MOVE_MOUNT              = 5429\n\tSYS_FSOPEN                  = 5430\n\tSYS_FSCONFIG                = 5431\n\tSYS_FSMOUNT                 = 5432\n\tSYS_FSPICK                  = 5433\n\tSYS_PIDFD_OPEN              = 5434\n\tSYS_CLONE3                  = 5435\n\tSYS_CLOSE_RANGE             = 5436\n\tSYS_OPENAT2                 = 5437\n\tSYS_PIDFD_GETFD             = 5438\n\tSYS_FACCESSAT2              = 5439\n\tSYS_PROCESS_MADVISE         = 5440\n\tSYS_EPOLL_PWAIT2            = 5441\n\tSYS_MOUNT_SETATTR           = 5442\n\tSYS_QUOTACTL_FD             = 5443\n\tSYS_LANDLOCK_CREATE_RULESET = 5444\n\tSYS_LANDLOCK_ADD_RULE       = 5445\n\tSYS_LANDLOCK_RESTRICT_SELF  = 5446\n\tSYS_PROCESS_MRELEASE        = 5448\n\tSYS_FUTEX_WAITV             = 5449\n\tSYS_SET_MEMPOLICY_HOME_NODE = 5450\n\tSYS_CACHESTAT               = 5451\n\tSYS_FCHMODAT2               = 5452\n\tSYS_MAP_SHADOW_STACK        = 5453\n\tSYS_FUTEX_WAKE              = 5454\n\tSYS_FUTEX_WAIT              = 5455\n\tSYS_FUTEX_REQUEUE           = 5456\n\tSYS_STATMOUNT               = 5457\n\tSYS_LISTMOUNT               = 5458\n\tSYS_LSM_GET_SELF_ATTR       = 5459\n\tSYS_LSM_SET_SELF_ATTR       = 5460\n\tSYS_LSM_LIST_MODULES        = 5461\n\tSYS_MSEAL                   = 5462\n\tSYS_SETXATTRAT              = 5463\n\tSYS_GETXATTRAT              = 5464\n\tSYS_LISTXATTRAT             = 5465\n\tSYS_REMOVEXATTRAT           = 5466\n\tSYS_OPEN_TREE_ATTR          = 5467\n)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/mips64le/include /tmp/mips64le/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mips64le && linux\n\npackage unix\n\nconst (\n\tSYS_READ                    = 5000\n\tSYS_WRITE                   = 5001\n\tSYS_OPEN                    = 5002\n\tSYS_CLOSE                   = 5003\n\tSYS_STAT                    = 5004\n\tSYS_FSTAT                   = 5005\n\tSYS_LSTAT                   = 5006\n\tSYS_POLL                    = 5007\n\tSYS_LSEEK                   = 5008\n\tSYS_MMAP                    = 5009\n\tSYS_MPROTECT                = 5010\n\tSYS_MUNMAP                  = 5011\n\tSYS_BRK                     = 5012\n\tSYS_RT_SIGACTION            = 5013\n\tSYS_RT_SIGPROCMASK          = 5014\n\tSYS_IOCTL                   = 5015\n\tSYS_PREAD64                 = 5016\n\tSYS_PWRITE64                = 5017\n\tSYS_READV                   = 5018\n\tSYS_WRITEV                  = 5019\n\tSYS_ACCESS                  = 5020\n\tSYS_PIPE                    = 5021\n\tSYS__NEWSELECT              = 5022\n\tSYS_SCHED_YIELD             = 5023\n\tSYS_MREMAP                  = 5024\n\tSYS_MSYNC                   = 5025\n\tSYS_MINCORE                 = 5026\n\tSYS_MADVISE                 = 5027\n\tSYS_SHMGET                  = 5028\n\tSYS_SHMAT                   = 5029\n\tSYS_SHMCTL                  = 5030\n\tSYS_DUP                     = 5031\n\tSYS_DUP2                    = 5032\n\tSYS_PAUSE                   = 5033\n\tSYS_NANOSLEEP               = 5034\n\tSYS_GETITIMER               = 5035\n\tSYS_SETITIMER               = 5036\n\tSYS_ALARM                   = 5037\n\tSYS_GETPID                  = 5038\n\tSYS_SENDFILE                = 5039\n\tSYS_SOCKET                  = 5040\n\tSYS_CONNECT                 = 5041\n\tSYS_ACCEPT                  = 5042\n\tSYS_SENDTO                  = 5043\n\tSYS_RECVFROM                = 5044\n\tSYS_SENDMSG                 = 5045\n\tSYS_RECVMSG                 = 5046\n\tSYS_SHUTDOWN                = 5047\n\tSYS_BIND                    = 5048\n\tSYS_LISTEN                  = 5049\n\tSYS_GETSOCKNAME             = 5050\n\tSYS_GETPEERNAME             = 5051\n\tSYS_SOCKETPAIR              = 5052\n\tSYS_SETSOCKOPT              = 5053\n\tSYS_GETSOCKOPT              = 5054\n\tSYS_CLONE                   = 5055\n\tSYS_FORK                    = 5056\n\tSYS_EXECVE                  = 5057\n\tSYS_EXIT                    = 5058\n\tSYS_WAIT4                   = 5059\n\tSYS_KILL                    = 5060\n\tSYS_UNAME                   = 5061\n\tSYS_SEMGET                  = 5062\n\tSYS_SEMOP                   = 5063\n\tSYS_SEMCTL                  = 5064\n\tSYS_SHMDT                   = 5065\n\tSYS_MSGGET                  = 5066\n\tSYS_MSGSND                  = 5067\n\tSYS_MSGRCV                  = 5068\n\tSYS_MSGCTL                  = 5069\n\tSYS_FCNTL                   = 5070\n\tSYS_FLOCK                   = 5071\n\tSYS_FSYNC                   = 5072\n\tSYS_FDATASYNC               = 5073\n\tSYS_TRUNCATE                = 5074\n\tSYS_FTRUNCATE               = 5075\n\tSYS_GETDENTS                = 5076\n\tSYS_GETCWD                  = 5077\n\tSYS_CHDIR                   = 5078\n\tSYS_FCHDIR                  = 5079\n\tSYS_RENAME                  = 5080\n\tSYS_MKDIR                   = 5081\n\tSYS_RMDIR                   = 5082\n\tSYS_CREAT                   = 5083\n\tSYS_LINK                    = 5084\n\tSYS_UNLINK                  = 5085\n\tSYS_SYMLINK                 = 5086\n\tSYS_READLINK                = 5087\n\tSYS_CHMOD                   = 5088\n\tSYS_FCHMOD                  = 5089\n\tSYS_CHOWN                   = 5090\n\tSYS_FCHOWN                  = 5091\n\tSYS_LCHOWN                  = 5092\n\tSYS_UMASK                   = 5093\n\tSYS_GETTIMEOFDAY            = 5094\n\tSYS_GETRLIMIT               = 5095\n\tSYS_GETRUSAGE               = 5096\n\tSYS_SYSINFO                 = 5097\n\tSYS_TIMES                   = 5098\n\tSYS_PTRACE                  = 5099\n\tSYS_GETUID                  = 5100\n\tSYS_SYSLOG                  = 5101\n\tSYS_GETGID                  = 5102\n\tSYS_SETUID                  = 5103\n\tSYS_SETGID                  = 5104\n\tSYS_GETEUID                 = 5105\n\tSYS_GETEGID                 = 5106\n\tSYS_SETPGID                 = 5107\n\tSYS_GETPPID                 = 5108\n\tSYS_GETPGRP                 = 5109\n\tSYS_SETSID                  = 5110\n\tSYS_SETREUID                = 5111\n\tSYS_SETREGID                = 5112\n\tSYS_GETGROUPS               = 5113\n\tSYS_SETGROUPS               = 5114\n\tSYS_SETRESUID               = 5115\n\tSYS_GETRESUID               = 5116\n\tSYS_SETRESGID               = 5117\n\tSYS_GETRESGID               = 5118\n\tSYS_GETPGID                 = 5119\n\tSYS_SETFSUID                = 5120\n\tSYS_SETFSGID                = 5121\n\tSYS_GETSID                  = 5122\n\tSYS_CAPGET                  = 5123\n\tSYS_CAPSET                  = 5124\n\tSYS_RT_SIGPENDING           = 5125\n\tSYS_RT_SIGTIMEDWAIT         = 5126\n\tSYS_RT_SIGQUEUEINFO         = 5127\n\tSYS_RT_SIGSUSPEND           = 5128\n\tSYS_SIGALTSTACK             = 5129\n\tSYS_UTIME                   = 5130\n\tSYS_MKNOD                   = 5131\n\tSYS_PERSONALITY             = 5132\n\tSYS_USTAT                   = 5133\n\tSYS_STATFS                  = 5134\n\tSYS_FSTATFS                 = 5135\n\tSYS_SYSFS                   = 5136\n\tSYS_GETPRIORITY             = 5137\n\tSYS_SETPRIORITY             = 5138\n\tSYS_SCHED_SETPARAM          = 5139\n\tSYS_SCHED_GETPARAM          = 5140\n\tSYS_SCHED_SETSCHEDULER      = 5141\n\tSYS_SCHED_GETSCHEDULER      = 5142\n\tSYS_SCHED_GET_PRIORITY_MAX  = 5143\n\tSYS_SCHED_GET_PRIORITY_MIN  = 5144\n\tSYS_SCHED_RR_GET_INTERVAL   = 5145\n\tSYS_MLOCK                   = 5146\n\tSYS_MUNLOCK                 = 5147\n\tSYS_MLOCKALL                = 5148\n\tSYS_MUNLOCKALL              = 5149\n\tSYS_VHANGUP                 = 5150\n\tSYS_PIVOT_ROOT              = 5151\n\tSYS__SYSCTL                 = 5152\n\tSYS_PRCTL                   = 5153\n\tSYS_ADJTIMEX                = 5154\n\tSYS_SETRLIMIT               = 5155\n\tSYS_CHROOT                  = 5156\n\tSYS_SYNC                    = 5157\n\tSYS_ACCT                    = 5158\n\tSYS_SETTIMEOFDAY            = 5159\n\tSYS_MOUNT                   = 5160\n\tSYS_UMOUNT2                 = 5161\n\tSYS_SWAPON                  = 5162\n\tSYS_SWAPOFF                 = 5163\n\tSYS_REBOOT                  = 5164\n\tSYS_SETHOSTNAME             = 5165\n\tSYS_SETDOMAINNAME           = 5166\n\tSYS_CREATE_MODULE           = 5167\n\tSYS_INIT_MODULE             = 5168\n\tSYS_DELETE_MODULE           = 5169\n\tSYS_GET_KERNEL_SYMS         = 5170\n\tSYS_QUERY_MODULE            = 5171\n\tSYS_QUOTACTL                = 5172\n\tSYS_NFSSERVCTL              = 5173\n\tSYS_GETPMSG                 = 5174\n\tSYS_PUTPMSG                 = 5175\n\tSYS_AFS_SYSCALL             = 5176\n\tSYS_RESERVED177             = 5177\n\tSYS_GETTID                  = 5178\n\tSYS_READAHEAD               = 5179\n\tSYS_SETXATTR                = 5180\n\tSYS_LSETXATTR               = 5181\n\tSYS_FSETXATTR               = 5182\n\tSYS_GETXATTR                = 5183\n\tSYS_LGETXATTR               = 5184\n\tSYS_FGETXATTR               = 5185\n\tSYS_LISTXATTR               = 5186\n\tSYS_LLISTXATTR              = 5187\n\tSYS_FLISTXATTR              = 5188\n\tSYS_REMOVEXATTR             = 5189\n\tSYS_LREMOVEXATTR            = 5190\n\tSYS_FREMOVEXATTR            = 5191\n\tSYS_TKILL                   = 5192\n\tSYS_RESERVED193             = 5193\n\tSYS_FUTEX                   = 5194\n\tSYS_SCHED_SETAFFINITY       = 5195\n\tSYS_SCHED_GETAFFINITY       = 5196\n\tSYS_CACHEFLUSH              = 5197\n\tSYS_CACHECTL                = 5198\n\tSYS_SYSMIPS                 = 5199\n\tSYS_IO_SETUP                = 5200\n\tSYS_IO_DESTROY              = 5201\n\tSYS_IO_GETEVENTS            = 5202\n\tSYS_IO_SUBMIT               = 5203\n\tSYS_IO_CANCEL               = 5204\n\tSYS_EXIT_GROUP              = 5205\n\tSYS_LOOKUP_DCOOKIE          = 5206\n\tSYS_EPOLL_CREATE            = 5207\n\tSYS_EPOLL_CTL               = 5208\n\tSYS_EPOLL_WAIT              = 5209\n\tSYS_REMAP_FILE_PAGES        = 5210\n\tSYS_RT_SIGRETURN            = 5211\n\tSYS_SET_TID_ADDRESS         = 5212\n\tSYS_RESTART_SYSCALL         = 5213\n\tSYS_SEMTIMEDOP              = 5214\n\tSYS_FADVISE64               = 5215\n\tSYS_TIMER_CREATE            = 5216\n\tSYS_TIMER_SETTIME           = 5217\n\tSYS_TIMER_GETTIME           = 5218\n\tSYS_TIMER_GETOVERRUN        = 5219\n\tSYS_TIMER_DELETE            = 5220\n\tSYS_CLOCK_SETTIME           = 5221\n\tSYS_CLOCK_GETTIME           = 5222\n\tSYS_CLOCK_GETRES            = 5223\n\tSYS_CLOCK_NANOSLEEP         = 5224\n\tSYS_TGKILL                  = 5225\n\tSYS_UTIMES                  = 5226\n\tSYS_MBIND                   = 5227\n\tSYS_GET_MEMPOLICY           = 5228\n\tSYS_SET_MEMPOLICY           = 5229\n\tSYS_MQ_OPEN                 = 5230\n\tSYS_MQ_UNLINK               = 5231\n\tSYS_MQ_TIMEDSEND            = 5232\n\tSYS_MQ_TIMEDRECEIVE         = 5233\n\tSYS_MQ_NOTIFY               = 5234\n\tSYS_MQ_GETSETATTR           = 5235\n\tSYS_VSERVER                 = 5236\n\tSYS_WAITID                  = 5237\n\tSYS_ADD_KEY                 = 5239\n\tSYS_REQUEST_KEY             = 5240\n\tSYS_KEYCTL                  = 5241\n\tSYS_SET_THREAD_AREA         = 5242\n\tSYS_INOTIFY_INIT            = 5243\n\tSYS_INOTIFY_ADD_WATCH       = 5244\n\tSYS_INOTIFY_RM_WATCH        = 5245\n\tSYS_MIGRATE_PAGES           = 5246\n\tSYS_OPENAT                  = 5247\n\tSYS_MKDIRAT                 = 5248\n\tSYS_MKNODAT                 = 5249\n\tSYS_FCHOWNAT                = 5250\n\tSYS_FUTIMESAT               = 5251\n\tSYS_NEWFSTATAT              = 5252\n\tSYS_UNLINKAT                = 5253\n\tSYS_RENAMEAT                = 5254\n\tSYS_LINKAT                  = 5255\n\tSYS_SYMLINKAT               = 5256\n\tSYS_READLINKAT              = 5257\n\tSYS_FCHMODAT                = 5258\n\tSYS_FACCESSAT               = 5259\n\tSYS_PSELECT6                = 5260\n\tSYS_PPOLL                   = 5261\n\tSYS_UNSHARE                 = 5262\n\tSYS_SPLICE                  = 5263\n\tSYS_SYNC_FILE_RANGE         = 5264\n\tSYS_TEE                     = 5265\n\tSYS_VMSPLICE                = 5266\n\tSYS_MOVE_PAGES              = 5267\n\tSYS_SET_ROBUST_LIST         = 5268\n\tSYS_GET_ROBUST_LIST         = 5269\n\tSYS_KEXEC_LOAD              = 5270\n\tSYS_GETCPU                  = 5271\n\tSYS_EPOLL_PWAIT             = 5272\n\tSYS_IOPRIO_SET              = 5273\n\tSYS_IOPRIO_GET              = 5274\n\tSYS_UTIMENSAT               = 5275\n\tSYS_SIGNALFD                = 5276\n\tSYS_TIMERFD                 = 5277\n\tSYS_EVENTFD                 = 5278\n\tSYS_FALLOCATE               = 5279\n\tSYS_TIMERFD_CREATE          = 5280\n\tSYS_TIMERFD_GETTIME         = 5281\n\tSYS_TIMERFD_SETTIME         = 5282\n\tSYS_SIGNALFD4               = 5283\n\tSYS_EVENTFD2                = 5284\n\tSYS_EPOLL_CREATE1           = 5285\n\tSYS_DUP3                    = 5286\n\tSYS_PIPE2                   = 5287\n\tSYS_INOTIFY_INIT1           = 5288\n\tSYS_PREADV                  = 5289\n\tSYS_PWRITEV                 = 5290\n\tSYS_RT_TGSIGQUEUEINFO       = 5291\n\tSYS_PERF_EVENT_OPEN         = 5292\n\tSYS_ACCEPT4                 = 5293\n\tSYS_RECVMMSG                = 5294\n\tSYS_FANOTIFY_INIT           = 5295\n\tSYS_FANOTIFY_MARK           = 5296\n\tSYS_PRLIMIT64               = 5297\n\tSYS_NAME_TO_HANDLE_AT       = 5298\n\tSYS_OPEN_BY_HANDLE_AT       = 5299\n\tSYS_CLOCK_ADJTIME           = 5300\n\tSYS_SYNCFS                  = 5301\n\tSYS_SENDMMSG                = 5302\n\tSYS_SETNS                   = 5303\n\tSYS_PROCESS_VM_READV        = 5304\n\tSYS_PROCESS_VM_WRITEV       = 5305\n\tSYS_KCMP                    = 5306\n\tSYS_FINIT_MODULE            = 5307\n\tSYS_GETDENTS64              = 5308\n\tSYS_SCHED_SETATTR           = 5309\n\tSYS_SCHED_GETATTR           = 5310\n\tSYS_RENAMEAT2               = 5311\n\tSYS_SECCOMP                 = 5312\n\tSYS_GETRANDOM               = 5313\n\tSYS_MEMFD_CREATE            = 5314\n\tSYS_BPF                     = 5315\n\tSYS_EXECVEAT                = 5316\n\tSYS_USERFAULTFD             = 5317\n\tSYS_MEMBARRIER              = 5318\n\tSYS_MLOCK2                  = 5319\n\tSYS_COPY_FILE_RANGE         = 5320\n\tSYS_PREADV2                 = 5321\n\tSYS_PWRITEV2                = 5322\n\tSYS_PKEY_MPROTECT           = 5323\n\tSYS_PKEY_ALLOC              = 5324\n\tSYS_PKEY_FREE               = 5325\n\tSYS_STATX                   = 5326\n\tSYS_RSEQ                    = 5327\n\tSYS_IO_PGETEVENTS           = 5328\n\tSYS_PIDFD_SEND_SIGNAL       = 5424\n\tSYS_IO_URING_SETUP          = 5425\n\tSYS_IO_URING_ENTER          = 5426\n\tSYS_IO_URING_REGISTER       = 5427\n\tSYS_OPEN_TREE               = 5428\n\tSYS_MOVE_MOUNT              = 5429\n\tSYS_FSOPEN                  = 5430\n\tSYS_FSCONFIG                = 5431\n\tSYS_FSMOUNT                 = 5432\n\tSYS_FSPICK                  = 5433\n\tSYS_PIDFD_OPEN              = 5434\n\tSYS_CLONE3                  = 5435\n\tSYS_CLOSE_RANGE             = 5436\n\tSYS_OPENAT2                 = 5437\n\tSYS_PIDFD_GETFD             = 5438\n\tSYS_FACCESSAT2              = 5439\n\tSYS_PROCESS_MADVISE         = 5440\n\tSYS_EPOLL_PWAIT2            = 5441\n\tSYS_MOUNT_SETATTR           = 5442\n\tSYS_QUOTACTL_FD             = 5443\n\tSYS_LANDLOCK_CREATE_RULESET = 5444\n\tSYS_LANDLOCK_ADD_RULE       = 5445\n\tSYS_LANDLOCK_RESTRICT_SELF  = 5446\n\tSYS_PROCESS_MRELEASE        = 5448\n\tSYS_FUTEX_WAITV             = 5449\n\tSYS_SET_MEMPOLICY_HOME_NODE = 5450\n\tSYS_CACHESTAT               = 5451\n\tSYS_FCHMODAT2               = 5452\n\tSYS_MAP_SHADOW_STACK        = 5453\n\tSYS_FUTEX_WAKE              = 5454\n\tSYS_FUTEX_WAIT              = 5455\n\tSYS_FUTEX_REQUEUE           = 5456\n\tSYS_STATMOUNT               = 5457\n\tSYS_LISTMOUNT               = 5458\n\tSYS_LSM_GET_SELF_ATTR       = 5459\n\tSYS_LSM_SET_SELF_ATTR       = 5460\n\tSYS_LSM_LIST_MODULES        = 5461\n\tSYS_MSEAL                   = 5462\n\tSYS_SETXATTRAT              = 5463\n\tSYS_GETXATTRAT              = 5464\n\tSYS_LISTXATTRAT             = 5465\n\tSYS_REMOVEXATTRAT           = 5466\n\tSYS_OPEN_TREE_ATTR          = 5467\n)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/mipsle/include /tmp/mipsle/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mipsle && linux\n\npackage unix\n\nconst (\n\tSYS_SYSCALL                      = 4000\n\tSYS_EXIT                         = 4001\n\tSYS_FORK                         = 4002\n\tSYS_READ                         = 4003\n\tSYS_WRITE                        = 4004\n\tSYS_OPEN                         = 4005\n\tSYS_CLOSE                        = 4006\n\tSYS_WAITPID                      = 4007\n\tSYS_CREAT                        = 4008\n\tSYS_LINK                         = 4009\n\tSYS_UNLINK                       = 4010\n\tSYS_EXECVE                       = 4011\n\tSYS_CHDIR                        = 4012\n\tSYS_TIME                         = 4013\n\tSYS_MKNOD                        = 4014\n\tSYS_CHMOD                        = 4015\n\tSYS_LCHOWN                       = 4016\n\tSYS_BREAK                        = 4017\n\tSYS_UNUSED18                     = 4018\n\tSYS_LSEEK                        = 4019\n\tSYS_GETPID                       = 4020\n\tSYS_MOUNT                        = 4021\n\tSYS_UMOUNT                       = 4022\n\tSYS_SETUID                       = 4023\n\tSYS_GETUID                       = 4024\n\tSYS_STIME                        = 4025\n\tSYS_PTRACE                       = 4026\n\tSYS_ALARM                        = 4027\n\tSYS_UNUSED28                     = 4028\n\tSYS_PAUSE                        = 4029\n\tSYS_UTIME                        = 4030\n\tSYS_STTY                         = 4031\n\tSYS_GTTY                         = 4032\n\tSYS_ACCESS                       = 4033\n\tSYS_NICE                         = 4034\n\tSYS_FTIME                        = 4035\n\tSYS_SYNC                         = 4036\n\tSYS_KILL                         = 4037\n\tSYS_RENAME                       = 4038\n\tSYS_MKDIR                        = 4039\n\tSYS_RMDIR                        = 4040\n\tSYS_DUP                          = 4041\n\tSYS_PIPE                         = 4042\n\tSYS_TIMES                        = 4043\n\tSYS_PROF                         = 4044\n\tSYS_BRK                          = 4045\n\tSYS_SETGID                       = 4046\n\tSYS_GETGID                       = 4047\n\tSYS_SIGNAL                       = 4048\n\tSYS_GETEUID                      = 4049\n\tSYS_GETEGID                      = 4050\n\tSYS_ACCT                         = 4051\n\tSYS_UMOUNT2                      = 4052\n\tSYS_LOCK                         = 4053\n\tSYS_IOCTL                        = 4054\n\tSYS_FCNTL                        = 4055\n\tSYS_MPX                          = 4056\n\tSYS_SETPGID                      = 4057\n\tSYS_ULIMIT                       = 4058\n\tSYS_UNUSED59                     = 4059\n\tSYS_UMASK                        = 4060\n\tSYS_CHROOT                       = 4061\n\tSYS_USTAT                        = 4062\n\tSYS_DUP2                         = 4063\n\tSYS_GETPPID                      = 4064\n\tSYS_GETPGRP                      = 4065\n\tSYS_SETSID                       = 4066\n\tSYS_SIGACTION                    = 4067\n\tSYS_SGETMASK                     = 4068\n\tSYS_SSETMASK                     = 4069\n\tSYS_SETREUID                     = 4070\n\tSYS_SETREGID                     = 4071\n\tSYS_SIGSUSPEND                   = 4072\n\tSYS_SIGPENDING                   = 4073\n\tSYS_SETHOSTNAME                  = 4074\n\tSYS_SETRLIMIT                    = 4075\n\tSYS_GETRLIMIT                    = 4076\n\tSYS_GETRUSAGE                    = 4077\n\tSYS_GETTIMEOFDAY                 = 4078\n\tSYS_SETTIMEOFDAY                 = 4079\n\tSYS_GETGROUPS                    = 4080\n\tSYS_SETGROUPS                    = 4081\n\tSYS_RESERVED82                   = 4082\n\tSYS_SYMLINK                      = 4083\n\tSYS_UNUSED84                     = 4084\n\tSYS_READLINK                     = 4085\n\tSYS_USELIB                       = 4086\n\tSYS_SWAPON                       = 4087\n\tSYS_REBOOT                       = 4088\n\tSYS_READDIR                      = 4089\n\tSYS_MMAP                         = 4090\n\tSYS_MUNMAP                       = 4091\n\tSYS_TRUNCATE                     = 4092\n\tSYS_FTRUNCATE                    = 4093\n\tSYS_FCHMOD                       = 4094\n\tSYS_FCHOWN                       = 4095\n\tSYS_GETPRIORITY                  = 4096\n\tSYS_SETPRIORITY                  = 4097\n\tSYS_PROFIL                       = 4098\n\tSYS_STATFS                       = 4099\n\tSYS_FSTATFS                      = 4100\n\tSYS_IOPERM                       = 4101\n\tSYS_SOCKETCALL                   = 4102\n\tSYS_SYSLOG                       = 4103\n\tSYS_SETITIMER                    = 4104\n\tSYS_GETITIMER                    = 4105\n\tSYS_STAT                         = 4106\n\tSYS_LSTAT                        = 4107\n\tSYS_FSTAT                        = 4108\n\tSYS_UNUSED109                    = 4109\n\tSYS_IOPL                         = 4110\n\tSYS_VHANGUP                      = 4111\n\tSYS_IDLE                         = 4112\n\tSYS_VM86                         = 4113\n\tSYS_WAIT4                        = 4114\n\tSYS_SWAPOFF                      = 4115\n\tSYS_SYSINFO                      = 4116\n\tSYS_IPC                          = 4117\n\tSYS_FSYNC                        = 4118\n\tSYS_SIGRETURN                    = 4119\n\tSYS_CLONE                        = 4120\n\tSYS_SETDOMAINNAME                = 4121\n\tSYS_UNAME                        = 4122\n\tSYS_MODIFY_LDT                   = 4123\n\tSYS_ADJTIMEX                     = 4124\n\tSYS_MPROTECT                     = 4125\n\tSYS_SIGPROCMASK                  = 4126\n\tSYS_CREATE_MODULE                = 4127\n\tSYS_INIT_MODULE                  = 4128\n\tSYS_DELETE_MODULE                = 4129\n\tSYS_GET_KERNEL_SYMS              = 4130\n\tSYS_QUOTACTL                     = 4131\n\tSYS_GETPGID                      = 4132\n\tSYS_FCHDIR                       = 4133\n\tSYS_BDFLUSH                      = 4134\n\tSYS_SYSFS                        = 4135\n\tSYS_PERSONALITY                  = 4136\n\tSYS_AFS_SYSCALL                  = 4137\n\tSYS_SETFSUID                     = 4138\n\tSYS_SETFSGID                     = 4139\n\tSYS__LLSEEK                      = 4140\n\tSYS_GETDENTS                     = 4141\n\tSYS__NEWSELECT                   = 4142\n\tSYS_FLOCK                        = 4143\n\tSYS_MSYNC                        = 4144\n\tSYS_READV                        = 4145\n\tSYS_WRITEV                       = 4146\n\tSYS_CACHEFLUSH                   = 4147\n\tSYS_CACHECTL                     = 4148\n\tSYS_SYSMIPS                      = 4149\n\tSYS_UNUSED150                    = 4150\n\tSYS_GETSID                       = 4151\n\tSYS_FDATASYNC                    = 4152\n\tSYS__SYSCTL                      = 4153\n\tSYS_MLOCK                        = 4154\n\tSYS_MUNLOCK                      = 4155\n\tSYS_MLOCKALL                     = 4156\n\tSYS_MUNLOCKALL                   = 4157\n\tSYS_SCHED_SETPARAM               = 4158\n\tSYS_SCHED_GETPARAM               = 4159\n\tSYS_SCHED_SETSCHEDULER           = 4160\n\tSYS_SCHED_GETSCHEDULER           = 4161\n\tSYS_SCHED_YIELD                  = 4162\n\tSYS_SCHED_GET_PRIORITY_MAX       = 4163\n\tSYS_SCHED_GET_PRIORITY_MIN       = 4164\n\tSYS_SCHED_RR_GET_INTERVAL        = 4165\n\tSYS_NANOSLEEP                    = 4166\n\tSYS_MREMAP                       = 4167\n\tSYS_ACCEPT                       = 4168\n\tSYS_BIND                         = 4169\n\tSYS_CONNECT                      = 4170\n\tSYS_GETPEERNAME                  = 4171\n\tSYS_GETSOCKNAME                  = 4172\n\tSYS_GETSOCKOPT                   = 4173\n\tSYS_LISTEN                       = 4174\n\tSYS_RECV                         = 4175\n\tSYS_RECVFROM                     = 4176\n\tSYS_RECVMSG                      = 4177\n\tSYS_SEND                         = 4178\n\tSYS_SENDMSG                      = 4179\n\tSYS_SENDTO                       = 4180\n\tSYS_SETSOCKOPT                   = 4181\n\tSYS_SHUTDOWN                     = 4182\n\tSYS_SOCKET                       = 4183\n\tSYS_SOCKETPAIR                   = 4184\n\tSYS_SETRESUID                    = 4185\n\tSYS_GETRESUID                    = 4186\n\tSYS_QUERY_MODULE                 = 4187\n\tSYS_POLL                         = 4188\n\tSYS_NFSSERVCTL                   = 4189\n\tSYS_SETRESGID                    = 4190\n\tSYS_GETRESGID                    = 4191\n\tSYS_PRCTL                        = 4192\n\tSYS_RT_SIGRETURN                 = 4193\n\tSYS_RT_SIGACTION                 = 4194\n\tSYS_RT_SIGPROCMASK               = 4195\n\tSYS_RT_SIGPENDING                = 4196\n\tSYS_RT_SIGTIMEDWAIT              = 4197\n\tSYS_RT_SIGQUEUEINFO              = 4198\n\tSYS_RT_SIGSUSPEND                = 4199\n\tSYS_PREAD64                      = 4200\n\tSYS_PWRITE64                     = 4201\n\tSYS_CHOWN                        = 4202\n\tSYS_GETCWD                       = 4203\n\tSYS_CAPGET                       = 4204\n\tSYS_CAPSET                       = 4205\n\tSYS_SIGALTSTACK                  = 4206\n\tSYS_SENDFILE                     = 4207\n\tSYS_GETPMSG                      = 4208\n\tSYS_PUTPMSG                      = 4209\n\tSYS_MMAP2                        = 4210\n\tSYS_TRUNCATE64                   = 4211\n\tSYS_FTRUNCATE64                  = 4212\n\tSYS_STAT64                       = 4213\n\tSYS_LSTAT64                      = 4214\n\tSYS_FSTAT64                      = 4215\n\tSYS_PIVOT_ROOT                   = 4216\n\tSYS_MINCORE                      = 4217\n\tSYS_MADVISE                      = 4218\n\tSYS_GETDENTS64                   = 4219\n\tSYS_FCNTL64                      = 4220\n\tSYS_RESERVED221                  = 4221\n\tSYS_GETTID                       = 4222\n\tSYS_READAHEAD                    = 4223\n\tSYS_SETXATTR                     = 4224\n\tSYS_LSETXATTR                    = 4225\n\tSYS_FSETXATTR                    = 4226\n\tSYS_GETXATTR                     = 4227\n\tSYS_LGETXATTR                    = 4228\n\tSYS_FGETXATTR                    = 4229\n\tSYS_LISTXATTR                    = 4230\n\tSYS_LLISTXATTR                   = 4231\n\tSYS_FLISTXATTR                   = 4232\n\tSYS_REMOVEXATTR                  = 4233\n\tSYS_LREMOVEXATTR                 = 4234\n\tSYS_FREMOVEXATTR                 = 4235\n\tSYS_TKILL                        = 4236\n\tSYS_SENDFILE64                   = 4237\n\tSYS_FUTEX                        = 4238\n\tSYS_SCHED_SETAFFINITY            = 4239\n\tSYS_SCHED_GETAFFINITY            = 4240\n\tSYS_IO_SETUP                     = 4241\n\tSYS_IO_DESTROY                   = 4242\n\tSYS_IO_GETEVENTS                 = 4243\n\tSYS_IO_SUBMIT                    = 4244\n\tSYS_IO_CANCEL                    = 4245\n\tSYS_EXIT_GROUP                   = 4246\n\tSYS_LOOKUP_DCOOKIE               = 4247\n\tSYS_EPOLL_CREATE                 = 4248\n\tSYS_EPOLL_CTL                    = 4249\n\tSYS_EPOLL_WAIT                   = 4250\n\tSYS_REMAP_FILE_PAGES             = 4251\n\tSYS_SET_TID_ADDRESS              = 4252\n\tSYS_RESTART_SYSCALL              = 4253\n\tSYS_FADVISE64                    = 4254\n\tSYS_STATFS64                     = 4255\n\tSYS_FSTATFS64                    = 4256\n\tSYS_TIMER_CREATE                 = 4257\n\tSYS_TIMER_SETTIME                = 4258\n\tSYS_TIMER_GETTIME                = 4259\n\tSYS_TIMER_GETOVERRUN             = 4260\n\tSYS_TIMER_DELETE                 = 4261\n\tSYS_CLOCK_SETTIME                = 4262\n\tSYS_CLOCK_GETTIME                = 4263\n\tSYS_CLOCK_GETRES                 = 4264\n\tSYS_CLOCK_NANOSLEEP              = 4265\n\tSYS_TGKILL                       = 4266\n\tSYS_UTIMES                       = 4267\n\tSYS_MBIND                        = 4268\n\tSYS_GET_MEMPOLICY                = 4269\n\tSYS_SET_MEMPOLICY                = 4270\n\tSYS_MQ_OPEN                      = 4271\n\tSYS_MQ_UNLINK                    = 4272\n\tSYS_MQ_TIMEDSEND                 = 4273\n\tSYS_MQ_TIMEDRECEIVE              = 4274\n\tSYS_MQ_NOTIFY                    = 4275\n\tSYS_MQ_GETSETATTR                = 4276\n\tSYS_VSERVER                      = 4277\n\tSYS_WAITID                       = 4278\n\tSYS_ADD_KEY                      = 4280\n\tSYS_REQUEST_KEY                  = 4281\n\tSYS_KEYCTL                       = 4282\n\tSYS_SET_THREAD_AREA              = 4283\n\tSYS_INOTIFY_INIT                 = 4284\n\tSYS_INOTIFY_ADD_WATCH            = 4285\n\tSYS_INOTIFY_RM_WATCH             = 4286\n\tSYS_MIGRATE_PAGES                = 4287\n\tSYS_OPENAT                       = 4288\n\tSYS_MKDIRAT                      = 4289\n\tSYS_MKNODAT                      = 4290\n\tSYS_FCHOWNAT                     = 4291\n\tSYS_FUTIMESAT                    = 4292\n\tSYS_FSTATAT64                    = 4293\n\tSYS_UNLINKAT                     = 4294\n\tSYS_RENAMEAT                     = 4295\n\tSYS_LINKAT                       = 4296\n\tSYS_SYMLINKAT                    = 4297\n\tSYS_READLINKAT                   = 4298\n\tSYS_FCHMODAT                     = 4299\n\tSYS_FACCESSAT                    = 4300\n\tSYS_PSELECT6                     = 4301\n\tSYS_PPOLL                        = 4302\n\tSYS_UNSHARE                      = 4303\n\tSYS_SPLICE                       = 4304\n\tSYS_SYNC_FILE_RANGE              = 4305\n\tSYS_TEE                          = 4306\n\tSYS_VMSPLICE                     = 4307\n\tSYS_MOVE_PAGES                   = 4308\n\tSYS_SET_ROBUST_LIST              = 4309\n\tSYS_GET_ROBUST_LIST              = 4310\n\tSYS_KEXEC_LOAD                   = 4311\n\tSYS_GETCPU                       = 4312\n\tSYS_EPOLL_PWAIT                  = 4313\n\tSYS_IOPRIO_SET                   = 4314\n\tSYS_IOPRIO_GET                   = 4315\n\tSYS_UTIMENSAT                    = 4316\n\tSYS_SIGNALFD                     = 4317\n\tSYS_TIMERFD                      = 4318\n\tSYS_EVENTFD                      = 4319\n\tSYS_FALLOCATE                    = 4320\n\tSYS_TIMERFD_CREATE               = 4321\n\tSYS_TIMERFD_GETTIME              = 4322\n\tSYS_TIMERFD_SETTIME              = 4323\n\tSYS_SIGNALFD4                    = 4324\n\tSYS_EVENTFD2                     = 4325\n\tSYS_EPOLL_CREATE1                = 4326\n\tSYS_DUP3                         = 4327\n\tSYS_PIPE2                        = 4328\n\tSYS_INOTIFY_INIT1                = 4329\n\tSYS_PREADV                       = 4330\n\tSYS_PWRITEV                      = 4331\n\tSYS_RT_TGSIGQUEUEINFO            = 4332\n\tSYS_PERF_EVENT_OPEN              = 4333\n\tSYS_ACCEPT4                      = 4334\n\tSYS_RECVMMSG                     = 4335\n\tSYS_FANOTIFY_INIT                = 4336\n\tSYS_FANOTIFY_MARK                = 4337\n\tSYS_PRLIMIT64                    = 4338\n\tSYS_NAME_TO_HANDLE_AT            = 4339\n\tSYS_OPEN_BY_HANDLE_AT            = 4340\n\tSYS_CLOCK_ADJTIME                = 4341\n\tSYS_SYNCFS                       = 4342\n\tSYS_SENDMMSG                     = 4343\n\tSYS_SETNS                        = 4344\n\tSYS_PROCESS_VM_READV             = 4345\n\tSYS_PROCESS_VM_WRITEV            = 4346\n\tSYS_KCMP                         = 4347\n\tSYS_FINIT_MODULE                 = 4348\n\tSYS_SCHED_SETATTR                = 4349\n\tSYS_SCHED_GETATTR                = 4350\n\tSYS_RENAMEAT2                    = 4351\n\tSYS_SECCOMP                      = 4352\n\tSYS_GETRANDOM                    = 4353\n\tSYS_MEMFD_CREATE                 = 4354\n\tSYS_BPF                          = 4355\n\tSYS_EXECVEAT                     = 4356\n\tSYS_USERFAULTFD                  = 4357\n\tSYS_MEMBARRIER                   = 4358\n\tSYS_MLOCK2                       = 4359\n\tSYS_COPY_FILE_RANGE              = 4360\n\tSYS_PREADV2                      = 4361\n\tSYS_PWRITEV2                     = 4362\n\tSYS_PKEY_MPROTECT                = 4363\n\tSYS_PKEY_ALLOC                   = 4364\n\tSYS_PKEY_FREE                    = 4365\n\tSYS_STATX                        = 4366\n\tSYS_RSEQ                         = 4367\n\tSYS_IO_PGETEVENTS                = 4368\n\tSYS_SEMGET                       = 4393\n\tSYS_SEMCTL                       = 4394\n\tSYS_SHMGET                       = 4395\n\tSYS_SHMCTL                       = 4396\n\tSYS_SHMAT                        = 4397\n\tSYS_SHMDT                        = 4398\n\tSYS_MSGGET                       = 4399\n\tSYS_MSGSND                       = 4400\n\tSYS_MSGRCV                       = 4401\n\tSYS_MSGCTL                       = 4402\n\tSYS_CLOCK_GETTIME64              = 4403\n\tSYS_CLOCK_SETTIME64              = 4404\n\tSYS_CLOCK_ADJTIME64              = 4405\n\tSYS_CLOCK_GETRES_TIME64          = 4406\n\tSYS_CLOCK_NANOSLEEP_TIME64       = 4407\n\tSYS_TIMER_GETTIME64              = 4408\n\tSYS_TIMER_SETTIME64              = 4409\n\tSYS_TIMERFD_GETTIME64            = 4410\n\tSYS_TIMERFD_SETTIME64            = 4411\n\tSYS_UTIMENSAT_TIME64             = 4412\n\tSYS_PSELECT6_TIME64              = 4413\n\tSYS_PPOLL_TIME64                 = 4414\n\tSYS_IO_PGETEVENTS_TIME64         = 4416\n\tSYS_RECVMMSG_TIME64              = 4417\n\tSYS_MQ_TIMEDSEND_TIME64          = 4418\n\tSYS_MQ_TIMEDRECEIVE_TIME64       = 4419\n\tSYS_SEMTIMEDOP_TIME64            = 4420\n\tSYS_RT_SIGTIMEDWAIT_TIME64       = 4421\n\tSYS_FUTEX_TIME64                 = 4422\n\tSYS_SCHED_RR_GET_INTERVAL_TIME64 = 4423\n\tSYS_PIDFD_SEND_SIGNAL            = 4424\n\tSYS_IO_URING_SETUP               = 4425\n\tSYS_IO_URING_ENTER               = 4426\n\tSYS_IO_URING_REGISTER            = 4427\n\tSYS_OPEN_TREE                    = 4428\n\tSYS_MOVE_MOUNT                   = 4429\n\tSYS_FSOPEN                       = 4430\n\tSYS_FSCONFIG                     = 4431\n\tSYS_FSMOUNT                      = 4432\n\tSYS_FSPICK                       = 4433\n\tSYS_PIDFD_OPEN                   = 4434\n\tSYS_CLONE3                       = 4435\n\tSYS_CLOSE_RANGE                  = 4436\n\tSYS_OPENAT2                      = 4437\n\tSYS_PIDFD_GETFD                  = 4438\n\tSYS_FACCESSAT2                   = 4439\n\tSYS_PROCESS_MADVISE              = 4440\n\tSYS_EPOLL_PWAIT2                 = 4441\n\tSYS_MOUNT_SETATTR                = 4442\n\tSYS_QUOTACTL_FD                  = 4443\n\tSYS_LANDLOCK_CREATE_RULESET      = 4444\n\tSYS_LANDLOCK_ADD_RULE            = 4445\n\tSYS_LANDLOCK_RESTRICT_SELF       = 4446\n\tSYS_PROCESS_MRELEASE             = 4448\n\tSYS_FUTEX_WAITV                  = 4449\n\tSYS_SET_MEMPOLICY_HOME_NODE      = 4450\n\tSYS_CACHESTAT                    = 4451\n\tSYS_FCHMODAT2                    = 4452\n\tSYS_MAP_SHADOW_STACK             = 4453\n\tSYS_FUTEX_WAKE                   = 4454\n\tSYS_FUTEX_WAIT                   = 4455\n\tSYS_FUTEX_REQUEUE                = 4456\n\tSYS_STATMOUNT                    = 4457\n\tSYS_LISTMOUNT                    = 4458\n\tSYS_LSM_GET_SELF_ATTR            = 4459\n\tSYS_LSM_SET_SELF_ATTR            = 4460\n\tSYS_LSM_LIST_MODULES             = 4461\n\tSYS_MSEAL                        = 4462\n\tSYS_SETXATTRAT                   = 4463\n\tSYS_GETXATTRAT                   = 4464\n\tSYS_LISTXATTRAT                  = 4465\n\tSYS_REMOVEXATTRAT                = 4466\n\tSYS_OPEN_TREE_ATTR               = 4467\n)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/ppc/include /tmp/ppc/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc && linux\n\npackage unix\n\nconst (\n\tSYS_RESTART_SYSCALL              = 0\n\tSYS_EXIT                         = 1\n\tSYS_FORK                         = 2\n\tSYS_READ                         = 3\n\tSYS_WRITE                        = 4\n\tSYS_OPEN                         = 5\n\tSYS_CLOSE                        = 6\n\tSYS_WAITPID                      = 7\n\tSYS_CREAT                        = 8\n\tSYS_LINK                         = 9\n\tSYS_UNLINK                       = 10\n\tSYS_EXECVE                       = 11\n\tSYS_CHDIR                        = 12\n\tSYS_TIME                         = 13\n\tSYS_MKNOD                        = 14\n\tSYS_CHMOD                        = 15\n\tSYS_LCHOWN                       = 16\n\tSYS_BREAK                        = 17\n\tSYS_OLDSTAT                      = 18\n\tSYS_LSEEK                        = 19\n\tSYS_GETPID                       = 20\n\tSYS_MOUNT                        = 21\n\tSYS_UMOUNT                       = 22\n\tSYS_SETUID                       = 23\n\tSYS_GETUID                       = 24\n\tSYS_STIME                        = 25\n\tSYS_PTRACE                       = 26\n\tSYS_ALARM                        = 27\n\tSYS_OLDFSTAT                     = 28\n\tSYS_PAUSE                        = 29\n\tSYS_UTIME                        = 30\n\tSYS_STTY                         = 31\n\tSYS_GTTY                         = 32\n\tSYS_ACCESS                       = 33\n\tSYS_NICE                         = 34\n\tSYS_FTIME                        = 35\n\tSYS_SYNC                         = 36\n\tSYS_KILL                         = 37\n\tSYS_RENAME                       = 38\n\tSYS_MKDIR                        = 39\n\tSYS_RMDIR                        = 40\n\tSYS_DUP                          = 41\n\tSYS_PIPE                         = 42\n\tSYS_TIMES                        = 43\n\tSYS_PROF                         = 44\n\tSYS_BRK                          = 45\n\tSYS_SETGID                       = 46\n\tSYS_GETGID                       = 47\n\tSYS_SIGNAL                       = 48\n\tSYS_GETEUID                      = 49\n\tSYS_GETEGID                      = 50\n\tSYS_ACCT                         = 51\n\tSYS_UMOUNT2                      = 52\n\tSYS_LOCK                         = 53\n\tSYS_IOCTL                        = 54\n\tSYS_FCNTL                        = 55\n\tSYS_MPX                          = 56\n\tSYS_SETPGID                      = 57\n\tSYS_ULIMIT                       = 58\n\tSYS_OLDOLDUNAME                  = 59\n\tSYS_UMASK                        = 60\n\tSYS_CHROOT                       = 61\n\tSYS_USTAT                        = 62\n\tSYS_DUP2                         = 63\n\tSYS_GETPPID                      = 64\n\tSYS_GETPGRP                      = 65\n\tSYS_SETSID                       = 66\n\tSYS_SIGACTION                    = 67\n\tSYS_SGETMASK                     = 68\n\tSYS_SSETMASK                     = 69\n\tSYS_SETREUID                     = 70\n\tSYS_SETREGID                     = 71\n\tSYS_SIGSUSPEND                   = 72\n\tSYS_SIGPENDING                   = 73\n\tSYS_SETHOSTNAME                  = 74\n\tSYS_SETRLIMIT                    = 75\n\tSYS_GETRLIMIT                    = 76\n\tSYS_GETRUSAGE                    = 77\n\tSYS_GETTIMEOFDAY                 = 78\n\tSYS_SETTIMEOFDAY                 = 79\n\tSYS_GETGROUPS                    = 80\n\tSYS_SETGROUPS                    = 81\n\tSYS_SELECT                       = 82\n\tSYS_SYMLINK                      = 83\n\tSYS_OLDLSTAT                     = 84\n\tSYS_READLINK                     = 85\n\tSYS_USELIB                       = 86\n\tSYS_SWAPON                       = 87\n\tSYS_REBOOT                       = 88\n\tSYS_READDIR                      = 89\n\tSYS_MMAP                         = 90\n\tSYS_MUNMAP                       = 91\n\tSYS_TRUNCATE                     = 92\n\tSYS_FTRUNCATE                    = 93\n\tSYS_FCHMOD                       = 94\n\tSYS_FCHOWN                       = 95\n\tSYS_GETPRIORITY                  = 96\n\tSYS_SETPRIORITY                  = 97\n\tSYS_PROFIL                       = 98\n\tSYS_STATFS                       = 99\n\tSYS_FSTATFS                      = 100\n\tSYS_IOPERM                       = 101\n\tSYS_SOCKETCALL                   = 102\n\tSYS_SYSLOG                       = 103\n\tSYS_SETITIMER                    = 104\n\tSYS_GETITIMER                    = 105\n\tSYS_STAT                         = 106\n\tSYS_LSTAT                        = 107\n\tSYS_FSTAT                        = 108\n\tSYS_OLDUNAME                     = 109\n\tSYS_IOPL                         = 110\n\tSYS_VHANGUP                      = 111\n\tSYS_IDLE                         = 112\n\tSYS_VM86                         = 113\n\tSYS_WAIT4                        = 114\n\tSYS_SWAPOFF                      = 115\n\tSYS_SYSINFO                      = 116\n\tSYS_IPC                          = 117\n\tSYS_FSYNC                        = 118\n\tSYS_SIGRETURN                    = 119\n\tSYS_CLONE                        = 120\n\tSYS_SETDOMAINNAME                = 121\n\tSYS_UNAME                        = 122\n\tSYS_MODIFY_LDT                   = 123\n\tSYS_ADJTIMEX                     = 124\n\tSYS_MPROTECT                     = 125\n\tSYS_SIGPROCMASK                  = 126\n\tSYS_CREATE_MODULE                = 127\n\tSYS_INIT_MODULE                  = 128\n\tSYS_DELETE_MODULE                = 129\n\tSYS_GET_KERNEL_SYMS              = 130\n\tSYS_QUOTACTL                     = 131\n\tSYS_GETPGID                      = 132\n\tSYS_FCHDIR                       = 133\n\tSYS_BDFLUSH                      = 134\n\tSYS_SYSFS                        = 135\n\tSYS_PERSONALITY                  = 136\n\tSYS_AFS_SYSCALL                  = 137\n\tSYS_SETFSUID                     = 138\n\tSYS_SETFSGID                     = 139\n\tSYS__LLSEEK                      = 140\n\tSYS_GETDENTS                     = 141\n\tSYS__NEWSELECT                   = 142\n\tSYS_FLOCK                        = 143\n\tSYS_MSYNC                        = 144\n\tSYS_READV                        = 145\n\tSYS_WRITEV                       = 146\n\tSYS_GETSID                       = 147\n\tSYS_FDATASYNC                    = 148\n\tSYS__SYSCTL                      = 149\n\tSYS_MLOCK                        = 150\n\tSYS_MUNLOCK                      = 151\n\tSYS_MLOCKALL                     = 152\n\tSYS_MUNLOCKALL                   = 153\n\tSYS_SCHED_SETPARAM               = 154\n\tSYS_SCHED_GETPARAM               = 155\n\tSYS_SCHED_SETSCHEDULER           = 156\n\tSYS_SCHED_GETSCHEDULER           = 157\n\tSYS_SCHED_YIELD                  = 158\n\tSYS_SCHED_GET_PRIORITY_MAX       = 159\n\tSYS_SCHED_GET_PRIORITY_MIN       = 160\n\tSYS_SCHED_RR_GET_INTERVAL        = 161\n\tSYS_NANOSLEEP                    = 162\n\tSYS_MREMAP                       = 163\n\tSYS_SETRESUID                    = 164\n\tSYS_GETRESUID                    = 165\n\tSYS_QUERY_MODULE                 = 166\n\tSYS_POLL                         = 167\n\tSYS_NFSSERVCTL                   = 168\n\tSYS_SETRESGID                    = 169\n\tSYS_GETRESGID                    = 170\n\tSYS_PRCTL                        = 171\n\tSYS_RT_SIGRETURN                 = 172\n\tSYS_RT_SIGACTION                 = 173\n\tSYS_RT_SIGPROCMASK               = 174\n\tSYS_RT_SIGPENDING                = 175\n\tSYS_RT_SIGTIMEDWAIT              = 176\n\tSYS_RT_SIGQUEUEINFO              = 177\n\tSYS_RT_SIGSUSPEND                = 178\n\tSYS_PREAD64                      = 179\n\tSYS_PWRITE64                     = 180\n\tSYS_CHOWN                        = 181\n\tSYS_GETCWD                       = 182\n\tSYS_CAPGET                       = 183\n\tSYS_CAPSET                       = 184\n\tSYS_SIGALTSTACK                  = 185\n\tSYS_SENDFILE                     = 186\n\tSYS_GETPMSG                      = 187\n\tSYS_PUTPMSG                      = 188\n\tSYS_VFORK                        = 189\n\tSYS_UGETRLIMIT                   = 190\n\tSYS_READAHEAD                    = 191\n\tSYS_MMAP2                        = 192\n\tSYS_TRUNCATE64                   = 193\n\tSYS_FTRUNCATE64                  = 194\n\tSYS_STAT64                       = 195\n\tSYS_LSTAT64                      = 196\n\tSYS_FSTAT64                      = 197\n\tSYS_PCICONFIG_READ               = 198\n\tSYS_PCICONFIG_WRITE              = 199\n\tSYS_PCICONFIG_IOBASE             = 200\n\tSYS_MULTIPLEXER                  = 201\n\tSYS_GETDENTS64                   = 202\n\tSYS_PIVOT_ROOT                   = 203\n\tSYS_FCNTL64                      = 204\n\tSYS_MADVISE                      = 205\n\tSYS_MINCORE                      = 206\n\tSYS_GETTID                       = 207\n\tSYS_TKILL                        = 208\n\tSYS_SETXATTR                     = 209\n\tSYS_LSETXATTR                    = 210\n\tSYS_FSETXATTR                    = 211\n\tSYS_GETXATTR                     = 212\n\tSYS_LGETXATTR                    = 213\n\tSYS_FGETXATTR                    = 214\n\tSYS_LISTXATTR                    = 215\n\tSYS_LLISTXATTR                   = 216\n\tSYS_FLISTXATTR                   = 217\n\tSYS_REMOVEXATTR                  = 218\n\tSYS_LREMOVEXATTR                 = 219\n\tSYS_FREMOVEXATTR                 = 220\n\tSYS_FUTEX                        = 221\n\tSYS_SCHED_SETAFFINITY            = 222\n\tSYS_SCHED_GETAFFINITY            = 223\n\tSYS_TUXCALL                      = 225\n\tSYS_SENDFILE64                   = 226\n\tSYS_IO_SETUP                     = 227\n\tSYS_IO_DESTROY                   = 228\n\tSYS_IO_GETEVENTS                 = 229\n\tSYS_IO_SUBMIT                    = 230\n\tSYS_IO_CANCEL                    = 231\n\tSYS_SET_TID_ADDRESS              = 232\n\tSYS_FADVISE64                    = 233\n\tSYS_EXIT_GROUP                   = 234\n\tSYS_LOOKUP_DCOOKIE               = 235\n\tSYS_EPOLL_CREATE                 = 236\n\tSYS_EPOLL_CTL                    = 237\n\tSYS_EPOLL_WAIT                   = 238\n\tSYS_REMAP_FILE_PAGES             = 239\n\tSYS_TIMER_CREATE                 = 240\n\tSYS_TIMER_SETTIME                = 241\n\tSYS_TIMER_GETTIME                = 242\n\tSYS_TIMER_GETOVERRUN             = 243\n\tSYS_TIMER_DELETE                 = 244\n\tSYS_CLOCK_SETTIME                = 245\n\tSYS_CLOCK_GETTIME                = 246\n\tSYS_CLOCK_GETRES                 = 247\n\tSYS_CLOCK_NANOSLEEP              = 248\n\tSYS_SWAPCONTEXT                  = 249\n\tSYS_TGKILL                       = 250\n\tSYS_UTIMES                       = 251\n\tSYS_STATFS64                     = 252\n\tSYS_FSTATFS64                    = 253\n\tSYS_FADVISE64_64                 = 254\n\tSYS_RTAS                         = 255\n\tSYS_SYS_DEBUG_SETCONTEXT         = 256\n\tSYS_MIGRATE_PAGES                = 258\n\tSYS_MBIND                        = 259\n\tSYS_GET_MEMPOLICY                = 260\n\tSYS_SET_MEMPOLICY                = 261\n\tSYS_MQ_OPEN                      = 262\n\tSYS_MQ_UNLINK                    = 263\n\tSYS_MQ_TIMEDSEND                 = 264\n\tSYS_MQ_TIMEDRECEIVE              = 265\n\tSYS_MQ_NOTIFY                    = 266\n\tSYS_MQ_GETSETATTR                = 267\n\tSYS_KEXEC_LOAD                   = 268\n\tSYS_ADD_KEY                      = 269\n\tSYS_REQUEST_KEY                  = 270\n\tSYS_KEYCTL                       = 271\n\tSYS_WAITID                       = 272\n\tSYS_IOPRIO_SET                   = 273\n\tSYS_IOPRIO_GET                   = 274\n\tSYS_INOTIFY_INIT                 = 275\n\tSYS_INOTIFY_ADD_WATCH            = 276\n\tSYS_INOTIFY_RM_WATCH             = 277\n\tSYS_SPU_RUN                      = 278\n\tSYS_SPU_CREATE                   = 279\n\tSYS_PSELECT6                     = 280\n\tSYS_PPOLL                        = 281\n\tSYS_UNSHARE                      = 282\n\tSYS_SPLICE                       = 283\n\tSYS_TEE                          = 284\n\tSYS_VMSPLICE                     = 285\n\tSYS_OPENAT                       = 286\n\tSYS_MKDIRAT                      = 287\n\tSYS_MKNODAT                      = 288\n\tSYS_FCHOWNAT                     = 289\n\tSYS_FUTIMESAT                    = 290\n\tSYS_FSTATAT64                    = 291\n\tSYS_UNLINKAT                     = 292\n\tSYS_RENAMEAT                     = 293\n\tSYS_LINKAT                       = 294\n\tSYS_SYMLINKAT                    = 295\n\tSYS_READLINKAT                   = 296\n\tSYS_FCHMODAT                     = 297\n\tSYS_FACCESSAT                    = 298\n\tSYS_GET_ROBUST_LIST              = 299\n\tSYS_SET_ROBUST_LIST              = 300\n\tSYS_MOVE_PAGES                   = 301\n\tSYS_GETCPU                       = 302\n\tSYS_EPOLL_PWAIT                  = 303\n\tSYS_UTIMENSAT                    = 304\n\tSYS_SIGNALFD                     = 305\n\tSYS_TIMERFD_CREATE               = 306\n\tSYS_EVENTFD                      = 307\n\tSYS_SYNC_FILE_RANGE2             = 308\n\tSYS_FALLOCATE                    = 309\n\tSYS_SUBPAGE_PROT                 = 310\n\tSYS_TIMERFD_SETTIME              = 311\n\tSYS_TIMERFD_GETTIME              = 312\n\tSYS_SIGNALFD4                    = 313\n\tSYS_EVENTFD2                     = 314\n\tSYS_EPOLL_CREATE1                = 315\n\tSYS_DUP3                         = 316\n\tSYS_PIPE2                        = 317\n\tSYS_INOTIFY_INIT1                = 318\n\tSYS_PERF_EVENT_OPEN              = 319\n\tSYS_PREADV                       = 320\n\tSYS_PWRITEV                      = 321\n\tSYS_RT_TGSIGQUEUEINFO            = 322\n\tSYS_FANOTIFY_INIT                = 323\n\tSYS_FANOTIFY_MARK                = 324\n\tSYS_PRLIMIT64                    = 325\n\tSYS_SOCKET                       = 326\n\tSYS_BIND                         = 327\n\tSYS_CONNECT                      = 328\n\tSYS_LISTEN                       = 329\n\tSYS_ACCEPT                       = 330\n\tSYS_GETSOCKNAME                  = 331\n\tSYS_GETPEERNAME                  = 332\n\tSYS_SOCKETPAIR                   = 333\n\tSYS_SEND                         = 334\n\tSYS_SENDTO                       = 335\n\tSYS_RECV                         = 336\n\tSYS_RECVFROM                     = 337\n\tSYS_SHUTDOWN                     = 338\n\tSYS_SETSOCKOPT                   = 339\n\tSYS_GETSOCKOPT                   = 340\n\tSYS_SENDMSG                      = 341\n\tSYS_RECVMSG                      = 342\n\tSYS_RECVMMSG                     = 343\n\tSYS_ACCEPT4                      = 344\n\tSYS_NAME_TO_HANDLE_AT            = 345\n\tSYS_OPEN_BY_HANDLE_AT            = 346\n\tSYS_CLOCK_ADJTIME                = 347\n\tSYS_SYNCFS                       = 348\n\tSYS_SENDMMSG                     = 349\n\tSYS_SETNS                        = 350\n\tSYS_PROCESS_VM_READV             = 351\n\tSYS_PROCESS_VM_WRITEV            = 352\n\tSYS_FINIT_MODULE                 = 353\n\tSYS_KCMP                         = 354\n\tSYS_SCHED_SETATTR                = 355\n\tSYS_SCHED_GETATTR                = 356\n\tSYS_RENAMEAT2                    = 357\n\tSYS_SECCOMP                      = 358\n\tSYS_GETRANDOM                    = 359\n\tSYS_MEMFD_CREATE                 = 360\n\tSYS_BPF                          = 361\n\tSYS_EXECVEAT                     = 362\n\tSYS_SWITCH_ENDIAN                = 363\n\tSYS_USERFAULTFD                  = 364\n\tSYS_MEMBARRIER                   = 365\n\tSYS_MLOCK2                       = 378\n\tSYS_COPY_FILE_RANGE              = 379\n\tSYS_PREADV2                      = 380\n\tSYS_PWRITEV2                     = 381\n\tSYS_KEXEC_FILE_LOAD              = 382\n\tSYS_STATX                        = 383\n\tSYS_PKEY_ALLOC                   = 384\n\tSYS_PKEY_FREE                    = 385\n\tSYS_PKEY_MPROTECT                = 386\n\tSYS_RSEQ                         = 387\n\tSYS_IO_PGETEVENTS                = 388\n\tSYS_SEMGET                       = 393\n\tSYS_SEMCTL                       = 394\n\tSYS_SHMGET                       = 395\n\tSYS_SHMCTL                       = 396\n\tSYS_SHMAT                        = 397\n\tSYS_SHMDT                        = 398\n\tSYS_MSGGET                       = 399\n\tSYS_MSGSND                       = 400\n\tSYS_MSGRCV                       = 401\n\tSYS_MSGCTL                       = 402\n\tSYS_CLOCK_GETTIME64              = 403\n\tSYS_CLOCK_SETTIME64              = 404\n\tSYS_CLOCK_ADJTIME64              = 405\n\tSYS_CLOCK_GETRES_TIME64          = 406\n\tSYS_CLOCK_NANOSLEEP_TIME64       = 407\n\tSYS_TIMER_GETTIME64              = 408\n\tSYS_TIMER_SETTIME64              = 409\n\tSYS_TIMERFD_GETTIME64            = 410\n\tSYS_TIMERFD_SETTIME64            = 411\n\tSYS_UTIMENSAT_TIME64             = 412\n\tSYS_PSELECT6_TIME64              = 413\n\tSYS_PPOLL_TIME64                 = 414\n\tSYS_IO_PGETEVENTS_TIME64         = 416\n\tSYS_RECVMMSG_TIME64              = 417\n\tSYS_MQ_TIMEDSEND_TIME64          = 418\n\tSYS_MQ_TIMEDRECEIVE_TIME64       = 419\n\tSYS_SEMTIMEDOP_TIME64            = 420\n\tSYS_RT_SIGTIMEDWAIT_TIME64       = 421\n\tSYS_FUTEX_TIME64                 = 422\n\tSYS_SCHED_RR_GET_INTERVAL_TIME64 = 423\n\tSYS_PIDFD_SEND_SIGNAL            = 424\n\tSYS_IO_URING_SETUP               = 425\n\tSYS_IO_URING_ENTER               = 426\n\tSYS_IO_URING_REGISTER            = 427\n\tSYS_OPEN_TREE                    = 428\n\tSYS_MOVE_MOUNT                   = 429\n\tSYS_FSOPEN                       = 430\n\tSYS_FSCONFIG                     = 431\n\tSYS_FSMOUNT                      = 432\n\tSYS_FSPICK                       = 433\n\tSYS_PIDFD_OPEN                   = 434\n\tSYS_CLONE3                       = 435\n\tSYS_CLOSE_RANGE                  = 436\n\tSYS_OPENAT2                      = 437\n\tSYS_PIDFD_GETFD                  = 438\n\tSYS_FACCESSAT2                   = 439\n\tSYS_PROCESS_MADVISE              = 440\n\tSYS_EPOLL_PWAIT2                 = 441\n\tSYS_MOUNT_SETATTR                = 442\n\tSYS_QUOTACTL_FD                  = 443\n\tSYS_LANDLOCK_CREATE_RULESET      = 444\n\tSYS_LANDLOCK_ADD_RULE            = 445\n\tSYS_LANDLOCK_RESTRICT_SELF       = 446\n\tSYS_PROCESS_MRELEASE             = 448\n\tSYS_FUTEX_WAITV                  = 449\n\tSYS_SET_MEMPOLICY_HOME_NODE      = 450\n\tSYS_CACHESTAT                    = 451\n\tSYS_FCHMODAT2                    = 452\n\tSYS_MAP_SHADOW_STACK             = 453\n\tSYS_FUTEX_WAKE                   = 454\n\tSYS_FUTEX_WAIT                   = 455\n\tSYS_FUTEX_REQUEUE                = 456\n\tSYS_STATMOUNT                    = 457\n\tSYS_LISTMOUNT                    = 458\n\tSYS_LSM_GET_SELF_ATTR            = 459\n\tSYS_LSM_SET_SELF_ATTR            = 460\n\tSYS_LSM_LIST_MODULES             = 461\n\tSYS_MSEAL                        = 462\n\tSYS_SETXATTRAT                   = 463\n\tSYS_GETXATTRAT                   = 464\n\tSYS_LISTXATTRAT                  = 465\n\tSYS_REMOVEXATTRAT                = 466\n\tSYS_OPEN_TREE_ATTR               = 467\n)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/ppc64/include /tmp/ppc64/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc64 && linux\n\npackage unix\n\nconst (\n\tSYS_RESTART_SYSCALL         = 0\n\tSYS_EXIT                    = 1\n\tSYS_FORK                    = 2\n\tSYS_READ                    = 3\n\tSYS_WRITE                   = 4\n\tSYS_OPEN                    = 5\n\tSYS_CLOSE                   = 6\n\tSYS_WAITPID                 = 7\n\tSYS_CREAT                   = 8\n\tSYS_LINK                    = 9\n\tSYS_UNLINK                  = 10\n\tSYS_EXECVE                  = 11\n\tSYS_CHDIR                   = 12\n\tSYS_TIME                    = 13\n\tSYS_MKNOD                   = 14\n\tSYS_CHMOD                   = 15\n\tSYS_LCHOWN                  = 16\n\tSYS_BREAK                   = 17\n\tSYS_OLDSTAT                 = 18\n\tSYS_LSEEK                   = 19\n\tSYS_GETPID                  = 20\n\tSYS_MOUNT                   = 21\n\tSYS_UMOUNT                  = 22\n\tSYS_SETUID                  = 23\n\tSYS_GETUID                  = 24\n\tSYS_STIME                   = 25\n\tSYS_PTRACE                  = 26\n\tSYS_ALARM                   = 27\n\tSYS_OLDFSTAT                = 28\n\tSYS_PAUSE                   = 29\n\tSYS_UTIME                   = 30\n\tSYS_STTY                    = 31\n\tSYS_GTTY                    = 32\n\tSYS_ACCESS                  = 33\n\tSYS_NICE                    = 34\n\tSYS_FTIME                   = 35\n\tSYS_SYNC                    = 36\n\tSYS_KILL                    = 37\n\tSYS_RENAME                  = 38\n\tSYS_MKDIR                   = 39\n\tSYS_RMDIR                   = 40\n\tSYS_DUP                     = 41\n\tSYS_PIPE                    = 42\n\tSYS_TIMES                   = 43\n\tSYS_PROF                    = 44\n\tSYS_BRK                     = 45\n\tSYS_SETGID                  = 46\n\tSYS_GETGID                  = 47\n\tSYS_SIGNAL                  = 48\n\tSYS_GETEUID                 = 49\n\tSYS_GETEGID                 = 50\n\tSYS_ACCT                    = 51\n\tSYS_UMOUNT2                 = 52\n\tSYS_LOCK                    = 53\n\tSYS_IOCTL                   = 54\n\tSYS_FCNTL                   = 55\n\tSYS_MPX                     = 56\n\tSYS_SETPGID                 = 57\n\tSYS_ULIMIT                  = 58\n\tSYS_OLDOLDUNAME             = 59\n\tSYS_UMASK                   = 60\n\tSYS_CHROOT                  = 61\n\tSYS_USTAT                   = 62\n\tSYS_DUP2                    = 63\n\tSYS_GETPPID                 = 64\n\tSYS_GETPGRP                 = 65\n\tSYS_SETSID                  = 66\n\tSYS_SIGACTION               = 67\n\tSYS_SGETMASK                = 68\n\tSYS_SSETMASK                = 69\n\tSYS_SETREUID                = 70\n\tSYS_SETREGID                = 71\n\tSYS_SIGSUSPEND              = 72\n\tSYS_SIGPENDING              = 73\n\tSYS_SETHOSTNAME             = 74\n\tSYS_SETRLIMIT               = 75\n\tSYS_GETRLIMIT               = 76\n\tSYS_GETRUSAGE               = 77\n\tSYS_GETTIMEOFDAY            = 78\n\tSYS_SETTIMEOFDAY            = 79\n\tSYS_GETGROUPS               = 80\n\tSYS_SETGROUPS               = 81\n\tSYS_SELECT                  = 82\n\tSYS_SYMLINK                 = 83\n\tSYS_OLDLSTAT                = 84\n\tSYS_READLINK                = 85\n\tSYS_USELIB                  = 86\n\tSYS_SWAPON                  = 87\n\tSYS_REBOOT                  = 88\n\tSYS_READDIR                 = 89\n\tSYS_MMAP                    = 90\n\tSYS_MUNMAP                  = 91\n\tSYS_TRUNCATE                = 92\n\tSYS_FTRUNCATE               = 93\n\tSYS_FCHMOD                  = 94\n\tSYS_FCHOWN                  = 95\n\tSYS_GETPRIORITY             = 96\n\tSYS_SETPRIORITY             = 97\n\tSYS_PROFIL                  = 98\n\tSYS_STATFS                  = 99\n\tSYS_FSTATFS                 = 100\n\tSYS_IOPERM                  = 101\n\tSYS_SOCKETCALL              = 102\n\tSYS_SYSLOG                  = 103\n\tSYS_SETITIMER               = 104\n\tSYS_GETITIMER               = 105\n\tSYS_STAT                    = 106\n\tSYS_LSTAT                   = 107\n\tSYS_FSTAT                   = 108\n\tSYS_OLDUNAME                = 109\n\tSYS_IOPL                    = 110\n\tSYS_VHANGUP                 = 111\n\tSYS_IDLE                    = 112\n\tSYS_VM86                    = 113\n\tSYS_WAIT4                   = 114\n\tSYS_SWAPOFF                 = 115\n\tSYS_SYSINFO                 = 116\n\tSYS_IPC                     = 117\n\tSYS_FSYNC                   = 118\n\tSYS_SIGRETURN               = 119\n\tSYS_CLONE                   = 120\n\tSYS_SETDOMAINNAME           = 121\n\tSYS_UNAME                   = 122\n\tSYS_MODIFY_LDT              = 123\n\tSYS_ADJTIMEX                = 124\n\tSYS_MPROTECT                = 125\n\tSYS_SIGPROCMASK             = 126\n\tSYS_CREATE_MODULE           = 127\n\tSYS_INIT_MODULE             = 128\n\tSYS_DELETE_MODULE           = 129\n\tSYS_GET_KERNEL_SYMS         = 130\n\tSYS_QUOTACTL                = 131\n\tSYS_GETPGID                 = 132\n\tSYS_FCHDIR                  = 133\n\tSYS_BDFLUSH                 = 134\n\tSYS_SYSFS                   = 135\n\tSYS_PERSONALITY             = 136\n\tSYS_AFS_SYSCALL             = 137\n\tSYS_SETFSUID                = 138\n\tSYS_SETFSGID                = 139\n\tSYS__LLSEEK                 = 140\n\tSYS_GETDENTS                = 141\n\tSYS__NEWSELECT              = 142\n\tSYS_FLOCK                   = 143\n\tSYS_MSYNC                   = 144\n\tSYS_READV                   = 145\n\tSYS_WRITEV                  = 146\n\tSYS_GETSID                  = 147\n\tSYS_FDATASYNC               = 148\n\tSYS__SYSCTL                 = 149\n\tSYS_MLOCK                   = 150\n\tSYS_MUNLOCK                 = 151\n\tSYS_MLOCKALL                = 152\n\tSYS_MUNLOCKALL              = 153\n\tSYS_SCHED_SETPARAM          = 154\n\tSYS_SCHED_GETPARAM          = 155\n\tSYS_SCHED_SETSCHEDULER      = 156\n\tSYS_SCHED_GETSCHEDULER      = 157\n\tSYS_SCHED_YIELD             = 158\n\tSYS_SCHED_GET_PRIORITY_MAX  = 159\n\tSYS_SCHED_GET_PRIORITY_MIN  = 160\n\tSYS_SCHED_RR_GET_INTERVAL   = 161\n\tSYS_NANOSLEEP               = 162\n\tSYS_MREMAP                  = 163\n\tSYS_SETRESUID               = 164\n\tSYS_GETRESUID               = 165\n\tSYS_QUERY_MODULE            = 166\n\tSYS_POLL                    = 167\n\tSYS_NFSSERVCTL              = 168\n\tSYS_SETRESGID               = 169\n\tSYS_GETRESGID               = 170\n\tSYS_PRCTL                   = 171\n\tSYS_RT_SIGRETURN            = 172\n\tSYS_RT_SIGACTION            = 173\n\tSYS_RT_SIGPROCMASK          = 174\n\tSYS_RT_SIGPENDING           = 175\n\tSYS_RT_SIGTIMEDWAIT         = 176\n\tSYS_RT_SIGQUEUEINFO         = 177\n\tSYS_RT_SIGSUSPEND           = 178\n\tSYS_PREAD64                 = 179\n\tSYS_PWRITE64                = 180\n\tSYS_CHOWN                   = 181\n\tSYS_GETCWD                  = 182\n\tSYS_CAPGET                  = 183\n\tSYS_CAPSET                  = 184\n\tSYS_SIGALTSTACK             = 185\n\tSYS_SENDFILE                = 186\n\tSYS_GETPMSG                 = 187\n\tSYS_PUTPMSG                 = 188\n\tSYS_VFORK                   = 189\n\tSYS_UGETRLIMIT              = 190\n\tSYS_READAHEAD               = 191\n\tSYS_PCICONFIG_READ          = 198\n\tSYS_PCICONFIG_WRITE         = 199\n\tSYS_PCICONFIG_IOBASE        = 200\n\tSYS_MULTIPLEXER             = 201\n\tSYS_GETDENTS64              = 202\n\tSYS_PIVOT_ROOT              = 203\n\tSYS_MADVISE                 = 205\n\tSYS_MINCORE                 = 206\n\tSYS_GETTID                  = 207\n\tSYS_TKILL                   = 208\n\tSYS_SETXATTR                = 209\n\tSYS_LSETXATTR               = 210\n\tSYS_FSETXATTR               = 211\n\tSYS_GETXATTR                = 212\n\tSYS_LGETXATTR               = 213\n\tSYS_FGETXATTR               = 214\n\tSYS_LISTXATTR               = 215\n\tSYS_LLISTXATTR              = 216\n\tSYS_FLISTXATTR              = 217\n\tSYS_REMOVEXATTR             = 218\n\tSYS_LREMOVEXATTR            = 219\n\tSYS_FREMOVEXATTR            = 220\n\tSYS_FUTEX                   = 221\n\tSYS_SCHED_SETAFFINITY       = 222\n\tSYS_SCHED_GETAFFINITY       = 223\n\tSYS_TUXCALL                 = 225\n\tSYS_IO_SETUP                = 227\n\tSYS_IO_DESTROY              = 228\n\tSYS_IO_GETEVENTS            = 229\n\tSYS_IO_SUBMIT               = 230\n\tSYS_IO_CANCEL               = 231\n\tSYS_SET_TID_ADDRESS         = 232\n\tSYS_FADVISE64               = 233\n\tSYS_EXIT_GROUP              = 234\n\tSYS_LOOKUP_DCOOKIE          = 235\n\tSYS_EPOLL_CREATE            = 236\n\tSYS_EPOLL_CTL               = 237\n\tSYS_EPOLL_WAIT              = 238\n\tSYS_REMAP_FILE_PAGES        = 239\n\tSYS_TIMER_CREATE            = 240\n\tSYS_TIMER_SETTIME           = 241\n\tSYS_TIMER_GETTIME           = 242\n\tSYS_TIMER_GETOVERRUN        = 243\n\tSYS_TIMER_DELETE            = 244\n\tSYS_CLOCK_SETTIME           = 245\n\tSYS_CLOCK_GETTIME           = 246\n\tSYS_CLOCK_GETRES            = 247\n\tSYS_CLOCK_NANOSLEEP         = 248\n\tSYS_SWAPCONTEXT             = 249\n\tSYS_TGKILL                  = 250\n\tSYS_UTIMES                  = 251\n\tSYS_STATFS64                = 252\n\tSYS_FSTATFS64               = 253\n\tSYS_RTAS                    = 255\n\tSYS_SYS_DEBUG_SETCONTEXT    = 256\n\tSYS_MIGRATE_PAGES           = 258\n\tSYS_MBIND                   = 259\n\tSYS_GET_MEMPOLICY           = 260\n\tSYS_SET_MEMPOLICY           = 261\n\tSYS_MQ_OPEN                 = 262\n\tSYS_MQ_UNLINK               = 263\n\tSYS_MQ_TIMEDSEND            = 264\n\tSYS_MQ_TIMEDRECEIVE         = 265\n\tSYS_MQ_NOTIFY               = 266\n\tSYS_MQ_GETSETATTR           = 267\n\tSYS_KEXEC_LOAD              = 268\n\tSYS_ADD_KEY                 = 269\n\tSYS_REQUEST_KEY             = 270\n\tSYS_KEYCTL                  = 271\n\tSYS_WAITID                  = 272\n\tSYS_IOPRIO_SET              = 273\n\tSYS_IOPRIO_GET              = 274\n\tSYS_INOTIFY_INIT            = 275\n\tSYS_INOTIFY_ADD_WATCH       = 276\n\tSYS_INOTIFY_RM_WATCH        = 277\n\tSYS_SPU_RUN                 = 278\n\tSYS_SPU_CREATE              = 279\n\tSYS_PSELECT6                = 280\n\tSYS_PPOLL                   = 281\n\tSYS_UNSHARE                 = 282\n\tSYS_SPLICE                  = 283\n\tSYS_TEE                     = 284\n\tSYS_VMSPLICE                = 285\n\tSYS_OPENAT                  = 286\n\tSYS_MKDIRAT                 = 287\n\tSYS_MKNODAT                 = 288\n\tSYS_FCHOWNAT                = 289\n\tSYS_FUTIMESAT               = 290\n\tSYS_NEWFSTATAT              = 291\n\tSYS_UNLINKAT                = 292\n\tSYS_RENAMEAT                = 293\n\tSYS_LINKAT                  = 294\n\tSYS_SYMLINKAT               = 295\n\tSYS_READLINKAT              = 296\n\tSYS_FCHMODAT                = 297\n\tSYS_FACCESSAT               = 298\n\tSYS_GET_ROBUST_LIST         = 299\n\tSYS_SET_ROBUST_LIST         = 300\n\tSYS_MOVE_PAGES              = 301\n\tSYS_GETCPU                  = 302\n\tSYS_EPOLL_PWAIT             = 303\n\tSYS_UTIMENSAT               = 304\n\tSYS_SIGNALFD                = 305\n\tSYS_TIMERFD_CREATE          = 306\n\tSYS_EVENTFD                 = 307\n\tSYS_SYNC_FILE_RANGE2        = 308\n\tSYS_FALLOCATE               = 309\n\tSYS_SUBPAGE_PROT            = 310\n\tSYS_TIMERFD_SETTIME         = 311\n\tSYS_TIMERFD_GETTIME         = 312\n\tSYS_SIGNALFD4               = 313\n\tSYS_EVENTFD2                = 314\n\tSYS_EPOLL_CREATE1           = 315\n\tSYS_DUP3                    = 316\n\tSYS_PIPE2                   = 317\n\tSYS_INOTIFY_INIT1           = 318\n\tSYS_PERF_EVENT_OPEN         = 319\n\tSYS_PREADV                  = 320\n\tSYS_PWRITEV                 = 321\n\tSYS_RT_TGSIGQUEUEINFO       = 322\n\tSYS_FANOTIFY_INIT           = 323\n\tSYS_FANOTIFY_MARK           = 324\n\tSYS_PRLIMIT64               = 325\n\tSYS_SOCKET                  = 326\n\tSYS_BIND                    = 327\n\tSYS_CONNECT                 = 328\n\tSYS_LISTEN                  = 329\n\tSYS_ACCEPT                  = 330\n\tSYS_GETSOCKNAME             = 331\n\tSYS_GETPEERNAME             = 332\n\tSYS_SOCKETPAIR              = 333\n\tSYS_SEND                    = 334\n\tSYS_SENDTO                  = 335\n\tSYS_RECV                    = 336\n\tSYS_RECVFROM                = 337\n\tSYS_SHUTDOWN                = 338\n\tSYS_SETSOCKOPT              = 339\n\tSYS_GETSOCKOPT              = 340\n\tSYS_SENDMSG                 = 341\n\tSYS_RECVMSG                 = 342\n\tSYS_RECVMMSG                = 343\n\tSYS_ACCEPT4                 = 344\n\tSYS_NAME_TO_HANDLE_AT       = 345\n\tSYS_OPEN_BY_HANDLE_AT       = 346\n\tSYS_CLOCK_ADJTIME           = 347\n\tSYS_SYNCFS                  = 348\n\tSYS_SENDMMSG                = 349\n\tSYS_SETNS                   = 350\n\tSYS_PROCESS_VM_READV        = 351\n\tSYS_PROCESS_VM_WRITEV       = 352\n\tSYS_FINIT_MODULE            = 353\n\tSYS_KCMP                    = 354\n\tSYS_SCHED_SETATTR           = 355\n\tSYS_SCHED_GETATTR           = 356\n\tSYS_RENAMEAT2               = 357\n\tSYS_SECCOMP                 = 358\n\tSYS_GETRANDOM               = 359\n\tSYS_MEMFD_CREATE            = 360\n\tSYS_BPF                     = 361\n\tSYS_EXECVEAT                = 362\n\tSYS_SWITCH_ENDIAN           = 363\n\tSYS_USERFAULTFD             = 364\n\tSYS_MEMBARRIER              = 365\n\tSYS_MLOCK2                  = 378\n\tSYS_COPY_FILE_RANGE         = 379\n\tSYS_PREADV2                 = 380\n\tSYS_PWRITEV2                = 381\n\tSYS_KEXEC_FILE_LOAD         = 382\n\tSYS_STATX                   = 383\n\tSYS_PKEY_ALLOC              = 384\n\tSYS_PKEY_FREE               = 385\n\tSYS_PKEY_MPROTECT           = 386\n\tSYS_RSEQ                    = 387\n\tSYS_IO_PGETEVENTS           = 388\n\tSYS_SEMTIMEDOP              = 392\n\tSYS_SEMGET                  = 393\n\tSYS_SEMCTL                  = 394\n\tSYS_SHMGET                  = 395\n\tSYS_SHMCTL                  = 396\n\tSYS_SHMAT                   = 397\n\tSYS_SHMDT                   = 398\n\tSYS_MSGGET                  = 399\n\tSYS_MSGSND                  = 400\n\tSYS_MSGRCV                  = 401\n\tSYS_MSGCTL                  = 402\n\tSYS_PIDFD_SEND_SIGNAL       = 424\n\tSYS_IO_URING_SETUP          = 425\n\tSYS_IO_URING_ENTER          = 426\n\tSYS_IO_URING_REGISTER       = 427\n\tSYS_OPEN_TREE               = 428\n\tSYS_MOVE_MOUNT              = 429\n\tSYS_FSOPEN                  = 430\n\tSYS_FSCONFIG                = 431\n\tSYS_FSMOUNT                 = 432\n\tSYS_FSPICK                  = 433\n\tSYS_PIDFD_OPEN              = 434\n\tSYS_CLONE3                  = 435\n\tSYS_CLOSE_RANGE             = 436\n\tSYS_OPENAT2                 = 437\n\tSYS_PIDFD_GETFD             = 438\n\tSYS_FACCESSAT2              = 439\n\tSYS_PROCESS_MADVISE         = 440\n\tSYS_EPOLL_PWAIT2            = 441\n\tSYS_MOUNT_SETATTR           = 442\n\tSYS_QUOTACTL_FD             = 443\n\tSYS_LANDLOCK_CREATE_RULESET = 444\n\tSYS_LANDLOCK_ADD_RULE       = 445\n\tSYS_LANDLOCK_RESTRICT_SELF  = 446\n\tSYS_PROCESS_MRELEASE        = 448\n\tSYS_FUTEX_WAITV             = 449\n\tSYS_SET_MEMPOLICY_HOME_NODE = 450\n\tSYS_CACHESTAT               = 451\n\tSYS_FCHMODAT2               = 452\n\tSYS_MAP_SHADOW_STACK        = 453\n\tSYS_FUTEX_WAKE              = 454\n\tSYS_FUTEX_WAIT              = 455\n\tSYS_FUTEX_REQUEUE           = 456\n\tSYS_STATMOUNT               = 457\n\tSYS_LISTMOUNT               = 458\n\tSYS_LSM_GET_SELF_ATTR       = 459\n\tSYS_LSM_SET_SELF_ATTR       = 460\n\tSYS_LSM_LIST_MODULES        = 461\n\tSYS_MSEAL                   = 462\n\tSYS_SETXATTRAT              = 463\n\tSYS_GETXATTRAT              = 464\n\tSYS_LISTXATTRAT             = 465\n\tSYS_REMOVEXATTRAT           = 466\n\tSYS_OPEN_TREE_ATTR          = 467\n)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/ppc64le/include /tmp/ppc64le/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc64le && linux\n\npackage unix\n\nconst (\n\tSYS_RESTART_SYSCALL         = 0\n\tSYS_EXIT                    = 1\n\tSYS_FORK                    = 2\n\tSYS_READ                    = 3\n\tSYS_WRITE                   = 4\n\tSYS_OPEN                    = 5\n\tSYS_CLOSE                   = 6\n\tSYS_WAITPID                 = 7\n\tSYS_CREAT                   = 8\n\tSYS_LINK                    = 9\n\tSYS_UNLINK                  = 10\n\tSYS_EXECVE                  = 11\n\tSYS_CHDIR                   = 12\n\tSYS_TIME                    = 13\n\tSYS_MKNOD                   = 14\n\tSYS_CHMOD                   = 15\n\tSYS_LCHOWN                  = 16\n\tSYS_BREAK                   = 17\n\tSYS_OLDSTAT                 = 18\n\tSYS_LSEEK                   = 19\n\tSYS_GETPID                  = 20\n\tSYS_MOUNT                   = 21\n\tSYS_UMOUNT                  = 22\n\tSYS_SETUID                  = 23\n\tSYS_GETUID                  = 24\n\tSYS_STIME                   = 25\n\tSYS_PTRACE                  = 26\n\tSYS_ALARM                   = 27\n\tSYS_OLDFSTAT                = 28\n\tSYS_PAUSE                   = 29\n\tSYS_UTIME                   = 30\n\tSYS_STTY                    = 31\n\tSYS_GTTY                    = 32\n\tSYS_ACCESS                  = 33\n\tSYS_NICE                    = 34\n\tSYS_FTIME                   = 35\n\tSYS_SYNC                    = 36\n\tSYS_KILL                    = 37\n\tSYS_RENAME                  = 38\n\tSYS_MKDIR                   = 39\n\tSYS_RMDIR                   = 40\n\tSYS_DUP                     = 41\n\tSYS_PIPE                    = 42\n\tSYS_TIMES                   = 43\n\tSYS_PROF                    = 44\n\tSYS_BRK                     = 45\n\tSYS_SETGID                  = 46\n\tSYS_GETGID                  = 47\n\tSYS_SIGNAL                  = 48\n\tSYS_GETEUID                 = 49\n\tSYS_GETEGID                 = 50\n\tSYS_ACCT                    = 51\n\tSYS_UMOUNT2                 = 52\n\tSYS_LOCK                    = 53\n\tSYS_IOCTL                   = 54\n\tSYS_FCNTL                   = 55\n\tSYS_MPX                     = 56\n\tSYS_SETPGID                 = 57\n\tSYS_ULIMIT                  = 58\n\tSYS_OLDOLDUNAME             = 59\n\tSYS_UMASK                   = 60\n\tSYS_CHROOT                  = 61\n\tSYS_USTAT                   = 62\n\tSYS_DUP2                    = 63\n\tSYS_GETPPID                 = 64\n\tSYS_GETPGRP                 = 65\n\tSYS_SETSID                  = 66\n\tSYS_SIGACTION               = 67\n\tSYS_SGETMASK                = 68\n\tSYS_SSETMASK                = 69\n\tSYS_SETREUID                = 70\n\tSYS_SETREGID                = 71\n\tSYS_SIGSUSPEND              = 72\n\tSYS_SIGPENDING              = 73\n\tSYS_SETHOSTNAME             = 74\n\tSYS_SETRLIMIT               = 75\n\tSYS_GETRLIMIT               = 76\n\tSYS_GETRUSAGE               = 77\n\tSYS_GETTIMEOFDAY            = 78\n\tSYS_SETTIMEOFDAY            = 79\n\tSYS_GETGROUPS               = 80\n\tSYS_SETGROUPS               = 81\n\tSYS_SELECT                  = 82\n\tSYS_SYMLINK                 = 83\n\tSYS_OLDLSTAT                = 84\n\tSYS_READLINK                = 85\n\tSYS_USELIB                  = 86\n\tSYS_SWAPON                  = 87\n\tSYS_REBOOT                  = 88\n\tSYS_READDIR                 = 89\n\tSYS_MMAP                    = 90\n\tSYS_MUNMAP                  = 91\n\tSYS_TRUNCATE                = 92\n\tSYS_FTRUNCATE               = 93\n\tSYS_FCHMOD                  = 94\n\tSYS_FCHOWN                  = 95\n\tSYS_GETPRIORITY             = 96\n\tSYS_SETPRIORITY             = 97\n\tSYS_PROFIL                  = 98\n\tSYS_STATFS                  = 99\n\tSYS_FSTATFS                 = 100\n\tSYS_IOPERM                  = 101\n\tSYS_SOCKETCALL              = 102\n\tSYS_SYSLOG                  = 103\n\tSYS_SETITIMER               = 104\n\tSYS_GETITIMER               = 105\n\tSYS_STAT                    = 106\n\tSYS_LSTAT                   = 107\n\tSYS_FSTAT                   = 108\n\tSYS_OLDUNAME                = 109\n\tSYS_IOPL                    = 110\n\tSYS_VHANGUP                 = 111\n\tSYS_IDLE                    = 112\n\tSYS_VM86                    = 113\n\tSYS_WAIT4                   = 114\n\tSYS_SWAPOFF                 = 115\n\tSYS_SYSINFO                 = 116\n\tSYS_IPC                     = 117\n\tSYS_FSYNC                   = 118\n\tSYS_SIGRETURN               = 119\n\tSYS_CLONE                   = 120\n\tSYS_SETDOMAINNAME           = 121\n\tSYS_UNAME                   = 122\n\tSYS_MODIFY_LDT              = 123\n\tSYS_ADJTIMEX                = 124\n\tSYS_MPROTECT                = 125\n\tSYS_SIGPROCMASK             = 126\n\tSYS_CREATE_MODULE           = 127\n\tSYS_INIT_MODULE             = 128\n\tSYS_DELETE_MODULE           = 129\n\tSYS_GET_KERNEL_SYMS         = 130\n\tSYS_QUOTACTL                = 131\n\tSYS_GETPGID                 = 132\n\tSYS_FCHDIR                  = 133\n\tSYS_BDFLUSH                 = 134\n\tSYS_SYSFS                   = 135\n\tSYS_PERSONALITY             = 136\n\tSYS_AFS_SYSCALL             = 137\n\tSYS_SETFSUID                = 138\n\tSYS_SETFSGID                = 139\n\tSYS__LLSEEK                 = 140\n\tSYS_GETDENTS                = 141\n\tSYS__NEWSELECT              = 142\n\tSYS_FLOCK                   = 143\n\tSYS_MSYNC                   = 144\n\tSYS_READV                   = 145\n\tSYS_WRITEV                  = 146\n\tSYS_GETSID                  = 147\n\tSYS_FDATASYNC               = 148\n\tSYS__SYSCTL                 = 149\n\tSYS_MLOCK                   = 150\n\tSYS_MUNLOCK                 = 151\n\tSYS_MLOCKALL                = 152\n\tSYS_MUNLOCKALL              = 153\n\tSYS_SCHED_SETPARAM          = 154\n\tSYS_SCHED_GETPARAM          = 155\n\tSYS_SCHED_SETSCHEDULER      = 156\n\tSYS_SCHED_GETSCHEDULER      = 157\n\tSYS_SCHED_YIELD             = 158\n\tSYS_SCHED_GET_PRIORITY_MAX  = 159\n\tSYS_SCHED_GET_PRIORITY_MIN  = 160\n\tSYS_SCHED_RR_GET_INTERVAL   = 161\n\tSYS_NANOSLEEP               = 162\n\tSYS_MREMAP                  = 163\n\tSYS_SETRESUID               = 164\n\tSYS_GETRESUID               = 165\n\tSYS_QUERY_MODULE            = 166\n\tSYS_POLL                    = 167\n\tSYS_NFSSERVCTL              = 168\n\tSYS_SETRESGID               = 169\n\tSYS_GETRESGID               = 170\n\tSYS_PRCTL                   = 171\n\tSYS_RT_SIGRETURN            = 172\n\tSYS_RT_SIGACTION            = 173\n\tSYS_RT_SIGPROCMASK          = 174\n\tSYS_RT_SIGPENDING           = 175\n\tSYS_RT_SIGTIMEDWAIT         = 176\n\tSYS_RT_SIGQUEUEINFO         = 177\n\tSYS_RT_SIGSUSPEND           = 178\n\tSYS_PREAD64                 = 179\n\tSYS_PWRITE64                = 180\n\tSYS_CHOWN                   = 181\n\tSYS_GETCWD                  = 182\n\tSYS_CAPGET                  = 183\n\tSYS_CAPSET                  = 184\n\tSYS_SIGALTSTACK             = 185\n\tSYS_SENDFILE                = 186\n\tSYS_GETPMSG                 = 187\n\tSYS_PUTPMSG                 = 188\n\tSYS_VFORK                   = 189\n\tSYS_UGETRLIMIT              = 190\n\tSYS_READAHEAD               = 191\n\tSYS_PCICONFIG_READ          = 198\n\tSYS_PCICONFIG_WRITE         = 199\n\tSYS_PCICONFIG_IOBASE        = 200\n\tSYS_MULTIPLEXER             = 201\n\tSYS_GETDENTS64              = 202\n\tSYS_PIVOT_ROOT              = 203\n\tSYS_MADVISE                 = 205\n\tSYS_MINCORE                 = 206\n\tSYS_GETTID                  = 207\n\tSYS_TKILL                   = 208\n\tSYS_SETXATTR                = 209\n\tSYS_LSETXATTR               = 210\n\tSYS_FSETXATTR               = 211\n\tSYS_GETXATTR                = 212\n\tSYS_LGETXATTR               = 213\n\tSYS_FGETXATTR               = 214\n\tSYS_LISTXATTR               = 215\n\tSYS_LLISTXATTR              = 216\n\tSYS_FLISTXATTR              = 217\n\tSYS_REMOVEXATTR             = 218\n\tSYS_LREMOVEXATTR            = 219\n\tSYS_FREMOVEXATTR            = 220\n\tSYS_FUTEX                   = 221\n\tSYS_SCHED_SETAFFINITY       = 222\n\tSYS_SCHED_GETAFFINITY       = 223\n\tSYS_TUXCALL                 = 225\n\tSYS_IO_SETUP                = 227\n\tSYS_IO_DESTROY              = 228\n\tSYS_IO_GETEVENTS            = 229\n\tSYS_IO_SUBMIT               = 230\n\tSYS_IO_CANCEL               = 231\n\tSYS_SET_TID_ADDRESS         = 232\n\tSYS_FADVISE64               = 233\n\tSYS_EXIT_GROUP              = 234\n\tSYS_LOOKUP_DCOOKIE          = 235\n\tSYS_EPOLL_CREATE            = 236\n\tSYS_EPOLL_CTL               = 237\n\tSYS_EPOLL_WAIT              = 238\n\tSYS_REMAP_FILE_PAGES        = 239\n\tSYS_TIMER_CREATE            = 240\n\tSYS_TIMER_SETTIME           = 241\n\tSYS_TIMER_GETTIME           = 242\n\tSYS_TIMER_GETOVERRUN        = 243\n\tSYS_TIMER_DELETE            = 244\n\tSYS_CLOCK_SETTIME           = 245\n\tSYS_CLOCK_GETTIME           = 246\n\tSYS_CLOCK_GETRES            = 247\n\tSYS_CLOCK_NANOSLEEP         = 248\n\tSYS_SWAPCONTEXT             = 249\n\tSYS_TGKILL                  = 250\n\tSYS_UTIMES                  = 251\n\tSYS_STATFS64                = 252\n\tSYS_FSTATFS64               = 253\n\tSYS_RTAS                    = 255\n\tSYS_SYS_DEBUG_SETCONTEXT    = 256\n\tSYS_MIGRATE_PAGES           = 258\n\tSYS_MBIND                   = 259\n\tSYS_GET_MEMPOLICY           = 260\n\tSYS_SET_MEMPOLICY           = 261\n\tSYS_MQ_OPEN                 = 262\n\tSYS_MQ_UNLINK               = 263\n\tSYS_MQ_TIMEDSEND            = 264\n\tSYS_MQ_TIMEDRECEIVE         = 265\n\tSYS_MQ_NOTIFY               = 266\n\tSYS_MQ_GETSETATTR           = 267\n\tSYS_KEXEC_LOAD              = 268\n\tSYS_ADD_KEY                 = 269\n\tSYS_REQUEST_KEY             = 270\n\tSYS_KEYCTL                  = 271\n\tSYS_WAITID                  = 272\n\tSYS_IOPRIO_SET              = 273\n\tSYS_IOPRIO_GET              = 274\n\tSYS_INOTIFY_INIT            = 275\n\tSYS_INOTIFY_ADD_WATCH       = 276\n\tSYS_INOTIFY_RM_WATCH        = 277\n\tSYS_SPU_RUN                 = 278\n\tSYS_SPU_CREATE              = 279\n\tSYS_PSELECT6                = 280\n\tSYS_PPOLL                   = 281\n\tSYS_UNSHARE                 = 282\n\tSYS_SPLICE                  = 283\n\tSYS_TEE                     = 284\n\tSYS_VMSPLICE                = 285\n\tSYS_OPENAT                  = 286\n\tSYS_MKDIRAT                 = 287\n\tSYS_MKNODAT                 = 288\n\tSYS_FCHOWNAT                = 289\n\tSYS_FUTIMESAT               = 290\n\tSYS_NEWFSTATAT              = 291\n\tSYS_UNLINKAT                = 292\n\tSYS_RENAMEAT                = 293\n\tSYS_LINKAT                  = 294\n\tSYS_SYMLINKAT               = 295\n\tSYS_READLINKAT              = 296\n\tSYS_FCHMODAT                = 297\n\tSYS_FACCESSAT               = 298\n\tSYS_GET_ROBUST_LIST         = 299\n\tSYS_SET_ROBUST_LIST         = 300\n\tSYS_MOVE_PAGES              = 301\n\tSYS_GETCPU                  = 302\n\tSYS_EPOLL_PWAIT             = 303\n\tSYS_UTIMENSAT               = 304\n\tSYS_SIGNALFD                = 305\n\tSYS_TIMERFD_CREATE          = 306\n\tSYS_EVENTFD                 = 307\n\tSYS_SYNC_FILE_RANGE2        = 308\n\tSYS_FALLOCATE               = 309\n\tSYS_SUBPAGE_PROT            = 310\n\tSYS_TIMERFD_SETTIME         = 311\n\tSYS_TIMERFD_GETTIME         = 312\n\tSYS_SIGNALFD4               = 313\n\tSYS_EVENTFD2                = 314\n\tSYS_EPOLL_CREATE1           = 315\n\tSYS_DUP3                    = 316\n\tSYS_PIPE2                   = 317\n\tSYS_INOTIFY_INIT1           = 318\n\tSYS_PERF_EVENT_OPEN         = 319\n\tSYS_PREADV                  = 320\n\tSYS_PWRITEV                 = 321\n\tSYS_RT_TGSIGQUEUEINFO       = 322\n\tSYS_FANOTIFY_INIT           = 323\n\tSYS_FANOTIFY_MARK           = 324\n\tSYS_PRLIMIT64               = 325\n\tSYS_SOCKET                  = 326\n\tSYS_BIND                    = 327\n\tSYS_CONNECT                 = 328\n\tSYS_LISTEN                  = 329\n\tSYS_ACCEPT                  = 330\n\tSYS_GETSOCKNAME             = 331\n\tSYS_GETPEERNAME             = 332\n\tSYS_SOCKETPAIR              = 333\n\tSYS_SEND                    = 334\n\tSYS_SENDTO                  = 335\n\tSYS_RECV                    = 336\n\tSYS_RECVFROM                = 337\n\tSYS_SHUTDOWN                = 338\n\tSYS_SETSOCKOPT              = 339\n\tSYS_GETSOCKOPT              = 340\n\tSYS_SENDMSG                 = 341\n\tSYS_RECVMSG                 = 342\n\tSYS_RECVMMSG                = 343\n\tSYS_ACCEPT4                 = 344\n\tSYS_NAME_TO_HANDLE_AT       = 345\n\tSYS_OPEN_BY_HANDLE_AT       = 346\n\tSYS_CLOCK_ADJTIME           = 347\n\tSYS_SYNCFS                  = 348\n\tSYS_SENDMMSG                = 349\n\tSYS_SETNS                   = 350\n\tSYS_PROCESS_VM_READV        = 351\n\tSYS_PROCESS_VM_WRITEV       = 352\n\tSYS_FINIT_MODULE            = 353\n\tSYS_KCMP                    = 354\n\tSYS_SCHED_SETATTR           = 355\n\tSYS_SCHED_GETATTR           = 356\n\tSYS_RENAMEAT2               = 357\n\tSYS_SECCOMP                 = 358\n\tSYS_GETRANDOM               = 359\n\tSYS_MEMFD_CREATE            = 360\n\tSYS_BPF                     = 361\n\tSYS_EXECVEAT                = 362\n\tSYS_SWITCH_ENDIAN           = 363\n\tSYS_USERFAULTFD             = 364\n\tSYS_MEMBARRIER              = 365\n\tSYS_MLOCK2                  = 378\n\tSYS_COPY_FILE_RANGE         = 379\n\tSYS_PREADV2                 = 380\n\tSYS_PWRITEV2                = 381\n\tSYS_KEXEC_FILE_LOAD         = 382\n\tSYS_STATX                   = 383\n\tSYS_PKEY_ALLOC              = 384\n\tSYS_PKEY_FREE               = 385\n\tSYS_PKEY_MPROTECT           = 386\n\tSYS_RSEQ                    = 387\n\tSYS_IO_PGETEVENTS           = 388\n\tSYS_SEMTIMEDOP              = 392\n\tSYS_SEMGET                  = 393\n\tSYS_SEMCTL                  = 394\n\tSYS_SHMGET                  = 395\n\tSYS_SHMCTL                  = 396\n\tSYS_SHMAT                   = 397\n\tSYS_SHMDT                   = 398\n\tSYS_MSGGET                  = 399\n\tSYS_MSGSND                  = 400\n\tSYS_MSGRCV                  = 401\n\tSYS_MSGCTL                  = 402\n\tSYS_PIDFD_SEND_SIGNAL       = 424\n\tSYS_IO_URING_SETUP          = 425\n\tSYS_IO_URING_ENTER          = 426\n\tSYS_IO_URING_REGISTER       = 427\n\tSYS_OPEN_TREE               = 428\n\tSYS_MOVE_MOUNT              = 429\n\tSYS_FSOPEN                  = 430\n\tSYS_FSCONFIG                = 431\n\tSYS_FSMOUNT                 = 432\n\tSYS_FSPICK                  = 433\n\tSYS_PIDFD_OPEN              = 434\n\tSYS_CLONE3                  = 435\n\tSYS_CLOSE_RANGE             = 436\n\tSYS_OPENAT2                 = 437\n\tSYS_PIDFD_GETFD             = 438\n\tSYS_FACCESSAT2              = 439\n\tSYS_PROCESS_MADVISE         = 440\n\tSYS_EPOLL_PWAIT2            = 441\n\tSYS_MOUNT_SETATTR           = 442\n\tSYS_QUOTACTL_FD             = 443\n\tSYS_LANDLOCK_CREATE_RULESET = 444\n\tSYS_LANDLOCK_ADD_RULE       = 445\n\tSYS_LANDLOCK_RESTRICT_SELF  = 446\n\tSYS_PROCESS_MRELEASE        = 448\n\tSYS_FUTEX_WAITV             = 449\n\tSYS_SET_MEMPOLICY_HOME_NODE = 450\n\tSYS_CACHESTAT               = 451\n\tSYS_FCHMODAT2               = 452\n\tSYS_MAP_SHADOW_STACK        = 453\n\tSYS_FUTEX_WAKE              = 454\n\tSYS_FUTEX_WAIT              = 455\n\tSYS_FUTEX_REQUEUE           = 456\n\tSYS_STATMOUNT               = 457\n\tSYS_LISTMOUNT               = 458\n\tSYS_LSM_GET_SELF_ATTR       = 459\n\tSYS_LSM_SET_SELF_ATTR       = 460\n\tSYS_LSM_LIST_MODULES        = 461\n\tSYS_MSEAL                   = 462\n\tSYS_SETXATTRAT              = 463\n\tSYS_GETXATTRAT              = 464\n\tSYS_LISTXATTRAT             = 465\n\tSYS_REMOVEXATTRAT           = 466\n\tSYS_OPEN_TREE_ATTR          = 467\n)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/riscv64/include /tmp/riscv64/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build riscv64 && linux\n\npackage unix\n\nconst (\n\tSYS_IO_SETUP                = 0\n\tSYS_IO_DESTROY              = 1\n\tSYS_IO_SUBMIT               = 2\n\tSYS_IO_CANCEL               = 3\n\tSYS_IO_GETEVENTS            = 4\n\tSYS_SETXATTR                = 5\n\tSYS_LSETXATTR               = 6\n\tSYS_FSETXATTR               = 7\n\tSYS_GETXATTR                = 8\n\tSYS_LGETXATTR               = 9\n\tSYS_FGETXATTR               = 10\n\tSYS_LISTXATTR               = 11\n\tSYS_LLISTXATTR              = 12\n\tSYS_FLISTXATTR              = 13\n\tSYS_REMOVEXATTR             = 14\n\tSYS_LREMOVEXATTR            = 15\n\tSYS_FREMOVEXATTR            = 16\n\tSYS_GETCWD                  = 17\n\tSYS_LOOKUP_DCOOKIE          = 18\n\tSYS_EVENTFD2                = 19\n\tSYS_EPOLL_CREATE1           = 20\n\tSYS_EPOLL_CTL               = 21\n\tSYS_EPOLL_PWAIT             = 22\n\tSYS_DUP                     = 23\n\tSYS_DUP3                    = 24\n\tSYS_FCNTL                   = 25\n\tSYS_INOTIFY_INIT1           = 26\n\tSYS_INOTIFY_ADD_WATCH       = 27\n\tSYS_INOTIFY_RM_WATCH        = 28\n\tSYS_IOCTL                   = 29\n\tSYS_IOPRIO_SET              = 30\n\tSYS_IOPRIO_GET              = 31\n\tSYS_FLOCK                   = 32\n\tSYS_MKNODAT                 = 33\n\tSYS_MKDIRAT                 = 34\n\tSYS_UNLINKAT                = 35\n\tSYS_SYMLINKAT               = 36\n\tSYS_LINKAT                  = 37\n\tSYS_UMOUNT2                 = 39\n\tSYS_MOUNT                   = 40\n\tSYS_PIVOT_ROOT              = 41\n\tSYS_NFSSERVCTL              = 42\n\tSYS_STATFS                  = 43\n\tSYS_FSTATFS                 = 44\n\tSYS_TRUNCATE                = 45\n\tSYS_FTRUNCATE               = 46\n\tSYS_FALLOCATE               = 47\n\tSYS_FACCESSAT               = 48\n\tSYS_CHDIR                   = 49\n\tSYS_FCHDIR                  = 50\n\tSYS_CHROOT                  = 51\n\tSYS_FCHMOD                  = 52\n\tSYS_FCHMODAT                = 53\n\tSYS_FCHOWNAT                = 54\n\tSYS_FCHOWN                  = 55\n\tSYS_OPENAT                  = 56\n\tSYS_CLOSE                   = 57\n\tSYS_VHANGUP                 = 58\n\tSYS_PIPE2                   = 59\n\tSYS_QUOTACTL                = 60\n\tSYS_GETDENTS64              = 61\n\tSYS_LSEEK                   = 62\n\tSYS_READ                    = 63\n\tSYS_WRITE                   = 64\n\tSYS_READV                   = 65\n\tSYS_WRITEV                  = 66\n\tSYS_PREAD64                 = 67\n\tSYS_PWRITE64                = 68\n\tSYS_PREADV                  = 69\n\tSYS_PWRITEV                 = 70\n\tSYS_SENDFILE                = 71\n\tSYS_PSELECT6                = 72\n\tSYS_PPOLL                   = 73\n\tSYS_SIGNALFD4               = 74\n\tSYS_VMSPLICE                = 75\n\tSYS_SPLICE                  = 76\n\tSYS_TEE                     = 77\n\tSYS_READLINKAT              = 78\n\tSYS_NEWFSTATAT              = 79\n\tSYS_FSTAT                   = 80\n\tSYS_SYNC                    = 81\n\tSYS_FSYNC                   = 82\n\tSYS_FDATASYNC               = 83\n\tSYS_SYNC_FILE_RANGE         = 84\n\tSYS_TIMERFD_CREATE          = 85\n\tSYS_TIMERFD_SETTIME         = 86\n\tSYS_TIMERFD_GETTIME         = 87\n\tSYS_UTIMENSAT               = 88\n\tSYS_ACCT                    = 89\n\tSYS_CAPGET                  = 90\n\tSYS_CAPSET                  = 91\n\tSYS_PERSONALITY             = 92\n\tSYS_EXIT                    = 93\n\tSYS_EXIT_GROUP              = 94\n\tSYS_WAITID                  = 95\n\tSYS_SET_TID_ADDRESS         = 96\n\tSYS_UNSHARE                 = 97\n\tSYS_FUTEX                   = 98\n\tSYS_SET_ROBUST_LIST         = 99\n\tSYS_GET_ROBUST_LIST         = 100\n\tSYS_NANOSLEEP               = 101\n\tSYS_GETITIMER               = 102\n\tSYS_SETITIMER               = 103\n\tSYS_KEXEC_LOAD              = 104\n\tSYS_INIT_MODULE             = 105\n\tSYS_DELETE_MODULE           = 106\n\tSYS_TIMER_CREATE            = 107\n\tSYS_TIMER_GETTIME           = 108\n\tSYS_TIMER_GETOVERRUN        = 109\n\tSYS_TIMER_SETTIME           = 110\n\tSYS_TIMER_DELETE            = 111\n\tSYS_CLOCK_SETTIME           = 112\n\tSYS_CLOCK_GETTIME           = 113\n\tSYS_CLOCK_GETRES            = 114\n\tSYS_CLOCK_NANOSLEEP         = 115\n\tSYS_SYSLOG                  = 116\n\tSYS_PTRACE                  = 117\n\tSYS_SCHED_SETPARAM          = 118\n\tSYS_SCHED_SETSCHEDULER      = 119\n\tSYS_SCHED_GETSCHEDULER      = 120\n\tSYS_SCHED_GETPARAM          = 121\n\tSYS_SCHED_SETAFFINITY       = 122\n\tSYS_SCHED_GETAFFINITY       = 123\n\tSYS_SCHED_YIELD             = 124\n\tSYS_SCHED_GET_PRIORITY_MAX  = 125\n\tSYS_SCHED_GET_PRIORITY_MIN  = 126\n\tSYS_SCHED_RR_GET_INTERVAL   = 127\n\tSYS_RESTART_SYSCALL         = 128\n\tSYS_KILL                    = 129\n\tSYS_TKILL                   = 130\n\tSYS_TGKILL                  = 131\n\tSYS_SIGALTSTACK             = 132\n\tSYS_RT_SIGSUSPEND           = 133\n\tSYS_RT_SIGACTION            = 134\n\tSYS_RT_SIGPROCMASK          = 135\n\tSYS_RT_SIGPENDING           = 136\n\tSYS_RT_SIGTIMEDWAIT         = 137\n\tSYS_RT_SIGQUEUEINFO         = 138\n\tSYS_RT_SIGRETURN            = 139\n\tSYS_SETPRIORITY             = 140\n\tSYS_GETPRIORITY             = 141\n\tSYS_REBOOT                  = 142\n\tSYS_SETREGID                = 143\n\tSYS_SETGID                  = 144\n\tSYS_SETREUID                = 145\n\tSYS_SETUID                  = 146\n\tSYS_SETRESUID               = 147\n\tSYS_GETRESUID               = 148\n\tSYS_SETRESGID               = 149\n\tSYS_GETRESGID               = 150\n\tSYS_SETFSUID                = 151\n\tSYS_SETFSGID                = 152\n\tSYS_TIMES                   = 153\n\tSYS_SETPGID                 = 154\n\tSYS_GETPGID                 = 155\n\tSYS_GETSID                  = 156\n\tSYS_SETSID                  = 157\n\tSYS_GETGROUPS               = 158\n\tSYS_SETGROUPS               = 159\n\tSYS_UNAME                   = 160\n\tSYS_SETHOSTNAME             = 161\n\tSYS_SETDOMAINNAME           = 162\n\tSYS_GETRLIMIT               = 163\n\tSYS_SETRLIMIT               = 164\n\tSYS_GETRUSAGE               = 165\n\tSYS_UMASK                   = 166\n\tSYS_PRCTL                   = 167\n\tSYS_GETCPU                  = 168\n\tSYS_GETTIMEOFDAY            = 169\n\tSYS_SETTIMEOFDAY            = 170\n\tSYS_ADJTIMEX                = 171\n\tSYS_GETPID                  = 172\n\tSYS_GETPPID                 = 173\n\tSYS_GETUID                  = 174\n\tSYS_GETEUID                 = 175\n\tSYS_GETGID                  = 176\n\tSYS_GETEGID                 = 177\n\tSYS_GETTID                  = 178\n\tSYS_SYSINFO                 = 179\n\tSYS_MQ_OPEN                 = 180\n\tSYS_MQ_UNLINK               = 181\n\tSYS_MQ_TIMEDSEND            = 182\n\tSYS_MQ_TIMEDRECEIVE         = 183\n\tSYS_MQ_NOTIFY               = 184\n\tSYS_MQ_GETSETATTR           = 185\n\tSYS_MSGGET                  = 186\n\tSYS_MSGCTL                  = 187\n\tSYS_MSGRCV                  = 188\n\tSYS_MSGSND                  = 189\n\tSYS_SEMGET                  = 190\n\tSYS_SEMCTL                  = 191\n\tSYS_SEMTIMEDOP              = 192\n\tSYS_SEMOP                   = 193\n\tSYS_SHMGET                  = 194\n\tSYS_SHMCTL                  = 195\n\tSYS_SHMAT                   = 196\n\tSYS_SHMDT                   = 197\n\tSYS_SOCKET                  = 198\n\tSYS_SOCKETPAIR              = 199\n\tSYS_BIND                    = 200\n\tSYS_LISTEN                  = 201\n\tSYS_ACCEPT                  = 202\n\tSYS_CONNECT                 = 203\n\tSYS_GETSOCKNAME             = 204\n\tSYS_GETPEERNAME             = 205\n\tSYS_SENDTO                  = 206\n\tSYS_RECVFROM                = 207\n\tSYS_SETSOCKOPT              = 208\n\tSYS_GETSOCKOPT              = 209\n\tSYS_SHUTDOWN                = 210\n\tSYS_SENDMSG                 = 211\n\tSYS_RECVMSG                 = 212\n\tSYS_READAHEAD               = 213\n\tSYS_BRK                     = 214\n\tSYS_MUNMAP                  = 215\n\tSYS_MREMAP                  = 216\n\tSYS_ADD_KEY                 = 217\n\tSYS_REQUEST_KEY             = 218\n\tSYS_KEYCTL                  = 219\n\tSYS_CLONE                   = 220\n\tSYS_EXECVE                  = 221\n\tSYS_MMAP                    = 222\n\tSYS_FADVISE64               = 223\n\tSYS_SWAPON                  = 224\n\tSYS_SWAPOFF                 = 225\n\tSYS_MPROTECT                = 226\n\tSYS_MSYNC                   = 227\n\tSYS_MLOCK                   = 228\n\tSYS_MUNLOCK                 = 229\n\tSYS_MLOCKALL                = 230\n\tSYS_MUNLOCKALL              = 231\n\tSYS_MINCORE                 = 232\n\tSYS_MADVISE                 = 233\n\tSYS_REMAP_FILE_PAGES        = 234\n\tSYS_MBIND                   = 235\n\tSYS_GET_MEMPOLICY           = 236\n\tSYS_SET_MEMPOLICY           = 237\n\tSYS_MIGRATE_PAGES           = 238\n\tSYS_MOVE_PAGES              = 239\n\tSYS_RT_TGSIGQUEUEINFO       = 240\n\tSYS_PERF_EVENT_OPEN         = 241\n\tSYS_ACCEPT4                 = 242\n\tSYS_RECVMMSG                = 243\n\tSYS_ARCH_SPECIFIC_SYSCALL   = 244\n\tSYS_RISCV_HWPROBE           = 258\n\tSYS_RISCV_FLUSH_ICACHE      = 259\n\tSYS_WAIT4                   = 260\n\tSYS_PRLIMIT64               = 261\n\tSYS_FANOTIFY_INIT           = 262\n\tSYS_FANOTIFY_MARK           = 263\n\tSYS_NAME_TO_HANDLE_AT       = 264\n\tSYS_OPEN_BY_HANDLE_AT       = 265\n\tSYS_CLOCK_ADJTIME           = 266\n\tSYS_SYNCFS                  = 267\n\tSYS_SETNS                   = 268\n\tSYS_SENDMMSG                = 269\n\tSYS_PROCESS_VM_READV        = 270\n\tSYS_PROCESS_VM_WRITEV       = 271\n\tSYS_KCMP                    = 272\n\tSYS_FINIT_MODULE            = 273\n\tSYS_SCHED_SETATTR           = 274\n\tSYS_SCHED_GETATTR           = 275\n\tSYS_RENAMEAT2               = 276\n\tSYS_SECCOMP                 = 277\n\tSYS_GETRANDOM               = 278\n\tSYS_MEMFD_CREATE            = 279\n\tSYS_BPF                     = 280\n\tSYS_EXECVEAT                = 281\n\tSYS_USERFAULTFD             = 282\n\tSYS_MEMBARRIER              = 283\n\tSYS_MLOCK2                  = 284\n\tSYS_COPY_FILE_RANGE         = 285\n\tSYS_PREADV2                 = 286\n\tSYS_PWRITEV2                = 287\n\tSYS_PKEY_MPROTECT           = 288\n\tSYS_PKEY_ALLOC              = 289\n\tSYS_PKEY_FREE               = 290\n\tSYS_STATX                   = 291\n\tSYS_IO_PGETEVENTS           = 292\n\tSYS_RSEQ                    = 293\n\tSYS_KEXEC_FILE_LOAD         = 294\n\tSYS_PIDFD_SEND_SIGNAL       = 424\n\tSYS_IO_URING_SETUP          = 425\n\tSYS_IO_URING_ENTER          = 426\n\tSYS_IO_URING_REGISTER       = 427\n\tSYS_OPEN_TREE               = 428\n\tSYS_MOVE_MOUNT              = 429\n\tSYS_FSOPEN                  = 430\n\tSYS_FSCONFIG                = 431\n\tSYS_FSMOUNT                 = 432\n\tSYS_FSPICK                  = 433\n\tSYS_PIDFD_OPEN              = 434\n\tSYS_CLONE3                  = 435\n\tSYS_CLOSE_RANGE             = 436\n\tSYS_OPENAT2                 = 437\n\tSYS_PIDFD_GETFD             = 438\n\tSYS_FACCESSAT2              = 439\n\tSYS_PROCESS_MADVISE         = 440\n\tSYS_EPOLL_PWAIT2            = 441\n\tSYS_MOUNT_SETATTR           = 442\n\tSYS_QUOTACTL_FD             = 443\n\tSYS_LANDLOCK_CREATE_RULESET = 444\n\tSYS_LANDLOCK_ADD_RULE       = 445\n\tSYS_LANDLOCK_RESTRICT_SELF  = 446\n\tSYS_MEMFD_SECRET            = 447\n\tSYS_PROCESS_MRELEASE        = 448\n\tSYS_FUTEX_WAITV             = 449\n\tSYS_SET_MEMPOLICY_HOME_NODE = 450\n\tSYS_CACHESTAT               = 451\n\tSYS_FCHMODAT2               = 452\n\tSYS_MAP_SHADOW_STACK        = 453\n\tSYS_FUTEX_WAKE              = 454\n\tSYS_FUTEX_WAIT              = 455\n\tSYS_FUTEX_REQUEUE           = 456\n\tSYS_STATMOUNT               = 457\n\tSYS_LISTMOUNT               = 458\n\tSYS_LSM_GET_SELF_ATTR       = 459\n\tSYS_LSM_SET_SELF_ATTR       = 460\n\tSYS_LSM_LIST_MODULES        = 461\n\tSYS_MSEAL                   = 462\n\tSYS_SETXATTRAT              = 463\n\tSYS_GETXATTRAT              = 464\n\tSYS_LISTXATTRAT             = 465\n\tSYS_REMOVEXATTRAT           = 466\n\tSYS_OPEN_TREE_ATTR          = 467\n)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/s390x/include -fsigned-char /tmp/s390x/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build s390x && linux\n\npackage unix\n\nconst (\n\tSYS_EXIT                    = 1\n\tSYS_FORK                    = 2\n\tSYS_READ                    = 3\n\tSYS_WRITE                   = 4\n\tSYS_OPEN                    = 5\n\tSYS_CLOSE                   = 6\n\tSYS_RESTART_SYSCALL         = 7\n\tSYS_CREAT                   = 8\n\tSYS_LINK                    = 9\n\tSYS_UNLINK                  = 10\n\tSYS_EXECVE                  = 11\n\tSYS_CHDIR                   = 12\n\tSYS_MKNOD                   = 14\n\tSYS_CHMOD                   = 15\n\tSYS_LSEEK                   = 19\n\tSYS_GETPID                  = 20\n\tSYS_MOUNT                   = 21\n\tSYS_UMOUNT                  = 22\n\tSYS_PTRACE                  = 26\n\tSYS_ALARM                   = 27\n\tSYS_PAUSE                   = 29\n\tSYS_UTIME                   = 30\n\tSYS_ACCESS                  = 33\n\tSYS_NICE                    = 34\n\tSYS_SYNC                    = 36\n\tSYS_KILL                    = 37\n\tSYS_RENAME                  = 38\n\tSYS_MKDIR                   = 39\n\tSYS_RMDIR                   = 40\n\tSYS_DUP                     = 41\n\tSYS_PIPE                    = 42\n\tSYS_TIMES                   = 43\n\tSYS_BRK                     = 45\n\tSYS_SIGNAL                  = 48\n\tSYS_ACCT                    = 51\n\tSYS_UMOUNT2                 = 52\n\tSYS_IOCTL                   = 54\n\tSYS_FCNTL                   = 55\n\tSYS_SETPGID                 = 57\n\tSYS_UMASK                   = 60\n\tSYS_CHROOT                  = 61\n\tSYS_USTAT                   = 62\n\tSYS_DUP2                    = 63\n\tSYS_GETPPID                 = 64\n\tSYS_GETPGRP                 = 65\n\tSYS_SETSID                  = 66\n\tSYS_SIGACTION               = 67\n\tSYS_SIGSUSPEND              = 72\n\tSYS_SIGPENDING              = 73\n\tSYS_SETHOSTNAME             = 74\n\tSYS_SETRLIMIT               = 75\n\tSYS_GETRUSAGE               = 77\n\tSYS_GETTIMEOFDAY            = 78\n\tSYS_SETTIMEOFDAY            = 79\n\tSYS_SYMLINK                 = 83\n\tSYS_READLINK                = 85\n\tSYS_USELIB                  = 86\n\tSYS_SWAPON                  = 87\n\tSYS_REBOOT                  = 88\n\tSYS_READDIR                 = 89\n\tSYS_MMAP                    = 90\n\tSYS_MUNMAP                  = 91\n\tSYS_TRUNCATE                = 92\n\tSYS_FTRUNCATE               = 93\n\tSYS_FCHMOD                  = 94\n\tSYS_GETPRIORITY             = 96\n\tSYS_SETPRIORITY             = 97\n\tSYS_STATFS                  = 99\n\tSYS_FSTATFS                 = 100\n\tSYS_SOCKETCALL              = 102\n\tSYS_SYSLOG                  = 103\n\tSYS_SETITIMER               = 104\n\tSYS_GETITIMER               = 105\n\tSYS_STAT                    = 106\n\tSYS_LSTAT                   = 107\n\tSYS_FSTAT                   = 108\n\tSYS_LOOKUP_DCOOKIE          = 110\n\tSYS_VHANGUP                 = 111\n\tSYS_IDLE                    = 112\n\tSYS_WAIT4                   = 114\n\tSYS_SWAPOFF                 = 115\n\tSYS_SYSINFO                 = 116\n\tSYS_IPC                     = 117\n\tSYS_FSYNC                   = 118\n\tSYS_SIGRETURN               = 119\n\tSYS_CLONE                   = 120\n\tSYS_SETDOMAINNAME           = 121\n\tSYS_UNAME                   = 122\n\tSYS_ADJTIMEX                = 124\n\tSYS_MPROTECT                = 125\n\tSYS_SIGPROCMASK             = 126\n\tSYS_CREATE_MODULE           = 127\n\tSYS_INIT_MODULE             = 128\n\tSYS_DELETE_MODULE           = 129\n\tSYS_GET_KERNEL_SYMS         = 130\n\tSYS_QUOTACTL                = 131\n\tSYS_GETPGID                 = 132\n\tSYS_FCHDIR                  = 133\n\tSYS_BDFLUSH                 = 134\n\tSYS_SYSFS                   = 135\n\tSYS_PERSONALITY             = 136\n\tSYS_AFS_SYSCALL             = 137\n\tSYS_GETDENTS                = 141\n\tSYS_SELECT                  = 142\n\tSYS_FLOCK                   = 143\n\tSYS_MSYNC                   = 144\n\tSYS_READV                   = 145\n\tSYS_WRITEV                  = 146\n\tSYS_GETSID                  = 147\n\tSYS_FDATASYNC               = 148\n\tSYS__SYSCTL                 = 149\n\tSYS_MLOCK                   = 150\n\tSYS_MUNLOCK                 = 151\n\tSYS_MLOCKALL                = 152\n\tSYS_MUNLOCKALL              = 153\n\tSYS_SCHED_SETPARAM          = 154\n\tSYS_SCHED_GETPARAM          = 155\n\tSYS_SCHED_SETSCHEDULER      = 156\n\tSYS_SCHED_GETSCHEDULER      = 157\n\tSYS_SCHED_YIELD             = 158\n\tSYS_SCHED_GET_PRIORITY_MAX  = 159\n\tSYS_SCHED_GET_PRIORITY_MIN  = 160\n\tSYS_SCHED_RR_GET_INTERVAL   = 161\n\tSYS_NANOSLEEP               = 162\n\tSYS_MREMAP                  = 163\n\tSYS_QUERY_MODULE            = 167\n\tSYS_POLL                    = 168\n\tSYS_NFSSERVCTL              = 169\n\tSYS_PRCTL                   = 172\n\tSYS_RT_SIGRETURN            = 173\n\tSYS_RT_SIGACTION            = 174\n\tSYS_RT_SIGPROCMASK          = 175\n\tSYS_RT_SIGPENDING           = 176\n\tSYS_RT_SIGTIMEDWAIT         = 177\n\tSYS_RT_SIGQUEUEINFO         = 178\n\tSYS_RT_SIGSUSPEND           = 179\n\tSYS_PREAD64                 = 180\n\tSYS_PWRITE64                = 181\n\tSYS_GETCWD                  = 183\n\tSYS_CAPGET                  = 184\n\tSYS_CAPSET                  = 185\n\tSYS_SIGALTSTACK             = 186\n\tSYS_SENDFILE                = 187\n\tSYS_GETPMSG                 = 188\n\tSYS_PUTPMSG                 = 189\n\tSYS_VFORK                   = 190\n\tSYS_GETRLIMIT               = 191\n\tSYS_LCHOWN                  = 198\n\tSYS_GETUID                  = 199\n\tSYS_GETGID                  = 200\n\tSYS_GETEUID                 = 201\n\tSYS_GETEGID                 = 202\n\tSYS_SETREUID                = 203\n\tSYS_SETREGID                = 204\n\tSYS_GETGROUPS               = 205\n\tSYS_SETGROUPS               = 206\n\tSYS_FCHOWN                  = 207\n\tSYS_SETRESUID               = 208\n\tSYS_GETRESUID               = 209\n\tSYS_SETRESGID               = 210\n\tSYS_GETRESGID               = 211\n\tSYS_CHOWN                   = 212\n\tSYS_SETUID                  = 213\n\tSYS_SETGID                  = 214\n\tSYS_SETFSUID                = 215\n\tSYS_SETFSGID                = 216\n\tSYS_PIVOT_ROOT              = 217\n\tSYS_MINCORE                 = 218\n\tSYS_MADVISE                 = 219\n\tSYS_GETDENTS64              = 220\n\tSYS_READAHEAD               = 222\n\tSYS_SETXATTR                = 224\n\tSYS_LSETXATTR               = 225\n\tSYS_FSETXATTR               = 226\n\tSYS_GETXATTR                = 227\n\tSYS_LGETXATTR               = 228\n\tSYS_FGETXATTR               = 229\n\tSYS_LISTXATTR               = 230\n\tSYS_LLISTXATTR              = 231\n\tSYS_FLISTXATTR              = 232\n\tSYS_REMOVEXATTR             = 233\n\tSYS_LREMOVEXATTR            = 234\n\tSYS_FREMOVEXATTR            = 235\n\tSYS_GETTID                  = 236\n\tSYS_TKILL                   = 237\n\tSYS_FUTEX                   = 238\n\tSYS_SCHED_SETAFFINITY       = 239\n\tSYS_SCHED_GETAFFINITY       = 240\n\tSYS_TGKILL                  = 241\n\tSYS_IO_SETUP                = 243\n\tSYS_IO_DESTROY              = 244\n\tSYS_IO_GETEVENTS            = 245\n\tSYS_IO_SUBMIT               = 246\n\tSYS_IO_CANCEL               = 247\n\tSYS_EXIT_GROUP              = 248\n\tSYS_EPOLL_CREATE            = 249\n\tSYS_EPOLL_CTL               = 250\n\tSYS_EPOLL_WAIT              = 251\n\tSYS_SET_TID_ADDRESS         = 252\n\tSYS_FADVISE64               = 253\n\tSYS_TIMER_CREATE            = 254\n\tSYS_TIMER_SETTIME           = 255\n\tSYS_TIMER_GETTIME           = 256\n\tSYS_TIMER_GETOVERRUN        = 257\n\tSYS_TIMER_DELETE            = 258\n\tSYS_CLOCK_SETTIME           = 259\n\tSYS_CLOCK_GETTIME           = 260\n\tSYS_CLOCK_GETRES            = 261\n\tSYS_CLOCK_NANOSLEEP         = 262\n\tSYS_STATFS64                = 265\n\tSYS_FSTATFS64               = 266\n\tSYS_REMAP_FILE_PAGES        = 267\n\tSYS_MBIND                   = 268\n\tSYS_GET_MEMPOLICY           = 269\n\tSYS_SET_MEMPOLICY           = 270\n\tSYS_MQ_OPEN                 = 271\n\tSYS_MQ_UNLINK               = 272\n\tSYS_MQ_TIMEDSEND            = 273\n\tSYS_MQ_TIMEDRECEIVE         = 274\n\tSYS_MQ_NOTIFY               = 275\n\tSYS_MQ_GETSETATTR           = 276\n\tSYS_KEXEC_LOAD              = 277\n\tSYS_ADD_KEY                 = 278\n\tSYS_REQUEST_KEY             = 279\n\tSYS_KEYCTL                  = 280\n\tSYS_WAITID                  = 281\n\tSYS_IOPRIO_SET              = 282\n\tSYS_IOPRIO_GET              = 283\n\tSYS_INOTIFY_INIT            = 284\n\tSYS_INOTIFY_ADD_WATCH       = 285\n\tSYS_INOTIFY_RM_WATCH        = 286\n\tSYS_MIGRATE_PAGES           = 287\n\tSYS_OPENAT                  = 288\n\tSYS_MKDIRAT                 = 289\n\tSYS_MKNODAT                 = 290\n\tSYS_FCHOWNAT                = 291\n\tSYS_FUTIMESAT               = 292\n\tSYS_NEWFSTATAT              = 293\n\tSYS_UNLINKAT                = 294\n\tSYS_RENAMEAT                = 295\n\tSYS_LINKAT                  = 296\n\tSYS_SYMLINKAT               = 297\n\tSYS_READLINKAT              = 298\n\tSYS_FCHMODAT                = 299\n\tSYS_FACCESSAT               = 300\n\tSYS_PSELECT6                = 301\n\tSYS_PPOLL                   = 302\n\tSYS_UNSHARE                 = 303\n\tSYS_SET_ROBUST_LIST         = 304\n\tSYS_GET_ROBUST_LIST         = 305\n\tSYS_SPLICE                  = 306\n\tSYS_SYNC_FILE_RANGE         = 307\n\tSYS_TEE                     = 308\n\tSYS_VMSPLICE                = 309\n\tSYS_MOVE_PAGES              = 310\n\tSYS_GETCPU                  = 311\n\tSYS_EPOLL_PWAIT             = 312\n\tSYS_UTIMES                  = 313\n\tSYS_FALLOCATE               = 314\n\tSYS_UTIMENSAT               = 315\n\tSYS_SIGNALFD                = 316\n\tSYS_TIMERFD                 = 317\n\tSYS_EVENTFD                 = 318\n\tSYS_TIMERFD_CREATE          = 319\n\tSYS_TIMERFD_SETTIME         = 320\n\tSYS_TIMERFD_GETTIME         = 321\n\tSYS_SIGNALFD4               = 322\n\tSYS_EVENTFD2                = 323\n\tSYS_INOTIFY_INIT1           = 324\n\tSYS_PIPE2                   = 325\n\tSYS_DUP3                    = 326\n\tSYS_EPOLL_CREATE1           = 327\n\tSYS_PREADV                  = 328\n\tSYS_PWRITEV                 = 329\n\tSYS_RT_TGSIGQUEUEINFO       = 330\n\tSYS_PERF_EVENT_OPEN         = 331\n\tSYS_FANOTIFY_INIT           = 332\n\tSYS_FANOTIFY_MARK           = 333\n\tSYS_PRLIMIT64               = 334\n\tSYS_NAME_TO_HANDLE_AT       = 335\n\tSYS_OPEN_BY_HANDLE_AT       = 336\n\tSYS_CLOCK_ADJTIME           = 337\n\tSYS_SYNCFS                  = 338\n\tSYS_SETNS                   = 339\n\tSYS_PROCESS_VM_READV        = 340\n\tSYS_PROCESS_VM_WRITEV       = 341\n\tSYS_S390_RUNTIME_INSTR      = 342\n\tSYS_KCMP                    = 343\n\tSYS_FINIT_MODULE            = 344\n\tSYS_SCHED_SETATTR           = 345\n\tSYS_SCHED_GETATTR           = 346\n\tSYS_RENAMEAT2               = 347\n\tSYS_SECCOMP                 = 348\n\tSYS_GETRANDOM               = 349\n\tSYS_MEMFD_CREATE            = 350\n\tSYS_BPF                     = 351\n\tSYS_S390_PCI_MMIO_WRITE     = 352\n\tSYS_S390_PCI_MMIO_READ      = 353\n\tSYS_EXECVEAT                = 354\n\tSYS_USERFAULTFD             = 355\n\tSYS_MEMBARRIER              = 356\n\tSYS_RECVMMSG                = 357\n\tSYS_SENDMMSG                = 358\n\tSYS_SOCKET                  = 359\n\tSYS_SOCKETPAIR              = 360\n\tSYS_BIND                    = 361\n\tSYS_CONNECT                 = 362\n\tSYS_LISTEN                  = 363\n\tSYS_ACCEPT4                 = 364\n\tSYS_GETSOCKOPT              = 365\n\tSYS_SETSOCKOPT              = 366\n\tSYS_GETSOCKNAME             = 367\n\tSYS_GETPEERNAME             = 368\n\tSYS_SENDTO                  = 369\n\tSYS_SENDMSG                 = 370\n\tSYS_RECVFROM                = 371\n\tSYS_RECVMSG                 = 372\n\tSYS_SHUTDOWN                = 373\n\tSYS_MLOCK2                  = 374\n\tSYS_COPY_FILE_RANGE         = 375\n\tSYS_PREADV2                 = 376\n\tSYS_PWRITEV2                = 377\n\tSYS_S390_GUARDED_STORAGE    = 378\n\tSYS_STATX                   = 379\n\tSYS_S390_STHYI              = 380\n\tSYS_KEXEC_FILE_LOAD         = 381\n\tSYS_IO_PGETEVENTS           = 382\n\tSYS_RSEQ                    = 383\n\tSYS_PKEY_MPROTECT           = 384\n\tSYS_PKEY_ALLOC              = 385\n\tSYS_PKEY_FREE               = 386\n\tSYS_SEMTIMEDOP              = 392\n\tSYS_SEMGET                  = 393\n\tSYS_SEMCTL                  = 394\n\tSYS_SHMGET                  = 395\n\tSYS_SHMCTL                  = 396\n\tSYS_SHMAT                   = 397\n\tSYS_SHMDT                   = 398\n\tSYS_MSGGET                  = 399\n\tSYS_MSGSND                  = 400\n\tSYS_MSGRCV                  = 401\n\tSYS_MSGCTL                  = 402\n\tSYS_PIDFD_SEND_SIGNAL       = 424\n\tSYS_IO_URING_SETUP          = 425\n\tSYS_IO_URING_ENTER          = 426\n\tSYS_IO_URING_REGISTER       = 427\n\tSYS_OPEN_TREE               = 428\n\tSYS_MOVE_MOUNT              = 429\n\tSYS_FSOPEN                  = 430\n\tSYS_FSCONFIG                = 431\n\tSYS_FSMOUNT                 = 432\n\tSYS_FSPICK                  = 433\n\tSYS_PIDFD_OPEN              = 434\n\tSYS_CLONE3                  = 435\n\tSYS_CLOSE_RANGE             = 436\n\tSYS_OPENAT2                 = 437\n\tSYS_PIDFD_GETFD             = 438\n\tSYS_FACCESSAT2              = 439\n\tSYS_PROCESS_MADVISE         = 440\n\tSYS_EPOLL_PWAIT2            = 441\n\tSYS_MOUNT_SETATTR           = 442\n\tSYS_QUOTACTL_FD             = 443\n\tSYS_LANDLOCK_CREATE_RULESET = 444\n\tSYS_LANDLOCK_ADD_RULE       = 445\n\tSYS_LANDLOCK_RESTRICT_SELF  = 446\n\tSYS_MEMFD_SECRET            = 447\n\tSYS_PROCESS_MRELEASE        = 448\n\tSYS_FUTEX_WAITV             = 449\n\tSYS_SET_MEMPOLICY_HOME_NODE = 450\n\tSYS_CACHESTAT               = 451\n\tSYS_FCHMODAT2               = 452\n\tSYS_MAP_SHADOW_STACK        = 453\n\tSYS_FUTEX_WAKE              = 454\n\tSYS_FUTEX_WAIT              = 455\n\tSYS_FUTEX_REQUEUE           = 456\n\tSYS_STATMOUNT               = 457\n\tSYS_LISTMOUNT               = 458\n\tSYS_LSM_GET_SELF_ATTR       = 459\n\tSYS_LSM_SET_SELF_ATTR       = 460\n\tSYS_LSM_LIST_MODULES        = 461\n\tSYS_MSEAL                   = 462\n\tSYS_SETXATTRAT              = 463\n\tSYS_GETXATTRAT              = 464\n\tSYS_LISTXATTRAT             = 465\n\tSYS_REMOVEXATTRAT           = 466\n\tSYS_OPEN_TREE_ATTR          = 467\n)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/sparc64/include /tmp/sparc64/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build sparc64 && linux\n\npackage unix\n\nconst (\n\tSYS_RESTART_SYSCALL         = 0\n\tSYS_EXIT                    = 1\n\tSYS_FORK                    = 2\n\tSYS_READ                    = 3\n\tSYS_WRITE                   = 4\n\tSYS_OPEN                    = 5\n\tSYS_CLOSE                   = 6\n\tSYS_WAIT4                   = 7\n\tSYS_CREAT                   = 8\n\tSYS_LINK                    = 9\n\tSYS_UNLINK                  = 10\n\tSYS_EXECV                   = 11\n\tSYS_CHDIR                   = 12\n\tSYS_CHOWN                   = 13\n\tSYS_MKNOD                   = 14\n\tSYS_CHMOD                   = 15\n\tSYS_LCHOWN                  = 16\n\tSYS_BRK                     = 17\n\tSYS_PERFCTR                 = 18\n\tSYS_LSEEK                   = 19\n\tSYS_GETPID                  = 20\n\tSYS_CAPGET                  = 21\n\tSYS_CAPSET                  = 22\n\tSYS_SETUID                  = 23\n\tSYS_GETUID                  = 24\n\tSYS_VMSPLICE                = 25\n\tSYS_PTRACE                  = 26\n\tSYS_ALARM                   = 27\n\tSYS_SIGALTSTACK             = 28\n\tSYS_PAUSE                   = 29\n\tSYS_UTIME                   = 30\n\tSYS_ACCESS                  = 33\n\tSYS_NICE                    = 34\n\tSYS_SYNC                    = 36\n\tSYS_KILL                    = 37\n\tSYS_STAT                    = 38\n\tSYS_SENDFILE                = 39\n\tSYS_LSTAT                   = 40\n\tSYS_DUP                     = 41\n\tSYS_PIPE                    = 42\n\tSYS_TIMES                   = 43\n\tSYS_UMOUNT2                 = 45\n\tSYS_SETGID                  = 46\n\tSYS_GETGID                  = 47\n\tSYS_SIGNAL                  = 48\n\tSYS_GETEUID                 = 49\n\tSYS_GETEGID                 = 50\n\tSYS_ACCT                    = 51\n\tSYS_MEMORY_ORDERING         = 52\n\tSYS_IOCTL                   = 54\n\tSYS_REBOOT                  = 55\n\tSYS_SYMLINK                 = 57\n\tSYS_READLINK                = 58\n\tSYS_EXECVE                  = 59\n\tSYS_UMASK                   = 60\n\tSYS_CHROOT                  = 61\n\tSYS_FSTAT                   = 62\n\tSYS_FSTAT64                 = 63\n\tSYS_GETPAGESIZE             = 64\n\tSYS_MSYNC                   = 65\n\tSYS_VFORK                   = 66\n\tSYS_PREAD64                 = 67\n\tSYS_PWRITE64                = 68\n\tSYS_MMAP                    = 71\n\tSYS_MUNMAP                  = 73\n\tSYS_MPROTECT                = 74\n\tSYS_MADVISE                 = 75\n\tSYS_VHANGUP                 = 76\n\tSYS_MINCORE                 = 78\n\tSYS_GETGROUPS               = 79\n\tSYS_SETGROUPS               = 80\n\tSYS_GETPGRP                 = 81\n\tSYS_SETITIMER               = 83\n\tSYS_SWAPON                  = 85\n\tSYS_GETITIMER               = 86\n\tSYS_SETHOSTNAME             = 88\n\tSYS_DUP2                    = 90\n\tSYS_FCNTL                   = 92\n\tSYS_SELECT                  = 93\n\tSYS_FSYNC                   = 95\n\tSYS_SETPRIORITY             = 96\n\tSYS_SOCKET                  = 97\n\tSYS_CONNECT                 = 98\n\tSYS_ACCEPT                  = 99\n\tSYS_GETPRIORITY             = 100\n\tSYS_RT_SIGRETURN            = 101\n\tSYS_RT_SIGACTION            = 102\n\tSYS_RT_SIGPROCMASK          = 103\n\tSYS_RT_SIGPENDING           = 104\n\tSYS_RT_SIGTIMEDWAIT         = 105\n\tSYS_RT_SIGQUEUEINFO         = 106\n\tSYS_RT_SIGSUSPEND           = 107\n\tSYS_SETRESUID               = 108\n\tSYS_GETRESUID               = 109\n\tSYS_SETRESGID               = 110\n\tSYS_GETRESGID               = 111\n\tSYS_RECVMSG                 = 113\n\tSYS_SENDMSG                 = 114\n\tSYS_GETTIMEOFDAY            = 116\n\tSYS_GETRUSAGE               = 117\n\tSYS_GETSOCKOPT              = 118\n\tSYS_GETCWD                  = 119\n\tSYS_READV                   = 120\n\tSYS_WRITEV                  = 121\n\tSYS_SETTIMEOFDAY            = 122\n\tSYS_FCHOWN                  = 123\n\tSYS_FCHMOD                  = 124\n\tSYS_RECVFROM                = 125\n\tSYS_SETREUID                = 126\n\tSYS_SETREGID                = 127\n\tSYS_RENAME                  = 128\n\tSYS_TRUNCATE                = 129\n\tSYS_FTRUNCATE               = 130\n\tSYS_FLOCK                   = 131\n\tSYS_LSTAT64                 = 132\n\tSYS_SENDTO                  = 133\n\tSYS_SHUTDOWN                = 134\n\tSYS_SOCKETPAIR              = 135\n\tSYS_MKDIR                   = 136\n\tSYS_RMDIR                   = 137\n\tSYS_UTIMES                  = 138\n\tSYS_STAT64                  = 139\n\tSYS_SENDFILE64              = 140\n\tSYS_GETPEERNAME             = 141\n\tSYS_FUTEX                   = 142\n\tSYS_GETTID                  = 143\n\tSYS_GETRLIMIT               = 144\n\tSYS_SETRLIMIT               = 145\n\tSYS_PIVOT_ROOT              = 146\n\tSYS_PRCTL                   = 147\n\tSYS_PCICONFIG_READ          = 148\n\tSYS_PCICONFIG_WRITE         = 149\n\tSYS_GETSOCKNAME             = 150\n\tSYS_INOTIFY_INIT            = 151\n\tSYS_INOTIFY_ADD_WATCH       = 152\n\tSYS_POLL                    = 153\n\tSYS_GETDENTS64              = 154\n\tSYS_INOTIFY_RM_WATCH        = 156\n\tSYS_STATFS                  = 157\n\tSYS_FSTATFS                 = 158\n\tSYS_UMOUNT                  = 159\n\tSYS_SCHED_SET_AFFINITY      = 160\n\tSYS_SCHED_GET_AFFINITY      = 161\n\tSYS_GETDOMAINNAME           = 162\n\tSYS_SETDOMAINNAME           = 163\n\tSYS_UTRAP_INSTALL           = 164\n\tSYS_QUOTACTL                = 165\n\tSYS_SET_TID_ADDRESS         = 166\n\tSYS_MOUNT                   = 167\n\tSYS_USTAT                   = 168\n\tSYS_SETXATTR                = 169\n\tSYS_LSETXATTR               = 170\n\tSYS_FSETXATTR               = 171\n\tSYS_GETXATTR                = 172\n\tSYS_LGETXATTR               = 173\n\tSYS_GETDENTS                = 174\n\tSYS_SETSID                  = 175\n\tSYS_FCHDIR                  = 176\n\tSYS_FGETXATTR               = 177\n\tSYS_LISTXATTR               = 178\n\tSYS_LLISTXATTR              = 179\n\tSYS_FLISTXATTR              = 180\n\tSYS_REMOVEXATTR             = 181\n\tSYS_LREMOVEXATTR            = 182\n\tSYS_SIGPENDING              = 183\n\tSYS_QUERY_MODULE            = 184\n\tSYS_SETPGID                 = 185\n\tSYS_FREMOVEXATTR            = 186\n\tSYS_TKILL                   = 187\n\tSYS_EXIT_GROUP              = 188\n\tSYS_UNAME                   = 189\n\tSYS_INIT_MODULE             = 190\n\tSYS_PERSONALITY             = 191\n\tSYS_REMAP_FILE_PAGES        = 192\n\tSYS_EPOLL_CREATE            = 193\n\tSYS_EPOLL_CTL               = 194\n\tSYS_EPOLL_WAIT              = 195\n\tSYS_IOPRIO_SET              = 196\n\tSYS_GETPPID                 = 197\n\tSYS_SIGACTION               = 198\n\tSYS_SGETMASK                = 199\n\tSYS_SSETMASK                = 200\n\tSYS_SIGSUSPEND              = 201\n\tSYS_OLDLSTAT                = 202\n\tSYS_USELIB                  = 203\n\tSYS_READDIR                 = 204\n\tSYS_READAHEAD               = 205\n\tSYS_SOCKETCALL              = 206\n\tSYS_SYSLOG                  = 207\n\tSYS_LOOKUP_DCOOKIE          = 208\n\tSYS_FADVISE64               = 209\n\tSYS_FADVISE64_64            = 210\n\tSYS_TGKILL                  = 211\n\tSYS_WAITPID                 = 212\n\tSYS_SWAPOFF                 = 213\n\tSYS_SYSINFO                 = 214\n\tSYS_IPC                     = 215\n\tSYS_SIGRETURN               = 216\n\tSYS_CLONE                   = 217\n\tSYS_IOPRIO_GET              = 218\n\tSYS_ADJTIMEX                = 219\n\tSYS_SIGPROCMASK             = 220\n\tSYS_CREATE_MODULE           = 221\n\tSYS_DELETE_MODULE           = 222\n\tSYS_GET_KERNEL_SYMS         = 223\n\tSYS_GETPGID                 = 224\n\tSYS_BDFLUSH                 = 225\n\tSYS_SYSFS                   = 226\n\tSYS_AFS_SYSCALL             = 227\n\tSYS_SETFSUID                = 228\n\tSYS_SETFSGID                = 229\n\tSYS__NEWSELECT              = 230\n\tSYS_SPLICE                  = 232\n\tSYS_STIME                   = 233\n\tSYS_STATFS64                = 234\n\tSYS_FSTATFS64               = 235\n\tSYS__LLSEEK                 = 236\n\tSYS_MLOCK                   = 237\n\tSYS_MUNLOCK                 = 238\n\tSYS_MLOCKALL                = 239\n\tSYS_MUNLOCKALL              = 240\n\tSYS_SCHED_SETPARAM          = 241\n\tSYS_SCHED_GETPARAM          = 242\n\tSYS_SCHED_SETSCHEDULER      = 243\n\tSYS_SCHED_GETSCHEDULER      = 244\n\tSYS_SCHED_YIELD             = 245\n\tSYS_SCHED_GET_PRIORITY_MAX  = 246\n\tSYS_SCHED_GET_PRIORITY_MIN  = 247\n\tSYS_SCHED_RR_GET_INTERVAL   = 248\n\tSYS_NANOSLEEP               = 249\n\tSYS_MREMAP                  = 250\n\tSYS__SYSCTL                 = 251\n\tSYS_GETSID                  = 252\n\tSYS_FDATASYNC               = 253\n\tSYS_NFSSERVCTL              = 254\n\tSYS_SYNC_FILE_RANGE         = 255\n\tSYS_CLOCK_SETTIME           = 256\n\tSYS_CLOCK_GETTIME           = 257\n\tSYS_CLOCK_GETRES            = 258\n\tSYS_CLOCK_NANOSLEEP         = 259\n\tSYS_SCHED_GETAFFINITY       = 260\n\tSYS_SCHED_SETAFFINITY       = 261\n\tSYS_TIMER_SETTIME           = 262\n\tSYS_TIMER_GETTIME           = 263\n\tSYS_TIMER_GETOVERRUN        = 264\n\tSYS_TIMER_DELETE            = 265\n\tSYS_TIMER_CREATE            = 266\n\tSYS_VSERVER                 = 267\n\tSYS_IO_SETUP                = 268\n\tSYS_IO_DESTROY              = 269\n\tSYS_IO_SUBMIT               = 270\n\tSYS_IO_CANCEL               = 271\n\tSYS_IO_GETEVENTS            = 272\n\tSYS_MQ_OPEN                 = 273\n\tSYS_MQ_UNLINK               = 274\n\tSYS_MQ_TIMEDSEND            = 275\n\tSYS_MQ_TIMEDRECEIVE         = 276\n\tSYS_MQ_NOTIFY               = 277\n\tSYS_MQ_GETSETATTR           = 278\n\tSYS_WAITID                  = 279\n\tSYS_TEE                     = 280\n\tSYS_ADD_KEY                 = 281\n\tSYS_REQUEST_KEY             = 282\n\tSYS_KEYCTL                  = 283\n\tSYS_OPENAT                  = 284\n\tSYS_MKDIRAT                 = 285\n\tSYS_MKNODAT                 = 286\n\tSYS_FCHOWNAT                = 287\n\tSYS_FUTIMESAT               = 288\n\tSYS_FSTATAT64               = 289\n\tSYS_UNLINKAT                = 290\n\tSYS_RENAMEAT                = 291\n\tSYS_LINKAT                  = 292\n\tSYS_SYMLINKAT               = 293\n\tSYS_READLINKAT              = 294\n\tSYS_FCHMODAT                = 295\n\tSYS_FACCESSAT               = 296\n\tSYS_PSELECT6                = 297\n\tSYS_PPOLL                   = 298\n\tSYS_UNSHARE                 = 299\n\tSYS_SET_ROBUST_LIST         = 300\n\tSYS_GET_ROBUST_LIST         = 301\n\tSYS_MIGRATE_PAGES           = 302\n\tSYS_MBIND                   = 303\n\tSYS_GET_MEMPOLICY           = 304\n\tSYS_SET_MEMPOLICY           = 305\n\tSYS_KEXEC_LOAD              = 306\n\tSYS_MOVE_PAGES              = 307\n\tSYS_GETCPU                  = 308\n\tSYS_EPOLL_PWAIT             = 309\n\tSYS_UTIMENSAT               = 310\n\tSYS_SIGNALFD                = 311\n\tSYS_TIMERFD_CREATE          = 312\n\tSYS_EVENTFD                 = 313\n\tSYS_FALLOCATE               = 314\n\tSYS_TIMERFD_SETTIME         = 315\n\tSYS_TIMERFD_GETTIME         = 316\n\tSYS_SIGNALFD4               = 317\n\tSYS_EVENTFD2                = 318\n\tSYS_EPOLL_CREATE1           = 319\n\tSYS_DUP3                    = 320\n\tSYS_PIPE2                   = 321\n\tSYS_INOTIFY_INIT1           = 322\n\tSYS_ACCEPT4                 = 323\n\tSYS_PREADV                  = 324\n\tSYS_PWRITEV                 = 325\n\tSYS_RT_TGSIGQUEUEINFO       = 326\n\tSYS_PERF_EVENT_OPEN         = 327\n\tSYS_RECVMMSG                = 328\n\tSYS_FANOTIFY_INIT           = 329\n\tSYS_FANOTIFY_MARK           = 330\n\tSYS_PRLIMIT64               = 331\n\tSYS_NAME_TO_HANDLE_AT       = 332\n\tSYS_OPEN_BY_HANDLE_AT       = 333\n\tSYS_CLOCK_ADJTIME           = 334\n\tSYS_SYNCFS                  = 335\n\tSYS_SENDMMSG                = 336\n\tSYS_SETNS                   = 337\n\tSYS_PROCESS_VM_READV        = 338\n\tSYS_PROCESS_VM_WRITEV       = 339\n\tSYS_KERN_FEATURES           = 340\n\tSYS_KCMP                    = 341\n\tSYS_FINIT_MODULE            = 342\n\tSYS_SCHED_SETATTR           = 343\n\tSYS_SCHED_GETATTR           = 344\n\tSYS_RENAMEAT2               = 345\n\tSYS_SECCOMP                 = 346\n\tSYS_GETRANDOM               = 347\n\tSYS_MEMFD_CREATE            = 348\n\tSYS_BPF                     = 349\n\tSYS_EXECVEAT                = 350\n\tSYS_MEMBARRIER              = 351\n\tSYS_USERFAULTFD             = 352\n\tSYS_BIND                    = 353\n\tSYS_LISTEN                  = 354\n\tSYS_SETSOCKOPT              = 355\n\tSYS_MLOCK2                  = 356\n\tSYS_COPY_FILE_RANGE         = 357\n\tSYS_PREADV2                 = 358\n\tSYS_PWRITEV2                = 359\n\tSYS_STATX                   = 360\n\tSYS_IO_PGETEVENTS           = 361\n\tSYS_PKEY_MPROTECT           = 362\n\tSYS_PKEY_ALLOC              = 363\n\tSYS_PKEY_FREE               = 364\n\tSYS_RSEQ                    = 365\n\tSYS_SEMTIMEDOP              = 392\n\tSYS_SEMGET                  = 393\n\tSYS_SEMCTL                  = 394\n\tSYS_SHMGET                  = 395\n\tSYS_SHMCTL                  = 396\n\tSYS_SHMAT                   = 397\n\tSYS_SHMDT                   = 398\n\tSYS_MSGGET                  = 399\n\tSYS_MSGSND                  = 400\n\tSYS_MSGRCV                  = 401\n\tSYS_MSGCTL                  = 402\n\tSYS_PIDFD_SEND_SIGNAL       = 424\n\tSYS_IO_URING_SETUP          = 425\n\tSYS_IO_URING_ENTER          = 426\n\tSYS_IO_URING_REGISTER       = 427\n\tSYS_OPEN_TREE               = 428\n\tSYS_MOVE_MOUNT              = 429\n\tSYS_FSOPEN                  = 430\n\tSYS_FSCONFIG                = 431\n\tSYS_FSMOUNT                 = 432\n\tSYS_FSPICK                  = 433\n\tSYS_PIDFD_OPEN              = 434\n\tSYS_CLOSE_RANGE             = 436\n\tSYS_OPENAT2                 = 437\n\tSYS_PIDFD_GETFD             = 438\n\tSYS_FACCESSAT2              = 439\n\tSYS_PROCESS_MADVISE         = 440\n\tSYS_EPOLL_PWAIT2            = 441\n\tSYS_MOUNT_SETATTR           = 442\n\tSYS_QUOTACTL_FD             = 443\n\tSYS_LANDLOCK_CREATE_RULESET = 444\n\tSYS_LANDLOCK_ADD_RULE       = 445\n\tSYS_LANDLOCK_RESTRICT_SELF  = 446\n\tSYS_PROCESS_MRELEASE        = 448\n\tSYS_FUTEX_WAITV             = 449\n\tSYS_SET_MEMPOLICY_HOME_NODE = 450\n\tSYS_CACHESTAT               = 451\n\tSYS_FCHMODAT2               = 452\n\tSYS_MAP_SHADOW_STACK        = 453\n\tSYS_FUTEX_WAKE              = 454\n\tSYS_FUTEX_WAIT              = 455\n\tSYS_FUTEX_REQUEUE           = 456\n\tSYS_STATMOUNT               = 457\n\tSYS_LISTMOUNT               = 458\n\tSYS_LSM_GET_SELF_ATTR       = 459\n\tSYS_LSM_SET_SELF_ATTR       = 460\n\tSYS_LSM_LIST_MODULES        = 461\n\tSYS_MSEAL                   = 462\n\tSYS_SETXATTRAT              = 463\n\tSYS_GETXATTRAT              = 464\n\tSYS_LISTXATTRAT             = 465\n\tSYS_REMOVEXATTRAT           = 466\n\tSYS_OPEN_TREE_ATTR          = 467\n)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go",
    "content": "// go run mksysnum.go http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build 386 && netbsd\n\npackage unix\n\nconst (\n\tSYS_EXIT                 = 1   // { void|sys||exit(int rval); }\n\tSYS_FORK                 = 2   // { int|sys||fork(void); }\n\tSYS_READ                 = 3   // { ssize_t|sys||read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE                = 4   // { ssize_t|sys||write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN                 = 5   // { int|sys||open(const char *path, int flags, ... mode_t mode); }\n\tSYS_CLOSE                = 6   // { int|sys||close(int fd); }\n\tSYS_LINK                 = 9   // { int|sys||link(const char *path, const char *link); }\n\tSYS_UNLINK               = 10  // { int|sys||unlink(const char *path); }\n\tSYS_CHDIR                = 12  // { int|sys||chdir(const char *path); }\n\tSYS_FCHDIR               = 13  // { int|sys||fchdir(int fd); }\n\tSYS_CHMOD                = 15  // { int|sys||chmod(const char *path, mode_t mode); }\n\tSYS_CHOWN                = 16  // { int|sys||chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_BREAK                = 17  // { int|sys||obreak(char *nsize); }\n\tSYS_GETPID               = 20  // { pid_t|sys||getpid_with_ppid(void); }\n\tSYS_UNMOUNT              = 22  // { int|sys||unmount(const char *path, int flags); }\n\tSYS_SETUID               = 23  // { int|sys||setuid(uid_t uid); }\n\tSYS_GETUID               = 24  // { uid_t|sys||getuid_with_euid(void); }\n\tSYS_GETEUID              = 25  // { uid_t|sys||geteuid(void); }\n\tSYS_PTRACE               = 26  // { int|sys||ptrace(int req, pid_t pid, void *addr, int data); }\n\tSYS_RECVMSG              = 27  // { ssize_t|sys||recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG              = 28  // { ssize_t|sys||sendmsg(int s, const struct msghdr *msg, int flags); }\n\tSYS_RECVFROM             = 29  // { ssize_t|sys||recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }\n\tSYS_ACCEPT               = 30  // { int|sys||accept(int s, struct sockaddr *name, socklen_t *anamelen); }\n\tSYS_GETPEERNAME          = 31  // { int|sys||getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_GETSOCKNAME          = 32  // { int|sys||getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_ACCESS               = 33  // { int|sys||access(const char *path, int flags); }\n\tSYS_CHFLAGS              = 34  // { int|sys||chflags(const char *path, u_long flags); }\n\tSYS_FCHFLAGS             = 35  // { int|sys||fchflags(int fd, u_long flags); }\n\tSYS_SYNC                 = 36  // { void|sys||sync(void); }\n\tSYS_KILL                 = 37  // { int|sys||kill(pid_t pid, int signum); }\n\tSYS_GETPPID              = 39  // { pid_t|sys||getppid(void); }\n\tSYS_DUP                  = 41  // { int|sys||dup(int fd); }\n\tSYS_PIPE                 = 42  // { int|sys||pipe(void); }\n\tSYS_GETEGID              = 43  // { gid_t|sys||getegid(void); }\n\tSYS_PROFIL               = 44  // { int|sys||profil(char *samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE               = 45  // { int|sys||ktrace(const char *fname, int ops, int facs, pid_t pid); }\n\tSYS_GETGID               = 47  // { gid_t|sys||getgid_with_egid(void); }\n\tSYS___GETLOGIN           = 49  // { int|sys||__getlogin(char *namebuf, size_t namelen); }\n\tSYS___SETLOGIN           = 50  // { int|sys||__setlogin(const char *namebuf); }\n\tSYS_ACCT                 = 51  // { int|sys||acct(const char *path); }\n\tSYS_IOCTL                = 54  // { int|sys||ioctl(int fd, u_long com, ... void *data); }\n\tSYS_REVOKE               = 56  // { int|sys||revoke(const char *path); }\n\tSYS_SYMLINK              = 57  // { int|sys||symlink(const char *path, const char *link); }\n\tSYS_READLINK             = 58  // { ssize_t|sys||readlink(const char *path, char *buf, size_t count); }\n\tSYS_EXECVE               = 59  // { int|sys||execve(const char *path, char * const *argp, char * const *envp); }\n\tSYS_UMASK                = 60  // { mode_t|sys||umask(mode_t newmask); }\n\tSYS_CHROOT               = 61  // { int|sys||chroot(const char *path); }\n\tSYS_VFORK                = 66  // { int|sys||vfork(void); }\n\tSYS_SBRK                 = 69  // { int|sys||sbrk(intptr_t incr); }\n\tSYS_SSTK                 = 70  // { int|sys||sstk(int incr); }\n\tSYS_VADVISE              = 72  // { int|sys||ovadvise(int anom); }\n\tSYS_MUNMAP               = 73  // { int|sys||munmap(void *addr, size_t len); }\n\tSYS_MPROTECT             = 74  // { int|sys||mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE              = 75  // { int|sys||madvise(void *addr, size_t len, int behav); }\n\tSYS_MINCORE              = 78  // { int|sys||mincore(void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS            = 79  // { int|sys||getgroups(int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS            = 80  // { int|sys||setgroups(int gidsetsize, const gid_t *gidset); }\n\tSYS_GETPGRP              = 81  // { int|sys||getpgrp(void); }\n\tSYS_SETPGID              = 82  // { int|sys||setpgid(pid_t pid, pid_t pgid); }\n\tSYS_DUP2                 = 90  // { int|sys||dup2(int from, int to); }\n\tSYS_FCNTL                = 92  // { int|sys||fcntl(int fd, int cmd, ... void *arg); }\n\tSYS_FSYNC                = 95  // { int|sys||fsync(int fd); }\n\tSYS_SETPRIORITY          = 96  // { int|sys||setpriority(int which, id_t who, int prio); }\n\tSYS_CONNECT              = 98  // { int|sys||connect(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_GETPRIORITY          = 100 // { int|sys||getpriority(int which, id_t who); }\n\tSYS_BIND                 = 104 // { int|sys||bind(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_SETSOCKOPT           = 105 // { int|sys||setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }\n\tSYS_LISTEN               = 106 // { int|sys||listen(int s, int backlog); }\n\tSYS_GETSOCKOPT           = 118 // { int|sys||getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }\n\tSYS_READV                = 120 // { ssize_t|sys||readv(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_WRITEV               = 121 // { ssize_t|sys||writev(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_FCHOWN               = 123 // { int|sys||fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS_FCHMOD               = 124 // { int|sys||fchmod(int fd, mode_t mode); }\n\tSYS_SETREUID             = 126 // { int|sys||setreuid(uid_t ruid, uid_t euid); }\n\tSYS_SETREGID             = 127 // { int|sys||setregid(gid_t rgid, gid_t egid); }\n\tSYS_RENAME               = 128 // { int|sys||rename(const char *from, const char *to); }\n\tSYS_FLOCK                = 131 // { int|sys||flock(int fd, int how); }\n\tSYS_MKFIFO               = 132 // { int|sys||mkfifo(const char *path, mode_t mode); }\n\tSYS_SENDTO               = 133 // { ssize_t|sys||sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }\n\tSYS_SHUTDOWN             = 134 // { int|sys||shutdown(int s, int how); }\n\tSYS_SOCKETPAIR           = 135 // { int|sys||socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR                = 136 // { int|sys||mkdir(const char *path, mode_t mode); }\n\tSYS_RMDIR                = 137 // { int|sys||rmdir(const char *path); }\n\tSYS_SETSID               = 147 // { int|sys||setsid(void); }\n\tSYS_SYSARCH              = 165 // { int|sys||sysarch(int op, void *parms); }\n\tSYS_PREAD                = 173 // { ssize_t|sys||pread(int fd, void *buf, size_t nbyte, int PAD, off_t offset); }\n\tSYS_PWRITE               = 174 // { ssize_t|sys||pwrite(int fd, const void *buf, size_t nbyte, int PAD, off_t offset); }\n\tSYS_NTP_ADJTIME          = 176 // { int|sys||ntp_adjtime(struct timex *tp); }\n\tSYS_SETGID               = 181 // { int|sys||setgid(gid_t gid); }\n\tSYS_SETEGID              = 182 // { int|sys||setegid(gid_t egid); }\n\tSYS_SETEUID              = 183 // { int|sys||seteuid(uid_t euid); }\n\tSYS_PATHCONF             = 191 // { long|sys||pathconf(const char *path, int name); }\n\tSYS_FPATHCONF            = 192 // { long|sys||fpathconf(int fd, int name); }\n\tSYS_GETRLIMIT            = 194 // { int|sys||getrlimit(int which, struct rlimit *rlp); }\n\tSYS_SETRLIMIT            = 195 // { int|sys||setrlimit(int which, const struct rlimit *rlp); }\n\tSYS_MMAP                 = 197 // { void *|sys||mmap(void *addr, size_t len, int prot, int flags, int fd, long PAD, off_t pos); }\n\tSYS_LSEEK                = 199 // { off_t|sys||lseek(int fd, int PAD, off_t offset, int whence); }\n\tSYS_TRUNCATE             = 200 // { int|sys||truncate(const char *path, int PAD, off_t length); }\n\tSYS_FTRUNCATE            = 201 // { int|sys||ftruncate(int fd, int PAD, off_t length); }\n\tSYS___SYSCTL             = 202 // { int|sys||__sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, const void *new, size_t newlen); }\n\tSYS_MLOCK                = 203 // { int|sys||mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK              = 204 // { int|sys||munlock(const void *addr, size_t len); }\n\tSYS_UNDELETE             = 205 // { int|sys||undelete(const char *path); }\n\tSYS_GETPGID              = 207 // { pid_t|sys||getpgid(pid_t pid); }\n\tSYS_REBOOT               = 208 // { int|sys||reboot(int opt, char *bootstr); }\n\tSYS_POLL                 = 209 // { int|sys||poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_SEMGET               = 221 // { int|sys||semget(key_t key, int nsems, int semflg); }\n\tSYS_SEMOP                = 222 // { int|sys||semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_SEMCONFIG            = 223 // { int|sys||semconfig(int flag); }\n\tSYS_MSGGET               = 225 // { int|sys||msgget(key_t key, int msgflg); }\n\tSYS_MSGSND               = 226 // { int|sys||msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV               = 227 // { ssize_t|sys||msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT                = 228 // { void *|sys||shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT                = 230 // { int|sys||shmdt(const void *shmaddr); }\n\tSYS_SHMGET               = 231 // { int|sys||shmget(key_t key, size_t size, int shmflg); }\n\tSYS_TIMER_CREATE         = 235 // { int|sys||timer_create(clockid_t clock_id, struct sigevent *evp, timer_t *timerid); }\n\tSYS_TIMER_DELETE         = 236 // { int|sys||timer_delete(timer_t timerid); }\n\tSYS_TIMER_GETOVERRUN     = 239 // { int|sys||timer_getoverrun(timer_t timerid); }\n\tSYS_FDATASYNC            = 241 // { int|sys||fdatasync(int fd); }\n\tSYS_MLOCKALL             = 242 // { int|sys||mlockall(int flags); }\n\tSYS_MUNLOCKALL           = 243 // { int|sys||munlockall(void); }\n\tSYS_SIGQUEUEINFO         = 245 // { int|sys||sigqueueinfo(pid_t pid, const siginfo_t *info); }\n\tSYS_MODCTL               = 246 // { int|sys||modctl(int cmd, void *arg); }\n\tSYS___POSIX_RENAME       = 270 // { int|sys||__posix_rename(const char *from, const char *to); }\n\tSYS_SWAPCTL              = 271 // { int|sys||swapctl(int cmd, void *arg, int misc); }\n\tSYS_MINHERIT             = 273 // { int|sys||minherit(void *addr, size_t len, int inherit); }\n\tSYS_LCHMOD               = 274 // { int|sys||lchmod(const char *path, mode_t mode); }\n\tSYS_LCHOWN               = 275 // { int|sys||lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_MSYNC                = 277 // { int|sys|13|msync(void *addr, size_t len, int flags); }\n\tSYS___POSIX_CHOWN        = 283 // { int|sys||__posix_chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS___POSIX_FCHOWN       = 284 // { int|sys||__posix_fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS___POSIX_LCHOWN       = 285 // { int|sys||__posix_lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_GETSID               = 286 // { pid_t|sys||getsid(pid_t pid); }\n\tSYS___CLONE              = 287 // { pid_t|sys||__clone(int flags, void *stack); }\n\tSYS_FKTRACE              = 288 // { int|sys||fktrace(int fd, int ops, int facs, pid_t pid); }\n\tSYS_PREADV               = 289 // { ssize_t|sys||preadv(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); }\n\tSYS_PWRITEV              = 290 // { ssize_t|sys||pwritev(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); }\n\tSYS___GETCWD             = 296 // { int|sys||__getcwd(char *bufp, size_t length); }\n\tSYS_FCHROOT              = 297 // { int|sys||fchroot(int fd); }\n\tSYS_LCHFLAGS             = 304 // { int|sys||lchflags(const char *path, u_long flags); }\n\tSYS_ISSETUGID            = 305 // { int|sys||issetugid(void); }\n\tSYS_UTRACE               = 306 // { int|sys||utrace(const char *label, void *addr, size_t len); }\n\tSYS_GETCONTEXT           = 307 // { int|sys||getcontext(struct __ucontext *ucp); }\n\tSYS_SETCONTEXT           = 308 // { int|sys||setcontext(const struct __ucontext *ucp); }\n\tSYS__LWP_CREATE          = 309 // { int|sys||_lwp_create(const struct __ucontext *ucp, u_long flags, lwpid_t *new_lwp); }\n\tSYS__LWP_EXIT            = 310 // { int|sys||_lwp_exit(void); }\n\tSYS__LWP_SELF            = 311 // { lwpid_t|sys||_lwp_self(void); }\n\tSYS__LWP_WAIT            = 312 // { int|sys||_lwp_wait(lwpid_t wait_for, lwpid_t *departed); }\n\tSYS__LWP_SUSPEND         = 313 // { int|sys||_lwp_suspend(lwpid_t target); }\n\tSYS__LWP_CONTINUE        = 314 // { int|sys||_lwp_continue(lwpid_t target); }\n\tSYS__LWP_WAKEUP          = 315 // { int|sys||_lwp_wakeup(lwpid_t target); }\n\tSYS__LWP_GETPRIVATE      = 316 // { void *|sys||_lwp_getprivate(void); }\n\tSYS__LWP_SETPRIVATE      = 317 // { void|sys||_lwp_setprivate(void *ptr); }\n\tSYS__LWP_KILL            = 318 // { int|sys||_lwp_kill(lwpid_t target, int signo); }\n\tSYS__LWP_DETACH          = 319 // { int|sys||_lwp_detach(lwpid_t target); }\n\tSYS__LWP_UNPARK          = 321 // { int|sys||_lwp_unpark(lwpid_t target, const void *hint); }\n\tSYS__LWP_UNPARK_ALL      = 322 // { ssize_t|sys||_lwp_unpark_all(const lwpid_t *targets, size_t ntargets, const void *hint); }\n\tSYS__LWP_SETNAME         = 323 // { int|sys||_lwp_setname(lwpid_t target, const char *name); }\n\tSYS__LWP_GETNAME         = 324 // { int|sys||_lwp_getname(lwpid_t target, char *name, size_t len); }\n\tSYS__LWP_CTL             = 325 // { int|sys||_lwp_ctl(int features, struct lwpctl **address); }\n\tSYS___SIGACTION_SIGTRAMP = 340 // { int|sys||__sigaction_sigtramp(int signum, const struct sigaction *nsa, struct sigaction *osa, const void *tramp, int vers); }\n\tSYS_PMC_GET_INFO         = 341 // { int|sys||pmc_get_info(int ctr, int op, void *args); }\n\tSYS_PMC_CONTROL          = 342 // { int|sys||pmc_control(int ctr, int op, void *args); }\n\tSYS_RASCTL               = 343 // { int|sys||rasctl(void *addr, size_t len, int op); }\n\tSYS_KQUEUE               = 344 // { int|sys||kqueue(void); }\n\tSYS__SCHED_SETPARAM      = 346 // { int|sys||_sched_setparam(pid_t pid, lwpid_t lid, int policy, const struct sched_param *params); }\n\tSYS__SCHED_GETPARAM      = 347 // { int|sys||_sched_getparam(pid_t pid, lwpid_t lid, int *policy, struct sched_param *params); }\n\tSYS__SCHED_SETAFFINITY   = 348 // { int|sys||_sched_setaffinity(pid_t pid, lwpid_t lid, size_t size, const cpuset_t *cpuset); }\n\tSYS__SCHED_GETAFFINITY   = 349 // { int|sys||_sched_getaffinity(pid_t pid, lwpid_t lid, size_t size, cpuset_t *cpuset); }\n\tSYS_SCHED_YIELD          = 350 // { int|sys||sched_yield(void); }\n\tSYS_FSYNC_RANGE          = 354 // { int|sys||fsync_range(int fd, int flags, off_t start, off_t length); }\n\tSYS_UUIDGEN              = 355 // { int|sys||uuidgen(struct uuid *store, int count); }\n\tSYS_GETVFSSTAT           = 356 // { int|sys||getvfsstat(struct statvfs *buf, size_t bufsize, int flags); }\n\tSYS_STATVFS1             = 357 // { int|sys||statvfs1(const char *path, struct statvfs *buf, int flags); }\n\tSYS_FSTATVFS1            = 358 // { int|sys||fstatvfs1(int fd, struct statvfs *buf, int flags); }\n\tSYS_EXTATTRCTL           = 360 // { int|sys||extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FILE     = 361 // { int|sys||extattr_set_file(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FILE     = 362 // { ssize_t|sys||extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FILE  = 363 // { int|sys||extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FD       = 364 // { int|sys||extattr_set_fd(int fd, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FD       = 365 // { ssize_t|sys||extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FD    = 366 // { int|sys||extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_LINK     = 367 // { int|sys||extattr_set_link(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_LINK     = 368 // { ssize_t|sys||extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_LINK  = 369 // { int|sys||extattr_delete_link(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_LIST_FD      = 370 // { ssize_t|sys||extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_FILE    = 371 // { ssize_t|sys||extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_LINK    = 372 // { ssize_t|sys||extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_SETXATTR             = 375 // { int|sys||setxattr(const char *path, const char *name, const void *value, size_t size, int flags); }\n\tSYS_LSETXATTR            = 376 // { int|sys||lsetxattr(const char *path, const char *name, const void *value, size_t size, int flags); }\n\tSYS_FSETXATTR            = 377 // { int|sys||fsetxattr(int fd, const char *name, const void *value, size_t size, int flags); }\n\tSYS_GETXATTR             = 378 // { int|sys||getxattr(const char *path, const char *name, void *value, size_t size); }\n\tSYS_LGETXATTR            = 379 // { int|sys||lgetxattr(const char *path, const char *name, void *value, size_t size); }\n\tSYS_FGETXATTR            = 380 // { int|sys||fgetxattr(int fd, const char *name, void *value, size_t size); }\n\tSYS_LISTXATTR            = 381 // { int|sys||listxattr(const char *path, char *list, size_t size); }\n\tSYS_LLISTXATTR           = 382 // { int|sys||llistxattr(const char *path, char *list, size_t size); }\n\tSYS_FLISTXATTR           = 383 // { int|sys||flistxattr(int fd, char *list, size_t size); }\n\tSYS_REMOVEXATTR          = 384 // { int|sys||removexattr(const char *path, const char *name); }\n\tSYS_LREMOVEXATTR         = 385 // { int|sys||lremovexattr(const char *path, const char *name); }\n\tSYS_FREMOVEXATTR         = 386 // { int|sys||fremovexattr(int fd, const char *name); }\n\tSYS_GETDENTS             = 390 // { int|sys|30|getdents(int fd, char *buf, size_t count); }\n\tSYS_SOCKET               = 394 // { int|sys|30|socket(int domain, int type, int protocol); }\n\tSYS_GETFH                = 395 // { int|sys|30|getfh(const char *fname, void *fhp, size_t *fh_size); }\n\tSYS_MOUNT                = 410 // { int|sys|50|mount(const char *type, const char *path, int flags, void *data, size_t data_len); }\n\tSYS_MREMAP               = 411 // { void *|sys||mremap(void *old_address, size_t old_size, void *new_address, size_t new_size, int flags); }\n\tSYS_PSET_CREATE          = 412 // { int|sys||pset_create(psetid_t *psid); }\n\tSYS_PSET_DESTROY         = 413 // { int|sys||pset_destroy(psetid_t psid); }\n\tSYS_PSET_ASSIGN          = 414 // { int|sys||pset_assign(psetid_t psid, cpuid_t cpuid, psetid_t *opsid); }\n\tSYS__PSET_BIND           = 415 // { int|sys||_pset_bind(idtype_t idtype, id_t first_id, id_t second_id, psetid_t psid, psetid_t *opsid); }\n\tSYS_POSIX_FADVISE        = 416 // { int|sys|50|posix_fadvise(int fd, int PAD, off_t offset, off_t len, int advice); }\n\tSYS_SELECT               = 417 // { int|sys|50|select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_GETTIMEOFDAY         = 418 // { int|sys|50|gettimeofday(struct timeval *tp, void *tzp); }\n\tSYS_SETTIMEOFDAY         = 419 // { int|sys|50|settimeofday(const struct timeval *tv, const void *tzp); }\n\tSYS_UTIMES               = 420 // { int|sys|50|utimes(const char *path, const struct timeval *tptr); }\n\tSYS_ADJTIME              = 421 // { int|sys|50|adjtime(const struct timeval *delta, struct timeval *olddelta); }\n\tSYS_FUTIMES              = 423 // { int|sys|50|futimes(int fd, const struct timeval *tptr); }\n\tSYS_LUTIMES              = 424 // { int|sys|50|lutimes(const char *path, const struct timeval *tptr); }\n\tSYS_SETITIMER            = 425 // { int|sys|50|setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_GETITIMER            = 426 // { int|sys|50|getitimer(int which, struct itimerval *itv); }\n\tSYS_CLOCK_GETTIME        = 427 // { int|sys|50|clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME        = 428 // { int|sys|50|clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES         = 429 // { int|sys|50|clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_NANOSLEEP            = 430 // { int|sys|50|nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS___SIGTIMEDWAIT       = 431 // { int|sys|50|__sigtimedwait(const sigset_t *set, siginfo_t *info, struct timespec *timeout); }\n\tSYS__LWP_PARK            = 434 // { int|sys|50|_lwp_park(const struct timespec *ts, lwpid_t unpark, const void *hint, const void *unparkhint); }\n\tSYS_KEVENT               = 435 // { int|sys|50|kevent(int fd, const struct kevent *changelist, size_t nchanges, struct kevent *eventlist, size_t nevents, const struct timespec *timeout); }\n\tSYS_PSELECT              = 436 // { int|sys|50|pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_POLLTS               = 437 // { int|sys|50|pollts(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_STAT                 = 439 // { int|sys|50|stat(const char *path, struct stat *ub); }\n\tSYS_FSTAT                = 440 // { int|sys|50|fstat(int fd, struct stat *sb); }\n\tSYS_LSTAT                = 441 // { int|sys|50|lstat(const char *path, struct stat *ub); }\n\tSYS___SEMCTL             = 442 // { int|sys|50|__semctl(int semid, int semnum, int cmd, ... union __semun *arg); }\n\tSYS_SHMCTL               = 443 // { int|sys|50|shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_MSGCTL               = 444 // { int|sys|50|msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_GETRUSAGE            = 445 // { int|sys|50|getrusage(int who, struct rusage *rusage); }\n\tSYS_TIMER_SETTIME        = 446 // { int|sys|50|timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }\n\tSYS_TIMER_GETTIME        = 447 // { int|sys|50|timer_gettime(timer_t timerid, struct itimerspec *value); }\n\tSYS_NTP_GETTIME          = 448 // { int|sys|50|ntp_gettime(struct ntptimeval *ntvp); }\n\tSYS_WAIT4                = 449 // { int|sys|50|wait4(pid_t pid, int *status, int options, struct rusage *rusage); }\n\tSYS_MKNOD                = 450 // { int|sys|50|mknod(const char *path, mode_t mode, dev_t dev); }\n\tSYS_FHSTAT               = 451 // { int|sys|50|fhstat(const void *fhp, size_t fh_size, struct stat *sb); }\n\tSYS_PIPE2                = 453 // { int|sys||pipe2(int *fildes, int flags); }\n\tSYS_DUP3                 = 454 // { int|sys||dup3(int from, int to, int flags); }\n\tSYS_KQUEUE1              = 455 // { int|sys||kqueue1(int flags); }\n\tSYS_PACCEPT              = 456 // { int|sys||paccept(int s, struct sockaddr *name, socklen_t *anamelen, const sigset_t *mask, int flags); }\n\tSYS_LINKAT               = 457 // { int|sys||linkat(int fd1, const char *name1, int fd2, const char *name2, int flags); }\n\tSYS_RENAMEAT             = 458 // { int|sys||renameat(int fromfd, const char *from, int tofd, const char *to); }\n\tSYS_MKFIFOAT             = 459 // { int|sys||mkfifoat(int fd, const char *path, mode_t mode); }\n\tSYS_MKNODAT              = 460 // { int|sys||mknodat(int fd, const char *path, mode_t mode, uint32_t dev); }\n\tSYS_MKDIRAT              = 461 // { int|sys||mkdirat(int fd, const char *path, mode_t mode); }\n\tSYS_FACCESSAT            = 462 // { int|sys||faccessat(int fd, const char *path, int amode, int flag); }\n\tSYS_FCHMODAT             = 463 // { int|sys||fchmodat(int fd, const char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT             = 464 // { int|sys||fchownat(int fd, const char *path, uid_t owner, gid_t group, int flag); }\n\tSYS_FEXECVE              = 465 // { int|sys||fexecve(int fd, char * const *argp, char * const *envp); }\n\tSYS_FSTATAT              = 466 // { int|sys||fstatat(int fd, const char *path, struct stat *buf, int flag); }\n\tSYS_UTIMENSAT            = 467 // { int|sys||utimensat(int fd, const char *path, const struct timespec *tptr, int flag); }\n\tSYS_OPENAT               = 468 // { int|sys||openat(int fd, const char *path, int oflags, ... mode_t mode); }\n\tSYS_READLINKAT           = 469 // { int|sys||readlinkat(int fd, const char *path, char *buf, size_t bufsize); }\n\tSYS_SYMLINKAT            = 470 // { int|sys||symlinkat(const char *path1, int fd, const char *path2); }\n\tSYS_UNLINKAT             = 471 // { int|sys||unlinkat(int fd, const char *path, int flag); }\n\tSYS_FUTIMENS             = 472 // { int|sys||futimens(int fd, const struct timespec *tptr); }\n\tSYS___QUOTACTL           = 473 // { int|sys||__quotactl(const char *path, struct quotactl_args *args); }\n\tSYS_POSIX_SPAWN          = 474 // { int|sys||posix_spawn(pid_t *pid, const char *path, const struct posix_spawn_file_actions *file_actions, const struct posix_spawnattr *attrp, char *const *argv, char *const *envp); }\n\tSYS_RECVMMSG             = 475 // { int|sys||recvmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags, struct timespec *timeout); }\n\tSYS_SENDMMSG             = 476 // { int|sys||sendmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags); }\n)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go",
    "content": "// go run mksysnum.go http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && netbsd\n\npackage unix\n\nconst (\n\tSYS_EXIT                 = 1   // { void|sys||exit(int rval); }\n\tSYS_FORK                 = 2   // { int|sys||fork(void); }\n\tSYS_READ                 = 3   // { ssize_t|sys||read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE                = 4   // { ssize_t|sys||write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN                 = 5   // { int|sys||open(const char *path, int flags, ... mode_t mode); }\n\tSYS_CLOSE                = 6   // { int|sys||close(int fd); }\n\tSYS_LINK                 = 9   // { int|sys||link(const char *path, const char *link); }\n\tSYS_UNLINK               = 10  // { int|sys||unlink(const char *path); }\n\tSYS_CHDIR                = 12  // { int|sys||chdir(const char *path); }\n\tSYS_FCHDIR               = 13  // { int|sys||fchdir(int fd); }\n\tSYS_CHMOD                = 15  // { int|sys||chmod(const char *path, mode_t mode); }\n\tSYS_CHOWN                = 16  // { int|sys||chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_BREAK                = 17  // { int|sys||obreak(char *nsize); }\n\tSYS_GETPID               = 20  // { pid_t|sys||getpid_with_ppid(void); }\n\tSYS_UNMOUNT              = 22  // { int|sys||unmount(const char *path, int flags); }\n\tSYS_SETUID               = 23  // { int|sys||setuid(uid_t uid); }\n\tSYS_GETUID               = 24  // { uid_t|sys||getuid_with_euid(void); }\n\tSYS_GETEUID              = 25  // { uid_t|sys||geteuid(void); }\n\tSYS_PTRACE               = 26  // { int|sys||ptrace(int req, pid_t pid, void *addr, int data); }\n\tSYS_RECVMSG              = 27  // { ssize_t|sys||recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG              = 28  // { ssize_t|sys||sendmsg(int s, const struct msghdr *msg, int flags); }\n\tSYS_RECVFROM             = 29  // { ssize_t|sys||recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }\n\tSYS_ACCEPT               = 30  // { int|sys||accept(int s, struct sockaddr *name, socklen_t *anamelen); }\n\tSYS_GETPEERNAME          = 31  // { int|sys||getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_GETSOCKNAME          = 32  // { int|sys||getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_ACCESS               = 33  // { int|sys||access(const char *path, int flags); }\n\tSYS_CHFLAGS              = 34  // { int|sys||chflags(const char *path, u_long flags); }\n\tSYS_FCHFLAGS             = 35  // { int|sys||fchflags(int fd, u_long flags); }\n\tSYS_SYNC                 = 36  // { void|sys||sync(void); }\n\tSYS_KILL                 = 37  // { int|sys||kill(pid_t pid, int signum); }\n\tSYS_GETPPID              = 39  // { pid_t|sys||getppid(void); }\n\tSYS_DUP                  = 41  // { int|sys||dup(int fd); }\n\tSYS_PIPE                 = 42  // { int|sys||pipe(void); }\n\tSYS_GETEGID              = 43  // { gid_t|sys||getegid(void); }\n\tSYS_PROFIL               = 44  // { int|sys||profil(char *samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE               = 45  // { int|sys||ktrace(const char *fname, int ops, int facs, pid_t pid); }\n\tSYS_GETGID               = 47  // { gid_t|sys||getgid_with_egid(void); }\n\tSYS___GETLOGIN           = 49  // { int|sys||__getlogin(char *namebuf, size_t namelen); }\n\tSYS___SETLOGIN           = 50  // { int|sys||__setlogin(const char *namebuf); }\n\tSYS_ACCT                 = 51  // { int|sys||acct(const char *path); }\n\tSYS_IOCTL                = 54  // { int|sys||ioctl(int fd, u_long com, ... void *data); }\n\tSYS_REVOKE               = 56  // { int|sys||revoke(const char *path); }\n\tSYS_SYMLINK              = 57  // { int|sys||symlink(const char *path, const char *link); }\n\tSYS_READLINK             = 58  // { ssize_t|sys||readlink(const char *path, char *buf, size_t count); }\n\tSYS_EXECVE               = 59  // { int|sys||execve(const char *path, char * const *argp, char * const *envp); }\n\tSYS_UMASK                = 60  // { mode_t|sys||umask(mode_t newmask); }\n\tSYS_CHROOT               = 61  // { int|sys||chroot(const char *path); }\n\tSYS_VFORK                = 66  // { int|sys||vfork(void); }\n\tSYS_SBRK                 = 69  // { int|sys||sbrk(intptr_t incr); }\n\tSYS_SSTK                 = 70  // { int|sys||sstk(int incr); }\n\tSYS_VADVISE              = 72  // { int|sys||ovadvise(int anom); }\n\tSYS_MUNMAP               = 73  // { int|sys||munmap(void *addr, size_t len); }\n\tSYS_MPROTECT             = 74  // { int|sys||mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE              = 75  // { int|sys||madvise(void *addr, size_t len, int behav); }\n\tSYS_MINCORE              = 78  // { int|sys||mincore(void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS            = 79  // { int|sys||getgroups(int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS            = 80  // { int|sys||setgroups(int gidsetsize, const gid_t *gidset); }\n\tSYS_GETPGRP              = 81  // { int|sys||getpgrp(void); }\n\tSYS_SETPGID              = 82  // { int|sys||setpgid(pid_t pid, pid_t pgid); }\n\tSYS_DUP2                 = 90  // { int|sys||dup2(int from, int to); }\n\tSYS_FCNTL                = 92  // { int|sys||fcntl(int fd, int cmd, ... void *arg); }\n\tSYS_FSYNC                = 95  // { int|sys||fsync(int fd); }\n\tSYS_SETPRIORITY          = 96  // { int|sys||setpriority(int which, id_t who, int prio); }\n\tSYS_CONNECT              = 98  // { int|sys||connect(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_GETPRIORITY          = 100 // { int|sys||getpriority(int which, id_t who); }\n\tSYS_BIND                 = 104 // { int|sys||bind(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_SETSOCKOPT           = 105 // { int|sys||setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }\n\tSYS_LISTEN               = 106 // { int|sys||listen(int s, int backlog); }\n\tSYS_GETSOCKOPT           = 118 // { int|sys||getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }\n\tSYS_READV                = 120 // { ssize_t|sys||readv(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_WRITEV               = 121 // { ssize_t|sys||writev(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_FCHOWN               = 123 // { int|sys||fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS_FCHMOD               = 124 // { int|sys||fchmod(int fd, mode_t mode); }\n\tSYS_SETREUID             = 126 // { int|sys||setreuid(uid_t ruid, uid_t euid); }\n\tSYS_SETREGID             = 127 // { int|sys||setregid(gid_t rgid, gid_t egid); }\n\tSYS_RENAME               = 128 // { int|sys||rename(const char *from, const char *to); }\n\tSYS_FLOCK                = 131 // { int|sys||flock(int fd, int how); }\n\tSYS_MKFIFO               = 132 // { int|sys||mkfifo(const char *path, mode_t mode); }\n\tSYS_SENDTO               = 133 // { ssize_t|sys||sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }\n\tSYS_SHUTDOWN             = 134 // { int|sys||shutdown(int s, int how); }\n\tSYS_SOCKETPAIR           = 135 // { int|sys||socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR                = 136 // { int|sys||mkdir(const char *path, mode_t mode); }\n\tSYS_RMDIR                = 137 // { int|sys||rmdir(const char *path); }\n\tSYS_SETSID               = 147 // { int|sys||setsid(void); }\n\tSYS_SYSARCH              = 165 // { int|sys||sysarch(int op, void *parms); }\n\tSYS_PREAD                = 173 // { ssize_t|sys||pread(int fd, void *buf, size_t nbyte, int PAD, off_t offset); }\n\tSYS_PWRITE               = 174 // { ssize_t|sys||pwrite(int fd, const void *buf, size_t nbyte, int PAD, off_t offset); }\n\tSYS_NTP_ADJTIME          = 176 // { int|sys||ntp_adjtime(struct timex *tp); }\n\tSYS_SETGID               = 181 // { int|sys||setgid(gid_t gid); }\n\tSYS_SETEGID              = 182 // { int|sys||setegid(gid_t egid); }\n\tSYS_SETEUID              = 183 // { int|sys||seteuid(uid_t euid); }\n\tSYS_PATHCONF             = 191 // { long|sys||pathconf(const char *path, int name); }\n\tSYS_FPATHCONF            = 192 // { long|sys||fpathconf(int fd, int name); }\n\tSYS_GETRLIMIT            = 194 // { int|sys||getrlimit(int which, struct rlimit *rlp); }\n\tSYS_SETRLIMIT            = 195 // { int|sys||setrlimit(int which, const struct rlimit *rlp); }\n\tSYS_MMAP                 = 197 // { void *|sys||mmap(void *addr, size_t len, int prot, int flags, int fd, long PAD, off_t pos); }\n\tSYS_LSEEK                = 199 // { off_t|sys||lseek(int fd, int PAD, off_t offset, int whence); }\n\tSYS_TRUNCATE             = 200 // { int|sys||truncate(const char *path, int PAD, off_t length); }\n\tSYS_FTRUNCATE            = 201 // { int|sys||ftruncate(int fd, int PAD, off_t length); }\n\tSYS___SYSCTL             = 202 // { int|sys||__sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, const void *new, size_t newlen); }\n\tSYS_MLOCK                = 203 // { int|sys||mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK              = 204 // { int|sys||munlock(const void *addr, size_t len); }\n\tSYS_UNDELETE             = 205 // { int|sys||undelete(const char *path); }\n\tSYS_GETPGID              = 207 // { pid_t|sys||getpgid(pid_t pid); }\n\tSYS_REBOOT               = 208 // { int|sys||reboot(int opt, char *bootstr); }\n\tSYS_POLL                 = 209 // { int|sys||poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_SEMGET               = 221 // { int|sys||semget(key_t key, int nsems, int semflg); }\n\tSYS_SEMOP                = 222 // { int|sys||semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_SEMCONFIG            = 223 // { int|sys||semconfig(int flag); }\n\tSYS_MSGGET               = 225 // { int|sys||msgget(key_t key, int msgflg); }\n\tSYS_MSGSND               = 226 // { int|sys||msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV               = 227 // { ssize_t|sys||msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT                = 228 // { void *|sys||shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT                = 230 // { int|sys||shmdt(const void *shmaddr); }\n\tSYS_SHMGET               = 231 // { int|sys||shmget(key_t key, size_t size, int shmflg); }\n\tSYS_TIMER_CREATE         = 235 // { int|sys||timer_create(clockid_t clock_id, struct sigevent *evp, timer_t *timerid); }\n\tSYS_TIMER_DELETE         = 236 // { int|sys||timer_delete(timer_t timerid); }\n\tSYS_TIMER_GETOVERRUN     = 239 // { int|sys||timer_getoverrun(timer_t timerid); }\n\tSYS_FDATASYNC            = 241 // { int|sys||fdatasync(int fd); }\n\tSYS_MLOCKALL             = 242 // { int|sys||mlockall(int flags); }\n\tSYS_MUNLOCKALL           = 243 // { int|sys||munlockall(void); }\n\tSYS_SIGQUEUEINFO         = 245 // { int|sys||sigqueueinfo(pid_t pid, const siginfo_t *info); }\n\tSYS_MODCTL               = 246 // { int|sys||modctl(int cmd, void *arg); }\n\tSYS___POSIX_RENAME       = 270 // { int|sys||__posix_rename(const char *from, const char *to); }\n\tSYS_SWAPCTL              = 271 // { int|sys||swapctl(int cmd, void *arg, int misc); }\n\tSYS_MINHERIT             = 273 // { int|sys||minherit(void *addr, size_t len, int inherit); }\n\tSYS_LCHMOD               = 274 // { int|sys||lchmod(const char *path, mode_t mode); }\n\tSYS_LCHOWN               = 275 // { int|sys||lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_MSYNC                = 277 // { int|sys|13|msync(void *addr, size_t len, int flags); }\n\tSYS___POSIX_CHOWN        = 283 // { int|sys||__posix_chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS___POSIX_FCHOWN       = 284 // { int|sys||__posix_fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS___POSIX_LCHOWN       = 285 // { int|sys||__posix_lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_GETSID               = 286 // { pid_t|sys||getsid(pid_t pid); }\n\tSYS___CLONE              = 287 // { pid_t|sys||__clone(int flags, void *stack); }\n\tSYS_FKTRACE              = 288 // { int|sys||fktrace(int fd, int ops, int facs, pid_t pid); }\n\tSYS_PREADV               = 289 // { ssize_t|sys||preadv(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); }\n\tSYS_PWRITEV              = 290 // { ssize_t|sys||pwritev(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); }\n\tSYS___GETCWD             = 296 // { int|sys||__getcwd(char *bufp, size_t length); }\n\tSYS_FCHROOT              = 297 // { int|sys||fchroot(int fd); }\n\tSYS_LCHFLAGS             = 304 // { int|sys||lchflags(const char *path, u_long flags); }\n\tSYS_ISSETUGID            = 305 // { int|sys||issetugid(void); }\n\tSYS_UTRACE               = 306 // { int|sys||utrace(const char *label, void *addr, size_t len); }\n\tSYS_GETCONTEXT           = 307 // { int|sys||getcontext(struct __ucontext *ucp); }\n\tSYS_SETCONTEXT           = 308 // { int|sys||setcontext(const struct __ucontext *ucp); }\n\tSYS__LWP_CREATE          = 309 // { int|sys||_lwp_create(const struct __ucontext *ucp, u_long flags, lwpid_t *new_lwp); }\n\tSYS__LWP_EXIT            = 310 // { int|sys||_lwp_exit(void); }\n\tSYS__LWP_SELF            = 311 // { lwpid_t|sys||_lwp_self(void); }\n\tSYS__LWP_WAIT            = 312 // { int|sys||_lwp_wait(lwpid_t wait_for, lwpid_t *departed); }\n\tSYS__LWP_SUSPEND         = 313 // { int|sys||_lwp_suspend(lwpid_t target); }\n\tSYS__LWP_CONTINUE        = 314 // { int|sys||_lwp_continue(lwpid_t target); }\n\tSYS__LWP_WAKEUP          = 315 // { int|sys||_lwp_wakeup(lwpid_t target); }\n\tSYS__LWP_GETPRIVATE      = 316 // { void *|sys||_lwp_getprivate(void); }\n\tSYS__LWP_SETPRIVATE      = 317 // { void|sys||_lwp_setprivate(void *ptr); }\n\tSYS__LWP_KILL            = 318 // { int|sys||_lwp_kill(lwpid_t target, int signo); }\n\tSYS__LWP_DETACH          = 319 // { int|sys||_lwp_detach(lwpid_t target); }\n\tSYS__LWP_UNPARK          = 321 // { int|sys||_lwp_unpark(lwpid_t target, const void *hint); }\n\tSYS__LWP_UNPARK_ALL      = 322 // { ssize_t|sys||_lwp_unpark_all(const lwpid_t *targets, size_t ntargets, const void *hint); }\n\tSYS__LWP_SETNAME         = 323 // { int|sys||_lwp_setname(lwpid_t target, const char *name); }\n\tSYS__LWP_GETNAME         = 324 // { int|sys||_lwp_getname(lwpid_t target, char *name, size_t len); }\n\tSYS__LWP_CTL             = 325 // { int|sys||_lwp_ctl(int features, struct lwpctl **address); }\n\tSYS___SIGACTION_SIGTRAMP = 340 // { int|sys||__sigaction_sigtramp(int signum, const struct sigaction *nsa, struct sigaction *osa, const void *tramp, int vers); }\n\tSYS_PMC_GET_INFO         = 341 // { int|sys||pmc_get_info(int ctr, int op, void *args); }\n\tSYS_PMC_CONTROL          = 342 // { int|sys||pmc_control(int ctr, int op, void *args); }\n\tSYS_RASCTL               = 343 // { int|sys||rasctl(void *addr, size_t len, int op); }\n\tSYS_KQUEUE               = 344 // { int|sys||kqueue(void); }\n\tSYS__SCHED_SETPARAM      = 346 // { int|sys||_sched_setparam(pid_t pid, lwpid_t lid, int policy, const struct sched_param *params); }\n\tSYS__SCHED_GETPARAM      = 347 // { int|sys||_sched_getparam(pid_t pid, lwpid_t lid, int *policy, struct sched_param *params); }\n\tSYS__SCHED_SETAFFINITY   = 348 // { int|sys||_sched_setaffinity(pid_t pid, lwpid_t lid, size_t size, const cpuset_t *cpuset); }\n\tSYS__SCHED_GETAFFINITY   = 349 // { int|sys||_sched_getaffinity(pid_t pid, lwpid_t lid, size_t size, cpuset_t *cpuset); }\n\tSYS_SCHED_YIELD          = 350 // { int|sys||sched_yield(void); }\n\tSYS_FSYNC_RANGE          = 354 // { int|sys||fsync_range(int fd, int flags, off_t start, off_t length); }\n\tSYS_UUIDGEN              = 355 // { int|sys||uuidgen(struct uuid *store, int count); }\n\tSYS_GETVFSSTAT           = 356 // { int|sys||getvfsstat(struct statvfs *buf, size_t bufsize, int flags); }\n\tSYS_STATVFS1             = 357 // { int|sys||statvfs1(const char *path, struct statvfs *buf, int flags); }\n\tSYS_FSTATVFS1            = 358 // { int|sys||fstatvfs1(int fd, struct statvfs *buf, int flags); }\n\tSYS_EXTATTRCTL           = 360 // { int|sys||extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FILE     = 361 // { int|sys||extattr_set_file(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FILE     = 362 // { ssize_t|sys||extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FILE  = 363 // { int|sys||extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FD       = 364 // { int|sys||extattr_set_fd(int fd, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FD       = 365 // { ssize_t|sys||extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FD    = 366 // { int|sys||extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_LINK     = 367 // { int|sys||extattr_set_link(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_LINK     = 368 // { ssize_t|sys||extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_LINK  = 369 // { int|sys||extattr_delete_link(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_LIST_FD      = 370 // { ssize_t|sys||extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_FILE    = 371 // { ssize_t|sys||extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_LINK    = 372 // { ssize_t|sys||extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_SETXATTR             = 375 // { int|sys||setxattr(const char *path, const char *name, const void *value, size_t size, int flags); }\n\tSYS_LSETXATTR            = 376 // { int|sys||lsetxattr(const char *path, const char *name, const void *value, size_t size, int flags); }\n\tSYS_FSETXATTR            = 377 // { int|sys||fsetxattr(int fd, const char *name, const void *value, size_t size, int flags); }\n\tSYS_GETXATTR             = 378 // { int|sys||getxattr(const char *path, const char *name, void *value, size_t size); }\n\tSYS_LGETXATTR            = 379 // { int|sys||lgetxattr(const char *path, const char *name, void *value, size_t size); }\n\tSYS_FGETXATTR            = 380 // { int|sys||fgetxattr(int fd, const char *name, void *value, size_t size); }\n\tSYS_LISTXATTR            = 381 // { int|sys||listxattr(const char *path, char *list, size_t size); }\n\tSYS_LLISTXATTR           = 382 // { int|sys||llistxattr(const char *path, char *list, size_t size); }\n\tSYS_FLISTXATTR           = 383 // { int|sys||flistxattr(int fd, char *list, size_t size); }\n\tSYS_REMOVEXATTR          = 384 // { int|sys||removexattr(const char *path, const char *name); }\n\tSYS_LREMOVEXATTR         = 385 // { int|sys||lremovexattr(const char *path, const char *name); }\n\tSYS_FREMOVEXATTR         = 386 // { int|sys||fremovexattr(int fd, const char *name); }\n\tSYS_GETDENTS             = 390 // { int|sys|30|getdents(int fd, char *buf, size_t count); }\n\tSYS_SOCKET               = 394 // { int|sys|30|socket(int domain, int type, int protocol); }\n\tSYS_GETFH                = 395 // { int|sys|30|getfh(const char *fname, void *fhp, size_t *fh_size); }\n\tSYS_MOUNT                = 410 // { int|sys|50|mount(const char *type, const char *path, int flags, void *data, size_t data_len); }\n\tSYS_MREMAP               = 411 // { void *|sys||mremap(void *old_address, size_t old_size, void *new_address, size_t new_size, int flags); }\n\tSYS_PSET_CREATE          = 412 // { int|sys||pset_create(psetid_t *psid); }\n\tSYS_PSET_DESTROY         = 413 // { int|sys||pset_destroy(psetid_t psid); }\n\tSYS_PSET_ASSIGN          = 414 // { int|sys||pset_assign(psetid_t psid, cpuid_t cpuid, psetid_t *opsid); }\n\tSYS__PSET_BIND           = 415 // { int|sys||_pset_bind(idtype_t idtype, id_t first_id, id_t second_id, psetid_t psid, psetid_t *opsid); }\n\tSYS_POSIX_FADVISE        = 416 // { int|sys|50|posix_fadvise(int fd, int PAD, off_t offset, off_t len, int advice); }\n\tSYS_SELECT               = 417 // { int|sys|50|select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_GETTIMEOFDAY         = 418 // { int|sys|50|gettimeofday(struct timeval *tp, void *tzp); }\n\tSYS_SETTIMEOFDAY         = 419 // { int|sys|50|settimeofday(const struct timeval *tv, const void *tzp); }\n\tSYS_UTIMES               = 420 // { int|sys|50|utimes(const char *path, const struct timeval *tptr); }\n\tSYS_ADJTIME              = 421 // { int|sys|50|adjtime(const struct timeval *delta, struct timeval *olddelta); }\n\tSYS_FUTIMES              = 423 // { int|sys|50|futimes(int fd, const struct timeval *tptr); }\n\tSYS_LUTIMES              = 424 // { int|sys|50|lutimes(const char *path, const struct timeval *tptr); }\n\tSYS_SETITIMER            = 425 // { int|sys|50|setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_GETITIMER            = 426 // { int|sys|50|getitimer(int which, struct itimerval *itv); }\n\tSYS_CLOCK_GETTIME        = 427 // { int|sys|50|clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME        = 428 // { int|sys|50|clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES         = 429 // { int|sys|50|clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_NANOSLEEP            = 430 // { int|sys|50|nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS___SIGTIMEDWAIT       = 431 // { int|sys|50|__sigtimedwait(const sigset_t *set, siginfo_t *info, struct timespec *timeout); }\n\tSYS__LWP_PARK            = 434 // { int|sys|50|_lwp_park(const struct timespec *ts, lwpid_t unpark, const void *hint, const void *unparkhint); }\n\tSYS_KEVENT               = 435 // { int|sys|50|kevent(int fd, const struct kevent *changelist, size_t nchanges, struct kevent *eventlist, size_t nevents, const struct timespec *timeout); }\n\tSYS_PSELECT              = 436 // { int|sys|50|pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_POLLTS               = 437 // { int|sys|50|pollts(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_STAT                 = 439 // { int|sys|50|stat(const char *path, struct stat *ub); }\n\tSYS_FSTAT                = 440 // { int|sys|50|fstat(int fd, struct stat *sb); }\n\tSYS_LSTAT                = 441 // { int|sys|50|lstat(const char *path, struct stat *ub); }\n\tSYS___SEMCTL             = 442 // { int|sys|50|__semctl(int semid, int semnum, int cmd, ... union __semun *arg); }\n\tSYS_SHMCTL               = 443 // { int|sys|50|shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_MSGCTL               = 444 // { int|sys|50|msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_GETRUSAGE            = 445 // { int|sys|50|getrusage(int who, struct rusage *rusage); }\n\tSYS_TIMER_SETTIME        = 446 // { int|sys|50|timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }\n\tSYS_TIMER_GETTIME        = 447 // { int|sys|50|timer_gettime(timer_t timerid, struct itimerspec *value); }\n\tSYS_NTP_GETTIME          = 448 // { int|sys|50|ntp_gettime(struct ntptimeval *ntvp); }\n\tSYS_WAIT4                = 449 // { int|sys|50|wait4(pid_t pid, int *status, int options, struct rusage *rusage); }\n\tSYS_MKNOD                = 450 // { int|sys|50|mknod(const char *path, mode_t mode, dev_t dev); }\n\tSYS_FHSTAT               = 451 // { int|sys|50|fhstat(const void *fhp, size_t fh_size, struct stat *sb); }\n\tSYS_PIPE2                = 453 // { int|sys||pipe2(int *fildes, int flags); }\n\tSYS_DUP3                 = 454 // { int|sys||dup3(int from, int to, int flags); }\n\tSYS_KQUEUE1              = 455 // { int|sys||kqueue1(int flags); }\n\tSYS_PACCEPT              = 456 // { int|sys||paccept(int s, struct sockaddr *name, socklen_t *anamelen, const sigset_t *mask, int flags); }\n\tSYS_LINKAT               = 457 // { int|sys||linkat(int fd1, const char *name1, int fd2, const char *name2, int flags); }\n\tSYS_RENAMEAT             = 458 // { int|sys||renameat(int fromfd, const char *from, int tofd, const char *to); }\n\tSYS_MKFIFOAT             = 459 // { int|sys||mkfifoat(int fd, const char *path, mode_t mode); }\n\tSYS_MKNODAT              = 460 // { int|sys||mknodat(int fd, const char *path, mode_t mode, uint32_t dev); }\n\tSYS_MKDIRAT              = 461 // { int|sys||mkdirat(int fd, const char *path, mode_t mode); }\n\tSYS_FACCESSAT            = 462 // { int|sys||faccessat(int fd, const char *path, int amode, int flag); }\n\tSYS_FCHMODAT             = 463 // { int|sys||fchmodat(int fd, const char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT             = 464 // { int|sys||fchownat(int fd, const char *path, uid_t owner, gid_t group, int flag); }\n\tSYS_FEXECVE              = 465 // { int|sys||fexecve(int fd, char * const *argp, char * const *envp); }\n\tSYS_FSTATAT              = 466 // { int|sys||fstatat(int fd, const char *path, struct stat *buf, int flag); }\n\tSYS_UTIMENSAT            = 467 // { int|sys||utimensat(int fd, const char *path, const struct timespec *tptr, int flag); }\n\tSYS_OPENAT               = 468 // { int|sys||openat(int fd, const char *path, int oflags, ... mode_t mode); }\n\tSYS_READLINKAT           = 469 // { int|sys||readlinkat(int fd, const char *path, char *buf, size_t bufsize); }\n\tSYS_SYMLINKAT            = 470 // { int|sys||symlinkat(const char *path1, int fd, const char *path2); }\n\tSYS_UNLINKAT             = 471 // { int|sys||unlinkat(int fd, const char *path, int flag); }\n\tSYS_FUTIMENS             = 472 // { int|sys||futimens(int fd, const struct timespec *tptr); }\n\tSYS___QUOTACTL           = 473 // { int|sys||__quotactl(const char *path, struct quotactl_args *args); }\n\tSYS_POSIX_SPAWN          = 474 // { int|sys||posix_spawn(pid_t *pid, const char *path, const struct posix_spawn_file_actions *file_actions, const struct posix_spawnattr *attrp, char *const *argv, char *const *envp); }\n\tSYS_RECVMMSG             = 475 // { int|sys||recvmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags, struct timespec *timeout); }\n\tSYS_SENDMMSG             = 476 // { int|sys||sendmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags); }\n)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go",
    "content": "// go run mksysnum.go http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm && netbsd\n\npackage unix\n\nconst (\n\tSYS_EXIT                 = 1   // { void|sys||exit(int rval); }\n\tSYS_FORK                 = 2   // { int|sys||fork(void); }\n\tSYS_READ                 = 3   // { ssize_t|sys||read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE                = 4   // { ssize_t|sys||write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN                 = 5   // { int|sys||open(const char *path, int flags, ... mode_t mode); }\n\tSYS_CLOSE                = 6   // { int|sys||close(int fd); }\n\tSYS_LINK                 = 9   // { int|sys||link(const char *path, const char *link); }\n\tSYS_UNLINK               = 10  // { int|sys||unlink(const char *path); }\n\tSYS_CHDIR                = 12  // { int|sys||chdir(const char *path); }\n\tSYS_FCHDIR               = 13  // { int|sys||fchdir(int fd); }\n\tSYS_CHMOD                = 15  // { int|sys||chmod(const char *path, mode_t mode); }\n\tSYS_CHOWN                = 16  // { int|sys||chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_BREAK                = 17  // { int|sys||obreak(char *nsize); }\n\tSYS_GETPID               = 20  // { pid_t|sys||getpid_with_ppid(void); }\n\tSYS_UNMOUNT              = 22  // { int|sys||unmount(const char *path, int flags); }\n\tSYS_SETUID               = 23  // { int|sys||setuid(uid_t uid); }\n\tSYS_GETUID               = 24  // { uid_t|sys||getuid_with_euid(void); }\n\tSYS_GETEUID              = 25  // { uid_t|sys||geteuid(void); }\n\tSYS_PTRACE               = 26  // { int|sys||ptrace(int req, pid_t pid, void *addr, int data); }\n\tSYS_RECVMSG              = 27  // { ssize_t|sys||recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG              = 28  // { ssize_t|sys||sendmsg(int s, const struct msghdr *msg, int flags); }\n\tSYS_RECVFROM             = 29  // { ssize_t|sys||recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }\n\tSYS_ACCEPT               = 30  // { int|sys||accept(int s, struct sockaddr *name, socklen_t *anamelen); }\n\tSYS_GETPEERNAME          = 31  // { int|sys||getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_GETSOCKNAME          = 32  // { int|sys||getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_ACCESS               = 33  // { int|sys||access(const char *path, int flags); }\n\tSYS_CHFLAGS              = 34  // { int|sys||chflags(const char *path, u_long flags); }\n\tSYS_FCHFLAGS             = 35  // { int|sys||fchflags(int fd, u_long flags); }\n\tSYS_SYNC                 = 36  // { void|sys||sync(void); }\n\tSYS_KILL                 = 37  // { int|sys||kill(pid_t pid, int signum); }\n\tSYS_GETPPID              = 39  // { pid_t|sys||getppid(void); }\n\tSYS_DUP                  = 41  // { int|sys||dup(int fd); }\n\tSYS_PIPE                 = 42  // { int|sys||pipe(void); }\n\tSYS_GETEGID              = 43  // { gid_t|sys||getegid(void); }\n\tSYS_PROFIL               = 44  // { int|sys||profil(char *samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE               = 45  // { int|sys||ktrace(const char *fname, int ops, int facs, pid_t pid); }\n\tSYS_GETGID               = 47  // { gid_t|sys||getgid_with_egid(void); }\n\tSYS___GETLOGIN           = 49  // { int|sys||__getlogin(char *namebuf, size_t namelen); }\n\tSYS___SETLOGIN           = 50  // { int|sys||__setlogin(const char *namebuf); }\n\tSYS_ACCT                 = 51  // { int|sys||acct(const char *path); }\n\tSYS_IOCTL                = 54  // { int|sys||ioctl(int fd, u_long com, ... void *data); }\n\tSYS_REVOKE               = 56  // { int|sys||revoke(const char *path); }\n\tSYS_SYMLINK              = 57  // { int|sys||symlink(const char *path, const char *link); }\n\tSYS_READLINK             = 58  // { ssize_t|sys||readlink(const char *path, char *buf, size_t count); }\n\tSYS_EXECVE               = 59  // { int|sys||execve(const char *path, char * const *argp, char * const *envp); }\n\tSYS_UMASK                = 60  // { mode_t|sys||umask(mode_t newmask); }\n\tSYS_CHROOT               = 61  // { int|sys||chroot(const char *path); }\n\tSYS_VFORK                = 66  // { int|sys||vfork(void); }\n\tSYS_SBRK                 = 69  // { int|sys||sbrk(intptr_t incr); }\n\tSYS_SSTK                 = 70  // { int|sys||sstk(int incr); }\n\tSYS_VADVISE              = 72  // { int|sys||ovadvise(int anom); }\n\tSYS_MUNMAP               = 73  // { int|sys||munmap(void *addr, size_t len); }\n\tSYS_MPROTECT             = 74  // { int|sys||mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE              = 75  // { int|sys||madvise(void *addr, size_t len, int behav); }\n\tSYS_MINCORE              = 78  // { int|sys||mincore(void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS            = 79  // { int|sys||getgroups(int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS            = 80  // { int|sys||setgroups(int gidsetsize, const gid_t *gidset); }\n\tSYS_GETPGRP              = 81  // { int|sys||getpgrp(void); }\n\tSYS_SETPGID              = 82  // { int|sys||setpgid(pid_t pid, pid_t pgid); }\n\tSYS_DUP2                 = 90  // { int|sys||dup2(int from, int to); }\n\tSYS_FCNTL                = 92  // { int|sys||fcntl(int fd, int cmd, ... void *arg); }\n\tSYS_FSYNC                = 95  // { int|sys||fsync(int fd); }\n\tSYS_SETPRIORITY          = 96  // { int|sys||setpriority(int which, id_t who, int prio); }\n\tSYS_CONNECT              = 98  // { int|sys||connect(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_GETPRIORITY          = 100 // { int|sys||getpriority(int which, id_t who); }\n\tSYS_BIND                 = 104 // { int|sys||bind(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_SETSOCKOPT           = 105 // { int|sys||setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }\n\tSYS_LISTEN               = 106 // { int|sys||listen(int s, int backlog); }\n\tSYS_GETSOCKOPT           = 118 // { int|sys||getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }\n\tSYS_READV                = 120 // { ssize_t|sys||readv(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_WRITEV               = 121 // { ssize_t|sys||writev(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_FCHOWN               = 123 // { int|sys||fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS_FCHMOD               = 124 // { int|sys||fchmod(int fd, mode_t mode); }\n\tSYS_SETREUID             = 126 // { int|sys||setreuid(uid_t ruid, uid_t euid); }\n\tSYS_SETREGID             = 127 // { int|sys||setregid(gid_t rgid, gid_t egid); }\n\tSYS_RENAME               = 128 // { int|sys||rename(const char *from, const char *to); }\n\tSYS_FLOCK                = 131 // { int|sys||flock(int fd, int how); }\n\tSYS_MKFIFO               = 132 // { int|sys||mkfifo(const char *path, mode_t mode); }\n\tSYS_SENDTO               = 133 // { ssize_t|sys||sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }\n\tSYS_SHUTDOWN             = 134 // { int|sys||shutdown(int s, int how); }\n\tSYS_SOCKETPAIR           = 135 // { int|sys||socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR                = 136 // { int|sys||mkdir(const char *path, mode_t mode); }\n\tSYS_RMDIR                = 137 // { int|sys||rmdir(const char *path); }\n\tSYS_SETSID               = 147 // { int|sys||setsid(void); }\n\tSYS_SYSARCH              = 165 // { int|sys||sysarch(int op, void *parms); }\n\tSYS_PREAD                = 173 // { ssize_t|sys||pread(int fd, void *buf, size_t nbyte, int PAD, off_t offset); }\n\tSYS_PWRITE               = 174 // { ssize_t|sys||pwrite(int fd, const void *buf, size_t nbyte, int PAD, off_t offset); }\n\tSYS_NTP_ADJTIME          = 176 // { int|sys||ntp_adjtime(struct timex *tp); }\n\tSYS_SETGID               = 181 // { int|sys||setgid(gid_t gid); }\n\tSYS_SETEGID              = 182 // { int|sys||setegid(gid_t egid); }\n\tSYS_SETEUID              = 183 // { int|sys||seteuid(uid_t euid); }\n\tSYS_PATHCONF             = 191 // { long|sys||pathconf(const char *path, int name); }\n\tSYS_FPATHCONF            = 192 // { long|sys||fpathconf(int fd, int name); }\n\tSYS_GETRLIMIT            = 194 // { int|sys||getrlimit(int which, struct rlimit *rlp); }\n\tSYS_SETRLIMIT            = 195 // { int|sys||setrlimit(int which, const struct rlimit *rlp); }\n\tSYS_MMAP                 = 197 // { void *|sys||mmap(void *addr, size_t len, int prot, int flags, int fd, long PAD, off_t pos); }\n\tSYS_LSEEK                = 199 // { off_t|sys||lseek(int fd, int PAD, off_t offset, int whence); }\n\tSYS_TRUNCATE             = 200 // { int|sys||truncate(const char *path, int PAD, off_t length); }\n\tSYS_FTRUNCATE            = 201 // { int|sys||ftruncate(int fd, int PAD, off_t length); }\n\tSYS___SYSCTL             = 202 // { int|sys||__sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, const void *new, size_t newlen); }\n\tSYS_MLOCK                = 203 // { int|sys||mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK              = 204 // { int|sys||munlock(const void *addr, size_t len); }\n\tSYS_UNDELETE             = 205 // { int|sys||undelete(const char *path); }\n\tSYS_GETPGID              = 207 // { pid_t|sys||getpgid(pid_t pid); }\n\tSYS_REBOOT               = 208 // { int|sys||reboot(int opt, char *bootstr); }\n\tSYS_POLL                 = 209 // { int|sys||poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_SEMGET               = 221 // { int|sys||semget(key_t key, int nsems, int semflg); }\n\tSYS_SEMOP                = 222 // { int|sys||semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_SEMCONFIG            = 223 // { int|sys||semconfig(int flag); }\n\tSYS_MSGGET               = 225 // { int|sys||msgget(key_t key, int msgflg); }\n\tSYS_MSGSND               = 226 // { int|sys||msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV               = 227 // { ssize_t|sys||msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT                = 228 // { void *|sys||shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT                = 230 // { int|sys||shmdt(const void *shmaddr); }\n\tSYS_SHMGET               = 231 // { int|sys||shmget(key_t key, size_t size, int shmflg); }\n\tSYS_TIMER_CREATE         = 235 // { int|sys||timer_create(clockid_t clock_id, struct sigevent *evp, timer_t *timerid); }\n\tSYS_TIMER_DELETE         = 236 // { int|sys||timer_delete(timer_t timerid); }\n\tSYS_TIMER_GETOVERRUN     = 239 // { int|sys||timer_getoverrun(timer_t timerid); }\n\tSYS_FDATASYNC            = 241 // { int|sys||fdatasync(int fd); }\n\tSYS_MLOCKALL             = 242 // { int|sys||mlockall(int flags); }\n\tSYS_MUNLOCKALL           = 243 // { int|sys||munlockall(void); }\n\tSYS_SIGQUEUEINFO         = 245 // { int|sys||sigqueueinfo(pid_t pid, const siginfo_t *info); }\n\tSYS_MODCTL               = 246 // { int|sys||modctl(int cmd, void *arg); }\n\tSYS___POSIX_RENAME       = 270 // { int|sys||__posix_rename(const char *from, const char *to); }\n\tSYS_SWAPCTL              = 271 // { int|sys||swapctl(int cmd, void *arg, int misc); }\n\tSYS_MINHERIT             = 273 // { int|sys||minherit(void *addr, size_t len, int inherit); }\n\tSYS_LCHMOD               = 274 // { int|sys||lchmod(const char *path, mode_t mode); }\n\tSYS_LCHOWN               = 275 // { int|sys||lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_MSYNC                = 277 // { int|sys|13|msync(void *addr, size_t len, int flags); }\n\tSYS___POSIX_CHOWN        = 283 // { int|sys||__posix_chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS___POSIX_FCHOWN       = 284 // { int|sys||__posix_fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS___POSIX_LCHOWN       = 285 // { int|sys||__posix_lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_GETSID               = 286 // { pid_t|sys||getsid(pid_t pid); }\n\tSYS___CLONE              = 287 // { pid_t|sys||__clone(int flags, void *stack); }\n\tSYS_FKTRACE              = 288 // { int|sys||fktrace(int fd, int ops, int facs, pid_t pid); }\n\tSYS_PREADV               = 289 // { ssize_t|sys||preadv(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); }\n\tSYS_PWRITEV              = 290 // { ssize_t|sys||pwritev(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); }\n\tSYS___GETCWD             = 296 // { int|sys||__getcwd(char *bufp, size_t length); }\n\tSYS_FCHROOT              = 297 // { int|sys||fchroot(int fd); }\n\tSYS_LCHFLAGS             = 304 // { int|sys||lchflags(const char *path, u_long flags); }\n\tSYS_ISSETUGID            = 305 // { int|sys||issetugid(void); }\n\tSYS_UTRACE               = 306 // { int|sys||utrace(const char *label, void *addr, size_t len); }\n\tSYS_GETCONTEXT           = 307 // { int|sys||getcontext(struct __ucontext *ucp); }\n\tSYS_SETCONTEXT           = 308 // { int|sys||setcontext(const struct __ucontext *ucp); }\n\tSYS__LWP_CREATE          = 309 // { int|sys||_lwp_create(const struct __ucontext *ucp, u_long flags, lwpid_t *new_lwp); }\n\tSYS__LWP_EXIT            = 310 // { int|sys||_lwp_exit(void); }\n\tSYS__LWP_SELF            = 311 // { lwpid_t|sys||_lwp_self(void); }\n\tSYS__LWP_WAIT            = 312 // { int|sys||_lwp_wait(lwpid_t wait_for, lwpid_t *departed); }\n\tSYS__LWP_SUSPEND         = 313 // { int|sys||_lwp_suspend(lwpid_t target); }\n\tSYS__LWP_CONTINUE        = 314 // { int|sys||_lwp_continue(lwpid_t target); }\n\tSYS__LWP_WAKEUP          = 315 // { int|sys||_lwp_wakeup(lwpid_t target); }\n\tSYS__LWP_GETPRIVATE      = 316 // { void *|sys||_lwp_getprivate(void); }\n\tSYS__LWP_SETPRIVATE      = 317 // { void|sys||_lwp_setprivate(void *ptr); }\n\tSYS__LWP_KILL            = 318 // { int|sys||_lwp_kill(lwpid_t target, int signo); }\n\tSYS__LWP_DETACH          = 319 // { int|sys||_lwp_detach(lwpid_t target); }\n\tSYS__LWP_UNPARK          = 321 // { int|sys||_lwp_unpark(lwpid_t target, const void *hint); }\n\tSYS__LWP_UNPARK_ALL      = 322 // { ssize_t|sys||_lwp_unpark_all(const lwpid_t *targets, size_t ntargets, const void *hint); }\n\tSYS__LWP_SETNAME         = 323 // { int|sys||_lwp_setname(lwpid_t target, const char *name); }\n\tSYS__LWP_GETNAME         = 324 // { int|sys||_lwp_getname(lwpid_t target, char *name, size_t len); }\n\tSYS__LWP_CTL             = 325 // { int|sys||_lwp_ctl(int features, struct lwpctl **address); }\n\tSYS___SIGACTION_SIGTRAMP = 340 // { int|sys||__sigaction_sigtramp(int signum, const struct sigaction *nsa, struct sigaction *osa, const void *tramp, int vers); }\n\tSYS_PMC_GET_INFO         = 341 // { int|sys||pmc_get_info(int ctr, int op, void *args); }\n\tSYS_PMC_CONTROL          = 342 // { int|sys||pmc_control(int ctr, int op, void *args); }\n\tSYS_RASCTL               = 343 // { int|sys||rasctl(void *addr, size_t len, int op); }\n\tSYS_KQUEUE               = 344 // { int|sys||kqueue(void); }\n\tSYS__SCHED_SETPARAM      = 346 // { int|sys||_sched_setparam(pid_t pid, lwpid_t lid, int policy, const struct sched_param *params); }\n\tSYS__SCHED_GETPARAM      = 347 // { int|sys||_sched_getparam(pid_t pid, lwpid_t lid, int *policy, struct sched_param *params); }\n\tSYS__SCHED_SETAFFINITY   = 348 // { int|sys||_sched_setaffinity(pid_t pid, lwpid_t lid, size_t size, const cpuset_t *cpuset); }\n\tSYS__SCHED_GETAFFINITY   = 349 // { int|sys||_sched_getaffinity(pid_t pid, lwpid_t lid, size_t size, cpuset_t *cpuset); }\n\tSYS_SCHED_YIELD          = 350 // { int|sys||sched_yield(void); }\n\tSYS_FSYNC_RANGE          = 354 // { int|sys||fsync_range(int fd, int flags, off_t start, off_t length); }\n\tSYS_UUIDGEN              = 355 // { int|sys||uuidgen(struct uuid *store, int count); }\n\tSYS_GETVFSSTAT           = 356 // { int|sys||getvfsstat(struct statvfs *buf, size_t bufsize, int flags); }\n\tSYS_STATVFS1             = 357 // { int|sys||statvfs1(const char *path, struct statvfs *buf, int flags); }\n\tSYS_FSTATVFS1            = 358 // { int|sys||fstatvfs1(int fd, struct statvfs *buf, int flags); }\n\tSYS_EXTATTRCTL           = 360 // { int|sys||extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FILE     = 361 // { int|sys||extattr_set_file(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FILE     = 362 // { ssize_t|sys||extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FILE  = 363 // { int|sys||extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FD       = 364 // { int|sys||extattr_set_fd(int fd, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FD       = 365 // { ssize_t|sys||extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FD    = 366 // { int|sys||extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_LINK     = 367 // { int|sys||extattr_set_link(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_LINK     = 368 // { ssize_t|sys||extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_LINK  = 369 // { int|sys||extattr_delete_link(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_LIST_FD      = 370 // { ssize_t|sys||extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_FILE    = 371 // { ssize_t|sys||extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_LINK    = 372 // { ssize_t|sys||extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_SETXATTR             = 375 // { int|sys||setxattr(const char *path, const char *name, const void *value, size_t size, int flags); }\n\tSYS_LSETXATTR            = 376 // { int|sys||lsetxattr(const char *path, const char *name, const void *value, size_t size, int flags); }\n\tSYS_FSETXATTR            = 377 // { int|sys||fsetxattr(int fd, const char *name, const void *value, size_t size, int flags); }\n\tSYS_GETXATTR             = 378 // { int|sys||getxattr(const char *path, const char *name, void *value, size_t size); }\n\tSYS_LGETXATTR            = 379 // { int|sys||lgetxattr(const char *path, const char *name, void *value, size_t size); }\n\tSYS_FGETXATTR            = 380 // { int|sys||fgetxattr(int fd, const char *name, void *value, size_t size); }\n\tSYS_LISTXATTR            = 381 // { int|sys||listxattr(const char *path, char *list, size_t size); }\n\tSYS_LLISTXATTR           = 382 // { int|sys||llistxattr(const char *path, char *list, size_t size); }\n\tSYS_FLISTXATTR           = 383 // { int|sys||flistxattr(int fd, char *list, size_t size); }\n\tSYS_REMOVEXATTR          = 384 // { int|sys||removexattr(const char *path, const char *name); }\n\tSYS_LREMOVEXATTR         = 385 // { int|sys||lremovexattr(const char *path, const char *name); }\n\tSYS_FREMOVEXATTR         = 386 // { int|sys||fremovexattr(int fd, const char *name); }\n\tSYS_GETDENTS             = 390 // { int|sys|30|getdents(int fd, char *buf, size_t count); }\n\tSYS_SOCKET               = 394 // { int|sys|30|socket(int domain, int type, int protocol); }\n\tSYS_GETFH                = 395 // { int|sys|30|getfh(const char *fname, void *fhp, size_t *fh_size); }\n\tSYS_MOUNT                = 410 // { int|sys|50|mount(const char *type, const char *path, int flags, void *data, size_t data_len); }\n\tSYS_MREMAP               = 411 // { void *|sys||mremap(void *old_address, size_t old_size, void *new_address, size_t new_size, int flags); }\n\tSYS_PSET_CREATE          = 412 // { int|sys||pset_create(psetid_t *psid); }\n\tSYS_PSET_DESTROY         = 413 // { int|sys||pset_destroy(psetid_t psid); }\n\tSYS_PSET_ASSIGN          = 414 // { int|sys||pset_assign(psetid_t psid, cpuid_t cpuid, psetid_t *opsid); }\n\tSYS__PSET_BIND           = 415 // { int|sys||_pset_bind(idtype_t idtype, id_t first_id, id_t second_id, psetid_t psid, psetid_t *opsid); }\n\tSYS_POSIX_FADVISE        = 416 // { int|sys|50|posix_fadvise(int fd, int PAD, off_t offset, off_t len, int advice); }\n\tSYS_SELECT               = 417 // { int|sys|50|select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_GETTIMEOFDAY         = 418 // { int|sys|50|gettimeofday(struct timeval *tp, void *tzp); }\n\tSYS_SETTIMEOFDAY         = 419 // { int|sys|50|settimeofday(const struct timeval *tv, const void *tzp); }\n\tSYS_UTIMES               = 420 // { int|sys|50|utimes(const char *path, const struct timeval *tptr); }\n\tSYS_ADJTIME              = 421 // { int|sys|50|adjtime(const struct timeval *delta, struct timeval *olddelta); }\n\tSYS_FUTIMES              = 423 // { int|sys|50|futimes(int fd, const struct timeval *tptr); }\n\tSYS_LUTIMES              = 424 // { int|sys|50|lutimes(const char *path, const struct timeval *tptr); }\n\tSYS_SETITIMER            = 425 // { int|sys|50|setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_GETITIMER            = 426 // { int|sys|50|getitimer(int which, struct itimerval *itv); }\n\tSYS_CLOCK_GETTIME        = 427 // { int|sys|50|clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME        = 428 // { int|sys|50|clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES         = 429 // { int|sys|50|clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_NANOSLEEP            = 430 // { int|sys|50|nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS___SIGTIMEDWAIT       = 431 // { int|sys|50|__sigtimedwait(const sigset_t *set, siginfo_t *info, struct timespec *timeout); }\n\tSYS__LWP_PARK            = 434 // { int|sys|50|_lwp_park(const struct timespec *ts, lwpid_t unpark, const void *hint, const void *unparkhint); }\n\tSYS_KEVENT               = 435 // { int|sys|50|kevent(int fd, const struct kevent *changelist, size_t nchanges, struct kevent *eventlist, size_t nevents, const struct timespec *timeout); }\n\tSYS_PSELECT              = 436 // { int|sys|50|pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_POLLTS               = 437 // { int|sys|50|pollts(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_STAT                 = 439 // { int|sys|50|stat(const char *path, struct stat *ub); }\n\tSYS_FSTAT                = 440 // { int|sys|50|fstat(int fd, struct stat *sb); }\n\tSYS_LSTAT                = 441 // { int|sys|50|lstat(const char *path, struct stat *ub); }\n\tSYS___SEMCTL             = 442 // { int|sys|50|__semctl(int semid, int semnum, int cmd, ... union __semun *arg); }\n\tSYS_SHMCTL               = 443 // { int|sys|50|shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_MSGCTL               = 444 // { int|sys|50|msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_GETRUSAGE            = 445 // { int|sys|50|getrusage(int who, struct rusage *rusage); }\n\tSYS_TIMER_SETTIME        = 446 // { int|sys|50|timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }\n\tSYS_TIMER_GETTIME        = 447 // { int|sys|50|timer_gettime(timer_t timerid, struct itimerspec *value); }\n\tSYS_NTP_GETTIME          = 448 // { int|sys|50|ntp_gettime(struct ntptimeval *ntvp); }\n\tSYS_WAIT4                = 449 // { int|sys|50|wait4(pid_t pid, int *status, int options, struct rusage *rusage); }\n\tSYS_MKNOD                = 450 // { int|sys|50|mknod(const char *path, mode_t mode, dev_t dev); }\n\tSYS_FHSTAT               = 451 // { int|sys|50|fhstat(const void *fhp, size_t fh_size, struct stat *sb); }\n\tSYS_PIPE2                = 453 // { int|sys||pipe2(int *fildes, int flags); }\n\tSYS_DUP3                 = 454 // { int|sys||dup3(int from, int to, int flags); }\n\tSYS_KQUEUE1              = 455 // { int|sys||kqueue1(int flags); }\n\tSYS_PACCEPT              = 456 // { int|sys||paccept(int s, struct sockaddr *name, socklen_t *anamelen, const sigset_t *mask, int flags); }\n\tSYS_LINKAT               = 457 // { int|sys||linkat(int fd1, const char *name1, int fd2, const char *name2, int flags); }\n\tSYS_RENAMEAT             = 458 // { int|sys||renameat(int fromfd, const char *from, int tofd, const char *to); }\n\tSYS_MKFIFOAT             = 459 // { int|sys||mkfifoat(int fd, const char *path, mode_t mode); }\n\tSYS_MKNODAT              = 460 // { int|sys||mknodat(int fd, const char *path, mode_t mode, uint32_t dev); }\n\tSYS_MKDIRAT              = 461 // { int|sys||mkdirat(int fd, const char *path, mode_t mode); }\n\tSYS_FACCESSAT            = 462 // { int|sys||faccessat(int fd, const char *path, int amode, int flag); }\n\tSYS_FCHMODAT             = 463 // { int|sys||fchmodat(int fd, const char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT             = 464 // { int|sys||fchownat(int fd, const char *path, uid_t owner, gid_t group, int flag); }\n\tSYS_FEXECVE              = 465 // { int|sys||fexecve(int fd, char * const *argp, char * const *envp); }\n\tSYS_FSTATAT              = 466 // { int|sys||fstatat(int fd, const char *path, struct stat *buf, int flag); }\n\tSYS_UTIMENSAT            = 467 // { int|sys||utimensat(int fd, const char *path, const struct timespec *tptr, int flag); }\n\tSYS_OPENAT               = 468 // { int|sys||openat(int fd, const char *path, int oflags, ... mode_t mode); }\n\tSYS_READLINKAT           = 469 // { int|sys||readlinkat(int fd, const char *path, char *buf, size_t bufsize); }\n\tSYS_SYMLINKAT            = 470 // { int|sys||symlinkat(const char *path1, int fd, const char *path2); }\n\tSYS_UNLINKAT             = 471 // { int|sys||unlinkat(int fd, const char *path, int flag); }\n\tSYS_FUTIMENS             = 472 // { int|sys||futimens(int fd, const struct timespec *tptr); }\n\tSYS___QUOTACTL           = 473 // { int|sys||__quotactl(const char *path, struct quotactl_args *args); }\n\tSYS_POSIX_SPAWN          = 474 // { int|sys||posix_spawn(pid_t *pid, const char *path, const struct posix_spawn_file_actions *file_actions, const struct posix_spawnattr *attrp, char *const *argv, char *const *envp); }\n\tSYS_RECVMMSG             = 475 // { int|sys||recvmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags, struct timespec *timeout); }\n\tSYS_SENDMMSG             = 476 // { int|sys||sendmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags); }\n)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm64.go",
    "content": "// go run mksysnum.go http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master\n// Code generated by the command above; DO NOT EDIT.\n\n//go:build arm64 && netbsd\n\npackage unix\n\nconst (\n\tSYS_EXIT                 = 1   // { void|sys||exit(int rval); }\n\tSYS_FORK                 = 2   // { int|sys||fork(void); }\n\tSYS_READ                 = 3   // { ssize_t|sys||read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE                = 4   // { ssize_t|sys||write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN                 = 5   // { int|sys||open(const char *path, int flags, ... mode_t mode); }\n\tSYS_CLOSE                = 6   // { int|sys||close(int fd); }\n\tSYS_LINK                 = 9   // { int|sys||link(const char *path, const char *link); }\n\tSYS_UNLINK               = 10  // { int|sys||unlink(const char *path); }\n\tSYS_CHDIR                = 12  // { int|sys||chdir(const char *path); }\n\tSYS_FCHDIR               = 13  // { int|sys||fchdir(int fd); }\n\tSYS_CHMOD                = 15  // { int|sys||chmod(const char *path, mode_t mode); }\n\tSYS_CHOWN                = 16  // { int|sys||chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_BREAK                = 17  // { int|sys||obreak(char *nsize); }\n\tSYS_GETPID               = 20  // { pid_t|sys||getpid_with_ppid(void); }\n\tSYS_UNMOUNT              = 22  // { int|sys||unmount(const char *path, int flags); }\n\tSYS_SETUID               = 23  // { int|sys||setuid(uid_t uid); }\n\tSYS_GETUID               = 24  // { uid_t|sys||getuid_with_euid(void); }\n\tSYS_GETEUID              = 25  // { uid_t|sys||geteuid(void); }\n\tSYS_PTRACE               = 26  // { int|sys||ptrace(int req, pid_t pid, void *addr, int data); }\n\tSYS_RECVMSG              = 27  // { ssize_t|sys||recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG              = 28  // { ssize_t|sys||sendmsg(int s, const struct msghdr *msg, int flags); }\n\tSYS_RECVFROM             = 29  // { ssize_t|sys||recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }\n\tSYS_ACCEPT               = 30  // { int|sys||accept(int s, struct sockaddr *name, socklen_t *anamelen); }\n\tSYS_GETPEERNAME          = 31  // { int|sys||getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_GETSOCKNAME          = 32  // { int|sys||getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_ACCESS               = 33  // { int|sys||access(const char *path, int flags); }\n\tSYS_CHFLAGS              = 34  // { int|sys||chflags(const char *path, u_long flags); }\n\tSYS_FCHFLAGS             = 35  // { int|sys||fchflags(int fd, u_long flags); }\n\tSYS_SYNC                 = 36  // { void|sys||sync(void); }\n\tSYS_KILL                 = 37  // { int|sys||kill(pid_t pid, int signum); }\n\tSYS_GETPPID              = 39  // { pid_t|sys||getppid(void); }\n\tSYS_DUP                  = 41  // { int|sys||dup(int fd); }\n\tSYS_PIPE                 = 42  // { int|sys||pipe(void); }\n\tSYS_GETEGID              = 43  // { gid_t|sys||getegid(void); }\n\tSYS_PROFIL               = 44  // { int|sys||profil(char *samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE               = 45  // { int|sys||ktrace(const char *fname, int ops, int facs, pid_t pid); }\n\tSYS_GETGID               = 47  // { gid_t|sys||getgid_with_egid(void); }\n\tSYS___GETLOGIN           = 49  // { int|sys||__getlogin(char *namebuf, size_t namelen); }\n\tSYS___SETLOGIN           = 50  // { int|sys||__setlogin(const char *namebuf); }\n\tSYS_ACCT                 = 51  // { int|sys||acct(const char *path); }\n\tSYS_IOCTL                = 54  // { int|sys||ioctl(int fd, u_long com, ... void *data); }\n\tSYS_REVOKE               = 56  // { int|sys||revoke(const char *path); }\n\tSYS_SYMLINK              = 57  // { int|sys||symlink(const char *path, const char *link); }\n\tSYS_READLINK             = 58  // { ssize_t|sys||readlink(const char *path, char *buf, size_t count); }\n\tSYS_EXECVE               = 59  // { int|sys||execve(const char *path, char * const *argp, char * const *envp); }\n\tSYS_UMASK                = 60  // { mode_t|sys||umask(mode_t newmask); }\n\tSYS_CHROOT               = 61  // { int|sys||chroot(const char *path); }\n\tSYS_VFORK                = 66  // { int|sys||vfork(void); }\n\tSYS_SBRK                 = 69  // { int|sys||sbrk(intptr_t incr); }\n\tSYS_SSTK                 = 70  // { int|sys||sstk(int incr); }\n\tSYS_VADVISE              = 72  // { int|sys||ovadvise(int anom); }\n\tSYS_MUNMAP               = 73  // { int|sys||munmap(void *addr, size_t len); }\n\tSYS_MPROTECT             = 74  // { int|sys||mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE              = 75  // { int|sys||madvise(void *addr, size_t len, int behav); }\n\tSYS_MINCORE              = 78  // { int|sys||mincore(void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS            = 79  // { int|sys||getgroups(int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS            = 80  // { int|sys||setgroups(int gidsetsize, const gid_t *gidset); }\n\tSYS_GETPGRP              = 81  // { int|sys||getpgrp(void); }\n\tSYS_SETPGID              = 82  // { int|sys||setpgid(pid_t pid, pid_t pgid); }\n\tSYS_DUP2                 = 90  // { int|sys||dup2(int from, int to); }\n\tSYS_FCNTL                = 92  // { int|sys||fcntl(int fd, int cmd, ... void *arg); }\n\tSYS_FSYNC                = 95  // { int|sys||fsync(int fd); }\n\tSYS_SETPRIORITY          = 96  // { int|sys||setpriority(int which, id_t who, int prio); }\n\tSYS_CONNECT              = 98  // { int|sys||connect(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_GETPRIORITY          = 100 // { int|sys||getpriority(int which, id_t who); }\n\tSYS_BIND                 = 104 // { int|sys||bind(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_SETSOCKOPT           = 105 // { int|sys||setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }\n\tSYS_LISTEN               = 106 // { int|sys||listen(int s, int backlog); }\n\tSYS_GETSOCKOPT           = 118 // { int|sys||getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }\n\tSYS_READV                = 120 // { ssize_t|sys||readv(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_WRITEV               = 121 // { ssize_t|sys||writev(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_FCHOWN               = 123 // { int|sys||fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS_FCHMOD               = 124 // { int|sys||fchmod(int fd, mode_t mode); }\n\tSYS_SETREUID             = 126 // { int|sys||setreuid(uid_t ruid, uid_t euid); }\n\tSYS_SETREGID             = 127 // { int|sys||setregid(gid_t rgid, gid_t egid); }\n\tSYS_RENAME               = 128 // { int|sys||rename(const char *from, const char *to); }\n\tSYS_FLOCK                = 131 // { int|sys||flock(int fd, int how); }\n\tSYS_MKFIFO               = 132 // { int|sys||mkfifo(const char *path, mode_t mode); }\n\tSYS_SENDTO               = 133 // { ssize_t|sys||sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }\n\tSYS_SHUTDOWN             = 134 // { int|sys||shutdown(int s, int how); }\n\tSYS_SOCKETPAIR           = 135 // { int|sys||socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR                = 136 // { int|sys||mkdir(const char *path, mode_t mode); }\n\tSYS_RMDIR                = 137 // { int|sys||rmdir(const char *path); }\n\tSYS_SETSID               = 147 // { int|sys||setsid(void); }\n\tSYS_SYSARCH              = 165 // { int|sys||sysarch(int op, void *parms); }\n\tSYS_PREAD                = 173 // { ssize_t|sys||pread(int fd, void *buf, size_t nbyte, int PAD, off_t offset); }\n\tSYS_PWRITE               = 174 // { ssize_t|sys||pwrite(int fd, const void *buf, size_t nbyte, int PAD, off_t offset); }\n\tSYS_NTP_ADJTIME          = 176 // { int|sys||ntp_adjtime(struct timex *tp); }\n\tSYS_SETGID               = 181 // { int|sys||setgid(gid_t gid); }\n\tSYS_SETEGID              = 182 // { int|sys||setegid(gid_t egid); }\n\tSYS_SETEUID              = 183 // { int|sys||seteuid(uid_t euid); }\n\tSYS_PATHCONF             = 191 // { long|sys||pathconf(const char *path, int name); }\n\tSYS_FPATHCONF            = 192 // { long|sys||fpathconf(int fd, int name); }\n\tSYS_GETRLIMIT            = 194 // { int|sys||getrlimit(int which, struct rlimit *rlp); }\n\tSYS_SETRLIMIT            = 195 // { int|sys||setrlimit(int which, const struct rlimit *rlp); }\n\tSYS_MMAP                 = 197 // { void *|sys||mmap(void *addr, size_t len, int prot, int flags, int fd, long PAD, off_t pos); }\n\tSYS_LSEEK                = 199 // { off_t|sys||lseek(int fd, int PAD, off_t offset, int whence); }\n\tSYS_TRUNCATE             = 200 // { int|sys||truncate(const char *path, int PAD, off_t length); }\n\tSYS_FTRUNCATE            = 201 // { int|sys||ftruncate(int fd, int PAD, off_t length); }\n\tSYS___SYSCTL             = 202 // { int|sys||__sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, const void *new, size_t newlen); }\n\tSYS_MLOCK                = 203 // { int|sys||mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK              = 204 // { int|sys||munlock(const void *addr, size_t len); }\n\tSYS_UNDELETE             = 205 // { int|sys||undelete(const char *path); }\n\tSYS_GETPGID              = 207 // { pid_t|sys||getpgid(pid_t pid); }\n\tSYS_REBOOT               = 208 // { int|sys||reboot(int opt, char *bootstr); }\n\tSYS_POLL                 = 209 // { int|sys||poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_SEMGET               = 221 // { int|sys||semget(key_t key, int nsems, int semflg); }\n\tSYS_SEMOP                = 222 // { int|sys||semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_SEMCONFIG            = 223 // { int|sys||semconfig(int flag); }\n\tSYS_MSGGET               = 225 // { int|sys||msgget(key_t key, int msgflg); }\n\tSYS_MSGSND               = 226 // { int|sys||msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV               = 227 // { ssize_t|sys||msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT                = 228 // { void *|sys||shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT                = 230 // { int|sys||shmdt(const void *shmaddr); }\n\tSYS_SHMGET               = 231 // { int|sys||shmget(key_t key, size_t size, int shmflg); }\n\tSYS_TIMER_CREATE         = 235 // { int|sys||timer_create(clockid_t clock_id, struct sigevent *evp, timer_t *timerid); }\n\tSYS_TIMER_DELETE         = 236 // { int|sys||timer_delete(timer_t timerid); }\n\tSYS_TIMER_GETOVERRUN     = 239 // { int|sys||timer_getoverrun(timer_t timerid); }\n\tSYS_FDATASYNC            = 241 // { int|sys||fdatasync(int fd); }\n\tSYS_MLOCKALL             = 242 // { int|sys||mlockall(int flags); }\n\tSYS_MUNLOCKALL           = 243 // { int|sys||munlockall(void); }\n\tSYS_SIGQUEUEINFO         = 245 // { int|sys||sigqueueinfo(pid_t pid, const siginfo_t *info); }\n\tSYS_MODCTL               = 246 // { int|sys||modctl(int cmd, void *arg); }\n\tSYS___POSIX_RENAME       = 270 // { int|sys||__posix_rename(const char *from, const char *to); }\n\tSYS_SWAPCTL              = 271 // { int|sys||swapctl(int cmd, void *arg, int misc); }\n\tSYS_MINHERIT             = 273 // { int|sys||minherit(void *addr, size_t len, int inherit); }\n\tSYS_LCHMOD               = 274 // { int|sys||lchmod(const char *path, mode_t mode); }\n\tSYS_LCHOWN               = 275 // { int|sys||lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_MSYNC                = 277 // { int|sys|13|msync(void *addr, size_t len, int flags); }\n\tSYS___POSIX_CHOWN        = 283 // { int|sys||__posix_chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS___POSIX_FCHOWN       = 284 // { int|sys||__posix_fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS___POSIX_LCHOWN       = 285 // { int|sys||__posix_lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_GETSID               = 286 // { pid_t|sys||getsid(pid_t pid); }\n\tSYS___CLONE              = 287 // { pid_t|sys||__clone(int flags, void *stack); }\n\tSYS_FKTRACE              = 288 // { int|sys||fktrace(int fd, int ops, int facs, pid_t pid); }\n\tSYS_PREADV               = 289 // { ssize_t|sys||preadv(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); }\n\tSYS_PWRITEV              = 290 // { ssize_t|sys||pwritev(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); }\n\tSYS___GETCWD             = 296 // { int|sys||__getcwd(char *bufp, size_t length); }\n\tSYS_FCHROOT              = 297 // { int|sys||fchroot(int fd); }\n\tSYS_LCHFLAGS             = 304 // { int|sys||lchflags(const char *path, u_long flags); }\n\tSYS_ISSETUGID            = 305 // { int|sys||issetugid(void); }\n\tSYS_UTRACE               = 306 // { int|sys||utrace(const char *label, void *addr, size_t len); }\n\tSYS_GETCONTEXT           = 307 // { int|sys||getcontext(struct __ucontext *ucp); }\n\tSYS_SETCONTEXT           = 308 // { int|sys||setcontext(const struct __ucontext *ucp); }\n\tSYS__LWP_CREATE          = 309 // { int|sys||_lwp_create(const struct __ucontext *ucp, u_long flags, lwpid_t *new_lwp); }\n\tSYS__LWP_EXIT            = 310 // { int|sys||_lwp_exit(void); }\n\tSYS__LWP_SELF            = 311 // { lwpid_t|sys||_lwp_self(void); }\n\tSYS__LWP_WAIT            = 312 // { int|sys||_lwp_wait(lwpid_t wait_for, lwpid_t *departed); }\n\tSYS__LWP_SUSPEND         = 313 // { int|sys||_lwp_suspend(lwpid_t target); }\n\tSYS__LWP_CONTINUE        = 314 // { int|sys||_lwp_continue(lwpid_t target); }\n\tSYS__LWP_WAKEUP          = 315 // { int|sys||_lwp_wakeup(lwpid_t target); }\n\tSYS__LWP_GETPRIVATE      = 316 // { void *|sys||_lwp_getprivate(void); }\n\tSYS__LWP_SETPRIVATE      = 317 // { void|sys||_lwp_setprivate(void *ptr); }\n\tSYS__LWP_KILL            = 318 // { int|sys||_lwp_kill(lwpid_t target, int signo); }\n\tSYS__LWP_DETACH          = 319 // { int|sys||_lwp_detach(lwpid_t target); }\n\tSYS__LWP_UNPARK          = 321 // { int|sys||_lwp_unpark(lwpid_t target, const void *hint); }\n\tSYS__LWP_UNPARK_ALL      = 322 // { ssize_t|sys||_lwp_unpark_all(const lwpid_t *targets, size_t ntargets, const void *hint); }\n\tSYS__LWP_SETNAME         = 323 // { int|sys||_lwp_setname(lwpid_t target, const char *name); }\n\tSYS__LWP_GETNAME         = 324 // { int|sys||_lwp_getname(lwpid_t target, char *name, size_t len); }\n\tSYS__LWP_CTL             = 325 // { int|sys||_lwp_ctl(int features, struct lwpctl **address); }\n\tSYS___SIGACTION_SIGTRAMP = 340 // { int|sys||__sigaction_sigtramp(int signum, const struct sigaction *nsa, struct sigaction *osa, const void *tramp, int vers); }\n\tSYS_PMC_GET_INFO         = 341 // { int|sys||pmc_get_info(int ctr, int op, void *args); }\n\tSYS_PMC_CONTROL          = 342 // { int|sys||pmc_control(int ctr, int op, void *args); }\n\tSYS_RASCTL               = 343 // { int|sys||rasctl(void *addr, size_t len, int op); }\n\tSYS_KQUEUE               = 344 // { int|sys||kqueue(void); }\n\tSYS__SCHED_SETPARAM      = 346 // { int|sys||_sched_setparam(pid_t pid, lwpid_t lid, int policy, const struct sched_param *params); }\n\tSYS__SCHED_GETPARAM      = 347 // { int|sys||_sched_getparam(pid_t pid, lwpid_t lid, int *policy, struct sched_param *params); }\n\tSYS__SCHED_SETAFFINITY   = 348 // { int|sys||_sched_setaffinity(pid_t pid, lwpid_t lid, size_t size, const cpuset_t *cpuset); }\n\tSYS__SCHED_GETAFFINITY   = 349 // { int|sys||_sched_getaffinity(pid_t pid, lwpid_t lid, size_t size, cpuset_t *cpuset); }\n\tSYS_SCHED_YIELD          = 350 // { int|sys||sched_yield(void); }\n\tSYS_FSYNC_RANGE          = 354 // { int|sys||fsync_range(int fd, int flags, off_t start, off_t length); }\n\tSYS_UUIDGEN              = 355 // { int|sys||uuidgen(struct uuid *store, int count); }\n\tSYS_GETVFSSTAT           = 356 // { int|sys||getvfsstat(struct statvfs *buf, size_t bufsize, int flags); }\n\tSYS_STATVFS1             = 357 // { int|sys||statvfs1(const char *path, struct statvfs *buf, int flags); }\n\tSYS_FSTATVFS1            = 358 // { int|sys||fstatvfs1(int fd, struct statvfs *buf, int flags); }\n\tSYS_EXTATTRCTL           = 360 // { int|sys||extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FILE     = 361 // { int|sys||extattr_set_file(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FILE     = 362 // { ssize_t|sys||extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FILE  = 363 // { int|sys||extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FD       = 364 // { int|sys||extattr_set_fd(int fd, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FD       = 365 // { ssize_t|sys||extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FD    = 366 // { int|sys||extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_LINK     = 367 // { int|sys||extattr_set_link(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_LINK     = 368 // { ssize_t|sys||extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_LINK  = 369 // { int|sys||extattr_delete_link(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_LIST_FD      = 370 // { ssize_t|sys||extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_FILE    = 371 // { ssize_t|sys||extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_LINK    = 372 // { ssize_t|sys||extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_SETXATTR             = 375 // { int|sys||setxattr(const char *path, const char *name, const void *value, size_t size, int flags); }\n\tSYS_LSETXATTR            = 376 // { int|sys||lsetxattr(const char *path, const char *name, const void *value, size_t size, int flags); }\n\tSYS_FSETXATTR            = 377 // { int|sys||fsetxattr(int fd, const char *name, const void *value, size_t size, int flags); }\n\tSYS_GETXATTR             = 378 // { int|sys||getxattr(const char *path, const char *name, void *value, size_t size); }\n\tSYS_LGETXATTR            = 379 // { int|sys||lgetxattr(const char *path, const char *name, void *value, size_t size); }\n\tSYS_FGETXATTR            = 380 // { int|sys||fgetxattr(int fd, const char *name, void *value, size_t size); }\n\tSYS_LISTXATTR            = 381 // { int|sys||listxattr(const char *path, char *list, size_t size); }\n\tSYS_LLISTXATTR           = 382 // { int|sys||llistxattr(const char *path, char *list, size_t size); }\n\tSYS_FLISTXATTR           = 383 // { int|sys||flistxattr(int fd, char *list, size_t size); }\n\tSYS_REMOVEXATTR          = 384 // { int|sys||removexattr(const char *path, const char *name); }\n\tSYS_LREMOVEXATTR         = 385 // { int|sys||lremovexattr(const char *path, const char *name); }\n\tSYS_FREMOVEXATTR         = 386 // { int|sys||fremovexattr(int fd, const char *name); }\n\tSYS_GETDENTS             = 390 // { int|sys|30|getdents(int fd, char *buf, size_t count); }\n\tSYS_SOCKET               = 394 // { int|sys|30|socket(int domain, int type, int protocol); }\n\tSYS_GETFH                = 395 // { int|sys|30|getfh(const char *fname, void *fhp, size_t *fh_size); }\n\tSYS_MOUNT                = 410 // { int|sys|50|mount(const char *type, const char *path, int flags, void *data, size_t data_len); }\n\tSYS_MREMAP               = 411 // { void *|sys||mremap(void *old_address, size_t old_size, void *new_address, size_t new_size, int flags); }\n\tSYS_PSET_CREATE          = 412 // { int|sys||pset_create(psetid_t *psid); }\n\tSYS_PSET_DESTROY         = 413 // { int|sys||pset_destroy(psetid_t psid); }\n\tSYS_PSET_ASSIGN          = 414 // { int|sys||pset_assign(psetid_t psid, cpuid_t cpuid, psetid_t *opsid); }\n\tSYS__PSET_BIND           = 415 // { int|sys||_pset_bind(idtype_t idtype, id_t first_id, id_t second_id, psetid_t psid, psetid_t *opsid); }\n\tSYS_POSIX_FADVISE        = 416 // { int|sys|50|posix_fadvise(int fd, int PAD, off_t offset, off_t len, int advice); }\n\tSYS_SELECT               = 417 // { int|sys|50|select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_GETTIMEOFDAY         = 418 // { int|sys|50|gettimeofday(struct timeval *tp, void *tzp); }\n\tSYS_SETTIMEOFDAY         = 419 // { int|sys|50|settimeofday(const struct timeval *tv, const void *tzp); }\n\tSYS_UTIMES               = 420 // { int|sys|50|utimes(const char *path, const struct timeval *tptr); }\n\tSYS_ADJTIME              = 421 // { int|sys|50|adjtime(const struct timeval *delta, struct timeval *olddelta); }\n\tSYS_FUTIMES              = 423 // { int|sys|50|futimes(int fd, const struct timeval *tptr); }\n\tSYS_LUTIMES              = 424 // { int|sys|50|lutimes(const char *path, const struct timeval *tptr); }\n\tSYS_SETITIMER            = 425 // { int|sys|50|setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_GETITIMER            = 426 // { int|sys|50|getitimer(int which, struct itimerval *itv); }\n\tSYS_CLOCK_GETTIME        = 427 // { int|sys|50|clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME        = 428 // { int|sys|50|clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES         = 429 // { int|sys|50|clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_NANOSLEEP            = 430 // { int|sys|50|nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS___SIGTIMEDWAIT       = 431 // { int|sys|50|__sigtimedwait(const sigset_t *set, siginfo_t *info, struct timespec *timeout); }\n\tSYS__LWP_PARK            = 434 // { int|sys|50|_lwp_park(const struct timespec *ts, lwpid_t unpark, const void *hint, const void *unparkhint); }\n\tSYS_KEVENT               = 435 // { int|sys|50|kevent(int fd, const struct kevent *changelist, size_t nchanges, struct kevent *eventlist, size_t nevents, const struct timespec *timeout); }\n\tSYS_PSELECT              = 436 // { int|sys|50|pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_POLLTS               = 437 // { int|sys|50|pollts(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_STAT                 = 439 // { int|sys|50|stat(const char *path, struct stat *ub); }\n\tSYS_FSTAT                = 440 // { int|sys|50|fstat(int fd, struct stat *sb); }\n\tSYS_LSTAT                = 441 // { int|sys|50|lstat(const char *path, struct stat *ub); }\n\tSYS___SEMCTL             = 442 // { int|sys|50|__semctl(int semid, int semnum, int cmd, ... union __semun *arg); }\n\tSYS_SHMCTL               = 443 // { int|sys|50|shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_MSGCTL               = 444 // { int|sys|50|msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_GETRUSAGE            = 445 // { int|sys|50|getrusage(int who, struct rusage *rusage); }\n\tSYS_TIMER_SETTIME        = 446 // { int|sys|50|timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }\n\tSYS_TIMER_GETTIME        = 447 // { int|sys|50|timer_gettime(timer_t timerid, struct itimerspec *value); }\n\tSYS_NTP_GETTIME          = 448 // { int|sys|50|ntp_gettime(struct ntptimeval *ntvp); }\n\tSYS_WAIT4                = 449 // { int|sys|50|wait4(pid_t pid, int *status, int options, struct rusage *rusage); }\n\tSYS_MKNOD                = 450 // { int|sys|50|mknod(const char *path, mode_t mode, dev_t dev); }\n\tSYS_FHSTAT               = 451 // { int|sys|50|fhstat(const void *fhp, size_t fh_size, struct stat *sb); }\n\tSYS_PIPE2                = 453 // { int|sys||pipe2(int *fildes, int flags); }\n\tSYS_DUP3                 = 454 // { int|sys||dup3(int from, int to, int flags); }\n\tSYS_KQUEUE1              = 455 // { int|sys||kqueue1(int flags); }\n\tSYS_PACCEPT              = 456 // { int|sys||paccept(int s, struct sockaddr *name, socklen_t *anamelen, const sigset_t *mask, int flags); }\n\tSYS_LINKAT               = 457 // { int|sys||linkat(int fd1, const char *name1, int fd2, const char *name2, int flags); }\n\tSYS_RENAMEAT             = 458 // { int|sys||renameat(int fromfd, const char *from, int tofd, const char *to); }\n\tSYS_MKFIFOAT             = 459 // { int|sys||mkfifoat(int fd, const char *path, mode_t mode); }\n\tSYS_MKNODAT              = 460 // { int|sys||mknodat(int fd, const char *path, mode_t mode, uint32_t dev); }\n\tSYS_MKDIRAT              = 461 // { int|sys||mkdirat(int fd, const char *path, mode_t mode); }\n\tSYS_FACCESSAT            = 462 // { int|sys||faccessat(int fd, const char *path, int amode, int flag); }\n\tSYS_FCHMODAT             = 463 // { int|sys||fchmodat(int fd, const char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT             = 464 // { int|sys||fchownat(int fd, const char *path, uid_t owner, gid_t group, int flag); }\n\tSYS_FEXECVE              = 465 // { int|sys||fexecve(int fd, char * const *argp, char * const *envp); }\n\tSYS_FSTATAT              = 466 // { int|sys||fstatat(int fd, const char *path, struct stat *buf, int flag); }\n\tSYS_UTIMENSAT            = 467 // { int|sys||utimensat(int fd, const char *path, const struct timespec *tptr, int flag); }\n\tSYS_OPENAT               = 468 // { int|sys||openat(int fd, const char *path, int oflags, ... mode_t mode); }\n\tSYS_READLINKAT           = 469 // { int|sys||readlinkat(int fd, const char *path, char *buf, size_t bufsize); }\n\tSYS_SYMLINKAT            = 470 // { int|sys||symlinkat(const char *path1, int fd, const char *path2); }\n\tSYS_UNLINKAT             = 471 // { int|sys||unlinkat(int fd, const char *path, int flag); }\n\tSYS_FUTIMENS             = 472 // { int|sys||futimens(int fd, const struct timespec *tptr); }\n\tSYS___QUOTACTL           = 473 // { int|sys||__quotactl(const char *path, struct quotactl_args *args); }\n\tSYS_POSIX_SPAWN          = 474 // { int|sys||posix_spawn(pid_t *pid, const char *path, const struct posix_spawn_file_actions *file_actions, const struct posix_spawnattr *attrp, char *const *argv, char *const *envp); }\n\tSYS_RECVMMSG             = 475 // { int|sys||recvmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags, struct timespec *timeout); }\n\tSYS_SENDMMSG             = 476 // { int|sys||sendmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags); }\n)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go",
    "content": "// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build 386 && openbsd\n\npackage unix\n\n// Deprecated: Use libc wrappers instead of direct syscalls.\nconst (\n\tSYS_EXIT           = 1   // { void sys_exit(int rval); }\n\tSYS_FORK           = 2   // { int sys_fork(void); }\n\tSYS_READ           = 3   // { ssize_t sys_read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE          = 4   // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN           = 5   // { int sys_open(const char *path, int flags, ... mode_t mode); }\n\tSYS_CLOSE          = 6   // { int sys_close(int fd); }\n\tSYS_GETENTROPY     = 7   // { int sys_getentropy(void *buf, size_t nbyte); }\n\tSYS___TFORK        = 8   // { int sys___tfork(const struct __tfork *param, size_t psize); }\n\tSYS_LINK           = 9   // { int sys_link(const char *path, const char *link); }\n\tSYS_UNLINK         = 10  // { int sys_unlink(const char *path); }\n\tSYS_WAIT4          = 11  // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); }\n\tSYS_CHDIR          = 12  // { int sys_chdir(const char *path); }\n\tSYS_FCHDIR         = 13  // { int sys_fchdir(int fd); }\n\tSYS_MKNOD          = 14  // { int sys_mknod(const char *path, mode_t mode, dev_t dev); }\n\tSYS_CHMOD          = 15  // { int sys_chmod(const char *path, mode_t mode); }\n\tSYS_CHOWN          = 16  // { int sys_chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_OBREAK         = 17  // { int sys_obreak(char *nsize); } break\n\tSYS_GETDTABLECOUNT = 18  // { int sys_getdtablecount(void); }\n\tSYS_GETRUSAGE      = 19  // { int sys_getrusage(int who, struct rusage *rusage); }\n\tSYS_GETPID         = 20  // { pid_t sys_getpid(void); }\n\tSYS_MOUNT          = 21  // { int sys_mount(const char *type, const char *path, int flags, void *data); }\n\tSYS_UNMOUNT        = 22  // { int sys_unmount(const char *path, int flags); }\n\tSYS_SETUID         = 23  // { int sys_setuid(uid_t uid); }\n\tSYS_GETUID         = 24  // { uid_t sys_getuid(void); }\n\tSYS_GETEUID        = 25  // { uid_t sys_geteuid(void); }\n\tSYS_PTRACE         = 26  // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG        = 27  // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG        = 28  // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); }\n\tSYS_RECVFROM       = 29  // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }\n\tSYS_ACCEPT         = 30  // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); }\n\tSYS_GETPEERNAME    = 31  // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_GETSOCKNAME    = 32  // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_ACCESS         = 33  // { int sys_access(const char *path, int amode); }\n\tSYS_CHFLAGS        = 34  // { int sys_chflags(const char *path, u_int flags); }\n\tSYS_FCHFLAGS       = 35  // { int sys_fchflags(int fd, u_int flags); }\n\tSYS_SYNC           = 36  // { void sys_sync(void); }\n\tSYS_STAT           = 38  // { int sys_stat(const char *path, struct stat *ub); }\n\tSYS_GETPPID        = 39  // { pid_t sys_getppid(void); }\n\tSYS_LSTAT          = 40  // { int sys_lstat(const char *path, struct stat *ub); }\n\tSYS_DUP            = 41  // { int sys_dup(int fd); }\n\tSYS_FSTATAT        = 42  // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); }\n\tSYS_GETEGID        = 43  // { gid_t sys_getegid(void); }\n\tSYS_PROFIL         = 44  // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE         = 45  // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); }\n\tSYS_SIGACTION      = 46  // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); }\n\tSYS_GETGID         = 47  // { gid_t sys_getgid(void); }\n\tSYS_SIGPROCMASK    = 48  // { int sys_sigprocmask(int how, sigset_t mask); }\n\tSYS_SETLOGIN       = 50  // { int sys_setlogin(const char *namebuf); }\n\tSYS_ACCT           = 51  // { int sys_acct(const char *path); }\n\tSYS_SIGPENDING     = 52  // { int sys_sigpending(void); }\n\tSYS_FSTAT          = 53  // { int sys_fstat(int fd, struct stat *sb); }\n\tSYS_IOCTL          = 54  // { int sys_ioctl(int fd, u_long com, ... void *data); }\n\tSYS_REBOOT         = 55  // { int sys_reboot(int opt); }\n\tSYS_REVOKE         = 56  // { int sys_revoke(const char *path); }\n\tSYS_SYMLINK        = 57  // { int sys_symlink(const char *path, const char *link); }\n\tSYS_READLINK       = 58  // { ssize_t sys_readlink(const char *path, char *buf, size_t count); }\n\tSYS_EXECVE         = 59  // { int sys_execve(const char *path, char * const *argp, char * const *envp); }\n\tSYS_UMASK          = 60  // { mode_t sys_umask(mode_t newmask); }\n\tSYS_CHROOT         = 61  // { int sys_chroot(const char *path); }\n\tSYS_GETFSSTAT      = 62  // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); }\n\tSYS_STATFS         = 63  // { int sys_statfs(const char *path, struct statfs *buf); }\n\tSYS_FSTATFS        = 64  // { int sys_fstatfs(int fd, struct statfs *buf); }\n\tSYS_FHSTATFS       = 65  // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); }\n\tSYS_VFORK          = 66  // { int sys_vfork(void); }\n\tSYS_GETTIMEOFDAY   = 67  // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_SETTIMEOFDAY   = 68  // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); }\n\tSYS_SETITIMER      = 69  // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_GETITIMER      = 70  // { int sys_getitimer(int which, struct itimerval *itv); }\n\tSYS_SELECT         = 71  // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_KEVENT         = 72  // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_MUNMAP         = 73  // { int sys_munmap(void *addr, size_t len); }\n\tSYS_MPROTECT       = 74  // { int sys_mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE        = 75  // { int sys_madvise(void *addr, size_t len, int behav); }\n\tSYS_UTIMES         = 76  // { int sys_utimes(const char *path, const struct timeval *tptr); }\n\tSYS_FUTIMES        = 77  // { int sys_futimes(int fd, const struct timeval *tptr); }\n\tSYS_MINCORE        = 78  // { int sys_mincore(void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS      = 79  // { int sys_getgroups(int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS      = 80  // { int sys_setgroups(int gidsetsize, const gid_t *gidset); }\n\tSYS_GETPGRP        = 81  // { int sys_getpgrp(void); }\n\tSYS_SETPGID        = 82  // { int sys_setpgid(pid_t pid, pid_t pgid); }\n\tSYS_FUTEX          = 83  // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); }\n\tSYS_UTIMENSAT      = 84  // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); }\n\tSYS_FUTIMENS       = 85  // { int sys_futimens(int fd, const struct timespec *times); }\n\tSYS_KBIND          = 86  // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); }\n\tSYS_CLOCK_GETTIME  = 87  // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME  = 88  // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES   = 89  // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_DUP2           = 90  // { int sys_dup2(int from, int to); }\n\tSYS_NANOSLEEP      = 91  // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_FCNTL          = 92  // { int sys_fcntl(int fd, int cmd, ... void *arg); }\n\tSYS_ACCEPT4        = 93  // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); }\n\tSYS___THRSLEEP     = 94  // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); }\n\tSYS_FSYNC          = 95  // { int sys_fsync(int fd); }\n\tSYS_SETPRIORITY    = 96  // { int sys_setpriority(int which, id_t who, int prio); }\n\tSYS_SOCKET         = 97  // { int sys_socket(int domain, int type, int protocol); }\n\tSYS_CONNECT        = 98  // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_GETDENTS       = 99  // { int sys_getdents(int fd, void *buf, size_t buflen); }\n\tSYS_GETPRIORITY    = 100 // { int sys_getpriority(int which, id_t who); }\n\tSYS_PIPE2          = 101 // { int sys_pipe2(int *fdp, int flags); }\n\tSYS_DUP3           = 102 // { int sys_dup3(int from, int to, int flags); }\n\tSYS_SIGRETURN      = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); }\n\tSYS_BIND           = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_SETSOCKOPT     = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }\n\tSYS_LISTEN         = 106 // { int sys_listen(int s, int backlog); }\n\tSYS_CHFLAGSAT      = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); }\n\tSYS_PLEDGE         = 108 // { int sys_pledge(const char *promises, const char *execpromises); }\n\tSYS_PPOLL          = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_PSELECT        = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_SIGSUSPEND     = 111 // { int sys_sigsuspend(int mask); }\n\tSYS_SENDSYSLOG     = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); }\n\tSYS_UNVEIL         = 114 // { int sys_unveil(const char *path, const char *permissions); }\n\tSYS_GETSOCKOPT     = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }\n\tSYS_THRKILL        = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); }\n\tSYS_READV          = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_WRITEV         = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_KILL           = 122 // { int sys_kill(int pid, int signum); }\n\tSYS_FCHOWN         = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS_FCHMOD         = 124 // { int sys_fchmod(int fd, mode_t mode); }\n\tSYS_SETREUID       = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); }\n\tSYS_SETREGID       = 127 // { int sys_setregid(gid_t rgid, gid_t egid); }\n\tSYS_RENAME         = 128 // { int sys_rename(const char *from, const char *to); }\n\tSYS_FLOCK          = 131 // { int sys_flock(int fd, int how); }\n\tSYS_MKFIFO         = 132 // { int sys_mkfifo(const char *path, mode_t mode); }\n\tSYS_SENDTO         = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }\n\tSYS_SHUTDOWN       = 134 // { int sys_shutdown(int s, int how); }\n\tSYS_SOCKETPAIR     = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR          = 136 // { int sys_mkdir(const char *path, mode_t mode); }\n\tSYS_RMDIR          = 137 // { int sys_rmdir(const char *path); }\n\tSYS_ADJTIME        = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); }\n\tSYS_GETLOGIN_R     = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); }\n\tSYS_SETSID         = 147 // { int sys_setsid(void); }\n\tSYS_QUOTACTL       = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); }\n\tSYS_NFSSVC         = 155 // { int sys_nfssvc(int flag, void *argp); }\n\tSYS_GETFH          = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); }\n\tSYS_SYSARCH        = 165 // { int sys_sysarch(int op, void *parms); }\n\tSYS_PREAD          = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_PWRITE         = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_SETGID         = 181 // { int sys_setgid(gid_t gid); }\n\tSYS_SETEGID        = 182 // { int sys_setegid(gid_t egid); }\n\tSYS_SETEUID        = 183 // { int sys_seteuid(uid_t euid); }\n\tSYS_PATHCONF       = 191 // { long sys_pathconf(const char *path, int name); }\n\tSYS_FPATHCONF      = 192 // { long sys_fpathconf(int fd, int name); }\n\tSYS_SWAPCTL        = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); }\n\tSYS_GETRLIMIT      = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); }\n\tSYS_SETRLIMIT      = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); }\n\tSYS_MMAP           = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_LSEEK          = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); }\n\tSYS_TRUNCATE       = 200 // { int sys_truncate(const char *path, int pad, off_t length); }\n\tSYS_FTRUNCATE      = 201 // { int sys_ftruncate(int fd, int pad, off_t length); }\n\tSYS_SYSCTL         = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }\n\tSYS_MLOCK          = 203 // { int sys_mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK        = 204 // { int sys_munlock(const void *addr, size_t len); }\n\tSYS_GETPGID        = 207 // { pid_t sys_getpgid(pid_t pid); }\n\tSYS_UTRACE         = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); }\n\tSYS_SEMGET         = 221 // { int sys_semget(key_t key, int nsems, int semflg); }\n\tSYS_MSGGET         = 225 // { int sys_msgget(key_t key, int msgflg); }\n\tSYS_MSGSND         = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV         = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT          = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT          = 230 // { int sys_shmdt(const void *shmaddr); }\n\tSYS_MINHERIT       = 250 // { int sys_minherit(void *addr, size_t len, int inherit); }\n\tSYS_POLL           = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_ISSETUGID      = 253 // { int sys_issetugid(void); }\n\tSYS_LCHOWN         = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_GETSID         = 255 // { pid_t sys_getsid(pid_t pid); }\n\tSYS_MSYNC          = 256 // { int sys_msync(void *addr, size_t len, int flags); }\n\tSYS_PIPE           = 263 // { int sys_pipe(int *fdp); }\n\tSYS_FHOPEN         = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); }\n\tSYS_PREADV         = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_PWRITEV        = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_KQUEUE         = 269 // { int sys_kqueue(void); }\n\tSYS_MLOCKALL       = 271 // { int sys_mlockall(int flags); }\n\tSYS_MUNLOCKALL     = 272 // { int sys_munlockall(void); }\n\tSYS_GETRESUID      = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_SETRESUID      = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_GETRESGID      = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_SETRESGID      = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_MQUERY         = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_CLOSEFROM      = 287 // { int sys_closefrom(int fd); }\n\tSYS_SIGALTSTACK    = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); }\n\tSYS_SHMGET         = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); }\n\tSYS_SEMOP          = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_FHSTAT         = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); }\n\tSYS___SEMCTL       = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_SHMCTL         = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_MSGCTL         = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_SCHED_YIELD    = 298 // { int sys_sched_yield(void); }\n\tSYS_GETTHRID       = 299 // { pid_t sys_getthrid(void); }\n\tSYS___THRWAKEUP    = 301 // { int sys___thrwakeup(const volatile void *ident, int n); }\n\tSYS___THREXIT      = 302 // { void sys___threxit(pid_t *notdead); }\n\tSYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); }\n\tSYS___GETCWD       = 304 // { int sys___getcwd(char *buf, size_t len); }\n\tSYS_ADJFREQ        = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); }\n\tSYS_SETRTABLE      = 310 // { int sys_setrtable(int rtableid); }\n\tSYS_GETRTABLE      = 311 // { int sys_getrtable(void); }\n\tSYS_FACCESSAT      = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); }\n\tSYS_FCHMODAT       = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT       = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); }\n\tSYS_LINKAT         = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); }\n\tSYS_MKDIRAT        = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); }\n\tSYS_MKFIFOAT       = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); }\n\tSYS_MKNODAT        = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); }\n\tSYS_OPENAT         = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); }\n\tSYS_READLINKAT     = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); }\n\tSYS_RENAMEAT       = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); }\n\tSYS_SYMLINKAT      = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); }\n\tSYS_UNLINKAT       = 325 // { int sys_unlinkat(int fd, const char *path, int flag); }\n\tSYS___SET_TCB      = 329 // { void sys___set_tcb(void *tcb); }\n\tSYS___GET_TCB      = 330 // { void *sys___get_tcb(void); }\n)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go",
    "content": "// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && openbsd\n\npackage unix\n\n// Deprecated: Use libc wrappers instead of direct syscalls.\nconst (\n\tSYS_EXIT           = 1   // { void sys_exit(int rval); }\n\tSYS_FORK           = 2   // { int sys_fork(void); }\n\tSYS_READ           = 3   // { ssize_t sys_read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE          = 4   // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN           = 5   // { int sys_open(const char *path, int flags, ... mode_t mode); }\n\tSYS_CLOSE          = 6   // { int sys_close(int fd); }\n\tSYS_GETENTROPY     = 7   // { int sys_getentropy(void *buf, size_t nbyte); }\n\tSYS___TFORK        = 8   // { int sys___tfork(const struct __tfork *param, size_t psize); }\n\tSYS_LINK           = 9   // { int sys_link(const char *path, const char *link); }\n\tSYS_UNLINK         = 10  // { int sys_unlink(const char *path); }\n\tSYS_WAIT4          = 11  // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); }\n\tSYS_CHDIR          = 12  // { int sys_chdir(const char *path); }\n\tSYS_FCHDIR         = 13  // { int sys_fchdir(int fd); }\n\tSYS_MKNOD          = 14  // { int sys_mknod(const char *path, mode_t mode, dev_t dev); }\n\tSYS_CHMOD          = 15  // { int sys_chmod(const char *path, mode_t mode); }\n\tSYS_CHOWN          = 16  // { int sys_chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_OBREAK         = 17  // { int sys_obreak(char *nsize); } break\n\tSYS_GETDTABLECOUNT = 18  // { int sys_getdtablecount(void); }\n\tSYS_GETRUSAGE      = 19  // { int sys_getrusage(int who, struct rusage *rusage); }\n\tSYS_GETPID         = 20  // { pid_t sys_getpid(void); }\n\tSYS_MOUNT          = 21  // { int sys_mount(const char *type, const char *path, int flags, void *data); }\n\tSYS_UNMOUNT        = 22  // { int sys_unmount(const char *path, int flags); }\n\tSYS_SETUID         = 23  // { int sys_setuid(uid_t uid); }\n\tSYS_GETUID         = 24  // { uid_t sys_getuid(void); }\n\tSYS_GETEUID        = 25  // { uid_t sys_geteuid(void); }\n\tSYS_PTRACE         = 26  // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG        = 27  // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG        = 28  // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); }\n\tSYS_RECVFROM       = 29  // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }\n\tSYS_ACCEPT         = 30  // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); }\n\tSYS_GETPEERNAME    = 31  // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_GETSOCKNAME    = 32  // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_ACCESS         = 33  // { int sys_access(const char *path, int amode); }\n\tSYS_CHFLAGS        = 34  // { int sys_chflags(const char *path, u_int flags); }\n\tSYS_FCHFLAGS       = 35  // { int sys_fchflags(int fd, u_int flags); }\n\tSYS_SYNC           = 36  // { void sys_sync(void); }\n\tSYS_STAT           = 38  // { int sys_stat(const char *path, struct stat *ub); }\n\tSYS_GETPPID        = 39  // { pid_t sys_getppid(void); }\n\tSYS_LSTAT          = 40  // { int sys_lstat(const char *path, struct stat *ub); }\n\tSYS_DUP            = 41  // { int sys_dup(int fd); }\n\tSYS_FSTATAT        = 42  // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); }\n\tSYS_GETEGID        = 43  // { gid_t sys_getegid(void); }\n\tSYS_PROFIL         = 44  // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE         = 45  // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); }\n\tSYS_SIGACTION      = 46  // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); }\n\tSYS_GETGID         = 47  // { gid_t sys_getgid(void); }\n\tSYS_SIGPROCMASK    = 48  // { int sys_sigprocmask(int how, sigset_t mask); }\n\tSYS_SETLOGIN       = 50  // { int sys_setlogin(const char *namebuf); }\n\tSYS_ACCT           = 51  // { int sys_acct(const char *path); }\n\tSYS_SIGPENDING     = 52  // { int sys_sigpending(void); }\n\tSYS_FSTAT          = 53  // { int sys_fstat(int fd, struct stat *sb); }\n\tSYS_IOCTL          = 54  // { int sys_ioctl(int fd, u_long com, ... void *data); }\n\tSYS_REBOOT         = 55  // { int sys_reboot(int opt); }\n\tSYS_REVOKE         = 56  // { int sys_revoke(const char *path); }\n\tSYS_SYMLINK        = 57  // { int sys_symlink(const char *path, const char *link); }\n\tSYS_READLINK       = 58  // { ssize_t sys_readlink(const char *path, char *buf, size_t count); }\n\tSYS_EXECVE         = 59  // { int sys_execve(const char *path, char * const *argp, char * const *envp); }\n\tSYS_UMASK          = 60  // { mode_t sys_umask(mode_t newmask); }\n\tSYS_CHROOT         = 61  // { int sys_chroot(const char *path); }\n\tSYS_GETFSSTAT      = 62  // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); }\n\tSYS_STATFS         = 63  // { int sys_statfs(const char *path, struct statfs *buf); }\n\tSYS_FSTATFS        = 64  // { int sys_fstatfs(int fd, struct statfs *buf); }\n\tSYS_FHSTATFS       = 65  // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); }\n\tSYS_VFORK          = 66  // { int sys_vfork(void); }\n\tSYS_GETTIMEOFDAY   = 67  // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_SETTIMEOFDAY   = 68  // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); }\n\tSYS_SETITIMER      = 69  // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_GETITIMER      = 70  // { int sys_getitimer(int which, struct itimerval *itv); }\n\tSYS_SELECT         = 71  // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_KEVENT         = 72  // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_MUNMAP         = 73  // { int sys_munmap(void *addr, size_t len); }\n\tSYS_MPROTECT       = 74  // { int sys_mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE        = 75  // { int sys_madvise(void *addr, size_t len, int behav); }\n\tSYS_UTIMES         = 76  // { int sys_utimes(const char *path, const struct timeval *tptr); }\n\tSYS_FUTIMES        = 77  // { int sys_futimes(int fd, const struct timeval *tptr); }\n\tSYS_MINCORE        = 78  // { int sys_mincore(void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS      = 79  // { int sys_getgroups(int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS      = 80  // { int sys_setgroups(int gidsetsize, const gid_t *gidset); }\n\tSYS_GETPGRP        = 81  // { int sys_getpgrp(void); }\n\tSYS_SETPGID        = 82  // { int sys_setpgid(pid_t pid, pid_t pgid); }\n\tSYS_FUTEX          = 83  // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); }\n\tSYS_UTIMENSAT      = 84  // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); }\n\tSYS_FUTIMENS       = 85  // { int sys_futimens(int fd, const struct timespec *times); }\n\tSYS_KBIND          = 86  // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); }\n\tSYS_CLOCK_GETTIME  = 87  // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME  = 88  // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES   = 89  // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_DUP2           = 90  // { int sys_dup2(int from, int to); }\n\tSYS_NANOSLEEP      = 91  // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_FCNTL          = 92  // { int sys_fcntl(int fd, int cmd, ... void *arg); }\n\tSYS_ACCEPT4        = 93  // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); }\n\tSYS___THRSLEEP     = 94  // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); }\n\tSYS_FSYNC          = 95  // { int sys_fsync(int fd); }\n\tSYS_SETPRIORITY    = 96  // { int sys_setpriority(int which, id_t who, int prio); }\n\tSYS_SOCKET         = 97  // { int sys_socket(int domain, int type, int protocol); }\n\tSYS_CONNECT        = 98  // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_GETDENTS       = 99  // { int sys_getdents(int fd, void *buf, size_t buflen); }\n\tSYS_GETPRIORITY    = 100 // { int sys_getpriority(int which, id_t who); }\n\tSYS_PIPE2          = 101 // { int sys_pipe2(int *fdp, int flags); }\n\tSYS_DUP3           = 102 // { int sys_dup3(int from, int to, int flags); }\n\tSYS_SIGRETURN      = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); }\n\tSYS_BIND           = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_SETSOCKOPT     = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }\n\tSYS_LISTEN         = 106 // { int sys_listen(int s, int backlog); }\n\tSYS_CHFLAGSAT      = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); }\n\tSYS_PLEDGE         = 108 // { int sys_pledge(const char *promises, const char *execpromises); }\n\tSYS_PPOLL          = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_PSELECT        = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_SIGSUSPEND     = 111 // { int sys_sigsuspend(int mask); }\n\tSYS_SENDSYSLOG     = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); }\n\tSYS_UNVEIL         = 114 // { int sys_unveil(const char *path, const char *permissions); }\n\tSYS_GETSOCKOPT     = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }\n\tSYS_THRKILL        = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); }\n\tSYS_READV          = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_WRITEV         = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_KILL           = 122 // { int sys_kill(int pid, int signum); }\n\tSYS_FCHOWN         = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS_FCHMOD         = 124 // { int sys_fchmod(int fd, mode_t mode); }\n\tSYS_SETREUID       = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); }\n\tSYS_SETREGID       = 127 // { int sys_setregid(gid_t rgid, gid_t egid); }\n\tSYS_RENAME         = 128 // { int sys_rename(const char *from, const char *to); }\n\tSYS_FLOCK          = 131 // { int sys_flock(int fd, int how); }\n\tSYS_MKFIFO         = 132 // { int sys_mkfifo(const char *path, mode_t mode); }\n\tSYS_SENDTO         = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }\n\tSYS_SHUTDOWN       = 134 // { int sys_shutdown(int s, int how); }\n\tSYS_SOCKETPAIR     = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR          = 136 // { int sys_mkdir(const char *path, mode_t mode); }\n\tSYS_RMDIR          = 137 // { int sys_rmdir(const char *path); }\n\tSYS_ADJTIME        = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); }\n\tSYS_GETLOGIN_R     = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); }\n\tSYS_SETSID         = 147 // { int sys_setsid(void); }\n\tSYS_QUOTACTL       = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); }\n\tSYS_NFSSVC         = 155 // { int sys_nfssvc(int flag, void *argp); }\n\tSYS_GETFH          = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); }\n\tSYS_SYSARCH        = 165 // { int sys_sysarch(int op, void *parms); }\n\tSYS_PREAD          = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_PWRITE         = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_SETGID         = 181 // { int sys_setgid(gid_t gid); }\n\tSYS_SETEGID        = 182 // { int sys_setegid(gid_t egid); }\n\tSYS_SETEUID        = 183 // { int sys_seteuid(uid_t euid); }\n\tSYS_PATHCONF       = 191 // { long sys_pathconf(const char *path, int name); }\n\tSYS_FPATHCONF      = 192 // { long sys_fpathconf(int fd, int name); }\n\tSYS_SWAPCTL        = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); }\n\tSYS_GETRLIMIT      = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); }\n\tSYS_SETRLIMIT      = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); }\n\tSYS_MMAP           = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_LSEEK          = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); }\n\tSYS_TRUNCATE       = 200 // { int sys_truncate(const char *path, int pad, off_t length); }\n\tSYS_FTRUNCATE      = 201 // { int sys_ftruncate(int fd, int pad, off_t length); }\n\tSYS_SYSCTL         = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }\n\tSYS_MLOCK          = 203 // { int sys_mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK        = 204 // { int sys_munlock(const void *addr, size_t len); }\n\tSYS_GETPGID        = 207 // { pid_t sys_getpgid(pid_t pid); }\n\tSYS_UTRACE         = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); }\n\tSYS_SEMGET         = 221 // { int sys_semget(key_t key, int nsems, int semflg); }\n\tSYS_MSGGET         = 225 // { int sys_msgget(key_t key, int msgflg); }\n\tSYS_MSGSND         = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV         = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT          = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT          = 230 // { int sys_shmdt(const void *shmaddr); }\n\tSYS_MINHERIT       = 250 // { int sys_minherit(void *addr, size_t len, int inherit); }\n\tSYS_POLL           = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_ISSETUGID      = 253 // { int sys_issetugid(void); }\n\tSYS_LCHOWN         = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_GETSID         = 255 // { pid_t sys_getsid(pid_t pid); }\n\tSYS_MSYNC          = 256 // { int sys_msync(void *addr, size_t len, int flags); }\n\tSYS_PIPE           = 263 // { int sys_pipe(int *fdp); }\n\tSYS_FHOPEN         = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); }\n\tSYS_PREADV         = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_PWRITEV        = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_KQUEUE         = 269 // { int sys_kqueue(void); }\n\tSYS_MLOCKALL       = 271 // { int sys_mlockall(int flags); }\n\tSYS_MUNLOCKALL     = 272 // { int sys_munlockall(void); }\n\tSYS_GETRESUID      = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_SETRESUID      = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_GETRESGID      = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_SETRESGID      = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_MQUERY         = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_CLOSEFROM      = 287 // { int sys_closefrom(int fd); }\n\tSYS_SIGALTSTACK    = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); }\n\tSYS_SHMGET         = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); }\n\tSYS_SEMOP          = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_FHSTAT         = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); }\n\tSYS___SEMCTL       = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_SHMCTL         = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_MSGCTL         = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_SCHED_YIELD    = 298 // { int sys_sched_yield(void); }\n\tSYS_GETTHRID       = 299 // { pid_t sys_getthrid(void); }\n\tSYS___THRWAKEUP    = 301 // { int sys___thrwakeup(const volatile void *ident, int n); }\n\tSYS___THREXIT      = 302 // { void sys___threxit(pid_t *notdead); }\n\tSYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); }\n\tSYS___GETCWD       = 304 // { int sys___getcwd(char *buf, size_t len); }\n\tSYS_ADJFREQ        = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); }\n\tSYS_SETRTABLE      = 310 // { int sys_setrtable(int rtableid); }\n\tSYS_GETRTABLE      = 311 // { int sys_getrtable(void); }\n\tSYS_FACCESSAT      = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); }\n\tSYS_FCHMODAT       = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT       = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); }\n\tSYS_LINKAT         = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); }\n\tSYS_MKDIRAT        = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); }\n\tSYS_MKFIFOAT       = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); }\n\tSYS_MKNODAT        = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); }\n\tSYS_OPENAT         = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); }\n\tSYS_READLINKAT     = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); }\n\tSYS_RENAMEAT       = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); }\n\tSYS_SYMLINKAT      = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); }\n\tSYS_UNLINKAT       = 325 // { int sys_unlinkat(int fd, const char *path, int flag); }\n\tSYS___SET_TCB      = 329 // { void sys___set_tcb(void *tcb); }\n\tSYS___GET_TCB      = 330 // { void *sys___get_tcb(void); }\n)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go",
    "content": "// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm && openbsd\n\npackage unix\n\n// Deprecated: Use libc wrappers instead of direct syscalls.\nconst (\n\tSYS_EXIT           = 1   // { void sys_exit(int rval); }\n\tSYS_FORK           = 2   // { int sys_fork(void); }\n\tSYS_READ           = 3   // { ssize_t sys_read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE          = 4   // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN           = 5   // { int sys_open(const char *path, int flags, ... mode_t mode); }\n\tSYS_CLOSE          = 6   // { int sys_close(int fd); }\n\tSYS_GETENTROPY     = 7   // { int sys_getentropy(void *buf, size_t nbyte); }\n\tSYS___TFORK        = 8   // { int sys___tfork(const struct __tfork *param, size_t psize); }\n\tSYS_LINK           = 9   // { int sys_link(const char *path, const char *link); }\n\tSYS_UNLINK         = 10  // { int sys_unlink(const char *path); }\n\tSYS_WAIT4          = 11  // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); }\n\tSYS_CHDIR          = 12  // { int sys_chdir(const char *path); }\n\tSYS_FCHDIR         = 13  // { int sys_fchdir(int fd); }\n\tSYS_MKNOD          = 14  // { int sys_mknod(const char *path, mode_t mode, dev_t dev); }\n\tSYS_CHMOD          = 15  // { int sys_chmod(const char *path, mode_t mode); }\n\tSYS_CHOWN          = 16  // { int sys_chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_OBREAK         = 17  // { int sys_obreak(char *nsize); } break\n\tSYS_GETDTABLECOUNT = 18  // { int sys_getdtablecount(void); }\n\tSYS_GETRUSAGE      = 19  // { int sys_getrusage(int who, struct rusage *rusage); }\n\tSYS_GETPID         = 20  // { pid_t sys_getpid(void); }\n\tSYS_MOUNT          = 21  // { int sys_mount(const char *type, const char *path, int flags, void *data); }\n\tSYS_UNMOUNT        = 22  // { int sys_unmount(const char *path, int flags); }\n\tSYS_SETUID         = 23  // { int sys_setuid(uid_t uid); }\n\tSYS_GETUID         = 24  // { uid_t sys_getuid(void); }\n\tSYS_GETEUID        = 25  // { uid_t sys_geteuid(void); }\n\tSYS_PTRACE         = 26  // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG        = 27  // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG        = 28  // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); }\n\tSYS_RECVFROM       = 29  // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }\n\tSYS_ACCEPT         = 30  // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); }\n\tSYS_GETPEERNAME    = 31  // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_GETSOCKNAME    = 32  // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_ACCESS         = 33  // { int sys_access(const char *path, int amode); }\n\tSYS_CHFLAGS        = 34  // { int sys_chflags(const char *path, u_int flags); }\n\tSYS_FCHFLAGS       = 35  // { int sys_fchflags(int fd, u_int flags); }\n\tSYS_SYNC           = 36  // { void sys_sync(void); }\n\tSYS_STAT           = 38  // { int sys_stat(const char *path, struct stat *ub); }\n\tSYS_GETPPID        = 39  // { pid_t sys_getppid(void); }\n\tSYS_LSTAT          = 40  // { int sys_lstat(const char *path, struct stat *ub); }\n\tSYS_DUP            = 41  // { int sys_dup(int fd); }\n\tSYS_FSTATAT        = 42  // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); }\n\tSYS_GETEGID        = 43  // { gid_t sys_getegid(void); }\n\tSYS_PROFIL         = 44  // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE         = 45  // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); }\n\tSYS_SIGACTION      = 46  // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); }\n\tSYS_GETGID         = 47  // { gid_t sys_getgid(void); }\n\tSYS_SIGPROCMASK    = 48  // { int sys_sigprocmask(int how, sigset_t mask); }\n\tSYS_SETLOGIN       = 50  // { int sys_setlogin(const char *namebuf); }\n\tSYS_ACCT           = 51  // { int sys_acct(const char *path); }\n\tSYS_SIGPENDING     = 52  // { int sys_sigpending(void); }\n\tSYS_FSTAT          = 53  // { int sys_fstat(int fd, struct stat *sb); }\n\tSYS_IOCTL          = 54  // { int sys_ioctl(int fd, u_long com, ... void *data); }\n\tSYS_REBOOT         = 55  // { int sys_reboot(int opt); }\n\tSYS_REVOKE         = 56  // { int sys_revoke(const char *path); }\n\tSYS_SYMLINK        = 57  // { int sys_symlink(const char *path, const char *link); }\n\tSYS_READLINK       = 58  // { ssize_t sys_readlink(const char *path, char *buf, size_t count); }\n\tSYS_EXECVE         = 59  // { int sys_execve(const char *path, char * const *argp, char * const *envp); }\n\tSYS_UMASK          = 60  // { mode_t sys_umask(mode_t newmask); }\n\tSYS_CHROOT         = 61  // { int sys_chroot(const char *path); }\n\tSYS_GETFSSTAT      = 62  // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); }\n\tSYS_STATFS         = 63  // { int sys_statfs(const char *path, struct statfs *buf); }\n\tSYS_FSTATFS        = 64  // { int sys_fstatfs(int fd, struct statfs *buf); }\n\tSYS_FHSTATFS       = 65  // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); }\n\tSYS_VFORK          = 66  // { int sys_vfork(void); }\n\tSYS_GETTIMEOFDAY   = 67  // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_SETTIMEOFDAY   = 68  // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); }\n\tSYS_SETITIMER      = 69  // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_GETITIMER      = 70  // { int sys_getitimer(int which, struct itimerval *itv); }\n\tSYS_SELECT         = 71  // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_KEVENT         = 72  // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_MUNMAP         = 73  // { int sys_munmap(void *addr, size_t len); }\n\tSYS_MPROTECT       = 74  // { int sys_mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE        = 75  // { int sys_madvise(void *addr, size_t len, int behav); }\n\tSYS_UTIMES         = 76  // { int sys_utimes(const char *path, const struct timeval *tptr); }\n\tSYS_FUTIMES        = 77  // { int sys_futimes(int fd, const struct timeval *tptr); }\n\tSYS_MINCORE        = 78  // { int sys_mincore(void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS      = 79  // { int sys_getgroups(int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS      = 80  // { int sys_setgroups(int gidsetsize, const gid_t *gidset); }\n\tSYS_GETPGRP        = 81  // { int sys_getpgrp(void); }\n\tSYS_SETPGID        = 82  // { int sys_setpgid(pid_t pid, pid_t pgid); }\n\tSYS_FUTEX          = 83  // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); }\n\tSYS_UTIMENSAT      = 84  // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); }\n\tSYS_FUTIMENS       = 85  // { int sys_futimens(int fd, const struct timespec *times); }\n\tSYS_KBIND          = 86  // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); }\n\tSYS_CLOCK_GETTIME  = 87  // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME  = 88  // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES   = 89  // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_DUP2           = 90  // { int sys_dup2(int from, int to); }\n\tSYS_NANOSLEEP      = 91  // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_FCNTL          = 92  // { int sys_fcntl(int fd, int cmd, ... void *arg); }\n\tSYS_ACCEPT4        = 93  // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); }\n\tSYS___THRSLEEP     = 94  // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); }\n\tSYS_FSYNC          = 95  // { int sys_fsync(int fd); }\n\tSYS_SETPRIORITY    = 96  // { int sys_setpriority(int which, id_t who, int prio); }\n\tSYS_SOCKET         = 97  // { int sys_socket(int domain, int type, int protocol); }\n\tSYS_CONNECT        = 98  // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_GETDENTS       = 99  // { int sys_getdents(int fd, void *buf, size_t buflen); }\n\tSYS_GETPRIORITY    = 100 // { int sys_getpriority(int which, id_t who); }\n\tSYS_PIPE2          = 101 // { int sys_pipe2(int *fdp, int flags); }\n\tSYS_DUP3           = 102 // { int sys_dup3(int from, int to, int flags); }\n\tSYS_SIGRETURN      = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); }\n\tSYS_BIND           = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_SETSOCKOPT     = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }\n\tSYS_LISTEN         = 106 // { int sys_listen(int s, int backlog); }\n\tSYS_CHFLAGSAT      = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); }\n\tSYS_PLEDGE         = 108 // { int sys_pledge(const char *promises, const char *execpromises); }\n\tSYS_PPOLL          = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_PSELECT        = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_SIGSUSPEND     = 111 // { int sys_sigsuspend(int mask); }\n\tSYS_SENDSYSLOG     = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); }\n\tSYS_UNVEIL         = 114 // { int sys_unveil(const char *path, const char *permissions); }\n\tSYS_GETSOCKOPT     = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }\n\tSYS_THRKILL        = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); }\n\tSYS_READV          = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_WRITEV         = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_KILL           = 122 // { int sys_kill(int pid, int signum); }\n\tSYS_FCHOWN         = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS_FCHMOD         = 124 // { int sys_fchmod(int fd, mode_t mode); }\n\tSYS_SETREUID       = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); }\n\tSYS_SETREGID       = 127 // { int sys_setregid(gid_t rgid, gid_t egid); }\n\tSYS_RENAME         = 128 // { int sys_rename(const char *from, const char *to); }\n\tSYS_FLOCK          = 131 // { int sys_flock(int fd, int how); }\n\tSYS_MKFIFO         = 132 // { int sys_mkfifo(const char *path, mode_t mode); }\n\tSYS_SENDTO         = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }\n\tSYS_SHUTDOWN       = 134 // { int sys_shutdown(int s, int how); }\n\tSYS_SOCKETPAIR     = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR          = 136 // { int sys_mkdir(const char *path, mode_t mode); }\n\tSYS_RMDIR          = 137 // { int sys_rmdir(const char *path); }\n\tSYS_ADJTIME        = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); }\n\tSYS_GETLOGIN_R     = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); }\n\tSYS_SETSID         = 147 // { int sys_setsid(void); }\n\tSYS_QUOTACTL       = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); }\n\tSYS_NFSSVC         = 155 // { int sys_nfssvc(int flag, void *argp); }\n\tSYS_GETFH          = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); }\n\tSYS_SYSARCH        = 165 // { int sys_sysarch(int op, void *parms); }\n\tSYS_PREAD          = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_PWRITE         = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_SETGID         = 181 // { int sys_setgid(gid_t gid); }\n\tSYS_SETEGID        = 182 // { int sys_setegid(gid_t egid); }\n\tSYS_SETEUID        = 183 // { int sys_seteuid(uid_t euid); }\n\tSYS_PATHCONF       = 191 // { long sys_pathconf(const char *path, int name); }\n\tSYS_FPATHCONF      = 192 // { long sys_fpathconf(int fd, int name); }\n\tSYS_SWAPCTL        = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); }\n\tSYS_GETRLIMIT      = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); }\n\tSYS_SETRLIMIT      = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); }\n\tSYS_MMAP           = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_LSEEK          = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); }\n\tSYS_TRUNCATE       = 200 // { int sys_truncate(const char *path, int pad, off_t length); }\n\tSYS_FTRUNCATE      = 201 // { int sys_ftruncate(int fd, int pad, off_t length); }\n\tSYS_SYSCTL         = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }\n\tSYS_MLOCK          = 203 // { int sys_mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK        = 204 // { int sys_munlock(const void *addr, size_t len); }\n\tSYS_GETPGID        = 207 // { pid_t sys_getpgid(pid_t pid); }\n\tSYS_UTRACE         = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); }\n\tSYS_SEMGET         = 221 // { int sys_semget(key_t key, int nsems, int semflg); }\n\tSYS_MSGGET         = 225 // { int sys_msgget(key_t key, int msgflg); }\n\tSYS_MSGSND         = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV         = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT          = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT          = 230 // { int sys_shmdt(const void *shmaddr); }\n\tSYS_MINHERIT       = 250 // { int sys_minherit(void *addr, size_t len, int inherit); }\n\tSYS_POLL           = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_ISSETUGID      = 253 // { int sys_issetugid(void); }\n\tSYS_LCHOWN         = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_GETSID         = 255 // { pid_t sys_getsid(pid_t pid); }\n\tSYS_MSYNC          = 256 // { int sys_msync(void *addr, size_t len, int flags); }\n\tSYS_PIPE           = 263 // { int sys_pipe(int *fdp); }\n\tSYS_FHOPEN         = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); }\n\tSYS_PREADV         = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_PWRITEV        = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_KQUEUE         = 269 // { int sys_kqueue(void); }\n\tSYS_MLOCKALL       = 271 // { int sys_mlockall(int flags); }\n\tSYS_MUNLOCKALL     = 272 // { int sys_munlockall(void); }\n\tSYS_GETRESUID      = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_SETRESUID      = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_GETRESGID      = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_SETRESGID      = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_MQUERY         = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_CLOSEFROM      = 287 // { int sys_closefrom(int fd); }\n\tSYS_SIGALTSTACK    = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); }\n\tSYS_SHMGET         = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); }\n\tSYS_SEMOP          = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_FHSTAT         = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); }\n\tSYS___SEMCTL       = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_SHMCTL         = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_MSGCTL         = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_SCHED_YIELD    = 298 // { int sys_sched_yield(void); }\n\tSYS_GETTHRID       = 299 // { pid_t sys_getthrid(void); }\n\tSYS___THRWAKEUP    = 301 // { int sys___thrwakeup(const volatile void *ident, int n); }\n\tSYS___THREXIT      = 302 // { void sys___threxit(pid_t *notdead); }\n\tSYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); }\n\tSYS___GETCWD       = 304 // { int sys___getcwd(char *buf, size_t len); }\n\tSYS_ADJFREQ        = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); }\n\tSYS_SETRTABLE      = 310 // { int sys_setrtable(int rtableid); }\n\tSYS_GETRTABLE      = 311 // { int sys_getrtable(void); }\n\tSYS_FACCESSAT      = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); }\n\tSYS_FCHMODAT       = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT       = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); }\n\tSYS_LINKAT         = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); }\n\tSYS_MKDIRAT        = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); }\n\tSYS_MKFIFOAT       = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); }\n\tSYS_MKNODAT        = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); }\n\tSYS_OPENAT         = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); }\n\tSYS_READLINKAT     = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); }\n\tSYS_RENAMEAT       = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); }\n\tSYS_SYMLINKAT      = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); }\n\tSYS_UNLINKAT       = 325 // { int sys_unlinkat(int fd, const char *path, int flag); }\n\tSYS___SET_TCB      = 329 // { void sys___set_tcb(void *tcb); }\n\tSYS___GET_TCB      = 330 // { void *sys___get_tcb(void); }\n)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go",
    "content": "// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && openbsd\n\npackage unix\n\n// Deprecated: Use libc wrappers instead of direct syscalls.\nconst (\n\tSYS_EXIT           = 1   // { void sys_exit(int rval); }\n\tSYS_FORK           = 2   // { int sys_fork(void); }\n\tSYS_READ           = 3   // { ssize_t sys_read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE          = 4   // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN           = 5   // { int sys_open(const char *path, int flags, ... mode_t mode); }\n\tSYS_CLOSE          = 6   // { int sys_close(int fd); }\n\tSYS_GETENTROPY     = 7   // { int sys_getentropy(void *buf, size_t nbyte); }\n\tSYS___TFORK        = 8   // { int sys___tfork(const struct __tfork *param, size_t psize); }\n\tSYS_LINK           = 9   // { int sys_link(const char *path, const char *link); }\n\tSYS_UNLINK         = 10  // { int sys_unlink(const char *path); }\n\tSYS_WAIT4          = 11  // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); }\n\tSYS_CHDIR          = 12  // { int sys_chdir(const char *path); }\n\tSYS_FCHDIR         = 13  // { int sys_fchdir(int fd); }\n\tSYS_MKNOD          = 14  // { int sys_mknod(const char *path, mode_t mode, dev_t dev); }\n\tSYS_CHMOD          = 15  // { int sys_chmod(const char *path, mode_t mode); }\n\tSYS_CHOWN          = 16  // { int sys_chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_OBREAK         = 17  // { int sys_obreak(char *nsize); } break\n\tSYS_GETDTABLECOUNT = 18  // { int sys_getdtablecount(void); }\n\tSYS_GETRUSAGE      = 19  // { int sys_getrusage(int who, struct rusage *rusage); }\n\tSYS_GETPID         = 20  // { pid_t sys_getpid(void); }\n\tSYS_MOUNT          = 21  // { int sys_mount(const char *type, const char *path, int flags, void *data); }\n\tSYS_UNMOUNT        = 22  // { int sys_unmount(const char *path, int flags); }\n\tSYS_SETUID         = 23  // { int sys_setuid(uid_t uid); }\n\tSYS_GETUID         = 24  // { uid_t sys_getuid(void); }\n\tSYS_GETEUID        = 25  // { uid_t sys_geteuid(void); }\n\tSYS_PTRACE         = 26  // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG        = 27  // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG        = 28  // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); }\n\tSYS_RECVFROM       = 29  // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }\n\tSYS_ACCEPT         = 30  // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); }\n\tSYS_GETPEERNAME    = 31  // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_GETSOCKNAME    = 32  // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_ACCESS         = 33  // { int sys_access(const char *path, int amode); }\n\tSYS_CHFLAGS        = 34  // { int sys_chflags(const char *path, u_int flags); }\n\tSYS_FCHFLAGS       = 35  // { int sys_fchflags(int fd, u_int flags); }\n\tSYS_SYNC           = 36  // { void sys_sync(void); }\n\tSYS_STAT           = 38  // { int sys_stat(const char *path, struct stat *ub); }\n\tSYS_GETPPID        = 39  // { pid_t sys_getppid(void); }\n\tSYS_LSTAT          = 40  // { int sys_lstat(const char *path, struct stat *ub); }\n\tSYS_DUP            = 41  // { int sys_dup(int fd); }\n\tSYS_FSTATAT        = 42  // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); }\n\tSYS_GETEGID        = 43  // { gid_t sys_getegid(void); }\n\tSYS_PROFIL         = 44  // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE         = 45  // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); }\n\tSYS_SIGACTION      = 46  // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); }\n\tSYS_GETGID         = 47  // { gid_t sys_getgid(void); }\n\tSYS_SIGPROCMASK    = 48  // { int sys_sigprocmask(int how, sigset_t mask); }\n\tSYS_SETLOGIN       = 50  // { int sys_setlogin(const char *namebuf); }\n\tSYS_ACCT           = 51  // { int sys_acct(const char *path); }\n\tSYS_SIGPENDING     = 52  // { int sys_sigpending(void); }\n\tSYS_FSTAT          = 53  // { int sys_fstat(int fd, struct stat *sb); }\n\tSYS_IOCTL          = 54  // { int sys_ioctl(int fd, u_long com, ... void *data); }\n\tSYS_REBOOT         = 55  // { int sys_reboot(int opt); }\n\tSYS_REVOKE         = 56  // { int sys_revoke(const char *path); }\n\tSYS_SYMLINK        = 57  // { int sys_symlink(const char *path, const char *link); }\n\tSYS_READLINK       = 58  // { ssize_t sys_readlink(const char *path, char *buf, size_t count); }\n\tSYS_EXECVE         = 59  // { int sys_execve(const char *path, char * const *argp, char * const *envp); }\n\tSYS_UMASK          = 60  // { mode_t sys_umask(mode_t newmask); }\n\tSYS_CHROOT         = 61  // { int sys_chroot(const char *path); }\n\tSYS_GETFSSTAT      = 62  // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); }\n\tSYS_STATFS         = 63  // { int sys_statfs(const char *path, struct statfs *buf); }\n\tSYS_FSTATFS        = 64  // { int sys_fstatfs(int fd, struct statfs *buf); }\n\tSYS_FHSTATFS       = 65  // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); }\n\tSYS_VFORK          = 66  // { int sys_vfork(void); }\n\tSYS_GETTIMEOFDAY   = 67  // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_SETTIMEOFDAY   = 68  // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); }\n\tSYS_SETITIMER      = 69  // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_GETITIMER      = 70  // { int sys_getitimer(int which, struct itimerval *itv); }\n\tSYS_SELECT         = 71  // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_KEVENT         = 72  // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_MUNMAP         = 73  // { int sys_munmap(void *addr, size_t len); }\n\tSYS_MPROTECT       = 74  // { int sys_mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE        = 75  // { int sys_madvise(void *addr, size_t len, int behav); }\n\tSYS_UTIMES         = 76  // { int sys_utimes(const char *path, const struct timeval *tptr); }\n\tSYS_FUTIMES        = 77  // { int sys_futimes(int fd, const struct timeval *tptr); }\n\tSYS_GETGROUPS      = 79  // { int sys_getgroups(int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS      = 80  // { int sys_setgroups(int gidsetsize, const gid_t *gidset); }\n\tSYS_GETPGRP        = 81  // { int sys_getpgrp(void); }\n\tSYS_SETPGID        = 82  // { int sys_setpgid(pid_t pid, pid_t pgid); }\n\tSYS_FUTEX          = 83  // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); }\n\tSYS_UTIMENSAT      = 84  // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); }\n\tSYS_FUTIMENS       = 85  // { int sys_futimens(int fd, const struct timespec *times); }\n\tSYS_KBIND          = 86  // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); }\n\tSYS_CLOCK_GETTIME  = 87  // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME  = 88  // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES   = 89  // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_DUP2           = 90  // { int sys_dup2(int from, int to); }\n\tSYS_NANOSLEEP      = 91  // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_FCNTL          = 92  // { int sys_fcntl(int fd, int cmd, ... void *arg); }\n\tSYS_ACCEPT4        = 93  // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); }\n\tSYS___THRSLEEP     = 94  // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); }\n\tSYS_FSYNC          = 95  // { int sys_fsync(int fd); }\n\tSYS_SETPRIORITY    = 96  // { int sys_setpriority(int which, id_t who, int prio); }\n\tSYS_SOCKET         = 97  // { int sys_socket(int domain, int type, int protocol); }\n\tSYS_CONNECT        = 98  // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_GETDENTS       = 99  // { int sys_getdents(int fd, void *buf, size_t buflen); }\n\tSYS_GETPRIORITY    = 100 // { int sys_getpriority(int which, id_t who); }\n\tSYS_PIPE2          = 101 // { int sys_pipe2(int *fdp, int flags); }\n\tSYS_DUP3           = 102 // { int sys_dup3(int from, int to, int flags); }\n\tSYS_SIGRETURN      = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); }\n\tSYS_BIND           = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_SETSOCKOPT     = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }\n\tSYS_LISTEN         = 106 // { int sys_listen(int s, int backlog); }\n\tSYS_CHFLAGSAT      = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); }\n\tSYS_PLEDGE         = 108 // { int sys_pledge(const char *promises, const char *execpromises); }\n\tSYS_PPOLL          = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_PSELECT        = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_SIGSUSPEND     = 111 // { int sys_sigsuspend(int mask); }\n\tSYS_SENDSYSLOG     = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); }\n\tSYS_UNVEIL         = 114 // { int sys_unveil(const char *path, const char *permissions); }\n\tSYS_GETSOCKOPT     = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }\n\tSYS_THRKILL        = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); }\n\tSYS_READV          = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_WRITEV         = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_KILL           = 122 // { int sys_kill(int pid, int signum); }\n\tSYS_FCHOWN         = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS_FCHMOD         = 124 // { int sys_fchmod(int fd, mode_t mode); }\n\tSYS_SETREUID       = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); }\n\tSYS_SETREGID       = 127 // { int sys_setregid(gid_t rgid, gid_t egid); }\n\tSYS_RENAME         = 128 // { int sys_rename(const char *from, const char *to); }\n\tSYS_FLOCK          = 131 // { int sys_flock(int fd, int how); }\n\tSYS_MKFIFO         = 132 // { int sys_mkfifo(const char *path, mode_t mode); }\n\tSYS_SENDTO         = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }\n\tSYS_SHUTDOWN       = 134 // { int sys_shutdown(int s, int how); }\n\tSYS_SOCKETPAIR     = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR          = 136 // { int sys_mkdir(const char *path, mode_t mode); }\n\tSYS_RMDIR          = 137 // { int sys_rmdir(const char *path); }\n\tSYS_ADJTIME        = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); }\n\tSYS_GETLOGIN_R     = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); }\n\tSYS_SETSID         = 147 // { int sys_setsid(void); }\n\tSYS_QUOTACTL       = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); }\n\tSYS_NFSSVC         = 155 // { int sys_nfssvc(int flag, void *argp); }\n\tSYS_GETFH          = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); }\n\tSYS_SYSARCH        = 165 // { int sys_sysarch(int op, void *parms); }\n\tSYS_PREAD          = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_PWRITE         = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_SETGID         = 181 // { int sys_setgid(gid_t gid); }\n\tSYS_SETEGID        = 182 // { int sys_setegid(gid_t egid); }\n\tSYS_SETEUID        = 183 // { int sys_seteuid(uid_t euid); }\n\tSYS_PATHCONF       = 191 // { long sys_pathconf(const char *path, int name); }\n\tSYS_FPATHCONF      = 192 // { long sys_fpathconf(int fd, int name); }\n\tSYS_SWAPCTL        = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); }\n\tSYS_GETRLIMIT      = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); }\n\tSYS_SETRLIMIT      = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); }\n\tSYS_MMAP           = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_LSEEK          = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); }\n\tSYS_TRUNCATE       = 200 // { int sys_truncate(const char *path, int pad, off_t length); }\n\tSYS_FTRUNCATE      = 201 // { int sys_ftruncate(int fd, int pad, off_t length); }\n\tSYS_SYSCTL         = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }\n\tSYS_MLOCK          = 203 // { int sys_mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK        = 204 // { int sys_munlock(const void *addr, size_t len); }\n\tSYS_GETPGID        = 207 // { pid_t sys_getpgid(pid_t pid); }\n\tSYS_UTRACE         = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); }\n\tSYS_SEMGET         = 221 // { int sys_semget(key_t key, int nsems, int semflg); }\n\tSYS_MSGGET         = 225 // { int sys_msgget(key_t key, int msgflg); }\n\tSYS_MSGSND         = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV         = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT          = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT          = 230 // { int sys_shmdt(const void *shmaddr); }\n\tSYS_MINHERIT       = 250 // { int sys_minherit(void *addr, size_t len, int inherit); }\n\tSYS_POLL           = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_ISSETUGID      = 253 // { int sys_issetugid(void); }\n\tSYS_LCHOWN         = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_GETSID         = 255 // { pid_t sys_getsid(pid_t pid); }\n\tSYS_MSYNC          = 256 // { int sys_msync(void *addr, size_t len, int flags); }\n\tSYS_PIPE           = 263 // { int sys_pipe(int *fdp); }\n\tSYS_FHOPEN         = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); }\n\tSYS_PREADV         = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_PWRITEV        = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_KQUEUE         = 269 // { int sys_kqueue(void); }\n\tSYS_MLOCKALL       = 271 // { int sys_mlockall(int flags); }\n\tSYS_MUNLOCKALL     = 272 // { int sys_munlockall(void); }\n\tSYS_GETRESUID      = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_SETRESUID      = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_GETRESGID      = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_SETRESGID      = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_MQUERY         = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_CLOSEFROM      = 287 // { int sys_closefrom(int fd); }\n\tSYS_SIGALTSTACK    = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); }\n\tSYS_SHMGET         = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); }\n\tSYS_SEMOP          = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_FHSTAT         = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); }\n\tSYS___SEMCTL       = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_SHMCTL         = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_MSGCTL         = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_SCHED_YIELD    = 298 // { int sys_sched_yield(void); }\n\tSYS_GETTHRID       = 299 // { pid_t sys_getthrid(void); }\n\tSYS___THRWAKEUP    = 301 // { int sys___thrwakeup(const volatile void *ident, int n); }\n\tSYS___THREXIT      = 302 // { void sys___threxit(pid_t *notdead); }\n\tSYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); }\n\tSYS___GETCWD       = 304 // { int sys___getcwd(char *buf, size_t len); }\n\tSYS_ADJFREQ        = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); }\n\tSYS_SETRTABLE      = 310 // { int sys_setrtable(int rtableid); }\n\tSYS_GETRTABLE      = 311 // { int sys_getrtable(void); }\n\tSYS_FACCESSAT      = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); }\n\tSYS_FCHMODAT       = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT       = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); }\n\tSYS_LINKAT         = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); }\n\tSYS_MKDIRAT        = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); }\n\tSYS_MKFIFOAT       = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); }\n\tSYS_MKNODAT        = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); }\n\tSYS_OPENAT         = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); }\n\tSYS_READLINKAT     = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); }\n\tSYS_RENAMEAT       = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); }\n\tSYS_SYMLINKAT      = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); }\n\tSYS_UNLINKAT       = 325 // { int sys_unlinkat(int fd, const char *path, int flag); }\n\tSYS___SET_TCB      = 329 // { void sys___set_tcb(void *tcb); }\n\tSYS___GET_TCB      = 330 // { void *sys___get_tcb(void); }\n)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsysnum_openbsd_mips64.go",
    "content": "// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mips64 && openbsd\n\npackage unix\n\n// Deprecated: Use libc wrappers instead of direct syscalls.\nconst (\n\tSYS_EXIT           = 1   // { void sys_exit(int rval); }\n\tSYS_FORK           = 2   // { int sys_fork(void); }\n\tSYS_READ           = 3   // { ssize_t sys_read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE          = 4   // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN           = 5   // { int sys_open(const char *path, int flags, ... mode_t mode); }\n\tSYS_CLOSE          = 6   // { int sys_close(int fd); }\n\tSYS_GETENTROPY     = 7   // { int sys_getentropy(void *buf, size_t nbyte); }\n\tSYS___TFORK        = 8   // { int sys___tfork(const struct __tfork *param, size_t psize); }\n\tSYS_LINK           = 9   // { int sys_link(const char *path, const char *link); }\n\tSYS_UNLINK         = 10  // { int sys_unlink(const char *path); }\n\tSYS_WAIT4          = 11  // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); }\n\tSYS_CHDIR          = 12  // { int sys_chdir(const char *path); }\n\tSYS_FCHDIR         = 13  // { int sys_fchdir(int fd); }\n\tSYS_MKNOD          = 14  // { int sys_mknod(const char *path, mode_t mode, dev_t dev); }\n\tSYS_CHMOD          = 15  // { int sys_chmod(const char *path, mode_t mode); }\n\tSYS_CHOWN          = 16  // { int sys_chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_OBREAK         = 17  // { int sys_obreak(char *nsize); } break\n\tSYS_GETDTABLECOUNT = 18  // { int sys_getdtablecount(void); }\n\tSYS_GETRUSAGE      = 19  // { int sys_getrusage(int who, struct rusage *rusage); }\n\tSYS_GETPID         = 20  // { pid_t sys_getpid(void); }\n\tSYS_MOUNT          = 21  // { int sys_mount(const char *type, const char *path, int flags, void *data); }\n\tSYS_UNMOUNT        = 22  // { int sys_unmount(const char *path, int flags); }\n\tSYS_SETUID         = 23  // { int sys_setuid(uid_t uid); }\n\tSYS_GETUID         = 24  // { uid_t sys_getuid(void); }\n\tSYS_GETEUID        = 25  // { uid_t sys_geteuid(void); }\n\tSYS_PTRACE         = 26  // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG        = 27  // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG        = 28  // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); }\n\tSYS_RECVFROM       = 29  // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }\n\tSYS_ACCEPT         = 30  // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); }\n\tSYS_GETPEERNAME    = 31  // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_GETSOCKNAME    = 32  // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_ACCESS         = 33  // { int sys_access(const char *path, int amode); }\n\tSYS_CHFLAGS        = 34  // { int sys_chflags(const char *path, u_int flags); }\n\tSYS_FCHFLAGS       = 35  // { int sys_fchflags(int fd, u_int flags); }\n\tSYS_SYNC           = 36  // { void sys_sync(void); }\n\tSYS_MSYSCALL       = 37  // { int sys_msyscall(void *addr, size_t len); }\n\tSYS_STAT           = 38  // { int sys_stat(const char *path, struct stat *ub); }\n\tSYS_GETPPID        = 39  // { pid_t sys_getppid(void); }\n\tSYS_LSTAT          = 40  // { int sys_lstat(const char *path, struct stat *ub); }\n\tSYS_DUP            = 41  // { int sys_dup(int fd); }\n\tSYS_FSTATAT        = 42  // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); }\n\tSYS_GETEGID        = 43  // { gid_t sys_getegid(void); }\n\tSYS_PROFIL         = 44  // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE         = 45  // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); }\n\tSYS_SIGACTION      = 46  // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); }\n\tSYS_GETGID         = 47  // { gid_t sys_getgid(void); }\n\tSYS_SIGPROCMASK    = 48  // { int sys_sigprocmask(int how, sigset_t mask); }\n\tSYS_SETLOGIN       = 50  // { int sys_setlogin(const char *namebuf); }\n\tSYS_ACCT           = 51  // { int sys_acct(const char *path); }\n\tSYS_SIGPENDING     = 52  // { int sys_sigpending(void); }\n\tSYS_FSTAT          = 53  // { int sys_fstat(int fd, struct stat *sb); }\n\tSYS_IOCTL          = 54  // { int sys_ioctl(int fd, u_long com, ... void *data); }\n\tSYS_REBOOT         = 55  // { int sys_reboot(int opt); }\n\tSYS_REVOKE         = 56  // { int sys_revoke(const char *path); }\n\tSYS_SYMLINK        = 57  // { int sys_symlink(const char *path, const char *link); }\n\tSYS_READLINK       = 58  // { ssize_t sys_readlink(const char *path, char *buf, size_t count); }\n\tSYS_EXECVE         = 59  // { int sys_execve(const char *path, char * const *argp, char * const *envp); }\n\tSYS_UMASK          = 60  // { mode_t sys_umask(mode_t newmask); }\n\tSYS_CHROOT         = 61  // { int sys_chroot(const char *path); }\n\tSYS_GETFSSTAT      = 62  // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); }\n\tSYS_STATFS         = 63  // { int sys_statfs(const char *path, struct statfs *buf); }\n\tSYS_FSTATFS        = 64  // { int sys_fstatfs(int fd, struct statfs *buf); }\n\tSYS_FHSTATFS       = 65  // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); }\n\tSYS_VFORK          = 66  // { int sys_vfork(void); }\n\tSYS_GETTIMEOFDAY   = 67  // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_SETTIMEOFDAY   = 68  // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); }\n\tSYS_SETITIMER      = 69  // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_GETITIMER      = 70  // { int sys_getitimer(int which, struct itimerval *itv); }\n\tSYS_SELECT         = 71  // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_KEVENT         = 72  // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_MUNMAP         = 73  // { int sys_munmap(void *addr, size_t len); }\n\tSYS_MPROTECT       = 74  // { int sys_mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE        = 75  // { int sys_madvise(void *addr, size_t len, int behav); }\n\tSYS_UTIMES         = 76  // { int sys_utimes(const char *path, const struct timeval *tptr); }\n\tSYS_FUTIMES        = 77  // { int sys_futimes(int fd, const struct timeval *tptr); }\n\tSYS_GETGROUPS      = 79  // { int sys_getgroups(int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS      = 80  // { int sys_setgroups(int gidsetsize, const gid_t *gidset); }\n\tSYS_GETPGRP        = 81  // { int sys_getpgrp(void); }\n\tSYS_SETPGID        = 82  // { int sys_setpgid(pid_t pid, pid_t pgid); }\n\tSYS_FUTEX          = 83  // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); }\n\tSYS_UTIMENSAT      = 84  // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); }\n\tSYS_FUTIMENS       = 85  // { int sys_futimens(int fd, const struct timespec *times); }\n\tSYS_KBIND          = 86  // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); }\n\tSYS_CLOCK_GETTIME  = 87  // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME  = 88  // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES   = 89  // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_DUP2           = 90  // { int sys_dup2(int from, int to); }\n\tSYS_NANOSLEEP      = 91  // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_FCNTL          = 92  // { int sys_fcntl(int fd, int cmd, ... void *arg); }\n\tSYS_ACCEPT4        = 93  // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); }\n\tSYS___THRSLEEP     = 94  // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); }\n\tSYS_FSYNC          = 95  // { int sys_fsync(int fd); }\n\tSYS_SETPRIORITY    = 96  // { int sys_setpriority(int which, id_t who, int prio); }\n\tSYS_SOCKET         = 97  // { int sys_socket(int domain, int type, int protocol); }\n\tSYS_CONNECT        = 98  // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_GETDENTS       = 99  // { int sys_getdents(int fd, void *buf, size_t buflen); }\n\tSYS_GETPRIORITY    = 100 // { int sys_getpriority(int which, id_t who); }\n\tSYS_PIPE2          = 101 // { int sys_pipe2(int *fdp, int flags); }\n\tSYS_DUP3           = 102 // { int sys_dup3(int from, int to, int flags); }\n\tSYS_SIGRETURN      = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); }\n\tSYS_BIND           = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_SETSOCKOPT     = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }\n\tSYS_LISTEN         = 106 // { int sys_listen(int s, int backlog); }\n\tSYS_CHFLAGSAT      = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); }\n\tSYS_PLEDGE         = 108 // { int sys_pledge(const char *promises, const char *execpromises); }\n\tSYS_PPOLL          = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_PSELECT        = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_SIGSUSPEND     = 111 // { int sys_sigsuspend(int mask); }\n\tSYS_SENDSYSLOG     = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); }\n\tSYS_UNVEIL         = 114 // { int sys_unveil(const char *path, const char *permissions); }\n\tSYS___REALPATH     = 115 // { int sys___realpath(const char *pathname, char *resolved); }\n\tSYS_GETSOCKOPT     = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }\n\tSYS_THRKILL        = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); }\n\tSYS_READV          = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_WRITEV         = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_KILL           = 122 // { int sys_kill(int pid, int signum); }\n\tSYS_FCHOWN         = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS_FCHMOD         = 124 // { int sys_fchmod(int fd, mode_t mode); }\n\tSYS_SETREUID       = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); }\n\tSYS_SETREGID       = 127 // { int sys_setregid(gid_t rgid, gid_t egid); }\n\tSYS_RENAME         = 128 // { int sys_rename(const char *from, const char *to); }\n\tSYS_FLOCK          = 131 // { int sys_flock(int fd, int how); }\n\tSYS_MKFIFO         = 132 // { int sys_mkfifo(const char *path, mode_t mode); }\n\tSYS_SENDTO         = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }\n\tSYS_SHUTDOWN       = 134 // { int sys_shutdown(int s, int how); }\n\tSYS_SOCKETPAIR     = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR          = 136 // { int sys_mkdir(const char *path, mode_t mode); }\n\tSYS_RMDIR          = 137 // { int sys_rmdir(const char *path); }\n\tSYS_ADJTIME        = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); }\n\tSYS_GETLOGIN_R     = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); }\n\tSYS_SETSID         = 147 // { int sys_setsid(void); }\n\tSYS_QUOTACTL       = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); }\n\tSYS_NFSSVC         = 155 // { int sys_nfssvc(int flag, void *argp); }\n\tSYS_GETFH          = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); }\n\tSYS___TMPFD        = 164 // { int sys___tmpfd(int flags); }\n\tSYS_SYSARCH        = 165 // { int sys_sysarch(int op, void *parms); }\n\tSYS_PREAD          = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_PWRITE         = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_SETGID         = 181 // { int sys_setgid(gid_t gid); }\n\tSYS_SETEGID        = 182 // { int sys_setegid(gid_t egid); }\n\tSYS_SETEUID        = 183 // { int sys_seteuid(uid_t euid); }\n\tSYS_PATHCONF       = 191 // { long sys_pathconf(const char *path, int name); }\n\tSYS_FPATHCONF      = 192 // { long sys_fpathconf(int fd, int name); }\n\tSYS_SWAPCTL        = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); }\n\tSYS_GETRLIMIT      = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); }\n\tSYS_SETRLIMIT      = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); }\n\tSYS_MMAP           = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_LSEEK          = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); }\n\tSYS_TRUNCATE       = 200 // { int sys_truncate(const char *path, int pad, off_t length); }\n\tSYS_FTRUNCATE      = 201 // { int sys_ftruncate(int fd, int pad, off_t length); }\n\tSYS_SYSCTL         = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }\n\tSYS_MLOCK          = 203 // { int sys_mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK        = 204 // { int sys_munlock(const void *addr, size_t len); }\n\tSYS_GETPGID        = 207 // { pid_t sys_getpgid(pid_t pid); }\n\tSYS_UTRACE         = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); }\n\tSYS_SEMGET         = 221 // { int sys_semget(key_t key, int nsems, int semflg); }\n\tSYS_MSGGET         = 225 // { int sys_msgget(key_t key, int msgflg); }\n\tSYS_MSGSND         = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV         = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT          = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT          = 230 // { int sys_shmdt(const void *shmaddr); }\n\tSYS_MINHERIT       = 250 // { int sys_minherit(void *addr, size_t len, int inherit); }\n\tSYS_POLL           = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_ISSETUGID      = 253 // { int sys_issetugid(void); }\n\tSYS_LCHOWN         = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_GETSID         = 255 // { pid_t sys_getsid(pid_t pid); }\n\tSYS_MSYNC          = 256 // { int sys_msync(void *addr, size_t len, int flags); }\n\tSYS_PIPE           = 263 // { int sys_pipe(int *fdp); }\n\tSYS_FHOPEN         = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); }\n\tSYS_PREADV         = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_PWRITEV        = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_KQUEUE         = 269 // { int sys_kqueue(void); }\n\tSYS_MLOCKALL       = 271 // { int sys_mlockall(int flags); }\n\tSYS_MUNLOCKALL     = 272 // { int sys_munlockall(void); }\n\tSYS_GETRESUID      = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_SETRESUID      = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_GETRESGID      = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_SETRESGID      = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_MQUERY         = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_CLOSEFROM      = 287 // { int sys_closefrom(int fd); }\n\tSYS_SIGALTSTACK    = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); }\n\tSYS_SHMGET         = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); }\n\tSYS_SEMOP          = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_FHSTAT         = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); }\n\tSYS___SEMCTL       = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_SHMCTL         = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_MSGCTL         = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_SCHED_YIELD    = 298 // { int sys_sched_yield(void); }\n\tSYS_GETTHRID       = 299 // { pid_t sys_getthrid(void); }\n\tSYS___THRWAKEUP    = 301 // { int sys___thrwakeup(const volatile void *ident, int n); }\n\tSYS___THREXIT      = 302 // { void sys___threxit(pid_t *notdead); }\n\tSYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); }\n\tSYS___GETCWD       = 304 // { int sys___getcwd(char *buf, size_t len); }\n\tSYS_ADJFREQ        = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); }\n\tSYS_SETRTABLE      = 310 // { int sys_setrtable(int rtableid); }\n\tSYS_GETRTABLE      = 311 // { int sys_getrtable(void); }\n\tSYS_FACCESSAT      = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); }\n\tSYS_FCHMODAT       = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT       = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); }\n\tSYS_LINKAT         = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); }\n\tSYS_MKDIRAT        = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); }\n\tSYS_MKFIFOAT       = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); }\n\tSYS_MKNODAT        = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); }\n\tSYS_OPENAT         = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); }\n\tSYS_READLINKAT     = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); }\n\tSYS_RENAMEAT       = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); }\n\tSYS_SYMLINKAT      = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); }\n\tSYS_UNLINKAT       = 325 // { int sys_unlinkat(int fd, const char *path, int flag); }\n\tSYS___SET_TCB      = 329 // { void sys___set_tcb(void *tcb); }\n\tSYS___GET_TCB      = 330 // { void *sys___get_tcb(void); }\n)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsysnum_openbsd_ppc64.go",
    "content": "// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc64 && openbsd\n\npackage unix\n\nconst (\n\tSYS_EXIT           = 1   // { void sys_exit(int rval); }\n\tSYS_FORK           = 2   // { int sys_fork(void); }\n\tSYS_READ           = 3   // { ssize_t sys_read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE          = 4   // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN           = 5   // { int sys_open(const char *path, int flags, ... mode_t mode); }\n\tSYS_CLOSE          = 6   // { int sys_close(int fd); }\n\tSYS_GETENTROPY     = 7   // { int sys_getentropy(void *buf, size_t nbyte); }\n\tSYS___TFORK        = 8   // { int sys___tfork(const struct __tfork *param, size_t psize); }\n\tSYS_LINK           = 9   // { int sys_link(const char *path, const char *link); }\n\tSYS_UNLINK         = 10  // { int sys_unlink(const char *path); }\n\tSYS_WAIT4          = 11  // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); }\n\tSYS_CHDIR          = 12  // { int sys_chdir(const char *path); }\n\tSYS_FCHDIR         = 13  // { int sys_fchdir(int fd); }\n\tSYS_MKNOD          = 14  // { int sys_mknod(const char *path, mode_t mode, dev_t dev); }\n\tSYS_CHMOD          = 15  // { int sys_chmod(const char *path, mode_t mode); }\n\tSYS_CHOWN          = 16  // { int sys_chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_OBREAK         = 17  // { int sys_obreak(char *nsize); } break\n\tSYS_GETDTABLECOUNT = 18  // { int sys_getdtablecount(void); }\n\tSYS_GETRUSAGE      = 19  // { int sys_getrusage(int who, struct rusage *rusage); }\n\tSYS_GETPID         = 20  // { pid_t sys_getpid(void); }\n\tSYS_MOUNT          = 21  // { int sys_mount(const char *type, const char *path, int flags, void *data); }\n\tSYS_UNMOUNT        = 22  // { int sys_unmount(const char *path, int flags); }\n\tSYS_SETUID         = 23  // { int sys_setuid(uid_t uid); }\n\tSYS_GETUID         = 24  // { uid_t sys_getuid(void); }\n\tSYS_GETEUID        = 25  // { uid_t sys_geteuid(void); }\n\tSYS_PTRACE         = 26  // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG        = 27  // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG        = 28  // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); }\n\tSYS_RECVFROM       = 29  // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }\n\tSYS_ACCEPT         = 30  // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); }\n\tSYS_GETPEERNAME    = 31  // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_GETSOCKNAME    = 32  // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_ACCESS         = 33  // { int sys_access(const char *path, int amode); }\n\tSYS_CHFLAGS        = 34  // { int sys_chflags(const char *path, u_int flags); }\n\tSYS_FCHFLAGS       = 35  // { int sys_fchflags(int fd, u_int flags); }\n\tSYS_SYNC           = 36  // { void sys_sync(void); }\n\tSYS_STAT           = 38  // { int sys_stat(const char *path, struct stat *ub); }\n\tSYS_GETPPID        = 39  // { pid_t sys_getppid(void); }\n\tSYS_LSTAT          = 40  // { int sys_lstat(const char *path, struct stat *ub); }\n\tSYS_DUP            = 41  // { int sys_dup(int fd); }\n\tSYS_FSTATAT        = 42  // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); }\n\tSYS_GETEGID        = 43  // { gid_t sys_getegid(void); }\n\tSYS_PROFIL         = 44  // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE         = 45  // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); }\n\tSYS_SIGACTION      = 46  // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); }\n\tSYS_GETGID         = 47  // { gid_t sys_getgid(void); }\n\tSYS_SIGPROCMASK    = 48  // { int sys_sigprocmask(int how, sigset_t mask); }\n\tSYS_SETLOGIN       = 50  // { int sys_setlogin(const char *namebuf); }\n\tSYS_ACCT           = 51  // { int sys_acct(const char *path); }\n\tSYS_SIGPENDING     = 52  // { int sys_sigpending(void); }\n\tSYS_FSTAT          = 53  // { int sys_fstat(int fd, struct stat *sb); }\n\tSYS_IOCTL          = 54  // { int sys_ioctl(int fd, u_long com, ... void *data); }\n\tSYS_REBOOT         = 55  // { int sys_reboot(int opt); }\n\tSYS_REVOKE         = 56  // { int sys_revoke(const char *path); }\n\tSYS_SYMLINK        = 57  // { int sys_symlink(const char *path, const char *link); }\n\tSYS_READLINK       = 58  // { ssize_t sys_readlink(const char *path, char *buf, size_t count); }\n\tSYS_EXECVE         = 59  // { int sys_execve(const char *path, char * const *argp, char * const *envp); }\n\tSYS_UMASK          = 60  // { mode_t sys_umask(mode_t newmask); }\n\tSYS_CHROOT         = 61  // { int sys_chroot(const char *path); }\n\tSYS_GETFSSTAT      = 62  // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); }\n\tSYS_STATFS         = 63  // { int sys_statfs(const char *path, struct statfs *buf); }\n\tSYS_FSTATFS        = 64  // { int sys_fstatfs(int fd, struct statfs *buf); }\n\tSYS_FHSTATFS       = 65  // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); }\n\tSYS_VFORK          = 66  // { int sys_vfork(void); }\n\tSYS_GETTIMEOFDAY   = 67  // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_SETTIMEOFDAY   = 68  // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); }\n\tSYS_SETITIMER      = 69  // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_GETITIMER      = 70  // { int sys_getitimer(int which, struct itimerval *itv); }\n\tSYS_SELECT         = 71  // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_KEVENT         = 72  // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_MUNMAP         = 73  // { int sys_munmap(void *addr, size_t len); }\n\tSYS_MPROTECT       = 74  // { int sys_mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE        = 75  // { int sys_madvise(void *addr, size_t len, int behav); }\n\tSYS_UTIMES         = 76  // { int sys_utimes(const char *path, const struct timeval *tptr); }\n\tSYS_FUTIMES        = 77  // { int sys_futimes(int fd, const struct timeval *tptr); }\n\tSYS_GETGROUPS      = 79  // { int sys_getgroups(int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS      = 80  // { int sys_setgroups(int gidsetsize, const gid_t *gidset); }\n\tSYS_GETPGRP        = 81  // { int sys_getpgrp(void); }\n\tSYS_SETPGID        = 82  // { int sys_setpgid(pid_t pid, pid_t pgid); }\n\tSYS_FUTEX          = 83  // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); }\n\tSYS_UTIMENSAT      = 84  // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); }\n\tSYS_FUTIMENS       = 85  // { int sys_futimens(int fd, const struct timespec *times); }\n\tSYS_KBIND          = 86  // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); }\n\tSYS_CLOCK_GETTIME  = 87  // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME  = 88  // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES   = 89  // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_DUP2           = 90  // { int sys_dup2(int from, int to); }\n\tSYS_NANOSLEEP      = 91  // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_FCNTL          = 92  // { int sys_fcntl(int fd, int cmd, ... void *arg); }\n\tSYS_ACCEPT4        = 93  // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); }\n\tSYS___THRSLEEP     = 94  // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); }\n\tSYS_FSYNC          = 95  // { int sys_fsync(int fd); }\n\tSYS_SETPRIORITY    = 96  // { int sys_setpriority(int which, id_t who, int prio); }\n\tSYS_SOCKET         = 97  // { int sys_socket(int domain, int type, int protocol); }\n\tSYS_CONNECT        = 98  // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_GETDENTS       = 99  // { int sys_getdents(int fd, void *buf, size_t buflen); }\n\tSYS_GETPRIORITY    = 100 // { int sys_getpriority(int which, id_t who); }\n\tSYS_PIPE2          = 101 // { int sys_pipe2(int *fdp, int flags); }\n\tSYS_DUP3           = 102 // { int sys_dup3(int from, int to, int flags); }\n\tSYS_SIGRETURN      = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); }\n\tSYS_BIND           = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_SETSOCKOPT     = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }\n\tSYS_LISTEN         = 106 // { int sys_listen(int s, int backlog); }\n\tSYS_CHFLAGSAT      = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); }\n\tSYS_PLEDGE         = 108 // { int sys_pledge(const char *promises, const char *execpromises); }\n\tSYS_PPOLL          = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_PSELECT        = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_SIGSUSPEND     = 111 // { int sys_sigsuspend(int mask); }\n\tSYS_SENDSYSLOG     = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); }\n\tSYS_UNVEIL         = 114 // { int sys_unveil(const char *path, const char *permissions); }\n\tSYS_GETSOCKOPT     = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }\n\tSYS_THRKILL        = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); }\n\tSYS_READV          = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_WRITEV         = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_KILL           = 122 // { int sys_kill(int pid, int signum); }\n\tSYS_FCHOWN         = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS_FCHMOD         = 124 // { int sys_fchmod(int fd, mode_t mode); }\n\tSYS_SETREUID       = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); }\n\tSYS_SETREGID       = 127 // { int sys_setregid(gid_t rgid, gid_t egid); }\n\tSYS_RENAME         = 128 // { int sys_rename(const char *from, const char *to); }\n\tSYS_FLOCK          = 131 // { int sys_flock(int fd, int how); }\n\tSYS_MKFIFO         = 132 // { int sys_mkfifo(const char *path, mode_t mode); }\n\tSYS_SENDTO         = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }\n\tSYS_SHUTDOWN       = 134 // { int sys_shutdown(int s, int how); }\n\tSYS_SOCKETPAIR     = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR          = 136 // { int sys_mkdir(const char *path, mode_t mode); }\n\tSYS_RMDIR          = 137 // { int sys_rmdir(const char *path); }\n\tSYS_ADJTIME        = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); }\n\tSYS_GETLOGIN_R     = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); }\n\tSYS_SETSID         = 147 // { int sys_setsid(void); }\n\tSYS_QUOTACTL       = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); }\n\tSYS_NFSSVC         = 155 // { int sys_nfssvc(int flag, void *argp); }\n\tSYS_GETFH          = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); }\n\tSYS_SYSARCH        = 165 // { int sys_sysarch(int op, void *parms); }\n\tSYS_PREAD          = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_PWRITE         = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_SETGID         = 181 // { int sys_setgid(gid_t gid); }\n\tSYS_SETEGID        = 182 // { int sys_setegid(gid_t egid); }\n\tSYS_SETEUID        = 183 // { int sys_seteuid(uid_t euid); }\n\tSYS_PATHCONF       = 191 // { long sys_pathconf(const char *path, int name); }\n\tSYS_FPATHCONF      = 192 // { long sys_fpathconf(int fd, int name); }\n\tSYS_SWAPCTL        = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); }\n\tSYS_GETRLIMIT      = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); }\n\tSYS_SETRLIMIT      = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); }\n\tSYS_MMAP           = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_LSEEK          = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); }\n\tSYS_TRUNCATE       = 200 // { int sys_truncate(const char *path, int pad, off_t length); }\n\tSYS_FTRUNCATE      = 201 // { int sys_ftruncate(int fd, int pad, off_t length); }\n\tSYS_SYSCTL         = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }\n\tSYS_MLOCK          = 203 // { int sys_mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK        = 204 // { int sys_munlock(const void *addr, size_t len); }\n\tSYS_GETPGID        = 207 // { pid_t sys_getpgid(pid_t pid); }\n\tSYS_UTRACE         = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); }\n\tSYS_SEMGET         = 221 // { int sys_semget(key_t key, int nsems, int semflg); }\n\tSYS_MSGGET         = 225 // { int sys_msgget(key_t key, int msgflg); }\n\tSYS_MSGSND         = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV         = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT          = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT          = 230 // { int sys_shmdt(const void *shmaddr); }\n\tSYS_MINHERIT       = 250 // { int sys_minherit(void *addr, size_t len, int inherit); }\n\tSYS_POLL           = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_ISSETUGID      = 253 // { int sys_issetugid(void); }\n\tSYS_LCHOWN         = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_GETSID         = 255 // { pid_t sys_getsid(pid_t pid); }\n\tSYS_MSYNC          = 256 // { int sys_msync(void *addr, size_t len, int flags); }\n\tSYS_PIPE           = 263 // { int sys_pipe(int *fdp); }\n\tSYS_FHOPEN         = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); }\n\tSYS_PREADV         = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_PWRITEV        = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_KQUEUE         = 269 // { int sys_kqueue(void); }\n\tSYS_MLOCKALL       = 271 // { int sys_mlockall(int flags); }\n\tSYS_MUNLOCKALL     = 272 // { int sys_munlockall(void); }\n\tSYS_GETRESUID      = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_SETRESUID      = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_GETRESGID      = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_SETRESGID      = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_MQUERY         = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_CLOSEFROM      = 287 // { int sys_closefrom(int fd); }\n\tSYS_SIGALTSTACK    = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); }\n\tSYS_SHMGET         = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); }\n\tSYS_SEMOP          = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_FHSTAT         = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); }\n\tSYS___SEMCTL       = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_SHMCTL         = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_MSGCTL         = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_SCHED_YIELD    = 298 // { int sys_sched_yield(void); }\n\tSYS_GETTHRID       = 299 // { pid_t sys_getthrid(void); }\n\tSYS___THRWAKEUP    = 301 // { int sys___thrwakeup(const volatile void *ident, int n); }\n\tSYS___THREXIT      = 302 // { void sys___threxit(pid_t *notdead); }\n\tSYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); }\n\tSYS___GETCWD       = 304 // { int sys___getcwd(char *buf, size_t len); }\n\tSYS_ADJFREQ        = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); }\n\tSYS_SETRTABLE      = 310 // { int sys_setrtable(int rtableid); }\n\tSYS_GETRTABLE      = 311 // { int sys_getrtable(void); }\n\tSYS_FACCESSAT      = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); }\n\tSYS_FCHMODAT       = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT       = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); }\n\tSYS_LINKAT         = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); }\n\tSYS_MKDIRAT        = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); }\n\tSYS_MKFIFOAT       = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); }\n\tSYS_MKNODAT        = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); }\n\tSYS_OPENAT         = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); }\n\tSYS_READLINKAT     = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); }\n\tSYS_RENAMEAT       = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); }\n\tSYS_SYMLINKAT      = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); }\n\tSYS_UNLINKAT       = 325 // { int sys_unlinkat(int fd, const char *path, int flag); }\n\tSYS___SET_TCB      = 329 // { void sys___set_tcb(void *tcb); }\n\tSYS___GET_TCB      = 330 // { void *sys___get_tcb(void); }\n)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsysnum_openbsd_riscv64.go",
    "content": "// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build riscv64 && openbsd\n\npackage unix\n\n// Deprecated: Use libc wrappers instead of direct syscalls.\nconst (\n\tSYS_EXIT           = 1   // { void sys_exit(int rval); }\n\tSYS_FORK           = 2   // { int sys_fork(void); }\n\tSYS_READ           = 3   // { ssize_t sys_read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE          = 4   // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN           = 5   // { int sys_open(const char *path, int flags, ... mode_t mode); }\n\tSYS_CLOSE          = 6   // { int sys_close(int fd); }\n\tSYS_GETENTROPY     = 7   // { int sys_getentropy(void *buf, size_t nbyte); }\n\tSYS___TFORK        = 8   // { int sys___tfork(const struct __tfork *param, size_t psize); }\n\tSYS_LINK           = 9   // { int sys_link(const char *path, const char *link); }\n\tSYS_UNLINK         = 10  // { int sys_unlink(const char *path); }\n\tSYS_WAIT4          = 11  // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); }\n\tSYS_CHDIR          = 12  // { int sys_chdir(const char *path); }\n\tSYS_FCHDIR         = 13  // { int sys_fchdir(int fd); }\n\tSYS_MKNOD          = 14  // { int sys_mknod(const char *path, mode_t mode, dev_t dev); }\n\tSYS_CHMOD          = 15  // { int sys_chmod(const char *path, mode_t mode); }\n\tSYS_CHOWN          = 16  // { int sys_chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_OBREAK         = 17  // { int sys_obreak(char *nsize); } break\n\tSYS_GETDTABLECOUNT = 18  // { int sys_getdtablecount(void); }\n\tSYS_GETRUSAGE      = 19  // { int sys_getrusage(int who, struct rusage *rusage); }\n\tSYS_GETPID         = 20  // { pid_t sys_getpid(void); }\n\tSYS_MOUNT          = 21  // { int sys_mount(const char *type, const char *path, int flags, void *data); }\n\tSYS_UNMOUNT        = 22  // { int sys_unmount(const char *path, int flags); }\n\tSYS_SETUID         = 23  // { int sys_setuid(uid_t uid); }\n\tSYS_GETUID         = 24  // { uid_t sys_getuid(void); }\n\tSYS_GETEUID        = 25  // { uid_t sys_geteuid(void); }\n\tSYS_PTRACE         = 26  // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG        = 27  // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG        = 28  // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); }\n\tSYS_RECVFROM       = 29  // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }\n\tSYS_ACCEPT         = 30  // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); }\n\tSYS_GETPEERNAME    = 31  // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_GETSOCKNAME    = 32  // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_ACCESS         = 33  // { int sys_access(const char *path, int amode); }\n\tSYS_CHFLAGS        = 34  // { int sys_chflags(const char *path, u_int flags); }\n\tSYS_FCHFLAGS       = 35  // { int sys_fchflags(int fd, u_int flags); }\n\tSYS_SYNC           = 36  // { void sys_sync(void); }\n\tSYS_STAT           = 38  // { int sys_stat(const char *path, struct stat *ub); }\n\tSYS_GETPPID        = 39  // { pid_t sys_getppid(void); }\n\tSYS_LSTAT          = 40  // { int sys_lstat(const char *path, struct stat *ub); }\n\tSYS_DUP            = 41  // { int sys_dup(int fd); }\n\tSYS_FSTATAT        = 42  // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); }\n\tSYS_GETEGID        = 43  // { gid_t sys_getegid(void); }\n\tSYS_PROFIL         = 44  // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE         = 45  // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); }\n\tSYS_SIGACTION      = 46  // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); }\n\tSYS_GETGID         = 47  // { gid_t sys_getgid(void); }\n\tSYS_SIGPROCMASK    = 48  // { int sys_sigprocmask(int how, sigset_t mask); }\n\tSYS_SETLOGIN       = 50  // { int sys_setlogin(const char *namebuf); }\n\tSYS_ACCT           = 51  // { int sys_acct(const char *path); }\n\tSYS_SIGPENDING     = 52  // { int sys_sigpending(void); }\n\tSYS_FSTAT          = 53  // { int sys_fstat(int fd, struct stat *sb); }\n\tSYS_IOCTL          = 54  // { int sys_ioctl(int fd, u_long com, ... void *data); }\n\tSYS_REBOOT         = 55  // { int sys_reboot(int opt); }\n\tSYS_REVOKE         = 56  // { int sys_revoke(const char *path); }\n\tSYS_SYMLINK        = 57  // { int sys_symlink(const char *path, const char *link); }\n\tSYS_READLINK       = 58  // { ssize_t sys_readlink(const char *path, char *buf, size_t count); }\n\tSYS_EXECVE         = 59  // { int sys_execve(const char *path, char * const *argp, char * const *envp); }\n\tSYS_UMASK          = 60  // { mode_t sys_umask(mode_t newmask); }\n\tSYS_CHROOT         = 61  // { int sys_chroot(const char *path); }\n\tSYS_GETFSSTAT      = 62  // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); }\n\tSYS_STATFS         = 63  // { int sys_statfs(const char *path, struct statfs *buf); }\n\tSYS_FSTATFS        = 64  // { int sys_fstatfs(int fd, struct statfs *buf); }\n\tSYS_FHSTATFS       = 65  // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); }\n\tSYS_VFORK          = 66  // { int sys_vfork(void); }\n\tSYS_GETTIMEOFDAY   = 67  // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_SETTIMEOFDAY   = 68  // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); }\n\tSYS_SETITIMER      = 69  // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_GETITIMER      = 70  // { int sys_getitimer(int which, struct itimerval *itv); }\n\tSYS_SELECT         = 71  // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_KEVENT         = 72  // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_MUNMAP         = 73  // { int sys_munmap(void *addr, size_t len); }\n\tSYS_MPROTECT       = 74  // { int sys_mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE        = 75  // { int sys_madvise(void *addr, size_t len, int behav); }\n\tSYS_UTIMES         = 76  // { int sys_utimes(const char *path, const struct timeval *tptr); }\n\tSYS_FUTIMES        = 77  // { int sys_futimes(int fd, const struct timeval *tptr); }\n\tSYS_GETGROUPS      = 79  // { int sys_getgroups(int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS      = 80  // { int sys_setgroups(int gidsetsize, const gid_t *gidset); }\n\tSYS_GETPGRP        = 81  // { int sys_getpgrp(void); }\n\tSYS_SETPGID        = 82  // { int sys_setpgid(pid_t pid, pid_t pgid); }\n\tSYS_FUTEX          = 83  // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); }\n\tSYS_UTIMENSAT      = 84  // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); }\n\tSYS_FUTIMENS       = 85  // { int sys_futimens(int fd, const struct timespec *times); }\n\tSYS_KBIND          = 86  // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); }\n\tSYS_CLOCK_GETTIME  = 87  // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME  = 88  // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES   = 89  // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_DUP2           = 90  // { int sys_dup2(int from, int to); }\n\tSYS_NANOSLEEP      = 91  // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_FCNTL          = 92  // { int sys_fcntl(int fd, int cmd, ... void *arg); }\n\tSYS_ACCEPT4        = 93  // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); }\n\tSYS___THRSLEEP     = 94  // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); }\n\tSYS_FSYNC          = 95  // { int sys_fsync(int fd); }\n\tSYS_SETPRIORITY    = 96  // { int sys_setpriority(int which, id_t who, int prio); }\n\tSYS_SOCKET         = 97  // { int sys_socket(int domain, int type, int protocol); }\n\tSYS_CONNECT        = 98  // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_GETDENTS       = 99  // { int sys_getdents(int fd, void *buf, size_t buflen); }\n\tSYS_GETPRIORITY    = 100 // { int sys_getpriority(int which, id_t who); }\n\tSYS_PIPE2          = 101 // { int sys_pipe2(int *fdp, int flags); }\n\tSYS_DUP3           = 102 // { int sys_dup3(int from, int to, int flags); }\n\tSYS_SIGRETURN      = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); }\n\tSYS_BIND           = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_SETSOCKOPT     = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }\n\tSYS_LISTEN         = 106 // { int sys_listen(int s, int backlog); }\n\tSYS_CHFLAGSAT      = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); }\n\tSYS_PLEDGE         = 108 // { int sys_pledge(const char *promises, const char *execpromises); }\n\tSYS_PPOLL          = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_PSELECT        = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_SIGSUSPEND     = 111 // { int sys_sigsuspend(int mask); }\n\tSYS_SENDSYSLOG     = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); }\n\tSYS_UNVEIL         = 114 // { int sys_unveil(const char *path, const char *permissions); }\n\tSYS_GETSOCKOPT     = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }\n\tSYS_THRKILL        = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); }\n\tSYS_READV          = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_WRITEV         = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_KILL           = 122 // { int sys_kill(int pid, int signum); }\n\tSYS_FCHOWN         = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS_FCHMOD         = 124 // { int sys_fchmod(int fd, mode_t mode); }\n\tSYS_SETREUID       = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); }\n\tSYS_SETREGID       = 127 // { int sys_setregid(gid_t rgid, gid_t egid); }\n\tSYS_RENAME         = 128 // { int sys_rename(const char *from, const char *to); }\n\tSYS_FLOCK          = 131 // { int sys_flock(int fd, int how); }\n\tSYS_MKFIFO         = 132 // { int sys_mkfifo(const char *path, mode_t mode); }\n\tSYS_SENDTO         = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }\n\tSYS_SHUTDOWN       = 134 // { int sys_shutdown(int s, int how); }\n\tSYS_SOCKETPAIR     = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR          = 136 // { int sys_mkdir(const char *path, mode_t mode); }\n\tSYS_RMDIR          = 137 // { int sys_rmdir(const char *path); }\n\tSYS_ADJTIME        = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); }\n\tSYS_GETLOGIN_R     = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); }\n\tSYS_SETSID         = 147 // { int sys_setsid(void); }\n\tSYS_QUOTACTL       = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); }\n\tSYS_NFSSVC         = 155 // { int sys_nfssvc(int flag, void *argp); }\n\tSYS_GETFH          = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); }\n\tSYS_SYSARCH        = 165 // { int sys_sysarch(int op, void *parms); }\n\tSYS_PREAD          = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_PWRITE         = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_SETGID         = 181 // { int sys_setgid(gid_t gid); }\n\tSYS_SETEGID        = 182 // { int sys_setegid(gid_t egid); }\n\tSYS_SETEUID        = 183 // { int sys_seteuid(uid_t euid); }\n\tSYS_PATHCONF       = 191 // { long sys_pathconf(const char *path, int name); }\n\tSYS_FPATHCONF      = 192 // { long sys_fpathconf(int fd, int name); }\n\tSYS_SWAPCTL        = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); }\n\tSYS_GETRLIMIT      = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); }\n\tSYS_SETRLIMIT      = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); }\n\tSYS_MMAP           = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_LSEEK          = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); }\n\tSYS_TRUNCATE       = 200 // { int sys_truncate(const char *path, int pad, off_t length); }\n\tSYS_FTRUNCATE      = 201 // { int sys_ftruncate(int fd, int pad, off_t length); }\n\tSYS_SYSCTL         = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }\n\tSYS_MLOCK          = 203 // { int sys_mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK        = 204 // { int sys_munlock(const void *addr, size_t len); }\n\tSYS_GETPGID        = 207 // { pid_t sys_getpgid(pid_t pid); }\n\tSYS_UTRACE         = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); }\n\tSYS_SEMGET         = 221 // { int sys_semget(key_t key, int nsems, int semflg); }\n\tSYS_MSGGET         = 225 // { int sys_msgget(key_t key, int msgflg); }\n\tSYS_MSGSND         = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV         = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT          = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT          = 230 // { int sys_shmdt(const void *shmaddr); }\n\tSYS_MINHERIT       = 250 // { int sys_minherit(void *addr, size_t len, int inherit); }\n\tSYS_POLL           = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_ISSETUGID      = 253 // { int sys_issetugid(void); }\n\tSYS_LCHOWN         = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_GETSID         = 255 // { pid_t sys_getsid(pid_t pid); }\n\tSYS_MSYNC          = 256 // { int sys_msync(void *addr, size_t len, int flags); }\n\tSYS_PIPE           = 263 // { int sys_pipe(int *fdp); }\n\tSYS_FHOPEN         = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); }\n\tSYS_PREADV         = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_PWRITEV        = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_KQUEUE         = 269 // { int sys_kqueue(void); }\n\tSYS_MLOCKALL       = 271 // { int sys_mlockall(int flags); }\n\tSYS_MUNLOCKALL     = 272 // { int sys_munlockall(void); }\n\tSYS_GETRESUID      = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_SETRESUID      = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_GETRESGID      = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_SETRESGID      = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_MQUERY         = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_CLOSEFROM      = 287 // { int sys_closefrom(int fd); }\n\tSYS_SIGALTSTACK    = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); }\n\tSYS_SHMGET         = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); }\n\tSYS_SEMOP          = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_FHSTAT         = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); }\n\tSYS___SEMCTL       = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_SHMCTL         = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_MSGCTL         = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_SCHED_YIELD    = 298 // { int sys_sched_yield(void); }\n\tSYS_GETTHRID       = 299 // { pid_t sys_getthrid(void); }\n\tSYS___THRWAKEUP    = 301 // { int sys___thrwakeup(const volatile void *ident, int n); }\n\tSYS___THREXIT      = 302 // { void sys___threxit(pid_t *notdead); }\n\tSYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); }\n\tSYS___GETCWD       = 304 // { int sys___getcwd(char *buf, size_t len); }\n\tSYS_ADJFREQ        = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); }\n\tSYS_SETRTABLE      = 310 // { int sys_setrtable(int rtableid); }\n\tSYS_GETRTABLE      = 311 // { int sys_getrtable(void); }\n\tSYS_FACCESSAT      = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); }\n\tSYS_FCHMODAT       = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT       = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); }\n\tSYS_LINKAT         = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); }\n\tSYS_MKDIRAT        = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); }\n\tSYS_MKFIFOAT       = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); }\n\tSYS_MKNODAT        = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); }\n\tSYS_OPENAT         = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); }\n\tSYS_READLINKAT     = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); }\n\tSYS_RENAMEAT       = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); }\n\tSYS_SYMLINKAT      = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); }\n\tSYS_UNLINKAT       = 325 // { int sys_unlinkat(int fd, const char *path, int flag); }\n\tSYS___SET_TCB      = 329 // { void sys___set_tcb(void *tcb); }\n\tSYS___GET_TCB      = 330 // { void *sys___get_tcb(void); }\n)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/zsysnum_zos_s390x.go",
    "content": "// go run mksyscall_zos_s390x.go -o_sysnum zsysnum_zos_s390x.go -o_syscall zsyscall_zos_s390x.go -i_syscall syscall_zos_s390x.go -o_asm zsymaddr_zos_s390x.s\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build zos && s390x\n\npackage unix\n\nconst (\n\tSYS_LOG                             = 0x17  // 23\n\tSYS_COSH                            = 0x18  // 24\n\tSYS_TANH                            = 0x19  // 25\n\tSYS_EXP                             = 0x1A  // 26\n\tSYS_MODF                            = 0x1B  // 27\n\tSYS_LOG10                           = 0x1C  // 28\n\tSYS_FREXP                           = 0x1D  // 29\n\tSYS_LDEXP                           = 0x1E  // 30\n\tSYS_CEIL                            = 0x1F  // 31\n\tSYS_POW                             = 0x20  // 32\n\tSYS_SQRT                            = 0x21  // 33\n\tSYS_FLOOR                           = 0x22  // 34\n\tSYS_J1                              = 0x23  // 35\n\tSYS_FABS                            = 0x24  // 36\n\tSYS_FMOD                            = 0x25  // 37\n\tSYS_J0                              = 0x26  // 38\n\tSYS_YN                              = 0x27  // 39\n\tSYS_JN                              = 0x28  // 40\n\tSYS_Y0                              = 0x29  // 41\n\tSYS_Y1                              = 0x2A  // 42\n\tSYS_HYPOT                           = 0x2B  // 43\n\tSYS_ERF                             = 0x2C  // 44\n\tSYS_ERFC                            = 0x2D  // 45\n\tSYS_GAMMA                           = 0x2E  // 46\n\tSYS_ISALPHA                         = 0x30  // 48\n\tSYS_ISALNUM                         = 0x31  // 49\n\tSYS_ISLOWER                         = 0x32  // 50\n\tSYS_ISCNTRL                         = 0x33  // 51\n\tSYS_ISDIGIT                         = 0x34  // 52\n\tSYS_ISGRAPH                         = 0x35  // 53\n\tSYS_ISUPPER                         = 0x36  // 54\n\tSYS_ISPRINT                         = 0x37  // 55\n\tSYS_ISPUNCT                         = 0x38  // 56\n\tSYS_ISSPACE                         = 0x39  // 57\n\tSYS_SETLOCAL                        = 0x3A  // 58\n\tSYS_SETLOCALE                       = 0x3A  // 58\n\tSYS_ISXDIGIT                        = 0x3B  // 59\n\tSYS_TOLOWER                         = 0x3C  // 60\n\tSYS_TOUPPER                         = 0x3D  // 61\n\tSYS_ASIN                            = 0x3E  // 62\n\tSYS_SIN                             = 0x3F  // 63\n\tSYS_COS                             = 0x40  // 64\n\tSYS_TAN                             = 0x41  // 65\n\tSYS_SINH                            = 0x42  // 66\n\tSYS_ACOS                            = 0x43  // 67\n\tSYS_ATAN                            = 0x44  // 68\n\tSYS_ATAN2                           = 0x45  // 69\n\tSYS_FTELL                           = 0x46  // 70\n\tSYS_FGETPOS                         = 0x47  // 71\n\tSYS_FSEEK                           = 0x48  // 72\n\tSYS_FSETPOS                         = 0x49  // 73\n\tSYS_FERROR                          = 0x4A  // 74\n\tSYS_REWIND                          = 0x4B  // 75\n\tSYS_CLEARERR                        = 0x4C  // 76\n\tSYS_FEOF                            = 0x4D  // 77\n\tSYS_ATOL                            = 0x4E  // 78\n\tSYS_PERROR                          = 0x4F  // 79\n\tSYS_ATOF                            = 0x50  // 80\n\tSYS_ATOI                            = 0x51  // 81\n\tSYS_RAND                            = 0x52  // 82\n\tSYS_STRTOD                          = 0x53  // 83\n\tSYS_STRTOL                          = 0x54  // 84\n\tSYS_STRTOUL                         = 0x55  // 85\n\tSYS_MALLOC                          = 0x56  // 86\n\tSYS_SRAND                           = 0x57  // 87\n\tSYS_CALLOC                          = 0x58  // 88\n\tSYS_FREE                            = 0x59  // 89\n\tSYS_EXIT                            = 0x5A  // 90\n\tSYS_REALLOC                         = 0x5B  // 91\n\tSYS_ABORT                           = 0x5C  // 92\n\tSYS___ABORT                         = 0x5C  // 92\n\tSYS_ATEXIT                          = 0x5D  // 93\n\tSYS_RAISE                           = 0x5E  // 94\n\tSYS_SETJMP                          = 0x5F  // 95\n\tSYS_LONGJMP                         = 0x60  // 96\n\tSYS_SIGNAL                          = 0x61  // 97\n\tSYS_TMPNAM                          = 0x62  // 98\n\tSYS_REMOVE                          = 0x63  // 99\n\tSYS_RENAME                          = 0x64  // 100\n\tSYS_TMPFILE                         = 0x65  // 101\n\tSYS_FREOPEN                         = 0x66  // 102\n\tSYS_FCLOSE                          = 0x67  // 103\n\tSYS_FFLUSH                          = 0x68  // 104\n\tSYS_FOPEN                           = 0x69  // 105\n\tSYS_FSCANF                          = 0x6A  // 106\n\tSYS_SETBUF                          = 0x6B  // 107\n\tSYS_SETVBUF                         = 0x6C  // 108\n\tSYS_FPRINTF                         = 0x6D  // 109\n\tSYS_SSCANF                          = 0x6E  // 110\n\tSYS_PRINTF                          = 0x6F  // 111\n\tSYS_SCANF                           = 0x70  // 112\n\tSYS_SPRINTF                         = 0x71  // 113\n\tSYS_FGETC                           = 0x72  // 114\n\tSYS_VFPRINTF                        = 0x73  // 115\n\tSYS_VPRINTF                         = 0x74  // 116\n\tSYS_VSPRINTF                        = 0x75  // 117\n\tSYS_GETC                            = 0x76  // 118\n\tSYS_FGETS                           = 0x77  // 119\n\tSYS_FPUTC                           = 0x78  // 120\n\tSYS_FPUTS                           = 0x79  // 121\n\tSYS_PUTCHAR                         = 0x7A  // 122\n\tSYS_GETCHAR                         = 0x7B  // 123\n\tSYS_GETS                            = 0x7C  // 124\n\tSYS_PUTC                            = 0x7D  // 125\n\tSYS_FWRITE                          = 0x7E  // 126\n\tSYS_PUTS                            = 0x7F  // 127\n\tSYS_UNGETC                          = 0x80  // 128\n\tSYS_FREAD                           = 0x81  // 129\n\tSYS_WCSTOMBS                        = 0x82  // 130\n\tSYS_MBTOWC                          = 0x83  // 131\n\tSYS_WCTOMB                          = 0x84  // 132\n\tSYS_MBSTOWCS                        = 0x85  // 133\n\tSYS_WCSCPY                          = 0x86  // 134\n\tSYS_WCSCAT                          = 0x87  // 135\n\tSYS_WCSCHR                          = 0x88  // 136\n\tSYS_WCSCMP                          = 0x89  // 137\n\tSYS_WCSNCMP                         = 0x8A  // 138\n\tSYS_WCSCSPN                         = 0x8B  // 139\n\tSYS_WCSLEN                          = 0x8C  // 140\n\tSYS_WCSNCAT                         = 0x8D  // 141\n\tSYS_WCSSPN                          = 0x8E  // 142\n\tSYS_WCSNCPY                         = 0x8F  // 143\n\tSYS_ABS                             = 0x90  // 144\n\tSYS_DIV                             = 0x91  // 145\n\tSYS_LABS                            = 0x92  // 146\n\tSYS_STRNCPY                         = 0x93  // 147\n\tSYS_MEMCPY                          = 0x94  // 148\n\tSYS_MEMMOVE                         = 0x95  // 149\n\tSYS_STRCPY                          = 0x96  // 150\n\tSYS_STRCMP                          = 0x97  // 151\n\tSYS_STRCAT                          = 0x98  // 152\n\tSYS_STRNCAT                         = 0x99  // 153\n\tSYS_MEMCMP                          = 0x9A  // 154\n\tSYS_MEMCHR                          = 0x9B  // 155\n\tSYS_STRCOLL                         = 0x9C  // 156\n\tSYS_STRNCMP                         = 0x9D  // 157\n\tSYS_STRXFRM                         = 0x9E  // 158\n\tSYS_STRRCHR                         = 0x9F  // 159\n\tSYS_STRCHR                          = 0xA0  // 160\n\tSYS_STRCSPN                         = 0xA1  // 161\n\tSYS_STRPBRK                         = 0xA2  // 162\n\tSYS_MEMSET                          = 0xA3  // 163\n\tSYS_STRSPN                          = 0xA4  // 164\n\tSYS_STRSTR                          = 0xA5  // 165\n\tSYS_STRTOK                          = 0xA6  // 166\n\tSYS_DIFFTIME                        = 0xA7  // 167\n\tSYS_STRERROR                        = 0xA8  // 168\n\tSYS_STRLEN                          = 0xA9  // 169\n\tSYS_CLOCK                           = 0xAA  // 170\n\tSYS_CTIME                           = 0xAB  // 171\n\tSYS_MKTIME                          = 0xAC  // 172\n\tSYS_TIME                            = 0xAD  // 173\n\tSYS_ASCTIME                         = 0xAE  // 174\n\tSYS_MBLEN                           = 0xAF  // 175\n\tSYS_GMTIME                          = 0xB0  // 176\n\tSYS_LOCALTIM                        = 0xB1  // 177\n\tSYS_LOCALTIME                       = 0xB1  // 177\n\tSYS_STRFTIME                        = 0xB2  // 178\n\tSYS___GETCB                         = 0xB4  // 180\n\tSYS_FUPDATE                         = 0xB5  // 181\n\tSYS___FUPDT                         = 0xB5  // 181\n\tSYS_CLRMEMF                         = 0xBD  // 189\n\tSYS___CLRMF                         = 0xBD  // 189\n\tSYS_FETCHEP                         = 0xBF  // 191\n\tSYS___FTCHEP                        = 0xBF  // 191\n\tSYS_FLDATA                          = 0xC1  // 193\n\tSYS___FLDATA                        = 0xC1  // 193\n\tSYS_DYNFREE                         = 0xC2  // 194\n\tSYS___DYNFRE                        = 0xC2  // 194\n\tSYS_DYNALLOC                        = 0xC3  // 195\n\tSYS___DYNALL                        = 0xC3  // 195\n\tSYS___CDUMP                         = 0xC4  // 196\n\tSYS_CSNAP                           = 0xC5  // 197\n\tSYS___CSNAP                         = 0xC5  // 197\n\tSYS_CTRACE                          = 0xC6  // 198\n\tSYS___CTRACE                        = 0xC6  // 198\n\tSYS___CTEST                         = 0xC7  // 199\n\tSYS_SETENV                          = 0xC8  // 200\n\tSYS___SETENV                        = 0xC8  // 200\n\tSYS_CLEARENV                        = 0xC9  // 201\n\tSYS___CLRENV                        = 0xC9  // 201\n\tSYS___REGCOMP_STD                   = 0xEA  // 234\n\tSYS_NL_LANGINFO                     = 0xFC  // 252\n\tSYS_GETSYNTX                        = 0xFD  // 253\n\tSYS_ISBLANK                         = 0xFE  // 254\n\tSYS___ISBLNK                        = 0xFE  // 254\n\tSYS_ISWALNUM                        = 0xFF  // 255\n\tSYS_ISWALPHA                        = 0x100 // 256\n\tSYS_ISWBLANK                        = 0x101 // 257\n\tSYS___ISWBLK                        = 0x101 // 257\n\tSYS_ISWCNTRL                        = 0x102 // 258\n\tSYS_ISWDIGIT                        = 0x103 // 259\n\tSYS_ISWGRAPH                        = 0x104 // 260\n\tSYS_ISWLOWER                        = 0x105 // 261\n\tSYS_ISWPRINT                        = 0x106 // 262\n\tSYS_ISWPUNCT                        = 0x107 // 263\n\tSYS_ISWSPACE                        = 0x108 // 264\n\tSYS_ISWUPPER                        = 0x109 // 265\n\tSYS_ISWXDIGI                        = 0x10A // 266\n\tSYS_ISWXDIGIT                       = 0x10A // 266\n\tSYS_WCTYPE                          = 0x10B // 267\n\tSYS_ISWCTYPE                        = 0x10C // 268\n\tSYS_TOWLOWER                        = 0x10D // 269\n\tSYS_TOWUPPER                        = 0x10E // 270\n\tSYS_MBSINIT                         = 0x10F // 271\n\tSYS_WCTOB                           = 0x110 // 272\n\tSYS_MBRLEN                          = 0x111 // 273\n\tSYS_MBRTOWC                         = 0x112 // 274\n\tSYS_MBSRTOWC                        = 0x113 // 275\n\tSYS_MBSRTOWCS                       = 0x113 // 275\n\tSYS_WCRTOMB                         = 0x114 // 276\n\tSYS_WCSRTOMB                        = 0x115 // 277\n\tSYS_WCSRTOMBS                       = 0x115 // 277\n\tSYS___CSID                          = 0x116 // 278\n\tSYS___WCSID                         = 0x117 // 279\n\tSYS_STRPTIME                        = 0x118 // 280\n\tSYS___STRPTM                        = 0x118 // 280\n\tSYS_STRFMON                         = 0x119 // 281\n\tSYS___RPMTCH                        = 0x11A // 282\n\tSYS_WCSSTR                          = 0x11B // 283\n\tSYS_WCSTOK                          = 0x12C // 300\n\tSYS_WCSTOL                          = 0x12D // 301\n\tSYS_WCSTOD                          = 0x12E // 302\n\tSYS_WCSTOUL                         = 0x12F // 303\n\tSYS_WCSCOLL                         = 0x130 // 304\n\tSYS_WCSXFRM                         = 0x131 // 305\n\tSYS_WCSWIDTH                        = 0x132 // 306\n\tSYS_WCWIDTH                         = 0x133 // 307\n\tSYS_WCSFTIME                        = 0x134 // 308\n\tSYS_SWPRINTF                        = 0x135 // 309\n\tSYS_VSWPRINT                        = 0x136 // 310\n\tSYS_VSWPRINTF                       = 0x136 // 310\n\tSYS_SWSCANF                         = 0x137 // 311\n\tSYS_REGCOMP                         = 0x138 // 312\n\tSYS_REGEXEC                         = 0x139 // 313\n\tSYS_REGFREE                         = 0x13A // 314\n\tSYS_REGERROR                        = 0x13B // 315\n\tSYS_FGETWC                          = 0x13C // 316\n\tSYS_FGETWS                          = 0x13D // 317\n\tSYS_FPUTWC                          = 0x13E // 318\n\tSYS_FPUTWS                          = 0x13F // 319\n\tSYS_GETWC                           = 0x140 // 320\n\tSYS_GETWCHAR                        = 0x141 // 321\n\tSYS_PUTWC                           = 0x142 // 322\n\tSYS_PUTWCHAR                        = 0x143 // 323\n\tSYS_UNGETWC                         = 0x144 // 324\n\tSYS_ICONV_OPEN                      = 0x145 // 325\n\tSYS_ICONV                           = 0x146 // 326\n\tSYS_ICONV_CLOSE                     = 0x147 // 327\n\tSYS_ISMCCOLLEL                      = 0x14C // 332\n\tSYS_STRTOCOLL                       = 0x14D // 333\n\tSYS_COLLTOSTR                       = 0x14E // 334\n\tSYS_COLLEQUIV                       = 0x14F // 335\n\tSYS_COLLRANGE                       = 0x150 // 336\n\tSYS_CCLASS                          = 0x151 // 337\n\tSYS_COLLORDER                       = 0x152 // 338\n\tSYS___DEMANGLE                      = 0x154 // 340\n\tSYS_FDOPEN                          = 0x155 // 341\n\tSYS___ERRNO                         = 0x156 // 342\n\tSYS___ERRNO2                        = 0x157 // 343\n\tSYS___TERROR                        = 0x158 // 344\n\tSYS_MAXCOLL                         = 0x169 // 361\n\tSYS_GETMCCOLL                       = 0x16A // 362\n\tSYS_GETWMCCOLL                      = 0x16B // 363\n\tSYS___ERR2AD                        = 0x16C // 364\n\tSYS_DLLQUERYFN                      = 0x16D // 365\n\tSYS_DLLQUERYVAR                     = 0x16E // 366\n\tSYS_DLLFREE                         = 0x16F // 367\n\tSYS_DLLLOAD                         = 0x170 // 368\n\tSYS__EXIT                           = 0x174 // 372\n\tSYS_ACCESS                          = 0x175 // 373\n\tSYS_ALARM                           = 0x176 // 374\n\tSYS_CFGETISPEED                     = 0x177 // 375\n\tSYS_CFGETOSPEED                     = 0x178 // 376\n\tSYS_CFSETISPEED                     = 0x179 // 377\n\tSYS_CFSETOSPEED                     = 0x17A // 378\n\tSYS_CHDIR                           = 0x17B // 379\n\tSYS_CHMOD                           = 0x17C // 380\n\tSYS_CHOWN                           = 0x17D // 381\n\tSYS_CLOSE                           = 0x17E // 382\n\tSYS_CLOSEDIR                        = 0x17F // 383\n\tSYS_CREAT                           = 0x180 // 384\n\tSYS_CTERMID                         = 0x181 // 385\n\tSYS_DUP                             = 0x182 // 386\n\tSYS_DUP2                            = 0x183 // 387\n\tSYS_EXECL                           = 0x184 // 388\n\tSYS_EXECLE                          = 0x185 // 389\n\tSYS_EXECLP                          = 0x186 // 390\n\tSYS_EXECV                           = 0x187 // 391\n\tSYS_EXECVE                          = 0x188 // 392\n\tSYS_EXECVP                          = 0x189 // 393\n\tSYS_FCHMOD                          = 0x18A // 394\n\tSYS_FCHOWN                          = 0x18B // 395\n\tSYS_FCNTL                           = 0x18C // 396\n\tSYS_FILENO                          = 0x18D // 397\n\tSYS_FORK                            = 0x18E // 398\n\tSYS_FPATHCONF                       = 0x18F // 399\n\tSYS_FSTAT                           = 0x190 // 400\n\tSYS_FSYNC                           = 0x191 // 401\n\tSYS_FTRUNCATE                       = 0x192 // 402\n\tSYS_GETCWD                          = 0x193 // 403\n\tSYS_GETEGID                         = 0x194 // 404\n\tSYS_GETEUID                         = 0x195 // 405\n\tSYS_GETGID                          = 0x196 // 406\n\tSYS_GETGRGID                        = 0x197 // 407\n\tSYS_GETGRNAM                        = 0x198 // 408\n\tSYS_GETGROUPS                       = 0x199 // 409\n\tSYS_GETLOGIN                        = 0x19A // 410\n\tSYS_W_GETMNTENT                     = 0x19B // 411\n\tSYS_GETPGRP                         = 0x19C // 412\n\tSYS_GETPID                          = 0x19D // 413\n\tSYS_GETPPID                         = 0x19E // 414\n\tSYS_GETPWNAM                        = 0x19F // 415\n\tSYS_GETPWUID                        = 0x1A0 // 416\n\tSYS_GETUID                          = 0x1A1 // 417\n\tSYS_W_IOCTL                         = 0x1A2 // 418\n\tSYS_ISATTY                          = 0x1A3 // 419\n\tSYS_KILL                            = 0x1A4 // 420\n\tSYS_LINK                            = 0x1A5 // 421\n\tSYS_LSEEK                           = 0x1A6 // 422\n\tSYS_LSTAT                           = 0x1A7 // 423\n\tSYS_MKDIR                           = 0x1A8 // 424\n\tSYS_MKFIFO                          = 0x1A9 // 425\n\tSYS_MKNOD                           = 0x1AA // 426\n\tSYS_MOUNT                           = 0x1AB // 427\n\tSYS_OPEN                            = 0x1AC // 428\n\tSYS_OPENDIR                         = 0x1AD // 429\n\tSYS_PATHCONF                        = 0x1AE // 430\n\tSYS_PAUSE                           = 0x1AF // 431\n\tSYS_PIPE                            = 0x1B0 // 432\n\tSYS_W_GETPSENT                      = 0x1B1 // 433\n\tSYS_READ                            = 0x1B2 // 434\n\tSYS_READDIR                         = 0x1B3 // 435\n\tSYS_READLINK                        = 0x1B4 // 436\n\tSYS_REWINDDIR                       = 0x1B5 // 437\n\tSYS_RMDIR                           = 0x1B6 // 438\n\tSYS_SETEGID                         = 0x1B7 // 439\n\tSYS_SETEUID                         = 0x1B8 // 440\n\tSYS_SETGID                          = 0x1B9 // 441\n\tSYS_SETPGID                         = 0x1BA // 442\n\tSYS_SETSID                          = 0x1BB // 443\n\tSYS_SETUID                          = 0x1BC // 444\n\tSYS_SIGACTION                       = 0x1BD // 445\n\tSYS_SIGADDSET                       = 0x1BE // 446\n\tSYS_SIGDELSET                       = 0x1BF // 447\n\tSYS_SIGEMPTYSET                     = 0x1C0 // 448\n\tSYS_SIGFILLSET                      = 0x1C1 // 449\n\tSYS_SIGISMEMBER                     = 0x1C2 // 450\n\tSYS_SIGLONGJMP                      = 0x1C3 // 451\n\tSYS_SIGPENDING                      = 0x1C4 // 452\n\tSYS_SIGPROCMASK                     = 0x1C5 // 453\n\tSYS_SIGSETJMP                       = 0x1C6 // 454\n\tSYS_SIGSUSPEND                      = 0x1C7 // 455\n\tSYS_SLEEP                           = 0x1C8 // 456\n\tSYS_STAT                            = 0x1C9 // 457\n\tSYS_W_STATFS                        = 0x1CA // 458\n\tSYS_SYMLINK                         = 0x1CB // 459\n\tSYS_SYSCONF                         = 0x1CC // 460\n\tSYS_TCDRAIN                         = 0x1CD // 461\n\tSYS_TCFLOW                          = 0x1CE // 462\n\tSYS_TCFLUSH                         = 0x1CF // 463\n\tSYS_TCGETATTR                       = 0x1D0 // 464\n\tSYS_TCGETPGRP                       = 0x1D1 // 465\n\tSYS_TCSENDBREAK                     = 0x1D2 // 466\n\tSYS_TCSETATTR                       = 0x1D3 // 467\n\tSYS_TCSETPGRP                       = 0x1D4 // 468\n\tSYS_TIMES                           = 0x1D5 // 469\n\tSYS_TTYNAME                         = 0x1D6 // 470\n\tSYS_TZSET                           = 0x1D7 // 471\n\tSYS_UMASK                           = 0x1D8 // 472\n\tSYS_UMOUNT                          = 0x1D9 // 473\n\tSYS_UNAME                           = 0x1DA // 474\n\tSYS_UNLINK                          = 0x1DB // 475\n\tSYS_UTIME                           = 0x1DC // 476\n\tSYS_WAIT                            = 0x1DD // 477\n\tSYS_WAITPID                         = 0x1DE // 478\n\tSYS_WRITE                           = 0x1DF // 479\n\tSYS_CHAUDIT                         = 0x1E0 // 480\n\tSYS_FCHAUDIT                        = 0x1E1 // 481\n\tSYS_GETGROUPSBYNAME                 = 0x1E2 // 482\n\tSYS_SIGWAIT                         = 0x1E3 // 483\n\tSYS_PTHREAD_EXIT                    = 0x1E4 // 484\n\tSYS_PTHREAD_KILL                    = 0x1E5 // 485\n\tSYS_PTHREAD_ATTR_INIT               = 0x1E6 // 486\n\tSYS_PTHREAD_ATTR_DESTROY            = 0x1E7 // 487\n\tSYS_PTHREAD_ATTR_SETSTACKSIZE       = 0x1E8 // 488\n\tSYS_PTHREAD_ATTR_GETSTACKSIZE       = 0x1E9 // 489\n\tSYS_PTHREAD_ATTR_SETDETACHSTATE     = 0x1EA // 490\n\tSYS_PTHREAD_ATTR_GETDETACHSTATE     = 0x1EB // 491\n\tSYS_PTHREAD_ATTR_SETWEIGHT_NP       = 0x1EC // 492\n\tSYS_PTHREAD_ATTR_GETWEIGHT_NP       = 0x1ED // 493\n\tSYS_PTHREAD_CANCEL                  = 0x1EE // 494\n\tSYS_PTHREAD_CLEANUP_PUSH            = 0x1EF // 495\n\tSYS_PTHREAD_CLEANUP_POP             = 0x1F0 // 496\n\tSYS_PTHREAD_CONDATTR_INIT           = 0x1F1 // 497\n\tSYS_PTHREAD_CONDATTR_DESTROY        = 0x1F2 // 498\n\tSYS_PTHREAD_COND_INIT               = 0x1F3 // 499\n\tSYS_PTHREAD_COND_DESTROY            = 0x1F4 // 500\n\tSYS_PTHREAD_COND_SIGNAL             = 0x1F5 // 501\n\tSYS_PTHREAD_COND_BROADCAST          = 0x1F6 // 502\n\tSYS_PTHREAD_COND_WAIT               = 0x1F7 // 503\n\tSYS_PTHREAD_COND_TIMEDWAIT          = 0x1F8 // 504\n\tSYS_PTHREAD_CREATE                  = 0x1F9 // 505\n\tSYS_PTHREAD_DETACH                  = 0x1FA // 506\n\tSYS_PTHREAD_EQUAL                   = 0x1FB // 507\n\tSYS_PTHREAD_GETSPECIFIC             = 0x1FC // 508\n\tSYS_PTHREAD_JOIN                    = 0x1FD // 509\n\tSYS_PTHREAD_KEY_CREATE              = 0x1FE // 510\n\tSYS_PTHREAD_MUTEXATTR_INIT          = 0x1FF // 511\n\tSYS_PTHREAD_MUTEXATTR_DESTROY       = 0x200 // 512\n\tSYS_PTHREAD_MUTEXATTR_SETKIND_NP    = 0x201 // 513\n\tSYS_PTHREAD_MUTEXATTR_GETKIND_NP    = 0x202 // 514\n\tSYS_PTHREAD_MUTEX_INIT              = 0x203 // 515\n\tSYS_PTHREAD_MUTEX_DESTROY           = 0x204 // 516\n\tSYS_PTHREAD_MUTEX_LOCK              = 0x205 // 517\n\tSYS_PTHREAD_MUTEX_TRYLOCK           = 0x206 // 518\n\tSYS_PTHREAD_MUTEX_UNLOCK            = 0x207 // 519\n\tSYS_PTHREAD_ONCE                    = 0x209 // 521\n\tSYS_PTHREAD_SELF                    = 0x20A // 522\n\tSYS_PTHREAD_SETINTR                 = 0x20B // 523\n\tSYS_PTHREAD_SETINTRTYPE             = 0x20C // 524\n\tSYS_PTHREAD_SETSPECIFIC             = 0x20D // 525\n\tSYS_PTHREAD_TESTINTR                = 0x20E // 526\n\tSYS_PTHREAD_YIELD                   = 0x20F // 527\n\tSYS_TW_OPEN                         = 0x210 // 528\n\tSYS_TW_FCNTL                        = 0x211 // 529\n\tSYS_PTHREAD_JOIN_D4_NP              = 0x212 // 530\n\tSYS_PTHREAD_CONDATTR_SETKIND_NP     = 0x213 // 531\n\tSYS_PTHREAD_CONDATTR_GETKIND_NP     = 0x214 // 532\n\tSYS_EXTLINK_NP                      = 0x215 // 533\n\tSYS___PASSWD                        = 0x216 // 534\n\tSYS_SETGROUPS                       = 0x217 // 535\n\tSYS_INITGROUPS                      = 0x218 // 536\n\tSYS_WCSPBRK                         = 0x23F // 575\n\tSYS_WCSRCHR                         = 0x240 // 576\n\tSYS_SVC99                           = 0x241 // 577\n\tSYS___SVC99                         = 0x241 // 577\n\tSYS_WCSWCS                          = 0x242 // 578\n\tSYS_LOCALECO                        = 0x243 // 579\n\tSYS_LOCALECONV                      = 0x243 // 579\n\tSYS___LIBREL                        = 0x244 // 580\n\tSYS_RELEASE                         = 0x245 // 581\n\tSYS___RLSE                          = 0x245 // 581\n\tSYS_FLOCATE                         = 0x246 // 582\n\tSYS___FLOCT                         = 0x246 // 582\n\tSYS_FDELREC                         = 0x247 // 583\n\tSYS___FDLREC                        = 0x247 // 583\n\tSYS_FETCH                           = 0x248 // 584\n\tSYS___FETCH                         = 0x248 // 584\n\tSYS_QSORT                           = 0x249 // 585\n\tSYS_GETENV                          = 0x24A // 586\n\tSYS_SYSTEM                          = 0x24B // 587\n\tSYS_BSEARCH                         = 0x24C // 588\n\tSYS_LDIV                            = 0x24D // 589\n\tSYS___THROW                         = 0x25E // 606\n\tSYS___RETHROW                       = 0x25F // 607\n\tSYS___CLEANUPCATCH                  = 0x260 // 608\n\tSYS___CATCHMATCH                    = 0x261 // 609\n\tSYS___CLEAN2UPCATCH                 = 0x262 // 610\n\tSYS_PUTENV                          = 0x26A // 618\n\tSYS___GETENV                        = 0x26F // 623\n\tSYS_GETPRIORITY                     = 0x270 // 624\n\tSYS_NICE                            = 0x271 // 625\n\tSYS_SETPRIORITY                     = 0x272 // 626\n\tSYS_GETITIMER                       = 0x273 // 627\n\tSYS_SETITIMER                       = 0x274 // 628\n\tSYS_MSGCTL                          = 0x275 // 629\n\tSYS_MSGGET                          = 0x276 // 630\n\tSYS_MSGRCV                          = 0x277 // 631\n\tSYS_MSGSND                          = 0x278 // 632\n\tSYS_MSGXRCV                         = 0x279 // 633\n\tSYS___MSGXR                         = 0x279 // 633\n\tSYS_SEMCTL                          = 0x27A // 634\n\tSYS_SEMGET                          = 0x27B // 635\n\tSYS_SEMOP                           = 0x27C // 636\n\tSYS_SHMAT                           = 0x27D // 637\n\tSYS_SHMCTL                          = 0x27E // 638\n\tSYS_SHMDT                           = 0x27F // 639\n\tSYS_SHMGET                          = 0x280 // 640\n\tSYS___GETIPC                        = 0x281 // 641\n\tSYS_SETGRENT                        = 0x282 // 642\n\tSYS_GETGRENT                        = 0x283 // 643\n\tSYS_ENDGRENT                        = 0x284 // 644\n\tSYS_SETPWENT                        = 0x285 // 645\n\tSYS_GETPWENT                        = 0x286 // 646\n\tSYS_ENDPWENT                        = 0x287 // 647\n\tSYS_BSD_SIGNAL                      = 0x288 // 648\n\tSYS_KILLPG                          = 0x289 // 649\n\tSYS_SIGALTSTACK                     = 0x28A // 650\n\tSYS_SIGHOLD                         = 0x28B // 651\n\tSYS_SIGIGNORE                       = 0x28C // 652\n\tSYS_SIGINTERRUPT                    = 0x28D // 653\n\tSYS_SIGPAUSE                        = 0x28E // 654\n\tSYS_SIGRELSE                        = 0x28F // 655\n\tSYS_SIGSET                          = 0x290 // 656\n\tSYS_SIGSTACK                        = 0x291 // 657\n\tSYS_GETRLIMIT                       = 0x292 // 658\n\tSYS_SETRLIMIT                       = 0x293 // 659\n\tSYS_GETRUSAGE                       = 0x294 // 660\n\tSYS_MMAP                            = 0x295 // 661\n\tSYS_MPROTECT                        = 0x296 // 662\n\tSYS_MSYNC                           = 0x297 // 663\n\tSYS_MUNMAP                          = 0x298 // 664\n\tSYS_CONFSTR                         = 0x299 // 665\n\tSYS_GETOPT                          = 0x29A // 666\n\tSYS_LCHOWN                          = 0x29B // 667\n\tSYS_TRUNCATE                        = 0x29C // 668\n\tSYS_GETSUBOPT                       = 0x29D // 669\n\tSYS_SETPGRP                         = 0x29E // 670\n\tSYS___GDERR                         = 0x29F // 671\n\tSYS___TZONE                         = 0x2A0 // 672\n\tSYS___DLGHT                         = 0x2A1 // 673\n\tSYS___OPARGF                        = 0x2A2 // 674\n\tSYS___OPOPTF                        = 0x2A3 // 675\n\tSYS___OPINDF                        = 0x2A4 // 676\n\tSYS___OPERRF                        = 0x2A5 // 677\n\tSYS_GETDATE                         = 0x2A6 // 678\n\tSYS_WAIT3                           = 0x2A7 // 679\n\tSYS_WAITID                          = 0x2A8 // 680\n\tSYS___CATTRM                        = 0x2A9 // 681\n\tSYS___GDTRM                         = 0x2AA // 682\n\tSYS___RNDTRM                        = 0x2AB // 683\n\tSYS_CRYPT                           = 0x2AC // 684\n\tSYS_ENCRYPT                         = 0x2AD // 685\n\tSYS_SETKEY                          = 0x2AE // 686\n\tSYS___CNVBLK                        = 0x2AF // 687\n\tSYS___CRYTRM                        = 0x2B0 // 688\n\tSYS___ECRTRM                        = 0x2B1 // 689\n\tSYS_DRAND48                         = 0x2B2 // 690\n\tSYS_ERAND48                         = 0x2B3 // 691\n\tSYS_FSTATVFS                        = 0x2B4 // 692\n\tSYS_STATVFS                         = 0x2B5 // 693\n\tSYS_CATCLOSE                        = 0x2B6 // 694\n\tSYS_CATGETS                         = 0x2B7 // 695\n\tSYS_CATOPEN                         = 0x2B8 // 696\n\tSYS_BCMP                            = 0x2B9 // 697\n\tSYS_BCOPY                           = 0x2BA // 698\n\tSYS_BZERO                           = 0x2BB // 699\n\tSYS_FFS                             = 0x2BC // 700\n\tSYS_INDEX                           = 0x2BD // 701\n\tSYS_RINDEX                          = 0x2BE // 702\n\tSYS_STRCASECMP                      = 0x2BF // 703\n\tSYS_STRDUP                          = 0x2C0 // 704\n\tSYS_STRNCASECMP                     = 0x2C1 // 705\n\tSYS_INITSTATE                       = 0x2C2 // 706\n\tSYS_SETSTATE                        = 0x2C3 // 707\n\tSYS_RANDOM                          = 0x2C4 // 708\n\tSYS_SRANDOM                         = 0x2C5 // 709\n\tSYS_HCREATE                         = 0x2C6 // 710\n\tSYS_HDESTROY                        = 0x2C7 // 711\n\tSYS_HSEARCH                         = 0x2C8 // 712\n\tSYS_LFIND                           = 0x2C9 // 713\n\tSYS_LSEARCH                         = 0x2CA // 714\n\tSYS_TDELETE                         = 0x2CB // 715\n\tSYS_TFIND                           = 0x2CC // 716\n\tSYS_TSEARCH                         = 0x2CD // 717\n\tSYS_TWALK                           = 0x2CE // 718\n\tSYS_INSQUE                          = 0x2CF // 719\n\tSYS_REMQUE                          = 0x2D0 // 720\n\tSYS_POPEN                           = 0x2D1 // 721\n\tSYS_PCLOSE                          = 0x2D2 // 722\n\tSYS_SWAB                            = 0x2D3 // 723\n\tSYS_MEMCCPY                         = 0x2D4 // 724\n\tSYS_GETPAGESIZE                     = 0x2D8 // 728\n\tSYS_FCHDIR                          = 0x2D9 // 729\n\tSYS___OCLCK                         = 0x2DA // 730\n\tSYS___ATOE                          = 0x2DB // 731\n\tSYS___ATOE_L                        = 0x2DC // 732\n\tSYS___ETOA                          = 0x2DD // 733\n\tSYS___ETOA_L                        = 0x2DE // 734\n\tSYS_SETUTXENT                       = 0x2DF // 735\n\tSYS_GETUTXENT                       = 0x2E0 // 736\n\tSYS_ENDUTXENT                       = 0x2E1 // 737\n\tSYS_GETUTXID                        = 0x2E2 // 738\n\tSYS_GETUTXLINE                      = 0x2E3 // 739\n\tSYS_PUTUTXLINE                      = 0x2E4 // 740\n\tSYS_FMTMSG                          = 0x2E5 // 741\n\tSYS_JRAND48                         = 0x2E6 // 742\n\tSYS_LRAND48                         = 0x2E7 // 743\n\tSYS_MRAND48                         = 0x2E8 // 744\n\tSYS_NRAND48                         = 0x2E9 // 745\n\tSYS_LCONG48                         = 0x2EA // 746\n\tSYS_SRAND48                         = 0x2EB // 747\n\tSYS_SEED48                          = 0x2EC // 748\n\tSYS_ISASCII                         = 0x2ED // 749\n\tSYS_TOASCII                         = 0x2EE // 750\n\tSYS_A64L                            = 0x2EF // 751\n\tSYS_L64A                            = 0x2F0 // 752\n\tSYS_UALARM                          = 0x2F1 // 753\n\tSYS_USLEEP                          = 0x2F2 // 754\n\tSYS___UTXTRM                        = 0x2F3 // 755\n\tSYS___SRCTRM                        = 0x2F4 // 756\n\tSYS_FTIME                           = 0x2F5 // 757\n\tSYS_GETTIMEOFDAY                    = 0x2F6 // 758\n\tSYS_DBM_CLEARERR                    = 0x2F7 // 759\n\tSYS_DBM_CLOSE                       = 0x2F8 // 760\n\tSYS_DBM_DELETE                      = 0x2F9 // 761\n\tSYS_DBM_ERROR                       = 0x2FA // 762\n\tSYS_DBM_FETCH                       = 0x2FB // 763\n\tSYS_DBM_FIRSTKEY                    = 0x2FC // 764\n\tSYS_DBM_NEXTKEY                     = 0x2FD // 765\n\tSYS_DBM_OPEN                        = 0x2FE // 766\n\tSYS_DBM_STORE                       = 0x2FF // 767\n\tSYS___NDMTRM                        = 0x300 // 768\n\tSYS_FTOK                            = 0x301 // 769\n\tSYS_BASENAME                        = 0x302 // 770\n\tSYS_DIRNAME                         = 0x303 // 771\n\tSYS_GETDTABLESIZE                   = 0x304 // 772\n\tSYS_MKSTEMP                         = 0x305 // 773\n\tSYS_MKTEMP                          = 0x306 // 774\n\tSYS_NFTW                            = 0x307 // 775\n\tSYS_GETWD                           = 0x308 // 776\n\tSYS_LOCKF                           = 0x309 // 777\n\tSYS__LONGJMP                        = 0x30D // 781\n\tSYS__SETJMP                         = 0x30E // 782\n\tSYS_VFORK                           = 0x30F // 783\n\tSYS_WORDEXP                         = 0x310 // 784\n\tSYS_WORDFREE                        = 0x311 // 785\n\tSYS_GETPGID                         = 0x312 // 786\n\tSYS_GETSID                          = 0x313 // 787\n\tSYS___UTMPXNAME                     = 0x314 // 788\n\tSYS_CUSERID                         = 0x315 // 789\n\tSYS_GETPASS                         = 0x316 // 790\n\tSYS_FNMATCH                         = 0x317 // 791\n\tSYS_FTW                             = 0x318 // 792\n\tSYS_GETW                            = 0x319 // 793\n\tSYS_GLOB                            = 0x31A // 794\n\tSYS_GLOBFREE                        = 0x31B // 795\n\tSYS_PUTW                            = 0x31C // 796\n\tSYS_SEEKDIR                         = 0x31D // 797\n\tSYS_TELLDIR                         = 0x31E // 798\n\tSYS_TEMPNAM                         = 0x31F // 799\n\tSYS_ACOSH                           = 0x320 // 800\n\tSYS_ASINH                           = 0x321 // 801\n\tSYS_ATANH                           = 0x322 // 802\n\tSYS_CBRT                            = 0x323 // 803\n\tSYS_EXPM1                           = 0x324 // 804\n\tSYS_ILOGB                           = 0x325 // 805\n\tSYS_LOGB                            = 0x326 // 806\n\tSYS_LOG1P                           = 0x327 // 807\n\tSYS_NEXTAFTER                       = 0x328 // 808\n\tSYS_RINT                            = 0x329 // 809\n\tSYS_REMAINDER                       = 0x32A // 810\n\tSYS_SCALB                           = 0x32B // 811\n\tSYS_LGAMMA                          = 0x32C // 812\n\tSYS_TTYSLOT                         = 0x32D // 813\n\tSYS_GETTIMEOFDAY_R                  = 0x32E // 814\n\tSYS_SYNC                            = 0x32F // 815\n\tSYS_SPAWN                           = 0x330 // 816\n\tSYS_SPAWNP                          = 0x331 // 817\n\tSYS_GETLOGIN_UU                     = 0x332 // 818\n\tSYS_ECVT                            = 0x333 // 819\n\tSYS_FCVT                            = 0x334 // 820\n\tSYS_GCVT                            = 0x335 // 821\n\tSYS_ACCEPT                          = 0x336 // 822\n\tSYS_BIND                            = 0x337 // 823\n\tSYS_CONNECT                         = 0x338 // 824\n\tSYS_ENDHOSTENT                      = 0x339 // 825\n\tSYS_ENDPROTOENT                     = 0x33A // 826\n\tSYS_ENDSERVENT                      = 0x33B // 827\n\tSYS_GETHOSTBYADDR_R                 = 0x33C // 828\n\tSYS_GETHOSTBYADDR                   = 0x33D // 829\n\tSYS_GETHOSTBYNAME_R                 = 0x33E // 830\n\tSYS_GETHOSTBYNAME                   = 0x33F // 831\n\tSYS_GETHOSTENT                      = 0x340 // 832\n\tSYS_GETHOSTID                       = 0x341 // 833\n\tSYS_GETHOSTNAME                     = 0x342 // 834\n\tSYS_GETNETBYADDR                    = 0x343 // 835\n\tSYS_GETNETBYNAME                    = 0x344 // 836\n\tSYS_GETNETENT                       = 0x345 // 837\n\tSYS_GETPEERNAME                     = 0x346 // 838\n\tSYS_GETPROTOBYNAME                  = 0x347 // 839\n\tSYS_GETPROTOBYNUMBER                = 0x348 // 840\n\tSYS_GETPROTOENT                     = 0x349 // 841\n\tSYS_GETSERVBYNAME                   = 0x34A // 842\n\tSYS_GETSERVBYPORT                   = 0x34B // 843\n\tSYS_GETSERVENT                      = 0x34C // 844\n\tSYS_GETSOCKNAME                     = 0x34D // 845\n\tSYS_GETSOCKOPT                      = 0x34E // 846\n\tSYS_INET_ADDR                       = 0x34F // 847\n\tSYS_INET_LNAOF                      = 0x350 // 848\n\tSYS_INET_MAKEADDR                   = 0x351 // 849\n\tSYS_INET_NETOF                      = 0x352 // 850\n\tSYS_INET_NETWORK                    = 0x353 // 851\n\tSYS_INET_NTOA                       = 0x354 // 852\n\tSYS_IOCTL                           = 0x355 // 853\n\tSYS_LISTEN                          = 0x356 // 854\n\tSYS_READV                           = 0x357 // 855\n\tSYS_RECV                            = 0x358 // 856\n\tSYS_RECVFROM                        = 0x359 // 857\n\tSYS_SELECT                          = 0x35B // 859\n\tSYS_SELECTEX                        = 0x35C // 860\n\tSYS_SEND                            = 0x35D // 861\n\tSYS_SENDTO                          = 0x35F // 863\n\tSYS_SETHOSTENT                      = 0x360 // 864\n\tSYS_SETNETENT                       = 0x361 // 865\n\tSYS_SETPEER                         = 0x362 // 866\n\tSYS_SETPROTOENT                     = 0x363 // 867\n\tSYS_SETSERVENT                      = 0x364 // 868\n\tSYS_SETSOCKOPT                      = 0x365 // 869\n\tSYS_SHUTDOWN                        = 0x366 // 870\n\tSYS_SOCKET                          = 0x367 // 871\n\tSYS_SOCKETPAIR                      = 0x368 // 872\n\tSYS_WRITEV                          = 0x369 // 873\n\tSYS_CHROOT                          = 0x36A // 874\n\tSYS_W_STATVFS                       = 0x36B // 875\n\tSYS_ULIMIT                          = 0x36C // 876\n\tSYS_ISNAN                           = 0x36D // 877\n\tSYS_UTIMES                          = 0x36E // 878\n\tSYS___H_ERRNO                       = 0x36F // 879\n\tSYS_ENDNETENT                       = 0x370 // 880\n\tSYS_CLOSELOG                        = 0x371 // 881\n\tSYS_OPENLOG                         = 0x372 // 882\n\tSYS_SETLOGMASK                      = 0x373 // 883\n\tSYS_SYSLOG                          = 0x374 // 884\n\tSYS_PTSNAME                         = 0x375 // 885\n\tSYS_SETREUID                        = 0x376 // 886\n\tSYS_SETREGID                        = 0x377 // 887\n\tSYS_REALPATH                        = 0x378 // 888\n\tSYS___SIGNGAM                       = 0x379 // 889\n\tSYS_GRANTPT                         = 0x37A // 890\n\tSYS_UNLOCKPT                        = 0x37B // 891\n\tSYS_TCGETSID                        = 0x37C // 892\n\tSYS___TCGETCP                       = 0x37D // 893\n\tSYS___TCSETCP                       = 0x37E // 894\n\tSYS___TCSETTABLES                   = 0x37F // 895\n\tSYS_POLL                            = 0x380 // 896\n\tSYS_REXEC                           = 0x381 // 897\n\tSYS___ISASCII2                      = 0x382 // 898\n\tSYS___TOASCII2                      = 0x383 // 899\n\tSYS_CHPRIORITY                      = 0x384 // 900\n\tSYS_PTHREAD_ATTR_SETSYNCTYPE_NP     = 0x385 // 901\n\tSYS_PTHREAD_ATTR_GETSYNCTYPE_NP     = 0x386 // 902\n\tSYS_PTHREAD_SET_LIMIT_NP            = 0x387 // 903\n\tSYS___STNETENT                      = 0x388 // 904\n\tSYS___STPROTOENT                    = 0x389 // 905\n\tSYS___STSERVENT                     = 0x38A // 906\n\tSYS___STHOSTENT                     = 0x38B // 907\n\tSYS_NLIST                           = 0x38C // 908\n\tSYS___IPDBCS                        = 0x38D // 909\n\tSYS___IPDSPX                        = 0x38E // 910\n\tSYS___IPMSGC                        = 0x38F // 911\n\tSYS___SELECT1                       = 0x390 // 912\n\tSYS_PTHREAD_SECURITY_NP             = 0x391 // 913\n\tSYS___CHECK_RESOURCE_AUTH_NP        = 0x392 // 914\n\tSYS___CONVERT_ID_NP                 = 0x393 // 915\n\tSYS___OPENVMREL                     = 0x394 // 916\n\tSYS_WMEMCHR                         = 0x395 // 917\n\tSYS_WMEMCMP                         = 0x396 // 918\n\tSYS_WMEMCPY                         = 0x397 // 919\n\tSYS_WMEMMOVE                        = 0x398 // 920\n\tSYS_WMEMSET                         = 0x399 // 921\n\tSYS___FPUTWC                        = 0x400 // 1024\n\tSYS___PUTWC                         = 0x401 // 1025\n\tSYS___PWCHAR                        = 0x402 // 1026\n\tSYS___WCSFTM                        = 0x403 // 1027\n\tSYS___WCSTOK                        = 0x404 // 1028\n\tSYS___WCWDTH                        = 0x405 // 1029\n\tSYS_T_ACCEPT                        = 0x409 // 1033\n\tSYS_T_ALLOC                         = 0x40A // 1034\n\tSYS_T_BIND                          = 0x40B // 1035\n\tSYS_T_CLOSE                         = 0x40C // 1036\n\tSYS_T_CONNECT                       = 0x40D // 1037\n\tSYS_T_ERROR                         = 0x40E // 1038\n\tSYS_T_FREE                          = 0x40F // 1039\n\tSYS_T_GETINFO                       = 0x410 // 1040\n\tSYS_T_GETPROTADDR                   = 0x411 // 1041\n\tSYS_T_GETSTATE                      = 0x412 // 1042\n\tSYS_T_LISTEN                        = 0x413 // 1043\n\tSYS_T_LOOK                          = 0x414 // 1044\n\tSYS_T_OPEN                          = 0x415 // 1045\n\tSYS_T_OPTMGMT                       = 0x416 // 1046\n\tSYS_T_RCV                           = 0x417 // 1047\n\tSYS_T_RCVCONNECT                    = 0x418 // 1048\n\tSYS_T_RCVDIS                        = 0x419 // 1049\n\tSYS_T_RCVREL                        = 0x41A // 1050\n\tSYS_T_RCVUDATA                      = 0x41B // 1051\n\tSYS_T_RCVUDERR                      = 0x41C // 1052\n\tSYS_T_SND                           = 0x41D // 1053\n\tSYS_T_SNDDIS                        = 0x41E // 1054\n\tSYS_T_SNDREL                        = 0x41F // 1055\n\tSYS_T_SNDUDATA                      = 0x420 // 1056\n\tSYS_T_STRERROR                      = 0x421 // 1057\n\tSYS_T_SYNC                          = 0x422 // 1058\n\tSYS_T_UNBIND                        = 0x423 // 1059\n\tSYS___T_ERRNO                       = 0x424 // 1060\n\tSYS___RECVMSG2                      = 0x425 // 1061\n\tSYS___SENDMSG2                      = 0x426 // 1062\n\tSYS_FATTACH                         = 0x427 // 1063\n\tSYS_FDETACH                         = 0x428 // 1064\n\tSYS_GETMSG                          = 0x429 // 1065\n\tSYS_GETPMSG                         = 0x42A // 1066\n\tSYS_ISASTREAM                       = 0x42B // 1067\n\tSYS_PUTMSG                          = 0x42C // 1068\n\tSYS_PUTPMSG                         = 0x42D // 1069\n\tSYS___ISPOSIXON                     = 0x42E // 1070\n\tSYS___OPENMVSREL                    = 0x42F // 1071\n\tSYS_GETCONTEXT                      = 0x430 // 1072\n\tSYS_SETCONTEXT                      = 0x431 // 1073\n\tSYS_MAKECONTEXT                     = 0x432 // 1074\n\tSYS_SWAPCONTEXT                     = 0x433 // 1075\n\tSYS_PTHREAD_GETSPECIFIC_D8_NP       = 0x434 // 1076\n\tSYS_GETCLIENTID                     = 0x470 // 1136\n\tSYS___GETCLIENTID                   = 0x471 // 1137\n\tSYS_GETSTABLESIZE                   = 0x472 // 1138\n\tSYS_GETIBMOPT                       = 0x473 // 1139\n\tSYS_GETIBMSOCKOPT                   = 0x474 // 1140\n\tSYS_GIVESOCKET                      = 0x475 // 1141\n\tSYS_IBMSFLUSH                       = 0x476 // 1142\n\tSYS_MAXDESC                         = 0x477 // 1143\n\tSYS_SETIBMOPT                       = 0x478 // 1144\n\tSYS_SETIBMSOCKOPT                   = 0x479 // 1145\n\tSYS_SOCK_DEBUG                      = 0x47A // 1146\n\tSYS_SOCK_DO_TESTSTOR                = 0x47D // 1149\n\tSYS_TAKESOCKET                      = 0x47E // 1150\n\tSYS___SERVER_INIT                   = 0x47F // 1151\n\tSYS___SERVER_PWU                    = 0x480 // 1152\n\tSYS_PTHREAD_TAG_NP                  = 0x481 // 1153\n\tSYS___CONSOLE                       = 0x482 // 1154\n\tSYS___WSINIT                        = 0x483 // 1155\n\tSYS___IPTCPN                        = 0x489 // 1161\n\tSYS___SMF_RECORD                    = 0x48A // 1162\n\tSYS___IPHOST                        = 0x48B // 1163\n\tSYS___IPNODE                        = 0x48C // 1164\n\tSYS___SERVER_CLASSIFY_CREATE        = 0x48D // 1165\n\tSYS___SERVER_CLASSIFY_DESTROY       = 0x48E // 1166\n\tSYS___SERVER_CLASSIFY_RESET         = 0x48F // 1167\n\tSYS___SERVER_CLASSIFY               = 0x490 // 1168\n\tSYS___HEAPRPT                       = 0x496 // 1174\n\tSYS___FNWSA                         = 0x49B // 1179\n\tSYS___SPAWN2                        = 0x49D // 1181\n\tSYS___SPAWNP2                       = 0x49E // 1182\n\tSYS___GDRR                          = 0x4A1 // 1185\n\tSYS___HRRNO                         = 0x4A2 // 1186\n\tSYS___OPRG                          = 0x4A3 // 1187\n\tSYS___OPRR                          = 0x4A4 // 1188\n\tSYS___OPND                          = 0x4A5 // 1189\n\tSYS___OPPT                          = 0x4A6 // 1190\n\tSYS___SIGGM                         = 0x4A7 // 1191\n\tSYS___DGHT                          = 0x4A8 // 1192\n\tSYS___TZNE                          = 0x4A9 // 1193\n\tSYS___TZZN                          = 0x4AA // 1194\n\tSYS___TRRNO                         = 0x4AF // 1199\n\tSYS___ENVN                          = 0x4B0 // 1200\n\tSYS___MLOCKALL                      = 0x4B1 // 1201\n\tSYS_CREATEWO                        = 0x4B2 // 1202\n\tSYS_CREATEWORKUNIT                  = 0x4B2 // 1202\n\tSYS_CONTINUE                        = 0x4B3 // 1203\n\tSYS_CONTINUEWORKUNIT                = 0x4B3 // 1203\n\tSYS_CONNECTW                        = 0x4B4 // 1204\n\tSYS_CONNECTWORKMGR                  = 0x4B4 // 1204\n\tSYS_CONNECTS                        = 0x4B5 // 1205\n\tSYS_CONNECTSERVER                   = 0x4B5 // 1205\n\tSYS_DISCONNE                        = 0x4B6 // 1206\n\tSYS_DISCONNECTSERVER                = 0x4B6 // 1206\n\tSYS_JOINWORK                        = 0x4B7 // 1207\n\tSYS_JOINWORKUNIT                    = 0x4B7 // 1207\n\tSYS_LEAVEWOR                        = 0x4B8 // 1208\n\tSYS_LEAVEWORKUNIT                   = 0x4B8 // 1208\n\tSYS_DELETEWO                        = 0x4B9 // 1209\n\tSYS_DELETEWORKUNIT                  = 0x4B9 // 1209\n\tSYS_QUERYMET                        = 0x4BA // 1210\n\tSYS_QUERYMETRICS                    = 0x4BA // 1210\n\tSYS_QUERYSCH                        = 0x4BB // 1211\n\tSYS_QUERYSCHENV                     = 0x4BB // 1211\n\tSYS_CHECKSCH                        = 0x4BC // 1212\n\tSYS_CHECKSCHENV                     = 0x4BC // 1212\n\tSYS___PID_AFFINITY                  = 0x4BD // 1213\n\tSYS___ASINH_B                       = 0x4BE // 1214\n\tSYS___ATAN_B                        = 0x4BF // 1215\n\tSYS___CBRT_B                        = 0x4C0 // 1216\n\tSYS___CEIL_B                        = 0x4C1 // 1217\n\tSYS_COPYSIGN                        = 0x4C2 // 1218\n\tSYS___COS_B                         = 0x4C3 // 1219\n\tSYS___ERF_B                         = 0x4C4 // 1220\n\tSYS___ERFC_B                        = 0x4C5 // 1221\n\tSYS___EXPM1_B                       = 0x4C6 // 1222\n\tSYS___FABS_B                        = 0x4C7 // 1223\n\tSYS_FINITE                          = 0x4C8 // 1224\n\tSYS___FLOOR_B                       = 0x4C9 // 1225\n\tSYS___FREXP_B                       = 0x4CA // 1226\n\tSYS___ILOGB_B                       = 0x4CB // 1227\n\tSYS___ISNAN_B                       = 0x4CC // 1228\n\tSYS___LDEXP_B                       = 0x4CD // 1229\n\tSYS___LOG1P_B                       = 0x4CE // 1230\n\tSYS___LOGB_B                        = 0x4CF // 1231\n\tSYS_MATHERR                         = 0x4D0 // 1232\n\tSYS___MODF_B                        = 0x4D1 // 1233\n\tSYS___NEXTAFTER_B                   = 0x4D2 // 1234\n\tSYS___RINT_B                        = 0x4D3 // 1235\n\tSYS_SCALBN                          = 0x4D4 // 1236\n\tSYS_SIGNIFIC                        = 0x4D5 // 1237\n\tSYS_SIGNIFICAND                     = 0x4D5 // 1237\n\tSYS___SIN_B                         = 0x4D6 // 1238\n\tSYS___TAN_B                         = 0x4D7 // 1239\n\tSYS___TANH_B                        = 0x4D8 // 1240\n\tSYS___ACOS_B                        = 0x4D9 // 1241\n\tSYS___ACOSH_B                       = 0x4DA // 1242\n\tSYS___ASIN_B                        = 0x4DB // 1243\n\tSYS___ATAN2_B                       = 0x4DC // 1244\n\tSYS___ATANH_B                       = 0x4DD // 1245\n\tSYS___COSH_B                        = 0x4DE // 1246\n\tSYS___EXP_B                         = 0x4DF // 1247\n\tSYS___FMOD_B                        = 0x4E0 // 1248\n\tSYS___GAMMA_B                       = 0x4E1 // 1249\n\tSYS_GAMMA_R                         = 0x4E2 // 1250\n\tSYS___HYPOT_B                       = 0x4E3 // 1251\n\tSYS___J0_B                          = 0x4E4 // 1252\n\tSYS___Y0_B                          = 0x4E5 // 1253\n\tSYS___J1_B                          = 0x4E6 // 1254\n\tSYS___Y1_B                          = 0x4E7 // 1255\n\tSYS___JN_B                          = 0x4E8 // 1256\n\tSYS___YN_B                          = 0x4E9 // 1257\n\tSYS___LGAMMA_B                      = 0x4EA // 1258\n\tSYS_LGAMMA_R                        = 0x4EB // 1259\n\tSYS___LOG_B                         = 0x4EC // 1260\n\tSYS___LOG10_B                       = 0x4ED // 1261\n\tSYS___POW_B                         = 0x4EE // 1262\n\tSYS___REMAINDER_B                   = 0x4EF // 1263\n\tSYS___SCALB_B                       = 0x4F0 // 1264\n\tSYS___SINH_B                        = 0x4F1 // 1265\n\tSYS___SQRT_B                        = 0x4F2 // 1266\n\tSYS___OPENDIR2                      = 0x4F3 // 1267\n\tSYS___READDIR2                      = 0x4F4 // 1268\n\tSYS___LOGIN                         = 0x4F5 // 1269\n\tSYS___OPEN_STAT                     = 0x4F6 // 1270\n\tSYS_ACCEPT_AND_RECV                 = 0x4F7 // 1271\n\tSYS___FP_SETMODE                    = 0x4F8 // 1272\n\tSYS___SIGACTIONSET                  = 0x4FB // 1275\n\tSYS___UCREATE                       = 0x4FC // 1276\n\tSYS___UMALLOC                       = 0x4FD // 1277\n\tSYS___UFREE                         = 0x4FE // 1278\n\tSYS___UHEAPREPORT                   = 0x4FF // 1279\n\tSYS___ISBFP                         = 0x500 // 1280\n\tSYS___FP_CAST                       = 0x501 // 1281\n\tSYS___CERTIFICATE                   = 0x502 // 1282\n\tSYS_SEND_FILE                       = 0x503 // 1283\n\tSYS_AIO_CANCEL                      = 0x504 // 1284\n\tSYS_AIO_ERROR                       = 0x505 // 1285\n\tSYS_AIO_READ                        = 0x506 // 1286\n\tSYS_AIO_RETURN                      = 0x507 // 1287\n\tSYS_AIO_SUSPEND                     = 0x508 // 1288\n\tSYS_AIO_WRITE                       = 0x509 // 1289\n\tSYS_PTHREAD_MUTEXATTR_GETPSHARED    = 0x50A // 1290\n\tSYS_PTHREAD_MUTEXATTR_SETPSHARED    = 0x50B // 1291\n\tSYS_PTHREAD_RWLOCK_DESTROY          = 0x50C // 1292\n\tSYS_PTHREAD_RWLOCK_INIT             = 0x50D // 1293\n\tSYS_PTHREAD_RWLOCK_RDLOCK           = 0x50E // 1294\n\tSYS_PTHREAD_RWLOCK_TRYRDLOCK        = 0x50F // 1295\n\tSYS_PTHREAD_RWLOCK_TRYWRLOCK        = 0x510 // 1296\n\tSYS_PTHREAD_RWLOCK_UNLOCK           = 0x511 // 1297\n\tSYS_PTHREAD_RWLOCK_WRLOCK           = 0x512 // 1298\n\tSYS_PTHREAD_RWLOCKATTR_GETPSHARED   = 0x513 // 1299\n\tSYS_PTHREAD_RWLOCKATTR_SETPSHARED   = 0x514 // 1300\n\tSYS_PTHREAD_RWLOCKATTR_INIT         = 0x515 // 1301\n\tSYS_PTHREAD_RWLOCKATTR_DESTROY      = 0x516 // 1302\n\tSYS___CTTBL                         = 0x517 // 1303\n\tSYS_PTHREAD_MUTEXATTR_SETTYPE       = 0x518 // 1304\n\tSYS_PTHREAD_MUTEXATTR_GETTYPE       = 0x519 // 1305\n\tSYS___FP_CLR_FLAG                   = 0x51A // 1306\n\tSYS___FP_READ_FLAG                  = 0x51B // 1307\n\tSYS___FP_RAISE_XCP                  = 0x51C // 1308\n\tSYS___FP_CLASS                      = 0x51D // 1309\n\tSYS___FP_FINITE                     = 0x51E // 1310\n\tSYS___FP_ISNAN                      = 0x51F // 1311\n\tSYS___FP_UNORDERED                  = 0x520 // 1312\n\tSYS___FP_READ_RND                   = 0x521 // 1313\n\tSYS___FP_READ_RND_B                 = 0x522 // 1314\n\tSYS___FP_SWAP_RND                   = 0x523 // 1315\n\tSYS___FP_SWAP_RND_B                 = 0x524 // 1316\n\tSYS___FP_LEVEL                      = 0x525 // 1317\n\tSYS___FP_BTOH                       = 0x526 // 1318\n\tSYS___FP_HTOB                       = 0x527 // 1319\n\tSYS___FPC_RD                        = 0x528 // 1320\n\tSYS___FPC_WR                        = 0x529 // 1321\n\tSYS___FPC_RW                        = 0x52A // 1322\n\tSYS___FPC_SM                        = 0x52B // 1323\n\tSYS___FPC_RS                        = 0x52C // 1324\n\tSYS_SIGTIMEDWAIT                    = 0x52D // 1325\n\tSYS_SIGWAITINFO                     = 0x52E // 1326\n\tSYS___CHKBFP                        = 0x52F // 1327\n\tSYS___W_PIOCTL                      = 0x59E // 1438\n\tSYS___OSENV                         = 0x59F // 1439\n\tSYS_EXPORTWO                        = 0x5A1 // 1441\n\tSYS_EXPORTWORKUNIT                  = 0x5A1 // 1441\n\tSYS_UNDOEXPO                        = 0x5A2 // 1442\n\tSYS_UNDOEXPORTWORKUNIT              = 0x5A2 // 1442\n\tSYS_IMPORTWO                        = 0x5A3 // 1443\n\tSYS_IMPORTWORKUNIT                  = 0x5A3 // 1443\n\tSYS_UNDOIMPO                        = 0x5A4 // 1444\n\tSYS_UNDOIMPORTWORKUNIT              = 0x5A4 // 1444\n\tSYS_EXTRACTW                        = 0x5A5 // 1445\n\tSYS_EXTRACTWORKUNIT                 = 0x5A5 // 1445\n\tSYS___CPL                           = 0x5A6 // 1446\n\tSYS___MAP_INIT                      = 0x5A7 // 1447\n\tSYS___MAP_SERVICE                   = 0x5A8 // 1448\n\tSYS_SIGQUEUE                        = 0x5A9 // 1449\n\tSYS___MOUNT                         = 0x5AA // 1450\n\tSYS___GETUSERID                     = 0x5AB // 1451\n\tSYS___IPDOMAINNAME                  = 0x5AC // 1452\n\tSYS_QUERYENC                        = 0x5AD // 1453\n\tSYS_QUERYWORKUNITCLASSIFICATION     = 0x5AD // 1453\n\tSYS_CONNECTE                        = 0x5AE // 1454\n\tSYS_CONNECTEXPORTIMPORT             = 0x5AE // 1454\n\tSYS___FP_SWAPMODE                   = 0x5AF // 1455\n\tSYS_STRTOLL                         = 0x5B0 // 1456\n\tSYS_STRTOULL                        = 0x5B1 // 1457\n\tSYS___DSA_PREV                      = 0x5B2 // 1458\n\tSYS___EP_FIND                       = 0x5B3 // 1459\n\tSYS___SERVER_THREADS_QUERY          = 0x5B4 // 1460\n\tSYS___MSGRCV_TIMED                  = 0x5B7 // 1463\n\tSYS___SEMOP_TIMED                   = 0x5B8 // 1464\n\tSYS___GET_CPUID                     = 0x5B9 // 1465\n\tSYS___GET_SYSTEM_SETTINGS           = 0x5BA // 1466\n\tSYS_FTELLO                          = 0x5C8 // 1480\n\tSYS_FSEEKO                          = 0x5C9 // 1481\n\tSYS_LLDIV                           = 0x5CB // 1483\n\tSYS_WCSTOLL                         = 0x5CC // 1484\n\tSYS_WCSTOULL                        = 0x5CD // 1485\n\tSYS_LLABS                           = 0x5CE // 1486\n\tSYS___CONSOLE2                      = 0x5D2 // 1490\n\tSYS_INET_NTOP                       = 0x5D3 // 1491\n\tSYS_INET_PTON                       = 0x5D4 // 1492\n\tSYS___RES                           = 0x5D6 // 1494\n\tSYS_RES_MKQUERY                     = 0x5D7 // 1495\n\tSYS_RES_INIT                        = 0x5D8 // 1496\n\tSYS_RES_QUERY                       = 0x5D9 // 1497\n\tSYS_RES_SEARCH                      = 0x5DA // 1498\n\tSYS_RES_SEND                        = 0x5DB // 1499\n\tSYS_RES_QUERYDOMAIN                 = 0x5DC // 1500\n\tSYS_DN_EXPAND                       = 0x5DD // 1501\n\tSYS_DN_SKIPNAME                     = 0x5DE // 1502\n\tSYS_DN_COMP                         = 0x5DF // 1503\n\tSYS_ASCTIME_R                       = 0x5E0 // 1504\n\tSYS_CTIME_R                         = 0x5E1 // 1505\n\tSYS_GMTIME_R                        = 0x5E2 // 1506\n\tSYS_LOCALTIME_R                     = 0x5E3 // 1507\n\tSYS_RAND_R                          = 0x5E4 // 1508\n\tSYS_STRTOK_R                        = 0x5E5 // 1509\n\tSYS_READDIR_R                       = 0x5E6 // 1510\n\tSYS_GETGRGID_R                      = 0x5E7 // 1511\n\tSYS_GETGRNAM_R                      = 0x5E8 // 1512\n\tSYS_GETLOGIN_R                      = 0x5E9 // 1513\n\tSYS_GETPWNAM_R                      = 0x5EA // 1514\n\tSYS_GETPWUID_R                      = 0x5EB // 1515\n\tSYS_TTYNAME_R                       = 0x5EC // 1516\n\tSYS_PTHREAD_ATFORK                  = 0x5ED // 1517\n\tSYS_PTHREAD_ATTR_GETGUARDSIZE       = 0x5EE // 1518\n\tSYS_PTHREAD_ATTR_GETSTACKADDR       = 0x5EF // 1519\n\tSYS_PTHREAD_ATTR_SETGUARDSIZE       = 0x5F0 // 1520\n\tSYS_PTHREAD_ATTR_SETSTACKADDR       = 0x5F1 // 1521\n\tSYS_PTHREAD_CONDATTR_GETPSHARED     = 0x5F2 // 1522\n\tSYS_PTHREAD_CONDATTR_SETPSHARED     = 0x5F3 // 1523\n\tSYS_PTHREAD_GETCONCURRENCY          = 0x5F4 // 1524\n\tSYS_PTHREAD_KEY_DELETE              = 0x5F5 // 1525\n\tSYS_PTHREAD_SETCONCURRENCY          = 0x5F6 // 1526\n\tSYS_PTHREAD_SIGMASK                 = 0x5F7 // 1527\n\tSYS___DISCARDDATA                   = 0x5F8 // 1528\n\tSYS_PTHREAD_ATTR_GETSCHEDPARAM      = 0x5F9 // 1529\n\tSYS_PTHREAD_ATTR_SETSCHEDPARAM      = 0x5FA // 1530\n\tSYS_PTHREAD_ATTR_GETDETACHSTATE_U98 = 0x5FB // 1531\n\tSYS_PTHREAD_ATTR_SETDETACHSTATE_U98 = 0x5FC // 1532\n\tSYS_PTHREAD_DETACH_U98              = 0x5FD // 1533\n\tSYS_PTHREAD_GETSPECIFIC_U98         = 0x5FE // 1534\n\tSYS_PTHREAD_SETCANCELSTATE          = 0x5FF // 1535\n\tSYS_PTHREAD_SETCANCELTYPE           = 0x600 // 1536\n\tSYS_PTHREAD_TESTCANCEL              = 0x601 // 1537\n\tSYS___ATANF_B                       = 0x602 // 1538\n\tSYS___ATANL_B                       = 0x603 // 1539\n\tSYS___CEILF_B                       = 0x604 // 1540\n\tSYS___CEILL_B                       = 0x605 // 1541\n\tSYS___COSF_B                        = 0x606 // 1542\n\tSYS___COSL_B                        = 0x607 // 1543\n\tSYS___FABSF_B                       = 0x608 // 1544\n\tSYS___FABSL_B                       = 0x609 // 1545\n\tSYS___FLOORF_B                      = 0x60A // 1546\n\tSYS___FLOORL_B                      = 0x60B // 1547\n\tSYS___FREXPF_B                      = 0x60C // 1548\n\tSYS___FREXPL_B                      = 0x60D // 1549\n\tSYS___LDEXPF_B                      = 0x60E // 1550\n\tSYS___LDEXPL_B                      = 0x60F // 1551\n\tSYS___SINF_B                        = 0x610 // 1552\n\tSYS___SINL_B                        = 0x611 // 1553\n\tSYS___TANF_B                        = 0x612 // 1554\n\tSYS___TANL_B                        = 0x613 // 1555\n\tSYS___TANHF_B                       = 0x614 // 1556\n\tSYS___TANHL_B                       = 0x615 // 1557\n\tSYS___ACOSF_B                       = 0x616 // 1558\n\tSYS___ACOSL_B                       = 0x617 // 1559\n\tSYS___ASINF_B                       = 0x618 // 1560\n\tSYS___ASINL_B                       = 0x619 // 1561\n\tSYS___ATAN2F_B                      = 0x61A // 1562\n\tSYS___ATAN2L_B                      = 0x61B // 1563\n\tSYS___COSHF_B                       = 0x61C // 1564\n\tSYS___COSHL_B                       = 0x61D // 1565\n\tSYS___EXPF_B                        = 0x61E // 1566\n\tSYS___EXPL_B                        = 0x61F // 1567\n\tSYS___LOGF_B                        = 0x620 // 1568\n\tSYS___LOGL_B                        = 0x621 // 1569\n\tSYS___LOG10F_B                      = 0x622 // 1570\n\tSYS___LOG10L_B                      = 0x623 // 1571\n\tSYS___POWF_B                        = 0x624 // 1572\n\tSYS___POWL_B                        = 0x625 // 1573\n\tSYS___SINHF_B                       = 0x626 // 1574\n\tSYS___SINHL_B                       = 0x627 // 1575\n\tSYS___SQRTF_B                       = 0x628 // 1576\n\tSYS___SQRTL_B                       = 0x629 // 1577\n\tSYS___ABSF_B                        = 0x62A // 1578\n\tSYS___ABS_B                         = 0x62B // 1579\n\tSYS___ABSL_B                        = 0x62C // 1580\n\tSYS___FMODF_B                       = 0x62D // 1581\n\tSYS___FMODL_B                       = 0x62E // 1582\n\tSYS___MODFF_B                       = 0x62F // 1583\n\tSYS___MODFL_B                       = 0x630 // 1584\n\tSYS_ABSF                            = 0x631 // 1585\n\tSYS_ABSL                            = 0x632 // 1586\n\tSYS_ACOSF                           = 0x633 // 1587\n\tSYS_ACOSL                           = 0x634 // 1588\n\tSYS_ASINF                           = 0x635 // 1589\n\tSYS_ASINL                           = 0x636 // 1590\n\tSYS_ATAN2F                          = 0x637 // 1591\n\tSYS_ATAN2L                          = 0x638 // 1592\n\tSYS_ATANF                           = 0x639 // 1593\n\tSYS_ATANL                           = 0x63A // 1594\n\tSYS_CEILF                           = 0x63B // 1595\n\tSYS_CEILL                           = 0x63C // 1596\n\tSYS_COSF                            = 0x63D // 1597\n\tSYS_COSL                            = 0x63E // 1598\n\tSYS_COSHF                           = 0x63F // 1599\n\tSYS_COSHL                           = 0x640 // 1600\n\tSYS_EXPF                            = 0x641 // 1601\n\tSYS_EXPL                            = 0x642 // 1602\n\tSYS_TANHF                           = 0x643 // 1603\n\tSYS_TANHL                           = 0x644 // 1604\n\tSYS_LOG10F                          = 0x645 // 1605\n\tSYS_LOG10L                          = 0x646 // 1606\n\tSYS_LOGF                            = 0x647 // 1607\n\tSYS_LOGL                            = 0x648 // 1608\n\tSYS_POWF                            = 0x649 // 1609\n\tSYS_POWL                            = 0x64A // 1610\n\tSYS_SINF                            = 0x64B // 1611\n\tSYS_SINL                            = 0x64C // 1612\n\tSYS_SQRTF                           = 0x64D // 1613\n\tSYS_SQRTL                           = 0x64E // 1614\n\tSYS_SINHF                           = 0x64F // 1615\n\tSYS_SINHL                           = 0x650 // 1616\n\tSYS_TANF                            = 0x651 // 1617\n\tSYS_TANL                            = 0x652 // 1618\n\tSYS_FABSF                           = 0x653 // 1619\n\tSYS_FABSL                           = 0x654 // 1620\n\tSYS_FLOORF                          = 0x655 // 1621\n\tSYS_FLOORL                          = 0x656 // 1622\n\tSYS_FMODF                           = 0x657 // 1623\n\tSYS_FMODL                           = 0x658 // 1624\n\tSYS_FREXPF                          = 0x659 // 1625\n\tSYS_FREXPL                          = 0x65A // 1626\n\tSYS_LDEXPF                          = 0x65B // 1627\n\tSYS_LDEXPL                          = 0x65C // 1628\n\tSYS_MODFF                           = 0x65D // 1629\n\tSYS_MODFL                           = 0x65E // 1630\n\tSYS_BTOWC                           = 0x65F // 1631\n\tSYS___CHATTR                        = 0x660 // 1632\n\tSYS___FCHATTR                       = 0x661 // 1633\n\tSYS___TOCCSID                       = 0x662 // 1634\n\tSYS___CSNAMETYPE                    = 0x663 // 1635\n\tSYS___TOCSNAME                      = 0x664 // 1636\n\tSYS___CCSIDTYPE                     = 0x665 // 1637\n\tSYS___AE_CORRESTBL_QUERY            = 0x666 // 1638\n\tSYS___AE_AUTOCONVERT_STATE          = 0x667 // 1639\n\tSYS_DN_FIND                         = 0x668 // 1640\n\tSYS___GETHOSTBYADDR_A               = 0x669 // 1641\n\tSYS___GETHOSTBYNAME_A               = 0x66A // 1642\n\tSYS___RES_INIT_A                    = 0x66B // 1643\n\tSYS___GETHOSTBYADDR_R_A             = 0x66C // 1644\n\tSYS___GETHOSTBYNAME_R_A             = 0x66D // 1645\n\tSYS___CHARMAP_INIT_A                = 0x66E // 1646\n\tSYS___MBLEN_A                       = 0x66F // 1647\n\tSYS___MBLEN_SB_A                    = 0x670 // 1648\n\tSYS___MBLEN_STD_A                   = 0x671 // 1649\n\tSYS___MBLEN_UTF                     = 0x672 // 1650\n\tSYS___MBSTOWCS_A                    = 0x673 // 1651\n\tSYS___MBSTOWCS_STD_A                = 0x674 // 1652\n\tSYS___MBTOWC_A                      = 0x675 // 1653\n\tSYS___MBTOWC_ISO1                   = 0x676 // 1654\n\tSYS___MBTOWC_SBCS                   = 0x677 // 1655\n\tSYS___MBTOWC_MBCS                   = 0x678 // 1656\n\tSYS___MBTOWC_UTF                    = 0x679 // 1657\n\tSYS___WCSTOMBS_A                    = 0x67A // 1658\n\tSYS___WCSTOMBS_STD_A                = 0x67B // 1659\n\tSYS___WCSWIDTH_A                    = 0x67C // 1660\n\tSYS___GETGRGID_R_A                  = 0x67D // 1661\n\tSYS___WCSWIDTH_STD_A                = 0x67E // 1662\n\tSYS___WCSWIDTH_ASIA                 = 0x67F // 1663\n\tSYS___CSID_A                        = 0x680 // 1664\n\tSYS___CSID_STD_A                    = 0x681 // 1665\n\tSYS___WCSID_A                       = 0x682 // 1666\n\tSYS___WCSID_STD_A                   = 0x683 // 1667\n\tSYS___WCTOMB_A                      = 0x684 // 1668\n\tSYS___WCTOMB_ISO1                   = 0x685 // 1669\n\tSYS___WCTOMB_STD_A                  = 0x686 // 1670\n\tSYS___WCTOMB_UTF                    = 0x687 // 1671\n\tSYS___WCWIDTH_A                     = 0x688 // 1672\n\tSYS___GETGRNAM_R_A                  = 0x689 // 1673\n\tSYS___WCWIDTH_STD_A                 = 0x68A // 1674\n\tSYS___WCWIDTH_ASIA                  = 0x68B // 1675\n\tSYS___GETPWNAM_R_A                  = 0x68C // 1676\n\tSYS___GETPWUID_R_A                  = 0x68D // 1677\n\tSYS___GETLOGIN_R_A                  = 0x68E // 1678\n\tSYS___TTYNAME_R_A                   = 0x68F // 1679\n\tSYS___READDIR_R_A                   = 0x690 // 1680\n\tSYS___E2A_S                         = 0x691 // 1681\n\tSYS___FNMATCH_A                     = 0x692 // 1682\n\tSYS___FNMATCH_C_A                   = 0x693 // 1683\n\tSYS___EXECL_A                       = 0x694 // 1684\n\tSYS___FNMATCH_STD_A                 = 0x695 // 1685\n\tSYS___REGCOMP_A                     = 0x696 // 1686\n\tSYS___REGCOMP_STD_A                 = 0x697 // 1687\n\tSYS___REGERROR_A                    = 0x698 // 1688\n\tSYS___REGERROR_STD_A                = 0x699 // 1689\n\tSYS___REGEXEC_A                     = 0x69A // 1690\n\tSYS___REGEXEC_STD_A                 = 0x69B // 1691\n\tSYS___REGFREE_A                     = 0x69C // 1692\n\tSYS___REGFREE_STD_A                 = 0x69D // 1693\n\tSYS___STRCOLL_A                     = 0x69E // 1694\n\tSYS___STRCOLL_C_A                   = 0x69F // 1695\n\tSYS___EXECLE_A                      = 0x6A0 // 1696\n\tSYS___STRCOLL_STD_A                 = 0x6A1 // 1697\n\tSYS___STRXFRM_A                     = 0x6A2 // 1698\n\tSYS___STRXFRM_C_A                   = 0x6A3 // 1699\n\tSYS___EXECLP_A                      = 0x6A4 // 1700\n\tSYS___STRXFRM_STD_A                 = 0x6A5 // 1701\n\tSYS___WCSCOLL_A                     = 0x6A6 // 1702\n\tSYS___WCSCOLL_C_A                   = 0x6A7 // 1703\n\tSYS___WCSCOLL_STD_A                 = 0x6A8 // 1704\n\tSYS___WCSXFRM_A                     = 0x6A9 // 1705\n\tSYS___WCSXFRM_C_A                   = 0x6AA // 1706\n\tSYS___WCSXFRM_STD_A                 = 0x6AB // 1707\n\tSYS___COLLATE_INIT_A                = 0x6AC // 1708\n\tSYS___WCTYPE_A                      = 0x6AD // 1709\n\tSYS___GET_WCTYPE_STD_A              = 0x6AE // 1710\n\tSYS___CTYPE_INIT_A                  = 0x6AF // 1711\n\tSYS___ISWCTYPE_A                    = 0x6B0 // 1712\n\tSYS___EXECV_A                       = 0x6B1 // 1713\n\tSYS___IS_WCTYPE_STD_A               = 0x6B2 // 1714\n\tSYS___TOWLOWER_A                    = 0x6B3 // 1715\n\tSYS___TOWLOWER_STD_A                = 0x6B4 // 1716\n\tSYS___TOWUPPER_A                    = 0x6B5 // 1717\n\tSYS___TOWUPPER_STD_A                = 0x6B6 // 1718\n\tSYS___LOCALE_INIT_A                 = 0x6B7 // 1719\n\tSYS___LOCALECONV_A                  = 0x6B8 // 1720\n\tSYS___LOCALECONV_STD_A              = 0x6B9 // 1721\n\tSYS___NL_LANGINFO_A                 = 0x6BA // 1722\n\tSYS___NL_LNAGINFO_STD_A             = 0x6BB // 1723\n\tSYS___MONETARY_INIT_A               = 0x6BC // 1724\n\tSYS___STRFMON_A                     = 0x6BD // 1725\n\tSYS___STRFMON_STD_A                 = 0x6BE // 1726\n\tSYS___GETADDRINFO_A                 = 0x6BF // 1727\n\tSYS___CATGETS_A                     = 0x6C0 // 1728\n\tSYS___EXECVE_A                      = 0x6C1 // 1729\n\tSYS___EXECVP_A                      = 0x6C2 // 1730\n\tSYS___SPAWN_A                       = 0x6C3 // 1731\n\tSYS___GETNAMEINFO_A                 = 0x6C4 // 1732\n\tSYS___SPAWNP_A                      = 0x6C5 // 1733\n\tSYS___NUMERIC_INIT_A                = 0x6C6 // 1734\n\tSYS___RESP_INIT_A                   = 0x6C7 // 1735\n\tSYS___RPMATCH_A                     = 0x6C8 // 1736\n\tSYS___RPMATCH_C_A                   = 0x6C9 // 1737\n\tSYS___RPMATCH_STD_A                 = 0x6CA // 1738\n\tSYS___TIME_INIT_A                   = 0x6CB // 1739\n\tSYS___STRFTIME_A                    = 0x6CC // 1740\n\tSYS___STRFTIME_STD_A                = 0x6CD // 1741\n\tSYS___STRPTIME_A                    = 0x6CE // 1742\n\tSYS___STRPTIME_STD_A                = 0x6CF // 1743\n\tSYS___WCSFTIME_A                    = 0x6D0 // 1744\n\tSYS___WCSFTIME_STD_A                = 0x6D1 // 1745\n\tSYS_____SPAWN2_A                    = 0x6D2 // 1746\n\tSYS_____SPAWNP2_A                   = 0x6D3 // 1747\n\tSYS___SYNTAX_INIT_A                 = 0x6D4 // 1748\n\tSYS___TOD_INIT_A                    = 0x6D5 // 1749\n\tSYS___NL_CSINFO_A                   = 0x6D6 // 1750\n\tSYS___NL_MONINFO_A                  = 0x6D7 // 1751\n\tSYS___NL_NUMINFO_A                  = 0x6D8 // 1752\n\tSYS___NL_RESPINFO_A                 = 0x6D9 // 1753\n\tSYS___NL_TIMINFO_A                  = 0x6DA // 1754\n\tSYS___IF_NAMETOINDEX_A              = 0x6DB // 1755\n\tSYS___IF_INDEXTONAME_A              = 0x6DC // 1756\n\tSYS___PRINTF_A                      = 0x6DD // 1757\n\tSYS___ICONV_OPEN_A                  = 0x6DE // 1758\n\tSYS___DLLLOAD_A                     = 0x6DF // 1759\n\tSYS___DLLQUERYFN_A                  = 0x6E0 // 1760\n\tSYS___DLLQUERYVAR_A                 = 0x6E1 // 1761\n\tSYS_____CHATTR_A                    = 0x6E2 // 1762\n\tSYS___E2A_L                         = 0x6E3 // 1763\n\tSYS_____TOCCSID_A                   = 0x6E4 // 1764\n\tSYS_____TOCSNAME_A                  = 0x6E5 // 1765\n\tSYS_____CCSIDTYPE_A                 = 0x6E6 // 1766\n\tSYS_____CSNAMETYPE_A                = 0x6E7 // 1767\n\tSYS___CHMOD_A                       = 0x6E8 // 1768\n\tSYS___MKDIR_A                       = 0x6E9 // 1769\n\tSYS___STAT_A                        = 0x6EA // 1770\n\tSYS___STAT_O_A                      = 0x6EB // 1771\n\tSYS___MKFIFO_A                      = 0x6EC // 1772\n\tSYS_____OPEN_STAT_A                 = 0x6ED // 1773\n\tSYS___LSTAT_A                       = 0x6EE // 1774\n\tSYS___LSTAT_O_A                     = 0x6EF // 1775\n\tSYS___MKNOD_A                       = 0x6F0 // 1776\n\tSYS___MOUNT_A                       = 0x6F1 // 1777\n\tSYS___UMOUNT_A                      = 0x6F2 // 1778\n\tSYS___CHAUDIT_A                     = 0x6F4 // 1780\n\tSYS___W_GETMNTENT_A                 = 0x6F5 // 1781\n\tSYS___CREAT_A                       = 0x6F6 // 1782\n\tSYS___OPEN_A                        = 0x6F7 // 1783\n\tSYS___SETLOCALE_A                   = 0x6F9 // 1785\n\tSYS___FPRINTF_A                     = 0x6FA // 1786\n\tSYS___SPRINTF_A                     = 0x6FB // 1787\n\tSYS___VFPRINTF_A                    = 0x6FC // 1788\n\tSYS___VPRINTF_A                     = 0x6FD // 1789\n\tSYS___VSPRINTF_A                    = 0x6FE // 1790\n\tSYS___VSWPRINTF_A                   = 0x6FF // 1791\n\tSYS___SWPRINTF_A                    = 0x700 // 1792\n\tSYS___FSCANF_A                      = 0x701 // 1793\n\tSYS___SCANF_A                       = 0x702 // 1794\n\tSYS___SSCANF_A                      = 0x703 // 1795\n\tSYS___SWSCANF_A                     = 0x704 // 1796\n\tSYS___ATOF_A                        = 0x705 // 1797\n\tSYS___ATOI_A                        = 0x706 // 1798\n\tSYS___ATOL_A                        = 0x707 // 1799\n\tSYS___STRTOD_A                      = 0x708 // 1800\n\tSYS___STRTOL_A                      = 0x709 // 1801\n\tSYS___STRTOUL_A                     = 0x70A // 1802\n\tSYS_____AE_CORRESTBL_QUERY_A        = 0x70B // 1803\n\tSYS___A64L_A                        = 0x70C // 1804\n\tSYS___ECVT_A                        = 0x70D // 1805\n\tSYS___FCVT_A                        = 0x70E // 1806\n\tSYS___GCVT_A                        = 0x70F // 1807\n\tSYS___L64A_A                        = 0x710 // 1808\n\tSYS___STRERROR_A                    = 0x711 // 1809\n\tSYS___PERROR_A                      = 0x712 // 1810\n\tSYS___FETCH_A                       = 0x713 // 1811\n\tSYS___GETENV_A                      = 0x714 // 1812\n\tSYS___MKSTEMP_A                     = 0x717 // 1815\n\tSYS___PTSNAME_A                     = 0x718 // 1816\n\tSYS___PUTENV_A                      = 0x719 // 1817\n\tSYS___REALPATH_A                    = 0x71A // 1818\n\tSYS___SETENV_A                      = 0x71B // 1819\n\tSYS___SYSTEM_A                      = 0x71C // 1820\n\tSYS___GETOPT_A                      = 0x71D // 1821\n\tSYS___CATOPEN_A                     = 0x71E // 1822\n\tSYS___ACCESS_A                      = 0x71F // 1823\n\tSYS___CHDIR_A                       = 0x720 // 1824\n\tSYS___CHOWN_A                       = 0x721 // 1825\n\tSYS___CHROOT_A                      = 0x722 // 1826\n\tSYS___GETCWD_A                      = 0x723 // 1827\n\tSYS___GETWD_A                       = 0x724 // 1828\n\tSYS___LCHOWN_A                      = 0x725 // 1829\n\tSYS___LINK_A                        = 0x726 // 1830\n\tSYS___PATHCONF_A                    = 0x727 // 1831\n\tSYS___IF_NAMEINDEX_A                = 0x728 // 1832\n\tSYS___READLINK_A                    = 0x729 // 1833\n\tSYS___RMDIR_A                       = 0x72A // 1834\n\tSYS___STATVFS_A                     = 0x72B // 1835\n\tSYS___SYMLINK_A                     = 0x72C // 1836\n\tSYS___TRUNCATE_A                    = 0x72D // 1837\n\tSYS___UNLINK_A                      = 0x72E // 1838\n\tSYS___GAI_STRERROR_A                = 0x72F // 1839\n\tSYS___EXTLINK_NP_A                  = 0x730 // 1840\n\tSYS___ISALNUM_A                     = 0x731 // 1841\n\tSYS___ISALPHA_A                     = 0x732 // 1842\n\tSYS___A2E_S                         = 0x733 // 1843\n\tSYS___ISCNTRL_A                     = 0x734 // 1844\n\tSYS___ISDIGIT_A                     = 0x735 // 1845\n\tSYS___ISGRAPH_A                     = 0x736 // 1846\n\tSYS___ISLOWER_A                     = 0x737 // 1847\n\tSYS___ISPRINT_A                     = 0x738 // 1848\n\tSYS___ISPUNCT_A                     = 0x739 // 1849\n\tSYS___ISSPACE_A                     = 0x73A // 1850\n\tSYS___ISUPPER_A                     = 0x73B // 1851\n\tSYS___ISXDIGIT_A                    = 0x73C // 1852\n\tSYS___TOLOWER_A                     = 0x73D // 1853\n\tSYS___TOUPPER_A                     = 0x73E // 1854\n\tSYS___ISWALNUM_A                    = 0x73F // 1855\n\tSYS___ISWALPHA_A                    = 0x740 // 1856\n\tSYS___A2E_L                         = 0x741 // 1857\n\tSYS___ISWCNTRL_A                    = 0x742 // 1858\n\tSYS___ISWDIGIT_A                    = 0x743 // 1859\n\tSYS___ISWGRAPH_A                    = 0x744 // 1860\n\tSYS___ISWLOWER_A                    = 0x745 // 1861\n\tSYS___ISWPRINT_A                    = 0x746 // 1862\n\tSYS___ISWPUNCT_A                    = 0x747 // 1863\n\tSYS___ISWSPACE_A                    = 0x748 // 1864\n\tSYS___ISWUPPER_A                    = 0x749 // 1865\n\tSYS___ISWXDIGIT_A                   = 0x74A // 1866\n\tSYS___CONFSTR_A                     = 0x74B // 1867\n\tSYS___FTOK_A                        = 0x74C // 1868\n\tSYS___MKTEMP_A                      = 0x74D // 1869\n\tSYS___FDOPEN_A                      = 0x74E // 1870\n\tSYS___FLDATA_A                      = 0x74F // 1871\n\tSYS___REMOVE_A                      = 0x750 // 1872\n\tSYS___RENAME_A                      = 0x751 // 1873\n\tSYS___TMPNAM_A                      = 0x752 // 1874\n\tSYS___FOPEN_A                       = 0x753 // 1875\n\tSYS___FREOPEN_A                     = 0x754 // 1876\n\tSYS___CUSERID_A                     = 0x755 // 1877\n\tSYS___POPEN_A                       = 0x756 // 1878\n\tSYS___TEMPNAM_A                     = 0x757 // 1879\n\tSYS___FTW_A                         = 0x758 // 1880\n\tSYS___GETGRENT_A                    = 0x759 // 1881\n\tSYS___GETGRGID_A                    = 0x75A // 1882\n\tSYS___GETGRNAM_A                    = 0x75B // 1883\n\tSYS___GETGROUPSBYNAME_A             = 0x75C // 1884\n\tSYS___GETHOSTENT_A                  = 0x75D // 1885\n\tSYS___GETHOSTNAME_A                 = 0x75E // 1886\n\tSYS___GETLOGIN_A                    = 0x75F // 1887\n\tSYS___INET_NTOP_A                   = 0x760 // 1888\n\tSYS___GETPASS_A                     = 0x761 // 1889\n\tSYS___GETPWENT_A                    = 0x762 // 1890\n\tSYS___GETPWNAM_A                    = 0x763 // 1891\n\tSYS___GETPWUID_A                    = 0x764 // 1892\n\tSYS_____CHECK_RESOURCE_AUTH_NP_A    = 0x765 // 1893\n\tSYS___CHECKSCHENV_A                 = 0x766 // 1894\n\tSYS___CONNECTSERVER_A               = 0x767 // 1895\n\tSYS___CONNECTWORKMGR_A              = 0x768 // 1896\n\tSYS_____CONSOLE_A                   = 0x769 // 1897\n\tSYS___CREATEWORKUNIT_A              = 0x76A // 1898\n\tSYS___CTERMID_A                     = 0x76B // 1899\n\tSYS___FMTMSG_A                      = 0x76C // 1900\n\tSYS___INITGROUPS_A                  = 0x76D // 1901\n\tSYS_____LOGIN_A                     = 0x76E // 1902\n\tSYS___MSGRCV_A                      = 0x76F // 1903\n\tSYS___MSGSND_A                      = 0x770 // 1904\n\tSYS___MSGXRCV_A                     = 0x771 // 1905\n\tSYS___NFTW_A                        = 0x772 // 1906\n\tSYS_____PASSWD_A                    = 0x773 // 1907\n\tSYS___PTHREAD_SECURITY_NP_A         = 0x774 // 1908\n\tSYS___QUERYMETRICS_A                = 0x775 // 1909\n\tSYS___QUERYSCHENV                   = 0x776 // 1910\n\tSYS___READV_A                       = 0x777 // 1911\n\tSYS_____SERVER_CLASSIFY_A           = 0x778 // 1912\n\tSYS_____SERVER_INIT_A               = 0x779 // 1913\n\tSYS_____SERVER_PWU_A                = 0x77A // 1914\n\tSYS___STRCASECMP_A                  = 0x77B // 1915\n\tSYS___STRNCASECMP_A                 = 0x77C // 1916\n\tSYS___TTYNAME_A                     = 0x77D // 1917\n\tSYS___UNAME_A                       = 0x77E // 1918\n\tSYS___UTIMES_A                      = 0x77F // 1919\n\tSYS___W_GETPSENT_A                  = 0x780 // 1920\n\tSYS___WRITEV_A                      = 0x781 // 1921\n\tSYS___W_STATFS_A                    = 0x782 // 1922\n\tSYS___W_STATVFS_A                   = 0x783 // 1923\n\tSYS___FPUTC_A                       = 0x784 // 1924\n\tSYS___PUTCHAR_A                     = 0x785 // 1925\n\tSYS___PUTS_A                        = 0x786 // 1926\n\tSYS___FGETS_A                       = 0x787 // 1927\n\tSYS___GETS_A                        = 0x788 // 1928\n\tSYS___FPUTS_A                       = 0x789 // 1929\n\tSYS___FREAD_A                       = 0x78A // 1930\n\tSYS___FWRITE_A                      = 0x78B // 1931\n\tSYS___OPEN_O_A                      = 0x78C // 1932\n\tSYS___ISASCII                       = 0x78D // 1933\n\tSYS___CREAT_O_A                     = 0x78E // 1934\n\tSYS___ENVNA                         = 0x78F // 1935\n\tSYS___PUTC_A                        = 0x790 // 1936\n\tSYS___AE_THREAD_SETMODE             = 0x791 // 1937\n\tSYS___AE_THREAD_SWAPMODE            = 0x792 // 1938\n\tSYS___GETNETBYADDR_A                = 0x793 // 1939\n\tSYS___GETNETBYNAME_A                = 0x794 // 1940\n\tSYS___GETNETENT_A                   = 0x795 // 1941\n\tSYS___GETPROTOBYNAME_A              = 0x796 // 1942\n\tSYS___GETPROTOBYNUMBER_A            = 0x797 // 1943\n\tSYS___GETPROTOENT_A                 = 0x798 // 1944\n\tSYS___GETSERVBYNAME_A               = 0x799 // 1945\n\tSYS___GETSERVBYPORT_A               = 0x79A // 1946\n\tSYS___GETSERVENT_A                  = 0x79B // 1947\n\tSYS___ASCTIME_A                     = 0x79C // 1948\n\tSYS___CTIME_A                       = 0x79D // 1949\n\tSYS___GETDATE_A                     = 0x79E // 1950\n\tSYS___TZSET_A                       = 0x79F // 1951\n\tSYS___UTIME_A                       = 0x7A0 // 1952\n\tSYS___ASCTIME_R_A                   = 0x7A1 // 1953\n\tSYS___CTIME_R_A                     = 0x7A2 // 1954\n\tSYS___STRTOLL_A                     = 0x7A3 // 1955\n\tSYS___STRTOULL_A                    = 0x7A4 // 1956\n\tSYS___FPUTWC_A                      = 0x7A5 // 1957\n\tSYS___PUTWC_A                       = 0x7A6 // 1958\n\tSYS___PUTWCHAR_A                    = 0x7A7 // 1959\n\tSYS___FPUTWS_A                      = 0x7A8 // 1960\n\tSYS___UNGETWC_A                     = 0x7A9 // 1961\n\tSYS___FGETWC_A                      = 0x7AA // 1962\n\tSYS___GETWC_A                       = 0x7AB // 1963\n\tSYS___GETWCHAR_A                    = 0x7AC // 1964\n\tSYS___FGETWS_A                      = 0x7AD // 1965\n\tSYS___GETTIMEOFDAY_A                = 0x7AE // 1966\n\tSYS___GMTIME_A                      = 0x7AF // 1967\n\tSYS___GMTIME_R_A                    = 0x7B0 // 1968\n\tSYS___LOCALTIME_A                   = 0x7B1 // 1969\n\tSYS___LOCALTIME_R_A                 = 0x7B2 // 1970\n\tSYS___MKTIME_A                      = 0x7B3 // 1971\n\tSYS___TZZNA                         = 0x7B4 // 1972\n\tSYS_UNATEXIT                        = 0x7B5 // 1973\n\tSYS___CEE3DMP_A                     = 0x7B6 // 1974\n\tSYS___CDUMP_A                       = 0x7B7 // 1975\n\tSYS___CSNAP_A                       = 0x7B8 // 1976\n\tSYS___CTEST_A                       = 0x7B9 // 1977\n\tSYS___CTRACE_A                      = 0x7BA // 1978\n\tSYS___VSWPRNTF2_A                   = 0x7BB // 1979\n\tSYS___INET_PTON_A                   = 0x7BC // 1980\n\tSYS___SYSLOG_A                      = 0x7BD // 1981\n\tSYS___CRYPT_A                       = 0x7BE // 1982\n\tSYS_____OPENDIR2_A                  = 0x7BF // 1983\n\tSYS_____READDIR2_A                  = 0x7C0 // 1984\n\tSYS___OPENDIR_A                     = 0x7C2 // 1986\n\tSYS___READDIR_A                     = 0x7C3 // 1987\n\tSYS_PREAD                           = 0x7C7 // 1991\n\tSYS_PWRITE                          = 0x7C8 // 1992\n\tSYS_M_CREATE_LAYOUT                 = 0x7C9 // 1993\n\tSYS_M_DESTROY_LAYOUT                = 0x7CA // 1994\n\tSYS_M_GETVALUES_LAYOUT              = 0x7CB // 1995\n\tSYS_M_SETVALUES_LAYOUT              = 0x7CC // 1996\n\tSYS_M_TRANSFORM_LAYOUT              = 0x7CD // 1997\n\tSYS_M_WTRANSFORM_LAYOUT             = 0x7CE // 1998\n\tSYS_FWPRINTF                        = 0x7D1 // 2001\n\tSYS_WPRINTF                         = 0x7D2 // 2002\n\tSYS_VFWPRINT                        = 0x7D3 // 2003\n\tSYS_VFWPRINTF                       = 0x7D3 // 2003\n\tSYS_VWPRINTF                        = 0x7D4 // 2004\n\tSYS_FWSCANF                         = 0x7D5 // 2005\n\tSYS_WSCANF                          = 0x7D6 // 2006\n\tSYS_WCTRANS                         = 0x7D7 // 2007\n\tSYS_TOWCTRAN                        = 0x7D8 // 2008\n\tSYS_TOWCTRANS                       = 0x7D8 // 2008\n\tSYS___WCSTOD_A                      = 0x7D9 // 2009\n\tSYS___WCSTOL_A                      = 0x7DA // 2010\n\tSYS___WCSTOUL_A                     = 0x7DB // 2011\n\tSYS___BASENAME_A                    = 0x7DC // 2012\n\tSYS___DIRNAME_A                     = 0x7DD // 2013\n\tSYS___GLOB_A                        = 0x7DE // 2014\n\tSYS_FWIDE                           = 0x7DF // 2015\n\tSYS___OSNAME                        = 0x7E0 // 2016\n\tSYS_____OSNAME_A                    = 0x7E1 // 2017\n\tSYS___BTOWC_A                       = 0x7E4 // 2020\n\tSYS___WCTOB_A                       = 0x7E5 // 2021\n\tSYS___DBM_OPEN_A                    = 0x7E6 // 2022\n\tSYS___VFPRINTF2_A                   = 0x7E7 // 2023\n\tSYS___VPRINTF2_A                    = 0x7E8 // 2024\n\tSYS___VSPRINTF2_A                   = 0x7E9 // 2025\n\tSYS___CEIL_H                        = 0x7EA // 2026\n\tSYS___FLOOR_H                       = 0x7EB // 2027\n\tSYS___MODF_H                        = 0x7EC // 2028\n\tSYS___FABS_H                        = 0x7ED // 2029\n\tSYS___J0_H                          = 0x7EE // 2030\n\tSYS___J1_H                          = 0x7EF // 2031\n\tSYS___JN_H                          = 0x7F0 // 2032\n\tSYS___Y0_H                          = 0x7F1 // 2033\n\tSYS___Y1_H                          = 0x7F2 // 2034\n\tSYS___YN_H                          = 0x7F3 // 2035\n\tSYS___CEILF_H                       = 0x7F4 // 2036\n\tSYS___CEILL_H                       = 0x7F5 // 2037\n\tSYS___FLOORF_H                      = 0x7F6 // 2038\n\tSYS___FLOORL_H                      = 0x7F7 // 2039\n\tSYS___MODFF_H                       = 0x7F8 // 2040\n\tSYS___MODFL_H                       = 0x7F9 // 2041\n\tSYS___FABSF_H                       = 0x7FA // 2042\n\tSYS___FABSL_H                       = 0x7FB // 2043\n\tSYS___MALLOC24                      = 0x7FC // 2044\n\tSYS___MALLOC31                      = 0x7FD // 2045\n\tSYS_ACL_INIT                        = 0x7FE // 2046\n\tSYS_ACL_FREE                        = 0x7FF // 2047\n\tSYS_ACL_FIRST_ENTRY                 = 0x800 // 2048\n\tSYS_ACL_GET_ENTRY                   = 0x801 // 2049\n\tSYS_ACL_VALID                       = 0x802 // 2050\n\tSYS_ACL_CREATE_ENTRY                = 0x803 // 2051\n\tSYS_ACL_DELETE_ENTRY                = 0x804 // 2052\n\tSYS_ACL_UPDATE_ENTRY                = 0x805 // 2053\n\tSYS_ACL_DELETE_FD                   = 0x806 // 2054\n\tSYS_ACL_DELETE_FILE                 = 0x807 // 2055\n\tSYS_ACL_GET_FD                      = 0x808 // 2056\n\tSYS_ACL_GET_FILE                    = 0x809 // 2057\n\tSYS_ACL_SET_FD                      = 0x80A // 2058\n\tSYS_ACL_SET_FILE                    = 0x80B // 2059\n\tSYS_ACL_FROM_TEXT                   = 0x80C // 2060\n\tSYS_ACL_TO_TEXT                     = 0x80D // 2061\n\tSYS_ACL_SORT                        = 0x80E // 2062\n\tSYS___SHUTDOWN_REGISTRATION         = 0x80F // 2063\n\tSYS___ERFL_B                        = 0x810 // 2064\n\tSYS___ERFCL_B                       = 0x811 // 2065\n\tSYS___LGAMMAL_B                     = 0x812 // 2066\n\tSYS___SETHOOKEVENTS                 = 0x813 // 2067\n\tSYS_IF_NAMETOINDEX                  = 0x814 // 2068\n\tSYS_IF_INDEXTONAME                  = 0x815 // 2069\n\tSYS_IF_NAMEINDEX                    = 0x816 // 2070\n\tSYS_IF_FREENAMEINDEX                = 0x817 // 2071\n\tSYS_GETADDRINFO                     = 0x818 // 2072\n\tSYS_GETNAMEINFO                     = 0x819 // 2073\n\tSYS_FREEADDRINFO                    = 0x81A // 2074\n\tSYS_GAI_STRERROR                    = 0x81B // 2075\n\tSYS_REXEC_AF                        = 0x81C // 2076\n\tSYS___POE                           = 0x81D // 2077\n\tSYS___DYNALLOC_A                    = 0x81F // 2079\n\tSYS___DYNFREE_A                     = 0x820 // 2080\n\tSYS___RES_QUERY_A                   = 0x821 // 2081\n\tSYS___RES_SEARCH_A                  = 0x822 // 2082\n\tSYS___RES_QUERYDOMAIN_A             = 0x823 // 2083\n\tSYS___RES_MKQUERY_A                 = 0x824 // 2084\n\tSYS___RES_SEND_A                    = 0x825 // 2085\n\tSYS___DN_EXPAND_A                   = 0x826 // 2086\n\tSYS___DN_SKIPNAME_A                 = 0x827 // 2087\n\tSYS___DN_COMP_A                     = 0x828 // 2088\n\tSYS___DN_FIND_A                     = 0x829 // 2089\n\tSYS___NLIST_A                       = 0x82A // 2090\n\tSYS_____TCGETCP_A                   = 0x82B // 2091\n\tSYS_____TCSETCP_A                   = 0x82C // 2092\n\tSYS_____W_PIOCTL_A                  = 0x82E // 2094\n\tSYS___INET_ADDR_A                   = 0x82F // 2095\n\tSYS___INET_NTOA_A                   = 0x830 // 2096\n\tSYS___INET_NETWORK_A                = 0x831 // 2097\n\tSYS___ACCEPT_A                      = 0x832 // 2098\n\tSYS___ACCEPT_AND_RECV_A             = 0x833 // 2099\n\tSYS___BIND_A                        = 0x834 // 2100\n\tSYS___CONNECT_A                     = 0x835 // 2101\n\tSYS___GETPEERNAME_A                 = 0x836 // 2102\n\tSYS___GETSOCKNAME_A                 = 0x837 // 2103\n\tSYS___RECVFROM_A                    = 0x838 // 2104\n\tSYS___SENDTO_A                      = 0x839 // 2105\n\tSYS___SENDMSG_A                     = 0x83A // 2106\n\tSYS___RECVMSG_A                     = 0x83B // 2107\n\tSYS_____LCHATTR_A                   = 0x83C // 2108\n\tSYS___CABEND                        = 0x83D // 2109\n\tSYS___LE_CIB_GET                    = 0x83E // 2110\n\tSYS___SET_LAA_FOR_JIT               = 0x83F // 2111\n\tSYS___LCHATTR                       = 0x840 // 2112\n\tSYS___WRITEDOWN                     = 0x841 // 2113\n\tSYS_PTHREAD_MUTEX_INIT2             = 0x842 // 2114\n\tSYS___ACOSHF_B                      = 0x843 // 2115\n\tSYS___ACOSHL_B                      = 0x844 // 2116\n\tSYS___ASINHF_B                      = 0x845 // 2117\n\tSYS___ASINHL_B                      = 0x846 // 2118\n\tSYS___ATANHF_B                      = 0x847 // 2119\n\tSYS___ATANHL_B                      = 0x848 // 2120\n\tSYS___CBRTF_B                       = 0x849 // 2121\n\tSYS___CBRTL_B                       = 0x84A // 2122\n\tSYS___COPYSIGNF_B                   = 0x84B // 2123\n\tSYS___COPYSIGNL_B                   = 0x84C // 2124\n\tSYS___COTANF_B                      = 0x84D // 2125\n\tSYS___COTAN_B                       = 0x84E // 2126\n\tSYS___COTANL_B                      = 0x84F // 2127\n\tSYS___EXP2F_B                       = 0x850 // 2128\n\tSYS___EXP2L_B                       = 0x851 // 2129\n\tSYS___EXPM1F_B                      = 0x852 // 2130\n\tSYS___EXPM1L_B                      = 0x853 // 2131\n\tSYS___FDIMF_B                       = 0x854 // 2132\n\tSYS___FDIM_B                        = 0x855 // 2133\n\tSYS___FDIML_B                       = 0x856 // 2134\n\tSYS___HYPOTF_B                      = 0x857 // 2135\n\tSYS___HYPOTL_B                      = 0x858 // 2136\n\tSYS___LOG1PF_B                      = 0x859 // 2137\n\tSYS___LOG1PL_B                      = 0x85A // 2138\n\tSYS___LOG2F_B                       = 0x85B // 2139\n\tSYS___LOG2_B                        = 0x85C // 2140\n\tSYS___LOG2L_B                       = 0x85D // 2141\n\tSYS___REMAINDERF_B                  = 0x85E // 2142\n\tSYS___REMAINDERL_B                  = 0x85F // 2143\n\tSYS___REMQUOF_B                     = 0x860 // 2144\n\tSYS___REMQUO_B                      = 0x861 // 2145\n\tSYS___REMQUOL_B                     = 0x862 // 2146\n\tSYS___TGAMMAF_B                     = 0x863 // 2147\n\tSYS___TGAMMA_B                      = 0x864 // 2148\n\tSYS___TGAMMAL_B                     = 0x865 // 2149\n\tSYS___TRUNCF_B                      = 0x866 // 2150\n\tSYS___TRUNC_B                       = 0x867 // 2151\n\tSYS___TRUNCL_B                      = 0x868 // 2152\n\tSYS___LGAMMAF_B                     = 0x869 // 2153\n\tSYS___LROUNDF_B                     = 0x86A // 2154\n\tSYS___LROUND_B                      = 0x86B // 2155\n\tSYS___ERFF_B                        = 0x86C // 2156\n\tSYS___ERFCF_B                       = 0x86D // 2157\n\tSYS_ACOSHF                          = 0x86E // 2158\n\tSYS_ACOSHL                          = 0x86F // 2159\n\tSYS_ASINHF                          = 0x870 // 2160\n\tSYS_ASINHL                          = 0x871 // 2161\n\tSYS_ATANHF                          = 0x872 // 2162\n\tSYS_ATANHL                          = 0x873 // 2163\n\tSYS_CBRTF                           = 0x874 // 2164\n\tSYS_CBRTL                           = 0x875 // 2165\n\tSYS_COPYSIGNF                       = 0x876 // 2166\n\tSYS_CPYSIGNF                        = 0x876 // 2166\n\tSYS_COPYSIGNL                       = 0x877 // 2167\n\tSYS_CPYSIGNL                        = 0x877 // 2167\n\tSYS_COTANF                          = 0x878 // 2168\n\tSYS___COTANF                        = 0x878 // 2168\n\tSYS_COTAN                           = 0x879 // 2169\n\tSYS___COTAN                         = 0x879 // 2169\n\tSYS_COTANL                          = 0x87A // 2170\n\tSYS___COTANL                        = 0x87A // 2170\n\tSYS_EXP2F                           = 0x87B // 2171\n\tSYS_EXP2L                           = 0x87C // 2172\n\tSYS_EXPM1F                          = 0x87D // 2173\n\tSYS_EXPM1L                          = 0x87E // 2174\n\tSYS_FDIMF                           = 0x87F // 2175\n\tSYS_FDIM                            = 0x881 // 2177\n\tSYS_FDIML                           = 0x882 // 2178\n\tSYS_HYPOTF                          = 0x883 // 2179\n\tSYS_HYPOTL                          = 0x884 // 2180\n\tSYS_LOG1PF                          = 0x885 // 2181\n\tSYS_LOG1PL                          = 0x886 // 2182\n\tSYS_LOG2F                           = 0x887 // 2183\n\tSYS_LOG2                            = 0x888 // 2184\n\tSYS_LOG2L                           = 0x889 // 2185\n\tSYS_REMAINDERF                      = 0x88A // 2186\n\tSYS_REMAINDF                        = 0x88A // 2186\n\tSYS_REMAINDERL                      = 0x88B // 2187\n\tSYS_REMAINDL                        = 0x88B // 2187\n\tSYS_REMQUOF                         = 0x88C // 2188\n\tSYS_REMQUO                          = 0x88D // 2189\n\tSYS_REMQUOL                         = 0x88E // 2190\n\tSYS_TGAMMAF                         = 0x88F // 2191\n\tSYS_TGAMMA                          = 0x890 // 2192\n\tSYS_TGAMMAL                         = 0x891 // 2193\n\tSYS_TRUNCF                          = 0x892 // 2194\n\tSYS_TRUNC                           = 0x893 // 2195\n\tSYS_TRUNCL                          = 0x894 // 2196\n\tSYS_LGAMMAF                         = 0x895 // 2197\n\tSYS_LGAMMAL                         = 0x896 // 2198\n\tSYS_LROUNDF                         = 0x897 // 2199\n\tSYS_LROUND                          = 0x898 // 2200\n\tSYS_ERFF                            = 0x899 // 2201\n\tSYS_ERFL                            = 0x89A // 2202\n\tSYS_ERFCF                           = 0x89B // 2203\n\tSYS_ERFCL                           = 0x89C // 2204\n\tSYS___EXP2_B                        = 0x89D // 2205\n\tSYS_EXP2                            = 0x89E // 2206\n\tSYS___FAR_JUMP                      = 0x89F // 2207\n\tSYS___TCGETATTR_A                   = 0x8A1 // 2209\n\tSYS___TCSETATTR_A                   = 0x8A2 // 2210\n\tSYS___SUPERKILL                     = 0x8A4 // 2212\n\tSYS___LE_CONDITION_TOKEN_BUILD      = 0x8A5 // 2213\n\tSYS___LE_MSG_ADD_INSERT             = 0x8A6 // 2214\n\tSYS___LE_MSG_GET                    = 0x8A7 // 2215\n\tSYS___LE_MSG_GET_AND_WRITE          = 0x8A8 // 2216\n\tSYS___LE_MSG_WRITE                  = 0x8A9 // 2217\n\tSYS___ITOA                          = 0x8AA // 2218\n\tSYS___UTOA                          = 0x8AB // 2219\n\tSYS___LTOA                          = 0x8AC // 2220\n\tSYS___ULTOA                         = 0x8AD // 2221\n\tSYS___LLTOA                         = 0x8AE // 2222\n\tSYS___ULLTOA                        = 0x8AF // 2223\n\tSYS___ITOA_A                        = 0x8B0 // 2224\n\tSYS___UTOA_A                        = 0x8B1 // 2225\n\tSYS___LTOA_A                        = 0x8B2 // 2226\n\tSYS___ULTOA_A                       = 0x8B3 // 2227\n\tSYS___LLTOA_A                       = 0x8B4 // 2228\n\tSYS___ULLTOA_A                      = 0x8B5 // 2229\n\tSYS_____GETENV_A                    = 0x8C3 // 2243\n\tSYS___REXEC_A                       = 0x8C4 // 2244\n\tSYS___REXEC_AF_A                    = 0x8C5 // 2245\n\tSYS___GETUTXENT_A                   = 0x8C6 // 2246\n\tSYS___GETUTXID_A                    = 0x8C7 // 2247\n\tSYS___GETUTXLINE_A                  = 0x8C8 // 2248\n\tSYS___PUTUTXLINE_A                  = 0x8C9 // 2249\n\tSYS_____UTMPXNAME_A                 = 0x8CA // 2250\n\tSYS___PUTC_UNLOCKED_A               = 0x8CB // 2251\n\tSYS___PUTCHAR_UNLOCKED_A            = 0x8CC // 2252\n\tSYS___SNPRINTF_A                    = 0x8CD // 2253\n\tSYS___VSNPRINTF_A                   = 0x8CE // 2254\n\tSYS___DLOPEN_A                      = 0x8D0 // 2256\n\tSYS___DLSYM_A                       = 0x8D1 // 2257\n\tSYS___DLERROR_A                     = 0x8D2 // 2258\n\tSYS_FLOCKFILE                       = 0x8D3 // 2259\n\tSYS_FTRYLOCKFILE                    = 0x8D4 // 2260\n\tSYS_FUNLOCKFILE                     = 0x8D5 // 2261\n\tSYS_GETC_UNLOCKED                   = 0x8D6 // 2262\n\tSYS_GETCHAR_UNLOCKED                = 0x8D7 // 2263\n\tSYS_PUTC_UNLOCKED                   = 0x8D8 // 2264\n\tSYS_PUTCHAR_UNLOCKED                = 0x8D9 // 2265\n\tSYS_SNPRINTF                        = 0x8DA // 2266\n\tSYS_VSNPRINTF                       = 0x8DB // 2267\n\tSYS_DLOPEN                          = 0x8DD // 2269\n\tSYS_DLSYM                           = 0x8DE // 2270\n\tSYS_DLCLOSE                         = 0x8DF // 2271\n\tSYS_DLERROR                         = 0x8E0 // 2272\n\tSYS___SET_EXCEPTION_HANDLER         = 0x8E2 // 2274\n\tSYS___RESET_EXCEPTION_HANDLER       = 0x8E3 // 2275\n\tSYS___VHM_EVENT                     = 0x8E4 // 2276\n\tSYS___ABS_H                         = 0x8E6 // 2278\n\tSYS___ABSF_H                        = 0x8E7 // 2279\n\tSYS___ABSL_H                        = 0x8E8 // 2280\n\tSYS___ACOS_H                        = 0x8E9 // 2281\n\tSYS___ACOSF_H                       = 0x8EA // 2282\n\tSYS___ACOSL_H                       = 0x8EB // 2283\n\tSYS___ACOSH_H                       = 0x8EC // 2284\n\tSYS___ASIN_H                        = 0x8ED // 2285\n\tSYS___ASINF_H                       = 0x8EE // 2286\n\tSYS___ASINL_H                       = 0x8EF // 2287\n\tSYS___ASINH_H                       = 0x8F0 // 2288\n\tSYS___ATAN_H                        = 0x8F1 // 2289\n\tSYS___ATANF_H                       = 0x8F2 // 2290\n\tSYS___ATANL_H                       = 0x8F3 // 2291\n\tSYS___ATANH_H                       = 0x8F4 // 2292\n\tSYS___ATANHF_H                      = 0x8F5 // 2293\n\tSYS___ATANHL_H                      = 0x8F6 // 2294\n\tSYS___ATAN2_H                       = 0x8F7 // 2295\n\tSYS___ATAN2F_H                      = 0x8F8 // 2296\n\tSYS___ATAN2L_H                      = 0x8F9 // 2297\n\tSYS___CBRT_H                        = 0x8FA // 2298\n\tSYS___COPYSIGNF_H                   = 0x8FB // 2299\n\tSYS___COPYSIGNL_H                   = 0x8FC // 2300\n\tSYS___COS_H                         = 0x8FD // 2301\n\tSYS___COSF_H                        = 0x8FE // 2302\n\tSYS___COSL_H                        = 0x8FF // 2303\n\tSYS___COSHF_H                       = 0x900 // 2304\n\tSYS___COSHL_H                       = 0x901 // 2305\n\tSYS___COTAN_H                       = 0x902 // 2306\n\tSYS___COTANF_H                      = 0x903 // 2307\n\tSYS___COTANL_H                      = 0x904 // 2308\n\tSYS___ERF_H                         = 0x905 // 2309\n\tSYS___ERFF_H                        = 0x906 // 2310\n\tSYS___ERFL_H                        = 0x907 // 2311\n\tSYS___ERFC_H                        = 0x908 // 2312\n\tSYS___ERFCF_H                       = 0x909 // 2313\n\tSYS___ERFCL_H                       = 0x90A // 2314\n\tSYS___EXP_H                         = 0x90B // 2315\n\tSYS___EXPF_H                        = 0x90C // 2316\n\tSYS___EXPL_H                        = 0x90D // 2317\n\tSYS___EXPM1_H                       = 0x90E // 2318\n\tSYS___FDIM_H                        = 0x90F // 2319\n\tSYS___FDIMF_H                       = 0x910 // 2320\n\tSYS___FDIML_H                       = 0x911 // 2321\n\tSYS___FMOD_H                        = 0x912 // 2322\n\tSYS___FMODF_H                       = 0x913 // 2323\n\tSYS___FMODL_H                       = 0x914 // 2324\n\tSYS___GAMMA_H                       = 0x915 // 2325\n\tSYS___HYPOT_H                       = 0x916 // 2326\n\tSYS___ILOGB_H                       = 0x917 // 2327\n\tSYS___LGAMMA_H                      = 0x918 // 2328\n\tSYS___LGAMMAF_H                     = 0x919 // 2329\n\tSYS___LOG_H                         = 0x91A // 2330\n\tSYS___LOGF_H                        = 0x91B // 2331\n\tSYS___LOGL_H                        = 0x91C // 2332\n\tSYS___LOGB_H                        = 0x91D // 2333\n\tSYS___LOG2_H                        = 0x91E // 2334\n\tSYS___LOG2F_H                       = 0x91F // 2335\n\tSYS___LOG2L_H                       = 0x920 // 2336\n\tSYS___LOG1P_H                       = 0x921 // 2337\n\tSYS___LOG10_H                       = 0x922 // 2338\n\tSYS___LOG10F_H                      = 0x923 // 2339\n\tSYS___LOG10L_H                      = 0x924 // 2340\n\tSYS___LROUND_H                      = 0x925 // 2341\n\tSYS___LROUNDF_H                     = 0x926 // 2342\n\tSYS___NEXTAFTER_H                   = 0x927 // 2343\n\tSYS___POW_H                         = 0x928 // 2344\n\tSYS___POWF_H                        = 0x929 // 2345\n\tSYS___POWL_H                        = 0x92A // 2346\n\tSYS___REMAINDER_H                   = 0x92B // 2347\n\tSYS___RINT_H                        = 0x92C // 2348\n\tSYS___SCALB_H                       = 0x92D // 2349\n\tSYS___SIN_H                         = 0x92E // 2350\n\tSYS___SINF_H                        = 0x92F // 2351\n\tSYS___SINL_H                        = 0x930 // 2352\n\tSYS___SINH_H                        = 0x931 // 2353\n\tSYS___SINHF_H                       = 0x932 // 2354\n\tSYS___SINHL_H                       = 0x933 // 2355\n\tSYS___SQRT_H                        = 0x934 // 2356\n\tSYS___SQRTF_H                       = 0x935 // 2357\n\tSYS___SQRTL_H                       = 0x936 // 2358\n\tSYS___TAN_H                         = 0x937 // 2359\n\tSYS___TANF_H                        = 0x938 // 2360\n\tSYS___TANL_H                        = 0x939 // 2361\n\tSYS___TANH_H                        = 0x93A // 2362\n\tSYS___TANHF_H                       = 0x93B // 2363\n\tSYS___TANHL_H                       = 0x93C // 2364\n\tSYS___TGAMMA_H                      = 0x93D // 2365\n\tSYS___TGAMMAF_H                     = 0x93E // 2366\n\tSYS___TRUNC_H                       = 0x93F // 2367\n\tSYS___TRUNCF_H                      = 0x940 // 2368\n\tSYS___TRUNCL_H                      = 0x941 // 2369\n\tSYS___COSH_H                        = 0x942 // 2370\n\tSYS___LE_DEBUG_SET_RESUME_MCH       = 0x943 // 2371\n\tSYS_VFSCANF                         = 0x944 // 2372\n\tSYS_VSCANF                          = 0x946 // 2374\n\tSYS_VSSCANF                         = 0x948 // 2376\n\tSYS_VFWSCANF                        = 0x94A // 2378\n\tSYS_VWSCANF                         = 0x94C // 2380\n\tSYS_VSWSCANF                        = 0x94E // 2382\n\tSYS_IMAXABS                         = 0x950 // 2384\n\tSYS_IMAXDIV                         = 0x951 // 2385\n\tSYS_STRTOIMAX                       = 0x952 // 2386\n\tSYS_STRTOUMAX                       = 0x953 // 2387\n\tSYS_WCSTOIMAX                       = 0x954 // 2388\n\tSYS_WCSTOUMAX                       = 0x955 // 2389\n\tSYS_ATOLL                           = 0x956 // 2390\n\tSYS_STRTOF                          = 0x957 // 2391\n\tSYS_STRTOLD                         = 0x958 // 2392\n\tSYS_WCSTOF                          = 0x959 // 2393\n\tSYS_WCSTOLD                         = 0x95A // 2394\n\tSYS_INET6_RTH_SPACE                 = 0x95B // 2395\n\tSYS_INET6_RTH_INIT                  = 0x95C // 2396\n\tSYS_INET6_RTH_ADD                   = 0x95D // 2397\n\tSYS_INET6_RTH_REVERSE               = 0x95E // 2398\n\tSYS_INET6_RTH_SEGMENTS              = 0x95F // 2399\n\tSYS_INET6_RTH_GETADDR               = 0x960 // 2400\n\tSYS_INET6_OPT_INIT                  = 0x961 // 2401\n\tSYS_INET6_OPT_APPEND                = 0x962 // 2402\n\tSYS_INET6_OPT_FINISH                = 0x963 // 2403\n\tSYS_INET6_OPT_SET_VAL               = 0x964 // 2404\n\tSYS_INET6_OPT_NEXT                  = 0x965 // 2405\n\tSYS_INET6_OPT_FIND                  = 0x966 // 2406\n\tSYS_INET6_OPT_GET_VAL               = 0x967 // 2407\n\tSYS___POW_I                         = 0x987 // 2439\n\tSYS___POW_I_B                       = 0x988 // 2440\n\tSYS___POW_I_H                       = 0x989 // 2441\n\tSYS___POW_II                        = 0x98A // 2442\n\tSYS___POW_II_B                      = 0x98B // 2443\n\tSYS___POW_II_H                      = 0x98C // 2444\n\tSYS_CABS                            = 0x98E // 2446\n\tSYS___CABS_B                        = 0x98F // 2447\n\tSYS___CABS_H                        = 0x990 // 2448\n\tSYS_CABSF                           = 0x991 // 2449\n\tSYS___CABSF_B                       = 0x992 // 2450\n\tSYS___CABSF_H                       = 0x993 // 2451\n\tSYS_CABSL                           = 0x994 // 2452\n\tSYS___CABSL_B                       = 0x995 // 2453\n\tSYS___CABSL_H                       = 0x996 // 2454\n\tSYS_CACOS                           = 0x997 // 2455\n\tSYS___CACOS_B                       = 0x998 // 2456\n\tSYS___CACOS_H                       = 0x999 // 2457\n\tSYS_CACOSF                          = 0x99A // 2458\n\tSYS___CACOSF_B                      = 0x99B // 2459\n\tSYS___CACOSF_H                      = 0x99C // 2460\n\tSYS_CACOSL                          = 0x99D // 2461\n\tSYS___CACOSL_B                      = 0x99E // 2462\n\tSYS___CACOSL_H                      = 0x99F // 2463\n\tSYS_CACOSH                          = 0x9A0 // 2464\n\tSYS___CACOSH_B                      = 0x9A1 // 2465\n\tSYS___CACOSH_H                      = 0x9A2 // 2466\n\tSYS_CACOSHF                         = 0x9A3 // 2467\n\tSYS___CACOSHF_B                     = 0x9A4 // 2468\n\tSYS___CACOSHF_H                     = 0x9A5 // 2469\n\tSYS_CACOSHL                         = 0x9A6 // 2470\n\tSYS___CACOSHL_B                     = 0x9A7 // 2471\n\tSYS___CACOSHL_H                     = 0x9A8 // 2472\n\tSYS_CARG                            = 0x9A9 // 2473\n\tSYS___CARG_B                        = 0x9AA // 2474\n\tSYS___CARG_H                        = 0x9AB // 2475\n\tSYS_CARGF                           = 0x9AC // 2476\n\tSYS___CARGF_B                       = 0x9AD // 2477\n\tSYS___CARGF_H                       = 0x9AE // 2478\n\tSYS_CARGL                           = 0x9AF // 2479\n\tSYS___CARGL_B                       = 0x9B0 // 2480\n\tSYS___CARGL_H                       = 0x9B1 // 2481\n\tSYS_CASIN                           = 0x9B2 // 2482\n\tSYS___CASIN_B                       = 0x9B3 // 2483\n\tSYS___CASIN_H                       = 0x9B4 // 2484\n\tSYS_CASINF                          = 0x9B5 // 2485\n\tSYS___CASINF_B                      = 0x9B6 // 2486\n\tSYS___CASINF_H                      = 0x9B7 // 2487\n\tSYS_CASINL                          = 0x9B8 // 2488\n\tSYS___CASINL_B                      = 0x9B9 // 2489\n\tSYS___CASINL_H                      = 0x9BA // 2490\n\tSYS_CASINH                          = 0x9BB // 2491\n\tSYS___CASINH_B                      = 0x9BC // 2492\n\tSYS___CASINH_H                      = 0x9BD // 2493\n\tSYS_CASINHF                         = 0x9BE // 2494\n\tSYS___CASINHF_B                     = 0x9BF // 2495\n\tSYS___CASINHF_H                     = 0x9C0 // 2496\n\tSYS_CASINHL                         = 0x9C1 // 2497\n\tSYS___CASINHL_B                     = 0x9C2 // 2498\n\tSYS___CASINHL_H                     = 0x9C3 // 2499\n\tSYS_CATAN                           = 0x9C4 // 2500\n\tSYS___CATAN_B                       = 0x9C5 // 2501\n\tSYS___CATAN_H                       = 0x9C6 // 2502\n\tSYS_CATANF                          = 0x9C7 // 2503\n\tSYS___CATANF_B                      = 0x9C8 // 2504\n\tSYS___CATANF_H                      = 0x9C9 // 2505\n\tSYS_CATANL                          = 0x9CA // 2506\n\tSYS___CATANL_B                      = 0x9CB // 2507\n\tSYS___CATANL_H                      = 0x9CC // 2508\n\tSYS_CATANH                          = 0x9CD // 2509\n\tSYS___CATANH_B                      = 0x9CE // 2510\n\tSYS___CATANH_H                      = 0x9CF // 2511\n\tSYS_CATANHF                         = 0x9D0 // 2512\n\tSYS___CATANHF_B                     = 0x9D1 // 2513\n\tSYS___CATANHF_H                     = 0x9D2 // 2514\n\tSYS_CATANHL                         = 0x9D3 // 2515\n\tSYS___CATANHL_B                     = 0x9D4 // 2516\n\tSYS___CATANHL_H                     = 0x9D5 // 2517\n\tSYS_CCOS                            = 0x9D6 // 2518\n\tSYS___CCOS_B                        = 0x9D7 // 2519\n\tSYS___CCOS_H                        = 0x9D8 // 2520\n\tSYS_CCOSF                           = 0x9D9 // 2521\n\tSYS___CCOSF_B                       = 0x9DA // 2522\n\tSYS___CCOSF_H                       = 0x9DB // 2523\n\tSYS_CCOSL                           = 0x9DC // 2524\n\tSYS___CCOSL_B                       = 0x9DD // 2525\n\tSYS___CCOSL_H                       = 0x9DE // 2526\n\tSYS_CCOSH                           = 0x9DF // 2527\n\tSYS___CCOSH_B                       = 0x9E0 // 2528\n\tSYS___CCOSH_H                       = 0x9E1 // 2529\n\tSYS_CCOSHF                          = 0x9E2 // 2530\n\tSYS___CCOSHF_B                      = 0x9E3 // 2531\n\tSYS___CCOSHF_H                      = 0x9E4 // 2532\n\tSYS_CCOSHL                          = 0x9E5 // 2533\n\tSYS___CCOSHL_B                      = 0x9E6 // 2534\n\tSYS___CCOSHL_H                      = 0x9E7 // 2535\n\tSYS_CEXP                            = 0x9E8 // 2536\n\tSYS___CEXP_B                        = 0x9E9 // 2537\n\tSYS___CEXP_H                        = 0x9EA // 2538\n\tSYS_CEXPF                           = 0x9EB // 2539\n\tSYS___CEXPF_B                       = 0x9EC // 2540\n\tSYS___CEXPF_H                       = 0x9ED // 2541\n\tSYS_CEXPL                           = 0x9EE // 2542\n\tSYS___CEXPL_B                       = 0x9EF // 2543\n\tSYS___CEXPL_H                       = 0x9F0 // 2544\n\tSYS_CIMAG                           = 0x9F1 // 2545\n\tSYS___CIMAG_B                       = 0x9F2 // 2546\n\tSYS___CIMAG_H                       = 0x9F3 // 2547\n\tSYS_CIMAGF                          = 0x9F4 // 2548\n\tSYS___CIMAGF_B                      = 0x9F5 // 2549\n\tSYS___CIMAGF_H                      = 0x9F6 // 2550\n\tSYS_CIMAGL                          = 0x9F7 // 2551\n\tSYS___CIMAGL_B                      = 0x9F8 // 2552\n\tSYS___CIMAGL_H                      = 0x9F9 // 2553\n\tSYS___CLOG                          = 0x9FA // 2554\n\tSYS___CLOG_B                        = 0x9FB // 2555\n\tSYS___CLOG_H                        = 0x9FC // 2556\n\tSYS_CLOGF                           = 0x9FD // 2557\n\tSYS___CLOGF_B                       = 0x9FE // 2558\n\tSYS___CLOGF_H                       = 0x9FF // 2559\n\tSYS_CLOGL                           = 0xA00 // 2560\n\tSYS___CLOGL_B                       = 0xA01 // 2561\n\tSYS___CLOGL_H                       = 0xA02 // 2562\n\tSYS_CONJ                            = 0xA03 // 2563\n\tSYS___CONJ_B                        = 0xA04 // 2564\n\tSYS___CONJ_H                        = 0xA05 // 2565\n\tSYS_CONJF                           = 0xA06 // 2566\n\tSYS___CONJF_B                       = 0xA07 // 2567\n\tSYS___CONJF_H                       = 0xA08 // 2568\n\tSYS_CONJL                           = 0xA09 // 2569\n\tSYS___CONJL_B                       = 0xA0A // 2570\n\tSYS___CONJL_H                       = 0xA0B // 2571\n\tSYS_CPOW                            = 0xA0C // 2572\n\tSYS___CPOW_B                        = 0xA0D // 2573\n\tSYS___CPOW_H                        = 0xA0E // 2574\n\tSYS_CPOWF                           = 0xA0F // 2575\n\tSYS___CPOWF_B                       = 0xA10 // 2576\n\tSYS___CPOWF_H                       = 0xA11 // 2577\n\tSYS_CPOWL                           = 0xA12 // 2578\n\tSYS___CPOWL_B                       = 0xA13 // 2579\n\tSYS___CPOWL_H                       = 0xA14 // 2580\n\tSYS_CPROJ                           = 0xA15 // 2581\n\tSYS___CPROJ_B                       = 0xA16 // 2582\n\tSYS___CPROJ_H                       = 0xA17 // 2583\n\tSYS_CPROJF                          = 0xA18 // 2584\n\tSYS___CPROJF_B                      = 0xA19 // 2585\n\tSYS___CPROJF_H                      = 0xA1A // 2586\n\tSYS_CPROJL                          = 0xA1B // 2587\n\tSYS___CPROJL_B                      = 0xA1C // 2588\n\tSYS___CPROJL_H                      = 0xA1D // 2589\n\tSYS_CREAL                           = 0xA1E // 2590\n\tSYS___CREAL_B                       = 0xA1F // 2591\n\tSYS___CREAL_H                       = 0xA20 // 2592\n\tSYS_CREALF                          = 0xA21 // 2593\n\tSYS___CREALF_B                      = 0xA22 // 2594\n\tSYS___CREALF_H                      = 0xA23 // 2595\n\tSYS_CREALL                          = 0xA24 // 2596\n\tSYS___CREALL_B                      = 0xA25 // 2597\n\tSYS___CREALL_H                      = 0xA26 // 2598\n\tSYS_CSIN                            = 0xA27 // 2599\n\tSYS___CSIN_B                        = 0xA28 // 2600\n\tSYS___CSIN_H                        = 0xA29 // 2601\n\tSYS_CSINF                           = 0xA2A // 2602\n\tSYS___CSINF_B                       = 0xA2B // 2603\n\tSYS___CSINF_H                       = 0xA2C // 2604\n\tSYS_CSINL                           = 0xA2D // 2605\n\tSYS___CSINL_B                       = 0xA2E // 2606\n\tSYS___CSINL_H                       = 0xA2F // 2607\n\tSYS_CSINH                           = 0xA30 // 2608\n\tSYS___CSINH_B                       = 0xA31 // 2609\n\tSYS___CSINH_H                       = 0xA32 // 2610\n\tSYS_CSINHF                          = 0xA33 // 2611\n\tSYS___CSINHF_B                      = 0xA34 // 2612\n\tSYS___CSINHF_H                      = 0xA35 // 2613\n\tSYS_CSINHL                          = 0xA36 // 2614\n\tSYS___CSINHL_B                      = 0xA37 // 2615\n\tSYS___CSINHL_H                      = 0xA38 // 2616\n\tSYS_CSQRT                           = 0xA39 // 2617\n\tSYS___CSQRT_B                       = 0xA3A // 2618\n\tSYS___CSQRT_H                       = 0xA3B // 2619\n\tSYS_CSQRTF                          = 0xA3C // 2620\n\tSYS___CSQRTF_B                      = 0xA3D // 2621\n\tSYS___CSQRTF_H                      = 0xA3E // 2622\n\tSYS_CSQRTL                          = 0xA3F // 2623\n\tSYS___CSQRTL_B                      = 0xA40 // 2624\n\tSYS___CSQRTL_H                      = 0xA41 // 2625\n\tSYS_CTAN                            = 0xA42 // 2626\n\tSYS___CTAN_B                        = 0xA43 // 2627\n\tSYS___CTAN_H                        = 0xA44 // 2628\n\tSYS_CTANF                           = 0xA45 // 2629\n\tSYS___CTANF_B                       = 0xA46 // 2630\n\tSYS___CTANF_H                       = 0xA47 // 2631\n\tSYS_CTANL                           = 0xA48 // 2632\n\tSYS___CTANL_B                       = 0xA49 // 2633\n\tSYS___CTANL_H                       = 0xA4A // 2634\n\tSYS_CTANH                           = 0xA4B // 2635\n\tSYS___CTANH_B                       = 0xA4C // 2636\n\tSYS___CTANH_H                       = 0xA4D // 2637\n\tSYS_CTANHF                          = 0xA4E // 2638\n\tSYS___CTANHF_B                      = 0xA4F // 2639\n\tSYS___CTANHF_H                      = 0xA50 // 2640\n\tSYS_CTANHL                          = 0xA51 // 2641\n\tSYS___CTANHL_B                      = 0xA52 // 2642\n\tSYS___CTANHL_H                      = 0xA53 // 2643\n\tSYS___ACOSHF_H                      = 0xA54 // 2644\n\tSYS___ACOSHL_H                      = 0xA55 // 2645\n\tSYS___ASINHF_H                      = 0xA56 // 2646\n\tSYS___ASINHL_H                      = 0xA57 // 2647\n\tSYS___CBRTF_H                       = 0xA58 // 2648\n\tSYS___CBRTL_H                       = 0xA59 // 2649\n\tSYS___COPYSIGN_B                    = 0xA5A // 2650\n\tSYS___EXPM1F_H                      = 0xA5B // 2651\n\tSYS___EXPM1L_H                      = 0xA5C // 2652\n\tSYS___EXP2_H                        = 0xA5D // 2653\n\tSYS___EXP2F_H                       = 0xA5E // 2654\n\tSYS___EXP2L_H                       = 0xA5F // 2655\n\tSYS___LOG1PF_H                      = 0xA60 // 2656\n\tSYS___LOG1PL_H                      = 0xA61 // 2657\n\tSYS___LGAMMAL_H                     = 0xA62 // 2658\n\tSYS_FMA                             = 0xA63 // 2659\n\tSYS___FMA_B                         = 0xA64 // 2660\n\tSYS___FMA_H                         = 0xA65 // 2661\n\tSYS_FMAF                            = 0xA66 // 2662\n\tSYS___FMAF_B                        = 0xA67 // 2663\n\tSYS___FMAF_H                        = 0xA68 // 2664\n\tSYS_FMAL                            = 0xA69 // 2665\n\tSYS___FMAL_B                        = 0xA6A // 2666\n\tSYS___FMAL_H                        = 0xA6B // 2667\n\tSYS_FMAX                            = 0xA6C // 2668\n\tSYS___FMAX_B                        = 0xA6D // 2669\n\tSYS___FMAX_H                        = 0xA6E // 2670\n\tSYS_FMAXF                           = 0xA6F // 2671\n\tSYS___FMAXF_B                       = 0xA70 // 2672\n\tSYS___FMAXF_H                       = 0xA71 // 2673\n\tSYS_FMAXL                           = 0xA72 // 2674\n\tSYS___FMAXL_B                       = 0xA73 // 2675\n\tSYS___FMAXL_H                       = 0xA74 // 2676\n\tSYS_FMIN                            = 0xA75 // 2677\n\tSYS___FMIN_B                        = 0xA76 // 2678\n\tSYS___FMIN_H                        = 0xA77 // 2679\n\tSYS_FMINF                           = 0xA78 // 2680\n\tSYS___FMINF_B                       = 0xA79 // 2681\n\tSYS___FMINF_H                       = 0xA7A // 2682\n\tSYS_FMINL                           = 0xA7B // 2683\n\tSYS___FMINL_B                       = 0xA7C // 2684\n\tSYS___FMINL_H                       = 0xA7D // 2685\n\tSYS_ILOGBF                          = 0xA7E // 2686\n\tSYS___ILOGBF_B                      = 0xA7F // 2687\n\tSYS___ILOGBF_H                      = 0xA80 // 2688\n\tSYS_ILOGBL                          = 0xA81 // 2689\n\tSYS___ILOGBL_B                      = 0xA82 // 2690\n\tSYS___ILOGBL_H                      = 0xA83 // 2691\n\tSYS_LLRINT                          = 0xA84 // 2692\n\tSYS___LLRINT_B                      = 0xA85 // 2693\n\tSYS___LLRINT_H                      = 0xA86 // 2694\n\tSYS_LLRINTF                         = 0xA87 // 2695\n\tSYS___LLRINTF_B                     = 0xA88 // 2696\n\tSYS___LLRINTF_H                     = 0xA89 // 2697\n\tSYS_LLRINTL                         = 0xA8A // 2698\n\tSYS___LLRINTL_B                     = 0xA8B // 2699\n\tSYS___LLRINTL_H                     = 0xA8C // 2700\n\tSYS_LLROUND                         = 0xA8D // 2701\n\tSYS___LLROUND_B                     = 0xA8E // 2702\n\tSYS___LLROUND_H                     = 0xA8F // 2703\n\tSYS_LLROUNDF                        = 0xA90 // 2704\n\tSYS___LLROUNDF_B                    = 0xA91 // 2705\n\tSYS___LLROUNDF_H                    = 0xA92 // 2706\n\tSYS_LLROUNDL                        = 0xA93 // 2707\n\tSYS___LLROUNDL_B                    = 0xA94 // 2708\n\tSYS___LLROUNDL_H                    = 0xA95 // 2709\n\tSYS_LOGBF                           = 0xA96 // 2710\n\tSYS___LOGBF_B                       = 0xA97 // 2711\n\tSYS___LOGBF_H                       = 0xA98 // 2712\n\tSYS_LOGBL                           = 0xA99 // 2713\n\tSYS___LOGBL_B                       = 0xA9A // 2714\n\tSYS___LOGBL_H                       = 0xA9B // 2715\n\tSYS_LRINT                           = 0xA9C // 2716\n\tSYS___LRINT_B                       = 0xA9D // 2717\n\tSYS___LRINT_H                       = 0xA9E // 2718\n\tSYS_LRINTF                          = 0xA9F // 2719\n\tSYS___LRINTF_B                      = 0xAA0 // 2720\n\tSYS___LRINTF_H                      = 0xAA1 // 2721\n\tSYS_LRINTL                          = 0xAA2 // 2722\n\tSYS___LRINTL_B                      = 0xAA3 // 2723\n\tSYS___LRINTL_H                      = 0xAA4 // 2724\n\tSYS_LROUNDL                         = 0xAA5 // 2725\n\tSYS___LROUNDL_B                     = 0xAA6 // 2726\n\tSYS___LROUNDL_H                     = 0xAA7 // 2727\n\tSYS_NAN                             = 0xAA8 // 2728\n\tSYS___NAN_B                         = 0xAA9 // 2729\n\tSYS_NANF                            = 0xAAA // 2730\n\tSYS___NANF_B                        = 0xAAB // 2731\n\tSYS_NANL                            = 0xAAC // 2732\n\tSYS___NANL_B                        = 0xAAD // 2733\n\tSYS_NEARBYINT                       = 0xAAE // 2734\n\tSYS___NEARBYINT_B                   = 0xAAF // 2735\n\tSYS___NEARBYINT_H                   = 0xAB0 // 2736\n\tSYS_NEARBYINTF                      = 0xAB1 // 2737\n\tSYS___NEARBYINTF_B                  = 0xAB2 // 2738\n\tSYS___NEARBYINTF_H                  = 0xAB3 // 2739\n\tSYS_NEARBYINTL                      = 0xAB4 // 2740\n\tSYS___NEARBYINTL_B                  = 0xAB5 // 2741\n\tSYS___NEARBYINTL_H                  = 0xAB6 // 2742\n\tSYS_NEXTAFTERF                      = 0xAB7 // 2743\n\tSYS___NEXTAFTERF_B                  = 0xAB8 // 2744\n\tSYS___NEXTAFTERF_H                  = 0xAB9 // 2745\n\tSYS_NEXTAFTERL                      = 0xABA // 2746\n\tSYS___NEXTAFTERL_B                  = 0xABB // 2747\n\tSYS___NEXTAFTERL_H                  = 0xABC // 2748\n\tSYS_NEXTTOWARD                      = 0xABD // 2749\n\tSYS___NEXTTOWARD_B                  = 0xABE // 2750\n\tSYS___NEXTTOWARD_H                  = 0xABF // 2751\n\tSYS_NEXTTOWARDF                     = 0xAC0 // 2752\n\tSYS___NEXTTOWARDF_B                 = 0xAC1 // 2753\n\tSYS___NEXTTOWARDF_H                 = 0xAC2 // 2754\n\tSYS_NEXTTOWARDL                     = 0xAC3 // 2755\n\tSYS___NEXTTOWARDL_B                 = 0xAC4 // 2756\n\tSYS___NEXTTOWARDL_H                 = 0xAC5 // 2757\n\tSYS___REMAINDERF_H                  = 0xAC6 // 2758\n\tSYS___REMAINDERL_H                  = 0xAC7 // 2759\n\tSYS___REMQUO_H                      = 0xAC8 // 2760\n\tSYS___REMQUOF_H                     = 0xAC9 // 2761\n\tSYS___REMQUOL_H                     = 0xACA // 2762\n\tSYS_RINTF                           = 0xACB // 2763\n\tSYS___RINTF_B                       = 0xACC // 2764\n\tSYS_RINTL                           = 0xACD // 2765\n\tSYS___RINTL_B                       = 0xACE // 2766\n\tSYS_ROUND                           = 0xACF // 2767\n\tSYS___ROUND_B                       = 0xAD0 // 2768\n\tSYS___ROUND_H                       = 0xAD1 // 2769\n\tSYS_ROUNDF                          = 0xAD2 // 2770\n\tSYS___ROUNDF_B                      = 0xAD3 // 2771\n\tSYS___ROUNDF_H                      = 0xAD4 // 2772\n\tSYS_ROUNDL                          = 0xAD5 // 2773\n\tSYS___ROUNDL_B                      = 0xAD6 // 2774\n\tSYS___ROUNDL_H                      = 0xAD7 // 2775\n\tSYS_SCALBLN                         = 0xAD8 // 2776\n\tSYS___SCALBLN_B                     = 0xAD9 // 2777\n\tSYS___SCALBLN_H                     = 0xADA // 2778\n\tSYS_SCALBLNF                        = 0xADB // 2779\n\tSYS___SCALBLNF_B                    = 0xADC // 2780\n\tSYS___SCALBLNF_H                    = 0xADD // 2781\n\tSYS_SCALBLNL                        = 0xADE // 2782\n\tSYS___SCALBLNL_B                    = 0xADF // 2783\n\tSYS___SCALBLNL_H                    = 0xAE0 // 2784\n\tSYS___SCALBN_B                      = 0xAE1 // 2785\n\tSYS___SCALBN_H                      = 0xAE2 // 2786\n\tSYS_SCALBNF                         = 0xAE3 // 2787\n\tSYS___SCALBNF_B                     = 0xAE4 // 2788\n\tSYS___SCALBNF_H                     = 0xAE5 // 2789\n\tSYS_SCALBNL                         = 0xAE6 // 2790\n\tSYS___SCALBNL_B                     = 0xAE7 // 2791\n\tSYS___SCALBNL_H                     = 0xAE8 // 2792\n\tSYS___TGAMMAL_H                     = 0xAE9 // 2793\n\tSYS_FECLEAREXCEPT                   = 0xAEA // 2794\n\tSYS_FEGETENV                        = 0xAEB // 2795\n\tSYS_FEGETEXCEPTFLAG                 = 0xAEC // 2796\n\tSYS_FEGETROUND                      = 0xAED // 2797\n\tSYS_FEHOLDEXCEPT                    = 0xAEE // 2798\n\tSYS_FERAISEEXCEPT                   = 0xAEF // 2799\n\tSYS_FESETENV                        = 0xAF0 // 2800\n\tSYS_FESETEXCEPTFLAG                 = 0xAF1 // 2801\n\tSYS_FESETROUND                      = 0xAF2 // 2802\n\tSYS_FETESTEXCEPT                    = 0xAF3 // 2803\n\tSYS_FEUPDATEENV                     = 0xAF4 // 2804\n\tSYS___COPYSIGN_H                    = 0xAF5 // 2805\n\tSYS___HYPOTF_H                      = 0xAF6 // 2806\n\tSYS___HYPOTL_H                      = 0xAF7 // 2807\n\tSYS___CLASS                         = 0xAFA // 2810\n\tSYS___CLASS_B                       = 0xAFB // 2811\n\tSYS___CLASS_H                       = 0xAFC // 2812\n\tSYS___ISBLANK_A                     = 0xB2E // 2862\n\tSYS___ISWBLANK_A                    = 0xB2F // 2863\n\tSYS___LROUND_FIXUP                  = 0xB30 // 2864\n\tSYS___LROUNDF_FIXUP                 = 0xB31 // 2865\n\tSYS_SCHED_YIELD                     = 0xB32 // 2866\n\tSYS_STRERROR_R                      = 0xB33 // 2867\n\tSYS_UNSETENV                        = 0xB34 // 2868\n\tSYS___LGAMMA_H_C99                  = 0xB38 // 2872\n\tSYS___LGAMMA_B_C99                  = 0xB39 // 2873\n\tSYS___LGAMMA_R_C99                  = 0xB3A // 2874\n\tSYS___FTELL2                        = 0xB3B // 2875\n\tSYS___FSEEK2                        = 0xB3C // 2876\n\tSYS___STATIC_REINIT                 = 0xB3D // 2877\n\tSYS_PTHREAD_ATTR_GETSTACK           = 0xB3E // 2878\n\tSYS_PTHREAD_ATTR_SETSTACK           = 0xB3F // 2879\n\tSYS___TGAMMA_H_C99                  = 0xB78 // 2936\n\tSYS___TGAMMAF_H_C99                 = 0xB79 // 2937\n\tSYS___LE_TRACEBACK                  = 0xB7A // 2938\n\tSYS___MUST_STAY_CLEAN               = 0xB7C // 2940\n\tSYS___O_ENV                         = 0xB7D // 2941\n\tSYS_ACOSD32                         = 0xB7E // 2942\n\tSYS_ACOSD64                         = 0xB7F // 2943\n\tSYS_ACOSD128                        = 0xB80 // 2944\n\tSYS_ACOSHD32                        = 0xB81 // 2945\n\tSYS_ACOSHD64                        = 0xB82 // 2946\n\tSYS_ACOSHD128                       = 0xB83 // 2947\n\tSYS_ASIND32                         = 0xB84 // 2948\n\tSYS_ASIND64                         = 0xB85 // 2949\n\tSYS_ASIND128                        = 0xB86 // 2950\n\tSYS_ASINHD32                        = 0xB87 // 2951\n\tSYS_ASINHD64                        = 0xB88 // 2952\n\tSYS_ASINHD128                       = 0xB89 // 2953\n\tSYS_ATAND32                         = 0xB8A // 2954\n\tSYS_ATAND64                         = 0xB8B // 2955\n\tSYS_ATAND128                        = 0xB8C // 2956\n\tSYS_ATAN2D32                        = 0xB8D // 2957\n\tSYS_ATAN2D64                        = 0xB8E // 2958\n\tSYS_ATAN2D128                       = 0xB8F // 2959\n\tSYS_ATANHD32                        = 0xB90 // 2960\n\tSYS_ATANHD64                        = 0xB91 // 2961\n\tSYS_ATANHD128                       = 0xB92 // 2962\n\tSYS_CBRTD32                         = 0xB93 // 2963\n\tSYS_CBRTD64                         = 0xB94 // 2964\n\tSYS_CBRTD128                        = 0xB95 // 2965\n\tSYS_CEILD32                         = 0xB96 // 2966\n\tSYS_CEILD64                         = 0xB97 // 2967\n\tSYS_CEILD128                        = 0xB98 // 2968\n\tSYS___CLASS2                        = 0xB99 // 2969\n\tSYS___CLASS2_B                      = 0xB9A // 2970\n\tSYS___CLASS2_H                      = 0xB9B // 2971\n\tSYS_COPYSIGND32                     = 0xB9C // 2972\n\tSYS_COPYSIGND64                     = 0xB9D // 2973\n\tSYS_COPYSIGND128                    = 0xB9E // 2974\n\tSYS_COSD32                          = 0xB9F // 2975\n\tSYS_COSD64                          = 0xBA0 // 2976\n\tSYS_COSD128                         = 0xBA1 // 2977\n\tSYS_COSHD32                         = 0xBA2 // 2978\n\tSYS_COSHD64                         = 0xBA3 // 2979\n\tSYS_COSHD128                        = 0xBA4 // 2980\n\tSYS_ERFD32                          = 0xBA5 // 2981\n\tSYS_ERFD64                          = 0xBA6 // 2982\n\tSYS_ERFD128                         = 0xBA7 // 2983\n\tSYS_ERFCD32                         = 0xBA8 // 2984\n\tSYS_ERFCD64                         = 0xBA9 // 2985\n\tSYS_ERFCD128                        = 0xBAA // 2986\n\tSYS_EXPD32                          = 0xBAB // 2987\n\tSYS_EXPD64                          = 0xBAC // 2988\n\tSYS_EXPD128                         = 0xBAD // 2989\n\tSYS_EXP2D32                         = 0xBAE // 2990\n\tSYS_EXP2D64                         = 0xBAF // 2991\n\tSYS_EXP2D128                        = 0xBB0 // 2992\n\tSYS_EXPM1D32                        = 0xBB1 // 2993\n\tSYS_EXPM1D64                        = 0xBB2 // 2994\n\tSYS_EXPM1D128                       = 0xBB3 // 2995\n\tSYS_FABSD32                         = 0xBB4 // 2996\n\tSYS_FABSD64                         = 0xBB5 // 2997\n\tSYS_FABSD128                        = 0xBB6 // 2998\n\tSYS_FDIMD32                         = 0xBB7 // 2999\n\tSYS_FDIMD64                         = 0xBB8 // 3000\n\tSYS_FDIMD128                        = 0xBB9 // 3001\n\tSYS_FE_DEC_GETROUND                 = 0xBBA // 3002\n\tSYS_FE_DEC_SETROUND                 = 0xBBB // 3003\n\tSYS_FLOORD32                        = 0xBBC // 3004\n\tSYS_FLOORD64                        = 0xBBD // 3005\n\tSYS_FLOORD128                       = 0xBBE // 3006\n\tSYS_FMAD32                          = 0xBBF // 3007\n\tSYS_FMAD64                          = 0xBC0 // 3008\n\tSYS_FMAD128                         = 0xBC1 // 3009\n\tSYS_FMAXD32                         = 0xBC2 // 3010\n\tSYS_FMAXD64                         = 0xBC3 // 3011\n\tSYS_FMAXD128                        = 0xBC4 // 3012\n\tSYS_FMIND32                         = 0xBC5 // 3013\n\tSYS_FMIND64                         = 0xBC6 // 3014\n\tSYS_FMIND128                        = 0xBC7 // 3015\n\tSYS_FMODD32                         = 0xBC8 // 3016\n\tSYS_FMODD64                         = 0xBC9 // 3017\n\tSYS_FMODD128                        = 0xBCA // 3018\n\tSYS___FP_CAST_D                     = 0xBCB // 3019\n\tSYS_FREXPD32                        = 0xBCC // 3020\n\tSYS_FREXPD64                        = 0xBCD // 3021\n\tSYS_FREXPD128                       = 0xBCE // 3022\n\tSYS_HYPOTD32                        = 0xBCF // 3023\n\tSYS_HYPOTD64                        = 0xBD0 // 3024\n\tSYS_HYPOTD128                       = 0xBD1 // 3025\n\tSYS_ILOGBD32                        = 0xBD2 // 3026\n\tSYS_ILOGBD64                        = 0xBD3 // 3027\n\tSYS_ILOGBD128                       = 0xBD4 // 3028\n\tSYS_LDEXPD32                        = 0xBD5 // 3029\n\tSYS_LDEXPD64                        = 0xBD6 // 3030\n\tSYS_LDEXPD128                       = 0xBD7 // 3031\n\tSYS_LGAMMAD32                       = 0xBD8 // 3032\n\tSYS_LGAMMAD64                       = 0xBD9 // 3033\n\tSYS_LGAMMAD128                      = 0xBDA // 3034\n\tSYS_LLRINTD32                       = 0xBDB // 3035\n\tSYS_LLRINTD64                       = 0xBDC // 3036\n\tSYS_LLRINTD128                      = 0xBDD // 3037\n\tSYS_LLROUNDD32                      = 0xBDE // 3038\n\tSYS_LLROUNDD64                      = 0xBDF // 3039\n\tSYS_LLROUNDD128                     = 0xBE0 // 3040\n\tSYS_LOGD32                          = 0xBE1 // 3041\n\tSYS_LOGD64                          = 0xBE2 // 3042\n\tSYS_LOGD128                         = 0xBE3 // 3043\n\tSYS_LOG10D32                        = 0xBE4 // 3044\n\tSYS_LOG10D64                        = 0xBE5 // 3045\n\tSYS_LOG10D128                       = 0xBE6 // 3046\n\tSYS_LOG1PD32                        = 0xBE7 // 3047\n\tSYS_LOG1PD64                        = 0xBE8 // 3048\n\tSYS_LOG1PD128                       = 0xBE9 // 3049\n\tSYS_LOG2D32                         = 0xBEA // 3050\n\tSYS_LOG2D64                         = 0xBEB // 3051\n\tSYS_LOG2D128                        = 0xBEC // 3052\n\tSYS_LOGBD32                         = 0xBED // 3053\n\tSYS_LOGBD64                         = 0xBEE // 3054\n\tSYS_LOGBD128                        = 0xBEF // 3055\n\tSYS_LRINTD32                        = 0xBF0 // 3056\n\tSYS_LRINTD64                        = 0xBF1 // 3057\n\tSYS_LRINTD128                       = 0xBF2 // 3058\n\tSYS_LROUNDD32                       = 0xBF3 // 3059\n\tSYS_LROUNDD64                       = 0xBF4 // 3060\n\tSYS_LROUNDD128                      = 0xBF5 // 3061\n\tSYS_MODFD32                         = 0xBF6 // 3062\n\tSYS_MODFD64                         = 0xBF7 // 3063\n\tSYS_MODFD128                        = 0xBF8 // 3064\n\tSYS_NAND32                          = 0xBF9 // 3065\n\tSYS_NAND64                          = 0xBFA // 3066\n\tSYS_NAND128                         = 0xBFB // 3067\n\tSYS_NEARBYINTD32                    = 0xBFC // 3068\n\tSYS_NEARBYINTD64                    = 0xBFD // 3069\n\tSYS_NEARBYINTD128                   = 0xBFE // 3070\n\tSYS_NEXTAFTERD32                    = 0xBFF // 3071\n\tSYS_NEXTAFTERD64                    = 0xC00 // 3072\n\tSYS_NEXTAFTERD128                   = 0xC01 // 3073\n\tSYS_NEXTTOWARDD32                   = 0xC02 // 3074\n\tSYS_NEXTTOWARDD64                   = 0xC03 // 3075\n\tSYS_NEXTTOWARDD128                  = 0xC04 // 3076\n\tSYS_POWD32                          = 0xC05 // 3077\n\tSYS_POWD64                          = 0xC06 // 3078\n\tSYS_POWD128                         = 0xC07 // 3079\n\tSYS_QUANTIZED32                     = 0xC08 // 3080\n\tSYS_QUANTIZED64                     = 0xC09 // 3081\n\tSYS_QUANTIZED128                    = 0xC0A // 3082\n\tSYS_REMAINDERD32                    = 0xC0B // 3083\n\tSYS_REMAINDERD64                    = 0xC0C // 3084\n\tSYS_REMAINDERD128                   = 0xC0D // 3085\n\tSYS___REMQUOD32                     = 0xC0E // 3086\n\tSYS___REMQUOD64                     = 0xC0F // 3087\n\tSYS___REMQUOD128                    = 0xC10 // 3088\n\tSYS_RINTD32                         = 0xC11 // 3089\n\tSYS_RINTD64                         = 0xC12 // 3090\n\tSYS_RINTD128                        = 0xC13 // 3091\n\tSYS_ROUNDD32                        = 0xC14 // 3092\n\tSYS_ROUNDD64                        = 0xC15 // 3093\n\tSYS_ROUNDD128                       = 0xC16 // 3094\n\tSYS_SAMEQUANTUMD32                  = 0xC17 // 3095\n\tSYS_SAMEQUANTUMD64                  = 0xC18 // 3096\n\tSYS_SAMEQUANTUMD128                 = 0xC19 // 3097\n\tSYS_SCALBLND32                      = 0xC1A // 3098\n\tSYS_SCALBLND64                      = 0xC1B // 3099\n\tSYS_SCALBLND128                     = 0xC1C // 3100\n\tSYS_SCALBND32                       = 0xC1D // 3101\n\tSYS_SCALBND64                       = 0xC1E // 3102\n\tSYS_SCALBND128                      = 0xC1F // 3103\n\tSYS_SIND32                          = 0xC20 // 3104\n\tSYS_SIND64                          = 0xC21 // 3105\n\tSYS_SIND128                         = 0xC22 // 3106\n\tSYS_SINHD32                         = 0xC23 // 3107\n\tSYS_SINHD64                         = 0xC24 // 3108\n\tSYS_SINHD128                        = 0xC25 // 3109\n\tSYS_SQRTD32                         = 0xC26 // 3110\n\tSYS_SQRTD64                         = 0xC27 // 3111\n\tSYS_SQRTD128                        = 0xC28 // 3112\n\tSYS_STRTOD32                        = 0xC29 // 3113\n\tSYS_STRTOD64                        = 0xC2A // 3114\n\tSYS_STRTOD128                       = 0xC2B // 3115\n\tSYS_TAND32                          = 0xC2C // 3116\n\tSYS_TAND64                          = 0xC2D // 3117\n\tSYS_TAND128                         = 0xC2E // 3118\n\tSYS_TANHD32                         = 0xC2F // 3119\n\tSYS_TANHD64                         = 0xC30 // 3120\n\tSYS_TANHD128                        = 0xC31 // 3121\n\tSYS_TGAMMAD32                       = 0xC32 // 3122\n\tSYS_TGAMMAD64                       = 0xC33 // 3123\n\tSYS_TGAMMAD128                      = 0xC34 // 3124\n\tSYS_TRUNCD32                        = 0xC3E // 3134\n\tSYS_TRUNCD64                        = 0xC3F // 3135\n\tSYS_TRUNCD128                       = 0xC40 // 3136\n\tSYS_WCSTOD32                        = 0xC41 // 3137\n\tSYS_WCSTOD64                        = 0xC42 // 3138\n\tSYS_WCSTOD128                       = 0xC43 // 3139\n\tSYS___CODEPAGE_INFO                 = 0xC64 // 3172\n\tSYS_POSIX_OPENPT                    = 0xC66 // 3174\n\tSYS_PSELECT                         = 0xC67 // 3175\n\tSYS_SOCKATMARK                      = 0xC68 // 3176\n\tSYS_AIO_FSYNC                       = 0xC69 // 3177\n\tSYS_LIO_LISTIO                      = 0xC6A // 3178\n\tSYS___ATANPID32                     = 0xC6B // 3179\n\tSYS___ATANPID64                     = 0xC6C // 3180\n\tSYS___ATANPID128                    = 0xC6D // 3181\n\tSYS___COSPID32                      = 0xC6E // 3182\n\tSYS___COSPID64                      = 0xC6F // 3183\n\tSYS___COSPID128                     = 0xC70 // 3184\n\tSYS___SINPID32                      = 0xC71 // 3185\n\tSYS___SINPID64                      = 0xC72 // 3186\n\tSYS___SINPID128                     = 0xC73 // 3187\n\tSYS_SETIPV4SOURCEFILTER             = 0xC76 // 3190\n\tSYS_GETIPV4SOURCEFILTER             = 0xC77 // 3191\n\tSYS_SETSOURCEFILTER                 = 0xC78 // 3192\n\tSYS_GETSOURCEFILTER                 = 0xC79 // 3193\n\tSYS_FWRITE_UNLOCKED                 = 0xC7A // 3194\n\tSYS_FREAD_UNLOCKED                  = 0xC7B // 3195\n\tSYS_FGETS_UNLOCKED                  = 0xC7C // 3196\n\tSYS_GETS_UNLOCKED                   = 0xC7D // 3197\n\tSYS_FPUTS_UNLOCKED                  = 0xC7E // 3198\n\tSYS_PUTS_UNLOCKED                   = 0xC7F // 3199\n\tSYS_FGETC_UNLOCKED                  = 0xC80 // 3200\n\tSYS_FPUTC_UNLOCKED                  = 0xC81 // 3201\n\tSYS_DLADDR                          = 0xC82 // 3202\n\tSYS_SHM_OPEN                        = 0xC8C // 3212\n\tSYS_SHM_UNLINK                      = 0xC8D // 3213\n\tSYS___CLASS2F                       = 0xC91 // 3217\n\tSYS___CLASS2L                       = 0xC92 // 3218\n\tSYS___CLASS2F_B                     = 0xC93 // 3219\n\tSYS___CLASS2F_H                     = 0xC94 // 3220\n\tSYS___CLASS2L_B                     = 0xC95 // 3221\n\tSYS___CLASS2L_H                     = 0xC96 // 3222\n\tSYS___CLASS2D32                     = 0xC97 // 3223\n\tSYS___CLASS2D64                     = 0xC98 // 3224\n\tSYS___CLASS2D128                    = 0xC99 // 3225\n\tSYS___TOCSNAME2                     = 0xC9A // 3226\n\tSYS___D1TOP                         = 0xC9B // 3227\n\tSYS___D2TOP                         = 0xC9C // 3228\n\tSYS___D4TOP                         = 0xC9D // 3229\n\tSYS___PTOD1                         = 0xC9E // 3230\n\tSYS___PTOD2                         = 0xC9F // 3231\n\tSYS___PTOD4                         = 0xCA0 // 3232\n\tSYS_CLEARERR_UNLOCKED               = 0xCA1 // 3233\n\tSYS_FDELREC_UNLOCKED                = 0xCA2 // 3234\n\tSYS_FEOF_UNLOCKED                   = 0xCA3 // 3235\n\tSYS_FERROR_UNLOCKED                 = 0xCA4 // 3236\n\tSYS_FFLUSH_UNLOCKED                 = 0xCA5 // 3237\n\tSYS_FGETPOS_UNLOCKED                = 0xCA6 // 3238\n\tSYS_FGETWC_UNLOCKED                 = 0xCA7 // 3239\n\tSYS_FGETWS_UNLOCKED                 = 0xCA8 // 3240\n\tSYS_FILENO_UNLOCKED                 = 0xCA9 // 3241\n\tSYS_FLDATA_UNLOCKED                 = 0xCAA // 3242\n\tSYS_FLOCATE_UNLOCKED                = 0xCAB // 3243\n\tSYS_FPRINTF_UNLOCKED                = 0xCAC // 3244\n\tSYS_FPUTWC_UNLOCKED                 = 0xCAD // 3245\n\tSYS_FPUTWS_UNLOCKED                 = 0xCAE // 3246\n\tSYS_FSCANF_UNLOCKED                 = 0xCAF // 3247\n\tSYS_FSEEK_UNLOCKED                  = 0xCB0 // 3248\n\tSYS_FSEEKO_UNLOCKED                 = 0xCB1 // 3249\n\tSYS_FSETPOS_UNLOCKED                = 0xCB3 // 3251\n\tSYS_FTELL_UNLOCKED                  = 0xCB4 // 3252\n\tSYS_FTELLO_UNLOCKED                 = 0xCB5 // 3253\n\tSYS_FUPDATE_UNLOCKED                = 0xCB7 // 3255\n\tSYS_FWIDE_UNLOCKED                  = 0xCB8 // 3256\n\tSYS_FWPRINTF_UNLOCKED               = 0xCB9 // 3257\n\tSYS_FWSCANF_UNLOCKED                = 0xCBA // 3258\n\tSYS_GETWC_UNLOCKED                  = 0xCBB // 3259\n\tSYS_GETWCHAR_UNLOCKED               = 0xCBC // 3260\n\tSYS_PERROR_UNLOCKED                 = 0xCBD // 3261\n\tSYS_PRINTF_UNLOCKED                 = 0xCBE // 3262\n\tSYS_PUTWC_UNLOCKED                  = 0xCBF // 3263\n\tSYS_PUTWCHAR_UNLOCKED               = 0xCC0 // 3264\n\tSYS_REWIND_UNLOCKED                 = 0xCC1 // 3265\n\tSYS_SCANF_UNLOCKED                  = 0xCC2 // 3266\n\tSYS_UNGETC_UNLOCKED                 = 0xCC3 // 3267\n\tSYS_UNGETWC_UNLOCKED                = 0xCC4 // 3268\n\tSYS_VFPRINTF_UNLOCKED               = 0xCC5 // 3269\n\tSYS_VFSCANF_UNLOCKED                = 0xCC7 // 3271\n\tSYS_VFWPRINTF_UNLOCKED              = 0xCC9 // 3273\n\tSYS_VFWSCANF_UNLOCKED               = 0xCCB // 3275\n\tSYS_VPRINTF_UNLOCKED                = 0xCCD // 3277\n\tSYS_VSCANF_UNLOCKED                 = 0xCCF // 3279\n\tSYS_VWPRINTF_UNLOCKED               = 0xCD1 // 3281\n\tSYS_VWSCANF_UNLOCKED                = 0xCD3 // 3283\n\tSYS_WPRINTF_UNLOCKED                = 0xCD5 // 3285\n\tSYS_WSCANF_UNLOCKED                 = 0xCD6 // 3286\n\tSYS_ASCTIME64                       = 0xCD7 // 3287\n\tSYS_ASCTIME64_R                     = 0xCD8 // 3288\n\tSYS_CTIME64                         = 0xCD9 // 3289\n\tSYS_CTIME64_R                       = 0xCDA // 3290\n\tSYS_DIFFTIME64                      = 0xCDB // 3291\n\tSYS_GMTIME64                        = 0xCDC // 3292\n\tSYS_GMTIME64_R                      = 0xCDD // 3293\n\tSYS_LOCALTIME64                     = 0xCDE // 3294\n\tSYS_LOCALTIME64_R                   = 0xCDF // 3295\n\tSYS_MKTIME64                        = 0xCE0 // 3296\n\tSYS_TIME64                          = 0xCE1 // 3297\n\tSYS___LOGIN_APPLID                  = 0xCE2 // 3298\n\tSYS___PASSWD_APPLID                 = 0xCE3 // 3299\n\tSYS_PTHREAD_SECURITY_APPLID_NP      = 0xCE4 // 3300\n\tSYS___GETTHENT                      = 0xCE5 // 3301\n\tSYS_FREEIFADDRS                     = 0xCE6 // 3302\n\tSYS_GETIFADDRS                      = 0xCE7 // 3303\n\tSYS_POSIX_FALLOCATE                 = 0xCE8 // 3304\n\tSYS_POSIX_MEMALIGN                  = 0xCE9 // 3305\n\tSYS_SIZEOF_ALLOC                    = 0xCEA // 3306\n\tSYS_RESIZE_ALLOC                    = 0xCEB // 3307\n\tSYS_FREAD_NOUPDATE                  = 0xCEC // 3308\n\tSYS_FREAD_NOUPDATE_UNLOCKED         = 0xCED // 3309\n\tSYS_FGETPOS64                       = 0xCEE // 3310\n\tSYS_FSEEK64                         = 0xCEF // 3311\n\tSYS_FSEEKO64                        = 0xCF0 // 3312\n\tSYS_FSETPOS64                       = 0xCF1 // 3313\n\tSYS_FTELL64                         = 0xCF2 // 3314\n\tSYS_FTELLO64                        = 0xCF3 // 3315\n\tSYS_FGETPOS64_UNLOCKED              = 0xCF4 // 3316\n\tSYS_FSEEK64_UNLOCKED                = 0xCF5 // 3317\n\tSYS_FSEEKO64_UNLOCKED               = 0xCF6 // 3318\n\tSYS_FSETPOS64_UNLOCKED              = 0xCF7 // 3319\n\tSYS_FTELL64_UNLOCKED                = 0xCF8 // 3320\n\tSYS_FTELLO64_UNLOCKED               = 0xCF9 // 3321\n\tSYS_FOPEN_UNLOCKED                  = 0xCFA // 3322\n\tSYS_FREOPEN_UNLOCKED                = 0xCFB // 3323\n\tSYS_FDOPEN_UNLOCKED                 = 0xCFC // 3324\n\tSYS_TMPFILE_UNLOCKED                = 0xCFD // 3325\n\tSYS___MOSERVICES                    = 0xD3D // 3389\n\tSYS___GETTOD                        = 0xD3E // 3390\n\tSYS_C16RTOMB                        = 0xD40 // 3392\n\tSYS_C32RTOMB                        = 0xD41 // 3393\n\tSYS_MBRTOC16                        = 0xD42 // 3394\n\tSYS_MBRTOC32                        = 0xD43 // 3395\n\tSYS_QUANTEXPD32                     = 0xD44 // 3396\n\tSYS_QUANTEXPD64                     = 0xD45 // 3397\n\tSYS_QUANTEXPD128                    = 0xD46 // 3398\n\tSYS___LOCALE_CTL                    = 0xD47 // 3399\n\tSYS___SMF_RECORD2                   = 0xD48 // 3400\n\tSYS_FOPEN64                         = 0xD49 // 3401\n\tSYS_FOPEN64_UNLOCKED                = 0xD4A // 3402\n\tSYS_FREOPEN64                       = 0xD4B // 3403\n\tSYS_FREOPEN64_UNLOCKED              = 0xD4C // 3404\n\tSYS_TMPFILE64                       = 0xD4D // 3405\n\tSYS_TMPFILE64_UNLOCKED              = 0xD4E // 3406\n\tSYS_GETDATE64                       = 0xD4F // 3407\n\tSYS_GETTIMEOFDAY64                  = 0xD50 // 3408\n\tSYS_BIND2ADDRSEL                    = 0xD59 // 3417\n\tSYS_INET6_IS_SRCADDR                = 0xD5A // 3418\n\tSYS___GETGRGID1                     = 0xD5B // 3419\n\tSYS___GETGRNAM1                     = 0xD5C // 3420\n\tSYS___FBUFSIZE                      = 0xD60 // 3424\n\tSYS___FPENDING                      = 0xD61 // 3425\n\tSYS___FLBF                          = 0xD62 // 3426\n\tSYS___FREADABLE                     = 0xD63 // 3427\n\tSYS___FWRITABLE                     = 0xD64 // 3428\n\tSYS___FREADING                      = 0xD65 // 3429\n\tSYS___FWRITING                      = 0xD66 // 3430\n\tSYS___FSETLOCKING                   = 0xD67 // 3431\n\tSYS__FLUSHLBF                       = 0xD68 // 3432\n\tSYS___FPURGE                        = 0xD69 // 3433\n\tSYS___FREADAHEAD                    = 0xD6A // 3434\n\tSYS___FSETERR                       = 0xD6B // 3435\n\tSYS___FPENDING_UNLOCKED             = 0xD6C // 3436\n\tSYS___FREADING_UNLOCKED             = 0xD6D // 3437\n\tSYS___FWRITING_UNLOCKED             = 0xD6E // 3438\n\tSYS__FLUSHLBF_UNLOCKED              = 0xD6F // 3439\n\tSYS___FPURGE_UNLOCKED               = 0xD70 // 3440\n\tSYS___FREADAHEAD_UNLOCKED           = 0xD71 // 3441\n\tSYS___LE_CEEGTJS                    = 0xD72 // 3442\n\tSYS___LE_RECORD_DUMP                = 0xD73 // 3443\n\tSYS_FSTAT64                         = 0xD74 // 3444\n\tSYS_LSTAT64                         = 0xD75 // 3445\n\tSYS_STAT64                          = 0xD76 // 3446\n\tSYS___READDIR2_64                   = 0xD77 // 3447\n\tSYS___OPEN_STAT64                   = 0xD78 // 3448\n\tSYS_FTW64                           = 0xD79 // 3449\n\tSYS_NFTW64                          = 0xD7A // 3450\n\tSYS_UTIME64                         = 0xD7B // 3451\n\tSYS_UTIMES64                        = 0xD7C // 3452\n\tSYS___GETIPC64                      = 0xD7D // 3453\n\tSYS_MSGCTL64                        = 0xD7E // 3454\n\tSYS_SEMCTL64                        = 0xD7F // 3455\n\tSYS_SHMCTL64                        = 0xD80 // 3456\n\tSYS_MSGXRCV64                       = 0xD81 // 3457\n\tSYS___MGXR64                        = 0xD81 // 3457\n\tSYS_W_GETPSENT64                    = 0xD82 // 3458\n\tSYS_PTHREAD_COND_TIMEDWAIT64        = 0xD83 // 3459\n\tSYS_FTIME64                         = 0xD85 // 3461\n\tSYS_GETUTXENT64                     = 0xD86 // 3462\n\tSYS_GETUTXID64                      = 0xD87 // 3463\n\tSYS_GETUTXLINE64                    = 0xD88 // 3464\n\tSYS_PUTUTXLINE64                    = 0xD89 // 3465\n\tSYS_NEWLOCALE                       = 0xD8A // 3466\n\tSYS_FREELOCALE                      = 0xD8B // 3467\n\tSYS_USELOCALE                       = 0xD8C // 3468\n\tSYS_DUPLOCALE                       = 0xD8D // 3469\n\tSYS___CHATTR64                      = 0xD9C // 3484\n\tSYS___LCHATTR64                     = 0xD9D // 3485\n\tSYS___FCHATTR64                     = 0xD9E // 3486\n\tSYS_____CHATTR64_A                  = 0xD9F // 3487\n\tSYS_____LCHATTR64_A                 = 0xDA0 // 3488\n\tSYS___LE_CEEUSGD                    = 0xDA1 // 3489\n\tSYS___LE_IFAM_CON                   = 0xDA2 // 3490\n\tSYS___LE_IFAM_DSC                   = 0xDA3 // 3491\n\tSYS___LE_IFAM_GET                   = 0xDA4 // 3492\n\tSYS___LE_IFAM_QRY                   = 0xDA5 // 3493\n\tSYS_ALIGNED_ALLOC                   = 0xDA6 // 3494\n\tSYS_ACCEPT4                         = 0xDA7 // 3495\n\tSYS___ACCEPT4_A                     = 0xDA8 // 3496\n\tSYS_COPYFILERANGE                   = 0xDA9 // 3497\n\tSYS_GETLINE                         = 0xDAA // 3498\n\tSYS___GETLINE_A                     = 0xDAB // 3499\n\tSYS_DIRFD                           = 0xDAC // 3500\n\tSYS_CLOCK_GETTIME                   = 0xDAD // 3501\n\tSYS_DUP3                            = 0xDAE // 3502\n\tSYS_EPOLL_CREATE                    = 0xDAF // 3503\n\tSYS_EPOLL_CREATE1                   = 0xDB0 // 3504\n\tSYS_EPOLL_CTL                       = 0xDB1 // 3505\n\tSYS_EPOLL_WAIT                      = 0xDB2 // 3506\n\tSYS_EPOLL_PWAIT                     = 0xDB3 // 3507\n\tSYS_EVENTFD                         = 0xDB4 // 3508\n\tSYS_STATFS                          = 0xDB5 // 3509\n\tSYS___STATFS_A                      = 0xDB6 // 3510\n\tSYS_FSTATFS                         = 0xDB7 // 3511\n\tSYS_INOTIFY_INIT                    = 0xDB8 // 3512\n\tSYS_INOTIFY_INIT1                   = 0xDB9 // 3513\n\tSYS_INOTIFY_ADD_WATCH               = 0xDBA // 3514\n\tSYS___INOTIFY_ADD_WATCH_A           = 0xDBB // 3515\n\tSYS_INOTIFY_RM_WATCH                = 0xDBC // 3516\n\tSYS_PIPE2                           = 0xDBD // 3517\n\tSYS_PIVOT_ROOT                      = 0xDBE // 3518\n\tSYS___PIVOT_ROOT_A                  = 0xDBF // 3519\n\tSYS_PRCTL                           = 0xDC0 // 3520\n\tSYS_PRLIMIT                         = 0xDC1 // 3521\n\tSYS_SETHOSTNAME                     = 0xDC2 // 3522\n\tSYS___SETHOSTNAME_A                 = 0xDC3 // 3523\n\tSYS_SETRESUID                       = 0xDC4 // 3524\n\tSYS_SETRESGID                       = 0xDC5 // 3525\n\tSYS_PTHREAD_CONDATTR_GETCLOCK       = 0xDC6 // 3526\n\tSYS_FLOCK                           = 0xDC7 // 3527\n\tSYS_FGETXATTR                       = 0xDC8 // 3528\n\tSYS___FGETXATTR_A                   = 0xDC9 // 3529\n\tSYS_FLISTXATTR                      = 0xDCA // 3530\n\tSYS___FLISTXATTR_A                  = 0xDCB // 3531\n\tSYS_FREMOVEXATTR                    = 0xDCC // 3532\n\tSYS___FREMOVEXATTR_A                = 0xDCD // 3533\n\tSYS_FSETXATTR                       = 0xDCE // 3534\n\tSYS___FSETXATTR_A                   = 0xDCF // 3535\n\tSYS_GETXATTR                        = 0xDD0 // 3536\n\tSYS___GETXATTR_A                    = 0xDD1 // 3537\n\tSYS_LGETXATTR                       = 0xDD2 // 3538\n\tSYS___LGETXATTR_A                   = 0xDD3 // 3539\n\tSYS_LISTXATTR                       = 0xDD4 // 3540\n\tSYS___LISTXATTR_A                   = 0xDD5 // 3541\n\tSYS_LLISTXATTR                      = 0xDD6 // 3542\n\tSYS___LLISTXATTR_A                  = 0xDD7 // 3543\n\tSYS_LREMOVEXATTR                    = 0xDD8 // 3544\n\tSYS___LREMOVEXATTR_A                = 0xDD9 // 3545\n\tSYS_LSETXATTR                       = 0xDDA // 3546\n\tSYS___LSETXATTR_A                   = 0xDDB // 3547\n\tSYS_REMOVEXATTR                     = 0xDDC // 3548\n\tSYS___REMOVEXATTR_A                 = 0xDDD // 3549\n\tSYS_SETXATTR                        = 0xDDE // 3550\n\tSYS___SETXATTR_A                    = 0xDDF // 3551\n\tSYS_FDATASYNC                       = 0xDE0 // 3552\n\tSYS_SYNCFS                          = 0xDE1 // 3553\n\tSYS_FUTIMES                         = 0xDE2 // 3554\n\tSYS_FUTIMESAT                       = 0xDE3 // 3555\n\tSYS___FUTIMESAT_A                   = 0xDE4 // 3556\n\tSYS_LUTIMES                         = 0xDE5 // 3557\n\tSYS___LUTIMES_A                     = 0xDE6 // 3558\n\tSYS_INET_ATON                       = 0xDE7 // 3559\n\tSYS_GETRANDOM                       = 0xDE8 // 3560\n\tSYS_GETTID                          = 0xDE9 // 3561\n\tSYS_MEMFD_CREATE                    = 0xDEA // 3562\n\tSYS___MEMFD_CREATE_A                = 0xDEB // 3563\n\tSYS_FACCESSAT                       = 0xDEC // 3564\n\tSYS___FACCESSAT_A                   = 0xDED // 3565\n\tSYS_FCHMODAT                        = 0xDEE // 3566\n\tSYS___FCHMODAT_A                    = 0xDEF // 3567\n\tSYS_FCHOWNAT                        = 0xDF0 // 3568\n\tSYS___FCHOWNAT_A                    = 0xDF1 // 3569\n\tSYS_FSTATAT                         = 0xDF2 // 3570\n\tSYS___FSTATAT_A                     = 0xDF3 // 3571\n\tSYS_LINKAT                          = 0xDF4 // 3572\n\tSYS___LINKAT_A                      = 0xDF5 // 3573\n\tSYS_MKDIRAT                         = 0xDF6 // 3574\n\tSYS___MKDIRAT_A                     = 0xDF7 // 3575\n\tSYS_MKFIFOAT                        = 0xDF8 // 3576\n\tSYS___MKFIFOAT_A                    = 0xDF9 // 3577\n\tSYS_MKNODAT                         = 0xDFA // 3578\n\tSYS___MKNODAT_A                     = 0xDFB // 3579\n\tSYS_OPENAT                          = 0xDFC // 3580\n\tSYS___OPENAT_A                      = 0xDFD // 3581\n\tSYS_READLINKAT                      = 0xDFE // 3582\n\tSYS___READLINKAT_A                  = 0xDFF // 3583\n\tSYS_RENAMEAT                        = 0xE00 // 3584\n\tSYS___RENAMEAT_A                    = 0xE01 // 3585\n\tSYS_RENAMEAT2                       = 0xE02 // 3586\n\tSYS___RENAMEAT2_A                   = 0xE03 // 3587\n\tSYS_SYMLINKAT                       = 0xE04 // 3588\n\tSYS___SYMLINKAT_A                   = 0xE05 // 3589\n\tSYS_UNLINKAT                        = 0xE06 // 3590\n\tSYS___UNLINKAT_A                    = 0xE07 // 3591\n\tSYS_SYSINFO                         = 0xE08 // 3592\n\tSYS_WAIT4                           = 0xE0A // 3594\n\tSYS_CLONE                           = 0xE0B // 3595\n\tSYS_UNSHARE                         = 0xE0C // 3596\n\tSYS_SETNS                           = 0xE0D // 3597\n\tSYS_CAPGET                          = 0xE0E // 3598\n\tSYS_CAPSET                          = 0xE0F // 3599\n\tSYS_STRCHRNUL                       = 0xE10 // 3600\n\tSYS_PTHREAD_CONDATTR_SETCLOCK       = 0xE12 // 3602\n\tSYS_OPEN_BY_HANDLE_AT               = 0xE13 // 3603\n\tSYS___OPEN_BY_HANDLE_AT_A           = 0xE14 // 3604\n\tSYS___INET_ATON_A                   = 0xE15 // 3605\n\tSYS_MOUNT1                          = 0xE16 // 3606\n\tSYS___MOUNT1_A                      = 0xE17 // 3607\n\tSYS_UMOUNT1                         = 0xE18 // 3608\n\tSYS___UMOUNT1_A                     = 0xE19 // 3609\n\tSYS_UMOUNT2                         = 0xE1A // 3610\n\tSYS___UMOUNT2_A                     = 0xE1B // 3611\n\tSYS___PRCTL_A                       = 0xE1C // 3612\n\tSYS_LOCALTIME_R2                    = 0xE1D // 3613\n\tSYS___LOCALTIME_R2_A                = 0xE1E // 3614\n\tSYS_OPENAT2                         = 0xE1F // 3615\n\tSYS___OPENAT2_A                     = 0xE20 // 3616\n\tSYS___LE_CEEMICT                    = 0xE21 // 3617\n\tSYS_GETENTROPY                      = 0xE22 // 3618\n\tSYS_NANOSLEEP                       = 0xE23 // 3619\n\tSYS_UTIMENSAT                       = 0xE24 // 3620\n\tSYS___UTIMENSAT_A                   = 0xE25 // 3621\n\tSYS_ASPRINTF                        = 0xE26 // 3622\n\tSYS___ASPRINTF_A                    = 0xE27 // 3623\n\tSYS_VASPRINTF                       = 0xE28 // 3624\n\tSYS___VASPRINTF_A                   = 0xE29 // 3625\n\tSYS_DPRINTF                         = 0xE2A // 3626\n\tSYS___DPRINTF_A                     = 0xE2B // 3627\n\tSYS_GETOPT_LONG                     = 0xE2C // 3628\n\tSYS___GETOPT_LONG_A                 = 0xE2D // 3629\n\tSYS_PSIGNAL                         = 0xE2E // 3630\n\tSYS___PSIGNAL_A                     = 0xE2F // 3631\n\tSYS_PSIGNAL_UNLOCKED                = 0xE30 // 3632\n\tSYS___PSIGNAL_UNLOCKED_A            = 0xE31 // 3633\n\tSYS_FSTATAT_O                       = 0xE32 // 3634\n\tSYS___FSTATAT_O_A                   = 0xE33 // 3635\n\tSYS_FSTATAT64                       = 0xE34 // 3636\n\tSYS___FSTATAT64_A                   = 0xE35 // 3637\n\tSYS___CHATTRAT                      = 0xE36 // 3638\n\tSYS_____CHATTRAT_A                  = 0xE37 // 3639\n\tSYS___CHATTRAT64                    = 0xE38 // 3640\n\tSYS_____CHATTRAT64_A                = 0xE39 // 3641\n\tSYS_MADVISE                         = 0xE3A // 3642\n\tSYS___AUTHENTICATE                  = 0xE3B // 3643\n\n)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go",
    "content": "// cgo -godefs types_aix.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc && aix\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x4\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x4\n\tSizeofLongLong = 0x8\n\tPathMax        = 0x3ff\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int32\n\t_C_long_long int64\n)\n\ntype off64 int64\ntype off int32\ntype Mode_t uint32\n\ntype Timespec struct {\n\tSec  int32\n\tNsec int32\n}\n\ntype Timeval struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Timeval32 struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Timex struct{}\n\ntype Time_t int32\n\ntype Tms struct{}\n\ntype Utimbuf struct {\n\tActime  int32\n\tModtime int32\n}\n\ntype Timezone struct {\n\tMinuteswest int32\n\tDsttime     int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype Pid_t int32\n\ntype _Gid_t uint32\n\ntype dev_t uint32\n\ntype Stat_t struct {\n\tDev      uint32\n\tIno      uint32\n\tMode     uint32\n\tNlink    int16\n\tFlag     uint16\n\tUid      uint32\n\tGid      uint32\n\tRdev     uint32\n\tSize     int32\n\tAtim     Timespec\n\tMtim     Timespec\n\tCtim     Timespec\n\tBlksize  int32\n\tBlocks   int32\n\tVfstype  int32\n\tVfs      uint32\n\tType     uint32\n\tGen      uint32\n\tReserved [9]uint32\n}\n\ntype StatxTimestamp struct{}\n\ntype Statx_t struct{}\n\ntype Dirent struct {\n\tOffset uint32\n\tIno    uint32\n\tReclen uint16\n\tNamlen uint16\n\tName   [256]uint8\n}\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]uint8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [1023]uint8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [120]uint8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]uint8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [1012]uint8\n}\n\ntype _Socklen uint32\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x404\n\tSizeofSockaddrUnix     = 0x401\n\tSizeofSockaddrDatalink = 0x80\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x8\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofMsghdr           = 0x1c\n\tSizeofCmsghdr          = 0xc\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tSizeofIfMsghdr = 0x10\n)\n\ntype IfMsgHdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\tAddrlen uint8\n\t_       [1]byte\n}\n\ntype FdSet struct {\n\tBits [2048]int32\n}\n\ntype Utsname struct {\n\tSysname  [32]byte\n\tNodename [32]byte\n\tRelease  [32]byte\n\tVersion  [32]byte\n\tMachine  [32]byte\n}\n\ntype Ustat_t struct{}\n\ntype Sigset_t struct {\n\tLosigs uint32\n\tHisigs uint32\n}\n\nconst (\n\tAT_FDCWD            = -0x2\n\tAT_REMOVEDIR        = 0x1\n\tAT_SYMLINK_NOFOLLOW = 0x1\n)\n\ntype Termios struct {\n\tIflag uint32\n\tOflag uint32\n\tCflag uint32\n\tLflag uint32\n\tCc    [16]uint8\n}\n\ntype Termio struct {\n\tIflag uint16\n\tOflag uint16\n\tCflag uint16\n\tLflag uint16\n\tLine  uint8\n\tCc    [8]uint8\n\t_     [1]byte\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  uint16\n\tRevents uint16\n}\n\nconst (\n\tPOLLERR    = 0x4000\n\tPOLLHUP    = 0x2000\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x8000\n\tPOLLOUT    = 0x2\n\tPOLLPRI    = 0x4\n\tPOLLRDBAND = 0x20\n\tPOLLRDNORM = 0x10\n\tPOLLWRBAND = 0x40\n\tPOLLWRNORM = 0x2\n)\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tSysid  uint32\n\tPid    int32\n\tVfs    int32\n\tStart  int64\n\tLen    int64\n}\n\ntype Fsid_t struct {\n\tVal [2]uint32\n}\ntype Fsid64_t struct {\n\tVal [2]uint64\n}\n\ntype Statfs_t struct {\n\tVersion   int32\n\tType      int32\n\tBsize     uint32\n\tBlocks    uint32\n\tBfree     uint32\n\tBavail    uint32\n\tFiles     uint32\n\tFfree     uint32\n\tFsid      Fsid_t\n\tVfstype   int32\n\tFsize     uint32\n\tVfsnumber int32\n\tVfsoff    int32\n\tVfslen    int32\n\tVfsvers   int32\n\tFname     [32]uint8\n\tFpack     [32]uint8\n\tName_max  int32\n}\n\nconst RNDGETENTCNT = 0x80045200\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go",
    "content": "// cgo -godefs types_aix.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc64 && aix\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n\tPathMax        = 0x3ff\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype off64 int64\ntype off int64\ntype Mode_t uint32\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int32\n\t_    [4]byte\n}\n\ntype Timeval32 struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Timex struct{}\n\ntype Time_t int64\n\ntype Tms struct{}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Timezone struct {\n\tMinuteswest int32\n\tDsttime     int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype Pid_t int32\n\ntype _Gid_t uint32\n\ntype dev_t uint64\n\ntype Stat_t struct {\n\tDev      uint64\n\tIno      uint64\n\tMode     uint32\n\tNlink    int16\n\tFlag     uint16\n\tUid      uint32\n\tGid      uint32\n\tRdev     uint64\n\tSsize    int32\n\tAtim     Timespec\n\tMtim     Timespec\n\tCtim     Timespec\n\tBlksize  int64\n\tBlocks   int64\n\tVfstype  int32\n\tVfs      uint32\n\tType     uint32\n\tGen      uint32\n\tReserved [9]uint32\n\tPadto_ll uint32\n\tSize     int64\n}\n\ntype StatxTimestamp struct{}\n\ntype Statx_t struct{}\n\ntype Dirent struct {\n\tOffset uint64\n\tIno    uint64\n\tReclen uint16\n\tNamlen uint16\n\tName   [256]uint8\n\t_      [4]byte\n}\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]uint8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [1023]uint8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [120]uint8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]uint8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [1012]uint8\n}\n\ntype _Socklen uint32\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x404\n\tSizeofSockaddrUnix     = 0x401\n\tSizeofSockaddrDatalink = 0x80\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tSizeofIfMsghdr = 0x10\n)\n\ntype IfMsgHdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\tAddrlen uint8\n\t_       [1]byte\n}\n\ntype FdSet struct {\n\tBits [1024]int64\n}\n\ntype Utsname struct {\n\tSysname  [32]byte\n\tNodename [32]byte\n\tRelease  [32]byte\n\tVersion  [32]byte\n\tMachine  [32]byte\n}\n\ntype Ustat_t struct{}\n\ntype Sigset_t struct {\n\tSet [4]uint64\n}\n\nconst (\n\tAT_FDCWD            = -0x2\n\tAT_REMOVEDIR        = 0x1\n\tAT_SYMLINK_NOFOLLOW = 0x1\n)\n\ntype Termios struct {\n\tIflag uint32\n\tOflag uint32\n\tCflag uint32\n\tLflag uint32\n\tCc    [16]uint8\n}\n\ntype Termio struct {\n\tIflag uint16\n\tOflag uint16\n\tCflag uint16\n\tLflag uint16\n\tLine  uint8\n\tCc    [8]uint8\n\t_     [1]byte\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  uint16\n\tRevents uint16\n}\n\nconst (\n\tPOLLERR    = 0x4000\n\tPOLLHUP    = 0x2000\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x8000\n\tPOLLOUT    = 0x2\n\tPOLLPRI    = 0x4\n\tPOLLRDBAND = 0x20\n\tPOLLRDNORM = 0x10\n\tPOLLWRBAND = 0x40\n\tPOLLWRNORM = 0x2\n)\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tSysid  uint32\n\tPid    int32\n\tVfs    int32\n\tStart  int64\n\tLen    int64\n}\n\ntype Fsid_t struct {\n\tVal [2]uint32\n}\ntype Fsid64_t struct {\n\tVal [2]uint64\n}\n\ntype Statfs_t struct {\n\tVersion   int32\n\tType      int32\n\tBsize     uint64\n\tBlocks    uint64\n\tBfree     uint64\n\tBavail    uint64\n\tFiles     uint64\n\tFfree     uint64\n\tFsid      Fsid64_t\n\tVfstype   int32\n\tFsize     uint64\n\tVfsnumber int32\n\tVfsoff    int32\n\tVfslen    int32\n\tVfsvers   int32\n\tFname     [32]uint8\n\tFpack     [32]uint8\n\tName_max  int32\n\t_         [4]byte\n}\n\nconst RNDGETENTCNT = 0x80045200\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go",
    "content": "// cgo -godefs types_darwin.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && darwin\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int32\n\t_    [4]byte\n}\n\ntype Timeval32 struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tDev     int32\n\tMode    uint16\n\tNlink   uint16\n\tIno     uint64\n\tUid     uint32\n\tGid     uint32\n\tRdev    int32\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint32\n\tLspare  int32\n\tQspare  [2]int64\n}\n\ntype Statfs_t struct {\n\tBsize       uint32\n\tIosize      int32\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      uint64\n\tFiles       uint64\n\tFfree       uint64\n\tFsid        Fsid\n\tOwner       uint32\n\tType        uint32\n\tFlags       uint32\n\tFssubtype   uint32\n\tFstypename  [16]byte\n\tMntonname   [1024]byte\n\tMntfromname [1024]byte\n\tFlags_ext   uint32\n\tReserved    [7]uint32\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Fstore_t struct {\n\tFlags      uint32\n\tPosmode    int32\n\tOffset     int64\n\tLength     int64\n\tBytesalloc int64\n}\n\ntype Radvisory_t struct {\n\tOffset int64\n\tCount  int32\n\t_      [4]byte\n}\n\ntype Fbootstraptransfer_t struct {\n\tOffset int64\n\tLength uint64\n\tBuffer *byte\n}\n\ntype Log2phys_t struct {\n\tFlags uint32\n\t_     [16]byte\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\ntype Dirent struct {\n\tIno     uint64\n\tSeekoff uint64\n\tReclen  uint16\n\tNamlen  uint16\n\tType    uint8\n\tName    [1024]int8\n\t_       [3]byte\n}\n\ntype Attrlist struct {\n\tBitmapcount uint16\n\tReserved    uint16\n\tCommonattr  uint32\n\tVolattr     uint32\n\tDirattr     uint32\n\tFileattr    uint32\n\tForkattr    uint32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [12]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype RawSockaddrCtl struct {\n\tSc_len      uint8\n\tSc_family   uint8\n\tSs_sysaddr  uint16\n\tSc_id       uint32\n\tSc_unit     uint32\n\tSc_reserved [5]uint32\n}\n\ntype RawSockaddrVM struct {\n\tLen       uint8\n\tFamily    uint8\n\tReserved1 uint16\n\tPort      uint32\n\tCid       uint32\n}\n\ntype XVSockPCB struct {\n\tXv_len           uint32\n\tXv_vsockpp       uint64\n\tXvp_local_cid    uint32\n\tXvp_local_port   uint32\n\tXvp_remote_cid   uint32\n\tXvp_remote_port  uint32\n\tXvp_rxcnt        uint32\n\tXvp_txcnt        uint32\n\tXvp_peer_rxhiwat uint32\n\tXvp_peer_rxcnt   uint32\n\tXvp_last_pid     int32\n\tXvp_gencnt       uint64\n\tXv_socket        XSocket\n\t_                [4]byte\n}\n\ntype XSocket struct {\n\tXso_len      uint32\n\tXso_so       uint32\n\tSo_type      int16\n\tSo_options   int16\n\tSo_linger    int16\n\tSo_state     int16\n\tSo_pcb       uint32\n\tXso_protocol int32\n\tXso_family   int32\n\tSo_qlen      int16\n\tSo_incqlen   int16\n\tSo_qlimit    int16\n\tSo_timeo     int16\n\tSo_error     uint16\n\tSo_pgid      int32\n\tSo_oobmark   uint32\n\tSo_rcv       XSockbuf\n\tSo_snd       XSockbuf\n\tSo_uid       uint32\n}\n\ntype XSocket64 struct {\n\tXso_len      uint32\n\t_            [8]byte\n\tSo_type      int16\n\tSo_options   int16\n\tSo_linger    int16\n\tSo_state     int16\n\t_            [8]byte\n\tXso_protocol int32\n\tXso_family   int32\n\tSo_qlen      int16\n\tSo_incqlen   int16\n\tSo_qlimit    int16\n\tSo_timeo     int16\n\tSo_error     uint16\n\tSo_pgid      int32\n\tSo_oobmark   uint32\n\tSo_rcv       XSockbuf\n\tSo_snd       XSockbuf\n\tSo_uid       uint32\n}\n\ntype XSockbuf struct {\n\tCc    uint32\n\tHiwat uint32\n\tMbcnt uint32\n\tMbmax uint32\n\tLowat int32\n\tFlags int16\n\tTimeo int16\n}\n\ntype XVSockPgen struct {\n\tLen   uint32\n\tCount uint64\n\tGen   uint64\n\tSogen uint64\n}\n\ntype _Socklen uint32\n\ntype SaeAssocID uint32\n\ntype SaeConnID uint32\n\ntype SaEndpoints struct {\n\tSrcif      uint32\n\tSrcaddr    *RawSockaddr\n\tSrcaddrlen uint32\n\tDstaddr    *RawSockaddr\n\tDstaddrlen uint32\n\t_          [4]byte\n}\n\ntype Xucred struct {\n\tVersion uint32\n\tUid     uint32\n\tNgroups int16\n\tGroups  [16]uint32\n}\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPMreqn struct {\n\tMultiaddr [4]byte /* in_addr */\n\tAddress   [4]byte /* in_addr */\n\tIfindex   int32\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet4Pktinfo struct {\n\tIfindex  uint32\n\tSpec_dst [4]byte /* in_addr */\n\tAddr     [4]byte /* in_addr */\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\ntype TCPConnectionInfo struct {\n\tState               uint8\n\tSnd_wscale          uint8\n\tRcv_wscale          uint8\n\t_                   uint8\n\tOptions             uint32\n\tFlags               uint32\n\tRto                 uint32\n\tMaxseg              uint32\n\tSnd_ssthresh        uint32\n\tSnd_cwnd            uint32\n\tSnd_wnd             uint32\n\tSnd_sbbytes         uint32\n\tRcv_wnd             uint32\n\tRttcur              uint32\n\tSrtt                uint32\n\tRttvar              uint32\n\tTxpackets           uint64\n\tTxbytes             uint64\n\tTxretransmitbytes   uint64\n\tRxpackets           uint64\n\tRxbytes             uint64\n\tRxoutoforderbytes   uint64\n\tTxretransmitpackets uint64\n}\n\nconst (\n\tSizeofSockaddrInet4     = 0x10\n\tSizeofSockaddrInet6     = 0x1c\n\tSizeofSockaddrAny       = 0x6c\n\tSizeofSockaddrUnix      = 0x6a\n\tSizeofSockaddrDatalink  = 0x14\n\tSizeofSockaddrCtl       = 0x20\n\tSizeofSockaddrVM        = 0xc\n\tSizeofXvsockpcb         = 0xa8\n\tSizeofXSocket           = 0x64\n\tSizeofXSockbuf          = 0x18\n\tSizeofXVSockPgen        = 0x20\n\tSizeofXucred            = 0x4c\n\tSizeofLinger            = 0x8\n\tSizeofIovec             = 0x10\n\tSizeofIPMreq            = 0x8\n\tSizeofIPMreqn           = 0xc\n\tSizeofIPv6Mreq          = 0x14\n\tSizeofMsghdr            = 0x30\n\tSizeofCmsghdr           = 0xc\n\tSizeofInet4Pktinfo      = 0xc\n\tSizeofInet6Pktinfo      = 0x14\n\tSizeofIPv6MTUInfo       = 0x20\n\tSizeofICMPv6Filter      = 0x20\n\tSizeofTCPConnectionInfo = 0x70\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint64\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n}\n\ntype FdSet struct {\n\tBits [32]int32\n}\n\nconst (\n\tSizeofIfMsghdr    = 0x70\n\tSizeofIfMsghdr2   = 0xa0\n\tSizeofIfData      = 0x60\n\tSizeofIfData64    = 0x80\n\tSizeofIfaMsghdr   = 0x14\n\tSizeofIfmaMsghdr  = 0x10\n\tSizeofIfmaMsghdr2 = 0x14\n\tSizeofRtMsghdr    = 0x5c\n\tSizeofRtMsghdr2   = 0x5c\n\tSizeofRtMetrics   = 0x38\n)\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\tData    IfData\n}\n\ntype IfMsghdr2 struct {\n\tMsglen     uint16\n\tVersion    uint8\n\tType       uint8\n\tAddrs      int32\n\tFlags      int32\n\tIndex      uint16\n\tSnd_len    int32\n\tSnd_maxlen int32\n\tSnd_drops  int32\n\tTimer      int32\n\tData       IfData64\n}\n\ntype IfData struct {\n\tType       uint8\n\tTypelen    uint8\n\tPhysical   uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tRecvquota  uint8\n\tXmitquota  uint8\n\tUnused1    uint8\n\tMtu        uint32\n\tMetric     uint32\n\tBaudrate   uint32\n\tIpackets   uint32\n\tIerrors    uint32\n\tOpackets   uint32\n\tOerrors    uint32\n\tCollisions uint32\n\tIbytes     uint32\n\tObytes     uint32\n\tImcasts    uint32\n\tOmcasts    uint32\n\tIqdrops    uint32\n\tNoproto    uint32\n\tRecvtiming uint32\n\tXmittiming uint32\n\tLastchange Timeval32\n\tUnused2    uint32\n\tHwassist   uint32\n\tReserved1  uint32\n\tReserved2  uint32\n}\n\ntype IfData64 struct {\n\tType       uint8\n\tTypelen    uint8\n\tPhysical   uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tRecvquota  uint8\n\tXmitquota  uint8\n\tUnused1    uint8\n\tMtu        uint32\n\tMetric     uint32\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tNoproto    uint64\n\tRecvtiming uint32\n\tXmittiming uint32\n\tLastchange Timeval32\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\tMetric  int32\n}\n\ntype IfmaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       [2]byte\n}\n\ntype IfmaMsghdr2 struct {\n\tMsglen   uint16\n\tVersion  uint8\n\tType     uint8\n\tAddrs    int32\n\tFlags    int32\n\tIndex    uint16\n\tRefcount int32\n}\n\ntype RtMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tFlags   int32\n\tAddrs   int32\n\tPid     int32\n\tSeq     int32\n\tErrno   int32\n\tUse     int32\n\tInits   uint32\n\tRmx     RtMetrics\n}\n\ntype RtMsghdr2 struct {\n\tMsglen      uint16\n\tVersion     uint8\n\tType        uint8\n\tIndex       uint16\n\tFlags       int32\n\tAddrs       int32\n\tRefcnt      int32\n\tParentflags int32\n\tReserved    int32\n\tUse         int32\n\tInits       uint32\n\tRmx         RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint32\n\tMtu      uint32\n\tHopcount uint32\n\tExpire   int32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPksent   uint32\n\tState    uint32\n\tFiller   [3]uint32\n}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x8\n\tSizeofBpfProgram = 0x10\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x14\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  Timeval32\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\t_       [2]byte\n}\n\ntype Termios struct {\n\tIflag  uint64\n\tOflag  uint64\n\tCflag  uint64\n\tLflag  uint64\n\tCc     [20]uint8\n\tIspeed uint64\n\tOspeed uint64\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x2\n\tAT_REMOVEDIR        = 0x80\n\tAT_SYMLINK_FOLLOW   = 0x40\n\tAT_SYMLINK_NOFOLLOW = 0x20\n\tAT_EACCESS          = 0x10\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofClockinfo = 0x14\n\ntype Clockinfo struct {\n\tHz      int32\n\tTick    int32\n\tTickadj int32\n\tStathz  int32\n\tProfhz  int32\n}\n\ntype CtlInfo struct {\n\tId   uint32\n\tName [96]byte\n}\n\nconst SizeofKinfoProc = 0x288\n\ntype Eproc struct {\n\tPaddr   uintptr\n\tSess    uintptr\n\tPcred   Pcred\n\tUcred   Ucred\n\tVm      Vmspace\n\tPpid    int32\n\tPgid    int32\n\tJobc    int16\n\tTdev    int32\n\tTpgid   int32\n\tTsess   uintptr\n\tWmesg   [8]byte\n\tXsize   int32\n\tXrssize int16\n\tXccount int16\n\tXswrss  int16\n\tFlag    int32\n\tLogin   [12]byte\n\tSpare   [4]int32\n\t_       [4]byte\n}\n\ntype ExternProc struct {\n\tP_starttime Timeval\n\tP_vmspace   *Vmspace\n\tP_sigacts   uintptr\n\tP_flag      int32\n\tP_stat      int8\n\tP_pid       int32\n\tP_oppid     int32\n\tP_dupfd     int32\n\tUser_stack  *int8\n\tExit_thread *byte\n\tP_debugger  int32\n\tSigwait     int32\n\tP_estcpu    uint32\n\tP_cpticks   int32\n\tP_pctcpu    uint32\n\tP_wchan     *byte\n\tP_wmesg     *int8\n\tP_swtime    uint32\n\tP_slptime   uint32\n\tP_realtimer Itimerval\n\tP_rtime     Timeval\n\tP_uticks    uint64\n\tP_sticks    uint64\n\tP_iticks    uint64\n\tP_traceflag int32\n\tP_tracep    uintptr\n\tP_siglist   int32\n\tP_textvp    uintptr\n\tP_holdcnt   int32\n\tP_sigmask   uint32\n\tP_sigignore uint32\n\tP_sigcatch  uint32\n\tP_priority  uint8\n\tP_usrpri    uint8\n\tP_nice      int8\n\tP_comm      [17]byte\n\tP_pgrp      uintptr\n\tP_addr      uintptr\n\tP_xstat     uint16\n\tP_acflag    uint16\n\tP_ru        *Rusage\n}\n\ntype Itimerval struct {\n\tInterval Timeval\n\tValue    Timeval\n}\n\ntype KinfoProc struct {\n\tProc  ExternProc\n\tEproc Eproc\n}\n\ntype Vmspace struct {\n\tDummy  int32\n\tDummy2 *int8\n\tDummy3 [5]int32\n\tDummy4 [3]*int8\n}\n\ntype Pcred struct {\n\tPc_lock  [72]int8\n\tPc_ucred uintptr\n\tP_ruid   uint32\n\tP_svuid  uint32\n\tP_rgid   uint32\n\tP_svgid  uint32\n\tP_refcnt int32\n\t_        [4]byte\n}\n\ntype Ucred struct {\n\tRef     int32\n\tUid     uint32\n\tNgroups int16\n\tGroups  [16]uint32\n}\n\ntype SysvIpcPerm struct {\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint16\n\t_    uint16\n\t_    int32\n}\ntype SysvShmDesc struct {\n\tPerm   SysvIpcPerm\n\tSegsz  uint64\n\tLpid   int32\n\tCpid   int32\n\tNattch uint16\n\t_      [34]byte\n}\n\nconst (\n\tIPC_CREAT   = 0x200\n\tIPC_EXCL    = 0x400\n\tIPC_NOWAIT  = 0x800\n\tIPC_PRIVATE = 0x0\n)\n\nconst (\n\tIPC_RMID = 0x0\n\tIPC_SET  = 0x1\n\tIPC_STAT = 0x2\n)\n\nconst (\n\tSHM_RDONLY = 0x1000\n\tSHM_RND    = 0x2000\n)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go",
    "content": "// cgo -godefs types_darwin.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && darwin\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int32\n\t_    [4]byte\n}\n\ntype Timeval32 struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tDev     int32\n\tMode    uint16\n\tNlink   uint16\n\tIno     uint64\n\tUid     uint32\n\tGid     uint32\n\tRdev    int32\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint32\n\tLspare  int32\n\tQspare  [2]int64\n}\n\ntype Statfs_t struct {\n\tBsize       uint32\n\tIosize      int32\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      uint64\n\tFiles       uint64\n\tFfree       uint64\n\tFsid        Fsid\n\tOwner       uint32\n\tType        uint32\n\tFlags       uint32\n\tFssubtype   uint32\n\tFstypename  [16]byte\n\tMntonname   [1024]byte\n\tMntfromname [1024]byte\n\tFlags_ext   uint32\n\tReserved    [7]uint32\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Fstore_t struct {\n\tFlags      uint32\n\tPosmode    int32\n\tOffset     int64\n\tLength     int64\n\tBytesalloc int64\n}\n\ntype Radvisory_t struct {\n\tOffset int64\n\tCount  int32\n\t_      [4]byte\n}\n\ntype Fbootstraptransfer_t struct {\n\tOffset int64\n\tLength uint64\n\tBuffer *byte\n}\n\ntype Log2phys_t struct {\n\tFlags uint32\n\t_     [16]byte\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\ntype Dirent struct {\n\tIno     uint64\n\tSeekoff uint64\n\tReclen  uint16\n\tNamlen  uint16\n\tType    uint8\n\tName    [1024]int8\n\t_       [3]byte\n}\n\ntype Attrlist struct {\n\tBitmapcount uint16\n\tReserved    uint16\n\tCommonattr  uint32\n\tVolattr     uint32\n\tDirattr     uint32\n\tFileattr    uint32\n\tForkattr    uint32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [12]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype RawSockaddrCtl struct {\n\tSc_len      uint8\n\tSc_family   uint8\n\tSs_sysaddr  uint16\n\tSc_id       uint32\n\tSc_unit     uint32\n\tSc_reserved [5]uint32\n}\n\ntype RawSockaddrVM struct {\n\tLen       uint8\n\tFamily    uint8\n\tReserved1 uint16\n\tPort      uint32\n\tCid       uint32\n}\n\ntype XVSockPCB struct {\n\tXv_len           uint32\n\tXv_vsockpp       uint64\n\tXvp_local_cid    uint32\n\tXvp_local_port   uint32\n\tXvp_remote_cid   uint32\n\tXvp_remote_port  uint32\n\tXvp_rxcnt        uint32\n\tXvp_txcnt        uint32\n\tXvp_peer_rxhiwat uint32\n\tXvp_peer_rxcnt   uint32\n\tXvp_last_pid     int32\n\tXvp_gencnt       uint64\n\tXv_socket        XSocket\n\t_                [4]byte\n}\n\ntype XSocket struct {\n\tXso_len      uint32\n\tXso_so       uint32\n\tSo_type      int16\n\tSo_options   int16\n\tSo_linger    int16\n\tSo_state     int16\n\tSo_pcb       uint32\n\tXso_protocol int32\n\tXso_family   int32\n\tSo_qlen      int16\n\tSo_incqlen   int16\n\tSo_qlimit    int16\n\tSo_timeo     int16\n\tSo_error     uint16\n\tSo_pgid      int32\n\tSo_oobmark   uint32\n\tSo_rcv       XSockbuf\n\tSo_snd       XSockbuf\n\tSo_uid       uint32\n}\n\ntype XSocket64 struct {\n\tXso_len      uint32\n\t_            [8]byte\n\tSo_type      int16\n\tSo_options   int16\n\tSo_linger    int16\n\tSo_state     int16\n\t_            [8]byte\n\tXso_protocol int32\n\tXso_family   int32\n\tSo_qlen      int16\n\tSo_incqlen   int16\n\tSo_qlimit    int16\n\tSo_timeo     int16\n\tSo_error     uint16\n\tSo_pgid      int32\n\tSo_oobmark   uint32\n\tSo_rcv       XSockbuf\n\tSo_snd       XSockbuf\n\tSo_uid       uint32\n}\n\ntype XSockbuf struct {\n\tCc    uint32\n\tHiwat uint32\n\tMbcnt uint32\n\tMbmax uint32\n\tLowat int32\n\tFlags int16\n\tTimeo int16\n}\n\ntype XVSockPgen struct {\n\tLen   uint32\n\tCount uint64\n\tGen   uint64\n\tSogen uint64\n}\n\ntype _Socklen uint32\n\ntype SaeAssocID uint32\n\ntype SaeConnID uint32\n\ntype SaEndpoints struct {\n\tSrcif      uint32\n\tSrcaddr    *RawSockaddr\n\tSrcaddrlen uint32\n\tDstaddr    *RawSockaddr\n\tDstaddrlen uint32\n\t_          [4]byte\n}\n\ntype Xucred struct {\n\tVersion uint32\n\tUid     uint32\n\tNgroups int16\n\tGroups  [16]uint32\n}\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPMreqn struct {\n\tMultiaddr [4]byte /* in_addr */\n\tAddress   [4]byte /* in_addr */\n\tIfindex   int32\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet4Pktinfo struct {\n\tIfindex  uint32\n\tSpec_dst [4]byte /* in_addr */\n\tAddr     [4]byte /* in_addr */\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\ntype TCPConnectionInfo struct {\n\tState               uint8\n\tSnd_wscale          uint8\n\tRcv_wscale          uint8\n\t_                   uint8\n\tOptions             uint32\n\tFlags               uint32\n\tRto                 uint32\n\tMaxseg              uint32\n\tSnd_ssthresh        uint32\n\tSnd_cwnd            uint32\n\tSnd_wnd             uint32\n\tSnd_sbbytes         uint32\n\tRcv_wnd             uint32\n\tRttcur              uint32\n\tSrtt                uint32\n\tRttvar              uint32\n\tTxpackets           uint64\n\tTxbytes             uint64\n\tTxretransmitbytes   uint64\n\tRxpackets           uint64\n\tRxbytes             uint64\n\tRxoutoforderbytes   uint64\n\tTxretransmitpackets uint64\n}\n\nconst (\n\tSizeofSockaddrInet4     = 0x10\n\tSizeofSockaddrInet6     = 0x1c\n\tSizeofSockaddrAny       = 0x6c\n\tSizeofSockaddrUnix      = 0x6a\n\tSizeofSockaddrDatalink  = 0x14\n\tSizeofSockaddrCtl       = 0x20\n\tSizeofSockaddrVM        = 0xc\n\tSizeofXvsockpcb         = 0xa8\n\tSizeofXSocket           = 0x64\n\tSizeofXSockbuf          = 0x18\n\tSizeofXVSockPgen        = 0x20\n\tSizeofXucred            = 0x4c\n\tSizeofLinger            = 0x8\n\tSizeofIovec             = 0x10\n\tSizeofIPMreq            = 0x8\n\tSizeofIPMreqn           = 0xc\n\tSizeofIPv6Mreq          = 0x14\n\tSizeofMsghdr            = 0x30\n\tSizeofCmsghdr           = 0xc\n\tSizeofInet4Pktinfo      = 0xc\n\tSizeofInet6Pktinfo      = 0x14\n\tSizeofIPv6MTUInfo       = 0x20\n\tSizeofICMPv6Filter      = 0x20\n\tSizeofTCPConnectionInfo = 0x70\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint64\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n}\n\ntype FdSet struct {\n\tBits [32]int32\n}\n\nconst (\n\tSizeofIfMsghdr    = 0x70\n\tSizeofIfMsghdr2   = 0xa0\n\tSizeofIfData      = 0x60\n\tSizeofIfData64    = 0x80\n\tSizeofIfaMsghdr   = 0x14\n\tSizeofIfmaMsghdr  = 0x10\n\tSizeofIfmaMsghdr2 = 0x14\n\tSizeofRtMsghdr    = 0x5c\n\tSizeofRtMsghdr2   = 0x5c\n\tSizeofRtMetrics   = 0x38\n)\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\tData    IfData\n}\n\ntype IfMsghdr2 struct {\n\tMsglen     uint16\n\tVersion    uint8\n\tType       uint8\n\tAddrs      int32\n\tFlags      int32\n\tIndex      uint16\n\tSnd_len    int32\n\tSnd_maxlen int32\n\tSnd_drops  int32\n\tTimer      int32\n\tData       IfData64\n}\n\ntype IfData struct {\n\tType       uint8\n\tTypelen    uint8\n\tPhysical   uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tRecvquota  uint8\n\tXmitquota  uint8\n\tUnused1    uint8\n\tMtu        uint32\n\tMetric     uint32\n\tBaudrate   uint32\n\tIpackets   uint32\n\tIerrors    uint32\n\tOpackets   uint32\n\tOerrors    uint32\n\tCollisions uint32\n\tIbytes     uint32\n\tObytes     uint32\n\tImcasts    uint32\n\tOmcasts    uint32\n\tIqdrops    uint32\n\tNoproto    uint32\n\tRecvtiming uint32\n\tXmittiming uint32\n\tLastchange Timeval32\n\tUnused2    uint32\n\tHwassist   uint32\n\tReserved1  uint32\n\tReserved2  uint32\n}\n\ntype IfData64 struct {\n\tType       uint8\n\tTypelen    uint8\n\tPhysical   uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tRecvquota  uint8\n\tXmitquota  uint8\n\tUnused1    uint8\n\tMtu        uint32\n\tMetric     uint32\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tNoproto    uint64\n\tRecvtiming uint32\n\tXmittiming uint32\n\tLastchange Timeval32\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\tMetric  int32\n}\n\ntype IfmaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       [2]byte\n}\n\ntype IfmaMsghdr2 struct {\n\tMsglen   uint16\n\tVersion  uint8\n\tType     uint8\n\tAddrs    int32\n\tFlags    int32\n\tIndex    uint16\n\tRefcount int32\n}\n\ntype RtMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tFlags   int32\n\tAddrs   int32\n\tPid     int32\n\tSeq     int32\n\tErrno   int32\n\tUse     int32\n\tInits   uint32\n\tRmx     RtMetrics\n}\n\ntype RtMsghdr2 struct {\n\tMsglen      uint16\n\tVersion     uint8\n\tType        uint8\n\tIndex       uint16\n\tFlags       int32\n\tAddrs       int32\n\tRefcnt      int32\n\tParentflags int32\n\tReserved    int32\n\tUse         int32\n\tInits       uint32\n\tRmx         RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint32\n\tMtu      uint32\n\tHopcount uint32\n\tExpire   int32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPksent   uint32\n\tState    uint32\n\tFiller   [3]uint32\n}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x8\n\tSizeofBpfProgram = 0x10\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x14\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  Timeval32\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\t_       [2]byte\n}\n\ntype Termios struct {\n\tIflag  uint64\n\tOflag  uint64\n\tCflag  uint64\n\tLflag  uint64\n\tCc     [20]uint8\n\tIspeed uint64\n\tOspeed uint64\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x2\n\tAT_REMOVEDIR        = 0x80\n\tAT_SYMLINK_FOLLOW   = 0x40\n\tAT_SYMLINK_NOFOLLOW = 0x20\n\tAT_EACCESS          = 0x10\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofClockinfo = 0x14\n\ntype Clockinfo struct {\n\tHz      int32\n\tTick    int32\n\tTickadj int32\n\tStathz  int32\n\tProfhz  int32\n}\n\ntype CtlInfo struct {\n\tId   uint32\n\tName [96]byte\n}\n\nconst SizeofKinfoProc = 0x288\n\ntype Eproc struct {\n\tPaddr   uintptr\n\tSess    uintptr\n\tPcred   Pcred\n\tUcred   Ucred\n\tVm      Vmspace\n\tPpid    int32\n\tPgid    int32\n\tJobc    int16\n\tTdev    int32\n\tTpgid   int32\n\tTsess   uintptr\n\tWmesg   [8]byte\n\tXsize   int32\n\tXrssize int16\n\tXccount int16\n\tXswrss  int16\n\tFlag    int32\n\tLogin   [12]byte\n\tSpare   [4]int32\n\t_       [4]byte\n}\n\ntype ExternProc struct {\n\tP_starttime Timeval\n\tP_vmspace   *Vmspace\n\tP_sigacts   uintptr\n\tP_flag      int32\n\tP_stat      int8\n\tP_pid       int32\n\tP_oppid     int32\n\tP_dupfd     int32\n\tUser_stack  *int8\n\tExit_thread *byte\n\tP_debugger  int32\n\tSigwait     int32\n\tP_estcpu    uint32\n\tP_cpticks   int32\n\tP_pctcpu    uint32\n\tP_wchan     *byte\n\tP_wmesg     *int8\n\tP_swtime    uint32\n\tP_slptime   uint32\n\tP_realtimer Itimerval\n\tP_rtime     Timeval\n\tP_uticks    uint64\n\tP_sticks    uint64\n\tP_iticks    uint64\n\tP_traceflag int32\n\tP_tracep    uintptr\n\tP_siglist   int32\n\tP_textvp    uintptr\n\tP_holdcnt   int32\n\tP_sigmask   uint32\n\tP_sigignore uint32\n\tP_sigcatch  uint32\n\tP_priority  uint8\n\tP_usrpri    uint8\n\tP_nice      int8\n\tP_comm      [17]byte\n\tP_pgrp      uintptr\n\tP_addr      uintptr\n\tP_xstat     uint16\n\tP_acflag    uint16\n\tP_ru        *Rusage\n}\n\ntype Itimerval struct {\n\tInterval Timeval\n\tValue    Timeval\n}\n\ntype KinfoProc struct {\n\tProc  ExternProc\n\tEproc Eproc\n}\n\ntype Vmspace struct {\n\tDummy  int32\n\tDummy2 *int8\n\tDummy3 [5]int32\n\tDummy4 [3]*int8\n}\n\ntype Pcred struct {\n\tPc_lock  [72]int8\n\tPc_ucred uintptr\n\tP_ruid   uint32\n\tP_svuid  uint32\n\tP_rgid   uint32\n\tP_svgid  uint32\n\tP_refcnt int32\n\t_        [4]byte\n}\n\ntype Ucred struct {\n\tRef     int32\n\tUid     uint32\n\tNgroups int16\n\tGroups  [16]uint32\n}\n\ntype SysvIpcPerm struct {\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint16\n\t_    uint16\n\t_    int32\n}\ntype SysvShmDesc struct {\n\tPerm   SysvIpcPerm\n\tSegsz  uint64\n\tLpid   int32\n\tCpid   int32\n\tNattch uint16\n\t_      [34]byte\n}\n\nconst (\n\tIPC_CREAT   = 0x200\n\tIPC_EXCL    = 0x400\n\tIPC_NOWAIT  = 0x800\n\tIPC_PRIVATE = 0x0\n)\n\nconst (\n\tIPC_RMID = 0x0\n\tIPC_SET  = 0x1\n\tIPC_STAT = 0x2\n)\n\nconst (\n\tSHM_RDONLY = 0x1000\n\tSHM_RND    = 0x2000\n)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go",
    "content": "// cgo -godefs types_dragonfly.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && dragonfly\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur int64\n\tMax int64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tIno     uint64\n\tNlink   uint32\n\tDev     uint32\n\tMode    uint16\n\t_1      uint16\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint32\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\t_       uint32\n\tFlags   uint32\n\tGen     uint32\n\tLspare  int32\n\tBlksize int64\n\tQspare2 int64\n}\n\ntype Statfs_t struct {\n\tSpare2      int64\n\tBsize       int64\n\tIosize      int64\n\tBlocks      int64\n\tBfree       int64\n\tBavail      int64\n\tFiles       int64\n\tFfree       int64\n\tFsid        Fsid\n\tOwner       uint32\n\tType        int32\n\tFlags       int32\n\tSyncwrites  int64\n\tAsyncwrites int64\n\tFstypename  [16]byte\n\tMntonname   [80]byte\n\tSyncreads   int64\n\tAsyncreads  int64\n\tSpares1     int16\n\tMntfromname [80]byte\n\tSpares2     int16\n\tSpare       [2]int64\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno  uint64\n\tNamlen  uint16\n\tType    uint8\n\tUnused1 uint8\n\tUnused2 uint32\n\tName    [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [12]int8\n\tRcf    uint16\n\tRoute  [16]uint16\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x36\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint64\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n}\n\ntype FdSet struct {\n\tBits [16]uint64\n}\n\nconst (\n\tSizeofIfMsghdr         = 0xb0\n\tSizeofIfData           = 0xa0\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfmaMsghdr       = 0x10\n\tSizeofIfAnnounceMsghdr = 0x18\n\tSizeofRtMsghdr         = 0x98\n\tSizeofRtMetrics        = 0x70\n)\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tFlags   int32\n\tAddrs   int32\n\tData    IfData\n}\n\ntype IfData struct {\n\tType       uint8\n\tPhysical   uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tRecvquota  uint8\n\tXmitquota  uint8\n\tMtu        uint64\n\tMetric     uint64\n\tLink_state uint64\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tNoproto    uint64\n\tHwassist   uint64\n\tOqdrops    uint64\n\tLastchange Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tIndex     uint16\n\tFlags     int32\n\tAddrs     int32\n\tAddrflags int32\n\tMetric    int32\n}\n\ntype IfmaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tFlags   int32\n\tAddrs   int32\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tName    [16]int8\n\tWhat    uint16\n}\n\ntype RtMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tFlags   int32\n\tAddrs   int32\n\tPid     int32\n\tSeq     int32\n\tErrno   int32\n\tUse     int32\n\tInits   uint64\n\tRmx     RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks     uint64\n\tMtu       uint64\n\tPksent    uint64\n\tExpire    uint64\n\tSendpipe  uint64\n\tSsthresh  uint64\n\tRtt       uint64\n\tRttvar    uint64\n\tRecvpipe  uint64\n\tHopcount  uint64\n\tMssopt    uint16\n\tPad       uint16\n\tMsl       uint64\n\tIwmaxsegs uint64\n\tIwcapsegs uint64\n}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x8\n\tSizeofBpfProgram = 0x10\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x20\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  Timeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\t_       [6]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = 0xfffafdcd\n\tAT_SYMLINK_NOFOLLOW = 0x1\n\tAT_REMOVEDIR        = 0x2\n\tAT_EACCESS          = 0x4\n\tAT_SYMLINK_FOLLOW   = 0x8\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Utsname struct {\n\tSysname  [32]byte\n\tNodename [32]byte\n\tRelease  [32]byte\n\tVersion  [32]byte\n\tMachine  [32]byte\n}\n\nconst SizeofClockinfo = 0x14\n\ntype Clockinfo struct {\n\tHz      int32\n\tTick    int32\n\tTickadj int32\n\tStathz  int32\n\tProfhz  int32\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go",
    "content": "// cgo -godefs types_freebsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build 386 && freebsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x4\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x4\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int32\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int32\n\tNsec int32\n}\n\ntype Timeval struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Time_t int32\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Rlimit struct {\n\tCur int64\n\tMax int64\n}\n\ntype _Gid_t uint32\n\nconst (\n\t_statfsVersion = 0x20140518\n\t_dirblksiz     = 0x400\n)\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tNlink   uint64\n\tMode    uint16\n\t_0      int16\n\tUid     uint32\n\tGid     uint32\n\t_1      int32\n\tRdev    uint64\n\t_       int32\n\tAtim    Timespec\n\t_       int32\n\tMtim    Timespec\n\t_       int32\n\tCtim    Timespec\n\t_       int32\n\tBtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint64\n\tSpare   [10]uint64\n}\n\ntype Statfs_t struct {\n\tVersion     uint32\n\tType        uint32\n\tFlags       uint64\n\tBsize       uint64\n\tIosize      uint64\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      int64\n\tFiles       uint64\n\tFfree       int64\n\tSyncwrites  uint64\n\tAsyncwrites uint64\n\tSyncreads   uint64\n\tAsyncreads  uint64\n\tSpare       [10]uint64\n\tNamemax     uint32\n\tOwner       uint32\n\tFsid        Fsid\n\tCharspare   [80]int8\n\tFstypename  [16]byte\n\tMntfromname [1024]byte\n\tMntonname   [1024]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n\tSysid  int32\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tPad0   uint8\n\tNamlen uint16\n\tPad1   uint16\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [46]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Xucred struct {\n\tVersion uint32\n\tUid     uint32\n\tNgroups int16\n\tGroups  [16]uint32\n\t_       *byte\n}\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPMreqn struct {\n\tMultiaddr [4]byte /* in_addr */\n\tAddress   [4]byte /* in_addr */\n\tIfindex   int32\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x36\n\tSizeofXucred           = 0x50\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x8\n\tSizeofIPMreq           = 0x8\n\tSizeofIPMreqn          = 0xc\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x1c\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype PtraceLwpInfoStruct struct {\n\tLwpid        int32\n\tEvent        int32\n\tFlags        int32\n\tSigmask      Sigset_t\n\tSiglist      Sigset_t\n\tSiginfo      __PtraceSiginfo\n\tTdname       [20]int8\n\tChild_pid    int32\n\tSyscall_code uint32\n\tSyscall_narg uint32\n}\n\ntype __Siginfo struct {\n\tSigno  int32\n\tErrno  int32\n\tCode   int32\n\tPid    int32\n\tUid    uint32\n\tStatus int32\n\tAddr   *byte\n\tValue  [4]byte\n\t_      [32]byte\n}\ntype __PtraceSiginfo struct {\n\tSigno  int32\n\tErrno  int32\n\tCode   int32\n\tPid    int32\n\tUid    uint32\n\tStatus int32\n\tAddr   uintptr\n\tValue  [4]byte\n\t_      [32]byte\n}\n\ntype Sigset_t struct {\n\tVal [4]uint32\n}\n\ntype Reg struct {\n\tFs     uint32\n\tEs     uint32\n\tDs     uint32\n\tEdi    uint32\n\tEsi    uint32\n\tEbp    uint32\n\tIsp    uint32\n\tEbx    uint32\n\tEdx    uint32\n\tEcx    uint32\n\tEax    uint32\n\tTrapno uint32\n\tErr    uint32\n\tEip    uint32\n\tCs     uint32\n\tEflags uint32\n\tEsp    uint32\n\tSs     uint32\n\tGs     uint32\n}\n\ntype FpReg struct {\n\tEnv   [7]uint32\n\tAcc   [8][10]uint8\n\tEx_sw uint32\n\tPad   [64]uint8\n}\n\ntype FpExtendedPrecision struct{}\n\ntype PtraceIoDesc struct {\n\tOp   int32\n\tOffs uintptr\n\tAddr *byte\n\tLen  uint32\n}\n\ntype Kevent_t struct {\n\tIdent  uint32\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n\tExt    [4]uint64\n}\n\ntype FdSet struct {\n\tBits [32]uint32\n}\n\nconst (\n\tsizeofIfMsghdr         = 0xa8\n\tSizeofIfMsghdr         = 0x60\n\tsizeofIfData           = 0x98\n\tSizeofIfData           = 0x50\n\tSizeofIfaMsghdr        = 0x14\n\tSizeofIfmaMsghdr       = 0x10\n\tSizeofIfAnnounceMsghdr = 0x18\n\tSizeofRtMsghdr         = 0x5c\n\tSizeofRtMetrics        = 0x38\n)\n\ntype ifMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n\tData    ifData\n}\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\tData    IfData\n}\n\ntype ifData struct {\n\tType       uint8\n\tPhysical   uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tLink_state uint8\n\tVhid       uint8\n\tDatalen    uint16\n\tMtu        uint32\n\tMetric     uint32\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tOqdrops    uint64\n\tNoproto    uint64\n\tHwassist   uint64\n\t_          [8]byte\n\t_          [16]byte\n}\n\ntype IfData struct {\n\tType        uint8\n\tPhysical    uint8\n\tAddrlen     uint8\n\tHdrlen      uint8\n\tLink_state  uint8\n\tSpare_char1 uint8\n\tSpare_char2 uint8\n\tDatalen     uint8\n\tMtu         uint32\n\tMetric      uint32\n\tBaudrate    uint32\n\tIpackets    uint32\n\tIerrors     uint32\n\tOpackets    uint32\n\tOerrors     uint32\n\tCollisions  uint32\n\tIbytes      uint32\n\tObytes      uint32\n\tImcasts     uint32\n\tOmcasts     uint32\n\tIqdrops     uint32\n\tNoproto     uint32\n\tHwassist    uint32\n\tEpoch       int32\n\tLastchange  Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n\tMetric  int32\n}\n\ntype IfmaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tName    [16]int8\n\tWhat    uint16\n}\n\ntype RtMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\t_       uint16\n\tFlags   int32\n\tAddrs   int32\n\tPid     int32\n\tSeq     int32\n\tErrno   int32\n\tFmask   int32\n\tInits   uint32\n\tRmx     RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint32\n\tMtu      uint32\n\tHopcount uint32\n\tExpire   uint32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPksent   uint32\n\tWeight   uint32\n\tFiller   [3]uint32\n}\n\nconst (\n\tSizeofBpfVersion    = 0x4\n\tSizeofBpfStat       = 0x8\n\tSizeofBpfZbuf       = 0xc\n\tSizeofBpfProgram    = 0x8\n\tSizeofBpfInsn       = 0x8\n\tSizeofBpfHdr        = 0x14\n\tSizeofBpfZbufHeader = 0x20\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfZbuf struct {\n\tBufa   *byte\n\tBufb   *byte\n\tBuflen uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  Timeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\t_       [2]byte\n}\n\ntype BpfZbufHeader struct {\n\tKernel_gen uint32\n\tKernel_len uint32\n\tUser_gen   uint32\n\t_          [5]uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x100\n\tAT_SYMLINK_NOFOLLOW = 0x200\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_REMOVEDIR        = 0x800\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR      = 0x8\n\tPOLLHUP      = 0x10\n\tPOLLIN       = 0x1\n\tPOLLINIGNEOF = 0x2000\n\tPOLLNVAL     = 0x20\n\tPOLLOUT      = 0x4\n\tPOLLPRI      = 0x2\n\tPOLLRDBAND   = 0x80\n\tPOLLRDNORM   = 0x40\n\tPOLLWRBAND   = 0x100\n\tPOLLWRNORM   = 0x4\n\tPOLLRDHUP    = 0x4000\n)\n\ntype CapRights struct {\n\tRights [2]uint64\n}\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofClockinfo = 0x14\n\ntype Clockinfo struct {\n\tHz     int32\n\tTick   int32\n\tSpare  int32\n\tStathz int32\n\tProfhz int32\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go",
    "content": "// cgo -godefs types_freebsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && freebsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Time_t int64\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur int64\n\tMax int64\n}\n\ntype _Gid_t uint32\n\nconst (\n\t_statfsVersion = 0x20140518\n\t_dirblksiz     = 0x400\n)\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tNlink   uint64\n\tMode    uint16\n\t_0      int16\n\tUid     uint32\n\tGid     uint32\n\t_1      int32\n\tRdev    uint64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint64\n\tSpare   [10]uint64\n}\n\ntype Statfs_t struct {\n\tVersion     uint32\n\tType        uint32\n\tFlags       uint64\n\tBsize       uint64\n\tIosize      uint64\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      int64\n\tFiles       uint64\n\tFfree       int64\n\tSyncwrites  uint64\n\tAsyncwrites uint64\n\tSyncreads   uint64\n\tAsyncreads  uint64\n\tSpare       [10]uint64\n\tNamemax     uint32\n\tOwner       uint32\n\tFsid        Fsid\n\tCharspare   [80]int8\n\tFstypename  [16]byte\n\tMntfromname [1024]byte\n\tMntonname   [1024]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n\tSysid  int32\n\t_      [4]byte\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tPad0   uint8\n\tNamlen uint16\n\tPad1   uint16\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [46]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Xucred struct {\n\tVersion uint32\n\tUid     uint32\n\tNgroups int16\n\tGroups  [16]uint32\n\t_       *byte\n}\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPMreqn struct {\n\tMultiaddr [4]byte /* in_addr */\n\tAddress   [4]byte /* in_addr */\n\tIfindex   int32\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x36\n\tSizeofXucred           = 0x58\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPMreqn          = 0xc\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype PtraceLwpInfoStruct struct {\n\tLwpid        int32\n\tEvent        int32\n\tFlags        int32\n\tSigmask      Sigset_t\n\tSiglist      Sigset_t\n\tSiginfo      __PtraceSiginfo\n\tTdname       [20]int8\n\tChild_pid    int32\n\tSyscall_code uint32\n\tSyscall_narg uint32\n}\n\ntype __Siginfo struct {\n\tSigno  int32\n\tErrno  int32\n\tCode   int32\n\tPid    int32\n\tUid    uint32\n\tStatus int32\n\tAddr   *byte\n\tValue  [8]byte\n\t_      [40]byte\n}\n\ntype __PtraceSiginfo struct {\n\tSigno  int32\n\tErrno  int32\n\tCode   int32\n\tPid    int32\n\tUid    uint32\n\tStatus int32\n\tAddr   uintptr\n\tValue  [8]byte\n\t_      [40]byte\n}\n\ntype Sigset_t struct {\n\tVal [4]uint32\n}\n\ntype Reg struct {\n\tR15    int64\n\tR14    int64\n\tR13    int64\n\tR12    int64\n\tR11    int64\n\tR10    int64\n\tR9     int64\n\tR8     int64\n\tRdi    int64\n\tRsi    int64\n\tRbp    int64\n\tRbx    int64\n\tRdx    int64\n\tRcx    int64\n\tRax    int64\n\tTrapno uint32\n\tFs     uint16\n\tGs     uint16\n\tErr    uint32\n\tEs     uint16\n\tDs     uint16\n\tRip    int64\n\tCs     int64\n\tRflags int64\n\tRsp    int64\n\tSs     int64\n}\n\ntype FpReg struct {\n\tEnv   [4]uint64\n\tAcc   [8][16]uint8\n\tXacc  [16][16]uint8\n\tSpare [12]uint64\n}\n\ntype FpExtendedPrecision struct{}\n\ntype PtraceIoDesc struct {\n\tOp   int32\n\tOffs uintptr\n\tAddr *byte\n\tLen  uint64\n}\n\ntype Kevent_t struct {\n\tIdent  uint64\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n\tExt    [4]uint64\n}\n\ntype FdSet struct {\n\tBits [16]uint64\n}\n\nconst (\n\tsizeofIfMsghdr         = 0xa8\n\tSizeofIfMsghdr         = 0xa8\n\tsizeofIfData           = 0x98\n\tSizeofIfData           = 0x98\n\tSizeofIfaMsghdr        = 0x14\n\tSizeofIfmaMsghdr       = 0x10\n\tSizeofIfAnnounceMsghdr = 0x18\n\tSizeofRtMsghdr         = 0x98\n\tSizeofRtMetrics        = 0x70\n)\n\ntype ifMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n\tData    ifData\n}\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\tData    IfData\n}\n\ntype ifData struct {\n\tType       uint8\n\tPhysical   uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tLink_state uint8\n\tVhid       uint8\n\tDatalen    uint16\n\tMtu        uint32\n\tMetric     uint32\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tOqdrops    uint64\n\tNoproto    uint64\n\tHwassist   uint64\n\t_          [8]byte\n\t_          [16]byte\n}\n\ntype IfData struct {\n\tType        uint8\n\tPhysical    uint8\n\tAddrlen     uint8\n\tHdrlen      uint8\n\tLink_state  uint8\n\tSpare_char1 uint8\n\tSpare_char2 uint8\n\tDatalen     uint8\n\tMtu         uint64\n\tMetric      uint64\n\tBaudrate    uint64\n\tIpackets    uint64\n\tIerrors     uint64\n\tOpackets    uint64\n\tOerrors     uint64\n\tCollisions  uint64\n\tIbytes      uint64\n\tObytes      uint64\n\tImcasts     uint64\n\tOmcasts     uint64\n\tIqdrops     uint64\n\tNoproto     uint64\n\tHwassist    uint64\n\tEpoch       int64\n\tLastchange  Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n\tMetric  int32\n}\n\ntype IfmaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tName    [16]int8\n\tWhat    uint16\n}\n\ntype RtMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\t_       uint16\n\tFlags   int32\n\tAddrs   int32\n\tPid     int32\n\tSeq     int32\n\tErrno   int32\n\tFmask   int32\n\tInits   uint64\n\tRmx     RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint64\n\tMtu      uint64\n\tHopcount uint64\n\tExpire   uint64\n\tRecvpipe uint64\n\tSendpipe uint64\n\tSsthresh uint64\n\tRtt      uint64\n\tRttvar   uint64\n\tPksent   uint64\n\tWeight   uint64\n\tFiller   [3]uint64\n}\n\nconst (\n\tSizeofBpfVersion    = 0x4\n\tSizeofBpfStat       = 0x8\n\tSizeofBpfZbuf       = 0x18\n\tSizeofBpfProgram    = 0x10\n\tSizeofBpfInsn       = 0x8\n\tSizeofBpfHdr        = 0x20\n\tSizeofBpfZbufHeader = 0x20\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfZbuf struct {\n\tBufa   *byte\n\tBufb   *byte\n\tBuflen uint64\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  Timeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\t_       [6]byte\n}\n\ntype BpfZbufHeader struct {\n\tKernel_gen uint32\n\tKernel_len uint32\n\tUser_gen   uint32\n\t_          [5]uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x100\n\tAT_SYMLINK_NOFOLLOW = 0x200\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_REMOVEDIR        = 0x800\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR      = 0x8\n\tPOLLHUP      = 0x10\n\tPOLLIN       = 0x1\n\tPOLLINIGNEOF = 0x2000\n\tPOLLNVAL     = 0x20\n\tPOLLOUT      = 0x4\n\tPOLLPRI      = 0x2\n\tPOLLRDBAND   = 0x80\n\tPOLLRDNORM   = 0x40\n\tPOLLWRBAND   = 0x100\n\tPOLLWRNORM   = 0x4\n\tPOLLRDHUP    = 0x4000\n)\n\ntype CapRights struct {\n\tRights [2]uint64\n}\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofClockinfo = 0x14\n\ntype Clockinfo struct {\n\tHz     int32\n\tTick   int32\n\tSpare  int32\n\tStathz int32\n\tProfhz int32\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go",
    "content": "// cgo -godefs -- -fsigned-char types_freebsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm && freebsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x4\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x4\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int32\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int32\n\t_    [4]byte\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int32\n\t_    [4]byte\n}\n\ntype Time_t int64\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Rlimit struct {\n\tCur int64\n\tMax int64\n}\n\ntype _Gid_t uint32\n\nconst (\n\t_statfsVersion = 0x20140518\n\t_dirblksiz     = 0x400\n)\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tNlink   uint64\n\tMode    uint16\n\t_0      int16\n\tUid     uint32\n\tGid     uint32\n\t_1      int32\n\tRdev    uint64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint64\n\tSpare   [10]uint64\n}\n\ntype Statfs_t struct {\n\tVersion     uint32\n\tType        uint32\n\tFlags       uint64\n\tBsize       uint64\n\tIosize      uint64\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      int64\n\tFiles       uint64\n\tFfree       int64\n\tSyncwrites  uint64\n\tAsyncwrites uint64\n\tSyncreads   uint64\n\tAsyncreads  uint64\n\tSpare       [10]uint64\n\tNamemax     uint32\n\tOwner       uint32\n\tFsid        Fsid\n\tCharspare   [80]int8\n\tFstypename  [16]byte\n\tMntfromname [1024]byte\n\tMntonname   [1024]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n\tSysid  int32\n\t_      [4]byte\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tPad0   uint8\n\tNamlen uint16\n\tPad1   uint16\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [46]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Xucred struct {\n\tVersion uint32\n\tUid     uint32\n\tNgroups int16\n\tGroups  [16]uint32\n\t_       *byte\n}\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPMreqn struct {\n\tMultiaddr [4]byte /* in_addr */\n\tAddress   [4]byte /* in_addr */\n\tIfindex   int32\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x36\n\tSizeofXucred           = 0x50\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x8\n\tSizeofIPMreq           = 0x8\n\tSizeofIPMreqn          = 0xc\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x1c\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype PtraceLwpInfoStruct struct {\n\tLwpid        int32\n\tEvent        int32\n\tFlags        int32\n\tSigmask      Sigset_t\n\tSiglist      Sigset_t\n\tSiginfo      __PtraceSiginfo\n\tTdname       [20]int8\n\tChild_pid    int32\n\tSyscall_code uint32\n\tSyscall_narg uint32\n}\n\ntype __Siginfo struct {\n\tSigno  int32\n\tErrno  int32\n\tCode   int32\n\tPid    int32\n\tUid    uint32\n\tStatus int32\n\tAddr   *byte\n\tValue  [4]byte\n\t_      [32]byte\n}\n\ntype __PtraceSiginfo struct {\n\tSigno  int32\n\tErrno  int32\n\tCode   int32\n\tPid    int32\n\tUid    uint32\n\tStatus int32\n\tAddr   uintptr\n\tValue  [4]byte\n\t_      [32]byte\n}\n\ntype Sigset_t struct {\n\tVal [4]uint32\n}\n\ntype Reg struct {\n\tR    [13]uint32\n\tSp   uint32\n\tLr   uint32\n\tPc   uint32\n\tCpsr uint32\n}\n\ntype FpReg struct {\n\tFpsr uint32\n\tFpr  [8]FpExtendedPrecision\n}\n\ntype FpExtendedPrecision struct {\n\tExponent    uint32\n\tMantissa_hi uint32\n\tMantissa_lo uint32\n}\n\ntype PtraceIoDesc struct {\n\tOp   int32\n\tOffs uintptr\n\tAddr *byte\n\tLen  uint32\n}\n\ntype Kevent_t struct {\n\tIdent  uint32\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\t_      [4]byte\n\tData   int64\n\tUdata  *byte\n\t_      [4]byte\n\tExt    [4]uint64\n}\n\ntype FdSet struct {\n\tBits [32]uint32\n}\n\nconst (\n\tsizeofIfMsghdr         = 0xa8\n\tSizeofIfMsghdr         = 0x70\n\tsizeofIfData           = 0x98\n\tSizeofIfData           = 0x60\n\tSizeofIfaMsghdr        = 0x14\n\tSizeofIfmaMsghdr       = 0x10\n\tSizeofIfAnnounceMsghdr = 0x18\n\tSizeofRtMsghdr         = 0x5c\n\tSizeofRtMetrics        = 0x38\n)\n\ntype ifMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n\tData    ifData\n}\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\tData    IfData\n}\n\ntype ifData struct {\n\tType       uint8\n\tPhysical   uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tLink_state uint8\n\tVhid       uint8\n\tDatalen    uint16\n\tMtu        uint32\n\tMetric     uint32\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tOqdrops    uint64\n\tNoproto    uint64\n\tHwassist   uint64\n\t_          [8]byte\n\t_          [16]byte\n}\n\ntype IfData struct {\n\tType        uint8\n\tPhysical    uint8\n\tAddrlen     uint8\n\tHdrlen      uint8\n\tLink_state  uint8\n\tSpare_char1 uint8\n\tSpare_char2 uint8\n\tDatalen     uint8\n\tMtu         uint32\n\tMetric      uint32\n\tBaudrate    uint32\n\tIpackets    uint32\n\tIerrors     uint32\n\tOpackets    uint32\n\tOerrors     uint32\n\tCollisions  uint32\n\tIbytes      uint32\n\tObytes      uint32\n\tImcasts     uint32\n\tOmcasts     uint32\n\tIqdrops     uint32\n\tNoproto     uint32\n\tHwassist    uint32\n\t_           [4]byte\n\tEpoch       int64\n\tLastchange  Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n\tMetric  int32\n}\n\ntype IfmaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tName    [16]int8\n\tWhat    uint16\n}\n\ntype RtMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\t_       uint16\n\tFlags   int32\n\tAddrs   int32\n\tPid     int32\n\tSeq     int32\n\tErrno   int32\n\tFmask   int32\n\tInits   uint32\n\tRmx     RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint32\n\tMtu      uint32\n\tHopcount uint32\n\tExpire   uint32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPksent   uint32\n\tWeight   uint32\n\tFiller   [3]uint32\n}\n\nconst (\n\tSizeofBpfVersion    = 0x4\n\tSizeofBpfStat       = 0x8\n\tSizeofBpfZbuf       = 0xc\n\tSizeofBpfProgram    = 0x8\n\tSizeofBpfInsn       = 0x8\n\tSizeofBpfHdr        = 0x20\n\tSizeofBpfZbufHeader = 0x20\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfZbuf struct {\n\tBufa   *byte\n\tBufb   *byte\n\tBuflen uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  Timeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\t_       [6]byte\n}\n\ntype BpfZbufHeader struct {\n\tKernel_gen uint32\n\tKernel_len uint32\n\tUser_gen   uint32\n\t_          [5]uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x100\n\tAT_SYMLINK_NOFOLLOW = 0x200\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_REMOVEDIR        = 0x800\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR      = 0x8\n\tPOLLHUP      = 0x10\n\tPOLLIN       = 0x1\n\tPOLLINIGNEOF = 0x2000\n\tPOLLNVAL     = 0x20\n\tPOLLOUT      = 0x4\n\tPOLLPRI      = 0x2\n\tPOLLRDBAND   = 0x80\n\tPOLLRDNORM   = 0x40\n\tPOLLWRBAND   = 0x100\n\tPOLLWRNORM   = 0x4\n\tPOLLRDHUP    = 0x4000\n)\n\ntype CapRights struct {\n\tRights [2]uint64\n}\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofClockinfo = 0x14\n\ntype Clockinfo struct {\n\tHz     int32\n\tTick   int32\n\tSpare  int32\n\tStathz int32\n\tProfhz int32\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go",
    "content": "// cgo -godefs -- -fsigned-char types_freebsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && freebsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Time_t int64\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur int64\n\tMax int64\n}\n\ntype _Gid_t uint32\n\nconst (\n\t_statfsVersion = 0x20140518\n\t_dirblksiz     = 0x400\n)\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tNlink   uint64\n\tMode    uint16\n\t_0      int16\n\tUid     uint32\n\tGid     uint32\n\t_1      int32\n\tRdev    uint64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint64\n\tSpare   [10]uint64\n}\n\ntype Statfs_t struct {\n\tVersion     uint32\n\tType        uint32\n\tFlags       uint64\n\tBsize       uint64\n\tIosize      uint64\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      int64\n\tFiles       uint64\n\tFfree       int64\n\tSyncwrites  uint64\n\tAsyncwrites uint64\n\tSyncreads   uint64\n\tAsyncreads  uint64\n\tSpare       [10]uint64\n\tNamemax     uint32\n\tOwner       uint32\n\tFsid        Fsid\n\tCharspare   [80]int8\n\tFstypename  [16]byte\n\tMntfromname [1024]byte\n\tMntonname   [1024]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n\tSysid  int32\n\t_      [4]byte\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tPad0   uint8\n\tNamlen uint16\n\tPad1   uint16\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [46]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Xucred struct {\n\tVersion uint32\n\tUid     uint32\n\tNgroups int16\n\tGroups  [16]uint32\n\t_       *byte\n}\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPMreqn struct {\n\tMultiaddr [4]byte /* in_addr */\n\tAddress   [4]byte /* in_addr */\n\tIfindex   int32\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x36\n\tSizeofXucred           = 0x58\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPMreqn          = 0xc\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype PtraceLwpInfoStruct struct {\n\tLwpid        int32\n\tEvent        int32\n\tFlags        int32\n\tSigmask      Sigset_t\n\tSiglist      Sigset_t\n\tSiginfo      __PtraceSiginfo\n\tTdname       [20]int8\n\tChild_pid    int32\n\tSyscall_code uint32\n\tSyscall_narg uint32\n}\n\ntype __Siginfo struct {\n\tSigno  int32\n\tErrno  int32\n\tCode   int32\n\tPid    int32\n\tUid    uint32\n\tStatus int32\n\tAddr   *byte\n\tValue  [8]byte\n\t_      [40]byte\n}\n\ntype __PtraceSiginfo struct {\n\tSigno  int32\n\tErrno  int32\n\tCode   int32\n\tPid    int32\n\tUid    uint32\n\tStatus int32\n\tAddr   uintptr\n\tValue  [8]byte\n\t_      [40]byte\n}\n\ntype Sigset_t struct {\n\tVal [4]uint32\n}\n\ntype Reg struct {\n\tX    [30]uint64\n\tLr   uint64\n\tSp   uint64\n\tElr  uint64\n\tSpsr uint32\n\t_    [4]byte\n}\n\ntype FpReg struct {\n\tQ  [32][16]uint8\n\tSr uint32\n\tCr uint32\n\t_  [8]byte\n}\n\ntype FpExtendedPrecision struct{}\n\ntype PtraceIoDesc struct {\n\tOp   int32\n\tOffs uintptr\n\tAddr *byte\n\tLen  uint64\n}\n\ntype Kevent_t struct {\n\tIdent  uint64\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n\tExt    [4]uint64\n}\n\ntype FdSet struct {\n\tBits [16]uint64\n}\n\nconst (\n\tsizeofIfMsghdr         = 0xa8\n\tSizeofIfMsghdr         = 0xa8\n\tsizeofIfData           = 0x98\n\tSizeofIfData           = 0x98\n\tSizeofIfaMsghdr        = 0x14\n\tSizeofIfmaMsghdr       = 0x10\n\tSizeofIfAnnounceMsghdr = 0x18\n\tSizeofRtMsghdr         = 0x98\n\tSizeofRtMetrics        = 0x70\n)\n\ntype ifMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n\tData    ifData\n}\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\tData    IfData\n}\n\ntype ifData struct {\n\tType       uint8\n\tPhysical   uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tLink_state uint8\n\tVhid       uint8\n\tDatalen    uint16\n\tMtu        uint32\n\tMetric     uint32\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tOqdrops    uint64\n\tNoproto    uint64\n\tHwassist   uint64\n\t_          [8]byte\n\t_          [16]byte\n}\n\ntype IfData struct {\n\tType        uint8\n\tPhysical    uint8\n\tAddrlen     uint8\n\tHdrlen      uint8\n\tLink_state  uint8\n\tSpare_char1 uint8\n\tSpare_char2 uint8\n\tDatalen     uint8\n\tMtu         uint64\n\tMetric      uint64\n\tBaudrate    uint64\n\tIpackets    uint64\n\tIerrors     uint64\n\tOpackets    uint64\n\tOerrors     uint64\n\tCollisions  uint64\n\tIbytes      uint64\n\tObytes      uint64\n\tImcasts     uint64\n\tOmcasts     uint64\n\tIqdrops     uint64\n\tNoproto     uint64\n\tHwassist    uint64\n\tEpoch       int64\n\tLastchange  Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n\tMetric  int32\n}\n\ntype IfmaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tName    [16]int8\n\tWhat    uint16\n}\n\ntype RtMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\t_       uint16\n\tFlags   int32\n\tAddrs   int32\n\tPid     int32\n\tSeq     int32\n\tErrno   int32\n\tFmask   int32\n\tInits   uint64\n\tRmx     RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint64\n\tMtu      uint64\n\tHopcount uint64\n\tExpire   uint64\n\tRecvpipe uint64\n\tSendpipe uint64\n\tSsthresh uint64\n\tRtt      uint64\n\tRttvar   uint64\n\tPksent   uint64\n\tWeight   uint64\n\tFiller   [3]uint64\n}\n\nconst (\n\tSizeofBpfVersion    = 0x4\n\tSizeofBpfStat       = 0x8\n\tSizeofBpfZbuf       = 0x18\n\tSizeofBpfProgram    = 0x10\n\tSizeofBpfInsn       = 0x8\n\tSizeofBpfHdr        = 0x20\n\tSizeofBpfZbufHeader = 0x20\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfZbuf struct {\n\tBufa   *byte\n\tBufb   *byte\n\tBuflen uint64\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  Timeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\t_       [6]byte\n}\n\ntype BpfZbufHeader struct {\n\tKernel_gen uint32\n\tKernel_len uint32\n\tUser_gen   uint32\n\t_          [5]uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x100\n\tAT_SYMLINK_NOFOLLOW = 0x200\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_REMOVEDIR        = 0x800\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR      = 0x8\n\tPOLLHUP      = 0x10\n\tPOLLIN       = 0x1\n\tPOLLINIGNEOF = 0x2000\n\tPOLLNVAL     = 0x20\n\tPOLLOUT      = 0x4\n\tPOLLPRI      = 0x2\n\tPOLLRDBAND   = 0x80\n\tPOLLRDNORM   = 0x40\n\tPOLLWRBAND   = 0x100\n\tPOLLWRNORM   = 0x4\n\tPOLLRDHUP    = 0x4000\n)\n\ntype CapRights struct {\n\tRights [2]uint64\n}\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofClockinfo = 0x14\n\ntype Clockinfo struct {\n\tHz     int32\n\tTick   int32\n\tSpare  int32\n\tStathz int32\n\tProfhz int32\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/ztypes_freebsd_riscv64.go",
    "content": "// cgo -godefs -- -fsigned-char types_freebsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build riscv64 && freebsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Time_t int64\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur int64\n\tMax int64\n}\n\ntype _Gid_t uint32\n\nconst (\n\t_statfsVersion = 0x20140518\n\t_dirblksiz     = 0x400\n)\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tNlink   uint64\n\tMode    uint16\n\t_0      int16\n\tUid     uint32\n\tGid     uint32\n\t_1      int32\n\tRdev    uint64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint64\n\tSpare   [10]uint64\n}\n\ntype Statfs_t struct {\n\tVersion     uint32\n\tType        uint32\n\tFlags       uint64\n\tBsize       uint64\n\tIosize      uint64\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      int64\n\tFiles       uint64\n\tFfree       int64\n\tSyncwrites  uint64\n\tAsyncwrites uint64\n\tSyncreads   uint64\n\tAsyncreads  uint64\n\tSpare       [10]uint64\n\tNamemax     uint32\n\tOwner       uint32\n\tFsid        Fsid\n\tCharspare   [80]int8\n\tFstypename  [16]byte\n\tMntfromname [1024]byte\n\tMntonname   [1024]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n\tSysid  int32\n\t_      [4]byte\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tPad0   uint8\n\tNamlen uint16\n\tPad1   uint16\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [46]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Xucred struct {\n\tVersion uint32\n\tUid     uint32\n\tNgroups int16\n\tGroups  [16]uint32\n\t_       *byte\n}\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPMreqn struct {\n\tMultiaddr [4]byte /* in_addr */\n\tAddress   [4]byte /* in_addr */\n\tIfindex   int32\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x36\n\tSizeofXucred           = 0x58\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPMreqn          = 0xc\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype PtraceLwpInfoStruct struct {\n\tLwpid        int32\n\tEvent        int32\n\tFlags        int32\n\tSigmask      Sigset_t\n\tSiglist      Sigset_t\n\tSiginfo      __PtraceSiginfo\n\tTdname       [20]int8\n\tChild_pid    int32\n\tSyscall_code uint32\n\tSyscall_narg uint32\n}\n\ntype __Siginfo struct {\n\tSigno  int32\n\tErrno  int32\n\tCode   int32\n\tPid    int32\n\tUid    uint32\n\tStatus int32\n\tAddr   *byte\n\tValue  [8]byte\n\t_      [40]byte\n}\n\ntype __PtraceSiginfo struct {\n\tSigno  int32\n\tErrno  int32\n\tCode   int32\n\tPid    int32\n\tUid    uint32\n\tStatus int32\n\tAddr   uintptr\n\tValue  [8]byte\n\t_      [40]byte\n}\n\ntype Sigset_t struct {\n\tVal [4]uint32\n}\n\ntype Reg struct {\n\tRa      uint64\n\tSp      uint64\n\tGp      uint64\n\tTp      uint64\n\tT       [7]uint64\n\tS       [12]uint64\n\tA       [8]uint64\n\tSepc    uint64\n\tSstatus uint64\n}\n\ntype FpReg struct {\n\tX    [32][2]uint64\n\tFcsr uint64\n}\n\ntype FpExtendedPrecision struct{}\n\ntype PtraceIoDesc struct {\n\tOp   int32\n\tOffs uintptr\n\tAddr *byte\n\tLen  uint64\n}\n\ntype Kevent_t struct {\n\tIdent  uint64\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n\tExt    [4]uint64\n}\n\ntype FdSet struct {\n\tBits [16]uint64\n}\n\nconst (\n\tsizeofIfMsghdr         = 0xa8\n\tSizeofIfMsghdr         = 0xa8\n\tsizeofIfData           = 0x98\n\tSizeofIfData           = 0x98\n\tSizeofIfaMsghdr        = 0x14\n\tSizeofIfmaMsghdr       = 0x10\n\tSizeofIfAnnounceMsghdr = 0x18\n\tSizeofRtMsghdr         = 0x98\n\tSizeofRtMetrics        = 0x70\n)\n\ntype ifMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n\tData    ifData\n}\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\tData    IfData\n}\n\ntype ifData struct {\n\tType       uint8\n\tPhysical   uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tLink_state uint8\n\tVhid       uint8\n\tDatalen    uint16\n\tMtu        uint32\n\tMetric     uint32\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tOqdrops    uint64\n\tNoproto    uint64\n\tHwassist   uint64\n\t_          [8]byte\n\t_          [16]byte\n}\n\ntype IfData struct {\n\tType        uint8\n\tPhysical    uint8\n\tAddrlen     uint8\n\tHdrlen      uint8\n\tLink_state  uint8\n\tSpare_char1 uint8\n\tSpare_char2 uint8\n\tDatalen     uint8\n\tMtu         uint64\n\tMetric      uint64\n\tBaudrate    uint64\n\tIpackets    uint64\n\tIerrors     uint64\n\tOpackets    uint64\n\tOerrors     uint64\n\tCollisions  uint64\n\tIbytes      uint64\n\tObytes      uint64\n\tImcasts     uint64\n\tOmcasts     uint64\n\tIqdrops     uint64\n\tNoproto     uint64\n\tHwassist    uint64\n\tEpoch       int64\n\tLastchange  Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n\tMetric  int32\n}\n\ntype IfmaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tName    [16]int8\n\tWhat    uint16\n}\n\ntype RtMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\t_       uint16\n\tFlags   int32\n\tAddrs   int32\n\tPid     int32\n\tSeq     int32\n\tErrno   int32\n\tFmask   int32\n\tInits   uint64\n\tRmx     RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint64\n\tMtu      uint64\n\tHopcount uint64\n\tExpire   uint64\n\tRecvpipe uint64\n\tSendpipe uint64\n\tSsthresh uint64\n\tRtt      uint64\n\tRttvar   uint64\n\tPksent   uint64\n\tWeight   uint64\n\tNhidx    uint64\n\tFiller   [2]uint64\n}\n\nconst (\n\tSizeofBpfVersion    = 0x4\n\tSizeofBpfStat       = 0x8\n\tSizeofBpfZbuf       = 0x18\n\tSizeofBpfProgram    = 0x10\n\tSizeofBpfInsn       = 0x8\n\tSizeofBpfHdr        = 0x20\n\tSizeofBpfZbufHeader = 0x20\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfZbuf struct {\n\tBufa   *byte\n\tBufb   *byte\n\tBuflen uint64\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  Timeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\t_       [6]byte\n}\n\ntype BpfZbufHeader struct {\n\tKernel_gen uint32\n\tKernel_len uint32\n\tUser_gen   uint32\n\t_          [5]uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x100\n\tAT_SYMLINK_NOFOLLOW = 0x200\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_REMOVEDIR        = 0x800\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR      = 0x8\n\tPOLLHUP      = 0x10\n\tPOLLIN       = 0x1\n\tPOLLINIGNEOF = 0x2000\n\tPOLLNVAL     = 0x20\n\tPOLLOUT      = 0x4\n\tPOLLPRI      = 0x2\n\tPOLLRDBAND   = 0x80\n\tPOLLRDNORM   = 0x40\n\tPOLLWRBAND   = 0x100\n\tPOLLWRNORM   = 0x4\n\tPOLLRDHUP    = 0x4000\n)\n\ntype CapRights struct {\n\tRights [2]uint64\n}\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofClockinfo = 0x14\n\ntype Clockinfo struct {\n\tHz     int32\n\tTick   int32\n\tSpare  int32\n\tStathz int32\n\tProfhz int32\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/ztypes_linux.go",
    "content": "// Code generated by mkmerge; DO NOT EDIT.\n\n//go:build linux\n\npackage unix\n\nconst (\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLongLong = 0x8\n\tPathMax        = 0x1000\n)\n\ntype (\n\t_C_short int16\n\t_C_int   int32\n\n\t_C_long_long int64\n)\n\ntype ItimerSpec struct {\n\tInterval Timespec\n\tValue    Timespec\n}\n\ntype Itimerval struct {\n\tInterval Timeval\n\tValue    Timeval\n}\n\nconst (\n\tADJ_OFFSET            = 0x1\n\tADJ_FREQUENCY         = 0x2\n\tADJ_MAXERROR          = 0x4\n\tADJ_ESTERROR          = 0x8\n\tADJ_STATUS            = 0x10\n\tADJ_TIMECONST         = 0x20\n\tADJ_TAI               = 0x80\n\tADJ_SETOFFSET         = 0x100\n\tADJ_MICRO             = 0x1000\n\tADJ_NANO              = 0x2000\n\tADJ_TICK              = 0x4000\n\tADJ_OFFSET_SINGLESHOT = 0x8001\n\tADJ_OFFSET_SS_READ    = 0xa001\n)\n\nconst (\n\tSTA_PLL       = 0x1\n\tSTA_PPSFREQ   = 0x2\n\tSTA_PPSTIME   = 0x4\n\tSTA_FLL       = 0x8\n\tSTA_INS       = 0x10\n\tSTA_DEL       = 0x20\n\tSTA_UNSYNC    = 0x40\n\tSTA_FREQHOLD  = 0x80\n\tSTA_PPSSIGNAL = 0x100\n\tSTA_PPSJITTER = 0x200\n\tSTA_PPSWANDER = 0x400\n\tSTA_PPSERROR  = 0x800\n\tSTA_CLOCKERR  = 0x1000\n\tSTA_NANO      = 0x2000\n\tSTA_MODE      = 0x4000\n\tSTA_CLK       = 0x8000\n)\n\nconst (\n\tTIME_OK    = 0x0\n\tTIME_INS   = 0x1\n\tTIME_DEL   = 0x2\n\tTIME_OOP   = 0x3\n\tTIME_WAIT  = 0x4\n\tTIME_ERROR = 0x5\n\tTIME_BAD   = 0x5\n)\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype StatxTimestamp struct {\n\tSec  int64\n\tNsec uint32\n\t_    int32\n}\n\ntype Statx_t struct {\n\tMask                      uint32\n\tBlksize                   uint32\n\tAttributes                uint64\n\tNlink                     uint32\n\tUid                       uint32\n\tGid                       uint32\n\tMode                      uint16\n\t_                         [1]uint16\n\tIno                       uint64\n\tSize                      uint64\n\tBlocks                    uint64\n\tAttributes_mask           uint64\n\tAtime                     StatxTimestamp\n\tBtime                     StatxTimestamp\n\tCtime                     StatxTimestamp\n\tMtime                     StatxTimestamp\n\tRdev_major                uint32\n\tRdev_minor                uint32\n\tDev_major                 uint32\n\tDev_minor                 uint32\n\tMnt_id                    uint64\n\tDio_mem_align             uint32\n\tDio_offset_align          uint32\n\tSubvol                    uint64\n\tAtomic_write_unit_min     uint32\n\tAtomic_write_unit_max     uint32\n\tAtomic_write_segments_max uint32\n\tDio_read_offset_align     uint32\n\tAtomic_write_unit_max_opt uint32\n\t_                         [1]uint32\n\t_                         [8]uint64\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\ntype FileCloneRange struct {\n\tSrc_fd      int64\n\tSrc_offset  uint64\n\tSrc_length  uint64\n\tDest_offset uint64\n}\n\ntype RawFileDedupeRange struct {\n\tSrc_offset uint64\n\tSrc_length uint64\n\tDest_count uint16\n\tReserved1  uint16\n\tReserved2  uint32\n}\n\ntype RawFileDedupeRangeInfo struct {\n\tDest_fd       int64\n\tDest_offset   uint64\n\tBytes_deduped uint64\n\tStatus        int32\n\tReserved      uint32\n}\n\nconst (\n\tSizeofRawFileDedupeRange     = 0x18\n\tSizeofRawFileDedupeRangeInfo = 0x20\n\tFILE_DEDUPE_RANGE_SAME       = 0x0\n\tFILE_DEDUPE_RANGE_DIFFERS    = 0x1\n)\n\ntype FscryptPolicy struct {\n\tVersion                   uint8\n\tContents_encryption_mode  uint8\n\tFilenames_encryption_mode uint8\n\tFlags                     uint8\n\tMaster_key_descriptor     [8]uint8\n}\n\ntype FscryptKey struct {\n\tMode uint32\n\tRaw  [64]uint8\n\tSize uint32\n}\n\ntype FscryptPolicyV1 struct {\n\tVersion                   uint8\n\tContents_encryption_mode  uint8\n\tFilenames_encryption_mode uint8\n\tFlags                     uint8\n\tMaster_key_descriptor     [8]uint8\n}\n\ntype FscryptPolicyV2 struct {\n\tVersion                   uint8\n\tContents_encryption_mode  uint8\n\tFilenames_encryption_mode uint8\n\tFlags                     uint8\n\tLog2_data_unit_size       uint8\n\t_                         [3]uint8\n\tMaster_key_identifier     [16]uint8\n}\n\ntype FscryptGetPolicyExArg struct {\n\tSize   uint64\n\tPolicy [24]byte\n}\n\ntype FscryptKeySpecifier struct {\n\tType uint32\n\t_    uint32\n\tU    [32]byte\n}\n\ntype FscryptAddKeyArg struct {\n\tKey_spec FscryptKeySpecifier\n\tRaw_size uint32\n\tKey_id   uint32\n\tFlags    uint32\n\t_        [7]uint32\n}\n\ntype FscryptRemoveKeyArg struct {\n\tKey_spec             FscryptKeySpecifier\n\tRemoval_status_flags uint32\n\t_                    [5]uint32\n}\n\ntype FscryptGetKeyStatusArg struct {\n\tKey_spec     FscryptKeySpecifier\n\t_            [6]uint32\n\tStatus       uint32\n\tStatus_flags uint32\n\tUser_count   uint32\n\t_            [13]uint32\n}\n\ntype DmIoctl struct {\n\tVersion      [3]uint32\n\tData_size    uint32\n\tData_start   uint32\n\tTarget_count uint32\n\tOpen_count   int32\n\tFlags        uint32\n\tEvent_nr     uint32\n\t_            uint32\n\tDev          uint64\n\tName         [128]byte\n\tUuid         [129]byte\n\tData         [7]byte\n}\n\ntype DmTargetSpec struct {\n\tSector_start uint64\n\tLength       uint64\n\tStatus       int32\n\tNext         uint32\n\tTarget_type  [16]byte\n}\n\ntype DmTargetDeps struct {\n\tCount uint32\n\t_     uint32\n}\n\ntype DmTargetVersions struct {\n\tNext    uint32\n\tVersion [3]uint32\n}\n\ntype DmTargetMsg struct {\n\tSector uint64\n}\n\nconst (\n\tSizeofDmIoctl      = 0x138\n\tSizeofDmTargetSpec = 0x28\n)\n\ntype KeyctlDHParams struct {\n\tPrivate int32\n\tPrime   int32\n\tBase    int32\n}\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n)\n\ntype RawSockaddrInet4 struct {\n\tFamily uint16\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]uint8\n}\n\ntype RawSockaddrInet6 struct {\n\tFamily   uint16\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tFamily uint16\n\tPath   [108]int8\n}\n\ntype RawSockaddrLinklayer struct {\n\tFamily   uint16\n\tProtocol uint16\n\tIfindex  int32\n\tHatype   uint16\n\tPkttype  uint8\n\tHalen    uint8\n\tAddr     [8]uint8\n}\n\ntype RawSockaddrNetlink struct {\n\tFamily uint16\n\tPad    uint16\n\tPid    uint32\n\tGroups uint32\n}\n\ntype RawSockaddrHCI struct {\n\tFamily  uint16\n\tDev     uint16\n\tChannel uint16\n}\n\ntype RawSockaddrL2 struct {\n\tFamily      uint16\n\tPsm         uint16\n\tBdaddr      [6]uint8\n\tCid         uint16\n\tBdaddr_type uint8\n\t_           [1]byte\n}\n\ntype RawSockaddrRFCOMM struct {\n\tFamily  uint16\n\tBdaddr  [6]uint8\n\tChannel uint8\n\t_       [1]byte\n}\n\ntype RawSockaddrCAN struct {\n\tFamily  uint16\n\tIfindex int32\n\tAddr    [16]byte\n}\n\ntype RawSockaddrALG struct {\n\tFamily uint16\n\tType   [14]uint8\n\tFeat   uint32\n\tMask   uint32\n\tName   [64]uint8\n}\n\ntype RawSockaddrVM struct {\n\tFamily    uint16\n\tReserved1 uint16\n\tPort      uint32\n\tCid       uint32\n\tFlags     uint8\n\tZero      [3]uint8\n}\n\ntype RawSockaddrXDP struct {\n\tFamily         uint16\n\tFlags          uint16\n\tIfindex        uint32\n\tQueue_id       uint32\n\tShared_umem_fd uint32\n}\n\ntype RawSockaddrPPPoX [0x1e]byte\n\ntype RawSockaddrTIPC struct {\n\tFamily   uint16\n\tAddrtype uint8\n\tScope    int8\n\tAddr     [12]byte\n}\n\ntype RawSockaddrL2TPIP struct {\n\tFamily  uint16\n\tUnused  uint16\n\tAddr    [4]byte /* in_addr */\n\tConn_id uint32\n\t_       [4]uint8\n}\n\ntype RawSockaddrL2TPIP6 struct {\n\tFamily   uint16\n\tUnused   uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n\tConn_id  uint32\n}\n\ntype RawSockaddrIUCV struct {\n\tFamily  uint16\n\tPort    uint16\n\tAddr    uint32\n\tNodeid  [8]int8\n\tUser_id [8]int8\n\tName    [8]int8\n}\n\ntype RawSockaddrNFC struct {\n\tSa_family    uint16\n\tDev_idx      uint32\n\tTarget_idx   uint32\n\tNfc_protocol uint32\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPMreqn struct {\n\tMultiaddr [4]byte /* in_addr */\n\tAddress   [4]byte /* in_addr */\n\tIfindex   int32\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype PacketMreq struct {\n\tIfindex int32\n\tType    uint16\n\tAlen    uint16\n\tAddress [8]uint8\n}\n\ntype Inet4Pktinfo struct {\n\tIfindex  int32\n\tSpec_dst [4]byte /* in_addr */\n\tAddr     [4]byte /* in_addr */\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tData [8]uint32\n}\n\ntype Ucred struct {\n\tPid int32\n\tUid uint32\n\tGid uint32\n}\n\ntype TCPInfo struct {\n\tState                uint8\n\tCa_state             uint8\n\tRetransmits          uint8\n\tProbes               uint8\n\tBackoff              uint8\n\tOptions              uint8\n\tRto                  uint32\n\tAto                  uint32\n\tSnd_mss              uint32\n\tRcv_mss              uint32\n\tUnacked              uint32\n\tSacked               uint32\n\tLost                 uint32\n\tRetrans              uint32\n\tFackets              uint32\n\tLast_data_sent       uint32\n\tLast_ack_sent        uint32\n\tLast_data_recv       uint32\n\tLast_ack_recv        uint32\n\tPmtu                 uint32\n\tRcv_ssthresh         uint32\n\tRtt                  uint32\n\tRttvar               uint32\n\tSnd_ssthresh         uint32\n\tSnd_cwnd             uint32\n\tAdvmss               uint32\n\tReordering           uint32\n\tRcv_rtt              uint32\n\tRcv_space            uint32\n\tTotal_retrans        uint32\n\tPacing_rate          uint64\n\tMax_pacing_rate      uint64\n\tBytes_acked          uint64\n\tBytes_received       uint64\n\tSegs_out             uint32\n\tSegs_in              uint32\n\tNotsent_bytes        uint32\n\tMin_rtt              uint32\n\tData_segs_in         uint32\n\tData_segs_out        uint32\n\tDelivery_rate        uint64\n\tBusy_time            uint64\n\tRwnd_limited         uint64\n\tSndbuf_limited       uint64\n\tDelivered            uint32\n\tDelivered_ce         uint32\n\tBytes_sent           uint64\n\tBytes_retrans        uint64\n\tDsack_dups           uint32\n\tReord_seen           uint32\n\tRcv_ooopack          uint32\n\tSnd_wnd              uint32\n\tRcv_wnd              uint32\n\tRehash               uint32\n\tTotal_rto            uint16\n\tTotal_rto_recoveries uint16\n\tTotal_rto_time       uint32\n}\n\ntype TCPVegasInfo struct {\n\tEnabled uint32\n\tRttcnt  uint32\n\tRtt     uint32\n\tMinrtt  uint32\n}\n\ntype TCPDCTCPInfo struct {\n\tEnabled  uint16\n\tCe_state uint16\n\tAlpha    uint32\n\tAb_ecn   uint32\n\tAb_tot   uint32\n}\n\ntype TCPBBRInfo struct {\n\tBw_lo       uint32\n\tBw_hi       uint32\n\tMin_rtt     uint32\n\tPacing_gain uint32\n\tCwnd_gain   uint32\n}\n\ntype CanFilter struct {\n\tId   uint32\n\tMask uint32\n}\n\ntype TCPRepairOpt struct {\n\tCode uint32\n\tVal  uint32\n}\n\nconst (\n\tSizeofSockaddrInet4     = 0x10\n\tSizeofSockaddrInet6     = 0x1c\n\tSizeofSockaddrAny       = 0x70\n\tSizeofSockaddrUnix      = 0x6e\n\tSizeofSockaddrLinklayer = 0x14\n\tSizeofSockaddrNetlink   = 0xc\n\tSizeofSockaddrHCI       = 0x6\n\tSizeofSockaddrL2        = 0xe\n\tSizeofSockaddrRFCOMM    = 0xa\n\tSizeofSockaddrCAN       = 0x18\n\tSizeofSockaddrALG       = 0x58\n\tSizeofSockaddrVM        = 0x10\n\tSizeofSockaddrXDP       = 0x10\n\tSizeofSockaddrPPPoX     = 0x1e\n\tSizeofSockaddrTIPC      = 0x10\n\tSizeofSockaddrL2TPIP    = 0x10\n\tSizeofSockaddrL2TPIP6   = 0x20\n\tSizeofSockaddrIUCV      = 0x20\n\tSizeofSockaddrNFC       = 0x10\n\tSizeofLinger            = 0x8\n\tSizeofIPMreq            = 0x8\n\tSizeofIPMreqn           = 0xc\n\tSizeofIPv6Mreq          = 0x14\n\tSizeofPacketMreq        = 0x10\n\tSizeofInet4Pktinfo      = 0xc\n\tSizeofInet6Pktinfo      = 0x14\n\tSizeofIPv6MTUInfo       = 0x20\n\tSizeofICMPv6Filter      = 0x20\n\tSizeofUcred             = 0xc\n\tSizeofTCPInfo           = 0xf8\n\tSizeofTCPCCInfo         = 0x14\n\tSizeofCanFilter         = 0x8\n\tSizeofTCPRepairOpt      = 0x8\n)\n\nconst (\n\tNDA_UNSPEC         = 0x0\n\tNDA_DST            = 0x1\n\tNDA_LLADDR         = 0x2\n\tNDA_CACHEINFO      = 0x3\n\tNDA_PROBES         = 0x4\n\tNDA_VLAN           = 0x5\n\tNDA_PORT           = 0x6\n\tNDA_VNI            = 0x7\n\tNDA_IFINDEX        = 0x8\n\tNDA_MASTER         = 0x9\n\tNDA_LINK_NETNSID   = 0xa\n\tNDA_SRC_VNI        = 0xb\n\tNTF_USE            = 0x1\n\tNTF_SELF           = 0x2\n\tNTF_MASTER         = 0x4\n\tNTF_PROXY          = 0x8\n\tNTF_EXT_LEARNED    = 0x10\n\tNTF_OFFLOADED      = 0x20\n\tNTF_ROUTER         = 0x80\n\tNUD_INCOMPLETE     = 0x1\n\tNUD_REACHABLE      = 0x2\n\tNUD_STALE          = 0x4\n\tNUD_DELAY          = 0x8\n\tNUD_PROBE          = 0x10\n\tNUD_FAILED         = 0x20\n\tNUD_NOARP          = 0x40\n\tNUD_PERMANENT      = 0x80\n\tNUD_NONE           = 0x0\n\tIFA_UNSPEC         = 0x0\n\tIFA_ADDRESS        = 0x1\n\tIFA_LOCAL          = 0x2\n\tIFA_LABEL          = 0x3\n\tIFA_BROADCAST      = 0x4\n\tIFA_ANYCAST        = 0x5\n\tIFA_CACHEINFO      = 0x6\n\tIFA_MULTICAST      = 0x7\n\tIFA_FLAGS          = 0x8\n\tIFA_RT_PRIORITY    = 0x9\n\tIFA_TARGET_NETNSID = 0xa\n\tIFAL_LABEL         = 0x2\n\tIFAL_ADDRESS       = 0x1\n\tRT_SCOPE_UNIVERSE  = 0x0\n\tRT_SCOPE_SITE      = 0xc8\n\tRT_SCOPE_LINK      = 0xfd\n\tRT_SCOPE_HOST      = 0xfe\n\tRT_SCOPE_NOWHERE   = 0xff\n\tRT_TABLE_UNSPEC    = 0x0\n\tRT_TABLE_COMPAT    = 0xfc\n\tRT_TABLE_DEFAULT   = 0xfd\n\tRT_TABLE_MAIN      = 0xfe\n\tRT_TABLE_LOCAL     = 0xff\n\tRT_TABLE_MAX       = 0xffffffff\n\tRTA_UNSPEC         = 0x0\n\tRTA_DST            = 0x1\n\tRTA_SRC            = 0x2\n\tRTA_IIF            = 0x3\n\tRTA_OIF            = 0x4\n\tRTA_GATEWAY        = 0x5\n\tRTA_PRIORITY       = 0x6\n\tRTA_PREFSRC        = 0x7\n\tRTA_METRICS        = 0x8\n\tRTA_MULTIPATH      = 0x9\n\tRTA_FLOW           = 0xb\n\tRTA_CACHEINFO      = 0xc\n\tRTA_TABLE          = 0xf\n\tRTA_MARK           = 0x10\n\tRTA_MFC_STATS      = 0x11\n\tRTA_VIA            = 0x12\n\tRTA_NEWDST         = 0x13\n\tRTA_PREF           = 0x14\n\tRTA_ENCAP_TYPE     = 0x15\n\tRTA_ENCAP          = 0x16\n\tRTA_EXPIRES        = 0x17\n\tRTA_PAD            = 0x18\n\tRTA_UID            = 0x19\n\tRTA_TTL_PROPAGATE  = 0x1a\n\tRTA_IP_PROTO       = 0x1b\n\tRTA_SPORT          = 0x1c\n\tRTA_DPORT          = 0x1d\n\tRTN_UNSPEC         = 0x0\n\tRTN_UNICAST        = 0x1\n\tRTN_LOCAL          = 0x2\n\tRTN_BROADCAST      = 0x3\n\tRTN_ANYCAST        = 0x4\n\tRTN_MULTICAST      = 0x5\n\tRTN_BLACKHOLE      = 0x6\n\tRTN_UNREACHABLE    = 0x7\n\tRTN_PROHIBIT       = 0x8\n\tRTN_THROW          = 0x9\n\tRTN_NAT            = 0xa\n\tRTN_XRESOLVE       = 0xb\n\tSizeofNlMsghdr     = 0x10\n\tSizeofNlMsgerr     = 0x14\n\tSizeofRtGenmsg     = 0x1\n\tSizeofNlAttr       = 0x4\n\tSizeofRtAttr       = 0x4\n\tSizeofIfInfomsg    = 0x10\n\tSizeofIfAddrmsg    = 0x8\n\tSizeofIfAddrlblmsg = 0xc\n\tSizeofIfaCacheinfo = 0x10\n\tSizeofRtMsg        = 0xc\n\tSizeofRtNexthop    = 0x8\n\tSizeofNdUseroptmsg = 0x10\n\tSizeofNdMsg        = 0xc\n)\n\ntype NlMsghdr struct {\n\tLen   uint32\n\tType  uint16\n\tFlags uint16\n\tSeq   uint32\n\tPid   uint32\n}\n\ntype NlMsgerr struct {\n\tError int32\n\tMsg   NlMsghdr\n}\n\ntype RtGenmsg struct {\n\tFamily uint8\n}\n\ntype NlAttr struct {\n\tLen  uint16\n\tType uint16\n}\n\ntype RtAttr struct {\n\tLen  uint16\n\tType uint16\n}\n\ntype IfInfomsg struct {\n\tFamily uint8\n\t_      uint8\n\tType   uint16\n\tIndex  int32\n\tFlags  uint32\n\tChange uint32\n}\n\ntype IfAddrmsg struct {\n\tFamily    uint8\n\tPrefixlen uint8\n\tFlags     uint8\n\tScope     uint8\n\tIndex     uint32\n}\n\ntype IfAddrlblmsg struct {\n\tFamily    uint8\n\t_         uint8\n\tPrefixlen uint8\n\tFlags     uint8\n\tIndex     uint32\n\tSeq       uint32\n}\n\ntype IfaCacheinfo struct {\n\tPrefered uint32\n\tValid    uint32\n\tCstamp   uint32\n\tTstamp   uint32\n}\n\ntype RtMsg struct {\n\tFamily   uint8\n\tDst_len  uint8\n\tSrc_len  uint8\n\tTos      uint8\n\tTable    uint8\n\tProtocol uint8\n\tScope    uint8\n\tType     uint8\n\tFlags    uint32\n}\n\ntype RtNexthop struct {\n\tLen     uint16\n\tFlags   uint8\n\tHops    uint8\n\tIfindex int32\n}\n\ntype NdUseroptmsg struct {\n\tFamily    uint8\n\tPad1      uint8\n\tOpts_len  uint16\n\tIfindex   int32\n\tIcmp_type uint8\n\tIcmp_code uint8\n\tPad2      uint16\n\tPad3      uint32\n}\n\ntype NdMsg struct {\n\tFamily  uint8\n\tPad1    uint8\n\tPad2    uint16\n\tIfindex int32\n\tState   uint16\n\tFlags   uint8\n\tType    uint8\n}\n\nconst (\n\tICMP_FILTER = 0x1\n\n\tICMPV6_FILTER             = 0x1\n\tICMPV6_FILTER_BLOCK       = 0x1\n\tICMPV6_FILTER_BLOCKOTHERS = 0x3\n\tICMPV6_FILTER_PASS        = 0x2\n\tICMPV6_FILTER_PASSONLY    = 0x4\n)\n\nconst (\n\tSizeofSockFilter = 0x8\n)\n\ntype SockFilter struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype SockFprog struct {\n\tLen    uint16\n\tFilter *SockFilter\n}\n\ntype InotifyEvent struct {\n\tWd     int32\n\tMask   uint32\n\tCookie uint32\n\tLen    uint32\n}\n\nconst SizeofInotifyEvent = 0x10\n\nconst SI_LOAD_SHIFT = 0x10\n\ntype Utsname struct {\n\tSysname    [65]byte\n\tNodename   [65]byte\n\tRelease    [65]byte\n\tVersion    [65]byte\n\tMachine    [65]byte\n\tDomainname [65]byte\n}\n\nconst (\n\tAT_EMPTY_PATH   = 0x1000\n\tAT_FDCWD        = -0x64\n\tAT_NO_AUTOMOUNT = 0x800\n\tAT_REMOVEDIR    = 0x200\n\n\tAT_STATX_SYNC_AS_STAT = 0x0\n\tAT_STATX_FORCE_SYNC   = 0x2000\n\tAT_STATX_DONT_SYNC    = 0x4000\n\n\tAT_RECURSIVE = 0x8000\n\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_SYMLINK_NOFOLLOW = 0x100\n\n\tAT_EACCESS = 0x200\n\n\tOPEN_TREE_CLONE = 0x1\n\n\tMOVE_MOUNT_F_SYMLINKS   = 0x1\n\tMOVE_MOUNT_F_AUTOMOUNTS = 0x2\n\tMOVE_MOUNT_F_EMPTY_PATH = 0x4\n\tMOVE_MOUNT_T_SYMLINKS   = 0x10\n\tMOVE_MOUNT_T_AUTOMOUNTS = 0x20\n\tMOVE_MOUNT_T_EMPTY_PATH = 0x40\n\tMOVE_MOUNT_SET_GROUP    = 0x100\n\n\tFSOPEN_CLOEXEC = 0x1\n\n\tFSPICK_CLOEXEC          = 0x1\n\tFSPICK_SYMLINK_NOFOLLOW = 0x2\n\tFSPICK_NO_AUTOMOUNT     = 0x4\n\tFSPICK_EMPTY_PATH       = 0x8\n\n\tFSMOUNT_CLOEXEC = 0x1\n\n\tFSCONFIG_SET_FLAG        = 0x0\n\tFSCONFIG_SET_STRING      = 0x1\n\tFSCONFIG_SET_BINARY      = 0x2\n\tFSCONFIG_SET_PATH        = 0x3\n\tFSCONFIG_SET_PATH_EMPTY  = 0x4\n\tFSCONFIG_SET_FD          = 0x5\n\tFSCONFIG_CMD_CREATE      = 0x6\n\tFSCONFIG_CMD_RECONFIGURE = 0x7\n)\n\ntype OpenHow struct {\n\tFlags   uint64\n\tMode    uint64\n\tResolve uint64\n}\n\nconst SizeofOpenHow = 0x18\n\nconst (\n\tRESOLVE_BENEATH       = 0x8\n\tRESOLVE_IN_ROOT       = 0x10\n\tRESOLVE_NO_MAGICLINKS = 0x2\n\tRESOLVE_NO_SYMLINKS   = 0x4\n\tRESOLVE_NO_XDEV       = 0x1\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLIN   = 0x1\n\tPOLLPRI  = 0x2\n\tPOLLOUT  = 0x4\n\tPOLLERR  = 0x8\n\tPOLLHUP  = 0x10\n\tPOLLNVAL = 0x20\n)\n\ntype sigset_argpack struct {\n\tss    *Sigset_t\n\tssLen uintptr\n}\n\ntype SignalfdSiginfo struct {\n\tSigno     uint32\n\tErrno     int32\n\tCode      int32\n\tPid       uint32\n\tUid       uint32\n\tFd        int32\n\tTid       uint32\n\tBand      uint32\n\tOverrun   uint32\n\tTrapno    uint32\n\tStatus    int32\n\tInt       int32\n\tPtr       uint64\n\tUtime     uint64\n\tStime     uint64\n\tAddr      uint64\n\tAddr_lsb  uint16\n\t_         uint16\n\tSyscall   int32\n\tCall_addr uint64\n\tArch      uint32\n\t_         [28]uint8\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tTASKSTATS_CMD_UNSPEC                  = 0x0\n\tTASKSTATS_CMD_GET                     = 0x1\n\tTASKSTATS_CMD_NEW                     = 0x2\n\tTASKSTATS_TYPE_UNSPEC                 = 0x0\n\tTASKSTATS_TYPE_PID                    = 0x1\n\tTASKSTATS_TYPE_TGID                   = 0x2\n\tTASKSTATS_TYPE_STATS                  = 0x3\n\tTASKSTATS_TYPE_AGGR_PID               = 0x4\n\tTASKSTATS_TYPE_AGGR_TGID              = 0x5\n\tTASKSTATS_TYPE_NULL                   = 0x6\n\tTASKSTATS_CMD_ATTR_UNSPEC             = 0x0\n\tTASKSTATS_CMD_ATTR_PID                = 0x1\n\tTASKSTATS_CMD_ATTR_TGID               = 0x2\n\tTASKSTATS_CMD_ATTR_REGISTER_CPUMASK   = 0x3\n\tTASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4\n)\n\ntype CGroupStats struct {\n\tSleeping        uint64\n\tRunning         uint64\n\tStopped         uint64\n\tUninterruptible uint64\n\tIo_wait         uint64\n}\n\nconst (\n\tCGROUPSTATS_CMD_UNSPEC        = 0x3\n\tCGROUPSTATS_CMD_GET           = 0x4\n\tCGROUPSTATS_CMD_NEW           = 0x5\n\tCGROUPSTATS_TYPE_UNSPEC       = 0x0\n\tCGROUPSTATS_TYPE_CGROUP_STATS = 0x1\n\tCGROUPSTATS_CMD_ATTR_UNSPEC   = 0x0\n\tCGROUPSTATS_CMD_ATTR_FD       = 0x1\n)\n\ntype Genlmsghdr struct {\n\tCmd      uint8\n\tVersion  uint8\n\tReserved uint16\n}\n\nconst (\n\tCTRL_CMD_UNSPEC            = 0x0\n\tCTRL_CMD_NEWFAMILY         = 0x1\n\tCTRL_CMD_DELFAMILY         = 0x2\n\tCTRL_CMD_GETFAMILY         = 0x3\n\tCTRL_CMD_NEWOPS            = 0x4\n\tCTRL_CMD_DELOPS            = 0x5\n\tCTRL_CMD_GETOPS            = 0x6\n\tCTRL_CMD_NEWMCAST_GRP      = 0x7\n\tCTRL_CMD_DELMCAST_GRP      = 0x8\n\tCTRL_CMD_GETMCAST_GRP      = 0x9\n\tCTRL_CMD_GETPOLICY         = 0xa\n\tCTRL_ATTR_UNSPEC           = 0x0\n\tCTRL_ATTR_FAMILY_ID        = 0x1\n\tCTRL_ATTR_FAMILY_NAME      = 0x2\n\tCTRL_ATTR_VERSION          = 0x3\n\tCTRL_ATTR_HDRSIZE          = 0x4\n\tCTRL_ATTR_MAXATTR          = 0x5\n\tCTRL_ATTR_OPS              = 0x6\n\tCTRL_ATTR_MCAST_GROUPS     = 0x7\n\tCTRL_ATTR_POLICY           = 0x8\n\tCTRL_ATTR_OP_POLICY        = 0x9\n\tCTRL_ATTR_OP               = 0xa\n\tCTRL_ATTR_OP_UNSPEC        = 0x0\n\tCTRL_ATTR_OP_ID            = 0x1\n\tCTRL_ATTR_OP_FLAGS         = 0x2\n\tCTRL_ATTR_MCAST_GRP_UNSPEC = 0x0\n\tCTRL_ATTR_MCAST_GRP_NAME   = 0x1\n\tCTRL_ATTR_MCAST_GRP_ID     = 0x2\n\tCTRL_ATTR_POLICY_UNSPEC    = 0x0\n\tCTRL_ATTR_POLICY_DO        = 0x1\n\tCTRL_ATTR_POLICY_DUMP      = 0x2\n\tCTRL_ATTR_POLICY_DUMP_MAX  = 0x2\n)\n\nconst (\n\t_CPU_SETSIZE = 0x400\n)\n\nconst (\n\tBDADDR_BREDR     = 0x0\n\tBDADDR_LE_PUBLIC = 0x1\n\tBDADDR_LE_RANDOM = 0x2\n)\n\ntype PerfEventAttr struct {\n\tType               uint32\n\tSize               uint32\n\tConfig             uint64\n\tSample             uint64\n\tSample_type        uint64\n\tRead_format        uint64\n\tBits               uint64\n\tWakeup             uint32\n\tBp_type            uint32\n\tExt1               uint64\n\tExt2               uint64\n\tBranch_sample_type uint64\n\tSample_regs_user   uint64\n\tSample_stack_user  uint32\n\tClockid            int32\n\tSample_regs_intr   uint64\n\tAux_watermark      uint32\n\tSample_max_stack   uint16\n\t_                  uint16\n\tAux_sample_size    uint32\n\t_                  uint32\n\tSig_data           uint64\n}\n\ntype PerfEventMmapPage struct {\n\tVersion        uint32\n\tCompat_version uint32\n\tLock           uint32\n\tIndex          uint32\n\tOffset         int64\n\tTime_enabled   uint64\n\tTime_running   uint64\n\tCapabilities   uint64\n\tPmc_width      uint16\n\tTime_shift     uint16\n\tTime_mult      uint32\n\tTime_offset    uint64\n\tTime_zero      uint64\n\tSize           uint32\n\t_              uint32\n\tTime_cycles    uint64\n\tTime_mask      uint64\n\t_              [928]uint8\n\tData_head      uint64\n\tData_tail      uint64\n\tData_offset    uint64\n\tData_size      uint64\n\tAux_head       uint64\n\tAux_tail       uint64\n\tAux_offset     uint64\n\tAux_size       uint64\n}\n\nconst (\n\tPerfBitDisabled               uint64 = CBitFieldMaskBit0\n\tPerfBitInherit                       = CBitFieldMaskBit1\n\tPerfBitPinned                        = CBitFieldMaskBit2\n\tPerfBitExclusive                     = CBitFieldMaskBit3\n\tPerfBitExcludeUser                   = CBitFieldMaskBit4\n\tPerfBitExcludeKernel                 = CBitFieldMaskBit5\n\tPerfBitExcludeHv                     = CBitFieldMaskBit6\n\tPerfBitExcludeIdle                   = CBitFieldMaskBit7\n\tPerfBitMmap                          = CBitFieldMaskBit8\n\tPerfBitComm                          = CBitFieldMaskBit9\n\tPerfBitFreq                          = CBitFieldMaskBit10\n\tPerfBitInheritStat                   = CBitFieldMaskBit11\n\tPerfBitEnableOnExec                  = CBitFieldMaskBit12\n\tPerfBitTask                          = CBitFieldMaskBit13\n\tPerfBitWatermark                     = CBitFieldMaskBit14\n\tPerfBitPreciseIPBit1                 = CBitFieldMaskBit15\n\tPerfBitPreciseIPBit2                 = CBitFieldMaskBit16\n\tPerfBitMmapData                      = CBitFieldMaskBit17\n\tPerfBitSampleIDAll                   = CBitFieldMaskBit18\n\tPerfBitExcludeHost                   = CBitFieldMaskBit19\n\tPerfBitExcludeGuest                  = CBitFieldMaskBit20\n\tPerfBitExcludeCallchainKernel        = CBitFieldMaskBit21\n\tPerfBitExcludeCallchainUser          = CBitFieldMaskBit22\n\tPerfBitMmap2                         = CBitFieldMaskBit23\n\tPerfBitCommExec                      = CBitFieldMaskBit24\n\tPerfBitUseClockID                    = CBitFieldMaskBit25\n\tPerfBitContextSwitch                 = CBitFieldMaskBit26\n\tPerfBitWriteBackward                 = CBitFieldMaskBit27\n)\n\nconst (\n\tPERF_TYPE_HARDWARE                    = 0x0\n\tPERF_TYPE_SOFTWARE                    = 0x1\n\tPERF_TYPE_TRACEPOINT                  = 0x2\n\tPERF_TYPE_HW_CACHE                    = 0x3\n\tPERF_TYPE_RAW                         = 0x4\n\tPERF_TYPE_BREAKPOINT                  = 0x5\n\tPERF_TYPE_MAX                         = 0x6\n\tPERF_COUNT_HW_CPU_CYCLES              = 0x0\n\tPERF_COUNT_HW_INSTRUCTIONS            = 0x1\n\tPERF_COUNT_HW_CACHE_REFERENCES        = 0x2\n\tPERF_COUNT_HW_CACHE_MISSES            = 0x3\n\tPERF_COUNT_HW_BRANCH_INSTRUCTIONS     = 0x4\n\tPERF_COUNT_HW_BRANCH_MISSES           = 0x5\n\tPERF_COUNT_HW_BUS_CYCLES              = 0x6\n\tPERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7\n\tPERF_COUNT_HW_STALLED_CYCLES_BACKEND  = 0x8\n\tPERF_COUNT_HW_REF_CPU_CYCLES          = 0x9\n\tPERF_COUNT_HW_MAX                     = 0xa\n\tPERF_COUNT_HW_CACHE_L1D               = 0x0\n\tPERF_COUNT_HW_CACHE_L1I               = 0x1\n\tPERF_COUNT_HW_CACHE_LL                = 0x2\n\tPERF_COUNT_HW_CACHE_DTLB              = 0x3\n\tPERF_COUNT_HW_CACHE_ITLB              = 0x4\n\tPERF_COUNT_HW_CACHE_BPU               = 0x5\n\tPERF_COUNT_HW_CACHE_NODE              = 0x6\n\tPERF_COUNT_HW_CACHE_MAX               = 0x7\n\tPERF_COUNT_HW_CACHE_OP_READ           = 0x0\n\tPERF_COUNT_HW_CACHE_OP_WRITE          = 0x1\n\tPERF_COUNT_HW_CACHE_OP_PREFETCH       = 0x2\n\tPERF_COUNT_HW_CACHE_OP_MAX            = 0x3\n\tPERF_COUNT_HW_CACHE_RESULT_ACCESS     = 0x0\n\tPERF_COUNT_HW_CACHE_RESULT_MISS       = 0x1\n\tPERF_COUNT_HW_CACHE_RESULT_MAX        = 0x2\n\tPERF_COUNT_SW_CPU_CLOCK               = 0x0\n\tPERF_COUNT_SW_TASK_CLOCK              = 0x1\n\tPERF_COUNT_SW_PAGE_FAULTS             = 0x2\n\tPERF_COUNT_SW_CONTEXT_SWITCHES        = 0x3\n\tPERF_COUNT_SW_CPU_MIGRATIONS          = 0x4\n\tPERF_COUNT_SW_PAGE_FAULTS_MIN         = 0x5\n\tPERF_COUNT_SW_PAGE_FAULTS_MAJ         = 0x6\n\tPERF_COUNT_SW_ALIGNMENT_FAULTS        = 0x7\n\tPERF_COUNT_SW_EMULATION_FAULTS        = 0x8\n\tPERF_COUNT_SW_DUMMY                   = 0x9\n\tPERF_COUNT_SW_BPF_OUTPUT              = 0xa\n\tPERF_COUNT_SW_MAX                     = 0xc\n\tPERF_SAMPLE_IP                        = 0x1\n\tPERF_SAMPLE_TID                       = 0x2\n\tPERF_SAMPLE_TIME                      = 0x4\n\tPERF_SAMPLE_ADDR                      = 0x8\n\tPERF_SAMPLE_READ                      = 0x10\n\tPERF_SAMPLE_CALLCHAIN                 = 0x20\n\tPERF_SAMPLE_ID                        = 0x40\n\tPERF_SAMPLE_CPU                       = 0x80\n\tPERF_SAMPLE_PERIOD                    = 0x100\n\tPERF_SAMPLE_STREAM_ID                 = 0x200\n\tPERF_SAMPLE_RAW                       = 0x400\n\tPERF_SAMPLE_BRANCH_STACK              = 0x800\n\tPERF_SAMPLE_REGS_USER                 = 0x1000\n\tPERF_SAMPLE_STACK_USER                = 0x2000\n\tPERF_SAMPLE_WEIGHT                    = 0x4000\n\tPERF_SAMPLE_DATA_SRC                  = 0x8000\n\tPERF_SAMPLE_IDENTIFIER                = 0x10000\n\tPERF_SAMPLE_TRANSACTION               = 0x20000\n\tPERF_SAMPLE_REGS_INTR                 = 0x40000\n\tPERF_SAMPLE_PHYS_ADDR                 = 0x80000\n\tPERF_SAMPLE_AUX                       = 0x100000\n\tPERF_SAMPLE_CGROUP                    = 0x200000\n\tPERF_SAMPLE_DATA_PAGE_SIZE            = 0x400000\n\tPERF_SAMPLE_CODE_PAGE_SIZE            = 0x800000\n\tPERF_SAMPLE_WEIGHT_STRUCT             = 0x1000000\n\tPERF_SAMPLE_MAX                       = 0x2000000\n\tPERF_SAMPLE_BRANCH_USER_SHIFT         = 0x0\n\tPERF_SAMPLE_BRANCH_KERNEL_SHIFT       = 0x1\n\tPERF_SAMPLE_BRANCH_HV_SHIFT           = 0x2\n\tPERF_SAMPLE_BRANCH_ANY_SHIFT          = 0x3\n\tPERF_SAMPLE_BRANCH_ANY_CALL_SHIFT     = 0x4\n\tPERF_SAMPLE_BRANCH_ANY_RETURN_SHIFT   = 0x5\n\tPERF_SAMPLE_BRANCH_IND_CALL_SHIFT     = 0x6\n\tPERF_SAMPLE_BRANCH_ABORT_TX_SHIFT     = 0x7\n\tPERF_SAMPLE_BRANCH_IN_TX_SHIFT        = 0x8\n\tPERF_SAMPLE_BRANCH_NO_TX_SHIFT        = 0x9\n\tPERF_SAMPLE_BRANCH_COND_SHIFT         = 0xa\n\tPERF_SAMPLE_BRANCH_CALL_STACK_SHIFT   = 0xb\n\tPERF_SAMPLE_BRANCH_IND_JUMP_SHIFT     = 0xc\n\tPERF_SAMPLE_BRANCH_CALL_SHIFT         = 0xd\n\tPERF_SAMPLE_BRANCH_NO_FLAGS_SHIFT     = 0xe\n\tPERF_SAMPLE_BRANCH_NO_CYCLES_SHIFT    = 0xf\n\tPERF_SAMPLE_BRANCH_TYPE_SAVE_SHIFT    = 0x10\n\tPERF_SAMPLE_BRANCH_HW_INDEX_SHIFT     = 0x11\n\tPERF_SAMPLE_BRANCH_PRIV_SAVE_SHIFT    = 0x12\n\tPERF_SAMPLE_BRANCH_COUNTERS           = 0x80000\n\tPERF_SAMPLE_BRANCH_MAX_SHIFT          = 0x14\n\tPERF_SAMPLE_BRANCH_USER               = 0x1\n\tPERF_SAMPLE_BRANCH_KERNEL             = 0x2\n\tPERF_SAMPLE_BRANCH_HV                 = 0x4\n\tPERF_SAMPLE_BRANCH_ANY                = 0x8\n\tPERF_SAMPLE_BRANCH_ANY_CALL           = 0x10\n\tPERF_SAMPLE_BRANCH_ANY_RETURN         = 0x20\n\tPERF_SAMPLE_BRANCH_IND_CALL           = 0x40\n\tPERF_SAMPLE_BRANCH_ABORT_TX           = 0x80\n\tPERF_SAMPLE_BRANCH_IN_TX              = 0x100\n\tPERF_SAMPLE_BRANCH_NO_TX              = 0x200\n\tPERF_SAMPLE_BRANCH_COND               = 0x400\n\tPERF_SAMPLE_BRANCH_CALL_STACK         = 0x800\n\tPERF_SAMPLE_BRANCH_IND_JUMP           = 0x1000\n\tPERF_SAMPLE_BRANCH_CALL               = 0x2000\n\tPERF_SAMPLE_BRANCH_NO_FLAGS           = 0x4000\n\tPERF_SAMPLE_BRANCH_NO_CYCLES          = 0x8000\n\tPERF_SAMPLE_BRANCH_TYPE_SAVE          = 0x10000\n\tPERF_SAMPLE_BRANCH_HW_INDEX           = 0x20000\n\tPERF_SAMPLE_BRANCH_PRIV_SAVE          = 0x40000\n\tPERF_SAMPLE_BRANCH_MAX                = 0x100000\n\tPERF_BR_UNKNOWN                       = 0x0\n\tPERF_BR_COND                          = 0x1\n\tPERF_BR_UNCOND                        = 0x2\n\tPERF_BR_IND                           = 0x3\n\tPERF_BR_CALL                          = 0x4\n\tPERF_BR_IND_CALL                      = 0x5\n\tPERF_BR_RET                           = 0x6\n\tPERF_BR_SYSCALL                       = 0x7\n\tPERF_BR_SYSRET                        = 0x8\n\tPERF_BR_COND_CALL                     = 0x9\n\tPERF_BR_COND_RET                      = 0xa\n\tPERF_BR_ERET                          = 0xb\n\tPERF_BR_IRQ                           = 0xc\n\tPERF_BR_SERROR                        = 0xd\n\tPERF_BR_NO_TX                         = 0xe\n\tPERF_BR_EXTEND_ABI                    = 0xf\n\tPERF_BR_MAX                           = 0x10\n\tPERF_SAMPLE_REGS_ABI_NONE             = 0x0\n\tPERF_SAMPLE_REGS_ABI_32               = 0x1\n\tPERF_SAMPLE_REGS_ABI_64               = 0x2\n\tPERF_TXN_ELISION                      = 0x1\n\tPERF_TXN_TRANSACTION                  = 0x2\n\tPERF_TXN_SYNC                         = 0x4\n\tPERF_TXN_ASYNC                        = 0x8\n\tPERF_TXN_RETRY                        = 0x10\n\tPERF_TXN_CONFLICT                     = 0x20\n\tPERF_TXN_CAPACITY_WRITE               = 0x40\n\tPERF_TXN_CAPACITY_READ                = 0x80\n\tPERF_TXN_MAX                          = 0x100\n\tPERF_TXN_ABORT_MASK                   = -0x100000000\n\tPERF_TXN_ABORT_SHIFT                  = 0x20\n\tPERF_FORMAT_TOTAL_TIME_ENABLED        = 0x1\n\tPERF_FORMAT_TOTAL_TIME_RUNNING        = 0x2\n\tPERF_FORMAT_ID                        = 0x4\n\tPERF_FORMAT_GROUP                     = 0x8\n\tPERF_FORMAT_LOST                      = 0x10\n\tPERF_FORMAT_MAX                       = 0x20\n\tPERF_IOC_FLAG_GROUP                   = 0x1\n\tPERF_RECORD_MMAP                      = 0x1\n\tPERF_RECORD_LOST                      = 0x2\n\tPERF_RECORD_COMM                      = 0x3\n\tPERF_RECORD_EXIT                      = 0x4\n\tPERF_RECORD_THROTTLE                  = 0x5\n\tPERF_RECORD_UNTHROTTLE                = 0x6\n\tPERF_RECORD_FORK                      = 0x7\n\tPERF_RECORD_READ                      = 0x8\n\tPERF_RECORD_SAMPLE                    = 0x9\n\tPERF_RECORD_MMAP2                     = 0xa\n\tPERF_RECORD_AUX                       = 0xb\n\tPERF_RECORD_ITRACE_START              = 0xc\n\tPERF_RECORD_LOST_SAMPLES              = 0xd\n\tPERF_RECORD_SWITCH                    = 0xe\n\tPERF_RECORD_SWITCH_CPU_WIDE           = 0xf\n\tPERF_RECORD_NAMESPACES                = 0x10\n\tPERF_RECORD_KSYMBOL                   = 0x11\n\tPERF_RECORD_BPF_EVENT                 = 0x12\n\tPERF_RECORD_CGROUP                    = 0x13\n\tPERF_RECORD_TEXT_POKE                 = 0x14\n\tPERF_RECORD_AUX_OUTPUT_HW_ID          = 0x15\n\tPERF_RECORD_MAX                       = 0x16\n\tPERF_RECORD_KSYMBOL_TYPE_UNKNOWN      = 0x0\n\tPERF_RECORD_KSYMBOL_TYPE_BPF          = 0x1\n\tPERF_RECORD_KSYMBOL_TYPE_OOL          = 0x2\n\tPERF_RECORD_KSYMBOL_TYPE_MAX          = 0x3\n\tPERF_BPF_EVENT_UNKNOWN                = 0x0\n\tPERF_BPF_EVENT_PROG_LOAD              = 0x1\n\tPERF_BPF_EVENT_PROG_UNLOAD            = 0x2\n\tPERF_BPF_EVENT_MAX                    = 0x3\n\tPERF_CONTEXT_HV                       = -0x20\n\tPERF_CONTEXT_KERNEL                   = -0x80\n\tPERF_CONTEXT_USER                     = -0x200\n\tPERF_CONTEXT_GUEST                    = -0x800\n\tPERF_CONTEXT_GUEST_KERNEL             = -0x880\n\tPERF_CONTEXT_GUEST_USER               = -0xa00\n\tPERF_CONTEXT_MAX                      = -0xfff\n)\n\ntype TCPMD5Sig struct {\n\tAddr      SockaddrStorage\n\tFlags     uint8\n\tPrefixlen uint8\n\tKeylen    uint16\n\tIfindex   int32\n\tKey       [80]uint8\n}\n\ntype HDDriveCmdHdr struct {\n\tCommand uint8\n\tNumber  uint8\n\tFeature uint8\n\tCount   uint8\n}\n\ntype HDDriveID struct {\n\tConfig         uint16\n\tCyls           uint16\n\tReserved2      uint16\n\tHeads          uint16\n\tTrack_bytes    uint16\n\tSector_bytes   uint16\n\tSectors        uint16\n\tVendor0        uint16\n\tVendor1        uint16\n\tVendor2        uint16\n\tSerial_no      [20]uint8\n\tBuf_type       uint16\n\tBuf_size       uint16\n\tEcc_bytes      uint16\n\tFw_rev         [8]uint8\n\tModel          [40]uint8\n\tMax_multsect   uint8\n\tVendor3        uint8\n\tDword_io       uint16\n\tVendor4        uint8\n\tCapability     uint8\n\tReserved50     uint16\n\tVendor5        uint8\n\tTPIO           uint8\n\tVendor6        uint8\n\tTDMA           uint8\n\tField_valid    uint16\n\tCur_cyls       uint16\n\tCur_heads      uint16\n\tCur_sectors    uint16\n\tCur_capacity0  uint16\n\tCur_capacity1  uint16\n\tMultsect       uint8\n\tMultsect_valid uint8\n\tLba_capacity   uint32\n\tDma_1word      uint16\n\tDma_mword      uint16\n\tEide_pio_modes uint16\n\tEide_dma_min   uint16\n\tEide_dma_time  uint16\n\tEide_pio       uint16\n\tEide_pio_iordy uint16\n\tWords69_70     [2]uint16\n\tWords71_74     [4]uint16\n\tQueue_depth    uint16\n\tWords76_79     [4]uint16\n\tMajor_rev_num  uint16\n\tMinor_rev_num  uint16\n\tCommand_set_1  uint16\n\tCommand_set_2  uint16\n\tCfsse          uint16\n\tCfs_enable_1   uint16\n\tCfs_enable_2   uint16\n\tCsf_default    uint16\n\tDma_ultra      uint16\n\tTrseuc         uint16\n\tTrsEuc         uint16\n\tCurAPMvalues   uint16\n\tMprc           uint16\n\tHw_config      uint16\n\tAcoustic       uint16\n\tMsrqs          uint16\n\tSxfert         uint16\n\tSal            uint16\n\tSpg            uint32\n\tLba_capacity_2 uint64\n\tWords104_125   [22]uint16\n\tLast_lun       uint16\n\tWord127        uint16\n\tDlf            uint16\n\tCsfo           uint16\n\tWords130_155   [26]uint16\n\tWord156        uint16\n\tWords157_159   [3]uint16\n\tCfa_power      uint16\n\tWords161_175   [15]uint16\n\tWords176_205   [30]uint16\n\tWords206_254   [49]uint16\n\tIntegrity_word uint16\n}\n\nconst (\n\tST_MANDLOCK    = 0x40\n\tST_NOATIME     = 0x400\n\tST_NODEV       = 0x4\n\tST_NODIRATIME  = 0x800\n\tST_NOEXEC      = 0x8\n\tST_NOSUID      = 0x2\n\tST_RDONLY      = 0x1\n\tST_RELATIME    = 0x1000\n\tST_SYNCHRONOUS = 0x10\n)\n\ntype Tpacket2Hdr struct {\n\tStatus    uint32\n\tLen       uint32\n\tSnaplen   uint32\n\tMac       uint16\n\tNet       uint16\n\tSec       uint32\n\tNsec      uint32\n\tVlan_tci  uint16\n\tVlan_tpid uint16\n\t_         [4]uint8\n}\n\ntype Tpacket3Hdr struct {\n\tNext_offset uint32\n\tSec         uint32\n\tNsec        uint32\n\tSnaplen     uint32\n\tLen         uint32\n\tStatus      uint32\n\tMac         uint16\n\tNet         uint16\n\tHv1         TpacketHdrVariant1\n\t_           [8]uint8\n}\n\ntype TpacketHdrVariant1 struct {\n\tRxhash    uint32\n\tVlan_tci  uint32\n\tVlan_tpid uint16\n\t_         uint16\n}\n\ntype TpacketBlockDesc struct {\n\tVersion uint32\n\tTo_priv uint32\n\tHdr     [40]byte\n}\n\ntype TpacketBDTS struct {\n\tSec  uint32\n\tUsec uint32\n}\n\ntype TpacketHdrV1 struct {\n\tBlock_status        uint32\n\tNum_pkts            uint32\n\tOffset_to_first_pkt uint32\n\tBlk_len             uint32\n\tSeq_num             uint64\n\tTs_first_pkt        TpacketBDTS\n\tTs_last_pkt         TpacketBDTS\n}\n\ntype TpacketReq struct {\n\tBlock_size uint32\n\tBlock_nr   uint32\n\tFrame_size uint32\n\tFrame_nr   uint32\n}\n\ntype TpacketReq3 struct {\n\tBlock_size       uint32\n\tBlock_nr         uint32\n\tFrame_size       uint32\n\tFrame_nr         uint32\n\tRetire_blk_tov   uint32\n\tSizeof_priv      uint32\n\tFeature_req_word uint32\n}\n\ntype TpacketStats struct {\n\tPackets uint32\n\tDrops   uint32\n}\n\ntype TpacketStatsV3 struct {\n\tPackets      uint32\n\tDrops        uint32\n\tFreeze_q_cnt uint32\n}\n\ntype TpacketAuxdata struct {\n\tStatus    uint32\n\tLen       uint32\n\tSnaplen   uint32\n\tMac       uint16\n\tNet       uint16\n\tVlan_tci  uint16\n\tVlan_tpid uint16\n}\n\nconst (\n\tTPACKET_V1 = 0x0\n\tTPACKET_V2 = 0x1\n\tTPACKET_V3 = 0x2\n)\n\nconst (\n\tSizeofTpacket2Hdr = 0x20\n\tSizeofTpacket3Hdr = 0x30\n\n\tSizeofTpacketStats   = 0x8\n\tSizeofTpacketStatsV3 = 0xc\n)\n\nconst (\n\tIFLA_UNSPEC                                = 0x0\n\tIFLA_ADDRESS                               = 0x1\n\tIFLA_BROADCAST                             = 0x2\n\tIFLA_IFNAME                                = 0x3\n\tIFLA_MTU                                   = 0x4\n\tIFLA_LINK                                  = 0x5\n\tIFLA_QDISC                                 = 0x6\n\tIFLA_STATS                                 = 0x7\n\tIFLA_COST                                  = 0x8\n\tIFLA_PRIORITY                              = 0x9\n\tIFLA_MASTER                                = 0xa\n\tIFLA_WIRELESS                              = 0xb\n\tIFLA_PROTINFO                              = 0xc\n\tIFLA_TXQLEN                                = 0xd\n\tIFLA_MAP                                   = 0xe\n\tIFLA_WEIGHT                                = 0xf\n\tIFLA_OPERSTATE                             = 0x10\n\tIFLA_LINKMODE                              = 0x11\n\tIFLA_LINKINFO                              = 0x12\n\tIFLA_NET_NS_PID                            = 0x13\n\tIFLA_IFALIAS                               = 0x14\n\tIFLA_NUM_VF                                = 0x15\n\tIFLA_VFINFO_LIST                           = 0x16\n\tIFLA_STATS64                               = 0x17\n\tIFLA_VF_PORTS                              = 0x18\n\tIFLA_PORT_SELF                             = 0x19\n\tIFLA_AF_SPEC                               = 0x1a\n\tIFLA_GROUP                                 = 0x1b\n\tIFLA_NET_NS_FD                             = 0x1c\n\tIFLA_EXT_MASK                              = 0x1d\n\tIFLA_PROMISCUITY                           = 0x1e\n\tIFLA_NUM_TX_QUEUES                         = 0x1f\n\tIFLA_NUM_RX_QUEUES                         = 0x20\n\tIFLA_CARRIER                               = 0x21\n\tIFLA_PHYS_PORT_ID                          = 0x22\n\tIFLA_CARRIER_CHANGES                       = 0x23\n\tIFLA_PHYS_SWITCH_ID                        = 0x24\n\tIFLA_LINK_NETNSID                          = 0x25\n\tIFLA_PHYS_PORT_NAME                        = 0x26\n\tIFLA_PROTO_DOWN                            = 0x27\n\tIFLA_GSO_MAX_SEGS                          = 0x28\n\tIFLA_GSO_MAX_SIZE                          = 0x29\n\tIFLA_PAD                                   = 0x2a\n\tIFLA_XDP                                   = 0x2b\n\tIFLA_EVENT                                 = 0x2c\n\tIFLA_NEW_NETNSID                           = 0x2d\n\tIFLA_IF_NETNSID                            = 0x2e\n\tIFLA_TARGET_NETNSID                        = 0x2e\n\tIFLA_CARRIER_UP_COUNT                      = 0x2f\n\tIFLA_CARRIER_DOWN_COUNT                    = 0x30\n\tIFLA_NEW_IFINDEX                           = 0x31\n\tIFLA_MIN_MTU                               = 0x32\n\tIFLA_MAX_MTU                               = 0x33\n\tIFLA_PROP_LIST                             = 0x34\n\tIFLA_ALT_IFNAME                            = 0x35\n\tIFLA_PERM_ADDRESS                          = 0x36\n\tIFLA_PROTO_DOWN_REASON                     = 0x37\n\tIFLA_PARENT_DEV_NAME                       = 0x38\n\tIFLA_PARENT_DEV_BUS_NAME                   = 0x39\n\tIFLA_GRO_MAX_SIZE                          = 0x3a\n\tIFLA_TSO_MAX_SIZE                          = 0x3b\n\tIFLA_TSO_MAX_SEGS                          = 0x3c\n\tIFLA_ALLMULTI                              = 0x3d\n\tIFLA_DEVLINK_PORT                          = 0x3e\n\tIFLA_GSO_IPV4_MAX_SIZE                     = 0x3f\n\tIFLA_GRO_IPV4_MAX_SIZE                     = 0x40\n\tIFLA_DPLL_PIN                              = 0x41\n\tIFLA_PROTO_DOWN_REASON_UNSPEC              = 0x0\n\tIFLA_PROTO_DOWN_REASON_MASK                = 0x1\n\tIFLA_PROTO_DOWN_REASON_VALUE               = 0x2\n\tIFLA_PROTO_DOWN_REASON_MAX                 = 0x2\n\tIFLA_INET_UNSPEC                           = 0x0\n\tIFLA_INET_CONF                             = 0x1\n\tIFLA_INET6_UNSPEC                          = 0x0\n\tIFLA_INET6_FLAGS                           = 0x1\n\tIFLA_INET6_CONF                            = 0x2\n\tIFLA_INET6_STATS                           = 0x3\n\tIFLA_INET6_MCAST                           = 0x4\n\tIFLA_INET6_CACHEINFO                       = 0x5\n\tIFLA_INET6_ICMP6STATS                      = 0x6\n\tIFLA_INET6_TOKEN                           = 0x7\n\tIFLA_INET6_ADDR_GEN_MODE                   = 0x8\n\tIFLA_INET6_RA_MTU                          = 0x9\n\tIFLA_BR_UNSPEC                             = 0x0\n\tIFLA_BR_FORWARD_DELAY                      = 0x1\n\tIFLA_BR_HELLO_TIME                         = 0x2\n\tIFLA_BR_MAX_AGE                            = 0x3\n\tIFLA_BR_AGEING_TIME                        = 0x4\n\tIFLA_BR_STP_STATE                          = 0x5\n\tIFLA_BR_PRIORITY                           = 0x6\n\tIFLA_BR_VLAN_FILTERING                     = 0x7\n\tIFLA_BR_VLAN_PROTOCOL                      = 0x8\n\tIFLA_BR_GROUP_FWD_MASK                     = 0x9\n\tIFLA_BR_ROOT_ID                            = 0xa\n\tIFLA_BR_BRIDGE_ID                          = 0xb\n\tIFLA_BR_ROOT_PORT                          = 0xc\n\tIFLA_BR_ROOT_PATH_COST                     = 0xd\n\tIFLA_BR_TOPOLOGY_CHANGE                    = 0xe\n\tIFLA_BR_TOPOLOGY_CHANGE_DETECTED           = 0xf\n\tIFLA_BR_HELLO_TIMER                        = 0x10\n\tIFLA_BR_TCN_TIMER                          = 0x11\n\tIFLA_BR_TOPOLOGY_CHANGE_TIMER              = 0x12\n\tIFLA_BR_GC_TIMER                           = 0x13\n\tIFLA_BR_GROUP_ADDR                         = 0x14\n\tIFLA_BR_FDB_FLUSH                          = 0x15\n\tIFLA_BR_MCAST_ROUTER                       = 0x16\n\tIFLA_BR_MCAST_SNOOPING                     = 0x17\n\tIFLA_BR_MCAST_QUERY_USE_IFADDR             = 0x18\n\tIFLA_BR_MCAST_QUERIER                      = 0x19\n\tIFLA_BR_MCAST_HASH_ELASTICITY              = 0x1a\n\tIFLA_BR_MCAST_HASH_MAX                     = 0x1b\n\tIFLA_BR_MCAST_LAST_MEMBER_CNT              = 0x1c\n\tIFLA_BR_MCAST_STARTUP_QUERY_CNT            = 0x1d\n\tIFLA_BR_MCAST_LAST_MEMBER_INTVL            = 0x1e\n\tIFLA_BR_MCAST_MEMBERSHIP_INTVL             = 0x1f\n\tIFLA_BR_MCAST_QUERIER_INTVL                = 0x20\n\tIFLA_BR_MCAST_QUERY_INTVL                  = 0x21\n\tIFLA_BR_MCAST_QUERY_RESPONSE_INTVL         = 0x22\n\tIFLA_BR_MCAST_STARTUP_QUERY_INTVL          = 0x23\n\tIFLA_BR_NF_CALL_IPTABLES                   = 0x24\n\tIFLA_BR_NF_CALL_IP6TABLES                  = 0x25\n\tIFLA_BR_NF_CALL_ARPTABLES                  = 0x26\n\tIFLA_BR_VLAN_DEFAULT_PVID                  = 0x27\n\tIFLA_BR_PAD                                = 0x28\n\tIFLA_BR_VLAN_STATS_ENABLED                 = 0x29\n\tIFLA_BR_MCAST_STATS_ENABLED                = 0x2a\n\tIFLA_BR_MCAST_IGMP_VERSION                 = 0x2b\n\tIFLA_BR_MCAST_MLD_VERSION                  = 0x2c\n\tIFLA_BR_VLAN_STATS_PER_PORT                = 0x2d\n\tIFLA_BR_MULTI_BOOLOPT                      = 0x2e\n\tIFLA_BR_MCAST_QUERIER_STATE                = 0x2f\n\tIFLA_BR_FDB_N_LEARNED                      = 0x30\n\tIFLA_BR_FDB_MAX_LEARNED                    = 0x31\n\tIFLA_BRPORT_UNSPEC                         = 0x0\n\tIFLA_BRPORT_STATE                          = 0x1\n\tIFLA_BRPORT_PRIORITY                       = 0x2\n\tIFLA_BRPORT_COST                           = 0x3\n\tIFLA_BRPORT_MODE                           = 0x4\n\tIFLA_BRPORT_GUARD                          = 0x5\n\tIFLA_BRPORT_PROTECT                        = 0x6\n\tIFLA_BRPORT_FAST_LEAVE                     = 0x7\n\tIFLA_BRPORT_LEARNING                       = 0x8\n\tIFLA_BRPORT_UNICAST_FLOOD                  = 0x9\n\tIFLA_BRPORT_PROXYARP                       = 0xa\n\tIFLA_BRPORT_LEARNING_SYNC                  = 0xb\n\tIFLA_BRPORT_PROXYARP_WIFI                  = 0xc\n\tIFLA_BRPORT_ROOT_ID                        = 0xd\n\tIFLA_BRPORT_BRIDGE_ID                      = 0xe\n\tIFLA_BRPORT_DESIGNATED_PORT                = 0xf\n\tIFLA_BRPORT_DESIGNATED_COST                = 0x10\n\tIFLA_BRPORT_ID                             = 0x11\n\tIFLA_BRPORT_NO                             = 0x12\n\tIFLA_BRPORT_TOPOLOGY_CHANGE_ACK            = 0x13\n\tIFLA_BRPORT_CONFIG_PENDING                 = 0x14\n\tIFLA_BRPORT_MESSAGE_AGE_TIMER              = 0x15\n\tIFLA_BRPORT_FORWARD_DELAY_TIMER            = 0x16\n\tIFLA_BRPORT_HOLD_TIMER                     = 0x17\n\tIFLA_BRPORT_FLUSH                          = 0x18\n\tIFLA_BRPORT_MULTICAST_ROUTER               = 0x19\n\tIFLA_BRPORT_PAD                            = 0x1a\n\tIFLA_BRPORT_MCAST_FLOOD                    = 0x1b\n\tIFLA_BRPORT_MCAST_TO_UCAST                 = 0x1c\n\tIFLA_BRPORT_VLAN_TUNNEL                    = 0x1d\n\tIFLA_BRPORT_BCAST_FLOOD                    = 0x1e\n\tIFLA_BRPORT_GROUP_FWD_MASK                 = 0x1f\n\tIFLA_BRPORT_NEIGH_SUPPRESS                 = 0x20\n\tIFLA_BRPORT_ISOLATED                       = 0x21\n\tIFLA_BRPORT_BACKUP_PORT                    = 0x22\n\tIFLA_BRPORT_MRP_RING_OPEN                  = 0x23\n\tIFLA_BRPORT_MRP_IN_OPEN                    = 0x24\n\tIFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT          = 0x25\n\tIFLA_BRPORT_MCAST_EHT_HOSTS_CNT            = 0x26\n\tIFLA_BRPORT_LOCKED                         = 0x27\n\tIFLA_BRPORT_MAB                            = 0x28\n\tIFLA_BRPORT_MCAST_N_GROUPS                 = 0x29\n\tIFLA_BRPORT_MCAST_MAX_GROUPS               = 0x2a\n\tIFLA_BRPORT_NEIGH_VLAN_SUPPRESS            = 0x2b\n\tIFLA_BRPORT_BACKUP_NHID                    = 0x2c\n\tIFLA_INFO_UNSPEC                           = 0x0\n\tIFLA_INFO_KIND                             = 0x1\n\tIFLA_INFO_DATA                             = 0x2\n\tIFLA_INFO_XSTATS                           = 0x3\n\tIFLA_INFO_SLAVE_KIND                       = 0x4\n\tIFLA_INFO_SLAVE_DATA                       = 0x5\n\tIFLA_VLAN_UNSPEC                           = 0x0\n\tIFLA_VLAN_ID                               = 0x1\n\tIFLA_VLAN_FLAGS                            = 0x2\n\tIFLA_VLAN_EGRESS_QOS                       = 0x3\n\tIFLA_VLAN_INGRESS_QOS                      = 0x4\n\tIFLA_VLAN_PROTOCOL                         = 0x5\n\tIFLA_VLAN_QOS_UNSPEC                       = 0x0\n\tIFLA_VLAN_QOS_MAPPING                      = 0x1\n\tIFLA_MACVLAN_UNSPEC                        = 0x0\n\tIFLA_MACVLAN_MODE                          = 0x1\n\tIFLA_MACVLAN_FLAGS                         = 0x2\n\tIFLA_MACVLAN_MACADDR_MODE                  = 0x3\n\tIFLA_MACVLAN_MACADDR                       = 0x4\n\tIFLA_MACVLAN_MACADDR_DATA                  = 0x5\n\tIFLA_MACVLAN_MACADDR_COUNT                 = 0x6\n\tIFLA_MACVLAN_BC_QUEUE_LEN                  = 0x7\n\tIFLA_MACVLAN_BC_QUEUE_LEN_USED             = 0x8\n\tIFLA_MACVLAN_BC_CUTOFF                     = 0x9\n\tIFLA_VRF_UNSPEC                            = 0x0\n\tIFLA_VRF_TABLE                             = 0x1\n\tIFLA_VRF_PORT_UNSPEC                       = 0x0\n\tIFLA_VRF_PORT_TABLE                        = 0x1\n\tIFLA_MACSEC_UNSPEC                         = 0x0\n\tIFLA_MACSEC_SCI                            = 0x1\n\tIFLA_MACSEC_PORT                           = 0x2\n\tIFLA_MACSEC_ICV_LEN                        = 0x3\n\tIFLA_MACSEC_CIPHER_SUITE                   = 0x4\n\tIFLA_MACSEC_WINDOW                         = 0x5\n\tIFLA_MACSEC_ENCODING_SA                    = 0x6\n\tIFLA_MACSEC_ENCRYPT                        = 0x7\n\tIFLA_MACSEC_PROTECT                        = 0x8\n\tIFLA_MACSEC_INC_SCI                        = 0x9\n\tIFLA_MACSEC_ES                             = 0xa\n\tIFLA_MACSEC_SCB                            = 0xb\n\tIFLA_MACSEC_REPLAY_PROTECT                 = 0xc\n\tIFLA_MACSEC_VALIDATION                     = 0xd\n\tIFLA_MACSEC_PAD                            = 0xe\n\tIFLA_MACSEC_OFFLOAD                        = 0xf\n\tIFLA_XFRM_UNSPEC                           = 0x0\n\tIFLA_XFRM_LINK                             = 0x1\n\tIFLA_XFRM_IF_ID                            = 0x2\n\tIFLA_XFRM_COLLECT_METADATA                 = 0x3\n\tIFLA_IPVLAN_UNSPEC                         = 0x0\n\tIFLA_IPVLAN_MODE                           = 0x1\n\tIFLA_IPVLAN_FLAGS                          = 0x2\n\tIFLA_NETKIT_UNSPEC                         = 0x0\n\tIFLA_NETKIT_PEER_INFO                      = 0x1\n\tIFLA_NETKIT_PRIMARY                        = 0x2\n\tIFLA_NETKIT_POLICY                         = 0x3\n\tIFLA_NETKIT_PEER_POLICY                    = 0x4\n\tIFLA_NETKIT_MODE                           = 0x5\n\tIFLA_VXLAN_UNSPEC                          = 0x0\n\tIFLA_VXLAN_ID                              = 0x1\n\tIFLA_VXLAN_GROUP                           = 0x2\n\tIFLA_VXLAN_LINK                            = 0x3\n\tIFLA_VXLAN_LOCAL                           = 0x4\n\tIFLA_VXLAN_TTL                             = 0x5\n\tIFLA_VXLAN_TOS                             = 0x6\n\tIFLA_VXLAN_LEARNING                        = 0x7\n\tIFLA_VXLAN_AGEING                          = 0x8\n\tIFLA_VXLAN_LIMIT                           = 0x9\n\tIFLA_VXLAN_PORT_RANGE                      = 0xa\n\tIFLA_VXLAN_PROXY                           = 0xb\n\tIFLA_VXLAN_RSC                             = 0xc\n\tIFLA_VXLAN_L2MISS                          = 0xd\n\tIFLA_VXLAN_L3MISS                          = 0xe\n\tIFLA_VXLAN_PORT                            = 0xf\n\tIFLA_VXLAN_GROUP6                          = 0x10\n\tIFLA_VXLAN_LOCAL6                          = 0x11\n\tIFLA_VXLAN_UDP_CSUM                        = 0x12\n\tIFLA_VXLAN_UDP_ZERO_CSUM6_TX               = 0x13\n\tIFLA_VXLAN_UDP_ZERO_CSUM6_RX               = 0x14\n\tIFLA_VXLAN_REMCSUM_TX                      = 0x15\n\tIFLA_VXLAN_REMCSUM_RX                      = 0x16\n\tIFLA_VXLAN_GBP                             = 0x17\n\tIFLA_VXLAN_REMCSUM_NOPARTIAL               = 0x18\n\tIFLA_VXLAN_COLLECT_METADATA                = 0x19\n\tIFLA_VXLAN_LABEL                           = 0x1a\n\tIFLA_VXLAN_GPE                             = 0x1b\n\tIFLA_VXLAN_TTL_INHERIT                     = 0x1c\n\tIFLA_VXLAN_DF                              = 0x1d\n\tIFLA_VXLAN_VNIFILTER                       = 0x1e\n\tIFLA_VXLAN_LOCALBYPASS                     = 0x1f\n\tIFLA_VXLAN_LABEL_POLICY                    = 0x20\n\tIFLA_GENEVE_UNSPEC                         = 0x0\n\tIFLA_GENEVE_ID                             = 0x1\n\tIFLA_GENEVE_REMOTE                         = 0x2\n\tIFLA_GENEVE_TTL                            = 0x3\n\tIFLA_GENEVE_TOS                            = 0x4\n\tIFLA_GENEVE_PORT                           = 0x5\n\tIFLA_GENEVE_COLLECT_METADATA               = 0x6\n\tIFLA_GENEVE_REMOTE6                        = 0x7\n\tIFLA_GENEVE_UDP_CSUM                       = 0x8\n\tIFLA_GENEVE_UDP_ZERO_CSUM6_TX              = 0x9\n\tIFLA_GENEVE_UDP_ZERO_CSUM6_RX              = 0xa\n\tIFLA_GENEVE_LABEL                          = 0xb\n\tIFLA_GENEVE_TTL_INHERIT                    = 0xc\n\tIFLA_GENEVE_DF                             = 0xd\n\tIFLA_GENEVE_INNER_PROTO_INHERIT            = 0xe\n\tIFLA_BAREUDP_UNSPEC                        = 0x0\n\tIFLA_BAREUDP_PORT                          = 0x1\n\tIFLA_BAREUDP_ETHERTYPE                     = 0x2\n\tIFLA_BAREUDP_SRCPORT_MIN                   = 0x3\n\tIFLA_BAREUDP_MULTIPROTO_MODE               = 0x4\n\tIFLA_PPP_UNSPEC                            = 0x0\n\tIFLA_PPP_DEV_FD                            = 0x1\n\tIFLA_GTP_UNSPEC                            = 0x0\n\tIFLA_GTP_FD0                               = 0x1\n\tIFLA_GTP_FD1                               = 0x2\n\tIFLA_GTP_PDP_HASHSIZE                      = 0x3\n\tIFLA_GTP_ROLE                              = 0x4\n\tIFLA_GTP_CREATE_SOCKETS                    = 0x5\n\tIFLA_GTP_RESTART_COUNT                     = 0x6\n\tIFLA_GTP_LOCAL                             = 0x7\n\tIFLA_GTP_LOCAL6                            = 0x8\n\tIFLA_BOND_UNSPEC                           = 0x0\n\tIFLA_BOND_MODE                             = 0x1\n\tIFLA_BOND_ACTIVE_SLAVE                     = 0x2\n\tIFLA_BOND_MIIMON                           = 0x3\n\tIFLA_BOND_UPDELAY                          = 0x4\n\tIFLA_BOND_DOWNDELAY                        = 0x5\n\tIFLA_BOND_USE_CARRIER                      = 0x6\n\tIFLA_BOND_ARP_INTERVAL                     = 0x7\n\tIFLA_BOND_ARP_IP_TARGET                    = 0x8\n\tIFLA_BOND_ARP_VALIDATE                     = 0x9\n\tIFLA_BOND_ARP_ALL_TARGETS                  = 0xa\n\tIFLA_BOND_PRIMARY                          = 0xb\n\tIFLA_BOND_PRIMARY_RESELECT                 = 0xc\n\tIFLA_BOND_FAIL_OVER_MAC                    = 0xd\n\tIFLA_BOND_XMIT_HASH_POLICY                 = 0xe\n\tIFLA_BOND_RESEND_IGMP                      = 0xf\n\tIFLA_BOND_NUM_PEER_NOTIF                   = 0x10\n\tIFLA_BOND_ALL_SLAVES_ACTIVE                = 0x11\n\tIFLA_BOND_MIN_LINKS                        = 0x12\n\tIFLA_BOND_LP_INTERVAL                      = 0x13\n\tIFLA_BOND_PACKETS_PER_SLAVE                = 0x14\n\tIFLA_BOND_AD_LACP_RATE                     = 0x15\n\tIFLA_BOND_AD_SELECT                        = 0x16\n\tIFLA_BOND_AD_INFO                          = 0x17\n\tIFLA_BOND_AD_ACTOR_SYS_PRIO                = 0x18\n\tIFLA_BOND_AD_USER_PORT_KEY                 = 0x19\n\tIFLA_BOND_AD_ACTOR_SYSTEM                  = 0x1a\n\tIFLA_BOND_TLB_DYNAMIC_LB                   = 0x1b\n\tIFLA_BOND_PEER_NOTIF_DELAY                 = 0x1c\n\tIFLA_BOND_AD_LACP_ACTIVE                   = 0x1d\n\tIFLA_BOND_MISSED_MAX                       = 0x1e\n\tIFLA_BOND_NS_IP6_TARGET                    = 0x1f\n\tIFLA_BOND_COUPLED_CONTROL                  = 0x20\n\tIFLA_BOND_AD_INFO_UNSPEC                   = 0x0\n\tIFLA_BOND_AD_INFO_AGGREGATOR               = 0x1\n\tIFLA_BOND_AD_INFO_NUM_PORTS                = 0x2\n\tIFLA_BOND_AD_INFO_ACTOR_KEY                = 0x3\n\tIFLA_BOND_AD_INFO_PARTNER_KEY              = 0x4\n\tIFLA_BOND_AD_INFO_PARTNER_MAC              = 0x5\n\tIFLA_BOND_SLAVE_UNSPEC                     = 0x0\n\tIFLA_BOND_SLAVE_STATE                      = 0x1\n\tIFLA_BOND_SLAVE_MII_STATUS                 = 0x2\n\tIFLA_BOND_SLAVE_LINK_FAILURE_COUNT         = 0x3\n\tIFLA_BOND_SLAVE_PERM_HWADDR                = 0x4\n\tIFLA_BOND_SLAVE_QUEUE_ID                   = 0x5\n\tIFLA_BOND_SLAVE_AD_AGGREGATOR_ID           = 0x6\n\tIFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE   = 0x7\n\tIFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE = 0x8\n\tIFLA_BOND_SLAVE_PRIO                       = 0x9\n\tIFLA_VF_INFO_UNSPEC                        = 0x0\n\tIFLA_VF_INFO                               = 0x1\n\tIFLA_VF_UNSPEC                             = 0x0\n\tIFLA_VF_MAC                                = 0x1\n\tIFLA_VF_VLAN                               = 0x2\n\tIFLA_VF_TX_RATE                            = 0x3\n\tIFLA_VF_SPOOFCHK                           = 0x4\n\tIFLA_VF_LINK_STATE                         = 0x5\n\tIFLA_VF_RATE                               = 0x6\n\tIFLA_VF_RSS_QUERY_EN                       = 0x7\n\tIFLA_VF_STATS                              = 0x8\n\tIFLA_VF_TRUST                              = 0x9\n\tIFLA_VF_IB_NODE_GUID                       = 0xa\n\tIFLA_VF_IB_PORT_GUID                       = 0xb\n\tIFLA_VF_VLAN_LIST                          = 0xc\n\tIFLA_VF_BROADCAST                          = 0xd\n\tIFLA_VF_VLAN_INFO_UNSPEC                   = 0x0\n\tIFLA_VF_VLAN_INFO                          = 0x1\n\tIFLA_VF_LINK_STATE_AUTO                    = 0x0\n\tIFLA_VF_LINK_STATE_ENABLE                  = 0x1\n\tIFLA_VF_LINK_STATE_DISABLE                 = 0x2\n\tIFLA_VF_STATS_RX_PACKETS                   = 0x0\n\tIFLA_VF_STATS_TX_PACKETS                   = 0x1\n\tIFLA_VF_STATS_RX_BYTES                     = 0x2\n\tIFLA_VF_STATS_TX_BYTES                     = 0x3\n\tIFLA_VF_STATS_BROADCAST                    = 0x4\n\tIFLA_VF_STATS_MULTICAST                    = 0x5\n\tIFLA_VF_STATS_PAD                          = 0x6\n\tIFLA_VF_STATS_RX_DROPPED                   = 0x7\n\tIFLA_VF_STATS_TX_DROPPED                   = 0x8\n\tIFLA_VF_PORT_UNSPEC                        = 0x0\n\tIFLA_VF_PORT                               = 0x1\n\tIFLA_PORT_UNSPEC                           = 0x0\n\tIFLA_PORT_VF                               = 0x1\n\tIFLA_PORT_PROFILE                          = 0x2\n\tIFLA_PORT_VSI_TYPE                         = 0x3\n\tIFLA_PORT_INSTANCE_UUID                    = 0x4\n\tIFLA_PORT_HOST_UUID                        = 0x5\n\tIFLA_PORT_REQUEST                          = 0x6\n\tIFLA_PORT_RESPONSE                         = 0x7\n\tIFLA_IPOIB_UNSPEC                          = 0x0\n\tIFLA_IPOIB_PKEY                            = 0x1\n\tIFLA_IPOIB_MODE                            = 0x2\n\tIFLA_IPOIB_UMCAST                          = 0x3\n\tIFLA_HSR_UNSPEC                            = 0x0\n\tIFLA_HSR_SLAVE1                            = 0x1\n\tIFLA_HSR_SLAVE2                            = 0x2\n\tIFLA_HSR_MULTICAST_SPEC                    = 0x3\n\tIFLA_HSR_SUPERVISION_ADDR                  = 0x4\n\tIFLA_HSR_SEQ_NR                            = 0x5\n\tIFLA_HSR_VERSION                           = 0x6\n\tIFLA_HSR_PROTOCOL                          = 0x7\n\tIFLA_HSR_INTERLINK                         = 0x8\n\tIFLA_STATS_UNSPEC                          = 0x0\n\tIFLA_STATS_LINK_64                         = 0x1\n\tIFLA_STATS_LINK_XSTATS                     = 0x2\n\tIFLA_STATS_LINK_XSTATS_SLAVE               = 0x3\n\tIFLA_STATS_LINK_OFFLOAD_XSTATS             = 0x4\n\tIFLA_STATS_AF_SPEC                         = 0x5\n\tIFLA_STATS_GETSET_UNSPEC                   = 0x0\n\tIFLA_STATS_GET_FILTERS                     = 0x1\n\tIFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS     = 0x2\n\tIFLA_OFFLOAD_XSTATS_UNSPEC                 = 0x0\n\tIFLA_OFFLOAD_XSTATS_CPU_HIT                = 0x1\n\tIFLA_OFFLOAD_XSTATS_HW_S_INFO              = 0x2\n\tIFLA_OFFLOAD_XSTATS_L3_STATS               = 0x3\n\tIFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC       = 0x0\n\tIFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST      = 0x1\n\tIFLA_OFFLOAD_XSTATS_HW_S_INFO_USED         = 0x2\n\tIFLA_XDP_UNSPEC                            = 0x0\n\tIFLA_XDP_FD                                = 0x1\n\tIFLA_XDP_ATTACHED                          = 0x2\n\tIFLA_XDP_FLAGS                             = 0x3\n\tIFLA_XDP_PROG_ID                           = 0x4\n\tIFLA_XDP_DRV_PROG_ID                       = 0x5\n\tIFLA_XDP_SKB_PROG_ID                       = 0x6\n\tIFLA_XDP_HW_PROG_ID                        = 0x7\n\tIFLA_XDP_EXPECTED_FD                       = 0x8\n\tIFLA_EVENT_NONE                            = 0x0\n\tIFLA_EVENT_REBOOT                          = 0x1\n\tIFLA_EVENT_FEATURES                        = 0x2\n\tIFLA_EVENT_BONDING_FAILOVER                = 0x3\n\tIFLA_EVENT_NOTIFY_PEERS                    = 0x4\n\tIFLA_EVENT_IGMP_RESEND                     = 0x5\n\tIFLA_EVENT_BONDING_OPTIONS                 = 0x6\n\tIFLA_TUN_UNSPEC                            = 0x0\n\tIFLA_TUN_OWNER                             = 0x1\n\tIFLA_TUN_GROUP                             = 0x2\n\tIFLA_TUN_TYPE                              = 0x3\n\tIFLA_TUN_PI                                = 0x4\n\tIFLA_TUN_VNET_HDR                          = 0x5\n\tIFLA_TUN_PERSIST                           = 0x6\n\tIFLA_TUN_MULTI_QUEUE                       = 0x7\n\tIFLA_TUN_NUM_QUEUES                        = 0x8\n\tIFLA_TUN_NUM_DISABLED_QUEUES               = 0x9\n\tIFLA_RMNET_UNSPEC                          = 0x0\n\tIFLA_RMNET_MUX_ID                          = 0x1\n\tIFLA_RMNET_FLAGS                           = 0x2\n\tIFLA_MCTP_UNSPEC                           = 0x0\n\tIFLA_MCTP_NET                              = 0x1\n\tIFLA_DSA_UNSPEC                            = 0x0\n\tIFLA_DSA_CONDUIT                           = 0x1\n\tIFLA_DSA_MASTER                            = 0x1\n)\n\nconst (\n\tNETKIT_NEXT     = -0x1\n\tNETKIT_PASS     = 0x0\n\tNETKIT_DROP     = 0x2\n\tNETKIT_REDIRECT = 0x7\n\tNETKIT_L2       = 0x0\n\tNETKIT_L3       = 0x1\n)\n\nconst (\n\tNF_INET_PRE_ROUTING  = 0x0\n\tNF_INET_LOCAL_IN     = 0x1\n\tNF_INET_FORWARD      = 0x2\n\tNF_INET_LOCAL_OUT    = 0x3\n\tNF_INET_POST_ROUTING = 0x4\n\tNF_INET_NUMHOOKS     = 0x5\n)\n\nconst (\n\tNF_NETDEV_INGRESS  = 0x0\n\tNF_NETDEV_EGRESS   = 0x1\n\tNF_NETDEV_NUMHOOKS = 0x2\n)\n\nconst (\n\tNFPROTO_UNSPEC   = 0x0\n\tNFPROTO_INET     = 0x1\n\tNFPROTO_IPV4     = 0x2\n\tNFPROTO_ARP      = 0x3\n\tNFPROTO_NETDEV   = 0x5\n\tNFPROTO_BRIDGE   = 0x7\n\tNFPROTO_IPV6     = 0xa\n\tNFPROTO_DECNET   = 0xc\n\tNFPROTO_NUMPROTO = 0xd\n)\n\nconst SO_ORIGINAL_DST = 0x50\n\ntype Nfgenmsg struct {\n\tNfgen_family uint8\n\tVersion      uint8\n\tRes_id       uint16\n}\n\nconst (\n\tNFNL_BATCH_UNSPEC = 0x0\n\tNFNL_BATCH_GENID  = 0x1\n)\n\nconst (\n\tNFT_REG_VERDICT                   = 0x0\n\tNFT_REG_1                         = 0x1\n\tNFT_REG_2                         = 0x2\n\tNFT_REG_3                         = 0x3\n\tNFT_REG_4                         = 0x4\n\tNFT_REG32_00                      = 0x8\n\tNFT_REG32_01                      = 0x9\n\tNFT_REG32_02                      = 0xa\n\tNFT_REG32_03                      = 0xb\n\tNFT_REG32_04                      = 0xc\n\tNFT_REG32_05                      = 0xd\n\tNFT_REG32_06                      = 0xe\n\tNFT_REG32_07                      = 0xf\n\tNFT_REG32_08                      = 0x10\n\tNFT_REG32_09                      = 0x11\n\tNFT_REG32_10                      = 0x12\n\tNFT_REG32_11                      = 0x13\n\tNFT_REG32_12                      = 0x14\n\tNFT_REG32_13                      = 0x15\n\tNFT_REG32_14                      = 0x16\n\tNFT_REG32_15                      = 0x17\n\tNFT_CONTINUE                      = -0x1\n\tNFT_BREAK                         = -0x2\n\tNFT_JUMP                          = -0x3\n\tNFT_GOTO                          = -0x4\n\tNFT_RETURN                        = -0x5\n\tNFT_MSG_NEWTABLE                  = 0x0\n\tNFT_MSG_GETTABLE                  = 0x1\n\tNFT_MSG_DELTABLE                  = 0x2\n\tNFT_MSG_NEWCHAIN                  = 0x3\n\tNFT_MSG_GETCHAIN                  = 0x4\n\tNFT_MSG_DELCHAIN                  = 0x5\n\tNFT_MSG_NEWRULE                   = 0x6\n\tNFT_MSG_GETRULE                   = 0x7\n\tNFT_MSG_DELRULE                   = 0x8\n\tNFT_MSG_NEWSET                    = 0x9\n\tNFT_MSG_GETSET                    = 0xa\n\tNFT_MSG_DELSET                    = 0xb\n\tNFT_MSG_NEWSETELEM                = 0xc\n\tNFT_MSG_GETSETELEM                = 0xd\n\tNFT_MSG_DELSETELEM                = 0xe\n\tNFT_MSG_NEWGEN                    = 0xf\n\tNFT_MSG_GETGEN                    = 0x10\n\tNFT_MSG_TRACE                     = 0x11\n\tNFT_MSG_NEWOBJ                    = 0x12\n\tNFT_MSG_GETOBJ                    = 0x13\n\tNFT_MSG_DELOBJ                    = 0x14\n\tNFT_MSG_GETOBJ_RESET              = 0x15\n\tNFT_MSG_NEWFLOWTABLE              = 0x16\n\tNFT_MSG_GETFLOWTABLE              = 0x17\n\tNFT_MSG_DELFLOWTABLE              = 0x18\n\tNFT_MSG_GETRULE_RESET             = 0x19\n\tNFT_MSG_MAX                       = 0x22\n\tNFTA_LIST_UNSPEC                  = 0x0\n\tNFTA_LIST_ELEM                    = 0x1\n\tNFTA_HOOK_UNSPEC                  = 0x0\n\tNFTA_HOOK_HOOKNUM                 = 0x1\n\tNFTA_HOOK_PRIORITY                = 0x2\n\tNFTA_HOOK_DEV                     = 0x3\n\tNFT_TABLE_F_DORMANT               = 0x1\n\tNFTA_TABLE_UNSPEC                 = 0x0\n\tNFTA_TABLE_NAME                   = 0x1\n\tNFTA_TABLE_FLAGS                  = 0x2\n\tNFTA_TABLE_USE                    = 0x3\n\tNFTA_CHAIN_UNSPEC                 = 0x0\n\tNFTA_CHAIN_TABLE                  = 0x1\n\tNFTA_CHAIN_HANDLE                 = 0x2\n\tNFTA_CHAIN_NAME                   = 0x3\n\tNFTA_CHAIN_HOOK                   = 0x4\n\tNFTA_CHAIN_POLICY                 = 0x5\n\tNFTA_CHAIN_USE                    = 0x6\n\tNFTA_CHAIN_TYPE                   = 0x7\n\tNFTA_CHAIN_COUNTERS               = 0x8\n\tNFTA_CHAIN_PAD                    = 0x9\n\tNFTA_RULE_UNSPEC                  = 0x0\n\tNFTA_RULE_TABLE                   = 0x1\n\tNFTA_RULE_CHAIN                   = 0x2\n\tNFTA_RULE_HANDLE                  = 0x3\n\tNFTA_RULE_EXPRESSIONS             = 0x4\n\tNFTA_RULE_COMPAT                  = 0x5\n\tNFTA_RULE_POSITION                = 0x6\n\tNFTA_RULE_USERDATA                = 0x7\n\tNFTA_RULE_PAD                     = 0x8\n\tNFTA_RULE_ID                      = 0x9\n\tNFT_RULE_COMPAT_F_INV             = 0x2\n\tNFT_RULE_COMPAT_F_MASK            = 0x2\n\tNFTA_RULE_COMPAT_UNSPEC           = 0x0\n\tNFTA_RULE_COMPAT_PROTO            = 0x1\n\tNFTA_RULE_COMPAT_FLAGS            = 0x2\n\tNFT_SET_ANONYMOUS                 = 0x1\n\tNFT_SET_CONSTANT                  = 0x2\n\tNFT_SET_INTERVAL                  = 0x4\n\tNFT_SET_MAP                       = 0x8\n\tNFT_SET_TIMEOUT                   = 0x10\n\tNFT_SET_EVAL                      = 0x20\n\tNFT_SET_OBJECT                    = 0x40\n\tNFT_SET_POL_PERFORMANCE           = 0x0\n\tNFT_SET_POL_MEMORY                = 0x1\n\tNFTA_SET_DESC_UNSPEC              = 0x0\n\tNFTA_SET_DESC_SIZE                = 0x1\n\tNFTA_SET_UNSPEC                   = 0x0\n\tNFTA_SET_TABLE                    = 0x1\n\tNFTA_SET_NAME                     = 0x2\n\tNFTA_SET_FLAGS                    = 0x3\n\tNFTA_SET_KEY_TYPE                 = 0x4\n\tNFTA_SET_KEY_LEN                  = 0x5\n\tNFTA_SET_DATA_TYPE                = 0x6\n\tNFTA_SET_DATA_LEN                 = 0x7\n\tNFTA_SET_POLICY                   = 0x8\n\tNFTA_SET_DESC                     = 0x9\n\tNFTA_SET_ID                       = 0xa\n\tNFTA_SET_TIMEOUT                  = 0xb\n\tNFTA_SET_GC_INTERVAL              = 0xc\n\tNFTA_SET_USERDATA                 = 0xd\n\tNFTA_SET_PAD                      = 0xe\n\tNFTA_SET_OBJ_TYPE                 = 0xf\n\tNFT_SET_ELEM_INTERVAL_END         = 0x1\n\tNFTA_SET_ELEM_UNSPEC              = 0x0\n\tNFTA_SET_ELEM_KEY                 = 0x1\n\tNFTA_SET_ELEM_DATA                = 0x2\n\tNFTA_SET_ELEM_FLAGS               = 0x3\n\tNFTA_SET_ELEM_TIMEOUT             = 0x4\n\tNFTA_SET_ELEM_EXPIRATION          = 0x5\n\tNFTA_SET_ELEM_USERDATA            = 0x6\n\tNFTA_SET_ELEM_EXPR                = 0x7\n\tNFTA_SET_ELEM_PAD                 = 0x8\n\tNFTA_SET_ELEM_OBJREF              = 0x9\n\tNFTA_SET_ELEM_LIST_UNSPEC         = 0x0\n\tNFTA_SET_ELEM_LIST_TABLE          = 0x1\n\tNFTA_SET_ELEM_LIST_SET            = 0x2\n\tNFTA_SET_ELEM_LIST_ELEMENTS       = 0x3\n\tNFTA_SET_ELEM_LIST_SET_ID         = 0x4\n\tNFT_DATA_VALUE                    = 0x0\n\tNFT_DATA_VERDICT                  = 0xffffff00\n\tNFTA_DATA_UNSPEC                  = 0x0\n\tNFTA_DATA_VALUE                   = 0x1\n\tNFTA_DATA_VERDICT                 = 0x2\n\tNFTA_VERDICT_UNSPEC               = 0x0\n\tNFTA_VERDICT_CODE                 = 0x1\n\tNFTA_VERDICT_CHAIN                = 0x2\n\tNFTA_EXPR_UNSPEC                  = 0x0\n\tNFTA_EXPR_NAME                    = 0x1\n\tNFTA_EXPR_DATA                    = 0x2\n\tNFTA_IMMEDIATE_UNSPEC             = 0x0\n\tNFTA_IMMEDIATE_DREG               = 0x1\n\tNFTA_IMMEDIATE_DATA               = 0x2\n\tNFTA_BITWISE_UNSPEC               = 0x0\n\tNFTA_BITWISE_SREG                 = 0x1\n\tNFTA_BITWISE_DREG                 = 0x2\n\tNFTA_BITWISE_LEN                  = 0x3\n\tNFTA_BITWISE_MASK                 = 0x4\n\tNFTA_BITWISE_XOR                  = 0x5\n\tNFT_BYTEORDER_NTOH                = 0x0\n\tNFT_BYTEORDER_HTON                = 0x1\n\tNFTA_BYTEORDER_UNSPEC             = 0x0\n\tNFTA_BYTEORDER_SREG               = 0x1\n\tNFTA_BYTEORDER_DREG               = 0x2\n\tNFTA_BYTEORDER_OP                 = 0x3\n\tNFTA_BYTEORDER_LEN                = 0x4\n\tNFTA_BYTEORDER_SIZE               = 0x5\n\tNFT_CMP_EQ                        = 0x0\n\tNFT_CMP_NEQ                       = 0x1\n\tNFT_CMP_LT                        = 0x2\n\tNFT_CMP_LTE                       = 0x3\n\tNFT_CMP_GT                        = 0x4\n\tNFT_CMP_GTE                       = 0x5\n\tNFTA_CMP_UNSPEC                   = 0x0\n\tNFTA_CMP_SREG                     = 0x1\n\tNFTA_CMP_OP                       = 0x2\n\tNFTA_CMP_DATA                     = 0x3\n\tNFT_RANGE_EQ                      = 0x0\n\tNFT_RANGE_NEQ                     = 0x1\n\tNFTA_RANGE_UNSPEC                 = 0x0\n\tNFTA_RANGE_SREG                   = 0x1\n\tNFTA_RANGE_OP                     = 0x2\n\tNFTA_RANGE_FROM_DATA              = 0x3\n\tNFTA_RANGE_TO_DATA                = 0x4\n\tNFT_LOOKUP_F_INV                  = 0x1\n\tNFTA_LOOKUP_UNSPEC                = 0x0\n\tNFTA_LOOKUP_SET                   = 0x1\n\tNFTA_LOOKUP_SREG                  = 0x2\n\tNFTA_LOOKUP_DREG                  = 0x3\n\tNFTA_LOOKUP_SET_ID                = 0x4\n\tNFTA_LOOKUP_FLAGS                 = 0x5\n\tNFT_DYNSET_OP_ADD                 = 0x0\n\tNFT_DYNSET_OP_UPDATE              = 0x1\n\tNFT_DYNSET_F_INV                  = 0x1\n\tNFTA_DYNSET_UNSPEC                = 0x0\n\tNFTA_DYNSET_SET_NAME              = 0x1\n\tNFTA_DYNSET_SET_ID                = 0x2\n\tNFTA_DYNSET_OP                    = 0x3\n\tNFTA_DYNSET_SREG_KEY              = 0x4\n\tNFTA_DYNSET_SREG_DATA             = 0x5\n\tNFTA_DYNSET_TIMEOUT               = 0x6\n\tNFTA_DYNSET_EXPR                  = 0x7\n\tNFTA_DYNSET_PAD                   = 0x8\n\tNFTA_DYNSET_FLAGS                 = 0x9\n\tNFT_PAYLOAD_LL_HEADER             = 0x0\n\tNFT_PAYLOAD_NETWORK_HEADER        = 0x1\n\tNFT_PAYLOAD_TRANSPORT_HEADER      = 0x2\n\tNFT_PAYLOAD_INNER_HEADER          = 0x3\n\tNFT_PAYLOAD_TUN_HEADER            = 0x4\n\tNFT_PAYLOAD_CSUM_NONE             = 0x0\n\tNFT_PAYLOAD_CSUM_INET             = 0x1\n\tNFT_PAYLOAD_CSUM_SCTP             = 0x2\n\tNFT_PAYLOAD_L4CSUM_PSEUDOHDR      = 0x1\n\tNFTA_PAYLOAD_UNSPEC               = 0x0\n\tNFTA_PAYLOAD_DREG                 = 0x1\n\tNFTA_PAYLOAD_BASE                 = 0x2\n\tNFTA_PAYLOAD_OFFSET               = 0x3\n\tNFTA_PAYLOAD_LEN                  = 0x4\n\tNFTA_PAYLOAD_SREG                 = 0x5\n\tNFTA_PAYLOAD_CSUM_TYPE            = 0x6\n\tNFTA_PAYLOAD_CSUM_OFFSET          = 0x7\n\tNFTA_PAYLOAD_CSUM_FLAGS           = 0x8\n\tNFT_EXTHDR_F_PRESENT              = 0x1\n\tNFT_EXTHDR_OP_IPV6                = 0x0\n\tNFT_EXTHDR_OP_TCPOPT              = 0x1\n\tNFTA_EXTHDR_UNSPEC                = 0x0\n\tNFTA_EXTHDR_DREG                  = 0x1\n\tNFTA_EXTHDR_TYPE                  = 0x2\n\tNFTA_EXTHDR_OFFSET                = 0x3\n\tNFTA_EXTHDR_LEN                   = 0x4\n\tNFTA_EXTHDR_FLAGS                 = 0x5\n\tNFTA_EXTHDR_OP                    = 0x6\n\tNFTA_EXTHDR_SREG                  = 0x7\n\tNFT_META_LEN                      = 0x0\n\tNFT_META_PROTOCOL                 = 0x1\n\tNFT_META_PRIORITY                 = 0x2\n\tNFT_META_MARK                     = 0x3\n\tNFT_META_IIF                      = 0x4\n\tNFT_META_OIF                      = 0x5\n\tNFT_META_IIFNAME                  = 0x6\n\tNFT_META_OIFNAME                  = 0x7\n\tNFT_META_IIFTYPE                  = 0x8\n\tNFT_META_OIFTYPE                  = 0x9\n\tNFT_META_SKUID                    = 0xa\n\tNFT_META_SKGID                    = 0xb\n\tNFT_META_NFTRACE                  = 0xc\n\tNFT_META_RTCLASSID                = 0xd\n\tNFT_META_SECMARK                  = 0xe\n\tNFT_META_NFPROTO                  = 0xf\n\tNFT_META_L4PROTO                  = 0x10\n\tNFT_META_BRI_IIFNAME              = 0x11\n\tNFT_META_BRI_OIFNAME              = 0x12\n\tNFT_META_PKTTYPE                  = 0x13\n\tNFT_META_CPU                      = 0x14\n\tNFT_META_IIFGROUP                 = 0x15\n\tNFT_META_OIFGROUP                 = 0x16\n\tNFT_META_CGROUP                   = 0x17\n\tNFT_META_PRANDOM                  = 0x18\n\tNFT_RT_CLASSID                    = 0x0\n\tNFT_RT_NEXTHOP4                   = 0x1\n\tNFT_RT_NEXTHOP6                   = 0x2\n\tNFT_RT_TCPMSS                     = 0x3\n\tNFT_HASH_JENKINS                  = 0x0\n\tNFT_HASH_SYM                      = 0x1\n\tNFTA_HASH_UNSPEC                  = 0x0\n\tNFTA_HASH_SREG                    = 0x1\n\tNFTA_HASH_DREG                    = 0x2\n\tNFTA_HASH_LEN                     = 0x3\n\tNFTA_HASH_MODULUS                 = 0x4\n\tNFTA_HASH_SEED                    = 0x5\n\tNFTA_HASH_OFFSET                  = 0x6\n\tNFTA_HASH_TYPE                    = 0x7\n\tNFTA_META_UNSPEC                  = 0x0\n\tNFTA_META_DREG                    = 0x1\n\tNFTA_META_KEY                     = 0x2\n\tNFTA_META_SREG                    = 0x3\n\tNFTA_RT_UNSPEC                    = 0x0\n\tNFTA_RT_DREG                      = 0x1\n\tNFTA_RT_KEY                       = 0x2\n\tNFT_CT_STATE                      = 0x0\n\tNFT_CT_DIRECTION                  = 0x1\n\tNFT_CT_STATUS                     = 0x2\n\tNFT_CT_MARK                       = 0x3\n\tNFT_CT_SECMARK                    = 0x4\n\tNFT_CT_EXPIRATION                 = 0x5\n\tNFT_CT_HELPER                     = 0x6\n\tNFT_CT_L3PROTOCOL                 = 0x7\n\tNFT_CT_SRC                        = 0x8\n\tNFT_CT_DST                        = 0x9\n\tNFT_CT_PROTOCOL                   = 0xa\n\tNFT_CT_PROTO_SRC                  = 0xb\n\tNFT_CT_PROTO_DST                  = 0xc\n\tNFT_CT_LABELS                     = 0xd\n\tNFT_CT_PKTS                       = 0xe\n\tNFT_CT_BYTES                      = 0xf\n\tNFT_CT_AVGPKT                     = 0x10\n\tNFT_CT_ZONE                       = 0x11\n\tNFT_CT_EVENTMASK                  = 0x12\n\tNFT_CT_SRC_IP                     = 0x13\n\tNFT_CT_DST_IP                     = 0x14\n\tNFT_CT_SRC_IP6                    = 0x15\n\tNFT_CT_DST_IP6                    = 0x16\n\tNFT_CT_ID                         = 0x17\n\tNFTA_CT_UNSPEC                    = 0x0\n\tNFTA_CT_DREG                      = 0x1\n\tNFTA_CT_KEY                       = 0x2\n\tNFTA_CT_DIRECTION                 = 0x3\n\tNFTA_CT_SREG                      = 0x4\n\tNFT_LIMIT_PKTS                    = 0x0\n\tNFT_LIMIT_PKT_BYTES               = 0x1\n\tNFT_LIMIT_F_INV                   = 0x1\n\tNFTA_LIMIT_UNSPEC                 = 0x0\n\tNFTA_LIMIT_RATE                   = 0x1\n\tNFTA_LIMIT_UNIT                   = 0x2\n\tNFTA_LIMIT_BURST                  = 0x3\n\tNFTA_LIMIT_TYPE                   = 0x4\n\tNFTA_LIMIT_FLAGS                  = 0x5\n\tNFTA_LIMIT_PAD                    = 0x6\n\tNFTA_COUNTER_UNSPEC               = 0x0\n\tNFTA_COUNTER_BYTES                = 0x1\n\tNFTA_COUNTER_PACKETS              = 0x2\n\tNFTA_COUNTER_PAD                  = 0x3\n\tNFTA_LOG_UNSPEC                   = 0x0\n\tNFTA_LOG_GROUP                    = 0x1\n\tNFTA_LOG_PREFIX                   = 0x2\n\tNFTA_LOG_SNAPLEN                  = 0x3\n\tNFTA_LOG_QTHRESHOLD               = 0x4\n\tNFTA_LOG_LEVEL                    = 0x5\n\tNFTA_LOG_FLAGS                    = 0x6\n\tNFTA_QUEUE_UNSPEC                 = 0x0\n\tNFTA_QUEUE_NUM                    = 0x1\n\tNFTA_QUEUE_TOTAL                  = 0x2\n\tNFTA_QUEUE_FLAGS                  = 0x3\n\tNFTA_QUEUE_SREG_QNUM              = 0x4\n\tNFT_QUOTA_F_INV                   = 0x1\n\tNFT_QUOTA_F_DEPLETED              = 0x2\n\tNFTA_QUOTA_UNSPEC                 = 0x0\n\tNFTA_QUOTA_BYTES                  = 0x1\n\tNFTA_QUOTA_FLAGS                  = 0x2\n\tNFTA_QUOTA_PAD                    = 0x3\n\tNFTA_QUOTA_CONSUMED               = 0x4\n\tNFT_REJECT_ICMP_UNREACH           = 0x0\n\tNFT_REJECT_TCP_RST                = 0x1\n\tNFT_REJECT_ICMPX_UNREACH          = 0x2\n\tNFT_REJECT_ICMPX_NO_ROUTE         = 0x0\n\tNFT_REJECT_ICMPX_PORT_UNREACH     = 0x1\n\tNFT_REJECT_ICMPX_HOST_UNREACH     = 0x2\n\tNFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3\n\tNFTA_REJECT_UNSPEC                = 0x0\n\tNFTA_REJECT_TYPE                  = 0x1\n\tNFTA_REJECT_ICMP_CODE             = 0x2\n\tNFT_NAT_SNAT                      = 0x0\n\tNFT_NAT_DNAT                      = 0x1\n\tNFTA_NAT_UNSPEC                   = 0x0\n\tNFTA_NAT_TYPE                     = 0x1\n\tNFTA_NAT_FAMILY                   = 0x2\n\tNFTA_NAT_REG_ADDR_MIN             = 0x3\n\tNFTA_NAT_REG_ADDR_MAX             = 0x4\n\tNFTA_NAT_REG_PROTO_MIN            = 0x5\n\tNFTA_NAT_REG_PROTO_MAX            = 0x6\n\tNFTA_NAT_FLAGS                    = 0x7\n\tNFTA_MASQ_UNSPEC                  = 0x0\n\tNFTA_MASQ_FLAGS                   = 0x1\n\tNFTA_MASQ_REG_PROTO_MIN           = 0x2\n\tNFTA_MASQ_REG_PROTO_MAX           = 0x3\n\tNFTA_REDIR_UNSPEC                 = 0x0\n\tNFTA_REDIR_REG_PROTO_MIN          = 0x1\n\tNFTA_REDIR_REG_PROTO_MAX          = 0x2\n\tNFTA_REDIR_FLAGS                  = 0x3\n\tNFTA_DUP_UNSPEC                   = 0x0\n\tNFTA_DUP_SREG_ADDR                = 0x1\n\tNFTA_DUP_SREG_DEV                 = 0x2\n\tNFTA_FWD_UNSPEC                   = 0x0\n\tNFTA_FWD_SREG_DEV                 = 0x1\n\tNFTA_OBJREF_UNSPEC                = 0x0\n\tNFTA_OBJREF_IMM_TYPE              = 0x1\n\tNFTA_OBJREF_IMM_NAME              = 0x2\n\tNFTA_OBJREF_SET_SREG              = 0x3\n\tNFTA_OBJREF_SET_NAME              = 0x4\n\tNFTA_OBJREF_SET_ID                = 0x5\n\tNFTA_GEN_UNSPEC                   = 0x0\n\tNFTA_GEN_ID                       = 0x1\n\tNFTA_GEN_PROC_PID                 = 0x2\n\tNFTA_GEN_PROC_NAME                = 0x3\n\tNFTA_FIB_UNSPEC                   = 0x0\n\tNFTA_FIB_DREG                     = 0x1\n\tNFTA_FIB_RESULT                   = 0x2\n\tNFTA_FIB_FLAGS                    = 0x3\n\tNFT_FIB_RESULT_UNSPEC             = 0x0\n\tNFT_FIB_RESULT_OIF                = 0x1\n\tNFT_FIB_RESULT_OIFNAME            = 0x2\n\tNFT_FIB_RESULT_ADDRTYPE           = 0x3\n\tNFTA_FIB_F_SADDR                  = 0x1\n\tNFTA_FIB_F_DADDR                  = 0x2\n\tNFTA_FIB_F_MARK                   = 0x4\n\tNFTA_FIB_F_IIF                    = 0x8\n\tNFTA_FIB_F_OIF                    = 0x10\n\tNFTA_FIB_F_PRESENT                = 0x20\n\tNFTA_CT_HELPER_UNSPEC             = 0x0\n\tNFTA_CT_HELPER_NAME               = 0x1\n\tNFTA_CT_HELPER_L3PROTO            = 0x2\n\tNFTA_CT_HELPER_L4PROTO            = 0x3\n\tNFTA_OBJ_UNSPEC                   = 0x0\n\tNFTA_OBJ_TABLE                    = 0x1\n\tNFTA_OBJ_NAME                     = 0x2\n\tNFTA_OBJ_TYPE                     = 0x3\n\tNFTA_OBJ_DATA                     = 0x4\n\tNFTA_OBJ_USE                      = 0x5\n\tNFTA_TRACE_UNSPEC                 = 0x0\n\tNFTA_TRACE_TABLE                  = 0x1\n\tNFTA_TRACE_CHAIN                  = 0x2\n\tNFTA_TRACE_RULE_HANDLE            = 0x3\n\tNFTA_TRACE_TYPE                   = 0x4\n\tNFTA_TRACE_VERDICT                = 0x5\n\tNFTA_TRACE_ID                     = 0x6\n\tNFTA_TRACE_LL_HEADER              = 0x7\n\tNFTA_TRACE_NETWORK_HEADER         = 0x8\n\tNFTA_TRACE_TRANSPORT_HEADER       = 0x9\n\tNFTA_TRACE_IIF                    = 0xa\n\tNFTA_TRACE_IIFTYPE                = 0xb\n\tNFTA_TRACE_OIF                    = 0xc\n\tNFTA_TRACE_OIFTYPE                = 0xd\n\tNFTA_TRACE_MARK                   = 0xe\n\tNFTA_TRACE_NFPROTO                = 0xf\n\tNFTA_TRACE_POLICY                 = 0x10\n\tNFTA_TRACE_PAD                    = 0x11\n\tNFT_TRACETYPE_UNSPEC              = 0x0\n\tNFT_TRACETYPE_POLICY              = 0x1\n\tNFT_TRACETYPE_RETURN              = 0x2\n\tNFT_TRACETYPE_RULE                = 0x3\n\tNFTA_NG_UNSPEC                    = 0x0\n\tNFTA_NG_DREG                      = 0x1\n\tNFTA_NG_MODULUS                   = 0x2\n\tNFTA_NG_TYPE                      = 0x3\n\tNFTA_NG_OFFSET                    = 0x4\n\tNFT_NG_INCREMENTAL                = 0x0\n\tNFT_NG_RANDOM                     = 0x1\n)\n\nconst (\n\tNFTA_TARGET_UNSPEC = 0x0\n\tNFTA_TARGET_NAME   = 0x1\n\tNFTA_TARGET_REV    = 0x2\n\tNFTA_TARGET_INFO   = 0x3\n\tNFTA_MATCH_UNSPEC  = 0x0\n\tNFTA_MATCH_NAME    = 0x1\n\tNFTA_MATCH_REV     = 0x2\n\tNFTA_MATCH_INFO    = 0x3\n\tNFTA_COMPAT_UNSPEC = 0x0\n\tNFTA_COMPAT_NAME   = 0x1\n\tNFTA_COMPAT_REV    = 0x2\n\tNFTA_COMPAT_TYPE   = 0x3\n)\n\ntype RTCTime struct {\n\tSec   int32\n\tMin   int32\n\tHour  int32\n\tMday  int32\n\tMon   int32\n\tYear  int32\n\tWday  int32\n\tYday  int32\n\tIsdst int32\n}\n\ntype RTCWkAlrm struct {\n\tEnabled uint8\n\tPending uint8\n\tTime    RTCTime\n}\n\ntype BlkpgIoctlArg struct {\n\tOp      int32\n\tFlags   int32\n\tDatalen int32\n\tData    *byte\n}\n\nconst (\n\tBLKPG_ADD_PARTITION    = 0x1\n\tBLKPG_DEL_PARTITION    = 0x2\n\tBLKPG_RESIZE_PARTITION = 0x3\n)\n\nconst (\n\tNETNSA_NONE         = 0x0\n\tNETNSA_NSID         = 0x1\n\tNETNSA_PID          = 0x2\n\tNETNSA_FD           = 0x3\n\tNETNSA_TARGET_NSID  = 0x4\n\tNETNSA_CURRENT_NSID = 0x5\n)\n\ntype XDPRingOffset struct {\n\tProducer uint64\n\tConsumer uint64\n\tDesc     uint64\n\tFlags    uint64\n}\n\ntype XDPMmapOffsets struct {\n\tRx XDPRingOffset\n\tTx XDPRingOffset\n\tFr XDPRingOffset\n\tCr XDPRingOffset\n}\n\ntype XDPUmemReg struct {\n\tAddr            uint64\n\tLen             uint64\n\tSize            uint32\n\tHeadroom        uint32\n\tFlags           uint32\n\tTx_metadata_len uint32\n}\n\ntype XDPStatistics struct {\n\tRx_dropped               uint64\n\tRx_invalid_descs         uint64\n\tTx_invalid_descs         uint64\n\tRx_ring_full             uint64\n\tRx_fill_ring_empty_descs uint64\n\tTx_ring_empty_descs      uint64\n}\n\ntype XDPDesc struct {\n\tAddr    uint64\n\tLen     uint32\n\tOptions uint32\n}\n\nconst (\n\tNCSI_CMD_UNSPEC                 = 0x0\n\tNCSI_CMD_PKG_INFO               = 0x1\n\tNCSI_CMD_SET_INTERFACE          = 0x2\n\tNCSI_CMD_CLEAR_INTERFACE        = 0x3\n\tNCSI_ATTR_UNSPEC                = 0x0\n\tNCSI_ATTR_IFINDEX               = 0x1\n\tNCSI_ATTR_PACKAGE_LIST          = 0x2\n\tNCSI_ATTR_PACKAGE_ID            = 0x3\n\tNCSI_ATTR_CHANNEL_ID            = 0x4\n\tNCSI_PKG_ATTR_UNSPEC            = 0x0\n\tNCSI_PKG_ATTR                   = 0x1\n\tNCSI_PKG_ATTR_ID                = 0x2\n\tNCSI_PKG_ATTR_FORCED            = 0x3\n\tNCSI_PKG_ATTR_CHANNEL_LIST      = 0x4\n\tNCSI_CHANNEL_ATTR_UNSPEC        = 0x0\n\tNCSI_CHANNEL_ATTR               = 0x1\n\tNCSI_CHANNEL_ATTR_ID            = 0x2\n\tNCSI_CHANNEL_ATTR_VERSION_MAJOR = 0x3\n\tNCSI_CHANNEL_ATTR_VERSION_MINOR = 0x4\n\tNCSI_CHANNEL_ATTR_VERSION_STR   = 0x5\n\tNCSI_CHANNEL_ATTR_LINK_STATE    = 0x6\n\tNCSI_CHANNEL_ATTR_ACTIVE        = 0x7\n\tNCSI_CHANNEL_ATTR_FORCED        = 0x8\n\tNCSI_CHANNEL_ATTR_VLAN_LIST     = 0x9\n\tNCSI_CHANNEL_ATTR_VLAN_ID       = 0xa\n)\n\ntype ScmTimestamping struct {\n\tTs [3]Timespec\n}\n\nconst (\n\tSOF_TIMESTAMPING_TX_HARDWARE  = 0x1\n\tSOF_TIMESTAMPING_TX_SOFTWARE  = 0x2\n\tSOF_TIMESTAMPING_RX_HARDWARE  = 0x4\n\tSOF_TIMESTAMPING_RX_SOFTWARE  = 0x8\n\tSOF_TIMESTAMPING_SOFTWARE     = 0x10\n\tSOF_TIMESTAMPING_SYS_HARDWARE = 0x20\n\tSOF_TIMESTAMPING_RAW_HARDWARE = 0x40\n\tSOF_TIMESTAMPING_OPT_ID       = 0x80\n\tSOF_TIMESTAMPING_TX_SCHED     = 0x100\n\tSOF_TIMESTAMPING_TX_ACK       = 0x200\n\tSOF_TIMESTAMPING_OPT_CMSG     = 0x400\n\tSOF_TIMESTAMPING_OPT_TSONLY   = 0x800\n\tSOF_TIMESTAMPING_OPT_STATS    = 0x1000\n\tSOF_TIMESTAMPING_OPT_PKTINFO  = 0x2000\n\tSOF_TIMESTAMPING_OPT_TX_SWHW  = 0x4000\n\tSOF_TIMESTAMPING_BIND_PHC     = 0x8000\n\tSOF_TIMESTAMPING_OPT_ID_TCP   = 0x10000\n\n\tSOF_TIMESTAMPING_LAST = 0x40000\n\tSOF_TIMESTAMPING_MASK = 0x7ffff\n\n\tSCM_TSTAMP_SND   = 0x0\n\tSCM_TSTAMP_SCHED = 0x1\n\tSCM_TSTAMP_ACK   = 0x2\n)\n\ntype SockExtendedErr struct {\n\tErrno  uint32\n\tOrigin uint8\n\tType   uint8\n\tCode   uint8\n\tPad    uint8\n\tInfo   uint32\n\tData   uint32\n}\n\ntype FanotifyEventMetadata struct {\n\tEvent_len    uint32\n\tVers         uint8\n\tReserved     uint8\n\tMetadata_len uint16\n\tMask         uint64\n\tFd           int32\n\tPid          int32\n}\n\ntype FanotifyResponse struct {\n\tFd       int32\n\tResponse uint32\n}\n\nconst (\n\tCRYPTO_MSG_BASE      = 0x10\n\tCRYPTO_MSG_NEWALG    = 0x10\n\tCRYPTO_MSG_DELALG    = 0x11\n\tCRYPTO_MSG_UPDATEALG = 0x12\n\tCRYPTO_MSG_GETALG    = 0x13\n\tCRYPTO_MSG_DELRNG    = 0x14\n\tCRYPTO_MSG_GETSTAT   = 0x15\n)\n\nconst (\n\tCRYPTOCFGA_UNSPEC           = 0x0\n\tCRYPTOCFGA_PRIORITY_VAL     = 0x1\n\tCRYPTOCFGA_REPORT_LARVAL    = 0x2\n\tCRYPTOCFGA_REPORT_HASH      = 0x3\n\tCRYPTOCFGA_REPORT_BLKCIPHER = 0x4\n\tCRYPTOCFGA_REPORT_AEAD      = 0x5\n\tCRYPTOCFGA_REPORT_COMPRESS  = 0x6\n\tCRYPTOCFGA_REPORT_RNG       = 0x7\n\tCRYPTOCFGA_REPORT_CIPHER    = 0x8\n\tCRYPTOCFGA_REPORT_AKCIPHER  = 0x9\n\tCRYPTOCFGA_REPORT_KPP       = 0xa\n\tCRYPTOCFGA_REPORT_ACOMP     = 0xb\n\tCRYPTOCFGA_STAT_LARVAL      = 0xc\n\tCRYPTOCFGA_STAT_HASH        = 0xd\n\tCRYPTOCFGA_STAT_BLKCIPHER   = 0xe\n\tCRYPTOCFGA_STAT_AEAD        = 0xf\n\tCRYPTOCFGA_STAT_COMPRESS    = 0x10\n\tCRYPTOCFGA_STAT_RNG         = 0x11\n\tCRYPTOCFGA_STAT_CIPHER      = 0x12\n\tCRYPTOCFGA_STAT_AKCIPHER    = 0x13\n\tCRYPTOCFGA_STAT_KPP         = 0x14\n\tCRYPTOCFGA_STAT_ACOMP       = 0x15\n)\n\nconst (\n\tBPF_REG_0                                  = 0x0\n\tBPF_REG_1                                  = 0x1\n\tBPF_REG_2                                  = 0x2\n\tBPF_REG_3                                  = 0x3\n\tBPF_REG_4                                  = 0x4\n\tBPF_REG_5                                  = 0x5\n\tBPF_REG_6                                  = 0x6\n\tBPF_REG_7                                  = 0x7\n\tBPF_REG_8                                  = 0x8\n\tBPF_REG_9                                  = 0x9\n\tBPF_REG_10                                 = 0xa\n\tBPF_CGROUP_ITER_ORDER_UNSPEC               = 0x0\n\tBPF_CGROUP_ITER_SELF_ONLY                  = 0x1\n\tBPF_CGROUP_ITER_DESCENDANTS_PRE            = 0x2\n\tBPF_CGROUP_ITER_DESCENDANTS_POST           = 0x3\n\tBPF_CGROUP_ITER_ANCESTORS_UP               = 0x4\n\tBPF_MAP_CREATE                             = 0x0\n\tBPF_MAP_LOOKUP_ELEM                        = 0x1\n\tBPF_MAP_UPDATE_ELEM                        = 0x2\n\tBPF_MAP_DELETE_ELEM                        = 0x3\n\tBPF_MAP_GET_NEXT_KEY                       = 0x4\n\tBPF_PROG_LOAD                              = 0x5\n\tBPF_OBJ_PIN                                = 0x6\n\tBPF_OBJ_GET                                = 0x7\n\tBPF_PROG_ATTACH                            = 0x8\n\tBPF_PROG_DETACH                            = 0x9\n\tBPF_PROG_TEST_RUN                          = 0xa\n\tBPF_PROG_RUN                               = 0xa\n\tBPF_PROG_GET_NEXT_ID                       = 0xb\n\tBPF_MAP_GET_NEXT_ID                        = 0xc\n\tBPF_PROG_GET_FD_BY_ID                      = 0xd\n\tBPF_MAP_GET_FD_BY_ID                       = 0xe\n\tBPF_OBJ_GET_INFO_BY_FD                     = 0xf\n\tBPF_PROG_QUERY                             = 0x10\n\tBPF_RAW_TRACEPOINT_OPEN                    = 0x11\n\tBPF_BTF_LOAD                               = 0x12\n\tBPF_BTF_GET_FD_BY_ID                       = 0x13\n\tBPF_TASK_FD_QUERY                          = 0x14\n\tBPF_MAP_LOOKUP_AND_DELETE_ELEM             = 0x15\n\tBPF_MAP_FREEZE                             = 0x16\n\tBPF_BTF_GET_NEXT_ID                        = 0x17\n\tBPF_MAP_LOOKUP_BATCH                       = 0x18\n\tBPF_MAP_LOOKUP_AND_DELETE_BATCH            = 0x19\n\tBPF_MAP_UPDATE_BATCH                       = 0x1a\n\tBPF_MAP_DELETE_BATCH                       = 0x1b\n\tBPF_LINK_CREATE                            = 0x1c\n\tBPF_LINK_UPDATE                            = 0x1d\n\tBPF_LINK_GET_FD_BY_ID                      = 0x1e\n\tBPF_LINK_GET_NEXT_ID                       = 0x1f\n\tBPF_ENABLE_STATS                           = 0x20\n\tBPF_ITER_CREATE                            = 0x21\n\tBPF_LINK_DETACH                            = 0x22\n\tBPF_PROG_BIND_MAP                          = 0x23\n\tBPF_MAP_TYPE_UNSPEC                        = 0x0\n\tBPF_MAP_TYPE_HASH                          = 0x1\n\tBPF_MAP_TYPE_ARRAY                         = 0x2\n\tBPF_MAP_TYPE_PROG_ARRAY                    = 0x3\n\tBPF_MAP_TYPE_PERF_EVENT_ARRAY              = 0x4\n\tBPF_MAP_TYPE_PERCPU_HASH                   = 0x5\n\tBPF_MAP_TYPE_PERCPU_ARRAY                  = 0x6\n\tBPF_MAP_TYPE_STACK_TRACE                   = 0x7\n\tBPF_MAP_TYPE_CGROUP_ARRAY                  = 0x8\n\tBPF_MAP_TYPE_LRU_HASH                      = 0x9\n\tBPF_MAP_TYPE_LRU_PERCPU_HASH               = 0xa\n\tBPF_MAP_TYPE_LPM_TRIE                      = 0xb\n\tBPF_MAP_TYPE_ARRAY_OF_MAPS                 = 0xc\n\tBPF_MAP_TYPE_HASH_OF_MAPS                  = 0xd\n\tBPF_MAP_TYPE_DEVMAP                        = 0xe\n\tBPF_MAP_TYPE_SOCKMAP                       = 0xf\n\tBPF_MAP_TYPE_CPUMAP                        = 0x10\n\tBPF_MAP_TYPE_XSKMAP                        = 0x11\n\tBPF_MAP_TYPE_SOCKHASH                      = 0x12\n\tBPF_MAP_TYPE_CGROUP_STORAGE_DEPRECATED     = 0x13\n\tBPF_MAP_TYPE_CGROUP_STORAGE                = 0x13\n\tBPF_MAP_TYPE_REUSEPORT_SOCKARRAY           = 0x14\n\tBPF_MAP_TYPE_PERCPU_CGROUP_STORAGE         = 0x15\n\tBPF_MAP_TYPE_QUEUE                         = 0x16\n\tBPF_MAP_TYPE_STACK                         = 0x17\n\tBPF_MAP_TYPE_SK_STORAGE                    = 0x18\n\tBPF_MAP_TYPE_DEVMAP_HASH                   = 0x19\n\tBPF_MAP_TYPE_STRUCT_OPS                    = 0x1a\n\tBPF_MAP_TYPE_RINGBUF                       = 0x1b\n\tBPF_MAP_TYPE_INODE_STORAGE                 = 0x1c\n\tBPF_MAP_TYPE_TASK_STORAGE                  = 0x1d\n\tBPF_MAP_TYPE_BLOOM_FILTER                  = 0x1e\n\tBPF_MAP_TYPE_USER_RINGBUF                  = 0x1f\n\tBPF_MAP_TYPE_CGRP_STORAGE                  = 0x20\n\tBPF_PROG_TYPE_UNSPEC                       = 0x0\n\tBPF_PROG_TYPE_SOCKET_FILTER                = 0x1\n\tBPF_PROG_TYPE_KPROBE                       = 0x2\n\tBPF_PROG_TYPE_SCHED_CLS                    = 0x3\n\tBPF_PROG_TYPE_SCHED_ACT                    = 0x4\n\tBPF_PROG_TYPE_TRACEPOINT                   = 0x5\n\tBPF_PROG_TYPE_XDP                          = 0x6\n\tBPF_PROG_TYPE_PERF_EVENT                   = 0x7\n\tBPF_PROG_TYPE_CGROUP_SKB                   = 0x8\n\tBPF_PROG_TYPE_CGROUP_SOCK                  = 0x9\n\tBPF_PROG_TYPE_LWT_IN                       = 0xa\n\tBPF_PROG_TYPE_LWT_OUT                      = 0xb\n\tBPF_PROG_TYPE_LWT_XMIT                     = 0xc\n\tBPF_PROG_TYPE_SOCK_OPS                     = 0xd\n\tBPF_PROG_TYPE_SK_SKB                       = 0xe\n\tBPF_PROG_TYPE_CGROUP_DEVICE                = 0xf\n\tBPF_PROG_TYPE_SK_MSG                       = 0x10\n\tBPF_PROG_TYPE_RAW_TRACEPOINT               = 0x11\n\tBPF_PROG_TYPE_CGROUP_SOCK_ADDR             = 0x12\n\tBPF_PROG_TYPE_LWT_SEG6LOCAL                = 0x13\n\tBPF_PROG_TYPE_LIRC_MODE2                   = 0x14\n\tBPF_PROG_TYPE_SK_REUSEPORT                 = 0x15\n\tBPF_PROG_TYPE_FLOW_DISSECTOR               = 0x16\n\tBPF_PROG_TYPE_CGROUP_SYSCTL                = 0x17\n\tBPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE      = 0x18\n\tBPF_PROG_TYPE_CGROUP_SOCKOPT               = 0x19\n\tBPF_PROG_TYPE_TRACING                      = 0x1a\n\tBPF_PROG_TYPE_STRUCT_OPS                   = 0x1b\n\tBPF_PROG_TYPE_EXT                          = 0x1c\n\tBPF_PROG_TYPE_LSM                          = 0x1d\n\tBPF_PROG_TYPE_SK_LOOKUP                    = 0x1e\n\tBPF_PROG_TYPE_SYSCALL                      = 0x1f\n\tBPF_PROG_TYPE_NETFILTER                    = 0x20\n\tBPF_CGROUP_INET_INGRESS                    = 0x0\n\tBPF_CGROUP_INET_EGRESS                     = 0x1\n\tBPF_CGROUP_INET_SOCK_CREATE                = 0x2\n\tBPF_CGROUP_SOCK_OPS                        = 0x3\n\tBPF_SK_SKB_STREAM_PARSER                   = 0x4\n\tBPF_SK_SKB_STREAM_VERDICT                  = 0x5\n\tBPF_CGROUP_DEVICE                          = 0x6\n\tBPF_SK_MSG_VERDICT                         = 0x7\n\tBPF_CGROUP_INET4_BIND                      = 0x8\n\tBPF_CGROUP_INET6_BIND                      = 0x9\n\tBPF_CGROUP_INET4_CONNECT                   = 0xa\n\tBPF_CGROUP_INET6_CONNECT                   = 0xb\n\tBPF_CGROUP_INET4_POST_BIND                 = 0xc\n\tBPF_CGROUP_INET6_POST_BIND                 = 0xd\n\tBPF_CGROUP_UDP4_SENDMSG                    = 0xe\n\tBPF_CGROUP_UDP6_SENDMSG                    = 0xf\n\tBPF_LIRC_MODE2                             = 0x10\n\tBPF_FLOW_DISSECTOR                         = 0x11\n\tBPF_CGROUP_SYSCTL                          = 0x12\n\tBPF_CGROUP_UDP4_RECVMSG                    = 0x13\n\tBPF_CGROUP_UDP6_RECVMSG                    = 0x14\n\tBPF_CGROUP_GETSOCKOPT                      = 0x15\n\tBPF_CGROUP_SETSOCKOPT                      = 0x16\n\tBPF_TRACE_RAW_TP                           = 0x17\n\tBPF_TRACE_FENTRY                           = 0x18\n\tBPF_TRACE_FEXIT                            = 0x19\n\tBPF_MODIFY_RETURN                          = 0x1a\n\tBPF_LSM_MAC                                = 0x1b\n\tBPF_TRACE_ITER                             = 0x1c\n\tBPF_CGROUP_INET4_GETPEERNAME               = 0x1d\n\tBPF_CGROUP_INET6_GETPEERNAME               = 0x1e\n\tBPF_CGROUP_INET4_GETSOCKNAME               = 0x1f\n\tBPF_CGROUP_INET6_GETSOCKNAME               = 0x20\n\tBPF_XDP_DEVMAP                             = 0x21\n\tBPF_CGROUP_INET_SOCK_RELEASE               = 0x22\n\tBPF_XDP_CPUMAP                             = 0x23\n\tBPF_SK_LOOKUP                              = 0x24\n\tBPF_XDP                                    = 0x25\n\tBPF_SK_SKB_VERDICT                         = 0x26\n\tBPF_SK_REUSEPORT_SELECT                    = 0x27\n\tBPF_SK_REUSEPORT_SELECT_OR_MIGRATE         = 0x28\n\tBPF_PERF_EVENT                             = 0x29\n\tBPF_TRACE_KPROBE_MULTI                     = 0x2a\n\tBPF_LSM_CGROUP                             = 0x2b\n\tBPF_STRUCT_OPS                             = 0x2c\n\tBPF_NETFILTER                              = 0x2d\n\tBPF_TCX_INGRESS                            = 0x2e\n\tBPF_TCX_EGRESS                             = 0x2f\n\tBPF_TRACE_UPROBE_MULTI                     = 0x30\n\tBPF_LINK_TYPE_UNSPEC                       = 0x0\n\tBPF_LINK_TYPE_RAW_TRACEPOINT               = 0x1\n\tBPF_LINK_TYPE_TRACING                      = 0x2\n\tBPF_LINK_TYPE_CGROUP                       = 0x3\n\tBPF_LINK_TYPE_ITER                         = 0x4\n\tBPF_LINK_TYPE_NETNS                        = 0x5\n\tBPF_LINK_TYPE_XDP                          = 0x6\n\tBPF_LINK_TYPE_PERF_EVENT                   = 0x7\n\tBPF_LINK_TYPE_KPROBE_MULTI                 = 0x8\n\tBPF_LINK_TYPE_STRUCT_OPS                   = 0x9\n\tBPF_LINK_TYPE_NETFILTER                    = 0xa\n\tBPF_LINK_TYPE_TCX                          = 0xb\n\tBPF_LINK_TYPE_UPROBE_MULTI                 = 0xc\n\tBPF_PERF_EVENT_UNSPEC                      = 0x0\n\tBPF_PERF_EVENT_UPROBE                      = 0x1\n\tBPF_PERF_EVENT_URETPROBE                   = 0x2\n\tBPF_PERF_EVENT_KPROBE                      = 0x3\n\tBPF_PERF_EVENT_KRETPROBE                   = 0x4\n\tBPF_PERF_EVENT_TRACEPOINT                  = 0x5\n\tBPF_PERF_EVENT_EVENT                       = 0x6\n\tBPF_F_KPROBE_MULTI_RETURN                  = 0x1\n\tBPF_F_UPROBE_MULTI_RETURN                  = 0x1\n\tBPF_ANY                                    = 0x0\n\tBPF_NOEXIST                                = 0x1\n\tBPF_EXIST                                  = 0x2\n\tBPF_F_LOCK                                 = 0x4\n\tBPF_F_NO_PREALLOC                          = 0x1\n\tBPF_F_NO_COMMON_LRU                        = 0x2\n\tBPF_F_NUMA_NODE                            = 0x4\n\tBPF_F_RDONLY                               = 0x8\n\tBPF_F_WRONLY                               = 0x10\n\tBPF_F_STACK_BUILD_ID                       = 0x20\n\tBPF_F_ZERO_SEED                            = 0x40\n\tBPF_F_RDONLY_PROG                          = 0x80\n\tBPF_F_WRONLY_PROG                          = 0x100\n\tBPF_F_CLONE                                = 0x200\n\tBPF_F_MMAPABLE                             = 0x400\n\tBPF_F_PRESERVE_ELEMS                       = 0x800\n\tBPF_F_INNER_MAP                            = 0x1000\n\tBPF_F_LINK                                 = 0x2000\n\tBPF_F_PATH_FD                              = 0x4000\n\tBPF_STATS_RUN_TIME                         = 0x0\n\tBPF_STACK_BUILD_ID_EMPTY                   = 0x0\n\tBPF_STACK_BUILD_ID_VALID                   = 0x1\n\tBPF_STACK_BUILD_ID_IP                      = 0x2\n\tBPF_F_RECOMPUTE_CSUM                       = 0x1\n\tBPF_F_INVALIDATE_HASH                      = 0x2\n\tBPF_F_HDR_FIELD_MASK                       = 0xf\n\tBPF_F_PSEUDO_HDR                           = 0x10\n\tBPF_F_MARK_MANGLED_0                       = 0x20\n\tBPF_F_MARK_ENFORCE                         = 0x40\n\tBPF_F_INGRESS                              = 0x1\n\tBPF_F_TUNINFO_IPV6                         = 0x1\n\tBPF_F_SKIP_FIELD_MASK                      = 0xff\n\tBPF_F_USER_STACK                           = 0x100\n\tBPF_F_FAST_STACK_CMP                       = 0x200\n\tBPF_F_REUSE_STACKID                        = 0x400\n\tBPF_F_USER_BUILD_ID                        = 0x800\n\tBPF_F_ZERO_CSUM_TX                         = 0x2\n\tBPF_F_DONT_FRAGMENT                        = 0x4\n\tBPF_F_SEQ_NUMBER                           = 0x8\n\tBPF_F_NO_TUNNEL_KEY                        = 0x10\n\tBPF_F_TUNINFO_FLAGS                        = 0x10\n\tBPF_F_INDEX_MASK                           = 0xffffffff\n\tBPF_F_CURRENT_CPU                          = 0xffffffff\n\tBPF_F_CTXLEN_MASK                          = 0xfffff00000000\n\tBPF_F_CURRENT_NETNS                        = -0x1\n\tBPF_CSUM_LEVEL_QUERY                       = 0x0\n\tBPF_CSUM_LEVEL_INC                         = 0x1\n\tBPF_CSUM_LEVEL_DEC                         = 0x2\n\tBPF_CSUM_LEVEL_RESET                       = 0x3\n\tBPF_F_ADJ_ROOM_FIXED_GSO                   = 0x1\n\tBPF_F_ADJ_ROOM_ENCAP_L3_IPV4               = 0x2\n\tBPF_F_ADJ_ROOM_ENCAP_L3_IPV6               = 0x4\n\tBPF_F_ADJ_ROOM_ENCAP_L4_GRE                = 0x8\n\tBPF_F_ADJ_ROOM_ENCAP_L4_UDP                = 0x10\n\tBPF_F_ADJ_ROOM_NO_CSUM_RESET               = 0x20\n\tBPF_F_ADJ_ROOM_ENCAP_L2_ETH                = 0x40\n\tBPF_F_ADJ_ROOM_DECAP_L3_IPV4               = 0x80\n\tBPF_F_ADJ_ROOM_DECAP_L3_IPV6               = 0x100\n\tBPF_ADJ_ROOM_ENCAP_L2_MASK                 = 0xff\n\tBPF_ADJ_ROOM_ENCAP_L2_SHIFT                = 0x38\n\tBPF_F_SYSCTL_BASE_NAME                     = 0x1\n\tBPF_LOCAL_STORAGE_GET_F_CREATE             = 0x1\n\tBPF_SK_STORAGE_GET_F_CREATE                = 0x1\n\tBPF_F_GET_BRANCH_RECORDS_SIZE              = 0x1\n\tBPF_RB_NO_WAKEUP                           = 0x1\n\tBPF_RB_FORCE_WAKEUP                        = 0x2\n\tBPF_RB_AVAIL_DATA                          = 0x0\n\tBPF_RB_RING_SIZE                           = 0x1\n\tBPF_RB_CONS_POS                            = 0x2\n\tBPF_RB_PROD_POS                            = 0x3\n\tBPF_RINGBUF_BUSY_BIT                       = 0x80000000\n\tBPF_RINGBUF_DISCARD_BIT                    = 0x40000000\n\tBPF_RINGBUF_HDR_SZ                         = 0x8\n\tBPF_SK_LOOKUP_F_REPLACE                    = 0x1\n\tBPF_SK_LOOKUP_F_NO_REUSEPORT               = 0x2\n\tBPF_ADJ_ROOM_NET                           = 0x0\n\tBPF_ADJ_ROOM_MAC                           = 0x1\n\tBPF_HDR_START_MAC                          = 0x0\n\tBPF_HDR_START_NET                          = 0x1\n\tBPF_LWT_ENCAP_SEG6                         = 0x0\n\tBPF_LWT_ENCAP_SEG6_INLINE                  = 0x1\n\tBPF_LWT_ENCAP_IP                           = 0x2\n\tBPF_F_BPRM_SECUREEXEC                      = 0x1\n\tBPF_F_BROADCAST                            = 0x8\n\tBPF_F_EXCLUDE_INGRESS                      = 0x10\n\tBPF_SKB_TSTAMP_UNSPEC                      = 0x0\n\tBPF_SKB_TSTAMP_DELIVERY_MONO               = 0x1\n\tBPF_OK                                     = 0x0\n\tBPF_DROP                                   = 0x2\n\tBPF_REDIRECT                               = 0x7\n\tBPF_LWT_REROUTE                            = 0x80\n\tBPF_FLOW_DISSECTOR_CONTINUE                = 0x81\n\tBPF_SOCK_OPS_RTO_CB_FLAG                   = 0x1\n\tBPF_SOCK_OPS_RETRANS_CB_FLAG               = 0x2\n\tBPF_SOCK_OPS_STATE_CB_FLAG                 = 0x4\n\tBPF_SOCK_OPS_RTT_CB_FLAG                   = 0x8\n\tBPF_SOCK_OPS_PARSE_ALL_HDR_OPT_CB_FLAG     = 0x10\n\tBPF_SOCK_OPS_PARSE_UNKNOWN_HDR_OPT_CB_FLAG = 0x20\n\tBPF_SOCK_OPS_WRITE_HDR_OPT_CB_FLAG         = 0x40\n\tBPF_SOCK_OPS_ALL_CB_FLAGS                  = 0x7f\n\tBPF_SOCK_OPS_VOID                          = 0x0\n\tBPF_SOCK_OPS_TIMEOUT_INIT                  = 0x1\n\tBPF_SOCK_OPS_RWND_INIT                     = 0x2\n\tBPF_SOCK_OPS_TCP_CONNECT_CB                = 0x3\n\tBPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB         = 0x4\n\tBPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB        = 0x5\n\tBPF_SOCK_OPS_NEEDS_ECN                     = 0x6\n\tBPF_SOCK_OPS_BASE_RTT                      = 0x7\n\tBPF_SOCK_OPS_RTO_CB                        = 0x8\n\tBPF_SOCK_OPS_RETRANS_CB                    = 0x9\n\tBPF_SOCK_OPS_STATE_CB                      = 0xa\n\tBPF_SOCK_OPS_TCP_LISTEN_CB                 = 0xb\n\tBPF_SOCK_OPS_RTT_CB                        = 0xc\n\tBPF_SOCK_OPS_PARSE_HDR_OPT_CB              = 0xd\n\tBPF_SOCK_OPS_HDR_OPT_LEN_CB                = 0xe\n\tBPF_SOCK_OPS_WRITE_HDR_OPT_CB              = 0xf\n\tBPF_TCP_ESTABLISHED                        = 0x1\n\tBPF_TCP_SYN_SENT                           = 0x2\n\tBPF_TCP_SYN_RECV                           = 0x3\n\tBPF_TCP_FIN_WAIT1                          = 0x4\n\tBPF_TCP_FIN_WAIT2                          = 0x5\n\tBPF_TCP_TIME_WAIT                          = 0x6\n\tBPF_TCP_CLOSE                              = 0x7\n\tBPF_TCP_CLOSE_WAIT                         = 0x8\n\tBPF_TCP_LAST_ACK                           = 0x9\n\tBPF_TCP_LISTEN                             = 0xa\n\tBPF_TCP_CLOSING                            = 0xb\n\tBPF_TCP_NEW_SYN_RECV                       = 0xc\n\tBPF_TCP_MAX_STATES                         = 0xe\n\tTCP_BPF_IW                                 = 0x3e9\n\tTCP_BPF_SNDCWND_CLAMP                      = 0x3ea\n\tTCP_BPF_DELACK_MAX                         = 0x3eb\n\tTCP_BPF_RTO_MIN                            = 0x3ec\n\tTCP_BPF_SYN                                = 0x3ed\n\tTCP_BPF_SYN_IP                             = 0x3ee\n\tTCP_BPF_SYN_MAC                            = 0x3ef\n\tBPF_LOAD_HDR_OPT_TCP_SYN                   = 0x1\n\tBPF_WRITE_HDR_TCP_CURRENT_MSS              = 0x1\n\tBPF_WRITE_HDR_TCP_SYNACK_COOKIE            = 0x2\n\tBPF_DEVCG_ACC_MKNOD                        = 0x1\n\tBPF_DEVCG_ACC_READ                         = 0x2\n\tBPF_DEVCG_ACC_WRITE                        = 0x4\n\tBPF_DEVCG_DEV_BLOCK                        = 0x1\n\tBPF_DEVCG_DEV_CHAR                         = 0x2\n\tBPF_FIB_LOOKUP_DIRECT                      = 0x1\n\tBPF_FIB_LOOKUP_OUTPUT                      = 0x2\n\tBPF_FIB_LOOKUP_SKIP_NEIGH                  = 0x4\n\tBPF_FIB_LOOKUP_TBID                        = 0x8\n\tBPF_FIB_LKUP_RET_SUCCESS                   = 0x0\n\tBPF_FIB_LKUP_RET_BLACKHOLE                 = 0x1\n\tBPF_FIB_LKUP_RET_UNREACHABLE               = 0x2\n\tBPF_FIB_LKUP_RET_PROHIBIT                  = 0x3\n\tBPF_FIB_LKUP_RET_NOT_FWDED                 = 0x4\n\tBPF_FIB_LKUP_RET_FWD_DISABLED              = 0x5\n\tBPF_FIB_LKUP_RET_UNSUPP_LWT                = 0x6\n\tBPF_FIB_LKUP_RET_NO_NEIGH                  = 0x7\n\tBPF_FIB_LKUP_RET_FRAG_NEEDED               = 0x8\n\tBPF_MTU_CHK_SEGS                           = 0x1\n\tBPF_MTU_CHK_RET_SUCCESS                    = 0x0\n\tBPF_MTU_CHK_RET_FRAG_NEEDED                = 0x1\n\tBPF_MTU_CHK_RET_SEGS_TOOBIG                = 0x2\n\tBPF_FD_TYPE_RAW_TRACEPOINT                 = 0x0\n\tBPF_FD_TYPE_TRACEPOINT                     = 0x1\n\tBPF_FD_TYPE_KPROBE                         = 0x2\n\tBPF_FD_TYPE_KRETPROBE                      = 0x3\n\tBPF_FD_TYPE_UPROBE                         = 0x4\n\tBPF_FD_TYPE_URETPROBE                      = 0x5\n\tBPF_FLOW_DISSECTOR_F_PARSE_1ST_FRAG        = 0x1\n\tBPF_FLOW_DISSECTOR_F_STOP_AT_FLOW_LABEL    = 0x2\n\tBPF_FLOW_DISSECTOR_F_STOP_AT_ENCAP         = 0x4\n\tBPF_CORE_FIELD_BYTE_OFFSET                 = 0x0\n\tBPF_CORE_FIELD_BYTE_SIZE                   = 0x1\n\tBPF_CORE_FIELD_EXISTS                      = 0x2\n\tBPF_CORE_FIELD_SIGNED                      = 0x3\n\tBPF_CORE_FIELD_LSHIFT_U64                  = 0x4\n\tBPF_CORE_FIELD_RSHIFT_U64                  = 0x5\n\tBPF_CORE_TYPE_ID_LOCAL                     = 0x6\n\tBPF_CORE_TYPE_ID_TARGET                    = 0x7\n\tBPF_CORE_TYPE_EXISTS                       = 0x8\n\tBPF_CORE_TYPE_SIZE                         = 0x9\n\tBPF_CORE_ENUMVAL_EXISTS                    = 0xa\n\tBPF_CORE_ENUMVAL_VALUE                     = 0xb\n\tBPF_CORE_TYPE_MATCHES                      = 0xc\n\tBPF_F_TIMER_ABS                            = 0x1\n)\n\nconst (\n\tTCA_UNSPEC            = 0x0\n\tTCA_KIND              = 0x1\n\tTCA_OPTIONS           = 0x2\n\tTCA_STATS             = 0x3\n\tTCA_XSTATS            = 0x4\n\tTCA_RATE              = 0x5\n\tTCA_FCNT              = 0x6\n\tTCA_STATS2            = 0x7\n\tTCA_STAB              = 0x8\n\tTCA_PAD               = 0x9\n\tTCA_DUMP_INVISIBLE    = 0xa\n\tTCA_CHAIN             = 0xb\n\tTCA_HW_OFFLOAD        = 0xc\n\tTCA_INGRESS_BLOCK     = 0xd\n\tTCA_EGRESS_BLOCK      = 0xe\n\tTCA_DUMP_FLAGS        = 0xf\n\tTCA_EXT_WARN_MSG      = 0x10\n\tRTNLGRP_NONE          = 0x0\n\tRTNLGRP_LINK          = 0x1\n\tRTNLGRP_NOTIFY        = 0x2\n\tRTNLGRP_NEIGH         = 0x3\n\tRTNLGRP_TC            = 0x4\n\tRTNLGRP_IPV4_IFADDR   = 0x5\n\tRTNLGRP_IPV4_MROUTE   = 0x6\n\tRTNLGRP_IPV4_ROUTE    = 0x7\n\tRTNLGRP_IPV4_RULE     = 0x8\n\tRTNLGRP_IPV6_IFADDR   = 0x9\n\tRTNLGRP_IPV6_MROUTE   = 0xa\n\tRTNLGRP_IPV6_ROUTE    = 0xb\n\tRTNLGRP_IPV6_IFINFO   = 0xc\n\tRTNLGRP_DECnet_IFADDR = 0xd\n\tRTNLGRP_NOP2          = 0xe\n\tRTNLGRP_DECnet_ROUTE  = 0xf\n\tRTNLGRP_DECnet_RULE   = 0x10\n\tRTNLGRP_NOP4          = 0x11\n\tRTNLGRP_IPV6_PREFIX   = 0x12\n\tRTNLGRP_IPV6_RULE     = 0x13\n\tRTNLGRP_ND_USEROPT    = 0x14\n\tRTNLGRP_PHONET_IFADDR = 0x15\n\tRTNLGRP_PHONET_ROUTE  = 0x16\n\tRTNLGRP_DCB           = 0x17\n\tRTNLGRP_IPV4_NETCONF  = 0x18\n\tRTNLGRP_IPV6_NETCONF  = 0x19\n\tRTNLGRP_MDB           = 0x1a\n\tRTNLGRP_MPLS_ROUTE    = 0x1b\n\tRTNLGRP_NSID          = 0x1c\n\tRTNLGRP_MPLS_NETCONF  = 0x1d\n\tRTNLGRP_IPV4_MROUTE_R = 0x1e\n\tRTNLGRP_IPV6_MROUTE_R = 0x1f\n\tRTNLGRP_NEXTHOP       = 0x20\n\tRTNLGRP_BRVLAN        = 0x21\n\tRTNLGRP_MCTP_IFADDR   = 0x22\n\tRTNLGRP_TUNNEL        = 0x23\n\tRTNLGRP_STATS         = 0x24\n\tRTNLGRP_IPV4_MCADDR   = 0x25\n\tRTNLGRP_IPV6_MCADDR   = 0x26\n\tRTNLGRP_IPV6_ACADDR   = 0x27\n\tTCA_ROOT_UNSPEC       = 0x0\n\tTCA_ROOT_TAB          = 0x1\n\tTCA_ROOT_FLAGS        = 0x2\n\tTCA_ROOT_COUNT        = 0x3\n\tTCA_ROOT_TIME_DELTA   = 0x4\n\tTCA_ROOT_EXT_WARN_MSG = 0x5\n)\n\ntype CapUserHeader struct {\n\tVersion uint32\n\tPid     int32\n}\n\ntype CapUserData struct {\n\tEffective   uint32\n\tPermitted   uint32\n\tInheritable uint32\n}\n\nconst (\n\tLINUX_CAPABILITY_VERSION_1 = 0x19980330\n\tLINUX_CAPABILITY_VERSION_2 = 0x20071026\n\tLINUX_CAPABILITY_VERSION_3 = 0x20080522\n)\n\nconst (\n\tLO_FLAGS_READ_ONLY = 0x1\n\tLO_FLAGS_AUTOCLEAR = 0x4\n\tLO_FLAGS_PARTSCAN  = 0x8\n\tLO_FLAGS_DIRECT_IO = 0x10\n)\n\ntype LoopInfo64 struct {\n\tDevice           uint64\n\tInode            uint64\n\tRdevice          uint64\n\tOffset           uint64\n\tSizelimit        uint64\n\tNumber           uint32\n\tEncrypt_type     uint32\n\tEncrypt_key_size uint32\n\tFlags            uint32\n\tFile_name        [64]uint8\n\tCrypt_name       [64]uint8\n\tEncrypt_key      [32]uint8\n\tInit             [2]uint64\n}\ntype LoopConfig struct {\n\tFd   uint32\n\tSize uint32\n\tInfo LoopInfo64\n\t_    [8]uint64\n}\n\ntype TIPCSocketAddr struct {\n\tRef  uint32\n\tNode uint32\n}\n\ntype TIPCServiceRange struct {\n\tType  uint32\n\tLower uint32\n\tUpper uint32\n}\n\ntype TIPCServiceName struct {\n\tType     uint32\n\tInstance uint32\n\tDomain   uint32\n}\n\ntype TIPCEvent struct {\n\tEvent uint32\n\tLower uint32\n\tUpper uint32\n\tPort  TIPCSocketAddr\n\tS     TIPCSubscr\n}\n\ntype TIPCGroupReq struct {\n\tType     uint32\n\tInstance uint32\n\tScope    uint32\n\tFlags    uint32\n}\n\nconst (\n\tTIPC_CLUSTER_SCOPE = 0x2\n\tTIPC_NODE_SCOPE    = 0x3\n)\n\nconst (\n\tSYSLOG_ACTION_CLOSE         = 0\n\tSYSLOG_ACTION_OPEN          = 1\n\tSYSLOG_ACTION_READ          = 2\n\tSYSLOG_ACTION_READ_ALL      = 3\n\tSYSLOG_ACTION_READ_CLEAR    = 4\n\tSYSLOG_ACTION_CLEAR         = 5\n\tSYSLOG_ACTION_CONSOLE_OFF   = 6\n\tSYSLOG_ACTION_CONSOLE_ON    = 7\n\tSYSLOG_ACTION_CONSOLE_LEVEL = 8\n\tSYSLOG_ACTION_SIZE_UNREAD   = 9\n\tSYSLOG_ACTION_SIZE_BUFFER   = 10\n)\n\nconst (\n\tDEVLINK_CMD_UNSPEC                                 = 0x0\n\tDEVLINK_CMD_GET                                    = 0x1\n\tDEVLINK_CMD_SET                                    = 0x2\n\tDEVLINK_CMD_NEW                                    = 0x3\n\tDEVLINK_CMD_DEL                                    = 0x4\n\tDEVLINK_CMD_PORT_GET                               = 0x5\n\tDEVLINK_CMD_PORT_SET                               = 0x6\n\tDEVLINK_CMD_PORT_NEW                               = 0x7\n\tDEVLINK_CMD_PORT_DEL                               = 0x8\n\tDEVLINK_CMD_PORT_SPLIT                             = 0x9\n\tDEVLINK_CMD_PORT_UNSPLIT                           = 0xa\n\tDEVLINK_CMD_SB_GET                                 = 0xb\n\tDEVLINK_CMD_SB_SET                                 = 0xc\n\tDEVLINK_CMD_SB_NEW                                 = 0xd\n\tDEVLINK_CMD_SB_DEL                                 = 0xe\n\tDEVLINK_CMD_SB_POOL_GET                            = 0xf\n\tDEVLINK_CMD_SB_POOL_SET                            = 0x10\n\tDEVLINK_CMD_SB_POOL_NEW                            = 0x11\n\tDEVLINK_CMD_SB_POOL_DEL                            = 0x12\n\tDEVLINK_CMD_SB_PORT_POOL_GET                       = 0x13\n\tDEVLINK_CMD_SB_PORT_POOL_SET                       = 0x14\n\tDEVLINK_CMD_SB_PORT_POOL_NEW                       = 0x15\n\tDEVLINK_CMD_SB_PORT_POOL_DEL                       = 0x16\n\tDEVLINK_CMD_SB_TC_POOL_BIND_GET                    = 0x17\n\tDEVLINK_CMD_SB_TC_POOL_BIND_SET                    = 0x18\n\tDEVLINK_CMD_SB_TC_POOL_BIND_NEW                    = 0x19\n\tDEVLINK_CMD_SB_TC_POOL_BIND_DEL                    = 0x1a\n\tDEVLINK_CMD_SB_OCC_SNAPSHOT                        = 0x1b\n\tDEVLINK_CMD_SB_OCC_MAX_CLEAR                       = 0x1c\n\tDEVLINK_CMD_ESWITCH_GET                            = 0x1d\n\tDEVLINK_CMD_ESWITCH_SET                            = 0x1e\n\tDEVLINK_CMD_DPIPE_TABLE_GET                        = 0x1f\n\tDEVLINK_CMD_DPIPE_ENTRIES_GET                      = 0x20\n\tDEVLINK_CMD_DPIPE_HEADERS_GET                      = 0x21\n\tDEVLINK_CMD_DPIPE_TABLE_COUNTERS_SET               = 0x22\n\tDEVLINK_CMD_RESOURCE_SET                           = 0x23\n\tDEVLINK_CMD_RESOURCE_DUMP                          = 0x24\n\tDEVLINK_CMD_RELOAD                                 = 0x25\n\tDEVLINK_CMD_PARAM_GET                              = 0x26\n\tDEVLINK_CMD_PARAM_SET                              = 0x27\n\tDEVLINK_CMD_PARAM_NEW                              = 0x28\n\tDEVLINK_CMD_PARAM_DEL                              = 0x29\n\tDEVLINK_CMD_REGION_GET                             = 0x2a\n\tDEVLINK_CMD_REGION_SET                             = 0x2b\n\tDEVLINK_CMD_REGION_NEW                             = 0x2c\n\tDEVLINK_CMD_REGION_DEL                             = 0x2d\n\tDEVLINK_CMD_REGION_READ                            = 0x2e\n\tDEVLINK_CMD_PORT_PARAM_GET                         = 0x2f\n\tDEVLINK_CMD_PORT_PARAM_SET                         = 0x30\n\tDEVLINK_CMD_PORT_PARAM_NEW                         = 0x31\n\tDEVLINK_CMD_PORT_PARAM_DEL                         = 0x32\n\tDEVLINK_CMD_INFO_GET                               = 0x33\n\tDEVLINK_CMD_HEALTH_REPORTER_GET                    = 0x34\n\tDEVLINK_CMD_HEALTH_REPORTER_SET                    = 0x35\n\tDEVLINK_CMD_HEALTH_REPORTER_RECOVER                = 0x36\n\tDEVLINK_CMD_HEALTH_REPORTER_DIAGNOSE               = 0x37\n\tDEVLINK_CMD_HEALTH_REPORTER_DUMP_GET               = 0x38\n\tDEVLINK_CMD_HEALTH_REPORTER_DUMP_CLEAR             = 0x39\n\tDEVLINK_CMD_FLASH_UPDATE                           = 0x3a\n\tDEVLINK_CMD_FLASH_UPDATE_END                       = 0x3b\n\tDEVLINK_CMD_FLASH_UPDATE_STATUS                    = 0x3c\n\tDEVLINK_CMD_TRAP_GET                               = 0x3d\n\tDEVLINK_CMD_TRAP_SET                               = 0x3e\n\tDEVLINK_CMD_TRAP_NEW                               = 0x3f\n\tDEVLINK_CMD_TRAP_DEL                               = 0x40\n\tDEVLINK_CMD_TRAP_GROUP_GET                         = 0x41\n\tDEVLINK_CMD_TRAP_GROUP_SET                         = 0x42\n\tDEVLINK_CMD_TRAP_GROUP_NEW                         = 0x43\n\tDEVLINK_CMD_TRAP_GROUP_DEL                         = 0x44\n\tDEVLINK_CMD_TRAP_POLICER_GET                       = 0x45\n\tDEVLINK_CMD_TRAP_POLICER_SET                       = 0x46\n\tDEVLINK_CMD_TRAP_POLICER_NEW                       = 0x47\n\tDEVLINK_CMD_TRAP_POLICER_DEL                       = 0x48\n\tDEVLINK_CMD_HEALTH_REPORTER_TEST                   = 0x49\n\tDEVLINK_CMD_RATE_GET                               = 0x4a\n\tDEVLINK_CMD_RATE_SET                               = 0x4b\n\tDEVLINK_CMD_RATE_NEW                               = 0x4c\n\tDEVLINK_CMD_RATE_DEL                               = 0x4d\n\tDEVLINK_CMD_LINECARD_GET                           = 0x4e\n\tDEVLINK_CMD_LINECARD_SET                           = 0x4f\n\tDEVLINK_CMD_LINECARD_NEW                           = 0x50\n\tDEVLINK_CMD_LINECARD_DEL                           = 0x51\n\tDEVLINK_CMD_SELFTESTS_GET                          = 0x52\n\tDEVLINK_CMD_MAX                                    = 0x54\n\tDEVLINK_PORT_TYPE_NOTSET                           = 0x0\n\tDEVLINK_PORT_TYPE_AUTO                             = 0x1\n\tDEVLINK_PORT_TYPE_ETH                              = 0x2\n\tDEVLINK_PORT_TYPE_IB                               = 0x3\n\tDEVLINK_SB_POOL_TYPE_INGRESS                       = 0x0\n\tDEVLINK_SB_POOL_TYPE_EGRESS                        = 0x1\n\tDEVLINK_SB_THRESHOLD_TYPE_STATIC                   = 0x0\n\tDEVLINK_SB_THRESHOLD_TYPE_DYNAMIC                  = 0x1\n\tDEVLINK_ESWITCH_MODE_LEGACY                        = 0x0\n\tDEVLINK_ESWITCH_MODE_SWITCHDEV                     = 0x1\n\tDEVLINK_ESWITCH_INLINE_MODE_NONE                   = 0x0\n\tDEVLINK_ESWITCH_INLINE_MODE_LINK                   = 0x1\n\tDEVLINK_ESWITCH_INLINE_MODE_NETWORK                = 0x2\n\tDEVLINK_ESWITCH_INLINE_MODE_TRANSPORT              = 0x3\n\tDEVLINK_ESWITCH_ENCAP_MODE_NONE                    = 0x0\n\tDEVLINK_ESWITCH_ENCAP_MODE_BASIC                   = 0x1\n\tDEVLINK_PORT_FLAVOUR_PHYSICAL                      = 0x0\n\tDEVLINK_PORT_FLAVOUR_CPU                           = 0x1\n\tDEVLINK_PORT_FLAVOUR_DSA                           = 0x2\n\tDEVLINK_PORT_FLAVOUR_PCI_PF                        = 0x3\n\tDEVLINK_PORT_FLAVOUR_PCI_VF                        = 0x4\n\tDEVLINK_PORT_FLAVOUR_VIRTUAL                       = 0x5\n\tDEVLINK_PORT_FLAVOUR_UNUSED                        = 0x6\n\tDEVLINK_PARAM_CMODE_RUNTIME                        = 0x0\n\tDEVLINK_PARAM_CMODE_DRIVERINIT                     = 0x1\n\tDEVLINK_PARAM_CMODE_PERMANENT                      = 0x2\n\tDEVLINK_PARAM_CMODE_MAX                            = 0x2\n\tDEVLINK_PARAM_FW_LOAD_POLICY_VALUE_DRIVER          = 0x0\n\tDEVLINK_PARAM_FW_LOAD_POLICY_VALUE_FLASH           = 0x1\n\tDEVLINK_PARAM_FW_LOAD_POLICY_VALUE_DISK            = 0x2\n\tDEVLINK_PARAM_FW_LOAD_POLICY_VALUE_UNKNOWN         = 0x3\n\tDEVLINK_PARAM_RESET_DEV_ON_DRV_PROBE_VALUE_UNKNOWN = 0x0\n\tDEVLINK_PARAM_RESET_DEV_ON_DRV_PROBE_VALUE_ALWAYS  = 0x1\n\tDEVLINK_PARAM_RESET_DEV_ON_DRV_PROBE_VALUE_NEVER   = 0x2\n\tDEVLINK_PARAM_RESET_DEV_ON_DRV_PROBE_VALUE_DISK    = 0x3\n\tDEVLINK_ATTR_STATS_RX_PACKETS                      = 0x0\n\tDEVLINK_ATTR_STATS_RX_BYTES                        = 0x1\n\tDEVLINK_ATTR_STATS_RX_DROPPED                      = 0x2\n\tDEVLINK_ATTR_STATS_MAX                             = 0x2\n\tDEVLINK_FLASH_OVERWRITE_SETTINGS_BIT               = 0x0\n\tDEVLINK_FLASH_OVERWRITE_IDENTIFIERS_BIT            = 0x1\n\tDEVLINK_FLASH_OVERWRITE_MAX_BIT                    = 0x1\n\tDEVLINK_TRAP_ACTION_DROP                           = 0x0\n\tDEVLINK_TRAP_ACTION_TRAP                           = 0x1\n\tDEVLINK_TRAP_ACTION_MIRROR                         = 0x2\n\tDEVLINK_TRAP_TYPE_DROP                             = 0x0\n\tDEVLINK_TRAP_TYPE_EXCEPTION                        = 0x1\n\tDEVLINK_TRAP_TYPE_CONTROL                          = 0x2\n\tDEVLINK_ATTR_TRAP_METADATA_TYPE_IN_PORT            = 0x0\n\tDEVLINK_ATTR_TRAP_METADATA_TYPE_FA_COOKIE          = 0x1\n\tDEVLINK_RELOAD_ACTION_UNSPEC                       = 0x0\n\tDEVLINK_RELOAD_ACTION_DRIVER_REINIT                = 0x1\n\tDEVLINK_RELOAD_ACTION_FW_ACTIVATE                  = 0x2\n\tDEVLINK_RELOAD_ACTION_MAX                          = 0x2\n\tDEVLINK_RELOAD_LIMIT_UNSPEC                        = 0x0\n\tDEVLINK_RELOAD_LIMIT_NO_RESET                      = 0x1\n\tDEVLINK_RELOAD_LIMIT_MAX                           = 0x1\n\tDEVLINK_ATTR_UNSPEC                                = 0x0\n\tDEVLINK_ATTR_BUS_NAME                              = 0x1\n\tDEVLINK_ATTR_DEV_NAME                              = 0x2\n\tDEVLINK_ATTR_PORT_INDEX                            = 0x3\n\tDEVLINK_ATTR_PORT_TYPE                             = 0x4\n\tDEVLINK_ATTR_PORT_DESIRED_TYPE                     = 0x5\n\tDEVLINK_ATTR_PORT_NETDEV_IFINDEX                   = 0x6\n\tDEVLINK_ATTR_PORT_NETDEV_NAME                      = 0x7\n\tDEVLINK_ATTR_PORT_IBDEV_NAME                       = 0x8\n\tDEVLINK_ATTR_PORT_SPLIT_COUNT                      = 0x9\n\tDEVLINK_ATTR_PORT_SPLIT_GROUP                      = 0xa\n\tDEVLINK_ATTR_SB_INDEX                              = 0xb\n\tDEVLINK_ATTR_SB_SIZE                               = 0xc\n\tDEVLINK_ATTR_SB_INGRESS_POOL_COUNT                 = 0xd\n\tDEVLINK_ATTR_SB_EGRESS_POOL_COUNT                  = 0xe\n\tDEVLINK_ATTR_SB_INGRESS_TC_COUNT                   = 0xf\n\tDEVLINK_ATTR_SB_EGRESS_TC_COUNT                    = 0x10\n\tDEVLINK_ATTR_SB_POOL_INDEX                         = 0x11\n\tDEVLINK_ATTR_SB_POOL_TYPE                          = 0x12\n\tDEVLINK_ATTR_SB_POOL_SIZE                          = 0x13\n\tDEVLINK_ATTR_SB_POOL_THRESHOLD_TYPE                = 0x14\n\tDEVLINK_ATTR_SB_THRESHOLD                          = 0x15\n\tDEVLINK_ATTR_SB_TC_INDEX                           = 0x16\n\tDEVLINK_ATTR_SB_OCC_CUR                            = 0x17\n\tDEVLINK_ATTR_SB_OCC_MAX                            = 0x18\n\tDEVLINK_ATTR_ESWITCH_MODE                          = 0x19\n\tDEVLINK_ATTR_ESWITCH_INLINE_MODE                   = 0x1a\n\tDEVLINK_ATTR_DPIPE_TABLES                          = 0x1b\n\tDEVLINK_ATTR_DPIPE_TABLE                           = 0x1c\n\tDEVLINK_ATTR_DPIPE_TABLE_NAME                      = 0x1d\n\tDEVLINK_ATTR_DPIPE_TABLE_SIZE                      = 0x1e\n\tDEVLINK_ATTR_DPIPE_TABLE_MATCHES                   = 0x1f\n\tDEVLINK_ATTR_DPIPE_TABLE_ACTIONS                   = 0x20\n\tDEVLINK_ATTR_DPIPE_TABLE_COUNTERS_ENABLED          = 0x21\n\tDEVLINK_ATTR_DPIPE_ENTRIES                         = 0x22\n\tDEVLINK_ATTR_DPIPE_ENTRY                           = 0x23\n\tDEVLINK_ATTR_DPIPE_ENTRY_INDEX                     = 0x24\n\tDEVLINK_ATTR_DPIPE_ENTRY_MATCH_VALUES              = 0x25\n\tDEVLINK_ATTR_DPIPE_ENTRY_ACTION_VALUES             = 0x26\n\tDEVLINK_ATTR_DPIPE_ENTRY_COUNTER                   = 0x27\n\tDEVLINK_ATTR_DPIPE_MATCH                           = 0x28\n\tDEVLINK_ATTR_DPIPE_MATCH_VALUE                     = 0x29\n\tDEVLINK_ATTR_DPIPE_MATCH_TYPE                      = 0x2a\n\tDEVLINK_ATTR_DPIPE_ACTION                          = 0x2b\n\tDEVLINK_ATTR_DPIPE_ACTION_VALUE                    = 0x2c\n\tDEVLINK_ATTR_DPIPE_ACTION_TYPE                     = 0x2d\n\tDEVLINK_ATTR_DPIPE_VALUE                           = 0x2e\n\tDEVLINK_ATTR_DPIPE_VALUE_MASK                      = 0x2f\n\tDEVLINK_ATTR_DPIPE_VALUE_MAPPING                   = 0x30\n\tDEVLINK_ATTR_DPIPE_HEADERS                         = 0x31\n\tDEVLINK_ATTR_DPIPE_HEADER                          = 0x32\n\tDEVLINK_ATTR_DPIPE_HEADER_NAME                     = 0x33\n\tDEVLINK_ATTR_DPIPE_HEADER_ID                       = 0x34\n\tDEVLINK_ATTR_DPIPE_HEADER_FIELDS                   = 0x35\n\tDEVLINK_ATTR_DPIPE_HEADER_GLOBAL                   = 0x36\n\tDEVLINK_ATTR_DPIPE_HEADER_INDEX                    = 0x37\n\tDEVLINK_ATTR_DPIPE_FIELD                           = 0x38\n\tDEVLINK_ATTR_DPIPE_FIELD_NAME                      = 0x39\n\tDEVLINK_ATTR_DPIPE_FIELD_ID                        = 0x3a\n\tDEVLINK_ATTR_DPIPE_FIELD_BITWIDTH                  = 0x3b\n\tDEVLINK_ATTR_DPIPE_FIELD_MAPPING_TYPE              = 0x3c\n\tDEVLINK_ATTR_PAD                                   = 0x3d\n\tDEVLINK_ATTR_ESWITCH_ENCAP_MODE                    = 0x3e\n\tDEVLINK_ATTR_RESOURCE_LIST                         = 0x3f\n\tDEVLINK_ATTR_RESOURCE                              = 0x40\n\tDEVLINK_ATTR_RESOURCE_NAME                         = 0x41\n\tDEVLINK_ATTR_RESOURCE_ID                           = 0x42\n\tDEVLINK_ATTR_RESOURCE_SIZE                         = 0x43\n\tDEVLINK_ATTR_RESOURCE_SIZE_NEW                     = 0x44\n\tDEVLINK_ATTR_RESOURCE_SIZE_VALID                   = 0x45\n\tDEVLINK_ATTR_RESOURCE_SIZE_MIN                     = 0x46\n\tDEVLINK_ATTR_RESOURCE_SIZE_MAX                     = 0x47\n\tDEVLINK_ATTR_RESOURCE_SIZE_GRAN                    = 0x48\n\tDEVLINK_ATTR_RESOURCE_UNIT                         = 0x49\n\tDEVLINK_ATTR_RESOURCE_OCC                          = 0x4a\n\tDEVLINK_ATTR_DPIPE_TABLE_RESOURCE_ID               = 0x4b\n\tDEVLINK_ATTR_DPIPE_TABLE_RESOURCE_UNITS            = 0x4c\n\tDEVLINK_ATTR_PORT_FLAVOUR                          = 0x4d\n\tDEVLINK_ATTR_PORT_NUMBER                           = 0x4e\n\tDEVLINK_ATTR_PORT_SPLIT_SUBPORT_NUMBER             = 0x4f\n\tDEVLINK_ATTR_PARAM                                 = 0x50\n\tDEVLINK_ATTR_PARAM_NAME                            = 0x51\n\tDEVLINK_ATTR_PARAM_GENERIC                         = 0x52\n\tDEVLINK_ATTR_PARAM_TYPE                            = 0x53\n\tDEVLINK_ATTR_PARAM_VALUES_LIST                     = 0x54\n\tDEVLINK_ATTR_PARAM_VALUE                           = 0x55\n\tDEVLINK_ATTR_PARAM_VALUE_DATA                      = 0x56\n\tDEVLINK_ATTR_PARAM_VALUE_CMODE                     = 0x57\n\tDEVLINK_ATTR_REGION_NAME                           = 0x58\n\tDEVLINK_ATTR_REGION_SIZE                           = 0x59\n\tDEVLINK_ATTR_REGION_SNAPSHOTS                      = 0x5a\n\tDEVLINK_ATTR_REGION_SNAPSHOT                       = 0x5b\n\tDEVLINK_ATTR_REGION_SNAPSHOT_ID                    = 0x5c\n\tDEVLINK_ATTR_REGION_CHUNKS                         = 0x5d\n\tDEVLINK_ATTR_REGION_CHUNK                          = 0x5e\n\tDEVLINK_ATTR_REGION_CHUNK_DATA                     = 0x5f\n\tDEVLINK_ATTR_REGION_CHUNK_ADDR                     = 0x60\n\tDEVLINK_ATTR_REGION_CHUNK_LEN                      = 0x61\n\tDEVLINK_ATTR_INFO_DRIVER_NAME                      = 0x62\n\tDEVLINK_ATTR_INFO_SERIAL_NUMBER                    = 0x63\n\tDEVLINK_ATTR_INFO_VERSION_FIXED                    = 0x64\n\tDEVLINK_ATTR_INFO_VERSION_RUNNING                  = 0x65\n\tDEVLINK_ATTR_INFO_VERSION_STORED                   = 0x66\n\tDEVLINK_ATTR_INFO_VERSION_NAME                     = 0x67\n\tDEVLINK_ATTR_INFO_VERSION_VALUE                    = 0x68\n\tDEVLINK_ATTR_SB_POOL_CELL_SIZE                     = 0x69\n\tDEVLINK_ATTR_FMSG                                  = 0x6a\n\tDEVLINK_ATTR_FMSG_OBJ_NEST_START                   = 0x6b\n\tDEVLINK_ATTR_FMSG_PAIR_NEST_START                  = 0x6c\n\tDEVLINK_ATTR_FMSG_ARR_NEST_START                   = 0x6d\n\tDEVLINK_ATTR_FMSG_NEST_END                         = 0x6e\n\tDEVLINK_ATTR_FMSG_OBJ_NAME                         = 0x6f\n\tDEVLINK_ATTR_FMSG_OBJ_VALUE_TYPE                   = 0x70\n\tDEVLINK_ATTR_FMSG_OBJ_VALUE_DATA                   = 0x71\n\tDEVLINK_ATTR_HEALTH_REPORTER                       = 0x72\n\tDEVLINK_ATTR_HEALTH_REPORTER_NAME                  = 0x73\n\tDEVLINK_ATTR_HEALTH_REPORTER_STATE                 = 0x74\n\tDEVLINK_ATTR_HEALTH_REPORTER_ERR_COUNT             = 0x75\n\tDEVLINK_ATTR_HEALTH_REPORTER_RECOVER_COUNT         = 0x76\n\tDEVLINK_ATTR_HEALTH_REPORTER_DUMP_TS               = 0x77\n\tDEVLINK_ATTR_HEALTH_REPORTER_GRACEFUL_PERIOD       = 0x78\n\tDEVLINK_ATTR_HEALTH_REPORTER_AUTO_RECOVER          = 0x79\n\tDEVLINK_ATTR_FLASH_UPDATE_FILE_NAME                = 0x7a\n\tDEVLINK_ATTR_FLASH_UPDATE_COMPONENT                = 0x7b\n\tDEVLINK_ATTR_FLASH_UPDATE_STATUS_MSG               = 0x7c\n\tDEVLINK_ATTR_FLASH_UPDATE_STATUS_DONE              = 0x7d\n\tDEVLINK_ATTR_FLASH_UPDATE_STATUS_TOTAL             = 0x7e\n\tDEVLINK_ATTR_PORT_PCI_PF_NUMBER                    = 0x7f\n\tDEVLINK_ATTR_PORT_PCI_VF_NUMBER                    = 0x80\n\tDEVLINK_ATTR_STATS                                 = 0x81\n\tDEVLINK_ATTR_TRAP_NAME                             = 0x82\n\tDEVLINK_ATTR_TRAP_ACTION                           = 0x83\n\tDEVLINK_ATTR_TRAP_TYPE                             = 0x84\n\tDEVLINK_ATTR_TRAP_GENERIC                          = 0x85\n\tDEVLINK_ATTR_TRAP_METADATA                         = 0x86\n\tDEVLINK_ATTR_TRAP_GROUP_NAME                       = 0x87\n\tDEVLINK_ATTR_RELOAD_FAILED                         = 0x88\n\tDEVLINK_ATTR_HEALTH_REPORTER_DUMP_TS_NS            = 0x89\n\tDEVLINK_ATTR_NETNS_FD                              = 0x8a\n\tDEVLINK_ATTR_NETNS_PID                             = 0x8b\n\tDEVLINK_ATTR_NETNS_ID                              = 0x8c\n\tDEVLINK_ATTR_HEALTH_REPORTER_AUTO_DUMP             = 0x8d\n\tDEVLINK_ATTR_TRAP_POLICER_ID                       = 0x8e\n\tDEVLINK_ATTR_TRAP_POLICER_RATE                     = 0x8f\n\tDEVLINK_ATTR_TRAP_POLICER_BURST                    = 0x90\n\tDEVLINK_ATTR_PORT_FUNCTION                         = 0x91\n\tDEVLINK_ATTR_INFO_BOARD_SERIAL_NUMBER              = 0x92\n\tDEVLINK_ATTR_PORT_LANES                            = 0x93\n\tDEVLINK_ATTR_PORT_SPLITTABLE                       = 0x94\n\tDEVLINK_ATTR_PORT_EXTERNAL                         = 0x95\n\tDEVLINK_ATTR_PORT_CONTROLLER_NUMBER                = 0x96\n\tDEVLINK_ATTR_FLASH_UPDATE_STATUS_TIMEOUT           = 0x97\n\tDEVLINK_ATTR_FLASH_UPDATE_OVERWRITE_MASK           = 0x98\n\tDEVLINK_ATTR_RELOAD_ACTION                         = 0x99\n\tDEVLINK_ATTR_RELOAD_ACTIONS_PERFORMED              = 0x9a\n\tDEVLINK_ATTR_RELOAD_LIMITS                         = 0x9b\n\tDEVLINK_ATTR_DEV_STATS                             = 0x9c\n\tDEVLINK_ATTR_RELOAD_STATS                          = 0x9d\n\tDEVLINK_ATTR_RELOAD_STATS_ENTRY                    = 0x9e\n\tDEVLINK_ATTR_RELOAD_STATS_LIMIT                    = 0x9f\n\tDEVLINK_ATTR_RELOAD_STATS_VALUE                    = 0xa0\n\tDEVLINK_ATTR_REMOTE_RELOAD_STATS                   = 0xa1\n\tDEVLINK_ATTR_RELOAD_ACTION_INFO                    = 0xa2\n\tDEVLINK_ATTR_RELOAD_ACTION_STATS                   = 0xa3\n\tDEVLINK_ATTR_PORT_PCI_SF_NUMBER                    = 0xa4\n\tDEVLINK_ATTR_RATE_TYPE                             = 0xa5\n\tDEVLINK_ATTR_RATE_TX_SHARE                         = 0xa6\n\tDEVLINK_ATTR_RATE_TX_MAX                           = 0xa7\n\tDEVLINK_ATTR_RATE_NODE_NAME                        = 0xa8\n\tDEVLINK_ATTR_RATE_PARENT_NODE_NAME                 = 0xa9\n\tDEVLINK_ATTR_REGION_MAX_SNAPSHOTS                  = 0xaa\n\tDEVLINK_ATTR_LINECARD_INDEX                        = 0xab\n\tDEVLINK_ATTR_LINECARD_STATE                        = 0xac\n\tDEVLINK_ATTR_LINECARD_TYPE                         = 0xad\n\tDEVLINK_ATTR_LINECARD_SUPPORTED_TYPES              = 0xae\n\tDEVLINK_ATTR_NESTED_DEVLINK                        = 0xaf\n\tDEVLINK_ATTR_SELFTESTS                             = 0xb0\n\tDEVLINK_ATTR_MAX                                   = 0xb3\n\tDEVLINK_DPIPE_FIELD_MAPPING_TYPE_NONE              = 0x0\n\tDEVLINK_DPIPE_FIELD_MAPPING_TYPE_IFINDEX           = 0x1\n\tDEVLINK_DPIPE_MATCH_TYPE_FIELD_EXACT               = 0x0\n\tDEVLINK_DPIPE_ACTION_TYPE_FIELD_MODIFY             = 0x0\n\tDEVLINK_DPIPE_FIELD_ETHERNET_DST_MAC               = 0x0\n\tDEVLINK_DPIPE_FIELD_IPV4_DST_IP                    = 0x0\n\tDEVLINK_DPIPE_FIELD_IPV6_DST_IP                    = 0x0\n\tDEVLINK_DPIPE_HEADER_ETHERNET                      = 0x0\n\tDEVLINK_DPIPE_HEADER_IPV4                          = 0x1\n\tDEVLINK_DPIPE_HEADER_IPV6                          = 0x2\n\tDEVLINK_RESOURCE_UNIT_ENTRY                        = 0x0\n\tDEVLINK_PORT_FUNCTION_ATTR_UNSPEC                  = 0x0\n\tDEVLINK_PORT_FUNCTION_ATTR_HW_ADDR                 = 0x1\n\tDEVLINK_PORT_FN_ATTR_STATE                         = 0x2\n\tDEVLINK_PORT_FN_ATTR_OPSTATE                       = 0x3\n\tDEVLINK_PORT_FN_ATTR_CAPS                          = 0x4\n\tDEVLINK_PORT_FUNCTION_ATTR_MAX                     = 0x6\n)\n\ntype FsverityDigest struct {\n\tAlgorithm uint16\n\tSize      uint16\n}\n\ntype FsverityEnableArg struct {\n\tVersion        uint32\n\tHash_algorithm uint32\n\tBlock_size     uint32\n\tSalt_size      uint32\n\tSalt_ptr       uint64\n\tSig_size       uint32\n\t_              uint32\n\tSig_ptr        uint64\n\t_              [11]uint64\n}\n\ntype Nhmsg struct {\n\tFamily   uint8\n\tScope    uint8\n\tProtocol uint8\n\tResvd    uint8\n\tFlags    uint32\n}\n\nconst SizeofNhmsg = 0x8\n\ntype NexthopGrp struct {\n\tId     uint32\n\tWeight uint8\n\tHigh   uint8\n\tResvd2 uint16\n}\n\nconst SizeofNexthopGrp = 0x8\n\nconst (\n\tNHA_UNSPEC     = 0x0\n\tNHA_ID         = 0x1\n\tNHA_GROUP      = 0x2\n\tNHA_GROUP_TYPE = 0x3\n\tNHA_BLACKHOLE  = 0x4\n\tNHA_OIF        = 0x5\n\tNHA_GATEWAY    = 0x6\n\tNHA_ENCAP_TYPE = 0x7\n\tNHA_ENCAP      = 0x8\n\tNHA_GROUPS     = 0x9\n\tNHA_MASTER     = 0xa\n)\n\nconst (\n\tCAN_RAW_FILTER        = 0x1\n\tCAN_RAW_ERR_FILTER    = 0x2\n\tCAN_RAW_LOOPBACK      = 0x3\n\tCAN_RAW_RECV_OWN_MSGS = 0x4\n\tCAN_RAW_FD_FRAMES     = 0x5\n\tCAN_RAW_JOIN_FILTERS  = 0x6\n)\n\ntype WatchdogInfo struct {\n\tOptions  uint32\n\tVersion  uint32\n\tIdentity [32]uint8\n}\n\ntype PPSFData struct {\n\tInfo    PPSKInfo\n\tTimeout PPSKTime\n}\n\ntype PPSKParams struct {\n\tApi_version   int32\n\tMode          int32\n\tAssert_off_tu PPSKTime\n\tClear_off_tu  PPSKTime\n}\n\ntype PPSKTime struct {\n\tSec   int64\n\tNsec  int32\n\tFlags uint32\n}\n\nconst (\n\tLWTUNNEL_ENCAP_NONE       = 0x0\n\tLWTUNNEL_ENCAP_MPLS       = 0x1\n\tLWTUNNEL_ENCAP_IP         = 0x2\n\tLWTUNNEL_ENCAP_ILA        = 0x3\n\tLWTUNNEL_ENCAP_IP6        = 0x4\n\tLWTUNNEL_ENCAP_SEG6       = 0x5\n\tLWTUNNEL_ENCAP_BPF        = 0x6\n\tLWTUNNEL_ENCAP_SEG6_LOCAL = 0x7\n\tLWTUNNEL_ENCAP_RPL        = 0x8\n\tLWTUNNEL_ENCAP_IOAM6      = 0x9\n\tLWTUNNEL_ENCAP_XFRM       = 0xa\n\tLWTUNNEL_ENCAP_MAX        = 0xa\n\n\tMPLS_IPTUNNEL_UNSPEC = 0x0\n\tMPLS_IPTUNNEL_DST    = 0x1\n\tMPLS_IPTUNNEL_TTL    = 0x2\n\tMPLS_IPTUNNEL_MAX    = 0x2\n)\n\nconst (\n\tETHTOOL_ID_UNSPEC                                                       = 0x0\n\tETHTOOL_RX_COPYBREAK                                                    = 0x1\n\tETHTOOL_TX_COPYBREAK                                                    = 0x2\n\tETHTOOL_PFC_PREVENTION_TOUT                                             = 0x3\n\tETHTOOL_TUNABLE_UNSPEC                                                  = 0x0\n\tETHTOOL_TUNABLE_U8                                                      = 0x1\n\tETHTOOL_TUNABLE_U16                                                     = 0x2\n\tETHTOOL_TUNABLE_U32                                                     = 0x3\n\tETHTOOL_TUNABLE_U64                                                     = 0x4\n\tETHTOOL_TUNABLE_STRING                                                  = 0x5\n\tETHTOOL_TUNABLE_S8                                                      = 0x6\n\tETHTOOL_TUNABLE_S16                                                     = 0x7\n\tETHTOOL_TUNABLE_S32                                                     = 0x8\n\tETHTOOL_TUNABLE_S64                                                     = 0x9\n\tETHTOOL_PHY_ID_UNSPEC                                                   = 0x0\n\tETHTOOL_PHY_DOWNSHIFT                                                   = 0x1\n\tETHTOOL_PHY_FAST_LINK_DOWN                                              = 0x2\n\tETHTOOL_PHY_EDPD                                                        = 0x3\n\tETHTOOL_LINK_EXT_STATE_AUTONEG                                          = 0x0\n\tETHTOOL_LINK_EXT_STATE_LINK_TRAINING_FAILURE                            = 0x1\n\tETHTOOL_LINK_EXT_STATE_LINK_LOGICAL_MISMATCH                            = 0x2\n\tETHTOOL_LINK_EXT_STATE_BAD_SIGNAL_INTEGRITY                             = 0x3\n\tETHTOOL_LINK_EXT_STATE_NO_CABLE                                         = 0x4\n\tETHTOOL_LINK_EXT_STATE_CABLE_ISSUE                                      = 0x5\n\tETHTOOL_LINK_EXT_STATE_EEPROM_ISSUE                                     = 0x6\n\tETHTOOL_LINK_EXT_STATE_CALIBRATION_FAILURE                              = 0x7\n\tETHTOOL_LINK_EXT_STATE_POWER_BUDGET_EXCEEDED                            = 0x8\n\tETHTOOL_LINK_EXT_STATE_OVERHEAT                                         = 0x9\n\tETHTOOL_LINK_EXT_SUBSTATE_AN_NO_PARTNER_DETECTED                        = 0x1\n\tETHTOOL_LINK_EXT_SUBSTATE_AN_ACK_NOT_RECEIVED                           = 0x2\n\tETHTOOL_LINK_EXT_SUBSTATE_AN_NEXT_PAGE_EXCHANGE_FAILED                  = 0x3\n\tETHTOOL_LINK_EXT_SUBSTATE_AN_NO_PARTNER_DETECTED_FORCE_MODE             = 0x4\n\tETHTOOL_LINK_EXT_SUBSTATE_AN_FEC_MISMATCH_DURING_OVERRIDE               = 0x5\n\tETHTOOL_LINK_EXT_SUBSTATE_AN_NO_HCD                                     = 0x6\n\tETHTOOL_LINK_EXT_SUBSTATE_LT_KR_FRAME_LOCK_NOT_ACQUIRED                 = 0x1\n\tETHTOOL_LINK_EXT_SUBSTATE_LT_KR_LINK_INHIBIT_TIMEOUT                    = 0x2\n\tETHTOOL_LINK_EXT_SUBSTATE_LT_KR_LINK_PARTNER_DID_NOT_SET_RECEIVER_READY = 0x3\n\tETHTOOL_LINK_EXT_SUBSTATE_LT_REMOTE_FAULT                               = 0x4\n\tETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_ACQUIRE_BLOCK_LOCK            = 0x1\n\tETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_ACQUIRE_AM_LOCK               = 0x2\n\tETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_GET_ALIGN_STATUS              = 0x3\n\tETHTOOL_LINK_EXT_SUBSTATE_LLM_FC_FEC_IS_NOT_LOCKED                      = 0x4\n\tETHTOOL_LINK_EXT_SUBSTATE_LLM_RS_FEC_IS_NOT_LOCKED                      = 0x5\n\tETHTOOL_LINK_EXT_SUBSTATE_BSI_LARGE_NUMBER_OF_PHYSICAL_ERRORS           = 0x1\n\tETHTOOL_LINK_EXT_SUBSTATE_BSI_UNSUPPORTED_RATE                          = 0x2\n\tETHTOOL_LINK_EXT_SUBSTATE_CI_UNSUPPORTED_CABLE                          = 0x1\n\tETHTOOL_LINK_EXT_SUBSTATE_CI_CABLE_TEST_FAILURE                         = 0x2\n\tETHTOOL_FLASH_ALL_REGIONS                                               = 0x0\n\tETHTOOL_F_UNSUPPORTED__BIT                                              = 0x0\n\tETHTOOL_F_WISH__BIT                                                     = 0x1\n\tETHTOOL_F_COMPAT__BIT                                                   = 0x2\n\tETHTOOL_FEC_NONE_BIT                                                    = 0x0\n\tETHTOOL_FEC_AUTO_BIT                                                    = 0x1\n\tETHTOOL_FEC_OFF_BIT                                                     = 0x2\n\tETHTOOL_FEC_RS_BIT                                                      = 0x3\n\tETHTOOL_FEC_BASER_BIT                                                   = 0x4\n\tETHTOOL_FEC_LLRS_BIT                                                    = 0x5\n\tETHTOOL_LINK_MODE_10baseT_Half_BIT                                      = 0x0\n\tETHTOOL_LINK_MODE_10baseT_Full_BIT                                      = 0x1\n\tETHTOOL_LINK_MODE_100baseT_Half_BIT                                     = 0x2\n\tETHTOOL_LINK_MODE_100baseT_Full_BIT                                     = 0x3\n\tETHTOOL_LINK_MODE_1000baseT_Half_BIT                                    = 0x4\n\tETHTOOL_LINK_MODE_1000baseT_Full_BIT                                    = 0x5\n\tETHTOOL_LINK_MODE_Autoneg_BIT                                           = 0x6\n\tETHTOOL_LINK_MODE_TP_BIT                                                = 0x7\n\tETHTOOL_LINK_MODE_AUI_BIT                                               = 0x8\n\tETHTOOL_LINK_MODE_MII_BIT                                               = 0x9\n\tETHTOOL_LINK_MODE_FIBRE_BIT                                             = 0xa\n\tETHTOOL_LINK_MODE_BNC_BIT                                               = 0xb\n\tETHTOOL_LINK_MODE_10000baseT_Full_BIT                                   = 0xc\n\tETHTOOL_LINK_MODE_Pause_BIT                                             = 0xd\n\tETHTOOL_LINK_MODE_Asym_Pause_BIT                                        = 0xe\n\tETHTOOL_LINK_MODE_2500baseX_Full_BIT                                    = 0xf\n\tETHTOOL_LINK_MODE_Backplane_BIT                                         = 0x10\n\tETHTOOL_LINK_MODE_1000baseKX_Full_BIT                                   = 0x11\n\tETHTOOL_LINK_MODE_10000baseKX4_Full_BIT                                 = 0x12\n\tETHTOOL_LINK_MODE_10000baseKR_Full_BIT                                  = 0x13\n\tETHTOOL_LINK_MODE_10000baseR_FEC_BIT                                    = 0x14\n\tETHTOOL_LINK_MODE_20000baseMLD2_Full_BIT                                = 0x15\n\tETHTOOL_LINK_MODE_20000baseKR2_Full_BIT                                 = 0x16\n\tETHTOOL_LINK_MODE_40000baseKR4_Full_BIT                                 = 0x17\n\tETHTOOL_LINK_MODE_40000baseCR4_Full_BIT                                 = 0x18\n\tETHTOOL_LINK_MODE_40000baseSR4_Full_BIT                                 = 0x19\n\tETHTOOL_LINK_MODE_40000baseLR4_Full_BIT                                 = 0x1a\n\tETHTOOL_LINK_MODE_56000baseKR4_Full_BIT                                 = 0x1b\n\tETHTOOL_LINK_MODE_56000baseCR4_Full_BIT                                 = 0x1c\n\tETHTOOL_LINK_MODE_56000baseSR4_Full_BIT                                 = 0x1d\n\tETHTOOL_LINK_MODE_56000baseLR4_Full_BIT                                 = 0x1e\n\tETHTOOL_LINK_MODE_25000baseCR_Full_BIT                                  = 0x1f\n\tETHTOOL_LINK_MODE_25000baseKR_Full_BIT                                  = 0x20\n\tETHTOOL_LINK_MODE_25000baseSR_Full_BIT                                  = 0x21\n\tETHTOOL_LINK_MODE_50000baseCR2_Full_BIT                                 = 0x22\n\tETHTOOL_LINK_MODE_50000baseKR2_Full_BIT                                 = 0x23\n\tETHTOOL_LINK_MODE_100000baseKR4_Full_BIT                                = 0x24\n\tETHTOOL_LINK_MODE_100000baseSR4_Full_BIT                                = 0x25\n\tETHTOOL_LINK_MODE_100000baseCR4_Full_BIT                                = 0x26\n\tETHTOOL_LINK_MODE_100000baseLR4_ER4_Full_BIT                            = 0x27\n\tETHTOOL_LINK_MODE_50000baseSR2_Full_BIT                                 = 0x28\n\tETHTOOL_LINK_MODE_1000baseX_Full_BIT                                    = 0x29\n\tETHTOOL_LINK_MODE_10000baseCR_Full_BIT                                  = 0x2a\n\tETHTOOL_LINK_MODE_10000baseSR_Full_BIT                                  = 0x2b\n\tETHTOOL_LINK_MODE_10000baseLR_Full_BIT                                  = 0x2c\n\tETHTOOL_LINK_MODE_10000baseLRM_Full_BIT                                 = 0x2d\n\tETHTOOL_LINK_MODE_10000baseER_Full_BIT                                  = 0x2e\n\tETHTOOL_LINK_MODE_2500baseT_Full_BIT                                    = 0x2f\n\tETHTOOL_LINK_MODE_5000baseT_Full_BIT                                    = 0x30\n\tETHTOOL_LINK_MODE_FEC_NONE_BIT                                          = 0x31\n\tETHTOOL_LINK_MODE_FEC_RS_BIT                                            = 0x32\n\tETHTOOL_LINK_MODE_FEC_BASER_BIT                                         = 0x33\n\tETHTOOL_LINK_MODE_50000baseKR_Full_BIT                                  = 0x34\n\tETHTOOL_LINK_MODE_50000baseSR_Full_BIT                                  = 0x35\n\tETHTOOL_LINK_MODE_50000baseCR_Full_BIT                                  = 0x36\n\tETHTOOL_LINK_MODE_50000baseLR_ER_FR_Full_BIT                            = 0x37\n\tETHTOOL_LINK_MODE_50000baseDR_Full_BIT                                  = 0x38\n\tETHTOOL_LINK_MODE_100000baseKR2_Full_BIT                                = 0x39\n\tETHTOOL_LINK_MODE_100000baseSR2_Full_BIT                                = 0x3a\n\tETHTOOL_LINK_MODE_100000baseCR2_Full_BIT                                = 0x3b\n\tETHTOOL_LINK_MODE_100000baseLR2_ER2_FR2_Full_BIT                        = 0x3c\n\tETHTOOL_LINK_MODE_100000baseDR2_Full_BIT                                = 0x3d\n\tETHTOOL_LINK_MODE_200000baseKR4_Full_BIT                                = 0x3e\n\tETHTOOL_LINK_MODE_200000baseSR4_Full_BIT                                = 0x3f\n\tETHTOOL_LINK_MODE_200000baseLR4_ER4_FR4_Full_BIT                        = 0x40\n\tETHTOOL_LINK_MODE_200000baseDR4_Full_BIT                                = 0x41\n\tETHTOOL_LINK_MODE_200000baseCR4_Full_BIT                                = 0x42\n\tETHTOOL_LINK_MODE_100baseT1_Full_BIT                                    = 0x43\n\tETHTOOL_LINK_MODE_1000baseT1_Full_BIT                                   = 0x44\n\tETHTOOL_LINK_MODE_400000baseKR8_Full_BIT                                = 0x45\n\tETHTOOL_LINK_MODE_400000baseSR8_Full_BIT                                = 0x46\n\tETHTOOL_LINK_MODE_400000baseLR8_ER8_FR8_Full_BIT                        = 0x47\n\tETHTOOL_LINK_MODE_400000baseDR8_Full_BIT                                = 0x48\n\tETHTOOL_LINK_MODE_400000baseCR8_Full_BIT                                = 0x49\n\tETHTOOL_LINK_MODE_FEC_LLRS_BIT                                          = 0x4a\n\tETHTOOL_LINK_MODE_100000baseKR_Full_BIT                                 = 0x4b\n\tETHTOOL_LINK_MODE_100000baseSR_Full_BIT                                 = 0x4c\n\tETHTOOL_LINK_MODE_100000baseLR_ER_FR_Full_BIT                           = 0x4d\n\tETHTOOL_LINK_MODE_100000baseCR_Full_BIT                                 = 0x4e\n\tETHTOOL_LINK_MODE_100000baseDR_Full_BIT                                 = 0x4f\n\tETHTOOL_LINK_MODE_200000baseKR2_Full_BIT                                = 0x50\n\tETHTOOL_LINK_MODE_200000baseSR2_Full_BIT                                = 0x51\n\tETHTOOL_LINK_MODE_200000baseLR2_ER2_FR2_Full_BIT                        = 0x52\n\tETHTOOL_LINK_MODE_200000baseDR2_Full_BIT                                = 0x53\n\tETHTOOL_LINK_MODE_200000baseCR2_Full_BIT                                = 0x54\n\tETHTOOL_LINK_MODE_400000baseKR4_Full_BIT                                = 0x55\n\tETHTOOL_LINK_MODE_400000baseSR4_Full_BIT                                = 0x56\n\tETHTOOL_LINK_MODE_400000baseLR4_ER4_FR4_Full_BIT                        = 0x57\n\tETHTOOL_LINK_MODE_400000baseDR4_Full_BIT                                = 0x58\n\tETHTOOL_LINK_MODE_400000baseCR4_Full_BIT                                = 0x59\n\tETHTOOL_LINK_MODE_100baseFX_Half_BIT                                    = 0x5a\n\tETHTOOL_LINK_MODE_100baseFX_Full_BIT                                    = 0x5b\n\n\tETHTOOL_MSG_USER_NONE                     = 0x0\n\tETHTOOL_MSG_STRSET_GET                    = 0x1\n\tETHTOOL_MSG_LINKINFO_GET                  = 0x2\n\tETHTOOL_MSG_LINKINFO_SET                  = 0x3\n\tETHTOOL_MSG_LINKMODES_GET                 = 0x4\n\tETHTOOL_MSG_LINKMODES_SET                 = 0x5\n\tETHTOOL_MSG_LINKSTATE_GET                 = 0x6\n\tETHTOOL_MSG_DEBUG_GET                     = 0x7\n\tETHTOOL_MSG_DEBUG_SET                     = 0x8\n\tETHTOOL_MSG_WOL_GET                       = 0x9\n\tETHTOOL_MSG_WOL_SET                       = 0xa\n\tETHTOOL_MSG_FEATURES_GET                  = 0xb\n\tETHTOOL_MSG_FEATURES_SET                  = 0xc\n\tETHTOOL_MSG_PRIVFLAGS_GET                 = 0xd\n\tETHTOOL_MSG_PRIVFLAGS_SET                 = 0xe\n\tETHTOOL_MSG_RINGS_GET                     = 0xf\n\tETHTOOL_MSG_RINGS_SET                     = 0x10\n\tETHTOOL_MSG_CHANNELS_GET                  = 0x11\n\tETHTOOL_MSG_CHANNELS_SET                  = 0x12\n\tETHTOOL_MSG_COALESCE_GET                  = 0x13\n\tETHTOOL_MSG_COALESCE_SET                  = 0x14\n\tETHTOOL_MSG_PAUSE_GET                     = 0x15\n\tETHTOOL_MSG_PAUSE_SET                     = 0x16\n\tETHTOOL_MSG_EEE_GET                       = 0x17\n\tETHTOOL_MSG_EEE_SET                       = 0x18\n\tETHTOOL_MSG_TSINFO_GET                    = 0x19\n\tETHTOOL_MSG_CABLE_TEST_ACT                = 0x1a\n\tETHTOOL_MSG_CABLE_TEST_TDR_ACT            = 0x1b\n\tETHTOOL_MSG_TUNNEL_INFO_GET               = 0x1c\n\tETHTOOL_MSG_FEC_GET                       = 0x1d\n\tETHTOOL_MSG_FEC_SET                       = 0x1e\n\tETHTOOL_MSG_MODULE_EEPROM_GET             = 0x1f\n\tETHTOOL_MSG_STATS_GET                     = 0x20\n\tETHTOOL_MSG_PHC_VCLOCKS_GET               = 0x21\n\tETHTOOL_MSG_MODULE_GET                    = 0x22\n\tETHTOOL_MSG_MODULE_SET                    = 0x23\n\tETHTOOL_MSG_PSE_GET                       = 0x24\n\tETHTOOL_MSG_PSE_SET                       = 0x25\n\tETHTOOL_MSG_RSS_GET                       = 0x26\n\tETHTOOL_MSG_PLCA_GET_CFG                  = 0x27\n\tETHTOOL_MSG_PLCA_SET_CFG                  = 0x28\n\tETHTOOL_MSG_PLCA_GET_STATUS               = 0x29\n\tETHTOOL_MSG_MM_GET                        = 0x2a\n\tETHTOOL_MSG_MM_SET                        = 0x2b\n\tETHTOOL_MSG_MODULE_FW_FLASH_ACT           = 0x2c\n\tETHTOOL_MSG_PHY_GET                       = 0x2d\n\tETHTOOL_MSG_TSCONFIG_GET                  = 0x2e\n\tETHTOOL_MSG_TSCONFIG_SET                  = 0x2f\n\tETHTOOL_MSG_USER_MAX                      = 0x2f\n\tETHTOOL_MSG_KERNEL_NONE                   = 0x0\n\tETHTOOL_MSG_STRSET_GET_REPLY              = 0x1\n\tETHTOOL_MSG_LINKINFO_GET_REPLY            = 0x2\n\tETHTOOL_MSG_LINKINFO_NTF                  = 0x3\n\tETHTOOL_MSG_LINKMODES_GET_REPLY           = 0x4\n\tETHTOOL_MSG_LINKMODES_NTF                 = 0x5\n\tETHTOOL_MSG_LINKSTATE_GET_REPLY           = 0x6\n\tETHTOOL_MSG_DEBUG_GET_REPLY               = 0x7\n\tETHTOOL_MSG_DEBUG_NTF                     = 0x8\n\tETHTOOL_MSG_WOL_GET_REPLY                 = 0x9\n\tETHTOOL_MSG_WOL_NTF                       = 0xa\n\tETHTOOL_MSG_FEATURES_GET_REPLY            = 0xb\n\tETHTOOL_MSG_FEATURES_SET_REPLY            = 0xc\n\tETHTOOL_MSG_FEATURES_NTF                  = 0xd\n\tETHTOOL_MSG_PRIVFLAGS_GET_REPLY           = 0xe\n\tETHTOOL_MSG_PRIVFLAGS_NTF                 = 0xf\n\tETHTOOL_MSG_RINGS_GET_REPLY               = 0x10\n\tETHTOOL_MSG_RINGS_NTF                     = 0x11\n\tETHTOOL_MSG_CHANNELS_GET_REPLY            = 0x12\n\tETHTOOL_MSG_CHANNELS_NTF                  = 0x13\n\tETHTOOL_MSG_COALESCE_GET_REPLY            = 0x14\n\tETHTOOL_MSG_COALESCE_NTF                  = 0x15\n\tETHTOOL_MSG_PAUSE_GET_REPLY               = 0x16\n\tETHTOOL_MSG_PAUSE_NTF                     = 0x17\n\tETHTOOL_MSG_EEE_GET_REPLY                 = 0x18\n\tETHTOOL_MSG_EEE_NTF                       = 0x19\n\tETHTOOL_MSG_TSINFO_GET_REPLY              = 0x1a\n\tETHTOOL_MSG_CABLE_TEST_NTF                = 0x1b\n\tETHTOOL_MSG_CABLE_TEST_TDR_NTF            = 0x1c\n\tETHTOOL_MSG_TUNNEL_INFO_GET_REPLY         = 0x1d\n\tETHTOOL_MSG_FEC_GET_REPLY                 = 0x1e\n\tETHTOOL_MSG_FEC_NTF                       = 0x1f\n\tETHTOOL_MSG_MODULE_EEPROM_GET_REPLY       = 0x20\n\tETHTOOL_MSG_STATS_GET_REPLY               = 0x21\n\tETHTOOL_MSG_PHC_VCLOCKS_GET_REPLY         = 0x22\n\tETHTOOL_MSG_MODULE_GET_REPLY              = 0x23\n\tETHTOOL_MSG_MODULE_NTF                    = 0x24\n\tETHTOOL_MSG_PSE_GET_REPLY                 = 0x25\n\tETHTOOL_MSG_RSS_GET_REPLY                 = 0x26\n\tETHTOOL_MSG_PLCA_GET_CFG_REPLY            = 0x27\n\tETHTOOL_MSG_PLCA_GET_STATUS_REPLY         = 0x28\n\tETHTOOL_MSG_PLCA_NTF                      = 0x29\n\tETHTOOL_MSG_MM_GET_REPLY                  = 0x2a\n\tETHTOOL_MSG_MM_NTF                        = 0x2b\n\tETHTOOL_MSG_MODULE_FW_FLASH_NTF           = 0x2c\n\tETHTOOL_MSG_PHY_GET_REPLY                 = 0x2d\n\tETHTOOL_MSG_PHY_NTF                       = 0x2e\n\tETHTOOL_MSG_TSCONFIG_GET_REPLY            = 0x2f\n\tETHTOOL_MSG_TSCONFIG_SET_REPLY            = 0x30\n\tETHTOOL_MSG_KERNEL_MAX                    = 0x30\n\tETHTOOL_FLAG_COMPACT_BITSETS              = 0x1\n\tETHTOOL_FLAG_OMIT_REPLY                   = 0x2\n\tETHTOOL_FLAG_STATS                        = 0x4\n\tETHTOOL_A_HEADER_UNSPEC                   = 0x0\n\tETHTOOL_A_HEADER_DEV_INDEX                = 0x1\n\tETHTOOL_A_HEADER_DEV_NAME                 = 0x2\n\tETHTOOL_A_HEADER_FLAGS                    = 0x3\n\tETHTOOL_A_HEADER_MAX                      = 0x4\n\tETHTOOL_A_BITSET_BIT_UNSPEC               = 0x0\n\tETHTOOL_A_BITSET_BIT_INDEX                = 0x1\n\tETHTOOL_A_BITSET_BIT_NAME                 = 0x2\n\tETHTOOL_A_BITSET_BIT_VALUE                = 0x3\n\tETHTOOL_A_BITSET_BIT_MAX                  = 0x3\n\tETHTOOL_A_BITSET_BITS_UNSPEC              = 0x0\n\tETHTOOL_A_BITSET_BITS_BIT                 = 0x1\n\tETHTOOL_A_BITSET_BITS_MAX                 = 0x1\n\tETHTOOL_A_BITSET_UNSPEC                   = 0x0\n\tETHTOOL_A_BITSET_NOMASK                   = 0x1\n\tETHTOOL_A_BITSET_SIZE                     = 0x2\n\tETHTOOL_A_BITSET_BITS                     = 0x3\n\tETHTOOL_A_BITSET_VALUE                    = 0x4\n\tETHTOOL_A_BITSET_MASK                     = 0x5\n\tETHTOOL_A_BITSET_MAX                      = 0x5\n\tETHTOOL_A_STRING_UNSPEC                   = 0x0\n\tETHTOOL_A_STRING_INDEX                    = 0x1\n\tETHTOOL_A_STRING_VALUE                    = 0x2\n\tETHTOOL_A_STRING_MAX                      = 0x2\n\tETHTOOL_A_STRINGS_UNSPEC                  = 0x0\n\tETHTOOL_A_STRINGS_STRING                  = 0x1\n\tETHTOOL_A_STRINGS_MAX                     = 0x1\n\tETHTOOL_A_STRINGSET_UNSPEC                = 0x0\n\tETHTOOL_A_STRINGSET_ID                    = 0x1\n\tETHTOOL_A_STRINGSET_COUNT                 = 0x2\n\tETHTOOL_A_STRINGSET_STRINGS               = 0x3\n\tETHTOOL_A_STRINGSET_MAX                   = 0x3\n\tETHTOOL_A_STRINGSETS_UNSPEC               = 0x0\n\tETHTOOL_A_STRINGSETS_STRINGSET            = 0x1\n\tETHTOOL_A_STRINGSETS_MAX                  = 0x1\n\tETHTOOL_A_STRSET_UNSPEC                   = 0x0\n\tETHTOOL_A_STRSET_HEADER                   = 0x1\n\tETHTOOL_A_STRSET_STRINGSETS               = 0x2\n\tETHTOOL_A_STRSET_COUNTS_ONLY              = 0x3\n\tETHTOOL_A_STRSET_MAX                      = 0x3\n\tETHTOOL_A_LINKINFO_UNSPEC                 = 0x0\n\tETHTOOL_A_LINKINFO_HEADER                 = 0x1\n\tETHTOOL_A_LINKINFO_PORT                   = 0x2\n\tETHTOOL_A_LINKINFO_PHYADDR                = 0x3\n\tETHTOOL_A_LINKINFO_TP_MDIX                = 0x4\n\tETHTOOL_A_LINKINFO_TP_MDIX_CTRL           = 0x5\n\tETHTOOL_A_LINKINFO_TRANSCEIVER            = 0x6\n\tETHTOOL_A_LINKINFO_MAX                    = 0x6\n\tETHTOOL_A_LINKMODES_UNSPEC                = 0x0\n\tETHTOOL_A_LINKMODES_HEADER                = 0x1\n\tETHTOOL_A_LINKMODES_AUTONEG               = 0x2\n\tETHTOOL_A_LINKMODES_OURS                  = 0x3\n\tETHTOOL_A_LINKMODES_PEER                  = 0x4\n\tETHTOOL_A_LINKMODES_SPEED                 = 0x5\n\tETHTOOL_A_LINKMODES_DUPLEX                = 0x6\n\tETHTOOL_A_LINKMODES_MASTER_SLAVE_CFG      = 0x7\n\tETHTOOL_A_LINKMODES_MASTER_SLAVE_STATE    = 0x8\n\tETHTOOL_A_LINKMODES_LANES                 = 0x9\n\tETHTOOL_A_LINKMODES_RATE_MATCHING         = 0xa\n\tETHTOOL_A_LINKMODES_MAX                   = 0xa\n\tETHTOOL_A_LINKSTATE_UNSPEC                = 0x0\n\tETHTOOL_A_LINKSTATE_HEADER                = 0x1\n\tETHTOOL_A_LINKSTATE_LINK                  = 0x2\n\tETHTOOL_A_LINKSTATE_SQI                   = 0x3\n\tETHTOOL_A_LINKSTATE_SQI_MAX               = 0x4\n\tETHTOOL_A_LINKSTATE_EXT_STATE             = 0x5\n\tETHTOOL_A_LINKSTATE_EXT_SUBSTATE          = 0x6\n\tETHTOOL_A_LINKSTATE_EXT_DOWN_CNT          = 0x7\n\tETHTOOL_A_LINKSTATE_MAX                   = 0x7\n\tETHTOOL_A_DEBUG_UNSPEC                    = 0x0\n\tETHTOOL_A_DEBUG_HEADER                    = 0x1\n\tETHTOOL_A_DEBUG_MSGMASK                   = 0x2\n\tETHTOOL_A_DEBUG_MAX                       = 0x2\n\tETHTOOL_A_WOL_UNSPEC                      = 0x0\n\tETHTOOL_A_WOL_HEADER                      = 0x1\n\tETHTOOL_A_WOL_MODES                       = 0x2\n\tETHTOOL_A_WOL_SOPASS                      = 0x3\n\tETHTOOL_A_WOL_MAX                         = 0x3\n\tETHTOOL_A_FEATURES_UNSPEC                 = 0x0\n\tETHTOOL_A_FEATURES_HEADER                 = 0x1\n\tETHTOOL_A_FEATURES_HW                     = 0x2\n\tETHTOOL_A_FEATURES_WANTED                 = 0x3\n\tETHTOOL_A_FEATURES_ACTIVE                 = 0x4\n\tETHTOOL_A_FEATURES_NOCHANGE               = 0x5\n\tETHTOOL_A_FEATURES_MAX                    = 0x5\n\tETHTOOL_A_PRIVFLAGS_UNSPEC                = 0x0\n\tETHTOOL_A_PRIVFLAGS_HEADER                = 0x1\n\tETHTOOL_A_PRIVFLAGS_FLAGS                 = 0x2\n\tETHTOOL_A_PRIVFLAGS_MAX                   = 0x2\n\tETHTOOL_A_RINGS_UNSPEC                    = 0x0\n\tETHTOOL_A_RINGS_HEADER                    = 0x1\n\tETHTOOL_A_RINGS_RX_MAX                    = 0x2\n\tETHTOOL_A_RINGS_RX_MINI_MAX               = 0x3\n\tETHTOOL_A_RINGS_RX_JUMBO_MAX              = 0x4\n\tETHTOOL_A_RINGS_TX_MAX                    = 0x5\n\tETHTOOL_A_RINGS_RX                        = 0x6\n\tETHTOOL_A_RINGS_RX_MINI                   = 0x7\n\tETHTOOL_A_RINGS_RX_JUMBO                  = 0x8\n\tETHTOOL_A_RINGS_TX                        = 0x9\n\tETHTOOL_A_RINGS_RX_BUF_LEN                = 0xa\n\tETHTOOL_A_RINGS_TCP_DATA_SPLIT            = 0xb\n\tETHTOOL_A_RINGS_CQE_SIZE                  = 0xc\n\tETHTOOL_A_RINGS_TX_PUSH                   = 0xd\n\tETHTOOL_A_RINGS_RX_PUSH                   = 0xe\n\tETHTOOL_A_RINGS_TX_PUSH_BUF_LEN           = 0xf\n\tETHTOOL_A_RINGS_TX_PUSH_BUF_LEN_MAX       = 0x10\n\tETHTOOL_A_RINGS_HDS_THRESH                = 0x11\n\tETHTOOL_A_RINGS_HDS_THRESH_MAX            = 0x12\n\tETHTOOL_A_RINGS_MAX                       = 0x12\n\tETHTOOL_A_CHANNELS_UNSPEC                 = 0x0\n\tETHTOOL_A_CHANNELS_HEADER                 = 0x1\n\tETHTOOL_A_CHANNELS_RX_MAX                 = 0x2\n\tETHTOOL_A_CHANNELS_TX_MAX                 = 0x3\n\tETHTOOL_A_CHANNELS_OTHER_MAX              = 0x4\n\tETHTOOL_A_CHANNELS_COMBINED_MAX           = 0x5\n\tETHTOOL_A_CHANNELS_RX_COUNT               = 0x6\n\tETHTOOL_A_CHANNELS_TX_COUNT               = 0x7\n\tETHTOOL_A_CHANNELS_OTHER_COUNT            = 0x8\n\tETHTOOL_A_CHANNELS_COMBINED_COUNT         = 0x9\n\tETHTOOL_A_CHANNELS_MAX                    = 0x9\n\tETHTOOL_A_COALESCE_UNSPEC                 = 0x0\n\tETHTOOL_A_COALESCE_HEADER                 = 0x1\n\tETHTOOL_A_COALESCE_RX_USECS               = 0x2\n\tETHTOOL_A_COALESCE_RX_MAX_FRAMES          = 0x3\n\tETHTOOL_A_COALESCE_RX_USECS_IRQ           = 0x4\n\tETHTOOL_A_COALESCE_RX_MAX_FRAMES_IRQ      = 0x5\n\tETHTOOL_A_COALESCE_TX_USECS               = 0x6\n\tETHTOOL_A_COALESCE_TX_MAX_FRAMES          = 0x7\n\tETHTOOL_A_COALESCE_TX_USECS_IRQ           = 0x8\n\tETHTOOL_A_COALESCE_TX_MAX_FRAMES_IRQ      = 0x9\n\tETHTOOL_A_COALESCE_STATS_BLOCK_USECS      = 0xa\n\tETHTOOL_A_COALESCE_USE_ADAPTIVE_RX        = 0xb\n\tETHTOOL_A_COALESCE_USE_ADAPTIVE_TX        = 0xc\n\tETHTOOL_A_COALESCE_PKT_RATE_LOW           = 0xd\n\tETHTOOL_A_COALESCE_RX_USECS_LOW           = 0xe\n\tETHTOOL_A_COALESCE_RX_MAX_FRAMES_LOW      = 0xf\n\tETHTOOL_A_COALESCE_TX_USECS_LOW           = 0x10\n\tETHTOOL_A_COALESCE_TX_MAX_FRAMES_LOW      = 0x11\n\tETHTOOL_A_COALESCE_PKT_RATE_HIGH          = 0x12\n\tETHTOOL_A_COALESCE_RX_USECS_HIGH          = 0x13\n\tETHTOOL_A_COALESCE_RX_MAX_FRAMES_HIGH     = 0x14\n\tETHTOOL_A_COALESCE_TX_USECS_HIGH          = 0x15\n\tETHTOOL_A_COALESCE_TX_MAX_FRAMES_HIGH     = 0x16\n\tETHTOOL_A_COALESCE_RATE_SAMPLE_INTERVAL   = 0x17\n\tETHTOOL_A_COALESCE_USE_CQE_MODE_TX        = 0x18\n\tETHTOOL_A_COALESCE_USE_CQE_MODE_RX        = 0x19\n\tETHTOOL_A_COALESCE_MAX                    = 0x1e\n\tETHTOOL_A_PAUSE_UNSPEC                    = 0x0\n\tETHTOOL_A_PAUSE_HEADER                    = 0x1\n\tETHTOOL_A_PAUSE_AUTONEG                   = 0x2\n\tETHTOOL_A_PAUSE_RX                        = 0x3\n\tETHTOOL_A_PAUSE_TX                        = 0x4\n\tETHTOOL_A_PAUSE_STATS                     = 0x5\n\tETHTOOL_A_PAUSE_MAX                       = 0x6\n\tETHTOOL_A_PAUSE_STAT_UNSPEC               = 0x0\n\tETHTOOL_A_PAUSE_STAT_PAD                  = 0x1\n\tETHTOOL_A_PAUSE_STAT_TX_FRAMES            = 0x2\n\tETHTOOL_A_PAUSE_STAT_RX_FRAMES            = 0x3\n\tETHTOOL_A_PAUSE_STAT_MAX                  = 0x3\n\tETHTOOL_A_EEE_UNSPEC                      = 0x0\n\tETHTOOL_A_EEE_HEADER                      = 0x1\n\tETHTOOL_A_EEE_MODES_OURS                  = 0x2\n\tETHTOOL_A_EEE_MODES_PEER                  = 0x3\n\tETHTOOL_A_EEE_ACTIVE                      = 0x4\n\tETHTOOL_A_EEE_ENABLED                     = 0x5\n\tETHTOOL_A_EEE_TX_LPI_ENABLED              = 0x6\n\tETHTOOL_A_EEE_TX_LPI_TIMER                = 0x7\n\tETHTOOL_A_EEE_MAX                         = 0x7\n\tETHTOOL_A_TSINFO_UNSPEC                   = 0x0\n\tETHTOOL_A_TSINFO_HEADER                   = 0x1\n\tETHTOOL_A_TSINFO_TIMESTAMPING             = 0x2\n\tETHTOOL_A_TSINFO_TX_TYPES                 = 0x3\n\tETHTOOL_A_TSINFO_RX_FILTERS               = 0x4\n\tETHTOOL_A_TSINFO_PHC_INDEX                = 0x5\n\tETHTOOL_A_TSINFO_STATS                    = 0x6\n\tETHTOOL_A_TSINFO_HWTSTAMP_PROVIDER        = 0x7\n\tETHTOOL_A_TSINFO_MAX                      = 0x9\n\tETHTOOL_A_CABLE_TEST_UNSPEC               = 0x0\n\tETHTOOL_A_CABLE_TEST_HEADER               = 0x1\n\tETHTOOL_A_CABLE_TEST_MAX                  = 0x1\n\tETHTOOL_A_CABLE_RESULT_CODE_UNSPEC        = 0x0\n\tETHTOOL_A_CABLE_RESULT_CODE_OK            = 0x1\n\tETHTOOL_A_CABLE_RESULT_CODE_OPEN          = 0x2\n\tETHTOOL_A_CABLE_RESULT_CODE_SAME_SHORT    = 0x3\n\tETHTOOL_A_CABLE_RESULT_CODE_CROSS_SHORT   = 0x4\n\tETHTOOL_A_CABLE_PAIR_A                    = 0x0\n\tETHTOOL_A_CABLE_PAIR_B                    = 0x1\n\tETHTOOL_A_CABLE_PAIR_C                    = 0x2\n\tETHTOOL_A_CABLE_PAIR_D                    = 0x3\n\tETHTOOL_A_CABLE_RESULT_UNSPEC             = 0x0\n\tETHTOOL_A_CABLE_RESULT_PAIR               = 0x1\n\tETHTOOL_A_CABLE_RESULT_CODE               = 0x2\n\tETHTOOL_A_CABLE_RESULT_MAX                = 0x3\n\tETHTOOL_A_CABLE_FAULT_LENGTH_UNSPEC       = 0x0\n\tETHTOOL_A_CABLE_FAULT_LENGTH_PAIR         = 0x1\n\tETHTOOL_A_CABLE_FAULT_LENGTH_CM           = 0x2\n\tETHTOOL_A_CABLE_FAULT_LENGTH_MAX          = 0x3\n\tETHTOOL_A_CABLE_TEST_NTF_STATUS_UNSPEC    = 0x0\n\tETHTOOL_A_CABLE_TEST_NTF_STATUS_STARTED   = 0x1\n\tETHTOOL_A_CABLE_TEST_NTF_STATUS_COMPLETED = 0x2\n\tETHTOOL_A_CABLE_NEST_UNSPEC               = 0x0\n\tETHTOOL_A_CABLE_NEST_RESULT               = 0x1\n\tETHTOOL_A_CABLE_NEST_FAULT_LENGTH         = 0x2\n\tETHTOOL_A_CABLE_NEST_MAX                  = 0x2\n\tETHTOOL_A_CABLE_TEST_NTF_UNSPEC           = 0x0\n\tETHTOOL_A_CABLE_TEST_NTF_HEADER           = 0x1\n\tETHTOOL_A_CABLE_TEST_NTF_STATUS           = 0x2\n\tETHTOOL_A_CABLE_TEST_NTF_NEST             = 0x3\n\tETHTOOL_A_CABLE_TEST_NTF_MAX              = 0x3\n\tETHTOOL_A_CABLE_TEST_TDR_CFG_UNSPEC       = 0x0\n\tETHTOOL_A_CABLE_TEST_TDR_CFG_FIRST        = 0x1\n\tETHTOOL_A_CABLE_TEST_TDR_CFG_LAST         = 0x2\n\tETHTOOL_A_CABLE_TEST_TDR_CFG_STEP         = 0x3\n\tETHTOOL_A_CABLE_TEST_TDR_CFG_PAIR         = 0x4\n\tETHTOOL_A_CABLE_TEST_TDR_CFG_MAX          = 0x4\n\tETHTOOL_A_CABLE_TEST_TDR_UNSPEC           = 0x0\n\tETHTOOL_A_CABLE_TEST_TDR_HEADER           = 0x1\n\tETHTOOL_A_CABLE_TEST_TDR_CFG              = 0x2\n\tETHTOOL_A_CABLE_TEST_TDR_MAX              = 0x2\n\tETHTOOL_A_CABLE_AMPLITUDE_UNSPEC          = 0x0\n\tETHTOOL_A_CABLE_AMPLITUDE_PAIR            = 0x1\n\tETHTOOL_A_CABLE_AMPLITUDE_mV              = 0x2\n\tETHTOOL_A_CABLE_AMPLITUDE_MAX             = 0x2\n\tETHTOOL_A_CABLE_PULSE_UNSPEC              = 0x0\n\tETHTOOL_A_CABLE_PULSE_mV                  = 0x1\n\tETHTOOL_A_CABLE_PULSE_MAX                 = 0x1\n\tETHTOOL_A_CABLE_STEP_UNSPEC               = 0x0\n\tETHTOOL_A_CABLE_STEP_FIRST_DISTANCE       = 0x1\n\tETHTOOL_A_CABLE_STEP_LAST_DISTANCE        = 0x2\n\tETHTOOL_A_CABLE_STEP_STEP_DISTANCE        = 0x3\n\tETHTOOL_A_CABLE_STEP_MAX                  = 0x3\n\tETHTOOL_A_CABLE_TDR_NEST_UNSPEC           = 0x0\n\tETHTOOL_A_CABLE_TDR_NEST_STEP             = 0x1\n\tETHTOOL_A_CABLE_TDR_NEST_AMPLITUDE        = 0x2\n\tETHTOOL_A_CABLE_TDR_NEST_PULSE            = 0x3\n\tETHTOOL_A_CABLE_TDR_NEST_MAX              = 0x3\n\tETHTOOL_A_CABLE_TEST_TDR_NTF_UNSPEC       = 0x0\n\tETHTOOL_A_CABLE_TEST_TDR_NTF_HEADER       = 0x1\n\tETHTOOL_A_CABLE_TEST_TDR_NTF_STATUS       = 0x2\n\tETHTOOL_A_CABLE_TEST_TDR_NTF_NEST         = 0x3\n\tETHTOOL_A_CABLE_TEST_TDR_NTF_MAX          = 0x3\n\tETHTOOL_UDP_TUNNEL_TYPE_VXLAN             = 0x0\n\tETHTOOL_UDP_TUNNEL_TYPE_GENEVE            = 0x1\n\tETHTOOL_UDP_TUNNEL_TYPE_VXLAN_GPE         = 0x2\n\tETHTOOL_A_TUNNEL_UDP_ENTRY_UNSPEC         = 0x0\n\tETHTOOL_A_TUNNEL_UDP_ENTRY_PORT           = 0x1\n\tETHTOOL_A_TUNNEL_UDP_ENTRY_TYPE           = 0x2\n\tETHTOOL_A_TUNNEL_UDP_ENTRY_MAX            = 0x2\n\tETHTOOL_A_TUNNEL_UDP_TABLE_UNSPEC         = 0x0\n\tETHTOOL_A_TUNNEL_UDP_TABLE_SIZE           = 0x1\n\tETHTOOL_A_TUNNEL_UDP_TABLE_TYPES          = 0x2\n\tETHTOOL_A_TUNNEL_UDP_TABLE_ENTRY          = 0x3\n\tETHTOOL_A_TUNNEL_UDP_TABLE_MAX            = 0x3\n\tETHTOOL_A_TUNNEL_UDP_UNSPEC               = 0x0\n\tETHTOOL_A_TUNNEL_UDP_TABLE                = 0x1\n\tETHTOOL_A_TUNNEL_UDP_MAX                  = 0x1\n\tETHTOOL_A_TUNNEL_INFO_UNSPEC              = 0x0\n\tETHTOOL_A_TUNNEL_INFO_HEADER              = 0x1\n\tETHTOOL_A_TUNNEL_INFO_UDP_PORTS           = 0x2\n\tETHTOOL_A_TUNNEL_INFO_MAX                 = 0x2\n)\n\nconst (\n\tTCP_V4_FLOW    = 0x1\n\tUDP_V4_FLOW    = 0x2\n\tTCP_V6_FLOW    = 0x5\n\tUDP_V6_FLOW    = 0x6\n\tESP_V4_FLOW    = 0xa\n\tESP_V6_FLOW    = 0xc\n\tIP_USER_FLOW   = 0xd\n\tIPV6_USER_FLOW = 0xe\n\tIPV6_FLOW      = 0x11\n\tETHER_FLOW     = 0x12\n)\n\nconst SPEED_UNKNOWN = -0x1\n\ntype EthtoolDrvinfo struct {\n\tCmd          uint32\n\tDriver       [32]byte\n\tVersion      [32]byte\n\tFw_version   [32]byte\n\tBus_info     [32]byte\n\tErom_version [32]byte\n\tReserved2    [12]byte\n\tN_priv_flags uint32\n\tN_stats      uint32\n\tTestinfo_len uint32\n\tEedump_len   uint32\n\tRegdump_len  uint32\n}\n\ntype EthtoolTsInfo struct {\n\tCmd             uint32\n\tSo_timestamping uint32\n\tPhc_index       int32\n\tTx_types        uint32\n\tTx_reserved     [3]uint32\n\tRx_filters      uint32\n\tRx_reserved     [3]uint32\n}\n\ntype HwTstampConfig struct {\n\tFlags     int32\n\tTx_type   int32\n\tRx_filter int32\n}\n\nconst (\n\tHWTSTAMP_FILTER_NONE            = 0x0\n\tHWTSTAMP_FILTER_ALL             = 0x1\n\tHWTSTAMP_FILTER_SOME            = 0x2\n\tHWTSTAMP_FILTER_PTP_V1_L4_EVENT = 0x3\n\tHWTSTAMP_FILTER_PTP_V2_L4_EVENT = 0x6\n\tHWTSTAMP_FILTER_PTP_V2_L2_EVENT = 0x9\n\tHWTSTAMP_FILTER_PTP_V2_EVENT    = 0xc\n)\n\nconst (\n\tHWTSTAMP_TX_OFF          = 0x0\n\tHWTSTAMP_TX_ON           = 0x1\n\tHWTSTAMP_TX_ONESTEP_SYNC = 0x2\n)\n\ntype (\n\tPtpClockCaps struct {\n\t\tMax_adj            int32\n\t\tN_alarm            int32\n\t\tN_ext_ts           int32\n\t\tN_per_out          int32\n\t\tPps                int32\n\t\tN_pins             int32\n\t\tCross_timestamping int32\n\t\tAdjust_phase       int32\n\t\tMax_phase_adj      int32\n\t\tRsv                [11]int32\n\t}\n\tPtpClockTime struct {\n\t\tSec      int64\n\t\tNsec     uint32\n\t\tReserved uint32\n\t}\n\tPtpExttsEvent struct {\n\t\tT     PtpClockTime\n\t\tIndex uint32\n\t\tFlags uint32\n\t\tRsv   [2]uint32\n\t}\n\tPtpExttsRequest struct {\n\t\tIndex uint32\n\t\tFlags uint32\n\t\tRsv   [2]uint32\n\t}\n\tPtpPeroutRequest struct {\n\t\tStartOrPhase PtpClockTime\n\t\tPeriod       PtpClockTime\n\t\tIndex        uint32\n\t\tFlags        uint32\n\t\tOn           PtpClockTime\n\t}\n\tPtpPinDesc struct {\n\t\tName  [64]byte\n\t\tIndex uint32\n\t\tFunc  uint32\n\t\tChan  uint32\n\t\tRsv   [5]uint32\n\t}\n\tPtpSysOffset struct {\n\t\tSamples uint32\n\t\tRsv     [3]uint32\n\t\tTs      [51]PtpClockTime\n\t}\n\tPtpSysOffsetExtended struct {\n\t\tSamples uint32\n\t\tClockid int32\n\t\tRsv     [2]uint32\n\t\tTs      [25][3]PtpClockTime\n\t}\n\tPtpSysOffsetPrecise struct {\n\t\tDevice   PtpClockTime\n\t\tRealtime PtpClockTime\n\t\tMonoraw  PtpClockTime\n\t\tRsv      [4]uint32\n\t}\n)\n\nconst (\n\tPTP_PF_NONE    = 0x0\n\tPTP_PF_EXTTS   = 0x1\n\tPTP_PF_PEROUT  = 0x2\n\tPTP_PF_PHYSYNC = 0x3\n)\n\ntype (\n\tHIDRawReportDescriptor struct {\n\t\tSize  uint32\n\t\tValue [4096]uint8\n\t}\n\tHIDRawDevInfo struct {\n\t\tBustype uint32\n\t\tVendor  int16\n\t\tProduct int16\n\t}\n)\n\nconst (\n\tCLOSE_RANGE_UNSHARE = 0x2\n\tCLOSE_RANGE_CLOEXEC = 0x4\n)\n\nconst (\n\tNLMSGERR_ATTR_MSG    = 0x1\n\tNLMSGERR_ATTR_OFFS   = 0x2\n\tNLMSGERR_ATTR_COOKIE = 0x3\n)\n\ntype (\n\tEraseInfo struct {\n\t\tStart  uint32\n\t\tLength uint32\n\t}\n\tEraseInfo64 struct {\n\t\tStart  uint64\n\t\tLength uint64\n\t}\n\tMtdOobBuf struct {\n\t\tStart  uint32\n\t\tLength uint32\n\t\tPtr    *uint8\n\t}\n\tMtdOobBuf64 struct {\n\t\tStart  uint64\n\t\tPad    uint32\n\t\tLength uint32\n\t\tPtr    uint64\n\t}\n\tMtdWriteReq struct {\n\t\tStart  uint64\n\t\tLen    uint64\n\t\tOoblen uint64\n\t\tData   uint64\n\t\tOob    uint64\n\t\tMode   uint8\n\t\t_      [7]uint8\n\t}\n\tMtdInfo struct {\n\t\tType      uint8\n\t\tFlags     uint32\n\t\tSize      uint32\n\t\tErasesize uint32\n\t\tWritesize uint32\n\t\tOobsize   uint32\n\t\t_         uint64\n\t}\n\tRegionInfo struct {\n\t\tOffset      uint32\n\t\tErasesize   uint32\n\t\tNumblocks   uint32\n\t\tRegionindex uint32\n\t}\n\tOtpInfo struct {\n\t\tStart  uint32\n\t\tLength uint32\n\t\tLocked uint32\n\t}\n\tNandOobinfo struct {\n\t\tUseecc   uint32\n\t\tEccbytes uint32\n\t\tOobfree  [8][2]uint32\n\t\tEccpos   [32]uint32\n\t}\n\tNandOobfree struct {\n\t\tOffset uint32\n\t\tLength uint32\n\t}\n\tNandEcclayout struct {\n\t\tEccbytes uint32\n\t\tEccpos   [64]uint32\n\t\tOobavail uint32\n\t\tOobfree  [8]NandOobfree\n\t}\n\tMtdEccStats struct {\n\t\tCorrected uint32\n\t\tFailed    uint32\n\t\tBadblocks uint32\n\t\tBbtblocks uint32\n\t}\n)\n\nconst (\n\tMTD_OPS_PLACE_OOB = 0x0\n\tMTD_OPS_AUTO_OOB  = 0x1\n\tMTD_OPS_RAW       = 0x2\n)\n\nconst (\n\tMTD_FILE_MODE_NORMAL      = 0x0\n\tMTD_FILE_MODE_OTP_FACTORY = 0x1\n\tMTD_FILE_MODE_OTP_USER    = 0x2\n\tMTD_FILE_MODE_RAW         = 0x3\n)\n\nconst (\n\tNFC_CMD_UNSPEC                    = 0x0\n\tNFC_CMD_GET_DEVICE                = 0x1\n\tNFC_CMD_DEV_UP                    = 0x2\n\tNFC_CMD_DEV_DOWN                  = 0x3\n\tNFC_CMD_DEP_LINK_UP               = 0x4\n\tNFC_CMD_DEP_LINK_DOWN             = 0x5\n\tNFC_CMD_START_POLL                = 0x6\n\tNFC_CMD_STOP_POLL                 = 0x7\n\tNFC_CMD_GET_TARGET                = 0x8\n\tNFC_EVENT_TARGETS_FOUND           = 0x9\n\tNFC_EVENT_DEVICE_ADDED            = 0xa\n\tNFC_EVENT_DEVICE_REMOVED          = 0xb\n\tNFC_EVENT_TARGET_LOST             = 0xc\n\tNFC_EVENT_TM_ACTIVATED            = 0xd\n\tNFC_EVENT_TM_DEACTIVATED          = 0xe\n\tNFC_CMD_LLC_GET_PARAMS            = 0xf\n\tNFC_CMD_LLC_SET_PARAMS            = 0x10\n\tNFC_CMD_ENABLE_SE                 = 0x11\n\tNFC_CMD_DISABLE_SE                = 0x12\n\tNFC_CMD_LLC_SDREQ                 = 0x13\n\tNFC_EVENT_LLC_SDRES               = 0x14\n\tNFC_CMD_FW_DOWNLOAD               = 0x15\n\tNFC_EVENT_SE_ADDED                = 0x16\n\tNFC_EVENT_SE_REMOVED              = 0x17\n\tNFC_EVENT_SE_CONNECTIVITY         = 0x18\n\tNFC_EVENT_SE_TRANSACTION          = 0x19\n\tNFC_CMD_GET_SE                    = 0x1a\n\tNFC_CMD_SE_IO                     = 0x1b\n\tNFC_CMD_ACTIVATE_TARGET           = 0x1c\n\tNFC_CMD_VENDOR                    = 0x1d\n\tNFC_CMD_DEACTIVATE_TARGET         = 0x1e\n\tNFC_ATTR_UNSPEC                   = 0x0\n\tNFC_ATTR_DEVICE_INDEX             = 0x1\n\tNFC_ATTR_DEVICE_NAME              = 0x2\n\tNFC_ATTR_PROTOCOLS                = 0x3\n\tNFC_ATTR_TARGET_INDEX             = 0x4\n\tNFC_ATTR_TARGET_SENS_RES          = 0x5\n\tNFC_ATTR_TARGET_SEL_RES           = 0x6\n\tNFC_ATTR_TARGET_NFCID1            = 0x7\n\tNFC_ATTR_TARGET_SENSB_RES         = 0x8\n\tNFC_ATTR_TARGET_SENSF_RES         = 0x9\n\tNFC_ATTR_COMM_MODE                = 0xa\n\tNFC_ATTR_RF_MODE                  = 0xb\n\tNFC_ATTR_DEVICE_POWERED           = 0xc\n\tNFC_ATTR_IM_PROTOCOLS             = 0xd\n\tNFC_ATTR_TM_PROTOCOLS             = 0xe\n\tNFC_ATTR_LLC_PARAM_LTO            = 0xf\n\tNFC_ATTR_LLC_PARAM_RW             = 0x10\n\tNFC_ATTR_LLC_PARAM_MIUX           = 0x11\n\tNFC_ATTR_SE                       = 0x12\n\tNFC_ATTR_LLC_SDP                  = 0x13\n\tNFC_ATTR_FIRMWARE_NAME            = 0x14\n\tNFC_ATTR_SE_INDEX                 = 0x15\n\tNFC_ATTR_SE_TYPE                  = 0x16\n\tNFC_ATTR_SE_AID                   = 0x17\n\tNFC_ATTR_FIRMWARE_DOWNLOAD_STATUS = 0x18\n\tNFC_ATTR_SE_APDU                  = 0x19\n\tNFC_ATTR_TARGET_ISO15693_DSFID    = 0x1a\n\tNFC_ATTR_TARGET_ISO15693_UID      = 0x1b\n\tNFC_ATTR_SE_PARAMS                = 0x1c\n\tNFC_ATTR_VENDOR_ID                = 0x1d\n\tNFC_ATTR_VENDOR_SUBCMD            = 0x1e\n\tNFC_ATTR_VENDOR_DATA              = 0x1f\n\tNFC_SDP_ATTR_UNSPEC               = 0x0\n\tNFC_SDP_ATTR_URI                  = 0x1\n\tNFC_SDP_ATTR_SAP                  = 0x2\n)\n\ntype LandlockRulesetAttr struct {\n\tAccess_fs  uint64\n\tAccess_net uint64\n\tScoped     uint64\n}\n\ntype LandlockPathBeneathAttr struct {\n\tAllowed_access uint64\n\tParent_fd      int32\n}\n\nconst (\n\tLANDLOCK_RULE_PATH_BENEATH = 0x1\n)\n\nconst (\n\tIPC_CREAT   = 0x200\n\tIPC_EXCL    = 0x400\n\tIPC_NOWAIT  = 0x800\n\tIPC_PRIVATE = 0x0\n\n\tipc_64 = 0x100\n)\n\nconst (\n\tIPC_RMID = 0x0\n\tIPC_SET  = 0x1\n\tIPC_STAT = 0x2\n)\n\nconst (\n\tSHM_RDONLY = 0x1000\n\tSHM_RND    = 0x2000\n)\n\ntype MountAttr struct {\n\tAttr_set    uint64\n\tAttr_clr    uint64\n\tPropagation uint64\n\tUserns_fd   uint64\n}\n\nconst (\n\tWG_CMD_GET_DEVICE                      = 0x0\n\tWG_CMD_SET_DEVICE                      = 0x1\n\tWGDEVICE_F_REPLACE_PEERS               = 0x1\n\tWGDEVICE_A_UNSPEC                      = 0x0\n\tWGDEVICE_A_IFINDEX                     = 0x1\n\tWGDEVICE_A_IFNAME                      = 0x2\n\tWGDEVICE_A_PRIVATE_KEY                 = 0x3\n\tWGDEVICE_A_PUBLIC_KEY                  = 0x4\n\tWGDEVICE_A_FLAGS                       = 0x5\n\tWGDEVICE_A_LISTEN_PORT                 = 0x6\n\tWGDEVICE_A_FWMARK                      = 0x7\n\tWGDEVICE_A_PEERS                       = 0x8\n\tWGPEER_F_REMOVE_ME                     = 0x1\n\tWGPEER_F_REPLACE_ALLOWEDIPS            = 0x2\n\tWGPEER_F_UPDATE_ONLY                   = 0x4\n\tWGPEER_A_UNSPEC                        = 0x0\n\tWGPEER_A_PUBLIC_KEY                    = 0x1\n\tWGPEER_A_PRESHARED_KEY                 = 0x2\n\tWGPEER_A_FLAGS                         = 0x3\n\tWGPEER_A_ENDPOINT                      = 0x4\n\tWGPEER_A_PERSISTENT_KEEPALIVE_INTERVAL = 0x5\n\tWGPEER_A_LAST_HANDSHAKE_TIME           = 0x6\n\tWGPEER_A_RX_BYTES                      = 0x7\n\tWGPEER_A_TX_BYTES                      = 0x8\n\tWGPEER_A_ALLOWEDIPS                    = 0x9\n\tWGPEER_A_PROTOCOL_VERSION              = 0xa\n\tWGALLOWEDIP_A_UNSPEC                   = 0x0\n\tWGALLOWEDIP_A_FAMILY                   = 0x1\n\tWGALLOWEDIP_A_IPADDR                   = 0x2\n\tWGALLOWEDIP_A_CIDR_MASK                = 0x3\n)\n\nconst (\n\tNL_ATTR_TYPE_INVALID      = 0x0\n\tNL_ATTR_TYPE_FLAG         = 0x1\n\tNL_ATTR_TYPE_U8           = 0x2\n\tNL_ATTR_TYPE_U16          = 0x3\n\tNL_ATTR_TYPE_U32          = 0x4\n\tNL_ATTR_TYPE_U64          = 0x5\n\tNL_ATTR_TYPE_S8           = 0x6\n\tNL_ATTR_TYPE_S16          = 0x7\n\tNL_ATTR_TYPE_S32          = 0x8\n\tNL_ATTR_TYPE_S64          = 0x9\n\tNL_ATTR_TYPE_BINARY       = 0xa\n\tNL_ATTR_TYPE_STRING       = 0xb\n\tNL_ATTR_TYPE_NUL_STRING   = 0xc\n\tNL_ATTR_TYPE_NESTED       = 0xd\n\tNL_ATTR_TYPE_NESTED_ARRAY = 0xe\n\tNL_ATTR_TYPE_BITFIELD32   = 0xf\n\n\tNL_POLICY_TYPE_ATTR_UNSPEC          = 0x0\n\tNL_POLICY_TYPE_ATTR_TYPE            = 0x1\n\tNL_POLICY_TYPE_ATTR_MIN_VALUE_S     = 0x2\n\tNL_POLICY_TYPE_ATTR_MAX_VALUE_S     = 0x3\n\tNL_POLICY_TYPE_ATTR_MIN_VALUE_U     = 0x4\n\tNL_POLICY_TYPE_ATTR_MAX_VALUE_U     = 0x5\n\tNL_POLICY_TYPE_ATTR_MIN_LENGTH      = 0x6\n\tNL_POLICY_TYPE_ATTR_MAX_LENGTH      = 0x7\n\tNL_POLICY_TYPE_ATTR_POLICY_IDX      = 0x8\n\tNL_POLICY_TYPE_ATTR_POLICY_MAXTYPE  = 0x9\n\tNL_POLICY_TYPE_ATTR_BITFIELD32_MASK = 0xa\n\tNL_POLICY_TYPE_ATTR_PAD             = 0xb\n\tNL_POLICY_TYPE_ATTR_MASK            = 0xc\n\tNL_POLICY_TYPE_ATTR_MAX             = 0xc\n)\n\ntype CANBitTiming struct {\n\tBitrate      uint32\n\tSample_point uint32\n\tTq           uint32\n\tProp_seg     uint32\n\tPhase_seg1   uint32\n\tPhase_seg2   uint32\n\tSjw          uint32\n\tBrp          uint32\n}\n\ntype CANBitTimingConst struct {\n\tName      [16]uint8\n\tTseg1_min uint32\n\tTseg1_max uint32\n\tTseg2_min uint32\n\tTseg2_max uint32\n\tSjw_max   uint32\n\tBrp_min   uint32\n\tBrp_max   uint32\n\tBrp_inc   uint32\n}\n\ntype CANClock struct {\n\tFreq uint32\n}\n\ntype CANBusErrorCounters struct {\n\tTxerr uint16\n\tRxerr uint16\n}\n\ntype CANCtrlMode struct {\n\tMask  uint32\n\tFlags uint32\n}\n\ntype CANDeviceStats struct {\n\tBus_error        uint32\n\tError_warning    uint32\n\tError_passive    uint32\n\tBus_off          uint32\n\tArbitration_lost uint32\n\tRestarts         uint32\n}\n\nconst (\n\tCAN_STATE_ERROR_ACTIVE  = 0x0\n\tCAN_STATE_ERROR_WARNING = 0x1\n\tCAN_STATE_ERROR_PASSIVE = 0x2\n\tCAN_STATE_BUS_OFF       = 0x3\n\tCAN_STATE_STOPPED       = 0x4\n\tCAN_STATE_SLEEPING      = 0x5\n\tCAN_STATE_MAX           = 0x6\n)\n\nconst (\n\tIFLA_CAN_UNSPEC               = 0x0\n\tIFLA_CAN_BITTIMING            = 0x1\n\tIFLA_CAN_BITTIMING_CONST      = 0x2\n\tIFLA_CAN_CLOCK                = 0x3\n\tIFLA_CAN_STATE                = 0x4\n\tIFLA_CAN_CTRLMODE             = 0x5\n\tIFLA_CAN_RESTART_MS           = 0x6\n\tIFLA_CAN_RESTART              = 0x7\n\tIFLA_CAN_BERR_COUNTER         = 0x8\n\tIFLA_CAN_DATA_BITTIMING       = 0x9\n\tIFLA_CAN_DATA_BITTIMING_CONST = 0xa\n\tIFLA_CAN_TERMINATION          = 0xb\n\tIFLA_CAN_TERMINATION_CONST    = 0xc\n\tIFLA_CAN_BITRATE_CONST        = 0xd\n\tIFLA_CAN_DATA_BITRATE_CONST   = 0xe\n\tIFLA_CAN_BITRATE_MAX          = 0xf\n)\n\ntype KCMAttach struct {\n\tFd     int32\n\tBpf_fd int32\n}\n\ntype KCMUnattach struct {\n\tFd int32\n}\n\ntype KCMClone struct {\n\tFd int32\n}\n\nconst (\n\tNL80211_AC_BE                                           = 0x2\n\tNL80211_AC_BK                                           = 0x3\n\tNL80211_ACL_POLICY_ACCEPT_UNLESS_LISTED                 = 0x0\n\tNL80211_ACL_POLICY_DENY_UNLESS_LISTED                   = 0x1\n\tNL80211_AC_VI                                           = 0x1\n\tNL80211_AC_VO                                           = 0x0\n\tNL80211_AP_SETTINGS_EXTERNAL_AUTH_SUPPORT               = 0x1\n\tNL80211_AP_SETTINGS_SA_QUERY_OFFLOAD_SUPPORT            = 0x2\n\tNL80211_AP_SME_SA_QUERY_OFFLOAD                         = 0x1\n\tNL80211_ATTR_4ADDR                                      = 0x53\n\tNL80211_ATTR_ACK                                        = 0x5c\n\tNL80211_ATTR_ACK_SIGNAL                                 = 0x107\n\tNL80211_ATTR_ACL_POLICY                                 = 0xa5\n\tNL80211_ATTR_ADMITTED_TIME                              = 0xd4\n\tNL80211_ATTR_AIRTIME_WEIGHT                             = 0x112\n\tNL80211_ATTR_AKM_SUITES                                 = 0x4c\n\tNL80211_ATTR_AP_ISOLATE                                 = 0x60\n\tNL80211_ATTR_AP_SETTINGS_FLAGS                          = 0x135\n\tNL80211_ATTR_ASSOC_SPP_AMSDU                            = 0x14a\n\tNL80211_ATTR_AUTH_DATA                                  = 0x9c\n\tNL80211_ATTR_AUTH_TYPE                                  = 0x35\n\tNL80211_ATTR_BANDS                                      = 0xef\n\tNL80211_ATTR_BEACON_HEAD                                = 0xe\n\tNL80211_ATTR_BEACON_INTERVAL                            = 0xc\n\tNL80211_ATTR_BEACON_TAIL                                = 0xf\n\tNL80211_ATTR_BG_SCAN_PERIOD                             = 0x98\n\tNL80211_ATTR_BSS_BASIC_RATES                            = 0x24\n\tNL80211_ATTR_BSS                                        = 0x2f\n\tNL80211_ATTR_BSS_CTS_PROT                               = 0x1c\n\tNL80211_ATTR_BSS_DUMP_INCLUDE_USE_DATA                  = 0x147\n\tNL80211_ATTR_BSS_HT_OPMODE                              = 0x6d\n\tNL80211_ATTR_BSSID                                      = 0xf5\n\tNL80211_ATTR_BSS_SELECT                                 = 0xe3\n\tNL80211_ATTR_BSS_SHORT_PREAMBLE                         = 0x1d\n\tNL80211_ATTR_BSS_SHORT_SLOT_TIME                        = 0x1e\n\tNL80211_ATTR_CENTER_FREQ1                               = 0xa0\n\tNL80211_ATTR_CENTER_FREQ1_OFFSET                        = 0x123\n\tNL80211_ATTR_CENTER_FREQ2                               = 0xa1\n\tNL80211_ATTR_CHANNEL_WIDTH                              = 0x9f\n\tNL80211_ATTR_CH_SWITCH_BLOCK_TX                         = 0xb8\n\tNL80211_ATTR_CH_SWITCH_COUNT                            = 0xb7\n\tNL80211_ATTR_CIPHER_SUITE_GROUP                         = 0x4a\n\tNL80211_ATTR_CIPHER_SUITES                              = 0x39\n\tNL80211_ATTR_CIPHER_SUITES_PAIRWISE                     = 0x49\n\tNL80211_ATTR_CNTDWN_OFFS_BEACON                         = 0xba\n\tNL80211_ATTR_CNTDWN_OFFS_PRESP                          = 0xbb\n\tNL80211_ATTR_COALESCE_RULE                              = 0xb6\n\tNL80211_ATTR_COALESCE_RULE_CONDITION                    = 0x2\n\tNL80211_ATTR_COALESCE_RULE_DELAY                        = 0x1\n\tNL80211_ATTR_COALESCE_RULE_MAX                          = 0x3\n\tNL80211_ATTR_COALESCE_RULE_PKT_PATTERN                  = 0x3\n\tNL80211_ATTR_COLOR_CHANGE_COLOR                         = 0x130\n\tNL80211_ATTR_COLOR_CHANGE_COUNT                         = 0x12f\n\tNL80211_ATTR_COLOR_CHANGE_ELEMS                         = 0x131\n\tNL80211_ATTR_CONN_FAILED_REASON                         = 0x9b\n\tNL80211_ATTR_CONTROL_PORT                               = 0x44\n\tNL80211_ATTR_CONTROL_PORT_ETHERTYPE                     = 0x66\n\tNL80211_ATTR_CONTROL_PORT_NO_ENCRYPT                    = 0x67\n\tNL80211_ATTR_CONTROL_PORT_NO_PREAUTH                    = 0x11e\n\tNL80211_ATTR_CONTROL_PORT_OVER_NL80211                  = 0x108\n\tNL80211_ATTR_COOKIE                                     = 0x58\n\tNL80211_ATTR_CQM_BEACON_LOSS_EVENT                      = 0x8\n\tNL80211_ATTR_CQM                                        = 0x5e\n\tNL80211_ATTR_CQM_MAX                                    = 0x9\n\tNL80211_ATTR_CQM_PKT_LOSS_EVENT                         = 0x4\n\tNL80211_ATTR_CQM_RSSI_HYST                              = 0x2\n\tNL80211_ATTR_CQM_RSSI_LEVEL                             = 0x9\n\tNL80211_ATTR_CQM_RSSI_THOLD                             = 0x1\n\tNL80211_ATTR_CQM_RSSI_THRESHOLD_EVENT                   = 0x3\n\tNL80211_ATTR_CQM_TXE_INTVL                              = 0x7\n\tNL80211_ATTR_CQM_TXE_PKTS                               = 0x6\n\tNL80211_ATTR_CQM_TXE_RATE                               = 0x5\n\tNL80211_ATTR_CRIT_PROT_ID                               = 0xb3\n\tNL80211_ATTR_CSA_C_OFF_BEACON                           = 0xba\n\tNL80211_ATTR_CSA_C_OFF_PRESP                            = 0xbb\n\tNL80211_ATTR_CSA_C_OFFSETS_TX                           = 0xcd\n\tNL80211_ATTR_CSA_IES                                    = 0xb9\n\tNL80211_ATTR_DEVICE_AP_SME                              = 0x8d\n\tNL80211_ATTR_DFS_CAC_TIME                               = 0x7\n\tNL80211_ATTR_DFS_REGION                                 = 0x92\n\tNL80211_ATTR_DISABLE_EHT                                = 0x137\n\tNL80211_ATTR_DISABLE_HE                                 = 0x12d\n\tNL80211_ATTR_DISABLE_HT                                 = 0x93\n\tNL80211_ATTR_DISABLE_VHT                                = 0xaf\n\tNL80211_ATTR_DISCONNECTED_BY_AP                         = 0x47\n\tNL80211_ATTR_DONT_WAIT_FOR_ACK                          = 0x8e\n\tNL80211_ATTR_DTIM_PERIOD                                = 0xd\n\tNL80211_ATTR_DURATION                                   = 0x57\n\tNL80211_ATTR_EHT_CAPABILITY                             = 0x136\n\tNL80211_ATTR_EMA_RNR_ELEMS                              = 0x145\n\tNL80211_ATTR_EML_CAPABILITY                             = 0x13d\n\tNL80211_ATTR_EXT_CAPA                                   = 0xa9\n\tNL80211_ATTR_EXT_CAPA_MASK                              = 0xaa\n\tNL80211_ATTR_EXTERNAL_AUTH_ACTION                       = 0x104\n\tNL80211_ATTR_EXTERNAL_AUTH_SUPPORT                      = 0x105\n\tNL80211_ATTR_EXT_FEATURES                               = 0xd9\n\tNL80211_ATTR_FEATURE_FLAGS                              = 0x8f\n\tNL80211_ATTR_FILS_CACHE_ID                              = 0xfd\n\tNL80211_ATTR_FILS_DISCOVERY                             = 0x126\n\tNL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM                      = 0xfb\n\tNL80211_ATTR_FILS_ERP_REALM                             = 0xfa\n\tNL80211_ATTR_FILS_ERP_RRK                               = 0xfc\n\tNL80211_ATTR_FILS_ERP_USERNAME                          = 0xf9\n\tNL80211_ATTR_FILS_KEK                                   = 0xf2\n\tNL80211_ATTR_FILS_NONCES                                = 0xf3\n\tNL80211_ATTR_FRAME                                      = 0x33\n\tNL80211_ATTR_FRAME_MATCH                                = 0x5b\n\tNL80211_ATTR_FRAME_TYPE                                 = 0x65\n\tNL80211_ATTR_FREQ_AFTER                                 = 0x3b\n\tNL80211_ATTR_FREQ_BEFORE                                = 0x3a\n\tNL80211_ATTR_FREQ_FIXED                                 = 0x3c\n\tNL80211_ATTR_FREQ_RANGE_END                             = 0x3\n\tNL80211_ATTR_FREQ_RANGE_MAX_BW                          = 0x4\n\tNL80211_ATTR_FREQ_RANGE_START                           = 0x2\n\tNL80211_ATTR_FTM_RESPONDER                              = 0x10e\n\tNL80211_ATTR_FTM_RESPONDER_STATS                        = 0x10f\n\tNL80211_ATTR_GENERATION                                 = 0x2e\n\tNL80211_ATTR_HANDLE_DFS                                 = 0xbf\n\tNL80211_ATTR_HE_6GHZ_CAPABILITY                         = 0x125\n\tNL80211_ATTR_HE_BSS_COLOR                               = 0x11b\n\tNL80211_ATTR_HE_CAPABILITY                              = 0x10d\n\tNL80211_ATTR_HE_OBSS_PD                                 = 0x117\n\tNL80211_ATTR_HIDDEN_SSID                                = 0x7e\n\tNL80211_ATTR_HT_CAPABILITY                              = 0x1f\n\tNL80211_ATTR_HT_CAPABILITY_MASK                         = 0x94\n\tNL80211_ATTR_HW_TIMESTAMP_ENABLED                       = 0x144\n\tNL80211_ATTR_IE_ASSOC_RESP                              = 0x80\n\tNL80211_ATTR_IE                                         = 0x2a\n\tNL80211_ATTR_IE_PROBE_RESP                              = 0x7f\n\tNL80211_ATTR_IE_RIC                                     = 0xb2\n\tNL80211_ATTR_IFACE_SOCKET_OWNER                         = 0xcc\n\tNL80211_ATTR_IFINDEX                                    = 0x3\n\tNL80211_ATTR_IFNAME                                     = 0x4\n\tNL80211_ATTR_IFTYPE_AKM_SUITES                          = 0x11c\n\tNL80211_ATTR_IFTYPE                                     = 0x5\n\tNL80211_ATTR_IFTYPE_EXT_CAPA                            = 0xe6\n\tNL80211_ATTR_INACTIVITY_TIMEOUT                         = 0x96\n\tNL80211_ATTR_INTERFACE_COMBINATIONS                     = 0x78\n\tNL80211_ATTR_KEY_CIPHER                                 = 0x9\n\tNL80211_ATTR_KEY                                        = 0x50\n\tNL80211_ATTR_KEY_DATA                                   = 0x7\n\tNL80211_ATTR_KEY_DEFAULT                                = 0xb\n\tNL80211_ATTR_KEY_DEFAULT_MGMT                           = 0x28\n\tNL80211_ATTR_KEY_DEFAULT_TYPES                          = 0x6e\n\tNL80211_ATTR_KEY_IDX                                    = 0x8\n\tNL80211_ATTR_KEYS                                       = 0x51\n\tNL80211_ATTR_KEY_SEQ                                    = 0xa\n\tNL80211_ATTR_KEY_TYPE                                   = 0x37\n\tNL80211_ATTR_LOCAL_MESH_POWER_MODE                      = 0xa4\n\tNL80211_ATTR_LOCAL_STATE_CHANGE                         = 0x5f\n\tNL80211_ATTR_MAC_ACL_MAX                                = 0xa7\n\tNL80211_ATTR_MAC_ADDRS                                  = 0xa6\n\tNL80211_ATTR_MAC                                        = 0x6\n\tNL80211_ATTR_MAC_HINT                                   = 0xc8\n\tNL80211_ATTR_MAC_MASK                                   = 0xd7\n\tNL80211_ATTR_MAX_AP_ASSOC_STA                           = 0xca\n\tNL80211_ATTR_MAX                                        = 0x151\n\tNL80211_ATTR_MAX_CRIT_PROT_DURATION                     = 0xb4\n\tNL80211_ATTR_MAX_CSA_COUNTERS                           = 0xce\n\tNL80211_ATTR_MAX_HW_TIMESTAMP_PEERS                     = 0x143\n\tNL80211_ATTR_MAX_MATCH_SETS                             = 0x85\n\tNL80211_ATTR_MAX_NUM_AKM_SUITES                         = 0x13c\n\tNL80211_ATTR_MAX_NUM_PMKIDS                             = 0x56\n\tNL80211_ATTR_MAX_NUM_SCAN_SSIDS                         = 0x2b\n\tNL80211_ATTR_MAX_NUM_SCHED_SCAN_PLANS                   = 0xde\n\tNL80211_ATTR_MAX_NUM_SCHED_SCAN_SSIDS                   = 0x7b\n\tNL80211_ATTR_MAX_REMAIN_ON_CHANNEL_DURATION             = 0x6f\n\tNL80211_ATTR_MAX_SCAN_IE_LEN                            = 0x38\n\tNL80211_ATTR_MAX_SCAN_PLAN_INTERVAL                     = 0xdf\n\tNL80211_ATTR_MAX_SCAN_PLAN_ITERATIONS                   = 0xe0\n\tNL80211_ATTR_MAX_SCHED_SCAN_IE_LEN                      = 0x7c\n\tNL80211_ATTR_MBSSID_CONFIG                              = 0x132\n\tNL80211_ATTR_MBSSID_ELEMS                               = 0x133\n\tNL80211_ATTR_MCAST_RATE                                 = 0x6b\n\tNL80211_ATTR_MDID                                       = 0xb1\n\tNL80211_ATTR_MEASUREMENT_DURATION                       = 0xeb\n\tNL80211_ATTR_MEASUREMENT_DURATION_MANDATORY             = 0xec\n\tNL80211_ATTR_MESH_CONFIG                                = 0x23\n\tNL80211_ATTR_MESH_ID                                    = 0x18\n\tNL80211_ATTR_MESH_PEER_AID                              = 0xed\n\tNL80211_ATTR_MESH_SETUP                                 = 0x70\n\tNL80211_ATTR_MGMT_SUBTYPE                               = 0x29\n\tNL80211_ATTR_MLD_ADDR                                   = 0x13a\n\tNL80211_ATTR_MLD_CAPA_AND_OPS                           = 0x13e\n\tNL80211_ATTR_MLO_LINK_DISABLED                          = 0x146\n\tNL80211_ATTR_MLO_LINK_ID                                = 0x139\n\tNL80211_ATTR_MLO_LINKS                                  = 0x138\n\tNL80211_ATTR_MLO_SUPPORT                                = 0x13b\n\tNL80211_ATTR_MLO_TTLM_DLINK                             = 0x148\n\tNL80211_ATTR_MLO_TTLM_ULINK                             = 0x149\n\tNL80211_ATTR_MNTR_FLAGS                                 = 0x17\n\tNL80211_ATTR_MPATH_INFO                                 = 0x1b\n\tNL80211_ATTR_MPATH_NEXT_HOP                             = 0x1a\n\tNL80211_ATTR_MULTICAST_TO_UNICAST_ENABLED               = 0xf4\n\tNL80211_ATTR_MU_MIMO_FOLLOW_MAC_ADDR                    = 0xe8\n\tNL80211_ATTR_MU_MIMO_GROUP_DATA                         = 0xe7\n\tNL80211_ATTR_NAN_FUNC                                   = 0xf0\n\tNL80211_ATTR_NAN_MASTER_PREF                            = 0xee\n\tNL80211_ATTR_NAN_MATCH                                  = 0xf1\n\tNL80211_ATTR_NETNS_FD                                   = 0xdb\n\tNL80211_ATTR_NOACK_MAP                                  = 0x95\n\tNL80211_ATTR_NSS                                        = 0x106\n\tNL80211_ATTR_OBSS_COLOR_BITMAP                          = 0x12e\n\tNL80211_ATTR_OFFCHANNEL_TX_OK                           = 0x6c\n\tNL80211_ATTR_OPER_CLASS                                 = 0xd6\n\tNL80211_ATTR_OPMODE_NOTIF                               = 0xc2\n\tNL80211_ATTR_P2P_CTWINDOW                               = 0xa2\n\tNL80211_ATTR_P2P_OPPPS                                  = 0xa3\n\tNL80211_ATTR_PAD                                        = 0xe5\n\tNL80211_ATTR_PBSS                                       = 0xe2\n\tNL80211_ATTR_PEER_AID                                   = 0xb5\n\tNL80211_ATTR_PEER_MEASUREMENTS                          = 0x111\n\tNL80211_ATTR_PID                                        = 0x52\n\tNL80211_ATTR_PMK                                        = 0xfe\n\tNL80211_ATTR_PMKID                                      = 0x55\n\tNL80211_ATTR_PMK_LIFETIME                               = 0x11f\n\tNL80211_ATTR_PMKR0_NAME                                 = 0x102\n\tNL80211_ATTR_PMK_REAUTH_THRESHOLD                       = 0x120\n\tNL80211_ATTR_PMKSA_CANDIDATE                            = 0x86\n\tNL80211_ATTR_PORT_AUTHORIZED                            = 0x103\n\tNL80211_ATTR_POWER_RULE_MAX_ANT_GAIN                    = 0x5\n\tNL80211_ATTR_POWER_RULE_MAX_EIRP                        = 0x6\n\tNL80211_ATTR_POWER_RULE_PSD                             = 0x8\n\tNL80211_ATTR_PREV_BSSID                                 = 0x4f\n\tNL80211_ATTR_PRIVACY                                    = 0x46\n\tNL80211_ATTR_PROBE_RESP                                 = 0x91\n\tNL80211_ATTR_PROBE_RESP_OFFLOAD                         = 0x90\n\tNL80211_ATTR_PROTOCOL_FEATURES                          = 0xad\n\tNL80211_ATTR_PS_STATE                                   = 0x5d\n\tNL80211_ATTR_PUNCT_BITMAP                               = 0x142\n\tNL80211_ATTR_QOS_MAP                                    = 0xc7\n\tNL80211_ATTR_RADAR_BACKGROUND                           = 0x134\n\tNL80211_ATTR_RADAR_EVENT                                = 0xa8\n\tNL80211_ATTR_REASON_CODE                                = 0x36\n\tNL80211_ATTR_RECEIVE_MULTICAST                          = 0x121\n\tNL80211_ATTR_RECONNECT_REQUESTED                        = 0x12b\n\tNL80211_ATTR_REG_ALPHA2                                 = 0x21\n\tNL80211_ATTR_REG_INDOOR                                 = 0xdd\n\tNL80211_ATTR_REG_INITIATOR                              = 0x30\n\tNL80211_ATTR_REG_RULE_FLAGS                             = 0x1\n\tNL80211_ATTR_REG_RULES                                  = 0x22\n\tNL80211_ATTR_REG_TYPE                                   = 0x31\n\tNL80211_ATTR_REKEY_DATA                                 = 0x7a\n\tNL80211_ATTR_REQ_IE                                     = 0x4d\n\tNL80211_ATTR_RESP_IE                                    = 0x4e\n\tNL80211_ATTR_ROAM_SUPPORT                               = 0x83\n\tNL80211_ATTR_RX_FRAME_TYPES                             = 0x64\n\tNL80211_ATTR_RX_HW_TIMESTAMP                            = 0x140\n\tNL80211_ATTR_RXMGMT_FLAGS                               = 0xbc\n\tNL80211_ATTR_RX_SIGNAL_DBM                              = 0x97\n\tNL80211_ATTR_S1G_CAPABILITY                             = 0x128\n\tNL80211_ATTR_S1G_CAPABILITY_MASK                        = 0x129\n\tNL80211_ATTR_SAE_DATA                                   = 0x9c\n\tNL80211_ATTR_SAE_PASSWORD                               = 0x115\n\tNL80211_ATTR_SAE_PWE                                    = 0x12a\n\tNL80211_ATTR_SAR_SPEC                                   = 0x12c\n\tNL80211_ATTR_SCAN_FLAGS                                 = 0x9e\n\tNL80211_ATTR_SCAN_FREQ_KHZ                              = 0x124\n\tNL80211_ATTR_SCAN_FREQUENCIES                           = 0x2c\n\tNL80211_ATTR_SCAN_GENERATION                            = 0x2e\n\tNL80211_ATTR_SCAN_SSIDS                                 = 0x2d\n\tNL80211_ATTR_SCAN_START_TIME_TSF_BSSID                  = 0xea\n\tNL80211_ATTR_SCAN_START_TIME_TSF                        = 0xe9\n\tNL80211_ATTR_SCAN_SUPP_RATES                            = 0x7d\n\tNL80211_ATTR_SCHED_SCAN_DELAY                           = 0xdc\n\tNL80211_ATTR_SCHED_SCAN_INTERVAL                        = 0x77\n\tNL80211_ATTR_SCHED_SCAN_MATCH                           = 0x84\n\tNL80211_ATTR_SCHED_SCAN_MATCH_SSID                      = 0x1\n\tNL80211_ATTR_SCHED_SCAN_MAX_REQS                        = 0x100\n\tNL80211_ATTR_SCHED_SCAN_MULTI                           = 0xff\n\tNL80211_ATTR_SCHED_SCAN_PLANS                           = 0xe1\n\tNL80211_ATTR_SCHED_SCAN_RELATIVE_RSSI                   = 0xf6\n\tNL80211_ATTR_SCHED_SCAN_RSSI_ADJUST                     = 0xf7\n\tNL80211_ATTR_SMPS_MODE                                  = 0xd5\n\tNL80211_ATTR_SOCKET_OWNER                               = 0xcc\n\tNL80211_ATTR_SOFTWARE_IFTYPES                           = 0x79\n\tNL80211_ATTR_SPLIT_WIPHY_DUMP                           = 0xae\n\tNL80211_ATTR_SSID                                       = 0x34\n\tNL80211_ATTR_STA_AID                                    = 0x10\n\tNL80211_ATTR_STA_CAPABILITY                             = 0xab\n\tNL80211_ATTR_STA_EXT_CAPABILITY                         = 0xac\n\tNL80211_ATTR_STA_FLAGS2                                 = 0x43\n\tNL80211_ATTR_STA_FLAGS                                  = 0x11\n\tNL80211_ATTR_STA_INFO                                   = 0x15\n\tNL80211_ATTR_STA_LISTEN_INTERVAL                        = 0x12\n\tNL80211_ATTR_STA_PLINK_ACTION                           = 0x19\n\tNL80211_ATTR_STA_PLINK_STATE                            = 0x74\n\tNL80211_ATTR_STA_SUPPORTED_CHANNELS                     = 0xbd\n\tNL80211_ATTR_STA_SUPPORTED_OPER_CLASSES                 = 0xbe\n\tNL80211_ATTR_STA_SUPPORTED_RATES                        = 0x13\n\tNL80211_ATTR_STA_SUPPORT_P2P_PS                         = 0xe4\n\tNL80211_ATTR_STATUS_CODE                                = 0x48\n\tNL80211_ATTR_STA_TX_POWER                               = 0x114\n\tNL80211_ATTR_STA_TX_POWER_SETTING                       = 0x113\n\tNL80211_ATTR_STA_VLAN                                   = 0x14\n\tNL80211_ATTR_STA_WME                                    = 0x81\n\tNL80211_ATTR_SUPPORT_10_MHZ                             = 0xc1\n\tNL80211_ATTR_SUPPORT_5_MHZ                              = 0xc0\n\tNL80211_ATTR_SUPPORT_AP_UAPSD                           = 0x82\n\tNL80211_ATTR_SUPPORTED_COMMANDS                         = 0x32\n\tNL80211_ATTR_SUPPORTED_IFTYPES                          = 0x20\n\tNL80211_ATTR_SUPPORT_IBSS_RSN                           = 0x68\n\tNL80211_ATTR_SUPPORT_MESH_AUTH                          = 0x73\n\tNL80211_ATTR_SURVEY_INFO                                = 0x54\n\tNL80211_ATTR_SURVEY_RADIO_STATS                         = 0xda\n\tNL80211_ATTR_TD_BITMAP                                  = 0x141\n\tNL80211_ATTR_TDLS_ACTION                                = 0x88\n\tNL80211_ATTR_TDLS_DIALOG_TOKEN                          = 0x89\n\tNL80211_ATTR_TDLS_EXTERNAL_SETUP                        = 0x8c\n\tNL80211_ATTR_TDLS_INITIATOR                             = 0xcf\n\tNL80211_ATTR_TDLS_OPERATION                             = 0x8a\n\tNL80211_ATTR_TDLS_PEER_CAPABILITY                       = 0xcb\n\tNL80211_ATTR_TDLS_SUPPORT                               = 0x8b\n\tNL80211_ATTR_TESTDATA                                   = 0x45\n\tNL80211_ATTR_TID_CONFIG                                 = 0x11d\n\tNL80211_ATTR_TIMED_OUT                                  = 0x41\n\tNL80211_ATTR_TIMEOUT                                    = 0x110\n\tNL80211_ATTR_TIMEOUT_REASON                             = 0xf8\n\tNL80211_ATTR_TSID                                       = 0xd2\n\tNL80211_ATTR_TWT_RESPONDER                              = 0x116\n\tNL80211_ATTR_TX_FRAME_TYPES                             = 0x63\n\tNL80211_ATTR_TX_HW_TIMESTAMP                            = 0x13f\n\tNL80211_ATTR_TX_NO_CCK_RATE                             = 0x87\n\tNL80211_ATTR_TXQ_LIMIT                                  = 0x10a\n\tNL80211_ATTR_TXQ_MEMORY_LIMIT                           = 0x10b\n\tNL80211_ATTR_TXQ_QUANTUM                                = 0x10c\n\tNL80211_ATTR_TXQ_STATS                                  = 0x109\n\tNL80211_ATTR_TX_RATES                                   = 0x5a\n\tNL80211_ATTR_UNSOL_BCAST_PROBE_RESP                     = 0x127\n\tNL80211_ATTR_UNSPEC                                     = 0x0\n\tNL80211_ATTR_USE_MFP                                    = 0x42\n\tNL80211_ATTR_USER_PRIO                                  = 0xd3\n\tNL80211_ATTR_USER_REG_HINT_TYPE                         = 0x9a\n\tNL80211_ATTR_USE_RRM                                    = 0xd0\n\tNL80211_ATTR_VENDOR_DATA                                = 0xc5\n\tNL80211_ATTR_VENDOR_EVENTS                              = 0xc6\n\tNL80211_ATTR_VENDOR_ID                                  = 0xc3\n\tNL80211_ATTR_VENDOR_SUBCMD                              = 0xc4\n\tNL80211_ATTR_VHT_CAPABILITY                             = 0x9d\n\tNL80211_ATTR_VHT_CAPABILITY_MASK                        = 0xb0\n\tNL80211_ATTR_VLAN_ID                                    = 0x11a\n\tNL80211_ATTR_WANT_1X_4WAY_HS                            = 0x101\n\tNL80211_ATTR_WDEV                                       = 0x99\n\tNL80211_ATTR_WIPHY_ANTENNA_AVAIL_RX                     = 0x72\n\tNL80211_ATTR_WIPHY_ANTENNA_AVAIL_TX                     = 0x71\n\tNL80211_ATTR_WIPHY_ANTENNA_RX                           = 0x6a\n\tNL80211_ATTR_WIPHY_ANTENNA_TX                           = 0x69\n\tNL80211_ATTR_WIPHY_BANDS                                = 0x16\n\tNL80211_ATTR_WIPHY_CHANNEL_TYPE                         = 0x27\n\tNL80211_ATTR_WIPHY                                      = 0x1\n\tNL80211_ATTR_WIPHY_COVERAGE_CLASS                       = 0x59\n\tNL80211_ATTR_WIPHY_DYN_ACK                              = 0xd1\n\tNL80211_ATTR_WIPHY_EDMG_BW_CONFIG                       = 0x119\n\tNL80211_ATTR_WIPHY_EDMG_CHANNELS                        = 0x118\n\tNL80211_ATTR_WIPHY_FRAG_THRESHOLD                       = 0x3f\n\tNL80211_ATTR_WIPHY_FREQ                                 = 0x26\n\tNL80211_ATTR_WIPHY_FREQ_HINT                            = 0xc9\n\tNL80211_ATTR_WIPHY_FREQ_OFFSET                          = 0x122\n\tNL80211_ATTR_WIPHY_INTERFACE_COMBINATIONS               = 0x14c\n\tNL80211_ATTR_WIPHY_NAME                                 = 0x2\n\tNL80211_ATTR_WIPHY_RADIOS                               = 0x14b\n\tNL80211_ATTR_WIPHY_RETRY_LONG                           = 0x3e\n\tNL80211_ATTR_WIPHY_RETRY_SHORT                          = 0x3d\n\tNL80211_ATTR_WIPHY_RTS_THRESHOLD                        = 0x40\n\tNL80211_ATTR_WIPHY_SELF_MANAGED_REG                     = 0xd8\n\tNL80211_ATTR_WIPHY_TX_POWER_LEVEL                       = 0x62\n\tNL80211_ATTR_WIPHY_TX_POWER_SETTING                     = 0x61\n\tNL80211_ATTR_WIPHY_TXQ_PARAMS                           = 0x25\n\tNL80211_ATTR_WOWLAN_TRIGGERS                            = 0x75\n\tNL80211_ATTR_WOWLAN_TRIGGERS_SUPPORTED                  = 0x76\n\tNL80211_ATTR_WPA_VERSIONS                               = 0x4b\n\tNL80211_AUTHTYPE_AUTOMATIC                              = 0x8\n\tNL80211_AUTHTYPE_FILS_PK                                = 0x7\n\tNL80211_AUTHTYPE_FILS_SK                                = 0x5\n\tNL80211_AUTHTYPE_FILS_SK_PFS                            = 0x6\n\tNL80211_AUTHTYPE_FT                                     = 0x2\n\tNL80211_AUTHTYPE_MAX                                    = 0x7\n\tNL80211_AUTHTYPE_NETWORK_EAP                            = 0x3\n\tNL80211_AUTHTYPE_OPEN_SYSTEM                            = 0x0\n\tNL80211_AUTHTYPE_SAE                                    = 0x4\n\tNL80211_AUTHTYPE_SHARED_KEY                             = 0x1\n\tNL80211_BAND_2GHZ                                       = 0x0\n\tNL80211_BAND_5GHZ                                       = 0x1\n\tNL80211_BAND_60GHZ                                      = 0x2\n\tNL80211_BAND_6GHZ                                       = 0x3\n\tNL80211_BAND_ATTR_EDMG_BW_CONFIG                        = 0xb\n\tNL80211_BAND_ATTR_EDMG_CHANNELS                         = 0xa\n\tNL80211_BAND_ATTR_FREQS                                 = 0x1\n\tNL80211_BAND_ATTR_HT_AMPDU_DENSITY                      = 0x6\n\tNL80211_BAND_ATTR_HT_AMPDU_FACTOR                       = 0x5\n\tNL80211_BAND_ATTR_HT_CAPA                               = 0x4\n\tNL80211_BAND_ATTR_HT_MCS_SET                            = 0x3\n\tNL80211_BAND_ATTR_IFTYPE_DATA                           = 0x9\n\tNL80211_BAND_ATTR_MAX                                   = 0xd\n\tNL80211_BAND_ATTR_RATES                                 = 0x2\n\tNL80211_BAND_ATTR_S1G_CAPA                              = 0xd\n\tNL80211_BAND_ATTR_S1G_MCS_NSS_SET                       = 0xc\n\tNL80211_BAND_ATTR_VHT_CAPA                              = 0x8\n\tNL80211_BAND_ATTR_VHT_MCS_SET                           = 0x7\n\tNL80211_BAND_IFTYPE_ATTR_EHT_CAP_MAC                    = 0x8\n\tNL80211_BAND_IFTYPE_ATTR_EHT_CAP_MCS_SET                = 0xa\n\tNL80211_BAND_IFTYPE_ATTR_EHT_CAP_PHY                    = 0x9\n\tNL80211_BAND_IFTYPE_ATTR_EHT_CAP_PPE                    = 0xb\n\tNL80211_BAND_IFTYPE_ATTR_HE_6GHZ_CAPA                   = 0x6\n\tNL80211_BAND_IFTYPE_ATTR_HE_CAP_MAC                     = 0x2\n\tNL80211_BAND_IFTYPE_ATTR_HE_CAP_MCS_SET                 = 0x4\n\tNL80211_BAND_IFTYPE_ATTR_HE_CAP_PHY                     = 0x3\n\tNL80211_BAND_IFTYPE_ATTR_HE_CAP_PPE                     = 0x5\n\tNL80211_BAND_IFTYPE_ATTR_IFTYPES                        = 0x1\n\tNL80211_BAND_IFTYPE_ATTR_MAX                            = 0xb\n\tNL80211_BAND_IFTYPE_ATTR_VENDOR_ELEMS                   = 0x7\n\tNL80211_BAND_LC                                         = 0x5\n\tNL80211_BAND_S1GHZ                                      = 0x4\n\tNL80211_BITRATE_ATTR_2GHZ_SHORTPREAMBLE                 = 0x2\n\tNL80211_BITRATE_ATTR_MAX                                = 0x2\n\tNL80211_BITRATE_ATTR_RATE                               = 0x1\n\tNL80211_BSS_BEACON_IES                                  = 0xb\n\tNL80211_BSS_BEACON_INTERVAL                             = 0x4\n\tNL80211_BSS_BEACON_TSF                                  = 0xd\n\tNL80211_BSS_BSSID                                       = 0x1\n\tNL80211_BSS_CANNOT_USE_6GHZ_PWR_MISMATCH                = 0x2\n\tNL80211_BSS_CANNOT_USE_NSTR_NONPRIMARY                  = 0x1\n\tNL80211_BSS_CANNOT_USE_REASONS                          = 0x18\n\tNL80211_BSS_CANNOT_USE_UHB_PWR_MISMATCH                 = 0x2\n\tNL80211_BSS_CAPABILITY                                  = 0x5\n\tNL80211_BSS_CHAIN_SIGNAL                                = 0x13\n\tNL80211_BSS_CHAN_WIDTH_10                               = 0x1\n\tNL80211_BSS_CHAN_WIDTH_1                                = 0x3\n\tNL80211_BSS_CHAN_WIDTH_20                               = 0x0\n\tNL80211_BSS_CHAN_WIDTH_2                                = 0x4\n\tNL80211_BSS_CHAN_WIDTH_5                                = 0x2\n\tNL80211_BSS_CHAN_WIDTH                                  = 0xc\n\tNL80211_BSS_FREQUENCY                                   = 0x2\n\tNL80211_BSS_FREQUENCY_OFFSET                            = 0x14\n\tNL80211_BSS_INFORMATION_ELEMENTS                        = 0x6\n\tNL80211_BSS_LAST_SEEN_BOOTTIME                          = 0xf\n\tNL80211_BSS_MAX                                         = 0x18\n\tNL80211_BSS_MLD_ADDR                                    = 0x16\n\tNL80211_BSS_MLO_LINK_ID                                 = 0x15\n\tNL80211_BSS_PAD                                         = 0x10\n\tNL80211_BSS_PARENT_BSSID                                = 0x12\n\tNL80211_BSS_PARENT_TSF                                  = 0x11\n\tNL80211_BSS_PRESP_DATA                                  = 0xe\n\tNL80211_BSS_SEEN_MS_AGO                                 = 0xa\n\tNL80211_BSS_SELECT_ATTR_BAND_PREF                       = 0x2\n\tNL80211_BSS_SELECT_ATTR_MAX                             = 0x3\n\tNL80211_BSS_SELECT_ATTR_RSSI_ADJUST                     = 0x3\n\tNL80211_BSS_SELECT_ATTR_RSSI                            = 0x1\n\tNL80211_BSS_SIGNAL_MBM                                  = 0x7\n\tNL80211_BSS_SIGNAL_UNSPEC                               = 0x8\n\tNL80211_BSS_STATUS_ASSOCIATED                           = 0x1\n\tNL80211_BSS_STATUS_AUTHENTICATED                        = 0x0\n\tNL80211_BSS_STATUS                                      = 0x9\n\tNL80211_BSS_STATUS_IBSS_JOINED                          = 0x2\n\tNL80211_BSS_TSF                                         = 0x3\n\tNL80211_BSS_USE_FOR                                     = 0x17\n\tNL80211_BSS_USE_FOR_MLD_LINK                            = 0x2\n\tNL80211_BSS_USE_FOR_NORMAL                              = 0x1\n\tNL80211_CHAN_HT20                                       = 0x1\n\tNL80211_CHAN_HT40MINUS                                  = 0x2\n\tNL80211_CHAN_HT40PLUS                                   = 0x3\n\tNL80211_CHAN_NO_HT                                      = 0x0\n\tNL80211_CHAN_WIDTH_10                                   = 0x7\n\tNL80211_CHAN_WIDTH_160                                  = 0x5\n\tNL80211_CHAN_WIDTH_16                                   = 0xc\n\tNL80211_CHAN_WIDTH_1                                    = 0x8\n\tNL80211_CHAN_WIDTH_20                                   = 0x1\n\tNL80211_CHAN_WIDTH_20_NOHT                              = 0x0\n\tNL80211_CHAN_WIDTH_2                                    = 0x9\n\tNL80211_CHAN_WIDTH_320                                  = 0xd\n\tNL80211_CHAN_WIDTH_40                                   = 0x2\n\tNL80211_CHAN_WIDTH_4                                    = 0xa\n\tNL80211_CHAN_WIDTH_5                                    = 0x6\n\tNL80211_CHAN_WIDTH_80                                   = 0x3\n\tNL80211_CHAN_WIDTH_80P80                                = 0x4\n\tNL80211_CHAN_WIDTH_8                                    = 0xb\n\tNL80211_CMD_ABORT_SCAN                                  = 0x72\n\tNL80211_CMD_ACTION                                      = 0x3b\n\tNL80211_CMD_ACTION_TX_STATUS                            = 0x3c\n\tNL80211_CMD_ADD_LINK                                    = 0x94\n\tNL80211_CMD_ADD_LINK_STA                                = 0x96\n\tNL80211_CMD_ADD_NAN_FUNCTION                            = 0x75\n\tNL80211_CMD_ADD_TX_TS                                   = 0x69\n\tNL80211_CMD_ASSOC_COMEBACK                              = 0x93\n\tNL80211_CMD_ASSOCIATE                                   = 0x26\n\tNL80211_CMD_AUTHENTICATE                                = 0x25\n\tNL80211_CMD_CANCEL_REMAIN_ON_CHANNEL                    = 0x38\n\tNL80211_CMD_CHANGE_NAN_CONFIG                           = 0x77\n\tNL80211_CMD_CHANNEL_SWITCH                              = 0x66\n\tNL80211_CMD_CH_SWITCH_NOTIFY                            = 0x58\n\tNL80211_CMD_CH_SWITCH_STARTED_NOTIFY                    = 0x6e\n\tNL80211_CMD_COLOR_CHANGE_ABORTED                        = 0x90\n\tNL80211_CMD_COLOR_CHANGE_COMPLETED                      = 0x91\n\tNL80211_CMD_COLOR_CHANGE_REQUEST                        = 0x8e\n\tNL80211_CMD_COLOR_CHANGE_STARTED                        = 0x8f\n\tNL80211_CMD_CONNECT                                     = 0x2e\n\tNL80211_CMD_CONN_FAILED                                 = 0x5b\n\tNL80211_CMD_CONTROL_PORT_FRAME                          = 0x81\n\tNL80211_CMD_CONTROL_PORT_FRAME_TX_STATUS                = 0x8b\n\tNL80211_CMD_CRIT_PROTOCOL_START                         = 0x62\n\tNL80211_CMD_CRIT_PROTOCOL_STOP                          = 0x63\n\tNL80211_CMD_DEAUTHENTICATE                              = 0x27\n\tNL80211_CMD_DEL_BEACON                                  = 0x10\n\tNL80211_CMD_DEL_INTERFACE                               = 0x8\n\tNL80211_CMD_DEL_KEY                                     = 0xc\n\tNL80211_CMD_DEL_MPATH                                   = 0x18\n\tNL80211_CMD_DEL_NAN_FUNCTION                            = 0x76\n\tNL80211_CMD_DEL_PMK                                     = 0x7c\n\tNL80211_CMD_DEL_PMKSA                                   = 0x35\n\tNL80211_CMD_DEL_STATION                                 = 0x14\n\tNL80211_CMD_DEL_TX_TS                                   = 0x6a\n\tNL80211_CMD_DEL_WIPHY                                   = 0x4\n\tNL80211_CMD_DISASSOCIATE                                = 0x28\n\tNL80211_CMD_DISCONNECT                                  = 0x30\n\tNL80211_CMD_EXTERNAL_AUTH                               = 0x7f\n\tNL80211_CMD_FLUSH_PMKSA                                 = 0x36\n\tNL80211_CMD_FRAME                                       = 0x3b\n\tNL80211_CMD_FRAME_TX_STATUS                             = 0x3c\n\tNL80211_CMD_FRAME_WAIT_CANCEL                           = 0x43\n\tNL80211_CMD_FT_EVENT                                    = 0x61\n\tNL80211_CMD_GET_BEACON                                  = 0xd\n\tNL80211_CMD_GET_COALESCE                                = 0x64\n\tNL80211_CMD_GET_FTM_RESPONDER_STATS                     = 0x82\n\tNL80211_CMD_GET_INTERFACE                               = 0x5\n\tNL80211_CMD_GET_KEY                                     = 0x9\n\tNL80211_CMD_GET_MESH_CONFIG                             = 0x1c\n\tNL80211_CMD_GET_MESH_PARAMS                             = 0x1c\n\tNL80211_CMD_GET_MPATH                                   = 0x15\n\tNL80211_CMD_GET_MPP                                     = 0x6b\n\tNL80211_CMD_GET_POWER_SAVE                              = 0x3e\n\tNL80211_CMD_GET_PROTOCOL_FEATURES                       = 0x5f\n\tNL80211_CMD_GET_REG                                     = 0x1f\n\tNL80211_CMD_GET_SCAN                                    = 0x20\n\tNL80211_CMD_GET_STATION                                 = 0x11\n\tNL80211_CMD_GET_SURVEY                                  = 0x32\n\tNL80211_CMD_GET_WIPHY                                   = 0x1\n\tNL80211_CMD_GET_WOWLAN                                  = 0x49\n\tNL80211_CMD_JOIN_IBSS                                   = 0x2b\n\tNL80211_CMD_JOIN_MESH                                   = 0x44\n\tNL80211_CMD_JOIN_OCB                                    = 0x6c\n\tNL80211_CMD_LEAVE_IBSS                                  = 0x2c\n\tNL80211_CMD_LEAVE_MESH                                  = 0x45\n\tNL80211_CMD_LEAVE_OCB                                   = 0x6d\n\tNL80211_CMD_LINKS_REMOVED                               = 0x9a\n\tNL80211_CMD_MAX                                         = 0x9d\n\tNL80211_CMD_MICHAEL_MIC_FAILURE                         = 0x29\n\tNL80211_CMD_MODIFY_LINK_STA                             = 0x97\n\tNL80211_CMD_NAN_MATCH                                   = 0x78\n\tNL80211_CMD_NEW_BEACON                                  = 0xf\n\tNL80211_CMD_NEW_INTERFACE                               = 0x7\n\tNL80211_CMD_NEW_KEY                                     = 0xb\n\tNL80211_CMD_NEW_MPATH                                   = 0x17\n\tNL80211_CMD_NEW_PEER_CANDIDATE                          = 0x48\n\tNL80211_CMD_NEW_SCAN_RESULTS                            = 0x22\n\tNL80211_CMD_NEW_STATION                                 = 0x13\n\tNL80211_CMD_NEW_SURVEY_RESULTS                          = 0x33\n\tNL80211_CMD_NEW_WIPHY                                   = 0x3\n\tNL80211_CMD_NOTIFY_CQM                                  = 0x40\n\tNL80211_CMD_NOTIFY_RADAR                                = 0x86\n\tNL80211_CMD_OBSS_COLOR_COLLISION                        = 0x8d\n\tNL80211_CMD_PEER_MEASUREMENT_COMPLETE                   = 0x85\n\tNL80211_CMD_PEER_MEASUREMENT_RESULT                     = 0x84\n\tNL80211_CMD_PEER_MEASUREMENT_START                      = 0x83\n\tNL80211_CMD_PMKSA_CANDIDATE                             = 0x50\n\tNL80211_CMD_PORT_AUTHORIZED                             = 0x7d\n\tNL80211_CMD_PROBE_CLIENT                                = 0x54\n\tNL80211_CMD_PROBE_MESH_LINK                             = 0x88\n\tNL80211_CMD_RADAR_DETECT                                = 0x5e\n\tNL80211_CMD_REG_BEACON_HINT                             = 0x2a\n\tNL80211_CMD_REG_CHANGE                                  = 0x24\n\tNL80211_CMD_REGISTER_ACTION                             = 0x3a\n\tNL80211_CMD_REGISTER_BEACONS                            = 0x55\n\tNL80211_CMD_REGISTER_FRAME                              = 0x3a\n\tNL80211_CMD_RELOAD_REGDB                                = 0x7e\n\tNL80211_CMD_REMAIN_ON_CHANNEL                           = 0x37\n\tNL80211_CMD_REMOVE_LINK                                 = 0x95\n\tNL80211_CMD_REMOVE_LINK_STA                             = 0x98\n\tNL80211_CMD_REQ_SET_REG                                 = 0x1b\n\tNL80211_CMD_ROAM                                        = 0x2f\n\tNL80211_CMD_SCAN_ABORTED                                = 0x23\n\tNL80211_CMD_SCHED_SCAN_RESULTS                          = 0x4d\n\tNL80211_CMD_SCHED_SCAN_STOPPED                          = 0x4e\n\tNL80211_CMD_SET_BEACON                                  = 0xe\n\tNL80211_CMD_SET_BSS                                     = 0x19\n\tNL80211_CMD_SET_CHANNEL                                 = 0x41\n\tNL80211_CMD_SET_COALESCE                                = 0x65\n\tNL80211_CMD_SET_CQM                                     = 0x3f\n\tNL80211_CMD_SET_FILS_AAD                                = 0x92\n\tNL80211_CMD_SET_HW_TIMESTAMP                            = 0x99\n\tNL80211_CMD_SET_INTERFACE                               = 0x6\n\tNL80211_CMD_SET_KEY                                     = 0xa\n\tNL80211_CMD_SET_MAC_ACL                                 = 0x5d\n\tNL80211_CMD_SET_MCAST_RATE                              = 0x5c\n\tNL80211_CMD_SET_MESH_CONFIG                             = 0x1d\n\tNL80211_CMD_SET_MESH_PARAMS                             = 0x1d\n\tNL80211_CMD_SET_MGMT_EXTRA_IE                           = 0x1e\n\tNL80211_CMD_SET_MPATH                                   = 0x16\n\tNL80211_CMD_SET_MULTICAST_TO_UNICAST                    = 0x79\n\tNL80211_CMD_SET_NOACK_MAP                               = 0x57\n\tNL80211_CMD_SET_PMK                                     = 0x7b\n\tNL80211_CMD_SET_PMKSA                                   = 0x34\n\tNL80211_CMD_SET_POWER_SAVE                              = 0x3d\n\tNL80211_CMD_SET_QOS_MAP                                 = 0x68\n\tNL80211_CMD_SET_REG                                     = 0x1a\n\tNL80211_CMD_SET_REKEY_OFFLOAD                           = 0x4f\n\tNL80211_CMD_SET_SAR_SPECS                               = 0x8c\n\tNL80211_CMD_SET_STATION                                 = 0x12\n\tNL80211_CMD_SET_TID_CONFIG                              = 0x89\n\tNL80211_CMD_SET_TID_TO_LINK_MAPPING                     = 0x9b\n\tNL80211_CMD_SET_TX_BITRATE_MASK                         = 0x39\n\tNL80211_CMD_SET_WDS_PEER                                = 0x42\n\tNL80211_CMD_SET_WIPHY                                   = 0x2\n\tNL80211_CMD_SET_WIPHY_NETNS                             = 0x31\n\tNL80211_CMD_SET_WOWLAN                                  = 0x4a\n\tNL80211_CMD_STA_OPMODE_CHANGED                          = 0x80\n\tNL80211_CMD_START_AP                                    = 0xf\n\tNL80211_CMD_START_NAN                                   = 0x73\n\tNL80211_CMD_START_P2P_DEVICE                            = 0x59\n\tNL80211_CMD_START_SCHED_SCAN                            = 0x4b\n\tNL80211_CMD_STOP_AP                                     = 0x10\n\tNL80211_CMD_STOP_NAN                                    = 0x74\n\tNL80211_CMD_STOP_P2P_DEVICE                             = 0x5a\n\tNL80211_CMD_STOP_SCHED_SCAN                             = 0x4c\n\tNL80211_CMD_TDLS_CANCEL_CHANNEL_SWITCH                  = 0x70\n\tNL80211_CMD_TDLS_CHANNEL_SWITCH                         = 0x6f\n\tNL80211_CMD_TDLS_MGMT                                   = 0x52\n\tNL80211_CMD_TDLS_OPER                                   = 0x51\n\tNL80211_CMD_TESTMODE                                    = 0x2d\n\tNL80211_CMD_TRIGGER_SCAN                                = 0x21\n\tNL80211_CMD_UNEXPECTED_4ADDR_FRAME                      = 0x56\n\tNL80211_CMD_UNEXPECTED_FRAME                            = 0x53\n\tNL80211_CMD_UNPROT_BEACON                               = 0x8a\n\tNL80211_CMD_UNPROT_DEAUTHENTICATE                       = 0x46\n\tNL80211_CMD_UNPROT_DISASSOCIATE                         = 0x47\n\tNL80211_CMD_UNSPEC                                      = 0x0\n\tNL80211_CMD_UPDATE_CONNECT_PARAMS                       = 0x7a\n\tNL80211_CMD_UPDATE_FT_IES                               = 0x60\n\tNL80211_CMD_UPDATE_OWE_INFO                             = 0x87\n\tNL80211_CMD_VENDOR                                      = 0x67\n\tNL80211_CMD_WIPHY_REG_CHANGE                            = 0x71\n\tNL80211_COALESCE_CONDITION_MATCH                        = 0x0\n\tNL80211_COALESCE_CONDITION_NO_MATCH                     = 0x1\n\tNL80211_CONN_FAIL_BLOCKED_CLIENT                        = 0x1\n\tNL80211_CONN_FAIL_MAX_CLIENTS                           = 0x0\n\tNL80211_CQM_RSSI_BEACON_LOSS_EVENT                      = 0x2\n\tNL80211_CQM_RSSI_THRESHOLD_EVENT_HIGH                   = 0x1\n\tNL80211_CQM_RSSI_THRESHOLD_EVENT_LOW                    = 0x0\n\tNL80211_CQM_TXE_MAX_INTVL                               = 0x708\n\tNL80211_CRIT_PROTO_APIPA                                = 0x3\n\tNL80211_CRIT_PROTO_DHCP                                 = 0x1\n\tNL80211_CRIT_PROTO_EAPOL                                = 0x2\n\tNL80211_CRIT_PROTO_MAX_DURATION                         = 0x1388\n\tNL80211_CRIT_PROTO_UNSPEC                               = 0x0\n\tNL80211_DFS_AVAILABLE                                   = 0x2\n\tNL80211_DFS_ETSI                                        = 0x2\n\tNL80211_DFS_FCC                                         = 0x1\n\tNL80211_DFS_JP                                          = 0x3\n\tNL80211_DFS_UNAVAILABLE                                 = 0x1\n\tNL80211_DFS_UNSET                                       = 0x0\n\tNL80211_DFS_USABLE                                      = 0x0\n\tNL80211_EDMG_BW_CONFIG_MAX                              = 0xf\n\tNL80211_EDMG_BW_CONFIG_MIN                              = 0x4\n\tNL80211_EDMG_CHANNELS_MAX                               = 0x3c\n\tNL80211_EDMG_CHANNELS_MIN                               = 0x1\n\tNL80211_EHT_MAX_CAPABILITY_LEN                          = 0x33\n\tNL80211_EHT_MIN_CAPABILITY_LEN                          = 0xd\n\tNL80211_EXTERNAL_AUTH_ABORT                             = 0x1\n\tNL80211_EXTERNAL_AUTH_START                             = 0x0\n\tNL80211_EXT_FEATURE_4WAY_HANDSHAKE_AP_PSK               = 0x32\n\tNL80211_EXT_FEATURE_4WAY_HANDSHAKE_STA_1X               = 0x10\n\tNL80211_EXT_FEATURE_4WAY_HANDSHAKE_STA_PSK              = 0xf\n\tNL80211_EXT_FEATURE_ACCEPT_BCAST_PROBE_RESP             = 0x12\n\tNL80211_EXT_FEATURE_ACK_SIGNAL_SUPPORT                  = 0x1b\n\tNL80211_EXT_FEATURE_AIRTIME_FAIRNESS                    = 0x21\n\tNL80211_EXT_FEATURE_AP_PMKSA_CACHING                    = 0x22\n\tNL80211_EXT_FEATURE_AQL                                 = 0x28\n\tNL80211_EXT_FEATURE_AUTH_AND_DEAUTH_RANDOM_TA           = 0x40\n\tNL80211_EXT_FEATURE_BEACON_PROTECTION_CLIENT            = 0x2e\n\tNL80211_EXT_FEATURE_BEACON_PROTECTION                   = 0x29\n\tNL80211_EXT_FEATURE_BEACON_RATE_HE                      = 0x36\n\tNL80211_EXT_FEATURE_BEACON_RATE_HT                      = 0x7\n\tNL80211_EXT_FEATURE_BEACON_RATE_LEGACY                  = 0x6\n\tNL80211_EXT_FEATURE_BEACON_RATE_VHT                     = 0x8\n\tNL80211_EXT_FEATURE_BSS_COLOR                           = 0x3a\n\tNL80211_EXT_FEATURE_BSS_PARENT_TSF                      = 0x4\n\tNL80211_EXT_FEATURE_CAN_REPLACE_PTK0                    = 0x1f\n\tNL80211_EXT_FEATURE_CONTROL_PORT_NO_PREAUTH             = 0x2a\n\tNL80211_EXT_FEATURE_CONTROL_PORT_OVER_NL80211           = 0x1a\n\tNL80211_EXT_FEATURE_CONTROL_PORT_OVER_NL80211_TX_STATUS = 0x30\n\tNL80211_EXT_FEATURE_CQM_RSSI_LIST                       = 0xd\n\tNL80211_EXT_FEATURE_DATA_ACK_SIGNAL_SUPPORT             = 0x1b\n\tNL80211_EXT_FEATURE_DEL_IBSS_STA                        = 0x2c\n\tNL80211_EXT_FEATURE_DFS_CONCURRENT                      = 0x43\n\tNL80211_EXT_FEATURE_DFS_OFFLOAD                         = 0x19\n\tNL80211_EXT_FEATURE_ENABLE_FTM_RESPONDER                = 0x20\n\tNL80211_EXT_FEATURE_EXT_KEY_ID                          = 0x24\n\tNL80211_EXT_FEATURE_FILS_CRYPTO_OFFLOAD                 = 0x3b\n\tNL80211_EXT_FEATURE_FILS_DISCOVERY                      = 0x34\n\tNL80211_EXT_FEATURE_FILS_MAX_CHANNEL_TIME               = 0x11\n\tNL80211_EXT_FEATURE_FILS_SK_OFFLOAD                     = 0xe\n\tNL80211_EXT_FEATURE_FILS_STA                            = 0x9\n\tNL80211_EXT_FEATURE_HIGH_ACCURACY_SCAN                  = 0x18\n\tNL80211_EXT_FEATURE_LOW_POWER_SCAN                      = 0x17\n\tNL80211_EXT_FEATURE_LOW_SPAN_SCAN                       = 0x16\n\tNL80211_EXT_FEATURE_MFP_OPTIONAL                        = 0x15\n\tNL80211_EXT_FEATURE_MGMT_TX_RANDOM_TA                   = 0xa\n\tNL80211_EXT_FEATURE_MGMT_TX_RANDOM_TA_CONNECTED         = 0xb\n\tNL80211_EXT_FEATURE_MULTICAST_REGISTRATIONS             = 0x2d\n\tNL80211_EXT_FEATURE_MU_MIMO_AIR_SNIFFER                 = 0x2\n\tNL80211_EXT_FEATURE_OCE_PROBE_REQ_DEFERRAL_SUPPRESSION  = 0x14\n\tNL80211_EXT_FEATURE_OCE_PROBE_REQ_HIGH_TX_RATE          = 0x13\n\tNL80211_EXT_FEATURE_OPERATING_CHANNEL_VALIDATION        = 0x31\n\tNL80211_EXT_FEATURE_OWE_OFFLOAD_AP                      = 0x42\n\tNL80211_EXT_FEATURE_OWE_OFFLOAD                         = 0x41\n\tNL80211_EXT_FEATURE_POWERED_ADDR_CHANGE                 = 0x3d\n\tNL80211_EXT_FEATURE_PROTECTED_TWT                       = 0x2b\n\tNL80211_EXT_FEATURE_PROT_RANGE_NEGO_AND_MEASURE         = 0x39\n\tNL80211_EXT_FEATURE_PUNCT                               = 0x3e\n\tNL80211_EXT_FEATURE_RADAR_BACKGROUND                    = 0x3c\n\tNL80211_EXT_FEATURE_RRM                                 = 0x1\n\tNL80211_EXT_FEATURE_SAE_OFFLOAD_AP                      = 0x33\n\tNL80211_EXT_FEATURE_SAE_OFFLOAD                         = 0x26\n\tNL80211_EXT_FEATURE_SCAN_FREQ_KHZ                       = 0x2f\n\tNL80211_EXT_FEATURE_SCAN_MIN_PREQ_CONTENT               = 0x1e\n\tNL80211_EXT_FEATURE_SCAN_RANDOM_SN                      = 0x1d\n\tNL80211_EXT_FEATURE_SCAN_START_TIME                     = 0x3\n\tNL80211_EXT_FEATURE_SCHED_SCAN_BAND_SPECIFIC_RSSI_THOLD = 0x23\n\tNL80211_EXT_FEATURE_SCHED_SCAN_RELATIVE_RSSI            = 0xc\n\tNL80211_EXT_FEATURE_SECURE_LTF                          = 0x37\n\tNL80211_EXT_FEATURE_SECURE_NAN                          = 0x3f\n\tNL80211_EXT_FEATURE_SECURE_RTT                          = 0x38\n\tNL80211_EXT_FEATURE_SET_SCAN_DWELL                      = 0x5\n\tNL80211_EXT_FEATURE_SPP_AMSDU_SUPPORT                   = 0x44\n\tNL80211_EXT_FEATURE_STA_TX_PWR                          = 0x25\n\tNL80211_EXT_FEATURE_TXQS                                = 0x1c\n\tNL80211_EXT_FEATURE_UNSOL_BCAST_PROBE_RESP              = 0x35\n\tNL80211_EXT_FEATURE_VHT_IBSS                            = 0x0\n\tNL80211_EXT_FEATURE_VLAN_OFFLOAD                        = 0x27\n\tNL80211_FEATURE_ACKTO_ESTIMATION                        = 0x800000\n\tNL80211_FEATURE_ACTIVE_MONITOR                          = 0x20000\n\tNL80211_FEATURE_ADVERTISE_CHAN_LIMITS                   = 0x4000\n\tNL80211_FEATURE_AP_MODE_CHAN_WIDTH_CHANGE               = 0x40000\n\tNL80211_FEATURE_AP_SCAN                                 = 0x100\n\tNL80211_FEATURE_CELL_BASE_REG_HINTS                     = 0x8\n\tNL80211_FEATURE_DS_PARAM_SET_IE_IN_PROBES               = 0x80000\n\tNL80211_FEATURE_DYNAMIC_SMPS                            = 0x2000000\n\tNL80211_FEATURE_FULL_AP_CLIENT_STATE                    = 0x8000\n\tNL80211_FEATURE_HT_IBSS                                 = 0x2\n\tNL80211_FEATURE_INACTIVITY_TIMER                        = 0x4\n\tNL80211_FEATURE_LOW_PRIORITY_SCAN                       = 0x40\n\tNL80211_FEATURE_MAC_ON_CREATE                           = 0x8000000\n\tNL80211_FEATURE_ND_RANDOM_MAC_ADDR                      = 0x80000000\n\tNL80211_FEATURE_NEED_OBSS_SCAN                          = 0x400\n\tNL80211_FEATURE_P2P_DEVICE_NEEDS_CHANNEL                = 0x10\n\tNL80211_FEATURE_P2P_GO_CTWIN                            = 0x800\n\tNL80211_FEATURE_P2P_GO_OPPPS                            = 0x1000\n\tNL80211_FEATURE_QUIET                                   = 0x200000\n\tNL80211_FEATURE_SAE                                     = 0x20\n\tNL80211_FEATURE_SCAN_FLUSH                              = 0x80\n\tNL80211_FEATURE_SCAN_RANDOM_MAC_ADDR                    = 0x20000000\n\tNL80211_FEATURE_SCHED_SCAN_RANDOM_MAC_ADDR              = 0x40000000\n\tNL80211_FEATURE_SK_TX_STATUS                            = 0x1\n\tNL80211_FEATURE_STATIC_SMPS                             = 0x1000000\n\tNL80211_FEATURE_SUPPORTS_WMM_ADMISSION                  = 0x4000000\n\tNL80211_FEATURE_TDLS_CHANNEL_SWITCH                     = 0x10000000\n\tNL80211_FEATURE_TX_POWER_INSERTION                      = 0x400000\n\tNL80211_FEATURE_USERSPACE_MPM                           = 0x10000\n\tNL80211_FEATURE_VIF_TXPOWER                             = 0x200\n\tNL80211_FEATURE_WFA_TPC_IE_IN_PROBES                    = 0x100000\n\tNL80211_FILS_DISCOVERY_ATTR_INT_MAX                     = 0x2\n\tNL80211_FILS_DISCOVERY_ATTR_INT_MIN                     = 0x1\n\tNL80211_FILS_DISCOVERY_ATTR_MAX                         = 0x3\n\tNL80211_FILS_DISCOVERY_ATTR_TMPL                        = 0x3\n\tNL80211_FILS_DISCOVERY_TMPL_MIN_LEN                     = 0x2a\n\tNL80211_FREQUENCY_ATTR_16MHZ                            = 0x19\n\tNL80211_FREQUENCY_ATTR_1MHZ                             = 0x15\n\tNL80211_FREQUENCY_ATTR_2MHZ                             = 0x16\n\tNL80211_FREQUENCY_ATTR_4MHZ                             = 0x17\n\tNL80211_FREQUENCY_ATTR_8MHZ                             = 0x18\n\tNL80211_FREQUENCY_ATTR_ALLOW_6GHZ_VLP_AP                = 0x21\n\tNL80211_FREQUENCY_ATTR_CAN_MONITOR                      = 0x20\n\tNL80211_FREQUENCY_ATTR_DFS_CAC_TIME                     = 0xd\n\tNL80211_FREQUENCY_ATTR_DFS_CONCURRENT                   = 0x1d\n\tNL80211_FREQUENCY_ATTR_DFS_STATE                        = 0x7\n\tNL80211_FREQUENCY_ATTR_DFS_TIME                         = 0x8\n\tNL80211_FREQUENCY_ATTR_DISABLED                         = 0x2\n\tNL80211_FREQUENCY_ATTR_FREQ                             = 0x1\n\tNL80211_FREQUENCY_ATTR_GO_CONCURRENT                    = 0xf\n\tNL80211_FREQUENCY_ATTR_INDOOR_ONLY                      = 0xe\n\tNL80211_FREQUENCY_ATTR_IR_CONCURRENT                    = 0xf\n\tNL80211_FREQUENCY_ATTR_MAX                              = 0x22\n\tNL80211_FREQUENCY_ATTR_MAX_TX_POWER                     = 0x6\n\tNL80211_FREQUENCY_ATTR_NO_10MHZ                         = 0x11\n\tNL80211_FREQUENCY_ATTR_NO_160MHZ                        = 0xc\n\tNL80211_FREQUENCY_ATTR_NO_20MHZ                         = 0x10\n\tNL80211_FREQUENCY_ATTR_NO_320MHZ                        = 0x1a\n\tNL80211_FREQUENCY_ATTR_NO_6GHZ_AFC_CLIENT               = 0x1f\n\tNL80211_FREQUENCY_ATTR_NO_6GHZ_VLP_CLIENT               = 0x1e\n\tNL80211_FREQUENCY_ATTR_NO_80MHZ                         = 0xb\n\tNL80211_FREQUENCY_ATTR_NO_EHT                           = 0x1b\n\tNL80211_FREQUENCY_ATTR_NO_HE                            = 0x13\n\tNL80211_FREQUENCY_ATTR_NO_HT40_MINUS                    = 0x9\n\tNL80211_FREQUENCY_ATTR_NO_HT40_PLUS                     = 0xa\n\tNL80211_FREQUENCY_ATTR_NO_IBSS                          = 0x3\n\tNL80211_FREQUENCY_ATTR_NO_IR                            = 0x3\n\tNL80211_FREQUENCY_ATTR_NO_UHB_AFC_CLIENT                = 0x1f\n\tNL80211_FREQUENCY_ATTR_NO_UHB_VLP_CLIENT                = 0x1e\n\tNL80211_FREQUENCY_ATTR_OFFSET                           = 0x14\n\tNL80211_FREQUENCY_ATTR_PASSIVE_SCAN                     = 0x3\n\tNL80211_FREQUENCY_ATTR_PSD                              = 0x1c\n\tNL80211_FREQUENCY_ATTR_RADAR                            = 0x5\n\tNL80211_FREQUENCY_ATTR_WMM                              = 0x12\n\tNL80211_FTM_RESP_ATTR_CIVICLOC                          = 0x3\n\tNL80211_FTM_RESP_ATTR_ENABLED                           = 0x1\n\tNL80211_FTM_RESP_ATTR_LCI                               = 0x2\n\tNL80211_FTM_RESP_ATTR_MAX                               = 0x3\n\tNL80211_FTM_STATS_ASAP_NUM                              = 0x4\n\tNL80211_FTM_STATS_FAILED_NUM                            = 0x3\n\tNL80211_FTM_STATS_MAX                                   = 0xa\n\tNL80211_FTM_STATS_NON_ASAP_NUM                          = 0x5\n\tNL80211_FTM_STATS_OUT_OF_WINDOW_TRIGGERS_NUM            = 0x9\n\tNL80211_FTM_STATS_PAD                                   = 0xa\n\tNL80211_FTM_STATS_PARTIAL_NUM                           = 0x2\n\tNL80211_FTM_STATS_RESCHEDULE_REQUESTS_NUM               = 0x8\n\tNL80211_FTM_STATS_SUCCESS_NUM                           = 0x1\n\tNL80211_FTM_STATS_TOTAL_DURATION_MSEC                   = 0x6\n\tNL80211_FTM_STATS_UNKNOWN_TRIGGERS_NUM                  = 0x7\n\tNL80211_GENL_NAME                                       = \"nl80211\"\n\tNL80211_HE_BSS_COLOR_ATTR_COLOR                         = 0x1\n\tNL80211_HE_BSS_COLOR_ATTR_DISABLED                      = 0x2\n\tNL80211_HE_BSS_COLOR_ATTR_MAX                           = 0x3\n\tNL80211_HE_BSS_COLOR_ATTR_PARTIAL                       = 0x3\n\tNL80211_HE_MAX_CAPABILITY_LEN                           = 0x36\n\tNL80211_HE_MIN_CAPABILITY_LEN                           = 0x10\n\tNL80211_HE_NSS_MAX                                      = 0x8\n\tNL80211_HE_OBSS_PD_ATTR_BSS_COLOR_BITMAP                = 0x4\n\tNL80211_HE_OBSS_PD_ATTR_MAX                             = 0x6\n\tNL80211_HE_OBSS_PD_ATTR_MAX_OFFSET                      = 0x2\n\tNL80211_HE_OBSS_PD_ATTR_MIN_OFFSET                      = 0x1\n\tNL80211_HE_OBSS_PD_ATTR_NON_SRG_MAX_OFFSET              = 0x3\n\tNL80211_HE_OBSS_PD_ATTR_PARTIAL_BSSID_BITMAP            = 0x5\n\tNL80211_HE_OBSS_PD_ATTR_SR_CTRL                         = 0x6\n\tNL80211_HIDDEN_SSID_NOT_IN_USE                          = 0x0\n\tNL80211_HIDDEN_SSID_ZERO_CONTENTS                       = 0x2\n\tNL80211_HIDDEN_SSID_ZERO_LEN                            = 0x1\n\tNL80211_HT_CAPABILITY_LEN                               = 0x1a\n\tNL80211_IFACE_COMB_BI_MIN_GCD                           = 0x7\n\tNL80211_IFACE_COMB_LIMITS                               = 0x1\n\tNL80211_IFACE_COMB_MAXNUM                               = 0x2\n\tNL80211_IFACE_COMB_NUM_CHANNELS                         = 0x4\n\tNL80211_IFACE_COMB_RADAR_DETECT_REGIONS                 = 0x6\n\tNL80211_IFACE_COMB_RADAR_DETECT_WIDTHS                  = 0x5\n\tNL80211_IFACE_COMB_STA_AP_BI_MATCH                      = 0x3\n\tNL80211_IFACE_COMB_UNSPEC                               = 0x0\n\tNL80211_IFACE_LIMIT_MAX                                 = 0x1\n\tNL80211_IFACE_LIMIT_TYPES                               = 0x2\n\tNL80211_IFACE_LIMIT_UNSPEC                              = 0x0\n\tNL80211_IFTYPE_ADHOC                                    = 0x1\n\tNL80211_IFTYPE_AKM_ATTR_IFTYPES                         = 0x1\n\tNL80211_IFTYPE_AKM_ATTR_MAX                             = 0x2\n\tNL80211_IFTYPE_AKM_ATTR_SUITES                          = 0x2\n\tNL80211_IFTYPE_AP                                       = 0x3\n\tNL80211_IFTYPE_AP_VLAN                                  = 0x4\n\tNL80211_IFTYPE_MAX                                      = 0xc\n\tNL80211_IFTYPE_MESH_POINT                               = 0x7\n\tNL80211_IFTYPE_MONITOR                                  = 0x6\n\tNL80211_IFTYPE_NAN                                      = 0xc\n\tNL80211_IFTYPE_OCB                                      = 0xb\n\tNL80211_IFTYPE_P2P_CLIENT                               = 0x8\n\tNL80211_IFTYPE_P2P_DEVICE                               = 0xa\n\tNL80211_IFTYPE_P2P_GO                                   = 0x9\n\tNL80211_IFTYPE_STATION                                  = 0x2\n\tNL80211_IFTYPE_UNSPECIFIED                              = 0x0\n\tNL80211_IFTYPE_WDS                                      = 0x5\n\tNL80211_KCK_EXT_LEN_32                                  = 0x20\n\tNL80211_KCK_EXT_LEN                                     = 0x18\n\tNL80211_KCK_LEN                                         = 0x10\n\tNL80211_KEK_EXT_LEN                                     = 0x20\n\tNL80211_KEK_LEN                                         = 0x10\n\tNL80211_KEY_CIPHER                                      = 0x3\n\tNL80211_KEY_DATA                                        = 0x1\n\tNL80211_KEY_DEFAULT_BEACON                              = 0xa\n\tNL80211_KEY_DEFAULT                                     = 0x5\n\tNL80211_KEY_DEFAULT_MGMT                                = 0x6\n\tNL80211_KEY_DEFAULT_TYPE_MULTICAST                      = 0x2\n\tNL80211_KEY_DEFAULT_TYPES                               = 0x8\n\tNL80211_KEY_DEFAULT_TYPE_UNICAST                        = 0x1\n\tNL80211_KEY_IDX                                         = 0x2\n\tNL80211_KEY_MAX                                         = 0xa\n\tNL80211_KEY_MODE                                        = 0x9\n\tNL80211_KEY_NO_TX                                       = 0x1\n\tNL80211_KEY_RX_TX                                       = 0x0\n\tNL80211_KEY_SEQ                                         = 0x4\n\tNL80211_KEY_SET_TX                                      = 0x2\n\tNL80211_KEY_TYPE                                        = 0x7\n\tNL80211_KEYTYPE_GROUP                                   = 0x0\n\tNL80211_KEYTYPE_PAIRWISE                                = 0x1\n\tNL80211_KEYTYPE_PEERKEY                                 = 0x2\n\tNL80211_MAX_NR_AKM_SUITES                               = 0x2\n\tNL80211_MAX_NR_CIPHER_SUITES                            = 0x5\n\tNL80211_MAX_SUPP_HT_RATES                               = 0x4d\n\tNL80211_MAX_SUPP_RATES                                  = 0x20\n\tNL80211_MAX_SUPP_REG_RULES                              = 0x80\n\tNL80211_MAX_SUPP_SELECTORS                              = 0x80\n\tNL80211_MBSSID_CONFIG_ATTR_EMA                          = 0x5\n\tNL80211_MBSSID_CONFIG_ATTR_INDEX                        = 0x3\n\tNL80211_MBSSID_CONFIG_ATTR_MAX                          = 0x6\n\tNL80211_MBSSID_CONFIG_ATTR_MAX_EMA_PROFILE_PERIODICITY  = 0x2\n\tNL80211_MBSSID_CONFIG_ATTR_MAX_INTERFACES               = 0x1\n\tNL80211_MBSSID_CONFIG_ATTR_TX_IFINDEX                   = 0x4\n\tNL80211_MESHCONF_ATTR_MAX                               = 0x1f\n\tNL80211_MESHCONF_AUTO_OPEN_PLINKS                       = 0x7\n\tNL80211_MESHCONF_AWAKE_WINDOW                           = 0x1b\n\tNL80211_MESHCONF_CONFIRM_TIMEOUT                        = 0x2\n\tNL80211_MESHCONF_CONNECTED_TO_AS                        = 0x1f\n\tNL80211_MESHCONF_CONNECTED_TO_GATE                      = 0x1d\n\tNL80211_MESHCONF_ELEMENT_TTL                            = 0xf\n\tNL80211_MESHCONF_FORWARDING                             = 0x13\n\tNL80211_MESHCONF_GATE_ANNOUNCEMENTS                     = 0x11\n\tNL80211_MESHCONF_HOLDING_TIMEOUT                        = 0x3\n\tNL80211_MESHCONF_HT_OPMODE                              = 0x16\n\tNL80211_MESHCONF_HWMP_ACTIVE_PATH_TIMEOUT               = 0xb\n\tNL80211_MESHCONF_HWMP_CONFIRMATION_INTERVAL             = 0x19\n\tNL80211_MESHCONF_HWMP_MAX_PREQ_RETRIES                  = 0x8\n\tNL80211_MESHCONF_HWMP_NET_DIAM_TRVS_TIME                = 0xd\n\tNL80211_MESHCONF_HWMP_PATH_TO_ROOT_TIMEOUT              = 0x17\n\tNL80211_MESHCONF_HWMP_PERR_MIN_INTERVAL                 = 0x12\n\tNL80211_MESHCONF_HWMP_PREQ_MIN_INTERVAL                 = 0xc\n\tNL80211_MESHCONF_HWMP_RANN_INTERVAL                     = 0x10\n\tNL80211_MESHCONF_HWMP_ROOT_INTERVAL                     = 0x18\n\tNL80211_MESHCONF_HWMP_ROOTMODE                          = 0xe\n\tNL80211_MESHCONF_MAX_PEER_LINKS                         = 0x4\n\tNL80211_MESHCONF_MAX_RETRIES                            = 0x5\n\tNL80211_MESHCONF_MIN_DISCOVERY_TIMEOUT                  = 0xa\n\tNL80211_MESHCONF_NOLEARN                                = 0x1e\n\tNL80211_MESHCONF_PATH_REFRESH_TIME                      = 0x9\n\tNL80211_MESHCONF_PLINK_TIMEOUT                          = 0x1c\n\tNL80211_MESHCONF_POWER_MODE                             = 0x1a\n\tNL80211_MESHCONF_RETRY_TIMEOUT                          = 0x1\n\tNL80211_MESHCONF_RSSI_THRESHOLD                         = 0x14\n\tNL80211_MESHCONF_SYNC_OFFSET_MAX_NEIGHBOR               = 0x15\n\tNL80211_MESHCONF_TTL                                    = 0x6\n\tNL80211_MESH_POWER_ACTIVE                               = 0x1\n\tNL80211_MESH_POWER_DEEP_SLEEP                           = 0x3\n\tNL80211_MESH_POWER_LIGHT_SLEEP                          = 0x2\n\tNL80211_MESH_POWER_MAX                                  = 0x3\n\tNL80211_MESH_POWER_UNKNOWN                              = 0x0\n\tNL80211_MESH_SETUP_ATTR_MAX                             = 0x8\n\tNL80211_MESH_SETUP_AUTH_PROTOCOL                        = 0x8\n\tNL80211_MESH_SETUP_ENABLE_VENDOR_METRIC                 = 0x2\n\tNL80211_MESH_SETUP_ENABLE_VENDOR_PATH_SEL               = 0x1\n\tNL80211_MESH_SETUP_ENABLE_VENDOR_SYNC                   = 0x6\n\tNL80211_MESH_SETUP_IE                                   = 0x3\n\tNL80211_MESH_SETUP_USERSPACE_AMPE                       = 0x5\n\tNL80211_MESH_SETUP_USERSPACE_AUTH                       = 0x4\n\tNL80211_MESH_SETUP_USERSPACE_MPM                        = 0x7\n\tNL80211_MESH_SETUP_VENDOR_PATH_SEL_IE                   = 0x3\n\tNL80211_MFP_NO                                          = 0x0\n\tNL80211_MFP_OPTIONAL                                    = 0x2\n\tNL80211_MFP_REQUIRED                                    = 0x1\n\tNL80211_MIN_REMAIN_ON_CHANNEL_TIME                      = 0xa\n\tNL80211_MNTR_FLAG_ACTIVE                                = 0x6\n\tNL80211_MNTR_FLAG_CONTROL                               = 0x3\n\tNL80211_MNTR_FLAG_COOK_FRAMES                           = 0x5\n\tNL80211_MNTR_FLAG_FCSFAIL                               = 0x1\n\tNL80211_MNTR_FLAG_MAX                                   = 0x7\n\tNL80211_MNTR_FLAG_OTHER_BSS                             = 0x4\n\tNL80211_MNTR_FLAG_PLCPFAIL                              = 0x2\n\tNL80211_MPATH_FLAG_ACTIVE                               = 0x1\n\tNL80211_MPATH_FLAG_FIXED                                = 0x8\n\tNL80211_MPATH_FLAG_RESOLVED                             = 0x10\n\tNL80211_MPATH_FLAG_RESOLVING                            = 0x2\n\tNL80211_MPATH_FLAG_SN_VALID                             = 0x4\n\tNL80211_MPATH_INFO_DISCOVERY_RETRIES                    = 0x7\n\tNL80211_MPATH_INFO_DISCOVERY_TIMEOUT                    = 0x6\n\tNL80211_MPATH_INFO_EXPTIME                              = 0x4\n\tNL80211_MPATH_INFO_FLAGS                                = 0x5\n\tNL80211_MPATH_INFO_FRAME_QLEN                           = 0x1\n\tNL80211_MPATH_INFO_HOP_COUNT                            = 0x8\n\tNL80211_MPATH_INFO_MAX                                  = 0x9\n\tNL80211_MPATH_INFO_METRIC                               = 0x3\n\tNL80211_MPATH_INFO_PATH_CHANGE                          = 0x9\n\tNL80211_MPATH_INFO_SN                                   = 0x2\n\tNL80211_MULTICAST_GROUP_CONFIG                          = \"config\"\n\tNL80211_MULTICAST_GROUP_MLME                            = \"mlme\"\n\tNL80211_MULTICAST_GROUP_NAN                             = \"nan\"\n\tNL80211_MULTICAST_GROUP_REG                             = \"regulatory\"\n\tNL80211_MULTICAST_GROUP_SCAN                            = \"scan\"\n\tNL80211_MULTICAST_GROUP_TESTMODE                        = \"testmode\"\n\tNL80211_MULTICAST_GROUP_VENDOR                          = \"vendor\"\n\tNL80211_NAN_FUNC_ATTR_MAX                               = 0x10\n\tNL80211_NAN_FUNC_CLOSE_RANGE                            = 0x9\n\tNL80211_NAN_FUNC_FOLLOW_UP                              = 0x2\n\tNL80211_NAN_FUNC_FOLLOW_UP_DEST                         = 0x8\n\tNL80211_NAN_FUNC_FOLLOW_UP_ID                           = 0x6\n\tNL80211_NAN_FUNC_FOLLOW_UP_REQ_ID                       = 0x7\n\tNL80211_NAN_FUNC_INSTANCE_ID                            = 0xf\n\tNL80211_NAN_FUNC_MAX_TYPE                               = 0x2\n\tNL80211_NAN_FUNC_PUBLISH_BCAST                          = 0x4\n\tNL80211_NAN_FUNC_PUBLISH                                = 0x0\n\tNL80211_NAN_FUNC_PUBLISH_TYPE                           = 0x3\n\tNL80211_NAN_FUNC_RX_MATCH_FILTER                        = 0xd\n\tNL80211_NAN_FUNC_SERVICE_ID                             = 0x2\n\tNL80211_NAN_FUNC_SERVICE_ID_LEN                         = 0x6\n\tNL80211_NAN_FUNC_SERVICE_INFO                           = 0xb\n\tNL80211_NAN_FUNC_SERVICE_SPEC_INFO_MAX_LEN              = 0xff\n\tNL80211_NAN_FUNC_SRF                                    = 0xc\n\tNL80211_NAN_FUNC_SRF_MAX_LEN                            = 0xff\n\tNL80211_NAN_FUNC_SUBSCRIBE_ACTIVE                       = 0x5\n\tNL80211_NAN_FUNC_SUBSCRIBE                              = 0x1\n\tNL80211_NAN_FUNC_TERM_REASON                            = 0x10\n\tNL80211_NAN_FUNC_TERM_REASON_ERROR                      = 0x2\n\tNL80211_NAN_FUNC_TERM_REASON_TTL_EXPIRED                = 0x1\n\tNL80211_NAN_FUNC_TERM_REASON_USER_REQUEST               = 0x0\n\tNL80211_NAN_FUNC_TTL                                    = 0xa\n\tNL80211_NAN_FUNC_TX_MATCH_FILTER                        = 0xe\n\tNL80211_NAN_FUNC_TYPE                                   = 0x1\n\tNL80211_NAN_MATCH_ATTR_MAX                              = 0x2\n\tNL80211_NAN_MATCH_FUNC_LOCAL                            = 0x1\n\tNL80211_NAN_MATCH_FUNC_PEER                             = 0x2\n\tNL80211_NAN_SOLICITED_PUBLISH                           = 0x1\n\tNL80211_NAN_SRF_ATTR_MAX                                = 0x4\n\tNL80211_NAN_SRF_BF                                      = 0x2\n\tNL80211_NAN_SRF_BF_IDX                                  = 0x3\n\tNL80211_NAN_SRF_INCLUDE                                 = 0x1\n\tNL80211_NAN_SRF_MAC_ADDRS                               = 0x4\n\tNL80211_NAN_UNSOLICITED_PUBLISH                         = 0x2\n\tNL80211_NUM_ACS                                         = 0x4\n\tNL80211_P2P_PS_SUPPORTED                                = 0x1\n\tNL80211_P2P_PS_UNSUPPORTED                              = 0x0\n\tNL80211_PKTPAT_MASK                                     = 0x1\n\tNL80211_PKTPAT_OFFSET                                   = 0x3\n\tNL80211_PKTPAT_PATTERN                                  = 0x2\n\tNL80211_PLINK_ACTION_BLOCK                              = 0x2\n\tNL80211_PLINK_ACTION_NO_ACTION                          = 0x0\n\tNL80211_PLINK_ACTION_OPEN                               = 0x1\n\tNL80211_PLINK_BLOCKED                                   = 0x6\n\tNL80211_PLINK_CNF_RCVD                                  = 0x3\n\tNL80211_PLINK_ESTAB                                     = 0x4\n\tNL80211_PLINK_HOLDING                                   = 0x5\n\tNL80211_PLINK_LISTEN                                    = 0x0\n\tNL80211_PLINK_OPN_RCVD                                  = 0x2\n\tNL80211_PLINK_OPN_SNT                                   = 0x1\n\tNL80211_PMKSA_CANDIDATE_BSSID                           = 0x2\n\tNL80211_PMKSA_CANDIDATE_INDEX                           = 0x1\n\tNL80211_PMKSA_CANDIDATE_PREAUTH                         = 0x3\n\tNL80211_PMSR_ATTR_MAX                                   = 0x5\n\tNL80211_PMSR_ATTR_MAX_PEERS                             = 0x1\n\tNL80211_PMSR_ATTR_PEERS                                 = 0x5\n\tNL80211_PMSR_ATTR_RANDOMIZE_MAC_ADDR                    = 0x3\n\tNL80211_PMSR_ATTR_REPORT_AP_TSF                         = 0x2\n\tNL80211_PMSR_ATTR_TYPE_CAPA                             = 0x4\n\tNL80211_PMSR_FTM_CAPA_ATTR_ASAP                         = 0x1\n\tNL80211_PMSR_FTM_CAPA_ATTR_BANDWIDTHS                   = 0x6\n\tNL80211_PMSR_FTM_CAPA_ATTR_MAX_BURSTS_EXPONENT          = 0x7\n\tNL80211_PMSR_FTM_CAPA_ATTR_MAX                          = 0xa\n\tNL80211_PMSR_FTM_CAPA_ATTR_MAX_FTMS_PER_BURST           = 0x8\n\tNL80211_PMSR_FTM_CAPA_ATTR_NON_ASAP                     = 0x2\n\tNL80211_PMSR_FTM_CAPA_ATTR_NON_TRIGGER_BASED            = 0xa\n\tNL80211_PMSR_FTM_CAPA_ATTR_PREAMBLES                    = 0x5\n\tNL80211_PMSR_FTM_CAPA_ATTR_REQ_CIVICLOC                 = 0x4\n\tNL80211_PMSR_FTM_CAPA_ATTR_REQ_LCI                      = 0x3\n\tNL80211_PMSR_FTM_CAPA_ATTR_TRIGGER_BASED                = 0x9\n\tNL80211_PMSR_FTM_FAILURE_BAD_CHANGED_PARAMS             = 0x7\n\tNL80211_PMSR_FTM_FAILURE_INVALID_TIMESTAMP              = 0x5\n\tNL80211_PMSR_FTM_FAILURE_NO_RESPONSE                    = 0x1\n\tNL80211_PMSR_FTM_FAILURE_PEER_BUSY                      = 0x6\n\tNL80211_PMSR_FTM_FAILURE_PEER_NOT_CAPABLE               = 0x4\n\tNL80211_PMSR_FTM_FAILURE_REJECTED                       = 0x2\n\tNL80211_PMSR_FTM_FAILURE_UNSPECIFIED                    = 0x0\n\tNL80211_PMSR_FTM_FAILURE_WRONG_CHANNEL                  = 0x3\n\tNL80211_PMSR_FTM_REQ_ATTR_ASAP                          = 0x1\n\tNL80211_PMSR_FTM_REQ_ATTR_BSS_COLOR                     = 0xd\n\tNL80211_PMSR_FTM_REQ_ATTR_BURST_DURATION                = 0x5\n\tNL80211_PMSR_FTM_REQ_ATTR_BURST_PERIOD                  = 0x4\n\tNL80211_PMSR_FTM_REQ_ATTR_FTMS_PER_BURST                = 0x6\n\tNL80211_PMSR_FTM_REQ_ATTR_LMR_FEEDBACK                  = 0xc\n\tNL80211_PMSR_FTM_REQ_ATTR_MAX                           = 0xd\n\tNL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASED             = 0xb\n\tNL80211_PMSR_FTM_REQ_ATTR_NUM_BURSTS_EXP                = 0x3\n\tNL80211_PMSR_FTM_REQ_ATTR_NUM_FTMR_RETRIES              = 0x7\n\tNL80211_PMSR_FTM_REQ_ATTR_PREAMBLE                      = 0x2\n\tNL80211_PMSR_FTM_REQ_ATTR_REQUEST_CIVICLOC              = 0x9\n\tNL80211_PMSR_FTM_REQ_ATTR_REQUEST_LCI                   = 0x8\n\tNL80211_PMSR_FTM_REQ_ATTR_TRIGGER_BASED                 = 0xa\n\tNL80211_PMSR_FTM_RESP_ATTR_BURST_DURATION               = 0x7\n\tNL80211_PMSR_FTM_RESP_ATTR_BURST_INDEX                  = 0x2\n\tNL80211_PMSR_FTM_RESP_ATTR_BUSY_RETRY_TIME              = 0x5\n\tNL80211_PMSR_FTM_RESP_ATTR_CIVICLOC                     = 0x14\n\tNL80211_PMSR_FTM_RESP_ATTR_DIST_AVG                     = 0x10\n\tNL80211_PMSR_FTM_RESP_ATTR_DIST_SPREAD                  = 0x12\n\tNL80211_PMSR_FTM_RESP_ATTR_DIST_VARIANCE                = 0x11\n\tNL80211_PMSR_FTM_RESP_ATTR_FAIL_REASON                  = 0x1\n\tNL80211_PMSR_FTM_RESP_ATTR_FTMS_PER_BURST               = 0x8\n\tNL80211_PMSR_FTM_RESP_ATTR_LCI                          = 0x13\n\tNL80211_PMSR_FTM_RESP_ATTR_MAX                          = 0x15\n\tNL80211_PMSR_FTM_RESP_ATTR_NUM_BURSTS_EXP               = 0x6\n\tNL80211_PMSR_FTM_RESP_ATTR_NUM_FTMR_ATTEMPTS            = 0x3\n\tNL80211_PMSR_FTM_RESP_ATTR_NUM_FTMR_SUCCESSES           = 0x4\n\tNL80211_PMSR_FTM_RESP_ATTR_PAD                          = 0x15\n\tNL80211_PMSR_FTM_RESP_ATTR_RSSI_AVG                     = 0x9\n\tNL80211_PMSR_FTM_RESP_ATTR_RSSI_SPREAD                  = 0xa\n\tNL80211_PMSR_FTM_RESP_ATTR_RTT_AVG                      = 0xd\n\tNL80211_PMSR_FTM_RESP_ATTR_RTT_SPREAD                   = 0xf\n\tNL80211_PMSR_FTM_RESP_ATTR_RTT_VARIANCE                 = 0xe\n\tNL80211_PMSR_FTM_RESP_ATTR_RX_RATE                      = 0xc\n\tNL80211_PMSR_FTM_RESP_ATTR_TX_RATE                      = 0xb\n\tNL80211_PMSR_PEER_ATTR_ADDR                             = 0x1\n\tNL80211_PMSR_PEER_ATTR_CHAN                             = 0x2\n\tNL80211_PMSR_PEER_ATTR_MAX                              = 0x4\n\tNL80211_PMSR_PEER_ATTR_REQ                              = 0x3\n\tNL80211_PMSR_PEER_ATTR_RESP                             = 0x4\n\tNL80211_PMSR_REQ_ATTR_DATA                              = 0x1\n\tNL80211_PMSR_REQ_ATTR_GET_AP_TSF                        = 0x2\n\tNL80211_PMSR_REQ_ATTR_MAX                               = 0x2\n\tNL80211_PMSR_RESP_ATTR_AP_TSF                           = 0x4\n\tNL80211_PMSR_RESP_ATTR_DATA                             = 0x1\n\tNL80211_PMSR_RESP_ATTR_FINAL                            = 0x5\n\tNL80211_PMSR_RESP_ATTR_HOST_TIME                        = 0x3\n\tNL80211_PMSR_RESP_ATTR_MAX                              = 0x6\n\tNL80211_PMSR_RESP_ATTR_PAD                              = 0x6\n\tNL80211_PMSR_RESP_ATTR_STATUS                           = 0x2\n\tNL80211_PMSR_STATUS_FAILURE                             = 0x3\n\tNL80211_PMSR_STATUS_REFUSED                             = 0x1\n\tNL80211_PMSR_STATUS_SUCCESS                             = 0x0\n\tNL80211_PMSR_STATUS_TIMEOUT                             = 0x2\n\tNL80211_PMSR_TYPE_FTM                                   = 0x1\n\tNL80211_PMSR_TYPE_INVALID                               = 0x0\n\tNL80211_PMSR_TYPE_MAX                                   = 0x1\n\tNL80211_PREAMBLE_DMG                                    = 0x3\n\tNL80211_PREAMBLE_HE                                     = 0x4\n\tNL80211_PREAMBLE_HT                                     = 0x1\n\tNL80211_PREAMBLE_LEGACY                                 = 0x0\n\tNL80211_PREAMBLE_VHT                                    = 0x2\n\tNL80211_PROBE_RESP_OFFLOAD_SUPPORT_80211U               = 0x8\n\tNL80211_PROBE_RESP_OFFLOAD_SUPPORT_P2P                  = 0x4\n\tNL80211_PROBE_RESP_OFFLOAD_SUPPORT_WPS2                 = 0x2\n\tNL80211_PROBE_RESP_OFFLOAD_SUPPORT_WPS                  = 0x1\n\tNL80211_PROTOCOL_FEATURE_SPLIT_WIPHY_DUMP               = 0x1\n\tNL80211_PS_DISABLED                                     = 0x0\n\tNL80211_PS_ENABLED                                      = 0x1\n\tNL80211_RADAR_CAC_ABORTED                               = 0x2\n\tNL80211_RADAR_CAC_FINISHED                              = 0x1\n\tNL80211_RADAR_CAC_STARTED                               = 0x5\n\tNL80211_RADAR_DETECTED                                  = 0x0\n\tNL80211_RADAR_NOP_FINISHED                              = 0x3\n\tNL80211_RADAR_PRE_CAC_EXPIRED                           = 0x4\n\tNL80211_RATE_INFO_10_MHZ_WIDTH                          = 0xb\n\tNL80211_RATE_INFO_160_MHZ_WIDTH                         = 0xa\n\tNL80211_RATE_INFO_16_MHZ_WIDTH                          = 0x1d\n\tNL80211_RATE_INFO_1_MHZ_WIDTH                           = 0x19\n\tNL80211_RATE_INFO_2_MHZ_WIDTH                           = 0x1a\n\tNL80211_RATE_INFO_320_MHZ_WIDTH                         = 0x12\n\tNL80211_RATE_INFO_40_MHZ_WIDTH                          = 0x3\n\tNL80211_RATE_INFO_4_MHZ_WIDTH                           = 0x1b\n\tNL80211_RATE_INFO_5_MHZ_WIDTH                           = 0xc\n\tNL80211_RATE_INFO_80_MHZ_WIDTH                          = 0x8\n\tNL80211_RATE_INFO_80P80_MHZ_WIDTH                       = 0x9\n\tNL80211_RATE_INFO_8_MHZ_WIDTH                           = 0x1c\n\tNL80211_RATE_INFO_BITRATE32                             = 0x5\n\tNL80211_RATE_INFO_BITRATE                               = 0x1\n\tNL80211_RATE_INFO_EHT_GI_0_8                            = 0x0\n\tNL80211_RATE_INFO_EHT_GI_1_6                            = 0x1\n\tNL80211_RATE_INFO_EHT_GI_3_2                            = 0x2\n\tNL80211_RATE_INFO_EHT_GI                                = 0x15\n\tNL80211_RATE_INFO_EHT_MCS                               = 0x13\n\tNL80211_RATE_INFO_EHT_NSS                               = 0x14\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_106                      = 0x3\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_106P26                   = 0x4\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_242                      = 0x5\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_26                       = 0x0\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_2x996                    = 0xb\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_2x996P484                = 0xc\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_3x996                    = 0xd\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_3x996P484                = 0xe\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_484                      = 0x6\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_484P242                  = 0x7\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_4x996                    = 0xf\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_52                       = 0x1\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_52P26                    = 0x2\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_996                      = 0x8\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_996P484                  = 0x9\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_996P484P242              = 0xa\n\tNL80211_RATE_INFO_EHT_RU_ALLOC                          = 0x16\n\tNL80211_RATE_INFO_HE_1XLTF                              = 0x0\n\tNL80211_RATE_INFO_HE_2XLTF                              = 0x1\n\tNL80211_RATE_INFO_HE_4XLTF                              = 0x2\n\tNL80211_RATE_INFO_HE_DCM                                = 0x10\n\tNL80211_RATE_INFO_HE_GI_0_8                             = 0x0\n\tNL80211_RATE_INFO_HE_GI_1_6                             = 0x1\n\tNL80211_RATE_INFO_HE_GI_3_2                             = 0x2\n\tNL80211_RATE_INFO_HE_GI                                 = 0xf\n\tNL80211_RATE_INFO_HE_MCS                                = 0xd\n\tNL80211_RATE_INFO_HE_NSS                                = 0xe\n\tNL80211_RATE_INFO_HE_RU_ALLOC_106                       = 0x2\n\tNL80211_RATE_INFO_HE_RU_ALLOC_242                       = 0x3\n\tNL80211_RATE_INFO_HE_RU_ALLOC_26                        = 0x0\n\tNL80211_RATE_INFO_HE_RU_ALLOC_2x996                     = 0x6\n\tNL80211_RATE_INFO_HE_RU_ALLOC_484                       = 0x4\n\tNL80211_RATE_INFO_HE_RU_ALLOC_52                        = 0x1\n\tNL80211_RATE_INFO_HE_RU_ALLOC_996                       = 0x5\n\tNL80211_RATE_INFO_HE_RU_ALLOC                           = 0x11\n\tNL80211_RATE_INFO_MAX                                   = 0x1d\n\tNL80211_RATE_INFO_MCS                                   = 0x2\n\tNL80211_RATE_INFO_S1G_MCS                               = 0x17\n\tNL80211_RATE_INFO_S1G_NSS                               = 0x18\n\tNL80211_RATE_INFO_SHORT_GI                              = 0x4\n\tNL80211_RATE_INFO_VHT_MCS                               = 0x6\n\tNL80211_RATE_INFO_VHT_NSS                               = 0x7\n\tNL80211_REGDOM_SET_BY_CORE                              = 0x0\n\tNL80211_REGDOM_SET_BY_COUNTRY_IE                        = 0x3\n\tNL80211_REGDOM_SET_BY_DRIVER                            = 0x2\n\tNL80211_REGDOM_SET_BY_USER                              = 0x1\n\tNL80211_REGDOM_TYPE_COUNTRY                             = 0x0\n\tNL80211_REGDOM_TYPE_CUSTOM_WORLD                        = 0x2\n\tNL80211_REGDOM_TYPE_INTERSECTION                        = 0x3\n\tNL80211_REGDOM_TYPE_WORLD                               = 0x1\n\tNL80211_REG_RULE_ATTR_MAX                               = 0x8\n\tNL80211_REKEY_DATA_AKM                                  = 0x4\n\tNL80211_REKEY_DATA_KCK                                  = 0x2\n\tNL80211_REKEY_DATA_KEK                                  = 0x1\n\tNL80211_REKEY_DATA_REPLAY_CTR                           = 0x3\n\tNL80211_REPLAY_CTR_LEN                                  = 0x8\n\tNL80211_RRF_ALLOW_6GHZ_VLP_AP                           = 0x1000000\n\tNL80211_RRF_AUTO_BW                                     = 0x800\n\tNL80211_RRF_DFS                                         = 0x10\n\tNL80211_RRF_DFS_CONCURRENT                              = 0x200000\n\tNL80211_RRF_GO_CONCURRENT                               = 0x1000\n\tNL80211_RRF_IR_CONCURRENT                               = 0x1000\n\tNL80211_RRF_NO_160MHZ                                   = 0x10000\n\tNL80211_RRF_NO_320MHZ                                   = 0x40000\n\tNL80211_RRF_NO_6GHZ_AFC_CLIENT                          = 0x800000\n\tNL80211_RRF_NO_6GHZ_VLP_CLIENT                          = 0x400000\n\tNL80211_RRF_NO_80MHZ                                    = 0x8000\n\tNL80211_RRF_NO_CCK                                      = 0x2\n\tNL80211_RRF_NO_EHT                                      = 0x80000\n\tNL80211_RRF_NO_HE                                       = 0x20000\n\tNL80211_RRF_NO_HT40                                     = 0x6000\n\tNL80211_RRF_NO_HT40MINUS                                = 0x2000\n\tNL80211_RRF_NO_HT40PLUS                                 = 0x4000\n\tNL80211_RRF_NO_IBSS                                     = 0x80\n\tNL80211_RRF_NO_INDOOR                                   = 0x4\n\tNL80211_RRF_NO_IR_ALL                                   = 0x180\n\tNL80211_RRF_NO_IR                                       = 0x80\n\tNL80211_RRF_NO_OFDM                                     = 0x1\n\tNL80211_RRF_NO_OUTDOOR                                  = 0x8\n\tNL80211_RRF_NO_UHB_AFC_CLIENT                           = 0x800000\n\tNL80211_RRF_NO_UHB_VLP_CLIENT                           = 0x400000\n\tNL80211_RRF_PASSIVE_SCAN                                = 0x80\n\tNL80211_RRF_PSD                                         = 0x100000\n\tNL80211_RRF_PTMP_ONLY                                   = 0x40\n\tNL80211_RRF_PTP_ONLY                                    = 0x20\n\tNL80211_RXMGMT_FLAG_ANSWERED                            = 0x1\n\tNL80211_RXMGMT_FLAG_EXTERNAL_AUTH                       = 0x2\n\tNL80211_SAE_PWE_BOTH                                    = 0x3\n\tNL80211_SAE_PWE_HASH_TO_ELEMENT                         = 0x2\n\tNL80211_SAE_PWE_HUNT_AND_PECK                           = 0x1\n\tNL80211_SAE_PWE_UNSPECIFIED                             = 0x0\n\tNL80211_SAR_ATTR_MAX                                    = 0x2\n\tNL80211_SAR_ATTR_SPECS                                  = 0x2\n\tNL80211_SAR_ATTR_SPECS_END_FREQ                         = 0x4\n\tNL80211_SAR_ATTR_SPECS_MAX                              = 0x4\n\tNL80211_SAR_ATTR_SPECS_POWER                            = 0x1\n\tNL80211_SAR_ATTR_SPECS_RANGE_INDEX                      = 0x2\n\tNL80211_SAR_ATTR_SPECS_START_FREQ                       = 0x3\n\tNL80211_SAR_ATTR_TYPE                                   = 0x1\n\tNL80211_SAR_TYPE_POWER                                  = 0x0\n\tNL80211_SCAN_FLAG_ACCEPT_BCAST_PROBE_RESP               = 0x20\n\tNL80211_SCAN_FLAG_AP                                    = 0x4\n\tNL80211_SCAN_FLAG_COLOCATED_6GHZ                        = 0x4000\n\tNL80211_SCAN_FLAG_FILS_MAX_CHANNEL_TIME                 = 0x10\n\tNL80211_SCAN_FLAG_FLUSH                                 = 0x2\n\tNL80211_SCAN_FLAG_FREQ_KHZ                              = 0x2000\n\tNL80211_SCAN_FLAG_HIGH_ACCURACY                         = 0x400\n\tNL80211_SCAN_FLAG_LOW_POWER                             = 0x200\n\tNL80211_SCAN_FLAG_LOW_PRIORITY                          = 0x1\n\tNL80211_SCAN_FLAG_LOW_SPAN                              = 0x100\n\tNL80211_SCAN_FLAG_MIN_PREQ_CONTENT                      = 0x1000\n\tNL80211_SCAN_FLAG_OCE_PROBE_REQ_DEFERRAL_SUPPRESSION    = 0x80\n\tNL80211_SCAN_FLAG_OCE_PROBE_REQ_HIGH_TX_RATE            = 0x40\n\tNL80211_SCAN_FLAG_RANDOM_ADDR                           = 0x8\n\tNL80211_SCAN_FLAG_RANDOM_SN                             = 0x800\n\tNL80211_SCAN_RSSI_THOLD_OFF                             = -0x12c\n\tNL80211_SCHED_SCAN_MATCH_ATTR_BSSID                     = 0x5\n\tNL80211_SCHED_SCAN_MATCH_ATTR_MAX                       = 0x6\n\tNL80211_SCHED_SCAN_MATCH_ATTR_RELATIVE_RSSI             = 0x3\n\tNL80211_SCHED_SCAN_MATCH_ATTR_RSSI_ADJUST               = 0x4\n\tNL80211_SCHED_SCAN_MATCH_ATTR_RSSI                      = 0x2\n\tNL80211_SCHED_SCAN_MATCH_ATTR_SSID                      = 0x1\n\tNL80211_SCHED_SCAN_MATCH_PER_BAND_RSSI                  = 0x6\n\tNL80211_SCHED_SCAN_PLAN_INTERVAL                        = 0x1\n\tNL80211_SCHED_SCAN_PLAN_ITERATIONS                      = 0x2\n\tNL80211_SCHED_SCAN_PLAN_MAX                             = 0x2\n\tNL80211_SMPS_DYNAMIC                                    = 0x2\n\tNL80211_SMPS_MAX                                        = 0x2\n\tNL80211_SMPS_OFF                                        = 0x0\n\tNL80211_SMPS_STATIC                                     = 0x1\n\tNL80211_STA_BSS_PARAM_BEACON_INTERVAL                   = 0x5\n\tNL80211_STA_BSS_PARAM_CTS_PROT                          = 0x1\n\tNL80211_STA_BSS_PARAM_DTIM_PERIOD                       = 0x4\n\tNL80211_STA_BSS_PARAM_MAX                               = 0x5\n\tNL80211_STA_BSS_PARAM_SHORT_PREAMBLE                    = 0x2\n\tNL80211_STA_BSS_PARAM_SHORT_SLOT_TIME                   = 0x3\n\tNL80211_STA_FLAG_ASSOCIATED                             = 0x7\n\tNL80211_STA_FLAG_AUTHENTICATED                          = 0x5\n\tNL80211_STA_FLAG_AUTHORIZED                             = 0x1\n\tNL80211_STA_FLAG_MAX                                    = 0x8\n\tNL80211_STA_FLAG_MAX_OLD_API                            = 0x6\n\tNL80211_STA_FLAG_MFP                                    = 0x4\n\tNL80211_STA_FLAG_SHORT_PREAMBLE                         = 0x2\n\tNL80211_STA_FLAG_SPP_AMSDU                              = 0x8\n\tNL80211_STA_FLAG_TDLS_PEER                              = 0x6\n\tNL80211_STA_FLAG_WME                                    = 0x3\n\tNL80211_STA_INFO_ACK_SIGNAL_AVG                         = 0x23\n\tNL80211_STA_INFO_ACK_SIGNAL                             = 0x22\n\tNL80211_STA_INFO_AIRTIME_LINK_METRIC                    = 0x29\n\tNL80211_STA_INFO_AIRTIME_WEIGHT                         = 0x28\n\tNL80211_STA_INFO_ASSOC_AT_BOOTTIME                      = 0x2a\n\tNL80211_STA_INFO_BEACON_LOSS                            = 0x12\n\tNL80211_STA_INFO_BEACON_RX                              = 0x1d\n\tNL80211_STA_INFO_BEACON_SIGNAL_AVG                      = 0x1e\n\tNL80211_STA_INFO_BSS_PARAM                              = 0xf\n\tNL80211_STA_INFO_CHAIN_SIGNAL_AVG                       = 0x1a\n\tNL80211_STA_INFO_CHAIN_SIGNAL                           = 0x19\n\tNL80211_STA_INFO_CONNECTED_TIME                         = 0x10\n\tNL80211_STA_INFO_CONNECTED_TO_AS                        = 0x2b\n\tNL80211_STA_INFO_CONNECTED_TO_GATE                      = 0x26\n\tNL80211_STA_INFO_DATA_ACK_SIGNAL_AVG                    = 0x23\n\tNL80211_STA_INFO_EXPECTED_THROUGHPUT                    = 0x1b\n\tNL80211_STA_INFO_FCS_ERROR_COUNT                        = 0x25\n\tNL80211_STA_INFO_INACTIVE_TIME                          = 0x1\n\tNL80211_STA_INFO_LLID                                   = 0x4\n\tNL80211_STA_INFO_LOCAL_PM                               = 0x14\n\tNL80211_STA_INFO_MAX                                    = 0x2b\n\tNL80211_STA_INFO_NONPEER_PM                             = 0x16\n\tNL80211_STA_INFO_PAD                                    = 0x21\n\tNL80211_STA_INFO_PEER_PM                                = 0x15\n\tNL80211_STA_INFO_PLID                                   = 0x5\n\tNL80211_STA_INFO_PLINK_STATE                            = 0x6\n\tNL80211_STA_INFO_RX_BITRATE                             = 0xe\n\tNL80211_STA_INFO_RX_BYTES64                             = 0x17\n\tNL80211_STA_INFO_RX_BYTES                               = 0x2\n\tNL80211_STA_INFO_RX_DROP_MISC                           = 0x1c\n\tNL80211_STA_INFO_RX_DURATION                            = 0x20\n\tNL80211_STA_INFO_RX_MPDUS                               = 0x24\n\tNL80211_STA_INFO_RX_PACKETS                             = 0x9\n\tNL80211_STA_INFO_SIGNAL_AVG                             = 0xd\n\tNL80211_STA_INFO_SIGNAL                                 = 0x7\n\tNL80211_STA_INFO_STA_FLAGS                              = 0x11\n\tNL80211_STA_INFO_TID_STATS                              = 0x1f\n\tNL80211_STA_INFO_T_OFFSET                               = 0x13\n\tNL80211_STA_INFO_TX_BITRATE                             = 0x8\n\tNL80211_STA_INFO_TX_BYTES64                             = 0x18\n\tNL80211_STA_INFO_TX_BYTES                               = 0x3\n\tNL80211_STA_INFO_TX_DURATION                            = 0x27\n\tNL80211_STA_INFO_TX_FAILED                              = 0xc\n\tNL80211_STA_INFO_TX_PACKETS                             = 0xa\n\tNL80211_STA_INFO_TX_RETRIES                             = 0xb\n\tNL80211_STA_WME_MAX                                     = 0x2\n\tNL80211_STA_WME_MAX_SP                                  = 0x2\n\tNL80211_STA_WME_UAPSD_QUEUES                            = 0x1\n\tNL80211_SURVEY_INFO_CHANNEL_TIME_BUSY                   = 0x5\n\tNL80211_SURVEY_INFO_CHANNEL_TIME                        = 0x4\n\tNL80211_SURVEY_INFO_CHANNEL_TIME_EXT_BUSY               = 0x6\n\tNL80211_SURVEY_INFO_CHANNEL_TIME_RX                     = 0x7\n\tNL80211_SURVEY_INFO_CHANNEL_TIME_TX                     = 0x8\n\tNL80211_SURVEY_INFO_FREQUENCY                           = 0x1\n\tNL80211_SURVEY_INFO_FREQUENCY_OFFSET                    = 0xc\n\tNL80211_SURVEY_INFO_IN_USE                              = 0x3\n\tNL80211_SURVEY_INFO_MAX                                 = 0xc\n\tNL80211_SURVEY_INFO_NOISE                               = 0x2\n\tNL80211_SURVEY_INFO_PAD                                 = 0xa\n\tNL80211_SURVEY_INFO_TIME_BSS_RX                         = 0xb\n\tNL80211_SURVEY_INFO_TIME_BUSY                           = 0x5\n\tNL80211_SURVEY_INFO_TIME                                = 0x4\n\tNL80211_SURVEY_INFO_TIME_EXT_BUSY                       = 0x6\n\tNL80211_SURVEY_INFO_TIME_RX                             = 0x7\n\tNL80211_SURVEY_INFO_TIME_SCAN                           = 0x9\n\tNL80211_SURVEY_INFO_TIME_TX                             = 0x8\n\tNL80211_TDLS_DISABLE_LINK                               = 0x4\n\tNL80211_TDLS_DISCOVERY_REQ                              = 0x0\n\tNL80211_TDLS_ENABLE_LINK                                = 0x3\n\tNL80211_TDLS_PEER_HE                                    = 0x8\n\tNL80211_TDLS_PEER_HT                                    = 0x1\n\tNL80211_TDLS_PEER_VHT                                   = 0x2\n\tNL80211_TDLS_PEER_WMM                                   = 0x4\n\tNL80211_TDLS_SETUP                                      = 0x1\n\tNL80211_TDLS_TEARDOWN                                   = 0x2\n\tNL80211_TID_CONFIG_ATTR_AMPDU_CTRL                      = 0x9\n\tNL80211_TID_CONFIG_ATTR_AMSDU_CTRL                      = 0xb\n\tNL80211_TID_CONFIG_ATTR_MAX                             = 0xd\n\tNL80211_TID_CONFIG_ATTR_NOACK                           = 0x6\n\tNL80211_TID_CONFIG_ATTR_OVERRIDE                        = 0x4\n\tNL80211_TID_CONFIG_ATTR_PAD                             = 0x1\n\tNL80211_TID_CONFIG_ATTR_PEER_SUPP                       = 0x3\n\tNL80211_TID_CONFIG_ATTR_RETRY_LONG                      = 0x8\n\tNL80211_TID_CONFIG_ATTR_RETRY_SHORT                     = 0x7\n\tNL80211_TID_CONFIG_ATTR_RTSCTS_CTRL                     = 0xa\n\tNL80211_TID_CONFIG_ATTR_TIDS                            = 0x5\n\tNL80211_TID_CONFIG_ATTR_TX_RATE                         = 0xd\n\tNL80211_TID_CONFIG_ATTR_TX_RATE_TYPE                    = 0xc\n\tNL80211_TID_CONFIG_ATTR_VIF_SUPP                        = 0x2\n\tNL80211_TID_CONFIG_DISABLE                              = 0x1\n\tNL80211_TID_CONFIG_ENABLE                               = 0x0\n\tNL80211_TID_STATS_MAX                                   = 0x6\n\tNL80211_TID_STATS_PAD                                   = 0x5\n\tNL80211_TID_STATS_RX_MSDU                               = 0x1\n\tNL80211_TID_STATS_TX_MSDU                               = 0x2\n\tNL80211_TID_STATS_TX_MSDU_FAILED                        = 0x4\n\tNL80211_TID_STATS_TX_MSDU_RETRIES                       = 0x3\n\tNL80211_TID_STATS_TXQ_STATS                             = 0x6\n\tNL80211_TIMEOUT_ASSOC                                   = 0x3\n\tNL80211_TIMEOUT_AUTH                                    = 0x2\n\tNL80211_TIMEOUT_SCAN                                    = 0x1\n\tNL80211_TIMEOUT_UNSPECIFIED                             = 0x0\n\tNL80211_TKIP_DATA_OFFSET_ENCR_KEY                       = 0x0\n\tNL80211_TKIP_DATA_OFFSET_RX_MIC_KEY                     = 0x18\n\tNL80211_TKIP_DATA_OFFSET_TX_MIC_KEY                     = 0x10\n\tNL80211_TX_POWER_AUTOMATIC                              = 0x0\n\tNL80211_TX_POWER_FIXED                                  = 0x2\n\tNL80211_TX_POWER_LIMITED                                = 0x1\n\tNL80211_TXQ_ATTR_AC                                     = 0x1\n\tNL80211_TXQ_ATTR_AIFS                                   = 0x5\n\tNL80211_TXQ_ATTR_CWMAX                                  = 0x4\n\tNL80211_TXQ_ATTR_CWMIN                                  = 0x3\n\tNL80211_TXQ_ATTR_MAX                                    = 0x5\n\tNL80211_TXQ_ATTR_QUEUE                                  = 0x1\n\tNL80211_TXQ_ATTR_TXOP                                   = 0x2\n\tNL80211_TXQ_Q_BE                                        = 0x2\n\tNL80211_TXQ_Q_BK                                        = 0x3\n\tNL80211_TXQ_Q_VI                                        = 0x1\n\tNL80211_TXQ_Q_VO                                        = 0x0\n\tNL80211_TXQ_STATS_BACKLOG_BYTES                         = 0x1\n\tNL80211_TXQ_STATS_BACKLOG_PACKETS                       = 0x2\n\tNL80211_TXQ_STATS_COLLISIONS                            = 0x8\n\tNL80211_TXQ_STATS_DROPS                                 = 0x4\n\tNL80211_TXQ_STATS_ECN_MARKS                             = 0x5\n\tNL80211_TXQ_STATS_FLOWS                                 = 0x3\n\tNL80211_TXQ_STATS_MAX                                   = 0xb\n\tNL80211_TXQ_STATS_MAX_FLOWS                             = 0xb\n\tNL80211_TXQ_STATS_OVERLIMIT                             = 0x6\n\tNL80211_TXQ_STATS_OVERMEMORY                            = 0x7\n\tNL80211_TXQ_STATS_TX_BYTES                              = 0x9\n\tNL80211_TXQ_STATS_TX_PACKETS                            = 0xa\n\tNL80211_TX_RATE_AUTOMATIC                               = 0x0\n\tNL80211_TXRATE_DEFAULT_GI                               = 0x0\n\tNL80211_TX_RATE_FIXED                                   = 0x2\n\tNL80211_TXRATE_FORCE_LGI                                = 0x2\n\tNL80211_TXRATE_FORCE_SGI                                = 0x1\n\tNL80211_TXRATE_GI                                       = 0x4\n\tNL80211_TXRATE_HE                                       = 0x5\n\tNL80211_TXRATE_HE_GI                                    = 0x6\n\tNL80211_TXRATE_HE_LTF                                   = 0x7\n\tNL80211_TXRATE_HT                                       = 0x2\n\tNL80211_TXRATE_LEGACY                                   = 0x1\n\tNL80211_TX_RATE_LIMITED                                 = 0x1\n\tNL80211_TXRATE_MAX                                      = 0x7\n\tNL80211_TXRATE_MCS                                      = 0x2\n\tNL80211_TXRATE_VHT                                      = 0x3\n\tNL80211_UNSOL_BCAST_PROBE_RESP_ATTR_INT                 = 0x1\n\tNL80211_UNSOL_BCAST_PROBE_RESP_ATTR_MAX                 = 0x2\n\tNL80211_UNSOL_BCAST_PROBE_RESP_ATTR_TMPL                = 0x2\n\tNL80211_USER_REG_HINT_CELL_BASE                         = 0x1\n\tNL80211_USER_REG_HINT_INDOOR                            = 0x2\n\tNL80211_USER_REG_HINT_USER                              = 0x0\n\tNL80211_VENDOR_ID_IS_LINUX                              = 0x80000000\n\tNL80211_VHT_CAPABILITY_LEN                              = 0xc\n\tNL80211_VHT_NSS_MAX                                     = 0x8\n\tNL80211_WIPHY_NAME_MAXLEN                               = 0x40\n\tNL80211_WIPHY_RADIO_ATTR_FREQ_RANGE                     = 0x2\n\tNL80211_WIPHY_RADIO_ATTR_INDEX                          = 0x1\n\tNL80211_WIPHY_RADIO_ATTR_INTERFACE_COMBINATION          = 0x3\n\tNL80211_WIPHY_RADIO_ATTR_MAX                            = 0x4\n\tNL80211_WIPHY_RADIO_FREQ_ATTR_END                       = 0x2\n\tNL80211_WIPHY_RADIO_FREQ_ATTR_MAX                       = 0x2\n\tNL80211_WIPHY_RADIO_FREQ_ATTR_START                     = 0x1\n\tNL80211_WMMR_AIFSN                                      = 0x3\n\tNL80211_WMMR_CW_MAX                                     = 0x2\n\tNL80211_WMMR_CW_MIN                                     = 0x1\n\tNL80211_WMMR_MAX                                        = 0x4\n\tNL80211_WMMR_TXOP                                       = 0x4\n\tNL80211_WOWLAN_PKTPAT_MASK                              = 0x1\n\tNL80211_WOWLAN_PKTPAT_OFFSET                            = 0x3\n\tNL80211_WOWLAN_PKTPAT_PATTERN                           = 0x2\n\tNL80211_WOWLAN_TCP_DATA_INTERVAL                        = 0x9\n\tNL80211_WOWLAN_TCP_DATA_PAYLOAD                         = 0x6\n\tNL80211_WOWLAN_TCP_DATA_PAYLOAD_SEQ                     = 0x7\n\tNL80211_WOWLAN_TCP_DATA_PAYLOAD_TOKEN                   = 0x8\n\tNL80211_WOWLAN_TCP_DST_IPV4                             = 0x2\n\tNL80211_WOWLAN_TCP_DST_MAC                              = 0x3\n\tNL80211_WOWLAN_TCP_DST_PORT                             = 0x5\n\tNL80211_WOWLAN_TCP_SRC_IPV4                             = 0x1\n\tNL80211_WOWLAN_TCP_SRC_PORT                             = 0x4\n\tNL80211_WOWLAN_TCP_WAKE_MASK                            = 0xb\n\tNL80211_WOWLAN_TCP_WAKE_PAYLOAD                         = 0xa\n\tNL80211_WOWLAN_TRIG_4WAY_HANDSHAKE                      = 0x8\n\tNL80211_WOWLAN_TRIG_ANY                                 = 0x1\n\tNL80211_WOWLAN_TRIG_DISCONNECT                          = 0x2\n\tNL80211_WOWLAN_TRIG_EAP_IDENT_REQUEST                   = 0x7\n\tNL80211_WOWLAN_TRIG_GTK_REKEY_FAILURE                   = 0x6\n\tNL80211_WOWLAN_TRIG_GTK_REKEY_SUPPORTED                 = 0x5\n\tNL80211_WOWLAN_TRIG_MAGIC_PKT                           = 0x3\n\tNL80211_WOWLAN_TRIG_NET_DETECT                          = 0x12\n\tNL80211_WOWLAN_TRIG_NET_DETECT_RESULTS                  = 0x13\n\tNL80211_WOWLAN_TRIG_PKT_PATTERN                         = 0x4\n\tNL80211_WOWLAN_TRIG_RFKILL_RELEASE                      = 0x9\n\tNL80211_WOWLAN_TRIG_TCP_CONNECTION                      = 0xe\n\tNL80211_WOWLAN_TRIG_UNPROTECTED_DEAUTH_DISASSOC         = 0x14\n\tNL80211_WOWLAN_TRIG_WAKEUP_PKT_80211                    = 0xa\n\tNL80211_WOWLAN_TRIG_WAKEUP_PKT_80211_LEN                = 0xb\n\tNL80211_WOWLAN_TRIG_WAKEUP_PKT_8023                     = 0xc\n\tNL80211_WOWLAN_TRIG_WAKEUP_PKT_8023_LEN                 = 0xd\n\tNL80211_WOWLAN_TRIG_WAKEUP_TCP_CONNLOST                 = 0x10\n\tNL80211_WOWLAN_TRIG_WAKEUP_TCP_MATCH                    = 0xf\n\tNL80211_WOWLAN_TRIG_WAKEUP_TCP_NOMORETOKENS             = 0x11\n\tNL80211_WPA_VERSION_1                                   = 0x1\n\tNL80211_WPA_VERSION_2                                   = 0x2\n\tNL80211_WPA_VERSION_3                                   = 0x4\n)\n\nconst (\n\tFRA_UNSPEC             = 0x0\n\tFRA_DST                = 0x1\n\tFRA_SRC                = 0x2\n\tFRA_IIFNAME            = 0x3\n\tFRA_GOTO               = 0x4\n\tFRA_UNUSED2            = 0x5\n\tFRA_PRIORITY           = 0x6\n\tFRA_UNUSED3            = 0x7\n\tFRA_UNUSED4            = 0x8\n\tFRA_UNUSED5            = 0x9\n\tFRA_FWMARK             = 0xa\n\tFRA_FLOW               = 0xb\n\tFRA_TUN_ID             = 0xc\n\tFRA_SUPPRESS_IFGROUP   = 0xd\n\tFRA_SUPPRESS_PREFIXLEN = 0xe\n\tFRA_TABLE              = 0xf\n\tFRA_FWMASK             = 0x10\n\tFRA_OIFNAME            = 0x11\n\tFRA_PAD                = 0x12\n\tFRA_L3MDEV             = 0x13\n\tFRA_UID_RANGE          = 0x14\n\tFRA_PROTOCOL           = 0x15\n\tFRA_IP_PROTO           = 0x16\n\tFRA_SPORT_RANGE        = 0x17\n\tFRA_DPORT_RANGE        = 0x18\n\tFR_ACT_UNSPEC          = 0x0\n\tFR_ACT_TO_TBL          = 0x1\n\tFR_ACT_GOTO            = 0x2\n\tFR_ACT_NOP             = 0x3\n\tFR_ACT_RES3            = 0x4\n\tFR_ACT_RES4            = 0x5\n\tFR_ACT_BLACKHOLE       = 0x6\n\tFR_ACT_UNREACHABLE     = 0x7\n\tFR_ACT_PROHIBIT        = 0x8\n)\n\nconst (\n\tAUDIT_NLGRP_NONE    = 0x0\n\tAUDIT_NLGRP_READLOG = 0x1\n)\n\nconst (\n\tTUN_F_CSUM    = 0x1\n\tTUN_F_TSO4    = 0x2\n\tTUN_F_TSO6    = 0x4\n\tTUN_F_TSO_ECN = 0x8\n\tTUN_F_UFO     = 0x10\n\tTUN_F_USO4    = 0x20\n\tTUN_F_USO6    = 0x40\n)\n\nconst (\n\tVIRTIO_NET_HDR_F_NEEDS_CSUM = 0x1\n\tVIRTIO_NET_HDR_F_DATA_VALID = 0x2\n\tVIRTIO_NET_HDR_F_RSC_INFO   = 0x4\n)\n\nconst (\n\tVIRTIO_NET_HDR_GSO_NONE   = 0x0\n\tVIRTIO_NET_HDR_GSO_TCPV4  = 0x1\n\tVIRTIO_NET_HDR_GSO_UDP    = 0x3\n\tVIRTIO_NET_HDR_GSO_TCPV6  = 0x4\n\tVIRTIO_NET_HDR_GSO_UDP_L4 = 0x5\n\tVIRTIO_NET_HDR_GSO_ECN    = 0x80\n)\n\ntype SchedAttr struct {\n\tSize     uint32\n\tPolicy   uint32\n\tFlags    uint64\n\tNice     int32\n\tPriority uint32\n\tRuntime  uint64\n\tDeadline uint64\n\tPeriod   uint64\n\tUtil_min uint32\n\tUtil_max uint32\n}\n\nconst SizeofSchedAttr = 0x38\n\ntype Cachestat_t struct {\n\tCache            uint64\n\tDirty            uint64\n\tWriteback        uint64\n\tEvicted          uint64\n\tRecently_evicted uint64\n}\ntype CachestatRange struct {\n\tOff uint64\n\tLen uint64\n}\n\nconst (\n\tSK_MEMINFO_RMEM_ALLOC          = 0x0\n\tSK_MEMINFO_RCVBUF              = 0x1\n\tSK_MEMINFO_WMEM_ALLOC          = 0x2\n\tSK_MEMINFO_SNDBUF              = 0x3\n\tSK_MEMINFO_FWD_ALLOC           = 0x4\n\tSK_MEMINFO_WMEM_QUEUED         = 0x5\n\tSK_MEMINFO_OPTMEM              = 0x6\n\tSK_MEMINFO_BACKLOG             = 0x7\n\tSK_MEMINFO_DROPS               = 0x8\n\tSK_MEMINFO_VARS                = 0x9\n\tSKNLGRP_NONE                   = 0x0\n\tSKNLGRP_INET_TCP_DESTROY       = 0x1\n\tSKNLGRP_INET_UDP_DESTROY       = 0x2\n\tSKNLGRP_INET6_TCP_DESTROY      = 0x3\n\tSKNLGRP_INET6_UDP_DESTROY      = 0x4\n\tSK_DIAG_BPF_STORAGE_REQ_NONE   = 0x0\n\tSK_DIAG_BPF_STORAGE_REQ_MAP_FD = 0x1\n\tSK_DIAG_BPF_STORAGE_REP_NONE   = 0x0\n\tSK_DIAG_BPF_STORAGE            = 0x1\n\tSK_DIAG_BPF_STORAGE_NONE       = 0x0\n\tSK_DIAG_BPF_STORAGE_PAD        = 0x1\n\tSK_DIAG_BPF_STORAGE_MAP_ID     = 0x2\n\tSK_DIAG_BPF_STORAGE_MAP_VALUE  = 0x3\n)\n\ntype SockDiagReq struct {\n\tFamily   uint8\n\tProtocol uint8\n}\n\nconst RTM_NEWNVLAN = 0x70\n\nconst (\n\tMPOL_BIND                = 0x2\n\tMPOL_DEFAULT             = 0x0\n\tMPOL_F_ADDR              = 0x2\n\tMPOL_F_MEMS_ALLOWED      = 0x4\n\tMPOL_F_MOF               = 0x8\n\tMPOL_F_MORON             = 0x10\n\tMPOL_F_NODE              = 0x1\n\tMPOL_F_NUMA_BALANCING    = 0x2000\n\tMPOL_F_RELATIVE_NODES    = 0x4000\n\tMPOL_F_SHARED            = 0x1\n\tMPOL_F_STATIC_NODES      = 0x8000\n\tMPOL_INTERLEAVE          = 0x3\n\tMPOL_LOCAL               = 0x4\n\tMPOL_MAX                 = 0x7\n\tMPOL_MF_INTERNAL         = 0x10\n\tMPOL_MF_LAZY             = 0x8\n\tMPOL_MF_MOVE_ALL         = 0x4\n\tMPOL_MF_MOVE             = 0x2\n\tMPOL_MF_STRICT           = 0x1\n\tMPOL_MF_VALID            = 0x7\n\tMPOL_MODE_FLAGS          = 0xe000\n\tMPOL_PREFERRED           = 0x1\n\tMPOL_PREFERRED_MANY      = 0x5\n\tMPOL_WEIGHTED_INTERLEAVE = 0x6\n)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/ztypes_linux_386.go",
    "content": "// cgo -godefs -objdir=/tmp/386/cgo -- -Wall -Werror -static -I/tmp/386/include -m32 linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build 386 && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x4\n\tSizeofLong = 0x4\n)\n\ntype (\n\t_C_long int32\n)\n\ntype Timespec struct {\n\tSec  int32\n\tNsec int32\n}\n\ntype Timeval struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int32\n\tFreq      int32\n\tMaxerror  int32\n\tEsterror  int32\n\tStatus    int32\n\tConstant  int32\n\tPrecision int32\n\tTolerance int32\n\tTime      Timeval\n\tTick      int32\n\tPpsfreq   int32\n\tJitter    int32\n\tShift     int32\n\tStabil    int32\n\tJitcnt    int32\n\tCalcnt    int32\n\tErrcnt    int32\n\tStbcnt    int32\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int32\n\ntype Tms struct {\n\tUtime  int32\n\tStime  int32\n\tCutime int32\n\tCstime int32\n}\n\ntype Utimbuf struct {\n\tActime  int32\n\tModtime int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Stat_t struct {\n\tDev     uint64\n\t_       uint16\n\t_       uint32\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint64\n\t_       uint16\n\tSize    int64\n\tBlksize int32\n\tBlocks  int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tIno     uint64\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]int8\n\t_      [1]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tPid    int32\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint32\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]int8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [16]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x58\n\tSizeofIovec           = 0x8\n\tSizeofMsghdr          = 0x1c\n\tSizeofCmsghdr         = 0xc\n)\n\nconst (\n\tSizeofSockFprog = 0x8\n)\n\ntype PtraceRegs struct {\n\tEbx      int32\n\tEcx      int32\n\tEdx      int32\n\tEsi      int32\n\tEdi      int32\n\tEbp      int32\n\tEax      int32\n\tXds      int32\n\tXes      int32\n\tXfs      int32\n\tXgs      int32\n\tOrig_eax int32\n\tEip      int32\n\tXcs      int32\n\tEflags   int32\n\tEsp      int32\n\tXss      int32\n}\n\ntype FdSet struct {\n\tBits [32]int32\n}\n\ntype Sysinfo_t struct {\n\tUptime    int32\n\tLoads     [3]uint32\n\tTotalram  uint32\n\tFreeram   uint32\n\tSharedram uint32\n\tBufferram uint32\n\tTotalswap uint32\n\tFreeswap  uint32\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint32\n\tFreehigh  uint32\n\tUnit      uint32\n\t_         [8]int8\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint32\n\tFname  [6]int8\n\tFpack  [6]int8\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [32]uint32\n}\n\nconst _C__NSIG = 0x41\n\nconst (\n\tSIG_BLOCK   = 0x0\n\tSIG_UNBLOCK = 0x1\n\tSIG_SETMASK = 0x2\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tErrno int32\n\tCode  int32\n\t_     [116]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [19]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\t_                         [6]byte\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]int8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\t_                         [4]byte\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\t_                         [4]byte\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n\tCpu_delay_max             uint64\n\tCpu_delay_min             uint64\n\tBlkio_delay_max           uint64\n\tBlkio_delay_min           uint64\n\tSwapin_delay_max          uint64\n\tSwapin_delay_min          uint64\n\tFreepages_delay_max       uint64\n\tFreepages_delay_min       uint64\n\tThrashing_delay_max       uint64\n\tThrashing_delay_min       uint64\n\tCompact_delay_max         uint64\n\tCompact_delay_min         uint64\n\tWpcopy_delay_max          uint64\n\tWpcopy_delay_min          uint64\n\tIrq_delay_max             uint64\n\tIrq_delay_min             uint64\n}\n\ntype cpuMask uint32\n\nconst (\n\t_NCPUBITS = 0x20\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x1\n\tCBitFieldMaskBit1  = 0x2\n\tCBitFieldMaskBit2  = 0x4\n\tCBitFieldMaskBit3  = 0x8\n\tCBitFieldMaskBit4  = 0x10\n\tCBitFieldMaskBit5  = 0x20\n\tCBitFieldMaskBit6  = 0x40\n\tCBitFieldMaskBit7  = 0x80\n\tCBitFieldMaskBit8  = 0x100\n\tCBitFieldMaskBit9  = 0x200\n\tCBitFieldMaskBit10 = 0x400\n\tCBitFieldMaskBit11 = 0x800\n\tCBitFieldMaskBit12 = 0x1000\n\tCBitFieldMaskBit13 = 0x2000\n\tCBitFieldMaskBit14 = 0x4000\n\tCBitFieldMaskBit15 = 0x8000\n\tCBitFieldMaskBit16 = 0x10000\n\tCBitFieldMaskBit17 = 0x20000\n\tCBitFieldMaskBit18 = 0x40000\n\tCBitFieldMaskBit19 = 0x80000\n\tCBitFieldMaskBit20 = 0x100000\n\tCBitFieldMaskBit21 = 0x200000\n\tCBitFieldMaskBit22 = 0x400000\n\tCBitFieldMaskBit23 = 0x800000\n\tCBitFieldMaskBit24 = 0x1000000\n\tCBitFieldMaskBit25 = 0x2000000\n\tCBitFieldMaskBit26 = 0x4000000\n\tCBitFieldMaskBit27 = 0x8000000\n\tCBitFieldMaskBit28 = 0x10000000\n\tCBitFieldMaskBit29 = 0x20000000\n\tCBitFieldMaskBit30 = 0x40000000\n\tCBitFieldMaskBit31 = 0x80000000\n\tCBitFieldMaskBit32 = 0x100000000\n\tCBitFieldMaskBit33 = 0x200000000\n\tCBitFieldMaskBit34 = 0x400000000\n\tCBitFieldMaskBit35 = 0x800000000\n\tCBitFieldMaskBit36 = 0x1000000000\n\tCBitFieldMaskBit37 = 0x2000000000\n\tCBitFieldMaskBit38 = 0x4000000000\n\tCBitFieldMaskBit39 = 0x8000000000\n\tCBitFieldMaskBit40 = 0x10000000000\n\tCBitFieldMaskBit41 = 0x20000000000\n\tCBitFieldMaskBit42 = 0x40000000000\n\tCBitFieldMaskBit43 = 0x80000000000\n\tCBitFieldMaskBit44 = 0x100000000000\n\tCBitFieldMaskBit45 = 0x200000000000\n\tCBitFieldMaskBit46 = 0x400000000000\n\tCBitFieldMaskBit47 = 0x800000000000\n\tCBitFieldMaskBit48 = 0x1000000000000\n\tCBitFieldMaskBit49 = 0x2000000000000\n\tCBitFieldMaskBit50 = 0x4000000000000\n\tCBitFieldMaskBit51 = 0x8000000000000\n\tCBitFieldMaskBit52 = 0x10000000000000\n\tCBitFieldMaskBit53 = 0x20000000000000\n\tCBitFieldMaskBit54 = 0x40000000000000\n\tCBitFieldMaskBit55 = 0x80000000000000\n\tCBitFieldMaskBit56 = 0x100000000000000\n\tCBitFieldMaskBit57 = 0x200000000000000\n\tCBitFieldMaskBit58 = 0x400000000000000\n\tCBitFieldMaskBit59 = 0x800000000000000\n\tCBitFieldMaskBit60 = 0x1000000000000000\n\tCBitFieldMaskBit61 = 0x2000000000000000\n\tCBitFieldMaskBit62 = 0x4000000000000000\n\tCBitFieldMaskBit63 = 0x8000000000000000\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\tData   [122]byte\n\t_      uint32\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint32\n}\n\ntype Statfs_t struct {\n\tType    int32\n\tBsize   int32\n\tBlocks  uint64\n\tBfree   uint64\n\tBavail  uint64\n\tFiles   uint64\n\tFfree   uint64\n\tFsid    Fsid\n\tNamelen int32\n\tFrsize  int32\n\tFlags   int32\n\tSpare   [4]int32\n}\n\ntype TpacketHdr struct {\n\tStatus  uint32\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n}\n\nconst (\n\tSizeofTpacketHdr = 0x18\n)\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int32\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n}\n\nconst (\n\tBLKPG = 0x1269\n)\n\ntype CryptoUserAlg struct {\n\tName        [64]int8\n\tDriver_name [64]int8\n\tModule_name [64]int8\n\tType        uint32\n\tMask        uint32\n\tRefcnt      uint32\n\tFlags       uint32\n}\n\ntype CryptoStatAEAD struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatAKCipher struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tVerify_cnt   uint64\n\tSign_cnt     uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCipher struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCompress struct {\n\tType            [64]int8\n\tCompress_cnt    uint64\n\tCompress_tlen   uint64\n\tDecompress_cnt  uint64\n\tDecompress_tlen uint64\n\tErr_cnt         uint64\n}\n\ntype CryptoStatHash struct {\n\tType      [64]int8\n\tHash_cnt  uint64\n\tHash_tlen uint64\n\tErr_cnt   uint64\n}\n\ntype CryptoStatKPP struct {\n\tType                      [64]int8\n\tSetsecret_cnt             uint64\n\tGenerate_public_key_cnt   uint64\n\tCompute_shared_secret_cnt uint64\n\tErr_cnt                   uint64\n}\n\ntype CryptoStatRNG struct {\n\tType          [64]int8\n\tGenerate_cnt  uint64\n\tGenerate_tlen uint64\n\tSeed_cnt      uint64\n\tErr_cnt       uint64\n}\n\ntype CryptoStatLarval struct {\n\tType [64]int8\n}\n\ntype CryptoReportLarval struct {\n\tType [64]int8\n}\n\ntype CryptoReportHash struct {\n\tType       [64]int8\n\tBlocksize  uint32\n\tDigestsize uint32\n}\n\ntype CryptoReportCipher struct {\n\tType        [64]int8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n}\n\ntype CryptoReportBlkCipher struct {\n\tType        [64]int8\n\tGeniv       [64]int8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportAEAD struct {\n\tType        [64]int8\n\tGeniv       [64]int8\n\tBlocksize   uint32\n\tMaxauthsize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportComp struct {\n\tType [64]int8\n}\n\ntype CryptoReportRNG struct {\n\tType     [64]int8\n\tSeedsize uint32\n}\n\ntype CryptoReportAKCipher struct {\n\tType [64]int8\n}\n\ntype CryptoReportKPP struct {\n\tType [64]int8\n}\n\ntype CryptoReportAcomp struct {\n\tType [64]int8\n}\n\ntype LoopInfo struct {\n\tNumber           int32\n\tDevice           uint16\n\tInode            uint32\n\tRdevice          uint16\n\tOffset           int32\n\tEncrypt_type     int32\n\tEncrypt_key_size int32\n\tFlags            int32\n\tName             [64]int8\n\tEncrypt_key      [32]uint8\n\tInit             [2]uint32\n\tReserved         [4]int8\n}\n\ntype TIPCSubscr struct {\n\tSeq     TIPCServiceRange\n\tTimeout uint32\n\tFilter  uint32\n\tHandle  [8]int8\n}\n\ntype TIPCSIOCLNReq struct {\n\tPeer     uint32\n\tId       uint32\n\tLinkname [68]int8\n}\n\ntype TIPCSIOCNodeIDReq struct {\n\tPeer uint32\n\tId   [16]int8\n}\n\ntype PPSKInfo struct {\n\tAssert_sequence uint32\n\tClear_sequence  uint32\n\tAssert_tu       PPSKTime\n\tClear_tu        PPSKTime\n\tCurrent_mode    int32\n}\n\nconst (\n\tPPS_GETPARAMS = 0x800470a1\n\tPPS_SETPARAMS = 0x400470a2\n\tPPS_GETCAP    = 0x800470a3\n\tPPS_FETCH     = 0xc00470a4\n)\n\nconst (\n\tPIDFD_NONBLOCK = 0x800\n)\n\ntype SysvIpcPerm struct {\n\tKey  int32\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint16\n\t_    [2]uint8\n\tSeq  uint16\n\t_    uint16\n\t_    uint32\n\t_    uint32\n}\ntype SysvShmDesc struct {\n\tPerm       SysvIpcPerm\n\tSegsz      uint32\n\tAtime      uint32\n\tAtime_high uint32\n\tDtime      uint32\n\tDtime_high uint32\n\tCtime      uint32\n\tCtime_high uint32\n\tCpid       int32\n\tLpid       int32\n\tNattch     uint32\n\t_          uint32\n\t_          uint32\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go",
    "content": "// cgo -godefs -objdir=/tmp/amd64/cgo -- -Wall -Werror -static -I/tmp/amd64/include -m64 linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x8\n\tSizeofLong = 0x8\n)\n\ntype (\n\t_C_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int64\n\tFreq      int64\n\tMaxerror  int64\n\tEsterror  int64\n\tStatus    int32\n\tConstant  int64\n\tPrecision int64\n\tTolerance int64\n\tTime      Timeval\n\tTick      int64\n\tPpsfreq   int64\n\tJitter    int64\n\tShift     int32\n\tStabil    int64\n\tJitcnt    int64\n\tCalcnt    int64\n\tErrcnt    int64\n\tStbcnt    int64\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int64\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tNlink   uint64\n\tMode    uint32\n\tUid     uint32\n\tGid     uint32\n\t_       int32\n\tRdev    uint64\n\tSize    int64\n\tBlksize int64\n\tBlocks  int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\t_       [3]int64\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]int8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint64\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]int8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint64\n\tControl    *byte\n\tControllen uint64\n\tFlags      int32\n\t_          [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint64\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [24]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x60\n\tSizeofIovec           = 0x10\n\tSizeofMsghdr          = 0x38\n\tSizeofCmsghdr         = 0x10\n)\n\nconst (\n\tSizeofSockFprog = 0x10\n)\n\ntype PtraceRegs struct {\n\tR15      uint64\n\tR14      uint64\n\tR13      uint64\n\tR12      uint64\n\tRbp      uint64\n\tRbx      uint64\n\tR11      uint64\n\tR10      uint64\n\tR9       uint64\n\tR8       uint64\n\tRax      uint64\n\tRcx      uint64\n\tRdx      uint64\n\tRsi      uint64\n\tRdi      uint64\n\tOrig_rax uint64\n\tRip      uint64\n\tCs       uint64\n\tEflags   uint64\n\tRsp      uint64\n\tSs       uint64\n\tFs_base  uint64\n\tGs_base  uint64\n\tDs       uint64\n\tEs       uint64\n\tFs       uint64\n\tGs       uint64\n}\n\ntype FdSet struct {\n\tBits [16]int64\n}\n\ntype Sysinfo_t struct {\n\tUptime    int64\n\tLoads     [3]uint64\n\tTotalram  uint64\n\tFreeram   uint64\n\tSharedram uint64\n\tBufferram uint64\n\tTotalswap uint64\n\tFreeswap  uint64\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint64\n\tFreehigh  uint64\n\tUnit      uint32\n\t_         [0]int8\n\t_         [4]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint64\n\tFname  [6]int8\n\tFpack  [6]int8\n\t_      [4]byte\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst _C__NSIG = 0x41\n\nconst (\n\tSIG_BLOCK   = 0x0\n\tSIG_UNBLOCK = 0x1\n\tSIG_SETMASK = 0x2\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tErrno int32\n\tCode  int32\n\t_     int32\n\t_     [112]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [19]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]int8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n\tCpu_delay_max             uint64\n\tCpu_delay_min             uint64\n\tBlkio_delay_max           uint64\n\tBlkio_delay_min           uint64\n\tSwapin_delay_max          uint64\n\tSwapin_delay_min          uint64\n\tFreepages_delay_max       uint64\n\tFreepages_delay_min       uint64\n\tThrashing_delay_max       uint64\n\tThrashing_delay_min       uint64\n\tCompact_delay_max         uint64\n\tCompact_delay_min         uint64\n\tWpcopy_delay_max          uint64\n\tWpcopy_delay_min          uint64\n\tIrq_delay_max             uint64\n\tIrq_delay_min             uint64\n}\n\ntype cpuMask uint64\n\nconst (\n\t_NCPUBITS = 0x40\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x1\n\tCBitFieldMaskBit1  = 0x2\n\tCBitFieldMaskBit2  = 0x4\n\tCBitFieldMaskBit3  = 0x8\n\tCBitFieldMaskBit4  = 0x10\n\tCBitFieldMaskBit5  = 0x20\n\tCBitFieldMaskBit6  = 0x40\n\tCBitFieldMaskBit7  = 0x80\n\tCBitFieldMaskBit8  = 0x100\n\tCBitFieldMaskBit9  = 0x200\n\tCBitFieldMaskBit10 = 0x400\n\tCBitFieldMaskBit11 = 0x800\n\tCBitFieldMaskBit12 = 0x1000\n\tCBitFieldMaskBit13 = 0x2000\n\tCBitFieldMaskBit14 = 0x4000\n\tCBitFieldMaskBit15 = 0x8000\n\tCBitFieldMaskBit16 = 0x10000\n\tCBitFieldMaskBit17 = 0x20000\n\tCBitFieldMaskBit18 = 0x40000\n\tCBitFieldMaskBit19 = 0x80000\n\tCBitFieldMaskBit20 = 0x100000\n\tCBitFieldMaskBit21 = 0x200000\n\tCBitFieldMaskBit22 = 0x400000\n\tCBitFieldMaskBit23 = 0x800000\n\tCBitFieldMaskBit24 = 0x1000000\n\tCBitFieldMaskBit25 = 0x2000000\n\tCBitFieldMaskBit26 = 0x4000000\n\tCBitFieldMaskBit27 = 0x8000000\n\tCBitFieldMaskBit28 = 0x10000000\n\tCBitFieldMaskBit29 = 0x20000000\n\tCBitFieldMaskBit30 = 0x40000000\n\tCBitFieldMaskBit31 = 0x80000000\n\tCBitFieldMaskBit32 = 0x100000000\n\tCBitFieldMaskBit33 = 0x200000000\n\tCBitFieldMaskBit34 = 0x400000000\n\tCBitFieldMaskBit35 = 0x800000000\n\tCBitFieldMaskBit36 = 0x1000000000\n\tCBitFieldMaskBit37 = 0x2000000000\n\tCBitFieldMaskBit38 = 0x4000000000\n\tCBitFieldMaskBit39 = 0x8000000000\n\tCBitFieldMaskBit40 = 0x10000000000\n\tCBitFieldMaskBit41 = 0x20000000000\n\tCBitFieldMaskBit42 = 0x40000000000\n\tCBitFieldMaskBit43 = 0x80000000000\n\tCBitFieldMaskBit44 = 0x100000000000\n\tCBitFieldMaskBit45 = 0x200000000000\n\tCBitFieldMaskBit46 = 0x400000000000\n\tCBitFieldMaskBit47 = 0x800000000000\n\tCBitFieldMaskBit48 = 0x1000000000000\n\tCBitFieldMaskBit49 = 0x2000000000000\n\tCBitFieldMaskBit50 = 0x4000000000000\n\tCBitFieldMaskBit51 = 0x8000000000000\n\tCBitFieldMaskBit52 = 0x10000000000000\n\tCBitFieldMaskBit53 = 0x20000000000000\n\tCBitFieldMaskBit54 = 0x40000000000000\n\tCBitFieldMaskBit55 = 0x80000000000000\n\tCBitFieldMaskBit56 = 0x100000000000000\n\tCBitFieldMaskBit57 = 0x200000000000000\n\tCBitFieldMaskBit58 = 0x400000000000000\n\tCBitFieldMaskBit59 = 0x800000000000000\n\tCBitFieldMaskBit60 = 0x1000000000000000\n\tCBitFieldMaskBit61 = 0x2000000000000000\n\tCBitFieldMaskBit62 = 0x4000000000000000\n\tCBitFieldMaskBit63 = 0x8000000000000000\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\tData   [118]byte\n\t_      uint64\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint64\n}\n\ntype Statfs_t struct {\n\tType    int64\n\tBsize   int64\n\tBlocks  uint64\n\tBfree   uint64\n\tBavail  uint64\n\tFiles   uint64\n\tFfree   uint64\n\tFsid    Fsid\n\tNamelen int64\n\tFrsize  int64\n\tFlags   int64\n\tSpare   [4]int64\n}\n\ntype TpacketHdr struct {\n\tStatus  uint64\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n\t_       [4]byte\n}\n\nconst (\n\tSizeofTpacketHdr = 0x20\n)\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int64\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG = 0x1269\n)\n\ntype CryptoUserAlg struct {\n\tName        [64]int8\n\tDriver_name [64]int8\n\tModule_name [64]int8\n\tType        uint32\n\tMask        uint32\n\tRefcnt      uint32\n\tFlags       uint32\n}\n\ntype CryptoStatAEAD struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatAKCipher struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tVerify_cnt   uint64\n\tSign_cnt     uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCipher struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCompress struct {\n\tType            [64]int8\n\tCompress_cnt    uint64\n\tCompress_tlen   uint64\n\tDecompress_cnt  uint64\n\tDecompress_tlen uint64\n\tErr_cnt         uint64\n}\n\ntype CryptoStatHash struct {\n\tType      [64]int8\n\tHash_cnt  uint64\n\tHash_tlen uint64\n\tErr_cnt   uint64\n}\n\ntype CryptoStatKPP struct {\n\tType                      [64]int8\n\tSetsecret_cnt             uint64\n\tGenerate_public_key_cnt   uint64\n\tCompute_shared_secret_cnt uint64\n\tErr_cnt                   uint64\n}\n\ntype CryptoStatRNG struct {\n\tType          [64]int8\n\tGenerate_cnt  uint64\n\tGenerate_tlen uint64\n\tSeed_cnt      uint64\n\tErr_cnt       uint64\n}\n\ntype CryptoStatLarval struct {\n\tType [64]int8\n}\n\ntype CryptoReportLarval struct {\n\tType [64]int8\n}\n\ntype CryptoReportHash struct {\n\tType       [64]int8\n\tBlocksize  uint32\n\tDigestsize uint32\n}\n\ntype CryptoReportCipher struct {\n\tType        [64]int8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n}\n\ntype CryptoReportBlkCipher struct {\n\tType        [64]int8\n\tGeniv       [64]int8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportAEAD struct {\n\tType        [64]int8\n\tGeniv       [64]int8\n\tBlocksize   uint32\n\tMaxauthsize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportComp struct {\n\tType [64]int8\n}\n\ntype CryptoReportRNG struct {\n\tType     [64]int8\n\tSeedsize uint32\n}\n\ntype CryptoReportAKCipher struct {\n\tType [64]int8\n}\n\ntype CryptoReportKPP struct {\n\tType [64]int8\n}\n\ntype CryptoReportAcomp struct {\n\tType [64]int8\n}\n\ntype LoopInfo struct {\n\tNumber           int32\n\tDevice           uint64\n\tInode            uint64\n\tRdevice          uint64\n\tOffset           int32\n\tEncrypt_type     int32\n\tEncrypt_key_size int32\n\tFlags            int32\n\tName             [64]int8\n\tEncrypt_key      [32]uint8\n\tInit             [2]uint64\n\tReserved         [4]int8\n\t_                [4]byte\n}\n\ntype TIPCSubscr struct {\n\tSeq     TIPCServiceRange\n\tTimeout uint32\n\tFilter  uint32\n\tHandle  [8]int8\n}\n\ntype TIPCSIOCLNReq struct {\n\tPeer     uint32\n\tId       uint32\n\tLinkname [68]int8\n}\n\ntype TIPCSIOCNodeIDReq struct {\n\tPeer uint32\n\tId   [16]int8\n}\n\ntype PPSKInfo struct {\n\tAssert_sequence uint32\n\tClear_sequence  uint32\n\tAssert_tu       PPSKTime\n\tClear_tu        PPSKTime\n\tCurrent_mode    int32\n\t_               [4]byte\n}\n\nconst (\n\tPPS_GETPARAMS = 0x800870a1\n\tPPS_SETPARAMS = 0x400870a2\n\tPPS_GETCAP    = 0x800870a3\n\tPPS_FETCH     = 0xc00870a4\n)\n\nconst (\n\tPIDFD_NONBLOCK = 0x800\n)\n\ntype SysvIpcPerm struct {\n\tKey  int32\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint32\n\t_    [0]uint8\n\tSeq  uint16\n\t_    uint16\n\t_    uint64\n\t_    uint64\n}\ntype SysvShmDesc struct {\n\tPerm   SysvIpcPerm\n\tSegsz  uint64\n\tAtime  int64\n\tDtime  int64\n\tCtime  int64\n\tCpid   int32\n\tLpid   int32\n\tNattch uint64\n\t_      uint64\n\t_      uint64\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go",
    "content": "// cgo -godefs -objdir=/tmp/arm/cgo -- -Wall -Werror -static -I/tmp/arm/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x4\n\tSizeofLong = 0x4\n)\n\ntype (\n\t_C_long int32\n)\n\ntype Timespec struct {\n\tSec  int32\n\tNsec int32\n}\n\ntype Timeval struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int32\n\tFreq      int32\n\tMaxerror  int32\n\tEsterror  int32\n\tStatus    int32\n\tConstant  int32\n\tPrecision int32\n\tTolerance int32\n\tTime      Timeval\n\tTick      int32\n\tPpsfreq   int32\n\tJitter    int32\n\tShift     int32\n\tStabil    int32\n\tJitcnt    int32\n\tCalcnt    int32\n\tErrcnt    int32\n\tStbcnt    int32\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int32\n\ntype Tms struct {\n\tUtime  int32\n\tStime  int32\n\tCutime int32\n\tCstime int32\n}\n\ntype Utimbuf struct {\n\tActime  int32\n\tModtime int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Stat_t struct {\n\tDev     uint64\n\t_       uint16\n\t_       uint32\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint64\n\t_       uint16\n\t_       [6]byte\n\tSize    int64\n\tBlksize int32\n\t_       [4]byte\n\tBlocks  int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tIno     uint64\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]uint8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\t_      [4]byte\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint32\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]uint8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]uint8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [16]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x58\n\tSizeofIovec           = 0x8\n\tSizeofMsghdr          = 0x1c\n\tSizeofCmsghdr         = 0xc\n)\n\nconst (\n\tSizeofSockFprog = 0x8\n)\n\ntype PtraceRegs struct {\n\tUregs [18]uint32\n}\n\ntype FdSet struct {\n\tBits [32]int32\n}\n\ntype Sysinfo_t struct {\n\tUptime    int32\n\tLoads     [3]uint32\n\tTotalram  uint32\n\tFreeram   uint32\n\tSharedram uint32\n\tBufferram uint32\n\tTotalswap uint32\n\tFreeswap  uint32\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint32\n\tFreehigh  uint32\n\tUnit      uint32\n\t_         [8]uint8\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint32\n\tFname  [6]uint8\n\tFpack  [6]uint8\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\tPadFd  int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [32]uint32\n}\n\nconst _C__NSIG = 0x41\n\nconst (\n\tSIG_BLOCK   = 0x0\n\tSIG_UNBLOCK = 0x1\n\tSIG_SETMASK = 0x2\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tErrno int32\n\tCode  int32\n\t_     [116]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [19]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\t_                         [6]byte\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]uint8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\t_                         [4]byte\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\t_                         [4]byte\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n\tCpu_delay_max             uint64\n\tCpu_delay_min             uint64\n\tBlkio_delay_max           uint64\n\tBlkio_delay_min           uint64\n\tSwapin_delay_max          uint64\n\tSwapin_delay_min          uint64\n\tFreepages_delay_max       uint64\n\tFreepages_delay_min       uint64\n\tThrashing_delay_max       uint64\n\tThrashing_delay_min       uint64\n\tCompact_delay_max         uint64\n\tCompact_delay_min         uint64\n\tWpcopy_delay_max          uint64\n\tWpcopy_delay_min          uint64\n\tIrq_delay_max             uint64\n\tIrq_delay_min             uint64\n}\n\ntype cpuMask uint32\n\nconst (\n\t_NCPUBITS = 0x20\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x1\n\tCBitFieldMaskBit1  = 0x2\n\tCBitFieldMaskBit2  = 0x4\n\tCBitFieldMaskBit3  = 0x8\n\tCBitFieldMaskBit4  = 0x10\n\tCBitFieldMaskBit5  = 0x20\n\tCBitFieldMaskBit6  = 0x40\n\tCBitFieldMaskBit7  = 0x80\n\tCBitFieldMaskBit8  = 0x100\n\tCBitFieldMaskBit9  = 0x200\n\tCBitFieldMaskBit10 = 0x400\n\tCBitFieldMaskBit11 = 0x800\n\tCBitFieldMaskBit12 = 0x1000\n\tCBitFieldMaskBit13 = 0x2000\n\tCBitFieldMaskBit14 = 0x4000\n\tCBitFieldMaskBit15 = 0x8000\n\tCBitFieldMaskBit16 = 0x10000\n\tCBitFieldMaskBit17 = 0x20000\n\tCBitFieldMaskBit18 = 0x40000\n\tCBitFieldMaskBit19 = 0x80000\n\tCBitFieldMaskBit20 = 0x100000\n\tCBitFieldMaskBit21 = 0x200000\n\tCBitFieldMaskBit22 = 0x400000\n\tCBitFieldMaskBit23 = 0x800000\n\tCBitFieldMaskBit24 = 0x1000000\n\tCBitFieldMaskBit25 = 0x2000000\n\tCBitFieldMaskBit26 = 0x4000000\n\tCBitFieldMaskBit27 = 0x8000000\n\tCBitFieldMaskBit28 = 0x10000000\n\tCBitFieldMaskBit29 = 0x20000000\n\tCBitFieldMaskBit30 = 0x40000000\n\tCBitFieldMaskBit31 = 0x80000000\n\tCBitFieldMaskBit32 = 0x100000000\n\tCBitFieldMaskBit33 = 0x200000000\n\tCBitFieldMaskBit34 = 0x400000000\n\tCBitFieldMaskBit35 = 0x800000000\n\tCBitFieldMaskBit36 = 0x1000000000\n\tCBitFieldMaskBit37 = 0x2000000000\n\tCBitFieldMaskBit38 = 0x4000000000\n\tCBitFieldMaskBit39 = 0x8000000000\n\tCBitFieldMaskBit40 = 0x10000000000\n\tCBitFieldMaskBit41 = 0x20000000000\n\tCBitFieldMaskBit42 = 0x40000000000\n\tCBitFieldMaskBit43 = 0x80000000000\n\tCBitFieldMaskBit44 = 0x100000000000\n\tCBitFieldMaskBit45 = 0x200000000000\n\tCBitFieldMaskBit46 = 0x400000000000\n\tCBitFieldMaskBit47 = 0x800000000000\n\tCBitFieldMaskBit48 = 0x1000000000000\n\tCBitFieldMaskBit49 = 0x2000000000000\n\tCBitFieldMaskBit50 = 0x4000000000000\n\tCBitFieldMaskBit51 = 0x8000000000000\n\tCBitFieldMaskBit52 = 0x10000000000000\n\tCBitFieldMaskBit53 = 0x20000000000000\n\tCBitFieldMaskBit54 = 0x40000000000000\n\tCBitFieldMaskBit55 = 0x80000000000000\n\tCBitFieldMaskBit56 = 0x100000000000000\n\tCBitFieldMaskBit57 = 0x200000000000000\n\tCBitFieldMaskBit58 = 0x400000000000000\n\tCBitFieldMaskBit59 = 0x800000000000000\n\tCBitFieldMaskBit60 = 0x1000000000000000\n\tCBitFieldMaskBit61 = 0x2000000000000000\n\tCBitFieldMaskBit62 = 0x4000000000000000\n\tCBitFieldMaskBit63 = 0x8000000000000000\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\tData   [122]byte\n\t_      uint32\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint32\n}\n\ntype Statfs_t struct {\n\tType    int32\n\tBsize   int32\n\tBlocks  uint64\n\tBfree   uint64\n\tBavail  uint64\n\tFiles   uint64\n\tFfree   uint64\n\tFsid    Fsid\n\tNamelen int32\n\tFrsize  int32\n\tFlags   int32\n\tSpare   [4]int32\n\t_       [4]byte\n}\n\ntype TpacketHdr struct {\n\tStatus  uint32\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n}\n\nconst (\n\tSizeofTpacketHdr = 0x18\n)\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int32\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG = 0x1269\n)\n\ntype CryptoUserAlg struct {\n\tName        [64]uint8\n\tDriver_name [64]uint8\n\tModule_name [64]uint8\n\tType        uint32\n\tMask        uint32\n\tRefcnt      uint32\n\tFlags       uint32\n}\n\ntype CryptoStatAEAD struct {\n\tType         [64]uint8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatAKCipher struct {\n\tType         [64]uint8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tVerify_cnt   uint64\n\tSign_cnt     uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCipher struct {\n\tType         [64]uint8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCompress struct {\n\tType            [64]uint8\n\tCompress_cnt    uint64\n\tCompress_tlen   uint64\n\tDecompress_cnt  uint64\n\tDecompress_tlen uint64\n\tErr_cnt         uint64\n}\n\ntype CryptoStatHash struct {\n\tType      [64]uint8\n\tHash_cnt  uint64\n\tHash_tlen uint64\n\tErr_cnt   uint64\n}\n\ntype CryptoStatKPP struct {\n\tType                      [64]uint8\n\tSetsecret_cnt             uint64\n\tGenerate_public_key_cnt   uint64\n\tCompute_shared_secret_cnt uint64\n\tErr_cnt                   uint64\n}\n\ntype CryptoStatRNG struct {\n\tType          [64]uint8\n\tGenerate_cnt  uint64\n\tGenerate_tlen uint64\n\tSeed_cnt      uint64\n\tErr_cnt       uint64\n}\n\ntype CryptoStatLarval struct {\n\tType [64]uint8\n}\n\ntype CryptoReportLarval struct {\n\tType [64]uint8\n}\n\ntype CryptoReportHash struct {\n\tType       [64]uint8\n\tBlocksize  uint32\n\tDigestsize uint32\n}\n\ntype CryptoReportCipher struct {\n\tType        [64]uint8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n}\n\ntype CryptoReportBlkCipher struct {\n\tType        [64]uint8\n\tGeniv       [64]uint8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportAEAD struct {\n\tType        [64]uint8\n\tGeniv       [64]uint8\n\tBlocksize   uint32\n\tMaxauthsize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportComp struct {\n\tType [64]uint8\n}\n\ntype CryptoReportRNG struct {\n\tType     [64]uint8\n\tSeedsize uint32\n}\n\ntype CryptoReportAKCipher struct {\n\tType [64]uint8\n}\n\ntype CryptoReportKPP struct {\n\tType [64]uint8\n}\n\ntype CryptoReportAcomp struct {\n\tType [64]uint8\n}\n\ntype LoopInfo struct {\n\tNumber           int32\n\tDevice           uint16\n\tInode            uint32\n\tRdevice          uint16\n\tOffset           int32\n\tEncrypt_type     int32\n\tEncrypt_key_size int32\n\tFlags            int32\n\tName             [64]uint8\n\tEncrypt_key      [32]uint8\n\tInit             [2]uint32\n\tReserved         [4]uint8\n}\n\ntype TIPCSubscr struct {\n\tSeq     TIPCServiceRange\n\tTimeout uint32\n\tFilter  uint32\n\tHandle  [8]uint8\n}\n\ntype TIPCSIOCLNReq struct {\n\tPeer     uint32\n\tId       uint32\n\tLinkname [68]uint8\n}\n\ntype TIPCSIOCNodeIDReq struct {\n\tPeer uint32\n\tId   [16]uint8\n}\n\ntype PPSKInfo struct {\n\tAssert_sequence uint32\n\tClear_sequence  uint32\n\tAssert_tu       PPSKTime\n\tClear_tu        PPSKTime\n\tCurrent_mode    int32\n\t_               [4]byte\n}\n\nconst (\n\tPPS_GETPARAMS = 0x800470a1\n\tPPS_SETPARAMS = 0x400470a2\n\tPPS_GETCAP    = 0x800470a3\n\tPPS_FETCH     = 0xc00470a4\n)\n\nconst (\n\tPIDFD_NONBLOCK = 0x800\n)\n\ntype SysvIpcPerm struct {\n\tKey  int32\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint16\n\t_    [2]uint8\n\tSeq  uint16\n\t_    uint16\n\t_    uint32\n\t_    uint32\n}\ntype SysvShmDesc struct {\n\tPerm       SysvIpcPerm\n\tSegsz      uint32\n\tAtime      uint32\n\tAtime_high uint32\n\tDtime      uint32\n\tDtime_high uint32\n\tCtime      uint32\n\tCtime_high uint32\n\tCpid       int32\n\tLpid       int32\n\tNattch     uint32\n\t_          uint32\n\t_          uint32\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go",
    "content": "// cgo -godefs -objdir=/tmp/arm64/cgo -- -Wall -Werror -static -I/tmp/arm64/include -fsigned-char linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x8\n\tSizeofLong = 0x8\n)\n\ntype (\n\t_C_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int64\n\tFreq      int64\n\tMaxerror  int64\n\tEsterror  int64\n\tStatus    int32\n\tConstant  int64\n\tPrecision int64\n\tTolerance int64\n\tTime      Timeval\n\tTick      int64\n\tPpsfreq   int64\n\tJitter    int64\n\tShift     int32\n\tStabil    int64\n\tJitcnt    int64\n\tCalcnt    int64\n\tErrcnt    int64\n\tStbcnt    int64\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int64\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint64\n\t_       uint64\n\tSize    int64\n\tBlksize int32\n\t_       int32\n\tBlocks  int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\t_       [2]int32\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]int8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint64\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]int8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint64\n\tControl    *byte\n\tControllen uint64\n\tFlags      int32\n\t_          [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint64\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [24]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x60\n\tSizeofIovec           = 0x10\n\tSizeofMsghdr          = 0x38\n\tSizeofCmsghdr         = 0x10\n)\n\nconst (\n\tSizeofSockFprog = 0x10\n)\n\ntype PtraceRegs struct {\n\tRegs   [31]uint64\n\tSp     uint64\n\tPc     uint64\n\tPstate uint64\n}\n\ntype FdSet struct {\n\tBits [16]int64\n}\n\ntype Sysinfo_t struct {\n\tUptime    int64\n\tLoads     [3]uint64\n\tTotalram  uint64\n\tFreeram   uint64\n\tSharedram uint64\n\tBufferram uint64\n\tTotalswap uint64\n\tFreeswap  uint64\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint64\n\tFreehigh  uint64\n\tUnit      uint32\n\t_         [0]int8\n\t_         [4]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint64\n\tFname  [6]int8\n\tFpack  [6]int8\n\t_      [4]byte\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\tPadFd  int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst _C__NSIG = 0x41\n\nconst (\n\tSIG_BLOCK   = 0x0\n\tSIG_UNBLOCK = 0x1\n\tSIG_SETMASK = 0x2\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tErrno int32\n\tCode  int32\n\t_     int32\n\t_     [112]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [19]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]int8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n\tCpu_delay_max             uint64\n\tCpu_delay_min             uint64\n\tBlkio_delay_max           uint64\n\tBlkio_delay_min           uint64\n\tSwapin_delay_max          uint64\n\tSwapin_delay_min          uint64\n\tFreepages_delay_max       uint64\n\tFreepages_delay_min       uint64\n\tThrashing_delay_max       uint64\n\tThrashing_delay_min       uint64\n\tCompact_delay_max         uint64\n\tCompact_delay_min         uint64\n\tWpcopy_delay_max          uint64\n\tWpcopy_delay_min          uint64\n\tIrq_delay_max             uint64\n\tIrq_delay_min             uint64\n}\n\ntype cpuMask uint64\n\nconst (\n\t_NCPUBITS = 0x40\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x1\n\tCBitFieldMaskBit1  = 0x2\n\tCBitFieldMaskBit2  = 0x4\n\tCBitFieldMaskBit3  = 0x8\n\tCBitFieldMaskBit4  = 0x10\n\tCBitFieldMaskBit5  = 0x20\n\tCBitFieldMaskBit6  = 0x40\n\tCBitFieldMaskBit7  = 0x80\n\tCBitFieldMaskBit8  = 0x100\n\tCBitFieldMaskBit9  = 0x200\n\tCBitFieldMaskBit10 = 0x400\n\tCBitFieldMaskBit11 = 0x800\n\tCBitFieldMaskBit12 = 0x1000\n\tCBitFieldMaskBit13 = 0x2000\n\tCBitFieldMaskBit14 = 0x4000\n\tCBitFieldMaskBit15 = 0x8000\n\tCBitFieldMaskBit16 = 0x10000\n\tCBitFieldMaskBit17 = 0x20000\n\tCBitFieldMaskBit18 = 0x40000\n\tCBitFieldMaskBit19 = 0x80000\n\tCBitFieldMaskBit20 = 0x100000\n\tCBitFieldMaskBit21 = 0x200000\n\tCBitFieldMaskBit22 = 0x400000\n\tCBitFieldMaskBit23 = 0x800000\n\tCBitFieldMaskBit24 = 0x1000000\n\tCBitFieldMaskBit25 = 0x2000000\n\tCBitFieldMaskBit26 = 0x4000000\n\tCBitFieldMaskBit27 = 0x8000000\n\tCBitFieldMaskBit28 = 0x10000000\n\tCBitFieldMaskBit29 = 0x20000000\n\tCBitFieldMaskBit30 = 0x40000000\n\tCBitFieldMaskBit31 = 0x80000000\n\tCBitFieldMaskBit32 = 0x100000000\n\tCBitFieldMaskBit33 = 0x200000000\n\tCBitFieldMaskBit34 = 0x400000000\n\tCBitFieldMaskBit35 = 0x800000000\n\tCBitFieldMaskBit36 = 0x1000000000\n\tCBitFieldMaskBit37 = 0x2000000000\n\tCBitFieldMaskBit38 = 0x4000000000\n\tCBitFieldMaskBit39 = 0x8000000000\n\tCBitFieldMaskBit40 = 0x10000000000\n\tCBitFieldMaskBit41 = 0x20000000000\n\tCBitFieldMaskBit42 = 0x40000000000\n\tCBitFieldMaskBit43 = 0x80000000000\n\tCBitFieldMaskBit44 = 0x100000000000\n\tCBitFieldMaskBit45 = 0x200000000000\n\tCBitFieldMaskBit46 = 0x400000000000\n\tCBitFieldMaskBit47 = 0x800000000000\n\tCBitFieldMaskBit48 = 0x1000000000000\n\tCBitFieldMaskBit49 = 0x2000000000000\n\tCBitFieldMaskBit50 = 0x4000000000000\n\tCBitFieldMaskBit51 = 0x8000000000000\n\tCBitFieldMaskBit52 = 0x10000000000000\n\tCBitFieldMaskBit53 = 0x20000000000000\n\tCBitFieldMaskBit54 = 0x40000000000000\n\tCBitFieldMaskBit55 = 0x80000000000000\n\tCBitFieldMaskBit56 = 0x100000000000000\n\tCBitFieldMaskBit57 = 0x200000000000000\n\tCBitFieldMaskBit58 = 0x400000000000000\n\tCBitFieldMaskBit59 = 0x800000000000000\n\tCBitFieldMaskBit60 = 0x1000000000000000\n\tCBitFieldMaskBit61 = 0x2000000000000000\n\tCBitFieldMaskBit62 = 0x4000000000000000\n\tCBitFieldMaskBit63 = 0x8000000000000000\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\tData   [118]byte\n\t_      uint64\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint64\n}\n\ntype Statfs_t struct {\n\tType    int64\n\tBsize   int64\n\tBlocks  uint64\n\tBfree   uint64\n\tBavail  uint64\n\tFiles   uint64\n\tFfree   uint64\n\tFsid    Fsid\n\tNamelen int64\n\tFrsize  int64\n\tFlags   int64\n\tSpare   [4]int64\n}\n\ntype TpacketHdr struct {\n\tStatus  uint64\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n\t_       [4]byte\n}\n\nconst (\n\tSizeofTpacketHdr = 0x20\n)\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int64\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG = 0x1269\n)\n\ntype CryptoUserAlg struct {\n\tName        [64]int8\n\tDriver_name [64]int8\n\tModule_name [64]int8\n\tType        uint32\n\tMask        uint32\n\tRefcnt      uint32\n\tFlags       uint32\n}\n\ntype CryptoStatAEAD struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatAKCipher struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tVerify_cnt   uint64\n\tSign_cnt     uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCipher struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCompress struct {\n\tType            [64]int8\n\tCompress_cnt    uint64\n\tCompress_tlen   uint64\n\tDecompress_cnt  uint64\n\tDecompress_tlen uint64\n\tErr_cnt         uint64\n}\n\ntype CryptoStatHash struct {\n\tType      [64]int8\n\tHash_cnt  uint64\n\tHash_tlen uint64\n\tErr_cnt   uint64\n}\n\ntype CryptoStatKPP struct {\n\tType                      [64]int8\n\tSetsecret_cnt             uint64\n\tGenerate_public_key_cnt   uint64\n\tCompute_shared_secret_cnt uint64\n\tErr_cnt                   uint64\n}\n\ntype CryptoStatRNG struct {\n\tType          [64]int8\n\tGenerate_cnt  uint64\n\tGenerate_tlen uint64\n\tSeed_cnt      uint64\n\tErr_cnt       uint64\n}\n\ntype CryptoStatLarval struct {\n\tType [64]int8\n}\n\ntype CryptoReportLarval struct {\n\tType [64]int8\n}\n\ntype CryptoReportHash struct {\n\tType       [64]int8\n\tBlocksize  uint32\n\tDigestsize uint32\n}\n\ntype CryptoReportCipher struct {\n\tType        [64]int8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n}\n\ntype CryptoReportBlkCipher struct {\n\tType        [64]int8\n\tGeniv       [64]int8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportAEAD struct {\n\tType        [64]int8\n\tGeniv       [64]int8\n\tBlocksize   uint32\n\tMaxauthsize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportComp struct {\n\tType [64]int8\n}\n\ntype CryptoReportRNG struct {\n\tType     [64]int8\n\tSeedsize uint32\n}\n\ntype CryptoReportAKCipher struct {\n\tType [64]int8\n}\n\ntype CryptoReportKPP struct {\n\tType [64]int8\n}\n\ntype CryptoReportAcomp struct {\n\tType [64]int8\n}\n\ntype LoopInfo struct {\n\tNumber           int32\n\tDevice           uint32\n\tInode            uint64\n\tRdevice          uint32\n\tOffset           int32\n\tEncrypt_type     int32\n\tEncrypt_key_size int32\n\tFlags            int32\n\tName             [64]int8\n\tEncrypt_key      [32]uint8\n\tInit             [2]uint64\n\tReserved         [4]int8\n\t_                [4]byte\n}\n\ntype TIPCSubscr struct {\n\tSeq     TIPCServiceRange\n\tTimeout uint32\n\tFilter  uint32\n\tHandle  [8]int8\n}\n\ntype TIPCSIOCLNReq struct {\n\tPeer     uint32\n\tId       uint32\n\tLinkname [68]int8\n}\n\ntype TIPCSIOCNodeIDReq struct {\n\tPeer uint32\n\tId   [16]int8\n}\n\ntype PPSKInfo struct {\n\tAssert_sequence uint32\n\tClear_sequence  uint32\n\tAssert_tu       PPSKTime\n\tClear_tu        PPSKTime\n\tCurrent_mode    int32\n\t_               [4]byte\n}\n\nconst (\n\tPPS_GETPARAMS = 0x800870a1\n\tPPS_SETPARAMS = 0x400870a2\n\tPPS_GETCAP    = 0x800870a3\n\tPPS_FETCH     = 0xc00870a4\n)\n\nconst (\n\tPIDFD_NONBLOCK = 0x800\n)\n\ntype SysvIpcPerm struct {\n\tKey  int32\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint32\n\t_    [0]uint8\n\tSeq  uint16\n\t_    uint16\n\t_    uint64\n\t_    uint64\n}\ntype SysvShmDesc struct {\n\tPerm   SysvIpcPerm\n\tSegsz  uint64\n\tAtime  int64\n\tDtime  int64\n\tCtime  int64\n\tCpid   int32\n\tLpid   int32\n\tNattch uint64\n\t_      uint64\n\t_      uint64\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/ztypes_linux_loong64.go",
    "content": "// cgo -godefs -objdir=/tmp/loong64/cgo -- -Wall -Werror -static -I/tmp/loong64/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build loong64 && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x8\n\tSizeofLong = 0x8\n)\n\ntype (\n\t_C_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int64\n\tFreq      int64\n\tMaxerror  int64\n\tEsterror  int64\n\tStatus    int32\n\tConstant  int64\n\tPrecision int64\n\tTolerance int64\n\tTime      Timeval\n\tTick      int64\n\tPpsfreq   int64\n\tJitter    int64\n\tShift     int32\n\tStabil    int64\n\tJitcnt    int64\n\tCalcnt    int64\n\tErrcnt    int64\n\tStbcnt    int64\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int64\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint64\n\t_       uint64\n\tSize    int64\n\tBlksize int32\n\t_       int32\n\tBlocks  int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\t_       [2]int32\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]int8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint64\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]int8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint64\n\tControl    *byte\n\tControllen uint64\n\tFlags      int32\n\t_          [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint64\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [24]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x60\n\tSizeofIovec           = 0x10\n\tSizeofMsghdr          = 0x38\n\tSizeofCmsghdr         = 0x10\n)\n\nconst (\n\tSizeofSockFprog = 0x10\n)\n\ntype PtraceRegs struct {\n\tRegs     [32]uint64\n\tOrig_a0  uint64\n\tEra      uint64\n\tBadv     uint64\n\tReserved [10]uint64\n}\n\ntype FdSet struct {\n\tBits [16]int64\n}\n\ntype Sysinfo_t struct {\n\tUptime    int64\n\tLoads     [3]uint64\n\tTotalram  uint64\n\tFreeram   uint64\n\tSharedram uint64\n\tBufferram uint64\n\tTotalswap uint64\n\tFreeswap  uint64\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint64\n\tFreehigh  uint64\n\tUnit      uint32\n\t_         [0]int8\n\t_         [4]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint64\n\tFname  [6]int8\n\tFpack  [6]int8\n\t_      [4]byte\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\t_      int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst _C__NSIG = 0x41\n\nconst (\n\tSIG_BLOCK   = 0x0\n\tSIG_UNBLOCK = 0x1\n\tSIG_SETMASK = 0x2\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tErrno int32\n\tCode  int32\n\t_     int32\n\t_     [112]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [19]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]int8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n\tCpu_delay_max             uint64\n\tCpu_delay_min             uint64\n\tBlkio_delay_max           uint64\n\tBlkio_delay_min           uint64\n\tSwapin_delay_max          uint64\n\tSwapin_delay_min          uint64\n\tFreepages_delay_max       uint64\n\tFreepages_delay_min       uint64\n\tThrashing_delay_max       uint64\n\tThrashing_delay_min       uint64\n\tCompact_delay_max         uint64\n\tCompact_delay_min         uint64\n\tWpcopy_delay_max          uint64\n\tWpcopy_delay_min          uint64\n\tIrq_delay_max             uint64\n\tIrq_delay_min             uint64\n}\n\ntype cpuMask uint64\n\nconst (\n\t_NCPUBITS = 0x40\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x1\n\tCBitFieldMaskBit1  = 0x2\n\tCBitFieldMaskBit2  = 0x4\n\tCBitFieldMaskBit3  = 0x8\n\tCBitFieldMaskBit4  = 0x10\n\tCBitFieldMaskBit5  = 0x20\n\tCBitFieldMaskBit6  = 0x40\n\tCBitFieldMaskBit7  = 0x80\n\tCBitFieldMaskBit8  = 0x100\n\tCBitFieldMaskBit9  = 0x200\n\tCBitFieldMaskBit10 = 0x400\n\tCBitFieldMaskBit11 = 0x800\n\tCBitFieldMaskBit12 = 0x1000\n\tCBitFieldMaskBit13 = 0x2000\n\tCBitFieldMaskBit14 = 0x4000\n\tCBitFieldMaskBit15 = 0x8000\n\tCBitFieldMaskBit16 = 0x10000\n\tCBitFieldMaskBit17 = 0x20000\n\tCBitFieldMaskBit18 = 0x40000\n\tCBitFieldMaskBit19 = 0x80000\n\tCBitFieldMaskBit20 = 0x100000\n\tCBitFieldMaskBit21 = 0x200000\n\tCBitFieldMaskBit22 = 0x400000\n\tCBitFieldMaskBit23 = 0x800000\n\tCBitFieldMaskBit24 = 0x1000000\n\tCBitFieldMaskBit25 = 0x2000000\n\tCBitFieldMaskBit26 = 0x4000000\n\tCBitFieldMaskBit27 = 0x8000000\n\tCBitFieldMaskBit28 = 0x10000000\n\tCBitFieldMaskBit29 = 0x20000000\n\tCBitFieldMaskBit30 = 0x40000000\n\tCBitFieldMaskBit31 = 0x80000000\n\tCBitFieldMaskBit32 = 0x100000000\n\tCBitFieldMaskBit33 = 0x200000000\n\tCBitFieldMaskBit34 = 0x400000000\n\tCBitFieldMaskBit35 = 0x800000000\n\tCBitFieldMaskBit36 = 0x1000000000\n\tCBitFieldMaskBit37 = 0x2000000000\n\tCBitFieldMaskBit38 = 0x4000000000\n\tCBitFieldMaskBit39 = 0x8000000000\n\tCBitFieldMaskBit40 = 0x10000000000\n\tCBitFieldMaskBit41 = 0x20000000000\n\tCBitFieldMaskBit42 = 0x40000000000\n\tCBitFieldMaskBit43 = 0x80000000000\n\tCBitFieldMaskBit44 = 0x100000000000\n\tCBitFieldMaskBit45 = 0x200000000000\n\tCBitFieldMaskBit46 = 0x400000000000\n\tCBitFieldMaskBit47 = 0x800000000000\n\tCBitFieldMaskBit48 = 0x1000000000000\n\tCBitFieldMaskBit49 = 0x2000000000000\n\tCBitFieldMaskBit50 = 0x4000000000000\n\tCBitFieldMaskBit51 = 0x8000000000000\n\tCBitFieldMaskBit52 = 0x10000000000000\n\tCBitFieldMaskBit53 = 0x20000000000000\n\tCBitFieldMaskBit54 = 0x40000000000000\n\tCBitFieldMaskBit55 = 0x80000000000000\n\tCBitFieldMaskBit56 = 0x100000000000000\n\tCBitFieldMaskBit57 = 0x200000000000000\n\tCBitFieldMaskBit58 = 0x400000000000000\n\tCBitFieldMaskBit59 = 0x800000000000000\n\tCBitFieldMaskBit60 = 0x1000000000000000\n\tCBitFieldMaskBit61 = 0x2000000000000000\n\tCBitFieldMaskBit62 = 0x4000000000000000\n\tCBitFieldMaskBit63 = 0x8000000000000000\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\tData   [118]byte\n\t_      uint64\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint64\n}\n\ntype Statfs_t struct {\n\tType    int64\n\tBsize   int64\n\tBlocks  uint64\n\tBfree   uint64\n\tBavail  uint64\n\tFiles   uint64\n\tFfree   uint64\n\tFsid    Fsid\n\tNamelen int64\n\tFrsize  int64\n\tFlags   int64\n\tSpare   [4]int64\n}\n\ntype TpacketHdr struct {\n\tStatus  uint64\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n\t_       [4]byte\n}\n\nconst (\n\tSizeofTpacketHdr = 0x20\n)\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int64\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG = 0x1269\n)\n\ntype CryptoUserAlg struct {\n\tName        [64]int8\n\tDriver_name [64]int8\n\tModule_name [64]int8\n\tType        uint32\n\tMask        uint32\n\tRefcnt      uint32\n\tFlags       uint32\n}\n\ntype CryptoStatAEAD struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatAKCipher struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tVerify_cnt   uint64\n\tSign_cnt     uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCipher struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCompress struct {\n\tType            [64]int8\n\tCompress_cnt    uint64\n\tCompress_tlen   uint64\n\tDecompress_cnt  uint64\n\tDecompress_tlen uint64\n\tErr_cnt         uint64\n}\n\ntype CryptoStatHash struct {\n\tType      [64]int8\n\tHash_cnt  uint64\n\tHash_tlen uint64\n\tErr_cnt   uint64\n}\n\ntype CryptoStatKPP struct {\n\tType                      [64]int8\n\tSetsecret_cnt             uint64\n\tGenerate_public_key_cnt   uint64\n\tCompute_shared_secret_cnt uint64\n\tErr_cnt                   uint64\n}\n\ntype CryptoStatRNG struct {\n\tType          [64]int8\n\tGenerate_cnt  uint64\n\tGenerate_tlen uint64\n\tSeed_cnt      uint64\n\tErr_cnt       uint64\n}\n\ntype CryptoStatLarval struct {\n\tType [64]int8\n}\n\ntype CryptoReportLarval struct {\n\tType [64]int8\n}\n\ntype CryptoReportHash struct {\n\tType       [64]int8\n\tBlocksize  uint32\n\tDigestsize uint32\n}\n\ntype CryptoReportCipher struct {\n\tType        [64]int8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n}\n\ntype CryptoReportBlkCipher struct {\n\tType        [64]int8\n\tGeniv       [64]int8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportAEAD struct {\n\tType        [64]int8\n\tGeniv       [64]int8\n\tBlocksize   uint32\n\tMaxauthsize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportComp struct {\n\tType [64]int8\n}\n\ntype CryptoReportRNG struct {\n\tType     [64]int8\n\tSeedsize uint32\n}\n\ntype CryptoReportAKCipher struct {\n\tType [64]int8\n}\n\ntype CryptoReportKPP struct {\n\tType [64]int8\n}\n\ntype CryptoReportAcomp struct {\n\tType [64]int8\n}\n\ntype LoopInfo struct {\n\tNumber           int32\n\tDevice           uint32\n\tInode            uint64\n\tRdevice          uint32\n\tOffset           int32\n\tEncrypt_type     int32\n\tEncrypt_key_size int32\n\tFlags            int32\n\tName             [64]int8\n\tEncrypt_key      [32]uint8\n\tInit             [2]uint64\n\tReserved         [4]int8\n\t_                [4]byte\n}\n\ntype TIPCSubscr struct {\n\tSeq     TIPCServiceRange\n\tTimeout uint32\n\tFilter  uint32\n\tHandle  [8]int8\n}\n\ntype TIPCSIOCLNReq struct {\n\tPeer     uint32\n\tId       uint32\n\tLinkname [68]int8\n}\n\ntype TIPCSIOCNodeIDReq struct {\n\tPeer uint32\n\tId   [16]int8\n}\n\ntype PPSKInfo struct {\n\tAssert_sequence uint32\n\tClear_sequence  uint32\n\tAssert_tu       PPSKTime\n\tClear_tu        PPSKTime\n\tCurrent_mode    int32\n\t_               [4]byte\n}\n\nconst (\n\tPPS_GETPARAMS = 0x800870a1\n\tPPS_SETPARAMS = 0x400870a2\n\tPPS_GETCAP    = 0x800870a3\n\tPPS_FETCH     = 0xc00870a4\n)\n\nconst (\n\tPIDFD_NONBLOCK = 0x800\n)\n\ntype SysvIpcPerm struct {\n\tKey  int32\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint32\n\t_    [0]uint8\n\tSeq  uint16\n\t_    uint16\n\t_    uint64\n\t_    uint64\n}\ntype SysvShmDesc struct {\n\tPerm   SysvIpcPerm\n\tSegsz  uint64\n\tAtime  int64\n\tDtime  int64\n\tCtime  int64\n\tCpid   int32\n\tLpid   int32\n\tNattch uint64\n\t_      uint64\n\t_      uint64\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go",
    "content": "// cgo -godefs -objdir=/tmp/mips/cgo -- -Wall -Werror -static -I/tmp/mips/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mips && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x4\n\tSizeofLong = 0x4\n)\n\ntype (\n\t_C_long int32\n)\n\ntype Timespec struct {\n\tSec  int32\n\tNsec int32\n}\n\ntype Timeval struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int32\n\tFreq      int32\n\tMaxerror  int32\n\tEsterror  int32\n\tStatus    int32\n\tConstant  int32\n\tPrecision int32\n\tTolerance int32\n\tTime      Timeval\n\tTick      int32\n\tPpsfreq   int32\n\tJitter    int32\n\tShift     int32\n\tStabil    int32\n\tJitcnt    int32\n\tCalcnt    int32\n\tErrcnt    int32\n\tStbcnt    int32\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int32\n\ntype Tms struct {\n\tUtime  int32\n\tStime  int32\n\tCutime int32\n\tCstime int32\n}\n\ntype Utimbuf struct {\n\tActime  int32\n\tModtime int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Stat_t struct {\n\tDev     uint32\n\tPad1    [3]int32\n\tIno     uint64\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint32\n\tPad2    [3]int32\n\tSize    int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBlksize int32\n\tPad4    int32\n\tBlocks  int64\n\tPad5    [14]int32\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]int8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\t_      [4]byte\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint32\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]int8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [16]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x58\n\tSizeofIovec           = 0x8\n\tSizeofMsghdr          = 0x1c\n\tSizeofCmsghdr         = 0xc\n)\n\nconst (\n\tSizeofSockFprog = 0x8\n)\n\ntype PtraceRegs struct {\n\tRegs     [32]uint64\n\tLo       uint64\n\tHi       uint64\n\tEpc      uint64\n\tBadvaddr uint64\n\tStatus   uint64\n\tCause    uint64\n}\n\ntype FdSet struct {\n\tBits [32]int32\n}\n\ntype Sysinfo_t struct {\n\tUptime    int32\n\tLoads     [3]uint32\n\tTotalram  uint32\n\tFreeram   uint32\n\tSharedram uint32\n\tBufferram uint32\n\tTotalswap uint32\n\tFreeswap  uint32\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint32\n\tFreehigh  uint32\n\tUnit      uint32\n\t_         [8]int8\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint32\n\tFname  [6]int8\n\tFpack  [6]int8\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\tPadFd  int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [32]uint32\n}\n\nconst _C__NSIG = 0x80\n\nconst (\n\tSIG_BLOCK   = 0x1\n\tSIG_UNBLOCK = 0x2\n\tSIG_SETMASK = 0x3\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tCode  int32\n\tErrno int32\n\t_     [116]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [23]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\t_                         [6]byte\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]int8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\t_                         [4]byte\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\t_                         [4]byte\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n\tCpu_delay_max             uint64\n\tCpu_delay_min             uint64\n\tBlkio_delay_max           uint64\n\tBlkio_delay_min           uint64\n\tSwapin_delay_max          uint64\n\tSwapin_delay_min          uint64\n\tFreepages_delay_max       uint64\n\tFreepages_delay_min       uint64\n\tThrashing_delay_max       uint64\n\tThrashing_delay_min       uint64\n\tCompact_delay_max         uint64\n\tCompact_delay_min         uint64\n\tWpcopy_delay_max          uint64\n\tWpcopy_delay_min          uint64\n\tIrq_delay_max             uint64\n\tIrq_delay_min             uint64\n}\n\ntype cpuMask uint32\n\nconst (\n\t_NCPUBITS = 0x20\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x8000000000000000\n\tCBitFieldMaskBit1  = 0x4000000000000000\n\tCBitFieldMaskBit2  = 0x2000000000000000\n\tCBitFieldMaskBit3  = 0x1000000000000000\n\tCBitFieldMaskBit4  = 0x800000000000000\n\tCBitFieldMaskBit5  = 0x400000000000000\n\tCBitFieldMaskBit6  = 0x200000000000000\n\tCBitFieldMaskBit7  = 0x100000000000000\n\tCBitFieldMaskBit8  = 0x80000000000000\n\tCBitFieldMaskBit9  = 0x40000000000000\n\tCBitFieldMaskBit10 = 0x20000000000000\n\tCBitFieldMaskBit11 = 0x10000000000000\n\tCBitFieldMaskBit12 = 0x8000000000000\n\tCBitFieldMaskBit13 = 0x4000000000000\n\tCBitFieldMaskBit14 = 0x2000000000000\n\tCBitFieldMaskBit15 = 0x1000000000000\n\tCBitFieldMaskBit16 = 0x800000000000\n\tCBitFieldMaskBit17 = 0x400000000000\n\tCBitFieldMaskBit18 = 0x200000000000\n\tCBitFieldMaskBit19 = 0x100000000000\n\tCBitFieldMaskBit20 = 0x80000000000\n\tCBitFieldMaskBit21 = 0x40000000000\n\tCBitFieldMaskBit22 = 0x20000000000\n\tCBitFieldMaskBit23 = 0x10000000000\n\tCBitFieldMaskBit24 = 0x8000000000\n\tCBitFieldMaskBit25 = 0x4000000000\n\tCBitFieldMaskBit26 = 0x2000000000\n\tCBitFieldMaskBit27 = 0x1000000000\n\tCBitFieldMaskBit28 = 0x800000000\n\tCBitFieldMaskBit29 = 0x400000000\n\tCBitFieldMaskBit30 = 0x200000000\n\tCBitFieldMaskBit31 = 0x100000000\n\tCBitFieldMaskBit32 = 0x80000000\n\tCBitFieldMaskBit33 = 0x40000000\n\tCBitFieldMaskBit34 = 0x20000000\n\tCBitFieldMaskBit35 = 0x10000000\n\tCBitFieldMaskBit36 = 0x8000000\n\tCBitFieldMaskBit37 = 0x4000000\n\tCBitFieldMaskBit38 = 0x2000000\n\tCBitFieldMaskBit39 = 0x1000000\n\tCBitFieldMaskBit40 = 0x800000\n\tCBitFieldMaskBit41 = 0x400000\n\tCBitFieldMaskBit42 = 0x200000\n\tCBitFieldMaskBit43 = 0x100000\n\tCBitFieldMaskBit44 = 0x80000\n\tCBitFieldMaskBit45 = 0x40000\n\tCBitFieldMaskBit46 = 0x20000\n\tCBitFieldMaskBit47 = 0x10000\n\tCBitFieldMaskBit48 = 0x8000\n\tCBitFieldMaskBit49 = 0x4000\n\tCBitFieldMaskBit50 = 0x2000\n\tCBitFieldMaskBit51 = 0x1000\n\tCBitFieldMaskBit52 = 0x800\n\tCBitFieldMaskBit53 = 0x400\n\tCBitFieldMaskBit54 = 0x200\n\tCBitFieldMaskBit55 = 0x100\n\tCBitFieldMaskBit56 = 0x80\n\tCBitFieldMaskBit57 = 0x40\n\tCBitFieldMaskBit58 = 0x20\n\tCBitFieldMaskBit59 = 0x10\n\tCBitFieldMaskBit60 = 0x8\n\tCBitFieldMaskBit61 = 0x4\n\tCBitFieldMaskBit62 = 0x2\n\tCBitFieldMaskBit63 = 0x1\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\tData   [122]byte\n\t_      uint32\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint32\n}\n\ntype Statfs_t struct {\n\tType    int32\n\tBsize   int32\n\tFrsize  int32\n\t_       [4]byte\n\tBlocks  uint64\n\tBfree   uint64\n\tFiles   uint64\n\tFfree   uint64\n\tBavail  uint64\n\tFsid    Fsid\n\tNamelen int32\n\tFlags   int32\n\tSpare   [5]int32\n\t_       [4]byte\n}\n\ntype TpacketHdr struct {\n\tStatus  uint32\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n}\n\nconst (\n\tSizeofTpacketHdr = 0x18\n)\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int32\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG = 0x20001269\n)\n\ntype CryptoUserAlg struct {\n\tName        [64]int8\n\tDriver_name [64]int8\n\tModule_name [64]int8\n\tType        uint32\n\tMask        uint32\n\tRefcnt      uint32\n\tFlags       uint32\n}\n\ntype CryptoStatAEAD struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatAKCipher struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tVerify_cnt   uint64\n\tSign_cnt     uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCipher struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCompress struct {\n\tType            [64]int8\n\tCompress_cnt    uint64\n\tCompress_tlen   uint64\n\tDecompress_cnt  uint64\n\tDecompress_tlen uint64\n\tErr_cnt         uint64\n}\n\ntype CryptoStatHash struct {\n\tType      [64]int8\n\tHash_cnt  uint64\n\tHash_tlen uint64\n\tErr_cnt   uint64\n}\n\ntype CryptoStatKPP struct {\n\tType                      [64]int8\n\tSetsecret_cnt             uint64\n\tGenerate_public_key_cnt   uint64\n\tCompute_shared_secret_cnt uint64\n\tErr_cnt                   uint64\n}\n\ntype CryptoStatRNG struct {\n\tType          [64]int8\n\tGenerate_cnt  uint64\n\tGenerate_tlen uint64\n\tSeed_cnt      uint64\n\tErr_cnt       uint64\n}\n\ntype CryptoStatLarval struct {\n\tType [64]int8\n}\n\ntype CryptoReportLarval struct {\n\tType [64]int8\n}\n\ntype CryptoReportHash struct {\n\tType       [64]int8\n\tBlocksize  uint32\n\tDigestsize uint32\n}\n\ntype CryptoReportCipher struct {\n\tType        [64]int8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n}\n\ntype CryptoReportBlkCipher struct {\n\tType        [64]int8\n\tGeniv       [64]int8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportAEAD struct {\n\tType        [64]int8\n\tGeniv       [64]int8\n\tBlocksize   uint32\n\tMaxauthsize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportComp struct {\n\tType [64]int8\n}\n\ntype CryptoReportRNG struct {\n\tType     [64]int8\n\tSeedsize uint32\n}\n\ntype CryptoReportAKCipher struct {\n\tType [64]int8\n}\n\ntype CryptoReportKPP struct {\n\tType [64]int8\n}\n\ntype CryptoReportAcomp struct {\n\tType [64]int8\n}\n\ntype LoopInfo struct {\n\tNumber           int32\n\tDevice           uint32\n\tInode            uint32\n\tRdevice          uint32\n\tOffset           int32\n\tEncrypt_type     int32\n\tEncrypt_key_size int32\n\tFlags            int32\n\tName             [64]int8\n\tEncrypt_key      [32]uint8\n\tInit             [2]uint32\n\tReserved         [4]int8\n}\n\ntype TIPCSubscr struct {\n\tSeq     TIPCServiceRange\n\tTimeout uint32\n\tFilter  uint32\n\tHandle  [8]int8\n}\n\ntype TIPCSIOCLNReq struct {\n\tPeer     uint32\n\tId       uint32\n\tLinkname [68]int8\n}\n\ntype TIPCSIOCNodeIDReq struct {\n\tPeer uint32\n\tId   [16]int8\n}\n\ntype PPSKInfo struct {\n\tAssert_sequence uint32\n\tClear_sequence  uint32\n\tAssert_tu       PPSKTime\n\tClear_tu        PPSKTime\n\tCurrent_mode    int32\n\t_               [4]byte\n}\n\nconst (\n\tPPS_GETPARAMS = 0x400470a1\n\tPPS_SETPARAMS = 0x800470a2\n\tPPS_GETCAP    = 0x400470a3\n\tPPS_FETCH     = 0xc00470a4\n)\n\nconst (\n\tPIDFD_NONBLOCK = 0x80\n)\n\ntype SysvIpcPerm struct {\n\tKey  int32\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint32\n\t_    [0]uint8\n\tSeq  uint16\n\t_    uint16\n\t_    uint32\n\t_    uint32\n}\ntype SysvShmDesc struct {\n\tPerm       SysvIpcPerm\n\tSegsz      uint32\n\tAtime      uint32\n\tDtime      uint32\n\tCtime      uint32\n\tCpid       int32\n\tLpid       int32\n\tNattch     uint32\n\tAtime_high uint16\n\tDtime_high uint16\n\tCtime_high uint16\n\t_          uint16\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go",
    "content": "// cgo -godefs -objdir=/tmp/mips64/cgo -- -Wall -Werror -static -I/tmp/mips64/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mips64 && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x8\n\tSizeofLong = 0x8\n)\n\ntype (\n\t_C_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int64\n\tFreq      int64\n\tMaxerror  int64\n\tEsterror  int64\n\tStatus    int32\n\tConstant  int64\n\tPrecision int64\n\tTolerance int64\n\tTime      Timeval\n\tTick      int64\n\tPpsfreq   int64\n\tJitter    int64\n\tShift     int32\n\tStabil    int64\n\tJitcnt    int64\n\tCalcnt    int64\n\tErrcnt    int64\n\tStbcnt    int64\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int64\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Stat_t struct {\n\tDev     uint32\n\tPad1    [3]uint32\n\tIno     uint64\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint32\n\tPad2    [3]uint32\n\tSize    int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBlksize uint32\n\tPad4    uint32\n\tBlocks  int64\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]int8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint64\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]int8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint64\n\tControl    *byte\n\tControllen uint64\n\tFlags      int32\n\t_          [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint64\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [24]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x60\n\tSizeofIovec           = 0x10\n\tSizeofMsghdr          = 0x38\n\tSizeofCmsghdr         = 0x10\n)\n\nconst (\n\tSizeofSockFprog = 0x10\n)\n\ntype PtraceRegs struct {\n\tRegs     [32]uint64\n\tLo       uint64\n\tHi       uint64\n\tEpc      uint64\n\tBadvaddr uint64\n\tStatus   uint64\n\tCause    uint64\n}\n\ntype FdSet struct {\n\tBits [16]int64\n}\n\ntype Sysinfo_t struct {\n\tUptime    int64\n\tLoads     [3]uint64\n\tTotalram  uint64\n\tFreeram   uint64\n\tSharedram uint64\n\tBufferram uint64\n\tTotalswap uint64\n\tFreeswap  uint64\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint64\n\tFreehigh  uint64\n\tUnit      uint32\n\t_         [0]int8\n\t_         [4]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint64\n\tFname  [6]int8\n\tFpack  [6]int8\n\t_      [4]byte\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\t_      int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst _C__NSIG = 0x80\n\nconst (\n\tSIG_BLOCK   = 0x1\n\tSIG_UNBLOCK = 0x2\n\tSIG_SETMASK = 0x3\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tCode  int32\n\tErrno int32\n\t_     int32\n\t_     [112]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [23]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]int8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n\tCpu_delay_max             uint64\n\tCpu_delay_min             uint64\n\tBlkio_delay_max           uint64\n\tBlkio_delay_min           uint64\n\tSwapin_delay_max          uint64\n\tSwapin_delay_min          uint64\n\tFreepages_delay_max       uint64\n\tFreepages_delay_min       uint64\n\tThrashing_delay_max       uint64\n\tThrashing_delay_min       uint64\n\tCompact_delay_max         uint64\n\tCompact_delay_min         uint64\n\tWpcopy_delay_max          uint64\n\tWpcopy_delay_min          uint64\n\tIrq_delay_max             uint64\n\tIrq_delay_min             uint64\n}\n\ntype cpuMask uint64\n\nconst (\n\t_NCPUBITS = 0x40\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x8000000000000000\n\tCBitFieldMaskBit1  = 0x4000000000000000\n\tCBitFieldMaskBit2  = 0x2000000000000000\n\tCBitFieldMaskBit3  = 0x1000000000000000\n\tCBitFieldMaskBit4  = 0x800000000000000\n\tCBitFieldMaskBit5  = 0x400000000000000\n\tCBitFieldMaskBit6  = 0x200000000000000\n\tCBitFieldMaskBit7  = 0x100000000000000\n\tCBitFieldMaskBit8  = 0x80000000000000\n\tCBitFieldMaskBit9  = 0x40000000000000\n\tCBitFieldMaskBit10 = 0x20000000000000\n\tCBitFieldMaskBit11 = 0x10000000000000\n\tCBitFieldMaskBit12 = 0x8000000000000\n\tCBitFieldMaskBit13 = 0x4000000000000\n\tCBitFieldMaskBit14 = 0x2000000000000\n\tCBitFieldMaskBit15 = 0x1000000000000\n\tCBitFieldMaskBit16 = 0x800000000000\n\tCBitFieldMaskBit17 = 0x400000000000\n\tCBitFieldMaskBit18 = 0x200000000000\n\tCBitFieldMaskBit19 = 0x100000000000\n\tCBitFieldMaskBit20 = 0x80000000000\n\tCBitFieldMaskBit21 = 0x40000000000\n\tCBitFieldMaskBit22 = 0x20000000000\n\tCBitFieldMaskBit23 = 0x10000000000\n\tCBitFieldMaskBit24 = 0x8000000000\n\tCBitFieldMaskBit25 = 0x4000000000\n\tCBitFieldMaskBit26 = 0x2000000000\n\tCBitFieldMaskBit27 = 0x1000000000\n\tCBitFieldMaskBit28 = 0x800000000\n\tCBitFieldMaskBit29 = 0x400000000\n\tCBitFieldMaskBit30 = 0x200000000\n\tCBitFieldMaskBit31 = 0x100000000\n\tCBitFieldMaskBit32 = 0x80000000\n\tCBitFieldMaskBit33 = 0x40000000\n\tCBitFieldMaskBit34 = 0x20000000\n\tCBitFieldMaskBit35 = 0x10000000\n\tCBitFieldMaskBit36 = 0x8000000\n\tCBitFieldMaskBit37 = 0x4000000\n\tCBitFieldMaskBit38 = 0x2000000\n\tCBitFieldMaskBit39 = 0x1000000\n\tCBitFieldMaskBit40 = 0x800000\n\tCBitFieldMaskBit41 = 0x400000\n\tCBitFieldMaskBit42 = 0x200000\n\tCBitFieldMaskBit43 = 0x100000\n\tCBitFieldMaskBit44 = 0x80000\n\tCBitFieldMaskBit45 = 0x40000\n\tCBitFieldMaskBit46 = 0x20000\n\tCBitFieldMaskBit47 = 0x10000\n\tCBitFieldMaskBit48 = 0x8000\n\tCBitFieldMaskBit49 = 0x4000\n\tCBitFieldMaskBit50 = 0x2000\n\tCBitFieldMaskBit51 = 0x1000\n\tCBitFieldMaskBit52 = 0x800\n\tCBitFieldMaskBit53 = 0x400\n\tCBitFieldMaskBit54 = 0x200\n\tCBitFieldMaskBit55 = 0x100\n\tCBitFieldMaskBit56 = 0x80\n\tCBitFieldMaskBit57 = 0x40\n\tCBitFieldMaskBit58 = 0x20\n\tCBitFieldMaskBit59 = 0x10\n\tCBitFieldMaskBit60 = 0x8\n\tCBitFieldMaskBit61 = 0x4\n\tCBitFieldMaskBit62 = 0x2\n\tCBitFieldMaskBit63 = 0x1\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\tData   [118]byte\n\t_      uint64\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint64\n}\n\ntype Statfs_t struct {\n\tType    int64\n\tBsize   int64\n\tFrsize  int64\n\tBlocks  uint64\n\tBfree   uint64\n\tFiles   uint64\n\tFfree   uint64\n\tBavail  uint64\n\tFsid    Fsid\n\tNamelen int64\n\tFlags   int64\n\tSpare   [5]int64\n}\n\ntype TpacketHdr struct {\n\tStatus  uint64\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n\t_       [4]byte\n}\n\nconst (\n\tSizeofTpacketHdr = 0x20\n)\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int64\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG = 0x20001269\n)\n\ntype CryptoUserAlg struct {\n\tName        [64]int8\n\tDriver_name [64]int8\n\tModule_name [64]int8\n\tType        uint32\n\tMask        uint32\n\tRefcnt      uint32\n\tFlags       uint32\n}\n\ntype CryptoStatAEAD struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatAKCipher struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tVerify_cnt   uint64\n\tSign_cnt     uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCipher struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCompress struct {\n\tType            [64]int8\n\tCompress_cnt    uint64\n\tCompress_tlen   uint64\n\tDecompress_cnt  uint64\n\tDecompress_tlen uint64\n\tErr_cnt         uint64\n}\n\ntype CryptoStatHash struct {\n\tType      [64]int8\n\tHash_cnt  uint64\n\tHash_tlen uint64\n\tErr_cnt   uint64\n}\n\ntype CryptoStatKPP struct {\n\tType                      [64]int8\n\tSetsecret_cnt             uint64\n\tGenerate_public_key_cnt   uint64\n\tCompute_shared_secret_cnt uint64\n\tErr_cnt                   uint64\n}\n\ntype CryptoStatRNG struct {\n\tType          [64]int8\n\tGenerate_cnt  uint64\n\tGenerate_tlen uint64\n\tSeed_cnt      uint64\n\tErr_cnt       uint64\n}\n\ntype CryptoStatLarval struct {\n\tType [64]int8\n}\n\ntype CryptoReportLarval struct {\n\tType [64]int8\n}\n\ntype CryptoReportHash struct {\n\tType       [64]int8\n\tBlocksize  uint32\n\tDigestsize uint32\n}\n\ntype CryptoReportCipher struct {\n\tType        [64]int8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n}\n\ntype CryptoReportBlkCipher struct {\n\tType        [64]int8\n\tGeniv       [64]int8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportAEAD struct {\n\tType        [64]int8\n\tGeniv       [64]int8\n\tBlocksize   uint32\n\tMaxauthsize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportComp struct {\n\tType [64]int8\n}\n\ntype CryptoReportRNG struct {\n\tType     [64]int8\n\tSeedsize uint32\n}\n\ntype CryptoReportAKCipher struct {\n\tType [64]int8\n}\n\ntype CryptoReportKPP struct {\n\tType [64]int8\n}\n\ntype CryptoReportAcomp struct {\n\tType [64]int8\n}\n\ntype LoopInfo struct {\n\tNumber           int32\n\tDevice           uint32\n\tInode            uint64\n\tRdevice          uint32\n\tOffset           int32\n\tEncrypt_type     int32\n\tEncrypt_key_size int32\n\tFlags            int32\n\tName             [64]int8\n\tEncrypt_key      [32]uint8\n\tInit             [2]uint64\n\tReserved         [4]int8\n\t_                [4]byte\n}\n\ntype TIPCSubscr struct {\n\tSeq     TIPCServiceRange\n\tTimeout uint32\n\tFilter  uint32\n\tHandle  [8]int8\n}\n\ntype TIPCSIOCLNReq struct {\n\tPeer     uint32\n\tId       uint32\n\tLinkname [68]int8\n}\n\ntype TIPCSIOCNodeIDReq struct {\n\tPeer uint32\n\tId   [16]int8\n}\n\ntype PPSKInfo struct {\n\tAssert_sequence uint32\n\tClear_sequence  uint32\n\tAssert_tu       PPSKTime\n\tClear_tu        PPSKTime\n\tCurrent_mode    int32\n\t_               [4]byte\n}\n\nconst (\n\tPPS_GETPARAMS = 0x400870a1\n\tPPS_SETPARAMS = 0x800870a2\n\tPPS_GETCAP    = 0x400870a3\n\tPPS_FETCH     = 0xc00870a4\n)\n\nconst (\n\tPIDFD_NONBLOCK = 0x80\n)\n\ntype SysvIpcPerm struct {\n\tKey  int32\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint32\n\t_    [0]uint8\n\tSeq  uint16\n\t_    uint16\n\t_    uint64\n\t_    uint64\n}\ntype SysvShmDesc struct {\n\tPerm   SysvIpcPerm\n\tSegsz  uint64\n\tAtime  int64\n\tDtime  int64\n\tCtime  int64\n\tCpid   int32\n\tLpid   int32\n\tNattch uint64\n\t_      uint64\n\t_      uint64\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go",
    "content": "// cgo -godefs -objdir=/tmp/mips64le/cgo -- -Wall -Werror -static -I/tmp/mips64le/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mips64le && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x8\n\tSizeofLong = 0x8\n)\n\ntype (\n\t_C_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int64\n\tFreq      int64\n\tMaxerror  int64\n\tEsterror  int64\n\tStatus    int32\n\tConstant  int64\n\tPrecision int64\n\tTolerance int64\n\tTime      Timeval\n\tTick      int64\n\tPpsfreq   int64\n\tJitter    int64\n\tShift     int32\n\tStabil    int64\n\tJitcnt    int64\n\tCalcnt    int64\n\tErrcnt    int64\n\tStbcnt    int64\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int64\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Stat_t struct {\n\tDev     uint32\n\tPad1    [3]uint32\n\tIno     uint64\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint32\n\tPad2    [3]uint32\n\tSize    int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBlksize uint32\n\tPad4    uint32\n\tBlocks  int64\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]int8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint64\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]int8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint64\n\tControl    *byte\n\tControllen uint64\n\tFlags      int32\n\t_          [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint64\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [24]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x60\n\tSizeofIovec           = 0x10\n\tSizeofMsghdr          = 0x38\n\tSizeofCmsghdr         = 0x10\n)\n\nconst (\n\tSizeofSockFprog = 0x10\n)\n\ntype PtraceRegs struct {\n\tRegs     [32]uint64\n\tLo       uint64\n\tHi       uint64\n\tEpc      uint64\n\tBadvaddr uint64\n\tStatus   uint64\n\tCause    uint64\n}\n\ntype FdSet struct {\n\tBits [16]int64\n}\n\ntype Sysinfo_t struct {\n\tUptime    int64\n\tLoads     [3]uint64\n\tTotalram  uint64\n\tFreeram   uint64\n\tSharedram uint64\n\tBufferram uint64\n\tTotalswap uint64\n\tFreeswap  uint64\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint64\n\tFreehigh  uint64\n\tUnit      uint32\n\t_         [0]int8\n\t_         [4]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint64\n\tFname  [6]int8\n\tFpack  [6]int8\n\t_      [4]byte\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\t_      int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst _C__NSIG = 0x80\n\nconst (\n\tSIG_BLOCK   = 0x1\n\tSIG_UNBLOCK = 0x2\n\tSIG_SETMASK = 0x3\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tCode  int32\n\tErrno int32\n\t_     int32\n\t_     [112]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [23]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]int8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n\tCpu_delay_max             uint64\n\tCpu_delay_min             uint64\n\tBlkio_delay_max           uint64\n\tBlkio_delay_min           uint64\n\tSwapin_delay_max          uint64\n\tSwapin_delay_min          uint64\n\tFreepages_delay_max       uint64\n\tFreepages_delay_min       uint64\n\tThrashing_delay_max       uint64\n\tThrashing_delay_min       uint64\n\tCompact_delay_max         uint64\n\tCompact_delay_min         uint64\n\tWpcopy_delay_max          uint64\n\tWpcopy_delay_min          uint64\n\tIrq_delay_max             uint64\n\tIrq_delay_min             uint64\n}\n\ntype cpuMask uint64\n\nconst (\n\t_NCPUBITS = 0x40\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x1\n\tCBitFieldMaskBit1  = 0x2\n\tCBitFieldMaskBit2  = 0x4\n\tCBitFieldMaskBit3  = 0x8\n\tCBitFieldMaskBit4  = 0x10\n\tCBitFieldMaskBit5  = 0x20\n\tCBitFieldMaskBit6  = 0x40\n\tCBitFieldMaskBit7  = 0x80\n\tCBitFieldMaskBit8  = 0x100\n\tCBitFieldMaskBit9  = 0x200\n\tCBitFieldMaskBit10 = 0x400\n\tCBitFieldMaskBit11 = 0x800\n\tCBitFieldMaskBit12 = 0x1000\n\tCBitFieldMaskBit13 = 0x2000\n\tCBitFieldMaskBit14 = 0x4000\n\tCBitFieldMaskBit15 = 0x8000\n\tCBitFieldMaskBit16 = 0x10000\n\tCBitFieldMaskBit17 = 0x20000\n\tCBitFieldMaskBit18 = 0x40000\n\tCBitFieldMaskBit19 = 0x80000\n\tCBitFieldMaskBit20 = 0x100000\n\tCBitFieldMaskBit21 = 0x200000\n\tCBitFieldMaskBit22 = 0x400000\n\tCBitFieldMaskBit23 = 0x800000\n\tCBitFieldMaskBit24 = 0x1000000\n\tCBitFieldMaskBit25 = 0x2000000\n\tCBitFieldMaskBit26 = 0x4000000\n\tCBitFieldMaskBit27 = 0x8000000\n\tCBitFieldMaskBit28 = 0x10000000\n\tCBitFieldMaskBit29 = 0x20000000\n\tCBitFieldMaskBit30 = 0x40000000\n\tCBitFieldMaskBit31 = 0x80000000\n\tCBitFieldMaskBit32 = 0x100000000\n\tCBitFieldMaskBit33 = 0x200000000\n\tCBitFieldMaskBit34 = 0x400000000\n\tCBitFieldMaskBit35 = 0x800000000\n\tCBitFieldMaskBit36 = 0x1000000000\n\tCBitFieldMaskBit37 = 0x2000000000\n\tCBitFieldMaskBit38 = 0x4000000000\n\tCBitFieldMaskBit39 = 0x8000000000\n\tCBitFieldMaskBit40 = 0x10000000000\n\tCBitFieldMaskBit41 = 0x20000000000\n\tCBitFieldMaskBit42 = 0x40000000000\n\tCBitFieldMaskBit43 = 0x80000000000\n\tCBitFieldMaskBit44 = 0x100000000000\n\tCBitFieldMaskBit45 = 0x200000000000\n\tCBitFieldMaskBit46 = 0x400000000000\n\tCBitFieldMaskBit47 = 0x800000000000\n\tCBitFieldMaskBit48 = 0x1000000000000\n\tCBitFieldMaskBit49 = 0x2000000000000\n\tCBitFieldMaskBit50 = 0x4000000000000\n\tCBitFieldMaskBit51 = 0x8000000000000\n\tCBitFieldMaskBit52 = 0x10000000000000\n\tCBitFieldMaskBit53 = 0x20000000000000\n\tCBitFieldMaskBit54 = 0x40000000000000\n\tCBitFieldMaskBit55 = 0x80000000000000\n\tCBitFieldMaskBit56 = 0x100000000000000\n\tCBitFieldMaskBit57 = 0x200000000000000\n\tCBitFieldMaskBit58 = 0x400000000000000\n\tCBitFieldMaskBit59 = 0x800000000000000\n\tCBitFieldMaskBit60 = 0x1000000000000000\n\tCBitFieldMaskBit61 = 0x2000000000000000\n\tCBitFieldMaskBit62 = 0x4000000000000000\n\tCBitFieldMaskBit63 = 0x8000000000000000\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\tData   [118]byte\n\t_      uint64\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint64\n}\n\ntype Statfs_t struct {\n\tType    int64\n\tBsize   int64\n\tFrsize  int64\n\tBlocks  uint64\n\tBfree   uint64\n\tFiles   uint64\n\tFfree   uint64\n\tBavail  uint64\n\tFsid    Fsid\n\tNamelen int64\n\tFlags   int64\n\tSpare   [5]int64\n}\n\ntype TpacketHdr struct {\n\tStatus  uint64\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n\t_       [4]byte\n}\n\nconst (\n\tSizeofTpacketHdr = 0x20\n)\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int64\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG = 0x20001269\n)\n\ntype CryptoUserAlg struct {\n\tName        [64]int8\n\tDriver_name [64]int8\n\tModule_name [64]int8\n\tType        uint32\n\tMask        uint32\n\tRefcnt      uint32\n\tFlags       uint32\n}\n\ntype CryptoStatAEAD struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatAKCipher struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tVerify_cnt   uint64\n\tSign_cnt     uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCipher struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCompress struct {\n\tType            [64]int8\n\tCompress_cnt    uint64\n\tCompress_tlen   uint64\n\tDecompress_cnt  uint64\n\tDecompress_tlen uint64\n\tErr_cnt         uint64\n}\n\ntype CryptoStatHash struct {\n\tType      [64]int8\n\tHash_cnt  uint64\n\tHash_tlen uint64\n\tErr_cnt   uint64\n}\n\ntype CryptoStatKPP struct {\n\tType                      [64]int8\n\tSetsecret_cnt             uint64\n\tGenerate_public_key_cnt   uint64\n\tCompute_shared_secret_cnt uint64\n\tErr_cnt                   uint64\n}\n\ntype CryptoStatRNG struct {\n\tType          [64]int8\n\tGenerate_cnt  uint64\n\tGenerate_tlen uint64\n\tSeed_cnt      uint64\n\tErr_cnt       uint64\n}\n\ntype CryptoStatLarval struct {\n\tType [64]int8\n}\n\ntype CryptoReportLarval struct {\n\tType [64]int8\n}\n\ntype CryptoReportHash struct {\n\tType       [64]int8\n\tBlocksize  uint32\n\tDigestsize uint32\n}\n\ntype CryptoReportCipher struct {\n\tType        [64]int8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n}\n\ntype CryptoReportBlkCipher struct {\n\tType        [64]int8\n\tGeniv       [64]int8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportAEAD struct {\n\tType        [64]int8\n\tGeniv       [64]int8\n\tBlocksize   uint32\n\tMaxauthsize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportComp struct {\n\tType [64]int8\n}\n\ntype CryptoReportRNG struct {\n\tType     [64]int8\n\tSeedsize uint32\n}\n\ntype CryptoReportAKCipher struct {\n\tType [64]int8\n}\n\ntype CryptoReportKPP struct {\n\tType [64]int8\n}\n\ntype CryptoReportAcomp struct {\n\tType [64]int8\n}\n\ntype LoopInfo struct {\n\tNumber           int32\n\tDevice           uint32\n\tInode            uint64\n\tRdevice          uint32\n\tOffset           int32\n\tEncrypt_type     int32\n\tEncrypt_key_size int32\n\tFlags            int32\n\tName             [64]int8\n\tEncrypt_key      [32]uint8\n\tInit             [2]uint64\n\tReserved         [4]int8\n\t_                [4]byte\n}\n\ntype TIPCSubscr struct {\n\tSeq     TIPCServiceRange\n\tTimeout uint32\n\tFilter  uint32\n\tHandle  [8]int8\n}\n\ntype TIPCSIOCLNReq struct {\n\tPeer     uint32\n\tId       uint32\n\tLinkname [68]int8\n}\n\ntype TIPCSIOCNodeIDReq struct {\n\tPeer uint32\n\tId   [16]int8\n}\n\ntype PPSKInfo struct {\n\tAssert_sequence uint32\n\tClear_sequence  uint32\n\tAssert_tu       PPSKTime\n\tClear_tu        PPSKTime\n\tCurrent_mode    int32\n\t_               [4]byte\n}\n\nconst (\n\tPPS_GETPARAMS = 0x400870a1\n\tPPS_SETPARAMS = 0x800870a2\n\tPPS_GETCAP    = 0x400870a3\n\tPPS_FETCH     = 0xc00870a4\n)\n\nconst (\n\tPIDFD_NONBLOCK = 0x80\n)\n\ntype SysvIpcPerm struct {\n\tKey  int32\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint32\n\t_    [0]uint8\n\tSeq  uint16\n\t_    uint16\n\t_    uint64\n\t_    uint64\n}\ntype SysvShmDesc struct {\n\tPerm   SysvIpcPerm\n\tSegsz  uint64\n\tAtime  int64\n\tDtime  int64\n\tCtime  int64\n\tCpid   int32\n\tLpid   int32\n\tNattch uint64\n\t_      uint64\n\t_      uint64\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go",
    "content": "// cgo -godefs -objdir=/tmp/mipsle/cgo -- -Wall -Werror -static -I/tmp/mipsle/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mipsle && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x4\n\tSizeofLong = 0x4\n)\n\ntype (\n\t_C_long int32\n)\n\ntype Timespec struct {\n\tSec  int32\n\tNsec int32\n}\n\ntype Timeval struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int32\n\tFreq      int32\n\tMaxerror  int32\n\tEsterror  int32\n\tStatus    int32\n\tConstant  int32\n\tPrecision int32\n\tTolerance int32\n\tTime      Timeval\n\tTick      int32\n\tPpsfreq   int32\n\tJitter    int32\n\tShift     int32\n\tStabil    int32\n\tJitcnt    int32\n\tCalcnt    int32\n\tErrcnt    int32\n\tStbcnt    int32\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int32\n\ntype Tms struct {\n\tUtime  int32\n\tStime  int32\n\tCutime int32\n\tCstime int32\n}\n\ntype Utimbuf struct {\n\tActime  int32\n\tModtime int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Stat_t struct {\n\tDev     uint32\n\tPad1    [3]int32\n\tIno     uint64\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint32\n\tPad2    [3]int32\n\tSize    int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBlksize int32\n\tPad4    int32\n\tBlocks  int64\n\tPad5    [14]int32\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]int8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\t_      [4]byte\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint32\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]int8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [16]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x58\n\tSizeofIovec           = 0x8\n\tSizeofMsghdr          = 0x1c\n\tSizeofCmsghdr         = 0xc\n)\n\nconst (\n\tSizeofSockFprog = 0x8\n)\n\ntype PtraceRegs struct {\n\tRegs     [32]uint64\n\tLo       uint64\n\tHi       uint64\n\tEpc      uint64\n\tBadvaddr uint64\n\tStatus   uint64\n\tCause    uint64\n}\n\ntype FdSet struct {\n\tBits [32]int32\n}\n\ntype Sysinfo_t struct {\n\tUptime    int32\n\tLoads     [3]uint32\n\tTotalram  uint32\n\tFreeram   uint32\n\tSharedram uint32\n\tBufferram uint32\n\tTotalswap uint32\n\tFreeswap  uint32\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint32\n\tFreehigh  uint32\n\tUnit      uint32\n\t_         [8]int8\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint32\n\tFname  [6]int8\n\tFpack  [6]int8\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\tPadFd  int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [32]uint32\n}\n\nconst _C__NSIG = 0x80\n\nconst (\n\tSIG_BLOCK   = 0x1\n\tSIG_UNBLOCK = 0x2\n\tSIG_SETMASK = 0x3\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tCode  int32\n\tErrno int32\n\t_     [116]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [23]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\t_                         [6]byte\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]int8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\t_                         [4]byte\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\t_                         [4]byte\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n\tCpu_delay_max             uint64\n\tCpu_delay_min             uint64\n\tBlkio_delay_max           uint64\n\tBlkio_delay_min           uint64\n\tSwapin_delay_max          uint64\n\tSwapin_delay_min          uint64\n\tFreepages_delay_max       uint64\n\tFreepages_delay_min       uint64\n\tThrashing_delay_max       uint64\n\tThrashing_delay_min       uint64\n\tCompact_delay_max         uint64\n\tCompact_delay_min         uint64\n\tWpcopy_delay_max          uint64\n\tWpcopy_delay_min          uint64\n\tIrq_delay_max             uint64\n\tIrq_delay_min             uint64\n}\n\ntype cpuMask uint32\n\nconst (\n\t_NCPUBITS = 0x20\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x1\n\tCBitFieldMaskBit1  = 0x2\n\tCBitFieldMaskBit2  = 0x4\n\tCBitFieldMaskBit3  = 0x8\n\tCBitFieldMaskBit4  = 0x10\n\tCBitFieldMaskBit5  = 0x20\n\tCBitFieldMaskBit6  = 0x40\n\tCBitFieldMaskBit7  = 0x80\n\tCBitFieldMaskBit8  = 0x100\n\tCBitFieldMaskBit9  = 0x200\n\tCBitFieldMaskBit10 = 0x400\n\tCBitFieldMaskBit11 = 0x800\n\tCBitFieldMaskBit12 = 0x1000\n\tCBitFieldMaskBit13 = 0x2000\n\tCBitFieldMaskBit14 = 0x4000\n\tCBitFieldMaskBit15 = 0x8000\n\tCBitFieldMaskBit16 = 0x10000\n\tCBitFieldMaskBit17 = 0x20000\n\tCBitFieldMaskBit18 = 0x40000\n\tCBitFieldMaskBit19 = 0x80000\n\tCBitFieldMaskBit20 = 0x100000\n\tCBitFieldMaskBit21 = 0x200000\n\tCBitFieldMaskBit22 = 0x400000\n\tCBitFieldMaskBit23 = 0x800000\n\tCBitFieldMaskBit24 = 0x1000000\n\tCBitFieldMaskBit25 = 0x2000000\n\tCBitFieldMaskBit26 = 0x4000000\n\tCBitFieldMaskBit27 = 0x8000000\n\tCBitFieldMaskBit28 = 0x10000000\n\tCBitFieldMaskBit29 = 0x20000000\n\tCBitFieldMaskBit30 = 0x40000000\n\tCBitFieldMaskBit31 = 0x80000000\n\tCBitFieldMaskBit32 = 0x100000000\n\tCBitFieldMaskBit33 = 0x200000000\n\tCBitFieldMaskBit34 = 0x400000000\n\tCBitFieldMaskBit35 = 0x800000000\n\tCBitFieldMaskBit36 = 0x1000000000\n\tCBitFieldMaskBit37 = 0x2000000000\n\tCBitFieldMaskBit38 = 0x4000000000\n\tCBitFieldMaskBit39 = 0x8000000000\n\tCBitFieldMaskBit40 = 0x10000000000\n\tCBitFieldMaskBit41 = 0x20000000000\n\tCBitFieldMaskBit42 = 0x40000000000\n\tCBitFieldMaskBit43 = 0x80000000000\n\tCBitFieldMaskBit44 = 0x100000000000\n\tCBitFieldMaskBit45 = 0x200000000000\n\tCBitFieldMaskBit46 = 0x400000000000\n\tCBitFieldMaskBit47 = 0x800000000000\n\tCBitFieldMaskBit48 = 0x1000000000000\n\tCBitFieldMaskBit49 = 0x2000000000000\n\tCBitFieldMaskBit50 = 0x4000000000000\n\tCBitFieldMaskBit51 = 0x8000000000000\n\tCBitFieldMaskBit52 = 0x10000000000000\n\tCBitFieldMaskBit53 = 0x20000000000000\n\tCBitFieldMaskBit54 = 0x40000000000000\n\tCBitFieldMaskBit55 = 0x80000000000000\n\tCBitFieldMaskBit56 = 0x100000000000000\n\tCBitFieldMaskBit57 = 0x200000000000000\n\tCBitFieldMaskBit58 = 0x400000000000000\n\tCBitFieldMaskBit59 = 0x800000000000000\n\tCBitFieldMaskBit60 = 0x1000000000000000\n\tCBitFieldMaskBit61 = 0x2000000000000000\n\tCBitFieldMaskBit62 = 0x4000000000000000\n\tCBitFieldMaskBit63 = 0x8000000000000000\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\tData   [122]byte\n\t_      uint32\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint32\n}\n\ntype Statfs_t struct {\n\tType    int32\n\tBsize   int32\n\tFrsize  int32\n\t_       [4]byte\n\tBlocks  uint64\n\tBfree   uint64\n\tFiles   uint64\n\tFfree   uint64\n\tBavail  uint64\n\tFsid    Fsid\n\tNamelen int32\n\tFlags   int32\n\tSpare   [5]int32\n\t_       [4]byte\n}\n\ntype TpacketHdr struct {\n\tStatus  uint32\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n}\n\nconst (\n\tSizeofTpacketHdr = 0x18\n)\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int32\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG = 0x20001269\n)\n\ntype CryptoUserAlg struct {\n\tName        [64]int8\n\tDriver_name [64]int8\n\tModule_name [64]int8\n\tType        uint32\n\tMask        uint32\n\tRefcnt      uint32\n\tFlags       uint32\n}\n\ntype CryptoStatAEAD struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatAKCipher struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tVerify_cnt   uint64\n\tSign_cnt     uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCipher struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCompress struct {\n\tType            [64]int8\n\tCompress_cnt    uint64\n\tCompress_tlen   uint64\n\tDecompress_cnt  uint64\n\tDecompress_tlen uint64\n\tErr_cnt         uint64\n}\n\ntype CryptoStatHash struct {\n\tType      [64]int8\n\tHash_cnt  uint64\n\tHash_tlen uint64\n\tErr_cnt   uint64\n}\n\ntype CryptoStatKPP struct {\n\tType                      [64]int8\n\tSetsecret_cnt             uint64\n\tGenerate_public_key_cnt   uint64\n\tCompute_shared_secret_cnt uint64\n\tErr_cnt                   uint64\n}\n\ntype CryptoStatRNG struct {\n\tType          [64]int8\n\tGenerate_cnt  uint64\n\tGenerate_tlen uint64\n\tSeed_cnt      uint64\n\tErr_cnt       uint64\n}\n\ntype CryptoStatLarval struct {\n\tType [64]int8\n}\n\ntype CryptoReportLarval struct {\n\tType [64]int8\n}\n\ntype CryptoReportHash struct {\n\tType       [64]int8\n\tBlocksize  uint32\n\tDigestsize uint32\n}\n\ntype CryptoReportCipher struct {\n\tType        [64]int8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n}\n\ntype CryptoReportBlkCipher struct {\n\tType        [64]int8\n\tGeniv       [64]int8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportAEAD struct {\n\tType        [64]int8\n\tGeniv       [64]int8\n\tBlocksize   uint32\n\tMaxauthsize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportComp struct {\n\tType [64]int8\n}\n\ntype CryptoReportRNG struct {\n\tType     [64]int8\n\tSeedsize uint32\n}\n\ntype CryptoReportAKCipher struct {\n\tType [64]int8\n}\n\ntype CryptoReportKPP struct {\n\tType [64]int8\n}\n\ntype CryptoReportAcomp struct {\n\tType [64]int8\n}\n\ntype LoopInfo struct {\n\tNumber           int32\n\tDevice           uint32\n\tInode            uint32\n\tRdevice          uint32\n\tOffset           int32\n\tEncrypt_type     int32\n\tEncrypt_key_size int32\n\tFlags            int32\n\tName             [64]int8\n\tEncrypt_key      [32]uint8\n\tInit             [2]uint32\n\tReserved         [4]int8\n}\n\ntype TIPCSubscr struct {\n\tSeq     TIPCServiceRange\n\tTimeout uint32\n\tFilter  uint32\n\tHandle  [8]int8\n}\n\ntype TIPCSIOCLNReq struct {\n\tPeer     uint32\n\tId       uint32\n\tLinkname [68]int8\n}\n\ntype TIPCSIOCNodeIDReq struct {\n\tPeer uint32\n\tId   [16]int8\n}\n\ntype PPSKInfo struct {\n\tAssert_sequence uint32\n\tClear_sequence  uint32\n\tAssert_tu       PPSKTime\n\tClear_tu        PPSKTime\n\tCurrent_mode    int32\n\t_               [4]byte\n}\n\nconst (\n\tPPS_GETPARAMS = 0x400470a1\n\tPPS_SETPARAMS = 0x800470a2\n\tPPS_GETCAP    = 0x400470a3\n\tPPS_FETCH     = 0xc00470a4\n)\n\nconst (\n\tPIDFD_NONBLOCK = 0x80\n)\n\ntype SysvIpcPerm struct {\n\tKey  int32\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint32\n\t_    [0]uint8\n\tSeq  uint16\n\t_    uint16\n\t_    uint32\n\t_    uint32\n}\ntype SysvShmDesc struct {\n\tPerm       SysvIpcPerm\n\tSegsz      uint32\n\tAtime      uint32\n\tDtime      uint32\n\tCtime      uint32\n\tCpid       int32\n\tLpid       int32\n\tNattch     uint32\n\tAtime_high uint16\n\tDtime_high uint16\n\tCtime_high uint16\n\t_          uint16\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go",
    "content": "// cgo -godefs -objdir=/tmp/ppc/cgo -- -Wall -Werror -static -I/tmp/ppc/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x4\n\tSizeofLong = 0x4\n)\n\ntype (\n\t_C_long int32\n)\n\ntype Timespec struct {\n\tSec  int32\n\tNsec int32\n}\n\ntype Timeval struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int32\n\tFreq      int32\n\tMaxerror  int32\n\tEsterror  int32\n\tStatus    int32\n\tConstant  int32\n\tPrecision int32\n\tTolerance int32\n\tTime      Timeval\n\tTick      int32\n\tPpsfreq   int32\n\tJitter    int32\n\tShift     int32\n\tStabil    int32\n\tJitcnt    int32\n\tCalcnt    int32\n\tErrcnt    int32\n\tStbcnt    int32\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int32\n\ntype Tms struct {\n\tUtime  int32\n\tStime  int32\n\tCutime int32\n\tCstime int32\n}\n\ntype Utimbuf struct {\n\tActime  int32\n\tModtime int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint64\n\t_       uint16\n\t_       [6]byte\n\tSize    int64\n\tBlksize int32\n\t_       [4]byte\n\tBlocks  int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\t_       uint32\n\t_       uint32\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]uint8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\t_      [4]byte\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint32\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]uint8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]uint8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [16]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x58\n\tSizeofIovec           = 0x8\n\tSizeofMsghdr          = 0x1c\n\tSizeofCmsghdr         = 0xc\n)\n\nconst (\n\tSizeofSockFprog = 0x8\n)\n\ntype PtraceRegs struct {\n\tGpr       [32]uint32\n\tNip       uint32\n\tMsr       uint32\n\tOrig_gpr3 uint32\n\tCtr       uint32\n\tLink      uint32\n\tXer       uint32\n\tCcr       uint32\n\tMq        uint32\n\tTrap      uint32\n\tDar       uint32\n\tDsisr     uint32\n\tResult    uint32\n}\n\ntype FdSet struct {\n\tBits [32]int32\n}\n\ntype Sysinfo_t struct {\n\tUptime    int32\n\tLoads     [3]uint32\n\tTotalram  uint32\n\tFreeram   uint32\n\tSharedram uint32\n\tBufferram uint32\n\tTotalswap uint32\n\tFreeswap  uint32\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint32\n\tFreehigh  uint32\n\tUnit      uint32\n\t_         [8]uint8\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint32\n\tFname  [6]uint8\n\tFpack  [6]uint8\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\t_      int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [32]uint32\n}\n\nconst _C__NSIG = 0x41\n\nconst (\n\tSIG_BLOCK   = 0x0\n\tSIG_UNBLOCK = 0x1\n\tSIG_SETMASK = 0x2\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tErrno int32\n\tCode  int32\n\t_     [116]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [19]uint8\n\tLine   uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\t_                         [6]byte\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]uint8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\t_                         [4]byte\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\t_                         [4]byte\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n\tCpu_delay_max             uint64\n\tCpu_delay_min             uint64\n\tBlkio_delay_max           uint64\n\tBlkio_delay_min           uint64\n\tSwapin_delay_max          uint64\n\tSwapin_delay_min          uint64\n\tFreepages_delay_max       uint64\n\tFreepages_delay_min       uint64\n\tThrashing_delay_max       uint64\n\tThrashing_delay_min       uint64\n\tCompact_delay_max         uint64\n\tCompact_delay_min         uint64\n\tWpcopy_delay_max          uint64\n\tWpcopy_delay_min          uint64\n\tIrq_delay_max             uint64\n\tIrq_delay_min             uint64\n}\n\ntype cpuMask uint32\n\nconst (\n\t_NCPUBITS = 0x20\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x8000000000000000\n\tCBitFieldMaskBit1  = 0x4000000000000000\n\tCBitFieldMaskBit2  = 0x2000000000000000\n\tCBitFieldMaskBit3  = 0x1000000000000000\n\tCBitFieldMaskBit4  = 0x800000000000000\n\tCBitFieldMaskBit5  = 0x400000000000000\n\tCBitFieldMaskBit6  = 0x200000000000000\n\tCBitFieldMaskBit7  = 0x100000000000000\n\tCBitFieldMaskBit8  = 0x80000000000000\n\tCBitFieldMaskBit9  = 0x40000000000000\n\tCBitFieldMaskBit10 = 0x20000000000000\n\tCBitFieldMaskBit11 = 0x10000000000000\n\tCBitFieldMaskBit12 = 0x8000000000000\n\tCBitFieldMaskBit13 = 0x4000000000000\n\tCBitFieldMaskBit14 = 0x2000000000000\n\tCBitFieldMaskBit15 = 0x1000000000000\n\tCBitFieldMaskBit16 = 0x800000000000\n\tCBitFieldMaskBit17 = 0x400000000000\n\tCBitFieldMaskBit18 = 0x200000000000\n\tCBitFieldMaskBit19 = 0x100000000000\n\tCBitFieldMaskBit20 = 0x80000000000\n\tCBitFieldMaskBit21 = 0x40000000000\n\tCBitFieldMaskBit22 = 0x20000000000\n\tCBitFieldMaskBit23 = 0x10000000000\n\tCBitFieldMaskBit24 = 0x8000000000\n\tCBitFieldMaskBit25 = 0x4000000000\n\tCBitFieldMaskBit26 = 0x2000000000\n\tCBitFieldMaskBit27 = 0x1000000000\n\tCBitFieldMaskBit28 = 0x800000000\n\tCBitFieldMaskBit29 = 0x400000000\n\tCBitFieldMaskBit30 = 0x200000000\n\tCBitFieldMaskBit31 = 0x100000000\n\tCBitFieldMaskBit32 = 0x80000000\n\tCBitFieldMaskBit33 = 0x40000000\n\tCBitFieldMaskBit34 = 0x20000000\n\tCBitFieldMaskBit35 = 0x10000000\n\tCBitFieldMaskBit36 = 0x8000000\n\tCBitFieldMaskBit37 = 0x4000000\n\tCBitFieldMaskBit38 = 0x2000000\n\tCBitFieldMaskBit39 = 0x1000000\n\tCBitFieldMaskBit40 = 0x800000\n\tCBitFieldMaskBit41 = 0x400000\n\tCBitFieldMaskBit42 = 0x200000\n\tCBitFieldMaskBit43 = 0x100000\n\tCBitFieldMaskBit44 = 0x80000\n\tCBitFieldMaskBit45 = 0x40000\n\tCBitFieldMaskBit46 = 0x20000\n\tCBitFieldMaskBit47 = 0x10000\n\tCBitFieldMaskBit48 = 0x8000\n\tCBitFieldMaskBit49 = 0x4000\n\tCBitFieldMaskBit50 = 0x2000\n\tCBitFieldMaskBit51 = 0x1000\n\tCBitFieldMaskBit52 = 0x800\n\tCBitFieldMaskBit53 = 0x400\n\tCBitFieldMaskBit54 = 0x200\n\tCBitFieldMaskBit55 = 0x100\n\tCBitFieldMaskBit56 = 0x80\n\tCBitFieldMaskBit57 = 0x40\n\tCBitFieldMaskBit58 = 0x20\n\tCBitFieldMaskBit59 = 0x10\n\tCBitFieldMaskBit60 = 0x8\n\tCBitFieldMaskBit61 = 0x4\n\tCBitFieldMaskBit62 = 0x2\n\tCBitFieldMaskBit63 = 0x1\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\tData   [122]byte\n\t_      uint32\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint32\n}\n\ntype Statfs_t struct {\n\tType    int32\n\tBsize   int32\n\tBlocks  uint64\n\tBfree   uint64\n\tBavail  uint64\n\tFiles   uint64\n\tFfree   uint64\n\tFsid    Fsid\n\tNamelen int32\n\tFrsize  int32\n\tFlags   int32\n\tSpare   [4]int32\n\t_       [4]byte\n}\n\ntype TpacketHdr struct {\n\tStatus  uint32\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n}\n\nconst (\n\tSizeofTpacketHdr = 0x18\n)\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int32\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG = 0x20001269\n)\n\ntype CryptoUserAlg struct {\n\tName        [64]uint8\n\tDriver_name [64]uint8\n\tModule_name [64]uint8\n\tType        uint32\n\tMask        uint32\n\tRefcnt      uint32\n\tFlags       uint32\n}\n\ntype CryptoStatAEAD struct {\n\tType         [64]uint8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatAKCipher struct {\n\tType         [64]uint8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tVerify_cnt   uint64\n\tSign_cnt     uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCipher struct {\n\tType         [64]uint8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCompress struct {\n\tType            [64]uint8\n\tCompress_cnt    uint64\n\tCompress_tlen   uint64\n\tDecompress_cnt  uint64\n\tDecompress_tlen uint64\n\tErr_cnt         uint64\n}\n\ntype CryptoStatHash struct {\n\tType      [64]uint8\n\tHash_cnt  uint64\n\tHash_tlen uint64\n\tErr_cnt   uint64\n}\n\ntype CryptoStatKPP struct {\n\tType                      [64]uint8\n\tSetsecret_cnt             uint64\n\tGenerate_public_key_cnt   uint64\n\tCompute_shared_secret_cnt uint64\n\tErr_cnt                   uint64\n}\n\ntype CryptoStatRNG struct {\n\tType          [64]uint8\n\tGenerate_cnt  uint64\n\tGenerate_tlen uint64\n\tSeed_cnt      uint64\n\tErr_cnt       uint64\n}\n\ntype CryptoStatLarval struct {\n\tType [64]uint8\n}\n\ntype CryptoReportLarval struct {\n\tType [64]uint8\n}\n\ntype CryptoReportHash struct {\n\tType       [64]uint8\n\tBlocksize  uint32\n\tDigestsize uint32\n}\n\ntype CryptoReportCipher struct {\n\tType        [64]uint8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n}\n\ntype CryptoReportBlkCipher struct {\n\tType        [64]uint8\n\tGeniv       [64]uint8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportAEAD struct {\n\tType        [64]uint8\n\tGeniv       [64]uint8\n\tBlocksize   uint32\n\tMaxauthsize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportComp struct {\n\tType [64]uint8\n}\n\ntype CryptoReportRNG struct {\n\tType     [64]uint8\n\tSeedsize uint32\n}\n\ntype CryptoReportAKCipher struct {\n\tType [64]uint8\n}\n\ntype CryptoReportKPP struct {\n\tType [64]uint8\n}\n\ntype CryptoReportAcomp struct {\n\tType [64]uint8\n}\n\ntype LoopInfo struct {\n\tNumber           int32\n\tDevice           uint32\n\tInode            uint32\n\tRdevice          uint32\n\tOffset           int32\n\tEncrypt_type     int32\n\tEncrypt_key_size int32\n\tFlags            int32\n\tName             [64]uint8\n\tEncrypt_key      [32]uint8\n\tInit             [2]uint32\n\tReserved         [4]uint8\n}\n\ntype TIPCSubscr struct {\n\tSeq     TIPCServiceRange\n\tTimeout uint32\n\tFilter  uint32\n\tHandle  [8]uint8\n}\n\ntype TIPCSIOCLNReq struct {\n\tPeer     uint32\n\tId       uint32\n\tLinkname [68]uint8\n}\n\ntype TIPCSIOCNodeIDReq struct {\n\tPeer uint32\n\tId   [16]uint8\n}\n\ntype PPSKInfo struct {\n\tAssert_sequence uint32\n\tClear_sequence  uint32\n\tAssert_tu       PPSKTime\n\tClear_tu        PPSKTime\n\tCurrent_mode    int32\n\t_               [4]byte\n}\n\nconst (\n\tPPS_GETPARAMS = 0x400470a1\n\tPPS_SETPARAMS = 0x800470a2\n\tPPS_GETCAP    = 0x400470a3\n\tPPS_FETCH     = 0xc00470a4\n)\n\nconst (\n\tPIDFD_NONBLOCK = 0x800\n)\n\ntype SysvIpcPerm struct {\n\tKey  int32\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint32\n\tSeq  uint32\n\t_    uint32\n\t_    uint64\n\t_    uint64\n}\ntype SysvShmDesc struct {\n\tPerm       SysvIpcPerm\n\tAtime_high uint32\n\tAtime      uint32\n\tDtime_high uint32\n\tDtime      uint32\n\tCtime_high uint32\n\tCtime      uint32\n\t_          uint32\n\tSegsz      uint32\n\tCpid       int32\n\tLpid       int32\n\tNattch     uint32\n\t_          uint32\n\t_          uint32\n\t_          [4]byte\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go",
    "content": "// cgo -godefs -objdir=/tmp/ppc64/cgo -- -Wall -Werror -static -I/tmp/ppc64/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc64 && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x8\n\tSizeofLong = 0x8\n)\n\ntype (\n\t_C_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int64\n\tFreq      int64\n\tMaxerror  int64\n\tEsterror  int64\n\tStatus    int32\n\tConstant  int64\n\tPrecision int64\n\tTolerance int64\n\tTime      Timeval\n\tTick      int64\n\tPpsfreq   int64\n\tJitter    int64\n\tShift     int32\n\tStabil    int64\n\tJitcnt    int64\n\tCalcnt    int64\n\tErrcnt    int64\n\tStbcnt    int64\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int64\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tNlink   uint64\n\tMode    uint32\n\tUid     uint32\n\tGid     uint32\n\t_       int32\n\tRdev    uint64\n\tSize    int64\n\tBlksize int64\n\tBlocks  int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\t_       uint64\n\t_       uint64\n\t_       uint64\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]uint8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint64\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]uint8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]uint8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint64\n\tControl    *byte\n\tControllen uint64\n\tFlags      int32\n\t_          [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint64\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [24]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x60\n\tSizeofIovec           = 0x10\n\tSizeofMsghdr          = 0x38\n\tSizeofCmsghdr         = 0x10\n)\n\nconst (\n\tSizeofSockFprog = 0x10\n)\n\ntype PtraceRegs struct {\n\tGpr       [32]uint64\n\tNip       uint64\n\tMsr       uint64\n\tOrig_gpr3 uint64\n\tCtr       uint64\n\tLink      uint64\n\tXer       uint64\n\tCcr       uint64\n\tSofte     uint64\n\tTrap      uint64\n\tDar       uint64\n\tDsisr     uint64\n\tResult    uint64\n}\n\ntype FdSet struct {\n\tBits [16]int64\n}\n\ntype Sysinfo_t struct {\n\tUptime    int64\n\tLoads     [3]uint64\n\tTotalram  uint64\n\tFreeram   uint64\n\tSharedram uint64\n\tBufferram uint64\n\tTotalswap uint64\n\tFreeswap  uint64\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint64\n\tFreehigh  uint64\n\tUnit      uint32\n\t_         [0]uint8\n\t_         [4]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint64\n\tFname  [6]uint8\n\tFpack  [6]uint8\n\t_      [4]byte\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\t_      int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst _C__NSIG = 0x41\n\nconst (\n\tSIG_BLOCK   = 0x0\n\tSIG_UNBLOCK = 0x1\n\tSIG_SETMASK = 0x2\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tErrno int32\n\tCode  int32\n\t_     int32\n\t_     [112]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [19]uint8\n\tLine   uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]uint8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n\tCpu_delay_max             uint64\n\tCpu_delay_min             uint64\n\tBlkio_delay_max           uint64\n\tBlkio_delay_min           uint64\n\tSwapin_delay_max          uint64\n\tSwapin_delay_min          uint64\n\tFreepages_delay_max       uint64\n\tFreepages_delay_min       uint64\n\tThrashing_delay_max       uint64\n\tThrashing_delay_min       uint64\n\tCompact_delay_max         uint64\n\tCompact_delay_min         uint64\n\tWpcopy_delay_max          uint64\n\tWpcopy_delay_min          uint64\n\tIrq_delay_max             uint64\n\tIrq_delay_min             uint64\n}\n\ntype cpuMask uint64\n\nconst (\n\t_NCPUBITS = 0x40\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x8000000000000000\n\tCBitFieldMaskBit1  = 0x4000000000000000\n\tCBitFieldMaskBit2  = 0x2000000000000000\n\tCBitFieldMaskBit3  = 0x1000000000000000\n\tCBitFieldMaskBit4  = 0x800000000000000\n\tCBitFieldMaskBit5  = 0x400000000000000\n\tCBitFieldMaskBit6  = 0x200000000000000\n\tCBitFieldMaskBit7  = 0x100000000000000\n\tCBitFieldMaskBit8  = 0x80000000000000\n\tCBitFieldMaskBit9  = 0x40000000000000\n\tCBitFieldMaskBit10 = 0x20000000000000\n\tCBitFieldMaskBit11 = 0x10000000000000\n\tCBitFieldMaskBit12 = 0x8000000000000\n\tCBitFieldMaskBit13 = 0x4000000000000\n\tCBitFieldMaskBit14 = 0x2000000000000\n\tCBitFieldMaskBit15 = 0x1000000000000\n\tCBitFieldMaskBit16 = 0x800000000000\n\tCBitFieldMaskBit17 = 0x400000000000\n\tCBitFieldMaskBit18 = 0x200000000000\n\tCBitFieldMaskBit19 = 0x100000000000\n\tCBitFieldMaskBit20 = 0x80000000000\n\tCBitFieldMaskBit21 = 0x40000000000\n\tCBitFieldMaskBit22 = 0x20000000000\n\tCBitFieldMaskBit23 = 0x10000000000\n\tCBitFieldMaskBit24 = 0x8000000000\n\tCBitFieldMaskBit25 = 0x4000000000\n\tCBitFieldMaskBit26 = 0x2000000000\n\tCBitFieldMaskBit27 = 0x1000000000\n\tCBitFieldMaskBit28 = 0x800000000\n\tCBitFieldMaskBit29 = 0x400000000\n\tCBitFieldMaskBit30 = 0x200000000\n\tCBitFieldMaskBit31 = 0x100000000\n\tCBitFieldMaskBit32 = 0x80000000\n\tCBitFieldMaskBit33 = 0x40000000\n\tCBitFieldMaskBit34 = 0x20000000\n\tCBitFieldMaskBit35 = 0x10000000\n\tCBitFieldMaskBit36 = 0x8000000\n\tCBitFieldMaskBit37 = 0x4000000\n\tCBitFieldMaskBit38 = 0x2000000\n\tCBitFieldMaskBit39 = 0x1000000\n\tCBitFieldMaskBit40 = 0x800000\n\tCBitFieldMaskBit41 = 0x400000\n\tCBitFieldMaskBit42 = 0x200000\n\tCBitFieldMaskBit43 = 0x100000\n\tCBitFieldMaskBit44 = 0x80000\n\tCBitFieldMaskBit45 = 0x40000\n\tCBitFieldMaskBit46 = 0x20000\n\tCBitFieldMaskBit47 = 0x10000\n\tCBitFieldMaskBit48 = 0x8000\n\tCBitFieldMaskBit49 = 0x4000\n\tCBitFieldMaskBit50 = 0x2000\n\tCBitFieldMaskBit51 = 0x1000\n\tCBitFieldMaskBit52 = 0x800\n\tCBitFieldMaskBit53 = 0x400\n\tCBitFieldMaskBit54 = 0x200\n\tCBitFieldMaskBit55 = 0x100\n\tCBitFieldMaskBit56 = 0x80\n\tCBitFieldMaskBit57 = 0x40\n\tCBitFieldMaskBit58 = 0x20\n\tCBitFieldMaskBit59 = 0x10\n\tCBitFieldMaskBit60 = 0x8\n\tCBitFieldMaskBit61 = 0x4\n\tCBitFieldMaskBit62 = 0x2\n\tCBitFieldMaskBit63 = 0x1\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\tData   [118]byte\n\t_      uint64\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint64\n}\n\ntype Statfs_t struct {\n\tType    int64\n\tBsize   int64\n\tBlocks  uint64\n\tBfree   uint64\n\tBavail  uint64\n\tFiles   uint64\n\tFfree   uint64\n\tFsid    Fsid\n\tNamelen int64\n\tFrsize  int64\n\tFlags   int64\n\tSpare   [4]int64\n}\n\ntype TpacketHdr struct {\n\tStatus  uint64\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n\t_       [4]byte\n}\n\nconst (\n\tSizeofTpacketHdr = 0x20\n)\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int64\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG = 0x20001269\n)\n\ntype CryptoUserAlg struct {\n\tName        [64]uint8\n\tDriver_name [64]uint8\n\tModule_name [64]uint8\n\tType        uint32\n\tMask        uint32\n\tRefcnt      uint32\n\tFlags       uint32\n}\n\ntype CryptoStatAEAD struct {\n\tType         [64]uint8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatAKCipher struct {\n\tType         [64]uint8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tVerify_cnt   uint64\n\tSign_cnt     uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCipher struct {\n\tType         [64]uint8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCompress struct {\n\tType            [64]uint8\n\tCompress_cnt    uint64\n\tCompress_tlen   uint64\n\tDecompress_cnt  uint64\n\tDecompress_tlen uint64\n\tErr_cnt         uint64\n}\n\ntype CryptoStatHash struct {\n\tType      [64]uint8\n\tHash_cnt  uint64\n\tHash_tlen uint64\n\tErr_cnt   uint64\n}\n\ntype CryptoStatKPP struct {\n\tType                      [64]uint8\n\tSetsecret_cnt             uint64\n\tGenerate_public_key_cnt   uint64\n\tCompute_shared_secret_cnt uint64\n\tErr_cnt                   uint64\n}\n\ntype CryptoStatRNG struct {\n\tType          [64]uint8\n\tGenerate_cnt  uint64\n\tGenerate_tlen uint64\n\tSeed_cnt      uint64\n\tErr_cnt       uint64\n}\n\ntype CryptoStatLarval struct {\n\tType [64]uint8\n}\n\ntype CryptoReportLarval struct {\n\tType [64]uint8\n}\n\ntype CryptoReportHash struct {\n\tType       [64]uint8\n\tBlocksize  uint32\n\tDigestsize uint32\n}\n\ntype CryptoReportCipher struct {\n\tType        [64]uint8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n}\n\ntype CryptoReportBlkCipher struct {\n\tType        [64]uint8\n\tGeniv       [64]uint8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportAEAD struct {\n\tType        [64]uint8\n\tGeniv       [64]uint8\n\tBlocksize   uint32\n\tMaxauthsize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportComp struct {\n\tType [64]uint8\n}\n\ntype CryptoReportRNG struct {\n\tType     [64]uint8\n\tSeedsize uint32\n}\n\ntype CryptoReportAKCipher struct {\n\tType [64]uint8\n}\n\ntype CryptoReportKPP struct {\n\tType [64]uint8\n}\n\ntype CryptoReportAcomp struct {\n\tType [64]uint8\n}\n\ntype LoopInfo struct {\n\tNumber           int32\n\tDevice           uint64\n\tInode            uint64\n\tRdevice          uint64\n\tOffset           int32\n\tEncrypt_type     int32\n\tEncrypt_key_size int32\n\tFlags            int32\n\tName             [64]uint8\n\tEncrypt_key      [32]uint8\n\tInit             [2]uint64\n\tReserved         [4]uint8\n\t_                [4]byte\n}\n\ntype TIPCSubscr struct {\n\tSeq     TIPCServiceRange\n\tTimeout uint32\n\tFilter  uint32\n\tHandle  [8]uint8\n}\n\ntype TIPCSIOCLNReq struct {\n\tPeer     uint32\n\tId       uint32\n\tLinkname [68]uint8\n}\n\ntype TIPCSIOCNodeIDReq struct {\n\tPeer uint32\n\tId   [16]uint8\n}\n\ntype PPSKInfo struct {\n\tAssert_sequence uint32\n\tClear_sequence  uint32\n\tAssert_tu       PPSKTime\n\tClear_tu        PPSKTime\n\tCurrent_mode    int32\n\t_               [4]byte\n}\n\nconst (\n\tPPS_GETPARAMS = 0x400870a1\n\tPPS_SETPARAMS = 0x800870a2\n\tPPS_GETCAP    = 0x400870a3\n\tPPS_FETCH     = 0xc00870a4\n)\n\nconst (\n\tPIDFD_NONBLOCK = 0x800\n)\n\ntype SysvIpcPerm struct {\n\tKey  int32\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint32\n\tSeq  uint32\n\t_    uint32\n\t_    uint64\n\t_    uint64\n}\ntype SysvShmDesc struct {\n\tPerm   SysvIpcPerm\n\tAtime  int64\n\tDtime  int64\n\tCtime  int64\n\tSegsz  uint64\n\tCpid   int32\n\tLpid   int32\n\tNattch uint64\n\t_      uint64\n\t_      uint64\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go",
    "content": "// cgo -godefs -objdir=/tmp/ppc64le/cgo -- -Wall -Werror -static -I/tmp/ppc64le/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc64le && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x8\n\tSizeofLong = 0x8\n)\n\ntype (\n\t_C_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int64\n\tFreq      int64\n\tMaxerror  int64\n\tEsterror  int64\n\tStatus    int32\n\tConstant  int64\n\tPrecision int64\n\tTolerance int64\n\tTime      Timeval\n\tTick      int64\n\tPpsfreq   int64\n\tJitter    int64\n\tShift     int32\n\tStabil    int64\n\tJitcnt    int64\n\tCalcnt    int64\n\tErrcnt    int64\n\tStbcnt    int64\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int64\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tNlink   uint64\n\tMode    uint32\n\tUid     uint32\n\tGid     uint32\n\t_       int32\n\tRdev    uint64\n\tSize    int64\n\tBlksize int64\n\tBlocks  int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\t_       uint64\n\t_       uint64\n\t_       uint64\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]uint8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint64\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]uint8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]uint8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint64\n\tControl    *byte\n\tControllen uint64\n\tFlags      int32\n\t_          [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint64\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [24]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x60\n\tSizeofIovec           = 0x10\n\tSizeofMsghdr          = 0x38\n\tSizeofCmsghdr         = 0x10\n)\n\nconst (\n\tSizeofSockFprog = 0x10\n)\n\ntype PtraceRegs struct {\n\tGpr       [32]uint64\n\tNip       uint64\n\tMsr       uint64\n\tOrig_gpr3 uint64\n\tCtr       uint64\n\tLink      uint64\n\tXer       uint64\n\tCcr       uint64\n\tSofte     uint64\n\tTrap      uint64\n\tDar       uint64\n\tDsisr     uint64\n\tResult    uint64\n}\n\ntype FdSet struct {\n\tBits [16]int64\n}\n\ntype Sysinfo_t struct {\n\tUptime    int64\n\tLoads     [3]uint64\n\tTotalram  uint64\n\tFreeram   uint64\n\tSharedram uint64\n\tBufferram uint64\n\tTotalswap uint64\n\tFreeswap  uint64\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint64\n\tFreehigh  uint64\n\tUnit      uint32\n\t_         [0]uint8\n\t_         [4]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint64\n\tFname  [6]uint8\n\tFpack  [6]uint8\n\t_      [4]byte\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\t_      int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst _C__NSIG = 0x41\n\nconst (\n\tSIG_BLOCK   = 0x0\n\tSIG_UNBLOCK = 0x1\n\tSIG_SETMASK = 0x2\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tErrno int32\n\tCode  int32\n\t_     int32\n\t_     [112]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [19]uint8\n\tLine   uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]uint8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n\tCpu_delay_max             uint64\n\tCpu_delay_min             uint64\n\tBlkio_delay_max           uint64\n\tBlkio_delay_min           uint64\n\tSwapin_delay_max          uint64\n\tSwapin_delay_min          uint64\n\tFreepages_delay_max       uint64\n\tFreepages_delay_min       uint64\n\tThrashing_delay_max       uint64\n\tThrashing_delay_min       uint64\n\tCompact_delay_max         uint64\n\tCompact_delay_min         uint64\n\tWpcopy_delay_max          uint64\n\tWpcopy_delay_min          uint64\n\tIrq_delay_max             uint64\n\tIrq_delay_min             uint64\n}\n\ntype cpuMask uint64\n\nconst (\n\t_NCPUBITS = 0x40\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x1\n\tCBitFieldMaskBit1  = 0x2\n\tCBitFieldMaskBit2  = 0x4\n\tCBitFieldMaskBit3  = 0x8\n\tCBitFieldMaskBit4  = 0x10\n\tCBitFieldMaskBit5  = 0x20\n\tCBitFieldMaskBit6  = 0x40\n\tCBitFieldMaskBit7  = 0x80\n\tCBitFieldMaskBit8  = 0x100\n\tCBitFieldMaskBit9  = 0x200\n\tCBitFieldMaskBit10 = 0x400\n\tCBitFieldMaskBit11 = 0x800\n\tCBitFieldMaskBit12 = 0x1000\n\tCBitFieldMaskBit13 = 0x2000\n\tCBitFieldMaskBit14 = 0x4000\n\tCBitFieldMaskBit15 = 0x8000\n\tCBitFieldMaskBit16 = 0x10000\n\tCBitFieldMaskBit17 = 0x20000\n\tCBitFieldMaskBit18 = 0x40000\n\tCBitFieldMaskBit19 = 0x80000\n\tCBitFieldMaskBit20 = 0x100000\n\tCBitFieldMaskBit21 = 0x200000\n\tCBitFieldMaskBit22 = 0x400000\n\tCBitFieldMaskBit23 = 0x800000\n\tCBitFieldMaskBit24 = 0x1000000\n\tCBitFieldMaskBit25 = 0x2000000\n\tCBitFieldMaskBit26 = 0x4000000\n\tCBitFieldMaskBit27 = 0x8000000\n\tCBitFieldMaskBit28 = 0x10000000\n\tCBitFieldMaskBit29 = 0x20000000\n\tCBitFieldMaskBit30 = 0x40000000\n\tCBitFieldMaskBit31 = 0x80000000\n\tCBitFieldMaskBit32 = 0x100000000\n\tCBitFieldMaskBit33 = 0x200000000\n\tCBitFieldMaskBit34 = 0x400000000\n\tCBitFieldMaskBit35 = 0x800000000\n\tCBitFieldMaskBit36 = 0x1000000000\n\tCBitFieldMaskBit37 = 0x2000000000\n\tCBitFieldMaskBit38 = 0x4000000000\n\tCBitFieldMaskBit39 = 0x8000000000\n\tCBitFieldMaskBit40 = 0x10000000000\n\tCBitFieldMaskBit41 = 0x20000000000\n\tCBitFieldMaskBit42 = 0x40000000000\n\tCBitFieldMaskBit43 = 0x80000000000\n\tCBitFieldMaskBit44 = 0x100000000000\n\tCBitFieldMaskBit45 = 0x200000000000\n\tCBitFieldMaskBit46 = 0x400000000000\n\tCBitFieldMaskBit47 = 0x800000000000\n\tCBitFieldMaskBit48 = 0x1000000000000\n\tCBitFieldMaskBit49 = 0x2000000000000\n\tCBitFieldMaskBit50 = 0x4000000000000\n\tCBitFieldMaskBit51 = 0x8000000000000\n\tCBitFieldMaskBit52 = 0x10000000000000\n\tCBitFieldMaskBit53 = 0x20000000000000\n\tCBitFieldMaskBit54 = 0x40000000000000\n\tCBitFieldMaskBit55 = 0x80000000000000\n\tCBitFieldMaskBit56 = 0x100000000000000\n\tCBitFieldMaskBit57 = 0x200000000000000\n\tCBitFieldMaskBit58 = 0x400000000000000\n\tCBitFieldMaskBit59 = 0x800000000000000\n\tCBitFieldMaskBit60 = 0x1000000000000000\n\tCBitFieldMaskBit61 = 0x2000000000000000\n\tCBitFieldMaskBit62 = 0x4000000000000000\n\tCBitFieldMaskBit63 = 0x8000000000000000\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\tData   [118]byte\n\t_      uint64\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint64\n}\n\ntype Statfs_t struct {\n\tType    int64\n\tBsize   int64\n\tBlocks  uint64\n\tBfree   uint64\n\tBavail  uint64\n\tFiles   uint64\n\tFfree   uint64\n\tFsid    Fsid\n\tNamelen int64\n\tFrsize  int64\n\tFlags   int64\n\tSpare   [4]int64\n}\n\ntype TpacketHdr struct {\n\tStatus  uint64\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n\t_       [4]byte\n}\n\nconst (\n\tSizeofTpacketHdr = 0x20\n)\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int64\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG = 0x20001269\n)\n\ntype CryptoUserAlg struct {\n\tName        [64]uint8\n\tDriver_name [64]uint8\n\tModule_name [64]uint8\n\tType        uint32\n\tMask        uint32\n\tRefcnt      uint32\n\tFlags       uint32\n}\n\ntype CryptoStatAEAD struct {\n\tType         [64]uint8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatAKCipher struct {\n\tType         [64]uint8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tVerify_cnt   uint64\n\tSign_cnt     uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCipher struct {\n\tType         [64]uint8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCompress struct {\n\tType            [64]uint8\n\tCompress_cnt    uint64\n\tCompress_tlen   uint64\n\tDecompress_cnt  uint64\n\tDecompress_tlen uint64\n\tErr_cnt         uint64\n}\n\ntype CryptoStatHash struct {\n\tType      [64]uint8\n\tHash_cnt  uint64\n\tHash_tlen uint64\n\tErr_cnt   uint64\n}\n\ntype CryptoStatKPP struct {\n\tType                      [64]uint8\n\tSetsecret_cnt             uint64\n\tGenerate_public_key_cnt   uint64\n\tCompute_shared_secret_cnt uint64\n\tErr_cnt                   uint64\n}\n\ntype CryptoStatRNG struct {\n\tType          [64]uint8\n\tGenerate_cnt  uint64\n\tGenerate_tlen uint64\n\tSeed_cnt      uint64\n\tErr_cnt       uint64\n}\n\ntype CryptoStatLarval struct {\n\tType [64]uint8\n}\n\ntype CryptoReportLarval struct {\n\tType [64]uint8\n}\n\ntype CryptoReportHash struct {\n\tType       [64]uint8\n\tBlocksize  uint32\n\tDigestsize uint32\n}\n\ntype CryptoReportCipher struct {\n\tType        [64]uint8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n}\n\ntype CryptoReportBlkCipher struct {\n\tType        [64]uint8\n\tGeniv       [64]uint8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportAEAD struct {\n\tType        [64]uint8\n\tGeniv       [64]uint8\n\tBlocksize   uint32\n\tMaxauthsize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportComp struct {\n\tType [64]uint8\n}\n\ntype CryptoReportRNG struct {\n\tType     [64]uint8\n\tSeedsize uint32\n}\n\ntype CryptoReportAKCipher struct {\n\tType [64]uint8\n}\n\ntype CryptoReportKPP struct {\n\tType [64]uint8\n}\n\ntype CryptoReportAcomp struct {\n\tType [64]uint8\n}\n\ntype LoopInfo struct {\n\tNumber           int32\n\tDevice           uint64\n\tInode            uint64\n\tRdevice          uint64\n\tOffset           int32\n\tEncrypt_type     int32\n\tEncrypt_key_size int32\n\tFlags            int32\n\tName             [64]uint8\n\tEncrypt_key      [32]uint8\n\tInit             [2]uint64\n\tReserved         [4]uint8\n\t_                [4]byte\n}\n\ntype TIPCSubscr struct {\n\tSeq     TIPCServiceRange\n\tTimeout uint32\n\tFilter  uint32\n\tHandle  [8]uint8\n}\n\ntype TIPCSIOCLNReq struct {\n\tPeer     uint32\n\tId       uint32\n\tLinkname [68]uint8\n}\n\ntype TIPCSIOCNodeIDReq struct {\n\tPeer uint32\n\tId   [16]uint8\n}\n\ntype PPSKInfo struct {\n\tAssert_sequence uint32\n\tClear_sequence  uint32\n\tAssert_tu       PPSKTime\n\tClear_tu        PPSKTime\n\tCurrent_mode    int32\n\t_               [4]byte\n}\n\nconst (\n\tPPS_GETPARAMS = 0x400870a1\n\tPPS_SETPARAMS = 0x800870a2\n\tPPS_GETCAP    = 0x400870a3\n\tPPS_FETCH     = 0xc00870a4\n)\n\nconst (\n\tPIDFD_NONBLOCK = 0x800\n)\n\ntype SysvIpcPerm struct {\n\tKey  int32\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint32\n\tSeq  uint32\n\t_    uint32\n\t_    uint64\n\t_    uint64\n}\ntype SysvShmDesc struct {\n\tPerm   SysvIpcPerm\n\tAtime  int64\n\tDtime  int64\n\tCtime  int64\n\tSegsz  uint64\n\tCpid   int32\n\tLpid   int32\n\tNattch uint64\n\t_      uint64\n\t_      uint64\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go",
    "content": "// cgo -godefs -objdir=/tmp/riscv64/cgo -- -Wall -Werror -static -I/tmp/riscv64/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build riscv64 && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x8\n\tSizeofLong = 0x8\n)\n\ntype (\n\t_C_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int64\n\tFreq      int64\n\tMaxerror  int64\n\tEsterror  int64\n\tStatus    int32\n\tConstant  int64\n\tPrecision int64\n\tTolerance int64\n\tTime      Timeval\n\tTick      int64\n\tPpsfreq   int64\n\tJitter    int64\n\tShift     int32\n\tStabil    int64\n\tJitcnt    int64\n\tCalcnt    int64\n\tErrcnt    int64\n\tStbcnt    int64\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int64\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint64\n\t_       uint64\n\tSize    int64\n\tBlksize int32\n\t_       int32\n\tBlocks  int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\t_       [2]int32\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]uint8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint64\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]uint8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]uint8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint64\n\tControl    *byte\n\tControllen uint64\n\tFlags      int32\n\t_          [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint64\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [24]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x60\n\tSizeofIovec           = 0x10\n\tSizeofMsghdr          = 0x38\n\tSizeofCmsghdr         = 0x10\n)\n\nconst (\n\tSizeofSockFprog = 0x10\n)\n\ntype PtraceRegs struct {\n\tPc  uint64\n\tRa  uint64\n\tSp  uint64\n\tGp  uint64\n\tTp  uint64\n\tT0  uint64\n\tT1  uint64\n\tT2  uint64\n\tS0  uint64\n\tS1  uint64\n\tA0  uint64\n\tA1  uint64\n\tA2  uint64\n\tA3  uint64\n\tA4  uint64\n\tA5  uint64\n\tA6  uint64\n\tA7  uint64\n\tS2  uint64\n\tS3  uint64\n\tS4  uint64\n\tS5  uint64\n\tS6  uint64\n\tS7  uint64\n\tS8  uint64\n\tS9  uint64\n\tS10 uint64\n\tS11 uint64\n\tT3  uint64\n\tT4  uint64\n\tT5  uint64\n\tT6  uint64\n}\n\ntype FdSet struct {\n\tBits [16]int64\n}\n\ntype Sysinfo_t struct {\n\tUptime    int64\n\tLoads     [3]uint64\n\tTotalram  uint64\n\tFreeram   uint64\n\tSharedram uint64\n\tBufferram uint64\n\tTotalswap uint64\n\tFreeswap  uint64\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint64\n\tFreehigh  uint64\n\tUnit      uint32\n\t_         [0]uint8\n\t_         [4]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint64\n\tFname  [6]uint8\n\tFpack  [6]uint8\n\t_      [4]byte\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\t_      int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst _C__NSIG = 0x41\n\nconst (\n\tSIG_BLOCK   = 0x0\n\tSIG_UNBLOCK = 0x1\n\tSIG_SETMASK = 0x2\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tErrno int32\n\tCode  int32\n\t_     int32\n\t_     [112]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [19]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]uint8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n\tCpu_delay_max             uint64\n\tCpu_delay_min             uint64\n\tBlkio_delay_max           uint64\n\tBlkio_delay_min           uint64\n\tSwapin_delay_max          uint64\n\tSwapin_delay_min          uint64\n\tFreepages_delay_max       uint64\n\tFreepages_delay_min       uint64\n\tThrashing_delay_max       uint64\n\tThrashing_delay_min       uint64\n\tCompact_delay_max         uint64\n\tCompact_delay_min         uint64\n\tWpcopy_delay_max          uint64\n\tWpcopy_delay_min          uint64\n\tIrq_delay_max             uint64\n\tIrq_delay_min             uint64\n}\n\ntype cpuMask uint64\n\nconst (\n\t_NCPUBITS = 0x40\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x1\n\tCBitFieldMaskBit1  = 0x2\n\tCBitFieldMaskBit2  = 0x4\n\tCBitFieldMaskBit3  = 0x8\n\tCBitFieldMaskBit4  = 0x10\n\tCBitFieldMaskBit5  = 0x20\n\tCBitFieldMaskBit6  = 0x40\n\tCBitFieldMaskBit7  = 0x80\n\tCBitFieldMaskBit8  = 0x100\n\tCBitFieldMaskBit9  = 0x200\n\tCBitFieldMaskBit10 = 0x400\n\tCBitFieldMaskBit11 = 0x800\n\tCBitFieldMaskBit12 = 0x1000\n\tCBitFieldMaskBit13 = 0x2000\n\tCBitFieldMaskBit14 = 0x4000\n\tCBitFieldMaskBit15 = 0x8000\n\tCBitFieldMaskBit16 = 0x10000\n\tCBitFieldMaskBit17 = 0x20000\n\tCBitFieldMaskBit18 = 0x40000\n\tCBitFieldMaskBit19 = 0x80000\n\tCBitFieldMaskBit20 = 0x100000\n\tCBitFieldMaskBit21 = 0x200000\n\tCBitFieldMaskBit22 = 0x400000\n\tCBitFieldMaskBit23 = 0x800000\n\tCBitFieldMaskBit24 = 0x1000000\n\tCBitFieldMaskBit25 = 0x2000000\n\tCBitFieldMaskBit26 = 0x4000000\n\tCBitFieldMaskBit27 = 0x8000000\n\tCBitFieldMaskBit28 = 0x10000000\n\tCBitFieldMaskBit29 = 0x20000000\n\tCBitFieldMaskBit30 = 0x40000000\n\tCBitFieldMaskBit31 = 0x80000000\n\tCBitFieldMaskBit32 = 0x100000000\n\tCBitFieldMaskBit33 = 0x200000000\n\tCBitFieldMaskBit34 = 0x400000000\n\tCBitFieldMaskBit35 = 0x800000000\n\tCBitFieldMaskBit36 = 0x1000000000\n\tCBitFieldMaskBit37 = 0x2000000000\n\tCBitFieldMaskBit38 = 0x4000000000\n\tCBitFieldMaskBit39 = 0x8000000000\n\tCBitFieldMaskBit40 = 0x10000000000\n\tCBitFieldMaskBit41 = 0x20000000000\n\tCBitFieldMaskBit42 = 0x40000000000\n\tCBitFieldMaskBit43 = 0x80000000000\n\tCBitFieldMaskBit44 = 0x100000000000\n\tCBitFieldMaskBit45 = 0x200000000000\n\tCBitFieldMaskBit46 = 0x400000000000\n\tCBitFieldMaskBit47 = 0x800000000000\n\tCBitFieldMaskBit48 = 0x1000000000000\n\tCBitFieldMaskBit49 = 0x2000000000000\n\tCBitFieldMaskBit50 = 0x4000000000000\n\tCBitFieldMaskBit51 = 0x8000000000000\n\tCBitFieldMaskBit52 = 0x10000000000000\n\tCBitFieldMaskBit53 = 0x20000000000000\n\tCBitFieldMaskBit54 = 0x40000000000000\n\tCBitFieldMaskBit55 = 0x80000000000000\n\tCBitFieldMaskBit56 = 0x100000000000000\n\tCBitFieldMaskBit57 = 0x200000000000000\n\tCBitFieldMaskBit58 = 0x400000000000000\n\tCBitFieldMaskBit59 = 0x800000000000000\n\tCBitFieldMaskBit60 = 0x1000000000000000\n\tCBitFieldMaskBit61 = 0x2000000000000000\n\tCBitFieldMaskBit62 = 0x4000000000000000\n\tCBitFieldMaskBit63 = 0x8000000000000000\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\tData   [118]byte\n\t_      uint64\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint64\n}\n\ntype Statfs_t struct {\n\tType    int64\n\tBsize   int64\n\tBlocks  uint64\n\tBfree   uint64\n\tBavail  uint64\n\tFiles   uint64\n\tFfree   uint64\n\tFsid    Fsid\n\tNamelen int64\n\tFrsize  int64\n\tFlags   int64\n\tSpare   [4]int64\n}\n\ntype TpacketHdr struct {\n\tStatus  uint64\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n\t_       [4]byte\n}\n\nconst (\n\tSizeofTpacketHdr = 0x20\n)\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int64\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG = 0x1269\n)\n\ntype CryptoUserAlg struct {\n\tName        [64]uint8\n\tDriver_name [64]uint8\n\tModule_name [64]uint8\n\tType        uint32\n\tMask        uint32\n\tRefcnt      uint32\n\tFlags       uint32\n}\n\ntype CryptoStatAEAD struct {\n\tType         [64]uint8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatAKCipher struct {\n\tType         [64]uint8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tVerify_cnt   uint64\n\tSign_cnt     uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCipher struct {\n\tType         [64]uint8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCompress struct {\n\tType            [64]uint8\n\tCompress_cnt    uint64\n\tCompress_tlen   uint64\n\tDecompress_cnt  uint64\n\tDecompress_tlen uint64\n\tErr_cnt         uint64\n}\n\ntype CryptoStatHash struct {\n\tType      [64]uint8\n\tHash_cnt  uint64\n\tHash_tlen uint64\n\tErr_cnt   uint64\n}\n\ntype CryptoStatKPP struct {\n\tType                      [64]uint8\n\tSetsecret_cnt             uint64\n\tGenerate_public_key_cnt   uint64\n\tCompute_shared_secret_cnt uint64\n\tErr_cnt                   uint64\n}\n\ntype CryptoStatRNG struct {\n\tType          [64]uint8\n\tGenerate_cnt  uint64\n\tGenerate_tlen uint64\n\tSeed_cnt      uint64\n\tErr_cnt       uint64\n}\n\ntype CryptoStatLarval struct {\n\tType [64]uint8\n}\n\ntype CryptoReportLarval struct {\n\tType [64]uint8\n}\n\ntype CryptoReportHash struct {\n\tType       [64]uint8\n\tBlocksize  uint32\n\tDigestsize uint32\n}\n\ntype CryptoReportCipher struct {\n\tType        [64]uint8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n}\n\ntype CryptoReportBlkCipher struct {\n\tType        [64]uint8\n\tGeniv       [64]uint8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportAEAD struct {\n\tType        [64]uint8\n\tGeniv       [64]uint8\n\tBlocksize   uint32\n\tMaxauthsize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportComp struct {\n\tType [64]uint8\n}\n\ntype CryptoReportRNG struct {\n\tType     [64]uint8\n\tSeedsize uint32\n}\n\ntype CryptoReportAKCipher struct {\n\tType [64]uint8\n}\n\ntype CryptoReportKPP struct {\n\tType [64]uint8\n}\n\ntype CryptoReportAcomp struct {\n\tType [64]uint8\n}\n\ntype LoopInfo struct {\n\tNumber           int32\n\tDevice           uint32\n\tInode            uint64\n\tRdevice          uint32\n\tOffset           int32\n\tEncrypt_type     int32\n\tEncrypt_key_size int32\n\tFlags            int32\n\tName             [64]uint8\n\tEncrypt_key      [32]uint8\n\tInit             [2]uint64\n\tReserved         [4]uint8\n\t_                [4]byte\n}\n\ntype TIPCSubscr struct {\n\tSeq     TIPCServiceRange\n\tTimeout uint32\n\tFilter  uint32\n\tHandle  [8]uint8\n}\n\ntype TIPCSIOCLNReq struct {\n\tPeer     uint32\n\tId       uint32\n\tLinkname [68]uint8\n}\n\ntype TIPCSIOCNodeIDReq struct {\n\tPeer uint32\n\tId   [16]uint8\n}\n\ntype PPSKInfo struct {\n\tAssert_sequence uint32\n\tClear_sequence  uint32\n\tAssert_tu       PPSKTime\n\tClear_tu        PPSKTime\n\tCurrent_mode    int32\n\t_               [4]byte\n}\n\nconst (\n\tPPS_GETPARAMS = 0x800870a1\n\tPPS_SETPARAMS = 0x400870a2\n\tPPS_GETCAP    = 0x800870a3\n\tPPS_FETCH     = 0xc00870a4\n)\n\nconst (\n\tPIDFD_NONBLOCK = 0x800\n)\n\ntype SysvIpcPerm struct {\n\tKey  int32\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint32\n\t_    [0]uint8\n\tSeq  uint16\n\t_    uint16\n\t_    uint64\n\t_    uint64\n}\ntype SysvShmDesc struct {\n\tPerm   SysvIpcPerm\n\tSegsz  uint64\n\tAtime  int64\n\tDtime  int64\n\tCtime  int64\n\tCpid   int32\n\tLpid   int32\n\tNattch uint64\n\t_      uint64\n\t_      uint64\n}\n\ntype RISCVHWProbePairs struct {\n\tKey   int64\n\tValue uint64\n}\n\nconst (\n\tRISCV_HWPROBE_KEY_MVENDORID          = 0x0\n\tRISCV_HWPROBE_KEY_MARCHID            = 0x1\n\tRISCV_HWPROBE_KEY_MIMPID             = 0x2\n\tRISCV_HWPROBE_KEY_BASE_BEHAVIOR      = 0x3\n\tRISCV_HWPROBE_BASE_BEHAVIOR_IMA      = 0x1\n\tRISCV_HWPROBE_KEY_IMA_EXT_0          = 0x4\n\tRISCV_HWPROBE_IMA_FD                 = 0x1\n\tRISCV_HWPROBE_IMA_C                  = 0x2\n\tRISCV_HWPROBE_IMA_V                  = 0x4\n\tRISCV_HWPROBE_EXT_ZBA                = 0x8\n\tRISCV_HWPROBE_EXT_ZBB                = 0x10\n\tRISCV_HWPROBE_EXT_ZBS                = 0x20\n\tRISCV_HWPROBE_EXT_ZICBOZ             = 0x40\n\tRISCV_HWPROBE_EXT_ZBC                = 0x80\n\tRISCV_HWPROBE_EXT_ZBKB               = 0x100\n\tRISCV_HWPROBE_EXT_ZBKC               = 0x200\n\tRISCV_HWPROBE_EXT_ZBKX               = 0x400\n\tRISCV_HWPROBE_EXT_ZKND               = 0x800\n\tRISCV_HWPROBE_EXT_ZKNE               = 0x1000\n\tRISCV_HWPROBE_EXT_ZKNH               = 0x2000\n\tRISCV_HWPROBE_EXT_ZKSED              = 0x4000\n\tRISCV_HWPROBE_EXT_ZKSH               = 0x8000\n\tRISCV_HWPROBE_EXT_ZKT                = 0x10000\n\tRISCV_HWPROBE_EXT_ZVBB               = 0x20000\n\tRISCV_HWPROBE_EXT_ZVBC               = 0x40000\n\tRISCV_HWPROBE_EXT_ZVKB               = 0x80000\n\tRISCV_HWPROBE_EXT_ZVKG               = 0x100000\n\tRISCV_HWPROBE_EXT_ZVKNED             = 0x200000\n\tRISCV_HWPROBE_EXT_ZVKNHA             = 0x400000\n\tRISCV_HWPROBE_EXT_ZVKNHB             = 0x800000\n\tRISCV_HWPROBE_EXT_ZVKSED             = 0x1000000\n\tRISCV_HWPROBE_EXT_ZVKSH              = 0x2000000\n\tRISCV_HWPROBE_EXT_ZVKT               = 0x4000000\n\tRISCV_HWPROBE_EXT_ZFH                = 0x8000000\n\tRISCV_HWPROBE_EXT_ZFHMIN             = 0x10000000\n\tRISCV_HWPROBE_EXT_ZIHINTNTL          = 0x20000000\n\tRISCV_HWPROBE_EXT_ZVFH               = 0x40000000\n\tRISCV_HWPROBE_EXT_ZVFHMIN            = 0x80000000\n\tRISCV_HWPROBE_EXT_ZFA                = 0x100000000\n\tRISCV_HWPROBE_EXT_ZTSO               = 0x200000000\n\tRISCV_HWPROBE_EXT_ZACAS              = 0x400000000\n\tRISCV_HWPROBE_EXT_ZICOND             = 0x800000000\n\tRISCV_HWPROBE_EXT_ZIHINTPAUSE        = 0x1000000000\n\tRISCV_HWPROBE_KEY_CPUPERF_0          = 0x5\n\tRISCV_HWPROBE_MISALIGNED_UNKNOWN     = 0x0\n\tRISCV_HWPROBE_MISALIGNED_EMULATED    = 0x1\n\tRISCV_HWPROBE_MISALIGNED_SLOW        = 0x2\n\tRISCV_HWPROBE_MISALIGNED_FAST        = 0x3\n\tRISCV_HWPROBE_MISALIGNED_UNSUPPORTED = 0x4\n\tRISCV_HWPROBE_MISALIGNED_MASK        = 0x7\n\tRISCV_HWPROBE_KEY_ZICBOZ_BLOCK_SIZE  = 0x6\n\tRISCV_HWPROBE_WHICH_CPUS             = 0x1\n)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go",
    "content": "// cgo -godefs -objdir=/tmp/s390x/cgo -- -Wall -Werror -static -I/tmp/s390x/include -fsigned-char linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build s390x && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x8\n\tSizeofLong = 0x8\n)\n\ntype (\n\t_C_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int64\n\tFreq      int64\n\tMaxerror  int64\n\tEsterror  int64\n\tStatus    int32\n\tConstant  int64\n\tPrecision int64\n\tTolerance int64\n\tTime      Timeval\n\tTick      int64\n\tPpsfreq   int64\n\tJitter    int64\n\tShift     int32\n\tStabil    int64\n\tJitcnt    int64\n\tCalcnt    int64\n\tErrcnt    int64\n\tStbcnt    int64\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int64\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tNlink   uint64\n\tMode    uint32\n\tUid     uint32\n\tGid     uint32\n\t_       int32\n\tRdev    uint64\n\tSize    int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBlksize int64\n\tBlocks  int64\n\t_       [3]int64\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]int8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x6\n\tFADV_NOREUSE  = 0x7\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint64\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]int8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint64\n\tControl    *byte\n\tControllen uint64\n\tFlags      int32\n\t_          [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint64\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [24]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x60\n\tSizeofIovec           = 0x10\n\tSizeofMsghdr          = 0x38\n\tSizeofCmsghdr         = 0x10\n)\n\nconst (\n\tSizeofSockFprog = 0x10\n)\n\ntype PtraceRegs struct {\n\tPsw                      PtracePsw\n\tGprs                     [16]uint64\n\tAcrs                     [16]uint32\n\tOrig_gpr2                uint64\n\tFp_regs                  PtraceFpregs\n\tPer_info                 PtracePer\n\tIeee_instruction_pointer uint64\n}\n\ntype PtracePsw struct {\n\tMask uint64\n\tAddr uint64\n}\n\ntype PtraceFpregs struct {\n\tFpc  uint32\n\tFprs [16]float64\n}\n\ntype PtracePer struct {\n\tControl_regs  [3]uint64\n\t_             [8]byte\n\tStarting_addr uint64\n\tEnding_addr   uint64\n\tPerc_atmid    uint16\n\tAddress       uint64\n\tAccess_id     uint8\n\t_             [7]byte\n}\n\ntype FdSet struct {\n\tBits [16]int64\n}\n\ntype Sysinfo_t struct {\n\tUptime    int64\n\tLoads     [3]uint64\n\tTotalram  uint64\n\tFreeram   uint64\n\tSharedram uint64\n\tBufferram uint64\n\tTotalswap uint64\n\tFreeswap  uint64\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint64\n\tFreehigh  uint64\n\tUnit      uint32\n\t_         [0]int8\n\t_         [4]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint64\n\tFname  [6]int8\n\tFpack  [6]int8\n\t_      [4]byte\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\t_      int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst _C__NSIG = 0x41\n\nconst (\n\tSIG_BLOCK   = 0x0\n\tSIG_UNBLOCK = 0x1\n\tSIG_SETMASK = 0x2\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tErrno int32\n\tCode  int32\n\t_     int32\n\t_     [112]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [19]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]int8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n\tCpu_delay_max             uint64\n\tCpu_delay_min             uint64\n\tBlkio_delay_max           uint64\n\tBlkio_delay_min           uint64\n\tSwapin_delay_max          uint64\n\tSwapin_delay_min          uint64\n\tFreepages_delay_max       uint64\n\tFreepages_delay_min       uint64\n\tThrashing_delay_max       uint64\n\tThrashing_delay_min       uint64\n\tCompact_delay_max         uint64\n\tCompact_delay_min         uint64\n\tWpcopy_delay_max          uint64\n\tWpcopy_delay_min          uint64\n\tIrq_delay_max             uint64\n\tIrq_delay_min             uint64\n}\n\ntype cpuMask uint64\n\nconst (\n\t_NCPUBITS = 0x40\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x8000000000000000\n\tCBitFieldMaskBit1  = 0x4000000000000000\n\tCBitFieldMaskBit2  = 0x2000000000000000\n\tCBitFieldMaskBit3  = 0x1000000000000000\n\tCBitFieldMaskBit4  = 0x800000000000000\n\tCBitFieldMaskBit5  = 0x400000000000000\n\tCBitFieldMaskBit6  = 0x200000000000000\n\tCBitFieldMaskBit7  = 0x100000000000000\n\tCBitFieldMaskBit8  = 0x80000000000000\n\tCBitFieldMaskBit9  = 0x40000000000000\n\tCBitFieldMaskBit10 = 0x20000000000000\n\tCBitFieldMaskBit11 = 0x10000000000000\n\tCBitFieldMaskBit12 = 0x8000000000000\n\tCBitFieldMaskBit13 = 0x4000000000000\n\tCBitFieldMaskBit14 = 0x2000000000000\n\tCBitFieldMaskBit15 = 0x1000000000000\n\tCBitFieldMaskBit16 = 0x800000000000\n\tCBitFieldMaskBit17 = 0x400000000000\n\tCBitFieldMaskBit18 = 0x200000000000\n\tCBitFieldMaskBit19 = 0x100000000000\n\tCBitFieldMaskBit20 = 0x80000000000\n\tCBitFieldMaskBit21 = 0x40000000000\n\tCBitFieldMaskBit22 = 0x20000000000\n\tCBitFieldMaskBit23 = 0x10000000000\n\tCBitFieldMaskBit24 = 0x8000000000\n\tCBitFieldMaskBit25 = 0x4000000000\n\tCBitFieldMaskBit26 = 0x2000000000\n\tCBitFieldMaskBit27 = 0x1000000000\n\tCBitFieldMaskBit28 = 0x800000000\n\tCBitFieldMaskBit29 = 0x400000000\n\tCBitFieldMaskBit30 = 0x200000000\n\tCBitFieldMaskBit31 = 0x100000000\n\tCBitFieldMaskBit32 = 0x80000000\n\tCBitFieldMaskBit33 = 0x40000000\n\tCBitFieldMaskBit34 = 0x20000000\n\tCBitFieldMaskBit35 = 0x10000000\n\tCBitFieldMaskBit36 = 0x8000000\n\tCBitFieldMaskBit37 = 0x4000000\n\tCBitFieldMaskBit38 = 0x2000000\n\tCBitFieldMaskBit39 = 0x1000000\n\tCBitFieldMaskBit40 = 0x800000\n\tCBitFieldMaskBit41 = 0x400000\n\tCBitFieldMaskBit42 = 0x200000\n\tCBitFieldMaskBit43 = 0x100000\n\tCBitFieldMaskBit44 = 0x80000\n\tCBitFieldMaskBit45 = 0x40000\n\tCBitFieldMaskBit46 = 0x20000\n\tCBitFieldMaskBit47 = 0x10000\n\tCBitFieldMaskBit48 = 0x8000\n\tCBitFieldMaskBit49 = 0x4000\n\tCBitFieldMaskBit50 = 0x2000\n\tCBitFieldMaskBit51 = 0x1000\n\tCBitFieldMaskBit52 = 0x800\n\tCBitFieldMaskBit53 = 0x400\n\tCBitFieldMaskBit54 = 0x200\n\tCBitFieldMaskBit55 = 0x100\n\tCBitFieldMaskBit56 = 0x80\n\tCBitFieldMaskBit57 = 0x40\n\tCBitFieldMaskBit58 = 0x20\n\tCBitFieldMaskBit59 = 0x10\n\tCBitFieldMaskBit60 = 0x8\n\tCBitFieldMaskBit61 = 0x4\n\tCBitFieldMaskBit62 = 0x2\n\tCBitFieldMaskBit63 = 0x1\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\tData   [118]byte\n\t_      uint64\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint64\n}\n\ntype Statfs_t struct {\n\tType    uint32\n\tBsize   uint32\n\tBlocks  uint64\n\tBfree   uint64\n\tBavail  uint64\n\tFiles   uint64\n\tFfree   uint64\n\tFsid    Fsid\n\tNamelen uint32\n\tFrsize  uint32\n\tFlags   uint32\n\tSpare   [4]uint32\n\t_       [4]byte\n}\n\ntype TpacketHdr struct {\n\tStatus  uint64\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n\t_       [4]byte\n}\n\nconst (\n\tSizeofTpacketHdr = 0x20\n)\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int64\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG = 0x1269\n)\n\ntype CryptoUserAlg struct {\n\tName        [64]int8\n\tDriver_name [64]int8\n\tModule_name [64]int8\n\tType        uint32\n\tMask        uint32\n\tRefcnt      uint32\n\tFlags       uint32\n}\n\ntype CryptoStatAEAD struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatAKCipher struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tVerify_cnt   uint64\n\tSign_cnt     uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCipher struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCompress struct {\n\tType            [64]int8\n\tCompress_cnt    uint64\n\tCompress_tlen   uint64\n\tDecompress_cnt  uint64\n\tDecompress_tlen uint64\n\tErr_cnt         uint64\n}\n\ntype CryptoStatHash struct {\n\tType      [64]int8\n\tHash_cnt  uint64\n\tHash_tlen uint64\n\tErr_cnt   uint64\n}\n\ntype CryptoStatKPP struct {\n\tType                      [64]int8\n\tSetsecret_cnt             uint64\n\tGenerate_public_key_cnt   uint64\n\tCompute_shared_secret_cnt uint64\n\tErr_cnt                   uint64\n}\n\ntype CryptoStatRNG struct {\n\tType          [64]int8\n\tGenerate_cnt  uint64\n\tGenerate_tlen uint64\n\tSeed_cnt      uint64\n\tErr_cnt       uint64\n}\n\ntype CryptoStatLarval struct {\n\tType [64]int8\n}\n\ntype CryptoReportLarval struct {\n\tType [64]int8\n}\n\ntype CryptoReportHash struct {\n\tType       [64]int8\n\tBlocksize  uint32\n\tDigestsize uint32\n}\n\ntype CryptoReportCipher struct {\n\tType        [64]int8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n}\n\ntype CryptoReportBlkCipher struct {\n\tType        [64]int8\n\tGeniv       [64]int8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportAEAD struct {\n\tType        [64]int8\n\tGeniv       [64]int8\n\tBlocksize   uint32\n\tMaxauthsize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportComp struct {\n\tType [64]int8\n}\n\ntype CryptoReportRNG struct {\n\tType     [64]int8\n\tSeedsize uint32\n}\n\ntype CryptoReportAKCipher struct {\n\tType [64]int8\n}\n\ntype CryptoReportKPP struct {\n\tType [64]int8\n}\n\ntype CryptoReportAcomp struct {\n\tType [64]int8\n}\n\ntype LoopInfo struct {\n\tNumber           int32\n\tDevice           uint16\n\tInode            uint64\n\tRdevice          uint16\n\tOffset           int32\n\tEncrypt_type     int32\n\tEncrypt_key_size int32\n\tFlags            int32\n\tName             [64]int8\n\tEncrypt_key      [32]uint8\n\tInit             [2]uint64\n\tReserved         [4]int8\n\t_                [4]byte\n}\n\ntype TIPCSubscr struct {\n\tSeq     TIPCServiceRange\n\tTimeout uint32\n\tFilter  uint32\n\tHandle  [8]int8\n}\n\ntype TIPCSIOCLNReq struct {\n\tPeer     uint32\n\tId       uint32\n\tLinkname [68]int8\n}\n\ntype TIPCSIOCNodeIDReq struct {\n\tPeer uint32\n\tId   [16]int8\n}\n\ntype PPSKInfo struct {\n\tAssert_sequence uint32\n\tClear_sequence  uint32\n\tAssert_tu       PPSKTime\n\tClear_tu        PPSKTime\n\tCurrent_mode    int32\n\t_               [4]byte\n}\n\nconst (\n\tPPS_GETPARAMS = 0x800870a1\n\tPPS_SETPARAMS = 0x400870a2\n\tPPS_GETCAP    = 0x800870a3\n\tPPS_FETCH     = 0xc00870a4\n)\n\nconst (\n\tPIDFD_NONBLOCK = 0x800\n)\n\ntype SysvIpcPerm struct {\n\tKey  int32\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint32\n\t_    uint16\n\tSeq  uint16\n\t_    uint64\n\t_    uint64\n}\ntype SysvShmDesc struct {\n\tPerm   SysvIpcPerm\n\tSegsz  uint64\n\tAtime  int64\n\tDtime  int64\n\tCtime  int64\n\tCpid   int32\n\tLpid   int32\n\tNattch uint64\n\t_      uint64\n\t_      uint64\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go",
    "content": "// cgo -godefs -objdir=/tmp/sparc64/cgo -- -Wall -Werror -static -I/tmp/sparc64/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build sparc64 && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x8\n\tSizeofLong = 0x8\n)\n\ntype (\n\t_C_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int32\n\t_    [4]byte\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int64\n\tFreq      int64\n\tMaxerror  int64\n\tEsterror  int64\n\tStatus    int32\n\tConstant  int64\n\tPrecision int64\n\tTolerance int64\n\tTime      Timeval\n\tTick      int64\n\tPpsfreq   int64\n\tJitter    int64\n\tShift     int32\n\tStabil    int64\n\tJitcnt    int64\n\tCalcnt    int64\n\tErrcnt    int64\n\tStbcnt    int64\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int64\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Stat_t struct {\n\tDev     uint64\n\t_       uint16\n\tIno     uint64\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint64\n\t_       uint16\n\tSize    int64\n\tBlksize int64\n\tBlocks  int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\t_       uint64\n\t_       uint64\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]int8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      int16\n\t_      [2]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint64\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]int8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint64\n\tControl    *byte\n\tControllen uint64\n\tFlags      int32\n\t_          [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint64\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [24]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x60\n\tSizeofIovec           = 0x10\n\tSizeofMsghdr          = 0x38\n\tSizeofCmsghdr         = 0x10\n)\n\nconst (\n\tSizeofSockFprog = 0x10\n)\n\ntype PtraceRegs struct {\n\tRegs   [16]uint64\n\tTstate uint64\n\tTpc    uint64\n\tTnpc   uint64\n\tY      uint32\n\tMagic  uint32\n}\n\ntype FdSet struct {\n\tBits [16]int64\n}\n\ntype Sysinfo_t struct {\n\tUptime    int64\n\tLoads     [3]uint64\n\tTotalram  uint64\n\tFreeram   uint64\n\tSharedram uint64\n\tBufferram uint64\n\tTotalswap uint64\n\tFreeswap  uint64\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint64\n\tFreehigh  uint64\n\tUnit      uint32\n\t_         [0]int8\n\t_         [4]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint64\n\tFname  [6]int8\n\tFpack  [6]int8\n\t_      [4]byte\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\t_      int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x400000\n)\n\nconst (\n\tPOLLRDHUP = 0x800\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst _C__NSIG = 0x41\n\nconst (\n\tSIG_BLOCK   = 0x1\n\tSIG_UNBLOCK = 0x2\n\tSIG_SETMASK = 0x4\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tErrno int32\n\tCode  int32\n\t_     int32\n\t_     [112]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [19]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]int8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n\tCpu_delay_max             uint64\n\tCpu_delay_min             uint64\n\tBlkio_delay_max           uint64\n\tBlkio_delay_min           uint64\n\tSwapin_delay_max          uint64\n\tSwapin_delay_min          uint64\n\tFreepages_delay_max       uint64\n\tFreepages_delay_min       uint64\n\tThrashing_delay_max       uint64\n\tThrashing_delay_min       uint64\n\tCompact_delay_max         uint64\n\tCompact_delay_min         uint64\n\tWpcopy_delay_max          uint64\n\tWpcopy_delay_min          uint64\n\tIrq_delay_max             uint64\n\tIrq_delay_min             uint64\n}\n\ntype cpuMask uint64\n\nconst (\n\t_NCPUBITS = 0x40\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x8000000000000000\n\tCBitFieldMaskBit1  = 0x4000000000000000\n\tCBitFieldMaskBit2  = 0x2000000000000000\n\tCBitFieldMaskBit3  = 0x1000000000000000\n\tCBitFieldMaskBit4  = 0x800000000000000\n\tCBitFieldMaskBit5  = 0x400000000000000\n\tCBitFieldMaskBit6  = 0x200000000000000\n\tCBitFieldMaskBit7  = 0x100000000000000\n\tCBitFieldMaskBit8  = 0x80000000000000\n\tCBitFieldMaskBit9  = 0x40000000000000\n\tCBitFieldMaskBit10 = 0x20000000000000\n\tCBitFieldMaskBit11 = 0x10000000000000\n\tCBitFieldMaskBit12 = 0x8000000000000\n\tCBitFieldMaskBit13 = 0x4000000000000\n\tCBitFieldMaskBit14 = 0x2000000000000\n\tCBitFieldMaskBit15 = 0x1000000000000\n\tCBitFieldMaskBit16 = 0x800000000000\n\tCBitFieldMaskBit17 = 0x400000000000\n\tCBitFieldMaskBit18 = 0x200000000000\n\tCBitFieldMaskBit19 = 0x100000000000\n\tCBitFieldMaskBit20 = 0x80000000000\n\tCBitFieldMaskBit21 = 0x40000000000\n\tCBitFieldMaskBit22 = 0x20000000000\n\tCBitFieldMaskBit23 = 0x10000000000\n\tCBitFieldMaskBit24 = 0x8000000000\n\tCBitFieldMaskBit25 = 0x4000000000\n\tCBitFieldMaskBit26 = 0x2000000000\n\tCBitFieldMaskBit27 = 0x1000000000\n\tCBitFieldMaskBit28 = 0x800000000\n\tCBitFieldMaskBit29 = 0x400000000\n\tCBitFieldMaskBit30 = 0x200000000\n\tCBitFieldMaskBit31 = 0x100000000\n\tCBitFieldMaskBit32 = 0x80000000\n\tCBitFieldMaskBit33 = 0x40000000\n\tCBitFieldMaskBit34 = 0x20000000\n\tCBitFieldMaskBit35 = 0x10000000\n\tCBitFieldMaskBit36 = 0x8000000\n\tCBitFieldMaskBit37 = 0x4000000\n\tCBitFieldMaskBit38 = 0x2000000\n\tCBitFieldMaskBit39 = 0x1000000\n\tCBitFieldMaskBit40 = 0x800000\n\tCBitFieldMaskBit41 = 0x400000\n\tCBitFieldMaskBit42 = 0x200000\n\tCBitFieldMaskBit43 = 0x100000\n\tCBitFieldMaskBit44 = 0x80000\n\tCBitFieldMaskBit45 = 0x40000\n\tCBitFieldMaskBit46 = 0x20000\n\tCBitFieldMaskBit47 = 0x10000\n\tCBitFieldMaskBit48 = 0x8000\n\tCBitFieldMaskBit49 = 0x4000\n\tCBitFieldMaskBit50 = 0x2000\n\tCBitFieldMaskBit51 = 0x1000\n\tCBitFieldMaskBit52 = 0x800\n\tCBitFieldMaskBit53 = 0x400\n\tCBitFieldMaskBit54 = 0x200\n\tCBitFieldMaskBit55 = 0x100\n\tCBitFieldMaskBit56 = 0x80\n\tCBitFieldMaskBit57 = 0x40\n\tCBitFieldMaskBit58 = 0x20\n\tCBitFieldMaskBit59 = 0x10\n\tCBitFieldMaskBit60 = 0x8\n\tCBitFieldMaskBit61 = 0x4\n\tCBitFieldMaskBit62 = 0x2\n\tCBitFieldMaskBit63 = 0x1\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\tData   [118]byte\n\t_      uint64\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint64\n}\n\ntype Statfs_t struct {\n\tType    int64\n\tBsize   int64\n\tBlocks  uint64\n\tBfree   uint64\n\tBavail  uint64\n\tFiles   uint64\n\tFfree   uint64\n\tFsid    Fsid\n\tNamelen int64\n\tFrsize  int64\n\tFlags   int64\n\tSpare   [4]int64\n}\n\ntype TpacketHdr struct {\n\tStatus  uint64\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n\t_       [4]byte\n}\n\nconst (\n\tSizeofTpacketHdr = 0x20\n)\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int64\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG = 0x20001269\n)\n\ntype CryptoUserAlg struct {\n\tName        [64]int8\n\tDriver_name [64]int8\n\tModule_name [64]int8\n\tType        uint32\n\tMask        uint32\n\tRefcnt      uint32\n\tFlags       uint32\n}\n\ntype CryptoStatAEAD struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatAKCipher struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tVerify_cnt   uint64\n\tSign_cnt     uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCipher struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCompress struct {\n\tType            [64]int8\n\tCompress_cnt    uint64\n\tCompress_tlen   uint64\n\tDecompress_cnt  uint64\n\tDecompress_tlen uint64\n\tErr_cnt         uint64\n}\n\ntype CryptoStatHash struct {\n\tType      [64]int8\n\tHash_cnt  uint64\n\tHash_tlen uint64\n\tErr_cnt   uint64\n}\n\ntype CryptoStatKPP struct {\n\tType                      [64]int8\n\tSetsecret_cnt             uint64\n\tGenerate_public_key_cnt   uint64\n\tCompute_shared_secret_cnt uint64\n\tErr_cnt                   uint64\n}\n\ntype CryptoStatRNG struct {\n\tType          [64]int8\n\tGenerate_cnt  uint64\n\tGenerate_tlen uint64\n\tSeed_cnt      uint64\n\tErr_cnt       uint64\n}\n\ntype CryptoStatLarval struct {\n\tType [64]int8\n}\n\ntype CryptoReportLarval struct {\n\tType [64]int8\n}\n\ntype CryptoReportHash struct {\n\tType       [64]int8\n\tBlocksize  uint32\n\tDigestsize uint32\n}\n\ntype CryptoReportCipher struct {\n\tType        [64]int8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n}\n\ntype CryptoReportBlkCipher struct {\n\tType        [64]int8\n\tGeniv       [64]int8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportAEAD struct {\n\tType        [64]int8\n\tGeniv       [64]int8\n\tBlocksize   uint32\n\tMaxauthsize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportComp struct {\n\tType [64]int8\n}\n\ntype CryptoReportRNG struct {\n\tType     [64]int8\n\tSeedsize uint32\n}\n\ntype CryptoReportAKCipher struct {\n\tType [64]int8\n}\n\ntype CryptoReportKPP struct {\n\tType [64]int8\n}\n\ntype CryptoReportAcomp struct {\n\tType [64]int8\n}\n\ntype LoopInfo struct {\n\tNumber           int32\n\tDevice           uint32\n\tInode            uint64\n\tRdevice          uint32\n\tOffset           int32\n\tEncrypt_type     int32\n\tEncrypt_key_size int32\n\tFlags            int32\n\tName             [64]int8\n\tEncrypt_key      [32]uint8\n\tInit             [2]uint64\n\tReserved         [4]int8\n\t_                [4]byte\n}\n\ntype TIPCSubscr struct {\n\tSeq     TIPCServiceRange\n\tTimeout uint32\n\tFilter  uint32\n\tHandle  [8]int8\n}\n\ntype TIPCSIOCLNReq struct {\n\tPeer     uint32\n\tId       uint32\n\tLinkname [68]int8\n}\n\ntype TIPCSIOCNodeIDReq struct {\n\tPeer uint32\n\tId   [16]int8\n}\n\ntype PPSKInfo struct {\n\tAssert_sequence uint32\n\tClear_sequence  uint32\n\tAssert_tu       PPSKTime\n\tClear_tu        PPSKTime\n\tCurrent_mode    int32\n\t_               [4]byte\n}\n\nconst (\n\tPPS_GETPARAMS = 0x400870a1\n\tPPS_SETPARAMS = 0x800870a2\n\tPPS_GETCAP    = 0x400870a3\n\tPPS_FETCH     = 0xc00870a4\n)\n\nconst (\n\tPIDFD_NONBLOCK = 0x4000\n)\n\ntype SysvIpcPerm struct {\n\tKey  int32\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint32\n\t_    uint16\n\tSeq  uint16\n\t_    uint64\n\t_    uint64\n}\ntype SysvShmDesc struct {\n\tPerm   SysvIpcPerm\n\tAtime  int64\n\tDtime  int64\n\tCtime  int64\n\tSegsz  uint64\n\tCpid   int32\n\tLpid   int32\n\tNattch uint64\n\t_      uint64\n\t_      uint64\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go",
    "content": "// cgo -godefs types_netbsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build 386 && netbsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x4\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x4\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int32\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int32\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tDev     uint64\n\tMode    uint32\n\tIno     uint64\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize uint32\n\tFlags   uint32\n\tGen     uint32\n\tSpare   [2]uint32\n}\n\ntype Statfs_t [0]byte\n\ntype Statvfs_t struct {\n\tFlag        uint32\n\tBsize       uint32\n\tFrsize      uint32\n\tIosize      uint32\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      uint64\n\tBresvd      uint64\n\tFiles       uint64\n\tFfree       uint64\n\tFavail      uint64\n\tFresvd      uint64\n\tSyncreads   uint64\n\tSyncwrites  uint64\n\tAsyncreads  uint64\n\tAsyncwrites uint64\n\tFsidx       Fsid\n\tFsid        uint32\n\tNamemax     uint32\n\tOwner       uint32\n\tSpare       [4]uint32\n\tFstypename  [32]byte\n\tMntonname   [1024]byte\n\tMntfromname [1024]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno    uint64\n\tReclen    uint16\n\tNamlen    uint16\n\tType      uint8\n\tName      [512]int8\n\tPad_cgo_0 [3]byte\n}\n\ntype Fsid struct {\n\tX__fsid_val [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\nconst (\n\tST_WAIT   = 0x1\n\tST_NOWAIT = 0x2\n)\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [12]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x14\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x8\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x1c\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint32\n\tFilter uint32\n\tFlags  uint32\n\tFflags uint32\n\tData   int64\n\tUdata  int32\n}\n\ntype FdSet struct {\n\tBits [8]uint32\n}\n\nconst (\n\tSizeofIfMsghdr         = 0x98\n\tSizeofIfData           = 0x84\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfAnnounceMsghdr = 0x18\n\tSizeofRtMsghdr         = 0x78\n\tSizeofRtMetrics        = 0x50\n)\n\ntype IfMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tAddrs     int32\n\tFlags     int32\n\tIndex     uint16\n\tPad_cgo_0 [2]byte\n\tData      IfData\n\tPad_cgo_1 [4]byte\n}\n\ntype IfData struct {\n\tType       uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tPad_cgo_0  [1]byte\n\tLink_state int32\n\tMtu        uint64\n\tMetric     uint64\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tNoproto    uint64\n\tLastchange Timespec\n}\n\ntype IfaMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tAddrs     int32\n\tFlags     int32\n\tMetric    int32\n\tIndex     uint16\n\tPad_cgo_0 [6]byte\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tName    [16]int8\n\tWhat    uint16\n}\n\ntype RtMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tIndex     uint16\n\tPad_cgo_0 [2]byte\n\tFlags     int32\n\tAddrs     int32\n\tPid       int32\n\tSeq       int32\n\tErrno     int32\n\tUse       int32\n\tInits     int32\n\tPad_cgo_1 [4]byte\n\tRmx       RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint64\n\tMtu      uint64\n\tHopcount uint64\n\tRecvpipe uint64\n\tSendpipe uint64\n\tSsthresh uint64\n\tRtt      uint64\n\tRttvar   uint64\n\tExpire   int64\n\tPksent   int64\n}\n\ntype Mclpool [0]byte\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x80\n\tSizeofBpfProgram = 0x8\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x14\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv    uint64\n\tDrop    uint64\n\tCapt    uint64\n\tPadding [13]uint64\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp    BpfTimeval\n\tCaplen    uint32\n\tDatalen   uint32\n\tHdrlen    uint16\n\tPad_cgo_0 [2]byte\n}\n\ntype BpfTimeval struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\ntype Ptmget struct {\n\tCfd int32\n\tSfd int32\n\tCn  [1024]byte\n\tSn  [1024]byte\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x100\n\tAT_SYMLINK_NOFOLLOW = 0x200\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_REMOVEDIR        = 0x800\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Sysctlnode struct {\n\tFlags           uint32\n\tNum             int32\n\tName            [32]int8\n\tVer             uint32\n\tX__rsvd         uint32\n\tUn              [16]byte\n\tX_sysctl_size   [8]byte\n\tX_sysctl_func   [8]byte\n\tX_sysctl_parent [8]byte\n\tX_sysctl_desc   [8]byte\n}\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofUvmexp = 0x278\n\ntype Uvmexp struct {\n\tPagesize           int64\n\tPagemask           int64\n\tPageshift          int64\n\tNpages             int64\n\tFree               int64\n\tActive             int64\n\tInactive           int64\n\tPaging             int64\n\tWired              int64\n\tZeropages          int64\n\tReserve_pagedaemon int64\n\tReserve_kernel     int64\n\tFreemin            int64\n\tFreetarg           int64\n\tInactarg           int64\n\tWiredmax           int64\n\tNswapdev           int64\n\tSwpages            int64\n\tSwpginuse          int64\n\tSwpgonly           int64\n\tNswget             int64\n\tUnused1            int64\n\tCpuhit             int64\n\tCpumiss            int64\n\tFaults             int64\n\tTraps              int64\n\tIntrs              int64\n\tSwtch              int64\n\tSofts              int64\n\tSyscalls           int64\n\tPageins            int64\n\tSwapins            int64\n\tSwapouts           int64\n\tPgswapin           int64\n\tPgswapout          int64\n\tForks              int64\n\tForks_ppwait       int64\n\tForks_sharevm      int64\n\tPga_zerohit        int64\n\tPga_zeromiss       int64\n\tZeroaborts         int64\n\tFltnoram           int64\n\tFltnoanon          int64\n\tFltpgwait          int64\n\tFltpgrele          int64\n\tFltrelck           int64\n\tFltrelckok         int64\n\tFltanget           int64\n\tFltanretry         int64\n\tFltamcopy          int64\n\tFltnamap           int64\n\tFltnomap           int64\n\tFltlget            int64\n\tFltget             int64\n\tFlt_anon           int64\n\tFlt_acow           int64\n\tFlt_obj            int64\n\tFlt_prcopy         int64\n\tFlt_przero         int64\n\tPdwoke             int64\n\tPdrevs             int64\n\tUnused4            int64\n\tPdfreed            int64\n\tPdscans            int64\n\tPdanscan           int64\n\tPdobscan           int64\n\tPdreact            int64\n\tPdbusy             int64\n\tPdpageouts         int64\n\tPdpending          int64\n\tPddeact            int64\n\tAnonpages          int64\n\tFilepages          int64\n\tExecpages          int64\n\tColorhit           int64\n\tColormiss          int64\n\tNcolors            int64\n\tBootpages          int64\n\tPoolpages          int64\n}\n\nconst SizeofClockinfo = 0x14\n\ntype Clockinfo struct {\n\tHz      int32\n\tTick    int32\n\tTickadj int32\n\tStathz  int32\n\tProfhz  int32\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go",
    "content": "// cgo -godefs types_netbsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && netbsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec       int64\n\tUsec      int32\n\tPad_cgo_0 [4]byte\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tDev     uint64\n\tMode    uint32\n\t_       [4]byte\n\tIno     uint64\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\t_       [4]byte\n\tRdev    uint64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize uint32\n\tFlags   uint32\n\tGen     uint32\n\tSpare   [2]uint32\n\t_       [4]byte\n}\n\ntype Statfs_t [0]byte\n\ntype Statvfs_t struct {\n\tFlag        uint64\n\tBsize       uint64\n\tFrsize      uint64\n\tIosize      uint64\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      uint64\n\tBresvd      uint64\n\tFiles       uint64\n\tFfree       uint64\n\tFavail      uint64\n\tFresvd      uint64\n\tSyncreads   uint64\n\tSyncwrites  uint64\n\tAsyncreads  uint64\n\tAsyncwrites uint64\n\tFsidx       Fsid\n\tFsid        uint64\n\tNamemax     uint64\n\tOwner       uint32\n\tSpare       [4]uint32\n\tFstypename  [32]byte\n\tMntonname   [1024]byte\n\tMntfromname [1024]byte\n\t_           [4]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno    uint64\n\tReclen    uint16\n\tNamlen    uint16\n\tType      uint8\n\tName      [512]int8\n\tPad_cgo_0 [3]byte\n}\n\ntype Fsid struct {\n\tX__fsid_val [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\nconst (\n\tST_WAIT   = 0x1\n\tST_NOWAIT = 0x2\n)\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [12]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tPad_cgo_0  [4]byte\n\tIov        *Iovec\n\tIovlen     int32\n\tPad_cgo_1  [4]byte\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x14\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent     uint64\n\tFilter    uint32\n\tFlags     uint32\n\tFflags    uint32\n\tPad_cgo_0 [4]byte\n\tData      int64\n\tUdata     int64\n}\n\ntype FdSet struct {\n\tBits [8]uint32\n}\n\nconst (\n\tSizeofIfMsghdr         = 0x98\n\tSizeofIfData           = 0x88\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfAnnounceMsghdr = 0x18\n\tSizeofRtMsghdr         = 0x78\n\tSizeofRtMetrics        = 0x50\n)\n\ntype IfMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tAddrs     int32\n\tFlags     int32\n\tIndex     uint16\n\tPad_cgo_0 [2]byte\n\tData      IfData\n}\n\ntype IfData struct {\n\tType       uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tPad_cgo_0  [1]byte\n\tLink_state int32\n\tMtu        uint64\n\tMetric     uint64\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tNoproto    uint64\n\tLastchange Timespec\n}\n\ntype IfaMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tAddrs     int32\n\tFlags     int32\n\tMetric    int32\n\tIndex     uint16\n\tPad_cgo_0 [6]byte\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tName    [16]int8\n\tWhat    uint16\n}\n\ntype RtMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tIndex     uint16\n\tPad_cgo_0 [2]byte\n\tFlags     int32\n\tAddrs     int32\n\tPid       int32\n\tSeq       int32\n\tErrno     int32\n\tUse       int32\n\tInits     int32\n\tPad_cgo_1 [4]byte\n\tRmx       RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint64\n\tMtu      uint64\n\tHopcount uint64\n\tRecvpipe uint64\n\tSendpipe uint64\n\tSsthresh uint64\n\tRtt      uint64\n\tRttvar   uint64\n\tExpire   int64\n\tPksent   int64\n}\n\ntype Mclpool [0]byte\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x80\n\tSizeofBpfProgram = 0x10\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x20\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv    uint64\n\tDrop    uint64\n\tCapt    uint64\n\tPadding [13]uint64\n}\n\ntype BpfProgram struct {\n\tLen       uint32\n\tPad_cgo_0 [4]byte\n\tInsns     *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp    BpfTimeval\n\tCaplen    uint32\n\tDatalen   uint32\n\tHdrlen    uint16\n\tPad_cgo_0 [6]byte\n}\n\ntype BpfTimeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\ntype Ptmget struct {\n\tCfd int32\n\tSfd int32\n\tCn  [1024]byte\n\tSn  [1024]byte\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x100\n\tAT_SYMLINK_NOFOLLOW = 0x200\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_REMOVEDIR        = 0x800\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Sysctlnode struct {\n\tFlags           uint32\n\tNum             int32\n\tName            [32]int8\n\tVer             uint32\n\tX__rsvd         uint32\n\tUn              [16]byte\n\tX_sysctl_size   [8]byte\n\tX_sysctl_func   [8]byte\n\tX_sysctl_parent [8]byte\n\tX_sysctl_desc   [8]byte\n}\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofUvmexp = 0x278\n\ntype Uvmexp struct {\n\tPagesize           int64\n\tPagemask           int64\n\tPageshift          int64\n\tNpages             int64\n\tFree               int64\n\tActive             int64\n\tInactive           int64\n\tPaging             int64\n\tWired              int64\n\tZeropages          int64\n\tReserve_pagedaemon int64\n\tReserve_kernel     int64\n\tFreemin            int64\n\tFreetarg           int64\n\tInactarg           int64\n\tWiredmax           int64\n\tNswapdev           int64\n\tSwpages            int64\n\tSwpginuse          int64\n\tSwpgonly           int64\n\tNswget             int64\n\tUnused1            int64\n\tCpuhit             int64\n\tCpumiss            int64\n\tFaults             int64\n\tTraps              int64\n\tIntrs              int64\n\tSwtch              int64\n\tSofts              int64\n\tSyscalls           int64\n\tPageins            int64\n\tSwapins            int64\n\tSwapouts           int64\n\tPgswapin           int64\n\tPgswapout          int64\n\tForks              int64\n\tForks_ppwait       int64\n\tForks_sharevm      int64\n\tPga_zerohit        int64\n\tPga_zeromiss       int64\n\tZeroaborts         int64\n\tFltnoram           int64\n\tFltnoanon          int64\n\tFltpgwait          int64\n\tFltpgrele          int64\n\tFltrelck           int64\n\tFltrelckok         int64\n\tFltanget           int64\n\tFltanretry         int64\n\tFltamcopy          int64\n\tFltnamap           int64\n\tFltnomap           int64\n\tFltlget            int64\n\tFltget             int64\n\tFlt_anon           int64\n\tFlt_acow           int64\n\tFlt_obj            int64\n\tFlt_prcopy         int64\n\tFlt_przero         int64\n\tPdwoke             int64\n\tPdrevs             int64\n\tUnused4            int64\n\tPdfreed            int64\n\tPdscans            int64\n\tPdanscan           int64\n\tPdobscan           int64\n\tPdreact            int64\n\tPdbusy             int64\n\tPdpageouts         int64\n\tPdpending          int64\n\tPddeact            int64\n\tAnonpages          int64\n\tFilepages          int64\n\tExecpages          int64\n\tColorhit           int64\n\tColormiss          int64\n\tNcolors            int64\n\tBootpages          int64\n\tPoolpages          int64\n}\n\nconst SizeofClockinfo = 0x14\n\ntype Clockinfo struct {\n\tHz      int32\n\tTick    int32\n\tTickadj int32\n\tStathz  int32\n\tProfhz  int32\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go",
    "content": "// cgo -godefs types_netbsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm && netbsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x4\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x4\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int32\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec       int64\n\tNsec      int32\n\tPad_cgo_0 [4]byte\n}\n\ntype Timeval struct {\n\tSec       int64\n\tUsec      int32\n\tPad_cgo_0 [4]byte\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tDev     uint64\n\tMode    uint32\n\t_       [4]byte\n\tIno     uint64\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\t_       [4]byte\n\tRdev    uint64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize uint32\n\tFlags   uint32\n\tGen     uint32\n\tSpare   [2]uint32\n\t_       [4]byte\n}\n\ntype Statfs_t [0]byte\n\ntype Statvfs_t struct {\n\tFlag        uint32\n\tBsize       uint32\n\tFrsize      uint32\n\tIosize      uint32\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      uint64\n\tBresvd      uint64\n\tFiles       uint64\n\tFfree       uint64\n\tFavail      uint64\n\tFresvd      uint64\n\tSyncreads   uint64\n\tSyncwrites  uint64\n\tAsyncreads  uint64\n\tAsyncwrites uint64\n\tFsidx       Fsid\n\tFsid        uint32\n\tNamemax     uint32\n\tOwner       uint32\n\tSpare       [4]uint64\n\tFstypename  [32]byte\n\tMntonname   [1024]byte\n\tMntfromname [1024]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno    uint64\n\tReclen    uint16\n\tNamlen    uint16\n\tType      uint8\n\tName      [512]int8\n\tPad_cgo_0 [3]byte\n}\n\ntype Fsid struct {\n\tX__fsid_val [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\nconst (\n\tST_WAIT   = 0x1\n\tST_NOWAIT = 0x2\n)\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [12]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x14\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x8\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x1c\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent     uint32\n\tFilter    uint32\n\tFlags     uint32\n\tFflags    uint32\n\tData      int64\n\tUdata     int32\n\tPad_cgo_0 [4]byte\n}\n\ntype FdSet struct {\n\tBits [8]uint32\n}\n\nconst (\n\tSizeofIfMsghdr         = 0x98\n\tSizeofIfData           = 0x88\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfAnnounceMsghdr = 0x18\n\tSizeofRtMsghdr         = 0x78\n\tSizeofRtMetrics        = 0x50\n)\n\ntype IfMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tAddrs     int32\n\tFlags     int32\n\tIndex     uint16\n\tPad_cgo_0 [2]byte\n\tData      IfData\n}\n\ntype IfData struct {\n\tType       uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tPad_cgo_0  [1]byte\n\tLink_state int32\n\tMtu        uint64\n\tMetric     uint64\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tNoproto    uint64\n\tLastchange Timespec\n}\n\ntype IfaMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tAddrs     int32\n\tFlags     int32\n\tMetric    int32\n\tIndex     uint16\n\tPad_cgo_0 [6]byte\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tName    [16]int8\n\tWhat    uint16\n}\n\ntype RtMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tIndex     uint16\n\tPad_cgo_0 [2]byte\n\tFlags     int32\n\tAddrs     int32\n\tPid       int32\n\tSeq       int32\n\tErrno     int32\n\tUse       int32\n\tInits     int32\n\tPad_cgo_1 [4]byte\n\tRmx       RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint64\n\tMtu      uint64\n\tHopcount uint64\n\tRecvpipe uint64\n\tSendpipe uint64\n\tSsthresh uint64\n\tRtt      uint64\n\tRttvar   uint64\n\tExpire   int64\n\tPksent   int64\n}\n\ntype Mclpool [0]byte\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x80\n\tSizeofBpfProgram = 0x8\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x14\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv    uint64\n\tDrop    uint64\n\tCapt    uint64\n\tPadding [13]uint64\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp    BpfTimeval\n\tCaplen    uint32\n\tDatalen   uint32\n\tHdrlen    uint16\n\tPad_cgo_0 [2]byte\n}\n\ntype BpfTimeval struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\ntype Ptmget struct {\n\tCfd int32\n\tSfd int32\n\tCn  [1024]byte\n\tSn  [1024]byte\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x100\n\tAT_SYMLINK_NOFOLLOW = 0x200\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_REMOVEDIR        = 0x800\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Sysctlnode struct {\n\tFlags           uint32\n\tNum             int32\n\tName            [32]int8\n\tVer             uint32\n\tX__rsvd         uint32\n\tUn              [16]byte\n\tX_sysctl_size   [8]byte\n\tX_sysctl_func   [8]byte\n\tX_sysctl_parent [8]byte\n\tX_sysctl_desc   [8]byte\n}\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofUvmexp = 0x278\n\ntype Uvmexp struct {\n\tPagesize           int64\n\tPagemask           int64\n\tPageshift          int64\n\tNpages             int64\n\tFree               int64\n\tActive             int64\n\tInactive           int64\n\tPaging             int64\n\tWired              int64\n\tZeropages          int64\n\tReserve_pagedaemon int64\n\tReserve_kernel     int64\n\tFreemin            int64\n\tFreetarg           int64\n\tInactarg           int64\n\tWiredmax           int64\n\tNswapdev           int64\n\tSwpages            int64\n\tSwpginuse          int64\n\tSwpgonly           int64\n\tNswget             int64\n\tUnused1            int64\n\tCpuhit             int64\n\tCpumiss            int64\n\tFaults             int64\n\tTraps              int64\n\tIntrs              int64\n\tSwtch              int64\n\tSofts              int64\n\tSyscalls           int64\n\tPageins            int64\n\tSwapins            int64\n\tSwapouts           int64\n\tPgswapin           int64\n\tPgswapout          int64\n\tForks              int64\n\tForks_ppwait       int64\n\tForks_sharevm      int64\n\tPga_zerohit        int64\n\tPga_zeromiss       int64\n\tZeroaborts         int64\n\tFltnoram           int64\n\tFltnoanon          int64\n\tFltpgwait          int64\n\tFltpgrele          int64\n\tFltrelck           int64\n\tFltrelckok         int64\n\tFltanget           int64\n\tFltanretry         int64\n\tFltamcopy          int64\n\tFltnamap           int64\n\tFltnomap           int64\n\tFltlget            int64\n\tFltget             int64\n\tFlt_anon           int64\n\tFlt_acow           int64\n\tFlt_obj            int64\n\tFlt_prcopy         int64\n\tFlt_przero         int64\n\tPdwoke             int64\n\tPdrevs             int64\n\tUnused4            int64\n\tPdfreed            int64\n\tPdscans            int64\n\tPdanscan           int64\n\tPdobscan           int64\n\tPdreact            int64\n\tPdbusy             int64\n\tPdpageouts         int64\n\tPdpending          int64\n\tPddeact            int64\n\tAnonpages          int64\n\tFilepages          int64\n\tExecpages          int64\n\tColorhit           int64\n\tColormiss          int64\n\tNcolors            int64\n\tBootpages          int64\n\tPoolpages          int64\n}\n\nconst SizeofClockinfo = 0x14\n\ntype Clockinfo struct {\n\tHz      int32\n\tTick    int32\n\tTickadj int32\n\tStathz  int32\n\tProfhz  int32\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go",
    "content": "// cgo -godefs types_netbsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && netbsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec       int64\n\tUsec      int32\n\tPad_cgo_0 [4]byte\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tDev     uint64\n\tMode    uint32\n\t_       [4]byte\n\tIno     uint64\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\t_       [4]byte\n\tRdev    uint64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize uint32\n\tFlags   uint32\n\tGen     uint32\n\tSpare   [2]uint32\n\t_       [4]byte\n}\n\ntype Statfs_t [0]byte\n\ntype Statvfs_t struct {\n\tFlag        uint64\n\tBsize       uint64\n\tFrsize      uint64\n\tIosize      uint64\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      uint64\n\tBresvd      uint64\n\tFiles       uint64\n\tFfree       uint64\n\tFavail      uint64\n\tFresvd      uint64\n\tSyncreads   uint64\n\tSyncwrites  uint64\n\tAsyncreads  uint64\n\tAsyncwrites uint64\n\tFsidx       Fsid\n\tFsid        uint64\n\tNamemax     uint64\n\tOwner       uint32\n\tSpare       [4]uint32\n\tFstypename  [32]byte\n\tMntonname   [1024]byte\n\tMntfromname [1024]byte\n\t_           [4]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno    uint64\n\tReclen    uint16\n\tNamlen    uint16\n\tType      uint8\n\tName      [512]int8\n\tPad_cgo_0 [3]byte\n}\n\ntype Fsid struct {\n\tX__fsid_val [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\nconst (\n\tST_WAIT   = 0x1\n\tST_NOWAIT = 0x2\n)\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [12]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tPad_cgo_0  [4]byte\n\tIov        *Iovec\n\tIovlen     int32\n\tPad_cgo_1  [4]byte\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x14\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent     uint64\n\tFilter    uint32\n\tFlags     uint32\n\tFflags    uint32\n\tPad_cgo_0 [4]byte\n\tData      int64\n\tUdata     int64\n}\n\ntype FdSet struct {\n\tBits [8]uint32\n}\n\nconst (\n\tSizeofIfMsghdr         = 0x98\n\tSizeofIfData           = 0x88\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfAnnounceMsghdr = 0x18\n\tSizeofRtMsghdr         = 0x78\n\tSizeofRtMetrics        = 0x50\n)\n\ntype IfMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tAddrs     int32\n\tFlags     int32\n\tIndex     uint16\n\tPad_cgo_0 [2]byte\n\tData      IfData\n}\n\ntype IfData struct {\n\tType       uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tPad_cgo_0  [1]byte\n\tLink_state int32\n\tMtu        uint64\n\tMetric     uint64\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tNoproto    uint64\n\tLastchange Timespec\n}\n\ntype IfaMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tAddrs     int32\n\tFlags     int32\n\tMetric    int32\n\tIndex     uint16\n\tPad_cgo_0 [6]byte\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tName    [16]int8\n\tWhat    uint16\n}\n\ntype RtMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tIndex     uint16\n\tPad_cgo_0 [2]byte\n\tFlags     int32\n\tAddrs     int32\n\tPid       int32\n\tSeq       int32\n\tErrno     int32\n\tUse       int32\n\tInits     int32\n\tPad_cgo_1 [4]byte\n\tRmx       RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint64\n\tMtu      uint64\n\tHopcount uint64\n\tRecvpipe uint64\n\tSendpipe uint64\n\tSsthresh uint64\n\tRtt      uint64\n\tRttvar   uint64\n\tExpire   int64\n\tPksent   int64\n}\n\ntype Mclpool [0]byte\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x80\n\tSizeofBpfProgram = 0x10\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x20\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv    uint64\n\tDrop    uint64\n\tCapt    uint64\n\tPadding [13]uint64\n}\n\ntype BpfProgram struct {\n\tLen       uint32\n\tPad_cgo_0 [4]byte\n\tInsns     *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp    BpfTimeval\n\tCaplen    uint32\n\tDatalen   uint32\n\tHdrlen    uint16\n\tPad_cgo_0 [6]byte\n}\n\ntype BpfTimeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\ntype Ptmget struct {\n\tCfd int32\n\tSfd int32\n\tCn  [1024]byte\n\tSn  [1024]byte\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x100\n\tAT_SYMLINK_NOFOLLOW = 0x200\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_REMOVEDIR        = 0x800\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Sysctlnode struct {\n\tFlags           uint32\n\tNum             int32\n\tName            [32]int8\n\tVer             uint32\n\tX__rsvd         uint32\n\tUn              [16]byte\n\tX_sysctl_size   [8]byte\n\tX_sysctl_func   [8]byte\n\tX_sysctl_parent [8]byte\n\tX_sysctl_desc   [8]byte\n}\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofUvmexp = 0x278\n\ntype Uvmexp struct {\n\tPagesize           int64\n\tPagemask           int64\n\tPageshift          int64\n\tNpages             int64\n\tFree               int64\n\tActive             int64\n\tInactive           int64\n\tPaging             int64\n\tWired              int64\n\tZeropages          int64\n\tReserve_pagedaemon int64\n\tReserve_kernel     int64\n\tFreemin            int64\n\tFreetarg           int64\n\tInactarg           int64\n\tWiredmax           int64\n\tNswapdev           int64\n\tSwpages            int64\n\tSwpginuse          int64\n\tSwpgonly           int64\n\tNswget             int64\n\tUnused1            int64\n\tCpuhit             int64\n\tCpumiss            int64\n\tFaults             int64\n\tTraps              int64\n\tIntrs              int64\n\tSwtch              int64\n\tSofts              int64\n\tSyscalls           int64\n\tPageins            int64\n\tSwapins            int64\n\tSwapouts           int64\n\tPgswapin           int64\n\tPgswapout          int64\n\tForks              int64\n\tForks_ppwait       int64\n\tForks_sharevm      int64\n\tPga_zerohit        int64\n\tPga_zeromiss       int64\n\tZeroaborts         int64\n\tFltnoram           int64\n\tFltnoanon          int64\n\tFltpgwait          int64\n\tFltpgrele          int64\n\tFltrelck           int64\n\tFltrelckok         int64\n\tFltanget           int64\n\tFltanretry         int64\n\tFltamcopy          int64\n\tFltnamap           int64\n\tFltnomap           int64\n\tFltlget            int64\n\tFltget             int64\n\tFlt_anon           int64\n\tFlt_acow           int64\n\tFlt_obj            int64\n\tFlt_prcopy         int64\n\tFlt_przero         int64\n\tPdwoke             int64\n\tPdrevs             int64\n\tUnused4            int64\n\tPdfreed            int64\n\tPdscans            int64\n\tPdanscan           int64\n\tPdobscan           int64\n\tPdreact            int64\n\tPdbusy             int64\n\tPdpageouts         int64\n\tPdpending          int64\n\tPddeact            int64\n\tAnonpages          int64\n\tFilepages          int64\n\tExecpages          int64\n\tColorhit           int64\n\tColormiss          int64\n\tNcolors            int64\n\tBootpages          int64\n\tPoolpages          int64\n}\n\nconst SizeofClockinfo = 0x14\n\ntype Clockinfo struct {\n\tHz      int32\n\tTick    int32\n\tTickadj int32\n\tStathz  int32\n\tProfhz  int32\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go",
    "content": "// cgo -godefs types_openbsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build 386 && openbsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x4\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x4\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int32\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int32\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tMode    uint32\n\tDev     int32\n\tIno     uint64\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    int32\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint32\n\t_       Timespec\n}\n\ntype Statfs_t struct {\n\tF_flags       uint32\n\tF_bsize       uint32\n\tF_iosize      uint32\n\tF_blocks      uint64\n\tF_bfree       uint64\n\tF_bavail      int64\n\tF_files       uint64\n\tF_ffree       uint64\n\tF_favail      int64\n\tF_syncwrites  uint64\n\tF_syncreads   uint64\n\tF_asyncwrites uint64\n\tF_asyncreads  uint64\n\tF_fsid        Fsid\n\tF_namemax     uint32\n\tF_owner       uint32\n\tF_ctime       uint64\n\tF_fstypename  [16]byte\n\tF_mntonname   [90]byte\n\tF_mntfromname [90]byte\n\tF_mntfromspec [90]byte\n\t_             [2]byte\n\tMount_info    [160]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tNamlen uint8\n\t_      [4]uint8\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [24]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x20\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x8\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x1c\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint32\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n}\n\ntype FdSet struct {\n\tBits [32]uint32\n}\n\nconst (\n\tSizeofIfMsghdr         = 0xa0\n\tSizeofIfData           = 0x88\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfAnnounceMsghdr = 0x1a\n\tSizeofRtMsghdr         = 0x60\n\tSizeofRtMetrics        = 0x38\n)\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tXflags  int32\n\tData    IfData\n}\n\ntype IfData struct {\n\tType         uint8\n\tAddrlen      uint8\n\tHdrlen       uint8\n\tLink_state   uint8\n\tMtu          uint32\n\tMetric       uint32\n\tRdomain      uint32\n\tBaudrate     uint64\n\tIpackets     uint64\n\tIerrors      uint64\n\tOpackets     uint64\n\tOerrors      uint64\n\tCollisions   uint64\n\tIbytes       uint64\n\tObytes       uint64\n\tImcasts      uint64\n\tOmcasts      uint64\n\tIqdrops      uint64\n\tOqdrops      uint64\n\tNoproto      uint64\n\tCapabilities uint32\n\tLastchange   Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tMetric  int32\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tWhat    uint16\n\tName    [16]int8\n}\n\ntype RtMsghdr struct {\n\tMsglen   uint16\n\tVersion  uint8\n\tType     uint8\n\tHdrlen   uint16\n\tIndex    uint16\n\tTableid  uint16\n\tPriority uint8\n\tMpls     uint8\n\tAddrs    int32\n\tFlags    int32\n\tFmask    int32\n\tPid      int32\n\tSeq      int32\n\tErrno    int32\n\tInits    uint32\n\tRmx      RtMetrics\n}\n\ntype RtMetrics struct {\n\tPksent   uint64\n\tExpire   int64\n\tLocks    uint32\n\tMtu      uint32\n\tRefcnt   uint32\n\tHopcount uint32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPad      uint32\n}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x8\n\tSizeofBpfProgram = 0x8\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x18\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  BpfTimeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\tIfidx   uint16\n\tFlowid  uint16\n\tFlags   uint8\n\tDrops   uint8\n}\n\ntype BpfTimeval struct {\n\tSec  uint32\n\tUsec uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x1\n\tAT_SYMLINK_NOFOLLOW = 0x2\n\tAT_SYMLINK_FOLLOW   = 0x4\n\tAT_REMOVEDIR        = 0x8\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Sigset_t uint32\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofUvmexp = 0x158\n\ntype Uvmexp struct {\n\tPagesize           int32\n\tPagemask           int32\n\tPageshift          int32\n\tNpages             int32\n\tFree               int32\n\tActive             int32\n\tInactive           int32\n\tPaging             int32\n\tWired              int32\n\tZeropages          int32\n\tReserve_pagedaemon int32\n\tReserve_kernel     int32\n\tUnused01           int32\n\tVnodepages         int32\n\tVtextpages         int32\n\tFreemin            int32\n\tFreetarg           int32\n\tInactarg           int32\n\tWiredmax           int32\n\tAnonmin            int32\n\tVtextmin           int32\n\tVnodemin           int32\n\tAnonminpct         int32\n\tVtextminpct        int32\n\tVnodeminpct        int32\n\tNswapdev           int32\n\tSwpages            int32\n\tSwpginuse          int32\n\tSwpgonly           int32\n\tNswget             int32\n\tNanon              int32\n\tUnused05           int32\n\tUnused06           int32\n\tFaults             int32\n\tTraps              int32\n\tIntrs              int32\n\tSwtch              int32\n\tSofts              int32\n\tSyscalls           int32\n\tPageins            int32\n\tUnused07           int32\n\tUnused08           int32\n\tPgswapin           int32\n\tPgswapout          int32\n\tForks              int32\n\tForks_ppwait       int32\n\tForks_sharevm      int32\n\tPga_zerohit        int32\n\tPga_zeromiss       int32\n\tUnused09           int32\n\tFltnoram           int32\n\tFltnoanon          int32\n\tFltnoamap          int32\n\tFltpgwait          int32\n\tFltpgrele          int32\n\tFltrelck           int32\n\tFltrelckok         int32\n\tFltanget           int32\n\tFltanretry         int32\n\tFltamcopy          int32\n\tFltnamap           int32\n\tFltnomap           int32\n\tFltlget            int32\n\tFltget             int32\n\tFlt_anon           int32\n\tFlt_acow           int32\n\tFlt_obj            int32\n\tFlt_prcopy         int32\n\tFlt_przero         int32\n\tPdwoke             int32\n\tPdrevs             int32\n\tPdswout            int32\n\tPdfreed            int32\n\tPdscans            int32\n\tPdanscan           int32\n\tPdobscan           int32\n\tPdreact            int32\n\tPdbusy             int32\n\tPdpageouts         int32\n\tPdpending          int32\n\tPddeact            int32\n\tUnused11           int32\n\tUnused12           int32\n\tUnused13           int32\n\tFpswtch            int32\n\tKmapent            int32\n}\n\nconst SizeofClockinfo = 0x10\n\ntype Clockinfo struct {\n\tHz     int32\n\tTick   int32\n\tStathz int32\n\tProfhz int32\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go",
    "content": "// cgo -godefs types_openbsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && openbsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tMode    uint32\n\tDev     int32\n\tIno     uint64\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    int32\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint32\n\t_       Timespec\n}\n\ntype Statfs_t struct {\n\tF_flags       uint32\n\tF_bsize       uint32\n\tF_iosize      uint32\n\tF_blocks      uint64\n\tF_bfree       uint64\n\tF_bavail      int64\n\tF_files       uint64\n\tF_ffree       uint64\n\tF_favail      int64\n\tF_syncwrites  uint64\n\tF_syncreads   uint64\n\tF_asyncwrites uint64\n\tF_asyncreads  uint64\n\tF_fsid        Fsid\n\tF_namemax     uint32\n\tF_owner       uint32\n\tF_ctime       uint64\n\tF_fstypename  [16]byte\n\tF_mntonname   [90]byte\n\tF_mntfromname [90]byte\n\tF_mntfromspec [90]byte\n\t_             [2]byte\n\tMount_info    [160]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tNamlen uint8\n\t_      [4]uint8\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [24]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x20\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint64\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n}\n\ntype FdSet struct {\n\tBits [32]uint32\n}\n\nconst (\n\tSizeofIfMsghdr         = 0xa8\n\tSizeofIfData           = 0x90\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfAnnounceMsghdr = 0x1a\n\tSizeofRtMsghdr         = 0x60\n\tSizeofRtMetrics        = 0x38\n)\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tXflags  int32\n\tData    IfData\n}\n\ntype IfData struct {\n\tType         uint8\n\tAddrlen      uint8\n\tHdrlen       uint8\n\tLink_state   uint8\n\tMtu          uint32\n\tMetric       uint32\n\tRdomain      uint32\n\tBaudrate     uint64\n\tIpackets     uint64\n\tIerrors      uint64\n\tOpackets     uint64\n\tOerrors      uint64\n\tCollisions   uint64\n\tIbytes       uint64\n\tObytes       uint64\n\tImcasts      uint64\n\tOmcasts      uint64\n\tIqdrops      uint64\n\tOqdrops      uint64\n\tNoproto      uint64\n\tCapabilities uint32\n\tLastchange   Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tMetric  int32\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tWhat    uint16\n\tName    [16]int8\n}\n\ntype RtMsghdr struct {\n\tMsglen   uint16\n\tVersion  uint8\n\tType     uint8\n\tHdrlen   uint16\n\tIndex    uint16\n\tTableid  uint16\n\tPriority uint8\n\tMpls     uint8\n\tAddrs    int32\n\tFlags    int32\n\tFmask    int32\n\tPid      int32\n\tSeq      int32\n\tErrno    int32\n\tInits    uint32\n\tRmx      RtMetrics\n}\n\ntype RtMetrics struct {\n\tPksent   uint64\n\tExpire   int64\n\tLocks    uint32\n\tMtu      uint32\n\tRefcnt   uint32\n\tHopcount uint32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPad      uint32\n}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x8\n\tSizeofBpfProgram = 0x10\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x18\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  BpfTimeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\tIfidx   uint16\n\tFlowid  uint16\n\tFlags   uint8\n\tDrops   uint8\n}\n\ntype BpfTimeval struct {\n\tSec  uint32\n\tUsec uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x1\n\tAT_SYMLINK_NOFOLLOW = 0x2\n\tAT_SYMLINK_FOLLOW   = 0x4\n\tAT_REMOVEDIR        = 0x8\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Sigset_t uint32\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofUvmexp = 0x158\n\ntype Uvmexp struct {\n\tPagesize           int32\n\tPagemask           int32\n\tPageshift          int32\n\tNpages             int32\n\tFree               int32\n\tActive             int32\n\tInactive           int32\n\tPaging             int32\n\tWired              int32\n\tZeropages          int32\n\tReserve_pagedaemon int32\n\tReserve_kernel     int32\n\tUnused01           int32\n\tVnodepages         int32\n\tVtextpages         int32\n\tFreemin            int32\n\tFreetarg           int32\n\tInactarg           int32\n\tWiredmax           int32\n\tAnonmin            int32\n\tVtextmin           int32\n\tVnodemin           int32\n\tAnonminpct         int32\n\tVtextminpct        int32\n\tVnodeminpct        int32\n\tNswapdev           int32\n\tSwpages            int32\n\tSwpginuse          int32\n\tSwpgonly           int32\n\tNswget             int32\n\tNanon              int32\n\tUnused05           int32\n\tUnused06           int32\n\tFaults             int32\n\tTraps              int32\n\tIntrs              int32\n\tSwtch              int32\n\tSofts              int32\n\tSyscalls           int32\n\tPageins            int32\n\tUnused07           int32\n\tUnused08           int32\n\tPgswapin           int32\n\tPgswapout          int32\n\tForks              int32\n\tForks_ppwait       int32\n\tForks_sharevm      int32\n\tPga_zerohit        int32\n\tPga_zeromiss       int32\n\tUnused09           int32\n\tFltnoram           int32\n\tFltnoanon          int32\n\tFltnoamap          int32\n\tFltpgwait          int32\n\tFltpgrele          int32\n\tFltrelck           int32\n\tFltrelckok         int32\n\tFltanget           int32\n\tFltanretry         int32\n\tFltamcopy          int32\n\tFltnamap           int32\n\tFltnomap           int32\n\tFltlget            int32\n\tFltget             int32\n\tFlt_anon           int32\n\tFlt_acow           int32\n\tFlt_obj            int32\n\tFlt_prcopy         int32\n\tFlt_przero         int32\n\tPdwoke             int32\n\tPdrevs             int32\n\tPdswout            int32\n\tPdfreed            int32\n\tPdscans            int32\n\tPdanscan           int32\n\tPdobscan           int32\n\tPdreact            int32\n\tPdbusy             int32\n\tPdpageouts         int32\n\tPdpending          int32\n\tPddeact            int32\n\tUnused11           int32\n\tUnused12           int32\n\tUnused13           int32\n\tFpswtch            int32\n\tKmapent            int32\n}\n\nconst SizeofClockinfo = 0x10\n\ntype Clockinfo struct {\n\tHz     int32\n\tTick   int32\n\tStathz int32\n\tProfhz int32\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go",
    "content": "// cgo -godefs -- -fsigned-char types_openbsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm && openbsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x4\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x4\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int32\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int32\n\t_    [4]byte\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int32\n\t_    [4]byte\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tMode    uint32\n\tDev     int32\n\tIno     uint64\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    int32\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint32\n\t_       [4]byte\n\t_       Timespec\n}\n\ntype Statfs_t struct {\n\tF_flags       uint32\n\tF_bsize       uint32\n\tF_iosize      uint32\n\t_             [4]byte\n\tF_blocks      uint64\n\tF_bfree       uint64\n\tF_bavail      int64\n\tF_files       uint64\n\tF_ffree       uint64\n\tF_favail      int64\n\tF_syncwrites  uint64\n\tF_syncreads   uint64\n\tF_asyncwrites uint64\n\tF_asyncreads  uint64\n\tF_fsid        Fsid\n\tF_namemax     uint32\n\tF_owner       uint32\n\tF_ctime       uint64\n\tF_fstypename  [16]byte\n\tF_mntonname   [90]byte\n\tF_mntfromname [90]byte\n\tF_mntfromspec [90]byte\n\t_             [2]byte\n\tMount_info    [160]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tNamlen uint8\n\t_      [4]uint8\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [24]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x20\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x8\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x1c\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint32\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\t_      [4]byte\n\tData   int64\n\tUdata  *byte\n\t_      [4]byte\n}\n\ntype FdSet struct {\n\tBits [32]uint32\n}\n\nconst (\n\tSizeofIfMsghdr         = 0xa8\n\tSizeofIfData           = 0x90\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfAnnounceMsghdr = 0x1a\n\tSizeofRtMsghdr         = 0x60\n\tSizeofRtMetrics        = 0x38\n)\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tXflags  int32\n\tData    IfData\n}\n\ntype IfData struct {\n\tType         uint8\n\tAddrlen      uint8\n\tHdrlen       uint8\n\tLink_state   uint8\n\tMtu          uint32\n\tMetric       uint32\n\tRdomain      uint32\n\tBaudrate     uint64\n\tIpackets     uint64\n\tIerrors      uint64\n\tOpackets     uint64\n\tOerrors      uint64\n\tCollisions   uint64\n\tIbytes       uint64\n\tObytes       uint64\n\tImcasts      uint64\n\tOmcasts      uint64\n\tIqdrops      uint64\n\tOqdrops      uint64\n\tNoproto      uint64\n\tCapabilities uint32\n\t_            [4]byte\n\tLastchange   Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tMetric  int32\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tWhat    uint16\n\tName    [16]int8\n}\n\ntype RtMsghdr struct {\n\tMsglen   uint16\n\tVersion  uint8\n\tType     uint8\n\tHdrlen   uint16\n\tIndex    uint16\n\tTableid  uint16\n\tPriority uint8\n\tMpls     uint8\n\tAddrs    int32\n\tFlags    int32\n\tFmask    int32\n\tPid      int32\n\tSeq      int32\n\tErrno    int32\n\tInits    uint32\n\tRmx      RtMetrics\n}\n\ntype RtMetrics struct {\n\tPksent   uint64\n\tExpire   int64\n\tLocks    uint32\n\tMtu      uint32\n\tRefcnt   uint32\n\tHopcount uint32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPad      uint32\n}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x8\n\tSizeofBpfProgram = 0x8\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x18\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  BpfTimeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\tIfidx   uint16\n\tFlowid  uint16\n\tFlags   uint8\n\tDrops   uint8\n}\n\ntype BpfTimeval struct {\n\tSec  uint32\n\tUsec uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x1\n\tAT_SYMLINK_NOFOLLOW = 0x2\n\tAT_SYMLINK_FOLLOW   = 0x4\n\tAT_REMOVEDIR        = 0x8\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Sigset_t uint32\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofUvmexp = 0x158\n\ntype Uvmexp struct {\n\tPagesize           int32\n\tPagemask           int32\n\tPageshift          int32\n\tNpages             int32\n\tFree               int32\n\tActive             int32\n\tInactive           int32\n\tPaging             int32\n\tWired              int32\n\tZeropages          int32\n\tReserve_pagedaemon int32\n\tReserve_kernel     int32\n\tUnused01           int32\n\tVnodepages         int32\n\tVtextpages         int32\n\tFreemin            int32\n\tFreetarg           int32\n\tInactarg           int32\n\tWiredmax           int32\n\tAnonmin            int32\n\tVtextmin           int32\n\tVnodemin           int32\n\tAnonminpct         int32\n\tVtextminpct        int32\n\tVnodeminpct        int32\n\tNswapdev           int32\n\tSwpages            int32\n\tSwpginuse          int32\n\tSwpgonly           int32\n\tNswget             int32\n\tNanon              int32\n\tUnused05           int32\n\tUnused06           int32\n\tFaults             int32\n\tTraps              int32\n\tIntrs              int32\n\tSwtch              int32\n\tSofts              int32\n\tSyscalls           int32\n\tPageins            int32\n\tUnused07           int32\n\tUnused08           int32\n\tPgswapin           int32\n\tPgswapout          int32\n\tForks              int32\n\tForks_ppwait       int32\n\tForks_sharevm      int32\n\tPga_zerohit        int32\n\tPga_zeromiss       int32\n\tUnused09           int32\n\tFltnoram           int32\n\tFltnoanon          int32\n\tFltnoamap          int32\n\tFltpgwait          int32\n\tFltpgrele          int32\n\tFltrelck           int32\n\tFltrelckok         int32\n\tFltanget           int32\n\tFltanretry         int32\n\tFltamcopy          int32\n\tFltnamap           int32\n\tFltnomap           int32\n\tFltlget            int32\n\tFltget             int32\n\tFlt_anon           int32\n\tFlt_acow           int32\n\tFlt_obj            int32\n\tFlt_prcopy         int32\n\tFlt_przero         int32\n\tPdwoke             int32\n\tPdrevs             int32\n\tPdswout            int32\n\tPdfreed            int32\n\tPdscans            int32\n\tPdanscan           int32\n\tPdobscan           int32\n\tPdreact            int32\n\tPdbusy             int32\n\tPdpageouts         int32\n\tPdpending          int32\n\tPddeact            int32\n\tUnused11           int32\n\tUnused12           int32\n\tUnused13           int32\n\tFpswtch            int32\n\tKmapent            int32\n}\n\nconst SizeofClockinfo = 0x10\n\ntype Clockinfo struct {\n\tHz     int32\n\tTick   int32\n\tStathz int32\n\tProfhz int32\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go",
    "content": "// cgo -godefs -- -fsigned-char types_openbsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && openbsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tMode    uint32\n\tDev     int32\n\tIno     uint64\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    int32\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint32\n\t_       Timespec\n}\n\ntype Statfs_t struct {\n\tF_flags       uint32\n\tF_bsize       uint32\n\tF_iosize      uint32\n\tF_blocks      uint64\n\tF_bfree       uint64\n\tF_bavail      int64\n\tF_files       uint64\n\tF_ffree       uint64\n\tF_favail      int64\n\tF_syncwrites  uint64\n\tF_syncreads   uint64\n\tF_asyncwrites uint64\n\tF_asyncreads  uint64\n\tF_fsid        Fsid\n\tF_namemax     uint32\n\tF_owner       uint32\n\tF_ctime       uint64\n\tF_fstypename  [16]byte\n\tF_mntonname   [90]byte\n\tF_mntfromname [90]byte\n\tF_mntfromspec [90]byte\n\t_             [2]byte\n\tMount_info    [160]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tNamlen uint8\n\t_      [4]uint8\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [24]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x20\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint64\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n}\n\ntype FdSet struct {\n\tBits [32]uint32\n}\n\nconst (\n\tSizeofIfMsghdr         = 0xa8\n\tSizeofIfData           = 0x90\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfAnnounceMsghdr = 0x1a\n\tSizeofRtMsghdr         = 0x60\n\tSizeofRtMetrics        = 0x38\n)\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tXflags  int32\n\tData    IfData\n}\n\ntype IfData struct {\n\tType         uint8\n\tAddrlen      uint8\n\tHdrlen       uint8\n\tLink_state   uint8\n\tMtu          uint32\n\tMetric       uint32\n\tRdomain      uint32\n\tBaudrate     uint64\n\tIpackets     uint64\n\tIerrors      uint64\n\tOpackets     uint64\n\tOerrors      uint64\n\tCollisions   uint64\n\tIbytes       uint64\n\tObytes       uint64\n\tImcasts      uint64\n\tOmcasts      uint64\n\tIqdrops      uint64\n\tOqdrops      uint64\n\tNoproto      uint64\n\tCapabilities uint32\n\tLastchange   Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tMetric  int32\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tWhat    uint16\n\tName    [16]int8\n}\n\ntype RtMsghdr struct {\n\tMsglen   uint16\n\tVersion  uint8\n\tType     uint8\n\tHdrlen   uint16\n\tIndex    uint16\n\tTableid  uint16\n\tPriority uint8\n\tMpls     uint8\n\tAddrs    int32\n\tFlags    int32\n\tFmask    int32\n\tPid      int32\n\tSeq      int32\n\tErrno    int32\n\tInits    uint32\n\tRmx      RtMetrics\n}\n\ntype RtMetrics struct {\n\tPksent   uint64\n\tExpire   int64\n\tLocks    uint32\n\tMtu      uint32\n\tRefcnt   uint32\n\tHopcount uint32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPad      uint32\n}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x8\n\tSizeofBpfProgram = 0x10\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x18\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  BpfTimeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\tIfidx   uint16\n\tFlowid  uint16\n\tFlags   uint8\n\tDrops   uint8\n}\n\ntype BpfTimeval struct {\n\tSec  uint32\n\tUsec uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x1\n\tAT_SYMLINK_NOFOLLOW = 0x2\n\tAT_SYMLINK_FOLLOW   = 0x4\n\tAT_REMOVEDIR        = 0x8\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Sigset_t uint32\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofUvmexp = 0x158\n\ntype Uvmexp struct {\n\tPagesize           int32\n\tPagemask           int32\n\tPageshift          int32\n\tNpages             int32\n\tFree               int32\n\tActive             int32\n\tInactive           int32\n\tPaging             int32\n\tWired              int32\n\tZeropages          int32\n\tReserve_pagedaemon int32\n\tReserve_kernel     int32\n\tUnused01           int32\n\tVnodepages         int32\n\tVtextpages         int32\n\tFreemin            int32\n\tFreetarg           int32\n\tInactarg           int32\n\tWiredmax           int32\n\tAnonmin            int32\n\tVtextmin           int32\n\tVnodemin           int32\n\tAnonminpct         int32\n\tVtextminpct        int32\n\tVnodeminpct        int32\n\tNswapdev           int32\n\tSwpages            int32\n\tSwpginuse          int32\n\tSwpgonly           int32\n\tNswget             int32\n\tNanon              int32\n\tUnused05           int32\n\tUnused06           int32\n\tFaults             int32\n\tTraps              int32\n\tIntrs              int32\n\tSwtch              int32\n\tSofts              int32\n\tSyscalls           int32\n\tPageins            int32\n\tUnused07           int32\n\tUnused08           int32\n\tPgswapin           int32\n\tPgswapout          int32\n\tForks              int32\n\tForks_ppwait       int32\n\tForks_sharevm      int32\n\tPga_zerohit        int32\n\tPga_zeromiss       int32\n\tUnused09           int32\n\tFltnoram           int32\n\tFltnoanon          int32\n\tFltnoamap          int32\n\tFltpgwait          int32\n\tFltpgrele          int32\n\tFltrelck           int32\n\tFltrelckok         int32\n\tFltanget           int32\n\tFltanretry         int32\n\tFltamcopy          int32\n\tFltnamap           int32\n\tFltnomap           int32\n\tFltlget            int32\n\tFltget             int32\n\tFlt_anon           int32\n\tFlt_acow           int32\n\tFlt_obj            int32\n\tFlt_prcopy         int32\n\tFlt_przero         int32\n\tPdwoke             int32\n\tPdrevs             int32\n\tPdswout            int32\n\tPdfreed            int32\n\tPdscans            int32\n\tPdanscan           int32\n\tPdobscan           int32\n\tPdreact            int32\n\tPdbusy             int32\n\tPdpageouts         int32\n\tPdpending          int32\n\tPddeact            int32\n\tUnused11           int32\n\tUnused12           int32\n\tUnused13           int32\n\tFpswtch            int32\n\tKmapent            int32\n}\n\nconst SizeofClockinfo = 0x10\n\ntype Clockinfo struct {\n\tHz     int32\n\tTick   int32\n\tStathz int32\n\tProfhz int32\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/ztypes_openbsd_mips64.go",
    "content": "// cgo -godefs -- -fsigned-char types_openbsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mips64 && openbsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tMode    uint32\n\tDev     int32\n\tIno     uint64\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    int32\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint32\n\t_       Timespec\n}\n\ntype Statfs_t struct {\n\tF_flags       uint32\n\tF_bsize       uint32\n\tF_iosize      uint32\n\tF_blocks      uint64\n\tF_bfree       uint64\n\tF_bavail      int64\n\tF_files       uint64\n\tF_ffree       uint64\n\tF_favail      int64\n\tF_syncwrites  uint64\n\tF_syncreads   uint64\n\tF_asyncwrites uint64\n\tF_asyncreads  uint64\n\tF_fsid        Fsid\n\tF_namemax     uint32\n\tF_owner       uint32\n\tF_ctime       uint64\n\tF_fstypename  [16]byte\n\tF_mntonname   [90]byte\n\tF_mntfromname [90]byte\n\tF_mntfromspec [90]byte\n\t_             [2]byte\n\tMount_info    [160]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tNamlen uint8\n\t_      [4]uint8\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [24]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x20\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint64\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n}\n\ntype FdSet struct {\n\tBits [32]uint32\n}\n\nconst (\n\tSizeofIfMsghdr         = 0xa8\n\tSizeofIfData           = 0x90\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfAnnounceMsghdr = 0x1a\n\tSizeofRtMsghdr         = 0x60\n\tSizeofRtMetrics        = 0x38\n)\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tXflags  int32\n\tData    IfData\n}\n\ntype IfData struct {\n\tType         uint8\n\tAddrlen      uint8\n\tHdrlen       uint8\n\tLink_state   uint8\n\tMtu          uint32\n\tMetric       uint32\n\tRdomain      uint32\n\tBaudrate     uint64\n\tIpackets     uint64\n\tIerrors      uint64\n\tOpackets     uint64\n\tOerrors      uint64\n\tCollisions   uint64\n\tIbytes       uint64\n\tObytes       uint64\n\tImcasts      uint64\n\tOmcasts      uint64\n\tIqdrops      uint64\n\tOqdrops      uint64\n\tNoproto      uint64\n\tCapabilities uint32\n\tLastchange   Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tMetric  int32\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tWhat    uint16\n\tName    [16]int8\n}\n\ntype RtMsghdr struct {\n\tMsglen   uint16\n\tVersion  uint8\n\tType     uint8\n\tHdrlen   uint16\n\tIndex    uint16\n\tTableid  uint16\n\tPriority uint8\n\tMpls     uint8\n\tAddrs    int32\n\tFlags    int32\n\tFmask    int32\n\tPid      int32\n\tSeq      int32\n\tErrno    int32\n\tInits    uint32\n\tRmx      RtMetrics\n}\n\ntype RtMetrics struct {\n\tPksent   uint64\n\tExpire   int64\n\tLocks    uint32\n\tMtu      uint32\n\tRefcnt   uint32\n\tHopcount uint32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPad      uint32\n}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x8\n\tSizeofBpfProgram = 0x10\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x18\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  BpfTimeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\tIfidx   uint16\n\tFlowid  uint16\n\tFlags   uint8\n\tDrops   uint8\n}\n\ntype BpfTimeval struct {\n\tSec  uint32\n\tUsec uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x1\n\tAT_SYMLINK_NOFOLLOW = 0x2\n\tAT_SYMLINK_FOLLOW   = 0x4\n\tAT_REMOVEDIR        = 0x8\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Sigset_t uint32\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofUvmexp = 0x158\n\ntype Uvmexp struct {\n\tPagesize           int32\n\tPagemask           int32\n\tPageshift          int32\n\tNpages             int32\n\tFree               int32\n\tActive             int32\n\tInactive           int32\n\tPaging             int32\n\tWired              int32\n\tZeropages          int32\n\tReserve_pagedaemon int32\n\tReserve_kernel     int32\n\tUnused01           int32\n\tVnodepages         int32\n\tVtextpages         int32\n\tFreemin            int32\n\tFreetarg           int32\n\tInactarg           int32\n\tWiredmax           int32\n\tAnonmin            int32\n\tVtextmin           int32\n\tVnodemin           int32\n\tAnonminpct         int32\n\tVtextminpct        int32\n\tVnodeminpct        int32\n\tNswapdev           int32\n\tSwpages            int32\n\tSwpginuse          int32\n\tSwpgonly           int32\n\tNswget             int32\n\tNanon              int32\n\tUnused05           int32\n\tUnused06           int32\n\tFaults             int32\n\tTraps              int32\n\tIntrs              int32\n\tSwtch              int32\n\tSofts              int32\n\tSyscalls           int32\n\tPageins            int32\n\tUnused07           int32\n\tUnused08           int32\n\tPgswapin           int32\n\tPgswapout          int32\n\tForks              int32\n\tForks_ppwait       int32\n\tForks_sharevm      int32\n\tPga_zerohit        int32\n\tPga_zeromiss       int32\n\tUnused09           int32\n\tFltnoram           int32\n\tFltnoanon          int32\n\tFltnoamap          int32\n\tFltpgwait          int32\n\tFltpgrele          int32\n\tFltrelck           int32\n\tFltrelckok         int32\n\tFltanget           int32\n\tFltanretry         int32\n\tFltamcopy          int32\n\tFltnamap           int32\n\tFltnomap           int32\n\tFltlget            int32\n\tFltget             int32\n\tFlt_anon           int32\n\tFlt_acow           int32\n\tFlt_obj            int32\n\tFlt_prcopy         int32\n\tFlt_przero         int32\n\tPdwoke             int32\n\tPdrevs             int32\n\tPdswout            int32\n\tPdfreed            int32\n\tPdscans            int32\n\tPdanscan           int32\n\tPdobscan           int32\n\tPdreact            int32\n\tPdbusy             int32\n\tPdpageouts         int32\n\tPdpending          int32\n\tPddeact            int32\n\tUnused11           int32\n\tUnused12           int32\n\tUnused13           int32\n\tFpswtch            int32\n\tKmapent            int32\n}\n\nconst SizeofClockinfo = 0x10\n\ntype Clockinfo struct {\n\tHz     int32\n\tTick   int32\n\tStathz int32\n\tProfhz int32\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/ztypes_openbsd_ppc64.go",
    "content": "// cgo -godefs -- -fsigned-char types_openbsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc64 && openbsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tMode    uint32\n\tDev     int32\n\tIno     uint64\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    int32\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint32\n\t_       Timespec\n}\n\ntype Statfs_t struct {\n\tF_flags       uint32\n\tF_bsize       uint32\n\tF_iosize      uint32\n\tF_blocks      uint64\n\tF_bfree       uint64\n\tF_bavail      int64\n\tF_files       uint64\n\tF_ffree       uint64\n\tF_favail      int64\n\tF_syncwrites  uint64\n\tF_syncreads   uint64\n\tF_asyncwrites uint64\n\tF_asyncreads  uint64\n\tF_fsid        Fsid\n\tF_namemax     uint32\n\tF_owner       uint32\n\tF_ctime       uint64\n\tF_fstypename  [16]byte\n\tF_mntonname   [90]byte\n\tF_mntfromname [90]byte\n\tF_mntfromspec [90]byte\n\t_             [2]byte\n\tMount_info    [160]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tNamlen uint8\n\t_      [4]uint8\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [24]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x20\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint64\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n}\n\ntype FdSet struct {\n\tBits [32]uint32\n}\n\nconst (\n\tSizeofIfMsghdr         = 0xa8\n\tSizeofIfData           = 0x90\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfAnnounceMsghdr = 0x1a\n\tSizeofRtMsghdr         = 0x60\n\tSizeofRtMetrics        = 0x38\n)\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tXflags  int32\n\tData    IfData\n}\n\ntype IfData struct {\n\tType         uint8\n\tAddrlen      uint8\n\tHdrlen       uint8\n\tLink_state   uint8\n\tMtu          uint32\n\tMetric       uint32\n\tRdomain      uint32\n\tBaudrate     uint64\n\tIpackets     uint64\n\tIerrors      uint64\n\tOpackets     uint64\n\tOerrors      uint64\n\tCollisions   uint64\n\tIbytes       uint64\n\tObytes       uint64\n\tImcasts      uint64\n\tOmcasts      uint64\n\tIqdrops      uint64\n\tOqdrops      uint64\n\tNoproto      uint64\n\tCapabilities uint32\n\tLastchange   Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tMetric  int32\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tWhat    uint16\n\tName    [16]int8\n}\n\ntype RtMsghdr struct {\n\tMsglen   uint16\n\tVersion  uint8\n\tType     uint8\n\tHdrlen   uint16\n\tIndex    uint16\n\tTableid  uint16\n\tPriority uint8\n\tMpls     uint8\n\tAddrs    int32\n\tFlags    int32\n\tFmask    int32\n\tPid      int32\n\tSeq      int32\n\tErrno    int32\n\tInits    uint32\n\tRmx      RtMetrics\n}\n\ntype RtMetrics struct {\n\tPksent   uint64\n\tExpire   int64\n\tLocks    uint32\n\tMtu      uint32\n\tRefcnt   uint32\n\tHopcount uint32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPad      uint32\n}\n\ntype Mclpool struct{}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x8\n\tSizeofBpfProgram = 0x10\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x18\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  BpfTimeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\tIfidx   uint16\n\tFlowid  uint16\n\tFlags   uint8\n\tDrops   uint8\n}\n\ntype BpfTimeval struct {\n\tSec  uint32\n\tUsec uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x1\n\tAT_SYMLINK_NOFOLLOW = 0x2\n\tAT_SYMLINK_FOLLOW   = 0x4\n\tAT_REMOVEDIR        = 0x8\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Sigset_t uint32\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofUvmexp = 0x158\n\ntype Uvmexp struct {\n\tPagesize           int32\n\tPagemask           int32\n\tPageshift          int32\n\tNpages             int32\n\tFree               int32\n\tActive             int32\n\tInactive           int32\n\tPaging             int32\n\tWired              int32\n\tZeropages          int32\n\tReserve_pagedaemon int32\n\tReserve_kernel     int32\n\tUnused01           int32\n\tVnodepages         int32\n\tVtextpages         int32\n\tFreemin            int32\n\tFreetarg           int32\n\tInactarg           int32\n\tWiredmax           int32\n\tAnonmin            int32\n\tVtextmin           int32\n\tVnodemin           int32\n\tAnonminpct         int32\n\tVtextminpct        int32\n\tVnodeminpct        int32\n\tNswapdev           int32\n\tSwpages            int32\n\tSwpginuse          int32\n\tSwpgonly           int32\n\tNswget             int32\n\tNanon              int32\n\tUnused05           int32\n\tUnused06           int32\n\tFaults             int32\n\tTraps              int32\n\tIntrs              int32\n\tSwtch              int32\n\tSofts              int32\n\tSyscalls           int32\n\tPageins            int32\n\tUnused07           int32\n\tUnused08           int32\n\tPgswapin           int32\n\tPgswapout          int32\n\tForks              int32\n\tForks_ppwait       int32\n\tForks_sharevm      int32\n\tPga_zerohit        int32\n\tPga_zeromiss       int32\n\tUnused09           int32\n\tFltnoram           int32\n\tFltnoanon          int32\n\tFltnoamap          int32\n\tFltpgwait          int32\n\tFltpgrele          int32\n\tFltrelck           int32\n\tFltrelckok         int32\n\tFltanget           int32\n\tFltanretry         int32\n\tFltamcopy          int32\n\tFltnamap           int32\n\tFltnomap           int32\n\tFltlget            int32\n\tFltget             int32\n\tFlt_anon           int32\n\tFlt_acow           int32\n\tFlt_obj            int32\n\tFlt_prcopy         int32\n\tFlt_przero         int32\n\tPdwoke             int32\n\tPdrevs             int32\n\tPdswout            int32\n\tPdfreed            int32\n\tPdscans            int32\n\tPdanscan           int32\n\tPdobscan           int32\n\tPdreact            int32\n\tPdbusy             int32\n\tPdpageouts         int32\n\tPdpending          int32\n\tPddeact            int32\n\tUnused11           int32\n\tUnused12           int32\n\tUnused13           int32\n\tFpswtch            int32\n\tKmapent            int32\n}\n\nconst SizeofClockinfo = 0x10\n\ntype Clockinfo struct {\n\tHz     int32\n\tTick   int32\n\tStathz int32\n\tProfhz int32\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/ztypes_openbsd_riscv64.go",
    "content": "// cgo -godefs -- -fsigned-char types_openbsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build riscv64 && openbsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tMode    uint32\n\tDev     int32\n\tIno     uint64\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    int32\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint32\n\t_       Timespec\n}\n\ntype Statfs_t struct {\n\tF_flags       uint32\n\tF_bsize       uint32\n\tF_iosize      uint32\n\tF_blocks      uint64\n\tF_bfree       uint64\n\tF_bavail      int64\n\tF_files       uint64\n\tF_ffree       uint64\n\tF_favail      int64\n\tF_syncwrites  uint64\n\tF_syncreads   uint64\n\tF_asyncwrites uint64\n\tF_asyncreads  uint64\n\tF_fsid        Fsid\n\tF_namemax     uint32\n\tF_owner       uint32\n\tF_ctime       uint64\n\tF_fstypename  [16]byte\n\tF_mntonname   [90]byte\n\tF_mntfromname [90]byte\n\tF_mntfromspec [90]byte\n\t_             [2]byte\n\tMount_info    [160]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tNamlen uint8\n\t_      [4]uint8\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [24]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x20\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint64\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n}\n\ntype FdSet struct {\n\tBits [32]uint32\n}\n\nconst (\n\tSizeofIfMsghdr         = 0xa8\n\tSizeofIfData           = 0x90\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfAnnounceMsghdr = 0x1a\n\tSizeofRtMsghdr         = 0x60\n\tSizeofRtMetrics        = 0x38\n)\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tXflags  int32\n\tData    IfData\n}\n\ntype IfData struct {\n\tType         uint8\n\tAddrlen      uint8\n\tHdrlen       uint8\n\tLink_state   uint8\n\tMtu          uint32\n\tMetric       uint32\n\tRdomain      uint32\n\tBaudrate     uint64\n\tIpackets     uint64\n\tIerrors      uint64\n\tOpackets     uint64\n\tOerrors      uint64\n\tCollisions   uint64\n\tIbytes       uint64\n\tObytes       uint64\n\tImcasts      uint64\n\tOmcasts      uint64\n\tIqdrops      uint64\n\tOqdrops      uint64\n\tNoproto      uint64\n\tCapabilities uint32\n\tLastchange   Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tMetric  int32\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tWhat    uint16\n\tName    [16]int8\n}\n\ntype RtMsghdr struct {\n\tMsglen   uint16\n\tVersion  uint8\n\tType     uint8\n\tHdrlen   uint16\n\tIndex    uint16\n\tTableid  uint16\n\tPriority uint8\n\tMpls     uint8\n\tAddrs    int32\n\tFlags    int32\n\tFmask    int32\n\tPid      int32\n\tSeq      int32\n\tErrno    int32\n\tInits    uint32\n\tRmx      RtMetrics\n}\n\ntype RtMetrics struct {\n\tPksent   uint64\n\tExpire   int64\n\tLocks    uint32\n\tMtu      uint32\n\tRefcnt   uint32\n\tHopcount uint32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPad      uint32\n}\n\ntype Mclpool struct{}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x8\n\tSizeofBpfProgram = 0x10\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x18\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  BpfTimeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\tIfidx   uint16\n\tFlowid  uint16\n\tFlags   uint8\n\tDrops   uint8\n}\n\ntype BpfTimeval struct {\n\tSec  uint32\n\tUsec uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x1\n\tAT_SYMLINK_NOFOLLOW = 0x2\n\tAT_SYMLINK_FOLLOW   = 0x4\n\tAT_REMOVEDIR        = 0x8\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Sigset_t uint32\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofUvmexp = 0x158\n\ntype Uvmexp struct {\n\tPagesize           int32\n\tPagemask           int32\n\tPageshift          int32\n\tNpages             int32\n\tFree               int32\n\tActive             int32\n\tInactive           int32\n\tPaging             int32\n\tWired              int32\n\tZeropages          int32\n\tReserve_pagedaemon int32\n\tReserve_kernel     int32\n\tUnused01           int32\n\tVnodepages         int32\n\tVtextpages         int32\n\tFreemin            int32\n\tFreetarg           int32\n\tInactarg           int32\n\tWiredmax           int32\n\tAnonmin            int32\n\tVtextmin           int32\n\tVnodemin           int32\n\tAnonminpct         int32\n\tVtextminpct        int32\n\tVnodeminpct        int32\n\tNswapdev           int32\n\tSwpages            int32\n\tSwpginuse          int32\n\tSwpgonly           int32\n\tNswget             int32\n\tNanon              int32\n\tUnused05           int32\n\tUnused06           int32\n\tFaults             int32\n\tTraps              int32\n\tIntrs              int32\n\tSwtch              int32\n\tSofts              int32\n\tSyscalls           int32\n\tPageins            int32\n\tUnused07           int32\n\tUnused08           int32\n\tPgswapin           int32\n\tPgswapout          int32\n\tForks              int32\n\tForks_ppwait       int32\n\tForks_sharevm      int32\n\tPga_zerohit        int32\n\tPga_zeromiss       int32\n\tUnused09           int32\n\tFltnoram           int32\n\tFltnoanon          int32\n\tFltnoamap          int32\n\tFltpgwait          int32\n\tFltpgrele          int32\n\tFltrelck           int32\n\tFltrelckok         int32\n\tFltanget           int32\n\tFltanretry         int32\n\tFltamcopy          int32\n\tFltnamap           int32\n\tFltnomap           int32\n\tFltlget            int32\n\tFltget             int32\n\tFlt_anon           int32\n\tFlt_acow           int32\n\tFlt_obj            int32\n\tFlt_prcopy         int32\n\tFlt_przero         int32\n\tPdwoke             int32\n\tPdrevs             int32\n\tPdswout            int32\n\tPdfreed            int32\n\tPdscans            int32\n\tPdanscan           int32\n\tPdobscan           int32\n\tPdreact            int32\n\tPdbusy             int32\n\tPdpageouts         int32\n\tPdpending          int32\n\tPddeact            int32\n\tUnused11           int32\n\tUnused12           int32\n\tUnused13           int32\n\tFpswtch            int32\n\tKmapent            int32\n}\n\nconst SizeofClockinfo = 0x10\n\ntype Clockinfo struct {\n\tHz     int32\n\tTick   int32\n\tStathz int32\n\tProfhz int32\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go",
    "content": "// cgo -godefs types_solaris.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && solaris\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n\tPathMax        = 0x400\n\tMaxHostNameLen = 0x100\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Timeval32 struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint64\n\tSize    int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBlksize int32\n\tBlocks  int64\n\tFstype  [16]int8\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tSysid  int32\n\tPid    int32\n\tPad    [4]int64\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tName   [1]int8\n\t_      [5]byte\n}\n\ntype _Fsblkcnt_t uint64\n\ntype Statvfs_t struct {\n\tBsize    uint64\n\tFrsize   uint64\n\tBlocks   uint64\n\tBfree    uint64\n\tBavail   uint64\n\tFiles    uint64\n\tFfree    uint64\n\tFavail   uint64\n\tFsid     uint64\n\tBasetype [16]int8\n\tFlag     uint64\n\tNamemax  uint64\n\tFstr     [32]int8\n}\n\ntype RawSockaddrInet4 struct {\n\tFamily uint16\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tFamily   uint16\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n\t_        uint32\n}\n\ntype RawSockaddrUnix struct {\n\tFamily uint16\n\tPath   [108]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tFamily uint16\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [244]int8\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [236]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName         *byte\n\tNamelen      uint32\n\tIov          *Iovec\n\tIovlen       int32\n\tAccrights    *int8\n\tAccrightslen int32\n\t_            [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet4Pktinfo struct {\n\tIfindex  uint32\n\tSpec_dst [4]byte /* in_addr */\n\tAddr     [4]byte /* in_addr */\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x20\n\tSizeofSockaddrAny      = 0xfc\n\tSizeofSockaddrUnix     = 0x6e\n\tSizeofSockaddrDatalink = 0xfc\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet4Pktinfo     = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x24\n\tSizeofICMPv6Filter     = 0x20\n)\n\ntype FdSet struct {\n\tBits [1024]int64\n}\n\ntype Utsname struct {\n\tSysname  [257]byte\n\tNodename [257]byte\n\tRelease  [257]byte\n\tVersion  [257]byte\n\tMachine  [257]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int64\n\tTinode uint64\n\tFname  [6]int8\n\tFpack  [6]int8\n\t_      [4]byte\n}\n\nconst (\n\tAT_FDCWD            = 0xffd19553\n\tAT_SYMLINK_NOFOLLOW = 0x1000\n\tAT_SYMLINK_FOLLOW   = 0x2000\n\tAT_REMOVEDIR        = 0x1\n\tAT_EACCESS          = 0x4\n)\n\nconst (\n\tSizeofIfMsghdr  = 0x54\n\tSizeofIfData    = 0x44\n\tSizeofIfaMsghdr = 0x14\n\tSizeofRtMsghdr  = 0x4c\n\tSizeofRtMetrics = 0x28\n)\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\tData    IfData\n}\n\ntype IfData struct {\n\tType       uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tMtu        uint32\n\tMetric     uint32\n\tBaudrate   uint32\n\tIpackets   uint32\n\tIerrors    uint32\n\tOpackets   uint32\n\tOerrors    uint32\n\tCollisions uint32\n\tIbytes     uint32\n\tObytes     uint32\n\tImcasts    uint32\n\tOmcasts    uint32\n\tIqdrops    uint32\n\tNoproto    uint32\n\tLastchange Timeval32\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\tMetric  int32\n}\n\ntype RtMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tFlags   int32\n\tAddrs   int32\n\tPid     int32\n\tSeq     int32\n\tErrno   int32\n\tUse     int32\n\tInits   uint32\n\tRmx     RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint32\n\tMtu      uint32\n\tHopcount uint32\n\tExpire   uint32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPksent   uint32\n}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x80\n\tSizeofBpfProgram = 0x10\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x14\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint64\n\tDrop uint64\n\tCapt uint64\n\t_    [13]uint64\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfTimeval struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype BpfHdr struct {\n\tTstamp  BpfTimeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\t_       [2]byte\n}\n\ntype Termios struct {\n\tIflag uint32\n\tOflag uint32\n\tCflag uint32\n\tLflag uint32\n\tCc    [19]uint8\n\t_     [1]byte\n}\n\ntype Termio struct {\n\tIflag uint16\n\tOflag uint16\n\tCflag uint16\n\tLflag uint16\n\tLine  int8\n\tCc    [8]uint8\n\t_     [1]byte\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype fileObj struct {\n\tAtim Timespec\n\tMtim Timespec\n\tCtim Timespec\n\tPad  [3]uint64\n\tName *int8\n}\n\ntype portEvent struct {\n\tEvents int32\n\tSource uint16\n\tPad    uint16\n\tObject uint64\n\tUser   *byte\n}\n\nconst (\n\tPORT_SOURCE_AIO    = 0x1\n\tPORT_SOURCE_TIMER  = 0x2\n\tPORT_SOURCE_USER   = 0x3\n\tPORT_SOURCE_FD     = 0x4\n\tPORT_SOURCE_ALERT  = 0x5\n\tPORT_SOURCE_MQ     = 0x6\n\tPORT_SOURCE_FILE   = 0x7\n\tPORT_ALERT_SET     = 0x1\n\tPORT_ALERT_UPDATE  = 0x2\n\tPORT_ALERT_INVALID = 0x3\n\tFILE_ACCESS        = 0x1\n\tFILE_MODIFIED      = 0x2\n\tFILE_ATTRIB        = 0x4\n\tFILE_TRUNC         = 0x100000\n\tFILE_NOFOLLOW      = 0x10000000\n\tFILE_DELETE        = 0x10\n\tFILE_RENAME_TO     = 0x20\n\tFILE_RENAME_FROM   = 0x40\n\tUNMOUNTED          = 0x20000000\n\tMOUNTEDOVER        = 0x40000000\n\tFILE_EXCEPTION     = 0x60000070\n)\n\nconst (\n\tTUNNEWPPA = 0x540001\n\tTUNSETPPA = 0x540002\n\n\tI_STR     = 0x5308\n\tI_POP     = 0x5303\n\tI_PUSH    = 0x5302\n\tI_LINK    = 0x530c\n\tI_UNLINK  = 0x530d\n\tI_PLINK   = 0x5316\n\tI_PUNLINK = 0x5317\n\n\tIF_UNITSEL = -0x7ffb8cca\n)\n\ntype strbuf struct {\n\tMaxlen int32\n\tLen    int32\n\tBuf    *int8\n}\n\ntype Strioctl struct {\n\tCmd    int32\n\tTimout int32\n\tLen    int32\n\tDp     *int8\n}\n\ntype Lifreq struct {\n\tName   [32]int8\n\tLifru1 [4]byte\n\tType   uint32\n\tLifru  [336]byte\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/unix/ztypes_zos_s390x.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build zos && s390x\n\n// Hand edited based on ztypes_linux_s390x.go\n// TODO: auto-generate.\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n\tPathMax        = 0x1000\n)\n\nconst (\n\tSizeofSockaddrAny   = 128\n\tSizeofCmsghdr       = 12\n\tSizeofIPMreq        = 8\n\tSizeofIPv6Mreq      = 20\n\tSizeofICMPv6Filter  = 32\n\tSizeofIPv6MTUInfo   = 32\n\tSizeofInet4Pktinfo  = 8\n\tSizeofInet6Pktinfo  = 20\n\tSizeofLinger        = 8\n\tSizeofSockaddrInet4 = 16\n\tSizeofSockaddrInet6 = 28\n\tSizeofTCPInfo       = 0x68\n\tSizeofUcred         = 12\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype timeval_zos struct { //correct (with padding and all)\n\tSec  int64\n\t_    [4]byte // pad\n\tUsec int32\n}\n\ntype Tms struct { //clock_t is 4-byte unsigned int in zos\n\tUtime  uint32\n\tStime  uint32\n\tCutime uint32\n\tCstime uint32\n}\n\ntype Time_t int64\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Utsname struct {\n\tSysname  [16]byte\n\tNodename [32]byte\n\tRelease  [8]byte\n\tVersion  [8]byte\n\tMachine  [16]byte\n}\n\ntype Ucred struct {\n\tPid int32\n\tUid uint32\n\tGid uint32\n}\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]uint8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [108]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]uint8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\t_    [112]uint8 // pad\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tIov        *Iovec\n\tControl    *byte\n\tFlags      int32\n\tNamelen    int32\n\tIovlen     int32\n\tControllen int32\n}\n\ntype Cmsghdr struct {\n\tLen   int32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet4Pktinfo struct {\n\tAddr    [4]byte /* in_addr */\n\tIfindex uint32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tData [8]uint32\n}\n\ntype TCPInfo struct {\n\tState          uint8\n\tCa_state       uint8\n\tRetransmits    uint8\n\tProbes         uint8\n\tBackoff        uint8\n\tOptions        uint8\n\tRto            uint32\n\tAto            uint32\n\tSnd_mss        uint32\n\tRcv_mss        uint32\n\tUnacked        uint32\n\tSacked         uint32\n\tLost           uint32\n\tRetrans        uint32\n\tFackets        uint32\n\tLast_data_sent uint32\n\tLast_ack_sent  uint32\n\tLast_data_recv uint32\n\tLast_ack_recv  uint32\n\tPmtu           uint32\n\tRcv_ssthresh   uint32\n\tRtt            uint32\n\tRttvar         uint32\n\tSnd_ssthresh   uint32\n\tSnd_cwnd       uint32\n\tAdvmss         uint32\n\tReordering     uint32\n\tRcv_rtt        uint32\n\tRcv_space      uint32\n\tTotal_retrans  uint32\n}\n\ntype _Gid_t uint32\n\ntype rusage_zos struct {\n\tUtime timeval_zos\n\tStime timeval_zos\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\n// { int, short, short } in poll.h\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\ntype Stat_t struct { //Linux Definition\n\tDev     uint64\n\tIno     uint64\n\tNlink   uint64\n\tMode    uint32\n\tUid     uint32\n\tGid     uint32\n\t_       int32\n\tRdev    uint64\n\tSize    int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBlksize int64\n\tBlocks  int64\n\t_       [3]int64\n}\n\ntype Stat_LE_t struct {\n\t_            [4]byte // eye catcher\n\tLength       uint16\n\tVersion      uint16\n\tMode         int32\n\tIno          uint32\n\tDev          uint32\n\tNlink        int32\n\tUid          int32\n\tGid          int32\n\tSize         int64\n\tAtim31       [4]byte\n\tMtim31       [4]byte\n\tCtim31       [4]byte\n\tRdev         uint32\n\tAuditoraudit uint32\n\tUseraudit    uint32\n\tBlksize      int32\n\tCreatim31    [4]byte\n\tAuditID      [16]byte\n\t_            [4]byte // rsrvd1\n\tFile_tag     struct {\n\t\tCcsid   uint16\n\t\tTxtflag uint16 // aggregating Txflag:1 deferred:1 rsvflags:14\n\t}\n\tCharsetID [8]byte\n\tBlocks    int64\n\tGenvalue  uint32\n\tReftim31  [4]byte\n\tFid       [8]byte\n\tFilefmt   byte\n\tFspflag2  byte\n\t_         [2]byte // rsrvd2\n\tCtimemsec int32\n\tSeclabel  [8]byte\n\t_         [4]byte // rsrvd3\n\t_         [4]byte // rsrvd4\n\tAtim      Time_t\n\tMtim      Time_t\n\tCtim      Time_t\n\tCreatim   Time_t\n\tReftim    Time_t\n\t_         [24]byte // rsrvd5\n}\n\ntype Statvfs_t struct {\n\tID          [4]byte\n\tLen         int32\n\tBsize       uint64\n\tBlocks      uint64\n\tUsedspace   uint64\n\tBavail      uint64\n\tFlag        uint64\n\tMaxfilesize int64\n\t_           [16]byte\n\tFrsize      uint64\n\tBfree       uint64\n\tFiles       uint32\n\tFfree       uint32\n\tFavail      uint32\n\tNamemax31   uint32\n\tInvarsec    uint32\n\t_           [4]byte\n\tFsid        uint64\n\tNamemax     uint64\n}\n\ntype Statfs_t struct {\n\tType    uint64\n\tBsize   uint64\n\tBlocks  uint64\n\tBfree   uint64\n\tBavail  uint64\n\tFiles   uint32\n\tFfree   uint32\n\tFsid    uint64\n\tNamelen uint64\n\tFrsize  uint64\n\tFlags   uint64\n\t_       [4]uint64\n}\n\ntype direntLE struct {\n\tReclen uint16\n\tNamlen uint16\n\tIno    uint32\n\tExtra  uintptr\n\tName   [256]byte\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]uint8\n\t_      [5]byte\n}\n\ntype FdSet struct {\n\tBits [64]int32\n}\n\n// This struct is packed on z/OS so it can't be used directly.\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tPid    int32\n}\n\ntype F_cnvrt struct {\n\tCvtcmd int32\n\tPccsid int16\n\tFccsid int16\n}\n\ntype Termios struct {\n\tCflag uint32\n\tIflag uint32\n\tLflag uint32\n\tOflag uint32\n\tCc    [11]uint8\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\ntype W_Mnth struct {\n\tHid   [4]byte\n\tSize  int32\n\tCur1  int32 //32bit pointer\n\tCur2  int32 //^\n\tDevno uint32\n\t_     [4]byte\n}\n\ntype W_Mntent struct {\n\tFstype       uint32\n\tMode         uint32\n\tDev          uint32\n\tParentdev    uint32\n\tRootino      uint32\n\tStatus       byte\n\tDdname       [9]byte\n\tFstname      [9]byte\n\tFsname       [45]byte\n\tPathlen      uint32\n\tMountpoint   [1024]byte\n\tJobname      [8]byte\n\tPID          int32\n\tParmoffset   int32\n\tParmlen      int16\n\tOwner        [8]byte\n\tQuiesceowner [8]byte\n\t_            [38]byte\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\t_      int32\n\tFd     int32\n\tPad    int32\n}\n\ntype InotifyEvent struct {\n\tWd     int32\n\tMask   uint32\n\tCookie uint32\n\tLen    uint32\n\tName   string\n}\n\nconst (\n\tSizeofInotifyEvent = 0x10\n)\n\ntype ConsMsg2 struct {\n\tCm2Format       uint16\n\tCm2R1           uint16\n\tCm2Msglength    uint32\n\tCm2Msg          *byte\n\tCm2R2           [4]byte\n\tCm2R3           [4]byte\n\tCm2Routcde      *uint32\n\tCm2Descr        *uint32\n\tCm2Msgflag      uint32\n\tCm2Token        uint32\n\tCm2Msgid        *uint32\n\tCm2R4           [4]byte\n\tCm2DomToken     uint32\n\tCm2DomMsgid     *uint32\n\tCm2ModCartptr   *byte\n\tCm2ModConsidptr *byte\n\tCm2MsgCart      [8]byte\n\tCm2MsgConsid    [4]byte\n\tCm2R5           [12]byte\n}\n\nconst (\n\tCC_modify        = 1\n\tCC_stop          = 2\n\tCONSOLE_FORMAT_2 = 2\n\tCONSOLE_FORMAT_3 = 3\n\tCONSOLE_HRDCPY   = 0x80000000\n)\n\ntype OpenHow struct {\n\tFlags   uint64\n\tMode    uint64\n\tResolve uint64\n}\n\nconst SizeofOpenHow = 0x18\n\nconst (\n\tRESOLVE_CACHED        = 0x20\n\tRESOLVE_BENEATH       = 0x8\n\tRESOLVE_IN_ROOT       = 0x10\n\tRESOLVE_NO_MAGICLINKS = 0x2\n\tRESOLVE_NO_SYMLINKS   = 0x4\n\tRESOLVE_NO_XDEV       = 0x1\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tErrno int32\n\tCode  int32\n\tPid   int32\n\tUid   uint32\n\t_     [44]byte\n}\n\ntype SysvIpcPerm struct {\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode int32\n}\n\ntype SysvShmDesc struct {\n\tPerm   SysvIpcPerm\n\t_      [4]byte\n\tLpid   int32\n\tCpid   int32\n\tNattch uint32\n\t_      [4]byte\n\t_      [4]byte\n\t_      [4]byte\n\t_      int32\n\t_      uint8\n\t_      uint8\n\t_      uint16\n\t_      *byte\n\tSegsz  uint64\n\tAtime  Time_t\n\tDtime  Time_t\n\tCtime  Time_t\n}\n\ntype SysvShmDesc64 struct {\n\tPerm   SysvIpcPerm\n\t_      [4]byte\n\tLpid   int32\n\tCpid   int32\n\tNattch uint32\n\t_      [4]byte\n\t_      [4]byte\n\t_      [4]byte\n\t_      int32\n\t_      byte\n\t_      uint8\n\t_      uint16\n\t_      *byte\n\tSegsz  uint64\n\tAtime  int64\n\tDtime  int64\n\tCtime  int64\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/windows/aliases.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build windows\n\npackage windows\n\nimport \"syscall\"\n\ntype Errno = syscall.Errno\ntype SysProcAttr = syscall.SysProcAttr\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/windows/dll_windows.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage windows\n\nimport (\n\t\"sync\"\n\t\"sync/atomic\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// We need to use LoadLibrary and GetProcAddress from the Go runtime, because\n// the these symbols are loaded by the system linker and are required to\n// dynamically load additional symbols. Note that in the Go runtime, these\n// return syscall.Handle and syscall.Errno, but these are the same, in fact,\n// as windows.Handle and windows.Errno, and we intend to keep these the same.\n\n//go:linkname syscall_loadlibrary syscall.loadlibrary\nfunc syscall_loadlibrary(filename *uint16) (handle Handle, err Errno)\n\n//go:linkname syscall_getprocaddress syscall.getprocaddress\nfunc syscall_getprocaddress(handle Handle, procname *uint8) (proc uintptr, err Errno)\n\n// DLLError describes reasons for DLL load failures.\ntype DLLError struct {\n\tErr     error\n\tObjName string\n\tMsg     string\n}\n\nfunc (e *DLLError) Error() string { return e.Msg }\n\nfunc (e *DLLError) Unwrap() error { return e.Err }\n\n// A DLL implements access to a single DLL.\ntype DLL struct {\n\tName   string\n\tHandle Handle\n}\n\n// LoadDLL loads DLL file into memory.\n//\n// Warning: using LoadDLL without an absolute path name is subject to\n// DLL preloading attacks. To safely load a system DLL, use [NewLazySystemDLL],\n// or use [LoadLibraryEx] directly.\nfunc LoadDLL(name string) (dll *DLL, err error) {\n\tnamep, err := UTF16PtrFromString(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\th, e := syscall_loadlibrary(namep)\n\tif e != 0 {\n\t\treturn nil, &DLLError{\n\t\t\tErr:     e,\n\t\t\tObjName: name,\n\t\t\tMsg:     \"Failed to load \" + name + \": \" + e.Error(),\n\t\t}\n\t}\n\td := &DLL{\n\t\tName:   name,\n\t\tHandle: h,\n\t}\n\treturn d, nil\n}\n\n// MustLoadDLL is like LoadDLL but panics if load operation fails.\nfunc MustLoadDLL(name string) *DLL {\n\td, e := LoadDLL(name)\n\tif e != nil {\n\t\tpanic(e)\n\t}\n\treturn d\n}\n\n// FindProc searches DLL d for procedure named name and returns *Proc\n// if found. It returns an error if search fails.\nfunc (d *DLL) FindProc(name string) (proc *Proc, err error) {\n\tnamep, err := BytePtrFromString(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\ta, e := syscall_getprocaddress(d.Handle, namep)\n\tif e != 0 {\n\t\treturn nil, &DLLError{\n\t\t\tErr:     e,\n\t\t\tObjName: name,\n\t\t\tMsg:     \"Failed to find \" + name + \" procedure in \" + d.Name + \": \" + e.Error(),\n\t\t}\n\t}\n\tp := &Proc{\n\t\tDll:  d,\n\t\tName: name,\n\t\taddr: a,\n\t}\n\treturn p, nil\n}\n\n// MustFindProc is like FindProc but panics if search fails.\nfunc (d *DLL) MustFindProc(name string) *Proc {\n\tp, e := d.FindProc(name)\n\tif e != nil {\n\t\tpanic(e)\n\t}\n\treturn p\n}\n\n// FindProcByOrdinal searches DLL d for procedure by ordinal and returns *Proc\n// if found. It returns an error if search fails.\nfunc (d *DLL) FindProcByOrdinal(ordinal uintptr) (proc *Proc, err error) {\n\ta, e := GetProcAddressByOrdinal(d.Handle, ordinal)\n\tname := \"#\" + itoa(int(ordinal))\n\tif e != nil {\n\t\treturn nil, &DLLError{\n\t\t\tErr:     e,\n\t\t\tObjName: name,\n\t\t\tMsg:     \"Failed to find \" + name + \" procedure in \" + d.Name + \": \" + e.Error(),\n\t\t}\n\t}\n\tp := &Proc{\n\t\tDll:  d,\n\t\tName: name,\n\t\taddr: a,\n\t}\n\treturn p, nil\n}\n\n// MustFindProcByOrdinal is like FindProcByOrdinal but panics if search fails.\nfunc (d *DLL) MustFindProcByOrdinal(ordinal uintptr) *Proc {\n\tp, e := d.FindProcByOrdinal(ordinal)\n\tif e != nil {\n\t\tpanic(e)\n\t}\n\treturn p\n}\n\n// Release unloads DLL d from memory.\nfunc (d *DLL) Release() (err error) {\n\treturn FreeLibrary(d.Handle)\n}\n\n// A Proc implements access to a procedure inside a DLL.\ntype Proc struct {\n\tDll  *DLL\n\tName string\n\taddr uintptr\n}\n\n// Addr returns the address of the procedure represented by p.\n// The return value can be passed to Syscall to run the procedure.\nfunc (p *Proc) Addr() uintptr {\n\treturn p.addr\n}\n\n//go:uintptrescapes\n\n// Call executes procedure p with arguments a. It will panic, if more than 15 arguments\n// are supplied.\n//\n// The returned error is always non-nil, constructed from the result of GetLastError.\n// Callers must inspect the primary return value to decide whether an error occurred\n// (according to the semantics of the specific function being called) before consulting\n// the error. The error will be guaranteed to contain windows.Errno.\nfunc (p *Proc) Call(a ...uintptr) (r1, r2 uintptr, lastErr error) {\n\tswitch len(a) {\n\tcase 0:\n\t\treturn syscall.Syscall(p.Addr(), uintptr(len(a)), 0, 0, 0)\n\tcase 1:\n\t\treturn syscall.Syscall(p.Addr(), uintptr(len(a)), a[0], 0, 0)\n\tcase 2:\n\t\treturn syscall.Syscall(p.Addr(), uintptr(len(a)), a[0], a[1], 0)\n\tcase 3:\n\t\treturn syscall.Syscall(p.Addr(), uintptr(len(a)), a[0], a[1], a[2])\n\tcase 4:\n\t\treturn syscall.Syscall6(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], 0, 0)\n\tcase 5:\n\t\treturn syscall.Syscall6(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], 0)\n\tcase 6:\n\t\treturn syscall.Syscall6(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5])\n\tcase 7:\n\t\treturn syscall.Syscall9(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], 0, 0)\n\tcase 8:\n\t\treturn syscall.Syscall9(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], 0)\n\tcase 9:\n\t\treturn syscall.Syscall9(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8])\n\tcase 10:\n\t\treturn syscall.Syscall12(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], 0, 0)\n\tcase 11:\n\t\treturn syscall.Syscall12(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], 0)\n\tcase 12:\n\t\treturn syscall.Syscall12(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11])\n\tcase 13:\n\t\treturn syscall.Syscall15(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], 0, 0)\n\tcase 14:\n\t\treturn syscall.Syscall15(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], 0)\n\tcase 15:\n\t\treturn syscall.Syscall15(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14])\n\tdefault:\n\t\tpanic(\"Call \" + p.Name + \" with too many arguments \" + itoa(len(a)) + \".\")\n\t}\n}\n\n// A LazyDLL implements access to a single DLL.\n// It will delay the load of the DLL until the first\n// call to its Handle method or to one of its\n// LazyProc's Addr method.\ntype LazyDLL struct {\n\tName string\n\n\t// System determines whether the DLL must be loaded from the\n\t// Windows System directory, bypassing the normal DLL search\n\t// path.\n\tSystem bool\n\n\tmu  sync.Mutex\n\tdll *DLL // non nil once DLL is loaded\n}\n\n// Load loads DLL file d.Name into memory. It returns an error if fails.\n// Load will not try to load DLL, if it is already loaded into memory.\nfunc (d *LazyDLL) Load() error {\n\t// Non-racy version of:\n\t// if d.dll != nil {\n\tif atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(&d.dll))) != nil {\n\t\treturn nil\n\t}\n\td.mu.Lock()\n\tdefer d.mu.Unlock()\n\tif d.dll != nil {\n\t\treturn nil\n\t}\n\n\t// kernel32.dll is special, since it's where LoadLibraryEx comes from.\n\t// The kernel already special-cases its name, so it's always\n\t// loaded from system32.\n\tvar dll *DLL\n\tvar err error\n\tif d.Name == \"kernel32.dll\" {\n\t\tdll, err = LoadDLL(d.Name)\n\t} else {\n\t\tdll, err = loadLibraryEx(d.Name, d.System)\n\t}\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// Non-racy version of:\n\t// d.dll = dll\n\tatomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(&d.dll)), unsafe.Pointer(dll))\n\treturn nil\n}\n\n// mustLoad is like Load but panics if search fails.\nfunc (d *LazyDLL) mustLoad() {\n\te := d.Load()\n\tif e != nil {\n\t\tpanic(e)\n\t}\n}\n\n// Handle returns d's module handle.\nfunc (d *LazyDLL) Handle() uintptr {\n\td.mustLoad()\n\treturn uintptr(d.dll.Handle)\n}\n\n// NewProc returns a LazyProc for accessing the named procedure in the DLL d.\nfunc (d *LazyDLL) NewProc(name string) *LazyProc {\n\treturn &LazyProc{l: d, Name: name}\n}\n\n// NewLazyDLL creates new LazyDLL associated with DLL file.\n//\n// Warning: using NewLazyDLL without an absolute path name is subject to\n// DLL preloading attacks. To safely load a system DLL, use [NewLazySystemDLL].\nfunc NewLazyDLL(name string) *LazyDLL {\n\treturn &LazyDLL{Name: name}\n}\n\n// NewLazySystemDLL is like NewLazyDLL, but will only\n// search Windows System directory for the DLL if name is\n// a base name (like \"advapi32.dll\").\nfunc NewLazySystemDLL(name string) *LazyDLL {\n\treturn &LazyDLL{Name: name, System: true}\n}\n\n// A LazyProc implements access to a procedure inside a LazyDLL.\n// It delays the lookup until the Addr method is called.\ntype LazyProc struct {\n\tName string\n\n\tmu   sync.Mutex\n\tl    *LazyDLL\n\tproc *Proc\n}\n\n// Find searches DLL for procedure named p.Name. It returns\n// an error if search fails. Find will not search procedure,\n// if it is already found and loaded into memory.\nfunc (p *LazyProc) Find() error {\n\t// Non-racy version of:\n\t// if p.proc == nil {\n\tif atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(&p.proc))) == nil {\n\t\tp.mu.Lock()\n\t\tdefer p.mu.Unlock()\n\t\tif p.proc == nil {\n\t\t\te := p.l.Load()\n\t\t\tif e != nil {\n\t\t\t\treturn e\n\t\t\t}\n\t\t\tproc, e := p.l.dll.FindProc(p.Name)\n\t\t\tif e != nil {\n\t\t\t\treturn e\n\t\t\t}\n\t\t\t// Non-racy version of:\n\t\t\t// p.proc = proc\n\t\t\tatomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(&p.proc)), unsafe.Pointer(proc))\n\t\t}\n\t}\n\treturn nil\n}\n\n// mustFind is like Find but panics if search fails.\nfunc (p *LazyProc) mustFind() {\n\te := p.Find()\n\tif e != nil {\n\t\tpanic(e)\n\t}\n}\n\n// Addr returns the address of the procedure represented by p.\n// The return value can be passed to Syscall to run the procedure.\n// It will panic if the procedure cannot be found.\nfunc (p *LazyProc) Addr() uintptr {\n\tp.mustFind()\n\treturn p.proc.Addr()\n}\n\n//go:uintptrescapes\n\n// Call executes procedure p with arguments a. It will panic, if more than 15 arguments\n// are supplied. It will also panic if the procedure cannot be found.\n//\n// The returned error is always non-nil, constructed from the result of GetLastError.\n// Callers must inspect the primary return value to decide whether an error occurred\n// (according to the semantics of the specific function being called) before consulting\n// the error. The error will be guaranteed to contain windows.Errno.\nfunc (p *LazyProc) Call(a ...uintptr) (r1, r2 uintptr, lastErr error) {\n\tp.mustFind()\n\treturn p.proc.Call(a...)\n}\n\nvar canDoSearchSystem32Once struct {\n\tsync.Once\n\tv bool\n}\n\nfunc initCanDoSearchSystem32() {\n\t// https://msdn.microsoft.com/en-us/library/ms684179(v=vs.85).aspx says:\n\t// \"Windows 7, Windows Server 2008 R2, Windows Vista, and Windows\n\t// Server 2008: The LOAD_LIBRARY_SEARCH_* flags are available on\n\t// systems that have KB2533623 installed. To determine whether the\n\t// flags are available, use GetProcAddress to get the address of the\n\t// AddDllDirectory, RemoveDllDirectory, or SetDefaultDllDirectories\n\t// function. If GetProcAddress succeeds, the LOAD_LIBRARY_SEARCH_*\n\t// flags can be used with LoadLibraryEx.\"\n\tcanDoSearchSystem32Once.v = (modkernel32.NewProc(\"AddDllDirectory\").Find() == nil)\n}\n\nfunc canDoSearchSystem32() bool {\n\tcanDoSearchSystem32Once.Do(initCanDoSearchSystem32)\n\treturn canDoSearchSystem32Once.v\n}\n\nfunc isBaseName(name string) bool {\n\tfor _, c := range name {\n\t\tif c == ':' || c == '/' || c == '\\\\' {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// loadLibraryEx wraps the Windows LoadLibraryEx function.\n//\n// See https://msdn.microsoft.com/en-us/library/windows/desktop/ms684179(v=vs.85).aspx\n//\n// If name is not an absolute path, LoadLibraryEx searches for the DLL\n// in a variety of automatic locations unless constrained by flags.\n// See: https://msdn.microsoft.com/en-us/library/ff919712%28VS.85%29.aspx\nfunc loadLibraryEx(name string, system bool) (*DLL, error) {\n\tloadDLL := name\n\tvar flags uintptr\n\tif system {\n\t\tif canDoSearchSystem32() {\n\t\t\tflags = LOAD_LIBRARY_SEARCH_SYSTEM32\n\t\t} else if isBaseName(name) {\n\t\t\t// WindowsXP or unpatched Windows machine\n\t\t\t// trying to load \"foo.dll\" out of the system\n\t\t\t// folder, but LoadLibraryEx doesn't support\n\t\t\t// that yet on their system, so emulate it.\n\t\t\tsystemdir, err := GetSystemDirectory()\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tloadDLL = systemdir + \"\\\\\" + name\n\t\t}\n\t}\n\th, err := LoadLibraryEx(loadDLL, 0, flags)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &DLL{Name: name, Handle: h}, nil\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/windows/env_windows.go",
    "content": "// Copyright 2010 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Windows environment variables.\n\npackage windows\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc Getenv(key string) (value string, found bool) {\n\treturn syscall.Getenv(key)\n}\n\nfunc Setenv(key, value string) error {\n\treturn syscall.Setenv(key, value)\n}\n\nfunc Clearenv() {\n\tsyscall.Clearenv()\n}\n\nfunc Environ() []string {\n\treturn syscall.Environ()\n}\n\n// Returns a default environment associated with the token, rather than the current\n// process. If inheritExisting is true, then this environment also inherits the\n// environment of the current process.\nfunc (token Token) Environ(inheritExisting bool) (env []string, err error) {\n\tvar block *uint16\n\terr = CreateEnvironmentBlock(&block, token, inheritExisting)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer DestroyEnvironmentBlock(block)\n\tsize := unsafe.Sizeof(*block)\n\tfor *block != 0 {\n\t\t// find NUL terminator\n\t\tend := unsafe.Pointer(block)\n\t\tfor *(*uint16)(end) != 0 {\n\t\t\tend = unsafe.Add(end, size)\n\t\t}\n\n\t\tentry := unsafe.Slice(block, (uintptr(end)-uintptr(unsafe.Pointer(block)))/size)\n\t\tenv = append(env, UTF16ToString(entry))\n\t\tblock = (*uint16)(unsafe.Add(end, size))\n\t}\n\treturn env, nil\n}\n\nfunc Unsetenv(key string) error {\n\treturn syscall.Unsetenv(key)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/windows/eventlog.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build windows\n\npackage windows\n\nconst (\n\tEVENTLOG_SUCCESS          = 0\n\tEVENTLOG_ERROR_TYPE       = 1\n\tEVENTLOG_WARNING_TYPE     = 2\n\tEVENTLOG_INFORMATION_TYPE = 4\n\tEVENTLOG_AUDIT_SUCCESS    = 8\n\tEVENTLOG_AUDIT_FAILURE    = 16\n)\n\n//sys\tRegisterEventSource(uncServerName *uint16, sourceName *uint16) (handle Handle, err error) [failretval==0] = advapi32.RegisterEventSourceW\n//sys\tDeregisterEventSource(handle Handle) (err error) = advapi32.DeregisterEventSource\n//sys\tReportEvent(log Handle, etype uint16, category uint16, eventId uint32, usrSId uintptr, numStrings uint16, dataSize uint32, strings **uint16, rawData *byte) (err error) = advapi32.ReportEventW\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/windows/exec_windows.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Fork, exec, wait, etc.\n\npackage windows\n\nimport (\n\terrorspkg \"errors\"\n\t\"unsafe\"\n)\n\n// EscapeArg rewrites command line argument s as prescribed\n// in http://msdn.microsoft.com/en-us/library/ms880421.\n// This function returns \"\" (2 double quotes) if s is empty.\n// Alternatively, these transformations are done:\n//   - every back slash (\\) is doubled, but only if immediately\n//     followed by double quote (\");\n//   - every double quote (\") is escaped by back slash (\\);\n//   - finally, s is wrapped with double quotes (arg -> \"arg\"),\n//     but only if there is space or tab inside s.\nfunc EscapeArg(s string) string {\n\tif len(s) == 0 {\n\t\treturn `\"\"`\n\t}\n\tn := len(s)\n\thasSpace := false\n\tfor i := 0; i < len(s); i++ {\n\t\tswitch s[i] {\n\t\tcase '\"', '\\\\':\n\t\t\tn++\n\t\tcase ' ', '\\t':\n\t\t\thasSpace = true\n\t\t}\n\t}\n\tif hasSpace {\n\t\tn += 2 // Reserve space for quotes.\n\t}\n\tif n == len(s) {\n\t\treturn s\n\t}\n\n\tqs := make([]byte, n)\n\tj := 0\n\tif hasSpace {\n\t\tqs[j] = '\"'\n\t\tj++\n\t}\n\tslashes := 0\n\tfor i := 0; i < len(s); i++ {\n\t\tswitch s[i] {\n\t\tdefault:\n\t\t\tslashes = 0\n\t\t\tqs[j] = s[i]\n\t\tcase '\\\\':\n\t\t\tslashes++\n\t\t\tqs[j] = s[i]\n\t\tcase '\"':\n\t\t\tfor ; slashes > 0; slashes-- {\n\t\t\t\tqs[j] = '\\\\'\n\t\t\t\tj++\n\t\t\t}\n\t\t\tqs[j] = '\\\\'\n\t\t\tj++\n\t\t\tqs[j] = s[i]\n\t\t}\n\t\tj++\n\t}\n\tif hasSpace {\n\t\tfor ; slashes > 0; slashes-- {\n\t\t\tqs[j] = '\\\\'\n\t\t\tj++\n\t\t}\n\t\tqs[j] = '\"'\n\t\tj++\n\t}\n\treturn string(qs[:j])\n}\n\n// ComposeCommandLine escapes and joins the given arguments suitable for use as a Windows command line,\n// in CreateProcess's CommandLine argument, CreateService/ChangeServiceConfig's BinaryPathName argument,\n// or any program that uses CommandLineToArgv.\nfunc ComposeCommandLine(args []string) string {\n\tif len(args) == 0 {\n\t\treturn \"\"\n\t}\n\n\t// Per https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-commandlinetoargvw:\n\t// “This function accepts command lines that contain a program name; the\n\t// program name can be enclosed in quotation marks or not.”\n\t//\n\t// Unfortunately, it provides no means of escaping interior quotation marks\n\t// within that program name, and we have no way to report them here.\n\tprog := args[0]\n\tmustQuote := len(prog) == 0\n\tfor i := 0; i < len(prog); i++ {\n\t\tc := prog[i]\n\t\tif c <= ' ' || (c == '\"' && i == 0) {\n\t\t\t// Force quotes for not only the ASCII space and tab as described in the\n\t\t\t// MSDN article, but also ASCII control characters.\n\t\t\t// The documentation for CommandLineToArgvW doesn't say what happens when\n\t\t\t// the first argument is not a valid program name, but it empirically\n\t\t\t// seems to drop unquoted control characters.\n\t\t\tmustQuote = true\n\t\t\tbreak\n\t\t}\n\t}\n\tvar commandLine []byte\n\tif mustQuote {\n\t\tcommandLine = make([]byte, 0, len(prog)+2)\n\t\tcommandLine = append(commandLine, '\"')\n\t\tfor i := 0; i < len(prog); i++ {\n\t\t\tc := prog[i]\n\t\t\tif c == '\"' {\n\t\t\t\t// This quote would interfere with our surrounding quotes.\n\t\t\t\t// We have no way to report an error, so just strip out\n\t\t\t\t// the offending character instead.\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tcommandLine = append(commandLine, c)\n\t\t}\n\t\tcommandLine = append(commandLine, '\"')\n\t} else {\n\t\tif len(args) == 1 {\n\t\t\t// args[0] is a valid command line representing itself.\n\t\t\t// No need to allocate a new slice or string for it.\n\t\t\treturn prog\n\t\t}\n\t\tcommandLine = []byte(prog)\n\t}\n\n\tfor _, arg := range args[1:] {\n\t\tcommandLine = append(commandLine, ' ')\n\t\t// TODO(bcmills): since we're already appending to a slice, it would be nice\n\t\t// to avoid the intermediate allocations of EscapeArg.\n\t\t// Perhaps we can factor out an appendEscapedArg function.\n\t\tcommandLine = append(commandLine, EscapeArg(arg)...)\n\t}\n\treturn string(commandLine)\n}\n\n// DecomposeCommandLine breaks apart its argument command line into unescaped parts using CommandLineToArgv,\n// as gathered from GetCommandLine, QUERY_SERVICE_CONFIG's BinaryPathName argument, or elsewhere that\n// command lines are passed around.\n// DecomposeCommandLine returns an error if commandLine contains NUL.\nfunc DecomposeCommandLine(commandLine string) ([]string, error) {\n\tif len(commandLine) == 0 {\n\t\treturn []string{}, nil\n\t}\n\tutf16CommandLine, err := UTF16FromString(commandLine)\n\tif err != nil {\n\t\treturn nil, errorspkg.New(\"string with NUL passed to DecomposeCommandLine\")\n\t}\n\tvar argc int32\n\targv, err := commandLineToArgv(&utf16CommandLine[0], &argc)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer LocalFree(Handle(unsafe.Pointer(argv)))\n\n\tvar args []string\n\tfor _, p := range unsafe.Slice(argv, argc) {\n\t\targs = append(args, UTF16PtrToString(p))\n\t}\n\treturn args, nil\n}\n\n// CommandLineToArgv parses a Unicode command line string and sets\n// argc to the number of parsed arguments.\n//\n// The returned memory should be freed using a single call to LocalFree.\n//\n// Note that although the return type of CommandLineToArgv indicates 8192\n// entries of up to 8192 characters each, the actual count of parsed arguments\n// may exceed 8192, and the documentation for CommandLineToArgvW does not mention\n// any bound on the lengths of the individual argument strings.\n// (See https://go.dev/issue/63236.)\nfunc CommandLineToArgv(cmd *uint16, argc *int32) (argv *[8192]*[8192]uint16, err error) {\n\targp, err := commandLineToArgv(cmd, argc)\n\targv = (*[8192]*[8192]uint16)(unsafe.Pointer(argp))\n\treturn argv, err\n}\n\nfunc CloseOnExec(fd Handle) {\n\tSetHandleInformation(Handle(fd), HANDLE_FLAG_INHERIT, 0)\n}\n\n// FullPath retrieves the full path of the specified file.\nfunc FullPath(name string) (path string, err error) {\n\tp, err := UTF16PtrFromString(name)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tn := uint32(100)\n\tfor {\n\t\tbuf := make([]uint16, n)\n\t\tn, err = GetFullPathName(p, uint32(len(buf)), &buf[0], nil)\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t\tif n <= uint32(len(buf)) {\n\t\t\treturn UTF16ToString(buf[:n]), nil\n\t\t}\n\t}\n}\n\n// NewProcThreadAttributeList allocates a new ProcThreadAttributeListContainer, with the requested maximum number of attributes.\nfunc NewProcThreadAttributeList(maxAttrCount uint32) (*ProcThreadAttributeListContainer, error) {\n\tvar size uintptr\n\terr := initializeProcThreadAttributeList(nil, maxAttrCount, 0, &size)\n\tif err != ERROR_INSUFFICIENT_BUFFER {\n\t\tif err == nil {\n\t\t\treturn nil, errorspkg.New(\"unable to query buffer size from InitializeProcThreadAttributeList\")\n\t\t}\n\t\treturn nil, err\n\t}\n\talloc, err := LocalAlloc(LMEM_FIXED, uint32(size))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\t// size is guaranteed to be ≥1 by InitializeProcThreadAttributeList.\n\tal := &ProcThreadAttributeListContainer{data: (*ProcThreadAttributeList)(unsafe.Pointer(alloc))}\n\terr = initializeProcThreadAttributeList(al.data, maxAttrCount, 0, &size)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn al, err\n}\n\n// Update modifies the ProcThreadAttributeList using UpdateProcThreadAttribute.\nfunc (al *ProcThreadAttributeListContainer) Update(attribute uintptr, value unsafe.Pointer, size uintptr) error {\n\tal.pointers = append(al.pointers, value)\n\treturn updateProcThreadAttribute(al.data, 0, attribute, value, size, nil, nil)\n}\n\n// Delete frees ProcThreadAttributeList's resources.\nfunc (al *ProcThreadAttributeListContainer) Delete() {\n\tdeleteProcThreadAttributeList(al.data)\n\tLocalFree(Handle(unsafe.Pointer(al.data)))\n\tal.data = nil\n\tal.pointers = nil\n}\n\n// List returns the actual ProcThreadAttributeList to be passed to StartupInfoEx.\nfunc (al *ProcThreadAttributeListContainer) List() *ProcThreadAttributeList {\n\treturn al.data\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/windows/memory_windows.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage windows\n\nconst (\n\tMEM_COMMIT      = 0x00001000\n\tMEM_RESERVE     = 0x00002000\n\tMEM_DECOMMIT    = 0x00004000\n\tMEM_RELEASE     = 0x00008000\n\tMEM_RESET       = 0x00080000\n\tMEM_TOP_DOWN    = 0x00100000\n\tMEM_WRITE_WATCH = 0x00200000\n\tMEM_PHYSICAL    = 0x00400000\n\tMEM_RESET_UNDO  = 0x01000000\n\tMEM_LARGE_PAGES = 0x20000000\n\n\tPAGE_NOACCESS          = 0x00000001\n\tPAGE_READONLY          = 0x00000002\n\tPAGE_READWRITE         = 0x00000004\n\tPAGE_WRITECOPY         = 0x00000008\n\tPAGE_EXECUTE           = 0x00000010\n\tPAGE_EXECUTE_READ      = 0x00000020\n\tPAGE_EXECUTE_READWRITE = 0x00000040\n\tPAGE_EXECUTE_WRITECOPY = 0x00000080\n\tPAGE_GUARD             = 0x00000100\n\tPAGE_NOCACHE           = 0x00000200\n\tPAGE_WRITECOMBINE      = 0x00000400\n\tPAGE_TARGETS_INVALID   = 0x40000000\n\tPAGE_TARGETS_NO_UPDATE = 0x40000000\n\n\tQUOTA_LIMITS_HARDWS_MIN_DISABLE = 0x00000002\n\tQUOTA_LIMITS_HARDWS_MIN_ENABLE  = 0x00000001\n\tQUOTA_LIMITS_HARDWS_MAX_DISABLE = 0x00000008\n\tQUOTA_LIMITS_HARDWS_MAX_ENABLE  = 0x00000004\n)\n\ntype MemoryBasicInformation struct {\n\tBaseAddress       uintptr\n\tAllocationBase    uintptr\n\tAllocationProtect uint32\n\tPartitionId       uint16\n\tRegionSize        uintptr\n\tState             uint32\n\tProtect           uint32\n\tType              uint32\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/windows/mkerrors.bash",
    "content": "#!/bin/bash\n\n# Copyright 2019 The Go Authors. All rights reserved.\n# Use of this source code is governed by a BSD-style\n# license that can be found in the LICENSE file.\n\nset -e\nshopt -s nullglob\n\nwinerror=\"$(printf '%s\\n' \"/mnt/c/Program Files (x86)/Windows Kits/\"/*/Include/*/shared/winerror.h | sort -Vr | head -n 1)\"\n[[ -n $winerror ]] || { echo \"Unable to find winerror.h\" >&2; exit 1; }\nntstatus=\"$(printf '%s\\n' \"/mnt/c/Program Files (x86)/Windows Kits/\"/*/Include/*/shared/ntstatus.h | sort -Vr | head -n 1)\"\n[[ -n $ntstatus ]] || { echo \"Unable to find ntstatus.h\" >&2; exit 1; }\n\ndeclare -A errors\n\n{\n\techo \"// Code generated by 'mkerrors.bash'; DO NOT EDIT.\"\n\techo\n\techo \"package windows\"\n\techo \"import \\\"syscall\\\"\"\n\techo \"const (\"\n\n\twhile read -r line; do\n\t\tunset vtype\n\t\tif [[ $line =~ ^#define\\ +([A-Z0-9_]+k?)\\ +([A-Z0-9_]+\\()?([A-Z][A-Z0-9_]+k?)\\)? ]]; then\n\t\t\tkey=\"${BASH_REMATCH[1]}\"\n\t\t\tvalue=\"${BASH_REMATCH[3]}\"\n\t\telif [[ $line =~ ^#define\\ +([A-Z0-9_]+k?)\\ +([A-Z0-9_]+\\()?((0x)?[0-9A-Fa-f]+)L?\\)? ]]; then\n\t\t\tkey=\"${BASH_REMATCH[1]}\"\n\t\t\tvalue=\"${BASH_REMATCH[3]}\"\n\t\t\tvtype=\"${BASH_REMATCH[2]}\"\n\t\telif [[ $line =~ ^#define\\ +([A-Z0-9_]+k?)\\ +\\(\\(([A-Z]+)\\)((0x)?[0-9A-Fa-f]+)L?\\) ]]; then\n\t\t\tkey=\"${BASH_REMATCH[1]}\"\n\t\t\tvalue=\"${BASH_REMATCH[3]}\"\n\t\t\tvtype=\"${BASH_REMATCH[2]}\"\n\t\telse\n\t\t\tcontinue\n\t\tfi\n\t\t[[ -n $key && -n $value ]] || continue\n\t\t[[ -z ${errors[\"$key\"]} ]] || continue\n\t\terrors[\"$key\"]=\"$value\"\n\t\tif [[ -v vtype ]]; then\n\t\t\tif [[ $key == FACILITY_* || $key == NO_ERROR ]]; then\n\t\t\t\tvtype=\"\"\n\t\t\telif [[ $vtype == *HANDLE* || $vtype == *HRESULT* ]]; then\n\t\t\t\tvtype=\"Handle\"\n\t\t\telse\n\t\t\t\tvtype=\"syscall.Errno\"\n\t\t\tfi\n\t\t\tlast_vtype=\"$vtype\"\n\t\telse\n\t\t\tvtype=\"\"\n\t\t\tif [[ $last_vtype == Handle && $value == NO_ERROR ]]; then\n\t\t\t\tvalue=\"S_OK\"\n\t\t\telif [[ $last_vtype == syscall.Errno && $value == NO_ERROR ]]; then\n\t\t\t\tvalue=\"ERROR_SUCCESS\"\n\t\t\tfi\n\t\tfi\n\n\t\techo \"$key $vtype = $value\"\n\tdone < \"$winerror\"\n\n\twhile read -r line; do\n\t\t[[ $line =~ ^#define\\ (STATUS_[^\\s]+)\\ +\\(\\(NTSTATUS\\)((0x)?[0-9a-fA-F]+)L?\\) ]] || continue\n\t\techo \"${BASH_REMATCH[1]} NTStatus = ${BASH_REMATCH[2]}\"\n\tdone < \"$ntstatus\"\n\n\techo \")\"\n} | gofmt > \"zerrors_windows.go\"\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/windows/mkknownfolderids.bash",
    "content": "#!/bin/bash\n\n# Copyright 2019 The Go Authors. All rights reserved.\n# Use of this source code is governed by a BSD-style\n# license that can be found in the LICENSE file.\n\nset -e\nshopt -s nullglob\n\nknownfolders=\"$(printf '%s\\n' \"/mnt/c/Program Files (x86)/Windows Kits/\"/*/Include/*/um/KnownFolders.h | sort -Vr | head -n 1)\"\n[[ -n $knownfolders ]] || { echo \"Unable to find KnownFolders.h\" >&2; exit 1; }\n\n{\n\techo \"// Code generated by 'mkknownfolderids.bash'; DO NOT EDIT.\"\n\techo\n\techo \"package windows\"\n\techo \"type KNOWNFOLDERID GUID\"\n\techo \"var (\"\n\twhile read -r line; do\n\t\t[[ $line =~ DEFINE_KNOWN_FOLDER\\((FOLDERID_[^,]+),[\\t\\ ]*(0x[^,]+),[\\t\\ ]*(0x[^,]+),[\\t\\ ]*(0x[^,]+),[\\t\\ ]*(0x[^,]+),[\\t\\ ]*(0x[^,]+),[\\t\\ ]*(0x[^,]+),[\\t\\ ]*(0x[^,]+),[\\t\\ ]*(0x[^,]+),[\\t\\ ]*(0x[^,]+),[\\t\\ ]*(0x[^,]+),[\\t\\ ]*(0x[^,]+)\\) ]] || continue\n\t\tprintf \"%s = &KNOWNFOLDERID{0x%08x, 0x%04x, 0x%04x, [8]byte{0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x}}\\n\" \\\n\t\t\t\"${BASH_REMATCH[1]}\" $(( \"${BASH_REMATCH[2]}\" )) $(( \"${BASH_REMATCH[3]}\" )) $(( \"${BASH_REMATCH[4]}\" )) \\\n\t\t\t$(( \"${BASH_REMATCH[5]}\" )) $(( \"${BASH_REMATCH[6]}\" )) $(( \"${BASH_REMATCH[7]}\" )) $(( \"${BASH_REMATCH[8]}\" )) \\\n\t\t\t$(( \"${BASH_REMATCH[9]}\" )) $(( \"${BASH_REMATCH[10]}\" )) $(( \"${BASH_REMATCH[11]}\" )) $(( \"${BASH_REMATCH[12]}\" ))\n\tdone < \"$knownfolders\"\n\techo \")\"\n} | gofmt > \"zknownfolderids_windows.go\"\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/windows/mksyscall.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build generate\n\npackage windows\n\n//go:generate go run golang.org/x/sys/windows/mkwinsyscall -output zsyscall_windows.go eventlog.go service.go syscall_windows.go security_windows.go setupapi_windows.go\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/windows/race.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build windows && race\n\npackage windows\n\nimport (\n\t\"runtime\"\n\t\"unsafe\"\n)\n\nconst raceenabled = true\n\nfunc raceAcquire(addr unsafe.Pointer) {\n\truntime.RaceAcquire(addr)\n}\n\nfunc raceReleaseMerge(addr unsafe.Pointer) {\n\truntime.RaceReleaseMerge(addr)\n}\n\nfunc raceReadRange(addr unsafe.Pointer, len int) {\n\truntime.RaceReadRange(addr, len)\n}\n\nfunc raceWriteRange(addr unsafe.Pointer, len int) {\n\truntime.RaceWriteRange(addr, len)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/windows/race0.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build windows && !race\n\npackage windows\n\nimport (\n\t\"unsafe\"\n)\n\nconst raceenabled = false\n\nfunc raceAcquire(addr unsafe.Pointer) {\n}\n\nfunc raceReleaseMerge(addr unsafe.Pointer) {\n}\n\nfunc raceReadRange(addr unsafe.Pointer, len int) {\n}\n\nfunc raceWriteRange(addr unsafe.Pointer, len int) {\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/windows/security_windows.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage windows\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nconst (\n\tNameUnknown          = 0\n\tNameFullyQualifiedDN = 1\n\tNameSamCompatible    = 2\n\tNameDisplay          = 3\n\tNameUniqueId         = 6\n\tNameCanonical        = 7\n\tNameUserPrincipal    = 8\n\tNameCanonicalEx      = 9\n\tNameServicePrincipal = 10\n\tNameDnsDomain        = 12\n)\n\n// This function returns 1 byte BOOLEAN rather than the 4 byte BOOL.\n// http://blogs.msdn.com/b/drnick/archive/2007/12/19/windows-and-upn-format-credentials.aspx\n//sys\tTranslateName(accName *uint16, accNameFormat uint32, desiredNameFormat uint32, translatedName *uint16, nSize *uint32) (err error) [failretval&0xff==0] = secur32.TranslateNameW\n//sys\tGetUserNameEx(nameFormat uint32, nameBuffre *uint16, nSize *uint32) (err error) [failretval&0xff==0] = secur32.GetUserNameExW\n\n// TranslateAccountName converts a directory service\n// object name from one format to another.\nfunc TranslateAccountName(username string, from, to uint32, initSize int) (string, error) {\n\tu, e := UTF16PtrFromString(username)\n\tif e != nil {\n\t\treturn \"\", e\n\t}\n\tn := uint32(50)\n\tfor {\n\t\tb := make([]uint16, n)\n\t\te = TranslateName(u, from, to, &b[0], &n)\n\t\tif e == nil {\n\t\t\treturn UTF16ToString(b[:n]), nil\n\t\t}\n\t\tif e != ERROR_INSUFFICIENT_BUFFER {\n\t\t\treturn \"\", e\n\t\t}\n\t\tif n <= uint32(len(b)) {\n\t\t\treturn \"\", e\n\t\t}\n\t}\n}\n\nconst (\n\t// do not reorder\n\tNetSetupUnknownStatus = iota\n\tNetSetupUnjoined\n\tNetSetupWorkgroupName\n\tNetSetupDomainName\n)\n\ntype UserInfo10 struct {\n\tName       *uint16\n\tComment    *uint16\n\tUsrComment *uint16\n\tFullName   *uint16\n}\n\n//sys\tNetUserGetInfo(serverName *uint16, userName *uint16, level uint32, buf **byte) (neterr error) = netapi32.NetUserGetInfo\n//sys\tNetGetJoinInformation(server *uint16, name **uint16, bufType *uint32) (neterr error) = netapi32.NetGetJoinInformation\n//sys\tNetApiBufferFree(buf *byte) (neterr error) = netapi32.NetApiBufferFree\n//sys   NetUserEnum(serverName *uint16, level uint32, filter uint32, buf **byte, prefMaxLen uint32, entriesRead *uint32, totalEntries *uint32, resumeHandle *uint32) (neterr error) = netapi32.NetUserEnum\n\nconst (\n\t// do not reorder\n\tSidTypeUser = 1 + iota\n\tSidTypeGroup\n\tSidTypeDomain\n\tSidTypeAlias\n\tSidTypeWellKnownGroup\n\tSidTypeDeletedAccount\n\tSidTypeInvalid\n\tSidTypeUnknown\n\tSidTypeComputer\n\tSidTypeLabel\n)\n\ntype SidIdentifierAuthority struct {\n\tValue [6]byte\n}\n\nvar (\n\tSECURITY_NULL_SID_AUTHORITY        = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 0}}\n\tSECURITY_WORLD_SID_AUTHORITY       = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 1}}\n\tSECURITY_LOCAL_SID_AUTHORITY       = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 2}}\n\tSECURITY_CREATOR_SID_AUTHORITY     = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 3}}\n\tSECURITY_NON_UNIQUE_AUTHORITY      = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 4}}\n\tSECURITY_NT_AUTHORITY              = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 5}}\n\tSECURITY_MANDATORY_LABEL_AUTHORITY = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 16}}\n)\n\nconst (\n\tSECURITY_NULL_RID                   = 0\n\tSECURITY_WORLD_RID                  = 0\n\tSECURITY_LOCAL_RID                  = 0\n\tSECURITY_CREATOR_OWNER_RID          = 0\n\tSECURITY_CREATOR_GROUP_RID          = 1\n\tSECURITY_DIALUP_RID                 = 1\n\tSECURITY_NETWORK_RID                = 2\n\tSECURITY_BATCH_RID                  = 3\n\tSECURITY_INTERACTIVE_RID            = 4\n\tSECURITY_LOGON_IDS_RID              = 5\n\tSECURITY_SERVICE_RID                = 6\n\tSECURITY_LOCAL_SYSTEM_RID           = 18\n\tSECURITY_BUILTIN_DOMAIN_RID         = 32\n\tSECURITY_PRINCIPAL_SELF_RID         = 10\n\tSECURITY_CREATOR_OWNER_SERVER_RID   = 0x2\n\tSECURITY_CREATOR_GROUP_SERVER_RID   = 0x3\n\tSECURITY_LOGON_IDS_RID_COUNT        = 0x3\n\tSECURITY_ANONYMOUS_LOGON_RID        = 0x7\n\tSECURITY_PROXY_RID                  = 0x8\n\tSECURITY_ENTERPRISE_CONTROLLERS_RID = 0x9\n\tSECURITY_SERVER_LOGON_RID           = SECURITY_ENTERPRISE_CONTROLLERS_RID\n\tSECURITY_AUTHENTICATED_USER_RID     = 0xb\n\tSECURITY_RESTRICTED_CODE_RID        = 0xc\n\tSECURITY_NT_NON_UNIQUE_RID          = 0x15\n)\n\n// Predefined domain-relative RIDs for local groups.\n// See https://msdn.microsoft.com/en-us/library/windows/desktop/aa379649(v=vs.85).aspx\nconst (\n\tDOMAIN_ALIAS_RID_ADMINS                         = 0x220\n\tDOMAIN_ALIAS_RID_USERS                          = 0x221\n\tDOMAIN_ALIAS_RID_GUESTS                         = 0x222\n\tDOMAIN_ALIAS_RID_POWER_USERS                    = 0x223\n\tDOMAIN_ALIAS_RID_ACCOUNT_OPS                    = 0x224\n\tDOMAIN_ALIAS_RID_SYSTEM_OPS                     = 0x225\n\tDOMAIN_ALIAS_RID_PRINT_OPS                      = 0x226\n\tDOMAIN_ALIAS_RID_BACKUP_OPS                     = 0x227\n\tDOMAIN_ALIAS_RID_REPLICATOR                     = 0x228\n\tDOMAIN_ALIAS_RID_RAS_SERVERS                    = 0x229\n\tDOMAIN_ALIAS_RID_PREW2KCOMPACCESS               = 0x22a\n\tDOMAIN_ALIAS_RID_REMOTE_DESKTOP_USERS           = 0x22b\n\tDOMAIN_ALIAS_RID_NETWORK_CONFIGURATION_OPS      = 0x22c\n\tDOMAIN_ALIAS_RID_INCOMING_FOREST_TRUST_BUILDERS = 0x22d\n\tDOMAIN_ALIAS_RID_MONITORING_USERS               = 0x22e\n\tDOMAIN_ALIAS_RID_LOGGING_USERS                  = 0x22f\n\tDOMAIN_ALIAS_RID_AUTHORIZATIONACCESS            = 0x230\n\tDOMAIN_ALIAS_RID_TS_LICENSE_SERVERS             = 0x231\n\tDOMAIN_ALIAS_RID_DCOM_USERS                     = 0x232\n\tDOMAIN_ALIAS_RID_IUSERS                         = 0x238\n\tDOMAIN_ALIAS_RID_CRYPTO_OPERATORS               = 0x239\n\tDOMAIN_ALIAS_RID_CACHEABLE_PRINCIPALS_GROUP     = 0x23b\n\tDOMAIN_ALIAS_RID_NON_CACHEABLE_PRINCIPALS_GROUP = 0x23c\n\tDOMAIN_ALIAS_RID_EVENT_LOG_READERS_GROUP        = 0x23d\n\tDOMAIN_ALIAS_RID_CERTSVC_DCOM_ACCESS_GROUP      = 0x23e\n)\n\n//sys\tLookupAccountSid(systemName *uint16, sid *SID, name *uint16, nameLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) = advapi32.LookupAccountSidW\n//sys\tLookupAccountName(systemName *uint16, accountName *uint16, sid *SID, sidLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) = advapi32.LookupAccountNameW\n//sys\tConvertSidToStringSid(sid *SID, stringSid **uint16) (err error) = advapi32.ConvertSidToStringSidW\n//sys\tConvertStringSidToSid(stringSid *uint16, sid **SID) (err error) = advapi32.ConvertStringSidToSidW\n//sys\tGetLengthSid(sid *SID) (len uint32) = advapi32.GetLengthSid\n//sys\tCopySid(destSidLen uint32, destSid *SID, srcSid *SID) (err error) = advapi32.CopySid\n//sys\tAllocateAndInitializeSid(identAuth *SidIdentifierAuthority, subAuth byte, subAuth0 uint32, subAuth1 uint32, subAuth2 uint32, subAuth3 uint32, subAuth4 uint32, subAuth5 uint32, subAuth6 uint32, subAuth7 uint32, sid **SID) (err error) = advapi32.AllocateAndInitializeSid\n//sys\tcreateWellKnownSid(sidType WELL_KNOWN_SID_TYPE, domainSid *SID, sid *SID, sizeSid *uint32) (err error) = advapi32.CreateWellKnownSid\n//sys\tisWellKnownSid(sid *SID, sidType WELL_KNOWN_SID_TYPE) (isWellKnown bool) = advapi32.IsWellKnownSid\n//sys\tFreeSid(sid *SID) (err error) [failretval!=0] = advapi32.FreeSid\n//sys\tEqualSid(sid1 *SID, sid2 *SID) (isEqual bool) = advapi32.EqualSid\n//sys\tgetSidIdentifierAuthority(sid *SID) (authority *SidIdentifierAuthority) = advapi32.GetSidIdentifierAuthority\n//sys\tgetSidSubAuthorityCount(sid *SID) (count *uint8) = advapi32.GetSidSubAuthorityCount\n//sys\tgetSidSubAuthority(sid *SID, index uint32) (subAuthority *uint32) = advapi32.GetSidSubAuthority\n//sys\tisValidSid(sid *SID) (isValid bool) = advapi32.IsValidSid\n\n// The security identifier (SID) structure is a variable-length\n// structure used to uniquely identify users or groups.\ntype SID struct{}\n\n// StringToSid converts a string-format security identifier\n// SID into a valid, functional SID.\nfunc StringToSid(s string) (*SID, error) {\n\tvar sid *SID\n\tp, e := UTF16PtrFromString(s)\n\tif e != nil {\n\t\treturn nil, e\n\t}\n\te = ConvertStringSidToSid(p, &sid)\n\tif e != nil {\n\t\treturn nil, e\n\t}\n\tdefer LocalFree((Handle)(unsafe.Pointer(sid)))\n\treturn sid.Copy()\n}\n\n// LookupSID retrieves a security identifier SID for the account\n// and the name of the domain on which the account was found.\n// System specify target computer to search.\nfunc LookupSID(system, account string) (sid *SID, domain string, accType uint32, err error) {\n\tif len(account) == 0 {\n\t\treturn nil, \"\", 0, syscall.EINVAL\n\t}\n\tacc, e := UTF16PtrFromString(account)\n\tif e != nil {\n\t\treturn nil, \"\", 0, e\n\t}\n\tvar sys *uint16\n\tif len(system) > 0 {\n\t\tsys, e = UTF16PtrFromString(system)\n\t\tif e != nil {\n\t\t\treturn nil, \"\", 0, e\n\t\t}\n\t}\n\tn := uint32(50)\n\tdn := uint32(50)\n\tfor {\n\t\tb := make([]byte, n)\n\t\tdb := make([]uint16, dn)\n\t\tsid = (*SID)(unsafe.Pointer(&b[0]))\n\t\te = LookupAccountName(sys, acc, sid, &n, &db[0], &dn, &accType)\n\t\tif e == nil {\n\t\t\treturn sid, UTF16ToString(db), accType, nil\n\t\t}\n\t\tif e != ERROR_INSUFFICIENT_BUFFER {\n\t\t\treturn nil, \"\", 0, e\n\t\t}\n\t\tif n <= uint32(len(b)) {\n\t\t\treturn nil, \"\", 0, e\n\t\t}\n\t}\n}\n\n// String converts SID to a string format suitable for display, storage, or transmission.\nfunc (sid *SID) String() string {\n\tvar s *uint16\n\te := ConvertSidToStringSid(sid, &s)\n\tif e != nil {\n\t\treturn \"\"\n\t}\n\tdefer LocalFree((Handle)(unsafe.Pointer(s)))\n\treturn UTF16ToString((*[256]uint16)(unsafe.Pointer(s))[:])\n}\n\n// Len returns the length, in bytes, of a valid security identifier SID.\nfunc (sid *SID) Len() int {\n\treturn int(GetLengthSid(sid))\n}\n\n// Copy creates a duplicate of security identifier SID.\nfunc (sid *SID) Copy() (*SID, error) {\n\tb := make([]byte, sid.Len())\n\tsid2 := (*SID)(unsafe.Pointer(&b[0]))\n\te := CopySid(uint32(len(b)), sid2, sid)\n\tif e != nil {\n\t\treturn nil, e\n\t}\n\treturn sid2, nil\n}\n\n// IdentifierAuthority returns the identifier authority of the SID.\nfunc (sid *SID) IdentifierAuthority() SidIdentifierAuthority {\n\treturn *getSidIdentifierAuthority(sid)\n}\n\n// SubAuthorityCount returns the number of sub-authorities in the SID.\nfunc (sid *SID) SubAuthorityCount() uint8 {\n\treturn *getSidSubAuthorityCount(sid)\n}\n\n// SubAuthority returns the sub-authority of the SID as specified by\n// the index, which must be less than sid.SubAuthorityCount().\nfunc (sid *SID) SubAuthority(idx uint32) uint32 {\n\tif idx >= uint32(sid.SubAuthorityCount()) {\n\t\tpanic(\"sub-authority index out of range\")\n\t}\n\treturn *getSidSubAuthority(sid, idx)\n}\n\n// IsValid returns whether the SID has a valid revision and length.\nfunc (sid *SID) IsValid() bool {\n\treturn isValidSid(sid)\n}\n\n// Equals compares two SIDs for equality.\nfunc (sid *SID) Equals(sid2 *SID) bool {\n\treturn EqualSid(sid, sid2)\n}\n\n// IsWellKnown determines whether the SID matches the well-known sidType.\nfunc (sid *SID) IsWellKnown(sidType WELL_KNOWN_SID_TYPE) bool {\n\treturn isWellKnownSid(sid, sidType)\n}\n\n// LookupAccount retrieves the name of the account for this SID\n// and the name of the first domain on which this SID is found.\n// System specify target computer to search for.\nfunc (sid *SID) LookupAccount(system string) (account, domain string, accType uint32, err error) {\n\tvar sys *uint16\n\tif len(system) > 0 {\n\t\tsys, err = UTF16PtrFromString(system)\n\t\tif err != nil {\n\t\t\treturn \"\", \"\", 0, err\n\t\t}\n\t}\n\tn := uint32(50)\n\tdn := uint32(50)\n\tfor {\n\t\tb := make([]uint16, n)\n\t\tdb := make([]uint16, dn)\n\t\te := LookupAccountSid(sys, sid, &b[0], &n, &db[0], &dn, &accType)\n\t\tif e == nil {\n\t\t\treturn UTF16ToString(b), UTF16ToString(db), accType, nil\n\t\t}\n\t\tif e != ERROR_INSUFFICIENT_BUFFER {\n\t\t\treturn \"\", \"\", 0, e\n\t\t}\n\t\tif n <= uint32(len(b)) {\n\t\t\treturn \"\", \"\", 0, e\n\t\t}\n\t}\n}\n\n// Various types of pre-specified SIDs that can be synthesized and compared at runtime.\ntype WELL_KNOWN_SID_TYPE uint32\n\nconst (\n\tWinNullSid                                    = 0\n\tWinWorldSid                                   = 1\n\tWinLocalSid                                   = 2\n\tWinCreatorOwnerSid                            = 3\n\tWinCreatorGroupSid                            = 4\n\tWinCreatorOwnerServerSid                      = 5\n\tWinCreatorGroupServerSid                      = 6\n\tWinNtAuthoritySid                             = 7\n\tWinDialupSid                                  = 8\n\tWinNetworkSid                                 = 9\n\tWinBatchSid                                   = 10\n\tWinInteractiveSid                             = 11\n\tWinServiceSid                                 = 12\n\tWinAnonymousSid                               = 13\n\tWinProxySid                                   = 14\n\tWinEnterpriseControllersSid                   = 15\n\tWinSelfSid                                    = 16\n\tWinAuthenticatedUserSid                       = 17\n\tWinRestrictedCodeSid                          = 18\n\tWinTerminalServerSid                          = 19\n\tWinRemoteLogonIdSid                           = 20\n\tWinLogonIdsSid                                = 21\n\tWinLocalSystemSid                             = 22\n\tWinLocalServiceSid                            = 23\n\tWinNetworkServiceSid                          = 24\n\tWinBuiltinDomainSid                           = 25\n\tWinBuiltinAdministratorsSid                   = 26\n\tWinBuiltinUsersSid                            = 27\n\tWinBuiltinGuestsSid                           = 28\n\tWinBuiltinPowerUsersSid                       = 29\n\tWinBuiltinAccountOperatorsSid                 = 30\n\tWinBuiltinSystemOperatorsSid                  = 31\n\tWinBuiltinPrintOperatorsSid                   = 32\n\tWinBuiltinBackupOperatorsSid                  = 33\n\tWinBuiltinReplicatorSid                       = 34\n\tWinBuiltinPreWindows2000CompatibleAccessSid   = 35\n\tWinBuiltinRemoteDesktopUsersSid               = 36\n\tWinBuiltinNetworkConfigurationOperatorsSid    = 37\n\tWinAccountAdministratorSid                    = 38\n\tWinAccountGuestSid                            = 39\n\tWinAccountKrbtgtSid                           = 40\n\tWinAccountDomainAdminsSid                     = 41\n\tWinAccountDomainUsersSid                      = 42\n\tWinAccountDomainGuestsSid                     = 43\n\tWinAccountComputersSid                        = 44\n\tWinAccountControllersSid                      = 45\n\tWinAccountCertAdminsSid                       = 46\n\tWinAccountSchemaAdminsSid                     = 47\n\tWinAccountEnterpriseAdminsSid                 = 48\n\tWinAccountPolicyAdminsSid                     = 49\n\tWinAccountRasAndIasServersSid                 = 50\n\tWinNTLMAuthenticationSid                      = 51\n\tWinDigestAuthenticationSid                    = 52\n\tWinSChannelAuthenticationSid                  = 53\n\tWinThisOrganizationSid                        = 54\n\tWinOtherOrganizationSid                       = 55\n\tWinBuiltinIncomingForestTrustBuildersSid      = 56\n\tWinBuiltinPerfMonitoringUsersSid              = 57\n\tWinBuiltinPerfLoggingUsersSid                 = 58\n\tWinBuiltinAuthorizationAccessSid              = 59\n\tWinBuiltinTerminalServerLicenseServersSid     = 60\n\tWinBuiltinDCOMUsersSid                        = 61\n\tWinBuiltinIUsersSid                           = 62\n\tWinIUserSid                                   = 63\n\tWinBuiltinCryptoOperatorsSid                  = 64\n\tWinUntrustedLabelSid                          = 65\n\tWinLowLabelSid                                = 66\n\tWinMediumLabelSid                             = 67\n\tWinHighLabelSid                               = 68\n\tWinSystemLabelSid                             = 69\n\tWinWriteRestrictedCodeSid                     = 70\n\tWinCreatorOwnerRightsSid                      = 71\n\tWinCacheablePrincipalsGroupSid                = 72\n\tWinNonCacheablePrincipalsGroupSid             = 73\n\tWinEnterpriseReadonlyControllersSid           = 74\n\tWinAccountReadonlyControllersSid              = 75\n\tWinBuiltinEventLogReadersGroup                = 76\n\tWinNewEnterpriseReadonlyControllersSid        = 77\n\tWinBuiltinCertSvcDComAccessGroup              = 78\n\tWinMediumPlusLabelSid                         = 79\n\tWinLocalLogonSid                              = 80\n\tWinConsoleLogonSid                            = 81\n\tWinThisOrganizationCertificateSid             = 82\n\tWinApplicationPackageAuthoritySid             = 83\n\tWinBuiltinAnyPackageSid                       = 84\n\tWinCapabilityInternetClientSid                = 85\n\tWinCapabilityInternetClientServerSid          = 86\n\tWinCapabilityPrivateNetworkClientServerSid    = 87\n\tWinCapabilityPicturesLibrarySid               = 88\n\tWinCapabilityVideosLibrarySid                 = 89\n\tWinCapabilityMusicLibrarySid                  = 90\n\tWinCapabilityDocumentsLibrarySid              = 91\n\tWinCapabilitySharedUserCertificatesSid        = 92\n\tWinCapabilityEnterpriseAuthenticationSid      = 93\n\tWinCapabilityRemovableStorageSid              = 94\n\tWinBuiltinRDSRemoteAccessServersSid           = 95\n\tWinBuiltinRDSEndpointServersSid               = 96\n\tWinBuiltinRDSManagementServersSid             = 97\n\tWinUserModeDriversSid                         = 98\n\tWinBuiltinHyperVAdminsSid                     = 99\n\tWinAccountCloneableControllersSid             = 100\n\tWinBuiltinAccessControlAssistanceOperatorsSid = 101\n\tWinBuiltinRemoteManagementUsersSid            = 102\n\tWinAuthenticationAuthorityAssertedSid         = 103\n\tWinAuthenticationServiceAssertedSid           = 104\n\tWinLocalAccountSid                            = 105\n\tWinLocalAccountAndAdministratorSid            = 106\n\tWinAccountProtectedUsersSid                   = 107\n\tWinCapabilityAppointmentsSid                  = 108\n\tWinCapabilityContactsSid                      = 109\n\tWinAccountDefaultSystemManagedSid             = 110\n\tWinBuiltinDefaultSystemManagedGroupSid        = 111\n\tWinBuiltinStorageReplicaAdminsSid             = 112\n\tWinAccountKeyAdminsSid                        = 113\n\tWinAccountEnterpriseKeyAdminsSid              = 114\n\tWinAuthenticationKeyTrustSid                  = 115\n\tWinAuthenticationKeyPropertyMFASid            = 116\n\tWinAuthenticationKeyPropertyAttestationSid    = 117\n\tWinAuthenticationFreshKeyAuthSid              = 118\n\tWinBuiltinDeviceOwnersSid                     = 119\n)\n\n// Creates a SID for a well-known predefined alias, generally using the constants of the form\n// Win*Sid, for the local machine.\nfunc CreateWellKnownSid(sidType WELL_KNOWN_SID_TYPE) (*SID, error) {\n\treturn CreateWellKnownDomainSid(sidType, nil)\n}\n\n// Creates a SID for a well-known predefined alias, generally using the constants of the form\n// Win*Sid, for the domain specified by the domainSid parameter.\nfunc CreateWellKnownDomainSid(sidType WELL_KNOWN_SID_TYPE, domainSid *SID) (*SID, error) {\n\tn := uint32(50)\n\tfor {\n\t\tb := make([]byte, n)\n\t\tsid := (*SID)(unsafe.Pointer(&b[0]))\n\t\terr := createWellKnownSid(sidType, domainSid, sid, &n)\n\t\tif err == nil {\n\t\t\treturn sid, nil\n\t\t}\n\t\tif err != ERROR_INSUFFICIENT_BUFFER {\n\t\t\treturn nil, err\n\t\t}\n\t\tif n <= uint32(len(b)) {\n\t\t\treturn nil, err\n\t\t}\n\t}\n}\n\nconst (\n\t// do not reorder\n\tTOKEN_ASSIGN_PRIMARY = 1 << iota\n\tTOKEN_DUPLICATE\n\tTOKEN_IMPERSONATE\n\tTOKEN_QUERY\n\tTOKEN_QUERY_SOURCE\n\tTOKEN_ADJUST_PRIVILEGES\n\tTOKEN_ADJUST_GROUPS\n\tTOKEN_ADJUST_DEFAULT\n\tTOKEN_ADJUST_SESSIONID\n\n\tTOKEN_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED |\n\t\tTOKEN_ASSIGN_PRIMARY |\n\t\tTOKEN_DUPLICATE |\n\t\tTOKEN_IMPERSONATE |\n\t\tTOKEN_QUERY |\n\t\tTOKEN_QUERY_SOURCE |\n\t\tTOKEN_ADJUST_PRIVILEGES |\n\t\tTOKEN_ADJUST_GROUPS |\n\t\tTOKEN_ADJUST_DEFAULT |\n\t\tTOKEN_ADJUST_SESSIONID\n\tTOKEN_READ  = STANDARD_RIGHTS_READ | TOKEN_QUERY\n\tTOKEN_WRITE = STANDARD_RIGHTS_WRITE |\n\t\tTOKEN_ADJUST_PRIVILEGES |\n\t\tTOKEN_ADJUST_GROUPS |\n\t\tTOKEN_ADJUST_DEFAULT\n\tTOKEN_EXECUTE = STANDARD_RIGHTS_EXECUTE\n)\n\nconst (\n\t// do not reorder\n\tTokenUser = 1 + iota\n\tTokenGroups\n\tTokenPrivileges\n\tTokenOwner\n\tTokenPrimaryGroup\n\tTokenDefaultDacl\n\tTokenSource\n\tTokenType\n\tTokenImpersonationLevel\n\tTokenStatistics\n\tTokenRestrictedSids\n\tTokenSessionId\n\tTokenGroupsAndPrivileges\n\tTokenSessionReference\n\tTokenSandBoxInert\n\tTokenAuditPolicy\n\tTokenOrigin\n\tTokenElevationType\n\tTokenLinkedToken\n\tTokenElevation\n\tTokenHasRestrictions\n\tTokenAccessInformation\n\tTokenVirtualizationAllowed\n\tTokenVirtualizationEnabled\n\tTokenIntegrityLevel\n\tTokenUIAccess\n\tTokenMandatoryPolicy\n\tTokenLogonSid\n\tMaxTokenInfoClass\n)\n\n// Group attributes inside of Tokengroups.Groups[i].Attributes\nconst (\n\tSE_GROUP_MANDATORY          = 0x00000001\n\tSE_GROUP_ENABLED_BY_DEFAULT = 0x00000002\n\tSE_GROUP_ENABLED            = 0x00000004\n\tSE_GROUP_OWNER              = 0x00000008\n\tSE_GROUP_USE_FOR_DENY_ONLY  = 0x00000010\n\tSE_GROUP_INTEGRITY          = 0x00000020\n\tSE_GROUP_INTEGRITY_ENABLED  = 0x00000040\n\tSE_GROUP_LOGON_ID           = 0xC0000000\n\tSE_GROUP_RESOURCE           = 0x20000000\n\tSE_GROUP_VALID_ATTRIBUTES   = SE_GROUP_MANDATORY | SE_GROUP_ENABLED_BY_DEFAULT | SE_GROUP_ENABLED | SE_GROUP_OWNER | SE_GROUP_USE_FOR_DENY_ONLY | SE_GROUP_LOGON_ID | SE_GROUP_RESOURCE | SE_GROUP_INTEGRITY | SE_GROUP_INTEGRITY_ENABLED\n)\n\n// Privilege attributes\nconst (\n\tSE_PRIVILEGE_ENABLED_BY_DEFAULT = 0x00000001\n\tSE_PRIVILEGE_ENABLED            = 0x00000002\n\tSE_PRIVILEGE_REMOVED            = 0x00000004\n\tSE_PRIVILEGE_USED_FOR_ACCESS    = 0x80000000\n\tSE_PRIVILEGE_VALID_ATTRIBUTES   = SE_PRIVILEGE_ENABLED_BY_DEFAULT | SE_PRIVILEGE_ENABLED | SE_PRIVILEGE_REMOVED | SE_PRIVILEGE_USED_FOR_ACCESS\n)\n\n// Token types\nconst (\n\tTokenPrimary       = 1\n\tTokenImpersonation = 2\n)\n\n// Impersonation levels\nconst (\n\tSecurityAnonymous      = 0\n\tSecurityIdentification = 1\n\tSecurityImpersonation  = 2\n\tSecurityDelegation     = 3\n)\n\ntype LUID struct {\n\tLowPart  uint32\n\tHighPart int32\n}\n\ntype LUIDAndAttributes struct {\n\tLuid       LUID\n\tAttributes uint32\n}\n\ntype SIDAndAttributes struct {\n\tSid        *SID\n\tAttributes uint32\n}\n\ntype Tokenuser struct {\n\tUser SIDAndAttributes\n}\n\ntype Tokenprimarygroup struct {\n\tPrimaryGroup *SID\n}\n\ntype Tokengroups struct {\n\tGroupCount uint32\n\tGroups     [1]SIDAndAttributes // Use AllGroups() for iterating.\n}\n\n// AllGroups returns a slice that can be used to iterate over the groups in g.\nfunc (g *Tokengroups) AllGroups() []SIDAndAttributes {\n\treturn (*[(1 << 28) - 1]SIDAndAttributes)(unsafe.Pointer(&g.Groups[0]))[:g.GroupCount:g.GroupCount]\n}\n\ntype Tokenprivileges struct {\n\tPrivilegeCount uint32\n\tPrivileges     [1]LUIDAndAttributes // Use AllPrivileges() for iterating.\n}\n\n// AllPrivileges returns a slice that can be used to iterate over the privileges in p.\nfunc (p *Tokenprivileges) AllPrivileges() []LUIDAndAttributes {\n\treturn (*[(1 << 27) - 1]LUIDAndAttributes)(unsafe.Pointer(&p.Privileges[0]))[:p.PrivilegeCount:p.PrivilegeCount]\n}\n\ntype Tokenmandatorylabel struct {\n\tLabel SIDAndAttributes\n}\n\nfunc (tml *Tokenmandatorylabel) Size() uint32 {\n\treturn uint32(unsafe.Sizeof(Tokenmandatorylabel{})) + GetLengthSid(tml.Label.Sid)\n}\n\n// Authorization Functions\n//sys\tcheckTokenMembership(tokenHandle Token, sidToCheck *SID, isMember *int32) (err error) = advapi32.CheckTokenMembership\n//sys\tisTokenRestricted(tokenHandle Token) (ret bool, err error) [!failretval] = advapi32.IsTokenRestricted\n//sys\tOpenProcessToken(process Handle, access uint32, token *Token) (err error) = advapi32.OpenProcessToken\n//sys\tOpenThreadToken(thread Handle, access uint32, openAsSelf bool, token *Token) (err error) = advapi32.OpenThreadToken\n//sys\tImpersonateSelf(impersonationlevel uint32) (err error) = advapi32.ImpersonateSelf\n//sys\tRevertToSelf() (err error) = advapi32.RevertToSelf\n//sys\tSetThreadToken(thread *Handle, token Token) (err error) = advapi32.SetThreadToken\n//sys\tLookupPrivilegeValue(systemname *uint16, name *uint16, luid *LUID) (err error) = advapi32.LookupPrivilegeValueW\n//sys\tAdjustTokenPrivileges(token Token, disableAllPrivileges bool, newstate *Tokenprivileges, buflen uint32, prevstate *Tokenprivileges, returnlen *uint32) (err error) = advapi32.AdjustTokenPrivileges\n//sys\tAdjustTokenGroups(token Token, resetToDefault bool, newstate *Tokengroups, buflen uint32, prevstate *Tokengroups, returnlen *uint32) (err error) = advapi32.AdjustTokenGroups\n//sys\tGetTokenInformation(token Token, infoClass uint32, info *byte, infoLen uint32, returnedLen *uint32) (err error) = advapi32.GetTokenInformation\n//sys\tSetTokenInformation(token Token, infoClass uint32, info *byte, infoLen uint32) (err error) = advapi32.SetTokenInformation\n//sys\tDuplicateTokenEx(existingToken Token, desiredAccess uint32, tokenAttributes *SecurityAttributes, impersonationLevel uint32, tokenType uint32, newToken *Token) (err error) = advapi32.DuplicateTokenEx\n//sys\tGetUserProfileDirectory(t Token, dir *uint16, dirLen *uint32) (err error) = userenv.GetUserProfileDirectoryW\n//sys\tgetSystemDirectory(dir *uint16, dirLen uint32) (len uint32, err error) = kernel32.GetSystemDirectoryW\n//sys\tgetWindowsDirectory(dir *uint16, dirLen uint32) (len uint32, err error) = kernel32.GetWindowsDirectoryW\n//sys\tgetSystemWindowsDirectory(dir *uint16, dirLen uint32) (len uint32, err error) = kernel32.GetSystemWindowsDirectoryW\n\n// An access token contains the security information for a logon session.\n// The system creates an access token when a user logs on, and every\n// process executed on behalf of the user has a copy of the token.\n// The token identifies the user, the user's groups, and the user's\n// privileges. The system uses the token to control access to securable\n// objects and to control the ability of the user to perform various\n// system-related operations on the local computer.\ntype Token Handle\n\n// OpenCurrentProcessToken opens an access token associated with current\n// process with TOKEN_QUERY access. It is a real token that needs to be closed.\n//\n// Deprecated: Explicitly call OpenProcessToken(CurrentProcess(), ...)\n// with the desired access instead, or use GetCurrentProcessToken for a\n// TOKEN_QUERY token.\nfunc OpenCurrentProcessToken() (Token, error) {\n\tvar token Token\n\terr := OpenProcessToken(CurrentProcess(), TOKEN_QUERY, &token)\n\treturn token, err\n}\n\n// GetCurrentProcessToken returns the access token associated with\n// the current process. It is a pseudo token that does not need\n// to be closed.\nfunc GetCurrentProcessToken() Token {\n\treturn Token(^uintptr(4 - 1))\n}\n\n// GetCurrentThreadToken return the access token associated with\n// the current thread. It is a pseudo token that does not need\n// to be closed.\nfunc GetCurrentThreadToken() Token {\n\treturn Token(^uintptr(5 - 1))\n}\n\n// GetCurrentThreadEffectiveToken returns the effective access token\n// associated with the current thread. It is a pseudo token that does\n// not need to be closed.\nfunc GetCurrentThreadEffectiveToken() Token {\n\treturn Token(^uintptr(6 - 1))\n}\n\n// Close releases access to access token.\nfunc (t Token) Close() error {\n\treturn CloseHandle(Handle(t))\n}\n\n// getInfo retrieves a specified type of information about an access token.\nfunc (t Token) getInfo(class uint32, initSize int) (unsafe.Pointer, error) {\n\tn := uint32(initSize)\n\tfor {\n\t\tb := make([]byte, n)\n\t\te := GetTokenInformation(t, class, &b[0], uint32(len(b)), &n)\n\t\tif e == nil {\n\t\t\treturn unsafe.Pointer(&b[0]), nil\n\t\t}\n\t\tif e != ERROR_INSUFFICIENT_BUFFER {\n\t\t\treturn nil, e\n\t\t}\n\t\tif n <= uint32(len(b)) {\n\t\t\treturn nil, e\n\t\t}\n\t}\n}\n\n// GetTokenUser retrieves access token t user account information.\nfunc (t Token) GetTokenUser() (*Tokenuser, error) {\n\ti, e := t.getInfo(TokenUser, 50)\n\tif e != nil {\n\t\treturn nil, e\n\t}\n\treturn (*Tokenuser)(i), nil\n}\n\n// GetTokenGroups retrieves group accounts associated with access token t.\nfunc (t Token) GetTokenGroups() (*Tokengroups, error) {\n\ti, e := t.getInfo(TokenGroups, 50)\n\tif e != nil {\n\t\treturn nil, e\n\t}\n\treturn (*Tokengroups)(i), nil\n}\n\n// GetTokenPrimaryGroup retrieves access token t primary group information.\n// A pointer to a SID structure representing a group that will become\n// the primary group of any objects created by a process using this access token.\nfunc (t Token) GetTokenPrimaryGroup() (*Tokenprimarygroup, error) {\n\ti, e := t.getInfo(TokenPrimaryGroup, 50)\n\tif e != nil {\n\t\treturn nil, e\n\t}\n\treturn (*Tokenprimarygroup)(i), nil\n}\n\n// GetUserProfileDirectory retrieves path to the\n// root directory of the access token t user's profile.\nfunc (t Token) GetUserProfileDirectory() (string, error) {\n\tn := uint32(100)\n\tfor {\n\t\tb := make([]uint16, n)\n\t\te := GetUserProfileDirectory(t, &b[0], &n)\n\t\tif e == nil {\n\t\t\treturn UTF16ToString(b), nil\n\t\t}\n\t\tif e != ERROR_INSUFFICIENT_BUFFER {\n\t\t\treturn \"\", e\n\t\t}\n\t\tif n <= uint32(len(b)) {\n\t\t\treturn \"\", e\n\t\t}\n\t}\n}\n\n// IsElevated returns whether the current token is elevated from a UAC perspective.\nfunc (token Token) IsElevated() bool {\n\tvar isElevated uint32\n\tvar outLen uint32\n\terr := GetTokenInformation(token, TokenElevation, (*byte)(unsafe.Pointer(&isElevated)), uint32(unsafe.Sizeof(isElevated)), &outLen)\n\tif err != nil {\n\t\treturn false\n\t}\n\treturn outLen == uint32(unsafe.Sizeof(isElevated)) && isElevated != 0\n}\n\n// GetLinkedToken returns the linked token, which may be an elevated UAC token.\nfunc (token Token) GetLinkedToken() (Token, error) {\n\tvar linkedToken Token\n\tvar outLen uint32\n\terr := GetTokenInformation(token, TokenLinkedToken, (*byte)(unsafe.Pointer(&linkedToken)), uint32(unsafe.Sizeof(linkedToken)), &outLen)\n\tif err != nil {\n\t\treturn Token(0), err\n\t}\n\treturn linkedToken, nil\n}\n\n// GetSystemDirectory retrieves the path to current location of the system\n// directory, which is typically, though not always, `C:\\Windows\\System32`.\nfunc GetSystemDirectory() (string, error) {\n\tn := uint32(MAX_PATH)\n\tfor {\n\t\tb := make([]uint16, n)\n\t\tl, e := getSystemDirectory(&b[0], n)\n\t\tif e != nil {\n\t\t\treturn \"\", e\n\t\t}\n\t\tif l <= n {\n\t\t\treturn UTF16ToString(b[:l]), nil\n\t\t}\n\t\tn = l\n\t}\n}\n\n// GetWindowsDirectory retrieves the path to current location of the Windows\n// directory, which is typically, though not always, `C:\\Windows`. This may\n// be a private user directory in the case that the application is running\n// under a terminal server.\nfunc GetWindowsDirectory() (string, error) {\n\tn := uint32(MAX_PATH)\n\tfor {\n\t\tb := make([]uint16, n)\n\t\tl, e := getWindowsDirectory(&b[0], n)\n\t\tif e != nil {\n\t\t\treturn \"\", e\n\t\t}\n\t\tif l <= n {\n\t\t\treturn UTF16ToString(b[:l]), nil\n\t\t}\n\t\tn = l\n\t}\n}\n\n// GetSystemWindowsDirectory retrieves the path to current location of the\n// Windows directory, which is typically, though not always, `C:\\Windows`.\nfunc GetSystemWindowsDirectory() (string, error) {\n\tn := uint32(MAX_PATH)\n\tfor {\n\t\tb := make([]uint16, n)\n\t\tl, e := getSystemWindowsDirectory(&b[0], n)\n\t\tif e != nil {\n\t\t\treturn \"\", e\n\t\t}\n\t\tif l <= n {\n\t\t\treturn UTF16ToString(b[:l]), nil\n\t\t}\n\t\tn = l\n\t}\n}\n\n// IsMember reports whether the access token t is a member of the provided SID.\nfunc (t Token) IsMember(sid *SID) (bool, error) {\n\tvar b int32\n\tif e := checkTokenMembership(t, sid, &b); e != nil {\n\t\treturn false, e\n\t}\n\treturn b != 0, nil\n}\n\n// IsRestricted reports whether the access token t is a restricted token.\nfunc (t Token) IsRestricted() (isRestricted bool, err error) {\n\tisRestricted, err = isTokenRestricted(t)\n\tif !isRestricted && err == syscall.EINVAL {\n\t\t// If err is EINVAL, this returned ERROR_SUCCESS indicating a non-restricted token.\n\t\terr = nil\n\t}\n\treturn\n}\n\nconst (\n\tWTS_CONSOLE_CONNECT        = 0x1\n\tWTS_CONSOLE_DISCONNECT     = 0x2\n\tWTS_REMOTE_CONNECT         = 0x3\n\tWTS_REMOTE_DISCONNECT      = 0x4\n\tWTS_SESSION_LOGON          = 0x5\n\tWTS_SESSION_LOGOFF         = 0x6\n\tWTS_SESSION_LOCK           = 0x7\n\tWTS_SESSION_UNLOCK         = 0x8\n\tWTS_SESSION_REMOTE_CONTROL = 0x9\n\tWTS_SESSION_CREATE         = 0xa\n\tWTS_SESSION_TERMINATE      = 0xb\n)\n\nconst (\n\tWTSActive       = 0\n\tWTSConnected    = 1\n\tWTSConnectQuery = 2\n\tWTSShadow       = 3\n\tWTSDisconnected = 4\n\tWTSIdle         = 5\n\tWTSListen       = 6\n\tWTSReset        = 7\n\tWTSDown         = 8\n\tWTSInit         = 9\n)\n\ntype WTSSESSION_NOTIFICATION struct {\n\tSize      uint32\n\tSessionID uint32\n}\n\ntype WTS_SESSION_INFO struct {\n\tSessionID         uint32\n\tWindowStationName *uint16\n\tState             uint32\n}\n\n//sys WTSQueryUserToken(session uint32, token *Token) (err error) = wtsapi32.WTSQueryUserToken\n//sys WTSEnumerateSessions(handle Handle, reserved uint32, version uint32, sessions **WTS_SESSION_INFO, count *uint32) (err error) = wtsapi32.WTSEnumerateSessionsW\n//sys WTSFreeMemory(ptr uintptr) = wtsapi32.WTSFreeMemory\n//sys WTSGetActiveConsoleSessionId() (sessionID uint32)\n\ntype ACL struct {\n\taclRevision byte\n\tsbz1        byte\n\taclSize     uint16\n\tAceCount    uint16\n\tsbz2        uint16\n}\n\ntype SECURITY_DESCRIPTOR struct {\n\trevision byte\n\tsbz1     byte\n\tcontrol  SECURITY_DESCRIPTOR_CONTROL\n\towner    *SID\n\tgroup    *SID\n\tsacl     *ACL\n\tdacl     *ACL\n}\n\ntype SECURITY_QUALITY_OF_SERVICE struct {\n\tLength              uint32\n\tImpersonationLevel  uint32\n\tContextTrackingMode byte\n\tEffectiveOnly       byte\n}\n\n// Constants for the ContextTrackingMode field of SECURITY_QUALITY_OF_SERVICE.\nconst (\n\tSECURITY_STATIC_TRACKING  = 0\n\tSECURITY_DYNAMIC_TRACKING = 1\n)\n\ntype SecurityAttributes struct {\n\tLength             uint32\n\tSecurityDescriptor *SECURITY_DESCRIPTOR\n\tInheritHandle      uint32\n}\n\ntype SE_OBJECT_TYPE uint32\n\n// Constants for type SE_OBJECT_TYPE\nconst (\n\tSE_UNKNOWN_OBJECT_TYPE     = 0\n\tSE_FILE_OBJECT             = 1\n\tSE_SERVICE                 = 2\n\tSE_PRINTER                 = 3\n\tSE_REGISTRY_KEY            = 4\n\tSE_LMSHARE                 = 5\n\tSE_KERNEL_OBJECT           = 6\n\tSE_WINDOW_OBJECT           = 7\n\tSE_DS_OBJECT               = 8\n\tSE_DS_OBJECT_ALL           = 9\n\tSE_PROVIDER_DEFINED_OBJECT = 10\n\tSE_WMIGUID_OBJECT          = 11\n\tSE_REGISTRY_WOW64_32KEY    = 12\n\tSE_REGISTRY_WOW64_64KEY    = 13\n)\n\ntype SECURITY_INFORMATION uint32\n\n// Constants for type SECURITY_INFORMATION\nconst (\n\tOWNER_SECURITY_INFORMATION            = 0x00000001\n\tGROUP_SECURITY_INFORMATION            = 0x00000002\n\tDACL_SECURITY_INFORMATION             = 0x00000004\n\tSACL_SECURITY_INFORMATION             = 0x00000008\n\tLABEL_SECURITY_INFORMATION            = 0x00000010\n\tATTRIBUTE_SECURITY_INFORMATION        = 0x00000020\n\tSCOPE_SECURITY_INFORMATION            = 0x00000040\n\tBACKUP_SECURITY_INFORMATION           = 0x00010000\n\tPROTECTED_DACL_SECURITY_INFORMATION   = 0x80000000\n\tPROTECTED_SACL_SECURITY_INFORMATION   = 0x40000000\n\tUNPROTECTED_DACL_SECURITY_INFORMATION = 0x20000000\n\tUNPROTECTED_SACL_SECURITY_INFORMATION = 0x10000000\n)\n\ntype SECURITY_DESCRIPTOR_CONTROL uint16\n\n// Constants for type SECURITY_DESCRIPTOR_CONTROL\nconst (\n\tSE_OWNER_DEFAULTED       = 0x0001\n\tSE_GROUP_DEFAULTED       = 0x0002\n\tSE_DACL_PRESENT          = 0x0004\n\tSE_DACL_DEFAULTED        = 0x0008\n\tSE_SACL_PRESENT          = 0x0010\n\tSE_SACL_DEFAULTED        = 0x0020\n\tSE_DACL_AUTO_INHERIT_REQ = 0x0100\n\tSE_SACL_AUTO_INHERIT_REQ = 0x0200\n\tSE_DACL_AUTO_INHERITED   = 0x0400\n\tSE_SACL_AUTO_INHERITED   = 0x0800\n\tSE_DACL_PROTECTED        = 0x1000\n\tSE_SACL_PROTECTED        = 0x2000\n\tSE_RM_CONTROL_VALID      = 0x4000\n\tSE_SELF_RELATIVE         = 0x8000\n)\n\ntype ACCESS_MASK uint32\n\n// Constants for type ACCESS_MASK\nconst (\n\tDELETE                   = 0x00010000\n\tREAD_CONTROL             = 0x00020000\n\tWRITE_DAC                = 0x00040000\n\tWRITE_OWNER              = 0x00080000\n\tSYNCHRONIZE              = 0x00100000\n\tSTANDARD_RIGHTS_REQUIRED = 0x000F0000\n\tSTANDARD_RIGHTS_READ     = READ_CONTROL\n\tSTANDARD_RIGHTS_WRITE    = READ_CONTROL\n\tSTANDARD_RIGHTS_EXECUTE  = READ_CONTROL\n\tSTANDARD_RIGHTS_ALL      = 0x001F0000\n\tSPECIFIC_RIGHTS_ALL      = 0x0000FFFF\n\tACCESS_SYSTEM_SECURITY   = 0x01000000\n\tMAXIMUM_ALLOWED          = 0x02000000\n\tGENERIC_READ             = 0x80000000\n\tGENERIC_WRITE            = 0x40000000\n\tGENERIC_EXECUTE          = 0x20000000\n\tGENERIC_ALL              = 0x10000000\n)\n\ntype ACCESS_MODE uint32\n\n// Constants for type ACCESS_MODE\nconst (\n\tNOT_USED_ACCESS   = 0\n\tGRANT_ACCESS      = 1\n\tSET_ACCESS        = 2\n\tDENY_ACCESS       = 3\n\tREVOKE_ACCESS     = 4\n\tSET_AUDIT_SUCCESS = 5\n\tSET_AUDIT_FAILURE = 6\n)\n\n// Constants for AceFlags and Inheritance fields\nconst (\n\tNO_INHERITANCE                     = 0x0\n\tSUB_OBJECTS_ONLY_INHERIT           = 0x1\n\tSUB_CONTAINERS_ONLY_INHERIT        = 0x2\n\tSUB_CONTAINERS_AND_OBJECTS_INHERIT = 0x3\n\tINHERIT_NO_PROPAGATE               = 0x4\n\tINHERIT_ONLY                       = 0x8\n\tINHERITED_ACCESS_ENTRY             = 0x10\n\tINHERITED_PARENT                   = 0x10000000\n\tINHERITED_GRANDPARENT              = 0x20000000\n\tOBJECT_INHERIT_ACE                 = 0x1\n\tCONTAINER_INHERIT_ACE              = 0x2\n\tNO_PROPAGATE_INHERIT_ACE           = 0x4\n\tINHERIT_ONLY_ACE                   = 0x8\n\tINHERITED_ACE                      = 0x10\n\tVALID_INHERIT_FLAGS                = 0x1F\n)\n\ntype MULTIPLE_TRUSTEE_OPERATION uint32\n\n// Constants for MULTIPLE_TRUSTEE_OPERATION\nconst (\n\tNO_MULTIPLE_TRUSTEE    = 0\n\tTRUSTEE_IS_IMPERSONATE = 1\n)\n\ntype TRUSTEE_FORM uint32\n\n// Constants for TRUSTEE_FORM\nconst (\n\tTRUSTEE_IS_SID              = 0\n\tTRUSTEE_IS_NAME             = 1\n\tTRUSTEE_BAD_FORM            = 2\n\tTRUSTEE_IS_OBJECTS_AND_SID  = 3\n\tTRUSTEE_IS_OBJECTS_AND_NAME = 4\n)\n\ntype TRUSTEE_TYPE uint32\n\n// Constants for TRUSTEE_TYPE\nconst (\n\tTRUSTEE_IS_UNKNOWN          = 0\n\tTRUSTEE_IS_USER             = 1\n\tTRUSTEE_IS_GROUP            = 2\n\tTRUSTEE_IS_DOMAIN           = 3\n\tTRUSTEE_IS_ALIAS            = 4\n\tTRUSTEE_IS_WELL_KNOWN_GROUP = 5\n\tTRUSTEE_IS_DELETED          = 6\n\tTRUSTEE_IS_INVALID          = 7\n\tTRUSTEE_IS_COMPUTER         = 8\n)\n\n// Constants for ObjectsPresent field\nconst (\n\tACE_OBJECT_TYPE_PRESENT           = 0x1\n\tACE_INHERITED_OBJECT_TYPE_PRESENT = 0x2\n)\n\ntype EXPLICIT_ACCESS struct {\n\tAccessPermissions ACCESS_MASK\n\tAccessMode        ACCESS_MODE\n\tInheritance       uint32\n\tTrustee           TRUSTEE\n}\n\n// https://learn.microsoft.com/en-us/windows/win32/api/winnt/ns-winnt-ace_header\ntype ACE_HEADER struct {\n\tAceType  uint8\n\tAceFlags uint8\n\tAceSize  uint16\n}\n\n// https://learn.microsoft.com/en-us/windows/win32/api/winnt/ns-winnt-access_allowed_ace\ntype ACCESS_ALLOWED_ACE struct {\n\tHeader   ACE_HEADER\n\tMask     ACCESS_MASK\n\tSidStart uint32\n}\n\nconst (\n\t// Constants for AceType\n\t// https://learn.microsoft.com/en-us/windows/win32/api/winnt/ns-winnt-ace_header\n\tACCESS_ALLOWED_ACE_TYPE = 0\n\tACCESS_DENIED_ACE_TYPE  = 1\n)\n\n// This type is the union inside of TRUSTEE and must be created using one of the TrusteeValueFrom* functions.\ntype TrusteeValue uintptr\n\nfunc TrusteeValueFromString(str string) TrusteeValue {\n\treturn TrusteeValue(unsafe.Pointer(StringToUTF16Ptr(str)))\n}\nfunc TrusteeValueFromSID(sid *SID) TrusteeValue {\n\treturn TrusteeValue(unsafe.Pointer(sid))\n}\nfunc TrusteeValueFromObjectsAndSid(objectsAndSid *OBJECTS_AND_SID) TrusteeValue {\n\treturn TrusteeValue(unsafe.Pointer(objectsAndSid))\n}\nfunc TrusteeValueFromObjectsAndName(objectsAndName *OBJECTS_AND_NAME) TrusteeValue {\n\treturn TrusteeValue(unsafe.Pointer(objectsAndName))\n}\n\ntype TRUSTEE struct {\n\tMultipleTrustee          *TRUSTEE\n\tMultipleTrusteeOperation MULTIPLE_TRUSTEE_OPERATION\n\tTrusteeForm              TRUSTEE_FORM\n\tTrusteeType              TRUSTEE_TYPE\n\tTrusteeValue             TrusteeValue\n}\n\ntype OBJECTS_AND_SID struct {\n\tObjectsPresent          uint32\n\tObjectTypeGuid          GUID\n\tInheritedObjectTypeGuid GUID\n\tSid                     *SID\n}\n\ntype OBJECTS_AND_NAME struct {\n\tObjectsPresent          uint32\n\tObjectType              SE_OBJECT_TYPE\n\tObjectTypeName          *uint16\n\tInheritedObjectTypeName *uint16\n\tName                    *uint16\n}\n\n//sys\tgetSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner **SID, group **SID, dacl **ACL, sacl **ACL, sd **SECURITY_DESCRIPTOR) (ret error) = advapi32.GetSecurityInfo\n//sys\tSetSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) (ret error) = advapi32.SetSecurityInfo\n//sys\tgetNamedSecurityInfo(objectName string, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner **SID, group **SID, dacl **ACL, sacl **ACL, sd **SECURITY_DESCRIPTOR) (ret error) = advapi32.GetNamedSecurityInfoW\n//sys\tSetNamedSecurityInfo(objectName string, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) (ret error) = advapi32.SetNamedSecurityInfoW\n//sys\tSetKernelObjectSecurity(handle Handle, securityInformation SECURITY_INFORMATION, securityDescriptor *SECURITY_DESCRIPTOR) (err error) = advapi32.SetKernelObjectSecurity\n\n//sys\tbuildSecurityDescriptor(owner *TRUSTEE, group *TRUSTEE, countAccessEntries uint32, accessEntries *EXPLICIT_ACCESS, countAuditEntries uint32, auditEntries *EXPLICIT_ACCESS, oldSecurityDescriptor *SECURITY_DESCRIPTOR, sizeNewSecurityDescriptor *uint32, newSecurityDescriptor **SECURITY_DESCRIPTOR) (ret error) = advapi32.BuildSecurityDescriptorW\n//sys\tinitializeSecurityDescriptor(absoluteSD *SECURITY_DESCRIPTOR, revision uint32) (err error) = advapi32.InitializeSecurityDescriptor\n\n//sys\tgetSecurityDescriptorControl(sd *SECURITY_DESCRIPTOR, control *SECURITY_DESCRIPTOR_CONTROL, revision *uint32) (err error) = advapi32.GetSecurityDescriptorControl\n//sys\tgetSecurityDescriptorDacl(sd *SECURITY_DESCRIPTOR, daclPresent *bool, dacl **ACL, daclDefaulted *bool) (err error) = advapi32.GetSecurityDescriptorDacl\n//sys\tgetSecurityDescriptorSacl(sd *SECURITY_DESCRIPTOR, saclPresent *bool, sacl **ACL, saclDefaulted *bool) (err error) = advapi32.GetSecurityDescriptorSacl\n//sys\tgetSecurityDescriptorOwner(sd *SECURITY_DESCRIPTOR, owner **SID, ownerDefaulted *bool) (err error) = advapi32.GetSecurityDescriptorOwner\n//sys\tgetSecurityDescriptorGroup(sd *SECURITY_DESCRIPTOR, group **SID, groupDefaulted *bool) (err error) = advapi32.GetSecurityDescriptorGroup\n//sys\tgetSecurityDescriptorLength(sd *SECURITY_DESCRIPTOR) (len uint32) = advapi32.GetSecurityDescriptorLength\n//sys\tgetSecurityDescriptorRMControl(sd *SECURITY_DESCRIPTOR, rmControl *uint8) (ret error) [failretval!=0] = advapi32.GetSecurityDescriptorRMControl\n//sys\tisValidSecurityDescriptor(sd *SECURITY_DESCRIPTOR) (isValid bool) = advapi32.IsValidSecurityDescriptor\n\n//sys\tsetSecurityDescriptorControl(sd *SECURITY_DESCRIPTOR, controlBitsOfInterest SECURITY_DESCRIPTOR_CONTROL, controlBitsToSet SECURITY_DESCRIPTOR_CONTROL) (err error) = advapi32.SetSecurityDescriptorControl\n//sys\tsetSecurityDescriptorDacl(sd *SECURITY_DESCRIPTOR, daclPresent bool, dacl *ACL, daclDefaulted bool) (err error) = advapi32.SetSecurityDescriptorDacl\n//sys\tsetSecurityDescriptorSacl(sd *SECURITY_DESCRIPTOR, saclPresent bool, sacl *ACL, saclDefaulted bool) (err error) = advapi32.SetSecurityDescriptorSacl\n//sys\tsetSecurityDescriptorOwner(sd *SECURITY_DESCRIPTOR, owner *SID, ownerDefaulted bool) (err error) = advapi32.SetSecurityDescriptorOwner\n//sys\tsetSecurityDescriptorGroup(sd *SECURITY_DESCRIPTOR, group *SID, groupDefaulted bool) (err error) = advapi32.SetSecurityDescriptorGroup\n//sys\tsetSecurityDescriptorRMControl(sd *SECURITY_DESCRIPTOR, rmControl *uint8) = advapi32.SetSecurityDescriptorRMControl\n\n//sys\tconvertStringSecurityDescriptorToSecurityDescriptor(str string, revision uint32, sd **SECURITY_DESCRIPTOR, size *uint32) (err error) = advapi32.ConvertStringSecurityDescriptorToSecurityDescriptorW\n//sys\tconvertSecurityDescriptorToStringSecurityDescriptor(sd *SECURITY_DESCRIPTOR, revision uint32, securityInformation SECURITY_INFORMATION, str **uint16, strLen *uint32) (err error) = advapi32.ConvertSecurityDescriptorToStringSecurityDescriptorW\n\n//sys\tmakeAbsoluteSD(selfRelativeSD *SECURITY_DESCRIPTOR, absoluteSD *SECURITY_DESCRIPTOR, absoluteSDSize *uint32, dacl *ACL, daclSize *uint32, sacl *ACL, saclSize *uint32, owner *SID, ownerSize *uint32, group *SID, groupSize *uint32) (err error) = advapi32.MakeAbsoluteSD\n//sys\tmakeSelfRelativeSD(absoluteSD *SECURITY_DESCRIPTOR, selfRelativeSD *SECURITY_DESCRIPTOR, selfRelativeSDSize *uint32) (err error) = advapi32.MakeSelfRelativeSD\n\n//sys\tsetEntriesInAcl(countExplicitEntries uint32, explicitEntries *EXPLICIT_ACCESS, oldACL *ACL, newACL **ACL) (ret error) = advapi32.SetEntriesInAclW\n//sys\tGetAce(acl *ACL, aceIndex uint32, pAce **ACCESS_ALLOWED_ACE) (err error) = advapi32.GetAce\n\n// Control returns the security descriptor control bits.\nfunc (sd *SECURITY_DESCRIPTOR) Control() (control SECURITY_DESCRIPTOR_CONTROL, revision uint32, err error) {\n\terr = getSecurityDescriptorControl(sd, &control, &revision)\n\treturn\n}\n\n// SetControl sets the security descriptor control bits.\nfunc (sd *SECURITY_DESCRIPTOR) SetControl(controlBitsOfInterest SECURITY_DESCRIPTOR_CONTROL, controlBitsToSet SECURITY_DESCRIPTOR_CONTROL) error {\n\treturn setSecurityDescriptorControl(sd, controlBitsOfInterest, controlBitsToSet)\n}\n\n// RMControl returns the security descriptor resource manager control bits.\nfunc (sd *SECURITY_DESCRIPTOR) RMControl() (control uint8, err error) {\n\terr = getSecurityDescriptorRMControl(sd, &control)\n\treturn\n}\n\n// SetRMControl sets the security descriptor resource manager control bits.\nfunc (sd *SECURITY_DESCRIPTOR) SetRMControl(rmControl uint8) {\n\tsetSecurityDescriptorRMControl(sd, &rmControl)\n}\n\n// DACL returns the security descriptor DACL and whether it was defaulted. The dacl return value may be nil\n// if a DACL exists but is an \"empty DACL\", meaning fully permissive. If the DACL does not exist, err returns\n// ERROR_OBJECT_NOT_FOUND.\nfunc (sd *SECURITY_DESCRIPTOR) DACL() (dacl *ACL, defaulted bool, err error) {\n\tvar present bool\n\terr = getSecurityDescriptorDacl(sd, &present, &dacl, &defaulted)\n\tif !present {\n\t\terr = ERROR_OBJECT_NOT_FOUND\n\t}\n\treturn\n}\n\n// SetDACL sets the absolute security descriptor DACL.\nfunc (absoluteSD *SECURITY_DESCRIPTOR) SetDACL(dacl *ACL, present, defaulted bool) error {\n\treturn setSecurityDescriptorDacl(absoluteSD, present, dacl, defaulted)\n}\n\n// SACL returns the security descriptor SACL and whether it was defaulted. The sacl return value may be nil\n// if a SACL exists but is an \"empty SACL\", meaning fully permissive. If the SACL does not exist, err returns\n// ERROR_OBJECT_NOT_FOUND.\nfunc (sd *SECURITY_DESCRIPTOR) SACL() (sacl *ACL, defaulted bool, err error) {\n\tvar present bool\n\terr = getSecurityDescriptorSacl(sd, &present, &sacl, &defaulted)\n\tif !present {\n\t\terr = ERROR_OBJECT_NOT_FOUND\n\t}\n\treturn\n}\n\n// SetSACL sets the absolute security descriptor SACL.\nfunc (absoluteSD *SECURITY_DESCRIPTOR) SetSACL(sacl *ACL, present, defaulted bool) error {\n\treturn setSecurityDescriptorSacl(absoluteSD, present, sacl, defaulted)\n}\n\n// Owner returns the security descriptor owner and whether it was defaulted.\nfunc (sd *SECURITY_DESCRIPTOR) Owner() (owner *SID, defaulted bool, err error) {\n\terr = getSecurityDescriptorOwner(sd, &owner, &defaulted)\n\treturn\n}\n\n// SetOwner sets the absolute security descriptor owner.\nfunc (absoluteSD *SECURITY_DESCRIPTOR) SetOwner(owner *SID, defaulted bool) error {\n\treturn setSecurityDescriptorOwner(absoluteSD, owner, defaulted)\n}\n\n// Group returns the security descriptor group and whether it was defaulted.\nfunc (sd *SECURITY_DESCRIPTOR) Group() (group *SID, defaulted bool, err error) {\n\terr = getSecurityDescriptorGroup(sd, &group, &defaulted)\n\treturn\n}\n\n// SetGroup sets the absolute security descriptor owner.\nfunc (absoluteSD *SECURITY_DESCRIPTOR) SetGroup(group *SID, defaulted bool) error {\n\treturn setSecurityDescriptorGroup(absoluteSD, group, defaulted)\n}\n\n// Length returns the length of the security descriptor.\nfunc (sd *SECURITY_DESCRIPTOR) Length() uint32 {\n\treturn getSecurityDescriptorLength(sd)\n}\n\n// IsValid returns whether the security descriptor is valid.\nfunc (sd *SECURITY_DESCRIPTOR) IsValid() bool {\n\treturn isValidSecurityDescriptor(sd)\n}\n\n// String returns the SDDL form of the security descriptor, with a function signature that can be\n// used with %v formatting directives.\nfunc (sd *SECURITY_DESCRIPTOR) String() string {\n\tvar sddl *uint16\n\terr := convertSecurityDescriptorToStringSecurityDescriptor(sd, 1, 0xff, &sddl, nil)\n\tif err != nil {\n\t\treturn \"\"\n\t}\n\tdefer LocalFree(Handle(unsafe.Pointer(sddl)))\n\treturn UTF16PtrToString(sddl)\n}\n\n// ToAbsolute converts a self-relative security descriptor into an absolute one.\nfunc (selfRelativeSD *SECURITY_DESCRIPTOR) ToAbsolute() (absoluteSD *SECURITY_DESCRIPTOR, err error) {\n\tcontrol, _, err := selfRelativeSD.Control()\n\tif err != nil {\n\t\treturn\n\t}\n\tif control&SE_SELF_RELATIVE == 0 {\n\t\terr = ERROR_INVALID_PARAMETER\n\t\treturn\n\t}\n\tvar absoluteSDSize, daclSize, saclSize, ownerSize, groupSize uint32\n\terr = makeAbsoluteSD(selfRelativeSD, nil, &absoluteSDSize,\n\t\tnil, &daclSize, nil, &saclSize, nil, &ownerSize, nil, &groupSize)\n\tswitch err {\n\tcase ERROR_INSUFFICIENT_BUFFER:\n\tcase nil:\n\t\t// makeAbsoluteSD is expected to fail, but it succeeds.\n\t\treturn nil, ERROR_INTERNAL_ERROR\n\tdefault:\n\t\treturn nil, err\n\t}\n\tif absoluteSDSize > 0 {\n\t\tabsoluteSD = new(SECURITY_DESCRIPTOR)\n\t\tif unsafe.Sizeof(*absoluteSD) < uintptr(absoluteSDSize) {\n\t\t\tpanic(\"sizeof(SECURITY_DESCRIPTOR) too small\")\n\t\t}\n\t}\n\tvar (\n\t\tdacl  *ACL\n\t\tsacl  *ACL\n\t\towner *SID\n\t\tgroup *SID\n\t)\n\tif daclSize > 0 {\n\t\tdacl = (*ACL)(unsafe.Pointer(unsafe.SliceData(make([]byte, daclSize))))\n\t}\n\tif saclSize > 0 {\n\t\tsacl = (*ACL)(unsafe.Pointer(unsafe.SliceData(make([]byte, saclSize))))\n\t}\n\tif ownerSize > 0 {\n\t\towner = (*SID)(unsafe.Pointer(unsafe.SliceData(make([]byte, ownerSize))))\n\t}\n\tif groupSize > 0 {\n\t\tgroup = (*SID)(unsafe.Pointer(unsafe.SliceData(make([]byte, groupSize))))\n\t}\n\t// We call into Windows via makeAbsoluteSD, which sets up\n\t// pointers within absoluteSD that point to other chunks of memory\n\t// we pass into makeAbsoluteSD, and that happens outside the view of the GC.\n\t// We therefore take some care here to then verify the pointers are as we expect\n\t// and set them explicitly in view of the GC. See https://go.dev/issue/73199.\n\t// TODO: consider weak pointers once Go 1.24 is appropriate. See suggestion in https://go.dev/cl/663575.\n\terr = makeAbsoluteSD(selfRelativeSD, absoluteSD, &absoluteSDSize,\n\t\tdacl, &daclSize, sacl, &saclSize, owner, &ownerSize, group, &groupSize)\n\tif err != nil {\n\t\t// Don't return absoluteSD, which might be partially initialized.\n\t\treturn nil, err\n\t}\n\t// Before using any fields, verify absoluteSD is in the format we expect according to Windows.\n\t// See https://learn.microsoft.com/en-us/windows/win32/secauthz/absolute-and-self-relative-security-descriptors\n\tabsControl, _, err := absoluteSD.Control()\n\tif err != nil {\n\t\tpanic(\"absoluteSD: \" + err.Error())\n\t}\n\tif absControl&SE_SELF_RELATIVE != 0 {\n\t\tpanic(\"absoluteSD not in absolute format\")\n\t}\n\tif absoluteSD.dacl != dacl {\n\t\tpanic(\"dacl pointer mismatch\")\n\t}\n\tif absoluteSD.sacl != sacl {\n\t\tpanic(\"sacl pointer mismatch\")\n\t}\n\tif absoluteSD.owner != owner {\n\t\tpanic(\"owner pointer mismatch\")\n\t}\n\tif absoluteSD.group != group {\n\t\tpanic(\"group pointer mismatch\")\n\t}\n\tabsoluteSD.dacl = dacl\n\tabsoluteSD.sacl = sacl\n\tabsoluteSD.owner = owner\n\tabsoluteSD.group = group\n\n\treturn\n}\n\n// ToSelfRelative converts an absolute security descriptor into a self-relative one.\nfunc (absoluteSD *SECURITY_DESCRIPTOR) ToSelfRelative() (selfRelativeSD *SECURITY_DESCRIPTOR, err error) {\n\tcontrol, _, err := absoluteSD.Control()\n\tif err != nil {\n\t\treturn\n\t}\n\tif control&SE_SELF_RELATIVE != 0 {\n\t\terr = ERROR_INVALID_PARAMETER\n\t\treturn\n\t}\n\tvar selfRelativeSDSize uint32\n\terr = makeSelfRelativeSD(absoluteSD, nil, &selfRelativeSDSize)\n\tswitch err {\n\tcase ERROR_INSUFFICIENT_BUFFER:\n\tcase nil:\n\t\t// makeSelfRelativeSD is expected to fail, but it succeeds.\n\t\treturn nil, ERROR_INTERNAL_ERROR\n\tdefault:\n\t\treturn nil, err\n\t}\n\tif selfRelativeSDSize > 0 {\n\t\tselfRelativeSD = (*SECURITY_DESCRIPTOR)(unsafe.Pointer(&make([]byte, selfRelativeSDSize)[0]))\n\t}\n\terr = makeSelfRelativeSD(absoluteSD, selfRelativeSD, &selfRelativeSDSize)\n\treturn\n}\n\nfunc (selfRelativeSD *SECURITY_DESCRIPTOR) copySelfRelativeSecurityDescriptor() *SECURITY_DESCRIPTOR {\n\tsdLen := int(selfRelativeSD.Length())\n\tconst min = int(unsafe.Sizeof(SECURITY_DESCRIPTOR{}))\n\tif sdLen < min {\n\t\tsdLen = min\n\t}\n\n\tsrc := unsafe.Slice((*byte)(unsafe.Pointer(selfRelativeSD)), sdLen)\n\t// SECURITY_DESCRIPTOR has pointers in it, which means checkptr expects for it to\n\t// be aligned properly. When we're copying a Windows-allocated struct to a\n\t// Go-allocated one, make sure that the Go allocation is aligned to the\n\t// pointer size.\n\tconst psize = int(unsafe.Sizeof(uintptr(0)))\n\talloc := make([]uintptr, (sdLen+psize-1)/psize)\n\tdst := unsafe.Slice((*byte)(unsafe.Pointer(&alloc[0])), sdLen)\n\tcopy(dst, src)\n\treturn (*SECURITY_DESCRIPTOR)(unsafe.Pointer(&dst[0]))\n}\n\n// SecurityDescriptorFromString converts an SDDL string describing a security descriptor into a\n// self-relative security descriptor object allocated on the Go heap.\nfunc SecurityDescriptorFromString(sddl string) (sd *SECURITY_DESCRIPTOR, err error) {\n\tvar winHeapSD *SECURITY_DESCRIPTOR\n\terr = convertStringSecurityDescriptorToSecurityDescriptor(sddl, 1, &winHeapSD, nil)\n\tif err != nil {\n\t\treturn\n\t}\n\tdefer LocalFree(Handle(unsafe.Pointer(winHeapSD)))\n\treturn winHeapSD.copySelfRelativeSecurityDescriptor(), nil\n}\n\n// GetSecurityInfo queries the security information for a given handle and returns the self-relative security\n// descriptor result on the Go heap.\nfunc GetSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION) (sd *SECURITY_DESCRIPTOR, err error) {\n\tvar winHeapSD *SECURITY_DESCRIPTOR\n\terr = getSecurityInfo(handle, objectType, securityInformation, nil, nil, nil, nil, &winHeapSD)\n\tif err != nil {\n\t\treturn\n\t}\n\tdefer LocalFree(Handle(unsafe.Pointer(winHeapSD)))\n\treturn winHeapSD.copySelfRelativeSecurityDescriptor(), nil\n}\n\n// GetNamedSecurityInfo queries the security information for a given named object and returns the self-relative security\n// descriptor result on the Go heap.\nfunc GetNamedSecurityInfo(objectName string, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION) (sd *SECURITY_DESCRIPTOR, err error) {\n\tvar winHeapSD *SECURITY_DESCRIPTOR\n\terr = getNamedSecurityInfo(objectName, objectType, securityInformation, nil, nil, nil, nil, &winHeapSD)\n\tif err != nil {\n\t\treturn\n\t}\n\tdefer LocalFree(Handle(unsafe.Pointer(winHeapSD)))\n\treturn winHeapSD.copySelfRelativeSecurityDescriptor(), nil\n}\n\n// BuildSecurityDescriptor makes a new security descriptor using the input trustees, explicit access lists, and\n// prior security descriptor to be merged, any of which can be nil, returning the self-relative security descriptor\n// result on the Go heap.\nfunc BuildSecurityDescriptor(owner *TRUSTEE, group *TRUSTEE, accessEntries []EXPLICIT_ACCESS, auditEntries []EXPLICIT_ACCESS, mergedSecurityDescriptor *SECURITY_DESCRIPTOR) (sd *SECURITY_DESCRIPTOR, err error) {\n\tvar winHeapSD *SECURITY_DESCRIPTOR\n\tvar winHeapSDSize uint32\n\tvar firstAccessEntry *EXPLICIT_ACCESS\n\tif len(accessEntries) > 0 {\n\t\tfirstAccessEntry = &accessEntries[0]\n\t}\n\tvar firstAuditEntry *EXPLICIT_ACCESS\n\tif len(auditEntries) > 0 {\n\t\tfirstAuditEntry = &auditEntries[0]\n\t}\n\terr = buildSecurityDescriptor(owner, group, uint32(len(accessEntries)), firstAccessEntry, uint32(len(auditEntries)), firstAuditEntry, mergedSecurityDescriptor, &winHeapSDSize, &winHeapSD)\n\tif err != nil {\n\t\treturn\n\t}\n\tdefer LocalFree(Handle(unsafe.Pointer(winHeapSD)))\n\treturn winHeapSD.copySelfRelativeSecurityDescriptor(), nil\n}\n\n// NewSecurityDescriptor creates and initializes a new absolute security descriptor.\nfunc NewSecurityDescriptor() (absoluteSD *SECURITY_DESCRIPTOR, err error) {\n\tabsoluteSD = &SECURITY_DESCRIPTOR{}\n\terr = initializeSecurityDescriptor(absoluteSD, 1)\n\treturn\n}\n\n// ACLFromEntries returns a new ACL on the Go heap containing a list of explicit entries as well as those of another ACL.\n// Both explicitEntries and mergedACL are optional and can be nil.\nfunc ACLFromEntries(explicitEntries []EXPLICIT_ACCESS, mergedACL *ACL) (acl *ACL, err error) {\n\tvar firstExplicitEntry *EXPLICIT_ACCESS\n\tif len(explicitEntries) > 0 {\n\t\tfirstExplicitEntry = &explicitEntries[0]\n\t}\n\tvar winHeapACL *ACL\n\terr = setEntriesInAcl(uint32(len(explicitEntries)), firstExplicitEntry, mergedACL, &winHeapACL)\n\tif err != nil {\n\t\treturn\n\t}\n\tdefer LocalFree(Handle(unsafe.Pointer(winHeapACL)))\n\taclBytes := make([]byte, winHeapACL.aclSize)\n\tcopy(aclBytes, (*[(1 << 31) - 1]byte)(unsafe.Pointer(winHeapACL))[:len(aclBytes):len(aclBytes)])\n\treturn (*ACL)(unsafe.Pointer(&aclBytes[0])), nil\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/windows/service.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build windows\n\npackage windows\n\nconst (\n\tSC_MANAGER_CONNECT            = 1\n\tSC_MANAGER_CREATE_SERVICE     = 2\n\tSC_MANAGER_ENUMERATE_SERVICE  = 4\n\tSC_MANAGER_LOCK               = 8\n\tSC_MANAGER_QUERY_LOCK_STATUS  = 16\n\tSC_MANAGER_MODIFY_BOOT_CONFIG = 32\n\tSC_MANAGER_ALL_ACCESS         = 0xf003f\n)\n\nconst (\n\tSERVICE_KERNEL_DRIVER       = 1\n\tSERVICE_FILE_SYSTEM_DRIVER  = 2\n\tSERVICE_ADAPTER             = 4\n\tSERVICE_RECOGNIZER_DRIVER   = 8\n\tSERVICE_WIN32_OWN_PROCESS   = 16\n\tSERVICE_WIN32_SHARE_PROCESS = 32\n\tSERVICE_WIN32               = SERVICE_WIN32_OWN_PROCESS | SERVICE_WIN32_SHARE_PROCESS\n\tSERVICE_INTERACTIVE_PROCESS = 256\n\tSERVICE_DRIVER              = SERVICE_KERNEL_DRIVER | SERVICE_FILE_SYSTEM_DRIVER | SERVICE_RECOGNIZER_DRIVER\n\tSERVICE_TYPE_ALL            = SERVICE_WIN32 | SERVICE_ADAPTER | SERVICE_DRIVER | SERVICE_INTERACTIVE_PROCESS\n\n\tSERVICE_BOOT_START   = 0\n\tSERVICE_SYSTEM_START = 1\n\tSERVICE_AUTO_START   = 2\n\tSERVICE_DEMAND_START = 3\n\tSERVICE_DISABLED     = 4\n\n\tSERVICE_ERROR_IGNORE   = 0\n\tSERVICE_ERROR_NORMAL   = 1\n\tSERVICE_ERROR_SEVERE   = 2\n\tSERVICE_ERROR_CRITICAL = 3\n\n\tSC_STATUS_PROCESS_INFO = 0\n\n\tSC_ACTION_NONE        = 0\n\tSC_ACTION_RESTART     = 1\n\tSC_ACTION_REBOOT      = 2\n\tSC_ACTION_RUN_COMMAND = 3\n\n\tSERVICE_STOPPED          = 1\n\tSERVICE_START_PENDING    = 2\n\tSERVICE_STOP_PENDING     = 3\n\tSERVICE_RUNNING          = 4\n\tSERVICE_CONTINUE_PENDING = 5\n\tSERVICE_PAUSE_PENDING    = 6\n\tSERVICE_PAUSED           = 7\n\tSERVICE_NO_CHANGE        = 0xffffffff\n\n\tSERVICE_ACCEPT_STOP                  = 1\n\tSERVICE_ACCEPT_PAUSE_CONTINUE        = 2\n\tSERVICE_ACCEPT_SHUTDOWN              = 4\n\tSERVICE_ACCEPT_PARAMCHANGE           = 8\n\tSERVICE_ACCEPT_NETBINDCHANGE         = 16\n\tSERVICE_ACCEPT_HARDWAREPROFILECHANGE = 32\n\tSERVICE_ACCEPT_POWEREVENT            = 64\n\tSERVICE_ACCEPT_SESSIONCHANGE         = 128\n\tSERVICE_ACCEPT_PRESHUTDOWN           = 256\n\n\tSERVICE_CONTROL_STOP                  = 1\n\tSERVICE_CONTROL_PAUSE                 = 2\n\tSERVICE_CONTROL_CONTINUE              = 3\n\tSERVICE_CONTROL_INTERROGATE           = 4\n\tSERVICE_CONTROL_SHUTDOWN              = 5\n\tSERVICE_CONTROL_PARAMCHANGE           = 6\n\tSERVICE_CONTROL_NETBINDADD            = 7\n\tSERVICE_CONTROL_NETBINDREMOVE         = 8\n\tSERVICE_CONTROL_NETBINDENABLE         = 9\n\tSERVICE_CONTROL_NETBINDDISABLE        = 10\n\tSERVICE_CONTROL_DEVICEEVENT           = 11\n\tSERVICE_CONTROL_HARDWAREPROFILECHANGE = 12\n\tSERVICE_CONTROL_POWEREVENT            = 13\n\tSERVICE_CONTROL_SESSIONCHANGE         = 14\n\tSERVICE_CONTROL_PRESHUTDOWN           = 15\n\n\tSERVICE_ACTIVE    = 1\n\tSERVICE_INACTIVE  = 2\n\tSERVICE_STATE_ALL = 3\n\n\tSERVICE_QUERY_CONFIG         = 1\n\tSERVICE_CHANGE_CONFIG        = 2\n\tSERVICE_QUERY_STATUS         = 4\n\tSERVICE_ENUMERATE_DEPENDENTS = 8\n\tSERVICE_START                = 16\n\tSERVICE_STOP                 = 32\n\tSERVICE_PAUSE_CONTINUE       = 64\n\tSERVICE_INTERROGATE          = 128\n\tSERVICE_USER_DEFINED_CONTROL = 256\n\tSERVICE_ALL_ACCESS           = STANDARD_RIGHTS_REQUIRED | SERVICE_QUERY_CONFIG | SERVICE_CHANGE_CONFIG | SERVICE_QUERY_STATUS | SERVICE_ENUMERATE_DEPENDENTS | SERVICE_START | SERVICE_STOP | SERVICE_PAUSE_CONTINUE | SERVICE_INTERROGATE | SERVICE_USER_DEFINED_CONTROL\n\n\tSERVICE_RUNS_IN_SYSTEM_PROCESS = 1\n\n\tSERVICE_CONFIG_DESCRIPTION              = 1\n\tSERVICE_CONFIG_FAILURE_ACTIONS          = 2\n\tSERVICE_CONFIG_DELAYED_AUTO_START_INFO  = 3\n\tSERVICE_CONFIG_FAILURE_ACTIONS_FLAG     = 4\n\tSERVICE_CONFIG_SERVICE_SID_INFO         = 5\n\tSERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO = 6\n\tSERVICE_CONFIG_PRESHUTDOWN_INFO         = 7\n\tSERVICE_CONFIG_TRIGGER_INFO             = 8\n\tSERVICE_CONFIG_PREFERRED_NODE           = 9\n\tSERVICE_CONFIG_LAUNCH_PROTECTED         = 12\n\n\tSERVICE_SID_TYPE_NONE         = 0\n\tSERVICE_SID_TYPE_UNRESTRICTED = 1\n\tSERVICE_SID_TYPE_RESTRICTED   = 2 | SERVICE_SID_TYPE_UNRESTRICTED\n\n\tSC_ENUM_PROCESS_INFO = 0\n\n\tSERVICE_NOTIFY_STATUS_CHANGE    = 2\n\tSERVICE_NOTIFY_STOPPED          = 0x00000001\n\tSERVICE_NOTIFY_START_PENDING    = 0x00000002\n\tSERVICE_NOTIFY_STOP_PENDING     = 0x00000004\n\tSERVICE_NOTIFY_RUNNING          = 0x00000008\n\tSERVICE_NOTIFY_CONTINUE_PENDING = 0x00000010\n\tSERVICE_NOTIFY_PAUSE_PENDING    = 0x00000020\n\tSERVICE_NOTIFY_PAUSED           = 0x00000040\n\tSERVICE_NOTIFY_CREATED          = 0x00000080\n\tSERVICE_NOTIFY_DELETED          = 0x00000100\n\tSERVICE_NOTIFY_DELETE_PENDING   = 0x00000200\n\n\tSC_EVENT_DATABASE_CHANGE = 0\n\tSC_EVENT_PROPERTY_CHANGE = 1\n\tSC_EVENT_STATUS_CHANGE   = 2\n\n\tSERVICE_START_REASON_DEMAND             = 0x00000001\n\tSERVICE_START_REASON_AUTO               = 0x00000002\n\tSERVICE_START_REASON_TRIGGER            = 0x00000004\n\tSERVICE_START_REASON_RESTART_ON_FAILURE = 0x00000008\n\tSERVICE_START_REASON_DELAYEDAUTO        = 0x00000010\n\n\tSERVICE_DYNAMIC_INFORMATION_LEVEL_START_REASON = 1\n)\n\ntype ENUM_SERVICE_STATUS struct {\n\tServiceName   *uint16\n\tDisplayName   *uint16\n\tServiceStatus SERVICE_STATUS\n}\n\ntype SERVICE_STATUS struct {\n\tServiceType             uint32\n\tCurrentState            uint32\n\tControlsAccepted        uint32\n\tWin32ExitCode           uint32\n\tServiceSpecificExitCode uint32\n\tCheckPoint              uint32\n\tWaitHint                uint32\n}\n\ntype SERVICE_TABLE_ENTRY struct {\n\tServiceName *uint16\n\tServiceProc uintptr\n}\n\ntype QUERY_SERVICE_CONFIG struct {\n\tServiceType      uint32\n\tStartType        uint32\n\tErrorControl     uint32\n\tBinaryPathName   *uint16\n\tLoadOrderGroup   *uint16\n\tTagId            uint32\n\tDependencies     *uint16\n\tServiceStartName *uint16\n\tDisplayName      *uint16\n}\n\ntype SERVICE_DESCRIPTION struct {\n\tDescription *uint16\n}\n\ntype SERVICE_DELAYED_AUTO_START_INFO struct {\n\tIsDelayedAutoStartUp uint32\n}\n\ntype SERVICE_STATUS_PROCESS struct {\n\tServiceType             uint32\n\tCurrentState            uint32\n\tControlsAccepted        uint32\n\tWin32ExitCode           uint32\n\tServiceSpecificExitCode uint32\n\tCheckPoint              uint32\n\tWaitHint                uint32\n\tProcessId               uint32\n\tServiceFlags            uint32\n}\n\ntype ENUM_SERVICE_STATUS_PROCESS struct {\n\tServiceName          *uint16\n\tDisplayName          *uint16\n\tServiceStatusProcess SERVICE_STATUS_PROCESS\n}\n\ntype SERVICE_NOTIFY struct {\n\tVersion               uint32\n\tNotifyCallback        uintptr\n\tContext               uintptr\n\tNotificationStatus    uint32\n\tServiceStatus         SERVICE_STATUS_PROCESS\n\tNotificationTriggered uint32\n\tServiceNames          *uint16\n}\n\ntype SERVICE_FAILURE_ACTIONS struct {\n\tResetPeriod  uint32\n\tRebootMsg    *uint16\n\tCommand      *uint16\n\tActionsCount uint32\n\tActions      *SC_ACTION\n}\n\ntype SERVICE_FAILURE_ACTIONS_FLAG struct {\n\tFailureActionsOnNonCrashFailures int32\n}\n\ntype SC_ACTION struct {\n\tType  uint32\n\tDelay uint32\n}\n\ntype QUERY_SERVICE_LOCK_STATUS struct {\n\tIsLocked     uint32\n\tLockOwner    *uint16\n\tLockDuration uint32\n}\n\n//sys\tOpenSCManager(machineName *uint16, databaseName *uint16, access uint32) (handle Handle, err error) [failretval==0] = advapi32.OpenSCManagerW\n//sys\tCloseServiceHandle(handle Handle) (err error) = advapi32.CloseServiceHandle\n//sys\tCreateService(mgr Handle, serviceName *uint16, displayName *uint16, access uint32, srvType uint32, startType uint32, errCtl uint32, pathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16) (handle Handle, err error) [failretval==0] = advapi32.CreateServiceW\n//sys\tOpenService(mgr Handle, serviceName *uint16, access uint32) (handle Handle, err error) [failretval==0] = advapi32.OpenServiceW\n//sys\tDeleteService(service Handle) (err error) = advapi32.DeleteService\n//sys\tStartService(service Handle, numArgs uint32, argVectors **uint16) (err error) = advapi32.StartServiceW\n//sys\tQueryServiceStatus(service Handle, status *SERVICE_STATUS) (err error) = advapi32.QueryServiceStatus\n//sys\tQueryServiceLockStatus(mgr Handle, lockStatus *QUERY_SERVICE_LOCK_STATUS, bufSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceLockStatusW\n//sys\tControlService(service Handle, control uint32, status *SERVICE_STATUS) (err error) = advapi32.ControlService\n//sys\tStartServiceCtrlDispatcher(serviceTable *SERVICE_TABLE_ENTRY) (err error) = advapi32.StartServiceCtrlDispatcherW\n//sys\tSetServiceStatus(service Handle, serviceStatus *SERVICE_STATUS) (err error) = advapi32.SetServiceStatus\n//sys\tChangeServiceConfig(service Handle, serviceType uint32, startType uint32, errorControl uint32, binaryPathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16, displayName *uint16) (err error) = advapi32.ChangeServiceConfigW\n//sys\tQueryServiceConfig(service Handle, serviceConfig *QUERY_SERVICE_CONFIG, bufSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceConfigW\n//sys\tChangeServiceConfig2(service Handle, infoLevel uint32, info *byte) (err error) = advapi32.ChangeServiceConfig2W\n//sys\tQueryServiceConfig2(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceConfig2W\n//sys\tEnumServicesStatusEx(mgr Handle, infoLevel uint32, serviceType uint32, serviceState uint32, services *byte, bufSize uint32, bytesNeeded *uint32, servicesReturned *uint32, resumeHandle *uint32, groupName *uint16) (err error) = advapi32.EnumServicesStatusExW\n//sys\tQueryServiceStatusEx(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceStatusEx\n//sys\tNotifyServiceStatusChange(service Handle, notifyMask uint32, notifier *SERVICE_NOTIFY) (ret error) = advapi32.NotifyServiceStatusChangeW\n//sys\tSubscribeServiceChangeNotifications(service Handle, eventType uint32, callback uintptr, callbackCtx uintptr, subscription *uintptr) (ret error) = sechost.SubscribeServiceChangeNotifications?\n//sys\tUnsubscribeServiceChangeNotifications(subscription uintptr) = sechost.UnsubscribeServiceChangeNotifications?\n//sys\tRegisterServiceCtrlHandlerEx(serviceName *uint16, handlerProc uintptr, context uintptr) (handle Handle, err error) = advapi32.RegisterServiceCtrlHandlerExW\n//sys\tQueryServiceDynamicInformation(service Handle, infoLevel uint32, dynamicInfo unsafe.Pointer) (err error) = advapi32.QueryServiceDynamicInformation?\n//sys\tEnumDependentServices(service Handle, activityState uint32, services *ENUM_SERVICE_STATUS, buffSize uint32, bytesNeeded *uint32, servicesReturned *uint32) (err error) = advapi32.EnumDependentServicesW\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/windows/setupapi_windows.go",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage windows\n\nimport (\n\t\"encoding/binary\"\n\t\"errors\"\n\t\"fmt\"\n\t\"runtime\"\n\t\"strings\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// This file contains functions that wrap SetupAPI.dll and CfgMgr32.dll,\n// core system functions for managing hardware devices, drivers, and the PnP tree.\n// Information about these APIs can be found at:\n//     https://docs.microsoft.com/en-us/windows-hardware/drivers/install/setupapi\n//     https://docs.microsoft.com/en-us/windows/win32/devinst/cfgmgr32-\n\nconst (\n\tERROR_EXPECTED_SECTION_NAME                  Errno = 0x20000000 | 0xC0000000 | 0\n\tERROR_BAD_SECTION_NAME_LINE                  Errno = 0x20000000 | 0xC0000000 | 1\n\tERROR_SECTION_NAME_TOO_LONG                  Errno = 0x20000000 | 0xC0000000 | 2\n\tERROR_GENERAL_SYNTAX                         Errno = 0x20000000 | 0xC0000000 | 3\n\tERROR_WRONG_INF_STYLE                        Errno = 0x20000000 | 0xC0000000 | 0x100\n\tERROR_SECTION_NOT_FOUND                      Errno = 0x20000000 | 0xC0000000 | 0x101\n\tERROR_LINE_NOT_FOUND                         Errno = 0x20000000 | 0xC0000000 | 0x102\n\tERROR_NO_BACKUP                              Errno = 0x20000000 | 0xC0000000 | 0x103\n\tERROR_NO_ASSOCIATED_CLASS                    Errno = 0x20000000 | 0xC0000000 | 0x200\n\tERROR_CLASS_MISMATCH                         Errno = 0x20000000 | 0xC0000000 | 0x201\n\tERROR_DUPLICATE_FOUND                        Errno = 0x20000000 | 0xC0000000 | 0x202\n\tERROR_NO_DRIVER_SELECTED                     Errno = 0x20000000 | 0xC0000000 | 0x203\n\tERROR_KEY_DOES_NOT_EXIST                     Errno = 0x20000000 | 0xC0000000 | 0x204\n\tERROR_INVALID_DEVINST_NAME                   Errno = 0x20000000 | 0xC0000000 | 0x205\n\tERROR_INVALID_CLASS                          Errno = 0x20000000 | 0xC0000000 | 0x206\n\tERROR_DEVINST_ALREADY_EXISTS                 Errno = 0x20000000 | 0xC0000000 | 0x207\n\tERROR_DEVINFO_NOT_REGISTERED                 Errno = 0x20000000 | 0xC0000000 | 0x208\n\tERROR_INVALID_REG_PROPERTY                   Errno = 0x20000000 | 0xC0000000 | 0x209\n\tERROR_NO_INF                                 Errno = 0x20000000 | 0xC0000000 | 0x20A\n\tERROR_NO_SUCH_DEVINST                        Errno = 0x20000000 | 0xC0000000 | 0x20B\n\tERROR_CANT_LOAD_CLASS_ICON                   Errno = 0x20000000 | 0xC0000000 | 0x20C\n\tERROR_INVALID_CLASS_INSTALLER                Errno = 0x20000000 | 0xC0000000 | 0x20D\n\tERROR_DI_DO_DEFAULT                          Errno = 0x20000000 | 0xC0000000 | 0x20E\n\tERROR_DI_NOFILECOPY                          Errno = 0x20000000 | 0xC0000000 | 0x20F\n\tERROR_INVALID_HWPROFILE                      Errno = 0x20000000 | 0xC0000000 | 0x210\n\tERROR_NO_DEVICE_SELECTED                     Errno = 0x20000000 | 0xC0000000 | 0x211\n\tERROR_DEVINFO_LIST_LOCKED                    Errno = 0x20000000 | 0xC0000000 | 0x212\n\tERROR_DEVINFO_DATA_LOCKED                    Errno = 0x20000000 | 0xC0000000 | 0x213\n\tERROR_DI_BAD_PATH                            Errno = 0x20000000 | 0xC0000000 | 0x214\n\tERROR_NO_CLASSINSTALL_PARAMS                 Errno = 0x20000000 | 0xC0000000 | 0x215\n\tERROR_FILEQUEUE_LOCKED                       Errno = 0x20000000 | 0xC0000000 | 0x216\n\tERROR_BAD_SERVICE_INSTALLSECT                Errno = 0x20000000 | 0xC0000000 | 0x217\n\tERROR_NO_CLASS_DRIVER_LIST                   Errno = 0x20000000 | 0xC0000000 | 0x218\n\tERROR_NO_ASSOCIATED_SERVICE                  Errno = 0x20000000 | 0xC0000000 | 0x219\n\tERROR_NO_DEFAULT_DEVICE_INTERFACE            Errno = 0x20000000 | 0xC0000000 | 0x21A\n\tERROR_DEVICE_INTERFACE_ACTIVE                Errno = 0x20000000 | 0xC0000000 | 0x21B\n\tERROR_DEVICE_INTERFACE_REMOVED               Errno = 0x20000000 | 0xC0000000 | 0x21C\n\tERROR_BAD_INTERFACE_INSTALLSECT              Errno = 0x20000000 | 0xC0000000 | 0x21D\n\tERROR_NO_SUCH_INTERFACE_CLASS                Errno = 0x20000000 | 0xC0000000 | 0x21E\n\tERROR_INVALID_REFERENCE_STRING               Errno = 0x20000000 | 0xC0000000 | 0x21F\n\tERROR_INVALID_MACHINENAME                    Errno = 0x20000000 | 0xC0000000 | 0x220\n\tERROR_REMOTE_COMM_FAILURE                    Errno = 0x20000000 | 0xC0000000 | 0x221\n\tERROR_MACHINE_UNAVAILABLE                    Errno = 0x20000000 | 0xC0000000 | 0x222\n\tERROR_NO_CONFIGMGR_SERVICES                  Errno = 0x20000000 | 0xC0000000 | 0x223\n\tERROR_INVALID_PROPPAGE_PROVIDER              Errno = 0x20000000 | 0xC0000000 | 0x224\n\tERROR_NO_SUCH_DEVICE_INTERFACE               Errno = 0x20000000 | 0xC0000000 | 0x225\n\tERROR_DI_POSTPROCESSING_REQUIRED             Errno = 0x20000000 | 0xC0000000 | 0x226\n\tERROR_INVALID_COINSTALLER                    Errno = 0x20000000 | 0xC0000000 | 0x227\n\tERROR_NO_COMPAT_DRIVERS                      Errno = 0x20000000 | 0xC0000000 | 0x228\n\tERROR_NO_DEVICE_ICON                         Errno = 0x20000000 | 0xC0000000 | 0x229\n\tERROR_INVALID_INF_LOGCONFIG                  Errno = 0x20000000 | 0xC0000000 | 0x22A\n\tERROR_DI_DONT_INSTALL                        Errno = 0x20000000 | 0xC0000000 | 0x22B\n\tERROR_INVALID_FILTER_DRIVER                  Errno = 0x20000000 | 0xC0000000 | 0x22C\n\tERROR_NON_WINDOWS_NT_DRIVER                  Errno = 0x20000000 | 0xC0000000 | 0x22D\n\tERROR_NON_WINDOWS_DRIVER                     Errno = 0x20000000 | 0xC0000000 | 0x22E\n\tERROR_NO_CATALOG_FOR_OEM_INF                 Errno = 0x20000000 | 0xC0000000 | 0x22F\n\tERROR_DEVINSTALL_QUEUE_NONNATIVE             Errno = 0x20000000 | 0xC0000000 | 0x230\n\tERROR_NOT_DISABLEABLE                        Errno = 0x20000000 | 0xC0000000 | 0x231\n\tERROR_CANT_REMOVE_DEVINST                    Errno = 0x20000000 | 0xC0000000 | 0x232\n\tERROR_INVALID_TARGET                         Errno = 0x20000000 | 0xC0000000 | 0x233\n\tERROR_DRIVER_NONNATIVE                       Errno = 0x20000000 | 0xC0000000 | 0x234\n\tERROR_IN_WOW64                               Errno = 0x20000000 | 0xC0000000 | 0x235\n\tERROR_SET_SYSTEM_RESTORE_POINT               Errno = 0x20000000 | 0xC0000000 | 0x236\n\tERROR_SCE_DISABLED                           Errno = 0x20000000 | 0xC0000000 | 0x238\n\tERROR_UNKNOWN_EXCEPTION                      Errno = 0x20000000 | 0xC0000000 | 0x239\n\tERROR_PNP_REGISTRY_ERROR                     Errno = 0x20000000 | 0xC0000000 | 0x23A\n\tERROR_REMOTE_REQUEST_UNSUPPORTED             Errno = 0x20000000 | 0xC0000000 | 0x23B\n\tERROR_NOT_AN_INSTALLED_OEM_INF               Errno = 0x20000000 | 0xC0000000 | 0x23C\n\tERROR_INF_IN_USE_BY_DEVICES                  Errno = 0x20000000 | 0xC0000000 | 0x23D\n\tERROR_DI_FUNCTION_OBSOLETE                   Errno = 0x20000000 | 0xC0000000 | 0x23E\n\tERROR_NO_AUTHENTICODE_CATALOG                Errno = 0x20000000 | 0xC0000000 | 0x23F\n\tERROR_AUTHENTICODE_DISALLOWED                Errno = 0x20000000 | 0xC0000000 | 0x240\n\tERROR_AUTHENTICODE_TRUSTED_PUBLISHER         Errno = 0x20000000 | 0xC0000000 | 0x241\n\tERROR_AUTHENTICODE_TRUST_NOT_ESTABLISHED     Errno = 0x20000000 | 0xC0000000 | 0x242\n\tERROR_AUTHENTICODE_PUBLISHER_NOT_TRUSTED     Errno = 0x20000000 | 0xC0000000 | 0x243\n\tERROR_SIGNATURE_OSATTRIBUTE_MISMATCH         Errno = 0x20000000 | 0xC0000000 | 0x244\n\tERROR_ONLY_VALIDATE_VIA_AUTHENTICODE         Errno = 0x20000000 | 0xC0000000 | 0x245\n\tERROR_DEVICE_INSTALLER_NOT_READY             Errno = 0x20000000 | 0xC0000000 | 0x246\n\tERROR_DRIVER_STORE_ADD_FAILED                Errno = 0x20000000 | 0xC0000000 | 0x247\n\tERROR_DEVICE_INSTALL_BLOCKED                 Errno = 0x20000000 | 0xC0000000 | 0x248\n\tERROR_DRIVER_INSTALL_BLOCKED                 Errno = 0x20000000 | 0xC0000000 | 0x249\n\tERROR_WRONG_INF_TYPE                         Errno = 0x20000000 | 0xC0000000 | 0x24A\n\tERROR_FILE_HASH_NOT_IN_CATALOG               Errno = 0x20000000 | 0xC0000000 | 0x24B\n\tERROR_DRIVER_STORE_DELETE_FAILED             Errno = 0x20000000 | 0xC0000000 | 0x24C\n\tERROR_UNRECOVERABLE_STACK_OVERFLOW           Errno = 0x20000000 | 0xC0000000 | 0x300\n\tEXCEPTION_SPAPI_UNRECOVERABLE_STACK_OVERFLOW Errno = ERROR_UNRECOVERABLE_STACK_OVERFLOW\n\tERROR_NO_DEFAULT_INTERFACE_DEVICE            Errno = ERROR_NO_DEFAULT_DEVICE_INTERFACE\n\tERROR_INTERFACE_DEVICE_ACTIVE                Errno = ERROR_DEVICE_INTERFACE_ACTIVE\n\tERROR_INTERFACE_DEVICE_REMOVED               Errno = ERROR_DEVICE_INTERFACE_REMOVED\n\tERROR_NO_SUCH_INTERFACE_DEVICE               Errno = ERROR_NO_SUCH_DEVICE_INTERFACE\n)\n\nconst (\n\tMAX_DEVICE_ID_LEN   = 200\n\tMAX_DEVNODE_ID_LEN  = MAX_DEVICE_ID_LEN\n\tMAX_GUID_STRING_LEN = 39 // 38 chars + terminator null\n\tMAX_CLASS_NAME_LEN  = 32\n\tMAX_PROFILE_LEN     = 80\n\tMAX_CONFIG_VALUE    = 9999\n\tMAX_INSTANCE_VALUE  = 9999\n\tCONFIGMG_VERSION    = 0x0400\n)\n\n// Maximum string length constants\nconst (\n\tLINE_LEN                    = 256  // Windows 9x-compatible maximum for displayable strings coming from a device INF.\n\tMAX_INF_STRING_LENGTH       = 4096 // Actual maximum size of an INF string (including string substitutions).\n\tMAX_INF_SECTION_NAME_LENGTH = 255  // For Windows 9x compatibility, INF section names should be constrained to 32 characters.\n\tMAX_TITLE_LEN               = 60\n\tMAX_INSTRUCTION_LEN         = 256\n\tMAX_LABEL_LEN               = 30\n\tMAX_SERVICE_NAME_LEN        = 256\n\tMAX_SUBTITLE_LEN            = 256\n)\n\nconst (\n\t// SP_MAX_MACHINENAME_LENGTH defines maximum length of a machine name in the format expected by ConfigMgr32 CM_Connect_Machine (i.e., \"\\\\\\\\MachineName\\0\").\n\tSP_MAX_MACHINENAME_LENGTH = MAX_PATH + 3\n)\n\n// HSPFILEQ is type for setup file queue\ntype HSPFILEQ uintptr\n\n// DevInfo holds reference to device information set\ntype DevInfo Handle\n\n// DEVINST is a handle usually recognized by cfgmgr32 APIs\ntype DEVINST uint32\n\n// DevInfoData is a device information structure (references a device instance that is a member of a device information set)\ntype DevInfoData struct {\n\tsize      uint32\n\tClassGUID GUID\n\tDevInst   DEVINST\n\t_         uintptr\n}\n\n// DevInfoListDetailData is a structure for detailed information on a device information set (used for SetupDiGetDeviceInfoListDetail which supersedes the functionality of SetupDiGetDeviceInfoListClass).\ntype DevInfoListDetailData struct {\n\tsize                uint32 // Use unsafeSizeOf method\n\tClassGUID           GUID\n\tRemoteMachineHandle Handle\n\tremoteMachineName   [SP_MAX_MACHINENAME_LENGTH]uint16\n}\n\nfunc (*DevInfoListDetailData) unsafeSizeOf() uint32 {\n\tif unsafe.Sizeof(uintptr(0)) == 4 {\n\t\t// Windows declares this with pshpack1.h\n\t\treturn uint32(unsafe.Offsetof(DevInfoListDetailData{}.remoteMachineName) + unsafe.Sizeof(DevInfoListDetailData{}.remoteMachineName))\n\t}\n\treturn uint32(unsafe.Sizeof(DevInfoListDetailData{}))\n}\n\nfunc (data *DevInfoListDetailData) RemoteMachineName() string {\n\treturn UTF16ToString(data.remoteMachineName[:])\n}\n\nfunc (data *DevInfoListDetailData) SetRemoteMachineName(remoteMachineName string) error {\n\tstr, err := UTF16FromString(remoteMachineName)\n\tif err != nil {\n\t\treturn err\n\t}\n\tcopy(data.remoteMachineName[:], str)\n\treturn nil\n}\n\n// DI_FUNCTION is function type for device installer\ntype DI_FUNCTION uint32\n\nconst (\n\tDIF_SELECTDEVICE                   DI_FUNCTION = 0x00000001\n\tDIF_INSTALLDEVICE                  DI_FUNCTION = 0x00000002\n\tDIF_ASSIGNRESOURCES                DI_FUNCTION = 0x00000003\n\tDIF_PROPERTIES                     DI_FUNCTION = 0x00000004\n\tDIF_REMOVE                         DI_FUNCTION = 0x00000005\n\tDIF_FIRSTTIMESETUP                 DI_FUNCTION = 0x00000006\n\tDIF_FOUNDDEVICE                    DI_FUNCTION = 0x00000007\n\tDIF_SELECTCLASSDRIVERS             DI_FUNCTION = 0x00000008\n\tDIF_VALIDATECLASSDRIVERS           DI_FUNCTION = 0x00000009\n\tDIF_INSTALLCLASSDRIVERS            DI_FUNCTION = 0x0000000A\n\tDIF_CALCDISKSPACE                  DI_FUNCTION = 0x0000000B\n\tDIF_DESTROYPRIVATEDATA             DI_FUNCTION = 0x0000000C\n\tDIF_VALIDATEDRIVER                 DI_FUNCTION = 0x0000000D\n\tDIF_DETECT                         DI_FUNCTION = 0x0000000F\n\tDIF_INSTALLWIZARD                  DI_FUNCTION = 0x00000010\n\tDIF_DESTROYWIZARDDATA              DI_FUNCTION = 0x00000011\n\tDIF_PROPERTYCHANGE                 DI_FUNCTION = 0x00000012\n\tDIF_ENABLECLASS                    DI_FUNCTION = 0x00000013\n\tDIF_DETECTVERIFY                   DI_FUNCTION = 0x00000014\n\tDIF_INSTALLDEVICEFILES             DI_FUNCTION = 0x00000015\n\tDIF_UNREMOVE                       DI_FUNCTION = 0x00000016\n\tDIF_SELECTBESTCOMPATDRV            DI_FUNCTION = 0x00000017\n\tDIF_ALLOW_INSTALL                  DI_FUNCTION = 0x00000018\n\tDIF_REGISTERDEVICE                 DI_FUNCTION = 0x00000019\n\tDIF_NEWDEVICEWIZARD_PRESELECT      DI_FUNCTION = 0x0000001A\n\tDIF_NEWDEVICEWIZARD_SELECT         DI_FUNCTION = 0x0000001B\n\tDIF_NEWDEVICEWIZARD_PREANALYZE     DI_FUNCTION = 0x0000001C\n\tDIF_NEWDEVICEWIZARD_POSTANALYZE    DI_FUNCTION = 0x0000001D\n\tDIF_NEWDEVICEWIZARD_FINISHINSTALL  DI_FUNCTION = 0x0000001E\n\tDIF_INSTALLINTERFACES              DI_FUNCTION = 0x00000020\n\tDIF_DETECTCANCEL                   DI_FUNCTION = 0x00000021\n\tDIF_REGISTER_COINSTALLERS          DI_FUNCTION = 0x00000022\n\tDIF_ADDPROPERTYPAGE_ADVANCED       DI_FUNCTION = 0x00000023\n\tDIF_ADDPROPERTYPAGE_BASIC          DI_FUNCTION = 0x00000024\n\tDIF_TROUBLESHOOTER                 DI_FUNCTION = 0x00000026\n\tDIF_POWERMESSAGEWAKE               DI_FUNCTION = 0x00000027\n\tDIF_ADDREMOTEPROPERTYPAGE_ADVANCED DI_FUNCTION = 0x00000028\n\tDIF_UPDATEDRIVER_UI                DI_FUNCTION = 0x00000029\n\tDIF_FINISHINSTALL_ACTION           DI_FUNCTION = 0x0000002A\n)\n\n// DevInstallParams is device installation parameters structure (associated with a particular device information element, or globally with a device information set)\ntype DevInstallParams struct {\n\tsize                     uint32\n\tFlags                    DI_FLAGS\n\tFlagsEx                  DI_FLAGSEX\n\thwndParent               uintptr\n\tInstallMsgHandler        uintptr\n\tInstallMsgHandlerContext uintptr\n\tFileQueue                HSPFILEQ\n\t_                        uintptr\n\t_                        uint32\n\tdriverPath               [MAX_PATH]uint16\n}\n\nfunc (params *DevInstallParams) DriverPath() string {\n\treturn UTF16ToString(params.driverPath[:])\n}\n\nfunc (params *DevInstallParams) SetDriverPath(driverPath string) error {\n\tstr, err := UTF16FromString(driverPath)\n\tif err != nil {\n\t\treturn err\n\t}\n\tcopy(params.driverPath[:], str)\n\treturn nil\n}\n\n// DI_FLAGS is SP_DEVINSTALL_PARAMS.Flags values\ntype DI_FLAGS uint32\n\nconst (\n\t// Flags for choosing a device\n\tDI_SHOWOEM       DI_FLAGS = 0x00000001 // support Other... button\n\tDI_SHOWCOMPAT    DI_FLAGS = 0x00000002 // show compatibility list\n\tDI_SHOWCLASS     DI_FLAGS = 0x00000004 // show class list\n\tDI_SHOWALL       DI_FLAGS = 0x00000007 // both class & compat list shown\n\tDI_NOVCP         DI_FLAGS = 0x00000008 // don't create a new copy queue--use caller-supplied FileQueue\n\tDI_DIDCOMPAT     DI_FLAGS = 0x00000010 // Searched for compatible devices\n\tDI_DIDCLASS      DI_FLAGS = 0x00000020 // Searched for class devices\n\tDI_AUTOASSIGNRES DI_FLAGS = 0x00000040 // No UI for resources if possible\n\n\t// Flags returned by DiInstallDevice to indicate need to reboot/restart\n\tDI_NEEDRESTART DI_FLAGS = 0x00000080 // Reboot required to take effect\n\tDI_NEEDREBOOT  DI_FLAGS = 0x00000100 // \"\"\n\n\t// Flags for device installation\n\tDI_NOBROWSE DI_FLAGS = 0x00000200 // no Browse... in InsertDisk\n\n\t// Flags set by DiBuildDriverInfoList\n\tDI_MULTMFGS DI_FLAGS = 0x00000400 // Set if multiple manufacturers in class driver list\n\n\t// Flag indicates that device is disabled\n\tDI_DISABLED DI_FLAGS = 0x00000800 // Set if device disabled\n\n\t// Flags for Device/Class Properties\n\tDI_GENERALPAGE_ADDED  DI_FLAGS = 0x00001000\n\tDI_RESOURCEPAGE_ADDED DI_FLAGS = 0x00002000\n\n\t// Flag to indicate the setting properties for this Device (or class) caused a change so the Dev Mgr UI probably needs to be updated.\n\tDI_PROPERTIES_CHANGE DI_FLAGS = 0x00004000\n\n\t// Flag to indicate that the sorting from the INF file should be used.\n\tDI_INF_IS_SORTED DI_FLAGS = 0x00008000\n\n\t// Flag to indicate that only the INF specified by SP_DEVINSTALL_PARAMS.DriverPath should be searched.\n\tDI_ENUMSINGLEINF DI_FLAGS = 0x00010000\n\n\t// Flag that prevents ConfigMgr from removing/re-enumerating devices during device\n\t// registration, installation, and deletion.\n\tDI_DONOTCALLCONFIGMG DI_FLAGS = 0x00020000\n\n\t// The following flag can be used to install a device disabled\n\tDI_INSTALLDISABLED DI_FLAGS = 0x00040000\n\n\t// Flag that causes SetupDiBuildDriverInfoList to build a device's compatible driver\n\t// list from its existing class driver list, instead of the normal INF search.\n\tDI_COMPAT_FROM_CLASS DI_FLAGS = 0x00080000\n\n\t// This flag is set if the Class Install params should be used.\n\tDI_CLASSINSTALLPARAMS DI_FLAGS = 0x00100000\n\n\t// This flag is set if the caller of DiCallClassInstaller does NOT want the internal default action performed if the Class installer returns ERROR_DI_DO_DEFAULT.\n\tDI_NODI_DEFAULTACTION DI_FLAGS = 0x00200000\n\n\t// Flags for device installation\n\tDI_QUIETINSTALL        DI_FLAGS = 0x00800000 // don't confuse the user with questions or excess info\n\tDI_NOFILECOPY          DI_FLAGS = 0x01000000 // No file Copy necessary\n\tDI_FORCECOPY           DI_FLAGS = 0x02000000 // Force files to be copied from install path\n\tDI_DRIVERPAGE_ADDED    DI_FLAGS = 0x04000000 // Prop provider added Driver page.\n\tDI_USECI_SELECTSTRINGS DI_FLAGS = 0x08000000 // Use Class Installer Provided strings in the Select Device Dlg\n\tDI_OVERRIDE_INFFLAGS   DI_FLAGS = 0x10000000 // Override INF flags\n\tDI_PROPS_NOCHANGEUSAGE DI_FLAGS = 0x20000000 // No Enable/Disable in General Props\n\n\tDI_NOSELECTICONS DI_FLAGS = 0x40000000 // No small icons in select device dialogs\n\n\tDI_NOWRITE_IDS DI_FLAGS = 0x80000000 // Don't write HW & Compat IDs on install\n)\n\n// DI_FLAGSEX is SP_DEVINSTALL_PARAMS.FlagsEx values\ntype DI_FLAGSEX uint32\n\nconst (\n\tDI_FLAGSEX_CI_FAILED                DI_FLAGSEX = 0x00000004 // Failed to Load/Call class installer\n\tDI_FLAGSEX_FINISHINSTALL_ACTION     DI_FLAGSEX = 0x00000008 // Class/co-installer wants to get a DIF_FINISH_INSTALL action in client context.\n\tDI_FLAGSEX_DIDINFOLIST              DI_FLAGSEX = 0x00000010 // Did the Class Info List\n\tDI_FLAGSEX_DIDCOMPATINFO            DI_FLAGSEX = 0x00000020 // Did the Compat Info List\n\tDI_FLAGSEX_FILTERCLASSES            DI_FLAGSEX = 0x00000040\n\tDI_FLAGSEX_SETFAILEDINSTALL         DI_FLAGSEX = 0x00000080\n\tDI_FLAGSEX_DEVICECHANGE             DI_FLAGSEX = 0x00000100\n\tDI_FLAGSEX_ALWAYSWRITEIDS           DI_FLAGSEX = 0x00000200\n\tDI_FLAGSEX_PROPCHANGE_PENDING       DI_FLAGSEX = 0x00000400 // One or more device property sheets have had changes made to them, and need to have a DIF_PROPERTYCHANGE occur.\n\tDI_FLAGSEX_ALLOWEXCLUDEDDRVS        DI_FLAGSEX = 0x00000800\n\tDI_FLAGSEX_NOUIONQUERYREMOVE        DI_FLAGSEX = 0x00001000\n\tDI_FLAGSEX_USECLASSFORCOMPAT        DI_FLAGSEX = 0x00002000 // Use the device's class when building compat drv list. (Ignored if DI_COMPAT_FROM_CLASS flag is specified.)\n\tDI_FLAGSEX_NO_DRVREG_MODIFY         DI_FLAGSEX = 0x00008000 // Don't run AddReg and DelReg for device's software (driver) key.\n\tDI_FLAGSEX_IN_SYSTEM_SETUP          DI_FLAGSEX = 0x00010000 // Installation is occurring during initial system setup.\n\tDI_FLAGSEX_INET_DRIVER              DI_FLAGSEX = 0x00020000 // Driver came from Windows Update\n\tDI_FLAGSEX_APPENDDRIVERLIST         DI_FLAGSEX = 0x00040000 // Cause SetupDiBuildDriverInfoList to append a new driver list to an existing list.\n\tDI_FLAGSEX_PREINSTALLBACKUP         DI_FLAGSEX = 0x00080000 // not used\n\tDI_FLAGSEX_BACKUPONREPLACE          DI_FLAGSEX = 0x00100000 // not used\n\tDI_FLAGSEX_DRIVERLIST_FROM_URL      DI_FLAGSEX = 0x00200000 // build driver list from INF(s) retrieved from URL specified in SP_DEVINSTALL_PARAMS.DriverPath (empty string means Windows Update website)\n\tDI_FLAGSEX_EXCLUDE_OLD_INET_DRIVERS DI_FLAGSEX = 0x00800000 // Don't include old Internet drivers when building a driver list. Ignored on Windows Vista and later.\n\tDI_FLAGSEX_POWERPAGE_ADDED          DI_FLAGSEX = 0x01000000 // class installer added their own power page\n\tDI_FLAGSEX_FILTERSIMILARDRIVERS     DI_FLAGSEX = 0x02000000 // only include similar drivers in class list\n\tDI_FLAGSEX_INSTALLEDDRIVER          DI_FLAGSEX = 0x04000000 // only add the installed driver to the class or compat driver list.  Used in calls to SetupDiBuildDriverInfoList\n\tDI_FLAGSEX_NO_CLASSLIST_NODE_MERGE  DI_FLAGSEX = 0x08000000 // Don't remove identical driver nodes from the class list\n\tDI_FLAGSEX_ALTPLATFORM_DRVSEARCH    DI_FLAGSEX = 0x10000000 // Build driver list based on alternate platform information specified in associated file queue\n\tDI_FLAGSEX_RESTART_DEVICE_ONLY      DI_FLAGSEX = 0x20000000 // only restart the device drivers are being installed on as opposed to restarting all devices using those drivers.\n\tDI_FLAGSEX_RECURSIVESEARCH          DI_FLAGSEX = 0x40000000 // Tell SetupDiBuildDriverInfoList to do a recursive search\n\tDI_FLAGSEX_SEARCH_PUBLISHED_INFS    DI_FLAGSEX = 0x80000000 // Tell SetupDiBuildDriverInfoList to do a \"published INF\" search\n)\n\n// ClassInstallHeader is the first member of any class install parameters structure. It contains the device installation request code that defines the format of the rest of the install parameters structure.\ntype ClassInstallHeader struct {\n\tsize            uint32\n\tInstallFunction DI_FUNCTION\n}\n\nfunc MakeClassInstallHeader(installFunction DI_FUNCTION) *ClassInstallHeader {\n\thdr := &ClassInstallHeader{InstallFunction: installFunction}\n\thdr.size = uint32(unsafe.Sizeof(*hdr))\n\treturn hdr\n}\n\n// DICS_STATE specifies values indicating a change in a device's state\ntype DICS_STATE uint32\n\nconst (\n\tDICS_ENABLE     DICS_STATE = 0x00000001 // The device is being enabled.\n\tDICS_DISABLE    DICS_STATE = 0x00000002 // The device is being disabled.\n\tDICS_PROPCHANGE DICS_STATE = 0x00000003 // The properties of the device have changed.\n\tDICS_START      DICS_STATE = 0x00000004 // The device is being started (if the request is for the currently active hardware profile).\n\tDICS_STOP       DICS_STATE = 0x00000005 // The device is being stopped. The driver stack will be unloaded and the CSCONFIGFLAG_DO_NOT_START flag will be set for the device.\n)\n\n// DICS_FLAG specifies the scope of a device property change\ntype DICS_FLAG uint32\n\nconst (\n\tDICS_FLAG_GLOBAL         DICS_FLAG = 0x00000001 // make change in all hardware profiles\n\tDICS_FLAG_CONFIGSPECIFIC DICS_FLAG = 0x00000002 // make change in specified profile only\n\tDICS_FLAG_CONFIGGENERAL  DICS_FLAG = 0x00000004 // 1 or more hardware profile-specific changes to follow (obsolete)\n)\n\n// PropChangeParams is a structure corresponding to a DIF_PROPERTYCHANGE install function.\ntype PropChangeParams struct {\n\tClassInstallHeader ClassInstallHeader\n\tStateChange        DICS_STATE\n\tScope              DICS_FLAG\n\tHwProfile          uint32\n}\n\n// DI_REMOVEDEVICE specifies the scope of the device removal\ntype DI_REMOVEDEVICE uint32\n\nconst (\n\tDI_REMOVEDEVICE_GLOBAL         DI_REMOVEDEVICE = 0x00000001 // Make this change in all hardware profiles. Remove information about the device from the registry.\n\tDI_REMOVEDEVICE_CONFIGSPECIFIC DI_REMOVEDEVICE = 0x00000002 // Make this change to only the hardware profile specified by HwProfile. this flag only applies to root-enumerated devices. When Windows removes the device from the last hardware profile in which it was configured, Windows performs a global removal.\n)\n\n// RemoveDeviceParams is a structure corresponding to a DIF_REMOVE install function.\ntype RemoveDeviceParams struct {\n\tClassInstallHeader ClassInstallHeader\n\tScope              DI_REMOVEDEVICE\n\tHwProfile          uint32\n}\n\n// DrvInfoData is driver information structure (member of a driver info list that may be associated with a particular device instance, or (globally) with a device information set)\ntype DrvInfoData struct {\n\tsize          uint32\n\tDriverType    uint32\n\t_             uintptr\n\tdescription   [LINE_LEN]uint16\n\tmfgName       [LINE_LEN]uint16\n\tproviderName  [LINE_LEN]uint16\n\tDriverDate    Filetime\n\tDriverVersion uint64\n}\n\nfunc (data *DrvInfoData) Description() string {\n\treturn UTF16ToString(data.description[:])\n}\n\nfunc (data *DrvInfoData) SetDescription(description string) error {\n\tstr, err := UTF16FromString(description)\n\tif err != nil {\n\t\treturn err\n\t}\n\tcopy(data.description[:], str)\n\treturn nil\n}\n\nfunc (data *DrvInfoData) MfgName() string {\n\treturn UTF16ToString(data.mfgName[:])\n}\n\nfunc (data *DrvInfoData) SetMfgName(mfgName string) error {\n\tstr, err := UTF16FromString(mfgName)\n\tif err != nil {\n\t\treturn err\n\t}\n\tcopy(data.mfgName[:], str)\n\treturn nil\n}\n\nfunc (data *DrvInfoData) ProviderName() string {\n\treturn UTF16ToString(data.providerName[:])\n}\n\nfunc (data *DrvInfoData) SetProviderName(providerName string) error {\n\tstr, err := UTF16FromString(providerName)\n\tif err != nil {\n\t\treturn err\n\t}\n\tcopy(data.providerName[:], str)\n\treturn nil\n}\n\n// IsNewer method returns true if DrvInfoData date and version is newer than supplied parameters.\nfunc (data *DrvInfoData) IsNewer(driverDate Filetime, driverVersion uint64) bool {\n\tif data.DriverDate.HighDateTime > driverDate.HighDateTime {\n\t\treturn true\n\t}\n\tif data.DriverDate.HighDateTime < driverDate.HighDateTime {\n\t\treturn false\n\t}\n\n\tif data.DriverDate.LowDateTime > driverDate.LowDateTime {\n\t\treturn true\n\t}\n\tif data.DriverDate.LowDateTime < driverDate.LowDateTime {\n\t\treturn false\n\t}\n\n\tif data.DriverVersion > driverVersion {\n\t\treturn true\n\t}\n\tif data.DriverVersion < driverVersion {\n\t\treturn false\n\t}\n\n\treturn false\n}\n\n// DrvInfoDetailData is driver information details structure (provides detailed information about a particular driver information structure)\ntype DrvInfoDetailData struct {\n\tsize            uint32 // Use unsafeSizeOf method\n\tInfDate         Filetime\n\tcompatIDsOffset uint32\n\tcompatIDsLength uint32\n\t_               uintptr\n\tsectionName     [LINE_LEN]uint16\n\tinfFileName     [MAX_PATH]uint16\n\tdrvDescription  [LINE_LEN]uint16\n\thardwareID      [1]uint16\n}\n\nfunc (*DrvInfoDetailData) unsafeSizeOf() uint32 {\n\tif unsafe.Sizeof(uintptr(0)) == 4 {\n\t\t// Windows declares this with pshpack1.h\n\t\treturn uint32(unsafe.Offsetof(DrvInfoDetailData{}.hardwareID) + unsafe.Sizeof(DrvInfoDetailData{}.hardwareID))\n\t}\n\treturn uint32(unsafe.Sizeof(DrvInfoDetailData{}))\n}\n\nfunc (data *DrvInfoDetailData) SectionName() string {\n\treturn UTF16ToString(data.sectionName[:])\n}\n\nfunc (data *DrvInfoDetailData) InfFileName() string {\n\treturn UTF16ToString(data.infFileName[:])\n}\n\nfunc (data *DrvInfoDetailData) DrvDescription() string {\n\treturn UTF16ToString(data.drvDescription[:])\n}\n\nfunc (data *DrvInfoDetailData) HardwareID() string {\n\tif data.compatIDsOffset > 1 {\n\t\tbufW := data.getBuf()\n\t\treturn UTF16ToString(bufW[:wcslen(bufW)])\n\t}\n\n\treturn \"\"\n}\n\nfunc (data *DrvInfoDetailData) CompatIDs() []string {\n\ta := make([]string, 0)\n\n\tif data.compatIDsLength > 0 {\n\t\tbufW := data.getBuf()\n\t\tbufW = bufW[data.compatIDsOffset : data.compatIDsOffset+data.compatIDsLength]\n\t\tfor i := 0; i < len(bufW); {\n\t\t\tj := i + wcslen(bufW[i:])\n\t\t\tif i < j {\n\t\t\t\ta = append(a, UTF16ToString(bufW[i:j]))\n\t\t\t}\n\t\t\ti = j + 1\n\t\t}\n\t}\n\n\treturn a\n}\n\nfunc (data *DrvInfoDetailData) getBuf() []uint16 {\n\tlen := (data.size - uint32(unsafe.Offsetof(data.hardwareID))) / 2\n\tsl := struct {\n\t\taddr *uint16\n\t\tlen  int\n\t\tcap  int\n\t}{&data.hardwareID[0], int(len), int(len)}\n\treturn *(*[]uint16)(unsafe.Pointer(&sl))\n}\n\n// IsCompatible method tests if given hardware ID matches the driver or is listed on the compatible ID list.\nfunc (data *DrvInfoDetailData) IsCompatible(hwid string) bool {\n\thwidLC := strings.ToLower(hwid)\n\tif strings.ToLower(data.HardwareID()) == hwidLC {\n\t\treturn true\n\t}\n\ta := data.CompatIDs()\n\tfor i := range a {\n\t\tif strings.ToLower(a[i]) == hwidLC {\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn false\n}\n\n// DICD flags control SetupDiCreateDeviceInfo\ntype DICD uint32\n\nconst (\n\tDICD_GENERATE_ID       DICD = 0x00000001\n\tDICD_INHERIT_CLASSDRVS DICD = 0x00000002\n)\n\n// SUOI flags control SetupUninstallOEMInf\ntype SUOI uint32\n\nconst (\n\tSUOI_FORCEDELETE SUOI = 0x0001\n)\n\n// SPDIT flags to distinguish between class drivers and\n// device drivers. (Passed in 'DriverType' parameter of\n// driver information list APIs)\ntype SPDIT uint32\n\nconst (\n\tSPDIT_NODRIVER     SPDIT = 0x00000000\n\tSPDIT_CLASSDRIVER  SPDIT = 0x00000001\n\tSPDIT_COMPATDRIVER SPDIT = 0x00000002\n)\n\n// DIGCF flags control what is included in the device information set built by SetupDiGetClassDevs\ntype DIGCF uint32\n\nconst (\n\tDIGCF_DEFAULT         DIGCF = 0x00000001 // only valid with DIGCF_DEVICEINTERFACE\n\tDIGCF_PRESENT         DIGCF = 0x00000002\n\tDIGCF_ALLCLASSES      DIGCF = 0x00000004\n\tDIGCF_PROFILE         DIGCF = 0x00000008\n\tDIGCF_DEVICEINTERFACE DIGCF = 0x00000010\n)\n\n// DIREG specifies values for SetupDiCreateDevRegKey, SetupDiOpenDevRegKey, and SetupDiDeleteDevRegKey.\ntype DIREG uint32\n\nconst (\n\tDIREG_DEV  DIREG = 0x00000001 // Open/Create/Delete device key\n\tDIREG_DRV  DIREG = 0x00000002 // Open/Create/Delete driver key\n\tDIREG_BOTH DIREG = 0x00000004 // Delete both driver and Device key\n)\n\n// SPDRP specifies device registry property codes\n// (Codes marked as read-only (R) may only be used for\n// SetupDiGetDeviceRegistryProperty)\n//\n// These values should cover the same set of registry properties\n// as defined by the CM_DRP codes in cfgmgr32.h.\n//\n// Note that SPDRP codes are zero based while CM_DRP codes are one based!\ntype SPDRP uint32\n\nconst (\n\tSPDRP_DEVICEDESC                  SPDRP = 0x00000000 // DeviceDesc (R/W)\n\tSPDRP_HARDWAREID                  SPDRP = 0x00000001 // HardwareID (R/W)\n\tSPDRP_COMPATIBLEIDS               SPDRP = 0x00000002 // CompatibleIDs (R/W)\n\tSPDRP_SERVICE                     SPDRP = 0x00000004 // Service (R/W)\n\tSPDRP_CLASS                       SPDRP = 0x00000007 // Class (R--tied to ClassGUID)\n\tSPDRP_CLASSGUID                   SPDRP = 0x00000008 // ClassGUID (R/W)\n\tSPDRP_DRIVER                      SPDRP = 0x00000009 // Driver (R/W)\n\tSPDRP_CONFIGFLAGS                 SPDRP = 0x0000000A // ConfigFlags (R/W)\n\tSPDRP_MFG                         SPDRP = 0x0000000B // Mfg (R/W)\n\tSPDRP_FRIENDLYNAME                SPDRP = 0x0000000C // FriendlyName (R/W)\n\tSPDRP_LOCATION_INFORMATION        SPDRP = 0x0000000D // LocationInformation (R/W)\n\tSPDRP_PHYSICAL_DEVICE_OBJECT_NAME SPDRP = 0x0000000E // PhysicalDeviceObjectName (R)\n\tSPDRP_CAPABILITIES                SPDRP = 0x0000000F // Capabilities (R)\n\tSPDRP_UI_NUMBER                   SPDRP = 0x00000010 // UiNumber (R)\n\tSPDRP_UPPERFILTERS                SPDRP = 0x00000011 // UpperFilters (R/W)\n\tSPDRP_LOWERFILTERS                SPDRP = 0x00000012 // LowerFilters (R/W)\n\tSPDRP_BUSTYPEGUID                 SPDRP = 0x00000013 // BusTypeGUID (R)\n\tSPDRP_LEGACYBUSTYPE               SPDRP = 0x00000014 // LegacyBusType (R)\n\tSPDRP_BUSNUMBER                   SPDRP = 0x00000015 // BusNumber (R)\n\tSPDRP_ENUMERATOR_NAME             SPDRP = 0x00000016 // Enumerator Name (R)\n\tSPDRP_SECURITY                    SPDRP = 0x00000017 // Security (R/W, binary form)\n\tSPDRP_SECURITY_SDS                SPDRP = 0x00000018 // Security (W, SDS form)\n\tSPDRP_DEVTYPE                     SPDRP = 0x00000019 // Device Type (R/W)\n\tSPDRP_EXCLUSIVE                   SPDRP = 0x0000001A // Device is exclusive-access (R/W)\n\tSPDRP_CHARACTERISTICS             SPDRP = 0x0000001B // Device Characteristics (R/W)\n\tSPDRP_ADDRESS                     SPDRP = 0x0000001C // Device Address (R)\n\tSPDRP_UI_NUMBER_DESC_FORMAT       SPDRP = 0x0000001D // UiNumberDescFormat (R/W)\n\tSPDRP_DEVICE_POWER_DATA           SPDRP = 0x0000001E // Device Power Data (R)\n\tSPDRP_REMOVAL_POLICY              SPDRP = 0x0000001F // Removal Policy (R)\n\tSPDRP_REMOVAL_POLICY_HW_DEFAULT   SPDRP = 0x00000020 // Hardware Removal Policy (R)\n\tSPDRP_REMOVAL_POLICY_OVERRIDE     SPDRP = 0x00000021 // Removal Policy Override (RW)\n\tSPDRP_INSTALL_STATE               SPDRP = 0x00000022 // Device Install State (R)\n\tSPDRP_LOCATION_PATHS              SPDRP = 0x00000023 // Device Location Paths (R)\n\tSPDRP_BASE_CONTAINERID            SPDRP = 0x00000024 // Base ContainerID (R)\n\n\tSPDRP_MAXIMUM_PROPERTY SPDRP = 0x00000025 // Upper bound on ordinals\n)\n\n// DEVPROPTYPE represents the property-data-type identifier that specifies the\n// data type of a device property value in the unified device property model.\ntype DEVPROPTYPE uint32\n\nconst (\n\tDEVPROP_TYPEMOD_ARRAY DEVPROPTYPE = 0x00001000\n\tDEVPROP_TYPEMOD_LIST  DEVPROPTYPE = 0x00002000\n\n\tDEVPROP_TYPE_EMPTY                      DEVPROPTYPE = 0x00000000\n\tDEVPROP_TYPE_NULL                       DEVPROPTYPE = 0x00000001\n\tDEVPROP_TYPE_SBYTE                      DEVPROPTYPE = 0x00000002\n\tDEVPROP_TYPE_BYTE                       DEVPROPTYPE = 0x00000003\n\tDEVPROP_TYPE_INT16                      DEVPROPTYPE = 0x00000004\n\tDEVPROP_TYPE_UINT16                     DEVPROPTYPE = 0x00000005\n\tDEVPROP_TYPE_INT32                      DEVPROPTYPE = 0x00000006\n\tDEVPROP_TYPE_UINT32                     DEVPROPTYPE = 0x00000007\n\tDEVPROP_TYPE_INT64                      DEVPROPTYPE = 0x00000008\n\tDEVPROP_TYPE_UINT64                     DEVPROPTYPE = 0x00000009\n\tDEVPROP_TYPE_FLOAT                      DEVPROPTYPE = 0x0000000A\n\tDEVPROP_TYPE_DOUBLE                     DEVPROPTYPE = 0x0000000B\n\tDEVPROP_TYPE_DECIMAL                    DEVPROPTYPE = 0x0000000C\n\tDEVPROP_TYPE_GUID                       DEVPROPTYPE = 0x0000000D\n\tDEVPROP_TYPE_CURRENCY                   DEVPROPTYPE = 0x0000000E\n\tDEVPROP_TYPE_DATE                       DEVPROPTYPE = 0x0000000F\n\tDEVPROP_TYPE_FILETIME                   DEVPROPTYPE = 0x00000010\n\tDEVPROP_TYPE_BOOLEAN                    DEVPROPTYPE = 0x00000011\n\tDEVPROP_TYPE_STRING                     DEVPROPTYPE = 0x00000012\n\tDEVPROP_TYPE_STRING_LIST                DEVPROPTYPE = DEVPROP_TYPE_STRING | DEVPROP_TYPEMOD_LIST\n\tDEVPROP_TYPE_SECURITY_DESCRIPTOR        DEVPROPTYPE = 0x00000013\n\tDEVPROP_TYPE_SECURITY_DESCRIPTOR_STRING DEVPROPTYPE = 0x00000014\n\tDEVPROP_TYPE_DEVPROPKEY                 DEVPROPTYPE = 0x00000015\n\tDEVPROP_TYPE_DEVPROPTYPE                DEVPROPTYPE = 0x00000016\n\tDEVPROP_TYPE_BINARY                     DEVPROPTYPE = DEVPROP_TYPE_BYTE | DEVPROP_TYPEMOD_ARRAY\n\tDEVPROP_TYPE_ERROR                      DEVPROPTYPE = 0x00000017\n\tDEVPROP_TYPE_NTSTATUS                   DEVPROPTYPE = 0x00000018\n\tDEVPROP_TYPE_STRING_INDIRECT            DEVPROPTYPE = 0x00000019\n\n\tMAX_DEVPROP_TYPE    DEVPROPTYPE = 0x00000019\n\tMAX_DEVPROP_TYPEMOD DEVPROPTYPE = 0x00002000\n\n\tDEVPROP_MASK_TYPE    DEVPROPTYPE = 0x00000FFF\n\tDEVPROP_MASK_TYPEMOD DEVPROPTYPE = 0x0000F000\n)\n\n// DEVPROPGUID specifies a property category.\ntype DEVPROPGUID GUID\n\n// DEVPROPID uniquely identifies the property within the property category.\ntype DEVPROPID uint32\n\nconst DEVPROPID_FIRST_USABLE DEVPROPID = 2\n\n// DEVPROPKEY represents a device property key for a device property in the\n// unified device property model.\ntype DEVPROPKEY struct {\n\tFmtID DEVPROPGUID\n\tPID   DEVPROPID\n}\n\n// CONFIGRET is a return value or error code from cfgmgr32 APIs\ntype CONFIGRET uint32\n\nfunc (ret CONFIGRET) Error() string {\n\tif win32Error, ok := ret.Unwrap().(Errno); ok {\n\t\treturn fmt.Sprintf(\"%s (CfgMgr error: 0x%08x)\", win32Error.Error(), uint32(ret))\n\t}\n\treturn fmt.Sprintf(\"CfgMgr error: 0x%08x\", uint32(ret))\n}\n\nfunc (ret CONFIGRET) Win32Error(defaultError Errno) Errno {\n\treturn cm_MapCrToWin32Err(ret, defaultError)\n}\n\nfunc (ret CONFIGRET) Unwrap() error {\n\tconst noMatch = Errno(^uintptr(0))\n\twin32Error := ret.Win32Error(noMatch)\n\tif win32Error == noMatch {\n\t\treturn nil\n\t}\n\treturn win32Error\n}\n\nconst (\n\tCR_SUCCESS                  CONFIGRET = 0x00000000\n\tCR_DEFAULT                  CONFIGRET = 0x00000001\n\tCR_OUT_OF_MEMORY            CONFIGRET = 0x00000002\n\tCR_INVALID_POINTER          CONFIGRET = 0x00000003\n\tCR_INVALID_FLAG             CONFIGRET = 0x00000004\n\tCR_INVALID_DEVNODE          CONFIGRET = 0x00000005\n\tCR_INVALID_DEVINST                    = CR_INVALID_DEVNODE\n\tCR_INVALID_RES_DES          CONFIGRET = 0x00000006\n\tCR_INVALID_LOG_CONF         CONFIGRET = 0x00000007\n\tCR_INVALID_ARBITRATOR       CONFIGRET = 0x00000008\n\tCR_INVALID_NODELIST         CONFIGRET = 0x00000009\n\tCR_DEVNODE_HAS_REQS         CONFIGRET = 0x0000000A\n\tCR_DEVINST_HAS_REQS                   = CR_DEVNODE_HAS_REQS\n\tCR_INVALID_RESOURCEID       CONFIGRET = 0x0000000B\n\tCR_DLVXD_NOT_FOUND          CONFIGRET = 0x0000000C\n\tCR_NO_SUCH_DEVNODE          CONFIGRET = 0x0000000D\n\tCR_NO_SUCH_DEVINST                    = CR_NO_SUCH_DEVNODE\n\tCR_NO_MORE_LOG_CONF         CONFIGRET = 0x0000000E\n\tCR_NO_MORE_RES_DES          CONFIGRET = 0x0000000F\n\tCR_ALREADY_SUCH_DEVNODE     CONFIGRET = 0x00000010\n\tCR_ALREADY_SUCH_DEVINST               = CR_ALREADY_SUCH_DEVNODE\n\tCR_INVALID_RANGE_LIST       CONFIGRET = 0x00000011\n\tCR_INVALID_RANGE            CONFIGRET = 0x00000012\n\tCR_FAILURE                  CONFIGRET = 0x00000013\n\tCR_NO_SUCH_LOGICAL_DEV      CONFIGRET = 0x00000014\n\tCR_CREATE_BLOCKED           CONFIGRET = 0x00000015\n\tCR_NOT_SYSTEM_VM            CONFIGRET = 0x00000016\n\tCR_REMOVE_VETOED            CONFIGRET = 0x00000017\n\tCR_APM_VETOED               CONFIGRET = 0x00000018\n\tCR_INVALID_LOAD_TYPE        CONFIGRET = 0x00000019\n\tCR_BUFFER_SMALL             CONFIGRET = 0x0000001A\n\tCR_NO_ARBITRATOR            CONFIGRET = 0x0000001B\n\tCR_NO_REGISTRY_HANDLE       CONFIGRET = 0x0000001C\n\tCR_REGISTRY_ERROR           CONFIGRET = 0x0000001D\n\tCR_INVALID_DEVICE_ID        CONFIGRET = 0x0000001E\n\tCR_INVALID_DATA             CONFIGRET = 0x0000001F\n\tCR_INVALID_API              CONFIGRET = 0x00000020\n\tCR_DEVLOADER_NOT_READY      CONFIGRET = 0x00000021\n\tCR_NEED_RESTART             CONFIGRET = 0x00000022\n\tCR_NO_MORE_HW_PROFILES      CONFIGRET = 0x00000023\n\tCR_DEVICE_NOT_THERE         CONFIGRET = 0x00000024\n\tCR_NO_SUCH_VALUE            CONFIGRET = 0x00000025\n\tCR_WRONG_TYPE               CONFIGRET = 0x00000026\n\tCR_INVALID_PRIORITY         CONFIGRET = 0x00000027\n\tCR_NOT_DISABLEABLE          CONFIGRET = 0x00000028\n\tCR_FREE_RESOURCES           CONFIGRET = 0x00000029\n\tCR_QUERY_VETOED             CONFIGRET = 0x0000002A\n\tCR_CANT_SHARE_IRQ           CONFIGRET = 0x0000002B\n\tCR_NO_DEPENDENT             CONFIGRET = 0x0000002C\n\tCR_SAME_RESOURCES           CONFIGRET = 0x0000002D\n\tCR_NO_SUCH_REGISTRY_KEY     CONFIGRET = 0x0000002E\n\tCR_INVALID_MACHINENAME      CONFIGRET = 0x0000002F\n\tCR_REMOTE_COMM_FAILURE      CONFIGRET = 0x00000030\n\tCR_MACHINE_UNAVAILABLE      CONFIGRET = 0x00000031\n\tCR_NO_CM_SERVICES           CONFIGRET = 0x00000032\n\tCR_ACCESS_DENIED            CONFIGRET = 0x00000033\n\tCR_CALL_NOT_IMPLEMENTED     CONFIGRET = 0x00000034\n\tCR_INVALID_PROPERTY         CONFIGRET = 0x00000035\n\tCR_DEVICE_INTERFACE_ACTIVE  CONFIGRET = 0x00000036\n\tCR_NO_SUCH_DEVICE_INTERFACE CONFIGRET = 0x00000037\n\tCR_INVALID_REFERENCE_STRING CONFIGRET = 0x00000038\n\tCR_INVALID_CONFLICT_LIST    CONFIGRET = 0x00000039\n\tCR_INVALID_INDEX            CONFIGRET = 0x0000003A\n\tCR_INVALID_STRUCTURE_SIZE   CONFIGRET = 0x0000003B\n\tNUM_CR_RESULTS              CONFIGRET = 0x0000003C\n)\n\nconst (\n\tCM_GET_DEVICE_INTERFACE_LIST_PRESENT     = 0 // only currently 'live' device interfaces\n\tCM_GET_DEVICE_INTERFACE_LIST_ALL_DEVICES = 1 // all registered device interfaces, live or not\n)\n\nconst (\n\tDN_ROOT_ENUMERATED       = 0x00000001        // Was enumerated by ROOT\n\tDN_DRIVER_LOADED         = 0x00000002        // Has Register_Device_Driver\n\tDN_ENUM_LOADED           = 0x00000004        // Has Register_Enumerator\n\tDN_STARTED               = 0x00000008        // Is currently configured\n\tDN_MANUAL                = 0x00000010        // Manually installed\n\tDN_NEED_TO_ENUM          = 0x00000020        // May need reenumeration\n\tDN_NOT_FIRST_TIME        = 0x00000040        // Has received a config\n\tDN_HARDWARE_ENUM         = 0x00000080        // Enum generates hardware ID\n\tDN_LIAR                  = 0x00000100        // Lied about can reconfig once\n\tDN_HAS_MARK              = 0x00000200        // Not CM_Create_DevInst lately\n\tDN_HAS_PROBLEM           = 0x00000400        // Need device installer\n\tDN_FILTERED              = 0x00000800        // Is filtered\n\tDN_MOVED                 = 0x00001000        // Has been moved\n\tDN_DISABLEABLE           = 0x00002000        // Can be disabled\n\tDN_REMOVABLE             = 0x00004000        // Can be removed\n\tDN_PRIVATE_PROBLEM       = 0x00008000        // Has a private problem\n\tDN_MF_PARENT             = 0x00010000        // Multi function parent\n\tDN_MF_CHILD              = 0x00020000        // Multi function child\n\tDN_WILL_BE_REMOVED       = 0x00040000        // DevInst is being removed\n\tDN_NOT_FIRST_TIMEE       = 0x00080000        // Has received a config enumerate\n\tDN_STOP_FREE_RES         = 0x00100000        // When child is stopped, free resources\n\tDN_REBAL_CANDIDATE       = 0x00200000        // Don't skip during rebalance\n\tDN_BAD_PARTIAL           = 0x00400000        // This devnode's log_confs do not have same resources\n\tDN_NT_ENUMERATOR         = 0x00800000        // This devnode's is an NT enumerator\n\tDN_NT_DRIVER             = 0x01000000        // This devnode's is an NT driver\n\tDN_NEEDS_LOCKING         = 0x02000000        // Devnode need lock resume processing\n\tDN_ARM_WAKEUP            = 0x04000000        // Devnode can be the wakeup device\n\tDN_APM_ENUMERATOR        = 0x08000000        // APM aware enumerator\n\tDN_APM_DRIVER            = 0x10000000        // APM aware driver\n\tDN_SILENT_INSTALL        = 0x20000000        // Silent install\n\tDN_NO_SHOW_IN_DM         = 0x40000000        // No show in device manager\n\tDN_BOOT_LOG_PROB         = 0x80000000        // Had a problem during preassignment of boot log conf\n\tDN_NEED_RESTART          = DN_LIAR           // System needs to be restarted for this Devnode to work properly\n\tDN_DRIVER_BLOCKED        = DN_NOT_FIRST_TIME // One or more drivers are blocked from loading for this Devnode\n\tDN_LEGACY_DRIVER         = DN_MOVED          // This device is using a legacy driver\n\tDN_CHILD_WITH_INVALID_ID = DN_HAS_MARK       // One or more children have invalid IDs\n\tDN_DEVICE_DISCONNECTED   = DN_NEEDS_LOCKING  // The function driver for a device reported that the device is not connected.  Typically this means a wireless device is out of range.\n\tDN_QUERY_REMOVE_PENDING  = DN_MF_PARENT      // Device is part of a set of related devices collectively pending query-removal\n\tDN_QUERY_REMOVE_ACTIVE   = DN_MF_CHILD       // Device is actively engaged in a query-remove IRP\n\tDN_CHANGEABLE_FLAGS      = DN_NOT_FIRST_TIME | DN_HARDWARE_ENUM | DN_HAS_MARK | DN_DISABLEABLE | DN_REMOVABLE | DN_MF_CHILD | DN_MF_PARENT | DN_NOT_FIRST_TIMEE | DN_STOP_FREE_RES | DN_REBAL_CANDIDATE | DN_NT_ENUMERATOR | DN_NT_DRIVER | DN_SILENT_INSTALL | DN_NO_SHOW_IN_DM\n)\n\n//sys\tsetupDiCreateDeviceInfoListEx(classGUID *GUID, hwndParent uintptr, machineName *uint16, reserved uintptr) (handle DevInfo, err error) [failretval==DevInfo(InvalidHandle)] = setupapi.SetupDiCreateDeviceInfoListExW\n\n// SetupDiCreateDeviceInfoListEx function creates an empty device information set on a remote or a local computer and optionally associates the set with a device setup class.\nfunc SetupDiCreateDeviceInfoListEx(classGUID *GUID, hwndParent uintptr, machineName string) (deviceInfoSet DevInfo, err error) {\n\tvar machineNameUTF16 *uint16\n\tif machineName != \"\" {\n\t\tmachineNameUTF16, err = UTF16PtrFromString(machineName)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\treturn setupDiCreateDeviceInfoListEx(classGUID, hwndParent, machineNameUTF16, 0)\n}\n\n//sys\tsetupDiGetDeviceInfoListDetail(deviceInfoSet DevInfo, deviceInfoSetDetailData *DevInfoListDetailData) (err error) = setupapi.SetupDiGetDeviceInfoListDetailW\n\n// SetupDiGetDeviceInfoListDetail function retrieves information associated with a device information set including the class GUID, remote computer handle, and remote computer name.\nfunc SetupDiGetDeviceInfoListDetail(deviceInfoSet DevInfo) (deviceInfoSetDetailData *DevInfoListDetailData, err error) {\n\tdata := &DevInfoListDetailData{}\n\tdata.size = data.unsafeSizeOf()\n\n\treturn data, setupDiGetDeviceInfoListDetail(deviceInfoSet, data)\n}\n\n// DeviceInfoListDetail method retrieves information associated with a device information set including the class GUID, remote computer handle, and remote computer name.\nfunc (deviceInfoSet DevInfo) DeviceInfoListDetail() (*DevInfoListDetailData, error) {\n\treturn SetupDiGetDeviceInfoListDetail(deviceInfoSet)\n}\n\n//sys\tsetupDiCreateDeviceInfo(deviceInfoSet DevInfo, DeviceName *uint16, classGUID *GUID, DeviceDescription *uint16, hwndParent uintptr, CreationFlags DICD, deviceInfoData *DevInfoData) (err error) = setupapi.SetupDiCreateDeviceInfoW\n\n// SetupDiCreateDeviceInfo function creates a new device information element and adds it as a new member to the specified device information set.\nfunc SetupDiCreateDeviceInfo(deviceInfoSet DevInfo, deviceName string, classGUID *GUID, deviceDescription string, hwndParent uintptr, creationFlags DICD) (deviceInfoData *DevInfoData, err error) {\n\tdeviceNameUTF16, err := UTF16PtrFromString(deviceName)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tvar deviceDescriptionUTF16 *uint16\n\tif deviceDescription != \"\" {\n\t\tdeviceDescriptionUTF16, err = UTF16PtrFromString(deviceDescription)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\n\tdata := &DevInfoData{}\n\tdata.size = uint32(unsafe.Sizeof(*data))\n\n\treturn data, setupDiCreateDeviceInfo(deviceInfoSet, deviceNameUTF16, classGUID, deviceDescriptionUTF16, hwndParent, creationFlags, data)\n}\n\n// CreateDeviceInfo method creates a new device information element and adds it as a new member to the specified device information set.\nfunc (deviceInfoSet DevInfo) CreateDeviceInfo(deviceName string, classGUID *GUID, deviceDescription string, hwndParent uintptr, creationFlags DICD) (*DevInfoData, error) {\n\treturn SetupDiCreateDeviceInfo(deviceInfoSet, deviceName, classGUID, deviceDescription, hwndParent, creationFlags)\n}\n\n//sys\tsetupDiEnumDeviceInfo(deviceInfoSet DevInfo, memberIndex uint32, deviceInfoData *DevInfoData) (err error) = setupapi.SetupDiEnumDeviceInfo\n\n// SetupDiEnumDeviceInfo function returns a DevInfoData structure that specifies a device information element in a device information set.\nfunc SetupDiEnumDeviceInfo(deviceInfoSet DevInfo, memberIndex int) (*DevInfoData, error) {\n\tdata := &DevInfoData{}\n\tdata.size = uint32(unsafe.Sizeof(*data))\n\n\treturn data, setupDiEnumDeviceInfo(deviceInfoSet, uint32(memberIndex), data)\n}\n\n// EnumDeviceInfo method returns a DevInfoData structure that specifies a device information element in a device information set.\nfunc (deviceInfoSet DevInfo) EnumDeviceInfo(memberIndex int) (*DevInfoData, error) {\n\treturn SetupDiEnumDeviceInfo(deviceInfoSet, memberIndex)\n}\n\n// SetupDiDestroyDeviceInfoList function deletes a device information set and frees all associated memory.\n//sys\tSetupDiDestroyDeviceInfoList(deviceInfoSet DevInfo) (err error) = setupapi.SetupDiDestroyDeviceInfoList\n\n// Close method deletes a device information set and frees all associated memory.\nfunc (deviceInfoSet DevInfo) Close() error {\n\treturn SetupDiDestroyDeviceInfoList(deviceInfoSet)\n}\n\n//sys\tSetupDiBuildDriverInfoList(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverType SPDIT) (err error) = setupapi.SetupDiBuildDriverInfoList\n\n// BuildDriverInfoList method builds a list of drivers that is associated with a specific device or with the global class driver list for a device information set.\nfunc (deviceInfoSet DevInfo) BuildDriverInfoList(deviceInfoData *DevInfoData, driverType SPDIT) error {\n\treturn SetupDiBuildDriverInfoList(deviceInfoSet, deviceInfoData, driverType)\n}\n\n//sys\tSetupDiCancelDriverInfoSearch(deviceInfoSet DevInfo) (err error) = setupapi.SetupDiCancelDriverInfoSearch\n\n// CancelDriverInfoSearch method cancels a driver list search that is currently in progress in a different thread.\nfunc (deviceInfoSet DevInfo) CancelDriverInfoSearch() error {\n\treturn SetupDiCancelDriverInfoSearch(deviceInfoSet)\n}\n\n//sys\tsetupDiEnumDriverInfo(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverType SPDIT, memberIndex uint32, driverInfoData *DrvInfoData) (err error) = setupapi.SetupDiEnumDriverInfoW\n\n// SetupDiEnumDriverInfo function enumerates the members of a driver list.\nfunc SetupDiEnumDriverInfo(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverType SPDIT, memberIndex int) (*DrvInfoData, error) {\n\tdata := &DrvInfoData{}\n\tdata.size = uint32(unsafe.Sizeof(*data))\n\n\treturn data, setupDiEnumDriverInfo(deviceInfoSet, deviceInfoData, driverType, uint32(memberIndex), data)\n}\n\n// EnumDriverInfo method enumerates the members of a driver list.\nfunc (deviceInfoSet DevInfo) EnumDriverInfo(deviceInfoData *DevInfoData, driverType SPDIT, memberIndex int) (*DrvInfoData, error) {\n\treturn SetupDiEnumDriverInfo(deviceInfoSet, deviceInfoData, driverType, memberIndex)\n}\n\n//sys\tsetupDiGetSelectedDriver(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverInfoData *DrvInfoData) (err error) = setupapi.SetupDiGetSelectedDriverW\n\n// SetupDiGetSelectedDriver function retrieves the selected driver for a device information set or a particular device information element.\nfunc SetupDiGetSelectedDriver(deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (*DrvInfoData, error) {\n\tdata := &DrvInfoData{}\n\tdata.size = uint32(unsafe.Sizeof(*data))\n\n\treturn data, setupDiGetSelectedDriver(deviceInfoSet, deviceInfoData, data)\n}\n\n// SelectedDriver method retrieves the selected driver for a device information set or a particular device information element.\nfunc (deviceInfoSet DevInfo) SelectedDriver(deviceInfoData *DevInfoData) (*DrvInfoData, error) {\n\treturn SetupDiGetSelectedDriver(deviceInfoSet, deviceInfoData)\n}\n\n//sys\tSetupDiSetSelectedDriver(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverInfoData *DrvInfoData) (err error) = setupapi.SetupDiSetSelectedDriverW\n\n// SetSelectedDriver method sets, or resets, the selected driver for a device information element or the selected class driver for a device information set.\nfunc (deviceInfoSet DevInfo) SetSelectedDriver(deviceInfoData *DevInfoData, driverInfoData *DrvInfoData) error {\n\treturn SetupDiSetSelectedDriver(deviceInfoSet, deviceInfoData, driverInfoData)\n}\n\n//sys\tsetupDiGetDriverInfoDetail(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverInfoData *DrvInfoData, driverInfoDetailData *DrvInfoDetailData, driverInfoDetailDataSize uint32, requiredSize *uint32) (err error) = setupapi.SetupDiGetDriverInfoDetailW\n\n// SetupDiGetDriverInfoDetail function retrieves driver information detail for a device information set or a particular device information element in the device information set.\nfunc SetupDiGetDriverInfoDetail(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverInfoData *DrvInfoData) (*DrvInfoDetailData, error) {\n\treqSize := uint32(2048)\n\tfor {\n\t\tbuf := make([]byte, reqSize)\n\t\tdata := (*DrvInfoDetailData)(unsafe.Pointer(&buf[0]))\n\t\tdata.size = data.unsafeSizeOf()\n\t\terr := setupDiGetDriverInfoDetail(deviceInfoSet, deviceInfoData, driverInfoData, data, uint32(len(buf)), &reqSize)\n\t\tif err == ERROR_INSUFFICIENT_BUFFER {\n\t\t\tcontinue\n\t\t}\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tdata.size = reqSize\n\t\treturn data, nil\n\t}\n}\n\n// DriverInfoDetail method retrieves driver information detail for a device information set or a particular device information element in the device information set.\nfunc (deviceInfoSet DevInfo) DriverInfoDetail(deviceInfoData *DevInfoData, driverInfoData *DrvInfoData) (*DrvInfoDetailData, error) {\n\treturn SetupDiGetDriverInfoDetail(deviceInfoSet, deviceInfoData, driverInfoData)\n}\n\n//sys\tSetupDiDestroyDriverInfoList(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverType SPDIT) (err error) = setupapi.SetupDiDestroyDriverInfoList\n\n// DestroyDriverInfoList method deletes a driver list.\nfunc (deviceInfoSet DevInfo) DestroyDriverInfoList(deviceInfoData *DevInfoData, driverType SPDIT) error {\n\treturn SetupDiDestroyDriverInfoList(deviceInfoSet, deviceInfoData, driverType)\n}\n\n//sys\tsetupDiGetClassDevsEx(classGUID *GUID, Enumerator *uint16, hwndParent uintptr, Flags DIGCF, deviceInfoSet DevInfo, machineName *uint16, reserved uintptr) (handle DevInfo, err error) [failretval==DevInfo(InvalidHandle)] = setupapi.SetupDiGetClassDevsExW\n\n// SetupDiGetClassDevsEx function returns a handle to a device information set that contains requested device information elements for a local or a remote computer.\nfunc SetupDiGetClassDevsEx(classGUID *GUID, enumerator string, hwndParent uintptr, flags DIGCF, deviceInfoSet DevInfo, machineName string) (handle DevInfo, err error) {\n\tvar enumeratorUTF16 *uint16\n\tif enumerator != \"\" {\n\t\tenumeratorUTF16, err = UTF16PtrFromString(enumerator)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\tvar machineNameUTF16 *uint16\n\tif machineName != \"\" {\n\t\tmachineNameUTF16, err = UTF16PtrFromString(machineName)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\treturn setupDiGetClassDevsEx(classGUID, enumeratorUTF16, hwndParent, flags, deviceInfoSet, machineNameUTF16, 0)\n}\n\n// SetupDiCallClassInstaller function calls the appropriate class installer, and any registered co-installers, with the specified installation request (DIF code).\n//sys\tSetupDiCallClassInstaller(installFunction DI_FUNCTION, deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (err error) = setupapi.SetupDiCallClassInstaller\n\n// CallClassInstaller member calls the appropriate class installer, and any registered co-installers, with the specified installation request (DIF code).\nfunc (deviceInfoSet DevInfo) CallClassInstaller(installFunction DI_FUNCTION, deviceInfoData *DevInfoData) error {\n\treturn SetupDiCallClassInstaller(installFunction, deviceInfoSet, deviceInfoData)\n}\n\n// SetupDiOpenDevRegKey function opens a registry key for device-specific configuration information.\n//sys\tSetupDiOpenDevRegKey(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, Scope DICS_FLAG, HwProfile uint32, KeyType DIREG, samDesired uint32) (key Handle, err error) [failretval==InvalidHandle] = setupapi.SetupDiOpenDevRegKey\n\n// OpenDevRegKey method opens a registry key for device-specific configuration information.\nfunc (deviceInfoSet DevInfo) OpenDevRegKey(DeviceInfoData *DevInfoData, Scope DICS_FLAG, HwProfile uint32, KeyType DIREG, samDesired uint32) (Handle, error) {\n\treturn SetupDiOpenDevRegKey(deviceInfoSet, DeviceInfoData, Scope, HwProfile, KeyType, samDesired)\n}\n\n//sys\tsetupDiGetDeviceProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, propertyKey *DEVPROPKEY, propertyType *DEVPROPTYPE, propertyBuffer *byte, propertyBufferSize uint32, requiredSize *uint32, flags uint32) (err error) = setupapi.SetupDiGetDevicePropertyW\n\n// SetupDiGetDeviceProperty function retrieves a specified device instance property.\nfunc SetupDiGetDeviceProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, propertyKey *DEVPROPKEY) (value interface{}, err error) {\n\treqSize := uint32(256)\n\tfor {\n\t\tvar dataType DEVPROPTYPE\n\t\tbuf := make([]byte, reqSize)\n\t\terr = setupDiGetDeviceProperty(deviceInfoSet, deviceInfoData, propertyKey, &dataType, &buf[0], uint32(len(buf)), &reqSize, 0)\n\t\tif err == ERROR_INSUFFICIENT_BUFFER {\n\t\t\tcontinue\n\t\t}\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t\tswitch dataType {\n\t\tcase DEVPROP_TYPE_STRING:\n\t\t\tret := UTF16ToString(bufToUTF16(buf))\n\t\t\truntime.KeepAlive(buf)\n\t\t\treturn ret, nil\n\t\t}\n\t\treturn nil, errors.New(\"unimplemented property type\")\n\t}\n}\n\n//sys\tsetupDiGetDeviceRegistryProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, property SPDRP, propertyRegDataType *uint32, propertyBuffer *byte, propertyBufferSize uint32, requiredSize *uint32) (err error) = setupapi.SetupDiGetDeviceRegistryPropertyW\n\n// SetupDiGetDeviceRegistryProperty function retrieves a specified Plug and Play device property.\nfunc SetupDiGetDeviceRegistryProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, property SPDRP) (value interface{}, err error) {\n\treqSize := uint32(256)\n\tfor {\n\t\tvar dataType uint32\n\t\tbuf := make([]byte, reqSize)\n\t\terr = setupDiGetDeviceRegistryProperty(deviceInfoSet, deviceInfoData, property, &dataType, &buf[0], uint32(len(buf)), &reqSize)\n\t\tif err == ERROR_INSUFFICIENT_BUFFER {\n\t\t\tcontinue\n\t\t}\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t\treturn getRegistryValue(buf[:reqSize], dataType)\n\t}\n}\n\nfunc getRegistryValue(buf []byte, dataType uint32) (interface{}, error) {\n\tswitch dataType {\n\tcase REG_SZ:\n\t\tret := UTF16ToString(bufToUTF16(buf))\n\t\truntime.KeepAlive(buf)\n\t\treturn ret, nil\n\tcase REG_EXPAND_SZ:\n\t\tvalue := UTF16ToString(bufToUTF16(buf))\n\t\tif value == \"\" {\n\t\t\treturn \"\", nil\n\t\t}\n\t\tp, err := syscall.UTF16PtrFromString(value)\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t\tret := make([]uint16, 100)\n\t\tfor {\n\t\t\tn, err := ExpandEnvironmentStrings(p, &ret[0], uint32(len(ret)))\n\t\t\tif err != nil {\n\t\t\t\treturn \"\", err\n\t\t\t}\n\t\t\tif n <= uint32(len(ret)) {\n\t\t\t\treturn UTF16ToString(ret[:n]), nil\n\t\t\t}\n\t\t\tret = make([]uint16, n)\n\t\t}\n\tcase REG_BINARY:\n\t\treturn buf, nil\n\tcase REG_DWORD_LITTLE_ENDIAN:\n\t\treturn binary.LittleEndian.Uint32(buf), nil\n\tcase REG_DWORD_BIG_ENDIAN:\n\t\treturn binary.BigEndian.Uint32(buf), nil\n\tcase REG_MULTI_SZ:\n\t\tbufW := bufToUTF16(buf)\n\t\ta := []string{}\n\t\tfor i := 0; i < len(bufW); {\n\t\t\tj := i + wcslen(bufW[i:])\n\t\t\tif i < j {\n\t\t\t\ta = append(a, UTF16ToString(bufW[i:j]))\n\t\t\t}\n\t\t\ti = j + 1\n\t\t}\n\t\truntime.KeepAlive(buf)\n\t\treturn a, nil\n\tcase REG_QWORD_LITTLE_ENDIAN:\n\t\treturn binary.LittleEndian.Uint64(buf), nil\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"Unsupported registry value type: %v\", dataType)\n\t}\n}\n\n// bufToUTF16 function reinterprets []byte buffer as []uint16\nfunc bufToUTF16(buf []byte) []uint16 {\n\tsl := struct {\n\t\taddr *uint16\n\t\tlen  int\n\t\tcap  int\n\t}{(*uint16)(unsafe.Pointer(&buf[0])), len(buf) / 2, cap(buf) / 2}\n\treturn *(*[]uint16)(unsafe.Pointer(&sl))\n}\n\n// utf16ToBuf function reinterprets []uint16 as []byte\nfunc utf16ToBuf(buf []uint16) []byte {\n\tsl := struct {\n\t\taddr *byte\n\t\tlen  int\n\t\tcap  int\n\t}{(*byte)(unsafe.Pointer(&buf[0])), len(buf) * 2, cap(buf) * 2}\n\treturn *(*[]byte)(unsafe.Pointer(&sl))\n}\n\nfunc wcslen(str []uint16) int {\n\tfor i := 0; i < len(str); i++ {\n\t\tif str[i] == 0 {\n\t\t\treturn i\n\t\t}\n\t}\n\treturn len(str)\n}\n\n// DeviceRegistryProperty method retrieves a specified Plug and Play device property.\nfunc (deviceInfoSet DevInfo) DeviceRegistryProperty(deviceInfoData *DevInfoData, property SPDRP) (interface{}, error) {\n\treturn SetupDiGetDeviceRegistryProperty(deviceInfoSet, deviceInfoData, property)\n}\n\n//sys\tsetupDiSetDeviceRegistryProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, property SPDRP, propertyBuffer *byte, propertyBufferSize uint32) (err error) = setupapi.SetupDiSetDeviceRegistryPropertyW\n\n// SetupDiSetDeviceRegistryProperty function sets a Plug and Play device property for a device.\nfunc SetupDiSetDeviceRegistryProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, property SPDRP, propertyBuffers []byte) error {\n\treturn setupDiSetDeviceRegistryProperty(deviceInfoSet, deviceInfoData, property, &propertyBuffers[0], uint32(len(propertyBuffers)))\n}\n\n// SetDeviceRegistryProperty function sets a Plug and Play device property for a device.\nfunc (deviceInfoSet DevInfo) SetDeviceRegistryProperty(deviceInfoData *DevInfoData, property SPDRP, propertyBuffers []byte) error {\n\treturn SetupDiSetDeviceRegistryProperty(deviceInfoSet, deviceInfoData, property, propertyBuffers)\n}\n\n// SetDeviceRegistryPropertyString method sets a Plug and Play device property string for a device.\nfunc (deviceInfoSet DevInfo) SetDeviceRegistryPropertyString(deviceInfoData *DevInfoData, property SPDRP, str string) error {\n\tstr16, err := UTF16FromString(str)\n\tif err != nil {\n\t\treturn err\n\t}\n\terr = SetupDiSetDeviceRegistryProperty(deviceInfoSet, deviceInfoData, property, utf16ToBuf(append(str16, 0)))\n\truntime.KeepAlive(str16)\n\treturn err\n}\n\n//sys\tsetupDiGetDeviceInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, deviceInstallParams *DevInstallParams) (err error) = setupapi.SetupDiGetDeviceInstallParamsW\n\n// SetupDiGetDeviceInstallParams function retrieves device installation parameters for a device information set or a particular device information element.\nfunc SetupDiGetDeviceInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (*DevInstallParams, error) {\n\tparams := &DevInstallParams{}\n\tparams.size = uint32(unsafe.Sizeof(*params))\n\n\treturn params, setupDiGetDeviceInstallParams(deviceInfoSet, deviceInfoData, params)\n}\n\n// DeviceInstallParams method retrieves device installation parameters for a device information set or a particular device information element.\nfunc (deviceInfoSet DevInfo) DeviceInstallParams(deviceInfoData *DevInfoData) (*DevInstallParams, error) {\n\treturn SetupDiGetDeviceInstallParams(deviceInfoSet, deviceInfoData)\n}\n\n//sys\tsetupDiGetDeviceInstanceId(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, instanceId *uint16, instanceIdSize uint32, instanceIdRequiredSize *uint32) (err error) = setupapi.SetupDiGetDeviceInstanceIdW\n\n// SetupDiGetDeviceInstanceId function retrieves the instance ID of the device.\nfunc SetupDiGetDeviceInstanceId(deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (string, error) {\n\treqSize := uint32(1024)\n\tfor {\n\t\tbuf := make([]uint16, reqSize)\n\t\terr := setupDiGetDeviceInstanceId(deviceInfoSet, deviceInfoData, &buf[0], uint32(len(buf)), &reqSize)\n\t\tif err == ERROR_INSUFFICIENT_BUFFER {\n\t\t\tcontinue\n\t\t}\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t\treturn UTF16ToString(buf), nil\n\t}\n}\n\n// DeviceInstanceID method retrieves the instance ID of the device.\nfunc (deviceInfoSet DevInfo) DeviceInstanceID(deviceInfoData *DevInfoData) (string, error) {\n\treturn SetupDiGetDeviceInstanceId(deviceInfoSet, deviceInfoData)\n}\n\n// SetupDiGetClassInstallParams function retrieves class installation parameters for a device information set or a particular device information element.\n//sys\tSetupDiGetClassInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, classInstallParams *ClassInstallHeader, classInstallParamsSize uint32, requiredSize *uint32) (err error) = setupapi.SetupDiGetClassInstallParamsW\n\n// ClassInstallParams method retrieves class installation parameters for a device information set or a particular device information element.\nfunc (deviceInfoSet DevInfo) ClassInstallParams(deviceInfoData *DevInfoData, classInstallParams *ClassInstallHeader, classInstallParamsSize uint32, requiredSize *uint32) error {\n\treturn SetupDiGetClassInstallParams(deviceInfoSet, deviceInfoData, classInstallParams, classInstallParamsSize, requiredSize)\n}\n\n//sys\tSetupDiSetDeviceInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, deviceInstallParams *DevInstallParams) (err error) = setupapi.SetupDiSetDeviceInstallParamsW\n\n// SetDeviceInstallParams member sets device installation parameters for a device information set or a particular device information element.\nfunc (deviceInfoSet DevInfo) SetDeviceInstallParams(deviceInfoData *DevInfoData, deviceInstallParams *DevInstallParams) error {\n\treturn SetupDiSetDeviceInstallParams(deviceInfoSet, deviceInfoData, deviceInstallParams)\n}\n\n// SetupDiSetClassInstallParams function sets or clears class install parameters for a device information set or a particular device information element.\n//sys\tSetupDiSetClassInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, classInstallParams *ClassInstallHeader, classInstallParamsSize uint32) (err error) = setupapi.SetupDiSetClassInstallParamsW\n\n// SetClassInstallParams method sets or clears class install parameters for a device information set or a particular device information element.\nfunc (deviceInfoSet DevInfo) SetClassInstallParams(deviceInfoData *DevInfoData, classInstallParams *ClassInstallHeader, classInstallParamsSize uint32) error {\n\treturn SetupDiSetClassInstallParams(deviceInfoSet, deviceInfoData, classInstallParams, classInstallParamsSize)\n}\n\n//sys\tsetupDiClassNameFromGuidEx(classGUID *GUID, className *uint16, classNameSize uint32, requiredSize *uint32, machineName *uint16, reserved uintptr) (err error) = setupapi.SetupDiClassNameFromGuidExW\n\n// SetupDiClassNameFromGuidEx function retrieves the class name associated with a class GUID. The class can be installed on a local or remote computer.\nfunc SetupDiClassNameFromGuidEx(classGUID *GUID, machineName string) (className string, err error) {\n\tvar classNameUTF16 [MAX_CLASS_NAME_LEN]uint16\n\n\tvar machineNameUTF16 *uint16\n\tif machineName != \"\" {\n\t\tmachineNameUTF16, err = UTF16PtrFromString(machineName)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\n\terr = setupDiClassNameFromGuidEx(classGUID, &classNameUTF16[0], MAX_CLASS_NAME_LEN, nil, machineNameUTF16, 0)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tclassName = UTF16ToString(classNameUTF16[:])\n\treturn\n}\n\n//sys\tsetupDiClassGuidsFromNameEx(className *uint16, classGuidList *GUID, classGuidListSize uint32, requiredSize *uint32, machineName *uint16, reserved uintptr) (err error) = setupapi.SetupDiClassGuidsFromNameExW\n\n// SetupDiClassGuidsFromNameEx function retrieves the GUIDs associated with the specified class name. This resulting list contains the classes currently installed on a local or remote computer.\nfunc SetupDiClassGuidsFromNameEx(className string, machineName string) ([]GUID, error) {\n\tclassNameUTF16, err := UTF16PtrFromString(className)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar machineNameUTF16 *uint16\n\tif machineName != \"\" {\n\t\tmachineNameUTF16, err = UTF16PtrFromString(machineName)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\treqSize := uint32(4)\n\tfor {\n\t\tbuf := make([]GUID, reqSize)\n\t\terr = setupDiClassGuidsFromNameEx(classNameUTF16, &buf[0], uint32(len(buf)), &reqSize, machineNameUTF16, 0)\n\t\tif err == ERROR_INSUFFICIENT_BUFFER {\n\t\t\tcontinue\n\t\t}\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn buf[:reqSize], nil\n\t}\n}\n\n//sys\tsetupDiGetSelectedDevice(deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (err error) = setupapi.SetupDiGetSelectedDevice\n\n// SetupDiGetSelectedDevice function retrieves the selected device information element in a device information set.\nfunc SetupDiGetSelectedDevice(deviceInfoSet DevInfo) (*DevInfoData, error) {\n\tdata := &DevInfoData{}\n\tdata.size = uint32(unsafe.Sizeof(*data))\n\n\treturn data, setupDiGetSelectedDevice(deviceInfoSet, data)\n}\n\n// SelectedDevice method retrieves the selected device information element in a device information set.\nfunc (deviceInfoSet DevInfo) SelectedDevice() (*DevInfoData, error) {\n\treturn SetupDiGetSelectedDevice(deviceInfoSet)\n}\n\n// SetupDiSetSelectedDevice function sets a device information element as the selected member of a device information set. This function is typically used by an installation wizard.\n//sys\tSetupDiSetSelectedDevice(deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (err error) = setupapi.SetupDiSetSelectedDevice\n\n// SetSelectedDevice method sets a device information element as the selected member of a device information set. This function is typically used by an installation wizard.\nfunc (deviceInfoSet DevInfo) SetSelectedDevice(deviceInfoData *DevInfoData) error {\n\treturn SetupDiSetSelectedDevice(deviceInfoSet, deviceInfoData)\n}\n\n//sys\tsetupUninstallOEMInf(infFileName *uint16, flags SUOI, reserved uintptr) (err error) = setupapi.SetupUninstallOEMInfW\n\n// SetupUninstallOEMInf uninstalls the specified driver.\nfunc SetupUninstallOEMInf(infFileName string, flags SUOI) error {\n\tinfFileName16, err := UTF16PtrFromString(infFileName)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn setupUninstallOEMInf(infFileName16, flags, 0)\n}\n\n//sys cm_MapCrToWin32Err(configRet CONFIGRET, defaultWin32Error Errno) (ret Errno) = CfgMgr32.CM_MapCrToWin32Err\n\n//sys cm_Get_Device_Interface_List_Size(len *uint32, interfaceClass *GUID, deviceID *uint16, flags uint32) (ret CONFIGRET) = CfgMgr32.CM_Get_Device_Interface_List_SizeW\n//sys cm_Get_Device_Interface_List(interfaceClass *GUID, deviceID *uint16, buffer *uint16, bufferLen uint32, flags uint32) (ret CONFIGRET) = CfgMgr32.CM_Get_Device_Interface_ListW\n\nfunc CM_Get_Device_Interface_List(deviceID string, interfaceClass *GUID, flags uint32) ([]string, error) {\n\tdeviceID16, err := UTF16PtrFromString(deviceID)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tvar buf []uint16\n\tvar buflen uint32\n\tfor {\n\t\tif ret := cm_Get_Device_Interface_List_Size(&buflen, interfaceClass, deviceID16, flags); ret != CR_SUCCESS {\n\t\t\treturn nil, ret\n\t\t}\n\t\tbuf = make([]uint16, buflen)\n\t\tif ret := cm_Get_Device_Interface_List(interfaceClass, deviceID16, &buf[0], buflen, flags); ret == CR_SUCCESS {\n\t\t\tbreak\n\t\t} else if ret != CR_BUFFER_SMALL {\n\t\t\treturn nil, ret\n\t\t}\n\t}\n\tvar interfaces []string\n\tfor i := 0; i < len(buf); {\n\t\tj := i + wcslen(buf[i:])\n\t\tif i < j {\n\t\t\tinterfaces = append(interfaces, UTF16ToString(buf[i:j]))\n\t\t}\n\t\ti = j + 1\n\t}\n\tif interfaces == nil {\n\t\treturn nil, ERROR_NO_SUCH_DEVICE_INTERFACE\n\t}\n\treturn interfaces, nil\n}\n\n//sys cm_Get_DevNode_Status(status *uint32, problemNumber *uint32, devInst DEVINST, flags uint32) (ret CONFIGRET) = CfgMgr32.CM_Get_DevNode_Status\n\nfunc CM_Get_DevNode_Status(status *uint32, problemNumber *uint32, devInst DEVINST, flags uint32) error {\n\tret := cm_Get_DevNode_Status(status, problemNumber, devInst, flags)\n\tif ret == CR_SUCCESS {\n\t\treturn nil\n\t}\n\treturn ret\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/windows/str.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build windows\n\npackage windows\n\nfunc itoa(val int) string { // do it here rather than with fmt to avoid dependency\n\tif val < 0 {\n\t\treturn \"-\" + itoa(-val)\n\t}\n\tvar buf [32]byte // big enough for int64\n\ti := len(buf) - 1\n\tfor val >= 10 {\n\t\tbuf[i] = byte(val%10 + '0')\n\t\ti--\n\t\tval /= 10\n\t}\n\tbuf[i] = byte(val + '0')\n\treturn string(buf[i:])\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/windows/syscall.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build windows\n\n// Package windows contains an interface to the low-level operating system\n// primitives. OS details vary depending on the underlying system, and\n// by default, godoc will display the OS-specific documentation for the current\n// system. If you want godoc to display syscall documentation for another\n// system, set $GOOS and $GOARCH to the desired system. For example, if\n// you want to view documentation for freebsd/arm on linux/amd64, set $GOOS\n// to freebsd and $GOARCH to arm.\n//\n// The primary use of this package is inside other packages that provide a more\n// portable interface to the system, such as \"os\", \"time\" and \"net\".  Use\n// those packages rather than this one if you can.\n//\n// For details of the functions and data types in this package consult\n// the manuals for the appropriate operating system.\n//\n// These calls return err == nil to indicate success; otherwise\n// err represents an operating system error describing the failure and\n// holds a value of type syscall.Errno.\npackage windows // import \"golang.org/x/sys/windows\"\n\nimport (\n\t\"bytes\"\n\t\"strings\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// ByteSliceFromString returns a NUL-terminated slice of bytes\n// containing the text of s. If s contains a NUL byte at any\n// location, it returns (nil, syscall.EINVAL).\nfunc ByteSliceFromString(s string) ([]byte, error) {\n\tif strings.IndexByte(s, 0) != -1 {\n\t\treturn nil, syscall.EINVAL\n\t}\n\ta := make([]byte, len(s)+1)\n\tcopy(a, s)\n\treturn a, nil\n}\n\n// BytePtrFromString returns a pointer to a NUL-terminated array of\n// bytes containing the text of s. If s contains a NUL byte at any\n// location, it returns (nil, syscall.EINVAL).\nfunc BytePtrFromString(s string) (*byte, error) {\n\ta, err := ByteSliceFromString(s)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &a[0], nil\n}\n\n// ByteSliceToString returns a string form of the text represented by the slice s, with a terminating NUL and any\n// bytes after the NUL removed.\nfunc ByteSliceToString(s []byte) string {\n\tif i := bytes.IndexByte(s, 0); i != -1 {\n\t\ts = s[:i]\n\t}\n\treturn string(s)\n}\n\n// BytePtrToString takes a pointer to a sequence of text and returns the corresponding string.\n// If the pointer is nil, it returns the empty string. It assumes that the text sequence is terminated\n// at a zero byte; if the zero byte is not present, the program may crash.\nfunc BytePtrToString(p *byte) string {\n\tif p == nil {\n\t\treturn \"\"\n\t}\n\tif *p == 0 {\n\t\treturn \"\"\n\t}\n\n\t// Find NUL terminator.\n\tn := 0\n\tfor ptr := unsafe.Pointer(p); *(*byte)(ptr) != 0; n++ {\n\t\tptr = unsafe.Pointer(uintptr(ptr) + 1)\n\t}\n\n\treturn string(unsafe.Slice(p, n))\n}\n\n// Single-word zero for use when we need a valid pointer to 0 bytes.\n// See mksyscall.pl.\nvar _zero uintptr\n\nfunc (ts *Timespec) Unix() (sec int64, nsec int64) {\n\treturn int64(ts.Sec), int64(ts.Nsec)\n}\n\nfunc (tv *Timeval) Unix() (sec int64, nsec int64) {\n\treturn int64(tv.Sec), int64(tv.Usec) * 1000\n}\n\nfunc (ts *Timespec) Nano() int64 {\n\treturn int64(ts.Sec)*1e9 + int64(ts.Nsec)\n}\n\nfunc (tv *Timeval) Nano() int64 {\n\treturn int64(tv.Sec)*1e9 + int64(tv.Usec)*1000\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/windows/syscall_windows.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Windows system calls.\n\npackage windows\n\nimport (\n\terrorspkg \"errors\"\n\t\"fmt\"\n\t\"runtime\"\n\t\"sync\"\n\t\"syscall\"\n\t\"time\"\n\t\"unicode/utf16\"\n\t\"unsafe\"\n)\n\ntype (\n\tHandle uintptr\n\tHWND   uintptr\n)\n\nconst (\n\tInvalidHandle = ^Handle(0)\n\tInvalidHWND   = ^HWND(0)\n\n\t// Flags for DefineDosDevice.\n\tDDD_EXACT_MATCH_ON_REMOVE = 0x00000004\n\tDDD_NO_BROADCAST_SYSTEM   = 0x00000008\n\tDDD_RAW_TARGET_PATH       = 0x00000001\n\tDDD_REMOVE_DEFINITION     = 0x00000002\n\n\t// Return values for GetDriveType.\n\tDRIVE_UNKNOWN     = 0\n\tDRIVE_NO_ROOT_DIR = 1\n\tDRIVE_REMOVABLE   = 2\n\tDRIVE_FIXED       = 3\n\tDRIVE_REMOTE      = 4\n\tDRIVE_CDROM       = 5\n\tDRIVE_RAMDISK     = 6\n\n\t// File system flags from GetVolumeInformation and GetVolumeInformationByHandle.\n\tFILE_CASE_SENSITIVE_SEARCH        = 0x00000001\n\tFILE_CASE_PRESERVED_NAMES         = 0x00000002\n\tFILE_FILE_COMPRESSION             = 0x00000010\n\tFILE_DAX_VOLUME                   = 0x20000000\n\tFILE_NAMED_STREAMS                = 0x00040000\n\tFILE_PERSISTENT_ACLS              = 0x00000008\n\tFILE_READ_ONLY_VOLUME             = 0x00080000\n\tFILE_SEQUENTIAL_WRITE_ONCE        = 0x00100000\n\tFILE_SUPPORTS_ENCRYPTION          = 0x00020000\n\tFILE_SUPPORTS_EXTENDED_ATTRIBUTES = 0x00800000\n\tFILE_SUPPORTS_HARD_LINKS          = 0x00400000\n\tFILE_SUPPORTS_OBJECT_IDS          = 0x00010000\n\tFILE_SUPPORTS_OPEN_BY_FILE_ID     = 0x01000000\n\tFILE_SUPPORTS_REPARSE_POINTS      = 0x00000080\n\tFILE_SUPPORTS_SPARSE_FILES        = 0x00000040\n\tFILE_SUPPORTS_TRANSACTIONS        = 0x00200000\n\tFILE_SUPPORTS_USN_JOURNAL         = 0x02000000\n\tFILE_UNICODE_ON_DISK              = 0x00000004\n\tFILE_VOLUME_IS_COMPRESSED         = 0x00008000\n\tFILE_VOLUME_QUOTAS                = 0x00000020\n\n\t// Flags for LockFileEx.\n\tLOCKFILE_FAIL_IMMEDIATELY = 0x00000001\n\tLOCKFILE_EXCLUSIVE_LOCK   = 0x00000002\n\n\t// Return value of SleepEx and other APC functions\n\tWAIT_IO_COMPLETION = 0x000000C0\n)\n\n// StringToUTF16 is deprecated. Use UTF16FromString instead.\n// If s contains a NUL byte this function panics instead of\n// returning an error.\nfunc StringToUTF16(s string) []uint16 {\n\ta, err := UTF16FromString(s)\n\tif err != nil {\n\t\tpanic(\"windows: string with NUL passed to StringToUTF16\")\n\t}\n\treturn a\n}\n\n// UTF16FromString returns the UTF-16 encoding of the UTF-8 string\n// s, with a terminating NUL added. If s contains a NUL byte at any\n// location, it returns (nil, syscall.EINVAL).\nfunc UTF16FromString(s string) ([]uint16, error) {\n\treturn syscall.UTF16FromString(s)\n}\n\n// UTF16ToString returns the UTF-8 encoding of the UTF-16 sequence s,\n// with a terminating NUL and any bytes after the NUL removed.\nfunc UTF16ToString(s []uint16) string {\n\treturn syscall.UTF16ToString(s)\n}\n\n// StringToUTF16Ptr is deprecated. Use UTF16PtrFromString instead.\n// If s contains a NUL byte this function panics instead of\n// returning an error.\nfunc StringToUTF16Ptr(s string) *uint16 { return &StringToUTF16(s)[0] }\n\n// UTF16PtrFromString returns pointer to the UTF-16 encoding of\n// the UTF-8 string s, with a terminating NUL added. If s\n// contains a NUL byte at any location, it returns (nil, syscall.EINVAL).\nfunc UTF16PtrFromString(s string) (*uint16, error) {\n\ta, err := UTF16FromString(s)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &a[0], nil\n}\n\n// UTF16PtrToString takes a pointer to a UTF-16 sequence and returns the corresponding UTF-8 encoded string.\n// If the pointer is nil, it returns the empty string. It assumes that the UTF-16 sequence is terminated\n// at a zero word; if the zero word is not present, the program may crash.\nfunc UTF16PtrToString(p *uint16) string {\n\tif p == nil {\n\t\treturn \"\"\n\t}\n\tif *p == 0 {\n\t\treturn \"\"\n\t}\n\n\t// Find NUL terminator.\n\tn := 0\n\tfor ptr := unsafe.Pointer(p); *(*uint16)(ptr) != 0; n++ {\n\t\tptr = unsafe.Pointer(uintptr(ptr) + unsafe.Sizeof(*p))\n\t}\n\treturn UTF16ToString(unsafe.Slice(p, n))\n}\n\nfunc Getpagesize() int { return 4096 }\n\n// NewCallback converts a Go function to a function pointer conforming to the stdcall calling convention.\n// This is useful when interoperating with Windows code requiring callbacks.\n// The argument is expected to be a function with one uintptr-sized result. The function must not have arguments with size larger than the size of uintptr.\nfunc NewCallback(fn interface{}) uintptr {\n\treturn syscall.NewCallback(fn)\n}\n\n// NewCallbackCDecl converts a Go function to a function pointer conforming to the cdecl calling convention.\n// This is useful when interoperating with Windows code requiring callbacks.\n// The argument is expected to be a function with one uintptr-sized result. The function must not have arguments with size larger than the size of uintptr.\nfunc NewCallbackCDecl(fn interface{}) uintptr {\n\treturn syscall.NewCallbackCDecl(fn)\n}\n\n// windows api calls\n\n//sys\tGetLastError() (lasterr error)\n//sys\tLoadLibrary(libname string) (handle Handle, err error) = LoadLibraryW\n//sys\tLoadLibraryEx(libname string, zero Handle, flags uintptr) (handle Handle, err error) = LoadLibraryExW\n//sys\tFreeLibrary(handle Handle) (err error)\n//sys\tGetProcAddress(module Handle, procname string) (proc uintptr, err error)\n//sys\tGetModuleFileName(module Handle, filename *uint16, size uint32) (n uint32, err error) = kernel32.GetModuleFileNameW\n//sys\tGetModuleHandleEx(flags uint32, moduleName *uint16, module *Handle) (err error) = kernel32.GetModuleHandleExW\n//sys\tSetDefaultDllDirectories(directoryFlags uint32) (err error)\n//sys\tAddDllDirectory(path *uint16) (cookie uintptr, err error) = kernel32.AddDllDirectory\n//sys\tRemoveDllDirectory(cookie uintptr) (err error) = kernel32.RemoveDllDirectory\n//sys\tSetDllDirectory(path string) (err error) = kernel32.SetDllDirectoryW\n//sys\tGetVersion() (ver uint32, err error)\n//sys\tFormatMessage(flags uint32, msgsrc uintptr, msgid uint32, langid uint32, buf []uint16, args *byte) (n uint32, err error) = FormatMessageW\n//sys\tExitProcess(exitcode uint32)\n//sys\tIsWow64Process(handle Handle, isWow64 *bool) (err error) = IsWow64Process\n//sys\tIsWow64Process2(handle Handle, processMachine *uint16, nativeMachine *uint16) (err error) = IsWow64Process2?\n//sys\tCreateFile(name *uint16, access uint32, mode uint32, sa *SecurityAttributes, createmode uint32, attrs uint32, templatefile Handle) (handle Handle, err error) [failretval==InvalidHandle] = CreateFileW\n//sys\tCreateNamedPipe(name *uint16, flags uint32, pipeMode uint32, maxInstances uint32, outSize uint32, inSize uint32, defaultTimeout uint32, sa *SecurityAttributes) (handle Handle, err error)  [failretval==InvalidHandle] = CreateNamedPipeW\n//sys\tConnectNamedPipe(pipe Handle, overlapped *Overlapped) (err error)\n//sys\tDisconnectNamedPipe(pipe Handle) (err error)\n//sys   GetNamedPipeClientProcessId(pipe Handle, clientProcessID *uint32) (err error)\n//sys   GetNamedPipeServerProcessId(pipe Handle, serverProcessID *uint32) (err error)\n//sys\tGetNamedPipeInfo(pipe Handle, flags *uint32, outSize *uint32, inSize *uint32, maxInstances *uint32) (err error)\n//sys\tGetNamedPipeHandleState(pipe Handle, state *uint32, curInstances *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32, userName *uint16, maxUserNameSize uint32) (err error) = GetNamedPipeHandleStateW\n//sys\tSetNamedPipeHandleState(pipe Handle, state *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32) (err error) = SetNamedPipeHandleState\n//sys\treadFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) = ReadFile\n//sys\twriteFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) = WriteFile\n//sys\tGetOverlappedResult(handle Handle, overlapped *Overlapped, done *uint32, wait bool) (err error)\n//sys\tSetFilePointer(handle Handle, lowoffset int32, highoffsetptr *int32, whence uint32) (newlowoffset uint32, err error) [failretval==0xffffffff]\n//sys\tCloseHandle(handle Handle) (err error)\n//sys\tGetStdHandle(stdhandle uint32) (handle Handle, err error) [failretval==InvalidHandle]\n//sys\tSetStdHandle(stdhandle uint32, handle Handle) (err error)\n//sys\tfindFirstFile1(name *uint16, data *win32finddata1) (handle Handle, err error) [failretval==InvalidHandle] = FindFirstFileW\n//sys\tfindNextFile1(handle Handle, data *win32finddata1) (err error) = FindNextFileW\n//sys\tFindClose(handle Handle) (err error)\n//sys\tGetFileInformationByHandle(handle Handle, data *ByHandleFileInformation) (err error)\n//sys\tGetFileInformationByHandleEx(handle Handle, class uint32, outBuffer *byte, outBufferLen uint32) (err error)\n//sys\tSetFileInformationByHandle(handle Handle, class uint32, inBuffer *byte, inBufferLen uint32) (err error)\n//sys\tGetCurrentDirectory(buflen uint32, buf *uint16) (n uint32, err error) = GetCurrentDirectoryW\n//sys\tSetCurrentDirectory(path *uint16) (err error) = SetCurrentDirectoryW\n//sys\tCreateDirectory(path *uint16, sa *SecurityAttributes) (err error) = CreateDirectoryW\n//sys\tRemoveDirectory(path *uint16) (err error) = RemoveDirectoryW\n//sys\tDeleteFile(path *uint16) (err error) = DeleteFileW\n//sys\tMoveFile(from *uint16, to *uint16) (err error) = MoveFileW\n//sys\tMoveFileEx(from *uint16, to *uint16, flags uint32) (err error) = MoveFileExW\n//sys\tLockFileEx(file Handle, flags uint32, reserved uint32, bytesLow uint32, bytesHigh uint32, overlapped *Overlapped) (err error)\n//sys\tUnlockFileEx(file Handle, reserved uint32, bytesLow uint32, bytesHigh uint32, overlapped *Overlapped) (err error)\n//sys\tGetComputerName(buf *uint16, n *uint32) (err error) = GetComputerNameW\n//sys\tGetComputerNameEx(nametype uint32, buf *uint16, n *uint32) (err error) = GetComputerNameExW\n//sys\tSetEndOfFile(handle Handle) (err error)\n//sys\tSetFileValidData(handle Handle, validDataLength int64) (err error)\n//sys\tGetSystemTimeAsFileTime(time *Filetime)\n//sys\tGetSystemTimePreciseAsFileTime(time *Filetime)\n//sys\tGetTimeZoneInformation(tzi *Timezoneinformation) (rc uint32, err error) [failretval==0xffffffff]\n//sys\tCreateIoCompletionPort(filehandle Handle, cphandle Handle, key uintptr, threadcnt uint32) (handle Handle, err error)\n//sys\tGetQueuedCompletionStatus(cphandle Handle, qty *uint32, key *uintptr, overlapped **Overlapped, timeout uint32) (err error)\n//sys\tPostQueuedCompletionStatus(cphandle Handle, qty uint32, key uintptr, overlapped *Overlapped) (err error)\n//sys\tCancelIo(s Handle) (err error)\n//sys\tCancelIoEx(s Handle, o *Overlapped) (err error)\n//sys\tCreateProcess(appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) = CreateProcessW\n//sys\tCreateProcessAsUser(token Token, appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) = advapi32.CreateProcessAsUserW\n//sys   initializeProcThreadAttributeList(attrlist *ProcThreadAttributeList, attrcount uint32, flags uint32, size *uintptr) (err error) = InitializeProcThreadAttributeList\n//sys   deleteProcThreadAttributeList(attrlist *ProcThreadAttributeList) = DeleteProcThreadAttributeList\n//sys   updateProcThreadAttribute(attrlist *ProcThreadAttributeList, flags uint32, attr uintptr, value unsafe.Pointer, size uintptr, prevvalue unsafe.Pointer, returnedsize *uintptr) (err error) = UpdateProcThreadAttribute\n//sys\tOpenProcess(desiredAccess uint32, inheritHandle bool, processId uint32) (handle Handle, err error)\n//sys\tShellExecute(hwnd Handle, verb *uint16, file *uint16, args *uint16, cwd *uint16, showCmd int32) (err error) [failretval<=32] = shell32.ShellExecuteW\n//sys\tGetWindowThreadProcessId(hwnd HWND, pid *uint32) (tid uint32, err error) = user32.GetWindowThreadProcessId\n//sys\tLoadKeyboardLayout(name *uint16, flags uint32) (hkl Handle, err error) [failretval==0] = user32.LoadKeyboardLayoutW\n//sys\tUnloadKeyboardLayout(hkl Handle) (err error) = user32.UnloadKeyboardLayout\n//sys\tGetKeyboardLayout(tid uint32) (hkl Handle) = user32.GetKeyboardLayout\n//sys\tToUnicodeEx(vkey uint32, scancode uint32, keystate *byte, pwszBuff *uint16, cchBuff int32, flags uint32, hkl Handle) (ret int32) = user32.ToUnicodeEx\n//sys\tGetShellWindow() (shellWindow HWND) = user32.GetShellWindow\n//sys\tMessageBox(hwnd HWND, text *uint16, caption *uint16, boxtype uint32) (ret int32, err error) [failretval==0] = user32.MessageBoxW\n//sys\tExitWindowsEx(flags uint32, reason uint32) (err error) = user32.ExitWindowsEx\n//sys\tshGetKnownFolderPath(id *KNOWNFOLDERID, flags uint32, token Token, path **uint16) (ret error) = shell32.SHGetKnownFolderPath\n//sys\tTerminateProcess(handle Handle, exitcode uint32) (err error)\n//sys\tGetExitCodeProcess(handle Handle, exitcode *uint32) (err error)\n//sys\tgetStartupInfo(startupInfo *StartupInfo) = GetStartupInfoW\n//sys\tGetProcessTimes(handle Handle, creationTime *Filetime, exitTime *Filetime, kernelTime *Filetime, userTime *Filetime) (err error)\n//sys\tDuplicateHandle(hSourceProcessHandle Handle, hSourceHandle Handle, hTargetProcessHandle Handle, lpTargetHandle *Handle, dwDesiredAccess uint32, bInheritHandle bool, dwOptions uint32) (err error)\n//sys\tWaitForSingleObject(handle Handle, waitMilliseconds uint32) (event uint32, err error) [failretval==0xffffffff]\n//sys\twaitForMultipleObjects(count uint32, handles uintptr, waitAll bool, waitMilliseconds uint32) (event uint32, err error) [failretval==0xffffffff] = WaitForMultipleObjects\n//sys\tGetTempPath(buflen uint32, buf *uint16) (n uint32, err error) = GetTempPathW\n//sys\tCreatePipe(readhandle *Handle, writehandle *Handle, sa *SecurityAttributes, size uint32) (err error)\n//sys\tGetFileType(filehandle Handle) (n uint32, err error)\n//sys\tCryptAcquireContext(provhandle *Handle, container *uint16, provider *uint16, provtype uint32, flags uint32) (err error) = advapi32.CryptAcquireContextW\n//sys\tCryptReleaseContext(provhandle Handle, flags uint32) (err error) = advapi32.CryptReleaseContext\n//sys\tCryptGenRandom(provhandle Handle, buflen uint32, buf *byte) (err error) = advapi32.CryptGenRandom\n//sys\tGetEnvironmentStrings() (envs *uint16, err error) [failretval==nil] = kernel32.GetEnvironmentStringsW\n//sys\tFreeEnvironmentStrings(envs *uint16) (err error) = kernel32.FreeEnvironmentStringsW\n//sys\tGetEnvironmentVariable(name *uint16, buffer *uint16, size uint32) (n uint32, err error) = kernel32.GetEnvironmentVariableW\n//sys\tSetEnvironmentVariable(name *uint16, value *uint16) (err error) = kernel32.SetEnvironmentVariableW\n//sys\tExpandEnvironmentStrings(src *uint16, dst *uint16, size uint32) (n uint32, err error) = kernel32.ExpandEnvironmentStringsW\n//sys\tCreateEnvironmentBlock(block **uint16, token Token, inheritExisting bool) (err error) = userenv.CreateEnvironmentBlock\n//sys\tDestroyEnvironmentBlock(block *uint16) (err error) = userenv.DestroyEnvironmentBlock\n//sys\tgetTickCount64() (ms uint64) = kernel32.GetTickCount64\n//sys   GetFileTime(handle Handle, ctime *Filetime, atime *Filetime, wtime *Filetime) (err error)\n//sys\tSetFileTime(handle Handle, ctime *Filetime, atime *Filetime, wtime *Filetime) (err error)\n//sys\tGetFileAttributes(name *uint16) (attrs uint32, err error) [failretval==INVALID_FILE_ATTRIBUTES] = kernel32.GetFileAttributesW\n//sys\tSetFileAttributes(name *uint16, attrs uint32) (err error) = kernel32.SetFileAttributesW\n//sys\tGetFileAttributesEx(name *uint16, level uint32, info *byte) (err error) = kernel32.GetFileAttributesExW\n//sys\tGetCommandLine() (cmd *uint16) = kernel32.GetCommandLineW\n//sys\tcommandLineToArgv(cmd *uint16, argc *int32) (argv **uint16, err error) [failretval==nil] = shell32.CommandLineToArgvW\n//sys\tLocalFree(hmem Handle) (handle Handle, err error) [failretval!=0]\n//sys\tLocalAlloc(flags uint32, length uint32) (ptr uintptr, err error)\n//sys\tSetHandleInformation(handle Handle, mask uint32, flags uint32) (err error)\n//sys\tFlushFileBuffers(handle Handle) (err error)\n//sys\tGetFullPathName(path *uint16, buflen uint32, buf *uint16, fname **uint16) (n uint32, err error) = kernel32.GetFullPathNameW\n//sys\tGetLongPathName(path *uint16, buf *uint16, buflen uint32) (n uint32, err error) = kernel32.GetLongPathNameW\n//sys\tGetShortPathName(longpath *uint16, shortpath *uint16, buflen uint32) (n uint32, err error) = kernel32.GetShortPathNameW\n//sys\tGetFinalPathNameByHandle(file Handle, filePath *uint16, filePathSize uint32, flags uint32) (n uint32, err error) = kernel32.GetFinalPathNameByHandleW\n//sys\tCreateFileMapping(fhandle Handle, sa *SecurityAttributes, prot uint32, maxSizeHigh uint32, maxSizeLow uint32, name *uint16) (handle Handle, err error) [failretval == 0 || e1 == ERROR_ALREADY_EXISTS] = kernel32.CreateFileMappingW\n//sys\tMapViewOfFile(handle Handle, access uint32, offsetHigh uint32, offsetLow uint32, length uintptr) (addr uintptr, err error)\n//sys\tUnmapViewOfFile(addr uintptr) (err error)\n//sys\tFlushViewOfFile(addr uintptr, length uintptr) (err error)\n//sys\tVirtualLock(addr uintptr, length uintptr) (err error)\n//sys\tVirtualUnlock(addr uintptr, length uintptr) (err error)\n//sys\tVirtualAlloc(address uintptr, size uintptr, alloctype uint32, protect uint32) (value uintptr, err error) = kernel32.VirtualAlloc\n//sys\tVirtualFree(address uintptr, size uintptr, freetype uint32) (err error) = kernel32.VirtualFree\n//sys\tVirtualProtect(address uintptr, size uintptr, newprotect uint32, oldprotect *uint32) (err error) = kernel32.VirtualProtect\n//sys\tVirtualProtectEx(process Handle, address uintptr, size uintptr, newProtect uint32, oldProtect *uint32) (err error) = kernel32.VirtualProtectEx\n//sys\tVirtualQuery(address uintptr, buffer *MemoryBasicInformation, length uintptr) (err error) = kernel32.VirtualQuery\n//sys\tVirtualQueryEx(process Handle, address uintptr, buffer *MemoryBasicInformation, length uintptr) (err error) = kernel32.VirtualQueryEx\n//sys\tReadProcessMemory(process Handle, baseAddress uintptr, buffer *byte, size uintptr, numberOfBytesRead *uintptr) (err error) = kernel32.ReadProcessMemory\n//sys\tWriteProcessMemory(process Handle, baseAddress uintptr, buffer *byte, size uintptr, numberOfBytesWritten *uintptr) (err error) = kernel32.WriteProcessMemory\n//sys\tTransmitFile(s Handle, handle Handle, bytesToWrite uint32, bytsPerSend uint32, overlapped *Overlapped, transmitFileBuf *TransmitFileBuffers, flags uint32) (err error) = mswsock.TransmitFile\n//sys\tReadDirectoryChanges(handle Handle, buf *byte, buflen uint32, watchSubTree bool, mask uint32, retlen *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) = kernel32.ReadDirectoryChangesW\n//sys\tFindFirstChangeNotification(path string, watchSubtree bool, notifyFilter uint32) (handle Handle, err error) [failretval==InvalidHandle] = kernel32.FindFirstChangeNotificationW\n//sys\tFindNextChangeNotification(handle Handle) (err error)\n//sys\tFindCloseChangeNotification(handle Handle) (err error)\n//sys\tCertOpenSystemStore(hprov Handle, name *uint16) (store Handle, err error) = crypt32.CertOpenSystemStoreW\n//sys\tCertOpenStore(storeProvider uintptr, msgAndCertEncodingType uint32, cryptProv uintptr, flags uint32, para uintptr) (handle Handle, err error) = crypt32.CertOpenStore\n//sys\tCertEnumCertificatesInStore(store Handle, prevContext *CertContext) (context *CertContext, err error) [failretval==nil] = crypt32.CertEnumCertificatesInStore\n//sys\tCertAddCertificateContextToStore(store Handle, certContext *CertContext, addDisposition uint32, storeContext **CertContext) (err error) = crypt32.CertAddCertificateContextToStore\n//sys\tCertCloseStore(store Handle, flags uint32) (err error) = crypt32.CertCloseStore\n//sys\tCertDeleteCertificateFromStore(certContext *CertContext) (err error) = crypt32.CertDeleteCertificateFromStore\n//sys\tCertDuplicateCertificateContext(certContext *CertContext) (dupContext *CertContext) = crypt32.CertDuplicateCertificateContext\n//sys\tPFXImportCertStore(pfx *CryptDataBlob, password *uint16, flags uint32) (store Handle, err error) = crypt32.PFXImportCertStore\n//sys\tCertGetCertificateChain(engine Handle, leaf *CertContext, time *Filetime, additionalStore Handle, para *CertChainPara, flags uint32, reserved uintptr, chainCtx **CertChainContext) (err error) = crypt32.CertGetCertificateChain\n//sys\tCertFreeCertificateChain(ctx *CertChainContext) = crypt32.CertFreeCertificateChain\n//sys\tCertCreateCertificateContext(certEncodingType uint32, certEncoded *byte, encodedLen uint32) (context *CertContext, err error) [failretval==nil] = crypt32.CertCreateCertificateContext\n//sys\tCertFreeCertificateContext(ctx *CertContext) (err error) = crypt32.CertFreeCertificateContext\n//sys\tCertVerifyCertificateChainPolicy(policyOID uintptr, chain *CertChainContext, para *CertChainPolicyPara, status *CertChainPolicyStatus) (err error) = crypt32.CertVerifyCertificateChainPolicy\n//sys\tCertGetNameString(certContext *CertContext, nameType uint32, flags uint32, typePara unsafe.Pointer, name *uint16, size uint32) (chars uint32) = crypt32.CertGetNameStringW\n//sys\tCertFindExtension(objId *byte, countExtensions uint32, extensions *CertExtension) (ret *CertExtension) = crypt32.CertFindExtension\n//sys   CertFindCertificateInStore(store Handle, certEncodingType uint32, findFlags uint32, findType uint32, findPara unsafe.Pointer, prevCertContext *CertContext) (cert *CertContext, err error) [failretval==nil] = crypt32.CertFindCertificateInStore\n//sys   CertFindChainInStore(store Handle, certEncodingType uint32, findFlags uint32, findType uint32, findPara unsafe.Pointer, prevChainContext *CertChainContext) (certchain *CertChainContext, err error) [failretval==nil] = crypt32.CertFindChainInStore\n//sys   CryptAcquireCertificatePrivateKey(cert *CertContext, flags uint32, parameters unsafe.Pointer, cryptProvOrNCryptKey *Handle, keySpec *uint32, callerFreeProvOrNCryptKey *bool) (err error) = crypt32.CryptAcquireCertificatePrivateKey\n//sys\tCryptQueryObject(objectType uint32, object unsafe.Pointer, expectedContentTypeFlags uint32, expectedFormatTypeFlags uint32, flags uint32, msgAndCertEncodingType *uint32, contentType *uint32, formatType *uint32, certStore *Handle, msg *Handle, context *unsafe.Pointer) (err error) = crypt32.CryptQueryObject\n//sys\tCryptDecodeObject(encodingType uint32, structType *byte, encodedBytes *byte, lenEncodedBytes uint32, flags uint32, decoded unsafe.Pointer, decodedLen *uint32) (err error) = crypt32.CryptDecodeObject\n//sys\tCryptProtectData(dataIn *DataBlob, name *uint16, optionalEntropy *DataBlob, reserved uintptr, promptStruct *CryptProtectPromptStruct, flags uint32, dataOut *DataBlob) (err error) = crypt32.CryptProtectData\n//sys\tCryptUnprotectData(dataIn *DataBlob, name **uint16, optionalEntropy *DataBlob, reserved uintptr, promptStruct *CryptProtectPromptStruct, flags uint32, dataOut *DataBlob) (err error) = crypt32.CryptUnprotectData\n//sys\tWinVerifyTrustEx(hwnd HWND, actionId *GUID, data *WinTrustData) (ret error) = wintrust.WinVerifyTrustEx\n//sys\tRegOpenKeyEx(key Handle, subkey *uint16, options uint32, desiredAccess uint32, result *Handle) (regerrno error) = advapi32.RegOpenKeyExW\n//sys\tRegCloseKey(key Handle) (regerrno error) = advapi32.RegCloseKey\n//sys\tRegQueryInfoKey(key Handle, class *uint16, classLen *uint32, reserved *uint32, subkeysLen *uint32, maxSubkeyLen *uint32, maxClassLen *uint32, valuesLen *uint32, maxValueNameLen *uint32, maxValueLen *uint32, saLen *uint32, lastWriteTime *Filetime) (regerrno error) = advapi32.RegQueryInfoKeyW\n//sys\tRegEnumKeyEx(key Handle, index uint32, name *uint16, nameLen *uint32, reserved *uint32, class *uint16, classLen *uint32, lastWriteTime *Filetime) (regerrno error) = advapi32.RegEnumKeyExW\n//sys\tRegQueryValueEx(key Handle, name *uint16, reserved *uint32, valtype *uint32, buf *byte, buflen *uint32) (regerrno error) = advapi32.RegQueryValueExW\n//sys\tRegNotifyChangeKeyValue(key Handle, watchSubtree bool, notifyFilter uint32, event Handle, asynchronous bool) (regerrno error) = advapi32.RegNotifyChangeKeyValue\n//sys\tGetCurrentProcessId() (pid uint32) = kernel32.GetCurrentProcessId\n//sys\tProcessIdToSessionId(pid uint32, sessionid *uint32) (err error) = kernel32.ProcessIdToSessionId\n//sys\tClosePseudoConsole(console Handle) = kernel32.ClosePseudoConsole\n//sys\tcreatePseudoConsole(size uint32, in Handle, out Handle, flags uint32, pconsole *Handle) (hr error) = kernel32.CreatePseudoConsole\n//sys\tGetConsoleMode(console Handle, mode *uint32) (err error) = kernel32.GetConsoleMode\n//sys\tSetConsoleMode(console Handle, mode uint32) (err error) = kernel32.SetConsoleMode\n//sys\tGetConsoleScreenBufferInfo(console Handle, info *ConsoleScreenBufferInfo) (err error) = kernel32.GetConsoleScreenBufferInfo\n//sys\tsetConsoleCursorPosition(console Handle, position uint32) (err error) = kernel32.SetConsoleCursorPosition\n//sys\tGetConsoleCP() (cp uint32, err error) = kernel32.GetConsoleCP\n//sys\tGetConsoleOutputCP() (cp uint32, err error) = kernel32.GetConsoleOutputCP\n//sys\tSetConsoleCP(cp uint32) (err error) = kernel32.SetConsoleCP\n//sys\tSetConsoleOutputCP(cp uint32) (err error) = kernel32.SetConsoleOutputCP\n//sys\tWriteConsole(console Handle, buf *uint16, towrite uint32, written *uint32, reserved *byte) (err error) = kernel32.WriteConsoleW\n//sys\tReadConsole(console Handle, buf *uint16, toread uint32, read *uint32, inputControl *byte) (err error) = kernel32.ReadConsoleW\n//sys\tGetNumberOfConsoleInputEvents(console Handle, numevents *uint32) (err error) = kernel32.GetNumberOfConsoleInputEvents\n//sys\tFlushConsoleInputBuffer(console Handle) (err error) = kernel32.FlushConsoleInputBuffer\n//sys\tresizePseudoConsole(pconsole Handle, size uint32) (hr error) = kernel32.ResizePseudoConsole\n//sys\tCreateToolhelp32Snapshot(flags uint32, processId uint32) (handle Handle, err error) [failretval==InvalidHandle] = kernel32.CreateToolhelp32Snapshot\n//sys\tModule32First(snapshot Handle, moduleEntry *ModuleEntry32) (err error) = kernel32.Module32FirstW\n//sys\tModule32Next(snapshot Handle, moduleEntry *ModuleEntry32) (err error) = kernel32.Module32NextW\n//sys\tProcess32First(snapshot Handle, procEntry *ProcessEntry32) (err error) = kernel32.Process32FirstW\n//sys\tProcess32Next(snapshot Handle, procEntry *ProcessEntry32) (err error) = kernel32.Process32NextW\n//sys\tThread32First(snapshot Handle, threadEntry *ThreadEntry32) (err error)\n//sys\tThread32Next(snapshot Handle, threadEntry *ThreadEntry32) (err error)\n//sys\tDeviceIoControl(handle Handle, ioControlCode uint32, inBuffer *byte, inBufferSize uint32, outBuffer *byte, outBufferSize uint32, bytesReturned *uint32, overlapped *Overlapped) (err error)\n// This function returns 1 byte BOOLEAN rather than the 4 byte BOOL.\n//sys\tCreateSymbolicLink(symlinkfilename *uint16, targetfilename *uint16, flags uint32) (err error) [failretval&0xff==0] = CreateSymbolicLinkW\n//sys\tCreateHardLink(filename *uint16, existingfilename *uint16, reserved uintptr) (err error) [failretval&0xff==0] = CreateHardLinkW\n//sys\tGetCurrentThreadId() (id uint32)\n//sys\tCreateEvent(eventAttrs *SecurityAttributes, manualReset uint32, initialState uint32, name *uint16) (handle Handle, err error) [failretval == 0 || e1 == ERROR_ALREADY_EXISTS] = kernel32.CreateEventW\n//sys\tCreateEventEx(eventAttrs *SecurityAttributes, name *uint16, flags uint32, desiredAccess uint32) (handle Handle, err error) [failretval == 0 || e1 == ERROR_ALREADY_EXISTS] = kernel32.CreateEventExW\n//sys\tOpenEvent(desiredAccess uint32, inheritHandle bool, name *uint16) (handle Handle, err error) = kernel32.OpenEventW\n//sys\tSetEvent(event Handle) (err error) = kernel32.SetEvent\n//sys\tResetEvent(event Handle) (err error) = kernel32.ResetEvent\n//sys\tPulseEvent(event Handle) (err error) = kernel32.PulseEvent\n//sys\tCreateMutex(mutexAttrs *SecurityAttributes, initialOwner bool, name *uint16) (handle Handle, err error) [failretval == 0 || e1 == ERROR_ALREADY_EXISTS] = kernel32.CreateMutexW\n//sys\tCreateMutexEx(mutexAttrs *SecurityAttributes, name *uint16, flags uint32, desiredAccess uint32) (handle Handle, err error) [failretval == 0 || e1 == ERROR_ALREADY_EXISTS] = kernel32.CreateMutexExW\n//sys\tOpenMutex(desiredAccess uint32, inheritHandle bool, name *uint16) (handle Handle, err error) = kernel32.OpenMutexW\n//sys\tReleaseMutex(mutex Handle) (err error) = kernel32.ReleaseMutex\n//sys\tSleepEx(milliseconds uint32, alertable bool) (ret uint32) = kernel32.SleepEx\n//sys\tCreateJobObject(jobAttr *SecurityAttributes, name *uint16) (handle Handle, err error) = kernel32.CreateJobObjectW\n//sys\tAssignProcessToJobObject(job Handle, process Handle) (err error) = kernel32.AssignProcessToJobObject\n//sys\tTerminateJobObject(job Handle, exitCode uint32) (err error) = kernel32.TerminateJobObject\n//sys\tSetErrorMode(mode uint32) (ret uint32) = kernel32.SetErrorMode\n//sys\tResumeThread(thread Handle) (ret uint32, err error) [failretval==0xffffffff] = kernel32.ResumeThread\n//sys\tSetPriorityClass(process Handle, priorityClass uint32) (err error) = kernel32.SetPriorityClass\n//sys\tGetPriorityClass(process Handle) (ret uint32, err error) = kernel32.GetPriorityClass\n//sys\tQueryInformationJobObject(job Handle, JobObjectInformationClass int32, JobObjectInformation uintptr, JobObjectInformationLength uint32, retlen *uint32) (err error) = kernel32.QueryInformationJobObject\n//sys\tSetInformationJobObject(job Handle, JobObjectInformationClass uint32, JobObjectInformation uintptr, JobObjectInformationLength uint32) (ret int, err error)\n//sys\tGenerateConsoleCtrlEvent(ctrlEvent uint32, processGroupID uint32) (err error)\n//sys\tGetProcessId(process Handle) (id uint32, err error)\n//sys\tQueryFullProcessImageName(proc Handle, flags uint32, exeName *uint16, size *uint32) (err error) = kernel32.QueryFullProcessImageNameW\n//sys\tOpenThread(desiredAccess uint32, inheritHandle bool, threadId uint32) (handle Handle, err error)\n//sys\tSetProcessPriorityBoost(process Handle, disable bool) (err error) = kernel32.SetProcessPriorityBoost\n//sys\tGetProcessWorkingSetSizeEx(hProcess Handle, lpMinimumWorkingSetSize *uintptr, lpMaximumWorkingSetSize *uintptr, flags *uint32)\n//sys\tSetProcessWorkingSetSizeEx(hProcess Handle, dwMinimumWorkingSetSize uintptr, dwMaximumWorkingSetSize uintptr, flags uint32) (err error)\n//sys\tClearCommBreak(handle Handle) (err error)\n//sys\tClearCommError(handle Handle, lpErrors *uint32, lpStat *ComStat) (err error)\n//sys\tEscapeCommFunction(handle Handle, dwFunc uint32) (err error)\n//sys\tGetCommState(handle Handle, lpDCB *DCB) (err error)\n//sys\tGetCommModemStatus(handle Handle, lpModemStat *uint32) (err error)\n//sys\tGetCommTimeouts(handle Handle, timeouts *CommTimeouts) (err error)\n//sys\tPurgeComm(handle Handle, dwFlags uint32) (err error)\n//sys\tSetCommBreak(handle Handle) (err error)\n//sys\tSetCommMask(handle Handle, dwEvtMask uint32) (err error)\n//sys\tSetCommState(handle Handle, lpDCB *DCB) (err error)\n//sys\tSetCommTimeouts(handle Handle, timeouts *CommTimeouts) (err error)\n//sys\tSetupComm(handle Handle, dwInQueue uint32, dwOutQueue uint32) (err error)\n//sys\tWaitCommEvent(handle Handle, lpEvtMask *uint32, lpOverlapped *Overlapped) (err error)\n//sys\tGetActiveProcessorCount(groupNumber uint16) (ret uint32)\n//sys\tGetMaximumProcessorCount(groupNumber uint16) (ret uint32)\n//sys\tEnumWindows(enumFunc uintptr, param unsafe.Pointer) (err error) = user32.EnumWindows\n//sys\tEnumChildWindows(hwnd HWND, enumFunc uintptr, param unsafe.Pointer) = user32.EnumChildWindows\n//sys\tGetClassName(hwnd HWND, className *uint16, maxCount int32) (copied int32, err error) = user32.GetClassNameW\n//sys\tGetDesktopWindow() (hwnd HWND) = user32.GetDesktopWindow\n//sys\tGetForegroundWindow() (hwnd HWND) = user32.GetForegroundWindow\n//sys\tIsWindow(hwnd HWND) (isWindow bool) = user32.IsWindow\n//sys\tIsWindowUnicode(hwnd HWND) (isUnicode bool) = user32.IsWindowUnicode\n//sys\tIsWindowVisible(hwnd HWND) (isVisible bool) = user32.IsWindowVisible\n//sys\tGetGUIThreadInfo(thread uint32, info *GUIThreadInfo) (err error) = user32.GetGUIThreadInfo\n//sys\tGetLargePageMinimum() (size uintptr)\n\n// Volume Management Functions\n//sys\tDefineDosDevice(flags uint32, deviceName *uint16, targetPath *uint16) (err error) = DefineDosDeviceW\n//sys\tDeleteVolumeMountPoint(volumeMountPoint *uint16) (err error) = DeleteVolumeMountPointW\n//sys\tFindFirstVolume(volumeName *uint16, bufferLength uint32) (handle Handle, err error) [failretval==InvalidHandle] = FindFirstVolumeW\n//sys\tFindFirstVolumeMountPoint(rootPathName *uint16, volumeMountPoint *uint16, bufferLength uint32) (handle Handle, err error) [failretval==InvalidHandle] = FindFirstVolumeMountPointW\n//sys\tFindNextVolume(findVolume Handle, volumeName *uint16, bufferLength uint32) (err error) = FindNextVolumeW\n//sys\tFindNextVolumeMountPoint(findVolumeMountPoint Handle, volumeMountPoint *uint16, bufferLength uint32) (err error) = FindNextVolumeMountPointW\n//sys\tFindVolumeClose(findVolume Handle) (err error)\n//sys\tFindVolumeMountPointClose(findVolumeMountPoint Handle) (err error)\n//sys\tGetDiskFreeSpaceEx(directoryName *uint16, freeBytesAvailableToCaller *uint64, totalNumberOfBytes *uint64, totalNumberOfFreeBytes *uint64) (err error) = GetDiskFreeSpaceExW\n//sys\tGetDriveType(rootPathName *uint16) (driveType uint32) = GetDriveTypeW\n//sys\tGetLogicalDrives() (drivesBitMask uint32, err error) [failretval==0]\n//sys\tGetLogicalDriveStrings(bufferLength uint32, buffer *uint16) (n uint32, err error) [failretval==0] = GetLogicalDriveStringsW\n//sys\tGetVolumeInformation(rootPathName *uint16, volumeNameBuffer *uint16, volumeNameSize uint32, volumeNameSerialNumber *uint32, maximumComponentLength *uint32, fileSystemFlags *uint32, fileSystemNameBuffer *uint16, fileSystemNameSize uint32) (err error) = GetVolumeInformationW\n//sys\tGetVolumeInformationByHandle(file Handle, volumeNameBuffer *uint16, volumeNameSize uint32, volumeNameSerialNumber *uint32, maximumComponentLength *uint32, fileSystemFlags *uint32, fileSystemNameBuffer *uint16, fileSystemNameSize uint32) (err error) = GetVolumeInformationByHandleW\n//sys\tGetVolumeNameForVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16, bufferlength uint32) (err error) = GetVolumeNameForVolumeMountPointW\n//sys\tGetVolumePathName(fileName *uint16, volumePathName *uint16, bufferLength uint32) (err error) = GetVolumePathNameW\n//sys\tGetVolumePathNamesForVolumeName(volumeName *uint16, volumePathNames *uint16, bufferLength uint32, returnLength *uint32) (err error) = GetVolumePathNamesForVolumeNameW\n//sys\tQueryDosDevice(deviceName *uint16, targetPath *uint16, max uint32) (n uint32, err error) [failretval==0] = QueryDosDeviceW\n//sys\tSetVolumeLabel(rootPathName *uint16, volumeName *uint16) (err error) = SetVolumeLabelW\n//sys\tSetVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16) (err error) = SetVolumeMountPointW\n//sys\tInitiateSystemShutdownEx(machineName *uint16, message *uint16, timeout uint32, forceAppsClosed bool, rebootAfterShutdown bool, reason uint32) (err error) = advapi32.InitiateSystemShutdownExW\n//sys\tSetProcessShutdownParameters(level uint32, flags uint32) (err error) = kernel32.SetProcessShutdownParameters\n//sys\tGetProcessShutdownParameters(level *uint32, flags *uint32) (err error) = kernel32.GetProcessShutdownParameters\n//sys\tclsidFromString(lpsz *uint16, pclsid *GUID) (ret error) = ole32.CLSIDFromString\n//sys\tstringFromGUID2(rguid *GUID, lpsz *uint16, cchMax int32) (chars int32) = ole32.StringFromGUID2\n//sys\tcoCreateGuid(pguid *GUID) (ret error) = ole32.CoCreateGuid\n//sys\tCoTaskMemFree(address unsafe.Pointer) = ole32.CoTaskMemFree\n//sys\tCoInitializeEx(reserved uintptr, coInit uint32) (ret error) = ole32.CoInitializeEx\n//sys\tCoUninitialize() = ole32.CoUninitialize\n//sys\tCoGetObject(name *uint16, bindOpts *BIND_OPTS3, guid *GUID, functionTable **uintptr) (ret error) = ole32.CoGetObject\n//sys\tgetProcessPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) = kernel32.GetProcessPreferredUILanguages\n//sys\tgetThreadPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) = kernel32.GetThreadPreferredUILanguages\n//sys\tgetUserPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) = kernel32.GetUserPreferredUILanguages\n//sys\tgetSystemPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) = kernel32.GetSystemPreferredUILanguages\n//sys\tfindResource(module Handle, name uintptr, resType uintptr) (resInfo Handle, err error) = kernel32.FindResourceW\n//sys\tSizeofResource(module Handle, resInfo Handle) (size uint32, err error) = kernel32.SizeofResource\n//sys\tLoadResource(module Handle, resInfo Handle) (resData Handle, err error) = kernel32.LoadResource\n//sys\tLockResource(resData Handle) (addr uintptr, err error) = kernel32.LockResource\n\n// Version APIs\n//sys\tGetFileVersionInfoSize(filename string, zeroHandle *Handle) (bufSize uint32, err error) = version.GetFileVersionInfoSizeW\n//sys\tGetFileVersionInfo(filename string, handle uint32, bufSize uint32, buffer unsafe.Pointer) (err error) = version.GetFileVersionInfoW\n//sys\tVerQueryValue(block unsafe.Pointer, subBlock string, pointerToBufferPointer unsafe.Pointer, bufSize *uint32) (err error) = version.VerQueryValueW\n\n// Process Status API (PSAPI)\n//sys\tenumProcesses(processIds *uint32, nSize uint32, bytesReturned *uint32) (err error) = psapi.EnumProcesses\n//sys\tEnumProcessModules(process Handle, module *Handle, cb uint32, cbNeeded *uint32) (err error) = psapi.EnumProcessModules\n//sys\tEnumProcessModulesEx(process Handle, module *Handle, cb uint32, cbNeeded *uint32, filterFlag uint32) (err error) = psapi.EnumProcessModulesEx\n//sys\tGetModuleInformation(process Handle, module Handle, modinfo *ModuleInfo, cb uint32) (err error) = psapi.GetModuleInformation\n//sys\tGetModuleFileNameEx(process Handle, module Handle, filename *uint16, size uint32) (err error) = psapi.GetModuleFileNameExW\n//sys\tGetModuleBaseName(process Handle, module Handle, baseName *uint16, size uint32) (err error) = psapi.GetModuleBaseNameW\n//sys   QueryWorkingSetEx(process Handle, pv uintptr, cb uint32) (err error) = psapi.QueryWorkingSetEx\n\n// NT Native APIs\n//sys\trtlNtStatusToDosErrorNoTeb(ntstatus NTStatus) (ret syscall.Errno) = ntdll.RtlNtStatusToDosErrorNoTeb\n//sys\trtlGetVersion(info *OsVersionInfoEx) (ntstatus error) = ntdll.RtlGetVersion\n//sys\trtlGetNtVersionNumbers(majorVersion *uint32, minorVersion *uint32, buildNumber *uint32) = ntdll.RtlGetNtVersionNumbers\n//sys\tRtlGetCurrentPeb() (peb *PEB) = ntdll.RtlGetCurrentPeb\n//sys\tRtlInitUnicodeString(destinationString *NTUnicodeString, sourceString *uint16) = ntdll.RtlInitUnicodeString\n//sys\tRtlInitString(destinationString *NTString, sourceString *byte) = ntdll.RtlInitString\n//sys\tNtCreateFile(handle *Handle, access uint32, oa *OBJECT_ATTRIBUTES, iosb *IO_STATUS_BLOCK, allocationSize *int64, attributes uint32, share uint32, disposition uint32, options uint32, eabuffer uintptr, ealength uint32) (ntstatus error) = ntdll.NtCreateFile\n//sys\tNtCreateNamedPipeFile(pipe *Handle, access uint32, oa *OBJECT_ATTRIBUTES, iosb *IO_STATUS_BLOCK, share uint32, disposition uint32, options uint32, typ uint32, readMode uint32, completionMode uint32, maxInstances uint32, inboundQuota uint32, outputQuota uint32, timeout *int64) (ntstatus error) = ntdll.NtCreateNamedPipeFile\n//sys\tNtSetInformationFile(handle Handle, iosb *IO_STATUS_BLOCK, inBuffer *byte, inBufferLen uint32, class uint32) (ntstatus error) = ntdll.NtSetInformationFile\n//sys\tRtlDosPathNameToNtPathName(dosName *uint16, ntName *NTUnicodeString, ntFileNamePart *uint16, relativeName *RTL_RELATIVE_NAME) (ntstatus error) = ntdll.RtlDosPathNameToNtPathName_U_WithStatus\n//sys\tRtlDosPathNameToRelativeNtPathName(dosName *uint16, ntName *NTUnicodeString, ntFileNamePart *uint16, relativeName *RTL_RELATIVE_NAME) (ntstatus error) = ntdll.RtlDosPathNameToRelativeNtPathName_U_WithStatus\n//sys\tRtlDefaultNpAcl(acl **ACL) (ntstatus error) = ntdll.RtlDefaultNpAcl\n//sys\tNtQueryInformationProcess(proc Handle, procInfoClass int32, procInfo unsafe.Pointer, procInfoLen uint32, retLen *uint32) (ntstatus error) = ntdll.NtQueryInformationProcess\n//sys\tNtSetInformationProcess(proc Handle, procInfoClass int32, procInfo unsafe.Pointer, procInfoLen uint32) (ntstatus error) = ntdll.NtSetInformationProcess\n//sys\tNtQuerySystemInformation(sysInfoClass int32, sysInfo unsafe.Pointer, sysInfoLen uint32, retLen *uint32) (ntstatus error) = ntdll.NtQuerySystemInformation\n//sys\tNtSetSystemInformation(sysInfoClass int32, sysInfo unsafe.Pointer, sysInfoLen uint32) (ntstatus error) = ntdll.NtSetSystemInformation\n//sys\tRtlAddFunctionTable(functionTable *RUNTIME_FUNCTION, entryCount uint32, baseAddress uintptr) (ret bool) = ntdll.RtlAddFunctionTable\n//sys\tRtlDeleteFunctionTable(functionTable *RUNTIME_FUNCTION) (ret bool) = ntdll.RtlDeleteFunctionTable\n\n// Desktop Window Manager API (Dwmapi)\n//sys\tDwmGetWindowAttribute(hwnd HWND, attribute uint32, value unsafe.Pointer, size uint32) (ret error) = dwmapi.DwmGetWindowAttribute\n//sys\tDwmSetWindowAttribute(hwnd HWND, attribute uint32, value unsafe.Pointer, size uint32) (ret error) = dwmapi.DwmSetWindowAttribute\n\n// Windows Multimedia API\n//sys TimeBeginPeriod (period uint32) (err error) [failretval != 0] = winmm.timeBeginPeriod\n//sys TimeEndPeriod (period uint32) (err error) [failretval != 0] = winmm.timeEndPeriod\n\n// syscall interface implementation for other packages\n\n// GetCurrentProcess returns the handle for the current process.\n// It is a pseudo handle that does not need to be closed.\n// The returned error is always nil.\n//\n// Deprecated: use CurrentProcess for the same Handle without the nil\n// error.\nfunc GetCurrentProcess() (Handle, error) {\n\treturn CurrentProcess(), nil\n}\n\n// CurrentProcess returns the handle for the current process.\n// It is a pseudo handle that does not need to be closed.\nfunc CurrentProcess() Handle { return Handle(^uintptr(1 - 1)) }\n\n// GetCurrentThread returns the handle for the current thread.\n// It is a pseudo handle that does not need to be closed.\n// The returned error is always nil.\n//\n// Deprecated: use CurrentThread for the same Handle without the nil\n// error.\nfunc GetCurrentThread() (Handle, error) {\n\treturn CurrentThread(), nil\n}\n\n// CurrentThread returns the handle for the current thread.\n// It is a pseudo handle that does not need to be closed.\nfunc CurrentThread() Handle { return Handle(^uintptr(2 - 1)) }\n\n// GetProcAddressByOrdinal retrieves the address of the exported\n// function from module by ordinal.\nfunc GetProcAddressByOrdinal(module Handle, ordinal uintptr) (proc uintptr, err error) {\n\tr0, _, e1 := syscall.Syscall(procGetProcAddress.Addr(), 2, uintptr(module), ordinal, 0)\n\tproc = uintptr(r0)\n\tif proc == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc Exit(code int) { ExitProcess(uint32(code)) }\n\nfunc makeInheritSa() *SecurityAttributes {\n\tvar sa SecurityAttributes\n\tsa.Length = uint32(unsafe.Sizeof(sa))\n\tsa.InheritHandle = 1\n\treturn &sa\n}\n\nfunc Open(path string, mode int, perm uint32) (fd Handle, err error) {\n\tif len(path) == 0 {\n\t\treturn InvalidHandle, ERROR_FILE_NOT_FOUND\n\t}\n\tpathp, err := UTF16PtrFromString(path)\n\tif err != nil {\n\t\treturn InvalidHandle, err\n\t}\n\tvar access uint32\n\tswitch mode & (O_RDONLY | O_WRONLY | O_RDWR) {\n\tcase O_RDONLY:\n\t\taccess = GENERIC_READ\n\tcase O_WRONLY:\n\t\taccess = GENERIC_WRITE\n\tcase O_RDWR:\n\t\taccess = GENERIC_READ | GENERIC_WRITE\n\t}\n\tif mode&O_CREAT != 0 {\n\t\taccess |= GENERIC_WRITE\n\t}\n\tif mode&O_APPEND != 0 {\n\t\taccess &^= GENERIC_WRITE\n\t\taccess |= FILE_APPEND_DATA\n\t}\n\tsharemode := uint32(FILE_SHARE_READ | FILE_SHARE_WRITE)\n\tvar sa *SecurityAttributes\n\tif mode&O_CLOEXEC == 0 {\n\t\tsa = makeInheritSa()\n\t}\n\tvar createmode uint32\n\tswitch {\n\tcase mode&(O_CREAT|O_EXCL) == (O_CREAT | O_EXCL):\n\t\tcreatemode = CREATE_NEW\n\tcase mode&(O_CREAT|O_TRUNC) == (O_CREAT | O_TRUNC):\n\t\tcreatemode = CREATE_ALWAYS\n\tcase mode&O_CREAT == O_CREAT:\n\t\tcreatemode = OPEN_ALWAYS\n\tcase mode&O_TRUNC == O_TRUNC:\n\t\tcreatemode = TRUNCATE_EXISTING\n\tdefault:\n\t\tcreatemode = OPEN_EXISTING\n\t}\n\tvar attrs uint32 = FILE_ATTRIBUTE_NORMAL\n\tif perm&S_IWRITE == 0 {\n\t\tattrs = FILE_ATTRIBUTE_READONLY\n\t}\n\th, e := CreateFile(pathp, access, sharemode, sa, createmode, attrs, 0)\n\treturn h, e\n}\n\nfunc Read(fd Handle, p []byte) (n int, err error) {\n\tvar done uint32\n\te := ReadFile(fd, p, &done, nil)\n\tif e != nil {\n\t\tif e == ERROR_BROKEN_PIPE {\n\t\t\t// NOTE(brainman): work around ERROR_BROKEN_PIPE is returned on reading EOF from stdin\n\t\t\treturn 0, nil\n\t\t}\n\t\treturn 0, e\n\t}\n\treturn int(done), nil\n}\n\nfunc Write(fd Handle, p []byte) (n int, err error) {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\tvar done uint32\n\te := WriteFile(fd, p, &done, nil)\n\tif e != nil {\n\t\treturn 0, e\n\t}\n\treturn int(done), nil\n}\n\nfunc ReadFile(fd Handle, p []byte, done *uint32, overlapped *Overlapped) error {\n\terr := readFile(fd, p, done, overlapped)\n\tif raceenabled {\n\t\tif *done > 0 {\n\t\t\traceWriteRange(unsafe.Pointer(&p[0]), int(*done))\n\t\t}\n\t\traceAcquire(unsafe.Pointer(&ioSync))\n\t}\n\treturn err\n}\n\nfunc WriteFile(fd Handle, p []byte, done *uint32, overlapped *Overlapped) error {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\terr := writeFile(fd, p, done, overlapped)\n\tif raceenabled && *done > 0 {\n\t\traceReadRange(unsafe.Pointer(&p[0]), int(*done))\n\t}\n\treturn err\n}\n\nvar ioSync int64\n\nfunc Seek(fd Handle, offset int64, whence int) (newoffset int64, err error) {\n\tvar w uint32\n\tswitch whence {\n\tcase 0:\n\t\tw = FILE_BEGIN\n\tcase 1:\n\t\tw = FILE_CURRENT\n\tcase 2:\n\t\tw = FILE_END\n\t}\n\thi := int32(offset >> 32)\n\tlo := int32(offset)\n\t// use GetFileType to check pipe, pipe can't do seek\n\tft, _ := GetFileType(fd)\n\tif ft == FILE_TYPE_PIPE {\n\t\treturn 0, syscall.EPIPE\n\t}\n\trlo, e := SetFilePointer(fd, lo, &hi, w)\n\tif e != nil {\n\t\treturn 0, e\n\t}\n\treturn int64(hi)<<32 + int64(rlo), nil\n}\n\nfunc Close(fd Handle) (err error) {\n\treturn CloseHandle(fd)\n}\n\nvar (\n\tStdin  = getStdHandle(STD_INPUT_HANDLE)\n\tStdout = getStdHandle(STD_OUTPUT_HANDLE)\n\tStderr = getStdHandle(STD_ERROR_HANDLE)\n)\n\nfunc getStdHandle(stdhandle uint32) (fd Handle) {\n\tr, _ := GetStdHandle(stdhandle)\n\treturn r\n}\n\nconst ImplementsGetwd = true\n\nfunc Getwd() (wd string, err error) {\n\tb := make([]uint16, 300)\n\tn, e := GetCurrentDirectory(uint32(len(b)), &b[0])\n\tif e != nil {\n\t\treturn \"\", e\n\t}\n\treturn string(utf16.Decode(b[0:n])), nil\n}\n\nfunc Chdir(path string) (err error) {\n\tpathp, err := UTF16PtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn SetCurrentDirectory(pathp)\n}\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tpathp, err := UTF16PtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn CreateDirectory(pathp, nil)\n}\n\nfunc Rmdir(path string) (err error) {\n\tpathp, err := UTF16PtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn RemoveDirectory(pathp)\n}\n\nfunc Unlink(path string) (err error) {\n\tpathp, err := UTF16PtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn DeleteFile(pathp)\n}\n\nfunc Rename(oldpath, newpath string) (err error) {\n\tfrom, err := UTF16PtrFromString(oldpath)\n\tif err != nil {\n\t\treturn err\n\t}\n\tto, err := UTF16PtrFromString(newpath)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn MoveFileEx(from, to, MOVEFILE_REPLACE_EXISTING)\n}\n\nfunc ComputerName() (name string, err error) {\n\tvar n uint32 = MAX_COMPUTERNAME_LENGTH + 1\n\tb := make([]uint16, n)\n\te := GetComputerName(&b[0], &n)\n\tif e != nil {\n\t\treturn \"\", e\n\t}\n\treturn string(utf16.Decode(b[0:n])), nil\n}\n\nfunc DurationSinceBoot() time.Duration {\n\treturn time.Duration(getTickCount64()) * time.Millisecond\n}\n\nfunc Ftruncate(fd Handle, length int64) (err error) {\n\ttype _FILE_END_OF_FILE_INFO struct {\n\t\tEndOfFile int64\n\t}\n\tvar info _FILE_END_OF_FILE_INFO\n\tinfo.EndOfFile = length\n\treturn SetFileInformationByHandle(fd, FileEndOfFileInfo, (*byte)(unsafe.Pointer(&info)), uint32(unsafe.Sizeof(info)))\n}\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\tvar ft Filetime\n\tGetSystemTimeAsFileTime(&ft)\n\t*tv = NsecToTimeval(ft.Nanoseconds())\n\treturn nil\n}\n\nfunc Pipe(p []Handle) (err error) {\n\tif len(p) != 2 {\n\t\treturn syscall.EINVAL\n\t}\n\tvar r, w Handle\n\te := CreatePipe(&r, &w, makeInheritSa(), 0)\n\tif e != nil {\n\t\treturn e\n\t}\n\tp[0] = r\n\tp[1] = w\n\treturn nil\n}\n\nfunc Utimes(path string, tv []Timeval) (err error) {\n\tif len(tv) != 2 {\n\t\treturn syscall.EINVAL\n\t}\n\tpathp, e := UTF16PtrFromString(path)\n\tif e != nil {\n\t\treturn e\n\t}\n\th, e := CreateFile(pathp,\n\t\tFILE_WRITE_ATTRIBUTES, FILE_SHARE_WRITE, nil,\n\t\tOPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0)\n\tif e != nil {\n\t\treturn e\n\t}\n\tdefer CloseHandle(h)\n\ta := NsecToFiletime(tv[0].Nanoseconds())\n\tw := NsecToFiletime(tv[1].Nanoseconds())\n\treturn SetFileTime(h, nil, &a, &w)\n}\n\nfunc UtimesNano(path string, ts []Timespec) (err error) {\n\tif len(ts) != 2 {\n\t\treturn syscall.EINVAL\n\t}\n\tpathp, e := UTF16PtrFromString(path)\n\tif e != nil {\n\t\treturn e\n\t}\n\th, e := CreateFile(pathp,\n\t\tFILE_WRITE_ATTRIBUTES, FILE_SHARE_WRITE, nil,\n\t\tOPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0)\n\tif e != nil {\n\t\treturn e\n\t}\n\tdefer CloseHandle(h)\n\ta := NsecToFiletime(TimespecToNsec(ts[0]))\n\tw := NsecToFiletime(TimespecToNsec(ts[1]))\n\treturn SetFileTime(h, nil, &a, &w)\n}\n\nfunc Fsync(fd Handle) (err error) {\n\treturn FlushFileBuffers(fd)\n}\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tp, e := UTF16PtrFromString(path)\n\tif e != nil {\n\t\treturn e\n\t}\n\tattrs, e := GetFileAttributes(p)\n\tif e != nil {\n\t\treturn e\n\t}\n\tif mode&S_IWRITE != 0 {\n\t\tattrs &^= FILE_ATTRIBUTE_READONLY\n\t} else {\n\t\tattrs |= FILE_ATTRIBUTE_READONLY\n\t}\n\treturn SetFileAttributes(p, attrs)\n}\n\nfunc LoadGetSystemTimePreciseAsFileTime() error {\n\treturn procGetSystemTimePreciseAsFileTime.Find()\n}\n\nfunc LoadCancelIoEx() error {\n\treturn procCancelIoEx.Find()\n}\n\nfunc LoadSetFileCompletionNotificationModes() error {\n\treturn procSetFileCompletionNotificationModes.Find()\n}\n\nfunc WaitForMultipleObjects(handles []Handle, waitAll bool, waitMilliseconds uint32) (event uint32, err error) {\n\t// Every other win32 array API takes arguments as \"pointer, count\", except for this function. So we\n\t// can't declare it as a usual [] type, because mksyscall will use the opposite order. We therefore\n\t// trivially stub this ourselves.\n\n\tvar handlePtr *Handle\n\tif len(handles) > 0 {\n\t\thandlePtr = &handles[0]\n\t}\n\treturn waitForMultipleObjects(uint32(len(handles)), uintptr(unsafe.Pointer(handlePtr)), waitAll, waitMilliseconds)\n}\n\n// net api calls\n\nconst socket_error = uintptr(^uint32(0))\n\n//sys\tWSAStartup(verreq uint32, data *WSAData) (sockerr error) = ws2_32.WSAStartup\n//sys\tWSACleanup() (err error) [failretval==socket_error] = ws2_32.WSACleanup\n//sys\tWSAIoctl(s Handle, iocc uint32, inbuf *byte, cbif uint32, outbuf *byte, cbob uint32, cbbr *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) [failretval==socket_error] = ws2_32.WSAIoctl\n//sys\tWSALookupServiceBegin(querySet *WSAQUERYSET, flags uint32, handle *Handle) (err error) [failretval==socket_error] = ws2_32.WSALookupServiceBeginW\n//sys\tWSALookupServiceNext(handle Handle, flags uint32, size *int32, querySet *WSAQUERYSET) (err error) [failretval==socket_error] = ws2_32.WSALookupServiceNextW\n//sys\tWSALookupServiceEnd(handle Handle) (err error) [failretval==socket_error] = ws2_32.WSALookupServiceEnd\n//sys\tsocket(af int32, typ int32, protocol int32) (handle Handle, err error) [failretval==InvalidHandle] = ws2_32.socket\n//sys\tsendto(s Handle, buf []byte, flags int32, to unsafe.Pointer, tolen int32) (err error) [failretval==socket_error] = ws2_32.sendto\n//sys\trecvfrom(s Handle, buf []byte, flags int32, from *RawSockaddrAny, fromlen *int32) (n int32, err error) [failretval==-1] = ws2_32.recvfrom\n//sys\tSetsockopt(s Handle, level int32, optname int32, optval *byte, optlen int32) (err error) [failretval==socket_error] = ws2_32.setsockopt\n//sys\tGetsockopt(s Handle, level int32, optname int32, optval *byte, optlen *int32) (err error) [failretval==socket_error] = ws2_32.getsockopt\n//sys\tbind(s Handle, name unsafe.Pointer, namelen int32) (err error) [failretval==socket_error] = ws2_32.bind\n//sys\tconnect(s Handle, name unsafe.Pointer, namelen int32) (err error) [failretval==socket_error] = ws2_32.connect\n//sys\tgetsockname(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) [failretval==socket_error] = ws2_32.getsockname\n//sys\tgetpeername(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) [failretval==socket_error] = ws2_32.getpeername\n//sys\tlisten(s Handle, backlog int32) (err error) [failretval==socket_error] = ws2_32.listen\n//sys\tshutdown(s Handle, how int32) (err error) [failretval==socket_error] = ws2_32.shutdown\n//sys\tClosesocket(s Handle) (err error) [failretval==socket_error] = ws2_32.closesocket\n//sys\tAcceptEx(ls Handle, as Handle, buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, recvd *uint32, overlapped *Overlapped) (err error) = mswsock.AcceptEx\n//sys\tGetAcceptExSockaddrs(buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, lrsa **RawSockaddrAny, lrsalen *int32, rrsa **RawSockaddrAny, rrsalen *int32) = mswsock.GetAcceptExSockaddrs\n//sys\tWSARecv(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSARecv\n//sys\tWSASend(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSASend\n//sys\tWSARecvFrom(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32,  from *RawSockaddrAny, fromlen *int32, overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSARecvFrom\n//sys\tWSASendTo(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, to *RawSockaddrAny, tolen int32,  overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSASendTo\n//sys\tWSASocket(af int32, typ int32, protocol int32, protoInfo *WSAProtocolInfo, group uint32, flags uint32) (handle Handle, err error) [failretval==InvalidHandle] = ws2_32.WSASocketW\n//sys\tWSADuplicateSocket(s Handle, processID uint32, info *WSAProtocolInfo) (err error) [failretval!=0] = ws2_32.WSADuplicateSocketW\n//sys\tGetHostByName(name string) (h *Hostent, err error) [failretval==nil] = ws2_32.gethostbyname\n//sys\tGetServByName(name string, proto string) (s *Servent, err error) [failretval==nil] = ws2_32.getservbyname\n//sys\tNtohs(netshort uint16) (u uint16) = ws2_32.ntohs\n//sys\tGetProtoByName(name string) (p *Protoent, err error) [failretval==nil] = ws2_32.getprotobyname\n//sys\tDnsQuery(name string, qtype uint16, options uint32, extra *byte, qrs **DNSRecord, pr *byte) (status error) = dnsapi.DnsQuery_W\n//sys\tDnsRecordListFree(rl *DNSRecord, freetype uint32) = dnsapi.DnsRecordListFree\n//sys\tDnsNameCompare(name1 *uint16, name2 *uint16) (same bool) = dnsapi.DnsNameCompare_W\n//sys\tGetAddrInfoW(nodename *uint16, servicename *uint16, hints *AddrinfoW, result **AddrinfoW) (sockerr error) = ws2_32.GetAddrInfoW\n//sys\tFreeAddrInfoW(addrinfo *AddrinfoW) = ws2_32.FreeAddrInfoW\n//sys\tGetIfEntry(pIfRow *MibIfRow) (errcode error) = iphlpapi.GetIfEntry\n//sys\tGetAdaptersInfo(ai *IpAdapterInfo, ol *uint32) (errcode error) = iphlpapi.GetAdaptersInfo\n//sys\tSetFileCompletionNotificationModes(handle Handle, flags uint8) (err error) = kernel32.SetFileCompletionNotificationModes\n//sys\tWSAEnumProtocols(protocols *int32, protocolBuffer *WSAProtocolInfo, bufferLength *uint32) (n int32, err error) [failretval==-1] = ws2_32.WSAEnumProtocolsW\n//sys\tWSAGetOverlappedResult(h Handle, o *Overlapped, bytes *uint32, wait bool, flags *uint32) (err error) = ws2_32.WSAGetOverlappedResult\n//sys\tGetAdaptersAddresses(family uint32, flags uint32, reserved uintptr, adapterAddresses *IpAdapterAddresses, sizePointer *uint32) (errcode error) = iphlpapi.GetAdaptersAddresses\n//sys\tGetACP() (acp uint32) = kernel32.GetACP\n//sys\tMultiByteToWideChar(codePage uint32, dwFlags uint32, str *byte, nstr int32, wchar *uint16, nwchar int32) (nwrite int32, err error) = kernel32.MultiByteToWideChar\n//sys\tgetBestInterfaceEx(sockaddr unsafe.Pointer, pdwBestIfIndex *uint32) (errcode error) = iphlpapi.GetBestInterfaceEx\n//sys   GetIfEntry2Ex(level uint32, row *MibIfRow2) (errcode error) = iphlpapi.GetIfEntry2Ex\n//sys   GetIpForwardEntry2(row *MibIpForwardRow2) (errcode error) = iphlpapi.GetIpForwardEntry2\n//sys   GetIpForwardTable2(family uint16, table **MibIpForwardTable2) (errcode error) = iphlpapi.GetIpForwardTable2\n//sys   GetUnicastIpAddressEntry(row *MibUnicastIpAddressRow) (errcode error) = iphlpapi.GetUnicastIpAddressEntry\n//sys   FreeMibTable(memory unsafe.Pointer) = iphlpapi.FreeMibTable\n//sys   NotifyIpInterfaceChange(family uint16, callback uintptr, callerContext unsafe.Pointer, initialNotification bool, notificationHandle *Handle) (errcode error) = iphlpapi.NotifyIpInterfaceChange\n//sys   NotifyRouteChange2(family uint16, callback uintptr, callerContext unsafe.Pointer, initialNotification bool, notificationHandle *Handle) (errcode error) = iphlpapi.NotifyRouteChange2\n//sys   NotifyUnicastIpAddressChange(family uint16, callback uintptr, callerContext unsafe.Pointer, initialNotification bool, notificationHandle *Handle) (errcode error) = iphlpapi.NotifyUnicastIpAddressChange\n//sys   CancelMibChangeNotify2(notificationHandle Handle) (errcode error) = iphlpapi.CancelMibChangeNotify2\n//sys\tIsProcessorFeaturePresent(ProcessorFeature uint32) (ret bool) = kernel32.IsProcessorFeaturePresent\n\n// For testing: clients can set this flag to force\n// creation of IPv6 sockets to return EAFNOSUPPORT.\nvar SocketDisableIPv6 bool\n\ntype RawSockaddrInet4 struct {\n\tFamily uint16\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]uint8\n}\n\ntype RawSockaddrInet6 struct {\n\tFamily   uint16\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\n// RawSockaddrInet is a union that contains an IPv4, an IPv6 address, or an address family. See\n// https://learn.microsoft.com/en-us/windows/win32/api/ws2ipdef/ns-ws2ipdef-sockaddr_inet.\n//\n// A [*RawSockaddrInet] may be converted to a [*RawSockaddrInet4] or [*RawSockaddrInet6] using\n// unsafe, depending on the address family.\ntype RawSockaddrInet struct {\n\tFamily uint16\n\tPort   uint16\n\tData   [6]uint32\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [100]int8\n}\n\ntype Sockaddr interface {\n\tsockaddr() (ptr unsafe.Pointer, len int32, err error) // lowercase; only we can define Sockaddrs\n}\n\ntype SockaddrInet4 struct {\n\tPort int\n\tAddr [4]byte\n\traw  RawSockaddrInet4\n}\n\nfunc (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, int32, error) {\n\tif sa.Port < 0 || sa.Port > 0xFFFF {\n\t\treturn nil, 0, syscall.EINVAL\n\t}\n\tsa.raw.Family = AF_INET\n\tp := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))\n\tp[0] = byte(sa.Port >> 8)\n\tp[1] = byte(sa.Port)\n\tsa.raw.Addr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), int32(unsafe.Sizeof(sa.raw)), nil\n}\n\ntype SockaddrInet6 struct {\n\tPort   int\n\tZoneId uint32\n\tAddr   [16]byte\n\traw    RawSockaddrInet6\n}\n\nfunc (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, int32, error) {\n\tif sa.Port < 0 || sa.Port > 0xFFFF {\n\t\treturn nil, 0, syscall.EINVAL\n\t}\n\tsa.raw.Family = AF_INET6\n\tp := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))\n\tp[0] = byte(sa.Port >> 8)\n\tp[1] = byte(sa.Port)\n\tsa.raw.Scope_id = sa.ZoneId\n\tsa.raw.Addr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), int32(unsafe.Sizeof(sa.raw)), nil\n}\n\ntype RawSockaddrUnix struct {\n\tFamily uint16\n\tPath   [UNIX_PATH_MAX]int8\n}\n\ntype SockaddrUnix struct {\n\tName string\n\traw  RawSockaddrUnix\n}\n\nfunc (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, int32, error) {\n\tname := sa.Name\n\tn := len(name)\n\tif n > len(sa.raw.Path) {\n\t\treturn nil, 0, syscall.EINVAL\n\t}\n\tif n == len(sa.raw.Path) && name[0] != '@' {\n\t\treturn nil, 0, syscall.EINVAL\n\t}\n\tsa.raw.Family = AF_UNIX\n\tfor i := 0; i < n; i++ {\n\t\tsa.raw.Path[i] = int8(name[i])\n\t}\n\t// length is family (uint16), name, NUL.\n\tsl := int32(2)\n\tif n > 0 {\n\t\tsl += int32(n) + 1\n\t}\n\tif sa.raw.Path[0] == '@' || (sa.raw.Path[0] == 0 && sl > 3) {\n\t\t// Check sl > 3 so we don't change unnamed socket behavior.\n\t\tsa.raw.Path[0] = 0\n\t\t// Don't count trailing NUL for abstract address.\n\t\tsl--\n\t}\n\n\treturn unsafe.Pointer(&sa.raw), sl, nil\n}\n\ntype RawSockaddrBth struct {\n\tAddressFamily  [2]byte\n\tBtAddr         [8]byte\n\tServiceClassId [16]byte\n\tPort           [4]byte\n}\n\ntype SockaddrBth struct {\n\tBtAddr         uint64\n\tServiceClassId GUID\n\tPort           uint32\n\n\traw RawSockaddrBth\n}\n\nfunc (sa *SockaddrBth) sockaddr() (unsafe.Pointer, int32, error) {\n\tfamily := AF_BTH\n\tsa.raw = RawSockaddrBth{\n\t\tAddressFamily:  *(*[2]byte)(unsafe.Pointer(&family)),\n\t\tBtAddr:         *(*[8]byte)(unsafe.Pointer(&sa.BtAddr)),\n\t\tPort:           *(*[4]byte)(unsafe.Pointer(&sa.Port)),\n\t\tServiceClassId: *(*[16]byte)(unsafe.Pointer(&sa.ServiceClassId)),\n\t}\n\treturn unsafe.Pointer(&sa.raw), int32(unsafe.Sizeof(sa.raw)), nil\n}\n\nfunc (rsa *RawSockaddrAny) Sockaddr() (Sockaddr, error) {\n\tswitch rsa.Addr.Family {\n\tcase AF_UNIX:\n\t\tpp := (*RawSockaddrUnix)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrUnix)\n\t\tif pp.Path[0] == 0 {\n\t\t\t// \"Abstract\" Unix domain socket.\n\t\t\t// Rewrite leading NUL as @ for textual display.\n\t\t\t// (This is the standard convention.)\n\t\t\t// Not friendly to overwrite in place,\n\t\t\t// but the callers below don't care.\n\t\t\tpp.Path[0] = '@'\n\t\t}\n\n\t\t// Assume path ends at NUL.\n\t\t// This is not technically the Linux semantics for\n\t\t// abstract Unix domain sockets--they are supposed\n\t\t// to be uninterpreted fixed-size binary blobs--but\n\t\t// everyone uses this convention.\n\t\tn := 0\n\t\tfor n < len(pp.Path) && pp.Path[n] != 0 {\n\t\t\tn++\n\t\t}\n\t\tsa.Name = string(unsafe.Slice((*byte)(unsafe.Pointer(&pp.Path[0])), n))\n\t\treturn sa, nil\n\n\tcase AF_INET:\n\t\tpp := (*RawSockaddrInet4)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrInet4)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tsa.Addr = pp.Addr\n\t\treturn sa, nil\n\n\tcase AF_INET6:\n\t\tpp := (*RawSockaddrInet6)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrInet6)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tsa.ZoneId = pp.Scope_id\n\t\tsa.Addr = pp.Addr\n\t\treturn sa, nil\n\t}\n\treturn nil, syscall.EAFNOSUPPORT\n}\n\nfunc Socket(domain, typ, proto int) (fd Handle, err error) {\n\tif domain == AF_INET6 && SocketDisableIPv6 {\n\t\treturn InvalidHandle, syscall.EAFNOSUPPORT\n\t}\n\treturn socket(int32(domain), int32(typ), int32(proto))\n}\n\nfunc SetsockoptInt(fd Handle, level, opt int, value int) (err error) {\n\tv := int32(value)\n\treturn Setsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(&v)), int32(unsafe.Sizeof(v)))\n}\n\nfunc Bind(fd Handle, sa Sockaddr) (err error) {\n\tptr, n, err := sa.sockaddr()\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn bind(fd, ptr, n)\n}\n\nfunc Connect(fd Handle, sa Sockaddr) (err error) {\n\tptr, n, err := sa.sockaddr()\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn connect(fd, ptr, n)\n}\n\nfunc GetBestInterfaceEx(sa Sockaddr, pdwBestIfIndex *uint32) (err error) {\n\tptr, _, err := sa.sockaddr()\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn getBestInterfaceEx(ptr, pdwBestIfIndex)\n}\n\nfunc Getsockname(fd Handle) (sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tl := int32(unsafe.Sizeof(rsa))\n\tif err = getsockname(fd, &rsa, &l); err != nil {\n\t\treturn\n\t}\n\treturn rsa.Sockaddr()\n}\n\nfunc Getpeername(fd Handle) (sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tl := int32(unsafe.Sizeof(rsa))\n\tif err = getpeername(fd, &rsa, &l); err != nil {\n\t\treturn\n\t}\n\treturn rsa.Sockaddr()\n}\n\nfunc Listen(s Handle, n int) (err error) {\n\treturn listen(s, int32(n))\n}\n\nfunc Shutdown(fd Handle, how int) (err error) {\n\treturn shutdown(fd, int32(how))\n}\n\nfunc WSASendto(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, to Sockaddr, overlapped *Overlapped, croutine *byte) (err error) {\n\tvar rsa unsafe.Pointer\n\tvar l int32\n\tif to != nil {\n\t\trsa, l, err = to.sockaddr()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn WSASendTo(s, bufs, bufcnt, sent, flags, (*RawSockaddrAny)(unsafe.Pointer(rsa)), l, overlapped, croutine)\n}\n\nfunc LoadGetAddrInfo() error {\n\treturn procGetAddrInfoW.Find()\n}\n\nvar connectExFunc struct {\n\tonce sync.Once\n\taddr uintptr\n\terr  error\n}\n\nfunc LoadConnectEx() error {\n\tconnectExFunc.once.Do(func() {\n\t\tvar s Handle\n\t\ts, connectExFunc.err = Socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)\n\t\tif connectExFunc.err != nil {\n\t\t\treturn\n\t\t}\n\t\tdefer CloseHandle(s)\n\t\tvar n uint32\n\t\tconnectExFunc.err = WSAIoctl(s,\n\t\t\tSIO_GET_EXTENSION_FUNCTION_POINTER,\n\t\t\t(*byte)(unsafe.Pointer(&WSAID_CONNECTEX)),\n\t\t\tuint32(unsafe.Sizeof(WSAID_CONNECTEX)),\n\t\t\t(*byte)(unsafe.Pointer(&connectExFunc.addr)),\n\t\t\tuint32(unsafe.Sizeof(connectExFunc.addr)),\n\t\t\t&n, nil, 0)\n\t})\n\treturn connectExFunc.err\n}\n\nfunc connectEx(s Handle, name unsafe.Pointer, namelen int32, sendBuf *byte, sendDataLen uint32, bytesSent *uint32, overlapped *Overlapped) (err error) {\n\tr1, _, e1 := syscall.Syscall9(connectExFunc.addr, 7, uintptr(s), uintptr(name), uintptr(namelen), uintptr(unsafe.Pointer(sendBuf)), uintptr(sendDataLen), uintptr(unsafe.Pointer(bytesSent)), uintptr(unsafe.Pointer(overlapped)), 0, 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = error(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc ConnectEx(fd Handle, sa Sockaddr, sendBuf *byte, sendDataLen uint32, bytesSent *uint32, overlapped *Overlapped) error {\n\terr := LoadConnectEx()\n\tif err != nil {\n\t\treturn errorspkg.New(\"failed to find ConnectEx: \" + err.Error())\n\t}\n\tptr, n, err := sa.sockaddr()\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn connectEx(fd, ptr, n, sendBuf, sendDataLen, bytesSent, overlapped)\n}\n\nvar sendRecvMsgFunc struct {\n\tonce     sync.Once\n\tsendAddr uintptr\n\trecvAddr uintptr\n\terr      error\n}\n\nfunc loadWSASendRecvMsg() error {\n\tsendRecvMsgFunc.once.Do(func() {\n\t\tvar s Handle\n\t\ts, sendRecvMsgFunc.err = Socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)\n\t\tif sendRecvMsgFunc.err != nil {\n\t\t\treturn\n\t\t}\n\t\tdefer CloseHandle(s)\n\t\tvar n uint32\n\t\tsendRecvMsgFunc.err = WSAIoctl(s,\n\t\t\tSIO_GET_EXTENSION_FUNCTION_POINTER,\n\t\t\t(*byte)(unsafe.Pointer(&WSAID_WSARECVMSG)),\n\t\t\tuint32(unsafe.Sizeof(WSAID_WSARECVMSG)),\n\t\t\t(*byte)(unsafe.Pointer(&sendRecvMsgFunc.recvAddr)),\n\t\t\tuint32(unsafe.Sizeof(sendRecvMsgFunc.recvAddr)),\n\t\t\t&n, nil, 0)\n\t\tif sendRecvMsgFunc.err != nil {\n\t\t\treturn\n\t\t}\n\t\tsendRecvMsgFunc.err = WSAIoctl(s,\n\t\t\tSIO_GET_EXTENSION_FUNCTION_POINTER,\n\t\t\t(*byte)(unsafe.Pointer(&WSAID_WSASENDMSG)),\n\t\t\tuint32(unsafe.Sizeof(WSAID_WSASENDMSG)),\n\t\t\t(*byte)(unsafe.Pointer(&sendRecvMsgFunc.sendAddr)),\n\t\t\tuint32(unsafe.Sizeof(sendRecvMsgFunc.sendAddr)),\n\t\t\t&n, nil, 0)\n\t})\n\treturn sendRecvMsgFunc.err\n}\n\nfunc WSASendMsg(fd Handle, msg *WSAMsg, flags uint32, bytesSent *uint32, overlapped *Overlapped, croutine *byte) error {\n\terr := loadWSASendRecvMsg()\n\tif err != nil {\n\t\treturn err\n\t}\n\tr1, _, e1 := syscall.Syscall6(sendRecvMsgFunc.sendAddr, 6, uintptr(fd), uintptr(unsafe.Pointer(msg)), uintptr(flags), uintptr(unsafe.Pointer(bytesSent)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)))\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn err\n}\n\nfunc WSARecvMsg(fd Handle, msg *WSAMsg, bytesReceived *uint32, overlapped *Overlapped, croutine *byte) error {\n\terr := loadWSASendRecvMsg()\n\tif err != nil {\n\t\treturn err\n\t}\n\tr1, _, e1 := syscall.Syscall6(sendRecvMsgFunc.recvAddr, 5, uintptr(fd), uintptr(unsafe.Pointer(msg)), uintptr(unsafe.Pointer(bytesReceived)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)), 0)\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn err\n}\n\n// Invented structures to support what package os expects.\ntype Rusage struct {\n\tCreationTime Filetime\n\tExitTime     Filetime\n\tKernelTime   Filetime\n\tUserTime     Filetime\n}\n\ntype WaitStatus struct {\n\tExitCode uint32\n}\n\nfunc (w WaitStatus) Exited() bool { return true }\n\nfunc (w WaitStatus) ExitStatus() int { return int(w.ExitCode) }\n\nfunc (w WaitStatus) Signal() Signal { return -1 }\n\nfunc (w WaitStatus) CoreDump() bool { return false }\n\nfunc (w WaitStatus) Stopped() bool { return false }\n\nfunc (w WaitStatus) Continued() bool { return false }\n\nfunc (w WaitStatus) StopSignal() Signal { return -1 }\n\nfunc (w WaitStatus) Signaled() bool { return false }\n\nfunc (w WaitStatus) TrapCause() int { return -1 }\n\n// Timespec is an invented structure on Windows, but here for\n// consistency with the corresponding package for other operating systems.\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\nfunc TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }\n\nfunc NsecToTimespec(nsec int64) (ts Timespec) {\n\tts.Sec = nsec / 1e9\n\tts.Nsec = nsec % 1e9\n\treturn\n}\n\n// TODO(brainman): fix all needed for net\n\nfunc Accept(fd Handle) (nfd Handle, sa Sockaddr, err error) { return 0, nil, syscall.EWINDOWS }\n\nfunc Recvfrom(fd Handle, p []byte, flags int) (n int, from Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tl := int32(unsafe.Sizeof(rsa))\n\tn32, err := recvfrom(fd, p, int32(flags), &rsa, &l)\n\tn = int(n32)\n\tif err != nil {\n\t\treturn\n\t}\n\tfrom, err = rsa.Sockaddr()\n\treturn\n}\n\nfunc Sendto(fd Handle, p []byte, flags int, to Sockaddr) (err error) {\n\tptr, l, err := to.sockaddr()\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn sendto(fd, p, int32(flags), ptr, l)\n}\n\nfunc SetsockoptTimeval(fd Handle, level, opt int, tv *Timeval) (err error) { return syscall.EWINDOWS }\n\n// The Linger struct is wrong but we only noticed after Go 1.\n// sysLinger is the real system call structure.\n\n// BUG(brainman): The definition of Linger is not appropriate for direct use\n// with Setsockopt and Getsockopt.\n// Use SetsockoptLinger instead.\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype sysLinger struct {\n\tOnoff  uint16\n\tLinger uint16\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\nfunc GetsockoptInt(fd Handle, level, opt int) (int, error) {\n\tv := int32(0)\n\tl := int32(unsafe.Sizeof(v))\n\terr := Getsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(&v)), &l)\n\treturn int(v), err\n}\n\nfunc SetsockoptLinger(fd Handle, level, opt int, l *Linger) (err error) {\n\tsys := sysLinger{Onoff: uint16(l.Onoff), Linger: uint16(l.Linger)}\n\treturn Setsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(&sys)), int32(unsafe.Sizeof(sys)))\n}\n\nfunc SetsockoptInet4Addr(fd Handle, level, opt int, value [4]byte) (err error) {\n\treturn Setsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(&value[0])), 4)\n}\n\nfunc SetsockoptIPMreq(fd Handle, level, opt int, mreq *IPMreq) (err error) {\n\treturn Setsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(mreq)), int32(unsafe.Sizeof(*mreq)))\n}\n\nfunc SetsockoptIPv6Mreq(fd Handle, level, opt int, mreq *IPv6Mreq) (err error) {\n\treturn syscall.EWINDOWS\n}\n\nfunc EnumProcesses(processIds []uint32, bytesReturned *uint32) error {\n\t// EnumProcesses syscall expects the size parameter to be in bytes, but the code generated with mksyscall uses\n\t// the length of the processIds slice instead. Hence, this wrapper function is added to fix the discrepancy.\n\tvar p *uint32\n\tif len(processIds) > 0 {\n\t\tp = &processIds[0]\n\t}\n\tsize := uint32(len(processIds) * 4)\n\treturn enumProcesses(p, size, bytesReturned)\n}\n\nfunc Getpid() (pid int) { return int(GetCurrentProcessId()) }\n\nfunc FindFirstFile(name *uint16, data *Win32finddata) (handle Handle, err error) {\n\t// NOTE(rsc): The Win32finddata struct is wrong for the system call:\n\t// the two paths are each one uint16 short. Use the correct struct,\n\t// a win32finddata1, and then copy the results out.\n\t// There is no loss of expressivity here, because the final\n\t// uint16, if it is used, is supposed to be a NUL, and Go doesn't need that.\n\t// For Go 1.1, we might avoid the allocation of win32finddata1 here\n\t// by adding a final Bug [2]uint16 field to the struct and then\n\t// adjusting the fields in the result directly.\n\tvar data1 win32finddata1\n\thandle, err = findFirstFile1(name, &data1)\n\tif err == nil {\n\t\tcopyFindData(data, &data1)\n\t}\n\treturn\n}\n\nfunc FindNextFile(handle Handle, data *Win32finddata) (err error) {\n\tvar data1 win32finddata1\n\terr = findNextFile1(handle, &data1)\n\tif err == nil {\n\t\tcopyFindData(data, &data1)\n\t}\n\treturn\n}\n\nfunc getProcessEntry(pid int) (*ProcessEntry32, error) {\n\tsnapshot, err := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer CloseHandle(snapshot)\n\tvar procEntry ProcessEntry32\n\tprocEntry.Size = uint32(unsafe.Sizeof(procEntry))\n\tif err = Process32First(snapshot, &procEntry); err != nil {\n\t\treturn nil, err\n\t}\n\tfor {\n\t\tif procEntry.ProcessID == uint32(pid) {\n\t\t\treturn &procEntry, nil\n\t\t}\n\t\terr = Process32Next(snapshot, &procEntry)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n}\n\nfunc Getppid() (ppid int) {\n\tpe, err := getProcessEntry(Getpid())\n\tif err != nil {\n\t\treturn -1\n\t}\n\treturn int(pe.ParentProcessID)\n}\n\n// TODO(brainman): fix all needed for os\nfunc Fchdir(fd Handle) (err error)             { return syscall.EWINDOWS }\nfunc Link(oldpath, newpath string) (err error) { return syscall.EWINDOWS }\nfunc Symlink(path, link string) (err error)    { return syscall.EWINDOWS }\n\nfunc Fchmod(fd Handle, mode uint32) (err error)        { return syscall.EWINDOWS }\nfunc Chown(path string, uid int, gid int) (err error)  { return syscall.EWINDOWS }\nfunc Lchown(path string, uid int, gid int) (err error) { return syscall.EWINDOWS }\nfunc Fchown(fd Handle, uid int, gid int) (err error)   { return syscall.EWINDOWS }\n\nfunc Getuid() (uid int)                  { return -1 }\nfunc Geteuid() (euid int)                { return -1 }\nfunc Getgid() (gid int)                  { return -1 }\nfunc Getegid() (egid int)                { return -1 }\nfunc Getgroups() (gids []int, err error) { return nil, syscall.EWINDOWS }\n\ntype Signal int\n\nfunc (s Signal) Signal() {}\n\nfunc (s Signal) String() string {\n\tif 0 <= s && int(s) < len(signals) {\n\t\tstr := signals[s]\n\t\tif str != \"\" {\n\t\t\treturn str\n\t\t}\n\t}\n\treturn \"signal \" + itoa(int(s))\n}\n\nfunc LoadCreateSymbolicLink() error {\n\treturn procCreateSymbolicLinkW.Find()\n}\n\n// Readlink returns the destination of the named symbolic link.\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tfd, err := CreateFile(StringToUTF16Ptr(path), GENERIC_READ, 0, nil, OPEN_EXISTING,\n\t\tFILE_FLAG_OPEN_REPARSE_POINT|FILE_FLAG_BACKUP_SEMANTICS, 0)\n\tif err != nil {\n\t\treturn -1, err\n\t}\n\tdefer CloseHandle(fd)\n\n\trdbbuf := make([]byte, MAXIMUM_REPARSE_DATA_BUFFER_SIZE)\n\tvar bytesReturned uint32\n\terr = DeviceIoControl(fd, FSCTL_GET_REPARSE_POINT, nil, 0, &rdbbuf[0], uint32(len(rdbbuf)), &bytesReturned, nil)\n\tif err != nil {\n\t\treturn -1, err\n\t}\n\n\trdb := (*reparseDataBuffer)(unsafe.Pointer(&rdbbuf[0]))\n\tvar s string\n\tswitch rdb.ReparseTag {\n\tcase IO_REPARSE_TAG_SYMLINK:\n\t\tdata := (*symbolicLinkReparseBuffer)(unsafe.Pointer(&rdb.reparseBuffer))\n\t\tp := (*[0xffff]uint16)(unsafe.Pointer(&data.PathBuffer[0]))\n\t\ts = UTF16ToString(p[data.PrintNameOffset/2 : (data.PrintNameLength-data.PrintNameOffset)/2])\n\tcase IO_REPARSE_TAG_MOUNT_POINT:\n\t\tdata := (*mountPointReparseBuffer)(unsafe.Pointer(&rdb.reparseBuffer))\n\t\tp := (*[0xffff]uint16)(unsafe.Pointer(&data.PathBuffer[0]))\n\t\ts = UTF16ToString(p[data.PrintNameOffset/2 : (data.PrintNameLength-data.PrintNameOffset)/2])\n\tdefault:\n\t\t// the path is not a symlink or junction but another type of reparse\n\t\t// point\n\t\treturn -1, syscall.ENOENT\n\t}\n\tn = copy(buf, []byte(s))\n\n\treturn n, nil\n}\n\n// GUIDFromString parses a string in the form of\n// \"{XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}\" into a GUID.\nfunc GUIDFromString(str string) (GUID, error) {\n\tguid := GUID{}\n\tstr16, err := syscall.UTF16PtrFromString(str)\n\tif err != nil {\n\t\treturn guid, err\n\t}\n\terr = clsidFromString(str16, &guid)\n\tif err != nil {\n\t\treturn guid, err\n\t}\n\treturn guid, nil\n}\n\n// GenerateGUID creates a new random GUID.\nfunc GenerateGUID() (GUID, error) {\n\tguid := GUID{}\n\terr := coCreateGuid(&guid)\n\tif err != nil {\n\t\treturn guid, err\n\t}\n\treturn guid, nil\n}\n\n// String returns the canonical string form of the GUID,\n// in the form of \"{XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}\".\nfunc (guid GUID) String() string {\n\tvar str [100]uint16\n\tchars := stringFromGUID2(&guid, &str[0], int32(len(str)))\n\tif chars <= 1 {\n\t\treturn \"\"\n\t}\n\treturn string(utf16.Decode(str[:chars-1]))\n}\n\n// KnownFolderPath returns a well-known folder path for the current user, specified by one of\n// the FOLDERID_ constants, and chosen and optionally created based on a KF_ flag.\nfunc KnownFolderPath(folderID *KNOWNFOLDERID, flags uint32) (string, error) {\n\treturn Token(0).KnownFolderPath(folderID, flags)\n}\n\n// KnownFolderPath returns a well-known folder path for the user token, specified by one of\n// the FOLDERID_ constants, and chosen and optionally created based on a KF_ flag.\nfunc (t Token) KnownFolderPath(folderID *KNOWNFOLDERID, flags uint32) (string, error) {\n\tvar p *uint16\n\terr := shGetKnownFolderPath(folderID, flags, t, &p)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tdefer CoTaskMemFree(unsafe.Pointer(p))\n\treturn UTF16PtrToString(p), nil\n}\n\n// RtlGetVersion returns the version of the underlying operating system, ignoring\n// manifest semantics but is affected by the application compatibility layer.\nfunc RtlGetVersion() *OsVersionInfoEx {\n\tinfo := &OsVersionInfoEx{}\n\tinfo.osVersionInfoSize = uint32(unsafe.Sizeof(*info))\n\t// According to documentation, this function always succeeds.\n\t// The function doesn't even check the validity of the\n\t// osVersionInfoSize member. Disassembling ntdll.dll indicates\n\t// that the documentation is indeed correct about that.\n\t_ = rtlGetVersion(info)\n\treturn info\n}\n\n// RtlGetNtVersionNumbers returns the version of the underlying operating system,\n// ignoring manifest semantics and the application compatibility layer.\nfunc RtlGetNtVersionNumbers() (majorVersion, minorVersion, buildNumber uint32) {\n\trtlGetNtVersionNumbers(&majorVersion, &minorVersion, &buildNumber)\n\tbuildNumber &= 0xffff\n\treturn\n}\n\n// GetProcessPreferredUILanguages retrieves the process preferred UI languages.\nfunc GetProcessPreferredUILanguages(flags uint32) ([]string, error) {\n\treturn getUILanguages(flags, getProcessPreferredUILanguages)\n}\n\n// GetThreadPreferredUILanguages retrieves the thread preferred UI languages for the current thread.\nfunc GetThreadPreferredUILanguages(flags uint32) ([]string, error) {\n\treturn getUILanguages(flags, getThreadPreferredUILanguages)\n}\n\n// GetUserPreferredUILanguages retrieves information about the user preferred UI languages.\nfunc GetUserPreferredUILanguages(flags uint32) ([]string, error) {\n\treturn getUILanguages(flags, getUserPreferredUILanguages)\n}\n\n// GetSystemPreferredUILanguages retrieves the system preferred UI languages.\nfunc GetSystemPreferredUILanguages(flags uint32) ([]string, error) {\n\treturn getUILanguages(flags, getSystemPreferredUILanguages)\n}\n\nfunc getUILanguages(flags uint32, f func(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) error) ([]string, error) {\n\tsize := uint32(128)\n\tfor {\n\t\tvar numLanguages uint32\n\t\tbuf := make([]uint16, size)\n\t\terr := f(flags, &numLanguages, &buf[0], &size)\n\t\tif err == ERROR_INSUFFICIENT_BUFFER {\n\t\t\tcontinue\n\t\t}\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tbuf = buf[:size]\n\t\tif numLanguages == 0 || len(buf) == 0 { // GetProcessPreferredUILanguages may return numLanguages==0 with \"\\0\\0\"\n\t\t\treturn []string{}, nil\n\t\t}\n\t\tif buf[len(buf)-1] == 0 {\n\t\t\tbuf = buf[:len(buf)-1] // remove terminating null\n\t\t}\n\t\tlanguages := make([]string, 0, numLanguages)\n\t\tfrom := 0\n\t\tfor i, c := range buf {\n\t\t\tif c == 0 {\n\t\t\t\tlanguages = append(languages, string(utf16.Decode(buf[from:i])))\n\t\t\t\tfrom = i + 1\n\t\t\t}\n\t\t}\n\t\treturn languages, nil\n\t}\n}\n\nfunc SetConsoleCursorPosition(console Handle, position Coord) error {\n\treturn setConsoleCursorPosition(console, *((*uint32)(unsafe.Pointer(&position))))\n}\n\nfunc GetStartupInfo(startupInfo *StartupInfo) error {\n\tgetStartupInfo(startupInfo)\n\treturn nil\n}\n\nfunc (s NTStatus) Errno() syscall.Errno {\n\treturn rtlNtStatusToDosErrorNoTeb(s)\n}\n\nfunc langID(pri, sub uint16) uint32 { return uint32(sub)<<10 | uint32(pri) }\n\nfunc (s NTStatus) Error() string {\n\tb := make([]uint16, 300)\n\tn, err := FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_FROM_HMODULE|FORMAT_MESSAGE_ARGUMENT_ARRAY, modntdll.Handle(), uint32(s), langID(LANG_ENGLISH, SUBLANG_ENGLISH_US), b, nil)\n\tif err != nil {\n\t\treturn fmt.Sprintf(\"NTSTATUS 0x%08x\", uint32(s))\n\t}\n\t// trim terminating \\r and \\n\n\tfor ; n > 0 && (b[n-1] == '\\n' || b[n-1] == '\\r'); n-- {\n\t}\n\treturn string(utf16.Decode(b[:n]))\n}\n\n// NewNTUnicodeString returns a new NTUnicodeString structure for use with native\n// NT APIs that work over the NTUnicodeString type. Note that most Windows APIs\n// do not use NTUnicodeString, and instead UTF16PtrFromString should be used for\n// the more common *uint16 string type.\nfunc NewNTUnicodeString(s string) (*NTUnicodeString, error) {\n\ts16, err := UTF16FromString(s)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tn := uint16(len(s16) * 2)\n\treturn &NTUnicodeString{\n\t\tLength:        n - 2, // subtract 2 bytes for the NULL terminator\n\t\tMaximumLength: n,\n\t\tBuffer:        &s16[0],\n\t}, nil\n}\n\n// Slice returns a uint16 slice that aliases the data in the NTUnicodeString.\nfunc (s *NTUnicodeString) Slice() []uint16 {\n\t// Note: this rounds the length down, if it happens\n\t// to (incorrectly) be odd. Probably safer than rounding up.\n\treturn unsafe.Slice(s.Buffer, s.MaximumLength/2)[:s.Length/2]\n}\n\nfunc (s *NTUnicodeString) String() string {\n\treturn UTF16ToString(s.Slice())\n}\n\n// NewNTString returns a new NTString structure for use with native\n// NT APIs that work over the NTString type. Note that most Windows APIs\n// do not use NTString, and instead UTF16PtrFromString should be used for\n// the more common *uint16 string type.\nfunc NewNTString(s string) (*NTString, error) {\n\tvar nts NTString\n\ts8, err := BytePtrFromString(s)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tRtlInitString(&nts, s8)\n\treturn &nts, nil\n}\n\n// Slice returns a byte slice that aliases the data in the NTString.\nfunc (s *NTString) Slice() []byte {\n\tslice := unsafe.Slice(s.Buffer, s.MaximumLength)\n\treturn slice[:s.Length]\n}\n\nfunc (s *NTString) String() string {\n\treturn ByteSliceToString(s.Slice())\n}\n\n// FindResource resolves a resource of the given name and resource type.\nfunc FindResource(module Handle, name, resType ResourceIDOrString) (Handle, error) {\n\tvar namePtr, resTypePtr uintptr\n\tvar name16, resType16 *uint16\n\tvar err error\n\tresolvePtr := func(i interface{}, keep **uint16) (uintptr, error) {\n\t\tswitch v := i.(type) {\n\t\tcase string:\n\t\t\t*keep, err = UTF16PtrFromString(v)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\treturn uintptr(unsafe.Pointer(*keep)), nil\n\t\tcase ResourceID:\n\t\t\treturn uintptr(v), nil\n\t\t}\n\t\treturn 0, errorspkg.New(\"parameter must be a ResourceID or a string\")\n\t}\n\tnamePtr, err = resolvePtr(name, &name16)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tresTypePtr, err = resolvePtr(resType, &resType16)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tresInfo, err := findResource(module, namePtr, resTypePtr)\n\truntime.KeepAlive(name16)\n\truntime.KeepAlive(resType16)\n\treturn resInfo, err\n}\n\nfunc LoadResourceData(module, resInfo Handle) (data []byte, err error) {\n\tsize, err := SizeofResource(module, resInfo)\n\tif err != nil {\n\t\treturn\n\t}\n\tresData, err := LoadResource(module, resInfo)\n\tif err != nil {\n\t\treturn\n\t}\n\tptr, err := LockResource(resData)\n\tif err != nil {\n\t\treturn\n\t}\n\tdata = unsafe.Slice((*byte)(unsafe.Pointer(ptr)), size)\n\treturn\n}\n\n// PSAPI_WORKING_SET_EX_BLOCK contains extended working set information for a page.\ntype PSAPI_WORKING_SET_EX_BLOCK uint64\n\n// Valid returns the validity of this page.\n// If this bit is 1, the subsequent members are valid; otherwise they should be ignored.\nfunc (b PSAPI_WORKING_SET_EX_BLOCK) Valid() bool {\n\treturn (b & 1) == 1\n}\n\n// ShareCount is the number of processes that share this page. The maximum value of this member is 7.\nfunc (b PSAPI_WORKING_SET_EX_BLOCK) ShareCount() uint64 {\n\treturn b.intField(1, 3)\n}\n\n// Win32Protection is the memory protection attributes of the page. For a list of values, see\n// https://docs.microsoft.com/en-us/windows/win32/memory/memory-protection-constants\nfunc (b PSAPI_WORKING_SET_EX_BLOCK) Win32Protection() uint64 {\n\treturn b.intField(4, 11)\n}\n\n// Shared returns the shared status of this page.\n// If this bit is 1, the page can be shared.\nfunc (b PSAPI_WORKING_SET_EX_BLOCK) Shared() bool {\n\treturn (b & (1 << 15)) == 1\n}\n\n// Node is the NUMA node. The maximum value of this member is 63.\nfunc (b PSAPI_WORKING_SET_EX_BLOCK) Node() uint64 {\n\treturn b.intField(16, 6)\n}\n\n// Locked returns the locked status of this page.\n// If this bit is 1, the virtual page is locked in physical memory.\nfunc (b PSAPI_WORKING_SET_EX_BLOCK) Locked() bool {\n\treturn (b & (1 << 22)) == 1\n}\n\n// LargePage returns the large page status of this page.\n// If this bit is 1, the page is a large page.\nfunc (b PSAPI_WORKING_SET_EX_BLOCK) LargePage() bool {\n\treturn (b & (1 << 23)) == 1\n}\n\n// Bad returns the bad status of this page.\n// If this bit is 1, the page is has been reported as bad.\nfunc (b PSAPI_WORKING_SET_EX_BLOCK) Bad() bool {\n\treturn (b & (1 << 31)) == 1\n}\n\n// intField extracts an integer field in the PSAPI_WORKING_SET_EX_BLOCK union.\nfunc (b PSAPI_WORKING_SET_EX_BLOCK) intField(start, length int) uint64 {\n\tvar mask PSAPI_WORKING_SET_EX_BLOCK\n\tfor pos := start; pos < start+length; pos++ {\n\t\tmask |= (1 << pos)\n\t}\n\n\tmasked := b & mask\n\treturn uint64(masked >> start)\n}\n\n// PSAPI_WORKING_SET_EX_INFORMATION contains extended working set information for a process.\ntype PSAPI_WORKING_SET_EX_INFORMATION struct {\n\t// The virtual address.\n\tVirtualAddress Pointer\n\t// A PSAPI_WORKING_SET_EX_BLOCK union that indicates the attributes of the page at VirtualAddress.\n\tVirtualAttributes PSAPI_WORKING_SET_EX_BLOCK\n}\n\n// CreatePseudoConsole creates a windows pseudo console.\nfunc CreatePseudoConsole(size Coord, in Handle, out Handle, flags uint32, pconsole *Handle) error {\n\t// We need this wrapper to manually cast Coord to uint32. The autogenerated wrappers only\n\t// accept arguments that can be casted to uintptr, and Coord can't.\n\treturn createPseudoConsole(*((*uint32)(unsafe.Pointer(&size))), in, out, flags, pconsole)\n}\n\n// ResizePseudoConsole resizes the internal buffers of the pseudo console to the width and height specified in `size`.\nfunc ResizePseudoConsole(pconsole Handle, size Coord) error {\n\t// We need this wrapper to manually cast Coord to uint32. The autogenerated wrappers only\n\t// accept arguments that can be casted to uintptr, and Coord can't.\n\treturn resizePseudoConsole(pconsole, *((*uint32)(unsafe.Pointer(&size))))\n}\n\n// DCB constants. See https://learn.microsoft.com/en-us/windows/win32/api/winbase/ns-winbase-dcb.\nconst (\n\tCBR_110    = 110\n\tCBR_300    = 300\n\tCBR_600    = 600\n\tCBR_1200   = 1200\n\tCBR_2400   = 2400\n\tCBR_4800   = 4800\n\tCBR_9600   = 9600\n\tCBR_14400  = 14400\n\tCBR_19200  = 19200\n\tCBR_38400  = 38400\n\tCBR_57600  = 57600\n\tCBR_115200 = 115200\n\tCBR_128000 = 128000\n\tCBR_256000 = 256000\n\n\tDTR_CONTROL_DISABLE   = 0x00000000\n\tDTR_CONTROL_ENABLE    = 0x00000010\n\tDTR_CONTROL_HANDSHAKE = 0x00000020\n\n\tRTS_CONTROL_DISABLE   = 0x00000000\n\tRTS_CONTROL_ENABLE    = 0x00001000\n\tRTS_CONTROL_HANDSHAKE = 0x00002000\n\tRTS_CONTROL_TOGGLE    = 0x00003000\n\n\tNOPARITY    = 0\n\tODDPARITY   = 1\n\tEVENPARITY  = 2\n\tMARKPARITY  = 3\n\tSPACEPARITY = 4\n\n\tONESTOPBIT   = 0\n\tONE5STOPBITS = 1\n\tTWOSTOPBITS  = 2\n)\n\n// EscapeCommFunction constants. See https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-escapecommfunction.\nconst (\n\tSETXOFF  = 1\n\tSETXON   = 2\n\tSETRTS   = 3\n\tCLRRTS   = 4\n\tSETDTR   = 5\n\tCLRDTR   = 6\n\tSETBREAK = 8\n\tCLRBREAK = 9\n)\n\n// PurgeComm constants. See https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-purgecomm.\nconst (\n\tPURGE_TXABORT = 0x0001\n\tPURGE_RXABORT = 0x0002\n\tPURGE_TXCLEAR = 0x0004\n\tPURGE_RXCLEAR = 0x0008\n)\n\n// SetCommMask constants. See https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-setcommmask.\nconst (\n\tEV_RXCHAR  = 0x0001\n\tEV_RXFLAG  = 0x0002\n\tEV_TXEMPTY = 0x0004\n\tEV_CTS     = 0x0008\n\tEV_DSR     = 0x0010\n\tEV_RLSD    = 0x0020\n\tEV_BREAK   = 0x0040\n\tEV_ERR     = 0x0080\n\tEV_RING    = 0x0100\n)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/windows/types_windows.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage windows\n\nimport (\n\t\"net\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// NTStatus corresponds with NTSTATUS, error values returned by ntdll.dll and\n// other native functions.\ntype NTStatus uint32\n\nconst (\n\t// Invented values to support what package os expects.\n\tO_RDONLY   = 0x00000\n\tO_WRONLY   = 0x00001\n\tO_RDWR     = 0x00002\n\tO_CREAT    = 0x00040\n\tO_EXCL     = 0x00080\n\tO_NOCTTY   = 0x00100\n\tO_TRUNC    = 0x00200\n\tO_NONBLOCK = 0x00800\n\tO_APPEND   = 0x00400\n\tO_SYNC     = 0x01000\n\tO_ASYNC    = 0x02000\n\tO_CLOEXEC  = 0x80000\n)\n\nconst (\n\t// More invented values for signals\n\tSIGHUP  = Signal(0x1)\n\tSIGINT  = Signal(0x2)\n\tSIGQUIT = Signal(0x3)\n\tSIGILL  = Signal(0x4)\n\tSIGTRAP = Signal(0x5)\n\tSIGABRT = Signal(0x6)\n\tSIGBUS  = Signal(0x7)\n\tSIGFPE  = Signal(0x8)\n\tSIGKILL = Signal(0x9)\n\tSIGSEGV = Signal(0xb)\n\tSIGPIPE = Signal(0xd)\n\tSIGALRM = Signal(0xe)\n\tSIGTERM = Signal(0xf)\n)\n\nvar signals = [...]string{\n\t1:  \"hangup\",\n\t2:  \"interrupt\",\n\t3:  \"quit\",\n\t4:  \"illegal instruction\",\n\t5:  \"trace/breakpoint trap\",\n\t6:  \"aborted\",\n\t7:  \"bus error\",\n\t8:  \"floating point exception\",\n\t9:  \"killed\",\n\t10: \"user defined signal 1\",\n\t11: \"segmentation fault\",\n\t12: \"user defined signal 2\",\n\t13: \"broken pipe\",\n\t14: \"alarm clock\",\n\t15: \"terminated\",\n}\n\n// File flags for [os.OpenFile]. The O_ prefix is used to indicate\n// that these flags are specific to the OpenFile function.\nconst (\n\tO_FILE_FLAG_OPEN_NO_RECALL     = FILE_FLAG_OPEN_NO_RECALL\n\tO_FILE_FLAG_OPEN_REPARSE_POINT = FILE_FLAG_OPEN_REPARSE_POINT\n\tO_FILE_FLAG_SESSION_AWARE      = FILE_FLAG_SESSION_AWARE\n\tO_FILE_FLAG_POSIX_SEMANTICS    = FILE_FLAG_POSIX_SEMANTICS\n\tO_FILE_FLAG_BACKUP_SEMANTICS   = FILE_FLAG_BACKUP_SEMANTICS\n\tO_FILE_FLAG_DELETE_ON_CLOSE    = FILE_FLAG_DELETE_ON_CLOSE\n\tO_FILE_FLAG_SEQUENTIAL_SCAN    = FILE_FLAG_SEQUENTIAL_SCAN\n\tO_FILE_FLAG_RANDOM_ACCESS      = FILE_FLAG_RANDOM_ACCESS\n\tO_FILE_FLAG_NO_BUFFERING       = FILE_FLAG_NO_BUFFERING\n\tO_FILE_FLAG_OVERLAPPED         = FILE_FLAG_OVERLAPPED\n\tO_FILE_FLAG_WRITE_THROUGH      = FILE_FLAG_WRITE_THROUGH\n)\n\nconst (\n\tFILE_READ_DATA        = 0x00000001\n\tFILE_READ_ATTRIBUTES  = 0x00000080\n\tFILE_READ_EA          = 0x00000008\n\tFILE_WRITE_DATA       = 0x00000002\n\tFILE_WRITE_ATTRIBUTES = 0x00000100\n\tFILE_WRITE_EA         = 0x00000010\n\tFILE_APPEND_DATA      = 0x00000004\n\tFILE_EXECUTE          = 0x00000020\n\n\tFILE_GENERIC_READ    = STANDARD_RIGHTS_READ | FILE_READ_DATA | FILE_READ_ATTRIBUTES | FILE_READ_EA | SYNCHRONIZE\n\tFILE_GENERIC_WRITE   = STANDARD_RIGHTS_WRITE | FILE_WRITE_DATA | FILE_WRITE_ATTRIBUTES | FILE_WRITE_EA | FILE_APPEND_DATA | SYNCHRONIZE\n\tFILE_GENERIC_EXECUTE = STANDARD_RIGHTS_EXECUTE | FILE_READ_ATTRIBUTES | FILE_EXECUTE | SYNCHRONIZE\n\n\tFILE_LIST_DIRECTORY = 0x00000001\n\tFILE_TRAVERSE       = 0x00000020\n\n\tFILE_SHARE_READ   = 0x00000001\n\tFILE_SHARE_WRITE  = 0x00000002\n\tFILE_SHARE_DELETE = 0x00000004\n\n\tFILE_ATTRIBUTE_READONLY              = 0x00000001\n\tFILE_ATTRIBUTE_HIDDEN                = 0x00000002\n\tFILE_ATTRIBUTE_SYSTEM                = 0x00000004\n\tFILE_ATTRIBUTE_DIRECTORY             = 0x00000010\n\tFILE_ATTRIBUTE_ARCHIVE               = 0x00000020\n\tFILE_ATTRIBUTE_DEVICE                = 0x00000040\n\tFILE_ATTRIBUTE_NORMAL                = 0x00000080\n\tFILE_ATTRIBUTE_TEMPORARY             = 0x00000100\n\tFILE_ATTRIBUTE_SPARSE_FILE           = 0x00000200\n\tFILE_ATTRIBUTE_REPARSE_POINT         = 0x00000400\n\tFILE_ATTRIBUTE_COMPRESSED            = 0x00000800\n\tFILE_ATTRIBUTE_OFFLINE               = 0x00001000\n\tFILE_ATTRIBUTE_NOT_CONTENT_INDEXED   = 0x00002000\n\tFILE_ATTRIBUTE_ENCRYPTED             = 0x00004000\n\tFILE_ATTRIBUTE_INTEGRITY_STREAM      = 0x00008000\n\tFILE_ATTRIBUTE_VIRTUAL               = 0x00010000\n\tFILE_ATTRIBUTE_NO_SCRUB_DATA         = 0x00020000\n\tFILE_ATTRIBUTE_RECALL_ON_OPEN        = 0x00040000\n\tFILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS = 0x00400000\n\n\tINVALID_FILE_ATTRIBUTES = 0xffffffff\n\n\tCREATE_NEW        = 1\n\tCREATE_ALWAYS     = 2\n\tOPEN_EXISTING     = 3\n\tOPEN_ALWAYS       = 4\n\tTRUNCATE_EXISTING = 5\n\n\tFILE_FLAG_OPEN_REQUIRING_OPLOCK = 0x00040000\n\tFILE_FLAG_FIRST_PIPE_INSTANCE   = 0x00080000\n\tFILE_FLAG_OPEN_NO_RECALL        = 0x00100000\n\tFILE_FLAG_OPEN_REPARSE_POINT    = 0x00200000\n\tFILE_FLAG_SESSION_AWARE         = 0x00800000\n\tFILE_FLAG_POSIX_SEMANTICS       = 0x01000000\n\tFILE_FLAG_BACKUP_SEMANTICS      = 0x02000000\n\tFILE_FLAG_DELETE_ON_CLOSE       = 0x04000000\n\tFILE_FLAG_SEQUENTIAL_SCAN       = 0x08000000\n\tFILE_FLAG_RANDOM_ACCESS         = 0x10000000\n\tFILE_FLAG_NO_BUFFERING          = 0x20000000\n\tFILE_FLAG_OVERLAPPED            = 0x40000000\n\tFILE_FLAG_WRITE_THROUGH         = 0x80000000\n\n\tHANDLE_FLAG_INHERIT    = 0x00000001\n\tSTARTF_USESTDHANDLES   = 0x00000100\n\tSTARTF_USESHOWWINDOW   = 0x00000001\n\tDUPLICATE_CLOSE_SOURCE = 0x00000001\n\tDUPLICATE_SAME_ACCESS  = 0x00000002\n\n\tSTD_INPUT_HANDLE  = -10 & (1<<32 - 1)\n\tSTD_OUTPUT_HANDLE = -11 & (1<<32 - 1)\n\tSTD_ERROR_HANDLE  = -12 & (1<<32 - 1)\n\n\tFILE_BEGIN   = 0\n\tFILE_CURRENT = 1\n\tFILE_END     = 2\n\n\tLANG_ENGLISH       = 0x09\n\tSUBLANG_ENGLISH_US = 0x01\n\n\tFORMAT_MESSAGE_ALLOCATE_BUFFER = 256\n\tFORMAT_MESSAGE_IGNORE_INSERTS  = 512\n\tFORMAT_MESSAGE_FROM_STRING     = 1024\n\tFORMAT_MESSAGE_FROM_HMODULE    = 2048\n\tFORMAT_MESSAGE_FROM_SYSTEM     = 4096\n\tFORMAT_MESSAGE_ARGUMENT_ARRAY  = 8192\n\tFORMAT_MESSAGE_MAX_WIDTH_MASK  = 255\n\n\tMAX_PATH      = 260\n\tMAX_LONG_PATH = 32768\n\n\tMAX_MODULE_NAME32 = 255\n\n\tMAX_COMPUTERNAME_LENGTH = 15\n\n\tMAX_DHCPV6_DUID_LENGTH = 130\n\n\tMAX_DNS_SUFFIX_STRING_LENGTH = 256\n\n\tTIME_ZONE_ID_UNKNOWN  = 0\n\tTIME_ZONE_ID_STANDARD = 1\n\n\tTIME_ZONE_ID_DAYLIGHT = 2\n\tIGNORE                = 0\n\tINFINITE              = 0xffffffff\n\n\tWAIT_ABANDONED = 0x00000080\n\tWAIT_OBJECT_0  = 0x00000000\n\tWAIT_FAILED    = 0xFFFFFFFF\n\n\t// Access rights for process.\n\tPROCESS_ALL_ACCESS                = 0xFFFF\n\tPROCESS_CREATE_PROCESS            = 0x0080\n\tPROCESS_CREATE_THREAD             = 0x0002\n\tPROCESS_DUP_HANDLE                = 0x0040\n\tPROCESS_QUERY_INFORMATION         = 0x0400\n\tPROCESS_QUERY_LIMITED_INFORMATION = 0x1000\n\tPROCESS_SET_INFORMATION           = 0x0200\n\tPROCESS_SET_QUOTA                 = 0x0100\n\tPROCESS_SUSPEND_RESUME            = 0x0800\n\tPROCESS_TERMINATE                 = 0x0001\n\tPROCESS_VM_OPERATION              = 0x0008\n\tPROCESS_VM_READ                   = 0x0010\n\tPROCESS_VM_WRITE                  = 0x0020\n\n\t// Access rights for thread.\n\tTHREAD_DIRECT_IMPERSONATION      = 0x0200\n\tTHREAD_GET_CONTEXT               = 0x0008\n\tTHREAD_IMPERSONATE               = 0x0100\n\tTHREAD_QUERY_INFORMATION         = 0x0040\n\tTHREAD_QUERY_LIMITED_INFORMATION = 0x0800\n\tTHREAD_SET_CONTEXT               = 0x0010\n\tTHREAD_SET_INFORMATION           = 0x0020\n\tTHREAD_SET_LIMITED_INFORMATION   = 0x0400\n\tTHREAD_SET_THREAD_TOKEN          = 0x0080\n\tTHREAD_SUSPEND_RESUME            = 0x0002\n\tTHREAD_TERMINATE                 = 0x0001\n\n\tFILE_MAP_COPY    = 0x01\n\tFILE_MAP_WRITE   = 0x02\n\tFILE_MAP_READ    = 0x04\n\tFILE_MAP_EXECUTE = 0x20\n\n\tCTRL_C_EVENT        = 0\n\tCTRL_BREAK_EVENT    = 1\n\tCTRL_CLOSE_EVENT    = 2\n\tCTRL_LOGOFF_EVENT   = 5\n\tCTRL_SHUTDOWN_EVENT = 6\n\n\t// Windows reserves errors >= 1<<29 for application use.\n\tAPPLICATION_ERROR = 1 << 29\n)\n\nconst (\n\t// Process creation flags.\n\tCREATE_BREAKAWAY_FROM_JOB        = 0x01000000\n\tCREATE_DEFAULT_ERROR_MODE        = 0x04000000\n\tCREATE_NEW_CONSOLE               = 0x00000010\n\tCREATE_NEW_PROCESS_GROUP         = 0x00000200\n\tCREATE_NO_WINDOW                 = 0x08000000\n\tCREATE_PROTECTED_PROCESS         = 0x00040000\n\tCREATE_PRESERVE_CODE_AUTHZ_LEVEL = 0x02000000\n\tCREATE_SEPARATE_WOW_VDM          = 0x00000800\n\tCREATE_SHARED_WOW_VDM            = 0x00001000\n\tCREATE_SUSPENDED                 = 0x00000004\n\tCREATE_UNICODE_ENVIRONMENT       = 0x00000400\n\tDEBUG_ONLY_THIS_PROCESS          = 0x00000002\n\tDEBUG_PROCESS                    = 0x00000001\n\tDETACHED_PROCESS                 = 0x00000008\n\tEXTENDED_STARTUPINFO_PRESENT     = 0x00080000\n\tINHERIT_PARENT_AFFINITY          = 0x00010000\n)\n\nconst (\n\t// attributes for ProcThreadAttributeList\n\tPROC_THREAD_ATTRIBUTE_PARENT_PROCESS    = 0x00020000\n\tPROC_THREAD_ATTRIBUTE_HANDLE_LIST       = 0x00020002\n\tPROC_THREAD_ATTRIBUTE_GROUP_AFFINITY    = 0x00030003\n\tPROC_THREAD_ATTRIBUTE_PREFERRED_NODE    = 0x00020004\n\tPROC_THREAD_ATTRIBUTE_IDEAL_PROCESSOR   = 0x00030005\n\tPROC_THREAD_ATTRIBUTE_MITIGATION_POLICY = 0x00020007\n\tPROC_THREAD_ATTRIBUTE_UMS_THREAD        = 0x00030006\n\tPROC_THREAD_ATTRIBUTE_PROTECTION_LEVEL  = 0x0002000b\n\tPROC_THREAD_ATTRIBUTE_PSEUDOCONSOLE     = 0x00020016\n)\n\nconst (\n\t// flags for CreateToolhelp32Snapshot\n\tTH32CS_SNAPHEAPLIST = 0x01\n\tTH32CS_SNAPPROCESS  = 0x02\n\tTH32CS_SNAPTHREAD   = 0x04\n\tTH32CS_SNAPMODULE   = 0x08\n\tTH32CS_SNAPMODULE32 = 0x10\n\tTH32CS_SNAPALL      = TH32CS_SNAPHEAPLIST | TH32CS_SNAPMODULE | TH32CS_SNAPPROCESS | TH32CS_SNAPTHREAD\n\tTH32CS_INHERIT      = 0x80000000\n)\n\nconst (\n\t// flags for EnumProcessModulesEx\n\tLIST_MODULES_32BIT   = 0x01\n\tLIST_MODULES_64BIT   = 0x02\n\tLIST_MODULES_ALL     = 0x03\n\tLIST_MODULES_DEFAULT = 0x00\n)\n\nconst (\n\t// filters for ReadDirectoryChangesW and FindFirstChangeNotificationW\n\tFILE_NOTIFY_CHANGE_FILE_NAME   = 0x001\n\tFILE_NOTIFY_CHANGE_DIR_NAME    = 0x002\n\tFILE_NOTIFY_CHANGE_ATTRIBUTES  = 0x004\n\tFILE_NOTIFY_CHANGE_SIZE        = 0x008\n\tFILE_NOTIFY_CHANGE_LAST_WRITE  = 0x010\n\tFILE_NOTIFY_CHANGE_LAST_ACCESS = 0x020\n\tFILE_NOTIFY_CHANGE_CREATION    = 0x040\n\tFILE_NOTIFY_CHANGE_SECURITY    = 0x100\n)\n\nconst (\n\t// do not reorder\n\tFILE_ACTION_ADDED = iota + 1\n\tFILE_ACTION_REMOVED\n\tFILE_ACTION_MODIFIED\n\tFILE_ACTION_RENAMED_OLD_NAME\n\tFILE_ACTION_RENAMED_NEW_NAME\n)\n\nconst (\n\t// wincrypt.h\n\t/* certenrolld_begin -- PROV_RSA_*/\n\tPROV_RSA_FULL      = 1\n\tPROV_RSA_SIG       = 2\n\tPROV_DSS           = 3\n\tPROV_FORTEZZA      = 4\n\tPROV_MS_EXCHANGE   = 5\n\tPROV_SSL           = 6\n\tPROV_RSA_SCHANNEL  = 12\n\tPROV_DSS_DH        = 13\n\tPROV_EC_ECDSA_SIG  = 14\n\tPROV_EC_ECNRA_SIG  = 15\n\tPROV_EC_ECDSA_FULL = 16\n\tPROV_EC_ECNRA_FULL = 17\n\tPROV_DH_SCHANNEL   = 18\n\tPROV_SPYRUS_LYNKS  = 20\n\tPROV_RNG           = 21\n\tPROV_INTEL_SEC     = 22\n\tPROV_REPLACE_OWF   = 23\n\tPROV_RSA_AES       = 24\n\n\t/* dwFlags definitions for CryptAcquireContext */\n\tCRYPT_VERIFYCONTEXT              = 0xF0000000\n\tCRYPT_NEWKEYSET                  = 0x00000008\n\tCRYPT_DELETEKEYSET               = 0x00000010\n\tCRYPT_MACHINE_KEYSET             = 0x00000020\n\tCRYPT_SILENT                     = 0x00000040\n\tCRYPT_DEFAULT_CONTAINER_OPTIONAL = 0x00000080\n\n\t/* Flags for PFXImportCertStore */\n\tCRYPT_EXPORTABLE                   = 0x00000001\n\tCRYPT_USER_PROTECTED               = 0x00000002\n\tCRYPT_USER_KEYSET                  = 0x00001000\n\tPKCS12_PREFER_CNG_KSP              = 0x00000100\n\tPKCS12_ALWAYS_CNG_KSP              = 0x00000200\n\tPKCS12_ALLOW_OVERWRITE_KEY         = 0x00004000\n\tPKCS12_NO_PERSIST_KEY              = 0x00008000\n\tPKCS12_INCLUDE_EXTENDED_PROPERTIES = 0x00000010\n\n\t/* Flags for CryptAcquireCertificatePrivateKey */\n\tCRYPT_ACQUIRE_CACHE_FLAG             = 0x00000001\n\tCRYPT_ACQUIRE_USE_PROV_INFO_FLAG     = 0x00000002\n\tCRYPT_ACQUIRE_COMPARE_KEY_FLAG       = 0x00000004\n\tCRYPT_ACQUIRE_NO_HEALING             = 0x00000008\n\tCRYPT_ACQUIRE_SILENT_FLAG            = 0x00000040\n\tCRYPT_ACQUIRE_WINDOW_HANDLE_FLAG     = 0x00000080\n\tCRYPT_ACQUIRE_NCRYPT_KEY_FLAGS_MASK  = 0x00070000\n\tCRYPT_ACQUIRE_ALLOW_NCRYPT_KEY_FLAG  = 0x00010000\n\tCRYPT_ACQUIRE_PREFER_NCRYPT_KEY_FLAG = 0x00020000\n\tCRYPT_ACQUIRE_ONLY_NCRYPT_KEY_FLAG   = 0x00040000\n\n\t/* pdwKeySpec for CryptAcquireCertificatePrivateKey */\n\tAT_KEYEXCHANGE       = 1\n\tAT_SIGNATURE         = 2\n\tCERT_NCRYPT_KEY_SPEC = 0xFFFFFFFF\n\n\t/* Default usage match type is AND with value zero */\n\tUSAGE_MATCH_TYPE_AND = 0\n\tUSAGE_MATCH_TYPE_OR  = 1\n\n\t/* msgAndCertEncodingType values for CertOpenStore function */\n\tX509_ASN_ENCODING   = 0x00000001\n\tPKCS_7_ASN_ENCODING = 0x00010000\n\n\t/* storeProvider values for CertOpenStore function */\n\tCERT_STORE_PROV_MSG               = 1\n\tCERT_STORE_PROV_MEMORY            = 2\n\tCERT_STORE_PROV_FILE              = 3\n\tCERT_STORE_PROV_REG               = 4\n\tCERT_STORE_PROV_PKCS7             = 5\n\tCERT_STORE_PROV_SERIALIZED        = 6\n\tCERT_STORE_PROV_FILENAME_A        = 7\n\tCERT_STORE_PROV_FILENAME_W        = 8\n\tCERT_STORE_PROV_FILENAME          = CERT_STORE_PROV_FILENAME_W\n\tCERT_STORE_PROV_SYSTEM_A          = 9\n\tCERT_STORE_PROV_SYSTEM_W          = 10\n\tCERT_STORE_PROV_SYSTEM            = CERT_STORE_PROV_SYSTEM_W\n\tCERT_STORE_PROV_COLLECTION        = 11\n\tCERT_STORE_PROV_SYSTEM_REGISTRY_A = 12\n\tCERT_STORE_PROV_SYSTEM_REGISTRY_W = 13\n\tCERT_STORE_PROV_SYSTEM_REGISTRY   = CERT_STORE_PROV_SYSTEM_REGISTRY_W\n\tCERT_STORE_PROV_PHYSICAL_W        = 14\n\tCERT_STORE_PROV_PHYSICAL          = CERT_STORE_PROV_PHYSICAL_W\n\tCERT_STORE_PROV_SMART_CARD_W      = 15\n\tCERT_STORE_PROV_SMART_CARD        = CERT_STORE_PROV_SMART_CARD_W\n\tCERT_STORE_PROV_LDAP_W            = 16\n\tCERT_STORE_PROV_LDAP              = CERT_STORE_PROV_LDAP_W\n\tCERT_STORE_PROV_PKCS12            = 17\n\n\t/* store characteristics (low WORD of flag) for CertOpenStore function */\n\tCERT_STORE_NO_CRYPT_RELEASE_FLAG            = 0x00000001\n\tCERT_STORE_SET_LOCALIZED_NAME_FLAG          = 0x00000002\n\tCERT_STORE_DEFER_CLOSE_UNTIL_LAST_FREE_FLAG = 0x00000004\n\tCERT_STORE_DELETE_FLAG                      = 0x00000010\n\tCERT_STORE_UNSAFE_PHYSICAL_FLAG             = 0x00000020\n\tCERT_STORE_SHARE_STORE_FLAG                 = 0x00000040\n\tCERT_STORE_SHARE_CONTEXT_FLAG               = 0x00000080\n\tCERT_STORE_MANIFOLD_FLAG                    = 0x00000100\n\tCERT_STORE_ENUM_ARCHIVED_FLAG               = 0x00000200\n\tCERT_STORE_UPDATE_KEYID_FLAG                = 0x00000400\n\tCERT_STORE_BACKUP_RESTORE_FLAG              = 0x00000800\n\tCERT_STORE_MAXIMUM_ALLOWED_FLAG             = 0x00001000\n\tCERT_STORE_CREATE_NEW_FLAG                  = 0x00002000\n\tCERT_STORE_OPEN_EXISTING_FLAG               = 0x00004000\n\tCERT_STORE_READONLY_FLAG                    = 0x00008000\n\n\t/* store locations (high WORD of flag) for CertOpenStore function */\n\tCERT_SYSTEM_STORE_CURRENT_USER               = 0x00010000\n\tCERT_SYSTEM_STORE_LOCAL_MACHINE              = 0x00020000\n\tCERT_SYSTEM_STORE_CURRENT_SERVICE            = 0x00040000\n\tCERT_SYSTEM_STORE_SERVICES                   = 0x00050000\n\tCERT_SYSTEM_STORE_USERS                      = 0x00060000\n\tCERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY  = 0x00070000\n\tCERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY = 0x00080000\n\tCERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE   = 0x00090000\n\tCERT_SYSTEM_STORE_UNPROTECTED_FLAG           = 0x40000000\n\tCERT_SYSTEM_STORE_RELOCATE_FLAG              = 0x80000000\n\n\t/* Miscellaneous high-WORD flags for CertOpenStore function */\n\tCERT_REGISTRY_STORE_REMOTE_FLAG      = 0x00010000\n\tCERT_REGISTRY_STORE_SERIALIZED_FLAG  = 0x00020000\n\tCERT_REGISTRY_STORE_ROAMING_FLAG     = 0x00040000\n\tCERT_REGISTRY_STORE_MY_IE_DIRTY_FLAG = 0x00080000\n\tCERT_REGISTRY_STORE_LM_GPT_FLAG      = 0x01000000\n\tCERT_REGISTRY_STORE_CLIENT_GPT_FLAG  = 0x80000000\n\tCERT_FILE_STORE_COMMIT_ENABLE_FLAG   = 0x00010000\n\tCERT_LDAP_STORE_SIGN_FLAG            = 0x00010000\n\tCERT_LDAP_STORE_AREC_EXCLUSIVE_FLAG  = 0x00020000\n\tCERT_LDAP_STORE_OPENED_FLAG          = 0x00040000\n\tCERT_LDAP_STORE_UNBIND_FLAG          = 0x00080000\n\n\t/* addDisposition values for CertAddCertificateContextToStore function */\n\tCERT_STORE_ADD_NEW                                 = 1\n\tCERT_STORE_ADD_USE_EXISTING                        = 2\n\tCERT_STORE_ADD_REPLACE_EXISTING                    = 3\n\tCERT_STORE_ADD_ALWAYS                              = 4\n\tCERT_STORE_ADD_REPLACE_EXISTING_INHERIT_PROPERTIES = 5\n\tCERT_STORE_ADD_NEWER                               = 6\n\tCERT_STORE_ADD_NEWER_INHERIT_PROPERTIES            = 7\n\n\t/* ErrorStatus values for CertTrustStatus struct */\n\tCERT_TRUST_NO_ERROR                          = 0x00000000\n\tCERT_TRUST_IS_NOT_TIME_VALID                 = 0x00000001\n\tCERT_TRUST_IS_REVOKED                        = 0x00000004\n\tCERT_TRUST_IS_NOT_SIGNATURE_VALID            = 0x00000008\n\tCERT_TRUST_IS_NOT_VALID_FOR_USAGE            = 0x00000010\n\tCERT_TRUST_IS_UNTRUSTED_ROOT                 = 0x00000020\n\tCERT_TRUST_REVOCATION_STATUS_UNKNOWN         = 0x00000040\n\tCERT_TRUST_IS_CYCLIC                         = 0x00000080\n\tCERT_TRUST_INVALID_EXTENSION                 = 0x00000100\n\tCERT_TRUST_INVALID_POLICY_CONSTRAINTS        = 0x00000200\n\tCERT_TRUST_INVALID_BASIC_CONSTRAINTS         = 0x00000400\n\tCERT_TRUST_INVALID_NAME_CONSTRAINTS          = 0x00000800\n\tCERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT = 0x00001000\n\tCERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT   = 0x00002000\n\tCERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT = 0x00004000\n\tCERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT      = 0x00008000\n\tCERT_TRUST_IS_PARTIAL_CHAIN                  = 0x00010000\n\tCERT_TRUST_CTL_IS_NOT_TIME_VALID             = 0x00020000\n\tCERT_TRUST_CTL_IS_NOT_SIGNATURE_VALID        = 0x00040000\n\tCERT_TRUST_CTL_IS_NOT_VALID_FOR_USAGE        = 0x00080000\n\tCERT_TRUST_HAS_WEAK_SIGNATURE                = 0x00100000\n\tCERT_TRUST_IS_OFFLINE_REVOCATION             = 0x01000000\n\tCERT_TRUST_NO_ISSUANCE_CHAIN_POLICY          = 0x02000000\n\tCERT_TRUST_IS_EXPLICIT_DISTRUST              = 0x04000000\n\tCERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT    = 0x08000000\n\n\t/* InfoStatus values for CertTrustStatus struct */\n\tCERT_TRUST_HAS_EXACT_MATCH_ISSUER        = 0x00000001\n\tCERT_TRUST_HAS_KEY_MATCH_ISSUER          = 0x00000002\n\tCERT_TRUST_HAS_NAME_MATCH_ISSUER         = 0x00000004\n\tCERT_TRUST_IS_SELF_SIGNED                = 0x00000008\n\tCERT_TRUST_HAS_PREFERRED_ISSUER          = 0x00000100\n\tCERT_TRUST_HAS_ISSUANCE_CHAIN_POLICY     = 0x00000400\n\tCERT_TRUST_HAS_VALID_NAME_CONSTRAINTS    = 0x00000400\n\tCERT_TRUST_IS_PEER_TRUSTED               = 0x00000800\n\tCERT_TRUST_HAS_CRL_VALIDITY_EXTENDED     = 0x00001000\n\tCERT_TRUST_IS_FROM_EXCLUSIVE_TRUST_STORE = 0x00002000\n\tCERT_TRUST_IS_CA_TRUSTED                 = 0x00004000\n\tCERT_TRUST_IS_COMPLEX_CHAIN              = 0x00010000\n\n\t/* Certificate Information Flags */\n\tCERT_INFO_VERSION_FLAG                 = 1\n\tCERT_INFO_SERIAL_NUMBER_FLAG           = 2\n\tCERT_INFO_SIGNATURE_ALGORITHM_FLAG     = 3\n\tCERT_INFO_ISSUER_FLAG                  = 4\n\tCERT_INFO_NOT_BEFORE_FLAG              = 5\n\tCERT_INFO_NOT_AFTER_FLAG               = 6\n\tCERT_INFO_SUBJECT_FLAG                 = 7\n\tCERT_INFO_SUBJECT_PUBLIC_KEY_INFO_FLAG = 8\n\tCERT_INFO_ISSUER_UNIQUE_ID_FLAG        = 9\n\tCERT_INFO_SUBJECT_UNIQUE_ID_FLAG       = 10\n\tCERT_INFO_EXTENSION_FLAG               = 11\n\n\t/* dwFindType for CertFindCertificateInStore  */\n\tCERT_COMPARE_MASK                     = 0xFFFF\n\tCERT_COMPARE_SHIFT                    = 16\n\tCERT_COMPARE_ANY                      = 0\n\tCERT_COMPARE_SHA1_HASH                = 1\n\tCERT_COMPARE_NAME                     = 2\n\tCERT_COMPARE_ATTR                     = 3\n\tCERT_COMPARE_MD5_HASH                 = 4\n\tCERT_COMPARE_PROPERTY                 = 5\n\tCERT_COMPARE_PUBLIC_KEY               = 6\n\tCERT_COMPARE_HASH                     = CERT_COMPARE_SHA1_HASH\n\tCERT_COMPARE_NAME_STR_A               = 7\n\tCERT_COMPARE_NAME_STR_W               = 8\n\tCERT_COMPARE_KEY_SPEC                 = 9\n\tCERT_COMPARE_ENHKEY_USAGE             = 10\n\tCERT_COMPARE_CTL_USAGE                = CERT_COMPARE_ENHKEY_USAGE\n\tCERT_COMPARE_SUBJECT_CERT             = 11\n\tCERT_COMPARE_ISSUER_OF                = 12\n\tCERT_COMPARE_EXISTING                 = 13\n\tCERT_COMPARE_SIGNATURE_HASH           = 14\n\tCERT_COMPARE_KEY_IDENTIFIER           = 15\n\tCERT_COMPARE_CERT_ID                  = 16\n\tCERT_COMPARE_CROSS_CERT_DIST_POINTS   = 17\n\tCERT_COMPARE_PUBKEY_MD5_HASH          = 18\n\tCERT_COMPARE_SUBJECT_INFO_ACCESS      = 19\n\tCERT_COMPARE_HASH_STR                 = 20\n\tCERT_COMPARE_HAS_PRIVATE_KEY          = 21\n\tCERT_FIND_ANY                         = (CERT_COMPARE_ANY << CERT_COMPARE_SHIFT)\n\tCERT_FIND_SHA1_HASH                   = (CERT_COMPARE_SHA1_HASH << CERT_COMPARE_SHIFT)\n\tCERT_FIND_MD5_HASH                    = (CERT_COMPARE_MD5_HASH << CERT_COMPARE_SHIFT)\n\tCERT_FIND_SIGNATURE_HASH              = (CERT_COMPARE_SIGNATURE_HASH << CERT_COMPARE_SHIFT)\n\tCERT_FIND_KEY_IDENTIFIER              = (CERT_COMPARE_KEY_IDENTIFIER << CERT_COMPARE_SHIFT)\n\tCERT_FIND_HASH                        = CERT_FIND_SHA1_HASH\n\tCERT_FIND_PROPERTY                    = (CERT_COMPARE_PROPERTY << CERT_COMPARE_SHIFT)\n\tCERT_FIND_PUBLIC_KEY                  = (CERT_COMPARE_PUBLIC_KEY << CERT_COMPARE_SHIFT)\n\tCERT_FIND_SUBJECT_NAME                = (CERT_COMPARE_NAME<<CERT_COMPARE_SHIFT | CERT_INFO_SUBJECT_FLAG)\n\tCERT_FIND_SUBJECT_ATTR                = (CERT_COMPARE_ATTR<<CERT_COMPARE_SHIFT | CERT_INFO_SUBJECT_FLAG)\n\tCERT_FIND_ISSUER_NAME                 = (CERT_COMPARE_NAME<<CERT_COMPARE_SHIFT | CERT_INFO_ISSUER_FLAG)\n\tCERT_FIND_ISSUER_ATTR                 = (CERT_COMPARE_ATTR<<CERT_COMPARE_SHIFT | CERT_INFO_ISSUER_FLAG)\n\tCERT_FIND_SUBJECT_STR_A               = (CERT_COMPARE_NAME_STR_A<<CERT_COMPARE_SHIFT | CERT_INFO_SUBJECT_FLAG)\n\tCERT_FIND_SUBJECT_STR_W               = (CERT_COMPARE_NAME_STR_W<<CERT_COMPARE_SHIFT | CERT_INFO_SUBJECT_FLAG)\n\tCERT_FIND_SUBJECT_STR                 = CERT_FIND_SUBJECT_STR_W\n\tCERT_FIND_ISSUER_STR_A                = (CERT_COMPARE_NAME_STR_A<<CERT_COMPARE_SHIFT | CERT_INFO_ISSUER_FLAG)\n\tCERT_FIND_ISSUER_STR_W                = (CERT_COMPARE_NAME_STR_W<<CERT_COMPARE_SHIFT | CERT_INFO_ISSUER_FLAG)\n\tCERT_FIND_ISSUER_STR                  = CERT_FIND_ISSUER_STR_W\n\tCERT_FIND_KEY_SPEC                    = (CERT_COMPARE_KEY_SPEC << CERT_COMPARE_SHIFT)\n\tCERT_FIND_ENHKEY_USAGE                = (CERT_COMPARE_ENHKEY_USAGE << CERT_COMPARE_SHIFT)\n\tCERT_FIND_CTL_USAGE                   = CERT_FIND_ENHKEY_USAGE\n\tCERT_FIND_SUBJECT_CERT                = (CERT_COMPARE_SUBJECT_CERT << CERT_COMPARE_SHIFT)\n\tCERT_FIND_ISSUER_OF                   = (CERT_COMPARE_ISSUER_OF << CERT_COMPARE_SHIFT)\n\tCERT_FIND_EXISTING                    = (CERT_COMPARE_EXISTING << CERT_COMPARE_SHIFT)\n\tCERT_FIND_CERT_ID                     = (CERT_COMPARE_CERT_ID << CERT_COMPARE_SHIFT)\n\tCERT_FIND_CROSS_CERT_DIST_POINTS      = (CERT_COMPARE_CROSS_CERT_DIST_POINTS << CERT_COMPARE_SHIFT)\n\tCERT_FIND_PUBKEY_MD5_HASH             = (CERT_COMPARE_PUBKEY_MD5_HASH << CERT_COMPARE_SHIFT)\n\tCERT_FIND_SUBJECT_INFO_ACCESS         = (CERT_COMPARE_SUBJECT_INFO_ACCESS << CERT_COMPARE_SHIFT)\n\tCERT_FIND_HASH_STR                    = (CERT_COMPARE_HASH_STR << CERT_COMPARE_SHIFT)\n\tCERT_FIND_HAS_PRIVATE_KEY             = (CERT_COMPARE_HAS_PRIVATE_KEY << CERT_COMPARE_SHIFT)\n\tCERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG  = 0x1\n\tCERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG  = 0x2\n\tCERT_FIND_PROP_ONLY_ENHKEY_USAGE_FLAG = 0x4\n\tCERT_FIND_NO_ENHKEY_USAGE_FLAG        = 0x8\n\tCERT_FIND_OR_ENHKEY_USAGE_FLAG        = 0x10\n\tCERT_FIND_VALID_ENHKEY_USAGE_FLAG     = 0x20\n\tCERT_FIND_OPTIONAL_CTL_USAGE_FLAG     = CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG\n\tCERT_FIND_EXT_ONLY_CTL_USAGE_FLAG     = CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG\n\tCERT_FIND_PROP_ONLY_CTL_USAGE_FLAG    = CERT_FIND_PROP_ONLY_ENHKEY_USAGE_FLAG\n\tCERT_FIND_NO_CTL_USAGE_FLAG           = CERT_FIND_NO_ENHKEY_USAGE_FLAG\n\tCERT_FIND_OR_CTL_USAGE_FLAG           = CERT_FIND_OR_ENHKEY_USAGE_FLAG\n\tCERT_FIND_VALID_CTL_USAGE_FLAG        = CERT_FIND_VALID_ENHKEY_USAGE_FLAG\n\n\t/* policyOID values for CertVerifyCertificateChainPolicy function */\n\tCERT_CHAIN_POLICY_BASE              = 1\n\tCERT_CHAIN_POLICY_AUTHENTICODE      = 2\n\tCERT_CHAIN_POLICY_AUTHENTICODE_TS   = 3\n\tCERT_CHAIN_POLICY_SSL               = 4\n\tCERT_CHAIN_POLICY_BASIC_CONSTRAINTS = 5\n\tCERT_CHAIN_POLICY_NT_AUTH           = 6\n\tCERT_CHAIN_POLICY_MICROSOFT_ROOT    = 7\n\tCERT_CHAIN_POLICY_EV                = 8\n\tCERT_CHAIN_POLICY_SSL_F12           = 9\n\n\t/* flag for dwFindType CertFindChainInStore  */\n\tCERT_CHAIN_FIND_BY_ISSUER = 1\n\n\t/* dwFindFlags for CertFindChainInStore when dwFindType == CERT_CHAIN_FIND_BY_ISSUER */\n\tCERT_CHAIN_FIND_BY_ISSUER_COMPARE_KEY_FLAG    = 0x0001\n\tCERT_CHAIN_FIND_BY_ISSUER_COMPLEX_CHAIN_FLAG  = 0x0002\n\tCERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_URL_FLAG = 0x0004\n\tCERT_CHAIN_FIND_BY_ISSUER_LOCAL_MACHINE_FLAG  = 0x0008\n\tCERT_CHAIN_FIND_BY_ISSUER_NO_KEY_FLAG         = 0x4000\n\tCERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_FLAG     = 0x8000\n\n\t/* Certificate Store close flags */\n\tCERT_CLOSE_STORE_FORCE_FLAG = 0x00000001\n\tCERT_CLOSE_STORE_CHECK_FLAG = 0x00000002\n\n\t/* CryptQueryObject object type */\n\tCERT_QUERY_OBJECT_FILE = 1\n\tCERT_QUERY_OBJECT_BLOB = 2\n\n\t/* CryptQueryObject content type flags */\n\tCERT_QUERY_CONTENT_CERT                    = 1\n\tCERT_QUERY_CONTENT_CTL                     = 2\n\tCERT_QUERY_CONTENT_CRL                     = 3\n\tCERT_QUERY_CONTENT_SERIALIZED_STORE        = 4\n\tCERT_QUERY_CONTENT_SERIALIZED_CERT         = 5\n\tCERT_QUERY_CONTENT_SERIALIZED_CTL          = 6\n\tCERT_QUERY_CONTENT_SERIALIZED_CRL          = 7\n\tCERT_QUERY_CONTENT_PKCS7_SIGNED            = 8\n\tCERT_QUERY_CONTENT_PKCS7_UNSIGNED          = 9\n\tCERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED      = 10\n\tCERT_QUERY_CONTENT_PKCS10                  = 11\n\tCERT_QUERY_CONTENT_PFX                     = 12\n\tCERT_QUERY_CONTENT_CERT_PAIR               = 13\n\tCERT_QUERY_CONTENT_PFX_AND_LOAD            = 14\n\tCERT_QUERY_CONTENT_FLAG_CERT               = (1 << CERT_QUERY_CONTENT_CERT)\n\tCERT_QUERY_CONTENT_FLAG_CTL                = (1 << CERT_QUERY_CONTENT_CTL)\n\tCERT_QUERY_CONTENT_FLAG_CRL                = (1 << CERT_QUERY_CONTENT_CRL)\n\tCERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE   = (1 << CERT_QUERY_CONTENT_SERIALIZED_STORE)\n\tCERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT    = (1 << CERT_QUERY_CONTENT_SERIALIZED_CERT)\n\tCERT_QUERY_CONTENT_FLAG_SERIALIZED_CTL     = (1 << CERT_QUERY_CONTENT_SERIALIZED_CTL)\n\tCERT_QUERY_CONTENT_FLAG_SERIALIZED_CRL     = (1 << CERT_QUERY_CONTENT_SERIALIZED_CRL)\n\tCERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED       = (1 << CERT_QUERY_CONTENT_PKCS7_SIGNED)\n\tCERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED     = (1 << CERT_QUERY_CONTENT_PKCS7_UNSIGNED)\n\tCERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED = (1 << CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED)\n\tCERT_QUERY_CONTENT_FLAG_PKCS10             = (1 << CERT_QUERY_CONTENT_PKCS10)\n\tCERT_QUERY_CONTENT_FLAG_PFX                = (1 << CERT_QUERY_CONTENT_PFX)\n\tCERT_QUERY_CONTENT_FLAG_CERT_PAIR          = (1 << CERT_QUERY_CONTENT_CERT_PAIR)\n\tCERT_QUERY_CONTENT_FLAG_PFX_AND_LOAD       = (1 << CERT_QUERY_CONTENT_PFX_AND_LOAD)\n\tCERT_QUERY_CONTENT_FLAG_ALL                = (CERT_QUERY_CONTENT_FLAG_CERT | CERT_QUERY_CONTENT_FLAG_CTL | CERT_QUERY_CONTENT_FLAG_CRL | CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE | CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT | CERT_QUERY_CONTENT_FLAG_SERIALIZED_CTL | CERT_QUERY_CONTENT_FLAG_SERIALIZED_CRL | CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED | CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED | CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED | CERT_QUERY_CONTENT_FLAG_PKCS10 | CERT_QUERY_CONTENT_FLAG_PFX | CERT_QUERY_CONTENT_FLAG_CERT_PAIR)\n\tCERT_QUERY_CONTENT_FLAG_ALL_ISSUER_CERT    = (CERT_QUERY_CONTENT_FLAG_CERT | CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE | CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT | CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED | CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED)\n\n\t/* CryptQueryObject format type flags */\n\tCERT_QUERY_FORMAT_BINARY                     = 1\n\tCERT_QUERY_FORMAT_BASE64_ENCODED             = 2\n\tCERT_QUERY_FORMAT_ASN_ASCII_HEX_ENCODED      = 3\n\tCERT_QUERY_FORMAT_FLAG_BINARY                = (1 << CERT_QUERY_FORMAT_BINARY)\n\tCERT_QUERY_FORMAT_FLAG_BASE64_ENCODED        = (1 << CERT_QUERY_FORMAT_BASE64_ENCODED)\n\tCERT_QUERY_FORMAT_FLAG_ASN_ASCII_HEX_ENCODED = (1 << CERT_QUERY_FORMAT_ASN_ASCII_HEX_ENCODED)\n\tCERT_QUERY_FORMAT_FLAG_ALL                   = (CERT_QUERY_FORMAT_FLAG_BINARY | CERT_QUERY_FORMAT_FLAG_BASE64_ENCODED | CERT_QUERY_FORMAT_FLAG_ASN_ASCII_HEX_ENCODED)\n\n\t/* CertGetNameString name types */\n\tCERT_NAME_EMAIL_TYPE            = 1\n\tCERT_NAME_RDN_TYPE              = 2\n\tCERT_NAME_ATTR_TYPE             = 3\n\tCERT_NAME_SIMPLE_DISPLAY_TYPE   = 4\n\tCERT_NAME_FRIENDLY_DISPLAY_TYPE = 5\n\tCERT_NAME_DNS_TYPE              = 6\n\tCERT_NAME_URL_TYPE              = 7\n\tCERT_NAME_UPN_TYPE              = 8\n\n\t/* CertGetNameString flags */\n\tCERT_NAME_ISSUER_FLAG              = 0x1\n\tCERT_NAME_DISABLE_IE4_UTF8_FLAG    = 0x10000\n\tCERT_NAME_SEARCH_ALL_NAMES_FLAG    = 0x2\n\tCERT_NAME_STR_ENABLE_PUNYCODE_FLAG = 0x00200000\n\n\t/* AuthType values for SSLExtraCertChainPolicyPara struct */\n\tAUTHTYPE_CLIENT = 1\n\tAUTHTYPE_SERVER = 2\n\n\t/* Checks values for SSLExtraCertChainPolicyPara struct */\n\tSECURITY_FLAG_IGNORE_REVOCATION        = 0x00000080\n\tSECURITY_FLAG_IGNORE_UNKNOWN_CA        = 0x00000100\n\tSECURITY_FLAG_IGNORE_WRONG_USAGE       = 0x00000200\n\tSECURITY_FLAG_IGNORE_CERT_CN_INVALID   = 0x00001000\n\tSECURITY_FLAG_IGNORE_CERT_DATE_INVALID = 0x00002000\n\n\t/* Flags for Crypt[Un]ProtectData */\n\tCRYPTPROTECT_UI_FORBIDDEN      = 0x1\n\tCRYPTPROTECT_LOCAL_MACHINE     = 0x4\n\tCRYPTPROTECT_CRED_SYNC         = 0x8\n\tCRYPTPROTECT_AUDIT             = 0x10\n\tCRYPTPROTECT_NO_RECOVERY       = 0x20\n\tCRYPTPROTECT_VERIFY_PROTECTION = 0x40\n\tCRYPTPROTECT_CRED_REGENERATE   = 0x80\n\n\t/* Flags for CryptProtectPromptStruct */\n\tCRYPTPROTECT_PROMPT_ON_UNPROTECT   = 1\n\tCRYPTPROTECT_PROMPT_ON_PROTECT     = 2\n\tCRYPTPROTECT_PROMPT_RESERVED       = 4\n\tCRYPTPROTECT_PROMPT_STRONG         = 8\n\tCRYPTPROTECT_PROMPT_REQUIRE_STRONG = 16\n)\n\nconst (\n\t// flags for SetErrorMode\n\tSEM_FAILCRITICALERRORS     = 0x0001\n\tSEM_NOALIGNMENTFAULTEXCEPT = 0x0004\n\tSEM_NOGPFAULTERRORBOX      = 0x0002\n\tSEM_NOOPENFILEERRORBOX     = 0x8000\n)\n\nconst (\n\t// Priority class.\n\tABOVE_NORMAL_PRIORITY_CLASS   = 0x00008000\n\tBELOW_NORMAL_PRIORITY_CLASS   = 0x00004000\n\tHIGH_PRIORITY_CLASS           = 0x00000080\n\tIDLE_PRIORITY_CLASS           = 0x00000040\n\tNORMAL_PRIORITY_CLASS         = 0x00000020\n\tPROCESS_MODE_BACKGROUND_BEGIN = 0x00100000\n\tPROCESS_MODE_BACKGROUND_END   = 0x00200000\n\tREALTIME_PRIORITY_CLASS       = 0x00000100\n)\n\n/* wintrust.h constants for WinVerifyTrustEx */\nconst (\n\tWTD_UI_ALL    = 1\n\tWTD_UI_NONE   = 2\n\tWTD_UI_NOBAD  = 3\n\tWTD_UI_NOGOOD = 4\n\n\tWTD_REVOKE_NONE       = 0\n\tWTD_REVOKE_WHOLECHAIN = 1\n\n\tWTD_CHOICE_FILE    = 1\n\tWTD_CHOICE_CATALOG = 2\n\tWTD_CHOICE_BLOB    = 3\n\tWTD_CHOICE_SIGNER  = 4\n\tWTD_CHOICE_CERT    = 5\n\n\tWTD_STATEACTION_IGNORE           = 0x00000000\n\tWTD_STATEACTION_VERIFY           = 0x00000001\n\tWTD_STATEACTION_CLOSE            = 0x00000002\n\tWTD_STATEACTION_AUTO_CACHE       = 0x00000003\n\tWTD_STATEACTION_AUTO_CACHE_FLUSH = 0x00000004\n\n\tWTD_USE_IE4_TRUST_FLAG                  = 0x1\n\tWTD_NO_IE4_CHAIN_FLAG                   = 0x2\n\tWTD_NO_POLICY_USAGE_FLAG                = 0x4\n\tWTD_REVOCATION_CHECK_NONE               = 0x10\n\tWTD_REVOCATION_CHECK_END_CERT           = 0x20\n\tWTD_REVOCATION_CHECK_CHAIN              = 0x40\n\tWTD_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT = 0x80\n\tWTD_SAFER_FLAG                          = 0x100\n\tWTD_HASH_ONLY_FLAG                      = 0x200\n\tWTD_USE_DEFAULT_OSVER_CHECK             = 0x400\n\tWTD_LIFETIME_SIGNING_FLAG               = 0x800\n\tWTD_CACHE_ONLY_URL_RETRIEVAL            = 0x1000\n\tWTD_DISABLE_MD2_MD4                     = 0x2000\n\tWTD_MOTW                                = 0x4000\n\n\tWTD_UICONTEXT_EXECUTE = 0\n\tWTD_UICONTEXT_INSTALL = 1\n)\n\nvar (\n\tOID_PKIX_KP_SERVER_AUTH = []byte(\"1.3.6.1.5.5.7.3.1\\x00\")\n\tOID_SERVER_GATED_CRYPTO = []byte(\"1.3.6.1.4.1.311.10.3.3\\x00\")\n\tOID_SGC_NETSCAPE        = []byte(\"2.16.840.1.113730.4.1\\x00\")\n\n\tWINTRUST_ACTION_GENERIC_VERIFY_V2 = GUID{\n\t\tData1: 0xaac56b,\n\t\tData2: 0xcd44,\n\t\tData3: 0x11d0,\n\t\tData4: [8]byte{0x8c, 0xc2, 0x0, 0xc0, 0x4f, 0xc2, 0x95, 0xee},\n\t}\n)\n\n// Pointer represents a pointer to an arbitrary Windows type.\n//\n// Pointer-typed fields may point to one of many different types. It's\n// up to the caller to provide a pointer to the appropriate type, cast\n// to Pointer. The caller must obey the unsafe.Pointer rules while\n// doing so.\ntype Pointer *struct{}\n\n// Invented values to support what package os expects.\ntype Timeval struct {\n\tSec  int32\n\tUsec int32\n}\n\nfunc (tv *Timeval) Nanoseconds() int64 {\n\treturn (int64(tv.Sec)*1e6 + int64(tv.Usec)) * 1e3\n}\n\nfunc NsecToTimeval(nsec int64) (tv Timeval) {\n\ttv.Sec = int32(nsec / 1e9)\n\ttv.Usec = int32(nsec % 1e9 / 1e3)\n\treturn\n}\n\ntype Overlapped struct {\n\tInternal     uintptr\n\tInternalHigh uintptr\n\tOffset       uint32\n\tOffsetHigh   uint32\n\tHEvent       Handle\n}\n\ntype FileNotifyInformation struct {\n\tNextEntryOffset uint32\n\tAction          uint32\n\tFileNameLength  uint32\n\tFileName        uint16\n}\n\ntype Filetime struct {\n\tLowDateTime  uint32\n\tHighDateTime uint32\n}\n\n// Nanoseconds returns Filetime ft in nanoseconds\n// since Epoch (00:00:00 UTC, January 1, 1970).\nfunc (ft *Filetime) Nanoseconds() int64 {\n\t// 100-nanosecond intervals since January 1, 1601\n\tnsec := int64(ft.HighDateTime)<<32 + int64(ft.LowDateTime)\n\t// change starting time to the Epoch (00:00:00 UTC, January 1, 1970)\n\tnsec -= 116444736000000000\n\t// convert into nanoseconds\n\tnsec *= 100\n\treturn nsec\n}\n\nfunc NsecToFiletime(nsec int64) (ft Filetime) {\n\t// convert into 100-nanosecond\n\tnsec /= 100\n\t// change starting time to January 1, 1601\n\tnsec += 116444736000000000\n\t// split into high / low\n\tft.LowDateTime = uint32(nsec & 0xffffffff)\n\tft.HighDateTime = uint32(nsec >> 32 & 0xffffffff)\n\treturn ft\n}\n\ntype Win32finddata struct {\n\tFileAttributes    uint32\n\tCreationTime      Filetime\n\tLastAccessTime    Filetime\n\tLastWriteTime     Filetime\n\tFileSizeHigh      uint32\n\tFileSizeLow       uint32\n\tReserved0         uint32\n\tReserved1         uint32\n\tFileName          [MAX_PATH - 1]uint16\n\tAlternateFileName [13]uint16\n}\n\n// This is the actual system call structure.\n// Win32finddata is what we committed to in Go 1.\ntype win32finddata1 struct {\n\tFileAttributes    uint32\n\tCreationTime      Filetime\n\tLastAccessTime    Filetime\n\tLastWriteTime     Filetime\n\tFileSizeHigh      uint32\n\tFileSizeLow       uint32\n\tReserved0         uint32\n\tReserved1         uint32\n\tFileName          [MAX_PATH]uint16\n\tAlternateFileName [14]uint16\n\n\t// The Microsoft documentation for this struct¹ describes three additional\n\t// fields: dwFileType, dwCreatorType, and wFinderFlags. However, those fields\n\t// are empirically only present in the macOS port of the Win32 API,² and thus\n\t// not needed for binaries built for Windows.\n\t//\n\t// ¹ https://docs.microsoft.com/en-us/windows/win32/api/minwinbase/ns-minwinbase-win32_find_dataw describe\n\t// ² https://golang.org/issue/42637#issuecomment-760715755.\n}\n\nfunc copyFindData(dst *Win32finddata, src *win32finddata1) {\n\tdst.FileAttributes = src.FileAttributes\n\tdst.CreationTime = src.CreationTime\n\tdst.LastAccessTime = src.LastAccessTime\n\tdst.LastWriteTime = src.LastWriteTime\n\tdst.FileSizeHigh = src.FileSizeHigh\n\tdst.FileSizeLow = src.FileSizeLow\n\tdst.Reserved0 = src.Reserved0\n\tdst.Reserved1 = src.Reserved1\n\n\t// The src is 1 element bigger than dst, but it must be NUL.\n\tcopy(dst.FileName[:], src.FileName[:])\n\tcopy(dst.AlternateFileName[:], src.AlternateFileName[:])\n}\n\ntype ByHandleFileInformation struct {\n\tFileAttributes     uint32\n\tCreationTime       Filetime\n\tLastAccessTime     Filetime\n\tLastWriteTime      Filetime\n\tVolumeSerialNumber uint32\n\tFileSizeHigh       uint32\n\tFileSizeLow        uint32\n\tNumberOfLinks      uint32\n\tFileIndexHigh      uint32\n\tFileIndexLow       uint32\n}\n\nconst (\n\tGetFileExInfoStandard = 0\n\tGetFileExMaxInfoLevel = 1\n)\n\ntype Win32FileAttributeData struct {\n\tFileAttributes uint32\n\tCreationTime   Filetime\n\tLastAccessTime Filetime\n\tLastWriteTime  Filetime\n\tFileSizeHigh   uint32\n\tFileSizeLow    uint32\n}\n\n// ShowWindow constants\nconst (\n\t// winuser.h\n\tSW_HIDE            = 0\n\tSW_NORMAL          = 1\n\tSW_SHOWNORMAL      = 1\n\tSW_SHOWMINIMIZED   = 2\n\tSW_SHOWMAXIMIZED   = 3\n\tSW_MAXIMIZE        = 3\n\tSW_SHOWNOACTIVATE  = 4\n\tSW_SHOW            = 5\n\tSW_MINIMIZE        = 6\n\tSW_SHOWMINNOACTIVE = 7\n\tSW_SHOWNA          = 8\n\tSW_RESTORE         = 9\n\tSW_SHOWDEFAULT     = 10\n\tSW_FORCEMINIMIZE   = 11\n)\n\ntype StartupInfo struct {\n\tCb            uint32\n\t_             *uint16\n\tDesktop       *uint16\n\tTitle         *uint16\n\tX             uint32\n\tY             uint32\n\tXSize         uint32\n\tYSize         uint32\n\tXCountChars   uint32\n\tYCountChars   uint32\n\tFillAttribute uint32\n\tFlags         uint32\n\tShowWindow    uint16\n\t_             uint16\n\t_             *byte\n\tStdInput      Handle\n\tStdOutput     Handle\n\tStdErr        Handle\n}\n\ntype StartupInfoEx struct {\n\tStartupInfo\n\tProcThreadAttributeList *ProcThreadAttributeList\n}\n\n// ProcThreadAttributeList is a placeholder type to represent a PROC_THREAD_ATTRIBUTE_LIST.\n//\n// To create a *ProcThreadAttributeList, use NewProcThreadAttributeList, update\n// it with ProcThreadAttributeListContainer.Update, free its memory using\n// ProcThreadAttributeListContainer.Delete, and access the list itself using\n// ProcThreadAttributeListContainer.List.\ntype ProcThreadAttributeList struct{}\n\ntype ProcThreadAttributeListContainer struct {\n\tdata     *ProcThreadAttributeList\n\tpointers []unsafe.Pointer\n}\n\ntype ProcessInformation struct {\n\tProcess   Handle\n\tThread    Handle\n\tProcessId uint32\n\tThreadId  uint32\n}\n\ntype ProcessEntry32 struct {\n\tSize            uint32\n\tUsage           uint32\n\tProcessID       uint32\n\tDefaultHeapID   uintptr\n\tModuleID        uint32\n\tThreads         uint32\n\tParentProcessID uint32\n\tPriClassBase    int32\n\tFlags           uint32\n\tExeFile         [MAX_PATH]uint16\n}\n\ntype ThreadEntry32 struct {\n\tSize           uint32\n\tUsage          uint32\n\tThreadID       uint32\n\tOwnerProcessID uint32\n\tBasePri        int32\n\tDeltaPri       int32\n\tFlags          uint32\n}\n\ntype ModuleEntry32 struct {\n\tSize         uint32\n\tModuleID     uint32\n\tProcessID    uint32\n\tGlblcntUsage uint32\n\tProccntUsage uint32\n\tModBaseAddr  uintptr\n\tModBaseSize  uint32\n\tModuleHandle Handle\n\tModule       [MAX_MODULE_NAME32 + 1]uint16\n\tExePath      [MAX_PATH]uint16\n}\n\nconst SizeofModuleEntry32 = unsafe.Sizeof(ModuleEntry32{})\n\ntype Systemtime struct {\n\tYear         uint16\n\tMonth        uint16\n\tDayOfWeek    uint16\n\tDay          uint16\n\tHour         uint16\n\tMinute       uint16\n\tSecond       uint16\n\tMilliseconds uint16\n}\n\ntype Timezoneinformation struct {\n\tBias         int32\n\tStandardName [32]uint16\n\tStandardDate Systemtime\n\tStandardBias int32\n\tDaylightName [32]uint16\n\tDaylightDate Systemtime\n\tDaylightBias int32\n}\n\n// Socket related.\n\nconst (\n\tAF_UNSPEC  = 0\n\tAF_UNIX    = 1\n\tAF_INET    = 2\n\tAF_NETBIOS = 17\n\tAF_INET6   = 23\n\tAF_IRDA    = 26\n\tAF_BTH     = 32\n\n\tSOCK_STREAM    = 1\n\tSOCK_DGRAM     = 2\n\tSOCK_RAW       = 3\n\tSOCK_RDM       = 4\n\tSOCK_SEQPACKET = 5\n\n\tIPPROTO_IP      = 0\n\tIPPROTO_ICMP    = 1\n\tIPPROTO_IGMP    = 2\n\tBTHPROTO_RFCOMM = 3\n\tIPPROTO_TCP     = 6\n\tIPPROTO_UDP     = 17\n\tIPPROTO_IPV6    = 41\n\tIPPROTO_ICMPV6  = 58\n\tIPPROTO_RM      = 113\n\n\tSOL_SOCKET                = 0xffff\n\tSO_REUSEADDR              = 4\n\tSO_KEEPALIVE              = 8\n\tSO_DONTROUTE              = 16\n\tSO_BROADCAST              = 32\n\tSO_LINGER                 = 128\n\tSO_RCVBUF                 = 0x1002\n\tSO_RCVTIMEO               = 0x1006\n\tSO_SNDBUF                 = 0x1001\n\tSO_UPDATE_ACCEPT_CONTEXT  = 0x700b\n\tSO_UPDATE_CONNECT_CONTEXT = 0x7010\n\n\tIOC_OUT                            = 0x40000000\n\tIOC_IN                             = 0x80000000\n\tIOC_VENDOR                         = 0x18000000\n\tIOC_INOUT                          = IOC_IN | IOC_OUT\n\tIOC_WS2                            = 0x08000000\n\tSIO_GET_EXTENSION_FUNCTION_POINTER = IOC_INOUT | IOC_WS2 | 6\n\tSIO_KEEPALIVE_VALS                 = IOC_IN | IOC_VENDOR | 4\n\tSIO_UDP_CONNRESET                  = IOC_IN | IOC_VENDOR | 12\n\tSIO_UDP_NETRESET                   = IOC_IN | IOC_VENDOR | 15\n\n\t// cf. http://support.microsoft.com/default.aspx?scid=kb;en-us;257460\n\n\tIP_HDRINCL         = 0x2\n\tIP_TOS             = 0x3\n\tIP_TTL             = 0x4\n\tIP_MULTICAST_IF    = 0x9\n\tIP_MULTICAST_TTL   = 0xa\n\tIP_MULTICAST_LOOP  = 0xb\n\tIP_ADD_MEMBERSHIP  = 0xc\n\tIP_DROP_MEMBERSHIP = 0xd\n\tIP_PKTINFO         = 0x13\n\tIP_MTU_DISCOVER    = 0x47\n\n\tIPV6_V6ONLY         = 0x1b\n\tIPV6_UNICAST_HOPS   = 0x4\n\tIPV6_MULTICAST_IF   = 0x9\n\tIPV6_MULTICAST_HOPS = 0xa\n\tIPV6_MULTICAST_LOOP = 0xb\n\tIPV6_JOIN_GROUP     = 0xc\n\tIPV6_LEAVE_GROUP    = 0xd\n\tIPV6_PKTINFO        = 0x13\n\tIPV6_MTU_DISCOVER   = 0x47\n\n\tMSG_OOB       = 0x1\n\tMSG_PEEK      = 0x2\n\tMSG_DONTROUTE = 0x4\n\tMSG_WAITALL   = 0x8\n\n\tMSG_TRUNC  = 0x0100\n\tMSG_CTRUNC = 0x0200\n\tMSG_BCAST  = 0x0400\n\tMSG_MCAST  = 0x0800\n\n\tSOMAXCONN = 0x7fffffff\n\n\tTCP_NODELAY                    = 1\n\tTCP_EXPEDITED_1122             = 2\n\tTCP_KEEPALIVE                  = 3\n\tTCP_MAXSEG                     = 4\n\tTCP_MAXRT                      = 5\n\tTCP_STDURG                     = 6\n\tTCP_NOURG                      = 7\n\tTCP_ATMARK                     = 8\n\tTCP_NOSYNRETRIES               = 9\n\tTCP_TIMESTAMPS                 = 10\n\tTCP_OFFLOAD_PREFERENCE         = 11\n\tTCP_CONGESTION_ALGORITHM       = 12\n\tTCP_DELAY_FIN_ACK              = 13\n\tTCP_MAXRTMS                    = 14\n\tTCP_FASTOPEN                   = 15\n\tTCP_KEEPCNT                    = 16\n\tTCP_KEEPIDLE                   = TCP_KEEPALIVE\n\tTCP_KEEPINTVL                  = 17\n\tTCP_FAIL_CONNECT_ON_ICMP_ERROR = 18\n\tTCP_ICMP_ERROR_INFO            = 19\n\n\tUDP_NOCHECKSUM              = 1\n\tUDP_SEND_MSG_SIZE           = 2\n\tUDP_RECV_MAX_COALESCED_SIZE = 3\n\tUDP_CHECKSUM_COVERAGE       = 20\n\n\tUDP_COALESCED_INFO = 3\n\n\tSHUT_RD   = 0\n\tSHUT_WR   = 1\n\tSHUT_RDWR = 2\n\n\tWSADESCRIPTION_LEN = 256\n\tWSASYS_STATUS_LEN  = 128\n)\n\n// enum PMTUD_STATE from ws2ipdef.h\nconst (\n\tIP_PMTUDISC_NOT_SET = 0\n\tIP_PMTUDISC_DO      = 1\n\tIP_PMTUDISC_DONT    = 2\n\tIP_PMTUDISC_PROBE   = 3\n\tIP_PMTUDISC_MAX     = 4\n)\n\ntype WSABuf struct {\n\tLen uint32\n\tBuf *byte\n}\n\ntype WSAMsg struct {\n\tName        *syscall.RawSockaddrAny\n\tNamelen     int32\n\tBuffers     *WSABuf\n\tBufferCount uint32\n\tControl     WSABuf\n\tFlags       uint32\n}\n\ntype WSACMSGHDR struct {\n\tLen   uintptr\n\tLevel int32\n\tType  int32\n}\n\ntype IN_PKTINFO struct {\n\tAddr    [4]byte\n\tIfindex uint32\n}\n\ntype IN6_PKTINFO struct {\n\tAddr    [16]byte\n\tIfindex uint32\n}\n\n// Flags for WSASocket\nconst (\n\tWSA_FLAG_OVERLAPPED             = 0x01\n\tWSA_FLAG_MULTIPOINT_C_ROOT      = 0x02\n\tWSA_FLAG_MULTIPOINT_C_LEAF      = 0x04\n\tWSA_FLAG_MULTIPOINT_D_ROOT      = 0x08\n\tWSA_FLAG_MULTIPOINT_D_LEAF      = 0x10\n\tWSA_FLAG_ACCESS_SYSTEM_SECURITY = 0x40\n\tWSA_FLAG_NO_HANDLE_INHERIT      = 0x80\n\tWSA_FLAG_REGISTERED_IO          = 0x100\n)\n\n// Invented values to support what package os expects.\nconst (\n\tS_IFMT   = 0x1f000\n\tS_IFIFO  = 0x1000\n\tS_IFCHR  = 0x2000\n\tS_IFDIR  = 0x4000\n\tS_IFBLK  = 0x6000\n\tS_IFREG  = 0x8000\n\tS_IFLNK  = 0xa000\n\tS_IFSOCK = 0xc000\n\tS_ISUID  = 0x800\n\tS_ISGID  = 0x400\n\tS_ISVTX  = 0x200\n\tS_IRUSR  = 0x100\n\tS_IWRITE = 0x80\n\tS_IWUSR  = 0x80\n\tS_IXUSR  = 0x40\n)\n\nconst (\n\tFILE_TYPE_CHAR    = 0x0002\n\tFILE_TYPE_DISK    = 0x0001\n\tFILE_TYPE_PIPE    = 0x0003\n\tFILE_TYPE_REMOTE  = 0x8000\n\tFILE_TYPE_UNKNOWN = 0x0000\n)\n\ntype Hostent struct {\n\tName     *byte\n\tAliases  **byte\n\tAddrType uint16\n\tLength   uint16\n\tAddrList **byte\n}\n\ntype Protoent struct {\n\tName    *byte\n\tAliases **byte\n\tProto   uint16\n}\n\nconst (\n\tDNS_TYPE_A       = 0x0001\n\tDNS_TYPE_NS      = 0x0002\n\tDNS_TYPE_MD      = 0x0003\n\tDNS_TYPE_MF      = 0x0004\n\tDNS_TYPE_CNAME   = 0x0005\n\tDNS_TYPE_SOA     = 0x0006\n\tDNS_TYPE_MB      = 0x0007\n\tDNS_TYPE_MG      = 0x0008\n\tDNS_TYPE_MR      = 0x0009\n\tDNS_TYPE_NULL    = 0x000a\n\tDNS_TYPE_WKS     = 0x000b\n\tDNS_TYPE_PTR     = 0x000c\n\tDNS_TYPE_HINFO   = 0x000d\n\tDNS_TYPE_MINFO   = 0x000e\n\tDNS_TYPE_MX      = 0x000f\n\tDNS_TYPE_TEXT    = 0x0010\n\tDNS_TYPE_RP      = 0x0011\n\tDNS_TYPE_AFSDB   = 0x0012\n\tDNS_TYPE_X25     = 0x0013\n\tDNS_TYPE_ISDN    = 0x0014\n\tDNS_TYPE_RT      = 0x0015\n\tDNS_TYPE_NSAP    = 0x0016\n\tDNS_TYPE_NSAPPTR = 0x0017\n\tDNS_TYPE_SIG     = 0x0018\n\tDNS_TYPE_KEY     = 0x0019\n\tDNS_TYPE_PX      = 0x001a\n\tDNS_TYPE_GPOS    = 0x001b\n\tDNS_TYPE_AAAA    = 0x001c\n\tDNS_TYPE_LOC     = 0x001d\n\tDNS_TYPE_NXT     = 0x001e\n\tDNS_TYPE_EID     = 0x001f\n\tDNS_TYPE_NIMLOC  = 0x0020\n\tDNS_TYPE_SRV     = 0x0021\n\tDNS_TYPE_ATMA    = 0x0022\n\tDNS_TYPE_NAPTR   = 0x0023\n\tDNS_TYPE_KX      = 0x0024\n\tDNS_TYPE_CERT    = 0x0025\n\tDNS_TYPE_A6      = 0x0026\n\tDNS_TYPE_DNAME   = 0x0027\n\tDNS_TYPE_SINK    = 0x0028\n\tDNS_TYPE_OPT     = 0x0029\n\tDNS_TYPE_DS      = 0x002B\n\tDNS_TYPE_RRSIG   = 0x002E\n\tDNS_TYPE_NSEC    = 0x002F\n\tDNS_TYPE_DNSKEY  = 0x0030\n\tDNS_TYPE_DHCID   = 0x0031\n\tDNS_TYPE_UINFO   = 0x0064\n\tDNS_TYPE_UID     = 0x0065\n\tDNS_TYPE_GID     = 0x0066\n\tDNS_TYPE_UNSPEC  = 0x0067\n\tDNS_TYPE_ADDRS   = 0x00f8\n\tDNS_TYPE_TKEY    = 0x00f9\n\tDNS_TYPE_TSIG    = 0x00fa\n\tDNS_TYPE_IXFR    = 0x00fb\n\tDNS_TYPE_AXFR    = 0x00fc\n\tDNS_TYPE_MAILB   = 0x00fd\n\tDNS_TYPE_MAILA   = 0x00fe\n\tDNS_TYPE_ALL     = 0x00ff\n\tDNS_TYPE_ANY     = 0x00ff\n\tDNS_TYPE_WINS    = 0xff01\n\tDNS_TYPE_WINSR   = 0xff02\n\tDNS_TYPE_NBSTAT  = 0xff01\n)\n\nconst (\n\t// flags inside DNSRecord.Dw\n\tDnsSectionQuestion   = 0x0000\n\tDnsSectionAnswer     = 0x0001\n\tDnsSectionAuthority  = 0x0002\n\tDnsSectionAdditional = 0x0003\n)\n\nconst (\n\t// flags of WSALookupService\n\tLUP_DEEP                = 0x0001\n\tLUP_CONTAINERS          = 0x0002\n\tLUP_NOCONTAINERS        = 0x0004\n\tLUP_NEAREST             = 0x0008\n\tLUP_RETURN_NAME         = 0x0010\n\tLUP_RETURN_TYPE         = 0x0020\n\tLUP_RETURN_VERSION      = 0x0040\n\tLUP_RETURN_COMMENT      = 0x0080\n\tLUP_RETURN_ADDR         = 0x0100\n\tLUP_RETURN_BLOB         = 0x0200\n\tLUP_RETURN_ALIASES      = 0x0400\n\tLUP_RETURN_QUERY_STRING = 0x0800\n\tLUP_RETURN_ALL          = 0x0FF0\n\tLUP_RES_SERVICE         = 0x8000\n\n\tLUP_FLUSHCACHE    = 0x1000\n\tLUP_FLUSHPREVIOUS = 0x2000\n\n\tLUP_NON_AUTHORITATIVE      = 0x4000\n\tLUP_SECURE                 = 0x8000\n\tLUP_RETURN_PREFERRED_NAMES = 0x10000\n\tLUP_DNS_ONLY               = 0x20000\n\n\tLUP_ADDRCONFIG           = 0x100000\n\tLUP_DUAL_ADDR            = 0x200000\n\tLUP_FILESERVER           = 0x400000\n\tLUP_DISABLE_IDN_ENCODING = 0x00800000\n\tLUP_API_ANSI             = 0x01000000\n\n\tLUP_RESOLUTION_HANDLE = 0x80000000\n)\n\nconst (\n\t// values of WSAQUERYSET's namespace\n\tNS_ALL       = 0\n\tNS_DNS       = 12\n\tNS_NLA       = 15\n\tNS_BTH       = 16\n\tNS_EMAIL     = 37\n\tNS_PNRPNAME  = 38\n\tNS_PNRPCLOUD = 39\n)\n\ntype DNSSRVData struct {\n\tTarget   *uint16\n\tPriority uint16\n\tWeight   uint16\n\tPort     uint16\n\tPad      uint16\n}\n\ntype DNSPTRData struct {\n\tHost *uint16\n}\n\ntype DNSMXData struct {\n\tNameExchange *uint16\n\tPreference   uint16\n\tPad          uint16\n}\n\ntype DNSTXTData struct {\n\tStringCount uint16\n\tStringArray [1]*uint16\n}\n\ntype DNSRecord struct {\n\tNext     *DNSRecord\n\tName     *uint16\n\tType     uint16\n\tLength   uint16\n\tDw       uint32\n\tTtl      uint32\n\tReserved uint32\n\tData     [40]byte\n}\n\nconst (\n\tTF_DISCONNECT         = 1\n\tTF_REUSE_SOCKET       = 2\n\tTF_WRITE_BEHIND       = 4\n\tTF_USE_DEFAULT_WORKER = 0\n\tTF_USE_SYSTEM_THREAD  = 16\n\tTF_USE_KERNEL_APC     = 32\n)\n\ntype TransmitFileBuffers struct {\n\tHead       uintptr\n\tHeadLength uint32\n\tTail       uintptr\n\tTailLength uint32\n}\n\nconst (\n\tIFF_UP           = 1\n\tIFF_BROADCAST    = 2\n\tIFF_LOOPBACK     = 4\n\tIFF_POINTTOPOINT = 8\n\tIFF_MULTICAST    = 16\n)\n\nconst SIO_GET_INTERFACE_LIST = 0x4004747F\n\n// TODO(mattn): SockaddrGen is union of sockaddr/sockaddr_in/sockaddr_in6_old.\n// will be fixed to change variable type as suitable.\n\ntype SockaddrGen [24]byte\n\ntype InterfaceInfo struct {\n\tFlags            uint32\n\tAddress          SockaddrGen\n\tBroadcastAddress SockaddrGen\n\tNetmask          SockaddrGen\n}\n\ntype IpAddressString struct {\n\tString [16]byte\n}\n\ntype IpMaskString IpAddressString\n\ntype IpAddrString struct {\n\tNext      *IpAddrString\n\tIpAddress IpAddressString\n\tIpMask    IpMaskString\n\tContext   uint32\n}\n\nconst MAX_ADAPTER_NAME_LENGTH = 256\nconst MAX_ADAPTER_DESCRIPTION_LENGTH = 128\nconst MAX_ADAPTER_ADDRESS_LENGTH = 8\n\ntype IpAdapterInfo struct {\n\tNext                *IpAdapterInfo\n\tComboIndex          uint32\n\tAdapterName         [MAX_ADAPTER_NAME_LENGTH + 4]byte\n\tDescription         [MAX_ADAPTER_DESCRIPTION_LENGTH + 4]byte\n\tAddressLength       uint32\n\tAddress             [MAX_ADAPTER_ADDRESS_LENGTH]byte\n\tIndex               uint32\n\tType                uint32\n\tDhcpEnabled         uint32\n\tCurrentIpAddress    *IpAddrString\n\tIpAddressList       IpAddrString\n\tGatewayList         IpAddrString\n\tDhcpServer          IpAddrString\n\tHaveWins            bool\n\tPrimaryWinsServer   IpAddrString\n\tSecondaryWinsServer IpAddrString\n\tLeaseObtained       int64\n\tLeaseExpires        int64\n}\n\nconst MAXLEN_PHYSADDR = 8\nconst MAX_INTERFACE_NAME_LEN = 256\nconst MAXLEN_IFDESCR = 256\n\ntype MibIfRow struct {\n\tName            [MAX_INTERFACE_NAME_LEN]uint16\n\tIndex           uint32\n\tType            uint32\n\tMtu             uint32\n\tSpeed           uint32\n\tPhysAddrLen     uint32\n\tPhysAddr        [MAXLEN_PHYSADDR]byte\n\tAdminStatus     uint32\n\tOperStatus      uint32\n\tLastChange      uint32\n\tInOctets        uint32\n\tInUcastPkts     uint32\n\tInNUcastPkts    uint32\n\tInDiscards      uint32\n\tInErrors        uint32\n\tInUnknownProtos uint32\n\tOutOctets       uint32\n\tOutUcastPkts    uint32\n\tOutNUcastPkts   uint32\n\tOutDiscards     uint32\n\tOutErrors       uint32\n\tOutQLen         uint32\n\tDescrLen        uint32\n\tDescr           [MAXLEN_IFDESCR]byte\n}\n\ntype CertInfo struct {\n\tVersion              uint32\n\tSerialNumber         CryptIntegerBlob\n\tSignatureAlgorithm   CryptAlgorithmIdentifier\n\tIssuer               CertNameBlob\n\tNotBefore            Filetime\n\tNotAfter             Filetime\n\tSubject              CertNameBlob\n\tSubjectPublicKeyInfo CertPublicKeyInfo\n\tIssuerUniqueId       CryptBitBlob\n\tSubjectUniqueId      CryptBitBlob\n\tCountExtensions      uint32\n\tExtensions           *CertExtension\n}\n\ntype CertExtension struct {\n\tObjId    *byte\n\tCritical int32\n\tValue    CryptObjidBlob\n}\n\ntype CryptAlgorithmIdentifier struct {\n\tObjId      *byte\n\tParameters CryptObjidBlob\n}\n\ntype CertPublicKeyInfo struct {\n\tAlgorithm CryptAlgorithmIdentifier\n\tPublicKey CryptBitBlob\n}\n\ntype DataBlob struct {\n\tSize uint32\n\tData *byte\n}\ntype CryptIntegerBlob DataBlob\ntype CryptUintBlob DataBlob\ntype CryptObjidBlob DataBlob\ntype CertNameBlob DataBlob\ntype CertRdnValueBlob DataBlob\ntype CertBlob DataBlob\ntype CrlBlob DataBlob\ntype CryptDataBlob DataBlob\ntype CryptHashBlob DataBlob\ntype CryptDigestBlob DataBlob\ntype CryptDerBlob DataBlob\ntype CryptAttrBlob DataBlob\n\ntype CryptBitBlob struct {\n\tSize       uint32\n\tData       *byte\n\tUnusedBits uint32\n}\n\ntype CertContext struct {\n\tEncodingType uint32\n\tEncodedCert  *byte\n\tLength       uint32\n\tCertInfo     *CertInfo\n\tStore        Handle\n}\n\ntype CertChainContext struct {\n\tSize                       uint32\n\tTrustStatus                CertTrustStatus\n\tChainCount                 uint32\n\tChains                     **CertSimpleChain\n\tLowerQualityChainCount     uint32\n\tLowerQualityChains         **CertChainContext\n\tHasRevocationFreshnessTime uint32\n\tRevocationFreshnessTime    uint32\n}\n\ntype CertTrustListInfo struct {\n\t// Not implemented\n}\n\ntype CertSimpleChain struct {\n\tSize                       uint32\n\tTrustStatus                CertTrustStatus\n\tNumElements                uint32\n\tElements                   **CertChainElement\n\tTrustListInfo              *CertTrustListInfo\n\tHasRevocationFreshnessTime uint32\n\tRevocationFreshnessTime    uint32\n}\n\ntype CertChainElement struct {\n\tSize              uint32\n\tCertContext       *CertContext\n\tTrustStatus       CertTrustStatus\n\tRevocationInfo    *CertRevocationInfo\n\tIssuanceUsage     *CertEnhKeyUsage\n\tApplicationUsage  *CertEnhKeyUsage\n\tExtendedErrorInfo *uint16\n}\n\ntype CertRevocationCrlInfo struct {\n\t// Not implemented\n}\n\ntype CertRevocationInfo struct {\n\tSize             uint32\n\tRevocationResult uint32\n\tRevocationOid    *byte\n\tOidSpecificInfo  Pointer\n\tHasFreshnessTime uint32\n\tFreshnessTime    uint32\n\tCrlInfo          *CertRevocationCrlInfo\n}\n\ntype CertTrustStatus struct {\n\tErrorStatus uint32\n\tInfoStatus  uint32\n}\n\ntype CertUsageMatch struct {\n\tType  uint32\n\tUsage CertEnhKeyUsage\n}\n\ntype CertEnhKeyUsage struct {\n\tLength           uint32\n\tUsageIdentifiers **byte\n}\n\ntype CertChainPara struct {\n\tSize                         uint32\n\tRequestedUsage               CertUsageMatch\n\tRequstedIssuancePolicy       CertUsageMatch\n\tURLRetrievalTimeout          uint32\n\tCheckRevocationFreshnessTime uint32\n\tRevocationFreshnessTime      uint32\n\tCacheResync                  *Filetime\n}\n\ntype CertChainPolicyPara struct {\n\tSize            uint32\n\tFlags           uint32\n\tExtraPolicyPara Pointer\n}\n\ntype SSLExtraCertChainPolicyPara struct {\n\tSize       uint32\n\tAuthType   uint32\n\tChecks     uint32\n\tServerName *uint16\n}\n\ntype CertChainPolicyStatus struct {\n\tSize              uint32\n\tError             uint32\n\tChainIndex        uint32\n\tElementIndex      uint32\n\tExtraPolicyStatus Pointer\n}\n\ntype CertPolicyInfo struct {\n\tIdentifier      *byte\n\tCountQualifiers uint32\n\tQualifiers      *CertPolicyQualifierInfo\n}\n\ntype CertPoliciesInfo struct {\n\tCount       uint32\n\tPolicyInfos *CertPolicyInfo\n}\n\ntype CertPolicyQualifierInfo struct {\n\t// Not implemented\n}\n\ntype CertStrongSignPara struct {\n\tSize                      uint32\n\tInfoChoice                uint32\n\tInfoOrSerializedInfoOrOID unsafe.Pointer\n}\n\ntype CryptProtectPromptStruct struct {\n\tSize        uint32\n\tPromptFlags uint32\n\tApp         HWND\n\tPrompt      *uint16\n}\n\ntype CertChainFindByIssuerPara struct {\n\tSize                   uint32\n\tUsageIdentifier        *byte\n\tKeySpec                uint32\n\tAcquirePrivateKeyFlags uint32\n\tIssuerCount            uint32\n\tIssuer                 Pointer\n\tFindCallback           Pointer\n\tFindArg                Pointer\n\tIssuerChainIndex       *uint32\n\tIssuerElementIndex     *uint32\n}\n\ntype WinTrustData struct {\n\tSize                            uint32\n\tPolicyCallbackData              uintptr\n\tSIPClientData                   uintptr\n\tUIChoice                        uint32\n\tRevocationChecks                uint32\n\tUnionChoice                     uint32\n\tFileOrCatalogOrBlobOrSgnrOrCert unsafe.Pointer\n\tStateAction                     uint32\n\tStateData                       Handle\n\tURLReference                    *uint16\n\tProvFlags                       uint32\n\tUIContext                       uint32\n\tSignatureSettings               *WinTrustSignatureSettings\n}\n\ntype WinTrustFileInfo struct {\n\tSize         uint32\n\tFilePath     *uint16\n\tFile         Handle\n\tKnownSubject *GUID\n}\n\ntype WinTrustSignatureSettings struct {\n\tSize             uint32\n\tIndex            uint32\n\tFlags            uint32\n\tSecondarySigs    uint32\n\tVerifiedSigIndex uint32\n\tCryptoPolicy     *CertStrongSignPara\n}\n\nconst (\n\t// do not reorder\n\tHKEY_CLASSES_ROOT = 0x80000000 + iota\n\tHKEY_CURRENT_USER\n\tHKEY_LOCAL_MACHINE\n\tHKEY_USERS\n\tHKEY_PERFORMANCE_DATA\n\tHKEY_CURRENT_CONFIG\n\tHKEY_DYN_DATA\n\n\tKEY_QUERY_VALUE        = 1\n\tKEY_SET_VALUE          = 2\n\tKEY_CREATE_SUB_KEY     = 4\n\tKEY_ENUMERATE_SUB_KEYS = 8\n\tKEY_NOTIFY             = 16\n\tKEY_CREATE_LINK        = 32\n\tKEY_WRITE              = 0x20006\n\tKEY_EXECUTE            = 0x20019\n\tKEY_READ               = 0x20019\n\tKEY_WOW64_64KEY        = 0x0100\n\tKEY_WOW64_32KEY        = 0x0200\n\tKEY_ALL_ACCESS         = 0xf003f\n)\n\nconst (\n\t// do not reorder\n\tREG_NONE = iota\n\tREG_SZ\n\tREG_EXPAND_SZ\n\tREG_BINARY\n\tREG_DWORD_LITTLE_ENDIAN\n\tREG_DWORD_BIG_ENDIAN\n\tREG_LINK\n\tREG_MULTI_SZ\n\tREG_RESOURCE_LIST\n\tREG_FULL_RESOURCE_DESCRIPTOR\n\tREG_RESOURCE_REQUIREMENTS_LIST\n\tREG_QWORD_LITTLE_ENDIAN\n\tREG_DWORD = REG_DWORD_LITTLE_ENDIAN\n\tREG_QWORD = REG_QWORD_LITTLE_ENDIAN\n)\n\nconst (\n\tEVENT_MODIFY_STATE = 0x0002\n\tEVENT_ALL_ACCESS   = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3\n\n\tMUTANT_QUERY_STATE = 0x0001\n\tMUTANT_ALL_ACCESS  = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | MUTANT_QUERY_STATE\n\n\tSEMAPHORE_MODIFY_STATE = 0x0002\n\tSEMAPHORE_ALL_ACCESS   = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3\n\n\tTIMER_QUERY_STATE  = 0x0001\n\tTIMER_MODIFY_STATE = 0x0002\n\tTIMER_ALL_ACCESS   = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | TIMER_QUERY_STATE | TIMER_MODIFY_STATE\n\n\tMUTEX_MODIFY_STATE = MUTANT_QUERY_STATE\n\tMUTEX_ALL_ACCESS   = MUTANT_ALL_ACCESS\n\n\tCREATE_EVENT_MANUAL_RESET  = 0x1\n\tCREATE_EVENT_INITIAL_SET   = 0x2\n\tCREATE_MUTEX_INITIAL_OWNER = 0x1\n)\n\ntype AddrinfoW struct {\n\tFlags     int32\n\tFamily    int32\n\tSocktype  int32\n\tProtocol  int32\n\tAddrlen   uintptr\n\tCanonname *uint16\n\tAddr      uintptr\n\tNext      *AddrinfoW\n}\n\nconst (\n\tAI_PASSIVE     = 1\n\tAI_CANONNAME   = 2\n\tAI_NUMERICHOST = 4\n)\n\ntype GUID struct {\n\tData1 uint32\n\tData2 uint16\n\tData3 uint16\n\tData4 [8]byte\n}\n\nvar WSAID_CONNECTEX = GUID{\n\t0x25a207b9,\n\t0xddf3,\n\t0x4660,\n\t[8]byte{0x8e, 0xe9, 0x76, 0xe5, 0x8c, 0x74, 0x06, 0x3e},\n}\n\nvar WSAID_WSASENDMSG = GUID{\n\t0xa441e712,\n\t0x754f,\n\t0x43ca,\n\t[8]byte{0x84, 0xa7, 0x0d, 0xee, 0x44, 0xcf, 0x60, 0x6d},\n}\n\nvar WSAID_WSARECVMSG = GUID{\n\t0xf689d7c8,\n\t0x6f1f,\n\t0x436b,\n\t[8]byte{0x8a, 0x53, 0xe5, 0x4f, 0xe3, 0x51, 0xc3, 0x22},\n}\n\nconst (\n\tFILE_SKIP_COMPLETION_PORT_ON_SUCCESS = 1\n\tFILE_SKIP_SET_EVENT_ON_HANDLE        = 2\n)\n\nconst (\n\tWSAPROTOCOL_LEN    = 255\n\tMAX_PROTOCOL_CHAIN = 7\n\tBASE_PROTOCOL      = 1\n\tLAYERED_PROTOCOL   = 0\n\n\tXP1_CONNECTIONLESS           = 0x00000001\n\tXP1_GUARANTEED_DELIVERY      = 0x00000002\n\tXP1_GUARANTEED_ORDER         = 0x00000004\n\tXP1_MESSAGE_ORIENTED         = 0x00000008\n\tXP1_PSEUDO_STREAM            = 0x00000010\n\tXP1_GRACEFUL_CLOSE           = 0x00000020\n\tXP1_EXPEDITED_DATA           = 0x00000040\n\tXP1_CONNECT_DATA             = 0x00000080\n\tXP1_DISCONNECT_DATA          = 0x00000100\n\tXP1_SUPPORT_BROADCAST        = 0x00000200\n\tXP1_SUPPORT_MULTIPOINT       = 0x00000400\n\tXP1_MULTIPOINT_CONTROL_PLANE = 0x00000800\n\tXP1_MULTIPOINT_DATA_PLANE    = 0x00001000\n\tXP1_QOS_SUPPORTED            = 0x00002000\n\tXP1_UNI_SEND                 = 0x00008000\n\tXP1_UNI_RECV                 = 0x00010000\n\tXP1_IFS_HANDLES              = 0x00020000\n\tXP1_PARTIAL_MESSAGE          = 0x00040000\n\tXP1_SAN_SUPPORT_SDP          = 0x00080000\n\n\tPFL_MULTIPLE_PROTO_ENTRIES  = 0x00000001\n\tPFL_RECOMMENDED_PROTO_ENTRY = 0x00000002\n\tPFL_HIDDEN                  = 0x00000004\n\tPFL_MATCHES_PROTOCOL_ZERO   = 0x00000008\n\tPFL_NETWORKDIRECT_PROVIDER  = 0x00000010\n)\n\ntype WSAProtocolInfo struct {\n\tServiceFlags1     uint32\n\tServiceFlags2     uint32\n\tServiceFlags3     uint32\n\tServiceFlags4     uint32\n\tProviderFlags     uint32\n\tProviderId        GUID\n\tCatalogEntryId    uint32\n\tProtocolChain     WSAProtocolChain\n\tVersion           int32\n\tAddressFamily     int32\n\tMaxSockAddr       int32\n\tMinSockAddr       int32\n\tSocketType        int32\n\tProtocol          int32\n\tProtocolMaxOffset int32\n\tNetworkByteOrder  int32\n\tSecurityScheme    int32\n\tMessageSize       uint32\n\tProviderReserved  uint32\n\tProtocolName      [WSAPROTOCOL_LEN + 1]uint16\n}\n\ntype WSAProtocolChain struct {\n\tChainLen     int32\n\tChainEntries [MAX_PROTOCOL_CHAIN]uint32\n}\n\ntype TCPKeepalive struct {\n\tOnOff    uint32\n\tTime     uint32\n\tInterval uint32\n}\n\ntype symbolicLinkReparseBuffer struct {\n\tSubstituteNameOffset uint16\n\tSubstituteNameLength uint16\n\tPrintNameOffset      uint16\n\tPrintNameLength      uint16\n\tFlags                uint32\n\tPathBuffer           [1]uint16\n}\n\ntype mountPointReparseBuffer struct {\n\tSubstituteNameOffset uint16\n\tSubstituteNameLength uint16\n\tPrintNameOffset      uint16\n\tPrintNameLength      uint16\n\tPathBuffer           [1]uint16\n}\n\ntype reparseDataBuffer struct {\n\tReparseTag        uint32\n\tReparseDataLength uint16\n\tReserved          uint16\n\n\t// GenericReparseBuffer\n\treparseBuffer byte\n}\n\nconst (\n\tFSCTL_CREATE_OR_GET_OBJECT_ID             = 0x0900C0\n\tFSCTL_DELETE_OBJECT_ID                    = 0x0900A0\n\tFSCTL_DELETE_REPARSE_POINT                = 0x0900AC\n\tFSCTL_DUPLICATE_EXTENTS_TO_FILE           = 0x098344\n\tFSCTL_DUPLICATE_EXTENTS_TO_FILE_EX        = 0x0983E8\n\tFSCTL_FILESYSTEM_GET_STATISTICS           = 0x090060\n\tFSCTL_FILE_LEVEL_TRIM                     = 0x098208\n\tFSCTL_FIND_FILES_BY_SID                   = 0x09008F\n\tFSCTL_GET_COMPRESSION                     = 0x09003C\n\tFSCTL_GET_INTEGRITY_INFORMATION           = 0x09027C\n\tFSCTL_GET_NTFS_VOLUME_DATA                = 0x090064\n\tFSCTL_GET_REFS_VOLUME_DATA                = 0x0902D8\n\tFSCTL_GET_OBJECT_ID                       = 0x09009C\n\tFSCTL_GET_REPARSE_POINT                   = 0x0900A8\n\tFSCTL_GET_RETRIEVAL_POINTER_COUNT         = 0x09042B\n\tFSCTL_GET_RETRIEVAL_POINTERS              = 0x090073\n\tFSCTL_GET_RETRIEVAL_POINTERS_AND_REFCOUNT = 0x0903D3\n\tFSCTL_IS_PATHNAME_VALID                   = 0x09002C\n\tFSCTL_LMR_SET_LINK_TRACKING_INFORMATION   = 0x1400EC\n\tFSCTL_MARK_HANDLE                         = 0x0900FC\n\tFSCTL_OFFLOAD_READ                        = 0x094264\n\tFSCTL_OFFLOAD_WRITE                       = 0x098268\n\tFSCTL_PIPE_PEEK                           = 0x11400C\n\tFSCTL_PIPE_TRANSCEIVE                     = 0x11C017\n\tFSCTL_PIPE_WAIT                           = 0x110018\n\tFSCTL_QUERY_ALLOCATED_RANGES              = 0x0940CF\n\tFSCTL_QUERY_FAT_BPB                       = 0x090058\n\tFSCTL_QUERY_FILE_REGIONS                  = 0x090284\n\tFSCTL_QUERY_ON_DISK_VOLUME_INFO           = 0x09013C\n\tFSCTL_QUERY_SPARING_INFO                  = 0x090138\n\tFSCTL_READ_FILE_USN_DATA                  = 0x0900EB\n\tFSCTL_RECALL_FILE                         = 0x090117\n\tFSCTL_REFS_STREAM_SNAPSHOT_MANAGEMENT     = 0x090440\n\tFSCTL_SET_COMPRESSION                     = 0x09C040\n\tFSCTL_SET_DEFECT_MANAGEMENT               = 0x098134\n\tFSCTL_SET_ENCRYPTION                      = 0x0900D7\n\tFSCTL_SET_INTEGRITY_INFORMATION           = 0x09C280\n\tFSCTL_SET_INTEGRITY_INFORMATION_EX        = 0x090380\n\tFSCTL_SET_OBJECT_ID                       = 0x090098\n\tFSCTL_SET_OBJECT_ID_EXTENDED              = 0x0900BC\n\tFSCTL_SET_REPARSE_POINT                   = 0x0900A4\n\tFSCTL_SET_SPARSE                          = 0x0900C4\n\tFSCTL_SET_ZERO_DATA                       = 0x0980C8\n\tFSCTL_SET_ZERO_ON_DEALLOCATION            = 0x090194\n\tFSCTL_SIS_COPYFILE                        = 0x090100\n\tFSCTL_WRITE_USN_CLOSE_RECORD              = 0x0900EF\n\n\tMAXIMUM_REPARSE_DATA_BUFFER_SIZE = 16 * 1024\n\tIO_REPARSE_TAG_MOUNT_POINT       = 0xA0000003\n\tIO_REPARSE_TAG_SYMLINK           = 0xA000000C\n\tSYMBOLIC_LINK_FLAG_DIRECTORY     = 0x1\n)\n\n// FILE_ZERO_DATA_INFORMATION from winioctl.h\ntype FileZeroDataInformation struct {\n\tFileOffset      int64\n\tBeyondFinalZero int64\n}\n\nconst (\n\tComputerNameNetBIOS                   = 0\n\tComputerNameDnsHostname               = 1\n\tComputerNameDnsDomain                 = 2\n\tComputerNameDnsFullyQualified         = 3\n\tComputerNamePhysicalNetBIOS           = 4\n\tComputerNamePhysicalDnsHostname       = 5\n\tComputerNamePhysicalDnsDomain         = 6\n\tComputerNamePhysicalDnsFullyQualified = 7\n\tComputerNameMax                       = 8\n)\n\n// For MessageBox()\nconst (\n\tMB_OK                   = 0x00000000\n\tMB_OKCANCEL             = 0x00000001\n\tMB_ABORTRETRYIGNORE     = 0x00000002\n\tMB_YESNOCANCEL          = 0x00000003\n\tMB_YESNO                = 0x00000004\n\tMB_RETRYCANCEL          = 0x00000005\n\tMB_CANCELTRYCONTINUE    = 0x00000006\n\tMB_ICONHAND             = 0x00000010\n\tMB_ICONQUESTION         = 0x00000020\n\tMB_ICONEXCLAMATION      = 0x00000030\n\tMB_ICONASTERISK         = 0x00000040\n\tMB_USERICON             = 0x00000080\n\tMB_ICONWARNING          = MB_ICONEXCLAMATION\n\tMB_ICONERROR            = MB_ICONHAND\n\tMB_ICONINFORMATION      = MB_ICONASTERISK\n\tMB_ICONSTOP             = MB_ICONHAND\n\tMB_DEFBUTTON1           = 0x00000000\n\tMB_DEFBUTTON2           = 0x00000100\n\tMB_DEFBUTTON3           = 0x00000200\n\tMB_DEFBUTTON4           = 0x00000300\n\tMB_APPLMODAL            = 0x00000000\n\tMB_SYSTEMMODAL          = 0x00001000\n\tMB_TASKMODAL            = 0x00002000\n\tMB_HELP                 = 0x00004000\n\tMB_NOFOCUS              = 0x00008000\n\tMB_SETFOREGROUND        = 0x00010000\n\tMB_DEFAULT_DESKTOP_ONLY = 0x00020000\n\tMB_TOPMOST              = 0x00040000\n\tMB_RIGHT                = 0x00080000\n\tMB_RTLREADING           = 0x00100000\n\tMB_SERVICE_NOTIFICATION = 0x00200000\n)\n\nconst (\n\tMOVEFILE_REPLACE_EXISTING      = 0x1\n\tMOVEFILE_COPY_ALLOWED          = 0x2\n\tMOVEFILE_DELAY_UNTIL_REBOOT    = 0x4\n\tMOVEFILE_WRITE_THROUGH         = 0x8\n\tMOVEFILE_CREATE_HARDLINK       = 0x10\n\tMOVEFILE_FAIL_IF_NOT_TRACKABLE = 0x20\n)\n\n// Flags for GetAdaptersAddresses, see\n// https://learn.microsoft.com/en-us/windows/win32/api/iphlpapi/nf-iphlpapi-getadaptersaddresses.\nconst (\n\tGAA_FLAG_SKIP_UNICAST                = 0x1\n\tGAA_FLAG_SKIP_ANYCAST                = 0x2\n\tGAA_FLAG_SKIP_MULTICAST              = 0x4\n\tGAA_FLAG_SKIP_DNS_SERVER             = 0x8\n\tGAA_FLAG_INCLUDE_PREFIX              = 0x10\n\tGAA_FLAG_SKIP_FRIENDLY_NAME          = 0x20\n\tGAA_FLAG_INCLUDE_WINS_INFO           = 0x40\n\tGAA_FLAG_INCLUDE_GATEWAYS            = 0x80\n\tGAA_FLAG_INCLUDE_ALL_INTERFACES      = 0x100\n\tGAA_FLAG_INCLUDE_ALL_COMPARTMENTS    = 0x200\n\tGAA_FLAG_INCLUDE_TUNNEL_BINDINGORDER = 0x400\n)\n\nconst (\n\tIF_TYPE_OTHER              = 1\n\tIF_TYPE_ETHERNET_CSMACD    = 6\n\tIF_TYPE_ISO88025_TOKENRING = 9\n\tIF_TYPE_PPP                = 23\n\tIF_TYPE_SOFTWARE_LOOPBACK  = 24\n\tIF_TYPE_ATM                = 37\n\tIF_TYPE_IEEE80211          = 71\n\tIF_TYPE_TUNNEL             = 131\n\tIF_TYPE_IEEE1394           = 144\n)\n\n// Enum NL_PREFIX_ORIGIN for [IpAdapterUnicastAddress], see\n// https://learn.microsoft.com/en-us/windows/win32/api/nldef/ne-nldef-nl_prefix_origin\nconst (\n\tIpPrefixOriginOther               = 0\n\tIpPrefixOriginManual              = 1\n\tIpPrefixOriginWellKnown           = 2\n\tIpPrefixOriginDhcp                = 3\n\tIpPrefixOriginRouterAdvertisement = 4\n\tIpPrefixOriginUnchanged           = 1 << 4\n)\n\n// Enum NL_SUFFIX_ORIGIN for [IpAdapterUnicastAddress], see\n// https://learn.microsoft.com/en-us/windows/win32/api/nldef/ne-nldef-nl_suffix_origin\nconst (\n\tNlsoOther                      = 0\n\tNlsoManual                     = 1\n\tNlsoWellKnown                  = 2\n\tNlsoDhcp                       = 3\n\tNlsoLinkLayerAddress           = 4\n\tNlsoRandom                     = 5\n\tIpSuffixOriginOther            = 0\n\tIpSuffixOriginManual           = 1\n\tIpSuffixOriginWellKnown        = 2\n\tIpSuffixOriginDhcp             = 3\n\tIpSuffixOriginLinkLayerAddress = 4\n\tIpSuffixOriginRandom           = 5\n\tIpSuffixOriginUnchanged        = 1 << 4\n)\n\n// Enum NL_DAD_STATE for [IpAdapterUnicastAddress], see\n// https://learn.microsoft.com/en-us/windows/win32/api/nldef/ne-nldef-nl_dad_state\nconst (\n\tNldsInvalid          = 0\n\tNldsTentative        = 1\n\tNldsDuplicate        = 2\n\tNldsDeprecated       = 3\n\tNldsPreferred        = 4\n\tIpDadStateInvalid    = 0\n\tIpDadStateTentative  = 1\n\tIpDadStateDuplicate  = 2\n\tIpDadStateDeprecated = 3\n\tIpDadStatePreferred  = 4\n)\n\ntype SocketAddress struct {\n\tSockaddr       *syscall.RawSockaddrAny\n\tSockaddrLength int32\n}\n\n// IP returns an IPv4 or IPv6 address, or nil if the underlying SocketAddress is neither.\nfunc (addr *SocketAddress) IP() net.IP {\n\tif uintptr(addr.SockaddrLength) >= unsafe.Sizeof(RawSockaddrInet4{}) && addr.Sockaddr.Addr.Family == AF_INET {\n\t\treturn (*RawSockaddrInet4)(unsafe.Pointer(addr.Sockaddr)).Addr[:]\n\t} else if uintptr(addr.SockaddrLength) >= unsafe.Sizeof(RawSockaddrInet6{}) && addr.Sockaddr.Addr.Family == AF_INET6 {\n\t\treturn (*RawSockaddrInet6)(unsafe.Pointer(addr.Sockaddr)).Addr[:]\n\t}\n\treturn nil\n}\n\ntype IpAdapterUnicastAddress struct {\n\tLength             uint32\n\tFlags              uint32\n\tNext               *IpAdapterUnicastAddress\n\tAddress            SocketAddress\n\tPrefixOrigin       int32\n\tSuffixOrigin       int32\n\tDadState           int32\n\tValidLifetime      uint32\n\tPreferredLifetime  uint32\n\tLeaseLifetime      uint32\n\tOnLinkPrefixLength uint8\n}\n\ntype IpAdapterAnycastAddress struct {\n\tLength  uint32\n\tFlags   uint32\n\tNext    *IpAdapterAnycastAddress\n\tAddress SocketAddress\n}\n\ntype IpAdapterMulticastAddress struct {\n\tLength  uint32\n\tFlags   uint32\n\tNext    *IpAdapterMulticastAddress\n\tAddress SocketAddress\n}\n\ntype IpAdapterDnsServerAdapter struct {\n\tLength   uint32\n\tReserved uint32\n\tNext     *IpAdapterDnsServerAdapter\n\tAddress  SocketAddress\n}\n\ntype IpAdapterPrefix struct {\n\tLength       uint32\n\tFlags        uint32\n\tNext         *IpAdapterPrefix\n\tAddress      SocketAddress\n\tPrefixLength uint32\n}\n\ntype IpAdapterAddresses struct {\n\tLength                 uint32\n\tIfIndex                uint32\n\tNext                   *IpAdapterAddresses\n\tAdapterName            *byte\n\tFirstUnicastAddress    *IpAdapterUnicastAddress\n\tFirstAnycastAddress    *IpAdapterAnycastAddress\n\tFirstMulticastAddress  *IpAdapterMulticastAddress\n\tFirstDnsServerAddress  *IpAdapterDnsServerAdapter\n\tDnsSuffix              *uint16\n\tDescription            *uint16\n\tFriendlyName           *uint16\n\tPhysicalAddress        [syscall.MAX_ADAPTER_ADDRESS_LENGTH]byte\n\tPhysicalAddressLength  uint32\n\tFlags                  uint32\n\tMtu                    uint32\n\tIfType                 uint32\n\tOperStatus             uint32\n\tIpv6IfIndex            uint32\n\tZoneIndices            [16]uint32\n\tFirstPrefix            *IpAdapterPrefix\n\tTransmitLinkSpeed      uint64\n\tReceiveLinkSpeed       uint64\n\tFirstWinsServerAddress *IpAdapterWinsServerAddress\n\tFirstGatewayAddress    *IpAdapterGatewayAddress\n\tIpv4Metric             uint32\n\tIpv6Metric             uint32\n\tLuid                   uint64\n\tDhcpv4Server           SocketAddress\n\tCompartmentId          uint32\n\tNetworkGuid            GUID\n\tConnectionType         uint32\n\tTunnelType             uint32\n\tDhcpv6Server           SocketAddress\n\tDhcpv6ClientDuid       [MAX_DHCPV6_DUID_LENGTH]byte\n\tDhcpv6ClientDuidLength uint32\n\tDhcpv6Iaid             uint32\n\tFirstDnsSuffix         *IpAdapterDNSSuffix\n}\n\ntype IpAdapterWinsServerAddress struct {\n\tLength   uint32\n\tReserved uint32\n\tNext     *IpAdapterWinsServerAddress\n\tAddress  SocketAddress\n}\n\ntype IpAdapterGatewayAddress struct {\n\tLength   uint32\n\tReserved uint32\n\tNext     *IpAdapterGatewayAddress\n\tAddress  SocketAddress\n}\n\ntype IpAdapterDNSSuffix struct {\n\tNext   *IpAdapterDNSSuffix\n\tString [MAX_DNS_SUFFIX_STRING_LENGTH]uint16\n}\n\nconst (\n\tIfOperStatusUp             = 1\n\tIfOperStatusDown           = 2\n\tIfOperStatusTesting        = 3\n\tIfOperStatusUnknown        = 4\n\tIfOperStatusDormant        = 5\n\tIfOperStatusNotPresent     = 6\n\tIfOperStatusLowerLayerDown = 7\n)\n\nconst (\n\tIF_MAX_PHYS_ADDRESS_LENGTH = 32\n\tIF_MAX_STRING_SIZE         = 256\n)\n\n// MIB_IF_ENTRY_LEVEL enumeration from netioapi.h or\n// https://learn.microsoft.com/en-us/windows/win32/api/netioapi/nf-netioapi-getifentry2ex.\nconst (\n\tMibIfEntryNormal                  = 0\n\tMibIfEntryNormalWithoutStatistics = 2\n)\n\n// MIB_NOTIFICATION_TYPE enumeration from netioapi.h or\n// https://learn.microsoft.com/en-us/windows/win32/api/netioapi/ne-netioapi-mib_notification_type.\nconst (\n\tMibParameterNotification = 0\n\tMibAddInstance           = 1\n\tMibDeleteInstance        = 2\n\tMibInitialNotification   = 3\n)\n\n// MibIfRow2 stores information about a particular interface. See\n// https://learn.microsoft.com/en-us/windows/win32/api/netioapi/ns-netioapi-mib_if_row2.\ntype MibIfRow2 struct {\n\tInterfaceLuid               uint64\n\tInterfaceIndex              uint32\n\tInterfaceGuid               GUID\n\tAlias                       [IF_MAX_STRING_SIZE + 1]uint16\n\tDescription                 [IF_MAX_STRING_SIZE + 1]uint16\n\tPhysicalAddressLength       uint32\n\tPhysicalAddress             [IF_MAX_PHYS_ADDRESS_LENGTH]uint8\n\tPermanentPhysicalAddress    [IF_MAX_PHYS_ADDRESS_LENGTH]uint8\n\tMtu                         uint32\n\tType                        uint32\n\tTunnelType                  uint32\n\tMediaType                   uint32\n\tPhysicalMediumType          uint32\n\tAccessType                  uint32\n\tDirectionType               uint32\n\tInterfaceAndOperStatusFlags uint8\n\tOperStatus                  uint32\n\tAdminStatus                 uint32\n\tMediaConnectState           uint32\n\tNetworkGuid                 GUID\n\tConnectionType              uint32\n\tTransmitLinkSpeed           uint64\n\tReceiveLinkSpeed            uint64\n\tInOctets                    uint64\n\tInUcastPkts                 uint64\n\tInNUcastPkts                uint64\n\tInDiscards                  uint64\n\tInErrors                    uint64\n\tInUnknownProtos             uint64\n\tInUcastOctets               uint64\n\tInMulticastOctets           uint64\n\tInBroadcastOctets           uint64\n\tOutOctets                   uint64\n\tOutUcastPkts                uint64\n\tOutNUcastPkts               uint64\n\tOutDiscards                 uint64\n\tOutErrors                   uint64\n\tOutUcastOctets              uint64\n\tOutMulticastOctets          uint64\n\tOutBroadcastOctets          uint64\n\tOutQLen                     uint64\n}\n\n// IP_ADDRESS_PREFIX stores an IP address prefix. See\n// https://learn.microsoft.com/en-us/windows/win32/api/netioapi/ns-netioapi-ip_address_prefix.\ntype IpAddressPrefix struct {\n\tPrefix       RawSockaddrInet\n\tPrefixLength uint8\n}\n\n// NL_ROUTE_ORIGIN enumeration from nldef.h or\n// https://learn.microsoft.com/en-us/windows/win32/api/nldef/ne-nldef-nl_route_origin.\nconst (\n\tNlroManual              = 0\n\tNlroWellKnown           = 1\n\tNlroDHCP                = 2\n\tNlroRouterAdvertisement = 3\n\tNlro6to4                = 4\n)\n\n// NL_ROUTE_ORIGIN enumeration from nldef.h or\n// https://learn.microsoft.com/en-us/windows/win32/api/nldef/ne-nldef-nl_route_protocol.\nconst (\n\tMIB_IPPROTO_OTHER             = 1\n\tMIB_IPPROTO_LOCAL             = 2\n\tMIB_IPPROTO_NETMGMT           = 3\n\tMIB_IPPROTO_ICMP              = 4\n\tMIB_IPPROTO_EGP               = 5\n\tMIB_IPPROTO_GGP               = 6\n\tMIB_IPPROTO_HELLO             = 7\n\tMIB_IPPROTO_RIP               = 8\n\tMIB_IPPROTO_IS_IS             = 9\n\tMIB_IPPROTO_ES_IS             = 10\n\tMIB_IPPROTO_CISCO             = 11\n\tMIB_IPPROTO_BBN               = 12\n\tMIB_IPPROTO_OSPF              = 13\n\tMIB_IPPROTO_BGP               = 14\n\tMIB_IPPROTO_IDPR              = 15\n\tMIB_IPPROTO_EIGRP             = 16\n\tMIB_IPPROTO_DVMRP             = 17\n\tMIB_IPPROTO_RPL               = 18\n\tMIB_IPPROTO_DHCP              = 19\n\tMIB_IPPROTO_NT_AUTOSTATIC     = 10002\n\tMIB_IPPROTO_NT_STATIC         = 10006\n\tMIB_IPPROTO_NT_STATIC_NON_DOD = 10007\n)\n\n// MIB_IPFORWARD_ROW2 stores information about an IP route entry. See\n// https://learn.microsoft.com/en-us/windows/win32/api/netioapi/ns-netioapi-mib_ipforward_row2.\ntype MibIpForwardRow2 struct {\n\tInterfaceLuid        uint64\n\tInterfaceIndex       uint32\n\tDestinationPrefix    IpAddressPrefix\n\tNextHop              RawSockaddrInet\n\tSitePrefixLength     uint8\n\tValidLifetime        uint32\n\tPreferredLifetime    uint32\n\tMetric               uint32\n\tProtocol             uint32\n\tLoopback             uint8\n\tAutoconfigureAddress uint8\n\tPublish              uint8\n\tImmortal             uint8\n\tAge                  uint32\n\tOrigin               uint32\n}\n\n// MIB_IPFORWARD_TABLE2 contains a table of IP route entries. See\n// https://learn.microsoft.com/en-us/windows/win32/api/netioapi/ns-netioapi-mib_ipforward_table2.\ntype MibIpForwardTable2 struct {\n\tNumEntries uint32\n\tTable      [1]MibIpForwardRow2\n}\n\n// Rows returns the IP route entries in the table.\nfunc (t *MibIpForwardTable2) Rows() []MibIpForwardRow2 {\n\treturn unsafe.Slice(&t.Table[0], t.NumEntries)\n}\n\n// MIB_UNICASTIPADDRESS_ROW stores information about a unicast IP address. See\n// https://learn.microsoft.com/en-us/windows/win32/api/netioapi/ns-netioapi-mib_unicastipaddress_row.\ntype MibUnicastIpAddressRow struct {\n\tAddress            RawSockaddrInet6 // SOCKADDR_INET union\n\tInterfaceLuid      uint64\n\tInterfaceIndex     uint32\n\tPrefixOrigin       uint32\n\tSuffixOrigin       uint32\n\tValidLifetime      uint32\n\tPreferredLifetime  uint32\n\tOnLinkPrefixLength uint8\n\tSkipAsSource       uint8\n\tDadState           uint32\n\tScopeId            uint32\n\tCreationTimeStamp  Filetime\n}\n\nconst ScopeLevelCount = 16\n\n// MIB_IPINTERFACE_ROW stores interface management information for a particular IP address family on a network interface.\n// See https://learn.microsoft.com/en-us/windows/win32/api/netioapi/ns-netioapi-mib_ipinterface_row.\ntype MibIpInterfaceRow struct {\n\tFamily                               uint16\n\tInterfaceLuid                        uint64\n\tInterfaceIndex                       uint32\n\tMaxReassemblySize                    uint32\n\tInterfaceIdentifier                  uint64\n\tMinRouterAdvertisementInterval       uint32\n\tMaxRouterAdvertisementInterval       uint32\n\tAdvertisingEnabled                   uint8\n\tForwardingEnabled                    uint8\n\tWeakHostSend                         uint8\n\tWeakHostReceive                      uint8\n\tUseAutomaticMetric                   uint8\n\tUseNeighborUnreachabilityDetection   uint8\n\tManagedAddressConfigurationSupported uint8\n\tOtherStatefulConfigurationSupported  uint8\n\tAdvertiseDefaultRoute                uint8\n\tRouterDiscoveryBehavior              uint32\n\tDadTransmits                         uint32\n\tBaseReachableTime                    uint32\n\tRetransmitTime                       uint32\n\tPathMtuDiscoveryTimeout              uint32\n\tLinkLocalAddressBehavior             uint32\n\tLinkLocalAddressTimeout              uint32\n\tZoneIndices                          [ScopeLevelCount]uint32\n\tSitePrefixLength                     uint32\n\tMetric                               uint32\n\tNlMtu                                uint32\n\tConnected                            uint8\n\tSupportsWakeUpPatterns               uint8\n\tSupportsNeighborDiscovery            uint8\n\tSupportsRouterDiscovery              uint8\n\tReachableTime                        uint32\n\tTransmitOffload                      uint32\n\tReceiveOffload                       uint32\n\tDisableDefaultRoutes                 uint8\n}\n\n// Console related constants used for the mode parameter to SetConsoleMode. See\n// https://docs.microsoft.com/en-us/windows/console/setconsolemode for details.\n\nconst (\n\tENABLE_PROCESSED_INPUT        = 0x1\n\tENABLE_LINE_INPUT             = 0x2\n\tENABLE_ECHO_INPUT             = 0x4\n\tENABLE_WINDOW_INPUT           = 0x8\n\tENABLE_MOUSE_INPUT            = 0x10\n\tENABLE_INSERT_MODE            = 0x20\n\tENABLE_QUICK_EDIT_MODE        = 0x40\n\tENABLE_EXTENDED_FLAGS         = 0x80\n\tENABLE_AUTO_POSITION          = 0x100\n\tENABLE_VIRTUAL_TERMINAL_INPUT = 0x200\n\n\tENABLE_PROCESSED_OUTPUT            = 0x1\n\tENABLE_WRAP_AT_EOL_OUTPUT          = 0x2\n\tENABLE_VIRTUAL_TERMINAL_PROCESSING = 0x4\n\tDISABLE_NEWLINE_AUTO_RETURN        = 0x8\n\tENABLE_LVB_GRID_WORLDWIDE          = 0x10\n)\n\n// Pseudo console related constants used for the flags parameter to\n// CreatePseudoConsole. See: https://learn.microsoft.com/en-us/windows/console/createpseudoconsole\nconst (\n\tPSEUDOCONSOLE_INHERIT_CURSOR = 0x1\n)\n\ntype Coord struct {\n\tX int16\n\tY int16\n}\n\ntype SmallRect struct {\n\tLeft   int16\n\tTop    int16\n\tRight  int16\n\tBottom int16\n}\n\n// Used with GetConsoleScreenBuffer to retrieve information about a console\n// screen buffer. See\n// https://docs.microsoft.com/en-us/windows/console/console-screen-buffer-info-str\n// for details.\n\ntype ConsoleScreenBufferInfo struct {\n\tSize              Coord\n\tCursorPosition    Coord\n\tAttributes        uint16\n\tWindow            SmallRect\n\tMaximumWindowSize Coord\n}\n\nconst UNIX_PATH_MAX = 108 // defined in afunix.h\n\nconst (\n\t// flags for JOBOBJECT_BASIC_LIMIT_INFORMATION.LimitFlags\n\tJOB_OBJECT_LIMIT_ACTIVE_PROCESS             = 0x00000008\n\tJOB_OBJECT_LIMIT_AFFINITY                   = 0x00000010\n\tJOB_OBJECT_LIMIT_BREAKAWAY_OK               = 0x00000800\n\tJOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION = 0x00000400\n\tJOB_OBJECT_LIMIT_JOB_MEMORY                 = 0x00000200\n\tJOB_OBJECT_LIMIT_JOB_TIME                   = 0x00000004\n\tJOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE          = 0x00002000\n\tJOB_OBJECT_LIMIT_PRESERVE_JOB_TIME          = 0x00000040\n\tJOB_OBJECT_LIMIT_PRIORITY_CLASS             = 0x00000020\n\tJOB_OBJECT_LIMIT_PROCESS_MEMORY             = 0x00000100\n\tJOB_OBJECT_LIMIT_PROCESS_TIME               = 0x00000002\n\tJOB_OBJECT_LIMIT_SCHEDULING_CLASS           = 0x00000080\n\tJOB_OBJECT_LIMIT_SILENT_BREAKAWAY_OK        = 0x00001000\n\tJOB_OBJECT_LIMIT_SUBSET_AFFINITY            = 0x00004000\n\tJOB_OBJECT_LIMIT_WORKINGSET                 = 0x00000001\n)\n\ntype IO_COUNTERS struct {\n\tReadOperationCount  uint64\n\tWriteOperationCount uint64\n\tOtherOperationCount uint64\n\tReadTransferCount   uint64\n\tWriteTransferCount  uint64\n\tOtherTransferCount  uint64\n}\n\ntype JOBOBJECT_EXTENDED_LIMIT_INFORMATION struct {\n\tBasicLimitInformation JOBOBJECT_BASIC_LIMIT_INFORMATION\n\tIoInfo                IO_COUNTERS\n\tProcessMemoryLimit    uintptr\n\tJobMemoryLimit        uintptr\n\tPeakProcessMemoryUsed uintptr\n\tPeakJobMemoryUsed     uintptr\n}\n\nconst (\n\t// UIRestrictionsClass\n\tJOB_OBJECT_UILIMIT_DESKTOP          = 0x00000040\n\tJOB_OBJECT_UILIMIT_DISPLAYSETTINGS  = 0x00000010\n\tJOB_OBJECT_UILIMIT_EXITWINDOWS      = 0x00000080\n\tJOB_OBJECT_UILIMIT_GLOBALATOMS      = 0x00000020\n\tJOB_OBJECT_UILIMIT_HANDLES          = 0x00000001\n\tJOB_OBJECT_UILIMIT_READCLIPBOARD    = 0x00000002\n\tJOB_OBJECT_UILIMIT_SYSTEMPARAMETERS = 0x00000008\n\tJOB_OBJECT_UILIMIT_WRITECLIPBOARD   = 0x00000004\n)\n\ntype JOBOBJECT_BASIC_UI_RESTRICTIONS struct {\n\tUIRestrictionsClass uint32\n}\n\nconst (\n\t// JobObjectInformationClass for QueryInformationJobObject and SetInformationJobObject\n\tJobObjectAssociateCompletionPortInformation = 7\n\tJobObjectBasicAccountingInformation         = 1\n\tJobObjectBasicAndIoAccountingInformation    = 8\n\tJobObjectBasicLimitInformation              = 2\n\tJobObjectBasicProcessIdList                 = 3\n\tJobObjectBasicUIRestrictions                = 4\n\tJobObjectCpuRateControlInformation          = 15\n\tJobObjectEndOfJobTimeInformation            = 6\n\tJobObjectExtendedLimitInformation           = 9\n\tJobObjectGroupInformation                   = 11\n\tJobObjectGroupInformationEx                 = 14\n\tJobObjectLimitViolationInformation          = 13\n\tJobObjectLimitViolationInformation2         = 34\n\tJobObjectNetRateControlInformation          = 32\n\tJobObjectNotificationLimitInformation       = 12\n\tJobObjectNotificationLimitInformation2      = 33\n\tJobObjectSecurityLimitInformation           = 5\n)\n\nconst (\n\tKF_FLAG_DEFAULT                          = 0x00000000\n\tKF_FLAG_FORCE_APP_DATA_REDIRECTION       = 0x00080000\n\tKF_FLAG_RETURN_FILTER_REDIRECTION_TARGET = 0x00040000\n\tKF_FLAG_FORCE_PACKAGE_REDIRECTION        = 0x00020000\n\tKF_FLAG_NO_PACKAGE_REDIRECTION           = 0x00010000\n\tKF_FLAG_FORCE_APPCONTAINER_REDIRECTION   = 0x00020000\n\tKF_FLAG_NO_APPCONTAINER_REDIRECTION      = 0x00010000\n\tKF_FLAG_CREATE                           = 0x00008000\n\tKF_FLAG_DONT_VERIFY                      = 0x00004000\n\tKF_FLAG_DONT_UNEXPAND                    = 0x00002000\n\tKF_FLAG_NO_ALIAS                         = 0x00001000\n\tKF_FLAG_INIT                             = 0x00000800\n\tKF_FLAG_DEFAULT_PATH                     = 0x00000400\n\tKF_FLAG_NOT_PARENT_RELATIVE              = 0x00000200\n\tKF_FLAG_SIMPLE_IDLIST                    = 0x00000100\n\tKF_FLAG_ALIAS_ONLY                       = 0x80000000\n)\n\ntype OsVersionInfoEx struct {\n\tosVersionInfoSize uint32\n\tMajorVersion      uint32\n\tMinorVersion      uint32\n\tBuildNumber       uint32\n\tPlatformId        uint32\n\tCsdVersion        [128]uint16\n\tServicePackMajor  uint16\n\tServicePackMinor  uint16\n\tSuiteMask         uint16\n\tProductType       byte\n\t_                 byte\n}\n\nconst (\n\tEWX_LOGOFF          = 0x00000000\n\tEWX_SHUTDOWN        = 0x00000001\n\tEWX_REBOOT          = 0x00000002\n\tEWX_FORCE           = 0x00000004\n\tEWX_POWEROFF        = 0x00000008\n\tEWX_FORCEIFHUNG     = 0x00000010\n\tEWX_QUICKRESOLVE    = 0x00000020\n\tEWX_RESTARTAPPS     = 0x00000040\n\tEWX_HYBRID_SHUTDOWN = 0x00400000\n\tEWX_BOOTOPTIONS     = 0x01000000\n\n\tSHTDN_REASON_FLAG_COMMENT_REQUIRED          = 0x01000000\n\tSHTDN_REASON_FLAG_DIRTY_PROBLEM_ID_REQUIRED = 0x02000000\n\tSHTDN_REASON_FLAG_CLEAN_UI                  = 0x04000000\n\tSHTDN_REASON_FLAG_DIRTY_UI                  = 0x08000000\n\tSHTDN_REASON_FLAG_USER_DEFINED              = 0x40000000\n\tSHTDN_REASON_FLAG_PLANNED                   = 0x80000000\n\tSHTDN_REASON_MAJOR_OTHER                    = 0x00000000\n\tSHTDN_REASON_MAJOR_NONE                     = 0x00000000\n\tSHTDN_REASON_MAJOR_HARDWARE                 = 0x00010000\n\tSHTDN_REASON_MAJOR_OPERATINGSYSTEM          = 0x00020000\n\tSHTDN_REASON_MAJOR_SOFTWARE                 = 0x00030000\n\tSHTDN_REASON_MAJOR_APPLICATION              = 0x00040000\n\tSHTDN_REASON_MAJOR_SYSTEM                   = 0x00050000\n\tSHTDN_REASON_MAJOR_POWER                    = 0x00060000\n\tSHTDN_REASON_MAJOR_LEGACY_API               = 0x00070000\n\tSHTDN_REASON_MINOR_OTHER                    = 0x00000000\n\tSHTDN_REASON_MINOR_NONE                     = 0x000000ff\n\tSHTDN_REASON_MINOR_MAINTENANCE              = 0x00000001\n\tSHTDN_REASON_MINOR_INSTALLATION             = 0x00000002\n\tSHTDN_REASON_MINOR_UPGRADE                  = 0x00000003\n\tSHTDN_REASON_MINOR_RECONFIG                 = 0x00000004\n\tSHTDN_REASON_MINOR_HUNG                     = 0x00000005\n\tSHTDN_REASON_MINOR_UNSTABLE                 = 0x00000006\n\tSHTDN_REASON_MINOR_DISK                     = 0x00000007\n\tSHTDN_REASON_MINOR_PROCESSOR                = 0x00000008\n\tSHTDN_REASON_MINOR_NETWORKCARD              = 0x00000009\n\tSHTDN_REASON_MINOR_POWER_SUPPLY             = 0x0000000a\n\tSHTDN_REASON_MINOR_CORDUNPLUGGED            = 0x0000000b\n\tSHTDN_REASON_MINOR_ENVIRONMENT              = 0x0000000c\n\tSHTDN_REASON_MINOR_HARDWARE_DRIVER          = 0x0000000d\n\tSHTDN_REASON_MINOR_OTHERDRIVER              = 0x0000000e\n\tSHTDN_REASON_MINOR_BLUESCREEN               = 0x0000000F\n\tSHTDN_REASON_MINOR_SERVICEPACK              = 0x00000010\n\tSHTDN_REASON_MINOR_HOTFIX                   = 0x00000011\n\tSHTDN_REASON_MINOR_SECURITYFIX              = 0x00000012\n\tSHTDN_REASON_MINOR_SECURITY                 = 0x00000013\n\tSHTDN_REASON_MINOR_NETWORK_CONNECTIVITY     = 0x00000014\n\tSHTDN_REASON_MINOR_WMI                      = 0x00000015\n\tSHTDN_REASON_MINOR_SERVICEPACK_UNINSTALL    = 0x00000016\n\tSHTDN_REASON_MINOR_HOTFIX_UNINSTALL         = 0x00000017\n\tSHTDN_REASON_MINOR_SECURITYFIX_UNINSTALL    = 0x00000018\n\tSHTDN_REASON_MINOR_MMC                      = 0x00000019\n\tSHTDN_REASON_MINOR_SYSTEMRESTORE            = 0x0000001a\n\tSHTDN_REASON_MINOR_TERMSRV                  = 0x00000020\n\tSHTDN_REASON_MINOR_DC_PROMOTION             = 0x00000021\n\tSHTDN_REASON_MINOR_DC_DEMOTION              = 0x00000022\n\tSHTDN_REASON_UNKNOWN                        = SHTDN_REASON_MINOR_NONE\n\tSHTDN_REASON_LEGACY_API                     = SHTDN_REASON_MAJOR_LEGACY_API | SHTDN_REASON_FLAG_PLANNED\n\tSHTDN_REASON_VALID_BIT_MASK                 = 0xc0ffffff\n\n\tSHUTDOWN_NORETRY = 0x1\n)\n\n// Flags used for GetModuleHandleEx\nconst (\n\tGET_MODULE_HANDLE_EX_FLAG_PIN                = 1\n\tGET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT = 2\n\tGET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS       = 4\n)\n\n// MUI function flag values\nconst (\n\tMUI_LANGUAGE_ID                    = 0x4\n\tMUI_LANGUAGE_NAME                  = 0x8\n\tMUI_MERGE_SYSTEM_FALLBACK          = 0x10\n\tMUI_MERGE_USER_FALLBACK            = 0x20\n\tMUI_UI_FALLBACK                    = MUI_MERGE_SYSTEM_FALLBACK | MUI_MERGE_USER_FALLBACK\n\tMUI_THREAD_LANGUAGES               = 0x40\n\tMUI_CONSOLE_FILTER                 = 0x100\n\tMUI_COMPLEX_SCRIPT_FILTER          = 0x200\n\tMUI_RESET_FILTERS                  = 0x001\n\tMUI_USER_PREFERRED_UI_LANGUAGES    = 0x10\n\tMUI_USE_INSTALLED_LANGUAGES        = 0x20\n\tMUI_USE_SEARCH_ALL_LANGUAGES       = 0x40\n\tMUI_LANG_NEUTRAL_PE_FILE           = 0x100\n\tMUI_NON_LANG_NEUTRAL_FILE          = 0x200\n\tMUI_MACHINE_LANGUAGE_SETTINGS      = 0x400\n\tMUI_FILETYPE_NOT_LANGUAGE_NEUTRAL  = 0x001\n\tMUI_FILETYPE_LANGUAGE_NEUTRAL_MAIN = 0x002\n\tMUI_FILETYPE_LANGUAGE_NEUTRAL_MUI  = 0x004\n\tMUI_QUERY_TYPE                     = 0x001\n\tMUI_QUERY_CHECKSUM                 = 0x002\n\tMUI_QUERY_LANGUAGE_NAME            = 0x004\n\tMUI_QUERY_RESOURCE_TYPES           = 0x008\n\tMUI_FILEINFO_VERSION               = 0x001\n\n\tMUI_FULL_LANGUAGE      = 0x01\n\tMUI_PARTIAL_LANGUAGE   = 0x02\n\tMUI_LIP_LANGUAGE       = 0x04\n\tMUI_LANGUAGE_INSTALLED = 0x20\n\tMUI_LANGUAGE_LICENSED  = 0x40\n)\n\n// FILE_INFO_BY_HANDLE_CLASS constants for SetFileInformationByHandle/GetFileInformationByHandleEx\nconst (\n\tFileBasicInfo                  = 0\n\tFileStandardInfo               = 1\n\tFileNameInfo                   = 2\n\tFileRenameInfo                 = 3\n\tFileDispositionInfo            = 4\n\tFileAllocationInfo             = 5\n\tFileEndOfFileInfo              = 6\n\tFileStreamInfo                 = 7\n\tFileCompressionInfo            = 8\n\tFileAttributeTagInfo           = 9\n\tFileIdBothDirectoryInfo        = 10\n\tFileIdBothDirectoryRestartInfo = 11\n\tFileIoPriorityHintInfo         = 12\n\tFileRemoteProtocolInfo         = 13\n\tFileFullDirectoryInfo          = 14\n\tFileFullDirectoryRestartInfo   = 15\n\tFileStorageInfo                = 16\n\tFileAlignmentInfo              = 17\n\tFileIdInfo                     = 18\n\tFileIdExtdDirectoryInfo        = 19\n\tFileIdExtdDirectoryRestartInfo = 20\n\tFileDispositionInfoEx          = 21\n\tFileRenameInfoEx               = 22\n\tFileCaseSensitiveInfo          = 23\n\tFileNormalizedNameInfo         = 24\n)\n\n// LoadLibrary flags for determining from where to search for a DLL\nconst (\n\tDONT_RESOLVE_DLL_REFERENCES               = 0x1\n\tLOAD_LIBRARY_AS_DATAFILE                  = 0x2\n\tLOAD_WITH_ALTERED_SEARCH_PATH             = 0x8\n\tLOAD_IGNORE_CODE_AUTHZ_LEVEL              = 0x10\n\tLOAD_LIBRARY_AS_IMAGE_RESOURCE            = 0x20\n\tLOAD_LIBRARY_AS_DATAFILE_EXCLUSIVE        = 0x40\n\tLOAD_LIBRARY_REQUIRE_SIGNED_TARGET        = 0x80\n\tLOAD_LIBRARY_SEARCH_DLL_LOAD_DIR          = 0x100\n\tLOAD_LIBRARY_SEARCH_APPLICATION_DIR       = 0x200\n\tLOAD_LIBRARY_SEARCH_USER_DIRS             = 0x400\n\tLOAD_LIBRARY_SEARCH_SYSTEM32              = 0x800\n\tLOAD_LIBRARY_SEARCH_DEFAULT_DIRS          = 0x1000\n\tLOAD_LIBRARY_SAFE_CURRENT_DIRS            = 0x00002000\n\tLOAD_LIBRARY_SEARCH_SYSTEM32_NO_FORWARDER = 0x00004000\n\tLOAD_LIBRARY_OS_INTEGRITY_CONTINUITY      = 0x00008000\n)\n\n// RegNotifyChangeKeyValue notifyFilter flags.\nconst (\n\t// REG_NOTIFY_CHANGE_NAME notifies the caller if a subkey is added or deleted.\n\tREG_NOTIFY_CHANGE_NAME = 0x00000001\n\n\t// REG_NOTIFY_CHANGE_ATTRIBUTES notifies the caller of changes to the attributes of the key, such as the security descriptor information.\n\tREG_NOTIFY_CHANGE_ATTRIBUTES = 0x00000002\n\n\t// REG_NOTIFY_CHANGE_LAST_SET notifies the caller of changes to a value of the key. This can include adding or deleting a value, or changing an existing value.\n\tREG_NOTIFY_CHANGE_LAST_SET = 0x00000004\n\n\t// REG_NOTIFY_CHANGE_SECURITY notifies the caller of changes to the security descriptor of the key.\n\tREG_NOTIFY_CHANGE_SECURITY = 0x00000008\n\n\t// REG_NOTIFY_THREAD_AGNOSTIC indicates that the lifetime of the registration must not be tied to the lifetime of the thread issuing the RegNotifyChangeKeyValue call. Note: This flag value is only supported in Windows 8 and later.\n\tREG_NOTIFY_THREAD_AGNOSTIC = 0x10000000\n)\n\ntype CommTimeouts struct {\n\tReadIntervalTimeout         uint32\n\tReadTotalTimeoutMultiplier  uint32\n\tReadTotalTimeoutConstant    uint32\n\tWriteTotalTimeoutMultiplier uint32\n\tWriteTotalTimeoutConstant   uint32\n}\n\n// NTUnicodeString is a UTF-16 string for NT native APIs, corresponding to UNICODE_STRING.\ntype NTUnicodeString struct {\n\t// Note: Length and MaximumLength are in *bytes*, not uint16s.\n\t// They should always be even.\n\tLength        uint16\n\tMaximumLength uint16\n\tBuffer        *uint16\n}\n\n// NTString is an ANSI string for NT native APIs, corresponding to STRING.\ntype NTString struct {\n\tLength        uint16\n\tMaximumLength uint16\n\tBuffer        *byte\n}\n\ntype LIST_ENTRY struct {\n\tFlink *LIST_ENTRY\n\tBlink *LIST_ENTRY\n}\n\ntype RUNTIME_FUNCTION struct {\n\tBeginAddress uint32\n\tEndAddress   uint32\n\tUnwindData   uint32\n}\n\ntype LDR_DATA_TABLE_ENTRY struct {\n\treserved1          [2]uintptr\n\tInMemoryOrderLinks LIST_ENTRY\n\treserved2          [2]uintptr\n\tDllBase            uintptr\n\treserved3          [2]uintptr\n\tFullDllName        NTUnicodeString\n\treserved4          [8]byte\n\treserved5          [3]uintptr\n\treserved6          uintptr\n\tTimeDateStamp      uint32\n}\n\ntype PEB_LDR_DATA struct {\n\treserved1               [8]byte\n\treserved2               [3]uintptr\n\tInMemoryOrderModuleList LIST_ENTRY\n}\n\ntype CURDIR struct {\n\tDosPath NTUnicodeString\n\tHandle  Handle\n}\n\ntype RTL_DRIVE_LETTER_CURDIR struct {\n\tFlags     uint16\n\tLength    uint16\n\tTimeStamp uint32\n\tDosPath   NTString\n}\n\ntype RTL_USER_PROCESS_PARAMETERS struct {\n\tMaximumLength, Length uint32\n\n\tFlags, DebugFlags uint32\n\n\tConsoleHandle                                Handle\n\tConsoleFlags                                 uint32\n\tStandardInput, StandardOutput, StandardError Handle\n\n\tCurrentDirectory CURDIR\n\tDllPath          NTUnicodeString\n\tImagePathName    NTUnicodeString\n\tCommandLine      NTUnicodeString\n\tEnvironment      unsafe.Pointer\n\n\tStartingX, StartingY, CountX, CountY, CountCharsX, CountCharsY, FillAttribute uint32\n\n\tWindowFlags, ShowWindowFlags                     uint32\n\tWindowTitle, DesktopInfo, ShellInfo, RuntimeData NTUnicodeString\n\tCurrentDirectories                               [32]RTL_DRIVE_LETTER_CURDIR\n\n\tEnvironmentSize, EnvironmentVersion uintptr\n\n\tPackageDependencyData unsafe.Pointer\n\tProcessGroupId        uint32\n\tLoaderThreads         uint32\n\n\tRedirectionDllName               NTUnicodeString\n\tHeapPartitionName                NTUnicodeString\n\tDefaultThreadpoolCpuSetMasks     uintptr\n\tDefaultThreadpoolCpuSetMaskCount uint32\n}\n\ntype PEB struct {\n\treserved1              [2]byte\n\tBeingDebugged          byte\n\tBitField               byte\n\treserved3              uintptr\n\tImageBaseAddress       uintptr\n\tLdr                    *PEB_LDR_DATA\n\tProcessParameters      *RTL_USER_PROCESS_PARAMETERS\n\treserved4              [3]uintptr\n\tAtlThunkSListPtr       uintptr\n\treserved5              uintptr\n\treserved6              uint32\n\treserved7              uintptr\n\treserved8              uint32\n\tAtlThunkSListPtr32     uint32\n\treserved9              [45]uintptr\n\treserved10             [96]byte\n\tPostProcessInitRoutine uintptr\n\treserved11             [128]byte\n\treserved12             [1]uintptr\n\tSessionId              uint32\n}\n\ntype OBJECT_ATTRIBUTES struct {\n\tLength             uint32\n\tRootDirectory      Handle\n\tObjectName         *NTUnicodeString\n\tAttributes         uint32\n\tSecurityDescriptor *SECURITY_DESCRIPTOR\n\tSecurityQoS        *SECURITY_QUALITY_OF_SERVICE\n}\n\n// Values for the Attributes member of OBJECT_ATTRIBUTES.\nconst (\n\tOBJ_INHERIT                       = 0x00000002\n\tOBJ_PERMANENT                     = 0x00000010\n\tOBJ_EXCLUSIVE                     = 0x00000020\n\tOBJ_CASE_INSENSITIVE              = 0x00000040\n\tOBJ_OPENIF                        = 0x00000080\n\tOBJ_OPENLINK                      = 0x00000100\n\tOBJ_KERNEL_HANDLE                 = 0x00000200\n\tOBJ_FORCE_ACCESS_CHECK            = 0x00000400\n\tOBJ_IGNORE_IMPERSONATED_DEVICEMAP = 0x00000800\n\tOBJ_DONT_REPARSE                  = 0x00001000\n\tOBJ_VALID_ATTRIBUTES              = 0x00001FF2\n)\n\ntype IO_STATUS_BLOCK struct {\n\tStatus      NTStatus\n\tInformation uintptr\n}\n\ntype RTLP_CURDIR_REF struct {\n\tRefCount int32\n\tHandle   Handle\n}\n\ntype RTL_RELATIVE_NAME struct {\n\tRelativeName        NTUnicodeString\n\tContainingDirectory Handle\n\tCurDirRef           *RTLP_CURDIR_REF\n}\n\nconst (\n\t// CreateDisposition flags for NtCreateFile and NtCreateNamedPipeFile.\n\tFILE_SUPERSEDE           = 0x00000000\n\tFILE_OPEN                = 0x00000001\n\tFILE_CREATE              = 0x00000002\n\tFILE_OPEN_IF             = 0x00000003\n\tFILE_OVERWRITE           = 0x00000004\n\tFILE_OVERWRITE_IF        = 0x00000005\n\tFILE_MAXIMUM_DISPOSITION = 0x00000005\n\n\t// CreateOptions flags for NtCreateFile and NtCreateNamedPipeFile.\n\tFILE_DIRECTORY_FILE            = 0x00000001\n\tFILE_WRITE_THROUGH             = 0x00000002\n\tFILE_SEQUENTIAL_ONLY           = 0x00000004\n\tFILE_NO_INTERMEDIATE_BUFFERING = 0x00000008\n\tFILE_SYNCHRONOUS_IO_ALERT      = 0x00000010\n\tFILE_SYNCHRONOUS_IO_NONALERT   = 0x00000020\n\tFILE_NON_DIRECTORY_FILE        = 0x00000040\n\tFILE_CREATE_TREE_CONNECTION    = 0x00000080\n\tFILE_COMPLETE_IF_OPLOCKED      = 0x00000100\n\tFILE_NO_EA_KNOWLEDGE           = 0x00000200\n\tFILE_OPEN_REMOTE_INSTANCE      = 0x00000400\n\tFILE_RANDOM_ACCESS             = 0x00000800\n\tFILE_DELETE_ON_CLOSE           = 0x00001000\n\tFILE_OPEN_BY_FILE_ID           = 0x00002000\n\tFILE_OPEN_FOR_BACKUP_INTENT    = 0x00004000\n\tFILE_NO_COMPRESSION            = 0x00008000\n\tFILE_OPEN_REQUIRING_OPLOCK     = 0x00010000\n\tFILE_DISALLOW_EXCLUSIVE        = 0x00020000\n\tFILE_RESERVE_OPFILTER          = 0x00100000\n\tFILE_OPEN_REPARSE_POINT        = 0x00200000\n\tFILE_OPEN_NO_RECALL            = 0x00400000\n\tFILE_OPEN_FOR_FREE_SPACE_QUERY = 0x00800000\n\n\t// Parameter constants for NtCreateNamedPipeFile.\n\n\tFILE_PIPE_BYTE_STREAM_TYPE = 0x00000000\n\tFILE_PIPE_MESSAGE_TYPE     = 0x00000001\n\n\tFILE_PIPE_ACCEPT_REMOTE_CLIENTS = 0x00000000\n\tFILE_PIPE_REJECT_REMOTE_CLIENTS = 0x00000002\n\n\tFILE_PIPE_TYPE_VALID_MASK = 0x00000003\n\n\tFILE_PIPE_BYTE_STREAM_MODE = 0x00000000\n\tFILE_PIPE_MESSAGE_MODE     = 0x00000001\n\n\tFILE_PIPE_QUEUE_OPERATION    = 0x00000000\n\tFILE_PIPE_COMPLETE_OPERATION = 0x00000001\n\n\tFILE_PIPE_INBOUND     = 0x00000000\n\tFILE_PIPE_OUTBOUND    = 0x00000001\n\tFILE_PIPE_FULL_DUPLEX = 0x00000002\n\n\tFILE_PIPE_DISCONNECTED_STATE = 0x00000001\n\tFILE_PIPE_LISTENING_STATE    = 0x00000002\n\tFILE_PIPE_CONNECTED_STATE    = 0x00000003\n\tFILE_PIPE_CLOSING_STATE      = 0x00000004\n\n\tFILE_PIPE_CLIENT_END = 0x00000000\n\tFILE_PIPE_SERVER_END = 0x00000001\n)\n\nconst (\n\t// FileInformationClass for NtSetInformationFile\n\tFileBasicInformation                         = 4\n\tFileRenameInformation                        = 10\n\tFileDispositionInformation                   = 13\n\tFilePositionInformation                      = 14\n\tFileEndOfFileInformation                     = 20\n\tFileValidDataLengthInformation               = 39\n\tFileShortNameInformation                     = 40\n\tFileIoPriorityHintInformation                = 43\n\tFileReplaceCompletionInformation             = 61\n\tFileDispositionInformationEx                 = 64\n\tFileCaseSensitiveInformation                 = 71\n\tFileLinkInformation                          = 72\n\tFileCaseSensitiveInformationForceAccessCheck = 75\n\tFileKnownFolderInformation                   = 76\n\n\t// Flags for FILE_RENAME_INFORMATION\n\tFILE_RENAME_REPLACE_IF_EXISTS                    = 0x00000001\n\tFILE_RENAME_POSIX_SEMANTICS                      = 0x00000002\n\tFILE_RENAME_SUPPRESS_PIN_STATE_INHERITANCE       = 0x00000004\n\tFILE_RENAME_SUPPRESS_STORAGE_RESERVE_INHERITANCE = 0x00000008\n\tFILE_RENAME_NO_INCREASE_AVAILABLE_SPACE          = 0x00000010\n\tFILE_RENAME_NO_DECREASE_AVAILABLE_SPACE          = 0x00000020\n\tFILE_RENAME_PRESERVE_AVAILABLE_SPACE             = 0x00000030\n\tFILE_RENAME_IGNORE_READONLY_ATTRIBUTE            = 0x00000040\n\tFILE_RENAME_FORCE_RESIZE_TARGET_SR               = 0x00000080\n\tFILE_RENAME_FORCE_RESIZE_SOURCE_SR               = 0x00000100\n\tFILE_RENAME_FORCE_RESIZE_SR                      = 0x00000180\n\n\t// Flags for FILE_DISPOSITION_INFORMATION_EX\n\tFILE_DISPOSITION_DO_NOT_DELETE             = 0x00000000\n\tFILE_DISPOSITION_DELETE                    = 0x00000001\n\tFILE_DISPOSITION_POSIX_SEMANTICS           = 0x00000002\n\tFILE_DISPOSITION_FORCE_IMAGE_SECTION_CHECK = 0x00000004\n\tFILE_DISPOSITION_ON_CLOSE                  = 0x00000008\n\tFILE_DISPOSITION_IGNORE_READONLY_ATTRIBUTE = 0x00000010\n\n\t// Flags for FILE_CASE_SENSITIVE_INFORMATION\n\tFILE_CS_FLAG_CASE_SENSITIVE_DIR = 0x00000001\n\n\t// Flags for FILE_LINK_INFORMATION\n\tFILE_LINK_REPLACE_IF_EXISTS                    = 0x00000001\n\tFILE_LINK_POSIX_SEMANTICS                      = 0x00000002\n\tFILE_LINK_SUPPRESS_STORAGE_RESERVE_INHERITANCE = 0x00000008\n\tFILE_LINK_NO_INCREASE_AVAILABLE_SPACE          = 0x00000010\n\tFILE_LINK_NO_DECREASE_AVAILABLE_SPACE          = 0x00000020\n\tFILE_LINK_PRESERVE_AVAILABLE_SPACE             = 0x00000030\n\tFILE_LINK_IGNORE_READONLY_ATTRIBUTE            = 0x00000040\n\tFILE_LINK_FORCE_RESIZE_TARGET_SR               = 0x00000080\n\tFILE_LINK_FORCE_RESIZE_SOURCE_SR               = 0x00000100\n\tFILE_LINK_FORCE_RESIZE_SR                      = 0x00000180\n)\n\n// ProcessInformationClasses for NtQueryInformationProcess and NtSetInformationProcess.\nconst (\n\tProcessBasicInformation = iota\n\tProcessQuotaLimits\n\tProcessIoCounters\n\tProcessVmCounters\n\tProcessTimes\n\tProcessBasePriority\n\tProcessRaisePriority\n\tProcessDebugPort\n\tProcessExceptionPort\n\tProcessAccessToken\n\tProcessLdtInformation\n\tProcessLdtSize\n\tProcessDefaultHardErrorMode\n\tProcessIoPortHandlers\n\tProcessPooledUsageAndLimits\n\tProcessWorkingSetWatch\n\tProcessUserModeIOPL\n\tProcessEnableAlignmentFaultFixup\n\tProcessPriorityClass\n\tProcessWx86Information\n\tProcessHandleCount\n\tProcessAffinityMask\n\tProcessPriorityBoost\n\tProcessDeviceMap\n\tProcessSessionInformation\n\tProcessForegroundInformation\n\tProcessWow64Information\n\tProcessImageFileName\n\tProcessLUIDDeviceMapsEnabled\n\tProcessBreakOnTermination\n\tProcessDebugObjectHandle\n\tProcessDebugFlags\n\tProcessHandleTracing\n\tProcessIoPriority\n\tProcessExecuteFlags\n\tProcessTlsInformation\n\tProcessCookie\n\tProcessImageInformation\n\tProcessCycleTime\n\tProcessPagePriority\n\tProcessInstrumentationCallback\n\tProcessThreadStackAllocation\n\tProcessWorkingSetWatchEx\n\tProcessImageFileNameWin32\n\tProcessImageFileMapping\n\tProcessAffinityUpdateMode\n\tProcessMemoryAllocationMode\n\tProcessGroupInformation\n\tProcessTokenVirtualizationEnabled\n\tProcessConsoleHostProcess\n\tProcessWindowInformation\n\tProcessHandleInformation\n\tProcessMitigationPolicy\n\tProcessDynamicFunctionTableInformation\n\tProcessHandleCheckingMode\n\tProcessKeepAliveCount\n\tProcessRevokeFileHandles\n\tProcessWorkingSetControl\n\tProcessHandleTable\n\tProcessCheckStackExtentsMode\n\tProcessCommandLineInformation\n\tProcessProtectionInformation\n\tProcessMemoryExhaustion\n\tProcessFaultInformation\n\tProcessTelemetryIdInformation\n\tProcessCommitReleaseInformation\n\tProcessDefaultCpuSetsInformation\n\tProcessAllowedCpuSetsInformation\n\tProcessSubsystemProcess\n\tProcessJobMemoryInformation\n\tProcessInPrivate\n\tProcessRaiseUMExceptionOnInvalidHandleClose\n\tProcessIumChallengeResponse\n\tProcessChildProcessInformation\n\tProcessHighGraphicsPriorityInformation\n\tProcessSubsystemInformation\n\tProcessEnergyValues\n\tProcessActivityThrottleState\n\tProcessActivityThrottlePolicy\n\tProcessWin32kSyscallFilterInformation\n\tProcessDisableSystemAllowedCpuSets\n\tProcessWakeInformation\n\tProcessEnergyTrackingState\n\tProcessManageWritesToExecutableMemory\n\tProcessCaptureTrustletLiveDump\n\tProcessTelemetryCoverage\n\tProcessEnclaveInformation\n\tProcessEnableReadWriteVmLogging\n\tProcessUptimeInformation\n\tProcessImageSection\n\tProcessDebugAuthInformation\n\tProcessSystemResourceManagement\n\tProcessSequenceNumber\n\tProcessLoaderDetour\n\tProcessSecurityDomainInformation\n\tProcessCombineSecurityDomainsInformation\n\tProcessEnableLogging\n\tProcessLeapSecondInformation\n\tProcessFiberShadowStackAllocation\n\tProcessFreeFiberShadowStackAllocation\n\tProcessAltSystemCallInformation\n\tProcessDynamicEHContinuationTargets\n\tProcessDynamicEnforcedCetCompatibleRanges\n)\n\ntype PROCESS_BASIC_INFORMATION struct {\n\tExitStatus                   NTStatus\n\tPebBaseAddress               *PEB\n\tAffinityMask                 uintptr\n\tBasePriority                 int32\n\tUniqueProcessId              uintptr\n\tInheritedFromUniqueProcessId uintptr\n}\n\ntype SYSTEM_PROCESS_INFORMATION struct {\n\tNextEntryOffset              uint32\n\tNumberOfThreads              uint32\n\tWorkingSetPrivateSize        int64\n\tHardFaultCount               uint32\n\tNumberOfThreadsHighWatermark uint32\n\tCycleTime                    uint64\n\tCreateTime                   int64\n\tUserTime                     int64\n\tKernelTime                   int64\n\tImageName                    NTUnicodeString\n\tBasePriority                 int32\n\tUniqueProcessID              uintptr\n\tInheritedFromUniqueProcessID uintptr\n\tHandleCount                  uint32\n\tSessionID                    uint32\n\tUniqueProcessKey             *uint32\n\tPeakVirtualSize              uintptr\n\tVirtualSize                  uintptr\n\tPageFaultCount               uint32\n\tPeakWorkingSetSize           uintptr\n\tWorkingSetSize               uintptr\n\tQuotaPeakPagedPoolUsage      uintptr\n\tQuotaPagedPoolUsage          uintptr\n\tQuotaPeakNonPagedPoolUsage   uintptr\n\tQuotaNonPagedPoolUsage       uintptr\n\tPagefileUsage                uintptr\n\tPeakPagefileUsage            uintptr\n\tPrivatePageCount             uintptr\n\tReadOperationCount           int64\n\tWriteOperationCount          int64\n\tOtherOperationCount          int64\n\tReadTransferCount            int64\n\tWriteTransferCount           int64\n\tOtherTransferCount           int64\n}\n\n// SystemInformationClasses for NtQuerySystemInformation and NtSetSystemInformation\nconst (\n\tSystemBasicInformation = iota\n\tSystemProcessorInformation\n\tSystemPerformanceInformation\n\tSystemTimeOfDayInformation\n\tSystemPathInformation\n\tSystemProcessInformation\n\tSystemCallCountInformation\n\tSystemDeviceInformation\n\tSystemProcessorPerformanceInformation\n\tSystemFlagsInformation\n\tSystemCallTimeInformation\n\tSystemModuleInformation\n\tSystemLocksInformation\n\tSystemStackTraceInformation\n\tSystemPagedPoolInformation\n\tSystemNonPagedPoolInformation\n\tSystemHandleInformation\n\tSystemObjectInformation\n\tSystemPageFileInformation\n\tSystemVdmInstemulInformation\n\tSystemVdmBopInformation\n\tSystemFileCacheInformation\n\tSystemPoolTagInformation\n\tSystemInterruptInformation\n\tSystemDpcBehaviorInformation\n\tSystemFullMemoryInformation\n\tSystemLoadGdiDriverInformation\n\tSystemUnloadGdiDriverInformation\n\tSystemTimeAdjustmentInformation\n\tSystemSummaryMemoryInformation\n\tSystemMirrorMemoryInformation\n\tSystemPerformanceTraceInformation\n\tsystemObsolete0\n\tSystemExceptionInformation\n\tSystemCrashDumpStateInformation\n\tSystemKernelDebuggerInformation\n\tSystemContextSwitchInformation\n\tSystemRegistryQuotaInformation\n\tSystemExtendServiceTableInformation\n\tSystemPrioritySeperation\n\tSystemVerifierAddDriverInformation\n\tSystemVerifierRemoveDriverInformation\n\tSystemProcessorIdleInformation\n\tSystemLegacyDriverInformation\n\tSystemCurrentTimeZoneInformation\n\tSystemLookasideInformation\n\tSystemTimeSlipNotification\n\tSystemSessionCreate\n\tSystemSessionDetach\n\tSystemSessionInformation\n\tSystemRangeStartInformation\n\tSystemVerifierInformation\n\tSystemVerifierThunkExtend\n\tSystemSessionProcessInformation\n\tSystemLoadGdiDriverInSystemSpace\n\tSystemNumaProcessorMap\n\tSystemPrefetcherInformation\n\tSystemExtendedProcessInformation\n\tSystemRecommendedSharedDataAlignment\n\tSystemComPlusPackage\n\tSystemNumaAvailableMemory\n\tSystemProcessorPowerInformation\n\tSystemEmulationBasicInformation\n\tSystemEmulationProcessorInformation\n\tSystemExtendedHandleInformation\n\tSystemLostDelayedWriteInformation\n\tSystemBigPoolInformation\n\tSystemSessionPoolTagInformation\n\tSystemSessionMappedViewInformation\n\tSystemHotpatchInformation\n\tSystemObjectSecurityMode\n\tSystemWatchdogTimerHandler\n\tSystemWatchdogTimerInformation\n\tSystemLogicalProcessorInformation\n\tSystemWow64SharedInformationObsolete\n\tSystemRegisterFirmwareTableInformationHandler\n\tSystemFirmwareTableInformation\n\tSystemModuleInformationEx\n\tSystemVerifierTriageInformation\n\tSystemSuperfetchInformation\n\tSystemMemoryListInformation\n\tSystemFileCacheInformationEx\n\tSystemThreadPriorityClientIdInformation\n\tSystemProcessorIdleCycleTimeInformation\n\tSystemVerifierCancellationInformation\n\tSystemProcessorPowerInformationEx\n\tSystemRefTraceInformation\n\tSystemSpecialPoolInformation\n\tSystemProcessIdInformation\n\tSystemErrorPortInformation\n\tSystemBootEnvironmentInformation\n\tSystemHypervisorInformation\n\tSystemVerifierInformationEx\n\tSystemTimeZoneInformation\n\tSystemImageFileExecutionOptionsInformation\n\tSystemCoverageInformation\n\tSystemPrefetchPatchInformation\n\tSystemVerifierFaultsInformation\n\tSystemSystemPartitionInformation\n\tSystemSystemDiskInformation\n\tSystemProcessorPerformanceDistribution\n\tSystemNumaProximityNodeInformation\n\tSystemDynamicTimeZoneInformation\n\tSystemCodeIntegrityInformation\n\tSystemProcessorMicrocodeUpdateInformation\n\tSystemProcessorBrandString\n\tSystemVirtualAddressInformation\n\tSystemLogicalProcessorAndGroupInformation\n\tSystemProcessorCycleTimeInformation\n\tSystemStoreInformation\n\tSystemRegistryAppendString\n\tSystemAitSamplingValue\n\tSystemVhdBootInformation\n\tSystemCpuQuotaInformation\n\tSystemNativeBasicInformation\n\tsystemSpare1\n\tSystemLowPriorityIoInformation\n\tSystemTpmBootEntropyInformation\n\tSystemVerifierCountersInformation\n\tSystemPagedPoolInformationEx\n\tSystemSystemPtesInformationEx\n\tSystemNodeDistanceInformation\n\tSystemAcpiAuditInformation\n\tSystemBasicPerformanceInformation\n\tSystemQueryPerformanceCounterInformation\n\tSystemSessionBigPoolInformation\n\tSystemBootGraphicsInformation\n\tSystemScrubPhysicalMemoryInformation\n\tSystemBadPageInformation\n\tSystemProcessorProfileControlArea\n\tSystemCombinePhysicalMemoryInformation\n\tSystemEntropyInterruptTimingCallback\n\tSystemConsoleInformation\n\tSystemPlatformBinaryInformation\n\tSystemThrottleNotificationInformation\n\tSystemHypervisorProcessorCountInformation\n\tSystemDeviceDataInformation\n\tSystemDeviceDataEnumerationInformation\n\tSystemMemoryTopologyInformation\n\tSystemMemoryChannelInformation\n\tSystemBootLogoInformation\n\tSystemProcessorPerformanceInformationEx\n\tsystemSpare0\n\tSystemSecureBootPolicyInformation\n\tSystemPageFileInformationEx\n\tSystemSecureBootInformation\n\tSystemEntropyInterruptTimingRawInformation\n\tSystemPortableWorkspaceEfiLauncherInformation\n\tSystemFullProcessInformation\n\tSystemKernelDebuggerInformationEx\n\tSystemBootMetadataInformation\n\tSystemSoftRebootInformation\n\tSystemElamCertificateInformation\n\tSystemOfflineDumpConfigInformation\n\tSystemProcessorFeaturesInformation\n\tSystemRegistryReconciliationInformation\n\tSystemEdidInformation\n\tSystemManufacturingInformation\n\tSystemEnergyEstimationConfigInformation\n\tSystemHypervisorDetailInformation\n\tSystemProcessorCycleStatsInformation\n\tSystemVmGenerationCountInformation\n\tSystemTrustedPlatformModuleInformation\n\tSystemKernelDebuggerFlags\n\tSystemCodeIntegrityPolicyInformation\n\tSystemIsolatedUserModeInformation\n\tSystemHardwareSecurityTestInterfaceResultsInformation\n\tSystemSingleModuleInformation\n\tSystemAllowedCpuSetsInformation\n\tSystemDmaProtectionInformation\n\tSystemInterruptCpuSetsInformation\n\tSystemSecureBootPolicyFullInformation\n\tSystemCodeIntegrityPolicyFullInformation\n\tSystemAffinitizedInterruptProcessorInformation\n\tSystemRootSiloInformation\n)\n\ntype RTL_PROCESS_MODULE_INFORMATION struct {\n\tSection          Handle\n\tMappedBase       uintptr\n\tImageBase        uintptr\n\tImageSize        uint32\n\tFlags            uint32\n\tLoadOrderIndex   uint16\n\tInitOrderIndex   uint16\n\tLoadCount        uint16\n\tOffsetToFileName uint16\n\tFullPathName     [256]byte\n}\n\ntype RTL_PROCESS_MODULES struct {\n\tNumberOfModules uint32\n\tModules         [1]RTL_PROCESS_MODULE_INFORMATION\n}\n\n// Constants for LocalAlloc flags.\nconst (\n\tLMEM_FIXED          = 0x0\n\tLMEM_MOVEABLE       = 0x2\n\tLMEM_NOCOMPACT      = 0x10\n\tLMEM_NODISCARD      = 0x20\n\tLMEM_ZEROINIT       = 0x40\n\tLMEM_MODIFY         = 0x80\n\tLMEM_DISCARDABLE    = 0xf00\n\tLMEM_VALID_FLAGS    = 0xf72\n\tLMEM_INVALID_HANDLE = 0x8000\n\tLHND                = LMEM_MOVEABLE | LMEM_ZEROINIT\n\tLPTR                = LMEM_FIXED | LMEM_ZEROINIT\n\tNONZEROLHND         = LMEM_MOVEABLE\n\tNONZEROLPTR         = LMEM_FIXED\n)\n\n// Constants for the CreateNamedPipe-family of functions.\nconst (\n\tPIPE_ACCESS_INBOUND  = 0x1\n\tPIPE_ACCESS_OUTBOUND = 0x2\n\tPIPE_ACCESS_DUPLEX   = 0x3\n\n\tPIPE_CLIENT_END = 0x0\n\tPIPE_SERVER_END = 0x1\n\n\tPIPE_WAIT                  = 0x0\n\tPIPE_NOWAIT                = 0x1\n\tPIPE_READMODE_BYTE         = 0x0\n\tPIPE_READMODE_MESSAGE      = 0x2\n\tPIPE_TYPE_BYTE             = 0x0\n\tPIPE_TYPE_MESSAGE          = 0x4\n\tPIPE_ACCEPT_REMOTE_CLIENTS = 0x0\n\tPIPE_REJECT_REMOTE_CLIENTS = 0x8\n\n\tPIPE_UNLIMITED_INSTANCES = 255\n)\n\n// Constants for security attributes when opening named pipes.\nconst (\n\tSECURITY_ANONYMOUS      = SecurityAnonymous << 16\n\tSECURITY_IDENTIFICATION = SecurityIdentification << 16\n\tSECURITY_IMPERSONATION  = SecurityImpersonation << 16\n\tSECURITY_DELEGATION     = SecurityDelegation << 16\n\n\tSECURITY_CONTEXT_TRACKING = 0x40000\n\tSECURITY_EFFECTIVE_ONLY   = 0x80000\n\n\tSECURITY_SQOS_PRESENT     = 0x100000\n\tSECURITY_VALID_SQOS_FLAGS = 0x1f0000\n)\n\n// ResourceID represents a 16-bit resource identifier, traditionally created with the MAKEINTRESOURCE macro.\ntype ResourceID uint16\n\n// ResourceIDOrString must be either a ResourceID, to specify a resource or resource type by ID,\n// or a string, to specify a resource or resource type by name.\ntype ResourceIDOrString interface{}\n\n// Predefined resource names and types.\nvar (\n\t// Predefined names.\n\tCREATEPROCESS_MANIFEST_RESOURCE_ID                 ResourceID = 1\n\tISOLATIONAWARE_MANIFEST_RESOURCE_ID                ResourceID = 2\n\tISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID ResourceID = 3\n\tISOLATIONPOLICY_MANIFEST_RESOURCE_ID               ResourceID = 4\n\tISOLATIONPOLICY_BROWSER_MANIFEST_RESOURCE_ID       ResourceID = 5\n\tMINIMUM_RESERVED_MANIFEST_RESOURCE_ID              ResourceID = 1  // inclusive\n\tMAXIMUM_RESERVED_MANIFEST_RESOURCE_ID              ResourceID = 16 // inclusive\n\n\t// Predefined types.\n\tRT_CURSOR       ResourceID = 1\n\tRT_BITMAP       ResourceID = 2\n\tRT_ICON         ResourceID = 3\n\tRT_MENU         ResourceID = 4\n\tRT_DIALOG       ResourceID = 5\n\tRT_STRING       ResourceID = 6\n\tRT_FONTDIR      ResourceID = 7\n\tRT_FONT         ResourceID = 8\n\tRT_ACCELERATOR  ResourceID = 9\n\tRT_RCDATA       ResourceID = 10\n\tRT_MESSAGETABLE ResourceID = 11\n\tRT_GROUP_CURSOR ResourceID = 12\n\tRT_GROUP_ICON   ResourceID = 14\n\tRT_VERSION      ResourceID = 16\n\tRT_DLGINCLUDE   ResourceID = 17\n\tRT_PLUGPLAY     ResourceID = 19\n\tRT_VXD          ResourceID = 20\n\tRT_ANICURSOR    ResourceID = 21\n\tRT_ANIICON      ResourceID = 22\n\tRT_HTML         ResourceID = 23\n\tRT_MANIFEST     ResourceID = 24\n)\n\ntype VS_FIXEDFILEINFO struct {\n\tSignature        uint32\n\tStrucVersion     uint32\n\tFileVersionMS    uint32\n\tFileVersionLS    uint32\n\tProductVersionMS uint32\n\tProductVersionLS uint32\n\tFileFlagsMask    uint32\n\tFileFlags        uint32\n\tFileOS           uint32\n\tFileType         uint32\n\tFileSubtype      uint32\n\tFileDateMS       uint32\n\tFileDateLS       uint32\n}\n\ntype COAUTHIDENTITY struct {\n\tUser           *uint16\n\tUserLength     uint32\n\tDomain         *uint16\n\tDomainLength   uint32\n\tPassword       *uint16\n\tPasswordLength uint32\n\tFlags          uint32\n}\n\ntype COAUTHINFO struct {\n\tAuthnSvc           uint32\n\tAuthzSvc           uint32\n\tServerPrincName    *uint16\n\tAuthnLevel         uint32\n\tImpersonationLevel uint32\n\tAuthIdentityData   *COAUTHIDENTITY\n\tCapabilities       uint32\n}\n\ntype COSERVERINFO struct {\n\tReserved1 uint32\n\tAame      *uint16\n\tAuthInfo  *COAUTHINFO\n\tReserved2 uint32\n}\n\ntype BIND_OPTS3 struct {\n\tCbStruct          uint32\n\tFlags             uint32\n\tMode              uint32\n\tTickCountDeadline uint32\n\tTrackFlags        uint32\n\tClassContext      uint32\n\tLocale            uint32\n\tServerInfo        *COSERVERINFO\n\tHwnd              HWND\n}\n\nconst (\n\tCLSCTX_INPROC_SERVER          = 0x1\n\tCLSCTX_INPROC_HANDLER         = 0x2\n\tCLSCTX_LOCAL_SERVER           = 0x4\n\tCLSCTX_INPROC_SERVER16        = 0x8\n\tCLSCTX_REMOTE_SERVER          = 0x10\n\tCLSCTX_INPROC_HANDLER16       = 0x20\n\tCLSCTX_RESERVED1              = 0x40\n\tCLSCTX_RESERVED2              = 0x80\n\tCLSCTX_RESERVED3              = 0x100\n\tCLSCTX_RESERVED4              = 0x200\n\tCLSCTX_NO_CODE_DOWNLOAD       = 0x400\n\tCLSCTX_RESERVED5              = 0x800\n\tCLSCTX_NO_CUSTOM_MARSHAL      = 0x1000\n\tCLSCTX_ENABLE_CODE_DOWNLOAD   = 0x2000\n\tCLSCTX_NO_FAILURE_LOG         = 0x4000\n\tCLSCTX_DISABLE_AAA            = 0x8000\n\tCLSCTX_ENABLE_AAA             = 0x10000\n\tCLSCTX_FROM_DEFAULT_CONTEXT   = 0x20000\n\tCLSCTX_ACTIVATE_32_BIT_SERVER = 0x40000\n\tCLSCTX_ACTIVATE_64_BIT_SERVER = 0x80000\n\tCLSCTX_ENABLE_CLOAKING        = 0x100000\n\tCLSCTX_APPCONTAINER           = 0x400000\n\tCLSCTX_ACTIVATE_AAA_AS_IU     = 0x800000\n\tCLSCTX_PS_DLL                 = 0x80000000\n\n\tCOINIT_MULTITHREADED     = 0x0\n\tCOINIT_APARTMENTTHREADED = 0x2\n\tCOINIT_DISABLE_OLE1DDE   = 0x4\n\tCOINIT_SPEED_OVER_MEMORY = 0x8\n)\n\n// Flag for QueryFullProcessImageName.\nconst PROCESS_NAME_NATIVE = 1\n\ntype ModuleInfo struct {\n\tBaseOfDll   uintptr\n\tSizeOfImage uint32\n\tEntryPoint  uintptr\n}\n\nconst ALL_PROCESSOR_GROUPS = 0xFFFF\n\ntype Rect struct {\n\tLeft   int32\n\tTop    int32\n\tRight  int32\n\tBottom int32\n}\n\ntype GUIThreadInfo struct {\n\tSize        uint32\n\tFlags       uint32\n\tActive      HWND\n\tFocus       HWND\n\tCapture     HWND\n\tMenuOwner   HWND\n\tMoveSize    HWND\n\tCaretHandle HWND\n\tCaretRect   Rect\n}\n\nconst (\n\tDWMWA_NCRENDERING_ENABLED            = 1\n\tDWMWA_NCRENDERING_POLICY             = 2\n\tDWMWA_TRANSITIONS_FORCEDISABLED      = 3\n\tDWMWA_ALLOW_NCPAINT                  = 4\n\tDWMWA_CAPTION_BUTTON_BOUNDS          = 5\n\tDWMWA_NONCLIENT_RTL_LAYOUT           = 6\n\tDWMWA_FORCE_ICONIC_REPRESENTATION    = 7\n\tDWMWA_FLIP3D_POLICY                  = 8\n\tDWMWA_EXTENDED_FRAME_BOUNDS          = 9\n\tDWMWA_HAS_ICONIC_BITMAP              = 10\n\tDWMWA_DISALLOW_PEEK                  = 11\n\tDWMWA_EXCLUDED_FROM_PEEK             = 12\n\tDWMWA_CLOAK                          = 13\n\tDWMWA_CLOAKED                        = 14\n\tDWMWA_FREEZE_REPRESENTATION          = 15\n\tDWMWA_PASSIVE_UPDATE_MODE            = 16\n\tDWMWA_USE_HOSTBACKDROPBRUSH          = 17\n\tDWMWA_USE_IMMERSIVE_DARK_MODE        = 20\n\tDWMWA_WINDOW_CORNER_PREFERENCE       = 33\n\tDWMWA_BORDER_COLOR                   = 34\n\tDWMWA_CAPTION_COLOR                  = 35\n\tDWMWA_TEXT_COLOR                     = 36\n\tDWMWA_VISIBLE_FRAME_BORDER_THICKNESS = 37\n)\n\ntype WSAQUERYSET struct {\n\tSize                uint32\n\tServiceInstanceName *uint16\n\tServiceClassId      *GUID\n\tVersion             *WSAVersion\n\tComment             *uint16\n\tNameSpace           uint32\n\tNSProviderId        *GUID\n\tContext             *uint16\n\tNumberOfProtocols   uint32\n\tAfpProtocols        *AFProtocols\n\tQueryString         *uint16\n\tNumberOfCsAddrs     uint32\n\tSaBuffer            *CSAddrInfo\n\tOutputFlags         uint32\n\tBlob                *BLOB\n}\n\ntype WSAVersion struct {\n\tVersion                 uint32\n\tEnumerationOfComparison int32\n}\n\ntype AFProtocols struct {\n\tAddressFamily int32\n\tProtocol      int32\n}\n\ntype CSAddrInfo struct {\n\tLocalAddr  SocketAddress\n\tRemoteAddr SocketAddress\n\tSocketType int32\n\tProtocol   int32\n}\n\ntype BLOB struct {\n\tSize     uint32\n\tBlobData *byte\n}\n\ntype ComStat struct {\n\tFlags    uint32\n\tCBInQue  uint32\n\tCBOutQue uint32\n}\n\ntype DCB struct {\n\tDCBlength  uint32\n\tBaudRate   uint32\n\tFlags      uint32\n\twReserved  uint16\n\tXonLim     uint16\n\tXoffLim    uint16\n\tByteSize   uint8\n\tParity     uint8\n\tStopBits   uint8\n\tXonChar    byte\n\tXoffChar   byte\n\tErrorChar  byte\n\tEofChar    byte\n\tEvtChar    byte\n\twReserved1 uint16\n}\n\n// Keyboard Layout Flags.\n// See https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-loadkeyboardlayoutw\nconst (\n\tKLF_ACTIVATE      = 0x00000001\n\tKLF_SUBSTITUTE_OK = 0x00000002\n\tKLF_REORDER       = 0x00000008\n\tKLF_REPLACELANG   = 0x00000010\n\tKLF_NOTELLSHELL   = 0x00000080\n\tKLF_SETFORPROCESS = 0x00000100\n)\n\n// Virtual Key codes\n// https://docs.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes\nconst (\n\tVK_LBUTTON             = 0x01\n\tVK_RBUTTON             = 0x02\n\tVK_CANCEL              = 0x03\n\tVK_MBUTTON             = 0x04\n\tVK_XBUTTON1            = 0x05\n\tVK_XBUTTON2            = 0x06\n\tVK_BACK                = 0x08\n\tVK_TAB                 = 0x09\n\tVK_CLEAR               = 0x0C\n\tVK_RETURN              = 0x0D\n\tVK_SHIFT               = 0x10\n\tVK_CONTROL             = 0x11\n\tVK_MENU                = 0x12\n\tVK_PAUSE               = 0x13\n\tVK_CAPITAL             = 0x14\n\tVK_KANA                = 0x15\n\tVK_HANGEUL             = 0x15\n\tVK_HANGUL              = 0x15\n\tVK_IME_ON              = 0x16\n\tVK_JUNJA               = 0x17\n\tVK_FINAL               = 0x18\n\tVK_HANJA               = 0x19\n\tVK_KANJI               = 0x19\n\tVK_IME_OFF             = 0x1A\n\tVK_ESCAPE              = 0x1B\n\tVK_CONVERT             = 0x1C\n\tVK_NONCONVERT          = 0x1D\n\tVK_ACCEPT              = 0x1E\n\tVK_MODECHANGE          = 0x1F\n\tVK_SPACE               = 0x20\n\tVK_PRIOR               = 0x21\n\tVK_NEXT                = 0x22\n\tVK_END                 = 0x23\n\tVK_HOME                = 0x24\n\tVK_LEFT                = 0x25\n\tVK_UP                  = 0x26\n\tVK_RIGHT               = 0x27\n\tVK_DOWN                = 0x28\n\tVK_SELECT              = 0x29\n\tVK_PRINT               = 0x2A\n\tVK_EXECUTE             = 0x2B\n\tVK_SNAPSHOT            = 0x2C\n\tVK_INSERT              = 0x2D\n\tVK_DELETE              = 0x2E\n\tVK_HELP                = 0x2F\n\tVK_LWIN                = 0x5B\n\tVK_RWIN                = 0x5C\n\tVK_APPS                = 0x5D\n\tVK_SLEEP               = 0x5F\n\tVK_NUMPAD0             = 0x60\n\tVK_NUMPAD1             = 0x61\n\tVK_NUMPAD2             = 0x62\n\tVK_NUMPAD3             = 0x63\n\tVK_NUMPAD4             = 0x64\n\tVK_NUMPAD5             = 0x65\n\tVK_NUMPAD6             = 0x66\n\tVK_NUMPAD7             = 0x67\n\tVK_NUMPAD8             = 0x68\n\tVK_NUMPAD9             = 0x69\n\tVK_MULTIPLY            = 0x6A\n\tVK_ADD                 = 0x6B\n\tVK_SEPARATOR           = 0x6C\n\tVK_SUBTRACT            = 0x6D\n\tVK_DECIMAL             = 0x6E\n\tVK_DIVIDE              = 0x6F\n\tVK_F1                  = 0x70\n\tVK_F2                  = 0x71\n\tVK_F3                  = 0x72\n\tVK_F4                  = 0x73\n\tVK_F5                  = 0x74\n\tVK_F6                  = 0x75\n\tVK_F7                  = 0x76\n\tVK_F8                  = 0x77\n\tVK_F9                  = 0x78\n\tVK_F10                 = 0x79\n\tVK_F11                 = 0x7A\n\tVK_F12                 = 0x7B\n\tVK_F13                 = 0x7C\n\tVK_F14                 = 0x7D\n\tVK_F15                 = 0x7E\n\tVK_F16                 = 0x7F\n\tVK_F17                 = 0x80\n\tVK_F18                 = 0x81\n\tVK_F19                 = 0x82\n\tVK_F20                 = 0x83\n\tVK_F21                 = 0x84\n\tVK_F22                 = 0x85\n\tVK_F23                 = 0x86\n\tVK_F24                 = 0x87\n\tVK_NUMLOCK             = 0x90\n\tVK_SCROLL              = 0x91\n\tVK_OEM_NEC_EQUAL       = 0x92\n\tVK_OEM_FJ_JISHO        = 0x92\n\tVK_OEM_FJ_MASSHOU      = 0x93\n\tVK_OEM_FJ_TOUROKU      = 0x94\n\tVK_OEM_FJ_LOYA         = 0x95\n\tVK_OEM_FJ_ROYA         = 0x96\n\tVK_LSHIFT              = 0xA0\n\tVK_RSHIFT              = 0xA1\n\tVK_LCONTROL            = 0xA2\n\tVK_RCONTROL            = 0xA3\n\tVK_LMENU               = 0xA4\n\tVK_RMENU               = 0xA5\n\tVK_BROWSER_BACK        = 0xA6\n\tVK_BROWSER_FORWARD     = 0xA7\n\tVK_BROWSER_REFRESH     = 0xA8\n\tVK_BROWSER_STOP        = 0xA9\n\tVK_BROWSER_SEARCH      = 0xAA\n\tVK_BROWSER_FAVORITES   = 0xAB\n\tVK_BROWSER_HOME        = 0xAC\n\tVK_VOLUME_MUTE         = 0xAD\n\tVK_VOLUME_DOWN         = 0xAE\n\tVK_VOLUME_UP           = 0xAF\n\tVK_MEDIA_NEXT_TRACK    = 0xB0\n\tVK_MEDIA_PREV_TRACK    = 0xB1\n\tVK_MEDIA_STOP          = 0xB2\n\tVK_MEDIA_PLAY_PAUSE    = 0xB3\n\tVK_LAUNCH_MAIL         = 0xB4\n\tVK_LAUNCH_MEDIA_SELECT = 0xB5\n\tVK_LAUNCH_APP1         = 0xB6\n\tVK_LAUNCH_APP2         = 0xB7\n\tVK_OEM_1               = 0xBA\n\tVK_OEM_PLUS            = 0xBB\n\tVK_OEM_COMMA           = 0xBC\n\tVK_OEM_MINUS           = 0xBD\n\tVK_OEM_PERIOD          = 0xBE\n\tVK_OEM_2               = 0xBF\n\tVK_OEM_3               = 0xC0\n\tVK_OEM_4               = 0xDB\n\tVK_OEM_5               = 0xDC\n\tVK_OEM_6               = 0xDD\n\tVK_OEM_7               = 0xDE\n\tVK_OEM_8               = 0xDF\n\tVK_OEM_AX              = 0xE1\n\tVK_OEM_102             = 0xE2\n\tVK_ICO_HELP            = 0xE3\n\tVK_ICO_00              = 0xE4\n\tVK_PROCESSKEY          = 0xE5\n\tVK_ICO_CLEAR           = 0xE6\n\tVK_OEM_RESET           = 0xE9\n\tVK_OEM_JUMP            = 0xEA\n\tVK_OEM_PA1             = 0xEB\n\tVK_OEM_PA2             = 0xEC\n\tVK_OEM_PA3             = 0xED\n\tVK_OEM_WSCTRL          = 0xEE\n\tVK_OEM_CUSEL           = 0xEF\n\tVK_OEM_ATTN            = 0xF0\n\tVK_OEM_FINISH          = 0xF1\n\tVK_OEM_COPY            = 0xF2\n\tVK_OEM_AUTO            = 0xF3\n\tVK_OEM_ENLW            = 0xF4\n\tVK_OEM_BACKTAB         = 0xF5\n\tVK_ATTN                = 0xF6\n\tVK_CRSEL               = 0xF7\n\tVK_EXSEL               = 0xF8\n\tVK_EREOF               = 0xF9\n\tVK_PLAY                = 0xFA\n\tVK_ZOOM                = 0xFB\n\tVK_NONAME              = 0xFC\n\tVK_PA1                 = 0xFD\n\tVK_OEM_CLEAR           = 0xFE\n)\n\n// Mouse button constants.\n// https://docs.microsoft.com/en-us/windows/console/mouse-event-record-str\nconst (\n\tFROM_LEFT_1ST_BUTTON_PRESSED = 0x0001\n\tRIGHTMOST_BUTTON_PRESSED     = 0x0002\n\tFROM_LEFT_2ND_BUTTON_PRESSED = 0x0004\n\tFROM_LEFT_3RD_BUTTON_PRESSED = 0x0008\n\tFROM_LEFT_4TH_BUTTON_PRESSED = 0x0010\n)\n\n// Control key state constaints.\n// https://docs.microsoft.com/en-us/windows/console/key-event-record-str\n// https://docs.microsoft.com/en-us/windows/console/mouse-event-record-str\nconst (\n\tCAPSLOCK_ON        = 0x0080\n\tENHANCED_KEY       = 0x0100\n\tLEFT_ALT_PRESSED   = 0x0002\n\tLEFT_CTRL_PRESSED  = 0x0008\n\tNUMLOCK_ON         = 0x0020\n\tRIGHT_ALT_PRESSED  = 0x0001\n\tRIGHT_CTRL_PRESSED = 0x0004\n\tSCROLLLOCK_ON      = 0x0040\n\tSHIFT_PRESSED      = 0x0010\n)\n\n// Mouse event record event flags.\n// https://docs.microsoft.com/en-us/windows/console/mouse-event-record-str\nconst (\n\tMOUSE_MOVED    = 0x0001\n\tDOUBLE_CLICK   = 0x0002\n\tMOUSE_WHEELED  = 0x0004\n\tMOUSE_HWHEELED = 0x0008\n)\n\n// Input Record Event Types\n// https://learn.microsoft.com/en-us/windows/console/input-record-str\nconst (\n\tFOCUS_EVENT              = 0x0010\n\tKEY_EVENT                = 0x0001\n\tMENU_EVENT               = 0x0008\n\tMOUSE_EVENT              = 0x0002\n\tWINDOW_BUFFER_SIZE_EVENT = 0x0004\n)\n\n// The processor features to be tested for IsProcessorFeaturePresent, see\n// https://learn.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-isprocessorfeaturepresent\nconst (\n\tPF_ARM_64BIT_LOADSTORE_ATOMIC              = 25\n\tPF_ARM_DIVIDE_INSTRUCTION_AVAILABLE        = 24\n\tPF_ARM_EXTERNAL_CACHE_AVAILABLE            = 26\n\tPF_ARM_FMAC_INSTRUCTIONS_AVAILABLE         = 27\n\tPF_ARM_VFP_32_REGISTERS_AVAILABLE          = 18\n\tPF_3DNOW_INSTRUCTIONS_AVAILABLE            = 7\n\tPF_CHANNELS_ENABLED                        = 16\n\tPF_COMPARE_EXCHANGE_DOUBLE                 = 2\n\tPF_COMPARE_EXCHANGE128                     = 14\n\tPF_COMPARE64_EXCHANGE128                   = 15\n\tPF_FASTFAIL_AVAILABLE                      = 23\n\tPF_FLOATING_POINT_EMULATED                 = 1\n\tPF_FLOATING_POINT_PRECISION_ERRATA         = 0\n\tPF_MMX_INSTRUCTIONS_AVAILABLE              = 3\n\tPF_NX_ENABLED                              = 12\n\tPF_PAE_ENABLED                             = 9\n\tPF_RDTSC_INSTRUCTION_AVAILABLE             = 8\n\tPF_RDWRFSGSBASE_AVAILABLE                  = 22\n\tPF_SECOND_LEVEL_ADDRESS_TRANSLATION        = 20\n\tPF_SSE3_INSTRUCTIONS_AVAILABLE             = 13\n\tPF_SSSE3_INSTRUCTIONS_AVAILABLE            = 36\n\tPF_SSE4_1_INSTRUCTIONS_AVAILABLE           = 37\n\tPF_SSE4_2_INSTRUCTIONS_AVAILABLE           = 38\n\tPF_AVX_INSTRUCTIONS_AVAILABLE              = 39\n\tPF_AVX2_INSTRUCTIONS_AVAILABLE             = 40\n\tPF_AVX512F_INSTRUCTIONS_AVAILABLE          = 41\n\tPF_VIRT_FIRMWARE_ENABLED                   = 21\n\tPF_XMMI_INSTRUCTIONS_AVAILABLE             = 6\n\tPF_XMMI64_INSTRUCTIONS_AVAILABLE           = 10\n\tPF_XSAVE_ENABLED                           = 17\n\tPF_ARM_V8_INSTRUCTIONS_AVAILABLE           = 29\n\tPF_ARM_V8_CRYPTO_INSTRUCTIONS_AVAILABLE    = 30\n\tPF_ARM_V8_CRC32_INSTRUCTIONS_AVAILABLE     = 31\n\tPF_ARM_V81_ATOMIC_INSTRUCTIONS_AVAILABLE   = 34\n\tPF_ARM_V82_DP_INSTRUCTIONS_AVAILABLE       = 43\n\tPF_ARM_V83_JSCVT_INSTRUCTIONS_AVAILABLE    = 44\n\tPF_ARM_V83_LRCPC_INSTRUCTIONS_AVAILABLE    = 45\n\tPF_ARM_SVE_INSTRUCTIONS_AVAILABLE          = 46\n\tPF_ARM_SVE2_INSTRUCTIONS_AVAILABLE         = 47\n\tPF_ARM_SVE2_1_INSTRUCTIONS_AVAILABLE       = 48\n\tPF_ARM_SVE_AES_INSTRUCTIONS_AVAILABLE      = 49\n\tPF_ARM_SVE_PMULL128_INSTRUCTIONS_AVAILABLE = 50\n\tPF_ARM_SVE_BITPERM_INSTRUCTIONS_AVAILABLE  = 51\n\tPF_ARM_SVE_BF16_INSTRUCTIONS_AVAILABLE     = 52\n\tPF_ARM_SVE_EBF16_INSTRUCTIONS_AVAILABLE    = 53\n\tPF_ARM_SVE_B16B16_INSTRUCTIONS_AVAILABLE   = 54\n\tPF_ARM_SVE_SHA3_INSTRUCTIONS_AVAILABLE     = 55\n\tPF_ARM_SVE_SM4_INSTRUCTIONS_AVAILABLE      = 56\n\tPF_ARM_SVE_I8MM_INSTRUCTIONS_AVAILABLE     = 57\n\tPF_ARM_SVE_F32MM_INSTRUCTIONS_AVAILABLE    = 58\n\tPF_ARM_SVE_F64MM_INSTRUCTIONS_AVAILABLE    = 59\n\tPF_BMI2_INSTRUCTIONS_AVAILABLE             = 60\n\tPF_MOVDIR64B_INSTRUCTION_AVAILABLE         = 61\n\tPF_ARM_LSE2_AVAILABLE                      = 62\n\tPF_ARM_SHA3_INSTRUCTIONS_AVAILABLE         = 64\n\tPF_ARM_SHA512_INSTRUCTIONS_AVAILABLE       = 65\n\tPF_ARM_V82_I8MM_INSTRUCTIONS_AVAILABLE     = 66\n\tPF_ARM_V82_FP16_INSTRUCTIONS_AVAILABLE     = 67\n\tPF_ARM_V86_BF16_INSTRUCTIONS_AVAILABLE     = 68\n\tPF_ARM_V86_EBF16_INSTRUCTIONS_AVAILABLE    = 69\n\tPF_ARM_SME_INSTRUCTIONS_AVAILABLE          = 70\n\tPF_ARM_SME2_INSTRUCTIONS_AVAILABLE         = 71\n\tPF_ARM_SME2_1_INSTRUCTIONS_AVAILABLE       = 72\n\tPF_ARM_SME2_2_INSTRUCTIONS_AVAILABLE       = 73\n\tPF_ARM_SME_AES_INSTRUCTIONS_AVAILABLE      = 74\n\tPF_ARM_SME_SBITPERM_INSTRUCTIONS_AVAILABLE = 75\n\tPF_ARM_SME_SF8MM4_INSTRUCTIONS_AVAILABLE   = 76\n\tPF_ARM_SME_SF8MM8_INSTRUCTIONS_AVAILABLE   = 77\n\tPF_ARM_SME_SF8DP2_INSTRUCTIONS_AVAILABLE   = 78\n\tPF_ARM_SME_SF8DP4_INSTRUCTIONS_AVAILABLE   = 79\n\tPF_ARM_SME_SF8FMA_INSTRUCTIONS_AVAILABLE   = 80\n\tPF_ARM_SME_F8F32_INSTRUCTIONS_AVAILABLE    = 81\n\tPF_ARM_SME_F8F16_INSTRUCTIONS_AVAILABLE    = 82\n\tPF_ARM_SME_F16F16_INSTRUCTIONS_AVAILABLE   = 83\n\tPF_ARM_SME_B16B16_INSTRUCTIONS_AVAILABLE   = 84\n\tPF_ARM_SME_F64F64_INSTRUCTIONS_AVAILABLE   = 85\n\tPF_ARM_SME_I16I64_INSTRUCTIONS_AVAILABLE   = 86\n\tPF_ARM_SME_LUTv2_INSTRUCTIONS_AVAILABLE    = 87\n\tPF_ARM_SME_FA64_INSTRUCTIONS_AVAILABLE     = 88\n\tPF_UMONITOR_INSTRUCTION_AVAILABLE          = 89\n)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/windows/types_windows_386.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage windows\n\ntype WSAData struct {\n\tVersion      uint16\n\tHighVersion  uint16\n\tDescription  [WSADESCRIPTION_LEN + 1]byte\n\tSystemStatus [WSASYS_STATUS_LEN + 1]byte\n\tMaxSockets   uint16\n\tMaxUdpDg     uint16\n\tVendorInfo   *byte\n}\n\ntype Servent struct {\n\tName    *byte\n\tAliases **byte\n\tPort    uint16\n\tProto   *byte\n}\n\ntype JOBOBJECT_BASIC_LIMIT_INFORMATION struct {\n\tPerProcessUserTimeLimit int64\n\tPerJobUserTimeLimit     int64\n\tLimitFlags              uint32\n\tMinimumWorkingSetSize   uintptr\n\tMaximumWorkingSetSize   uintptr\n\tActiveProcessLimit      uint32\n\tAffinity                uintptr\n\tPriorityClass           uint32\n\tSchedulingClass         uint32\n\t_                       uint32 // pad to 8 byte boundary\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/windows/types_windows_amd64.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage windows\n\ntype WSAData struct {\n\tVersion      uint16\n\tHighVersion  uint16\n\tMaxSockets   uint16\n\tMaxUdpDg     uint16\n\tVendorInfo   *byte\n\tDescription  [WSADESCRIPTION_LEN + 1]byte\n\tSystemStatus [WSASYS_STATUS_LEN + 1]byte\n}\n\ntype Servent struct {\n\tName    *byte\n\tAliases **byte\n\tProto   *byte\n\tPort    uint16\n}\n\ntype JOBOBJECT_BASIC_LIMIT_INFORMATION struct {\n\tPerProcessUserTimeLimit int64\n\tPerJobUserTimeLimit     int64\n\tLimitFlags              uint32\n\tMinimumWorkingSetSize   uintptr\n\tMaximumWorkingSetSize   uintptr\n\tActiveProcessLimit      uint32\n\tAffinity                uintptr\n\tPriorityClass           uint32\n\tSchedulingClass         uint32\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/windows/types_windows_arm.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage windows\n\ntype WSAData struct {\n\tVersion      uint16\n\tHighVersion  uint16\n\tDescription  [WSADESCRIPTION_LEN + 1]byte\n\tSystemStatus [WSASYS_STATUS_LEN + 1]byte\n\tMaxSockets   uint16\n\tMaxUdpDg     uint16\n\tVendorInfo   *byte\n}\n\ntype Servent struct {\n\tName    *byte\n\tAliases **byte\n\tPort    uint16\n\tProto   *byte\n}\n\ntype JOBOBJECT_BASIC_LIMIT_INFORMATION struct {\n\tPerProcessUserTimeLimit int64\n\tPerJobUserTimeLimit     int64\n\tLimitFlags              uint32\n\tMinimumWorkingSetSize   uintptr\n\tMaximumWorkingSetSize   uintptr\n\tActiveProcessLimit      uint32\n\tAffinity                uintptr\n\tPriorityClass           uint32\n\tSchedulingClass         uint32\n\t_                       uint32 // pad to 8 byte boundary\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/windows/types_windows_arm64.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage windows\n\ntype WSAData struct {\n\tVersion      uint16\n\tHighVersion  uint16\n\tMaxSockets   uint16\n\tMaxUdpDg     uint16\n\tVendorInfo   *byte\n\tDescription  [WSADESCRIPTION_LEN + 1]byte\n\tSystemStatus [WSASYS_STATUS_LEN + 1]byte\n}\n\ntype Servent struct {\n\tName    *byte\n\tAliases **byte\n\tProto   *byte\n\tPort    uint16\n}\n\ntype JOBOBJECT_BASIC_LIMIT_INFORMATION struct {\n\tPerProcessUserTimeLimit int64\n\tPerJobUserTimeLimit     int64\n\tLimitFlags              uint32\n\tMinimumWorkingSetSize   uintptr\n\tMaximumWorkingSetSize   uintptr\n\tActiveProcessLimit      uint32\n\tAffinity                uintptr\n\tPriorityClass           uint32\n\tSchedulingClass         uint32\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/windows/zerrors_windows.go",
    "content": "// Code generated by 'mkerrors.bash'; DO NOT EDIT.\n\npackage windows\n\nimport \"syscall\"\n\nconst (\n\tFACILITY_NULL                                                                           = 0\n\tFACILITY_RPC                                                                            = 1\n\tFACILITY_DISPATCH                                                                       = 2\n\tFACILITY_STORAGE                                                                        = 3\n\tFACILITY_ITF                                                                            = 4\n\tFACILITY_WIN32                                                                          = 7\n\tFACILITY_WINDOWS                                                                        = 8\n\tFACILITY_SSPI                                                                           = 9\n\tFACILITY_SECURITY                                                                       = 9\n\tFACILITY_CONTROL                                                                        = 10\n\tFACILITY_CERT                                                                           = 11\n\tFACILITY_INTERNET                                                                       = 12\n\tFACILITY_MEDIASERVER                                                                    = 13\n\tFACILITY_MSMQ                                                                           = 14\n\tFACILITY_SETUPAPI                                                                       = 15\n\tFACILITY_SCARD                                                                          = 16\n\tFACILITY_COMPLUS                                                                        = 17\n\tFACILITY_AAF                                                                            = 18\n\tFACILITY_URT                                                                            = 19\n\tFACILITY_ACS                                                                            = 20\n\tFACILITY_DPLAY                                                                          = 21\n\tFACILITY_UMI                                                                            = 22\n\tFACILITY_SXS                                                                            = 23\n\tFACILITY_WINDOWS_CE                                                                     = 24\n\tFACILITY_HTTP                                                                           = 25\n\tFACILITY_USERMODE_COMMONLOG                                                             = 26\n\tFACILITY_WER                                                                            = 27\n\tFACILITY_USERMODE_FILTER_MANAGER                                                        = 31\n\tFACILITY_BACKGROUNDCOPY                                                                 = 32\n\tFACILITY_CONFIGURATION                                                                  = 33\n\tFACILITY_WIA                                                                            = 33\n\tFACILITY_STATE_MANAGEMENT                                                               = 34\n\tFACILITY_METADIRECTORY                                                                  = 35\n\tFACILITY_WINDOWSUPDATE                                                                  = 36\n\tFACILITY_DIRECTORYSERVICE                                                               = 37\n\tFACILITY_GRAPHICS                                                                       = 38\n\tFACILITY_SHELL                                                                          = 39\n\tFACILITY_NAP                                                                            = 39\n\tFACILITY_TPM_SERVICES                                                                   = 40\n\tFACILITY_TPM_SOFTWARE                                                                   = 41\n\tFACILITY_UI                                                                             = 42\n\tFACILITY_XAML                                                                           = 43\n\tFACILITY_ACTION_QUEUE                                                                   = 44\n\tFACILITY_PLA                                                                            = 48\n\tFACILITY_WINDOWS_SETUP                                                                  = 48\n\tFACILITY_FVE                                                                            = 49\n\tFACILITY_FWP                                                                            = 50\n\tFACILITY_WINRM                                                                          = 51\n\tFACILITY_NDIS                                                                           = 52\n\tFACILITY_USERMODE_HYPERVISOR                                                            = 53\n\tFACILITY_CMI                                                                            = 54\n\tFACILITY_USERMODE_VIRTUALIZATION                                                        = 55\n\tFACILITY_USERMODE_VOLMGR                                                                = 56\n\tFACILITY_BCD                                                                            = 57\n\tFACILITY_USERMODE_VHD                                                                   = 58\n\tFACILITY_USERMODE_HNS                                                                   = 59\n\tFACILITY_SDIAG                                                                          = 60\n\tFACILITY_WEBSERVICES                                                                    = 61\n\tFACILITY_WINPE                                                                          = 61\n\tFACILITY_WPN                                                                            = 62\n\tFACILITY_WINDOWS_STORE                                                                  = 63\n\tFACILITY_INPUT                                                                          = 64\n\tFACILITY_EAP                                                                            = 66\n\tFACILITY_WINDOWS_DEFENDER                                                               = 80\n\tFACILITY_OPC                                                                            = 81\n\tFACILITY_XPS                                                                            = 82\n\tFACILITY_MBN                                                                            = 84\n\tFACILITY_POWERSHELL                                                                     = 84\n\tFACILITY_RAS                                                                            = 83\n\tFACILITY_P2P_INT                                                                        = 98\n\tFACILITY_P2P                                                                            = 99\n\tFACILITY_DAF                                                                            = 100\n\tFACILITY_BLUETOOTH_ATT                                                                  = 101\n\tFACILITY_AUDIO                                                                          = 102\n\tFACILITY_STATEREPOSITORY                                                                = 103\n\tFACILITY_VISUALCPP                                                                      = 109\n\tFACILITY_SCRIPT                                                                         = 112\n\tFACILITY_PARSE                                                                          = 113\n\tFACILITY_BLB                                                                            = 120\n\tFACILITY_BLB_CLI                                                                        = 121\n\tFACILITY_WSBAPP                                                                         = 122\n\tFACILITY_BLBUI                                                                          = 128\n\tFACILITY_USN                                                                            = 129\n\tFACILITY_USERMODE_VOLSNAP                                                               = 130\n\tFACILITY_TIERING                                                                        = 131\n\tFACILITY_WSB_ONLINE                                                                     = 133\n\tFACILITY_ONLINE_ID                                                                      = 134\n\tFACILITY_DEVICE_UPDATE_AGENT                                                            = 135\n\tFACILITY_DRVSERVICING                                                                   = 136\n\tFACILITY_DLS                                                                            = 153\n\tFACILITY_DELIVERY_OPTIMIZATION                                                          = 208\n\tFACILITY_USERMODE_SPACES                                                                = 231\n\tFACILITY_USER_MODE_SECURITY_CORE                                                        = 232\n\tFACILITY_USERMODE_LICENSING                                                             = 234\n\tFACILITY_SOS                                                                            = 160\n\tFACILITY_DEBUGGERS                                                                      = 176\n\tFACILITY_SPP                                                                            = 256\n\tFACILITY_RESTORE                                                                        = 256\n\tFACILITY_DMSERVER                                                                       = 256\n\tFACILITY_DEPLOYMENT_SERVICES_SERVER                                                     = 257\n\tFACILITY_DEPLOYMENT_SERVICES_IMAGING                                                    = 258\n\tFACILITY_DEPLOYMENT_SERVICES_MANAGEMENT                                                 = 259\n\tFACILITY_DEPLOYMENT_SERVICES_UTIL                                                       = 260\n\tFACILITY_DEPLOYMENT_SERVICES_BINLSVC                                                    = 261\n\tFACILITY_DEPLOYMENT_SERVICES_PXE                                                        = 263\n\tFACILITY_DEPLOYMENT_SERVICES_TFTP                                                       = 264\n\tFACILITY_DEPLOYMENT_SERVICES_TRANSPORT_MANAGEMENT                                       = 272\n\tFACILITY_DEPLOYMENT_SERVICES_DRIVER_PROVISIONING                                        = 278\n\tFACILITY_DEPLOYMENT_SERVICES_MULTICAST_SERVER                                           = 289\n\tFACILITY_DEPLOYMENT_SERVICES_MULTICAST_CLIENT                                           = 290\n\tFACILITY_DEPLOYMENT_SERVICES_CONTENT_PROVIDER                                           = 293\n\tFACILITY_LINGUISTIC_SERVICES                                                            = 305\n\tFACILITY_AUDIOSTREAMING                                                                 = 1094\n\tFACILITY_ACCELERATOR                                                                    = 1536\n\tFACILITY_WMAAECMA                                                                       = 1996\n\tFACILITY_DIRECTMUSIC                                                                    = 2168\n\tFACILITY_DIRECT3D10                                                                     = 2169\n\tFACILITY_DXGI                                                                           = 2170\n\tFACILITY_DXGI_DDI                                                                       = 2171\n\tFACILITY_DIRECT3D11                                                                     = 2172\n\tFACILITY_DIRECT3D11_DEBUG                                                               = 2173\n\tFACILITY_DIRECT3D12                                                                     = 2174\n\tFACILITY_DIRECT3D12_DEBUG                                                               = 2175\n\tFACILITY_LEAP                                                                           = 2184\n\tFACILITY_AUDCLNT                                                                        = 2185\n\tFACILITY_WINCODEC_DWRITE_DWM                                                            = 2200\n\tFACILITY_WINML                                                                          = 2192\n\tFACILITY_DIRECT2D                                                                       = 2201\n\tFACILITY_DEFRAG                                                                         = 2304\n\tFACILITY_USERMODE_SDBUS                                                                 = 2305\n\tFACILITY_JSCRIPT                                                                        = 2306\n\tFACILITY_PIDGENX                                                                        = 2561\n\tFACILITY_EAS                                                                            = 85\n\tFACILITY_WEB                                                                            = 885\n\tFACILITY_WEB_SOCKET                                                                     = 886\n\tFACILITY_MOBILE                                                                         = 1793\n\tFACILITY_SQLITE                                                                         = 1967\n\tFACILITY_UTC                                                                            = 1989\n\tFACILITY_WEP                                                                            = 2049\n\tFACILITY_SYNCENGINE                                                                     = 2050\n\tFACILITY_XBOX                                                                           = 2339\n\tFACILITY_GAME                                                                           = 2340\n\tFACILITY_PIX                                                                            = 2748\n\tERROR_SUCCESS                                                             syscall.Errno = 0\n\tNO_ERROR                                                                                = 0\n\tSEC_E_OK                                                                  Handle        = 0x00000000\n\tERROR_INVALID_FUNCTION                                                    syscall.Errno = 1\n\tERROR_FILE_NOT_FOUND                                                      syscall.Errno = 2\n\tERROR_PATH_NOT_FOUND                                                      syscall.Errno = 3\n\tERROR_TOO_MANY_OPEN_FILES                                                 syscall.Errno = 4\n\tERROR_ACCESS_DENIED                                                       syscall.Errno = 5\n\tERROR_INVALID_HANDLE                                                      syscall.Errno = 6\n\tERROR_ARENA_TRASHED                                                       syscall.Errno = 7\n\tERROR_NOT_ENOUGH_MEMORY                                                   syscall.Errno = 8\n\tERROR_INVALID_BLOCK                                                       syscall.Errno = 9\n\tERROR_BAD_ENVIRONMENT                                                     syscall.Errno = 10\n\tERROR_BAD_FORMAT                                                          syscall.Errno = 11\n\tERROR_INVALID_ACCESS                                                      syscall.Errno = 12\n\tERROR_INVALID_DATA                                                        syscall.Errno = 13\n\tERROR_OUTOFMEMORY                                                         syscall.Errno = 14\n\tERROR_INVALID_DRIVE                                                       syscall.Errno = 15\n\tERROR_CURRENT_DIRECTORY                                                   syscall.Errno = 16\n\tERROR_NOT_SAME_DEVICE                                                     syscall.Errno = 17\n\tERROR_NO_MORE_FILES                                                       syscall.Errno = 18\n\tERROR_WRITE_PROTECT                                                       syscall.Errno = 19\n\tERROR_BAD_UNIT                                                            syscall.Errno = 20\n\tERROR_NOT_READY                                                           syscall.Errno = 21\n\tERROR_BAD_COMMAND                                                         syscall.Errno = 22\n\tERROR_CRC                                                                 syscall.Errno = 23\n\tERROR_BAD_LENGTH                                                          syscall.Errno = 24\n\tERROR_SEEK                                                                syscall.Errno = 25\n\tERROR_NOT_DOS_DISK                                                        syscall.Errno = 26\n\tERROR_SECTOR_NOT_FOUND                                                    syscall.Errno = 27\n\tERROR_OUT_OF_PAPER                                                        syscall.Errno = 28\n\tERROR_WRITE_FAULT                                                         syscall.Errno = 29\n\tERROR_READ_FAULT                                                          syscall.Errno = 30\n\tERROR_GEN_FAILURE                                                         syscall.Errno = 31\n\tERROR_SHARING_VIOLATION                                                   syscall.Errno = 32\n\tERROR_LOCK_VIOLATION                                                      syscall.Errno = 33\n\tERROR_WRONG_DISK                                                          syscall.Errno = 34\n\tERROR_SHARING_BUFFER_EXCEEDED                                             syscall.Errno = 36\n\tERROR_HANDLE_EOF                                                          syscall.Errno = 38\n\tERROR_HANDLE_DISK_FULL                                                    syscall.Errno = 39\n\tERROR_NOT_SUPPORTED                                                       syscall.Errno = 50\n\tERROR_REM_NOT_LIST                                                        syscall.Errno = 51\n\tERROR_DUP_NAME                                                            syscall.Errno = 52\n\tERROR_BAD_NETPATH                                                         syscall.Errno = 53\n\tERROR_NETWORK_BUSY                                                        syscall.Errno = 54\n\tERROR_DEV_NOT_EXIST                                                       syscall.Errno = 55\n\tERROR_TOO_MANY_CMDS                                                       syscall.Errno = 56\n\tERROR_ADAP_HDW_ERR                                                        syscall.Errno = 57\n\tERROR_BAD_NET_RESP                                                        syscall.Errno = 58\n\tERROR_UNEXP_NET_ERR                                                       syscall.Errno = 59\n\tERROR_BAD_REM_ADAP                                                        syscall.Errno = 60\n\tERROR_PRINTQ_FULL                                                         syscall.Errno = 61\n\tERROR_NO_SPOOL_SPACE                                                      syscall.Errno = 62\n\tERROR_PRINT_CANCELLED                                                     syscall.Errno = 63\n\tERROR_NETNAME_DELETED                                                     syscall.Errno = 64\n\tERROR_NETWORK_ACCESS_DENIED                                               syscall.Errno = 65\n\tERROR_BAD_DEV_TYPE                                                        syscall.Errno = 66\n\tERROR_BAD_NET_NAME                                                        syscall.Errno = 67\n\tERROR_TOO_MANY_NAMES                                                      syscall.Errno = 68\n\tERROR_TOO_MANY_SESS                                                       syscall.Errno = 69\n\tERROR_SHARING_PAUSED                                                      syscall.Errno = 70\n\tERROR_REQ_NOT_ACCEP                                                       syscall.Errno = 71\n\tERROR_REDIR_PAUSED                                                        syscall.Errno = 72\n\tERROR_FILE_EXISTS                                                         syscall.Errno = 80\n\tERROR_CANNOT_MAKE                                                         syscall.Errno = 82\n\tERROR_FAIL_I24                                                            syscall.Errno = 83\n\tERROR_OUT_OF_STRUCTURES                                                   syscall.Errno = 84\n\tERROR_ALREADY_ASSIGNED                                                    syscall.Errno = 85\n\tERROR_INVALID_PASSWORD                                                    syscall.Errno = 86\n\tERROR_INVALID_PARAMETER                                                   syscall.Errno = 87\n\tERROR_NET_WRITE_FAULT                                                     syscall.Errno = 88\n\tERROR_NO_PROC_SLOTS                                                       syscall.Errno = 89\n\tERROR_TOO_MANY_SEMAPHORES                                                 syscall.Errno = 100\n\tERROR_EXCL_SEM_ALREADY_OWNED                                              syscall.Errno = 101\n\tERROR_SEM_IS_SET                                                          syscall.Errno = 102\n\tERROR_TOO_MANY_SEM_REQUESTS                                               syscall.Errno = 103\n\tERROR_INVALID_AT_INTERRUPT_TIME                                           syscall.Errno = 104\n\tERROR_SEM_OWNER_DIED                                                      syscall.Errno = 105\n\tERROR_SEM_USER_LIMIT                                                      syscall.Errno = 106\n\tERROR_DISK_CHANGE                                                         syscall.Errno = 107\n\tERROR_DRIVE_LOCKED                                                        syscall.Errno = 108\n\tERROR_BROKEN_PIPE                                                         syscall.Errno = 109\n\tERROR_OPEN_FAILED                                                         syscall.Errno = 110\n\tERROR_BUFFER_OVERFLOW                                                     syscall.Errno = 111\n\tERROR_DISK_FULL                                                           syscall.Errno = 112\n\tERROR_NO_MORE_SEARCH_HANDLES                                              syscall.Errno = 113\n\tERROR_INVALID_TARGET_HANDLE                                               syscall.Errno = 114\n\tERROR_INVALID_CATEGORY                                                    syscall.Errno = 117\n\tERROR_INVALID_VERIFY_SWITCH                                               syscall.Errno = 118\n\tERROR_BAD_DRIVER_LEVEL                                                    syscall.Errno = 119\n\tERROR_CALL_NOT_IMPLEMENTED                                                syscall.Errno = 120\n\tERROR_SEM_TIMEOUT                                                         syscall.Errno = 121\n\tERROR_INSUFFICIENT_BUFFER                                                 syscall.Errno = 122\n\tERROR_INVALID_NAME                                                        syscall.Errno = 123\n\tERROR_INVALID_LEVEL                                                       syscall.Errno = 124\n\tERROR_NO_VOLUME_LABEL                                                     syscall.Errno = 125\n\tERROR_MOD_NOT_FOUND                                                       syscall.Errno = 126\n\tERROR_PROC_NOT_FOUND                                                      syscall.Errno = 127\n\tERROR_WAIT_NO_CHILDREN                                                    syscall.Errno = 128\n\tERROR_CHILD_NOT_COMPLETE                                                  syscall.Errno = 129\n\tERROR_DIRECT_ACCESS_HANDLE                                                syscall.Errno = 130\n\tERROR_NEGATIVE_SEEK                                                       syscall.Errno = 131\n\tERROR_SEEK_ON_DEVICE                                                      syscall.Errno = 132\n\tERROR_IS_JOIN_TARGET                                                      syscall.Errno = 133\n\tERROR_IS_JOINED                                                           syscall.Errno = 134\n\tERROR_IS_SUBSTED                                                          syscall.Errno = 135\n\tERROR_NOT_JOINED                                                          syscall.Errno = 136\n\tERROR_NOT_SUBSTED                                                         syscall.Errno = 137\n\tERROR_JOIN_TO_JOIN                                                        syscall.Errno = 138\n\tERROR_SUBST_TO_SUBST                                                      syscall.Errno = 139\n\tERROR_JOIN_TO_SUBST                                                       syscall.Errno = 140\n\tERROR_SUBST_TO_JOIN                                                       syscall.Errno = 141\n\tERROR_BUSY_DRIVE                                                          syscall.Errno = 142\n\tERROR_SAME_DRIVE                                                          syscall.Errno = 143\n\tERROR_DIR_NOT_ROOT                                                        syscall.Errno = 144\n\tERROR_DIR_NOT_EMPTY                                                       syscall.Errno = 145\n\tERROR_IS_SUBST_PATH                                                       syscall.Errno = 146\n\tERROR_IS_JOIN_PATH                                                        syscall.Errno = 147\n\tERROR_PATH_BUSY                                                           syscall.Errno = 148\n\tERROR_IS_SUBST_TARGET                                                     syscall.Errno = 149\n\tERROR_SYSTEM_TRACE                                                        syscall.Errno = 150\n\tERROR_INVALID_EVENT_COUNT                                                 syscall.Errno = 151\n\tERROR_TOO_MANY_MUXWAITERS                                                 syscall.Errno = 152\n\tERROR_INVALID_LIST_FORMAT                                                 syscall.Errno = 153\n\tERROR_LABEL_TOO_LONG                                                      syscall.Errno = 154\n\tERROR_TOO_MANY_TCBS                                                       syscall.Errno = 155\n\tERROR_SIGNAL_REFUSED                                                      syscall.Errno = 156\n\tERROR_DISCARDED                                                           syscall.Errno = 157\n\tERROR_NOT_LOCKED                                                          syscall.Errno = 158\n\tERROR_BAD_THREADID_ADDR                                                   syscall.Errno = 159\n\tERROR_BAD_ARGUMENTS                                                       syscall.Errno = 160\n\tERROR_BAD_PATHNAME                                                        syscall.Errno = 161\n\tERROR_SIGNAL_PENDING                                                      syscall.Errno = 162\n\tERROR_MAX_THRDS_REACHED                                                   syscall.Errno = 164\n\tERROR_LOCK_FAILED                                                         syscall.Errno = 167\n\tERROR_BUSY                                                                syscall.Errno = 170\n\tERROR_DEVICE_SUPPORT_IN_PROGRESS                                          syscall.Errno = 171\n\tERROR_CANCEL_VIOLATION                                                    syscall.Errno = 173\n\tERROR_ATOMIC_LOCKS_NOT_SUPPORTED                                          syscall.Errno = 174\n\tERROR_INVALID_SEGMENT_NUMBER                                              syscall.Errno = 180\n\tERROR_INVALID_ORDINAL                                                     syscall.Errno = 182\n\tERROR_ALREADY_EXISTS                                                      syscall.Errno = 183\n\tERROR_INVALID_FLAG_NUMBER                                                 syscall.Errno = 186\n\tERROR_SEM_NOT_FOUND                                                       syscall.Errno = 187\n\tERROR_INVALID_STARTING_CODESEG                                            syscall.Errno = 188\n\tERROR_INVALID_STACKSEG                                                    syscall.Errno = 189\n\tERROR_INVALID_MODULETYPE                                                  syscall.Errno = 190\n\tERROR_INVALID_EXE_SIGNATURE                                               syscall.Errno = 191\n\tERROR_EXE_MARKED_INVALID                                                  syscall.Errno = 192\n\tERROR_BAD_EXE_FORMAT                                                      syscall.Errno = 193\n\tERROR_ITERATED_DATA_EXCEEDS_64k                                           syscall.Errno = 194\n\tERROR_INVALID_MINALLOCSIZE                                                syscall.Errno = 195\n\tERROR_DYNLINK_FROM_INVALID_RING                                           syscall.Errno = 196\n\tERROR_IOPL_NOT_ENABLED                                                    syscall.Errno = 197\n\tERROR_INVALID_SEGDPL                                                      syscall.Errno = 198\n\tERROR_AUTODATASEG_EXCEEDS_64k                                             syscall.Errno = 199\n\tERROR_RING2SEG_MUST_BE_MOVABLE                                            syscall.Errno = 200\n\tERROR_RELOC_CHAIN_XEEDS_SEGLIM                                            syscall.Errno = 201\n\tERROR_INFLOOP_IN_RELOC_CHAIN                                              syscall.Errno = 202\n\tERROR_ENVVAR_NOT_FOUND                                                    syscall.Errno = 203\n\tERROR_NO_SIGNAL_SENT                                                      syscall.Errno = 205\n\tERROR_FILENAME_EXCED_RANGE                                                syscall.Errno = 206\n\tERROR_RING2_STACK_IN_USE                                                  syscall.Errno = 207\n\tERROR_META_EXPANSION_TOO_LONG                                             syscall.Errno = 208\n\tERROR_INVALID_SIGNAL_NUMBER                                               syscall.Errno = 209\n\tERROR_THREAD_1_INACTIVE                                                   syscall.Errno = 210\n\tERROR_LOCKED                                                              syscall.Errno = 212\n\tERROR_TOO_MANY_MODULES                                                    syscall.Errno = 214\n\tERROR_NESTING_NOT_ALLOWED                                                 syscall.Errno = 215\n\tERROR_EXE_MACHINE_TYPE_MISMATCH                                           syscall.Errno = 216\n\tERROR_EXE_CANNOT_MODIFY_SIGNED_BINARY                                     syscall.Errno = 217\n\tERROR_EXE_CANNOT_MODIFY_STRONG_SIGNED_BINARY                              syscall.Errno = 218\n\tERROR_FILE_CHECKED_OUT                                                    syscall.Errno = 220\n\tERROR_CHECKOUT_REQUIRED                                                   syscall.Errno = 221\n\tERROR_BAD_FILE_TYPE                                                       syscall.Errno = 222\n\tERROR_FILE_TOO_LARGE                                                      syscall.Errno = 223\n\tERROR_FORMS_AUTH_REQUIRED                                                 syscall.Errno = 224\n\tERROR_VIRUS_INFECTED                                                      syscall.Errno = 225\n\tERROR_VIRUS_DELETED                                                       syscall.Errno = 226\n\tERROR_PIPE_LOCAL                                                          syscall.Errno = 229\n\tERROR_BAD_PIPE                                                            syscall.Errno = 230\n\tERROR_PIPE_BUSY                                                           syscall.Errno = 231\n\tERROR_NO_DATA                                                             syscall.Errno = 232\n\tERROR_PIPE_NOT_CONNECTED                                                  syscall.Errno = 233\n\tERROR_MORE_DATA                                                           syscall.Errno = 234\n\tERROR_NO_WORK_DONE                                                        syscall.Errno = 235\n\tERROR_VC_DISCONNECTED                                                     syscall.Errno = 240\n\tERROR_INVALID_EA_NAME                                                     syscall.Errno = 254\n\tERROR_EA_LIST_INCONSISTENT                                                syscall.Errno = 255\n\tWAIT_TIMEOUT                                                              syscall.Errno = 258\n\tERROR_NO_MORE_ITEMS                                                       syscall.Errno = 259\n\tERROR_CANNOT_COPY                                                         syscall.Errno = 266\n\tERROR_DIRECTORY                                                           syscall.Errno = 267\n\tERROR_EAS_DIDNT_FIT                                                       syscall.Errno = 275\n\tERROR_EA_FILE_CORRUPT                                                     syscall.Errno = 276\n\tERROR_EA_TABLE_FULL                                                       syscall.Errno = 277\n\tERROR_INVALID_EA_HANDLE                                                   syscall.Errno = 278\n\tERROR_EAS_NOT_SUPPORTED                                                   syscall.Errno = 282\n\tERROR_NOT_OWNER                                                           syscall.Errno = 288\n\tERROR_TOO_MANY_POSTS                                                      syscall.Errno = 298\n\tERROR_PARTIAL_COPY                                                        syscall.Errno = 299\n\tERROR_OPLOCK_NOT_GRANTED                                                  syscall.Errno = 300\n\tERROR_INVALID_OPLOCK_PROTOCOL                                             syscall.Errno = 301\n\tERROR_DISK_TOO_FRAGMENTED                                                 syscall.Errno = 302\n\tERROR_DELETE_PENDING                                                      syscall.Errno = 303\n\tERROR_INCOMPATIBLE_WITH_GLOBAL_SHORT_NAME_REGISTRY_SETTING                syscall.Errno = 304\n\tERROR_SHORT_NAMES_NOT_ENABLED_ON_VOLUME                                   syscall.Errno = 305\n\tERROR_SECURITY_STREAM_IS_INCONSISTENT                                     syscall.Errno = 306\n\tERROR_INVALID_LOCK_RANGE                                                  syscall.Errno = 307\n\tERROR_IMAGE_SUBSYSTEM_NOT_PRESENT                                         syscall.Errno = 308\n\tERROR_NOTIFICATION_GUID_ALREADY_DEFINED                                   syscall.Errno = 309\n\tERROR_INVALID_EXCEPTION_HANDLER                                           syscall.Errno = 310\n\tERROR_DUPLICATE_PRIVILEGES                                                syscall.Errno = 311\n\tERROR_NO_RANGES_PROCESSED                                                 syscall.Errno = 312\n\tERROR_NOT_ALLOWED_ON_SYSTEM_FILE                                          syscall.Errno = 313\n\tERROR_DISK_RESOURCES_EXHAUSTED                                            syscall.Errno = 314\n\tERROR_INVALID_TOKEN                                                       syscall.Errno = 315\n\tERROR_DEVICE_FEATURE_NOT_SUPPORTED                                        syscall.Errno = 316\n\tERROR_MR_MID_NOT_FOUND                                                    syscall.Errno = 317\n\tERROR_SCOPE_NOT_FOUND                                                     syscall.Errno = 318\n\tERROR_UNDEFINED_SCOPE                                                     syscall.Errno = 319\n\tERROR_INVALID_CAP                                                         syscall.Errno = 320\n\tERROR_DEVICE_UNREACHABLE                                                  syscall.Errno = 321\n\tERROR_DEVICE_NO_RESOURCES                                                 syscall.Errno = 322\n\tERROR_DATA_CHECKSUM_ERROR                                                 syscall.Errno = 323\n\tERROR_INTERMIXED_KERNEL_EA_OPERATION                                      syscall.Errno = 324\n\tERROR_FILE_LEVEL_TRIM_NOT_SUPPORTED                                       syscall.Errno = 326\n\tERROR_OFFSET_ALIGNMENT_VIOLATION                                          syscall.Errno = 327\n\tERROR_INVALID_FIELD_IN_PARAMETER_LIST                                     syscall.Errno = 328\n\tERROR_OPERATION_IN_PROGRESS                                               syscall.Errno = 329\n\tERROR_BAD_DEVICE_PATH                                                     syscall.Errno = 330\n\tERROR_TOO_MANY_DESCRIPTORS                                                syscall.Errno = 331\n\tERROR_SCRUB_DATA_DISABLED                                                 syscall.Errno = 332\n\tERROR_NOT_REDUNDANT_STORAGE                                               syscall.Errno = 333\n\tERROR_RESIDENT_FILE_NOT_SUPPORTED                                         syscall.Errno = 334\n\tERROR_COMPRESSED_FILE_NOT_SUPPORTED                                       syscall.Errno = 335\n\tERROR_DIRECTORY_NOT_SUPPORTED                                             syscall.Errno = 336\n\tERROR_NOT_READ_FROM_COPY                                                  syscall.Errno = 337\n\tERROR_FT_WRITE_FAILURE                                                    syscall.Errno = 338\n\tERROR_FT_DI_SCAN_REQUIRED                                                 syscall.Errno = 339\n\tERROR_INVALID_KERNEL_INFO_VERSION                                         syscall.Errno = 340\n\tERROR_INVALID_PEP_INFO_VERSION                                            syscall.Errno = 341\n\tERROR_OBJECT_NOT_EXTERNALLY_BACKED                                        syscall.Errno = 342\n\tERROR_EXTERNAL_BACKING_PROVIDER_UNKNOWN                                   syscall.Errno = 343\n\tERROR_COMPRESSION_NOT_BENEFICIAL                                          syscall.Errno = 344\n\tERROR_STORAGE_TOPOLOGY_ID_MISMATCH                                        syscall.Errno = 345\n\tERROR_BLOCKED_BY_PARENTAL_CONTROLS                                        syscall.Errno = 346\n\tERROR_BLOCK_TOO_MANY_REFERENCES                                           syscall.Errno = 347\n\tERROR_MARKED_TO_DISALLOW_WRITES                                           syscall.Errno = 348\n\tERROR_ENCLAVE_FAILURE                                                     syscall.Errno = 349\n\tERROR_FAIL_NOACTION_REBOOT                                                syscall.Errno = 350\n\tERROR_FAIL_SHUTDOWN                                                       syscall.Errno = 351\n\tERROR_FAIL_RESTART                                                        syscall.Errno = 352\n\tERROR_MAX_SESSIONS_REACHED                                                syscall.Errno = 353\n\tERROR_NETWORK_ACCESS_DENIED_EDP                                           syscall.Errno = 354\n\tERROR_DEVICE_HINT_NAME_BUFFER_TOO_SMALL                                   syscall.Errno = 355\n\tERROR_EDP_POLICY_DENIES_OPERATION                                         syscall.Errno = 356\n\tERROR_EDP_DPL_POLICY_CANT_BE_SATISFIED                                    syscall.Errno = 357\n\tERROR_CLOUD_FILE_SYNC_ROOT_METADATA_CORRUPT                               syscall.Errno = 358\n\tERROR_DEVICE_IN_MAINTENANCE                                               syscall.Errno = 359\n\tERROR_NOT_SUPPORTED_ON_DAX                                                syscall.Errno = 360\n\tERROR_DAX_MAPPING_EXISTS                                                  syscall.Errno = 361\n\tERROR_CLOUD_FILE_PROVIDER_NOT_RUNNING                                     syscall.Errno = 362\n\tERROR_CLOUD_FILE_METADATA_CORRUPT                                         syscall.Errno = 363\n\tERROR_CLOUD_FILE_METADATA_TOO_LARGE                                       syscall.Errno = 364\n\tERROR_CLOUD_FILE_PROPERTY_BLOB_TOO_LARGE                                  syscall.Errno = 365\n\tERROR_CLOUD_FILE_PROPERTY_BLOB_CHECKSUM_MISMATCH                          syscall.Errno = 366\n\tERROR_CHILD_PROCESS_BLOCKED                                               syscall.Errno = 367\n\tERROR_STORAGE_LOST_DATA_PERSISTENCE                                       syscall.Errno = 368\n\tERROR_FILE_SYSTEM_VIRTUALIZATION_UNAVAILABLE                              syscall.Errno = 369\n\tERROR_FILE_SYSTEM_VIRTUALIZATION_METADATA_CORRUPT                         syscall.Errno = 370\n\tERROR_FILE_SYSTEM_VIRTUALIZATION_BUSY                                     syscall.Errno = 371\n\tERROR_FILE_SYSTEM_VIRTUALIZATION_PROVIDER_UNKNOWN                         syscall.Errno = 372\n\tERROR_GDI_HANDLE_LEAK                                                     syscall.Errno = 373\n\tERROR_CLOUD_FILE_TOO_MANY_PROPERTY_BLOBS                                  syscall.Errno = 374\n\tERROR_CLOUD_FILE_PROPERTY_VERSION_NOT_SUPPORTED                           syscall.Errno = 375\n\tERROR_NOT_A_CLOUD_FILE                                                    syscall.Errno = 376\n\tERROR_CLOUD_FILE_NOT_IN_SYNC                                              syscall.Errno = 377\n\tERROR_CLOUD_FILE_ALREADY_CONNECTED                                        syscall.Errno = 378\n\tERROR_CLOUD_FILE_NOT_SUPPORTED                                            syscall.Errno = 379\n\tERROR_CLOUD_FILE_INVALID_REQUEST                                          syscall.Errno = 380\n\tERROR_CLOUD_FILE_READ_ONLY_VOLUME                                         syscall.Errno = 381\n\tERROR_CLOUD_FILE_CONNECTED_PROVIDER_ONLY                                  syscall.Errno = 382\n\tERROR_CLOUD_FILE_VALIDATION_FAILED                                        syscall.Errno = 383\n\tERROR_SMB1_NOT_AVAILABLE                                                  syscall.Errno = 384\n\tERROR_FILE_SYSTEM_VIRTUALIZATION_INVALID_OPERATION                        syscall.Errno = 385\n\tERROR_CLOUD_FILE_AUTHENTICATION_FAILED                                    syscall.Errno = 386\n\tERROR_CLOUD_FILE_INSUFFICIENT_RESOURCES                                   syscall.Errno = 387\n\tERROR_CLOUD_FILE_NETWORK_UNAVAILABLE                                      syscall.Errno = 388\n\tERROR_CLOUD_FILE_UNSUCCESSFUL                                             syscall.Errno = 389\n\tERROR_CLOUD_FILE_NOT_UNDER_SYNC_ROOT                                      syscall.Errno = 390\n\tERROR_CLOUD_FILE_IN_USE                                                   syscall.Errno = 391\n\tERROR_CLOUD_FILE_PINNED                                                   syscall.Errno = 392\n\tERROR_CLOUD_FILE_REQUEST_ABORTED                                          syscall.Errno = 393\n\tERROR_CLOUD_FILE_PROPERTY_CORRUPT                                         syscall.Errno = 394\n\tERROR_CLOUD_FILE_ACCESS_DENIED                                            syscall.Errno = 395\n\tERROR_CLOUD_FILE_INCOMPATIBLE_HARDLINKS                                   syscall.Errno = 396\n\tERROR_CLOUD_FILE_PROPERTY_LOCK_CONFLICT                                   syscall.Errno = 397\n\tERROR_CLOUD_FILE_REQUEST_CANCELED                                         syscall.Errno = 398\n\tERROR_EXTERNAL_SYSKEY_NOT_SUPPORTED                                       syscall.Errno = 399\n\tERROR_THREAD_MODE_ALREADY_BACKGROUND                                      syscall.Errno = 400\n\tERROR_THREAD_MODE_NOT_BACKGROUND                                          syscall.Errno = 401\n\tERROR_PROCESS_MODE_ALREADY_BACKGROUND                                     syscall.Errno = 402\n\tERROR_PROCESS_MODE_NOT_BACKGROUND                                         syscall.Errno = 403\n\tERROR_CLOUD_FILE_PROVIDER_TERMINATED                                      syscall.Errno = 404\n\tERROR_NOT_A_CLOUD_SYNC_ROOT                                               syscall.Errno = 405\n\tERROR_FILE_PROTECTED_UNDER_DPL                                            syscall.Errno = 406\n\tERROR_VOLUME_NOT_CLUSTER_ALIGNED                                          syscall.Errno = 407\n\tERROR_NO_PHYSICALLY_ALIGNED_FREE_SPACE_FOUND                              syscall.Errno = 408\n\tERROR_APPX_FILE_NOT_ENCRYPTED                                             syscall.Errno = 409\n\tERROR_RWRAW_ENCRYPTED_FILE_NOT_ENCRYPTED                                  syscall.Errno = 410\n\tERROR_RWRAW_ENCRYPTED_INVALID_EDATAINFO_FILEOFFSET                        syscall.Errno = 411\n\tERROR_RWRAW_ENCRYPTED_INVALID_EDATAINFO_FILERANGE                         syscall.Errno = 412\n\tERROR_RWRAW_ENCRYPTED_INVALID_EDATAINFO_PARAMETER                         syscall.Errno = 413\n\tERROR_LINUX_SUBSYSTEM_NOT_PRESENT                                         syscall.Errno = 414\n\tERROR_FT_READ_FAILURE                                                     syscall.Errno = 415\n\tERROR_STORAGE_RESERVE_ID_INVALID                                          syscall.Errno = 416\n\tERROR_STORAGE_RESERVE_DOES_NOT_EXIST                                      syscall.Errno = 417\n\tERROR_STORAGE_RESERVE_ALREADY_EXISTS                                      syscall.Errno = 418\n\tERROR_STORAGE_RESERVE_NOT_EMPTY                                           syscall.Errno = 419\n\tERROR_NOT_A_DAX_VOLUME                                                    syscall.Errno = 420\n\tERROR_NOT_DAX_MAPPABLE                                                    syscall.Errno = 421\n\tERROR_TIME_SENSITIVE_THREAD                                               syscall.Errno = 422\n\tERROR_DPL_NOT_SUPPORTED_FOR_USER                                          syscall.Errno = 423\n\tERROR_CASE_DIFFERING_NAMES_IN_DIR                                         syscall.Errno = 424\n\tERROR_FILE_NOT_SUPPORTED                                                  syscall.Errno = 425\n\tERROR_CLOUD_FILE_REQUEST_TIMEOUT                                          syscall.Errno = 426\n\tERROR_NO_TASK_QUEUE                                                       syscall.Errno = 427\n\tERROR_SRC_SRV_DLL_LOAD_FAILED                                             syscall.Errno = 428\n\tERROR_NOT_SUPPORTED_WITH_BTT                                              syscall.Errno = 429\n\tERROR_ENCRYPTION_DISABLED                                                 syscall.Errno = 430\n\tERROR_ENCRYPTING_METADATA_DISALLOWED                                      syscall.Errno = 431\n\tERROR_CANT_CLEAR_ENCRYPTION_FLAG                                          syscall.Errno = 432\n\tERROR_NO_SUCH_DEVICE                                                      syscall.Errno = 433\n\tERROR_CAPAUTHZ_NOT_DEVUNLOCKED                                            syscall.Errno = 450\n\tERROR_CAPAUTHZ_CHANGE_TYPE                                                syscall.Errno = 451\n\tERROR_CAPAUTHZ_NOT_PROVISIONED                                            syscall.Errno = 452\n\tERROR_CAPAUTHZ_NOT_AUTHORIZED                                             syscall.Errno = 453\n\tERROR_CAPAUTHZ_NO_POLICY                                                  syscall.Errno = 454\n\tERROR_CAPAUTHZ_DB_CORRUPTED                                               syscall.Errno = 455\n\tERROR_CAPAUTHZ_SCCD_INVALID_CATALOG                                       syscall.Errno = 456\n\tERROR_CAPAUTHZ_SCCD_NO_AUTH_ENTITY                                        syscall.Errno = 457\n\tERROR_CAPAUTHZ_SCCD_PARSE_ERROR                                           syscall.Errno = 458\n\tERROR_CAPAUTHZ_SCCD_DEV_MODE_REQUIRED                                     syscall.Errno = 459\n\tERROR_CAPAUTHZ_SCCD_NO_CAPABILITY_MATCH                                   syscall.Errno = 460\n\tERROR_PNP_QUERY_REMOVE_DEVICE_TIMEOUT                                     syscall.Errno = 480\n\tERROR_PNP_QUERY_REMOVE_RELATED_DEVICE_TIMEOUT                             syscall.Errno = 481\n\tERROR_PNP_QUERY_REMOVE_UNRELATED_DEVICE_TIMEOUT                           syscall.Errno = 482\n\tERROR_DEVICE_HARDWARE_ERROR                                               syscall.Errno = 483\n\tERROR_INVALID_ADDRESS                                                     syscall.Errno = 487\n\tERROR_VRF_CFG_ENABLED                                                     syscall.Errno = 1183\n\tERROR_PARTITION_TERMINATING                                               syscall.Errno = 1184\n\tERROR_USER_PROFILE_LOAD                                                   syscall.Errno = 500\n\tERROR_ARITHMETIC_OVERFLOW                                                 syscall.Errno = 534\n\tERROR_PIPE_CONNECTED                                                      syscall.Errno = 535\n\tERROR_PIPE_LISTENING                                                      syscall.Errno = 536\n\tERROR_VERIFIER_STOP                                                       syscall.Errno = 537\n\tERROR_ABIOS_ERROR                                                         syscall.Errno = 538\n\tERROR_WX86_WARNING                                                        syscall.Errno = 539\n\tERROR_WX86_ERROR                                                          syscall.Errno = 540\n\tERROR_TIMER_NOT_CANCELED                                                  syscall.Errno = 541\n\tERROR_UNWIND                                                              syscall.Errno = 542\n\tERROR_BAD_STACK                                                           syscall.Errno = 543\n\tERROR_INVALID_UNWIND_TARGET                                               syscall.Errno = 544\n\tERROR_INVALID_PORT_ATTRIBUTES                                             syscall.Errno = 545\n\tERROR_PORT_MESSAGE_TOO_LONG                                               syscall.Errno = 546\n\tERROR_INVALID_QUOTA_LOWER                                                 syscall.Errno = 547\n\tERROR_DEVICE_ALREADY_ATTACHED                                             syscall.Errno = 548\n\tERROR_INSTRUCTION_MISALIGNMENT                                            syscall.Errno = 549\n\tERROR_PROFILING_NOT_STARTED                                               syscall.Errno = 550\n\tERROR_PROFILING_NOT_STOPPED                                               syscall.Errno = 551\n\tERROR_COULD_NOT_INTERPRET                                                 syscall.Errno = 552\n\tERROR_PROFILING_AT_LIMIT                                                  syscall.Errno = 553\n\tERROR_CANT_WAIT                                                           syscall.Errno = 554\n\tERROR_CANT_TERMINATE_SELF                                                 syscall.Errno = 555\n\tERROR_UNEXPECTED_MM_CREATE_ERR                                            syscall.Errno = 556\n\tERROR_UNEXPECTED_MM_MAP_ERROR                                             syscall.Errno = 557\n\tERROR_UNEXPECTED_MM_EXTEND_ERR                                            syscall.Errno = 558\n\tERROR_BAD_FUNCTION_TABLE                                                  syscall.Errno = 559\n\tERROR_NO_GUID_TRANSLATION                                                 syscall.Errno = 560\n\tERROR_INVALID_LDT_SIZE                                                    syscall.Errno = 561\n\tERROR_INVALID_LDT_OFFSET                                                  syscall.Errno = 563\n\tERROR_INVALID_LDT_DESCRIPTOR                                              syscall.Errno = 564\n\tERROR_TOO_MANY_THREADS                                                    syscall.Errno = 565\n\tERROR_THREAD_NOT_IN_PROCESS                                               syscall.Errno = 566\n\tERROR_PAGEFILE_QUOTA_EXCEEDED                                             syscall.Errno = 567\n\tERROR_LOGON_SERVER_CONFLICT                                               syscall.Errno = 568\n\tERROR_SYNCHRONIZATION_REQUIRED                                            syscall.Errno = 569\n\tERROR_NET_OPEN_FAILED                                                     syscall.Errno = 570\n\tERROR_IO_PRIVILEGE_FAILED                                                 syscall.Errno = 571\n\tERROR_CONTROL_C_EXIT                                                      syscall.Errno = 572\n\tERROR_MISSING_SYSTEMFILE                                                  syscall.Errno = 573\n\tERROR_UNHANDLED_EXCEPTION                                                 syscall.Errno = 574\n\tERROR_APP_INIT_FAILURE                                                    syscall.Errno = 575\n\tERROR_PAGEFILE_CREATE_FAILED                                              syscall.Errno = 576\n\tERROR_INVALID_IMAGE_HASH                                                  syscall.Errno = 577\n\tERROR_NO_PAGEFILE                                                         syscall.Errno = 578\n\tERROR_ILLEGAL_FLOAT_CONTEXT                                               syscall.Errno = 579\n\tERROR_NO_EVENT_PAIR                                                       syscall.Errno = 580\n\tERROR_DOMAIN_CTRLR_CONFIG_ERROR                                           syscall.Errno = 581\n\tERROR_ILLEGAL_CHARACTER                                                   syscall.Errno = 582\n\tERROR_UNDEFINED_CHARACTER                                                 syscall.Errno = 583\n\tERROR_FLOPPY_VOLUME                                                       syscall.Errno = 584\n\tERROR_BIOS_FAILED_TO_CONNECT_INTERRUPT                                    syscall.Errno = 585\n\tERROR_BACKUP_CONTROLLER                                                   syscall.Errno = 586\n\tERROR_MUTANT_LIMIT_EXCEEDED                                               syscall.Errno = 587\n\tERROR_FS_DRIVER_REQUIRED                                                  syscall.Errno = 588\n\tERROR_CANNOT_LOAD_REGISTRY_FILE                                           syscall.Errno = 589\n\tERROR_DEBUG_ATTACH_FAILED                                                 syscall.Errno = 590\n\tERROR_SYSTEM_PROCESS_TERMINATED                                           syscall.Errno = 591\n\tERROR_DATA_NOT_ACCEPTED                                                   syscall.Errno = 592\n\tERROR_VDM_HARD_ERROR                                                      syscall.Errno = 593\n\tERROR_DRIVER_CANCEL_TIMEOUT                                               syscall.Errno = 594\n\tERROR_REPLY_MESSAGE_MISMATCH                                              syscall.Errno = 595\n\tERROR_LOST_WRITEBEHIND_DATA                                               syscall.Errno = 596\n\tERROR_CLIENT_SERVER_PARAMETERS_INVALID                                    syscall.Errno = 597\n\tERROR_NOT_TINY_STREAM                                                     syscall.Errno = 598\n\tERROR_STACK_OVERFLOW_READ                                                 syscall.Errno = 599\n\tERROR_CONVERT_TO_LARGE                                                    syscall.Errno = 600\n\tERROR_FOUND_OUT_OF_SCOPE                                                  syscall.Errno = 601\n\tERROR_ALLOCATE_BUCKET                                                     syscall.Errno = 602\n\tERROR_MARSHALL_OVERFLOW                                                   syscall.Errno = 603\n\tERROR_INVALID_VARIANT                                                     syscall.Errno = 604\n\tERROR_BAD_COMPRESSION_BUFFER                                              syscall.Errno = 605\n\tERROR_AUDIT_FAILED                                                        syscall.Errno = 606\n\tERROR_TIMER_RESOLUTION_NOT_SET                                            syscall.Errno = 607\n\tERROR_INSUFFICIENT_LOGON_INFO                                             syscall.Errno = 608\n\tERROR_BAD_DLL_ENTRYPOINT                                                  syscall.Errno = 609\n\tERROR_BAD_SERVICE_ENTRYPOINT                                              syscall.Errno = 610\n\tERROR_IP_ADDRESS_CONFLICT1                                                syscall.Errno = 611\n\tERROR_IP_ADDRESS_CONFLICT2                                                syscall.Errno = 612\n\tERROR_REGISTRY_QUOTA_LIMIT                                                syscall.Errno = 613\n\tERROR_NO_CALLBACK_ACTIVE                                                  syscall.Errno = 614\n\tERROR_PWD_TOO_SHORT                                                       syscall.Errno = 615\n\tERROR_PWD_TOO_RECENT                                                      syscall.Errno = 616\n\tERROR_PWD_HISTORY_CONFLICT                                                syscall.Errno = 617\n\tERROR_UNSUPPORTED_COMPRESSION                                             syscall.Errno = 618\n\tERROR_INVALID_HW_PROFILE                                                  syscall.Errno = 619\n\tERROR_INVALID_PLUGPLAY_DEVICE_PATH                                        syscall.Errno = 620\n\tERROR_QUOTA_LIST_INCONSISTENT                                             syscall.Errno = 621\n\tERROR_EVALUATION_EXPIRATION                                               syscall.Errno = 622\n\tERROR_ILLEGAL_DLL_RELOCATION                                              syscall.Errno = 623\n\tERROR_DLL_INIT_FAILED_LOGOFF                                              syscall.Errno = 624\n\tERROR_VALIDATE_CONTINUE                                                   syscall.Errno = 625\n\tERROR_NO_MORE_MATCHES                                                     syscall.Errno = 626\n\tERROR_RANGE_LIST_CONFLICT                                                 syscall.Errno = 627\n\tERROR_SERVER_SID_MISMATCH                                                 syscall.Errno = 628\n\tERROR_CANT_ENABLE_DENY_ONLY                                               syscall.Errno = 629\n\tERROR_FLOAT_MULTIPLE_FAULTS                                               syscall.Errno = 630\n\tERROR_FLOAT_MULTIPLE_TRAPS                                                syscall.Errno = 631\n\tERROR_NOINTERFACE                                                         syscall.Errno = 632\n\tERROR_DRIVER_FAILED_SLEEP                                                 syscall.Errno = 633\n\tERROR_CORRUPT_SYSTEM_FILE                                                 syscall.Errno = 634\n\tERROR_COMMITMENT_MINIMUM                                                  syscall.Errno = 635\n\tERROR_PNP_RESTART_ENUMERATION                                             syscall.Errno = 636\n\tERROR_SYSTEM_IMAGE_BAD_SIGNATURE                                          syscall.Errno = 637\n\tERROR_PNP_REBOOT_REQUIRED                                                 syscall.Errno = 638\n\tERROR_INSUFFICIENT_POWER                                                  syscall.Errno = 639\n\tERROR_MULTIPLE_FAULT_VIOLATION                                            syscall.Errno = 640\n\tERROR_SYSTEM_SHUTDOWN                                                     syscall.Errno = 641\n\tERROR_PORT_NOT_SET                                                        syscall.Errno = 642\n\tERROR_DS_VERSION_CHECK_FAILURE                                            syscall.Errno = 643\n\tERROR_RANGE_NOT_FOUND                                                     syscall.Errno = 644\n\tERROR_NOT_SAFE_MODE_DRIVER                                                syscall.Errno = 646\n\tERROR_FAILED_DRIVER_ENTRY                                                 syscall.Errno = 647\n\tERROR_DEVICE_ENUMERATION_ERROR                                            syscall.Errno = 648\n\tERROR_MOUNT_POINT_NOT_RESOLVED                                            syscall.Errno = 649\n\tERROR_INVALID_DEVICE_OBJECT_PARAMETER                                     syscall.Errno = 650\n\tERROR_MCA_OCCURED                                                         syscall.Errno = 651\n\tERROR_DRIVER_DATABASE_ERROR                                               syscall.Errno = 652\n\tERROR_SYSTEM_HIVE_TOO_LARGE                                               syscall.Errno = 653\n\tERROR_DRIVER_FAILED_PRIOR_UNLOAD                                          syscall.Errno = 654\n\tERROR_VOLSNAP_PREPARE_HIBERNATE                                           syscall.Errno = 655\n\tERROR_HIBERNATION_FAILURE                                                 syscall.Errno = 656\n\tERROR_PWD_TOO_LONG                                                        syscall.Errno = 657\n\tERROR_FILE_SYSTEM_LIMITATION                                              syscall.Errno = 665\n\tERROR_ASSERTION_FAILURE                                                   syscall.Errno = 668\n\tERROR_ACPI_ERROR                                                          syscall.Errno = 669\n\tERROR_WOW_ASSERTION                                                       syscall.Errno = 670\n\tERROR_PNP_BAD_MPS_TABLE                                                   syscall.Errno = 671\n\tERROR_PNP_TRANSLATION_FAILED                                              syscall.Errno = 672\n\tERROR_PNP_IRQ_TRANSLATION_FAILED                                          syscall.Errno = 673\n\tERROR_PNP_INVALID_ID                                                      syscall.Errno = 674\n\tERROR_WAKE_SYSTEM_DEBUGGER                                                syscall.Errno = 675\n\tERROR_HANDLES_CLOSED                                                      syscall.Errno = 676\n\tERROR_EXTRANEOUS_INFORMATION                                              syscall.Errno = 677\n\tERROR_RXACT_COMMIT_NECESSARY                                              syscall.Errno = 678\n\tERROR_MEDIA_CHECK                                                         syscall.Errno = 679\n\tERROR_GUID_SUBSTITUTION_MADE                                              syscall.Errno = 680\n\tERROR_STOPPED_ON_SYMLINK                                                  syscall.Errno = 681\n\tERROR_LONGJUMP                                                            syscall.Errno = 682\n\tERROR_PLUGPLAY_QUERY_VETOED                                               syscall.Errno = 683\n\tERROR_UNWIND_CONSOLIDATE                                                  syscall.Errno = 684\n\tERROR_REGISTRY_HIVE_RECOVERED                                             syscall.Errno = 685\n\tERROR_DLL_MIGHT_BE_INSECURE                                               syscall.Errno = 686\n\tERROR_DLL_MIGHT_BE_INCOMPATIBLE                                           syscall.Errno = 687\n\tERROR_DBG_EXCEPTION_NOT_HANDLED                                           syscall.Errno = 688\n\tERROR_DBG_REPLY_LATER                                                     syscall.Errno = 689\n\tERROR_DBG_UNABLE_TO_PROVIDE_HANDLE                                        syscall.Errno = 690\n\tERROR_DBG_TERMINATE_THREAD                                                syscall.Errno = 691\n\tERROR_DBG_TERMINATE_PROCESS                                               syscall.Errno = 692\n\tERROR_DBG_CONTROL_C                                                       syscall.Errno = 693\n\tERROR_DBG_PRINTEXCEPTION_C                                                syscall.Errno = 694\n\tERROR_DBG_RIPEXCEPTION                                                    syscall.Errno = 695\n\tERROR_DBG_CONTROL_BREAK                                                   syscall.Errno = 696\n\tERROR_DBG_COMMAND_EXCEPTION                                               syscall.Errno = 697\n\tERROR_OBJECT_NAME_EXISTS                                                  syscall.Errno = 698\n\tERROR_THREAD_WAS_SUSPENDED                                                syscall.Errno = 699\n\tERROR_IMAGE_NOT_AT_BASE                                                   syscall.Errno = 700\n\tERROR_RXACT_STATE_CREATED                                                 syscall.Errno = 701\n\tERROR_SEGMENT_NOTIFICATION                                                syscall.Errno = 702\n\tERROR_BAD_CURRENT_DIRECTORY                                               syscall.Errno = 703\n\tERROR_FT_READ_RECOVERY_FROM_BACKUP                                        syscall.Errno = 704\n\tERROR_FT_WRITE_RECOVERY                                                   syscall.Errno = 705\n\tERROR_IMAGE_MACHINE_TYPE_MISMATCH                                         syscall.Errno = 706\n\tERROR_RECEIVE_PARTIAL                                                     syscall.Errno = 707\n\tERROR_RECEIVE_EXPEDITED                                                   syscall.Errno = 708\n\tERROR_RECEIVE_PARTIAL_EXPEDITED                                           syscall.Errno = 709\n\tERROR_EVENT_DONE                                                          syscall.Errno = 710\n\tERROR_EVENT_PENDING                                                       syscall.Errno = 711\n\tERROR_CHECKING_FILE_SYSTEM                                                syscall.Errno = 712\n\tERROR_FATAL_APP_EXIT                                                      syscall.Errno = 713\n\tERROR_PREDEFINED_HANDLE                                                   syscall.Errno = 714\n\tERROR_WAS_UNLOCKED                                                        syscall.Errno = 715\n\tERROR_SERVICE_NOTIFICATION                                                syscall.Errno = 716\n\tERROR_WAS_LOCKED                                                          syscall.Errno = 717\n\tERROR_LOG_HARD_ERROR                                                      syscall.Errno = 718\n\tERROR_ALREADY_WIN32                                                       syscall.Errno = 719\n\tERROR_IMAGE_MACHINE_TYPE_MISMATCH_EXE                                     syscall.Errno = 720\n\tERROR_NO_YIELD_PERFORMED                                                  syscall.Errno = 721\n\tERROR_TIMER_RESUME_IGNORED                                                syscall.Errno = 722\n\tERROR_ARBITRATION_UNHANDLED                                               syscall.Errno = 723\n\tERROR_CARDBUS_NOT_SUPPORTED                                               syscall.Errno = 724\n\tERROR_MP_PROCESSOR_MISMATCH                                               syscall.Errno = 725\n\tERROR_HIBERNATED                                                          syscall.Errno = 726\n\tERROR_RESUME_HIBERNATION                                                  syscall.Errno = 727\n\tERROR_FIRMWARE_UPDATED                                                    syscall.Errno = 728\n\tERROR_DRIVERS_LEAKING_LOCKED_PAGES                                        syscall.Errno = 729\n\tERROR_WAKE_SYSTEM                                                         syscall.Errno = 730\n\tERROR_WAIT_1                                                              syscall.Errno = 731\n\tERROR_WAIT_2                                                              syscall.Errno = 732\n\tERROR_WAIT_3                                                              syscall.Errno = 733\n\tERROR_WAIT_63                                                             syscall.Errno = 734\n\tERROR_ABANDONED_WAIT_0                                                    syscall.Errno = 735\n\tERROR_ABANDONED_WAIT_63                                                   syscall.Errno = 736\n\tERROR_USER_APC                                                            syscall.Errno = 737\n\tERROR_KERNEL_APC                                                          syscall.Errno = 738\n\tERROR_ALERTED                                                             syscall.Errno = 739\n\tERROR_ELEVATION_REQUIRED                                                  syscall.Errno = 740\n\tERROR_REPARSE                                                             syscall.Errno = 741\n\tERROR_OPLOCK_BREAK_IN_PROGRESS                                            syscall.Errno = 742\n\tERROR_VOLUME_MOUNTED                                                      syscall.Errno = 743\n\tERROR_RXACT_COMMITTED                                                     syscall.Errno = 744\n\tERROR_NOTIFY_CLEANUP                                                      syscall.Errno = 745\n\tERROR_PRIMARY_TRANSPORT_CONNECT_FAILED                                    syscall.Errno = 746\n\tERROR_PAGE_FAULT_TRANSITION                                               syscall.Errno = 747\n\tERROR_PAGE_FAULT_DEMAND_ZERO                                              syscall.Errno = 748\n\tERROR_PAGE_FAULT_COPY_ON_WRITE                                            syscall.Errno = 749\n\tERROR_PAGE_FAULT_GUARD_PAGE                                               syscall.Errno = 750\n\tERROR_PAGE_FAULT_PAGING_FILE                                              syscall.Errno = 751\n\tERROR_CACHE_PAGE_LOCKED                                                   syscall.Errno = 752\n\tERROR_CRASH_DUMP                                                          syscall.Errno = 753\n\tERROR_BUFFER_ALL_ZEROS                                                    syscall.Errno = 754\n\tERROR_REPARSE_OBJECT                                                      syscall.Errno = 755\n\tERROR_RESOURCE_REQUIREMENTS_CHANGED                                       syscall.Errno = 756\n\tERROR_TRANSLATION_COMPLETE                                                syscall.Errno = 757\n\tERROR_NOTHING_TO_TERMINATE                                                syscall.Errno = 758\n\tERROR_PROCESS_NOT_IN_JOB                                                  syscall.Errno = 759\n\tERROR_PROCESS_IN_JOB                                                      syscall.Errno = 760\n\tERROR_VOLSNAP_HIBERNATE_READY                                             syscall.Errno = 761\n\tERROR_FSFILTER_OP_COMPLETED_SUCCESSFULLY                                  syscall.Errno = 762\n\tERROR_INTERRUPT_VECTOR_ALREADY_CONNECTED                                  syscall.Errno = 763\n\tERROR_INTERRUPT_STILL_CONNECTED                                           syscall.Errno = 764\n\tERROR_WAIT_FOR_OPLOCK                                                     syscall.Errno = 765\n\tERROR_DBG_EXCEPTION_HANDLED                                               syscall.Errno = 766\n\tERROR_DBG_CONTINUE                                                        syscall.Errno = 767\n\tERROR_CALLBACK_POP_STACK                                                  syscall.Errno = 768\n\tERROR_COMPRESSION_DISABLED                                                syscall.Errno = 769\n\tERROR_CANTFETCHBACKWARDS                                                  syscall.Errno = 770\n\tERROR_CANTSCROLLBACKWARDS                                                 syscall.Errno = 771\n\tERROR_ROWSNOTRELEASED                                                     syscall.Errno = 772\n\tERROR_BAD_ACCESSOR_FLAGS                                                  syscall.Errno = 773\n\tERROR_ERRORS_ENCOUNTERED                                                  syscall.Errno = 774\n\tERROR_NOT_CAPABLE                                                         syscall.Errno = 775\n\tERROR_REQUEST_OUT_OF_SEQUENCE                                             syscall.Errno = 776\n\tERROR_VERSION_PARSE_ERROR                                                 syscall.Errno = 777\n\tERROR_BADSTARTPOSITION                                                    syscall.Errno = 778\n\tERROR_MEMORY_HARDWARE                                                     syscall.Errno = 779\n\tERROR_DISK_REPAIR_DISABLED                                                syscall.Errno = 780\n\tERROR_INSUFFICIENT_RESOURCE_FOR_SPECIFIED_SHARED_SECTION_SIZE             syscall.Errno = 781\n\tERROR_SYSTEM_POWERSTATE_TRANSITION                                        syscall.Errno = 782\n\tERROR_SYSTEM_POWERSTATE_COMPLEX_TRANSITION                                syscall.Errno = 783\n\tERROR_MCA_EXCEPTION                                                       syscall.Errno = 784\n\tERROR_ACCESS_AUDIT_BY_POLICY                                              syscall.Errno = 785\n\tERROR_ACCESS_DISABLED_NO_SAFER_UI_BY_POLICY                               syscall.Errno = 786\n\tERROR_ABANDON_HIBERFILE                                                   syscall.Errno = 787\n\tERROR_LOST_WRITEBEHIND_DATA_NETWORK_DISCONNECTED                          syscall.Errno = 788\n\tERROR_LOST_WRITEBEHIND_DATA_NETWORK_SERVER_ERROR                          syscall.Errno = 789\n\tERROR_LOST_WRITEBEHIND_DATA_LOCAL_DISK_ERROR                              syscall.Errno = 790\n\tERROR_BAD_MCFG_TABLE                                                      syscall.Errno = 791\n\tERROR_DISK_REPAIR_REDIRECTED                                              syscall.Errno = 792\n\tERROR_DISK_REPAIR_UNSUCCESSFUL                                            syscall.Errno = 793\n\tERROR_CORRUPT_LOG_OVERFULL                                                syscall.Errno = 794\n\tERROR_CORRUPT_LOG_CORRUPTED                                               syscall.Errno = 795\n\tERROR_CORRUPT_LOG_UNAVAILABLE                                             syscall.Errno = 796\n\tERROR_CORRUPT_LOG_DELETED_FULL                                            syscall.Errno = 797\n\tERROR_CORRUPT_LOG_CLEARED                                                 syscall.Errno = 798\n\tERROR_ORPHAN_NAME_EXHAUSTED                                               syscall.Errno = 799\n\tERROR_OPLOCK_SWITCHED_TO_NEW_HANDLE                                       syscall.Errno = 800\n\tERROR_CANNOT_GRANT_REQUESTED_OPLOCK                                       syscall.Errno = 801\n\tERROR_CANNOT_BREAK_OPLOCK                                                 syscall.Errno = 802\n\tERROR_OPLOCK_HANDLE_CLOSED                                                syscall.Errno = 803\n\tERROR_NO_ACE_CONDITION                                                    syscall.Errno = 804\n\tERROR_INVALID_ACE_CONDITION                                               syscall.Errno = 805\n\tERROR_FILE_HANDLE_REVOKED                                                 syscall.Errno = 806\n\tERROR_IMAGE_AT_DIFFERENT_BASE                                             syscall.Errno = 807\n\tERROR_ENCRYPTED_IO_NOT_POSSIBLE                                           syscall.Errno = 808\n\tERROR_FILE_METADATA_OPTIMIZATION_IN_PROGRESS                              syscall.Errno = 809\n\tERROR_QUOTA_ACTIVITY                                                      syscall.Errno = 810\n\tERROR_HANDLE_REVOKED                                                      syscall.Errno = 811\n\tERROR_CALLBACK_INVOKE_INLINE                                              syscall.Errno = 812\n\tERROR_CPU_SET_INVALID                                                     syscall.Errno = 813\n\tERROR_ENCLAVE_NOT_TERMINATED                                              syscall.Errno = 814\n\tERROR_ENCLAVE_VIOLATION                                                   syscall.Errno = 815\n\tERROR_EA_ACCESS_DENIED                                                    syscall.Errno = 994\n\tERROR_OPERATION_ABORTED                                                   syscall.Errno = 995\n\tERROR_IO_INCOMPLETE                                                       syscall.Errno = 996\n\tERROR_IO_PENDING                                                          syscall.Errno = 997\n\tERROR_NOACCESS                                                            syscall.Errno = 998\n\tERROR_SWAPERROR                                                           syscall.Errno = 999\n\tERROR_STACK_OVERFLOW                                                      syscall.Errno = 1001\n\tERROR_INVALID_MESSAGE                                                     syscall.Errno = 1002\n\tERROR_CAN_NOT_COMPLETE                                                    syscall.Errno = 1003\n\tERROR_INVALID_FLAGS                                                       syscall.Errno = 1004\n\tERROR_UNRECOGNIZED_VOLUME                                                 syscall.Errno = 1005\n\tERROR_FILE_INVALID                                                        syscall.Errno = 1006\n\tERROR_FULLSCREEN_MODE                                                     syscall.Errno = 1007\n\tERROR_NO_TOKEN                                                            syscall.Errno = 1008\n\tERROR_BADDB                                                               syscall.Errno = 1009\n\tERROR_BADKEY                                                              syscall.Errno = 1010\n\tERROR_CANTOPEN                                                            syscall.Errno = 1011\n\tERROR_CANTREAD                                                            syscall.Errno = 1012\n\tERROR_CANTWRITE                                                           syscall.Errno = 1013\n\tERROR_REGISTRY_RECOVERED                                                  syscall.Errno = 1014\n\tERROR_REGISTRY_CORRUPT                                                    syscall.Errno = 1015\n\tERROR_REGISTRY_IO_FAILED                                                  syscall.Errno = 1016\n\tERROR_NOT_REGISTRY_FILE                                                   syscall.Errno = 1017\n\tERROR_KEY_DELETED                                                         syscall.Errno = 1018\n\tERROR_NO_LOG_SPACE                                                        syscall.Errno = 1019\n\tERROR_KEY_HAS_CHILDREN                                                    syscall.Errno = 1020\n\tERROR_CHILD_MUST_BE_VOLATILE                                              syscall.Errno = 1021\n\tERROR_NOTIFY_ENUM_DIR                                                     syscall.Errno = 1022\n\tERROR_DEPENDENT_SERVICES_RUNNING                                          syscall.Errno = 1051\n\tERROR_INVALID_SERVICE_CONTROL                                             syscall.Errno = 1052\n\tERROR_SERVICE_REQUEST_TIMEOUT                                             syscall.Errno = 1053\n\tERROR_SERVICE_NO_THREAD                                                   syscall.Errno = 1054\n\tERROR_SERVICE_DATABASE_LOCKED                                             syscall.Errno = 1055\n\tERROR_SERVICE_ALREADY_RUNNING                                             syscall.Errno = 1056\n\tERROR_INVALID_SERVICE_ACCOUNT                                             syscall.Errno = 1057\n\tERROR_SERVICE_DISABLED                                                    syscall.Errno = 1058\n\tERROR_CIRCULAR_DEPENDENCY                                                 syscall.Errno = 1059\n\tERROR_SERVICE_DOES_NOT_EXIST                                              syscall.Errno = 1060\n\tERROR_SERVICE_CANNOT_ACCEPT_CTRL                                          syscall.Errno = 1061\n\tERROR_SERVICE_NOT_ACTIVE                                                  syscall.Errno = 1062\n\tERROR_FAILED_SERVICE_CONTROLLER_CONNECT                                   syscall.Errno = 1063\n\tERROR_EXCEPTION_IN_SERVICE                                                syscall.Errno = 1064\n\tERROR_DATABASE_DOES_NOT_EXIST                                             syscall.Errno = 1065\n\tERROR_SERVICE_SPECIFIC_ERROR                                              syscall.Errno = 1066\n\tERROR_PROCESS_ABORTED                                                     syscall.Errno = 1067\n\tERROR_SERVICE_DEPENDENCY_FAIL                                             syscall.Errno = 1068\n\tERROR_SERVICE_LOGON_FAILED                                                syscall.Errno = 1069\n\tERROR_SERVICE_START_HANG                                                  syscall.Errno = 1070\n\tERROR_INVALID_SERVICE_LOCK                                                syscall.Errno = 1071\n\tERROR_SERVICE_MARKED_FOR_DELETE                                           syscall.Errno = 1072\n\tERROR_SERVICE_EXISTS                                                      syscall.Errno = 1073\n\tERROR_ALREADY_RUNNING_LKG                                                 syscall.Errno = 1074\n\tERROR_SERVICE_DEPENDENCY_DELETED                                          syscall.Errno = 1075\n\tERROR_BOOT_ALREADY_ACCEPTED                                               syscall.Errno = 1076\n\tERROR_SERVICE_NEVER_STARTED                                               syscall.Errno = 1077\n\tERROR_DUPLICATE_SERVICE_NAME                                              syscall.Errno = 1078\n\tERROR_DIFFERENT_SERVICE_ACCOUNT                                           syscall.Errno = 1079\n\tERROR_CANNOT_DETECT_DRIVER_FAILURE                                        syscall.Errno = 1080\n\tERROR_CANNOT_DETECT_PROCESS_ABORT                                         syscall.Errno = 1081\n\tERROR_NO_RECOVERY_PROGRAM                                                 syscall.Errno = 1082\n\tERROR_SERVICE_NOT_IN_EXE                                                  syscall.Errno = 1083\n\tERROR_NOT_SAFEBOOT_SERVICE                                                syscall.Errno = 1084\n\tERROR_END_OF_MEDIA                                                        syscall.Errno = 1100\n\tERROR_FILEMARK_DETECTED                                                   syscall.Errno = 1101\n\tERROR_BEGINNING_OF_MEDIA                                                  syscall.Errno = 1102\n\tERROR_SETMARK_DETECTED                                                    syscall.Errno = 1103\n\tERROR_NO_DATA_DETECTED                                                    syscall.Errno = 1104\n\tERROR_PARTITION_FAILURE                                                   syscall.Errno = 1105\n\tERROR_INVALID_BLOCK_LENGTH                                                syscall.Errno = 1106\n\tERROR_DEVICE_NOT_PARTITIONED                                              syscall.Errno = 1107\n\tERROR_UNABLE_TO_LOCK_MEDIA                                                syscall.Errno = 1108\n\tERROR_UNABLE_TO_UNLOAD_MEDIA                                              syscall.Errno = 1109\n\tERROR_MEDIA_CHANGED                                                       syscall.Errno = 1110\n\tERROR_BUS_RESET                                                           syscall.Errno = 1111\n\tERROR_NO_MEDIA_IN_DRIVE                                                   syscall.Errno = 1112\n\tERROR_NO_UNICODE_TRANSLATION                                              syscall.Errno = 1113\n\tERROR_DLL_INIT_FAILED                                                     syscall.Errno = 1114\n\tERROR_SHUTDOWN_IN_PROGRESS                                                syscall.Errno = 1115\n\tERROR_NO_SHUTDOWN_IN_PROGRESS                                             syscall.Errno = 1116\n\tERROR_IO_DEVICE                                                           syscall.Errno = 1117\n\tERROR_SERIAL_NO_DEVICE                                                    syscall.Errno = 1118\n\tERROR_IRQ_BUSY                                                            syscall.Errno = 1119\n\tERROR_MORE_WRITES                                                         syscall.Errno = 1120\n\tERROR_COUNTER_TIMEOUT                                                     syscall.Errno = 1121\n\tERROR_FLOPPY_ID_MARK_NOT_FOUND                                            syscall.Errno = 1122\n\tERROR_FLOPPY_WRONG_CYLINDER                                               syscall.Errno = 1123\n\tERROR_FLOPPY_UNKNOWN_ERROR                                                syscall.Errno = 1124\n\tERROR_FLOPPY_BAD_REGISTERS                                                syscall.Errno = 1125\n\tERROR_DISK_RECALIBRATE_FAILED                                             syscall.Errno = 1126\n\tERROR_DISK_OPERATION_FAILED                                               syscall.Errno = 1127\n\tERROR_DISK_RESET_FAILED                                                   syscall.Errno = 1128\n\tERROR_EOM_OVERFLOW                                                        syscall.Errno = 1129\n\tERROR_NOT_ENOUGH_SERVER_MEMORY                                            syscall.Errno = 1130\n\tERROR_POSSIBLE_DEADLOCK                                                   syscall.Errno = 1131\n\tERROR_MAPPED_ALIGNMENT                                                    syscall.Errno = 1132\n\tERROR_SET_POWER_STATE_VETOED                                              syscall.Errno = 1140\n\tERROR_SET_POWER_STATE_FAILED                                              syscall.Errno = 1141\n\tERROR_TOO_MANY_LINKS                                                      syscall.Errno = 1142\n\tERROR_OLD_WIN_VERSION                                                     syscall.Errno = 1150\n\tERROR_APP_WRONG_OS                                                        syscall.Errno = 1151\n\tERROR_SINGLE_INSTANCE_APP                                                 syscall.Errno = 1152\n\tERROR_RMODE_APP                                                           syscall.Errno = 1153\n\tERROR_INVALID_DLL                                                         syscall.Errno = 1154\n\tERROR_NO_ASSOCIATION                                                      syscall.Errno = 1155\n\tERROR_DDE_FAIL                                                            syscall.Errno = 1156\n\tERROR_DLL_NOT_FOUND                                                       syscall.Errno = 1157\n\tERROR_NO_MORE_USER_HANDLES                                                syscall.Errno = 1158\n\tERROR_MESSAGE_SYNC_ONLY                                                   syscall.Errno = 1159\n\tERROR_SOURCE_ELEMENT_EMPTY                                                syscall.Errno = 1160\n\tERROR_DESTINATION_ELEMENT_FULL                                            syscall.Errno = 1161\n\tERROR_ILLEGAL_ELEMENT_ADDRESS                                             syscall.Errno = 1162\n\tERROR_MAGAZINE_NOT_PRESENT                                                syscall.Errno = 1163\n\tERROR_DEVICE_REINITIALIZATION_NEEDED                                      syscall.Errno = 1164\n\tERROR_DEVICE_REQUIRES_CLEANING                                            syscall.Errno = 1165\n\tERROR_DEVICE_DOOR_OPEN                                                    syscall.Errno = 1166\n\tERROR_DEVICE_NOT_CONNECTED                                                syscall.Errno = 1167\n\tERROR_NOT_FOUND                                                           syscall.Errno = 1168\n\tERROR_NO_MATCH                                                            syscall.Errno = 1169\n\tERROR_SET_NOT_FOUND                                                       syscall.Errno = 1170\n\tERROR_POINT_NOT_FOUND                                                     syscall.Errno = 1171\n\tERROR_NO_TRACKING_SERVICE                                                 syscall.Errno = 1172\n\tERROR_NO_VOLUME_ID                                                        syscall.Errno = 1173\n\tERROR_UNABLE_TO_REMOVE_REPLACED                                           syscall.Errno = 1175\n\tERROR_UNABLE_TO_MOVE_REPLACEMENT                                          syscall.Errno = 1176\n\tERROR_UNABLE_TO_MOVE_REPLACEMENT_2                                        syscall.Errno = 1177\n\tERROR_JOURNAL_DELETE_IN_PROGRESS                                          syscall.Errno = 1178\n\tERROR_JOURNAL_NOT_ACTIVE                                                  syscall.Errno = 1179\n\tERROR_POTENTIAL_FILE_FOUND                                                syscall.Errno = 1180\n\tERROR_JOURNAL_ENTRY_DELETED                                               syscall.Errno = 1181\n\tERROR_SHUTDOWN_IS_SCHEDULED                                               syscall.Errno = 1190\n\tERROR_SHUTDOWN_USERS_LOGGED_ON                                            syscall.Errno = 1191\n\tERROR_BAD_DEVICE                                                          syscall.Errno = 1200\n\tERROR_CONNECTION_UNAVAIL                                                  syscall.Errno = 1201\n\tERROR_DEVICE_ALREADY_REMEMBERED                                           syscall.Errno = 1202\n\tERROR_NO_NET_OR_BAD_PATH                                                  syscall.Errno = 1203\n\tERROR_BAD_PROVIDER                                                        syscall.Errno = 1204\n\tERROR_CANNOT_OPEN_PROFILE                                                 syscall.Errno = 1205\n\tERROR_BAD_PROFILE                                                         syscall.Errno = 1206\n\tERROR_NOT_CONTAINER                                                       syscall.Errno = 1207\n\tERROR_EXTENDED_ERROR                                                      syscall.Errno = 1208\n\tERROR_INVALID_GROUPNAME                                                   syscall.Errno = 1209\n\tERROR_INVALID_COMPUTERNAME                                                syscall.Errno = 1210\n\tERROR_INVALID_EVENTNAME                                                   syscall.Errno = 1211\n\tERROR_INVALID_DOMAINNAME                                                  syscall.Errno = 1212\n\tERROR_INVALID_SERVICENAME                                                 syscall.Errno = 1213\n\tERROR_INVALID_NETNAME                                                     syscall.Errno = 1214\n\tERROR_INVALID_SHARENAME                                                   syscall.Errno = 1215\n\tERROR_INVALID_PASSWORDNAME                                                syscall.Errno = 1216\n\tERROR_INVALID_MESSAGENAME                                                 syscall.Errno = 1217\n\tERROR_INVALID_MESSAGEDEST                                                 syscall.Errno = 1218\n\tERROR_SESSION_CREDENTIAL_CONFLICT                                         syscall.Errno = 1219\n\tERROR_REMOTE_SESSION_LIMIT_EXCEEDED                                       syscall.Errno = 1220\n\tERROR_DUP_DOMAINNAME                                                      syscall.Errno = 1221\n\tERROR_NO_NETWORK                                                          syscall.Errno = 1222\n\tERROR_CANCELLED                                                           syscall.Errno = 1223\n\tERROR_USER_MAPPED_FILE                                                    syscall.Errno = 1224\n\tERROR_CONNECTION_REFUSED                                                  syscall.Errno = 1225\n\tERROR_GRACEFUL_DISCONNECT                                                 syscall.Errno = 1226\n\tERROR_ADDRESS_ALREADY_ASSOCIATED                                          syscall.Errno = 1227\n\tERROR_ADDRESS_NOT_ASSOCIATED                                              syscall.Errno = 1228\n\tERROR_CONNECTION_INVALID                                                  syscall.Errno = 1229\n\tERROR_CONNECTION_ACTIVE                                                   syscall.Errno = 1230\n\tERROR_NETWORK_UNREACHABLE                                                 syscall.Errno = 1231\n\tERROR_HOST_UNREACHABLE                                                    syscall.Errno = 1232\n\tERROR_PROTOCOL_UNREACHABLE                                                syscall.Errno = 1233\n\tERROR_PORT_UNREACHABLE                                                    syscall.Errno = 1234\n\tERROR_REQUEST_ABORTED                                                     syscall.Errno = 1235\n\tERROR_CONNECTION_ABORTED                                                  syscall.Errno = 1236\n\tERROR_RETRY                                                               syscall.Errno = 1237\n\tERROR_CONNECTION_COUNT_LIMIT                                              syscall.Errno = 1238\n\tERROR_LOGIN_TIME_RESTRICTION                                              syscall.Errno = 1239\n\tERROR_LOGIN_WKSTA_RESTRICTION                                             syscall.Errno = 1240\n\tERROR_INCORRECT_ADDRESS                                                   syscall.Errno = 1241\n\tERROR_ALREADY_REGISTERED                                                  syscall.Errno = 1242\n\tERROR_SERVICE_NOT_FOUND                                                   syscall.Errno = 1243\n\tERROR_NOT_AUTHENTICATED                                                   syscall.Errno = 1244\n\tERROR_NOT_LOGGED_ON                                                       syscall.Errno = 1245\n\tERROR_CONTINUE                                                            syscall.Errno = 1246\n\tERROR_ALREADY_INITIALIZED                                                 syscall.Errno = 1247\n\tERROR_NO_MORE_DEVICES                                                     syscall.Errno = 1248\n\tERROR_NO_SUCH_SITE                                                        syscall.Errno = 1249\n\tERROR_DOMAIN_CONTROLLER_EXISTS                                            syscall.Errno = 1250\n\tERROR_ONLY_IF_CONNECTED                                                   syscall.Errno = 1251\n\tERROR_OVERRIDE_NOCHANGES                                                  syscall.Errno = 1252\n\tERROR_BAD_USER_PROFILE                                                    syscall.Errno = 1253\n\tERROR_NOT_SUPPORTED_ON_SBS                                                syscall.Errno = 1254\n\tERROR_SERVER_SHUTDOWN_IN_PROGRESS                                         syscall.Errno = 1255\n\tERROR_HOST_DOWN                                                           syscall.Errno = 1256\n\tERROR_NON_ACCOUNT_SID                                                     syscall.Errno = 1257\n\tERROR_NON_DOMAIN_SID                                                      syscall.Errno = 1258\n\tERROR_APPHELP_BLOCK                                                       syscall.Errno = 1259\n\tERROR_ACCESS_DISABLED_BY_POLICY                                           syscall.Errno = 1260\n\tERROR_REG_NAT_CONSUMPTION                                                 syscall.Errno = 1261\n\tERROR_CSCSHARE_OFFLINE                                                    syscall.Errno = 1262\n\tERROR_PKINIT_FAILURE                                                      syscall.Errno = 1263\n\tERROR_SMARTCARD_SUBSYSTEM_FAILURE                                         syscall.Errno = 1264\n\tERROR_DOWNGRADE_DETECTED                                                  syscall.Errno = 1265\n\tERROR_MACHINE_LOCKED                                                      syscall.Errno = 1271\n\tERROR_SMB_GUEST_LOGON_BLOCKED                                             syscall.Errno = 1272\n\tERROR_CALLBACK_SUPPLIED_INVALID_DATA                                      syscall.Errno = 1273\n\tERROR_SYNC_FOREGROUND_REFRESH_REQUIRED                                    syscall.Errno = 1274\n\tERROR_DRIVER_BLOCKED                                                      syscall.Errno = 1275\n\tERROR_INVALID_IMPORT_OF_NON_DLL                                           syscall.Errno = 1276\n\tERROR_ACCESS_DISABLED_WEBBLADE                                            syscall.Errno = 1277\n\tERROR_ACCESS_DISABLED_WEBBLADE_TAMPER                                     syscall.Errno = 1278\n\tERROR_RECOVERY_FAILURE                                                    syscall.Errno = 1279\n\tERROR_ALREADY_FIBER                                                       syscall.Errno = 1280\n\tERROR_ALREADY_THREAD                                                      syscall.Errno = 1281\n\tERROR_STACK_BUFFER_OVERRUN                                                syscall.Errno = 1282\n\tERROR_PARAMETER_QUOTA_EXCEEDED                                            syscall.Errno = 1283\n\tERROR_DEBUGGER_INACTIVE                                                   syscall.Errno = 1284\n\tERROR_DELAY_LOAD_FAILED                                                   syscall.Errno = 1285\n\tERROR_VDM_DISALLOWED                                                      syscall.Errno = 1286\n\tERROR_UNIDENTIFIED_ERROR                                                  syscall.Errno = 1287\n\tERROR_INVALID_CRUNTIME_PARAMETER                                          syscall.Errno = 1288\n\tERROR_BEYOND_VDL                                                          syscall.Errno = 1289\n\tERROR_INCOMPATIBLE_SERVICE_SID_TYPE                                       syscall.Errno = 1290\n\tERROR_DRIVER_PROCESS_TERMINATED                                           syscall.Errno = 1291\n\tERROR_IMPLEMENTATION_LIMIT                                                syscall.Errno = 1292\n\tERROR_PROCESS_IS_PROTECTED                                                syscall.Errno = 1293\n\tERROR_SERVICE_NOTIFY_CLIENT_LAGGING                                       syscall.Errno = 1294\n\tERROR_DISK_QUOTA_EXCEEDED                                                 syscall.Errno = 1295\n\tERROR_CONTENT_BLOCKED                                                     syscall.Errno = 1296\n\tERROR_INCOMPATIBLE_SERVICE_PRIVILEGE                                      syscall.Errno = 1297\n\tERROR_APP_HANG                                                            syscall.Errno = 1298\n\tERROR_INVALID_LABEL                                                       syscall.Errno = 1299\n\tERROR_NOT_ALL_ASSIGNED                                                    syscall.Errno = 1300\n\tERROR_SOME_NOT_MAPPED                                                     syscall.Errno = 1301\n\tERROR_NO_QUOTAS_FOR_ACCOUNT                                               syscall.Errno = 1302\n\tERROR_LOCAL_USER_SESSION_KEY                                              syscall.Errno = 1303\n\tERROR_NULL_LM_PASSWORD                                                    syscall.Errno = 1304\n\tERROR_UNKNOWN_REVISION                                                    syscall.Errno = 1305\n\tERROR_REVISION_MISMATCH                                                   syscall.Errno = 1306\n\tERROR_INVALID_OWNER                                                       syscall.Errno = 1307\n\tERROR_INVALID_PRIMARY_GROUP                                               syscall.Errno = 1308\n\tERROR_NO_IMPERSONATION_TOKEN                                              syscall.Errno = 1309\n\tERROR_CANT_DISABLE_MANDATORY                                              syscall.Errno = 1310\n\tERROR_NO_LOGON_SERVERS                                                    syscall.Errno = 1311\n\tERROR_NO_SUCH_LOGON_SESSION                                               syscall.Errno = 1312\n\tERROR_NO_SUCH_PRIVILEGE                                                   syscall.Errno = 1313\n\tERROR_PRIVILEGE_NOT_HELD                                                  syscall.Errno = 1314\n\tERROR_INVALID_ACCOUNT_NAME                                                syscall.Errno = 1315\n\tERROR_USER_EXISTS                                                         syscall.Errno = 1316\n\tERROR_NO_SUCH_USER                                                        syscall.Errno = 1317\n\tERROR_GROUP_EXISTS                                                        syscall.Errno = 1318\n\tERROR_NO_SUCH_GROUP                                                       syscall.Errno = 1319\n\tERROR_MEMBER_IN_GROUP                                                     syscall.Errno = 1320\n\tERROR_MEMBER_NOT_IN_GROUP                                                 syscall.Errno = 1321\n\tERROR_LAST_ADMIN                                                          syscall.Errno = 1322\n\tERROR_WRONG_PASSWORD                                                      syscall.Errno = 1323\n\tERROR_ILL_FORMED_PASSWORD                                                 syscall.Errno = 1324\n\tERROR_PASSWORD_RESTRICTION                                                syscall.Errno = 1325\n\tERROR_LOGON_FAILURE                                                       syscall.Errno = 1326\n\tERROR_ACCOUNT_RESTRICTION                                                 syscall.Errno = 1327\n\tERROR_INVALID_LOGON_HOURS                                                 syscall.Errno = 1328\n\tERROR_INVALID_WORKSTATION                                                 syscall.Errno = 1329\n\tERROR_PASSWORD_EXPIRED                                                    syscall.Errno = 1330\n\tERROR_ACCOUNT_DISABLED                                                    syscall.Errno = 1331\n\tERROR_NONE_MAPPED                                                         syscall.Errno = 1332\n\tERROR_TOO_MANY_LUIDS_REQUESTED                                            syscall.Errno = 1333\n\tERROR_LUIDS_EXHAUSTED                                                     syscall.Errno = 1334\n\tERROR_INVALID_SUB_AUTHORITY                                               syscall.Errno = 1335\n\tERROR_INVALID_ACL                                                         syscall.Errno = 1336\n\tERROR_INVALID_SID                                                         syscall.Errno = 1337\n\tERROR_INVALID_SECURITY_DESCR                                              syscall.Errno = 1338\n\tERROR_BAD_INHERITANCE_ACL                                                 syscall.Errno = 1340\n\tERROR_SERVER_DISABLED                                                     syscall.Errno = 1341\n\tERROR_SERVER_NOT_DISABLED                                                 syscall.Errno = 1342\n\tERROR_INVALID_ID_AUTHORITY                                                syscall.Errno = 1343\n\tERROR_ALLOTTED_SPACE_EXCEEDED                                             syscall.Errno = 1344\n\tERROR_INVALID_GROUP_ATTRIBUTES                                            syscall.Errno = 1345\n\tERROR_BAD_IMPERSONATION_LEVEL                                             syscall.Errno = 1346\n\tERROR_CANT_OPEN_ANONYMOUS                                                 syscall.Errno = 1347\n\tERROR_BAD_VALIDATION_CLASS                                                syscall.Errno = 1348\n\tERROR_BAD_TOKEN_TYPE                                                      syscall.Errno = 1349\n\tERROR_NO_SECURITY_ON_OBJECT                                               syscall.Errno = 1350\n\tERROR_CANT_ACCESS_DOMAIN_INFO                                             syscall.Errno = 1351\n\tERROR_INVALID_SERVER_STATE                                                syscall.Errno = 1352\n\tERROR_INVALID_DOMAIN_STATE                                                syscall.Errno = 1353\n\tERROR_INVALID_DOMAIN_ROLE                                                 syscall.Errno = 1354\n\tERROR_NO_SUCH_DOMAIN                                                      syscall.Errno = 1355\n\tERROR_DOMAIN_EXISTS                                                       syscall.Errno = 1356\n\tERROR_DOMAIN_LIMIT_EXCEEDED                                               syscall.Errno = 1357\n\tERROR_INTERNAL_DB_CORRUPTION                                              syscall.Errno = 1358\n\tERROR_INTERNAL_ERROR                                                      syscall.Errno = 1359\n\tERROR_GENERIC_NOT_MAPPED                                                  syscall.Errno = 1360\n\tERROR_BAD_DESCRIPTOR_FORMAT                                               syscall.Errno = 1361\n\tERROR_NOT_LOGON_PROCESS                                                   syscall.Errno = 1362\n\tERROR_LOGON_SESSION_EXISTS                                                syscall.Errno = 1363\n\tERROR_NO_SUCH_PACKAGE                                                     syscall.Errno = 1364\n\tERROR_BAD_LOGON_SESSION_STATE                                             syscall.Errno = 1365\n\tERROR_LOGON_SESSION_COLLISION                                             syscall.Errno = 1366\n\tERROR_INVALID_LOGON_TYPE                                                  syscall.Errno = 1367\n\tERROR_CANNOT_IMPERSONATE                                                  syscall.Errno = 1368\n\tERROR_RXACT_INVALID_STATE                                                 syscall.Errno = 1369\n\tERROR_RXACT_COMMIT_FAILURE                                                syscall.Errno = 1370\n\tERROR_SPECIAL_ACCOUNT                                                     syscall.Errno = 1371\n\tERROR_SPECIAL_GROUP                                                       syscall.Errno = 1372\n\tERROR_SPECIAL_USER                                                        syscall.Errno = 1373\n\tERROR_MEMBERS_PRIMARY_GROUP                                               syscall.Errno = 1374\n\tERROR_TOKEN_ALREADY_IN_USE                                                syscall.Errno = 1375\n\tERROR_NO_SUCH_ALIAS                                                       syscall.Errno = 1376\n\tERROR_MEMBER_NOT_IN_ALIAS                                                 syscall.Errno = 1377\n\tERROR_MEMBER_IN_ALIAS                                                     syscall.Errno = 1378\n\tERROR_ALIAS_EXISTS                                                        syscall.Errno = 1379\n\tERROR_LOGON_NOT_GRANTED                                                   syscall.Errno = 1380\n\tERROR_TOO_MANY_SECRETS                                                    syscall.Errno = 1381\n\tERROR_SECRET_TOO_LONG                                                     syscall.Errno = 1382\n\tERROR_INTERNAL_DB_ERROR                                                   syscall.Errno = 1383\n\tERROR_TOO_MANY_CONTEXT_IDS                                                syscall.Errno = 1384\n\tERROR_LOGON_TYPE_NOT_GRANTED                                              syscall.Errno = 1385\n\tERROR_NT_CROSS_ENCRYPTION_REQUIRED                                        syscall.Errno = 1386\n\tERROR_NO_SUCH_MEMBER                                                      syscall.Errno = 1387\n\tERROR_INVALID_MEMBER                                                      syscall.Errno = 1388\n\tERROR_TOO_MANY_SIDS                                                       syscall.Errno = 1389\n\tERROR_LM_CROSS_ENCRYPTION_REQUIRED                                        syscall.Errno = 1390\n\tERROR_NO_INHERITANCE                                                      syscall.Errno = 1391\n\tERROR_FILE_CORRUPT                                                        syscall.Errno = 1392\n\tERROR_DISK_CORRUPT                                                        syscall.Errno = 1393\n\tERROR_NO_USER_SESSION_KEY                                                 syscall.Errno = 1394\n\tERROR_LICENSE_QUOTA_EXCEEDED                                              syscall.Errno = 1395\n\tERROR_WRONG_TARGET_NAME                                                   syscall.Errno = 1396\n\tERROR_MUTUAL_AUTH_FAILED                                                  syscall.Errno = 1397\n\tERROR_TIME_SKEW                                                           syscall.Errno = 1398\n\tERROR_CURRENT_DOMAIN_NOT_ALLOWED                                          syscall.Errno = 1399\n\tERROR_INVALID_WINDOW_HANDLE                                               syscall.Errno = 1400\n\tERROR_INVALID_MENU_HANDLE                                                 syscall.Errno = 1401\n\tERROR_INVALID_CURSOR_HANDLE                                               syscall.Errno = 1402\n\tERROR_INVALID_ACCEL_HANDLE                                                syscall.Errno = 1403\n\tERROR_INVALID_HOOK_HANDLE                                                 syscall.Errno = 1404\n\tERROR_INVALID_DWP_HANDLE                                                  syscall.Errno = 1405\n\tERROR_TLW_WITH_WSCHILD                                                    syscall.Errno = 1406\n\tERROR_CANNOT_FIND_WND_CLASS                                               syscall.Errno = 1407\n\tERROR_WINDOW_OF_OTHER_THREAD                                              syscall.Errno = 1408\n\tERROR_HOTKEY_ALREADY_REGISTERED                                           syscall.Errno = 1409\n\tERROR_CLASS_ALREADY_EXISTS                                                syscall.Errno = 1410\n\tERROR_CLASS_DOES_NOT_EXIST                                                syscall.Errno = 1411\n\tERROR_CLASS_HAS_WINDOWS                                                   syscall.Errno = 1412\n\tERROR_INVALID_INDEX                                                       syscall.Errno = 1413\n\tERROR_INVALID_ICON_HANDLE                                                 syscall.Errno = 1414\n\tERROR_PRIVATE_DIALOG_INDEX                                                syscall.Errno = 1415\n\tERROR_LISTBOX_ID_NOT_FOUND                                                syscall.Errno = 1416\n\tERROR_NO_WILDCARD_CHARACTERS                                              syscall.Errno = 1417\n\tERROR_CLIPBOARD_NOT_OPEN                                                  syscall.Errno = 1418\n\tERROR_HOTKEY_NOT_REGISTERED                                               syscall.Errno = 1419\n\tERROR_WINDOW_NOT_DIALOG                                                   syscall.Errno = 1420\n\tERROR_CONTROL_ID_NOT_FOUND                                                syscall.Errno = 1421\n\tERROR_INVALID_COMBOBOX_MESSAGE                                            syscall.Errno = 1422\n\tERROR_WINDOW_NOT_COMBOBOX                                                 syscall.Errno = 1423\n\tERROR_INVALID_EDIT_HEIGHT                                                 syscall.Errno = 1424\n\tERROR_DC_NOT_FOUND                                                        syscall.Errno = 1425\n\tERROR_INVALID_HOOK_FILTER                                                 syscall.Errno = 1426\n\tERROR_INVALID_FILTER_PROC                                                 syscall.Errno = 1427\n\tERROR_HOOK_NEEDS_HMOD                                                     syscall.Errno = 1428\n\tERROR_GLOBAL_ONLY_HOOK                                                    syscall.Errno = 1429\n\tERROR_JOURNAL_HOOK_SET                                                    syscall.Errno = 1430\n\tERROR_HOOK_NOT_INSTALLED                                                  syscall.Errno = 1431\n\tERROR_INVALID_LB_MESSAGE                                                  syscall.Errno = 1432\n\tERROR_SETCOUNT_ON_BAD_LB                                                  syscall.Errno = 1433\n\tERROR_LB_WITHOUT_TABSTOPS                                                 syscall.Errno = 1434\n\tERROR_DESTROY_OBJECT_OF_OTHER_THREAD                                      syscall.Errno = 1435\n\tERROR_CHILD_WINDOW_MENU                                                   syscall.Errno = 1436\n\tERROR_NO_SYSTEM_MENU                                                      syscall.Errno = 1437\n\tERROR_INVALID_MSGBOX_STYLE                                                syscall.Errno = 1438\n\tERROR_INVALID_SPI_VALUE                                                   syscall.Errno = 1439\n\tERROR_SCREEN_ALREADY_LOCKED                                               syscall.Errno = 1440\n\tERROR_HWNDS_HAVE_DIFF_PARENT                                              syscall.Errno = 1441\n\tERROR_NOT_CHILD_WINDOW                                                    syscall.Errno = 1442\n\tERROR_INVALID_GW_COMMAND                                                  syscall.Errno = 1443\n\tERROR_INVALID_THREAD_ID                                                   syscall.Errno = 1444\n\tERROR_NON_MDICHILD_WINDOW                                                 syscall.Errno = 1445\n\tERROR_POPUP_ALREADY_ACTIVE                                                syscall.Errno = 1446\n\tERROR_NO_SCROLLBARS                                                       syscall.Errno = 1447\n\tERROR_INVALID_SCROLLBAR_RANGE                                             syscall.Errno = 1448\n\tERROR_INVALID_SHOWWIN_COMMAND                                             syscall.Errno = 1449\n\tERROR_NO_SYSTEM_RESOURCES                                                 syscall.Errno = 1450\n\tERROR_NONPAGED_SYSTEM_RESOURCES                                           syscall.Errno = 1451\n\tERROR_PAGED_SYSTEM_RESOURCES                                              syscall.Errno = 1452\n\tERROR_WORKING_SET_QUOTA                                                   syscall.Errno = 1453\n\tERROR_PAGEFILE_QUOTA                                                      syscall.Errno = 1454\n\tERROR_COMMITMENT_LIMIT                                                    syscall.Errno = 1455\n\tERROR_MENU_ITEM_NOT_FOUND                                                 syscall.Errno = 1456\n\tERROR_INVALID_KEYBOARD_HANDLE                                             syscall.Errno = 1457\n\tERROR_HOOK_TYPE_NOT_ALLOWED                                               syscall.Errno = 1458\n\tERROR_REQUIRES_INTERACTIVE_WINDOWSTATION                                  syscall.Errno = 1459\n\tERROR_TIMEOUT                                                             syscall.Errno = 1460\n\tERROR_INVALID_MONITOR_HANDLE                                              syscall.Errno = 1461\n\tERROR_INCORRECT_SIZE                                                      syscall.Errno = 1462\n\tERROR_SYMLINK_CLASS_DISABLED                                              syscall.Errno = 1463\n\tERROR_SYMLINK_NOT_SUPPORTED                                               syscall.Errno = 1464\n\tERROR_XML_PARSE_ERROR                                                     syscall.Errno = 1465\n\tERROR_XMLDSIG_ERROR                                                       syscall.Errno = 1466\n\tERROR_RESTART_APPLICATION                                                 syscall.Errno = 1467\n\tERROR_WRONG_COMPARTMENT                                                   syscall.Errno = 1468\n\tERROR_AUTHIP_FAILURE                                                      syscall.Errno = 1469\n\tERROR_NO_NVRAM_RESOURCES                                                  syscall.Errno = 1470\n\tERROR_NOT_GUI_PROCESS                                                     syscall.Errno = 1471\n\tERROR_EVENTLOG_FILE_CORRUPT                                               syscall.Errno = 1500\n\tERROR_EVENTLOG_CANT_START                                                 syscall.Errno = 1501\n\tERROR_LOG_FILE_FULL                                                       syscall.Errno = 1502\n\tERROR_EVENTLOG_FILE_CHANGED                                               syscall.Errno = 1503\n\tERROR_CONTAINER_ASSIGNED                                                  syscall.Errno = 1504\n\tERROR_JOB_NO_CONTAINER                                                    syscall.Errno = 1505\n\tERROR_INVALID_TASK_NAME                                                   syscall.Errno = 1550\n\tERROR_INVALID_TASK_INDEX                                                  syscall.Errno = 1551\n\tERROR_THREAD_ALREADY_IN_TASK                                              syscall.Errno = 1552\n\tERROR_INSTALL_SERVICE_FAILURE                                             syscall.Errno = 1601\n\tERROR_INSTALL_USEREXIT                                                    syscall.Errno = 1602\n\tERROR_INSTALL_FAILURE                                                     syscall.Errno = 1603\n\tERROR_INSTALL_SUSPEND                                                     syscall.Errno = 1604\n\tERROR_UNKNOWN_PRODUCT                                                     syscall.Errno = 1605\n\tERROR_UNKNOWN_FEATURE                                                     syscall.Errno = 1606\n\tERROR_UNKNOWN_COMPONENT                                                   syscall.Errno = 1607\n\tERROR_UNKNOWN_PROPERTY                                                    syscall.Errno = 1608\n\tERROR_INVALID_HANDLE_STATE                                                syscall.Errno = 1609\n\tERROR_BAD_CONFIGURATION                                                   syscall.Errno = 1610\n\tERROR_INDEX_ABSENT                                                        syscall.Errno = 1611\n\tERROR_INSTALL_SOURCE_ABSENT                                               syscall.Errno = 1612\n\tERROR_INSTALL_PACKAGE_VERSION                                             syscall.Errno = 1613\n\tERROR_PRODUCT_UNINSTALLED                                                 syscall.Errno = 1614\n\tERROR_BAD_QUERY_SYNTAX                                                    syscall.Errno = 1615\n\tERROR_INVALID_FIELD                                                       syscall.Errno = 1616\n\tERROR_DEVICE_REMOVED                                                      syscall.Errno = 1617\n\tERROR_INSTALL_ALREADY_RUNNING                                             syscall.Errno = 1618\n\tERROR_INSTALL_PACKAGE_OPEN_FAILED                                         syscall.Errno = 1619\n\tERROR_INSTALL_PACKAGE_INVALID                                             syscall.Errno = 1620\n\tERROR_INSTALL_UI_FAILURE                                                  syscall.Errno = 1621\n\tERROR_INSTALL_LOG_FAILURE                                                 syscall.Errno = 1622\n\tERROR_INSTALL_LANGUAGE_UNSUPPORTED                                        syscall.Errno = 1623\n\tERROR_INSTALL_TRANSFORM_FAILURE                                           syscall.Errno = 1624\n\tERROR_INSTALL_PACKAGE_REJECTED                                            syscall.Errno = 1625\n\tERROR_FUNCTION_NOT_CALLED                                                 syscall.Errno = 1626\n\tERROR_FUNCTION_FAILED                                                     syscall.Errno = 1627\n\tERROR_INVALID_TABLE                                                       syscall.Errno = 1628\n\tERROR_DATATYPE_MISMATCH                                                   syscall.Errno = 1629\n\tERROR_UNSUPPORTED_TYPE                                                    syscall.Errno = 1630\n\tERROR_CREATE_FAILED                                                       syscall.Errno = 1631\n\tERROR_INSTALL_TEMP_UNWRITABLE                                             syscall.Errno = 1632\n\tERROR_INSTALL_PLATFORM_UNSUPPORTED                                        syscall.Errno = 1633\n\tERROR_INSTALL_NOTUSED                                                     syscall.Errno = 1634\n\tERROR_PATCH_PACKAGE_OPEN_FAILED                                           syscall.Errno = 1635\n\tERROR_PATCH_PACKAGE_INVALID                                               syscall.Errno = 1636\n\tERROR_PATCH_PACKAGE_UNSUPPORTED                                           syscall.Errno = 1637\n\tERROR_PRODUCT_VERSION                                                     syscall.Errno = 1638\n\tERROR_INVALID_COMMAND_LINE                                                syscall.Errno = 1639\n\tERROR_INSTALL_REMOTE_DISALLOWED                                           syscall.Errno = 1640\n\tERROR_SUCCESS_REBOOT_INITIATED                                            syscall.Errno = 1641\n\tERROR_PATCH_TARGET_NOT_FOUND                                              syscall.Errno = 1642\n\tERROR_PATCH_PACKAGE_REJECTED                                              syscall.Errno = 1643\n\tERROR_INSTALL_TRANSFORM_REJECTED                                          syscall.Errno = 1644\n\tERROR_INSTALL_REMOTE_PROHIBITED                                           syscall.Errno = 1645\n\tERROR_PATCH_REMOVAL_UNSUPPORTED                                           syscall.Errno = 1646\n\tERROR_UNKNOWN_PATCH                                                       syscall.Errno = 1647\n\tERROR_PATCH_NO_SEQUENCE                                                   syscall.Errno = 1648\n\tERROR_PATCH_REMOVAL_DISALLOWED                                            syscall.Errno = 1649\n\tERROR_INVALID_PATCH_XML                                                   syscall.Errno = 1650\n\tERROR_PATCH_MANAGED_ADVERTISED_PRODUCT                                    syscall.Errno = 1651\n\tERROR_INSTALL_SERVICE_SAFEBOOT                                            syscall.Errno = 1652\n\tERROR_FAIL_FAST_EXCEPTION                                                 syscall.Errno = 1653\n\tERROR_INSTALL_REJECTED                                                    syscall.Errno = 1654\n\tERROR_DYNAMIC_CODE_BLOCKED                                                syscall.Errno = 1655\n\tERROR_NOT_SAME_OBJECT                                                     syscall.Errno = 1656\n\tERROR_STRICT_CFG_VIOLATION                                                syscall.Errno = 1657\n\tERROR_SET_CONTEXT_DENIED                                                  syscall.Errno = 1660\n\tERROR_CROSS_PARTITION_VIOLATION                                           syscall.Errno = 1661\n\tRPC_S_INVALID_STRING_BINDING                                              syscall.Errno = 1700\n\tRPC_S_WRONG_KIND_OF_BINDING                                               syscall.Errno = 1701\n\tRPC_S_INVALID_BINDING                                                     syscall.Errno = 1702\n\tRPC_S_PROTSEQ_NOT_SUPPORTED                                               syscall.Errno = 1703\n\tRPC_S_INVALID_RPC_PROTSEQ                                                 syscall.Errno = 1704\n\tRPC_S_INVALID_STRING_UUID                                                 syscall.Errno = 1705\n\tRPC_S_INVALID_ENDPOINT_FORMAT                                             syscall.Errno = 1706\n\tRPC_S_INVALID_NET_ADDR                                                    syscall.Errno = 1707\n\tRPC_S_NO_ENDPOINT_FOUND                                                   syscall.Errno = 1708\n\tRPC_S_INVALID_TIMEOUT                                                     syscall.Errno = 1709\n\tRPC_S_OBJECT_NOT_FOUND                                                    syscall.Errno = 1710\n\tRPC_S_ALREADY_REGISTERED                                                  syscall.Errno = 1711\n\tRPC_S_TYPE_ALREADY_REGISTERED                                             syscall.Errno = 1712\n\tRPC_S_ALREADY_LISTENING                                                   syscall.Errno = 1713\n\tRPC_S_NO_PROTSEQS_REGISTERED                                              syscall.Errno = 1714\n\tRPC_S_NOT_LISTENING                                                       syscall.Errno = 1715\n\tRPC_S_UNKNOWN_MGR_TYPE                                                    syscall.Errno = 1716\n\tRPC_S_UNKNOWN_IF                                                          syscall.Errno = 1717\n\tRPC_S_NO_BINDINGS                                                         syscall.Errno = 1718\n\tRPC_S_NO_PROTSEQS                                                         syscall.Errno = 1719\n\tRPC_S_CANT_CREATE_ENDPOINT                                                syscall.Errno = 1720\n\tRPC_S_OUT_OF_RESOURCES                                                    syscall.Errno = 1721\n\tRPC_S_SERVER_UNAVAILABLE                                                  syscall.Errno = 1722\n\tRPC_S_SERVER_TOO_BUSY                                                     syscall.Errno = 1723\n\tRPC_S_INVALID_NETWORK_OPTIONS                                             syscall.Errno = 1724\n\tRPC_S_NO_CALL_ACTIVE                                                      syscall.Errno = 1725\n\tRPC_S_CALL_FAILED                                                         syscall.Errno = 1726\n\tRPC_S_CALL_FAILED_DNE                                                     syscall.Errno = 1727\n\tRPC_S_PROTOCOL_ERROR                                                      syscall.Errno = 1728\n\tRPC_S_PROXY_ACCESS_DENIED                                                 syscall.Errno = 1729\n\tRPC_S_UNSUPPORTED_TRANS_SYN                                               syscall.Errno = 1730\n\tRPC_S_UNSUPPORTED_TYPE                                                    syscall.Errno = 1732\n\tRPC_S_INVALID_TAG                                                         syscall.Errno = 1733\n\tRPC_S_INVALID_BOUND                                                       syscall.Errno = 1734\n\tRPC_S_NO_ENTRY_NAME                                                       syscall.Errno = 1735\n\tRPC_S_INVALID_NAME_SYNTAX                                                 syscall.Errno = 1736\n\tRPC_S_UNSUPPORTED_NAME_SYNTAX                                             syscall.Errno = 1737\n\tRPC_S_UUID_NO_ADDRESS                                                     syscall.Errno = 1739\n\tRPC_S_DUPLICATE_ENDPOINT                                                  syscall.Errno = 1740\n\tRPC_S_UNKNOWN_AUTHN_TYPE                                                  syscall.Errno = 1741\n\tRPC_S_MAX_CALLS_TOO_SMALL                                                 syscall.Errno = 1742\n\tRPC_S_STRING_TOO_LONG                                                     syscall.Errno = 1743\n\tRPC_S_PROTSEQ_NOT_FOUND                                                   syscall.Errno = 1744\n\tRPC_S_PROCNUM_OUT_OF_RANGE                                                syscall.Errno = 1745\n\tRPC_S_BINDING_HAS_NO_AUTH                                                 syscall.Errno = 1746\n\tRPC_S_UNKNOWN_AUTHN_SERVICE                                               syscall.Errno = 1747\n\tRPC_S_UNKNOWN_AUTHN_LEVEL                                                 syscall.Errno = 1748\n\tRPC_S_INVALID_AUTH_IDENTITY                                               syscall.Errno = 1749\n\tRPC_S_UNKNOWN_AUTHZ_SERVICE                                               syscall.Errno = 1750\n\tEPT_S_INVALID_ENTRY                                                       syscall.Errno = 1751\n\tEPT_S_CANT_PERFORM_OP                                                     syscall.Errno = 1752\n\tEPT_S_NOT_REGISTERED                                                      syscall.Errno = 1753\n\tRPC_S_NOTHING_TO_EXPORT                                                   syscall.Errno = 1754\n\tRPC_S_INCOMPLETE_NAME                                                     syscall.Errno = 1755\n\tRPC_S_INVALID_VERS_OPTION                                                 syscall.Errno = 1756\n\tRPC_S_NO_MORE_MEMBERS                                                     syscall.Errno = 1757\n\tRPC_S_NOT_ALL_OBJS_UNEXPORTED                                             syscall.Errno = 1758\n\tRPC_S_INTERFACE_NOT_FOUND                                                 syscall.Errno = 1759\n\tRPC_S_ENTRY_ALREADY_EXISTS                                                syscall.Errno = 1760\n\tRPC_S_ENTRY_NOT_FOUND                                                     syscall.Errno = 1761\n\tRPC_S_NAME_SERVICE_UNAVAILABLE                                            syscall.Errno = 1762\n\tRPC_S_INVALID_NAF_ID                                                      syscall.Errno = 1763\n\tRPC_S_CANNOT_SUPPORT                                                      syscall.Errno = 1764\n\tRPC_S_NO_CONTEXT_AVAILABLE                                                syscall.Errno = 1765\n\tRPC_S_INTERNAL_ERROR                                                      syscall.Errno = 1766\n\tRPC_S_ZERO_DIVIDE                                                         syscall.Errno = 1767\n\tRPC_S_ADDRESS_ERROR                                                       syscall.Errno = 1768\n\tRPC_S_FP_DIV_ZERO                                                         syscall.Errno = 1769\n\tRPC_S_FP_UNDERFLOW                                                        syscall.Errno = 1770\n\tRPC_S_FP_OVERFLOW                                                         syscall.Errno = 1771\n\tRPC_X_NO_MORE_ENTRIES                                                     syscall.Errno = 1772\n\tRPC_X_SS_CHAR_TRANS_OPEN_FAIL                                             syscall.Errno = 1773\n\tRPC_X_SS_CHAR_TRANS_SHORT_FILE                                            syscall.Errno = 1774\n\tRPC_X_SS_IN_NULL_CONTEXT                                                  syscall.Errno = 1775\n\tRPC_X_SS_CONTEXT_DAMAGED                                                  syscall.Errno = 1777\n\tRPC_X_SS_HANDLES_MISMATCH                                                 syscall.Errno = 1778\n\tRPC_X_SS_CANNOT_GET_CALL_HANDLE                                           syscall.Errno = 1779\n\tRPC_X_NULL_REF_POINTER                                                    syscall.Errno = 1780\n\tRPC_X_ENUM_VALUE_OUT_OF_RANGE                                             syscall.Errno = 1781\n\tRPC_X_BYTE_COUNT_TOO_SMALL                                                syscall.Errno = 1782\n\tRPC_X_BAD_STUB_DATA                                                       syscall.Errno = 1783\n\tERROR_INVALID_USER_BUFFER                                                 syscall.Errno = 1784\n\tERROR_UNRECOGNIZED_MEDIA                                                  syscall.Errno = 1785\n\tERROR_NO_TRUST_LSA_SECRET                                                 syscall.Errno = 1786\n\tERROR_NO_TRUST_SAM_ACCOUNT                                                syscall.Errno = 1787\n\tERROR_TRUSTED_DOMAIN_FAILURE                                              syscall.Errno = 1788\n\tERROR_TRUSTED_RELATIONSHIP_FAILURE                                        syscall.Errno = 1789\n\tERROR_TRUST_FAILURE                                                       syscall.Errno = 1790\n\tRPC_S_CALL_IN_PROGRESS                                                    syscall.Errno = 1791\n\tERROR_NETLOGON_NOT_STARTED                                                syscall.Errno = 1792\n\tERROR_ACCOUNT_EXPIRED                                                     syscall.Errno = 1793\n\tERROR_REDIRECTOR_HAS_OPEN_HANDLES                                         syscall.Errno = 1794\n\tERROR_PRINTER_DRIVER_ALREADY_INSTALLED                                    syscall.Errno = 1795\n\tERROR_UNKNOWN_PORT                                                        syscall.Errno = 1796\n\tERROR_UNKNOWN_PRINTER_DRIVER                                              syscall.Errno = 1797\n\tERROR_UNKNOWN_PRINTPROCESSOR                                              syscall.Errno = 1798\n\tERROR_INVALID_SEPARATOR_FILE                                              syscall.Errno = 1799\n\tERROR_INVALID_PRIORITY                                                    syscall.Errno = 1800\n\tERROR_INVALID_PRINTER_NAME                                                syscall.Errno = 1801\n\tERROR_PRINTER_ALREADY_EXISTS                                              syscall.Errno = 1802\n\tERROR_INVALID_PRINTER_COMMAND                                             syscall.Errno = 1803\n\tERROR_INVALID_DATATYPE                                                    syscall.Errno = 1804\n\tERROR_INVALID_ENVIRONMENT                                                 syscall.Errno = 1805\n\tRPC_S_NO_MORE_BINDINGS                                                    syscall.Errno = 1806\n\tERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT                                   syscall.Errno = 1807\n\tERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT                                   syscall.Errno = 1808\n\tERROR_NOLOGON_SERVER_TRUST_ACCOUNT                                        syscall.Errno = 1809\n\tERROR_DOMAIN_TRUST_INCONSISTENT                                           syscall.Errno = 1810\n\tERROR_SERVER_HAS_OPEN_HANDLES                                             syscall.Errno = 1811\n\tERROR_RESOURCE_DATA_NOT_FOUND                                             syscall.Errno = 1812\n\tERROR_RESOURCE_TYPE_NOT_FOUND                                             syscall.Errno = 1813\n\tERROR_RESOURCE_NAME_NOT_FOUND                                             syscall.Errno = 1814\n\tERROR_RESOURCE_LANG_NOT_FOUND                                             syscall.Errno = 1815\n\tERROR_NOT_ENOUGH_QUOTA                                                    syscall.Errno = 1816\n\tRPC_S_NO_INTERFACES                                                       syscall.Errno = 1817\n\tRPC_S_CALL_CANCELLED                                                      syscall.Errno = 1818\n\tRPC_S_BINDING_INCOMPLETE                                                  syscall.Errno = 1819\n\tRPC_S_COMM_FAILURE                                                        syscall.Errno = 1820\n\tRPC_S_UNSUPPORTED_AUTHN_LEVEL                                             syscall.Errno = 1821\n\tRPC_S_NO_PRINC_NAME                                                       syscall.Errno = 1822\n\tRPC_S_NOT_RPC_ERROR                                                       syscall.Errno = 1823\n\tRPC_S_UUID_LOCAL_ONLY                                                     syscall.Errno = 1824\n\tRPC_S_SEC_PKG_ERROR                                                       syscall.Errno = 1825\n\tRPC_S_NOT_CANCELLED                                                       syscall.Errno = 1826\n\tRPC_X_INVALID_ES_ACTION                                                   syscall.Errno = 1827\n\tRPC_X_WRONG_ES_VERSION                                                    syscall.Errno = 1828\n\tRPC_X_WRONG_STUB_VERSION                                                  syscall.Errno = 1829\n\tRPC_X_INVALID_PIPE_OBJECT                                                 syscall.Errno = 1830\n\tRPC_X_WRONG_PIPE_ORDER                                                    syscall.Errno = 1831\n\tRPC_X_WRONG_PIPE_VERSION                                                  syscall.Errno = 1832\n\tRPC_S_COOKIE_AUTH_FAILED                                                  syscall.Errno = 1833\n\tRPC_S_DO_NOT_DISTURB                                                      syscall.Errno = 1834\n\tRPC_S_SYSTEM_HANDLE_COUNT_EXCEEDED                                        syscall.Errno = 1835\n\tRPC_S_SYSTEM_HANDLE_TYPE_MISMATCH                                         syscall.Errno = 1836\n\tRPC_S_GROUP_MEMBER_NOT_FOUND                                              syscall.Errno = 1898\n\tEPT_S_CANT_CREATE                                                         syscall.Errno = 1899\n\tRPC_S_INVALID_OBJECT                                                      syscall.Errno = 1900\n\tERROR_INVALID_TIME                                                        syscall.Errno = 1901\n\tERROR_INVALID_FORM_NAME                                                   syscall.Errno = 1902\n\tERROR_INVALID_FORM_SIZE                                                   syscall.Errno = 1903\n\tERROR_ALREADY_WAITING                                                     syscall.Errno = 1904\n\tERROR_PRINTER_DELETED                                                     syscall.Errno = 1905\n\tERROR_INVALID_PRINTER_STATE                                               syscall.Errno = 1906\n\tERROR_PASSWORD_MUST_CHANGE                                                syscall.Errno = 1907\n\tERROR_DOMAIN_CONTROLLER_NOT_FOUND                                         syscall.Errno = 1908\n\tERROR_ACCOUNT_LOCKED_OUT                                                  syscall.Errno = 1909\n\tOR_INVALID_OXID                                                           syscall.Errno = 1910\n\tOR_INVALID_OID                                                            syscall.Errno = 1911\n\tOR_INVALID_SET                                                            syscall.Errno = 1912\n\tRPC_S_SEND_INCOMPLETE                                                     syscall.Errno = 1913\n\tRPC_S_INVALID_ASYNC_HANDLE                                                syscall.Errno = 1914\n\tRPC_S_INVALID_ASYNC_CALL                                                  syscall.Errno = 1915\n\tRPC_X_PIPE_CLOSED                                                         syscall.Errno = 1916\n\tRPC_X_PIPE_DISCIPLINE_ERROR                                               syscall.Errno = 1917\n\tRPC_X_PIPE_EMPTY                                                          syscall.Errno = 1918\n\tERROR_NO_SITENAME                                                         syscall.Errno = 1919\n\tERROR_CANT_ACCESS_FILE                                                    syscall.Errno = 1920\n\tERROR_CANT_RESOLVE_FILENAME                                               syscall.Errno = 1921\n\tRPC_S_ENTRY_TYPE_MISMATCH                                                 syscall.Errno = 1922\n\tRPC_S_NOT_ALL_OBJS_EXPORTED                                               syscall.Errno = 1923\n\tRPC_S_INTERFACE_NOT_EXPORTED                                              syscall.Errno = 1924\n\tRPC_S_PROFILE_NOT_ADDED                                                   syscall.Errno = 1925\n\tRPC_S_PRF_ELT_NOT_ADDED                                                   syscall.Errno = 1926\n\tRPC_S_PRF_ELT_NOT_REMOVED                                                 syscall.Errno = 1927\n\tRPC_S_GRP_ELT_NOT_ADDED                                                   syscall.Errno = 1928\n\tRPC_S_GRP_ELT_NOT_REMOVED                                                 syscall.Errno = 1929\n\tERROR_KM_DRIVER_BLOCKED                                                   syscall.Errno = 1930\n\tERROR_CONTEXT_EXPIRED                                                     syscall.Errno = 1931\n\tERROR_PER_USER_TRUST_QUOTA_EXCEEDED                                       syscall.Errno = 1932\n\tERROR_ALL_USER_TRUST_QUOTA_EXCEEDED                                       syscall.Errno = 1933\n\tERROR_USER_DELETE_TRUST_QUOTA_EXCEEDED                                    syscall.Errno = 1934\n\tERROR_AUTHENTICATION_FIREWALL_FAILED                                      syscall.Errno = 1935\n\tERROR_REMOTE_PRINT_CONNECTIONS_BLOCKED                                    syscall.Errno = 1936\n\tERROR_NTLM_BLOCKED                                                        syscall.Errno = 1937\n\tERROR_PASSWORD_CHANGE_REQUIRED                                            syscall.Errno = 1938\n\tERROR_LOST_MODE_LOGON_RESTRICTION                                         syscall.Errno = 1939\n\tERROR_INVALID_PIXEL_FORMAT                                                syscall.Errno = 2000\n\tERROR_BAD_DRIVER                                                          syscall.Errno = 2001\n\tERROR_INVALID_WINDOW_STYLE                                                syscall.Errno = 2002\n\tERROR_METAFILE_NOT_SUPPORTED                                              syscall.Errno = 2003\n\tERROR_TRANSFORM_NOT_SUPPORTED                                             syscall.Errno = 2004\n\tERROR_CLIPPING_NOT_SUPPORTED                                              syscall.Errno = 2005\n\tERROR_INVALID_CMM                                                         syscall.Errno = 2010\n\tERROR_INVALID_PROFILE                                                     syscall.Errno = 2011\n\tERROR_TAG_NOT_FOUND                                                       syscall.Errno = 2012\n\tERROR_TAG_NOT_PRESENT                                                     syscall.Errno = 2013\n\tERROR_DUPLICATE_TAG                                                       syscall.Errno = 2014\n\tERROR_PROFILE_NOT_ASSOCIATED_WITH_DEVICE                                  syscall.Errno = 2015\n\tERROR_PROFILE_NOT_FOUND                                                   syscall.Errno = 2016\n\tERROR_INVALID_COLORSPACE                                                  syscall.Errno = 2017\n\tERROR_ICM_NOT_ENABLED                                                     syscall.Errno = 2018\n\tERROR_DELETING_ICM_XFORM                                                  syscall.Errno = 2019\n\tERROR_INVALID_TRANSFORM                                                   syscall.Errno = 2020\n\tERROR_COLORSPACE_MISMATCH                                                 syscall.Errno = 2021\n\tERROR_INVALID_COLORINDEX                                                  syscall.Errno = 2022\n\tERROR_PROFILE_DOES_NOT_MATCH_DEVICE                                       syscall.Errno = 2023\n\tERROR_CONNECTED_OTHER_PASSWORD                                            syscall.Errno = 2108\n\tERROR_CONNECTED_OTHER_PASSWORD_DEFAULT                                    syscall.Errno = 2109\n\tERROR_BAD_USERNAME                                                        syscall.Errno = 2202\n\tERROR_NOT_CONNECTED                                                       syscall.Errno = 2250\n\tERROR_OPEN_FILES                                                          syscall.Errno = 2401\n\tERROR_ACTIVE_CONNECTIONS                                                  syscall.Errno = 2402\n\tERROR_DEVICE_IN_USE                                                       syscall.Errno = 2404\n\tERROR_UNKNOWN_PRINT_MONITOR                                               syscall.Errno = 3000\n\tERROR_PRINTER_DRIVER_IN_USE                                               syscall.Errno = 3001\n\tERROR_SPOOL_FILE_NOT_FOUND                                                syscall.Errno = 3002\n\tERROR_SPL_NO_STARTDOC                                                     syscall.Errno = 3003\n\tERROR_SPL_NO_ADDJOB                                                       syscall.Errno = 3004\n\tERROR_PRINT_PROCESSOR_ALREADY_INSTALLED                                   syscall.Errno = 3005\n\tERROR_PRINT_MONITOR_ALREADY_INSTALLED                                     syscall.Errno = 3006\n\tERROR_INVALID_PRINT_MONITOR                                               syscall.Errno = 3007\n\tERROR_PRINT_MONITOR_IN_USE                                                syscall.Errno = 3008\n\tERROR_PRINTER_HAS_JOBS_QUEUED                                             syscall.Errno = 3009\n\tERROR_SUCCESS_REBOOT_REQUIRED                                             syscall.Errno = 3010\n\tERROR_SUCCESS_RESTART_REQUIRED                                            syscall.Errno = 3011\n\tERROR_PRINTER_NOT_FOUND                                                   syscall.Errno = 3012\n\tERROR_PRINTER_DRIVER_WARNED                                               syscall.Errno = 3013\n\tERROR_PRINTER_DRIVER_BLOCKED                                              syscall.Errno = 3014\n\tERROR_PRINTER_DRIVER_PACKAGE_IN_USE                                       syscall.Errno = 3015\n\tERROR_CORE_DRIVER_PACKAGE_NOT_FOUND                                       syscall.Errno = 3016\n\tERROR_FAIL_REBOOT_REQUIRED                                                syscall.Errno = 3017\n\tERROR_FAIL_REBOOT_INITIATED                                               syscall.Errno = 3018\n\tERROR_PRINTER_DRIVER_DOWNLOAD_NEEDED                                      syscall.Errno = 3019\n\tERROR_PRINT_JOB_RESTART_REQUIRED                                          syscall.Errno = 3020\n\tERROR_INVALID_PRINTER_DRIVER_MANIFEST                                     syscall.Errno = 3021\n\tERROR_PRINTER_NOT_SHAREABLE                                               syscall.Errno = 3022\n\tERROR_REQUEST_PAUSED                                                      syscall.Errno = 3050\n\tERROR_APPEXEC_CONDITION_NOT_SATISFIED                                     syscall.Errno = 3060\n\tERROR_APPEXEC_HANDLE_INVALIDATED                                          syscall.Errno = 3061\n\tERROR_APPEXEC_INVALID_HOST_GENERATION                                     syscall.Errno = 3062\n\tERROR_APPEXEC_UNEXPECTED_PROCESS_REGISTRATION                             syscall.Errno = 3063\n\tERROR_APPEXEC_INVALID_HOST_STATE                                          syscall.Errno = 3064\n\tERROR_APPEXEC_NO_DONOR                                                    syscall.Errno = 3065\n\tERROR_APPEXEC_HOST_ID_MISMATCH                                            syscall.Errno = 3066\n\tERROR_APPEXEC_UNKNOWN_USER                                                syscall.Errno = 3067\n\tERROR_IO_REISSUE_AS_CACHED                                                syscall.Errno = 3950\n\tERROR_WINS_INTERNAL                                                       syscall.Errno = 4000\n\tERROR_CAN_NOT_DEL_LOCAL_WINS                                              syscall.Errno = 4001\n\tERROR_STATIC_INIT                                                         syscall.Errno = 4002\n\tERROR_INC_BACKUP                                                          syscall.Errno = 4003\n\tERROR_FULL_BACKUP                                                         syscall.Errno = 4004\n\tERROR_REC_NON_EXISTENT                                                    syscall.Errno = 4005\n\tERROR_RPL_NOT_ALLOWED                                                     syscall.Errno = 4006\n\tPEERDIST_ERROR_CONTENTINFO_VERSION_UNSUPPORTED                            syscall.Errno = 4050\n\tPEERDIST_ERROR_CANNOT_PARSE_CONTENTINFO                                   syscall.Errno = 4051\n\tPEERDIST_ERROR_MISSING_DATA                                               syscall.Errno = 4052\n\tPEERDIST_ERROR_NO_MORE                                                    syscall.Errno = 4053\n\tPEERDIST_ERROR_NOT_INITIALIZED                                            syscall.Errno = 4054\n\tPEERDIST_ERROR_ALREADY_INITIALIZED                                        syscall.Errno = 4055\n\tPEERDIST_ERROR_SHUTDOWN_IN_PROGRESS                                       syscall.Errno = 4056\n\tPEERDIST_ERROR_INVALIDATED                                                syscall.Errno = 4057\n\tPEERDIST_ERROR_ALREADY_EXISTS                                             syscall.Errno = 4058\n\tPEERDIST_ERROR_OPERATION_NOTFOUND                                         syscall.Errno = 4059\n\tPEERDIST_ERROR_ALREADY_COMPLETED                                          syscall.Errno = 4060\n\tPEERDIST_ERROR_OUT_OF_BOUNDS                                              syscall.Errno = 4061\n\tPEERDIST_ERROR_VERSION_UNSUPPORTED                                        syscall.Errno = 4062\n\tPEERDIST_ERROR_INVALID_CONFIGURATION                                      syscall.Errno = 4063\n\tPEERDIST_ERROR_NOT_LICENSED                                               syscall.Errno = 4064\n\tPEERDIST_ERROR_SERVICE_UNAVAILABLE                                        syscall.Errno = 4065\n\tPEERDIST_ERROR_TRUST_FAILURE                                              syscall.Errno = 4066\n\tERROR_DHCP_ADDRESS_CONFLICT                                               syscall.Errno = 4100\n\tERROR_WMI_GUID_NOT_FOUND                                                  syscall.Errno = 4200\n\tERROR_WMI_INSTANCE_NOT_FOUND                                              syscall.Errno = 4201\n\tERROR_WMI_ITEMID_NOT_FOUND                                                syscall.Errno = 4202\n\tERROR_WMI_TRY_AGAIN                                                       syscall.Errno = 4203\n\tERROR_WMI_DP_NOT_FOUND                                                    syscall.Errno = 4204\n\tERROR_WMI_UNRESOLVED_INSTANCE_REF                                         syscall.Errno = 4205\n\tERROR_WMI_ALREADY_ENABLED                                                 syscall.Errno = 4206\n\tERROR_WMI_GUID_DISCONNECTED                                               syscall.Errno = 4207\n\tERROR_WMI_SERVER_UNAVAILABLE                                              syscall.Errno = 4208\n\tERROR_WMI_DP_FAILED                                                       syscall.Errno = 4209\n\tERROR_WMI_INVALID_MOF                                                     syscall.Errno = 4210\n\tERROR_WMI_INVALID_REGINFO                                                 syscall.Errno = 4211\n\tERROR_WMI_ALREADY_DISABLED                                                syscall.Errno = 4212\n\tERROR_WMI_READ_ONLY                                                       syscall.Errno = 4213\n\tERROR_WMI_SET_FAILURE                                                     syscall.Errno = 4214\n\tERROR_NOT_APPCONTAINER                                                    syscall.Errno = 4250\n\tERROR_APPCONTAINER_REQUIRED                                               syscall.Errno = 4251\n\tERROR_NOT_SUPPORTED_IN_APPCONTAINER                                       syscall.Errno = 4252\n\tERROR_INVALID_PACKAGE_SID_LENGTH                                          syscall.Errno = 4253\n\tERROR_INVALID_MEDIA                                                       syscall.Errno = 4300\n\tERROR_INVALID_LIBRARY                                                     syscall.Errno = 4301\n\tERROR_INVALID_MEDIA_POOL                                                  syscall.Errno = 4302\n\tERROR_DRIVE_MEDIA_MISMATCH                                                syscall.Errno = 4303\n\tERROR_MEDIA_OFFLINE                                                       syscall.Errno = 4304\n\tERROR_LIBRARY_OFFLINE                                                     syscall.Errno = 4305\n\tERROR_EMPTY                                                               syscall.Errno = 4306\n\tERROR_NOT_EMPTY                                                           syscall.Errno = 4307\n\tERROR_MEDIA_UNAVAILABLE                                                   syscall.Errno = 4308\n\tERROR_RESOURCE_DISABLED                                                   syscall.Errno = 4309\n\tERROR_INVALID_CLEANER                                                     syscall.Errno = 4310\n\tERROR_UNABLE_TO_CLEAN                                                     syscall.Errno = 4311\n\tERROR_OBJECT_NOT_FOUND                                                    syscall.Errno = 4312\n\tERROR_DATABASE_FAILURE                                                    syscall.Errno = 4313\n\tERROR_DATABASE_FULL                                                       syscall.Errno = 4314\n\tERROR_MEDIA_INCOMPATIBLE                                                  syscall.Errno = 4315\n\tERROR_RESOURCE_NOT_PRESENT                                                syscall.Errno = 4316\n\tERROR_INVALID_OPERATION                                                   syscall.Errno = 4317\n\tERROR_MEDIA_NOT_AVAILABLE                                                 syscall.Errno = 4318\n\tERROR_DEVICE_NOT_AVAILABLE                                                syscall.Errno = 4319\n\tERROR_REQUEST_REFUSED                                                     syscall.Errno = 4320\n\tERROR_INVALID_DRIVE_OBJECT                                                syscall.Errno = 4321\n\tERROR_LIBRARY_FULL                                                        syscall.Errno = 4322\n\tERROR_MEDIUM_NOT_ACCESSIBLE                                               syscall.Errno = 4323\n\tERROR_UNABLE_TO_LOAD_MEDIUM                                               syscall.Errno = 4324\n\tERROR_UNABLE_TO_INVENTORY_DRIVE                                           syscall.Errno = 4325\n\tERROR_UNABLE_TO_INVENTORY_SLOT                                            syscall.Errno = 4326\n\tERROR_UNABLE_TO_INVENTORY_TRANSPORT                                       syscall.Errno = 4327\n\tERROR_TRANSPORT_FULL                                                      syscall.Errno = 4328\n\tERROR_CONTROLLING_IEPORT                                                  syscall.Errno = 4329\n\tERROR_UNABLE_TO_EJECT_MOUNTED_MEDIA                                       syscall.Errno = 4330\n\tERROR_CLEANER_SLOT_SET                                                    syscall.Errno = 4331\n\tERROR_CLEANER_SLOT_NOT_SET                                                syscall.Errno = 4332\n\tERROR_CLEANER_CARTRIDGE_SPENT                                             syscall.Errno = 4333\n\tERROR_UNEXPECTED_OMID                                                     syscall.Errno = 4334\n\tERROR_CANT_DELETE_LAST_ITEM                                               syscall.Errno = 4335\n\tERROR_MESSAGE_EXCEEDS_MAX_SIZE                                            syscall.Errno = 4336\n\tERROR_VOLUME_CONTAINS_SYS_FILES                                           syscall.Errno = 4337\n\tERROR_INDIGENOUS_TYPE                                                     syscall.Errno = 4338\n\tERROR_NO_SUPPORTING_DRIVES                                                syscall.Errno = 4339\n\tERROR_CLEANER_CARTRIDGE_INSTALLED                                         syscall.Errno = 4340\n\tERROR_IEPORT_FULL                                                         syscall.Errno = 4341\n\tERROR_FILE_OFFLINE                                                        syscall.Errno = 4350\n\tERROR_REMOTE_STORAGE_NOT_ACTIVE                                           syscall.Errno = 4351\n\tERROR_REMOTE_STORAGE_MEDIA_ERROR                                          syscall.Errno = 4352\n\tERROR_NOT_A_REPARSE_POINT                                                 syscall.Errno = 4390\n\tERROR_REPARSE_ATTRIBUTE_CONFLICT                                          syscall.Errno = 4391\n\tERROR_INVALID_REPARSE_DATA                                                syscall.Errno = 4392\n\tERROR_REPARSE_TAG_INVALID                                                 syscall.Errno = 4393\n\tERROR_REPARSE_TAG_MISMATCH                                                syscall.Errno = 4394\n\tERROR_REPARSE_POINT_ENCOUNTERED                                           syscall.Errno = 4395\n\tERROR_APP_DATA_NOT_FOUND                                                  syscall.Errno = 4400\n\tERROR_APP_DATA_EXPIRED                                                    syscall.Errno = 4401\n\tERROR_APP_DATA_CORRUPT                                                    syscall.Errno = 4402\n\tERROR_APP_DATA_LIMIT_EXCEEDED                                             syscall.Errno = 4403\n\tERROR_APP_DATA_REBOOT_REQUIRED                                            syscall.Errno = 4404\n\tERROR_SECUREBOOT_ROLLBACK_DETECTED                                        syscall.Errno = 4420\n\tERROR_SECUREBOOT_POLICY_VIOLATION                                         syscall.Errno = 4421\n\tERROR_SECUREBOOT_INVALID_POLICY                                           syscall.Errno = 4422\n\tERROR_SECUREBOOT_POLICY_PUBLISHER_NOT_FOUND                               syscall.Errno = 4423\n\tERROR_SECUREBOOT_POLICY_NOT_SIGNED                                        syscall.Errno = 4424\n\tERROR_SECUREBOOT_NOT_ENABLED                                              syscall.Errno = 4425\n\tERROR_SECUREBOOT_FILE_REPLACED                                            syscall.Errno = 4426\n\tERROR_SECUREBOOT_POLICY_NOT_AUTHORIZED                                    syscall.Errno = 4427\n\tERROR_SECUREBOOT_POLICY_UNKNOWN                                           syscall.Errno = 4428\n\tERROR_SECUREBOOT_POLICY_MISSING_ANTIROLLBACKVERSION                       syscall.Errno = 4429\n\tERROR_SECUREBOOT_PLATFORM_ID_MISMATCH                                     syscall.Errno = 4430\n\tERROR_SECUREBOOT_POLICY_ROLLBACK_DETECTED                                 syscall.Errno = 4431\n\tERROR_SECUREBOOT_POLICY_UPGRADE_MISMATCH                                  syscall.Errno = 4432\n\tERROR_SECUREBOOT_REQUIRED_POLICY_FILE_MISSING                             syscall.Errno = 4433\n\tERROR_SECUREBOOT_NOT_BASE_POLICY                                          syscall.Errno = 4434\n\tERROR_SECUREBOOT_NOT_SUPPLEMENTAL_POLICY                                  syscall.Errno = 4435\n\tERROR_OFFLOAD_READ_FLT_NOT_SUPPORTED                                      syscall.Errno = 4440\n\tERROR_OFFLOAD_WRITE_FLT_NOT_SUPPORTED                                     syscall.Errno = 4441\n\tERROR_OFFLOAD_READ_FILE_NOT_SUPPORTED                                     syscall.Errno = 4442\n\tERROR_OFFLOAD_WRITE_FILE_NOT_SUPPORTED                                    syscall.Errno = 4443\n\tERROR_ALREADY_HAS_STREAM_ID                                               syscall.Errno = 4444\n\tERROR_SMR_GARBAGE_COLLECTION_REQUIRED                                     syscall.Errno = 4445\n\tERROR_WOF_WIM_HEADER_CORRUPT                                              syscall.Errno = 4446\n\tERROR_WOF_WIM_RESOURCE_TABLE_CORRUPT                                      syscall.Errno = 4447\n\tERROR_WOF_FILE_RESOURCE_TABLE_CORRUPT                                     syscall.Errno = 4448\n\tERROR_VOLUME_NOT_SIS_ENABLED                                              syscall.Errno = 4500\n\tERROR_SYSTEM_INTEGRITY_ROLLBACK_DETECTED                                  syscall.Errno = 4550\n\tERROR_SYSTEM_INTEGRITY_POLICY_VIOLATION                                   syscall.Errno = 4551\n\tERROR_SYSTEM_INTEGRITY_INVALID_POLICY                                     syscall.Errno = 4552\n\tERROR_SYSTEM_INTEGRITY_POLICY_NOT_SIGNED                                  syscall.Errno = 4553\n\tERROR_SYSTEM_INTEGRITY_TOO_MANY_POLICIES                                  syscall.Errno = 4554\n\tERROR_SYSTEM_INTEGRITY_SUPPLEMENTAL_POLICY_NOT_AUTHORIZED                 syscall.Errno = 4555\n\tERROR_VSM_NOT_INITIALIZED                                                 syscall.Errno = 4560\n\tERROR_VSM_DMA_PROTECTION_NOT_IN_USE                                       syscall.Errno = 4561\n\tERROR_PLATFORM_MANIFEST_NOT_AUTHORIZED                                    syscall.Errno = 4570\n\tERROR_PLATFORM_MANIFEST_INVALID                                           syscall.Errno = 4571\n\tERROR_PLATFORM_MANIFEST_FILE_NOT_AUTHORIZED                               syscall.Errno = 4572\n\tERROR_PLATFORM_MANIFEST_CATALOG_NOT_AUTHORIZED                            syscall.Errno = 4573\n\tERROR_PLATFORM_MANIFEST_BINARY_ID_NOT_FOUND                               syscall.Errno = 4574\n\tERROR_PLATFORM_MANIFEST_NOT_ACTIVE                                        syscall.Errno = 4575\n\tERROR_PLATFORM_MANIFEST_NOT_SIGNED                                        syscall.Errno = 4576\n\tERROR_DEPENDENT_RESOURCE_EXISTS                                           syscall.Errno = 5001\n\tERROR_DEPENDENCY_NOT_FOUND                                                syscall.Errno = 5002\n\tERROR_DEPENDENCY_ALREADY_EXISTS                                           syscall.Errno = 5003\n\tERROR_RESOURCE_NOT_ONLINE                                                 syscall.Errno = 5004\n\tERROR_HOST_NODE_NOT_AVAILABLE                                             syscall.Errno = 5005\n\tERROR_RESOURCE_NOT_AVAILABLE                                              syscall.Errno = 5006\n\tERROR_RESOURCE_NOT_FOUND                                                  syscall.Errno = 5007\n\tERROR_SHUTDOWN_CLUSTER                                                    syscall.Errno = 5008\n\tERROR_CANT_EVICT_ACTIVE_NODE                                              syscall.Errno = 5009\n\tERROR_OBJECT_ALREADY_EXISTS                                               syscall.Errno = 5010\n\tERROR_OBJECT_IN_LIST                                                      syscall.Errno = 5011\n\tERROR_GROUP_NOT_AVAILABLE                                                 syscall.Errno = 5012\n\tERROR_GROUP_NOT_FOUND                                                     syscall.Errno = 5013\n\tERROR_GROUP_NOT_ONLINE                                                    syscall.Errno = 5014\n\tERROR_HOST_NODE_NOT_RESOURCE_OWNER                                        syscall.Errno = 5015\n\tERROR_HOST_NODE_NOT_GROUP_OWNER                                           syscall.Errno = 5016\n\tERROR_RESMON_CREATE_FAILED                                                syscall.Errno = 5017\n\tERROR_RESMON_ONLINE_FAILED                                                syscall.Errno = 5018\n\tERROR_RESOURCE_ONLINE                                                     syscall.Errno = 5019\n\tERROR_QUORUM_RESOURCE                                                     syscall.Errno = 5020\n\tERROR_NOT_QUORUM_CAPABLE                                                  syscall.Errno = 5021\n\tERROR_CLUSTER_SHUTTING_DOWN                                               syscall.Errno = 5022\n\tERROR_INVALID_STATE                                                       syscall.Errno = 5023\n\tERROR_RESOURCE_PROPERTIES_STORED                                          syscall.Errno = 5024\n\tERROR_NOT_QUORUM_CLASS                                                    syscall.Errno = 5025\n\tERROR_CORE_RESOURCE                                                       syscall.Errno = 5026\n\tERROR_QUORUM_RESOURCE_ONLINE_FAILED                                       syscall.Errno = 5027\n\tERROR_QUORUMLOG_OPEN_FAILED                                               syscall.Errno = 5028\n\tERROR_CLUSTERLOG_CORRUPT                                                  syscall.Errno = 5029\n\tERROR_CLUSTERLOG_RECORD_EXCEEDS_MAXSIZE                                   syscall.Errno = 5030\n\tERROR_CLUSTERLOG_EXCEEDS_MAXSIZE                                          syscall.Errno = 5031\n\tERROR_CLUSTERLOG_CHKPOINT_NOT_FOUND                                       syscall.Errno = 5032\n\tERROR_CLUSTERLOG_NOT_ENOUGH_SPACE                                         syscall.Errno = 5033\n\tERROR_QUORUM_OWNER_ALIVE                                                  syscall.Errno = 5034\n\tERROR_NETWORK_NOT_AVAILABLE                                               syscall.Errno = 5035\n\tERROR_NODE_NOT_AVAILABLE                                                  syscall.Errno = 5036\n\tERROR_ALL_NODES_NOT_AVAILABLE                                             syscall.Errno = 5037\n\tERROR_RESOURCE_FAILED                                                     syscall.Errno = 5038\n\tERROR_CLUSTER_INVALID_NODE                                                syscall.Errno = 5039\n\tERROR_CLUSTER_NODE_EXISTS                                                 syscall.Errno = 5040\n\tERROR_CLUSTER_JOIN_IN_PROGRESS                                            syscall.Errno = 5041\n\tERROR_CLUSTER_NODE_NOT_FOUND                                              syscall.Errno = 5042\n\tERROR_CLUSTER_LOCAL_NODE_NOT_FOUND                                        syscall.Errno = 5043\n\tERROR_CLUSTER_NETWORK_EXISTS                                              syscall.Errno = 5044\n\tERROR_CLUSTER_NETWORK_NOT_FOUND                                           syscall.Errno = 5045\n\tERROR_CLUSTER_NETINTERFACE_EXISTS                                         syscall.Errno = 5046\n\tERROR_CLUSTER_NETINTERFACE_NOT_FOUND                                      syscall.Errno = 5047\n\tERROR_CLUSTER_INVALID_REQUEST                                             syscall.Errno = 5048\n\tERROR_CLUSTER_INVALID_NETWORK_PROVIDER                                    syscall.Errno = 5049\n\tERROR_CLUSTER_NODE_DOWN                                                   syscall.Errno = 5050\n\tERROR_CLUSTER_NODE_UNREACHABLE                                            syscall.Errno = 5051\n\tERROR_CLUSTER_NODE_NOT_MEMBER                                             syscall.Errno = 5052\n\tERROR_CLUSTER_JOIN_NOT_IN_PROGRESS                                        syscall.Errno = 5053\n\tERROR_CLUSTER_INVALID_NETWORK                                             syscall.Errno = 5054\n\tERROR_CLUSTER_NODE_UP                                                     syscall.Errno = 5056\n\tERROR_CLUSTER_IPADDR_IN_USE                                               syscall.Errno = 5057\n\tERROR_CLUSTER_NODE_NOT_PAUSED                                             syscall.Errno = 5058\n\tERROR_CLUSTER_NO_SECURITY_CONTEXT                                         syscall.Errno = 5059\n\tERROR_CLUSTER_NETWORK_NOT_INTERNAL                                        syscall.Errno = 5060\n\tERROR_CLUSTER_NODE_ALREADY_UP                                             syscall.Errno = 5061\n\tERROR_CLUSTER_NODE_ALREADY_DOWN                                           syscall.Errno = 5062\n\tERROR_CLUSTER_NETWORK_ALREADY_ONLINE                                      syscall.Errno = 5063\n\tERROR_CLUSTER_NETWORK_ALREADY_OFFLINE                                     syscall.Errno = 5064\n\tERROR_CLUSTER_NODE_ALREADY_MEMBER                                         syscall.Errno = 5065\n\tERROR_CLUSTER_LAST_INTERNAL_NETWORK                                       syscall.Errno = 5066\n\tERROR_CLUSTER_NETWORK_HAS_DEPENDENTS                                      syscall.Errno = 5067\n\tERROR_INVALID_OPERATION_ON_QUORUM                                         syscall.Errno = 5068\n\tERROR_DEPENDENCY_NOT_ALLOWED                                              syscall.Errno = 5069\n\tERROR_CLUSTER_NODE_PAUSED                                                 syscall.Errno = 5070\n\tERROR_NODE_CANT_HOST_RESOURCE                                             syscall.Errno = 5071\n\tERROR_CLUSTER_NODE_NOT_READY                                              syscall.Errno = 5072\n\tERROR_CLUSTER_NODE_SHUTTING_DOWN                                          syscall.Errno = 5073\n\tERROR_CLUSTER_JOIN_ABORTED                                                syscall.Errno = 5074\n\tERROR_CLUSTER_INCOMPATIBLE_VERSIONS                                       syscall.Errno = 5075\n\tERROR_CLUSTER_MAXNUM_OF_RESOURCES_EXCEEDED                                syscall.Errno = 5076\n\tERROR_CLUSTER_SYSTEM_CONFIG_CHANGED                                       syscall.Errno = 5077\n\tERROR_CLUSTER_RESOURCE_TYPE_NOT_FOUND                                     syscall.Errno = 5078\n\tERROR_CLUSTER_RESTYPE_NOT_SUPPORTED                                       syscall.Errno = 5079\n\tERROR_CLUSTER_RESNAME_NOT_FOUND                                           syscall.Errno = 5080\n\tERROR_CLUSTER_NO_RPC_PACKAGES_REGISTERED                                  syscall.Errno = 5081\n\tERROR_CLUSTER_OWNER_NOT_IN_PREFLIST                                       syscall.Errno = 5082\n\tERROR_CLUSTER_DATABASE_SEQMISMATCH                                        syscall.Errno = 5083\n\tERROR_RESMON_INVALID_STATE                                                syscall.Errno = 5084\n\tERROR_CLUSTER_GUM_NOT_LOCKER                                              syscall.Errno = 5085\n\tERROR_QUORUM_DISK_NOT_FOUND                                               syscall.Errno = 5086\n\tERROR_DATABASE_BACKUP_CORRUPT                                             syscall.Errno = 5087\n\tERROR_CLUSTER_NODE_ALREADY_HAS_DFS_ROOT                                   syscall.Errno = 5088\n\tERROR_RESOURCE_PROPERTY_UNCHANGEABLE                                      syscall.Errno = 5089\n\tERROR_NO_ADMIN_ACCESS_POINT                                               syscall.Errno = 5090\n\tERROR_CLUSTER_MEMBERSHIP_INVALID_STATE                                    syscall.Errno = 5890\n\tERROR_CLUSTER_QUORUMLOG_NOT_FOUND                                         syscall.Errno = 5891\n\tERROR_CLUSTER_MEMBERSHIP_HALT                                             syscall.Errno = 5892\n\tERROR_CLUSTER_INSTANCE_ID_MISMATCH                                        syscall.Errno = 5893\n\tERROR_CLUSTER_NETWORK_NOT_FOUND_FOR_IP                                    syscall.Errno = 5894\n\tERROR_CLUSTER_PROPERTY_DATA_TYPE_MISMATCH                                 syscall.Errno = 5895\n\tERROR_CLUSTER_EVICT_WITHOUT_CLEANUP                                       syscall.Errno = 5896\n\tERROR_CLUSTER_PARAMETER_MISMATCH                                          syscall.Errno = 5897\n\tERROR_NODE_CANNOT_BE_CLUSTERED                                            syscall.Errno = 5898\n\tERROR_CLUSTER_WRONG_OS_VERSION                                            syscall.Errno = 5899\n\tERROR_CLUSTER_CANT_CREATE_DUP_CLUSTER_NAME                                syscall.Errno = 5900\n\tERROR_CLUSCFG_ALREADY_COMMITTED                                           syscall.Errno = 5901\n\tERROR_CLUSCFG_ROLLBACK_FAILED                                             syscall.Errno = 5902\n\tERROR_CLUSCFG_SYSTEM_DISK_DRIVE_LETTER_CONFLICT                           syscall.Errno = 5903\n\tERROR_CLUSTER_OLD_VERSION                                                 syscall.Errno = 5904\n\tERROR_CLUSTER_MISMATCHED_COMPUTER_ACCT_NAME                               syscall.Errno = 5905\n\tERROR_CLUSTER_NO_NET_ADAPTERS                                             syscall.Errno = 5906\n\tERROR_CLUSTER_POISONED                                                    syscall.Errno = 5907\n\tERROR_CLUSTER_GROUP_MOVING                                                syscall.Errno = 5908\n\tERROR_CLUSTER_RESOURCE_TYPE_BUSY                                          syscall.Errno = 5909\n\tERROR_RESOURCE_CALL_TIMED_OUT                                             syscall.Errno = 5910\n\tERROR_INVALID_CLUSTER_IPV6_ADDRESS                                        syscall.Errno = 5911\n\tERROR_CLUSTER_INTERNAL_INVALID_FUNCTION                                   syscall.Errno = 5912\n\tERROR_CLUSTER_PARAMETER_OUT_OF_BOUNDS                                     syscall.Errno = 5913\n\tERROR_CLUSTER_PARTIAL_SEND                                                syscall.Errno = 5914\n\tERROR_CLUSTER_REGISTRY_INVALID_FUNCTION                                   syscall.Errno = 5915\n\tERROR_CLUSTER_INVALID_STRING_TERMINATION                                  syscall.Errno = 5916\n\tERROR_CLUSTER_INVALID_STRING_FORMAT                                       syscall.Errno = 5917\n\tERROR_CLUSTER_DATABASE_TRANSACTION_IN_PROGRESS                            syscall.Errno = 5918\n\tERROR_CLUSTER_DATABASE_TRANSACTION_NOT_IN_PROGRESS                        syscall.Errno = 5919\n\tERROR_CLUSTER_NULL_DATA                                                   syscall.Errno = 5920\n\tERROR_CLUSTER_PARTIAL_READ                                                syscall.Errno = 5921\n\tERROR_CLUSTER_PARTIAL_WRITE                                               syscall.Errno = 5922\n\tERROR_CLUSTER_CANT_DESERIALIZE_DATA                                       syscall.Errno = 5923\n\tERROR_DEPENDENT_RESOURCE_PROPERTY_CONFLICT                                syscall.Errno = 5924\n\tERROR_CLUSTER_NO_QUORUM                                                   syscall.Errno = 5925\n\tERROR_CLUSTER_INVALID_IPV6_NETWORK                                        syscall.Errno = 5926\n\tERROR_CLUSTER_INVALID_IPV6_TUNNEL_NETWORK                                 syscall.Errno = 5927\n\tERROR_QUORUM_NOT_ALLOWED_IN_THIS_GROUP                                    syscall.Errno = 5928\n\tERROR_DEPENDENCY_TREE_TOO_COMPLEX                                         syscall.Errno = 5929\n\tERROR_EXCEPTION_IN_RESOURCE_CALL                                          syscall.Errno = 5930\n\tERROR_CLUSTER_RHS_FAILED_INITIALIZATION                                   syscall.Errno = 5931\n\tERROR_CLUSTER_NOT_INSTALLED                                               syscall.Errno = 5932\n\tERROR_CLUSTER_RESOURCES_MUST_BE_ONLINE_ON_THE_SAME_NODE                   syscall.Errno = 5933\n\tERROR_CLUSTER_MAX_NODES_IN_CLUSTER                                        syscall.Errno = 5934\n\tERROR_CLUSTER_TOO_MANY_NODES                                              syscall.Errno = 5935\n\tERROR_CLUSTER_OBJECT_ALREADY_USED                                         syscall.Errno = 5936\n\tERROR_NONCORE_GROUPS_FOUND                                                syscall.Errno = 5937\n\tERROR_FILE_SHARE_RESOURCE_CONFLICT                                        syscall.Errno = 5938\n\tERROR_CLUSTER_EVICT_INVALID_REQUEST                                       syscall.Errno = 5939\n\tERROR_CLUSTER_SINGLETON_RESOURCE                                          syscall.Errno = 5940\n\tERROR_CLUSTER_GROUP_SINGLETON_RESOURCE                                    syscall.Errno = 5941\n\tERROR_CLUSTER_RESOURCE_PROVIDER_FAILED                                    syscall.Errno = 5942\n\tERROR_CLUSTER_RESOURCE_CONFIGURATION_ERROR                                syscall.Errno = 5943\n\tERROR_CLUSTER_GROUP_BUSY                                                  syscall.Errno = 5944\n\tERROR_CLUSTER_NOT_SHARED_VOLUME                                           syscall.Errno = 5945\n\tERROR_CLUSTER_INVALID_SECURITY_DESCRIPTOR                                 syscall.Errno = 5946\n\tERROR_CLUSTER_SHARED_VOLUMES_IN_USE                                       syscall.Errno = 5947\n\tERROR_CLUSTER_USE_SHARED_VOLUMES_API                                      syscall.Errno = 5948\n\tERROR_CLUSTER_BACKUP_IN_PROGRESS                                          syscall.Errno = 5949\n\tERROR_NON_CSV_PATH                                                        syscall.Errno = 5950\n\tERROR_CSV_VOLUME_NOT_LOCAL                                                syscall.Errno = 5951\n\tERROR_CLUSTER_WATCHDOG_TERMINATING                                        syscall.Errno = 5952\n\tERROR_CLUSTER_RESOURCE_VETOED_MOVE_INCOMPATIBLE_NODES                     syscall.Errno = 5953\n\tERROR_CLUSTER_INVALID_NODE_WEIGHT                                         syscall.Errno = 5954\n\tERROR_CLUSTER_RESOURCE_VETOED_CALL                                        syscall.Errno = 5955\n\tERROR_RESMON_SYSTEM_RESOURCES_LACKING                                     syscall.Errno = 5956\n\tERROR_CLUSTER_RESOURCE_VETOED_MOVE_NOT_ENOUGH_RESOURCES_ON_DESTINATION    syscall.Errno = 5957\n\tERROR_CLUSTER_RESOURCE_VETOED_MOVE_NOT_ENOUGH_RESOURCES_ON_SOURCE         syscall.Errno = 5958\n\tERROR_CLUSTER_GROUP_QUEUED                                                syscall.Errno = 5959\n\tERROR_CLUSTER_RESOURCE_LOCKED_STATUS                                      syscall.Errno = 5960\n\tERROR_CLUSTER_SHARED_VOLUME_FAILOVER_NOT_ALLOWED                          syscall.Errno = 5961\n\tERROR_CLUSTER_NODE_DRAIN_IN_PROGRESS                                      syscall.Errno = 5962\n\tERROR_CLUSTER_DISK_NOT_CONNECTED                                          syscall.Errno = 5963\n\tERROR_DISK_NOT_CSV_CAPABLE                                                syscall.Errno = 5964\n\tERROR_RESOURCE_NOT_IN_AVAILABLE_STORAGE                                   syscall.Errno = 5965\n\tERROR_CLUSTER_SHARED_VOLUME_REDIRECTED                                    syscall.Errno = 5966\n\tERROR_CLUSTER_SHARED_VOLUME_NOT_REDIRECTED                                syscall.Errno = 5967\n\tERROR_CLUSTER_CANNOT_RETURN_PROPERTIES                                    syscall.Errno = 5968\n\tERROR_CLUSTER_RESOURCE_CONTAINS_UNSUPPORTED_DIFF_AREA_FOR_SHARED_VOLUMES  syscall.Errno = 5969\n\tERROR_CLUSTER_RESOURCE_IS_IN_MAINTENANCE_MODE                             syscall.Errno = 5970\n\tERROR_CLUSTER_AFFINITY_CONFLICT                                           syscall.Errno = 5971\n\tERROR_CLUSTER_RESOURCE_IS_REPLICA_VIRTUAL_MACHINE                         syscall.Errno = 5972\n\tERROR_CLUSTER_UPGRADE_INCOMPATIBLE_VERSIONS                               syscall.Errno = 5973\n\tERROR_CLUSTER_UPGRADE_FIX_QUORUM_NOT_SUPPORTED                            syscall.Errno = 5974\n\tERROR_CLUSTER_UPGRADE_RESTART_REQUIRED                                    syscall.Errno = 5975\n\tERROR_CLUSTER_UPGRADE_IN_PROGRESS                                         syscall.Errno = 5976\n\tERROR_CLUSTER_UPGRADE_INCOMPLETE                                          syscall.Errno = 5977\n\tERROR_CLUSTER_NODE_IN_GRACE_PERIOD                                        syscall.Errno = 5978\n\tERROR_CLUSTER_CSV_IO_PAUSE_TIMEOUT                                        syscall.Errno = 5979\n\tERROR_NODE_NOT_ACTIVE_CLUSTER_MEMBER                                      syscall.Errno = 5980\n\tERROR_CLUSTER_RESOURCE_NOT_MONITORED                                      syscall.Errno = 5981\n\tERROR_CLUSTER_RESOURCE_DOES_NOT_SUPPORT_UNMONITORED                       syscall.Errno = 5982\n\tERROR_CLUSTER_RESOURCE_IS_REPLICATED                                      syscall.Errno = 5983\n\tERROR_CLUSTER_NODE_ISOLATED                                               syscall.Errno = 5984\n\tERROR_CLUSTER_NODE_QUARANTINED                                            syscall.Errno = 5985\n\tERROR_CLUSTER_DATABASE_UPDATE_CONDITION_FAILED                            syscall.Errno = 5986\n\tERROR_CLUSTER_SPACE_DEGRADED                                              syscall.Errno = 5987\n\tERROR_CLUSTER_TOKEN_DELEGATION_NOT_SUPPORTED                              syscall.Errno = 5988\n\tERROR_CLUSTER_CSV_INVALID_HANDLE                                          syscall.Errno = 5989\n\tERROR_CLUSTER_CSV_SUPPORTED_ONLY_ON_COORDINATOR                           syscall.Errno = 5990\n\tERROR_GROUPSET_NOT_AVAILABLE                                              syscall.Errno = 5991\n\tERROR_GROUPSET_NOT_FOUND                                                  syscall.Errno = 5992\n\tERROR_GROUPSET_CANT_PROVIDE                                               syscall.Errno = 5993\n\tERROR_CLUSTER_FAULT_DOMAIN_PARENT_NOT_FOUND                               syscall.Errno = 5994\n\tERROR_CLUSTER_FAULT_DOMAIN_INVALID_HIERARCHY                              syscall.Errno = 5995\n\tERROR_CLUSTER_FAULT_DOMAIN_FAILED_S2D_VALIDATION                          syscall.Errno = 5996\n\tERROR_CLUSTER_FAULT_DOMAIN_S2D_CONNECTIVITY_LOSS                          syscall.Errno = 5997\n\tERROR_CLUSTER_INVALID_INFRASTRUCTURE_FILESERVER_NAME                      syscall.Errno = 5998\n\tERROR_CLUSTERSET_MANAGEMENT_CLUSTER_UNREACHABLE                           syscall.Errno = 5999\n\tERROR_ENCRYPTION_FAILED                                                   syscall.Errno = 6000\n\tERROR_DECRYPTION_FAILED                                                   syscall.Errno = 6001\n\tERROR_FILE_ENCRYPTED                                                      syscall.Errno = 6002\n\tERROR_NO_RECOVERY_POLICY                                                  syscall.Errno = 6003\n\tERROR_NO_EFS                                                              syscall.Errno = 6004\n\tERROR_WRONG_EFS                                                           syscall.Errno = 6005\n\tERROR_NO_USER_KEYS                                                        syscall.Errno = 6006\n\tERROR_FILE_NOT_ENCRYPTED                                                  syscall.Errno = 6007\n\tERROR_NOT_EXPORT_FORMAT                                                   syscall.Errno = 6008\n\tERROR_FILE_READ_ONLY                                                      syscall.Errno = 6009\n\tERROR_DIR_EFS_DISALLOWED                                                  syscall.Errno = 6010\n\tERROR_EFS_SERVER_NOT_TRUSTED                                              syscall.Errno = 6011\n\tERROR_BAD_RECOVERY_POLICY                                                 syscall.Errno = 6012\n\tERROR_EFS_ALG_BLOB_TOO_BIG                                                syscall.Errno = 6013\n\tERROR_VOLUME_NOT_SUPPORT_EFS                                              syscall.Errno = 6014\n\tERROR_EFS_DISABLED                                                        syscall.Errno = 6015\n\tERROR_EFS_VERSION_NOT_SUPPORT                                             syscall.Errno = 6016\n\tERROR_CS_ENCRYPTION_INVALID_SERVER_RESPONSE                               syscall.Errno = 6017\n\tERROR_CS_ENCRYPTION_UNSUPPORTED_SERVER                                    syscall.Errno = 6018\n\tERROR_CS_ENCRYPTION_EXISTING_ENCRYPTED_FILE                               syscall.Errno = 6019\n\tERROR_CS_ENCRYPTION_NEW_ENCRYPTED_FILE                                    syscall.Errno = 6020\n\tERROR_CS_ENCRYPTION_FILE_NOT_CSE                                          syscall.Errno = 6021\n\tERROR_ENCRYPTION_POLICY_DENIES_OPERATION                                  syscall.Errno = 6022\n\tERROR_WIP_ENCRYPTION_FAILED                                               syscall.Errno = 6023\n\tERROR_NO_BROWSER_SERVERS_FOUND                                            syscall.Errno = 6118\n\tSCHED_E_SERVICE_NOT_LOCALSYSTEM                                           syscall.Errno = 6200\n\tERROR_LOG_SECTOR_INVALID                                                  syscall.Errno = 6600\n\tERROR_LOG_SECTOR_PARITY_INVALID                                           syscall.Errno = 6601\n\tERROR_LOG_SECTOR_REMAPPED                                                 syscall.Errno = 6602\n\tERROR_LOG_BLOCK_INCOMPLETE                                                syscall.Errno = 6603\n\tERROR_LOG_INVALID_RANGE                                                   syscall.Errno = 6604\n\tERROR_LOG_BLOCKS_EXHAUSTED                                                syscall.Errno = 6605\n\tERROR_LOG_READ_CONTEXT_INVALID                                            syscall.Errno = 6606\n\tERROR_LOG_RESTART_INVALID                                                 syscall.Errno = 6607\n\tERROR_LOG_BLOCK_VERSION                                                   syscall.Errno = 6608\n\tERROR_LOG_BLOCK_INVALID                                                   syscall.Errno = 6609\n\tERROR_LOG_READ_MODE_INVALID                                               syscall.Errno = 6610\n\tERROR_LOG_NO_RESTART                                                      syscall.Errno = 6611\n\tERROR_LOG_METADATA_CORRUPT                                                syscall.Errno = 6612\n\tERROR_LOG_METADATA_INVALID                                                syscall.Errno = 6613\n\tERROR_LOG_METADATA_INCONSISTENT                                           syscall.Errno = 6614\n\tERROR_LOG_RESERVATION_INVALID                                             syscall.Errno = 6615\n\tERROR_LOG_CANT_DELETE                                                     syscall.Errno = 6616\n\tERROR_LOG_CONTAINER_LIMIT_EXCEEDED                                        syscall.Errno = 6617\n\tERROR_LOG_START_OF_LOG                                                    syscall.Errno = 6618\n\tERROR_LOG_POLICY_ALREADY_INSTALLED                                        syscall.Errno = 6619\n\tERROR_LOG_POLICY_NOT_INSTALLED                                            syscall.Errno = 6620\n\tERROR_LOG_POLICY_INVALID                                                  syscall.Errno = 6621\n\tERROR_LOG_POLICY_CONFLICT                                                 syscall.Errno = 6622\n\tERROR_LOG_PINNED_ARCHIVE_TAIL                                             syscall.Errno = 6623\n\tERROR_LOG_RECORD_NONEXISTENT                                              syscall.Errno = 6624\n\tERROR_LOG_RECORDS_RESERVED_INVALID                                        syscall.Errno = 6625\n\tERROR_LOG_SPACE_RESERVED_INVALID                                          syscall.Errno = 6626\n\tERROR_LOG_TAIL_INVALID                                                    syscall.Errno = 6627\n\tERROR_LOG_FULL                                                            syscall.Errno = 6628\n\tERROR_COULD_NOT_RESIZE_LOG                                                syscall.Errno = 6629\n\tERROR_LOG_MULTIPLEXED                                                     syscall.Errno = 6630\n\tERROR_LOG_DEDICATED                                                       syscall.Errno = 6631\n\tERROR_LOG_ARCHIVE_NOT_IN_PROGRESS                                         syscall.Errno = 6632\n\tERROR_LOG_ARCHIVE_IN_PROGRESS                                             syscall.Errno = 6633\n\tERROR_LOG_EPHEMERAL                                                       syscall.Errno = 6634\n\tERROR_LOG_NOT_ENOUGH_CONTAINERS                                           syscall.Errno = 6635\n\tERROR_LOG_CLIENT_ALREADY_REGISTERED                                       syscall.Errno = 6636\n\tERROR_LOG_CLIENT_NOT_REGISTERED                                           syscall.Errno = 6637\n\tERROR_LOG_FULL_HANDLER_IN_PROGRESS                                        syscall.Errno = 6638\n\tERROR_LOG_CONTAINER_READ_FAILED                                           syscall.Errno = 6639\n\tERROR_LOG_CONTAINER_WRITE_FAILED                                          syscall.Errno = 6640\n\tERROR_LOG_CONTAINER_OPEN_FAILED                                           syscall.Errno = 6641\n\tERROR_LOG_CONTAINER_STATE_INVALID                                         syscall.Errno = 6642\n\tERROR_LOG_STATE_INVALID                                                   syscall.Errno = 6643\n\tERROR_LOG_PINNED                                                          syscall.Errno = 6644\n\tERROR_LOG_METADATA_FLUSH_FAILED                                           syscall.Errno = 6645\n\tERROR_LOG_INCONSISTENT_SECURITY                                           syscall.Errno = 6646\n\tERROR_LOG_APPENDED_FLUSH_FAILED                                           syscall.Errno = 6647\n\tERROR_LOG_PINNED_RESERVATION                                              syscall.Errno = 6648\n\tERROR_INVALID_TRANSACTION                                                 syscall.Errno = 6700\n\tERROR_TRANSACTION_NOT_ACTIVE                                              syscall.Errno = 6701\n\tERROR_TRANSACTION_REQUEST_NOT_VALID                                       syscall.Errno = 6702\n\tERROR_TRANSACTION_NOT_REQUESTED                                           syscall.Errno = 6703\n\tERROR_TRANSACTION_ALREADY_ABORTED                                         syscall.Errno = 6704\n\tERROR_TRANSACTION_ALREADY_COMMITTED                                       syscall.Errno = 6705\n\tERROR_TM_INITIALIZATION_FAILED                                            syscall.Errno = 6706\n\tERROR_RESOURCEMANAGER_READ_ONLY                                           syscall.Errno = 6707\n\tERROR_TRANSACTION_NOT_JOINED                                              syscall.Errno = 6708\n\tERROR_TRANSACTION_SUPERIOR_EXISTS                                         syscall.Errno = 6709\n\tERROR_CRM_PROTOCOL_ALREADY_EXISTS                                         syscall.Errno = 6710\n\tERROR_TRANSACTION_PROPAGATION_FAILED                                      syscall.Errno = 6711\n\tERROR_CRM_PROTOCOL_NOT_FOUND                                              syscall.Errno = 6712\n\tERROR_TRANSACTION_INVALID_MARSHALL_BUFFER                                 syscall.Errno = 6713\n\tERROR_CURRENT_TRANSACTION_NOT_VALID                                       syscall.Errno = 6714\n\tERROR_TRANSACTION_NOT_FOUND                                               syscall.Errno = 6715\n\tERROR_RESOURCEMANAGER_NOT_FOUND                                           syscall.Errno = 6716\n\tERROR_ENLISTMENT_NOT_FOUND                                                syscall.Errno = 6717\n\tERROR_TRANSACTIONMANAGER_NOT_FOUND                                        syscall.Errno = 6718\n\tERROR_TRANSACTIONMANAGER_NOT_ONLINE                                       syscall.Errno = 6719\n\tERROR_TRANSACTIONMANAGER_RECOVERY_NAME_COLLISION                          syscall.Errno = 6720\n\tERROR_TRANSACTION_NOT_ROOT                                                syscall.Errno = 6721\n\tERROR_TRANSACTION_OBJECT_EXPIRED                                          syscall.Errno = 6722\n\tERROR_TRANSACTION_RESPONSE_NOT_ENLISTED                                   syscall.Errno = 6723\n\tERROR_TRANSACTION_RECORD_TOO_LONG                                         syscall.Errno = 6724\n\tERROR_IMPLICIT_TRANSACTION_NOT_SUPPORTED                                  syscall.Errno = 6725\n\tERROR_TRANSACTION_INTEGRITY_VIOLATED                                      syscall.Errno = 6726\n\tERROR_TRANSACTIONMANAGER_IDENTITY_MISMATCH                                syscall.Errno = 6727\n\tERROR_RM_CANNOT_BE_FROZEN_FOR_SNAPSHOT                                    syscall.Errno = 6728\n\tERROR_TRANSACTION_MUST_WRITETHROUGH                                       syscall.Errno = 6729\n\tERROR_TRANSACTION_NO_SUPERIOR                                             syscall.Errno = 6730\n\tERROR_HEURISTIC_DAMAGE_POSSIBLE                                           syscall.Errno = 6731\n\tERROR_TRANSACTIONAL_CONFLICT                                              syscall.Errno = 6800\n\tERROR_RM_NOT_ACTIVE                                                       syscall.Errno = 6801\n\tERROR_RM_METADATA_CORRUPT                                                 syscall.Errno = 6802\n\tERROR_DIRECTORY_NOT_RM                                                    syscall.Errno = 6803\n\tERROR_TRANSACTIONS_UNSUPPORTED_REMOTE                                     syscall.Errno = 6805\n\tERROR_LOG_RESIZE_INVALID_SIZE                                             syscall.Errno = 6806\n\tERROR_OBJECT_NO_LONGER_EXISTS                                             syscall.Errno = 6807\n\tERROR_STREAM_MINIVERSION_NOT_FOUND                                        syscall.Errno = 6808\n\tERROR_STREAM_MINIVERSION_NOT_VALID                                        syscall.Errno = 6809\n\tERROR_MINIVERSION_INACCESSIBLE_FROM_SPECIFIED_TRANSACTION                 syscall.Errno = 6810\n\tERROR_CANT_OPEN_MINIVERSION_WITH_MODIFY_INTENT                            syscall.Errno = 6811\n\tERROR_CANT_CREATE_MORE_STREAM_MINIVERSIONS                                syscall.Errno = 6812\n\tERROR_REMOTE_FILE_VERSION_MISMATCH                                        syscall.Errno = 6814\n\tERROR_HANDLE_NO_LONGER_VALID                                              syscall.Errno = 6815\n\tERROR_NO_TXF_METADATA                                                     syscall.Errno = 6816\n\tERROR_LOG_CORRUPTION_DETECTED                                             syscall.Errno = 6817\n\tERROR_CANT_RECOVER_WITH_HANDLE_OPEN                                       syscall.Errno = 6818\n\tERROR_RM_DISCONNECTED                                                     syscall.Errno = 6819\n\tERROR_ENLISTMENT_NOT_SUPERIOR                                             syscall.Errno = 6820\n\tERROR_RECOVERY_NOT_NEEDED                                                 syscall.Errno = 6821\n\tERROR_RM_ALREADY_STARTED                                                  syscall.Errno = 6822\n\tERROR_FILE_IDENTITY_NOT_PERSISTENT                                        syscall.Errno = 6823\n\tERROR_CANT_BREAK_TRANSACTIONAL_DEPENDENCY                                 syscall.Errno = 6824\n\tERROR_CANT_CROSS_RM_BOUNDARY                                              syscall.Errno = 6825\n\tERROR_TXF_DIR_NOT_EMPTY                                                   syscall.Errno = 6826\n\tERROR_INDOUBT_TRANSACTIONS_EXIST                                          syscall.Errno = 6827\n\tERROR_TM_VOLATILE                                                         syscall.Errno = 6828\n\tERROR_ROLLBACK_TIMER_EXPIRED                                              syscall.Errno = 6829\n\tERROR_TXF_ATTRIBUTE_CORRUPT                                               syscall.Errno = 6830\n\tERROR_EFS_NOT_ALLOWED_IN_TRANSACTION                                      syscall.Errno = 6831\n\tERROR_TRANSACTIONAL_OPEN_NOT_ALLOWED                                      syscall.Errno = 6832\n\tERROR_LOG_GROWTH_FAILED                                                   syscall.Errno = 6833\n\tERROR_TRANSACTED_MAPPING_UNSUPPORTED_REMOTE                               syscall.Errno = 6834\n\tERROR_TXF_METADATA_ALREADY_PRESENT                                        syscall.Errno = 6835\n\tERROR_TRANSACTION_SCOPE_CALLBACKS_NOT_SET                                 syscall.Errno = 6836\n\tERROR_TRANSACTION_REQUIRED_PROMOTION                                      syscall.Errno = 6837\n\tERROR_CANNOT_EXECUTE_FILE_IN_TRANSACTION                                  syscall.Errno = 6838\n\tERROR_TRANSACTIONS_NOT_FROZEN                                             syscall.Errno = 6839\n\tERROR_TRANSACTION_FREEZE_IN_PROGRESS                                      syscall.Errno = 6840\n\tERROR_NOT_SNAPSHOT_VOLUME                                                 syscall.Errno = 6841\n\tERROR_NO_SAVEPOINT_WITH_OPEN_FILES                                        syscall.Errno = 6842\n\tERROR_DATA_LOST_REPAIR                                                    syscall.Errno = 6843\n\tERROR_SPARSE_NOT_ALLOWED_IN_TRANSACTION                                   syscall.Errno = 6844\n\tERROR_TM_IDENTITY_MISMATCH                                                syscall.Errno = 6845\n\tERROR_FLOATED_SECTION                                                     syscall.Errno = 6846\n\tERROR_CANNOT_ACCEPT_TRANSACTED_WORK                                       syscall.Errno = 6847\n\tERROR_CANNOT_ABORT_TRANSACTIONS                                           syscall.Errno = 6848\n\tERROR_BAD_CLUSTERS                                                        syscall.Errno = 6849\n\tERROR_COMPRESSION_NOT_ALLOWED_IN_TRANSACTION                              syscall.Errno = 6850\n\tERROR_VOLUME_DIRTY                                                        syscall.Errno = 6851\n\tERROR_NO_LINK_TRACKING_IN_TRANSACTION                                     syscall.Errno = 6852\n\tERROR_OPERATION_NOT_SUPPORTED_IN_TRANSACTION                              syscall.Errno = 6853\n\tERROR_EXPIRED_HANDLE                                                      syscall.Errno = 6854\n\tERROR_TRANSACTION_NOT_ENLISTED                                            syscall.Errno = 6855\n\tERROR_CTX_WINSTATION_NAME_INVALID                                         syscall.Errno = 7001\n\tERROR_CTX_INVALID_PD                                                      syscall.Errno = 7002\n\tERROR_CTX_PD_NOT_FOUND                                                    syscall.Errno = 7003\n\tERROR_CTX_WD_NOT_FOUND                                                    syscall.Errno = 7004\n\tERROR_CTX_CANNOT_MAKE_EVENTLOG_ENTRY                                      syscall.Errno = 7005\n\tERROR_CTX_SERVICE_NAME_COLLISION                                          syscall.Errno = 7006\n\tERROR_CTX_CLOSE_PENDING                                                   syscall.Errno = 7007\n\tERROR_CTX_NO_OUTBUF                                                       syscall.Errno = 7008\n\tERROR_CTX_MODEM_INF_NOT_FOUND                                             syscall.Errno = 7009\n\tERROR_CTX_INVALID_MODEMNAME                                               syscall.Errno = 7010\n\tERROR_CTX_MODEM_RESPONSE_ERROR                                            syscall.Errno = 7011\n\tERROR_CTX_MODEM_RESPONSE_TIMEOUT                                          syscall.Errno = 7012\n\tERROR_CTX_MODEM_RESPONSE_NO_CARRIER                                       syscall.Errno = 7013\n\tERROR_CTX_MODEM_RESPONSE_NO_DIALTONE                                      syscall.Errno = 7014\n\tERROR_CTX_MODEM_RESPONSE_BUSY                                             syscall.Errno = 7015\n\tERROR_CTX_MODEM_RESPONSE_VOICE                                            syscall.Errno = 7016\n\tERROR_CTX_TD_ERROR                                                        syscall.Errno = 7017\n\tERROR_CTX_WINSTATION_NOT_FOUND                                            syscall.Errno = 7022\n\tERROR_CTX_WINSTATION_ALREADY_EXISTS                                       syscall.Errno = 7023\n\tERROR_CTX_WINSTATION_BUSY                                                 syscall.Errno = 7024\n\tERROR_CTX_BAD_VIDEO_MODE                                                  syscall.Errno = 7025\n\tERROR_CTX_GRAPHICS_INVALID                                                syscall.Errno = 7035\n\tERROR_CTX_LOGON_DISABLED                                                  syscall.Errno = 7037\n\tERROR_CTX_NOT_CONSOLE                                                     syscall.Errno = 7038\n\tERROR_CTX_CLIENT_QUERY_TIMEOUT                                            syscall.Errno = 7040\n\tERROR_CTX_CONSOLE_DISCONNECT                                              syscall.Errno = 7041\n\tERROR_CTX_CONSOLE_CONNECT                                                 syscall.Errno = 7042\n\tERROR_CTX_SHADOW_DENIED                                                   syscall.Errno = 7044\n\tERROR_CTX_WINSTATION_ACCESS_DENIED                                        syscall.Errno = 7045\n\tERROR_CTX_INVALID_WD                                                      syscall.Errno = 7049\n\tERROR_CTX_SHADOW_INVALID                                                  syscall.Errno = 7050\n\tERROR_CTX_SHADOW_DISABLED                                                 syscall.Errno = 7051\n\tERROR_CTX_CLIENT_LICENSE_IN_USE                                           syscall.Errno = 7052\n\tERROR_CTX_CLIENT_LICENSE_NOT_SET                                          syscall.Errno = 7053\n\tERROR_CTX_LICENSE_NOT_AVAILABLE                                           syscall.Errno = 7054\n\tERROR_CTX_LICENSE_CLIENT_INVALID                                          syscall.Errno = 7055\n\tERROR_CTX_LICENSE_EXPIRED                                                 syscall.Errno = 7056\n\tERROR_CTX_SHADOW_NOT_RUNNING                                              syscall.Errno = 7057\n\tERROR_CTX_SHADOW_ENDED_BY_MODE_CHANGE                                     syscall.Errno = 7058\n\tERROR_ACTIVATION_COUNT_EXCEEDED                                           syscall.Errno = 7059\n\tERROR_CTX_WINSTATIONS_DISABLED                                            syscall.Errno = 7060\n\tERROR_CTX_ENCRYPTION_LEVEL_REQUIRED                                       syscall.Errno = 7061\n\tERROR_CTX_SESSION_IN_USE                                                  syscall.Errno = 7062\n\tERROR_CTX_NO_FORCE_LOGOFF                                                 syscall.Errno = 7063\n\tERROR_CTX_ACCOUNT_RESTRICTION                                             syscall.Errno = 7064\n\tERROR_RDP_PROTOCOL_ERROR                                                  syscall.Errno = 7065\n\tERROR_CTX_CDM_CONNECT                                                     syscall.Errno = 7066\n\tERROR_CTX_CDM_DISCONNECT                                                  syscall.Errno = 7067\n\tERROR_CTX_SECURITY_LAYER_ERROR                                            syscall.Errno = 7068\n\tERROR_TS_INCOMPATIBLE_SESSIONS                                            syscall.Errno = 7069\n\tERROR_TS_VIDEO_SUBSYSTEM_ERROR                                            syscall.Errno = 7070\n\tFRS_ERR_INVALID_API_SEQUENCE                                              syscall.Errno = 8001\n\tFRS_ERR_STARTING_SERVICE                                                  syscall.Errno = 8002\n\tFRS_ERR_STOPPING_SERVICE                                                  syscall.Errno = 8003\n\tFRS_ERR_INTERNAL_API                                                      syscall.Errno = 8004\n\tFRS_ERR_INTERNAL                                                          syscall.Errno = 8005\n\tFRS_ERR_SERVICE_COMM                                                      syscall.Errno = 8006\n\tFRS_ERR_INSUFFICIENT_PRIV                                                 syscall.Errno = 8007\n\tFRS_ERR_AUTHENTICATION                                                    syscall.Errno = 8008\n\tFRS_ERR_PARENT_INSUFFICIENT_PRIV                                          syscall.Errno = 8009\n\tFRS_ERR_PARENT_AUTHENTICATION                                             syscall.Errno = 8010\n\tFRS_ERR_CHILD_TO_PARENT_COMM                                              syscall.Errno = 8011\n\tFRS_ERR_PARENT_TO_CHILD_COMM                                              syscall.Errno = 8012\n\tFRS_ERR_SYSVOL_POPULATE                                                   syscall.Errno = 8013\n\tFRS_ERR_SYSVOL_POPULATE_TIMEOUT                                           syscall.Errno = 8014\n\tFRS_ERR_SYSVOL_IS_BUSY                                                    syscall.Errno = 8015\n\tFRS_ERR_SYSVOL_DEMOTE                                                     syscall.Errno = 8016\n\tFRS_ERR_INVALID_SERVICE_PARAMETER                                         syscall.Errno = 8017\n\tDS_S_SUCCESS                                                                            = ERROR_SUCCESS\n\tERROR_DS_NOT_INSTALLED                                                    syscall.Errno = 8200\n\tERROR_DS_MEMBERSHIP_EVALUATED_LOCALLY                                     syscall.Errno = 8201\n\tERROR_DS_NO_ATTRIBUTE_OR_VALUE                                            syscall.Errno = 8202\n\tERROR_DS_INVALID_ATTRIBUTE_SYNTAX                                         syscall.Errno = 8203\n\tERROR_DS_ATTRIBUTE_TYPE_UNDEFINED                                         syscall.Errno = 8204\n\tERROR_DS_ATTRIBUTE_OR_VALUE_EXISTS                                        syscall.Errno = 8205\n\tERROR_DS_BUSY                                                             syscall.Errno = 8206\n\tERROR_DS_UNAVAILABLE                                                      syscall.Errno = 8207\n\tERROR_DS_NO_RIDS_ALLOCATED                                                syscall.Errno = 8208\n\tERROR_DS_NO_MORE_RIDS                                                     syscall.Errno = 8209\n\tERROR_DS_INCORRECT_ROLE_OWNER                                             syscall.Errno = 8210\n\tERROR_DS_RIDMGR_INIT_ERROR                                                syscall.Errno = 8211\n\tERROR_DS_OBJ_CLASS_VIOLATION                                              syscall.Errno = 8212\n\tERROR_DS_CANT_ON_NON_LEAF                                                 syscall.Errno = 8213\n\tERROR_DS_CANT_ON_RDN                                                      syscall.Errno = 8214\n\tERROR_DS_CANT_MOD_OBJ_CLASS                                               syscall.Errno = 8215\n\tERROR_DS_CROSS_DOM_MOVE_ERROR                                             syscall.Errno = 8216\n\tERROR_DS_GC_NOT_AVAILABLE                                                 syscall.Errno = 8217\n\tERROR_SHARED_POLICY                                                       syscall.Errno = 8218\n\tERROR_POLICY_OBJECT_NOT_FOUND                                             syscall.Errno = 8219\n\tERROR_POLICY_ONLY_IN_DS                                                   syscall.Errno = 8220\n\tERROR_PROMOTION_ACTIVE                                                    syscall.Errno = 8221\n\tERROR_NO_PROMOTION_ACTIVE                                                 syscall.Errno = 8222\n\tERROR_DS_OPERATIONS_ERROR                                                 syscall.Errno = 8224\n\tERROR_DS_PROTOCOL_ERROR                                                   syscall.Errno = 8225\n\tERROR_DS_TIMELIMIT_EXCEEDED                                               syscall.Errno = 8226\n\tERROR_DS_SIZELIMIT_EXCEEDED                                               syscall.Errno = 8227\n\tERROR_DS_ADMIN_LIMIT_EXCEEDED                                             syscall.Errno = 8228\n\tERROR_DS_COMPARE_FALSE                                                    syscall.Errno = 8229\n\tERROR_DS_COMPARE_TRUE                                                     syscall.Errno = 8230\n\tERROR_DS_AUTH_METHOD_NOT_SUPPORTED                                        syscall.Errno = 8231\n\tERROR_DS_STRONG_AUTH_REQUIRED                                             syscall.Errno = 8232\n\tERROR_DS_INAPPROPRIATE_AUTH                                               syscall.Errno = 8233\n\tERROR_DS_AUTH_UNKNOWN                                                     syscall.Errno = 8234\n\tERROR_DS_REFERRAL                                                         syscall.Errno = 8235\n\tERROR_DS_UNAVAILABLE_CRIT_EXTENSION                                       syscall.Errno = 8236\n\tERROR_DS_CONFIDENTIALITY_REQUIRED                                         syscall.Errno = 8237\n\tERROR_DS_INAPPROPRIATE_MATCHING                                           syscall.Errno = 8238\n\tERROR_DS_CONSTRAINT_VIOLATION                                             syscall.Errno = 8239\n\tERROR_DS_NO_SUCH_OBJECT                                                   syscall.Errno = 8240\n\tERROR_DS_ALIAS_PROBLEM                                                    syscall.Errno = 8241\n\tERROR_DS_INVALID_DN_SYNTAX                                                syscall.Errno = 8242\n\tERROR_DS_IS_LEAF                                                          syscall.Errno = 8243\n\tERROR_DS_ALIAS_DEREF_PROBLEM                                              syscall.Errno = 8244\n\tERROR_DS_UNWILLING_TO_PERFORM                                             syscall.Errno = 8245\n\tERROR_DS_LOOP_DETECT                                                      syscall.Errno = 8246\n\tERROR_DS_NAMING_VIOLATION                                                 syscall.Errno = 8247\n\tERROR_DS_OBJECT_RESULTS_TOO_LARGE                                         syscall.Errno = 8248\n\tERROR_DS_AFFECTS_MULTIPLE_DSAS                                            syscall.Errno = 8249\n\tERROR_DS_SERVER_DOWN                                                      syscall.Errno = 8250\n\tERROR_DS_LOCAL_ERROR                                                      syscall.Errno = 8251\n\tERROR_DS_ENCODING_ERROR                                                   syscall.Errno = 8252\n\tERROR_DS_DECODING_ERROR                                                   syscall.Errno = 8253\n\tERROR_DS_FILTER_UNKNOWN                                                   syscall.Errno = 8254\n\tERROR_DS_PARAM_ERROR                                                      syscall.Errno = 8255\n\tERROR_DS_NOT_SUPPORTED                                                    syscall.Errno = 8256\n\tERROR_DS_NO_RESULTS_RETURNED                                              syscall.Errno = 8257\n\tERROR_DS_CONTROL_NOT_FOUND                                                syscall.Errno = 8258\n\tERROR_DS_CLIENT_LOOP                                                      syscall.Errno = 8259\n\tERROR_DS_REFERRAL_LIMIT_EXCEEDED                                          syscall.Errno = 8260\n\tERROR_DS_SORT_CONTROL_MISSING                                             syscall.Errno = 8261\n\tERROR_DS_OFFSET_RANGE_ERROR                                               syscall.Errno = 8262\n\tERROR_DS_RIDMGR_DISABLED                                                  syscall.Errno = 8263\n\tERROR_DS_ROOT_MUST_BE_NC                                                  syscall.Errno = 8301\n\tERROR_DS_ADD_REPLICA_INHIBITED                                            syscall.Errno = 8302\n\tERROR_DS_ATT_NOT_DEF_IN_SCHEMA                                            syscall.Errno = 8303\n\tERROR_DS_MAX_OBJ_SIZE_EXCEEDED                                            syscall.Errno = 8304\n\tERROR_DS_OBJ_STRING_NAME_EXISTS                                           syscall.Errno = 8305\n\tERROR_DS_NO_RDN_DEFINED_IN_SCHEMA                                         syscall.Errno = 8306\n\tERROR_DS_RDN_DOESNT_MATCH_SCHEMA                                          syscall.Errno = 8307\n\tERROR_DS_NO_REQUESTED_ATTS_FOUND                                          syscall.Errno = 8308\n\tERROR_DS_USER_BUFFER_TO_SMALL                                             syscall.Errno = 8309\n\tERROR_DS_ATT_IS_NOT_ON_OBJ                                                syscall.Errno = 8310\n\tERROR_DS_ILLEGAL_MOD_OPERATION                                            syscall.Errno = 8311\n\tERROR_DS_OBJ_TOO_LARGE                                                    syscall.Errno = 8312\n\tERROR_DS_BAD_INSTANCE_TYPE                                                syscall.Errno = 8313\n\tERROR_DS_MASTERDSA_REQUIRED                                               syscall.Errno = 8314\n\tERROR_DS_OBJECT_CLASS_REQUIRED                                            syscall.Errno = 8315\n\tERROR_DS_MISSING_REQUIRED_ATT                                             syscall.Errno = 8316\n\tERROR_DS_ATT_NOT_DEF_FOR_CLASS                                            syscall.Errno = 8317\n\tERROR_DS_ATT_ALREADY_EXISTS                                               syscall.Errno = 8318\n\tERROR_DS_CANT_ADD_ATT_VALUES                                              syscall.Errno = 8320\n\tERROR_DS_SINGLE_VALUE_CONSTRAINT                                          syscall.Errno = 8321\n\tERROR_DS_RANGE_CONSTRAINT                                                 syscall.Errno = 8322\n\tERROR_DS_ATT_VAL_ALREADY_EXISTS                                           syscall.Errno = 8323\n\tERROR_DS_CANT_REM_MISSING_ATT                                             syscall.Errno = 8324\n\tERROR_DS_CANT_REM_MISSING_ATT_VAL                                         syscall.Errno = 8325\n\tERROR_DS_ROOT_CANT_BE_SUBREF                                              syscall.Errno = 8326\n\tERROR_DS_NO_CHAINING                                                      syscall.Errno = 8327\n\tERROR_DS_NO_CHAINED_EVAL                                                  syscall.Errno = 8328\n\tERROR_DS_NO_PARENT_OBJECT                                                 syscall.Errno = 8329\n\tERROR_DS_PARENT_IS_AN_ALIAS                                               syscall.Errno = 8330\n\tERROR_DS_CANT_MIX_MASTER_AND_REPS                                         syscall.Errno = 8331\n\tERROR_DS_CHILDREN_EXIST                                                   syscall.Errno = 8332\n\tERROR_DS_OBJ_NOT_FOUND                                                    syscall.Errno = 8333\n\tERROR_DS_ALIASED_OBJ_MISSING                                              syscall.Errno = 8334\n\tERROR_DS_BAD_NAME_SYNTAX                                                  syscall.Errno = 8335\n\tERROR_DS_ALIAS_POINTS_TO_ALIAS                                            syscall.Errno = 8336\n\tERROR_DS_CANT_DEREF_ALIAS                                                 syscall.Errno = 8337\n\tERROR_DS_OUT_OF_SCOPE                                                     syscall.Errno = 8338\n\tERROR_DS_OBJECT_BEING_REMOVED                                             syscall.Errno = 8339\n\tERROR_DS_CANT_DELETE_DSA_OBJ                                              syscall.Errno = 8340\n\tERROR_DS_GENERIC_ERROR                                                    syscall.Errno = 8341\n\tERROR_DS_DSA_MUST_BE_INT_MASTER                                           syscall.Errno = 8342\n\tERROR_DS_CLASS_NOT_DSA                                                    syscall.Errno = 8343\n\tERROR_DS_INSUFF_ACCESS_RIGHTS                                             syscall.Errno = 8344\n\tERROR_DS_ILLEGAL_SUPERIOR                                                 syscall.Errno = 8345\n\tERROR_DS_ATTRIBUTE_OWNED_BY_SAM                                           syscall.Errno = 8346\n\tERROR_DS_NAME_TOO_MANY_PARTS                                              syscall.Errno = 8347\n\tERROR_DS_NAME_TOO_LONG                                                    syscall.Errno = 8348\n\tERROR_DS_NAME_VALUE_TOO_LONG                                              syscall.Errno = 8349\n\tERROR_DS_NAME_UNPARSEABLE                                                 syscall.Errno = 8350\n\tERROR_DS_NAME_TYPE_UNKNOWN                                                syscall.Errno = 8351\n\tERROR_DS_NOT_AN_OBJECT                                                    syscall.Errno = 8352\n\tERROR_DS_SEC_DESC_TOO_SHORT                                               syscall.Errno = 8353\n\tERROR_DS_SEC_DESC_INVALID                                                 syscall.Errno = 8354\n\tERROR_DS_NO_DELETED_NAME                                                  syscall.Errno = 8355\n\tERROR_DS_SUBREF_MUST_HAVE_PARENT                                          syscall.Errno = 8356\n\tERROR_DS_NCNAME_MUST_BE_NC                                                syscall.Errno = 8357\n\tERROR_DS_CANT_ADD_SYSTEM_ONLY                                             syscall.Errno = 8358\n\tERROR_DS_CLASS_MUST_BE_CONCRETE                                           syscall.Errno = 8359\n\tERROR_DS_INVALID_DMD                                                      syscall.Errno = 8360\n\tERROR_DS_OBJ_GUID_EXISTS                                                  syscall.Errno = 8361\n\tERROR_DS_NOT_ON_BACKLINK                                                  syscall.Errno = 8362\n\tERROR_DS_NO_CROSSREF_FOR_NC                                               syscall.Errno = 8363\n\tERROR_DS_SHUTTING_DOWN                                                    syscall.Errno = 8364\n\tERROR_DS_UNKNOWN_OPERATION                                                syscall.Errno = 8365\n\tERROR_DS_INVALID_ROLE_OWNER                                               syscall.Errno = 8366\n\tERROR_DS_COULDNT_CONTACT_FSMO                                             syscall.Errno = 8367\n\tERROR_DS_CROSS_NC_DN_RENAME                                               syscall.Errno = 8368\n\tERROR_DS_CANT_MOD_SYSTEM_ONLY                                             syscall.Errno = 8369\n\tERROR_DS_REPLICATOR_ONLY                                                  syscall.Errno = 8370\n\tERROR_DS_OBJ_CLASS_NOT_DEFINED                                            syscall.Errno = 8371\n\tERROR_DS_OBJ_CLASS_NOT_SUBCLASS                                           syscall.Errno = 8372\n\tERROR_DS_NAME_REFERENCE_INVALID                                           syscall.Errno = 8373\n\tERROR_DS_CROSS_REF_EXISTS                                                 syscall.Errno = 8374\n\tERROR_DS_CANT_DEL_MASTER_CROSSREF                                         syscall.Errno = 8375\n\tERROR_DS_SUBTREE_NOTIFY_NOT_NC_HEAD                                       syscall.Errno = 8376\n\tERROR_DS_NOTIFY_FILTER_TOO_COMPLEX                                        syscall.Errno = 8377\n\tERROR_DS_DUP_RDN                                                          syscall.Errno = 8378\n\tERROR_DS_DUP_OID                                                          syscall.Errno = 8379\n\tERROR_DS_DUP_MAPI_ID                                                      syscall.Errno = 8380\n\tERROR_DS_DUP_SCHEMA_ID_GUID                                               syscall.Errno = 8381\n\tERROR_DS_DUP_LDAP_DISPLAY_NAME                                            syscall.Errno = 8382\n\tERROR_DS_SEMANTIC_ATT_TEST                                                syscall.Errno = 8383\n\tERROR_DS_SYNTAX_MISMATCH                                                  syscall.Errno = 8384\n\tERROR_DS_EXISTS_IN_MUST_HAVE                                              syscall.Errno = 8385\n\tERROR_DS_EXISTS_IN_MAY_HAVE                                               syscall.Errno = 8386\n\tERROR_DS_NONEXISTENT_MAY_HAVE                                             syscall.Errno = 8387\n\tERROR_DS_NONEXISTENT_MUST_HAVE                                            syscall.Errno = 8388\n\tERROR_DS_AUX_CLS_TEST_FAIL                                                syscall.Errno = 8389\n\tERROR_DS_NONEXISTENT_POSS_SUP                                             syscall.Errno = 8390\n\tERROR_DS_SUB_CLS_TEST_FAIL                                                syscall.Errno = 8391\n\tERROR_DS_BAD_RDN_ATT_ID_SYNTAX                                            syscall.Errno = 8392\n\tERROR_DS_EXISTS_IN_AUX_CLS                                                syscall.Errno = 8393\n\tERROR_DS_EXISTS_IN_SUB_CLS                                                syscall.Errno = 8394\n\tERROR_DS_EXISTS_IN_POSS_SUP                                               syscall.Errno = 8395\n\tERROR_DS_RECALCSCHEMA_FAILED                                              syscall.Errno = 8396\n\tERROR_DS_TREE_DELETE_NOT_FINISHED                                         syscall.Errno = 8397\n\tERROR_DS_CANT_DELETE                                                      syscall.Errno = 8398\n\tERROR_DS_ATT_SCHEMA_REQ_ID                                                syscall.Errno = 8399\n\tERROR_DS_BAD_ATT_SCHEMA_SYNTAX                                            syscall.Errno = 8400\n\tERROR_DS_CANT_CACHE_ATT                                                   syscall.Errno = 8401\n\tERROR_DS_CANT_CACHE_CLASS                                                 syscall.Errno = 8402\n\tERROR_DS_CANT_REMOVE_ATT_CACHE                                            syscall.Errno = 8403\n\tERROR_DS_CANT_REMOVE_CLASS_CACHE                                          syscall.Errno = 8404\n\tERROR_DS_CANT_RETRIEVE_DN                                                 syscall.Errno = 8405\n\tERROR_DS_MISSING_SUPREF                                                   syscall.Errno = 8406\n\tERROR_DS_CANT_RETRIEVE_INSTANCE                                           syscall.Errno = 8407\n\tERROR_DS_CODE_INCONSISTENCY                                               syscall.Errno = 8408\n\tERROR_DS_DATABASE_ERROR                                                   syscall.Errno = 8409\n\tERROR_DS_GOVERNSID_MISSING                                                syscall.Errno = 8410\n\tERROR_DS_MISSING_EXPECTED_ATT                                             syscall.Errno = 8411\n\tERROR_DS_NCNAME_MISSING_CR_REF                                            syscall.Errno = 8412\n\tERROR_DS_SECURITY_CHECKING_ERROR                                          syscall.Errno = 8413\n\tERROR_DS_SCHEMA_NOT_LOADED                                                syscall.Errno = 8414\n\tERROR_DS_SCHEMA_ALLOC_FAILED                                              syscall.Errno = 8415\n\tERROR_DS_ATT_SCHEMA_REQ_SYNTAX                                            syscall.Errno = 8416\n\tERROR_DS_GCVERIFY_ERROR                                                   syscall.Errno = 8417\n\tERROR_DS_DRA_SCHEMA_MISMATCH                                              syscall.Errno = 8418\n\tERROR_DS_CANT_FIND_DSA_OBJ                                                syscall.Errno = 8419\n\tERROR_DS_CANT_FIND_EXPECTED_NC                                            syscall.Errno = 8420\n\tERROR_DS_CANT_FIND_NC_IN_CACHE                                            syscall.Errno = 8421\n\tERROR_DS_CANT_RETRIEVE_CHILD                                              syscall.Errno = 8422\n\tERROR_DS_SECURITY_ILLEGAL_MODIFY                                          syscall.Errno = 8423\n\tERROR_DS_CANT_REPLACE_HIDDEN_REC                                          syscall.Errno = 8424\n\tERROR_DS_BAD_HIERARCHY_FILE                                               syscall.Errno = 8425\n\tERROR_DS_BUILD_HIERARCHY_TABLE_FAILED                                     syscall.Errno = 8426\n\tERROR_DS_CONFIG_PARAM_MISSING                                             syscall.Errno = 8427\n\tERROR_DS_COUNTING_AB_INDICES_FAILED                                       syscall.Errno = 8428\n\tERROR_DS_HIERARCHY_TABLE_MALLOC_FAILED                                    syscall.Errno = 8429\n\tERROR_DS_INTERNAL_FAILURE                                                 syscall.Errno = 8430\n\tERROR_DS_UNKNOWN_ERROR                                                    syscall.Errno = 8431\n\tERROR_DS_ROOT_REQUIRES_CLASS_TOP                                          syscall.Errno = 8432\n\tERROR_DS_REFUSING_FSMO_ROLES                                              syscall.Errno = 8433\n\tERROR_DS_MISSING_FSMO_SETTINGS                                            syscall.Errno = 8434\n\tERROR_DS_UNABLE_TO_SURRENDER_ROLES                                        syscall.Errno = 8435\n\tERROR_DS_DRA_GENERIC                                                      syscall.Errno = 8436\n\tERROR_DS_DRA_INVALID_PARAMETER                                            syscall.Errno = 8437\n\tERROR_DS_DRA_BUSY                                                         syscall.Errno = 8438\n\tERROR_DS_DRA_BAD_DN                                                       syscall.Errno = 8439\n\tERROR_DS_DRA_BAD_NC                                                       syscall.Errno = 8440\n\tERROR_DS_DRA_DN_EXISTS                                                    syscall.Errno = 8441\n\tERROR_DS_DRA_INTERNAL_ERROR                                               syscall.Errno = 8442\n\tERROR_DS_DRA_INCONSISTENT_DIT                                             syscall.Errno = 8443\n\tERROR_DS_DRA_CONNECTION_FAILED                                            syscall.Errno = 8444\n\tERROR_DS_DRA_BAD_INSTANCE_TYPE                                            syscall.Errno = 8445\n\tERROR_DS_DRA_OUT_OF_MEM                                                   syscall.Errno = 8446\n\tERROR_DS_DRA_MAIL_PROBLEM                                                 syscall.Errno = 8447\n\tERROR_DS_DRA_REF_ALREADY_EXISTS                                           syscall.Errno = 8448\n\tERROR_DS_DRA_REF_NOT_FOUND                                                syscall.Errno = 8449\n\tERROR_DS_DRA_OBJ_IS_REP_SOURCE                                            syscall.Errno = 8450\n\tERROR_DS_DRA_DB_ERROR                                                     syscall.Errno = 8451\n\tERROR_DS_DRA_NO_REPLICA                                                   syscall.Errno = 8452\n\tERROR_DS_DRA_ACCESS_DENIED                                                syscall.Errno = 8453\n\tERROR_DS_DRA_NOT_SUPPORTED                                                syscall.Errno = 8454\n\tERROR_DS_DRA_RPC_CANCELLED                                                syscall.Errno = 8455\n\tERROR_DS_DRA_SOURCE_DISABLED                                              syscall.Errno = 8456\n\tERROR_DS_DRA_SINK_DISABLED                                                syscall.Errno = 8457\n\tERROR_DS_DRA_NAME_COLLISION                                               syscall.Errno = 8458\n\tERROR_DS_DRA_SOURCE_REINSTALLED                                           syscall.Errno = 8459\n\tERROR_DS_DRA_MISSING_PARENT                                               syscall.Errno = 8460\n\tERROR_DS_DRA_PREEMPTED                                                    syscall.Errno = 8461\n\tERROR_DS_DRA_ABANDON_SYNC                                                 syscall.Errno = 8462\n\tERROR_DS_DRA_SHUTDOWN                                                     syscall.Errno = 8463\n\tERROR_DS_DRA_INCOMPATIBLE_PARTIAL_SET                                     syscall.Errno = 8464\n\tERROR_DS_DRA_SOURCE_IS_PARTIAL_REPLICA                                    syscall.Errno = 8465\n\tERROR_DS_DRA_EXTN_CONNECTION_FAILED                                       syscall.Errno = 8466\n\tERROR_DS_INSTALL_SCHEMA_MISMATCH                                          syscall.Errno = 8467\n\tERROR_DS_DUP_LINK_ID                                                      syscall.Errno = 8468\n\tERROR_DS_NAME_ERROR_RESOLVING                                             syscall.Errno = 8469\n\tERROR_DS_NAME_ERROR_NOT_FOUND                                             syscall.Errno = 8470\n\tERROR_DS_NAME_ERROR_NOT_UNIQUE                                            syscall.Errno = 8471\n\tERROR_DS_NAME_ERROR_NO_MAPPING                                            syscall.Errno = 8472\n\tERROR_DS_NAME_ERROR_DOMAIN_ONLY                                           syscall.Errno = 8473\n\tERROR_DS_NAME_ERROR_NO_SYNTACTICAL_MAPPING                                syscall.Errno = 8474\n\tERROR_DS_CONSTRUCTED_ATT_MOD                                              syscall.Errno = 8475\n\tERROR_DS_WRONG_OM_OBJ_CLASS                                               syscall.Errno = 8476\n\tERROR_DS_DRA_REPL_PENDING                                                 syscall.Errno = 8477\n\tERROR_DS_DS_REQUIRED                                                      syscall.Errno = 8478\n\tERROR_DS_INVALID_LDAP_DISPLAY_NAME                                        syscall.Errno = 8479\n\tERROR_DS_NON_BASE_SEARCH                                                  syscall.Errno = 8480\n\tERROR_DS_CANT_RETRIEVE_ATTS                                               syscall.Errno = 8481\n\tERROR_DS_BACKLINK_WITHOUT_LINK                                            syscall.Errno = 8482\n\tERROR_DS_EPOCH_MISMATCH                                                   syscall.Errno = 8483\n\tERROR_DS_SRC_NAME_MISMATCH                                                syscall.Errno = 8484\n\tERROR_DS_SRC_AND_DST_NC_IDENTICAL                                         syscall.Errno = 8485\n\tERROR_DS_DST_NC_MISMATCH                                                  syscall.Errno = 8486\n\tERROR_DS_NOT_AUTHORITIVE_FOR_DST_NC                                       syscall.Errno = 8487\n\tERROR_DS_SRC_GUID_MISMATCH                                                syscall.Errno = 8488\n\tERROR_DS_CANT_MOVE_DELETED_OBJECT                                         syscall.Errno = 8489\n\tERROR_DS_PDC_OPERATION_IN_PROGRESS                                        syscall.Errno = 8490\n\tERROR_DS_CROSS_DOMAIN_CLEANUP_REQD                                        syscall.Errno = 8491\n\tERROR_DS_ILLEGAL_XDOM_MOVE_OPERATION                                      syscall.Errno = 8492\n\tERROR_DS_CANT_WITH_ACCT_GROUP_MEMBERSHPS                                  syscall.Errno = 8493\n\tERROR_DS_NC_MUST_HAVE_NC_PARENT                                           syscall.Errno = 8494\n\tERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE                                        syscall.Errno = 8495\n\tERROR_DS_DST_DOMAIN_NOT_NATIVE                                            syscall.Errno = 8496\n\tERROR_DS_MISSING_INFRASTRUCTURE_CONTAINER                                 syscall.Errno = 8497\n\tERROR_DS_CANT_MOVE_ACCOUNT_GROUP                                          syscall.Errno = 8498\n\tERROR_DS_CANT_MOVE_RESOURCE_GROUP                                         syscall.Errno = 8499\n\tERROR_DS_INVALID_SEARCH_FLAG                                              syscall.Errno = 8500\n\tERROR_DS_NO_TREE_DELETE_ABOVE_NC                                          syscall.Errno = 8501\n\tERROR_DS_COULDNT_LOCK_TREE_FOR_DELETE                                     syscall.Errno = 8502\n\tERROR_DS_COULDNT_IDENTIFY_OBJECTS_FOR_TREE_DELETE                         syscall.Errno = 8503\n\tERROR_DS_SAM_INIT_FAILURE                                                 syscall.Errno = 8504\n\tERROR_DS_SENSITIVE_GROUP_VIOLATION                                        syscall.Errno = 8505\n\tERROR_DS_CANT_MOD_PRIMARYGROUPID                                          syscall.Errno = 8506\n\tERROR_DS_ILLEGAL_BASE_SCHEMA_MOD                                          syscall.Errno = 8507\n\tERROR_DS_NONSAFE_SCHEMA_CHANGE                                            syscall.Errno = 8508\n\tERROR_DS_SCHEMA_UPDATE_DISALLOWED                                         syscall.Errno = 8509\n\tERROR_DS_CANT_CREATE_UNDER_SCHEMA                                         syscall.Errno = 8510\n\tERROR_DS_INSTALL_NO_SRC_SCH_VERSION                                       syscall.Errno = 8511\n\tERROR_DS_INSTALL_NO_SCH_VERSION_IN_INIFILE                                syscall.Errno = 8512\n\tERROR_DS_INVALID_GROUP_TYPE                                               syscall.Errno = 8513\n\tERROR_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN                               syscall.Errno = 8514\n\tERROR_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN                                syscall.Errno = 8515\n\tERROR_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER                                    syscall.Errno = 8516\n\tERROR_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER                                syscall.Errno = 8517\n\tERROR_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER                                 syscall.Errno = 8518\n\tERROR_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER                              syscall.Errno = 8519\n\tERROR_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER                         syscall.Errno = 8520\n\tERROR_DS_HAVE_PRIMARY_MEMBERS                                             syscall.Errno = 8521\n\tERROR_DS_STRING_SD_CONVERSION_FAILED                                      syscall.Errno = 8522\n\tERROR_DS_NAMING_MASTER_GC                                                 syscall.Errno = 8523\n\tERROR_DS_DNS_LOOKUP_FAILURE                                               syscall.Errno = 8524\n\tERROR_DS_COULDNT_UPDATE_SPNS                                              syscall.Errno = 8525\n\tERROR_DS_CANT_RETRIEVE_SD                                                 syscall.Errno = 8526\n\tERROR_DS_KEY_NOT_UNIQUE                                                   syscall.Errno = 8527\n\tERROR_DS_WRONG_LINKED_ATT_SYNTAX                                          syscall.Errno = 8528\n\tERROR_DS_SAM_NEED_BOOTKEY_PASSWORD                                        syscall.Errno = 8529\n\tERROR_DS_SAM_NEED_BOOTKEY_FLOPPY                                          syscall.Errno = 8530\n\tERROR_DS_CANT_START                                                       syscall.Errno = 8531\n\tERROR_DS_INIT_FAILURE                                                     syscall.Errno = 8532\n\tERROR_DS_NO_PKT_PRIVACY_ON_CONNECTION                                     syscall.Errno = 8533\n\tERROR_DS_SOURCE_DOMAIN_IN_FOREST                                          syscall.Errno = 8534\n\tERROR_DS_DESTINATION_DOMAIN_NOT_IN_FOREST                                 syscall.Errno = 8535\n\tERROR_DS_DESTINATION_AUDITING_NOT_ENABLED                                 syscall.Errno = 8536\n\tERROR_DS_CANT_FIND_DC_FOR_SRC_DOMAIN                                      syscall.Errno = 8537\n\tERROR_DS_SRC_OBJ_NOT_GROUP_OR_USER                                        syscall.Errno = 8538\n\tERROR_DS_SRC_SID_EXISTS_IN_FOREST                                         syscall.Errno = 8539\n\tERROR_DS_SRC_AND_DST_OBJECT_CLASS_MISMATCH                                syscall.Errno = 8540\n\tERROR_SAM_INIT_FAILURE                                                    syscall.Errno = 8541\n\tERROR_DS_DRA_SCHEMA_INFO_SHIP                                             syscall.Errno = 8542\n\tERROR_DS_DRA_SCHEMA_CONFLICT                                              syscall.Errno = 8543\n\tERROR_DS_DRA_EARLIER_SCHEMA_CONFLICT                                      syscall.Errno = 8544\n\tERROR_DS_DRA_OBJ_NC_MISMATCH                                              syscall.Errno = 8545\n\tERROR_DS_NC_STILL_HAS_DSAS                                                syscall.Errno = 8546\n\tERROR_DS_GC_REQUIRED                                                      syscall.Errno = 8547\n\tERROR_DS_LOCAL_MEMBER_OF_LOCAL_ONLY                                       syscall.Errno = 8548\n\tERROR_DS_NO_FPO_IN_UNIVERSAL_GROUPS                                       syscall.Errno = 8549\n\tERROR_DS_CANT_ADD_TO_GC                                                   syscall.Errno = 8550\n\tERROR_DS_NO_CHECKPOINT_WITH_PDC                                           syscall.Errno = 8551\n\tERROR_DS_SOURCE_AUDITING_NOT_ENABLED                                      syscall.Errno = 8552\n\tERROR_DS_CANT_CREATE_IN_NONDOMAIN_NC                                      syscall.Errno = 8553\n\tERROR_DS_INVALID_NAME_FOR_SPN                                             syscall.Errno = 8554\n\tERROR_DS_FILTER_USES_CONTRUCTED_ATTRS                                     syscall.Errno = 8555\n\tERROR_DS_UNICODEPWD_NOT_IN_QUOTES                                         syscall.Errno = 8556\n\tERROR_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED                                   syscall.Errno = 8557\n\tERROR_DS_MUST_BE_RUN_ON_DST_DC                                            syscall.Errno = 8558\n\tERROR_DS_SRC_DC_MUST_BE_SP4_OR_GREATER                                    syscall.Errno = 8559\n\tERROR_DS_CANT_TREE_DELETE_CRITICAL_OBJ                                    syscall.Errno = 8560\n\tERROR_DS_INIT_FAILURE_CONSOLE                                             syscall.Errno = 8561\n\tERROR_DS_SAM_INIT_FAILURE_CONSOLE                                         syscall.Errno = 8562\n\tERROR_DS_FOREST_VERSION_TOO_HIGH                                          syscall.Errno = 8563\n\tERROR_DS_DOMAIN_VERSION_TOO_HIGH                                          syscall.Errno = 8564\n\tERROR_DS_FOREST_VERSION_TOO_LOW                                           syscall.Errno = 8565\n\tERROR_DS_DOMAIN_VERSION_TOO_LOW                                           syscall.Errno = 8566\n\tERROR_DS_INCOMPATIBLE_VERSION                                             syscall.Errno = 8567\n\tERROR_DS_LOW_DSA_VERSION                                                  syscall.Errno = 8568\n\tERROR_DS_NO_BEHAVIOR_VERSION_IN_MIXEDDOMAIN                               syscall.Errno = 8569\n\tERROR_DS_NOT_SUPPORTED_SORT_ORDER                                         syscall.Errno = 8570\n\tERROR_DS_NAME_NOT_UNIQUE                                                  syscall.Errno = 8571\n\tERROR_DS_MACHINE_ACCOUNT_CREATED_PRENT4                                   syscall.Errno = 8572\n\tERROR_DS_OUT_OF_VERSION_STORE                                             syscall.Errno = 8573\n\tERROR_DS_INCOMPATIBLE_CONTROLS_USED                                       syscall.Errno = 8574\n\tERROR_DS_NO_REF_DOMAIN                                                    syscall.Errno = 8575\n\tERROR_DS_RESERVED_LINK_ID                                                 syscall.Errno = 8576\n\tERROR_DS_LINK_ID_NOT_AVAILABLE                                            syscall.Errno = 8577\n\tERROR_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER                                    syscall.Errno = 8578\n\tERROR_DS_MODIFYDN_DISALLOWED_BY_INSTANCE_TYPE                             syscall.Errno = 8579\n\tERROR_DS_NO_OBJECT_MOVE_IN_SCHEMA_NC                                      syscall.Errno = 8580\n\tERROR_DS_MODIFYDN_DISALLOWED_BY_FLAG                                      syscall.Errno = 8581\n\tERROR_DS_MODIFYDN_WRONG_GRANDPARENT                                       syscall.Errno = 8582\n\tERROR_DS_NAME_ERROR_TRUST_REFERRAL                                        syscall.Errno = 8583\n\tERROR_NOT_SUPPORTED_ON_STANDARD_SERVER                                    syscall.Errno = 8584\n\tERROR_DS_CANT_ACCESS_REMOTE_PART_OF_AD                                    syscall.Errno = 8585\n\tERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE_V2                                     syscall.Errno = 8586\n\tERROR_DS_THREAD_LIMIT_EXCEEDED                                            syscall.Errno = 8587\n\tERROR_DS_NOT_CLOSEST                                                      syscall.Errno = 8588\n\tERROR_DS_CANT_DERIVE_SPN_WITHOUT_SERVER_REF                               syscall.Errno = 8589\n\tERROR_DS_SINGLE_USER_MODE_FAILED                                          syscall.Errno = 8590\n\tERROR_DS_NTDSCRIPT_SYNTAX_ERROR                                           syscall.Errno = 8591\n\tERROR_DS_NTDSCRIPT_PROCESS_ERROR                                          syscall.Errno = 8592\n\tERROR_DS_DIFFERENT_REPL_EPOCHS                                            syscall.Errno = 8593\n\tERROR_DS_DRS_EXTENSIONS_CHANGED                                           syscall.Errno = 8594\n\tERROR_DS_REPLICA_SET_CHANGE_NOT_ALLOWED_ON_DISABLED_CR                    syscall.Errno = 8595\n\tERROR_DS_NO_MSDS_INTID                                                    syscall.Errno = 8596\n\tERROR_DS_DUP_MSDS_INTID                                                   syscall.Errno = 8597\n\tERROR_DS_EXISTS_IN_RDNATTID                                               syscall.Errno = 8598\n\tERROR_DS_AUTHORIZATION_FAILED                                             syscall.Errno = 8599\n\tERROR_DS_INVALID_SCRIPT                                                   syscall.Errno = 8600\n\tERROR_DS_REMOTE_CROSSREF_OP_FAILED                                        syscall.Errno = 8601\n\tERROR_DS_CROSS_REF_BUSY                                                   syscall.Errno = 8602\n\tERROR_DS_CANT_DERIVE_SPN_FOR_DELETED_DOMAIN                               syscall.Errno = 8603\n\tERROR_DS_CANT_DEMOTE_WITH_WRITEABLE_NC                                    syscall.Errno = 8604\n\tERROR_DS_DUPLICATE_ID_FOUND                                               syscall.Errno = 8605\n\tERROR_DS_INSUFFICIENT_ATTR_TO_CREATE_OBJECT                               syscall.Errno = 8606\n\tERROR_DS_GROUP_CONVERSION_ERROR                                           syscall.Errno = 8607\n\tERROR_DS_CANT_MOVE_APP_BASIC_GROUP                                        syscall.Errno = 8608\n\tERROR_DS_CANT_MOVE_APP_QUERY_GROUP                                        syscall.Errno = 8609\n\tERROR_DS_ROLE_NOT_VERIFIED                                                syscall.Errno = 8610\n\tERROR_DS_WKO_CONTAINER_CANNOT_BE_SPECIAL                                  syscall.Errno = 8611\n\tERROR_DS_DOMAIN_RENAME_IN_PROGRESS                                        syscall.Errno = 8612\n\tERROR_DS_EXISTING_AD_CHILD_NC                                             syscall.Errno = 8613\n\tERROR_DS_REPL_LIFETIME_EXCEEDED                                           syscall.Errno = 8614\n\tERROR_DS_DISALLOWED_IN_SYSTEM_CONTAINER                                   syscall.Errno = 8615\n\tERROR_DS_LDAP_SEND_QUEUE_FULL                                             syscall.Errno = 8616\n\tERROR_DS_DRA_OUT_SCHEDULE_WINDOW                                          syscall.Errno = 8617\n\tERROR_DS_POLICY_NOT_KNOWN                                                 syscall.Errno = 8618\n\tERROR_NO_SITE_SETTINGS_OBJECT                                             syscall.Errno = 8619\n\tERROR_NO_SECRETS                                                          syscall.Errno = 8620\n\tERROR_NO_WRITABLE_DC_FOUND                                                syscall.Errno = 8621\n\tERROR_DS_NO_SERVER_OBJECT                                                 syscall.Errno = 8622\n\tERROR_DS_NO_NTDSA_OBJECT                                                  syscall.Errno = 8623\n\tERROR_DS_NON_ASQ_SEARCH                                                   syscall.Errno = 8624\n\tERROR_DS_AUDIT_FAILURE                                                    syscall.Errno = 8625\n\tERROR_DS_INVALID_SEARCH_FLAG_SUBTREE                                      syscall.Errno = 8626\n\tERROR_DS_INVALID_SEARCH_FLAG_TUPLE                                        syscall.Errno = 8627\n\tERROR_DS_HIERARCHY_TABLE_TOO_DEEP                                         syscall.Errno = 8628\n\tERROR_DS_DRA_CORRUPT_UTD_VECTOR                                           syscall.Errno = 8629\n\tERROR_DS_DRA_SECRETS_DENIED                                               syscall.Errno = 8630\n\tERROR_DS_RESERVED_MAPI_ID                                                 syscall.Errno = 8631\n\tERROR_DS_MAPI_ID_NOT_AVAILABLE                                            syscall.Errno = 8632\n\tERROR_DS_DRA_MISSING_KRBTGT_SECRET                                        syscall.Errno = 8633\n\tERROR_DS_DOMAIN_NAME_EXISTS_IN_FOREST                                     syscall.Errno = 8634\n\tERROR_DS_FLAT_NAME_EXISTS_IN_FOREST                                       syscall.Errno = 8635\n\tERROR_INVALID_USER_PRINCIPAL_NAME                                         syscall.Errno = 8636\n\tERROR_DS_OID_MAPPED_GROUP_CANT_HAVE_MEMBERS                               syscall.Errno = 8637\n\tERROR_DS_OID_NOT_FOUND                                                    syscall.Errno = 8638\n\tERROR_DS_DRA_RECYCLED_TARGET                                              syscall.Errno = 8639\n\tERROR_DS_DISALLOWED_NC_REDIRECT                                           syscall.Errno = 8640\n\tERROR_DS_HIGH_ADLDS_FFL                                                   syscall.Errno = 8641\n\tERROR_DS_HIGH_DSA_VERSION                                                 syscall.Errno = 8642\n\tERROR_DS_LOW_ADLDS_FFL                                                    syscall.Errno = 8643\n\tERROR_DOMAIN_SID_SAME_AS_LOCAL_WORKSTATION                                syscall.Errno = 8644\n\tERROR_DS_UNDELETE_SAM_VALIDATION_FAILED                                   syscall.Errno = 8645\n\tERROR_INCORRECT_ACCOUNT_TYPE                                              syscall.Errno = 8646\n\tERROR_DS_SPN_VALUE_NOT_UNIQUE_IN_FOREST                                   syscall.Errno = 8647\n\tERROR_DS_UPN_VALUE_NOT_UNIQUE_IN_FOREST                                   syscall.Errno = 8648\n\tERROR_DS_MISSING_FOREST_TRUST                                             syscall.Errno = 8649\n\tERROR_DS_VALUE_KEY_NOT_UNIQUE                                             syscall.Errno = 8650\n\tDNS_ERROR_RESPONSE_CODES_BASE                                             syscall.Errno = 9000\n\tDNS_ERROR_RCODE_NO_ERROR                                                                = ERROR_SUCCESS\n\tDNS_ERROR_MASK                                                            syscall.Errno = 0x00002328\n\tDNS_ERROR_RCODE_FORMAT_ERROR                                              syscall.Errno = 9001\n\tDNS_ERROR_RCODE_SERVER_FAILURE                                            syscall.Errno = 9002\n\tDNS_ERROR_RCODE_NAME_ERROR                                                syscall.Errno = 9003\n\tDNS_ERROR_RCODE_NOT_IMPLEMENTED                                           syscall.Errno = 9004\n\tDNS_ERROR_RCODE_REFUSED                                                   syscall.Errno = 9005\n\tDNS_ERROR_RCODE_YXDOMAIN                                                  syscall.Errno = 9006\n\tDNS_ERROR_RCODE_YXRRSET                                                   syscall.Errno = 9007\n\tDNS_ERROR_RCODE_NXRRSET                                                   syscall.Errno = 9008\n\tDNS_ERROR_RCODE_NOTAUTH                                                   syscall.Errno = 9009\n\tDNS_ERROR_RCODE_NOTZONE                                                   syscall.Errno = 9010\n\tDNS_ERROR_RCODE_BADSIG                                                    syscall.Errno = 9016\n\tDNS_ERROR_RCODE_BADKEY                                                    syscall.Errno = 9017\n\tDNS_ERROR_RCODE_BADTIME                                                   syscall.Errno = 9018\n\tDNS_ERROR_RCODE_LAST                                                                    = DNS_ERROR_RCODE_BADTIME\n\tDNS_ERROR_DNSSEC_BASE                                                     syscall.Errno = 9100\n\tDNS_ERROR_KEYMASTER_REQUIRED                                              syscall.Errno = 9101\n\tDNS_ERROR_NOT_ALLOWED_ON_SIGNED_ZONE                                      syscall.Errno = 9102\n\tDNS_ERROR_NSEC3_INCOMPATIBLE_WITH_RSA_SHA1                                syscall.Errno = 9103\n\tDNS_ERROR_NOT_ENOUGH_SIGNING_KEY_DESCRIPTORS                              syscall.Errno = 9104\n\tDNS_ERROR_UNSUPPORTED_ALGORITHM                                           syscall.Errno = 9105\n\tDNS_ERROR_INVALID_KEY_SIZE                                                syscall.Errno = 9106\n\tDNS_ERROR_SIGNING_KEY_NOT_ACCESSIBLE                                      syscall.Errno = 9107\n\tDNS_ERROR_KSP_DOES_NOT_SUPPORT_PROTECTION                                 syscall.Errno = 9108\n\tDNS_ERROR_UNEXPECTED_DATA_PROTECTION_ERROR                                syscall.Errno = 9109\n\tDNS_ERROR_UNEXPECTED_CNG_ERROR                                            syscall.Errno = 9110\n\tDNS_ERROR_UNKNOWN_SIGNING_PARAMETER_VERSION                               syscall.Errno = 9111\n\tDNS_ERROR_KSP_NOT_ACCESSIBLE                                              syscall.Errno = 9112\n\tDNS_ERROR_TOO_MANY_SKDS                                                   syscall.Errno = 9113\n\tDNS_ERROR_INVALID_ROLLOVER_PERIOD                                         syscall.Errno = 9114\n\tDNS_ERROR_INVALID_INITIAL_ROLLOVER_OFFSET                                 syscall.Errno = 9115\n\tDNS_ERROR_ROLLOVER_IN_PROGRESS                                            syscall.Errno = 9116\n\tDNS_ERROR_STANDBY_KEY_NOT_PRESENT                                         syscall.Errno = 9117\n\tDNS_ERROR_NOT_ALLOWED_ON_ZSK                                              syscall.Errno = 9118\n\tDNS_ERROR_NOT_ALLOWED_ON_ACTIVE_SKD                                       syscall.Errno = 9119\n\tDNS_ERROR_ROLLOVER_ALREADY_QUEUED                                         syscall.Errno = 9120\n\tDNS_ERROR_NOT_ALLOWED_ON_UNSIGNED_ZONE                                    syscall.Errno = 9121\n\tDNS_ERROR_BAD_KEYMASTER                                                   syscall.Errno = 9122\n\tDNS_ERROR_INVALID_SIGNATURE_VALIDITY_PERIOD                               syscall.Errno = 9123\n\tDNS_ERROR_INVALID_NSEC3_ITERATION_COUNT                                   syscall.Errno = 9124\n\tDNS_ERROR_DNSSEC_IS_DISABLED                                              syscall.Errno = 9125\n\tDNS_ERROR_INVALID_XML                                                     syscall.Errno = 9126\n\tDNS_ERROR_NO_VALID_TRUST_ANCHORS                                          syscall.Errno = 9127\n\tDNS_ERROR_ROLLOVER_NOT_POKEABLE                                           syscall.Errno = 9128\n\tDNS_ERROR_NSEC3_NAME_COLLISION                                            syscall.Errno = 9129\n\tDNS_ERROR_NSEC_INCOMPATIBLE_WITH_NSEC3_RSA_SHA1                           syscall.Errno = 9130\n\tDNS_ERROR_PACKET_FMT_BASE                                                 syscall.Errno = 9500\n\tDNS_INFO_NO_RECORDS                                                       syscall.Errno = 9501\n\tDNS_ERROR_BAD_PACKET                                                      syscall.Errno = 9502\n\tDNS_ERROR_NO_PACKET                                                       syscall.Errno = 9503\n\tDNS_ERROR_RCODE                                                           syscall.Errno = 9504\n\tDNS_ERROR_UNSECURE_PACKET                                                 syscall.Errno = 9505\n\tDNS_STATUS_PACKET_UNSECURE                                                              = DNS_ERROR_UNSECURE_PACKET\n\tDNS_REQUEST_PENDING                                                       syscall.Errno = 9506\n\tDNS_ERROR_NO_MEMORY                                                                     = ERROR_OUTOFMEMORY\n\tDNS_ERROR_INVALID_NAME                                                                  = ERROR_INVALID_NAME\n\tDNS_ERROR_INVALID_DATA                                                                  = ERROR_INVALID_DATA\n\tDNS_ERROR_GENERAL_API_BASE                                                syscall.Errno = 9550\n\tDNS_ERROR_INVALID_TYPE                                                    syscall.Errno = 9551\n\tDNS_ERROR_INVALID_IP_ADDRESS                                              syscall.Errno = 9552\n\tDNS_ERROR_INVALID_PROPERTY                                                syscall.Errno = 9553\n\tDNS_ERROR_TRY_AGAIN_LATER                                                 syscall.Errno = 9554\n\tDNS_ERROR_NOT_UNIQUE                                                      syscall.Errno = 9555\n\tDNS_ERROR_NON_RFC_NAME                                                    syscall.Errno = 9556\n\tDNS_STATUS_FQDN                                                           syscall.Errno = 9557\n\tDNS_STATUS_DOTTED_NAME                                                    syscall.Errno = 9558\n\tDNS_STATUS_SINGLE_PART_NAME                                               syscall.Errno = 9559\n\tDNS_ERROR_INVALID_NAME_CHAR                                               syscall.Errno = 9560\n\tDNS_ERROR_NUMERIC_NAME                                                    syscall.Errno = 9561\n\tDNS_ERROR_NOT_ALLOWED_ON_ROOT_SERVER                                      syscall.Errno = 9562\n\tDNS_ERROR_NOT_ALLOWED_UNDER_DELEGATION                                    syscall.Errno = 9563\n\tDNS_ERROR_CANNOT_FIND_ROOT_HINTS                                          syscall.Errno = 9564\n\tDNS_ERROR_INCONSISTENT_ROOT_HINTS                                         syscall.Errno = 9565\n\tDNS_ERROR_DWORD_VALUE_TOO_SMALL                                           syscall.Errno = 9566\n\tDNS_ERROR_DWORD_VALUE_TOO_LARGE                                           syscall.Errno = 9567\n\tDNS_ERROR_BACKGROUND_LOADING                                              syscall.Errno = 9568\n\tDNS_ERROR_NOT_ALLOWED_ON_RODC                                             syscall.Errno = 9569\n\tDNS_ERROR_NOT_ALLOWED_UNDER_DNAME                                         syscall.Errno = 9570\n\tDNS_ERROR_DELEGATION_REQUIRED                                             syscall.Errno = 9571\n\tDNS_ERROR_INVALID_POLICY_TABLE                                            syscall.Errno = 9572\n\tDNS_ERROR_ADDRESS_REQUIRED                                                syscall.Errno = 9573\n\tDNS_ERROR_ZONE_BASE                                                       syscall.Errno = 9600\n\tDNS_ERROR_ZONE_DOES_NOT_EXIST                                             syscall.Errno = 9601\n\tDNS_ERROR_NO_ZONE_INFO                                                    syscall.Errno = 9602\n\tDNS_ERROR_INVALID_ZONE_OPERATION                                          syscall.Errno = 9603\n\tDNS_ERROR_ZONE_CONFIGURATION_ERROR                                        syscall.Errno = 9604\n\tDNS_ERROR_ZONE_HAS_NO_SOA_RECORD                                          syscall.Errno = 9605\n\tDNS_ERROR_ZONE_HAS_NO_NS_RECORDS                                          syscall.Errno = 9606\n\tDNS_ERROR_ZONE_LOCKED                                                     syscall.Errno = 9607\n\tDNS_ERROR_ZONE_CREATION_FAILED                                            syscall.Errno = 9608\n\tDNS_ERROR_ZONE_ALREADY_EXISTS                                             syscall.Errno = 9609\n\tDNS_ERROR_AUTOZONE_ALREADY_EXISTS                                         syscall.Errno = 9610\n\tDNS_ERROR_INVALID_ZONE_TYPE                                               syscall.Errno = 9611\n\tDNS_ERROR_SECONDARY_REQUIRES_MASTER_IP                                    syscall.Errno = 9612\n\tDNS_ERROR_ZONE_NOT_SECONDARY                                              syscall.Errno = 9613\n\tDNS_ERROR_NEED_SECONDARY_ADDRESSES                                        syscall.Errno = 9614\n\tDNS_ERROR_WINS_INIT_FAILED                                                syscall.Errno = 9615\n\tDNS_ERROR_NEED_WINS_SERVERS                                               syscall.Errno = 9616\n\tDNS_ERROR_NBSTAT_INIT_FAILED                                              syscall.Errno = 9617\n\tDNS_ERROR_SOA_DELETE_INVALID                                              syscall.Errno = 9618\n\tDNS_ERROR_FORWARDER_ALREADY_EXISTS                                        syscall.Errno = 9619\n\tDNS_ERROR_ZONE_REQUIRES_MASTER_IP                                         syscall.Errno = 9620\n\tDNS_ERROR_ZONE_IS_SHUTDOWN                                                syscall.Errno = 9621\n\tDNS_ERROR_ZONE_LOCKED_FOR_SIGNING                                         syscall.Errno = 9622\n\tDNS_ERROR_DATAFILE_BASE                                                   syscall.Errno = 9650\n\tDNS_ERROR_PRIMARY_REQUIRES_DATAFILE                                       syscall.Errno = 9651\n\tDNS_ERROR_INVALID_DATAFILE_NAME                                           syscall.Errno = 9652\n\tDNS_ERROR_DATAFILE_OPEN_FAILURE                                           syscall.Errno = 9653\n\tDNS_ERROR_FILE_WRITEBACK_FAILED                                           syscall.Errno = 9654\n\tDNS_ERROR_DATAFILE_PARSING                                                syscall.Errno = 9655\n\tDNS_ERROR_DATABASE_BASE                                                   syscall.Errno = 9700\n\tDNS_ERROR_RECORD_DOES_NOT_EXIST                                           syscall.Errno = 9701\n\tDNS_ERROR_RECORD_FORMAT                                                   syscall.Errno = 9702\n\tDNS_ERROR_NODE_CREATION_FAILED                                            syscall.Errno = 9703\n\tDNS_ERROR_UNKNOWN_RECORD_TYPE                                             syscall.Errno = 9704\n\tDNS_ERROR_RECORD_TIMED_OUT                                                syscall.Errno = 9705\n\tDNS_ERROR_NAME_NOT_IN_ZONE                                                syscall.Errno = 9706\n\tDNS_ERROR_CNAME_LOOP                                                      syscall.Errno = 9707\n\tDNS_ERROR_NODE_IS_CNAME                                                   syscall.Errno = 9708\n\tDNS_ERROR_CNAME_COLLISION                                                 syscall.Errno = 9709\n\tDNS_ERROR_RECORD_ONLY_AT_ZONE_ROOT                                        syscall.Errno = 9710\n\tDNS_ERROR_RECORD_ALREADY_EXISTS                                           syscall.Errno = 9711\n\tDNS_ERROR_SECONDARY_DATA                                                  syscall.Errno = 9712\n\tDNS_ERROR_NO_CREATE_CACHE_DATA                                            syscall.Errno = 9713\n\tDNS_ERROR_NAME_DOES_NOT_EXIST                                             syscall.Errno = 9714\n\tDNS_WARNING_PTR_CREATE_FAILED                                             syscall.Errno = 9715\n\tDNS_WARNING_DOMAIN_UNDELETED                                              syscall.Errno = 9716\n\tDNS_ERROR_DS_UNAVAILABLE                                                  syscall.Errno = 9717\n\tDNS_ERROR_DS_ZONE_ALREADY_EXISTS                                          syscall.Errno = 9718\n\tDNS_ERROR_NO_BOOTFILE_IF_DS_ZONE                                          syscall.Errno = 9719\n\tDNS_ERROR_NODE_IS_DNAME                                                   syscall.Errno = 9720\n\tDNS_ERROR_DNAME_COLLISION                                                 syscall.Errno = 9721\n\tDNS_ERROR_ALIAS_LOOP                                                      syscall.Errno = 9722\n\tDNS_ERROR_OPERATION_BASE                                                  syscall.Errno = 9750\n\tDNS_INFO_AXFR_COMPLETE                                                    syscall.Errno = 9751\n\tDNS_ERROR_AXFR                                                            syscall.Errno = 9752\n\tDNS_INFO_ADDED_LOCAL_WINS                                                 syscall.Errno = 9753\n\tDNS_ERROR_SECURE_BASE                                                     syscall.Errno = 9800\n\tDNS_STATUS_CONTINUE_NEEDED                                                syscall.Errno = 9801\n\tDNS_ERROR_SETUP_BASE                                                      syscall.Errno = 9850\n\tDNS_ERROR_NO_TCPIP                                                        syscall.Errno = 9851\n\tDNS_ERROR_NO_DNS_SERVERS                                                  syscall.Errno = 9852\n\tDNS_ERROR_DP_BASE                                                         syscall.Errno = 9900\n\tDNS_ERROR_DP_DOES_NOT_EXIST                                               syscall.Errno = 9901\n\tDNS_ERROR_DP_ALREADY_EXISTS                                               syscall.Errno = 9902\n\tDNS_ERROR_DP_NOT_ENLISTED                                                 syscall.Errno = 9903\n\tDNS_ERROR_DP_ALREADY_ENLISTED                                             syscall.Errno = 9904\n\tDNS_ERROR_DP_NOT_AVAILABLE                                                syscall.Errno = 9905\n\tDNS_ERROR_DP_FSMO_ERROR                                                   syscall.Errno = 9906\n\tDNS_ERROR_RRL_NOT_ENABLED                                                 syscall.Errno = 9911\n\tDNS_ERROR_RRL_INVALID_WINDOW_SIZE                                         syscall.Errno = 9912\n\tDNS_ERROR_RRL_INVALID_IPV4_PREFIX                                         syscall.Errno = 9913\n\tDNS_ERROR_RRL_INVALID_IPV6_PREFIX                                         syscall.Errno = 9914\n\tDNS_ERROR_RRL_INVALID_TC_RATE                                             syscall.Errno = 9915\n\tDNS_ERROR_RRL_INVALID_LEAK_RATE                                           syscall.Errno = 9916\n\tDNS_ERROR_RRL_LEAK_RATE_LESSTHAN_TC_RATE                                  syscall.Errno = 9917\n\tDNS_ERROR_VIRTUALIZATION_INSTANCE_ALREADY_EXISTS                          syscall.Errno = 9921\n\tDNS_ERROR_VIRTUALIZATION_INSTANCE_DOES_NOT_EXIST                          syscall.Errno = 9922\n\tDNS_ERROR_VIRTUALIZATION_TREE_LOCKED                                      syscall.Errno = 9923\n\tDNS_ERROR_INVAILD_VIRTUALIZATION_INSTANCE_NAME                            syscall.Errno = 9924\n\tDNS_ERROR_DEFAULT_VIRTUALIZATION_INSTANCE                                 syscall.Errno = 9925\n\tDNS_ERROR_ZONESCOPE_ALREADY_EXISTS                                        syscall.Errno = 9951\n\tDNS_ERROR_ZONESCOPE_DOES_NOT_EXIST                                        syscall.Errno = 9952\n\tDNS_ERROR_DEFAULT_ZONESCOPE                                               syscall.Errno = 9953\n\tDNS_ERROR_INVALID_ZONESCOPE_NAME                                          syscall.Errno = 9954\n\tDNS_ERROR_NOT_ALLOWED_WITH_ZONESCOPES                                     syscall.Errno = 9955\n\tDNS_ERROR_LOAD_ZONESCOPE_FAILED                                           syscall.Errno = 9956\n\tDNS_ERROR_ZONESCOPE_FILE_WRITEBACK_FAILED                                 syscall.Errno = 9957\n\tDNS_ERROR_INVALID_SCOPE_NAME                                              syscall.Errno = 9958\n\tDNS_ERROR_SCOPE_DOES_NOT_EXIST                                            syscall.Errno = 9959\n\tDNS_ERROR_DEFAULT_SCOPE                                                   syscall.Errno = 9960\n\tDNS_ERROR_INVALID_SCOPE_OPERATION                                         syscall.Errno = 9961\n\tDNS_ERROR_SCOPE_LOCKED                                                    syscall.Errno = 9962\n\tDNS_ERROR_SCOPE_ALREADY_EXISTS                                            syscall.Errno = 9963\n\tDNS_ERROR_POLICY_ALREADY_EXISTS                                           syscall.Errno = 9971\n\tDNS_ERROR_POLICY_DOES_NOT_EXIST                                           syscall.Errno = 9972\n\tDNS_ERROR_POLICY_INVALID_CRITERIA                                         syscall.Errno = 9973\n\tDNS_ERROR_POLICY_INVALID_SETTINGS                                         syscall.Errno = 9974\n\tDNS_ERROR_CLIENT_SUBNET_IS_ACCESSED                                       syscall.Errno = 9975\n\tDNS_ERROR_CLIENT_SUBNET_DOES_NOT_EXIST                                    syscall.Errno = 9976\n\tDNS_ERROR_CLIENT_SUBNET_ALREADY_EXISTS                                    syscall.Errno = 9977\n\tDNS_ERROR_SUBNET_DOES_NOT_EXIST                                           syscall.Errno = 9978\n\tDNS_ERROR_SUBNET_ALREADY_EXISTS                                           syscall.Errno = 9979\n\tDNS_ERROR_POLICY_LOCKED                                                   syscall.Errno = 9980\n\tDNS_ERROR_POLICY_INVALID_WEIGHT                                           syscall.Errno = 9981\n\tDNS_ERROR_POLICY_INVALID_NAME                                             syscall.Errno = 9982\n\tDNS_ERROR_POLICY_MISSING_CRITERIA                                         syscall.Errno = 9983\n\tDNS_ERROR_INVALID_CLIENT_SUBNET_NAME                                      syscall.Errno = 9984\n\tDNS_ERROR_POLICY_PROCESSING_ORDER_INVALID                                 syscall.Errno = 9985\n\tDNS_ERROR_POLICY_SCOPE_MISSING                                            syscall.Errno = 9986\n\tDNS_ERROR_POLICY_SCOPE_NOT_ALLOWED                                        syscall.Errno = 9987\n\tDNS_ERROR_SERVERSCOPE_IS_REFERENCED                                       syscall.Errno = 9988\n\tDNS_ERROR_ZONESCOPE_IS_REFERENCED                                         syscall.Errno = 9989\n\tDNS_ERROR_POLICY_INVALID_CRITERIA_CLIENT_SUBNET                           syscall.Errno = 9990\n\tDNS_ERROR_POLICY_INVALID_CRITERIA_TRANSPORT_PROTOCOL                      syscall.Errno = 9991\n\tDNS_ERROR_POLICY_INVALID_CRITERIA_NETWORK_PROTOCOL                        syscall.Errno = 9992\n\tDNS_ERROR_POLICY_INVALID_CRITERIA_INTERFACE                               syscall.Errno = 9993\n\tDNS_ERROR_POLICY_INVALID_CRITERIA_FQDN                                    syscall.Errno = 9994\n\tDNS_ERROR_POLICY_INVALID_CRITERIA_QUERY_TYPE                              syscall.Errno = 9995\n\tDNS_ERROR_POLICY_INVALID_CRITERIA_TIME_OF_DAY                             syscall.Errno = 9996\n\tWSABASEERR                                                                syscall.Errno = 10000\n\tWSAEINTR                                                                  syscall.Errno = 10004\n\tWSAEBADF                                                                  syscall.Errno = 10009\n\tWSAEACCES                                                                 syscall.Errno = 10013\n\tWSAEFAULT                                                                 syscall.Errno = 10014\n\tWSAEINVAL                                                                 syscall.Errno = 10022\n\tWSAEMFILE                                                                 syscall.Errno = 10024\n\tWSAEWOULDBLOCK                                                            syscall.Errno = 10035\n\tWSAEINPROGRESS                                                            syscall.Errno = 10036\n\tWSAEALREADY                                                               syscall.Errno = 10037\n\tWSAENOTSOCK                                                               syscall.Errno = 10038\n\tWSAEDESTADDRREQ                                                           syscall.Errno = 10039\n\tWSAEMSGSIZE                                                               syscall.Errno = 10040\n\tWSAEPROTOTYPE                                                             syscall.Errno = 10041\n\tWSAENOPROTOOPT                                                            syscall.Errno = 10042\n\tWSAEPROTONOSUPPORT                                                        syscall.Errno = 10043\n\tWSAESOCKTNOSUPPORT                                                        syscall.Errno = 10044\n\tWSAEOPNOTSUPP                                                             syscall.Errno = 10045\n\tWSAEPFNOSUPPORT                                                           syscall.Errno = 10046\n\tWSAEAFNOSUPPORT                                                           syscall.Errno = 10047\n\tWSAEADDRINUSE                                                             syscall.Errno = 10048\n\tWSAEADDRNOTAVAIL                                                          syscall.Errno = 10049\n\tWSAENETDOWN                                                               syscall.Errno = 10050\n\tWSAENETUNREACH                                                            syscall.Errno = 10051\n\tWSAENETRESET                                                              syscall.Errno = 10052\n\tWSAECONNABORTED                                                           syscall.Errno = 10053\n\tWSAECONNRESET                                                             syscall.Errno = 10054\n\tWSAENOBUFS                                                                syscall.Errno = 10055\n\tWSAEISCONN                                                                syscall.Errno = 10056\n\tWSAENOTCONN                                                               syscall.Errno = 10057\n\tWSAESHUTDOWN                                                              syscall.Errno = 10058\n\tWSAETOOMANYREFS                                                           syscall.Errno = 10059\n\tWSAETIMEDOUT                                                              syscall.Errno = 10060\n\tWSAECONNREFUSED                                                           syscall.Errno = 10061\n\tWSAELOOP                                                                  syscall.Errno = 10062\n\tWSAENAMETOOLONG                                                           syscall.Errno = 10063\n\tWSAEHOSTDOWN                                                              syscall.Errno = 10064\n\tWSAEHOSTUNREACH                                                           syscall.Errno = 10065\n\tWSAENOTEMPTY                                                              syscall.Errno = 10066\n\tWSAEPROCLIM                                                               syscall.Errno = 10067\n\tWSAEUSERS                                                                 syscall.Errno = 10068\n\tWSAEDQUOT                                                                 syscall.Errno = 10069\n\tWSAESTALE                                                                 syscall.Errno = 10070\n\tWSAEREMOTE                                                                syscall.Errno = 10071\n\tWSASYSNOTREADY                                                            syscall.Errno = 10091\n\tWSAVERNOTSUPPORTED                                                        syscall.Errno = 10092\n\tWSANOTINITIALISED                                                         syscall.Errno = 10093\n\tWSAEDISCON                                                                syscall.Errno = 10101\n\tWSAENOMORE                                                                syscall.Errno = 10102\n\tWSAECANCELLED                                                             syscall.Errno = 10103\n\tWSAEINVALIDPROCTABLE                                                      syscall.Errno = 10104\n\tWSAEINVALIDPROVIDER                                                       syscall.Errno = 10105\n\tWSAEPROVIDERFAILEDINIT                                                    syscall.Errno = 10106\n\tWSASYSCALLFAILURE                                                         syscall.Errno = 10107\n\tWSASERVICE_NOT_FOUND                                                      syscall.Errno = 10108\n\tWSATYPE_NOT_FOUND                                                         syscall.Errno = 10109\n\tWSA_E_NO_MORE                                                             syscall.Errno = 10110\n\tWSA_E_CANCELLED                                                           syscall.Errno = 10111\n\tWSAEREFUSED                                                               syscall.Errno = 10112\n\tWSAHOST_NOT_FOUND                                                         syscall.Errno = 11001\n\tWSATRY_AGAIN                                                              syscall.Errno = 11002\n\tWSANO_RECOVERY                                                            syscall.Errno = 11003\n\tWSANO_DATA                                                                syscall.Errno = 11004\n\tWSA_QOS_RECEIVERS                                                         syscall.Errno = 11005\n\tWSA_QOS_SENDERS                                                           syscall.Errno = 11006\n\tWSA_QOS_NO_SENDERS                                                        syscall.Errno = 11007\n\tWSA_QOS_NO_RECEIVERS                                                      syscall.Errno = 11008\n\tWSA_QOS_REQUEST_CONFIRMED                                                 syscall.Errno = 11009\n\tWSA_QOS_ADMISSION_FAILURE                                                 syscall.Errno = 11010\n\tWSA_QOS_POLICY_FAILURE                                                    syscall.Errno = 11011\n\tWSA_QOS_BAD_STYLE                                                         syscall.Errno = 11012\n\tWSA_QOS_BAD_OBJECT                                                        syscall.Errno = 11013\n\tWSA_QOS_TRAFFIC_CTRL_ERROR                                                syscall.Errno = 11014\n\tWSA_QOS_GENERIC_ERROR                                                     syscall.Errno = 11015\n\tWSA_QOS_ESERVICETYPE                                                      syscall.Errno = 11016\n\tWSA_QOS_EFLOWSPEC                                                         syscall.Errno = 11017\n\tWSA_QOS_EPROVSPECBUF                                                      syscall.Errno = 11018\n\tWSA_QOS_EFILTERSTYLE                                                      syscall.Errno = 11019\n\tWSA_QOS_EFILTERTYPE                                                       syscall.Errno = 11020\n\tWSA_QOS_EFILTERCOUNT                                                      syscall.Errno = 11021\n\tWSA_QOS_EOBJLENGTH                                                        syscall.Errno = 11022\n\tWSA_QOS_EFLOWCOUNT                                                        syscall.Errno = 11023\n\tWSA_QOS_EUNKOWNPSOBJ                                                      syscall.Errno = 11024\n\tWSA_QOS_EPOLICYOBJ                                                        syscall.Errno = 11025\n\tWSA_QOS_EFLOWDESC                                                         syscall.Errno = 11026\n\tWSA_QOS_EPSFLOWSPEC                                                       syscall.Errno = 11027\n\tWSA_QOS_EPSFILTERSPEC                                                     syscall.Errno = 11028\n\tWSA_QOS_ESDMODEOBJ                                                        syscall.Errno = 11029\n\tWSA_QOS_ESHAPERATEOBJ                                                     syscall.Errno = 11030\n\tWSA_QOS_RESERVED_PETYPE                                                   syscall.Errno = 11031\n\tWSA_SECURE_HOST_NOT_FOUND                                                 syscall.Errno = 11032\n\tWSA_IPSEC_NAME_POLICY_ERROR                                               syscall.Errno = 11033\n\tERROR_IPSEC_QM_POLICY_EXISTS                                              syscall.Errno = 13000\n\tERROR_IPSEC_QM_POLICY_NOT_FOUND                                           syscall.Errno = 13001\n\tERROR_IPSEC_QM_POLICY_IN_USE                                              syscall.Errno = 13002\n\tERROR_IPSEC_MM_POLICY_EXISTS                                              syscall.Errno = 13003\n\tERROR_IPSEC_MM_POLICY_NOT_FOUND                                           syscall.Errno = 13004\n\tERROR_IPSEC_MM_POLICY_IN_USE                                              syscall.Errno = 13005\n\tERROR_IPSEC_MM_FILTER_EXISTS                                              syscall.Errno = 13006\n\tERROR_IPSEC_MM_FILTER_NOT_FOUND                                           syscall.Errno = 13007\n\tERROR_IPSEC_TRANSPORT_FILTER_EXISTS                                       syscall.Errno = 13008\n\tERROR_IPSEC_TRANSPORT_FILTER_NOT_FOUND                                    syscall.Errno = 13009\n\tERROR_IPSEC_MM_AUTH_EXISTS                                                syscall.Errno = 13010\n\tERROR_IPSEC_MM_AUTH_NOT_FOUND                                             syscall.Errno = 13011\n\tERROR_IPSEC_MM_AUTH_IN_USE                                                syscall.Errno = 13012\n\tERROR_IPSEC_DEFAULT_MM_POLICY_NOT_FOUND                                   syscall.Errno = 13013\n\tERROR_IPSEC_DEFAULT_MM_AUTH_NOT_FOUND                                     syscall.Errno = 13014\n\tERROR_IPSEC_DEFAULT_QM_POLICY_NOT_FOUND                                   syscall.Errno = 13015\n\tERROR_IPSEC_TUNNEL_FILTER_EXISTS                                          syscall.Errno = 13016\n\tERROR_IPSEC_TUNNEL_FILTER_NOT_FOUND                                       syscall.Errno = 13017\n\tERROR_IPSEC_MM_FILTER_PENDING_DELETION                                    syscall.Errno = 13018\n\tERROR_IPSEC_TRANSPORT_FILTER_PENDING_DELETION                             syscall.Errno = 13019\n\tERROR_IPSEC_TUNNEL_FILTER_PENDING_DELETION                                syscall.Errno = 13020\n\tERROR_IPSEC_MM_POLICY_PENDING_DELETION                                    syscall.Errno = 13021\n\tERROR_IPSEC_MM_AUTH_PENDING_DELETION                                      syscall.Errno = 13022\n\tERROR_IPSEC_QM_POLICY_PENDING_DELETION                                    syscall.Errno = 13023\n\tWARNING_IPSEC_MM_POLICY_PRUNED                                            syscall.Errno = 13024\n\tWARNING_IPSEC_QM_POLICY_PRUNED                                            syscall.Errno = 13025\n\tERROR_IPSEC_IKE_NEG_STATUS_BEGIN                                          syscall.Errno = 13800\n\tERROR_IPSEC_IKE_AUTH_FAIL                                                 syscall.Errno = 13801\n\tERROR_IPSEC_IKE_ATTRIB_FAIL                                               syscall.Errno = 13802\n\tERROR_IPSEC_IKE_NEGOTIATION_PENDING                                       syscall.Errno = 13803\n\tERROR_IPSEC_IKE_GENERAL_PROCESSING_ERROR                                  syscall.Errno = 13804\n\tERROR_IPSEC_IKE_TIMED_OUT                                                 syscall.Errno = 13805\n\tERROR_IPSEC_IKE_NO_CERT                                                   syscall.Errno = 13806\n\tERROR_IPSEC_IKE_SA_DELETED                                                syscall.Errno = 13807\n\tERROR_IPSEC_IKE_SA_REAPED                                                 syscall.Errno = 13808\n\tERROR_IPSEC_IKE_MM_ACQUIRE_DROP                                           syscall.Errno = 13809\n\tERROR_IPSEC_IKE_QM_ACQUIRE_DROP                                           syscall.Errno = 13810\n\tERROR_IPSEC_IKE_QUEUE_DROP_MM                                             syscall.Errno = 13811\n\tERROR_IPSEC_IKE_QUEUE_DROP_NO_MM                                          syscall.Errno = 13812\n\tERROR_IPSEC_IKE_DROP_NO_RESPONSE                                          syscall.Errno = 13813\n\tERROR_IPSEC_IKE_MM_DELAY_DROP                                             syscall.Errno = 13814\n\tERROR_IPSEC_IKE_QM_DELAY_DROP                                             syscall.Errno = 13815\n\tERROR_IPSEC_IKE_ERROR                                                     syscall.Errno = 13816\n\tERROR_IPSEC_IKE_CRL_FAILED                                                syscall.Errno = 13817\n\tERROR_IPSEC_IKE_INVALID_KEY_USAGE                                         syscall.Errno = 13818\n\tERROR_IPSEC_IKE_INVALID_CERT_TYPE                                         syscall.Errno = 13819\n\tERROR_IPSEC_IKE_NO_PRIVATE_KEY                                            syscall.Errno = 13820\n\tERROR_IPSEC_IKE_SIMULTANEOUS_REKEY                                        syscall.Errno = 13821\n\tERROR_IPSEC_IKE_DH_FAIL                                                   syscall.Errno = 13822\n\tERROR_IPSEC_IKE_CRITICAL_PAYLOAD_NOT_RECOGNIZED                           syscall.Errno = 13823\n\tERROR_IPSEC_IKE_INVALID_HEADER                                            syscall.Errno = 13824\n\tERROR_IPSEC_IKE_NO_POLICY                                                 syscall.Errno = 13825\n\tERROR_IPSEC_IKE_INVALID_SIGNATURE                                         syscall.Errno = 13826\n\tERROR_IPSEC_IKE_KERBEROS_ERROR                                            syscall.Errno = 13827\n\tERROR_IPSEC_IKE_NO_PUBLIC_KEY                                             syscall.Errno = 13828\n\tERROR_IPSEC_IKE_PROCESS_ERR                                               syscall.Errno = 13829\n\tERROR_IPSEC_IKE_PROCESS_ERR_SA                                            syscall.Errno = 13830\n\tERROR_IPSEC_IKE_PROCESS_ERR_PROP                                          syscall.Errno = 13831\n\tERROR_IPSEC_IKE_PROCESS_ERR_TRANS                                         syscall.Errno = 13832\n\tERROR_IPSEC_IKE_PROCESS_ERR_KE                                            syscall.Errno = 13833\n\tERROR_IPSEC_IKE_PROCESS_ERR_ID                                            syscall.Errno = 13834\n\tERROR_IPSEC_IKE_PROCESS_ERR_CERT                                          syscall.Errno = 13835\n\tERROR_IPSEC_IKE_PROCESS_ERR_CERT_REQ                                      syscall.Errno = 13836\n\tERROR_IPSEC_IKE_PROCESS_ERR_HASH                                          syscall.Errno = 13837\n\tERROR_IPSEC_IKE_PROCESS_ERR_SIG                                           syscall.Errno = 13838\n\tERROR_IPSEC_IKE_PROCESS_ERR_NONCE                                         syscall.Errno = 13839\n\tERROR_IPSEC_IKE_PROCESS_ERR_NOTIFY                                        syscall.Errno = 13840\n\tERROR_IPSEC_IKE_PROCESS_ERR_DELETE                                        syscall.Errno = 13841\n\tERROR_IPSEC_IKE_PROCESS_ERR_VENDOR                                        syscall.Errno = 13842\n\tERROR_IPSEC_IKE_INVALID_PAYLOAD                                           syscall.Errno = 13843\n\tERROR_IPSEC_IKE_LOAD_SOFT_SA                                              syscall.Errno = 13844\n\tERROR_IPSEC_IKE_SOFT_SA_TORN_DOWN                                         syscall.Errno = 13845\n\tERROR_IPSEC_IKE_INVALID_COOKIE                                            syscall.Errno = 13846\n\tERROR_IPSEC_IKE_NO_PEER_CERT                                              syscall.Errno = 13847\n\tERROR_IPSEC_IKE_PEER_CRL_FAILED                                           syscall.Errno = 13848\n\tERROR_IPSEC_IKE_POLICY_CHANGE                                             syscall.Errno = 13849\n\tERROR_IPSEC_IKE_NO_MM_POLICY                                              syscall.Errno = 13850\n\tERROR_IPSEC_IKE_NOTCBPRIV                                                 syscall.Errno = 13851\n\tERROR_IPSEC_IKE_SECLOADFAIL                                               syscall.Errno = 13852\n\tERROR_IPSEC_IKE_FAILSSPINIT                                               syscall.Errno = 13853\n\tERROR_IPSEC_IKE_FAILQUERYSSP                                              syscall.Errno = 13854\n\tERROR_IPSEC_IKE_SRVACQFAIL                                                syscall.Errno = 13855\n\tERROR_IPSEC_IKE_SRVQUERYCRED                                              syscall.Errno = 13856\n\tERROR_IPSEC_IKE_GETSPIFAIL                                                syscall.Errno = 13857\n\tERROR_IPSEC_IKE_INVALID_FILTER                                            syscall.Errno = 13858\n\tERROR_IPSEC_IKE_OUT_OF_MEMORY                                             syscall.Errno = 13859\n\tERROR_IPSEC_IKE_ADD_UPDATE_KEY_FAILED                                     syscall.Errno = 13860\n\tERROR_IPSEC_IKE_INVALID_POLICY                                            syscall.Errno = 13861\n\tERROR_IPSEC_IKE_UNKNOWN_DOI                                               syscall.Errno = 13862\n\tERROR_IPSEC_IKE_INVALID_SITUATION                                         syscall.Errno = 13863\n\tERROR_IPSEC_IKE_DH_FAILURE                                                syscall.Errno = 13864\n\tERROR_IPSEC_IKE_INVALID_GROUP                                             syscall.Errno = 13865\n\tERROR_IPSEC_IKE_ENCRYPT                                                   syscall.Errno = 13866\n\tERROR_IPSEC_IKE_DECRYPT                                                   syscall.Errno = 13867\n\tERROR_IPSEC_IKE_POLICY_MATCH                                              syscall.Errno = 13868\n\tERROR_IPSEC_IKE_UNSUPPORTED_ID                                            syscall.Errno = 13869\n\tERROR_IPSEC_IKE_INVALID_HASH                                              syscall.Errno = 13870\n\tERROR_IPSEC_IKE_INVALID_HASH_ALG                                          syscall.Errno = 13871\n\tERROR_IPSEC_IKE_INVALID_HASH_SIZE                                         syscall.Errno = 13872\n\tERROR_IPSEC_IKE_INVALID_ENCRYPT_ALG                                       syscall.Errno = 13873\n\tERROR_IPSEC_IKE_INVALID_AUTH_ALG                                          syscall.Errno = 13874\n\tERROR_IPSEC_IKE_INVALID_SIG                                               syscall.Errno = 13875\n\tERROR_IPSEC_IKE_LOAD_FAILED                                               syscall.Errno = 13876\n\tERROR_IPSEC_IKE_RPC_DELETE                                                syscall.Errno = 13877\n\tERROR_IPSEC_IKE_BENIGN_REINIT                                             syscall.Errno = 13878\n\tERROR_IPSEC_IKE_INVALID_RESPONDER_LIFETIME_NOTIFY                         syscall.Errno = 13879\n\tERROR_IPSEC_IKE_INVALID_MAJOR_VERSION                                     syscall.Errno = 13880\n\tERROR_IPSEC_IKE_INVALID_CERT_KEYLEN                                       syscall.Errno = 13881\n\tERROR_IPSEC_IKE_MM_LIMIT                                                  syscall.Errno = 13882\n\tERROR_IPSEC_IKE_NEGOTIATION_DISABLED                                      syscall.Errno = 13883\n\tERROR_IPSEC_IKE_QM_LIMIT                                                  syscall.Errno = 13884\n\tERROR_IPSEC_IKE_MM_EXPIRED                                                syscall.Errno = 13885\n\tERROR_IPSEC_IKE_PEER_MM_ASSUMED_INVALID                                   syscall.Errno = 13886\n\tERROR_IPSEC_IKE_CERT_CHAIN_POLICY_MISMATCH                                syscall.Errno = 13887\n\tERROR_IPSEC_IKE_UNEXPECTED_MESSAGE_ID                                     syscall.Errno = 13888\n\tERROR_IPSEC_IKE_INVALID_AUTH_PAYLOAD                                      syscall.Errno = 13889\n\tERROR_IPSEC_IKE_DOS_COOKIE_SENT                                           syscall.Errno = 13890\n\tERROR_IPSEC_IKE_SHUTTING_DOWN                                             syscall.Errno = 13891\n\tERROR_IPSEC_IKE_CGA_AUTH_FAILED                                           syscall.Errno = 13892\n\tERROR_IPSEC_IKE_PROCESS_ERR_NATOA                                         syscall.Errno = 13893\n\tERROR_IPSEC_IKE_INVALID_MM_FOR_QM                                         syscall.Errno = 13894\n\tERROR_IPSEC_IKE_QM_EXPIRED                                                syscall.Errno = 13895\n\tERROR_IPSEC_IKE_TOO_MANY_FILTERS                                          syscall.Errno = 13896\n\tERROR_IPSEC_IKE_NEG_STATUS_END                                            syscall.Errno = 13897\n\tERROR_IPSEC_IKE_KILL_DUMMY_NAP_TUNNEL                                     syscall.Errno = 13898\n\tERROR_IPSEC_IKE_INNER_IP_ASSIGNMENT_FAILURE                               syscall.Errno = 13899\n\tERROR_IPSEC_IKE_REQUIRE_CP_PAYLOAD_MISSING                                syscall.Errno = 13900\n\tERROR_IPSEC_KEY_MODULE_IMPERSONATION_NEGOTIATION_PENDING                  syscall.Errno = 13901\n\tERROR_IPSEC_IKE_COEXISTENCE_SUPPRESS                                      syscall.Errno = 13902\n\tERROR_IPSEC_IKE_RATELIMIT_DROP                                            syscall.Errno = 13903\n\tERROR_IPSEC_IKE_PEER_DOESNT_SUPPORT_MOBIKE                                syscall.Errno = 13904\n\tERROR_IPSEC_IKE_AUTHORIZATION_FAILURE                                     syscall.Errno = 13905\n\tERROR_IPSEC_IKE_STRONG_CRED_AUTHORIZATION_FAILURE                         syscall.Errno = 13906\n\tERROR_IPSEC_IKE_AUTHORIZATION_FAILURE_WITH_OPTIONAL_RETRY                 syscall.Errno = 13907\n\tERROR_IPSEC_IKE_STRONG_CRED_AUTHORIZATION_AND_CERTMAP_FAILURE             syscall.Errno = 13908\n\tERROR_IPSEC_IKE_NEG_STATUS_EXTENDED_END                                   syscall.Errno = 13909\n\tERROR_IPSEC_BAD_SPI                                                       syscall.Errno = 13910\n\tERROR_IPSEC_SA_LIFETIME_EXPIRED                                           syscall.Errno = 13911\n\tERROR_IPSEC_WRONG_SA                                                      syscall.Errno = 13912\n\tERROR_IPSEC_REPLAY_CHECK_FAILED                                           syscall.Errno = 13913\n\tERROR_IPSEC_INVALID_PACKET                                                syscall.Errno = 13914\n\tERROR_IPSEC_INTEGRITY_CHECK_FAILED                                        syscall.Errno = 13915\n\tERROR_IPSEC_CLEAR_TEXT_DROP                                               syscall.Errno = 13916\n\tERROR_IPSEC_AUTH_FIREWALL_DROP                                            syscall.Errno = 13917\n\tERROR_IPSEC_THROTTLE_DROP                                                 syscall.Errno = 13918\n\tERROR_IPSEC_DOSP_BLOCK                                                    syscall.Errno = 13925\n\tERROR_IPSEC_DOSP_RECEIVED_MULTICAST                                       syscall.Errno = 13926\n\tERROR_IPSEC_DOSP_INVALID_PACKET                                           syscall.Errno = 13927\n\tERROR_IPSEC_DOSP_STATE_LOOKUP_FAILED                                      syscall.Errno = 13928\n\tERROR_IPSEC_DOSP_MAX_ENTRIES                                              syscall.Errno = 13929\n\tERROR_IPSEC_DOSP_KEYMOD_NOT_ALLOWED                                       syscall.Errno = 13930\n\tERROR_IPSEC_DOSP_NOT_INSTALLED                                            syscall.Errno = 13931\n\tERROR_IPSEC_DOSP_MAX_PER_IP_RATELIMIT_QUEUES                              syscall.Errno = 13932\n\tERROR_SXS_SECTION_NOT_FOUND                                               syscall.Errno = 14000\n\tERROR_SXS_CANT_GEN_ACTCTX                                                 syscall.Errno = 14001\n\tERROR_SXS_INVALID_ACTCTXDATA_FORMAT                                       syscall.Errno = 14002\n\tERROR_SXS_ASSEMBLY_NOT_FOUND                                              syscall.Errno = 14003\n\tERROR_SXS_MANIFEST_FORMAT_ERROR                                           syscall.Errno = 14004\n\tERROR_SXS_MANIFEST_PARSE_ERROR                                            syscall.Errno = 14005\n\tERROR_SXS_ACTIVATION_CONTEXT_DISABLED                                     syscall.Errno = 14006\n\tERROR_SXS_KEY_NOT_FOUND                                                   syscall.Errno = 14007\n\tERROR_SXS_VERSION_CONFLICT                                                syscall.Errno = 14008\n\tERROR_SXS_WRONG_SECTION_TYPE                                              syscall.Errno = 14009\n\tERROR_SXS_THREAD_QUERIES_DISABLED                                         syscall.Errno = 14010\n\tERROR_SXS_PROCESS_DEFAULT_ALREADY_SET                                     syscall.Errno = 14011\n\tERROR_SXS_UNKNOWN_ENCODING_GROUP                                          syscall.Errno = 14012\n\tERROR_SXS_UNKNOWN_ENCODING                                                syscall.Errno = 14013\n\tERROR_SXS_INVALID_XML_NAMESPACE_URI                                       syscall.Errno = 14014\n\tERROR_SXS_ROOT_MANIFEST_DEPENDENCY_NOT_INSTALLED                          syscall.Errno = 14015\n\tERROR_SXS_LEAF_MANIFEST_DEPENDENCY_NOT_INSTALLED                          syscall.Errno = 14016\n\tERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE                             syscall.Errno = 14017\n\tERROR_SXS_MANIFEST_MISSING_REQUIRED_DEFAULT_NAMESPACE                     syscall.Errno = 14018\n\tERROR_SXS_MANIFEST_INVALID_REQUIRED_DEFAULT_NAMESPACE                     syscall.Errno = 14019\n\tERROR_SXS_PRIVATE_MANIFEST_CROSS_PATH_WITH_REPARSE_POINT                  syscall.Errno = 14020\n\tERROR_SXS_DUPLICATE_DLL_NAME                                              syscall.Errno = 14021\n\tERROR_SXS_DUPLICATE_WINDOWCLASS_NAME                                      syscall.Errno = 14022\n\tERROR_SXS_DUPLICATE_CLSID                                                 syscall.Errno = 14023\n\tERROR_SXS_DUPLICATE_IID                                                   syscall.Errno = 14024\n\tERROR_SXS_DUPLICATE_TLBID                                                 syscall.Errno = 14025\n\tERROR_SXS_DUPLICATE_PROGID                                                syscall.Errno = 14026\n\tERROR_SXS_DUPLICATE_ASSEMBLY_NAME                                         syscall.Errno = 14027\n\tERROR_SXS_FILE_HASH_MISMATCH                                              syscall.Errno = 14028\n\tERROR_SXS_POLICY_PARSE_ERROR                                              syscall.Errno = 14029\n\tERROR_SXS_XML_E_MISSINGQUOTE                                              syscall.Errno = 14030\n\tERROR_SXS_XML_E_COMMENTSYNTAX                                             syscall.Errno = 14031\n\tERROR_SXS_XML_E_BADSTARTNAMECHAR                                          syscall.Errno = 14032\n\tERROR_SXS_XML_E_BADNAMECHAR                                               syscall.Errno = 14033\n\tERROR_SXS_XML_E_BADCHARINSTRING                                           syscall.Errno = 14034\n\tERROR_SXS_XML_E_XMLDECLSYNTAX                                             syscall.Errno = 14035\n\tERROR_SXS_XML_E_BADCHARDATA                                               syscall.Errno = 14036\n\tERROR_SXS_XML_E_MISSINGWHITESPACE                                         syscall.Errno = 14037\n\tERROR_SXS_XML_E_EXPECTINGTAGEND                                           syscall.Errno = 14038\n\tERROR_SXS_XML_E_MISSINGSEMICOLON                                          syscall.Errno = 14039\n\tERROR_SXS_XML_E_UNBALANCEDPAREN                                           syscall.Errno = 14040\n\tERROR_SXS_XML_E_INTERNALERROR                                             syscall.Errno = 14041\n\tERROR_SXS_XML_E_UNEXPECTED_WHITESPACE                                     syscall.Errno = 14042\n\tERROR_SXS_XML_E_INCOMPLETE_ENCODING                                       syscall.Errno = 14043\n\tERROR_SXS_XML_E_MISSING_PAREN                                             syscall.Errno = 14044\n\tERROR_SXS_XML_E_EXPECTINGCLOSEQUOTE                                       syscall.Errno = 14045\n\tERROR_SXS_XML_E_MULTIPLE_COLONS                                           syscall.Errno = 14046\n\tERROR_SXS_XML_E_INVALID_DECIMAL                                           syscall.Errno = 14047\n\tERROR_SXS_XML_E_INVALID_HEXIDECIMAL                                       syscall.Errno = 14048\n\tERROR_SXS_XML_E_INVALID_UNICODE                                           syscall.Errno = 14049\n\tERROR_SXS_XML_E_WHITESPACEORQUESTIONMARK                                  syscall.Errno = 14050\n\tERROR_SXS_XML_E_UNEXPECTEDENDTAG                                          syscall.Errno = 14051\n\tERROR_SXS_XML_E_UNCLOSEDTAG                                               syscall.Errno = 14052\n\tERROR_SXS_XML_E_DUPLICATEATTRIBUTE                                        syscall.Errno = 14053\n\tERROR_SXS_XML_E_MULTIPLEROOTS                                             syscall.Errno = 14054\n\tERROR_SXS_XML_E_INVALIDATROOTLEVEL                                        syscall.Errno = 14055\n\tERROR_SXS_XML_E_BADXMLDECL                                                syscall.Errno = 14056\n\tERROR_SXS_XML_E_MISSINGROOT                                               syscall.Errno = 14057\n\tERROR_SXS_XML_E_UNEXPECTEDEOF                                             syscall.Errno = 14058\n\tERROR_SXS_XML_E_BADPEREFINSUBSET                                          syscall.Errno = 14059\n\tERROR_SXS_XML_E_UNCLOSEDSTARTTAG                                          syscall.Errno = 14060\n\tERROR_SXS_XML_E_UNCLOSEDENDTAG                                            syscall.Errno = 14061\n\tERROR_SXS_XML_E_UNCLOSEDSTRING                                            syscall.Errno = 14062\n\tERROR_SXS_XML_E_UNCLOSEDCOMMENT                                           syscall.Errno = 14063\n\tERROR_SXS_XML_E_UNCLOSEDDECL                                              syscall.Errno = 14064\n\tERROR_SXS_XML_E_UNCLOSEDCDATA                                             syscall.Errno = 14065\n\tERROR_SXS_XML_E_RESERVEDNAMESPACE                                         syscall.Errno = 14066\n\tERROR_SXS_XML_E_INVALIDENCODING                                           syscall.Errno = 14067\n\tERROR_SXS_XML_E_INVALIDSWITCH                                             syscall.Errno = 14068\n\tERROR_SXS_XML_E_BADXMLCASE                                                syscall.Errno = 14069\n\tERROR_SXS_XML_E_INVALID_STANDALONE                                        syscall.Errno = 14070\n\tERROR_SXS_XML_E_UNEXPECTED_STANDALONE                                     syscall.Errno = 14071\n\tERROR_SXS_XML_E_INVALID_VERSION                                           syscall.Errno = 14072\n\tERROR_SXS_XML_E_MISSINGEQUALS                                             syscall.Errno = 14073\n\tERROR_SXS_PROTECTION_RECOVERY_FAILED                                      syscall.Errno = 14074\n\tERROR_SXS_PROTECTION_PUBLIC_KEY_TOO_SHORT                                 syscall.Errno = 14075\n\tERROR_SXS_PROTECTION_CATALOG_NOT_VALID                                    syscall.Errno = 14076\n\tERROR_SXS_UNTRANSLATABLE_HRESULT                                          syscall.Errno = 14077\n\tERROR_SXS_PROTECTION_CATALOG_FILE_MISSING                                 syscall.Errno = 14078\n\tERROR_SXS_MISSING_ASSEMBLY_IDENTITY_ATTRIBUTE                             syscall.Errno = 14079\n\tERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE_NAME                        syscall.Errno = 14080\n\tERROR_SXS_ASSEMBLY_MISSING                                                syscall.Errno = 14081\n\tERROR_SXS_CORRUPT_ACTIVATION_STACK                                        syscall.Errno = 14082\n\tERROR_SXS_CORRUPTION                                                      syscall.Errno = 14083\n\tERROR_SXS_EARLY_DEACTIVATION                                              syscall.Errno = 14084\n\tERROR_SXS_INVALID_DEACTIVATION                                            syscall.Errno = 14085\n\tERROR_SXS_MULTIPLE_DEACTIVATION                                           syscall.Errno = 14086\n\tERROR_SXS_PROCESS_TERMINATION_REQUESTED                                   syscall.Errno = 14087\n\tERROR_SXS_RELEASE_ACTIVATION_CONTEXT                                      syscall.Errno = 14088\n\tERROR_SXS_SYSTEM_DEFAULT_ACTIVATION_CONTEXT_EMPTY                         syscall.Errno = 14089\n\tERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_VALUE                                syscall.Errno = 14090\n\tERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_NAME                                 syscall.Errno = 14091\n\tERROR_SXS_IDENTITY_DUPLICATE_ATTRIBUTE                                    syscall.Errno = 14092\n\tERROR_SXS_IDENTITY_PARSE_ERROR                                            syscall.Errno = 14093\n\tERROR_MALFORMED_SUBSTITUTION_STRING                                       syscall.Errno = 14094\n\tERROR_SXS_INCORRECT_PUBLIC_KEY_TOKEN                                      syscall.Errno = 14095\n\tERROR_UNMAPPED_SUBSTITUTION_STRING                                        syscall.Errno = 14096\n\tERROR_SXS_ASSEMBLY_NOT_LOCKED                                             syscall.Errno = 14097\n\tERROR_SXS_COMPONENT_STORE_CORRUPT                                         syscall.Errno = 14098\n\tERROR_ADVANCED_INSTALLER_FAILED                                           syscall.Errno = 14099\n\tERROR_XML_ENCODING_MISMATCH                                               syscall.Errno = 14100\n\tERROR_SXS_MANIFEST_IDENTITY_SAME_BUT_CONTENTS_DIFFERENT                   syscall.Errno = 14101\n\tERROR_SXS_IDENTITIES_DIFFERENT                                            syscall.Errno = 14102\n\tERROR_SXS_ASSEMBLY_IS_NOT_A_DEPLOYMENT                                    syscall.Errno = 14103\n\tERROR_SXS_FILE_NOT_PART_OF_ASSEMBLY                                       syscall.Errno = 14104\n\tERROR_SXS_MANIFEST_TOO_BIG                                                syscall.Errno = 14105\n\tERROR_SXS_SETTING_NOT_REGISTERED                                          syscall.Errno = 14106\n\tERROR_SXS_TRANSACTION_CLOSURE_INCOMPLETE                                  syscall.Errno = 14107\n\tERROR_SMI_PRIMITIVE_INSTALLER_FAILED                                      syscall.Errno = 14108\n\tERROR_GENERIC_COMMAND_FAILED                                              syscall.Errno = 14109\n\tERROR_SXS_FILE_HASH_MISSING                                               syscall.Errno = 14110\n\tERROR_SXS_DUPLICATE_ACTIVATABLE_CLASS                                     syscall.Errno = 14111\n\tERROR_EVT_INVALID_CHANNEL_PATH                                            syscall.Errno = 15000\n\tERROR_EVT_INVALID_QUERY                                                   syscall.Errno = 15001\n\tERROR_EVT_PUBLISHER_METADATA_NOT_FOUND                                    syscall.Errno = 15002\n\tERROR_EVT_EVENT_TEMPLATE_NOT_FOUND                                        syscall.Errno = 15003\n\tERROR_EVT_INVALID_PUBLISHER_NAME                                          syscall.Errno = 15004\n\tERROR_EVT_INVALID_EVENT_DATA                                              syscall.Errno = 15005\n\tERROR_EVT_CHANNEL_NOT_FOUND                                               syscall.Errno = 15007\n\tERROR_EVT_MALFORMED_XML_TEXT                                              syscall.Errno = 15008\n\tERROR_EVT_SUBSCRIPTION_TO_DIRECT_CHANNEL                                  syscall.Errno = 15009\n\tERROR_EVT_CONFIGURATION_ERROR                                             syscall.Errno = 15010\n\tERROR_EVT_QUERY_RESULT_STALE                                              syscall.Errno = 15011\n\tERROR_EVT_QUERY_RESULT_INVALID_POSITION                                   syscall.Errno = 15012\n\tERROR_EVT_NON_VALIDATING_MSXML                                            syscall.Errno = 15013\n\tERROR_EVT_FILTER_ALREADYSCOPED                                            syscall.Errno = 15014\n\tERROR_EVT_FILTER_NOTELTSET                                                syscall.Errno = 15015\n\tERROR_EVT_FILTER_INVARG                                                   syscall.Errno = 15016\n\tERROR_EVT_FILTER_INVTEST                                                  syscall.Errno = 15017\n\tERROR_EVT_FILTER_INVTYPE                                                  syscall.Errno = 15018\n\tERROR_EVT_FILTER_PARSEERR                                                 syscall.Errno = 15019\n\tERROR_EVT_FILTER_UNSUPPORTEDOP                                            syscall.Errno = 15020\n\tERROR_EVT_FILTER_UNEXPECTEDTOKEN                                          syscall.Errno = 15021\n\tERROR_EVT_INVALID_OPERATION_OVER_ENABLED_DIRECT_CHANNEL                   syscall.Errno = 15022\n\tERROR_EVT_INVALID_CHANNEL_PROPERTY_VALUE                                  syscall.Errno = 15023\n\tERROR_EVT_INVALID_PUBLISHER_PROPERTY_VALUE                                syscall.Errno = 15024\n\tERROR_EVT_CHANNEL_CANNOT_ACTIVATE                                         syscall.Errno = 15025\n\tERROR_EVT_FILTER_TOO_COMPLEX                                              syscall.Errno = 15026\n\tERROR_EVT_MESSAGE_NOT_FOUND                                               syscall.Errno = 15027\n\tERROR_EVT_MESSAGE_ID_NOT_FOUND                                            syscall.Errno = 15028\n\tERROR_EVT_UNRESOLVED_VALUE_INSERT                                         syscall.Errno = 15029\n\tERROR_EVT_UNRESOLVED_PARAMETER_INSERT                                     syscall.Errno = 15030\n\tERROR_EVT_MAX_INSERTS_REACHED                                             syscall.Errno = 15031\n\tERROR_EVT_EVENT_DEFINITION_NOT_FOUND                                      syscall.Errno = 15032\n\tERROR_EVT_MESSAGE_LOCALE_NOT_FOUND                                        syscall.Errno = 15033\n\tERROR_EVT_VERSION_TOO_OLD                                                 syscall.Errno = 15034\n\tERROR_EVT_VERSION_TOO_NEW                                                 syscall.Errno = 15035\n\tERROR_EVT_CANNOT_OPEN_CHANNEL_OF_QUERY                                    syscall.Errno = 15036\n\tERROR_EVT_PUBLISHER_DISABLED                                              syscall.Errno = 15037\n\tERROR_EVT_FILTER_OUT_OF_RANGE                                             syscall.Errno = 15038\n\tERROR_EC_SUBSCRIPTION_CANNOT_ACTIVATE                                     syscall.Errno = 15080\n\tERROR_EC_LOG_DISABLED                                                     syscall.Errno = 15081\n\tERROR_EC_CIRCULAR_FORWARDING                                              syscall.Errno = 15082\n\tERROR_EC_CREDSTORE_FULL                                                   syscall.Errno = 15083\n\tERROR_EC_CRED_NOT_FOUND                                                   syscall.Errno = 15084\n\tERROR_EC_NO_ACTIVE_CHANNEL                                                syscall.Errno = 15085\n\tERROR_MUI_FILE_NOT_FOUND                                                  syscall.Errno = 15100\n\tERROR_MUI_INVALID_FILE                                                    syscall.Errno = 15101\n\tERROR_MUI_INVALID_RC_CONFIG                                               syscall.Errno = 15102\n\tERROR_MUI_INVALID_LOCALE_NAME                                             syscall.Errno = 15103\n\tERROR_MUI_INVALID_ULTIMATEFALLBACK_NAME                                   syscall.Errno = 15104\n\tERROR_MUI_FILE_NOT_LOADED                                                 syscall.Errno = 15105\n\tERROR_RESOURCE_ENUM_USER_STOP                                             syscall.Errno = 15106\n\tERROR_MUI_INTLSETTINGS_UILANG_NOT_INSTALLED                               syscall.Errno = 15107\n\tERROR_MUI_INTLSETTINGS_INVALID_LOCALE_NAME                                syscall.Errno = 15108\n\tERROR_MRM_RUNTIME_NO_DEFAULT_OR_NEUTRAL_RESOURCE                          syscall.Errno = 15110\n\tERROR_MRM_INVALID_PRICONFIG                                               syscall.Errno = 15111\n\tERROR_MRM_INVALID_FILE_TYPE                                               syscall.Errno = 15112\n\tERROR_MRM_UNKNOWN_QUALIFIER                                               syscall.Errno = 15113\n\tERROR_MRM_INVALID_QUALIFIER_VALUE                                         syscall.Errno = 15114\n\tERROR_MRM_NO_CANDIDATE                                                    syscall.Errno = 15115\n\tERROR_MRM_NO_MATCH_OR_DEFAULT_CANDIDATE                                   syscall.Errno = 15116\n\tERROR_MRM_RESOURCE_TYPE_MISMATCH                                          syscall.Errno = 15117\n\tERROR_MRM_DUPLICATE_MAP_NAME                                              syscall.Errno = 15118\n\tERROR_MRM_DUPLICATE_ENTRY                                                 syscall.Errno = 15119\n\tERROR_MRM_INVALID_RESOURCE_IDENTIFIER                                     syscall.Errno = 15120\n\tERROR_MRM_FILEPATH_TOO_LONG                                               syscall.Errno = 15121\n\tERROR_MRM_UNSUPPORTED_DIRECTORY_TYPE                                      syscall.Errno = 15122\n\tERROR_MRM_INVALID_PRI_FILE                                                syscall.Errno = 15126\n\tERROR_MRM_NAMED_RESOURCE_NOT_FOUND                                        syscall.Errno = 15127\n\tERROR_MRM_MAP_NOT_FOUND                                                   syscall.Errno = 15135\n\tERROR_MRM_UNSUPPORTED_PROFILE_TYPE                                        syscall.Errno = 15136\n\tERROR_MRM_INVALID_QUALIFIER_OPERATOR                                      syscall.Errno = 15137\n\tERROR_MRM_INDETERMINATE_QUALIFIER_VALUE                                   syscall.Errno = 15138\n\tERROR_MRM_AUTOMERGE_ENABLED                                               syscall.Errno = 15139\n\tERROR_MRM_TOO_MANY_RESOURCES                                              syscall.Errno = 15140\n\tERROR_MRM_UNSUPPORTED_FILE_TYPE_FOR_MERGE                                 syscall.Errno = 15141\n\tERROR_MRM_UNSUPPORTED_FILE_TYPE_FOR_LOAD_UNLOAD_PRI_FILE                  syscall.Errno = 15142\n\tERROR_MRM_NO_CURRENT_VIEW_ON_THREAD                                       syscall.Errno = 15143\n\tERROR_DIFFERENT_PROFILE_RESOURCE_MANAGER_EXIST                            syscall.Errno = 15144\n\tERROR_OPERATION_NOT_ALLOWED_FROM_SYSTEM_COMPONENT                         syscall.Errno = 15145\n\tERROR_MRM_DIRECT_REF_TO_NON_DEFAULT_RESOURCE                              syscall.Errno = 15146\n\tERROR_MRM_GENERATION_COUNT_MISMATCH                                       syscall.Errno = 15147\n\tERROR_PRI_MERGE_VERSION_MISMATCH                                          syscall.Errno = 15148\n\tERROR_PRI_MERGE_MISSING_SCHEMA                                            syscall.Errno = 15149\n\tERROR_PRI_MERGE_LOAD_FILE_FAILED                                          syscall.Errno = 15150\n\tERROR_PRI_MERGE_ADD_FILE_FAILED                                           syscall.Errno = 15151\n\tERROR_PRI_MERGE_WRITE_FILE_FAILED                                         syscall.Errno = 15152\n\tERROR_PRI_MERGE_MULTIPLE_PACKAGE_FAMILIES_NOT_ALLOWED                     syscall.Errno = 15153\n\tERROR_PRI_MERGE_MULTIPLE_MAIN_PACKAGES_NOT_ALLOWED                        syscall.Errno = 15154\n\tERROR_PRI_MERGE_BUNDLE_PACKAGES_NOT_ALLOWED                               syscall.Errno = 15155\n\tERROR_PRI_MERGE_MAIN_PACKAGE_REQUIRED                                     syscall.Errno = 15156\n\tERROR_PRI_MERGE_RESOURCE_PACKAGE_REQUIRED                                 syscall.Errno = 15157\n\tERROR_PRI_MERGE_INVALID_FILE_NAME                                         syscall.Errno = 15158\n\tERROR_MRM_PACKAGE_NOT_FOUND                                               syscall.Errno = 15159\n\tERROR_MRM_MISSING_DEFAULT_LANGUAGE                                        syscall.Errno = 15160\n\tERROR_MCA_INVALID_CAPABILITIES_STRING                                     syscall.Errno = 15200\n\tERROR_MCA_INVALID_VCP_VERSION                                             syscall.Errno = 15201\n\tERROR_MCA_MONITOR_VIOLATES_MCCS_SPECIFICATION                             syscall.Errno = 15202\n\tERROR_MCA_MCCS_VERSION_MISMATCH                                           syscall.Errno = 15203\n\tERROR_MCA_UNSUPPORTED_MCCS_VERSION                                        syscall.Errno = 15204\n\tERROR_MCA_INTERNAL_ERROR                                                  syscall.Errno = 15205\n\tERROR_MCA_INVALID_TECHNOLOGY_TYPE_RETURNED                                syscall.Errno = 15206\n\tERROR_MCA_UNSUPPORTED_COLOR_TEMPERATURE                                   syscall.Errno = 15207\n\tERROR_AMBIGUOUS_SYSTEM_DEVICE                                             syscall.Errno = 15250\n\tERROR_SYSTEM_DEVICE_NOT_FOUND                                             syscall.Errno = 15299\n\tERROR_HASH_NOT_SUPPORTED                                                  syscall.Errno = 15300\n\tERROR_HASH_NOT_PRESENT                                                    syscall.Errno = 15301\n\tERROR_SECONDARY_IC_PROVIDER_NOT_REGISTERED                                syscall.Errno = 15321\n\tERROR_GPIO_CLIENT_INFORMATION_INVALID                                     syscall.Errno = 15322\n\tERROR_GPIO_VERSION_NOT_SUPPORTED                                          syscall.Errno = 15323\n\tERROR_GPIO_INVALID_REGISTRATION_PACKET                                    syscall.Errno = 15324\n\tERROR_GPIO_OPERATION_DENIED                                               syscall.Errno = 15325\n\tERROR_GPIO_INCOMPATIBLE_CONNECT_MODE                                      syscall.Errno = 15326\n\tERROR_GPIO_INTERRUPT_ALREADY_UNMASKED                                     syscall.Errno = 15327\n\tERROR_CANNOT_SWITCH_RUNLEVEL                                              syscall.Errno = 15400\n\tERROR_INVALID_RUNLEVEL_SETTING                                            syscall.Errno = 15401\n\tERROR_RUNLEVEL_SWITCH_TIMEOUT                                             syscall.Errno = 15402\n\tERROR_RUNLEVEL_SWITCH_AGENT_TIMEOUT                                       syscall.Errno = 15403\n\tERROR_RUNLEVEL_SWITCH_IN_PROGRESS                                         syscall.Errno = 15404\n\tERROR_SERVICES_FAILED_AUTOSTART                                           syscall.Errno = 15405\n\tERROR_COM_TASK_STOP_PENDING                                               syscall.Errno = 15501\n\tERROR_INSTALL_OPEN_PACKAGE_FAILED                                         syscall.Errno = 15600\n\tERROR_INSTALL_PACKAGE_NOT_FOUND                                           syscall.Errno = 15601\n\tERROR_INSTALL_INVALID_PACKAGE                                             syscall.Errno = 15602\n\tERROR_INSTALL_RESOLVE_DEPENDENCY_FAILED                                   syscall.Errno = 15603\n\tERROR_INSTALL_OUT_OF_DISK_SPACE                                           syscall.Errno = 15604\n\tERROR_INSTALL_NETWORK_FAILURE                                             syscall.Errno = 15605\n\tERROR_INSTALL_REGISTRATION_FAILURE                                        syscall.Errno = 15606\n\tERROR_INSTALL_DEREGISTRATION_FAILURE                                      syscall.Errno = 15607\n\tERROR_INSTALL_CANCEL                                                      syscall.Errno = 15608\n\tERROR_INSTALL_FAILED                                                      syscall.Errno = 15609\n\tERROR_REMOVE_FAILED                                                       syscall.Errno = 15610\n\tERROR_PACKAGE_ALREADY_EXISTS                                              syscall.Errno = 15611\n\tERROR_NEEDS_REMEDIATION                                                   syscall.Errno = 15612\n\tERROR_INSTALL_PREREQUISITE_FAILED                                         syscall.Errno = 15613\n\tERROR_PACKAGE_REPOSITORY_CORRUPTED                                        syscall.Errno = 15614\n\tERROR_INSTALL_POLICY_FAILURE                                              syscall.Errno = 15615\n\tERROR_PACKAGE_UPDATING                                                    syscall.Errno = 15616\n\tERROR_DEPLOYMENT_BLOCKED_BY_POLICY                                        syscall.Errno = 15617\n\tERROR_PACKAGES_IN_USE                                                     syscall.Errno = 15618\n\tERROR_RECOVERY_FILE_CORRUPT                                               syscall.Errno = 15619\n\tERROR_INVALID_STAGED_SIGNATURE                                            syscall.Errno = 15620\n\tERROR_DELETING_EXISTING_APPLICATIONDATA_STORE_FAILED                      syscall.Errno = 15621\n\tERROR_INSTALL_PACKAGE_DOWNGRADE                                           syscall.Errno = 15622\n\tERROR_SYSTEM_NEEDS_REMEDIATION                                            syscall.Errno = 15623\n\tERROR_APPX_INTEGRITY_FAILURE_CLR_NGEN                                     syscall.Errno = 15624\n\tERROR_RESILIENCY_FILE_CORRUPT                                             syscall.Errno = 15625\n\tERROR_INSTALL_FIREWALL_SERVICE_NOT_RUNNING                                syscall.Errno = 15626\n\tERROR_PACKAGE_MOVE_FAILED                                                 syscall.Errno = 15627\n\tERROR_INSTALL_VOLUME_NOT_EMPTY                                            syscall.Errno = 15628\n\tERROR_INSTALL_VOLUME_OFFLINE                                              syscall.Errno = 15629\n\tERROR_INSTALL_VOLUME_CORRUPT                                              syscall.Errno = 15630\n\tERROR_NEEDS_REGISTRATION                                                  syscall.Errno = 15631\n\tERROR_INSTALL_WRONG_PROCESSOR_ARCHITECTURE                                syscall.Errno = 15632\n\tERROR_DEV_SIDELOAD_LIMIT_EXCEEDED                                         syscall.Errno = 15633\n\tERROR_INSTALL_OPTIONAL_PACKAGE_REQUIRES_MAIN_PACKAGE                      syscall.Errno = 15634\n\tERROR_PACKAGE_NOT_SUPPORTED_ON_FILESYSTEM                                 syscall.Errno = 15635\n\tERROR_PACKAGE_MOVE_BLOCKED_BY_STREAMING                                   syscall.Errno = 15636\n\tERROR_INSTALL_OPTIONAL_PACKAGE_APPLICATIONID_NOT_UNIQUE                   syscall.Errno = 15637\n\tERROR_PACKAGE_STAGING_ONHOLD                                              syscall.Errno = 15638\n\tERROR_INSTALL_INVALID_RELATED_SET_UPDATE                                  syscall.Errno = 15639\n\tERROR_INSTALL_OPTIONAL_PACKAGE_REQUIRES_MAIN_PACKAGE_FULLTRUST_CAPABILITY syscall.Errno = 15640\n\tERROR_DEPLOYMENT_BLOCKED_BY_USER_LOG_OFF                                  syscall.Errno = 15641\n\tERROR_PROVISION_OPTIONAL_PACKAGE_REQUIRES_MAIN_PACKAGE_PROVISIONED        syscall.Errno = 15642\n\tERROR_PACKAGES_REPUTATION_CHECK_FAILED                                    syscall.Errno = 15643\n\tERROR_PACKAGES_REPUTATION_CHECK_TIMEDOUT                                  syscall.Errno = 15644\n\tERROR_DEPLOYMENT_OPTION_NOT_SUPPORTED                                     syscall.Errno = 15645\n\tERROR_APPINSTALLER_ACTIVATION_BLOCKED                                     syscall.Errno = 15646\n\tERROR_REGISTRATION_FROM_REMOTE_DRIVE_NOT_SUPPORTED                        syscall.Errno = 15647\n\tERROR_APPX_RAW_DATA_WRITE_FAILED                                          syscall.Errno = 15648\n\tERROR_DEPLOYMENT_BLOCKED_BY_VOLUME_POLICY_PACKAGE                         syscall.Errno = 15649\n\tERROR_DEPLOYMENT_BLOCKED_BY_VOLUME_POLICY_MACHINE                         syscall.Errno = 15650\n\tERROR_DEPLOYMENT_BLOCKED_BY_PROFILE_POLICY                                syscall.Errno = 15651\n\tERROR_DEPLOYMENT_FAILED_CONFLICTING_MUTABLE_PACKAGE_DIRECTORY             syscall.Errno = 15652\n\tERROR_SINGLETON_RESOURCE_INSTALLED_IN_ACTIVE_USER                         syscall.Errno = 15653\n\tERROR_DIFFERENT_VERSION_OF_PACKAGED_SERVICE_INSTALLED                     syscall.Errno = 15654\n\tERROR_SERVICE_EXISTS_AS_NON_PACKAGED_SERVICE                              syscall.Errno = 15655\n\tERROR_PACKAGED_SERVICE_REQUIRES_ADMIN_PRIVILEGES                          syscall.Errno = 15656\n\tAPPMODEL_ERROR_NO_PACKAGE                                                 syscall.Errno = 15700\n\tAPPMODEL_ERROR_PACKAGE_RUNTIME_CORRUPT                                    syscall.Errno = 15701\n\tAPPMODEL_ERROR_PACKAGE_IDENTITY_CORRUPT                                   syscall.Errno = 15702\n\tAPPMODEL_ERROR_NO_APPLICATION                                             syscall.Errno = 15703\n\tAPPMODEL_ERROR_DYNAMIC_PROPERTY_READ_FAILED                               syscall.Errno = 15704\n\tAPPMODEL_ERROR_DYNAMIC_PROPERTY_INVALID                                   syscall.Errno = 15705\n\tAPPMODEL_ERROR_PACKAGE_NOT_AVAILABLE                                      syscall.Errno = 15706\n\tAPPMODEL_ERROR_NO_MUTABLE_DIRECTORY                                       syscall.Errno = 15707\n\tERROR_STATE_LOAD_STORE_FAILED                                             syscall.Errno = 15800\n\tERROR_STATE_GET_VERSION_FAILED                                            syscall.Errno = 15801\n\tERROR_STATE_SET_VERSION_FAILED                                            syscall.Errno = 15802\n\tERROR_STATE_STRUCTURED_RESET_FAILED                                       syscall.Errno = 15803\n\tERROR_STATE_OPEN_CONTAINER_FAILED                                         syscall.Errno = 15804\n\tERROR_STATE_CREATE_CONTAINER_FAILED                                       syscall.Errno = 15805\n\tERROR_STATE_DELETE_CONTAINER_FAILED                                       syscall.Errno = 15806\n\tERROR_STATE_READ_SETTING_FAILED                                           syscall.Errno = 15807\n\tERROR_STATE_WRITE_SETTING_FAILED                                          syscall.Errno = 15808\n\tERROR_STATE_DELETE_SETTING_FAILED                                         syscall.Errno = 15809\n\tERROR_STATE_QUERY_SETTING_FAILED                                          syscall.Errno = 15810\n\tERROR_STATE_READ_COMPOSITE_SETTING_FAILED                                 syscall.Errno = 15811\n\tERROR_STATE_WRITE_COMPOSITE_SETTING_FAILED                                syscall.Errno = 15812\n\tERROR_STATE_ENUMERATE_CONTAINER_FAILED                                    syscall.Errno = 15813\n\tERROR_STATE_ENUMERATE_SETTINGS_FAILED                                     syscall.Errno = 15814\n\tERROR_STATE_COMPOSITE_SETTING_VALUE_SIZE_LIMIT_EXCEEDED                   syscall.Errno = 15815\n\tERROR_STATE_SETTING_VALUE_SIZE_LIMIT_EXCEEDED                             syscall.Errno = 15816\n\tERROR_STATE_SETTING_NAME_SIZE_LIMIT_EXCEEDED                              syscall.Errno = 15817\n\tERROR_STATE_CONTAINER_NAME_SIZE_LIMIT_EXCEEDED                            syscall.Errno = 15818\n\tERROR_API_UNAVAILABLE                                                     syscall.Errno = 15841\n\tSTORE_ERROR_UNLICENSED                                                    syscall.Errno = 15861\n\tSTORE_ERROR_UNLICENSED_USER                                               syscall.Errno = 15862\n\tSTORE_ERROR_PENDING_COM_TRANSACTION                                       syscall.Errno = 15863\n\tSTORE_ERROR_LICENSE_REVOKED                                               syscall.Errno = 15864\n\tSEVERITY_SUCCESS                                                          syscall.Errno = 0\n\tSEVERITY_ERROR                                                            syscall.Errno = 1\n\tFACILITY_NT_BIT                                                                         = 0x10000000\n\tE_NOT_SET                                                                               = ERROR_NOT_FOUND\n\tE_NOT_VALID_STATE                                                                       = ERROR_INVALID_STATE\n\tE_NOT_SUFFICIENT_BUFFER                                                                 = ERROR_INSUFFICIENT_BUFFER\n\tE_TIME_SENSITIVE_THREAD                                                                 = ERROR_TIME_SENSITIVE_THREAD\n\tE_NO_TASK_QUEUE                                                                         = ERROR_NO_TASK_QUEUE\n\tNOERROR                                                                   syscall.Errno = 0\n\tE_UNEXPECTED                                                              Handle        = 0x8000FFFF\n\tE_NOTIMPL                                                                 Handle        = 0x80004001\n\tE_OUTOFMEMORY                                                             Handle        = 0x8007000E\n\tE_INVALIDARG                                                              Handle        = 0x80070057\n\tE_NOINTERFACE                                                             Handle        = 0x80004002\n\tE_POINTER                                                                 Handle        = 0x80004003\n\tE_HANDLE                                                                  Handle        = 0x80070006\n\tE_ABORT                                                                   Handle        = 0x80004004\n\tE_FAIL                                                                    Handle        = 0x80004005\n\tE_ACCESSDENIED                                                            Handle        = 0x80070005\n\tE_PENDING                                                                 Handle        = 0x8000000A\n\tE_BOUNDS                                                                  Handle        = 0x8000000B\n\tE_CHANGED_STATE                                                           Handle        = 0x8000000C\n\tE_ILLEGAL_STATE_CHANGE                                                    Handle        = 0x8000000D\n\tE_ILLEGAL_METHOD_CALL                                                     Handle        = 0x8000000E\n\tRO_E_METADATA_NAME_NOT_FOUND                                              Handle        = 0x8000000F\n\tRO_E_METADATA_NAME_IS_NAMESPACE                                           Handle        = 0x80000010\n\tRO_E_METADATA_INVALID_TYPE_FORMAT                                         Handle        = 0x80000011\n\tRO_E_INVALID_METADATA_FILE                                                Handle        = 0x80000012\n\tRO_E_CLOSED                                                               Handle        = 0x80000013\n\tRO_E_EXCLUSIVE_WRITE                                                      Handle        = 0x80000014\n\tRO_E_CHANGE_NOTIFICATION_IN_PROGRESS                                      Handle        = 0x80000015\n\tRO_E_ERROR_STRING_NOT_FOUND                                               Handle        = 0x80000016\n\tE_STRING_NOT_NULL_TERMINATED                                              Handle        = 0x80000017\n\tE_ILLEGAL_DELEGATE_ASSIGNMENT                                             Handle        = 0x80000018\n\tE_ASYNC_OPERATION_NOT_STARTED                                             Handle        = 0x80000019\n\tE_APPLICATION_EXITING                                                     Handle        = 0x8000001A\n\tE_APPLICATION_VIEW_EXITING                                                Handle        = 0x8000001B\n\tRO_E_MUST_BE_AGILE                                                        Handle        = 0x8000001C\n\tRO_E_UNSUPPORTED_FROM_MTA                                                 Handle        = 0x8000001D\n\tRO_E_COMMITTED                                                            Handle        = 0x8000001E\n\tRO_E_BLOCKED_CROSS_ASTA_CALL                                              Handle        = 0x8000001F\n\tRO_E_CANNOT_ACTIVATE_FULL_TRUST_SERVER                                    Handle        = 0x80000020\n\tRO_E_CANNOT_ACTIVATE_UNIVERSAL_APPLICATION_SERVER                         Handle        = 0x80000021\n\tCO_E_INIT_TLS                                                             Handle        = 0x80004006\n\tCO_E_INIT_SHARED_ALLOCATOR                                                Handle        = 0x80004007\n\tCO_E_INIT_MEMORY_ALLOCATOR                                                Handle        = 0x80004008\n\tCO_E_INIT_CLASS_CACHE                                                     Handle        = 0x80004009\n\tCO_E_INIT_RPC_CHANNEL                                                     Handle        = 0x8000400A\n\tCO_E_INIT_TLS_SET_CHANNEL_CONTROL                                         Handle        = 0x8000400B\n\tCO_E_INIT_TLS_CHANNEL_CONTROL                                             Handle        = 0x8000400C\n\tCO_E_INIT_UNACCEPTED_USER_ALLOCATOR                                       Handle        = 0x8000400D\n\tCO_E_INIT_SCM_MUTEX_EXISTS                                                Handle        = 0x8000400E\n\tCO_E_INIT_SCM_FILE_MAPPING_EXISTS                                         Handle        = 0x8000400F\n\tCO_E_INIT_SCM_MAP_VIEW_OF_FILE                                            Handle        = 0x80004010\n\tCO_E_INIT_SCM_EXEC_FAILURE                                                Handle        = 0x80004011\n\tCO_E_INIT_ONLY_SINGLE_THREADED                                            Handle        = 0x80004012\n\tCO_E_CANT_REMOTE                                                          Handle        = 0x80004013\n\tCO_E_BAD_SERVER_NAME                                                      Handle        = 0x80004014\n\tCO_E_WRONG_SERVER_IDENTITY                                                Handle        = 0x80004015\n\tCO_E_OLE1DDE_DISABLED                                                     Handle        = 0x80004016\n\tCO_E_RUNAS_SYNTAX                                                         Handle        = 0x80004017\n\tCO_E_CREATEPROCESS_FAILURE                                                Handle        = 0x80004018\n\tCO_E_RUNAS_CREATEPROCESS_FAILURE                                          Handle        = 0x80004019\n\tCO_E_RUNAS_LOGON_FAILURE                                                  Handle        = 0x8000401A\n\tCO_E_LAUNCH_PERMSSION_DENIED                                              Handle        = 0x8000401B\n\tCO_E_START_SERVICE_FAILURE                                                Handle        = 0x8000401C\n\tCO_E_REMOTE_COMMUNICATION_FAILURE                                         Handle        = 0x8000401D\n\tCO_E_SERVER_START_TIMEOUT                                                 Handle        = 0x8000401E\n\tCO_E_CLSREG_INCONSISTENT                                                  Handle        = 0x8000401F\n\tCO_E_IIDREG_INCONSISTENT                                                  Handle        = 0x80004020\n\tCO_E_NOT_SUPPORTED                                                        Handle        = 0x80004021\n\tCO_E_RELOAD_DLL                                                           Handle        = 0x80004022\n\tCO_E_MSI_ERROR                                                            Handle        = 0x80004023\n\tCO_E_ATTEMPT_TO_CREATE_OUTSIDE_CLIENT_CONTEXT                             Handle        = 0x80004024\n\tCO_E_SERVER_PAUSED                                                        Handle        = 0x80004025\n\tCO_E_SERVER_NOT_PAUSED                                                    Handle        = 0x80004026\n\tCO_E_CLASS_DISABLED                                                       Handle        = 0x80004027\n\tCO_E_CLRNOTAVAILABLE                                                      Handle        = 0x80004028\n\tCO_E_ASYNC_WORK_REJECTED                                                  Handle        = 0x80004029\n\tCO_E_SERVER_INIT_TIMEOUT                                                  Handle        = 0x8000402A\n\tCO_E_NO_SECCTX_IN_ACTIVATE                                                Handle        = 0x8000402B\n\tCO_E_TRACKER_CONFIG                                                       Handle        = 0x80004030\n\tCO_E_THREADPOOL_CONFIG                                                    Handle        = 0x80004031\n\tCO_E_SXS_CONFIG                                                           Handle        = 0x80004032\n\tCO_E_MALFORMED_SPN                                                        Handle        = 0x80004033\n\tCO_E_UNREVOKED_REGISTRATION_ON_APARTMENT_SHUTDOWN                         Handle        = 0x80004034\n\tCO_E_PREMATURE_STUB_RUNDOWN                                               Handle        = 0x80004035\n\tS_OK                                                                      Handle        = 0\n\tS_FALSE                                                                   Handle        = 1\n\tOLE_E_FIRST                                                               Handle        = 0x80040000\n\tOLE_E_LAST                                                                Handle        = 0x800400FF\n\tOLE_S_FIRST                                                               Handle        = 0x00040000\n\tOLE_S_LAST                                                                Handle        = 0x000400FF\n\tOLE_E_OLEVERB                                                             Handle        = 0x80040000\n\tOLE_E_ADVF                                                                Handle        = 0x80040001\n\tOLE_E_ENUM_NOMORE                                                         Handle        = 0x80040002\n\tOLE_E_ADVISENOTSUPPORTED                                                  Handle        = 0x80040003\n\tOLE_E_NOCONNECTION                                                        Handle        = 0x80040004\n\tOLE_E_NOTRUNNING                                                          Handle        = 0x80040005\n\tOLE_E_NOCACHE                                                             Handle        = 0x80040006\n\tOLE_E_BLANK                                                               Handle        = 0x80040007\n\tOLE_E_CLASSDIFF                                                           Handle        = 0x80040008\n\tOLE_E_CANT_GETMONIKER                                                     Handle        = 0x80040009\n\tOLE_E_CANT_BINDTOSOURCE                                                   Handle        = 0x8004000A\n\tOLE_E_STATIC                                                              Handle        = 0x8004000B\n\tOLE_E_PROMPTSAVECANCELLED                                                 Handle        = 0x8004000C\n\tOLE_E_INVALIDRECT                                                         Handle        = 0x8004000D\n\tOLE_E_WRONGCOMPOBJ                                                        Handle        = 0x8004000E\n\tOLE_E_INVALIDHWND                                                         Handle        = 0x8004000F\n\tOLE_E_NOT_INPLACEACTIVE                                                   Handle        = 0x80040010\n\tOLE_E_CANTCONVERT                                                         Handle        = 0x80040011\n\tOLE_E_NOSTORAGE                                                           Handle        = 0x80040012\n\tDV_E_FORMATETC                                                            Handle        = 0x80040064\n\tDV_E_DVTARGETDEVICE                                                       Handle        = 0x80040065\n\tDV_E_STGMEDIUM                                                            Handle        = 0x80040066\n\tDV_E_STATDATA                                                             Handle        = 0x80040067\n\tDV_E_LINDEX                                                               Handle        = 0x80040068\n\tDV_E_TYMED                                                                Handle        = 0x80040069\n\tDV_E_CLIPFORMAT                                                           Handle        = 0x8004006A\n\tDV_E_DVASPECT                                                             Handle        = 0x8004006B\n\tDV_E_DVTARGETDEVICE_SIZE                                                  Handle        = 0x8004006C\n\tDV_E_NOIVIEWOBJECT                                                        Handle        = 0x8004006D\n\tDRAGDROP_E_FIRST                                                          syscall.Errno = 0x80040100\n\tDRAGDROP_E_LAST                                                           syscall.Errno = 0x8004010F\n\tDRAGDROP_S_FIRST                                                          syscall.Errno = 0x00040100\n\tDRAGDROP_S_LAST                                                           syscall.Errno = 0x0004010F\n\tDRAGDROP_E_NOTREGISTERED                                                  Handle        = 0x80040100\n\tDRAGDROP_E_ALREADYREGISTERED                                              Handle        = 0x80040101\n\tDRAGDROP_E_INVALIDHWND                                                    Handle        = 0x80040102\n\tDRAGDROP_E_CONCURRENT_DRAG_ATTEMPTED                                      Handle        = 0x80040103\n\tCLASSFACTORY_E_FIRST                                                      syscall.Errno = 0x80040110\n\tCLASSFACTORY_E_LAST                                                       syscall.Errno = 0x8004011F\n\tCLASSFACTORY_S_FIRST                                                      syscall.Errno = 0x00040110\n\tCLASSFACTORY_S_LAST                                                       syscall.Errno = 0x0004011F\n\tCLASS_E_NOAGGREGATION                                                     Handle        = 0x80040110\n\tCLASS_E_CLASSNOTAVAILABLE                                                 Handle        = 0x80040111\n\tCLASS_E_NOTLICENSED                                                       Handle        = 0x80040112\n\tMARSHAL_E_FIRST                                                           syscall.Errno = 0x80040120\n\tMARSHAL_E_LAST                                                            syscall.Errno = 0x8004012F\n\tMARSHAL_S_FIRST                                                           syscall.Errno = 0x00040120\n\tMARSHAL_S_LAST                                                            syscall.Errno = 0x0004012F\n\tDATA_E_FIRST                                                              syscall.Errno = 0x80040130\n\tDATA_E_LAST                                                               syscall.Errno = 0x8004013F\n\tDATA_S_FIRST                                                              syscall.Errno = 0x00040130\n\tDATA_S_LAST                                                               syscall.Errno = 0x0004013F\n\tVIEW_E_FIRST                                                              syscall.Errno = 0x80040140\n\tVIEW_E_LAST                                                               syscall.Errno = 0x8004014F\n\tVIEW_S_FIRST                                                              syscall.Errno = 0x00040140\n\tVIEW_S_LAST                                                               syscall.Errno = 0x0004014F\n\tVIEW_E_DRAW                                                               Handle        = 0x80040140\n\tREGDB_E_FIRST                                                             syscall.Errno = 0x80040150\n\tREGDB_E_LAST                                                              syscall.Errno = 0x8004015F\n\tREGDB_S_FIRST                                                             syscall.Errno = 0x00040150\n\tREGDB_S_LAST                                                              syscall.Errno = 0x0004015F\n\tREGDB_E_READREGDB                                                         Handle        = 0x80040150\n\tREGDB_E_WRITEREGDB                                                        Handle        = 0x80040151\n\tREGDB_E_KEYMISSING                                                        Handle        = 0x80040152\n\tREGDB_E_INVALIDVALUE                                                      Handle        = 0x80040153\n\tREGDB_E_CLASSNOTREG                                                       Handle        = 0x80040154\n\tREGDB_E_IIDNOTREG                                                         Handle        = 0x80040155\n\tREGDB_E_BADTHREADINGMODEL                                                 Handle        = 0x80040156\n\tREGDB_E_PACKAGEPOLICYVIOLATION                                            Handle        = 0x80040157\n\tCAT_E_FIRST                                                               syscall.Errno = 0x80040160\n\tCAT_E_LAST                                                                syscall.Errno = 0x80040161\n\tCAT_E_CATIDNOEXIST                                                        Handle        = 0x80040160\n\tCAT_E_NODESCRIPTION                                                       Handle        = 0x80040161\n\tCS_E_FIRST                                                                syscall.Errno = 0x80040164\n\tCS_E_LAST                                                                 syscall.Errno = 0x8004016F\n\tCS_E_PACKAGE_NOTFOUND                                                     Handle        = 0x80040164\n\tCS_E_NOT_DELETABLE                                                        Handle        = 0x80040165\n\tCS_E_CLASS_NOTFOUND                                                       Handle        = 0x80040166\n\tCS_E_INVALID_VERSION                                                      Handle        = 0x80040167\n\tCS_E_NO_CLASSSTORE                                                        Handle        = 0x80040168\n\tCS_E_OBJECT_NOTFOUND                                                      Handle        = 0x80040169\n\tCS_E_OBJECT_ALREADY_EXISTS                                                Handle        = 0x8004016A\n\tCS_E_INVALID_PATH                                                         Handle        = 0x8004016B\n\tCS_E_NETWORK_ERROR                                                        Handle        = 0x8004016C\n\tCS_E_ADMIN_LIMIT_EXCEEDED                                                 Handle        = 0x8004016D\n\tCS_E_SCHEMA_MISMATCH                                                      Handle        = 0x8004016E\n\tCS_E_INTERNAL_ERROR                                                       Handle        = 0x8004016F\n\tCACHE_E_FIRST                                                             syscall.Errno = 0x80040170\n\tCACHE_E_LAST                                                              syscall.Errno = 0x8004017F\n\tCACHE_S_FIRST                                                             syscall.Errno = 0x00040170\n\tCACHE_S_LAST                                                              syscall.Errno = 0x0004017F\n\tCACHE_E_NOCACHE_UPDATED                                                   Handle        = 0x80040170\n\tOLEOBJ_E_FIRST                                                            syscall.Errno = 0x80040180\n\tOLEOBJ_E_LAST                                                             syscall.Errno = 0x8004018F\n\tOLEOBJ_S_FIRST                                                            syscall.Errno = 0x00040180\n\tOLEOBJ_S_LAST                                                             syscall.Errno = 0x0004018F\n\tOLEOBJ_E_NOVERBS                                                          Handle        = 0x80040180\n\tOLEOBJ_E_INVALIDVERB                                                      Handle        = 0x80040181\n\tCLIENTSITE_E_FIRST                                                        syscall.Errno = 0x80040190\n\tCLIENTSITE_E_LAST                                                         syscall.Errno = 0x8004019F\n\tCLIENTSITE_S_FIRST                                                        syscall.Errno = 0x00040190\n\tCLIENTSITE_S_LAST                                                         syscall.Errno = 0x0004019F\n\tINPLACE_E_NOTUNDOABLE                                                     Handle        = 0x800401A0\n\tINPLACE_E_NOTOOLSPACE                                                     Handle        = 0x800401A1\n\tINPLACE_E_FIRST                                                           syscall.Errno = 0x800401A0\n\tINPLACE_E_LAST                                                            syscall.Errno = 0x800401AF\n\tINPLACE_S_FIRST                                                           syscall.Errno = 0x000401A0\n\tINPLACE_S_LAST                                                            syscall.Errno = 0x000401AF\n\tENUM_E_FIRST                                                              syscall.Errno = 0x800401B0\n\tENUM_E_LAST                                                               syscall.Errno = 0x800401BF\n\tENUM_S_FIRST                                                              syscall.Errno = 0x000401B0\n\tENUM_S_LAST                                                               syscall.Errno = 0x000401BF\n\tCONVERT10_E_FIRST                                                         syscall.Errno = 0x800401C0\n\tCONVERT10_E_LAST                                                          syscall.Errno = 0x800401CF\n\tCONVERT10_S_FIRST                                                         syscall.Errno = 0x000401C0\n\tCONVERT10_S_LAST                                                          syscall.Errno = 0x000401CF\n\tCONVERT10_E_OLESTREAM_GET                                                 Handle        = 0x800401C0\n\tCONVERT10_E_OLESTREAM_PUT                                                 Handle        = 0x800401C1\n\tCONVERT10_E_OLESTREAM_FMT                                                 Handle        = 0x800401C2\n\tCONVERT10_E_OLESTREAM_BITMAP_TO_DIB                                       Handle        = 0x800401C3\n\tCONVERT10_E_STG_FMT                                                       Handle        = 0x800401C4\n\tCONVERT10_E_STG_NO_STD_STREAM                                             Handle        = 0x800401C5\n\tCONVERT10_E_STG_DIB_TO_BITMAP                                             Handle        = 0x800401C6\n\tCLIPBRD_E_FIRST                                                           syscall.Errno = 0x800401D0\n\tCLIPBRD_E_LAST                                                            syscall.Errno = 0x800401DF\n\tCLIPBRD_S_FIRST                                                           syscall.Errno = 0x000401D0\n\tCLIPBRD_S_LAST                                                            syscall.Errno = 0x000401DF\n\tCLIPBRD_E_CANT_OPEN                                                       Handle        = 0x800401D0\n\tCLIPBRD_E_CANT_EMPTY                                                      Handle        = 0x800401D1\n\tCLIPBRD_E_CANT_SET                                                        Handle        = 0x800401D2\n\tCLIPBRD_E_BAD_DATA                                                        Handle        = 0x800401D3\n\tCLIPBRD_E_CANT_CLOSE                                                      Handle        = 0x800401D4\n\tMK_E_FIRST                                                                syscall.Errno = 0x800401E0\n\tMK_E_LAST                                                                 syscall.Errno = 0x800401EF\n\tMK_S_FIRST                                                                syscall.Errno = 0x000401E0\n\tMK_S_LAST                                                                 syscall.Errno = 0x000401EF\n\tMK_E_CONNECTMANUALLY                                                      Handle        = 0x800401E0\n\tMK_E_EXCEEDEDDEADLINE                                                     Handle        = 0x800401E1\n\tMK_E_NEEDGENERIC                                                          Handle        = 0x800401E2\n\tMK_E_UNAVAILABLE                                                          Handle        = 0x800401E3\n\tMK_E_SYNTAX                                                               Handle        = 0x800401E4\n\tMK_E_NOOBJECT                                                             Handle        = 0x800401E5\n\tMK_E_INVALIDEXTENSION                                                     Handle        = 0x800401E6\n\tMK_E_INTERMEDIATEINTERFACENOTSUPPORTED                                    Handle        = 0x800401E7\n\tMK_E_NOTBINDABLE                                                          Handle        = 0x800401E8\n\tMK_E_NOTBOUND                                                             Handle        = 0x800401E9\n\tMK_E_CANTOPENFILE                                                         Handle        = 0x800401EA\n\tMK_E_MUSTBOTHERUSER                                                       Handle        = 0x800401EB\n\tMK_E_NOINVERSE                                                            Handle        = 0x800401EC\n\tMK_E_NOSTORAGE                                                            Handle        = 0x800401ED\n\tMK_E_NOPREFIX                                                             Handle        = 0x800401EE\n\tMK_E_ENUMERATION_FAILED                                                   Handle        = 0x800401EF\n\tCO_E_FIRST                                                                syscall.Errno = 0x800401F0\n\tCO_E_LAST                                                                 syscall.Errno = 0x800401FF\n\tCO_S_FIRST                                                                syscall.Errno = 0x000401F0\n\tCO_S_LAST                                                                 syscall.Errno = 0x000401FF\n\tCO_E_NOTINITIALIZED                                                       Handle        = 0x800401F0\n\tCO_E_ALREADYINITIALIZED                                                   Handle        = 0x800401F1\n\tCO_E_CANTDETERMINECLASS                                                   Handle        = 0x800401F2\n\tCO_E_CLASSSTRING                                                          Handle        = 0x800401F3\n\tCO_E_IIDSTRING                                                            Handle        = 0x800401F4\n\tCO_E_APPNOTFOUND                                                          Handle        = 0x800401F5\n\tCO_E_APPSINGLEUSE                                                         Handle        = 0x800401F6\n\tCO_E_ERRORINAPP                                                           Handle        = 0x800401F7\n\tCO_E_DLLNOTFOUND                                                          Handle        = 0x800401F8\n\tCO_E_ERRORINDLL                                                           Handle        = 0x800401F9\n\tCO_E_WRONGOSFORAPP                                                        Handle        = 0x800401FA\n\tCO_E_OBJNOTREG                                                            Handle        = 0x800401FB\n\tCO_E_OBJISREG                                                             Handle        = 0x800401FC\n\tCO_E_OBJNOTCONNECTED                                                      Handle        = 0x800401FD\n\tCO_E_APPDIDNTREG                                                          Handle        = 0x800401FE\n\tCO_E_RELEASED                                                             Handle        = 0x800401FF\n\tEVENT_E_FIRST                                                             syscall.Errno = 0x80040200\n\tEVENT_E_LAST                                                              syscall.Errno = 0x8004021F\n\tEVENT_S_FIRST                                                             syscall.Errno = 0x00040200\n\tEVENT_S_LAST                                                              syscall.Errno = 0x0004021F\n\tEVENT_S_SOME_SUBSCRIBERS_FAILED                                           Handle        = 0x00040200\n\tEVENT_E_ALL_SUBSCRIBERS_FAILED                                            Handle        = 0x80040201\n\tEVENT_S_NOSUBSCRIBERS                                                     Handle        = 0x00040202\n\tEVENT_E_QUERYSYNTAX                                                       Handle        = 0x80040203\n\tEVENT_E_QUERYFIELD                                                        Handle        = 0x80040204\n\tEVENT_E_INTERNALEXCEPTION                                                 Handle        = 0x80040205\n\tEVENT_E_INTERNALERROR                                                     Handle        = 0x80040206\n\tEVENT_E_INVALID_PER_USER_SID                                              Handle        = 0x80040207\n\tEVENT_E_USER_EXCEPTION                                                    Handle        = 0x80040208\n\tEVENT_E_TOO_MANY_METHODS                                                  Handle        = 0x80040209\n\tEVENT_E_MISSING_EVENTCLASS                                                Handle        = 0x8004020A\n\tEVENT_E_NOT_ALL_REMOVED                                                   Handle        = 0x8004020B\n\tEVENT_E_COMPLUS_NOT_INSTALLED                                             Handle        = 0x8004020C\n\tEVENT_E_CANT_MODIFY_OR_DELETE_UNCONFIGURED_OBJECT                         Handle        = 0x8004020D\n\tEVENT_E_CANT_MODIFY_OR_DELETE_CONFIGURED_OBJECT                           Handle        = 0x8004020E\n\tEVENT_E_INVALID_EVENT_CLASS_PARTITION                                     Handle        = 0x8004020F\n\tEVENT_E_PER_USER_SID_NOT_LOGGED_ON                                        Handle        = 0x80040210\n\tTPC_E_INVALID_PROPERTY                                                    Handle        = 0x80040241\n\tTPC_E_NO_DEFAULT_TABLET                                                   Handle        = 0x80040212\n\tTPC_E_UNKNOWN_PROPERTY                                                    Handle        = 0x8004021B\n\tTPC_E_INVALID_INPUT_RECT                                                  Handle        = 0x80040219\n\tTPC_E_INVALID_STROKE                                                      Handle        = 0x80040222\n\tTPC_E_INITIALIZE_FAIL                                                     Handle        = 0x80040223\n\tTPC_E_NOT_RELEVANT                                                        Handle        = 0x80040232\n\tTPC_E_INVALID_PACKET_DESCRIPTION                                          Handle        = 0x80040233\n\tTPC_E_RECOGNIZER_NOT_REGISTERED                                           Handle        = 0x80040235\n\tTPC_E_INVALID_RIGHTS                                                      Handle        = 0x80040236\n\tTPC_E_OUT_OF_ORDER_CALL                                                   Handle        = 0x80040237\n\tTPC_E_QUEUE_FULL                                                          Handle        = 0x80040238\n\tTPC_E_INVALID_CONFIGURATION                                               Handle        = 0x80040239\n\tTPC_E_INVALID_DATA_FROM_RECOGNIZER                                        Handle        = 0x8004023A\n\tTPC_S_TRUNCATED                                                           Handle        = 0x00040252\n\tTPC_S_INTERRUPTED                                                         Handle        = 0x00040253\n\tTPC_S_NO_DATA_TO_PROCESS                                                  Handle        = 0x00040254\n\tXACT_E_FIRST                                                              syscall.Errno = 0x8004D000\n\tXACT_E_LAST                                                               syscall.Errno = 0x8004D02B\n\tXACT_S_FIRST                                                              syscall.Errno = 0x0004D000\n\tXACT_S_LAST                                                               syscall.Errno = 0x0004D010\n\tXACT_E_ALREADYOTHERSINGLEPHASE                                            Handle        = 0x8004D000\n\tXACT_E_CANTRETAIN                                                         Handle        = 0x8004D001\n\tXACT_E_COMMITFAILED                                                       Handle        = 0x8004D002\n\tXACT_E_COMMITPREVENTED                                                    Handle        = 0x8004D003\n\tXACT_E_HEURISTICABORT                                                     Handle        = 0x8004D004\n\tXACT_E_HEURISTICCOMMIT                                                    Handle        = 0x8004D005\n\tXACT_E_HEURISTICDAMAGE                                                    Handle        = 0x8004D006\n\tXACT_E_HEURISTICDANGER                                                    Handle        = 0x8004D007\n\tXACT_E_ISOLATIONLEVEL                                                     Handle        = 0x8004D008\n\tXACT_E_NOASYNC                                                            Handle        = 0x8004D009\n\tXACT_E_NOENLIST                                                           Handle        = 0x8004D00A\n\tXACT_E_NOISORETAIN                                                        Handle        = 0x8004D00B\n\tXACT_E_NORESOURCE                                                         Handle        = 0x8004D00C\n\tXACT_E_NOTCURRENT                                                         Handle        = 0x8004D00D\n\tXACT_E_NOTRANSACTION                                                      Handle        = 0x8004D00E\n\tXACT_E_NOTSUPPORTED                                                       Handle        = 0x8004D00F\n\tXACT_E_UNKNOWNRMGRID                                                      Handle        = 0x8004D010\n\tXACT_E_WRONGSTATE                                                         Handle        = 0x8004D011\n\tXACT_E_WRONGUOW                                                           Handle        = 0x8004D012\n\tXACT_E_XTIONEXISTS                                                        Handle        = 0x8004D013\n\tXACT_E_NOIMPORTOBJECT                                                     Handle        = 0x8004D014\n\tXACT_E_INVALIDCOOKIE                                                      Handle        = 0x8004D015\n\tXACT_E_INDOUBT                                                            Handle        = 0x8004D016\n\tXACT_E_NOTIMEOUT                                                          Handle        = 0x8004D017\n\tXACT_E_ALREADYINPROGRESS                                                  Handle        = 0x8004D018\n\tXACT_E_ABORTED                                                            Handle        = 0x8004D019\n\tXACT_E_LOGFULL                                                            Handle        = 0x8004D01A\n\tXACT_E_TMNOTAVAILABLE                                                     Handle        = 0x8004D01B\n\tXACT_E_CONNECTION_DOWN                                                    Handle        = 0x8004D01C\n\tXACT_E_CONNECTION_DENIED                                                  Handle        = 0x8004D01D\n\tXACT_E_REENLISTTIMEOUT                                                    Handle        = 0x8004D01E\n\tXACT_E_TIP_CONNECT_FAILED                                                 Handle        = 0x8004D01F\n\tXACT_E_TIP_PROTOCOL_ERROR                                                 Handle        = 0x8004D020\n\tXACT_E_TIP_PULL_FAILED                                                    Handle        = 0x8004D021\n\tXACT_E_DEST_TMNOTAVAILABLE                                                Handle        = 0x8004D022\n\tXACT_E_TIP_DISABLED                                                       Handle        = 0x8004D023\n\tXACT_E_NETWORK_TX_DISABLED                                                Handle        = 0x8004D024\n\tXACT_E_PARTNER_NETWORK_TX_DISABLED                                        Handle        = 0x8004D025\n\tXACT_E_XA_TX_DISABLED                                                     Handle        = 0x8004D026\n\tXACT_E_UNABLE_TO_READ_DTC_CONFIG                                          Handle        = 0x8004D027\n\tXACT_E_UNABLE_TO_LOAD_DTC_PROXY                                           Handle        = 0x8004D028\n\tXACT_E_ABORTING                                                           Handle        = 0x8004D029\n\tXACT_E_PUSH_COMM_FAILURE                                                  Handle        = 0x8004D02A\n\tXACT_E_PULL_COMM_FAILURE                                                  Handle        = 0x8004D02B\n\tXACT_E_LU_TX_DISABLED                                                     Handle        = 0x8004D02C\n\tXACT_E_CLERKNOTFOUND                                                      Handle        = 0x8004D080\n\tXACT_E_CLERKEXISTS                                                        Handle        = 0x8004D081\n\tXACT_E_RECOVERYINPROGRESS                                                 Handle        = 0x8004D082\n\tXACT_E_TRANSACTIONCLOSED                                                  Handle        = 0x8004D083\n\tXACT_E_INVALIDLSN                                                         Handle        = 0x8004D084\n\tXACT_E_REPLAYREQUEST                                                      Handle        = 0x8004D085\n\tXACT_S_ASYNC                                                              Handle        = 0x0004D000\n\tXACT_S_DEFECT                                                             Handle        = 0x0004D001\n\tXACT_S_READONLY                                                           Handle        = 0x0004D002\n\tXACT_S_SOMENORETAIN                                                       Handle        = 0x0004D003\n\tXACT_S_OKINFORM                                                           Handle        = 0x0004D004\n\tXACT_S_MADECHANGESCONTENT                                                 Handle        = 0x0004D005\n\tXACT_S_MADECHANGESINFORM                                                  Handle        = 0x0004D006\n\tXACT_S_ALLNORETAIN                                                        Handle        = 0x0004D007\n\tXACT_S_ABORTING                                                           Handle        = 0x0004D008\n\tXACT_S_SINGLEPHASE                                                        Handle        = 0x0004D009\n\tXACT_S_LOCALLY_OK                                                         Handle        = 0x0004D00A\n\tXACT_S_LASTRESOURCEMANAGER                                                Handle        = 0x0004D010\n\tCONTEXT_E_FIRST                                                           syscall.Errno = 0x8004E000\n\tCONTEXT_E_LAST                                                            syscall.Errno = 0x8004E02F\n\tCONTEXT_S_FIRST                                                           syscall.Errno = 0x0004E000\n\tCONTEXT_S_LAST                                                            syscall.Errno = 0x0004E02F\n\tCONTEXT_E_ABORTED                                                         Handle        = 0x8004E002\n\tCONTEXT_E_ABORTING                                                        Handle        = 0x8004E003\n\tCONTEXT_E_NOCONTEXT                                                       Handle        = 0x8004E004\n\tCONTEXT_E_WOULD_DEADLOCK                                                  Handle        = 0x8004E005\n\tCONTEXT_E_SYNCH_TIMEOUT                                                   Handle        = 0x8004E006\n\tCONTEXT_E_OLDREF                                                          Handle        = 0x8004E007\n\tCONTEXT_E_ROLENOTFOUND                                                    Handle        = 0x8004E00C\n\tCONTEXT_E_TMNOTAVAILABLE                                                  Handle        = 0x8004E00F\n\tCO_E_ACTIVATIONFAILED                                                     Handle        = 0x8004E021\n\tCO_E_ACTIVATIONFAILED_EVENTLOGGED                                         Handle        = 0x8004E022\n\tCO_E_ACTIVATIONFAILED_CATALOGERROR                                        Handle        = 0x8004E023\n\tCO_E_ACTIVATIONFAILED_TIMEOUT                                             Handle        = 0x8004E024\n\tCO_E_INITIALIZATIONFAILED                                                 Handle        = 0x8004E025\n\tCONTEXT_E_NOJIT                                                           Handle        = 0x8004E026\n\tCONTEXT_E_NOTRANSACTION                                                   Handle        = 0x8004E027\n\tCO_E_THREADINGMODEL_CHANGED                                               Handle        = 0x8004E028\n\tCO_E_NOIISINTRINSICS                                                      Handle        = 0x8004E029\n\tCO_E_NOCOOKIES                                                            Handle        = 0x8004E02A\n\tCO_E_DBERROR                                                              Handle        = 0x8004E02B\n\tCO_E_NOTPOOLED                                                            Handle        = 0x8004E02C\n\tCO_E_NOTCONSTRUCTED                                                       Handle        = 0x8004E02D\n\tCO_E_NOSYNCHRONIZATION                                                    Handle        = 0x8004E02E\n\tCO_E_ISOLEVELMISMATCH                                                     Handle        = 0x8004E02F\n\tCO_E_CALL_OUT_OF_TX_SCOPE_NOT_ALLOWED                                     Handle        = 0x8004E030\n\tCO_E_EXIT_TRANSACTION_SCOPE_NOT_CALLED                                    Handle        = 0x8004E031\n\tOLE_S_USEREG                                                              Handle        = 0x00040000\n\tOLE_S_STATIC                                                              Handle        = 0x00040001\n\tOLE_S_MAC_CLIPFORMAT                                                      Handle        = 0x00040002\n\tDRAGDROP_S_DROP                                                           Handle        = 0x00040100\n\tDRAGDROP_S_CANCEL                                                         Handle        = 0x00040101\n\tDRAGDROP_S_USEDEFAULTCURSORS                                              Handle        = 0x00040102\n\tDATA_S_SAMEFORMATETC                                                      Handle        = 0x00040130\n\tVIEW_S_ALREADY_FROZEN                                                     Handle        = 0x00040140\n\tCACHE_S_FORMATETC_NOTSUPPORTED                                            Handle        = 0x00040170\n\tCACHE_S_SAMECACHE                                                         Handle        = 0x00040171\n\tCACHE_S_SOMECACHES_NOTUPDATED                                             Handle        = 0x00040172\n\tOLEOBJ_S_INVALIDVERB                                                      Handle        = 0x00040180\n\tOLEOBJ_S_CANNOT_DOVERB_NOW                                                Handle        = 0x00040181\n\tOLEOBJ_S_INVALIDHWND                                                      Handle        = 0x00040182\n\tINPLACE_S_TRUNCATED                                                       Handle        = 0x000401A0\n\tCONVERT10_S_NO_PRESENTATION                                               Handle        = 0x000401C0\n\tMK_S_REDUCED_TO_SELF                                                      Handle        = 0x000401E2\n\tMK_S_ME                                                                   Handle        = 0x000401E4\n\tMK_S_HIM                                                                  Handle        = 0x000401E5\n\tMK_S_US                                                                   Handle        = 0x000401E6\n\tMK_S_MONIKERALREADYREGISTERED                                             Handle        = 0x000401E7\n\tSCHED_S_TASK_READY                                                        Handle        = 0x00041300\n\tSCHED_S_TASK_RUNNING                                                      Handle        = 0x00041301\n\tSCHED_S_TASK_DISABLED                                                     Handle        = 0x00041302\n\tSCHED_S_TASK_HAS_NOT_RUN                                                  Handle        = 0x00041303\n\tSCHED_S_TASK_NO_MORE_RUNS                                                 Handle        = 0x00041304\n\tSCHED_S_TASK_NOT_SCHEDULED                                                Handle        = 0x00041305\n\tSCHED_S_TASK_TERMINATED                                                   Handle        = 0x00041306\n\tSCHED_S_TASK_NO_VALID_TRIGGERS                                            Handle        = 0x00041307\n\tSCHED_S_EVENT_TRIGGER                                                     Handle        = 0x00041308\n\tSCHED_E_TRIGGER_NOT_FOUND                                                 Handle        = 0x80041309\n\tSCHED_E_TASK_NOT_READY                                                    Handle        = 0x8004130A\n\tSCHED_E_TASK_NOT_RUNNING                                                  Handle        = 0x8004130B\n\tSCHED_E_SERVICE_NOT_INSTALLED                                             Handle        = 0x8004130C\n\tSCHED_E_CANNOT_OPEN_TASK                                                  Handle        = 0x8004130D\n\tSCHED_E_INVALID_TASK                                                      Handle        = 0x8004130E\n\tSCHED_E_ACCOUNT_INFORMATION_NOT_SET                                       Handle        = 0x8004130F\n\tSCHED_E_ACCOUNT_NAME_NOT_FOUND                                            Handle        = 0x80041310\n\tSCHED_E_ACCOUNT_DBASE_CORRUPT                                             Handle        = 0x80041311\n\tSCHED_E_NO_SECURITY_SERVICES                                              Handle        = 0x80041312\n\tSCHED_E_UNKNOWN_OBJECT_VERSION                                            Handle        = 0x80041313\n\tSCHED_E_UNSUPPORTED_ACCOUNT_OPTION                                        Handle        = 0x80041314\n\tSCHED_E_SERVICE_NOT_RUNNING                                               Handle        = 0x80041315\n\tSCHED_E_UNEXPECTEDNODE                                                    Handle        = 0x80041316\n\tSCHED_E_NAMESPACE                                                         Handle        = 0x80041317\n\tSCHED_E_INVALIDVALUE                                                      Handle        = 0x80041318\n\tSCHED_E_MISSINGNODE                                                       Handle        = 0x80041319\n\tSCHED_E_MALFORMEDXML                                                      Handle        = 0x8004131A\n\tSCHED_S_SOME_TRIGGERS_FAILED                                              Handle        = 0x0004131B\n\tSCHED_S_BATCH_LOGON_PROBLEM                                               Handle        = 0x0004131C\n\tSCHED_E_TOO_MANY_NODES                                                    Handle        = 0x8004131D\n\tSCHED_E_PAST_END_BOUNDARY                                                 Handle        = 0x8004131E\n\tSCHED_E_ALREADY_RUNNING                                                   Handle        = 0x8004131F\n\tSCHED_E_USER_NOT_LOGGED_ON                                                Handle        = 0x80041320\n\tSCHED_E_INVALID_TASK_HASH                                                 Handle        = 0x80041321\n\tSCHED_E_SERVICE_NOT_AVAILABLE                                             Handle        = 0x80041322\n\tSCHED_E_SERVICE_TOO_BUSY                                                  Handle        = 0x80041323\n\tSCHED_E_TASK_ATTEMPTED                                                    Handle        = 0x80041324\n\tSCHED_S_TASK_QUEUED                                                       Handle        = 0x00041325\n\tSCHED_E_TASK_DISABLED                                                     Handle        = 0x80041326\n\tSCHED_E_TASK_NOT_V1_COMPAT                                                Handle        = 0x80041327\n\tSCHED_E_START_ON_DEMAND                                                   Handle        = 0x80041328\n\tSCHED_E_TASK_NOT_UBPM_COMPAT                                              Handle        = 0x80041329\n\tSCHED_E_DEPRECATED_FEATURE_USED                                           Handle        = 0x80041330\n\tCO_E_CLASS_CREATE_FAILED                                                  Handle        = 0x80080001\n\tCO_E_SCM_ERROR                                                            Handle        = 0x80080002\n\tCO_E_SCM_RPC_FAILURE                                                      Handle        = 0x80080003\n\tCO_E_BAD_PATH                                                             Handle        = 0x80080004\n\tCO_E_SERVER_EXEC_FAILURE                                                  Handle        = 0x80080005\n\tCO_E_OBJSRV_RPC_FAILURE                                                   Handle        = 0x80080006\n\tMK_E_NO_NORMALIZED                                                        Handle        = 0x80080007\n\tCO_E_SERVER_STOPPING                                                      Handle        = 0x80080008\n\tMEM_E_INVALID_ROOT                                                        Handle        = 0x80080009\n\tMEM_E_INVALID_LINK                                                        Handle        = 0x80080010\n\tMEM_E_INVALID_SIZE                                                        Handle        = 0x80080011\n\tCO_S_NOTALLINTERFACES                                                     Handle        = 0x00080012\n\tCO_S_MACHINENAMENOTFOUND                                                  Handle        = 0x00080013\n\tCO_E_MISSING_DISPLAYNAME                                                  Handle        = 0x80080015\n\tCO_E_RUNAS_VALUE_MUST_BE_AAA                                              Handle        = 0x80080016\n\tCO_E_ELEVATION_DISABLED                                                   Handle        = 0x80080017\n\tAPPX_E_PACKAGING_INTERNAL                                                 Handle        = 0x80080200\n\tAPPX_E_INTERLEAVING_NOT_ALLOWED                                           Handle        = 0x80080201\n\tAPPX_E_RELATIONSHIPS_NOT_ALLOWED                                          Handle        = 0x80080202\n\tAPPX_E_MISSING_REQUIRED_FILE                                              Handle        = 0x80080203\n\tAPPX_E_INVALID_MANIFEST                                                   Handle        = 0x80080204\n\tAPPX_E_INVALID_BLOCKMAP                                                   Handle        = 0x80080205\n\tAPPX_E_CORRUPT_CONTENT                                                    Handle        = 0x80080206\n\tAPPX_E_BLOCK_HASH_INVALID                                                 Handle        = 0x80080207\n\tAPPX_E_REQUESTED_RANGE_TOO_LARGE                                          Handle        = 0x80080208\n\tAPPX_E_INVALID_SIP_CLIENT_DATA                                            Handle        = 0x80080209\n\tAPPX_E_INVALID_KEY_INFO                                                   Handle        = 0x8008020A\n\tAPPX_E_INVALID_CONTENTGROUPMAP                                            Handle        = 0x8008020B\n\tAPPX_E_INVALID_APPINSTALLER                                               Handle        = 0x8008020C\n\tAPPX_E_DELTA_BASELINE_VERSION_MISMATCH                                    Handle        = 0x8008020D\n\tAPPX_E_DELTA_PACKAGE_MISSING_FILE                                         Handle        = 0x8008020E\n\tAPPX_E_INVALID_DELTA_PACKAGE                                              Handle        = 0x8008020F\n\tAPPX_E_DELTA_APPENDED_PACKAGE_NOT_ALLOWED                                 Handle        = 0x80080210\n\tAPPX_E_INVALID_PACKAGING_LAYOUT                                           Handle        = 0x80080211\n\tAPPX_E_INVALID_PACKAGESIGNCONFIG                                          Handle        = 0x80080212\n\tAPPX_E_RESOURCESPRI_NOT_ALLOWED                                           Handle        = 0x80080213\n\tAPPX_E_FILE_COMPRESSION_MISMATCH                                          Handle        = 0x80080214\n\tAPPX_E_INVALID_PAYLOAD_PACKAGE_EXTENSION                                  Handle        = 0x80080215\n\tAPPX_E_INVALID_ENCRYPTION_EXCLUSION_FILE_LIST                             Handle        = 0x80080216\n\tBT_E_SPURIOUS_ACTIVATION                                                  Handle        = 0x80080300\n\tDISP_E_UNKNOWNINTERFACE                                                   Handle        = 0x80020001\n\tDISP_E_MEMBERNOTFOUND                                                     Handle        = 0x80020003\n\tDISP_E_PARAMNOTFOUND                                                      Handle        = 0x80020004\n\tDISP_E_TYPEMISMATCH                                                       Handle        = 0x80020005\n\tDISP_E_UNKNOWNNAME                                                        Handle        = 0x80020006\n\tDISP_E_NONAMEDARGS                                                        Handle        = 0x80020007\n\tDISP_E_BADVARTYPE                                                         Handle        = 0x80020008\n\tDISP_E_EXCEPTION                                                          Handle        = 0x80020009\n\tDISP_E_OVERFLOW                                                           Handle        = 0x8002000A\n\tDISP_E_BADINDEX                                                           Handle        = 0x8002000B\n\tDISP_E_UNKNOWNLCID                                                        Handle        = 0x8002000C\n\tDISP_E_ARRAYISLOCKED                                                      Handle        = 0x8002000D\n\tDISP_E_BADPARAMCOUNT                                                      Handle        = 0x8002000E\n\tDISP_E_PARAMNOTOPTIONAL                                                   Handle        = 0x8002000F\n\tDISP_E_BADCALLEE                                                          Handle        = 0x80020010\n\tDISP_E_NOTACOLLECTION                                                     Handle        = 0x80020011\n\tDISP_E_DIVBYZERO                                                          Handle        = 0x80020012\n\tDISP_E_BUFFERTOOSMALL                                                     Handle        = 0x80020013\n\tTYPE_E_BUFFERTOOSMALL                                                     Handle        = 0x80028016\n\tTYPE_E_FIELDNOTFOUND                                                      Handle        = 0x80028017\n\tTYPE_E_INVDATAREAD                                                        Handle        = 0x80028018\n\tTYPE_E_UNSUPFORMAT                                                        Handle        = 0x80028019\n\tTYPE_E_REGISTRYACCESS                                                     Handle        = 0x8002801C\n\tTYPE_E_LIBNOTREGISTERED                                                   Handle        = 0x8002801D\n\tTYPE_E_UNDEFINEDTYPE                                                      Handle        = 0x80028027\n\tTYPE_E_QUALIFIEDNAMEDISALLOWED                                            Handle        = 0x80028028\n\tTYPE_E_INVALIDSTATE                                                       Handle        = 0x80028029\n\tTYPE_E_WRONGTYPEKIND                                                      Handle        = 0x8002802A\n\tTYPE_E_ELEMENTNOTFOUND                                                    Handle        = 0x8002802B\n\tTYPE_E_AMBIGUOUSNAME                                                      Handle        = 0x8002802C\n\tTYPE_E_NAMECONFLICT                                                       Handle        = 0x8002802D\n\tTYPE_E_UNKNOWNLCID                                                        Handle        = 0x8002802E\n\tTYPE_E_DLLFUNCTIONNOTFOUND                                                Handle        = 0x8002802F\n\tTYPE_E_BADMODULEKIND                                                      Handle        = 0x800288BD\n\tTYPE_E_SIZETOOBIG                                                         Handle        = 0x800288C5\n\tTYPE_E_DUPLICATEID                                                        Handle        = 0x800288C6\n\tTYPE_E_INVALIDID                                                          Handle        = 0x800288CF\n\tTYPE_E_TYPEMISMATCH                                                       Handle        = 0x80028CA0\n\tTYPE_E_OUTOFBOUNDS                                                        Handle        = 0x80028CA1\n\tTYPE_E_IOERROR                                                            Handle        = 0x80028CA2\n\tTYPE_E_CANTCREATETMPFILE                                                  Handle        = 0x80028CA3\n\tTYPE_E_CANTLOADLIBRARY                                                    Handle        = 0x80029C4A\n\tTYPE_E_INCONSISTENTPROPFUNCS                                              Handle        = 0x80029C83\n\tTYPE_E_CIRCULARTYPE                                                       Handle        = 0x80029C84\n\tSTG_E_INVALIDFUNCTION                                                     Handle        = 0x80030001\n\tSTG_E_FILENOTFOUND                                                        Handle        = 0x80030002\n\tSTG_E_PATHNOTFOUND                                                        Handle        = 0x80030003\n\tSTG_E_TOOMANYOPENFILES                                                    Handle        = 0x80030004\n\tSTG_E_ACCESSDENIED                                                        Handle        = 0x80030005\n\tSTG_E_INVALIDHANDLE                                                       Handle        = 0x80030006\n\tSTG_E_INSUFFICIENTMEMORY                                                  Handle        = 0x80030008\n\tSTG_E_INVALIDPOINTER                                                      Handle        = 0x80030009\n\tSTG_E_NOMOREFILES                                                         Handle        = 0x80030012\n\tSTG_E_DISKISWRITEPROTECTED                                                Handle        = 0x80030013\n\tSTG_E_SEEKERROR                                                           Handle        = 0x80030019\n\tSTG_E_WRITEFAULT                                                          Handle        = 0x8003001D\n\tSTG_E_READFAULT                                                           Handle        = 0x8003001E\n\tSTG_E_SHAREVIOLATION                                                      Handle        = 0x80030020\n\tSTG_E_LOCKVIOLATION                                                       Handle        = 0x80030021\n\tSTG_E_FILEALREADYEXISTS                                                   Handle        = 0x80030050\n\tSTG_E_INVALIDPARAMETER                                                    Handle        = 0x80030057\n\tSTG_E_MEDIUMFULL                                                          Handle        = 0x80030070\n\tSTG_E_PROPSETMISMATCHED                                                   Handle        = 0x800300F0\n\tSTG_E_ABNORMALAPIEXIT                                                     Handle        = 0x800300FA\n\tSTG_E_INVALIDHEADER                                                       Handle        = 0x800300FB\n\tSTG_E_INVALIDNAME                                                         Handle        = 0x800300FC\n\tSTG_E_UNKNOWN                                                             Handle        = 0x800300FD\n\tSTG_E_UNIMPLEMENTEDFUNCTION                                               Handle        = 0x800300FE\n\tSTG_E_INVALIDFLAG                                                         Handle        = 0x800300FF\n\tSTG_E_INUSE                                                               Handle        = 0x80030100\n\tSTG_E_NOTCURRENT                                                          Handle        = 0x80030101\n\tSTG_E_REVERTED                                                            Handle        = 0x80030102\n\tSTG_E_CANTSAVE                                                            Handle        = 0x80030103\n\tSTG_E_OLDFORMAT                                                           Handle        = 0x80030104\n\tSTG_E_OLDDLL                                                              Handle        = 0x80030105\n\tSTG_E_SHAREREQUIRED                                                       Handle        = 0x80030106\n\tSTG_E_NOTFILEBASEDSTORAGE                                                 Handle        = 0x80030107\n\tSTG_E_EXTANTMARSHALLINGS                                                  Handle        = 0x80030108\n\tSTG_E_DOCFILECORRUPT                                                      Handle        = 0x80030109\n\tSTG_E_BADBASEADDRESS                                                      Handle        = 0x80030110\n\tSTG_E_DOCFILETOOLARGE                                                     Handle        = 0x80030111\n\tSTG_E_NOTSIMPLEFORMAT                                                     Handle        = 0x80030112\n\tSTG_E_INCOMPLETE                                                          Handle        = 0x80030201\n\tSTG_E_TERMINATED                                                          Handle        = 0x80030202\n\tSTG_S_CONVERTED                                                           Handle        = 0x00030200\n\tSTG_S_BLOCK                                                               Handle        = 0x00030201\n\tSTG_S_RETRYNOW                                                            Handle        = 0x00030202\n\tSTG_S_MONITORING                                                          Handle        = 0x00030203\n\tSTG_S_MULTIPLEOPENS                                                       Handle        = 0x00030204\n\tSTG_S_CONSOLIDATIONFAILED                                                 Handle        = 0x00030205\n\tSTG_S_CANNOTCONSOLIDATE                                                   Handle        = 0x00030206\n\tSTG_S_POWER_CYCLE_REQUIRED                                                Handle        = 0x00030207\n\tSTG_E_FIRMWARE_SLOT_INVALID                                               Handle        = 0x80030208\n\tSTG_E_FIRMWARE_IMAGE_INVALID                                              Handle        = 0x80030209\n\tSTG_E_DEVICE_UNRESPONSIVE                                                 Handle        = 0x8003020A\n\tSTG_E_STATUS_COPY_PROTECTION_FAILURE                                      Handle        = 0x80030305\n\tSTG_E_CSS_AUTHENTICATION_FAILURE                                          Handle        = 0x80030306\n\tSTG_E_CSS_KEY_NOT_PRESENT                                                 Handle        = 0x80030307\n\tSTG_E_CSS_KEY_NOT_ESTABLISHED                                             Handle        = 0x80030308\n\tSTG_E_CSS_SCRAMBLED_SECTOR                                                Handle        = 0x80030309\n\tSTG_E_CSS_REGION_MISMATCH                                                 Handle        = 0x8003030A\n\tSTG_E_RESETS_EXHAUSTED                                                    Handle        = 0x8003030B\n\tRPC_E_CALL_REJECTED                                                       Handle        = 0x80010001\n\tRPC_E_CALL_CANCELED                                                       Handle        = 0x80010002\n\tRPC_E_CANTPOST_INSENDCALL                                                 Handle        = 0x80010003\n\tRPC_E_CANTCALLOUT_INASYNCCALL                                             Handle        = 0x80010004\n\tRPC_E_CANTCALLOUT_INEXTERNALCALL                                          Handle        = 0x80010005\n\tRPC_E_CONNECTION_TERMINATED                                               Handle        = 0x80010006\n\tRPC_E_SERVER_DIED                                                         Handle        = 0x80010007\n\tRPC_E_CLIENT_DIED                                                         Handle        = 0x80010008\n\tRPC_E_INVALID_DATAPACKET                                                  Handle        = 0x80010009\n\tRPC_E_CANTTRANSMIT_CALL                                                   Handle        = 0x8001000A\n\tRPC_E_CLIENT_CANTMARSHAL_DATA                                             Handle        = 0x8001000B\n\tRPC_E_CLIENT_CANTUNMARSHAL_DATA                                           Handle        = 0x8001000C\n\tRPC_E_SERVER_CANTMARSHAL_DATA                                             Handle        = 0x8001000D\n\tRPC_E_SERVER_CANTUNMARSHAL_DATA                                           Handle        = 0x8001000E\n\tRPC_E_INVALID_DATA                                                        Handle        = 0x8001000F\n\tRPC_E_INVALID_PARAMETER                                                   Handle        = 0x80010010\n\tRPC_E_CANTCALLOUT_AGAIN                                                   Handle        = 0x80010011\n\tRPC_E_SERVER_DIED_DNE                                                     Handle        = 0x80010012\n\tRPC_E_SYS_CALL_FAILED                                                     Handle        = 0x80010100\n\tRPC_E_OUT_OF_RESOURCES                                                    Handle        = 0x80010101\n\tRPC_E_ATTEMPTED_MULTITHREAD                                               Handle        = 0x80010102\n\tRPC_E_NOT_REGISTERED                                                      Handle        = 0x80010103\n\tRPC_E_FAULT                                                               Handle        = 0x80010104\n\tRPC_E_SERVERFAULT                                                         Handle        = 0x80010105\n\tRPC_E_CHANGED_MODE                                                        Handle        = 0x80010106\n\tRPC_E_INVALIDMETHOD                                                       Handle        = 0x80010107\n\tRPC_E_DISCONNECTED                                                        Handle        = 0x80010108\n\tRPC_E_RETRY                                                               Handle        = 0x80010109\n\tRPC_E_SERVERCALL_RETRYLATER                                               Handle        = 0x8001010A\n\tRPC_E_SERVERCALL_REJECTED                                                 Handle        = 0x8001010B\n\tRPC_E_INVALID_CALLDATA                                                    Handle        = 0x8001010C\n\tRPC_E_CANTCALLOUT_ININPUTSYNCCALL                                         Handle        = 0x8001010D\n\tRPC_E_WRONG_THREAD                                                        Handle        = 0x8001010E\n\tRPC_E_THREAD_NOT_INIT                                                     Handle        = 0x8001010F\n\tRPC_E_VERSION_MISMATCH                                                    Handle        = 0x80010110\n\tRPC_E_INVALID_HEADER                                                      Handle        = 0x80010111\n\tRPC_E_INVALID_EXTENSION                                                   Handle        = 0x80010112\n\tRPC_E_INVALID_IPID                                                        Handle        = 0x80010113\n\tRPC_E_INVALID_OBJECT                                                      Handle        = 0x80010114\n\tRPC_S_CALLPENDING                                                         Handle        = 0x80010115\n\tRPC_S_WAITONTIMER                                                         Handle        = 0x80010116\n\tRPC_E_CALL_COMPLETE                                                       Handle        = 0x80010117\n\tRPC_E_UNSECURE_CALL                                                       Handle        = 0x80010118\n\tRPC_E_TOO_LATE                                                            Handle        = 0x80010119\n\tRPC_E_NO_GOOD_SECURITY_PACKAGES                                           Handle        = 0x8001011A\n\tRPC_E_ACCESS_DENIED                                                       Handle        = 0x8001011B\n\tRPC_E_REMOTE_DISABLED                                                     Handle        = 0x8001011C\n\tRPC_E_INVALID_OBJREF                                                      Handle        = 0x8001011D\n\tRPC_E_NO_CONTEXT                                                          Handle        = 0x8001011E\n\tRPC_E_TIMEOUT                                                             Handle        = 0x8001011F\n\tRPC_E_NO_SYNC                                                             Handle        = 0x80010120\n\tRPC_E_FULLSIC_REQUIRED                                                    Handle        = 0x80010121\n\tRPC_E_INVALID_STD_NAME                                                    Handle        = 0x80010122\n\tCO_E_FAILEDTOIMPERSONATE                                                  Handle        = 0x80010123\n\tCO_E_FAILEDTOGETSECCTX                                                    Handle        = 0x80010124\n\tCO_E_FAILEDTOOPENTHREADTOKEN                                              Handle        = 0x80010125\n\tCO_E_FAILEDTOGETTOKENINFO                                                 Handle        = 0x80010126\n\tCO_E_TRUSTEEDOESNTMATCHCLIENT                                             Handle        = 0x80010127\n\tCO_E_FAILEDTOQUERYCLIENTBLANKET                                           Handle        = 0x80010128\n\tCO_E_FAILEDTOSETDACL                                                      Handle        = 0x80010129\n\tCO_E_ACCESSCHECKFAILED                                                    Handle        = 0x8001012A\n\tCO_E_NETACCESSAPIFAILED                                                   Handle        = 0x8001012B\n\tCO_E_WRONGTRUSTEENAMESYNTAX                                               Handle        = 0x8001012C\n\tCO_E_INVALIDSID                                                           Handle        = 0x8001012D\n\tCO_E_CONVERSIONFAILED                                                     Handle        = 0x8001012E\n\tCO_E_NOMATCHINGSIDFOUND                                                   Handle        = 0x8001012F\n\tCO_E_LOOKUPACCSIDFAILED                                                   Handle        = 0x80010130\n\tCO_E_NOMATCHINGNAMEFOUND                                                  Handle        = 0x80010131\n\tCO_E_LOOKUPACCNAMEFAILED                                                  Handle        = 0x80010132\n\tCO_E_SETSERLHNDLFAILED                                                    Handle        = 0x80010133\n\tCO_E_FAILEDTOGETWINDIR                                                    Handle        = 0x80010134\n\tCO_E_PATHTOOLONG                                                          Handle        = 0x80010135\n\tCO_E_FAILEDTOGENUUID                                                      Handle        = 0x80010136\n\tCO_E_FAILEDTOCREATEFILE                                                   Handle        = 0x80010137\n\tCO_E_FAILEDTOCLOSEHANDLE                                                  Handle        = 0x80010138\n\tCO_E_EXCEEDSYSACLLIMIT                                                    Handle        = 0x80010139\n\tCO_E_ACESINWRONGORDER                                                     Handle        = 0x8001013A\n\tCO_E_INCOMPATIBLESTREAMVERSION                                            Handle        = 0x8001013B\n\tCO_E_FAILEDTOOPENPROCESSTOKEN                                             Handle        = 0x8001013C\n\tCO_E_DECODEFAILED                                                         Handle        = 0x8001013D\n\tCO_E_ACNOTINITIALIZED                                                     Handle        = 0x8001013F\n\tCO_E_CANCEL_DISABLED                                                      Handle        = 0x80010140\n\tRPC_E_UNEXPECTED                                                          Handle        = 0x8001FFFF\n\tERROR_AUDITING_DISABLED                                                   Handle        = 0xC0090001\n\tERROR_ALL_SIDS_FILTERED                                                   Handle        = 0xC0090002\n\tERROR_BIZRULES_NOT_ENABLED                                                Handle        = 0xC0090003\n\tNTE_BAD_UID                                                               Handle        = 0x80090001\n\tNTE_BAD_HASH                                                              Handle        = 0x80090002\n\tNTE_BAD_KEY                                                               Handle        = 0x80090003\n\tNTE_BAD_LEN                                                               Handle        = 0x80090004\n\tNTE_BAD_DATA                                                              Handle        = 0x80090005\n\tNTE_BAD_SIGNATURE                                                         Handle        = 0x80090006\n\tNTE_BAD_VER                                                               Handle        = 0x80090007\n\tNTE_BAD_ALGID                                                             Handle        = 0x80090008\n\tNTE_BAD_FLAGS                                                             Handle        = 0x80090009\n\tNTE_BAD_TYPE                                                              Handle        = 0x8009000A\n\tNTE_BAD_KEY_STATE                                                         Handle        = 0x8009000B\n\tNTE_BAD_HASH_STATE                                                        Handle        = 0x8009000C\n\tNTE_NO_KEY                                                                Handle        = 0x8009000D\n\tNTE_NO_MEMORY                                                             Handle        = 0x8009000E\n\tNTE_EXISTS                                                                Handle        = 0x8009000F\n\tNTE_PERM                                                                  Handle        = 0x80090010\n\tNTE_NOT_FOUND                                                             Handle        = 0x80090011\n\tNTE_DOUBLE_ENCRYPT                                                        Handle        = 0x80090012\n\tNTE_BAD_PROVIDER                                                          Handle        = 0x80090013\n\tNTE_BAD_PROV_TYPE                                                         Handle        = 0x80090014\n\tNTE_BAD_PUBLIC_KEY                                                        Handle        = 0x80090015\n\tNTE_BAD_KEYSET                                                            Handle        = 0x80090016\n\tNTE_PROV_TYPE_NOT_DEF                                                     Handle        = 0x80090017\n\tNTE_PROV_TYPE_ENTRY_BAD                                                   Handle        = 0x80090018\n\tNTE_KEYSET_NOT_DEF                                                        Handle        = 0x80090019\n\tNTE_KEYSET_ENTRY_BAD                                                      Handle        = 0x8009001A\n\tNTE_PROV_TYPE_NO_MATCH                                                    Handle        = 0x8009001B\n\tNTE_SIGNATURE_FILE_BAD                                                    Handle        = 0x8009001C\n\tNTE_PROVIDER_DLL_FAIL                                                     Handle        = 0x8009001D\n\tNTE_PROV_DLL_NOT_FOUND                                                    Handle        = 0x8009001E\n\tNTE_BAD_KEYSET_PARAM                                                      Handle        = 0x8009001F\n\tNTE_FAIL                                                                  Handle        = 0x80090020\n\tNTE_SYS_ERR                                                               Handle        = 0x80090021\n\tNTE_SILENT_CONTEXT                                                        Handle        = 0x80090022\n\tNTE_TOKEN_KEYSET_STORAGE_FULL                                             Handle        = 0x80090023\n\tNTE_TEMPORARY_PROFILE                                                     Handle        = 0x80090024\n\tNTE_FIXEDPARAMETER                                                        Handle        = 0x80090025\n\tNTE_INVALID_HANDLE                                                        Handle        = 0x80090026\n\tNTE_INVALID_PARAMETER                                                     Handle        = 0x80090027\n\tNTE_BUFFER_TOO_SMALL                                                      Handle        = 0x80090028\n\tNTE_NOT_SUPPORTED                                                         Handle        = 0x80090029\n\tNTE_NO_MORE_ITEMS                                                         Handle        = 0x8009002A\n\tNTE_BUFFERS_OVERLAP                                                       Handle        = 0x8009002B\n\tNTE_DECRYPTION_FAILURE                                                    Handle        = 0x8009002C\n\tNTE_INTERNAL_ERROR                                                        Handle        = 0x8009002D\n\tNTE_UI_REQUIRED                                                           Handle        = 0x8009002E\n\tNTE_HMAC_NOT_SUPPORTED                                                    Handle        = 0x8009002F\n\tNTE_DEVICE_NOT_READY                                                      Handle        = 0x80090030\n\tNTE_AUTHENTICATION_IGNORED                                                Handle        = 0x80090031\n\tNTE_VALIDATION_FAILED                                                     Handle        = 0x80090032\n\tNTE_INCORRECT_PASSWORD                                                    Handle        = 0x80090033\n\tNTE_ENCRYPTION_FAILURE                                                    Handle        = 0x80090034\n\tNTE_DEVICE_NOT_FOUND                                                      Handle        = 0x80090035\n\tNTE_USER_CANCELLED                                                        Handle        = 0x80090036\n\tNTE_PASSWORD_CHANGE_REQUIRED                                              Handle        = 0x80090037\n\tNTE_NOT_ACTIVE_CONSOLE                                                    Handle        = 0x80090038\n\tSEC_E_INSUFFICIENT_MEMORY                                                 Handle        = 0x80090300\n\tSEC_E_INVALID_HANDLE                                                      Handle        = 0x80090301\n\tSEC_E_UNSUPPORTED_FUNCTION                                                Handle        = 0x80090302\n\tSEC_E_TARGET_UNKNOWN                                                      Handle        = 0x80090303\n\tSEC_E_INTERNAL_ERROR                                                      Handle        = 0x80090304\n\tSEC_E_SECPKG_NOT_FOUND                                                    Handle        = 0x80090305\n\tSEC_E_NOT_OWNER                                                           Handle        = 0x80090306\n\tSEC_E_CANNOT_INSTALL                                                      Handle        = 0x80090307\n\tSEC_E_INVALID_TOKEN                                                       Handle        = 0x80090308\n\tSEC_E_CANNOT_PACK                                                         Handle        = 0x80090309\n\tSEC_E_QOP_NOT_SUPPORTED                                                   Handle        = 0x8009030A\n\tSEC_E_NO_IMPERSONATION                                                    Handle        = 0x8009030B\n\tSEC_E_LOGON_DENIED                                                        Handle        = 0x8009030C\n\tSEC_E_UNKNOWN_CREDENTIALS                                                 Handle        = 0x8009030D\n\tSEC_E_NO_CREDENTIALS                                                      Handle        = 0x8009030E\n\tSEC_E_MESSAGE_ALTERED                                                     Handle        = 0x8009030F\n\tSEC_E_OUT_OF_SEQUENCE                                                     Handle        = 0x80090310\n\tSEC_E_NO_AUTHENTICATING_AUTHORITY                                         Handle        = 0x80090311\n\tSEC_I_CONTINUE_NEEDED                                                     Handle        = 0x00090312\n\tSEC_I_COMPLETE_NEEDED                                                     Handle        = 0x00090313\n\tSEC_I_COMPLETE_AND_CONTINUE                                               Handle        = 0x00090314\n\tSEC_I_LOCAL_LOGON                                                         Handle        = 0x00090315\n\tSEC_I_GENERIC_EXTENSION_RECEIVED                                          Handle        = 0x00090316\n\tSEC_E_BAD_PKGID                                                           Handle        = 0x80090316\n\tSEC_E_CONTEXT_EXPIRED                                                     Handle        = 0x80090317\n\tSEC_I_CONTEXT_EXPIRED                                                     Handle        = 0x00090317\n\tSEC_E_INCOMPLETE_MESSAGE                                                  Handle        = 0x80090318\n\tSEC_E_INCOMPLETE_CREDENTIALS                                              Handle        = 0x80090320\n\tSEC_E_BUFFER_TOO_SMALL                                                    Handle        = 0x80090321\n\tSEC_I_INCOMPLETE_CREDENTIALS                                              Handle        = 0x00090320\n\tSEC_I_RENEGOTIATE                                                         Handle        = 0x00090321\n\tSEC_E_WRONG_PRINCIPAL                                                     Handle        = 0x80090322\n\tSEC_I_NO_LSA_CONTEXT                                                      Handle        = 0x00090323\n\tSEC_E_TIME_SKEW                                                           Handle        = 0x80090324\n\tSEC_E_UNTRUSTED_ROOT                                                      Handle        = 0x80090325\n\tSEC_E_ILLEGAL_MESSAGE                                                     Handle        = 0x80090326\n\tSEC_E_CERT_UNKNOWN                                                        Handle        = 0x80090327\n\tSEC_E_CERT_EXPIRED                                                        Handle        = 0x80090328\n\tSEC_E_ENCRYPT_FAILURE                                                     Handle        = 0x80090329\n\tSEC_E_DECRYPT_FAILURE                                                     Handle        = 0x80090330\n\tSEC_E_ALGORITHM_MISMATCH                                                  Handle        = 0x80090331\n\tSEC_E_SECURITY_QOS_FAILED                                                 Handle        = 0x80090332\n\tSEC_E_UNFINISHED_CONTEXT_DELETED                                          Handle        = 0x80090333\n\tSEC_E_NO_TGT_REPLY                                                        Handle        = 0x80090334\n\tSEC_E_NO_IP_ADDRESSES                                                     Handle        = 0x80090335\n\tSEC_E_WRONG_CREDENTIAL_HANDLE                                             Handle        = 0x80090336\n\tSEC_E_CRYPTO_SYSTEM_INVALID                                               Handle        = 0x80090337\n\tSEC_E_MAX_REFERRALS_EXCEEDED                                              Handle        = 0x80090338\n\tSEC_E_MUST_BE_KDC                                                         Handle        = 0x80090339\n\tSEC_E_STRONG_CRYPTO_NOT_SUPPORTED                                         Handle        = 0x8009033A\n\tSEC_E_TOO_MANY_PRINCIPALS                                                 Handle        = 0x8009033B\n\tSEC_E_NO_PA_DATA                                                          Handle        = 0x8009033C\n\tSEC_E_PKINIT_NAME_MISMATCH                                                Handle        = 0x8009033D\n\tSEC_E_SMARTCARD_LOGON_REQUIRED                                            Handle        = 0x8009033E\n\tSEC_E_SHUTDOWN_IN_PROGRESS                                                Handle        = 0x8009033F\n\tSEC_E_KDC_INVALID_REQUEST                                                 Handle        = 0x80090340\n\tSEC_E_KDC_UNABLE_TO_REFER                                                 Handle        = 0x80090341\n\tSEC_E_KDC_UNKNOWN_ETYPE                                                   Handle        = 0x80090342\n\tSEC_E_UNSUPPORTED_PREAUTH                                                 Handle        = 0x80090343\n\tSEC_E_DELEGATION_REQUIRED                                                 Handle        = 0x80090345\n\tSEC_E_BAD_BINDINGS                                                        Handle        = 0x80090346\n\tSEC_E_MULTIPLE_ACCOUNTS                                                   Handle        = 0x80090347\n\tSEC_E_NO_KERB_KEY                                                         Handle        = 0x80090348\n\tSEC_E_CERT_WRONG_USAGE                                                    Handle        = 0x80090349\n\tSEC_E_DOWNGRADE_DETECTED                                                  Handle        = 0x80090350\n\tSEC_E_SMARTCARD_CERT_REVOKED                                              Handle        = 0x80090351\n\tSEC_E_ISSUING_CA_UNTRUSTED                                                Handle        = 0x80090352\n\tSEC_E_REVOCATION_OFFLINE_C                                                Handle        = 0x80090353\n\tSEC_E_PKINIT_CLIENT_FAILURE                                               Handle        = 0x80090354\n\tSEC_E_SMARTCARD_CERT_EXPIRED                                              Handle        = 0x80090355\n\tSEC_E_NO_S4U_PROT_SUPPORT                                                 Handle        = 0x80090356\n\tSEC_E_CROSSREALM_DELEGATION_FAILURE                                       Handle        = 0x80090357\n\tSEC_E_REVOCATION_OFFLINE_KDC                                              Handle        = 0x80090358\n\tSEC_E_ISSUING_CA_UNTRUSTED_KDC                                            Handle        = 0x80090359\n\tSEC_E_KDC_CERT_EXPIRED                                                    Handle        = 0x8009035A\n\tSEC_E_KDC_CERT_REVOKED                                                    Handle        = 0x8009035B\n\tSEC_I_SIGNATURE_NEEDED                                                    Handle        = 0x0009035C\n\tSEC_E_INVALID_PARAMETER                                                   Handle        = 0x8009035D\n\tSEC_E_DELEGATION_POLICY                                                   Handle        = 0x8009035E\n\tSEC_E_POLICY_NLTM_ONLY                                                    Handle        = 0x8009035F\n\tSEC_I_NO_RENEGOTIATION                                                    Handle        = 0x00090360\n\tSEC_E_NO_CONTEXT                                                          Handle        = 0x80090361\n\tSEC_E_PKU2U_CERT_FAILURE                                                  Handle        = 0x80090362\n\tSEC_E_MUTUAL_AUTH_FAILED                                                  Handle        = 0x80090363\n\tSEC_I_MESSAGE_FRAGMENT                                                    Handle        = 0x00090364\n\tSEC_E_ONLY_HTTPS_ALLOWED                                                  Handle        = 0x80090365\n\tSEC_I_CONTINUE_NEEDED_MESSAGE_OK                                          Handle        = 0x00090366\n\tSEC_E_APPLICATION_PROTOCOL_MISMATCH                                       Handle        = 0x80090367\n\tSEC_I_ASYNC_CALL_PENDING                                                  Handle        = 0x00090368\n\tSEC_E_INVALID_UPN_NAME                                                    Handle        = 0x80090369\n\tSEC_E_EXT_BUFFER_TOO_SMALL                                                Handle        = 0x8009036A\n\tSEC_E_INSUFFICIENT_BUFFERS                                                Handle        = 0x8009036B\n\tSEC_E_NO_SPM                                                                            = SEC_E_INTERNAL_ERROR\n\tSEC_E_NOT_SUPPORTED                                                                     = SEC_E_UNSUPPORTED_FUNCTION\n\tCRYPT_E_MSG_ERROR                                                         Handle        = 0x80091001\n\tCRYPT_E_UNKNOWN_ALGO                                                      Handle        = 0x80091002\n\tCRYPT_E_OID_FORMAT                                                        Handle        = 0x80091003\n\tCRYPT_E_INVALID_MSG_TYPE                                                  Handle        = 0x80091004\n\tCRYPT_E_UNEXPECTED_ENCODING                                               Handle        = 0x80091005\n\tCRYPT_E_AUTH_ATTR_MISSING                                                 Handle        = 0x80091006\n\tCRYPT_E_HASH_VALUE                                                        Handle        = 0x80091007\n\tCRYPT_E_INVALID_INDEX                                                     Handle        = 0x80091008\n\tCRYPT_E_ALREADY_DECRYPTED                                                 Handle        = 0x80091009\n\tCRYPT_E_NOT_DECRYPTED                                                     Handle        = 0x8009100A\n\tCRYPT_E_RECIPIENT_NOT_FOUND                                               Handle        = 0x8009100B\n\tCRYPT_E_CONTROL_TYPE                                                      Handle        = 0x8009100C\n\tCRYPT_E_ISSUER_SERIALNUMBER                                               Handle        = 0x8009100D\n\tCRYPT_E_SIGNER_NOT_FOUND                                                  Handle        = 0x8009100E\n\tCRYPT_E_ATTRIBUTES_MISSING                                                Handle        = 0x8009100F\n\tCRYPT_E_STREAM_MSG_NOT_READY                                              Handle        = 0x80091010\n\tCRYPT_E_STREAM_INSUFFICIENT_DATA                                          Handle        = 0x80091011\n\tCRYPT_I_NEW_PROTECTION_REQUIRED                                           Handle        = 0x00091012\n\tCRYPT_E_BAD_LEN                                                           Handle        = 0x80092001\n\tCRYPT_E_BAD_ENCODE                                                        Handle        = 0x80092002\n\tCRYPT_E_FILE_ERROR                                                        Handle        = 0x80092003\n\tCRYPT_E_NOT_FOUND                                                         Handle        = 0x80092004\n\tCRYPT_E_EXISTS                                                            Handle        = 0x80092005\n\tCRYPT_E_NO_PROVIDER                                                       Handle        = 0x80092006\n\tCRYPT_E_SELF_SIGNED                                                       Handle        = 0x80092007\n\tCRYPT_E_DELETED_PREV                                                      Handle        = 0x80092008\n\tCRYPT_E_NO_MATCH                                                          Handle        = 0x80092009\n\tCRYPT_E_UNEXPECTED_MSG_TYPE                                               Handle        = 0x8009200A\n\tCRYPT_E_NO_KEY_PROPERTY                                                   Handle        = 0x8009200B\n\tCRYPT_E_NO_DECRYPT_CERT                                                   Handle        = 0x8009200C\n\tCRYPT_E_BAD_MSG                                                           Handle        = 0x8009200D\n\tCRYPT_E_NO_SIGNER                                                         Handle        = 0x8009200E\n\tCRYPT_E_PENDING_CLOSE                                                     Handle        = 0x8009200F\n\tCRYPT_E_REVOKED                                                           Handle        = 0x80092010\n\tCRYPT_E_NO_REVOCATION_DLL                                                 Handle        = 0x80092011\n\tCRYPT_E_NO_REVOCATION_CHECK                                               Handle        = 0x80092012\n\tCRYPT_E_REVOCATION_OFFLINE                                                Handle        = 0x80092013\n\tCRYPT_E_NOT_IN_REVOCATION_DATABASE                                        Handle        = 0x80092014\n\tCRYPT_E_INVALID_NUMERIC_STRING                                            Handle        = 0x80092020\n\tCRYPT_E_INVALID_PRINTABLE_STRING                                          Handle        = 0x80092021\n\tCRYPT_E_INVALID_IA5_STRING                                                Handle        = 0x80092022\n\tCRYPT_E_INVALID_X500_STRING                                               Handle        = 0x80092023\n\tCRYPT_E_NOT_CHAR_STRING                                                   Handle        = 0x80092024\n\tCRYPT_E_FILERESIZED                                                       Handle        = 0x80092025\n\tCRYPT_E_SECURITY_SETTINGS                                                 Handle        = 0x80092026\n\tCRYPT_E_NO_VERIFY_USAGE_DLL                                               Handle        = 0x80092027\n\tCRYPT_E_NO_VERIFY_USAGE_CHECK                                             Handle        = 0x80092028\n\tCRYPT_E_VERIFY_USAGE_OFFLINE                                              Handle        = 0x80092029\n\tCRYPT_E_NOT_IN_CTL                                                        Handle        = 0x8009202A\n\tCRYPT_E_NO_TRUSTED_SIGNER                                                 Handle        = 0x8009202B\n\tCRYPT_E_MISSING_PUBKEY_PARA                                               Handle        = 0x8009202C\n\tCRYPT_E_OBJECT_LOCATOR_OBJECT_NOT_FOUND                                   Handle        = 0x8009202D\n\tCRYPT_E_OSS_ERROR                                                         Handle        = 0x80093000\n\tOSS_MORE_BUF                                                              Handle        = 0x80093001\n\tOSS_NEGATIVE_UINTEGER                                                     Handle        = 0x80093002\n\tOSS_PDU_RANGE                                                             Handle        = 0x80093003\n\tOSS_MORE_INPUT                                                            Handle        = 0x80093004\n\tOSS_DATA_ERROR                                                            Handle        = 0x80093005\n\tOSS_BAD_ARG                                                               Handle        = 0x80093006\n\tOSS_BAD_VERSION                                                           Handle        = 0x80093007\n\tOSS_OUT_MEMORY                                                            Handle        = 0x80093008\n\tOSS_PDU_MISMATCH                                                          Handle        = 0x80093009\n\tOSS_LIMITED                                                               Handle        = 0x8009300A\n\tOSS_BAD_PTR                                                               Handle        = 0x8009300B\n\tOSS_BAD_TIME                                                              Handle        = 0x8009300C\n\tOSS_INDEFINITE_NOT_SUPPORTED                                              Handle        = 0x8009300D\n\tOSS_MEM_ERROR                                                             Handle        = 0x8009300E\n\tOSS_BAD_TABLE                                                             Handle        = 0x8009300F\n\tOSS_TOO_LONG                                                              Handle        = 0x80093010\n\tOSS_CONSTRAINT_VIOLATED                                                   Handle        = 0x80093011\n\tOSS_FATAL_ERROR                                                           Handle        = 0x80093012\n\tOSS_ACCESS_SERIALIZATION_ERROR                                            Handle        = 0x80093013\n\tOSS_NULL_TBL                                                              Handle        = 0x80093014\n\tOSS_NULL_FCN                                                              Handle        = 0x80093015\n\tOSS_BAD_ENCRULES                                                          Handle        = 0x80093016\n\tOSS_UNAVAIL_ENCRULES                                                      Handle        = 0x80093017\n\tOSS_CANT_OPEN_TRACE_WINDOW                                                Handle        = 0x80093018\n\tOSS_UNIMPLEMENTED                                                         Handle        = 0x80093019\n\tOSS_OID_DLL_NOT_LINKED                                                    Handle        = 0x8009301A\n\tOSS_CANT_OPEN_TRACE_FILE                                                  Handle        = 0x8009301B\n\tOSS_TRACE_FILE_ALREADY_OPEN                                               Handle        = 0x8009301C\n\tOSS_TABLE_MISMATCH                                                        Handle        = 0x8009301D\n\tOSS_TYPE_NOT_SUPPORTED                                                    Handle        = 0x8009301E\n\tOSS_REAL_DLL_NOT_LINKED                                                   Handle        = 0x8009301F\n\tOSS_REAL_CODE_NOT_LINKED                                                  Handle        = 0x80093020\n\tOSS_OUT_OF_RANGE                                                          Handle        = 0x80093021\n\tOSS_COPIER_DLL_NOT_LINKED                                                 Handle        = 0x80093022\n\tOSS_CONSTRAINT_DLL_NOT_LINKED                                             Handle        = 0x80093023\n\tOSS_COMPARATOR_DLL_NOT_LINKED                                             Handle        = 0x80093024\n\tOSS_COMPARATOR_CODE_NOT_LINKED                                            Handle        = 0x80093025\n\tOSS_MEM_MGR_DLL_NOT_LINKED                                                Handle        = 0x80093026\n\tOSS_PDV_DLL_NOT_LINKED                                                    Handle        = 0x80093027\n\tOSS_PDV_CODE_NOT_LINKED                                                   Handle        = 0x80093028\n\tOSS_API_DLL_NOT_LINKED                                                    Handle        = 0x80093029\n\tOSS_BERDER_DLL_NOT_LINKED                                                 Handle        = 0x8009302A\n\tOSS_PER_DLL_NOT_LINKED                                                    Handle        = 0x8009302B\n\tOSS_OPEN_TYPE_ERROR                                                       Handle        = 0x8009302C\n\tOSS_MUTEX_NOT_CREATED                                                     Handle        = 0x8009302D\n\tOSS_CANT_CLOSE_TRACE_FILE                                                 Handle        = 0x8009302E\n\tCRYPT_E_ASN1_ERROR                                                        Handle        = 0x80093100\n\tCRYPT_E_ASN1_INTERNAL                                                     Handle        = 0x80093101\n\tCRYPT_E_ASN1_EOD                                                          Handle        = 0x80093102\n\tCRYPT_E_ASN1_CORRUPT                                                      Handle        = 0x80093103\n\tCRYPT_E_ASN1_LARGE                                                        Handle        = 0x80093104\n\tCRYPT_E_ASN1_CONSTRAINT                                                   Handle        = 0x80093105\n\tCRYPT_E_ASN1_MEMORY                                                       Handle        = 0x80093106\n\tCRYPT_E_ASN1_OVERFLOW                                                     Handle        = 0x80093107\n\tCRYPT_E_ASN1_BADPDU                                                       Handle        = 0x80093108\n\tCRYPT_E_ASN1_BADARGS                                                      Handle        = 0x80093109\n\tCRYPT_E_ASN1_BADREAL                                                      Handle        = 0x8009310A\n\tCRYPT_E_ASN1_BADTAG                                                       Handle        = 0x8009310B\n\tCRYPT_E_ASN1_CHOICE                                                       Handle        = 0x8009310C\n\tCRYPT_E_ASN1_RULE                                                         Handle        = 0x8009310D\n\tCRYPT_E_ASN1_UTF8                                                         Handle        = 0x8009310E\n\tCRYPT_E_ASN1_PDU_TYPE                                                     Handle        = 0x80093133\n\tCRYPT_E_ASN1_NYI                                                          Handle        = 0x80093134\n\tCRYPT_E_ASN1_EXTENDED                                                     Handle        = 0x80093201\n\tCRYPT_E_ASN1_NOEOD                                                        Handle        = 0x80093202\n\tCERTSRV_E_BAD_REQUESTSUBJECT                                              Handle        = 0x80094001\n\tCERTSRV_E_NO_REQUEST                                                      Handle        = 0x80094002\n\tCERTSRV_E_BAD_REQUESTSTATUS                                               Handle        = 0x80094003\n\tCERTSRV_E_PROPERTY_EMPTY                                                  Handle        = 0x80094004\n\tCERTSRV_E_INVALID_CA_CERTIFICATE                                          Handle        = 0x80094005\n\tCERTSRV_E_SERVER_SUSPENDED                                                Handle        = 0x80094006\n\tCERTSRV_E_ENCODING_LENGTH                                                 Handle        = 0x80094007\n\tCERTSRV_E_ROLECONFLICT                                                    Handle        = 0x80094008\n\tCERTSRV_E_RESTRICTEDOFFICER                                               Handle        = 0x80094009\n\tCERTSRV_E_KEY_ARCHIVAL_NOT_CONFIGURED                                     Handle        = 0x8009400A\n\tCERTSRV_E_NO_VALID_KRA                                                    Handle        = 0x8009400B\n\tCERTSRV_E_BAD_REQUEST_KEY_ARCHIVAL                                        Handle        = 0x8009400C\n\tCERTSRV_E_NO_CAADMIN_DEFINED                                              Handle        = 0x8009400D\n\tCERTSRV_E_BAD_RENEWAL_CERT_ATTRIBUTE                                      Handle        = 0x8009400E\n\tCERTSRV_E_NO_DB_SESSIONS                                                  Handle        = 0x8009400F\n\tCERTSRV_E_ALIGNMENT_FAULT                                                 Handle        = 0x80094010\n\tCERTSRV_E_ENROLL_DENIED                                                   Handle        = 0x80094011\n\tCERTSRV_E_TEMPLATE_DENIED                                                 Handle        = 0x80094012\n\tCERTSRV_E_DOWNLEVEL_DC_SSL_OR_UPGRADE                                     Handle        = 0x80094013\n\tCERTSRV_E_ADMIN_DENIED_REQUEST                                            Handle        = 0x80094014\n\tCERTSRV_E_NO_POLICY_SERVER                                                Handle        = 0x80094015\n\tCERTSRV_E_WEAK_SIGNATURE_OR_KEY                                           Handle        = 0x80094016\n\tCERTSRV_E_KEY_ATTESTATION_NOT_SUPPORTED                                   Handle        = 0x80094017\n\tCERTSRV_E_ENCRYPTION_CERT_REQUIRED                                        Handle        = 0x80094018\n\tCERTSRV_E_UNSUPPORTED_CERT_TYPE                                           Handle        = 0x80094800\n\tCERTSRV_E_NO_CERT_TYPE                                                    Handle        = 0x80094801\n\tCERTSRV_E_TEMPLATE_CONFLICT                                               Handle        = 0x80094802\n\tCERTSRV_E_SUBJECT_ALT_NAME_REQUIRED                                       Handle        = 0x80094803\n\tCERTSRV_E_ARCHIVED_KEY_REQUIRED                                           Handle        = 0x80094804\n\tCERTSRV_E_SMIME_REQUIRED                                                  Handle        = 0x80094805\n\tCERTSRV_E_BAD_RENEWAL_SUBJECT                                             Handle        = 0x80094806\n\tCERTSRV_E_BAD_TEMPLATE_VERSION                                            Handle        = 0x80094807\n\tCERTSRV_E_TEMPLATE_POLICY_REQUIRED                                        Handle        = 0x80094808\n\tCERTSRV_E_SIGNATURE_POLICY_REQUIRED                                       Handle        = 0x80094809\n\tCERTSRV_E_SIGNATURE_COUNT                                                 Handle        = 0x8009480A\n\tCERTSRV_E_SIGNATURE_REJECTED                                              Handle        = 0x8009480B\n\tCERTSRV_E_ISSUANCE_POLICY_REQUIRED                                        Handle        = 0x8009480C\n\tCERTSRV_E_SUBJECT_UPN_REQUIRED                                            Handle        = 0x8009480D\n\tCERTSRV_E_SUBJECT_DIRECTORY_GUID_REQUIRED                                 Handle        = 0x8009480E\n\tCERTSRV_E_SUBJECT_DNS_REQUIRED                                            Handle        = 0x8009480F\n\tCERTSRV_E_ARCHIVED_KEY_UNEXPECTED                                         Handle        = 0x80094810\n\tCERTSRV_E_KEY_LENGTH                                                      Handle        = 0x80094811\n\tCERTSRV_E_SUBJECT_EMAIL_REQUIRED                                          Handle        = 0x80094812\n\tCERTSRV_E_UNKNOWN_CERT_TYPE                                               Handle        = 0x80094813\n\tCERTSRV_E_CERT_TYPE_OVERLAP                                               Handle        = 0x80094814\n\tCERTSRV_E_TOO_MANY_SIGNATURES                                             Handle        = 0x80094815\n\tCERTSRV_E_RENEWAL_BAD_PUBLIC_KEY                                          Handle        = 0x80094816\n\tCERTSRV_E_INVALID_EK                                                      Handle        = 0x80094817\n\tCERTSRV_E_INVALID_IDBINDING                                               Handle        = 0x80094818\n\tCERTSRV_E_INVALID_ATTESTATION                                             Handle        = 0x80094819\n\tCERTSRV_E_KEY_ATTESTATION                                                 Handle        = 0x8009481A\n\tCERTSRV_E_CORRUPT_KEY_ATTESTATION                                         Handle        = 0x8009481B\n\tCERTSRV_E_EXPIRED_CHALLENGE                                               Handle        = 0x8009481C\n\tCERTSRV_E_INVALID_RESPONSE                                                Handle        = 0x8009481D\n\tCERTSRV_E_INVALID_REQUESTID                                               Handle        = 0x8009481E\n\tCERTSRV_E_REQUEST_PRECERTIFICATE_MISMATCH                                 Handle        = 0x8009481F\n\tCERTSRV_E_PENDING_CLIENT_RESPONSE                                         Handle        = 0x80094820\n\tXENROLL_E_KEY_NOT_EXPORTABLE                                              Handle        = 0x80095000\n\tXENROLL_E_CANNOT_ADD_ROOT_CERT                                            Handle        = 0x80095001\n\tXENROLL_E_RESPONSE_KA_HASH_NOT_FOUND                                      Handle        = 0x80095002\n\tXENROLL_E_RESPONSE_UNEXPECTED_KA_HASH                                     Handle        = 0x80095003\n\tXENROLL_E_RESPONSE_KA_HASH_MISMATCH                                       Handle        = 0x80095004\n\tXENROLL_E_KEYSPEC_SMIME_MISMATCH                                          Handle        = 0x80095005\n\tTRUST_E_SYSTEM_ERROR                                                      Handle        = 0x80096001\n\tTRUST_E_NO_SIGNER_CERT                                                    Handle        = 0x80096002\n\tTRUST_E_COUNTER_SIGNER                                                    Handle        = 0x80096003\n\tTRUST_E_CERT_SIGNATURE                                                    Handle        = 0x80096004\n\tTRUST_E_TIME_STAMP                                                        Handle        = 0x80096005\n\tTRUST_E_BAD_DIGEST                                                        Handle        = 0x80096010\n\tTRUST_E_MALFORMED_SIGNATURE                                               Handle        = 0x80096011\n\tTRUST_E_BASIC_CONSTRAINTS                                                 Handle        = 0x80096019\n\tTRUST_E_FINANCIAL_CRITERIA                                                Handle        = 0x8009601E\n\tMSSIPOTF_E_OUTOFMEMRANGE                                                  Handle        = 0x80097001\n\tMSSIPOTF_E_CANTGETOBJECT                                                  Handle        = 0x80097002\n\tMSSIPOTF_E_NOHEADTABLE                                                    Handle        = 0x80097003\n\tMSSIPOTF_E_BAD_MAGICNUMBER                                                Handle        = 0x80097004\n\tMSSIPOTF_E_BAD_OFFSET_TABLE                                               Handle        = 0x80097005\n\tMSSIPOTF_E_TABLE_TAGORDER                                                 Handle        = 0x80097006\n\tMSSIPOTF_E_TABLE_LONGWORD                                                 Handle        = 0x80097007\n\tMSSIPOTF_E_BAD_FIRST_TABLE_PLACEMENT                                      Handle        = 0x80097008\n\tMSSIPOTF_E_TABLES_OVERLAP                                                 Handle        = 0x80097009\n\tMSSIPOTF_E_TABLE_PADBYTES                                                 Handle        = 0x8009700A\n\tMSSIPOTF_E_FILETOOSMALL                                                   Handle        = 0x8009700B\n\tMSSIPOTF_E_TABLE_CHECKSUM                                                 Handle        = 0x8009700C\n\tMSSIPOTF_E_FILE_CHECKSUM                                                  Handle        = 0x8009700D\n\tMSSIPOTF_E_FAILED_POLICY                                                  Handle        = 0x80097010\n\tMSSIPOTF_E_FAILED_HINTS_CHECK                                             Handle        = 0x80097011\n\tMSSIPOTF_E_NOT_OPENTYPE                                                   Handle        = 0x80097012\n\tMSSIPOTF_E_FILE                                                           Handle        = 0x80097013\n\tMSSIPOTF_E_CRYPT                                                          Handle        = 0x80097014\n\tMSSIPOTF_E_BADVERSION                                                     Handle        = 0x80097015\n\tMSSIPOTF_E_DSIG_STRUCTURE                                                 Handle        = 0x80097016\n\tMSSIPOTF_E_PCONST_CHECK                                                   Handle        = 0x80097017\n\tMSSIPOTF_E_STRUCTURE                                                      Handle        = 0x80097018\n\tERROR_CRED_REQUIRES_CONFIRMATION                                          Handle        = 0x80097019\n\tNTE_OP_OK                                                                 syscall.Errno = 0\n\tTRUST_E_PROVIDER_UNKNOWN                                                  Handle        = 0x800B0001\n\tTRUST_E_ACTION_UNKNOWN                                                    Handle        = 0x800B0002\n\tTRUST_E_SUBJECT_FORM_UNKNOWN                                              Handle        = 0x800B0003\n\tTRUST_E_SUBJECT_NOT_TRUSTED                                               Handle        = 0x800B0004\n\tDIGSIG_E_ENCODE                                                           Handle        = 0x800B0005\n\tDIGSIG_E_DECODE                                                           Handle        = 0x800B0006\n\tDIGSIG_E_EXTENSIBILITY                                                    Handle        = 0x800B0007\n\tDIGSIG_E_CRYPTO                                                           Handle        = 0x800B0008\n\tPERSIST_E_SIZEDEFINITE                                                    Handle        = 0x800B0009\n\tPERSIST_E_SIZEINDEFINITE                                                  Handle        = 0x800B000A\n\tPERSIST_E_NOTSELFSIZING                                                   Handle        = 0x800B000B\n\tTRUST_E_NOSIGNATURE                                                       Handle        = 0x800B0100\n\tCERT_E_EXPIRED                                                            Handle        = 0x800B0101\n\tCERT_E_VALIDITYPERIODNESTING                                              Handle        = 0x800B0102\n\tCERT_E_ROLE                                                               Handle        = 0x800B0103\n\tCERT_E_PATHLENCONST                                                       Handle        = 0x800B0104\n\tCERT_E_CRITICAL                                                           Handle        = 0x800B0105\n\tCERT_E_PURPOSE                                                            Handle        = 0x800B0106\n\tCERT_E_ISSUERCHAINING                                                     Handle        = 0x800B0107\n\tCERT_E_MALFORMED                                                          Handle        = 0x800B0108\n\tCERT_E_UNTRUSTEDROOT                                                      Handle        = 0x800B0109\n\tCERT_E_CHAINING                                                           Handle        = 0x800B010A\n\tTRUST_E_FAIL                                                              Handle        = 0x800B010B\n\tCERT_E_REVOKED                                                            Handle        = 0x800B010C\n\tCERT_E_UNTRUSTEDTESTROOT                                                  Handle        = 0x800B010D\n\tCERT_E_REVOCATION_FAILURE                                                 Handle        = 0x800B010E\n\tCERT_E_CN_NO_MATCH                                                        Handle        = 0x800B010F\n\tCERT_E_WRONG_USAGE                                                        Handle        = 0x800B0110\n\tTRUST_E_EXPLICIT_DISTRUST                                                 Handle        = 0x800B0111\n\tCERT_E_UNTRUSTEDCA                                                        Handle        = 0x800B0112\n\tCERT_E_INVALID_POLICY                                                     Handle        = 0x800B0113\n\tCERT_E_INVALID_NAME                                                       Handle        = 0x800B0114\n\tSPAPI_E_EXPECTED_SECTION_NAME                                             Handle        = 0x800F0000\n\tSPAPI_E_BAD_SECTION_NAME_LINE                                             Handle        = 0x800F0001\n\tSPAPI_E_SECTION_NAME_TOO_LONG                                             Handle        = 0x800F0002\n\tSPAPI_E_GENERAL_SYNTAX                                                    Handle        = 0x800F0003\n\tSPAPI_E_WRONG_INF_STYLE                                                   Handle        = 0x800F0100\n\tSPAPI_E_SECTION_NOT_FOUND                                                 Handle        = 0x800F0101\n\tSPAPI_E_LINE_NOT_FOUND                                                    Handle        = 0x800F0102\n\tSPAPI_E_NO_BACKUP                                                         Handle        = 0x800F0103\n\tSPAPI_E_NO_ASSOCIATED_CLASS                                               Handle        = 0x800F0200\n\tSPAPI_E_CLASS_MISMATCH                                                    Handle        = 0x800F0201\n\tSPAPI_E_DUPLICATE_FOUND                                                   Handle        = 0x800F0202\n\tSPAPI_E_NO_DRIVER_SELECTED                                                Handle        = 0x800F0203\n\tSPAPI_E_KEY_DOES_NOT_EXIST                                                Handle        = 0x800F0204\n\tSPAPI_E_INVALID_DEVINST_NAME                                              Handle        = 0x800F0205\n\tSPAPI_E_INVALID_CLASS                                                     Handle        = 0x800F0206\n\tSPAPI_E_DEVINST_ALREADY_EXISTS                                            Handle        = 0x800F0207\n\tSPAPI_E_DEVINFO_NOT_REGISTERED                                            Handle        = 0x800F0208\n\tSPAPI_E_INVALID_REG_PROPERTY                                              Handle        = 0x800F0209\n\tSPAPI_E_NO_INF                                                            Handle        = 0x800F020A\n\tSPAPI_E_NO_SUCH_DEVINST                                                   Handle        = 0x800F020B\n\tSPAPI_E_CANT_LOAD_CLASS_ICON                                              Handle        = 0x800F020C\n\tSPAPI_E_INVALID_CLASS_INSTALLER                                           Handle        = 0x800F020D\n\tSPAPI_E_DI_DO_DEFAULT                                                     Handle        = 0x800F020E\n\tSPAPI_E_DI_NOFILECOPY                                                     Handle        = 0x800F020F\n\tSPAPI_E_INVALID_HWPROFILE                                                 Handle        = 0x800F0210\n\tSPAPI_E_NO_DEVICE_SELECTED                                                Handle        = 0x800F0211\n\tSPAPI_E_DEVINFO_LIST_LOCKED                                               Handle        = 0x800F0212\n\tSPAPI_E_DEVINFO_DATA_LOCKED                                               Handle        = 0x800F0213\n\tSPAPI_E_DI_BAD_PATH                                                       Handle        = 0x800F0214\n\tSPAPI_E_NO_CLASSINSTALL_PARAMS                                            Handle        = 0x800F0215\n\tSPAPI_E_FILEQUEUE_LOCKED                                                  Handle        = 0x800F0216\n\tSPAPI_E_BAD_SERVICE_INSTALLSECT                                           Handle        = 0x800F0217\n\tSPAPI_E_NO_CLASS_DRIVER_LIST                                              Handle        = 0x800F0218\n\tSPAPI_E_NO_ASSOCIATED_SERVICE                                             Handle        = 0x800F0219\n\tSPAPI_E_NO_DEFAULT_DEVICE_INTERFACE                                       Handle        = 0x800F021A\n\tSPAPI_E_DEVICE_INTERFACE_ACTIVE                                           Handle        = 0x800F021B\n\tSPAPI_E_DEVICE_INTERFACE_REMOVED                                          Handle        = 0x800F021C\n\tSPAPI_E_BAD_INTERFACE_INSTALLSECT                                         Handle        = 0x800F021D\n\tSPAPI_E_NO_SUCH_INTERFACE_CLASS                                           Handle        = 0x800F021E\n\tSPAPI_E_INVALID_REFERENCE_STRING                                          Handle        = 0x800F021F\n\tSPAPI_E_INVALID_MACHINENAME                                               Handle        = 0x800F0220\n\tSPAPI_E_REMOTE_COMM_FAILURE                                               Handle        = 0x800F0221\n\tSPAPI_E_MACHINE_UNAVAILABLE                                               Handle        = 0x800F0222\n\tSPAPI_E_NO_CONFIGMGR_SERVICES                                             Handle        = 0x800F0223\n\tSPAPI_E_INVALID_PROPPAGE_PROVIDER                                         Handle        = 0x800F0224\n\tSPAPI_E_NO_SUCH_DEVICE_INTERFACE                                          Handle        = 0x800F0225\n\tSPAPI_E_DI_POSTPROCESSING_REQUIRED                                        Handle        = 0x800F0226\n\tSPAPI_E_INVALID_COINSTALLER                                               Handle        = 0x800F0227\n\tSPAPI_E_NO_COMPAT_DRIVERS                                                 Handle        = 0x800F0228\n\tSPAPI_E_NO_DEVICE_ICON                                                    Handle        = 0x800F0229\n\tSPAPI_E_INVALID_INF_LOGCONFIG                                             Handle        = 0x800F022A\n\tSPAPI_E_DI_DONT_INSTALL                                                   Handle        = 0x800F022B\n\tSPAPI_E_INVALID_FILTER_DRIVER                                             Handle        = 0x800F022C\n\tSPAPI_E_NON_WINDOWS_NT_DRIVER                                             Handle        = 0x800F022D\n\tSPAPI_E_NON_WINDOWS_DRIVER                                                Handle        = 0x800F022E\n\tSPAPI_E_NO_CATALOG_FOR_OEM_INF                                            Handle        = 0x800F022F\n\tSPAPI_E_DEVINSTALL_QUEUE_NONNATIVE                                        Handle        = 0x800F0230\n\tSPAPI_E_NOT_DISABLEABLE                                                   Handle        = 0x800F0231\n\tSPAPI_E_CANT_REMOVE_DEVINST                                               Handle        = 0x800F0232\n\tSPAPI_E_INVALID_TARGET                                                    Handle        = 0x800F0233\n\tSPAPI_E_DRIVER_NONNATIVE                                                  Handle        = 0x800F0234\n\tSPAPI_E_IN_WOW64                                                          Handle        = 0x800F0235\n\tSPAPI_E_SET_SYSTEM_RESTORE_POINT                                          Handle        = 0x800F0236\n\tSPAPI_E_INCORRECTLY_COPIED_INF                                            Handle        = 0x800F0237\n\tSPAPI_E_SCE_DISABLED                                                      Handle        = 0x800F0238\n\tSPAPI_E_UNKNOWN_EXCEPTION                                                 Handle        = 0x800F0239\n\tSPAPI_E_PNP_REGISTRY_ERROR                                                Handle        = 0x800F023A\n\tSPAPI_E_REMOTE_REQUEST_UNSUPPORTED                                        Handle        = 0x800F023B\n\tSPAPI_E_NOT_AN_INSTALLED_OEM_INF                                          Handle        = 0x800F023C\n\tSPAPI_E_INF_IN_USE_BY_DEVICES                                             Handle        = 0x800F023D\n\tSPAPI_E_DI_FUNCTION_OBSOLETE                                              Handle        = 0x800F023E\n\tSPAPI_E_NO_AUTHENTICODE_CATALOG                                           Handle        = 0x800F023F\n\tSPAPI_E_AUTHENTICODE_DISALLOWED                                           Handle        = 0x800F0240\n\tSPAPI_E_AUTHENTICODE_TRUSTED_PUBLISHER                                    Handle        = 0x800F0241\n\tSPAPI_E_AUTHENTICODE_TRUST_NOT_ESTABLISHED                                Handle        = 0x800F0242\n\tSPAPI_E_AUTHENTICODE_PUBLISHER_NOT_TRUSTED                                Handle        = 0x800F0243\n\tSPAPI_E_SIGNATURE_OSATTRIBUTE_MISMATCH                                    Handle        = 0x800F0244\n\tSPAPI_E_ONLY_VALIDATE_VIA_AUTHENTICODE                                    Handle        = 0x800F0245\n\tSPAPI_E_DEVICE_INSTALLER_NOT_READY                                        Handle        = 0x800F0246\n\tSPAPI_E_DRIVER_STORE_ADD_FAILED                                           Handle        = 0x800F0247\n\tSPAPI_E_DEVICE_INSTALL_BLOCKED                                            Handle        = 0x800F0248\n\tSPAPI_E_DRIVER_INSTALL_BLOCKED                                            Handle        = 0x800F0249\n\tSPAPI_E_WRONG_INF_TYPE                                                    Handle        = 0x800F024A\n\tSPAPI_E_FILE_HASH_NOT_IN_CATALOG                                          Handle        = 0x800F024B\n\tSPAPI_E_DRIVER_STORE_DELETE_FAILED                                        Handle        = 0x800F024C\n\tSPAPI_E_UNRECOVERABLE_STACK_OVERFLOW                                      Handle        = 0x800F0300\n\tSPAPI_E_ERROR_NOT_INSTALLED                                               Handle        = 0x800F1000\n\tSCARD_S_SUCCESS                                                                         = S_OK\n\tSCARD_F_INTERNAL_ERROR                                                    Handle        = 0x80100001\n\tSCARD_E_CANCELLED                                                         Handle        = 0x80100002\n\tSCARD_E_INVALID_HANDLE                                                    Handle        = 0x80100003\n\tSCARD_E_INVALID_PARAMETER                                                 Handle        = 0x80100004\n\tSCARD_E_INVALID_TARGET                                                    Handle        = 0x80100005\n\tSCARD_E_NO_MEMORY                                                         Handle        = 0x80100006\n\tSCARD_F_WAITED_TOO_LONG                                                   Handle        = 0x80100007\n\tSCARD_E_INSUFFICIENT_BUFFER                                               Handle        = 0x80100008\n\tSCARD_E_UNKNOWN_READER                                                    Handle        = 0x80100009\n\tSCARD_E_TIMEOUT                                                           Handle        = 0x8010000A\n\tSCARD_E_SHARING_VIOLATION                                                 Handle        = 0x8010000B\n\tSCARD_E_NO_SMARTCARD                                                      Handle        = 0x8010000C\n\tSCARD_E_UNKNOWN_CARD                                                      Handle        = 0x8010000D\n\tSCARD_E_CANT_DISPOSE                                                      Handle        = 0x8010000E\n\tSCARD_E_PROTO_MISMATCH                                                    Handle        = 0x8010000F\n\tSCARD_E_NOT_READY                                                         Handle        = 0x80100010\n\tSCARD_E_INVALID_VALUE                                                     Handle        = 0x80100011\n\tSCARD_E_SYSTEM_CANCELLED                                                  Handle        = 0x80100012\n\tSCARD_F_COMM_ERROR                                                        Handle        = 0x80100013\n\tSCARD_F_UNKNOWN_ERROR                                                     Handle        = 0x80100014\n\tSCARD_E_INVALID_ATR                                                       Handle        = 0x80100015\n\tSCARD_E_NOT_TRANSACTED                                                    Handle        = 0x80100016\n\tSCARD_E_READER_UNAVAILABLE                                                Handle        = 0x80100017\n\tSCARD_P_SHUTDOWN                                                          Handle        = 0x80100018\n\tSCARD_E_PCI_TOO_SMALL                                                     Handle        = 0x80100019\n\tSCARD_E_READER_UNSUPPORTED                                                Handle        = 0x8010001A\n\tSCARD_E_DUPLICATE_READER                                                  Handle        = 0x8010001B\n\tSCARD_E_CARD_UNSUPPORTED                                                  Handle        = 0x8010001C\n\tSCARD_E_NO_SERVICE                                                        Handle        = 0x8010001D\n\tSCARD_E_SERVICE_STOPPED                                                   Handle        = 0x8010001E\n\tSCARD_E_UNEXPECTED                                                        Handle        = 0x8010001F\n\tSCARD_E_ICC_INSTALLATION                                                  Handle        = 0x80100020\n\tSCARD_E_ICC_CREATEORDER                                                   Handle        = 0x80100021\n\tSCARD_E_UNSUPPORTED_FEATURE                                               Handle        = 0x80100022\n\tSCARD_E_DIR_NOT_FOUND                                                     Handle        = 0x80100023\n\tSCARD_E_FILE_NOT_FOUND                                                    Handle        = 0x80100024\n\tSCARD_E_NO_DIR                                                            Handle        = 0x80100025\n\tSCARD_E_NO_FILE                                                           Handle        = 0x80100026\n\tSCARD_E_NO_ACCESS                                                         Handle        = 0x80100027\n\tSCARD_E_WRITE_TOO_MANY                                                    Handle        = 0x80100028\n\tSCARD_E_BAD_SEEK                                                          Handle        = 0x80100029\n\tSCARD_E_INVALID_CHV                                                       Handle        = 0x8010002A\n\tSCARD_E_UNKNOWN_RES_MNG                                                   Handle        = 0x8010002B\n\tSCARD_E_NO_SUCH_CERTIFICATE                                               Handle        = 0x8010002C\n\tSCARD_E_CERTIFICATE_UNAVAILABLE                                           Handle        = 0x8010002D\n\tSCARD_E_NO_READERS_AVAILABLE                                              Handle        = 0x8010002E\n\tSCARD_E_COMM_DATA_LOST                                                    Handle        = 0x8010002F\n\tSCARD_E_NO_KEY_CONTAINER                                                  Handle        = 0x80100030\n\tSCARD_E_SERVER_TOO_BUSY                                                   Handle        = 0x80100031\n\tSCARD_E_PIN_CACHE_EXPIRED                                                 Handle        = 0x80100032\n\tSCARD_E_NO_PIN_CACHE                                                      Handle        = 0x80100033\n\tSCARD_E_READ_ONLY_CARD                                                    Handle        = 0x80100034\n\tSCARD_W_UNSUPPORTED_CARD                                                  Handle        = 0x80100065\n\tSCARD_W_UNRESPONSIVE_CARD                                                 Handle        = 0x80100066\n\tSCARD_W_UNPOWERED_CARD                                                    Handle        = 0x80100067\n\tSCARD_W_RESET_CARD                                                        Handle        = 0x80100068\n\tSCARD_W_REMOVED_CARD                                                      Handle        = 0x80100069\n\tSCARD_W_SECURITY_VIOLATION                                                Handle        = 0x8010006A\n\tSCARD_W_WRONG_CHV                                                         Handle        = 0x8010006B\n\tSCARD_W_CHV_BLOCKED                                                       Handle        = 0x8010006C\n\tSCARD_W_EOF                                                               Handle        = 0x8010006D\n\tSCARD_W_CANCELLED_BY_USER                                                 Handle        = 0x8010006E\n\tSCARD_W_CARD_NOT_AUTHENTICATED                                            Handle        = 0x8010006F\n\tSCARD_W_CACHE_ITEM_NOT_FOUND                                              Handle        = 0x80100070\n\tSCARD_W_CACHE_ITEM_STALE                                                  Handle        = 0x80100071\n\tSCARD_W_CACHE_ITEM_TOO_BIG                                                Handle        = 0x80100072\n\tCOMADMIN_E_OBJECTERRORS                                                   Handle        = 0x80110401\n\tCOMADMIN_E_OBJECTINVALID                                                  Handle        = 0x80110402\n\tCOMADMIN_E_KEYMISSING                                                     Handle        = 0x80110403\n\tCOMADMIN_E_ALREADYINSTALLED                                               Handle        = 0x80110404\n\tCOMADMIN_E_APP_FILE_WRITEFAIL                                             Handle        = 0x80110407\n\tCOMADMIN_E_APP_FILE_READFAIL                                              Handle        = 0x80110408\n\tCOMADMIN_E_APP_FILE_VERSION                                               Handle        = 0x80110409\n\tCOMADMIN_E_BADPATH                                                        Handle        = 0x8011040A\n\tCOMADMIN_E_APPLICATIONEXISTS                                              Handle        = 0x8011040B\n\tCOMADMIN_E_ROLEEXISTS                                                     Handle        = 0x8011040C\n\tCOMADMIN_E_CANTCOPYFILE                                                   Handle        = 0x8011040D\n\tCOMADMIN_E_NOUSER                                                         Handle        = 0x8011040F\n\tCOMADMIN_E_INVALIDUSERIDS                                                 Handle        = 0x80110410\n\tCOMADMIN_E_NOREGISTRYCLSID                                                Handle        = 0x80110411\n\tCOMADMIN_E_BADREGISTRYPROGID                                              Handle        = 0x80110412\n\tCOMADMIN_E_AUTHENTICATIONLEVEL                                            Handle        = 0x80110413\n\tCOMADMIN_E_USERPASSWDNOTVALID                                             Handle        = 0x80110414\n\tCOMADMIN_E_CLSIDORIIDMISMATCH                                             Handle        = 0x80110418\n\tCOMADMIN_E_REMOTEINTERFACE                                                Handle        = 0x80110419\n\tCOMADMIN_E_DLLREGISTERSERVER                                              Handle        = 0x8011041A\n\tCOMADMIN_E_NOSERVERSHARE                                                  Handle        = 0x8011041B\n\tCOMADMIN_E_DLLLOADFAILED                                                  Handle        = 0x8011041D\n\tCOMADMIN_E_BADREGISTRYLIBID                                               Handle        = 0x8011041E\n\tCOMADMIN_E_APPDIRNOTFOUND                                                 Handle        = 0x8011041F\n\tCOMADMIN_E_REGISTRARFAILED                                                Handle        = 0x80110423\n\tCOMADMIN_E_COMPFILE_DOESNOTEXIST                                          Handle        = 0x80110424\n\tCOMADMIN_E_COMPFILE_LOADDLLFAIL                                           Handle        = 0x80110425\n\tCOMADMIN_E_COMPFILE_GETCLASSOBJ                                           Handle        = 0x80110426\n\tCOMADMIN_E_COMPFILE_CLASSNOTAVAIL                                         Handle        = 0x80110427\n\tCOMADMIN_E_COMPFILE_BADTLB                                                Handle        = 0x80110428\n\tCOMADMIN_E_COMPFILE_NOTINSTALLABLE                                        Handle        = 0x80110429\n\tCOMADMIN_E_NOTCHANGEABLE                                                  Handle        = 0x8011042A\n\tCOMADMIN_E_NOTDELETEABLE                                                  Handle        = 0x8011042B\n\tCOMADMIN_E_SESSION                                                        Handle        = 0x8011042C\n\tCOMADMIN_E_COMP_MOVE_LOCKED                                               Handle        = 0x8011042D\n\tCOMADMIN_E_COMP_MOVE_BAD_DEST                                             Handle        = 0x8011042E\n\tCOMADMIN_E_REGISTERTLB                                                    Handle        = 0x80110430\n\tCOMADMIN_E_SYSTEMAPP                                                      Handle        = 0x80110433\n\tCOMADMIN_E_COMPFILE_NOREGISTRAR                                           Handle        = 0x80110434\n\tCOMADMIN_E_COREQCOMPINSTALLED                                             Handle        = 0x80110435\n\tCOMADMIN_E_SERVICENOTINSTALLED                                            Handle        = 0x80110436\n\tCOMADMIN_E_PROPERTYSAVEFAILED                                             Handle        = 0x80110437\n\tCOMADMIN_E_OBJECTEXISTS                                                   Handle        = 0x80110438\n\tCOMADMIN_E_COMPONENTEXISTS                                                Handle        = 0x80110439\n\tCOMADMIN_E_REGFILE_CORRUPT                                                Handle        = 0x8011043B\n\tCOMADMIN_E_PROPERTY_OVERFLOW                                              Handle        = 0x8011043C\n\tCOMADMIN_E_NOTINREGISTRY                                                  Handle        = 0x8011043E\n\tCOMADMIN_E_OBJECTNOTPOOLABLE                                              Handle        = 0x8011043F\n\tCOMADMIN_E_APPLID_MATCHES_CLSID                                           Handle        = 0x80110446\n\tCOMADMIN_E_ROLE_DOES_NOT_EXIST                                            Handle        = 0x80110447\n\tCOMADMIN_E_START_APP_NEEDS_COMPONENTS                                     Handle        = 0x80110448\n\tCOMADMIN_E_REQUIRES_DIFFERENT_PLATFORM                                    Handle        = 0x80110449\n\tCOMADMIN_E_CAN_NOT_EXPORT_APP_PROXY                                       Handle        = 0x8011044A\n\tCOMADMIN_E_CAN_NOT_START_APP                                              Handle        = 0x8011044B\n\tCOMADMIN_E_CAN_NOT_EXPORT_SYS_APP                                         Handle        = 0x8011044C\n\tCOMADMIN_E_CANT_SUBSCRIBE_TO_COMPONENT                                    Handle        = 0x8011044D\n\tCOMADMIN_E_EVENTCLASS_CANT_BE_SUBSCRIBER                                  Handle        = 0x8011044E\n\tCOMADMIN_E_LIB_APP_PROXY_INCOMPATIBLE                                     Handle        = 0x8011044F\n\tCOMADMIN_E_BASE_PARTITION_ONLY                                            Handle        = 0x80110450\n\tCOMADMIN_E_START_APP_DISABLED                                             Handle        = 0x80110451\n\tCOMADMIN_E_CAT_DUPLICATE_PARTITION_NAME                                   Handle        = 0x80110457\n\tCOMADMIN_E_CAT_INVALID_PARTITION_NAME                                     Handle        = 0x80110458\n\tCOMADMIN_E_CAT_PARTITION_IN_USE                                           Handle        = 0x80110459\n\tCOMADMIN_E_FILE_PARTITION_DUPLICATE_FILES                                 Handle        = 0x8011045A\n\tCOMADMIN_E_CAT_IMPORTED_COMPONENTS_NOT_ALLOWED                            Handle        = 0x8011045B\n\tCOMADMIN_E_AMBIGUOUS_APPLICATION_NAME                                     Handle        = 0x8011045C\n\tCOMADMIN_E_AMBIGUOUS_PARTITION_NAME                                       Handle        = 0x8011045D\n\tCOMADMIN_E_REGDB_NOTINITIALIZED                                           Handle        = 0x80110472\n\tCOMADMIN_E_REGDB_NOTOPEN                                                  Handle        = 0x80110473\n\tCOMADMIN_E_REGDB_SYSTEMERR                                                Handle        = 0x80110474\n\tCOMADMIN_E_REGDB_ALREADYRUNNING                                           Handle        = 0x80110475\n\tCOMADMIN_E_MIG_VERSIONNOTSUPPORTED                                        Handle        = 0x80110480\n\tCOMADMIN_E_MIG_SCHEMANOTFOUND                                             Handle        = 0x80110481\n\tCOMADMIN_E_CAT_BITNESSMISMATCH                                            Handle        = 0x80110482\n\tCOMADMIN_E_CAT_UNACCEPTABLEBITNESS                                        Handle        = 0x80110483\n\tCOMADMIN_E_CAT_WRONGAPPBITNESS                                            Handle        = 0x80110484\n\tCOMADMIN_E_CAT_PAUSE_RESUME_NOT_SUPPORTED                                 Handle        = 0x80110485\n\tCOMADMIN_E_CAT_SERVERFAULT                                                Handle        = 0x80110486\n\tCOMQC_E_APPLICATION_NOT_QUEUED                                            Handle        = 0x80110600\n\tCOMQC_E_NO_QUEUEABLE_INTERFACES                                           Handle        = 0x80110601\n\tCOMQC_E_QUEUING_SERVICE_NOT_AVAILABLE                                     Handle        = 0x80110602\n\tCOMQC_E_NO_IPERSISTSTREAM                                                 Handle        = 0x80110603\n\tCOMQC_E_BAD_MESSAGE                                                       Handle        = 0x80110604\n\tCOMQC_E_UNAUTHENTICATED                                                   Handle        = 0x80110605\n\tCOMQC_E_UNTRUSTED_ENQUEUER                                                Handle        = 0x80110606\n\tMSDTC_E_DUPLICATE_RESOURCE                                                Handle        = 0x80110701\n\tCOMADMIN_E_OBJECT_PARENT_MISSING                                          Handle        = 0x80110808\n\tCOMADMIN_E_OBJECT_DOES_NOT_EXIST                                          Handle        = 0x80110809\n\tCOMADMIN_E_APP_NOT_RUNNING                                                Handle        = 0x8011080A\n\tCOMADMIN_E_INVALID_PARTITION                                              Handle        = 0x8011080B\n\tCOMADMIN_E_SVCAPP_NOT_POOLABLE_OR_RECYCLABLE                              Handle        = 0x8011080D\n\tCOMADMIN_E_USER_IN_SET                                                    Handle        = 0x8011080E\n\tCOMADMIN_E_CANTRECYCLELIBRARYAPPS                                         Handle        = 0x8011080F\n\tCOMADMIN_E_CANTRECYCLESERVICEAPPS                                         Handle        = 0x80110811\n\tCOMADMIN_E_PROCESSALREADYRECYCLED                                         Handle        = 0x80110812\n\tCOMADMIN_E_PAUSEDPROCESSMAYNOTBERECYCLED                                  Handle        = 0x80110813\n\tCOMADMIN_E_CANTMAKEINPROCSERVICE                                          Handle        = 0x80110814\n\tCOMADMIN_E_PROGIDINUSEBYCLSID                                             Handle        = 0x80110815\n\tCOMADMIN_E_DEFAULT_PARTITION_NOT_IN_SET                                   Handle        = 0x80110816\n\tCOMADMIN_E_RECYCLEDPROCESSMAYNOTBEPAUSED                                  Handle        = 0x80110817\n\tCOMADMIN_E_PARTITION_ACCESSDENIED                                         Handle        = 0x80110818\n\tCOMADMIN_E_PARTITION_MSI_ONLY                                             Handle        = 0x80110819\n\tCOMADMIN_E_LEGACYCOMPS_NOT_ALLOWED_IN_1_0_FORMAT                          Handle        = 0x8011081A\n\tCOMADMIN_E_LEGACYCOMPS_NOT_ALLOWED_IN_NONBASE_PARTITIONS                  Handle        = 0x8011081B\n\tCOMADMIN_E_COMP_MOVE_SOURCE                                               Handle        = 0x8011081C\n\tCOMADMIN_E_COMP_MOVE_DEST                                                 Handle        = 0x8011081D\n\tCOMADMIN_E_COMP_MOVE_PRIVATE                                              Handle        = 0x8011081E\n\tCOMADMIN_E_BASEPARTITION_REQUIRED_IN_SET                                  Handle        = 0x8011081F\n\tCOMADMIN_E_CANNOT_ALIAS_EVENTCLASS                                        Handle        = 0x80110820\n\tCOMADMIN_E_PRIVATE_ACCESSDENIED                                           Handle        = 0x80110821\n\tCOMADMIN_E_SAFERINVALID                                                   Handle        = 0x80110822\n\tCOMADMIN_E_REGISTRY_ACCESSDENIED                                          Handle        = 0x80110823\n\tCOMADMIN_E_PARTITIONS_DISABLED                                            Handle        = 0x80110824\n\tWER_S_REPORT_DEBUG                                                        Handle        = 0x001B0000\n\tWER_S_REPORT_UPLOADED                                                     Handle        = 0x001B0001\n\tWER_S_REPORT_QUEUED                                                       Handle        = 0x001B0002\n\tWER_S_DISABLED                                                            Handle        = 0x001B0003\n\tWER_S_SUSPENDED_UPLOAD                                                    Handle        = 0x001B0004\n\tWER_S_DISABLED_QUEUE                                                      Handle        = 0x001B0005\n\tWER_S_DISABLED_ARCHIVE                                                    Handle        = 0x001B0006\n\tWER_S_REPORT_ASYNC                                                        Handle        = 0x001B0007\n\tWER_S_IGNORE_ASSERT_INSTANCE                                              Handle        = 0x001B0008\n\tWER_S_IGNORE_ALL_ASSERTS                                                  Handle        = 0x001B0009\n\tWER_S_ASSERT_CONTINUE                                                     Handle        = 0x001B000A\n\tWER_S_THROTTLED                                                           Handle        = 0x001B000B\n\tWER_S_REPORT_UPLOADED_CAB                                                 Handle        = 0x001B000C\n\tWER_E_CRASH_FAILURE                                                       Handle        = 0x801B8000\n\tWER_E_CANCELED                                                            Handle        = 0x801B8001\n\tWER_E_NETWORK_FAILURE                                                     Handle        = 0x801B8002\n\tWER_E_NOT_INITIALIZED                                                     Handle        = 0x801B8003\n\tWER_E_ALREADY_REPORTING                                                   Handle        = 0x801B8004\n\tWER_E_DUMP_THROTTLED                                                      Handle        = 0x801B8005\n\tWER_E_INSUFFICIENT_CONSENT                                                Handle        = 0x801B8006\n\tWER_E_TOO_HEAVY                                                           Handle        = 0x801B8007\n\tERROR_FLT_IO_COMPLETE                                                     Handle        = 0x001F0001\n\tERROR_FLT_NO_HANDLER_DEFINED                                              Handle        = 0x801F0001\n\tERROR_FLT_CONTEXT_ALREADY_DEFINED                                         Handle        = 0x801F0002\n\tERROR_FLT_INVALID_ASYNCHRONOUS_REQUEST                                    Handle        = 0x801F0003\n\tERROR_FLT_DISALLOW_FAST_IO                                                Handle        = 0x801F0004\n\tERROR_FLT_INVALID_NAME_REQUEST                                            Handle        = 0x801F0005\n\tERROR_FLT_NOT_SAFE_TO_POST_OPERATION                                      Handle        = 0x801F0006\n\tERROR_FLT_NOT_INITIALIZED                                                 Handle        = 0x801F0007\n\tERROR_FLT_FILTER_NOT_READY                                                Handle        = 0x801F0008\n\tERROR_FLT_POST_OPERATION_CLEANUP                                          Handle        = 0x801F0009\n\tERROR_FLT_INTERNAL_ERROR                                                  Handle        = 0x801F000A\n\tERROR_FLT_DELETING_OBJECT                                                 Handle        = 0x801F000B\n\tERROR_FLT_MUST_BE_NONPAGED_POOL                                           Handle        = 0x801F000C\n\tERROR_FLT_DUPLICATE_ENTRY                                                 Handle        = 0x801F000D\n\tERROR_FLT_CBDQ_DISABLED                                                   Handle        = 0x801F000E\n\tERROR_FLT_DO_NOT_ATTACH                                                   Handle        = 0x801F000F\n\tERROR_FLT_DO_NOT_DETACH                                                   Handle        = 0x801F0010\n\tERROR_FLT_INSTANCE_ALTITUDE_COLLISION                                     Handle        = 0x801F0011\n\tERROR_FLT_INSTANCE_NAME_COLLISION                                         Handle        = 0x801F0012\n\tERROR_FLT_FILTER_NOT_FOUND                                                Handle        = 0x801F0013\n\tERROR_FLT_VOLUME_NOT_FOUND                                                Handle        = 0x801F0014\n\tERROR_FLT_INSTANCE_NOT_FOUND                                              Handle        = 0x801F0015\n\tERROR_FLT_CONTEXT_ALLOCATION_NOT_FOUND                                    Handle        = 0x801F0016\n\tERROR_FLT_INVALID_CONTEXT_REGISTRATION                                    Handle        = 0x801F0017\n\tERROR_FLT_NAME_CACHE_MISS                                                 Handle        = 0x801F0018\n\tERROR_FLT_NO_DEVICE_OBJECT                                                Handle        = 0x801F0019\n\tERROR_FLT_VOLUME_ALREADY_MOUNTED                                          Handle        = 0x801F001A\n\tERROR_FLT_ALREADY_ENLISTED                                                Handle        = 0x801F001B\n\tERROR_FLT_CONTEXT_ALREADY_LINKED                                          Handle        = 0x801F001C\n\tERROR_FLT_NO_WAITER_FOR_REPLY                                             Handle        = 0x801F0020\n\tERROR_FLT_REGISTRATION_BUSY                                               Handle        = 0x801F0023\n\tERROR_HUNG_DISPLAY_DRIVER_THREAD                                          Handle        = 0x80260001\n\tDWM_E_COMPOSITIONDISABLED                                                 Handle        = 0x80263001\n\tDWM_E_REMOTING_NOT_SUPPORTED                                              Handle        = 0x80263002\n\tDWM_E_NO_REDIRECTION_SURFACE_AVAILABLE                                    Handle        = 0x80263003\n\tDWM_E_NOT_QUEUING_PRESENTS                                                Handle        = 0x80263004\n\tDWM_E_ADAPTER_NOT_FOUND                                                   Handle        = 0x80263005\n\tDWM_S_GDI_REDIRECTION_SURFACE                                             Handle        = 0x00263005\n\tDWM_E_TEXTURE_TOO_LARGE                                                   Handle        = 0x80263007\n\tDWM_S_GDI_REDIRECTION_SURFACE_BLT_VIA_GDI                                 Handle        = 0x00263008\n\tERROR_MONITOR_NO_DESCRIPTOR                                               Handle        = 0x00261001\n\tERROR_MONITOR_UNKNOWN_DESCRIPTOR_FORMAT                                   Handle        = 0x00261002\n\tERROR_MONITOR_INVALID_DESCRIPTOR_CHECKSUM                                 Handle        = 0xC0261003\n\tERROR_MONITOR_INVALID_STANDARD_TIMING_BLOCK                               Handle        = 0xC0261004\n\tERROR_MONITOR_WMI_DATABLOCK_REGISTRATION_FAILED                           Handle        = 0xC0261005\n\tERROR_MONITOR_INVALID_SERIAL_NUMBER_MONDSC_BLOCK                          Handle        = 0xC0261006\n\tERROR_MONITOR_INVALID_USER_FRIENDLY_MONDSC_BLOCK                          Handle        = 0xC0261007\n\tERROR_MONITOR_NO_MORE_DESCRIPTOR_DATA                                     Handle        = 0xC0261008\n\tERROR_MONITOR_INVALID_DETAILED_TIMING_BLOCK                               Handle        = 0xC0261009\n\tERROR_MONITOR_INVALID_MANUFACTURE_DATE                                    Handle        = 0xC026100A\n\tERROR_GRAPHICS_NOT_EXCLUSIVE_MODE_OWNER                                   Handle        = 0xC0262000\n\tERROR_GRAPHICS_INSUFFICIENT_DMA_BUFFER                                    Handle        = 0xC0262001\n\tERROR_GRAPHICS_INVALID_DISPLAY_ADAPTER                                    Handle        = 0xC0262002\n\tERROR_GRAPHICS_ADAPTER_WAS_RESET                                          Handle        = 0xC0262003\n\tERROR_GRAPHICS_INVALID_DRIVER_MODEL                                       Handle        = 0xC0262004\n\tERROR_GRAPHICS_PRESENT_MODE_CHANGED                                       Handle        = 0xC0262005\n\tERROR_GRAPHICS_PRESENT_OCCLUDED                                           Handle        = 0xC0262006\n\tERROR_GRAPHICS_PRESENT_DENIED                                             Handle        = 0xC0262007\n\tERROR_GRAPHICS_CANNOTCOLORCONVERT                                         Handle        = 0xC0262008\n\tERROR_GRAPHICS_DRIVER_MISMATCH                                            Handle        = 0xC0262009\n\tERROR_GRAPHICS_PARTIAL_DATA_POPULATED                                     Handle        = 0x4026200A\n\tERROR_GRAPHICS_PRESENT_REDIRECTION_DISABLED                               Handle        = 0xC026200B\n\tERROR_GRAPHICS_PRESENT_UNOCCLUDED                                         Handle        = 0xC026200C\n\tERROR_GRAPHICS_WINDOWDC_NOT_AVAILABLE                                     Handle        = 0xC026200D\n\tERROR_GRAPHICS_WINDOWLESS_PRESENT_DISABLED                                Handle        = 0xC026200E\n\tERROR_GRAPHICS_PRESENT_INVALID_WINDOW                                     Handle        = 0xC026200F\n\tERROR_GRAPHICS_PRESENT_BUFFER_NOT_BOUND                                   Handle        = 0xC0262010\n\tERROR_GRAPHICS_VAIL_STATE_CHANGED                                         Handle        = 0xC0262011\n\tERROR_GRAPHICS_INDIRECT_DISPLAY_ABANDON_SWAPCHAIN                         Handle        = 0xC0262012\n\tERROR_GRAPHICS_INDIRECT_DISPLAY_DEVICE_STOPPED                            Handle        = 0xC0262013\n\tERROR_GRAPHICS_NO_VIDEO_MEMORY                                            Handle        = 0xC0262100\n\tERROR_GRAPHICS_CANT_LOCK_MEMORY                                           Handle        = 0xC0262101\n\tERROR_GRAPHICS_ALLOCATION_BUSY                                            Handle        = 0xC0262102\n\tERROR_GRAPHICS_TOO_MANY_REFERENCES                                        Handle        = 0xC0262103\n\tERROR_GRAPHICS_TRY_AGAIN_LATER                                            Handle        = 0xC0262104\n\tERROR_GRAPHICS_TRY_AGAIN_NOW                                              Handle        = 0xC0262105\n\tERROR_GRAPHICS_ALLOCATION_INVALID                                         Handle        = 0xC0262106\n\tERROR_GRAPHICS_UNSWIZZLING_APERTURE_UNAVAILABLE                           Handle        = 0xC0262107\n\tERROR_GRAPHICS_UNSWIZZLING_APERTURE_UNSUPPORTED                           Handle        = 0xC0262108\n\tERROR_GRAPHICS_CANT_EVICT_PINNED_ALLOCATION                               Handle        = 0xC0262109\n\tERROR_GRAPHICS_INVALID_ALLOCATION_USAGE                                   Handle        = 0xC0262110\n\tERROR_GRAPHICS_CANT_RENDER_LOCKED_ALLOCATION                              Handle        = 0xC0262111\n\tERROR_GRAPHICS_ALLOCATION_CLOSED                                          Handle        = 0xC0262112\n\tERROR_GRAPHICS_INVALID_ALLOCATION_INSTANCE                                Handle        = 0xC0262113\n\tERROR_GRAPHICS_INVALID_ALLOCATION_HANDLE                                  Handle        = 0xC0262114\n\tERROR_GRAPHICS_WRONG_ALLOCATION_DEVICE                                    Handle        = 0xC0262115\n\tERROR_GRAPHICS_ALLOCATION_CONTENT_LOST                                    Handle        = 0xC0262116\n\tERROR_GRAPHICS_GPU_EXCEPTION_ON_DEVICE                                    Handle        = 0xC0262200\n\tERROR_GRAPHICS_SKIP_ALLOCATION_PREPARATION                                Handle        = 0x40262201\n\tERROR_GRAPHICS_INVALID_VIDPN_TOPOLOGY                                     Handle        = 0xC0262300\n\tERROR_GRAPHICS_VIDPN_TOPOLOGY_NOT_SUPPORTED                               Handle        = 0xC0262301\n\tERROR_GRAPHICS_VIDPN_TOPOLOGY_CURRENTLY_NOT_SUPPORTED                     Handle        = 0xC0262302\n\tERROR_GRAPHICS_INVALID_VIDPN                                              Handle        = 0xC0262303\n\tERROR_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE                               Handle        = 0xC0262304\n\tERROR_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET                               Handle        = 0xC0262305\n\tERROR_GRAPHICS_VIDPN_MODALITY_NOT_SUPPORTED                               Handle        = 0xC0262306\n\tERROR_GRAPHICS_MODE_NOT_PINNED                                            Handle        = 0x00262307\n\tERROR_GRAPHICS_INVALID_VIDPN_SOURCEMODESET                                Handle        = 0xC0262308\n\tERROR_GRAPHICS_INVALID_VIDPN_TARGETMODESET                                Handle        = 0xC0262309\n\tERROR_GRAPHICS_INVALID_FREQUENCY                                          Handle        = 0xC026230A\n\tERROR_GRAPHICS_INVALID_ACTIVE_REGION                                      Handle        = 0xC026230B\n\tERROR_GRAPHICS_INVALID_TOTAL_REGION                                       Handle        = 0xC026230C\n\tERROR_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE_MODE                          Handle        = 0xC0262310\n\tERROR_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET_MODE                          Handle        = 0xC0262311\n\tERROR_GRAPHICS_PINNED_MODE_MUST_REMAIN_IN_SET                             Handle        = 0xC0262312\n\tERROR_GRAPHICS_PATH_ALREADY_IN_TOPOLOGY                                   Handle        = 0xC0262313\n\tERROR_GRAPHICS_MODE_ALREADY_IN_MODESET                                    Handle        = 0xC0262314\n\tERROR_GRAPHICS_INVALID_VIDEOPRESENTSOURCESET                              Handle        = 0xC0262315\n\tERROR_GRAPHICS_INVALID_VIDEOPRESENTTARGETSET                              Handle        = 0xC0262316\n\tERROR_GRAPHICS_SOURCE_ALREADY_IN_SET                                      Handle        = 0xC0262317\n\tERROR_GRAPHICS_TARGET_ALREADY_IN_SET                                      Handle        = 0xC0262318\n\tERROR_GRAPHICS_INVALID_VIDPN_PRESENT_PATH                                 Handle        = 0xC0262319\n\tERROR_GRAPHICS_NO_RECOMMENDED_VIDPN_TOPOLOGY                              Handle        = 0xC026231A\n\tERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGESET                          Handle        = 0xC026231B\n\tERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE                             Handle        = 0xC026231C\n\tERROR_GRAPHICS_FREQUENCYRANGE_NOT_IN_SET                                  Handle        = 0xC026231D\n\tERROR_GRAPHICS_NO_PREFERRED_MODE                                          Handle        = 0x0026231E\n\tERROR_GRAPHICS_FREQUENCYRANGE_ALREADY_IN_SET                              Handle        = 0xC026231F\n\tERROR_GRAPHICS_STALE_MODESET                                              Handle        = 0xC0262320\n\tERROR_GRAPHICS_INVALID_MONITOR_SOURCEMODESET                              Handle        = 0xC0262321\n\tERROR_GRAPHICS_INVALID_MONITOR_SOURCE_MODE                                Handle        = 0xC0262322\n\tERROR_GRAPHICS_NO_RECOMMENDED_FUNCTIONAL_VIDPN                            Handle        = 0xC0262323\n\tERROR_GRAPHICS_MODE_ID_MUST_BE_UNIQUE                                     Handle        = 0xC0262324\n\tERROR_GRAPHICS_EMPTY_ADAPTER_MONITOR_MODE_SUPPORT_INTERSECTION            Handle        = 0xC0262325\n\tERROR_GRAPHICS_VIDEO_PRESENT_TARGETS_LESS_THAN_SOURCES                    Handle        = 0xC0262326\n\tERROR_GRAPHICS_PATH_NOT_IN_TOPOLOGY                                       Handle        = 0xC0262327\n\tERROR_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_SOURCE                      Handle        = 0xC0262328\n\tERROR_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_TARGET                      Handle        = 0xC0262329\n\tERROR_GRAPHICS_INVALID_MONITORDESCRIPTORSET                               Handle        = 0xC026232A\n\tERROR_GRAPHICS_INVALID_MONITORDESCRIPTOR                                  Handle        = 0xC026232B\n\tERROR_GRAPHICS_MONITORDESCRIPTOR_NOT_IN_SET                               Handle        = 0xC026232C\n\tERROR_GRAPHICS_MONITORDESCRIPTOR_ALREADY_IN_SET                           Handle        = 0xC026232D\n\tERROR_GRAPHICS_MONITORDESCRIPTOR_ID_MUST_BE_UNIQUE                        Handle        = 0xC026232E\n\tERROR_GRAPHICS_INVALID_VIDPN_TARGET_SUBSET_TYPE                           Handle        = 0xC026232F\n\tERROR_GRAPHICS_RESOURCES_NOT_RELATED                                      Handle        = 0xC0262330\n\tERROR_GRAPHICS_SOURCE_ID_MUST_BE_UNIQUE                                   Handle        = 0xC0262331\n\tERROR_GRAPHICS_TARGET_ID_MUST_BE_UNIQUE                                   Handle        = 0xC0262332\n\tERROR_GRAPHICS_NO_AVAILABLE_VIDPN_TARGET                                  Handle        = 0xC0262333\n\tERROR_GRAPHICS_MONITOR_COULD_NOT_BE_ASSOCIATED_WITH_ADAPTER               Handle        = 0xC0262334\n\tERROR_GRAPHICS_NO_VIDPNMGR                                                Handle        = 0xC0262335\n\tERROR_GRAPHICS_NO_ACTIVE_VIDPN                                            Handle        = 0xC0262336\n\tERROR_GRAPHICS_STALE_VIDPN_TOPOLOGY                                       Handle        = 0xC0262337\n\tERROR_GRAPHICS_MONITOR_NOT_CONNECTED                                      Handle        = 0xC0262338\n\tERROR_GRAPHICS_SOURCE_NOT_IN_TOPOLOGY                                     Handle        = 0xC0262339\n\tERROR_GRAPHICS_INVALID_PRIMARYSURFACE_SIZE                                Handle        = 0xC026233A\n\tERROR_GRAPHICS_INVALID_VISIBLEREGION_SIZE                                 Handle        = 0xC026233B\n\tERROR_GRAPHICS_INVALID_STRIDE                                             Handle        = 0xC026233C\n\tERROR_GRAPHICS_INVALID_PIXELFORMAT                                        Handle        = 0xC026233D\n\tERROR_GRAPHICS_INVALID_COLORBASIS                                         Handle        = 0xC026233E\n\tERROR_GRAPHICS_INVALID_PIXELVALUEACCESSMODE                               Handle        = 0xC026233F\n\tERROR_GRAPHICS_TARGET_NOT_IN_TOPOLOGY                                     Handle        = 0xC0262340\n\tERROR_GRAPHICS_NO_DISPLAY_MODE_MANAGEMENT_SUPPORT                         Handle        = 0xC0262341\n\tERROR_GRAPHICS_VIDPN_SOURCE_IN_USE                                        Handle        = 0xC0262342\n\tERROR_GRAPHICS_CANT_ACCESS_ACTIVE_VIDPN                                   Handle        = 0xC0262343\n\tERROR_GRAPHICS_INVALID_PATH_IMPORTANCE_ORDINAL                            Handle        = 0xC0262344\n\tERROR_GRAPHICS_INVALID_PATH_CONTENT_GEOMETRY_TRANSFORMATION               Handle        = 0xC0262345\n\tERROR_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_SUPPORTED         Handle        = 0xC0262346\n\tERROR_GRAPHICS_INVALID_GAMMA_RAMP                                         Handle        = 0xC0262347\n\tERROR_GRAPHICS_GAMMA_RAMP_NOT_SUPPORTED                                   Handle        = 0xC0262348\n\tERROR_GRAPHICS_MULTISAMPLING_NOT_SUPPORTED                                Handle        = 0xC0262349\n\tERROR_GRAPHICS_MODE_NOT_IN_MODESET                                        Handle        = 0xC026234A\n\tERROR_GRAPHICS_DATASET_IS_EMPTY                                           Handle        = 0x0026234B\n\tERROR_GRAPHICS_NO_MORE_ELEMENTS_IN_DATASET                                Handle        = 0x0026234C\n\tERROR_GRAPHICS_INVALID_VIDPN_TOPOLOGY_RECOMMENDATION_REASON               Handle        = 0xC026234D\n\tERROR_GRAPHICS_INVALID_PATH_CONTENT_TYPE                                  Handle        = 0xC026234E\n\tERROR_GRAPHICS_INVALID_COPYPROTECTION_TYPE                                Handle        = 0xC026234F\n\tERROR_GRAPHICS_UNASSIGNED_MODESET_ALREADY_EXISTS                          Handle        = 0xC0262350\n\tERROR_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_PINNED            Handle        = 0x00262351\n\tERROR_GRAPHICS_INVALID_SCANLINE_ORDERING                                  Handle        = 0xC0262352\n\tERROR_GRAPHICS_TOPOLOGY_CHANGES_NOT_ALLOWED                               Handle        = 0xC0262353\n\tERROR_GRAPHICS_NO_AVAILABLE_IMPORTANCE_ORDINALS                           Handle        = 0xC0262354\n\tERROR_GRAPHICS_INCOMPATIBLE_PRIVATE_FORMAT                                Handle        = 0xC0262355\n\tERROR_GRAPHICS_INVALID_MODE_PRUNING_ALGORITHM                             Handle        = 0xC0262356\n\tERROR_GRAPHICS_INVALID_MONITOR_CAPABILITY_ORIGIN                          Handle        = 0xC0262357\n\tERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE_CONSTRAINT                  Handle        = 0xC0262358\n\tERROR_GRAPHICS_MAX_NUM_PATHS_REACHED                                      Handle        = 0xC0262359\n\tERROR_GRAPHICS_CANCEL_VIDPN_TOPOLOGY_AUGMENTATION                         Handle        = 0xC026235A\n\tERROR_GRAPHICS_INVALID_CLIENT_TYPE                                        Handle        = 0xC026235B\n\tERROR_GRAPHICS_CLIENTVIDPN_NOT_SET                                        Handle        = 0xC026235C\n\tERROR_GRAPHICS_SPECIFIED_CHILD_ALREADY_CONNECTED                          Handle        = 0xC0262400\n\tERROR_GRAPHICS_CHILD_DESCRIPTOR_NOT_SUPPORTED                             Handle        = 0xC0262401\n\tERROR_GRAPHICS_UNKNOWN_CHILD_STATUS                                       Handle        = 0x4026242F\n\tERROR_GRAPHICS_NOT_A_LINKED_ADAPTER                                       Handle        = 0xC0262430\n\tERROR_GRAPHICS_LEADLINK_NOT_ENUMERATED                                    Handle        = 0xC0262431\n\tERROR_GRAPHICS_CHAINLINKS_NOT_ENUMERATED                                  Handle        = 0xC0262432\n\tERROR_GRAPHICS_ADAPTER_CHAIN_NOT_READY                                    Handle        = 0xC0262433\n\tERROR_GRAPHICS_CHAINLINKS_NOT_STARTED                                     Handle        = 0xC0262434\n\tERROR_GRAPHICS_CHAINLINKS_NOT_POWERED_ON                                  Handle        = 0xC0262435\n\tERROR_GRAPHICS_INCONSISTENT_DEVICE_LINK_STATE                             Handle        = 0xC0262436\n\tERROR_GRAPHICS_LEADLINK_START_DEFERRED                                    Handle        = 0x40262437\n\tERROR_GRAPHICS_NOT_POST_DEVICE_DRIVER                                     Handle        = 0xC0262438\n\tERROR_GRAPHICS_POLLING_TOO_FREQUENTLY                                     Handle        = 0x40262439\n\tERROR_GRAPHICS_START_DEFERRED                                             Handle        = 0x4026243A\n\tERROR_GRAPHICS_ADAPTER_ACCESS_NOT_EXCLUDED                                Handle        = 0xC026243B\n\tERROR_GRAPHICS_DEPENDABLE_CHILD_STATUS                                    Handle        = 0x4026243C\n\tERROR_GRAPHICS_OPM_NOT_SUPPORTED                                          Handle        = 0xC0262500\n\tERROR_GRAPHICS_COPP_NOT_SUPPORTED                                         Handle        = 0xC0262501\n\tERROR_GRAPHICS_UAB_NOT_SUPPORTED                                          Handle        = 0xC0262502\n\tERROR_GRAPHICS_OPM_INVALID_ENCRYPTED_PARAMETERS                           Handle        = 0xC0262503\n\tERROR_GRAPHICS_OPM_NO_VIDEO_OUTPUTS_EXIST                                 Handle        = 0xC0262505\n\tERROR_GRAPHICS_OPM_INTERNAL_ERROR                                         Handle        = 0xC026250B\n\tERROR_GRAPHICS_OPM_INVALID_HANDLE                                         Handle        = 0xC026250C\n\tERROR_GRAPHICS_PVP_INVALID_CERTIFICATE_LENGTH                             Handle        = 0xC026250E\n\tERROR_GRAPHICS_OPM_SPANNING_MODE_ENABLED                                  Handle        = 0xC026250F\n\tERROR_GRAPHICS_OPM_THEATER_MODE_ENABLED                                   Handle        = 0xC0262510\n\tERROR_GRAPHICS_PVP_HFS_FAILED                                             Handle        = 0xC0262511\n\tERROR_GRAPHICS_OPM_INVALID_SRM                                            Handle        = 0xC0262512\n\tERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_HDCP                           Handle        = 0xC0262513\n\tERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_ACP                            Handle        = 0xC0262514\n\tERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_CGMSA                          Handle        = 0xC0262515\n\tERROR_GRAPHICS_OPM_HDCP_SRM_NEVER_SET                                     Handle        = 0xC0262516\n\tERROR_GRAPHICS_OPM_RESOLUTION_TOO_HIGH                                    Handle        = 0xC0262517\n\tERROR_GRAPHICS_OPM_ALL_HDCP_HARDWARE_ALREADY_IN_USE                       Handle        = 0xC0262518\n\tERROR_GRAPHICS_OPM_VIDEO_OUTPUT_NO_LONGER_EXISTS                          Handle        = 0xC026251A\n\tERROR_GRAPHICS_OPM_SESSION_TYPE_CHANGE_IN_PROGRESS                        Handle        = 0xC026251B\n\tERROR_GRAPHICS_OPM_VIDEO_OUTPUT_DOES_NOT_HAVE_COPP_SEMANTICS              Handle        = 0xC026251C\n\tERROR_GRAPHICS_OPM_INVALID_INFORMATION_REQUEST                            Handle        = 0xC026251D\n\tERROR_GRAPHICS_OPM_DRIVER_INTERNAL_ERROR                                  Handle        = 0xC026251E\n\tERROR_GRAPHICS_OPM_VIDEO_OUTPUT_DOES_NOT_HAVE_OPM_SEMANTICS               Handle        = 0xC026251F\n\tERROR_GRAPHICS_OPM_SIGNALING_NOT_SUPPORTED                                Handle        = 0xC0262520\n\tERROR_GRAPHICS_OPM_INVALID_CONFIGURATION_REQUEST                          Handle        = 0xC0262521\n\tERROR_GRAPHICS_I2C_NOT_SUPPORTED                                          Handle        = 0xC0262580\n\tERROR_GRAPHICS_I2C_DEVICE_DOES_NOT_EXIST                                  Handle        = 0xC0262581\n\tERROR_GRAPHICS_I2C_ERROR_TRANSMITTING_DATA                                Handle        = 0xC0262582\n\tERROR_GRAPHICS_I2C_ERROR_RECEIVING_DATA                                   Handle        = 0xC0262583\n\tERROR_GRAPHICS_DDCCI_VCP_NOT_SUPPORTED                                    Handle        = 0xC0262584\n\tERROR_GRAPHICS_DDCCI_INVALID_DATA                                         Handle        = 0xC0262585\n\tERROR_GRAPHICS_DDCCI_MONITOR_RETURNED_INVALID_TIMING_STATUS_BYTE          Handle        = 0xC0262586\n\tERROR_GRAPHICS_MCA_INVALID_CAPABILITIES_STRING                            Handle        = 0xC0262587\n\tERROR_GRAPHICS_MCA_INTERNAL_ERROR                                         Handle        = 0xC0262588\n\tERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_COMMAND                              Handle        = 0xC0262589\n\tERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_LENGTH                               Handle        = 0xC026258A\n\tERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_CHECKSUM                             Handle        = 0xC026258B\n\tERROR_GRAPHICS_INVALID_PHYSICAL_MONITOR_HANDLE                            Handle        = 0xC026258C\n\tERROR_GRAPHICS_MONITOR_NO_LONGER_EXISTS                                   Handle        = 0xC026258D\n\tERROR_GRAPHICS_DDCCI_CURRENT_CURRENT_VALUE_GREATER_THAN_MAXIMUM_VALUE     Handle        = 0xC02625D8\n\tERROR_GRAPHICS_MCA_INVALID_VCP_VERSION                                    Handle        = 0xC02625D9\n\tERROR_GRAPHICS_MCA_MONITOR_VIOLATES_MCCS_SPECIFICATION                    Handle        = 0xC02625DA\n\tERROR_GRAPHICS_MCA_MCCS_VERSION_MISMATCH                                  Handle        = 0xC02625DB\n\tERROR_GRAPHICS_MCA_UNSUPPORTED_MCCS_VERSION                               Handle        = 0xC02625DC\n\tERROR_GRAPHICS_MCA_INVALID_TECHNOLOGY_TYPE_RETURNED                       Handle        = 0xC02625DE\n\tERROR_GRAPHICS_MCA_UNSUPPORTED_COLOR_TEMPERATURE                          Handle        = 0xC02625DF\n\tERROR_GRAPHICS_ONLY_CONSOLE_SESSION_SUPPORTED                             Handle        = 0xC02625E0\n\tERROR_GRAPHICS_NO_DISPLAY_DEVICE_CORRESPONDS_TO_NAME                      Handle        = 0xC02625E1\n\tERROR_GRAPHICS_DISPLAY_DEVICE_NOT_ATTACHED_TO_DESKTOP                     Handle        = 0xC02625E2\n\tERROR_GRAPHICS_MIRRORING_DEVICES_NOT_SUPPORTED                            Handle        = 0xC02625E3\n\tERROR_GRAPHICS_INVALID_POINTER                                            Handle        = 0xC02625E4\n\tERROR_GRAPHICS_NO_MONITORS_CORRESPOND_TO_DISPLAY_DEVICE                   Handle        = 0xC02625E5\n\tERROR_GRAPHICS_PARAMETER_ARRAY_TOO_SMALL                                  Handle        = 0xC02625E6\n\tERROR_GRAPHICS_INTERNAL_ERROR                                             Handle        = 0xC02625E7\n\tERROR_GRAPHICS_SESSION_TYPE_CHANGE_IN_PROGRESS                            Handle        = 0xC02605E8\n\tNAP_E_INVALID_PACKET                                                      Handle        = 0x80270001\n\tNAP_E_MISSING_SOH                                                         Handle        = 0x80270002\n\tNAP_E_CONFLICTING_ID                                                      Handle        = 0x80270003\n\tNAP_E_NO_CACHED_SOH                                                       Handle        = 0x80270004\n\tNAP_E_STILL_BOUND                                                         Handle        = 0x80270005\n\tNAP_E_NOT_REGISTERED                                                      Handle        = 0x80270006\n\tNAP_E_NOT_INITIALIZED                                                     Handle        = 0x80270007\n\tNAP_E_MISMATCHED_ID                                                       Handle        = 0x80270008\n\tNAP_E_NOT_PENDING                                                         Handle        = 0x80270009\n\tNAP_E_ID_NOT_FOUND                                                        Handle        = 0x8027000A\n\tNAP_E_MAXSIZE_TOO_SMALL                                                   Handle        = 0x8027000B\n\tNAP_E_SERVICE_NOT_RUNNING                                                 Handle        = 0x8027000C\n\tNAP_S_CERT_ALREADY_PRESENT                                                Handle        = 0x0027000D\n\tNAP_E_ENTITY_DISABLED                                                     Handle        = 0x8027000E\n\tNAP_E_NETSH_GROUPPOLICY_ERROR                                             Handle        = 0x8027000F\n\tNAP_E_TOO_MANY_CALLS                                                      Handle        = 0x80270010\n\tNAP_E_SHV_CONFIG_EXISTED                                                  Handle        = 0x80270011\n\tNAP_E_SHV_CONFIG_NOT_FOUND                                                Handle        = 0x80270012\n\tNAP_E_SHV_TIMEOUT                                                         Handle        = 0x80270013\n\tTPM_E_ERROR_MASK                                                          Handle        = 0x80280000\n\tTPM_E_AUTHFAIL                                                            Handle        = 0x80280001\n\tTPM_E_BADINDEX                                                            Handle        = 0x80280002\n\tTPM_E_BAD_PARAMETER                                                       Handle        = 0x80280003\n\tTPM_E_AUDITFAILURE                                                        Handle        = 0x80280004\n\tTPM_E_CLEAR_DISABLED                                                      Handle        = 0x80280005\n\tTPM_E_DEACTIVATED                                                         Handle        = 0x80280006\n\tTPM_E_DISABLED                                                            Handle        = 0x80280007\n\tTPM_E_DISABLED_CMD                                                        Handle        = 0x80280008\n\tTPM_E_FAIL                                                                Handle        = 0x80280009\n\tTPM_E_BAD_ORDINAL                                                         Handle        = 0x8028000A\n\tTPM_E_INSTALL_DISABLED                                                    Handle        = 0x8028000B\n\tTPM_E_INVALID_KEYHANDLE                                                   Handle        = 0x8028000C\n\tTPM_E_KEYNOTFOUND                                                         Handle        = 0x8028000D\n\tTPM_E_INAPPROPRIATE_ENC                                                   Handle        = 0x8028000E\n\tTPM_E_MIGRATEFAIL                                                         Handle        = 0x8028000F\n\tTPM_E_INVALID_PCR_INFO                                                    Handle        = 0x80280010\n\tTPM_E_NOSPACE                                                             Handle        = 0x80280011\n\tTPM_E_NOSRK                                                               Handle        = 0x80280012\n\tTPM_E_NOTSEALED_BLOB                                                      Handle        = 0x80280013\n\tTPM_E_OWNER_SET                                                           Handle        = 0x80280014\n\tTPM_E_RESOURCES                                                           Handle        = 0x80280015\n\tTPM_E_SHORTRANDOM                                                         Handle        = 0x80280016\n\tTPM_E_SIZE                                                                Handle        = 0x80280017\n\tTPM_E_WRONGPCRVAL                                                         Handle        = 0x80280018\n\tTPM_E_BAD_PARAM_SIZE                                                      Handle        = 0x80280019\n\tTPM_E_SHA_THREAD                                                          Handle        = 0x8028001A\n\tTPM_E_SHA_ERROR                                                           Handle        = 0x8028001B\n\tTPM_E_FAILEDSELFTEST                                                      Handle        = 0x8028001C\n\tTPM_E_AUTH2FAIL                                                           Handle        = 0x8028001D\n\tTPM_E_BADTAG                                                              Handle        = 0x8028001E\n\tTPM_E_IOERROR                                                             Handle        = 0x8028001F\n\tTPM_E_ENCRYPT_ERROR                                                       Handle        = 0x80280020\n\tTPM_E_DECRYPT_ERROR                                                       Handle        = 0x80280021\n\tTPM_E_INVALID_AUTHHANDLE                                                  Handle        = 0x80280022\n\tTPM_E_NO_ENDORSEMENT                                                      Handle        = 0x80280023\n\tTPM_E_INVALID_KEYUSAGE                                                    Handle        = 0x80280024\n\tTPM_E_WRONG_ENTITYTYPE                                                    Handle        = 0x80280025\n\tTPM_E_INVALID_POSTINIT                                                    Handle        = 0x80280026\n\tTPM_E_INAPPROPRIATE_SIG                                                   Handle        = 0x80280027\n\tTPM_E_BAD_KEY_PROPERTY                                                    Handle        = 0x80280028\n\tTPM_E_BAD_MIGRATION                                                       Handle        = 0x80280029\n\tTPM_E_BAD_SCHEME                                                          Handle        = 0x8028002A\n\tTPM_E_BAD_DATASIZE                                                        Handle        = 0x8028002B\n\tTPM_E_BAD_MODE                                                            Handle        = 0x8028002C\n\tTPM_E_BAD_PRESENCE                                                        Handle        = 0x8028002D\n\tTPM_E_BAD_VERSION                                                         Handle        = 0x8028002E\n\tTPM_E_NO_WRAP_TRANSPORT                                                   Handle        = 0x8028002F\n\tTPM_E_AUDITFAIL_UNSUCCESSFUL                                              Handle        = 0x80280030\n\tTPM_E_AUDITFAIL_SUCCESSFUL                                                Handle        = 0x80280031\n\tTPM_E_NOTRESETABLE                                                        Handle        = 0x80280032\n\tTPM_E_NOTLOCAL                                                            Handle        = 0x80280033\n\tTPM_E_BAD_TYPE                                                            Handle        = 0x80280034\n\tTPM_E_INVALID_RESOURCE                                                    Handle        = 0x80280035\n\tTPM_E_NOTFIPS                                                             Handle        = 0x80280036\n\tTPM_E_INVALID_FAMILY                                                      Handle        = 0x80280037\n\tTPM_E_NO_NV_PERMISSION                                                    Handle        = 0x80280038\n\tTPM_E_REQUIRES_SIGN                                                       Handle        = 0x80280039\n\tTPM_E_KEY_NOTSUPPORTED                                                    Handle        = 0x8028003A\n\tTPM_E_AUTH_CONFLICT                                                       Handle        = 0x8028003B\n\tTPM_E_AREA_LOCKED                                                         Handle        = 0x8028003C\n\tTPM_E_BAD_LOCALITY                                                        Handle        = 0x8028003D\n\tTPM_E_READ_ONLY                                                           Handle        = 0x8028003E\n\tTPM_E_PER_NOWRITE                                                         Handle        = 0x8028003F\n\tTPM_E_FAMILYCOUNT                                                         Handle        = 0x80280040\n\tTPM_E_WRITE_LOCKED                                                        Handle        = 0x80280041\n\tTPM_E_BAD_ATTRIBUTES                                                      Handle        = 0x80280042\n\tTPM_E_INVALID_STRUCTURE                                                   Handle        = 0x80280043\n\tTPM_E_KEY_OWNER_CONTROL                                                   Handle        = 0x80280044\n\tTPM_E_BAD_COUNTER                                                         Handle        = 0x80280045\n\tTPM_E_NOT_FULLWRITE                                                       Handle        = 0x80280046\n\tTPM_E_CONTEXT_GAP                                                         Handle        = 0x80280047\n\tTPM_E_MAXNVWRITES                                                         Handle        = 0x80280048\n\tTPM_E_NOOPERATOR                                                          Handle        = 0x80280049\n\tTPM_E_RESOURCEMISSING                                                     Handle        = 0x8028004A\n\tTPM_E_DELEGATE_LOCK                                                       Handle        = 0x8028004B\n\tTPM_E_DELEGATE_FAMILY                                                     Handle        = 0x8028004C\n\tTPM_E_DELEGATE_ADMIN                                                      Handle        = 0x8028004D\n\tTPM_E_TRANSPORT_NOTEXCLUSIVE                                              Handle        = 0x8028004E\n\tTPM_E_OWNER_CONTROL                                                       Handle        = 0x8028004F\n\tTPM_E_DAA_RESOURCES                                                       Handle        = 0x80280050\n\tTPM_E_DAA_INPUT_DATA0                                                     Handle        = 0x80280051\n\tTPM_E_DAA_INPUT_DATA1                                                     Handle        = 0x80280052\n\tTPM_E_DAA_ISSUER_SETTINGS                                                 Handle        = 0x80280053\n\tTPM_E_DAA_TPM_SETTINGS                                                    Handle        = 0x80280054\n\tTPM_E_DAA_STAGE                                                           Handle        = 0x80280055\n\tTPM_E_DAA_ISSUER_VALIDITY                                                 Handle        = 0x80280056\n\tTPM_E_DAA_WRONG_W                                                         Handle        = 0x80280057\n\tTPM_E_BAD_HANDLE                                                          Handle        = 0x80280058\n\tTPM_E_BAD_DELEGATE                                                        Handle        = 0x80280059\n\tTPM_E_BADCONTEXT                                                          Handle        = 0x8028005A\n\tTPM_E_TOOMANYCONTEXTS                                                     Handle        = 0x8028005B\n\tTPM_E_MA_TICKET_SIGNATURE                                                 Handle        = 0x8028005C\n\tTPM_E_MA_DESTINATION                                                      Handle        = 0x8028005D\n\tTPM_E_MA_SOURCE                                                           Handle        = 0x8028005E\n\tTPM_E_MA_AUTHORITY                                                        Handle        = 0x8028005F\n\tTPM_E_PERMANENTEK                                                         Handle        = 0x80280061\n\tTPM_E_BAD_SIGNATURE                                                       Handle        = 0x80280062\n\tTPM_E_NOCONTEXTSPACE                                                      Handle        = 0x80280063\n\tTPM_20_E_ASYMMETRIC                                                       Handle        = 0x80280081\n\tTPM_20_E_ATTRIBUTES                                                       Handle        = 0x80280082\n\tTPM_20_E_HASH                                                             Handle        = 0x80280083\n\tTPM_20_E_VALUE                                                            Handle        = 0x80280084\n\tTPM_20_E_HIERARCHY                                                        Handle        = 0x80280085\n\tTPM_20_E_KEY_SIZE                                                         Handle        = 0x80280087\n\tTPM_20_E_MGF                                                              Handle        = 0x80280088\n\tTPM_20_E_MODE                                                             Handle        = 0x80280089\n\tTPM_20_E_TYPE                                                             Handle        = 0x8028008A\n\tTPM_20_E_HANDLE                                                           Handle        = 0x8028008B\n\tTPM_20_E_KDF                                                              Handle        = 0x8028008C\n\tTPM_20_E_RANGE                                                            Handle        = 0x8028008D\n\tTPM_20_E_AUTH_FAIL                                                        Handle        = 0x8028008E\n\tTPM_20_E_NONCE                                                            Handle        = 0x8028008F\n\tTPM_20_E_PP                                                               Handle        = 0x80280090\n\tTPM_20_E_SCHEME                                                           Handle        = 0x80280092\n\tTPM_20_E_SIZE                                                             Handle        = 0x80280095\n\tTPM_20_E_SYMMETRIC                                                        Handle        = 0x80280096\n\tTPM_20_E_TAG                                                              Handle        = 0x80280097\n\tTPM_20_E_SELECTOR                                                         Handle        = 0x80280098\n\tTPM_20_E_INSUFFICIENT                                                     Handle        = 0x8028009A\n\tTPM_20_E_SIGNATURE                                                        Handle        = 0x8028009B\n\tTPM_20_E_KEY                                                              Handle        = 0x8028009C\n\tTPM_20_E_POLICY_FAIL                                                      Handle        = 0x8028009D\n\tTPM_20_E_INTEGRITY                                                        Handle        = 0x8028009F\n\tTPM_20_E_TICKET                                                           Handle        = 0x802800A0\n\tTPM_20_E_RESERVED_BITS                                                    Handle        = 0x802800A1\n\tTPM_20_E_BAD_AUTH                                                         Handle        = 0x802800A2\n\tTPM_20_E_EXPIRED                                                          Handle        = 0x802800A3\n\tTPM_20_E_POLICY_CC                                                        Handle        = 0x802800A4\n\tTPM_20_E_BINDING                                                          Handle        = 0x802800A5\n\tTPM_20_E_CURVE                                                            Handle        = 0x802800A6\n\tTPM_20_E_ECC_POINT                                                        Handle        = 0x802800A7\n\tTPM_20_E_INITIALIZE                                                       Handle        = 0x80280100\n\tTPM_20_E_FAILURE                                                          Handle        = 0x80280101\n\tTPM_20_E_SEQUENCE                                                         Handle        = 0x80280103\n\tTPM_20_E_PRIVATE                                                          Handle        = 0x8028010B\n\tTPM_20_E_HMAC                                                             Handle        = 0x80280119\n\tTPM_20_E_DISABLED                                                         Handle        = 0x80280120\n\tTPM_20_E_EXCLUSIVE                                                        Handle        = 0x80280121\n\tTPM_20_E_ECC_CURVE                                                        Handle        = 0x80280123\n\tTPM_20_E_AUTH_TYPE                                                        Handle        = 0x80280124\n\tTPM_20_E_AUTH_MISSING                                                     Handle        = 0x80280125\n\tTPM_20_E_POLICY                                                           Handle        = 0x80280126\n\tTPM_20_E_PCR                                                              Handle        = 0x80280127\n\tTPM_20_E_PCR_CHANGED                                                      Handle        = 0x80280128\n\tTPM_20_E_UPGRADE                                                          Handle        = 0x8028012D\n\tTPM_20_E_TOO_MANY_CONTEXTS                                                Handle        = 0x8028012E\n\tTPM_20_E_AUTH_UNAVAILABLE                                                 Handle        = 0x8028012F\n\tTPM_20_E_REBOOT                                                           Handle        = 0x80280130\n\tTPM_20_E_UNBALANCED                                                       Handle        = 0x80280131\n\tTPM_20_E_COMMAND_SIZE                                                     Handle        = 0x80280142\n\tTPM_20_E_COMMAND_CODE                                                     Handle        = 0x80280143\n\tTPM_20_E_AUTHSIZE                                                         Handle        = 0x80280144\n\tTPM_20_E_AUTH_CONTEXT                                                     Handle        = 0x80280145\n\tTPM_20_E_NV_RANGE                                                         Handle        = 0x80280146\n\tTPM_20_E_NV_SIZE                                                          Handle        = 0x80280147\n\tTPM_20_E_NV_LOCKED                                                        Handle        = 0x80280148\n\tTPM_20_E_NV_AUTHORIZATION                                                 Handle        = 0x80280149\n\tTPM_20_E_NV_UNINITIALIZED                                                 Handle        = 0x8028014A\n\tTPM_20_E_NV_SPACE                                                         Handle        = 0x8028014B\n\tTPM_20_E_NV_DEFINED                                                       Handle        = 0x8028014C\n\tTPM_20_E_BAD_CONTEXT                                                      Handle        = 0x80280150\n\tTPM_20_E_CPHASH                                                           Handle        = 0x80280151\n\tTPM_20_E_PARENT                                                           Handle        = 0x80280152\n\tTPM_20_E_NEEDS_TEST                                                       Handle        = 0x80280153\n\tTPM_20_E_NO_RESULT                                                        Handle        = 0x80280154\n\tTPM_20_E_SENSITIVE                                                        Handle        = 0x80280155\n\tTPM_E_COMMAND_BLOCKED                                                     Handle        = 0x80280400\n\tTPM_E_INVALID_HANDLE                                                      Handle        = 0x80280401\n\tTPM_E_DUPLICATE_VHANDLE                                                   Handle        = 0x80280402\n\tTPM_E_EMBEDDED_COMMAND_BLOCKED                                            Handle        = 0x80280403\n\tTPM_E_EMBEDDED_COMMAND_UNSUPPORTED                                        Handle        = 0x80280404\n\tTPM_E_RETRY                                                               Handle        = 0x80280800\n\tTPM_E_NEEDS_SELFTEST                                                      Handle        = 0x80280801\n\tTPM_E_DOING_SELFTEST                                                      Handle        = 0x80280802\n\tTPM_E_DEFEND_LOCK_RUNNING                                                 Handle        = 0x80280803\n\tTPM_20_E_CONTEXT_GAP                                                      Handle        = 0x80280901\n\tTPM_20_E_OBJECT_MEMORY                                                    Handle        = 0x80280902\n\tTPM_20_E_SESSION_MEMORY                                                   Handle        = 0x80280903\n\tTPM_20_E_MEMORY                                                           Handle        = 0x80280904\n\tTPM_20_E_SESSION_HANDLES                                                  Handle        = 0x80280905\n\tTPM_20_E_OBJECT_HANDLES                                                   Handle        = 0x80280906\n\tTPM_20_E_LOCALITY                                                         Handle        = 0x80280907\n\tTPM_20_E_YIELDED                                                          Handle        = 0x80280908\n\tTPM_20_E_CANCELED                                                         Handle        = 0x80280909\n\tTPM_20_E_TESTING                                                          Handle        = 0x8028090A\n\tTPM_20_E_NV_RATE                                                          Handle        = 0x80280920\n\tTPM_20_E_LOCKOUT                                                          Handle        = 0x80280921\n\tTPM_20_E_RETRY                                                            Handle        = 0x80280922\n\tTPM_20_E_NV_UNAVAILABLE                                                   Handle        = 0x80280923\n\tTBS_E_INTERNAL_ERROR                                                      Handle        = 0x80284001\n\tTBS_E_BAD_PARAMETER                                                       Handle        = 0x80284002\n\tTBS_E_INVALID_OUTPUT_POINTER                                              Handle        = 0x80284003\n\tTBS_E_INVALID_CONTEXT                                                     Handle        = 0x80284004\n\tTBS_E_INSUFFICIENT_BUFFER                                                 Handle        = 0x80284005\n\tTBS_E_IOERROR                                                             Handle        = 0x80284006\n\tTBS_E_INVALID_CONTEXT_PARAM                                               Handle        = 0x80284007\n\tTBS_E_SERVICE_NOT_RUNNING                                                 Handle        = 0x80284008\n\tTBS_E_TOO_MANY_TBS_CONTEXTS                                               Handle        = 0x80284009\n\tTBS_E_TOO_MANY_RESOURCES                                                  Handle        = 0x8028400A\n\tTBS_E_SERVICE_START_PENDING                                               Handle        = 0x8028400B\n\tTBS_E_PPI_NOT_SUPPORTED                                                   Handle        = 0x8028400C\n\tTBS_E_COMMAND_CANCELED                                                    Handle        = 0x8028400D\n\tTBS_E_BUFFER_TOO_LARGE                                                    Handle        = 0x8028400E\n\tTBS_E_TPM_NOT_FOUND                                                       Handle        = 0x8028400F\n\tTBS_E_SERVICE_DISABLED                                                    Handle        = 0x80284010\n\tTBS_E_NO_EVENT_LOG                                                        Handle        = 0x80284011\n\tTBS_E_ACCESS_DENIED                                                       Handle        = 0x80284012\n\tTBS_E_PROVISIONING_NOT_ALLOWED                                            Handle        = 0x80284013\n\tTBS_E_PPI_FUNCTION_UNSUPPORTED                                            Handle        = 0x80284014\n\tTBS_E_OWNERAUTH_NOT_FOUND                                                 Handle        = 0x80284015\n\tTBS_E_PROVISIONING_INCOMPLETE                                             Handle        = 0x80284016\n\tTPMAPI_E_INVALID_STATE                                                    Handle        = 0x80290100\n\tTPMAPI_E_NOT_ENOUGH_DATA                                                  Handle        = 0x80290101\n\tTPMAPI_E_TOO_MUCH_DATA                                                    Handle        = 0x80290102\n\tTPMAPI_E_INVALID_OUTPUT_POINTER                                           Handle        = 0x80290103\n\tTPMAPI_E_INVALID_PARAMETER                                                Handle        = 0x80290104\n\tTPMAPI_E_OUT_OF_MEMORY                                                    Handle        = 0x80290105\n\tTPMAPI_E_BUFFER_TOO_SMALL                                                 Handle        = 0x80290106\n\tTPMAPI_E_INTERNAL_ERROR                                                   Handle        = 0x80290107\n\tTPMAPI_E_ACCESS_DENIED                                                    Handle        = 0x80290108\n\tTPMAPI_E_AUTHORIZATION_FAILED                                             Handle        = 0x80290109\n\tTPMAPI_E_INVALID_CONTEXT_HANDLE                                           Handle        = 0x8029010A\n\tTPMAPI_E_TBS_COMMUNICATION_ERROR                                          Handle        = 0x8029010B\n\tTPMAPI_E_TPM_COMMAND_ERROR                                                Handle        = 0x8029010C\n\tTPMAPI_E_MESSAGE_TOO_LARGE                                                Handle        = 0x8029010D\n\tTPMAPI_E_INVALID_ENCODING                                                 Handle        = 0x8029010E\n\tTPMAPI_E_INVALID_KEY_SIZE                                                 Handle        = 0x8029010F\n\tTPMAPI_E_ENCRYPTION_FAILED                                                Handle        = 0x80290110\n\tTPMAPI_E_INVALID_KEY_PARAMS                                               Handle        = 0x80290111\n\tTPMAPI_E_INVALID_MIGRATION_AUTHORIZATION_BLOB                             Handle        = 0x80290112\n\tTPMAPI_E_INVALID_PCR_INDEX                                                Handle        = 0x80290113\n\tTPMAPI_E_INVALID_DELEGATE_BLOB                                            Handle        = 0x80290114\n\tTPMAPI_E_INVALID_CONTEXT_PARAMS                                           Handle        = 0x80290115\n\tTPMAPI_E_INVALID_KEY_BLOB                                                 Handle        = 0x80290116\n\tTPMAPI_E_INVALID_PCR_DATA                                                 Handle        = 0x80290117\n\tTPMAPI_E_INVALID_OWNER_AUTH                                               Handle        = 0x80290118\n\tTPMAPI_E_FIPS_RNG_CHECK_FAILED                                            Handle        = 0x80290119\n\tTPMAPI_E_EMPTY_TCG_LOG                                                    Handle        = 0x8029011A\n\tTPMAPI_E_INVALID_TCG_LOG_ENTRY                                            Handle        = 0x8029011B\n\tTPMAPI_E_TCG_SEPARATOR_ABSENT                                             Handle        = 0x8029011C\n\tTPMAPI_E_TCG_INVALID_DIGEST_ENTRY                                         Handle        = 0x8029011D\n\tTPMAPI_E_POLICY_DENIES_OPERATION                                          Handle        = 0x8029011E\n\tTPMAPI_E_NV_BITS_NOT_DEFINED                                              Handle        = 0x8029011F\n\tTPMAPI_E_NV_BITS_NOT_READY                                                Handle        = 0x80290120\n\tTPMAPI_E_SEALING_KEY_NOT_AVAILABLE                                        Handle        = 0x80290121\n\tTPMAPI_E_NO_AUTHORIZATION_CHAIN_FOUND                                     Handle        = 0x80290122\n\tTPMAPI_E_SVN_COUNTER_NOT_AVAILABLE                                        Handle        = 0x80290123\n\tTPMAPI_E_OWNER_AUTH_NOT_NULL                                              Handle        = 0x80290124\n\tTPMAPI_E_ENDORSEMENT_AUTH_NOT_NULL                                        Handle        = 0x80290125\n\tTPMAPI_E_AUTHORIZATION_REVOKED                                            Handle        = 0x80290126\n\tTPMAPI_E_MALFORMED_AUTHORIZATION_KEY                                      Handle        = 0x80290127\n\tTPMAPI_E_AUTHORIZING_KEY_NOT_SUPPORTED                                    Handle        = 0x80290128\n\tTPMAPI_E_INVALID_AUTHORIZATION_SIGNATURE                                  Handle        = 0x80290129\n\tTPMAPI_E_MALFORMED_AUTHORIZATION_POLICY                                   Handle        = 0x8029012A\n\tTPMAPI_E_MALFORMED_AUTHORIZATION_OTHER                                    Handle        = 0x8029012B\n\tTPMAPI_E_SEALING_KEY_CHANGED                                              Handle        = 0x8029012C\n\tTBSIMP_E_BUFFER_TOO_SMALL                                                 Handle        = 0x80290200\n\tTBSIMP_E_CLEANUP_FAILED                                                   Handle        = 0x80290201\n\tTBSIMP_E_INVALID_CONTEXT_HANDLE                                           Handle        = 0x80290202\n\tTBSIMP_E_INVALID_CONTEXT_PARAM                                            Handle        = 0x80290203\n\tTBSIMP_E_TPM_ERROR                                                        Handle        = 0x80290204\n\tTBSIMP_E_HASH_BAD_KEY                                                     Handle        = 0x80290205\n\tTBSIMP_E_DUPLICATE_VHANDLE                                                Handle        = 0x80290206\n\tTBSIMP_E_INVALID_OUTPUT_POINTER                                           Handle        = 0x80290207\n\tTBSIMP_E_INVALID_PARAMETER                                                Handle        = 0x80290208\n\tTBSIMP_E_RPC_INIT_FAILED                                                  Handle        = 0x80290209\n\tTBSIMP_E_SCHEDULER_NOT_RUNNING                                            Handle        = 0x8029020A\n\tTBSIMP_E_COMMAND_CANCELED                                                 Handle        = 0x8029020B\n\tTBSIMP_E_OUT_OF_MEMORY                                                    Handle        = 0x8029020C\n\tTBSIMP_E_LIST_NO_MORE_ITEMS                                               Handle        = 0x8029020D\n\tTBSIMP_E_LIST_NOT_FOUND                                                   Handle        = 0x8029020E\n\tTBSIMP_E_NOT_ENOUGH_SPACE                                                 Handle        = 0x8029020F\n\tTBSIMP_E_NOT_ENOUGH_TPM_CONTEXTS                                          Handle        = 0x80290210\n\tTBSIMP_E_COMMAND_FAILED                                                   Handle        = 0x80290211\n\tTBSIMP_E_UNKNOWN_ORDINAL                                                  Handle        = 0x80290212\n\tTBSIMP_E_RESOURCE_EXPIRED                                                 Handle        = 0x80290213\n\tTBSIMP_E_INVALID_RESOURCE                                                 Handle        = 0x80290214\n\tTBSIMP_E_NOTHING_TO_UNLOAD                                                Handle        = 0x80290215\n\tTBSIMP_E_HASH_TABLE_FULL                                                  Handle        = 0x80290216\n\tTBSIMP_E_TOO_MANY_TBS_CONTEXTS                                            Handle        = 0x80290217\n\tTBSIMP_E_TOO_MANY_RESOURCES                                               Handle        = 0x80290218\n\tTBSIMP_E_PPI_NOT_SUPPORTED                                                Handle        = 0x80290219\n\tTBSIMP_E_TPM_INCOMPATIBLE                                                 Handle        = 0x8029021A\n\tTBSIMP_E_NO_EVENT_LOG                                                     Handle        = 0x8029021B\n\tTPM_E_PPI_ACPI_FAILURE                                                    Handle        = 0x80290300\n\tTPM_E_PPI_USER_ABORT                                                      Handle        = 0x80290301\n\tTPM_E_PPI_BIOS_FAILURE                                                    Handle        = 0x80290302\n\tTPM_E_PPI_NOT_SUPPORTED                                                   Handle        = 0x80290303\n\tTPM_E_PPI_BLOCKED_IN_BIOS                                                 Handle        = 0x80290304\n\tTPM_E_PCP_ERROR_MASK                                                      Handle        = 0x80290400\n\tTPM_E_PCP_DEVICE_NOT_READY                                                Handle        = 0x80290401\n\tTPM_E_PCP_INVALID_HANDLE                                                  Handle        = 0x80290402\n\tTPM_E_PCP_INVALID_PARAMETER                                               Handle        = 0x80290403\n\tTPM_E_PCP_FLAG_NOT_SUPPORTED                                              Handle        = 0x80290404\n\tTPM_E_PCP_NOT_SUPPORTED                                                   Handle        = 0x80290405\n\tTPM_E_PCP_BUFFER_TOO_SMALL                                                Handle        = 0x80290406\n\tTPM_E_PCP_INTERNAL_ERROR                                                  Handle        = 0x80290407\n\tTPM_E_PCP_AUTHENTICATION_FAILED                                           Handle        = 0x80290408\n\tTPM_E_PCP_AUTHENTICATION_IGNORED                                          Handle        = 0x80290409\n\tTPM_E_PCP_POLICY_NOT_FOUND                                                Handle        = 0x8029040A\n\tTPM_E_PCP_PROFILE_NOT_FOUND                                               Handle        = 0x8029040B\n\tTPM_E_PCP_VALIDATION_FAILED                                               Handle        = 0x8029040C\n\tTPM_E_PCP_WRONG_PARENT                                                    Handle        = 0x8029040E\n\tTPM_E_KEY_NOT_LOADED                                                      Handle        = 0x8029040F\n\tTPM_E_NO_KEY_CERTIFICATION                                                Handle        = 0x80290410\n\tTPM_E_KEY_NOT_FINALIZED                                                   Handle        = 0x80290411\n\tTPM_E_ATTESTATION_CHALLENGE_NOT_SET                                       Handle        = 0x80290412\n\tTPM_E_NOT_PCR_BOUND                                                       Handle        = 0x80290413\n\tTPM_E_KEY_ALREADY_FINALIZED                                               Handle        = 0x80290414\n\tTPM_E_KEY_USAGE_POLICY_NOT_SUPPORTED                                      Handle        = 0x80290415\n\tTPM_E_KEY_USAGE_POLICY_INVALID                                            Handle        = 0x80290416\n\tTPM_E_SOFT_KEY_ERROR                                                      Handle        = 0x80290417\n\tTPM_E_KEY_NOT_AUTHENTICATED                                               Handle        = 0x80290418\n\tTPM_E_PCP_KEY_NOT_AIK                                                     Handle        = 0x80290419\n\tTPM_E_KEY_NOT_SIGNING_KEY                                                 Handle        = 0x8029041A\n\tTPM_E_LOCKED_OUT                                                          Handle        = 0x8029041B\n\tTPM_E_CLAIM_TYPE_NOT_SUPPORTED                                            Handle        = 0x8029041C\n\tTPM_E_VERSION_NOT_SUPPORTED                                               Handle        = 0x8029041D\n\tTPM_E_BUFFER_LENGTH_MISMATCH                                              Handle        = 0x8029041E\n\tTPM_E_PCP_IFX_RSA_KEY_CREATION_BLOCKED                                    Handle        = 0x8029041F\n\tTPM_E_PCP_TICKET_MISSING                                                  Handle        = 0x80290420\n\tTPM_E_PCP_RAW_POLICY_NOT_SUPPORTED                                        Handle        = 0x80290421\n\tTPM_E_PCP_KEY_HANDLE_INVALIDATED                                          Handle        = 0x80290422\n\tTPM_E_PCP_UNSUPPORTED_PSS_SALT                                            Handle        = 0x40290423\n\tTPM_E_ZERO_EXHAUST_ENABLED                                                Handle        = 0x80290500\n\tPLA_E_DCS_NOT_FOUND                                                       Handle        = 0x80300002\n\tPLA_E_DCS_IN_USE                                                          Handle        = 0x803000AA\n\tPLA_E_TOO_MANY_FOLDERS                                                    Handle        = 0x80300045\n\tPLA_E_NO_MIN_DISK                                                         Handle        = 0x80300070\n\tPLA_E_DCS_ALREADY_EXISTS                                                  Handle        = 0x803000B7\n\tPLA_S_PROPERTY_IGNORED                                                    Handle        = 0x00300100\n\tPLA_E_PROPERTY_CONFLICT                                                   Handle        = 0x80300101\n\tPLA_E_DCS_SINGLETON_REQUIRED                                              Handle        = 0x80300102\n\tPLA_E_CREDENTIALS_REQUIRED                                                Handle        = 0x80300103\n\tPLA_E_DCS_NOT_RUNNING                                                     Handle        = 0x80300104\n\tPLA_E_CONFLICT_INCL_EXCL_API                                              Handle        = 0x80300105\n\tPLA_E_NETWORK_EXE_NOT_VALID                                               Handle        = 0x80300106\n\tPLA_E_EXE_ALREADY_CONFIGURED                                              Handle        = 0x80300107\n\tPLA_E_EXE_PATH_NOT_VALID                                                  Handle        = 0x80300108\n\tPLA_E_DC_ALREADY_EXISTS                                                   Handle        = 0x80300109\n\tPLA_E_DCS_START_WAIT_TIMEOUT                                              Handle        = 0x8030010A\n\tPLA_E_DC_START_WAIT_TIMEOUT                                               Handle        = 0x8030010B\n\tPLA_E_REPORT_WAIT_TIMEOUT                                                 Handle        = 0x8030010C\n\tPLA_E_NO_DUPLICATES                                                       Handle        = 0x8030010D\n\tPLA_E_EXE_FULL_PATH_REQUIRED                                              Handle        = 0x8030010E\n\tPLA_E_INVALID_SESSION_NAME                                                Handle        = 0x8030010F\n\tPLA_E_PLA_CHANNEL_NOT_ENABLED                                             Handle        = 0x80300110\n\tPLA_E_TASKSCHED_CHANNEL_NOT_ENABLED                                       Handle        = 0x80300111\n\tPLA_E_RULES_MANAGER_FAILED                                                Handle        = 0x80300112\n\tPLA_E_CABAPI_FAILURE                                                      Handle        = 0x80300113\n\tFVE_E_LOCKED_VOLUME                                                       Handle        = 0x80310000\n\tFVE_E_NOT_ENCRYPTED                                                       Handle        = 0x80310001\n\tFVE_E_NO_TPM_BIOS                                                         Handle        = 0x80310002\n\tFVE_E_NO_MBR_METRIC                                                       Handle        = 0x80310003\n\tFVE_E_NO_BOOTSECTOR_METRIC                                                Handle        = 0x80310004\n\tFVE_E_NO_BOOTMGR_METRIC                                                   Handle        = 0x80310005\n\tFVE_E_WRONG_BOOTMGR                                                       Handle        = 0x80310006\n\tFVE_E_SECURE_KEY_REQUIRED                                                 Handle        = 0x80310007\n\tFVE_E_NOT_ACTIVATED                                                       Handle        = 0x80310008\n\tFVE_E_ACTION_NOT_ALLOWED                                                  Handle        = 0x80310009\n\tFVE_E_AD_SCHEMA_NOT_INSTALLED                                             Handle        = 0x8031000A\n\tFVE_E_AD_INVALID_DATATYPE                                                 Handle        = 0x8031000B\n\tFVE_E_AD_INVALID_DATASIZE                                                 Handle        = 0x8031000C\n\tFVE_E_AD_NO_VALUES                                                        Handle        = 0x8031000D\n\tFVE_E_AD_ATTR_NOT_SET                                                     Handle        = 0x8031000E\n\tFVE_E_AD_GUID_NOT_FOUND                                                   Handle        = 0x8031000F\n\tFVE_E_BAD_INFORMATION                                                     Handle        = 0x80310010\n\tFVE_E_TOO_SMALL                                                           Handle        = 0x80310011\n\tFVE_E_SYSTEM_VOLUME                                                       Handle        = 0x80310012\n\tFVE_E_FAILED_WRONG_FS                                                     Handle        = 0x80310013\n\tFVE_E_BAD_PARTITION_SIZE                                                  Handle        = 0x80310014\n\tFVE_E_NOT_SUPPORTED                                                       Handle        = 0x80310015\n\tFVE_E_BAD_DATA                                                            Handle        = 0x80310016\n\tFVE_E_VOLUME_NOT_BOUND                                                    Handle        = 0x80310017\n\tFVE_E_TPM_NOT_OWNED                                                       Handle        = 0x80310018\n\tFVE_E_NOT_DATA_VOLUME                                                     Handle        = 0x80310019\n\tFVE_E_AD_INSUFFICIENT_BUFFER                                              Handle        = 0x8031001A\n\tFVE_E_CONV_READ                                                           Handle        = 0x8031001B\n\tFVE_E_CONV_WRITE                                                          Handle        = 0x8031001C\n\tFVE_E_KEY_REQUIRED                                                        Handle        = 0x8031001D\n\tFVE_E_CLUSTERING_NOT_SUPPORTED                                            Handle        = 0x8031001E\n\tFVE_E_VOLUME_BOUND_ALREADY                                                Handle        = 0x8031001F\n\tFVE_E_OS_NOT_PROTECTED                                                    Handle        = 0x80310020\n\tFVE_E_PROTECTION_DISABLED                                                 Handle        = 0x80310021\n\tFVE_E_RECOVERY_KEY_REQUIRED                                               Handle        = 0x80310022\n\tFVE_E_FOREIGN_VOLUME                                                      Handle        = 0x80310023\n\tFVE_E_OVERLAPPED_UPDATE                                                   Handle        = 0x80310024\n\tFVE_E_TPM_SRK_AUTH_NOT_ZERO                                               Handle        = 0x80310025\n\tFVE_E_FAILED_SECTOR_SIZE                                                  Handle        = 0x80310026\n\tFVE_E_FAILED_AUTHENTICATION                                               Handle        = 0x80310027\n\tFVE_E_NOT_OS_VOLUME                                                       Handle        = 0x80310028\n\tFVE_E_AUTOUNLOCK_ENABLED                                                  Handle        = 0x80310029\n\tFVE_E_WRONG_BOOTSECTOR                                                    Handle        = 0x8031002A\n\tFVE_E_WRONG_SYSTEM_FS                                                     Handle        = 0x8031002B\n\tFVE_E_POLICY_PASSWORD_REQUIRED                                            Handle        = 0x8031002C\n\tFVE_E_CANNOT_SET_FVEK_ENCRYPTED                                           Handle        = 0x8031002D\n\tFVE_E_CANNOT_ENCRYPT_NO_KEY                                               Handle        = 0x8031002E\n\tFVE_E_BOOTABLE_CDDVD                                                      Handle        = 0x80310030\n\tFVE_E_PROTECTOR_EXISTS                                                    Handle        = 0x80310031\n\tFVE_E_RELATIVE_PATH                                                       Handle        = 0x80310032\n\tFVE_E_PROTECTOR_NOT_FOUND                                                 Handle        = 0x80310033\n\tFVE_E_INVALID_KEY_FORMAT                                                  Handle        = 0x80310034\n\tFVE_E_INVALID_PASSWORD_FORMAT                                             Handle        = 0x80310035\n\tFVE_E_FIPS_RNG_CHECK_FAILED                                               Handle        = 0x80310036\n\tFVE_E_FIPS_PREVENTS_RECOVERY_PASSWORD                                     Handle        = 0x80310037\n\tFVE_E_FIPS_PREVENTS_EXTERNAL_KEY_EXPORT                                   Handle        = 0x80310038\n\tFVE_E_NOT_DECRYPTED                                                       Handle        = 0x80310039\n\tFVE_E_INVALID_PROTECTOR_TYPE                                              Handle        = 0x8031003A\n\tFVE_E_NO_PROTECTORS_TO_TEST                                               Handle        = 0x8031003B\n\tFVE_E_KEYFILE_NOT_FOUND                                                   Handle        = 0x8031003C\n\tFVE_E_KEYFILE_INVALID                                                     Handle        = 0x8031003D\n\tFVE_E_KEYFILE_NO_VMK                                                      Handle        = 0x8031003E\n\tFVE_E_TPM_DISABLED                                                        Handle        = 0x8031003F\n\tFVE_E_NOT_ALLOWED_IN_SAFE_MODE                                            Handle        = 0x80310040\n\tFVE_E_TPM_INVALID_PCR                                                     Handle        = 0x80310041\n\tFVE_E_TPM_NO_VMK                                                          Handle        = 0x80310042\n\tFVE_E_PIN_INVALID                                                         Handle        = 0x80310043\n\tFVE_E_AUTH_INVALID_APPLICATION                                            Handle        = 0x80310044\n\tFVE_E_AUTH_INVALID_CONFIG                                                 Handle        = 0x80310045\n\tFVE_E_FIPS_DISABLE_PROTECTION_NOT_ALLOWED                                 Handle        = 0x80310046\n\tFVE_E_FS_NOT_EXTENDED                                                     Handle        = 0x80310047\n\tFVE_E_FIRMWARE_TYPE_NOT_SUPPORTED                                         Handle        = 0x80310048\n\tFVE_E_NO_LICENSE                                                          Handle        = 0x80310049\n\tFVE_E_NOT_ON_STACK                                                        Handle        = 0x8031004A\n\tFVE_E_FS_MOUNTED                                                          Handle        = 0x8031004B\n\tFVE_E_TOKEN_NOT_IMPERSONATED                                              Handle        = 0x8031004C\n\tFVE_E_DRY_RUN_FAILED                                                      Handle        = 0x8031004D\n\tFVE_E_REBOOT_REQUIRED                                                     Handle        = 0x8031004E\n\tFVE_E_DEBUGGER_ENABLED                                                    Handle        = 0x8031004F\n\tFVE_E_RAW_ACCESS                                                          Handle        = 0x80310050\n\tFVE_E_RAW_BLOCKED                                                         Handle        = 0x80310051\n\tFVE_E_BCD_APPLICATIONS_PATH_INCORRECT                                     Handle        = 0x80310052\n\tFVE_E_NOT_ALLOWED_IN_VERSION                                              Handle        = 0x80310053\n\tFVE_E_NO_AUTOUNLOCK_MASTER_KEY                                            Handle        = 0x80310054\n\tFVE_E_MOR_FAILED                                                          Handle        = 0x80310055\n\tFVE_E_HIDDEN_VOLUME                                                       Handle        = 0x80310056\n\tFVE_E_TRANSIENT_STATE                                                     Handle        = 0x80310057\n\tFVE_E_PUBKEY_NOT_ALLOWED                                                  Handle        = 0x80310058\n\tFVE_E_VOLUME_HANDLE_OPEN                                                  Handle        = 0x80310059\n\tFVE_E_NO_FEATURE_LICENSE                                                  Handle        = 0x8031005A\n\tFVE_E_INVALID_STARTUP_OPTIONS                                             Handle        = 0x8031005B\n\tFVE_E_POLICY_RECOVERY_PASSWORD_NOT_ALLOWED                                Handle        = 0x8031005C\n\tFVE_E_POLICY_RECOVERY_PASSWORD_REQUIRED                                   Handle        = 0x8031005D\n\tFVE_E_POLICY_RECOVERY_KEY_NOT_ALLOWED                                     Handle        = 0x8031005E\n\tFVE_E_POLICY_RECOVERY_KEY_REQUIRED                                        Handle        = 0x8031005F\n\tFVE_E_POLICY_STARTUP_PIN_NOT_ALLOWED                                      Handle        = 0x80310060\n\tFVE_E_POLICY_STARTUP_PIN_REQUIRED                                         Handle        = 0x80310061\n\tFVE_E_POLICY_STARTUP_KEY_NOT_ALLOWED                                      Handle        = 0x80310062\n\tFVE_E_POLICY_STARTUP_KEY_REQUIRED                                         Handle        = 0x80310063\n\tFVE_E_POLICY_STARTUP_PIN_KEY_NOT_ALLOWED                                  Handle        = 0x80310064\n\tFVE_E_POLICY_STARTUP_PIN_KEY_REQUIRED                                     Handle        = 0x80310065\n\tFVE_E_POLICY_STARTUP_TPM_NOT_ALLOWED                                      Handle        = 0x80310066\n\tFVE_E_POLICY_STARTUP_TPM_REQUIRED                                         Handle        = 0x80310067\n\tFVE_E_POLICY_INVALID_PIN_LENGTH                                           Handle        = 0x80310068\n\tFVE_E_KEY_PROTECTOR_NOT_SUPPORTED                                         Handle        = 0x80310069\n\tFVE_E_POLICY_PASSPHRASE_NOT_ALLOWED                                       Handle        = 0x8031006A\n\tFVE_E_POLICY_PASSPHRASE_REQUIRED                                          Handle        = 0x8031006B\n\tFVE_E_FIPS_PREVENTS_PASSPHRASE                                            Handle        = 0x8031006C\n\tFVE_E_OS_VOLUME_PASSPHRASE_NOT_ALLOWED                                    Handle        = 0x8031006D\n\tFVE_E_INVALID_BITLOCKER_OID                                               Handle        = 0x8031006E\n\tFVE_E_VOLUME_TOO_SMALL                                                    Handle        = 0x8031006F\n\tFVE_E_DV_NOT_SUPPORTED_ON_FS                                              Handle        = 0x80310070\n\tFVE_E_DV_NOT_ALLOWED_BY_GP                                                Handle        = 0x80310071\n\tFVE_E_POLICY_USER_CERTIFICATE_NOT_ALLOWED                                 Handle        = 0x80310072\n\tFVE_E_POLICY_USER_CERTIFICATE_REQUIRED                                    Handle        = 0x80310073\n\tFVE_E_POLICY_USER_CERT_MUST_BE_HW                                         Handle        = 0x80310074\n\tFVE_E_POLICY_USER_CONFIGURE_FDV_AUTOUNLOCK_NOT_ALLOWED                    Handle        = 0x80310075\n\tFVE_E_POLICY_USER_CONFIGURE_RDV_AUTOUNLOCK_NOT_ALLOWED                    Handle        = 0x80310076\n\tFVE_E_POLICY_USER_CONFIGURE_RDV_NOT_ALLOWED                               Handle        = 0x80310077\n\tFVE_E_POLICY_USER_ENABLE_RDV_NOT_ALLOWED                                  Handle        = 0x80310078\n\tFVE_E_POLICY_USER_DISABLE_RDV_NOT_ALLOWED                                 Handle        = 0x80310079\n\tFVE_E_POLICY_INVALID_PASSPHRASE_LENGTH                                    Handle        = 0x80310080\n\tFVE_E_POLICY_PASSPHRASE_TOO_SIMPLE                                        Handle        = 0x80310081\n\tFVE_E_RECOVERY_PARTITION                                                  Handle        = 0x80310082\n\tFVE_E_POLICY_CONFLICT_FDV_RK_OFF_AUK_ON                                   Handle        = 0x80310083\n\tFVE_E_POLICY_CONFLICT_RDV_RK_OFF_AUK_ON                                   Handle        = 0x80310084\n\tFVE_E_NON_BITLOCKER_OID                                                   Handle        = 0x80310085\n\tFVE_E_POLICY_PROHIBITS_SELFSIGNED                                         Handle        = 0x80310086\n\tFVE_E_POLICY_CONFLICT_RO_AND_STARTUP_KEY_REQUIRED                         Handle        = 0x80310087\n\tFVE_E_CONV_RECOVERY_FAILED                                                Handle        = 0x80310088\n\tFVE_E_VIRTUALIZED_SPACE_TOO_BIG                                           Handle        = 0x80310089\n\tFVE_E_POLICY_CONFLICT_OSV_RP_OFF_ADB_ON                                   Handle        = 0x80310090\n\tFVE_E_POLICY_CONFLICT_FDV_RP_OFF_ADB_ON                                   Handle        = 0x80310091\n\tFVE_E_POLICY_CONFLICT_RDV_RP_OFF_ADB_ON                                   Handle        = 0x80310092\n\tFVE_E_NON_BITLOCKER_KU                                                    Handle        = 0x80310093\n\tFVE_E_PRIVATEKEY_AUTH_FAILED                                              Handle        = 0x80310094\n\tFVE_E_REMOVAL_OF_DRA_FAILED                                               Handle        = 0x80310095\n\tFVE_E_OPERATION_NOT_SUPPORTED_ON_VISTA_VOLUME                             Handle        = 0x80310096\n\tFVE_E_CANT_LOCK_AUTOUNLOCK_ENABLED_VOLUME                                 Handle        = 0x80310097\n\tFVE_E_FIPS_HASH_KDF_NOT_ALLOWED                                           Handle        = 0x80310098\n\tFVE_E_ENH_PIN_INVALID                                                     Handle        = 0x80310099\n\tFVE_E_INVALID_PIN_CHARS                                                   Handle        = 0x8031009A\n\tFVE_E_INVALID_DATUM_TYPE                                                  Handle        = 0x8031009B\n\tFVE_E_EFI_ONLY                                                            Handle        = 0x8031009C\n\tFVE_E_MULTIPLE_NKP_CERTS                                                  Handle        = 0x8031009D\n\tFVE_E_REMOVAL_OF_NKP_FAILED                                               Handle        = 0x8031009E\n\tFVE_E_INVALID_NKP_CERT                                                    Handle        = 0x8031009F\n\tFVE_E_NO_EXISTING_PIN                                                     Handle        = 0x803100A0\n\tFVE_E_PROTECTOR_CHANGE_PIN_MISMATCH                                       Handle        = 0x803100A1\n\tFVE_E_PIN_PROTECTOR_CHANGE_BY_STD_USER_DISALLOWED                         Handle        = 0x803100A2\n\tFVE_E_PROTECTOR_CHANGE_MAX_PIN_CHANGE_ATTEMPTS_REACHED                    Handle        = 0x803100A3\n\tFVE_E_POLICY_PASSPHRASE_REQUIRES_ASCII                                    Handle        = 0x803100A4\n\tFVE_E_FULL_ENCRYPTION_NOT_ALLOWED_ON_TP_STORAGE                           Handle        = 0x803100A5\n\tFVE_E_WIPE_NOT_ALLOWED_ON_TP_STORAGE                                      Handle        = 0x803100A6\n\tFVE_E_KEY_LENGTH_NOT_SUPPORTED_BY_EDRIVE                                  Handle        = 0x803100A7\n\tFVE_E_NO_EXISTING_PASSPHRASE                                              Handle        = 0x803100A8\n\tFVE_E_PROTECTOR_CHANGE_PASSPHRASE_MISMATCH                                Handle        = 0x803100A9\n\tFVE_E_PASSPHRASE_TOO_LONG                                                 Handle        = 0x803100AA\n\tFVE_E_NO_PASSPHRASE_WITH_TPM                                              Handle        = 0x803100AB\n\tFVE_E_NO_TPM_WITH_PASSPHRASE                                              Handle        = 0x803100AC\n\tFVE_E_NOT_ALLOWED_ON_CSV_STACK                                            Handle        = 0x803100AD\n\tFVE_E_NOT_ALLOWED_ON_CLUSTER                                              Handle        = 0x803100AE\n\tFVE_E_EDRIVE_NO_FAILOVER_TO_SW                                            Handle        = 0x803100AF\n\tFVE_E_EDRIVE_BAND_IN_USE                                                  Handle        = 0x803100B0\n\tFVE_E_EDRIVE_DISALLOWED_BY_GP                                             Handle        = 0x803100B1\n\tFVE_E_EDRIVE_INCOMPATIBLE_VOLUME                                          Handle        = 0x803100B2\n\tFVE_E_NOT_ALLOWED_TO_UPGRADE_WHILE_CONVERTING                             Handle        = 0x803100B3\n\tFVE_E_EDRIVE_DV_NOT_SUPPORTED                                             Handle        = 0x803100B4\n\tFVE_E_NO_PREBOOT_KEYBOARD_DETECTED                                        Handle        = 0x803100B5\n\tFVE_E_NO_PREBOOT_KEYBOARD_OR_WINRE_DETECTED                               Handle        = 0x803100B6\n\tFVE_E_POLICY_REQUIRES_STARTUP_PIN_ON_TOUCH_DEVICE                         Handle        = 0x803100B7\n\tFVE_E_POLICY_REQUIRES_RECOVERY_PASSWORD_ON_TOUCH_DEVICE                   Handle        = 0x803100B8\n\tFVE_E_WIPE_CANCEL_NOT_APPLICABLE                                          Handle        = 0x803100B9\n\tFVE_E_SECUREBOOT_DISABLED                                                 Handle        = 0x803100BA\n\tFVE_E_SECUREBOOT_CONFIGURATION_INVALID                                    Handle        = 0x803100BB\n\tFVE_E_EDRIVE_DRY_RUN_FAILED                                               Handle        = 0x803100BC\n\tFVE_E_SHADOW_COPY_PRESENT                                                 Handle        = 0x803100BD\n\tFVE_E_POLICY_INVALID_ENHANCED_BCD_SETTINGS                                Handle        = 0x803100BE\n\tFVE_E_EDRIVE_INCOMPATIBLE_FIRMWARE                                        Handle        = 0x803100BF\n\tFVE_E_PROTECTOR_CHANGE_MAX_PASSPHRASE_CHANGE_ATTEMPTS_REACHED             Handle        = 0x803100C0\n\tFVE_E_PASSPHRASE_PROTECTOR_CHANGE_BY_STD_USER_DISALLOWED                  Handle        = 0x803100C1\n\tFVE_E_LIVEID_ACCOUNT_SUSPENDED                                            Handle        = 0x803100C2\n\tFVE_E_LIVEID_ACCOUNT_BLOCKED                                              Handle        = 0x803100C3\n\tFVE_E_NOT_PROVISIONED_ON_ALL_VOLUMES                                      Handle        = 0x803100C4\n\tFVE_E_DE_FIXED_DATA_NOT_SUPPORTED                                         Handle        = 0x803100C5\n\tFVE_E_DE_HARDWARE_NOT_COMPLIANT                                           Handle        = 0x803100C6\n\tFVE_E_DE_WINRE_NOT_CONFIGURED                                             Handle        = 0x803100C7\n\tFVE_E_DE_PROTECTION_SUSPENDED                                             Handle        = 0x803100C8\n\tFVE_E_DE_OS_VOLUME_NOT_PROTECTED                                          Handle        = 0x803100C9\n\tFVE_E_DE_DEVICE_LOCKEDOUT                                                 Handle        = 0x803100CA\n\tFVE_E_DE_PROTECTION_NOT_YET_ENABLED                                       Handle        = 0x803100CB\n\tFVE_E_INVALID_PIN_CHARS_DETAILED                                          Handle        = 0x803100CC\n\tFVE_E_DEVICE_LOCKOUT_COUNTER_UNAVAILABLE                                  Handle        = 0x803100CD\n\tFVE_E_DEVICELOCKOUT_COUNTER_MISMATCH                                      Handle        = 0x803100CE\n\tFVE_E_BUFFER_TOO_LARGE                                                    Handle        = 0x803100CF\n\tFVE_E_NO_SUCH_CAPABILITY_ON_TARGET                                        Handle        = 0x803100D0\n\tFVE_E_DE_PREVENTED_FOR_OS                                                 Handle        = 0x803100D1\n\tFVE_E_DE_VOLUME_OPTED_OUT                                                 Handle        = 0x803100D2\n\tFVE_E_DE_VOLUME_NOT_SUPPORTED                                             Handle        = 0x803100D3\n\tFVE_E_EOW_NOT_SUPPORTED_IN_VERSION                                        Handle        = 0x803100D4\n\tFVE_E_ADBACKUP_NOT_ENABLED                                                Handle        = 0x803100D5\n\tFVE_E_VOLUME_EXTEND_PREVENTS_EOW_DECRYPT                                  Handle        = 0x803100D6\n\tFVE_E_NOT_DE_VOLUME                                                       Handle        = 0x803100D7\n\tFVE_E_PROTECTION_CANNOT_BE_DISABLED                                       Handle        = 0x803100D8\n\tFVE_E_OSV_KSR_NOT_ALLOWED                                                 Handle        = 0x803100D9\n\tFVE_E_AD_BACKUP_REQUIRED_POLICY_NOT_SET_OS_DRIVE                          Handle        = 0x803100DA\n\tFVE_E_AD_BACKUP_REQUIRED_POLICY_NOT_SET_FIXED_DRIVE                       Handle        = 0x803100DB\n\tFVE_E_AD_BACKUP_REQUIRED_POLICY_NOT_SET_REMOVABLE_DRIVE                   Handle        = 0x803100DC\n\tFVE_E_KEY_ROTATION_NOT_SUPPORTED                                          Handle        = 0x803100DD\n\tFVE_E_EXECUTE_REQUEST_SENT_TOO_SOON                                       Handle        = 0x803100DE\n\tFVE_E_KEY_ROTATION_NOT_ENABLED                                            Handle        = 0x803100DF\n\tFVE_E_DEVICE_NOT_JOINED                                                   Handle        = 0x803100E0\n\tFWP_E_CALLOUT_NOT_FOUND                                                   Handle        = 0x80320001\n\tFWP_E_CONDITION_NOT_FOUND                                                 Handle        = 0x80320002\n\tFWP_E_FILTER_NOT_FOUND                                                    Handle        = 0x80320003\n\tFWP_E_LAYER_NOT_FOUND                                                     Handle        = 0x80320004\n\tFWP_E_PROVIDER_NOT_FOUND                                                  Handle        = 0x80320005\n\tFWP_E_PROVIDER_CONTEXT_NOT_FOUND                                          Handle        = 0x80320006\n\tFWP_E_SUBLAYER_NOT_FOUND                                                  Handle        = 0x80320007\n\tFWP_E_NOT_FOUND                                                           Handle        = 0x80320008\n\tFWP_E_ALREADY_EXISTS                                                      Handle        = 0x80320009\n\tFWP_E_IN_USE                                                              Handle        = 0x8032000A\n\tFWP_E_DYNAMIC_SESSION_IN_PROGRESS                                         Handle        = 0x8032000B\n\tFWP_E_WRONG_SESSION                                                       Handle        = 0x8032000C\n\tFWP_E_NO_TXN_IN_PROGRESS                                                  Handle        = 0x8032000D\n\tFWP_E_TXN_IN_PROGRESS                                                     Handle        = 0x8032000E\n\tFWP_E_TXN_ABORTED                                                         Handle        = 0x8032000F\n\tFWP_E_SESSION_ABORTED                                                     Handle        = 0x80320010\n\tFWP_E_INCOMPATIBLE_TXN                                                    Handle        = 0x80320011\n\tFWP_E_TIMEOUT                                                             Handle        = 0x80320012\n\tFWP_E_NET_EVENTS_DISABLED                                                 Handle        = 0x80320013\n\tFWP_E_INCOMPATIBLE_LAYER                                                  Handle        = 0x80320014\n\tFWP_E_KM_CLIENTS_ONLY                                                     Handle        = 0x80320015\n\tFWP_E_LIFETIME_MISMATCH                                                   Handle        = 0x80320016\n\tFWP_E_BUILTIN_OBJECT                                                      Handle        = 0x80320017\n\tFWP_E_TOO_MANY_CALLOUTS                                                   Handle        = 0x80320018\n\tFWP_E_NOTIFICATION_DROPPED                                                Handle        = 0x80320019\n\tFWP_E_TRAFFIC_MISMATCH                                                    Handle        = 0x8032001A\n\tFWP_E_INCOMPATIBLE_SA_STATE                                               Handle        = 0x8032001B\n\tFWP_E_NULL_POINTER                                                        Handle        = 0x8032001C\n\tFWP_E_INVALID_ENUMERATOR                                                  Handle        = 0x8032001D\n\tFWP_E_INVALID_FLAGS                                                       Handle        = 0x8032001E\n\tFWP_E_INVALID_NET_MASK                                                    Handle        = 0x8032001F\n\tFWP_E_INVALID_RANGE                                                       Handle        = 0x80320020\n\tFWP_E_INVALID_INTERVAL                                                    Handle        = 0x80320021\n\tFWP_E_ZERO_LENGTH_ARRAY                                                   Handle        = 0x80320022\n\tFWP_E_NULL_DISPLAY_NAME                                                   Handle        = 0x80320023\n\tFWP_E_INVALID_ACTION_TYPE                                                 Handle        = 0x80320024\n\tFWP_E_INVALID_WEIGHT                                                      Handle        = 0x80320025\n\tFWP_E_MATCH_TYPE_MISMATCH                                                 Handle        = 0x80320026\n\tFWP_E_TYPE_MISMATCH                                                       Handle        = 0x80320027\n\tFWP_E_OUT_OF_BOUNDS                                                       Handle        = 0x80320028\n\tFWP_E_RESERVED                                                            Handle        = 0x80320029\n\tFWP_E_DUPLICATE_CONDITION                                                 Handle        = 0x8032002A\n\tFWP_E_DUPLICATE_KEYMOD                                                    Handle        = 0x8032002B\n\tFWP_E_ACTION_INCOMPATIBLE_WITH_LAYER                                      Handle        = 0x8032002C\n\tFWP_E_ACTION_INCOMPATIBLE_WITH_SUBLAYER                                   Handle        = 0x8032002D\n\tFWP_E_CONTEXT_INCOMPATIBLE_WITH_LAYER                                     Handle        = 0x8032002E\n\tFWP_E_CONTEXT_INCOMPATIBLE_WITH_CALLOUT                                   Handle        = 0x8032002F\n\tFWP_E_INCOMPATIBLE_AUTH_METHOD                                            Handle        = 0x80320030\n\tFWP_E_INCOMPATIBLE_DH_GROUP                                               Handle        = 0x80320031\n\tFWP_E_EM_NOT_SUPPORTED                                                    Handle        = 0x80320032\n\tFWP_E_NEVER_MATCH                                                         Handle        = 0x80320033\n\tFWP_E_PROVIDER_CONTEXT_MISMATCH                                           Handle        = 0x80320034\n\tFWP_E_INVALID_PARAMETER                                                   Handle        = 0x80320035\n\tFWP_E_TOO_MANY_SUBLAYERS                                                  Handle        = 0x80320036\n\tFWP_E_CALLOUT_NOTIFICATION_FAILED                                         Handle        = 0x80320037\n\tFWP_E_INVALID_AUTH_TRANSFORM                                              Handle        = 0x80320038\n\tFWP_E_INVALID_CIPHER_TRANSFORM                                            Handle        = 0x80320039\n\tFWP_E_INCOMPATIBLE_CIPHER_TRANSFORM                                       Handle        = 0x8032003A\n\tFWP_E_INVALID_TRANSFORM_COMBINATION                                       Handle        = 0x8032003B\n\tFWP_E_DUPLICATE_AUTH_METHOD                                               Handle        = 0x8032003C\n\tFWP_E_INVALID_TUNNEL_ENDPOINT                                             Handle        = 0x8032003D\n\tFWP_E_L2_DRIVER_NOT_READY                                                 Handle        = 0x8032003E\n\tFWP_E_KEY_DICTATOR_ALREADY_REGISTERED                                     Handle        = 0x8032003F\n\tFWP_E_KEY_DICTATION_INVALID_KEYING_MATERIAL                               Handle        = 0x80320040\n\tFWP_E_CONNECTIONS_DISABLED                                                Handle        = 0x80320041\n\tFWP_E_INVALID_DNS_NAME                                                    Handle        = 0x80320042\n\tFWP_E_STILL_ON                                                            Handle        = 0x80320043\n\tFWP_E_IKEEXT_NOT_RUNNING                                                  Handle        = 0x80320044\n\tFWP_E_DROP_NOICMP                                                         Handle        = 0x80320104\n\tWS_S_ASYNC                                                                Handle        = 0x003D0000\n\tWS_S_END                                                                  Handle        = 0x003D0001\n\tWS_E_INVALID_FORMAT                                                       Handle        = 0x803D0000\n\tWS_E_OBJECT_FAULTED                                                       Handle        = 0x803D0001\n\tWS_E_NUMERIC_OVERFLOW                                                     Handle        = 0x803D0002\n\tWS_E_INVALID_OPERATION                                                    Handle        = 0x803D0003\n\tWS_E_OPERATION_ABORTED                                                    Handle        = 0x803D0004\n\tWS_E_ENDPOINT_ACCESS_DENIED                                               Handle        = 0x803D0005\n\tWS_E_OPERATION_TIMED_OUT                                                  Handle        = 0x803D0006\n\tWS_E_OPERATION_ABANDONED                                                  Handle        = 0x803D0007\n\tWS_E_QUOTA_EXCEEDED                                                       Handle        = 0x803D0008\n\tWS_E_NO_TRANSLATION_AVAILABLE                                             Handle        = 0x803D0009\n\tWS_E_SECURITY_VERIFICATION_FAILURE                                        Handle        = 0x803D000A\n\tWS_E_ADDRESS_IN_USE                                                       Handle        = 0x803D000B\n\tWS_E_ADDRESS_NOT_AVAILABLE                                                Handle        = 0x803D000C\n\tWS_E_ENDPOINT_NOT_FOUND                                                   Handle        = 0x803D000D\n\tWS_E_ENDPOINT_NOT_AVAILABLE                                               Handle        = 0x803D000E\n\tWS_E_ENDPOINT_FAILURE                                                     Handle        = 0x803D000F\n\tWS_E_ENDPOINT_UNREACHABLE                                                 Handle        = 0x803D0010\n\tWS_E_ENDPOINT_ACTION_NOT_SUPPORTED                                        Handle        = 0x803D0011\n\tWS_E_ENDPOINT_TOO_BUSY                                                    Handle        = 0x803D0012\n\tWS_E_ENDPOINT_FAULT_RECEIVED                                              Handle        = 0x803D0013\n\tWS_E_ENDPOINT_DISCONNECTED                                                Handle        = 0x803D0014\n\tWS_E_PROXY_FAILURE                                                        Handle        = 0x803D0015\n\tWS_E_PROXY_ACCESS_DENIED                                                  Handle        = 0x803D0016\n\tWS_E_NOT_SUPPORTED                                                        Handle        = 0x803D0017\n\tWS_E_PROXY_REQUIRES_BASIC_AUTH                                            Handle        = 0x803D0018\n\tWS_E_PROXY_REQUIRES_DIGEST_AUTH                                           Handle        = 0x803D0019\n\tWS_E_PROXY_REQUIRES_NTLM_AUTH                                             Handle        = 0x803D001A\n\tWS_E_PROXY_REQUIRES_NEGOTIATE_AUTH                                        Handle        = 0x803D001B\n\tWS_E_SERVER_REQUIRES_BASIC_AUTH                                           Handle        = 0x803D001C\n\tWS_E_SERVER_REQUIRES_DIGEST_AUTH                                          Handle        = 0x803D001D\n\tWS_E_SERVER_REQUIRES_NTLM_AUTH                                            Handle        = 0x803D001E\n\tWS_E_SERVER_REQUIRES_NEGOTIATE_AUTH                                       Handle        = 0x803D001F\n\tWS_E_INVALID_ENDPOINT_URL                                                 Handle        = 0x803D0020\n\tWS_E_OTHER                                                                Handle        = 0x803D0021\n\tWS_E_SECURITY_TOKEN_EXPIRED                                               Handle        = 0x803D0022\n\tWS_E_SECURITY_SYSTEM_FAILURE                                              Handle        = 0x803D0023\n\tERROR_NDIS_INTERFACE_CLOSING                                              syscall.Errno = 0x80340002\n\tERROR_NDIS_BAD_VERSION                                                    syscall.Errno = 0x80340004\n\tERROR_NDIS_BAD_CHARACTERISTICS                                            syscall.Errno = 0x80340005\n\tERROR_NDIS_ADAPTER_NOT_FOUND                                              syscall.Errno = 0x80340006\n\tERROR_NDIS_OPEN_FAILED                                                    syscall.Errno = 0x80340007\n\tERROR_NDIS_DEVICE_FAILED                                                  syscall.Errno = 0x80340008\n\tERROR_NDIS_MULTICAST_FULL                                                 syscall.Errno = 0x80340009\n\tERROR_NDIS_MULTICAST_EXISTS                                               syscall.Errno = 0x8034000A\n\tERROR_NDIS_MULTICAST_NOT_FOUND                                            syscall.Errno = 0x8034000B\n\tERROR_NDIS_REQUEST_ABORTED                                                syscall.Errno = 0x8034000C\n\tERROR_NDIS_RESET_IN_PROGRESS                                              syscall.Errno = 0x8034000D\n\tERROR_NDIS_NOT_SUPPORTED                                                  syscall.Errno = 0x803400BB\n\tERROR_NDIS_INVALID_PACKET                                                 syscall.Errno = 0x8034000F\n\tERROR_NDIS_ADAPTER_NOT_READY                                              syscall.Errno = 0x80340011\n\tERROR_NDIS_INVALID_LENGTH                                                 syscall.Errno = 0x80340014\n\tERROR_NDIS_INVALID_DATA                                                   syscall.Errno = 0x80340015\n\tERROR_NDIS_BUFFER_TOO_SHORT                                               syscall.Errno = 0x80340016\n\tERROR_NDIS_INVALID_OID                                                    syscall.Errno = 0x80340017\n\tERROR_NDIS_ADAPTER_REMOVED                                                syscall.Errno = 0x80340018\n\tERROR_NDIS_UNSUPPORTED_MEDIA                                              syscall.Errno = 0x80340019\n\tERROR_NDIS_GROUP_ADDRESS_IN_USE                                           syscall.Errno = 0x8034001A\n\tERROR_NDIS_FILE_NOT_FOUND                                                 syscall.Errno = 0x8034001B\n\tERROR_NDIS_ERROR_READING_FILE                                             syscall.Errno = 0x8034001C\n\tERROR_NDIS_ALREADY_MAPPED                                                 syscall.Errno = 0x8034001D\n\tERROR_NDIS_RESOURCE_CONFLICT                                              syscall.Errno = 0x8034001E\n\tERROR_NDIS_MEDIA_DISCONNECTED                                             syscall.Errno = 0x8034001F\n\tERROR_NDIS_INVALID_ADDRESS                                                syscall.Errno = 0x80340022\n\tERROR_NDIS_INVALID_DEVICE_REQUEST                                         syscall.Errno = 0x80340010\n\tERROR_NDIS_PAUSED                                                         syscall.Errno = 0x8034002A\n\tERROR_NDIS_INTERFACE_NOT_FOUND                                            syscall.Errno = 0x8034002B\n\tERROR_NDIS_UNSUPPORTED_REVISION                                           syscall.Errno = 0x8034002C\n\tERROR_NDIS_INVALID_PORT                                                   syscall.Errno = 0x8034002D\n\tERROR_NDIS_INVALID_PORT_STATE                                             syscall.Errno = 0x8034002E\n\tERROR_NDIS_LOW_POWER_STATE                                                syscall.Errno = 0x8034002F\n\tERROR_NDIS_REINIT_REQUIRED                                                syscall.Errno = 0x80340030\n\tERROR_NDIS_NO_QUEUES                                                      syscall.Errno = 0x80340031\n\tERROR_NDIS_DOT11_AUTO_CONFIG_ENABLED                                      syscall.Errno = 0x80342000\n\tERROR_NDIS_DOT11_MEDIA_IN_USE                                             syscall.Errno = 0x80342001\n\tERROR_NDIS_DOT11_POWER_STATE_INVALID                                      syscall.Errno = 0x80342002\n\tERROR_NDIS_PM_WOL_PATTERN_LIST_FULL                                       syscall.Errno = 0x80342003\n\tERROR_NDIS_PM_PROTOCOL_OFFLOAD_LIST_FULL                                  syscall.Errno = 0x80342004\n\tERROR_NDIS_DOT11_AP_CHANNEL_CURRENTLY_NOT_AVAILABLE                       syscall.Errno = 0x80342005\n\tERROR_NDIS_DOT11_AP_BAND_CURRENTLY_NOT_AVAILABLE                          syscall.Errno = 0x80342006\n\tERROR_NDIS_DOT11_AP_CHANNEL_NOT_ALLOWED                                   syscall.Errno = 0x80342007\n\tERROR_NDIS_DOT11_AP_BAND_NOT_ALLOWED                                      syscall.Errno = 0x80342008\n\tERROR_NDIS_INDICATION_REQUIRED                                            syscall.Errno = 0x00340001\n\tERROR_NDIS_OFFLOAD_POLICY                                                 syscall.Errno = 0xC034100F\n\tERROR_NDIS_OFFLOAD_CONNECTION_REJECTED                                    syscall.Errno = 0xC0341012\n\tERROR_NDIS_OFFLOAD_PATH_REJECTED                                          syscall.Errno = 0xC0341013\n\tERROR_HV_INVALID_HYPERCALL_CODE                                           syscall.Errno = 0xC0350002\n\tERROR_HV_INVALID_HYPERCALL_INPUT                                          syscall.Errno = 0xC0350003\n\tERROR_HV_INVALID_ALIGNMENT                                                syscall.Errno = 0xC0350004\n\tERROR_HV_INVALID_PARAMETER                                                syscall.Errno = 0xC0350005\n\tERROR_HV_ACCESS_DENIED                                                    syscall.Errno = 0xC0350006\n\tERROR_HV_INVALID_PARTITION_STATE                                          syscall.Errno = 0xC0350007\n\tERROR_HV_OPERATION_DENIED                                                 syscall.Errno = 0xC0350008\n\tERROR_HV_UNKNOWN_PROPERTY                                                 syscall.Errno = 0xC0350009\n\tERROR_HV_PROPERTY_VALUE_OUT_OF_RANGE                                      syscall.Errno = 0xC035000A\n\tERROR_HV_INSUFFICIENT_MEMORY                                              syscall.Errno = 0xC035000B\n\tERROR_HV_PARTITION_TOO_DEEP                                               syscall.Errno = 0xC035000C\n\tERROR_HV_INVALID_PARTITION_ID                                             syscall.Errno = 0xC035000D\n\tERROR_HV_INVALID_VP_INDEX                                                 syscall.Errno = 0xC035000E\n\tERROR_HV_INVALID_PORT_ID                                                  syscall.Errno = 0xC0350011\n\tERROR_HV_INVALID_CONNECTION_ID                                            syscall.Errno = 0xC0350012\n\tERROR_HV_INSUFFICIENT_BUFFERS                                             syscall.Errno = 0xC0350013\n\tERROR_HV_NOT_ACKNOWLEDGED                                                 syscall.Errno = 0xC0350014\n\tERROR_HV_INVALID_VP_STATE                                                 syscall.Errno = 0xC0350015\n\tERROR_HV_ACKNOWLEDGED                                                     syscall.Errno = 0xC0350016\n\tERROR_HV_INVALID_SAVE_RESTORE_STATE                                       syscall.Errno = 0xC0350017\n\tERROR_HV_INVALID_SYNIC_STATE                                              syscall.Errno = 0xC0350018\n\tERROR_HV_OBJECT_IN_USE                                                    syscall.Errno = 0xC0350019\n\tERROR_HV_INVALID_PROXIMITY_DOMAIN_INFO                                    syscall.Errno = 0xC035001A\n\tERROR_HV_NO_DATA                                                          syscall.Errno = 0xC035001B\n\tERROR_HV_INACTIVE                                                         syscall.Errno = 0xC035001C\n\tERROR_HV_NO_RESOURCES                                                     syscall.Errno = 0xC035001D\n\tERROR_HV_FEATURE_UNAVAILABLE                                              syscall.Errno = 0xC035001E\n\tERROR_HV_INSUFFICIENT_BUFFER                                              syscall.Errno = 0xC0350033\n\tERROR_HV_INSUFFICIENT_DEVICE_DOMAINS                                      syscall.Errno = 0xC0350038\n\tERROR_HV_CPUID_FEATURE_VALIDATION                                         syscall.Errno = 0xC035003C\n\tERROR_HV_CPUID_XSAVE_FEATURE_VALIDATION                                   syscall.Errno = 0xC035003D\n\tERROR_HV_PROCESSOR_STARTUP_TIMEOUT                                        syscall.Errno = 0xC035003E\n\tERROR_HV_SMX_ENABLED                                                      syscall.Errno = 0xC035003F\n\tERROR_HV_INVALID_LP_INDEX                                                 syscall.Errno = 0xC0350041\n\tERROR_HV_INVALID_REGISTER_VALUE                                           syscall.Errno = 0xC0350050\n\tERROR_HV_INVALID_VTL_STATE                                                syscall.Errno = 0xC0350051\n\tERROR_HV_NX_NOT_DETECTED                                                  syscall.Errno = 0xC0350055\n\tERROR_HV_INVALID_DEVICE_ID                                                syscall.Errno = 0xC0350057\n\tERROR_HV_INVALID_DEVICE_STATE                                             syscall.Errno = 0xC0350058\n\tERROR_HV_PENDING_PAGE_REQUESTS                                            syscall.Errno = 0x00350059\n\tERROR_HV_PAGE_REQUEST_INVALID                                             syscall.Errno = 0xC0350060\n\tERROR_HV_INVALID_CPU_GROUP_ID                                             syscall.Errno = 0xC035006F\n\tERROR_HV_INVALID_CPU_GROUP_STATE                                          syscall.Errno = 0xC0350070\n\tERROR_HV_OPERATION_FAILED                                                 syscall.Errno = 0xC0350071\n\tERROR_HV_NOT_ALLOWED_WITH_NESTED_VIRT_ACTIVE                              syscall.Errno = 0xC0350072\n\tERROR_HV_INSUFFICIENT_ROOT_MEMORY                                         syscall.Errno = 0xC0350073\n\tERROR_HV_NOT_PRESENT                                                      syscall.Errno = 0xC0351000\n\tERROR_VID_DUPLICATE_HANDLER                                               syscall.Errno = 0xC0370001\n\tERROR_VID_TOO_MANY_HANDLERS                                               syscall.Errno = 0xC0370002\n\tERROR_VID_QUEUE_FULL                                                      syscall.Errno = 0xC0370003\n\tERROR_VID_HANDLER_NOT_PRESENT                                             syscall.Errno = 0xC0370004\n\tERROR_VID_INVALID_OBJECT_NAME                                             syscall.Errno = 0xC0370005\n\tERROR_VID_PARTITION_NAME_TOO_LONG                                         syscall.Errno = 0xC0370006\n\tERROR_VID_MESSAGE_QUEUE_NAME_TOO_LONG                                     syscall.Errno = 0xC0370007\n\tERROR_VID_PARTITION_ALREADY_EXISTS                                        syscall.Errno = 0xC0370008\n\tERROR_VID_PARTITION_DOES_NOT_EXIST                                        syscall.Errno = 0xC0370009\n\tERROR_VID_PARTITION_NAME_NOT_FOUND                                        syscall.Errno = 0xC037000A\n\tERROR_VID_MESSAGE_QUEUE_ALREADY_EXISTS                                    syscall.Errno = 0xC037000B\n\tERROR_VID_EXCEEDED_MBP_ENTRY_MAP_LIMIT                                    syscall.Errno = 0xC037000C\n\tERROR_VID_MB_STILL_REFERENCED                                             syscall.Errno = 0xC037000D\n\tERROR_VID_CHILD_GPA_PAGE_SET_CORRUPTED                                    syscall.Errno = 0xC037000E\n\tERROR_VID_INVALID_NUMA_SETTINGS                                           syscall.Errno = 0xC037000F\n\tERROR_VID_INVALID_NUMA_NODE_INDEX                                         syscall.Errno = 0xC0370010\n\tERROR_VID_NOTIFICATION_QUEUE_ALREADY_ASSOCIATED                           syscall.Errno = 0xC0370011\n\tERROR_VID_INVALID_MEMORY_BLOCK_HANDLE                                     syscall.Errno = 0xC0370012\n\tERROR_VID_PAGE_RANGE_OVERFLOW                                             syscall.Errno = 0xC0370013\n\tERROR_VID_INVALID_MESSAGE_QUEUE_HANDLE                                    syscall.Errno = 0xC0370014\n\tERROR_VID_INVALID_GPA_RANGE_HANDLE                                        syscall.Errno = 0xC0370015\n\tERROR_VID_NO_MEMORY_BLOCK_NOTIFICATION_QUEUE                              syscall.Errno = 0xC0370016\n\tERROR_VID_MEMORY_BLOCK_LOCK_COUNT_EXCEEDED                                syscall.Errno = 0xC0370017\n\tERROR_VID_INVALID_PPM_HANDLE                                              syscall.Errno = 0xC0370018\n\tERROR_VID_MBPS_ARE_LOCKED                                                 syscall.Errno = 0xC0370019\n\tERROR_VID_MESSAGE_QUEUE_CLOSED                                            syscall.Errno = 0xC037001A\n\tERROR_VID_VIRTUAL_PROCESSOR_LIMIT_EXCEEDED                                syscall.Errno = 0xC037001B\n\tERROR_VID_STOP_PENDING                                                    syscall.Errno = 0xC037001C\n\tERROR_VID_INVALID_PROCESSOR_STATE                                         syscall.Errno = 0xC037001D\n\tERROR_VID_EXCEEDED_KM_CONTEXT_COUNT_LIMIT                                 syscall.Errno = 0xC037001E\n\tERROR_VID_KM_INTERFACE_ALREADY_INITIALIZED                                syscall.Errno = 0xC037001F\n\tERROR_VID_MB_PROPERTY_ALREADY_SET_RESET                                   syscall.Errno = 0xC0370020\n\tERROR_VID_MMIO_RANGE_DESTROYED                                            syscall.Errno = 0xC0370021\n\tERROR_VID_INVALID_CHILD_GPA_PAGE_SET                                      syscall.Errno = 0xC0370022\n\tERROR_VID_RESERVE_PAGE_SET_IS_BEING_USED                                  syscall.Errno = 0xC0370023\n\tERROR_VID_RESERVE_PAGE_SET_TOO_SMALL                                      syscall.Errno = 0xC0370024\n\tERROR_VID_MBP_ALREADY_LOCKED_USING_RESERVED_PAGE                          syscall.Errno = 0xC0370025\n\tERROR_VID_MBP_COUNT_EXCEEDED_LIMIT                                        syscall.Errno = 0xC0370026\n\tERROR_VID_SAVED_STATE_CORRUPT                                             syscall.Errno = 0xC0370027\n\tERROR_VID_SAVED_STATE_UNRECOGNIZED_ITEM                                   syscall.Errno = 0xC0370028\n\tERROR_VID_SAVED_STATE_INCOMPATIBLE                                        syscall.Errno = 0xC0370029\n\tERROR_VID_VTL_ACCESS_DENIED                                               syscall.Errno = 0xC037002A\n\tERROR_VMCOMPUTE_TERMINATED_DURING_START                                   syscall.Errno = 0xC0370100\n\tERROR_VMCOMPUTE_IMAGE_MISMATCH                                            syscall.Errno = 0xC0370101\n\tERROR_VMCOMPUTE_HYPERV_NOT_INSTALLED                                      syscall.Errno = 0xC0370102\n\tERROR_VMCOMPUTE_OPERATION_PENDING                                         syscall.Errno = 0xC0370103\n\tERROR_VMCOMPUTE_TOO_MANY_NOTIFICATIONS                                    syscall.Errno = 0xC0370104\n\tERROR_VMCOMPUTE_INVALID_STATE                                             syscall.Errno = 0xC0370105\n\tERROR_VMCOMPUTE_UNEXPECTED_EXIT                                           syscall.Errno = 0xC0370106\n\tERROR_VMCOMPUTE_TERMINATED                                                syscall.Errno = 0xC0370107\n\tERROR_VMCOMPUTE_CONNECT_FAILED                                            syscall.Errno = 0xC0370108\n\tERROR_VMCOMPUTE_TIMEOUT                                                   syscall.Errno = 0xC0370109\n\tERROR_VMCOMPUTE_CONNECTION_CLOSED                                         syscall.Errno = 0xC037010A\n\tERROR_VMCOMPUTE_UNKNOWN_MESSAGE                                           syscall.Errno = 0xC037010B\n\tERROR_VMCOMPUTE_UNSUPPORTED_PROTOCOL_VERSION                              syscall.Errno = 0xC037010C\n\tERROR_VMCOMPUTE_INVALID_JSON                                              syscall.Errno = 0xC037010D\n\tERROR_VMCOMPUTE_SYSTEM_NOT_FOUND                                          syscall.Errno = 0xC037010E\n\tERROR_VMCOMPUTE_SYSTEM_ALREADY_EXISTS                                     syscall.Errno = 0xC037010F\n\tERROR_VMCOMPUTE_SYSTEM_ALREADY_STOPPED                                    syscall.Errno = 0xC0370110\n\tERROR_VMCOMPUTE_PROTOCOL_ERROR                                            syscall.Errno = 0xC0370111\n\tERROR_VMCOMPUTE_INVALID_LAYER                                             syscall.Errno = 0xC0370112\n\tERROR_VMCOMPUTE_WINDOWS_INSIDER_REQUIRED                                  syscall.Errno = 0xC0370113\n\tHCS_E_TERMINATED_DURING_START                                             Handle        = 0x80370100\n\tHCS_E_IMAGE_MISMATCH                                                      Handle        = 0x80370101\n\tHCS_E_HYPERV_NOT_INSTALLED                                                Handle        = 0x80370102\n\tHCS_E_INVALID_STATE                                                       Handle        = 0x80370105\n\tHCS_E_UNEXPECTED_EXIT                                                     Handle        = 0x80370106\n\tHCS_E_TERMINATED                                                          Handle        = 0x80370107\n\tHCS_E_CONNECT_FAILED                                                      Handle        = 0x80370108\n\tHCS_E_CONNECTION_TIMEOUT                                                  Handle        = 0x80370109\n\tHCS_E_CONNECTION_CLOSED                                                   Handle        = 0x8037010A\n\tHCS_E_UNKNOWN_MESSAGE                                                     Handle        = 0x8037010B\n\tHCS_E_UNSUPPORTED_PROTOCOL_VERSION                                        Handle        = 0x8037010C\n\tHCS_E_INVALID_JSON                                                        Handle        = 0x8037010D\n\tHCS_E_SYSTEM_NOT_FOUND                                                    Handle        = 0x8037010E\n\tHCS_E_SYSTEM_ALREADY_EXISTS                                               Handle        = 0x8037010F\n\tHCS_E_SYSTEM_ALREADY_STOPPED                                              Handle        = 0x80370110\n\tHCS_E_PROTOCOL_ERROR                                                      Handle        = 0x80370111\n\tHCS_E_INVALID_LAYER                                                       Handle        = 0x80370112\n\tHCS_E_WINDOWS_INSIDER_REQUIRED                                            Handle        = 0x80370113\n\tHCS_E_SERVICE_NOT_AVAILABLE                                               Handle        = 0x80370114\n\tHCS_E_OPERATION_NOT_STARTED                                               Handle        = 0x80370115\n\tHCS_E_OPERATION_ALREADY_STARTED                                           Handle        = 0x80370116\n\tHCS_E_OPERATION_PENDING                                                   Handle        = 0x80370117\n\tHCS_E_OPERATION_TIMEOUT                                                   Handle        = 0x80370118\n\tHCS_E_OPERATION_SYSTEM_CALLBACK_ALREADY_SET                               Handle        = 0x80370119\n\tHCS_E_OPERATION_RESULT_ALLOCATION_FAILED                                  Handle        = 0x8037011A\n\tHCS_E_ACCESS_DENIED                                                       Handle        = 0x8037011B\n\tHCS_E_GUEST_CRITICAL_ERROR                                                Handle        = 0x8037011C\n\tERROR_VNET_VIRTUAL_SWITCH_NAME_NOT_FOUND                                  syscall.Errno = 0xC0370200\n\tERROR_VID_REMOTE_NODE_PARENT_GPA_PAGES_USED                               syscall.Errno = 0x80370001\n\tWHV_E_UNKNOWN_CAPABILITY                                                  Handle        = 0x80370300\n\tWHV_E_INSUFFICIENT_BUFFER                                                 Handle        = 0x80370301\n\tWHV_E_UNKNOWN_PROPERTY                                                    Handle        = 0x80370302\n\tWHV_E_UNSUPPORTED_HYPERVISOR_CONFIG                                       Handle        = 0x80370303\n\tWHV_E_INVALID_PARTITION_CONFIG                                            Handle        = 0x80370304\n\tWHV_E_GPA_RANGE_NOT_FOUND                                                 Handle        = 0x80370305\n\tWHV_E_VP_ALREADY_EXISTS                                                   Handle        = 0x80370306\n\tWHV_E_VP_DOES_NOT_EXIST                                                   Handle        = 0x80370307\n\tWHV_E_INVALID_VP_STATE                                                    Handle        = 0x80370308\n\tWHV_E_INVALID_VP_REGISTER_NAME                                            Handle        = 0x80370309\n\tERROR_VSMB_SAVED_STATE_FILE_NOT_FOUND                                     syscall.Errno = 0xC0370400\n\tERROR_VSMB_SAVED_STATE_CORRUPT                                            syscall.Errno = 0xC0370401\n\tERROR_VOLMGR_INCOMPLETE_REGENERATION                                      syscall.Errno = 0x80380001\n\tERROR_VOLMGR_INCOMPLETE_DISK_MIGRATION                                    syscall.Errno = 0x80380002\n\tERROR_VOLMGR_DATABASE_FULL                                                syscall.Errno = 0xC0380001\n\tERROR_VOLMGR_DISK_CONFIGURATION_CORRUPTED                                 syscall.Errno = 0xC0380002\n\tERROR_VOLMGR_DISK_CONFIGURATION_NOT_IN_SYNC                               syscall.Errno = 0xC0380003\n\tERROR_VOLMGR_PACK_CONFIG_UPDATE_FAILED                                    syscall.Errno = 0xC0380004\n\tERROR_VOLMGR_DISK_CONTAINS_NON_SIMPLE_VOLUME                              syscall.Errno = 0xC0380005\n\tERROR_VOLMGR_DISK_DUPLICATE                                               syscall.Errno = 0xC0380006\n\tERROR_VOLMGR_DISK_DYNAMIC                                                 syscall.Errno = 0xC0380007\n\tERROR_VOLMGR_DISK_ID_INVALID                                              syscall.Errno = 0xC0380008\n\tERROR_VOLMGR_DISK_INVALID                                                 syscall.Errno = 0xC0380009\n\tERROR_VOLMGR_DISK_LAST_VOTER                                              syscall.Errno = 0xC038000A\n\tERROR_VOLMGR_DISK_LAYOUT_INVALID                                          syscall.Errno = 0xC038000B\n\tERROR_VOLMGR_DISK_LAYOUT_NON_BASIC_BETWEEN_BASIC_PARTITIONS               syscall.Errno = 0xC038000C\n\tERROR_VOLMGR_DISK_LAYOUT_NOT_CYLINDER_ALIGNED                             syscall.Errno = 0xC038000D\n\tERROR_VOLMGR_DISK_LAYOUT_PARTITIONS_TOO_SMALL                             syscall.Errno = 0xC038000E\n\tERROR_VOLMGR_DISK_LAYOUT_PRIMARY_BETWEEN_LOGICAL_PARTITIONS               syscall.Errno = 0xC038000F\n\tERROR_VOLMGR_DISK_LAYOUT_TOO_MANY_PARTITIONS                              syscall.Errno = 0xC0380010\n\tERROR_VOLMGR_DISK_MISSING                                                 syscall.Errno = 0xC0380011\n\tERROR_VOLMGR_DISK_NOT_EMPTY                                               syscall.Errno = 0xC0380012\n\tERROR_VOLMGR_DISK_NOT_ENOUGH_SPACE                                        syscall.Errno = 0xC0380013\n\tERROR_VOLMGR_DISK_REVECTORING_FAILED                                      syscall.Errno = 0xC0380014\n\tERROR_VOLMGR_DISK_SECTOR_SIZE_INVALID                                     syscall.Errno = 0xC0380015\n\tERROR_VOLMGR_DISK_SET_NOT_CONTAINED                                       syscall.Errno = 0xC0380016\n\tERROR_VOLMGR_DISK_USED_BY_MULTIPLE_MEMBERS                                syscall.Errno = 0xC0380017\n\tERROR_VOLMGR_DISK_USED_BY_MULTIPLE_PLEXES                                 syscall.Errno = 0xC0380018\n\tERROR_VOLMGR_DYNAMIC_DISK_NOT_SUPPORTED                                   syscall.Errno = 0xC0380019\n\tERROR_VOLMGR_EXTENT_ALREADY_USED                                          syscall.Errno = 0xC038001A\n\tERROR_VOLMGR_EXTENT_NOT_CONTIGUOUS                                        syscall.Errno = 0xC038001B\n\tERROR_VOLMGR_EXTENT_NOT_IN_PUBLIC_REGION                                  syscall.Errno = 0xC038001C\n\tERROR_VOLMGR_EXTENT_NOT_SECTOR_ALIGNED                                    syscall.Errno = 0xC038001D\n\tERROR_VOLMGR_EXTENT_OVERLAPS_EBR_PARTITION                                syscall.Errno = 0xC038001E\n\tERROR_VOLMGR_EXTENT_VOLUME_LENGTHS_DO_NOT_MATCH                           syscall.Errno = 0xC038001F\n\tERROR_VOLMGR_FAULT_TOLERANT_NOT_SUPPORTED                                 syscall.Errno = 0xC0380020\n\tERROR_VOLMGR_INTERLEAVE_LENGTH_INVALID                                    syscall.Errno = 0xC0380021\n\tERROR_VOLMGR_MAXIMUM_REGISTERED_USERS                                     syscall.Errno = 0xC0380022\n\tERROR_VOLMGR_MEMBER_IN_SYNC                                               syscall.Errno = 0xC0380023\n\tERROR_VOLMGR_MEMBER_INDEX_DUPLICATE                                       syscall.Errno = 0xC0380024\n\tERROR_VOLMGR_MEMBER_INDEX_INVALID                                         syscall.Errno = 0xC0380025\n\tERROR_VOLMGR_MEMBER_MISSING                                               syscall.Errno = 0xC0380026\n\tERROR_VOLMGR_MEMBER_NOT_DETACHED                                          syscall.Errno = 0xC0380027\n\tERROR_VOLMGR_MEMBER_REGENERATING                                          syscall.Errno = 0xC0380028\n\tERROR_VOLMGR_ALL_DISKS_FAILED                                             syscall.Errno = 0xC0380029\n\tERROR_VOLMGR_NO_REGISTERED_USERS                                          syscall.Errno = 0xC038002A\n\tERROR_VOLMGR_NO_SUCH_USER                                                 syscall.Errno = 0xC038002B\n\tERROR_VOLMGR_NOTIFICATION_RESET                                           syscall.Errno = 0xC038002C\n\tERROR_VOLMGR_NUMBER_OF_MEMBERS_INVALID                                    syscall.Errno = 0xC038002D\n\tERROR_VOLMGR_NUMBER_OF_PLEXES_INVALID                                     syscall.Errno = 0xC038002E\n\tERROR_VOLMGR_PACK_DUPLICATE                                               syscall.Errno = 0xC038002F\n\tERROR_VOLMGR_PACK_ID_INVALID                                              syscall.Errno = 0xC0380030\n\tERROR_VOLMGR_PACK_INVALID                                                 syscall.Errno = 0xC0380031\n\tERROR_VOLMGR_PACK_NAME_INVALID                                            syscall.Errno = 0xC0380032\n\tERROR_VOLMGR_PACK_OFFLINE                                                 syscall.Errno = 0xC0380033\n\tERROR_VOLMGR_PACK_HAS_QUORUM                                              syscall.Errno = 0xC0380034\n\tERROR_VOLMGR_PACK_WITHOUT_QUORUM                                          syscall.Errno = 0xC0380035\n\tERROR_VOLMGR_PARTITION_STYLE_INVALID                                      syscall.Errno = 0xC0380036\n\tERROR_VOLMGR_PARTITION_UPDATE_FAILED                                      syscall.Errno = 0xC0380037\n\tERROR_VOLMGR_PLEX_IN_SYNC                                                 syscall.Errno = 0xC0380038\n\tERROR_VOLMGR_PLEX_INDEX_DUPLICATE                                         syscall.Errno = 0xC0380039\n\tERROR_VOLMGR_PLEX_INDEX_INVALID                                           syscall.Errno = 0xC038003A\n\tERROR_VOLMGR_PLEX_LAST_ACTIVE                                             syscall.Errno = 0xC038003B\n\tERROR_VOLMGR_PLEX_MISSING                                                 syscall.Errno = 0xC038003C\n\tERROR_VOLMGR_PLEX_REGENERATING                                            syscall.Errno = 0xC038003D\n\tERROR_VOLMGR_PLEX_TYPE_INVALID                                            syscall.Errno = 0xC038003E\n\tERROR_VOLMGR_PLEX_NOT_RAID5                                               syscall.Errno = 0xC038003F\n\tERROR_VOLMGR_PLEX_NOT_SIMPLE                                              syscall.Errno = 0xC0380040\n\tERROR_VOLMGR_STRUCTURE_SIZE_INVALID                                       syscall.Errno = 0xC0380041\n\tERROR_VOLMGR_TOO_MANY_NOTIFICATION_REQUESTS                               syscall.Errno = 0xC0380042\n\tERROR_VOLMGR_TRANSACTION_IN_PROGRESS                                      syscall.Errno = 0xC0380043\n\tERROR_VOLMGR_UNEXPECTED_DISK_LAYOUT_CHANGE                                syscall.Errno = 0xC0380044\n\tERROR_VOLMGR_VOLUME_CONTAINS_MISSING_DISK                                 syscall.Errno = 0xC0380045\n\tERROR_VOLMGR_VOLUME_ID_INVALID                                            syscall.Errno = 0xC0380046\n\tERROR_VOLMGR_VOLUME_LENGTH_INVALID                                        syscall.Errno = 0xC0380047\n\tERROR_VOLMGR_VOLUME_LENGTH_NOT_SECTOR_SIZE_MULTIPLE                       syscall.Errno = 0xC0380048\n\tERROR_VOLMGR_VOLUME_NOT_MIRRORED                                          syscall.Errno = 0xC0380049\n\tERROR_VOLMGR_VOLUME_NOT_RETAINED                                          syscall.Errno = 0xC038004A\n\tERROR_VOLMGR_VOLUME_OFFLINE                                               syscall.Errno = 0xC038004B\n\tERROR_VOLMGR_VOLUME_RETAINED                                              syscall.Errno = 0xC038004C\n\tERROR_VOLMGR_NUMBER_OF_EXTENTS_INVALID                                    syscall.Errno = 0xC038004D\n\tERROR_VOLMGR_DIFFERENT_SECTOR_SIZE                                        syscall.Errno = 0xC038004E\n\tERROR_VOLMGR_BAD_BOOT_DISK                                                syscall.Errno = 0xC038004F\n\tERROR_VOLMGR_PACK_CONFIG_OFFLINE                                          syscall.Errno = 0xC0380050\n\tERROR_VOLMGR_PACK_CONFIG_ONLINE                                           syscall.Errno = 0xC0380051\n\tERROR_VOLMGR_NOT_PRIMARY_PACK                                             syscall.Errno = 0xC0380052\n\tERROR_VOLMGR_PACK_LOG_UPDATE_FAILED                                       syscall.Errno = 0xC0380053\n\tERROR_VOLMGR_NUMBER_OF_DISKS_IN_PLEX_INVALID                              syscall.Errno = 0xC0380054\n\tERROR_VOLMGR_NUMBER_OF_DISKS_IN_MEMBER_INVALID                            syscall.Errno = 0xC0380055\n\tERROR_VOLMGR_VOLUME_MIRRORED                                              syscall.Errno = 0xC0380056\n\tERROR_VOLMGR_PLEX_NOT_SIMPLE_SPANNED                                      syscall.Errno = 0xC0380057\n\tERROR_VOLMGR_NO_VALID_LOG_COPIES                                          syscall.Errno = 0xC0380058\n\tERROR_VOLMGR_PRIMARY_PACK_PRESENT                                         syscall.Errno = 0xC0380059\n\tERROR_VOLMGR_NUMBER_OF_DISKS_INVALID                                      syscall.Errno = 0xC038005A\n\tERROR_VOLMGR_MIRROR_NOT_SUPPORTED                                         syscall.Errno = 0xC038005B\n\tERROR_VOLMGR_RAID5_NOT_SUPPORTED                                          syscall.Errno = 0xC038005C\n\tERROR_BCD_NOT_ALL_ENTRIES_IMPORTED                                        syscall.Errno = 0x80390001\n\tERROR_BCD_TOO_MANY_ELEMENTS                                               syscall.Errno = 0xC0390002\n\tERROR_BCD_NOT_ALL_ENTRIES_SYNCHRONIZED                                    syscall.Errno = 0x80390003\n\tERROR_VHD_DRIVE_FOOTER_MISSING                                            syscall.Errno = 0xC03A0001\n\tERROR_VHD_DRIVE_FOOTER_CHECKSUM_MISMATCH                                  syscall.Errno = 0xC03A0002\n\tERROR_VHD_DRIVE_FOOTER_CORRUPT                                            syscall.Errno = 0xC03A0003\n\tERROR_VHD_FORMAT_UNKNOWN                                                  syscall.Errno = 0xC03A0004\n\tERROR_VHD_FORMAT_UNSUPPORTED_VERSION                                      syscall.Errno = 0xC03A0005\n\tERROR_VHD_SPARSE_HEADER_CHECKSUM_MISMATCH                                 syscall.Errno = 0xC03A0006\n\tERROR_VHD_SPARSE_HEADER_UNSUPPORTED_VERSION                               syscall.Errno = 0xC03A0007\n\tERROR_VHD_SPARSE_HEADER_CORRUPT                                           syscall.Errno = 0xC03A0008\n\tERROR_VHD_BLOCK_ALLOCATION_FAILURE                                        syscall.Errno = 0xC03A0009\n\tERROR_VHD_BLOCK_ALLOCATION_TABLE_CORRUPT                                  syscall.Errno = 0xC03A000A\n\tERROR_VHD_INVALID_BLOCK_SIZE                                              syscall.Errno = 0xC03A000B\n\tERROR_VHD_BITMAP_MISMATCH                                                 syscall.Errno = 0xC03A000C\n\tERROR_VHD_PARENT_VHD_NOT_FOUND                                            syscall.Errno = 0xC03A000D\n\tERROR_VHD_CHILD_PARENT_ID_MISMATCH                                        syscall.Errno = 0xC03A000E\n\tERROR_VHD_CHILD_PARENT_TIMESTAMP_MISMATCH                                 syscall.Errno = 0xC03A000F\n\tERROR_VHD_METADATA_READ_FAILURE                                           syscall.Errno = 0xC03A0010\n\tERROR_VHD_METADATA_WRITE_FAILURE                                          syscall.Errno = 0xC03A0011\n\tERROR_VHD_INVALID_SIZE                                                    syscall.Errno = 0xC03A0012\n\tERROR_VHD_INVALID_FILE_SIZE                                               syscall.Errno = 0xC03A0013\n\tERROR_VIRTDISK_PROVIDER_NOT_FOUND                                         syscall.Errno = 0xC03A0014\n\tERROR_VIRTDISK_NOT_VIRTUAL_DISK                                           syscall.Errno = 0xC03A0015\n\tERROR_VHD_PARENT_VHD_ACCESS_DENIED                                        syscall.Errno = 0xC03A0016\n\tERROR_VHD_CHILD_PARENT_SIZE_MISMATCH                                      syscall.Errno = 0xC03A0017\n\tERROR_VHD_DIFFERENCING_CHAIN_CYCLE_DETECTED                               syscall.Errno = 0xC03A0018\n\tERROR_VHD_DIFFERENCING_CHAIN_ERROR_IN_PARENT                              syscall.Errno = 0xC03A0019\n\tERROR_VIRTUAL_DISK_LIMITATION                                             syscall.Errno = 0xC03A001A\n\tERROR_VHD_INVALID_TYPE                                                    syscall.Errno = 0xC03A001B\n\tERROR_VHD_INVALID_STATE                                                   syscall.Errno = 0xC03A001C\n\tERROR_VIRTDISK_UNSUPPORTED_DISK_SECTOR_SIZE                               syscall.Errno = 0xC03A001D\n\tERROR_VIRTDISK_DISK_ALREADY_OWNED                                         syscall.Errno = 0xC03A001E\n\tERROR_VIRTDISK_DISK_ONLINE_AND_WRITABLE                                   syscall.Errno = 0xC03A001F\n\tERROR_CTLOG_TRACKING_NOT_INITIALIZED                                      syscall.Errno = 0xC03A0020\n\tERROR_CTLOG_LOGFILE_SIZE_EXCEEDED_MAXSIZE                                 syscall.Errno = 0xC03A0021\n\tERROR_CTLOG_VHD_CHANGED_OFFLINE                                           syscall.Errno = 0xC03A0022\n\tERROR_CTLOG_INVALID_TRACKING_STATE                                        syscall.Errno = 0xC03A0023\n\tERROR_CTLOG_INCONSISTENT_TRACKING_FILE                                    syscall.Errno = 0xC03A0024\n\tERROR_VHD_RESIZE_WOULD_TRUNCATE_DATA                                      syscall.Errno = 0xC03A0025\n\tERROR_VHD_COULD_NOT_COMPUTE_MINIMUM_VIRTUAL_SIZE                          syscall.Errno = 0xC03A0026\n\tERROR_VHD_ALREADY_AT_OR_BELOW_MINIMUM_VIRTUAL_SIZE                        syscall.Errno = 0xC03A0027\n\tERROR_VHD_METADATA_FULL                                                   syscall.Errno = 0xC03A0028\n\tERROR_VHD_INVALID_CHANGE_TRACKING_ID                                      syscall.Errno = 0xC03A0029\n\tERROR_VHD_CHANGE_TRACKING_DISABLED                                        syscall.Errno = 0xC03A002A\n\tERROR_VHD_MISSING_CHANGE_TRACKING_INFORMATION                             syscall.Errno = 0xC03A0030\n\tERROR_QUERY_STORAGE_ERROR                                                 syscall.Errno = 0x803A0001\n\tHCN_E_NETWORK_NOT_FOUND                                                   Handle        = 0x803B0001\n\tHCN_E_ENDPOINT_NOT_FOUND                                                  Handle        = 0x803B0002\n\tHCN_E_LAYER_NOT_FOUND                                                     Handle        = 0x803B0003\n\tHCN_E_SWITCH_NOT_FOUND                                                    Handle        = 0x803B0004\n\tHCN_E_SUBNET_NOT_FOUND                                                    Handle        = 0x803B0005\n\tHCN_E_ADAPTER_NOT_FOUND                                                   Handle        = 0x803B0006\n\tHCN_E_PORT_NOT_FOUND                                                      Handle        = 0x803B0007\n\tHCN_E_POLICY_NOT_FOUND                                                    Handle        = 0x803B0008\n\tHCN_E_VFP_PORTSETTING_NOT_FOUND                                           Handle        = 0x803B0009\n\tHCN_E_INVALID_NETWORK                                                     Handle        = 0x803B000A\n\tHCN_E_INVALID_NETWORK_TYPE                                                Handle        = 0x803B000B\n\tHCN_E_INVALID_ENDPOINT                                                    Handle        = 0x803B000C\n\tHCN_E_INVALID_POLICY                                                      Handle        = 0x803B000D\n\tHCN_E_INVALID_POLICY_TYPE                                                 Handle        = 0x803B000E\n\tHCN_E_INVALID_REMOTE_ENDPOINT_OPERATION                                   Handle        = 0x803B000F\n\tHCN_E_NETWORK_ALREADY_EXISTS                                              Handle        = 0x803B0010\n\tHCN_E_LAYER_ALREADY_EXISTS                                                Handle        = 0x803B0011\n\tHCN_E_POLICY_ALREADY_EXISTS                                               Handle        = 0x803B0012\n\tHCN_E_PORT_ALREADY_EXISTS                                                 Handle        = 0x803B0013\n\tHCN_E_ENDPOINT_ALREADY_ATTACHED                                           Handle        = 0x803B0014\n\tHCN_E_REQUEST_UNSUPPORTED                                                 Handle        = 0x803B0015\n\tHCN_E_MAPPING_NOT_SUPPORTED                                               Handle        = 0x803B0016\n\tHCN_E_DEGRADED_OPERATION                                                  Handle        = 0x803B0017\n\tHCN_E_SHARED_SWITCH_MODIFICATION                                          Handle        = 0x803B0018\n\tHCN_E_GUID_CONVERSION_FAILURE                                             Handle        = 0x803B0019\n\tHCN_E_REGKEY_FAILURE                                                      Handle        = 0x803B001A\n\tHCN_E_INVALID_JSON                                                        Handle        = 0x803B001B\n\tHCN_E_INVALID_JSON_REFERENCE                                              Handle        = 0x803B001C\n\tHCN_E_ENDPOINT_SHARING_DISABLED                                           Handle        = 0x803B001D\n\tHCN_E_INVALID_IP                                                          Handle        = 0x803B001E\n\tHCN_E_SWITCH_EXTENSION_NOT_FOUND                                          Handle        = 0x803B001F\n\tHCN_E_MANAGER_STOPPED                                                     Handle        = 0x803B0020\n\tGCN_E_MODULE_NOT_FOUND                                                    Handle        = 0x803B0021\n\tGCN_E_NO_REQUEST_HANDLERS                                                 Handle        = 0x803B0022\n\tGCN_E_REQUEST_UNSUPPORTED                                                 Handle        = 0x803B0023\n\tGCN_E_RUNTIMEKEYS_FAILED                                                  Handle        = 0x803B0024\n\tGCN_E_NETADAPTER_TIMEOUT                                                  Handle        = 0x803B0025\n\tGCN_E_NETADAPTER_NOT_FOUND                                                Handle        = 0x803B0026\n\tGCN_E_NETCOMPARTMENT_NOT_FOUND                                            Handle        = 0x803B0027\n\tGCN_E_NETINTERFACE_NOT_FOUND                                              Handle        = 0x803B0028\n\tGCN_E_DEFAULTNAMESPACE_EXISTS                                             Handle        = 0x803B0029\n\tHCN_E_ICS_DISABLED                                                        Handle        = 0x803B002A\n\tHCN_E_ENDPOINT_NAMESPACE_ALREADY_EXISTS                                   Handle        = 0x803B002B\n\tHCN_E_ENTITY_HAS_REFERENCES                                               Handle        = 0x803B002C\n\tHCN_E_INVALID_INTERNAL_PORT                                               Handle        = 0x803B002D\n\tHCN_E_NAMESPACE_ATTACH_FAILED                                             Handle        = 0x803B002E\n\tHCN_E_ADDR_INVALID_OR_RESERVED                                            Handle        = 0x803B002F\n\tSDIAG_E_CANCELLED                                                         syscall.Errno = 0x803C0100\n\tSDIAG_E_SCRIPT                                                            syscall.Errno = 0x803C0101\n\tSDIAG_E_POWERSHELL                                                        syscall.Errno = 0x803C0102\n\tSDIAG_E_MANAGEDHOST                                                       syscall.Errno = 0x803C0103\n\tSDIAG_E_NOVERIFIER                                                        syscall.Errno = 0x803C0104\n\tSDIAG_S_CANNOTRUN                                                         syscall.Errno = 0x003C0105\n\tSDIAG_E_DISABLED                                                          syscall.Errno = 0x803C0106\n\tSDIAG_E_TRUST                                                             syscall.Errno = 0x803C0107\n\tSDIAG_E_CANNOTRUN                                                         syscall.Errno = 0x803C0108\n\tSDIAG_E_VERSION                                                           syscall.Errno = 0x803C0109\n\tSDIAG_E_RESOURCE                                                          syscall.Errno = 0x803C010A\n\tSDIAG_E_ROOTCAUSE                                                         syscall.Errno = 0x803C010B\n\tWPN_E_CHANNEL_CLOSED                                                      Handle        = 0x803E0100\n\tWPN_E_CHANNEL_REQUEST_NOT_COMPLETE                                        Handle        = 0x803E0101\n\tWPN_E_INVALID_APP                                                         Handle        = 0x803E0102\n\tWPN_E_OUTSTANDING_CHANNEL_REQUEST                                         Handle        = 0x803E0103\n\tWPN_E_DUPLICATE_CHANNEL                                                   Handle        = 0x803E0104\n\tWPN_E_PLATFORM_UNAVAILABLE                                                Handle        = 0x803E0105\n\tWPN_E_NOTIFICATION_POSTED                                                 Handle        = 0x803E0106\n\tWPN_E_NOTIFICATION_HIDDEN                                                 Handle        = 0x803E0107\n\tWPN_E_NOTIFICATION_NOT_POSTED                                             Handle        = 0x803E0108\n\tWPN_E_CLOUD_DISABLED                                                      Handle        = 0x803E0109\n\tWPN_E_CLOUD_INCAPABLE                                                     Handle        = 0x803E0110\n\tWPN_E_CLOUD_AUTH_UNAVAILABLE                                              Handle        = 0x803E011A\n\tWPN_E_CLOUD_SERVICE_UNAVAILABLE                                           Handle        = 0x803E011B\n\tWPN_E_FAILED_LOCK_SCREEN_UPDATE_INTIALIZATION                             Handle        = 0x803E011C\n\tWPN_E_NOTIFICATION_DISABLED                                               Handle        = 0x803E0111\n\tWPN_E_NOTIFICATION_INCAPABLE                                              Handle        = 0x803E0112\n\tWPN_E_INTERNET_INCAPABLE                                                  Handle        = 0x803E0113\n\tWPN_E_NOTIFICATION_TYPE_DISABLED                                          Handle        = 0x803E0114\n\tWPN_E_NOTIFICATION_SIZE                                                   Handle        = 0x803E0115\n\tWPN_E_TAG_SIZE                                                            Handle        = 0x803E0116\n\tWPN_E_ACCESS_DENIED                                                       Handle        = 0x803E0117\n\tWPN_E_DUPLICATE_REGISTRATION                                              Handle        = 0x803E0118\n\tWPN_E_PUSH_NOTIFICATION_INCAPABLE                                         Handle        = 0x803E0119\n\tWPN_E_DEV_ID_SIZE                                                         Handle        = 0x803E0120\n\tWPN_E_TAG_ALPHANUMERIC                                                    Handle        = 0x803E012A\n\tWPN_E_INVALID_HTTP_STATUS_CODE                                            Handle        = 0x803E012B\n\tWPN_E_OUT_OF_SESSION                                                      Handle        = 0x803E0200\n\tWPN_E_POWER_SAVE                                                          Handle        = 0x803E0201\n\tWPN_E_IMAGE_NOT_FOUND_IN_CACHE                                            Handle        = 0x803E0202\n\tWPN_E_ALL_URL_NOT_COMPLETED                                               Handle        = 0x803E0203\n\tWPN_E_INVALID_CLOUD_IMAGE                                                 Handle        = 0x803E0204\n\tWPN_E_NOTIFICATION_ID_MATCHED                                             Handle        = 0x803E0205\n\tWPN_E_CALLBACK_ALREADY_REGISTERED                                         Handle        = 0x803E0206\n\tWPN_E_TOAST_NOTIFICATION_DROPPED                                          Handle        = 0x803E0207\n\tWPN_E_STORAGE_LOCKED                                                      Handle        = 0x803E0208\n\tWPN_E_GROUP_SIZE                                                          Handle        = 0x803E0209\n\tWPN_E_GROUP_ALPHANUMERIC                                                  Handle        = 0x803E020A\n\tWPN_E_CLOUD_DISABLED_FOR_APP                                              Handle        = 0x803E020B\n\tE_MBN_CONTEXT_NOT_ACTIVATED                                               Handle        = 0x80548201\n\tE_MBN_BAD_SIM                                                             Handle        = 0x80548202\n\tE_MBN_DATA_CLASS_NOT_AVAILABLE                                            Handle        = 0x80548203\n\tE_MBN_INVALID_ACCESS_STRING                                               Handle        = 0x80548204\n\tE_MBN_MAX_ACTIVATED_CONTEXTS                                              Handle        = 0x80548205\n\tE_MBN_PACKET_SVC_DETACHED                                                 Handle        = 0x80548206\n\tE_MBN_PROVIDER_NOT_VISIBLE                                                Handle        = 0x80548207\n\tE_MBN_RADIO_POWER_OFF                                                     Handle        = 0x80548208\n\tE_MBN_SERVICE_NOT_ACTIVATED                                               Handle        = 0x80548209\n\tE_MBN_SIM_NOT_INSERTED                                                    Handle        = 0x8054820A\n\tE_MBN_VOICE_CALL_IN_PROGRESS                                              Handle        = 0x8054820B\n\tE_MBN_INVALID_CACHE                                                       Handle        = 0x8054820C\n\tE_MBN_NOT_REGISTERED                                                      Handle        = 0x8054820D\n\tE_MBN_PROVIDERS_NOT_FOUND                                                 Handle        = 0x8054820E\n\tE_MBN_PIN_NOT_SUPPORTED                                                   Handle        = 0x8054820F\n\tE_MBN_PIN_REQUIRED                                                        Handle        = 0x80548210\n\tE_MBN_PIN_DISABLED                                                        Handle        = 0x80548211\n\tE_MBN_FAILURE                                                             Handle        = 0x80548212\n\tE_MBN_INVALID_PROFILE                                                     Handle        = 0x80548218\n\tE_MBN_DEFAULT_PROFILE_EXIST                                               Handle        = 0x80548219\n\tE_MBN_SMS_ENCODING_NOT_SUPPORTED                                          Handle        = 0x80548220\n\tE_MBN_SMS_FILTER_NOT_SUPPORTED                                            Handle        = 0x80548221\n\tE_MBN_SMS_INVALID_MEMORY_INDEX                                            Handle        = 0x80548222\n\tE_MBN_SMS_LANG_NOT_SUPPORTED                                              Handle        = 0x80548223\n\tE_MBN_SMS_MEMORY_FAILURE                                                  Handle        = 0x80548224\n\tE_MBN_SMS_NETWORK_TIMEOUT                                                 Handle        = 0x80548225\n\tE_MBN_SMS_UNKNOWN_SMSC_ADDRESS                                            Handle        = 0x80548226\n\tE_MBN_SMS_FORMAT_NOT_SUPPORTED                                            Handle        = 0x80548227\n\tE_MBN_SMS_OPERATION_NOT_ALLOWED                                           Handle        = 0x80548228\n\tE_MBN_SMS_MEMORY_FULL                                                     Handle        = 0x80548229\n\tPEER_E_IPV6_NOT_INSTALLED                                                 Handle        = 0x80630001\n\tPEER_E_NOT_INITIALIZED                                                    Handle        = 0x80630002\n\tPEER_E_CANNOT_START_SERVICE                                               Handle        = 0x80630003\n\tPEER_E_NOT_LICENSED                                                       Handle        = 0x80630004\n\tPEER_E_INVALID_GRAPH                                                      Handle        = 0x80630010\n\tPEER_E_DBNAME_CHANGED                                                     Handle        = 0x80630011\n\tPEER_E_DUPLICATE_GRAPH                                                    Handle        = 0x80630012\n\tPEER_E_GRAPH_NOT_READY                                                    Handle        = 0x80630013\n\tPEER_E_GRAPH_SHUTTING_DOWN                                                Handle        = 0x80630014\n\tPEER_E_GRAPH_IN_USE                                                       Handle        = 0x80630015\n\tPEER_E_INVALID_DATABASE                                                   Handle        = 0x80630016\n\tPEER_E_TOO_MANY_ATTRIBUTES                                                Handle        = 0x80630017\n\tPEER_E_CONNECTION_NOT_FOUND                                               Handle        = 0x80630103\n\tPEER_E_CONNECT_SELF                                                       Handle        = 0x80630106\n\tPEER_E_ALREADY_LISTENING                                                  Handle        = 0x80630107\n\tPEER_E_NODE_NOT_FOUND                                                     Handle        = 0x80630108\n\tPEER_E_CONNECTION_FAILED                                                  Handle        = 0x80630109\n\tPEER_E_CONNECTION_NOT_AUTHENTICATED                                       Handle        = 0x8063010A\n\tPEER_E_CONNECTION_REFUSED                                                 Handle        = 0x8063010B\n\tPEER_E_CLASSIFIER_TOO_LONG                                                Handle        = 0x80630201\n\tPEER_E_TOO_MANY_IDENTITIES                                                Handle        = 0x80630202\n\tPEER_E_NO_KEY_ACCESS                                                      Handle        = 0x80630203\n\tPEER_E_GROUPS_EXIST                                                       Handle        = 0x80630204\n\tPEER_E_RECORD_NOT_FOUND                                                   Handle        = 0x80630301\n\tPEER_E_DATABASE_ACCESSDENIED                                              Handle        = 0x80630302\n\tPEER_E_DBINITIALIZATION_FAILED                                            Handle        = 0x80630303\n\tPEER_E_MAX_RECORD_SIZE_EXCEEDED                                           Handle        = 0x80630304\n\tPEER_E_DATABASE_ALREADY_PRESENT                                           Handle        = 0x80630305\n\tPEER_E_DATABASE_NOT_PRESENT                                               Handle        = 0x80630306\n\tPEER_E_IDENTITY_NOT_FOUND                                                 Handle        = 0x80630401\n\tPEER_E_EVENT_HANDLE_NOT_FOUND                                             Handle        = 0x80630501\n\tPEER_E_INVALID_SEARCH                                                     Handle        = 0x80630601\n\tPEER_E_INVALID_ATTRIBUTES                                                 Handle        = 0x80630602\n\tPEER_E_INVITATION_NOT_TRUSTED                                             Handle        = 0x80630701\n\tPEER_E_CHAIN_TOO_LONG                                                     Handle        = 0x80630703\n\tPEER_E_INVALID_TIME_PERIOD                                                Handle        = 0x80630705\n\tPEER_E_CIRCULAR_CHAIN_DETECTED                                            Handle        = 0x80630706\n\tPEER_E_CERT_STORE_CORRUPTED                                               Handle        = 0x80630801\n\tPEER_E_NO_CLOUD                                                           Handle        = 0x80631001\n\tPEER_E_CLOUD_NAME_AMBIGUOUS                                               Handle        = 0x80631005\n\tPEER_E_INVALID_RECORD                                                     Handle        = 0x80632010\n\tPEER_E_NOT_AUTHORIZED                                                     Handle        = 0x80632020\n\tPEER_E_PASSWORD_DOES_NOT_MEET_POLICY                                      Handle        = 0x80632021\n\tPEER_E_DEFERRED_VALIDATION                                                Handle        = 0x80632030\n\tPEER_E_INVALID_GROUP_PROPERTIES                                           Handle        = 0x80632040\n\tPEER_E_INVALID_PEER_NAME                                                  Handle        = 0x80632050\n\tPEER_E_INVALID_CLASSIFIER                                                 Handle        = 0x80632060\n\tPEER_E_INVALID_FRIENDLY_NAME                                              Handle        = 0x80632070\n\tPEER_E_INVALID_ROLE_PROPERTY                                              Handle        = 0x80632071\n\tPEER_E_INVALID_CLASSIFIER_PROPERTY                                        Handle        = 0x80632072\n\tPEER_E_INVALID_RECORD_EXPIRATION                                          Handle        = 0x80632080\n\tPEER_E_INVALID_CREDENTIAL_INFO                                            Handle        = 0x80632081\n\tPEER_E_INVALID_CREDENTIAL                                                 Handle        = 0x80632082\n\tPEER_E_INVALID_RECORD_SIZE                                                Handle        = 0x80632083\n\tPEER_E_UNSUPPORTED_VERSION                                                Handle        = 0x80632090\n\tPEER_E_GROUP_NOT_READY                                                    Handle        = 0x80632091\n\tPEER_E_GROUP_IN_USE                                                       Handle        = 0x80632092\n\tPEER_E_INVALID_GROUP                                                      Handle        = 0x80632093\n\tPEER_E_NO_MEMBERS_FOUND                                                   Handle        = 0x80632094\n\tPEER_E_NO_MEMBER_CONNECTIONS                                              Handle        = 0x80632095\n\tPEER_E_UNABLE_TO_LISTEN                                                   Handle        = 0x80632096\n\tPEER_E_IDENTITY_DELETED                                                   Handle        = 0x806320A0\n\tPEER_E_SERVICE_NOT_AVAILABLE                                              Handle        = 0x806320A1\n\tPEER_E_CONTACT_NOT_FOUND                                                  Handle        = 0x80636001\n\tPEER_S_GRAPH_DATA_CREATED                                                 Handle        = 0x00630001\n\tPEER_S_NO_EVENT_DATA                                                      Handle        = 0x00630002\n\tPEER_S_ALREADY_CONNECTED                                                  Handle        = 0x00632000\n\tPEER_S_SUBSCRIPTION_EXISTS                                                Handle        = 0x00636000\n\tPEER_S_NO_CONNECTIVITY                                                    Handle        = 0x00630005\n\tPEER_S_ALREADY_A_MEMBER                                                   Handle        = 0x00630006\n\tPEER_E_CANNOT_CONVERT_PEER_NAME                                           Handle        = 0x80634001\n\tPEER_E_INVALID_PEER_HOST_NAME                                             Handle        = 0x80634002\n\tPEER_E_NO_MORE                                                            Handle        = 0x80634003\n\tPEER_E_PNRP_DUPLICATE_PEER_NAME                                           Handle        = 0x80634005\n\tPEER_E_INVITE_CANCELLED                                                   Handle        = 0x80637000\n\tPEER_E_INVITE_RESPONSE_NOT_AVAILABLE                                      Handle        = 0x80637001\n\tPEER_E_NOT_SIGNED_IN                                                      Handle        = 0x80637003\n\tPEER_E_PRIVACY_DECLINED                                                   Handle        = 0x80637004\n\tPEER_E_TIMEOUT                                                            Handle        = 0x80637005\n\tPEER_E_INVALID_ADDRESS                                                    Handle        = 0x80637007\n\tPEER_E_FW_EXCEPTION_DISABLED                                              Handle        = 0x80637008\n\tPEER_E_FW_BLOCKED_BY_POLICY                                               Handle        = 0x80637009\n\tPEER_E_FW_BLOCKED_BY_SHIELDS_UP                                           Handle        = 0x8063700A\n\tPEER_E_FW_DECLINED                                                        Handle        = 0x8063700B\n\tUI_E_CREATE_FAILED                                                        Handle        = 0x802A0001\n\tUI_E_SHUTDOWN_CALLED                                                      Handle        = 0x802A0002\n\tUI_E_ILLEGAL_REENTRANCY                                                   Handle        = 0x802A0003\n\tUI_E_OBJECT_SEALED                                                        Handle        = 0x802A0004\n\tUI_E_VALUE_NOT_SET                                                        Handle        = 0x802A0005\n\tUI_E_VALUE_NOT_DETERMINED                                                 Handle        = 0x802A0006\n\tUI_E_INVALID_OUTPUT                                                       Handle        = 0x802A0007\n\tUI_E_BOOLEAN_EXPECTED                                                     Handle        = 0x802A0008\n\tUI_E_DIFFERENT_OWNER                                                      Handle        = 0x802A0009\n\tUI_E_AMBIGUOUS_MATCH                                                      Handle        = 0x802A000A\n\tUI_E_FP_OVERFLOW                                                          Handle        = 0x802A000B\n\tUI_E_WRONG_THREAD                                                         Handle        = 0x802A000C\n\tUI_E_STORYBOARD_ACTIVE                                                    Handle        = 0x802A0101\n\tUI_E_STORYBOARD_NOT_PLAYING                                               Handle        = 0x802A0102\n\tUI_E_START_KEYFRAME_AFTER_END                                             Handle        = 0x802A0103\n\tUI_E_END_KEYFRAME_NOT_DETERMINED                                          Handle        = 0x802A0104\n\tUI_E_LOOPS_OVERLAP                                                        Handle        = 0x802A0105\n\tUI_E_TRANSITION_ALREADY_USED                                              Handle        = 0x802A0106\n\tUI_E_TRANSITION_NOT_IN_STORYBOARD                                         Handle        = 0x802A0107\n\tUI_E_TRANSITION_ECLIPSED                                                  Handle        = 0x802A0108\n\tUI_E_TIME_BEFORE_LAST_UPDATE                                              Handle        = 0x802A0109\n\tUI_E_TIMER_CLIENT_ALREADY_CONNECTED                                       Handle        = 0x802A010A\n\tUI_E_INVALID_DIMENSION                                                    Handle        = 0x802A010B\n\tUI_E_PRIMITIVE_OUT_OF_BOUNDS                                              Handle        = 0x802A010C\n\tUI_E_WINDOW_CLOSED                                                        Handle        = 0x802A0201\n\tE_BLUETOOTH_ATT_INVALID_HANDLE                                            Handle        = 0x80650001\n\tE_BLUETOOTH_ATT_READ_NOT_PERMITTED                                        Handle        = 0x80650002\n\tE_BLUETOOTH_ATT_WRITE_NOT_PERMITTED                                       Handle        = 0x80650003\n\tE_BLUETOOTH_ATT_INVALID_PDU                                               Handle        = 0x80650004\n\tE_BLUETOOTH_ATT_INSUFFICIENT_AUTHENTICATION                               Handle        = 0x80650005\n\tE_BLUETOOTH_ATT_REQUEST_NOT_SUPPORTED                                     Handle        = 0x80650006\n\tE_BLUETOOTH_ATT_INVALID_OFFSET                                            Handle        = 0x80650007\n\tE_BLUETOOTH_ATT_INSUFFICIENT_AUTHORIZATION                                Handle        = 0x80650008\n\tE_BLUETOOTH_ATT_PREPARE_QUEUE_FULL                                        Handle        = 0x80650009\n\tE_BLUETOOTH_ATT_ATTRIBUTE_NOT_FOUND                                       Handle        = 0x8065000A\n\tE_BLUETOOTH_ATT_ATTRIBUTE_NOT_LONG                                        Handle        = 0x8065000B\n\tE_BLUETOOTH_ATT_INSUFFICIENT_ENCRYPTION_KEY_SIZE                          Handle        = 0x8065000C\n\tE_BLUETOOTH_ATT_INVALID_ATTRIBUTE_VALUE_LENGTH                            Handle        = 0x8065000D\n\tE_BLUETOOTH_ATT_UNLIKELY                                                  Handle        = 0x8065000E\n\tE_BLUETOOTH_ATT_INSUFFICIENT_ENCRYPTION                                   Handle        = 0x8065000F\n\tE_BLUETOOTH_ATT_UNSUPPORTED_GROUP_TYPE                                    Handle        = 0x80650010\n\tE_BLUETOOTH_ATT_INSUFFICIENT_RESOURCES                                    Handle        = 0x80650011\n\tE_BLUETOOTH_ATT_UNKNOWN_ERROR                                             Handle        = 0x80651000\n\tE_AUDIO_ENGINE_NODE_NOT_FOUND                                             Handle        = 0x80660001\n\tE_HDAUDIO_EMPTY_CONNECTION_LIST                                           Handle        = 0x80660002\n\tE_HDAUDIO_CONNECTION_LIST_NOT_SUPPORTED                                   Handle        = 0x80660003\n\tE_HDAUDIO_NO_LOGICAL_DEVICES_CREATED                                      Handle        = 0x80660004\n\tE_HDAUDIO_NULL_LINKED_LIST_ENTRY                                          Handle        = 0x80660005\n\tSTATEREPOSITORY_E_CONCURRENCY_LOCKING_FAILURE                             Handle        = 0x80670001\n\tSTATEREPOSITORY_E_STATEMENT_INPROGRESS                                    Handle        = 0x80670002\n\tSTATEREPOSITORY_E_CONFIGURATION_INVALID                                   Handle        = 0x80670003\n\tSTATEREPOSITORY_E_UNKNOWN_SCHEMA_VERSION                                  Handle        = 0x80670004\n\tSTATEREPOSITORY_ERROR_DICTIONARY_CORRUPTED                                Handle        = 0x80670005\n\tSTATEREPOSITORY_E_BLOCKED                                                 Handle        = 0x80670006\n\tSTATEREPOSITORY_E_BUSY_RETRY                                              Handle        = 0x80670007\n\tSTATEREPOSITORY_E_BUSY_RECOVERY_RETRY                                     Handle        = 0x80670008\n\tSTATEREPOSITORY_E_LOCKED_RETRY                                            Handle        = 0x80670009\n\tSTATEREPOSITORY_E_LOCKED_SHAREDCACHE_RETRY                                Handle        = 0x8067000A\n\tSTATEREPOSITORY_E_TRANSACTION_REQUIRED                                    Handle        = 0x8067000B\n\tSTATEREPOSITORY_E_BUSY_TIMEOUT_EXCEEDED                                   Handle        = 0x8067000C\n\tSTATEREPOSITORY_E_BUSY_RECOVERY_TIMEOUT_EXCEEDED                          Handle        = 0x8067000D\n\tSTATEREPOSITORY_E_LOCKED_TIMEOUT_EXCEEDED                                 Handle        = 0x8067000E\n\tSTATEREPOSITORY_E_LOCKED_SHAREDCACHE_TIMEOUT_EXCEEDED                     Handle        = 0x8067000F\n\tSTATEREPOSITORY_E_SERVICE_STOP_IN_PROGRESS                                Handle        = 0x80670010\n\tSTATEREPOSTORY_E_NESTED_TRANSACTION_NOT_SUPPORTED                         Handle        = 0x80670011\n\tSTATEREPOSITORY_ERROR_CACHE_CORRUPTED                                     Handle        = 0x80670012\n\tSTATEREPOSITORY_TRANSACTION_CALLER_ID_CHANGED                             Handle        = 0x00670013\n\tSTATEREPOSITORY_TRANSACTION_IN_PROGRESS                                   Handle        = 0x00670014\n\tERROR_SPACES_POOL_WAS_DELETED                                             Handle        = 0x00E70001\n\tERROR_SPACES_FAULT_DOMAIN_TYPE_INVALID                                    Handle        = 0x80E70001\n\tERROR_SPACES_INTERNAL_ERROR                                               Handle        = 0x80E70002\n\tERROR_SPACES_RESILIENCY_TYPE_INVALID                                      Handle        = 0x80E70003\n\tERROR_SPACES_DRIVE_SECTOR_SIZE_INVALID                                    Handle        = 0x80E70004\n\tERROR_SPACES_DRIVE_REDUNDANCY_INVALID                                     Handle        = 0x80E70006\n\tERROR_SPACES_NUMBER_OF_DATA_COPIES_INVALID                                Handle        = 0x80E70007\n\tERROR_SPACES_PARITY_LAYOUT_INVALID                                        Handle        = 0x80E70008\n\tERROR_SPACES_INTERLEAVE_LENGTH_INVALID                                    Handle        = 0x80E70009\n\tERROR_SPACES_NUMBER_OF_COLUMNS_INVALID                                    Handle        = 0x80E7000A\n\tERROR_SPACES_NOT_ENOUGH_DRIVES                                            Handle        = 0x80E7000B\n\tERROR_SPACES_EXTENDED_ERROR                                               Handle        = 0x80E7000C\n\tERROR_SPACES_PROVISIONING_TYPE_INVALID                                    Handle        = 0x80E7000D\n\tERROR_SPACES_ALLOCATION_SIZE_INVALID                                      Handle        = 0x80E7000E\n\tERROR_SPACES_ENCLOSURE_AWARE_INVALID                                      Handle        = 0x80E7000F\n\tERROR_SPACES_WRITE_CACHE_SIZE_INVALID                                     Handle        = 0x80E70010\n\tERROR_SPACES_NUMBER_OF_GROUPS_INVALID                                     Handle        = 0x80E70011\n\tERROR_SPACES_DRIVE_OPERATIONAL_STATE_INVALID                              Handle        = 0x80E70012\n\tERROR_SPACES_ENTRY_INCOMPLETE                                             Handle        = 0x80E70013\n\tERROR_SPACES_ENTRY_INVALID                                                Handle        = 0x80E70014\n\tERROR_VOLSNAP_BOOTFILE_NOT_VALID                                          Handle        = 0x80820001\n\tERROR_VOLSNAP_ACTIVATION_TIMEOUT                                          Handle        = 0x80820002\n\tERROR_TIERING_NOT_SUPPORTED_ON_VOLUME                                     Handle        = 0x80830001\n\tERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS                                 Handle        = 0x80830002\n\tERROR_TIERING_STORAGE_TIER_NOT_FOUND                                      Handle        = 0x80830003\n\tERROR_TIERING_INVALID_FILE_ID                                             Handle        = 0x80830004\n\tERROR_TIERING_WRONG_CLUSTER_NODE                                          Handle        = 0x80830005\n\tERROR_TIERING_ALREADY_PROCESSING                                          Handle        = 0x80830006\n\tERROR_TIERING_CANNOT_PIN_OBJECT                                           Handle        = 0x80830007\n\tERROR_TIERING_FILE_IS_NOT_PINNED                                          Handle        = 0x80830008\n\tERROR_NOT_A_TIERED_VOLUME                                                 Handle        = 0x80830009\n\tERROR_ATTRIBUTE_NOT_PRESENT                                               Handle        = 0x8083000A\n\tERROR_SECCORE_INVALID_COMMAND                                             Handle        = 0xC0E80000\n\tERROR_NO_APPLICABLE_APP_LICENSES_FOUND                                    Handle        = 0xC0EA0001\n\tERROR_CLIP_LICENSE_NOT_FOUND                                              Handle        = 0xC0EA0002\n\tERROR_CLIP_DEVICE_LICENSE_MISSING                                         Handle        = 0xC0EA0003\n\tERROR_CLIP_LICENSE_INVALID_SIGNATURE                                      Handle        = 0xC0EA0004\n\tERROR_CLIP_KEYHOLDER_LICENSE_MISSING_OR_INVALID                           Handle        = 0xC0EA0005\n\tERROR_CLIP_LICENSE_EXPIRED                                                Handle        = 0xC0EA0006\n\tERROR_CLIP_LICENSE_SIGNED_BY_UNKNOWN_SOURCE                               Handle        = 0xC0EA0007\n\tERROR_CLIP_LICENSE_NOT_SIGNED                                             Handle        = 0xC0EA0008\n\tERROR_CLIP_LICENSE_HARDWARE_ID_OUT_OF_TOLERANCE                           Handle        = 0xC0EA0009\n\tERROR_CLIP_LICENSE_DEVICE_ID_MISMATCH                                     Handle        = 0xC0EA000A\n\tDXGI_STATUS_OCCLUDED                                                      Handle        = 0x087A0001\n\tDXGI_STATUS_CLIPPED                                                       Handle        = 0x087A0002\n\tDXGI_STATUS_NO_REDIRECTION                                                Handle        = 0x087A0004\n\tDXGI_STATUS_NO_DESKTOP_ACCESS                                             Handle        = 0x087A0005\n\tDXGI_STATUS_GRAPHICS_VIDPN_SOURCE_IN_USE                                  Handle        = 0x087A0006\n\tDXGI_STATUS_MODE_CHANGED                                                  Handle        = 0x087A0007\n\tDXGI_STATUS_MODE_CHANGE_IN_PROGRESS                                       Handle        = 0x087A0008\n\tDXGI_ERROR_INVALID_CALL                                                   Handle        = 0x887A0001\n\tDXGI_ERROR_NOT_FOUND                                                      Handle        = 0x887A0002\n\tDXGI_ERROR_MORE_DATA                                                      Handle        = 0x887A0003\n\tDXGI_ERROR_UNSUPPORTED                                                    Handle        = 0x887A0004\n\tDXGI_ERROR_DEVICE_REMOVED                                                 Handle        = 0x887A0005\n\tDXGI_ERROR_DEVICE_HUNG                                                    Handle        = 0x887A0006\n\tDXGI_ERROR_DEVICE_RESET                                                   Handle        = 0x887A0007\n\tDXGI_ERROR_WAS_STILL_DRAWING                                              Handle        = 0x887A000A\n\tDXGI_ERROR_FRAME_STATISTICS_DISJOINT                                      Handle        = 0x887A000B\n\tDXGI_ERROR_GRAPHICS_VIDPN_SOURCE_IN_USE                                   Handle        = 0x887A000C\n\tDXGI_ERROR_DRIVER_INTERNAL_ERROR                                          Handle        = 0x887A0020\n\tDXGI_ERROR_NONEXCLUSIVE                                                   Handle        = 0x887A0021\n\tDXGI_ERROR_NOT_CURRENTLY_AVAILABLE                                        Handle        = 0x887A0022\n\tDXGI_ERROR_REMOTE_CLIENT_DISCONNECTED                                     Handle        = 0x887A0023\n\tDXGI_ERROR_REMOTE_OUTOFMEMORY                                             Handle        = 0x887A0024\n\tDXGI_ERROR_ACCESS_LOST                                                    Handle        = 0x887A0026\n\tDXGI_ERROR_WAIT_TIMEOUT                                                   Handle        = 0x887A0027\n\tDXGI_ERROR_SESSION_DISCONNECTED                                           Handle        = 0x887A0028\n\tDXGI_ERROR_RESTRICT_TO_OUTPUT_STALE                                       Handle        = 0x887A0029\n\tDXGI_ERROR_CANNOT_PROTECT_CONTENT                                         Handle        = 0x887A002A\n\tDXGI_ERROR_ACCESS_DENIED                                                  Handle        = 0x887A002B\n\tDXGI_ERROR_NAME_ALREADY_EXISTS                                            Handle        = 0x887A002C\n\tDXGI_ERROR_SDK_COMPONENT_MISSING                                          Handle        = 0x887A002D\n\tDXGI_ERROR_NOT_CURRENT                                                    Handle        = 0x887A002E\n\tDXGI_ERROR_HW_PROTECTION_OUTOFMEMORY                                      Handle        = 0x887A0030\n\tDXGI_ERROR_DYNAMIC_CODE_POLICY_VIOLATION                                  Handle        = 0x887A0031\n\tDXGI_ERROR_NON_COMPOSITED_UI                                              Handle        = 0x887A0032\n\tDXGI_STATUS_UNOCCLUDED                                                    Handle        = 0x087A0009\n\tDXGI_STATUS_DDA_WAS_STILL_DRAWING                                         Handle        = 0x087A000A\n\tDXGI_ERROR_MODE_CHANGE_IN_PROGRESS                                        Handle        = 0x887A0025\n\tDXGI_STATUS_PRESENT_REQUIRED                                              Handle        = 0x087A002F\n\tDXGI_ERROR_CACHE_CORRUPT                                                  Handle        = 0x887A0033\n\tDXGI_ERROR_CACHE_FULL                                                     Handle        = 0x887A0034\n\tDXGI_ERROR_CACHE_HASH_COLLISION                                           Handle        = 0x887A0035\n\tDXGI_ERROR_ALREADY_EXISTS                                                 Handle        = 0x887A0036\n\tDXGI_DDI_ERR_WASSTILLDRAWING                                              Handle        = 0x887B0001\n\tDXGI_DDI_ERR_UNSUPPORTED                                                  Handle        = 0x887B0002\n\tDXGI_DDI_ERR_NONEXCLUSIVE                                                 Handle        = 0x887B0003\n\tD3D10_ERROR_TOO_MANY_UNIQUE_STATE_OBJECTS                                 Handle        = 0x88790001\n\tD3D10_ERROR_FILE_NOT_FOUND                                                Handle        = 0x88790002\n\tD3D11_ERROR_TOO_MANY_UNIQUE_STATE_OBJECTS                                 Handle        = 0x887C0001\n\tD3D11_ERROR_FILE_NOT_FOUND                                                Handle        = 0x887C0002\n\tD3D11_ERROR_TOO_MANY_UNIQUE_VIEW_OBJECTS                                  Handle        = 0x887C0003\n\tD3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD                  Handle        = 0x887C0004\n\tD3D12_ERROR_ADAPTER_NOT_FOUND                                             Handle        = 0x887E0001\n\tD3D12_ERROR_DRIVER_VERSION_MISMATCH                                       Handle        = 0x887E0002\n\tD2DERR_WRONG_STATE                                                        Handle        = 0x88990001\n\tD2DERR_NOT_INITIALIZED                                                    Handle        = 0x88990002\n\tD2DERR_UNSUPPORTED_OPERATION                                              Handle        = 0x88990003\n\tD2DERR_SCANNER_FAILED                                                     Handle        = 0x88990004\n\tD2DERR_SCREEN_ACCESS_DENIED                                               Handle        = 0x88990005\n\tD2DERR_DISPLAY_STATE_INVALID                                              Handle        = 0x88990006\n\tD2DERR_ZERO_VECTOR                                                        Handle        = 0x88990007\n\tD2DERR_INTERNAL_ERROR                                                     Handle        = 0x88990008\n\tD2DERR_DISPLAY_FORMAT_NOT_SUPPORTED                                       Handle        = 0x88990009\n\tD2DERR_INVALID_CALL                                                       Handle        = 0x8899000A\n\tD2DERR_NO_HARDWARE_DEVICE                                                 Handle        = 0x8899000B\n\tD2DERR_RECREATE_TARGET                                                    Handle        = 0x8899000C\n\tD2DERR_TOO_MANY_SHADER_ELEMENTS                                           Handle        = 0x8899000D\n\tD2DERR_SHADER_COMPILE_FAILED                                              Handle        = 0x8899000E\n\tD2DERR_MAX_TEXTURE_SIZE_EXCEEDED                                          Handle        = 0x8899000F\n\tD2DERR_UNSUPPORTED_VERSION                                                Handle        = 0x88990010\n\tD2DERR_BAD_NUMBER                                                         Handle        = 0x88990011\n\tD2DERR_WRONG_FACTORY                                                      Handle        = 0x88990012\n\tD2DERR_LAYER_ALREADY_IN_USE                                               Handle        = 0x88990013\n\tD2DERR_POP_CALL_DID_NOT_MATCH_PUSH                                        Handle        = 0x88990014\n\tD2DERR_WRONG_RESOURCE_DOMAIN                                              Handle        = 0x88990015\n\tD2DERR_PUSH_POP_UNBALANCED                                                Handle        = 0x88990016\n\tD2DERR_RENDER_TARGET_HAS_LAYER_OR_CLIPRECT                                Handle        = 0x88990017\n\tD2DERR_INCOMPATIBLE_BRUSH_TYPES                                           Handle        = 0x88990018\n\tD2DERR_WIN32_ERROR                                                        Handle        = 0x88990019\n\tD2DERR_TARGET_NOT_GDI_COMPATIBLE                                          Handle        = 0x8899001A\n\tD2DERR_TEXT_EFFECT_IS_WRONG_TYPE                                          Handle        = 0x8899001B\n\tD2DERR_TEXT_RENDERER_NOT_RELEASED                                         Handle        = 0x8899001C\n\tD2DERR_EXCEEDS_MAX_BITMAP_SIZE                                            Handle        = 0x8899001D\n\tD2DERR_INVALID_GRAPH_CONFIGURATION                                        Handle        = 0x8899001E\n\tD2DERR_INVALID_INTERNAL_GRAPH_CONFIGURATION                               Handle        = 0x8899001F\n\tD2DERR_CYCLIC_GRAPH                                                       Handle        = 0x88990020\n\tD2DERR_BITMAP_CANNOT_DRAW                                                 Handle        = 0x88990021\n\tD2DERR_OUTSTANDING_BITMAP_REFERENCES                                      Handle        = 0x88990022\n\tD2DERR_ORIGINAL_TARGET_NOT_BOUND                                          Handle        = 0x88990023\n\tD2DERR_INVALID_TARGET                                                     Handle        = 0x88990024\n\tD2DERR_BITMAP_BOUND_AS_TARGET                                             Handle        = 0x88990025\n\tD2DERR_INSUFFICIENT_DEVICE_CAPABILITIES                                   Handle        = 0x88990026\n\tD2DERR_INTERMEDIATE_TOO_LARGE                                             Handle        = 0x88990027\n\tD2DERR_EFFECT_IS_NOT_REGISTERED                                           Handle        = 0x88990028\n\tD2DERR_INVALID_PROPERTY                                                   Handle        = 0x88990029\n\tD2DERR_NO_SUBPROPERTIES                                                   Handle        = 0x8899002A\n\tD2DERR_PRINT_JOB_CLOSED                                                   Handle        = 0x8899002B\n\tD2DERR_PRINT_FORMAT_NOT_SUPPORTED                                         Handle        = 0x8899002C\n\tD2DERR_TOO_MANY_TRANSFORM_INPUTS                                          Handle        = 0x8899002D\n\tD2DERR_INVALID_GLYPH_IMAGE                                                Handle        = 0x8899002E\n\tDWRITE_E_FILEFORMAT                                                       Handle        = 0x88985000\n\tDWRITE_E_UNEXPECTED                                                       Handle        = 0x88985001\n\tDWRITE_E_NOFONT                                                           Handle        = 0x88985002\n\tDWRITE_E_FILENOTFOUND                                                     Handle        = 0x88985003\n\tDWRITE_E_FILEACCESS                                                       Handle        = 0x88985004\n\tDWRITE_E_FONTCOLLECTIONOBSOLETE                                           Handle        = 0x88985005\n\tDWRITE_E_ALREADYREGISTERED                                                Handle        = 0x88985006\n\tDWRITE_E_CACHEFORMAT                                                      Handle        = 0x88985007\n\tDWRITE_E_CACHEVERSION                                                     Handle        = 0x88985008\n\tDWRITE_E_UNSUPPORTEDOPERATION                                             Handle        = 0x88985009\n\tDWRITE_E_TEXTRENDERERINCOMPATIBLE                                         Handle        = 0x8898500A\n\tDWRITE_E_FLOWDIRECTIONCONFLICTS                                           Handle        = 0x8898500B\n\tDWRITE_E_NOCOLOR                                                          Handle        = 0x8898500C\n\tDWRITE_E_REMOTEFONT                                                       Handle        = 0x8898500D\n\tDWRITE_E_DOWNLOADCANCELLED                                                Handle        = 0x8898500E\n\tDWRITE_E_DOWNLOADFAILED                                                   Handle        = 0x8898500F\n\tDWRITE_E_TOOMANYDOWNLOADS                                                 Handle        = 0x88985010\n\tWINCODEC_ERR_WRONGSTATE                                                   Handle        = 0x88982F04\n\tWINCODEC_ERR_VALUEOUTOFRANGE                                              Handle        = 0x88982F05\n\tWINCODEC_ERR_UNKNOWNIMAGEFORMAT                                           Handle        = 0x88982F07\n\tWINCODEC_ERR_UNSUPPORTEDVERSION                                           Handle        = 0x88982F0B\n\tWINCODEC_ERR_NOTINITIALIZED                                               Handle        = 0x88982F0C\n\tWINCODEC_ERR_ALREADYLOCKED                                                Handle        = 0x88982F0D\n\tWINCODEC_ERR_PROPERTYNOTFOUND                                             Handle        = 0x88982F40\n\tWINCODEC_ERR_PROPERTYNOTSUPPORTED                                         Handle        = 0x88982F41\n\tWINCODEC_ERR_PROPERTYSIZE                                                 Handle        = 0x88982F42\n\tWINCODEC_ERR_CODECPRESENT                                                 Handle        = 0x88982F43\n\tWINCODEC_ERR_CODECNOTHUMBNAIL                                             Handle        = 0x88982F44\n\tWINCODEC_ERR_PALETTEUNAVAILABLE                                           Handle        = 0x88982F45\n\tWINCODEC_ERR_CODECTOOMANYSCANLINES                                        Handle        = 0x88982F46\n\tWINCODEC_ERR_INTERNALERROR                                                Handle        = 0x88982F48\n\tWINCODEC_ERR_SOURCERECTDOESNOTMATCHDIMENSIONS                             Handle        = 0x88982F49\n\tWINCODEC_ERR_COMPONENTNOTFOUND                                            Handle        = 0x88982F50\n\tWINCODEC_ERR_IMAGESIZEOUTOFRANGE                                          Handle        = 0x88982F51\n\tWINCODEC_ERR_TOOMUCHMETADATA                                              Handle        = 0x88982F52\n\tWINCODEC_ERR_BADIMAGE                                                     Handle        = 0x88982F60\n\tWINCODEC_ERR_BADHEADER                                                    Handle        = 0x88982F61\n\tWINCODEC_ERR_FRAMEMISSING                                                 Handle        = 0x88982F62\n\tWINCODEC_ERR_BADMETADATAHEADER                                            Handle        = 0x88982F63\n\tWINCODEC_ERR_BADSTREAMDATA                                                Handle        = 0x88982F70\n\tWINCODEC_ERR_STREAMWRITE                                                  Handle        = 0x88982F71\n\tWINCODEC_ERR_STREAMREAD                                                   Handle        = 0x88982F72\n\tWINCODEC_ERR_STREAMNOTAVAILABLE                                           Handle        = 0x88982F73\n\tWINCODEC_ERR_UNSUPPORTEDPIXELFORMAT                                       Handle        = 0x88982F80\n\tWINCODEC_ERR_UNSUPPORTEDOPERATION                                         Handle        = 0x88982F81\n\tWINCODEC_ERR_INVALIDREGISTRATION                                          Handle        = 0x88982F8A\n\tWINCODEC_ERR_COMPONENTINITIALIZEFAILURE                                   Handle        = 0x88982F8B\n\tWINCODEC_ERR_INSUFFICIENTBUFFER                                           Handle        = 0x88982F8C\n\tWINCODEC_ERR_DUPLICATEMETADATAPRESENT                                     Handle        = 0x88982F8D\n\tWINCODEC_ERR_PROPERTYUNEXPECTEDTYPE                                       Handle        = 0x88982F8E\n\tWINCODEC_ERR_UNEXPECTEDSIZE                                               Handle        = 0x88982F8F\n\tWINCODEC_ERR_INVALIDQUERYREQUEST                                          Handle        = 0x88982F90\n\tWINCODEC_ERR_UNEXPECTEDMETADATATYPE                                       Handle        = 0x88982F91\n\tWINCODEC_ERR_REQUESTONLYVALIDATMETADATAROOT                               Handle        = 0x88982F92\n\tWINCODEC_ERR_INVALIDQUERYCHARACTER                                        Handle        = 0x88982F93\n\tWINCODEC_ERR_WIN32ERROR                                                   Handle        = 0x88982F94\n\tWINCODEC_ERR_INVALIDPROGRESSIVELEVEL                                      Handle        = 0x88982F95\n\tWINCODEC_ERR_INVALIDJPEGSCANINDEX                                         Handle        = 0x88982F96\n\tMILERR_OBJECTBUSY                                                         Handle        = 0x88980001\n\tMILERR_INSUFFICIENTBUFFER                                                 Handle        = 0x88980002\n\tMILERR_WIN32ERROR                                                         Handle        = 0x88980003\n\tMILERR_SCANNER_FAILED                                                     Handle        = 0x88980004\n\tMILERR_SCREENACCESSDENIED                                                 Handle        = 0x88980005\n\tMILERR_DISPLAYSTATEINVALID                                                Handle        = 0x88980006\n\tMILERR_NONINVERTIBLEMATRIX                                                Handle        = 0x88980007\n\tMILERR_ZEROVECTOR                                                         Handle        = 0x88980008\n\tMILERR_TERMINATED                                                         Handle        = 0x88980009\n\tMILERR_BADNUMBER                                                          Handle        = 0x8898000A\n\tMILERR_INTERNALERROR                                                      Handle        = 0x88980080\n\tMILERR_DISPLAYFORMATNOTSUPPORTED                                          Handle        = 0x88980084\n\tMILERR_INVALIDCALL                                                        Handle        = 0x88980085\n\tMILERR_ALREADYLOCKED                                                      Handle        = 0x88980086\n\tMILERR_NOTLOCKED                                                          Handle        = 0x88980087\n\tMILERR_DEVICECANNOTRENDERTEXT                                             Handle        = 0x88980088\n\tMILERR_GLYPHBITMAPMISSED                                                  Handle        = 0x88980089\n\tMILERR_MALFORMEDGLYPHCACHE                                                Handle        = 0x8898008A\n\tMILERR_GENERIC_IGNORE                                                     Handle        = 0x8898008B\n\tMILERR_MALFORMED_GUIDELINE_DATA                                           Handle        = 0x8898008C\n\tMILERR_NO_HARDWARE_DEVICE                                                 Handle        = 0x8898008D\n\tMILERR_NEED_RECREATE_AND_PRESENT                                          Handle        = 0x8898008E\n\tMILERR_ALREADY_INITIALIZED                                                Handle        = 0x8898008F\n\tMILERR_MISMATCHED_SIZE                                                    Handle        = 0x88980090\n\tMILERR_NO_REDIRECTION_SURFACE_AVAILABLE                                   Handle        = 0x88980091\n\tMILERR_REMOTING_NOT_SUPPORTED                                             Handle        = 0x88980092\n\tMILERR_QUEUED_PRESENT_NOT_SUPPORTED                                       Handle        = 0x88980093\n\tMILERR_NOT_QUEUING_PRESENTS                                               Handle        = 0x88980094\n\tMILERR_NO_REDIRECTION_SURFACE_RETRY_LATER                                 Handle        = 0x88980095\n\tMILERR_TOOMANYSHADERELEMNTS                                               Handle        = 0x88980096\n\tMILERR_MROW_READLOCK_FAILED                                               Handle        = 0x88980097\n\tMILERR_MROW_UPDATE_FAILED                                                 Handle        = 0x88980098\n\tMILERR_SHADER_COMPILE_FAILED                                              Handle        = 0x88980099\n\tMILERR_MAX_TEXTURE_SIZE_EXCEEDED                                          Handle        = 0x8898009A\n\tMILERR_QPC_TIME_WENT_BACKWARD                                             Handle        = 0x8898009B\n\tMILERR_DXGI_ENUMERATION_OUT_OF_SYNC                                       Handle        = 0x8898009D\n\tMILERR_ADAPTER_NOT_FOUND                                                  Handle        = 0x8898009E\n\tMILERR_COLORSPACE_NOT_SUPPORTED                                           Handle        = 0x8898009F\n\tMILERR_PREFILTER_NOT_SUPPORTED                                            Handle        = 0x889800A0\n\tMILERR_DISPLAYID_ACCESS_DENIED                                            Handle        = 0x889800A1\n\tUCEERR_INVALIDPACKETHEADER                                                Handle        = 0x88980400\n\tUCEERR_UNKNOWNPACKET                                                      Handle        = 0x88980401\n\tUCEERR_ILLEGALPACKET                                                      Handle        = 0x88980402\n\tUCEERR_MALFORMEDPACKET                                                    Handle        = 0x88980403\n\tUCEERR_ILLEGALHANDLE                                                      Handle        = 0x88980404\n\tUCEERR_HANDLELOOKUPFAILED                                                 Handle        = 0x88980405\n\tUCEERR_RENDERTHREADFAILURE                                                Handle        = 0x88980406\n\tUCEERR_CTXSTACKFRSTTARGETNULL                                             Handle        = 0x88980407\n\tUCEERR_CONNECTIONIDLOOKUPFAILED                                           Handle        = 0x88980408\n\tUCEERR_BLOCKSFULL                                                         Handle        = 0x88980409\n\tUCEERR_MEMORYFAILURE                                                      Handle        = 0x8898040A\n\tUCEERR_PACKETRECORDOUTOFRANGE                                             Handle        = 0x8898040B\n\tUCEERR_ILLEGALRECORDTYPE                                                  Handle        = 0x8898040C\n\tUCEERR_OUTOFHANDLES                                                       Handle        = 0x8898040D\n\tUCEERR_UNCHANGABLE_UPDATE_ATTEMPTED                                       Handle        = 0x8898040E\n\tUCEERR_NO_MULTIPLE_WORKER_THREADS                                         Handle        = 0x8898040F\n\tUCEERR_REMOTINGNOTSUPPORTED                                               Handle        = 0x88980410\n\tUCEERR_MISSINGENDCOMMAND                                                  Handle        = 0x88980411\n\tUCEERR_MISSINGBEGINCOMMAND                                                Handle        = 0x88980412\n\tUCEERR_CHANNELSYNCTIMEDOUT                                                Handle        = 0x88980413\n\tUCEERR_CHANNELSYNCABANDONED                                               Handle        = 0x88980414\n\tUCEERR_UNSUPPORTEDTRANSPORTVERSION                                        Handle        = 0x88980415\n\tUCEERR_TRANSPORTUNAVAILABLE                                               Handle        = 0x88980416\n\tUCEERR_FEEDBACK_UNSUPPORTED                                               Handle        = 0x88980417\n\tUCEERR_COMMANDTRANSPORTDENIED                                             Handle        = 0x88980418\n\tUCEERR_GRAPHICSSTREAMUNAVAILABLE                                          Handle        = 0x88980419\n\tUCEERR_GRAPHICSSTREAMALREADYOPEN                                          Handle        = 0x88980420\n\tUCEERR_TRANSPORTDISCONNECTED                                              Handle        = 0x88980421\n\tUCEERR_TRANSPORTOVERLOADED                                                Handle        = 0x88980422\n\tUCEERR_PARTITION_ZOMBIED                                                  Handle        = 0x88980423\n\tMILAVERR_NOCLOCK                                                          Handle        = 0x88980500\n\tMILAVERR_NOMEDIATYPE                                                      Handle        = 0x88980501\n\tMILAVERR_NOVIDEOMIXER                                                     Handle        = 0x88980502\n\tMILAVERR_NOVIDEOPRESENTER                                                 Handle        = 0x88980503\n\tMILAVERR_NOREADYFRAMES                                                    Handle        = 0x88980504\n\tMILAVERR_MODULENOTLOADED                                                  Handle        = 0x88980505\n\tMILAVERR_WMPFACTORYNOTREGISTERED                                          Handle        = 0x88980506\n\tMILAVERR_INVALIDWMPVERSION                                                Handle        = 0x88980507\n\tMILAVERR_INSUFFICIENTVIDEORESOURCES                                       Handle        = 0x88980508\n\tMILAVERR_VIDEOACCELERATIONNOTAVAILABLE                                    Handle        = 0x88980509\n\tMILAVERR_REQUESTEDTEXTURETOOBIG                                           Handle        = 0x8898050A\n\tMILAVERR_SEEKFAILED                                                       Handle        = 0x8898050B\n\tMILAVERR_UNEXPECTEDWMPFAILURE                                             Handle        = 0x8898050C\n\tMILAVERR_MEDIAPLAYERCLOSED                                                Handle        = 0x8898050D\n\tMILAVERR_UNKNOWNHARDWAREERROR                                             Handle        = 0x8898050E\n\tMILEFFECTSERR_UNKNOWNPROPERTY                                             Handle        = 0x8898060E\n\tMILEFFECTSERR_EFFECTNOTPARTOFGROUP                                        Handle        = 0x8898060F\n\tMILEFFECTSERR_NOINPUTSOURCEATTACHED                                       Handle        = 0x88980610\n\tMILEFFECTSERR_CONNECTORNOTCONNECTED                                       Handle        = 0x88980611\n\tMILEFFECTSERR_CONNECTORNOTASSOCIATEDWITHEFFECT                            Handle        = 0x88980612\n\tMILEFFECTSERR_RESERVED                                                    Handle        = 0x88980613\n\tMILEFFECTSERR_CYCLEDETECTED                                               Handle        = 0x88980614\n\tMILEFFECTSERR_EFFECTINMORETHANONEGRAPH                                    Handle        = 0x88980615\n\tMILEFFECTSERR_EFFECTALREADYINAGRAPH                                       Handle        = 0x88980616\n\tMILEFFECTSERR_EFFECTHASNOCHILDREN                                         Handle        = 0x88980617\n\tMILEFFECTSERR_ALREADYATTACHEDTOLISTENER                                   Handle        = 0x88980618\n\tMILEFFECTSERR_NOTAFFINETRANSFORM                                          Handle        = 0x88980619\n\tMILEFFECTSERR_EMPTYBOUNDS                                                 Handle        = 0x8898061A\n\tMILEFFECTSERR_OUTPUTSIZETOOLARGE                                          Handle        = 0x8898061B\n\tDWMERR_STATE_TRANSITION_FAILED                                            Handle        = 0x88980700\n\tDWMERR_THEME_FAILED                                                       Handle        = 0x88980701\n\tDWMERR_CATASTROPHIC_FAILURE                                               Handle        = 0x88980702\n\tDCOMPOSITION_ERROR_WINDOW_ALREADY_COMPOSED                                Handle        = 0x88980800\n\tDCOMPOSITION_ERROR_SURFACE_BEING_RENDERED                                 Handle        = 0x88980801\n\tDCOMPOSITION_ERROR_SURFACE_NOT_BEING_RENDERED                             Handle        = 0x88980802\n\tONL_E_INVALID_AUTHENTICATION_TARGET                                       Handle        = 0x80860001\n\tONL_E_ACCESS_DENIED_BY_TOU                                                Handle        = 0x80860002\n\tONL_E_INVALID_APPLICATION                                                 Handle        = 0x80860003\n\tONL_E_PASSWORD_UPDATE_REQUIRED                                            Handle        = 0x80860004\n\tONL_E_ACCOUNT_UPDATE_REQUIRED                                             Handle        = 0x80860005\n\tONL_E_FORCESIGNIN                                                         Handle        = 0x80860006\n\tONL_E_ACCOUNT_LOCKED                                                      Handle        = 0x80860007\n\tONL_E_PARENTAL_CONSENT_REQUIRED                                           Handle        = 0x80860008\n\tONL_E_EMAIL_VERIFICATION_REQUIRED                                         Handle        = 0x80860009\n\tONL_E_ACCOUNT_SUSPENDED_COMPROIMISE                                       Handle        = 0x8086000A\n\tONL_E_ACCOUNT_SUSPENDED_ABUSE                                             Handle        = 0x8086000B\n\tONL_E_ACTION_REQUIRED                                                     Handle        = 0x8086000C\n\tONL_CONNECTION_COUNT_LIMIT                                                Handle        = 0x8086000D\n\tONL_E_CONNECTED_ACCOUNT_CAN_NOT_SIGNOUT                                   Handle        = 0x8086000E\n\tONL_E_USER_AUTHENTICATION_REQUIRED                                        Handle        = 0x8086000F\n\tONL_E_REQUEST_THROTTLED                                                   Handle        = 0x80860010\n\tFA_E_MAX_PERSISTED_ITEMS_REACHED                                          Handle        = 0x80270220\n\tFA_E_HOMEGROUP_NOT_AVAILABLE                                              Handle        = 0x80270222\n\tE_MONITOR_RESOLUTION_TOO_LOW                                              Handle        = 0x80270250\n\tE_ELEVATED_ACTIVATION_NOT_SUPPORTED                                       Handle        = 0x80270251\n\tE_UAC_DISABLED                                                            Handle        = 0x80270252\n\tE_FULL_ADMIN_NOT_SUPPORTED                                                Handle        = 0x80270253\n\tE_APPLICATION_NOT_REGISTERED                                              Handle        = 0x80270254\n\tE_MULTIPLE_EXTENSIONS_FOR_APPLICATION                                     Handle        = 0x80270255\n\tE_MULTIPLE_PACKAGES_FOR_FAMILY                                            Handle        = 0x80270256\n\tE_APPLICATION_MANAGER_NOT_RUNNING                                         Handle        = 0x80270257\n\tS_STORE_LAUNCHED_FOR_REMEDIATION                                          Handle        = 0x00270258\n\tS_APPLICATION_ACTIVATION_ERROR_HANDLED_BY_DIALOG                          Handle        = 0x00270259\n\tE_APPLICATION_ACTIVATION_TIMED_OUT                                        Handle        = 0x8027025A\n\tE_APPLICATION_ACTIVATION_EXEC_FAILURE                                     Handle        = 0x8027025B\n\tE_APPLICATION_TEMPORARY_LICENSE_ERROR                                     Handle        = 0x8027025C\n\tE_APPLICATION_TRIAL_LICENSE_EXPIRED                                       Handle        = 0x8027025D\n\tE_SKYDRIVE_ROOT_TARGET_FILE_SYSTEM_NOT_SUPPORTED                          Handle        = 0x80270260\n\tE_SKYDRIVE_ROOT_TARGET_OVERLAP                                            Handle        = 0x80270261\n\tE_SKYDRIVE_ROOT_TARGET_CANNOT_INDEX                                       Handle        = 0x80270262\n\tE_SKYDRIVE_FILE_NOT_UPLOADED                                              Handle        = 0x80270263\n\tE_SKYDRIVE_UPDATE_AVAILABILITY_FAIL                                       Handle        = 0x80270264\n\tE_SKYDRIVE_ROOT_TARGET_VOLUME_ROOT_NOT_SUPPORTED                          Handle        = 0x80270265\n\tE_SYNCENGINE_FILE_SIZE_OVER_LIMIT                                         Handle        = 0x8802B001\n\tE_SYNCENGINE_FILE_SIZE_EXCEEDS_REMAINING_QUOTA                            Handle        = 0x8802B002\n\tE_SYNCENGINE_UNSUPPORTED_FILE_NAME                                        Handle        = 0x8802B003\n\tE_SYNCENGINE_FOLDER_ITEM_COUNT_LIMIT_EXCEEDED                             Handle        = 0x8802B004\n\tE_SYNCENGINE_FILE_SYNC_PARTNER_ERROR                                      Handle        = 0x8802B005\n\tE_SYNCENGINE_SYNC_PAUSED_BY_SERVICE                                       Handle        = 0x8802B006\n\tE_SYNCENGINE_FILE_IDENTIFIER_UNKNOWN                                      Handle        = 0x8802C002\n\tE_SYNCENGINE_SERVICE_AUTHENTICATION_FAILED                                Handle        = 0x8802C003\n\tE_SYNCENGINE_UNKNOWN_SERVICE_ERROR                                        Handle        = 0x8802C004\n\tE_SYNCENGINE_SERVICE_RETURNED_UNEXPECTED_SIZE                             Handle        = 0x8802C005\n\tE_SYNCENGINE_REQUEST_BLOCKED_BY_SERVICE                                   Handle        = 0x8802C006\n\tE_SYNCENGINE_REQUEST_BLOCKED_DUE_TO_CLIENT_ERROR                          Handle        = 0x8802C007\n\tE_SYNCENGINE_FOLDER_INACCESSIBLE                                          Handle        = 0x8802D001\n\tE_SYNCENGINE_UNSUPPORTED_FOLDER_NAME                                      Handle        = 0x8802D002\n\tE_SYNCENGINE_UNSUPPORTED_MARKET                                           Handle        = 0x8802D003\n\tE_SYNCENGINE_PATH_LENGTH_LIMIT_EXCEEDED                                   Handle        = 0x8802D004\n\tE_SYNCENGINE_REMOTE_PATH_LENGTH_LIMIT_EXCEEDED                            Handle        = 0x8802D005\n\tE_SYNCENGINE_CLIENT_UPDATE_NEEDED                                         Handle        = 0x8802D006\n\tE_SYNCENGINE_PROXY_AUTHENTICATION_REQUIRED                                Handle        = 0x8802D007\n\tE_SYNCENGINE_STORAGE_SERVICE_PROVISIONING_FAILED                          Handle        = 0x8802D008\n\tE_SYNCENGINE_UNSUPPORTED_REPARSE_POINT                                    Handle        = 0x8802D009\n\tE_SYNCENGINE_STORAGE_SERVICE_BLOCKED                                      Handle        = 0x8802D00A\n\tE_SYNCENGINE_FOLDER_IN_REDIRECTION                                        Handle        = 0x8802D00B\n\tEAS_E_POLICY_NOT_MANAGED_BY_OS                                            Handle        = 0x80550001\n\tEAS_E_POLICY_COMPLIANT_WITH_ACTIONS                                       Handle        = 0x80550002\n\tEAS_E_REQUESTED_POLICY_NOT_ENFORCEABLE                                    Handle        = 0x80550003\n\tEAS_E_CURRENT_USER_HAS_BLANK_PASSWORD                                     Handle        = 0x80550004\n\tEAS_E_REQUESTED_POLICY_PASSWORD_EXPIRATION_INCOMPATIBLE                   Handle        = 0x80550005\n\tEAS_E_USER_CANNOT_CHANGE_PASSWORD                                         Handle        = 0x80550006\n\tEAS_E_ADMINS_HAVE_BLANK_PASSWORD                                          Handle        = 0x80550007\n\tEAS_E_ADMINS_CANNOT_CHANGE_PASSWORD                                       Handle        = 0x80550008\n\tEAS_E_LOCAL_CONTROLLED_USERS_CANNOT_CHANGE_PASSWORD                       Handle        = 0x80550009\n\tEAS_E_PASSWORD_POLICY_NOT_ENFORCEABLE_FOR_CONNECTED_ADMINS                Handle        = 0x8055000A\n\tEAS_E_CONNECTED_ADMINS_NEED_TO_CHANGE_PASSWORD                            Handle        = 0x8055000B\n\tEAS_E_PASSWORD_POLICY_NOT_ENFORCEABLE_FOR_CURRENT_CONNECTED_USER          Handle        = 0x8055000C\n\tEAS_E_CURRENT_CONNECTED_USER_NEED_TO_CHANGE_PASSWORD                      Handle        = 0x8055000D\n\tWEB_E_UNSUPPORTED_FORMAT                                                  Handle        = 0x83750001\n\tWEB_E_INVALID_XML                                                         Handle        = 0x83750002\n\tWEB_E_MISSING_REQUIRED_ELEMENT                                            Handle        = 0x83750003\n\tWEB_E_MISSING_REQUIRED_ATTRIBUTE                                          Handle        = 0x83750004\n\tWEB_E_UNEXPECTED_CONTENT                                                  Handle        = 0x83750005\n\tWEB_E_RESOURCE_TOO_LARGE                                                  Handle        = 0x83750006\n\tWEB_E_INVALID_JSON_STRING                                                 Handle        = 0x83750007\n\tWEB_E_INVALID_JSON_NUMBER                                                 Handle        = 0x83750008\n\tWEB_E_JSON_VALUE_NOT_FOUND                                                Handle        = 0x83750009\n\tHTTP_E_STATUS_UNEXPECTED                                                  Handle        = 0x80190001\n\tHTTP_E_STATUS_UNEXPECTED_REDIRECTION                                      Handle        = 0x80190003\n\tHTTP_E_STATUS_UNEXPECTED_CLIENT_ERROR                                     Handle        = 0x80190004\n\tHTTP_E_STATUS_UNEXPECTED_SERVER_ERROR                                     Handle        = 0x80190005\n\tHTTP_E_STATUS_AMBIGUOUS                                                   Handle        = 0x8019012C\n\tHTTP_E_STATUS_MOVED                                                       Handle        = 0x8019012D\n\tHTTP_E_STATUS_REDIRECT                                                    Handle        = 0x8019012E\n\tHTTP_E_STATUS_REDIRECT_METHOD                                             Handle        = 0x8019012F\n\tHTTP_E_STATUS_NOT_MODIFIED                                                Handle        = 0x80190130\n\tHTTP_E_STATUS_USE_PROXY                                                   Handle        = 0x80190131\n\tHTTP_E_STATUS_REDIRECT_KEEP_VERB                                          Handle        = 0x80190133\n\tHTTP_E_STATUS_BAD_REQUEST                                                 Handle        = 0x80190190\n\tHTTP_E_STATUS_DENIED                                                      Handle        = 0x80190191\n\tHTTP_E_STATUS_PAYMENT_REQ                                                 Handle        = 0x80190192\n\tHTTP_E_STATUS_FORBIDDEN                                                   Handle        = 0x80190193\n\tHTTP_E_STATUS_NOT_FOUND                                                   Handle        = 0x80190194\n\tHTTP_E_STATUS_BAD_METHOD                                                  Handle        = 0x80190195\n\tHTTP_E_STATUS_NONE_ACCEPTABLE                                             Handle        = 0x80190196\n\tHTTP_E_STATUS_PROXY_AUTH_REQ                                              Handle        = 0x80190197\n\tHTTP_E_STATUS_REQUEST_TIMEOUT                                             Handle        = 0x80190198\n\tHTTP_E_STATUS_CONFLICT                                                    Handle        = 0x80190199\n\tHTTP_E_STATUS_GONE                                                        Handle        = 0x8019019A\n\tHTTP_E_STATUS_LENGTH_REQUIRED                                             Handle        = 0x8019019B\n\tHTTP_E_STATUS_PRECOND_FAILED                                              Handle        = 0x8019019C\n\tHTTP_E_STATUS_REQUEST_TOO_LARGE                                           Handle        = 0x8019019D\n\tHTTP_E_STATUS_URI_TOO_LONG                                                Handle        = 0x8019019E\n\tHTTP_E_STATUS_UNSUPPORTED_MEDIA                                           Handle        = 0x8019019F\n\tHTTP_E_STATUS_RANGE_NOT_SATISFIABLE                                       Handle        = 0x801901A0\n\tHTTP_E_STATUS_EXPECTATION_FAILED                                          Handle        = 0x801901A1\n\tHTTP_E_STATUS_SERVER_ERROR                                                Handle        = 0x801901F4\n\tHTTP_E_STATUS_NOT_SUPPORTED                                               Handle        = 0x801901F5\n\tHTTP_E_STATUS_BAD_GATEWAY                                                 Handle        = 0x801901F6\n\tHTTP_E_STATUS_SERVICE_UNAVAIL                                             Handle        = 0x801901F7\n\tHTTP_E_STATUS_GATEWAY_TIMEOUT                                             Handle        = 0x801901F8\n\tHTTP_E_STATUS_VERSION_NOT_SUP                                             Handle        = 0x801901F9\n\tE_INVALID_PROTOCOL_OPERATION                                              Handle        = 0x83760001\n\tE_INVALID_PROTOCOL_FORMAT                                                 Handle        = 0x83760002\n\tE_PROTOCOL_EXTENSIONS_NOT_SUPPORTED                                       Handle        = 0x83760003\n\tE_SUBPROTOCOL_NOT_SUPPORTED                                               Handle        = 0x83760004\n\tE_PROTOCOL_VERSION_NOT_SUPPORTED                                          Handle        = 0x83760005\n\tINPUT_E_OUT_OF_ORDER                                                      Handle        = 0x80400000\n\tINPUT_E_REENTRANCY                                                        Handle        = 0x80400001\n\tINPUT_E_MULTIMODAL                                                        Handle        = 0x80400002\n\tINPUT_E_PACKET                                                            Handle        = 0x80400003\n\tINPUT_E_FRAME                                                             Handle        = 0x80400004\n\tINPUT_E_HISTORY                                                           Handle        = 0x80400005\n\tINPUT_E_DEVICE_INFO                                                       Handle        = 0x80400006\n\tINPUT_E_TRANSFORM                                                         Handle        = 0x80400007\n\tINPUT_E_DEVICE_PROPERTY                                                   Handle        = 0x80400008\n\tINET_E_INVALID_URL                                                        Handle        = 0x800C0002\n\tINET_E_NO_SESSION                                                         Handle        = 0x800C0003\n\tINET_E_CANNOT_CONNECT                                                     Handle        = 0x800C0004\n\tINET_E_RESOURCE_NOT_FOUND                                                 Handle        = 0x800C0005\n\tINET_E_OBJECT_NOT_FOUND                                                   Handle        = 0x800C0006\n\tINET_E_DATA_NOT_AVAILABLE                                                 Handle        = 0x800C0007\n\tINET_E_DOWNLOAD_FAILURE                                                   Handle        = 0x800C0008\n\tINET_E_AUTHENTICATION_REQUIRED                                            Handle        = 0x800C0009\n\tINET_E_NO_VALID_MEDIA                                                     Handle        = 0x800C000A\n\tINET_E_CONNECTION_TIMEOUT                                                 Handle        = 0x800C000B\n\tINET_E_INVALID_REQUEST                                                    Handle        = 0x800C000C\n\tINET_E_UNKNOWN_PROTOCOL                                                   Handle        = 0x800C000D\n\tINET_E_SECURITY_PROBLEM                                                   Handle        = 0x800C000E\n\tINET_E_CANNOT_LOAD_DATA                                                   Handle        = 0x800C000F\n\tINET_E_CANNOT_INSTANTIATE_OBJECT                                          Handle        = 0x800C0010\n\tINET_E_INVALID_CERTIFICATE                                                Handle        = 0x800C0019\n\tINET_E_REDIRECT_FAILED                                                    Handle        = 0x800C0014\n\tINET_E_REDIRECT_TO_DIR                                                    Handle        = 0x800C0015\n\tERROR_DBG_CREATE_PROCESS_FAILURE_LOCKDOWN                                 Handle        = 0x80B00001\n\tERROR_DBG_ATTACH_PROCESS_FAILURE_LOCKDOWN                                 Handle        = 0x80B00002\n\tERROR_DBG_CONNECT_SERVER_FAILURE_LOCKDOWN                                 Handle        = 0x80B00003\n\tERROR_DBG_START_SERVER_FAILURE_LOCKDOWN                                   Handle        = 0x80B00004\n\tERROR_IO_PREEMPTED                                                        Handle        = 0x89010001\n\tJSCRIPT_E_CANTEXECUTE                                                     Handle        = 0x89020001\n\tWEP_E_NOT_PROVISIONED_ON_ALL_VOLUMES                                      Handle        = 0x88010001\n\tWEP_E_FIXED_DATA_NOT_SUPPORTED                                            Handle        = 0x88010002\n\tWEP_E_HARDWARE_NOT_COMPLIANT                                              Handle        = 0x88010003\n\tWEP_E_LOCK_NOT_CONFIGURED                                                 Handle        = 0x88010004\n\tWEP_E_PROTECTION_SUSPENDED                                                Handle        = 0x88010005\n\tWEP_E_NO_LICENSE                                                          Handle        = 0x88010006\n\tWEP_E_OS_NOT_PROTECTED                                                    Handle        = 0x88010007\n\tWEP_E_UNEXPECTED_FAIL                                                     Handle        = 0x88010008\n\tWEP_E_BUFFER_TOO_LARGE                                                    Handle        = 0x88010009\n\tERROR_SVHDX_ERROR_STORED                                                  Handle        = 0xC05C0000\n\tERROR_SVHDX_ERROR_NOT_AVAILABLE                                           Handle        = 0xC05CFF00\n\tERROR_SVHDX_UNIT_ATTENTION_AVAILABLE                                      Handle        = 0xC05CFF01\n\tERROR_SVHDX_UNIT_ATTENTION_CAPACITY_DATA_CHANGED                          Handle        = 0xC05CFF02\n\tERROR_SVHDX_UNIT_ATTENTION_RESERVATIONS_PREEMPTED                         Handle        = 0xC05CFF03\n\tERROR_SVHDX_UNIT_ATTENTION_RESERVATIONS_RELEASED                          Handle        = 0xC05CFF04\n\tERROR_SVHDX_UNIT_ATTENTION_REGISTRATIONS_PREEMPTED                        Handle        = 0xC05CFF05\n\tERROR_SVHDX_UNIT_ATTENTION_OPERATING_DEFINITION_CHANGED                   Handle        = 0xC05CFF06\n\tERROR_SVHDX_RESERVATION_CONFLICT                                          Handle        = 0xC05CFF07\n\tERROR_SVHDX_WRONG_FILE_TYPE                                               Handle        = 0xC05CFF08\n\tERROR_SVHDX_VERSION_MISMATCH                                              Handle        = 0xC05CFF09\n\tERROR_VHD_SHARED                                                          Handle        = 0xC05CFF0A\n\tERROR_SVHDX_NO_INITIATOR                                                  Handle        = 0xC05CFF0B\n\tERROR_VHDSET_BACKING_STORAGE_NOT_FOUND                                    Handle        = 0xC05CFF0C\n\tERROR_SMB_NO_PREAUTH_INTEGRITY_HASH_OVERLAP                               Handle        = 0xC05D0000\n\tERROR_SMB_BAD_CLUSTER_DIALECT                                             Handle        = 0xC05D0001\n\tWININET_E_OUT_OF_HANDLES                                                  Handle        = 0x80072EE1\n\tWININET_E_TIMEOUT                                                         Handle        = 0x80072EE2\n\tWININET_E_EXTENDED_ERROR                                                  Handle        = 0x80072EE3\n\tWININET_E_INTERNAL_ERROR                                                  Handle        = 0x80072EE4\n\tWININET_E_INVALID_URL                                                     Handle        = 0x80072EE5\n\tWININET_E_UNRECOGNIZED_SCHEME                                             Handle        = 0x80072EE6\n\tWININET_E_NAME_NOT_RESOLVED                                               Handle        = 0x80072EE7\n\tWININET_E_PROTOCOL_NOT_FOUND                                              Handle        = 0x80072EE8\n\tWININET_E_INVALID_OPTION                                                  Handle        = 0x80072EE9\n\tWININET_E_BAD_OPTION_LENGTH                                               Handle        = 0x80072EEA\n\tWININET_E_OPTION_NOT_SETTABLE                                             Handle        = 0x80072EEB\n\tWININET_E_SHUTDOWN                                                        Handle        = 0x80072EEC\n\tWININET_E_INCORRECT_USER_NAME                                             Handle        = 0x80072EED\n\tWININET_E_INCORRECT_PASSWORD                                              Handle        = 0x80072EEE\n\tWININET_E_LOGIN_FAILURE                                                   Handle        = 0x80072EEF\n\tWININET_E_INVALID_OPERATION                                               Handle        = 0x80072EF0\n\tWININET_E_OPERATION_CANCELLED                                             Handle        = 0x80072EF1\n\tWININET_E_INCORRECT_HANDLE_TYPE                                           Handle        = 0x80072EF2\n\tWININET_E_INCORRECT_HANDLE_STATE                                          Handle        = 0x80072EF3\n\tWININET_E_NOT_PROXY_REQUEST                                               Handle        = 0x80072EF4\n\tWININET_E_REGISTRY_VALUE_NOT_FOUND                                        Handle        = 0x80072EF5\n\tWININET_E_BAD_REGISTRY_PARAMETER                                          Handle        = 0x80072EF6\n\tWININET_E_NO_DIRECT_ACCESS                                                Handle        = 0x80072EF7\n\tWININET_E_NO_CONTEXT                                                      Handle        = 0x80072EF8\n\tWININET_E_NO_CALLBACK                                                     Handle        = 0x80072EF9\n\tWININET_E_REQUEST_PENDING                                                 Handle        = 0x80072EFA\n\tWININET_E_INCORRECT_FORMAT                                                Handle        = 0x80072EFB\n\tWININET_E_ITEM_NOT_FOUND                                                  Handle        = 0x80072EFC\n\tWININET_E_CANNOT_CONNECT                                                  Handle        = 0x80072EFD\n\tWININET_E_CONNECTION_ABORTED                                              Handle        = 0x80072EFE\n\tWININET_E_CONNECTION_RESET                                                Handle        = 0x80072EFF\n\tWININET_E_FORCE_RETRY                                                     Handle        = 0x80072F00\n\tWININET_E_INVALID_PROXY_REQUEST                                           Handle        = 0x80072F01\n\tWININET_E_NEED_UI                                                         Handle        = 0x80072F02\n\tWININET_E_HANDLE_EXISTS                                                   Handle        = 0x80072F04\n\tWININET_E_SEC_CERT_DATE_INVALID                                           Handle        = 0x80072F05\n\tWININET_E_SEC_CERT_CN_INVALID                                             Handle        = 0x80072F06\n\tWININET_E_HTTP_TO_HTTPS_ON_REDIR                                          Handle        = 0x80072F07\n\tWININET_E_HTTPS_TO_HTTP_ON_REDIR                                          Handle        = 0x80072F08\n\tWININET_E_MIXED_SECURITY                                                  Handle        = 0x80072F09\n\tWININET_E_CHG_POST_IS_NON_SECURE                                          Handle        = 0x80072F0A\n\tWININET_E_POST_IS_NON_SECURE                                              Handle        = 0x80072F0B\n\tWININET_E_CLIENT_AUTH_CERT_NEEDED                                         Handle        = 0x80072F0C\n\tWININET_E_INVALID_CA                                                      Handle        = 0x80072F0D\n\tWININET_E_CLIENT_AUTH_NOT_SETUP                                           Handle        = 0x80072F0E\n\tWININET_E_ASYNC_THREAD_FAILED                                             Handle        = 0x80072F0F\n\tWININET_E_REDIRECT_SCHEME_CHANGE                                          Handle        = 0x80072F10\n\tWININET_E_DIALOG_PENDING                                                  Handle        = 0x80072F11\n\tWININET_E_RETRY_DIALOG                                                    Handle        = 0x80072F12\n\tWININET_E_NO_NEW_CONTAINERS                                               Handle        = 0x80072F13\n\tWININET_E_HTTPS_HTTP_SUBMIT_REDIR                                         Handle        = 0x80072F14\n\tWININET_E_SEC_CERT_ERRORS                                                 Handle        = 0x80072F17\n\tWININET_E_SEC_CERT_REV_FAILED                                             Handle        = 0x80072F19\n\tWININET_E_HEADER_NOT_FOUND                                                Handle        = 0x80072F76\n\tWININET_E_DOWNLEVEL_SERVER                                                Handle        = 0x80072F77\n\tWININET_E_INVALID_SERVER_RESPONSE                                         Handle        = 0x80072F78\n\tWININET_E_INVALID_HEADER                                                  Handle        = 0x80072F79\n\tWININET_E_INVALID_QUERY_REQUEST                                           Handle        = 0x80072F7A\n\tWININET_E_HEADER_ALREADY_EXISTS                                           Handle        = 0x80072F7B\n\tWININET_E_REDIRECT_FAILED                                                 Handle        = 0x80072F7C\n\tWININET_E_SECURITY_CHANNEL_ERROR                                          Handle        = 0x80072F7D\n\tWININET_E_UNABLE_TO_CACHE_FILE                                            Handle        = 0x80072F7E\n\tWININET_E_TCPIP_NOT_INSTALLED                                             Handle        = 0x80072F7F\n\tWININET_E_DISCONNECTED                                                    Handle        = 0x80072F83\n\tWININET_E_SERVER_UNREACHABLE                                              Handle        = 0x80072F84\n\tWININET_E_PROXY_SERVER_UNREACHABLE                                        Handle        = 0x80072F85\n\tWININET_E_BAD_AUTO_PROXY_SCRIPT                                           Handle        = 0x80072F86\n\tWININET_E_UNABLE_TO_DOWNLOAD_SCRIPT                                       Handle        = 0x80072F87\n\tWININET_E_SEC_INVALID_CERT                                                Handle        = 0x80072F89\n\tWININET_E_SEC_CERT_REVOKED                                                Handle        = 0x80072F8A\n\tWININET_E_FAILED_DUETOSECURITYCHECK                                       Handle        = 0x80072F8B\n\tWININET_E_NOT_INITIALIZED                                                 Handle        = 0x80072F8C\n\tWININET_E_LOGIN_FAILURE_DISPLAY_ENTITY_BODY                               Handle        = 0x80072F8E\n\tWININET_E_DECODING_FAILED                                                 Handle        = 0x80072F8F\n\tWININET_E_NOT_REDIRECTED                                                  Handle        = 0x80072F80\n\tWININET_E_COOKIE_NEEDS_CONFIRMATION                                       Handle        = 0x80072F81\n\tWININET_E_COOKIE_DECLINED                                                 Handle        = 0x80072F82\n\tWININET_E_REDIRECT_NEEDS_CONFIRMATION                                     Handle        = 0x80072F88\n\tSQLITE_E_ERROR                                                            Handle        = 0x87AF0001\n\tSQLITE_E_INTERNAL                                                         Handle        = 0x87AF0002\n\tSQLITE_E_PERM                                                             Handle        = 0x87AF0003\n\tSQLITE_E_ABORT                                                            Handle        = 0x87AF0004\n\tSQLITE_E_BUSY                                                             Handle        = 0x87AF0005\n\tSQLITE_E_LOCKED                                                           Handle        = 0x87AF0006\n\tSQLITE_E_NOMEM                                                            Handle        = 0x87AF0007\n\tSQLITE_E_READONLY                                                         Handle        = 0x87AF0008\n\tSQLITE_E_INTERRUPT                                                        Handle        = 0x87AF0009\n\tSQLITE_E_IOERR                                                            Handle        = 0x87AF000A\n\tSQLITE_E_CORRUPT                                                          Handle        = 0x87AF000B\n\tSQLITE_E_NOTFOUND                                                         Handle        = 0x87AF000C\n\tSQLITE_E_FULL                                                             Handle        = 0x87AF000D\n\tSQLITE_E_CANTOPEN                                                         Handle        = 0x87AF000E\n\tSQLITE_E_PROTOCOL                                                         Handle        = 0x87AF000F\n\tSQLITE_E_EMPTY                                                            Handle        = 0x87AF0010\n\tSQLITE_E_SCHEMA                                                           Handle        = 0x87AF0011\n\tSQLITE_E_TOOBIG                                                           Handle        = 0x87AF0012\n\tSQLITE_E_CONSTRAINT                                                       Handle        = 0x87AF0013\n\tSQLITE_E_MISMATCH                                                         Handle        = 0x87AF0014\n\tSQLITE_E_MISUSE                                                           Handle        = 0x87AF0015\n\tSQLITE_E_NOLFS                                                            Handle        = 0x87AF0016\n\tSQLITE_E_AUTH                                                             Handle        = 0x87AF0017\n\tSQLITE_E_FORMAT                                                           Handle        = 0x87AF0018\n\tSQLITE_E_RANGE                                                            Handle        = 0x87AF0019\n\tSQLITE_E_NOTADB                                                           Handle        = 0x87AF001A\n\tSQLITE_E_NOTICE                                                           Handle        = 0x87AF001B\n\tSQLITE_E_WARNING                                                          Handle        = 0x87AF001C\n\tSQLITE_E_ROW                                                              Handle        = 0x87AF0064\n\tSQLITE_E_DONE                                                             Handle        = 0x87AF0065\n\tSQLITE_E_IOERR_READ                                                       Handle        = 0x87AF010A\n\tSQLITE_E_IOERR_SHORT_READ                                                 Handle        = 0x87AF020A\n\tSQLITE_E_IOERR_WRITE                                                      Handle        = 0x87AF030A\n\tSQLITE_E_IOERR_FSYNC                                                      Handle        = 0x87AF040A\n\tSQLITE_E_IOERR_DIR_FSYNC                                                  Handle        = 0x87AF050A\n\tSQLITE_E_IOERR_TRUNCATE                                                   Handle        = 0x87AF060A\n\tSQLITE_E_IOERR_FSTAT                                                      Handle        = 0x87AF070A\n\tSQLITE_E_IOERR_UNLOCK                                                     Handle        = 0x87AF080A\n\tSQLITE_E_IOERR_RDLOCK                                                     Handle        = 0x87AF090A\n\tSQLITE_E_IOERR_DELETE                                                     Handle        = 0x87AF0A0A\n\tSQLITE_E_IOERR_BLOCKED                                                    Handle        = 0x87AF0B0A\n\tSQLITE_E_IOERR_NOMEM                                                      Handle        = 0x87AF0C0A\n\tSQLITE_E_IOERR_ACCESS                                                     Handle        = 0x87AF0D0A\n\tSQLITE_E_IOERR_CHECKRESERVEDLOCK                                          Handle        = 0x87AF0E0A\n\tSQLITE_E_IOERR_LOCK                                                       Handle        = 0x87AF0F0A\n\tSQLITE_E_IOERR_CLOSE                                                      Handle        = 0x87AF100A\n\tSQLITE_E_IOERR_DIR_CLOSE                                                  Handle        = 0x87AF110A\n\tSQLITE_E_IOERR_SHMOPEN                                                    Handle        = 0x87AF120A\n\tSQLITE_E_IOERR_SHMSIZE                                                    Handle        = 0x87AF130A\n\tSQLITE_E_IOERR_SHMLOCK                                                    Handle        = 0x87AF140A\n\tSQLITE_E_IOERR_SHMMAP                                                     Handle        = 0x87AF150A\n\tSQLITE_E_IOERR_SEEK                                                       Handle        = 0x87AF160A\n\tSQLITE_E_IOERR_DELETE_NOENT                                               Handle        = 0x87AF170A\n\tSQLITE_E_IOERR_MMAP                                                       Handle        = 0x87AF180A\n\tSQLITE_E_IOERR_GETTEMPPATH                                                Handle        = 0x87AF190A\n\tSQLITE_E_IOERR_CONVPATH                                                   Handle        = 0x87AF1A0A\n\tSQLITE_E_IOERR_VNODE                                                      Handle        = 0x87AF1A02\n\tSQLITE_E_IOERR_AUTH                                                       Handle        = 0x87AF1A03\n\tSQLITE_E_LOCKED_SHAREDCACHE                                               Handle        = 0x87AF0106\n\tSQLITE_E_BUSY_RECOVERY                                                    Handle        = 0x87AF0105\n\tSQLITE_E_BUSY_SNAPSHOT                                                    Handle        = 0x87AF0205\n\tSQLITE_E_CANTOPEN_NOTEMPDIR                                               Handle        = 0x87AF010E\n\tSQLITE_E_CANTOPEN_ISDIR                                                   Handle        = 0x87AF020E\n\tSQLITE_E_CANTOPEN_FULLPATH                                                Handle        = 0x87AF030E\n\tSQLITE_E_CANTOPEN_CONVPATH                                                Handle        = 0x87AF040E\n\tSQLITE_E_CORRUPT_VTAB                                                     Handle        = 0x87AF010B\n\tSQLITE_E_READONLY_RECOVERY                                                Handle        = 0x87AF0108\n\tSQLITE_E_READONLY_CANTLOCK                                                Handle        = 0x87AF0208\n\tSQLITE_E_READONLY_ROLLBACK                                                Handle        = 0x87AF0308\n\tSQLITE_E_READONLY_DBMOVED                                                 Handle        = 0x87AF0408\n\tSQLITE_E_ABORT_ROLLBACK                                                   Handle        = 0x87AF0204\n\tSQLITE_E_CONSTRAINT_CHECK                                                 Handle        = 0x87AF0113\n\tSQLITE_E_CONSTRAINT_COMMITHOOK                                            Handle        = 0x87AF0213\n\tSQLITE_E_CONSTRAINT_FOREIGNKEY                                            Handle        = 0x87AF0313\n\tSQLITE_E_CONSTRAINT_FUNCTION                                              Handle        = 0x87AF0413\n\tSQLITE_E_CONSTRAINT_NOTNULL                                               Handle        = 0x87AF0513\n\tSQLITE_E_CONSTRAINT_PRIMARYKEY                                            Handle        = 0x87AF0613\n\tSQLITE_E_CONSTRAINT_TRIGGER                                               Handle        = 0x87AF0713\n\tSQLITE_E_CONSTRAINT_UNIQUE                                                Handle        = 0x87AF0813\n\tSQLITE_E_CONSTRAINT_VTAB                                                  Handle        = 0x87AF0913\n\tSQLITE_E_CONSTRAINT_ROWID                                                 Handle        = 0x87AF0A13\n\tSQLITE_E_NOTICE_RECOVER_WAL                                               Handle        = 0x87AF011B\n\tSQLITE_E_NOTICE_RECOVER_ROLLBACK                                          Handle        = 0x87AF021B\n\tSQLITE_E_WARNING_AUTOINDEX                                                Handle        = 0x87AF011C\n\tUTC_E_TOGGLE_TRACE_STARTED                                                Handle        = 0x87C51001\n\tUTC_E_ALTERNATIVE_TRACE_CANNOT_PREEMPT                                    Handle        = 0x87C51002\n\tUTC_E_AOT_NOT_RUNNING                                                     Handle        = 0x87C51003\n\tUTC_E_SCRIPT_TYPE_INVALID                                                 Handle        = 0x87C51004\n\tUTC_E_SCENARIODEF_NOT_FOUND                                               Handle        = 0x87C51005\n\tUTC_E_TRACEPROFILE_NOT_FOUND                                              Handle        = 0x87C51006\n\tUTC_E_FORWARDER_ALREADY_ENABLED                                           Handle        = 0x87C51007\n\tUTC_E_FORWARDER_ALREADY_DISABLED                                          Handle        = 0x87C51008\n\tUTC_E_EVENTLOG_ENTRY_MALFORMED                                            Handle        = 0x87C51009\n\tUTC_E_DIAGRULES_SCHEMAVERSION_MISMATCH                                    Handle        = 0x87C5100A\n\tUTC_E_SCRIPT_TERMINATED                                                   Handle        = 0x87C5100B\n\tUTC_E_INVALID_CUSTOM_FILTER                                               Handle        = 0x87C5100C\n\tUTC_E_TRACE_NOT_RUNNING                                                   Handle        = 0x87C5100D\n\tUTC_E_REESCALATED_TOO_QUICKLY                                             Handle        = 0x87C5100E\n\tUTC_E_ESCALATION_ALREADY_RUNNING                                          Handle        = 0x87C5100F\n\tUTC_E_PERFTRACK_ALREADY_TRACING                                           Handle        = 0x87C51010\n\tUTC_E_REACHED_MAX_ESCALATIONS                                             Handle        = 0x87C51011\n\tUTC_E_FORWARDER_PRODUCER_MISMATCH                                         Handle        = 0x87C51012\n\tUTC_E_INTENTIONAL_SCRIPT_FAILURE                                          Handle        = 0x87C51013\n\tUTC_E_SQM_INIT_FAILED                                                     Handle        = 0x87C51014\n\tUTC_E_NO_WER_LOGGER_SUPPORTED                                             Handle        = 0x87C51015\n\tUTC_E_TRACERS_DONT_EXIST                                                  Handle        = 0x87C51016\n\tUTC_E_WINRT_INIT_FAILED                                                   Handle        = 0x87C51017\n\tUTC_E_SCENARIODEF_SCHEMAVERSION_MISMATCH                                  Handle        = 0x87C51018\n\tUTC_E_INVALID_FILTER                                                      Handle        = 0x87C51019\n\tUTC_E_EXE_TERMINATED                                                      Handle        = 0x87C5101A\n\tUTC_E_ESCALATION_NOT_AUTHORIZED                                           Handle        = 0x87C5101B\n\tUTC_E_SETUP_NOT_AUTHORIZED                                                Handle        = 0x87C5101C\n\tUTC_E_CHILD_PROCESS_FAILED                                                Handle        = 0x87C5101D\n\tUTC_E_COMMAND_LINE_NOT_AUTHORIZED                                         Handle        = 0x87C5101E\n\tUTC_E_CANNOT_LOAD_SCENARIO_EDITOR_XML                                     Handle        = 0x87C5101F\n\tUTC_E_ESCALATION_TIMED_OUT                                                Handle        = 0x87C51020\n\tUTC_E_SETUP_TIMED_OUT                                                     Handle        = 0x87C51021\n\tUTC_E_TRIGGER_MISMATCH                                                    Handle        = 0x87C51022\n\tUTC_E_TRIGGER_NOT_FOUND                                                   Handle        = 0x87C51023\n\tUTC_E_SIF_NOT_SUPPORTED                                                   Handle        = 0x87C51024\n\tUTC_E_DELAY_TERMINATED                                                    Handle        = 0x87C51025\n\tUTC_E_DEVICE_TICKET_ERROR                                                 Handle        = 0x87C51026\n\tUTC_E_TRACE_BUFFER_LIMIT_EXCEEDED                                         Handle        = 0x87C51027\n\tUTC_E_API_RESULT_UNAVAILABLE                                              Handle        = 0x87C51028\n\tUTC_E_RPC_TIMEOUT                                                         Handle        = 0x87C51029\n\tUTC_E_RPC_WAIT_FAILED                                                     Handle        = 0x87C5102A\n\tUTC_E_API_BUSY                                                            Handle        = 0x87C5102B\n\tUTC_E_TRACE_MIN_DURATION_REQUIREMENT_NOT_MET                              Handle        = 0x87C5102C\n\tUTC_E_EXCLUSIVITY_NOT_AVAILABLE                                           Handle        = 0x87C5102D\n\tUTC_E_GETFILE_FILE_PATH_NOT_APPROVED                                      Handle        = 0x87C5102E\n\tUTC_E_ESCALATION_DIRECTORY_ALREADY_EXISTS                                 Handle        = 0x87C5102F\n\tUTC_E_TIME_TRIGGER_ON_START_INVALID                                       Handle        = 0x87C51030\n\tUTC_E_TIME_TRIGGER_ONLY_VALID_ON_SINGLE_TRANSITION                        Handle        = 0x87C51031\n\tUTC_E_TIME_TRIGGER_INVALID_TIME_RANGE                                     Handle        = 0x87C51032\n\tUTC_E_MULTIPLE_TIME_TRIGGER_ON_SINGLE_STATE                               Handle        = 0x87C51033\n\tUTC_E_BINARY_MISSING                                                      Handle        = 0x87C51034\n\tUTC_E_NETWORK_CAPTURE_NOT_ALLOWED                                         Handle        = 0x87C51035\n\tUTC_E_FAILED_TO_RESOLVE_CONTAINER_ID                                      Handle        = 0x87C51036\n\tUTC_E_UNABLE_TO_RESOLVE_SESSION                                           Handle        = 0x87C51037\n\tUTC_E_THROTTLED                                                           Handle        = 0x87C51038\n\tUTC_E_UNAPPROVED_SCRIPT                                                   Handle        = 0x87C51039\n\tUTC_E_SCRIPT_MISSING                                                      Handle        = 0x87C5103A\n\tUTC_E_SCENARIO_THROTTLED                                                  Handle        = 0x87C5103B\n\tUTC_E_API_NOT_SUPPORTED                                                   Handle        = 0x87C5103C\n\tUTC_E_GETFILE_EXTERNAL_PATH_NOT_APPROVED                                  Handle        = 0x87C5103D\n\tUTC_E_TRY_GET_SCENARIO_TIMEOUT_EXCEEDED                                   Handle        = 0x87C5103E\n\tUTC_E_CERT_REV_FAILED                                                     Handle        = 0x87C5103F\n\tUTC_E_FAILED_TO_START_NDISCAP                                             Handle        = 0x87C51040\n\tUTC_E_KERNELDUMP_LIMIT_REACHED                                            Handle        = 0x87C51041\n\tUTC_E_MISSING_AGGREGATE_EVENT_TAG                                         Handle        = 0x87C51042\n\tUTC_E_INVALID_AGGREGATION_STRUCT                                          Handle        = 0x87C51043\n\tUTC_E_ACTION_NOT_SUPPORTED_IN_DESTINATION                                 Handle        = 0x87C51044\n\tUTC_E_FILTER_MISSING_ATTRIBUTE                                            Handle        = 0x87C51045\n\tUTC_E_FILTER_INVALID_TYPE                                                 Handle        = 0x87C51046\n\tUTC_E_FILTER_VARIABLE_NOT_FOUND                                           Handle        = 0x87C51047\n\tUTC_E_FILTER_FUNCTION_RESTRICTED                                          Handle        = 0x87C51048\n\tUTC_E_FILTER_VERSION_MISMATCH                                             Handle        = 0x87C51049\n\tUTC_E_FILTER_INVALID_FUNCTION                                             Handle        = 0x87C51050\n\tUTC_E_FILTER_INVALID_FUNCTION_PARAMS                                      Handle        = 0x87C51051\n\tUTC_E_FILTER_INVALID_COMMAND                                              Handle        = 0x87C51052\n\tUTC_E_FILTER_ILLEGAL_EVAL                                                 Handle        = 0x87C51053\n\tUTC_E_TTTRACER_RETURNED_ERROR                                             Handle        = 0x87C51054\n\tUTC_E_AGENT_DIAGNOSTICS_TOO_LARGE                                         Handle        = 0x87C51055\n\tUTC_E_FAILED_TO_RECEIVE_AGENT_DIAGNOSTICS                                 Handle        = 0x87C51056\n\tUTC_E_SCENARIO_HAS_NO_ACTIONS                                             Handle        = 0x87C51057\n\tUTC_E_TTTRACER_STORAGE_FULL                                               Handle        = 0x87C51058\n\tUTC_E_INSUFFICIENT_SPACE_TO_START_TRACE                                   Handle        = 0x87C51059\n\tUTC_E_ESCALATION_CANCELLED_AT_SHUTDOWN                                    Handle        = 0x87C5105A\n\tUTC_E_GETFILEINFOACTION_FILE_NOT_APPROVED                                 Handle        = 0x87C5105B\n\tUTC_E_SETREGKEYACTION_TYPE_NOT_APPROVED                                   Handle        = 0x87C5105C\n\tWINML_ERR_INVALID_DEVICE                                                  Handle        = 0x88900001\n\tWINML_ERR_INVALID_BINDING                                                 Handle        = 0x88900002\n\tWINML_ERR_VALUE_NOTFOUND                                                  Handle        = 0x88900003\n\tWINML_ERR_SIZE_MISMATCH                                                   Handle        = 0x88900004\n\tSTATUS_WAIT_0                                                             NTStatus      = 0x00000000\n\tSTATUS_SUCCESS                                                            NTStatus      = 0x00000000\n\tSTATUS_WAIT_1                                                             NTStatus      = 0x00000001\n\tSTATUS_WAIT_2                                                             NTStatus      = 0x00000002\n\tSTATUS_WAIT_3                                                             NTStatus      = 0x00000003\n\tSTATUS_WAIT_63                                                            NTStatus      = 0x0000003F\n\tSTATUS_ABANDONED                                                          NTStatus      = 0x00000080\n\tSTATUS_ABANDONED_WAIT_0                                                   NTStatus      = 0x00000080\n\tSTATUS_ABANDONED_WAIT_63                                                  NTStatus      = 0x000000BF\n\tSTATUS_USER_APC                                                           NTStatus      = 0x000000C0\n\tSTATUS_ALREADY_COMPLETE                                                   NTStatus      = 0x000000FF\n\tSTATUS_KERNEL_APC                                                         NTStatus      = 0x00000100\n\tSTATUS_ALERTED                                                            NTStatus      = 0x00000101\n\tSTATUS_TIMEOUT                                                            NTStatus      = 0x00000102\n\tSTATUS_PENDING                                                            NTStatus      = 0x00000103\n\tSTATUS_REPARSE                                                            NTStatus      = 0x00000104\n\tSTATUS_MORE_ENTRIES                                                       NTStatus      = 0x00000105\n\tSTATUS_NOT_ALL_ASSIGNED                                                   NTStatus      = 0x00000106\n\tSTATUS_SOME_NOT_MAPPED                                                    NTStatus      = 0x00000107\n\tSTATUS_OPLOCK_BREAK_IN_PROGRESS                                           NTStatus      = 0x00000108\n\tSTATUS_VOLUME_MOUNTED                                                     NTStatus      = 0x00000109\n\tSTATUS_RXACT_COMMITTED                                                    NTStatus      = 0x0000010A\n\tSTATUS_NOTIFY_CLEANUP                                                     NTStatus      = 0x0000010B\n\tSTATUS_NOTIFY_ENUM_DIR                                                    NTStatus      = 0x0000010C\n\tSTATUS_NO_QUOTAS_FOR_ACCOUNT                                              NTStatus      = 0x0000010D\n\tSTATUS_PRIMARY_TRANSPORT_CONNECT_FAILED                                   NTStatus      = 0x0000010E\n\tSTATUS_PAGE_FAULT_TRANSITION                                              NTStatus      = 0x00000110\n\tSTATUS_PAGE_FAULT_DEMAND_ZERO                                             NTStatus      = 0x00000111\n\tSTATUS_PAGE_FAULT_COPY_ON_WRITE                                           NTStatus      = 0x00000112\n\tSTATUS_PAGE_FAULT_GUARD_PAGE                                              NTStatus      = 0x00000113\n\tSTATUS_PAGE_FAULT_PAGING_FILE                                             NTStatus      = 0x00000114\n\tSTATUS_CACHE_PAGE_LOCKED                                                  NTStatus      = 0x00000115\n\tSTATUS_CRASH_DUMP                                                         NTStatus      = 0x00000116\n\tSTATUS_BUFFER_ALL_ZEROS                                                   NTStatus      = 0x00000117\n\tSTATUS_REPARSE_OBJECT                                                     NTStatus      = 0x00000118\n\tSTATUS_RESOURCE_REQUIREMENTS_CHANGED                                      NTStatus      = 0x00000119\n\tSTATUS_TRANSLATION_COMPLETE                                               NTStatus      = 0x00000120\n\tSTATUS_DS_MEMBERSHIP_EVALUATED_LOCALLY                                    NTStatus      = 0x00000121\n\tSTATUS_NOTHING_TO_TERMINATE                                               NTStatus      = 0x00000122\n\tSTATUS_PROCESS_NOT_IN_JOB                                                 NTStatus      = 0x00000123\n\tSTATUS_PROCESS_IN_JOB                                                     NTStatus      = 0x00000124\n\tSTATUS_VOLSNAP_HIBERNATE_READY                                            NTStatus      = 0x00000125\n\tSTATUS_FSFILTER_OP_COMPLETED_SUCCESSFULLY                                 NTStatus      = 0x00000126\n\tSTATUS_INTERRUPT_VECTOR_ALREADY_CONNECTED                                 NTStatus      = 0x00000127\n\tSTATUS_INTERRUPT_STILL_CONNECTED                                          NTStatus      = 0x00000128\n\tSTATUS_PROCESS_CLONED                                                     NTStatus      = 0x00000129\n\tSTATUS_FILE_LOCKED_WITH_ONLY_READERS                                      NTStatus      = 0x0000012A\n\tSTATUS_FILE_LOCKED_WITH_WRITERS                                           NTStatus      = 0x0000012B\n\tSTATUS_VALID_IMAGE_HASH                                                   NTStatus      = 0x0000012C\n\tSTATUS_VALID_CATALOG_HASH                                                 NTStatus      = 0x0000012D\n\tSTATUS_VALID_STRONG_CODE_HASH                                             NTStatus      = 0x0000012E\n\tSTATUS_GHOSTED                                                            NTStatus      = 0x0000012F\n\tSTATUS_DATA_OVERWRITTEN                                                   NTStatus      = 0x00000130\n\tSTATUS_RESOURCEMANAGER_READ_ONLY                                          NTStatus      = 0x00000202\n\tSTATUS_RING_PREVIOUSLY_EMPTY                                              NTStatus      = 0x00000210\n\tSTATUS_RING_PREVIOUSLY_FULL                                               NTStatus      = 0x00000211\n\tSTATUS_RING_PREVIOUSLY_ABOVE_QUOTA                                        NTStatus      = 0x00000212\n\tSTATUS_RING_NEWLY_EMPTY                                                   NTStatus      = 0x00000213\n\tSTATUS_RING_SIGNAL_OPPOSITE_ENDPOINT                                      NTStatus      = 0x00000214\n\tSTATUS_OPLOCK_SWITCHED_TO_NEW_HANDLE                                      NTStatus      = 0x00000215\n\tSTATUS_OPLOCK_HANDLE_CLOSED                                               NTStatus      = 0x00000216\n\tSTATUS_WAIT_FOR_OPLOCK                                                    NTStatus      = 0x00000367\n\tSTATUS_REPARSE_GLOBAL                                                     NTStatus      = 0x00000368\n\tSTATUS_FLT_IO_COMPLETE                                                    NTStatus      = 0x001C0001\n\tSTATUS_OBJECT_NAME_EXISTS                                                 NTStatus      = 0x40000000\n\tSTATUS_THREAD_WAS_SUSPENDED                                               NTStatus      = 0x40000001\n\tSTATUS_WORKING_SET_LIMIT_RANGE                                            NTStatus      = 0x40000002\n\tSTATUS_IMAGE_NOT_AT_BASE                                                  NTStatus      = 0x40000003\n\tSTATUS_RXACT_STATE_CREATED                                                NTStatus      = 0x40000004\n\tSTATUS_SEGMENT_NOTIFICATION                                               NTStatus      = 0x40000005\n\tSTATUS_LOCAL_USER_SESSION_KEY                                             NTStatus      = 0x40000006\n\tSTATUS_BAD_CURRENT_DIRECTORY                                              NTStatus      = 0x40000007\n\tSTATUS_SERIAL_MORE_WRITES                                                 NTStatus      = 0x40000008\n\tSTATUS_REGISTRY_RECOVERED                                                 NTStatus      = 0x40000009\n\tSTATUS_FT_READ_RECOVERY_FROM_BACKUP                                       NTStatus      = 0x4000000A\n\tSTATUS_FT_WRITE_RECOVERY                                                  NTStatus      = 0x4000000B\n\tSTATUS_SERIAL_COUNTER_TIMEOUT                                             NTStatus      = 0x4000000C\n\tSTATUS_NULL_LM_PASSWORD                                                   NTStatus      = 0x4000000D\n\tSTATUS_IMAGE_MACHINE_TYPE_MISMATCH                                        NTStatus      = 0x4000000E\n\tSTATUS_RECEIVE_PARTIAL                                                    NTStatus      = 0x4000000F\n\tSTATUS_RECEIVE_EXPEDITED                                                  NTStatus      = 0x40000010\n\tSTATUS_RECEIVE_PARTIAL_EXPEDITED                                          NTStatus      = 0x40000011\n\tSTATUS_EVENT_DONE                                                         NTStatus      = 0x40000012\n\tSTATUS_EVENT_PENDING                                                      NTStatus      = 0x40000013\n\tSTATUS_CHECKING_FILE_SYSTEM                                               NTStatus      = 0x40000014\n\tSTATUS_FATAL_APP_EXIT                                                     NTStatus      = 0x40000015\n\tSTATUS_PREDEFINED_HANDLE                                                  NTStatus      = 0x40000016\n\tSTATUS_WAS_UNLOCKED                                                       NTStatus      = 0x40000017\n\tSTATUS_SERVICE_NOTIFICATION                                               NTStatus      = 0x40000018\n\tSTATUS_WAS_LOCKED                                                         NTStatus      = 0x40000019\n\tSTATUS_LOG_HARD_ERROR                                                     NTStatus      = 0x4000001A\n\tSTATUS_ALREADY_WIN32                                                      NTStatus      = 0x4000001B\n\tSTATUS_WX86_UNSIMULATE                                                    NTStatus      = 0x4000001C\n\tSTATUS_WX86_CONTINUE                                                      NTStatus      = 0x4000001D\n\tSTATUS_WX86_SINGLE_STEP                                                   NTStatus      = 0x4000001E\n\tSTATUS_WX86_BREAKPOINT                                                    NTStatus      = 0x4000001F\n\tSTATUS_WX86_EXCEPTION_CONTINUE                                            NTStatus      = 0x40000020\n\tSTATUS_WX86_EXCEPTION_LASTCHANCE                                          NTStatus      = 0x40000021\n\tSTATUS_WX86_EXCEPTION_CHAIN                                               NTStatus      = 0x40000022\n\tSTATUS_IMAGE_MACHINE_TYPE_MISMATCH_EXE                                    NTStatus      = 0x40000023\n\tSTATUS_NO_YIELD_PERFORMED                                                 NTStatus      = 0x40000024\n\tSTATUS_TIMER_RESUME_IGNORED                                               NTStatus      = 0x40000025\n\tSTATUS_ARBITRATION_UNHANDLED                                              NTStatus      = 0x40000026\n\tSTATUS_CARDBUS_NOT_SUPPORTED                                              NTStatus      = 0x40000027\n\tSTATUS_WX86_CREATEWX86TIB                                                 NTStatus      = 0x40000028\n\tSTATUS_MP_PROCESSOR_MISMATCH                                              NTStatus      = 0x40000029\n\tSTATUS_HIBERNATED                                                         NTStatus      = 0x4000002A\n\tSTATUS_RESUME_HIBERNATION                                                 NTStatus      = 0x4000002B\n\tSTATUS_FIRMWARE_UPDATED                                                   NTStatus      = 0x4000002C\n\tSTATUS_DRIVERS_LEAKING_LOCKED_PAGES                                       NTStatus      = 0x4000002D\n\tSTATUS_MESSAGE_RETRIEVED                                                  NTStatus      = 0x4000002E\n\tSTATUS_SYSTEM_POWERSTATE_TRANSITION                                       NTStatus      = 0x4000002F\n\tSTATUS_ALPC_CHECK_COMPLETION_LIST                                         NTStatus      = 0x40000030\n\tSTATUS_SYSTEM_POWERSTATE_COMPLEX_TRANSITION                               NTStatus      = 0x40000031\n\tSTATUS_ACCESS_AUDIT_BY_POLICY                                             NTStatus      = 0x40000032\n\tSTATUS_ABANDON_HIBERFILE                                                  NTStatus      = 0x40000033\n\tSTATUS_BIZRULES_NOT_ENABLED                                               NTStatus      = 0x40000034\n\tSTATUS_FT_READ_FROM_COPY                                                  NTStatus      = 0x40000035\n\tSTATUS_IMAGE_AT_DIFFERENT_BASE                                            NTStatus      = 0x40000036\n\tSTATUS_PATCH_DEFERRED                                                     NTStatus      = 0x40000037\n\tSTATUS_HEURISTIC_DAMAGE_POSSIBLE                                          NTStatus      = 0x40190001\n\tSTATUS_GUARD_PAGE_VIOLATION                                               NTStatus      = 0x80000001\n\tSTATUS_DATATYPE_MISALIGNMENT                                              NTStatus      = 0x80000002\n\tSTATUS_BREAKPOINT                                                         NTStatus      = 0x80000003\n\tSTATUS_SINGLE_STEP                                                        NTStatus      = 0x80000004\n\tSTATUS_BUFFER_OVERFLOW                                                    NTStatus      = 0x80000005\n\tSTATUS_NO_MORE_FILES                                                      NTStatus      = 0x80000006\n\tSTATUS_WAKE_SYSTEM_DEBUGGER                                               NTStatus      = 0x80000007\n\tSTATUS_HANDLES_CLOSED                                                     NTStatus      = 0x8000000A\n\tSTATUS_NO_INHERITANCE                                                     NTStatus      = 0x8000000B\n\tSTATUS_GUID_SUBSTITUTION_MADE                                             NTStatus      = 0x8000000C\n\tSTATUS_PARTIAL_COPY                                                       NTStatus      = 0x8000000D\n\tSTATUS_DEVICE_PAPER_EMPTY                                                 NTStatus      = 0x8000000E\n\tSTATUS_DEVICE_POWERED_OFF                                                 NTStatus      = 0x8000000F\n\tSTATUS_DEVICE_OFF_LINE                                                    NTStatus      = 0x80000010\n\tSTATUS_DEVICE_BUSY                                                        NTStatus      = 0x80000011\n\tSTATUS_NO_MORE_EAS                                                        NTStatus      = 0x80000012\n\tSTATUS_INVALID_EA_NAME                                                    NTStatus      = 0x80000013\n\tSTATUS_EA_LIST_INCONSISTENT                                               NTStatus      = 0x80000014\n\tSTATUS_INVALID_EA_FLAG                                                    NTStatus      = 0x80000015\n\tSTATUS_VERIFY_REQUIRED                                                    NTStatus      = 0x80000016\n\tSTATUS_EXTRANEOUS_INFORMATION                                             NTStatus      = 0x80000017\n\tSTATUS_RXACT_COMMIT_NECESSARY                                             NTStatus      = 0x80000018\n\tSTATUS_NO_MORE_ENTRIES                                                    NTStatus      = 0x8000001A\n\tSTATUS_FILEMARK_DETECTED                                                  NTStatus      = 0x8000001B\n\tSTATUS_MEDIA_CHANGED                                                      NTStatus      = 0x8000001C\n\tSTATUS_BUS_RESET                                                          NTStatus      = 0x8000001D\n\tSTATUS_END_OF_MEDIA                                                       NTStatus      = 0x8000001E\n\tSTATUS_BEGINNING_OF_MEDIA                                                 NTStatus      = 0x8000001F\n\tSTATUS_MEDIA_CHECK                                                        NTStatus      = 0x80000020\n\tSTATUS_SETMARK_DETECTED                                                   NTStatus      = 0x80000021\n\tSTATUS_NO_DATA_DETECTED                                                   NTStatus      = 0x80000022\n\tSTATUS_REDIRECTOR_HAS_OPEN_HANDLES                                        NTStatus      = 0x80000023\n\tSTATUS_SERVER_HAS_OPEN_HANDLES                                            NTStatus      = 0x80000024\n\tSTATUS_ALREADY_DISCONNECTED                                               NTStatus      = 0x80000025\n\tSTATUS_LONGJUMP                                                           NTStatus      = 0x80000026\n\tSTATUS_CLEANER_CARTRIDGE_INSTALLED                                        NTStatus      = 0x80000027\n\tSTATUS_PLUGPLAY_QUERY_VETOED                                              NTStatus      = 0x80000028\n\tSTATUS_UNWIND_CONSOLIDATE                                                 NTStatus      = 0x80000029\n\tSTATUS_REGISTRY_HIVE_RECOVERED                                            NTStatus      = 0x8000002A\n\tSTATUS_DLL_MIGHT_BE_INSECURE                                              NTStatus      = 0x8000002B\n\tSTATUS_DLL_MIGHT_BE_INCOMPATIBLE                                          NTStatus      = 0x8000002C\n\tSTATUS_STOPPED_ON_SYMLINK                                                 NTStatus      = 0x8000002D\n\tSTATUS_CANNOT_GRANT_REQUESTED_OPLOCK                                      NTStatus      = 0x8000002E\n\tSTATUS_NO_ACE_CONDITION                                                   NTStatus      = 0x8000002F\n\tSTATUS_DEVICE_SUPPORT_IN_PROGRESS                                         NTStatus      = 0x80000030\n\tSTATUS_DEVICE_POWER_CYCLE_REQUIRED                                        NTStatus      = 0x80000031\n\tSTATUS_NO_WORK_DONE                                                       NTStatus      = 0x80000032\n\tSTATUS_CLUSTER_NODE_ALREADY_UP                                            NTStatus      = 0x80130001\n\tSTATUS_CLUSTER_NODE_ALREADY_DOWN                                          NTStatus      = 0x80130002\n\tSTATUS_CLUSTER_NETWORK_ALREADY_ONLINE                                     NTStatus      = 0x80130003\n\tSTATUS_CLUSTER_NETWORK_ALREADY_OFFLINE                                    NTStatus      = 0x80130004\n\tSTATUS_CLUSTER_NODE_ALREADY_MEMBER                                        NTStatus      = 0x80130005\n\tSTATUS_FLT_BUFFER_TOO_SMALL                                               NTStatus      = 0x801C0001\n\tSTATUS_FVE_PARTIAL_METADATA                                               NTStatus      = 0x80210001\n\tSTATUS_FVE_TRANSIENT_STATE                                                NTStatus      = 0x80210002\n\tSTATUS_CLOUD_FILE_PROPERTY_BLOB_CHECKSUM_MISMATCH                         NTStatus      = 0x8000CF00\n\tSTATUS_UNSUCCESSFUL                                                       NTStatus      = 0xC0000001\n\tSTATUS_NOT_IMPLEMENTED                                                    NTStatus      = 0xC0000002\n\tSTATUS_INVALID_INFO_CLASS                                                 NTStatus      = 0xC0000003\n\tSTATUS_INFO_LENGTH_MISMATCH                                               NTStatus      = 0xC0000004\n\tSTATUS_ACCESS_VIOLATION                                                   NTStatus      = 0xC0000005\n\tSTATUS_IN_PAGE_ERROR                                                      NTStatus      = 0xC0000006\n\tSTATUS_PAGEFILE_QUOTA                                                     NTStatus      = 0xC0000007\n\tSTATUS_INVALID_HANDLE                                                     NTStatus      = 0xC0000008\n\tSTATUS_BAD_INITIAL_STACK                                                  NTStatus      = 0xC0000009\n\tSTATUS_BAD_INITIAL_PC                                                     NTStatus      = 0xC000000A\n\tSTATUS_INVALID_CID                                                        NTStatus      = 0xC000000B\n\tSTATUS_TIMER_NOT_CANCELED                                                 NTStatus      = 0xC000000C\n\tSTATUS_INVALID_PARAMETER                                                  NTStatus      = 0xC000000D\n\tSTATUS_NO_SUCH_DEVICE                                                     NTStatus      = 0xC000000E\n\tSTATUS_NO_SUCH_FILE                                                       NTStatus      = 0xC000000F\n\tSTATUS_INVALID_DEVICE_REQUEST                                             NTStatus      = 0xC0000010\n\tSTATUS_END_OF_FILE                                                        NTStatus      = 0xC0000011\n\tSTATUS_WRONG_VOLUME                                                       NTStatus      = 0xC0000012\n\tSTATUS_NO_MEDIA_IN_DEVICE                                                 NTStatus      = 0xC0000013\n\tSTATUS_UNRECOGNIZED_MEDIA                                                 NTStatus      = 0xC0000014\n\tSTATUS_NONEXISTENT_SECTOR                                                 NTStatus      = 0xC0000015\n\tSTATUS_MORE_PROCESSING_REQUIRED                                           NTStatus      = 0xC0000016\n\tSTATUS_NO_MEMORY                                                          NTStatus      = 0xC0000017\n\tSTATUS_CONFLICTING_ADDRESSES                                              NTStatus      = 0xC0000018\n\tSTATUS_NOT_MAPPED_VIEW                                                    NTStatus      = 0xC0000019\n\tSTATUS_UNABLE_TO_FREE_VM                                                  NTStatus      = 0xC000001A\n\tSTATUS_UNABLE_TO_DELETE_SECTION                                           NTStatus      = 0xC000001B\n\tSTATUS_INVALID_SYSTEM_SERVICE                                             NTStatus      = 0xC000001C\n\tSTATUS_ILLEGAL_INSTRUCTION                                                NTStatus      = 0xC000001D\n\tSTATUS_INVALID_LOCK_SEQUENCE                                              NTStatus      = 0xC000001E\n\tSTATUS_INVALID_VIEW_SIZE                                                  NTStatus      = 0xC000001F\n\tSTATUS_INVALID_FILE_FOR_SECTION                                           NTStatus      = 0xC0000020\n\tSTATUS_ALREADY_COMMITTED                                                  NTStatus      = 0xC0000021\n\tSTATUS_ACCESS_DENIED                                                      NTStatus      = 0xC0000022\n\tSTATUS_BUFFER_TOO_SMALL                                                   NTStatus      = 0xC0000023\n\tSTATUS_OBJECT_TYPE_MISMATCH                                               NTStatus      = 0xC0000024\n\tSTATUS_NONCONTINUABLE_EXCEPTION                                           NTStatus      = 0xC0000025\n\tSTATUS_INVALID_DISPOSITION                                                NTStatus      = 0xC0000026\n\tSTATUS_UNWIND                                                             NTStatus      = 0xC0000027\n\tSTATUS_BAD_STACK                                                          NTStatus      = 0xC0000028\n\tSTATUS_INVALID_UNWIND_TARGET                                              NTStatus      = 0xC0000029\n\tSTATUS_NOT_LOCKED                                                         NTStatus      = 0xC000002A\n\tSTATUS_PARITY_ERROR                                                       NTStatus      = 0xC000002B\n\tSTATUS_UNABLE_TO_DECOMMIT_VM                                              NTStatus      = 0xC000002C\n\tSTATUS_NOT_COMMITTED                                                      NTStatus      = 0xC000002D\n\tSTATUS_INVALID_PORT_ATTRIBUTES                                            NTStatus      = 0xC000002E\n\tSTATUS_PORT_MESSAGE_TOO_LONG                                              NTStatus      = 0xC000002F\n\tSTATUS_INVALID_PARAMETER_MIX                                              NTStatus      = 0xC0000030\n\tSTATUS_INVALID_QUOTA_LOWER                                                NTStatus      = 0xC0000031\n\tSTATUS_DISK_CORRUPT_ERROR                                                 NTStatus      = 0xC0000032\n\tSTATUS_OBJECT_NAME_INVALID                                                NTStatus      = 0xC0000033\n\tSTATUS_OBJECT_NAME_NOT_FOUND                                              NTStatus      = 0xC0000034\n\tSTATUS_OBJECT_NAME_COLLISION                                              NTStatus      = 0xC0000035\n\tSTATUS_PORT_DO_NOT_DISTURB                                                NTStatus      = 0xC0000036\n\tSTATUS_PORT_DISCONNECTED                                                  NTStatus      = 0xC0000037\n\tSTATUS_DEVICE_ALREADY_ATTACHED                                            NTStatus      = 0xC0000038\n\tSTATUS_OBJECT_PATH_INVALID                                                NTStatus      = 0xC0000039\n\tSTATUS_OBJECT_PATH_NOT_FOUND                                              NTStatus      = 0xC000003A\n\tSTATUS_OBJECT_PATH_SYNTAX_BAD                                             NTStatus      = 0xC000003B\n\tSTATUS_DATA_OVERRUN                                                       NTStatus      = 0xC000003C\n\tSTATUS_DATA_LATE_ERROR                                                    NTStatus      = 0xC000003D\n\tSTATUS_DATA_ERROR                                                         NTStatus      = 0xC000003E\n\tSTATUS_CRC_ERROR                                                          NTStatus      = 0xC000003F\n\tSTATUS_SECTION_TOO_BIG                                                    NTStatus      = 0xC0000040\n\tSTATUS_PORT_CONNECTION_REFUSED                                            NTStatus      = 0xC0000041\n\tSTATUS_INVALID_PORT_HANDLE                                                NTStatus      = 0xC0000042\n\tSTATUS_SHARING_VIOLATION                                                  NTStatus      = 0xC0000043\n\tSTATUS_QUOTA_EXCEEDED                                                     NTStatus      = 0xC0000044\n\tSTATUS_INVALID_PAGE_PROTECTION                                            NTStatus      = 0xC0000045\n\tSTATUS_MUTANT_NOT_OWNED                                                   NTStatus      = 0xC0000046\n\tSTATUS_SEMAPHORE_LIMIT_EXCEEDED                                           NTStatus      = 0xC0000047\n\tSTATUS_PORT_ALREADY_SET                                                   NTStatus      = 0xC0000048\n\tSTATUS_SECTION_NOT_IMAGE                                                  NTStatus      = 0xC0000049\n\tSTATUS_SUSPEND_COUNT_EXCEEDED                                             NTStatus      = 0xC000004A\n\tSTATUS_THREAD_IS_TERMINATING                                              NTStatus      = 0xC000004B\n\tSTATUS_BAD_WORKING_SET_LIMIT                                              NTStatus      = 0xC000004C\n\tSTATUS_INCOMPATIBLE_FILE_MAP                                              NTStatus      = 0xC000004D\n\tSTATUS_SECTION_PROTECTION                                                 NTStatus      = 0xC000004E\n\tSTATUS_EAS_NOT_SUPPORTED                                                  NTStatus      = 0xC000004F\n\tSTATUS_EA_TOO_LARGE                                                       NTStatus      = 0xC0000050\n\tSTATUS_NONEXISTENT_EA_ENTRY                                               NTStatus      = 0xC0000051\n\tSTATUS_NO_EAS_ON_FILE                                                     NTStatus      = 0xC0000052\n\tSTATUS_EA_CORRUPT_ERROR                                                   NTStatus      = 0xC0000053\n\tSTATUS_FILE_LOCK_CONFLICT                                                 NTStatus      = 0xC0000054\n\tSTATUS_LOCK_NOT_GRANTED                                                   NTStatus      = 0xC0000055\n\tSTATUS_DELETE_PENDING                                                     NTStatus      = 0xC0000056\n\tSTATUS_CTL_FILE_NOT_SUPPORTED                                             NTStatus      = 0xC0000057\n\tSTATUS_UNKNOWN_REVISION                                                   NTStatus      = 0xC0000058\n\tSTATUS_REVISION_MISMATCH                                                  NTStatus      = 0xC0000059\n\tSTATUS_INVALID_OWNER                                                      NTStatus      = 0xC000005A\n\tSTATUS_INVALID_PRIMARY_GROUP                                              NTStatus      = 0xC000005B\n\tSTATUS_NO_IMPERSONATION_TOKEN                                             NTStatus      = 0xC000005C\n\tSTATUS_CANT_DISABLE_MANDATORY                                             NTStatus      = 0xC000005D\n\tSTATUS_NO_LOGON_SERVERS                                                   NTStatus      = 0xC000005E\n\tSTATUS_NO_SUCH_LOGON_SESSION                                              NTStatus      = 0xC000005F\n\tSTATUS_NO_SUCH_PRIVILEGE                                                  NTStatus      = 0xC0000060\n\tSTATUS_PRIVILEGE_NOT_HELD                                                 NTStatus      = 0xC0000061\n\tSTATUS_INVALID_ACCOUNT_NAME                                               NTStatus      = 0xC0000062\n\tSTATUS_USER_EXISTS                                                        NTStatus      = 0xC0000063\n\tSTATUS_NO_SUCH_USER                                                       NTStatus      = 0xC0000064\n\tSTATUS_GROUP_EXISTS                                                       NTStatus      = 0xC0000065\n\tSTATUS_NO_SUCH_GROUP                                                      NTStatus      = 0xC0000066\n\tSTATUS_MEMBER_IN_GROUP                                                    NTStatus      = 0xC0000067\n\tSTATUS_MEMBER_NOT_IN_GROUP                                                NTStatus      = 0xC0000068\n\tSTATUS_LAST_ADMIN                                                         NTStatus      = 0xC0000069\n\tSTATUS_WRONG_PASSWORD                                                     NTStatus      = 0xC000006A\n\tSTATUS_ILL_FORMED_PASSWORD                                                NTStatus      = 0xC000006B\n\tSTATUS_PASSWORD_RESTRICTION                                               NTStatus      = 0xC000006C\n\tSTATUS_LOGON_FAILURE                                                      NTStatus      = 0xC000006D\n\tSTATUS_ACCOUNT_RESTRICTION                                                NTStatus      = 0xC000006E\n\tSTATUS_INVALID_LOGON_HOURS                                                NTStatus      = 0xC000006F\n\tSTATUS_INVALID_WORKSTATION                                                NTStatus      = 0xC0000070\n\tSTATUS_PASSWORD_EXPIRED                                                   NTStatus      = 0xC0000071\n\tSTATUS_ACCOUNT_DISABLED                                                   NTStatus      = 0xC0000072\n\tSTATUS_NONE_MAPPED                                                        NTStatus      = 0xC0000073\n\tSTATUS_TOO_MANY_LUIDS_REQUESTED                                           NTStatus      = 0xC0000074\n\tSTATUS_LUIDS_EXHAUSTED                                                    NTStatus      = 0xC0000075\n\tSTATUS_INVALID_SUB_AUTHORITY                                              NTStatus      = 0xC0000076\n\tSTATUS_INVALID_ACL                                                        NTStatus      = 0xC0000077\n\tSTATUS_INVALID_SID                                                        NTStatus      = 0xC0000078\n\tSTATUS_INVALID_SECURITY_DESCR                                             NTStatus      = 0xC0000079\n\tSTATUS_PROCEDURE_NOT_FOUND                                                NTStatus      = 0xC000007A\n\tSTATUS_INVALID_IMAGE_FORMAT                                               NTStatus      = 0xC000007B\n\tSTATUS_NO_TOKEN                                                           NTStatus      = 0xC000007C\n\tSTATUS_BAD_INHERITANCE_ACL                                                NTStatus      = 0xC000007D\n\tSTATUS_RANGE_NOT_LOCKED                                                   NTStatus      = 0xC000007E\n\tSTATUS_DISK_FULL                                                          NTStatus      = 0xC000007F\n\tSTATUS_SERVER_DISABLED                                                    NTStatus      = 0xC0000080\n\tSTATUS_SERVER_NOT_DISABLED                                                NTStatus      = 0xC0000081\n\tSTATUS_TOO_MANY_GUIDS_REQUESTED                                           NTStatus      = 0xC0000082\n\tSTATUS_GUIDS_EXHAUSTED                                                    NTStatus      = 0xC0000083\n\tSTATUS_INVALID_ID_AUTHORITY                                               NTStatus      = 0xC0000084\n\tSTATUS_AGENTS_EXHAUSTED                                                   NTStatus      = 0xC0000085\n\tSTATUS_INVALID_VOLUME_LABEL                                               NTStatus      = 0xC0000086\n\tSTATUS_SECTION_NOT_EXTENDED                                               NTStatus      = 0xC0000087\n\tSTATUS_NOT_MAPPED_DATA                                                    NTStatus      = 0xC0000088\n\tSTATUS_RESOURCE_DATA_NOT_FOUND                                            NTStatus      = 0xC0000089\n\tSTATUS_RESOURCE_TYPE_NOT_FOUND                                            NTStatus      = 0xC000008A\n\tSTATUS_RESOURCE_NAME_NOT_FOUND                                            NTStatus      = 0xC000008B\n\tSTATUS_ARRAY_BOUNDS_EXCEEDED                                              NTStatus      = 0xC000008C\n\tSTATUS_FLOAT_DENORMAL_OPERAND                                             NTStatus      = 0xC000008D\n\tSTATUS_FLOAT_DIVIDE_BY_ZERO                                               NTStatus      = 0xC000008E\n\tSTATUS_FLOAT_INEXACT_RESULT                                               NTStatus      = 0xC000008F\n\tSTATUS_FLOAT_INVALID_OPERATION                                            NTStatus      = 0xC0000090\n\tSTATUS_FLOAT_OVERFLOW                                                     NTStatus      = 0xC0000091\n\tSTATUS_FLOAT_STACK_CHECK                                                  NTStatus      = 0xC0000092\n\tSTATUS_FLOAT_UNDERFLOW                                                    NTStatus      = 0xC0000093\n\tSTATUS_INTEGER_DIVIDE_BY_ZERO                                             NTStatus      = 0xC0000094\n\tSTATUS_INTEGER_OVERFLOW                                                   NTStatus      = 0xC0000095\n\tSTATUS_PRIVILEGED_INSTRUCTION                                             NTStatus      = 0xC0000096\n\tSTATUS_TOO_MANY_PAGING_FILES                                              NTStatus      = 0xC0000097\n\tSTATUS_FILE_INVALID                                                       NTStatus      = 0xC0000098\n\tSTATUS_ALLOTTED_SPACE_EXCEEDED                                            NTStatus      = 0xC0000099\n\tSTATUS_INSUFFICIENT_RESOURCES                                             NTStatus      = 0xC000009A\n\tSTATUS_DFS_EXIT_PATH_FOUND                                                NTStatus      = 0xC000009B\n\tSTATUS_DEVICE_DATA_ERROR                                                  NTStatus      = 0xC000009C\n\tSTATUS_DEVICE_NOT_CONNECTED                                               NTStatus      = 0xC000009D\n\tSTATUS_DEVICE_POWER_FAILURE                                               NTStatus      = 0xC000009E\n\tSTATUS_FREE_VM_NOT_AT_BASE                                                NTStatus      = 0xC000009F\n\tSTATUS_MEMORY_NOT_ALLOCATED                                               NTStatus      = 0xC00000A0\n\tSTATUS_WORKING_SET_QUOTA                                                  NTStatus      = 0xC00000A1\n\tSTATUS_MEDIA_WRITE_PROTECTED                                              NTStatus      = 0xC00000A2\n\tSTATUS_DEVICE_NOT_READY                                                   NTStatus      = 0xC00000A3\n\tSTATUS_INVALID_GROUP_ATTRIBUTES                                           NTStatus      = 0xC00000A4\n\tSTATUS_BAD_IMPERSONATION_LEVEL                                            NTStatus      = 0xC00000A5\n\tSTATUS_CANT_OPEN_ANONYMOUS                                                NTStatus      = 0xC00000A6\n\tSTATUS_BAD_VALIDATION_CLASS                                               NTStatus      = 0xC00000A7\n\tSTATUS_BAD_TOKEN_TYPE                                                     NTStatus      = 0xC00000A8\n\tSTATUS_BAD_MASTER_BOOT_RECORD                                             NTStatus      = 0xC00000A9\n\tSTATUS_INSTRUCTION_MISALIGNMENT                                           NTStatus      = 0xC00000AA\n\tSTATUS_INSTANCE_NOT_AVAILABLE                                             NTStatus      = 0xC00000AB\n\tSTATUS_PIPE_NOT_AVAILABLE                                                 NTStatus      = 0xC00000AC\n\tSTATUS_INVALID_PIPE_STATE                                                 NTStatus      = 0xC00000AD\n\tSTATUS_PIPE_BUSY                                                          NTStatus      = 0xC00000AE\n\tSTATUS_ILLEGAL_FUNCTION                                                   NTStatus      = 0xC00000AF\n\tSTATUS_PIPE_DISCONNECTED                                                  NTStatus      = 0xC00000B0\n\tSTATUS_PIPE_CLOSING                                                       NTStatus      = 0xC00000B1\n\tSTATUS_PIPE_CONNECTED                                                     NTStatus      = 0xC00000B2\n\tSTATUS_PIPE_LISTENING                                                     NTStatus      = 0xC00000B3\n\tSTATUS_INVALID_READ_MODE                                                  NTStatus      = 0xC00000B4\n\tSTATUS_IO_TIMEOUT                                                         NTStatus      = 0xC00000B5\n\tSTATUS_FILE_FORCED_CLOSED                                                 NTStatus      = 0xC00000B6\n\tSTATUS_PROFILING_NOT_STARTED                                              NTStatus      = 0xC00000B7\n\tSTATUS_PROFILING_NOT_STOPPED                                              NTStatus      = 0xC00000B8\n\tSTATUS_COULD_NOT_INTERPRET                                                NTStatus      = 0xC00000B9\n\tSTATUS_FILE_IS_A_DIRECTORY                                                NTStatus      = 0xC00000BA\n\tSTATUS_NOT_SUPPORTED                                                      NTStatus      = 0xC00000BB\n\tSTATUS_REMOTE_NOT_LISTENING                                               NTStatus      = 0xC00000BC\n\tSTATUS_DUPLICATE_NAME                                                     NTStatus      = 0xC00000BD\n\tSTATUS_BAD_NETWORK_PATH                                                   NTStatus      = 0xC00000BE\n\tSTATUS_NETWORK_BUSY                                                       NTStatus      = 0xC00000BF\n\tSTATUS_DEVICE_DOES_NOT_EXIST                                              NTStatus      = 0xC00000C0\n\tSTATUS_TOO_MANY_COMMANDS                                                  NTStatus      = 0xC00000C1\n\tSTATUS_ADAPTER_HARDWARE_ERROR                                             NTStatus      = 0xC00000C2\n\tSTATUS_INVALID_NETWORK_RESPONSE                                           NTStatus      = 0xC00000C3\n\tSTATUS_UNEXPECTED_NETWORK_ERROR                                           NTStatus      = 0xC00000C4\n\tSTATUS_BAD_REMOTE_ADAPTER                                                 NTStatus      = 0xC00000C5\n\tSTATUS_PRINT_QUEUE_FULL                                                   NTStatus      = 0xC00000C6\n\tSTATUS_NO_SPOOL_SPACE                                                     NTStatus      = 0xC00000C7\n\tSTATUS_PRINT_CANCELLED                                                    NTStatus      = 0xC00000C8\n\tSTATUS_NETWORK_NAME_DELETED                                               NTStatus      = 0xC00000C9\n\tSTATUS_NETWORK_ACCESS_DENIED                                              NTStatus      = 0xC00000CA\n\tSTATUS_BAD_DEVICE_TYPE                                                    NTStatus      = 0xC00000CB\n\tSTATUS_BAD_NETWORK_NAME                                                   NTStatus      = 0xC00000CC\n\tSTATUS_TOO_MANY_NAMES                                                     NTStatus      = 0xC00000CD\n\tSTATUS_TOO_MANY_SESSIONS                                                  NTStatus      = 0xC00000CE\n\tSTATUS_SHARING_PAUSED                                                     NTStatus      = 0xC00000CF\n\tSTATUS_REQUEST_NOT_ACCEPTED                                               NTStatus      = 0xC00000D0\n\tSTATUS_REDIRECTOR_PAUSED                                                  NTStatus      = 0xC00000D1\n\tSTATUS_NET_WRITE_FAULT                                                    NTStatus      = 0xC00000D2\n\tSTATUS_PROFILING_AT_LIMIT                                                 NTStatus      = 0xC00000D3\n\tSTATUS_NOT_SAME_DEVICE                                                    NTStatus      = 0xC00000D4\n\tSTATUS_FILE_RENAMED                                                       NTStatus      = 0xC00000D5\n\tSTATUS_VIRTUAL_CIRCUIT_CLOSED                                             NTStatus      = 0xC00000D6\n\tSTATUS_NO_SECURITY_ON_OBJECT                                              NTStatus      = 0xC00000D7\n\tSTATUS_CANT_WAIT                                                          NTStatus      = 0xC00000D8\n\tSTATUS_PIPE_EMPTY                                                         NTStatus      = 0xC00000D9\n\tSTATUS_CANT_ACCESS_DOMAIN_INFO                                            NTStatus      = 0xC00000DA\n\tSTATUS_CANT_TERMINATE_SELF                                                NTStatus      = 0xC00000DB\n\tSTATUS_INVALID_SERVER_STATE                                               NTStatus      = 0xC00000DC\n\tSTATUS_INVALID_DOMAIN_STATE                                               NTStatus      = 0xC00000DD\n\tSTATUS_INVALID_DOMAIN_ROLE                                                NTStatus      = 0xC00000DE\n\tSTATUS_NO_SUCH_DOMAIN                                                     NTStatus      = 0xC00000DF\n\tSTATUS_DOMAIN_EXISTS                                                      NTStatus      = 0xC00000E0\n\tSTATUS_DOMAIN_LIMIT_EXCEEDED                                              NTStatus      = 0xC00000E1\n\tSTATUS_OPLOCK_NOT_GRANTED                                                 NTStatus      = 0xC00000E2\n\tSTATUS_INVALID_OPLOCK_PROTOCOL                                            NTStatus      = 0xC00000E3\n\tSTATUS_INTERNAL_DB_CORRUPTION                                             NTStatus      = 0xC00000E4\n\tSTATUS_INTERNAL_ERROR                                                     NTStatus      = 0xC00000E5\n\tSTATUS_GENERIC_NOT_MAPPED                                                 NTStatus      = 0xC00000E6\n\tSTATUS_BAD_DESCRIPTOR_FORMAT                                              NTStatus      = 0xC00000E7\n\tSTATUS_INVALID_USER_BUFFER                                                NTStatus      = 0xC00000E8\n\tSTATUS_UNEXPECTED_IO_ERROR                                                NTStatus      = 0xC00000E9\n\tSTATUS_UNEXPECTED_MM_CREATE_ERR                                           NTStatus      = 0xC00000EA\n\tSTATUS_UNEXPECTED_MM_MAP_ERROR                                            NTStatus      = 0xC00000EB\n\tSTATUS_UNEXPECTED_MM_EXTEND_ERR                                           NTStatus      = 0xC00000EC\n\tSTATUS_NOT_LOGON_PROCESS                                                  NTStatus      = 0xC00000ED\n\tSTATUS_LOGON_SESSION_EXISTS                                               NTStatus      = 0xC00000EE\n\tSTATUS_INVALID_PARAMETER_1                                                NTStatus      = 0xC00000EF\n\tSTATUS_INVALID_PARAMETER_2                                                NTStatus      = 0xC00000F0\n\tSTATUS_INVALID_PARAMETER_3                                                NTStatus      = 0xC00000F1\n\tSTATUS_INVALID_PARAMETER_4                                                NTStatus      = 0xC00000F2\n\tSTATUS_INVALID_PARAMETER_5                                                NTStatus      = 0xC00000F3\n\tSTATUS_INVALID_PARAMETER_6                                                NTStatus      = 0xC00000F4\n\tSTATUS_INVALID_PARAMETER_7                                                NTStatus      = 0xC00000F5\n\tSTATUS_INVALID_PARAMETER_8                                                NTStatus      = 0xC00000F6\n\tSTATUS_INVALID_PARAMETER_9                                                NTStatus      = 0xC00000F7\n\tSTATUS_INVALID_PARAMETER_10                                               NTStatus      = 0xC00000F8\n\tSTATUS_INVALID_PARAMETER_11                                               NTStatus      = 0xC00000F9\n\tSTATUS_INVALID_PARAMETER_12                                               NTStatus      = 0xC00000FA\n\tSTATUS_REDIRECTOR_NOT_STARTED                                             NTStatus      = 0xC00000FB\n\tSTATUS_REDIRECTOR_STARTED                                                 NTStatus      = 0xC00000FC\n\tSTATUS_STACK_OVERFLOW                                                     NTStatus      = 0xC00000FD\n\tSTATUS_NO_SUCH_PACKAGE                                                    NTStatus      = 0xC00000FE\n\tSTATUS_BAD_FUNCTION_TABLE                                                 NTStatus      = 0xC00000FF\n\tSTATUS_VARIABLE_NOT_FOUND                                                 NTStatus      = 0xC0000100\n\tSTATUS_DIRECTORY_NOT_EMPTY                                                NTStatus      = 0xC0000101\n\tSTATUS_FILE_CORRUPT_ERROR                                                 NTStatus      = 0xC0000102\n\tSTATUS_NOT_A_DIRECTORY                                                    NTStatus      = 0xC0000103\n\tSTATUS_BAD_LOGON_SESSION_STATE                                            NTStatus      = 0xC0000104\n\tSTATUS_LOGON_SESSION_COLLISION                                            NTStatus      = 0xC0000105\n\tSTATUS_NAME_TOO_LONG                                                      NTStatus      = 0xC0000106\n\tSTATUS_FILES_OPEN                                                         NTStatus      = 0xC0000107\n\tSTATUS_CONNECTION_IN_USE                                                  NTStatus      = 0xC0000108\n\tSTATUS_MESSAGE_NOT_FOUND                                                  NTStatus      = 0xC0000109\n\tSTATUS_PROCESS_IS_TERMINATING                                             NTStatus      = 0xC000010A\n\tSTATUS_INVALID_LOGON_TYPE                                                 NTStatus      = 0xC000010B\n\tSTATUS_NO_GUID_TRANSLATION                                                NTStatus      = 0xC000010C\n\tSTATUS_CANNOT_IMPERSONATE                                                 NTStatus      = 0xC000010D\n\tSTATUS_IMAGE_ALREADY_LOADED                                               NTStatus      = 0xC000010E\n\tSTATUS_ABIOS_NOT_PRESENT                                                  NTStatus      = 0xC000010F\n\tSTATUS_ABIOS_LID_NOT_EXIST                                                NTStatus      = 0xC0000110\n\tSTATUS_ABIOS_LID_ALREADY_OWNED                                            NTStatus      = 0xC0000111\n\tSTATUS_ABIOS_NOT_LID_OWNER                                                NTStatus      = 0xC0000112\n\tSTATUS_ABIOS_INVALID_COMMAND                                              NTStatus      = 0xC0000113\n\tSTATUS_ABIOS_INVALID_LID                                                  NTStatus      = 0xC0000114\n\tSTATUS_ABIOS_SELECTOR_NOT_AVAILABLE                                       NTStatus      = 0xC0000115\n\tSTATUS_ABIOS_INVALID_SELECTOR                                             NTStatus      = 0xC0000116\n\tSTATUS_NO_LDT                                                             NTStatus      = 0xC0000117\n\tSTATUS_INVALID_LDT_SIZE                                                   NTStatus      = 0xC0000118\n\tSTATUS_INVALID_LDT_OFFSET                                                 NTStatus      = 0xC0000119\n\tSTATUS_INVALID_LDT_DESCRIPTOR                                             NTStatus      = 0xC000011A\n\tSTATUS_INVALID_IMAGE_NE_FORMAT                                            NTStatus      = 0xC000011B\n\tSTATUS_RXACT_INVALID_STATE                                                NTStatus      = 0xC000011C\n\tSTATUS_RXACT_COMMIT_FAILURE                                               NTStatus      = 0xC000011D\n\tSTATUS_MAPPED_FILE_SIZE_ZERO                                              NTStatus      = 0xC000011E\n\tSTATUS_TOO_MANY_OPENED_FILES                                              NTStatus      = 0xC000011F\n\tSTATUS_CANCELLED                                                          NTStatus      = 0xC0000120\n\tSTATUS_CANNOT_DELETE                                                      NTStatus      = 0xC0000121\n\tSTATUS_INVALID_COMPUTER_NAME                                              NTStatus      = 0xC0000122\n\tSTATUS_FILE_DELETED                                                       NTStatus      = 0xC0000123\n\tSTATUS_SPECIAL_ACCOUNT                                                    NTStatus      = 0xC0000124\n\tSTATUS_SPECIAL_GROUP                                                      NTStatus      = 0xC0000125\n\tSTATUS_SPECIAL_USER                                                       NTStatus      = 0xC0000126\n\tSTATUS_MEMBERS_PRIMARY_GROUP                                              NTStatus      = 0xC0000127\n\tSTATUS_FILE_CLOSED                                                        NTStatus      = 0xC0000128\n\tSTATUS_TOO_MANY_THREADS                                                   NTStatus      = 0xC0000129\n\tSTATUS_THREAD_NOT_IN_PROCESS                                              NTStatus      = 0xC000012A\n\tSTATUS_TOKEN_ALREADY_IN_USE                                               NTStatus      = 0xC000012B\n\tSTATUS_PAGEFILE_QUOTA_EXCEEDED                                            NTStatus      = 0xC000012C\n\tSTATUS_COMMITMENT_LIMIT                                                   NTStatus      = 0xC000012D\n\tSTATUS_INVALID_IMAGE_LE_FORMAT                                            NTStatus      = 0xC000012E\n\tSTATUS_INVALID_IMAGE_NOT_MZ                                               NTStatus      = 0xC000012F\n\tSTATUS_INVALID_IMAGE_PROTECT                                              NTStatus      = 0xC0000130\n\tSTATUS_INVALID_IMAGE_WIN_16                                               NTStatus      = 0xC0000131\n\tSTATUS_LOGON_SERVER_CONFLICT                                              NTStatus      = 0xC0000132\n\tSTATUS_TIME_DIFFERENCE_AT_DC                                              NTStatus      = 0xC0000133\n\tSTATUS_SYNCHRONIZATION_REQUIRED                                           NTStatus      = 0xC0000134\n\tSTATUS_DLL_NOT_FOUND                                                      NTStatus      = 0xC0000135\n\tSTATUS_OPEN_FAILED                                                        NTStatus      = 0xC0000136\n\tSTATUS_IO_PRIVILEGE_FAILED                                                NTStatus      = 0xC0000137\n\tSTATUS_ORDINAL_NOT_FOUND                                                  NTStatus      = 0xC0000138\n\tSTATUS_ENTRYPOINT_NOT_FOUND                                               NTStatus      = 0xC0000139\n\tSTATUS_CONTROL_C_EXIT                                                     NTStatus      = 0xC000013A\n\tSTATUS_LOCAL_DISCONNECT                                                   NTStatus      = 0xC000013B\n\tSTATUS_REMOTE_DISCONNECT                                                  NTStatus      = 0xC000013C\n\tSTATUS_REMOTE_RESOURCES                                                   NTStatus      = 0xC000013D\n\tSTATUS_LINK_FAILED                                                        NTStatus      = 0xC000013E\n\tSTATUS_LINK_TIMEOUT                                                       NTStatus      = 0xC000013F\n\tSTATUS_INVALID_CONNECTION                                                 NTStatus      = 0xC0000140\n\tSTATUS_INVALID_ADDRESS                                                    NTStatus      = 0xC0000141\n\tSTATUS_DLL_INIT_FAILED                                                    NTStatus      = 0xC0000142\n\tSTATUS_MISSING_SYSTEMFILE                                                 NTStatus      = 0xC0000143\n\tSTATUS_UNHANDLED_EXCEPTION                                                NTStatus      = 0xC0000144\n\tSTATUS_APP_INIT_FAILURE                                                   NTStatus      = 0xC0000145\n\tSTATUS_PAGEFILE_CREATE_FAILED                                             NTStatus      = 0xC0000146\n\tSTATUS_NO_PAGEFILE                                                        NTStatus      = 0xC0000147\n\tSTATUS_INVALID_LEVEL                                                      NTStatus      = 0xC0000148\n\tSTATUS_WRONG_PASSWORD_CORE                                                NTStatus      = 0xC0000149\n\tSTATUS_ILLEGAL_FLOAT_CONTEXT                                              NTStatus      = 0xC000014A\n\tSTATUS_PIPE_BROKEN                                                        NTStatus      = 0xC000014B\n\tSTATUS_REGISTRY_CORRUPT                                                   NTStatus      = 0xC000014C\n\tSTATUS_REGISTRY_IO_FAILED                                                 NTStatus      = 0xC000014D\n\tSTATUS_NO_EVENT_PAIR                                                      NTStatus      = 0xC000014E\n\tSTATUS_UNRECOGNIZED_VOLUME                                                NTStatus      = 0xC000014F\n\tSTATUS_SERIAL_NO_DEVICE_INITED                                            NTStatus      = 0xC0000150\n\tSTATUS_NO_SUCH_ALIAS                                                      NTStatus      = 0xC0000151\n\tSTATUS_MEMBER_NOT_IN_ALIAS                                                NTStatus      = 0xC0000152\n\tSTATUS_MEMBER_IN_ALIAS                                                    NTStatus      = 0xC0000153\n\tSTATUS_ALIAS_EXISTS                                                       NTStatus      = 0xC0000154\n\tSTATUS_LOGON_NOT_GRANTED                                                  NTStatus      = 0xC0000155\n\tSTATUS_TOO_MANY_SECRETS                                                   NTStatus      = 0xC0000156\n\tSTATUS_SECRET_TOO_LONG                                                    NTStatus      = 0xC0000157\n\tSTATUS_INTERNAL_DB_ERROR                                                  NTStatus      = 0xC0000158\n\tSTATUS_FULLSCREEN_MODE                                                    NTStatus      = 0xC0000159\n\tSTATUS_TOO_MANY_CONTEXT_IDS                                               NTStatus      = 0xC000015A\n\tSTATUS_LOGON_TYPE_NOT_GRANTED                                             NTStatus      = 0xC000015B\n\tSTATUS_NOT_REGISTRY_FILE                                                  NTStatus      = 0xC000015C\n\tSTATUS_NT_CROSS_ENCRYPTION_REQUIRED                                       NTStatus      = 0xC000015D\n\tSTATUS_DOMAIN_CTRLR_CONFIG_ERROR                                          NTStatus      = 0xC000015E\n\tSTATUS_FT_MISSING_MEMBER                                                  NTStatus      = 0xC000015F\n\tSTATUS_ILL_FORMED_SERVICE_ENTRY                                           NTStatus      = 0xC0000160\n\tSTATUS_ILLEGAL_CHARACTER                                                  NTStatus      = 0xC0000161\n\tSTATUS_UNMAPPABLE_CHARACTER                                               NTStatus      = 0xC0000162\n\tSTATUS_UNDEFINED_CHARACTER                                                NTStatus      = 0xC0000163\n\tSTATUS_FLOPPY_VOLUME                                                      NTStatus      = 0xC0000164\n\tSTATUS_FLOPPY_ID_MARK_NOT_FOUND                                           NTStatus      = 0xC0000165\n\tSTATUS_FLOPPY_WRONG_CYLINDER                                              NTStatus      = 0xC0000166\n\tSTATUS_FLOPPY_UNKNOWN_ERROR                                               NTStatus      = 0xC0000167\n\tSTATUS_FLOPPY_BAD_REGISTERS                                               NTStatus      = 0xC0000168\n\tSTATUS_DISK_RECALIBRATE_FAILED                                            NTStatus      = 0xC0000169\n\tSTATUS_DISK_OPERATION_FAILED                                              NTStatus      = 0xC000016A\n\tSTATUS_DISK_RESET_FAILED                                                  NTStatus      = 0xC000016B\n\tSTATUS_SHARED_IRQ_BUSY                                                    NTStatus      = 0xC000016C\n\tSTATUS_FT_ORPHANING                                                       NTStatus      = 0xC000016D\n\tSTATUS_BIOS_FAILED_TO_CONNECT_INTERRUPT                                   NTStatus      = 0xC000016E\n\tSTATUS_PARTITION_FAILURE                                                  NTStatus      = 0xC0000172\n\tSTATUS_INVALID_BLOCK_LENGTH                                               NTStatus      = 0xC0000173\n\tSTATUS_DEVICE_NOT_PARTITIONED                                             NTStatus      = 0xC0000174\n\tSTATUS_UNABLE_TO_LOCK_MEDIA                                               NTStatus      = 0xC0000175\n\tSTATUS_UNABLE_TO_UNLOAD_MEDIA                                             NTStatus      = 0xC0000176\n\tSTATUS_EOM_OVERFLOW                                                       NTStatus      = 0xC0000177\n\tSTATUS_NO_MEDIA                                                           NTStatus      = 0xC0000178\n\tSTATUS_NO_SUCH_MEMBER                                                     NTStatus      = 0xC000017A\n\tSTATUS_INVALID_MEMBER                                                     NTStatus      = 0xC000017B\n\tSTATUS_KEY_DELETED                                                        NTStatus      = 0xC000017C\n\tSTATUS_NO_LOG_SPACE                                                       NTStatus      = 0xC000017D\n\tSTATUS_TOO_MANY_SIDS                                                      NTStatus      = 0xC000017E\n\tSTATUS_LM_CROSS_ENCRYPTION_REQUIRED                                       NTStatus      = 0xC000017F\n\tSTATUS_KEY_HAS_CHILDREN                                                   NTStatus      = 0xC0000180\n\tSTATUS_CHILD_MUST_BE_VOLATILE                                             NTStatus      = 0xC0000181\n\tSTATUS_DEVICE_CONFIGURATION_ERROR                                         NTStatus      = 0xC0000182\n\tSTATUS_DRIVER_INTERNAL_ERROR                                              NTStatus      = 0xC0000183\n\tSTATUS_INVALID_DEVICE_STATE                                               NTStatus      = 0xC0000184\n\tSTATUS_IO_DEVICE_ERROR                                                    NTStatus      = 0xC0000185\n\tSTATUS_DEVICE_PROTOCOL_ERROR                                              NTStatus      = 0xC0000186\n\tSTATUS_BACKUP_CONTROLLER                                                  NTStatus      = 0xC0000187\n\tSTATUS_LOG_FILE_FULL                                                      NTStatus      = 0xC0000188\n\tSTATUS_TOO_LATE                                                           NTStatus      = 0xC0000189\n\tSTATUS_NO_TRUST_LSA_SECRET                                                NTStatus      = 0xC000018A\n\tSTATUS_NO_TRUST_SAM_ACCOUNT                                               NTStatus      = 0xC000018B\n\tSTATUS_TRUSTED_DOMAIN_FAILURE                                             NTStatus      = 0xC000018C\n\tSTATUS_TRUSTED_RELATIONSHIP_FAILURE                                       NTStatus      = 0xC000018D\n\tSTATUS_EVENTLOG_FILE_CORRUPT                                              NTStatus      = 0xC000018E\n\tSTATUS_EVENTLOG_CANT_START                                                NTStatus      = 0xC000018F\n\tSTATUS_TRUST_FAILURE                                                      NTStatus      = 0xC0000190\n\tSTATUS_MUTANT_LIMIT_EXCEEDED                                              NTStatus      = 0xC0000191\n\tSTATUS_NETLOGON_NOT_STARTED                                               NTStatus      = 0xC0000192\n\tSTATUS_ACCOUNT_EXPIRED                                                    NTStatus      = 0xC0000193\n\tSTATUS_POSSIBLE_DEADLOCK                                                  NTStatus      = 0xC0000194\n\tSTATUS_NETWORK_CREDENTIAL_CONFLICT                                        NTStatus      = 0xC0000195\n\tSTATUS_REMOTE_SESSION_LIMIT                                               NTStatus      = 0xC0000196\n\tSTATUS_EVENTLOG_FILE_CHANGED                                              NTStatus      = 0xC0000197\n\tSTATUS_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT                                  NTStatus      = 0xC0000198\n\tSTATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT                                  NTStatus      = 0xC0000199\n\tSTATUS_NOLOGON_SERVER_TRUST_ACCOUNT                                       NTStatus      = 0xC000019A\n\tSTATUS_DOMAIN_TRUST_INCONSISTENT                                          NTStatus      = 0xC000019B\n\tSTATUS_FS_DRIVER_REQUIRED                                                 NTStatus      = 0xC000019C\n\tSTATUS_IMAGE_ALREADY_LOADED_AS_DLL                                        NTStatus      = 0xC000019D\n\tSTATUS_INCOMPATIBLE_WITH_GLOBAL_SHORT_NAME_REGISTRY_SETTING               NTStatus      = 0xC000019E\n\tSTATUS_SHORT_NAMES_NOT_ENABLED_ON_VOLUME                                  NTStatus      = 0xC000019F\n\tSTATUS_SECURITY_STREAM_IS_INCONSISTENT                                    NTStatus      = 0xC00001A0\n\tSTATUS_INVALID_LOCK_RANGE                                                 NTStatus      = 0xC00001A1\n\tSTATUS_INVALID_ACE_CONDITION                                              NTStatus      = 0xC00001A2\n\tSTATUS_IMAGE_SUBSYSTEM_NOT_PRESENT                                        NTStatus      = 0xC00001A3\n\tSTATUS_NOTIFICATION_GUID_ALREADY_DEFINED                                  NTStatus      = 0xC00001A4\n\tSTATUS_INVALID_EXCEPTION_HANDLER                                          NTStatus      = 0xC00001A5\n\tSTATUS_DUPLICATE_PRIVILEGES                                               NTStatus      = 0xC00001A6\n\tSTATUS_NOT_ALLOWED_ON_SYSTEM_FILE                                         NTStatus      = 0xC00001A7\n\tSTATUS_REPAIR_NEEDED                                                      NTStatus      = 0xC00001A8\n\tSTATUS_QUOTA_NOT_ENABLED                                                  NTStatus      = 0xC00001A9\n\tSTATUS_NO_APPLICATION_PACKAGE                                             NTStatus      = 0xC00001AA\n\tSTATUS_FILE_METADATA_OPTIMIZATION_IN_PROGRESS                             NTStatus      = 0xC00001AB\n\tSTATUS_NOT_SAME_OBJECT                                                    NTStatus      = 0xC00001AC\n\tSTATUS_FATAL_MEMORY_EXHAUSTION                                            NTStatus      = 0xC00001AD\n\tSTATUS_ERROR_PROCESS_NOT_IN_JOB                                           NTStatus      = 0xC00001AE\n\tSTATUS_CPU_SET_INVALID                                                    NTStatus      = 0xC00001AF\n\tSTATUS_IO_DEVICE_INVALID_DATA                                             NTStatus      = 0xC00001B0\n\tSTATUS_IO_UNALIGNED_WRITE                                                 NTStatus      = 0xC00001B1\n\tSTATUS_NETWORK_OPEN_RESTRICTION                                           NTStatus      = 0xC0000201\n\tSTATUS_NO_USER_SESSION_KEY                                                NTStatus      = 0xC0000202\n\tSTATUS_USER_SESSION_DELETED                                               NTStatus      = 0xC0000203\n\tSTATUS_RESOURCE_LANG_NOT_FOUND                                            NTStatus      = 0xC0000204\n\tSTATUS_INSUFF_SERVER_RESOURCES                                            NTStatus      = 0xC0000205\n\tSTATUS_INVALID_BUFFER_SIZE                                                NTStatus      = 0xC0000206\n\tSTATUS_INVALID_ADDRESS_COMPONENT                                          NTStatus      = 0xC0000207\n\tSTATUS_INVALID_ADDRESS_WILDCARD                                           NTStatus      = 0xC0000208\n\tSTATUS_TOO_MANY_ADDRESSES                                                 NTStatus      = 0xC0000209\n\tSTATUS_ADDRESS_ALREADY_EXISTS                                             NTStatus      = 0xC000020A\n\tSTATUS_ADDRESS_CLOSED                                                     NTStatus      = 0xC000020B\n\tSTATUS_CONNECTION_DISCONNECTED                                            NTStatus      = 0xC000020C\n\tSTATUS_CONNECTION_RESET                                                   NTStatus      = 0xC000020D\n\tSTATUS_TOO_MANY_NODES                                                     NTStatus      = 0xC000020E\n\tSTATUS_TRANSACTION_ABORTED                                                NTStatus      = 0xC000020F\n\tSTATUS_TRANSACTION_TIMED_OUT                                              NTStatus      = 0xC0000210\n\tSTATUS_TRANSACTION_NO_RELEASE                                             NTStatus      = 0xC0000211\n\tSTATUS_TRANSACTION_NO_MATCH                                               NTStatus      = 0xC0000212\n\tSTATUS_TRANSACTION_RESPONDED                                              NTStatus      = 0xC0000213\n\tSTATUS_TRANSACTION_INVALID_ID                                             NTStatus      = 0xC0000214\n\tSTATUS_TRANSACTION_INVALID_TYPE                                           NTStatus      = 0xC0000215\n\tSTATUS_NOT_SERVER_SESSION                                                 NTStatus      = 0xC0000216\n\tSTATUS_NOT_CLIENT_SESSION                                                 NTStatus      = 0xC0000217\n\tSTATUS_CANNOT_LOAD_REGISTRY_FILE                                          NTStatus      = 0xC0000218\n\tSTATUS_DEBUG_ATTACH_FAILED                                                NTStatus      = 0xC0000219\n\tSTATUS_SYSTEM_PROCESS_TERMINATED                                          NTStatus      = 0xC000021A\n\tSTATUS_DATA_NOT_ACCEPTED                                                  NTStatus      = 0xC000021B\n\tSTATUS_NO_BROWSER_SERVERS_FOUND                                           NTStatus      = 0xC000021C\n\tSTATUS_VDM_HARD_ERROR                                                     NTStatus      = 0xC000021D\n\tSTATUS_DRIVER_CANCEL_TIMEOUT                                              NTStatus      = 0xC000021E\n\tSTATUS_REPLY_MESSAGE_MISMATCH                                             NTStatus      = 0xC000021F\n\tSTATUS_MAPPED_ALIGNMENT                                                   NTStatus      = 0xC0000220\n\tSTATUS_IMAGE_CHECKSUM_MISMATCH                                            NTStatus      = 0xC0000221\n\tSTATUS_LOST_WRITEBEHIND_DATA                                              NTStatus      = 0xC0000222\n\tSTATUS_CLIENT_SERVER_PARAMETERS_INVALID                                   NTStatus      = 0xC0000223\n\tSTATUS_PASSWORD_MUST_CHANGE                                               NTStatus      = 0xC0000224\n\tSTATUS_NOT_FOUND                                                          NTStatus      = 0xC0000225\n\tSTATUS_NOT_TINY_STREAM                                                    NTStatus      = 0xC0000226\n\tSTATUS_RECOVERY_FAILURE                                                   NTStatus      = 0xC0000227\n\tSTATUS_STACK_OVERFLOW_READ                                                NTStatus      = 0xC0000228\n\tSTATUS_FAIL_CHECK                                                         NTStatus      = 0xC0000229\n\tSTATUS_DUPLICATE_OBJECTID                                                 NTStatus      = 0xC000022A\n\tSTATUS_OBJECTID_EXISTS                                                    NTStatus      = 0xC000022B\n\tSTATUS_CONVERT_TO_LARGE                                                   NTStatus      = 0xC000022C\n\tSTATUS_RETRY                                                              NTStatus      = 0xC000022D\n\tSTATUS_FOUND_OUT_OF_SCOPE                                                 NTStatus      = 0xC000022E\n\tSTATUS_ALLOCATE_BUCKET                                                    NTStatus      = 0xC000022F\n\tSTATUS_PROPSET_NOT_FOUND                                                  NTStatus      = 0xC0000230\n\tSTATUS_MARSHALL_OVERFLOW                                                  NTStatus      = 0xC0000231\n\tSTATUS_INVALID_VARIANT                                                    NTStatus      = 0xC0000232\n\tSTATUS_DOMAIN_CONTROLLER_NOT_FOUND                                        NTStatus      = 0xC0000233\n\tSTATUS_ACCOUNT_LOCKED_OUT                                                 NTStatus      = 0xC0000234\n\tSTATUS_HANDLE_NOT_CLOSABLE                                                NTStatus      = 0xC0000235\n\tSTATUS_CONNECTION_REFUSED                                                 NTStatus      = 0xC0000236\n\tSTATUS_GRACEFUL_DISCONNECT                                                NTStatus      = 0xC0000237\n\tSTATUS_ADDRESS_ALREADY_ASSOCIATED                                         NTStatus      = 0xC0000238\n\tSTATUS_ADDRESS_NOT_ASSOCIATED                                             NTStatus      = 0xC0000239\n\tSTATUS_CONNECTION_INVALID                                                 NTStatus      = 0xC000023A\n\tSTATUS_CONNECTION_ACTIVE                                                  NTStatus      = 0xC000023B\n\tSTATUS_NETWORK_UNREACHABLE                                                NTStatus      = 0xC000023C\n\tSTATUS_HOST_UNREACHABLE                                                   NTStatus      = 0xC000023D\n\tSTATUS_PROTOCOL_UNREACHABLE                                               NTStatus      = 0xC000023E\n\tSTATUS_PORT_UNREACHABLE                                                   NTStatus      = 0xC000023F\n\tSTATUS_REQUEST_ABORTED                                                    NTStatus      = 0xC0000240\n\tSTATUS_CONNECTION_ABORTED                                                 NTStatus      = 0xC0000241\n\tSTATUS_BAD_COMPRESSION_BUFFER                                             NTStatus      = 0xC0000242\n\tSTATUS_USER_MAPPED_FILE                                                   NTStatus      = 0xC0000243\n\tSTATUS_AUDIT_FAILED                                                       NTStatus      = 0xC0000244\n\tSTATUS_TIMER_RESOLUTION_NOT_SET                                           NTStatus      = 0xC0000245\n\tSTATUS_CONNECTION_COUNT_LIMIT                                             NTStatus      = 0xC0000246\n\tSTATUS_LOGIN_TIME_RESTRICTION                                             NTStatus      = 0xC0000247\n\tSTATUS_LOGIN_WKSTA_RESTRICTION                                            NTStatus      = 0xC0000248\n\tSTATUS_IMAGE_MP_UP_MISMATCH                                               NTStatus      = 0xC0000249\n\tSTATUS_INSUFFICIENT_LOGON_INFO                                            NTStatus      = 0xC0000250\n\tSTATUS_BAD_DLL_ENTRYPOINT                                                 NTStatus      = 0xC0000251\n\tSTATUS_BAD_SERVICE_ENTRYPOINT                                             NTStatus      = 0xC0000252\n\tSTATUS_LPC_REPLY_LOST                                                     NTStatus      = 0xC0000253\n\tSTATUS_IP_ADDRESS_CONFLICT1                                               NTStatus      = 0xC0000254\n\tSTATUS_IP_ADDRESS_CONFLICT2                                               NTStatus      = 0xC0000255\n\tSTATUS_REGISTRY_QUOTA_LIMIT                                               NTStatus      = 0xC0000256\n\tSTATUS_PATH_NOT_COVERED                                                   NTStatus      = 0xC0000257\n\tSTATUS_NO_CALLBACK_ACTIVE                                                 NTStatus      = 0xC0000258\n\tSTATUS_LICENSE_QUOTA_EXCEEDED                                             NTStatus      = 0xC0000259\n\tSTATUS_PWD_TOO_SHORT                                                      NTStatus      = 0xC000025A\n\tSTATUS_PWD_TOO_RECENT                                                     NTStatus      = 0xC000025B\n\tSTATUS_PWD_HISTORY_CONFLICT                                               NTStatus      = 0xC000025C\n\tSTATUS_PLUGPLAY_NO_DEVICE                                                 NTStatus      = 0xC000025E\n\tSTATUS_UNSUPPORTED_COMPRESSION                                            NTStatus      = 0xC000025F\n\tSTATUS_INVALID_HW_PROFILE                                                 NTStatus      = 0xC0000260\n\tSTATUS_INVALID_PLUGPLAY_DEVICE_PATH                                       NTStatus      = 0xC0000261\n\tSTATUS_DRIVER_ORDINAL_NOT_FOUND                                           NTStatus      = 0xC0000262\n\tSTATUS_DRIVER_ENTRYPOINT_NOT_FOUND                                        NTStatus      = 0xC0000263\n\tSTATUS_RESOURCE_NOT_OWNED                                                 NTStatus      = 0xC0000264\n\tSTATUS_TOO_MANY_LINKS                                                     NTStatus      = 0xC0000265\n\tSTATUS_QUOTA_LIST_INCONSISTENT                                            NTStatus      = 0xC0000266\n\tSTATUS_FILE_IS_OFFLINE                                                    NTStatus      = 0xC0000267\n\tSTATUS_EVALUATION_EXPIRATION                                              NTStatus      = 0xC0000268\n\tSTATUS_ILLEGAL_DLL_RELOCATION                                             NTStatus      = 0xC0000269\n\tSTATUS_LICENSE_VIOLATION                                                  NTStatus      = 0xC000026A\n\tSTATUS_DLL_INIT_FAILED_LOGOFF                                             NTStatus      = 0xC000026B\n\tSTATUS_DRIVER_UNABLE_TO_LOAD                                              NTStatus      = 0xC000026C\n\tSTATUS_DFS_UNAVAILABLE                                                    NTStatus      = 0xC000026D\n\tSTATUS_VOLUME_DISMOUNTED                                                  NTStatus      = 0xC000026E\n\tSTATUS_WX86_INTERNAL_ERROR                                                NTStatus      = 0xC000026F\n\tSTATUS_WX86_FLOAT_STACK_CHECK                                             NTStatus      = 0xC0000270\n\tSTATUS_VALIDATE_CONTINUE                                                  NTStatus      = 0xC0000271\n\tSTATUS_NO_MATCH                                                           NTStatus      = 0xC0000272\n\tSTATUS_NO_MORE_MATCHES                                                    NTStatus      = 0xC0000273\n\tSTATUS_NOT_A_REPARSE_POINT                                                NTStatus      = 0xC0000275\n\tSTATUS_IO_REPARSE_TAG_INVALID                                             NTStatus      = 0xC0000276\n\tSTATUS_IO_REPARSE_TAG_MISMATCH                                            NTStatus      = 0xC0000277\n\tSTATUS_IO_REPARSE_DATA_INVALID                                            NTStatus      = 0xC0000278\n\tSTATUS_IO_REPARSE_TAG_NOT_HANDLED                                         NTStatus      = 0xC0000279\n\tSTATUS_PWD_TOO_LONG                                                       NTStatus      = 0xC000027A\n\tSTATUS_STOWED_EXCEPTION                                                   NTStatus      = 0xC000027B\n\tSTATUS_CONTEXT_STOWED_EXCEPTION                                           NTStatus      = 0xC000027C\n\tSTATUS_REPARSE_POINT_NOT_RESOLVED                                         NTStatus      = 0xC0000280\n\tSTATUS_DIRECTORY_IS_A_REPARSE_POINT                                       NTStatus      = 0xC0000281\n\tSTATUS_RANGE_LIST_CONFLICT                                                NTStatus      = 0xC0000282\n\tSTATUS_SOURCE_ELEMENT_EMPTY                                               NTStatus      = 0xC0000283\n\tSTATUS_DESTINATION_ELEMENT_FULL                                           NTStatus      = 0xC0000284\n\tSTATUS_ILLEGAL_ELEMENT_ADDRESS                                            NTStatus      = 0xC0000285\n\tSTATUS_MAGAZINE_NOT_PRESENT                                               NTStatus      = 0xC0000286\n\tSTATUS_REINITIALIZATION_NEEDED                                            NTStatus      = 0xC0000287\n\tSTATUS_DEVICE_REQUIRES_CLEANING                                           NTStatus      = 0x80000288\n\tSTATUS_DEVICE_DOOR_OPEN                                                   NTStatus      = 0x80000289\n\tSTATUS_ENCRYPTION_FAILED                                                  NTStatus      = 0xC000028A\n\tSTATUS_DECRYPTION_FAILED                                                  NTStatus      = 0xC000028B\n\tSTATUS_RANGE_NOT_FOUND                                                    NTStatus      = 0xC000028C\n\tSTATUS_NO_RECOVERY_POLICY                                                 NTStatus      = 0xC000028D\n\tSTATUS_NO_EFS                                                             NTStatus      = 0xC000028E\n\tSTATUS_WRONG_EFS                                                          NTStatus      = 0xC000028F\n\tSTATUS_NO_USER_KEYS                                                       NTStatus      = 0xC0000290\n\tSTATUS_FILE_NOT_ENCRYPTED                                                 NTStatus      = 0xC0000291\n\tSTATUS_NOT_EXPORT_FORMAT                                                  NTStatus      = 0xC0000292\n\tSTATUS_FILE_ENCRYPTED                                                     NTStatus      = 0xC0000293\n\tSTATUS_WAKE_SYSTEM                                                        NTStatus      = 0x40000294\n\tSTATUS_WMI_GUID_NOT_FOUND                                                 NTStatus      = 0xC0000295\n\tSTATUS_WMI_INSTANCE_NOT_FOUND                                             NTStatus      = 0xC0000296\n\tSTATUS_WMI_ITEMID_NOT_FOUND                                               NTStatus      = 0xC0000297\n\tSTATUS_WMI_TRY_AGAIN                                                      NTStatus      = 0xC0000298\n\tSTATUS_SHARED_POLICY                                                      NTStatus      = 0xC0000299\n\tSTATUS_POLICY_OBJECT_NOT_FOUND                                            NTStatus      = 0xC000029A\n\tSTATUS_POLICY_ONLY_IN_DS                                                  NTStatus      = 0xC000029B\n\tSTATUS_VOLUME_NOT_UPGRADED                                                NTStatus      = 0xC000029C\n\tSTATUS_REMOTE_STORAGE_NOT_ACTIVE                                          NTStatus      = 0xC000029D\n\tSTATUS_REMOTE_STORAGE_MEDIA_ERROR                                         NTStatus      = 0xC000029E\n\tSTATUS_NO_TRACKING_SERVICE                                                NTStatus      = 0xC000029F\n\tSTATUS_SERVER_SID_MISMATCH                                                NTStatus      = 0xC00002A0\n\tSTATUS_DS_NO_ATTRIBUTE_OR_VALUE                                           NTStatus      = 0xC00002A1\n\tSTATUS_DS_INVALID_ATTRIBUTE_SYNTAX                                        NTStatus      = 0xC00002A2\n\tSTATUS_DS_ATTRIBUTE_TYPE_UNDEFINED                                        NTStatus      = 0xC00002A3\n\tSTATUS_DS_ATTRIBUTE_OR_VALUE_EXISTS                                       NTStatus      = 0xC00002A4\n\tSTATUS_DS_BUSY                                                            NTStatus      = 0xC00002A5\n\tSTATUS_DS_UNAVAILABLE                                                     NTStatus      = 0xC00002A6\n\tSTATUS_DS_NO_RIDS_ALLOCATED                                               NTStatus      = 0xC00002A7\n\tSTATUS_DS_NO_MORE_RIDS                                                    NTStatus      = 0xC00002A8\n\tSTATUS_DS_INCORRECT_ROLE_OWNER                                            NTStatus      = 0xC00002A9\n\tSTATUS_DS_RIDMGR_INIT_ERROR                                               NTStatus      = 0xC00002AA\n\tSTATUS_DS_OBJ_CLASS_VIOLATION                                             NTStatus      = 0xC00002AB\n\tSTATUS_DS_CANT_ON_NON_LEAF                                                NTStatus      = 0xC00002AC\n\tSTATUS_DS_CANT_ON_RDN                                                     NTStatus      = 0xC00002AD\n\tSTATUS_DS_CANT_MOD_OBJ_CLASS                                              NTStatus      = 0xC00002AE\n\tSTATUS_DS_CROSS_DOM_MOVE_FAILED                                           NTStatus      = 0xC00002AF\n\tSTATUS_DS_GC_NOT_AVAILABLE                                                NTStatus      = 0xC00002B0\n\tSTATUS_DIRECTORY_SERVICE_REQUIRED                                         NTStatus      = 0xC00002B1\n\tSTATUS_REPARSE_ATTRIBUTE_CONFLICT                                         NTStatus      = 0xC00002B2\n\tSTATUS_CANT_ENABLE_DENY_ONLY                                              NTStatus      = 0xC00002B3\n\tSTATUS_FLOAT_MULTIPLE_FAULTS                                              NTStatus      = 0xC00002B4\n\tSTATUS_FLOAT_MULTIPLE_TRAPS                                               NTStatus      = 0xC00002B5\n\tSTATUS_DEVICE_REMOVED                                                     NTStatus      = 0xC00002B6\n\tSTATUS_JOURNAL_DELETE_IN_PROGRESS                                         NTStatus      = 0xC00002B7\n\tSTATUS_JOURNAL_NOT_ACTIVE                                                 NTStatus      = 0xC00002B8\n\tSTATUS_NOINTERFACE                                                        NTStatus      = 0xC00002B9\n\tSTATUS_DS_RIDMGR_DISABLED                                                 NTStatus      = 0xC00002BA\n\tSTATUS_DS_ADMIN_LIMIT_EXCEEDED                                            NTStatus      = 0xC00002C1\n\tSTATUS_DRIVER_FAILED_SLEEP                                                NTStatus      = 0xC00002C2\n\tSTATUS_MUTUAL_AUTHENTICATION_FAILED                                       NTStatus      = 0xC00002C3\n\tSTATUS_CORRUPT_SYSTEM_FILE                                                NTStatus      = 0xC00002C4\n\tSTATUS_DATATYPE_MISALIGNMENT_ERROR                                        NTStatus      = 0xC00002C5\n\tSTATUS_WMI_READ_ONLY                                                      NTStatus      = 0xC00002C6\n\tSTATUS_WMI_SET_FAILURE                                                    NTStatus      = 0xC00002C7\n\tSTATUS_COMMITMENT_MINIMUM                                                 NTStatus      = 0xC00002C8\n\tSTATUS_REG_NAT_CONSUMPTION                                                NTStatus      = 0xC00002C9\n\tSTATUS_TRANSPORT_FULL                                                     NTStatus      = 0xC00002CA\n\tSTATUS_DS_SAM_INIT_FAILURE                                                NTStatus      = 0xC00002CB\n\tSTATUS_ONLY_IF_CONNECTED                                                  NTStatus      = 0xC00002CC\n\tSTATUS_DS_SENSITIVE_GROUP_VIOLATION                                       NTStatus      = 0xC00002CD\n\tSTATUS_PNP_RESTART_ENUMERATION                                            NTStatus      = 0xC00002CE\n\tSTATUS_JOURNAL_ENTRY_DELETED                                              NTStatus      = 0xC00002CF\n\tSTATUS_DS_CANT_MOD_PRIMARYGROUPID                                         NTStatus      = 0xC00002D0\n\tSTATUS_SYSTEM_IMAGE_BAD_SIGNATURE                                         NTStatus      = 0xC00002D1\n\tSTATUS_PNP_REBOOT_REQUIRED                                                NTStatus      = 0xC00002D2\n\tSTATUS_POWER_STATE_INVALID                                                NTStatus      = 0xC00002D3\n\tSTATUS_DS_INVALID_GROUP_TYPE                                              NTStatus      = 0xC00002D4\n\tSTATUS_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN                              NTStatus      = 0xC00002D5\n\tSTATUS_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN                               NTStatus      = 0xC00002D6\n\tSTATUS_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER                                   NTStatus      = 0xC00002D7\n\tSTATUS_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER                               NTStatus      = 0xC00002D8\n\tSTATUS_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER                                NTStatus      = 0xC00002D9\n\tSTATUS_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER                             NTStatus      = 0xC00002DA\n\tSTATUS_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER                        NTStatus      = 0xC00002DB\n\tSTATUS_DS_HAVE_PRIMARY_MEMBERS                                            NTStatus      = 0xC00002DC\n\tSTATUS_WMI_NOT_SUPPORTED                                                  NTStatus      = 0xC00002DD\n\tSTATUS_INSUFFICIENT_POWER                                                 NTStatus      = 0xC00002DE\n\tSTATUS_SAM_NEED_BOOTKEY_PASSWORD                                          NTStatus      = 0xC00002DF\n\tSTATUS_SAM_NEED_BOOTKEY_FLOPPY                                            NTStatus      = 0xC00002E0\n\tSTATUS_DS_CANT_START                                                      NTStatus      = 0xC00002E1\n\tSTATUS_DS_INIT_FAILURE                                                    NTStatus      = 0xC00002E2\n\tSTATUS_SAM_INIT_FAILURE                                                   NTStatus      = 0xC00002E3\n\tSTATUS_DS_GC_REQUIRED                                                     NTStatus      = 0xC00002E4\n\tSTATUS_DS_LOCAL_MEMBER_OF_LOCAL_ONLY                                      NTStatus      = 0xC00002E5\n\tSTATUS_DS_NO_FPO_IN_UNIVERSAL_GROUPS                                      NTStatus      = 0xC00002E6\n\tSTATUS_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED                                  NTStatus      = 0xC00002E7\n\tSTATUS_MULTIPLE_FAULT_VIOLATION                                           NTStatus      = 0xC00002E8\n\tSTATUS_CURRENT_DOMAIN_NOT_ALLOWED                                         NTStatus      = 0xC00002E9\n\tSTATUS_CANNOT_MAKE                                                        NTStatus      = 0xC00002EA\n\tSTATUS_SYSTEM_SHUTDOWN                                                    NTStatus      = 0xC00002EB\n\tSTATUS_DS_INIT_FAILURE_CONSOLE                                            NTStatus      = 0xC00002EC\n\tSTATUS_DS_SAM_INIT_FAILURE_CONSOLE                                        NTStatus      = 0xC00002ED\n\tSTATUS_UNFINISHED_CONTEXT_DELETED                                         NTStatus      = 0xC00002EE\n\tSTATUS_NO_TGT_REPLY                                                       NTStatus      = 0xC00002EF\n\tSTATUS_OBJECTID_NOT_FOUND                                                 NTStatus      = 0xC00002F0\n\tSTATUS_NO_IP_ADDRESSES                                                    NTStatus      = 0xC00002F1\n\tSTATUS_WRONG_CREDENTIAL_HANDLE                                            NTStatus      = 0xC00002F2\n\tSTATUS_CRYPTO_SYSTEM_INVALID                                              NTStatus      = 0xC00002F3\n\tSTATUS_MAX_REFERRALS_EXCEEDED                                             NTStatus      = 0xC00002F4\n\tSTATUS_MUST_BE_KDC                                                        NTStatus      = 0xC00002F5\n\tSTATUS_STRONG_CRYPTO_NOT_SUPPORTED                                        NTStatus      = 0xC00002F6\n\tSTATUS_TOO_MANY_PRINCIPALS                                                NTStatus      = 0xC00002F7\n\tSTATUS_NO_PA_DATA                                                         NTStatus      = 0xC00002F8\n\tSTATUS_PKINIT_NAME_MISMATCH                                               NTStatus      = 0xC00002F9\n\tSTATUS_SMARTCARD_LOGON_REQUIRED                                           NTStatus      = 0xC00002FA\n\tSTATUS_KDC_INVALID_REQUEST                                                NTStatus      = 0xC00002FB\n\tSTATUS_KDC_UNABLE_TO_REFER                                                NTStatus      = 0xC00002FC\n\tSTATUS_KDC_UNKNOWN_ETYPE                                                  NTStatus      = 0xC00002FD\n\tSTATUS_SHUTDOWN_IN_PROGRESS                                               NTStatus      = 0xC00002FE\n\tSTATUS_SERVER_SHUTDOWN_IN_PROGRESS                                        NTStatus      = 0xC00002FF\n\tSTATUS_NOT_SUPPORTED_ON_SBS                                               NTStatus      = 0xC0000300\n\tSTATUS_WMI_GUID_DISCONNECTED                                              NTStatus      = 0xC0000301\n\tSTATUS_WMI_ALREADY_DISABLED                                               NTStatus      = 0xC0000302\n\tSTATUS_WMI_ALREADY_ENABLED                                                NTStatus      = 0xC0000303\n\tSTATUS_MFT_TOO_FRAGMENTED                                                 NTStatus      = 0xC0000304\n\tSTATUS_COPY_PROTECTION_FAILURE                                            NTStatus      = 0xC0000305\n\tSTATUS_CSS_AUTHENTICATION_FAILURE                                         NTStatus      = 0xC0000306\n\tSTATUS_CSS_KEY_NOT_PRESENT                                                NTStatus      = 0xC0000307\n\tSTATUS_CSS_KEY_NOT_ESTABLISHED                                            NTStatus      = 0xC0000308\n\tSTATUS_CSS_SCRAMBLED_SECTOR                                               NTStatus      = 0xC0000309\n\tSTATUS_CSS_REGION_MISMATCH                                                NTStatus      = 0xC000030A\n\tSTATUS_CSS_RESETS_EXHAUSTED                                               NTStatus      = 0xC000030B\n\tSTATUS_PASSWORD_CHANGE_REQUIRED                                           NTStatus      = 0xC000030C\n\tSTATUS_LOST_MODE_LOGON_RESTRICTION                                        NTStatus      = 0xC000030D\n\tSTATUS_PKINIT_FAILURE                                                     NTStatus      = 0xC0000320\n\tSTATUS_SMARTCARD_SUBSYSTEM_FAILURE                                        NTStatus      = 0xC0000321\n\tSTATUS_NO_KERB_KEY                                                        NTStatus      = 0xC0000322\n\tSTATUS_HOST_DOWN                                                          NTStatus      = 0xC0000350\n\tSTATUS_UNSUPPORTED_PREAUTH                                                NTStatus      = 0xC0000351\n\tSTATUS_EFS_ALG_BLOB_TOO_BIG                                               NTStatus      = 0xC0000352\n\tSTATUS_PORT_NOT_SET                                                       NTStatus      = 0xC0000353\n\tSTATUS_DEBUGGER_INACTIVE                                                  NTStatus      = 0xC0000354\n\tSTATUS_DS_VERSION_CHECK_FAILURE                                           NTStatus      = 0xC0000355\n\tSTATUS_AUDITING_DISABLED                                                  NTStatus      = 0xC0000356\n\tSTATUS_PRENT4_MACHINE_ACCOUNT                                             NTStatus      = 0xC0000357\n\tSTATUS_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER                                   NTStatus      = 0xC0000358\n\tSTATUS_INVALID_IMAGE_WIN_32                                               NTStatus      = 0xC0000359\n\tSTATUS_INVALID_IMAGE_WIN_64                                               NTStatus      = 0xC000035A\n\tSTATUS_BAD_BINDINGS                                                       NTStatus      = 0xC000035B\n\tSTATUS_NETWORK_SESSION_EXPIRED                                            NTStatus      = 0xC000035C\n\tSTATUS_APPHELP_BLOCK                                                      NTStatus      = 0xC000035D\n\tSTATUS_ALL_SIDS_FILTERED                                                  NTStatus      = 0xC000035E\n\tSTATUS_NOT_SAFE_MODE_DRIVER                                               NTStatus      = 0xC000035F\n\tSTATUS_ACCESS_DISABLED_BY_POLICY_DEFAULT                                  NTStatus      = 0xC0000361\n\tSTATUS_ACCESS_DISABLED_BY_POLICY_PATH                                     NTStatus      = 0xC0000362\n\tSTATUS_ACCESS_DISABLED_BY_POLICY_PUBLISHER                                NTStatus      = 0xC0000363\n\tSTATUS_ACCESS_DISABLED_BY_POLICY_OTHER                                    NTStatus      = 0xC0000364\n\tSTATUS_FAILED_DRIVER_ENTRY                                                NTStatus      = 0xC0000365\n\tSTATUS_DEVICE_ENUMERATION_ERROR                                           NTStatus      = 0xC0000366\n\tSTATUS_MOUNT_POINT_NOT_RESOLVED                                           NTStatus      = 0xC0000368\n\tSTATUS_INVALID_DEVICE_OBJECT_PARAMETER                                    NTStatus      = 0xC0000369\n\tSTATUS_MCA_OCCURED                                                        NTStatus      = 0xC000036A\n\tSTATUS_DRIVER_BLOCKED_CRITICAL                                            NTStatus      = 0xC000036B\n\tSTATUS_DRIVER_BLOCKED                                                     NTStatus      = 0xC000036C\n\tSTATUS_DRIVER_DATABASE_ERROR                                              NTStatus      = 0xC000036D\n\tSTATUS_SYSTEM_HIVE_TOO_LARGE                                              NTStatus      = 0xC000036E\n\tSTATUS_INVALID_IMPORT_OF_NON_DLL                                          NTStatus      = 0xC000036F\n\tSTATUS_DS_SHUTTING_DOWN                                                   NTStatus      = 0x40000370\n\tSTATUS_NO_SECRETS                                                         NTStatus      = 0xC0000371\n\tSTATUS_ACCESS_DISABLED_NO_SAFER_UI_BY_POLICY                              NTStatus      = 0xC0000372\n\tSTATUS_FAILED_STACK_SWITCH                                                NTStatus      = 0xC0000373\n\tSTATUS_HEAP_CORRUPTION                                                    NTStatus      = 0xC0000374\n\tSTATUS_SMARTCARD_WRONG_PIN                                                NTStatus      = 0xC0000380\n\tSTATUS_SMARTCARD_CARD_BLOCKED                                             NTStatus      = 0xC0000381\n\tSTATUS_SMARTCARD_CARD_NOT_AUTHENTICATED                                   NTStatus      = 0xC0000382\n\tSTATUS_SMARTCARD_NO_CARD                                                  NTStatus      = 0xC0000383\n\tSTATUS_SMARTCARD_NO_KEY_CONTAINER                                         NTStatus      = 0xC0000384\n\tSTATUS_SMARTCARD_NO_CERTIFICATE                                           NTStatus      = 0xC0000385\n\tSTATUS_SMARTCARD_NO_KEYSET                                                NTStatus      = 0xC0000386\n\tSTATUS_SMARTCARD_IO_ERROR                                                 NTStatus      = 0xC0000387\n\tSTATUS_DOWNGRADE_DETECTED                                                 NTStatus      = 0xC0000388\n\tSTATUS_SMARTCARD_CERT_REVOKED                                             NTStatus      = 0xC0000389\n\tSTATUS_ISSUING_CA_UNTRUSTED                                               NTStatus      = 0xC000038A\n\tSTATUS_REVOCATION_OFFLINE_C                                               NTStatus      = 0xC000038B\n\tSTATUS_PKINIT_CLIENT_FAILURE                                              NTStatus      = 0xC000038C\n\tSTATUS_SMARTCARD_CERT_EXPIRED                                             NTStatus      = 0xC000038D\n\tSTATUS_DRIVER_FAILED_PRIOR_UNLOAD                                         NTStatus      = 0xC000038E\n\tSTATUS_SMARTCARD_SILENT_CONTEXT                                           NTStatus      = 0xC000038F\n\tSTATUS_PER_USER_TRUST_QUOTA_EXCEEDED                                      NTStatus      = 0xC0000401\n\tSTATUS_ALL_USER_TRUST_QUOTA_EXCEEDED                                      NTStatus      = 0xC0000402\n\tSTATUS_USER_DELETE_TRUST_QUOTA_EXCEEDED                                   NTStatus      = 0xC0000403\n\tSTATUS_DS_NAME_NOT_UNIQUE                                                 NTStatus      = 0xC0000404\n\tSTATUS_DS_DUPLICATE_ID_FOUND                                              NTStatus      = 0xC0000405\n\tSTATUS_DS_GROUP_CONVERSION_ERROR                                          NTStatus      = 0xC0000406\n\tSTATUS_VOLSNAP_PREPARE_HIBERNATE                                          NTStatus      = 0xC0000407\n\tSTATUS_USER2USER_REQUIRED                                                 NTStatus      = 0xC0000408\n\tSTATUS_STACK_BUFFER_OVERRUN                                               NTStatus      = 0xC0000409\n\tSTATUS_NO_S4U_PROT_SUPPORT                                                NTStatus      = 0xC000040A\n\tSTATUS_CROSSREALM_DELEGATION_FAILURE                                      NTStatus      = 0xC000040B\n\tSTATUS_REVOCATION_OFFLINE_KDC                                             NTStatus      = 0xC000040C\n\tSTATUS_ISSUING_CA_UNTRUSTED_KDC                                           NTStatus      = 0xC000040D\n\tSTATUS_KDC_CERT_EXPIRED                                                   NTStatus      = 0xC000040E\n\tSTATUS_KDC_CERT_REVOKED                                                   NTStatus      = 0xC000040F\n\tSTATUS_PARAMETER_QUOTA_EXCEEDED                                           NTStatus      = 0xC0000410\n\tSTATUS_HIBERNATION_FAILURE                                                NTStatus      = 0xC0000411\n\tSTATUS_DELAY_LOAD_FAILED                                                  NTStatus      = 0xC0000412\n\tSTATUS_AUTHENTICATION_FIREWALL_FAILED                                     NTStatus      = 0xC0000413\n\tSTATUS_VDM_DISALLOWED                                                     NTStatus      = 0xC0000414\n\tSTATUS_HUNG_DISPLAY_DRIVER_THREAD                                         NTStatus      = 0xC0000415\n\tSTATUS_INSUFFICIENT_RESOURCE_FOR_SPECIFIED_SHARED_SECTION_SIZE            NTStatus      = 0xC0000416\n\tSTATUS_INVALID_CRUNTIME_PARAMETER                                         NTStatus      = 0xC0000417\n\tSTATUS_NTLM_BLOCKED                                                       NTStatus      = 0xC0000418\n\tSTATUS_DS_SRC_SID_EXISTS_IN_FOREST                                        NTStatus      = 0xC0000419\n\tSTATUS_DS_DOMAIN_NAME_EXISTS_IN_FOREST                                    NTStatus      = 0xC000041A\n\tSTATUS_DS_FLAT_NAME_EXISTS_IN_FOREST                                      NTStatus      = 0xC000041B\n\tSTATUS_INVALID_USER_PRINCIPAL_NAME                                        NTStatus      = 0xC000041C\n\tSTATUS_FATAL_USER_CALLBACK_EXCEPTION                                      NTStatus      = 0xC000041D\n\tSTATUS_ASSERTION_FAILURE                                                  NTStatus      = 0xC0000420\n\tSTATUS_VERIFIER_STOP                                                      NTStatus      = 0xC0000421\n\tSTATUS_CALLBACK_POP_STACK                                                 NTStatus      = 0xC0000423\n\tSTATUS_INCOMPATIBLE_DRIVER_BLOCKED                                        NTStatus      = 0xC0000424\n\tSTATUS_HIVE_UNLOADED                                                      NTStatus      = 0xC0000425\n\tSTATUS_COMPRESSION_DISABLED                                               NTStatus      = 0xC0000426\n\tSTATUS_FILE_SYSTEM_LIMITATION                                             NTStatus      = 0xC0000427\n\tSTATUS_INVALID_IMAGE_HASH                                                 NTStatus      = 0xC0000428\n\tSTATUS_NOT_CAPABLE                                                        NTStatus      = 0xC0000429\n\tSTATUS_REQUEST_OUT_OF_SEQUENCE                                            NTStatus      = 0xC000042A\n\tSTATUS_IMPLEMENTATION_LIMIT                                               NTStatus      = 0xC000042B\n\tSTATUS_ELEVATION_REQUIRED                                                 NTStatus      = 0xC000042C\n\tSTATUS_NO_SECURITY_CONTEXT                                                NTStatus      = 0xC000042D\n\tSTATUS_PKU2U_CERT_FAILURE                                                 NTStatus      = 0xC000042F\n\tSTATUS_BEYOND_VDL                                                         NTStatus      = 0xC0000432\n\tSTATUS_ENCOUNTERED_WRITE_IN_PROGRESS                                      NTStatus      = 0xC0000433\n\tSTATUS_PTE_CHANGED                                                        NTStatus      = 0xC0000434\n\tSTATUS_PURGE_FAILED                                                       NTStatus      = 0xC0000435\n\tSTATUS_CRED_REQUIRES_CONFIRMATION                                         NTStatus      = 0xC0000440\n\tSTATUS_CS_ENCRYPTION_INVALID_SERVER_RESPONSE                              NTStatus      = 0xC0000441\n\tSTATUS_CS_ENCRYPTION_UNSUPPORTED_SERVER                                   NTStatus      = 0xC0000442\n\tSTATUS_CS_ENCRYPTION_EXISTING_ENCRYPTED_FILE                              NTStatus      = 0xC0000443\n\tSTATUS_CS_ENCRYPTION_NEW_ENCRYPTED_FILE                                   NTStatus      = 0xC0000444\n\tSTATUS_CS_ENCRYPTION_FILE_NOT_CSE                                         NTStatus      = 0xC0000445\n\tSTATUS_INVALID_LABEL                                                      NTStatus      = 0xC0000446\n\tSTATUS_DRIVER_PROCESS_TERMINATED                                          NTStatus      = 0xC0000450\n\tSTATUS_AMBIGUOUS_SYSTEM_DEVICE                                            NTStatus      = 0xC0000451\n\tSTATUS_SYSTEM_DEVICE_NOT_FOUND                                            NTStatus      = 0xC0000452\n\tSTATUS_RESTART_BOOT_APPLICATION                                           NTStatus      = 0xC0000453\n\tSTATUS_INSUFFICIENT_NVRAM_RESOURCES                                       NTStatus      = 0xC0000454\n\tSTATUS_INVALID_SESSION                                                    NTStatus      = 0xC0000455\n\tSTATUS_THREAD_ALREADY_IN_SESSION                                          NTStatus      = 0xC0000456\n\tSTATUS_THREAD_NOT_IN_SESSION                                              NTStatus      = 0xC0000457\n\tSTATUS_INVALID_WEIGHT                                                     NTStatus      = 0xC0000458\n\tSTATUS_REQUEST_PAUSED                                                     NTStatus      = 0xC0000459\n\tSTATUS_NO_RANGES_PROCESSED                                                NTStatus      = 0xC0000460\n\tSTATUS_DISK_RESOURCES_EXHAUSTED                                           NTStatus      = 0xC0000461\n\tSTATUS_NEEDS_REMEDIATION                                                  NTStatus      = 0xC0000462\n\tSTATUS_DEVICE_FEATURE_NOT_SUPPORTED                                       NTStatus      = 0xC0000463\n\tSTATUS_DEVICE_UNREACHABLE                                                 NTStatus      = 0xC0000464\n\tSTATUS_INVALID_TOKEN                                                      NTStatus      = 0xC0000465\n\tSTATUS_SERVER_UNAVAILABLE                                                 NTStatus      = 0xC0000466\n\tSTATUS_FILE_NOT_AVAILABLE                                                 NTStatus      = 0xC0000467\n\tSTATUS_DEVICE_INSUFFICIENT_RESOURCES                                      NTStatus      = 0xC0000468\n\tSTATUS_PACKAGE_UPDATING                                                   NTStatus      = 0xC0000469\n\tSTATUS_NOT_READ_FROM_COPY                                                 NTStatus      = 0xC000046A\n\tSTATUS_FT_WRITE_FAILURE                                                   NTStatus      = 0xC000046B\n\tSTATUS_FT_DI_SCAN_REQUIRED                                                NTStatus      = 0xC000046C\n\tSTATUS_OBJECT_NOT_EXTERNALLY_BACKED                                       NTStatus      = 0xC000046D\n\tSTATUS_EXTERNAL_BACKING_PROVIDER_UNKNOWN                                  NTStatus      = 0xC000046E\n\tSTATUS_COMPRESSION_NOT_BENEFICIAL                                         NTStatus      = 0xC000046F\n\tSTATUS_DATA_CHECKSUM_ERROR                                                NTStatus      = 0xC0000470\n\tSTATUS_INTERMIXED_KERNEL_EA_OPERATION                                     NTStatus      = 0xC0000471\n\tSTATUS_TRIM_READ_ZERO_NOT_SUPPORTED                                       NTStatus      = 0xC0000472\n\tSTATUS_TOO_MANY_SEGMENT_DESCRIPTORS                                       NTStatus      = 0xC0000473\n\tSTATUS_INVALID_OFFSET_ALIGNMENT                                           NTStatus      = 0xC0000474\n\tSTATUS_INVALID_FIELD_IN_PARAMETER_LIST                                    NTStatus      = 0xC0000475\n\tSTATUS_OPERATION_IN_PROGRESS                                              NTStatus      = 0xC0000476\n\tSTATUS_INVALID_INITIATOR_TARGET_PATH                                      NTStatus      = 0xC0000477\n\tSTATUS_SCRUB_DATA_DISABLED                                                NTStatus      = 0xC0000478\n\tSTATUS_NOT_REDUNDANT_STORAGE                                              NTStatus      = 0xC0000479\n\tSTATUS_RESIDENT_FILE_NOT_SUPPORTED                                        NTStatus      = 0xC000047A\n\tSTATUS_COMPRESSED_FILE_NOT_SUPPORTED                                      NTStatus      = 0xC000047B\n\tSTATUS_DIRECTORY_NOT_SUPPORTED                                            NTStatus      = 0xC000047C\n\tSTATUS_IO_OPERATION_TIMEOUT                                               NTStatus      = 0xC000047D\n\tSTATUS_SYSTEM_NEEDS_REMEDIATION                                           NTStatus      = 0xC000047E\n\tSTATUS_APPX_INTEGRITY_FAILURE_CLR_NGEN                                    NTStatus      = 0xC000047F\n\tSTATUS_SHARE_UNAVAILABLE                                                  NTStatus      = 0xC0000480\n\tSTATUS_APISET_NOT_HOSTED                                                  NTStatus      = 0xC0000481\n\tSTATUS_APISET_NOT_PRESENT                                                 NTStatus      = 0xC0000482\n\tSTATUS_DEVICE_HARDWARE_ERROR                                              NTStatus      = 0xC0000483\n\tSTATUS_FIRMWARE_SLOT_INVALID                                              NTStatus      = 0xC0000484\n\tSTATUS_FIRMWARE_IMAGE_INVALID                                             NTStatus      = 0xC0000485\n\tSTATUS_STORAGE_TOPOLOGY_ID_MISMATCH                                       NTStatus      = 0xC0000486\n\tSTATUS_WIM_NOT_BOOTABLE                                                   NTStatus      = 0xC0000487\n\tSTATUS_BLOCKED_BY_PARENTAL_CONTROLS                                       NTStatus      = 0xC0000488\n\tSTATUS_NEEDS_REGISTRATION                                                 NTStatus      = 0xC0000489\n\tSTATUS_QUOTA_ACTIVITY                                                     NTStatus      = 0xC000048A\n\tSTATUS_CALLBACK_INVOKE_INLINE                                             NTStatus      = 0xC000048B\n\tSTATUS_BLOCK_TOO_MANY_REFERENCES                                          NTStatus      = 0xC000048C\n\tSTATUS_MARKED_TO_DISALLOW_WRITES                                          NTStatus      = 0xC000048D\n\tSTATUS_NETWORK_ACCESS_DENIED_EDP                                          NTStatus      = 0xC000048E\n\tSTATUS_ENCLAVE_FAILURE                                                    NTStatus      = 0xC000048F\n\tSTATUS_PNP_NO_COMPAT_DRIVERS                                              NTStatus      = 0xC0000490\n\tSTATUS_PNP_DRIVER_PACKAGE_NOT_FOUND                                       NTStatus      = 0xC0000491\n\tSTATUS_PNP_DRIVER_CONFIGURATION_NOT_FOUND                                 NTStatus      = 0xC0000492\n\tSTATUS_PNP_DRIVER_CONFIGURATION_INCOMPLETE                                NTStatus      = 0xC0000493\n\tSTATUS_PNP_FUNCTION_DRIVER_REQUIRED                                       NTStatus      = 0xC0000494\n\tSTATUS_PNP_DEVICE_CONFIGURATION_PENDING                                   NTStatus      = 0xC0000495\n\tSTATUS_DEVICE_HINT_NAME_BUFFER_TOO_SMALL                                  NTStatus      = 0xC0000496\n\tSTATUS_PACKAGE_NOT_AVAILABLE                                              NTStatus      = 0xC0000497\n\tSTATUS_DEVICE_IN_MAINTENANCE                                              NTStatus      = 0xC0000499\n\tSTATUS_NOT_SUPPORTED_ON_DAX                                               NTStatus      = 0xC000049A\n\tSTATUS_FREE_SPACE_TOO_FRAGMENTED                                          NTStatus      = 0xC000049B\n\tSTATUS_DAX_MAPPING_EXISTS                                                 NTStatus      = 0xC000049C\n\tSTATUS_CHILD_PROCESS_BLOCKED                                              NTStatus      = 0xC000049D\n\tSTATUS_STORAGE_LOST_DATA_PERSISTENCE                                      NTStatus      = 0xC000049E\n\tSTATUS_VRF_CFG_ENABLED                                                    NTStatus      = 0xC000049F\n\tSTATUS_PARTITION_TERMINATING                                              NTStatus      = 0xC00004A0\n\tSTATUS_EXTERNAL_SYSKEY_NOT_SUPPORTED                                      NTStatus      = 0xC00004A1\n\tSTATUS_ENCLAVE_VIOLATION                                                  NTStatus      = 0xC00004A2\n\tSTATUS_FILE_PROTECTED_UNDER_DPL                                           NTStatus      = 0xC00004A3\n\tSTATUS_VOLUME_NOT_CLUSTER_ALIGNED                                         NTStatus      = 0xC00004A4\n\tSTATUS_NO_PHYSICALLY_ALIGNED_FREE_SPACE_FOUND                             NTStatus      = 0xC00004A5\n\tSTATUS_APPX_FILE_NOT_ENCRYPTED                                            NTStatus      = 0xC00004A6\n\tSTATUS_RWRAW_ENCRYPTED_FILE_NOT_ENCRYPTED                                 NTStatus      = 0xC00004A7\n\tSTATUS_RWRAW_ENCRYPTED_INVALID_EDATAINFO_FILEOFFSET                       NTStatus      = 0xC00004A8\n\tSTATUS_RWRAW_ENCRYPTED_INVALID_EDATAINFO_FILERANGE                        NTStatus      = 0xC00004A9\n\tSTATUS_RWRAW_ENCRYPTED_INVALID_EDATAINFO_PARAMETER                        NTStatus      = 0xC00004AA\n\tSTATUS_FT_READ_FAILURE                                                    NTStatus      = 0xC00004AB\n\tSTATUS_PATCH_CONFLICT                                                     NTStatus      = 0xC00004AC\n\tSTATUS_STORAGE_RESERVE_ID_INVALID                                         NTStatus      = 0xC00004AD\n\tSTATUS_STORAGE_RESERVE_DOES_NOT_EXIST                                     NTStatus      = 0xC00004AE\n\tSTATUS_STORAGE_RESERVE_ALREADY_EXISTS                                     NTStatus      = 0xC00004AF\n\tSTATUS_STORAGE_RESERVE_NOT_EMPTY                                          NTStatus      = 0xC00004B0\n\tSTATUS_NOT_A_DAX_VOLUME                                                   NTStatus      = 0xC00004B1\n\tSTATUS_NOT_DAX_MAPPABLE                                                   NTStatus      = 0xC00004B2\n\tSTATUS_CASE_DIFFERING_NAMES_IN_DIR                                        NTStatus      = 0xC00004B3\n\tSTATUS_FILE_NOT_SUPPORTED                                                 NTStatus      = 0xC00004B4\n\tSTATUS_NOT_SUPPORTED_WITH_BTT                                             NTStatus      = 0xC00004B5\n\tSTATUS_ENCRYPTION_DISABLED                                                NTStatus      = 0xC00004B6\n\tSTATUS_ENCRYPTING_METADATA_DISALLOWED                                     NTStatus      = 0xC00004B7\n\tSTATUS_CANT_CLEAR_ENCRYPTION_FLAG                                         NTStatus      = 0xC00004B8\n\tSTATUS_INVALID_TASK_NAME                                                  NTStatus      = 0xC0000500\n\tSTATUS_INVALID_TASK_INDEX                                                 NTStatus      = 0xC0000501\n\tSTATUS_THREAD_ALREADY_IN_TASK                                             NTStatus      = 0xC0000502\n\tSTATUS_CALLBACK_BYPASS                                                    NTStatus      = 0xC0000503\n\tSTATUS_UNDEFINED_SCOPE                                                    NTStatus      = 0xC0000504\n\tSTATUS_INVALID_CAP                                                        NTStatus      = 0xC0000505\n\tSTATUS_NOT_GUI_PROCESS                                                    NTStatus      = 0xC0000506\n\tSTATUS_DEVICE_HUNG                                                        NTStatus      = 0xC0000507\n\tSTATUS_CONTAINER_ASSIGNED                                                 NTStatus      = 0xC0000508\n\tSTATUS_JOB_NO_CONTAINER                                                   NTStatus      = 0xC0000509\n\tSTATUS_DEVICE_UNRESPONSIVE                                                NTStatus      = 0xC000050A\n\tSTATUS_REPARSE_POINT_ENCOUNTERED                                          NTStatus      = 0xC000050B\n\tSTATUS_ATTRIBUTE_NOT_PRESENT                                              NTStatus      = 0xC000050C\n\tSTATUS_NOT_A_TIERED_VOLUME                                                NTStatus      = 0xC000050D\n\tSTATUS_ALREADY_HAS_STREAM_ID                                              NTStatus      = 0xC000050E\n\tSTATUS_JOB_NOT_EMPTY                                                      NTStatus      = 0xC000050F\n\tSTATUS_ALREADY_INITIALIZED                                                NTStatus      = 0xC0000510\n\tSTATUS_ENCLAVE_NOT_TERMINATED                                             NTStatus      = 0xC0000511\n\tSTATUS_ENCLAVE_IS_TERMINATING                                             NTStatus      = 0xC0000512\n\tSTATUS_SMB1_NOT_AVAILABLE                                                 NTStatus      = 0xC0000513\n\tSTATUS_SMR_GARBAGE_COLLECTION_REQUIRED                                    NTStatus      = 0xC0000514\n\tSTATUS_INTERRUPTED                                                        NTStatus      = 0xC0000515\n\tSTATUS_THREAD_NOT_RUNNING                                                 NTStatus      = 0xC0000516\n\tSTATUS_FAIL_FAST_EXCEPTION                                                NTStatus      = 0xC0000602\n\tSTATUS_IMAGE_CERT_REVOKED                                                 NTStatus      = 0xC0000603\n\tSTATUS_DYNAMIC_CODE_BLOCKED                                               NTStatus      = 0xC0000604\n\tSTATUS_IMAGE_CERT_EXPIRED                                                 NTStatus      = 0xC0000605\n\tSTATUS_STRICT_CFG_VIOLATION                                               NTStatus      = 0xC0000606\n\tSTATUS_SET_CONTEXT_DENIED                                                 NTStatus      = 0xC000060A\n\tSTATUS_CROSS_PARTITION_VIOLATION                                          NTStatus      = 0xC000060B\n\tSTATUS_PORT_CLOSED                                                        NTStatus      = 0xC0000700\n\tSTATUS_MESSAGE_LOST                                                       NTStatus      = 0xC0000701\n\tSTATUS_INVALID_MESSAGE                                                    NTStatus      = 0xC0000702\n\tSTATUS_REQUEST_CANCELED                                                   NTStatus      = 0xC0000703\n\tSTATUS_RECURSIVE_DISPATCH                                                 NTStatus      = 0xC0000704\n\tSTATUS_LPC_RECEIVE_BUFFER_EXPECTED                                        NTStatus      = 0xC0000705\n\tSTATUS_LPC_INVALID_CONNECTION_USAGE                                       NTStatus      = 0xC0000706\n\tSTATUS_LPC_REQUESTS_NOT_ALLOWED                                           NTStatus      = 0xC0000707\n\tSTATUS_RESOURCE_IN_USE                                                    NTStatus      = 0xC0000708\n\tSTATUS_HARDWARE_MEMORY_ERROR                                              NTStatus      = 0xC0000709\n\tSTATUS_THREADPOOL_HANDLE_EXCEPTION                                        NTStatus      = 0xC000070A\n\tSTATUS_THREADPOOL_SET_EVENT_ON_COMPLETION_FAILED                          NTStatus      = 0xC000070B\n\tSTATUS_THREADPOOL_RELEASE_SEMAPHORE_ON_COMPLETION_FAILED                  NTStatus      = 0xC000070C\n\tSTATUS_THREADPOOL_RELEASE_MUTEX_ON_COMPLETION_FAILED                      NTStatus      = 0xC000070D\n\tSTATUS_THREADPOOL_FREE_LIBRARY_ON_COMPLETION_FAILED                       NTStatus      = 0xC000070E\n\tSTATUS_THREADPOOL_RELEASED_DURING_OPERATION                               NTStatus      = 0xC000070F\n\tSTATUS_CALLBACK_RETURNED_WHILE_IMPERSONATING                              NTStatus      = 0xC0000710\n\tSTATUS_APC_RETURNED_WHILE_IMPERSONATING                                   NTStatus      = 0xC0000711\n\tSTATUS_PROCESS_IS_PROTECTED                                               NTStatus      = 0xC0000712\n\tSTATUS_MCA_EXCEPTION                                                      NTStatus      = 0xC0000713\n\tSTATUS_CERTIFICATE_MAPPING_NOT_UNIQUE                                     NTStatus      = 0xC0000714\n\tSTATUS_SYMLINK_CLASS_DISABLED                                             NTStatus      = 0xC0000715\n\tSTATUS_INVALID_IDN_NORMALIZATION                                          NTStatus      = 0xC0000716\n\tSTATUS_NO_UNICODE_TRANSLATION                                             NTStatus      = 0xC0000717\n\tSTATUS_ALREADY_REGISTERED                                                 NTStatus      = 0xC0000718\n\tSTATUS_CONTEXT_MISMATCH                                                   NTStatus      = 0xC0000719\n\tSTATUS_PORT_ALREADY_HAS_COMPLETION_LIST                                   NTStatus      = 0xC000071A\n\tSTATUS_CALLBACK_RETURNED_THREAD_PRIORITY                                  NTStatus      = 0xC000071B\n\tSTATUS_INVALID_THREAD                                                     NTStatus      = 0xC000071C\n\tSTATUS_CALLBACK_RETURNED_TRANSACTION                                      NTStatus      = 0xC000071D\n\tSTATUS_CALLBACK_RETURNED_LDR_LOCK                                         NTStatus      = 0xC000071E\n\tSTATUS_CALLBACK_RETURNED_LANG                                             NTStatus      = 0xC000071F\n\tSTATUS_CALLBACK_RETURNED_PRI_BACK                                         NTStatus      = 0xC0000720\n\tSTATUS_CALLBACK_RETURNED_THREAD_AFFINITY                                  NTStatus      = 0xC0000721\n\tSTATUS_LPC_HANDLE_COUNT_EXCEEDED                                          NTStatus      = 0xC0000722\n\tSTATUS_EXECUTABLE_MEMORY_WRITE                                            NTStatus      = 0xC0000723\n\tSTATUS_KERNEL_EXECUTABLE_MEMORY_WRITE                                     NTStatus      = 0xC0000724\n\tSTATUS_ATTACHED_EXECUTABLE_MEMORY_WRITE                                   NTStatus      = 0xC0000725\n\tSTATUS_TRIGGERED_EXECUTABLE_MEMORY_WRITE                                  NTStatus      = 0xC0000726\n\tSTATUS_DISK_REPAIR_DISABLED                                               NTStatus      = 0xC0000800\n\tSTATUS_DS_DOMAIN_RENAME_IN_PROGRESS                                       NTStatus      = 0xC0000801\n\tSTATUS_DISK_QUOTA_EXCEEDED                                                NTStatus      = 0xC0000802\n\tSTATUS_DATA_LOST_REPAIR                                                   NTStatus      = 0x80000803\n\tSTATUS_CONTENT_BLOCKED                                                    NTStatus      = 0xC0000804\n\tSTATUS_BAD_CLUSTERS                                                       NTStatus      = 0xC0000805\n\tSTATUS_VOLUME_DIRTY                                                       NTStatus      = 0xC0000806\n\tSTATUS_DISK_REPAIR_REDIRECTED                                             NTStatus      = 0x40000807\n\tSTATUS_DISK_REPAIR_UNSUCCESSFUL                                           NTStatus      = 0xC0000808\n\tSTATUS_CORRUPT_LOG_OVERFULL                                               NTStatus      = 0xC0000809\n\tSTATUS_CORRUPT_LOG_CORRUPTED                                              NTStatus      = 0xC000080A\n\tSTATUS_CORRUPT_LOG_UNAVAILABLE                                            NTStatus      = 0xC000080B\n\tSTATUS_CORRUPT_LOG_DELETED_FULL                                           NTStatus      = 0xC000080C\n\tSTATUS_CORRUPT_LOG_CLEARED                                                NTStatus      = 0xC000080D\n\tSTATUS_ORPHAN_NAME_EXHAUSTED                                              NTStatus      = 0xC000080E\n\tSTATUS_PROACTIVE_SCAN_IN_PROGRESS                                         NTStatus      = 0xC000080F\n\tSTATUS_ENCRYPTED_IO_NOT_POSSIBLE                                          NTStatus      = 0xC0000810\n\tSTATUS_CORRUPT_LOG_UPLEVEL_RECORDS                                        NTStatus      = 0xC0000811\n\tSTATUS_FILE_CHECKED_OUT                                                   NTStatus      = 0xC0000901\n\tSTATUS_CHECKOUT_REQUIRED                                                  NTStatus      = 0xC0000902\n\tSTATUS_BAD_FILE_TYPE                                                      NTStatus      = 0xC0000903\n\tSTATUS_FILE_TOO_LARGE                                                     NTStatus      = 0xC0000904\n\tSTATUS_FORMS_AUTH_REQUIRED                                                NTStatus      = 0xC0000905\n\tSTATUS_VIRUS_INFECTED                                                     NTStatus      = 0xC0000906\n\tSTATUS_VIRUS_DELETED                                                      NTStatus      = 0xC0000907\n\tSTATUS_BAD_MCFG_TABLE                                                     NTStatus      = 0xC0000908\n\tSTATUS_CANNOT_BREAK_OPLOCK                                                NTStatus      = 0xC0000909\n\tSTATUS_BAD_KEY                                                            NTStatus      = 0xC000090A\n\tSTATUS_BAD_DATA                                                           NTStatus      = 0xC000090B\n\tSTATUS_NO_KEY                                                             NTStatus      = 0xC000090C\n\tSTATUS_FILE_HANDLE_REVOKED                                                NTStatus      = 0xC0000910\n\tSTATUS_WOW_ASSERTION                                                      NTStatus      = 0xC0009898\n\tSTATUS_INVALID_SIGNATURE                                                  NTStatus      = 0xC000A000\n\tSTATUS_HMAC_NOT_SUPPORTED                                                 NTStatus      = 0xC000A001\n\tSTATUS_AUTH_TAG_MISMATCH                                                  NTStatus      = 0xC000A002\n\tSTATUS_INVALID_STATE_TRANSITION                                           NTStatus      = 0xC000A003\n\tSTATUS_INVALID_KERNEL_INFO_VERSION                                        NTStatus      = 0xC000A004\n\tSTATUS_INVALID_PEP_INFO_VERSION                                           NTStatus      = 0xC000A005\n\tSTATUS_HANDLE_REVOKED                                                     NTStatus      = 0xC000A006\n\tSTATUS_EOF_ON_GHOSTED_RANGE                                               NTStatus      = 0xC000A007\n\tSTATUS_IPSEC_QUEUE_OVERFLOW                                               NTStatus      = 0xC000A010\n\tSTATUS_ND_QUEUE_OVERFLOW                                                  NTStatus      = 0xC000A011\n\tSTATUS_HOPLIMIT_EXCEEDED                                                  NTStatus      = 0xC000A012\n\tSTATUS_PROTOCOL_NOT_SUPPORTED                                             NTStatus      = 0xC000A013\n\tSTATUS_FASTPATH_REJECTED                                                  NTStatus      = 0xC000A014\n\tSTATUS_LOST_WRITEBEHIND_DATA_NETWORK_DISCONNECTED                         NTStatus      = 0xC000A080\n\tSTATUS_LOST_WRITEBEHIND_DATA_NETWORK_SERVER_ERROR                         NTStatus      = 0xC000A081\n\tSTATUS_LOST_WRITEBEHIND_DATA_LOCAL_DISK_ERROR                             NTStatus      = 0xC000A082\n\tSTATUS_XML_PARSE_ERROR                                                    NTStatus      = 0xC000A083\n\tSTATUS_XMLDSIG_ERROR                                                      NTStatus      = 0xC000A084\n\tSTATUS_WRONG_COMPARTMENT                                                  NTStatus      = 0xC000A085\n\tSTATUS_AUTHIP_FAILURE                                                     NTStatus      = 0xC000A086\n\tSTATUS_DS_OID_MAPPED_GROUP_CANT_HAVE_MEMBERS                              NTStatus      = 0xC000A087\n\tSTATUS_DS_OID_NOT_FOUND                                                   NTStatus      = 0xC000A088\n\tSTATUS_INCORRECT_ACCOUNT_TYPE                                             NTStatus      = 0xC000A089\n\tSTATUS_HASH_NOT_SUPPORTED                                                 NTStatus      = 0xC000A100\n\tSTATUS_HASH_NOT_PRESENT                                                   NTStatus      = 0xC000A101\n\tSTATUS_SECONDARY_IC_PROVIDER_NOT_REGISTERED                               NTStatus      = 0xC000A121\n\tSTATUS_GPIO_CLIENT_INFORMATION_INVALID                                    NTStatus      = 0xC000A122\n\tSTATUS_GPIO_VERSION_NOT_SUPPORTED                                         NTStatus      = 0xC000A123\n\tSTATUS_GPIO_INVALID_REGISTRATION_PACKET                                   NTStatus      = 0xC000A124\n\tSTATUS_GPIO_OPERATION_DENIED                                              NTStatus      = 0xC000A125\n\tSTATUS_GPIO_INCOMPATIBLE_CONNECT_MODE                                     NTStatus      = 0xC000A126\n\tSTATUS_GPIO_INTERRUPT_ALREADY_UNMASKED                                    NTStatus      = 0x8000A127\n\tSTATUS_CANNOT_SWITCH_RUNLEVEL                                             NTStatus      = 0xC000A141\n\tSTATUS_INVALID_RUNLEVEL_SETTING                                           NTStatus      = 0xC000A142\n\tSTATUS_RUNLEVEL_SWITCH_TIMEOUT                                            NTStatus      = 0xC000A143\n\tSTATUS_SERVICES_FAILED_AUTOSTART                                          NTStatus      = 0x4000A144\n\tSTATUS_RUNLEVEL_SWITCH_AGENT_TIMEOUT                                      NTStatus      = 0xC000A145\n\tSTATUS_RUNLEVEL_SWITCH_IN_PROGRESS                                        NTStatus      = 0xC000A146\n\tSTATUS_NOT_APPCONTAINER                                                   NTStatus      = 0xC000A200\n\tSTATUS_NOT_SUPPORTED_IN_APPCONTAINER                                      NTStatus      = 0xC000A201\n\tSTATUS_INVALID_PACKAGE_SID_LENGTH                                         NTStatus      = 0xC000A202\n\tSTATUS_LPAC_ACCESS_DENIED                                                 NTStatus      = 0xC000A203\n\tSTATUS_ADMINLESS_ACCESS_DENIED                                            NTStatus      = 0xC000A204\n\tSTATUS_APP_DATA_NOT_FOUND                                                 NTStatus      = 0xC000A281\n\tSTATUS_APP_DATA_EXPIRED                                                   NTStatus      = 0xC000A282\n\tSTATUS_APP_DATA_CORRUPT                                                   NTStatus      = 0xC000A283\n\tSTATUS_APP_DATA_LIMIT_EXCEEDED                                            NTStatus      = 0xC000A284\n\tSTATUS_APP_DATA_REBOOT_REQUIRED                                           NTStatus      = 0xC000A285\n\tSTATUS_OFFLOAD_READ_FLT_NOT_SUPPORTED                                     NTStatus      = 0xC000A2A1\n\tSTATUS_OFFLOAD_WRITE_FLT_NOT_SUPPORTED                                    NTStatus      = 0xC000A2A2\n\tSTATUS_OFFLOAD_READ_FILE_NOT_SUPPORTED                                    NTStatus      = 0xC000A2A3\n\tSTATUS_OFFLOAD_WRITE_FILE_NOT_SUPPORTED                                   NTStatus      = 0xC000A2A4\n\tSTATUS_WOF_WIM_HEADER_CORRUPT                                             NTStatus      = 0xC000A2A5\n\tSTATUS_WOF_WIM_RESOURCE_TABLE_CORRUPT                                     NTStatus      = 0xC000A2A6\n\tSTATUS_WOF_FILE_RESOURCE_TABLE_CORRUPT                                    NTStatus      = 0xC000A2A7\n\tSTATUS_FILE_SYSTEM_VIRTUALIZATION_UNAVAILABLE                             NTStatus      = 0xC000CE01\n\tSTATUS_FILE_SYSTEM_VIRTUALIZATION_METADATA_CORRUPT                        NTStatus      = 0xC000CE02\n\tSTATUS_FILE_SYSTEM_VIRTUALIZATION_BUSY                                    NTStatus      = 0xC000CE03\n\tSTATUS_FILE_SYSTEM_VIRTUALIZATION_PROVIDER_UNKNOWN                        NTStatus      = 0xC000CE04\n\tSTATUS_FILE_SYSTEM_VIRTUALIZATION_INVALID_OPERATION                       NTStatus      = 0xC000CE05\n\tSTATUS_CLOUD_FILE_SYNC_ROOT_METADATA_CORRUPT                              NTStatus      = 0xC000CF00\n\tSTATUS_CLOUD_FILE_PROVIDER_NOT_RUNNING                                    NTStatus      = 0xC000CF01\n\tSTATUS_CLOUD_FILE_METADATA_CORRUPT                                        NTStatus      = 0xC000CF02\n\tSTATUS_CLOUD_FILE_METADATA_TOO_LARGE                                      NTStatus      = 0xC000CF03\n\tSTATUS_CLOUD_FILE_PROPERTY_BLOB_TOO_LARGE                                 NTStatus      = 0x8000CF04\n\tSTATUS_CLOUD_FILE_TOO_MANY_PROPERTY_BLOBS                                 NTStatus      = 0x8000CF05\n\tSTATUS_CLOUD_FILE_PROPERTY_VERSION_NOT_SUPPORTED                          NTStatus      = 0xC000CF06\n\tSTATUS_NOT_A_CLOUD_FILE                                                   NTStatus      = 0xC000CF07\n\tSTATUS_CLOUD_FILE_NOT_IN_SYNC                                             NTStatus      = 0xC000CF08\n\tSTATUS_CLOUD_FILE_ALREADY_CONNECTED                                       NTStatus      = 0xC000CF09\n\tSTATUS_CLOUD_FILE_NOT_SUPPORTED                                           NTStatus      = 0xC000CF0A\n\tSTATUS_CLOUD_FILE_INVALID_REQUEST                                         NTStatus      = 0xC000CF0B\n\tSTATUS_CLOUD_FILE_READ_ONLY_VOLUME                                        NTStatus      = 0xC000CF0C\n\tSTATUS_CLOUD_FILE_CONNECTED_PROVIDER_ONLY                                 NTStatus      = 0xC000CF0D\n\tSTATUS_CLOUD_FILE_VALIDATION_FAILED                                       NTStatus      = 0xC000CF0E\n\tSTATUS_CLOUD_FILE_AUTHENTICATION_FAILED                                   NTStatus      = 0xC000CF0F\n\tSTATUS_CLOUD_FILE_INSUFFICIENT_RESOURCES                                  NTStatus      = 0xC000CF10\n\tSTATUS_CLOUD_FILE_NETWORK_UNAVAILABLE                                     NTStatus      = 0xC000CF11\n\tSTATUS_CLOUD_FILE_UNSUCCESSFUL                                            NTStatus      = 0xC000CF12\n\tSTATUS_CLOUD_FILE_NOT_UNDER_SYNC_ROOT                                     NTStatus      = 0xC000CF13\n\tSTATUS_CLOUD_FILE_IN_USE                                                  NTStatus      = 0xC000CF14\n\tSTATUS_CLOUD_FILE_PINNED                                                  NTStatus      = 0xC000CF15\n\tSTATUS_CLOUD_FILE_REQUEST_ABORTED                                         NTStatus      = 0xC000CF16\n\tSTATUS_CLOUD_FILE_PROPERTY_CORRUPT                                        NTStatus      = 0xC000CF17\n\tSTATUS_CLOUD_FILE_ACCESS_DENIED                                           NTStatus      = 0xC000CF18\n\tSTATUS_CLOUD_FILE_INCOMPATIBLE_HARDLINKS                                  NTStatus      = 0xC000CF19\n\tSTATUS_CLOUD_FILE_PROPERTY_LOCK_CONFLICT                                  NTStatus      = 0xC000CF1A\n\tSTATUS_CLOUD_FILE_REQUEST_CANCELED                                        NTStatus      = 0xC000CF1B\n\tSTATUS_CLOUD_FILE_PROVIDER_TERMINATED                                     NTStatus      = 0xC000CF1D\n\tSTATUS_NOT_A_CLOUD_SYNC_ROOT                                              NTStatus      = 0xC000CF1E\n\tSTATUS_CLOUD_FILE_REQUEST_TIMEOUT                                         NTStatus      = 0xC000CF1F\n\tSTATUS_ACPI_INVALID_OPCODE                                                NTStatus      = 0xC0140001\n\tSTATUS_ACPI_STACK_OVERFLOW                                                NTStatus      = 0xC0140002\n\tSTATUS_ACPI_ASSERT_FAILED                                                 NTStatus      = 0xC0140003\n\tSTATUS_ACPI_INVALID_INDEX                                                 NTStatus      = 0xC0140004\n\tSTATUS_ACPI_INVALID_ARGUMENT                                              NTStatus      = 0xC0140005\n\tSTATUS_ACPI_FATAL                                                         NTStatus      = 0xC0140006\n\tSTATUS_ACPI_INVALID_SUPERNAME                                             NTStatus      = 0xC0140007\n\tSTATUS_ACPI_INVALID_ARGTYPE                                               NTStatus      = 0xC0140008\n\tSTATUS_ACPI_INVALID_OBJTYPE                                               NTStatus      = 0xC0140009\n\tSTATUS_ACPI_INVALID_TARGETTYPE                                            NTStatus      = 0xC014000A\n\tSTATUS_ACPI_INCORRECT_ARGUMENT_COUNT                                      NTStatus      = 0xC014000B\n\tSTATUS_ACPI_ADDRESS_NOT_MAPPED                                            NTStatus      = 0xC014000C\n\tSTATUS_ACPI_INVALID_EVENTTYPE                                             NTStatus      = 0xC014000D\n\tSTATUS_ACPI_HANDLER_COLLISION                                             NTStatus      = 0xC014000E\n\tSTATUS_ACPI_INVALID_DATA                                                  NTStatus      = 0xC014000F\n\tSTATUS_ACPI_INVALID_REGION                                                NTStatus      = 0xC0140010\n\tSTATUS_ACPI_INVALID_ACCESS_SIZE                                           NTStatus      = 0xC0140011\n\tSTATUS_ACPI_ACQUIRE_GLOBAL_LOCK                                           NTStatus      = 0xC0140012\n\tSTATUS_ACPI_ALREADY_INITIALIZED                                           NTStatus      = 0xC0140013\n\tSTATUS_ACPI_NOT_INITIALIZED                                               NTStatus      = 0xC0140014\n\tSTATUS_ACPI_INVALID_MUTEX_LEVEL                                           NTStatus      = 0xC0140015\n\tSTATUS_ACPI_MUTEX_NOT_OWNED                                               NTStatus      = 0xC0140016\n\tSTATUS_ACPI_MUTEX_NOT_OWNER                                               NTStatus      = 0xC0140017\n\tSTATUS_ACPI_RS_ACCESS                                                     NTStatus      = 0xC0140018\n\tSTATUS_ACPI_INVALID_TABLE                                                 NTStatus      = 0xC0140019\n\tSTATUS_ACPI_REG_HANDLER_FAILED                                            NTStatus      = 0xC0140020\n\tSTATUS_ACPI_POWER_REQUEST_FAILED                                          NTStatus      = 0xC0140021\n\tSTATUS_CTX_WINSTATION_NAME_INVALID                                        NTStatus      = 0xC00A0001\n\tSTATUS_CTX_INVALID_PD                                                     NTStatus      = 0xC00A0002\n\tSTATUS_CTX_PD_NOT_FOUND                                                   NTStatus      = 0xC00A0003\n\tSTATUS_CTX_CDM_CONNECT                                                    NTStatus      = 0x400A0004\n\tSTATUS_CTX_CDM_DISCONNECT                                                 NTStatus      = 0x400A0005\n\tSTATUS_CTX_CLOSE_PENDING                                                  NTStatus      = 0xC00A0006\n\tSTATUS_CTX_NO_OUTBUF                                                      NTStatus      = 0xC00A0007\n\tSTATUS_CTX_MODEM_INF_NOT_FOUND                                            NTStatus      = 0xC00A0008\n\tSTATUS_CTX_INVALID_MODEMNAME                                              NTStatus      = 0xC00A0009\n\tSTATUS_CTX_RESPONSE_ERROR                                                 NTStatus      = 0xC00A000A\n\tSTATUS_CTX_MODEM_RESPONSE_TIMEOUT                                         NTStatus      = 0xC00A000B\n\tSTATUS_CTX_MODEM_RESPONSE_NO_CARRIER                                      NTStatus      = 0xC00A000C\n\tSTATUS_CTX_MODEM_RESPONSE_NO_DIALTONE                                     NTStatus      = 0xC00A000D\n\tSTATUS_CTX_MODEM_RESPONSE_BUSY                                            NTStatus      = 0xC00A000E\n\tSTATUS_CTX_MODEM_RESPONSE_VOICE                                           NTStatus      = 0xC00A000F\n\tSTATUS_CTX_TD_ERROR                                                       NTStatus      = 0xC00A0010\n\tSTATUS_CTX_LICENSE_CLIENT_INVALID                                         NTStatus      = 0xC00A0012\n\tSTATUS_CTX_LICENSE_NOT_AVAILABLE                                          NTStatus      = 0xC00A0013\n\tSTATUS_CTX_LICENSE_EXPIRED                                                NTStatus      = 0xC00A0014\n\tSTATUS_CTX_WINSTATION_NOT_FOUND                                           NTStatus      = 0xC00A0015\n\tSTATUS_CTX_WINSTATION_NAME_COLLISION                                      NTStatus      = 0xC00A0016\n\tSTATUS_CTX_WINSTATION_BUSY                                                NTStatus      = 0xC00A0017\n\tSTATUS_CTX_BAD_VIDEO_MODE                                                 NTStatus      = 0xC00A0018\n\tSTATUS_CTX_GRAPHICS_INVALID                                               NTStatus      = 0xC00A0022\n\tSTATUS_CTX_NOT_CONSOLE                                                    NTStatus      = 0xC00A0024\n\tSTATUS_CTX_CLIENT_QUERY_TIMEOUT                                           NTStatus      = 0xC00A0026\n\tSTATUS_CTX_CONSOLE_DISCONNECT                                             NTStatus      = 0xC00A0027\n\tSTATUS_CTX_CONSOLE_CONNECT                                                NTStatus      = 0xC00A0028\n\tSTATUS_CTX_SHADOW_DENIED                                                  NTStatus      = 0xC00A002A\n\tSTATUS_CTX_WINSTATION_ACCESS_DENIED                                       NTStatus      = 0xC00A002B\n\tSTATUS_CTX_INVALID_WD                                                     NTStatus      = 0xC00A002E\n\tSTATUS_CTX_WD_NOT_FOUND                                                   NTStatus      = 0xC00A002F\n\tSTATUS_CTX_SHADOW_INVALID                                                 NTStatus      = 0xC00A0030\n\tSTATUS_CTX_SHADOW_DISABLED                                                NTStatus      = 0xC00A0031\n\tSTATUS_RDP_PROTOCOL_ERROR                                                 NTStatus      = 0xC00A0032\n\tSTATUS_CTX_CLIENT_LICENSE_NOT_SET                                         NTStatus      = 0xC00A0033\n\tSTATUS_CTX_CLIENT_LICENSE_IN_USE                                          NTStatus      = 0xC00A0034\n\tSTATUS_CTX_SHADOW_ENDED_BY_MODE_CHANGE                                    NTStatus      = 0xC00A0035\n\tSTATUS_CTX_SHADOW_NOT_RUNNING                                             NTStatus      = 0xC00A0036\n\tSTATUS_CTX_LOGON_DISABLED                                                 NTStatus      = 0xC00A0037\n\tSTATUS_CTX_SECURITY_LAYER_ERROR                                           NTStatus      = 0xC00A0038\n\tSTATUS_TS_INCOMPATIBLE_SESSIONS                                           NTStatus      = 0xC00A0039\n\tSTATUS_TS_VIDEO_SUBSYSTEM_ERROR                                           NTStatus      = 0xC00A003A\n\tSTATUS_PNP_BAD_MPS_TABLE                                                  NTStatus      = 0xC0040035\n\tSTATUS_PNP_TRANSLATION_FAILED                                             NTStatus      = 0xC0040036\n\tSTATUS_PNP_IRQ_TRANSLATION_FAILED                                         NTStatus      = 0xC0040037\n\tSTATUS_PNP_INVALID_ID                                                     NTStatus      = 0xC0040038\n\tSTATUS_IO_REISSUE_AS_CACHED                                               NTStatus      = 0xC0040039\n\tSTATUS_MUI_FILE_NOT_FOUND                                                 NTStatus      = 0xC00B0001\n\tSTATUS_MUI_INVALID_FILE                                                   NTStatus      = 0xC00B0002\n\tSTATUS_MUI_INVALID_RC_CONFIG                                              NTStatus      = 0xC00B0003\n\tSTATUS_MUI_INVALID_LOCALE_NAME                                            NTStatus      = 0xC00B0004\n\tSTATUS_MUI_INVALID_ULTIMATEFALLBACK_NAME                                  NTStatus      = 0xC00B0005\n\tSTATUS_MUI_FILE_NOT_LOADED                                                NTStatus      = 0xC00B0006\n\tSTATUS_RESOURCE_ENUM_USER_STOP                                            NTStatus      = 0xC00B0007\n\tSTATUS_FLT_NO_HANDLER_DEFINED                                             NTStatus      = 0xC01C0001\n\tSTATUS_FLT_CONTEXT_ALREADY_DEFINED                                        NTStatus      = 0xC01C0002\n\tSTATUS_FLT_INVALID_ASYNCHRONOUS_REQUEST                                   NTStatus      = 0xC01C0003\n\tSTATUS_FLT_DISALLOW_FAST_IO                                               NTStatus      = 0xC01C0004\n\tSTATUS_FLT_INVALID_NAME_REQUEST                                           NTStatus      = 0xC01C0005\n\tSTATUS_FLT_NOT_SAFE_TO_POST_OPERATION                                     NTStatus      = 0xC01C0006\n\tSTATUS_FLT_NOT_INITIALIZED                                                NTStatus      = 0xC01C0007\n\tSTATUS_FLT_FILTER_NOT_READY                                               NTStatus      = 0xC01C0008\n\tSTATUS_FLT_POST_OPERATION_CLEANUP                                         NTStatus      = 0xC01C0009\n\tSTATUS_FLT_INTERNAL_ERROR                                                 NTStatus      = 0xC01C000A\n\tSTATUS_FLT_DELETING_OBJECT                                                NTStatus      = 0xC01C000B\n\tSTATUS_FLT_MUST_BE_NONPAGED_POOL                                          NTStatus      = 0xC01C000C\n\tSTATUS_FLT_DUPLICATE_ENTRY                                                NTStatus      = 0xC01C000D\n\tSTATUS_FLT_CBDQ_DISABLED                                                  NTStatus      = 0xC01C000E\n\tSTATUS_FLT_DO_NOT_ATTACH                                                  NTStatus      = 0xC01C000F\n\tSTATUS_FLT_DO_NOT_DETACH                                                  NTStatus      = 0xC01C0010\n\tSTATUS_FLT_INSTANCE_ALTITUDE_COLLISION                                    NTStatus      = 0xC01C0011\n\tSTATUS_FLT_INSTANCE_NAME_COLLISION                                        NTStatus      = 0xC01C0012\n\tSTATUS_FLT_FILTER_NOT_FOUND                                               NTStatus      = 0xC01C0013\n\tSTATUS_FLT_VOLUME_NOT_FOUND                                               NTStatus      = 0xC01C0014\n\tSTATUS_FLT_INSTANCE_NOT_FOUND                                             NTStatus      = 0xC01C0015\n\tSTATUS_FLT_CONTEXT_ALLOCATION_NOT_FOUND                                   NTStatus      = 0xC01C0016\n\tSTATUS_FLT_INVALID_CONTEXT_REGISTRATION                                   NTStatus      = 0xC01C0017\n\tSTATUS_FLT_NAME_CACHE_MISS                                                NTStatus      = 0xC01C0018\n\tSTATUS_FLT_NO_DEVICE_OBJECT                                               NTStatus      = 0xC01C0019\n\tSTATUS_FLT_VOLUME_ALREADY_MOUNTED                                         NTStatus      = 0xC01C001A\n\tSTATUS_FLT_ALREADY_ENLISTED                                               NTStatus      = 0xC01C001B\n\tSTATUS_FLT_CONTEXT_ALREADY_LINKED                                         NTStatus      = 0xC01C001C\n\tSTATUS_FLT_NO_WAITER_FOR_REPLY                                            NTStatus      = 0xC01C0020\n\tSTATUS_FLT_REGISTRATION_BUSY                                              NTStatus      = 0xC01C0023\n\tSTATUS_SXS_SECTION_NOT_FOUND                                              NTStatus      = 0xC0150001\n\tSTATUS_SXS_CANT_GEN_ACTCTX                                                NTStatus      = 0xC0150002\n\tSTATUS_SXS_INVALID_ACTCTXDATA_FORMAT                                      NTStatus      = 0xC0150003\n\tSTATUS_SXS_ASSEMBLY_NOT_FOUND                                             NTStatus      = 0xC0150004\n\tSTATUS_SXS_MANIFEST_FORMAT_ERROR                                          NTStatus      = 0xC0150005\n\tSTATUS_SXS_MANIFEST_PARSE_ERROR                                           NTStatus      = 0xC0150006\n\tSTATUS_SXS_ACTIVATION_CONTEXT_DISABLED                                    NTStatus      = 0xC0150007\n\tSTATUS_SXS_KEY_NOT_FOUND                                                  NTStatus      = 0xC0150008\n\tSTATUS_SXS_VERSION_CONFLICT                                               NTStatus      = 0xC0150009\n\tSTATUS_SXS_WRONG_SECTION_TYPE                                             NTStatus      = 0xC015000A\n\tSTATUS_SXS_THREAD_QUERIES_DISABLED                                        NTStatus      = 0xC015000B\n\tSTATUS_SXS_ASSEMBLY_MISSING                                               NTStatus      = 0xC015000C\n\tSTATUS_SXS_RELEASE_ACTIVATION_CONTEXT                                     NTStatus      = 0x4015000D\n\tSTATUS_SXS_PROCESS_DEFAULT_ALREADY_SET                                    NTStatus      = 0xC015000E\n\tSTATUS_SXS_EARLY_DEACTIVATION                                             NTStatus      = 0xC015000F\n\tSTATUS_SXS_INVALID_DEACTIVATION                                           NTStatus      = 0xC0150010\n\tSTATUS_SXS_MULTIPLE_DEACTIVATION                                          NTStatus      = 0xC0150011\n\tSTATUS_SXS_SYSTEM_DEFAULT_ACTIVATION_CONTEXT_EMPTY                        NTStatus      = 0xC0150012\n\tSTATUS_SXS_PROCESS_TERMINATION_REQUESTED                                  NTStatus      = 0xC0150013\n\tSTATUS_SXS_CORRUPT_ACTIVATION_STACK                                       NTStatus      = 0xC0150014\n\tSTATUS_SXS_CORRUPTION                                                     NTStatus      = 0xC0150015\n\tSTATUS_SXS_INVALID_IDENTITY_ATTRIBUTE_VALUE                               NTStatus      = 0xC0150016\n\tSTATUS_SXS_INVALID_IDENTITY_ATTRIBUTE_NAME                                NTStatus      = 0xC0150017\n\tSTATUS_SXS_IDENTITY_DUPLICATE_ATTRIBUTE                                   NTStatus      = 0xC0150018\n\tSTATUS_SXS_IDENTITY_PARSE_ERROR                                           NTStatus      = 0xC0150019\n\tSTATUS_SXS_COMPONENT_STORE_CORRUPT                                        NTStatus      = 0xC015001A\n\tSTATUS_SXS_FILE_HASH_MISMATCH                                             NTStatus      = 0xC015001B\n\tSTATUS_SXS_MANIFEST_IDENTITY_SAME_BUT_CONTENTS_DIFFERENT                  NTStatus      = 0xC015001C\n\tSTATUS_SXS_IDENTITIES_DIFFERENT                                           NTStatus      = 0xC015001D\n\tSTATUS_SXS_ASSEMBLY_IS_NOT_A_DEPLOYMENT                                   NTStatus      = 0xC015001E\n\tSTATUS_SXS_FILE_NOT_PART_OF_ASSEMBLY                                      NTStatus      = 0xC015001F\n\tSTATUS_ADVANCED_INSTALLER_FAILED                                          NTStatus      = 0xC0150020\n\tSTATUS_XML_ENCODING_MISMATCH                                              NTStatus      = 0xC0150021\n\tSTATUS_SXS_MANIFEST_TOO_BIG                                               NTStatus      = 0xC0150022\n\tSTATUS_SXS_SETTING_NOT_REGISTERED                                         NTStatus      = 0xC0150023\n\tSTATUS_SXS_TRANSACTION_CLOSURE_INCOMPLETE                                 NTStatus      = 0xC0150024\n\tSTATUS_SMI_PRIMITIVE_INSTALLER_FAILED                                     NTStatus      = 0xC0150025\n\tSTATUS_GENERIC_COMMAND_FAILED                                             NTStatus      = 0xC0150026\n\tSTATUS_SXS_FILE_HASH_MISSING                                              NTStatus      = 0xC0150027\n\tSTATUS_CLUSTER_INVALID_NODE                                               NTStatus      = 0xC0130001\n\tSTATUS_CLUSTER_NODE_EXISTS                                                NTStatus      = 0xC0130002\n\tSTATUS_CLUSTER_JOIN_IN_PROGRESS                                           NTStatus      = 0xC0130003\n\tSTATUS_CLUSTER_NODE_NOT_FOUND                                             NTStatus      = 0xC0130004\n\tSTATUS_CLUSTER_LOCAL_NODE_NOT_FOUND                                       NTStatus      = 0xC0130005\n\tSTATUS_CLUSTER_NETWORK_EXISTS                                             NTStatus      = 0xC0130006\n\tSTATUS_CLUSTER_NETWORK_NOT_FOUND                                          NTStatus      = 0xC0130007\n\tSTATUS_CLUSTER_NETINTERFACE_EXISTS                                        NTStatus      = 0xC0130008\n\tSTATUS_CLUSTER_NETINTERFACE_NOT_FOUND                                     NTStatus      = 0xC0130009\n\tSTATUS_CLUSTER_INVALID_REQUEST                                            NTStatus      = 0xC013000A\n\tSTATUS_CLUSTER_INVALID_NETWORK_PROVIDER                                   NTStatus      = 0xC013000B\n\tSTATUS_CLUSTER_NODE_DOWN                                                  NTStatus      = 0xC013000C\n\tSTATUS_CLUSTER_NODE_UNREACHABLE                                           NTStatus      = 0xC013000D\n\tSTATUS_CLUSTER_NODE_NOT_MEMBER                                            NTStatus      = 0xC013000E\n\tSTATUS_CLUSTER_JOIN_NOT_IN_PROGRESS                                       NTStatus      = 0xC013000F\n\tSTATUS_CLUSTER_INVALID_NETWORK                                            NTStatus      = 0xC0130010\n\tSTATUS_CLUSTER_NO_NET_ADAPTERS                                            NTStatus      = 0xC0130011\n\tSTATUS_CLUSTER_NODE_UP                                                    NTStatus      = 0xC0130012\n\tSTATUS_CLUSTER_NODE_PAUSED                                                NTStatus      = 0xC0130013\n\tSTATUS_CLUSTER_NODE_NOT_PAUSED                                            NTStatus      = 0xC0130014\n\tSTATUS_CLUSTER_NO_SECURITY_CONTEXT                                        NTStatus      = 0xC0130015\n\tSTATUS_CLUSTER_NETWORK_NOT_INTERNAL                                       NTStatus      = 0xC0130016\n\tSTATUS_CLUSTER_POISONED                                                   NTStatus      = 0xC0130017\n\tSTATUS_CLUSTER_NON_CSV_PATH                                               NTStatus      = 0xC0130018\n\tSTATUS_CLUSTER_CSV_VOLUME_NOT_LOCAL                                       NTStatus      = 0xC0130019\n\tSTATUS_CLUSTER_CSV_READ_OPLOCK_BREAK_IN_PROGRESS                          NTStatus      = 0xC0130020\n\tSTATUS_CLUSTER_CSV_AUTO_PAUSE_ERROR                                       NTStatus      = 0xC0130021\n\tSTATUS_CLUSTER_CSV_REDIRECTED                                             NTStatus      = 0xC0130022\n\tSTATUS_CLUSTER_CSV_NOT_REDIRECTED                                         NTStatus      = 0xC0130023\n\tSTATUS_CLUSTER_CSV_VOLUME_DRAINING                                        NTStatus      = 0xC0130024\n\tSTATUS_CLUSTER_CSV_SNAPSHOT_CREATION_IN_PROGRESS                          NTStatus      = 0xC0130025\n\tSTATUS_CLUSTER_CSV_VOLUME_DRAINING_SUCCEEDED_DOWNLEVEL                    NTStatus      = 0xC0130026\n\tSTATUS_CLUSTER_CSV_NO_SNAPSHOTS                                           NTStatus      = 0xC0130027\n\tSTATUS_CSV_IO_PAUSE_TIMEOUT                                               NTStatus      = 0xC0130028\n\tSTATUS_CLUSTER_CSV_INVALID_HANDLE                                         NTStatus      = 0xC0130029\n\tSTATUS_CLUSTER_CSV_SUPPORTED_ONLY_ON_COORDINATOR                          NTStatus      = 0xC0130030\n\tSTATUS_CLUSTER_CAM_TICKET_REPLAY_DETECTED                                 NTStatus      = 0xC0130031\n\tSTATUS_TRANSACTIONAL_CONFLICT                                             NTStatus      = 0xC0190001\n\tSTATUS_INVALID_TRANSACTION                                                NTStatus      = 0xC0190002\n\tSTATUS_TRANSACTION_NOT_ACTIVE                                             NTStatus      = 0xC0190003\n\tSTATUS_TM_INITIALIZATION_FAILED                                           NTStatus      = 0xC0190004\n\tSTATUS_RM_NOT_ACTIVE                                                      NTStatus      = 0xC0190005\n\tSTATUS_RM_METADATA_CORRUPT                                                NTStatus      = 0xC0190006\n\tSTATUS_TRANSACTION_NOT_JOINED                                             NTStatus      = 0xC0190007\n\tSTATUS_DIRECTORY_NOT_RM                                                   NTStatus      = 0xC0190008\n\tSTATUS_COULD_NOT_RESIZE_LOG                                               NTStatus      = 0x80190009\n\tSTATUS_TRANSACTIONS_UNSUPPORTED_REMOTE                                    NTStatus      = 0xC019000A\n\tSTATUS_LOG_RESIZE_INVALID_SIZE                                            NTStatus      = 0xC019000B\n\tSTATUS_REMOTE_FILE_VERSION_MISMATCH                                       NTStatus      = 0xC019000C\n\tSTATUS_CRM_PROTOCOL_ALREADY_EXISTS                                        NTStatus      = 0xC019000F\n\tSTATUS_TRANSACTION_PROPAGATION_FAILED                                     NTStatus      = 0xC0190010\n\tSTATUS_CRM_PROTOCOL_NOT_FOUND                                             NTStatus      = 0xC0190011\n\tSTATUS_TRANSACTION_SUPERIOR_EXISTS                                        NTStatus      = 0xC0190012\n\tSTATUS_TRANSACTION_REQUEST_NOT_VALID                                      NTStatus      = 0xC0190013\n\tSTATUS_TRANSACTION_NOT_REQUESTED                                          NTStatus      = 0xC0190014\n\tSTATUS_TRANSACTION_ALREADY_ABORTED                                        NTStatus      = 0xC0190015\n\tSTATUS_TRANSACTION_ALREADY_COMMITTED                                      NTStatus      = 0xC0190016\n\tSTATUS_TRANSACTION_INVALID_MARSHALL_BUFFER                                NTStatus      = 0xC0190017\n\tSTATUS_CURRENT_TRANSACTION_NOT_VALID                                      NTStatus      = 0xC0190018\n\tSTATUS_LOG_GROWTH_FAILED                                                  NTStatus      = 0xC0190019\n\tSTATUS_OBJECT_NO_LONGER_EXISTS                                            NTStatus      = 0xC0190021\n\tSTATUS_STREAM_MINIVERSION_NOT_FOUND                                       NTStatus      = 0xC0190022\n\tSTATUS_STREAM_MINIVERSION_NOT_VALID                                       NTStatus      = 0xC0190023\n\tSTATUS_MINIVERSION_INACCESSIBLE_FROM_SPECIFIED_TRANSACTION                NTStatus      = 0xC0190024\n\tSTATUS_CANT_OPEN_MINIVERSION_WITH_MODIFY_INTENT                           NTStatus      = 0xC0190025\n\tSTATUS_CANT_CREATE_MORE_STREAM_MINIVERSIONS                               NTStatus      = 0xC0190026\n\tSTATUS_HANDLE_NO_LONGER_VALID                                             NTStatus      = 0xC0190028\n\tSTATUS_NO_TXF_METADATA                                                    NTStatus      = 0x80190029\n\tSTATUS_LOG_CORRUPTION_DETECTED                                            NTStatus      = 0xC0190030\n\tSTATUS_CANT_RECOVER_WITH_HANDLE_OPEN                                      NTStatus      = 0x80190031\n\tSTATUS_RM_DISCONNECTED                                                    NTStatus      = 0xC0190032\n\tSTATUS_ENLISTMENT_NOT_SUPERIOR                                            NTStatus      = 0xC0190033\n\tSTATUS_RECOVERY_NOT_NEEDED                                                NTStatus      = 0x40190034\n\tSTATUS_RM_ALREADY_STARTED                                                 NTStatus      = 0x40190035\n\tSTATUS_FILE_IDENTITY_NOT_PERSISTENT                                       NTStatus      = 0xC0190036\n\tSTATUS_CANT_BREAK_TRANSACTIONAL_DEPENDENCY                                NTStatus      = 0xC0190037\n\tSTATUS_CANT_CROSS_RM_BOUNDARY                                             NTStatus      = 0xC0190038\n\tSTATUS_TXF_DIR_NOT_EMPTY                                                  NTStatus      = 0xC0190039\n\tSTATUS_INDOUBT_TRANSACTIONS_EXIST                                         NTStatus      = 0xC019003A\n\tSTATUS_TM_VOLATILE                                                        NTStatus      = 0xC019003B\n\tSTATUS_ROLLBACK_TIMER_EXPIRED                                             NTStatus      = 0xC019003C\n\tSTATUS_TXF_ATTRIBUTE_CORRUPT                                              NTStatus      = 0xC019003D\n\tSTATUS_EFS_NOT_ALLOWED_IN_TRANSACTION                                     NTStatus      = 0xC019003E\n\tSTATUS_TRANSACTIONAL_OPEN_NOT_ALLOWED                                     NTStatus      = 0xC019003F\n\tSTATUS_TRANSACTED_MAPPING_UNSUPPORTED_REMOTE                              NTStatus      = 0xC0190040\n\tSTATUS_TXF_METADATA_ALREADY_PRESENT                                       NTStatus      = 0x80190041\n\tSTATUS_TRANSACTION_SCOPE_CALLBACKS_NOT_SET                                NTStatus      = 0x80190042\n\tSTATUS_TRANSACTION_REQUIRED_PROMOTION                                     NTStatus      = 0xC0190043\n\tSTATUS_CANNOT_EXECUTE_FILE_IN_TRANSACTION                                 NTStatus      = 0xC0190044\n\tSTATUS_TRANSACTIONS_NOT_FROZEN                                            NTStatus      = 0xC0190045\n\tSTATUS_TRANSACTION_FREEZE_IN_PROGRESS                                     NTStatus      = 0xC0190046\n\tSTATUS_NOT_SNAPSHOT_VOLUME                                                NTStatus      = 0xC0190047\n\tSTATUS_NO_SAVEPOINT_WITH_OPEN_FILES                                       NTStatus      = 0xC0190048\n\tSTATUS_SPARSE_NOT_ALLOWED_IN_TRANSACTION                                  NTStatus      = 0xC0190049\n\tSTATUS_TM_IDENTITY_MISMATCH                                               NTStatus      = 0xC019004A\n\tSTATUS_FLOATED_SECTION                                                    NTStatus      = 0xC019004B\n\tSTATUS_CANNOT_ACCEPT_TRANSACTED_WORK                                      NTStatus      = 0xC019004C\n\tSTATUS_CANNOT_ABORT_TRANSACTIONS                                          NTStatus      = 0xC019004D\n\tSTATUS_TRANSACTION_NOT_FOUND                                              NTStatus      = 0xC019004E\n\tSTATUS_RESOURCEMANAGER_NOT_FOUND                                          NTStatus      = 0xC019004F\n\tSTATUS_ENLISTMENT_NOT_FOUND                                               NTStatus      = 0xC0190050\n\tSTATUS_TRANSACTIONMANAGER_NOT_FOUND                                       NTStatus      = 0xC0190051\n\tSTATUS_TRANSACTIONMANAGER_NOT_ONLINE                                      NTStatus      = 0xC0190052\n\tSTATUS_TRANSACTIONMANAGER_RECOVERY_NAME_COLLISION                         NTStatus      = 0xC0190053\n\tSTATUS_TRANSACTION_NOT_ROOT                                               NTStatus      = 0xC0190054\n\tSTATUS_TRANSACTION_OBJECT_EXPIRED                                         NTStatus      = 0xC0190055\n\tSTATUS_COMPRESSION_NOT_ALLOWED_IN_TRANSACTION                             NTStatus      = 0xC0190056\n\tSTATUS_TRANSACTION_RESPONSE_NOT_ENLISTED                                  NTStatus      = 0xC0190057\n\tSTATUS_TRANSACTION_RECORD_TOO_LONG                                        NTStatus      = 0xC0190058\n\tSTATUS_NO_LINK_TRACKING_IN_TRANSACTION                                    NTStatus      = 0xC0190059\n\tSTATUS_OPERATION_NOT_SUPPORTED_IN_TRANSACTION                             NTStatus      = 0xC019005A\n\tSTATUS_TRANSACTION_INTEGRITY_VIOLATED                                     NTStatus      = 0xC019005B\n\tSTATUS_TRANSACTIONMANAGER_IDENTITY_MISMATCH                               NTStatus      = 0xC019005C\n\tSTATUS_RM_CANNOT_BE_FROZEN_FOR_SNAPSHOT                                   NTStatus      = 0xC019005D\n\tSTATUS_TRANSACTION_MUST_WRITETHROUGH                                      NTStatus      = 0xC019005E\n\tSTATUS_TRANSACTION_NO_SUPERIOR                                            NTStatus      = 0xC019005F\n\tSTATUS_EXPIRED_HANDLE                                                     NTStatus      = 0xC0190060\n\tSTATUS_TRANSACTION_NOT_ENLISTED                                           NTStatus      = 0xC0190061\n\tSTATUS_LOG_SECTOR_INVALID                                                 NTStatus      = 0xC01A0001\n\tSTATUS_LOG_SECTOR_PARITY_INVALID                                          NTStatus      = 0xC01A0002\n\tSTATUS_LOG_SECTOR_REMAPPED                                                NTStatus      = 0xC01A0003\n\tSTATUS_LOG_BLOCK_INCOMPLETE                                               NTStatus      = 0xC01A0004\n\tSTATUS_LOG_INVALID_RANGE                                                  NTStatus      = 0xC01A0005\n\tSTATUS_LOG_BLOCKS_EXHAUSTED                                               NTStatus      = 0xC01A0006\n\tSTATUS_LOG_READ_CONTEXT_INVALID                                           NTStatus      = 0xC01A0007\n\tSTATUS_LOG_RESTART_INVALID                                                NTStatus      = 0xC01A0008\n\tSTATUS_LOG_BLOCK_VERSION                                                  NTStatus      = 0xC01A0009\n\tSTATUS_LOG_BLOCK_INVALID                                                  NTStatus      = 0xC01A000A\n\tSTATUS_LOG_READ_MODE_INVALID                                              NTStatus      = 0xC01A000B\n\tSTATUS_LOG_NO_RESTART                                                     NTStatus      = 0x401A000C\n\tSTATUS_LOG_METADATA_CORRUPT                                               NTStatus      = 0xC01A000D\n\tSTATUS_LOG_METADATA_INVALID                                               NTStatus      = 0xC01A000E\n\tSTATUS_LOG_METADATA_INCONSISTENT                                          NTStatus      = 0xC01A000F\n\tSTATUS_LOG_RESERVATION_INVALID                                            NTStatus      = 0xC01A0010\n\tSTATUS_LOG_CANT_DELETE                                                    NTStatus      = 0xC01A0011\n\tSTATUS_LOG_CONTAINER_LIMIT_EXCEEDED                                       NTStatus      = 0xC01A0012\n\tSTATUS_LOG_START_OF_LOG                                                   NTStatus      = 0xC01A0013\n\tSTATUS_LOG_POLICY_ALREADY_INSTALLED                                       NTStatus      = 0xC01A0014\n\tSTATUS_LOG_POLICY_NOT_INSTALLED                                           NTStatus      = 0xC01A0015\n\tSTATUS_LOG_POLICY_INVALID                                                 NTStatus      = 0xC01A0016\n\tSTATUS_LOG_POLICY_CONFLICT                                                NTStatus      = 0xC01A0017\n\tSTATUS_LOG_PINNED_ARCHIVE_TAIL                                            NTStatus      = 0xC01A0018\n\tSTATUS_LOG_RECORD_NONEXISTENT                                             NTStatus      = 0xC01A0019\n\tSTATUS_LOG_RECORDS_RESERVED_INVALID                                       NTStatus      = 0xC01A001A\n\tSTATUS_LOG_SPACE_RESERVED_INVALID                                         NTStatus      = 0xC01A001B\n\tSTATUS_LOG_TAIL_INVALID                                                   NTStatus      = 0xC01A001C\n\tSTATUS_LOG_FULL                                                           NTStatus      = 0xC01A001D\n\tSTATUS_LOG_MULTIPLEXED                                                    NTStatus      = 0xC01A001E\n\tSTATUS_LOG_DEDICATED                                                      NTStatus      = 0xC01A001F\n\tSTATUS_LOG_ARCHIVE_NOT_IN_PROGRESS                                        NTStatus      = 0xC01A0020\n\tSTATUS_LOG_ARCHIVE_IN_PROGRESS                                            NTStatus      = 0xC01A0021\n\tSTATUS_LOG_EPHEMERAL                                                      NTStatus      = 0xC01A0022\n\tSTATUS_LOG_NOT_ENOUGH_CONTAINERS                                          NTStatus      = 0xC01A0023\n\tSTATUS_LOG_CLIENT_ALREADY_REGISTERED                                      NTStatus      = 0xC01A0024\n\tSTATUS_LOG_CLIENT_NOT_REGISTERED                                          NTStatus      = 0xC01A0025\n\tSTATUS_LOG_FULL_HANDLER_IN_PROGRESS                                       NTStatus      = 0xC01A0026\n\tSTATUS_LOG_CONTAINER_READ_FAILED                                          NTStatus      = 0xC01A0027\n\tSTATUS_LOG_CONTAINER_WRITE_FAILED                                         NTStatus      = 0xC01A0028\n\tSTATUS_LOG_CONTAINER_OPEN_FAILED                                          NTStatus      = 0xC01A0029\n\tSTATUS_LOG_CONTAINER_STATE_INVALID                                        NTStatus      = 0xC01A002A\n\tSTATUS_LOG_STATE_INVALID                                                  NTStatus      = 0xC01A002B\n\tSTATUS_LOG_PINNED                                                         NTStatus      = 0xC01A002C\n\tSTATUS_LOG_METADATA_FLUSH_FAILED                                          NTStatus      = 0xC01A002D\n\tSTATUS_LOG_INCONSISTENT_SECURITY                                          NTStatus      = 0xC01A002E\n\tSTATUS_LOG_APPENDED_FLUSH_FAILED                                          NTStatus      = 0xC01A002F\n\tSTATUS_LOG_PINNED_RESERVATION                                             NTStatus      = 0xC01A0030\n\tSTATUS_VIDEO_HUNG_DISPLAY_DRIVER_THREAD                                   NTStatus      = 0xC01B00EA\n\tSTATUS_VIDEO_HUNG_DISPLAY_DRIVER_THREAD_RECOVERED                         NTStatus      = 0x801B00EB\n\tSTATUS_VIDEO_DRIVER_DEBUG_REPORT_REQUEST                                  NTStatus      = 0x401B00EC\n\tSTATUS_MONITOR_NO_DESCRIPTOR                                              NTStatus      = 0xC01D0001\n\tSTATUS_MONITOR_UNKNOWN_DESCRIPTOR_FORMAT                                  NTStatus      = 0xC01D0002\n\tSTATUS_MONITOR_INVALID_DESCRIPTOR_CHECKSUM                                NTStatus      = 0xC01D0003\n\tSTATUS_MONITOR_INVALID_STANDARD_TIMING_BLOCK                              NTStatus      = 0xC01D0004\n\tSTATUS_MONITOR_WMI_DATABLOCK_REGISTRATION_FAILED                          NTStatus      = 0xC01D0005\n\tSTATUS_MONITOR_INVALID_SERIAL_NUMBER_MONDSC_BLOCK                         NTStatus      = 0xC01D0006\n\tSTATUS_MONITOR_INVALID_USER_FRIENDLY_MONDSC_BLOCK                         NTStatus      = 0xC01D0007\n\tSTATUS_MONITOR_NO_MORE_DESCRIPTOR_DATA                                    NTStatus      = 0xC01D0008\n\tSTATUS_MONITOR_INVALID_DETAILED_TIMING_BLOCK                              NTStatus      = 0xC01D0009\n\tSTATUS_MONITOR_INVALID_MANUFACTURE_DATE                                   NTStatus      = 0xC01D000A\n\tSTATUS_GRAPHICS_NOT_EXCLUSIVE_MODE_OWNER                                  NTStatus      = 0xC01E0000\n\tSTATUS_GRAPHICS_INSUFFICIENT_DMA_BUFFER                                   NTStatus      = 0xC01E0001\n\tSTATUS_GRAPHICS_INVALID_DISPLAY_ADAPTER                                   NTStatus      = 0xC01E0002\n\tSTATUS_GRAPHICS_ADAPTER_WAS_RESET                                         NTStatus      = 0xC01E0003\n\tSTATUS_GRAPHICS_INVALID_DRIVER_MODEL                                      NTStatus      = 0xC01E0004\n\tSTATUS_GRAPHICS_PRESENT_MODE_CHANGED                                      NTStatus      = 0xC01E0005\n\tSTATUS_GRAPHICS_PRESENT_OCCLUDED                                          NTStatus      = 0xC01E0006\n\tSTATUS_GRAPHICS_PRESENT_DENIED                                            NTStatus      = 0xC01E0007\n\tSTATUS_GRAPHICS_CANNOTCOLORCONVERT                                        NTStatus      = 0xC01E0008\n\tSTATUS_GRAPHICS_DRIVER_MISMATCH                                           NTStatus      = 0xC01E0009\n\tSTATUS_GRAPHICS_PARTIAL_DATA_POPULATED                                    NTStatus      = 0x401E000A\n\tSTATUS_GRAPHICS_PRESENT_REDIRECTION_DISABLED                              NTStatus      = 0xC01E000B\n\tSTATUS_GRAPHICS_PRESENT_UNOCCLUDED                                        NTStatus      = 0xC01E000C\n\tSTATUS_GRAPHICS_WINDOWDC_NOT_AVAILABLE                                    NTStatus      = 0xC01E000D\n\tSTATUS_GRAPHICS_WINDOWLESS_PRESENT_DISABLED                               NTStatus      = 0xC01E000E\n\tSTATUS_GRAPHICS_PRESENT_INVALID_WINDOW                                    NTStatus      = 0xC01E000F\n\tSTATUS_GRAPHICS_PRESENT_BUFFER_NOT_BOUND                                  NTStatus      = 0xC01E0010\n\tSTATUS_GRAPHICS_VAIL_STATE_CHANGED                                        NTStatus      = 0xC01E0011\n\tSTATUS_GRAPHICS_INDIRECT_DISPLAY_ABANDON_SWAPCHAIN                        NTStatus      = 0xC01E0012\n\tSTATUS_GRAPHICS_INDIRECT_DISPLAY_DEVICE_STOPPED                           NTStatus      = 0xC01E0013\n\tSTATUS_GRAPHICS_NO_VIDEO_MEMORY                                           NTStatus      = 0xC01E0100\n\tSTATUS_GRAPHICS_CANT_LOCK_MEMORY                                          NTStatus      = 0xC01E0101\n\tSTATUS_GRAPHICS_ALLOCATION_BUSY                                           NTStatus      = 0xC01E0102\n\tSTATUS_GRAPHICS_TOO_MANY_REFERENCES                                       NTStatus      = 0xC01E0103\n\tSTATUS_GRAPHICS_TRY_AGAIN_LATER                                           NTStatus      = 0xC01E0104\n\tSTATUS_GRAPHICS_TRY_AGAIN_NOW                                             NTStatus      = 0xC01E0105\n\tSTATUS_GRAPHICS_ALLOCATION_INVALID                                        NTStatus      = 0xC01E0106\n\tSTATUS_GRAPHICS_UNSWIZZLING_APERTURE_UNAVAILABLE                          NTStatus      = 0xC01E0107\n\tSTATUS_GRAPHICS_UNSWIZZLING_APERTURE_UNSUPPORTED                          NTStatus      = 0xC01E0108\n\tSTATUS_GRAPHICS_CANT_EVICT_PINNED_ALLOCATION                              NTStatus      = 0xC01E0109\n\tSTATUS_GRAPHICS_INVALID_ALLOCATION_USAGE                                  NTStatus      = 0xC01E0110\n\tSTATUS_GRAPHICS_CANT_RENDER_LOCKED_ALLOCATION                             NTStatus      = 0xC01E0111\n\tSTATUS_GRAPHICS_ALLOCATION_CLOSED                                         NTStatus      = 0xC01E0112\n\tSTATUS_GRAPHICS_INVALID_ALLOCATION_INSTANCE                               NTStatus      = 0xC01E0113\n\tSTATUS_GRAPHICS_INVALID_ALLOCATION_HANDLE                                 NTStatus      = 0xC01E0114\n\tSTATUS_GRAPHICS_WRONG_ALLOCATION_DEVICE                                   NTStatus      = 0xC01E0115\n\tSTATUS_GRAPHICS_ALLOCATION_CONTENT_LOST                                   NTStatus      = 0xC01E0116\n\tSTATUS_GRAPHICS_GPU_EXCEPTION_ON_DEVICE                                   NTStatus      = 0xC01E0200\n\tSTATUS_GRAPHICS_SKIP_ALLOCATION_PREPARATION                               NTStatus      = 0x401E0201\n\tSTATUS_GRAPHICS_INVALID_VIDPN_TOPOLOGY                                    NTStatus      = 0xC01E0300\n\tSTATUS_GRAPHICS_VIDPN_TOPOLOGY_NOT_SUPPORTED                              NTStatus      = 0xC01E0301\n\tSTATUS_GRAPHICS_VIDPN_TOPOLOGY_CURRENTLY_NOT_SUPPORTED                    NTStatus      = 0xC01E0302\n\tSTATUS_GRAPHICS_INVALID_VIDPN                                             NTStatus      = 0xC01E0303\n\tSTATUS_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE                              NTStatus      = 0xC01E0304\n\tSTATUS_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET                              NTStatus      = 0xC01E0305\n\tSTATUS_GRAPHICS_VIDPN_MODALITY_NOT_SUPPORTED                              NTStatus      = 0xC01E0306\n\tSTATUS_GRAPHICS_MODE_NOT_PINNED                                           NTStatus      = 0x401E0307\n\tSTATUS_GRAPHICS_INVALID_VIDPN_SOURCEMODESET                               NTStatus      = 0xC01E0308\n\tSTATUS_GRAPHICS_INVALID_VIDPN_TARGETMODESET                               NTStatus      = 0xC01E0309\n\tSTATUS_GRAPHICS_INVALID_FREQUENCY                                         NTStatus      = 0xC01E030A\n\tSTATUS_GRAPHICS_INVALID_ACTIVE_REGION                                     NTStatus      = 0xC01E030B\n\tSTATUS_GRAPHICS_INVALID_TOTAL_REGION                                      NTStatus      = 0xC01E030C\n\tSTATUS_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE_MODE                         NTStatus      = 0xC01E0310\n\tSTATUS_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET_MODE                         NTStatus      = 0xC01E0311\n\tSTATUS_GRAPHICS_PINNED_MODE_MUST_REMAIN_IN_SET                            NTStatus      = 0xC01E0312\n\tSTATUS_GRAPHICS_PATH_ALREADY_IN_TOPOLOGY                                  NTStatus      = 0xC01E0313\n\tSTATUS_GRAPHICS_MODE_ALREADY_IN_MODESET                                   NTStatus      = 0xC01E0314\n\tSTATUS_GRAPHICS_INVALID_VIDEOPRESENTSOURCESET                             NTStatus      = 0xC01E0315\n\tSTATUS_GRAPHICS_INVALID_VIDEOPRESENTTARGETSET                             NTStatus      = 0xC01E0316\n\tSTATUS_GRAPHICS_SOURCE_ALREADY_IN_SET                                     NTStatus      = 0xC01E0317\n\tSTATUS_GRAPHICS_TARGET_ALREADY_IN_SET                                     NTStatus      = 0xC01E0318\n\tSTATUS_GRAPHICS_INVALID_VIDPN_PRESENT_PATH                                NTStatus      = 0xC01E0319\n\tSTATUS_GRAPHICS_NO_RECOMMENDED_VIDPN_TOPOLOGY                             NTStatus      = 0xC01E031A\n\tSTATUS_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGESET                         NTStatus      = 0xC01E031B\n\tSTATUS_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE                            NTStatus      = 0xC01E031C\n\tSTATUS_GRAPHICS_FREQUENCYRANGE_NOT_IN_SET                                 NTStatus      = 0xC01E031D\n\tSTATUS_GRAPHICS_NO_PREFERRED_MODE                                         NTStatus      = 0x401E031E\n\tSTATUS_GRAPHICS_FREQUENCYRANGE_ALREADY_IN_SET                             NTStatus      = 0xC01E031F\n\tSTATUS_GRAPHICS_STALE_MODESET                                             NTStatus      = 0xC01E0320\n\tSTATUS_GRAPHICS_INVALID_MONITOR_SOURCEMODESET                             NTStatus      = 0xC01E0321\n\tSTATUS_GRAPHICS_INVALID_MONITOR_SOURCE_MODE                               NTStatus      = 0xC01E0322\n\tSTATUS_GRAPHICS_NO_RECOMMENDED_FUNCTIONAL_VIDPN                           NTStatus      = 0xC01E0323\n\tSTATUS_GRAPHICS_MODE_ID_MUST_BE_UNIQUE                                    NTStatus      = 0xC01E0324\n\tSTATUS_GRAPHICS_EMPTY_ADAPTER_MONITOR_MODE_SUPPORT_INTERSECTION           NTStatus      = 0xC01E0325\n\tSTATUS_GRAPHICS_VIDEO_PRESENT_TARGETS_LESS_THAN_SOURCES                   NTStatus      = 0xC01E0326\n\tSTATUS_GRAPHICS_PATH_NOT_IN_TOPOLOGY                                      NTStatus      = 0xC01E0327\n\tSTATUS_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_SOURCE                     NTStatus      = 0xC01E0328\n\tSTATUS_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_TARGET                     NTStatus      = 0xC01E0329\n\tSTATUS_GRAPHICS_INVALID_MONITORDESCRIPTORSET                              NTStatus      = 0xC01E032A\n\tSTATUS_GRAPHICS_INVALID_MONITORDESCRIPTOR                                 NTStatus      = 0xC01E032B\n\tSTATUS_GRAPHICS_MONITORDESCRIPTOR_NOT_IN_SET                              NTStatus      = 0xC01E032C\n\tSTATUS_GRAPHICS_MONITORDESCRIPTOR_ALREADY_IN_SET                          NTStatus      = 0xC01E032D\n\tSTATUS_GRAPHICS_MONITORDESCRIPTOR_ID_MUST_BE_UNIQUE                       NTStatus      = 0xC01E032E\n\tSTATUS_GRAPHICS_INVALID_VIDPN_TARGET_SUBSET_TYPE                          NTStatus      = 0xC01E032F\n\tSTATUS_GRAPHICS_RESOURCES_NOT_RELATED                                     NTStatus      = 0xC01E0330\n\tSTATUS_GRAPHICS_SOURCE_ID_MUST_BE_UNIQUE                                  NTStatus      = 0xC01E0331\n\tSTATUS_GRAPHICS_TARGET_ID_MUST_BE_UNIQUE                                  NTStatus      = 0xC01E0332\n\tSTATUS_GRAPHICS_NO_AVAILABLE_VIDPN_TARGET                                 NTStatus      = 0xC01E0333\n\tSTATUS_GRAPHICS_MONITOR_COULD_NOT_BE_ASSOCIATED_WITH_ADAPTER              NTStatus      = 0xC01E0334\n\tSTATUS_GRAPHICS_NO_VIDPNMGR                                               NTStatus      = 0xC01E0335\n\tSTATUS_GRAPHICS_NO_ACTIVE_VIDPN                                           NTStatus      = 0xC01E0336\n\tSTATUS_GRAPHICS_STALE_VIDPN_TOPOLOGY                                      NTStatus      = 0xC01E0337\n\tSTATUS_GRAPHICS_MONITOR_NOT_CONNECTED                                     NTStatus      = 0xC01E0338\n\tSTATUS_GRAPHICS_SOURCE_NOT_IN_TOPOLOGY                                    NTStatus      = 0xC01E0339\n\tSTATUS_GRAPHICS_INVALID_PRIMARYSURFACE_SIZE                               NTStatus      = 0xC01E033A\n\tSTATUS_GRAPHICS_INVALID_VISIBLEREGION_SIZE                                NTStatus      = 0xC01E033B\n\tSTATUS_GRAPHICS_INVALID_STRIDE                                            NTStatus      = 0xC01E033C\n\tSTATUS_GRAPHICS_INVALID_PIXELFORMAT                                       NTStatus      = 0xC01E033D\n\tSTATUS_GRAPHICS_INVALID_COLORBASIS                                        NTStatus      = 0xC01E033E\n\tSTATUS_GRAPHICS_INVALID_PIXELVALUEACCESSMODE                              NTStatus      = 0xC01E033F\n\tSTATUS_GRAPHICS_TARGET_NOT_IN_TOPOLOGY                                    NTStatus      = 0xC01E0340\n\tSTATUS_GRAPHICS_NO_DISPLAY_MODE_MANAGEMENT_SUPPORT                        NTStatus      = 0xC01E0341\n\tSTATUS_GRAPHICS_VIDPN_SOURCE_IN_USE                                       NTStatus      = 0xC01E0342\n\tSTATUS_GRAPHICS_CANT_ACCESS_ACTIVE_VIDPN                                  NTStatus      = 0xC01E0343\n\tSTATUS_GRAPHICS_INVALID_PATH_IMPORTANCE_ORDINAL                           NTStatus      = 0xC01E0344\n\tSTATUS_GRAPHICS_INVALID_PATH_CONTENT_GEOMETRY_TRANSFORMATION              NTStatus      = 0xC01E0345\n\tSTATUS_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_SUPPORTED        NTStatus      = 0xC01E0346\n\tSTATUS_GRAPHICS_INVALID_GAMMA_RAMP                                        NTStatus      = 0xC01E0347\n\tSTATUS_GRAPHICS_GAMMA_RAMP_NOT_SUPPORTED                                  NTStatus      = 0xC01E0348\n\tSTATUS_GRAPHICS_MULTISAMPLING_NOT_SUPPORTED                               NTStatus      = 0xC01E0349\n\tSTATUS_GRAPHICS_MODE_NOT_IN_MODESET                                       NTStatus      = 0xC01E034A\n\tSTATUS_GRAPHICS_DATASET_IS_EMPTY                                          NTStatus      = 0x401E034B\n\tSTATUS_GRAPHICS_NO_MORE_ELEMENTS_IN_DATASET                               NTStatus      = 0x401E034C\n\tSTATUS_GRAPHICS_INVALID_VIDPN_TOPOLOGY_RECOMMENDATION_REASON              NTStatus      = 0xC01E034D\n\tSTATUS_GRAPHICS_INVALID_PATH_CONTENT_TYPE                                 NTStatus      = 0xC01E034E\n\tSTATUS_GRAPHICS_INVALID_COPYPROTECTION_TYPE                               NTStatus      = 0xC01E034F\n\tSTATUS_GRAPHICS_UNASSIGNED_MODESET_ALREADY_EXISTS                         NTStatus      = 0xC01E0350\n\tSTATUS_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_PINNED           NTStatus      = 0x401E0351\n\tSTATUS_GRAPHICS_INVALID_SCANLINE_ORDERING                                 NTStatus      = 0xC01E0352\n\tSTATUS_GRAPHICS_TOPOLOGY_CHANGES_NOT_ALLOWED                              NTStatus      = 0xC01E0353\n\tSTATUS_GRAPHICS_NO_AVAILABLE_IMPORTANCE_ORDINALS                          NTStatus      = 0xC01E0354\n\tSTATUS_GRAPHICS_INCOMPATIBLE_PRIVATE_FORMAT                               NTStatus      = 0xC01E0355\n\tSTATUS_GRAPHICS_INVALID_MODE_PRUNING_ALGORITHM                            NTStatus      = 0xC01E0356\n\tSTATUS_GRAPHICS_INVALID_MONITOR_CAPABILITY_ORIGIN                         NTStatus      = 0xC01E0357\n\tSTATUS_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE_CONSTRAINT                 NTStatus      = 0xC01E0358\n\tSTATUS_GRAPHICS_MAX_NUM_PATHS_REACHED                                     NTStatus      = 0xC01E0359\n\tSTATUS_GRAPHICS_CANCEL_VIDPN_TOPOLOGY_AUGMENTATION                        NTStatus      = 0xC01E035A\n\tSTATUS_GRAPHICS_INVALID_CLIENT_TYPE                                       NTStatus      = 0xC01E035B\n\tSTATUS_GRAPHICS_CLIENTVIDPN_NOT_SET                                       NTStatus      = 0xC01E035C\n\tSTATUS_GRAPHICS_SPECIFIED_CHILD_ALREADY_CONNECTED                         NTStatus      = 0xC01E0400\n\tSTATUS_GRAPHICS_CHILD_DESCRIPTOR_NOT_SUPPORTED                            NTStatus      = 0xC01E0401\n\tSTATUS_GRAPHICS_UNKNOWN_CHILD_STATUS                                      NTStatus      = 0x401E042F\n\tSTATUS_GRAPHICS_NOT_A_LINKED_ADAPTER                                      NTStatus      = 0xC01E0430\n\tSTATUS_GRAPHICS_LEADLINK_NOT_ENUMERATED                                   NTStatus      = 0xC01E0431\n\tSTATUS_GRAPHICS_CHAINLINKS_NOT_ENUMERATED                                 NTStatus      = 0xC01E0432\n\tSTATUS_GRAPHICS_ADAPTER_CHAIN_NOT_READY                                   NTStatus      = 0xC01E0433\n\tSTATUS_GRAPHICS_CHAINLINKS_NOT_STARTED                                    NTStatus      = 0xC01E0434\n\tSTATUS_GRAPHICS_CHAINLINKS_NOT_POWERED_ON                                 NTStatus      = 0xC01E0435\n\tSTATUS_GRAPHICS_INCONSISTENT_DEVICE_LINK_STATE                            NTStatus      = 0xC01E0436\n\tSTATUS_GRAPHICS_LEADLINK_START_DEFERRED                                   NTStatus      = 0x401E0437\n\tSTATUS_GRAPHICS_NOT_POST_DEVICE_DRIVER                                    NTStatus      = 0xC01E0438\n\tSTATUS_GRAPHICS_POLLING_TOO_FREQUENTLY                                    NTStatus      = 0x401E0439\n\tSTATUS_GRAPHICS_START_DEFERRED                                            NTStatus      = 0x401E043A\n\tSTATUS_GRAPHICS_ADAPTER_ACCESS_NOT_EXCLUDED                               NTStatus      = 0xC01E043B\n\tSTATUS_GRAPHICS_DEPENDABLE_CHILD_STATUS                                   NTStatus      = 0x401E043C\n\tSTATUS_GRAPHICS_OPM_NOT_SUPPORTED                                         NTStatus      = 0xC01E0500\n\tSTATUS_GRAPHICS_COPP_NOT_SUPPORTED                                        NTStatus      = 0xC01E0501\n\tSTATUS_GRAPHICS_UAB_NOT_SUPPORTED                                         NTStatus      = 0xC01E0502\n\tSTATUS_GRAPHICS_OPM_INVALID_ENCRYPTED_PARAMETERS                          NTStatus      = 0xC01E0503\n\tSTATUS_GRAPHICS_OPM_NO_PROTECTED_OUTPUTS_EXIST                            NTStatus      = 0xC01E0505\n\tSTATUS_GRAPHICS_OPM_INTERNAL_ERROR                                        NTStatus      = 0xC01E050B\n\tSTATUS_GRAPHICS_OPM_INVALID_HANDLE                                        NTStatus      = 0xC01E050C\n\tSTATUS_GRAPHICS_PVP_INVALID_CERTIFICATE_LENGTH                            NTStatus      = 0xC01E050E\n\tSTATUS_GRAPHICS_OPM_SPANNING_MODE_ENABLED                                 NTStatus      = 0xC01E050F\n\tSTATUS_GRAPHICS_OPM_THEATER_MODE_ENABLED                                  NTStatus      = 0xC01E0510\n\tSTATUS_GRAPHICS_PVP_HFS_FAILED                                            NTStatus      = 0xC01E0511\n\tSTATUS_GRAPHICS_OPM_INVALID_SRM                                           NTStatus      = 0xC01E0512\n\tSTATUS_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_HDCP                          NTStatus      = 0xC01E0513\n\tSTATUS_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_ACP                           NTStatus      = 0xC01E0514\n\tSTATUS_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_CGMSA                         NTStatus      = 0xC01E0515\n\tSTATUS_GRAPHICS_OPM_HDCP_SRM_NEVER_SET                                    NTStatus      = 0xC01E0516\n\tSTATUS_GRAPHICS_OPM_RESOLUTION_TOO_HIGH                                   NTStatus      = 0xC01E0517\n\tSTATUS_GRAPHICS_OPM_ALL_HDCP_HARDWARE_ALREADY_IN_USE                      NTStatus      = 0xC01E0518\n\tSTATUS_GRAPHICS_OPM_PROTECTED_OUTPUT_NO_LONGER_EXISTS                     NTStatus      = 0xC01E051A\n\tSTATUS_GRAPHICS_OPM_PROTECTED_OUTPUT_DOES_NOT_HAVE_COPP_SEMANTICS         NTStatus      = 0xC01E051C\n\tSTATUS_GRAPHICS_OPM_INVALID_INFORMATION_REQUEST                           NTStatus      = 0xC01E051D\n\tSTATUS_GRAPHICS_OPM_DRIVER_INTERNAL_ERROR                                 NTStatus      = 0xC01E051E\n\tSTATUS_GRAPHICS_OPM_PROTECTED_OUTPUT_DOES_NOT_HAVE_OPM_SEMANTICS          NTStatus      = 0xC01E051F\n\tSTATUS_GRAPHICS_OPM_SIGNALING_NOT_SUPPORTED                               NTStatus      = 0xC01E0520\n\tSTATUS_GRAPHICS_OPM_INVALID_CONFIGURATION_REQUEST                         NTStatus      = 0xC01E0521\n\tSTATUS_GRAPHICS_I2C_NOT_SUPPORTED                                         NTStatus      = 0xC01E0580\n\tSTATUS_GRAPHICS_I2C_DEVICE_DOES_NOT_EXIST                                 NTStatus      = 0xC01E0581\n\tSTATUS_GRAPHICS_I2C_ERROR_TRANSMITTING_DATA                               NTStatus      = 0xC01E0582\n\tSTATUS_GRAPHICS_I2C_ERROR_RECEIVING_DATA                                  NTStatus      = 0xC01E0583\n\tSTATUS_GRAPHICS_DDCCI_VCP_NOT_SUPPORTED                                   NTStatus      = 0xC01E0584\n\tSTATUS_GRAPHICS_DDCCI_INVALID_DATA                                        NTStatus      = 0xC01E0585\n\tSTATUS_GRAPHICS_DDCCI_MONITOR_RETURNED_INVALID_TIMING_STATUS_BYTE         NTStatus      = 0xC01E0586\n\tSTATUS_GRAPHICS_DDCCI_INVALID_CAPABILITIES_STRING                         NTStatus      = 0xC01E0587\n\tSTATUS_GRAPHICS_MCA_INTERNAL_ERROR                                        NTStatus      = 0xC01E0588\n\tSTATUS_GRAPHICS_DDCCI_INVALID_MESSAGE_COMMAND                             NTStatus      = 0xC01E0589\n\tSTATUS_GRAPHICS_DDCCI_INVALID_MESSAGE_LENGTH                              NTStatus      = 0xC01E058A\n\tSTATUS_GRAPHICS_DDCCI_INVALID_MESSAGE_CHECKSUM                            NTStatus      = 0xC01E058B\n\tSTATUS_GRAPHICS_INVALID_PHYSICAL_MONITOR_HANDLE                           NTStatus      = 0xC01E058C\n\tSTATUS_GRAPHICS_MONITOR_NO_LONGER_EXISTS                                  NTStatus      = 0xC01E058D\n\tSTATUS_GRAPHICS_ONLY_CONSOLE_SESSION_SUPPORTED                            NTStatus      = 0xC01E05E0\n\tSTATUS_GRAPHICS_NO_DISPLAY_DEVICE_CORRESPONDS_TO_NAME                     NTStatus      = 0xC01E05E1\n\tSTATUS_GRAPHICS_DISPLAY_DEVICE_NOT_ATTACHED_TO_DESKTOP                    NTStatus      = 0xC01E05E2\n\tSTATUS_GRAPHICS_MIRRORING_DEVICES_NOT_SUPPORTED                           NTStatus      = 0xC01E05E3\n\tSTATUS_GRAPHICS_INVALID_POINTER                                           NTStatus      = 0xC01E05E4\n\tSTATUS_GRAPHICS_NO_MONITORS_CORRESPOND_TO_DISPLAY_DEVICE                  NTStatus      = 0xC01E05E5\n\tSTATUS_GRAPHICS_PARAMETER_ARRAY_TOO_SMALL                                 NTStatus      = 0xC01E05E6\n\tSTATUS_GRAPHICS_INTERNAL_ERROR                                            NTStatus      = 0xC01E05E7\n\tSTATUS_GRAPHICS_SESSION_TYPE_CHANGE_IN_PROGRESS                           NTStatus      = 0xC01E05E8\n\tSTATUS_FVE_LOCKED_VOLUME                                                  NTStatus      = 0xC0210000\n\tSTATUS_FVE_NOT_ENCRYPTED                                                  NTStatus      = 0xC0210001\n\tSTATUS_FVE_BAD_INFORMATION                                                NTStatus      = 0xC0210002\n\tSTATUS_FVE_TOO_SMALL                                                      NTStatus      = 0xC0210003\n\tSTATUS_FVE_FAILED_WRONG_FS                                                NTStatus      = 0xC0210004\n\tSTATUS_FVE_BAD_PARTITION_SIZE                                             NTStatus      = 0xC0210005\n\tSTATUS_FVE_FS_NOT_EXTENDED                                                NTStatus      = 0xC0210006\n\tSTATUS_FVE_FS_MOUNTED                                                     NTStatus      = 0xC0210007\n\tSTATUS_FVE_NO_LICENSE                                                     NTStatus      = 0xC0210008\n\tSTATUS_FVE_ACTION_NOT_ALLOWED                                             NTStatus      = 0xC0210009\n\tSTATUS_FVE_BAD_DATA                                                       NTStatus      = 0xC021000A\n\tSTATUS_FVE_VOLUME_NOT_BOUND                                               NTStatus      = 0xC021000B\n\tSTATUS_FVE_NOT_DATA_VOLUME                                                NTStatus      = 0xC021000C\n\tSTATUS_FVE_CONV_READ_ERROR                                                NTStatus      = 0xC021000D\n\tSTATUS_FVE_CONV_WRITE_ERROR                                               NTStatus      = 0xC021000E\n\tSTATUS_FVE_OVERLAPPED_UPDATE                                              NTStatus      = 0xC021000F\n\tSTATUS_FVE_FAILED_SECTOR_SIZE                                             NTStatus      = 0xC0210010\n\tSTATUS_FVE_FAILED_AUTHENTICATION                                          NTStatus      = 0xC0210011\n\tSTATUS_FVE_NOT_OS_VOLUME                                                  NTStatus      = 0xC0210012\n\tSTATUS_FVE_KEYFILE_NOT_FOUND                                              NTStatus      = 0xC0210013\n\tSTATUS_FVE_KEYFILE_INVALID                                                NTStatus      = 0xC0210014\n\tSTATUS_FVE_KEYFILE_NO_VMK                                                 NTStatus      = 0xC0210015\n\tSTATUS_FVE_TPM_DISABLED                                                   NTStatus      = 0xC0210016\n\tSTATUS_FVE_TPM_SRK_AUTH_NOT_ZERO                                          NTStatus      = 0xC0210017\n\tSTATUS_FVE_TPM_INVALID_PCR                                                NTStatus      = 0xC0210018\n\tSTATUS_FVE_TPM_NO_VMK                                                     NTStatus      = 0xC0210019\n\tSTATUS_FVE_PIN_INVALID                                                    NTStatus      = 0xC021001A\n\tSTATUS_FVE_AUTH_INVALID_APPLICATION                                       NTStatus      = 0xC021001B\n\tSTATUS_FVE_AUTH_INVALID_CONFIG                                            NTStatus      = 0xC021001C\n\tSTATUS_FVE_DEBUGGER_ENABLED                                               NTStatus      = 0xC021001D\n\tSTATUS_FVE_DRY_RUN_FAILED                                                 NTStatus      = 0xC021001E\n\tSTATUS_FVE_BAD_METADATA_POINTER                                           NTStatus      = 0xC021001F\n\tSTATUS_FVE_OLD_METADATA_COPY                                              NTStatus      = 0xC0210020\n\tSTATUS_FVE_REBOOT_REQUIRED                                                NTStatus      = 0xC0210021\n\tSTATUS_FVE_RAW_ACCESS                                                     NTStatus      = 0xC0210022\n\tSTATUS_FVE_RAW_BLOCKED                                                    NTStatus      = 0xC0210023\n\tSTATUS_FVE_NO_AUTOUNLOCK_MASTER_KEY                                       NTStatus      = 0xC0210024\n\tSTATUS_FVE_MOR_FAILED                                                     NTStatus      = 0xC0210025\n\tSTATUS_FVE_NO_FEATURE_LICENSE                                             NTStatus      = 0xC0210026\n\tSTATUS_FVE_POLICY_USER_DISABLE_RDV_NOT_ALLOWED                            NTStatus      = 0xC0210027\n\tSTATUS_FVE_CONV_RECOVERY_FAILED                                           NTStatus      = 0xC0210028\n\tSTATUS_FVE_VIRTUALIZED_SPACE_TOO_BIG                                      NTStatus      = 0xC0210029\n\tSTATUS_FVE_INVALID_DATUM_TYPE                                             NTStatus      = 0xC021002A\n\tSTATUS_FVE_VOLUME_TOO_SMALL                                               NTStatus      = 0xC0210030\n\tSTATUS_FVE_ENH_PIN_INVALID                                                NTStatus      = 0xC0210031\n\tSTATUS_FVE_FULL_ENCRYPTION_NOT_ALLOWED_ON_TP_STORAGE                      NTStatus      = 0xC0210032\n\tSTATUS_FVE_WIPE_NOT_ALLOWED_ON_TP_STORAGE                                 NTStatus      = 0xC0210033\n\tSTATUS_FVE_NOT_ALLOWED_ON_CSV_STACK                                       NTStatus      = 0xC0210034\n\tSTATUS_FVE_NOT_ALLOWED_ON_CLUSTER                                         NTStatus      = 0xC0210035\n\tSTATUS_FVE_NOT_ALLOWED_TO_UPGRADE_WHILE_CONVERTING                        NTStatus      = 0xC0210036\n\tSTATUS_FVE_WIPE_CANCEL_NOT_APPLICABLE                                     NTStatus      = 0xC0210037\n\tSTATUS_FVE_EDRIVE_DRY_RUN_FAILED                                          NTStatus      = 0xC0210038\n\tSTATUS_FVE_SECUREBOOT_DISABLED                                            NTStatus      = 0xC0210039\n\tSTATUS_FVE_SECUREBOOT_CONFIG_CHANGE                                       NTStatus      = 0xC021003A\n\tSTATUS_FVE_DEVICE_LOCKEDOUT                                               NTStatus      = 0xC021003B\n\tSTATUS_FVE_VOLUME_EXTEND_PREVENTS_EOW_DECRYPT                             NTStatus      = 0xC021003C\n\tSTATUS_FVE_NOT_DE_VOLUME                                                  NTStatus      = 0xC021003D\n\tSTATUS_FVE_PROTECTION_DISABLED                                            NTStatus      = 0xC021003E\n\tSTATUS_FVE_PROTECTION_CANNOT_BE_DISABLED                                  NTStatus      = 0xC021003F\n\tSTATUS_FVE_OSV_KSR_NOT_ALLOWED                                            NTStatus      = 0xC0210040\n\tSTATUS_FWP_CALLOUT_NOT_FOUND                                              NTStatus      = 0xC0220001\n\tSTATUS_FWP_CONDITION_NOT_FOUND                                            NTStatus      = 0xC0220002\n\tSTATUS_FWP_FILTER_NOT_FOUND                                               NTStatus      = 0xC0220003\n\tSTATUS_FWP_LAYER_NOT_FOUND                                                NTStatus      = 0xC0220004\n\tSTATUS_FWP_PROVIDER_NOT_FOUND                                             NTStatus      = 0xC0220005\n\tSTATUS_FWP_PROVIDER_CONTEXT_NOT_FOUND                                     NTStatus      = 0xC0220006\n\tSTATUS_FWP_SUBLAYER_NOT_FOUND                                             NTStatus      = 0xC0220007\n\tSTATUS_FWP_NOT_FOUND                                                      NTStatus      = 0xC0220008\n\tSTATUS_FWP_ALREADY_EXISTS                                                 NTStatus      = 0xC0220009\n\tSTATUS_FWP_IN_USE                                                         NTStatus      = 0xC022000A\n\tSTATUS_FWP_DYNAMIC_SESSION_IN_PROGRESS                                    NTStatus      = 0xC022000B\n\tSTATUS_FWP_WRONG_SESSION                                                  NTStatus      = 0xC022000C\n\tSTATUS_FWP_NO_TXN_IN_PROGRESS                                             NTStatus      = 0xC022000D\n\tSTATUS_FWP_TXN_IN_PROGRESS                                                NTStatus      = 0xC022000E\n\tSTATUS_FWP_TXN_ABORTED                                                    NTStatus      = 0xC022000F\n\tSTATUS_FWP_SESSION_ABORTED                                                NTStatus      = 0xC0220010\n\tSTATUS_FWP_INCOMPATIBLE_TXN                                               NTStatus      = 0xC0220011\n\tSTATUS_FWP_TIMEOUT                                                        NTStatus      = 0xC0220012\n\tSTATUS_FWP_NET_EVENTS_DISABLED                                            NTStatus      = 0xC0220013\n\tSTATUS_FWP_INCOMPATIBLE_LAYER                                             NTStatus      = 0xC0220014\n\tSTATUS_FWP_KM_CLIENTS_ONLY                                                NTStatus      = 0xC0220015\n\tSTATUS_FWP_LIFETIME_MISMATCH                                              NTStatus      = 0xC0220016\n\tSTATUS_FWP_BUILTIN_OBJECT                                                 NTStatus      = 0xC0220017\n\tSTATUS_FWP_TOO_MANY_CALLOUTS                                              NTStatus      = 0xC0220018\n\tSTATUS_FWP_NOTIFICATION_DROPPED                                           NTStatus      = 0xC0220019\n\tSTATUS_FWP_TRAFFIC_MISMATCH                                               NTStatus      = 0xC022001A\n\tSTATUS_FWP_INCOMPATIBLE_SA_STATE                                          NTStatus      = 0xC022001B\n\tSTATUS_FWP_NULL_POINTER                                                   NTStatus      = 0xC022001C\n\tSTATUS_FWP_INVALID_ENUMERATOR                                             NTStatus      = 0xC022001D\n\tSTATUS_FWP_INVALID_FLAGS                                                  NTStatus      = 0xC022001E\n\tSTATUS_FWP_INVALID_NET_MASK                                               NTStatus      = 0xC022001F\n\tSTATUS_FWP_INVALID_RANGE                                                  NTStatus      = 0xC0220020\n\tSTATUS_FWP_INVALID_INTERVAL                                               NTStatus      = 0xC0220021\n\tSTATUS_FWP_ZERO_LENGTH_ARRAY                                              NTStatus      = 0xC0220022\n\tSTATUS_FWP_NULL_DISPLAY_NAME                                              NTStatus      = 0xC0220023\n\tSTATUS_FWP_INVALID_ACTION_TYPE                                            NTStatus      = 0xC0220024\n\tSTATUS_FWP_INVALID_WEIGHT                                                 NTStatus      = 0xC0220025\n\tSTATUS_FWP_MATCH_TYPE_MISMATCH                                            NTStatus      = 0xC0220026\n\tSTATUS_FWP_TYPE_MISMATCH                                                  NTStatus      = 0xC0220027\n\tSTATUS_FWP_OUT_OF_BOUNDS                                                  NTStatus      = 0xC0220028\n\tSTATUS_FWP_RESERVED                                                       NTStatus      = 0xC0220029\n\tSTATUS_FWP_DUPLICATE_CONDITION                                            NTStatus      = 0xC022002A\n\tSTATUS_FWP_DUPLICATE_KEYMOD                                               NTStatus      = 0xC022002B\n\tSTATUS_FWP_ACTION_INCOMPATIBLE_WITH_LAYER                                 NTStatus      = 0xC022002C\n\tSTATUS_FWP_ACTION_INCOMPATIBLE_WITH_SUBLAYER                              NTStatus      = 0xC022002D\n\tSTATUS_FWP_CONTEXT_INCOMPATIBLE_WITH_LAYER                                NTStatus      = 0xC022002E\n\tSTATUS_FWP_CONTEXT_INCOMPATIBLE_WITH_CALLOUT                              NTStatus      = 0xC022002F\n\tSTATUS_FWP_INCOMPATIBLE_AUTH_METHOD                                       NTStatus      = 0xC0220030\n\tSTATUS_FWP_INCOMPATIBLE_DH_GROUP                                          NTStatus      = 0xC0220031\n\tSTATUS_FWP_EM_NOT_SUPPORTED                                               NTStatus      = 0xC0220032\n\tSTATUS_FWP_NEVER_MATCH                                                    NTStatus      = 0xC0220033\n\tSTATUS_FWP_PROVIDER_CONTEXT_MISMATCH                                      NTStatus      = 0xC0220034\n\tSTATUS_FWP_INVALID_PARAMETER                                              NTStatus      = 0xC0220035\n\tSTATUS_FWP_TOO_MANY_SUBLAYERS                                             NTStatus      = 0xC0220036\n\tSTATUS_FWP_CALLOUT_NOTIFICATION_FAILED                                    NTStatus      = 0xC0220037\n\tSTATUS_FWP_INVALID_AUTH_TRANSFORM                                         NTStatus      = 0xC0220038\n\tSTATUS_FWP_INVALID_CIPHER_TRANSFORM                                       NTStatus      = 0xC0220039\n\tSTATUS_FWP_INCOMPATIBLE_CIPHER_TRANSFORM                                  NTStatus      = 0xC022003A\n\tSTATUS_FWP_INVALID_TRANSFORM_COMBINATION                                  NTStatus      = 0xC022003B\n\tSTATUS_FWP_DUPLICATE_AUTH_METHOD                                          NTStatus      = 0xC022003C\n\tSTATUS_FWP_INVALID_TUNNEL_ENDPOINT                                        NTStatus      = 0xC022003D\n\tSTATUS_FWP_L2_DRIVER_NOT_READY                                            NTStatus      = 0xC022003E\n\tSTATUS_FWP_KEY_DICTATOR_ALREADY_REGISTERED                                NTStatus      = 0xC022003F\n\tSTATUS_FWP_KEY_DICTATION_INVALID_KEYING_MATERIAL                          NTStatus      = 0xC0220040\n\tSTATUS_FWP_CONNECTIONS_DISABLED                                           NTStatus      = 0xC0220041\n\tSTATUS_FWP_INVALID_DNS_NAME                                               NTStatus      = 0xC0220042\n\tSTATUS_FWP_STILL_ON                                                       NTStatus      = 0xC0220043\n\tSTATUS_FWP_IKEEXT_NOT_RUNNING                                             NTStatus      = 0xC0220044\n\tSTATUS_FWP_TCPIP_NOT_READY                                                NTStatus      = 0xC0220100\n\tSTATUS_FWP_INJECT_HANDLE_CLOSING                                          NTStatus      = 0xC0220101\n\tSTATUS_FWP_INJECT_HANDLE_STALE                                            NTStatus      = 0xC0220102\n\tSTATUS_FWP_CANNOT_PEND                                                    NTStatus      = 0xC0220103\n\tSTATUS_FWP_DROP_NOICMP                                                    NTStatus      = 0xC0220104\n\tSTATUS_NDIS_CLOSING                                                       NTStatus      = 0xC0230002\n\tSTATUS_NDIS_BAD_VERSION                                                   NTStatus      = 0xC0230004\n\tSTATUS_NDIS_BAD_CHARACTERISTICS                                           NTStatus      = 0xC0230005\n\tSTATUS_NDIS_ADAPTER_NOT_FOUND                                             NTStatus      = 0xC0230006\n\tSTATUS_NDIS_OPEN_FAILED                                                   NTStatus      = 0xC0230007\n\tSTATUS_NDIS_DEVICE_FAILED                                                 NTStatus      = 0xC0230008\n\tSTATUS_NDIS_MULTICAST_FULL                                                NTStatus      = 0xC0230009\n\tSTATUS_NDIS_MULTICAST_EXISTS                                              NTStatus      = 0xC023000A\n\tSTATUS_NDIS_MULTICAST_NOT_FOUND                                           NTStatus      = 0xC023000B\n\tSTATUS_NDIS_REQUEST_ABORTED                                               NTStatus      = 0xC023000C\n\tSTATUS_NDIS_RESET_IN_PROGRESS                                             NTStatus      = 0xC023000D\n\tSTATUS_NDIS_NOT_SUPPORTED                                                 NTStatus      = 0xC02300BB\n\tSTATUS_NDIS_INVALID_PACKET                                                NTStatus      = 0xC023000F\n\tSTATUS_NDIS_ADAPTER_NOT_READY                                             NTStatus      = 0xC0230011\n\tSTATUS_NDIS_INVALID_LENGTH                                                NTStatus      = 0xC0230014\n\tSTATUS_NDIS_INVALID_DATA                                                  NTStatus      = 0xC0230015\n\tSTATUS_NDIS_BUFFER_TOO_SHORT                                              NTStatus      = 0xC0230016\n\tSTATUS_NDIS_INVALID_OID                                                   NTStatus      = 0xC0230017\n\tSTATUS_NDIS_ADAPTER_REMOVED                                               NTStatus      = 0xC0230018\n\tSTATUS_NDIS_UNSUPPORTED_MEDIA                                             NTStatus      = 0xC0230019\n\tSTATUS_NDIS_GROUP_ADDRESS_IN_USE                                          NTStatus      = 0xC023001A\n\tSTATUS_NDIS_FILE_NOT_FOUND                                                NTStatus      = 0xC023001B\n\tSTATUS_NDIS_ERROR_READING_FILE                                            NTStatus      = 0xC023001C\n\tSTATUS_NDIS_ALREADY_MAPPED                                                NTStatus      = 0xC023001D\n\tSTATUS_NDIS_RESOURCE_CONFLICT                                             NTStatus      = 0xC023001E\n\tSTATUS_NDIS_MEDIA_DISCONNECTED                                            NTStatus      = 0xC023001F\n\tSTATUS_NDIS_INVALID_ADDRESS                                               NTStatus      = 0xC0230022\n\tSTATUS_NDIS_INVALID_DEVICE_REQUEST                                        NTStatus      = 0xC0230010\n\tSTATUS_NDIS_PAUSED                                                        NTStatus      = 0xC023002A\n\tSTATUS_NDIS_INTERFACE_NOT_FOUND                                           NTStatus      = 0xC023002B\n\tSTATUS_NDIS_UNSUPPORTED_REVISION                                          NTStatus      = 0xC023002C\n\tSTATUS_NDIS_INVALID_PORT                                                  NTStatus      = 0xC023002D\n\tSTATUS_NDIS_INVALID_PORT_STATE                                            NTStatus      = 0xC023002E\n\tSTATUS_NDIS_LOW_POWER_STATE                                               NTStatus      = 0xC023002F\n\tSTATUS_NDIS_REINIT_REQUIRED                                               NTStatus      = 0xC0230030\n\tSTATUS_NDIS_NO_QUEUES                                                     NTStatus      = 0xC0230031\n\tSTATUS_NDIS_DOT11_AUTO_CONFIG_ENABLED                                     NTStatus      = 0xC0232000\n\tSTATUS_NDIS_DOT11_MEDIA_IN_USE                                            NTStatus      = 0xC0232001\n\tSTATUS_NDIS_DOT11_POWER_STATE_INVALID                                     NTStatus      = 0xC0232002\n\tSTATUS_NDIS_PM_WOL_PATTERN_LIST_FULL                                      NTStatus      = 0xC0232003\n\tSTATUS_NDIS_PM_PROTOCOL_OFFLOAD_LIST_FULL                                 NTStatus      = 0xC0232004\n\tSTATUS_NDIS_DOT11_AP_CHANNEL_CURRENTLY_NOT_AVAILABLE                      NTStatus      = 0xC0232005\n\tSTATUS_NDIS_DOT11_AP_BAND_CURRENTLY_NOT_AVAILABLE                         NTStatus      = 0xC0232006\n\tSTATUS_NDIS_DOT11_AP_CHANNEL_NOT_ALLOWED                                  NTStatus      = 0xC0232007\n\tSTATUS_NDIS_DOT11_AP_BAND_NOT_ALLOWED                                     NTStatus      = 0xC0232008\n\tSTATUS_NDIS_INDICATION_REQUIRED                                           NTStatus      = 0x40230001\n\tSTATUS_NDIS_OFFLOAD_POLICY                                                NTStatus      = 0xC023100F\n\tSTATUS_NDIS_OFFLOAD_CONNECTION_REJECTED                                   NTStatus      = 0xC0231012\n\tSTATUS_NDIS_OFFLOAD_PATH_REJECTED                                         NTStatus      = 0xC0231013\n\tSTATUS_TPM_ERROR_MASK                                                     NTStatus      = 0xC0290000\n\tSTATUS_TPM_AUTHFAIL                                                       NTStatus      = 0xC0290001\n\tSTATUS_TPM_BADINDEX                                                       NTStatus      = 0xC0290002\n\tSTATUS_TPM_BAD_PARAMETER                                                  NTStatus      = 0xC0290003\n\tSTATUS_TPM_AUDITFAILURE                                                   NTStatus      = 0xC0290004\n\tSTATUS_TPM_CLEAR_DISABLED                                                 NTStatus      = 0xC0290005\n\tSTATUS_TPM_DEACTIVATED                                                    NTStatus      = 0xC0290006\n\tSTATUS_TPM_DISABLED                                                       NTStatus      = 0xC0290007\n\tSTATUS_TPM_DISABLED_CMD                                                   NTStatus      = 0xC0290008\n\tSTATUS_TPM_FAIL                                                           NTStatus      = 0xC0290009\n\tSTATUS_TPM_BAD_ORDINAL                                                    NTStatus      = 0xC029000A\n\tSTATUS_TPM_INSTALL_DISABLED                                               NTStatus      = 0xC029000B\n\tSTATUS_TPM_INVALID_KEYHANDLE                                              NTStatus      = 0xC029000C\n\tSTATUS_TPM_KEYNOTFOUND                                                    NTStatus      = 0xC029000D\n\tSTATUS_TPM_INAPPROPRIATE_ENC                                              NTStatus      = 0xC029000E\n\tSTATUS_TPM_MIGRATEFAIL                                                    NTStatus      = 0xC029000F\n\tSTATUS_TPM_INVALID_PCR_INFO                                               NTStatus      = 0xC0290010\n\tSTATUS_TPM_NOSPACE                                                        NTStatus      = 0xC0290011\n\tSTATUS_TPM_NOSRK                                                          NTStatus      = 0xC0290012\n\tSTATUS_TPM_NOTSEALED_BLOB                                                 NTStatus      = 0xC0290013\n\tSTATUS_TPM_OWNER_SET                                                      NTStatus      = 0xC0290014\n\tSTATUS_TPM_RESOURCES                                                      NTStatus      = 0xC0290015\n\tSTATUS_TPM_SHORTRANDOM                                                    NTStatus      = 0xC0290016\n\tSTATUS_TPM_SIZE                                                           NTStatus      = 0xC0290017\n\tSTATUS_TPM_WRONGPCRVAL                                                    NTStatus      = 0xC0290018\n\tSTATUS_TPM_BAD_PARAM_SIZE                                                 NTStatus      = 0xC0290019\n\tSTATUS_TPM_SHA_THREAD                                                     NTStatus      = 0xC029001A\n\tSTATUS_TPM_SHA_ERROR                                                      NTStatus      = 0xC029001B\n\tSTATUS_TPM_FAILEDSELFTEST                                                 NTStatus      = 0xC029001C\n\tSTATUS_TPM_AUTH2FAIL                                                      NTStatus      = 0xC029001D\n\tSTATUS_TPM_BADTAG                                                         NTStatus      = 0xC029001E\n\tSTATUS_TPM_IOERROR                                                        NTStatus      = 0xC029001F\n\tSTATUS_TPM_ENCRYPT_ERROR                                                  NTStatus      = 0xC0290020\n\tSTATUS_TPM_DECRYPT_ERROR                                                  NTStatus      = 0xC0290021\n\tSTATUS_TPM_INVALID_AUTHHANDLE                                             NTStatus      = 0xC0290022\n\tSTATUS_TPM_NO_ENDORSEMENT                                                 NTStatus      = 0xC0290023\n\tSTATUS_TPM_INVALID_KEYUSAGE                                               NTStatus      = 0xC0290024\n\tSTATUS_TPM_WRONG_ENTITYTYPE                                               NTStatus      = 0xC0290025\n\tSTATUS_TPM_INVALID_POSTINIT                                               NTStatus      = 0xC0290026\n\tSTATUS_TPM_INAPPROPRIATE_SIG                                              NTStatus      = 0xC0290027\n\tSTATUS_TPM_BAD_KEY_PROPERTY                                               NTStatus      = 0xC0290028\n\tSTATUS_TPM_BAD_MIGRATION                                                  NTStatus      = 0xC0290029\n\tSTATUS_TPM_BAD_SCHEME                                                     NTStatus      = 0xC029002A\n\tSTATUS_TPM_BAD_DATASIZE                                                   NTStatus      = 0xC029002B\n\tSTATUS_TPM_BAD_MODE                                                       NTStatus      = 0xC029002C\n\tSTATUS_TPM_BAD_PRESENCE                                                   NTStatus      = 0xC029002D\n\tSTATUS_TPM_BAD_VERSION                                                    NTStatus      = 0xC029002E\n\tSTATUS_TPM_NO_WRAP_TRANSPORT                                              NTStatus      = 0xC029002F\n\tSTATUS_TPM_AUDITFAIL_UNSUCCESSFUL                                         NTStatus      = 0xC0290030\n\tSTATUS_TPM_AUDITFAIL_SUCCESSFUL                                           NTStatus      = 0xC0290031\n\tSTATUS_TPM_NOTRESETABLE                                                   NTStatus      = 0xC0290032\n\tSTATUS_TPM_NOTLOCAL                                                       NTStatus      = 0xC0290033\n\tSTATUS_TPM_BAD_TYPE                                                       NTStatus      = 0xC0290034\n\tSTATUS_TPM_INVALID_RESOURCE                                               NTStatus      = 0xC0290035\n\tSTATUS_TPM_NOTFIPS                                                        NTStatus      = 0xC0290036\n\tSTATUS_TPM_INVALID_FAMILY                                                 NTStatus      = 0xC0290037\n\tSTATUS_TPM_NO_NV_PERMISSION                                               NTStatus      = 0xC0290038\n\tSTATUS_TPM_REQUIRES_SIGN                                                  NTStatus      = 0xC0290039\n\tSTATUS_TPM_KEY_NOTSUPPORTED                                               NTStatus      = 0xC029003A\n\tSTATUS_TPM_AUTH_CONFLICT                                                  NTStatus      = 0xC029003B\n\tSTATUS_TPM_AREA_LOCKED                                                    NTStatus      = 0xC029003C\n\tSTATUS_TPM_BAD_LOCALITY                                                   NTStatus      = 0xC029003D\n\tSTATUS_TPM_READ_ONLY                                                      NTStatus      = 0xC029003E\n\tSTATUS_TPM_PER_NOWRITE                                                    NTStatus      = 0xC029003F\n\tSTATUS_TPM_FAMILYCOUNT                                                    NTStatus      = 0xC0290040\n\tSTATUS_TPM_WRITE_LOCKED                                                   NTStatus      = 0xC0290041\n\tSTATUS_TPM_BAD_ATTRIBUTES                                                 NTStatus      = 0xC0290042\n\tSTATUS_TPM_INVALID_STRUCTURE                                              NTStatus      = 0xC0290043\n\tSTATUS_TPM_KEY_OWNER_CONTROL                                              NTStatus      = 0xC0290044\n\tSTATUS_TPM_BAD_COUNTER                                                    NTStatus      = 0xC0290045\n\tSTATUS_TPM_NOT_FULLWRITE                                                  NTStatus      = 0xC0290046\n\tSTATUS_TPM_CONTEXT_GAP                                                    NTStatus      = 0xC0290047\n\tSTATUS_TPM_MAXNVWRITES                                                    NTStatus      = 0xC0290048\n\tSTATUS_TPM_NOOPERATOR                                                     NTStatus      = 0xC0290049\n\tSTATUS_TPM_RESOURCEMISSING                                                NTStatus      = 0xC029004A\n\tSTATUS_TPM_DELEGATE_LOCK                                                  NTStatus      = 0xC029004B\n\tSTATUS_TPM_DELEGATE_FAMILY                                                NTStatus      = 0xC029004C\n\tSTATUS_TPM_DELEGATE_ADMIN                                                 NTStatus      = 0xC029004D\n\tSTATUS_TPM_TRANSPORT_NOTEXCLUSIVE                                         NTStatus      = 0xC029004E\n\tSTATUS_TPM_OWNER_CONTROL                                                  NTStatus      = 0xC029004F\n\tSTATUS_TPM_DAA_RESOURCES                                                  NTStatus      = 0xC0290050\n\tSTATUS_TPM_DAA_INPUT_DATA0                                                NTStatus      = 0xC0290051\n\tSTATUS_TPM_DAA_INPUT_DATA1                                                NTStatus      = 0xC0290052\n\tSTATUS_TPM_DAA_ISSUER_SETTINGS                                            NTStatus      = 0xC0290053\n\tSTATUS_TPM_DAA_TPM_SETTINGS                                               NTStatus      = 0xC0290054\n\tSTATUS_TPM_DAA_STAGE                                                      NTStatus      = 0xC0290055\n\tSTATUS_TPM_DAA_ISSUER_VALIDITY                                            NTStatus      = 0xC0290056\n\tSTATUS_TPM_DAA_WRONG_W                                                    NTStatus      = 0xC0290057\n\tSTATUS_TPM_BAD_HANDLE                                                     NTStatus      = 0xC0290058\n\tSTATUS_TPM_BAD_DELEGATE                                                   NTStatus      = 0xC0290059\n\tSTATUS_TPM_BADCONTEXT                                                     NTStatus      = 0xC029005A\n\tSTATUS_TPM_TOOMANYCONTEXTS                                                NTStatus      = 0xC029005B\n\tSTATUS_TPM_MA_TICKET_SIGNATURE                                            NTStatus      = 0xC029005C\n\tSTATUS_TPM_MA_DESTINATION                                                 NTStatus      = 0xC029005D\n\tSTATUS_TPM_MA_SOURCE                                                      NTStatus      = 0xC029005E\n\tSTATUS_TPM_MA_AUTHORITY                                                   NTStatus      = 0xC029005F\n\tSTATUS_TPM_PERMANENTEK                                                    NTStatus      = 0xC0290061\n\tSTATUS_TPM_BAD_SIGNATURE                                                  NTStatus      = 0xC0290062\n\tSTATUS_TPM_NOCONTEXTSPACE                                                 NTStatus      = 0xC0290063\n\tSTATUS_TPM_20_E_ASYMMETRIC                                                NTStatus      = 0xC0290081\n\tSTATUS_TPM_20_E_ATTRIBUTES                                                NTStatus      = 0xC0290082\n\tSTATUS_TPM_20_E_HASH                                                      NTStatus      = 0xC0290083\n\tSTATUS_TPM_20_E_VALUE                                                     NTStatus      = 0xC0290084\n\tSTATUS_TPM_20_E_HIERARCHY                                                 NTStatus      = 0xC0290085\n\tSTATUS_TPM_20_E_KEY_SIZE                                                  NTStatus      = 0xC0290087\n\tSTATUS_TPM_20_E_MGF                                                       NTStatus      = 0xC0290088\n\tSTATUS_TPM_20_E_MODE                                                      NTStatus      = 0xC0290089\n\tSTATUS_TPM_20_E_TYPE                                                      NTStatus      = 0xC029008A\n\tSTATUS_TPM_20_E_HANDLE                                                    NTStatus      = 0xC029008B\n\tSTATUS_TPM_20_E_KDF                                                       NTStatus      = 0xC029008C\n\tSTATUS_TPM_20_E_RANGE                                                     NTStatus      = 0xC029008D\n\tSTATUS_TPM_20_E_AUTH_FAIL                                                 NTStatus      = 0xC029008E\n\tSTATUS_TPM_20_E_NONCE                                                     NTStatus      = 0xC029008F\n\tSTATUS_TPM_20_E_PP                                                        NTStatus      = 0xC0290090\n\tSTATUS_TPM_20_E_SCHEME                                                    NTStatus      = 0xC0290092\n\tSTATUS_TPM_20_E_SIZE                                                      NTStatus      = 0xC0290095\n\tSTATUS_TPM_20_E_SYMMETRIC                                                 NTStatus      = 0xC0290096\n\tSTATUS_TPM_20_E_TAG                                                       NTStatus      = 0xC0290097\n\tSTATUS_TPM_20_E_SELECTOR                                                  NTStatus      = 0xC0290098\n\tSTATUS_TPM_20_E_INSUFFICIENT                                              NTStatus      = 0xC029009A\n\tSTATUS_TPM_20_E_SIGNATURE                                                 NTStatus      = 0xC029009B\n\tSTATUS_TPM_20_E_KEY                                                       NTStatus      = 0xC029009C\n\tSTATUS_TPM_20_E_POLICY_FAIL                                               NTStatus      = 0xC029009D\n\tSTATUS_TPM_20_E_INTEGRITY                                                 NTStatus      = 0xC029009F\n\tSTATUS_TPM_20_E_TICKET                                                    NTStatus      = 0xC02900A0\n\tSTATUS_TPM_20_E_RESERVED_BITS                                             NTStatus      = 0xC02900A1\n\tSTATUS_TPM_20_E_BAD_AUTH                                                  NTStatus      = 0xC02900A2\n\tSTATUS_TPM_20_E_EXPIRED                                                   NTStatus      = 0xC02900A3\n\tSTATUS_TPM_20_E_POLICY_CC                                                 NTStatus      = 0xC02900A4\n\tSTATUS_TPM_20_E_BINDING                                                   NTStatus      = 0xC02900A5\n\tSTATUS_TPM_20_E_CURVE                                                     NTStatus      = 0xC02900A6\n\tSTATUS_TPM_20_E_ECC_POINT                                                 NTStatus      = 0xC02900A7\n\tSTATUS_TPM_20_E_INITIALIZE                                                NTStatus      = 0xC0290100\n\tSTATUS_TPM_20_E_FAILURE                                                   NTStatus      = 0xC0290101\n\tSTATUS_TPM_20_E_SEQUENCE                                                  NTStatus      = 0xC0290103\n\tSTATUS_TPM_20_E_PRIVATE                                                   NTStatus      = 0xC029010B\n\tSTATUS_TPM_20_E_HMAC                                                      NTStatus      = 0xC0290119\n\tSTATUS_TPM_20_E_DISABLED                                                  NTStatus      = 0xC0290120\n\tSTATUS_TPM_20_E_EXCLUSIVE                                                 NTStatus      = 0xC0290121\n\tSTATUS_TPM_20_E_ECC_CURVE                                                 NTStatus      = 0xC0290123\n\tSTATUS_TPM_20_E_AUTH_TYPE                                                 NTStatus      = 0xC0290124\n\tSTATUS_TPM_20_E_AUTH_MISSING                                              NTStatus      = 0xC0290125\n\tSTATUS_TPM_20_E_POLICY                                                    NTStatus      = 0xC0290126\n\tSTATUS_TPM_20_E_PCR                                                       NTStatus      = 0xC0290127\n\tSTATUS_TPM_20_E_PCR_CHANGED                                               NTStatus      = 0xC0290128\n\tSTATUS_TPM_20_E_UPGRADE                                                   NTStatus      = 0xC029012D\n\tSTATUS_TPM_20_E_TOO_MANY_CONTEXTS                                         NTStatus      = 0xC029012E\n\tSTATUS_TPM_20_E_AUTH_UNAVAILABLE                                          NTStatus      = 0xC029012F\n\tSTATUS_TPM_20_E_REBOOT                                                    NTStatus      = 0xC0290130\n\tSTATUS_TPM_20_E_UNBALANCED                                                NTStatus      = 0xC0290131\n\tSTATUS_TPM_20_E_COMMAND_SIZE                                              NTStatus      = 0xC0290142\n\tSTATUS_TPM_20_E_COMMAND_CODE                                              NTStatus      = 0xC0290143\n\tSTATUS_TPM_20_E_AUTHSIZE                                                  NTStatus      = 0xC0290144\n\tSTATUS_TPM_20_E_AUTH_CONTEXT                                              NTStatus      = 0xC0290145\n\tSTATUS_TPM_20_E_NV_RANGE                                                  NTStatus      = 0xC0290146\n\tSTATUS_TPM_20_E_NV_SIZE                                                   NTStatus      = 0xC0290147\n\tSTATUS_TPM_20_E_NV_LOCKED                                                 NTStatus      = 0xC0290148\n\tSTATUS_TPM_20_E_NV_AUTHORIZATION                                          NTStatus      = 0xC0290149\n\tSTATUS_TPM_20_E_NV_UNINITIALIZED                                          NTStatus      = 0xC029014A\n\tSTATUS_TPM_20_E_NV_SPACE                                                  NTStatus      = 0xC029014B\n\tSTATUS_TPM_20_E_NV_DEFINED                                                NTStatus      = 0xC029014C\n\tSTATUS_TPM_20_E_BAD_CONTEXT                                               NTStatus      = 0xC0290150\n\tSTATUS_TPM_20_E_CPHASH                                                    NTStatus      = 0xC0290151\n\tSTATUS_TPM_20_E_PARENT                                                    NTStatus      = 0xC0290152\n\tSTATUS_TPM_20_E_NEEDS_TEST                                                NTStatus      = 0xC0290153\n\tSTATUS_TPM_20_E_NO_RESULT                                                 NTStatus      = 0xC0290154\n\tSTATUS_TPM_20_E_SENSITIVE                                                 NTStatus      = 0xC0290155\n\tSTATUS_TPM_COMMAND_BLOCKED                                                NTStatus      = 0xC0290400\n\tSTATUS_TPM_INVALID_HANDLE                                                 NTStatus      = 0xC0290401\n\tSTATUS_TPM_DUPLICATE_VHANDLE                                              NTStatus      = 0xC0290402\n\tSTATUS_TPM_EMBEDDED_COMMAND_BLOCKED                                       NTStatus      = 0xC0290403\n\tSTATUS_TPM_EMBEDDED_COMMAND_UNSUPPORTED                                   NTStatus      = 0xC0290404\n\tSTATUS_TPM_RETRY                                                          NTStatus      = 0xC0290800\n\tSTATUS_TPM_NEEDS_SELFTEST                                                 NTStatus      = 0xC0290801\n\tSTATUS_TPM_DOING_SELFTEST                                                 NTStatus      = 0xC0290802\n\tSTATUS_TPM_DEFEND_LOCK_RUNNING                                            NTStatus      = 0xC0290803\n\tSTATUS_TPM_COMMAND_CANCELED                                               NTStatus      = 0xC0291001\n\tSTATUS_TPM_TOO_MANY_CONTEXTS                                              NTStatus      = 0xC0291002\n\tSTATUS_TPM_NOT_FOUND                                                      NTStatus      = 0xC0291003\n\tSTATUS_TPM_ACCESS_DENIED                                                  NTStatus      = 0xC0291004\n\tSTATUS_TPM_INSUFFICIENT_BUFFER                                            NTStatus      = 0xC0291005\n\tSTATUS_TPM_PPI_FUNCTION_UNSUPPORTED                                       NTStatus      = 0xC0291006\n\tSTATUS_PCP_ERROR_MASK                                                     NTStatus      = 0xC0292000\n\tSTATUS_PCP_DEVICE_NOT_READY                                               NTStatus      = 0xC0292001\n\tSTATUS_PCP_INVALID_HANDLE                                                 NTStatus      = 0xC0292002\n\tSTATUS_PCP_INVALID_PARAMETER                                              NTStatus      = 0xC0292003\n\tSTATUS_PCP_FLAG_NOT_SUPPORTED                                             NTStatus      = 0xC0292004\n\tSTATUS_PCP_NOT_SUPPORTED                                                  NTStatus      = 0xC0292005\n\tSTATUS_PCP_BUFFER_TOO_SMALL                                               NTStatus      = 0xC0292006\n\tSTATUS_PCP_INTERNAL_ERROR                                                 NTStatus      = 0xC0292007\n\tSTATUS_PCP_AUTHENTICATION_FAILED                                          NTStatus      = 0xC0292008\n\tSTATUS_PCP_AUTHENTICATION_IGNORED                                         NTStatus      = 0xC0292009\n\tSTATUS_PCP_POLICY_NOT_FOUND                                               NTStatus      = 0xC029200A\n\tSTATUS_PCP_PROFILE_NOT_FOUND                                              NTStatus      = 0xC029200B\n\tSTATUS_PCP_VALIDATION_FAILED                                              NTStatus      = 0xC029200C\n\tSTATUS_PCP_DEVICE_NOT_FOUND                                               NTStatus      = 0xC029200D\n\tSTATUS_PCP_WRONG_PARENT                                                   NTStatus      = 0xC029200E\n\tSTATUS_PCP_KEY_NOT_LOADED                                                 NTStatus      = 0xC029200F\n\tSTATUS_PCP_NO_KEY_CERTIFICATION                                           NTStatus      = 0xC0292010\n\tSTATUS_PCP_KEY_NOT_FINALIZED                                              NTStatus      = 0xC0292011\n\tSTATUS_PCP_ATTESTATION_CHALLENGE_NOT_SET                                  NTStatus      = 0xC0292012\n\tSTATUS_PCP_NOT_PCR_BOUND                                                  NTStatus      = 0xC0292013\n\tSTATUS_PCP_KEY_ALREADY_FINALIZED                                          NTStatus      = 0xC0292014\n\tSTATUS_PCP_KEY_USAGE_POLICY_NOT_SUPPORTED                                 NTStatus      = 0xC0292015\n\tSTATUS_PCP_KEY_USAGE_POLICY_INVALID                                       NTStatus      = 0xC0292016\n\tSTATUS_PCP_SOFT_KEY_ERROR                                                 NTStatus      = 0xC0292017\n\tSTATUS_PCP_KEY_NOT_AUTHENTICATED                                          NTStatus      = 0xC0292018\n\tSTATUS_PCP_KEY_NOT_AIK                                                    NTStatus      = 0xC0292019\n\tSTATUS_PCP_KEY_NOT_SIGNING_KEY                                            NTStatus      = 0xC029201A\n\tSTATUS_PCP_LOCKED_OUT                                                     NTStatus      = 0xC029201B\n\tSTATUS_PCP_CLAIM_TYPE_NOT_SUPPORTED                                       NTStatus      = 0xC029201C\n\tSTATUS_PCP_TPM_VERSION_NOT_SUPPORTED                                      NTStatus      = 0xC029201D\n\tSTATUS_PCP_BUFFER_LENGTH_MISMATCH                                         NTStatus      = 0xC029201E\n\tSTATUS_PCP_IFX_RSA_KEY_CREATION_BLOCKED                                   NTStatus      = 0xC029201F\n\tSTATUS_PCP_TICKET_MISSING                                                 NTStatus      = 0xC0292020\n\tSTATUS_PCP_RAW_POLICY_NOT_SUPPORTED                                       NTStatus      = 0xC0292021\n\tSTATUS_PCP_KEY_HANDLE_INVALIDATED                                         NTStatus      = 0xC0292022\n\tSTATUS_PCP_UNSUPPORTED_PSS_SALT                                           NTStatus      = 0x40292023\n\tSTATUS_RTPM_CONTEXT_CONTINUE                                              NTStatus      = 0x00293000\n\tSTATUS_RTPM_CONTEXT_COMPLETE                                              NTStatus      = 0x00293001\n\tSTATUS_RTPM_NO_RESULT                                                     NTStatus      = 0xC0293002\n\tSTATUS_RTPM_PCR_READ_INCOMPLETE                                           NTStatus      = 0xC0293003\n\tSTATUS_RTPM_INVALID_CONTEXT                                               NTStatus      = 0xC0293004\n\tSTATUS_RTPM_UNSUPPORTED_CMD                                               NTStatus      = 0xC0293005\n\tSTATUS_TPM_ZERO_EXHAUST_ENABLED                                           NTStatus      = 0xC0294000\n\tSTATUS_HV_INVALID_HYPERCALL_CODE                                          NTStatus      = 0xC0350002\n\tSTATUS_HV_INVALID_HYPERCALL_INPUT                                         NTStatus      = 0xC0350003\n\tSTATUS_HV_INVALID_ALIGNMENT                                               NTStatus      = 0xC0350004\n\tSTATUS_HV_INVALID_PARAMETER                                               NTStatus      = 0xC0350005\n\tSTATUS_HV_ACCESS_DENIED                                                   NTStatus      = 0xC0350006\n\tSTATUS_HV_INVALID_PARTITION_STATE                                         NTStatus      = 0xC0350007\n\tSTATUS_HV_OPERATION_DENIED                                                NTStatus      = 0xC0350008\n\tSTATUS_HV_UNKNOWN_PROPERTY                                                NTStatus      = 0xC0350009\n\tSTATUS_HV_PROPERTY_VALUE_OUT_OF_RANGE                                     NTStatus      = 0xC035000A\n\tSTATUS_HV_INSUFFICIENT_MEMORY                                             NTStatus      = 0xC035000B\n\tSTATUS_HV_PARTITION_TOO_DEEP                                              NTStatus      = 0xC035000C\n\tSTATUS_HV_INVALID_PARTITION_ID                                            NTStatus      = 0xC035000D\n\tSTATUS_HV_INVALID_VP_INDEX                                                NTStatus      = 0xC035000E\n\tSTATUS_HV_INVALID_PORT_ID                                                 NTStatus      = 0xC0350011\n\tSTATUS_HV_INVALID_CONNECTION_ID                                           NTStatus      = 0xC0350012\n\tSTATUS_HV_INSUFFICIENT_BUFFERS                                            NTStatus      = 0xC0350013\n\tSTATUS_HV_NOT_ACKNOWLEDGED                                                NTStatus      = 0xC0350014\n\tSTATUS_HV_INVALID_VP_STATE                                                NTStatus      = 0xC0350015\n\tSTATUS_HV_ACKNOWLEDGED                                                    NTStatus      = 0xC0350016\n\tSTATUS_HV_INVALID_SAVE_RESTORE_STATE                                      NTStatus      = 0xC0350017\n\tSTATUS_HV_INVALID_SYNIC_STATE                                             NTStatus      = 0xC0350018\n\tSTATUS_HV_OBJECT_IN_USE                                                   NTStatus      = 0xC0350019\n\tSTATUS_HV_INVALID_PROXIMITY_DOMAIN_INFO                                   NTStatus      = 0xC035001A\n\tSTATUS_HV_NO_DATA                                                         NTStatus      = 0xC035001B\n\tSTATUS_HV_INACTIVE                                                        NTStatus      = 0xC035001C\n\tSTATUS_HV_NO_RESOURCES                                                    NTStatus      = 0xC035001D\n\tSTATUS_HV_FEATURE_UNAVAILABLE                                             NTStatus      = 0xC035001E\n\tSTATUS_HV_INSUFFICIENT_BUFFER                                             NTStatus      = 0xC0350033\n\tSTATUS_HV_INSUFFICIENT_DEVICE_DOMAINS                                     NTStatus      = 0xC0350038\n\tSTATUS_HV_CPUID_FEATURE_VALIDATION_ERROR                                  NTStatus      = 0xC035003C\n\tSTATUS_HV_CPUID_XSAVE_FEATURE_VALIDATION_ERROR                            NTStatus      = 0xC035003D\n\tSTATUS_HV_PROCESSOR_STARTUP_TIMEOUT                                       NTStatus      = 0xC035003E\n\tSTATUS_HV_SMX_ENABLED                                                     NTStatus      = 0xC035003F\n\tSTATUS_HV_INVALID_LP_INDEX                                                NTStatus      = 0xC0350041\n\tSTATUS_HV_INVALID_REGISTER_VALUE                                          NTStatus      = 0xC0350050\n\tSTATUS_HV_INVALID_VTL_STATE                                               NTStatus      = 0xC0350051\n\tSTATUS_HV_NX_NOT_DETECTED                                                 NTStatus      = 0xC0350055\n\tSTATUS_HV_INVALID_DEVICE_ID                                               NTStatus      = 0xC0350057\n\tSTATUS_HV_INVALID_DEVICE_STATE                                            NTStatus      = 0xC0350058\n\tSTATUS_HV_PENDING_PAGE_REQUESTS                                           NTStatus      = 0x00350059\n\tSTATUS_HV_PAGE_REQUEST_INVALID                                            NTStatus      = 0xC0350060\n\tSTATUS_HV_INVALID_CPU_GROUP_ID                                            NTStatus      = 0xC035006F\n\tSTATUS_HV_INVALID_CPU_GROUP_STATE                                         NTStatus      = 0xC0350070\n\tSTATUS_HV_OPERATION_FAILED                                                NTStatus      = 0xC0350071\n\tSTATUS_HV_NOT_ALLOWED_WITH_NESTED_VIRT_ACTIVE                             NTStatus      = 0xC0350072\n\tSTATUS_HV_INSUFFICIENT_ROOT_MEMORY                                        NTStatus      = 0xC0350073\n\tSTATUS_HV_NOT_PRESENT                                                     NTStatus      = 0xC0351000\n\tSTATUS_VID_DUPLICATE_HANDLER                                              NTStatus      = 0xC0370001\n\tSTATUS_VID_TOO_MANY_HANDLERS                                              NTStatus      = 0xC0370002\n\tSTATUS_VID_QUEUE_FULL                                                     NTStatus      = 0xC0370003\n\tSTATUS_VID_HANDLER_NOT_PRESENT                                            NTStatus      = 0xC0370004\n\tSTATUS_VID_INVALID_OBJECT_NAME                                            NTStatus      = 0xC0370005\n\tSTATUS_VID_PARTITION_NAME_TOO_LONG                                        NTStatus      = 0xC0370006\n\tSTATUS_VID_MESSAGE_QUEUE_NAME_TOO_LONG                                    NTStatus      = 0xC0370007\n\tSTATUS_VID_PARTITION_ALREADY_EXISTS                                       NTStatus      = 0xC0370008\n\tSTATUS_VID_PARTITION_DOES_NOT_EXIST                                       NTStatus      = 0xC0370009\n\tSTATUS_VID_PARTITION_NAME_NOT_FOUND                                       NTStatus      = 0xC037000A\n\tSTATUS_VID_MESSAGE_QUEUE_ALREADY_EXISTS                                   NTStatus      = 0xC037000B\n\tSTATUS_VID_EXCEEDED_MBP_ENTRY_MAP_LIMIT                                   NTStatus      = 0xC037000C\n\tSTATUS_VID_MB_STILL_REFERENCED                                            NTStatus      = 0xC037000D\n\tSTATUS_VID_CHILD_GPA_PAGE_SET_CORRUPTED                                   NTStatus      = 0xC037000E\n\tSTATUS_VID_INVALID_NUMA_SETTINGS                                          NTStatus      = 0xC037000F\n\tSTATUS_VID_INVALID_NUMA_NODE_INDEX                                        NTStatus      = 0xC0370010\n\tSTATUS_VID_NOTIFICATION_QUEUE_ALREADY_ASSOCIATED                          NTStatus      = 0xC0370011\n\tSTATUS_VID_INVALID_MEMORY_BLOCK_HANDLE                                    NTStatus      = 0xC0370012\n\tSTATUS_VID_PAGE_RANGE_OVERFLOW                                            NTStatus      = 0xC0370013\n\tSTATUS_VID_INVALID_MESSAGE_QUEUE_HANDLE                                   NTStatus      = 0xC0370014\n\tSTATUS_VID_INVALID_GPA_RANGE_HANDLE                                       NTStatus      = 0xC0370015\n\tSTATUS_VID_NO_MEMORY_BLOCK_NOTIFICATION_QUEUE                             NTStatus      = 0xC0370016\n\tSTATUS_VID_MEMORY_BLOCK_LOCK_COUNT_EXCEEDED                               NTStatus      = 0xC0370017\n\tSTATUS_VID_INVALID_PPM_HANDLE                                             NTStatus      = 0xC0370018\n\tSTATUS_VID_MBPS_ARE_LOCKED                                                NTStatus      = 0xC0370019\n\tSTATUS_VID_MESSAGE_QUEUE_CLOSED                                           NTStatus      = 0xC037001A\n\tSTATUS_VID_VIRTUAL_PROCESSOR_LIMIT_EXCEEDED                               NTStatus      = 0xC037001B\n\tSTATUS_VID_STOP_PENDING                                                   NTStatus      = 0xC037001C\n\tSTATUS_VID_INVALID_PROCESSOR_STATE                                        NTStatus      = 0xC037001D\n\tSTATUS_VID_EXCEEDED_KM_CONTEXT_COUNT_LIMIT                                NTStatus      = 0xC037001E\n\tSTATUS_VID_KM_INTERFACE_ALREADY_INITIALIZED                               NTStatus      = 0xC037001F\n\tSTATUS_VID_MB_PROPERTY_ALREADY_SET_RESET                                  NTStatus      = 0xC0370020\n\tSTATUS_VID_MMIO_RANGE_DESTROYED                                           NTStatus      = 0xC0370021\n\tSTATUS_VID_INVALID_CHILD_GPA_PAGE_SET                                     NTStatus      = 0xC0370022\n\tSTATUS_VID_RESERVE_PAGE_SET_IS_BEING_USED                                 NTStatus      = 0xC0370023\n\tSTATUS_VID_RESERVE_PAGE_SET_TOO_SMALL                                     NTStatus      = 0xC0370024\n\tSTATUS_VID_MBP_ALREADY_LOCKED_USING_RESERVED_PAGE                         NTStatus      = 0xC0370025\n\tSTATUS_VID_MBP_COUNT_EXCEEDED_LIMIT                                       NTStatus      = 0xC0370026\n\tSTATUS_VID_SAVED_STATE_CORRUPT                                            NTStatus      = 0xC0370027\n\tSTATUS_VID_SAVED_STATE_UNRECOGNIZED_ITEM                                  NTStatus      = 0xC0370028\n\tSTATUS_VID_SAVED_STATE_INCOMPATIBLE                                       NTStatus      = 0xC0370029\n\tSTATUS_VID_VTL_ACCESS_DENIED                                              NTStatus      = 0xC037002A\n\tSTATUS_VID_REMOTE_NODE_PARENT_GPA_PAGES_USED                              NTStatus      = 0x80370001\n\tSTATUS_IPSEC_BAD_SPI                                                      NTStatus      = 0xC0360001\n\tSTATUS_IPSEC_SA_LIFETIME_EXPIRED                                          NTStatus      = 0xC0360002\n\tSTATUS_IPSEC_WRONG_SA                                                     NTStatus      = 0xC0360003\n\tSTATUS_IPSEC_REPLAY_CHECK_FAILED                                          NTStatus      = 0xC0360004\n\tSTATUS_IPSEC_INVALID_PACKET                                               NTStatus      = 0xC0360005\n\tSTATUS_IPSEC_INTEGRITY_CHECK_FAILED                                       NTStatus      = 0xC0360006\n\tSTATUS_IPSEC_CLEAR_TEXT_DROP                                              NTStatus      = 0xC0360007\n\tSTATUS_IPSEC_AUTH_FIREWALL_DROP                                           NTStatus      = 0xC0360008\n\tSTATUS_IPSEC_THROTTLE_DROP                                                NTStatus      = 0xC0360009\n\tSTATUS_IPSEC_DOSP_BLOCK                                                   NTStatus      = 0xC0368000\n\tSTATUS_IPSEC_DOSP_RECEIVED_MULTICAST                                      NTStatus      = 0xC0368001\n\tSTATUS_IPSEC_DOSP_INVALID_PACKET                                          NTStatus      = 0xC0368002\n\tSTATUS_IPSEC_DOSP_STATE_LOOKUP_FAILED                                     NTStatus      = 0xC0368003\n\tSTATUS_IPSEC_DOSP_MAX_ENTRIES                                             NTStatus      = 0xC0368004\n\tSTATUS_IPSEC_DOSP_KEYMOD_NOT_ALLOWED                                      NTStatus      = 0xC0368005\n\tSTATUS_IPSEC_DOSP_MAX_PER_IP_RATELIMIT_QUEUES                             NTStatus      = 0xC0368006\n\tSTATUS_VOLMGR_INCOMPLETE_REGENERATION                                     NTStatus      = 0x80380001\n\tSTATUS_VOLMGR_INCOMPLETE_DISK_MIGRATION                                   NTStatus      = 0x80380002\n\tSTATUS_VOLMGR_DATABASE_FULL                                               NTStatus      = 0xC0380001\n\tSTATUS_VOLMGR_DISK_CONFIGURATION_CORRUPTED                                NTStatus      = 0xC0380002\n\tSTATUS_VOLMGR_DISK_CONFIGURATION_NOT_IN_SYNC                              NTStatus      = 0xC0380003\n\tSTATUS_VOLMGR_PACK_CONFIG_UPDATE_FAILED                                   NTStatus      = 0xC0380004\n\tSTATUS_VOLMGR_DISK_CONTAINS_NON_SIMPLE_VOLUME                             NTStatus      = 0xC0380005\n\tSTATUS_VOLMGR_DISK_DUPLICATE                                              NTStatus      = 0xC0380006\n\tSTATUS_VOLMGR_DISK_DYNAMIC                                                NTStatus      = 0xC0380007\n\tSTATUS_VOLMGR_DISK_ID_INVALID                                             NTStatus      = 0xC0380008\n\tSTATUS_VOLMGR_DISK_INVALID                                                NTStatus      = 0xC0380009\n\tSTATUS_VOLMGR_DISK_LAST_VOTER                                             NTStatus      = 0xC038000A\n\tSTATUS_VOLMGR_DISK_LAYOUT_INVALID                                         NTStatus      = 0xC038000B\n\tSTATUS_VOLMGR_DISK_LAYOUT_NON_BASIC_BETWEEN_BASIC_PARTITIONS              NTStatus      = 0xC038000C\n\tSTATUS_VOLMGR_DISK_LAYOUT_NOT_CYLINDER_ALIGNED                            NTStatus      = 0xC038000D\n\tSTATUS_VOLMGR_DISK_LAYOUT_PARTITIONS_TOO_SMALL                            NTStatus      = 0xC038000E\n\tSTATUS_VOLMGR_DISK_LAYOUT_PRIMARY_BETWEEN_LOGICAL_PARTITIONS              NTStatus      = 0xC038000F\n\tSTATUS_VOLMGR_DISK_LAYOUT_TOO_MANY_PARTITIONS                             NTStatus      = 0xC0380010\n\tSTATUS_VOLMGR_DISK_MISSING                                                NTStatus      = 0xC0380011\n\tSTATUS_VOLMGR_DISK_NOT_EMPTY                                              NTStatus      = 0xC0380012\n\tSTATUS_VOLMGR_DISK_NOT_ENOUGH_SPACE                                       NTStatus      = 0xC0380013\n\tSTATUS_VOLMGR_DISK_REVECTORING_FAILED                                     NTStatus      = 0xC0380014\n\tSTATUS_VOLMGR_DISK_SECTOR_SIZE_INVALID                                    NTStatus      = 0xC0380015\n\tSTATUS_VOLMGR_DISK_SET_NOT_CONTAINED                                      NTStatus      = 0xC0380016\n\tSTATUS_VOLMGR_DISK_USED_BY_MULTIPLE_MEMBERS                               NTStatus      = 0xC0380017\n\tSTATUS_VOLMGR_DISK_USED_BY_MULTIPLE_PLEXES                                NTStatus      = 0xC0380018\n\tSTATUS_VOLMGR_DYNAMIC_DISK_NOT_SUPPORTED                                  NTStatus      = 0xC0380019\n\tSTATUS_VOLMGR_EXTENT_ALREADY_USED                                         NTStatus      = 0xC038001A\n\tSTATUS_VOLMGR_EXTENT_NOT_CONTIGUOUS                                       NTStatus      = 0xC038001B\n\tSTATUS_VOLMGR_EXTENT_NOT_IN_PUBLIC_REGION                                 NTStatus      = 0xC038001C\n\tSTATUS_VOLMGR_EXTENT_NOT_SECTOR_ALIGNED                                   NTStatus      = 0xC038001D\n\tSTATUS_VOLMGR_EXTENT_OVERLAPS_EBR_PARTITION                               NTStatus      = 0xC038001E\n\tSTATUS_VOLMGR_EXTENT_VOLUME_LENGTHS_DO_NOT_MATCH                          NTStatus      = 0xC038001F\n\tSTATUS_VOLMGR_FAULT_TOLERANT_NOT_SUPPORTED                                NTStatus      = 0xC0380020\n\tSTATUS_VOLMGR_INTERLEAVE_LENGTH_INVALID                                   NTStatus      = 0xC0380021\n\tSTATUS_VOLMGR_MAXIMUM_REGISTERED_USERS                                    NTStatus      = 0xC0380022\n\tSTATUS_VOLMGR_MEMBER_IN_SYNC                                              NTStatus      = 0xC0380023\n\tSTATUS_VOLMGR_MEMBER_INDEX_DUPLICATE                                      NTStatus      = 0xC0380024\n\tSTATUS_VOLMGR_MEMBER_INDEX_INVALID                                        NTStatus      = 0xC0380025\n\tSTATUS_VOLMGR_MEMBER_MISSING                                              NTStatus      = 0xC0380026\n\tSTATUS_VOLMGR_MEMBER_NOT_DETACHED                                         NTStatus      = 0xC0380027\n\tSTATUS_VOLMGR_MEMBER_REGENERATING                                         NTStatus      = 0xC0380028\n\tSTATUS_VOLMGR_ALL_DISKS_FAILED                                            NTStatus      = 0xC0380029\n\tSTATUS_VOLMGR_NO_REGISTERED_USERS                                         NTStatus      = 0xC038002A\n\tSTATUS_VOLMGR_NO_SUCH_USER                                                NTStatus      = 0xC038002B\n\tSTATUS_VOLMGR_NOTIFICATION_RESET                                          NTStatus      = 0xC038002C\n\tSTATUS_VOLMGR_NUMBER_OF_MEMBERS_INVALID                                   NTStatus      = 0xC038002D\n\tSTATUS_VOLMGR_NUMBER_OF_PLEXES_INVALID                                    NTStatus      = 0xC038002E\n\tSTATUS_VOLMGR_PACK_DUPLICATE                                              NTStatus      = 0xC038002F\n\tSTATUS_VOLMGR_PACK_ID_INVALID                                             NTStatus      = 0xC0380030\n\tSTATUS_VOLMGR_PACK_INVALID                                                NTStatus      = 0xC0380031\n\tSTATUS_VOLMGR_PACK_NAME_INVALID                                           NTStatus      = 0xC0380032\n\tSTATUS_VOLMGR_PACK_OFFLINE                                                NTStatus      = 0xC0380033\n\tSTATUS_VOLMGR_PACK_HAS_QUORUM                                             NTStatus      = 0xC0380034\n\tSTATUS_VOLMGR_PACK_WITHOUT_QUORUM                                         NTStatus      = 0xC0380035\n\tSTATUS_VOLMGR_PARTITION_STYLE_INVALID                                     NTStatus      = 0xC0380036\n\tSTATUS_VOLMGR_PARTITION_UPDATE_FAILED                                     NTStatus      = 0xC0380037\n\tSTATUS_VOLMGR_PLEX_IN_SYNC                                                NTStatus      = 0xC0380038\n\tSTATUS_VOLMGR_PLEX_INDEX_DUPLICATE                                        NTStatus      = 0xC0380039\n\tSTATUS_VOLMGR_PLEX_INDEX_INVALID                                          NTStatus      = 0xC038003A\n\tSTATUS_VOLMGR_PLEX_LAST_ACTIVE                                            NTStatus      = 0xC038003B\n\tSTATUS_VOLMGR_PLEX_MISSING                                                NTStatus      = 0xC038003C\n\tSTATUS_VOLMGR_PLEX_REGENERATING                                           NTStatus      = 0xC038003D\n\tSTATUS_VOLMGR_PLEX_TYPE_INVALID                                           NTStatus      = 0xC038003E\n\tSTATUS_VOLMGR_PLEX_NOT_RAID5                                              NTStatus      = 0xC038003F\n\tSTATUS_VOLMGR_PLEX_NOT_SIMPLE                                             NTStatus      = 0xC0380040\n\tSTATUS_VOLMGR_STRUCTURE_SIZE_INVALID                                      NTStatus      = 0xC0380041\n\tSTATUS_VOLMGR_TOO_MANY_NOTIFICATION_REQUESTS                              NTStatus      = 0xC0380042\n\tSTATUS_VOLMGR_TRANSACTION_IN_PROGRESS                                     NTStatus      = 0xC0380043\n\tSTATUS_VOLMGR_UNEXPECTED_DISK_LAYOUT_CHANGE                               NTStatus      = 0xC0380044\n\tSTATUS_VOLMGR_VOLUME_CONTAINS_MISSING_DISK                                NTStatus      = 0xC0380045\n\tSTATUS_VOLMGR_VOLUME_ID_INVALID                                           NTStatus      = 0xC0380046\n\tSTATUS_VOLMGR_VOLUME_LENGTH_INVALID                                       NTStatus      = 0xC0380047\n\tSTATUS_VOLMGR_VOLUME_LENGTH_NOT_SECTOR_SIZE_MULTIPLE                      NTStatus      = 0xC0380048\n\tSTATUS_VOLMGR_VOLUME_NOT_MIRRORED                                         NTStatus      = 0xC0380049\n\tSTATUS_VOLMGR_VOLUME_NOT_RETAINED                                         NTStatus      = 0xC038004A\n\tSTATUS_VOLMGR_VOLUME_OFFLINE                                              NTStatus      = 0xC038004B\n\tSTATUS_VOLMGR_VOLUME_RETAINED                                             NTStatus      = 0xC038004C\n\tSTATUS_VOLMGR_NUMBER_OF_EXTENTS_INVALID                                   NTStatus      = 0xC038004D\n\tSTATUS_VOLMGR_DIFFERENT_SECTOR_SIZE                                       NTStatus      = 0xC038004E\n\tSTATUS_VOLMGR_BAD_BOOT_DISK                                               NTStatus      = 0xC038004F\n\tSTATUS_VOLMGR_PACK_CONFIG_OFFLINE                                         NTStatus      = 0xC0380050\n\tSTATUS_VOLMGR_PACK_CONFIG_ONLINE                                          NTStatus      = 0xC0380051\n\tSTATUS_VOLMGR_NOT_PRIMARY_PACK                                            NTStatus      = 0xC0380052\n\tSTATUS_VOLMGR_PACK_LOG_UPDATE_FAILED                                      NTStatus      = 0xC0380053\n\tSTATUS_VOLMGR_NUMBER_OF_DISKS_IN_PLEX_INVALID                             NTStatus      = 0xC0380054\n\tSTATUS_VOLMGR_NUMBER_OF_DISKS_IN_MEMBER_INVALID                           NTStatus      = 0xC0380055\n\tSTATUS_VOLMGR_VOLUME_MIRRORED                                             NTStatus      = 0xC0380056\n\tSTATUS_VOLMGR_PLEX_NOT_SIMPLE_SPANNED                                     NTStatus      = 0xC0380057\n\tSTATUS_VOLMGR_NO_VALID_LOG_COPIES                                         NTStatus      = 0xC0380058\n\tSTATUS_VOLMGR_PRIMARY_PACK_PRESENT                                        NTStatus      = 0xC0380059\n\tSTATUS_VOLMGR_NUMBER_OF_DISKS_INVALID                                     NTStatus      = 0xC038005A\n\tSTATUS_VOLMGR_MIRROR_NOT_SUPPORTED                                        NTStatus      = 0xC038005B\n\tSTATUS_VOLMGR_RAID5_NOT_SUPPORTED                                         NTStatus      = 0xC038005C\n\tSTATUS_BCD_NOT_ALL_ENTRIES_IMPORTED                                       NTStatus      = 0x80390001\n\tSTATUS_BCD_TOO_MANY_ELEMENTS                                              NTStatus      = 0xC0390002\n\tSTATUS_BCD_NOT_ALL_ENTRIES_SYNCHRONIZED                                   NTStatus      = 0x80390003\n\tSTATUS_VHD_DRIVE_FOOTER_MISSING                                           NTStatus      = 0xC03A0001\n\tSTATUS_VHD_DRIVE_FOOTER_CHECKSUM_MISMATCH                                 NTStatus      = 0xC03A0002\n\tSTATUS_VHD_DRIVE_FOOTER_CORRUPT                                           NTStatus      = 0xC03A0003\n\tSTATUS_VHD_FORMAT_UNKNOWN                                                 NTStatus      = 0xC03A0004\n\tSTATUS_VHD_FORMAT_UNSUPPORTED_VERSION                                     NTStatus      = 0xC03A0005\n\tSTATUS_VHD_SPARSE_HEADER_CHECKSUM_MISMATCH                                NTStatus      = 0xC03A0006\n\tSTATUS_VHD_SPARSE_HEADER_UNSUPPORTED_VERSION                              NTStatus      = 0xC03A0007\n\tSTATUS_VHD_SPARSE_HEADER_CORRUPT                                          NTStatus      = 0xC03A0008\n\tSTATUS_VHD_BLOCK_ALLOCATION_FAILURE                                       NTStatus      = 0xC03A0009\n\tSTATUS_VHD_BLOCK_ALLOCATION_TABLE_CORRUPT                                 NTStatus      = 0xC03A000A\n\tSTATUS_VHD_INVALID_BLOCK_SIZE                                             NTStatus      = 0xC03A000B\n\tSTATUS_VHD_BITMAP_MISMATCH                                                NTStatus      = 0xC03A000C\n\tSTATUS_VHD_PARENT_VHD_NOT_FOUND                                           NTStatus      = 0xC03A000D\n\tSTATUS_VHD_CHILD_PARENT_ID_MISMATCH                                       NTStatus      = 0xC03A000E\n\tSTATUS_VHD_CHILD_PARENT_TIMESTAMP_MISMATCH                                NTStatus      = 0xC03A000F\n\tSTATUS_VHD_METADATA_READ_FAILURE                                          NTStatus      = 0xC03A0010\n\tSTATUS_VHD_METADATA_WRITE_FAILURE                                         NTStatus      = 0xC03A0011\n\tSTATUS_VHD_INVALID_SIZE                                                   NTStatus      = 0xC03A0012\n\tSTATUS_VHD_INVALID_FILE_SIZE                                              NTStatus      = 0xC03A0013\n\tSTATUS_VIRTDISK_PROVIDER_NOT_FOUND                                        NTStatus      = 0xC03A0014\n\tSTATUS_VIRTDISK_NOT_VIRTUAL_DISK                                          NTStatus      = 0xC03A0015\n\tSTATUS_VHD_PARENT_VHD_ACCESS_DENIED                                       NTStatus      = 0xC03A0016\n\tSTATUS_VHD_CHILD_PARENT_SIZE_MISMATCH                                     NTStatus      = 0xC03A0017\n\tSTATUS_VHD_DIFFERENCING_CHAIN_CYCLE_DETECTED                              NTStatus      = 0xC03A0018\n\tSTATUS_VHD_DIFFERENCING_CHAIN_ERROR_IN_PARENT                             NTStatus      = 0xC03A0019\n\tSTATUS_VIRTUAL_DISK_LIMITATION                                            NTStatus      = 0xC03A001A\n\tSTATUS_VHD_INVALID_TYPE                                                   NTStatus      = 0xC03A001B\n\tSTATUS_VHD_INVALID_STATE                                                  NTStatus      = 0xC03A001C\n\tSTATUS_VIRTDISK_UNSUPPORTED_DISK_SECTOR_SIZE                              NTStatus      = 0xC03A001D\n\tSTATUS_VIRTDISK_DISK_ALREADY_OWNED                                        NTStatus      = 0xC03A001E\n\tSTATUS_VIRTDISK_DISK_ONLINE_AND_WRITABLE                                  NTStatus      = 0xC03A001F\n\tSTATUS_CTLOG_TRACKING_NOT_INITIALIZED                                     NTStatus      = 0xC03A0020\n\tSTATUS_CTLOG_LOGFILE_SIZE_EXCEEDED_MAXSIZE                                NTStatus      = 0xC03A0021\n\tSTATUS_CTLOG_VHD_CHANGED_OFFLINE                                          NTStatus      = 0xC03A0022\n\tSTATUS_CTLOG_INVALID_TRACKING_STATE                                       NTStatus      = 0xC03A0023\n\tSTATUS_CTLOG_INCONSISTENT_TRACKING_FILE                                   NTStatus      = 0xC03A0024\n\tSTATUS_VHD_METADATA_FULL                                                  NTStatus      = 0xC03A0028\n\tSTATUS_VHD_INVALID_CHANGE_TRACKING_ID                                     NTStatus      = 0xC03A0029\n\tSTATUS_VHD_CHANGE_TRACKING_DISABLED                                       NTStatus      = 0xC03A002A\n\tSTATUS_VHD_MISSING_CHANGE_TRACKING_INFORMATION                            NTStatus      = 0xC03A0030\n\tSTATUS_VHD_RESIZE_WOULD_TRUNCATE_DATA                                     NTStatus      = 0xC03A0031\n\tSTATUS_VHD_COULD_NOT_COMPUTE_MINIMUM_VIRTUAL_SIZE                         NTStatus      = 0xC03A0032\n\tSTATUS_VHD_ALREADY_AT_OR_BELOW_MINIMUM_VIRTUAL_SIZE                       NTStatus      = 0xC03A0033\n\tSTATUS_QUERY_STORAGE_ERROR                                                NTStatus      = 0x803A0001\n\tSTATUS_GDI_HANDLE_LEAK                                                    NTStatus      = 0x803F0001\n\tSTATUS_RKF_KEY_NOT_FOUND                                                  NTStatus      = 0xC0400001\n\tSTATUS_RKF_DUPLICATE_KEY                                                  NTStatus      = 0xC0400002\n\tSTATUS_RKF_BLOB_FULL                                                      NTStatus      = 0xC0400003\n\tSTATUS_RKF_STORE_FULL                                                     NTStatus      = 0xC0400004\n\tSTATUS_RKF_FILE_BLOCKED                                                   NTStatus      = 0xC0400005\n\tSTATUS_RKF_ACTIVE_KEY                                                     NTStatus      = 0xC0400006\n\tSTATUS_RDBSS_RESTART_OPERATION                                            NTStatus      = 0xC0410001\n\tSTATUS_RDBSS_CONTINUE_OPERATION                                           NTStatus      = 0xC0410002\n\tSTATUS_RDBSS_POST_OPERATION                                               NTStatus      = 0xC0410003\n\tSTATUS_RDBSS_RETRY_LOOKUP                                                 NTStatus      = 0xC0410004\n\tSTATUS_BTH_ATT_INVALID_HANDLE                                             NTStatus      = 0xC0420001\n\tSTATUS_BTH_ATT_READ_NOT_PERMITTED                                         NTStatus      = 0xC0420002\n\tSTATUS_BTH_ATT_WRITE_NOT_PERMITTED                                        NTStatus      = 0xC0420003\n\tSTATUS_BTH_ATT_INVALID_PDU                                                NTStatus      = 0xC0420004\n\tSTATUS_BTH_ATT_INSUFFICIENT_AUTHENTICATION                                NTStatus      = 0xC0420005\n\tSTATUS_BTH_ATT_REQUEST_NOT_SUPPORTED                                      NTStatus      = 0xC0420006\n\tSTATUS_BTH_ATT_INVALID_OFFSET                                             NTStatus      = 0xC0420007\n\tSTATUS_BTH_ATT_INSUFFICIENT_AUTHORIZATION                                 NTStatus      = 0xC0420008\n\tSTATUS_BTH_ATT_PREPARE_QUEUE_FULL                                         NTStatus      = 0xC0420009\n\tSTATUS_BTH_ATT_ATTRIBUTE_NOT_FOUND                                        NTStatus      = 0xC042000A\n\tSTATUS_BTH_ATT_ATTRIBUTE_NOT_LONG                                         NTStatus      = 0xC042000B\n\tSTATUS_BTH_ATT_INSUFFICIENT_ENCRYPTION_KEY_SIZE                           NTStatus      = 0xC042000C\n\tSTATUS_BTH_ATT_INVALID_ATTRIBUTE_VALUE_LENGTH                             NTStatus      = 0xC042000D\n\tSTATUS_BTH_ATT_UNLIKELY                                                   NTStatus      = 0xC042000E\n\tSTATUS_BTH_ATT_INSUFFICIENT_ENCRYPTION                                    NTStatus      = 0xC042000F\n\tSTATUS_BTH_ATT_UNSUPPORTED_GROUP_TYPE                                     NTStatus      = 0xC0420010\n\tSTATUS_BTH_ATT_INSUFFICIENT_RESOURCES                                     NTStatus      = 0xC0420011\n\tSTATUS_BTH_ATT_UNKNOWN_ERROR                                              NTStatus      = 0xC0421000\n\tSTATUS_SECUREBOOT_ROLLBACK_DETECTED                                       NTStatus      = 0xC0430001\n\tSTATUS_SECUREBOOT_POLICY_VIOLATION                                        NTStatus      = 0xC0430002\n\tSTATUS_SECUREBOOT_INVALID_POLICY                                          NTStatus      = 0xC0430003\n\tSTATUS_SECUREBOOT_POLICY_PUBLISHER_NOT_FOUND                              NTStatus      = 0xC0430004\n\tSTATUS_SECUREBOOT_POLICY_NOT_SIGNED                                       NTStatus      = 0xC0430005\n\tSTATUS_SECUREBOOT_NOT_ENABLED                                             NTStatus      = 0x80430006\n\tSTATUS_SECUREBOOT_FILE_REPLACED                                           NTStatus      = 0xC0430007\n\tSTATUS_SECUREBOOT_POLICY_NOT_AUTHORIZED                                   NTStatus      = 0xC0430008\n\tSTATUS_SECUREBOOT_POLICY_UNKNOWN                                          NTStatus      = 0xC0430009\n\tSTATUS_SECUREBOOT_POLICY_MISSING_ANTIROLLBACKVERSION                      NTStatus      = 0xC043000A\n\tSTATUS_SECUREBOOT_PLATFORM_ID_MISMATCH                                    NTStatus      = 0xC043000B\n\tSTATUS_SECUREBOOT_POLICY_ROLLBACK_DETECTED                                NTStatus      = 0xC043000C\n\tSTATUS_SECUREBOOT_POLICY_UPGRADE_MISMATCH                                 NTStatus      = 0xC043000D\n\tSTATUS_SECUREBOOT_REQUIRED_POLICY_FILE_MISSING                            NTStatus      = 0xC043000E\n\tSTATUS_SECUREBOOT_NOT_BASE_POLICY                                         NTStatus      = 0xC043000F\n\tSTATUS_SECUREBOOT_NOT_SUPPLEMENTAL_POLICY                                 NTStatus      = 0xC0430010\n\tSTATUS_PLATFORM_MANIFEST_NOT_AUTHORIZED                                   NTStatus      = 0xC0EB0001\n\tSTATUS_PLATFORM_MANIFEST_INVALID                                          NTStatus      = 0xC0EB0002\n\tSTATUS_PLATFORM_MANIFEST_FILE_NOT_AUTHORIZED                              NTStatus      = 0xC0EB0003\n\tSTATUS_PLATFORM_MANIFEST_CATALOG_NOT_AUTHORIZED                           NTStatus      = 0xC0EB0004\n\tSTATUS_PLATFORM_MANIFEST_BINARY_ID_NOT_FOUND                              NTStatus      = 0xC0EB0005\n\tSTATUS_PLATFORM_MANIFEST_NOT_ACTIVE                                       NTStatus      = 0xC0EB0006\n\tSTATUS_PLATFORM_MANIFEST_NOT_SIGNED                                       NTStatus      = 0xC0EB0007\n\tSTATUS_SYSTEM_INTEGRITY_ROLLBACK_DETECTED                                 NTStatus      = 0xC0E90001\n\tSTATUS_SYSTEM_INTEGRITY_POLICY_VIOLATION                                  NTStatus      = 0xC0E90002\n\tSTATUS_SYSTEM_INTEGRITY_INVALID_POLICY                                    NTStatus      = 0xC0E90003\n\tSTATUS_SYSTEM_INTEGRITY_POLICY_NOT_SIGNED                                 NTStatus      = 0xC0E90004\n\tSTATUS_SYSTEM_INTEGRITY_TOO_MANY_POLICIES                                 NTStatus      = 0xC0E90005\n\tSTATUS_SYSTEM_INTEGRITY_SUPPLEMENTAL_POLICY_NOT_AUTHORIZED                NTStatus      = 0xC0E90006\n\tSTATUS_NO_APPLICABLE_APP_LICENSES_FOUND                                   NTStatus      = 0xC0EA0001\n\tSTATUS_CLIP_LICENSE_NOT_FOUND                                             NTStatus      = 0xC0EA0002\n\tSTATUS_CLIP_DEVICE_LICENSE_MISSING                                        NTStatus      = 0xC0EA0003\n\tSTATUS_CLIP_LICENSE_INVALID_SIGNATURE                                     NTStatus      = 0xC0EA0004\n\tSTATUS_CLIP_KEYHOLDER_LICENSE_MISSING_OR_INVALID                          NTStatus      = 0xC0EA0005\n\tSTATUS_CLIP_LICENSE_EXPIRED                                               NTStatus      = 0xC0EA0006\n\tSTATUS_CLIP_LICENSE_SIGNED_BY_UNKNOWN_SOURCE                              NTStatus      = 0xC0EA0007\n\tSTATUS_CLIP_LICENSE_NOT_SIGNED                                            NTStatus      = 0xC0EA0008\n\tSTATUS_CLIP_LICENSE_HARDWARE_ID_OUT_OF_TOLERANCE                          NTStatus      = 0xC0EA0009\n\tSTATUS_CLIP_LICENSE_DEVICE_ID_MISMATCH                                    NTStatus      = 0xC0EA000A\n\tSTATUS_AUDIO_ENGINE_NODE_NOT_FOUND                                        NTStatus      = 0xC0440001\n\tSTATUS_HDAUDIO_EMPTY_CONNECTION_LIST                                      NTStatus      = 0xC0440002\n\tSTATUS_HDAUDIO_CONNECTION_LIST_NOT_SUPPORTED                              NTStatus      = 0xC0440003\n\tSTATUS_HDAUDIO_NO_LOGICAL_DEVICES_CREATED                                 NTStatus      = 0xC0440004\n\tSTATUS_HDAUDIO_NULL_LINKED_LIST_ENTRY                                     NTStatus      = 0xC0440005\n\tSTATUS_SPACES_REPAIRED                                                    NTStatus      = 0x00E70000\n\tSTATUS_SPACES_PAUSE                                                       NTStatus      = 0x00E70001\n\tSTATUS_SPACES_COMPLETE                                                    NTStatus      = 0x00E70002\n\tSTATUS_SPACES_REDIRECT                                                    NTStatus      = 0x00E70003\n\tSTATUS_SPACES_FAULT_DOMAIN_TYPE_INVALID                                   NTStatus      = 0xC0E70001\n\tSTATUS_SPACES_RESILIENCY_TYPE_INVALID                                     NTStatus      = 0xC0E70003\n\tSTATUS_SPACES_DRIVE_SECTOR_SIZE_INVALID                                   NTStatus      = 0xC0E70004\n\tSTATUS_SPACES_DRIVE_REDUNDANCY_INVALID                                    NTStatus      = 0xC0E70006\n\tSTATUS_SPACES_NUMBER_OF_DATA_COPIES_INVALID                               NTStatus      = 0xC0E70007\n\tSTATUS_SPACES_INTERLEAVE_LENGTH_INVALID                                   NTStatus      = 0xC0E70009\n\tSTATUS_SPACES_NUMBER_OF_COLUMNS_INVALID                                   NTStatus      = 0xC0E7000A\n\tSTATUS_SPACES_NOT_ENOUGH_DRIVES                                           NTStatus      = 0xC0E7000B\n\tSTATUS_SPACES_EXTENDED_ERROR                                              NTStatus      = 0xC0E7000C\n\tSTATUS_SPACES_PROVISIONING_TYPE_INVALID                                   NTStatus      = 0xC0E7000D\n\tSTATUS_SPACES_ALLOCATION_SIZE_INVALID                                     NTStatus      = 0xC0E7000E\n\tSTATUS_SPACES_ENCLOSURE_AWARE_INVALID                                     NTStatus      = 0xC0E7000F\n\tSTATUS_SPACES_WRITE_CACHE_SIZE_INVALID                                    NTStatus      = 0xC0E70010\n\tSTATUS_SPACES_NUMBER_OF_GROUPS_INVALID                                    NTStatus      = 0xC0E70011\n\tSTATUS_SPACES_DRIVE_OPERATIONAL_STATE_INVALID                             NTStatus      = 0xC0E70012\n\tSTATUS_SPACES_UPDATE_COLUMN_STATE                                         NTStatus      = 0xC0E70013\n\tSTATUS_SPACES_MAP_REQUIRED                                                NTStatus      = 0xC0E70014\n\tSTATUS_SPACES_UNSUPPORTED_VERSION                                         NTStatus      = 0xC0E70015\n\tSTATUS_SPACES_CORRUPT_METADATA                                            NTStatus      = 0xC0E70016\n\tSTATUS_SPACES_DRT_FULL                                                    NTStatus      = 0xC0E70017\n\tSTATUS_SPACES_INCONSISTENCY                                               NTStatus      = 0xC0E70018\n\tSTATUS_SPACES_LOG_NOT_READY                                               NTStatus      = 0xC0E70019\n\tSTATUS_SPACES_NO_REDUNDANCY                                               NTStatus      = 0xC0E7001A\n\tSTATUS_SPACES_DRIVE_NOT_READY                                             NTStatus      = 0xC0E7001B\n\tSTATUS_SPACES_DRIVE_SPLIT                                                 NTStatus      = 0xC0E7001C\n\tSTATUS_SPACES_DRIVE_LOST_DATA                                             NTStatus      = 0xC0E7001D\n\tSTATUS_SPACES_ENTRY_INCOMPLETE                                            NTStatus      = 0xC0E7001E\n\tSTATUS_SPACES_ENTRY_INVALID                                               NTStatus      = 0xC0E7001F\n\tSTATUS_SPACES_MARK_DIRTY                                                  NTStatus      = 0xC0E70020\n\tSTATUS_VOLSNAP_BOOTFILE_NOT_VALID                                         NTStatus      = 0xC0500003\n\tSTATUS_VOLSNAP_ACTIVATION_TIMEOUT                                         NTStatus      = 0xC0500004\n\tSTATUS_IO_PREEMPTED                                                       NTStatus      = 0xC0510001\n\tSTATUS_SVHDX_ERROR_STORED                                                 NTStatus      = 0xC05C0000\n\tSTATUS_SVHDX_ERROR_NOT_AVAILABLE                                          NTStatus      = 0xC05CFF00\n\tSTATUS_SVHDX_UNIT_ATTENTION_AVAILABLE                                     NTStatus      = 0xC05CFF01\n\tSTATUS_SVHDX_UNIT_ATTENTION_CAPACITY_DATA_CHANGED                         NTStatus      = 0xC05CFF02\n\tSTATUS_SVHDX_UNIT_ATTENTION_RESERVATIONS_PREEMPTED                        NTStatus      = 0xC05CFF03\n\tSTATUS_SVHDX_UNIT_ATTENTION_RESERVATIONS_RELEASED                         NTStatus      = 0xC05CFF04\n\tSTATUS_SVHDX_UNIT_ATTENTION_REGISTRATIONS_PREEMPTED                       NTStatus      = 0xC05CFF05\n\tSTATUS_SVHDX_UNIT_ATTENTION_OPERATING_DEFINITION_CHANGED                  NTStatus      = 0xC05CFF06\n\tSTATUS_SVHDX_RESERVATION_CONFLICT                                         NTStatus      = 0xC05CFF07\n\tSTATUS_SVHDX_WRONG_FILE_TYPE                                              NTStatus      = 0xC05CFF08\n\tSTATUS_SVHDX_VERSION_MISMATCH                                             NTStatus      = 0xC05CFF09\n\tSTATUS_VHD_SHARED                                                         NTStatus      = 0xC05CFF0A\n\tSTATUS_SVHDX_NO_INITIATOR                                                 NTStatus      = 0xC05CFF0B\n\tSTATUS_VHDSET_BACKING_STORAGE_NOT_FOUND                                   NTStatus      = 0xC05CFF0C\n\tSTATUS_SMB_NO_PREAUTH_INTEGRITY_HASH_OVERLAP                              NTStatus      = 0xC05D0000\n\tSTATUS_SMB_BAD_CLUSTER_DIALECT                                            NTStatus      = 0xC05D0001\n\tSTATUS_SMB_GUEST_LOGON_BLOCKED                                            NTStatus      = 0xC05D0002\n\tSTATUS_SECCORE_INVALID_COMMAND                                            NTStatus      = 0xC0E80000\n\tSTATUS_VSM_NOT_INITIALIZED                                                NTStatus      = 0xC0450000\n\tSTATUS_VSM_DMA_PROTECTION_NOT_IN_USE                                      NTStatus      = 0xC0450001\n\tSTATUS_APPEXEC_CONDITION_NOT_SATISFIED                                    NTStatus      = 0xC0EC0000\n\tSTATUS_APPEXEC_HANDLE_INVALIDATED                                         NTStatus      = 0xC0EC0001\n\tSTATUS_APPEXEC_INVALID_HOST_GENERATION                                    NTStatus      = 0xC0EC0002\n\tSTATUS_APPEXEC_UNEXPECTED_PROCESS_REGISTRATION                            NTStatus      = 0xC0EC0003\n\tSTATUS_APPEXEC_INVALID_HOST_STATE                                         NTStatus      = 0xC0EC0004\n\tSTATUS_APPEXEC_NO_DONOR                                                   NTStatus      = 0xC0EC0005\n\tSTATUS_APPEXEC_HOST_ID_MISMATCH                                           NTStatus      = 0xC0EC0006\n\tSTATUS_APPEXEC_UNKNOWN_USER                                               NTStatus      = 0xC0EC0007\n)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/windows/zknownfolderids_windows.go",
    "content": "// Code generated by 'mkknownfolderids.bash'; DO NOT EDIT.\n\npackage windows\n\ntype KNOWNFOLDERID GUID\n\nvar (\n\tFOLDERID_NetworkFolder          = &KNOWNFOLDERID{0xd20beec4, 0x5ca8, 0x4905, [8]byte{0xae, 0x3b, 0xbf, 0x25, 0x1e, 0xa0, 0x9b, 0x53}}\n\tFOLDERID_ComputerFolder         = &KNOWNFOLDERID{0x0ac0837c, 0xbbf8, 0x452a, [8]byte{0x85, 0x0d, 0x79, 0xd0, 0x8e, 0x66, 0x7c, 0xa7}}\n\tFOLDERID_InternetFolder         = &KNOWNFOLDERID{0x4d9f7874, 0x4e0c, 0x4904, [8]byte{0x96, 0x7b, 0x40, 0xb0, 0xd2, 0x0c, 0x3e, 0x4b}}\n\tFOLDERID_ControlPanelFolder     = &KNOWNFOLDERID{0x82a74aeb, 0xaeb4, 0x465c, [8]byte{0xa0, 0x14, 0xd0, 0x97, 0xee, 0x34, 0x6d, 0x63}}\n\tFOLDERID_PrintersFolder         = &KNOWNFOLDERID{0x76fc4e2d, 0xd6ad, 0x4519, [8]byte{0xa6, 0x63, 0x37, 0xbd, 0x56, 0x06, 0x81, 0x85}}\n\tFOLDERID_SyncManagerFolder      = &KNOWNFOLDERID{0x43668bf8, 0xc14e, 0x49b2, [8]byte{0x97, 0xc9, 0x74, 0x77, 0x84, 0xd7, 0x84, 0xb7}}\n\tFOLDERID_SyncSetupFolder        = &KNOWNFOLDERID{0x0f214138, 0xb1d3, 0x4a90, [8]byte{0xbb, 0xa9, 0x27, 0xcb, 0xc0, 0xc5, 0x38, 0x9a}}\n\tFOLDERID_ConflictFolder         = &KNOWNFOLDERID{0x4bfefb45, 0x347d, 0x4006, [8]byte{0xa5, 0xbe, 0xac, 0x0c, 0xb0, 0x56, 0x71, 0x92}}\n\tFOLDERID_SyncResultsFolder      = &KNOWNFOLDERID{0x289a9a43, 0xbe44, 0x4057, [8]byte{0xa4, 0x1b, 0x58, 0x7a, 0x76, 0xd7, 0xe7, 0xf9}}\n\tFOLDERID_RecycleBinFolder       = &KNOWNFOLDERID{0xb7534046, 0x3ecb, 0x4c18, [8]byte{0xbe, 0x4e, 0x64, 0xcd, 0x4c, 0xb7, 0xd6, 0xac}}\n\tFOLDERID_ConnectionsFolder      = &KNOWNFOLDERID{0x6f0cd92b, 0x2e97, 0x45d1, [8]byte{0x88, 0xff, 0xb0, 0xd1, 0x86, 0xb8, 0xde, 0xdd}}\n\tFOLDERID_Fonts                  = &KNOWNFOLDERID{0xfd228cb7, 0xae11, 0x4ae3, [8]byte{0x86, 0x4c, 0x16, 0xf3, 0x91, 0x0a, 0xb8, 0xfe}}\n\tFOLDERID_Desktop                = &KNOWNFOLDERID{0xb4bfcc3a, 0xdb2c, 0x424c, [8]byte{0xb0, 0x29, 0x7f, 0xe9, 0x9a, 0x87, 0xc6, 0x41}}\n\tFOLDERID_Startup                = &KNOWNFOLDERID{0xb97d20bb, 0xf46a, 0x4c97, [8]byte{0xba, 0x10, 0x5e, 0x36, 0x08, 0x43, 0x08, 0x54}}\n\tFOLDERID_Programs               = &KNOWNFOLDERID{0xa77f5d77, 0x2e2b, 0x44c3, [8]byte{0xa6, 0xa2, 0xab, 0xa6, 0x01, 0x05, 0x4a, 0x51}}\n\tFOLDERID_StartMenu              = &KNOWNFOLDERID{0x625b53c3, 0xab48, 0x4ec1, [8]byte{0xba, 0x1f, 0xa1, 0xef, 0x41, 0x46, 0xfc, 0x19}}\n\tFOLDERID_Recent                 = &KNOWNFOLDERID{0xae50c081, 0xebd2, 0x438a, [8]byte{0x86, 0x55, 0x8a, 0x09, 0x2e, 0x34, 0x98, 0x7a}}\n\tFOLDERID_SendTo                 = &KNOWNFOLDERID{0x8983036c, 0x27c0, 0x404b, [8]byte{0x8f, 0x08, 0x10, 0x2d, 0x10, 0xdc, 0xfd, 0x74}}\n\tFOLDERID_Documents              = &KNOWNFOLDERID{0xfdd39ad0, 0x238f, 0x46af, [8]byte{0xad, 0xb4, 0x6c, 0x85, 0x48, 0x03, 0x69, 0xc7}}\n\tFOLDERID_Favorites              = &KNOWNFOLDERID{0x1777f761, 0x68ad, 0x4d8a, [8]byte{0x87, 0xbd, 0x30, 0xb7, 0x59, 0xfa, 0x33, 0xdd}}\n\tFOLDERID_NetHood                = &KNOWNFOLDERID{0xc5abbf53, 0xe17f, 0x4121, [8]byte{0x89, 0x00, 0x86, 0x62, 0x6f, 0xc2, 0xc9, 0x73}}\n\tFOLDERID_PrintHood              = &KNOWNFOLDERID{0x9274bd8d, 0xcfd1, 0x41c3, [8]byte{0xb3, 0x5e, 0xb1, 0x3f, 0x55, 0xa7, 0x58, 0xf4}}\n\tFOLDERID_Templates              = &KNOWNFOLDERID{0xa63293e8, 0x664e, 0x48db, [8]byte{0xa0, 0x79, 0xdf, 0x75, 0x9e, 0x05, 0x09, 0xf7}}\n\tFOLDERID_CommonStartup          = &KNOWNFOLDERID{0x82a5ea35, 0xd9cd, 0x47c5, [8]byte{0x96, 0x29, 0xe1, 0x5d, 0x2f, 0x71, 0x4e, 0x6e}}\n\tFOLDERID_CommonPrograms         = &KNOWNFOLDERID{0x0139d44e, 0x6afe, 0x49f2, [8]byte{0x86, 0x90, 0x3d, 0xaf, 0xca, 0xe6, 0xff, 0xb8}}\n\tFOLDERID_CommonStartMenu        = &KNOWNFOLDERID{0xa4115719, 0xd62e, 0x491d, [8]byte{0xaa, 0x7c, 0xe7, 0x4b, 0x8b, 0xe3, 0xb0, 0x67}}\n\tFOLDERID_PublicDesktop          = &KNOWNFOLDERID{0xc4aa340d, 0xf20f, 0x4863, [8]byte{0xaf, 0xef, 0xf8, 0x7e, 0xf2, 0xe6, 0xba, 0x25}}\n\tFOLDERID_ProgramData            = &KNOWNFOLDERID{0x62ab5d82, 0xfdc1, 0x4dc3, [8]byte{0xa9, 0xdd, 0x07, 0x0d, 0x1d, 0x49, 0x5d, 0x97}}\n\tFOLDERID_CommonTemplates        = &KNOWNFOLDERID{0xb94237e7, 0x57ac, 0x4347, [8]byte{0x91, 0x51, 0xb0, 0x8c, 0x6c, 0x32, 0xd1, 0xf7}}\n\tFOLDERID_PublicDocuments        = &KNOWNFOLDERID{0xed4824af, 0xdce4, 0x45a8, [8]byte{0x81, 0xe2, 0xfc, 0x79, 0x65, 0x08, 0x36, 0x34}}\n\tFOLDERID_RoamingAppData         = &KNOWNFOLDERID{0x3eb685db, 0x65f9, 0x4cf6, [8]byte{0xa0, 0x3a, 0xe3, 0xef, 0x65, 0x72, 0x9f, 0x3d}}\n\tFOLDERID_LocalAppData           = &KNOWNFOLDERID{0xf1b32785, 0x6fba, 0x4fcf, [8]byte{0x9d, 0x55, 0x7b, 0x8e, 0x7f, 0x15, 0x70, 0x91}}\n\tFOLDERID_LocalAppDataLow        = &KNOWNFOLDERID{0xa520a1a4, 0x1780, 0x4ff6, [8]byte{0xbd, 0x18, 0x16, 0x73, 0x43, 0xc5, 0xaf, 0x16}}\n\tFOLDERID_InternetCache          = &KNOWNFOLDERID{0x352481e8, 0x33be, 0x4251, [8]byte{0xba, 0x85, 0x60, 0x07, 0xca, 0xed, 0xcf, 0x9d}}\n\tFOLDERID_Cookies                = &KNOWNFOLDERID{0x2b0f765d, 0xc0e9, 0x4171, [8]byte{0x90, 0x8e, 0x08, 0xa6, 0x11, 0xb8, 0x4f, 0xf6}}\n\tFOLDERID_History                = &KNOWNFOLDERID{0xd9dc8a3b, 0xb784, 0x432e, [8]byte{0xa7, 0x81, 0x5a, 0x11, 0x30, 0xa7, 0x59, 0x63}}\n\tFOLDERID_System                 = &KNOWNFOLDERID{0x1ac14e77, 0x02e7, 0x4e5d, [8]byte{0xb7, 0x44, 0x2e, 0xb1, 0xae, 0x51, 0x98, 0xb7}}\n\tFOLDERID_SystemX86              = &KNOWNFOLDERID{0xd65231b0, 0xb2f1, 0x4857, [8]byte{0xa4, 0xce, 0xa8, 0xe7, 0xc6, 0xea, 0x7d, 0x27}}\n\tFOLDERID_Windows                = &KNOWNFOLDERID{0xf38bf404, 0x1d43, 0x42f2, [8]byte{0x93, 0x05, 0x67, 0xde, 0x0b, 0x28, 0xfc, 0x23}}\n\tFOLDERID_Profile                = &KNOWNFOLDERID{0x5e6c858f, 0x0e22, 0x4760, [8]byte{0x9a, 0xfe, 0xea, 0x33, 0x17, 0xb6, 0x71, 0x73}}\n\tFOLDERID_Pictures               = &KNOWNFOLDERID{0x33e28130, 0x4e1e, 0x4676, [8]byte{0x83, 0x5a, 0x98, 0x39, 0x5c, 0x3b, 0xc3, 0xbb}}\n\tFOLDERID_ProgramFilesX86        = &KNOWNFOLDERID{0x7c5a40ef, 0xa0fb, 0x4bfc, [8]byte{0x87, 0x4a, 0xc0, 0xf2, 0xe0, 0xb9, 0xfa, 0x8e}}\n\tFOLDERID_ProgramFilesCommonX86  = &KNOWNFOLDERID{0xde974d24, 0xd9c6, 0x4d3e, [8]byte{0xbf, 0x91, 0xf4, 0x45, 0x51, 0x20, 0xb9, 0x17}}\n\tFOLDERID_ProgramFilesX64        = &KNOWNFOLDERID{0x6d809377, 0x6af0, 0x444b, [8]byte{0x89, 0x57, 0xa3, 0x77, 0x3f, 0x02, 0x20, 0x0e}}\n\tFOLDERID_ProgramFilesCommonX64  = &KNOWNFOLDERID{0x6365d5a7, 0x0f0d, 0x45e5, [8]byte{0x87, 0xf6, 0x0d, 0xa5, 0x6b, 0x6a, 0x4f, 0x7d}}\n\tFOLDERID_ProgramFiles           = &KNOWNFOLDERID{0x905e63b6, 0xc1bf, 0x494e, [8]byte{0xb2, 0x9c, 0x65, 0xb7, 0x32, 0xd3, 0xd2, 0x1a}}\n\tFOLDERID_ProgramFilesCommon     = &KNOWNFOLDERID{0xf7f1ed05, 0x9f6d, 0x47a2, [8]byte{0xaa, 0xae, 0x29, 0xd3, 0x17, 0xc6, 0xf0, 0x66}}\n\tFOLDERID_UserProgramFiles       = &KNOWNFOLDERID{0x5cd7aee2, 0x2219, 0x4a67, [8]byte{0xb8, 0x5d, 0x6c, 0x9c, 0xe1, 0x56, 0x60, 0xcb}}\n\tFOLDERID_UserProgramFilesCommon = &KNOWNFOLDERID{0xbcbd3057, 0xca5c, 0x4622, [8]byte{0xb4, 0x2d, 0xbc, 0x56, 0xdb, 0x0a, 0xe5, 0x16}}\n\tFOLDERID_AdminTools             = &KNOWNFOLDERID{0x724ef170, 0xa42d, 0x4fef, [8]byte{0x9f, 0x26, 0xb6, 0x0e, 0x84, 0x6f, 0xba, 0x4f}}\n\tFOLDERID_CommonAdminTools       = &KNOWNFOLDERID{0xd0384e7d, 0xbac3, 0x4797, [8]byte{0x8f, 0x14, 0xcb, 0xa2, 0x29, 0xb3, 0x92, 0xb5}}\n\tFOLDERID_Music                  = &KNOWNFOLDERID{0x4bd8d571, 0x6d19, 0x48d3, [8]byte{0xbe, 0x97, 0x42, 0x22, 0x20, 0x08, 0x0e, 0x43}}\n\tFOLDERID_Videos                 = &KNOWNFOLDERID{0x18989b1d, 0x99b5, 0x455b, [8]byte{0x84, 0x1c, 0xab, 0x7c, 0x74, 0xe4, 0xdd, 0xfc}}\n\tFOLDERID_Ringtones              = &KNOWNFOLDERID{0xc870044b, 0xf49e, 0x4126, [8]byte{0xa9, 0xc3, 0xb5, 0x2a, 0x1f, 0xf4, 0x11, 0xe8}}\n\tFOLDERID_PublicPictures         = &KNOWNFOLDERID{0xb6ebfb86, 0x6907, 0x413c, [8]byte{0x9a, 0xf7, 0x4f, 0xc2, 0xab, 0xf0, 0x7c, 0xc5}}\n\tFOLDERID_PublicMusic            = &KNOWNFOLDERID{0x3214fab5, 0x9757, 0x4298, [8]byte{0xbb, 0x61, 0x92, 0xa9, 0xde, 0xaa, 0x44, 0xff}}\n\tFOLDERID_PublicVideos           = &KNOWNFOLDERID{0x2400183a, 0x6185, 0x49fb, [8]byte{0xa2, 0xd8, 0x4a, 0x39, 0x2a, 0x60, 0x2b, 0xa3}}\n\tFOLDERID_PublicRingtones        = &KNOWNFOLDERID{0xe555ab60, 0x153b, 0x4d17, [8]byte{0x9f, 0x04, 0xa5, 0xfe, 0x99, 0xfc, 0x15, 0xec}}\n\tFOLDERID_ResourceDir            = &KNOWNFOLDERID{0x8ad10c31, 0x2adb, 0x4296, [8]byte{0xa8, 0xf7, 0xe4, 0x70, 0x12, 0x32, 0xc9, 0x72}}\n\tFOLDERID_LocalizedResourcesDir  = &KNOWNFOLDERID{0x2a00375e, 0x224c, 0x49de, [8]byte{0xb8, 0xd1, 0x44, 0x0d, 0xf7, 0xef, 0x3d, 0xdc}}\n\tFOLDERID_CommonOEMLinks         = &KNOWNFOLDERID{0xc1bae2d0, 0x10df, 0x4334, [8]byte{0xbe, 0xdd, 0x7a, 0xa2, 0x0b, 0x22, 0x7a, 0x9d}}\n\tFOLDERID_CDBurning              = &KNOWNFOLDERID{0x9e52ab10, 0xf80d, 0x49df, [8]byte{0xac, 0xb8, 0x43, 0x30, 0xf5, 0x68, 0x78, 0x55}}\n\tFOLDERID_UserProfiles           = &KNOWNFOLDERID{0x0762d272, 0xc50a, 0x4bb0, [8]byte{0xa3, 0x82, 0x69, 0x7d, 0xcd, 0x72, 0x9b, 0x80}}\n\tFOLDERID_Playlists              = &KNOWNFOLDERID{0xde92c1c7, 0x837f, 0x4f69, [8]byte{0xa3, 0xbb, 0x86, 0xe6, 0x31, 0x20, 0x4a, 0x23}}\n\tFOLDERID_SamplePlaylists        = &KNOWNFOLDERID{0x15ca69b3, 0x30ee, 0x49c1, [8]byte{0xac, 0xe1, 0x6b, 0x5e, 0xc3, 0x72, 0xaf, 0xb5}}\n\tFOLDERID_SampleMusic            = &KNOWNFOLDERID{0xb250c668, 0xf57d, 0x4ee1, [8]byte{0xa6, 0x3c, 0x29, 0x0e, 0xe7, 0xd1, 0xaa, 0x1f}}\n\tFOLDERID_SamplePictures         = &KNOWNFOLDERID{0xc4900540, 0x2379, 0x4c75, [8]byte{0x84, 0x4b, 0x64, 0xe6, 0xfa, 0xf8, 0x71, 0x6b}}\n\tFOLDERID_SampleVideos           = &KNOWNFOLDERID{0x859ead94, 0x2e85, 0x48ad, [8]byte{0xa7, 0x1a, 0x09, 0x69, 0xcb, 0x56, 0xa6, 0xcd}}\n\tFOLDERID_PhotoAlbums            = &KNOWNFOLDERID{0x69d2cf90, 0xfc33, 0x4fb7, [8]byte{0x9a, 0x0c, 0xeb, 0xb0, 0xf0, 0xfc, 0xb4, 0x3c}}\n\tFOLDERID_Public                 = &KNOWNFOLDERID{0xdfdf76a2, 0xc82a, 0x4d63, [8]byte{0x90, 0x6a, 0x56, 0x44, 0xac, 0x45, 0x73, 0x85}}\n\tFOLDERID_ChangeRemovePrograms   = &KNOWNFOLDERID{0xdf7266ac, 0x9274, 0x4867, [8]byte{0x8d, 0x55, 0x3b, 0xd6, 0x61, 0xde, 0x87, 0x2d}}\n\tFOLDERID_AppUpdates             = &KNOWNFOLDERID{0xa305ce99, 0xf527, 0x492b, [8]byte{0x8b, 0x1a, 0x7e, 0x76, 0xfa, 0x98, 0xd6, 0xe4}}\n\tFOLDERID_AddNewPrograms         = &KNOWNFOLDERID{0xde61d971, 0x5ebc, 0x4f02, [8]byte{0xa3, 0xa9, 0x6c, 0x82, 0x89, 0x5e, 0x5c, 0x04}}\n\tFOLDERID_Downloads              = &KNOWNFOLDERID{0x374de290, 0x123f, 0x4565, [8]byte{0x91, 0x64, 0x39, 0xc4, 0x92, 0x5e, 0x46, 0x7b}}\n\tFOLDERID_PublicDownloads        = &KNOWNFOLDERID{0x3d644c9b, 0x1fb8, 0x4f30, [8]byte{0x9b, 0x45, 0xf6, 0x70, 0x23, 0x5f, 0x79, 0xc0}}\n\tFOLDERID_SavedSearches          = &KNOWNFOLDERID{0x7d1d3a04, 0xdebb, 0x4115, [8]byte{0x95, 0xcf, 0x2f, 0x29, 0xda, 0x29, 0x20, 0xda}}\n\tFOLDERID_QuickLaunch            = &KNOWNFOLDERID{0x52a4f021, 0x7b75, 0x48a9, [8]byte{0x9f, 0x6b, 0x4b, 0x87, 0xa2, 0x10, 0xbc, 0x8f}}\n\tFOLDERID_Contacts               = &KNOWNFOLDERID{0x56784854, 0xc6cb, 0x462b, [8]byte{0x81, 0x69, 0x88, 0xe3, 0x50, 0xac, 0xb8, 0x82}}\n\tFOLDERID_SidebarParts           = &KNOWNFOLDERID{0xa75d362e, 0x50fc, 0x4fb7, [8]byte{0xac, 0x2c, 0xa8, 0xbe, 0xaa, 0x31, 0x44, 0x93}}\n\tFOLDERID_SidebarDefaultParts    = &KNOWNFOLDERID{0x7b396e54, 0x9ec5, 0x4300, [8]byte{0xbe, 0x0a, 0x24, 0x82, 0xeb, 0xae, 0x1a, 0x26}}\n\tFOLDERID_PublicGameTasks        = &KNOWNFOLDERID{0xdebf2536, 0xe1a8, 0x4c59, [8]byte{0xb6, 0xa2, 0x41, 0x45, 0x86, 0x47, 0x6a, 0xea}}\n\tFOLDERID_GameTasks              = &KNOWNFOLDERID{0x054fae61, 0x4dd8, 0x4787, [8]byte{0x80, 0xb6, 0x09, 0x02, 0x20, 0xc4, 0xb7, 0x00}}\n\tFOLDERID_SavedGames             = &KNOWNFOLDERID{0x4c5c32ff, 0xbb9d, 0x43b0, [8]byte{0xb5, 0xb4, 0x2d, 0x72, 0xe5, 0x4e, 0xaa, 0xa4}}\n\tFOLDERID_Games                  = &KNOWNFOLDERID{0xcac52c1a, 0xb53d, 0x4edc, [8]byte{0x92, 0xd7, 0x6b, 0x2e, 0x8a, 0xc1, 0x94, 0x34}}\n\tFOLDERID_SEARCH_MAPI            = &KNOWNFOLDERID{0x98ec0e18, 0x2098, 0x4d44, [8]byte{0x86, 0x44, 0x66, 0x97, 0x93, 0x15, 0xa2, 0x81}}\n\tFOLDERID_SEARCH_CSC             = &KNOWNFOLDERID{0xee32e446, 0x31ca, 0x4aba, [8]byte{0x81, 0x4f, 0xa5, 0xeb, 0xd2, 0xfd, 0x6d, 0x5e}}\n\tFOLDERID_Links                  = &KNOWNFOLDERID{0xbfb9d5e0, 0xc6a9, 0x404c, [8]byte{0xb2, 0xb2, 0xae, 0x6d, 0xb6, 0xaf, 0x49, 0x68}}\n\tFOLDERID_UsersFiles             = &KNOWNFOLDERID{0xf3ce0f7c, 0x4901, 0x4acc, [8]byte{0x86, 0x48, 0xd5, 0xd4, 0x4b, 0x04, 0xef, 0x8f}}\n\tFOLDERID_UsersLibraries         = &KNOWNFOLDERID{0xa302545d, 0xdeff, 0x464b, [8]byte{0xab, 0xe8, 0x61, 0xc8, 0x64, 0x8d, 0x93, 0x9b}}\n\tFOLDERID_SearchHome             = &KNOWNFOLDERID{0x190337d1, 0xb8ca, 0x4121, [8]byte{0xa6, 0x39, 0x6d, 0x47, 0x2d, 0x16, 0x97, 0x2a}}\n\tFOLDERID_OriginalImages         = &KNOWNFOLDERID{0x2c36c0aa, 0x5812, 0x4b87, [8]byte{0xbf, 0xd0, 0x4c, 0xd0, 0xdf, 0xb1, 0x9b, 0x39}}\n\tFOLDERID_DocumentsLibrary       = &KNOWNFOLDERID{0x7b0db17d, 0x9cd2, 0x4a93, [8]byte{0x97, 0x33, 0x46, 0xcc, 0x89, 0x02, 0x2e, 0x7c}}\n\tFOLDERID_MusicLibrary           = &KNOWNFOLDERID{0x2112ab0a, 0xc86a, 0x4ffe, [8]byte{0xa3, 0x68, 0x0d, 0xe9, 0x6e, 0x47, 0x01, 0x2e}}\n\tFOLDERID_PicturesLibrary        = &KNOWNFOLDERID{0xa990ae9f, 0xa03b, 0x4e80, [8]byte{0x94, 0xbc, 0x99, 0x12, 0xd7, 0x50, 0x41, 0x04}}\n\tFOLDERID_VideosLibrary          = &KNOWNFOLDERID{0x491e922f, 0x5643, 0x4af4, [8]byte{0xa7, 0xeb, 0x4e, 0x7a, 0x13, 0x8d, 0x81, 0x74}}\n\tFOLDERID_RecordedTVLibrary      = &KNOWNFOLDERID{0x1a6fdba2, 0xf42d, 0x4358, [8]byte{0xa7, 0x98, 0xb7, 0x4d, 0x74, 0x59, 0x26, 0xc5}}\n\tFOLDERID_HomeGroup              = &KNOWNFOLDERID{0x52528a6b, 0xb9e3, 0x4add, [8]byte{0xb6, 0x0d, 0x58, 0x8c, 0x2d, 0xba, 0x84, 0x2d}}\n\tFOLDERID_HomeGroupCurrentUser   = &KNOWNFOLDERID{0x9b74b6a3, 0x0dfd, 0x4f11, [8]byte{0x9e, 0x78, 0x5f, 0x78, 0x00, 0xf2, 0xe7, 0x72}}\n\tFOLDERID_DeviceMetadataStore    = &KNOWNFOLDERID{0x5ce4a5e9, 0xe4eb, 0x479d, [8]byte{0xb8, 0x9f, 0x13, 0x0c, 0x02, 0x88, 0x61, 0x55}}\n\tFOLDERID_Libraries              = &KNOWNFOLDERID{0x1b3ea5dc, 0xb587, 0x4786, [8]byte{0xb4, 0xef, 0xbd, 0x1d, 0xc3, 0x32, 0xae, 0xae}}\n\tFOLDERID_PublicLibraries        = &KNOWNFOLDERID{0x48daf80b, 0xe6cf, 0x4f4e, [8]byte{0xb8, 0x00, 0x0e, 0x69, 0xd8, 0x4e, 0xe3, 0x84}}\n\tFOLDERID_UserPinned             = &KNOWNFOLDERID{0x9e3995ab, 0x1f9c, 0x4f13, [8]byte{0xb8, 0x27, 0x48, 0xb2, 0x4b, 0x6c, 0x71, 0x74}}\n\tFOLDERID_ImplicitAppShortcuts   = &KNOWNFOLDERID{0xbcb5256f, 0x79f6, 0x4cee, [8]byte{0xb7, 0x25, 0xdc, 0x34, 0xe4, 0x02, 0xfd, 0x46}}\n\tFOLDERID_AccountPictures        = &KNOWNFOLDERID{0x008ca0b1, 0x55b4, 0x4c56, [8]byte{0xb8, 0xa8, 0x4d, 0xe4, 0xb2, 0x99, 0xd3, 0xbe}}\n\tFOLDERID_PublicUserTiles        = &KNOWNFOLDERID{0x0482af6c, 0x08f1, 0x4c34, [8]byte{0x8c, 0x90, 0xe1, 0x7e, 0xc9, 0x8b, 0x1e, 0x17}}\n\tFOLDERID_AppsFolder             = &KNOWNFOLDERID{0x1e87508d, 0x89c2, 0x42f0, [8]byte{0x8a, 0x7e, 0x64, 0x5a, 0x0f, 0x50, 0xca, 0x58}}\n\tFOLDERID_StartMenuAllPrograms   = &KNOWNFOLDERID{0xf26305ef, 0x6948, 0x40b9, [8]byte{0xb2, 0x55, 0x81, 0x45, 0x3d, 0x09, 0xc7, 0x85}}\n\tFOLDERID_CommonStartMenuPlaces  = &KNOWNFOLDERID{0xa440879f, 0x87a0, 0x4f7d, [8]byte{0xb7, 0x00, 0x02, 0x07, 0xb9, 0x66, 0x19, 0x4a}}\n\tFOLDERID_ApplicationShortcuts   = &KNOWNFOLDERID{0xa3918781, 0xe5f2, 0x4890, [8]byte{0xb3, 0xd9, 0xa7, 0xe5, 0x43, 0x32, 0x32, 0x8c}}\n\tFOLDERID_RoamingTiles           = &KNOWNFOLDERID{0x00bcfc5a, 0xed94, 0x4e48, [8]byte{0x96, 0xa1, 0x3f, 0x62, 0x17, 0xf2, 0x19, 0x90}}\n\tFOLDERID_RoamedTileImages       = &KNOWNFOLDERID{0xaaa8d5a5, 0xf1d6, 0x4259, [8]byte{0xba, 0xa8, 0x78, 0xe7, 0xef, 0x60, 0x83, 0x5e}}\n\tFOLDERID_Screenshots            = &KNOWNFOLDERID{0xb7bede81, 0xdf94, 0x4682, [8]byte{0xa7, 0xd8, 0x57, 0xa5, 0x26, 0x20, 0xb8, 0x6f}}\n\tFOLDERID_CameraRoll             = &KNOWNFOLDERID{0xab5fb87b, 0x7ce2, 0x4f83, [8]byte{0x91, 0x5d, 0x55, 0x08, 0x46, 0xc9, 0x53, 0x7b}}\n\tFOLDERID_SkyDrive               = &KNOWNFOLDERID{0xa52bba46, 0xe9e1, 0x435f, [8]byte{0xb3, 0xd9, 0x28, 0xda, 0xa6, 0x48, 0xc0, 0xf6}}\n\tFOLDERID_OneDrive               = &KNOWNFOLDERID{0xa52bba46, 0xe9e1, 0x435f, [8]byte{0xb3, 0xd9, 0x28, 0xda, 0xa6, 0x48, 0xc0, 0xf6}}\n\tFOLDERID_SkyDriveDocuments      = &KNOWNFOLDERID{0x24d89e24, 0x2f19, 0x4534, [8]byte{0x9d, 0xde, 0x6a, 0x66, 0x71, 0xfb, 0xb8, 0xfe}}\n\tFOLDERID_SkyDrivePictures       = &KNOWNFOLDERID{0x339719b5, 0x8c47, 0x4894, [8]byte{0x94, 0xc2, 0xd8, 0xf7, 0x7a, 0xdd, 0x44, 0xa6}}\n\tFOLDERID_SkyDriveMusic          = &KNOWNFOLDERID{0xc3f2459e, 0x80d6, 0x45dc, [8]byte{0xbf, 0xef, 0x1f, 0x76, 0x9f, 0x2b, 0xe7, 0x30}}\n\tFOLDERID_SkyDriveCameraRoll     = &KNOWNFOLDERID{0x767e6811, 0x49cb, 0x4273, [8]byte{0x87, 0xc2, 0x20, 0xf3, 0x55, 0xe1, 0x08, 0x5b}}\n\tFOLDERID_SearchHistory          = &KNOWNFOLDERID{0x0d4c3db6, 0x03a3, 0x462f, [8]byte{0xa0, 0xe6, 0x08, 0x92, 0x4c, 0x41, 0xb5, 0xd4}}\n\tFOLDERID_SearchTemplates        = &KNOWNFOLDERID{0x7e636bfe, 0xdfa9, 0x4d5e, [8]byte{0xb4, 0x56, 0xd7, 0xb3, 0x98, 0x51, 0xd8, 0xa9}}\n\tFOLDERID_CameraRollLibrary      = &KNOWNFOLDERID{0x2b20df75, 0x1eda, 0x4039, [8]byte{0x80, 0x97, 0x38, 0x79, 0x82, 0x27, 0xd5, 0xb7}}\n\tFOLDERID_SavedPictures          = &KNOWNFOLDERID{0x3b193882, 0xd3ad, 0x4eab, [8]byte{0x96, 0x5a, 0x69, 0x82, 0x9d, 0x1f, 0xb5, 0x9f}}\n\tFOLDERID_SavedPicturesLibrary   = &KNOWNFOLDERID{0xe25b5812, 0xbe88, 0x4bd9, [8]byte{0x94, 0xb0, 0x29, 0x23, 0x34, 0x77, 0xb6, 0xc3}}\n\tFOLDERID_RetailDemo             = &KNOWNFOLDERID{0x12d4c69e, 0x24ad, 0x4923, [8]byte{0xbe, 0x19, 0x31, 0x32, 0x1c, 0x43, 0xa7, 0x67}}\n\tFOLDERID_Device                 = &KNOWNFOLDERID{0x1c2ac1dc, 0x4358, 0x4b6c, [8]byte{0x97, 0x33, 0xaf, 0x21, 0x15, 0x65, 0x76, 0xf0}}\n\tFOLDERID_DevelopmentFiles       = &KNOWNFOLDERID{0xdbe8e08e, 0x3053, 0x4bbc, [8]byte{0xb1, 0x83, 0x2a, 0x7b, 0x2b, 0x19, 0x1e, 0x59}}\n\tFOLDERID_Objects3D              = &KNOWNFOLDERID{0x31c0dd25, 0x9439, 0x4f12, [8]byte{0xbf, 0x41, 0x7f, 0xf4, 0xed, 0xa3, 0x87, 0x22}}\n\tFOLDERID_AppCaptures            = &KNOWNFOLDERID{0xedc0fe71, 0x98d8, 0x4f4a, [8]byte{0xb9, 0x20, 0xc8, 0xdc, 0x13, 0x3c, 0xb1, 0x65}}\n\tFOLDERID_LocalDocuments         = &KNOWNFOLDERID{0xf42ee2d3, 0x909f, 0x4907, [8]byte{0x88, 0x71, 0x4c, 0x22, 0xfc, 0x0b, 0xf7, 0x56}}\n\tFOLDERID_LocalPictures          = &KNOWNFOLDERID{0x0ddd015d, 0xb06c, 0x45d5, [8]byte{0x8c, 0x4c, 0xf5, 0x97, 0x13, 0x85, 0x46, 0x39}}\n\tFOLDERID_LocalVideos            = &KNOWNFOLDERID{0x35286a68, 0x3c57, 0x41a1, [8]byte{0xbb, 0xb1, 0x0e, 0xae, 0x73, 0xd7, 0x6c, 0x95}}\n\tFOLDERID_LocalMusic             = &KNOWNFOLDERID{0xa0c69a99, 0x21c8, 0x4671, [8]byte{0x87, 0x03, 0x79, 0x34, 0x16, 0x2f, 0xcf, 0x1d}}\n\tFOLDERID_LocalDownloads         = &KNOWNFOLDERID{0x7d83ee9b, 0x2244, 0x4e70, [8]byte{0xb1, 0xf5, 0x53, 0x93, 0x04, 0x2a, 0xf1, 0xe4}}\n\tFOLDERID_RecordedCalls          = &KNOWNFOLDERID{0x2f8b40c2, 0x83ed, 0x48ee, [8]byte{0xb3, 0x83, 0xa1, 0xf1, 0x57, 0xec, 0x6f, 0x9a}}\n\tFOLDERID_AllAppMods             = &KNOWNFOLDERID{0x7ad67899, 0x66af, 0x43ba, [8]byte{0x91, 0x56, 0x6a, 0xad, 0x42, 0xe6, 0xc5, 0x96}}\n\tFOLDERID_CurrentAppMods         = &KNOWNFOLDERID{0x3db40b20, 0x2a30, 0x4dbe, [8]byte{0x91, 0x7e, 0x77, 0x1d, 0xd2, 0x1d, 0xd0, 0x99}}\n\tFOLDERID_AppDataDesktop         = &KNOWNFOLDERID{0xb2c5e279, 0x7add, 0x439f, [8]byte{0xb2, 0x8c, 0xc4, 0x1f, 0xe1, 0xbb, 0xf6, 0x72}}\n\tFOLDERID_AppDataDocuments       = &KNOWNFOLDERID{0x7be16610, 0x1f7f, 0x44ac, [8]byte{0xbf, 0xf0, 0x83, 0xe1, 0x5f, 0x2f, 0xfc, 0xa1}}\n\tFOLDERID_AppDataFavorites       = &KNOWNFOLDERID{0x7cfbefbc, 0xde1f, 0x45aa, [8]byte{0xb8, 0x43, 0xa5, 0x42, 0xac, 0x53, 0x6c, 0xc9}}\n\tFOLDERID_AppDataProgramData     = &KNOWNFOLDERID{0x559d40a3, 0xa036, 0x40fa, [8]byte{0xaf, 0x61, 0x84, 0xcb, 0x43, 0x0a, 0x4d, 0x34}}\n)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/sys/windows/zsyscall_windows.go",
    "content": "// Code generated by 'go generate'; DO NOT EDIT.\n\npackage windows\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ unsafe.Pointer\n\n// Do the interface allocations only once for common\n// Errno values.\nconst (\n\terrnoERROR_IO_PENDING = 997\n)\n\nvar (\n\terrERROR_IO_PENDING error = syscall.Errno(errnoERROR_IO_PENDING)\n\terrERROR_EINVAL     error = syscall.EINVAL\n)\n\n// errnoErr returns common boxed Errno values, to prevent\n// allocations at runtime.\nfunc errnoErr(e syscall.Errno) error {\n\tswitch e {\n\tcase 0:\n\t\treturn errERROR_EINVAL\n\tcase errnoERROR_IO_PENDING:\n\t\treturn errERROR_IO_PENDING\n\t}\n\t// TODO: add more here, after collecting data on the common\n\t// error values see on Windows. (perhaps when running\n\t// all.bat?)\n\treturn e\n}\n\nvar (\n\tmodCfgMgr32 = NewLazySystemDLL(\"CfgMgr32.dll\")\n\tmodadvapi32 = NewLazySystemDLL(\"advapi32.dll\")\n\tmodcrypt32  = NewLazySystemDLL(\"crypt32.dll\")\n\tmoddnsapi   = NewLazySystemDLL(\"dnsapi.dll\")\n\tmoddwmapi   = NewLazySystemDLL(\"dwmapi.dll\")\n\tmodiphlpapi = NewLazySystemDLL(\"iphlpapi.dll\")\n\tmodkernel32 = NewLazySystemDLL(\"kernel32.dll\")\n\tmodmswsock  = NewLazySystemDLL(\"mswsock.dll\")\n\tmodnetapi32 = NewLazySystemDLL(\"netapi32.dll\")\n\tmodntdll    = NewLazySystemDLL(\"ntdll.dll\")\n\tmodole32    = NewLazySystemDLL(\"ole32.dll\")\n\tmodpsapi    = NewLazySystemDLL(\"psapi.dll\")\n\tmodsechost  = NewLazySystemDLL(\"sechost.dll\")\n\tmodsecur32  = NewLazySystemDLL(\"secur32.dll\")\n\tmodsetupapi = NewLazySystemDLL(\"setupapi.dll\")\n\tmodshell32  = NewLazySystemDLL(\"shell32.dll\")\n\tmoduser32   = NewLazySystemDLL(\"user32.dll\")\n\tmoduserenv  = NewLazySystemDLL(\"userenv.dll\")\n\tmodversion  = NewLazySystemDLL(\"version.dll\")\n\tmodwinmm    = NewLazySystemDLL(\"winmm.dll\")\n\tmodwintrust = NewLazySystemDLL(\"wintrust.dll\")\n\tmodws2_32   = NewLazySystemDLL(\"ws2_32.dll\")\n\tmodwtsapi32 = NewLazySystemDLL(\"wtsapi32.dll\")\n\n\tprocCM_Get_DevNode_Status                                = modCfgMgr32.NewProc(\"CM_Get_DevNode_Status\")\n\tprocCM_Get_Device_Interface_ListW                        = modCfgMgr32.NewProc(\"CM_Get_Device_Interface_ListW\")\n\tprocCM_Get_Device_Interface_List_SizeW                   = modCfgMgr32.NewProc(\"CM_Get_Device_Interface_List_SizeW\")\n\tprocCM_MapCrToWin32Err                                   = modCfgMgr32.NewProc(\"CM_MapCrToWin32Err\")\n\tprocAdjustTokenGroups                                    = modadvapi32.NewProc(\"AdjustTokenGroups\")\n\tprocAdjustTokenPrivileges                                = modadvapi32.NewProc(\"AdjustTokenPrivileges\")\n\tprocAllocateAndInitializeSid                             = modadvapi32.NewProc(\"AllocateAndInitializeSid\")\n\tprocBuildSecurityDescriptorW                             = modadvapi32.NewProc(\"BuildSecurityDescriptorW\")\n\tprocChangeServiceConfig2W                                = modadvapi32.NewProc(\"ChangeServiceConfig2W\")\n\tprocChangeServiceConfigW                                 = modadvapi32.NewProc(\"ChangeServiceConfigW\")\n\tprocCheckTokenMembership                                 = modadvapi32.NewProc(\"CheckTokenMembership\")\n\tprocCloseServiceHandle                                   = modadvapi32.NewProc(\"CloseServiceHandle\")\n\tprocControlService                                       = modadvapi32.NewProc(\"ControlService\")\n\tprocConvertSecurityDescriptorToStringSecurityDescriptorW = modadvapi32.NewProc(\"ConvertSecurityDescriptorToStringSecurityDescriptorW\")\n\tprocConvertSidToStringSidW                               = modadvapi32.NewProc(\"ConvertSidToStringSidW\")\n\tprocConvertStringSecurityDescriptorToSecurityDescriptorW = modadvapi32.NewProc(\"ConvertStringSecurityDescriptorToSecurityDescriptorW\")\n\tprocConvertStringSidToSidW                               = modadvapi32.NewProc(\"ConvertStringSidToSidW\")\n\tprocCopySid                                              = modadvapi32.NewProc(\"CopySid\")\n\tprocCreateProcessAsUserW                                 = modadvapi32.NewProc(\"CreateProcessAsUserW\")\n\tprocCreateServiceW                                       = modadvapi32.NewProc(\"CreateServiceW\")\n\tprocCreateWellKnownSid                                   = modadvapi32.NewProc(\"CreateWellKnownSid\")\n\tprocCryptAcquireContextW                                 = modadvapi32.NewProc(\"CryptAcquireContextW\")\n\tprocCryptGenRandom                                       = modadvapi32.NewProc(\"CryptGenRandom\")\n\tprocCryptReleaseContext                                  = modadvapi32.NewProc(\"CryptReleaseContext\")\n\tprocDeleteService                                        = modadvapi32.NewProc(\"DeleteService\")\n\tprocDeregisterEventSource                                = modadvapi32.NewProc(\"DeregisterEventSource\")\n\tprocDuplicateTokenEx                                     = modadvapi32.NewProc(\"DuplicateTokenEx\")\n\tprocEnumDependentServicesW                               = modadvapi32.NewProc(\"EnumDependentServicesW\")\n\tprocEnumServicesStatusExW                                = modadvapi32.NewProc(\"EnumServicesStatusExW\")\n\tprocEqualSid                                             = modadvapi32.NewProc(\"EqualSid\")\n\tprocFreeSid                                              = modadvapi32.NewProc(\"FreeSid\")\n\tprocGetAce                                               = modadvapi32.NewProc(\"GetAce\")\n\tprocGetLengthSid                                         = modadvapi32.NewProc(\"GetLengthSid\")\n\tprocGetNamedSecurityInfoW                                = modadvapi32.NewProc(\"GetNamedSecurityInfoW\")\n\tprocGetSecurityDescriptorControl                         = modadvapi32.NewProc(\"GetSecurityDescriptorControl\")\n\tprocGetSecurityDescriptorDacl                            = modadvapi32.NewProc(\"GetSecurityDescriptorDacl\")\n\tprocGetSecurityDescriptorGroup                           = modadvapi32.NewProc(\"GetSecurityDescriptorGroup\")\n\tprocGetSecurityDescriptorLength                          = modadvapi32.NewProc(\"GetSecurityDescriptorLength\")\n\tprocGetSecurityDescriptorOwner                           = modadvapi32.NewProc(\"GetSecurityDescriptorOwner\")\n\tprocGetSecurityDescriptorRMControl                       = modadvapi32.NewProc(\"GetSecurityDescriptorRMControl\")\n\tprocGetSecurityDescriptorSacl                            = modadvapi32.NewProc(\"GetSecurityDescriptorSacl\")\n\tprocGetSecurityInfo                                      = modadvapi32.NewProc(\"GetSecurityInfo\")\n\tprocGetSidIdentifierAuthority                            = modadvapi32.NewProc(\"GetSidIdentifierAuthority\")\n\tprocGetSidSubAuthority                                   = modadvapi32.NewProc(\"GetSidSubAuthority\")\n\tprocGetSidSubAuthorityCount                              = modadvapi32.NewProc(\"GetSidSubAuthorityCount\")\n\tprocGetTokenInformation                                  = modadvapi32.NewProc(\"GetTokenInformation\")\n\tprocImpersonateSelf                                      = modadvapi32.NewProc(\"ImpersonateSelf\")\n\tprocInitializeSecurityDescriptor                         = modadvapi32.NewProc(\"InitializeSecurityDescriptor\")\n\tprocInitiateSystemShutdownExW                            = modadvapi32.NewProc(\"InitiateSystemShutdownExW\")\n\tprocIsTokenRestricted                                    = modadvapi32.NewProc(\"IsTokenRestricted\")\n\tprocIsValidSecurityDescriptor                            = modadvapi32.NewProc(\"IsValidSecurityDescriptor\")\n\tprocIsValidSid                                           = modadvapi32.NewProc(\"IsValidSid\")\n\tprocIsWellKnownSid                                       = modadvapi32.NewProc(\"IsWellKnownSid\")\n\tprocLookupAccountNameW                                   = modadvapi32.NewProc(\"LookupAccountNameW\")\n\tprocLookupAccountSidW                                    = modadvapi32.NewProc(\"LookupAccountSidW\")\n\tprocLookupPrivilegeValueW                                = modadvapi32.NewProc(\"LookupPrivilegeValueW\")\n\tprocMakeAbsoluteSD                                       = modadvapi32.NewProc(\"MakeAbsoluteSD\")\n\tprocMakeSelfRelativeSD                                   = modadvapi32.NewProc(\"MakeSelfRelativeSD\")\n\tprocNotifyServiceStatusChangeW                           = modadvapi32.NewProc(\"NotifyServiceStatusChangeW\")\n\tprocOpenProcessToken                                     = modadvapi32.NewProc(\"OpenProcessToken\")\n\tprocOpenSCManagerW                                       = modadvapi32.NewProc(\"OpenSCManagerW\")\n\tprocOpenServiceW                                         = modadvapi32.NewProc(\"OpenServiceW\")\n\tprocOpenThreadToken                                      = modadvapi32.NewProc(\"OpenThreadToken\")\n\tprocQueryServiceConfig2W                                 = modadvapi32.NewProc(\"QueryServiceConfig2W\")\n\tprocQueryServiceConfigW                                  = modadvapi32.NewProc(\"QueryServiceConfigW\")\n\tprocQueryServiceDynamicInformation                       = modadvapi32.NewProc(\"QueryServiceDynamicInformation\")\n\tprocQueryServiceLockStatusW                              = modadvapi32.NewProc(\"QueryServiceLockStatusW\")\n\tprocQueryServiceStatus                                   = modadvapi32.NewProc(\"QueryServiceStatus\")\n\tprocQueryServiceStatusEx                                 = modadvapi32.NewProc(\"QueryServiceStatusEx\")\n\tprocRegCloseKey                                          = modadvapi32.NewProc(\"RegCloseKey\")\n\tprocRegEnumKeyExW                                        = modadvapi32.NewProc(\"RegEnumKeyExW\")\n\tprocRegNotifyChangeKeyValue                              = modadvapi32.NewProc(\"RegNotifyChangeKeyValue\")\n\tprocRegOpenKeyExW                                        = modadvapi32.NewProc(\"RegOpenKeyExW\")\n\tprocRegQueryInfoKeyW                                     = modadvapi32.NewProc(\"RegQueryInfoKeyW\")\n\tprocRegQueryValueExW                                     = modadvapi32.NewProc(\"RegQueryValueExW\")\n\tprocRegisterEventSourceW                                 = modadvapi32.NewProc(\"RegisterEventSourceW\")\n\tprocRegisterServiceCtrlHandlerExW                        = modadvapi32.NewProc(\"RegisterServiceCtrlHandlerExW\")\n\tprocReportEventW                                         = modadvapi32.NewProc(\"ReportEventW\")\n\tprocRevertToSelf                                         = modadvapi32.NewProc(\"RevertToSelf\")\n\tprocSetEntriesInAclW                                     = modadvapi32.NewProc(\"SetEntriesInAclW\")\n\tprocSetKernelObjectSecurity                              = modadvapi32.NewProc(\"SetKernelObjectSecurity\")\n\tprocSetNamedSecurityInfoW                                = modadvapi32.NewProc(\"SetNamedSecurityInfoW\")\n\tprocSetSecurityDescriptorControl                         = modadvapi32.NewProc(\"SetSecurityDescriptorControl\")\n\tprocSetSecurityDescriptorDacl                            = modadvapi32.NewProc(\"SetSecurityDescriptorDacl\")\n\tprocSetSecurityDescriptorGroup                           = modadvapi32.NewProc(\"SetSecurityDescriptorGroup\")\n\tprocSetSecurityDescriptorOwner                           = modadvapi32.NewProc(\"SetSecurityDescriptorOwner\")\n\tprocSetSecurityDescriptorRMControl                       = modadvapi32.NewProc(\"SetSecurityDescriptorRMControl\")\n\tprocSetSecurityDescriptorSacl                            = modadvapi32.NewProc(\"SetSecurityDescriptorSacl\")\n\tprocSetSecurityInfo                                      = modadvapi32.NewProc(\"SetSecurityInfo\")\n\tprocSetServiceStatus                                     = modadvapi32.NewProc(\"SetServiceStatus\")\n\tprocSetThreadToken                                       = modadvapi32.NewProc(\"SetThreadToken\")\n\tprocSetTokenInformation                                  = modadvapi32.NewProc(\"SetTokenInformation\")\n\tprocStartServiceCtrlDispatcherW                          = modadvapi32.NewProc(\"StartServiceCtrlDispatcherW\")\n\tprocStartServiceW                                        = modadvapi32.NewProc(\"StartServiceW\")\n\tprocCertAddCertificateContextToStore                     = modcrypt32.NewProc(\"CertAddCertificateContextToStore\")\n\tprocCertCloseStore                                       = modcrypt32.NewProc(\"CertCloseStore\")\n\tprocCertCreateCertificateContext                         = modcrypt32.NewProc(\"CertCreateCertificateContext\")\n\tprocCertDeleteCertificateFromStore                       = modcrypt32.NewProc(\"CertDeleteCertificateFromStore\")\n\tprocCertDuplicateCertificateContext                      = modcrypt32.NewProc(\"CertDuplicateCertificateContext\")\n\tprocCertEnumCertificatesInStore                          = modcrypt32.NewProc(\"CertEnumCertificatesInStore\")\n\tprocCertFindCertificateInStore                           = modcrypt32.NewProc(\"CertFindCertificateInStore\")\n\tprocCertFindChainInStore                                 = modcrypt32.NewProc(\"CertFindChainInStore\")\n\tprocCertFindExtension                                    = modcrypt32.NewProc(\"CertFindExtension\")\n\tprocCertFreeCertificateChain                             = modcrypt32.NewProc(\"CertFreeCertificateChain\")\n\tprocCertFreeCertificateContext                           = modcrypt32.NewProc(\"CertFreeCertificateContext\")\n\tprocCertGetCertificateChain                              = modcrypt32.NewProc(\"CertGetCertificateChain\")\n\tprocCertGetNameStringW                                   = modcrypt32.NewProc(\"CertGetNameStringW\")\n\tprocCertOpenStore                                        = modcrypt32.NewProc(\"CertOpenStore\")\n\tprocCertOpenSystemStoreW                                 = modcrypt32.NewProc(\"CertOpenSystemStoreW\")\n\tprocCertVerifyCertificateChainPolicy                     = modcrypt32.NewProc(\"CertVerifyCertificateChainPolicy\")\n\tprocCryptAcquireCertificatePrivateKey                    = modcrypt32.NewProc(\"CryptAcquireCertificatePrivateKey\")\n\tprocCryptDecodeObject                                    = modcrypt32.NewProc(\"CryptDecodeObject\")\n\tprocCryptProtectData                                     = modcrypt32.NewProc(\"CryptProtectData\")\n\tprocCryptQueryObject                                     = modcrypt32.NewProc(\"CryptQueryObject\")\n\tprocCryptUnprotectData                                   = modcrypt32.NewProc(\"CryptUnprotectData\")\n\tprocPFXImportCertStore                                   = modcrypt32.NewProc(\"PFXImportCertStore\")\n\tprocDnsNameCompare_W                                     = moddnsapi.NewProc(\"DnsNameCompare_W\")\n\tprocDnsQuery_W                                           = moddnsapi.NewProc(\"DnsQuery_W\")\n\tprocDnsRecordListFree                                    = moddnsapi.NewProc(\"DnsRecordListFree\")\n\tprocDwmGetWindowAttribute                                = moddwmapi.NewProc(\"DwmGetWindowAttribute\")\n\tprocDwmSetWindowAttribute                                = moddwmapi.NewProc(\"DwmSetWindowAttribute\")\n\tprocCancelMibChangeNotify2                               = modiphlpapi.NewProc(\"CancelMibChangeNotify2\")\n\tprocFreeMibTable                                         = modiphlpapi.NewProc(\"FreeMibTable\")\n\tprocGetAdaptersAddresses                                 = modiphlpapi.NewProc(\"GetAdaptersAddresses\")\n\tprocGetAdaptersInfo                                      = modiphlpapi.NewProc(\"GetAdaptersInfo\")\n\tprocGetBestInterfaceEx                                   = modiphlpapi.NewProc(\"GetBestInterfaceEx\")\n\tprocGetIfEntry                                           = modiphlpapi.NewProc(\"GetIfEntry\")\n\tprocGetIfEntry2Ex                                        = modiphlpapi.NewProc(\"GetIfEntry2Ex\")\n\tprocGetIpForwardEntry2                                   = modiphlpapi.NewProc(\"GetIpForwardEntry2\")\n\tprocGetIpForwardTable2                                   = modiphlpapi.NewProc(\"GetIpForwardTable2\")\n\tprocGetUnicastIpAddressEntry                             = modiphlpapi.NewProc(\"GetUnicastIpAddressEntry\")\n\tprocNotifyIpInterfaceChange                              = modiphlpapi.NewProc(\"NotifyIpInterfaceChange\")\n\tprocNotifyRouteChange2                                   = modiphlpapi.NewProc(\"NotifyRouteChange2\")\n\tprocNotifyUnicastIpAddressChange                         = modiphlpapi.NewProc(\"NotifyUnicastIpAddressChange\")\n\tprocAddDllDirectory                                      = modkernel32.NewProc(\"AddDllDirectory\")\n\tprocAssignProcessToJobObject                             = modkernel32.NewProc(\"AssignProcessToJobObject\")\n\tprocCancelIo                                             = modkernel32.NewProc(\"CancelIo\")\n\tprocCancelIoEx                                           = modkernel32.NewProc(\"CancelIoEx\")\n\tprocClearCommBreak                                       = modkernel32.NewProc(\"ClearCommBreak\")\n\tprocClearCommError                                       = modkernel32.NewProc(\"ClearCommError\")\n\tprocCloseHandle                                          = modkernel32.NewProc(\"CloseHandle\")\n\tprocClosePseudoConsole                                   = modkernel32.NewProc(\"ClosePseudoConsole\")\n\tprocConnectNamedPipe                                     = modkernel32.NewProc(\"ConnectNamedPipe\")\n\tprocCreateDirectoryW                                     = modkernel32.NewProc(\"CreateDirectoryW\")\n\tprocCreateEventExW                                       = modkernel32.NewProc(\"CreateEventExW\")\n\tprocCreateEventW                                         = modkernel32.NewProc(\"CreateEventW\")\n\tprocCreateFileMappingW                                   = modkernel32.NewProc(\"CreateFileMappingW\")\n\tprocCreateFileW                                          = modkernel32.NewProc(\"CreateFileW\")\n\tprocCreateHardLinkW                                      = modkernel32.NewProc(\"CreateHardLinkW\")\n\tprocCreateIoCompletionPort                               = modkernel32.NewProc(\"CreateIoCompletionPort\")\n\tprocCreateJobObjectW                                     = modkernel32.NewProc(\"CreateJobObjectW\")\n\tprocCreateMutexExW                                       = modkernel32.NewProc(\"CreateMutexExW\")\n\tprocCreateMutexW                                         = modkernel32.NewProc(\"CreateMutexW\")\n\tprocCreateNamedPipeW                                     = modkernel32.NewProc(\"CreateNamedPipeW\")\n\tprocCreatePipe                                           = modkernel32.NewProc(\"CreatePipe\")\n\tprocCreateProcessW                                       = modkernel32.NewProc(\"CreateProcessW\")\n\tprocCreatePseudoConsole                                  = modkernel32.NewProc(\"CreatePseudoConsole\")\n\tprocCreateSymbolicLinkW                                  = modkernel32.NewProc(\"CreateSymbolicLinkW\")\n\tprocCreateToolhelp32Snapshot                             = modkernel32.NewProc(\"CreateToolhelp32Snapshot\")\n\tprocDefineDosDeviceW                                     = modkernel32.NewProc(\"DefineDosDeviceW\")\n\tprocDeleteFileW                                          = modkernel32.NewProc(\"DeleteFileW\")\n\tprocDeleteProcThreadAttributeList                        = modkernel32.NewProc(\"DeleteProcThreadAttributeList\")\n\tprocDeleteVolumeMountPointW                              = modkernel32.NewProc(\"DeleteVolumeMountPointW\")\n\tprocDeviceIoControl                                      = modkernel32.NewProc(\"DeviceIoControl\")\n\tprocDisconnectNamedPipe                                  = modkernel32.NewProc(\"DisconnectNamedPipe\")\n\tprocDuplicateHandle                                      = modkernel32.NewProc(\"DuplicateHandle\")\n\tprocEscapeCommFunction                                   = modkernel32.NewProc(\"EscapeCommFunction\")\n\tprocExitProcess                                          = modkernel32.NewProc(\"ExitProcess\")\n\tprocExpandEnvironmentStringsW                            = modkernel32.NewProc(\"ExpandEnvironmentStringsW\")\n\tprocFindClose                                            = modkernel32.NewProc(\"FindClose\")\n\tprocFindCloseChangeNotification                          = modkernel32.NewProc(\"FindCloseChangeNotification\")\n\tprocFindFirstChangeNotificationW                         = modkernel32.NewProc(\"FindFirstChangeNotificationW\")\n\tprocFindFirstFileW                                       = modkernel32.NewProc(\"FindFirstFileW\")\n\tprocFindFirstVolumeMountPointW                           = modkernel32.NewProc(\"FindFirstVolumeMountPointW\")\n\tprocFindFirstVolumeW                                     = modkernel32.NewProc(\"FindFirstVolumeW\")\n\tprocFindNextChangeNotification                           = modkernel32.NewProc(\"FindNextChangeNotification\")\n\tprocFindNextFileW                                        = modkernel32.NewProc(\"FindNextFileW\")\n\tprocFindNextVolumeMountPointW                            = modkernel32.NewProc(\"FindNextVolumeMountPointW\")\n\tprocFindNextVolumeW                                      = modkernel32.NewProc(\"FindNextVolumeW\")\n\tprocFindResourceW                                        = modkernel32.NewProc(\"FindResourceW\")\n\tprocFindVolumeClose                                      = modkernel32.NewProc(\"FindVolumeClose\")\n\tprocFindVolumeMountPointClose                            = modkernel32.NewProc(\"FindVolumeMountPointClose\")\n\tprocFlushConsoleInputBuffer                              = modkernel32.NewProc(\"FlushConsoleInputBuffer\")\n\tprocFlushFileBuffers                                     = modkernel32.NewProc(\"FlushFileBuffers\")\n\tprocFlushViewOfFile                                      = modkernel32.NewProc(\"FlushViewOfFile\")\n\tprocFormatMessageW                                       = modkernel32.NewProc(\"FormatMessageW\")\n\tprocFreeEnvironmentStringsW                              = modkernel32.NewProc(\"FreeEnvironmentStringsW\")\n\tprocFreeLibrary                                          = modkernel32.NewProc(\"FreeLibrary\")\n\tprocGenerateConsoleCtrlEvent                             = modkernel32.NewProc(\"GenerateConsoleCtrlEvent\")\n\tprocGetACP                                               = modkernel32.NewProc(\"GetACP\")\n\tprocGetActiveProcessorCount                              = modkernel32.NewProc(\"GetActiveProcessorCount\")\n\tprocGetCommModemStatus                                   = modkernel32.NewProc(\"GetCommModemStatus\")\n\tprocGetCommState                                         = modkernel32.NewProc(\"GetCommState\")\n\tprocGetCommTimeouts                                      = modkernel32.NewProc(\"GetCommTimeouts\")\n\tprocGetCommandLineW                                      = modkernel32.NewProc(\"GetCommandLineW\")\n\tprocGetComputerNameExW                                   = modkernel32.NewProc(\"GetComputerNameExW\")\n\tprocGetComputerNameW                                     = modkernel32.NewProc(\"GetComputerNameW\")\n\tprocGetConsoleCP                                         = modkernel32.NewProc(\"GetConsoleCP\")\n\tprocGetConsoleMode                                       = modkernel32.NewProc(\"GetConsoleMode\")\n\tprocGetConsoleOutputCP                                   = modkernel32.NewProc(\"GetConsoleOutputCP\")\n\tprocGetConsoleScreenBufferInfo                           = modkernel32.NewProc(\"GetConsoleScreenBufferInfo\")\n\tprocGetCurrentDirectoryW                                 = modkernel32.NewProc(\"GetCurrentDirectoryW\")\n\tprocGetCurrentProcessId                                  = modkernel32.NewProc(\"GetCurrentProcessId\")\n\tprocGetCurrentThreadId                                   = modkernel32.NewProc(\"GetCurrentThreadId\")\n\tprocGetDiskFreeSpaceExW                                  = modkernel32.NewProc(\"GetDiskFreeSpaceExW\")\n\tprocGetDriveTypeW                                        = modkernel32.NewProc(\"GetDriveTypeW\")\n\tprocGetEnvironmentStringsW                               = modkernel32.NewProc(\"GetEnvironmentStringsW\")\n\tprocGetEnvironmentVariableW                              = modkernel32.NewProc(\"GetEnvironmentVariableW\")\n\tprocGetExitCodeProcess                                   = modkernel32.NewProc(\"GetExitCodeProcess\")\n\tprocGetFileAttributesExW                                 = modkernel32.NewProc(\"GetFileAttributesExW\")\n\tprocGetFileAttributesW                                   = modkernel32.NewProc(\"GetFileAttributesW\")\n\tprocGetFileInformationByHandle                           = modkernel32.NewProc(\"GetFileInformationByHandle\")\n\tprocGetFileInformationByHandleEx                         = modkernel32.NewProc(\"GetFileInformationByHandleEx\")\n\tprocGetFileTime                                          = modkernel32.NewProc(\"GetFileTime\")\n\tprocGetFileType                                          = modkernel32.NewProc(\"GetFileType\")\n\tprocGetFinalPathNameByHandleW                            = modkernel32.NewProc(\"GetFinalPathNameByHandleW\")\n\tprocGetFullPathNameW                                     = modkernel32.NewProc(\"GetFullPathNameW\")\n\tprocGetLargePageMinimum                                  = modkernel32.NewProc(\"GetLargePageMinimum\")\n\tprocGetLastError                                         = modkernel32.NewProc(\"GetLastError\")\n\tprocGetLogicalDriveStringsW                              = modkernel32.NewProc(\"GetLogicalDriveStringsW\")\n\tprocGetLogicalDrives                                     = modkernel32.NewProc(\"GetLogicalDrives\")\n\tprocGetLongPathNameW                                     = modkernel32.NewProc(\"GetLongPathNameW\")\n\tprocGetMaximumProcessorCount                             = modkernel32.NewProc(\"GetMaximumProcessorCount\")\n\tprocGetModuleFileNameW                                   = modkernel32.NewProc(\"GetModuleFileNameW\")\n\tprocGetModuleHandleExW                                   = modkernel32.NewProc(\"GetModuleHandleExW\")\n\tprocGetNamedPipeClientProcessId                          = modkernel32.NewProc(\"GetNamedPipeClientProcessId\")\n\tprocGetNamedPipeHandleStateW                             = modkernel32.NewProc(\"GetNamedPipeHandleStateW\")\n\tprocGetNamedPipeInfo                                     = modkernel32.NewProc(\"GetNamedPipeInfo\")\n\tprocGetNamedPipeServerProcessId                          = modkernel32.NewProc(\"GetNamedPipeServerProcessId\")\n\tprocGetNumberOfConsoleInputEvents                        = modkernel32.NewProc(\"GetNumberOfConsoleInputEvents\")\n\tprocGetOverlappedResult                                  = modkernel32.NewProc(\"GetOverlappedResult\")\n\tprocGetPriorityClass                                     = modkernel32.NewProc(\"GetPriorityClass\")\n\tprocGetProcAddress                                       = modkernel32.NewProc(\"GetProcAddress\")\n\tprocGetProcessId                                         = modkernel32.NewProc(\"GetProcessId\")\n\tprocGetProcessPreferredUILanguages                       = modkernel32.NewProc(\"GetProcessPreferredUILanguages\")\n\tprocGetProcessShutdownParameters                         = modkernel32.NewProc(\"GetProcessShutdownParameters\")\n\tprocGetProcessTimes                                      = modkernel32.NewProc(\"GetProcessTimes\")\n\tprocGetProcessWorkingSetSizeEx                           = modkernel32.NewProc(\"GetProcessWorkingSetSizeEx\")\n\tprocGetQueuedCompletionStatus                            = modkernel32.NewProc(\"GetQueuedCompletionStatus\")\n\tprocGetShortPathNameW                                    = modkernel32.NewProc(\"GetShortPathNameW\")\n\tprocGetStartupInfoW                                      = modkernel32.NewProc(\"GetStartupInfoW\")\n\tprocGetStdHandle                                         = modkernel32.NewProc(\"GetStdHandle\")\n\tprocGetSystemDirectoryW                                  = modkernel32.NewProc(\"GetSystemDirectoryW\")\n\tprocGetSystemPreferredUILanguages                        = modkernel32.NewProc(\"GetSystemPreferredUILanguages\")\n\tprocGetSystemTimeAsFileTime                              = modkernel32.NewProc(\"GetSystemTimeAsFileTime\")\n\tprocGetSystemTimePreciseAsFileTime                       = modkernel32.NewProc(\"GetSystemTimePreciseAsFileTime\")\n\tprocGetSystemWindowsDirectoryW                           = modkernel32.NewProc(\"GetSystemWindowsDirectoryW\")\n\tprocGetTempPathW                                         = modkernel32.NewProc(\"GetTempPathW\")\n\tprocGetThreadPreferredUILanguages                        = modkernel32.NewProc(\"GetThreadPreferredUILanguages\")\n\tprocGetTickCount64                                       = modkernel32.NewProc(\"GetTickCount64\")\n\tprocGetTimeZoneInformation                               = modkernel32.NewProc(\"GetTimeZoneInformation\")\n\tprocGetUserPreferredUILanguages                          = modkernel32.NewProc(\"GetUserPreferredUILanguages\")\n\tprocGetVersion                                           = modkernel32.NewProc(\"GetVersion\")\n\tprocGetVolumeInformationByHandleW                        = modkernel32.NewProc(\"GetVolumeInformationByHandleW\")\n\tprocGetVolumeInformationW                                = modkernel32.NewProc(\"GetVolumeInformationW\")\n\tprocGetVolumeNameForVolumeMountPointW                    = modkernel32.NewProc(\"GetVolumeNameForVolumeMountPointW\")\n\tprocGetVolumePathNameW                                   = modkernel32.NewProc(\"GetVolumePathNameW\")\n\tprocGetVolumePathNamesForVolumeNameW                     = modkernel32.NewProc(\"GetVolumePathNamesForVolumeNameW\")\n\tprocGetWindowsDirectoryW                                 = modkernel32.NewProc(\"GetWindowsDirectoryW\")\n\tprocInitializeProcThreadAttributeList                    = modkernel32.NewProc(\"InitializeProcThreadAttributeList\")\n\tprocIsProcessorFeaturePresent                            = modkernel32.NewProc(\"IsProcessorFeaturePresent\")\n\tprocIsWow64Process                                       = modkernel32.NewProc(\"IsWow64Process\")\n\tprocIsWow64Process2                                      = modkernel32.NewProc(\"IsWow64Process2\")\n\tprocLoadLibraryExW                                       = modkernel32.NewProc(\"LoadLibraryExW\")\n\tprocLoadLibraryW                                         = modkernel32.NewProc(\"LoadLibraryW\")\n\tprocLoadResource                                         = modkernel32.NewProc(\"LoadResource\")\n\tprocLocalAlloc                                           = modkernel32.NewProc(\"LocalAlloc\")\n\tprocLocalFree                                            = modkernel32.NewProc(\"LocalFree\")\n\tprocLockFileEx                                           = modkernel32.NewProc(\"LockFileEx\")\n\tprocLockResource                                         = modkernel32.NewProc(\"LockResource\")\n\tprocMapViewOfFile                                        = modkernel32.NewProc(\"MapViewOfFile\")\n\tprocModule32FirstW                                       = modkernel32.NewProc(\"Module32FirstW\")\n\tprocModule32NextW                                        = modkernel32.NewProc(\"Module32NextW\")\n\tprocMoveFileExW                                          = modkernel32.NewProc(\"MoveFileExW\")\n\tprocMoveFileW                                            = modkernel32.NewProc(\"MoveFileW\")\n\tprocMultiByteToWideChar                                  = modkernel32.NewProc(\"MultiByteToWideChar\")\n\tprocOpenEventW                                           = modkernel32.NewProc(\"OpenEventW\")\n\tprocOpenMutexW                                           = modkernel32.NewProc(\"OpenMutexW\")\n\tprocOpenProcess                                          = modkernel32.NewProc(\"OpenProcess\")\n\tprocOpenThread                                           = modkernel32.NewProc(\"OpenThread\")\n\tprocPostQueuedCompletionStatus                           = modkernel32.NewProc(\"PostQueuedCompletionStatus\")\n\tprocProcess32FirstW                                      = modkernel32.NewProc(\"Process32FirstW\")\n\tprocProcess32NextW                                       = modkernel32.NewProc(\"Process32NextW\")\n\tprocProcessIdToSessionId                                 = modkernel32.NewProc(\"ProcessIdToSessionId\")\n\tprocPulseEvent                                           = modkernel32.NewProc(\"PulseEvent\")\n\tprocPurgeComm                                            = modkernel32.NewProc(\"PurgeComm\")\n\tprocQueryDosDeviceW                                      = modkernel32.NewProc(\"QueryDosDeviceW\")\n\tprocQueryFullProcessImageNameW                           = modkernel32.NewProc(\"QueryFullProcessImageNameW\")\n\tprocQueryInformationJobObject                            = modkernel32.NewProc(\"QueryInformationJobObject\")\n\tprocReadConsoleW                                         = modkernel32.NewProc(\"ReadConsoleW\")\n\tprocReadDirectoryChangesW                                = modkernel32.NewProc(\"ReadDirectoryChangesW\")\n\tprocReadFile                                             = modkernel32.NewProc(\"ReadFile\")\n\tprocReadProcessMemory                                    = modkernel32.NewProc(\"ReadProcessMemory\")\n\tprocReleaseMutex                                         = modkernel32.NewProc(\"ReleaseMutex\")\n\tprocRemoveDirectoryW                                     = modkernel32.NewProc(\"RemoveDirectoryW\")\n\tprocRemoveDllDirectory                                   = modkernel32.NewProc(\"RemoveDllDirectory\")\n\tprocResetEvent                                           = modkernel32.NewProc(\"ResetEvent\")\n\tprocResizePseudoConsole                                  = modkernel32.NewProc(\"ResizePseudoConsole\")\n\tprocResumeThread                                         = modkernel32.NewProc(\"ResumeThread\")\n\tprocSetCommBreak                                         = modkernel32.NewProc(\"SetCommBreak\")\n\tprocSetCommMask                                          = modkernel32.NewProc(\"SetCommMask\")\n\tprocSetCommState                                         = modkernel32.NewProc(\"SetCommState\")\n\tprocSetCommTimeouts                                      = modkernel32.NewProc(\"SetCommTimeouts\")\n\tprocSetConsoleCP                                         = modkernel32.NewProc(\"SetConsoleCP\")\n\tprocSetConsoleCursorPosition                             = modkernel32.NewProc(\"SetConsoleCursorPosition\")\n\tprocSetConsoleMode                                       = modkernel32.NewProc(\"SetConsoleMode\")\n\tprocSetConsoleOutputCP                                   = modkernel32.NewProc(\"SetConsoleOutputCP\")\n\tprocSetCurrentDirectoryW                                 = modkernel32.NewProc(\"SetCurrentDirectoryW\")\n\tprocSetDefaultDllDirectories                             = modkernel32.NewProc(\"SetDefaultDllDirectories\")\n\tprocSetDllDirectoryW                                     = modkernel32.NewProc(\"SetDllDirectoryW\")\n\tprocSetEndOfFile                                         = modkernel32.NewProc(\"SetEndOfFile\")\n\tprocSetEnvironmentVariableW                              = modkernel32.NewProc(\"SetEnvironmentVariableW\")\n\tprocSetErrorMode                                         = modkernel32.NewProc(\"SetErrorMode\")\n\tprocSetEvent                                             = modkernel32.NewProc(\"SetEvent\")\n\tprocSetFileAttributesW                                   = modkernel32.NewProc(\"SetFileAttributesW\")\n\tprocSetFileCompletionNotificationModes                   = modkernel32.NewProc(\"SetFileCompletionNotificationModes\")\n\tprocSetFileInformationByHandle                           = modkernel32.NewProc(\"SetFileInformationByHandle\")\n\tprocSetFilePointer                                       = modkernel32.NewProc(\"SetFilePointer\")\n\tprocSetFileTime                                          = modkernel32.NewProc(\"SetFileTime\")\n\tprocSetFileValidData                                     = modkernel32.NewProc(\"SetFileValidData\")\n\tprocSetHandleInformation                                 = modkernel32.NewProc(\"SetHandleInformation\")\n\tprocSetInformationJobObject                              = modkernel32.NewProc(\"SetInformationJobObject\")\n\tprocSetNamedPipeHandleState                              = modkernel32.NewProc(\"SetNamedPipeHandleState\")\n\tprocSetPriorityClass                                     = modkernel32.NewProc(\"SetPriorityClass\")\n\tprocSetProcessPriorityBoost                              = modkernel32.NewProc(\"SetProcessPriorityBoost\")\n\tprocSetProcessShutdownParameters                         = modkernel32.NewProc(\"SetProcessShutdownParameters\")\n\tprocSetProcessWorkingSetSizeEx                           = modkernel32.NewProc(\"SetProcessWorkingSetSizeEx\")\n\tprocSetStdHandle                                         = modkernel32.NewProc(\"SetStdHandle\")\n\tprocSetVolumeLabelW                                      = modkernel32.NewProc(\"SetVolumeLabelW\")\n\tprocSetVolumeMountPointW                                 = modkernel32.NewProc(\"SetVolumeMountPointW\")\n\tprocSetupComm                                            = modkernel32.NewProc(\"SetupComm\")\n\tprocSizeofResource                                       = modkernel32.NewProc(\"SizeofResource\")\n\tprocSleepEx                                              = modkernel32.NewProc(\"SleepEx\")\n\tprocTerminateJobObject                                   = modkernel32.NewProc(\"TerminateJobObject\")\n\tprocTerminateProcess                                     = modkernel32.NewProc(\"TerminateProcess\")\n\tprocThread32First                                        = modkernel32.NewProc(\"Thread32First\")\n\tprocThread32Next                                         = modkernel32.NewProc(\"Thread32Next\")\n\tprocUnlockFileEx                                         = modkernel32.NewProc(\"UnlockFileEx\")\n\tprocUnmapViewOfFile                                      = modkernel32.NewProc(\"UnmapViewOfFile\")\n\tprocUpdateProcThreadAttribute                            = modkernel32.NewProc(\"UpdateProcThreadAttribute\")\n\tprocVirtualAlloc                                         = modkernel32.NewProc(\"VirtualAlloc\")\n\tprocVirtualFree                                          = modkernel32.NewProc(\"VirtualFree\")\n\tprocVirtualLock                                          = modkernel32.NewProc(\"VirtualLock\")\n\tprocVirtualProtect                                       = modkernel32.NewProc(\"VirtualProtect\")\n\tprocVirtualProtectEx                                     = modkernel32.NewProc(\"VirtualProtectEx\")\n\tprocVirtualQuery                                         = modkernel32.NewProc(\"VirtualQuery\")\n\tprocVirtualQueryEx                                       = modkernel32.NewProc(\"VirtualQueryEx\")\n\tprocVirtualUnlock                                        = modkernel32.NewProc(\"VirtualUnlock\")\n\tprocWTSGetActiveConsoleSessionId                         = modkernel32.NewProc(\"WTSGetActiveConsoleSessionId\")\n\tprocWaitCommEvent                                        = modkernel32.NewProc(\"WaitCommEvent\")\n\tprocWaitForMultipleObjects                               = modkernel32.NewProc(\"WaitForMultipleObjects\")\n\tprocWaitForSingleObject                                  = modkernel32.NewProc(\"WaitForSingleObject\")\n\tprocWriteConsoleW                                        = modkernel32.NewProc(\"WriteConsoleW\")\n\tprocWriteFile                                            = modkernel32.NewProc(\"WriteFile\")\n\tprocWriteProcessMemory                                   = modkernel32.NewProc(\"WriteProcessMemory\")\n\tprocAcceptEx                                             = modmswsock.NewProc(\"AcceptEx\")\n\tprocGetAcceptExSockaddrs                                 = modmswsock.NewProc(\"GetAcceptExSockaddrs\")\n\tprocTransmitFile                                         = modmswsock.NewProc(\"TransmitFile\")\n\tprocNetApiBufferFree                                     = modnetapi32.NewProc(\"NetApiBufferFree\")\n\tprocNetGetJoinInformation                                = modnetapi32.NewProc(\"NetGetJoinInformation\")\n\tprocNetUserEnum                                          = modnetapi32.NewProc(\"NetUserEnum\")\n\tprocNetUserGetInfo                                       = modnetapi32.NewProc(\"NetUserGetInfo\")\n\tprocNtCreateFile                                         = modntdll.NewProc(\"NtCreateFile\")\n\tprocNtCreateNamedPipeFile                                = modntdll.NewProc(\"NtCreateNamedPipeFile\")\n\tprocNtQueryInformationProcess                            = modntdll.NewProc(\"NtQueryInformationProcess\")\n\tprocNtQuerySystemInformation                             = modntdll.NewProc(\"NtQuerySystemInformation\")\n\tprocNtSetInformationFile                                 = modntdll.NewProc(\"NtSetInformationFile\")\n\tprocNtSetInformationProcess                              = modntdll.NewProc(\"NtSetInformationProcess\")\n\tprocNtSetSystemInformation                               = modntdll.NewProc(\"NtSetSystemInformation\")\n\tprocRtlAddFunctionTable                                  = modntdll.NewProc(\"RtlAddFunctionTable\")\n\tprocRtlDefaultNpAcl                                      = modntdll.NewProc(\"RtlDefaultNpAcl\")\n\tprocRtlDeleteFunctionTable                               = modntdll.NewProc(\"RtlDeleteFunctionTable\")\n\tprocRtlDosPathNameToNtPathName_U_WithStatus              = modntdll.NewProc(\"RtlDosPathNameToNtPathName_U_WithStatus\")\n\tprocRtlDosPathNameToRelativeNtPathName_U_WithStatus      = modntdll.NewProc(\"RtlDosPathNameToRelativeNtPathName_U_WithStatus\")\n\tprocRtlGetCurrentPeb                                     = modntdll.NewProc(\"RtlGetCurrentPeb\")\n\tprocRtlGetNtVersionNumbers                               = modntdll.NewProc(\"RtlGetNtVersionNumbers\")\n\tprocRtlGetVersion                                        = modntdll.NewProc(\"RtlGetVersion\")\n\tprocRtlInitString                                        = modntdll.NewProc(\"RtlInitString\")\n\tprocRtlInitUnicodeString                                 = modntdll.NewProc(\"RtlInitUnicodeString\")\n\tprocRtlNtStatusToDosErrorNoTeb                           = modntdll.NewProc(\"RtlNtStatusToDosErrorNoTeb\")\n\tprocCLSIDFromString                                      = modole32.NewProc(\"CLSIDFromString\")\n\tprocCoCreateGuid                                         = modole32.NewProc(\"CoCreateGuid\")\n\tprocCoGetObject                                          = modole32.NewProc(\"CoGetObject\")\n\tprocCoInitializeEx                                       = modole32.NewProc(\"CoInitializeEx\")\n\tprocCoTaskMemFree                                        = modole32.NewProc(\"CoTaskMemFree\")\n\tprocCoUninitialize                                       = modole32.NewProc(\"CoUninitialize\")\n\tprocStringFromGUID2                                      = modole32.NewProc(\"StringFromGUID2\")\n\tprocEnumProcessModules                                   = modpsapi.NewProc(\"EnumProcessModules\")\n\tprocEnumProcessModulesEx                                 = modpsapi.NewProc(\"EnumProcessModulesEx\")\n\tprocEnumProcesses                                        = modpsapi.NewProc(\"EnumProcesses\")\n\tprocGetModuleBaseNameW                                   = modpsapi.NewProc(\"GetModuleBaseNameW\")\n\tprocGetModuleFileNameExW                                 = modpsapi.NewProc(\"GetModuleFileNameExW\")\n\tprocGetModuleInformation                                 = modpsapi.NewProc(\"GetModuleInformation\")\n\tprocQueryWorkingSetEx                                    = modpsapi.NewProc(\"QueryWorkingSetEx\")\n\tprocSubscribeServiceChangeNotifications                  = modsechost.NewProc(\"SubscribeServiceChangeNotifications\")\n\tprocUnsubscribeServiceChangeNotifications                = modsechost.NewProc(\"UnsubscribeServiceChangeNotifications\")\n\tprocGetUserNameExW                                       = modsecur32.NewProc(\"GetUserNameExW\")\n\tprocTranslateNameW                                       = modsecur32.NewProc(\"TranslateNameW\")\n\tprocSetupDiBuildDriverInfoList                           = modsetupapi.NewProc(\"SetupDiBuildDriverInfoList\")\n\tprocSetupDiCallClassInstaller                            = modsetupapi.NewProc(\"SetupDiCallClassInstaller\")\n\tprocSetupDiCancelDriverInfoSearch                        = modsetupapi.NewProc(\"SetupDiCancelDriverInfoSearch\")\n\tprocSetupDiClassGuidsFromNameExW                         = modsetupapi.NewProc(\"SetupDiClassGuidsFromNameExW\")\n\tprocSetupDiClassNameFromGuidExW                          = modsetupapi.NewProc(\"SetupDiClassNameFromGuidExW\")\n\tprocSetupDiCreateDeviceInfoListExW                       = modsetupapi.NewProc(\"SetupDiCreateDeviceInfoListExW\")\n\tprocSetupDiCreateDeviceInfoW                             = modsetupapi.NewProc(\"SetupDiCreateDeviceInfoW\")\n\tprocSetupDiDestroyDeviceInfoList                         = modsetupapi.NewProc(\"SetupDiDestroyDeviceInfoList\")\n\tprocSetupDiDestroyDriverInfoList                         = modsetupapi.NewProc(\"SetupDiDestroyDriverInfoList\")\n\tprocSetupDiEnumDeviceInfo                                = modsetupapi.NewProc(\"SetupDiEnumDeviceInfo\")\n\tprocSetupDiEnumDriverInfoW                               = modsetupapi.NewProc(\"SetupDiEnumDriverInfoW\")\n\tprocSetupDiGetClassDevsExW                               = modsetupapi.NewProc(\"SetupDiGetClassDevsExW\")\n\tprocSetupDiGetClassInstallParamsW                        = modsetupapi.NewProc(\"SetupDiGetClassInstallParamsW\")\n\tprocSetupDiGetDeviceInfoListDetailW                      = modsetupapi.NewProc(\"SetupDiGetDeviceInfoListDetailW\")\n\tprocSetupDiGetDeviceInstallParamsW                       = modsetupapi.NewProc(\"SetupDiGetDeviceInstallParamsW\")\n\tprocSetupDiGetDeviceInstanceIdW                          = modsetupapi.NewProc(\"SetupDiGetDeviceInstanceIdW\")\n\tprocSetupDiGetDevicePropertyW                            = modsetupapi.NewProc(\"SetupDiGetDevicePropertyW\")\n\tprocSetupDiGetDeviceRegistryPropertyW                    = modsetupapi.NewProc(\"SetupDiGetDeviceRegistryPropertyW\")\n\tprocSetupDiGetDriverInfoDetailW                          = modsetupapi.NewProc(\"SetupDiGetDriverInfoDetailW\")\n\tprocSetupDiGetSelectedDevice                             = modsetupapi.NewProc(\"SetupDiGetSelectedDevice\")\n\tprocSetupDiGetSelectedDriverW                            = modsetupapi.NewProc(\"SetupDiGetSelectedDriverW\")\n\tprocSetupDiOpenDevRegKey                                 = modsetupapi.NewProc(\"SetupDiOpenDevRegKey\")\n\tprocSetupDiSetClassInstallParamsW                        = modsetupapi.NewProc(\"SetupDiSetClassInstallParamsW\")\n\tprocSetupDiSetDeviceInstallParamsW                       = modsetupapi.NewProc(\"SetupDiSetDeviceInstallParamsW\")\n\tprocSetupDiSetDeviceRegistryPropertyW                    = modsetupapi.NewProc(\"SetupDiSetDeviceRegistryPropertyW\")\n\tprocSetupDiSetSelectedDevice                             = modsetupapi.NewProc(\"SetupDiSetSelectedDevice\")\n\tprocSetupDiSetSelectedDriverW                            = modsetupapi.NewProc(\"SetupDiSetSelectedDriverW\")\n\tprocSetupUninstallOEMInfW                                = modsetupapi.NewProc(\"SetupUninstallOEMInfW\")\n\tprocCommandLineToArgvW                                   = modshell32.NewProc(\"CommandLineToArgvW\")\n\tprocSHGetKnownFolderPath                                 = modshell32.NewProc(\"SHGetKnownFolderPath\")\n\tprocShellExecuteW                                        = modshell32.NewProc(\"ShellExecuteW\")\n\tprocEnumChildWindows                                     = moduser32.NewProc(\"EnumChildWindows\")\n\tprocEnumWindows                                          = moduser32.NewProc(\"EnumWindows\")\n\tprocExitWindowsEx                                        = moduser32.NewProc(\"ExitWindowsEx\")\n\tprocGetClassNameW                                        = moduser32.NewProc(\"GetClassNameW\")\n\tprocGetDesktopWindow                                     = moduser32.NewProc(\"GetDesktopWindow\")\n\tprocGetForegroundWindow                                  = moduser32.NewProc(\"GetForegroundWindow\")\n\tprocGetGUIThreadInfo                                     = moduser32.NewProc(\"GetGUIThreadInfo\")\n\tprocGetKeyboardLayout                                    = moduser32.NewProc(\"GetKeyboardLayout\")\n\tprocGetShellWindow                                       = moduser32.NewProc(\"GetShellWindow\")\n\tprocGetWindowThreadProcessId                             = moduser32.NewProc(\"GetWindowThreadProcessId\")\n\tprocIsWindow                                             = moduser32.NewProc(\"IsWindow\")\n\tprocIsWindowUnicode                                      = moduser32.NewProc(\"IsWindowUnicode\")\n\tprocIsWindowVisible                                      = moduser32.NewProc(\"IsWindowVisible\")\n\tprocLoadKeyboardLayoutW                                  = moduser32.NewProc(\"LoadKeyboardLayoutW\")\n\tprocMessageBoxW                                          = moduser32.NewProc(\"MessageBoxW\")\n\tprocToUnicodeEx                                          = moduser32.NewProc(\"ToUnicodeEx\")\n\tprocUnloadKeyboardLayout                                 = moduser32.NewProc(\"UnloadKeyboardLayout\")\n\tprocCreateEnvironmentBlock                               = moduserenv.NewProc(\"CreateEnvironmentBlock\")\n\tprocDestroyEnvironmentBlock                              = moduserenv.NewProc(\"DestroyEnvironmentBlock\")\n\tprocGetUserProfileDirectoryW                             = moduserenv.NewProc(\"GetUserProfileDirectoryW\")\n\tprocGetFileVersionInfoSizeW                              = modversion.NewProc(\"GetFileVersionInfoSizeW\")\n\tprocGetFileVersionInfoW                                  = modversion.NewProc(\"GetFileVersionInfoW\")\n\tprocVerQueryValueW                                       = modversion.NewProc(\"VerQueryValueW\")\n\tproctimeBeginPeriod                                      = modwinmm.NewProc(\"timeBeginPeriod\")\n\tproctimeEndPeriod                                        = modwinmm.NewProc(\"timeEndPeriod\")\n\tprocWinVerifyTrustEx                                     = modwintrust.NewProc(\"WinVerifyTrustEx\")\n\tprocFreeAddrInfoW                                        = modws2_32.NewProc(\"FreeAddrInfoW\")\n\tprocGetAddrInfoW                                         = modws2_32.NewProc(\"GetAddrInfoW\")\n\tprocWSACleanup                                           = modws2_32.NewProc(\"WSACleanup\")\n\tprocWSADuplicateSocketW                                  = modws2_32.NewProc(\"WSADuplicateSocketW\")\n\tprocWSAEnumProtocolsW                                    = modws2_32.NewProc(\"WSAEnumProtocolsW\")\n\tprocWSAGetOverlappedResult                               = modws2_32.NewProc(\"WSAGetOverlappedResult\")\n\tprocWSAIoctl                                             = modws2_32.NewProc(\"WSAIoctl\")\n\tprocWSALookupServiceBeginW                               = modws2_32.NewProc(\"WSALookupServiceBeginW\")\n\tprocWSALookupServiceEnd                                  = modws2_32.NewProc(\"WSALookupServiceEnd\")\n\tprocWSALookupServiceNextW                                = modws2_32.NewProc(\"WSALookupServiceNextW\")\n\tprocWSARecv                                              = modws2_32.NewProc(\"WSARecv\")\n\tprocWSARecvFrom                                          = modws2_32.NewProc(\"WSARecvFrom\")\n\tprocWSASend                                              = modws2_32.NewProc(\"WSASend\")\n\tprocWSASendTo                                            = modws2_32.NewProc(\"WSASendTo\")\n\tprocWSASocketW                                           = modws2_32.NewProc(\"WSASocketW\")\n\tprocWSAStartup                                           = modws2_32.NewProc(\"WSAStartup\")\n\tprocbind                                                 = modws2_32.NewProc(\"bind\")\n\tprocclosesocket                                          = modws2_32.NewProc(\"closesocket\")\n\tprocconnect                                              = modws2_32.NewProc(\"connect\")\n\tprocgethostbyname                                        = modws2_32.NewProc(\"gethostbyname\")\n\tprocgetpeername                                          = modws2_32.NewProc(\"getpeername\")\n\tprocgetprotobyname                                       = modws2_32.NewProc(\"getprotobyname\")\n\tprocgetservbyname                                        = modws2_32.NewProc(\"getservbyname\")\n\tprocgetsockname                                          = modws2_32.NewProc(\"getsockname\")\n\tprocgetsockopt                                           = modws2_32.NewProc(\"getsockopt\")\n\tproclisten                                               = modws2_32.NewProc(\"listen\")\n\tprocntohs                                                = modws2_32.NewProc(\"ntohs\")\n\tprocrecvfrom                                             = modws2_32.NewProc(\"recvfrom\")\n\tprocsendto                                               = modws2_32.NewProc(\"sendto\")\n\tprocsetsockopt                                           = modws2_32.NewProc(\"setsockopt\")\n\tprocshutdown                                             = modws2_32.NewProc(\"shutdown\")\n\tprocsocket                                               = modws2_32.NewProc(\"socket\")\n\tprocWTSEnumerateSessionsW                                = modwtsapi32.NewProc(\"WTSEnumerateSessionsW\")\n\tprocWTSFreeMemory                                        = modwtsapi32.NewProc(\"WTSFreeMemory\")\n\tprocWTSQueryUserToken                                    = modwtsapi32.NewProc(\"WTSQueryUserToken\")\n)\n\nfunc cm_Get_DevNode_Status(status *uint32, problemNumber *uint32, devInst DEVINST, flags uint32) (ret CONFIGRET) {\n\tr0, _, _ := syscall.SyscallN(procCM_Get_DevNode_Status.Addr(), uintptr(unsafe.Pointer(status)), uintptr(unsafe.Pointer(problemNumber)), uintptr(devInst), uintptr(flags))\n\tret = CONFIGRET(r0)\n\treturn\n}\n\nfunc cm_Get_Device_Interface_List(interfaceClass *GUID, deviceID *uint16, buffer *uint16, bufferLen uint32, flags uint32) (ret CONFIGRET) {\n\tr0, _, _ := syscall.SyscallN(procCM_Get_Device_Interface_ListW.Addr(), uintptr(unsafe.Pointer(interfaceClass)), uintptr(unsafe.Pointer(deviceID)), uintptr(unsafe.Pointer(buffer)), uintptr(bufferLen), uintptr(flags))\n\tret = CONFIGRET(r0)\n\treturn\n}\n\nfunc cm_Get_Device_Interface_List_Size(len *uint32, interfaceClass *GUID, deviceID *uint16, flags uint32) (ret CONFIGRET) {\n\tr0, _, _ := syscall.SyscallN(procCM_Get_Device_Interface_List_SizeW.Addr(), uintptr(unsafe.Pointer(len)), uintptr(unsafe.Pointer(interfaceClass)), uintptr(unsafe.Pointer(deviceID)), uintptr(flags))\n\tret = CONFIGRET(r0)\n\treturn\n}\n\nfunc cm_MapCrToWin32Err(configRet CONFIGRET, defaultWin32Error Errno) (ret Errno) {\n\tr0, _, _ := syscall.SyscallN(procCM_MapCrToWin32Err.Addr(), uintptr(configRet), uintptr(defaultWin32Error))\n\tret = Errno(r0)\n\treturn\n}\n\nfunc AdjustTokenGroups(token Token, resetToDefault bool, newstate *Tokengroups, buflen uint32, prevstate *Tokengroups, returnlen *uint32) (err error) {\n\tvar _p0 uint32\n\tif resetToDefault {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procAdjustTokenGroups.Addr(), uintptr(token), uintptr(_p0), uintptr(unsafe.Pointer(newstate)), uintptr(buflen), uintptr(unsafe.Pointer(prevstate)), uintptr(unsafe.Pointer(returnlen)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc AdjustTokenPrivileges(token Token, disableAllPrivileges bool, newstate *Tokenprivileges, buflen uint32, prevstate *Tokenprivileges, returnlen *uint32) (err error) {\n\tvar _p0 uint32\n\tif disableAllPrivileges {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procAdjustTokenPrivileges.Addr(), uintptr(token), uintptr(_p0), uintptr(unsafe.Pointer(newstate)), uintptr(buflen), uintptr(unsafe.Pointer(prevstate)), uintptr(unsafe.Pointer(returnlen)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc AllocateAndInitializeSid(identAuth *SidIdentifierAuthority, subAuth byte, subAuth0 uint32, subAuth1 uint32, subAuth2 uint32, subAuth3 uint32, subAuth4 uint32, subAuth5 uint32, subAuth6 uint32, subAuth7 uint32, sid **SID) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procAllocateAndInitializeSid.Addr(), uintptr(unsafe.Pointer(identAuth)), uintptr(subAuth), uintptr(subAuth0), uintptr(subAuth1), uintptr(subAuth2), uintptr(subAuth3), uintptr(subAuth4), uintptr(subAuth5), uintptr(subAuth6), uintptr(subAuth7), uintptr(unsafe.Pointer(sid)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc buildSecurityDescriptor(owner *TRUSTEE, group *TRUSTEE, countAccessEntries uint32, accessEntries *EXPLICIT_ACCESS, countAuditEntries uint32, auditEntries *EXPLICIT_ACCESS, oldSecurityDescriptor *SECURITY_DESCRIPTOR, sizeNewSecurityDescriptor *uint32, newSecurityDescriptor **SECURITY_DESCRIPTOR) (ret error) {\n\tr0, _, _ := syscall.SyscallN(procBuildSecurityDescriptorW.Addr(), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(countAccessEntries), uintptr(unsafe.Pointer(accessEntries)), uintptr(countAuditEntries), uintptr(unsafe.Pointer(auditEntries)), uintptr(unsafe.Pointer(oldSecurityDescriptor)), uintptr(unsafe.Pointer(sizeNewSecurityDescriptor)), uintptr(unsafe.Pointer(newSecurityDescriptor)))\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc ChangeServiceConfig2(service Handle, infoLevel uint32, info *byte) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procChangeServiceConfig2W.Addr(), uintptr(service), uintptr(infoLevel), uintptr(unsafe.Pointer(info)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ChangeServiceConfig(service Handle, serviceType uint32, startType uint32, errorControl uint32, binaryPathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16, displayName *uint16) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procChangeServiceConfigW.Addr(), uintptr(service), uintptr(serviceType), uintptr(startType), uintptr(errorControl), uintptr(unsafe.Pointer(binaryPathName)), uintptr(unsafe.Pointer(loadOrderGroup)), uintptr(unsafe.Pointer(tagId)), uintptr(unsafe.Pointer(dependencies)), uintptr(unsafe.Pointer(serviceStartName)), uintptr(unsafe.Pointer(password)), uintptr(unsafe.Pointer(displayName)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc checkTokenMembership(tokenHandle Token, sidToCheck *SID, isMember *int32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCheckTokenMembership.Addr(), uintptr(tokenHandle), uintptr(unsafe.Pointer(sidToCheck)), uintptr(unsafe.Pointer(isMember)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CloseServiceHandle(handle Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCloseServiceHandle.Addr(), uintptr(handle))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ControlService(service Handle, control uint32, status *SERVICE_STATUS) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procControlService.Addr(), uintptr(service), uintptr(control), uintptr(unsafe.Pointer(status)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc convertSecurityDescriptorToStringSecurityDescriptor(sd *SECURITY_DESCRIPTOR, revision uint32, securityInformation SECURITY_INFORMATION, str **uint16, strLen *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procConvertSecurityDescriptorToStringSecurityDescriptorW.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(revision), uintptr(securityInformation), uintptr(unsafe.Pointer(str)), uintptr(unsafe.Pointer(strLen)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ConvertSidToStringSid(sid *SID, stringSid **uint16) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procConvertSidToStringSidW.Addr(), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(stringSid)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc convertStringSecurityDescriptorToSecurityDescriptor(str string, revision uint32, sd **SECURITY_DESCRIPTOR, size *uint32) (err error) {\n\tvar _p0 *uint16\n\t_p0, err = syscall.UTF16PtrFromString(str)\n\tif err != nil {\n\t\treturn\n\t}\n\treturn _convertStringSecurityDescriptorToSecurityDescriptor(_p0, revision, sd, size)\n}\n\nfunc _convertStringSecurityDescriptorToSecurityDescriptor(str *uint16, revision uint32, sd **SECURITY_DESCRIPTOR, size *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procConvertStringSecurityDescriptorToSecurityDescriptorW.Addr(), uintptr(unsafe.Pointer(str)), uintptr(revision), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(size)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ConvertStringSidToSid(stringSid *uint16, sid **SID) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procConvertStringSidToSidW.Addr(), uintptr(unsafe.Pointer(stringSid)), uintptr(unsafe.Pointer(sid)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CopySid(destSidLen uint32, destSid *SID, srcSid *SID) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCopySid.Addr(), uintptr(destSidLen), uintptr(unsafe.Pointer(destSid)), uintptr(unsafe.Pointer(srcSid)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateProcessAsUser(token Token, appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) {\n\tvar _p0 uint32\n\tif inheritHandles {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procCreateProcessAsUserW.Addr(), uintptr(token), uintptr(unsafe.Pointer(appName)), uintptr(unsafe.Pointer(commandLine)), uintptr(unsafe.Pointer(procSecurity)), uintptr(unsafe.Pointer(threadSecurity)), uintptr(_p0), uintptr(creationFlags), uintptr(unsafe.Pointer(env)), uintptr(unsafe.Pointer(currentDir)), uintptr(unsafe.Pointer(startupInfo)), uintptr(unsafe.Pointer(outProcInfo)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateService(mgr Handle, serviceName *uint16, displayName *uint16, access uint32, srvType uint32, startType uint32, errCtl uint32, pathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procCreateServiceW.Addr(), uintptr(mgr), uintptr(unsafe.Pointer(serviceName)), uintptr(unsafe.Pointer(displayName)), uintptr(access), uintptr(srvType), uintptr(startType), uintptr(errCtl), uintptr(unsafe.Pointer(pathName)), uintptr(unsafe.Pointer(loadOrderGroup)), uintptr(unsafe.Pointer(tagId)), uintptr(unsafe.Pointer(dependencies)), uintptr(unsafe.Pointer(serviceStartName)), uintptr(unsafe.Pointer(password)))\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc createWellKnownSid(sidType WELL_KNOWN_SID_TYPE, domainSid *SID, sid *SID, sizeSid *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCreateWellKnownSid.Addr(), uintptr(sidType), uintptr(unsafe.Pointer(domainSid)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(sizeSid)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CryptAcquireContext(provhandle *Handle, container *uint16, provider *uint16, provtype uint32, flags uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCryptAcquireContextW.Addr(), uintptr(unsafe.Pointer(provhandle)), uintptr(unsafe.Pointer(container)), uintptr(unsafe.Pointer(provider)), uintptr(provtype), uintptr(flags))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CryptGenRandom(provhandle Handle, buflen uint32, buf *byte) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCryptGenRandom.Addr(), uintptr(provhandle), uintptr(buflen), uintptr(unsafe.Pointer(buf)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CryptReleaseContext(provhandle Handle, flags uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCryptReleaseContext.Addr(), uintptr(provhandle), uintptr(flags))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc DeleteService(service Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procDeleteService.Addr(), uintptr(service))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc DeregisterEventSource(handle Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procDeregisterEventSource.Addr(), uintptr(handle))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc DuplicateTokenEx(existingToken Token, desiredAccess uint32, tokenAttributes *SecurityAttributes, impersonationLevel uint32, tokenType uint32, newToken *Token) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procDuplicateTokenEx.Addr(), uintptr(existingToken), uintptr(desiredAccess), uintptr(unsafe.Pointer(tokenAttributes)), uintptr(impersonationLevel), uintptr(tokenType), uintptr(unsafe.Pointer(newToken)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc EnumDependentServices(service Handle, activityState uint32, services *ENUM_SERVICE_STATUS, buffSize uint32, bytesNeeded *uint32, servicesReturned *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procEnumDependentServicesW.Addr(), uintptr(service), uintptr(activityState), uintptr(unsafe.Pointer(services)), uintptr(buffSize), uintptr(unsafe.Pointer(bytesNeeded)), uintptr(unsafe.Pointer(servicesReturned)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc EnumServicesStatusEx(mgr Handle, infoLevel uint32, serviceType uint32, serviceState uint32, services *byte, bufSize uint32, bytesNeeded *uint32, servicesReturned *uint32, resumeHandle *uint32, groupName *uint16) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procEnumServicesStatusExW.Addr(), uintptr(mgr), uintptr(infoLevel), uintptr(serviceType), uintptr(serviceState), uintptr(unsafe.Pointer(services)), uintptr(bufSize), uintptr(unsafe.Pointer(bytesNeeded)), uintptr(unsafe.Pointer(servicesReturned)), uintptr(unsafe.Pointer(resumeHandle)), uintptr(unsafe.Pointer(groupName)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc EqualSid(sid1 *SID, sid2 *SID) (isEqual bool) {\n\tr0, _, _ := syscall.SyscallN(procEqualSid.Addr(), uintptr(unsafe.Pointer(sid1)), uintptr(unsafe.Pointer(sid2)))\n\tisEqual = r0 != 0\n\treturn\n}\n\nfunc FreeSid(sid *SID) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procFreeSid.Addr(), uintptr(unsafe.Pointer(sid)))\n\tif r1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetAce(acl *ACL, aceIndex uint32, pAce **ACCESS_ALLOWED_ACE) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetAce.Addr(), uintptr(unsafe.Pointer(acl)), uintptr(aceIndex), uintptr(unsafe.Pointer(pAce)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetLengthSid(sid *SID) (len uint32) {\n\tr0, _, _ := syscall.SyscallN(procGetLengthSid.Addr(), uintptr(unsafe.Pointer(sid)))\n\tlen = uint32(r0)\n\treturn\n}\n\nfunc getNamedSecurityInfo(objectName string, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner **SID, group **SID, dacl **ACL, sacl **ACL, sd **SECURITY_DESCRIPTOR) (ret error) {\n\tvar _p0 *uint16\n\t_p0, ret = syscall.UTF16PtrFromString(objectName)\n\tif ret != nil {\n\t\treturn\n\t}\n\treturn _getNamedSecurityInfo(_p0, objectType, securityInformation, owner, group, dacl, sacl, sd)\n}\n\nfunc _getNamedSecurityInfo(objectName *uint16, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner **SID, group **SID, dacl **ACL, sacl **ACL, sd **SECURITY_DESCRIPTOR) (ret error) {\n\tr0, _, _ := syscall.SyscallN(procGetNamedSecurityInfoW.Addr(), uintptr(unsafe.Pointer(objectName)), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl)), uintptr(unsafe.Pointer(sd)))\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc getSecurityDescriptorControl(sd *SECURITY_DESCRIPTOR, control *SECURITY_DESCRIPTOR_CONTROL, revision *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetSecurityDescriptorControl.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(control)), uintptr(unsafe.Pointer(revision)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc getSecurityDescriptorDacl(sd *SECURITY_DESCRIPTOR, daclPresent *bool, dacl **ACL, daclDefaulted *bool) (err error) {\n\tvar _p0 uint32\n\tif *daclPresent {\n\t\t_p0 = 1\n\t}\n\tvar _p1 uint32\n\tif *daclDefaulted {\n\t\t_p1 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procGetSecurityDescriptorDacl.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(&_p0)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(&_p1)))\n\t*daclPresent = _p0 != 0\n\t*daclDefaulted = _p1 != 0\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc getSecurityDescriptorGroup(sd *SECURITY_DESCRIPTOR, group **SID, groupDefaulted *bool) (err error) {\n\tvar _p0 uint32\n\tif *groupDefaulted {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procGetSecurityDescriptorGroup.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(&_p0)))\n\t*groupDefaulted = _p0 != 0\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc getSecurityDescriptorLength(sd *SECURITY_DESCRIPTOR) (len uint32) {\n\tr0, _, _ := syscall.SyscallN(procGetSecurityDescriptorLength.Addr(), uintptr(unsafe.Pointer(sd)))\n\tlen = uint32(r0)\n\treturn\n}\n\nfunc getSecurityDescriptorOwner(sd *SECURITY_DESCRIPTOR, owner **SID, ownerDefaulted *bool) (err error) {\n\tvar _p0 uint32\n\tif *ownerDefaulted {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procGetSecurityDescriptorOwner.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(&_p0)))\n\t*ownerDefaulted = _p0 != 0\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc getSecurityDescriptorRMControl(sd *SECURITY_DESCRIPTOR, rmControl *uint8) (ret error) {\n\tr0, _, _ := syscall.SyscallN(procGetSecurityDescriptorRMControl.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(rmControl)))\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc getSecurityDescriptorSacl(sd *SECURITY_DESCRIPTOR, saclPresent *bool, sacl **ACL, saclDefaulted *bool) (err error) {\n\tvar _p0 uint32\n\tif *saclPresent {\n\t\t_p0 = 1\n\t}\n\tvar _p1 uint32\n\tif *saclDefaulted {\n\t\t_p1 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procGetSecurityDescriptorSacl.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(&_p0)), uintptr(unsafe.Pointer(sacl)), uintptr(unsafe.Pointer(&_p1)))\n\t*saclPresent = _p0 != 0\n\t*saclDefaulted = _p1 != 0\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc getSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner **SID, group **SID, dacl **ACL, sacl **ACL, sd **SECURITY_DESCRIPTOR) (ret error) {\n\tr0, _, _ := syscall.SyscallN(procGetSecurityInfo.Addr(), uintptr(handle), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl)), uintptr(unsafe.Pointer(sd)))\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc getSidIdentifierAuthority(sid *SID) (authority *SidIdentifierAuthority) {\n\tr0, _, _ := syscall.SyscallN(procGetSidIdentifierAuthority.Addr(), uintptr(unsafe.Pointer(sid)))\n\tauthority = (*SidIdentifierAuthority)(unsafe.Pointer(r0))\n\treturn\n}\n\nfunc getSidSubAuthority(sid *SID, index uint32) (subAuthority *uint32) {\n\tr0, _, _ := syscall.SyscallN(procGetSidSubAuthority.Addr(), uintptr(unsafe.Pointer(sid)), uintptr(index))\n\tsubAuthority = (*uint32)(unsafe.Pointer(r0))\n\treturn\n}\n\nfunc getSidSubAuthorityCount(sid *SID) (count *uint8) {\n\tr0, _, _ := syscall.SyscallN(procGetSidSubAuthorityCount.Addr(), uintptr(unsafe.Pointer(sid)))\n\tcount = (*uint8)(unsafe.Pointer(r0))\n\treturn\n}\n\nfunc GetTokenInformation(token Token, infoClass uint32, info *byte, infoLen uint32, returnedLen *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetTokenInformation.Addr(), uintptr(token), uintptr(infoClass), uintptr(unsafe.Pointer(info)), uintptr(infoLen), uintptr(unsafe.Pointer(returnedLen)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ImpersonateSelf(impersonationlevel uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procImpersonateSelf.Addr(), uintptr(impersonationlevel))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc initializeSecurityDescriptor(absoluteSD *SECURITY_DESCRIPTOR, revision uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procInitializeSecurityDescriptor.Addr(), uintptr(unsafe.Pointer(absoluteSD)), uintptr(revision))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc InitiateSystemShutdownEx(machineName *uint16, message *uint16, timeout uint32, forceAppsClosed bool, rebootAfterShutdown bool, reason uint32) (err error) {\n\tvar _p0 uint32\n\tif forceAppsClosed {\n\t\t_p0 = 1\n\t}\n\tvar _p1 uint32\n\tif rebootAfterShutdown {\n\t\t_p1 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procInitiateSystemShutdownExW.Addr(), uintptr(unsafe.Pointer(machineName)), uintptr(unsafe.Pointer(message)), uintptr(timeout), uintptr(_p0), uintptr(_p1), uintptr(reason))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc isTokenRestricted(tokenHandle Token) (ret bool, err error) {\n\tr0, _, e1 := syscall.SyscallN(procIsTokenRestricted.Addr(), uintptr(tokenHandle))\n\tret = r0 != 0\n\tif !ret {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc isValidSecurityDescriptor(sd *SECURITY_DESCRIPTOR) (isValid bool) {\n\tr0, _, _ := syscall.SyscallN(procIsValidSecurityDescriptor.Addr(), uintptr(unsafe.Pointer(sd)))\n\tisValid = r0 != 0\n\treturn\n}\n\nfunc isValidSid(sid *SID) (isValid bool) {\n\tr0, _, _ := syscall.SyscallN(procIsValidSid.Addr(), uintptr(unsafe.Pointer(sid)))\n\tisValid = r0 != 0\n\treturn\n}\n\nfunc isWellKnownSid(sid *SID, sidType WELL_KNOWN_SID_TYPE) (isWellKnown bool) {\n\tr0, _, _ := syscall.SyscallN(procIsWellKnownSid.Addr(), uintptr(unsafe.Pointer(sid)), uintptr(sidType))\n\tisWellKnown = r0 != 0\n\treturn\n}\n\nfunc LookupAccountName(systemName *uint16, accountName *uint16, sid *SID, sidLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procLookupAccountNameW.Addr(), uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(accountName)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(sidLen)), uintptr(unsafe.Pointer(refdDomainName)), uintptr(unsafe.Pointer(refdDomainNameLen)), uintptr(unsafe.Pointer(use)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc LookupAccountSid(systemName *uint16, sid *SID, name *uint16, nameLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procLookupAccountSidW.Addr(), uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(nameLen)), uintptr(unsafe.Pointer(refdDomainName)), uintptr(unsafe.Pointer(refdDomainNameLen)), uintptr(unsafe.Pointer(use)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc LookupPrivilegeValue(systemname *uint16, name *uint16, luid *LUID) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procLookupPrivilegeValueW.Addr(), uintptr(unsafe.Pointer(systemname)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(luid)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc makeAbsoluteSD(selfRelativeSD *SECURITY_DESCRIPTOR, absoluteSD *SECURITY_DESCRIPTOR, absoluteSDSize *uint32, dacl *ACL, daclSize *uint32, sacl *ACL, saclSize *uint32, owner *SID, ownerSize *uint32, group *SID, groupSize *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procMakeAbsoluteSD.Addr(), uintptr(unsafe.Pointer(selfRelativeSD)), uintptr(unsafe.Pointer(absoluteSD)), uintptr(unsafe.Pointer(absoluteSDSize)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(daclSize)), uintptr(unsafe.Pointer(sacl)), uintptr(unsafe.Pointer(saclSize)), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(ownerSize)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(groupSize)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc makeSelfRelativeSD(absoluteSD *SECURITY_DESCRIPTOR, selfRelativeSD *SECURITY_DESCRIPTOR, selfRelativeSDSize *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procMakeSelfRelativeSD.Addr(), uintptr(unsafe.Pointer(absoluteSD)), uintptr(unsafe.Pointer(selfRelativeSD)), uintptr(unsafe.Pointer(selfRelativeSDSize)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc NotifyServiceStatusChange(service Handle, notifyMask uint32, notifier *SERVICE_NOTIFY) (ret error) {\n\tr0, _, _ := syscall.SyscallN(procNotifyServiceStatusChangeW.Addr(), uintptr(service), uintptr(notifyMask), uintptr(unsafe.Pointer(notifier)))\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc OpenProcessToken(process Handle, access uint32, token *Token) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procOpenProcessToken.Addr(), uintptr(process), uintptr(access), uintptr(unsafe.Pointer(token)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc OpenSCManager(machineName *uint16, databaseName *uint16, access uint32) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procOpenSCManagerW.Addr(), uintptr(unsafe.Pointer(machineName)), uintptr(unsafe.Pointer(databaseName)), uintptr(access))\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc OpenService(mgr Handle, serviceName *uint16, access uint32) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procOpenServiceW.Addr(), uintptr(mgr), uintptr(unsafe.Pointer(serviceName)), uintptr(access))\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc OpenThreadToken(thread Handle, access uint32, openAsSelf bool, token *Token) (err error) {\n\tvar _p0 uint32\n\tif openAsSelf {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procOpenThreadToken.Addr(), uintptr(thread), uintptr(access), uintptr(_p0), uintptr(unsafe.Pointer(token)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc QueryServiceConfig2(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procQueryServiceConfig2W.Addr(), uintptr(service), uintptr(infoLevel), uintptr(unsafe.Pointer(buff)), uintptr(buffSize), uintptr(unsafe.Pointer(bytesNeeded)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc QueryServiceConfig(service Handle, serviceConfig *QUERY_SERVICE_CONFIG, bufSize uint32, bytesNeeded *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procQueryServiceConfigW.Addr(), uintptr(service), uintptr(unsafe.Pointer(serviceConfig)), uintptr(bufSize), uintptr(unsafe.Pointer(bytesNeeded)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc QueryServiceDynamicInformation(service Handle, infoLevel uint32, dynamicInfo unsafe.Pointer) (err error) {\n\terr = procQueryServiceDynamicInformation.Find()\n\tif err != nil {\n\t\treturn\n\t}\n\tr1, _, e1 := syscall.SyscallN(procQueryServiceDynamicInformation.Addr(), uintptr(service), uintptr(infoLevel), uintptr(dynamicInfo))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc QueryServiceLockStatus(mgr Handle, lockStatus *QUERY_SERVICE_LOCK_STATUS, bufSize uint32, bytesNeeded *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procQueryServiceLockStatusW.Addr(), uintptr(mgr), uintptr(unsafe.Pointer(lockStatus)), uintptr(bufSize), uintptr(unsafe.Pointer(bytesNeeded)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc QueryServiceStatus(service Handle, status *SERVICE_STATUS) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procQueryServiceStatus.Addr(), uintptr(service), uintptr(unsafe.Pointer(status)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc QueryServiceStatusEx(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procQueryServiceStatusEx.Addr(), uintptr(service), uintptr(infoLevel), uintptr(unsafe.Pointer(buff)), uintptr(buffSize), uintptr(unsafe.Pointer(bytesNeeded)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc RegCloseKey(key Handle) (regerrno error) {\n\tr0, _, _ := syscall.SyscallN(procRegCloseKey.Addr(), uintptr(key))\n\tif r0 != 0 {\n\t\tregerrno = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc RegEnumKeyEx(key Handle, index uint32, name *uint16, nameLen *uint32, reserved *uint32, class *uint16, classLen *uint32, lastWriteTime *Filetime) (regerrno error) {\n\tr0, _, _ := syscall.SyscallN(procRegEnumKeyExW.Addr(), uintptr(key), uintptr(index), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(nameLen)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(class)), uintptr(unsafe.Pointer(classLen)), uintptr(unsafe.Pointer(lastWriteTime)))\n\tif r0 != 0 {\n\t\tregerrno = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc RegNotifyChangeKeyValue(key Handle, watchSubtree bool, notifyFilter uint32, event Handle, asynchronous bool) (regerrno error) {\n\tvar _p0 uint32\n\tif watchSubtree {\n\t\t_p0 = 1\n\t}\n\tvar _p1 uint32\n\tif asynchronous {\n\t\t_p1 = 1\n\t}\n\tr0, _, _ := syscall.SyscallN(procRegNotifyChangeKeyValue.Addr(), uintptr(key), uintptr(_p0), uintptr(notifyFilter), uintptr(event), uintptr(_p1))\n\tif r0 != 0 {\n\t\tregerrno = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc RegOpenKeyEx(key Handle, subkey *uint16, options uint32, desiredAccess uint32, result *Handle) (regerrno error) {\n\tr0, _, _ := syscall.SyscallN(procRegOpenKeyExW.Addr(), uintptr(key), uintptr(unsafe.Pointer(subkey)), uintptr(options), uintptr(desiredAccess), uintptr(unsafe.Pointer(result)))\n\tif r0 != 0 {\n\t\tregerrno = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc RegQueryInfoKey(key Handle, class *uint16, classLen *uint32, reserved *uint32, subkeysLen *uint32, maxSubkeyLen *uint32, maxClassLen *uint32, valuesLen *uint32, maxValueNameLen *uint32, maxValueLen *uint32, saLen *uint32, lastWriteTime *Filetime) (regerrno error) {\n\tr0, _, _ := syscall.SyscallN(procRegQueryInfoKeyW.Addr(), uintptr(key), uintptr(unsafe.Pointer(class)), uintptr(unsafe.Pointer(classLen)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(subkeysLen)), uintptr(unsafe.Pointer(maxSubkeyLen)), uintptr(unsafe.Pointer(maxClassLen)), uintptr(unsafe.Pointer(valuesLen)), uintptr(unsafe.Pointer(maxValueNameLen)), uintptr(unsafe.Pointer(maxValueLen)), uintptr(unsafe.Pointer(saLen)), uintptr(unsafe.Pointer(lastWriteTime)))\n\tif r0 != 0 {\n\t\tregerrno = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc RegQueryValueEx(key Handle, name *uint16, reserved *uint32, valtype *uint32, buf *byte, buflen *uint32) (regerrno error) {\n\tr0, _, _ := syscall.SyscallN(procRegQueryValueExW.Addr(), uintptr(key), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(valtype)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(buflen)))\n\tif r0 != 0 {\n\t\tregerrno = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc RegisterEventSource(uncServerName *uint16, sourceName *uint16) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procRegisterEventSourceW.Addr(), uintptr(unsafe.Pointer(uncServerName)), uintptr(unsafe.Pointer(sourceName)))\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc RegisterServiceCtrlHandlerEx(serviceName *uint16, handlerProc uintptr, context uintptr) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procRegisterServiceCtrlHandlerExW.Addr(), uintptr(unsafe.Pointer(serviceName)), uintptr(handlerProc), uintptr(context))\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ReportEvent(log Handle, etype uint16, category uint16, eventId uint32, usrSId uintptr, numStrings uint16, dataSize uint32, strings **uint16, rawData *byte) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procReportEventW.Addr(), uintptr(log), uintptr(etype), uintptr(category), uintptr(eventId), uintptr(usrSId), uintptr(numStrings), uintptr(dataSize), uintptr(unsafe.Pointer(strings)), uintptr(unsafe.Pointer(rawData)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc RevertToSelf() (err error) {\n\tr1, _, e1 := syscall.SyscallN(procRevertToSelf.Addr())\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setEntriesInAcl(countExplicitEntries uint32, explicitEntries *EXPLICIT_ACCESS, oldACL *ACL, newACL **ACL) (ret error) {\n\tr0, _, _ := syscall.SyscallN(procSetEntriesInAclW.Addr(), uintptr(countExplicitEntries), uintptr(unsafe.Pointer(explicitEntries)), uintptr(unsafe.Pointer(oldACL)), uintptr(unsafe.Pointer(newACL)))\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc SetKernelObjectSecurity(handle Handle, securityInformation SECURITY_INFORMATION, securityDescriptor *SECURITY_DESCRIPTOR) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetKernelObjectSecurity.Addr(), uintptr(handle), uintptr(securityInformation), uintptr(unsafe.Pointer(securityDescriptor)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetNamedSecurityInfo(objectName string, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) (ret error) {\n\tvar _p0 *uint16\n\t_p0, ret = syscall.UTF16PtrFromString(objectName)\n\tif ret != nil {\n\t\treturn\n\t}\n\treturn _SetNamedSecurityInfo(_p0, objectType, securityInformation, owner, group, dacl, sacl)\n}\n\nfunc _SetNamedSecurityInfo(objectName *uint16, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) (ret error) {\n\tr0, _, _ := syscall.SyscallN(procSetNamedSecurityInfoW.Addr(), uintptr(unsafe.Pointer(objectName)), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl)))\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc setSecurityDescriptorControl(sd *SECURITY_DESCRIPTOR, controlBitsOfInterest SECURITY_DESCRIPTOR_CONTROL, controlBitsToSet SECURITY_DESCRIPTOR_CONTROL) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetSecurityDescriptorControl.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(controlBitsOfInterest), uintptr(controlBitsToSet))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setSecurityDescriptorDacl(sd *SECURITY_DESCRIPTOR, daclPresent bool, dacl *ACL, daclDefaulted bool) (err error) {\n\tvar _p0 uint32\n\tif daclPresent {\n\t\t_p0 = 1\n\t}\n\tvar _p1 uint32\n\tif daclDefaulted {\n\t\t_p1 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procSetSecurityDescriptorDacl.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(_p0), uintptr(unsafe.Pointer(dacl)), uintptr(_p1))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setSecurityDescriptorGroup(sd *SECURITY_DESCRIPTOR, group *SID, groupDefaulted bool) (err error) {\n\tvar _p0 uint32\n\tif groupDefaulted {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procSetSecurityDescriptorGroup.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(group)), uintptr(_p0))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setSecurityDescriptorOwner(sd *SECURITY_DESCRIPTOR, owner *SID, ownerDefaulted bool) (err error) {\n\tvar _p0 uint32\n\tif ownerDefaulted {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procSetSecurityDescriptorOwner.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(owner)), uintptr(_p0))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setSecurityDescriptorRMControl(sd *SECURITY_DESCRIPTOR, rmControl *uint8) {\n\tsyscall.SyscallN(procSetSecurityDescriptorRMControl.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(rmControl)))\n\treturn\n}\n\nfunc setSecurityDescriptorSacl(sd *SECURITY_DESCRIPTOR, saclPresent bool, sacl *ACL, saclDefaulted bool) (err error) {\n\tvar _p0 uint32\n\tif saclPresent {\n\t\t_p0 = 1\n\t}\n\tvar _p1 uint32\n\tif saclDefaulted {\n\t\t_p1 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procSetSecurityDescriptorSacl.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(_p0), uintptr(unsafe.Pointer(sacl)), uintptr(_p1))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) (ret error) {\n\tr0, _, _ := syscall.SyscallN(procSetSecurityInfo.Addr(), uintptr(handle), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl)))\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc SetServiceStatus(service Handle, serviceStatus *SERVICE_STATUS) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetServiceStatus.Addr(), uintptr(service), uintptr(unsafe.Pointer(serviceStatus)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetThreadToken(thread *Handle, token Token) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetThreadToken.Addr(), uintptr(unsafe.Pointer(thread)), uintptr(token))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetTokenInformation(token Token, infoClass uint32, info *byte, infoLen uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetTokenInformation.Addr(), uintptr(token), uintptr(infoClass), uintptr(unsafe.Pointer(info)), uintptr(infoLen))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc StartServiceCtrlDispatcher(serviceTable *SERVICE_TABLE_ENTRY) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procStartServiceCtrlDispatcherW.Addr(), uintptr(unsafe.Pointer(serviceTable)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc StartService(service Handle, numArgs uint32, argVectors **uint16) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procStartServiceW.Addr(), uintptr(service), uintptr(numArgs), uintptr(unsafe.Pointer(argVectors)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CertAddCertificateContextToStore(store Handle, certContext *CertContext, addDisposition uint32, storeContext **CertContext) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCertAddCertificateContextToStore.Addr(), uintptr(store), uintptr(unsafe.Pointer(certContext)), uintptr(addDisposition), uintptr(unsafe.Pointer(storeContext)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CertCloseStore(store Handle, flags uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCertCloseStore.Addr(), uintptr(store), uintptr(flags))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CertCreateCertificateContext(certEncodingType uint32, certEncoded *byte, encodedLen uint32) (context *CertContext, err error) {\n\tr0, _, e1 := syscall.SyscallN(procCertCreateCertificateContext.Addr(), uintptr(certEncodingType), uintptr(unsafe.Pointer(certEncoded)), uintptr(encodedLen))\n\tcontext = (*CertContext)(unsafe.Pointer(r0))\n\tif context == nil {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CertDeleteCertificateFromStore(certContext *CertContext) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCertDeleteCertificateFromStore.Addr(), uintptr(unsafe.Pointer(certContext)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CertDuplicateCertificateContext(certContext *CertContext) (dupContext *CertContext) {\n\tr0, _, _ := syscall.SyscallN(procCertDuplicateCertificateContext.Addr(), uintptr(unsafe.Pointer(certContext)))\n\tdupContext = (*CertContext)(unsafe.Pointer(r0))\n\treturn\n}\n\nfunc CertEnumCertificatesInStore(store Handle, prevContext *CertContext) (context *CertContext, err error) {\n\tr0, _, e1 := syscall.SyscallN(procCertEnumCertificatesInStore.Addr(), uintptr(store), uintptr(unsafe.Pointer(prevContext)))\n\tcontext = (*CertContext)(unsafe.Pointer(r0))\n\tif context == nil {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CertFindCertificateInStore(store Handle, certEncodingType uint32, findFlags uint32, findType uint32, findPara unsafe.Pointer, prevCertContext *CertContext) (cert *CertContext, err error) {\n\tr0, _, e1 := syscall.SyscallN(procCertFindCertificateInStore.Addr(), uintptr(store), uintptr(certEncodingType), uintptr(findFlags), uintptr(findType), uintptr(findPara), uintptr(unsafe.Pointer(prevCertContext)))\n\tcert = (*CertContext)(unsafe.Pointer(r0))\n\tif cert == nil {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CertFindChainInStore(store Handle, certEncodingType uint32, findFlags uint32, findType uint32, findPara unsafe.Pointer, prevChainContext *CertChainContext) (certchain *CertChainContext, err error) {\n\tr0, _, e1 := syscall.SyscallN(procCertFindChainInStore.Addr(), uintptr(store), uintptr(certEncodingType), uintptr(findFlags), uintptr(findType), uintptr(findPara), uintptr(unsafe.Pointer(prevChainContext)))\n\tcertchain = (*CertChainContext)(unsafe.Pointer(r0))\n\tif certchain == nil {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CertFindExtension(objId *byte, countExtensions uint32, extensions *CertExtension) (ret *CertExtension) {\n\tr0, _, _ := syscall.SyscallN(procCertFindExtension.Addr(), uintptr(unsafe.Pointer(objId)), uintptr(countExtensions), uintptr(unsafe.Pointer(extensions)))\n\tret = (*CertExtension)(unsafe.Pointer(r0))\n\treturn\n}\n\nfunc CertFreeCertificateChain(ctx *CertChainContext) {\n\tsyscall.SyscallN(procCertFreeCertificateChain.Addr(), uintptr(unsafe.Pointer(ctx)))\n\treturn\n}\n\nfunc CertFreeCertificateContext(ctx *CertContext) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCertFreeCertificateContext.Addr(), uintptr(unsafe.Pointer(ctx)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CertGetCertificateChain(engine Handle, leaf *CertContext, time *Filetime, additionalStore Handle, para *CertChainPara, flags uint32, reserved uintptr, chainCtx **CertChainContext) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCertGetCertificateChain.Addr(), uintptr(engine), uintptr(unsafe.Pointer(leaf)), uintptr(unsafe.Pointer(time)), uintptr(additionalStore), uintptr(unsafe.Pointer(para)), uintptr(flags), uintptr(reserved), uintptr(unsafe.Pointer(chainCtx)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CertGetNameString(certContext *CertContext, nameType uint32, flags uint32, typePara unsafe.Pointer, name *uint16, size uint32) (chars uint32) {\n\tr0, _, _ := syscall.SyscallN(procCertGetNameStringW.Addr(), uintptr(unsafe.Pointer(certContext)), uintptr(nameType), uintptr(flags), uintptr(typePara), uintptr(unsafe.Pointer(name)), uintptr(size))\n\tchars = uint32(r0)\n\treturn\n}\n\nfunc CertOpenStore(storeProvider uintptr, msgAndCertEncodingType uint32, cryptProv uintptr, flags uint32, para uintptr) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procCertOpenStore.Addr(), uintptr(storeProvider), uintptr(msgAndCertEncodingType), uintptr(cryptProv), uintptr(flags), uintptr(para))\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CertOpenSystemStore(hprov Handle, name *uint16) (store Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procCertOpenSystemStoreW.Addr(), uintptr(hprov), uintptr(unsafe.Pointer(name)))\n\tstore = Handle(r0)\n\tif store == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CertVerifyCertificateChainPolicy(policyOID uintptr, chain *CertChainContext, para *CertChainPolicyPara, status *CertChainPolicyStatus) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCertVerifyCertificateChainPolicy.Addr(), uintptr(policyOID), uintptr(unsafe.Pointer(chain)), uintptr(unsafe.Pointer(para)), uintptr(unsafe.Pointer(status)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CryptAcquireCertificatePrivateKey(cert *CertContext, flags uint32, parameters unsafe.Pointer, cryptProvOrNCryptKey *Handle, keySpec *uint32, callerFreeProvOrNCryptKey *bool) (err error) {\n\tvar _p0 uint32\n\tif *callerFreeProvOrNCryptKey {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procCryptAcquireCertificatePrivateKey.Addr(), uintptr(unsafe.Pointer(cert)), uintptr(flags), uintptr(parameters), uintptr(unsafe.Pointer(cryptProvOrNCryptKey)), uintptr(unsafe.Pointer(keySpec)), uintptr(unsafe.Pointer(&_p0)))\n\t*callerFreeProvOrNCryptKey = _p0 != 0\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CryptDecodeObject(encodingType uint32, structType *byte, encodedBytes *byte, lenEncodedBytes uint32, flags uint32, decoded unsafe.Pointer, decodedLen *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCryptDecodeObject.Addr(), uintptr(encodingType), uintptr(unsafe.Pointer(structType)), uintptr(unsafe.Pointer(encodedBytes)), uintptr(lenEncodedBytes), uintptr(flags), uintptr(decoded), uintptr(unsafe.Pointer(decodedLen)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CryptProtectData(dataIn *DataBlob, name *uint16, optionalEntropy *DataBlob, reserved uintptr, promptStruct *CryptProtectPromptStruct, flags uint32, dataOut *DataBlob) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCryptProtectData.Addr(), uintptr(unsafe.Pointer(dataIn)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(optionalEntropy)), uintptr(reserved), uintptr(unsafe.Pointer(promptStruct)), uintptr(flags), uintptr(unsafe.Pointer(dataOut)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CryptQueryObject(objectType uint32, object unsafe.Pointer, expectedContentTypeFlags uint32, expectedFormatTypeFlags uint32, flags uint32, msgAndCertEncodingType *uint32, contentType *uint32, formatType *uint32, certStore *Handle, msg *Handle, context *unsafe.Pointer) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCryptQueryObject.Addr(), uintptr(objectType), uintptr(object), uintptr(expectedContentTypeFlags), uintptr(expectedFormatTypeFlags), uintptr(flags), uintptr(unsafe.Pointer(msgAndCertEncodingType)), uintptr(unsafe.Pointer(contentType)), uintptr(unsafe.Pointer(formatType)), uintptr(unsafe.Pointer(certStore)), uintptr(unsafe.Pointer(msg)), uintptr(unsafe.Pointer(context)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CryptUnprotectData(dataIn *DataBlob, name **uint16, optionalEntropy *DataBlob, reserved uintptr, promptStruct *CryptProtectPromptStruct, flags uint32, dataOut *DataBlob) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCryptUnprotectData.Addr(), uintptr(unsafe.Pointer(dataIn)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(optionalEntropy)), uintptr(reserved), uintptr(unsafe.Pointer(promptStruct)), uintptr(flags), uintptr(unsafe.Pointer(dataOut)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc PFXImportCertStore(pfx *CryptDataBlob, password *uint16, flags uint32) (store Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procPFXImportCertStore.Addr(), uintptr(unsafe.Pointer(pfx)), uintptr(unsafe.Pointer(password)), uintptr(flags))\n\tstore = Handle(r0)\n\tif store == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc DnsNameCompare(name1 *uint16, name2 *uint16) (same bool) {\n\tr0, _, _ := syscall.SyscallN(procDnsNameCompare_W.Addr(), uintptr(unsafe.Pointer(name1)), uintptr(unsafe.Pointer(name2)))\n\tsame = r0 != 0\n\treturn\n}\n\nfunc DnsQuery(name string, qtype uint16, options uint32, extra *byte, qrs **DNSRecord, pr *byte) (status error) {\n\tvar _p0 *uint16\n\t_p0, status = syscall.UTF16PtrFromString(name)\n\tif status != nil {\n\t\treturn\n\t}\n\treturn _DnsQuery(_p0, qtype, options, extra, qrs, pr)\n}\n\nfunc _DnsQuery(name *uint16, qtype uint16, options uint32, extra *byte, qrs **DNSRecord, pr *byte) (status error) {\n\tr0, _, _ := syscall.SyscallN(procDnsQuery_W.Addr(), uintptr(unsafe.Pointer(name)), uintptr(qtype), uintptr(options), uintptr(unsafe.Pointer(extra)), uintptr(unsafe.Pointer(qrs)), uintptr(unsafe.Pointer(pr)))\n\tif r0 != 0 {\n\t\tstatus = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc DnsRecordListFree(rl *DNSRecord, freetype uint32) {\n\tsyscall.SyscallN(procDnsRecordListFree.Addr(), uintptr(unsafe.Pointer(rl)), uintptr(freetype))\n\treturn\n}\n\nfunc DwmGetWindowAttribute(hwnd HWND, attribute uint32, value unsafe.Pointer, size uint32) (ret error) {\n\tr0, _, _ := syscall.SyscallN(procDwmGetWindowAttribute.Addr(), uintptr(hwnd), uintptr(attribute), uintptr(value), uintptr(size))\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc DwmSetWindowAttribute(hwnd HWND, attribute uint32, value unsafe.Pointer, size uint32) (ret error) {\n\tr0, _, _ := syscall.SyscallN(procDwmSetWindowAttribute.Addr(), uintptr(hwnd), uintptr(attribute), uintptr(value), uintptr(size))\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc CancelMibChangeNotify2(notificationHandle Handle) (errcode error) {\n\tr0, _, _ := syscall.SyscallN(procCancelMibChangeNotify2.Addr(), uintptr(notificationHandle))\n\tif r0 != 0 {\n\t\terrcode = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc FreeMibTable(memory unsafe.Pointer) {\n\tsyscall.SyscallN(procFreeMibTable.Addr(), uintptr(memory))\n\treturn\n}\n\nfunc GetAdaptersAddresses(family uint32, flags uint32, reserved uintptr, adapterAddresses *IpAdapterAddresses, sizePointer *uint32) (errcode error) {\n\tr0, _, _ := syscall.SyscallN(procGetAdaptersAddresses.Addr(), uintptr(family), uintptr(flags), uintptr(reserved), uintptr(unsafe.Pointer(adapterAddresses)), uintptr(unsafe.Pointer(sizePointer)))\n\tif r0 != 0 {\n\t\terrcode = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc GetAdaptersInfo(ai *IpAdapterInfo, ol *uint32) (errcode error) {\n\tr0, _, _ := syscall.SyscallN(procGetAdaptersInfo.Addr(), uintptr(unsafe.Pointer(ai)), uintptr(unsafe.Pointer(ol)))\n\tif r0 != 0 {\n\t\terrcode = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc getBestInterfaceEx(sockaddr unsafe.Pointer, pdwBestIfIndex *uint32) (errcode error) {\n\tr0, _, _ := syscall.SyscallN(procGetBestInterfaceEx.Addr(), uintptr(sockaddr), uintptr(unsafe.Pointer(pdwBestIfIndex)))\n\tif r0 != 0 {\n\t\terrcode = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc GetIfEntry(pIfRow *MibIfRow) (errcode error) {\n\tr0, _, _ := syscall.SyscallN(procGetIfEntry.Addr(), uintptr(unsafe.Pointer(pIfRow)))\n\tif r0 != 0 {\n\t\terrcode = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc GetIfEntry2Ex(level uint32, row *MibIfRow2) (errcode error) {\n\tr0, _, _ := syscall.SyscallN(procGetIfEntry2Ex.Addr(), uintptr(level), uintptr(unsafe.Pointer(row)))\n\tif r0 != 0 {\n\t\terrcode = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc GetIpForwardEntry2(row *MibIpForwardRow2) (errcode error) {\n\tr0, _, _ := syscall.SyscallN(procGetIpForwardEntry2.Addr(), uintptr(unsafe.Pointer(row)))\n\tif r0 != 0 {\n\t\terrcode = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc GetIpForwardTable2(family uint16, table **MibIpForwardTable2) (errcode error) {\n\tr0, _, _ := syscall.SyscallN(procGetIpForwardTable2.Addr(), uintptr(family), uintptr(unsafe.Pointer(table)))\n\tif r0 != 0 {\n\t\terrcode = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc GetUnicastIpAddressEntry(row *MibUnicastIpAddressRow) (errcode error) {\n\tr0, _, _ := syscall.SyscallN(procGetUnicastIpAddressEntry.Addr(), uintptr(unsafe.Pointer(row)))\n\tif r0 != 0 {\n\t\terrcode = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc NotifyIpInterfaceChange(family uint16, callback uintptr, callerContext unsafe.Pointer, initialNotification bool, notificationHandle *Handle) (errcode error) {\n\tvar _p0 uint32\n\tif initialNotification {\n\t\t_p0 = 1\n\t}\n\tr0, _, _ := syscall.SyscallN(procNotifyIpInterfaceChange.Addr(), uintptr(family), uintptr(callback), uintptr(callerContext), uintptr(_p0), uintptr(unsafe.Pointer(notificationHandle)))\n\tif r0 != 0 {\n\t\terrcode = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc NotifyRouteChange2(family uint16, callback uintptr, callerContext unsafe.Pointer, initialNotification bool, notificationHandle *Handle) (errcode error) {\n\tvar _p0 uint32\n\tif initialNotification {\n\t\t_p0 = 1\n\t}\n\tr0, _, _ := syscall.SyscallN(procNotifyRouteChange2.Addr(), uintptr(family), uintptr(callback), uintptr(callerContext), uintptr(_p0), uintptr(unsafe.Pointer(notificationHandle)))\n\tif r0 != 0 {\n\t\terrcode = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc NotifyUnicastIpAddressChange(family uint16, callback uintptr, callerContext unsafe.Pointer, initialNotification bool, notificationHandle *Handle) (errcode error) {\n\tvar _p0 uint32\n\tif initialNotification {\n\t\t_p0 = 1\n\t}\n\tr0, _, _ := syscall.SyscallN(procNotifyUnicastIpAddressChange.Addr(), uintptr(family), uintptr(callback), uintptr(callerContext), uintptr(_p0), uintptr(unsafe.Pointer(notificationHandle)))\n\tif r0 != 0 {\n\t\terrcode = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc AddDllDirectory(path *uint16) (cookie uintptr, err error) {\n\tr0, _, e1 := syscall.SyscallN(procAddDllDirectory.Addr(), uintptr(unsafe.Pointer(path)))\n\tcookie = uintptr(r0)\n\tif cookie == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc AssignProcessToJobObject(job Handle, process Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procAssignProcessToJobObject.Addr(), uintptr(job), uintptr(process))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CancelIo(s Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCancelIo.Addr(), uintptr(s))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CancelIoEx(s Handle, o *Overlapped) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCancelIoEx.Addr(), uintptr(s), uintptr(unsafe.Pointer(o)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ClearCommBreak(handle Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procClearCommBreak.Addr(), uintptr(handle))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ClearCommError(handle Handle, lpErrors *uint32, lpStat *ComStat) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procClearCommError.Addr(), uintptr(handle), uintptr(unsafe.Pointer(lpErrors)), uintptr(unsafe.Pointer(lpStat)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CloseHandle(handle Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCloseHandle.Addr(), uintptr(handle))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ClosePseudoConsole(console Handle) {\n\tsyscall.SyscallN(procClosePseudoConsole.Addr(), uintptr(console))\n\treturn\n}\n\nfunc ConnectNamedPipe(pipe Handle, overlapped *Overlapped) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procConnectNamedPipe.Addr(), uintptr(pipe), uintptr(unsafe.Pointer(overlapped)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateDirectory(path *uint16, sa *SecurityAttributes) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCreateDirectoryW.Addr(), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(sa)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateEventEx(eventAttrs *SecurityAttributes, name *uint16, flags uint32, desiredAccess uint32) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procCreateEventExW.Addr(), uintptr(unsafe.Pointer(eventAttrs)), uintptr(unsafe.Pointer(name)), uintptr(flags), uintptr(desiredAccess))\n\thandle = Handle(r0)\n\tif handle == 0 || e1 == ERROR_ALREADY_EXISTS {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateEvent(eventAttrs *SecurityAttributes, manualReset uint32, initialState uint32, name *uint16) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procCreateEventW.Addr(), uintptr(unsafe.Pointer(eventAttrs)), uintptr(manualReset), uintptr(initialState), uintptr(unsafe.Pointer(name)))\n\thandle = Handle(r0)\n\tif handle == 0 || e1 == ERROR_ALREADY_EXISTS {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateFileMapping(fhandle Handle, sa *SecurityAttributes, prot uint32, maxSizeHigh uint32, maxSizeLow uint32, name *uint16) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procCreateFileMappingW.Addr(), uintptr(fhandle), uintptr(unsafe.Pointer(sa)), uintptr(prot), uintptr(maxSizeHigh), uintptr(maxSizeLow), uintptr(unsafe.Pointer(name)))\n\thandle = Handle(r0)\n\tif handle == 0 || e1 == ERROR_ALREADY_EXISTS {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateFile(name *uint16, access uint32, mode uint32, sa *SecurityAttributes, createmode uint32, attrs uint32, templatefile Handle) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procCreateFileW.Addr(), uintptr(unsafe.Pointer(name)), uintptr(access), uintptr(mode), uintptr(unsafe.Pointer(sa)), uintptr(createmode), uintptr(attrs), uintptr(templatefile))\n\thandle = Handle(r0)\n\tif handle == InvalidHandle {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateHardLink(filename *uint16, existingfilename *uint16, reserved uintptr) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCreateHardLinkW.Addr(), uintptr(unsafe.Pointer(filename)), uintptr(unsafe.Pointer(existingfilename)), uintptr(reserved))\n\tif r1&0xff == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateIoCompletionPort(filehandle Handle, cphandle Handle, key uintptr, threadcnt uint32) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procCreateIoCompletionPort.Addr(), uintptr(filehandle), uintptr(cphandle), uintptr(key), uintptr(threadcnt))\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateJobObject(jobAttr *SecurityAttributes, name *uint16) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procCreateJobObjectW.Addr(), uintptr(unsafe.Pointer(jobAttr)), uintptr(unsafe.Pointer(name)))\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateMutexEx(mutexAttrs *SecurityAttributes, name *uint16, flags uint32, desiredAccess uint32) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procCreateMutexExW.Addr(), uintptr(unsafe.Pointer(mutexAttrs)), uintptr(unsafe.Pointer(name)), uintptr(flags), uintptr(desiredAccess))\n\thandle = Handle(r0)\n\tif handle == 0 || e1 == ERROR_ALREADY_EXISTS {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateMutex(mutexAttrs *SecurityAttributes, initialOwner bool, name *uint16) (handle Handle, err error) {\n\tvar _p0 uint32\n\tif initialOwner {\n\t\t_p0 = 1\n\t}\n\tr0, _, e1 := syscall.SyscallN(procCreateMutexW.Addr(), uintptr(unsafe.Pointer(mutexAttrs)), uintptr(_p0), uintptr(unsafe.Pointer(name)))\n\thandle = Handle(r0)\n\tif handle == 0 || e1 == ERROR_ALREADY_EXISTS {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateNamedPipe(name *uint16, flags uint32, pipeMode uint32, maxInstances uint32, outSize uint32, inSize uint32, defaultTimeout uint32, sa *SecurityAttributes) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procCreateNamedPipeW.Addr(), uintptr(unsafe.Pointer(name)), uintptr(flags), uintptr(pipeMode), uintptr(maxInstances), uintptr(outSize), uintptr(inSize), uintptr(defaultTimeout), uintptr(unsafe.Pointer(sa)))\n\thandle = Handle(r0)\n\tif handle == InvalidHandle {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreatePipe(readhandle *Handle, writehandle *Handle, sa *SecurityAttributes, size uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCreatePipe.Addr(), uintptr(unsafe.Pointer(readhandle)), uintptr(unsafe.Pointer(writehandle)), uintptr(unsafe.Pointer(sa)), uintptr(size))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateProcess(appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) {\n\tvar _p0 uint32\n\tif inheritHandles {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procCreateProcessW.Addr(), uintptr(unsafe.Pointer(appName)), uintptr(unsafe.Pointer(commandLine)), uintptr(unsafe.Pointer(procSecurity)), uintptr(unsafe.Pointer(threadSecurity)), uintptr(_p0), uintptr(creationFlags), uintptr(unsafe.Pointer(env)), uintptr(unsafe.Pointer(currentDir)), uintptr(unsafe.Pointer(startupInfo)), uintptr(unsafe.Pointer(outProcInfo)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc createPseudoConsole(size uint32, in Handle, out Handle, flags uint32, pconsole *Handle) (hr error) {\n\tr0, _, _ := syscall.SyscallN(procCreatePseudoConsole.Addr(), uintptr(size), uintptr(in), uintptr(out), uintptr(flags), uintptr(unsafe.Pointer(pconsole)))\n\tif r0 != 0 {\n\t\thr = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc CreateSymbolicLink(symlinkfilename *uint16, targetfilename *uint16, flags uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCreateSymbolicLinkW.Addr(), uintptr(unsafe.Pointer(symlinkfilename)), uintptr(unsafe.Pointer(targetfilename)), uintptr(flags))\n\tif r1&0xff == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateToolhelp32Snapshot(flags uint32, processId uint32) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procCreateToolhelp32Snapshot.Addr(), uintptr(flags), uintptr(processId))\n\thandle = Handle(r0)\n\tif handle == InvalidHandle {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc DefineDosDevice(flags uint32, deviceName *uint16, targetPath *uint16) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procDefineDosDeviceW.Addr(), uintptr(flags), uintptr(unsafe.Pointer(deviceName)), uintptr(unsafe.Pointer(targetPath)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc DeleteFile(path *uint16) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procDeleteFileW.Addr(), uintptr(unsafe.Pointer(path)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc deleteProcThreadAttributeList(attrlist *ProcThreadAttributeList) {\n\tsyscall.SyscallN(procDeleteProcThreadAttributeList.Addr(), uintptr(unsafe.Pointer(attrlist)))\n\treturn\n}\n\nfunc DeleteVolumeMountPoint(volumeMountPoint *uint16) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procDeleteVolumeMountPointW.Addr(), uintptr(unsafe.Pointer(volumeMountPoint)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc DeviceIoControl(handle Handle, ioControlCode uint32, inBuffer *byte, inBufferSize uint32, outBuffer *byte, outBufferSize uint32, bytesReturned *uint32, overlapped *Overlapped) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procDeviceIoControl.Addr(), uintptr(handle), uintptr(ioControlCode), uintptr(unsafe.Pointer(inBuffer)), uintptr(inBufferSize), uintptr(unsafe.Pointer(outBuffer)), uintptr(outBufferSize), uintptr(unsafe.Pointer(bytesReturned)), uintptr(unsafe.Pointer(overlapped)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc DisconnectNamedPipe(pipe Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procDisconnectNamedPipe.Addr(), uintptr(pipe))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc DuplicateHandle(hSourceProcessHandle Handle, hSourceHandle Handle, hTargetProcessHandle Handle, lpTargetHandle *Handle, dwDesiredAccess uint32, bInheritHandle bool, dwOptions uint32) (err error) {\n\tvar _p0 uint32\n\tif bInheritHandle {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procDuplicateHandle.Addr(), uintptr(hSourceProcessHandle), uintptr(hSourceHandle), uintptr(hTargetProcessHandle), uintptr(unsafe.Pointer(lpTargetHandle)), uintptr(dwDesiredAccess), uintptr(_p0), uintptr(dwOptions))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc EscapeCommFunction(handle Handle, dwFunc uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procEscapeCommFunction.Addr(), uintptr(handle), uintptr(dwFunc))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ExitProcess(exitcode uint32) {\n\tsyscall.SyscallN(procExitProcess.Addr(), uintptr(exitcode))\n\treturn\n}\n\nfunc ExpandEnvironmentStrings(src *uint16, dst *uint16, size uint32) (n uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procExpandEnvironmentStringsW.Addr(), uintptr(unsafe.Pointer(src)), uintptr(unsafe.Pointer(dst)), uintptr(size))\n\tn = uint32(r0)\n\tif n == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc FindClose(handle Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procFindClose.Addr(), uintptr(handle))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc FindCloseChangeNotification(handle Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procFindCloseChangeNotification.Addr(), uintptr(handle))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc FindFirstChangeNotification(path string, watchSubtree bool, notifyFilter uint32) (handle Handle, err error) {\n\tvar _p0 *uint16\n\t_p0, err = syscall.UTF16PtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\treturn _FindFirstChangeNotification(_p0, watchSubtree, notifyFilter)\n}\n\nfunc _FindFirstChangeNotification(path *uint16, watchSubtree bool, notifyFilter uint32) (handle Handle, err error) {\n\tvar _p1 uint32\n\tif watchSubtree {\n\t\t_p1 = 1\n\t}\n\tr0, _, e1 := syscall.SyscallN(procFindFirstChangeNotificationW.Addr(), uintptr(unsafe.Pointer(path)), uintptr(_p1), uintptr(notifyFilter))\n\thandle = Handle(r0)\n\tif handle == InvalidHandle {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc findFirstFile1(name *uint16, data *win32finddata1) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procFindFirstFileW.Addr(), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(data)))\n\thandle = Handle(r0)\n\tif handle == InvalidHandle {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc FindFirstVolumeMountPoint(rootPathName *uint16, volumeMountPoint *uint16, bufferLength uint32) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procFindFirstVolumeMountPointW.Addr(), uintptr(unsafe.Pointer(rootPathName)), uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(bufferLength))\n\thandle = Handle(r0)\n\tif handle == InvalidHandle {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc FindFirstVolume(volumeName *uint16, bufferLength uint32) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procFindFirstVolumeW.Addr(), uintptr(unsafe.Pointer(volumeName)), uintptr(bufferLength))\n\thandle = Handle(r0)\n\tif handle == InvalidHandle {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc FindNextChangeNotification(handle Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procFindNextChangeNotification.Addr(), uintptr(handle))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc findNextFile1(handle Handle, data *win32finddata1) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procFindNextFileW.Addr(), uintptr(handle), uintptr(unsafe.Pointer(data)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc FindNextVolumeMountPoint(findVolumeMountPoint Handle, volumeMountPoint *uint16, bufferLength uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procFindNextVolumeMountPointW.Addr(), uintptr(findVolumeMountPoint), uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(bufferLength))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc FindNextVolume(findVolume Handle, volumeName *uint16, bufferLength uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procFindNextVolumeW.Addr(), uintptr(findVolume), uintptr(unsafe.Pointer(volumeName)), uintptr(bufferLength))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc findResource(module Handle, name uintptr, resType uintptr) (resInfo Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procFindResourceW.Addr(), uintptr(module), uintptr(name), uintptr(resType))\n\tresInfo = Handle(r0)\n\tif resInfo == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc FindVolumeClose(findVolume Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procFindVolumeClose.Addr(), uintptr(findVolume))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc FindVolumeMountPointClose(findVolumeMountPoint Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procFindVolumeMountPointClose.Addr(), uintptr(findVolumeMountPoint))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc FlushConsoleInputBuffer(console Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procFlushConsoleInputBuffer.Addr(), uintptr(console))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc FlushFileBuffers(handle Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procFlushFileBuffers.Addr(), uintptr(handle))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc FlushViewOfFile(addr uintptr, length uintptr) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procFlushViewOfFile.Addr(), uintptr(addr), uintptr(length))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc FormatMessage(flags uint32, msgsrc uintptr, msgid uint32, langid uint32, buf []uint16, args *byte) (n uint32, err error) {\n\tvar _p0 *uint16\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tr0, _, e1 := syscall.SyscallN(procFormatMessageW.Addr(), uintptr(flags), uintptr(msgsrc), uintptr(msgid), uintptr(langid), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(args)))\n\tn = uint32(r0)\n\tif n == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc FreeEnvironmentStrings(envs *uint16) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procFreeEnvironmentStringsW.Addr(), uintptr(unsafe.Pointer(envs)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc FreeLibrary(handle Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procFreeLibrary.Addr(), uintptr(handle))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GenerateConsoleCtrlEvent(ctrlEvent uint32, processGroupID uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGenerateConsoleCtrlEvent.Addr(), uintptr(ctrlEvent), uintptr(processGroupID))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetACP() (acp uint32) {\n\tr0, _, _ := syscall.SyscallN(procGetACP.Addr())\n\tacp = uint32(r0)\n\treturn\n}\n\nfunc GetActiveProcessorCount(groupNumber uint16) (ret uint32) {\n\tr0, _, _ := syscall.SyscallN(procGetActiveProcessorCount.Addr(), uintptr(groupNumber))\n\tret = uint32(r0)\n\treturn\n}\n\nfunc GetCommModemStatus(handle Handle, lpModemStat *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetCommModemStatus.Addr(), uintptr(handle), uintptr(unsafe.Pointer(lpModemStat)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetCommState(handle Handle, lpDCB *DCB) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetCommState.Addr(), uintptr(handle), uintptr(unsafe.Pointer(lpDCB)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetCommTimeouts(handle Handle, timeouts *CommTimeouts) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetCommTimeouts.Addr(), uintptr(handle), uintptr(unsafe.Pointer(timeouts)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetCommandLine() (cmd *uint16) {\n\tr0, _, _ := syscall.SyscallN(procGetCommandLineW.Addr())\n\tcmd = (*uint16)(unsafe.Pointer(r0))\n\treturn\n}\n\nfunc GetComputerNameEx(nametype uint32, buf *uint16, n *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetComputerNameExW.Addr(), uintptr(nametype), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(n)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetComputerName(buf *uint16, n *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetComputerNameW.Addr(), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(n)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetConsoleCP() (cp uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetConsoleCP.Addr())\n\tcp = uint32(r0)\n\tif cp == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetConsoleMode(console Handle, mode *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetConsoleMode.Addr(), uintptr(console), uintptr(unsafe.Pointer(mode)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetConsoleOutputCP() (cp uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetConsoleOutputCP.Addr())\n\tcp = uint32(r0)\n\tif cp == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetConsoleScreenBufferInfo(console Handle, info *ConsoleScreenBufferInfo) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetConsoleScreenBufferInfo.Addr(), uintptr(console), uintptr(unsafe.Pointer(info)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetCurrentDirectory(buflen uint32, buf *uint16) (n uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetCurrentDirectoryW.Addr(), uintptr(buflen), uintptr(unsafe.Pointer(buf)))\n\tn = uint32(r0)\n\tif n == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetCurrentProcessId() (pid uint32) {\n\tr0, _, _ := syscall.SyscallN(procGetCurrentProcessId.Addr())\n\tpid = uint32(r0)\n\treturn\n}\n\nfunc GetCurrentThreadId() (id uint32) {\n\tr0, _, _ := syscall.SyscallN(procGetCurrentThreadId.Addr())\n\tid = uint32(r0)\n\treturn\n}\n\nfunc GetDiskFreeSpaceEx(directoryName *uint16, freeBytesAvailableToCaller *uint64, totalNumberOfBytes *uint64, totalNumberOfFreeBytes *uint64) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetDiskFreeSpaceExW.Addr(), uintptr(unsafe.Pointer(directoryName)), uintptr(unsafe.Pointer(freeBytesAvailableToCaller)), uintptr(unsafe.Pointer(totalNumberOfBytes)), uintptr(unsafe.Pointer(totalNumberOfFreeBytes)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetDriveType(rootPathName *uint16) (driveType uint32) {\n\tr0, _, _ := syscall.SyscallN(procGetDriveTypeW.Addr(), uintptr(unsafe.Pointer(rootPathName)))\n\tdriveType = uint32(r0)\n\treturn\n}\n\nfunc GetEnvironmentStrings() (envs *uint16, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetEnvironmentStringsW.Addr())\n\tenvs = (*uint16)(unsafe.Pointer(r0))\n\tif envs == nil {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetEnvironmentVariable(name *uint16, buffer *uint16, size uint32) (n uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetEnvironmentVariableW.Addr(), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(buffer)), uintptr(size))\n\tn = uint32(r0)\n\tif n == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetExitCodeProcess(handle Handle, exitcode *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetExitCodeProcess.Addr(), uintptr(handle), uintptr(unsafe.Pointer(exitcode)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetFileAttributesEx(name *uint16, level uint32, info *byte) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetFileAttributesExW.Addr(), uintptr(unsafe.Pointer(name)), uintptr(level), uintptr(unsafe.Pointer(info)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetFileAttributes(name *uint16) (attrs uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetFileAttributesW.Addr(), uintptr(unsafe.Pointer(name)))\n\tattrs = uint32(r0)\n\tif attrs == INVALID_FILE_ATTRIBUTES {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetFileInformationByHandle(handle Handle, data *ByHandleFileInformation) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetFileInformationByHandle.Addr(), uintptr(handle), uintptr(unsafe.Pointer(data)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetFileInformationByHandleEx(handle Handle, class uint32, outBuffer *byte, outBufferLen uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetFileInformationByHandleEx.Addr(), uintptr(handle), uintptr(class), uintptr(unsafe.Pointer(outBuffer)), uintptr(outBufferLen))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetFileTime(handle Handle, ctime *Filetime, atime *Filetime, wtime *Filetime) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetFileTime.Addr(), uintptr(handle), uintptr(unsafe.Pointer(ctime)), uintptr(unsafe.Pointer(atime)), uintptr(unsafe.Pointer(wtime)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetFileType(filehandle Handle) (n uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetFileType.Addr(), uintptr(filehandle))\n\tn = uint32(r0)\n\tif n == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetFinalPathNameByHandle(file Handle, filePath *uint16, filePathSize uint32, flags uint32) (n uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetFinalPathNameByHandleW.Addr(), uintptr(file), uintptr(unsafe.Pointer(filePath)), uintptr(filePathSize), uintptr(flags))\n\tn = uint32(r0)\n\tif n == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetFullPathName(path *uint16, buflen uint32, buf *uint16, fname **uint16) (n uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetFullPathNameW.Addr(), uintptr(unsafe.Pointer(path)), uintptr(buflen), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(fname)))\n\tn = uint32(r0)\n\tif n == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetLargePageMinimum() (size uintptr) {\n\tr0, _, _ := syscall.SyscallN(procGetLargePageMinimum.Addr())\n\tsize = uintptr(r0)\n\treturn\n}\n\nfunc GetLastError() (lasterr error) {\n\tr0, _, _ := syscall.SyscallN(procGetLastError.Addr())\n\tif r0 != 0 {\n\t\tlasterr = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc GetLogicalDriveStrings(bufferLength uint32, buffer *uint16) (n uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetLogicalDriveStringsW.Addr(), uintptr(bufferLength), uintptr(unsafe.Pointer(buffer)))\n\tn = uint32(r0)\n\tif n == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetLogicalDrives() (drivesBitMask uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetLogicalDrives.Addr())\n\tdrivesBitMask = uint32(r0)\n\tif drivesBitMask == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetLongPathName(path *uint16, buf *uint16, buflen uint32) (n uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetLongPathNameW.Addr(), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(buf)), uintptr(buflen))\n\tn = uint32(r0)\n\tif n == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetMaximumProcessorCount(groupNumber uint16) (ret uint32) {\n\tr0, _, _ := syscall.SyscallN(procGetMaximumProcessorCount.Addr(), uintptr(groupNumber))\n\tret = uint32(r0)\n\treturn\n}\n\nfunc GetModuleFileName(module Handle, filename *uint16, size uint32) (n uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetModuleFileNameW.Addr(), uintptr(module), uintptr(unsafe.Pointer(filename)), uintptr(size))\n\tn = uint32(r0)\n\tif n == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetModuleHandleEx(flags uint32, moduleName *uint16, module *Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetModuleHandleExW.Addr(), uintptr(flags), uintptr(unsafe.Pointer(moduleName)), uintptr(unsafe.Pointer(module)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetNamedPipeClientProcessId(pipe Handle, clientProcessID *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetNamedPipeClientProcessId.Addr(), uintptr(pipe), uintptr(unsafe.Pointer(clientProcessID)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetNamedPipeHandleState(pipe Handle, state *uint32, curInstances *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32, userName *uint16, maxUserNameSize uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetNamedPipeHandleStateW.Addr(), uintptr(pipe), uintptr(unsafe.Pointer(state)), uintptr(unsafe.Pointer(curInstances)), uintptr(unsafe.Pointer(maxCollectionCount)), uintptr(unsafe.Pointer(collectDataTimeout)), uintptr(unsafe.Pointer(userName)), uintptr(maxUserNameSize))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetNamedPipeInfo(pipe Handle, flags *uint32, outSize *uint32, inSize *uint32, maxInstances *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetNamedPipeInfo.Addr(), uintptr(pipe), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(outSize)), uintptr(unsafe.Pointer(inSize)), uintptr(unsafe.Pointer(maxInstances)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetNamedPipeServerProcessId(pipe Handle, serverProcessID *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetNamedPipeServerProcessId.Addr(), uintptr(pipe), uintptr(unsafe.Pointer(serverProcessID)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetNumberOfConsoleInputEvents(console Handle, numevents *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetNumberOfConsoleInputEvents.Addr(), uintptr(console), uintptr(unsafe.Pointer(numevents)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetOverlappedResult(handle Handle, overlapped *Overlapped, done *uint32, wait bool) (err error) {\n\tvar _p0 uint32\n\tif wait {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procGetOverlappedResult.Addr(), uintptr(handle), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(done)), uintptr(_p0))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetPriorityClass(process Handle) (ret uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetPriorityClass.Addr(), uintptr(process))\n\tret = uint32(r0)\n\tif ret == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetProcAddress(module Handle, procname string) (proc uintptr, err error) {\n\tvar _p0 *byte\n\t_p0, err = syscall.BytePtrFromString(procname)\n\tif err != nil {\n\t\treturn\n\t}\n\treturn _GetProcAddress(module, _p0)\n}\n\nfunc _GetProcAddress(module Handle, procname *byte) (proc uintptr, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetProcAddress.Addr(), uintptr(module), uintptr(unsafe.Pointer(procname)))\n\tproc = uintptr(r0)\n\tif proc == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetProcessId(process Handle) (id uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetProcessId.Addr(), uintptr(process))\n\tid = uint32(r0)\n\tif id == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc getProcessPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetProcessPreferredUILanguages.Addr(), uintptr(flags), uintptr(unsafe.Pointer(numLanguages)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(bufSize)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetProcessShutdownParameters(level *uint32, flags *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetProcessShutdownParameters.Addr(), uintptr(unsafe.Pointer(level)), uintptr(unsafe.Pointer(flags)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetProcessTimes(handle Handle, creationTime *Filetime, exitTime *Filetime, kernelTime *Filetime, userTime *Filetime) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetProcessTimes.Addr(), uintptr(handle), uintptr(unsafe.Pointer(creationTime)), uintptr(unsafe.Pointer(exitTime)), uintptr(unsafe.Pointer(kernelTime)), uintptr(unsafe.Pointer(userTime)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetProcessWorkingSetSizeEx(hProcess Handle, lpMinimumWorkingSetSize *uintptr, lpMaximumWorkingSetSize *uintptr, flags *uint32) {\n\tsyscall.SyscallN(procGetProcessWorkingSetSizeEx.Addr(), uintptr(hProcess), uintptr(unsafe.Pointer(lpMinimumWorkingSetSize)), uintptr(unsafe.Pointer(lpMaximumWorkingSetSize)), uintptr(unsafe.Pointer(flags)))\n\treturn\n}\n\nfunc GetQueuedCompletionStatus(cphandle Handle, qty *uint32, key *uintptr, overlapped **Overlapped, timeout uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetQueuedCompletionStatus.Addr(), uintptr(cphandle), uintptr(unsafe.Pointer(qty)), uintptr(unsafe.Pointer(key)), uintptr(unsafe.Pointer(overlapped)), uintptr(timeout))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetShortPathName(longpath *uint16, shortpath *uint16, buflen uint32) (n uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetShortPathNameW.Addr(), uintptr(unsafe.Pointer(longpath)), uintptr(unsafe.Pointer(shortpath)), uintptr(buflen))\n\tn = uint32(r0)\n\tif n == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc getStartupInfo(startupInfo *StartupInfo) {\n\tsyscall.SyscallN(procGetStartupInfoW.Addr(), uintptr(unsafe.Pointer(startupInfo)))\n\treturn\n}\n\nfunc GetStdHandle(stdhandle uint32) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetStdHandle.Addr(), uintptr(stdhandle))\n\thandle = Handle(r0)\n\tif handle == InvalidHandle {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc getSystemDirectory(dir *uint16, dirLen uint32) (len uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetSystemDirectoryW.Addr(), uintptr(unsafe.Pointer(dir)), uintptr(dirLen))\n\tlen = uint32(r0)\n\tif len == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc getSystemPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetSystemPreferredUILanguages.Addr(), uintptr(flags), uintptr(unsafe.Pointer(numLanguages)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(bufSize)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetSystemTimeAsFileTime(time *Filetime) {\n\tsyscall.SyscallN(procGetSystemTimeAsFileTime.Addr(), uintptr(unsafe.Pointer(time)))\n\treturn\n}\n\nfunc GetSystemTimePreciseAsFileTime(time *Filetime) {\n\tsyscall.SyscallN(procGetSystemTimePreciseAsFileTime.Addr(), uintptr(unsafe.Pointer(time)))\n\treturn\n}\n\nfunc getSystemWindowsDirectory(dir *uint16, dirLen uint32) (len uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetSystemWindowsDirectoryW.Addr(), uintptr(unsafe.Pointer(dir)), uintptr(dirLen))\n\tlen = uint32(r0)\n\tif len == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetTempPath(buflen uint32, buf *uint16) (n uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetTempPathW.Addr(), uintptr(buflen), uintptr(unsafe.Pointer(buf)))\n\tn = uint32(r0)\n\tif n == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc getThreadPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetThreadPreferredUILanguages.Addr(), uintptr(flags), uintptr(unsafe.Pointer(numLanguages)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(bufSize)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc getTickCount64() (ms uint64) {\n\tr0, _, _ := syscall.SyscallN(procGetTickCount64.Addr())\n\tms = uint64(r0)\n\treturn\n}\n\nfunc GetTimeZoneInformation(tzi *Timezoneinformation) (rc uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetTimeZoneInformation.Addr(), uintptr(unsafe.Pointer(tzi)))\n\trc = uint32(r0)\n\tif rc == 0xffffffff {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc getUserPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetUserPreferredUILanguages.Addr(), uintptr(flags), uintptr(unsafe.Pointer(numLanguages)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(bufSize)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetVersion() (ver uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetVersion.Addr())\n\tver = uint32(r0)\n\tif ver == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetVolumeInformationByHandle(file Handle, volumeNameBuffer *uint16, volumeNameSize uint32, volumeNameSerialNumber *uint32, maximumComponentLength *uint32, fileSystemFlags *uint32, fileSystemNameBuffer *uint16, fileSystemNameSize uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetVolumeInformationByHandleW.Addr(), uintptr(file), uintptr(unsafe.Pointer(volumeNameBuffer)), uintptr(volumeNameSize), uintptr(unsafe.Pointer(volumeNameSerialNumber)), uintptr(unsafe.Pointer(maximumComponentLength)), uintptr(unsafe.Pointer(fileSystemFlags)), uintptr(unsafe.Pointer(fileSystemNameBuffer)), uintptr(fileSystemNameSize))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetVolumeInformation(rootPathName *uint16, volumeNameBuffer *uint16, volumeNameSize uint32, volumeNameSerialNumber *uint32, maximumComponentLength *uint32, fileSystemFlags *uint32, fileSystemNameBuffer *uint16, fileSystemNameSize uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetVolumeInformationW.Addr(), uintptr(unsafe.Pointer(rootPathName)), uintptr(unsafe.Pointer(volumeNameBuffer)), uintptr(volumeNameSize), uintptr(unsafe.Pointer(volumeNameSerialNumber)), uintptr(unsafe.Pointer(maximumComponentLength)), uintptr(unsafe.Pointer(fileSystemFlags)), uintptr(unsafe.Pointer(fileSystemNameBuffer)), uintptr(fileSystemNameSize))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetVolumeNameForVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16, bufferlength uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetVolumeNameForVolumeMountPointW.Addr(), uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(unsafe.Pointer(volumeName)), uintptr(bufferlength))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetVolumePathName(fileName *uint16, volumePathName *uint16, bufferLength uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetVolumePathNameW.Addr(), uintptr(unsafe.Pointer(fileName)), uintptr(unsafe.Pointer(volumePathName)), uintptr(bufferLength))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetVolumePathNamesForVolumeName(volumeName *uint16, volumePathNames *uint16, bufferLength uint32, returnLength *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetVolumePathNamesForVolumeNameW.Addr(), uintptr(unsafe.Pointer(volumeName)), uintptr(unsafe.Pointer(volumePathNames)), uintptr(bufferLength), uintptr(unsafe.Pointer(returnLength)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc getWindowsDirectory(dir *uint16, dirLen uint32) (len uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetWindowsDirectoryW.Addr(), uintptr(unsafe.Pointer(dir)), uintptr(dirLen))\n\tlen = uint32(r0)\n\tif len == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc initializeProcThreadAttributeList(attrlist *ProcThreadAttributeList, attrcount uint32, flags uint32, size *uintptr) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procInitializeProcThreadAttributeList.Addr(), uintptr(unsafe.Pointer(attrlist)), uintptr(attrcount), uintptr(flags), uintptr(unsafe.Pointer(size)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc IsProcessorFeaturePresent(ProcessorFeature uint32) (ret bool) {\n\tr0, _, _ := syscall.SyscallN(procIsProcessorFeaturePresent.Addr(), uintptr(ProcessorFeature))\n\tret = r0 != 0\n\treturn\n}\n\nfunc IsWow64Process(handle Handle, isWow64 *bool) (err error) {\n\tvar _p0 uint32\n\tif *isWow64 {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procIsWow64Process.Addr(), uintptr(handle), uintptr(unsafe.Pointer(&_p0)))\n\t*isWow64 = _p0 != 0\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc IsWow64Process2(handle Handle, processMachine *uint16, nativeMachine *uint16) (err error) {\n\terr = procIsWow64Process2.Find()\n\tif err != nil {\n\t\treturn\n\t}\n\tr1, _, e1 := syscall.SyscallN(procIsWow64Process2.Addr(), uintptr(handle), uintptr(unsafe.Pointer(processMachine)), uintptr(unsafe.Pointer(nativeMachine)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc LoadLibraryEx(libname string, zero Handle, flags uintptr) (handle Handle, err error) {\n\tvar _p0 *uint16\n\t_p0, err = syscall.UTF16PtrFromString(libname)\n\tif err != nil {\n\t\treturn\n\t}\n\treturn _LoadLibraryEx(_p0, zero, flags)\n}\n\nfunc _LoadLibraryEx(libname *uint16, zero Handle, flags uintptr) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procLoadLibraryExW.Addr(), uintptr(unsafe.Pointer(libname)), uintptr(zero), uintptr(flags))\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc LoadLibrary(libname string) (handle Handle, err error) {\n\tvar _p0 *uint16\n\t_p0, err = syscall.UTF16PtrFromString(libname)\n\tif err != nil {\n\t\treturn\n\t}\n\treturn _LoadLibrary(_p0)\n}\n\nfunc _LoadLibrary(libname *uint16) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procLoadLibraryW.Addr(), uintptr(unsafe.Pointer(libname)))\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc LoadResource(module Handle, resInfo Handle) (resData Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procLoadResource.Addr(), uintptr(module), uintptr(resInfo))\n\tresData = Handle(r0)\n\tif resData == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc LocalAlloc(flags uint32, length uint32) (ptr uintptr, err error) {\n\tr0, _, e1 := syscall.SyscallN(procLocalAlloc.Addr(), uintptr(flags), uintptr(length))\n\tptr = uintptr(r0)\n\tif ptr == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc LocalFree(hmem Handle) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procLocalFree.Addr(), uintptr(hmem))\n\thandle = Handle(r0)\n\tif handle != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc LockFileEx(file Handle, flags uint32, reserved uint32, bytesLow uint32, bytesHigh uint32, overlapped *Overlapped) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procLockFileEx.Addr(), uintptr(file), uintptr(flags), uintptr(reserved), uintptr(bytesLow), uintptr(bytesHigh), uintptr(unsafe.Pointer(overlapped)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc LockResource(resData Handle) (addr uintptr, err error) {\n\tr0, _, e1 := syscall.SyscallN(procLockResource.Addr(), uintptr(resData))\n\taddr = uintptr(r0)\n\tif addr == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc MapViewOfFile(handle Handle, access uint32, offsetHigh uint32, offsetLow uint32, length uintptr) (addr uintptr, err error) {\n\tr0, _, e1 := syscall.SyscallN(procMapViewOfFile.Addr(), uintptr(handle), uintptr(access), uintptr(offsetHigh), uintptr(offsetLow), uintptr(length))\n\taddr = uintptr(r0)\n\tif addr == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc Module32First(snapshot Handle, moduleEntry *ModuleEntry32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procModule32FirstW.Addr(), uintptr(snapshot), uintptr(unsafe.Pointer(moduleEntry)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc Module32Next(snapshot Handle, moduleEntry *ModuleEntry32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procModule32NextW.Addr(), uintptr(snapshot), uintptr(unsafe.Pointer(moduleEntry)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc MoveFileEx(from *uint16, to *uint16, flags uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procMoveFileExW.Addr(), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(to)), uintptr(flags))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc MoveFile(from *uint16, to *uint16) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procMoveFileW.Addr(), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(to)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc MultiByteToWideChar(codePage uint32, dwFlags uint32, str *byte, nstr int32, wchar *uint16, nwchar int32) (nwrite int32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procMultiByteToWideChar.Addr(), uintptr(codePage), uintptr(dwFlags), uintptr(unsafe.Pointer(str)), uintptr(nstr), uintptr(unsafe.Pointer(wchar)), uintptr(nwchar))\n\tnwrite = int32(r0)\n\tif nwrite == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc OpenEvent(desiredAccess uint32, inheritHandle bool, name *uint16) (handle Handle, err error) {\n\tvar _p0 uint32\n\tif inheritHandle {\n\t\t_p0 = 1\n\t}\n\tr0, _, e1 := syscall.SyscallN(procOpenEventW.Addr(), uintptr(desiredAccess), uintptr(_p0), uintptr(unsafe.Pointer(name)))\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc OpenMutex(desiredAccess uint32, inheritHandle bool, name *uint16) (handle Handle, err error) {\n\tvar _p0 uint32\n\tif inheritHandle {\n\t\t_p0 = 1\n\t}\n\tr0, _, e1 := syscall.SyscallN(procOpenMutexW.Addr(), uintptr(desiredAccess), uintptr(_p0), uintptr(unsafe.Pointer(name)))\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc OpenProcess(desiredAccess uint32, inheritHandle bool, processId uint32) (handle Handle, err error) {\n\tvar _p0 uint32\n\tif inheritHandle {\n\t\t_p0 = 1\n\t}\n\tr0, _, e1 := syscall.SyscallN(procOpenProcess.Addr(), uintptr(desiredAccess), uintptr(_p0), uintptr(processId))\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc OpenThread(desiredAccess uint32, inheritHandle bool, threadId uint32) (handle Handle, err error) {\n\tvar _p0 uint32\n\tif inheritHandle {\n\t\t_p0 = 1\n\t}\n\tr0, _, e1 := syscall.SyscallN(procOpenThread.Addr(), uintptr(desiredAccess), uintptr(_p0), uintptr(threadId))\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc PostQueuedCompletionStatus(cphandle Handle, qty uint32, key uintptr, overlapped *Overlapped) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procPostQueuedCompletionStatus.Addr(), uintptr(cphandle), uintptr(qty), uintptr(key), uintptr(unsafe.Pointer(overlapped)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc Process32First(snapshot Handle, procEntry *ProcessEntry32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procProcess32FirstW.Addr(), uintptr(snapshot), uintptr(unsafe.Pointer(procEntry)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc Process32Next(snapshot Handle, procEntry *ProcessEntry32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procProcess32NextW.Addr(), uintptr(snapshot), uintptr(unsafe.Pointer(procEntry)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ProcessIdToSessionId(pid uint32, sessionid *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procProcessIdToSessionId.Addr(), uintptr(pid), uintptr(unsafe.Pointer(sessionid)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc PulseEvent(event Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procPulseEvent.Addr(), uintptr(event))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc PurgeComm(handle Handle, dwFlags uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procPurgeComm.Addr(), uintptr(handle), uintptr(dwFlags))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc QueryDosDevice(deviceName *uint16, targetPath *uint16, max uint32) (n uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procQueryDosDeviceW.Addr(), uintptr(unsafe.Pointer(deviceName)), uintptr(unsafe.Pointer(targetPath)), uintptr(max))\n\tn = uint32(r0)\n\tif n == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc QueryFullProcessImageName(proc Handle, flags uint32, exeName *uint16, size *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procQueryFullProcessImageNameW.Addr(), uintptr(proc), uintptr(flags), uintptr(unsafe.Pointer(exeName)), uintptr(unsafe.Pointer(size)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc QueryInformationJobObject(job Handle, JobObjectInformationClass int32, JobObjectInformation uintptr, JobObjectInformationLength uint32, retlen *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procQueryInformationJobObject.Addr(), uintptr(job), uintptr(JobObjectInformationClass), uintptr(JobObjectInformation), uintptr(JobObjectInformationLength), uintptr(unsafe.Pointer(retlen)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ReadConsole(console Handle, buf *uint16, toread uint32, read *uint32, inputControl *byte) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procReadConsoleW.Addr(), uintptr(console), uintptr(unsafe.Pointer(buf)), uintptr(toread), uintptr(unsafe.Pointer(read)), uintptr(unsafe.Pointer(inputControl)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ReadDirectoryChanges(handle Handle, buf *byte, buflen uint32, watchSubTree bool, mask uint32, retlen *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) {\n\tvar _p0 uint32\n\tif watchSubTree {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procReadDirectoryChangesW.Addr(), uintptr(handle), uintptr(unsafe.Pointer(buf)), uintptr(buflen), uintptr(_p0), uintptr(mask), uintptr(unsafe.Pointer(retlen)), uintptr(unsafe.Pointer(overlapped)), uintptr(completionRoutine))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc readFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tr1, _, e1 := syscall.SyscallN(procReadFile.Addr(), uintptr(handle), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(done)), uintptr(unsafe.Pointer(overlapped)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ReadProcessMemory(process Handle, baseAddress uintptr, buffer *byte, size uintptr, numberOfBytesRead *uintptr) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procReadProcessMemory.Addr(), uintptr(process), uintptr(baseAddress), uintptr(unsafe.Pointer(buffer)), uintptr(size), uintptr(unsafe.Pointer(numberOfBytesRead)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ReleaseMutex(mutex Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procReleaseMutex.Addr(), uintptr(mutex))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc RemoveDirectory(path *uint16) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procRemoveDirectoryW.Addr(), uintptr(unsafe.Pointer(path)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc RemoveDllDirectory(cookie uintptr) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procRemoveDllDirectory.Addr(), uintptr(cookie))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ResetEvent(event Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procResetEvent.Addr(), uintptr(event))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc resizePseudoConsole(pconsole Handle, size uint32) (hr error) {\n\tr0, _, _ := syscall.SyscallN(procResizePseudoConsole.Addr(), uintptr(pconsole), uintptr(size))\n\tif r0 != 0 {\n\t\thr = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc ResumeThread(thread Handle) (ret uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procResumeThread.Addr(), uintptr(thread))\n\tret = uint32(r0)\n\tif ret == 0xffffffff {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetCommBreak(handle Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetCommBreak.Addr(), uintptr(handle))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetCommMask(handle Handle, dwEvtMask uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetCommMask.Addr(), uintptr(handle), uintptr(dwEvtMask))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetCommState(handle Handle, lpDCB *DCB) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetCommState.Addr(), uintptr(handle), uintptr(unsafe.Pointer(lpDCB)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetCommTimeouts(handle Handle, timeouts *CommTimeouts) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetCommTimeouts.Addr(), uintptr(handle), uintptr(unsafe.Pointer(timeouts)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetConsoleCP(cp uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetConsoleCP.Addr(), uintptr(cp))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setConsoleCursorPosition(console Handle, position uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetConsoleCursorPosition.Addr(), uintptr(console), uintptr(position))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetConsoleMode(console Handle, mode uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetConsoleMode.Addr(), uintptr(console), uintptr(mode))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetConsoleOutputCP(cp uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetConsoleOutputCP.Addr(), uintptr(cp))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetCurrentDirectory(path *uint16) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetCurrentDirectoryW.Addr(), uintptr(unsafe.Pointer(path)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetDefaultDllDirectories(directoryFlags uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetDefaultDllDirectories.Addr(), uintptr(directoryFlags))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetDllDirectory(path string) (err error) {\n\tvar _p0 *uint16\n\t_p0, err = syscall.UTF16PtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\treturn _SetDllDirectory(_p0)\n}\n\nfunc _SetDllDirectory(path *uint16) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetDllDirectoryW.Addr(), uintptr(unsafe.Pointer(path)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetEndOfFile(handle Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetEndOfFile.Addr(), uintptr(handle))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetEnvironmentVariable(name *uint16, value *uint16) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetEnvironmentVariableW.Addr(), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(value)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetErrorMode(mode uint32) (ret uint32) {\n\tr0, _, _ := syscall.SyscallN(procSetErrorMode.Addr(), uintptr(mode))\n\tret = uint32(r0)\n\treturn\n}\n\nfunc SetEvent(event Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetEvent.Addr(), uintptr(event))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetFileAttributes(name *uint16, attrs uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetFileAttributesW.Addr(), uintptr(unsafe.Pointer(name)), uintptr(attrs))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetFileCompletionNotificationModes(handle Handle, flags uint8) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetFileCompletionNotificationModes.Addr(), uintptr(handle), uintptr(flags))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetFileInformationByHandle(handle Handle, class uint32, inBuffer *byte, inBufferLen uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetFileInformationByHandle.Addr(), uintptr(handle), uintptr(class), uintptr(unsafe.Pointer(inBuffer)), uintptr(inBufferLen))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetFilePointer(handle Handle, lowoffset int32, highoffsetptr *int32, whence uint32) (newlowoffset uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procSetFilePointer.Addr(), uintptr(handle), uintptr(lowoffset), uintptr(unsafe.Pointer(highoffsetptr)), uintptr(whence))\n\tnewlowoffset = uint32(r0)\n\tif newlowoffset == 0xffffffff {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetFileTime(handle Handle, ctime *Filetime, atime *Filetime, wtime *Filetime) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetFileTime.Addr(), uintptr(handle), uintptr(unsafe.Pointer(ctime)), uintptr(unsafe.Pointer(atime)), uintptr(unsafe.Pointer(wtime)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetFileValidData(handle Handle, validDataLength int64) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetFileValidData.Addr(), uintptr(handle), uintptr(validDataLength))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetHandleInformation(handle Handle, mask uint32, flags uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetHandleInformation.Addr(), uintptr(handle), uintptr(mask), uintptr(flags))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetInformationJobObject(job Handle, JobObjectInformationClass uint32, JobObjectInformation uintptr, JobObjectInformationLength uint32) (ret int, err error) {\n\tr0, _, e1 := syscall.SyscallN(procSetInformationJobObject.Addr(), uintptr(job), uintptr(JobObjectInformationClass), uintptr(JobObjectInformation), uintptr(JobObjectInformationLength))\n\tret = int(r0)\n\tif ret == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetNamedPipeHandleState(pipe Handle, state *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetNamedPipeHandleState.Addr(), uintptr(pipe), uintptr(unsafe.Pointer(state)), uintptr(unsafe.Pointer(maxCollectionCount)), uintptr(unsafe.Pointer(collectDataTimeout)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetPriorityClass(process Handle, priorityClass uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetPriorityClass.Addr(), uintptr(process), uintptr(priorityClass))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetProcessPriorityBoost(process Handle, disable bool) (err error) {\n\tvar _p0 uint32\n\tif disable {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procSetProcessPriorityBoost.Addr(), uintptr(process), uintptr(_p0))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetProcessShutdownParameters(level uint32, flags uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetProcessShutdownParameters.Addr(), uintptr(level), uintptr(flags))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetProcessWorkingSetSizeEx(hProcess Handle, dwMinimumWorkingSetSize uintptr, dwMaximumWorkingSetSize uintptr, flags uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetProcessWorkingSetSizeEx.Addr(), uintptr(hProcess), uintptr(dwMinimumWorkingSetSize), uintptr(dwMaximumWorkingSetSize), uintptr(flags))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetStdHandle(stdhandle uint32, handle Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetStdHandle.Addr(), uintptr(stdhandle), uintptr(handle))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetVolumeLabel(rootPathName *uint16, volumeName *uint16) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetVolumeLabelW.Addr(), uintptr(unsafe.Pointer(rootPathName)), uintptr(unsafe.Pointer(volumeName)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetVolumeMountPointW.Addr(), uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(unsafe.Pointer(volumeName)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetupComm(handle Handle, dwInQueue uint32, dwOutQueue uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupComm.Addr(), uintptr(handle), uintptr(dwInQueue), uintptr(dwOutQueue))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SizeofResource(module Handle, resInfo Handle) (size uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procSizeofResource.Addr(), uintptr(module), uintptr(resInfo))\n\tsize = uint32(r0)\n\tif size == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SleepEx(milliseconds uint32, alertable bool) (ret uint32) {\n\tvar _p0 uint32\n\tif alertable {\n\t\t_p0 = 1\n\t}\n\tr0, _, _ := syscall.SyscallN(procSleepEx.Addr(), uintptr(milliseconds), uintptr(_p0))\n\tret = uint32(r0)\n\treturn\n}\n\nfunc TerminateJobObject(job Handle, exitCode uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procTerminateJobObject.Addr(), uintptr(job), uintptr(exitCode))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc TerminateProcess(handle Handle, exitcode uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procTerminateProcess.Addr(), uintptr(handle), uintptr(exitcode))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc Thread32First(snapshot Handle, threadEntry *ThreadEntry32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procThread32First.Addr(), uintptr(snapshot), uintptr(unsafe.Pointer(threadEntry)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc Thread32Next(snapshot Handle, threadEntry *ThreadEntry32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procThread32Next.Addr(), uintptr(snapshot), uintptr(unsafe.Pointer(threadEntry)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc UnlockFileEx(file Handle, reserved uint32, bytesLow uint32, bytesHigh uint32, overlapped *Overlapped) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procUnlockFileEx.Addr(), uintptr(file), uintptr(reserved), uintptr(bytesLow), uintptr(bytesHigh), uintptr(unsafe.Pointer(overlapped)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc UnmapViewOfFile(addr uintptr) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procUnmapViewOfFile.Addr(), uintptr(addr))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc updateProcThreadAttribute(attrlist *ProcThreadAttributeList, flags uint32, attr uintptr, value unsafe.Pointer, size uintptr, prevvalue unsafe.Pointer, returnedsize *uintptr) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procUpdateProcThreadAttribute.Addr(), uintptr(unsafe.Pointer(attrlist)), uintptr(flags), uintptr(attr), uintptr(value), uintptr(size), uintptr(prevvalue), uintptr(unsafe.Pointer(returnedsize)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc VirtualAlloc(address uintptr, size uintptr, alloctype uint32, protect uint32) (value uintptr, err error) {\n\tr0, _, e1 := syscall.SyscallN(procVirtualAlloc.Addr(), uintptr(address), uintptr(size), uintptr(alloctype), uintptr(protect))\n\tvalue = uintptr(r0)\n\tif value == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc VirtualFree(address uintptr, size uintptr, freetype uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procVirtualFree.Addr(), uintptr(address), uintptr(size), uintptr(freetype))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc VirtualLock(addr uintptr, length uintptr) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procVirtualLock.Addr(), uintptr(addr), uintptr(length))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc VirtualProtect(address uintptr, size uintptr, newprotect uint32, oldprotect *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procVirtualProtect.Addr(), uintptr(address), uintptr(size), uintptr(newprotect), uintptr(unsafe.Pointer(oldprotect)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc VirtualProtectEx(process Handle, address uintptr, size uintptr, newProtect uint32, oldProtect *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procVirtualProtectEx.Addr(), uintptr(process), uintptr(address), uintptr(size), uintptr(newProtect), uintptr(unsafe.Pointer(oldProtect)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc VirtualQuery(address uintptr, buffer *MemoryBasicInformation, length uintptr) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procVirtualQuery.Addr(), uintptr(address), uintptr(unsafe.Pointer(buffer)), uintptr(length))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc VirtualQueryEx(process Handle, address uintptr, buffer *MemoryBasicInformation, length uintptr) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procVirtualQueryEx.Addr(), uintptr(process), uintptr(address), uintptr(unsafe.Pointer(buffer)), uintptr(length))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc VirtualUnlock(addr uintptr, length uintptr) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procVirtualUnlock.Addr(), uintptr(addr), uintptr(length))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WTSGetActiveConsoleSessionId() (sessionID uint32) {\n\tr0, _, _ := syscall.SyscallN(procWTSGetActiveConsoleSessionId.Addr())\n\tsessionID = uint32(r0)\n\treturn\n}\n\nfunc WaitCommEvent(handle Handle, lpEvtMask *uint32, lpOverlapped *Overlapped) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procWaitCommEvent.Addr(), uintptr(handle), uintptr(unsafe.Pointer(lpEvtMask)), uintptr(unsafe.Pointer(lpOverlapped)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc waitForMultipleObjects(count uint32, handles uintptr, waitAll bool, waitMilliseconds uint32) (event uint32, err error) {\n\tvar _p0 uint32\n\tif waitAll {\n\t\t_p0 = 1\n\t}\n\tr0, _, e1 := syscall.SyscallN(procWaitForMultipleObjects.Addr(), uintptr(count), uintptr(handles), uintptr(_p0), uintptr(waitMilliseconds))\n\tevent = uint32(r0)\n\tif event == 0xffffffff {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WaitForSingleObject(handle Handle, waitMilliseconds uint32) (event uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procWaitForSingleObject.Addr(), uintptr(handle), uintptr(waitMilliseconds))\n\tevent = uint32(r0)\n\tif event == 0xffffffff {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WriteConsole(console Handle, buf *uint16, towrite uint32, written *uint32, reserved *byte) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procWriteConsoleW.Addr(), uintptr(console), uintptr(unsafe.Pointer(buf)), uintptr(towrite), uintptr(unsafe.Pointer(written)), uintptr(unsafe.Pointer(reserved)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc writeFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tr1, _, e1 := syscall.SyscallN(procWriteFile.Addr(), uintptr(handle), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(done)), uintptr(unsafe.Pointer(overlapped)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WriteProcessMemory(process Handle, baseAddress uintptr, buffer *byte, size uintptr, numberOfBytesWritten *uintptr) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procWriteProcessMemory.Addr(), uintptr(process), uintptr(baseAddress), uintptr(unsafe.Pointer(buffer)), uintptr(size), uintptr(unsafe.Pointer(numberOfBytesWritten)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc AcceptEx(ls Handle, as Handle, buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, recvd *uint32, overlapped *Overlapped) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procAcceptEx.Addr(), uintptr(ls), uintptr(as), uintptr(unsafe.Pointer(buf)), uintptr(rxdatalen), uintptr(laddrlen), uintptr(raddrlen), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(overlapped)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetAcceptExSockaddrs(buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, lrsa **RawSockaddrAny, lrsalen *int32, rrsa **RawSockaddrAny, rrsalen *int32) {\n\tsyscall.SyscallN(procGetAcceptExSockaddrs.Addr(), uintptr(unsafe.Pointer(buf)), uintptr(rxdatalen), uintptr(laddrlen), uintptr(raddrlen), uintptr(unsafe.Pointer(lrsa)), uintptr(unsafe.Pointer(lrsalen)), uintptr(unsafe.Pointer(rrsa)), uintptr(unsafe.Pointer(rrsalen)))\n\treturn\n}\n\nfunc TransmitFile(s Handle, handle Handle, bytesToWrite uint32, bytsPerSend uint32, overlapped *Overlapped, transmitFileBuf *TransmitFileBuffers, flags uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procTransmitFile.Addr(), uintptr(s), uintptr(handle), uintptr(bytesToWrite), uintptr(bytsPerSend), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(transmitFileBuf)), uintptr(flags))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc NetApiBufferFree(buf *byte) (neterr error) {\n\tr0, _, _ := syscall.SyscallN(procNetApiBufferFree.Addr(), uintptr(unsafe.Pointer(buf)))\n\tif r0 != 0 {\n\t\tneterr = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc NetGetJoinInformation(server *uint16, name **uint16, bufType *uint32) (neterr error) {\n\tr0, _, _ := syscall.SyscallN(procNetGetJoinInformation.Addr(), uintptr(unsafe.Pointer(server)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(bufType)))\n\tif r0 != 0 {\n\t\tneterr = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc NetUserEnum(serverName *uint16, level uint32, filter uint32, buf **byte, prefMaxLen uint32, entriesRead *uint32, totalEntries *uint32, resumeHandle *uint32) (neterr error) {\n\tr0, _, _ := syscall.SyscallN(procNetUserEnum.Addr(), uintptr(unsafe.Pointer(serverName)), uintptr(level), uintptr(filter), uintptr(unsafe.Pointer(buf)), uintptr(prefMaxLen), uintptr(unsafe.Pointer(entriesRead)), uintptr(unsafe.Pointer(totalEntries)), uintptr(unsafe.Pointer(resumeHandle)))\n\tif r0 != 0 {\n\t\tneterr = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc NetUserGetInfo(serverName *uint16, userName *uint16, level uint32, buf **byte) (neterr error) {\n\tr0, _, _ := syscall.SyscallN(procNetUserGetInfo.Addr(), uintptr(unsafe.Pointer(serverName)), uintptr(unsafe.Pointer(userName)), uintptr(level), uintptr(unsafe.Pointer(buf)))\n\tif r0 != 0 {\n\t\tneterr = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc NtCreateFile(handle *Handle, access uint32, oa *OBJECT_ATTRIBUTES, iosb *IO_STATUS_BLOCK, allocationSize *int64, attributes uint32, share uint32, disposition uint32, options uint32, eabuffer uintptr, ealength uint32) (ntstatus error) {\n\tr0, _, _ := syscall.SyscallN(procNtCreateFile.Addr(), uintptr(unsafe.Pointer(handle)), uintptr(access), uintptr(unsafe.Pointer(oa)), uintptr(unsafe.Pointer(iosb)), uintptr(unsafe.Pointer(allocationSize)), uintptr(attributes), uintptr(share), uintptr(disposition), uintptr(options), uintptr(eabuffer), uintptr(ealength))\n\tif r0 != 0 {\n\t\tntstatus = NTStatus(r0)\n\t}\n\treturn\n}\n\nfunc NtCreateNamedPipeFile(pipe *Handle, access uint32, oa *OBJECT_ATTRIBUTES, iosb *IO_STATUS_BLOCK, share uint32, disposition uint32, options uint32, typ uint32, readMode uint32, completionMode uint32, maxInstances uint32, inboundQuota uint32, outputQuota uint32, timeout *int64) (ntstatus error) {\n\tr0, _, _ := syscall.SyscallN(procNtCreateNamedPipeFile.Addr(), uintptr(unsafe.Pointer(pipe)), uintptr(access), uintptr(unsafe.Pointer(oa)), uintptr(unsafe.Pointer(iosb)), uintptr(share), uintptr(disposition), uintptr(options), uintptr(typ), uintptr(readMode), uintptr(completionMode), uintptr(maxInstances), uintptr(inboundQuota), uintptr(outputQuota), uintptr(unsafe.Pointer(timeout)))\n\tif r0 != 0 {\n\t\tntstatus = NTStatus(r0)\n\t}\n\treturn\n}\n\nfunc NtQueryInformationProcess(proc Handle, procInfoClass int32, procInfo unsafe.Pointer, procInfoLen uint32, retLen *uint32) (ntstatus error) {\n\tr0, _, _ := syscall.SyscallN(procNtQueryInformationProcess.Addr(), uintptr(proc), uintptr(procInfoClass), uintptr(procInfo), uintptr(procInfoLen), uintptr(unsafe.Pointer(retLen)))\n\tif r0 != 0 {\n\t\tntstatus = NTStatus(r0)\n\t}\n\treturn\n}\n\nfunc NtQuerySystemInformation(sysInfoClass int32, sysInfo unsafe.Pointer, sysInfoLen uint32, retLen *uint32) (ntstatus error) {\n\tr0, _, _ := syscall.SyscallN(procNtQuerySystemInformation.Addr(), uintptr(sysInfoClass), uintptr(sysInfo), uintptr(sysInfoLen), uintptr(unsafe.Pointer(retLen)))\n\tif r0 != 0 {\n\t\tntstatus = NTStatus(r0)\n\t}\n\treturn\n}\n\nfunc NtSetInformationFile(handle Handle, iosb *IO_STATUS_BLOCK, inBuffer *byte, inBufferLen uint32, class uint32) (ntstatus error) {\n\tr0, _, _ := syscall.SyscallN(procNtSetInformationFile.Addr(), uintptr(handle), uintptr(unsafe.Pointer(iosb)), uintptr(unsafe.Pointer(inBuffer)), uintptr(inBufferLen), uintptr(class))\n\tif r0 != 0 {\n\t\tntstatus = NTStatus(r0)\n\t}\n\treturn\n}\n\nfunc NtSetInformationProcess(proc Handle, procInfoClass int32, procInfo unsafe.Pointer, procInfoLen uint32) (ntstatus error) {\n\tr0, _, _ := syscall.SyscallN(procNtSetInformationProcess.Addr(), uintptr(proc), uintptr(procInfoClass), uintptr(procInfo), uintptr(procInfoLen))\n\tif r0 != 0 {\n\t\tntstatus = NTStatus(r0)\n\t}\n\treturn\n}\n\nfunc NtSetSystemInformation(sysInfoClass int32, sysInfo unsafe.Pointer, sysInfoLen uint32) (ntstatus error) {\n\tr0, _, _ := syscall.SyscallN(procNtSetSystemInformation.Addr(), uintptr(sysInfoClass), uintptr(sysInfo), uintptr(sysInfoLen))\n\tif r0 != 0 {\n\t\tntstatus = NTStatus(r0)\n\t}\n\treturn\n}\n\nfunc RtlAddFunctionTable(functionTable *RUNTIME_FUNCTION, entryCount uint32, baseAddress uintptr) (ret bool) {\n\tr0, _, _ := syscall.SyscallN(procRtlAddFunctionTable.Addr(), uintptr(unsafe.Pointer(functionTable)), uintptr(entryCount), uintptr(baseAddress))\n\tret = r0 != 0\n\treturn\n}\n\nfunc RtlDefaultNpAcl(acl **ACL) (ntstatus error) {\n\tr0, _, _ := syscall.SyscallN(procRtlDefaultNpAcl.Addr(), uintptr(unsafe.Pointer(acl)))\n\tif r0 != 0 {\n\t\tntstatus = NTStatus(r0)\n\t}\n\treturn\n}\n\nfunc RtlDeleteFunctionTable(functionTable *RUNTIME_FUNCTION) (ret bool) {\n\tr0, _, _ := syscall.SyscallN(procRtlDeleteFunctionTable.Addr(), uintptr(unsafe.Pointer(functionTable)))\n\tret = r0 != 0\n\treturn\n}\n\nfunc RtlDosPathNameToNtPathName(dosName *uint16, ntName *NTUnicodeString, ntFileNamePart *uint16, relativeName *RTL_RELATIVE_NAME) (ntstatus error) {\n\tr0, _, _ := syscall.SyscallN(procRtlDosPathNameToNtPathName_U_WithStatus.Addr(), uintptr(unsafe.Pointer(dosName)), uintptr(unsafe.Pointer(ntName)), uintptr(unsafe.Pointer(ntFileNamePart)), uintptr(unsafe.Pointer(relativeName)))\n\tif r0 != 0 {\n\t\tntstatus = NTStatus(r0)\n\t}\n\treturn\n}\n\nfunc RtlDosPathNameToRelativeNtPathName(dosName *uint16, ntName *NTUnicodeString, ntFileNamePart *uint16, relativeName *RTL_RELATIVE_NAME) (ntstatus error) {\n\tr0, _, _ := syscall.SyscallN(procRtlDosPathNameToRelativeNtPathName_U_WithStatus.Addr(), uintptr(unsafe.Pointer(dosName)), uintptr(unsafe.Pointer(ntName)), uintptr(unsafe.Pointer(ntFileNamePart)), uintptr(unsafe.Pointer(relativeName)))\n\tif r0 != 0 {\n\t\tntstatus = NTStatus(r0)\n\t}\n\treturn\n}\n\nfunc RtlGetCurrentPeb() (peb *PEB) {\n\tr0, _, _ := syscall.SyscallN(procRtlGetCurrentPeb.Addr())\n\tpeb = (*PEB)(unsafe.Pointer(r0))\n\treturn\n}\n\nfunc rtlGetNtVersionNumbers(majorVersion *uint32, minorVersion *uint32, buildNumber *uint32) {\n\tsyscall.SyscallN(procRtlGetNtVersionNumbers.Addr(), uintptr(unsafe.Pointer(majorVersion)), uintptr(unsafe.Pointer(minorVersion)), uintptr(unsafe.Pointer(buildNumber)))\n\treturn\n}\n\nfunc rtlGetVersion(info *OsVersionInfoEx) (ntstatus error) {\n\tr0, _, _ := syscall.SyscallN(procRtlGetVersion.Addr(), uintptr(unsafe.Pointer(info)))\n\tif r0 != 0 {\n\t\tntstatus = NTStatus(r0)\n\t}\n\treturn\n}\n\nfunc RtlInitString(destinationString *NTString, sourceString *byte) {\n\tsyscall.SyscallN(procRtlInitString.Addr(), uintptr(unsafe.Pointer(destinationString)), uintptr(unsafe.Pointer(sourceString)))\n\treturn\n}\n\nfunc RtlInitUnicodeString(destinationString *NTUnicodeString, sourceString *uint16) {\n\tsyscall.SyscallN(procRtlInitUnicodeString.Addr(), uintptr(unsafe.Pointer(destinationString)), uintptr(unsafe.Pointer(sourceString)))\n\treturn\n}\n\nfunc rtlNtStatusToDosErrorNoTeb(ntstatus NTStatus) (ret syscall.Errno) {\n\tr0, _, _ := syscall.SyscallN(procRtlNtStatusToDosErrorNoTeb.Addr(), uintptr(ntstatus))\n\tret = syscall.Errno(r0)\n\treturn\n}\n\nfunc clsidFromString(lpsz *uint16, pclsid *GUID) (ret error) {\n\tr0, _, _ := syscall.SyscallN(procCLSIDFromString.Addr(), uintptr(unsafe.Pointer(lpsz)), uintptr(unsafe.Pointer(pclsid)))\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc coCreateGuid(pguid *GUID) (ret error) {\n\tr0, _, _ := syscall.SyscallN(procCoCreateGuid.Addr(), uintptr(unsafe.Pointer(pguid)))\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc CoGetObject(name *uint16, bindOpts *BIND_OPTS3, guid *GUID, functionTable **uintptr) (ret error) {\n\tr0, _, _ := syscall.SyscallN(procCoGetObject.Addr(), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(bindOpts)), uintptr(unsafe.Pointer(guid)), uintptr(unsafe.Pointer(functionTable)))\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc CoInitializeEx(reserved uintptr, coInit uint32) (ret error) {\n\tr0, _, _ := syscall.SyscallN(procCoInitializeEx.Addr(), uintptr(reserved), uintptr(coInit))\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc CoTaskMemFree(address unsafe.Pointer) {\n\tsyscall.SyscallN(procCoTaskMemFree.Addr(), uintptr(address))\n\treturn\n}\n\nfunc CoUninitialize() {\n\tsyscall.SyscallN(procCoUninitialize.Addr())\n\treturn\n}\n\nfunc stringFromGUID2(rguid *GUID, lpsz *uint16, cchMax int32) (chars int32) {\n\tr0, _, _ := syscall.SyscallN(procStringFromGUID2.Addr(), uintptr(unsafe.Pointer(rguid)), uintptr(unsafe.Pointer(lpsz)), uintptr(cchMax))\n\tchars = int32(r0)\n\treturn\n}\n\nfunc EnumProcessModules(process Handle, module *Handle, cb uint32, cbNeeded *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procEnumProcessModules.Addr(), uintptr(process), uintptr(unsafe.Pointer(module)), uintptr(cb), uintptr(unsafe.Pointer(cbNeeded)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc EnumProcessModulesEx(process Handle, module *Handle, cb uint32, cbNeeded *uint32, filterFlag uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procEnumProcessModulesEx.Addr(), uintptr(process), uintptr(unsafe.Pointer(module)), uintptr(cb), uintptr(unsafe.Pointer(cbNeeded)), uintptr(filterFlag))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc enumProcesses(processIds *uint32, nSize uint32, bytesReturned *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procEnumProcesses.Addr(), uintptr(unsafe.Pointer(processIds)), uintptr(nSize), uintptr(unsafe.Pointer(bytesReturned)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetModuleBaseName(process Handle, module Handle, baseName *uint16, size uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetModuleBaseNameW.Addr(), uintptr(process), uintptr(module), uintptr(unsafe.Pointer(baseName)), uintptr(size))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetModuleFileNameEx(process Handle, module Handle, filename *uint16, size uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetModuleFileNameExW.Addr(), uintptr(process), uintptr(module), uintptr(unsafe.Pointer(filename)), uintptr(size))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetModuleInformation(process Handle, module Handle, modinfo *ModuleInfo, cb uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetModuleInformation.Addr(), uintptr(process), uintptr(module), uintptr(unsafe.Pointer(modinfo)), uintptr(cb))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc QueryWorkingSetEx(process Handle, pv uintptr, cb uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procQueryWorkingSetEx.Addr(), uintptr(process), uintptr(pv), uintptr(cb))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SubscribeServiceChangeNotifications(service Handle, eventType uint32, callback uintptr, callbackCtx uintptr, subscription *uintptr) (ret error) {\n\tret = procSubscribeServiceChangeNotifications.Find()\n\tif ret != nil {\n\t\treturn\n\t}\n\tr0, _, _ := syscall.SyscallN(procSubscribeServiceChangeNotifications.Addr(), uintptr(service), uintptr(eventType), uintptr(callback), uintptr(callbackCtx), uintptr(unsafe.Pointer(subscription)))\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc UnsubscribeServiceChangeNotifications(subscription uintptr) (err error) {\n\terr = procUnsubscribeServiceChangeNotifications.Find()\n\tif err != nil {\n\t\treturn\n\t}\n\tsyscall.SyscallN(procUnsubscribeServiceChangeNotifications.Addr(), uintptr(subscription))\n\treturn\n}\n\nfunc GetUserNameEx(nameFormat uint32, nameBuffre *uint16, nSize *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetUserNameExW.Addr(), uintptr(nameFormat), uintptr(unsafe.Pointer(nameBuffre)), uintptr(unsafe.Pointer(nSize)))\n\tif r1&0xff == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc TranslateName(accName *uint16, accNameFormat uint32, desiredNameFormat uint32, translatedName *uint16, nSize *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procTranslateNameW.Addr(), uintptr(unsafe.Pointer(accName)), uintptr(accNameFormat), uintptr(desiredNameFormat), uintptr(unsafe.Pointer(translatedName)), uintptr(unsafe.Pointer(nSize)))\n\tif r1&0xff == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetupDiBuildDriverInfoList(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverType SPDIT) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiBuildDriverInfoList.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(driverType))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetupDiCallClassInstaller(installFunction DI_FUNCTION, deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiCallClassInstaller.Addr(), uintptr(installFunction), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetupDiCancelDriverInfoSearch(deviceInfoSet DevInfo) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiCancelDriverInfoSearch.Addr(), uintptr(deviceInfoSet))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiClassGuidsFromNameEx(className *uint16, classGuidList *GUID, classGuidListSize uint32, requiredSize *uint32, machineName *uint16, reserved uintptr) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiClassGuidsFromNameExW.Addr(), uintptr(unsafe.Pointer(className)), uintptr(unsafe.Pointer(classGuidList)), uintptr(classGuidListSize), uintptr(unsafe.Pointer(requiredSize)), uintptr(unsafe.Pointer(machineName)), uintptr(reserved))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiClassNameFromGuidEx(classGUID *GUID, className *uint16, classNameSize uint32, requiredSize *uint32, machineName *uint16, reserved uintptr) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiClassNameFromGuidExW.Addr(), uintptr(unsafe.Pointer(classGUID)), uintptr(unsafe.Pointer(className)), uintptr(classNameSize), uintptr(unsafe.Pointer(requiredSize)), uintptr(unsafe.Pointer(machineName)), uintptr(reserved))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiCreateDeviceInfoListEx(classGUID *GUID, hwndParent uintptr, machineName *uint16, reserved uintptr) (handle DevInfo, err error) {\n\tr0, _, e1 := syscall.SyscallN(procSetupDiCreateDeviceInfoListExW.Addr(), uintptr(unsafe.Pointer(classGUID)), uintptr(hwndParent), uintptr(unsafe.Pointer(machineName)), uintptr(reserved))\n\thandle = DevInfo(r0)\n\tif handle == DevInfo(InvalidHandle) {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiCreateDeviceInfo(deviceInfoSet DevInfo, DeviceName *uint16, classGUID *GUID, DeviceDescription *uint16, hwndParent uintptr, CreationFlags DICD, deviceInfoData *DevInfoData) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiCreateDeviceInfoW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(DeviceName)), uintptr(unsafe.Pointer(classGUID)), uintptr(unsafe.Pointer(DeviceDescription)), uintptr(hwndParent), uintptr(CreationFlags), uintptr(unsafe.Pointer(deviceInfoData)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetupDiDestroyDeviceInfoList(deviceInfoSet DevInfo) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiDestroyDeviceInfoList.Addr(), uintptr(deviceInfoSet))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetupDiDestroyDriverInfoList(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverType SPDIT) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiDestroyDriverInfoList.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(driverType))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiEnumDeviceInfo(deviceInfoSet DevInfo, memberIndex uint32, deviceInfoData *DevInfoData) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiEnumDeviceInfo.Addr(), uintptr(deviceInfoSet), uintptr(memberIndex), uintptr(unsafe.Pointer(deviceInfoData)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiEnumDriverInfo(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverType SPDIT, memberIndex uint32, driverInfoData *DrvInfoData) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiEnumDriverInfoW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(driverType), uintptr(memberIndex), uintptr(unsafe.Pointer(driverInfoData)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiGetClassDevsEx(classGUID *GUID, Enumerator *uint16, hwndParent uintptr, Flags DIGCF, deviceInfoSet DevInfo, machineName *uint16, reserved uintptr) (handle DevInfo, err error) {\n\tr0, _, e1 := syscall.SyscallN(procSetupDiGetClassDevsExW.Addr(), uintptr(unsafe.Pointer(classGUID)), uintptr(unsafe.Pointer(Enumerator)), uintptr(hwndParent), uintptr(Flags), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(machineName)), uintptr(reserved))\n\thandle = DevInfo(r0)\n\tif handle == DevInfo(InvalidHandle) {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetupDiGetClassInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, classInstallParams *ClassInstallHeader, classInstallParamsSize uint32, requiredSize *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiGetClassInstallParamsW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(classInstallParams)), uintptr(classInstallParamsSize), uintptr(unsafe.Pointer(requiredSize)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiGetDeviceInfoListDetail(deviceInfoSet DevInfo, deviceInfoSetDetailData *DevInfoListDetailData) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiGetDeviceInfoListDetailW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoSetDetailData)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiGetDeviceInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, deviceInstallParams *DevInstallParams) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiGetDeviceInstallParamsW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(deviceInstallParams)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiGetDeviceInstanceId(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, instanceId *uint16, instanceIdSize uint32, instanceIdRequiredSize *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiGetDeviceInstanceIdW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(instanceId)), uintptr(instanceIdSize), uintptr(unsafe.Pointer(instanceIdRequiredSize)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiGetDeviceProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, propertyKey *DEVPROPKEY, propertyType *DEVPROPTYPE, propertyBuffer *byte, propertyBufferSize uint32, requiredSize *uint32, flags uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiGetDevicePropertyW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(propertyKey)), uintptr(unsafe.Pointer(propertyType)), uintptr(unsafe.Pointer(propertyBuffer)), uintptr(propertyBufferSize), uintptr(unsafe.Pointer(requiredSize)), uintptr(flags))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiGetDeviceRegistryProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, property SPDRP, propertyRegDataType *uint32, propertyBuffer *byte, propertyBufferSize uint32, requiredSize *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiGetDeviceRegistryPropertyW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(property), uintptr(unsafe.Pointer(propertyRegDataType)), uintptr(unsafe.Pointer(propertyBuffer)), uintptr(propertyBufferSize), uintptr(unsafe.Pointer(requiredSize)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiGetDriverInfoDetail(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverInfoData *DrvInfoData, driverInfoDetailData *DrvInfoDetailData, driverInfoDetailDataSize uint32, requiredSize *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiGetDriverInfoDetailW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(driverInfoData)), uintptr(unsafe.Pointer(driverInfoDetailData)), uintptr(driverInfoDetailDataSize), uintptr(unsafe.Pointer(requiredSize)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiGetSelectedDevice(deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiGetSelectedDevice.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiGetSelectedDriver(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverInfoData *DrvInfoData) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiGetSelectedDriverW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(driverInfoData)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetupDiOpenDevRegKey(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, Scope DICS_FLAG, HwProfile uint32, KeyType DIREG, samDesired uint32) (key Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procSetupDiOpenDevRegKey.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(Scope), uintptr(HwProfile), uintptr(KeyType), uintptr(samDesired))\n\tkey = Handle(r0)\n\tif key == InvalidHandle {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetupDiSetClassInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, classInstallParams *ClassInstallHeader, classInstallParamsSize uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiSetClassInstallParamsW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(classInstallParams)), uintptr(classInstallParamsSize))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetupDiSetDeviceInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, deviceInstallParams *DevInstallParams) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiSetDeviceInstallParamsW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(deviceInstallParams)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiSetDeviceRegistryProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, property SPDRP, propertyBuffer *byte, propertyBufferSize uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiSetDeviceRegistryPropertyW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(property), uintptr(unsafe.Pointer(propertyBuffer)), uintptr(propertyBufferSize))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetupDiSetSelectedDevice(deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiSetSelectedDevice.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetupDiSetSelectedDriver(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverInfoData *DrvInfoData) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiSetSelectedDriverW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(driverInfoData)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupUninstallOEMInf(infFileName *uint16, flags SUOI, reserved uintptr) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupUninstallOEMInfW.Addr(), uintptr(unsafe.Pointer(infFileName)), uintptr(flags), uintptr(reserved))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc commandLineToArgv(cmd *uint16, argc *int32) (argv **uint16, err error) {\n\tr0, _, e1 := syscall.SyscallN(procCommandLineToArgvW.Addr(), uintptr(unsafe.Pointer(cmd)), uintptr(unsafe.Pointer(argc)))\n\targv = (**uint16)(unsafe.Pointer(r0))\n\tif argv == nil {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc shGetKnownFolderPath(id *KNOWNFOLDERID, flags uint32, token Token, path **uint16) (ret error) {\n\tr0, _, _ := syscall.SyscallN(procSHGetKnownFolderPath.Addr(), uintptr(unsafe.Pointer(id)), uintptr(flags), uintptr(token), uintptr(unsafe.Pointer(path)))\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc ShellExecute(hwnd Handle, verb *uint16, file *uint16, args *uint16, cwd *uint16, showCmd int32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procShellExecuteW.Addr(), uintptr(hwnd), uintptr(unsafe.Pointer(verb)), uintptr(unsafe.Pointer(file)), uintptr(unsafe.Pointer(args)), uintptr(unsafe.Pointer(cwd)), uintptr(showCmd))\n\tif r1 <= 32 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc EnumChildWindows(hwnd HWND, enumFunc uintptr, param unsafe.Pointer) {\n\tsyscall.SyscallN(procEnumChildWindows.Addr(), uintptr(hwnd), uintptr(enumFunc), uintptr(param))\n\treturn\n}\n\nfunc EnumWindows(enumFunc uintptr, param unsafe.Pointer) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procEnumWindows.Addr(), uintptr(enumFunc), uintptr(param))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ExitWindowsEx(flags uint32, reason uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procExitWindowsEx.Addr(), uintptr(flags), uintptr(reason))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetClassName(hwnd HWND, className *uint16, maxCount int32) (copied int32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetClassNameW.Addr(), uintptr(hwnd), uintptr(unsafe.Pointer(className)), uintptr(maxCount))\n\tcopied = int32(r0)\n\tif copied == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetDesktopWindow() (hwnd HWND) {\n\tr0, _, _ := syscall.SyscallN(procGetDesktopWindow.Addr())\n\thwnd = HWND(r0)\n\treturn\n}\n\nfunc GetForegroundWindow() (hwnd HWND) {\n\tr0, _, _ := syscall.SyscallN(procGetForegroundWindow.Addr())\n\thwnd = HWND(r0)\n\treturn\n}\n\nfunc GetGUIThreadInfo(thread uint32, info *GUIThreadInfo) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetGUIThreadInfo.Addr(), uintptr(thread), uintptr(unsafe.Pointer(info)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetKeyboardLayout(tid uint32) (hkl Handle) {\n\tr0, _, _ := syscall.SyscallN(procGetKeyboardLayout.Addr(), uintptr(tid))\n\thkl = Handle(r0)\n\treturn\n}\n\nfunc GetShellWindow() (shellWindow HWND) {\n\tr0, _, _ := syscall.SyscallN(procGetShellWindow.Addr())\n\tshellWindow = HWND(r0)\n\treturn\n}\n\nfunc GetWindowThreadProcessId(hwnd HWND, pid *uint32) (tid uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetWindowThreadProcessId.Addr(), uintptr(hwnd), uintptr(unsafe.Pointer(pid)))\n\ttid = uint32(r0)\n\tif tid == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc IsWindow(hwnd HWND) (isWindow bool) {\n\tr0, _, _ := syscall.SyscallN(procIsWindow.Addr(), uintptr(hwnd))\n\tisWindow = r0 != 0\n\treturn\n}\n\nfunc IsWindowUnicode(hwnd HWND) (isUnicode bool) {\n\tr0, _, _ := syscall.SyscallN(procIsWindowUnicode.Addr(), uintptr(hwnd))\n\tisUnicode = r0 != 0\n\treturn\n}\n\nfunc IsWindowVisible(hwnd HWND) (isVisible bool) {\n\tr0, _, _ := syscall.SyscallN(procIsWindowVisible.Addr(), uintptr(hwnd))\n\tisVisible = r0 != 0\n\treturn\n}\n\nfunc LoadKeyboardLayout(name *uint16, flags uint32) (hkl Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procLoadKeyboardLayoutW.Addr(), uintptr(unsafe.Pointer(name)), uintptr(flags))\n\thkl = Handle(r0)\n\tif hkl == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc MessageBox(hwnd HWND, text *uint16, caption *uint16, boxtype uint32) (ret int32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procMessageBoxW.Addr(), uintptr(hwnd), uintptr(unsafe.Pointer(text)), uintptr(unsafe.Pointer(caption)), uintptr(boxtype))\n\tret = int32(r0)\n\tif ret == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ToUnicodeEx(vkey uint32, scancode uint32, keystate *byte, pwszBuff *uint16, cchBuff int32, flags uint32, hkl Handle) (ret int32) {\n\tr0, _, _ := syscall.SyscallN(procToUnicodeEx.Addr(), uintptr(vkey), uintptr(scancode), uintptr(unsafe.Pointer(keystate)), uintptr(unsafe.Pointer(pwszBuff)), uintptr(cchBuff), uintptr(flags), uintptr(hkl))\n\tret = int32(r0)\n\treturn\n}\n\nfunc UnloadKeyboardLayout(hkl Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procUnloadKeyboardLayout.Addr(), uintptr(hkl))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateEnvironmentBlock(block **uint16, token Token, inheritExisting bool) (err error) {\n\tvar _p0 uint32\n\tif inheritExisting {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procCreateEnvironmentBlock.Addr(), uintptr(unsafe.Pointer(block)), uintptr(token), uintptr(_p0))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc DestroyEnvironmentBlock(block *uint16) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procDestroyEnvironmentBlock.Addr(), uintptr(unsafe.Pointer(block)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetUserProfileDirectory(t Token, dir *uint16, dirLen *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetUserProfileDirectoryW.Addr(), uintptr(t), uintptr(unsafe.Pointer(dir)), uintptr(unsafe.Pointer(dirLen)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetFileVersionInfoSize(filename string, zeroHandle *Handle) (bufSize uint32, err error) {\n\tvar _p0 *uint16\n\t_p0, err = syscall.UTF16PtrFromString(filename)\n\tif err != nil {\n\t\treturn\n\t}\n\treturn _GetFileVersionInfoSize(_p0, zeroHandle)\n}\n\nfunc _GetFileVersionInfoSize(filename *uint16, zeroHandle *Handle) (bufSize uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetFileVersionInfoSizeW.Addr(), uintptr(unsafe.Pointer(filename)), uintptr(unsafe.Pointer(zeroHandle)))\n\tbufSize = uint32(r0)\n\tif bufSize == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetFileVersionInfo(filename string, handle uint32, bufSize uint32, buffer unsafe.Pointer) (err error) {\n\tvar _p0 *uint16\n\t_p0, err = syscall.UTF16PtrFromString(filename)\n\tif err != nil {\n\t\treturn\n\t}\n\treturn _GetFileVersionInfo(_p0, handle, bufSize, buffer)\n}\n\nfunc _GetFileVersionInfo(filename *uint16, handle uint32, bufSize uint32, buffer unsafe.Pointer) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetFileVersionInfoW.Addr(), uintptr(unsafe.Pointer(filename)), uintptr(handle), uintptr(bufSize), uintptr(buffer))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc VerQueryValue(block unsafe.Pointer, subBlock string, pointerToBufferPointer unsafe.Pointer, bufSize *uint32) (err error) {\n\tvar _p0 *uint16\n\t_p0, err = syscall.UTF16PtrFromString(subBlock)\n\tif err != nil {\n\t\treturn\n\t}\n\treturn _VerQueryValue(block, _p0, pointerToBufferPointer, bufSize)\n}\n\nfunc _VerQueryValue(block unsafe.Pointer, subBlock *uint16, pointerToBufferPointer unsafe.Pointer, bufSize *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procVerQueryValueW.Addr(), uintptr(block), uintptr(unsafe.Pointer(subBlock)), uintptr(pointerToBufferPointer), uintptr(unsafe.Pointer(bufSize)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc TimeBeginPeriod(period uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(proctimeBeginPeriod.Addr(), uintptr(period))\n\tif r1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc TimeEndPeriod(period uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(proctimeEndPeriod.Addr(), uintptr(period))\n\tif r1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WinVerifyTrustEx(hwnd HWND, actionId *GUID, data *WinTrustData) (ret error) {\n\tr0, _, _ := syscall.SyscallN(procWinVerifyTrustEx.Addr(), uintptr(hwnd), uintptr(unsafe.Pointer(actionId)), uintptr(unsafe.Pointer(data)))\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc FreeAddrInfoW(addrinfo *AddrinfoW) {\n\tsyscall.SyscallN(procFreeAddrInfoW.Addr(), uintptr(unsafe.Pointer(addrinfo)))\n\treturn\n}\n\nfunc GetAddrInfoW(nodename *uint16, servicename *uint16, hints *AddrinfoW, result **AddrinfoW) (sockerr error) {\n\tr0, _, _ := syscall.SyscallN(procGetAddrInfoW.Addr(), uintptr(unsafe.Pointer(nodename)), uintptr(unsafe.Pointer(servicename)), uintptr(unsafe.Pointer(hints)), uintptr(unsafe.Pointer(result)))\n\tif r0 != 0 {\n\t\tsockerr = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc WSACleanup() (err error) {\n\tr1, _, e1 := syscall.SyscallN(procWSACleanup.Addr())\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WSADuplicateSocket(s Handle, processID uint32, info *WSAProtocolInfo) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procWSADuplicateSocketW.Addr(), uintptr(s), uintptr(processID), uintptr(unsafe.Pointer(info)))\n\tif r1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WSAEnumProtocols(protocols *int32, protocolBuffer *WSAProtocolInfo, bufferLength *uint32) (n int32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procWSAEnumProtocolsW.Addr(), uintptr(unsafe.Pointer(protocols)), uintptr(unsafe.Pointer(protocolBuffer)), uintptr(unsafe.Pointer(bufferLength)))\n\tn = int32(r0)\n\tif n == -1 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WSAGetOverlappedResult(h Handle, o *Overlapped, bytes *uint32, wait bool, flags *uint32) (err error) {\n\tvar _p0 uint32\n\tif wait {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procWSAGetOverlappedResult.Addr(), uintptr(h), uintptr(unsafe.Pointer(o)), uintptr(unsafe.Pointer(bytes)), uintptr(_p0), uintptr(unsafe.Pointer(flags)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WSAIoctl(s Handle, iocc uint32, inbuf *byte, cbif uint32, outbuf *byte, cbob uint32, cbbr *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procWSAIoctl.Addr(), uintptr(s), uintptr(iocc), uintptr(unsafe.Pointer(inbuf)), uintptr(cbif), uintptr(unsafe.Pointer(outbuf)), uintptr(cbob), uintptr(unsafe.Pointer(cbbr)), uintptr(unsafe.Pointer(overlapped)), uintptr(completionRoutine))\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WSALookupServiceBegin(querySet *WSAQUERYSET, flags uint32, handle *Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procWSALookupServiceBeginW.Addr(), uintptr(unsafe.Pointer(querySet)), uintptr(flags), uintptr(unsafe.Pointer(handle)))\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WSALookupServiceEnd(handle Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procWSALookupServiceEnd.Addr(), uintptr(handle))\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WSALookupServiceNext(handle Handle, flags uint32, size *int32, querySet *WSAQUERYSET) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procWSALookupServiceNextW.Addr(), uintptr(handle), uintptr(flags), uintptr(unsafe.Pointer(size)), uintptr(unsafe.Pointer(querySet)))\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WSARecv(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, overlapped *Overlapped, croutine *byte) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procWSARecv.Addr(), uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)))\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WSARecvFrom(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, from *RawSockaddrAny, fromlen *int32, overlapped *Overlapped, croutine *byte) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procWSARecvFrom.Addr(), uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)))\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WSASend(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, overlapped *Overlapped, croutine *byte) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procWSASend.Addr(), uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(sent)), uintptr(flags), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)))\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WSASendTo(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, to *RawSockaddrAny, tolen int32, overlapped *Overlapped, croutine *byte) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procWSASendTo.Addr(), uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(sent)), uintptr(flags), uintptr(unsafe.Pointer(to)), uintptr(tolen), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)))\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WSASocket(af int32, typ int32, protocol int32, protoInfo *WSAProtocolInfo, group uint32, flags uint32) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procWSASocketW.Addr(), uintptr(af), uintptr(typ), uintptr(protocol), uintptr(unsafe.Pointer(protoInfo)), uintptr(group), uintptr(flags))\n\thandle = Handle(r0)\n\tif handle == InvalidHandle {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WSAStartup(verreq uint32, data *WSAData) (sockerr error) {\n\tr0, _, _ := syscall.SyscallN(procWSAStartup.Addr(), uintptr(verreq), uintptr(unsafe.Pointer(data)))\n\tif r0 != 0 {\n\t\tsockerr = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc bind(s Handle, name unsafe.Pointer, namelen int32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procbind.Addr(), uintptr(s), uintptr(name), uintptr(namelen))\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc Closesocket(s Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procclosesocket.Addr(), uintptr(s))\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc connect(s Handle, name unsafe.Pointer, namelen int32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procconnect.Addr(), uintptr(s), uintptr(name), uintptr(namelen))\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetHostByName(name string) (h *Hostent, err error) {\n\tvar _p0 *byte\n\t_p0, err = syscall.BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\treturn _GetHostByName(_p0)\n}\n\nfunc _GetHostByName(name *byte) (h *Hostent, err error) {\n\tr0, _, e1 := syscall.SyscallN(procgethostbyname.Addr(), uintptr(unsafe.Pointer(name)))\n\th = (*Hostent)(unsafe.Pointer(r0))\n\tif h == nil {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc getpeername(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procgetpeername.Addr(), uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetProtoByName(name string) (p *Protoent, err error) {\n\tvar _p0 *byte\n\t_p0, err = syscall.BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\treturn _GetProtoByName(_p0)\n}\n\nfunc _GetProtoByName(name *byte) (p *Protoent, err error) {\n\tr0, _, e1 := syscall.SyscallN(procgetprotobyname.Addr(), uintptr(unsafe.Pointer(name)))\n\tp = (*Protoent)(unsafe.Pointer(r0))\n\tif p == nil {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetServByName(name string, proto string) (s *Servent, err error) {\n\tvar _p0 *byte\n\t_p0, err = syscall.BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = syscall.BytePtrFromString(proto)\n\tif err != nil {\n\t\treturn\n\t}\n\treturn _GetServByName(_p0, _p1)\n}\n\nfunc _GetServByName(name *byte, proto *byte) (s *Servent, err error) {\n\tr0, _, e1 := syscall.SyscallN(procgetservbyname.Addr(), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(proto)))\n\ts = (*Servent)(unsafe.Pointer(r0))\n\tif s == nil {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc getsockname(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procgetsockname.Addr(), uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc Getsockopt(s Handle, level int32, optname int32, optval *byte, optlen *int32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procgetsockopt.Addr(), uintptr(s), uintptr(level), uintptr(optname), uintptr(unsafe.Pointer(optval)), uintptr(unsafe.Pointer(optlen)))\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc listen(s Handle, backlog int32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(proclisten.Addr(), uintptr(s), uintptr(backlog))\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc Ntohs(netshort uint16) (u uint16) {\n\tr0, _, _ := syscall.SyscallN(procntohs.Addr(), uintptr(netshort))\n\tu = uint16(r0)\n\treturn\n}\n\nfunc recvfrom(s Handle, buf []byte, flags int32, from *RawSockaddrAny, fromlen *int32) (n int32, err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tr0, _, e1 := syscall.SyscallN(procrecvfrom.Addr(), uintptr(s), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int32(r0)\n\tif n == -1 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc sendto(s Handle, buf []byte, flags int32, to unsafe.Pointer, tolen int32) (err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tr1, _, e1 := syscall.SyscallN(procsendto.Addr(), uintptr(s), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(tolen))\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc Setsockopt(s Handle, level int32, optname int32, optval *byte, optlen int32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procsetsockopt.Addr(), uintptr(s), uintptr(level), uintptr(optname), uintptr(unsafe.Pointer(optval)), uintptr(optlen))\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc shutdown(s Handle, how int32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procshutdown.Addr(), uintptr(s), uintptr(how))\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc socket(af int32, typ int32, protocol int32) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procsocket.Addr(), uintptr(af), uintptr(typ), uintptr(protocol))\n\thandle = Handle(r0)\n\tif handle == InvalidHandle {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WTSEnumerateSessions(handle Handle, reserved uint32, version uint32, sessions **WTS_SESSION_INFO, count *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procWTSEnumerateSessionsW.Addr(), uintptr(handle), uintptr(reserved), uintptr(version), uintptr(unsafe.Pointer(sessions)), uintptr(unsafe.Pointer(count)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WTSFreeMemory(ptr uintptr) {\n\tsyscall.SyscallN(procWTSFreeMemory.Addr(), uintptr(ptr))\n\treturn\n}\n\nfunc WTSQueryUserToken(session uint32, token *Token) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procWTSQueryUserToken.Addr(), uintptr(session), uintptr(unsafe.Pointer(token)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/text/LICENSE",
    "content": "Copyright 2009 The Go Authors.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n   * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n   * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n   * Neither the name of Google LLC nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
  },
  {
    "path": "tests/vendor/golang.org/x/text/PATENTS",
    "content": "Additional IP Rights Grant (Patents)\n\n\"This implementation\" means the copyrightable works distributed by\nGoogle as part of the Go project.\n\nGoogle hereby grants to You a perpetual, worldwide, non-exclusive,\nno-charge, royalty-free, irrevocable (except as stated in this section)\npatent license to make, have made, use, offer to sell, sell, import,\ntransfer and otherwise run, modify and propagate the contents of this\nimplementation of Go, where such license applies only to those patent\nclaims, both currently owned or controlled by Google and acquired in\nthe future, licensable by Google that are necessarily infringed by this\nimplementation of Go.  This grant does not include claims that would be\ninfringed only as a consequence of further modification of this\nimplementation.  If you or your agent or exclusive licensee institute or\norder or agree to the institution of patent litigation against any\nentity (including a cross-claim or counterclaim in a lawsuit) alleging\nthat this implementation of Go or any code incorporated within this\nimplementation of Go constitutes direct or contributory patent\ninfringement, or inducement of patent infringement, then any patent\nrights granted to you under this License for this implementation of Go\nshall terminate as of the date such litigation is filed.\n"
  },
  {
    "path": "tests/vendor/golang.org/x/text/encoding/charmap/charmap.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:generate go run maketables.go\n\n// Package charmap provides simple character encodings such as IBM Code Page 437\n// and Windows 1252.\npackage charmap // import \"golang.org/x/text/encoding/charmap\"\n\nimport (\n\t\"unicode/utf8\"\n\n\t\"golang.org/x/text/encoding\"\n\t\"golang.org/x/text/encoding/internal\"\n\t\"golang.org/x/text/encoding/internal/identifier\"\n\t\"golang.org/x/text/transform\"\n)\n\n// These encodings vary only in the way clients should interpret them. Their\n// coded character set is identical and a single implementation can be shared.\nvar (\n\t// ISO8859_6E is the ISO 8859-6E encoding.\n\tISO8859_6E encoding.Encoding = &iso8859_6E\n\n\t// ISO8859_6I is the ISO 8859-6I encoding.\n\tISO8859_6I encoding.Encoding = &iso8859_6I\n\n\t// ISO8859_8E is the ISO 8859-8E encoding.\n\tISO8859_8E encoding.Encoding = &iso8859_8E\n\n\t// ISO8859_8I is the ISO 8859-8I encoding.\n\tISO8859_8I encoding.Encoding = &iso8859_8I\n\n\tiso8859_6E = internal.Encoding{\n\t\tEncoding: ISO8859_6,\n\t\tName:     \"ISO-8859-6E\",\n\t\tMIB:      identifier.ISO88596E,\n\t}\n\n\tiso8859_6I = internal.Encoding{\n\t\tEncoding: ISO8859_6,\n\t\tName:     \"ISO-8859-6I\",\n\t\tMIB:      identifier.ISO88596I,\n\t}\n\n\tiso8859_8E = internal.Encoding{\n\t\tEncoding: ISO8859_8,\n\t\tName:     \"ISO-8859-8E\",\n\t\tMIB:      identifier.ISO88598E,\n\t}\n\n\tiso8859_8I = internal.Encoding{\n\t\tEncoding: ISO8859_8,\n\t\tName:     \"ISO-8859-8I\",\n\t\tMIB:      identifier.ISO88598I,\n\t}\n)\n\n// All is a list of all defined encodings in this package.\nvar All []encoding.Encoding = listAll\n\n// TODO: implement these encodings, in order of importance.\n// ASCII, ISO8859_1:       Rather common. Close to Windows 1252.\n// ISO8859_9:              Close to Windows 1254.\n\n// utf8Enc holds a rune's UTF-8 encoding in data[:len].\ntype utf8Enc struct {\n\tlen  uint8\n\tdata [3]byte\n}\n\n// Charmap is an 8-bit character set encoding.\ntype Charmap struct {\n\t// name is the encoding's name.\n\tname string\n\t// mib is the encoding type of this encoder.\n\tmib identifier.MIB\n\t// asciiSuperset states whether the encoding is a superset of ASCII.\n\tasciiSuperset bool\n\t// low is the lower bound of the encoded byte for a non-ASCII rune. If\n\t// Charmap.asciiSuperset is true then this will be 0x80, otherwise 0x00.\n\tlow uint8\n\t// replacement is the encoded replacement character.\n\treplacement byte\n\t// decode is the map from encoded byte to UTF-8.\n\tdecode [256]utf8Enc\n\t// encoding is the map from runes to encoded bytes. Each entry is a\n\t// uint32: the high 8 bits are the encoded byte and the low 24 bits are\n\t// the rune. The table entries are sorted by ascending rune.\n\tencode [256]uint32\n}\n\n// NewDecoder implements the encoding.Encoding interface.\nfunc (m *Charmap) NewDecoder() *encoding.Decoder {\n\treturn &encoding.Decoder{Transformer: charmapDecoder{charmap: m}}\n}\n\n// NewEncoder implements the encoding.Encoding interface.\nfunc (m *Charmap) NewEncoder() *encoding.Encoder {\n\treturn &encoding.Encoder{Transformer: charmapEncoder{charmap: m}}\n}\n\n// String returns the Charmap's name.\nfunc (m *Charmap) String() string {\n\treturn m.name\n}\n\n// ID implements an internal interface.\nfunc (m *Charmap) ID() (mib identifier.MIB, other string) {\n\treturn m.mib, \"\"\n}\n\n// charmapDecoder implements transform.Transformer by decoding to UTF-8.\ntype charmapDecoder struct {\n\ttransform.NopResetter\n\tcharmap *Charmap\n}\n\nfunc (m charmapDecoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {\n\tfor i, c := range src {\n\t\tif m.charmap.asciiSuperset && c < utf8.RuneSelf {\n\t\t\tif nDst >= len(dst) {\n\t\t\t\terr = transform.ErrShortDst\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tdst[nDst] = c\n\t\t\tnDst++\n\t\t\tnSrc = i + 1\n\t\t\tcontinue\n\t\t}\n\n\t\tdecode := &m.charmap.decode[c]\n\t\tn := int(decode.len)\n\t\tif nDst+n > len(dst) {\n\t\t\terr = transform.ErrShortDst\n\t\t\tbreak\n\t\t}\n\t\t// It's 15% faster to avoid calling copy for these tiny slices.\n\t\tfor j := 0; j < n; j++ {\n\t\t\tdst[nDst] = decode.data[j]\n\t\t\tnDst++\n\t\t}\n\t\tnSrc = i + 1\n\t}\n\treturn nDst, nSrc, err\n}\n\n// DecodeByte returns the Charmap's rune decoding of the byte b.\nfunc (m *Charmap) DecodeByte(b byte) rune {\n\tswitch x := &m.decode[b]; x.len {\n\tcase 1:\n\t\treturn rune(x.data[0])\n\tcase 2:\n\t\treturn rune(x.data[0]&0x1f)<<6 | rune(x.data[1]&0x3f)\n\tdefault:\n\t\treturn rune(x.data[0]&0x0f)<<12 | rune(x.data[1]&0x3f)<<6 | rune(x.data[2]&0x3f)\n\t}\n}\n\n// charmapEncoder implements transform.Transformer by encoding from UTF-8.\ntype charmapEncoder struct {\n\ttransform.NopResetter\n\tcharmap *Charmap\n}\n\nfunc (m charmapEncoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {\n\tr, size := rune(0), 0\nloop:\n\tfor nSrc < len(src) {\n\t\tif nDst >= len(dst) {\n\t\t\terr = transform.ErrShortDst\n\t\t\tbreak\n\t\t}\n\t\tr = rune(src[nSrc])\n\n\t\t// Decode a 1-byte rune.\n\t\tif r < utf8.RuneSelf {\n\t\t\tif m.charmap.asciiSuperset {\n\t\t\t\tnSrc++\n\t\t\t\tdst[nDst] = uint8(r)\n\t\t\t\tnDst++\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tsize = 1\n\n\t\t} else {\n\t\t\t// Decode a multi-byte rune.\n\t\t\tr, size = utf8.DecodeRune(src[nSrc:])\n\t\t\tif size == 1 {\n\t\t\t\t// All valid runes of size 1 (those below utf8.RuneSelf) were\n\t\t\t\t// handled above. We have invalid UTF-8 or we haven't seen the\n\t\t\t\t// full character yet.\n\t\t\t\tif !atEOF && !utf8.FullRune(src[nSrc:]) {\n\t\t\t\t\terr = transform.ErrShortSrc\n\t\t\t\t} else {\n\t\t\t\t\terr = internal.RepertoireError(m.charmap.replacement)\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\t\t// Binary search in [low, high) for that rune in the m.charmap.encode table.\n\t\tfor low, high := int(m.charmap.low), 0x100; ; {\n\t\t\tif low >= high {\n\t\t\t\terr = internal.RepertoireError(m.charmap.replacement)\n\t\t\t\tbreak loop\n\t\t\t}\n\t\t\tmid := (low + high) / 2\n\t\t\tgot := m.charmap.encode[mid]\n\t\t\tgotRune := rune(got & (1<<24 - 1))\n\t\t\tif gotRune < r {\n\t\t\t\tlow = mid + 1\n\t\t\t} else if gotRune > r {\n\t\t\t\thigh = mid\n\t\t\t} else {\n\t\t\t\tdst[nDst] = byte(got >> 24)\n\t\t\t\tnDst++\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tnSrc += size\n\t}\n\treturn nDst, nSrc, err\n}\n\n// EncodeRune returns the Charmap's byte encoding of the rune r. ok is whether\n// r is in the Charmap's repertoire. If not, b is set to the Charmap's\n// replacement byte. This is often the ASCII substitute character '\\x1a'.\nfunc (m *Charmap) EncodeRune(r rune) (b byte, ok bool) {\n\tif r < utf8.RuneSelf && m.asciiSuperset {\n\t\treturn byte(r), true\n\t}\n\tfor low, high := int(m.low), 0x100; ; {\n\t\tif low >= high {\n\t\t\treturn m.replacement, false\n\t\t}\n\t\tmid := (low + high) / 2\n\t\tgot := m.encode[mid]\n\t\tgotRune := rune(got & (1<<24 - 1))\n\t\tif gotRune < r {\n\t\t\tlow = mid + 1\n\t\t} else if gotRune > r {\n\t\t\thigh = mid\n\t\t} else {\n\t\t\treturn byte(got >> 24), true\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/text/encoding/charmap/tables.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\npackage charmap\n\nimport (\n\t\"golang.org/x/text/encoding\"\n\t\"golang.org/x/text/encoding/internal/identifier\"\n)\n\n// CodePage037 is the IBM Code Page 037 encoding.\nvar CodePage037 *Charmap = &codePage037\n\nvar codePage037 = Charmap{\n\tname:          \"IBM Code Page 037\",\n\tmib:           identifier.IBM037,\n\tasciiSuperset: false,\n\tlow:           0x00,\n\treplacement:   0x3f,\n\tdecode: [256]utf8Enc{\n\t\t{1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}},\n\t\t{1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x9c, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x86, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x97, 0x00}}, {2, [3]byte{0xc2, 0x8d, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x8e, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}},\n\t\t{1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x9d, 0x00}}, {2, [3]byte{0xc2, 0x85, 0x00}},\n\t\t{1, [3]byte{0x08, 0x00, 0x00}}, {2, [3]byte{0xc2, 0x87, 0x00}},\n\t\t{1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x92, 0x00}}, {2, [3]byte{0xc2, 0x8f, 0x00}},\n\t\t{1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x80, 0x00}}, {2, [3]byte{0xc2, 0x81, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x82, 0x00}}, {2, [3]byte{0xc2, 0x83, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x84, 0x00}}, {1, [3]byte{0x0a, 0x00, 0x00}},\n\t\t{1, [3]byte{0x17, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x88, 0x00}}, {2, [3]byte{0xc2, 0x89, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x8a, 0x00}}, {2, [3]byte{0xc2, 0x8b, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x8c, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}},\n\t\t{1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x90, 0x00}}, {2, [3]byte{0xc2, 0x91, 0x00}},\n\t\t{1, [3]byte{0x16, 0x00, 0x00}}, {2, [3]byte{0xc2, 0x93, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x94, 0x00}}, {2, [3]byte{0xc2, 0x95, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x96, 0x00}}, {1, [3]byte{0x04, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x98, 0x00}}, {2, [3]byte{0xc2, 0x99, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x9a, 0x00}}, {2, [3]byte{0xc2, 0x9b, 0x00}},\n\t\t{1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x9e, 0x00}}, {1, [3]byte{0x1a, 0x00, 0x00}},\n\t\t{1, [3]byte{0x20, 0x00, 0x00}}, {2, [3]byte{0xc2, 0xa0, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0xa4, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa7, 0x00}}, {2, [3]byte{0xc3, 0xb1, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa2, 0x00}}, {1, [3]byte{0x2e, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x28, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2b, 0x00, 0x00}}, {1, [3]byte{0x7c, 0x00, 0x00}},\n\t\t{1, [3]byte{0x26, 0x00, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xac, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}},\n\t\t{1, [3]byte{0x21, 0x00, 0x00}}, {1, [3]byte{0x24, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3b, 0x00, 0x00}}, {2, [3]byte{0xc2, 0xac, 0x00}},\n\t\t{1, [3]byte{0x2d, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x84, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x83, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x87, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa6, 0x00}}, {1, [3]byte{0x2c, 0x00, 0x00}},\n\t\t{1, [3]byte{0x25, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x8c, 0x00}}, {1, [3]byte{0x60, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}},\n\t\t{1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3d, 0x00, 0x00}}, {1, [3]byte{0x22, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x98, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}},\n\t\t{1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}},\n\t\t{1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}},\n\t\t{1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}},\n\t\t{1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb0, 0x00}}, {2, [3]byte{0xc3, 0xbd, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xbe, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb0, 0x00}}, {1, [3]byte{0x6a, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6b, 0x00, 0x00}}, {1, [3]byte{0x6c, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6d, 0x00, 0x00}}, {1, [3]byte{0x6e, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6f, 0x00, 0x00}}, {1, [3]byte{0x70, 0x00, 0x00}},\n\t\t{1, [3]byte{0x71, 0x00, 0x00}}, {1, [3]byte{0x72, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xba, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xb8, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc2, 0xa4, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb5, 0x00}}, {1, [3]byte{0x7e, 0x00, 0x00}},\n\t\t{1, [3]byte{0x73, 0x00, 0x00}}, {1, [3]byte{0x74, 0x00, 0x00}},\n\t\t{1, [3]byte{0x75, 0x00, 0x00}}, {1, [3]byte{0x76, 0x00, 0x00}},\n\t\t{1, [3]byte{0x77, 0x00, 0x00}}, {1, [3]byte{0x78, 0x00, 0x00}},\n\t\t{1, [3]byte{0x79, 0x00, 0x00}}, {1, [3]byte{0x7a, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa1, 0x00}}, {2, [3]byte{0xc2, 0xbf, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x90, 0x00}}, {2, [3]byte{0xc3, 0x9d, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x9e, 0x00}}, {2, [3]byte{0xc2, 0xae, 0x00}},\n\t\t{1, [3]byte{0x5e, 0x00, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa5, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa9, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xbc, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xbd, 0x00}}, {2, [3]byte{0xc2, 0xbe, 0x00}},\n\t\t{1, [3]byte{0x5b, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xaf, 0x00}}, {2, [3]byte{0xc2, 0xa8, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}},\n\t\t{1, [3]byte{0x7b, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}},\n\t\t{1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}},\n\t\t{1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}},\n\t\t{1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}},\n\t\t{1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xad, 0x00}}, {2, [3]byte{0xc3, 0xb4, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb2, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}},\n\t\t{1, [3]byte{0x7d, 0x00, 0x00}}, {1, [3]byte{0x4a, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4b, 0x00, 0x00}}, {1, [3]byte{0x4c, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4d, 0x00, 0x00}}, {1, [3]byte{0x4e, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4f, 0x00, 0x00}}, {1, [3]byte{0x50, 0x00, 0x00}},\n\t\t{1, [3]byte{0x51, 0x00, 0x00}}, {1, [3]byte{0x52, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb9, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbf, 0x00}},\n\t\t{1, [3]byte{0x5c, 0x00, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}},\n\t\t{1, [3]byte{0x53, 0x00, 0x00}}, {1, [3]byte{0x54, 0x00, 0x00}},\n\t\t{1, [3]byte{0x55, 0x00, 0x00}}, {1, [3]byte{0x56, 0x00, 0x00}},\n\t\t{1, [3]byte{0x57, 0x00, 0x00}}, {1, [3]byte{0x58, 0x00, 0x00}},\n\t\t{1, [3]byte{0x59, 0x00, 0x00}}, {1, [3]byte{0x5a, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc3, 0x94, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x92, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x93, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}},\n\t\t{1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}},\n\t\t{1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}},\n\t\t{1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}},\n\t\t{1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}},\n\t\t{1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc2, 0x9f, 0x00}},\n\t},\n\tencode: [256]uint32{\n\t\t0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x37000004, 0x2d000005, 0x2e000006, 0x2f000007,\n\t\t0x16000008, 0x05000009, 0x2500000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f,\n\t\t0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x3c000014, 0x3d000015, 0x32000016, 0x26000017,\n\t\t0x18000018, 0x19000019, 0x3f00001a, 0x2700001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f,\n\t\t0x40000020, 0x5a000021, 0x7f000022, 0x7b000023, 0x5b000024, 0x6c000025, 0x50000026, 0x7d000027,\n\t\t0x4d000028, 0x5d000029, 0x5c00002a, 0x4e00002b, 0x6b00002c, 0x6000002d, 0x4b00002e, 0x6100002f,\n\t\t0xf0000030, 0xf1000031, 0xf2000032, 0xf3000033, 0xf4000034, 0xf5000035, 0xf6000036, 0xf7000037,\n\t\t0xf8000038, 0xf9000039, 0x7a00003a, 0x5e00003b, 0x4c00003c, 0x7e00003d, 0x6e00003e, 0x6f00003f,\n\t\t0x7c000040, 0xc1000041, 0xc2000042, 0xc3000043, 0xc4000044, 0xc5000045, 0xc6000046, 0xc7000047,\n\t\t0xc8000048, 0xc9000049, 0xd100004a, 0xd200004b, 0xd300004c, 0xd400004d, 0xd500004e, 0xd600004f,\n\t\t0xd7000050, 0xd8000051, 0xd9000052, 0xe2000053, 0xe3000054, 0xe4000055, 0xe5000056, 0xe6000057,\n\t\t0xe7000058, 0xe8000059, 0xe900005a, 0xba00005b, 0xe000005c, 0xbb00005d, 0xb000005e, 0x6d00005f,\n\t\t0x79000060, 0x81000061, 0x82000062, 0x83000063, 0x84000064, 0x85000065, 0x86000066, 0x87000067,\n\t\t0x88000068, 0x89000069, 0x9100006a, 0x9200006b, 0x9300006c, 0x9400006d, 0x9500006e, 0x9600006f,\n\t\t0x97000070, 0x98000071, 0x99000072, 0xa2000073, 0xa3000074, 0xa4000075, 0xa5000076, 0xa6000077,\n\t\t0xa7000078, 0xa8000079, 0xa900007a, 0xc000007b, 0x4f00007c, 0xd000007d, 0xa100007e, 0x0700007f,\n\t\t0x20000080, 0x21000081, 0x22000082, 0x23000083, 0x24000084, 0x15000085, 0x06000086, 0x17000087,\n\t\t0x28000088, 0x29000089, 0x2a00008a, 0x2b00008b, 0x2c00008c, 0x0900008d, 0x0a00008e, 0x1b00008f,\n\t\t0x30000090, 0x31000091, 0x1a000092, 0x33000093, 0x34000094, 0x35000095, 0x36000096, 0x08000097,\n\t\t0x38000098, 0x39000099, 0x3a00009a, 0x3b00009b, 0x0400009c, 0x1400009d, 0x3e00009e, 0xff00009f,\n\t\t0x410000a0, 0xaa0000a1, 0x4a0000a2, 0xb10000a3, 0x9f0000a4, 0xb20000a5, 0x6a0000a6, 0xb50000a7,\n\t\t0xbd0000a8, 0xb40000a9, 0x9a0000aa, 0x8a0000ab, 0x5f0000ac, 0xca0000ad, 0xaf0000ae, 0xbc0000af,\n\t\t0x900000b0, 0x8f0000b1, 0xea0000b2, 0xfa0000b3, 0xbe0000b4, 0xa00000b5, 0xb60000b6, 0xb30000b7,\n\t\t0x9d0000b8, 0xda0000b9, 0x9b0000ba, 0x8b0000bb, 0xb70000bc, 0xb80000bd, 0xb90000be, 0xab0000bf,\n\t\t0x640000c0, 0x650000c1, 0x620000c2, 0x660000c3, 0x630000c4, 0x670000c5, 0x9e0000c6, 0x680000c7,\n\t\t0x740000c8, 0x710000c9, 0x720000ca, 0x730000cb, 0x780000cc, 0x750000cd, 0x760000ce, 0x770000cf,\n\t\t0xac0000d0, 0x690000d1, 0xed0000d2, 0xee0000d3, 0xeb0000d4, 0xef0000d5, 0xec0000d6, 0xbf0000d7,\n\t\t0x800000d8, 0xfd0000d9, 0xfe0000da, 0xfb0000db, 0xfc0000dc, 0xad0000dd, 0xae0000de, 0x590000df,\n\t\t0x440000e0, 0x450000e1, 0x420000e2, 0x460000e3, 0x430000e4, 0x470000e5, 0x9c0000e6, 0x480000e7,\n\t\t0x540000e8, 0x510000e9, 0x520000ea, 0x530000eb, 0x580000ec, 0x550000ed, 0x560000ee, 0x570000ef,\n\t\t0x8c0000f0, 0x490000f1, 0xcd0000f2, 0xce0000f3, 0xcb0000f4, 0xcf0000f5, 0xcc0000f6, 0xe10000f7,\n\t\t0x700000f8, 0xdd0000f9, 0xde0000fa, 0xdb0000fb, 0xdc0000fc, 0x8d0000fd, 0x8e0000fe, 0xdf0000ff,\n\t},\n}\n\n// CodePage437 is the IBM Code Page 437 encoding.\nvar CodePage437 *Charmap = &codePage437\n\nvar codePage437 = Charmap{\n\tname:          \"IBM Code Page 437\",\n\tmib:           identifier.PC8CodePage437,\n\tasciiSuperset: true,\n\tlow:           0x80,\n\treplacement:   0x1a,\n\tdecode: [256]utf8Enc{\n\t\t{1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}},\n\t\t{1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}},\n\t\t{1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}},\n\t\t{1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}},\n\t\t{1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}},\n\t\t{1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}},\n\t\t{1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}},\n\t\t{1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}},\n\t\t{1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}},\n\t\t{1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}},\n\t\t{1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}},\n\t\t{1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}},\n\t\t{1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}},\n\t\t{1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}},\n\t\t{1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}},\n\t\t{1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}},\n\t\t{1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}},\n\t\t{1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}},\n\t\t{1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}},\n\t\t{1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}},\n\t\t{1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}},\n\t\t{1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}},\n\t\t{1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}},\n\t\t{1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}},\n\t\t{1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}},\n\t\t{1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}},\n\t\t{1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}},\n\t\t{1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}},\n\t\t{1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}},\n\t\t{1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}},\n\t\t{1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}},\n\t\t{1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}},\n\t\t{1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x87, 0x00}}, {2, [3]byte{0xc3, 0xbc, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa9, 0x00}}, {2, [3]byte{0xc3, 0xa2, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa0, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa5, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xac, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x89, 0x00}}, {2, [3]byte{0xc3, 0xa6, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc3, 0xb4, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb2, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xbb, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xbf, 0x00}}, {2, [3]byte{0xc3, 0x96, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc2, 0xa2, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa3, 0x00}}, {2, [3]byte{0xc2, 0xa5, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x82, 0xa7}}, {2, [3]byte{0xc6, 0x92, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa1, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0xba, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb1, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xba, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xbf, 0x00}}, {3, [3]byte{0xe2, 0x8c, 0x90}},\n\t\t{2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x96, 0x91}}, {3, [3]byte{0xe2, 0x96, 0x92}},\n\t\t{3, [3]byte{0xe2, 0x96, 0x93}}, {3, [3]byte{0xe2, 0x94, 0x82}},\n\t\t{3, [3]byte{0xe2, 0x94, 0xa4}}, {3, [3]byte{0xe2, 0x95, 0xa1}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xa2}}, {3, [3]byte{0xe2, 0x95, 0x96}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x95}}, {3, [3]byte{0xe2, 0x95, 0xa3}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x91}}, {3, [3]byte{0xe2, 0x95, 0x97}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x9d}}, {3, [3]byte{0xe2, 0x95, 0x9c}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x9b}}, {3, [3]byte{0xe2, 0x94, 0x90}},\n\t\t{3, [3]byte{0xe2, 0x94, 0x94}}, {3, [3]byte{0xe2, 0x94, 0xb4}},\n\t\t{3, [3]byte{0xe2, 0x94, 0xac}}, {3, [3]byte{0xe2, 0x94, 0x9c}},\n\t\t{3, [3]byte{0xe2, 0x94, 0x80}}, {3, [3]byte{0xe2, 0x94, 0xbc}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x9e}}, {3, [3]byte{0xe2, 0x95, 0x9f}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x9a}}, {3, [3]byte{0xe2, 0x95, 0x94}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xa9}}, {3, [3]byte{0xe2, 0x95, 0xa6}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xa0}}, {3, [3]byte{0xe2, 0x95, 0x90}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xac}}, {3, [3]byte{0xe2, 0x95, 0xa7}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xa8}}, {3, [3]byte{0xe2, 0x95, 0xa4}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xa5}}, {3, [3]byte{0xe2, 0x95, 0x99}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x98}}, {3, [3]byte{0xe2, 0x95, 0x92}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x93}}, {3, [3]byte{0xe2, 0x95, 0xab}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xaa}}, {3, [3]byte{0xe2, 0x94, 0x98}},\n\t\t{3, [3]byte{0xe2, 0x94, 0x8c}}, {3, [3]byte{0xe2, 0x96, 0x88}},\n\t\t{3, [3]byte{0xe2, 0x96, 0x84}}, {3, [3]byte{0xe2, 0x96, 0x8c}},\n\t\t{3, [3]byte{0xe2, 0x96, 0x90}}, {3, [3]byte{0xe2, 0x96, 0x80}},\n\t\t{2, [3]byte{0xce, 0xb1, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}},\n\t\t{2, [3]byte{0xce, 0x93, 0x00}}, {2, [3]byte{0xcf, 0x80, 0x00}},\n\t\t{2, [3]byte{0xce, 0xa3, 0x00}}, {2, [3]byte{0xcf, 0x83, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb5, 0x00}}, {2, [3]byte{0xcf, 0x84, 0x00}},\n\t\t{2, [3]byte{0xce, 0xa6, 0x00}}, {2, [3]byte{0xce, 0x98, 0x00}},\n\t\t{2, [3]byte{0xce, 0xa9, 0x00}}, {2, [3]byte{0xce, 0xb4, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x88, 0x9e}}, {2, [3]byte{0xcf, 0x86, 0x00}},\n\t\t{2, [3]byte{0xce, 0xb5, 0x00}}, {3, [3]byte{0xe2, 0x88, 0xa9}},\n\t\t{3, [3]byte{0xe2, 0x89, 0xa1}}, {2, [3]byte{0xc2, 0xb1, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x89, 0xa5}}, {3, [3]byte{0xe2, 0x89, 0xa4}},\n\t\t{3, [3]byte{0xe2, 0x8c, 0xa0}}, {3, [3]byte{0xe2, 0x8c, 0xa1}},\n\t\t{2, [3]byte{0xc3, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x89, 0x88}},\n\t\t{2, [3]byte{0xc2, 0xb0, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x99}},\n\t\t{2, [3]byte{0xc2, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x9a}},\n\t\t{3, [3]byte{0xe2, 0x81, 0xbf}}, {2, [3]byte{0xc2, 0xb2, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x96, 0xa0}}, {2, [3]byte{0xc2, 0xa0, 0x00}},\n\t},\n\tencode: [256]uint32{\n\t\t0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007,\n\t\t0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f,\n\t\t0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017,\n\t\t0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f,\n\t\t0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027,\n\t\t0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f,\n\t\t0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037,\n\t\t0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f,\n\t\t0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047,\n\t\t0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f,\n\t\t0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057,\n\t\t0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f,\n\t\t0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067,\n\t\t0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f,\n\t\t0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077,\n\t\t0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f,\n\t\t0xff0000a0, 0xad0000a1, 0x9b0000a2, 0x9c0000a3, 0x9d0000a5, 0xa60000aa, 0xae0000ab, 0xaa0000ac,\n\t\t0xf80000b0, 0xf10000b1, 0xfd0000b2, 0xe60000b5, 0xfa0000b7, 0xa70000ba, 0xaf0000bb, 0xac0000bc,\n\t\t0xab0000bd, 0xa80000bf, 0x8e0000c4, 0x8f0000c5, 0x920000c6, 0x800000c7, 0x900000c9, 0xa50000d1,\n\t\t0x990000d6, 0x9a0000dc, 0xe10000df, 0x850000e0, 0xa00000e1, 0x830000e2, 0x840000e4, 0x860000e5,\n\t\t0x910000e6, 0x870000e7, 0x8a0000e8, 0x820000e9, 0x880000ea, 0x890000eb, 0x8d0000ec, 0xa10000ed,\n\t\t0x8c0000ee, 0x8b0000ef, 0xa40000f1, 0x950000f2, 0xa20000f3, 0x930000f4, 0x940000f6, 0xf60000f7,\n\t\t0x970000f9, 0xa30000fa, 0x960000fb, 0x810000fc, 0x980000ff, 0x9f000192, 0xe2000393, 0xe9000398,\n\t\t0xe40003a3, 0xe80003a6, 0xea0003a9, 0xe00003b1, 0xeb0003b4, 0xee0003b5, 0xe30003c0, 0xe50003c3,\n\t\t0xe70003c4, 0xed0003c6, 0xfc00207f, 0x9e0020a7, 0xf9002219, 0xfb00221a, 0xec00221e, 0xef002229,\n\t\t0xf7002248, 0xf0002261, 0xf3002264, 0xf2002265, 0xa9002310, 0xf4002320, 0xf5002321, 0xc4002500,\n\t\t0xb3002502, 0xda00250c, 0xbf002510, 0xc0002514, 0xd9002518, 0xc300251c, 0xb4002524, 0xc200252c,\n\t\t0xc1002534, 0xc500253c, 0xcd002550, 0xba002551, 0xd5002552, 0xd6002553, 0xc9002554, 0xb8002555,\n\t\t0xb7002556, 0xbb002557, 0xd4002558, 0xd3002559, 0xc800255a, 0xbe00255b, 0xbd00255c, 0xbc00255d,\n\t\t0xc600255e, 0xc700255f, 0xcc002560, 0xb5002561, 0xb6002562, 0xb9002563, 0xd1002564, 0xd2002565,\n\t\t0xcb002566, 0xcf002567, 0xd0002568, 0xca002569, 0xd800256a, 0xd700256b, 0xce00256c, 0xdf002580,\n\t\t0xdc002584, 0xdb002588, 0xdd00258c, 0xde002590, 0xb0002591, 0xb1002592, 0xb2002593, 0xfe0025a0,\n\t},\n}\n\n// CodePage850 is the IBM Code Page 850 encoding.\nvar CodePage850 *Charmap = &codePage850\n\nvar codePage850 = Charmap{\n\tname:          \"IBM Code Page 850\",\n\tmib:           identifier.PC850Multilingual,\n\tasciiSuperset: true,\n\tlow:           0x80,\n\treplacement:   0x1a,\n\tdecode: [256]utf8Enc{\n\t\t{1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}},\n\t\t{1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}},\n\t\t{1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}},\n\t\t{1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}},\n\t\t{1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}},\n\t\t{1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}},\n\t\t{1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}},\n\t\t{1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}},\n\t\t{1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}},\n\t\t{1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}},\n\t\t{1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}},\n\t\t{1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}},\n\t\t{1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}},\n\t\t{1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}},\n\t\t{1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}},\n\t\t{1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}},\n\t\t{1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}},\n\t\t{1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}},\n\t\t{1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}},\n\t\t{1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}},\n\t\t{1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}},\n\t\t{1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}},\n\t\t{1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}},\n\t\t{1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}},\n\t\t{1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}},\n\t\t{1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}},\n\t\t{1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}},\n\t\t{1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}},\n\t\t{1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}},\n\t\t{1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}},\n\t\t{1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}},\n\t\t{1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}},\n\t\t{1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x87, 0x00}}, {2, [3]byte{0xc3, 0xbc, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa9, 0x00}}, {2, [3]byte{0xc3, 0xa2, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa0, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa5, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xac, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x89, 0x00}}, {2, [3]byte{0xc3, 0xa6, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc3, 0xb4, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb2, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xbb, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xbf, 0x00}}, {2, [3]byte{0xc3, 0x96, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0xb8, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0x98, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x97, 0x00}}, {2, [3]byte{0xc6, 0x92, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa1, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0xba, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb1, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xba, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xbf, 0x00}}, {2, [3]byte{0xc2, 0xae, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x96, 0x91}}, {3, [3]byte{0xe2, 0x96, 0x92}},\n\t\t{3, [3]byte{0xe2, 0x96, 0x93}}, {3, [3]byte{0xe2, 0x94, 0x82}},\n\t\t{3, [3]byte{0xe2, 0x94, 0xa4}}, {2, [3]byte{0xc3, 0x81, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x80, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa9, 0x00}}, {3, [3]byte{0xe2, 0x95, 0xa3}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x91}}, {3, [3]byte{0xe2, 0x95, 0x97}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x9d}}, {2, [3]byte{0xc2, 0xa2, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa5, 0x00}}, {3, [3]byte{0xe2, 0x94, 0x90}},\n\t\t{3, [3]byte{0xe2, 0x94, 0x94}}, {3, [3]byte{0xe2, 0x94, 0xb4}},\n\t\t{3, [3]byte{0xe2, 0x94, 0xac}}, {3, [3]byte{0xe2, 0x94, 0x9c}},\n\t\t{3, [3]byte{0xe2, 0x94, 0x80}}, {3, [3]byte{0xe2, 0x94, 0xbc}},\n\t\t{2, [3]byte{0xc3, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0x83, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x9a}}, {3, [3]byte{0xe2, 0x95, 0x94}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xa9}}, {3, [3]byte{0xe2, 0x95, 0xa6}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xa0}}, {3, [3]byte{0xe2, 0x95, 0x90}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xac}}, {2, [3]byte{0xc2, 0xa4, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb0, 0x00}}, {2, [3]byte{0xc3, 0x90, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc4, 0xb1, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x8d, 0x00}}, {2, [3]byte{0xc3, 0x8e, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x8f, 0x00}}, {3, [3]byte{0xe2, 0x94, 0x98}},\n\t\t{3, [3]byte{0xe2, 0x94, 0x8c}}, {3, [3]byte{0xe2, 0x96, 0x88}},\n\t\t{3, [3]byte{0xe2, 0x96, 0x84}}, {2, [3]byte{0xc2, 0xa6, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x8c, 0x00}}, {3, [3]byte{0xe2, 0x96, 0x80}},\n\t\t{2, [3]byte{0xc3, 0x93, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc3, 0x92, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb5, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb5, 0x00}}, {2, [3]byte{0xc3, 0xbe, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x9e, 0x00}}, {2, [3]byte{0xc3, 0x9a, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x9b, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xbd, 0x00}}, {2, [3]byte{0xc3, 0x9d, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xaf, 0x00}}, {2, [3]byte{0xc2, 0xb4, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xad, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x97}}, {2, [3]byte{0xc2, 0xbe, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb7, 0x00}}, {2, [3]byte{0xc2, 0xb8, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xa8, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb7, 0x00}}, {2, [3]byte{0xc2, 0xb9, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb3, 0x00}}, {2, [3]byte{0xc2, 0xb2, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x96, 0xa0}}, {2, [3]byte{0xc2, 0xa0, 0x00}},\n\t},\n\tencode: [256]uint32{\n\t\t0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007,\n\t\t0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f,\n\t\t0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017,\n\t\t0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f,\n\t\t0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027,\n\t\t0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f,\n\t\t0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037,\n\t\t0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f,\n\t\t0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047,\n\t\t0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f,\n\t\t0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057,\n\t\t0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f,\n\t\t0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067,\n\t\t0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f,\n\t\t0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077,\n\t\t0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f,\n\t\t0xff0000a0, 0xad0000a1, 0xbd0000a2, 0x9c0000a3, 0xcf0000a4, 0xbe0000a5, 0xdd0000a6, 0xf50000a7,\n\t\t0xf90000a8, 0xb80000a9, 0xa60000aa, 0xae0000ab, 0xaa0000ac, 0xf00000ad, 0xa90000ae, 0xee0000af,\n\t\t0xf80000b0, 0xf10000b1, 0xfd0000b2, 0xfc0000b3, 0xef0000b4, 0xe60000b5, 0xf40000b6, 0xfa0000b7,\n\t\t0xf70000b8, 0xfb0000b9, 0xa70000ba, 0xaf0000bb, 0xac0000bc, 0xab0000bd, 0xf30000be, 0xa80000bf,\n\t\t0xb70000c0, 0xb50000c1, 0xb60000c2, 0xc70000c3, 0x8e0000c4, 0x8f0000c5, 0x920000c6, 0x800000c7,\n\t\t0xd40000c8, 0x900000c9, 0xd20000ca, 0xd30000cb, 0xde0000cc, 0xd60000cd, 0xd70000ce, 0xd80000cf,\n\t\t0xd10000d0, 0xa50000d1, 0xe30000d2, 0xe00000d3, 0xe20000d4, 0xe50000d5, 0x990000d6, 0x9e0000d7,\n\t\t0x9d0000d8, 0xeb0000d9, 0xe90000da, 0xea0000db, 0x9a0000dc, 0xed0000dd, 0xe80000de, 0xe10000df,\n\t\t0x850000e0, 0xa00000e1, 0x830000e2, 0xc60000e3, 0x840000e4, 0x860000e5, 0x910000e6, 0x870000e7,\n\t\t0x8a0000e8, 0x820000e9, 0x880000ea, 0x890000eb, 0x8d0000ec, 0xa10000ed, 0x8c0000ee, 0x8b0000ef,\n\t\t0xd00000f0, 0xa40000f1, 0x950000f2, 0xa20000f3, 0x930000f4, 0xe40000f5, 0x940000f6, 0xf60000f7,\n\t\t0x9b0000f8, 0x970000f9, 0xa30000fa, 0x960000fb, 0x810000fc, 0xec0000fd, 0xe70000fe, 0x980000ff,\n\t\t0xd5000131, 0x9f000192, 0xf2002017, 0xc4002500, 0xb3002502, 0xda00250c, 0xbf002510, 0xc0002514,\n\t\t0xd9002518, 0xc300251c, 0xb4002524, 0xc200252c, 0xc1002534, 0xc500253c, 0xcd002550, 0xba002551,\n\t\t0xc9002554, 0xbb002557, 0xc800255a, 0xbc00255d, 0xcc002560, 0xb9002563, 0xcb002566, 0xca002569,\n\t\t0xce00256c, 0xdf002580, 0xdc002584, 0xdb002588, 0xb0002591, 0xb1002592, 0xb2002593, 0xfe0025a0,\n\t},\n}\n\n// CodePage852 is the IBM Code Page 852 encoding.\nvar CodePage852 *Charmap = &codePage852\n\nvar codePage852 = Charmap{\n\tname:          \"IBM Code Page 852\",\n\tmib:           identifier.PCp852,\n\tasciiSuperset: true,\n\tlow:           0x80,\n\treplacement:   0x1a,\n\tdecode: [256]utf8Enc{\n\t\t{1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}},\n\t\t{1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}},\n\t\t{1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}},\n\t\t{1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}},\n\t\t{1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}},\n\t\t{1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}},\n\t\t{1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}},\n\t\t{1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}},\n\t\t{1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}},\n\t\t{1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}},\n\t\t{1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}},\n\t\t{1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}},\n\t\t{1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}},\n\t\t{1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}},\n\t\t{1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}},\n\t\t{1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}},\n\t\t{1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}},\n\t\t{1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}},\n\t\t{1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}},\n\t\t{1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}},\n\t\t{1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}},\n\t\t{1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}},\n\t\t{1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}},\n\t\t{1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}},\n\t\t{1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}},\n\t\t{1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}},\n\t\t{1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}},\n\t\t{1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}},\n\t\t{1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}},\n\t\t{1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}},\n\t\t{1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}},\n\t\t{1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}},\n\t\t{1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x87, 0x00}}, {2, [3]byte{0xc3, 0xbc, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa9, 0x00}}, {2, [3]byte{0xc3, 0xa2, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc5, 0xaf, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x87, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}},\n\t\t{2, [3]byte{0xc5, 0x82, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}},\n\t\t{2, [3]byte{0xc5, 0x90, 0x00}}, {2, [3]byte{0xc5, 0x91, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc5, 0xb9, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc4, 0x86, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x89, 0x00}}, {2, [3]byte{0xc4, 0xb9, 0x00}},\n\t\t{2, [3]byte{0xc4, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xb4, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc4, 0xbd, 0x00}},\n\t\t{2, [3]byte{0xc4, 0xbe, 0x00}}, {2, [3]byte{0xc5, 0x9a, 0x00}},\n\t\t{2, [3]byte{0xc5, 0x9b, 0x00}}, {2, [3]byte{0xc3, 0x96, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc5, 0xa4, 0x00}},\n\t\t{2, [3]byte{0xc5, 0xa5, 0x00}}, {2, [3]byte{0xc5, 0x81, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x97, 0x00}}, {2, [3]byte{0xc4, 0x8d, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa1, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0xba, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x84, 0x00}}, {2, [3]byte{0xc4, 0x85, 0x00}},\n\t\t{2, [3]byte{0xc5, 0xbd, 0x00}}, {2, [3]byte{0xc5, 0xbe, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x98, 0x00}}, {2, [3]byte{0xc4, 0x99, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc5, 0xba, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x8c, 0x00}}, {2, [3]byte{0xc5, 0x9f, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x96, 0x91}}, {3, [3]byte{0xe2, 0x96, 0x92}},\n\t\t{3, [3]byte{0xe2, 0x96, 0x93}}, {3, [3]byte{0xe2, 0x94, 0x82}},\n\t\t{3, [3]byte{0xe2, 0x94, 0xa4}}, {2, [3]byte{0xc3, 0x81, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc4, 0x9a, 0x00}},\n\t\t{2, [3]byte{0xc5, 0x9e, 0x00}}, {3, [3]byte{0xe2, 0x95, 0xa3}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x91}}, {3, [3]byte{0xe2, 0x95, 0x97}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x9d}}, {2, [3]byte{0xc5, 0xbb, 0x00}},\n\t\t{2, [3]byte{0xc5, 0xbc, 0x00}}, {3, [3]byte{0xe2, 0x94, 0x90}},\n\t\t{3, [3]byte{0xe2, 0x94, 0x94}}, {3, [3]byte{0xe2, 0x94, 0xb4}},\n\t\t{3, [3]byte{0xe2, 0x94, 0xac}}, {3, [3]byte{0xe2, 0x94, 0x9c}},\n\t\t{3, [3]byte{0xe2, 0x94, 0x80}}, {3, [3]byte{0xe2, 0x94, 0xbc}},\n\t\t{2, [3]byte{0xc4, 0x82, 0x00}}, {2, [3]byte{0xc4, 0x83, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x9a}}, {3, [3]byte{0xe2, 0x95, 0x94}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xa9}}, {3, [3]byte{0xe2, 0x95, 0xa6}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xa0}}, {3, [3]byte{0xe2, 0x95, 0x90}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xac}}, {2, [3]byte{0xc2, 0xa4, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x91, 0x00}}, {2, [3]byte{0xc4, 0x90, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x8f, 0x00}}, {2, [3]byte{0xc5, 0x87, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x8d, 0x00}}, {2, [3]byte{0xc3, 0x8e, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x9b, 0x00}}, {3, [3]byte{0xe2, 0x94, 0x98}},\n\t\t{3, [3]byte{0xe2, 0x94, 0x8c}}, {3, [3]byte{0xe2, 0x96, 0x88}},\n\t\t{3, [3]byte{0xe2, 0x96, 0x84}}, {2, [3]byte{0xc5, 0xa2, 0x00}},\n\t\t{2, [3]byte{0xc5, 0xae, 0x00}}, {3, [3]byte{0xe2, 0x96, 0x80}},\n\t\t{2, [3]byte{0xc3, 0x93, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc5, 0x83, 0x00}},\n\t\t{2, [3]byte{0xc5, 0x84, 0x00}}, {2, [3]byte{0xc5, 0x88, 0x00}},\n\t\t{2, [3]byte{0xc5, 0xa0, 0x00}}, {2, [3]byte{0xc5, 0xa1, 0x00}},\n\t\t{2, [3]byte{0xc5, 0x94, 0x00}}, {2, [3]byte{0xc3, 0x9a, 0x00}},\n\t\t{2, [3]byte{0xc5, 0x95, 0x00}}, {2, [3]byte{0xc5, 0xb0, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xbd, 0x00}}, {2, [3]byte{0xc3, 0x9d, 0x00}},\n\t\t{2, [3]byte{0xc5, 0xa3, 0x00}}, {2, [3]byte{0xc2, 0xb4, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xad, 0x00}}, {2, [3]byte{0xcb, 0x9d, 0x00}},\n\t\t{2, [3]byte{0xcb, 0x9b, 0x00}}, {2, [3]byte{0xcb, 0x87, 0x00}},\n\t\t{2, [3]byte{0xcb, 0x98, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb7, 0x00}}, {2, [3]byte{0xc2, 0xb8, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xa8, 0x00}},\n\t\t{2, [3]byte{0xcb, 0x99, 0x00}}, {2, [3]byte{0xc5, 0xb1, 0x00}},\n\t\t{2, [3]byte{0xc5, 0x98, 0x00}}, {2, [3]byte{0xc5, 0x99, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x96, 0xa0}}, {2, [3]byte{0xc2, 0xa0, 0x00}},\n\t},\n\tencode: [256]uint32{\n\t\t0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007,\n\t\t0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f,\n\t\t0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017,\n\t\t0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f,\n\t\t0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027,\n\t\t0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f,\n\t\t0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037,\n\t\t0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f,\n\t\t0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047,\n\t\t0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f,\n\t\t0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057,\n\t\t0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f,\n\t\t0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067,\n\t\t0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f,\n\t\t0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077,\n\t\t0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f,\n\t\t0xff0000a0, 0xcf0000a4, 0xf50000a7, 0xf90000a8, 0xae0000ab, 0xaa0000ac, 0xf00000ad, 0xf80000b0,\n\t\t0xef0000b4, 0xf70000b8, 0xaf0000bb, 0xb50000c1, 0xb60000c2, 0x8e0000c4, 0x800000c7, 0x900000c9,\n\t\t0xd30000cb, 0xd60000cd, 0xd70000ce, 0xe00000d3, 0xe20000d4, 0x990000d6, 0x9e0000d7, 0xe90000da,\n\t\t0x9a0000dc, 0xed0000dd, 0xe10000df, 0xa00000e1, 0x830000e2, 0x840000e4, 0x870000e7, 0x820000e9,\n\t\t0x890000eb, 0xa10000ed, 0x8c0000ee, 0xa20000f3, 0x930000f4, 0x940000f6, 0xf60000f7, 0xa30000fa,\n\t\t0x810000fc, 0xec0000fd, 0xc6000102, 0xc7000103, 0xa4000104, 0xa5000105, 0x8f000106, 0x86000107,\n\t\t0xac00010c, 0x9f00010d, 0xd200010e, 0xd400010f, 0xd1000110, 0xd0000111, 0xa8000118, 0xa9000119,\n\t\t0xb700011a, 0xd800011b, 0x91000139, 0x9200013a, 0x9500013d, 0x9600013e, 0x9d000141, 0x88000142,\n\t\t0xe3000143, 0xe4000144, 0xd5000147, 0xe5000148, 0x8a000150, 0x8b000151, 0xe8000154, 0xea000155,\n\t\t0xfc000158, 0xfd000159, 0x9700015a, 0x9800015b, 0xb800015e, 0xad00015f, 0xe6000160, 0xe7000161,\n\t\t0xdd000162, 0xee000163, 0x9b000164, 0x9c000165, 0xde00016e, 0x8500016f, 0xeb000170, 0xfb000171,\n\t\t0x8d000179, 0xab00017a, 0xbd00017b, 0xbe00017c, 0xa600017d, 0xa700017e, 0xf30002c7, 0xf40002d8,\n\t\t0xfa0002d9, 0xf20002db, 0xf10002dd, 0xc4002500, 0xb3002502, 0xda00250c, 0xbf002510, 0xc0002514,\n\t\t0xd9002518, 0xc300251c, 0xb4002524, 0xc200252c, 0xc1002534, 0xc500253c, 0xcd002550, 0xba002551,\n\t\t0xc9002554, 0xbb002557, 0xc800255a, 0xbc00255d, 0xcc002560, 0xb9002563, 0xcb002566, 0xca002569,\n\t\t0xce00256c, 0xdf002580, 0xdc002584, 0xdb002588, 0xb0002591, 0xb1002592, 0xb2002593, 0xfe0025a0,\n\t},\n}\n\n// CodePage855 is the IBM Code Page 855 encoding.\nvar CodePage855 *Charmap = &codePage855\n\nvar codePage855 = Charmap{\n\tname:          \"IBM Code Page 855\",\n\tmib:           identifier.IBM855,\n\tasciiSuperset: true,\n\tlow:           0x80,\n\treplacement:   0x1a,\n\tdecode: [256]utf8Enc{\n\t\t{1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}},\n\t\t{1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}},\n\t\t{1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}},\n\t\t{1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}},\n\t\t{1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}},\n\t\t{1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}},\n\t\t{1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}},\n\t\t{1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}},\n\t\t{1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}},\n\t\t{1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}},\n\t\t{1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}},\n\t\t{1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}},\n\t\t{1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}},\n\t\t{1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}},\n\t\t{1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}},\n\t\t{1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}},\n\t\t{1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}},\n\t\t{1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}},\n\t\t{1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}},\n\t\t{1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}},\n\t\t{1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}},\n\t\t{1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}},\n\t\t{1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}},\n\t\t{1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}},\n\t\t{1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}},\n\t\t{1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}},\n\t\t{1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}},\n\t\t{1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}},\n\t\t{1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}},\n\t\t{1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}},\n\t\t{1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}},\n\t\t{1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}},\n\t\t{1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x92, 0x00}}, {2, [3]byte{0xd0, 0x82, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x93, 0x00}}, {2, [3]byte{0xd0, 0x83, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x91, 0x00}}, {2, [3]byte{0xd0, 0x81, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x94, 0x00}}, {2, [3]byte{0xd0, 0x84, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x95, 0x00}}, {2, [3]byte{0xd0, 0x85, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x96, 0x00}}, {2, [3]byte{0xd0, 0x86, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x97, 0x00}}, {2, [3]byte{0xd0, 0x87, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x98, 0x00}}, {2, [3]byte{0xd0, 0x88, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x99, 0x00}}, {2, [3]byte{0xd0, 0x89, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x9a, 0x00}}, {2, [3]byte{0xd0, 0x8a, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x9b, 0x00}}, {2, [3]byte{0xd0, 0x8b, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x9c, 0x00}}, {2, [3]byte{0xd0, 0x8c, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x9e, 0x00}}, {2, [3]byte{0xd0, 0x8e, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x9f, 0x00}}, {2, [3]byte{0xd0, 0x8f, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x8e, 0x00}}, {2, [3]byte{0xd0, 0xae, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x8a, 0x00}}, {2, [3]byte{0xd0, 0xaa, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xb0, 0x00}}, {2, [3]byte{0xd0, 0x90, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xb1, 0x00}}, {2, [3]byte{0xd0, 0x91, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x86, 0x00}}, {2, [3]byte{0xd0, 0xa6, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xb4, 0x00}}, {2, [3]byte{0xd0, 0x94, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xb5, 0x00}}, {2, [3]byte{0xd0, 0x95, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x84, 0x00}}, {2, [3]byte{0xd0, 0xa4, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xb3, 0x00}}, {2, [3]byte{0xd0, 0x93, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x96, 0x91}}, {3, [3]byte{0xe2, 0x96, 0x92}},\n\t\t{3, [3]byte{0xe2, 0x96, 0x93}}, {3, [3]byte{0xe2, 0x94, 0x82}},\n\t\t{3, [3]byte{0xe2, 0x94, 0xa4}}, {2, [3]byte{0xd1, 0x85, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xa5, 0x00}}, {2, [3]byte{0xd0, 0xb8, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x98, 0x00}}, {3, [3]byte{0xe2, 0x95, 0xa3}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x91}}, {3, [3]byte{0xe2, 0x95, 0x97}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x9d}}, {2, [3]byte{0xd0, 0xb9, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x99, 0x00}}, {3, [3]byte{0xe2, 0x94, 0x90}},\n\t\t{3, [3]byte{0xe2, 0x94, 0x94}}, {3, [3]byte{0xe2, 0x94, 0xb4}},\n\t\t{3, [3]byte{0xe2, 0x94, 0xac}}, {3, [3]byte{0xe2, 0x94, 0x9c}},\n\t\t{3, [3]byte{0xe2, 0x94, 0x80}}, {3, [3]byte{0xe2, 0x94, 0xbc}},\n\t\t{2, [3]byte{0xd0, 0xba, 0x00}}, {2, [3]byte{0xd0, 0x9a, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x9a}}, {3, [3]byte{0xe2, 0x95, 0x94}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xa9}}, {3, [3]byte{0xe2, 0x95, 0xa6}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xa0}}, {3, [3]byte{0xe2, 0x95, 0x90}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xac}}, {2, [3]byte{0xc2, 0xa4, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xbb, 0x00}}, {2, [3]byte{0xd0, 0x9b, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xbc, 0x00}}, {2, [3]byte{0xd0, 0x9c, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xbd, 0x00}}, {2, [3]byte{0xd0, 0x9d, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xbe, 0x00}}, {2, [3]byte{0xd0, 0x9e, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xbf, 0x00}}, {3, [3]byte{0xe2, 0x94, 0x98}},\n\t\t{3, [3]byte{0xe2, 0x94, 0x8c}}, {3, [3]byte{0xe2, 0x96, 0x88}},\n\t\t{3, [3]byte{0xe2, 0x96, 0x84}}, {2, [3]byte{0xd0, 0x9f, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x8f, 0x00}}, {3, [3]byte{0xe2, 0x96, 0x80}},\n\t\t{2, [3]byte{0xd0, 0xaf, 0x00}}, {2, [3]byte{0xd1, 0x80, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xa0, 0x00}}, {2, [3]byte{0xd1, 0x81, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xa1, 0x00}}, {2, [3]byte{0xd1, 0x82, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xa2, 0x00}}, {2, [3]byte{0xd1, 0x83, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xa3, 0x00}}, {2, [3]byte{0xd0, 0xb6, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x96, 0x00}}, {2, [3]byte{0xd0, 0xb2, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x92, 0x00}}, {2, [3]byte{0xd1, 0x8c, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xac, 0x00}}, {3, [3]byte{0xe2, 0x84, 0x96}},\n\t\t{2, [3]byte{0xc2, 0xad, 0x00}}, {2, [3]byte{0xd1, 0x8b, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xab, 0x00}}, {2, [3]byte{0xd0, 0xb7, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x97, 0x00}}, {2, [3]byte{0xd1, 0x88, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xa8, 0x00}}, {2, [3]byte{0xd1, 0x8d, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xad, 0x00}}, {2, [3]byte{0xd1, 0x89, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xa9, 0x00}}, {2, [3]byte{0xd1, 0x87, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xa7, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x96, 0xa0}}, {2, [3]byte{0xc2, 0xa0, 0x00}},\n\t},\n\tencode: [256]uint32{\n\t\t0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007,\n\t\t0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f,\n\t\t0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017,\n\t\t0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f,\n\t\t0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027,\n\t\t0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f,\n\t\t0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037,\n\t\t0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f,\n\t\t0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047,\n\t\t0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f,\n\t\t0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057,\n\t\t0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f,\n\t\t0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067,\n\t\t0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f,\n\t\t0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077,\n\t\t0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f,\n\t\t0xff0000a0, 0xcf0000a4, 0xfd0000a7, 0xae0000ab, 0xf00000ad, 0xaf0000bb, 0x85000401, 0x81000402,\n\t\t0x83000403, 0x87000404, 0x89000405, 0x8b000406, 0x8d000407, 0x8f000408, 0x91000409, 0x9300040a,\n\t\t0x9500040b, 0x9700040c, 0x9900040e, 0x9b00040f, 0xa1000410, 0xa3000411, 0xec000412, 0xad000413,\n\t\t0xa7000414, 0xa9000415, 0xea000416, 0xf4000417, 0xb8000418, 0xbe000419, 0xc700041a, 0xd100041b,\n\t\t0xd300041c, 0xd500041d, 0xd700041e, 0xdd00041f, 0xe2000420, 0xe4000421, 0xe6000422, 0xe8000423,\n\t\t0xab000424, 0xb6000425, 0xa5000426, 0xfc000427, 0xf6000428, 0xfa000429, 0x9f00042a, 0xf200042b,\n\t\t0xee00042c, 0xf800042d, 0x9d00042e, 0xe000042f, 0xa0000430, 0xa2000431, 0xeb000432, 0xac000433,\n\t\t0xa6000434, 0xa8000435, 0xe9000436, 0xf3000437, 0xb7000438, 0xbd000439, 0xc600043a, 0xd000043b,\n\t\t0xd200043c, 0xd400043d, 0xd600043e, 0xd800043f, 0xe1000440, 0xe3000441, 0xe5000442, 0xe7000443,\n\t\t0xaa000444, 0xb5000445, 0xa4000446, 0xfb000447, 0xf5000448, 0xf9000449, 0x9e00044a, 0xf100044b,\n\t\t0xed00044c, 0xf700044d, 0x9c00044e, 0xde00044f, 0x84000451, 0x80000452, 0x82000453, 0x86000454,\n\t\t0x88000455, 0x8a000456, 0x8c000457, 0x8e000458, 0x90000459, 0x9200045a, 0x9400045b, 0x9600045c,\n\t\t0x9800045e, 0x9a00045f, 0xef002116, 0xc4002500, 0xb3002502, 0xda00250c, 0xbf002510, 0xc0002514,\n\t\t0xd9002518, 0xc300251c, 0xb4002524, 0xc200252c, 0xc1002534, 0xc500253c, 0xcd002550, 0xba002551,\n\t\t0xc9002554, 0xbb002557, 0xc800255a, 0xbc00255d, 0xcc002560, 0xb9002563, 0xcb002566, 0xca002569,\n\t\t0xce00256c, 0xdf002580, 0xdc002584, 0xdb002588, 0xb0002591, 0xb1002592, 0xb2002593, 0xfe0025a0,\n\t},\n}\n\n// CodePage858 is the Windows Code Page 858 encoding.\nvar CodePage858 *Charmap = &codePage858\n\nvar codePage858 = Charmap{\n\tname:          \"Windows Code Page 858\",\n\tmib:           identifier.IBM00858,\n\tasciiSuperset: true,\n\tlow:           0x80,\n\treplacement:   0x1a,\n\tdecode: [256]utf8Enc{\n\t\t{1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}},\n\t\t{1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}},\n\t\t{1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}},\n\t\t{1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}},\n\t\t{1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}},\n\t\t{1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}},\n\t\t{1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}},\n\t\t{1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}},\n\t\t{1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}},\n\t\t{1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}},\n\t\t{1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}},\n\t\t{1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}},\n\t\t{1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}},\n\t\t{1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}},\n\t\t{1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}},\n\t\t{1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}},\n\t\t{1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}},\n\t\t{1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}},\n\t\t{1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}},\n\t\t{1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}},\n\t\t{1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}},\n\t\t{1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}},\n\t\t{1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}},\n\t\t{1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}},\n\t\t{1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}},\n\t\t{1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}},\n\t\t{1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}},\n\t\t{1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}},\n\t\t{1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}},\n\t\t{1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}},\n\t\t{1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}},\n\t\t{1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}},\n\t\t{1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x87, 0x00}}, {2, [3]byte{0xc3, 0xbc, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa9, 0x00}}, {2, [3]byte{0xc3, 0xa2, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa0, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa5, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xac, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x89, 0x00}}, {2, [3]byte{0xc3, 0xa6, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc3, 0xb4, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb2, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xbb, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xbf, 0x00}}, {2, [3]byte{0xc3, 0x96, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0xb8, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0x98, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x97, 0x00}}, {2, [3]byte{0xc6, 0x92, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa1, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0xba, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb1, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xba, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xbf, 0x00}}, {2, [3]byte{0xc2, 0xae, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x96, 0x91}}, {3, [3]byte{0xe2, 0x96, 0x92}},\n\t\t{3, [3]byte{0xe2, 0x96, 0x93}}, {3, [3]byte{0xe2, 0x94, 0x82}},\n\t\t{3, [3]byte{0xe2, 0x94, 0xa4}}, {2, [3]byte{0xc3, 0x81, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x80, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa9, 0x00}}, {3, [3]byte{0xe2, 0x95, 0xa3}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x91}}, {3, [3]byte{0xe2, 0x95, 0x97}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x9d}}, {2, [3]byte{0xc2, 0xa2, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa5, 0x00}}, {3, [3]byte{0xe2, 0x94, 0x90}},\n\t\t{3, [3]byte{0xe2, 0x94, 0x94}}, {3, [3]byte{0xe2, 0x94, 0xb4}},\n\t\t{3, [3]byte{0xe2, 0x94, 0xac}}, {3, [3]byte{0xe2, 0x94, 0x9c}},\n\t\t{3, [3]byte{0xe2, 0x94, 0x80}}, {3, [3]byte{0xe2, 0x94, 0xbc}},\n\t\t{2, [3]byte{0xc3, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0x83, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x9a}}, {3, [3]byte{0xe2, 0x95, 0x94}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xa9}}, {3, [3]byte{0xe2, 0x95, 0xa6}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xa0}}, {3, [3]byte{0xe2, 0x95, 0x90}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xac}}, {2, [3]byte{0xc2, 0xa4, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb0, 0x00}}, {2, [3]byte{0xc3, 0x90, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x88, 0x00}}, {3, [3]byte{0xe2, 0x82, 0xac}},\n\t\t{2, [3]byte{0xc3, 0x8d, 0x00}}, {2, [3]byte{0xc3, 0x8e, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x8f, 0x00}}, {3, [3]byte{0xe2, 0x94, 0x98}},\n\t\t{3, [3]byte{0xe2, 0x94, 0x8c}}, {3, [3]byte{0xe2, 0x96, 0x88}},\n\t\t{3, [3]byte{0xe2, 0x96, 0x84}}, {2, [3]byte{0xc2, 0xa6, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x8c, 0x00}}, {3, [3]byte{0xe2, 0x96, 0x80}},\n\t\t{2, [3]byte{0xc3, 0x93, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc3, 0x92, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb5, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb5, 0x00}}, {2, [3]byte{0xc3, 0xbe, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x9e, 0x00}}, {2, [3]byte{0xc3, 0x9a, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x9b, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xbd, 0x00}}, {2, [3]byte{0xc3, 0x9d, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xaf, 0x00}}, {2, [3]byte{0xc2, 0xb4, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xad, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x97}}, {2, [3]byte{0xc2, 0xbe, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb7, 0x00}}, {2, [3]byte{0xc2, 0xb8, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xa8, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb7, 0x00}}, {2, [3]byte{0xc2, 0xb9, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb3, 0x00}}, {2, [3]byte{0xc2, 0xb2, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x96, 0xa0}}, {2, [3]byte{0xc2, 0xa0, 0x00}},\n\t},\n\tencode: [256]uint32{\n\t\t0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007,\n\t\t0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f,\n\t\t0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017,\n\t\t0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f,\n\t\t0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027,\n\t\t0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f,\n\t\t0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037,\n\t\t0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f,\n\t\t0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047,\n\t\t0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f,\n\t\t0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057,\n\t\t0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f,\n\t\t0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067,\n\t\t0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f,\n\t\t0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077,\n\t\t0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f,\n\t\t0xff0000a0, 0xad0000a1, 0xbd0000a2, 0x9c0000a3, 0xcf0000a4, 0xbe0000a5, 0xdd0000a6, 0xf50000a7,\n\t\t0xf90000a8, 0xb80000a9, 0xa60000aa, 0xae0000ab, 0xaa0000ac, 0xf00000ad, 0xa90000ae, 0xee0000af,\n\t\t0xf80000b0, 0xf10000b1, 0xfd0000b2, 0xfc0000b3, 0xef0000b4, 0xe60000b5, 0xf40000b6, 0xfa0000b7,\n\t\t0xf70000b8, 0xfb0000b9, 0xa70000ba, 0xaf0000bb, 0xac0000bc, 0xab0000bd, 0xf30000be, 0xa80000bf,\n\t\t0xb70000c0, 0xb50000c1, 0xb60000c2, 0xc70000c3, 0x8e0000c4, 0x8f0000c5, 0x920000c6, 0x800000c7,\n\t\t0xd40000c8, 0x900000c9, 0xd20000ca, 0xd30000cb, 0xde0000cc, 0xd60000cd, 0xd70000ce, 0xd80000cf,\n\t\t0xd10000d0, 0xa50000d1, 0xe30000d2, 0xe00000d3, 0xe20000d4, 0xe50000d5, 0x990000d6, 0x9e0000d7,\n\t\t0x9d0000d8, 0xeb0000d9, 0xe90000da, 0xea0000db, 0x9a0000dc, 0xed0000dd, 0xe80000de, 0xe10000df,\n\t\t0x850000e0, 0xa00000e1, 0x830000e2, 0xc60000e3, 0x840000e4, 0x860000e5, 0x910000e6, 0x870000e7,\n\t\t0x8a0000e8, 0x820000e9, 0x880000ea, 0x890000eb, 0x8d0000ec, 0xa10000ed, 0x8c0000ee, 0x8b0000ef,\n\t\t0xd00000f0, 0xa40000f1, 0x950000f2, 0xa20000f3, 0x930000f4, 0xe40000f5, 0x940000f6, 0xf60000f7,\n\t\t0x9b0000f8, 0x970000f9, 0xa30000fa, 0x960000fb, 0x810000fc, 0xec0000fd, 0xe70000fe, 0x980000ff,\n\t\t0x9f000192, 0xf2002017, 0xd50020ac, 0xc4002500, 0xb3002502, 0xda00250c, 0xbf002510, 0xc0002514,\n\t\t0xd9002518, 0xc300251c, 0xb4002524, 0xc200252c, 0xc1002534, 0xc500253c, 0xcd002550, 0xba002551,\n\t\t0xc9002554, 0xbb002557, 0xc800255a, 0xbc00255d, 0xcc002560, 0xb9002563, 0xcb002566, 0xca002569,\n\t\t0xce00256c, 0xdf002580, 0xdc002584, 0xdb002588, 0xb0002591, 0xb1002592, 0xb2002593, 0xfe0025a0,\n\t},\n}\n\n// CodePage860 is the IBM Code Page 860 encoding.\nvar CodePage860 *Charmap = &codePage860\n\nvar codePage860 = Charmap{\n\tname:          \"IBM Code Page 860\",\n\tmib:           identifier.IBM860,\n\tasciiSuperset: true,\n\tlow:           0x80,\n\treplacement:   0x1a,\n\tdecode: [256]utf8Enc{\n\t\t{1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}},\n\t\t{1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}},\n\t\t{1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}},\n\t\t{1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}},\n\t\t{1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}},\n\t\t{1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}},\n\t\t{1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}},\n\t\t{1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}},\n\t\t{1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}},\n\t\t{1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}},\n\t\t{1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}},\n\t\t{1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}},\n\t\t{1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}},\n\t\t{1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}},\n\t\t{1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}},\n\t\t{1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}},\n\t\t{1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}},\n\t\t{1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}},\n\t\t{1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}},\n\t\t{1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}},\n\t\t{1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}},\n\t\t{1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}},\n\t\t{1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}},\n\t\t{1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}},\n\t\t{1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}},\n\t\t{1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}},\n\t\t{1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}},\n\t\t{1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}},\n\t\t{1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}},\n\t\t{1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}},\n\t\t{1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}},\n\t\t{1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}},\n\t\t{1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x87, 0x00}}, {2, [3]byte{0xc3, 0xbc, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa9, 0x00}}, {2, [3]byte{0xc3, 0xa2, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0xa0, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x81, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0x8a, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc3, 0xac, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x83, 0x00}}, {2, [3]byte{0xc3, 0x82, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x89, 0x00}}, {2, [3]byte{0xc3, 0x80, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0xb4, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb5, 0x00}}, {2, [3]byte{0xc3, 0xb2, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc2, 0xa2, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x82, 0xa7}}, {2, [3]byte{0xc3, 0x93, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa1, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0xba, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb1, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xba, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xbf, 0x00}}, {2, [3]byte{0xc3, 0x92, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x96, 0x91}}, {3, [3]byte{0xe2, 0x96, 0x92}},\n\t\t{3, [3]byte{0xe2, 0x96, 0x93}}, {3, [3]byte{0xe2, 0x94, 0x82}},\n\t\t{3, [3]byte{0xe2, 0x94, 0xa4}}, {3, [3]byte{0xe2, 0x95, 0xa1}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xa2}}, {3, [3]byte{0xe2, 0x95, 0x96}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x95}}, {3, [3]byte{0xe2, 0x95, 0xa3}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x91}}, {3, [3]byte{0xe2, 0x95, 0x97}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x9d}}, {3, [3]byte{0xe2, 0x95, 0x9c}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x9b}}, {3, [3]byte{0xe2, 0x94, 0x90}},\n\t\t{3, [3]byte{0xe2, 0x94, 0x94}}, {3, [3]byte{0xe2, 0x94, 0xb4}},\n\t\t{3, [3]byte{0xe2, 0x94, 0xac}}, {3, [3]byte{0xe2, 0x94, 0x9c}},\n\t\t{3, [3]byte{0xe2, 0x94, 0x80}}, {3, [3]byte{0xe2, 0x94, 0xbc}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x9e}}, {3, [3]byte{0xe2, 0x95, 0x9f}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x9a}}, {3, [3]byte{0xe2, 0x95, 0x94}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xa9}}, {3, [3]byte{0xe2, 0x95, 0xa6}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xa0}}, {3, [3]byte{0xe2, 0x95, 0x90}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xac}}, {3, [3]byte{0xe2, 0x95, 0xa7}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xa8}}, {3, [3]byte{0xe2, 0x95, 0xa4}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xa5}}, {3, [3]byte{0xe2, 0x95, 0x99}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x98}}, {3, [3]byte{0xe2, 0x95, 0x92}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x93}}, {3, [3]byte{0xe2, 0x95, 0xab}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xaa}}, {3, [3]byte{0xe2, 0x94, 0x98}},\n\t\t{3, [3]byte{0xe2, 0x94, 0x8c}}, {3, [3]byte{0xe2, 0x96, 0x88}},\n\t\t{3, [3]byte{0xe2, 0x96, 0x84}}, {3, [3]byte{0xe2, 0x96, 0x8c}},\n\t\t{3, [3]byte{0xe2, 0x96, 0x90}}, {3, [3]byte{0xe2, 0x96, 0x80}},\n\t\t{2, [3]byte{0xce, 0xb1, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}},\n\t\t{2, [3]byte{0xce, 0x93, 0x00}}, {2, [3]byte{0xcf, 0x80, 0x00}},\n\t\t{2, [3]byte{0xce, 0xa3, 0x00}}, {2, [3]byte{0xcf, 0x83, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb5, 0x00}}, {2, [3]byte{0xcf, 0x84, 0x00}},\n\t\t{2, [3]byte{0xce, 0xa6, 0x00}}, {2, [3]byte{0xce, 0x98, 0x00}},\n\t\t{2, [3]byte{0xce, 0xa9, 0x00}}, {2, [3]byte{0xce, 0xb4, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x88, 0x9e}}, {2, [3]byte{0xcf, 0x86, 0x00}},\n\t\t{2, [3]byte{0xce, 0xb5, 0x00}}, {3, [3]byte{0xe2, 0x88, 0xa9}},\n\t\t{3, [3]byte{0xe2, 0x89, 0xa1}}, {2, [3]byte{0xc2, 0xb1, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x89, 0xa5}}, {3, [3]byte{0xe2, 0x89, 0xa4}},\n\t\t{3, [3]byte{0xe2, 0x8c, 0xa0}}, {3, [3]byte{0xe2, 0x8c, 0xa1}},\n\t\t{2, [3]byte{0xc3, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x89, 0x88}},\n\t\t{2, [3]byte{0xc2, 0xb0, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x99}},\n\t\t{2, [3]byte{0xc2, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x9a}},\n\t\t{3, [3]byte{0xe2, 0x81, 0xbf}}, {2, [3]byte{0xc2, 0xb2, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x96, 0xa0}}, {2, [3]byte{0xc2, 0xa0, 0x00}},\n\t},\n\tencode: [256]uint32{\n\t\t0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007,\n\t\t0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f,\n\t\t0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017,\n\t\t0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f,\n\t\t0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027,\n\t\t0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f,\n\t\t0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037,\n\t\t0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f,\n\t\t0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047,\n\t\t0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f,\n\t\t0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057,\n\t\t0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f,\n\t\t0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067,\n\t\t0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f,\n\t\t0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077,\n\t\t0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f,\n\t\t0xff0000a0, 0xad0000a1, 0x9b0000a2, 0x9c0000a3, 0xa60000aa, 0xae0000ab, 0xaa0000ac, 0xf80000b0,\n\t\t0xf10000b1, 0xfd0000b2, 0xe60000b5, 0xfa0000b7, 0xa70000ba, 0xaf0000bb, 0xac0000bc, 0xab0000bd,\n\t\t0xa80000bf, 0x910000c0, 0x860000c1, 0x8f0000c2, 0x8e0000c3, 0x800000c7, 0x920000c8, 0x900000c9,\n\t\t0x890000ca, 0x980000cc, 0x8b0000cd, 0xa50000d1, 0xa90000d2, 0x9f0000d3, 0x8c0000d4, 0x990000d5,\n\t\t0x9d0000d9, 0x960000da, 0x9a0000dc, 0xe10000df, 0x850000e0, 0xa00000e1, 0x830000e2, 0x840000e3,\n\t\t0x870000e7, 0x8a0000e8, 0x820000e9, 0x880000ea, 0x8d0000ec, 0xa10000ed, 0xa40000f1, 0x950000f2,\n\t\t0xa20000f3, 0x930000f4, 0x940000f5, 0xf60000f7, 0x970000f9, 0xa30000fa, 0x810000fc, 0xe2000393,\n\t\t0xe9000398, 0xe40003a3, 0xe80003a6, 0xea0003a9, 0xe00003b1, 0xeb0003b4, 0xee0003b5, 0xe30003c0,\n\t\t0xe50003c3, 0xe70003c4, 0xed0003c6, 0xfc00207f, 0x9e0020a7, 0xf9002219, 0xfb00221a, 0xec00221e,\n\t\t0xef002229, 0xf7002248, 0xf0002261, 0xf3002264, 0xf2002265, 0xf4002320, 0xf5002321, 0xc4002500,\n\t\t0xb3002502, 0xda00250c, 0xbf002510, 0xc0002514, 0xd9002518, 0xc300251c, 0xb4002524, 0xc200252c,\n\t\t0xc1002534, 0xc500253c, 0xcd002550, 0xba002551, 0xd5002552, 0xd6002553, 0xc9002554, 0xb8002555,\n\t\t0xb7002556, 0xbb002557, 0xd4002558, 0xd3002559, 0xc800255a, 0xbe00255b, 0xbd00255c, 0xbc00255d,\n\t\t0xc600255e, 0xc700255f, 0xcc002560, 0xb5002561, 0xb6002562, 0xb9002563, 0xd1002564, 0xd2002565,\n\t\t0xcb002566, 0xcf002567, 0xd0002568, 0xca002569, 0xd800256a, 0xd700256b, 0xce00256c, 0xdf002580,\n\t\t0xdc002584, 0xdb002588, 0xdd00258c, 0xde002590, 0xb0002591, 0xb1002592, 0xb2002593, 0xfe0025a0,\n\t},\n}\n\n// CodePage862 is the IBM Code Page 862 encoding.\nvar CodePage862 *Charmap = &codePage862\n\nvar codePage862 = Charmap{\n\tname:          \"IBM Code Page 862\",\n\tmib:           identifier.PC862LatinHebrew,\n\tasciiSuperset: true,\n\tlow:           0x80,\n\treplacement:   0x1a,\n\tdecode: [256]utf8Enc{\n\t\t{1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}},\n\t\t{1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}},\n\t\t{1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}},\n\t\t{1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}},\n\t\t{1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}},\n\t\t{1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}},\n\t\t{1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}},\n\t\t{1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}},\n\t\t{1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}},\n\t\t{1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}},\n\t\t{1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}},\n\t\t{1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}},\n\t\t{1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}},\n\t\t{1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}},\n\t\t{1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}},\n\t\t{1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}},\n\t\t{1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}},\n\t\t{1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}},\n\t\t{1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}},\n\t\t{1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}},\n\t\t{1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}},\n\t\t{1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}},\n\t\t{1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}},\n\t\t{1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}},\n\t\t{1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}},\n\t\t{1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}},\n\t\t{1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}},\n\t\t{1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}},\n\t\t{1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}},\n\t\t{1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}},\n\t\t{1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}},\n\t\t{1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}},\n\t\t{1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}},\n\t\t{2, [3]byte{0xd7, 0x90, 0x00}}, {2, [3]byte{0xd7, 0x91, 0x00}},\n\t\t{2, [3]byte{0xd7, 0x92, 0x00}}, {2, [3]byte{0xd7, 0x93, 0x00}},\n\t\t{2, [3]byte{0xd7, 0x94, 0x00}}, {2, [3]byte{0xd7, 0x95, 0x00}},\n\t\t{2, [3]byte{0xd7, 0x96, 0x00}}, {2, [3]byte{0xd7, 0x97, 0x00}},\n\t\t{2, [3]byte{0xd7, 0x98, 0x00}}, {2, [3]byte{0xd7, 0x99, 0x00}},\n\t\t{2, [3]byte{0xd7, 0x9a, 0x00}}, {2, [3]byte{0xd7, 0x9b, 0x00}},\n\t\t{2, [3]byte{0xd7, 0x9c, 0x00}}, {2, [3]byte{0xd7, 0x9d, 0x00}},\n\t\t{2, [3]byte{0xd7, 0x9e, 0x00}}, {2, [3]byte{0xd7, 0x9f, 0x00}},\n\t\t{2, [3]byte{0xd7, 0xa0, 0x00}}, {2, [3]byte{0xd7, 0xa1, 0x00}},\n\t\t{2, [3]byte{0xd7, 0xa2, 0x00}}, {2, [3]byte{0xd7, 0xa3, 0x00}},\n\t\t{2, [3]byte{0xd7, 0xa4, 0x00}}, {2, [3]byte{0xd7, 0xa5, 0x00}},\n\t\t{2, [3]byte{0xd7, 0xa6, 0x00}}, {2, [3]byte{0xd7, 0xa7, 0x00}},\n\t\t{2, [3]byte{0xd7, 0xa8, 0x00}}, {2, [3]byte{0xd7, 0xa9, 0x00}},\n\t\t{2, [3]byte{0xd7, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xa2, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa3, 0x00}}, {2, [3]byte{0xc2, 0xa5, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x82, 0xa7}}, {2, [3]byte{0xc6, 0x92, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa1, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0xba, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb1, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xba, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xbf, 0x00}}, {3, [3]byte{0xe2, 0x8c, 0x90}},\n\t\t{2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x96, 0x91}}, {3, [3]byte{0xe2, 0x96, 0x92}},\n\t\t{3, [3]byte{0xe2, 0x96, 0x93}}, {3, [3]byte{0xe2, 0x94, 0x82}},\n\t\t{3, [3]byte{0xe2, 0x94, 0xa4}}, {3, [3]byte{0xe2, 0x95, 0xa1}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xa2}}, {3, [3]byte{0xe2, 0x95, 0x96}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x95}}, {3, [3]byte{0xe2, 0x95, 0xa3}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x91}}, {3, [3]byte{0xe2, 0x95, 0x97}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x9d}}, {3, [3]byte{0xe2, 0x95, 0x9c}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x9b}}, {3, [3]byte{0xe2, 0x94, 0x90}},\n\t\t{3, [3]byte{0xe2, 0x94, 0x94}}, {3, [3]byte{0xe2, 0x94, 0xb4}},\n\t\t{3, [3]byte{0xe2, 0x94, 0xac}}, {3, [3]byte{0xe2, 0x94, 0x9c}},\n\t\t{3, [3]byte{0xe2, 0x94, 0x80}}, {3, [3]byte{0xe2, 0x94, 0xbc}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x9e}}, {3, [3]byte{0xe2, 0x95, 0x9f}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x9a}}, {3, [3]byte{0xe2, 0x95, 0x94}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xa9}}, {3, [3]byte{0xe2, 0x95, 0xa6}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xa0}}, {3, [3]byte{0xe2, 0x95, 0x90}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xac}}, {3, [3]byte{0xe2, 0x95, 0xa7}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xa8}}, {3, [3]byte{0xe2, 0x95, 0xa4}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xa5}}, {3, [3]byte{0xe2, 0x95, 0x99}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x98}}, {3, [3]byte{0xe2, 0x95, 0x92}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x93}}, {3, [3]byte{0xe2, 0x95, 0xab}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xaa}}, {3, [3]byte{0xe2, 0x94, 0x98}},\n\t\t{3, [3]byte{0xe2, 0x94, 0x8c}}, {3, [3]byte{0xe2, 0x96, 0x88}},\n\t\t{3, [3]byte{0xe2, 0x96, 0x84}}, {3, [3]byte{0xe2, 0x96, 0x8c}},\n\t\t{3, [3]byte{0xe2, 0x96, 0x90}}, {3, [3]byte{0xe2, 0x96, 0x80}},\n\t\t{2, [3]byte{0xce, 0xb1, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}},\n\t\t{2, [3]byte{0xce, 0x93, 0x00}}, {2, [3]byte{0xcf, 0x80, 0x00}},\n\t\t{2, [3]byte{0xce, 0xa3, 0x00}}, {2, [3]byte{0xcf, 0x83, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb5, 0x00}}, {2, [3]byte{0xcf, 0x84, 0x00}},\n\t\t{2, [3]byte{0xce, 0xa6, 0x00}}, {2, [3]byte{0xce, 0x98, 0x00}},\n\t\t{2, [3]byte{0xce, 0xa9, 0x00}}, {2, [3]byte{0xce, 0xb4, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x88, 0x9e}}, {2, [3]byte{0xcf, 0x86, 0x00}},\n\t\t{2, [3]byte{0xce, 0xb5, 0x00}}, {3, [3]byte{0xe2, 0x88, 0xa9}},\n\t\t{3, [3]byte{0xe2, 0x89, 0xa1}}, {2, [3]byte{0xc2, 0xb1, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x89, 0xa5}}, {3, [3]byte{0xe2, 0x89, 0xa4}},\n\t\t{3, [3]byte{0xe2, 0x8c, 0xa0}}, {3, [3]byte{0xe2, 0x8c, 0xa1}},\n\t\t{2, [3]byte{0xc3, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x89, 0x88}},\n\t\t{2, [3]byte{0xc2, 0xb0, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x99}},\n\t\t{2, [3]byte{0xc2, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x9a}},\n\t\t{3, [3]byte{0xe2, 0x81, 0xbf}}, {2, [3]byte{0xc2, 0xb2, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x96, 0xa0}}, {2, [3]byte{0xc2, 0xa0, 0x00}},\n\t},\n\tencode: [256]uint32{\n\t\t0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007,\n\t\t0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f,\n\t\t0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017,\n\t\t0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f,\n\t\t0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027,\n\t\t0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f,\n\t\t0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037,\n\t\t0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f,\n\t\t0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047,\n\t\t0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f,\n\t\t0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057,\n\t\t0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f,\n\t\t0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067,\n\t\t0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f,\n\t\t0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077,\n\t\t0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f,\n\t\t0xff0000a0, 0xad0000a1, 0x9b0000a2, 0x9c0000a3, 0x9d0000a5, 0xa60000aa, 0xae0000ab, 0xaa0000ac,\n\t\t0xf80000b0, 0xf10000b1, 0xfd0000b2, 0xe60000b5, 0xfa0000b7, 0xa70000ba, 0xaf0000bb, 0xac0000bc,\n\t\t0xab0000bd, 0xa80000bf, 0xa50000d1, 0xe10000df, 0xa00000e1, 0xa10000ed, 0xa40000f1, 0xa20000f3,\n\t\t0xf60000f7, 0xa30000fa, 0x9f000192, 0xe2000393, 0xe9000398, 0xe40003a3, 0xe80003a6, 0xea0003a9,\n\t\t0xe00003b1, 0xeb0003b4, 0xee0003b5, 0xe30003c0, 0xe50003c3, 0xe70003c4, 0xed0003c6, 0x800005d0,\n\t\t0x810005d1, 0x820005d2, 0x830005d3, 0x840005d4, 0x850005d5, 0x860005d6, 0x870005d7, 0x880005d8,\n\t\t0x890005d9, 0x8a0005da, 0x8b0005db, 0x8c0005dc, 0x8d0005dd, 0x8e0005de, 0x8f0005df, 0x900005e0,\n\t\t0x910005e1, 0x920005e2, 0x930005e3, 0x940005e4, 0x950005e5, 0x960005e6, 0x970005e7, 0x980005e8,\n\t\t0x990005e9, 0x9a0005ea, 0xfc00207f, 0x9e0020a7, 0xf9002219, 0xfb00221a, 0xec00221e, 0xef002229,\n\t\t0xf7002248, 0xf0002261, 0xf3002264, 0xf2002265, 0xa9002310, 0xf4002320, 0xf5002321, 0xc4002500,\n\t\t0xb3002502, 0xda00250c, 0xbf002510, 0xc0002514, 0xd9002518, 0xc300251c, 0xb4002524, 0xc200252c,\n\t\t0xc1002534, 0xc500253c, 0xcd002550, 0xba002551, 0xd5002552, 0xd6002553, 0xc9002554, 0xb8002555,\n\t\t0xb7002556, 0xbb002557, 0xd4002558, 0xd3002559, 0xc800255a, 0xbe00255b, 0xbd00255c, 0xbc00255d,\n\t\t0xc600255e, 0xc700255f, 0xcc002560, 0xb5002561, 0xb6002562, 0xb9002563, 0xd1002564, 0xd2002565,\n\t\t0xcb002566, 0xcf002567, 0xd0002568, 0xca002569, 0xd800256a, 0xd700256b, 0xce00256c, 0xdf002580,\n\t\t0xdc002584, 0xdb002588, 0xdd00258c, 0xde002590, 0xb0002591, 0xb1002592, 0xb2002593, 0xfe0025a0,\n\t},\n}\n\n// CodePage863 is the IBM Code Page 863 encoding.\nvar CodePage863 *Charmap = &codePage863\n\nvar codePage863 = Charmap{\n\tname:          \"IBM Code Page 863\",\n\tmib:           identifier.IBM863,\n\tasciiSuperset: true,\n\tlow:           0x80,\n\treplacement:   0x1a,\n\tdecode: [256]utf8Enc{\n\t\t{1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}},\n\t\t{1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}},\n\t\t{1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}},\n\t\t{1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}},\n\t\t{1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}},\n\t\t{1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}},\n\t\t{1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}},\n\t\t{1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}},\n\t\t{1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}},\n\t\t{1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}},\n\t\t{1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}},\n\t\t{1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}},\n\t\t{1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}},\n\t\t{1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}},\n\t\t{1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}},\n\t\t{1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}},\n\t\t{1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}},\n\t\t{1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}},\n\t\t{1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}},\n\t\t{1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}},\n\t\t{1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}},\n\t\t{1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}},\n\t\t{1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}},\n\t\t{1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}},\n\t\t{1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}},\n\t\t{1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}},\n\t\t{1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}},\n\t\t{1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}},\n\t\t{1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}},\n\t\t{1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}},\n\t\t{1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}},\n\t\t{1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}},\n\t\t{1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x87, 0x00}}, {2, [3]byte{0xc3, 0xbc, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa9, 0x00}}, {2, [3]byte{0xc3, 0xa2, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0xa0, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xae, 0x00}}, {3, [3]byte{0xe2, 0x80, 0x97}},\n\t\t{2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x89, 0x00}}, {2, [3]byte{0xc3, 0x88, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0xb4, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x8b, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xbb, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0x94, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc2, 0xa2, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x9b, 0x00}}, {2, [3]byte{0xc6, 0x92, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xb4, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0xba, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc2, 0xb8, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb3, 0x00}}, {2, [3]byte{0xc2, 0xaf, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x8e, 0x00}}, {3, [3]byte{0xe2, 0x8c, 0x90}},\n\t\t{2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xbe, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x96, 0x91}}, {3, [3]byte{0xe2, 0x96, 0x92}},\n\t\t{3, [3]byte{0xe2, 0x96, 0x93}}, {3, [3]byte{0xe2, 0x94, 0x82}},\n\t\t{3, [3]byte{0xe2, 0x94, 0xa4}}, {3, [3]byte{0xe2, 0x95, 0xa1}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xa2}}, {3, [3]byte{0xe2, 0x95, 0x96}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x95}}, {3, [3]byte{0xe2, 0x95, 0xa3}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x91}}, {3, [3]byte{0xe2, 0x95, 0x97}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x9d}}, {3, [3]byte{0xe2, 0x95, 0x9c}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x9b}}, {3, [3]byte{0xe2, 0x94, 0x90}},\n\t\t{3, [3]byte{0xe2, 0x94, 0x94}}, {3, [3]byte{0xe2, 0x94, 0xb4}},\n\t\t{3, [3]byte{0xe2, 0x94, 0xac}}, {3, [3]byte{0xe2, 0x94, 0x9c}},\n\t\t{3, [3]byte{0xe2, 0x94, 0x80}}, {3, [3]byte{0xe2, 0x94, 0xbc}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x9e}}, {3, [3]byte{0xe2, 0x95, 0x9f}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x9a}}, {3, [3]byte{0xe2, 0x95, 0x94}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xa9}}, {3, [3]byte{0xe2, 0x95, 0xa6}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xa0}}, {3, [3]byte{0xe2, 0x95, 0x90}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xac}}, {3, [3]byte{0xe2, 0x95, 0xa7}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xa8}}, {3, [3]byte{0xe2, 0x95, 0xa4}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xa5}}, {3, [3]byte{0xe2, 0x95, 0x99}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x98}}, {3, [3]byte{0xe2, 0x95, 0x92}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x93}}, {3, [3]byte{0xe2, 0x95, 0xab}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xaa}}, {3, [3]byte{0xe2, 0x94, 0x98}},\n\t\t{3, [3]byte{0xe2, 0x94, 0x8c}}, {3, [3]byte{0xe2, 0x96, 0x88}},\n\t\t{3, [3]byte{0xe2, 0x96, 0x84}}, {3, [3]byte{0xe2, 0x96, 0x8c}},\n\t\t{3, [3]byte{0xe2, 0x96, 0x90}}, {3, [3]byte{0xe2, 0x96, 0x80}},\n\t\t{2, [3]byte{0xce, 0xb1, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}},\n\t\t{2, [3]byte{0xce, 0x93, 0x00}}, {2, [3]byte{0xcf, 0x80, 0x00}},\n\t\t{2, [3]byte{0xce, 0xa3, 0x00}}, {2, [3]byte{0xcf, 0x83, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb5, 0x00}}, {2, [3]byte{0xcf, 0x84, 0x00}},\n\t\t{2, [3]byte{0xce, 0xa6, 0x00}}, {2, [3]byte{0xce, 0x98, 0x00}},\n\t\t{2, [3]byte{0xce, 0xa9, 0x00}}, {2, [3]byte{0xce, 0xb4, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x88, 0x9e}}, {2, [3]byte{0xcf, 0x86, 0x00}},\n\t\t{2, [3]byte{0xce, 0xb5, 0x00}}, {3, [3]byte{0xe2, 0x88, 0xa9}},\n\t\t{3, [3]byte{0xe2, 0x89, 0xa1}}, {2, [3]byte{0xc2, 0xb1, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x89, 0xa5}}, {3, [3]byte{0xe2, 0x89, 0xa4}},\n\t\t{3, [3]byte{0xe2, 0x8c, 0xa0}}, {3, [3]byte{0xe2, 0x8c, 0xa1}},\n\t\t{2, [3]byte{0xc3, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x89, 0x88}},\n\t\t{2, [3]byte{0xc2, 0xb0, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x99}},\n\t\t{2, [3]byte{0xc2, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x9a}},\n\t\t{3, [3]byte{0xe2, 0x81, 0xbf}}, {2, [3]byte{0xc2, 0xb2, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x96, 0xa0}}, {2, [3]byte{0xc2, 0xa0, 0x00}},\n\t},\n\tencode: [256]uint32{\n\t\t0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007,\n\t\t0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f,\n\t\t0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017,\n\t\t0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f,\n\t\t0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027,\n\t\t0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f,\n\t\t0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037,\n\t\t0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f,\n\t\t0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047,\n\t\t0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f,\n\t\t0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057,\n\t\t0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f,\n\t\t0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067,\n\t\t0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f,\n\t\t0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077,\n\t\t0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f,\n\t\t0xff0000a0, 0x9b0000a2, 0x9c0000a3, 0x980000a4, 0xa00000a6, 0x8f0000a7, 0xa40000a8, 0xae0000ab,\n\t\t0xaa0000ac, 0xa70000af, 0xf80000b0, 0xf10000b1, 0xfd0000b2, 0xa60000b3, 0xa10000b4, 0xe60000b5,\n\t\t0x860000b6, 0xfa0000b7, 0xa50000b8, 0xaf0000bb, 0xac0000bc, 0xab0000bd, 0xad0000be, 0x8e0000c0,\n\t\t0x840000c2, 0x800000c7, 0x910000c8, 0x900000c9, 0x920000ca, 0x940000cb, 0xa80000ce, 0x950000cf,\n\t\t0x990000d4, 0x9d0000d9, 0x9e0000db, 0x9a0000dc, 0xe10000df, 0x850000e0, 0x830000e2, 0x870000e7,\n\t\t0x8a0000e8, 0x820000e9, 0x880000ea, 0x890000eb, 0x8c0000ee, 0x8b0000ef, 0xa20000f3, 0x930000f4,\n\t\t0xf60000f7, 0x970000f9, 0xa30000fa, 0x960000fb, 0x810000fc, 0x9f000192, 0xe2000393, 0xe9000398,\n\t\t0xe40003a3, 0xe80003a6, 0xea0003a9, 0xe00003b1, 0xeb0003b4, 0xee0003b5, 0xe30003c0, 0xe50003c3,\n\t\t0xe70003c4, 0xed0003c6, 0x8d002017, 0xfc00207f, 0xf9002219, 0xfb00221a, 0xec00221e, 0xef002229,\n\t\t0xf7002248, 0xf0002261, 0xf3002264, 0xf2002265, 0xa9002310, 0xf4002320, 0xf5002321, 0xc4002500,\n\t\t0xb3002502, 0xda00250c, 0xbf002510, 0xc0002514, 0xd9002518, 0xc300251c, 0xb4002524, 0xc200252c,\n\t\t0xc1002534, 0xc500253c, 0xcd002550, 0xba002551, 0xd5002552, 0xd6002553, 0xc9002554, 0xb8002555,\n\t\t0xb7002556, 0xbb002557, 0xd4002558, 0xd3002559, 0xc800255a, 0xbe00255b, 0xbd00255c, 0xbc00255d,\n\t\t0xc600255e, 0xc700255f, 0xcc002560, 0xb5002561, 0xb6002562, 0xb9002563, 0xd1002564, 0xd2002565,\n\t\t0xcb002566, 0xcf002567, 0xd0002568, 0xca002569, 0xd800256a, 0xd700256b, 0xce00256c, 0xdf002580,\n\t\t0xdc002584, 0xdb002588, 0xdd00258c, 0xde002590, 0xb0002591, 0xb1002592, 0xb2002593, 0xfe0025a0,\n\t},\n}\n\n// CodePage865 is the IBM Code Page 865 encoding.\nvar CodePage865 *Charmap = &codePage865\n\nvar codePage865 = Charmap{\n\tname:          \"IBM Code Page 865\",\n\tmib:           identifier.IBM865,\n\tasciiSuperset: true,\n\tlow:           0x80,\n\treplacement:   0x1a,\n\tdecode: [256]utf8Enc{\n\t\t{1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}},\n\t\t{1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}},\n\t\t{1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}},\n\t\t{1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}},\n\t\t{1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}},\n\t\t{1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}},\n\t\t{1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}},\n\t\t{1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}},\n\t\t{1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}},\n\t\t{1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}},\n\t\t{1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}},\n\t\t{1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}},\n\t\t{1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}},\n\t\t{1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}},\n\t\t{1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}},\n\t\t{1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}},\n\t\t{1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}},\n\t\t{1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}},\n\t\t{1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}},\n\t\t{1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}},\n\t\t{1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}},\n\t\t{1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}},\n\t\t{1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}},\n\t\t{1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}},\n\t\t{1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}},\n\t\t{1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}},\n\t\t{1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}},\n\t\t{1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}},\n\t\t{1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}},\n\t\t{1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}},\n\t\t{1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}},\n\t\t{1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}},\n\t\t{1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x87, 0x00}}, {2, [3]byte{0xc3, 0xbc, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa9, 0x00}}, {2, [3]byte{0xc3, 0xa2, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa0, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa5, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xac, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x89, 0x00}}, {2, [3]byte{0xc3, 0xa6, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc3, 0xb4, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb2, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xbb, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xbf, 0x00}}, {2, [3]byte{0xc3, 0x96, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0xb8, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0x98, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x82, 0xa7}}, {2, [3]byte{0xc6, 0x92, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa1, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0xba, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb1, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xba, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xbf, 0x00}}, {3, [3]byte{0xe2, 0x8c, 0x90}},\n\t\t{2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xa4, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x96, 0x91}}, {3, [3]byte{0xe2, 0x96, 0x92}},\n\t\t{3, [3]byte{0xe2, 0x96, 0x93}}, {3, [3]byte{0xe2, 0x94, 0x82}},\n\t\t{3, [3]byte{0xe2, 0x94, 0xa4}}, {3, [3]byte{0xe2, 0x95, 0xa1}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xa2}}, {3, [3]byte{0xe2, 0x95, 0x96}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x95}}, {3, [3]byte{0xe2, 0x95, 0xa3}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x91}}, {3, [3]byte{0xe2, 0x95, 0x97}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x9d}}, {3, [3]byte{0xe2, 0x95, 0x9c}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x9b}}, {3, [3]byte{0xe2, 0x94, 0x90}},\n\t\t{3, [3]byte{0xe2, 0x94, 0x94}}, {3, [3]byte{0xe2, 0x94, 0xb4}},\n\t\t{3, [3]byte{0xe2, 0x94, 0xac}}, {3, [3]byte{0xe2, 0x94, 0x9c}},\n\t\t{3, [3]byte{0xe2, 0x94, 0x80}}, {3, [3]byte{0xe2, 0x94, 0xbc}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x9e}}, {3, [3]byte{0xe2, 0x95, 0x9f}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x9a}}, {3, [3]byte{0xe2, 0x95, 0x94}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xa9}}, {3, [3]byte{0xe2, 0x95, 0xa6}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xa0}}, {3, [3]byte{0xe2, 0x95, 0x90}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xac}}, {3, [3]byte{0xe2, 0x95, 0xa7}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xa8}}, {3, [3]byte{0xe2, 0x95, 0xa4}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xa5}}, {3, [3]byte{0xe2, 0x95, 0x99}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x98}}, {3, [3]byte{0xe2, 0x95, 0x92}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x93}}, {3, [3]byte{0xe2, 0x95, 0xab}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xaa}}, {3, [3]byte{0xe2, 0x94, 0x98}},\n\t\t{3, [3]byte{0xe2, 0x94, 0x8c}}, {3, [3]byte{0xe2, 0x96, 0x88}},\n\t\t{3, [3]byte{0xe2, 0x96, 0x84}}, {3, [3]byte{0xe2, 0x96, 0x8c}},\n\t\t{3, [3]byte{0xe2, 0x96, 0x90}}, {3, [3]byte{0xe2, 0x96, 0x80}},\n\t\t{2, [3]byte{0xce, 0xb1, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}},\n\t\t{2, [3]byte{0xce, 0x93, 0x00}}, {2, [3]byte{0xcf, 0x80, 0x00}},\n\t\t{2, [3]byte{0xce, 0xa3, 0x00}}, {2, [3]byte{0xcf, 0x83, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb5, 0x00}}, {2, [3]byte{0xcf, 0x84, 0x00}},\n\t\t{2, [3]byte{0xce, 0xa6, 0x00}}, {2, [3]byte{0xce, 0x98, 0x00}},\n\t\t{2, [3]byte{0xce, 0xa9, 0x00}}, {2, [3]byte{0xce, 0xb4, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x88, 0x9e}}, {2, [3]byte{0xcf, 0x86, 0x00}},\n\t\t{2, [3]byte{0xce, 0xb5, 0x00}}, {3, [3]byte{0xe2, 0x88, 0xa9}},\n\t\t{3, [3]byte{0xe2, 0x89, 0xa1}}, {2, [3]byte{0xc2, 0xb1, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x89, 0xa5}}, {3, [3]byte{0xe2, 0x89, 0xa4}},\n\t\t{3, [3]byte{0xe2, 0x8c, 0xa0}}, {3, [3]byte{0xe2, 0x8c, 0xa1}},\n\t\t{2, [3]byte{0xc3, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x89, 0x88}},\n\t\t{2, [3]byte{0xc2, 0xb0, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x99}},\n\t\t{2, [3]byte{0xc2, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x9a}},\n\t\t{3, [3]byte{0xe2, 0x81, 0xbf}}, {2, [3]byte{0xc2, 0xb2, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x96, 0xa0}}, {2, [3]byte{0xc2, 0xa0, 0x00}},\n\t},\n\tencode: [256]uint32{\n\t\t0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007,\n\t\t0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f,\n\t\t0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017,\n\t\t0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f,\n\t\t0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027,\n\t\t0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f,\n\t\t0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037,\n\t\t0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f,\n\t\t0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047,\n\t\t0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f,\n\t\t0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057,\n\t\t0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f,\n\t\t0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067,\n\t\t0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f,\n\t\t0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077,\n\t\t0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f,\n\t\t0xff0000a0, 0xad0000a1, 0x9c0000a3, 0xaf0000a4, 0xa60000aa, 0xae0000ab, 0xaa0000ac, 0xf80000b0,\n\t\t0xf10000b1, 0xfd0000b2, 0xe60000b5, 0xfa0000b7, 0xa70000ba, 0xac0000bc, 0xab0000bd, 0xa80000bf,\n\t\t0x8e0000c4, 0x8f0000c5, 0x920000c6, 0x800000c7, 0x900000c9, 0xa50000d1, 0x990000d6, 0x9d0000d8,\n\t\t0x9a0000dc, 0xe10000df, 0x850000e0, 0xa00000e1, 0x830000e2, 0x840000e4, 0x860000e5, 0x910000e6,\n\t\t0x870000e7, 0x8a0000e8, 0x820000e9, 0x880000ea, 0x890000eb, 0x8d0000ec, 0xa10000ed, 0x8c0000ee,\n\t\t0x8b0000ef, 0xa40000f1, 0x950000f2, 0xa20000f3, 0x930000f4, 0x940000f6, 0xf60000f7, 0x9b0000f8,\n\t\t0x970000f9, 0xa30000fa, 0x960000fb, 0x810000fc, 0x980000ff, 0x9f000192, 0xe2000393, 0xe9000398,\n\t\t0xe40003a3, 0xe80003a6, 0xea0003a9, 0xe00003b1, 0xeb0003b4, 0xee0003b5, 0xe30003c0, 0xe50003c3,\n\t\t0xe70003c4, 0xed0003c6, 0xfc00207f, 0x9e0020a7, 0xf9002219, 0xfb00221a, 0xec00221e, 0xef002229,\n\t\t0xf7002248, 0xf0002261, 0xf3002264, 0xf2002265, 0xa9002310, 0xf4002320, 0xf5002321, 0xc4002500,\n\t\t0xb3002502, 0xda00250c, 0xbf002510, 0xc0002514, 0xd9002518, 0xc300251c, 0xb4002524, 0xc200252c,\n\t\t0xc1002534, 0xc500253c, 0xcd002550, 0xba002551, 0xd5002552, 0xd6002553, 0xc9002554, 0xb8002555,\n\t\t0xb7002556, 0xbb002557, 0xd4002558, 0xd3002559, 0xc800255a, 0xbe00255b, 0xbd00255c, 0xbc00255d,\n\t\t0xc600255e, 0xc700255f, 0xcc002560, 0xb5002561, 0xb6002562, 0xb9002563, 0xd1002564, 0xd2002565,\n\t\t0xcb002566, 0xcf002567, 0xd0002568, 0xca002569, 0xd800256a, 0xd700256b, 0xce00256c, 0xdf002580,\n\t\t0xdc002584, 0xdb002588, 0xdd00258c, 0xde002590, 0xb0002591, 0xb1002592, 0xb2002593, 0xfe0025a0,\n\t},\n}\n\n// CodePage866 is the IBM Code Page 866 encoding.\nvar CodePage866 *Charmap = &codePage866\n\nvar codePage866 = Charmap{\n\tname:          \"IBM Code Page 866\",\n\tmib:           identifier.IBM866,\n\tasciiSuperset: true,\n\tlow:           0x80,\n\treplacement:   0x1a,\n\tdecode: [256]utf8Enc{\n\t\t{1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}},\n\t\t{1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}},\n\t\t{1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}},\n\t\t{1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}},\n\t\t{1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}},\n\t\t{1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}},\n\t\t{1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}},\n\t\t{1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}},\n\t\t{1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}},\n\t\t{1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}},\n\t\t{1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}},\n\t\t{1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}},\n\t\t{1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}},\n\t\t{1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}},\n\t\t{1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}},\n\t\t{1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}},\n\t\t{1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}},\n\t\t{1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}},\n\t\t{1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}},\n\t\t{1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}},\n\t\t{1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}},\n\t\t{1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}},\n\t\t{1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}},\n\t\t{1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}},\n\t\t{1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}},\n\t\t{1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}},\n\t\t{1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}},\n\t\t{1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}},\n\t\t{1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}},\n\t\t{1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}},\n\t\t{1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}},\n\t\t{1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}},\n\t\t{1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x90, 0x00}}, {2, [3]byte{0xd0, 0x91, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x92, 0x00}}, {2, [3]byte{0xd0, 0x93, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x94, 0x00}}, {2, [3]byte{0xd0, 0x95, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x96, 0x00}}, {2, [3]byte{0xd0, 0x97, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x98, 0x00}}, {2, [3]byte{0xd0, 0x99, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x9a, 0x00}}, {2, [3]byte{0xd0, 0x9b, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x9c, 0x00}}, {2, [3]byte{0xd0, 0x9d, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x9e, 0x00}}, {2, [3]byte{0xd0, 0x9f, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xa0, 0x00}}, {2, [3]byte{0xd0, 0xa1, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xa2, 0x00}}, {2, [3]byte{0xd0, 0xa3, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xa4, 0x00}}, {2, [3]byte{0xd0, 0xa5, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xa6, 0x00}}, {2, [3]byte{0xd0, 0xa7, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xa8, 0x00}}, {2, [3]byte{0xd0, 0xa9, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xaa, 0x00}}, {2, [3]byte{0xd0, 0xab, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xac, 0x00}}, {2, [3]byte{0xd0, 0xad, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xae, 0x00}}, {2, [3]byte{0xd0, 0xaf, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xb0, 0x00}}, {2, [3]byte{0xd0, 0xb1, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xb2, 0x00}}, {2, [3]byte{0xd0, 0xb3, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xb4, 0x00}}, {2, [3]byte{0xd0, 0xb5, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xb6, 0x00}}, {2, [3]byte{0xd0, 0xb7, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xb8, 0x00}}, {2, [3]byte{0xd0, 0xb9, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xba, 0x00}}, {2, [3]byte{0xd0, 0xbb, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xbc, 0x00}}, {2, [3]byte{0xd0, 0xbd, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xbe, 0x00}}, {2, [3]byte{0xd0, 0xbf, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x96, 0x91}}, {3, [3]byte{0xe2, 0x96, 0x92}},\n\t\t{3, [3]byte{0xe2, 0x96, 0x93}}, {3, [3]byte{0xe2, 0x94, 0x82}},\n\t\t{3, [3]byte{0xe2, 0x94, 0xa4}}, {3, [3]byte{0xe2, 0x95, 0xa1}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xa2}}, {3, [3]byte{0xe2, 0x95, 0x96}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x95}}, {3, [3]byte{0xe2, 0x95, 0xa3}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x91}}, {3, [3]byte{0xe2, 0x95, 0x97}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x9d}}, {3, [3]byte{0xe2, 0x95, 0x9c}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x9b}}, {3, [3]byte{0xe2, 0x94, 0x90}},\n\t\t{3, [3]byte{0xe2, 0x94, 0x94}}, {3, [3]byte{0xe2, 0x94, 0xb4}},\n\t\t{3, [3]byte{0xe2, 0x94, 0xac}}, {3, [3]byte{0xe2, 0x94, 0x9c}},\n\t\t{3, [3]byte{0xe2, 0x94, 0x80}}, {3, [3]byte{0xe2, 0x94, 0xbc}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x9e}}, {3, [3]byte{0xe2, 0x95, 0x9f}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x9a}}, {3, [3]byte{0xe2, 0x95, 0x94}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xa9}}, {3, [3]byte{0xe2, 0x95, 0xa6}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xa0}}, {3, [3]byte{0xe2, 0x95, 0x90}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xac}}, {3, [3]byte{0xe2, 0x95, 0xa7}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xa8}}, {3, [3]byte{0xe2, 0x95, 0xa4}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xa5}}, {3, [3]byte{0xe2, 0x95, 0x99}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x98}}, {3, [3]byte{0xe2, 0x95, 0x92}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x93}}, {3, [3]byte{0xe2, 0x95, 0xab}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xaa}}, {3, [3]byte{0xe2, 0x94, 0x98}},\n\t\t{3, [3]byte{0xe2, 0x94, 0x8c}}, {3, [3]byte{0xe2, 0x96, 0x88}},\n\t\t{3, [3]byte{0xe2, 0x96, 0x84}}, {3, [3]byte{0xe2, 0x96, 0x8c}},\n\t\t{3, [3]byte{0xe2, 0x96, 0x90}}, {3, [3]byte{0xe2, 0x96, 0x80}},\n\t\t{2, [3]byte{0xd1, 0x80, 0x00}}, {2, [3]byte{0xd1, 0x81, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x82, 0x00}}, {2, [3]byte{0xd1, 0x83, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x84, 0x00}}, {2, [3]byte{0xd1, 0x85, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x86, 0x00}}, {2, [3]byte{0xd1, 0x87, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x88, 0x00}}, {2, [3]byte{0xd1, 0x89, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x8a, 0x00}}, {2, [3]byte{0xd1, 0x8b, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x8c, 0x00}}, {2, [3]byte{0xd1, 0x8d, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x8e, 0x00}}, {2, [3]byte{0xd1, 0x8f, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x81, 0x00}}, {2, [3]byte{0xd1, 0x91, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x84, 0x00}}, {2, [3]byte{0xd1, 0x94, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x87, 0x00}}, {2, [3]byte{0xd1, 0x97, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x8e, 0x00}}, {2, [3]byte{0xd1, 0x9e, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb0, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x99}},\n\t\t{2, [3]byte{0xc2, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x9a}},\n\t\t{3, [3]byte{0xe2, 0x84, 0x96}}, {2, [3]byte{0xc2, 0xa4, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x96, 0xa0}}, {2, [3]byte{0xc2, 0xa0, 0x00}},\n\t},\n\tencode: [256]uint32{\n\t\t0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007,\n\t\t0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f,\n\t\t0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017,\n\t\t0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f,\n\t\t0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027,\n\t\t0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f,\n\t\t0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037,\n\t\t0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f,\n\t\t0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047,\n\t\t0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f,\n\t\t0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057,\n\t\t0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f,\n\t\t0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067,\n\t\t0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f,\n\t\t0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077,\n\t\t0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f,\n\t\t0xff0000a0, 0xfd0000a4, 0xf80000b0, 0xfa0000b7, 0xf0000401, 0xf2000404, 0xf4000407, 0xf600040e,\n\t\t0x80000410, 0x81000411, 0x82000412, 0x83000413, 0x84000414, 0x85000415, 0x86000416, 0x87000417,\n\t\t0x88000418, 0x89000419, 0x8a00041a, 0x8b00041b, 0x8c00041c, 0x8d00041d, 0x8e00041e, 0x8f00041f,\n\t\t0x90000420, 0x91000421, 0x92000422, 0x93000423, 0x94000424, 0x95000425, 0x96000426, 0x97000427,\n\t\t0x98000428, 0x99000429, 0x9a00042a, 0x9b00042b, 0x9c00042c, 0x9d00042d, 0x9e00042e, 0x9f00042f,\n\t\t0xa0000430, 0xa1000431, 0xa2000432, 0xa3000433, 0xa4000434, 0xa5000435, 0xa6000436, 0xa7000437,\n\t\t0xa8000438, 0xa9000439, 0xaa00043a, 0xab00043b, 0xac00043c, 0xad00043d, 0xae00043e, 0xaf00043f,\n\t\t0xe0000440, 0xe1000441, 0xe2000442, 0xe3000443, 0xe4000444, 0xe5000445, 0xe6000446, 0xe7000447,\n\t\t0xe8000448, 0xe9000449, 0xea00044a, 0xeb00044b, 0xec00044c, 0xed00044d, 0xee00044e, 0xef00044f,\n\t\t0xf1000451, 0xf3000454, 0xf5000457, 0xf700045e, 0xfc002116, 0xf9002219, 0xfb00221a, 0xc4002500,\n\t\t0xb3002502, 0xda00250c, 0xbf002510, 0xc0002514, 0xd9002518, 0xc300251c, 0xb4002524, 0xc200252c,\n\t\t0xc1002534, 0xc500253c, 0xcd002550, 0xba002551, 0xd5002552, 0xd6002553, 0xc9002554, 0xb8002555,\n\t\t0xb7002556, 0xbb002557, 0xd4002558, 0xd3002559, 0xc800255a, 0xbe00255b, 0xbd00255c, 0xbc00255d,\n\t\t0xc600255e, 0xc700255f, 0xcc002560, 0xb5002561, 0xb6002562, 0xb9002563, 0xd1002564, 0xd2002565,\n\t\t0xcb002566, 0xcf002567, 0xd0002568, 0xca002569, 0xd800256a, 0xd700256b, 0xce00256c, 0xdf002580,\n\t\t0xdc002584, 0xdb002588, 0xdd00258c, 0xde002590, 0xb0002591, 0xb1002592, 0xb2002593, 0xfe0025a0,\n\t},\n}\n\n// CodePage1047 is the IBM Code Page 1047 encoding.\nvar CodePage1047 *Charmap = &codePage1047\n\nvar codePage1047 = Charmap{\n\tname:          \"IBM Code Page 1047\",\n\tmib:           identifier.IBM1047,\n\tasciiSuperset: false,\n\tlow:           0x00,\n\treplacement:   0x3f,\n\tdecode: [256]utf8Enc{\n\t\t{1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}},\n\t\t{1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x9c, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x86, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x97, 0x00}}, {2, [3]byte{0xc2, 0x8d, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x8e, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}},\n\t\t{1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x9d, 0x00}}, {2, [3]byte{0xc2, 0x85, 0x00}},\n\t\t{1, [3]byte{0x08, 0x00, 0x00}}, {2, [3]byte{0xc2, 0x87, 0x00}},\n\t\t{1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x92, 0x00}}, {2, [3]byte{0xc2, 0x8f, 0x00}},\n\t\t{1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x80, 0x00}}, {2, [3]byte{0xc2, 0x81, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x82, 0x00}}, {2, [3]byte{0xc2, 0x83, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x84, 0x00}}, {1, [3]byte{0x0a, 0x00, 0x00}},\n\t\t{1, [3]byte{0x17, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x88, 0x00}}, {2, [3]byte{0xc2, 0x89, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x8a, 0x00}}, {2, [3]byte{0xc2, 0x8b, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x8c, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}},\n\t\t{1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x90, 0x00}}, {2, [3]byte{0xc2, 0x91, 0x00}},\n\t\t{1, [3]byte{0x16, 0x00, 0x00}}, {2, [3]byte{0xc2, 0x93, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x94, 0x00}}, {2, [3]byte{0xc2, 0x95, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x96, 0x00}}, {1, [3]byte{0x04, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x98, 0x00}}, {2, [3]byte{0xc2, 0x99, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x9a, 0x00}}, {2, [3]byte{0xc2, 0x9b, 0x00}},\n\t\t{1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x9e, 0x00}}, {1, [3]byte{0x1a, 0x00, 0x00}},\n\t\t{1, [3]byte{0x20, 0x00, 0x00}}, {2, [3]byte{0xc2, 0xa0, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0xa4, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa7, 0x00}}, {2, [3]byte{0xc3, 0xb1, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa2, 0x00}}, {1, [3]byte{0x2e, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x28, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2b, 0x00, 0x00}}, {1, [3]byte{0x7c, 0x00, 0x00}},\n\t\t{1, [3]byte{0x26, 0x00, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xac, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}},\n\t\t{1, [3]byte{0x21, 0x00, 0x00}}, {1, [3]byte{0x24, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3b, 0x00, 0x00}}, {1, [3]byte{0x5e, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2d, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x84, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x83, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x87, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa6, 0x00}}, {1, [3]byte{0x2c, 0x00, 0x00}},\n\t\t{1, [3]byte{0x25, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x8c, 0x00}}, {1, [3]byte{0x60, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}},\n\t\t{1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3d, 0x00, 0x00}}, {1, [3]byte{0x22, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x98, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}},\n\t\t{1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}},\n\t\t{1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}},\n\t\t{1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}},\n\t\t{1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb0, 0x00}}, {2, [3]byte{0xc3, 0xbd, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xbe, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb0, 0x00}}, {1, [3]byte{0x6a, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6b, 0x00, 0x00}}, {1, [3]byte{0x6c, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6d, 0x00, 0x00}}, {1, [3]byte{0x6e, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6f, 0x00, 0x00}}, {1, [3]byte{0x70, 0x00, 0x00}},\n\t\t{1, [3]byte{0x71, 0x00, 0x00}}, {1, [3]byte{0x72, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xba, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xb8, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc2, 0xa4, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb5, 0x00}}, {1, [3]byte{0x7e, 0x00, 0x00}},\n\t\t{1, [3]byte{0x73, 0x00, 0x00}}, {1, [3]byte{0x74, 0x00, 0x00}},\n\t\t{1, [3]byte{0x75, 0x00, 0x00}}, {1, [3]byte{0x76, 0x00, 0x00}},\n\t\t{1, [3]byte{0x77, 0x00, 0x00}}, {1, [3]byte{0x78, 0x00, 0x00}},\n\t\t{1, [3]byte{0x79, 0x00, 0x00}}, {1, [3]byte{0x7a, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa1, 0x00}}, {2, [3]byte{0xc2, 0xbf, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x90, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x9e, 0x00}}, {2, [3]byte{0xc2, 0xae, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa5, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa9, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xbc, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xbd, 0x00}}, {2, [3]byte{0xc2, 0xbe, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x9d, 0x00}}, {2, [3]byte{0xc2, 0xa8, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xaf, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}},\n\t\t{1, [3]byte{0x7b, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}},\n\t\t{1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}},\n\t\t{1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}},\n\t\t{1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}},\n\t\t{1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xad, 0x00}}, {2, [3]byte{0xc3, 0xb4, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb2, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}},\n\t\t{1, [3]byte{0x7d, 0x00, 0x00}}, {1, [3]byte{0x4a, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4b, 0x00, 0x00}}, {1, [3]byte{0x4c, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4d, 0x00, 0x00}}, {1, [3]byte{0x4e, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4f, 0x00, 0x00}}, {1, [3]byte{0x50, 0x00, 0x00}},\n\t\t{1, [3]byte{0x51, 0x00, 0x00}}, {1, [3]byte{0x52, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb9, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbf, 0x00}},\n\t\t{1, [3]byte{0x5c, 0x00, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}},\n\t\t{1, [3]byte{0x53, 0x00, 0x00}}, {1, [3]byte{0x54, 0x00, 0x00}},\n\t\t{1, [3]byte{0x55, 0x00, 0x00}}, {1, [3]byte{0x56, 0x00, 0x00}},\n\t\t{1, [3]byte{0x57, 0x00, 0x00}}, {1, [3]byte{0x58, 0x00, 0x00}},\n\t\t{1, [3]byte{0x59, 0x00, 0x00}}, {1, [3]byte{0x5a, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc3, 0x94, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x92, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x93, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}},\n\t\t{1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}},\n\t\t{1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}},\n\t\t{1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}},\n\t\t{1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}},\n\t\t{1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc2, 0x9f, 0x00}},\n\t},\n\tencode: [256]uint32{\n\t\t0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x37000004, 0x2d000005, 0x2e000006, 0x2f000007,\n\t\t0x16000008, 0x05000009, 0x2500000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f,\n\t\t0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x3c000014, 0x3d000015, 0x32000016, 0x26000017,\n\t\t0x18000018, 0x19000019, 0x3f00001a, 0x2700001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f,\n\t\t0x40000020, 0x5a000021, 0x7f000022, 0x7b000023, 0x5b000024, 0x6c000025, 0x50000026, 0x7d000027,\n\t\t0x4d000028, 0x5d000029, 0x5c00002a, 0x4e00002b, 0x6b00002c, 0x6000002d, 0x4b00002e, 0x6100002f,\n\t\t0xf0000030, 0xf1000031, 0xf2000032, 0xf3000033, 0xf4000034, 0xf5000035, 0xf6000036, 0xf7000037,\n\t\t0xf8000038, 0xf9000039, 0x7a00003a, 0x5e00003b, 0x4c00003c, 0x7e00003d, 0x6e00003e, 0x6f00003f,\n\t\t0x7c000040, 0xc1000041, 0xc2000042, 0xc3000043, 0xc4000044, 0xc5000045, 0xc6000046, 0xc7000047,\n\t\t0xc8000048, 0xc9000049, 0xd100004a, 0xd200004b, 0xd300004c, 0xd400004d, 0xd500004e, 0xd600004f,\n\t\t0xd7000050, 0xd8000051, 0xd9000052, 0xe2000053, 0xe3000054, 0xe4000055, 0xe5000056, 0xe6000057,\n\t\t0xe7000058, 0xe8000059, 0xe900005a, 0xad00005b, 0xe000005c, 0xbd00005d, 0x5f00005e, 0x6d00005f,\n\t\t0x79000060, 0x81000061, 0x82000062, 0x83000063, 0x84000064, 0x85000065, 0x86000066, 0x87000067,\n\t\t0x88000068, 0x89000069, 0x9100006a, 0x9200006b, 0x9300006c, 0x9400006d, 0x9500006e, 0x9600006f,\n\t\t0x97000070, 0x98000071, 0x99000072, 0xa2000073, 0xa3000074, 0xa4000075, 0xa5000076, 0xa6000077,\n\t\t0xa7000078, 0xa8000079, 0xa900007a, 0xc000007b, 0x4f00007c, 0xd000007d, 0xa100007e, 0x0700007f,\n\t\t0x20000080, 0x21000081, 0x22000082, 0x23000083, 0x24000084, 0x15000085, 0x06000086, 0x17000087,\n\t\t0x28000088, 0x29000089, 0x2a00008a, 0x2b00008b, 0x2c00008c, 0x0900008d, 0x0a00008e, 0x1b00008f,\n\t\t0x30000090, 0x31000091, 0x1a000092, 0x33000093, 0x34000094, 0x35000095, 0x36000096, 0x08000097,\n\t\t0x38000098, 0x39000099, 0x3a00009a, 0x3b00009b, 0x0400009c, 0x1400009d, 0x3e00009e, 0xff00009f,\n\t\t0x410000a0, 0xaa0000a1, 0x4a0000a2, 0xb10000a3, 0x9f0000a4, 0xb20000a5, 0x6a0000a6, 0xb50000a7,\n\t\t0xbb0000a8, 0xb40000a9, 0x9a0000aa, 0x8a0000ab, 0xb00000ac, 0xca0000ad, 0xaf0000ae, 0xbc0000af,\n\t\t0x900000b0, 0x8f0000b1, 0xea0000b2, 0xfa0000b3, 0xbe0000b4, 0xa00000b5, 0xb60000b6, 0xb30000b7,\n\t\t0x9d0000b8, 0xda0000b9, 0x9b0000ba, 0x8b0000bb, 0xb70000bc, 0xb80000bd, 0xb90000be, 0xab0000bf,\n\t\t0x640000c0, 0x650000c1, 0x620000c2, 0x660000c3, 0x630000c4, 0x670000c5, 0x9e0000c6, 0x680000c7,\n\t\t0x740000c8, 0x710000c9, 0x720000ca, 0x730000cb, 0x780000cc, 0x750000cd, 0x760000ce, 0x770000cf,\n\t\t0xac0000d0, 0x690000d1, 0xed0000d2, 0xee0000d3, 0xeb0000d4, 0xef0000d5, 0xec0000d6, 0xbf0000d7,\n\t\t0x800000d8, 0xfd0000d9, 0xfe0000da, 0xfb0000db, 0xfc0000dc, 0xba0000dd, 0xae0000de, 0x590000df,\n\t\t0x440000e0, 0x450000e1, 0x420000e2, 0x460000e3, 0x430000e4, 0x470000e5, 0x9c0000e6, 0x480000e7,\n\t\t0x540000e8, 0x510000e9, 0x520000ea, 0x530000eb, 0x580000ec, 0x550000ed, 0x560000ee, 0x570000ef,\n\t\t0x8c0000f0, 0x490000f1, 0xcd0000f2, 0xce0000f3, 0xcb0000f4, 0xcf0000f5, 0xcc0000f6, 0xe10000f7,\n\t\t0x700000f8, 0xdd0000f9, 0xde0000fa, 0xdb0000fb, 0xdc0000fc, 0x8d0000fd, 0x8e0000fe, 0xdf0000ff,\n\t},\n}\n\n// CodePage1140 is the IBM Code Page 1140 encoding.\nvar CodePage1140 *Charmap = &codePage1140\n\nvar codePage1140 = Charmap{\n\tname:          \"IBM Code Page 1140\",\n\tmib:           identifier.IBM01140,\n\tasciiSuperset: false,\n\tlow:           0x00,\n\treplacement:   0x3f,\n\tdecode: [256]utf8Enc{\n\t\t{1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}},\n\t\t{1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x9c, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x86, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x97, 0x00}}, {2, [3]byte{0xc2, 0x8d, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x8e, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}},\n\t\t{1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x9d, 0x00}}, {2, [3]byte{0xc2, 0x85, 0x00}},\n\t\t{1, [3]byte{0x08, 0x00, 0x00}}, {2, [3]byte{0xc2, 0x87, 0x00}},\n\t\t{1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x92, 0x00}}, {2, [3]byte{0xc2, 0x8f, 0x00}},\n\t\t{1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x80, 0x00}}, {2, [3]byte{0xc2, 0x81, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x82, 0x00}}, {2, [3]byte{0xc2, 0x83, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x84, 0x00}}, {1, [3]byte{0x0a, 0x00, 0x00}},\n\t\t{1, [3]byte{0x17, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x88, 0x00}}, {2, [3]byte{0xc2, 0x89, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x8a, 0x00}}, {2, [3]byte{0xc2, 0x8b, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x8c, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}},\n\t\t{1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x90, 0x00}}, {2, [3]byte{0xc2, 0x91, 0x00}},\n\t\t{1, [3]byte{0x16, 0x00, 0x00}}, {2, [3]byte{0xc2, 0x93, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x94, 0x00}}, {2, [3]byte{0xc2, 0x95, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x96, 0x00}}, {1, [3]byte{0x04, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x98, 0x00}}, {2, [3]byte{0xc2, 0x99, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x9a, 0x00}}, {2, [3]byte{0xc2, 0x9b, 0x00}},\n\t\t{1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x9e, 0x00}}, {1, [3]byte{0x1a, 0x00, 0x00}},\n\t\t{1, [3]byte{0x20, 0x00, 0x00}}, {2, [3]byte{0xc2, 0xa0, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0xa4, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa7, 0x00}}, {2, [3]byte{0xc3, 0xb1, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa2, 0x00}}, {1, [3]byte{0x2e, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x28, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2b, 0x00, 0x00}}, {1, [3]byte{0x7c, 0x00, 0x00}},\n\t\t{1, [3]byte{0x26, 0x00, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xac, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}},\n\t\t{1, [3]byte{0x21, 0x00, 0x00}}, {1, [3]byte{0x24, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3b, 0x00, 0x00}}, {2, [3]byte{0xc2, 0xac, 0x00}},\n\t\t{1, [3]byte{0x2d, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x84, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x83, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x87, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa6, 0x00}}, {1, [3]byte{0x2c, 0x00, 0x00}},\n\t\t{1, [3]byte{0x25, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x8c, 0x00}}, {1, [3]byte{0x60, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}},\n\t\t{1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3d, 0x00, 0x00}}, {1, [3]byte{0x22, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x98, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}},\n\t\t{1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}},\n\t\t{1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}},\n\t\t{1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}},\n\t\t{1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb0, 0x00}}, {2, [3]byte{0xc3, 0xbd, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xbe, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb0, 0x00}}, {1, [3]byte{0x6a, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6b, 0x00, 0x00}}, {1, [3]byte{0x6c, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6d, 0x00, 0x00}}, {1, [3]byte{0x6e, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6f, 0x00, 0x00}}, {1, [3]byte{0x70, 0x00, 0x00}},\n\t\t{1, [3]byte{0x71, 0x00, 0x00}}, {1, [3]byte{0x72, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xba, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xb8, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x86, 0x00}}, {3, [3]byte{0xe2, 0x82, 0xac}},\n\t\t{2, [3]byte{0xc2, 0xb5, 0x00}}, {1, [3]byte{0x7e, 0x00, 0x00}},\n\t\t{1, [3]byte{0x73, 0x00, 0x00}}, {1, [3]byte{0x74, 0x00, 0x00}},\n\t\t{1, [3]byte{0x75, 0x00, 0x00}}, {1, [3]byte{0x76, 0x00, 0x00}},\n\t\t{1, [3]byte{0x77, 0x00, 0x00}}, {1, [3]byte{0x78, 0x00, 0x00}},\n\t\t{1, [3]byte{0x79, 0x00, 0x00}}, {1, [3]byte{0x7a, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa1, 0x00}}, {2, [3]byte{0xc2, 0xbf, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x90, 0x00}}, {2, [3]byte{0xc3, 0x9d, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x9e, 0x00}}, {2, [3]byte{0xc2, 0xae, 0x00}},\n\t\t{1, [3]byte{0x5e, 0x00, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa5, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa9, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xbc, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xbd, 0x00}}, {2, [3]byte{0xc2, 0xbe, 0x00}},\n\t\t{1, [3]byte{0x5b, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xaf, 0x00}}, {2, [3]byte{0xc2, 0xa8, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}},\n\t\t{1, [3]byte{0x7b, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}},\n\t\t{1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}},\n\t\t{1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}},\n\t\t{1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}},\n\t\t{1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xad, 0x00}}, {2, [3]byte{0xc3, 0xb4, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb2, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}},\n\t\t{1, [3]byte{0x7d, 0x00, 0x00}}, {1, [3]byte{0x4a, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4b, 0x00, 0x00}}, {1, [3]byte{0x4c, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4d, 0x00, 0x00}}, {1, [3]byte{0x4e, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4f, 0x00, 0x00}}, {1, [3]byte{0x50, 0x00, 0x00}},\n\t\t{1, [3]byte{0x51, 0x00, 0x00}}, {1, [3]byte{0x52, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb9, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbf, 0x00}},\n\t\t{1, [3]byte{0x5c, 0x00, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}},\n\t\t{1, [3]byte{0x53, 0x00, 0x00}}, {1, [3]byte{0x54, 0x00, 0x00}},\n\t\t{1, [3]byte{0x55, 0x00, 0x00}}, {1, [3]byte{0x56, 0x00, 0x00}},\n\t\t{1, [3]byte{0x57, 0x00, 0x00}}, {1, [3]byte{0x58, 0x00, 0x00}},\n\t\t{1, [3]byte{0x59, 0x00, 0x00}}, {1, [3]byte{0x5a, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc3, 0x94, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x92, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x93, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}},\n\t\t{1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}},\n\t\t{1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}},\n\t\t{1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}},\n\t\t{1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}},\n\t\t{1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc2, 0x9f, 0x00}},\n\t},\n\tencode: [256]uint32{\n\t\t0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x37000004, 0x2d000005, 0x2e000006, 0x2f000007,\n\t\t0x16000008, 0x05000009, 0x2500000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f,\n\t\t0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x3c000014, 0x3d000015, 0x32000016, 0x26000017,\n\t\t0x18000018, 0x19000019, 0x3f00001a, 0x2700001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f,\n\t\t0x40000020, 0x5a000021, 0x7f000022, 0x7b000023, 0x5b000024, 0x6c000025, 0x50000026, 0x7d000027,\n\t\t0x4d000028, 0x5d000029, 0x5c00002a, 0x4e00002b, 0x6b00002c, 0x6000002d, 0x4b00002e, 0x6100002f,\n\t\t0xf0000030, 0xf1000031, 0xf2000032, 0xf3000033, 0xf4000034, 0xf5000035, 0xf6000036, 0xf7000037,\n\t\t0xf8000038, 0xf9000039, 0x7a00003a, 0x5e00003b, 0x4c00003c, 0x7e00003d, 0x6e00003e, 0x6f00003f,\n\t\t0x7c000040, 0xc1000041, 0xc2000042, 0xc3000043, 0xc4000044, 0xc5000045, 0xc6000046, 0xc7000047,\n\t\t0xc8000048, 0xc9000049, 0xd100004a, 0xd200004b, 0xd300004c, 0xd400004d, 0xd500004e, 0xd600004f,\n\t\t0xd7000050, 0xd8000051, 0xd9000052, 0xe2000053, 0xe3000054, 0xe4000055, 0xe5000056, 0xe6000057,\n\t\t0xe7000058, 0xe8000059, 0xe900005a, 0xba00005b, 0xe000005c, 0xbb00005d, 0xb000005e, 0x6d00005f,\n\t\t0x79000060, 0x81000061, 0x82000062, 0x83000063, 0x84000064, 0x85000065, 0x86000066, 0x87000067,\n\t\t0x88000068, 0x89000069, 0x9100006a, 0x9200006b, 0x9300006c, 0x9400006d, 0x9500006e, 0x9600006f,\n\t\t0x97000070, 0x98000071, 0x99000072, 0xa2000073, 0xa3000074, 0xa4000075, 0xa5000076, 0xa6000077,\n\t\t0xa7000078, 0xa8000079, 0xa900007a, 0xc000007b, 0x4f00007c, 0xd000007d, 0xa100007e, 0x0700007f,\n\t\t0x20000080, 0x21000081, 0x22000082, 0x23000083, 0x24000084, 0x15000085, 0x06000086, 0x17000087,\n\t\t0x28000088, 0x29000089, 0x2a00008a, 0x2b00008b, 0x2c00008c, 0x0900008d, 0x0a00008e, 0x1b00008f,\n\t\t0x30000090, 0x31000091, 0x1a000092, 0x33000093, 0x34000094, 0x35000095, 0x36000096, 0x08000097,\n\t\t0x38000098, 0x39000099, 0x3a00009a, 0x3b00009b, 0x0400009c, 0x1400009d, 0x3e00009e, 0xff00009f,\n\t\t0x410000a0, 0xaa0000a1, 0x4a0000a2, 0xb10000a3, 0xb20000a5, 0x6a0000a6, 0xb50000a7, 0xbd0000a8,\n\t\t0xb40000a9, 0x9a0000aa, 0x8a0000ab, 0x5f0000ac, 0xca0000ad, 0xaf0000ae, 0xbc0000af, 0x900000b0,\n\t\t0x8f0000b1, 0xea0000b2, 0xfa0000b3, 0xbe0000b4, 0xa00000b5, 0xb60000b6, 0xb30000b7, 0x9d0000b8,\n\t\t0xda0000b9, 0x9b0000ba, 0x8b0000bb, 0xb70000bc, 0xb80000bd, 0xb90000be, 0xab0000bf, 0x640000c0,\n\t\t0x650000c1, 0x620000c2, 0x660000c3, 0x630000c4, 0x670000c5, 0x9e0000c6, 0x680000c7, 0x740000c8,\n\t\t0x710000c9, 0x720000ca, 0x730000cb, 0x780000cc, 0x750000cd, 0x760000ce, 0x770000cf, 0xac0000d0,\n\t\t0x690000d1, 0xed0000d2, 0xee0000d3, 0xeb0000d4, 0xef0000d5, 0xec0000d6, 0xbf0000d7, 0x800000d8,\n\t\t0xfd0000d9, 0xfe0000da, 0xfb0000db, 0xfc0000dc, 0xad0000dd, 0xae0000de, 0x590000df, 0x440000e0,\n\t\t0x450000e1, 0x420000e2, 0x460000e3, 0x430000e4, 0x470000e5, 0x9c0000e6, 0x480000e7, 0x540000e8,\n\t\t0x510000e9, 0x520000ea, 0x530000eb, 0x580000ec, 0x550000ed, 0x560000ee, 0x570000ef, 0x8c0000f0,\n\t\t0x490000f1, 0xcd0000f2, 0xce0000f3, 0xcb0000f4, 0xcf0000f5, 0xcc0000f6, 0xe10000f7, 0x700000f8,\n\t\t0xdd0000f9, 0xde0000fa, 0xdb0000fb, 0xdc0000fc, 0x8d0000fd, 0x8e0000fe, 0xdf0000ff, 0x9f0020ac,\n\t},\n}\n\n// ISO8859_1 is the ISO 8859-1 encoding.\nvar ISO8859_1 *Charmap = &iso8859_1\n\nvar iso8859_1 = Charmap{\n\tname:          \"ISO 8859-1\",\n\tmib:           identifier.ISOLatin1,\n\tasciiSuperset: true,\n\tlow:           0x80,\n\treplacement:   0x1a,\n\tdecode: [256]utf8Enc{\n\t\t{1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}},\n\t\t{1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}},\n\t\t{1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}},\n\t\t{1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}},\n\t\t{1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}},\n\t\t{1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}},\n\t\t{1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}},\n\t\t{1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}},\n\t\t{1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}},\n\t\t{1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}},\n\t\t{1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}},\n\t\t{1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}},\n\t\t{1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}},\n\t\t{1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}},\n\t\t{1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}},\n\t\t{1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}},\n\t\t{1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}},\n\t\t{1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}},\n\t\t{1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}},\n\t\t{1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}},\n\t\t{1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}},\n\t\t{1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}},\n\t\t{1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}},\n\t\t{1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}},\n\t\t{1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}},\n\t\t{1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}},\n\t\t{1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}},\n\t\t{1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}},\n\t\t{1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}},\n\t\t{1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}},\n\t\t{1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}},\n\t\t{1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}},\n\t\t{1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x80, 0x00}}, {2, [3]byte{0xc2, 0x81, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x82, 0x00}}, {2, [3]byte{0xc2, 0x83, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x84, 0x00}}, {2, [3]byte{0xc2, 0x85, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x86, 0x00}}, {2, [3]byte{0xc2, 0x87, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x88, 0x00}}, {2, [3]byte{0xc2, 0x89, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x8a, 0x00}}, {2, [3]byte{0xc2, 0x8b, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x8c, 0x00}}, {2, [3]byte{0xc2, 0x8d, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x8e, 0x00}}, {2, [3]byte{0xc2, 0x8f, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x90, 0x00}}, {2, [3]byte{0xc2, 0x91, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x92, 0x00}}, {2, [3]byte{0xc2, 0x93, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x94, 0x00}}, {2, [3]byte{0xc2, 0x95, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x96, 0x00}}, {2, [3]byte{0xc2, 0x97, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x98, 0x00}}, {2, [3]byte{0xc2, 0x99, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x9a, 0x00}}, {2, [3]byte{0xc2, 0x9b, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x9c, 0x00}}, {2, [3]byte{0xc2, 0x9d, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x9e, 0x00}}, {2, [3]byte{0xc2, 0x9f, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa2, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa4, 0x00}}, {2, [3]byte{0xc2, 0xa5, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc2, 0xaf, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc2, 0xb3, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb8, 0x00}}, {2, [3]byte{0xc2, 0xb9, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xba, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xbe, 0x00}}, {2, [3]byte{0xc2, 0xbf, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x83, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc3, 0x87, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x90, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x92, 0x00}}, {2, [3]byte{0xc3, 0x93, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x98, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0x9d, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x9e, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0xa3, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xac, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb0, 0x00}}, {2, [3]byte{0xc3, 0xb1, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb2, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb4, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc3, 0xbd, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xbe, 0x00}}, {2, [3]byte{0xc3, 0xbf, 0x00}},\n\t},\n\tencode: [256]uint32{\n\t\t0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007,\n\t\t0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f,\n\t\t0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017,\n\t\t0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f,\n\t\t0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027,\n\t\t0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f,\n\t\t0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037,\n\t\t0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f,\n\t\t0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047,\n\t\t0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f,\n\t\t0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057,\n\t\t0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f,\n\t\t0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067,\n\t\t0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f,\n\t\t0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077,\n\t\t0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f,\n\t\t0x80000080, 0x81000081, 0x82000082, 0x83000083, 0x84000084, 0x85000085, 0x86000086, 0x87000087,\n\t\t0x88000088, 0x89000089, 0x8a00008a, 0x8b00008b, 0x8c00008c, 0x8d00008d, 0x8e00008e, 0x8f00008f,\n\t\t0x90000090, 0x91000091, 0x92000092, 0x93000093, 0x94000094, 0x95000095, 0x96000096, 0x97000097,\n\t\t0x98000098, 0x99000099, 0x9a00009a, 0x9b00009b, 0x9c00009c, 0x9d00009d, 0x9e00009e, 0x9f00009f,\n\t\t0xa00000a0, 0xa10000a1, 0xa20000a2, 0xa30000a3, 0xa40000a4, 0xa50000a5, 0xa60000a6, 0xa70000a7,\n\t\t0xa80000a8, 0xa90000a9, 0xaa0000aa, 0xab0000ab, 0xac0000ac, 0xad0000ad, 0xae0000ae, 0xaf0000af,\n\t\t0xb00000b0, 0xb10000b1, 0xb20000b2, 0xb30000b3, 0xb40000b4, 0xb50000b5, 0xb60000b6, 0xb70000b7,\n\t\t0xb80000b8, 0xb90000b9, 0xba0000ba, 0xbb0000bb, 0xbc0000bc, 0xbd0000bd, 0xbe0000be, 0xbf0000bf,\n\t\t0xc00000c0, 0xc10000c1, 0xc20000c2, 0xc30000c3, 0xc40000c4, 0xc50000c5, 0xc60000c6, 0xc70000c7,\n\t\t0xc80000c8, 0xc90000c9, 0xca0000ca, 0xcb0000cb, 0xcc0000cc, 0xcd0000cd, 0xce0000ce, 0xcf0000cf,\n\t\t0xd00000d0, 0xd10000d1, 0xd20000d2, 0xd30000d3, 0xd40000d4, 0xd50000d5, 0xd60000d6, 0xd70000d7,\n\t\t0xd80000d8, 0xd90000d9, 0xda0000da, 0xdb0000db, 0xdc0000dc, 0xdd0000dd, 0xde0000de, 0xdf0000df,\n\t\t0xe00000e0, 0xe10000e1, 0xe20000e2, 0xe30000e3, 0xe40000e4, 0xe50000e5, 0xe60000e6, 0xe70000e7,\n\t\t0xe80000e8, 0xe90000e9, 0xea0000ea, 0xeb0000eb, 0xec0000ec, 0xed0000ed, 0xee0000ee, 0xef0000ef,\n\t\t0xf00000f0, 0xf10000f1, 0xf20000f2, 0xf30000f3, 0xf40000f4, 0xf50000f5, 0xf60000f6, 0xf70000f7,\n\t\t0xf80000f8, 0xf90000f9, 0xfa0000fa, 0xfb0000fb, 0xfc0000fc, 0xfd0000fd, 0xfe0000fe, 0xff0000ff,\n\t},\n}\n\n// ISO8859_2 is the ISO 8859-2 encoding.\nvar ISO8859_2 *Charmap = &iso8859_2\n\nvar iso8859_2 = Charmap{\n\tname:          \"ISO 8859-2\",\n\tmib:           identifier.ISOLatin2,\n\tasciiSuperset: true,\n\tlow:           0x80,\n\treplacement:   0x1a,\n\tdecode: [256]utf8Enc{\n\t\t{1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}},\n\t\t{1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}},\n\t\t{1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}},\n\t\t{1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}},\n\t\t{1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}},\n\t\t{1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}},\n\t\t{1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}},\n\t\t{1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}},\n\t\t{1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}},\n\t\t{1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}},\n\t\t{1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}},\n\t\t{1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}},\n\t\t{1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}},\n\t\t{1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}},\n\t\t{1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}},\n\t\t{1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}},\n\t\t{1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}},\n\t\t{1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}},\n\t\t{1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}},\n\t\t{1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}},\n\t\t{1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}},\n\t\t{1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}},\n\t\t{1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}},\n\t\t{1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}},\n\t\t{1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}},\n\t\t{1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}},\n\t\t{1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}},\n\t\t{1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}},\n\t\t{1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}},\n\t\t{1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}},\n\t\t{1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}},\n\t\t{1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}},\n\t\t{1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xc4, 0x84, 0x00}},\n\t\t{2, [3]byte{0xcb, 0x98, 0x00}}, {2, [3]byte{0xc5, 0x81, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa4, 0x00}}, {2, [3]byte{0xc4, 0xbd, 0x00}},\n\t\t{2, [3]byte{0xc5, 0x9a, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc5, 0xa0, 0x00}},\n\t\t{2, [3]byte{0xc5, 0x9e, 0x00}}, {2, [3]byte{0xc5, 0xa4, 0x00}},\n\t\t{2, [3]byte{0xc5, 0xb9, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}},\n\t\t{2, [3]byte{0xc5, 0xbd, 0x00}}, {2, [3]byte{0xc5, 0xbb, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc4, 0x85, 0x00}},\n\t\t{2, [3]byte{0xcb, 0x9b, 0x00}}, {2, [3]byte{0xc5, 0x82, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc4, 0xbe, 0x00}},\n\t\t{2, [3]byte{0xc5, 0x9b, 0x00}}, {2, [3]byte{0xcb, 0x87, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb8, 0x00}}, {2, [3]byte{0xc5, 0xa1, 0x00}},\n\t\t{2, [3]byte{0xc5, 0x9f, 0x00}}, {2, [3]byte{0xc5, 0xa5, 0x00}},\n\t\t{2, [3]byte{0xc5, 0xba, 0x00}}, {2, [3]byte{0xcb, 0x9d, 0x00}},\n\t\t{2, [3]byte{0xc5, 0xbe, 0x00}}, {2, [3]byte{0xc5, 0xbc, 0x00}},\n\t\t{2, [3]byte{0xc5, 0x94, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc4, 0x82, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc4, 0xb9, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x86, 0x00}}, {2, [3]byte{0xc3, 0x87, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x98, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc4, 0x8e, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x90, 0x00}}, {2, [3]byte{0xc5, 0x83, 0x00}},\n\t\t{2, [3]byte{0xc5, 0x87, 0x00}}, {2, [3]byte{0xc3, 0x93, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc5, 0x90, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}},\n\t\t{2, [3]byte{0xc5, 0x98, 0x00}}, {2, [3]byte{0xc5, 0xae, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc5, 0xb0, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0x9d, 0x00}},\n\t\t{2, [3]byte{0xc5, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}},\n\t\t{2, [3]byte{0xc5, 0x95, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc4, 0x83, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc4, 0xba, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x87, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x8d, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x99, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x9b, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc4, 0x8f, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x91, 0x00}}, {2, [3]byte{0xc5, 0x84, 0x00}},\n\t\t{2, [3]byte{0xc5, 0x88, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb4, 0x00}}, {2, [3]byte{0xc5, 0x91, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}},\n\t\t{2, [3]byte{0xc5, 0x99, 0x00}}, {2, [3]byte{0xc5, 0xaf, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc5, 0xb1, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc3, 0xbd, 0x00}},\n\t\t{2, [3]byte{0xc5, 0xa3, 0x00}}, {2, [3]byte{0xcb, 0x99, 0x00}},\n\t},\n\tencode: [256]uint32{\n\t\t0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007,\n\t\t0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f,\n\t\t0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017,\n\t\t0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f,\n\t\t0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027,\n\t\t0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f,\n\t\t0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037,\n\t\t0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f,\n\t\t0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047,\n\t\t0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f,\n\t\t0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057,\n\t\t0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f,\n\t\t0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067,\n\t\t0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f,\n\t\t0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077,\n\t\t0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f,\n\t\t0xa00000a0, 0xa40000a4, 0xa70000a7, 0xa80000a8, 0xad0000ad, 0xb00000b0, 0xb40000b4, 0xb80000b8,\n\t\t0xc10000c1, 0xc20000c2, 0xc40000c4, 0xc70000c7, 0xc90000c9, 0xcb0000cb, 0xcd0000cd, 0xce0000ce,\n\t\t0xd30000d3, 0xd40000d4, 0xd60000d6, 0xd70000d7, 0xda0000da, 0xdc0000dc, 0xdd0000dd, 0xdf0000df,\n\t\t0xe10000e1, 0xe20000e2, 0xe40000e4, 0xe70000e7, 0xe90000e9, 0xeb0000eb, 0xed0000ed, 0xee0000ee,\n\t\t0xf30000f3, 0xf40000f4, 0xf60000f6, 0xf70000f7, 0xfa0000fa, 0xfc0000fc, 0xfd0000fd, 0xc3000102,\n\t\t0xe3000103, 0xa1000104, 0xb1000105, 0xc6000106, 0xe6000107, 0xc800010c, 0xe800010d, 0xcf00010e,\n\t\t0xef00010f, 0xd0000110, 0xf0000111, 0xca000118, 0xea000119, 0xcc00011a, 0xec00011b, 0xc5000139,\n\t\t0xe500013a, 0xa500013d, 0xb500013e, 0xa3000141, 0xb3000142, 0xd1000143, 0xf1000144, 0xd2000147,\n\t\t0xf2000148, 0xd5000150, 0xf5000151, 0xc0000154, 0xe0000155, 0xd8000158, 0xf8000159, 0xa600015a,\n\t\t0xb600015b, 0xaa00015e, 0xba00015f, 0xa9000160, 0xb9000161, 0xde000162, 0xfe000163, 0xab000164,\n\t\t0xbb000165, 0xd900016e, 0xf900016f, 0xdb000170, 0xfb000171, 0xac000179, 0xbc00017a, 0xaf00017b,\n\t\t0xbf00017c, 0xae00017d, 0xbe00017e, 0xb70002c7, 0xa20002d8, 0xff0002d9, 0xb20002db, 0xbd0002dd,\n\t\t0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd,\n\t\t0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd,\n\t\t0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd,\n\t\t0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd,\n\t},\n}\n\n// ISO8859_3 is the ISO 8859-3 encoding.\nvar ISO8859_3 *Charmap = &iso8859_3\n\nvar iso8859_3 = Charmap{\n\tname:          \"ISO 8859-3\",\n\tmib:           identifier.ISOLatin3,\n\tasciiSuperset: true,\n\tlow:           0x80,\n\treplacement:   0x1a,\n\tdecode: [256]utf8Enc{\n\t\t{1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}},\n\t\t{1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}},\n\t\t{1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}},\n\t\t{1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}},\n\t\t{1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}},\n\t\t{1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}},\n\t\t{1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}},\n\t\t{1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}},\n\t\t{1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}},\n\t\t{1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}},\n\t\t{1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}},\n\t\t{1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}},\n\t\t{1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}},\n\t\t{1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}},\n\t\t{1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}},\n\t\t{1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}},\n\t\t{1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}},\n\t\t{1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}},\n\t\t{1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}},\n\t\t{1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}},\n\t\t{1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}},\n\t\t{1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}},\n\t\t{1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}},\n\t\t{1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}},\n\t\t{1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}},\n\t\t{1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}},\n\t\t{1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}},\n\t\t{1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}},\n\t\t{1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}},\n\t\t{1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}},\n\t\t{1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}},\n\t\t{1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}},\n\t\t{1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xc4, 0xa6, 0x00}},\n\t\t{2, [3]byte{0xcb, 0x98, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa4, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{2, [3]byte{0xc4, 0xa4, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc4, 0xb0, 0x00}},\n\t\t{2, [3]byte{0xc5, 0x9e, 0x00}}, {2, [3]byte{0xc4, 0x9e, 0x00}},\n\t\t{2, [3]byte{0xc4, 0xb4, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {2, [3]byte{0xc5, 0xbb, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc4, 0xa7, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc2, 0xb3, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}},\n\t\t{2, [3]byte{0xc4, 0xa5, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb8, 0x00}}, {2, [3]byte{0xc4, 0xb1, 0x00}},\n\t\t{2, [3]byte{0xc5, 0x9f, 0x00}}, {2, [3]byte{0xc4, 0x9f, 0x00}},\n\t\t{2, [3]byte{0xc4, 0xb5, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {2, [3]byte{0xc5, 0xbc, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x82, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc4, 0x8a, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x87, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {2, [3]byte{0xc3, 0x91, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x92, 0x00}}, {2, [3]byte{0xc3, 0x93, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc4, 0xa0, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc5, 0xac, 0x00}},\n\t\t{2, [3]byte{0xc5, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa2, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc4, 0x8b, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x89, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xac, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {2, [3]byte{0xc3, 0xb1, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb2, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb4, 0x00}}, {2, [3]byte{0xc4, 0xa1, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x9d, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc5, 0xad, 0x00}},\n\t\t{2, [3]byte{0xc5, 0x9d, 0x00}}, {2, [3]byte{0xcb, 0x99, 0x00}},\n\t},\n\tencode: [256]uint32{\n\t\t0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007,\n\t\t0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f,\n\t\t0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017,\n\t\t0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f,\n\t\t0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027,\n\t\t0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f,\n\t\t0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037,\n\t\t0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f,\n\t\t0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047,\n\t\t0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f,\n\t\t0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057,\n\t\t0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f,\n\t\t0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067,\n\t\t0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f,\n\t\t0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077,\n\t\t0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f,\n\t\t0xa00000a0, 0xa30000a3, 0xa40000a4, 0xa70000a7, 0xa80000a8, 0xad0000ad, 0xb00000b0, 0xb20000b2,\n\t\t0xb30000b3, 0xb40000b4, 0xb50000b5, 0xb70000b7, 0xb80000b8, 0xbd0000bd, 0xc00000c0, 0xc10000c1,\n\t\t0xc20000c2, 0xc40000c4, 0xc70000c7, 0xc80000c8, 0xc90000c9, 0xca0000ca, 0xcb0000cb, 0xcc0000cc,\n\t\t0xcd0000cd, 0xce0000ce, 0xcf0000cf, 0xd10000d1, 0xd20000d2, 0xd30000d3, 0xd40000d4, 0xd60000d6,\n\t\t0xd70000d7, 0xd90000d9, 0xda0000da, 0xdb0000db, 0xdc0000dc, 0xdf0000df, 0xe00000e0, 0xe10000e1,\n\t\t0xe20000e2, 0xe40000e4, 0xe70000e7, 0xe80000e8, 0xe90000e9, 0xea0000ea, 0xeb0000eb, 0xec0000ec,\n\t\t0xed0000ed, 0xee0000ee, 0xef0000ef, 0xf10000f1, 0xf20000f2, 0xf30000f3, 0xf40000f4, 0xf60000f6,\n\t\t0xf70000f7, 0xf90000f9, 0xfa0000fa, 0xfb0000fb, 0xfc0000fc, 0xc6000108, 0xe6000109, 0xc500010a,\n\t\t0xe500010b, 0xd800011c, 0xf800011d, 0xab00011e, 0xbb00011f, 0xd5000120, 0xf5000121, 0xa6000124,\n\t\t0xb6000125, 0xa1000126, 0xb1000127, 0xa9000130, 0xb9000131, 0xac000134, 0xbc000135, 0xde00015c,\n\t\t0xfe00015d, 0xaa00015e, 0xba00015f, 0xdd00016c, 0xfd00016d, 0xaf00017b, 0xbf00017c, 0xa20002d8,\n\t\t0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9,\n\t\t0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9,\n\t\t0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9,\n\t\t0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9,\n\t\t0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9,\n\t},\n}\n\n// ISO8859_4 is the ISO 8859-4 encoding.\nvar ISO8859_4 *Charmap = &iso8859_4\n\nvar iso8859_4 = Charmap{\n\tname:          \"ISO 8859-4\",\n\tmib:           identifier.ISOLatin4,\n\tasciiSuperset: true,\n\tlow:           0x80,\n\treplacement:   0x1a,\n\tdecode: [256]utf8Enc{\n\t\t{1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}},\n\t\t{1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}},\n\t\t{1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}},\n\t\t{1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}},\n\t\t{1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}},\n\t\t{1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}},\n\t\t{1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}},\n\t\t{1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}},\n\t\t{1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}},\n\t\t{1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}},\n\t\t{1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}},\n\t\t{1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}},\n\t\t{1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}},\n\t\t{1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}},\n\t\t{1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}},\n\t\t{1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}},\n\t\t{1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}},\n\t\t{1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}},\n\t\t{1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}},\n\t\t{1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}},\n\t\t{1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}},\n\t\t{1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}},\n\t\t{1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}},\n\t\t{1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}},\n\t\t{1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}},\n\t\t{1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}},\n\t\t{1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}},\n\t\t{1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}},\n\t\t{1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}},\n\t\t{1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}},\n\t\t{1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}},\n\t\t{1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}},\n\t\t{1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xc4, 0x84, 0x00}},\n\t\t{2, [3]byte{0xc4, 0xb8, 0x00}}, {2, [3]byte{0xc5, 0x96, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa4, 0x00}}, {2, [3]byte{0xc4, 0xa8, 0x00}},\n\t\t{2, [3]byte{0xc4, 0xbb, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc5, 0xa0, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x92, 0x00}}, {2, [3]byte{0xc4, 0xa2, 0x00}},\n\t\t{2, [3]byte{0xc5, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}},\n\t\t{2, [3]byte{0xc5, 0xbd, 0x00}}, {2, [3]byte{0xc2, 0xaf, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc4, 0x85, 0x00}},\n\t\t{2, [3]byte{0xcb, 0x9b, 0x00}}, {2, [3]byte{0xc5, 0x97, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc4, 0xa9, 0x00}},\n\t\t{2, [3]byte{0xc4, 0xbc, 0x00}}, {2, [3]byte{0xcb, 0x87, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb8, 0x00}}, {2, [3]byte{0xc5, 0xa1, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x93, 0x00}}, {2, [3]byte{0xc4, 0xa3, 0x00}},\n\t\t{2, [3]byte{0xc5, 0xa7, 0x00}}, {2, [3]byte{0xc5, 0x8a, 0x00}},\n\t\t{2, [3]byte{0xc5, 0xbe, 0x00}}, {2, [3]byte{0xc5, 0x8b, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x83, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc4, 0xae, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x98, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc4, 0xaa, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x90, 0x00}}, {2, [3]byte{0xc5, 0x85, 0x00}},\n\t\t{2, [3]byte{0xc5, 0x8c, 0x00}}, {2, [3]byte{0xc4, 0xb6, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x98, 0x00}}, {2, [3]byte{0xc5, 0xb2, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc5, 0xa8, 0x00}},\n\t\t{2, [3]byte{0xc5, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x81, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0xa3, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc4, 0xaf, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x8d, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x99, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x97, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc4, 0xab, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x91, 0x00}}, {2, [3]byte{0xc5, 0x86, 0x00}},\n\t\t{2, [3]byte{0xc5, 0x8d, 0x00}}, {2, [3]byte{0xc4, 0xb7, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb4, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc5, 0xb3, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc5, 0xa9, 0x00}},\n\t\t{2, [3]byte{0xc5, 0xab, 0x00}}, {2, [3]byte{0xcb, 0x99, 0x00}},\n\t},\n\tencode: [256]uint32{\n\t\t0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007,\n\t\t0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f,\n\t\t0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017,\n\t\t0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f,\n\t\t0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027,\n\t\t0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f,\n\t\t0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037,\n\t\t0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f,\n\t\t0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047,\n\t\t0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f,\n\t\t0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057,\n\t\t0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f,\n\t\t0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067,\n\t\t0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f,\n\t\t0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077,\n\t\t0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f,\n\t\t0xa00000a0, 0xa40000a4, 0xa70000a7, 0xa80000a8, 0xad0000ad, 0xaf0000af, 0xb00000b0, 0xb40000b4,\n\t\t0xb80000b8, 0xc10000c1, 0xc20000c2, 0xc30000c3, 0xc40000c4, 0xc50000c5, 0xc60000c6, 0xc90000c9,\n\t\t0xcb0000cb, 0xcd0000cd, 0xce0000ce, 0xd40000d4, 0xd50000d5, 0xd60000d6, 0xd70000d7, 0xd80000d8,\n\t\t0xda0000da, 0xdb0000db, 0xdc0000dc, 0xdf0000df, 0xe10000e1, 0xe20000e2, 0xe30000e3, 0xe40000e4,\n\t\t0xe50000e5, 0xe60000e6, 0xe90000e9, 0xeb0000eb, 0xed0000ed, 0xee0000ee, 0xf40000f4, 0xf50000f5,\n\t\t0xf60000f6, 0xf70000f7, 0xf80000f8, 0xfa0000fa, 0xfb0000fb, 0xfc0000fc, 0xc0000100, 0xe0000101,\n\t\t0xa1000104, 0xb1000105, 0xc800010c, 0xe800010d, 0xd0000110, 0xf0000111, 0xaa000112, 0xba000113,\n\t\t0xcc000116, 0xec000117, 0xca000118, 0xea000119, 0xab000122, 0xbb000123, 0xa5000128, 0xb5000129,\n\t\t0xcf00012a, 0xef00012b, 0xc700012e, 0xe700012f, 0xd3000136, 0xf3000137, 0xa2000138, 0xa600013b,\n\t\t0xb600013c, 0xd1000145, 0xf1000146, 0xbd00014a, 0xbf00014b, 0xd200014c, 0xf200014d, 0xa3000156,\n\t\t0xb3000157, 0xa9000160, 0xb9000161, 0xac000166, 0xbc000167, 0xdd000168, 0xfd000169, 0xde00016a,\n\t\t0xfe00016b, 0xd9000172, 0xf9000173, 0xae00017d, 0xbe00017e, 0xb70002c7, 0xff0002d9, 0xb20002db,\n\t\t0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db,\n\t\t0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db,\n\t\t0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db,\n\t\t0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db,\n\t},\n}\n\n// ISO8859_5 is the ISO 8859-5 encoding.\nvar ISO8859_5 *Charmap = &iso8859_5\n\nvar iso8859_5 = Charmap{\n\tname:          \"ISO 8859-5\",\n\tmib:           identifier.ISOLatinCyrillic,\n\tasciiSuperset: true,\n\tlow:           0x80,\n\treplacement:   0x1a,\n\tdecode: [256]utf8Enc{\n\t\t{1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}},\n\t\t{1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}},\n\t\t{1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}},\n\t\t{1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}},\n\t\t{1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}},\n\t\t{1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}},\n\t\t{1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}},\n\t\t{1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}},\n\t\t{1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}},\n\t\t{1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}},\n\t\t{1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}},\n\t\t{1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}},\n\t\t{1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}},\n\t\t{1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}},\n\t\t{1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}},\n\t\t{1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}},\n\t\t{1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}},\n\t\t{1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}},\n\t\t{1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}},\n\t\t{1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}},\n\t\t{1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}},\n\t\t{1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}},\n\t\t{1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}},\n\t\t{1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}},\n\t\t{1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}},\n\t\t{1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}},\n\t\t{1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}},\n\t\t{1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}},\n\t\t{1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}},\n\t\t{1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}},\n\t\t{1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}},\n\t\t{1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}},\n\t\t{1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xd0, 0x81, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x82, 0x00}}, {2, [3]byte{0xd0, 0x83, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x84, 0x00}}, {2, [3]byte{0xd0, 0x85, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x86, 0x00}}, {2, [3]byte{0xd0, 0x87, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x88, 0x00}}, {2, [3]byte{0xd0, 0x89, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x8a, 0x00}}, {2, [3]byte{0xd0, 0x8b, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x8c, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x8e, 0x00}}, {2, [3]byte{0xd0, 0x8f, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x90, 0x00}}, {2, [3]byte{0xd0, 0x91, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x92, 0x00}}, {2, [3]byte{0xd0, 0x93, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x94, 0x00}}, {2, [3]byte{0xd0, 0x95, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x96, 0x00}}, {2, [3]byte{0xd0, 0x97, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x98, 0x00}}, {2, [3]byte{0xd0, 0x99, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x9a, 0x00}}, {2, [3]byte{0xd0, 0x9b, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x9c, 0x00}}, {2, [3]byte{0xd0, 0x9d, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x9e, 0x00}}, {2, [3]byte{0xd0, 0x9f, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xa0, 0x00}}, {2, [3]byte{0xd0, 0xa1, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xa2, 0x00}}, {2, [3]byte{0xd0, 0xa3, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xa4, 0x00}}, {2, [3]byte{0xd0, 0xa5, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xa6, 0x00}}, {2, [3]byte{0xd0, 0xa7, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xa8, 0x00}}, {2, [3]byte{0xd0, 0xa9, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xaa, 0x00}}, {2, [3]byte{0xd0, 0xab, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xac, 0x00}}, {2, [3]byte{0xd0, 0xad, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xae, 0x00}}, {2, [3]byte{0xd0, 0xaf, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xb0, 0x00}}, {2, [3]byte{0xd0, 0xb1, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xb2, 0x00}}, {2, [3]byte{0xd0, 0xb3, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xb4, 0x00}}, {2, [3]byte{0xd0, 0xb5, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xb6, 0x00}}, {2, [3]byte{0xd0, 0xb7, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xb8, 0x00}}, {2, [3]byte{0xd0, 0xb9, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xba, 0x00}}, {2, [3]byte{0xd0, 0xbb, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xbc, 0x00}}, {2, [3]byte{0xd0, 0xbd, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xbe, 0x00}}, {2, [3]byte{0xd0, 0xbf, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x80, 0x00}}, {2, [3]byte{0xd1, 0x81, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x82, 0x00}}, {2, [3]byte{0xd1, 0x83, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x84, 0x00}}, {2, [3]byte{0xd1, 0x85, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x86, 0x00}}, {2, [3]byte{0xd1, 0x87, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x88, 0x00}}, {2, [3]byte{0xd1, 0x89, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x8a, 0x00}}, {2, [3]byte{0xd1, 0x8b, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x8c, 0x00}}, {2, [3]byte{0xd1, 0x8d, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x8e, 0x00}}, {2, [3]byte{0xd1, 0x8f, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x84, 0x96}}, {2, [3]byte{0xd1, 0x91, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x92, 0x00}}, {2, [3]byte{0xd1, 0x93, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x94, 0x00}}, {2, [3]byte{0xd1, 0x95, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x96, 0x00}}, {2, [3]byte{0xd1, 0x97, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x98, 0x00}}, {2, [3]byte{0xd1, 0x99, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x9a, 0x00}}, {2, [3]byte{0xd1, 0x9b, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x9c, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x9e, 0x00}}, {2, [3]byte{0xd1, 0x9f, 0x00}},\n\t},\n\tencode: [256]uint32{\n\t\t0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007,\n\t\t0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f,\n\t\t0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017,\n\t\t0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f,\n\t\t0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027,\n\t\t0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f,\n\t\t0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037,\n\t\t0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f,\n\t\t0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047,\n\t\t0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f,\n\t\t0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057,\n\t\t0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f,\n\t\t0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067,\n\t\t0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f,\n\t\t0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077,\n\t\t0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f,\n\t\t0xa00000a0, 0xfd0000a7, 0xad0000ad, 0xa1000401, 0xa2000402, 0xa3000403, 0xa4000404, 0xa5000405,\n\t\t0xa6000406, 0xa7000407, 0xa8000408, 0xa9000409, 0xaa00040a, 0xab00040b, 0xac00040c, 0xae00040e,\n\t\t0xaf00040f, 0xb0000410, 0xb1000411, 0xb2000412, 0xb3000413, 0xb4000414, 0xb5000415, 0xb6000416,\n\t\t0xb7000417, 0xb8000418, 0xb9000419, 0xba00041a, 0xbb00041b, 0xbc00041c, 0xbd00041d, 0xbe00041e,\n\t\t0xbf00041f, 0xc0000420, 0xc1000421, 0xc2000422, 0xc3000423, 0xc4000424, 0xc5000425, 0xc6000426,\n\t\t0xc7000427, 0xc8000428, 0xc9000429, 0xca00042a, 0xcb00042b, 0xcc00042c, 0xcd00042d, 0xce00042e,\n\t\t0xcf00042f, 0xd0000430, 0xd1000431, 0xd2000432, 0xd3000433, 0xd4000434, 0xd5000435, 0xd6000436,\n\t\t0xd7000437, 0xd8000438, 0xd9000439, 0xda00043a, 0xdb00043b, 0xdc00043c, 0xdd00043d, 0xde00043e,\n\t\t0xdf00043f, 0xe0000440, 0xe1000441, 0xe2000442, 0xe3000443, 0xe4000444, 0xe5000445, 0xe6000446,\n\t\t0xe7000447, 0xe8000448, 0xe9000449, 0xea00044a, 0xeb00044b, 0xec00044c, 0xed00044d, 0xee00044e,\n\t\t0xef00044f, 0xf1000451, 0xf2000452, 0xf3000453, 0xf4000454, 0xf5000455, 0xf6000456, 0xf7000457,\n\t\t0xf8000458, 0xf9000459, 0xfa00045a, 0xfb00045b, 0xfc00045c, 0xfe00045e, 0xff00045f, 0xf0002116,\n\t\t0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116,\n\t\t0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116,\n\t\t0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116,\n\t\t0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116,\n\t},\n}\n\n// ISO8859_6 is the ISO 8859-6 encoding.\nvar ISO8859_6 *Charmap = &iso8859_6\n\nvar iso8859_6 = Charmap{\n\tname:          \"ISO 8859-6\",\n\tmib:           identifier.ISOLatinArabic,\n\tasciiSuperset: true,\n\tlow:           0x80,\n\treplacement:   0x1a,\n\tdecode: [256]utf8Enc{\n\t\t{1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}},\n\t\t{1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}},\n\t\t{1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}},\n\t\t{1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}},\n\t\t{1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}},\n\t\t{1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}},\n\t\t{1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}},\n\t\t{1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}},\n\t\t{1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}},\n\t\t{1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}},\n\t\t{1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}},\n\t\t{1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}},\n\t\t{1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}},\n\t\t{1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}},\n\t\t{1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}},\n\t\t{1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}},\n\t\t{1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}},\n\t\t{1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}},\n\t\t{1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}},\n\t\t{1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}},\n\t\t{1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}},\n\t\t{1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}},\n\t\t{1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}},\n\t\t{1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}},\n\t\t{1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}},\n\t\t{1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}},\n\t\t{1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}},\n\t\t{1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}},\n\t\t{1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}},\n\t\t{1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}},\n\t\t{1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}},\n\t\t{1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}},\n\t\t{1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{2, [3]byte{0xc2, 0xa0, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{2, [3]byte{0xc2, 0xa4, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{2, [3]byte{0xd8, 0x8c, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {2, [3]byte{0xd8, 0x9b, 0x00}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {2, [3]byte{0xd8, 0x9f, 0x00}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {2, [3]byte{0xd8, 0xa1, 0x00}},\n\t\t{2, [3]byte{0xd8, 0xa2, 0x00}}, {2, [3]byte{0xd8, 0xa3, 0x00}},\n\t\t{2, [3]byte{0xd8, 0xa4, 0x00}}, {2, [3]byte{0xd8, 0xa5, 0x00}},\n\t\t{2, [3]byte{0xd8, 0xa6, 0x00}}, {2, [3]byte{0xd8, 0xa7, 0x00}},\n\t\t{2, [3]byte{0xd8, 0xa8, 0x00}}, {2, [3]byte{0xd8, 0xa9, 0x00}},\n\t\t{2, [3]byte{0xd8, 0xaa, 0x00}}, {2, [3]byte{0xd8, 0xab, 0x00}},\n\t\t{2, [3]byte{0xd8, 0xac, 0x00}}, {2, [3]byte{0xd8, 0xad, 0x00}},\n\t\t{2, [3]byte{0xd8, 0xae, 0x00}}, {2, [3]byte{0xd8, 0xaf, 0x00}},\n\t\t{2, [3]byte{0xd8, 0xb0, 0x00}}, {2, [3]byte{0xd8, 0xb1, 0x00}},\n\t\t{2, [3]byte{0xd8, 0xb2, 0x00}}, {2, [3]byte{0xd8, 0xb3, 0x00}},\n\t\t{2, [3]byte{0xd8, 0xb4, 0x00}}, {2, [3]byte{0xd8, 0xb5, 0x00}},\n\t\t{2, [3]byte{0xd8, 0xb6, 0x00}}, {2, [3]byte{0xd8, 0xb7, 0x00}},\n\t\t{2, [3]byte{0xd8, 0xb8, 0x00}}, {2, [3]byte{0xd8, 0xb9, 0x00}},\n\t\t{2, [3]byte{0xd8, 0xba, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{2, [3]byte{0xd9, 0x80, 0x00}}, {2, [3]byte{0xd9, 0x81, 0x00}},\n\t\t{2, [3]byte{0xd9, 0x82, 0x00}}, {2, [3]byte{0xd9, 0x83, 0x00}},\n\t\t{2, [3]byte{0xd9, 0x84, 0x00}}, {2, [3]byte{0xd9, 0x85, 0x00}},\n\t\t{2, [3]byte{0xd9, 0x86, 0x00}}, {2, [3]byte{0xd9, 0x87, 0x00}},\n\t\t{2, [3]byte{0xd9, 0x88, 0x00}}, {2, [3]byte{0xd9, 0x89, 0x00}},\n\t\t{2, [3]byte{0xd9, 0x8a, 0x00}}, {2, [3]byte{0xd9, 0x8b, 0x00}},\n\t\t{2, [3]byte{0xd9, 0x8c, 0x00}}, {2, [3]byte{0xd9, 0x8d, 0x00}},\n\t\t{2, [3]byte{0xd9, 0x8e, 0x00}}, {2, [3]byte{0xd9, 0x8f, 0x00}},\n\t\t{2, [3]byte{0xd9, 0x90, 0x00}}, {2, [3]byte{0xd9, 0x91, 0x00}},\n\t\t{2, [3]byte{0xd9, 0x92, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t},\n\tencode: [256]uint32{\n\t\t0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007,\n\t\t0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f,\n\t\t0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017,\n\t\t0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f,\n\t\t0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027,\n\t\t0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f,\n\t\t0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037,\n\t\t0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f,\n\t\t0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047,\n\t\t0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f,\n\t\t0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057,\n\t\t0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f,\n\t\t0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067,\n\t\t0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f,\n\t\t0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077,\n\t\t0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f,\n\t\t0xa00000a0, 0xa40000a4, 0xad0000ad, 0xac00060c, 0xbb00061b, 0xbf00061f, 0xc1000621, 0xc2000622,\n\t\t0xc3000623, 0xc4000624, 0xc5000625, 0xc6000626, 0xc7000627, 0xc8000628, 0xc9000629, 0xca00062a,\n\t\t0xcb00062b, 0xcc00062c, 0xcd00062d, 0xce00062e, 0xcf00062f, 0xd0000630, 0xd1000631, 0xd2000632,\n\t\t0xd3000633, 0xd4000634, 0xd5000635, 0xd6000636, 0xd7000637, 0xd8000638, 0xd9000639, 0xda00063a,\n\t\t0xe0000640, 0xe1000641, 0xe2000642, 0xe3000643, 0xe4000644, 0xe5000645, 0xe6000646, 0xe7000647,\n\t\t0xe8000648, 0xe9000649, 0xea00064a, 0xeb00064b, 0xec00064c, 0xed00064d, 0xee00064e, 0xef00064f,\n\t\t0xf0000650, 0xf1000651, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652,\n\t\t0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652,\n\t\t0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652,\n\t\t0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652,\n\t\t0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652,\n\t\t0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652,\n\t\t0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652,\n\t\t0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652,\n\t\t0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652,\n\t\t0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652,\n\t},\n}\n\n// ISO8859_7 is the ISO 8859-7 encoding.\nvar ISO8859_7 *Charmap = &iso8859_7\n\nvar iso8859_7 = Charmap{\n\tname:          \"ISO 8859-7\",\n\tmib:           identifier.ISOLatinGreek,\n\tasciiSuperset: true,\n\tlow:           0x80,\n\treplacement:   0x1a,\n\tdecode: [256]utf8Enc{\n\t\t{1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}},\n\t\t{1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}},\n\t\t{1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}},\n\t\t{1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}},\n\t\t{1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}},\n\t\t{1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}},\n\t\t{1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}},\n\t\t{1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}},\n\t\t{1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}},\n\t\t{1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}},\n\t\t{1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}},\n\t\t{1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}},\n\t\t{1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}},\n\t\t{1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}},\n\t\t{1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}},\n\t\t{1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}},\n\t\t{1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}},\n\t\t{1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}},\n\t\t{1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}},\n\t\t{1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}},\n\t\t{1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}},\n\t\t{1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}},\n\t\t{1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}},\n\t\t{1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}},\n\t\t{1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}},\n\t\t{1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}},\n\t\t{1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}},\n\t\t{1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}},\n\t\t{1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}},\n\t\t{1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}},\n\t\t{1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}},\n\t\t{1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}},\n\t\t{1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{2, [3]byte{0xc2, 0xa0, 0x00}}, {3, [3]byte{0xe2, 0x80, 0x98}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x99}}, {2, [3]byte{0xc2, 0xa3, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x82, 0xac}}, {3, [3]byte{0xe2, 0x82, 0xaf}},\n\t\t{2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}},\n\t\t{2, [3]byte{0xcd, 0xba, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0x95}},\n\t\t{2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc2, 0xb3, 0x00}},\n\t\t{2, [3]byte{0xce, 0x84, 0x00}}, {2, [3]byte{0xce, 0x85, 0x00}},\n\t\t{2, [3]byte{0xce, 0x86, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}},\n\t\t{2, [3]byte{0xce, 0x88, 0x00}}, {2, [3]byte{0xce, 0x89, 0x00}},\n\t\t{2, [3]byte{0xce, 0x8a, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}},\n\t\t{2, [3]byte{0xce, 0x8c, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}},\n\t\t{2, [3]byte{0xce, 0x8e, 0x00}}, {2, [3]byte{0xce, 0x8f, 0x00}},\n\t\t{2, [3]byte{0xce, 0x90, 0x00}}, {2, [3]byte{0xce, 0x91, 0x00}},\n\t\t{2, [3]byte{0xce, 0x92, 0x00}}, {2, [3]byte{0xce, 0x93, 0x00}},\n\t\t{2, [3]byte{0xce, 0x94, 0x00}}, {2, [3]byte{0xce, 0x95, 0x00}},\n\t\t{2, [3]byte{0xce, 0x96, 0x00}}, {2, [3]byte{0xce, 0x97, 0x00}},\n\t\t{2, [3]byte{0xce, 0x98, 0x00}}, {2, [3]byte{0xce, 0x99, 0x00}},\n\t\t{2, [3]byte{0xce, 0x9a, 0x00}}, {2, [3]byte{0xce, 0x9b, 0x00}},\n\t\t{2, [3]byte{0xce, 0x9c, 0x00}}, {2, [3]byte{0xce, 0x9d, 0x00}},\n\t\t{2, [3]byte{0xce, 0x9e, 0x00}}, {2, [3]byte{0xce, 0x9f, 0x00}},\n\t\t{2, [3]byte{0xce, 0xa0, 0x00}}, {2, [3]byte{0xce, 0xa1, 0x00}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {2, [3]byte{0xce, 0xa3, 0x00}},\n\t\t{2, [3]byte{0xce, 0xa4, 0x00}}, {2, [3]byte{0xce, 0xa5, 0x00}},\n\t\t{2, [3]byte{0xce, 0xa6, 0x00}}, {2, [3]byte{0xce, 0xa7, 0x00}},\n\t\t{2, [3]byte{0xce, 0xa8, 0x00}}, {2, [3]byte{0xce, 0xa9, 0x00}},\n\t\t{2, [3]byte{0xce, 0xaa, 0x00}}, {2, [3]byte{0xce, 0xab, 0x00}},\n\t\t{2, [3]byte{0xce, 0xac, 0x00}}, {2, [3]byte{0xce, 0xad, 0x00}},\n\t\t{2, [3]byte{0xce, 0xae, 0x00}}, {2, [3]byte{0xce, 0xaf, 0x00}},\n\t\t{2, [3]byte{0xce, 0xb0, 0x00}}, {2, [3]byte{0xce, 0xb1, 0x00}},\n\t\t{2, [3]byte{0xce, 0xb2, 0x00}}, {2, [3]byte{0xce, 0xb3, 0x00}},\n\t\t{2, [3]byte{0xce, 0xb4, 0x00}}, {2, [3]byte{0xce, 0xb5, 0x00}},\n\t\t{2, [3]byte{0xce, 0xb6, 0x00}}, {2, [3]byte{0xce, 0xb7, 0x00}},\n\t\t{2, [3]byte{0xce, 0xb8, 0x00}}, {2, [3]byte{0xce, 0xb9, 0x00}},\n\t\t{2, [3]byte{0xce, 0xba, 0x00}}, {2, [3]byte{0xce, 0xbb, 0x00}},\n\t\t{2, [3]byte{0xce, 0xbc, 0x00}}, {2, [3]byte{0xce, 0xbd, 0x00}},\n\t\t{2, [3]byte{0xce, 0xbe, 0x00}}, {2, [3]byte{0xce, 0xbf, 0x00}},\n\t\t{2, [3]byte{0xcf, 0x80, 0x00}}, {2, [3]byte{0xcf, 0x81, 0x00}},\n\t\t{2, [3]byte{0xcf, 0x82, 0x00}}, {2, [3]byte{0xcf, 0x83, 0x00}},\n\t\t{2, [3]byte{0xcf, 0x84, 0x00}}, {2, [3]byte{0xcf, 0x85, 0x00}},\n\t\t{2, [3]byte{0xcf, 0x86, 0x00}}, {2, [3]byte{0xcf, 0x87, 0x00}},\n\t\t{2, [3]byte{0xcf, 0x88, 0x00}}, {2, [3]byte{0xcf, 0x89, 0x00}},\n\t\t{2, [3]byte{0xcf, 0x8a, 0x00}}, {2, [3]byte{0xcf, 0x8b, 0x00}},\n\t\t{2, [3]byte{0xcf, 0x8c, 0x00}}, {2, [3]byte{0xcf, 0x8d, 0x00}},\n\t\t{2, [3]byte{0xcf, 0x8e, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t},\n\tencode: [256]uint32{\n\t\t0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007,\n\t\t0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f,\n\t\t0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017,\n\t\t0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f,\n\t\t0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027,\n\t\t0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f,\n\t\t0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037,\n\t\t0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f,\n\t\t0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047,\n\t\t0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f,\n\t\t0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057,\n\t\t0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f,\n\t\t0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067,\n\t\t0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f,\n\t\t0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077,\n\t\t0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f,\n\t\t0xa00000a0, 0xa30000a3, 0xa60000a6, 0xa70000a7, 0xa80000a8, 0xa90000a9, 0xab0000ab, 0xac0000ac,\n\t\t0xad0000ad, 0xb00000b0, 0xb10000b1, 0xb20000b2, 0xb30000b3, 0xb70000b7, 0xbb0000bb, 0xbd0000bd,\n\t\t0xaa00037a, 0xb4000384, 0xb5000385, 0xb6000386, 0xb8000388, 0xb9000389, 0xba00038a, 0xbc00038c,\n\t\t0xbe00038e, 0xbf00038f, 0xc0000390, 0xc1000391, 0xc2000392, 0xc3000393, 0xc4000394, 0xc5000395,\n\t\t0xc6000396, 0xc7000397, 0xc8000398, 0xc9000399, 0xca00039a, 0xcb00039b, 0xcc00039c, 0xcd00039d,\n\t\t0xce00039e, 0xcf00039f, 0xd00003a0, 0xd10003a1, 0xd30003a3, 0xd40003a4, 0xd50003a5, 0xd60003a6,\n\t\t0xd70003a7, 0xd80003a8, 0xd90003a9, 0xda0003aa, 0xdb0003ab, 0xdc0003ac, 0xdd0003ad, 0xde0003ae,\n\t\t0xdf0003af, 0xe00003b0, 0xe10003b1, 0xe20003b2, 0xe30003b3, 0xe40003b4, 0xe50003b5, 0xe60003b6,\n\t\t0xe70003b7, 0xe80003b8, 0xe90003b9, 0xea0003ba, 0xeb0003bb, 0xec0003bc, 0xed0003bd, 0xee0003be,\n\t\t0xef0003bf, 0xf00003c0, 0xf10003c1, 0xf20003c2, 0xf30003c3, 0xf40003c4, 0xf50003c5, 0xf60003c6,\n\t\t0xf70003c7, 0xf80003c8, 0xf90003c9, 0xfa0003ca, 0xfb0003cb, 0xfc0003cc, 0xfd0003cd, 0xfe0003ce,\n\t\t0xaf002015, 0xa1002018, 0xa2002019, 0xa40020ac, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af,\n\t\t0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af,\n\t\t0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af,\n\t\t0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af,\n\t\t0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af,\n\t},\n}\n\n// ISO8859_8 is the ISO 8859-8 encoding.\nvar ISO8859_8 *Charmap = &iso8859_8\n\nvar iso8859_8 = Charmap{\n\tname:          \"ISO 8859-8\",\n\tmib:           identifier.ISOLatinHebrew,\n\tasciiSuperset: true,\n\tlow:           0x80,\n\treplacement:   0x1a,\n\tdecode: [256]utf8Enc{\n\t\t{1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}},\n\t\t{1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}},\n\t\t{1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}},\n\t\t{1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}},\n\t\t{1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}},\n\t\t{1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}},\n\t\t{1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}},\n\t\t{1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}},\n\t\t{1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}},\n\t\t{1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}},\n\t\t{1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}},\n\t\t{1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}},\n\t\t{1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}},\n\t\t{1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}},\n\t\t{1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}},\n\t\t{1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}},\n\t\t{1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}},\n\t\t{1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}},\n\t\t{1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}},\n\t\t{1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}},\n\t\t{1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}},\n\t\t{1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}},\n\t\t{1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}},\n\t\t{1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}},\n\t\t{1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}},\n\t\t{1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}},\n\t\t{1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}},\n\t\t{1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}},\n\t\t{1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}},\n\t\t{1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}},\n\t\t{1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}},\n\t\t{1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}},\n\t\t{1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{2, [3]byte{0xc2, 0xa0, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{2, [3]byte{0xc2, 0xa2, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa4, 0x00}}, {2, [3]byte{0xc2, 0xa5, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x97, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc2, 0xaf, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc2, 0xb3, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb8, 0x00}}, {2, [3]byte{0xc2, 0xb9, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb7, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xbe, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0x97}},\n\t\t{2, [3]byte{0xd7, 0x90, 0x00}}, {2, [3]byte{0xd7, 0x91, 0x00}},\n\t\t{2, [3]byte{0xd7, 0x92, 0x00}}, {2, [3]byte{0xd7, 0x93, 0x00}},\n\t\t{2, [3]byte{0xd7, 0x94, 0x00}}, {2, [3]byte{0xd7, 0x95, 0x00}},\n\t\t{2, [3]byte{0xd7, 0x96, 0x00}}, {2, [3]byte{0xd7, 0x97, 0x00}},\n\t\t{2, [3]byte{0xd7, 0x98, 0x00}}, {2, [3]byte{0xd7, 0x99, 0x00}},\n\t\t{2, [3]byte{0xd7, 0x9a, 0x00}}, {2, [3]byte{0xd7, 0x9b, 0x00}},\n\t\t{2, [3]byte{0xd7, 0x9c, 0x00}}, {2, [3]byte{0xd7, 0x9d, 0x00}},\n\t\t{2, [3]byte{0xd7, 0x9e, 0x00}}, {2, [3]byte{0xd7, 0x9f, 0x00}},\n\t\t{2, [3]byte{0xd7, 0xa0, 0x00}}, {2, [3]byte{0xd7, 0xa1, 0x00}},\n\t\t{2, [3]byte{0xd7, 0xa2, 0x00}}, {2, [3]byte{0xd7, 0xa3, 0x00}},\n\t\t{2, [3]byte{0xd7, 0xa4, 0x00}}, {2, [3]byte{0xd7, 0xa5, 0x00}},\n\t\t{2, [3]byte{0xd7, 0xa6, 0x00}}, {2, [3]byte{0xd7, 0xa7, 0x00}},\n\t\t{2, [3]byte{0xd7, 0xa8, 0x00}}, {2, [3]byte{0xd7, 0xa9, 0x00}},\n\t\t{2, [3]byte{0xd7, 0xaa, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0x8e}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x8f}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t},\n\tencode: [256]uint32{\n\t\t0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007,\n\t\t0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f,\n\t\t0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017,\n\t\t0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f,\n\t\t0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027,\n\t\t0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f,\n\t\t0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037,\n\t\t0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f,\n\t\t0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047,\n\t\t0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f,\n\t\t0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057,\n\t\t0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f,\n\t\t0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067,\n\t\t0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f,\n\t\t0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077,\n\t\t0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f,\n\t\t0xa00000a0, 0xa20000a2, 0xa30000a3, 0xa40000a4, 0xa50000a5, 0xa60000a6, 0xa70000a7, 0xa80000a8,\n\t\t0xa90000a9, 0xab0000ab, 0xac0000ac, 0xad0000ad, 0xae0000ae, 0xaf0000af, 0xb00000b0, 0xb10000b1,\n\t\t0xb20000b2, 0xb30000b3, 0xb40000b4, 0xb50000b5, 0xb60000b6, 0xb70000b7, 0xb80000b8, 0xb90000b9,\n\t\t0xbb0000bb, 0xbc0000bc, 0xbd0000bd, 0xbe0000be, 0xaa0000d7, 0xba0000f7, 0xe00005d0, 0xe10005d1,\n\t\t0xe20005d2, 0xe30005d3, 0xe40005d4, 0xe50005d5, 0xe60005d6, 0xe70005d7, 0xe80005d8, 0xe90005d9,\n\t\t0xea0005da, 0xeb0005db, 0xec0005dc, 0xed0005dd, 0xee0005de, 0xef0005df, 0xf00005e0, 0xf10005e1,\n\t\t0xf20005e2, 0xf30005e3, 0xf40005e4, 0xf50005e5, 0xf60005e6, 0xf70005e7, 0xf80005e8, 0xf90005e9,\n\t\t0xfa0005ea, 0xfd00200e, 0xfe00200f, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017,\n\t\t0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017,\n\t\t0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017,\n\t\t0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017,\n\t\t0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017,\n\t\t0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017,\n\t\t0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017,\n\t\t0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017,\n\t\t0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017,\n\t},\n}\n\n// ISO8859_9 is the ISO 8859-9 encoding.\nvar ISO8859_9 *Charmap = &iso8859_9\n\nvar iso8859_9 = Charmap{\n\tname:          \"ISO 8859-9\",\n\tmib:           identifier.ISOLatin5,\n\tasciiSuperset: true,\n\tlow:           0x80,\n\treplacement:   0x1a,\n\tdecode: [256]utf8Enc{\n\t\t{1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}},\n\t\t{1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}},\n\t\t{1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}},\n\t\t{1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}},\n\t\t{1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}},\n\t\t{1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}},\n\t\t{1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}},\n\t\t{1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}},\n\t\t{1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}},\n\t\t{1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}},\n\t\t{1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}},\n\t\t{1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}},\n\t\t{1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}},\n\t\t{1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}},\n\t\t{1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}},\n\t\t{1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}},\n\t\t{1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}},\n\t\t{1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}},\n\t\t{1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}},\n\t\t{1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}},\n\t\t{1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}},\n\t\t{1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}},\n\t\t{1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}},\n\t\t{1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}},\n\t\t{1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}},\n\t\t{1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}},\n\t\t{1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}},\n\t\t{1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}},\n\t\t{1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}},\n\t\t{1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}},\n\t\t{1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}},\n\t\t{1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}},\n\t\t{1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x80, 0x00}}, {2, [3]byte{0xc2, 0x81, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x82, 0x00}}, {2, [3]byte{0xc2, 0x83, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x84, 0x00}}, {2, [3]byte{0xc2, 0x85, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x86, 0x00}}, {2, [3]byte{0xc2, 0x87, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x88, 0x00}}, {2, [3]byte{0xc2, 0x89, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x8a, 0x00}}, {2, [3]byte{0xc2, 0x8b, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x8c, 0x00}}, {2, [3]byte{0xc2, 0x8d, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x8e, 0x00}}, {2, [3]byte{0xc2, 0x8f, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x90, 0x00}}, {2, [3]byte{0xc2, 0x91, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x92, 0x00}}, {2, [3]byte{0xc2, 0x93, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x94, 0x00}}, {2, [3]byte{0xc2, 0x95, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x96, 0x00}}, {2, [3]byte{0xc2, 0x97, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x98, 0x00}}, {2, [3]byte{0xc2, 0x99, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x9a, 0x00}}, {2, [3]byte{0xc2, 0x9b, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x9c, 0x00}}, {2, [3]byte{0xc2, 0x9d, 0x00}},\n\t\t{2, [3]byte{0xc2, 0x9e, 0x00}}, {2, [3]byte{0xc2, 0x9f, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa2, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa4, 0x00}}, {2, [3]byte{0xc2, 0xa5, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc2, 0xaf, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc2, 0xb3, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb8, 0x00}}, {2, [3]byte{0xc2, 0xb9, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xba, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xbe, 0x00}}, {2, [3]byte{0xc2, 0xbf, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x83, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc3, 0x87, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x9e, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x92, 0x00}}, {2, [3]byte{0xc3, 0x93, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x98, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc4, 0xb0, 0x00}},\n\t\t{2, [3]byte{0xc5, 0x9e, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0xa3, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xac, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x9f, 0x00}}, {2, [3]byte{0xc3, 0xb1, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb2, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb4, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc4, 0xb1, 0x00}},\n\t\t{2, [3]byte{0xc5, 0x9f, 0x00}}, {2, [3]byte{0xc3, 0xbf, 0x00}},\n\t},\n\tencode: [256]uint32{\n\t\t0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007,\n\t\t0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f,\n\t\t0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017,\n\t\t0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f,\n\t\t0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027,\n\t\t0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f,\n\t\t0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037,\n\t\t0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f,\n\t\t0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047,\n\t\t0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f,\n\t\t0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057,\n\t\t0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f,\n\t\t0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067,\n\t\t0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f,\n\t\t0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077,\n\t\t0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f,\n\t\t0x80000080, 0x81000081, 0x82000082, 0x83000083, 0x84000084, 0x85000085, 0x86000086, 0x87000087,\n\t\t0x88000088, 0x89000089, 0x8a00008a, 0x8b00008b, 0x8c00008c, 0x8d00008d, 0x8e00008e, 0x8f00008f,\n\t\t0x90000090, 0x91000091, 0x92000092, 0x93000093, 0x94000094, 0x95000095, 0x96000096, 0x97000097,\n\t\t0x98000098, 0x99000099, 0x9a00009a, 0x9b00009b, 0x9c00009c, 0x9d00009d, 0x9e00009e, 0x9f00009f,\n\t\t0xa00000a0, 0xa10000a1, 0xa20000a2, 0xa30000a3, 0xa40000a4, 0xa50000a5, 0xa60000a6, 0xa70000a7,\n\t\t0xa80000a8, 0xa90000a9, 0xaa0000aa, 0xab0000ab, 0xac0000ac, 0xad0000ad, 0xae0000ae, 0xaf0000af,\n\t\t0xb00000b0, 0xb10000b1, 0xb20000b2, 0xb30000b3, 0xb40000b4, 0xb50000b5, 0xb60000b6, 0xb70000b7,\n\t\t0xb80000b8, 0xb90000b9, 0xba0000ba, 0xbb0000bb, 0xbc0000bc, 0xbd0000bd, 0xbe0000be, 0xbf0000bf,\n\t\t0xc00000c0, 0xc10000c1, 0xc20000c2, 0xc30000c3, 0xc40000c4, 0xc50000c5, 0xc60000c6, 0xc70000c7,\n\t\t0xc80000c8, 0xc90000c9, 0xca0000ca, 0xcb0000cb, 0xcc0000cc, 0xcd0000cd, 0xce0000ce, 0xcf0000cf,\n\t\t0xd10000d1, 0xd20000d2, 0xd30000d3, 0xd40000d4, 0xd50000d5, 0xd60000d6, 0xd70000d7, 0xd80000d8,\n\t\t0xd90000d9, 0xda0000da, 0xdb0000db, 0xdc0000dc, 0xdf0000df, 0xe00000e0, 0xe10000e1, 0xe20000e2,\n\t\t0xe30000e3, 0xe40000e4, 0xe50000e5, 0xe60000e6, 0xe70000e7, 0xe80000e8, 0xe90000e9, 0xea0000ea,\n\t\t0xeb0000eb, 0xec0000ec, 0xed0000ed, 0xee0000ee, 0xef0000ef, 0xf10000f1, 0xf20000f2, 0xf30000f3,\n\t\t0xf40000f4, 0xf50000f5, 0xf60000f6, 0xf70000f7, 0xf80000f8, 0xf90000f9, 0xfa0000fa, 0xfb0000fb,\n\t\t0xfc0000fc, 0xff0000ff, 0xd000011e, 0xf000011f, 0xdd000130, 0xfd000131, 0xde00015e, 0xfe00015f,\n\t},\n}\n\n// ISO8859_10 is the ISO 8859-10 encoding.\nvar ISO8859_10 *Charmap = &iso8859_10\n\nvar iso8859_10 = Charmap{\n\tname:          \"ISO 8859-10\",\n\tmib:           identifier.ISOLatin6,\n\tasciiSuperset: true,\n\tlow:           0x80,\n\treplacement:   0x1a,\n\tdecode: [256]utf8Enc{\n\t\t{1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}},\n\t\t{1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}},\n\t\t{1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}},\n\t\t{1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}},\n\t\t{1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}},\n\t\t{1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}},\n\t\t{1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}},\n\t\t{1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}},\n\t\t{1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}},\n\t\t{1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}},\n\t\t{1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}},\n\t\t{1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}},\n\t\t{1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}},\n\t\t{1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}},\n\t\t{1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}},\n\t\t{1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}},\n\t\t{1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}},\n\t\t{1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}},\n\t\t{1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}},\n\t\t{1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}},\n\t\t{1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}},\n\t\t{1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}},\n\t\t{1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}},\n\t\t{1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}},\n\t\t{1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}},\n\t\t{1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}},\n\t\t{1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}},\n\t\t{1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}},\n\t\t{1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}},\n\t\t{1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}},\n\t\t{1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}},\n\t\t{1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}},\n\t\t{1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xc4, 0x84, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x92, 0x00}}, {2, [3]byte{0xc4, 0xa2, 0x00}},\n\t\t{2, [3]byte{0xc4, 0xaa, 0x00}}, {2, [3]byte{0xc4, 0xa8, 0x00}},\n\t\t{2, [3]byte{0xc4, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}},\n\t\t{2, [3]byte{0xc4, 0xbb, 0x00}}, {2, [3]byte{0xc4, 0x90, 0x00}},\n\t\t{2, [3]byte{0xc5, 0xa0, 0x00}}, {2, [3]byte{0xc5, 0xa6, 0x00}},\n\t\t{2, [3]byte{0xc5, 0xbd, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}},\n\t\t{2, [3]byte{0xc5, 0xaa, 0x00}}, {2, [3]byte{0xc5, 0x8a, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc4, 0x85, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x93, 0x00}}, {2, [3]byte{0xc4, 0xa3, 0x00}},\n\t\t{2, [3]byte{0xc4, 0xab, 0x00}}, {2, [3]byte{0xc4, 0xa9, 0x00}},\n\t\t{2, [3]byte{0xc4, 0xb7, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}},\n\t\t{2, [3]byte{0xc4, 0xbc, 0x00}}, {2, [3]byte{0xc4, 0x91, 0x00}},\n\t\t{2, [3]byte{0xc5, 0xa1, 0x00}}, {2, [3]byte{0xc5, 0xa7, 0x00}},\n\t\t{2, [3]byte{0xc5, 0xbe, 0x00}}, {3, [3]byte{0xe2, 0x80, 0x95}},\n\t\t{2, [3]byte{0xc5, 0xab, 0x00}}, {2, [3]byte{0xc5, 0x8b, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x83, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc4, 0xae, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x98, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x90, 0x00}}, {2, [3]byte{0xc5, 0x85, 0x00}},\n\t\t{2, [3]byte{0xc5, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x93, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc5, 0xa8, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x98, 0x00}}, {2, [3]byte{0xc5, 0xb2, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0x9d, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x9e, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x81, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0xa3, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc4, 0xaf, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x8d, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x99, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x97, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb0, 0x00}}, {2, [3]byte{0xc5, 0x86, 0x00}},\n\t\t{2, [3]byte{0xc5, 0x8d, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb4, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc5, 0xa9, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc5, 0xb3, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc3, 0xbd, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xbe, 0x00}}, {2, [3]byte{0xc4, 0xb8, 0x00}},\n\t},\n\tencode: [256]uint32{\n\t\t0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007,\n\t\t0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f,\n\t\t0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017,\n\t\t0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f,\n\t\t0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027,\n\t\t0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f,\n\t\t0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037,\n\t\t0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f,\n\t\t0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047,\n\t\t0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f,\n\t\t0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057,\n\t\t0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f,\n\t\t0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067,\n\t\t0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f,\n\t\t0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077,\n\t\t0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f,\n\t\t0xa00000a0, 0xa70000a7, 0xad0000ad, 0xb00000b0, 0xb70000b7, 0xc10000c1, 0xc20000c2, 0xc30000c3,\n\t\t0xc40000c4, 0xc50000c5, 0xc60000c6, 0xc90000c9, 0xcb0000cb, 0xcd0000cd, 0xce0000ce, 0xcf0000cf,\n\t\t0xd00000d0, 0xd30000d3, 0xd40000d4, 0xd50000d5, 0xd60000d6, 0xd80000d8, 0xda0000da, 0xdb0000db,\n\t\t0xdc0000dc, 0xdd0000dd, 0xde0000de, 0xdf0000df, 0xe10000e1, 0xe20000e2, 0xe30000e3, 0xe40000e4,\n\t\t0xe50000e5, 0xe60000e6, 0xe90000e9, 0xeb0000eb, 0xed0000ed, 0xee0000ee, 0xef0000ef, 0xf00000f0,\n\t\t0xf30000f3, 0xf40000f4, 0xf50000f5, 0xf60000f6, 0xf80000f8, 0xfa0000fa, 0xfb0000fb, 0xfc0000fc,\n\t\t0xfd0000fd, 0xfe0000fe, 0xc0000100, 0xe0000101, 0xa1000104, 0xb1000105, 0xc800010c, 0xe800010d,\n\t\t0xa9000110, 0xb9000111, 0xa2000112, 0xb2000113, 0xcc000116, 0xec000117, 0xca000118, 0xea000119,\n\t\t0xa3000122, 0xb3000123, 0xa5000128, 0xb5000129, 0xa400012a, 0xb400012b, 0xc700012e, 0xe700012f,\n\t\t0xa6000136, 0xb6000137, 0xff000138, 0xa800013b, 0xb800013c, 0xd1000145, 0xf1000146, 0xaf00014a,\n\t\t0xbf00014b, 0xd200014c, 0xf200014d, 0xaa000160, 0xba000161, 0xab000166, 0xbb000167, 0xd7000168,\n\t\t0xf7000169, 0xae00016a, 0xbe00016b, 0xd9000172, 0xf9000173, 0xac00017d, 0xbc00017e, 0xbd002015,\n\t\t0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015,\n\t\t0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015,\n\t\t0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015,\n\t\t0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015,\n\t},\n}\n\n// ISO8859_13 is the ISO 8859-13 encoding.\nvar ISO8859_13 *Charmap = &iso8859_13\n\nvar iso8859_13 = Charmap{\n\tname:          \"ISO 8859-13\",\n\tmib:           identifier.ISO885913,\n\tasciiSuperset: true,\n\tlow:           0x80,\n\treplacement:   0x1a,\n\tdecode: [256]utf8Enc{\n\t\t{1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}},\n\t\t{1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}},\n\t\t{1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}},\n\t\t{1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}},\n\t\t{1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}},\n\t\t{1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}},\n\t\t{1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}},\n\t\t{1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}},\n\t\t{1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}},\n\t\t{1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}},\n\t\t{1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}},\n\t\t{1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}},\n\t\t{1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}},\n\t\t{1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}},\n\t\t{1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}},\n\t\t{1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}},\n\t\t{1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}},\n\t\t{1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}},\n\t\t{1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}},\n\t\t{1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}},\n\t\t{1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}},\n\t\t{1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}},\n\t\t{1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}},\n\t\t{1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}},\n\t\t{1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}},\n\t\t{1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}},\n\t\t{1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}},\n\t\t{1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}},\n\t\t{1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}},\n\t\t{1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}},\n\t\t{1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}},\n\t\t{1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}},\n\t\t{1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{2, [3]byte{0xc2, 0xa0, 0x00}}, {3, [3]byte{0xe2, 0x80, 0x9d}},\n\t\t{2, [3]byte{0xc2, 0xa2, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa4, 0x00}}, {3, [3]byte{0xe2, 0x80, 0x9e}},\n\t\t{2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x98, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}},\n\t\t{2, [3]byte{0xc5, 0x96, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc3, 0x86, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc2, 0xb3, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x9c}}, {2, [3]byte{0xc2, 0xb5, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc2, 0xb9, 0x00}},\n\t\t{2, [3]byte{0xc5, 0x97, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xbe, 0x00}}, {2, [3]byte{0xc3, 0xa6, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x84, 0x00}}, {2, [3]byte{0xc4, 0xae, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x80, 0x00}}, {2, [3]byte{0xc4, 0x86, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x98, 0x00}}, {2, [3]byte{0xc4, 0x92, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}},\n\t\t{2, [3]byte{0xc5, 0xb9, 0x00}}, {2, [3]byte{0xc4, 0x96, 0x00}},\n\t\t{2, [3]byte{0xc4, 0xa2, 0x00}}, {2, [3]byte{0xc4, 0xb6, 0x00}},\n\t\t{2, [3]byte{0xc4, 0xaa, 0x00}}, {2, [3]byte{0xc4, 0xbb, 0x00}},\n\t\t{2, [3]byte{0xc5, 0xa0, 0x00}}, {2, [3]byte{0xc5, 0x83, 0x00}},\n\t\t{2, [3]byte{0xc5, 0x85, 0x00}}, {2, [3]byte{0xc3, 0x93, 0x00}},\n\t\t{2, [3]byte{0xc5, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}},\n\t\t{2, [3]byte{0xc5, 0xb2, 0x00}}, {2, [3]byte{0xc5, 0x81, 0x00}},\n\t\t{2, [3]byte{0xc5, 0x9a, 0x00}}, {2, [3]byte{0xc5, 0xaa, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc5, 0xbb, 0x00}},\n\t\t{2, [3]byte{0xc5, 0xbd, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x85, 0x00}}, {2, [3]byte{0xc4, 0xaf, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x81, 0x00}}, {2, [3]byte{0xc4, 0x87, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x99, 0x00}}, {2, [3]byte{0xc4, 0x93, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x8d, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}},\n\t\t{2, [3]byte{0xc5, 0xba, 0x00}}, {2, [3]byte{0xc4, 0x97, 0x00}},\n\t\t{2, [3]byte{0xc4, 0xa3, 0x00}}, {2, [3]byte{0xc4, 0xb7, 0x00}},\n\t\t{2, [3]byte{0xc4, 0xab, 0x00}}, {2, [3]byte{0xc4, 0xbc, 0x00}},\n\t\t{2, [3]byte{0xc5, 0xa1, 0x00}}, {2, [3]byte{0xc5, 0x84, 0x00}},\n\t\t{2, [3]byte{0xc5, 0x86, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}},\n\t\t{2, [3]byte{0xc5, 0x8d, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}},\n\t\t{2, [3]byte{0xc5, 0xb3, 0x00}}, {2, [3]byte{0xc5, 0x82, 0x00}},\n\t\t{2, [3]byte{0xc5, 0x9b, 0x00}}, {2, [3]byte{0xc5, 0xab, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc5, 0xbc, 0x00}},\n\t\t{2, [3]byte{0xc5, 0xbe, 0x00}}, {3, [3]byte{0xe2, 0x80, 0x99}},\n\t},\n\tencode: [256]uint32{\n\t\t0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007,\n\t\t0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f,\n\t\t0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017,\n\t\t0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f,\n\t\t0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027,\n\t\t0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f,\n\t\t0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037,\n\t\t0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f,\n\t\t0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047,\n\t\t0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f,\n\t\t0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057,\n\t\t0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f,\n\t\t0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067,\n\t\t0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f,\n\t\t0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077,\n\t\t0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f,\n\t\t0xa00000a0, 0xa20000a2, 0xa30000a3, 0xa40000a4, 0xa60000a6, 0xa70000a7, 0xa90000a9, 0xab0000ab,\n\t\t0xac0000ac, 0xad0000ad, 0xae0000ae, 0xb00000b0, 0xb10000b1, 0xb20000b2, 0xb30000b3, 0xb50000b5,\n\t\t0xb60000b6, 0xb70000b7, 0xb90000b9, 0xbb0000bb, 0xbc0000bc, 0xbd0000bd, 0xbe0000be, 0xc40000c4,\n\t\t0xc50000c5, 0xaf0000c6, 0xc90000c9, 0xd30000d3, 0xd50000d5, 0xd60000d6, 0xd70000d7, 0xa80000d8,\n\t\t0xdc0000dc, 0xdf0000df, 0xe40000e4, 0xe50000e5, 0xbf0000e6, 0xe90000e9, 0xf30000f3, 0xf50000f5,\n\t\t0xf60000f6, 0xf70000f7, 0xb80000f8, 0xfc0000fc, 0xc2000100, 0xe2000101, 0xc0000104, 0xe0000105,\n\t\t0xc3000106, 0xe3000107, 0xc800010c, 0xe800010d, 0xc7000112, 0xe7000113, 0xcb000116, 0xeb000117,\n\t\t0xc6000118, 0xe6000119, 0xcc000122, 0xec000123, 0xce00012a, 0xee00012b, 0xc100012e, 0xe100012f,\n\t\t0xcd000136, 0xed000137, 0xcf00013b, 0xef00013c, 0xd9000141, 0xf9000142, 0xd1000143, 0xf1000144,\n\t\t0xd2000145, 0xf2000146, 0xd400014c, 0xf400014d, 0xaa000156, 0xba000157, 0xda00015a, 0xfa00015b,\n\t\t0xd0000160, 0xf0000161, 0xdb00016a, 0xfb00016b, 0xd8000172, 0xf8000173, 0xca000179, 0xea00017a,\n\t\t0xdd00017b, 0xfd00017c, 0xde00017d, 0xfe00017e, 0xff002019, 0xb400201c, 0xa100201d, 0xa500201e,\n\t\t0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e,\n\t\t0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e,\n\t\t0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e,\n\t\t0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e,\n\t},\n}\n\n// ISO8859_14 is the ISO 8859-14 encoding.\nvar ISO8859_14 *Charmap = &iso8859_14\n\nvar iso8859_14 = Charmap{\n\tname:          \"ISO 8859-14\",\n\tmib:           identifier.ISO885914,\n\tasciiSuperset: true,\n\tlow:           0x80,\n\treplacement:   0x1a,\n\tdecode: [256]utf8Enc{\n\t\t{1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}},\n\t\t{1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}},\n\t\t{1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}},\n\t\t{1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}},\n\t\t{1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}},\n\t\t{1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}},\n\t\t{1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}},\n\t\t{1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}},\n\t\t{1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}},\n\t\t{1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}},\n\t\t{1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}},\n\t\t{1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}},\n\t\t{1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}},\n\t\t{1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}},\n\t\t{1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}},\n\t\t{1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}},\n\t\t{1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}},\n\t\t{1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}},\n\t\t{1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}},\n\t\t{1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}},\n\t\t{1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}},\n\t\t{1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}},\n\t\t{1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}},\n\t\t{1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}},\n\t\t{1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}},\n\t\t{1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}},\n\t\t{1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}},\n\t\t{1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}},\n\t\t{1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}},\n\t\t{1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}},\n\t\t{1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}},\n\t\t{1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}},\n\t\t{1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{2, [3]byte{0xc2, 0xa0, 0x00}}, {3, [3]byte{0xe1, 0xb8, 0x82}},\n\t\t{3, [3]byte{0xe1, 0xb8, 0x83}}, {2, [3]byte{0xc2, 0xa3, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x8a, 0x00}}, {2, [3]byte{0xc4, 0x8b, 0x00}},\n\t\t{3, [3]byte{0xe1, 0xb8, 0x8a}}, {2, [3]byte{0xc2, 0xa7, 0x00}},\n\t\t{3, [3]byte{0xe1, 0xba, 0x80}}, {2, [3]byte{0xc2, 0xa9, 0x00}},\n\t\t{3, [3]byte{0xe1, 0xba, 0x82}}, {3, [3]byte{0xe1, 0xb8, 0x8b}},\n\t\t{3, [3]byte{0xe1, 0xbb, 0xb2}}, {2, [3]byte{0xc2, 0xad, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc5, 0xb8, 0x00}},\n\t\t{3, [3]byte{0xe1, 0xb8, 0x9e}}, {3, [3]byte{0xe1, 0xb8, 0x9f}},\n\t\t{2, [3]byte{0xc4, 0xa0, 0x00}}, {2, [3]byte{0xc4, 0xa1, 0x00}},\n\t\t{3, [3]byte{0xe1, 0xb9, 0x80}}, {3, [3]byte{0xe1, 0xb9, 0x81}},\n\t\t{2, [3]byte{0xc2, 0xb6, 0x00}}, {3, [3]byte{0xe1, 0xb9, 0x96}},\n\t\t{3, [3]byte{0xe1, 0xba, 0x81}}, {3, [3]byte{0xe1, 0xb9, 0x97}},\n\t\t{3, [3]byte{0xe1, 0xba, 0x83}}, {3, [3]byte{0xe1, 0xb9, 0xa0}},\n\t\t{3, [3]byte{0xe1, 0xbb, 0xb3}}, {3, [3]byte{0xe1, 0xba, 0x84}},\n\t\t{3, [3]byte{0xe1, 0xba, 0x85}}, {3, [3]byte{0xe1, 0xb9, 0xa1}},\n\t\t{2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x83, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc3, 0x87, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}},\n\t\t{2, [3]byte{0xc5, 0xb4, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x92, 0x00}}, {2, [3]byte{0xc3, 0x93, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x96, 0x00}}, {3, [3]byte{0xe1, 0xb9, 0xaa}},\n\t\t{2, [3]byte{0xc3, 0x98, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0x9d, 0x00}},\n\t\t{2, [3]byte{0xc5, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0xa3, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xac, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}},\n\t\t{2, [3]byte{0xc5, 0xb5, 0x00}}, {2, [3]byte{0xc3, 0xb1, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb2, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb4, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb6, 0x00}}, {3, [3]byte{0xe1, 0xb9, 0xab}},\n\t\t{2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc3, 0xbd, 0x00}},\n\t\t{2, [3]byte{0xc5, 0xb7, 0x00}}, {2, [3]byte{0xc3, 0xbf, 0x00}},\n\t},\n\tencode: [256]uint32{\n\t\t0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007,\n\t\t0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f,\n\t\t0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017,\n\t\t0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f,\n\t\t0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027,\n\t\t0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f,\n\t\t0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037,\n\t\t0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f,\n\t\t0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047,\n\t\t0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f,\n\t\t0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057,\n\t\t0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f,\n\t\t0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067,\n\t\t0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f,\n\t\t0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077,\n\t\t0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f,\n\t\t0xa00000a0, 0xa30000a3, 0xa70000a7, 0xa90000a9, 0xad0000ad, 0xae0000ae, 0xb60000b6, 0xc00000c0,\n\t\t0xc10000c1, 0xc20000c2, 0xc30000c3, 0xc40000c4, 0xc50000c5, 0xc60000c6, 0xc70000c7, 0xc80000c8,\n\t\t0xc90000c9, 0xca0000ca, 0xcb0000cb, 0xcc0000cc, 0xcd0000cd, 0xce0000ce, 0xcf0000cf, 0xd10000d1,\n\t\t0xd20000d2, 0xd30000d3, 0xd40000d4, 0xd50000d5, 0xd60000d6, 0xd80000d8, 0xd90000d9, 0xda0000da,\n\t\t0xdb0000db, 0xdc0000dc, 0xdd0000dd, 0xdf0000df, 0xe00000e0, 0xe10000e1, 0xe20000e2, 0xe30000e3,\n\t\t0xe40000e4, 0xe50000e5, 0xe60000e6, 0xe70000e7, 0xe80000e8, 0xe90000e9, 0xea0000ea, 0xeb0000eb,\n\t\t0xec0000ec, 0xed0000ed, 0xee0000ee, 0xef0000ef, 0xf10000f1, 0xf20000f2, 0xf30000f3, 0xf40000f4,\n\t\t0xf50000f5, 0xf60000f6, 0xf80000f8, 0xf90000f9, 0xfa0000fa, 0xfb0000fb, 0xfc0000fc, 0xfd0000fd,\n\t\t0xff0000ff, 0xa400010a, 0xa500010b, 0xb2000120, 0xb3000121, 0xd0000174, 0xf0000175, 0xde000176,\n\t\t0xfe000177, 0xaf000178, 0xa1001e02, 0xa2001e03, 0xa6001e0a, 0xab001e0b, 0xb0001e1e, 0xb1001e1f,\n\t\t0xb4001e40, 0xb5001e41, 0xb7001e56, 0xb9001e57, 0xbb001e60, 0xbf001e61, 0xd7001e6a, 0xf7001e6b,\n\t\t0xa8001e80, 0xb8001e81, 0xaa001e82, 0xba001e83, 0xbd001e84, 0xbe001e85, 0xac001ef2, 0xbc001ef3,\n\t\t0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3,\n\t\t0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3,\n\t\t0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3,\n\t\t0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3,\n\t},\n}\n\n// ISO8859_15 is the ISO 8859-15 encoding.\nvar ISO8859_15 *Charmap = &iso8859_15\n\nvar iso8859_15 = Charmap{\n\tname:          \"ISO 8859-15\",\n\tmib:           identifier.ISO885915,\n\tasciiSuperset: true,\n\tlow:           0x80,\n\treplacement:   0x1a,\n\tdecode: [256]utf8Enc{\n\t\t{1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}},\n\t\t{1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}},\n\t\t{1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}},\n\t\t{1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}},\n\t\t{1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}},\n\t\t{1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}},\n\t\t{1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}},\n\t\t{1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}},\n\t\t{1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}},\n\t\t{1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}},\n\t\t{1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}},\n\t\t{1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}},\n\t\t{1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}},\n\t\t{1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}},\n\t\t{1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}},\n\t\t{1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}},\n\t\t{1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}},\n\t\t{1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}},\n\t\t{1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}},\n\t\t{1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}},\n\t\t{1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}},\n\t\t{1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}},\n\t\t{1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}},\n\t\t{1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}},\n\t\t{1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}},\n\t\t{1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}},\n\t\t{1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}},\n\t\t{1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}},\n\t\t{1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}},\n\t\t{1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}},\n\t\t{1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}},\n\t\t{1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}},\n\t\t{1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa2, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x82, 0xac}}, {2, [3]byte{0xc2, 0xa5, 0x00}},\n\t\t{2, [3]byte{0xc5, 0xa0, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}},\n\t\t{2, [3]byte{0xc5, 0xa1, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc2, 0xaf, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc2, 0xb3, 0x00}},\n\t\t{2, [3]byte{0xc5, 0xbd, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}},\n\t\t{2, [3]byte{0xc5, 0xbe, 0x00}}, {2, [3]byte{0xc2, 0xb9, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xba, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}},\n\t\t{2, [3]byte{0xc5, 0x92, 0x00}}, {2, [3]byte{0xc5, 0x93, 0x00}},\n\t\t{2, [3]byte{0xc5, 0xb8, 0x00}}, {2, [3]byte{0xc2, 0xbf, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x83, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc3, 0x87, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x90, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x92, 0x00}}, {2, [3]byte{0xc3, 0x93, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x98, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0x9d, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x9e, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0xa3, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xac, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb0, 0x00}}, {2, [3]byte{0xc3, 0xb1, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb2, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb4, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc3, 0xbd, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xbe, 0x00}}, {2, [3]byte{0xc3, 0xbf, 0x00}},\n\t},\n\tencode: [256]uint32{\n\t\t0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007,\n\t\t0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f,\n\t\t0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017,\n\t\t0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f,\n\t\t0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027,\n\t\t0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f,\n\t\t0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037,\n\t\t0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f,\n\t\t0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047,\n\t\t0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f,\n\t\t0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057,\n\t\t0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f,\n\t\t0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067,\n\t\t0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f,\n\t\t0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077,\n\t\t0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f,\n\t\t0xa00000a0, 0xa10000a1, 0xa20000a2, 0xa30000a3, 0xa50000a5, 0xa70000a7, 0xa90000a9, 0xaa0000aa,\n\t\t0xab0000ab, 0xac0000ac, 0xad0000ad, 0xae0000ae, 0xaf0000af, 0xb00000b0, 0xb10000b1, 0xb20000b2,\n\t\t0xb30000b3, 0xb50000b5, 0xb60000b6, 0xb70000b7, 0xb90000b9, 0xba0000ba, 0xbb0000bb, 0xbf0000bf,\n\t\t0xc00000c0, 0xc10000c1, 0xc20000c2, 0xc30000c3, 0xc40000c4, 0xc50000c5, 0xc60000c6, 0xc70000c7,\n\t\t0xc80000c8, 0xc90000c9, 0xca0000ca, 0xcb0000cb, 0xcc0000cc, 0xcd0000cd, 0xce0000ce, 0xcf0000cf,\n\t\t0xd00000d0, 0xd10000d1, 0xd20000d2, 0xd30000d3, 0xd40000d4, 0xd50000d5, 0xd60000d6, 0xd70000d7,\n\t\t0xd80000d8, 0xd90000d9, 0xda0000da, 0xdb0000db, 0xdc0000dc, 0xdd0000dd, 0xde0000de, 0xdf0000df,\n\t\t0xe00000e0, 0xe10000e1, 0xe20000e2, 0xe30000e3, 0xe40000e4, 0xe50000e5, 0xe60000e6, 0xe70000e7,\n\t\t0xe80000e8, 0xe90000e9, 0xea0000ea, 0xeb0000eb, 0xec0000ec, 0xed0000ed, 0xee0000ee, 0xef0000ef,\n\t\t0xf00000f0, 0xf10000f1, 0xf20000f2, 0xf30000f3, 0xf40000f4, 0xf50000f5, 0xf60000f6, 0xf70000f7,\n\t\t0xf80000f8, 0xf90000f9, 0xfa0000fa, 0xfb0000fb, 0xfc0000fc, 0xfd0000fd, 0xfe0000fe, 0xff0000ff,\n\t\t0xbc000152, 0xbd000153, 0xa6000160, 0xa8000161, 0xbe000178, 0xb400017d, 0xb800017e, 0xa40020ac,\n\t\t0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac,\n\t\t0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac,\n\t\t0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac,\n\t\t0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac,\n\t},\n}\n\n// ISO8859_16 is the ISO 8859-16 encoding.\nvar ISO8859_16 *Charmap = &iso8859_16\n\nvar iso8859_16 = Charmap{\n\tname:          \"ISO 8859-16\",\n\tmib:           identifier.ISO885916,\n\tasciiSuperset: true,\n\tlow:           0x80,\n\treplacement:   0x1a,\n\tdecode: [256]utf8Enc{\n\t\t{1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}},\n\t\t{1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}},\n\t\t{1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}},\n\t\t{1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}},\n\t\t{1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}},\n\t\t{1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}},\n\t\t{1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}},\n\t\t{1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}},\n\t\t{1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}},\n\t\t{1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}},\n\t\t{1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}},\n\t\t{1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}},\n\t\t{1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}},\n\t\t{1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}},\n\t\t{1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}},\n\t\t{1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}},\n\t\t{1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}},\n\t\t{1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}},\n\t\t{1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}},\n\t\t{1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}},\n\t\t{1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}},\n\t\t{1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}},\n\t\t{1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}},\n\t\t{1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}},\n\t\t{1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}},\n\t\t{1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}},\n\t\t{1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}},\n\t\t{1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}},\n\t\t{1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}},\n\t\t{1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}},\n\t\t{1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}},\n\t\t{1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}},\n\t\t{1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xc4, 0x84, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x85, 0x00}}, {2, [3]byte{0xc5, 0x81, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x82, 0xac}}, {3, [3]byte{0xe2, 0x80, 0x9e}},\n\t\t{2, [3]byte{0xc5, 0xa0, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}},\n\t\t{2, [3]byte{0xc5, 0xa1, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}},\n\t\t{2, [3]byte{0xc8, 0x98, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}},\n\t\t{2, [3]byte{0xc5, 0xb9, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}},\n\t\t{2, [3]byte{0xc5, 0xba, 0x00}}, {2, [3]byte{0xc5, 0xbb, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x8c, 0x00}}, {2, [3]byte{0xc5, 0x82, 0x00}},\n\t\t{2, [3]byte{0xc5, 0xbd, 0x00}}, {3, [3]byte{0xe2, 0x80, 0x9d}},\n\t\t{2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}},\n\t\t{2, [3]byte{0xc5, 0xbe, 0x00}}, {2, [3]byte{0xc4, 0x8d, 0x00}},\n\t\t{2, [3]byte{0xc8, 0x99, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}},\n\t\t{2, [3]byte{0xc5, 0x92, 0x00}}, {2, [3]byte{0xc5, 0x93, 0x00}},\n\t\t{2, [3]byte{0xc5, 0xb8, 0x00}}, {2, [3]byte{0xc5, 0xbc, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc4, 0x82, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc4, 0x86, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc3, 0x87, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x90, 0x00}}, {2, [3]byte{0xc5, 0x83, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x92, 0x00}}, {2, [3]byte{0xc3, 0x93, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc5, 0x90, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc5, 0x9a, 0x00}},\n\t\t{2, [3]byte{0xc5, 0xb0, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc4, 0x98, 0x00}},\n\t\t{2, [3]byte{0xc8, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc4, 0x83, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc4, 0x87, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xac, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x91, 0x00}}, {2, [3]byte{0xc5, 0x84, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb2, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb4, 0x00}}, {2, [3]byte{0xc5, 0x91, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc5, 0x9b, 0x00}},\n\t\t{2, [3]byte{0xc5, 0xb1, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc4, 0x99, 0x00}},\n\t\t{2, [3]byte{0xc8, 0x9b, 0x00}}, {2, [3]byte{0xc3, 0xbf, 0x00}},\n\t},\n\tencode: [256]uint32{\n\t\t0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007,\n\t\t0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f,\n\t\t0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017,\n\t\t0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f,\n\t\t0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027,\n\t\t0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f,\n\t\t0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037,\n\t\t0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f,\n\t\t0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047,\n\t\t0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f,\n\t\t0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057,\n\t\t0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f,\n\t\t0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067,\n\t\t0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f,\n\t\t0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077,\n\t\t0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f,\n\t\t0xa00000a0, 0xa70000a7, 0xa90000a9, 0xab0000ab, 0xad0000ad, 0xb00000b0, 0xb10000b1, 0xb60000b6,\n\t\t0xb70000b7, 0xbb0000bb, 0xc00000c0, 0xc10000c1, 0xc20000c2, 0xc40000c4, 0xc60000c6, 0xc70000c7,\n\t\t0xc80000c8, 0xc90000c9, 0xca0000ca, 0xcb0000cb, 0xcc0000cc, 0xcd0000cd, 0xce0000ce, 0xcf0000cf,\n\t\t0xd20000d2, 0xd30000d3, 0xd40000d4, 0xd60000d6, 0xd90000d9, 0xda0000da, 0xdb0000db, 0xdc0000dc,\n\t\t0xdf0000df, 0xe00000e0, 0xe10000e1, 0xe20000e2, 0xe40000e4, 0xe60000e6, 0xe70000e7, 0xe80000e8,\n\t\t0xe90000e9, 0xea0000ea, 0xeb0000eb, 0xec0000ec, 0xed0000ed, 0xee0000ee, 0xef0000ef, 0xf20000f2,\n\t\t0xf30000f3, 0xf40000f4, 0xf60000f6, 0xf90000f9, 0xfa0000fa, 0xfb0000fb, 0xfc0000fc, 0xff0000ff,\n\t\t0xc3000102, 0xe3000103, 0xa1000104, 0xa2000105, 0xc5000106, 0xe5000107, 0xb200010c, 0xb900010d,\n\t\t0xd0000110, 0xf0000111, 0xdd000118, 0xfd000119, 0xa3000141, 0xb3000142, 0xd1000143, 0xf1000144,\n\t\t0xd5000150, 0xf5000151, 0xbc000152, 0xbd000153, 0xd700015a, 0xf700015b, 0xa6000160, 0xa8000161,\n\t\t0xd8000170, 0xf8000171, 0xbe000178, 0xac000179, 0xae00017a, 0xaf00017b, 0xbf00017c, 0xb400017d,\n\t\t0xb800017e, 0xaa000218, 0xba000219, 0xde00021a, 0xfe00021b, 0xb500201d, 0xa500201e, 0xa40020ac,\n\t\t0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac,\n\t\t0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac,\n\t\t0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac,\n\t\t0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac,\n\t},\n}\n\n// KOI8R is the KOI8-R encoding.\nvar KOI8R *Charmap = &koi8R\n\nvar koi8R = Charmap{\n\tname:          \"KOI8-R\",\n\tmib:           identifier.KOI8R,\n\tasciiSuperset: true,\n\tlow:           0x80,\n\treplacement:   0x1a,\n\tdecode: [256]utf8Enc{\n\t\t{1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}},\n\t\t{1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}},\n\t\t{1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}},\n\t\t{1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}},\n\t\t{1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}},\n\t\t{1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}},\n\t\t{1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}},\n\t\t{1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}},\n\t\t{1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}},\n\t\t{1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}},\n\t\t{1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}},\n\t\t{1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}},\n\t\t{1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}},\n\t\t{1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}},\n\t\t{1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}},\n\t\t{1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}},\n\t\t{1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}},\n\t\t{1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}},\n\t\t{1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}},\n\t\t{1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}},\n\t\t{1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}},\n\t\t{1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}},\n\t\t{1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}},\n\t\t{1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}},\n\t\t{1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}},\n\t\t{1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}},\n\t\t{1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}},\n\t\t{1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}},\n\t\t{1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}},\n\t\t{1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}},\n\t\t{1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}},\n\t\t{1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}},\n\t\t{1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x94, 0x80}}, {3, [3]byte{0xe2, 0x94, 0x82}},\n\t\t{3, [3]byte{0xe2, 0x94, 0x8c}}, {3, [3]byte{0xe2, 0x94, 0x90}},\n\t\t{3, [3]byte{0xe2, 0x94, 0x94}}, {3, [3]byte{0xe2, 0x94, 0x98}},\n\t\t{3, [3]byte{0xe2, 0x94, 0x9c}}, {3, [3]byte{0xe2, 0x94, 0xa4}},\n\t\t{3, [3]byte{0xe2, 0x94, 0xac}}, {3, [3]byte{0xe2, 0x94, 0xb4}},\n\t\t{3, [3]byte{0xe2, 0x94, 0xbc}}, {3, [3]byte{0xe2, 0x96, 0x80}},\n\t\t{3, [3]byte{0xe2, 0x96, 0x84}}, {3, [3]byte{0xe2, 0x96, 0x88}},\n\t\t{3, [3]byte{0xe2, 0x96, 0x8c}}, {3, [3]byte{0xe2, 0x96, 0x90}},\n\t\t{3, [3]byte{0xe2, 0x96, 0x91}}, {3, [3]byte{0xe2, 0x96, 0x92}},\n\t\t{3, [3]byte{0xe2, 0x96, 0x93}}, {3, [3]byte{0xe2, 0x8c, 0xa0}},\n\t\t{3, [3]byte{0xe2, 0x96, 0xa0}}, {3, [3]byte{0xe2, 0x88, 0x99}},\n\t\t{3, [3]byte{0xe2, 0x88, 0x9a}}, {3, [3]byte{0xe2, 0x89, 0x88}},\n\t\t{3, [3]byte{0xe2, 0x89, 0xa4}}, {3, [3]byte{0xe2, 0x89, 0xa5}},\n\t\t{2, [3]byte{0xc2, 0xa0, 0x00}}, {3, [3]byte{0xe2, 0x8c, 0xa1}},\n\t\t{2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb2, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb7, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x90}}, {3, [3]byte{0xe2, 0x95, 0x91}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x92}}, {2, [3]byte{0xd1, 0x91, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x93}}, {3, [3]byte{0xe2, 0x95, 0x94}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x95}}, {3, [3]byte{0xe2, 0x95, 0x96}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x97}}, {3, [3]byte{0xe2, 0x95, 0x98}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x99}}, {3, [3]byte{0xe2, 0x95, 0x9a}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x9b}}, {3, [3]byte{0xe2, 0x95, 0x9c}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x9d}}, {3, [3]byte{0xe2, 0x95, 0x9e}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x9f}}, {3, [3]byte{0xe2, 0x95, 0xa0}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xa1}}, {2, [3]byte{0xd0, 0x81, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xa2}}, {3, [3]byte{0xe2, 0x95, 0xa3}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xa4}}, {3, [3]byte{0xe2, 0x95, 0xa5}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xa6}}, {3, [3]byte{0xe2, 0x95, 0xa7}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xa8}}, {3, [3]byte{0xe2, 0x95, 0xa9}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xaa}}, {3, [3]byte{0xe2, 0x95, 0xab}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xac}}, {2, [3]byte{0xc2, 0xa9, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x8e, 0x00}}, {2, [3]byte{0xd0, 0xb0, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xb1, 0x00}}, {2, [3]byte{0xd1, 0x86, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xb4, 0x00}}, {2, [3]byte{0xd0, 0xb5, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x84, 0x00}}, {2, [3]byte{0xd0, 0xb3, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x85, 0x00}}, {2, [3]byte{0xd0, 0xb8, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xb9, 0x00}}, {2, [3]byte{0xd0, 0xba, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xbb, 0x00}}, {2, [3]byte{0xd0, 0xbc, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xbd, 0x00}}, {2, [3]byte{0xd0, 0xbe, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xbf, 0x00}}, {2, [3]byte{0xd1, 0x8f, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x80, 0x00}}, {2, [3]byte{0xd1, 0x81, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x82, 0x00}}, {2, [3]byte{0xd1, 0x83, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xb6, 0x00}}, {2, [3]byte{0xd0, 0xb2, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x8c, 0x00}}, {2, [3]byte{0xd1, 0x8b, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xb7, 0x00}}, {2, [3]byte{0xd1, 0x88, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x8d, 0x00}}, {2, [3]byte{0xd1, 0x89, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x87, 0x00}}, {2, [3]byte{0xd1, 0x8a, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xae, 0x00}}, {2, [3]byte{0xd0, 0x90, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x91, 0x00}}, {2, [3]byte{0xd0, 0xa6, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x94, 0x00}}, {2, [3]byte{0xd0, 0x95, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xa4, 0x00}}, {2, [3]byte{0xd0, 0x93, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xa5, 0x00}}, {2, [3]byte{0xd0, 0x98, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x99, 0x00}}, {2, [3]byte{0xd0, 0x9a, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x9b, 0x00}}, {2, [3]byte{0xd0, 0x9c, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x9d, 0x00}}, {2, [3]byte{0xd0, 0x9e, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x9f, 0x00}}, {2, [3]byte{0xd0, 0xaf, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xa0, 0x00}}, {2, [3]byte{0xd0, 0xa1, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xa2, 0x00}}, {2, [3]byte{0xd0, 0xa3, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x96, 0x00}}, {2, [3]byte{0xd0, 0x92, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xac, 0x00}}, {2, [3]byte{0xd0, 0xab, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x97, 0x00}}, {2, [3]byte{0xd0, 0xa8, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xad, 0x00}}, {2, [3]byte{0xd0, 0xa9, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xa7, 0x00}}, {2, [3]byte{0xd0, 0xaa, 0x00}},\n\t},\n\tencode: [256]uint32{\n\t\t0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007,\n\t\t0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f,\n\t\t0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017,\n\t\t0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f,\n\t\t0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027,\n\t\t0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f,\n\t\t0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037,\n\t\t0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f,\n\t\t0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047,\n\t\t0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f,\n\t\t0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057,\n\t\t0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f,\n\t\t0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067,\n\t\t0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f,\n\t\t0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077,\n\t\t0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f,\n\t\t0x9a0000a0, 0xbf0000a9, 0x9c0000b0, 0x9d0000b2, 0x9e0000b7, 0x9f0000f7, 0xb3000401, 0xe1000410,\n\t\t0xe2000411, 0xf7000412, 0xe7000413, 0xe4000414, 0xe5000415, 0xf6000416, 0xfa000417, 0xe9000418,\n\t\t0xea000419, 0xeb00041a, 0xec00041b, 0xed00041c, 0xee00041d, 0xef00041e, 0xf000041f, 0xf2000420,\n\t\t0xf3000421, 0xf4000422, 0xf5000423, 0xe6000424, 0xe8000425, 0xe3000426, 0xfe000427, 0xfb000428,\n\t\t0xfd000429, 0xff00042a, 0xf900042b, 0xf800042c, 0xfc00042d, 0xe000042e, 0xf100042f, 0xc1000430,\n\t\t0xc2000431, 0xd7000432, 0xc7000433, 0xc4000434, 0xc5000435, 0xd6000436, 0xda000437, 0xc9000438,\n\t\t0xca000439, 0xcb00043a, 0xcc00043b, 0xcd00043c, 0xce00043d, 0xcf00043e, 0xd000043f, 0xd2000440,\n\t\t0xd3000441, 0xd4000442, 0xd5000443, 0xc6000444, 0xc8000445, 0xc3000446, 0xde000447, 0xdb000448,\n\t\t0xdd000449, 0xdf00044a, 0xd900044b, 0xd800044c, 0xdc00044d, 0xc000044e, 0xd100044f, 0xa3000451,\n\t\t0x95002219, 0x9600221a, 0x97002248, 0x98002264, 0x99002265, 0x93002320, 0x9b002321, 0x80002500,\n\t\t0x81002502, 0x8200250c, 0x83002510, 0x84002514, 0x85002518, 0x8600251c, 0x87002524, 0x8800252c,\n\t\t0x89002534, 0x8a00253c, 0xa0002550, 0xa1002551, 0xa2002552, 0xa4002553, 0xa5002554, 0xa6002555,\n\t\t0xa7002556, 0xa8002557, 0xa9002558, 0xaa002559, 0xab00255a, 0xac00255b, 0xad00255c, 0xae00255d,\n\t\t0xaf00255e, 0xb000255f, 0xb1002560, 0xb2002561, 0xb4002562, 0xb5002563, 0xb6002564, 0xb7002565,\n\t\t0xb8002566, 0xb9002567, 0xba002568, 0xbb002569, 0xbc00256a, 0xbd00256b, 0xbe00256c, 0x8b002580,\n\t\t0x8c002584, 0x8d002588, 0x8e00258c, 0x8f002590, 0x90002591, 0x91002592, 0x92002593, 0x940025a0,\n\t},\n}\n\n// KOI8U is the KOI8-U encoding.\nvar KOI8U *Charmap = &koi8U\n\nvar koi8U = Charmap{\n\tname:          \"KOI8-U\",\n\tmib:           identifier.KOI8U,\n\tasciiSuperset: true,\n\tlow:           0x80,\n\treplacement:   0x1a,\n\tdecode: [256]utf8Enc{\n\t\t{1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}},\n\t\t{1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}},\n\t\t{1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}},\n\t\t{1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}},\n\t\t{1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}},\n\t\t{1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}},\n\t\t{1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}},\n\t\t{1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}},\n\t\t{1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}},\n\t\t{1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}},\n\t\t{1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}},\n\t\t{1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}},\n\t\t{1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}},\n\t\t{1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}},\n\t\t{1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}},\n\t\t{1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}},\n\t\t{1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}},\n\t\t{1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}},\n\t\t{1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}},\n\t\t{1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}},\n\t\t{1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}},\n\t\t{1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}},\n\t\t{1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}},\n\t\t{1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}},\n\t\t{1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}},\n\t\t{1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}},\n\t\t{1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}},\n\t\t{1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}},\n\t\t{1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}},\n\t\t{1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}},\n\t\t{1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}},\n\t\t{1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}},\n\t\t{1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x94, 0x80}}, {3, [3]byte{0xe2, 0x94, 0x82}},\n\t\t{3, [3]byte{0xe2, 0x94, 0x8c}}, {3, [3]byte{0xe2, 0x94, 0x90}},\n\t\t{3, [3]byte{0xe2, 0x94, 0x94}}, {3, [3]byte{0xe2, 0x94, 0x98}},\n\t\t{3, [3]byte{0xe2, 0x94, 0x9c}}, {3, [3]byte{0xe2, 0x94, 0xa4}},\n\t\t{3, [3]byte{0xe2, 0x94, 0xac}}, {3, [3]byte{0xe2, 0x94, 0xb4}},\n\t\t{3, [3]byte{0xe2, 0x94, 0xbc}}, {3, [3]byte{0xe2, 0x96, 0x80}},\n\t\t{3, [3]byte{0xe2, 0x96, 0x84}}, {3, [3]byte{0xe2, 0x96, 0x88}},\n\t\t{3, [3]byte{0xe2, 0x96, 0x8c}}, {3, [3]byte{0xe2, 0x96, 0x90}},\n\t\t{3, [3]byte{0xe2, 0x96, 0x91}}, {3, [3]byte{0xe2, 0x96, 0x92}},\n\t\t{3, [3]byte{0xe2, 0x96, 0x93}}, {3, [3]byte{0xe2, 0x8c, 0xa0}},\n\t\t{3, [3]byte{0xe2, 0x96, 0xa0}}, {3, [3]byte{0xe2, 0x88, 0x99}},\n\t\t{3, [3]byte{0xe2, 0x88, 0x9a}}, {3, [3]byte{0xe2, 0x89, 0x88}},\n\t\t{3, [3]byte{0xe2, 0x89, 0xa4}}, {3, [3]byte{0xe2, 0x89, 0xa5}},\n\t\t{2, [3]byte{0xc2, 0xa0, 0x00}}, {3, [3]byte{0xe2, 0x8c, 0xa1}},\n\t\t{2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb2, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb7, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x90}}, {3, [3]byte{0xe2, 0x95, 0x91}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x92}}, {2, [3]byte{0xd1, 0x91, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x94, 0x00}}, {3, [3]byte{0xe2, 0x95, 0x94}},\n\t\t{2, [3]byte{0xd1, 0x96, 0x00}}, {2, [3]byte{0xd1, 0x97, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x97}}, {3, [3]byte{0xe2, 0x95, 0x98}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x99}}, {3, [3]byte{0xe2, 0x95, 0x9a}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x9b}}, {2, [3]byte{0xd2, 0x91, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x9e, 0x00}}, {3, [3]byte{0xe2, 0x95, 0x9e}},\n\t\t{3, [3]byte{0xe2, 0x95, 0x9f}}, {3, [3]byte{0xe2, 0x95, 0xa0}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xa1}}, {2, [3]byte{0xd0, 0x81, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x84, 0x00}}, {3, [3]byte{0xe2, 0x95, 0xa3}},\n\t\t{2, [3]byte{0xd0, 0x86, 0x00}}, {2, [3]byte{0xd0, 0x87, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xa6}}, {3, [3]byte{0xe2, 0x95, 0xa7}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xa8}}, {3, [3]byte{0xe2, 0x95, 0xa9}},\n\t\t{3, [3]byte{0xe2, 0x95, 0xaa}}, {2, [3]byte{0xd2, 0x90, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x8e, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x8e, 0x00}}, {2, [3]byte{0xd0, 0xb0, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xb1, 0x00}}, {2, [3]byte{0xd1, 0x86, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xb4, 0x00}}, {2, [3]byte{0xd0, 0xb5, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x84, 0x00}}, {2, [3]byte{0xd0, 0xb3, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x85, 0x00}}, {2, [3]byte{0xd0, 0xb8, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xb9, 0x00}}, {2, [3]byte{0xd0, 0xba, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xbb, 0x00}}, {2, [3]byte{0xd0, 0xbc, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xbd, 0x00}}, {2, [3]byte{0xd0, 0xbe, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xbf, 0x00}}, {2, [3]byte{0xd1, 0x8f, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x80, 0x00}}, {2, [3]byte{0xd1, 0x81, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x82, 0x00}}, {2, [3]byte{0xd1, 0x83, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xb6, 0x00}}, {2, [3]byte{0xd0, 0xb2, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x8c, 0x00}}, {2, [3]byte{0xd1, 0x8b, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xb7, 0x00}}, {2, [3]byte{0xd1, 0x88, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x8d, 0x00}}, {2, [3]byte{0xd1, 0x89, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x87, 0x00}}, {2, [3]byte{0xd1, 0x8a, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xae, 0x00}}, {2, [3]byte{0xd0, 0x90, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x91, 0x00}}, {2, [3]byte{0xd0, 0xa6, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x94, 0x00}}, {2, [3]byte{0xd0, 0x95, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xa4, 0x00}}, {2, [3]byte{0xd0, 0x93, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xa5, 0x00}}, {2, [3]byte{0xd0, 0x98, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x99, 0x00}}, {2, [3]byte{0xd0, 0x9a, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x9b, 0x00}}, {2, [3]byte{0xd0, 0x9c, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x9d, 0x00}}, {2, [3]byte{0xd0, 0x9e, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x9f, 0x00}}, {2, [3]byte{0xd0, 0xaf, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xa0, 0x00}}, {2, [3]byte{0xd0, 0xa1, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xa2, 0x00}}, {2, [3]byte{0xd0, 0xa3, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x96, 0x00}}, {2, [3]byte{0xd0, 0x92, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xac, 0x00}}, {2, [3]byte{0xd0, 0xab, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x97, 0x00}}, {2, [3]byte{0xd0, 0xa8, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xad, 0x00}}, {2, [3]byte{0xd0, 0xa9, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xa7, 0x00}}, {2, [3]byte{0xd0, 0xaa, 0x00}},\n\t},\n\tencode: [256]uint32{\n\t\t0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007,\n\t\t0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f,\n\t\t0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017,\n\t\t0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f,\n\t\t0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027,\n\t\t0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f,\n\t\t0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037,\n\t\t0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f,\n\t\t0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047,\n\t\t0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f,\n\t\t0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057,\n\t\t0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f,\n\t\t0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067,\n\t\t0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f,\n\t\t0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077,\n\t\t0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f,\n\t\t0x9a0000a0, 0xbf0000a9, 0x9c0000b0, 0x9d0000b2, 0x9e0000b7, 0x9f0000f7, 0xb3000401, 0xb4000404,\n\t\t0xb6000406, 0xb7000407, 0xbe00040e, 0xe1000410, 0xe2000411, 0xf7000412, 0xe7000413, 0xe4000414,\n\t\t0xe5000415, 0xf6000416, 0xfa000417, 0xe9000418, 0xea000419, 0xeb00041a, 0xec00041b, 0xed00041c,\n\t\t0xee00041d, 0xef00041e, 0xf000041f, 0xf2000420, 0xf3000421, 0xf4000422, 0xf5000423, 0xe6000424,\n\t\t0xe8000425, 0xe3000426, 0xfe000427, 0xfb000428, 0xfd000429, 0xff00042a, 0xf900042b, 0xf800042c,\n\t\t0xfc00042d, 0xe000042e, 0xf100042f, 0xc1000430, 0xc2000431, 0xd7000432, 0xc7000433, 0xc4000434,\n\t\t0xc5000435, 0xd6000436, 0xda000437, 0xc9000438, 0xca000439, 0xcb00043a, 0xcc00043b, 0xcd00043c,\n\t\t0xce00043d, 0xcf00043e, 0xd000043f, 0xd2000440, 0xd3000441, 0xd4000442, 0xd5000443, 0xc6000444,\n\t\t0xc8000445, 0xc3000446, 0xde000447, 0xdb000448, 0xdd000449, 0xdf00044a, 0xd900044b, 0xd800044c,\n\t\t0xdc00044d, 0xc000044e, 0xd100044f, 0xa3000451, 0xa4000454, 0xa6000456, 0xa7000457, 0xae00045e,\n\t\t0xbd000490, 0xad000491, 0x95002219, 0x9600221a, 0x97002248, 0x98002264, 0x99002265, 0x93002320,\n\t\t0x9b002321, 0x80002500, 0x81002502, 0x8200250c, 0x83002510, 0x84002514, 0x85002518, 0x8600251c,\n\t\t0x87002524, 0x8800252c, 0x89002534, 0x8a00253c, 0xa0002550, 0xa1002551, 0xa2002552, 0xa5002554,\n\t\t0xa8002557, 0xa9002558, 0xaa002559, 0xab00255a, 0xac00255b, 0xaf00255e, 0xb000255f, 0xb1002560,\n\t\t0xb2002561, 0xb5002563, 0xb8002566, 0xb9002567, 0xba002568, 0xbb002569, 0xbc00256a, 0x8b002580,\n\t\t0x8c002584, 0x8d002588, 0x8e00258c, 0x8f002590, 0x90002591, 0x91002592, 0x92002593, 0x940025a0,\n\t},\n}\n\n// Macintosh is the Macintosh encoding.\nvar Macintosh *Charmap = &macintosh\n\nvar macintosh = Charmap{\n\tname:          \"Macintosh\",\n\tmib:           identifier.Macintosh,\n\tasciiSuperset: true,\n\tlow:           0x80,\n\treplacement:   0x1a,\n\tdecode: [256]utf8Enc{\n\t\t{1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}},\n\t\t{1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}},\n\t\t{1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}},\n\t\t{1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}},\n\t\t{1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}},\n\t\t{1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}},\n\t\t{1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}},\n\t\t{1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}},\n\t\t{1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}},\n\t\t{1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}},\n\t\t{1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}},\n\t\t{1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}},\n\t\t{1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}},\n\t\t{1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}},\n\t\t{1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}},\n\t\t{1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}},\n\t\t{1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}},\n\t\t{1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}},\n\t\t{1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}},\n\t\t{1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}},\n\t\t{1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}},\n\t\t{1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}},\n\t\t{1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}},\n\t\t{1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}},\n\t\t{1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}},\n\t\t{1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}},\n\t\t{1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}},\n\t\t{1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}},\n\t\t{1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}},\n\t\t{1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}},\n\t\t{1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}},\n\t\t{1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}},\n\t\t{1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x87, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x91, 0x00}}, {2, [3]byte{0xc3, 0x96, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa2, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa3, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa5, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa9, 0x00}}, {2, [3]byte{0xc3, 0xa8, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xad, 0x00}}, {2, [3]byte{0xc3, 0xac, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb1, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb2, 0x00}}, {2, [3]byte{0xc3, 0xb4, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xbb, 0x00}}, {2, [3]byte{0xc3, 0xbc, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x80, 0xa0}}, {2, [3]byte{0xc2, 0xb0, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa2, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa7, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xa2}},\n\t\t{2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x84, 0xa2}}, {2, [3]byte{0xc2, 0xb4, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa8, 0x00}}, {3, [3]byte{0xe2, 0x89, 0xa0}},\n\t\t{2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc3, 0x98, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x88, 0x9e}}, {2, [3]byte{0xc2, 0xb1, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x89, 0xa4}}, {3, [3]byte{0xe2, 0x89, 0xa5}},\n\t\t{2, [3]byte{0xc2, 0xa5, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x88, 0x82}}, {3, [3]byte{0xe2, 0x88, 0x91}},\n\t\t{3, [3]byte{0xe2, 0x88, 0x8f}}, {2, [3]byte{0xcf, 0x80, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x88, 0xab}}, {2, [3]byte{0xc2, 0xaa, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xba, 0x00}}, {2, [3]byte{0xce, 0xa9, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc3, 0xb8, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xbf, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xac, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x9a}},\n\t\t{2, [3]byte{0xc6, 0x92, 0x00}}, {3, [3]byte{0xe2, 0x89, 0x88}},\n\t\t{3, [3]byte{0xe2, 0x88, 0x86}}, {2, [3]byte{0xc2, 0xab, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xbb, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xa6}},\n\t\t{2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0x80, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x83, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}},\n\t\t{2, [3]byte{0xc5, 0x92, 0x00}}, {2, [3]byte{0xc5, 0x93, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x93}}, {3, [3]byte{0xe2, 0x80, 0x94}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x9c}}, {3, [3]byte{0xe2, 0x80, 0x9d}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x98}}, {3, [3]byte{0xe2, 0x80, 0x99}},\n\t\t{2, [3]byte{0xc3, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x97, 0x8a}},\n\t\t{2, [3]byte{0xc3, 0xbf, 0x00}}, {2, [3]byte{0xc5, 0xb8, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x81, 0x84}}, {3, [3]byte{0xe2, 0x82, 0xac}},\n\t\t{3, [3]byte{0xe2, 0x80, 0xb9}}, {3, [3]byte{0xe2, 0x80, 0xba}},\n\t\t{3, [3]byte{0xef, 0xac, 0x81}}, {3, [3]byte{0xef, 0xac, 0x82}},\n\t\t{3, [3]byte{0xe2, 0x80, 0xa1}}, {2, [3]byte{0xc2, 0xb7, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x9a}}, {3, [3]byte{0xe2, 0x80, 0x9e}},\n\t\t{3, [3]byte{0xe2, 0x80, 0xb0}}, {2, [3]byte{0xc3, 0x82, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x8b, 0x00}}, {2, [3]byte{0xc3, 0x88, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x8d, 0x00}}, {2, [3]byte{0xc3, 0x8e, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x8f, 0x00}}, {2, [3]byte{0xc3, 0x8c, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x93, 0x00}}, {2, [3]byte{0xc3, 0x94, 0x00}},\n\t\t{3, [3]byte{0xef, 0xa3, 0xbf}}, {2, [3]byte{0xc3, 0x92, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x99, 0x00}}, {2, [3]byte{0xc4, 0xb1, 0x00}},\n\t\t{2, [3]byte{0xcb, 0x86, 0x00}}, {2, [3]byte{0xcb, 0x9c, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xaf, 0x00}}, {2, [3]byte{0xcb, 0x98, 0x00}},\n\t\t{2, [3]byte{0xcb, 0x99, 0x00}}, {2, [3]byte{0xcb, 0x9a, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb8, 0x00}}, {2, [3]byte{0xcb, 0x9d, 0x00}},\n\t\t{2, [3]byte{0xcb, 0x9b, 0x00}}, {2, [3]byte{0xcb, 0x87, 0x00}},\n\t},\n\tencode: [256]uint32{\n\t\t0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007,\n\t\t0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f,\n\t\t0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017,\n\t\t0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f,\n\t\t0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027,\n\t\t0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f,\n\t\t0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037,\n\t\t0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f,\n\t\t0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047,\n\t\t0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f,\n\t\t0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057,\n\t\t0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f,\n\t\t0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067,\n\t\t0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f,\n\t\t0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077,\n\t\t0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f,\n\t\t0xca0000a0, 0xc10000a1, 0xa20000a2, 0xa30000a3, 0xb40000a5, 0xa40000a7, 0xac0000a8, 0xa90000a9,\n\t\t0xbb0000aa, 0xc70000ab, 0xc20000ac, 0xa80000ae, 0xf80000af, 0xa10000b0, 0xb10000b1, 0xab0000b4,\n\t\t0xb50000b5, 0xa60000b6, 0xe10000b7, 0xfc0000b8, 0xbc0000ba, 0xc80000bb, 0xc00000bf, 0xcb0000c0,\n\t\t0xe70000c1, 0xe50000c2, 0xcc0000c3, 0x800000c4, 0x810000c5, 0xae0000c6, 0x820000c7, 0xe90000c8,\n\t\t0x830000c9, 0xe60000ca, 0xe80000cb, 0xed0000cc, 0xea0000cd, 0xeb0000ce, 0xec0000cf, 0x840000d1,\n\t\t0xf10000d2, 0xee0000d3, 0xef0000d4, 0xcd0000d5, 0x850000d6, 0xaf0000d8, 0xf40000d9, 0xf20000da,\n\t\t0xf30000db, 0x860000dc, 0xa70000df, 0x880000e0, 0x870000e1, 0x890000e2, 0x8b0000e3, 0x8a0000e4,\n\t\t0x8c0000e5, 0xbe0000e6, 0x8d0000e7, 0x8f0000e8, 0x8e0000e9, 0x900000ea, 0x910000eb, 0x930000ec,\n\t\t0x920000ed, 0x940000ee, 0x950000ef, 0x960000f1, 0x980000f2, 0x970000f3, 0x990000f4, 0x9b0000f5,\n\t\t0x9a0000f6, 0xd60000f7, 0xbf0000f8, 0x9d0000f9, 0x9c0000fa, 0x9e0000fb, 0x9f0000fc, 0xd80000ff,\n\t\t0xf5000131, 0xce000152, 0xcf000153, 0xd9000178, 0xc4000192, 0xf60002c6, 0xff0002c7, 0xf90002d8,\n\t\t0xfa0002d9, 0xfb0002da, 0xfe0002db, 0xf70002dc, 0xfd0002dd, 0xbd0003a9, 0xb90003c0, 0xd0002013,\n\t\t0xd1002014, 0xd4002018, 0xd5002019, 0xe200201a, 0xd200201c, 0xd300201d, 0xe300201e, 0xa0002020,\n\t\t0xe0002021, 0xa5002022, 0xc9002026, 0xe4002030, 0xdc002039, 0xdd00203a, 0xda002044, 0xdb0020ac,\n\t\t0xaa002122, 0xb6002202, 0xc6002206, 0xb800220f, 0xb7002211, 0xc300221a, 0xb000221e, 0xba00222b,\n\t\t0xc5002248, 0xad002260, 0xb2002264, 0xb3002265, 0xd70025ca, 0xf000f8ff, 0xde00fb01, 0xdf00fb02,\n\t},\n}\n\n// MacintoshCyrillic is the Macintosh Cyrillic encoding.\nvar MacintoshCyrillic *Charmap = &macintoshCyrillic\n\nvar macintoshCyrillic = Charmap{\n\tname:          \"Macintosh Cyrillic\",\n\tmib:           identifier.MacintoshCyrillic,\n\tasciiSuperset: true,\n\tlow:           0x80,\n\treplacement:   0x1a,\n\tdecode: [256]utf8Enc{\n\t\t{1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}},\n\t\t{1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}},\n\t\t{1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}},\n\t\t{1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}},\n\t\t{1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}},\n\t\t{1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}},\n\t\t{1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}},\n\t\t{1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}},\n\t\t{1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}},\n\t\t{1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}},\n\t\t{1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}},\n\t\t{1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}},\n\t\t{1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}},\n\t\t{1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}},\n\t\t{1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}},\n\t\t{1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}},\n\t\t{1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}},\n\t\t{1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}},\n\t\t{1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}},\n\t\t{1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}},\n\t\t{1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}},\n\t\t{1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}},\n\t\t{1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}},\n\t\t{1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}},\n\t\t{1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}},\n\t\t{1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}},\n\t\t{1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}},\n\t\t{1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}},\n\t\t{1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}},\n\t\t{1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}},\n\t\t{1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}},\n\t\t{1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}},\n\t\t{1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x90, 0x00}}, {2, [3]byte{0xd0, 0x91, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x92, 0x00}}, {2, [3]byte{0xd0, 0x93, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x94, 0x00}}, {2, [3]byte{0xd0, 0x95, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x96, 0x00}}, {2, [3]byte{0xd0, 0x97, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x98, 0x00}}, {2, [3]byte{0xd0, 0x99, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x9a, 0x00}}, {2, [3]byte{0xd0, 0x9b, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x9c, 0x00}}, {2, [3]byte{0xd0, 0x9d, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x9e, 0x00}}, {2, [3]byte{0xd0, 0x9f, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xa0, 0x00}}, {2, [3]byte{0xd0, 0xa1, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xa2, 0x00}}, {2, [3]byte{0xd0, 0xa3, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xa4, 0x00}}, {2, [3]byte{0xd0, 0xa5, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xa6, 0x00}}, {2, [3]byte{0xd0, 0xa7, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xa8, 0x00}}, {2, [3]byte{0xd0, 0xa9, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xaa, 0x00}}, {2, [3]byte{0xd0, 0xab, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xac, 0x00}}, {2, [3]byte{0xd0, 0xad, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xae, 0x00}}, {2, [3]byte{0xd0, 0xaf, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x80, 0xa0}}, {2, [3]byte{0xc2, 0xb0, 0x00}},\n\t\t{2, [3]byte{0xd2, 0x90, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa7, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xa2}},\n\t\t{2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xd0, 0x86, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x84, 0xa2}}, {2, [3]byte{0xd0, 0x82, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x92, 0x00}}, {3, [3]byte{0xe2, 0x89, 0xa0}},\n\t\t{2, [3]byte{0xd0, 0x83, 0x00}}, {2, [3]byte{0xd1, 0x93, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x88, 0x9e}}, {2, [3]byte{0xc2, 0xb1, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x89, 0xa4}}, {3, [3]byte{0xe2, 0x89, 0xa5}},\n\t\t{2, [3]byte{0xd1, 0x96, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}},\n\t\t{2, [3]byte{0xd2, 0x91, 0x00}}, {2, [3]byte{0xd0, 0x88, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x84, 0x00}}, {2, [3]byte{0xd1, 0x94, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x87, 0x00}}, {2, [3]byte{0xd1, 0x97, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x89, 0x00}}, {2, [3]byte{0xd1, 0x99, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x8a, 0x00}}, {2, [3]byte{0xd1, 0x9a, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x98, 0x00}}, {2, [3]byte{0xd0, 0x85, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xac, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x9a}},\n\t\t{2, [3]byte{0xc6, 0x92, 0x00}}, {3, [3]byte{0xe2, 0x89, 0x88}},\n\t\t{3, [3]byte{0xe2, 0x88, 0x86}}, {2, [3]byte{0xc2, 0xab, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xbb, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xa6}},\n\t\t{2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xd0, 0x8b, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x9b, 0x00}}, {2, [3]byte{0xd0, 0x8c, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x9c, 0x00}}, {2, [3]byte{0xd1, 0x95, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x93}}, {3, [3]byte{0xe2, 0x80, 0x94}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x9c}}, {3, [3]byte{0xe2, 0x80, 0x9d}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x98}}, {3, [3]byte{0xe2, 0x80, 0x99}},\n\t\t{2, [3]byte{0xc3, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x80, 0x9e}},\n\t\t{2, [3]byte{0xd0, 0x8e, 0x00}}, {2, [3]byte{0xd1, 0x9e, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x8f, 0x00}}, {2, [3]byte{0xd1, 0x9f, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x84, 0x96}}, {2, [3]byte{0xd0, 0x81, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x91, 0x00}}, {2, [3]byte{0xd1, 0x8f, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xb0, 0x00}}, {2, [3]byte{0xd0, 0xb1, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xb2, 0x00}}, {2, [3]byte{0xd0, 0xb3, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xb4, 0x00}}, {2, [3]byte{0xd0, 0xb5, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xb6, 0x00}}, {2, [3]byte{0xd0, 0xb7, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xb8, 0x00}}, {2, [3]byte{0xd0, 0xb9, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xba, 0x00}}, {2, [3]byte{0xd0, 0xbb, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xbc, 0x00}}, {2, [3]byte{0xd0, 0xbd, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xbe, 0x00}}, {2, [3]byte{0xd0, 0xbf, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x80, 0x00}}, {2, [3]byte{0xd1, 0x81, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x82, 0x00}}, {2, [3]byte{0xd1, 0x83, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x84, 0x00}}, {2, [3]byte{0xd1, 0x85, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x86, 0x00}}, {2, [3]byte{0xd1, 0x87, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x88, 0x00}}, {2, [3]byte{0xd1, 0x89, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x8a, 0x00}}, {2, [3]byte{0xd1, 0x8b, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x8c, 0x00}}, {2, [3]byte{0xd1, 0x8d, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x8e, 0x00}}, {3, [3]byte{0xe2, 0x82, 0xac}},\n\t},\n\tencode: [256]uint32{\n\t\t0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007,\n\t\t0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f,\n\t\t0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017,\n\t\t0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f,\n\t\t0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027,\n\t\t0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f,\n\t\t0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037,\n\t\t0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f,\n\t\t0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047,\n\t\t0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f,\n\t\t0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057,\n\t\t0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f,\n\t\t0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067,\n\t\t0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f,\n\t\t0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077,\n\t\t0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f,\n\t\t0xca0000a0, 0xa30000a3, 0xa40000a7, 0xa90000a9, 0xc70000ab, 0xc20000ac, 0xa80000ae, 0xa10000b0,\n\t\t0xb10000b1, 0xb50000b5, 0xa60000b6, 0xc80000bb, 0xd60000f7, 0xc4000192, 0xdd000401, 0xab000402,\n\t\t0xae000403, 0xb8000404, 0xc1000405, 0xa7000406, 0xba000407, 0xb7000408, 0xbc000409, 0xbe00040a,\n\t\t0xcb00040b, 0xcd00040c, 0xd800040e, 0xda00040f, 0x80000410, 0x81000411, 0x82000412, 0x83000413,\n\t\t0x84000414, 0x85000415, 0x86000416, 0x87000417, 0x88000418, 0x89000419, 0x8a00041a, 0x8b00041b,\n\t\t0x8c00041c, 0x8d00041d, 0x8e00041e, 0x8f00041f, 0x90000420, 0x91000421, 0x92000422, 0x93000423,\n\t\t0x94000424, 0x95000425, 0x96000426, 0x97000427, 0x98000428, 0x99000429, 0x9a00042a, 0x9b00042b,\n\t\t0x9c00042c, 0x9d00042d, 0x9e00042e, 0x9f00042f, 0xe0000430, 0xe1000431, 0xe2000432, 0xe3000433,\n\t\t0xe4000434, 0xe5000435, 0xe6000436, 0xe7000437, 0xe8000438, 0xe9000439, 0xea00043a, 0xeb00043b,\n\t\t0xec00043c, 0xed00043d, 0xee00043e, 0xef00043f, 0xf0000440, 0xf1000441, 0xf2000442, 0xf3000443,\n\t\t0xf4000444, 0xf5000445, 0xf6000446, 0xf7000447, 0xf8000448, 0xf9000449, 0xfa00044a, 0xfb00044b,\n\t\t0xfc00044c, 0xfd00044d, 0xfe00044e, 0xdf00044f, 0xde000451, 0xac000452, 0xaf000453, 0xb9000454,\n\t\t0xcf000455, 0xb4000456, 0xbb000457, 0xc0000458, 0xbd000459, 0xbf00045a, 0xcc00045b, 0xce00045c,\n\t\t0xd900045e, 0xdb00045f, 0xa2000490, 0xb6000491, 0xd0002013, 0xd1002014, 0xd4002018, 0xd5002019,\n\t\t0xd200201c, 0xd300201d, 0xd700201e, 0xa0002020, 0xa5002022, 0xc9002026, 0xff0020ac, 0xdc002116,\n\t\t0xaa002122, 0xc6002206, 0xc300221a, 0xb000221e, 0xc5002248, 0xad002260, 0xb2002264, 0xb3002265,\n\t},\n}\n\n// Windows874 is the Windows 874 encoding.\nvar Windows874 *Charmap = &windows874\n\nvar windows874 = Charmap{\n\tname:          \"Windows 874\",\n\tmib:           identifier.Windows874,\n\tasciiSuperset: true,\n\tlow:           0x80,\n\treplacement:   0x1a,\n\tdecode: [256]utf8Enc{\n\t\t{1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}},\n\t\t{1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}},\n\t\t{1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}},\n\t\t{1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}},\n\t\t{1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}},\n\t\t{1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}},\n\t\t{1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}},\n\t\t{1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}},\n\t\t{1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}},\n\t\t{1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}},\n\t\t{1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}},\n\t\t{1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}},\n\t\t{1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}},\n\t\t{1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}},\n\t\t{1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}},\n\t\t{1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}},\n\t\t{1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}},\n\t\t{1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}},\n\t\t{1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}},\n\t\t{1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}},\n\t\t{1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}},\n\t\t{1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}},\n\t\t{1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}},\n\t\t{1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}},\n\t\t{1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}},\n\t\t{1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}},\n\t\t{1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}},\n\t\t{1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}},\n\t\t{1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}},\n\t\t{1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}},\n\t\t{1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}},\n\t\t{1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}},\n\t\t{1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x82, 0xac}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0xa6}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0x98}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x99}}, {3, [3]byte{0xe2, 0x80, 0x9c}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x9d}}, {3, [3]byte{0xe2, 0x80, 0xa2}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x93}}, {3, [3]byte{0xe2, 0x80, 0x94}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{2, [3]byte{0xc2, 0xa0, 0x00}}, {3, [3]byte{0xe0, 0xb8, 0x81}},\n\t\t{3, [3]byte{0xe0, 0xb8, 0x82}}, {3, [3]byte{0xe0, 0xb8, 0x83}},\n\t\t{3, [3]byte{0xe0, 0xb8, 0x84}}, {3, [3]byte{0xe0, 0xb8, 0x85}},\n\t\t{3, [3]byte{0xe0, 0xb8, 0x86}}, {3, [3]byte{0xe0, 0xb8, 0x87}},\n\t\t{3, [3]byte{0xe0, 0xb8, 0x88}}, {3, [3]byte{0xe0, 0xb8, 0x89}},\n\t\t{3, [3]byte{0xe0, 0xb8, 0x8a}}, {3, [3]byte{0xe0, 0xb8, 0x8b}},\n\t\t{3, [3]byte{0xe0, 0xb8, 0x8c}}, {3, [3]byte{0xe0, 0xb8, 0x8d}},\n\t\t{3, [3]byte{0xe0, 0xb8, 0x8e}}, {3, [3]byte{0xe0, 0xb8, 0x8f}},\n\t\t{3, [3]byte{0xe0, 0xb8, 0x90}}, {3, [3]byte{0xe0, 0xb8, 0x91}},\n\t\t{3, [3]byte{0xe0, 0xb8, 0x92}}, {3, [3]byte{0xe0, 0xb8, 0x93}},\n\t\t{3, [3]byte{0xe0, 0xb8, 0x94}}, {3, [3]byte{0xe0, 0xb8, 0x95}},\n\t\t{3, [3]byte{0xe0, 0xb8, 0x96}}, {3, [3]byte{0xe0, 0xb8, 0x97}},\n\t\t{3, [3]byte{0xe0, 0xb8, 0x98}}, {3, [3]byte{0xe0, 0xb8, 0x99}},\n\t\t{3, [3]byte{0xe0, 0xb8, 0x9a}}, {3, [3]byte{0xe0, 0xb8, 0x9b}},\n\t\t{3, [3]byte{0xe0, 0xb8, 0x9c}}, {3, [3]byte{0xe0, 0xb8, 0x9d}},\n\t\t{3, [3]byte{0xe0, 0xb8, 0x9e}}, {3, [3]byte{0xe0, 0xb8, 0x9f}},\n\t\t{3, [3]byte{0xe0, 0xb8, 0xa0}}, {3, [3]byte{0xe0, 0xb8, 0xa1}},\n\t\t{3, [3]byte{0xe0, 0xb8, 0xa2}}, {3, [3]byte{0xe0, 0xb8, 0xa3}},\n\t\t{3, [3]byte{0xe0, 0xb8, 0xa4}}, {3, [3]byte{0xe0, 0xb8, 0xa5}},\n\t\t{3, [3]byte{0xe0, 0xb8, 0xa6}}, {3, [3]byte{0xe0, 0xb8, 0xa7}},\n\t\t{3, [3]byte{0xe0, 0xb8, 0xa8}}, {3, [3]byte{0xe0, 0xb8, 0xa9}},\n\t\t{3, [3]byte{0xe0, 0xb8, 0xaa}}, {3, [3]byte{0xe0, 0xb8, 0xab}},\n\t\t{3, [3]byte{0xe0, 0xb8, 0xac}}, {3, [3]byte{0xe0, 0xb8, 0xad}},\n\t\t{3, [3]byte{0xe0, 0xb8, 0xae}}, {3, [3]byte{0xe0, 0xb8, 0xaf}},\n\t\t{3, [3]byte{0xe0, 0xb8, 0xb0}}, {3, [3]byte{0xe0, 0xb8, 0xb1}},\n\t\t{3, [3]byte{0xe0, 0xb8, 0xb2}}, {3, [3]byte{0xe0, 0xb8, 0xb3}},\n\t\t{3, [3]byte{0xe0, 0xb8, 0xb4}}, {3, [3]byte{0xe0, 0xb8, 0xb5}},\n\t\t{3, [3]byte{0xe0, 0xb8, 0xb6}}, {3, [3]byte{0xe0, 0xb8, 0xb7}},\n\t\t{3, [3]byte{0xe0, 0xb8, 0xb8}}, {3, [3]byte{0xe0, 0xb8, 0xb9}},\n\t\t{3, [3]byte{0xe0, 0xb8, 0xba}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe0, 0xb8, 0xbf}},\n\t\t{3, [3]byte{0xe0, 0xb9, 0x80}}, {3, [3]byte{0xe0, 0xb9, 0x81}},\n\t\t{3, [3]byte{0xe0, 0xb9, 0x82}}, {3, [3]byte{0xe0, 0xb9, 0x83}},\n\t\t{3, [3]byte{0xe0, 0xb9, 0x84}}, {3, [3]byte{0xe0, 0xb9, 0x85}},\n\t\t{3, [3]byte{0xe0, 0xb9, 0x86}}, {3, [3]byte{0xe0, 0xb9, 0x87}},\n\t\t{3, [3]byte{0xe0, 0xb9, 0x88}}, {3, [3]byte{0xe0, 0xb9, 0x89}},\n\t\t{3, [3]byte{0xe0, 0xb9, 0x8a}}, {3, [3]byte{0xe0, 0xb9, 0x8b}},\n\t\t{3, [3]byte{0xe0, 0xb9, 0x8c}}, {3, [3]byte{0xe0, 0xb9, 0x8d}},\n\t\t{3, [3]byte{0xe0, 0xb9, 0x8e}}, {3, [3]byte{0xe0, 0xb9, 0x8f}},\n\t\t{3, [3]byte{0xe0, 0xb9, 0x90}}, {3, [3]byte{0xe0, 0xb9, 0x91}},\n\t\t{3, [3]byte{0xe0, 0xb9, 0x92}}, {3, [3]byte{0xe0, 0xb9, 0x93}},\n\t\t{3, [3]byte{0xe0, 0xb9, 0x94}}, {3, [3]byte{0xe0, 0xb9, 0x95}},\n\t\t{3, [3]byte{0xe0, 0xb9, 0x96}}, {3, [3]byte{0xe0, 0xb9, 0x97}},\n\t\t{3, [3]byte{0xe0, 0xb9, 0x98}}, {3, [3]byte{0xe0, 0xb9, 0x99}},\n\t\t{3, [3]byte{0xe0, 0xb9, 0x9a}}, {3, [3]byte{0xe0, 0xb9, 0x9b}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t},\n\tencode: [256]uint32{\n\t\t0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007,\n\t\t0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f,\n\t\t0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017,\n\t\t0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f,\n\t\t0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027,\n\t\t0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f,\n\t\t0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037,\n\t\t0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f,\n\t\t0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047,\n\t\t0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f,\n\t\t0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057,\n\t\t0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f,\n\t\t0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067,\n\t\t0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f,\n\t\t0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077,\n\t\t0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f,\n\t\t0xa00000a0, 0xa1000e01, 0xa2000e02, 0xa3000e03, 0xa4000e04, 0xa5000e05, 0xa6000e06, 0xa7000e07,\n\t\t0xa8000e08, 0xa9000e09, 0xaa000e0a, 0xab000e0b, 0xac000e0c, 0xad000e0d, 0xae000e0e, 0xaf000e0f,\n\t\t0xb0000e10, 0xb1000e11, 0xb2000e12, 0xb3000e13, 0xb4000e14, 0xb5000e15, 0xb6000e16, 0xb7000e17,\n\t\t0xb8000e18, 0xb9000e19, 0xba000e1a, 0xbb000e1b, 0xbc000e1c, 0xbd000e1d, 0xbe000e1e, 0xbf000e1f,\n\t\t0xc0000e20, 0xc1000e21, 0xc2000e22, 0xc3000e23, 0xc4000e24, 0xc5000e25, 0xc6000e26, 0xc7000e27,\n\t\t0xc8000e28, 0xc9000e29, 0xca000e2a, 0xcb000e2b, 0xcc000e2c, 0xcd000e2d, 0xce000e2e, 0xcf000e2f,\n\t\t0xd0000e30, 0xd1000e31, 0xd2000e32, 0xd3000e33, 0xd4000e34, 0xd5000e35, 0xd6000e36, 0xd7000e37,\n\t\t0xd8000e38, 0xd9000e39, 0xda000e3a, 0xdf000e3f, 0xe0000e40, 0xe1000e41, 0xe2000e42, 0xe3000e43,\n\t\t0xe4000e44, 0xe5000e45, 0xe6000e46, 0xe7000e47, 0xe8000e48, 0xe9000e49, 0xea000e4a, 0xeb000e4b,\n\t\t0xec000e4c, 0xed000e4d, 0xee000e4e, 0xef000e4f, 0xf0000e50, 0xf1000e51, 0xf2000e52, 0xf3000e53,\n\t\t0xf4000e54, 0xf5000e55, 0xf6000e56, 0xf7000e57, 0xf8000e58, 0xf9000e59, 0xfa000e5a, 0xfb000e5b,\n\t\t0x96002013, 0x97002014, 0x91002018, 0x92002019, 0x9300201c, 0x9400201d, 0x95002022, 0x85002026,\n\t\t0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac,\n\t\t0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac,\n\t\t0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac,\n\t\t0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac,\n\t},\n}\n\n// Windows1250 is the Windows 1250 encoding.\nvar Windows1250 *Charmap = &windows1250\n\nvar windows1250 = Charmap{\n\tname:          \"Windows 1250\",\n\tmib:           identifier.Windows1250,\n\tasciiSuperset: true,\n\tlow:           0x80,\n\treplacement:   0x1a,\n\tdecode: [256]utf8Enc{\n\t\t{1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}},\n\t\t{1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}},\n\t\t{1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}},\n\t\t{1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}},\n\t\t{1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}},\n\t\t{1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}},\n\t\t{1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}},\n\t\t{1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}},\n\t\t{1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}},\n\t\t{1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}},\n\t\t{1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}},\n\t\t{1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}},\n\t\t{1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}},\n\t\t{1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}},\n\t\t{1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}},\n\t\t{1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}},\n\t\t{1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}},\n\t\t{1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}},\n\t\t{1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}},\n\t\t{1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}},\n\t\t{1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}},\n\t\t{1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}},\n\t\t{1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}},\n\t\t{1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}},\n\t\t{1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}},\n\t\t{1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}},\n\t\t{1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}},\n\t\t{1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}},\n\t\t{1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}},\n\t\t{1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}},\n\t\t{1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}},\n\t\t{1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}},\n\t\t{1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x82, 0xac}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x9a}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x9e}}, {3, [3]byte{0xe2, 0x80, 0xa6}},\n\t\t{3, [3]byte{0xe2, 0x80, 0xa0}}, {3, [3]byte{0xe2, 0x80, 0xa1}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0xb0}},\n\t\t{2, [3]byte{0xc5, 0xa0, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xb9}},\n\t\t{2, [3]byte{0xc5, 0x9a, 0x00}}, {2, [3]byte{0xc5, 0xa4, 0x00}},\n\t\t{2, [3]byte{0xc5, 0xbd, 0x00}}, {2, [3]byte{0xc5, 0xb9, 0x00}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0x98}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x99}}, {3, [3]byte{0xe2, 0x80, 0x9c}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x9d}}, {3, [3]byte{0xe2, 0x80, 0xa2}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x93}}, {3, [3]byte{0xe2, 0x80, 0x94}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x84, 0xa2}},\n\t\t{2, [3]byte{0xc5, 0xa1, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xba}},\n\t\t{2, [3]byte{0xc5, 0x9b, 0x00}}, {2, [3]byte{0xc5, 0xa5, 0x00}},\n\t\t{2, [3]byte{0xc5, 0xbe, 0x00}}, {2, [3]byte{0xc5, 0xba, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xcb, 0x87, 0x00}},\n\t\t{2, [3]byte{0xcb, 0x98, 0x00}}, {2, [3]byte{0xc5, 0x81, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa4, 0x00}}, {2, [3]byte{0xc4, 0x84, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}},\n\t\t{2, [3]byte{0xc5, 0x9e, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc5, 0xbb, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}},\n\t\t{2, [3]byte{0xcb, 0x9b, 0x00}}, {2, [3]byte{0xc5, 0x82, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb8, 0x00}}, {2, [3]byte{0xc4, 0x85, 0x00}},\n\t\t{2, [3]byte{0xc5, 0x9f, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}},\n\t\t{2, [3]byte{0xc4, 0xbd, 0x00}}, {2, [3]byte{0xcb, 0x9d, 0x00}},\n\t\t{2, [3]byte{0xc4, 0xbe, 0x00}}, {2, [3]byte{0xc5, 0xbc, 0x00}},\n\t\t{2, [3]byte{0xc5, 0x94, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc4, 0x82, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc4, 0xb9, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x86, 0x00}}, {2, [3]byte{0xc3, 0x87, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x98, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc4, 0x8e, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x90, 0x00}}, {2, [3]byte{0xc5, 0x83, 0x00}},\n\t\t{2, [3]byte{0xc5, 0x87, 0x00}}, {2, [3]byte{0xc3, 0x93, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc5, 0x90, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}},\n\t\t{2, [3]byte{0xc5, 0x98, 0x00}}, {2, [3]byte{0xc5, 0xae, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc5, 0xb0, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0x9d, 0x00}},\n\t\t{2, [3]byte{0xc5, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}},\n\t\t{2, [3]byte{0xc5, 0x95, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc4, 0x83, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc4, 0xba, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x87, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x8d, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x99, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x9b, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc4, 0x8f, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x91, 0x00}}, {2, [3]byte{0xc5, 0x84, 0x00}},\n\t\t{2, [3]byte{0xc5, 0x88, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb4, 0x00}}, {2, [3]byte{0xc5, 0x91, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}},\n\t\t{2, [3]byte{0xc5, 0x99, 0x00}}, {2, [3]byte{0xc5, 0xaf, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc5, 0xb1, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc3, 0xbd, 0x00}},\n\t\t{2, [3]byte{0xc5, 0xa3, 0x00}}, {2, [3]byte{0xcb, 0x99, 0x00}},\n\t},\n\tencode: [256]uint32{\n\t\t0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007,\n\t\t0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f,\n\t\t0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017,\n\t\t0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f,\n\t\t0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027,\n\t\t0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f,\n\t\t0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037,\n\t\t0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f,\n\t\t0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047,\n\t\t0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f,\n\t\t0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057,\n\t\t0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f,\n\t\t0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067,\n\t\t0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f,\n\t\t0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077,\n\t\t0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f,\n\t\t0xa00000a0, 0xa40000a4, 0xa60000a6, 0xa70000a7, 0xa80000a8, 0xa90000a9, 0xab0000ab, 0xac0000ac,\n\t\t0xad0000ad, 0xae0000ae, 0xb00000b0, 0xb10000b1, 0xb40000b4, 0xb50000b5, 0xb60000b6, 0xb70000b7,\n\t\t0xb80000b8, 0xbb0000bb, 0xc10000c1, 0xc20000c2, 0xc40000c4, 0xc70000c7, 0xc90000c9, 0xcb0000cb,\n\t\t0xcd0000cd, 0xce0000ce, 0xd30000d3, 0xd40000d4, 0xd60000d6, 0xd70000d7, 0xda0000da, 0xdc0000dc,\n\t\t0xdd0000dd, 0xdf0000df, 0xe10000e1, 0xe20000e2, 0xe40000e4, 0xe70000e7, 0xe90000e9, 0xeb0000eb,\n\t\t0xed0000ed, 0xee0000ee, 0xf30000f3, 0xf40000f4, 0xf60000f6, 0xf70000f7, 0xfa0000fa, 0xfc0000fc,\n\t\t0xfd0000fd, 0xc3000102, 0xe3000103, 0xa5000104, 0xb9000105, 0xc6000106, 0xe6000107, 0xc800010c,\n\t\t0xe800010d, 0xcf00010e, 0xef00010f, 0xd0000110, 0xf0000111, 0xca000118, 0xea000119, 0xcc00011a,\n\t\t0xec00011b, 0xc5000139, 0xe500013a, 0xbc00013d, 0xbe00013e, 0xa3000141, 0xb3000142, 0xd1000143,\n\t\t0xf1000144, 0xd2000147, 0xf2000148, 0xd5000150, 0xf5000151, 0xc0000154, 0xe0000155, 0xd8000158,\n\t\t0xf8000159, 0x8c00015a, 0x9c00015b, 0xaa00015e, 0xba00015f, 0x8a000160, 0x9a000161, 0xde000162,\n\t\t0xfe000163, 0x8d000164, 0x9d000165, 0xd900016e, 0xf900016f, 0xdb000170, 0xfb000171, 0x8f000179,\n\t\t0x9f00017a, 0xaf00017b, 0xbf00017c, 0x8e00017d, 0x9e00017e, 0xa10002c7, 0xa20002d8, 0xff0002d9,\n\t\t0xb20002db, 0xbd0002dd, 0x96002013, 0x97002014, 0x91002018, 0x92002019, 0x8200201a, 0x9300201c,\n\t\t0x9400201d, 0x8400201e, 0x86002020, 0x87002021, 0x95002022, 0x85002026, 0x89002030, 0x8b002039,\n\t\t0x9b00203a, 0x800020ac, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122,\n\t},\n}\n\n// Windows1251 is the Windows 1251 encoding.\nvar Windows1251 *Charmap = &windows1251\n\nvar windows1251 = Charmap{\n\tname:          \"Windows 1251\",\n\tmib:           identifier.Windows1251,\n\tasciiSuperset: true,\n\tlow:           0x80,\n\treplacement:   0x1a,\n\tdecode: [256]utf8Enc{\n\t\t{1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}},\n\t\t{1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}},\n\t\t{1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}},\n\t\t{1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}},\n\t\t{1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}},\n\t\t{1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}},\n\t\t{1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}},\n\t\t{1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}},\n\t\t{1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}},\n\t\t{1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}},\n\t\t{1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}},\n\t\t{1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}},\n\t\t{1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}},\n\t\t{1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}},\n\t\t{1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}},\n\t\t{1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}},\n\t\t{1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}},\n\t\t{1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}},\n\t\t{1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}},\n\t\t{1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}},\n\t\t{1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}},\n\t\t{1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}},\n\t\t{1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}},\n\t\t{1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}},\n\t\t{1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}},\n\t\t{1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}},\n\t\t{1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}},\n\t\t{1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}},\n\t\t{1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}},\n\t\t{1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}},\n\t\t{1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}},\n\t\t{1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}},\n\t\t{1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x82, 0x00}}, {2, [3]byte{0xd0, 0x83, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x9a}}, {2, [3]byte{0xd1, 0x93, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x9e}}, {3, [3]byte{0xe2, 0x80, 0xa6}},\n\t\t{3, [3]byte{0xe2, 0x80, 0xa0}}, {3, [3]byte{0xe2, 0x80, 0xa1}},\n\t\t{3, [3]byte{0xe2, 0x82, 0xac}}, {3, [3]byte{0xe2, 0x80, 0xb0}},\n\t\t{2, [3]byte{0xd0, 0x89, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xb9}},\n\t\t{2, [3]byte{0xd0, 0x8a, 0x00}}, {2, [3]byte{0xd0, 0x8c, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x8b, 0x00}}, {2, [3]byte{0xd0, 0x8f, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x92, 0x00}}, {3, [3]byte{0xe2, 0x80, 0x98}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x99}}, {3, [3]byte{0xe2, 0x80, 0x9c}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x9d}}, {3, [3]byte{0xe2, 0x80, 0xa2}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x93}}, {3, [3]byte{0xe2, 0x80, 0x94}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x84, 0xa2}},\n\t\t{2, [3]byte{0xd1, 0x99, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xba}},\n\t\t{2, [3]byte{0xd1, 0x9a, 0x00}}, {2, [3]byte{0xd1, 0x9c, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x9b, 0x00}}, {2, [3]byte{0xd1, 0x9f, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xd0, 0x8e, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x9e, 0x00}}, {2, [3]byte{0xd0, 0x88, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa4, 0x00}}, {2, [3]byte{0xd2, 0x90, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x81, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x84, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xd0, 0x87, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x86, 0x00}}, {2, [3]byte{0xd1, 0x96, 0x00}},\n\t\t{2, [3]byte{0xd2, 0x91, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x91, 0x00}}, {3, [3]byte{0xe2, 0x84, 0x96}},\n\t\t{2, [3]byte{0xd1, 0x94, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x98, 0x00}}, {2, [3]byte{0xd0, 0x85, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x95, 0x00}}, {2, [3]byte{0xd1, 0x97, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x90, 0x00}}, {2, [3]byte{0xd0, 0x91, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x92, 0x00}}, {2, [3]byte{0xd0, 0x93, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x94, 0x00}}, {2, [3]byte{0xd0, 0x95, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x96, 0x00}}, {2, [3]byte{0xd0, 0x97, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x98, 0x00}}, {2, [3]byte{0xd0, 0x99, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x9a, 0x00}}, {2, [3]byte{0xd0, 0x9b, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x9c, 0x00}}, {2, [3]byte{0xd0, 0x9d, 0x00}},\n\t\t{2, [3]byte{0xd0, 0x9e, 0x00}}, {2, [3]byte{0xd0, 0x9f, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xa0, 0x00}}, {2, [3]byte{0xd0, 0xa1, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xa2, 0x00}}, {2, [3]byte{0xd0, 0xa3, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xa4, 0x00}}, {2, [3]byte{0xd0, 0xa5, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xa6, 0x00}}, {2, [3]byte{0xd0, 0xa7, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xa8, 0x00}}, {2, [3]byte{0xd0, 0xa9, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xaa, 0x00}}, {2, [3]byte{0xd0, 0xab, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xac, 0x00}}, {2, [3]byte{0xd0, 0xad, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xae, 0x00}}, {2, [3]byte{0xd0, 0xaf, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xb0, 0x00}}, {2, [3]byte{0xd0, 0xb1, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xb2, 0x00}}, {2, [3]byte{0xd0, 0xb3, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xb4, 0x00}}, {2, [3]byte{0xd0, 0xb5, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xb6, 0x00}}, {2, [3]byte{0xd0, 0xb7, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xb8, 0x00}}, {2, [3]byte{0xd0, 0xb9, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xba, 0x00}}, {2, [3]byte{0xd0, 0xbb, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xbc, 0x00}}, {2, [3]byte{0xd0, 0xbd, 0x00}},\n\t\t{2, [3]byte{0xd0, 0xbe, 0x00}}, {2, [3]byte{0xd0, 0xbf, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x80, 0x00}}, {2, [3]byte{0xd1, 0x81, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x82, 0x00}}, {2, [3]byte{0xd1, 0x83, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x84, 0x00}}, {2, [3]byte{0xd1, 0x85, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x86, 0x00}}, {2, [3]byte{0xd1, 0x87, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x88, 0x00}}, {2, [3]byte{0xd1, 0x89, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x8a, 0x00}}, {2, [3]byte{0xd1, 0x8b, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x8c, 0x00}}, {2, [3]byte{0xd1, 0x8d, 0x00}},\n\t\t{2, [3]byte{0xd1, 0x8e, 0x00}}, {2, [3]byte{0xd1, 0x8f, 0x00}},\n\t},\n\tencode: [256]uint32{\n\t\t0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007,\n\t\t0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f,\n\t\t0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017,\n\t\t0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f,\n\t\t0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027,\n\t\t0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f,\n\t\t0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037,\n\t\t0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f,\n\t\t0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047,\n\t\t0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f,\n\t\t0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057,\n\t\t0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f,\n\t\t0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067,\n\t\t0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f,\n\t\t0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077,\n\t\t0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f,\n\t\t0xa00000a0, 0xa40000a4, 0xa60000a6, 0xa70000a7, 0xa90000a9, 0xab0000ab, 0xac0000ac, 0xad0000ad,\n\t\t0xae0000ae, 0xb00000b0, 0xb10000b1, 0xb50000b5, 0xb60000b6, 0xb70000b7, 0xbb0000bb, 0xa8000401,\n\t\t0x80000402, 0x81000403, 0xaa000404, 0xbd000405, 0xb2000406, 0xaf000407, 0xa3000408, 0x8a000409,\n\t\t0x8c00040a, 0x8e00040b, 0x8d00040c, 0xa100040e, 0x8f00040f, 0xc0000410, 0xc1000411, 0xc2000412,\n\t\t0xc3000413, 0xc4000414, 0xc5000415, 0xc6000416, 0xc7000417, 0xc8000418, 0xc9000419, 0xca00041a,\n\t\t0xcb00041b, 0xcc00041c, 0xcd00041d, 0xce00041e, 0xcf00041f, 0xd0000420, 0xd1000421, 0xd2000422,\n\t\t0xd3000423, 0xd4000424, 0xd5000425, 0xd6000426, 0xd7000427, 0xd8000428, 0xd9000429, 0xda00042a,\n\t\t0xdb00042b, 0xdc00042c, 0xdd00042d, 0xde00042e, 0xdf00042f, 0xe0000430, 0xe1000431, 0xe2000432,\n\t\t0xe3000433, 0xe4000434, 0xe5000435, 0xe6000436, 0xe7000437, 0xe8000438, 0xe9000439, 0xea00043a,\n\t\t0xeb00043b, 0xec00043c, 0xed00043d, 0xee00043e, 0xef00043f, 0xf0000440, 0xf1000441, 0xf2000442,\n\t\t0xf3000443, 0xf4000444, 0xf5000445, 0xf6000446, 0xf7000447, 0xf8000448, 0xf9000449, 0xfa00044a,\n\t\t0xfb00044b, 0xfc00044c, 0xfd00044d, 0xfe00044e, 0xff00044f, 0xb8000451, 0x90000452, 0x83000453,\n\t\t0xba000454, 0xbe000455, 0xb3000456, 0xbf000457, 0xbc000458, 0x9a000459, 0x9c00045a, 0x9e00045b,\n\t\t0x9d00045c, 0xa200045e, 0x9f00045f, 0xa5000490, 0xb4000491, 0x96002013, 0x97002014, 0x91002018,\n\t\t0x92002019, 0x8200201a, 0x9300201c, 0x9400201d, 0x8400201e, 0x86002020, 0x87002021, 0x95002022,\n\t\t0x85002026, 0x89002030, 0x8b002039, 0x9b00203a, 0x880020ac, 0xb9002116, 0x99002122, 0x99002122,\n\t},\n}\n\n// Windows1252 is the Windows 1252 encoding.\nvar Windows1252 *Charmap = &windows1252\n\nvar windows1252 = Charmap{\n\tname:          \"Windows 1252\",\n\tmib:           identifier.Windows1252,\n\tasciiSuperset: true,\n\tlow:           0x80,\n\treplacement:   0x1a,\n\tdecode: [256]utf8Enc{\n\t\t{1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}},\n\t\t{1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}},\n\t\t{1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}},\n\t\t{1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}},\n\t\t{1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}},\n\t\t{1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}},\n\t\t{1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}},\n\t\t{1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}},\n\t\t{1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}},\n\t\t{1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}},\n\t\t{1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}},\n\t\t{1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}},\n\t\t{1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}},\n\t\t{1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}},\n\t\t{1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}},\n\t\t{1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}},\n\t\t{1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}},\n\t\t{1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}},\n\t\t{1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}},\n\t\t{1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}},\n\t\t{1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}},\n\t\t{1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}},\n\t\t{1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}},\n\t\t{1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}},\n\t\t{1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}},\n\t\t{1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}},\n\t\t{1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}},\n\t\t{1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}},\n\t\t{1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}},\n\t\t{1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}},\n\t\t{1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}},\n\t\t{1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}},\n\t\t{1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x82, 0xac}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x9a}}, {2, [3]byte{0xc6, 0x92, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x9e}}, {3, [3]byte{0xe2, 0x80, 0xa6}},\n\t\t{3, [3]byte{0xe2, 0x80, 0xa0}}, {3, [3]byte{0xe2, 0x80, 0xa1}},\n\t\t{2, [3]byte{0xcb, 0x86, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xb0}},\n\t\t{2, [3]byte{0xc5, 0xa0, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xb9}},\n\t\t{2, [3]byte{0xc5, 0x92, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{2, [3]byte{0xc5, 0xbd, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0x98}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x99}}, {3, [3]byte{0xe2, 0x80, 0x9c}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x9d}}, {3, [3]byte{0xe2, 0x80, 0xa2}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x93}}, {3, [3]byte{0xe2, 0x80, 0x94}},\n\t\t{2, [3]byte{0xcb, 0x9c, 0x00}}, {3, [3]byte{0xe2, 0x84, 0xa2}},\n\t\t{2, [3]byte{0xc5, 0xa1, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xba}},\n\t\t{2, [3]byte{0xc5, 0x93, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{2, [3]byte{0xc5, 0xbe, 0x00}}, {2, [3]byte{0xc5, 0xb8, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa2, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa4, 0x00}}, {2, [3]byte{0xc2, 0xa5, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc2, 0xaf, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc2, 0xb3, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb8, 0x00}}, {2, [3]byte{0xc2, 0xb9, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xba, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xbe, 0x00}}, {2, [3]byte{0xc2, 0xbf, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x83, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc3, 0x87, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x90, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x92, 0x00}}, {2, [3]byte{0xc3, 0x93, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x98, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0x9d, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x9e, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0xa3, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xac, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb0, 0x00}}, {2, [3]byte{0xc3, 0xb1, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb2, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb4, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc3, 0xbd, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xbe, 0x00}}, {2, [3]byte{0xc3, 0xbf, 0x00}},\n\t},\n\tencode: [256]uint32{\n\t\t0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007,\n\t\t0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f,\n\t\t0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017,\n\t\t0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f,\n\t\t0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027,\n\t\t0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f,\n\t\t0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037,\n\t\t0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f,\n\t\t0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047,\n\t\t0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f,\n\t\t0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057,\n\t\t0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f,\n\t\t0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067,\n\t\t0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f,\n\t\t0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077,\n\t\t0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f,\n\t\t0xa00000a0, 0xa10000a1, 0xa20000a2, 0xa30000a3, 0xa40000a4, 0xa50000a5, 0xa60000a6, 0xa70000a7,\n\t\t0xa80000a8, 0xa90000a9, 0xaa0000aa, 0xab0000ab, 0xac0000ac, 0xad0000ad, 0xae0000ae, 0xaf0000af,\n\t\t0xb00000b0, 0xb10000b1, 0xb20000b2, 0xb30000b3, 0xb40000b4, 0xb50000b5, 0xb60000b6, 0xb70000b7,\n\t\t0xb80000b8, 0xb90000b9, 0xba0000ba, 0xbb0000bb, 0xbc0000bc, 0xbd0000bd, 0xbe0000be, 0xbf0000bf,\n\t\t0xc00000c0, 0xc10000c1, 0xc20000c2, 0xc30000c3, 0xc40000c4, 0xc50000c5, 0xc60000c6, 0xc70000c7,\n\t\t0xc80000c8, 0xc90000c9, 0xca0000ca, 0xcb0000cb, 0xcc0000cc, 0xcd0000cd, 0xce0000ce, 0xcf0000cf,\n\t\t0xd00000d0, 0xd10000d1, 0xd20000d2, 0xd30000d3, 0xd40000d4, 0xd50000d5, 0xd60000d6, 0xd70000d7,\n\t\t0xd80000d8, 0xd90000d9, 0xda0000da, 0xdb0000db, 0xdc0000dc, 0xdd0000dd, 0xde0000de, 0xdf0000df,\n\t\t0xe00000e0, 0xe10000e1, 0xe20000e2, 0xe30000e3, 0xe40000e4, 0xe50000e5, 0xe60000e6, 0xe70000e7,\n\t\t0xe80000e8, 0xe90000e9, 0xea0000ea, 0xeb0000eb, 0xec0000ec, 0xed0000ed, 0xee0000ee, 0xef0000ef,\n\t\t0xf00000f0, 0xf10000f1, 0xf20000f2, 0xf30000f3, 0xf40000f4, 0xf50000f5, 0xf60000f6, 0xf70000f7,\n\t\t0xf80000f8, 0xf90000f9, 0xfa0000fa, 0xfb0000fb, 0xfc0000fc, 0xfd0000fd, 0xfe0000fe, 0xff0000ff,\n\t\t0x8c000152, 0x9c000153, 0x8a000160, 0x9a000161, 0x9f000178, 0x8e00017d, 0x9e00017e, 0x83000192,\n\t\t0x880002c6, 0x980002dc, 0x96002013, 0x97002014, 0x91002018, 0x92002019, 0x8200201a, 0x9300201c,\n\t\t0x9400201d, 0x8400201e, 0x86002020, 0x87002021, 0x95002022, 0x85002026, 0x89002030, 0x8b002039,\n\t\t0x9b00203a, 0x800020ac, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122,\n\t},\n}\n\n// Windows1253 is the Windows 1253 encoding.\nvar Windows1253 *Charmap = &windows1253\n\nvar windows1253 = Charmap{\n\tname:          \"Windows 1253\",\n\tmib:           identifier.Windows1253,\n\tasciiSuperset: true,\n\tlow:           0x80,\n\treplacement:   0x1a,\n\tdecode: [256]utf8Enc{\n\t\t{1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}},\n\t\t{1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}},\n\t\t{1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}},\n\t\t{1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}},\n\t\t{1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}},\n\t\t{1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}},\n\t\t{1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}},\n\t\t{1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}},\n\t\t{1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}},\n\t\t{1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}},\n\t\t{1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}},\n\t\t{1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}},\n\t\t{1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}},\n\t\t{1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}},\n\t\t{1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}},\n\t\t{1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}},\n\t\t{1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}},\n\t\t{1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}},\n\t\t{1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}},\n\t\t{1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}},\n\t\t{1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}},\n\t\t{1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}},\n\t\t{1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}},\n\t\t{1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}},\n\t\t{1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}},\n\t\t{1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}},\n\t\t{1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}},\n\t\t{1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}},\n\t\t{1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}},\n\t\t{1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}},\n\t\t{1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}},\n\t\t{1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}},\n\t\t{1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x82, 0xac}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x9a}}, {2, [3]byte{0xc6, 0x92, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x9e}}, {3, [3]byte{0xe2, 0x80, 0xa6}},\n\t\t{3, [3]byte{0xe2, 0x80, 0xa0}}, {3, [3]byte{0xe2, 0x80, 0xa1}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0xb0}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0xb9}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0x98}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x99}}, {3, [3]byte{0xe2, 0x80, 0x9c}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x9d}}, {3, [3]byte{0xe2, 0x80, 0xa2}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x93}}, {3, [3]byte{0xe2, 0x80, 0x94}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x84, 0xa2}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0xba}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xce, 0x85, 0x00}},\n\t\t{2, [3]byte{0xce, 0x86, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa4, 0x00}}, {2, [3]byte{0xc2, 0xa5, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {2, [3]byte{0xc2, 0xab, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xae, 0x00}}, {3, [3]byte{0xe2, 0x80, 0x95}},\n\t\t{2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc2, 0xb3, 0x00}},\n\t\t{2, [3]byte{0xce, 0x84, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}},\n\t\t{2, [3]byte{0xce, 0x88, 0x00}}, {2, [3]byte{0xce, 0x89, 0x00}},\n\t\t{2, [3]byte{0xce, 0x8a, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}},\n\t\t{2, [3]byte{0xce, 0x8c, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}},\n\t\t{2, [3]byte{0xce, 0x8e, 0x00}}, {2, [3]byte{0xce, 0x8f, 0x00}},\n\t\t{2, [3]byte{0xce, 0x90, 0x00}}, {2, [3]byte{0xce, 0x91, 0x00}},\n\t\t{2, [3]byte{0xce, 0x92, 0x00}}, {2, [3]byte{0xce, 0x93, 0x00}},\n\t\t{2, [3]byte{0xce, 0x94, 0x00}}, {2, [3]byte{0xce, 0x95, 0x00}},\n\t\t{2, [3]byte{0xce, 0x96, 0x00}}, {2, [3]byte{0xce, 0x97, 0x00}},\n\t\t{2, [3]byte{0xce, 0x98, 0x00}}, {2, [3]byte{0xce, 0x99, 0x00}},\n\t\t{2, [3]byte{0xce, 0x9a, 0x00}}, {2, [3]byte{0xce, 0x9b, 0x00}},\n\t\t{2, [3]byte{0xce, 0x9c, 0x00}}, {2, [3]byte{0xce, 0x9d, 0x00}},\n\t\t{2, [3]byte{0xce, 0x9e, 0x00}}, {2, [3]byte{0xce, 0x9f, 0x00}},\n\t\t{2, [3]byte{0xce, 0xa0, 0x00}}, {2, [3]byte{0xce, 0xa1, 0x00}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {2, [3]byte{0xce, 0xa3, 0x00}},\n\t\t{2, [3]byte{0xce, 0xa4, 0x00}}, {2, [3]byte{0xce, 0xa5, 0x00}},\n\t\t{2, [3]byte{0xce, 0xa6, 0x00}}, {2, [3]byte{0xce, 0xa7, 0x00}},\n\t\t{2, [3]byte{0xce, 0xa8, 0x00}}, {2, [3]byte{0xce, 0xa9, 0x00}},\n\t\t{2, [3]byte{0xce, 0xaa, 0x00}}, {2, [3]byte{0xce, 0xab, 0x00}},\n\t\t{2, [3]byte{0xce, 0xac, 0x00}}, {2, [3]byte{0xce, 0xad, 0x00}},\n\t\t{2, [3]byte{0xce, 0xae, 0x00}}, {2, [3]byte{0xce, 0xaf, 0x00}},\n\t\t{2, [3]byte{0xce, 0xb0, 0x00}}, {2, [3]byte{0xce, 0xb1, 0x00}},\n\t\t{2, [3]byte{0xce, 0xb2, 0x00}}, {2, [3]byte{0xce, 0xb3, 0x00}},\n\t\t{2, [3]byte{0xce, 0xb4, 0x00}}, {2, [3]byte{0xce, 0xb5, 0x00}},\n\t\t{2, [3]byte{0xce, 0xb6, 0x00}}, {2, [3]byte{0xce, 0xb7, 0x00}},\n\t\t{2, [3]byte{0xce, 0xb8, 0x00}}, {2, [3]byte{0xce, 0xb9, 0x00}},\n\t\t{2, [3]byte{0xce, 0xba, 0x00}}, {2, [3]byte{0xce, 0xbb, 0x00}},\n\t\t{2, [3]byte{0xce, 0xbc, 0x00}}, {2, [3]byte{0xce, 0xbd, 0x00}},\n\t\t{2, [3]byte{0xce, 0xbe, 0x00}}, {2, [3]byte{0xce, 0xbf, 0x00}},\n\t\t{2, [3]byte{0xcf, 0x80, 0x00}}, {2, [3]byte{0xcf, 0x81, 0x00}},\n\t\t{2, [3]byte{0xcf, 0x82, 0x00}}, {2, [3]byte{0xcf, 0x83, 0x00}},\n\t\t{2, [3]byte{0xcf, 0x84, 0x00}}, {2, [3]byte{0xcf, 0x85, 0x00}},\n\t\t{2, [3]byte{0xcf, 0x86, 0x00}}, {2, [3]byte{0xcf, 0x87, 0x00}},\n\t\t{2, [3]byte{0xcf, 0x88, 0x00}}, {2, [3]byte{0xcf, 0x89, 0x00}},\n\t\t{2, [3]byte{0xcf, 0x8a, 0x00}}, {2, [3]byte{0xcf, 0x8b, 0x00}},\n\t\t{2, [3]byte{0xcf, 0x8c, 0x00}}, {2, [3]byte{0xcf, 0x8d, 0x00}},\n\t\t{2, [3]byte{0xcf, 0x8e, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t},\n\tencode: [256]uint32{\n\t\t0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007,\n\t\t0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f,\n\t\t0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017,\n\t\t0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f,\n\t\t0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027,\n\t\t0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f,\n\t\t0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037,\n\t\t0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f,\n\t\t0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047,\n\t\t0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f,\n\t\t0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057,\n\t\t0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f,\n\t\t0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067,\n\t\t0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f,\n\t\t0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077,\n\t\t0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f,\n\t\t0xa00000a0, 0xa30000a3, 0xa40000a4, 0xa50000a5, 0xa60000a6, 0xa70000a7, 0xa80000a8, 0xa90000a9,\n\t\t0xab0000ab, 0xac0000ac, 0xad0000ad, 0xae0000ae, 0xb00000b0, 0xb10000b1, 0xb20000b2, 0xb30000b3,\n\t\t0xb50000b5, 0xb60000b6, 0xb70000b7, 0xbb0000bb, 0xbd0000bd, 0x83000192, 0xb4000384, 0xa1000385,\n\t\t0xa2000386, 0xb8000388, 0xb9000389, 0xba00038a, 0xbc00038c, 0xbe00038e, 0xbf00038f, 0xc0000390,\n\t\t0xc1000391, 0xc2000392, 0xc3000393, 0xc4000394, 0xc5000395, 0xc6000396, 0xc7000397, 0xc8000398,\n\t\t0xc9000399, 0xca00039a, 0xcb00039b, 0xcc00039c, 0xcd00039d, 0xce00039e, 0xcf00039f, 0xd00003a0,\n\t\t0xd10003a1, 0xd30003a3, 0xd40003a4, 0xd50003a5, 0xd60003a6, 0xd70003a7, 0xd80003a8, 0xd90003a9,\n\t\t0xda0003aa, 0xdb0003ab, 0xdc0003ac, 0xdd0003ad, 0xde0003ae, 0xdf0003af, 0xe00003b0, 0xe10003b1,\n\t\t0xe20003b2, 0xe30003b3, 0xe40003b4, 0xe50003b5, 0xe60003b6, 0xe70003b7, 0xe80003b8, 0xe90003b9,\n\t\t0xea0003ba, 0xeb0003bb, 0xec0003bc, 0xed0003bd, 0xee0003be, 0xef0003bf, 0xf00003c0, 0xf10003c1,\n\t\t0xf20003c2, 0xf30003c3, 0xf40003c4, 0xf50003c5, 0xf60003c6, 0xf70003c7, 0xf80003c8, 0xf90003c9,\n\t\t0xfa0003ca, 0xfb0003cb, 0xfc0003cc, 0xfd0003cd, 0xfe0003ce, 0x96002013, 0x97002014, 0xaf002015,\n\t\t0x91002018, 0x92002019, 0x8200201a, 0x9300201c, 0x9400201d, 0x8400201e, 0x86002020, 0x87002021,\n\t\t0x95002022, 0x85002026, 0x89002030, 0x8b002039, 0x9b00203a, 0x800020ac, 0x99002122, 0x99002122,\n\t\t0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122,\n\t\t0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122,\n\t},\n}\n\n// Windows1254 is the Windows 1254 encoding.\nvar Windows1254 *Charmap = &windows1254\n\nvar windows1254 = Charmap{\n\tname:          \"Windows 1254\",\n\tmib:           identifier.Windows1254,\n\tasciiSuperset: true,\n\tlow:           0x80,\n\treplacement:   0x1a,\n\tdecode: [256]utf8Enc{\n\t\t{1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}},\n\t\t{1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}},\n\t\t{1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}},\n\t\t{1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}},\n\t\t{1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}},\n\t\t{1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}},\n\t\t{1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}},\n\t\t{1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}},\n\t\t{1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}},\n\t\t{1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}},\n\t\t{1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}},\n\t\t{1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}},\n\t\t{1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}},\n\t\t{1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}},\n\t\t{1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}},\n\t\t{1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}},\n\t\t{1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}},\n\t\t{1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}},\n\t\t{1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}},\n\t\t{1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}},\n\t\t{1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}},\n\t\t{1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}},\n\t\t{1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}},\n\t\t{1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}},\n\t\t{1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}},\n\t\t{1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}},\n\t\t{1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}},\n\t\t{1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}},\n\t\t{1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}},\n\t\t{1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}},\n\t\t{1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}},\n\t\t{1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}},\n\t\t{1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x82, 0xac}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x9a}}, {2, [3]byte{0xc6, 0x92, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x9e}}, {3, [3]byte{0xe2, 0x80, 0xa6}},\n\t\t{3, [3]byte{0xe2, 0x80, 0xa0}}, {3, [3]byte{0xe2, 0x80, 0xa1}},\n\t\t{2, [3]byte{0xcb, 0x86, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xb0}},\n\t\t{2, [3]byte{0xc5, 0xa0, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xb9}},\n\t\t{2, [3]byte{0xc5, 0x92, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0x98}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x99}}, {3, [3]byte{0xe2, 0x80, 0x9c}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x9d}}, {3, [3]byte{0xe2, 0x80, 0xa2}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x93}}, {3, [3]byte{0xe2, 0x80, 0x94}},\n\t\t{2, [3]byte{0xcb, 0x9c, 0x00}}, {3, [3]byte{0xe2, 0x84, 0xa2}},\n\t\t{2, [3]byte{0xc5, 0xa1, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xba}},\n\t\t{2, [3]byte{0xc5, 0x93, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {2, [3]byte{0xc5, 0xb8, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa2, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa4, 0x00}}, {2, [3]byte{0xc2, 0xa5, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc2, 0xaf, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc2, 0xb3, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb8, 0x00}}, {2, [3]byte{0xc2, 0xb9, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xba, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xbe, 0x00}}, {2, [3]byte{0xc2, 0xbf, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x83, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc3, 0x87, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x9e, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x92, 0x00}}, {2, [3]byte{0xc3, 0x93, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x98, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc4, 0xb0, 0x00}},\n\t\t{2, [3]byte{0xc5, 0x9e, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0xa3, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xac, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x9f, 0x00}}, {2, [3]byte{0xc3, 0xb1, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb2, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb4, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc4, 0xb1, 0x00}},\n\t\t{2, [3]byte{0xc5, 0x9f, 0x00}}, {2, [3]byte{0xc3, 0xbf, 0x00}},\n\t},\n\tencode: [256]uint32{\n\t\t0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007,\n\t\t0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f,\n\t\t0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017,\n\t\t0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f,\n\t\t0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027,\n\t\t0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f,\n\t\t0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037,\n\t\t0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f,\n\t\t0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047,\n\t\t0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f,\n\t\t0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057,\n\t\t0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f,\n\t\t0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067,\n\t\t0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f,\n\t\t0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077,\n\t\t0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f,\n\t\t0xa00000a0, 0xa10000a1, 0xa20000a2, 0xa30000a3, 0xa40000a4, 0xa50000a5, 0xa60000a6, 0xa70000a7,\n\t\t0xa80000a8, 0xa90000a9, 0xaa0000aa, 0xab0000ab, 0xac0000ac, 0xad0000ad, 0xae0000ae, 0xaf0000af,\n\t\t0xb00000b0, 0xb10000b1, 0xb20000b2, 0xb30000b3, 0xb40000b4, 0xb50000b5, 0xb60000b6, 0xb70000b7,\n\t\t0xb80000b8, 0xb90000b9, 0xba0000ba, 0xbb0000bb, 0xbc0000bc, 0xbd0000bd, 0xbe0000be, 0xbf0000bf,\n\t\t0xc00000c0, 0xc10000c1, 0xc20000c2, 0xc30000c3, 0xc40000c4, 0xc50000c5, 0xc60000c6, 0xc70000c7,\n\t\t0xc80000c8, 0xc90000c9, 0xca0000ca, 0xcb0000cb, 0xcc0000cc, 0xcd0000cd, 0xce0000ce, 0xcf0000cf,\n\t\t0xd10000d1, 0xd20000d2, 0xd30000d3, 0xd40000d4, 0xd50000d5, 0xd60000d6, 0xd70000d7, 0xd80000d8,\n\t\t0xd90000d9, 0xda0000da, 0xdb0000db, 0xdc0000dc, 0xdf0000df, 0xe00000e0, 0xe10000e1, 0xe20000e2,\n\t\t0xe30000e3, 0xe40000e4, 0xe50000e5, 0xe60000e6, 0xe70000e7, 0xe80000e8, 0xe90000e9, 0xea0000ea,\n\t\t0xeb0000eb, 0xec0000ec, 0xed0000ed, 0xee0000ee, 0xef0000ef, 0xf10000f1, 0xf20000f2, 0xf30000f3,\n\t\t0xf40000f4, 0xf50000f5, 0xf60000f6, 0xf70000f7, 0xf80000f8, 0xf90000f9, 0xfa0000fa, 0xfb0000fb,\n\t\t0xfc0000fc, 0xff0000ff, 0xd000011e, 0xf000011f, 0xdd000130, 0xfd000131, 0x8c000152, 0x9c000153,\n\t\t0xde00015e, 0xfe00015f, 0x8a000160, 0x9a000161, 0x9f000178, 0x83000192, 0x880002c6, 0x980002dc,\n\t\t0x96002013, 0x97002014, 0x91002018, 0x92002019, 0x8200201a, 0x9300201c, 0x9400201d, 0x8400201e,\n\t\t0x86002020, 0x87002021, 0x95002022, 0x85002026, 0x89002030, 0x8b002039, 0x9b00203a, 0x800020ac,\n\t\t0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122,\n\t},\n}\n\n// Windows1255 is the Windows 1255 encoding.\nvar Windows1255 *Charmap = &windows1255\n\nvar windows1255 = Charmap{\n\tname:          \"Windows 1255\",\n\tmib:           identifier.Windows1255,\n\tasciiSuperset: true,\n\tlow:           0x80,\n\treplacement:   0x1a,\n\tdecode: [256]utf8Enc{\n\t\t{1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}},\n\t\t{1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}},\n\t\t{1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}},\n\t\t{1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}},\n\t\t{1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}},\n\t\t{1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}},\n\t\t{1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}},\n\t\t{1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}},\n\t\t{1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}},\n\t\t{1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}},\n\t\t{1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}},\n\t\t{1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}},\n\t\t{1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}},\n\t\t{1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}},\n\t\t{1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}},\n\t\t{1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}},\n\t\t{1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}},\n\t\t{1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}},\n\t\t{1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}},\n\t\t{1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}},\n\t\t{1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}},\n\t\t{1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}},\n\t\t{1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}},\n\t\t{1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}},\n\t\t{1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}},\n\t\t{1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}},\n\t\t{1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}},\n\t\t{1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}},\n\t\t{1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}},\n\t\t{1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}},\n\t\t{1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}},\n\t\t{1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}},\n\t\t{1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x82, 0xac}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x9a}}, {2, [3]byte{0xc6, 0x92, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x9e}}, {3, [3]byte{0xe2, 0x80, 0xa6}},\n\t\t{3, [3]byte{0xe2, 0x80, 0xa0}}, {3, [3]byte{0xe2, 0x80, 0xa1}},\n\t\t{2, [3]byte{0xcb, 0x86, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xb0}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0xb9}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0x98}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x99}}, {3, [3]byte{0xe2, 0x80, 0x9c}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x9d}}, {3, [3]byte{0xe2, 0x80, 0xa2}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x93}}, {3, [3]byte{0xe2, 0x80, 0x94}},\n\t\t{2, [3]byte{0xcb, 0x9c, 0x00}}, {3, [3]byte{0xe2, 0x84, 0xa2}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0xba}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa2, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x82, 0xaa}}, {2, [3]byte{0xc2, 0xa5, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x97, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc2, 0xaf, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc2, 0xb3, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb8, 0x00}}, {2, [3]byte{0xc2, 0xb9, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb7, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xbe, 0x00}}, {2, [3]byte{0xc2, 0xbf, 0x00}},\n\t\t{2, [3]byte{0xd6, 0xb0, 0x00}}, {2, [3]byte{0xd6, 0xb1, 0x00}},\n\t\t{2, [3]byte{0xd6, 0xb2, 0x00}}, {2, [3]byte{0xd6, 0xb3, 0x00}},\n\t\t{2, [3]byte{0xd6, 0xb4, 0x00}}, {2, [3]byte{0xd6, 0xb5, 0x00}},\n\t\t{2, [3]byte{0xd6, 0xb6, 0x00}}, {2, [3]byte{0xd6, 0xb7, 0x00}},\n\t\t{2, [3]byte{0xd6, 0xb8, 0x00}}, {2, [3]byte{0xd6, 0xb9, 0x00}},\n\t\t{2, [3]byte{0xd6, 0xba, 0x00}}, {2, [3]byte{0xd6, 0xbb, 0x00}},\n\t\t{2, [3]byte{0xd6, 0xbc, 0x00}}, {2, [3]byte{0xd6, 0xbd, 0x00}},\n\t\t{2, [3]byte{0xd6, 0xbe, 0x00}}, {2, [3]byte{0xd6, 0xbf, 0x00}},\n\t\t{2, [3]byte{0xd7, 0x80, 0x00}}, {2, [3]byte{0xd7, 0x81, 0x00}},\n\t\t{2, [3]byte{0xd7, 0x82, 0x00}}, {2, [3]byte{0xd7, 0x83, 0x00}},\n\t\t{2, [3]byte{0xd7, 0xb0, 0x00}}, {2, [3]byte{0xd7, 0xb1, 0x00}},\n\t\t{2, [3]byte{0xd7, 0xb2, 0x00}}, {2, [3]byte{0xd7, 0xb3, 0x00}},\n\t\t{2, [3]byte{0xd7, 0xb4, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{2, [3]byte{0xd7, 0x90, 0x00}}, {2, [3]byte{0xd7, 0x91, 0x00}},\n\t\t{2, [3]byte{0xd7, 0x92, 0x00}}, {2, [3]byte{0xd7, 0x93, 0x00}},\n\t\t{2, [3]byte{0xd7, 0x94, 0x00}}, {2, [3]byte{0xd7, 0x95, 0x00}},\n\t\t{2, [3]byte{0xd7, 0x96, 0x00}}, {2, [3]byte{0xd7, 0x97, 0x00}},\n\t\t{2, [3]byte{0xd7, 0x98, 0x00}}, {2, [3]byte{0xd7, 0x99, 0x00}},\n\t\t{2, [3]byte{0xd7, 0x9a, 0x00}}, {2, [3]byte{0xd7, 0x9b, 0x00}},\n\t\t{2, [3]byte{0xd7, 0x9c, 0x00}}, {2, [3]byte{0xd7, 0x9d, 0x00}},\n\t\t{2, [3]byte{0xd7, 0x9e, 0x00}}, {2, [3]byte{0xd7, 0x9f, 0x00}},\n\t\t{2, [3]byte{0xd7, 0xa0, 0x00}}, {2, [3]byte{0xd7, 0xa1, 0x00}},\n\t\t{2, [3]byte{0xd7, 0xa2, 0x00}}, {2, [3]byte{0xd7, 0xa3, 0x00}},\n\t\t{2, [3]byte{0xd7, 0xa4, 0x00}}, {2, [3]byte{0xd7, 0xa5, 0x00}},\n\t\t{2, [3]byte{0xd7, 0xa6, 0x00}}, {2, [3]byte{0xd7, 0xa7, 0x00}},\n\t\t{2, [3]byte{0xd7, 0xa8, 0x00}}, {2, [3]byte{0xd7, 0xa9, 0x00}},\n\t\t{2, [3]byte{0xd7, 0xaa, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0x8e}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x8f}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t},\n\tencode: [256]uint32{\n\t\t0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007,\n\t\t0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f,\n\t\t0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017,\n\t\t0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f,\n\t\t0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027,\n\t\t0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f,\n\t\t0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037,\n\t\t0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f,\n\t\t0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047,\n\t\t0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f,\n\t\t0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057,\n\t\t0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f,\n\t\t0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067,\n\t\t0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f,\n\t\t0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077,\n\t\t0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f,\n\t\t0xa00000a0, 0xa10000a1, 0xa20000a2, 0xa30000a3, 0xa50000a5, 0xa60000a6, 0xa70000a7, 0xa80000a8,\n\t\t0xa90000a9, 0xab0000ab, 0xac0000ac, 0xad0000ad, 0xae0000ae, 0xaf0000af, 0xb00000b0, 0xb10000b1,\n\t\t0xb20000b2, 0xb30000b3, 0xb40000b4, 0xb50000b5, 0xb60000b6, 0xb70000b7, 0xb80000b8, 0xb90000b9,\n\t\t0xbb0000bb, 0xbc0000bc, 0xbd0000bd, 0xbe0000be, 0xbf0000bf, 0xaa0000d7, 0xba0000f7, 0x83000192,\n\t\t0x880002c6, 0x980002dc, 0xc00005b0, 0xc10005b1, 0xc20005b2, 0xc30005b3, 0xc40005b4, 0xc50005b5,\n\t\t0xc60005b6, 0xc70005b7, 0xc80005b8, 0xc90005b9, 0xca0005ba, 0xcb0005bb, 0xcc0005bc, 0xcd0005bd,\n\t\t0xce0005be, 0xcf0005bf, 0xd00005c0, 0xd10005c1, 0xd20005c2, 0xd30005c3, 0xe00005d0, 0xe10005d1,\n\t\t0xe20005d2, 0xe30005d3, 0xe40005d4, 0xe50005d5, 0xe60005d6, 0xe70005d7, 0xe80005d8, 0xe90005d9,\n\t\t0xea0005da, 0xeb0005db, 0xec0005dc, 0xed0005dd, 0xee0005de, 0xef0005df, 0xf00005e0, 0xf10005e1,\n\t\t0xf20005e2, 0xf30005e3, 0xf40005e4, 0xf50005e5, 0xf60005e6, 0xf70005e7, 0xf80005e8, 0xf90005e9,\n\t\t0xfa0005ea, 0xd40005f0, 0xd50005f1, 0xd60005f2, 0xd70005f3, 0xd80005f4, 0xfd00200e, 0xfe00200f,\n\t\t0x96002013, 0x97002014, 0x91002018, 0x92002019, 0x8200201a, 0x9300201c, 0x9400201d, 0x8400201e,\n\t\t0x86002020, 0x87002021, 0x95002022, 0x85002026, 0x89002030, 0x8b002039, 0x9b00203a, 0xa40020aa,\n\t\t0x800020ac, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122,\n\t\t0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122,\n\t\t0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122,\n\t},\n}\n\n// Windows1256 is the Windows 1256 encoding.\nvar Windows1256 *Charmap = &windows1256\n\nvar windows1256 = Charmap{\n\tname:          \"Windows 1256\",\n\tmib:           identifier.Windows1256,\n\tasciiSuperset: true,\n\tlow:           0x80,\n\treplacement:   0x1a,\n\tdecode: [256]utf8Enc{\n\t\t{1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}},\n\t\t{1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}},\n\t\t{1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}},\n\t\t{1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}},\n\t\t{1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}},\n\t\t{1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}},\n\t\t{1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}},\n\t\t{1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}},\n\t\t{1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}},\n\t\t{1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}},\n\t\t{1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}},\n\t\t{1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}},\n\t\t{1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}},\n\t\t{1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}},\n\t\t{1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}},\n\t\t{1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}},\n\t\t{1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}},\n\t\t{1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}},\n\t\t{1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}},\n\t\t{1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}},\n\t\t{1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}},\n\t\t{1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}},\n\t\t{1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}},\n\t\t{1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}},\n\t\t{1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}},\n\t\t{1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}},\n\t\t{1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}},\n\t\t{1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}},\n\t\t{1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}},\n\t\t{1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}},\n\t\t{1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}},\n\t\t{1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}},\n\t\t{1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x82, 0xac}}, {2, [3]byte{0xd9, 0xbe, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x9a}}, {2, [3]byte{0xc6, 0x92, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x9e}}, {3, [3]byte{0xe2, 0x80, 0xa6}},\n\t\t{3, [3]byte{0xe2, 0x80, 0xa0}}, {3, [3]byte{0xe2, 0x80, 0xa1}},\n\t\t{2, [3]byte{0xcb, 0x86, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xb0}},\n\t\t{2, [3]byte{0xd9, 0xb9, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xb9}},\n\t\t{2, [3]byte{0xc5, 0x92, 0x00}}, {2, [3]byte{0xda, 0x86, 0x00}},\n\t\t{2, [3]byte{0xda, 0x98, 0x00}}, {2, [3]byte{0xda, 0x88, 0x00}},\n\t\t{2, [3]byte{0xda, 0xaf, 0x00}}, {3, [3]byte{0xe2, 0x80, 0x98}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x99}}, {3, [3]byte{0xe2, 0x80, 0x9c}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x9d}}, {3, [3]byte{0xe2, 0x80, 0xa2}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x93}}, {3, [3]byte{0xe2, 0x80, 0x94}},\n\t\t{2, [3]byte{0xda, 0xa9, 0x00}}, {3, [3]byte{0xe2, 0x84, 0xa2}},\n\t\t{2, [3]byte{0xda, 0x91, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xba}},\n\t\t{2, [3]byte{0xc5, 0x93, 0x00}}, {3, [3]byte{0xe2, 0x80, 0x8c}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x8d}}, {2, [3]byte{0xda, 0xba, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xd8, 0x8c, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa2, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa4, 0x00}}, {2, [3]byte{0xc2, 0xa5, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}},\n\t\t{2, [3]byte{0xda, 0xbe, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc2, 0xaf, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc2, 0xb3, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb8, 0x00}}, {2, [3]byte{0xc2, 0xb9, 0x00}},\n\t\t{2, [3]byte{0xd8, 0x9b, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xbe, 0x00}}, {2, [3]byte{0xd8, 0x9f, 0x00}},\n\t\t{2, [3]byte{0xdb, 0x81, 0x00}}, {2, [3]byte{0xd8, 0xa1, 0x00}},\n\t\t{2, [3]byte{0xd8, 0xa2, 0x00}}, {2, [3]byte{0xd8, 0xa3, 0x00}},\n\t\t{2, [3]byte{0xd8, 0xa4, 0x00}}, {2, [3]byte{0xd8, 0xa5, 0x00}},\n\t\t{2, [3]byte{0xd8, 0xa6, 0x00}}, {2, [3]byte{0xd8, 0xa7, 0x00}},\n\t\t{2, [3]byte{0xd8, 0xa8, 0x00}}, {2, [3]byte{0xd8, 0xa9, 0x00}},\n\t\t{2, [3]byte{0xd8, 0xaa, 0x00}}, {2, [3]byte{0xd8, 0xab, 0x00}},\n\t\t{2, [3]byte{0xd8, 0xac, 0x00}}, {2, [3]byte{0xd8, 0xad, 0x00}},\n\t\t{2, [3]byte{0xd8, 0xae, 0x00}}, {2, [3]byte{0xd8, 0xaf, 0x00}},\n\t\t{2, [3]byte{0xd8, 0xb0, 0x00}}, {2, [3]byte{0xd8, 0xb1, 0x00}},\n\t\t{2, [3]byte{0xd8, 0xb2, 0x00}}, {2, [3]byte{0xd8, 0xb3, 0x00}},\n\t\t{2, [3]byte{0xd8, 0xb4, 0x00}}, {2, [3]byte{0xd8, 0xb5, 0x00}},\n\t\t{2, [3]byte{0xd8, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}},\n\t\t{2, [3]byte{0xd8, 0xb7, 0x00}}, {2, [3]byte{0xd8, 0xb8, 0x00}},\n\t\t{2, [3]byte{0xd8, 0xb9, 0x00}}, {2, [3]byte{0xd8, 0xba, 0x00}},\n\t\t{2, [3]byte{0xd9, 0x80, 0x00}}, {2, [3]byte{0xd9, 0x81, 0x00}},\n\t\t{2, [3]byte{0xd9, 0x82, 0x00}}, {2, [3]byte{0xd9, 0x83, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xd9, 0x84, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xd9, 0x85, 0x00}},\n\t\t{2, [3]byte{0xd9, 0x86, 0x00}}, {2, [3]byte{0xd9, 0x87, 0x00}},\n\t\t{2, [3]byte{0xd9, 0x88, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}},\n\t\t{2, [3]byte{0xd9, 0x89, 0x00}}, {2, [3]byte{0xd9, 0x8a, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}},\n\t\t{2, [3]byte{0xd9, 0x8b, 0x00}}, {2, [3]byte{0xd9, 0x8c, 0x00}},\n\t\t{2, [3]byte{0xd9, 0x8d, 0x00}}, {2, [3]byte{0xd9, 0x8e, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb4, 0x00}}, {2, [3]byte{0xd9, 0x8f, 0x00}},\n\t\t{2, [3]byte{0xd9, 0x90, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}},\n\t\t{2, [3]byte{0xd9, 0x91, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}},\n\t\t{2, [3]byte{0xd9, 0x92, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xbc, 0x00}}, {3, [3]byte{0xe2, 0x80, 0x8e}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x8f}}, {2, [3]byte{0xdb, 0x92, 0x00}},\n\t},\n\tencode: [256]uint32{\n\t\t0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007,\n\t\t0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f,\n\t\t0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017,\n\t\t0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f,\n\t\t0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027,\n\t\t0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f,\n\t\t0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037,\n\t\t0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f,\n\t\t0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047,\n\t\t0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f,\n\t\t0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057,\n\t\t0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f,\n\t\t0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067,\n\t\t0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f,\n\t\t0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077,\n\t\t0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f,\n\t\t0xa00000a0, 0xa20000a2, 0xa30000a3, 0xa40000a4, 0xa50000a5, 0xa60000a6, 0xa70000a7, 0xa80000a8,\n\t\t0xa90000a9, 0xab0000ab, 0xac0000ac, 0xad0000ad, 0xae0000ae, 0xaf0000af, 0xb00000b0, 0xb10000b1,\n\t\t0xb20000b2, 0xb30000b3, 0xb40000b4, 0xb50000b5, 0xb60000b6, 0xb70000b7, 0xb80000b8, 0xb90000b9,\n\t\t0xbb0000bb, 0xbc0000bc, 0xbd0000bd, 0xbe0000be, 0xd70000d7, 0xe00000e0, 0xe20000e2, 0xe70000e7,\n\t\t0xe80000e8, 0xe90000e9, 0xea0000ea, 0xeb0000eb, 0xee0000ee, 0xef0000ef, 0xf40000f4, 0xf70000f7,\n\t\t0xf90000f9, 0xfb0000fb, 0xfc0000fc, 0x8c000152, 0x9c000153, 0x83000192, 0x880002c6, 0xa100060c,\n\t\t0xba00061b, 0xbf00061f, 0xc1000621, 0xc2000622, 0xc3000623, 0xc4000624, 0xc5000625, 0xc6000626,\n\t\t0xc7000627, 0xc8000628, 0xc9000629, 0xca00062a, 0xcb00062b, 0xcc00062c, 0xcd00062d, 0xce00062e,\n\t\t0xcf00062f, 0xd0000630, 0xd1000631, 0xd2000632, 0xd3000633, 0xd4000634, 0xd5000635, 0xd6000636,\n\t\t0xd8000637, 0xd9000638, 0xda000639, 0xdb00063a, 0xdc000640, 0xdd000641, 0xde000642, 0xdf000643,\n\t\t0xe1000644, 0xe3000645, 0xe4000646, 0xe5000647, 0xe6000648, 0xec000649, 0xed00064a, 0xf000064b,\n\t\t0xf100064c, 0xf200064d, 0xf300064e, 0xf500064f, 0xf6000650, 0xf8000651, 0xfa000652, 0x8a000679,\n\t\t0x8100067e, 0x8d000686, 0x8f000688, 0x9a000691, 0x8e000698, 0x980006a9, 0x900006af, 0x9f0006ba,\n\t\t0xaa0006be, 0xc00006c1, 0xff0006d2, 0x9d00200c, 0x9e00200d, 0xfd00200e, 0xfe00200f, 0x96002013,\n\t\t0x97002014, 0x91002018, 0x92002019, 0x8200201a, 0x9300201c, 0x9400201d, 0x8400201e, 0x86002020,\n\t\t0x87002021, 0x95002022, 0x85002026, 0x89002030, 0x8b002039, 0x9b00203a, 0x800020ac, 0x99002122,\n\t},\n}\n\n// Windows1257 is the Windows 1257 encoding.\nvar Windows1257 *Charmap = &windows1257\n\nvar windows1257 = Charmap{\n\tname:          \"Windows 1257\",\n\tmib:           identifier.Windows1257,\n\tasciiSuperset: true,\n\tlow:           0x80,\n\treplacement:   0x1a,\n\tdecode: [256]utf8Enc{\n\t\t{1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}},\n\t\t{1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}},\n\t\t{1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}},\n\t\t{1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}},\n\t\t{1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}},\n\t\t{1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}},\n\t\t{1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}},\n\t\t{1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}},\n\t\t{1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}},\n\t\t{1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}},\n\t\t{1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}},\n\t\t{1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}},\n\t\t{1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}},\n\t\t{1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}},\n\t\t{1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}},\n\t\t{1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}},\n\t\t{1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}},\n\t\t{1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}},\n\t\t{1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}},\n\t\t{1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}},\n\t\t{1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}},\n\t\t{1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}},\n\t\t{1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}},\n\t\t{1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}},\n\t\t{1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}},\n\t\t{1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}},\n\t\t{1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}},\n\t\t{1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}},\n\t\t{1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}},\n\t\t{1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}},\n\t\t{1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}},\n\t\t{1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}},\n\t\t{1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x82, 0xac}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x9a}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x9e}}, {3, [3]byte{0xe2, 0x80, 0xa6}},\n\t\t{3, [3]byte{0xe2, 0x80, 0xa0}}, {3, [3]byte{0xe2, 0x80, 0xa1}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0xb0}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0xb9}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {2, [3]byte{0xc2, 0xa8, 0x00}},\n\t\t{2, [3]byte{0xcb, 0x87, 0x00}}, {2, [3]byte{0xc2, 0xb8, 0x00}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0x98}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x99}}, {3, [3]byte{0xe2, 0x80, 0x9c}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x9d}}, {3, [3]byte{0xe2, 0x80, 0xa2}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x93}}, {3, [3]byte{0xe2, 0x80, 0x94}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x84, 0xa2}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0xba}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {2, [3]byte{0xc2, 0xaf, 0x00}},\n\t\t{2, [3]byte{0xcb, 0x9b, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{2, [3]byte{0xc2, 0xa0, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{2, [3]byte{0xc2, 0xa2, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa4, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x98, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}},\n\t\t{2, [3]byte{0xc5, 0x96, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc3, 0x86, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc2, 0xb3, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc2, 0xb9, 0x00}},\n\t\t{2, [3]byte{0xc5, 0x97, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xbe, 0x00}}, {2, [3]byte{0xc3, 0xa6, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x84, 0x00}}, {2, [3]byte{0xc4, 0xae, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x80, 0x00}}, {2, [3]byte{0xc4, 0x86, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x98, 0x00}}, {2, [3]byte{0xc4, 0x92, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}},\n\t\t{2, [3]byte{0xc5, 0xb9, 0x00}}, {2, [3]byte{0xc4, 0x96, 0x00}},\n\t\t{2, [3]byte{0xc4, 0xa2, 0x00}}, {2, [3]byte{0xc4, 0xb6, 0x00}},\n\t\t{2, [3]byte{0xc4, 0xaa, 0x00}}, {2, [3]byte{0xc4, 0xbb, 0x00}},\n\t\t{2, [3]byte{0xc5, 0xa0, 0x00}}, {2, [3]byte{0xc5, 0x83, 0x00}},\n\t\t{2, [3]byte{0xc5, 0x85, 0x00}}, {2, [3]byte{0xc3, 0x93, 0x00}},\n\t\t{2, [3]byte{0xc5, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}},\n\t\t{2, [3]byte{0xc5, 0xb2, 0x00}}, {2, [3]byte{0xc5, 0x81, 0x00}},\n\t\t{2, [3]byte{0xc5, 0x9a, 0x00}}, {2, [3]byte{0xc5, 0xaa, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc5, 0xbb, 0x00}},\n\t\t{2, [3]byte{0xc5, 0xbd, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x85, 0x00}}, {2, [3]byte{0xc4, 0xaf, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x81, 0x00}}, {2, [3]byte{0xc4, 0x87, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x99, 0x00}}, {2, [3]byte{0xc4, 0x93, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x8d, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}},\n\t\t{2, [3]byte{0xc5, 0xba, 0x00}}, {2, [3]byte{0xc4, 0x97, 0x00}},\n\t\t{2, [3]byte{0xc4, 0xa3, 0x00}}, {2, [3]byte{0xc4, 0xb7, 0x00}},\n\t\t{2, [3]byte{0xc4, 0xab, 0x00}}, {2, [3]byte{0xc4, 0xbc, 0x00}},\n\t\t{2, [3]byte{0xc5, 0xa1, 0x00}}, {2, [3]byte{0xc5, 0x84, 0x00}},\n\t\t{2, [3]byte{0xc5, 0x86, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}},\n\t\t{2, [3]byte{0xc5, 0x8d, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}},\n\t\t{2, [3]byte{0xc5, 0xb3, 0x00}}, {2, [3]byte{0xc5, 0x82, 0x00}},\n\t\t{2, [3]byte{0xc5, 0x9b, 0x00}}, {2, [3]byte{0xc5, 0xab, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc5, 0xbc, 0x00}},\n\t\t{2, [3]byte{0xc5, 0xbe, 0x00}}, {2, [3]byte{0xcb, 0x99, 0x00}},\n\t},\n\tencode: [256]uint32{\n\t\t0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007,\n\t\t0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f,\n\t\t0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017,\n\t\t0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f,\n\t\t0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027,\n\t\t0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f,\n\t\t0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037,\n\t\t0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f,\n\t\t0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047,\n\t\t0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f,\n\t\t0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057,\n\t\t0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f,\n\t\t0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067,\n\t\t0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f,\n\t\t0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077,\n\t\t0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f,\n\t\t0xa00000a0, 0xa20000a2, 0xa30000a3, 0xa40000a4, 0xa60000a6, 0xa70000a7, 0x8d0000a8, 0xa90000a9,\n\t\t0xab0000ab, 0xac0000ac, 0xad0000ad, 0xae0000ae, 0x9d0000af, 0xb00000b0, 0xb10000b1, 0xb20000b2,\n\t\t0xb30000b3, 0xb40000b4, 0xb50000b5, 0xb60000b6, 0xb70000b7, 0x8f0000b8, 0xb90000b9, 0xbb0000bb,\n\t\t0xbc0000bc, 0xbd0000bd, 0xbe0000be, 0xc40000c4, 0xc50000c5, 0xaf0000c6, 0xc90000c9, 0xd30000d3,\n\t\t0xd50000d5, 0xd60000d6, 0xd70000d7, 0xa80000d8, 0xdc0000dc, 0xdf0000df, 0xe40000e4, 0xe50000e5,\n\t\t0xbf0000e6, 0xe90000e9, 0xf30000f3, 0xf50000f5, 0xf60000f6, 0xf70000f7, 0xb80000f8, 0xfc0000fc,\n\t\t0xc2000100, 0xe2000101, 0xc0000104, 0xe0000105, 0xc3000106, 0xe3000107, 0xc800010c, 0xe800010d,\n\t\t0xc7000112, 0xe7000113, 0xcb000116, 0xeb000117, 0xc6000118, 0xe6000119, 0xcc000122, 0xec000123,\n\t\t0xce00012a, 0xee00012b, 0xc100012e, 0xe100012f, 0xcd000136, 0xed000137, 0xcf00013b, 0xef00013c,\n\t\t0xd9000141, 0xf9000142, 0xd1000143, 0xf1000144, 0xd2000145, 0xf2000146, 0xd400014c, 0xf400014d,\n\t\t0xaa000156, 0xba000157, 0xda00015a, 0xfa00015b, 0xd0000160, 0xf0000161, 0xdb00016a, 0xfb00016b,\n\t\t0xd8000172, 0xf8000173, 0xca000179, 0xea00017a, 0xdd00017b, 0xfd00017c, 0xde00017d, 0xfe00017e,\n\t\t0x8e0002c7, 0xff0002d9, 0x9e0002db, 0x96002013, 0x97002014, 0x91002018, 0x92002019, 0x8200201a,\n\t\t0x9300201c, 0x9400201d, 0x8400201e, 0x86002020, 0x87002021, 0x95002022, 0x85002026, 0x89002030,\n\t\t0x8b002039, 0x9b00203a, 0x800020ac, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122,\n\t\t0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122,\n\t},\n}\n\n// Windows1258 is the Windows 1258 encoding.\nvar Windows1258 *Charmap = &windows1258\n\nvar windows1258 = Charmap{\n\tname:          \"Windows 1258\",\n\tmib:           identifier.Windows1258,\n\tasciiSuperset: true,\n\tlow:           0x80,\n\treplacement:   0x1a,\n\tdecode: [256]utf8Enc{\n\t\t{1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}},\n\t\t{1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}},\n\t\t{1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}},\n\t\t{1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}},\n\t\t{1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}},\n\t\t{1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}},\n\t\t{1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}},\n\t\t{1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}},\n\t\t{1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}},\n\t\t{1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}},\n\t\t{1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}},\n\t\t{1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}},\n\t\t{1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}},\n\t\t{1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}},\n\t\t{1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}},\n\t\t{1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}},\n\t\t{1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}},\n\t\t{1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}},\n\t\t{1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}},\n\t\t{1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}},\n\t\t{1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}},\n\t\t{1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}},\n\t\t{1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}},\n\t\t{1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}},\n\t\t{1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}},\n\t\t{1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}},\n\t\t{1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}},\n\t\t{1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}},\n\t\t{1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}},\n\t\t{1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}},\n\t\t{1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}},\n\t\t{1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}},\n\t\t{1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x82, 0xac}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x9a}}, {2, [3]byte{0xc6, 0x92, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x9e}}, {3, [3]byte{0xe2, 0x80, 0xa6}},\n\t\t{3, [3]byte{0xe2, 0x80, 0xa0}}, {3, [3]byte{0xe2, 0x80, 0xa1}},\n\t\t{2, [3]byte{0xcb, 0x86, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xb0}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0xb9}},\n\t\t{2, [3]byte{0xc5, 0x92, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0x98}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x99}}, {3, [3]byte{0xe2, 0x80, 0x9c}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x9d}}, {3, [3]byte{0xe2, 0x80, 0xa2}},\n\t\t{3, [3]byte{0xe2, 0x80, 0x93}}, {3, [3]byte{0xe2, 0x80, 0x94}},\n\t\t{2, [3]byte{0xcb, 0x9c, 0x00}}, {3, [3]byte{0xe2, 0x84, 0xa2}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0xba}},\n\t\t{2, [3]byte{0xc5, 0x93, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}},\n\t\t{3, [3]byte{0xef, 0xbf, 0xbd}}, {2, [3]byte{0xc5, 0xb8, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa2, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa4, 0x00}}, {2, [3]byte{0xc2, 0xa5, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc2, 0xaf, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc2, 0xb3, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xb8, 0x00}}, {2, [3]byte{0xc2, 0xb9, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xba, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}},\n\t\t{2, [3]byte{0xc2, 0xbe, 0x00}}, {2, [3]byte{0xc2, 0xbf, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc4, 0x82, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc3, 0x87, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}},\n\t\t{2, [3]byte{0xcc, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x90, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}},\n\t\t{2, [3]byte{0xcc, 0x89, 0x00}}, {2, [3]byte{0xc3, 0x93, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc6, 0xa0, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x98, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}},\n\t\t{2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc6, 0xaf, 0x00}},\n\t\t{2, [3]byte{0xcc, 0x83, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc4, 0x83, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}},\n\t\t{2, [3]byte{0xcc, 0x81, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}},\n\t\t{2, [3]byte{0xc4, 0x91, 0x00}}, {2, [3]byte{0xc3, 0xb1, 0x00}},\n\t\t{2, [3]byte{0xcc, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb4, 0x00}}, {2, [3]byte{0xc6, 0xa1, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}},\n\t\t{2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc6, 0xb0, 0x00}},\n\t\t{3, [3]byte{0xe2, 0x82, 0xab}}, {2, [3]byte{0xc3, 0xbf, 0x00}},\n\t},\n\tencode: [256]uint32{\n\t\t0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007,\n\t\t0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f,\n\t\t0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017,\n\t\t0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f,\n\t\t0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027,\n\t\t0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f,\n\t\t0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037,\n\t\t0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f,\n\t\t0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047,\n\t\t0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f,\n\t\t0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057,\n\t\t0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f,\n\t\t0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067,\n\t\t0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f,\n\t\t0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077,\n\t\t0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f,\n\t\t0xa00000a0, 0xa10000a1, 0xa20000a2, 0xa30000a3, 0xa40000a4, 0xa50000a5, 0xa60000a6, 0xa70000a7,\n\t\t0xa80000a8, 0xa90000a9, 0xaa0000aa, 0xab0000ab, 0xac0000ac, 0xad0000ad, 0xae0000ae, 0xaf0000af,\n\t\t0xb00000b0, 0xb10000b1, 0xb20000b2, 0xb30000b3, 0xb40000b4, 0xb50000b5, 0xb60000b6, 0xb70000b7,\n\t\t0xb80000b8, 0xb90000b9, 0xba0000ba, 0xbb0000bb, 0xbc0000bc, 0xbd0000bd, 0xbe0000be, 0xbf0000bf,\n\t\t0xc00000c0, 0xc10000c1, 0xc20000c2, 0xc40000c4, 0xc50000c5, 0xc60000c6, 0xc70000c7, 0xc80000c8,\n\t\t0xc90000c9, 0xca0000ca, 0xcb0000cb, 0xcd0000cd, 0xce0000ce, 0xcf0000cf, 0xd10000d1, 0xd30000d3,\n\t\t0xd40000d4, 0xd60000d6, 0xd70000d7, 0xd80000d8, 0xd90000d9, 0xda0000da, 0xdb0000db, 0xdc0000dc,\n\t\t0xdf0000df, 0xe00000e0, 0xe10000e1, 0xe20000e2, 0xe40000e4, 0xe50000e5, 0xe60000e6, 0xe70000e7,\n\t\t0xe80000e8, 0xe90000e9, 0xea0000ea, 0xeb0000eb, 0xed0000ed, 0xee0000ee, 0xef0000ef, 0xf10000f1,\n\t\t0xf30000f3, 0xf40000f4, 0xf60000f6, 0xf70000f7, 0xf80000f8, 0xf90000f9, 0xfa0000fa, 0xfb0000fb,\n\t\t0xfc0000fc, 0xff0000ff, 0xc3000102, 0xe3000103, 0xd0000110, 0xf0000111, 0x8c000152, 0x9c000153,\n\t\t0x9f000178, 0x83000192, 0xd50001a0, 0xf50001a1, 0xdd0001af, 0xfd0001b0, 0x880002c6, 0x980002dc,\n\t\t0xcc000300, 0xec000301, 0xde000303, 0xd2000309, 0xf2000323, 0x96002013, 0x97002014, 0x91002018,\n\t\t0x92002019, 0x8200201a, 0x9300201c, 0x9400201d, 0x8400201e, 0x86002020, 0x87002021, 0x95002022,\n\t\t0x85002026, 0x89002030, 0x8b002039, 0x9b00203a, 0xfe0020ab, 0x800020ac, 0x99002122, 0x99002122,\n\t\t0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122,\n\t},\n}\n\n// XUserDefined is the X-User-Defined encoding.\n//\n// It is defined at http://encoding.spec.whatwg.org/#x-user-defined\nvar XUserDefined *Charmap = &xUserDefined\n\nvar xUserDefined = Charmap{\n\tname:          \"X-User-Defined\",\n\tmib:           identifier.XUserDefined,\n\tasciiSuperset: true,\n\tlow:           0x80,\n\treplacement:   0x1a,\n\tdecode: [256]utf8Enc{\n\t\t{1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}},\n\t\t{1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}},\n\t\t{1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}},\n\t\t{1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}},\n\t\t{1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}},\n\t\t{1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}},\n\t\t{1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}},\n\t\t{1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}},\n\t\t{1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}},\n\t\t{1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}},\n\t\t{1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}},\n\t\t{1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}},\n\t\t{1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}},\n\t\t{1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}},\n\t\t{1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}},\n\t\t{1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}},\n\t\t{1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}},\n\t\t{1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}},\n\t\t{1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}},\n\t\t{1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}},\n\t\t{1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}},\n\t\t{1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}},\n\t\t{1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}},\n\t\t{1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}},\n\t\t{1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}},\n\t\t{1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}},\n\t\t{1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}},\n\t\t{1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}},\n\t\t{1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}},\n\t\t{1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}},\n\t\t{1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}},\n\t\t{1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}},\n\t\t{1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}},\n\t\t{1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}},\n\t\t{1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}},\n\t\t{3, [3]byte{0xef, 0x9e, 0x80}}, {3, [3]byte{0xef, 0x9e, 0x81}},\n\t\t{3, [3]byte{0xef, 0x9e, 0x82}}, {3, [3]byte{0xef, 0x9e, 0x83}},\n\t\t{3, [3]byte{0xef, 0x9e, 0x84}}, {3, [3]byte{0xef, 0x9e, 0x85}},\n\t\t{3, [3]byte{0xef, 0x9e, 0x86}}, {3, [3]byte{0xef, 0x9e, 0x87}},\n\t\t{3, [3]byte{0xef, 0x9e, 0x88}}, {3, [3]byte{0xef, 0x9e, 0x89}},\n\t\t{3, [3]byte{0xef, 0x9e, 0x8a}}, {3, [3]byte{0xef, 0x9e, 0x8b}},\n\t\t{3, [3]byte{0xef, 0x9e, 0x8c}}, {3, [3]byte{0xef, 0x9e, 0x8d}},\n\t\t{3, [3]byte{0xef, 0x9e, 0x8e}}, {3, [3]byte{0xef, 0x9e, 0x8f}},\n\t\t{3, [3]byte{0xef, 0x9e, 0x90}}, {3, [3]byte{0xef, 0x9e, 0x91}},\n\t\t{3, [3]byte{0xef, 0x9e, 0x92}}, {3, [3]byte{0xef, 0x9e, 0x93}},\n\t\t{3, [3]byte{0xef, 0x9e, 0x94}}, {3, [3]byte{0xef, 0x9e, 0x95}},\n\t\t{3, [3]byte{0xef, 0x9e, 0x96}}, {3, [3]byte{0xef, 0x9e, 0x97}},\n\t\t{3, [3]byte{0xef, 0x9e, 0x98}}, {3, [3]byte{0xef, 0x9e, 0x99}},\n\t\t{3, [3]byte{0xef, 0x9e, 0x9a}}, {3, [3]byte{0xef, 0x9e, 0x9b}},\n\t\t{3, [3]byte{0xef, 0x9e, 0x9c}}, {3, [3]byte{0xef, 0x9e, 0x9d}},\n\t\t{3, [3]byte{0xef, 0x9e, 0x9e}}, {3, [3]byte{0xef, 0x9e, 0x9f}},\n\t\t{3, [3]byte{0xef, 0x9e, 0xa0}}, {3, [3]byte{0xef, 0x9e, 0xa1}},\n\t\t{3, [3]byte{0xef, 0x9e, 0xa2}}, {3, [3]byte{0xef, 0x9e, 0xa3}},\n\t\t{3, [3]byte{0xef, 0x9e, 0xa4}}, {3, [3]byte{0xef, 0x9e, 0xa5}},\n\t\t{3, [3]byte{0xef, 0x9e, 0xa6}}, {3, [3]byte{0xef, 0x9e, 0xa7}},\n\t\t{3, [3]byte{0xef, 0x9e, 0xa8}}, {3, [3]byte{0xef, 0x9e, 0xa9}},\n\t\t{3, [3]byte{0xef, 0x9e, 0xaa}}, {3, [3]byte{0xef, 0x9e, 0xab}},\n\t\t{3, [3]byte{0xef, 0x9e, 0xac}}, {3, [3]byte{0xef, 0x9e, 0xad}},\n\t\t{3, [3]byte{0xef, 0x9e, 0xae}}, {3, [3]byte{0xef, 0x9e, 0xaf}},\n\t\t{3, [3]byte{0xef, 0x9e, 0xb0}}, {3, [3]byte{0xef, 0x9e, 0xb1}},\n\t\t{3, [3]byte{0xef, 0x9e, 0xb2}}, {3, [3]byte{0xef, 0x9e, 0xb3}},\n\t\t{3, [3]byte{0xef, 0x9e, 0xb4}}, {3, [3]byte{0xef, 0x9e, 0xb5}},\n\t\t{3, [3]byte{0xef, 0x9e, 0xb6}}, {3, [3]byte{0xef, 0x9e, 0xb7}},\n\t\t{3, [3]byte{0xef, 0x9e, 0xb8}}, {3, [3]byte{0xef, 0x9e, 0xb9}},\n\t\t{3, [3]byte{0xef, 0x9e, 0xba}}, {3, [3]byte{0xef, 0x9e, 0xbb}},\n\t\t{3, [3]byte{0xef, 0x9e, 0xbc}}, {3, [3]byte{0xef, 0x9e, 0xbd}},\n\t\t{3, [3]byte{0xef, 0x9e, 0xbe}}, {3, [3]byte{0xef, 0x9e, 0xbf}},\n\t\t{3, [3]byte{0xef, 0x9f, 0x80}}, {3, [3]byte{0xef, 0x9f, 0x81}},\n\t\t{3, [3]byte{0xef, 0x9f, 0x82}}, {3, [3]byte{0xef, 0x9f, 0x83}},\n\t\t{3, [3]byte{0xef, 0x9f, 0x84}}, {3, [3]byte{0xef, 0x9f, 0x85}},\n\t\t{3, [3]byte{0xef, 0x9f, 0x86}}, {3, [3]byte{0xef, 0x9f, 0x87}},\n\t\t{3, [3]byte{0xef, 0x9f, 0x88}}, {3, [3]byte{0xef, 0x9f, 0x89}},\n\t\t{3, [3]byte{0xef, 0x9f, 0x8a}}, {3, [3]byte{0xef, 0x9f, 0x8b}},\n\t\t{3, [3]byte{0xef, 0x9f, 0x8c}}, {3, [3]byte{0xef, 0x9f, 0x8d}},\n\t\t{3, [3]byte{0xef, 0x9f, 0x8e}}, {3, [3]byte{0xef, 0x9f, 0x8f}},\n\t\t{3, [3]byte{0xef, 0x9f, 0x90}}, {3, [3]byte{0xef, 0x9f, 0x91}},\n\t\t{3, [3]byte{0xef, 0x9f, 0x92}}, {3, [3]byte{0xef, 0x9f, 0x93}},\n\t\t{3, [3]byte{0xef, 0x9f, 0x94}}, {3, [3]byte{0xef, 0x9f, 0x95}},\n\t\t{3, [3]byte{0xef, 0x9f, 0x96}}, {3, [3]byte{0xef, 0x9f, 0x97}},\n\t\t{3, [3]byte{0xef, 0x9f, 0x98}}, {3, [3]byte{0xef, 0x9f, 0x99}},\n\t\t{3, [3]byte{0xef, 0x9f, 0x9a}}, {3, [3]byte{0xef, 0x9f, 0x9b}},\n\t\t{3, [3]byte{0xef, 0x9f, 0x9c}}, {3, [3]byte{0xef, 0x9f, 0x9d}},\n\t\t{3, [3]byte{0xef, 0x9f, 0x9e}}, {3, [3]byte{0xef, 0x9f, 0x9f}},\n\t\t{3, [3]byte{0xef, 0x9f, 0xa0}}, {3, [3]byte{0xef, 0x9f, 0xa1}},\n\t\t{3, [3]byte{0xef, 0x9f, 0xa2}}, {3, [3]byte{0xef, 0x9f, 0xa3}},\n\t\t{3, [3]byte{0xef, 0x9f, 0xa4}}, {3, [3]byte{0xef, 0x9f, 0xa5}},\n\t\t{3, [3]byte{0xef, 0x9f, 0xa6}}, {3, [3]byte{0xef, 0x9f, 0xa7}},\n\t\t{3, [3]byte{0xef, 0x9f, 0xa8}}, {3, [3]byte{0xef, 0x9f, 0xa9}},\n\t\t{3, [3]byte{0xef, 0x9f, 0xaa}}, {3, [3]byte{0xef, 0x9f, 0xab}},\n\t\t{3, [3]byte{0xef, 0x9f, 0xac}}, {3, [3]byte{0xef, 0x9f, 0xad}},\n\t\t{3, [3]byte{0xef, 0x9f, 0xae}}, {3, [3]byte{0xef, 0x9f, 0xaf}},\n\t\t{3, [3]byte{0xef, 0x9f, 0xb0}}, {3, [3]byte{0xef, 0x9f, 0xb1}},\n\t\t{3, [3]byte{0xef, 0x9f, 0xb2}}, {3, [3]byte{0xef, 0x9f, 0xb3}},\n\t\t{3, [3]byte{0xef, 0x9f, 0xb4}}, {3, [3]byte{0xef, 0x9f, 0xb5}},\n\t\t{3, [3]byte{0xef, 0x9f, 0xb6}}, {3, [3]byte{0xef, 0x9f, 0xb7}},\n\t\t{3, [3]byte{0xef, 0x9f, 0xb8}}, {3, [3]byte{0xef, 0x9f, 0xb9}},\n\t\t{3, [3]byte{0xef, 0x9f, 0xba}}, {3, [3]byte{0xef, 0x9f, 0xbb}},\n\t\t{3, [3]byte{0xef, 0x9f, 0xbc}}, {3, [3]byte{0xef, 0x9f, 0xbd}},\n\t\t{3, [3]byte{0xef, 0x9f, 0xbe}}, {3, [3]byte{0xef, 0x9f, 0xbf}},\n\t},\n\tencode: [256]uint32{\n\t\t0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007,\n\t\t0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f,\n\t\t0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017,\n\t\t0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f,\n\t\t0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027,\n\t\t0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f,\n\t\t0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037,\n\t\t0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f,\n\t\t0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047,\n\t\t0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f,\n\t\t0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057,\n\t\t0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f,\n\t\t0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067,\n\t\t0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f,\n\t\t0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077,\n\t\t0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f,\n\t\t0x8000f780, 0x8100f781, 0x8200f782, 0x8300f783, 0x8400f784, 0x8500f785, 0x8600f786, 0x8700f787,\n\t\t0x8800f788, 0x8900f789, 0x8a00f78a, 0x8b00f78b, 0x8c00f78c, 0x8d00f78d, 0x8e00f78e, 0x8f00f78f,\n\t\t0x9000f790, 0x9100f791, 0x9200f792, 0x9300f793, 0x9400f794, 0x9500f795, 0x9600f796, 0x9700f797,\n\t\t0x9800f798, 0x9900f799, 0x9a00f79a, 0x9b00f79b, 0x9c00f79c, 0x9d00f79d, 0x9e00f79e, 0x9f00f79f,\n\t\t0xa000f7a0, 0xa100f7a1, 0xa200f7a2, 0xa300f7a3, 0xa400f7a4, 0xa500f7a5, 0xa600f7a6, 0xa700f7a7,\n\t\t0xa800f7a8, 0xa900f7a9, 0xaa00f7aa, 0xab00f7ab, 0xac00f7ac, 0xad00f7ad, 0xae00f7ae, 0xaf00f7af,\n\t\t0xb000f7b0, 0xb100f7b1, 0xb200f7b2, 0xb300f7b3, 0xb400f7b4, 0xb500f7b5, 0xb600f7b6, 0xb700f7b7,\n\t\t0xb800f7b8, 0xb900f7b9, 0xba00f7ba, 0xbb00f7bb, 0xbc00f7bc, 0xbd00f7bd, 0xbe00f7be, 0xbf00f7bf,\n\t\t0xc000f7c0, 0xc100f7c1, 0xc200f7c2, 0xc300f7c3, 0xc400f7c4, 0xc500f7c5, 0xc600f7c6, 0xc700f7c7,\n\t\t0xc800f7c8, 0xc900f7c9, 0xca00f7ca, 0xcb00f7cb, 0xcc00f7cc, 0xcd00f7cd, 0xce00f7ce, 0xcf00f7cf,\n\t\t0xd000f7d0, 0xd100f7d1, 0xd200f7d2, 0xd300f7d3, 0xd400f7d4, 0xd500f7d5, 0xd600f7d6, 0xd700f7d7,\n\t\t0xd800f7d8, 0xd900f7d9, 0xda00f7da, 0xdb00f7db, 0xdc00f7dc, 0xdd00f7dd, 0xde00f7de, 0xdf00f7df,\n\t\t0xe000f7e0, 0xe100f7e1, 0xe200f7e2, 0xe300f7e3, 0xe400f7e4, 0xe500f7e5, 0xe600f7e6, 0xe700f7e7,\n\t\t0xe800f7e8, 0xe900f7e9, 0xea00f7ea, 0xeb00f7eb, 0xec00f7ec, 0xed00f7ed, 0xee00f7ee, 0xef00f7ef,\n\t\t0xf000f7f0, 0xf100f7f1, 0xf200f7f2, 0xf300f7f3, 0xf400f7f4, 0xf500f7f5, 0xf600f7f6, 0xf700f7f7,\n\t\t0xf800f7f8, 0xf900f7f9, 0xfa00f7fa, 0xfb00f7fb, 0xfc00f7fc, 0xfd00f7fd, 0xfe00f7fe, 0xff00f7ff,\n\t},\n}\nvar listAll = []encoding.Encoding{\n\tCodePage037,\n\tCodePage437,\n\tCodePage850,\n\tCodePage852,\n\tCodePage855,\n\tCodePage858,\n\tCodePage860,\n\tCodePage862,\n\tCodePage863,\n\tCodePage865,\n\tCodePage866,\n\tCodePage1047,\n\tCodePage1140,\n\tISO8859_1,\n\tISO8859_2,\n\tISO8859_3,\n\tISO8859_4,\n\tISO8859_5,\n\tISO8859_6,\n\tISO8859_6E,\n\tISO8859_6I,\n\tISO8859_7,\n\tISO8859_8,\n\tISO8859_8E,\n\tISO8859_8I,\n\tISO8859_9,\n\tISO8859_10,\n\tISO8859_13,\n\tISO8859_14,\n\tISO8859_15,\n\tISO8859_16,\n\tKOI8R,\n\tKOI8U,\n\tMacintosh,\n\tMacintoshCyrillic,\n\tWindows874,\n\tWindows1250,\n\tWindows1251,\n\tWindows1252,\n\tWindows1253,\n\tWindows1254,\n\tWindows1255,\n\tWindows1256,\n\tWindows1257,\n\tWindows1258,\n\tXUserDefined,\n}\n\n// Total table size 87024 bytes (84KiB); checksum: 811C9DC5\n"
  },
  {
    "path": "tests/vendor/golang.org/x/text/encoding/encoding.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package encoding defines an interface for character encodings, such as Shift\n// JIS and Windows 1252, that can convert to and from UTF-8.\n//\n// Encoding implementations are provided in other packages, such as\n// golang.org/x/text/encoding/charmap and\n// golang.org/x/text/encoding/japanese.\npackage encoding // import \"golang.org/x/text/encoding\"\n\nimport (\n\t\"errors\"\n\t\"io\"\n\t\"strconv\"\n\t\"unicode/utf8\"\n\n\t\"golang.org/x/text/encoding/internal/identifier\"\n\t\"golang.org/x/text/transform\"\n)\n\n// TODO:\n// - There seems to be some inconsistency in when decoders return errors\n//   and when not. Also documentation seems to suggest they shouldn't return\n//   errors at all (except for UTF-16).\n// - Encoders seem to rely on or at least benefit from the input being in NFC\n//   normal form. Perhaps add an example how users could prepare their output.\n\n// Encoding is a character set encoding that can be transformed to and from\n// UTF-8.\ntype Encoding interface {\n\t// NewDecoder returns a Decoder.\n\tNewDecoder() *Decoder\n\n\t// NewEncoder returns an Encoder.\n\tNewEncoder() *Encoder\n}\n\n// A Decoder converts bytes to UTF-8. It implements transform.Transformer.\n//\n// Transforming source bytes that are not of that encoding will not result in an\n// error per se. Each byte that cannot be transcoded will be represented in the\n// output by the UTF-8 encoding of '\\uFFFD', the replacement rune.\ntype Decoder struct {\n\ttransform.Transformer\n\n\t// This forces external creators of Decoders to use names in struct\n\t// initializers, allowing for future extendibility without having to break\n\t// code.\n\t_ struct{}\n}\n\n// Bytes converts the given encoded bytes to UTF-8. It returns the converted\n// bytes or nil, err if any error occurred.\nfunc (d *Decoder) Bytes(b []byte) ([]byte, error) {\n\tb, _, err := transform.Bytes(d, b)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn b, nil\n}\n\n// String converts the given encoded string to UTF-8. It returns the converted\n// string or \"\", err if any error occurred.\nfunc (d *Decoder) String(s string) (string, error) {\n\ts, _, err := transform.String(d, s)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\treturn s, nil\n}\n\n// Reader wraps another Reader to decode its bytes.\n//\n// The Decoder may not be used for any other operation as long as the returned\n// Reader is in use.\nfunc (d *Decoder) Reader(r io.Reader) io.Reader {\n\treturn transform.NewReader(r, d)\n}\n\n// An Encoder converts bytes from UTF-8. It implements transform.Transformer.\n//\n// Each rune that cannot be transcoded will result in an error. In this case,\n// the transform will consume all source byte up to, not including the offending\n// rune. Transforming source bytes that are not valid UTF-8 will be replaced by\n// `\\uFFFD`. To return early with an error instead, use transform.Chain to\n// preprocess the data with a UTF8Validator.\ntype Encoder struct {\n\ttransform.Transformer\n\n\t// This forces external creators of Encoders to use names in struct\n\t// initializers, allowing for future extendibility without having to break\n\t// code.\n\t_ struct{}\n}\n\n// Bytes converts bytes from UTF-8. It returns the converted bytes or nil, err if\n// any error occurred.\nfunc (e *Encoder) Bytes(b []byte) ([]byte, error) {\n\tb, _, err := transform.Bytes(e, b)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn b, nil\n}\n\n// String converts a string from UTF-8. It returns the converted string or\n// \"\", err if any error occurred.\nfunc (e *Encoder) String(s string) (string, error) {\n\ts, _, err := transform.String(e, s)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\treturn s, nil\n}\n\n// Writer wraps another Writer to encode its UTF-8 output.\n//\n// The Encoder may not be used for any other operation as long as the returned\n// Writer is in use.\nfunc (e *Encoder) Writer(w io.Writer) io.Writer {\n\treturn transform.NewWriter(w, e)\n}\n\n// ASCIISub is the ASCII substitute character, as recommended by\n// https://unicode.org/reports/tr36/#Text_Comparison\nconst ASCIISub = '\\x1a'\n\n// Nop is the nop encoding. Its transformed bytes are the same as the source\n// bytes; it does not replace invalid UTF-8 sequences.\nvar Nop Encoding = nop{}\n\ntype nop struct{}\n\nfunc (nop) NewDecoder() *Decoder {\n\treturn &Decoder{Transformer: transform.Nop}\n}\nfunc (nop) NewEncoder() *Encoder {\n\treturn &Encoder{Transformer: transform.Nop}\n}\n\n// Replacement is the replacement encoding. Decoding from the replacement\n// encoding yields a single '\\uFFFD' replacement rune. Encoding from UTF-8 to\n// the replacement encoding yields the same as the source bytes except that\n// invalid UTF-8 is converted to '\\uFFFD'.\n//\n// It is defined at http://encoding.spec.whatwg.org/#replacement\nvar Replacement Encoding = replacement{}\n\ntype replacement struct{}\n\nfunc (replacement) NewDecoder() *Decoder {\n\treturn &Decoder{Transformer: replacementDecoder{}}\n}\n\nfunc (replacement) NewEncoder() *Encoder {\n\treturn &Encoder{Transformer: replacementEncoder{}}\n}\n\nfunc (replacement) ID() (mib identifier.MIB, other string) {\n\treturn identifier.Replacement, \"\"\n}\n\ntype replacementDecoder struct{ transform.NopResetter }\n\nfunc (replacementDecoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {\n\tif len(dst) < 3 {\n\t\treturn 0, 0, transform.ErrShortDst\n\t}\n\tif atEOF {\n\t\tconst fffd = \"\\ufffd\"\n\t\tdst[0] = fffd[0]\n\t\tdst[1] = fffd[1]\n\t\tdst[2] = fffd[2]\n\t\tnDst = 3\n\t}\n\treturn nDst, len(src), nil\n}\n\ntype replacementEncoder struct{ transform.NopResetter }\n\nfunc (replacementEncoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {\n\tr, size := rune(0), 0\n\n\tfor ; nSrc < len(src); nSrc += size {\n\t\tr = rune(src[nSrc])\n\n\t\t// Decode a 1-byte rune.\n\t\tif r < utf8.RuneSelf {\n\t\t\tsize = 1\n\n\t\t} else {\n\t\t\t// Decode a multi-byte rune.\n\t\t\tr, size = utf8.DecodeRune(src[nSrc:])\n\t\t\tif size == 1 {\n\t\t\t\t// All valid runes of size 1 (those below utf8.RuneSelf) were\n\t\t\t\t// handled above. We have invalid UTF-8 or we haven't seen the\n\t\t\t\t// full character yet.\n\t\t\t\tif !atEOF && !utf8.FullRune(src[nSrc:]) {\n\t\t\t\t\terr = transform.ErrShortSrc\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tr = '\\ufffd'\n\t\t\t}\n\t\t}\n\n\t\tif nDst+utf8.RuneLen(r) > len(dst) {\n\t\t\terr = transform.ErrShortDst\n\t\t\tbreak\n\t\t}\n\t\tnDst += utf8.EncodeRune(dst[nDst:], r)\n\t}\n\treturn nDst, nSrc, err\n}\n\n// HTMLEscapeUnsupported wraps encoders to replace source runes outside the\n// repertoire of the destination encoding with HTML escape sequences.\n//\n// This wrapper exists to comply to URL and HTML forms requiring a\n// non-terminating legacy encoder. The produced sequences may lead to data\n// loss as they are indistinguishable from legitimate input. To avoid this\n// issue, use UTF-8 encodings whenever possible.\nfunc HTMLEscapeUnsupported(e *Encoder) *Encoder {\n\treturn &Encoder{Transformer: &errorHandler{e, errorToHTML}}\n}\n\n// ReplaceUnsupported wraps encoders to replace source runes outside the\n// repertoire of the destination encoding with an encoding-specific\n// replacement.\n//\n// This wrapper is only provided for backwards compatibility and legacy\n// handling. Its use is strongly discouraged. Use UTF-8 whenever possible.\nfunc ReplaceUnsupported(e *Encoder) *Encoder {\n\treturn &Encoder{Transformer: &errorHandler{e, errorToReplacement}}\n}\n\ntype errorHandler struct {\n\t*Encoder\n\thandler func(dst []byte, r rune, err repertoireError) (n int, ok bool)\n}\n\n// TODO: consider making this error public in some form.\ntype repertoireError interface {\n\tReplacement() byte\n}\n\nfunc (h errorHandler) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {\n\tnDst, nSrc, err = h.Transformer.Transform(dst, src, atEOF)\n\tfor err != nil {\n\t\trerr, ok := err.(repertoireError)\n\t\tif !ok {\n\t\t\treturn nDst, nSrc, err\n\t\t}\n\t\tr, sz := utf8.DecodeRune(src[nSrc:])\n\t\tn, ok := h.handler(dst[nDst:], r, rerr)\n\t\tif !ok {\n\t\t\treturn nDst, nSrc, transform.ErrShortDst\n\t\t}\n\t\terr = nil\n\t\tnDst += n\n\t\tif nSrc += sz; nSrc < len(src) {\n\t\t\tvar dn, sn int\n\t\t\tdn, sn, err = h.Transformer.Transform(dst[nDst:], src[nSrc:], atEOF)\n\t\t\tnDst += dn\n\t\t\tnSrc += sn\n\t\t}\n\t}\n\treturn nDst, nSrc, err\n}\n\nfunc errorToHTML(dst []byte, r rune, err repertoireError) (n int, ok bool) {\n\tbuf := [8]byte{}\n\tb := strconv.AppendUint(buf[:0], uint64(r), 10)\n\tif n = len(b) + len(\"&#;\"); n >= len(dst) {\n\t\treturn 0, false\n\t}\n\tdst[0] = '&'\n\tdst[1] = '#'\n\tdst[copy(dst[2:], b)+2] = ';'\n\treturn n, true\n}\n\nfunc errorToReplacement(dst []byte, r rune, err repertoireError) (n int, ok bool) {\n\tif len(dst) == 0 {\n\t\treturn 0, false\n\t}\n\tdst[0] = err.Replacement()\n\treturn 1, true\n}\n\n// ErrInvalidUTF8 means that a transformer encountered invalid UTF-8.\nvar ErrInvalidUTF8 = errors.New(\"encoding: invalid UTF-8\")\n\n// UTF8Validator is a transformer that returns ErrInvalidUTF8 on the first\n// input byte that is not valid UTF-8.\nvar UTF8Validator transform.Transformer = utf8Validator{}\n\ntype utf8Validator struct{ transform.NopResetter }\n\nfunc (utf8Validator) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {\n\tn := len(src)\n\tif n > len(dst) {\n\t\tn = len(dst)\n\t}\n\tfor i := 0; i < n; {\n\t\tif c := src[i]; c < utf8.RuneSelf {\n\t\t\tdst[i] = c\n\t\t\ti++\n\t\t\tcontinue\n\t\t}\n\t\t_, size := utf8.DecodeRune(src[i:])\n\t\tif size == 1 {\n\t\t\t// All valid runes of size 1 (those below utf8.RuneSelf) were\n\t\t\t// handled above. We have invalid UTF-8 or we haven't seen the\n\t\t\t// full character yet.\n\t\t\terr = ErrInvalidUTF8\n\t\t\tif !atEOF && !utf8.FullRune(src[i:]) {\n\t\t\t\terr = transform.ErrShortSrc\n\t\t\t}\n\t\t\treturn i, i, err\n\t\t}\n\t\tif i+size > len(dst) {\n\t\t\treturn i, i, transform.ErrShortDst\n\t\t}\n\t\tfor ; size > 0; size-- {\n\t\t\tdst[i] = src[i]\n\t\t\ti++\n\t\t}\n\t}\n\tif len(src) > len(dst) {\n\t\terr = transform.ErrShortDst\n\t}\n\treturn n, n, err\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/text/encoding/htmlindex/htmlindex.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:generate go run gen.go\n\n// Package htmlindex maps character set encoding names to Encodings as\n// recommended by the W3C for use in HTML 5. See http://www.w3.org/TR/encoding.\npackage htmlindex\n\n// TODO: perhaps have a \"bare\" version of the index (used by this package) that\n// is not pre-loaded with all encodings. Global variables in encodings prevent\n// the linker from being able to purge unneeded tables. This means that\n// referencing all encodings, as this package does for the default index, links\n// in all encodings unconditionally.\n//\n// This issue can be solved by either solving the linking issue (see\n// https://github.com/golang/go/issues/6330) or refactoring the encoding tables\n// (e.g. moving the tables to internal packages that do not use global\n// variables).\n\n// TODO: allow canonicalizing names\n\nimport (\n\t\"errors\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"golang.org/x/text/encoding\"\n\t\"golang.org/x/text/encoding/internal/identifier\"\n\t\"golang.org/x/text/language\"\n)\n\nvar (\n\terrInvalidName = errors.New(\"htmlindex: invalid encoding name\")\n\terrUnknown     = errors.New(\"htmlindex: unknown Encoding\")\n\terrUnsupported = errors.New(\"htmlindex: this encoding is not supported\")\n)\n\nvar (\n\tmatcherOnce sync.Once\n\tmatcher     language.Matcher\n)\n\n// LanguageDefault returns the canonical name of the default encoding for a\n// given language.\nfunc LanguageDefault(tag language.Tag) string {\n\tmatcherOnce.Do(func() {\n\t\ttags := []language.Tag{}\n\t\tfor _, t := range strings.Split(locales, \" \") {\n\t\t\ttags = append(tags, language.MustParse(t))\n\t\t}\n\t\tmatcher = language.NewMatcher(tags, language.PreferSameScript(true))\n\t})\n\t_, i, _ := matcher.Match(tag)\n\treturn canonical[localeMap[i]] // Default is Windows-1252.\n}\n\n// Get returns an Encoding for one of the names listed in\n// http://www.w3.org/TR/encoding using the Default Index. Matching is case-\n// insensitive.\nfunc Get(name string) (encoding.Encoding, error) {\n\tx, ok := nameMap[strings.ToLower(strings.TrimSpace(name))]\n\tif !ok {\n\t\treturn nil, errInvalidName\n\t}\n\treturn encodings[x], nil\n}\n\n// Name reports the canonical name of the given Encoding. It will return\n// an error if e is not associated with a supported encoding scheme.\nfunc Name(e encoding.Encoding) (string, error) {\n\tid, ok := e.(identifier.Interface)\n\tif !ok {\n\t\treturn \"\", errUnknown\n\t}\n\tmib, _ := id.ID()\n\tif mib == 0 {\n\t\treturn \"\", errUnknown\n\t}\n\tv, ok := mibMap[mib]\n\tif !ok {\n\t\treturn \"\", errUnsupported\n\t}\n\treturn canonical[v], nil\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/text/encoding/htmlindex/map.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage htmlindex\n\nimport (\n\t\"golang.org/x/text/encoding\"\n\t\"golang.org/x/text/encoding/charmap\"\n\t\"golang.org/x/text/encoding/internal/identifier\"\n\t\"golang.org/x/text/encoding/japanese\"\n\t\"golang.org/x/text/encoding/korean\"\n\t\"golang.org/x/text/encoding/simplifiedchinese\"\n\t\"golang.org/x/text/encoding/traditionalchinese\"\n\t\"golang.org/x/text/encoding/unicode\"\n)\n\n// mibMap maps a MIB identifier to an htmlEncoding index.\nvar mibMap = map[identifier.MIB]htmlEncoding{\n\tidentifier.UTF8:              utf8,\n\tidentifier.UTF16BE:           utf16be,\n\tidentifier.UTF16LE:           utf16le,\n\tidentifier.IBM866:            ibm866,\n\tidentifier.ISOLatin2:         iso8859_2,\n\tidentifier.ISOLatin3:         iso8859_3,\n\tidentifier.ISOLatin4:         iso8859_4,\n\tidentifier.ISOLatinCyrillic:  iso8859_5,\n\tidentifier.ISOLatinArabic:    iso8859_6,\n\tidentifier.ISOLatinGreek:     iso8859_7,\n\tidentifier.ISOLatinHebrew:    iso8859_8,\n\tidentifier.ISO88598I:         iso8859_8I,\n\tidentifier.ISOLatin6:         iso8859_10,\n\tidentifier.ISO885913:         iso8859_13,\n\tidentifier.ISO885914:         iso8859_14,\n\tidentifier.ISO885915:         iso8859_15,\n\tidentifier.ISO885916:         iso8859_16,\n\tidentifier.KOI8R:             koi8r,\n\tidentifier.KOI8U:             koi8u,\n\tidentifier.Macintosh:         macintosh,\n\tidentifier.MacintoshCyrillic: macintoshCyrillic,\n\tidentifier.Windows874:        windows874,\n\tidentifier.Windows1250:       windows1250,\n\tidentifier.Windows1251:       windows1251,\n\tidentifier.Windows1252:       windows1252,\n\tidentifier.Windows1253:       windows1253,\n\tidentifier.Windows1254:       windows1254,\n\tidentifier.Windows1255:       windows1255,\n\tidentifier.Windows1256:       windows1256,\n\tidentifier.Windows1257:       windows1257,\n\tidentifier.Windows1258:       windows1258,\n\tidentifier.XUserDefined:      xUserDefined,\n\tidentifier.GBK:               gbk,\n\tidentifier.GB18030:           gb18030,\n\tidentifier.Big5:              big5,\n\tidentifier.EUCPkdFmtJapanese: eucjp,\n\tidentifier.ISO2022JP:         iso2022jp,\n\tidentifier.ShiftJIS:          shiftJIS,\n\tidentifier.EUCKR:             euckr,\n\tidentifier.Replacement:       replacement,\n}\n\n// encodings maps the internal htmlEncoding to an Encoding.\n// TODO: consider using a reusable index in encoding/internal.\nvar encodings = [numEncodings]encoding.Encoding{\n\tutf8:              unicode.UTF8,\n\tibm866:            charmap.CodePage866,\n\tiso8859_2:         charmap.ISO8859_2,\n\tiso8859_3:         charmap.ISO8859_3,\n\tiso8859_4:         charmap.ISO8859_4,\n\tiso8859_5:         charmap.ISO8859_5,\n\tiso8859_6:         charmap.ISO8859_6,\n\tiso8859_7:         charmap.ISO8859_7,\n\tiso8859_8:         charmap.ISO8859_8,\n\tiso8859_8I:        charmap.ISO8859_8I,\n\tiso8859_10:        charmap.ISO8859_10,\n\tiso8859_13:        charmap.ISO8859_13,\n\tiso8859_14:        charmap.ISO8859_14,\n\tiso8859_15:        charmap.ISO8859_15,\n\tiso8859_16:        charmap.ISO8859_16,\n\tkoi8r:             charmap.KOI8R,\n\tkoi8u:             charmap.KOI8U,\n\tmacintosh:         charmap.Macintosh,\n\twindows874:        charmap.Windows874,\n\twindows1250:       charmap.Windows1250,\n\twindows1251:       charmap.Windows1251,\n\twindows1252:       charmap.Windows1252,\n\twindows1253:       charmap.Windows1253,\n\twindows1254:       charmap.Windows1254,\n\twindows1255:       charmap.Windows1255,\n\twindows1256:       charmap.Windows1256,\n\twindows1257:       charmap.Windows1257,\n\twindows1258:       charmap.Windows1258,\n\tmacintoshCyrillic: charmap.MacintoshCyrillic,\n\tgbk:               simplifiedchinese.GBK,\n\tgb18030:           simplifiedchinese.GB18030,\n\tbig5:              traditionalchinese.Big5,\n\teucjp:             japanese.EUCJP,\n\tiso2022jp:         japanese.ISO2022JP,\n\tshiftJIS:          japanese.ShiftJIS,\n\teuckr:             korean.EUCKR,\n\treplacement:       encoding.Replacement,\n\tutf16be:           unicode.UTF16(unicode.BigEndian, unicode.IgnoreBOM),\n\tutf16le:           unicode.UTF16(unicode.LittleEndian, unicode.IgnoreBOM),\n\txUserDefined:      charmap.XUserDefined,\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/text/encoding/htmlindex/tables.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\npackage htmlindex\n\ntype htmlEncoding byte\n\nconst (\n\tutf8 htmlEncoding = iota\n\tibm866\n\tiso8859_2\n\tiso8859_3\n\tiso8859_4\n\tiso8859_5\n\tiso8859_6\n\tiso8859_7\n\tiso8859_8\n\tiso8859_8I\n\tiso8859_10\n\tiso8859_13\n\tiso8859_14\n\tiso8859_15\n\tiso8859_16\n\tkoi8r\n\tkoi8u\n\tmacintosh\n\twindows874\n\twindows1250\n\twindows1251\n\twindows1252\n\twindows1253\n\twindows1254\n\twindows1255\n\twindows1256\n\twindows1257\n\twindows1258\n\tmacintoshCyrillic\n\tgbk\n\tgb18030\n\tbig5\n\teucjp\n\tiso2022jp\n\tshiftJIS\n\teuckr\n\treplacement\n\tutf16be\n\tutf16le\n\txUserDefined\n\tnumEncodings\n)\n\nvar canonical = [numEncodings]string{\n\t\"utf-8\",\n\t\"ibm866\",\n\t\"iso-8859-2\",\n\t\"iso-8859-3\",\n\t\"iso-8859-4\",\n\t\"iso-8859-5\",\n\t\"iso-8859-6\",\n\t\"iso-8859-7\",\n\t\"iso-8859-8\",\n\t\"iso-8859-8-i\",\n\t\"iso-8859-10\",\n\t\"iso-8859-13\",\n\t\"iso-8859-14\",\n\t\"iso-8859-15\",\n\t\"iso-8859-16\",\n\t\"koi8-r\",\n\t\"koi8-u\",\n\t\"macintosh\",\n\t\"windows-874\",\n\t\"windows-1250\",\n\t\"windows-1251\",\n\t\"windows-1252\",\n\t\"windows-1253\",\n\t\"windows-1254\",\n\t\"windows-1255\",\n\t\"windows-1256\",\n\t\"windows-1257\",\n\t\"windows-1258\",\n\t\"x-mac-cyrillic\",\n\t\"gbk\",\n\t\"gb18030\",\n\t\"big5\",\n\t\"euc-jp\",\n\t\"iso-2022-jp\",\n\t\"shift_jis\",\n\t\"euc-kr\",\n\t\"replacement\",\n\t\"utf-16be\",\n\t\"utf-16le\",\n\t\"x-user-defined\",\n}\n\nvar nameMap = map[string]htmlEncoding{\n\t\"unicode-1-1-utf-8\":   utf8,\n\t\"unicode11utf8\":       utf8,\n\t\"unicode20utf8\":       utf8,\n\t\"utf-8\":               utf8,\n\t\"utf8\":                utf8,\n\t\"x-unicode20utf8\":     utf8,\n\t\"866\":                 ibm866,\n\t\"cp866\":               ibm866,\n\t\"csibm866\":            ibm866,\n\t\"ibm866\":              ibm866,\n\t\"csisolatin2\":         iso8859_2,\n\t\"iso-8859-2\":          iso8859_2,\n\t\"iso-ir-101\":          iso8859_2,\n\t\"iso8859-2\":           iso8859_2,\n\t\"iso88592\":            iso8859_2,\n\t\"iso_8859-2\":          iso8859_2,\n\t\"iso_8859-2:1987\":     iso8859_2,\n\t\"l2\":                  iso8859_2,\n\t\"latin2\":              iso8859_2,\n\t\"csisolatin3\":         iso8859_3,\n\t\"iso-8859-3\":          iso8859_3,\n\t\"iso-ir-109\":          iso8859_3,\n\t\"iso8859-3\":           iso8859_3,\n\t\"iso88593\":            iso8859_3,\n\t\"iso_8859-3\":          iso8859_3,\n\t\"iso_8859-3:1988\":     iso8859_3,\n\t\"l3\":                  iso8859_3,\n\t\"latin3\":              iso8859_3,\n\t\"csisolatin4\":         iso8859_4,\n\t\"iso-8859-4\":          iso8859_4,\n\t\"iso-ir-110\":          iso8859_4,\n\t\"iso8859-4\":           iso8859_4,\n\t\"iso88594\":            iso8859_4,\n\t\"iso_8859-4\":          iso8859_4,\n\t\"iso_8859-4:1988\":     iso8859_4,\n\t\"l4\":                  iso8859_4,\n\t\"latin4\":              iso8859_4,\n\t\"csisolatincyrillic\":  iso8859_5,\n\t\"cyrillic\":            iso8859_5,\n\t\"iso-8859-5\":          iso8859_5,\n\t\"iso-ir-144\":          iso8859_5,\n\t\"iso8859-5\":           iso8859_5,\n\t\"iso88595\":            iso8859_5,\n\t\"iso_8859-5\":          iso8859_5,\n\t\"iso_8859-5:1988\":     iso8859_5,\n\t\"arabic\":              iso8859_6,\n\t\"asmo-708\":            iso8859_6,\n\t\"csiso88596e\":         iso8859_6,\n\t\"csiso88596i\":         iso8859_6,\n\t\"csisolatinarabic\":    iso8859_6,\n\t\"ecma-114\":            iso8859_6,\n\t\"iso-8859-6\":          iso8859_6,\n\t\"iso-8859-6-e\":        iso8859_6,\n\t\"iso-8859-6-i\":        iso8859_6,\n\t\"iso-ir-127\":          iso8859_6,\n\t\"iso8859-6\":           iso8859_6,\n\t\"iso88596\":            iso8859_6,\n\t\"iso_8859-6\":          iso8859_6,\n\t\"iso_8859-6:1987\":     iso8859_6,\n\t\"csisolatingreek\":     iso8859_7,\n\t\"ecma-118\":            iso8859_7,\n\t\"elot_928\":            iso8859_7,\n\t\"greek\":               iso8859_7,\n\t\"greek8\":              iso8859_7,\n\t\"iso-8859-7\":          iso8859_7,\n\t\"iso-ir-126\":          iso8859_7,\n\t\"iso8859-7\":           iso8859_7,\n\t\"iso88597\":            iso8859_7,\n\t\"iso_8859-7\":          iso8859_7,\n\t\"iso_8859-7:1987\":     iso8859_7,\n\t\"sun_eu_greek\":        iso8859_7,\n\t\"csiso88598e\":         iso8859_8,\n\t\"csisolatinhebrew\":    iso8859_8,\n\t\"hebrew\":              iso8859_8,\n\t\"iso-8859-8\":          iso8859_8,\n\t\"iso-8859-8-e\":        iso8859_8,\n\t\"iso-ir-138\":          iso8859_8,\n\t\"iso8859-8\":           iso8859_8,\n\t\"iso88598\":            iso8859_8,\n\t\"iso_8859-8\":          iso8859_8,\n\t\"iso_8859-8:1988\":     iso8859_8,\n\t\"visual\":              iso8859_8,\n\t\"csiso88598i\":         iso8859_8I,\n\t\"iso-8859-8-i\":        iso8859_8I,\n\t\"logical\":             iso8859_8I,\n\t\"csisolatin6\":         iso8859_10,\n\t\"iso-8859-10\":         iso8859_10,\n\t\"iso-ir-157\":          iso8859_10,\n\t\"iso8859-10\":          iso8859_10,\n\t\"iso885910\":           iso8859_10,\n\t\"l6\":                  iso8859_10,\n\t\"latin6\":              iso8859_10,\n\t\"iso-8859-13\":         iso8859_13,\n\t\"iso8859-13\":          iso8859_13,\n\t\"iso885913\":           iso8859_13,\n\t\"iso-8859-14\":         iso8859_14,\n\t\"iso8859-14\":          iso8859_14,\n\t\"iso885914\":           iso8859_14,\n\t\"csisolatin9\":         iso8859_15,\n\t\"iso-8859-15\":         iso8859_15,\n\t\"iso8859-15\":          iso8859_15,\n\t\"iso885915\":           iso8859_15,\n\t\"iso_8859-15\":         iso8859_15,\n\t\"l9\":                  iso8859_15,\n\t\"iso-8859-16\":         iso8859_16,\n\t\"cskoi8r\":             koi8r,\n\t\"koi\":                 koi8r,\n\t\"koi8\":                koi8r,\n\t\"koi8-r\":              koi8r,\n\t\"koi8_r\":              koi8r,\n\t\"koi8-ru\":             koi8u,\n\t\"koi8-u\":              koi8u,\n\t\"csmacintosh\":         macintosh,\n\t\"mac\":                 macintosh,\n\t\"macintosh\":           macintosh,\n\t\"x-mac-roman\":         macintosh,\n\t\"dos-874\":             windows874,\n\t\"iso-8859-11\":         windows874,\n\t\"iso8859-11\":          windows874,\n\t\"iso885911\":           windows874,\n\t\"tis-620\":             windows874,\n\t\"windows-874\":         windows874,\n\t\"cp1250\":              windows1250,\n\t\"windows-1250\":        windows1250,\n\t\"x-cp1250\":            windows1250,\n\t\"cp1251\":              windows1251,\n\t\"windows-1251\":        windows1251,\n\t\"x-cp1251\":            windows1251,\n\t\"ansi_x3.4-1968\":      windows1252,\n\t\"ascii\":               windows1252,\n\t\"cp1252\":              windows1252,\n\t\"cp819\":               windows1252,\n\t\"csisolatin1\":         windows1252,\n\t\"ibm819\":              windows1252,\n\t\"iso-8859-1\":          windows1252,\n\t\"iso-ir-100\":          windows1252,\n\t\"iso8859-1\":           windows1252,\n\t\"iso88591\":            windows1252,\n\t\"iso_8859-1\":          windows1252,\n\t\"iso_8859-1:1987\":     windows1252,\n\t\"l1\":                  windows1252,\n\t\"latin1\":              windows1252,\n\t\"us-ascii\":            windows1252,\n\t\"windows-1252\":        windows1252,\n\t\"x-cp1252\":            windows1252,\n\t\"cp1253\":              windows1253,\n\t\"windows-1253\":        windows1253,\n\t\"x-cp1253\":            windows1253,\n\t\"cp1254\":              windows1254,\n\t\"csisolatin5\":         windows1254,\n\t\"iso-8859-9\":          windows1254,\n\t\"iso-ir-148\":          windows1254,\n\t\"iso8859-9\":           windows1254,\n\t\"iso88599\":            windows1254,\n\t\"iso_8859-9\":          windows1254,\n\t\"iso_8859-9:1989\":     windows1254,\n\t\"l5\":                  windows1254,\n\t\"latin5\":              windows1254,\n\t\"windows-1254\":        windows1254,\n\t\"x-cp1254\":            windows1254,\n\t\"cp1255\":              windows1255,\n\t\"windows-1255\":        windows1255,\n\t\"x-cp1255\":            windows1255,\n\t\"cp1256\":              windows1256,\n\t\"windows-1256\":        windows1256,\n\t\"x-cp1256\":            windows1256,\n\t\"cp1257\":              windows1257,\n\t\"windows-1257\":        windows1257,\n\t\"x-cp1257\":            windows1257,\n\t\"cp1258\":              windows1258,\n\t\"windows-1258\":        windows1258,\n\t\"x-cp1258\":            windows1258,\n\t\"x-mac-cyrillic\":      macintoshCyrillic,\n\t\"x-mac-ukrainian\":     macintoshCyrillic,\n\t\"chinese\":             gbk,\n\t\"csgb2312\":            gbk,\n\t\"csiso58gb231280\":     gbk,\n\t\"gb2312\":              gbk,\n\t\"gb_2312\":             gbk,\n\t\"gb_2312-80\":          gbk,\n\t\"gbk\":                 gbk,\n\t\"iso-ir-58\":           gbk,\n\t\"x-gbk\":               gbk,\n\t\"gb18030\":             gb18030,\n\t\"big5\":                big5,\n\t\"big5-hkscs\":          big5,\n\t\"cn-big5\":             big5,\n\t\"csbig5\":              big5,\n\t\"x-x-big5\":            big5,\n\t\"cseucpkdfmtjapanese\": eucjp,\n\t\"euc-jp\":              eucjp,\n\t\"x-euc-jp\":            eucjp,\n\t\"csiso2022jp\":         iso2022jp,\n\t\"iso-2022-jp\":         iso2022jp,\n\t\"csshiftjis\":          shiftJIS,\n\t\"ms932\":               shiftJIS,\n\t\"ms_kanji\":            shiftJIS,\n\t\"shift-jis\":           shiftJIS,\n\t\"shift_jis\":           shiftJIS,\n\t\"sjis\":                shiftJIS,\n\t\"windows-31j\":         shiftJIS,\n\t\"x-sjis\":              shiftJIS,\n\t\"cseuckr\":             euckr,\n\t\"csksc56011987\":       euckr,\n\t\"euc-kr\":              euckr,\n\t\"iso-ir-149\":          euckr,\n\t\"korean\":              euckr,\n\t\"ks_c_5601-1987\":      euckr,\n\t\"ks_c_5601-1989\":      euckr,\n\t\"ksc5601\":             euckr,\n\t\"ksc_5601\":            euckr,\n\t\"windows-949\":         euckr,\n\t\"csiso2022kr\":         replacement,\n\t\"hz-gb-2312\":          replacement,\n\t\"iso-2022-cn\":         replacement,\n\t\"iso-2022-cn-ext\":     replacement,\n\t\"iso-2022-kr\":         replacement,\n\t\"replacement\":         replacement,\n\t\"unicodefffe\":         utf16be,\n\t\"utf-16be\":            utf16be,\n\t\"csunicode\":           utf16le,\n\t\"iso-10646-ucs-2\":     utf16le,\n\t\"ucs-2\":               utf16le,\n\t\"unicode\":             utf16le,\n\t\"unicodefeff\":         utf16le,\n\t\"utf-16\":              utf16le,\n\t\"utf-16le\":            utf16le,\n\t\"x-user-defined\":      xUserDefined,\n}\n\nvar localeMap = []htmlEncoding{\n\twindows1252, // und_Latn\n\twindows1256, // ar\n\twindows1251, // ba\n\twindows1251, // be\n\twindows1251, // bg\n\twindows1250, // cs\n\tiso8859_7,   // el\n\twindows1257, // et\n\twindows1256, // fa\n\twindows1255, // he\n\twindows1250, // hr\n\tiso8859_2,   // hu\n\tshiftJIS,    // ja\n\twindows1251, // kk\n\teuckr,       // ko\n\twindows1254, // ku\n\twindows1251, // ky\n\twindows1257, // lt\n\twindows1257, // lv\n\twindows1251, // mk\n\tiso8859_2,   // pl\n\twindows1251, // ru\n\twindows1251, // sah\n\twindows1250, // sk\n\tiso8859_2,   // sl\n\twindows1251, // sr\n\twindows1251, // tg\n\twindows874,  // th\n\twindows1254, // tr\n\twindows1251, // tt\n\twindows1251, // uk\n\twindows1258, // vi\n\tgb18030,     // zh-hans\n\tbig5,        // zh-hant\n}\n\nconst locales = \"und_Latn ar ba be bg cs el et fa he hr hu ja kk ko ku ky lt lv mk pl ru sah sk sl sr tg th tr tt uk vi zh-hans zh-hant\"\n"
  },
  {
    "path": "tests/vendor/golang.org/x/text/encoding/internal/identifier/identifier.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:generate go run gen.go\n\n// Package identifier defines the contract between implementations of Encoding\n// and Index by defining identifiers that uniquely identify standardized coded\n// character sets (CCS) and character encoding schemes (CES), which we will\n// together refer to as encodings, for which Encoding implementations provide\n// converters to and from UTF-8. This package is typically only of concern to\n// implementers of Indexes and Encodings.\n//\n// One part of the identifier is the MIB code, which is defined by IANA and\n// uniquely identifies a CCS or CES. Each code is associated with data that\n// references authorities, official documentation as well as aliases and MIME\n// names.\n//\n// Not all CESs are covered by the IANA registry. The \"other\" string that is\n// returned by ID can be used to identify other character sets or versions of\n// existing ones.\n//\n// It is recommended that each package that provides a set of Encodings provide\n// the All and Common variables to reference all supported encodings and\n// commonly used subset. This allows Index implementations to include all\n// available encodings without explicitly referencing or knowing about them.\npackage identifier\n\n// Note: this package is internal, but could be made public if there is a need\n// for writing third-party Indexes and Encodings.\n\n// References:\n// - http://source.icu-project.org/repos/icu/icu/trunk/source/data/mappings/convrtrs.txt\n// - http://www.iana.org/assignments/character-sets/character-sets.xhtml\n// - http://www.iana.org/assignments/ianacharset-mib/ianacharset-mib\n// - http://www.ietf.org/rfc/rfc2978.txt\n// - https://www.unicode.org/reports/tr22/\n// - http://www.w3.org/TR/encoding/\n// - https://encoding.spec.whatwg.org/\n// - https://encoding.spec.whatwg.org/encodings.json\n// - https://tools.ietf.org/html/rfc6657#section-5\n\n// Interface can be implemented by Encodings to define the CCS or CES for which\n// it implements conversions.\ntype Interface interface {\n\t// ID returns an encoding identifier. Exactly one of the mib and other\n\t// values should be non-zero.\n\t//\n\t// In the usual case it is only necessary to indicate the MIB code. The\n\t// other string can be used to specify encodings for which there is no MIB,\n\t// such as \"x-mac-dingbat\".\n\t//\n\t// The other string may only contain the characters a-z, A-Z, 0-9, - and _.\n\tID() (mib MIB, other string)\n\n\t// NOTE: the restrictions on the encoding are to allow extending the syntax\n\t// with additional information such as versions, vendors and other variants.\n}\n\n// A MIB identifies an encoding. It is derived from the IANA MIB codes and adds\n// some identifiers for some encodings that are not covered by the IANA\n// standard.\n//\n// See http://www.iana.org/assignments/ianacharset-mib.\ntype MIB uint16\n\n// These additional MIB types are not defined in IANA. They are added because\n// they are common and defined within the text repo.\nconst (\n\t// Unofficial marks the start of encodings not registered by IANA.\n\tUnofficial MIB = 10000 + iota\n\n\t// Replacement is the WhatWG replacement encoding.\n\tReplacement\n\n\t// XUserDefined is the code for x-user-defined.\n\tXUserDefined\n\n\t// MacintoshCyrillic is the code for x-mac-cyrillic.\n\tMacintoshCyrillic\n)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/text/encoding/internal/identifier/mib.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\npackage identifier\n\nconst (\n\t// ASCII is the MIB identifier with IANA name US-ASCII (MIME: US-ASCII).\n\t//\n\t// ANSI X3.4-1986\n\t// Reference: RFC2046\n\tASCII MIB = 3\n\n\t// ISOLatin1 is the MIB identifier with IANA name ISO_8859-1:1987 (MIME: ISO-8859-1).\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISOLatin1 MIB = 4\n\n\t// ISOLatin2 is the MIB identifier with IANA name ISO_8859-2:1987 (MIME: ISO-8859-2).\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISOLatin2 MIB = 5\n\n\t// ISOLatin3 is the MIB identifier with IANA name ISO_8859-3:1988 (MIME: ISO-8859-3).\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISOLatin3 MIB = 6\n\n\t// ISOLatin4 is the MIB identifier with IANA name ISO_8859-4:1988 (MIME: ISO-8859-4).\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISOLatin4 MIB = 7\n\n\t// ISOLatinCyrillic is the MIB identifier with IANA name ISO_8859-5:1988 (MIME: ISO-8859-5).\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISOLatinCyrillic MIB = 8\n\n\t// ISOLatinArabic is the MIB identifier with IANA name ISO_8859-6:1987 (MIME: ISO-8859-6).\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISOLatinArabic MIB = 9\n\n\t// ISOLatinGreek is the MIB identifier with IANA name ISO_8859-7:1987 (MIME: ISO-8859-7).\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1947\n\t// Reference: RFC1345\n\tISOLatinGreek MIB = 10\n\n\t// ISOLatinHebrew is the MIB identifier with IANA name ISO_8859-8:1988 (MIME: ISO-8859-8).\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISOLatinHebrew MIB = 11\n\n\t// ISOLatin5 is the MIB identifier with IANA name ISO_8859-9:1989 (MIME: ISO-8859-9).\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISOLatin5 MIB = 12\n\n\t// ISOLatin6 is the MIB identifier with IANA name ISO-8859-10 (MIME: ISO-8859-10).\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISOLatin6 MIB = 13\n\n\t// ISOTextComm is the MIB identifier with IANA name ISO_6937-2-add.\n\t//\n\t// ISO-IR: International Register of Escape Sequences and ISO 6937-2:1983\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISOTextComm MIB = 14\n\n\t// HalfWidthKatakana is the MIB identifier with IANA name JIS_X0201.\n\t//\n\t// JIS X 0201-1976.   One byte only, this is equivalent to\n\t// JIS/Roman (similar to ASCII) plus eight-bit half-width\n\t// Katakana\n\t// Reference: RFC1345\n\tHalfWidthKatakana MIB = 15\n\n\t// JISEncoding is the MIB identifier with IANA name JIS_Encoding.\n\t//\n\t// JIS X 0202-1991.  Uses ISO 2022 escape sequences to\n\t// shift code sets as documented in JIS X 0202-1991.\n\tJISEncoding MIB = 16\n\n\t// ShiftJIS is the MIB identifier with IANA name Shift_JIS (MIME: Shift_JIS).\n\t//\n\t// This charset is an extension of csHalfWidthKatakana by\n\t// adding graphic characters in JIS X 0208.  The CCS's are\n\t// JIS X0201:1997 and JIS X0208:1997.  The\n\t// complete definition is shown in Appendix 1 of JIS\n\t// X0208:1997.\n\t// This charset can be used for the top-level media type \"text\".\n\tShiftJIS MIB = 17\n\n\t// EUCPkdFmtJapanese is the MIB identifier with IANA name Extended_UNIX_Code_Packed_Format_for_Japanese (MIME: EUC-JP).\n\t//\n\t// Standardized by OSF, UNIX International, and UNIX Systems\n\t// Laboratories Pacific.  Uses ISO 2022 rules to select\n\t// code set 0: US-ASCII (a single 7-bit byte set)\n\t// code set 1: JIS X0208-1990 (a double 8-bit byte set)\n\t// restricted to A0-FF in both bytes\n\t// code set 2: Half Width Katakana (a single 7-bit byte set)\n\t// requiring SS2 as the character prefix\n\t// code set 3: JIS X0212-1990 (a double 7-bit byte set)\n\t// restricted to A0-FF in both bytes\n\t// requiring SS3 as the character prefix\n\tEUCPkdFmtJapanese MIB = 18\n\n\t// EUCFixWidJapanese is the MIB identifier with IANA name Extended_UNIX_Code_Fixed_Width_for_Japanese.\n\t//\n\t// Used in Japan.  Each character is 2 octets.\n\t// code set 0: US-ASCII (a single 7-bit byte set)\n\t// 1st byte = 00\n\t// 2nd byte = 20-7E\n\t// code set 1: JIS X0208-1990 (a double 7-bit byte set)\n\t// restricted  to A0-FF in both bytes\n\t// code set 2: Half Width Katakana (a single 7-bit byte set)\n\t// 1st byte = 00\n\t// 2nd byte = A0-FF\n\t// code set 3: JIS X0212-1990 (a double 7-bit byte set)\n\t// restricted to A0-FF in\n\t// the first byte\n\t// and 21-7E in the second byte\n\tEUCFixWidJapanese MIB = 19\n\n\t// ISO4UnitedKingdom is the MIB identifier with IANA name BS_4730.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO4UnitedKingdom MIB = 20\n\n\t// ISO11SwedishForNames is the MIB identifier with IANA name SEN_850200_C.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO11SwedishForNames MIB = 21\n\n\t// ISO15Italian is the MIB identifier with IANA name IT.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO15Italian MIB = 22\n\n\t// ISO17Spanish is the MIB identifier with IANA name ES.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO17Spanish MIB = 23\n\n\t// ISO21German is the MIB identifier with IANA name DIN_66003.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO21German MIB = 24\n\n\t// ISO60Norwegian1 is the MIB identifier with IANA name NS_4551-1.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO60Norwegian1 MIB = 25\n\n\t// ISO69French is the MIB identifier with IANA name NF_Z_62-010.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO69French MIB = 26\n\n\t// ISO10646UTF1 is the MIB identifier with IANA name ISO-10646-UTF-1.\n\t//\n\t// Universal Transfer Format (1), this is the multibyte\n\t// encoding, that subsets ASCII-7. It does not have byte\n\t// ordering issues.\n\tISO10646UTF1 MIB = 27\n\n\t// ISO646basic1983 is the MIB identifier with IANA name ISO_646.basic:1983.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO646basic1983 MIB = 28\n\n\t// INVARIANT is the MIB identifier with IANA name INVARIANT.\n\t//\n\t// Reference: RFC1345\n\tINVARIANT MIB = 29\n\n\t// ISO2IntlRefVersion is the MIB identifier with IANA name ISO_646.irv:1983.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO2IntlRefVersion MIB = 30\n\n\t// NATSSEFI is the MIB identifier with IANA name NATS-SEFI.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tNATSSEFI MIB = 31\n\n\t// NATSSEFIADD is the MIB identifier with IANA name NATS-SEFI-ADD.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tNATSSEFIADD MIB = 32\n\n\t// NATSDANO is the MIB identifier with IANA name NATS-DANO.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tNATSDANO MIB = 33\n\n\t// NATSDANOADD is the MIB identifier with IANA name NATS-DANO-ADD.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tNATSDANOADD MIB = 34\n\n\t// ISO10Swedish is the MIB identifier with IANA name SEN_850200_B.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO10Swedish MIB = 35\n\n\t// KSC56011987 is the MIB identifier with IANA name KS_C_5601-1987.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tKSC56011987 MIB = 36\n\n\t// ISO2022KR is the MIB identifier with IANA name ISO-2022-KR (MIME: ISO-2022-KR).\n\t//\n\t// rfc1557 (see also KS_C_5601-1987)\n\t// Reference: RFC1557\n\tISO2022KR MIB = 37\n\n\t// EUCKR is the MIB identifier with IANA name EUC-KR (MIME: EUC-KR).\n\t//\n\t// rfc1557 (see also KS_C_5861-1992)\n\t// Reference: RFC1557\n\tEUCKR MIB = 38\n\n\t// ISO2022JP is the MIB identifier with IANA name ISO-2022-JP (MIME: ISO-2022-JP).\n\t//\n\t// rfc1468 (see also rfc2237 )\n\t// Reference: RFC1468\n\tISO2022JP MIB = 39\n\n\t// ISO2022JP2 is the MIB identifier with IANA name ISO-2022-JP-2 (MIME: ISO-2022-JP-2).\n\t//\n\t// rfc1554\n\t// Reference: RFC1554\n\tISO2022JP2 MIB = 40\n\n\t// ISO13JISC6220jp is the MIB identifier with IANA name JIS_C6220-1969-jp.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO13JISC6220jp MIB = 41\n\n\t// ISO14JISC6220ro is the MIB identifier with IANA name JIS_C6220-1969-ro.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO14JISC6220ro MIB = 42\n\n\t// ISO16Portuguese is the MIB identifier with IANA name PT.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO16Portuguese MIB = 43\n\n\t// ISO18Greek7Old is the MIB identifier with IANA name greek7-old.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO18Greek7Old MIB = 44\n\n\t// ISO19LatinGreek is the MIB identifier with IANA name latin-greek.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO19LatinGreek MIB = 45\n\n\t// ISO25French is the MIB identifier with IANA name NF_Z_62-010_(1973).\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO25French MIB = 46\n\n\t// ISO27LatinGreek1 is the MIB identifier with IANA name Latin-greek-1.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO27LatinGreek1 MIB = 47\n\n\t// ISO5427Cyrillic is the MIB identifier with IANA name ISO_5427.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO5427Cyrillic MIB = 48\n\n\t// ISO42JISC62261978 is the MIB identifier with IANA name JIS_C6226-1978.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO42JISC62261978 MIB = 49\n\n\t// ISO47BSViewdata is the MIB identifier with IANA name BS_viewdata.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO47BSViewdata MIB = 50\n\n\t// ISO49INIS is the MIB identifier with IANA name INIS.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO49INIS MIB = 51\n\n\t// ISO50INIS8 is the MIB identifier with IANA name INIS-8.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO50INIS8 MIB = 52\n\n\t// ISO51INISCyrillic is the MIB identifier with IANA name INIS-cyrillic.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO51INISCyrillic MIB = 53\n\n\t// ISO54271981 is the MIB identifier with IANA name ISO_5427:1981.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO54271981 MIB = 54\n\n\t// ISO5428Greek is the MIB identifier with IANA name ISO_5428:1980.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO5428Greek MIB = 55\n\n\t// ISO57GB1988 is the MIB identifier with IANA name GB_1988-80.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO57GB1988 MIB = 56\n\n\t// ISO58GB231280 is the MIB identifier with IANA name GB_2312-80.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO58GB231280 MIB = 57\n\n\t// ISO61Norwegian2 is the MIB identifier with IANA name NS_4551-2.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO61Norwegian2 MIB = 58\n\n\t// ISO70VideotexSupp1 is the MIB identifier with IANA name videotex-suppl.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO70VideotexSupp1 MIB = 59\n\n\t// ISO84Portuguese2 is the MIB identifier with IANA name PT2.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO84Portuguese2 MIB = 60\n\n\t// ISO85Spanish2 is the MIB identifier with IANA name ES2.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO85Spanish2 MIB = 61\n\n\t// ISO86Hungarian is the MIB identifier with IANA name MSZ_7795.3.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO86Hungarian MIB = 62\n\n\t// ISO87JISX0208 is the MIB identifier with IANA name JIS_C6226-1983.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO87JISX0208 MIB = 63\n\n\t// ISO88Greek7 is the MIB identifier with IANA name greek7.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO88Greek7 MIB = 64\n\n\t// ISO89ASMO449 is the MIB identifier with IANA name ASMO_449.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO89ASMO449 MIB = 65\n\n\t// ISO90 is the MIB identifier with IANA name iso-ir-90.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO90 MIB = 66\n\n\t// ISO91JISC62291984a is the MIB identifier with IANA name JIS_C6229-1984-a.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO91JISC62291984a MIB = 67\n\n\t// ISO92JISC62991984b is the MIB identifier with IANA name JIS_C6229-1984-b.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO92JISC62991984b MIB = 68\n\n\t// ISO93JIS62291984badd is the MIB identifier with IANA name JIS_C6229-1984-b-add.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO93JIS62291984badd MIB = 69\n\n\t// ISO94JIS62291984hand is the MIB identifier with IANA name JIS_C6229-1984-hand.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO94JIS62291984hand MIB = 70\n\n\t// ISO95JIS62291984handadd is the MIB identifier with IANA name JIS_C6229-1984-hand-add.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO95JIS62291984handadd MIB = 71\n\n\t// ISO96JISC62291984kana is the MIB identifier with IANA name JIS_C6229-1984-kana.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO96JISC62291984kana MIB = 72\n\n\t// ISO2033 is the MIB identifier with IANA name ISO_2033-1983.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO2033 MIB = 73\n\n\t// ISO99NAPLPS is the MIB identifier with IANA name ANSI_X3.110-1983.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO99NAPLPS MIB = 74\n\n\t// ISO102T617bit is the MIB identifier with IANA name T.61-7bit.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO102T617bit MIB = 75\n\n\t// ISO103T618bit is the MIB identifier with IANA name T.61-8bit.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO103T618bit MIB = 76\n\n\t// ISO111ECMACyrillic is the MIB identifier with IANA name ECMA-cyrillic.\n\t//\n\t// ISO registry\n\tISO111ECMACyrillic MIB = 77\n\n\t// ISO121Canadian1 is the MIB identifier with IANA name CSA_Z243.4-1985-1.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO121Canadian1 MIB = 78\n\n\t// ISO122Canadian2 is the MIB identifier with IANA name CSA_Z243.4-1985-2.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO122Canadian2 MIB = 79\n\n\t// ISO123CSAZ24341985gr is the MIB identifier with IANA name CSA_Z243.4-1985-gr.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO123CSAZ24341985gr MIB = 80\n\n\t// ISO88596E is the MIB identifier with IANA name ISO_8859-6-E (MIME: ISO-8859-6-E).\n\t//\n\t// rfc1556\n\t// Reference: RFC1556\n\tISO88596E MIB = 81\n\n\t// ISO88596I is the MIB identifier with IANA name ISO_8859-6-I (MIME: ISO-8859-6-I).\n\t//\n\t// rfc1556\n\t// Reference: RFC1556\n\tISO88596I MIB = 82\n\n\t// ISO128T101G2 is the MIB identifier with IANA name T.101-G2.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO128T101G2 MIB = 83\n\n\t// ISO88598E is the MIB identifier with IANA name ISO_8859-8-E (MIME: ISO-8859-8-E).\n\t//\n\t// rfc1556\n\t// Reference: RFC1556\n\tISO88598E MIB = 84\n\n\t// ISO88598I is the MIB identifier with IANA name ISO_8859-8-I (MIME: ISO-8859-8-I).\n\t//\n\t// rfc1556\n\t// Reference: RFC1556\n\tISO88598I MIB = 85\n\n\t// ISO139CSN369103 is the MIB identifier with IANA name CSN_369103.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO139CSN369103 MIB = 86\n\n\t// ISO141JUSIB1002 is the MIB identifier with IANA name JUS_I.B1.002.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO141JUSIB1002 MIB = 87\n\n\t// ISO143IECP271 is the MIB identifier with IANA name IEC_P27-1.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO143IECP271 MIB = 88\n\n\t// ISO146Serbian is the MIB identifier with IANA name JUS_I.B1.003-serb.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO146Serbian MIB = 89\n\n\t// ISO147Macedonian is the MIB identifier with IANA name JUS_I.B1.003-mac.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO147Macedonian MIB = 90\n\n\t// ISO150GreekCCITT is the MIB identifier with IANA name greek-ccitt.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO150GreekCCITT MIB = 91\n\n\t// ISO151Cuba is the MIB identifier with IANA name NC_NC00-10:81.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO151Cuba MIB = 92\n\n\t// ISO6937Add is the MIB identifier with IANA name ISO_6937-2-25.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO6937Add MIB = 93\n\n\t// ISO153GOST1976874 is the MIB identifier with IANA name GOST_19768-74.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO153GOST1976874 MIB = 94\n\n\t// ISO8859Supp is the MIB identifier with IANA name ISO_8859-supp.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO8859Supp MIB = 95\n\n\t// ISO10367Box is the MIB identifier with IANA name ISO_10367-box.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO10367Box MIB = 96\n\n\t// ISO158Lap is the MIB identifier with IANA name latin-lap.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO158Lap MIB = 97\n\n\t// ISO159JISX02121990 is the MIB identifier with IANA name JIS_X0212-1990.\n\t//\n\t// ISO-IR: International Register of Escape Sequences\n\t// Note: The current registration authority is IPSJ/ITSCJ, Japan.\n\t// Reference: RFC1345\n\tISO159JISX02121990 MIB = 98\n\n\t// ISO646Danish is the MIB identifier with IANA name DS_2089.\n\t//\n\t// Danish Standard, DS 2089, February 1974\n\t// Reference: RFC1345\n\tISO646Danish MIB = 99\n\n\t// USDK is the MIB identifier with IANA name us-dk.\n\t//\n\t// Reference: RFC1345\n\tUSDK MIB = 100\n\n\t// DKUS is the MIB identifier with IANA name dk-us.\n\t//\n\t// Reference: RFC1345\n\tDKUS MIB = 101\n\n\t// KSC5636 is the MIB identifier with IANA name KSC5636.\n\t//\n\t// Reference: RFC1345\n\tKSC5636 MIB = 102\n\n\t// Unicode11UTF7 is the MIB identifier with IANA name UNICODE-1-1-UTF-7.\n\t//\n\t// rfc1642\n\t// Reference: RFC1642\n\tUnicode11UTF7 MIB = 103\n\n\t// ISO2022CN is the MIB identifier with IANA name ISO-2022-CN.\n\t//\n\t// rfc1922\n\t// Reference: RFC1922\n\tISO2022CN MIB = 104\n\n\t// ISO2022CNEXT is the MIB identifier with IANA name ISO-2022-CN-EXT.\n\t//\n\t// rfc1922\n\t// Reference: RFC1922\n\tISO2022CNEXT MIB = 105\n\n\t// UTF8 is the MIB identifier with IANA name UTF-8.\n\t//\n\t// rfc3629\n\t// Reference: RFC3629\n\tUTF8 MIB = 106\n\n\t// ISO885913 is the MIB identifier with IANA name ISO-8859-13.\n\t//\n\t// ISO See https://www.iana.org/assignments/charset-reg/ISO-8859-13 https://www.iana.org/assignments/charset-reg/ISO-8859-13\n\tISO885913 MIB = 109\n\n\t// ISO885914 is the MIB identifier with IANA name ISO-8859-14.\n\t//\n\t// ISO See https://www.iana.org/assignments/charset-reg/ISO-8859-14\n\tISO885914 MIB = 110\n\n\t// ISO885915 is the MIB identifier with IANA name ISO-8859-15.\n\t//\n\t// ISO\n\t// Please see: https://www.iana.org/assignments/charset-reg/ISO-8859-15\n\tISO885915 MIB = 111\n\n\t// ISO885916 is the MIB identifier with IANA name ISO-8859-16.\n\t//\n\t// ISO\n\tISO885916 MIB = 112\n\n\t// GBK is the MIB identifier with IANA name GBK.\n\t//\n\t// Chinese IT Standardization Technical Committee\n\t// Please see: https://www.iana.org/assignments/charset-reg/GBK\n\tGBK MIB = 113\n\n\t// GB18030 is the MIB identifier with IANA name GB18030.\n\t//\n\t// Chinese IT Standardization Technical Committee\n\t// Please see: https://www.iana.org/assignments/charset-reg/GB18030\n\tGB18030 MIB = 114\n\n\t// OSDEBCDICDF0415 is the MIB identifier with IANA name OSD_EBCDIC_DF04_15.\n\t//\n\t// Fujitsu-Siemens standard mainframe EBCDIC encoding\n\t// Please see: https://www.iana.org/assignments/charset-reg/OSD-EBCDIC-DF04-15\n\tOSDEBCDICDF0415 MIB = 115\n\n\t// OSDEBCDICDF03IRV is the MIB identifier with IANA name OSD_EBCDIC_DF03_IRV.\n\t//\n\t// Fujitsu-Siemens standard mainframe EBCDIC encoding\n\t// Please see: https://www.iana.org/assignments/charset-reg/OSD-EBCDIC-DF03-IRV\n\tOSDEBCDICDF03IRV MIB = 116\n\n\t// OSDEBCDICDF041 is the MIB identifier with IANA name OSD_EBCDIC_DF04_1.\n\t//\n\t// Fujitsu-Siemens standard mainframe EBCDIC encoding\n\t// Please see: https://www.iana.org/assignments/charset-reg/OSD-EBCDIC-DF04-1\n\tOSDEBCDICDF041 MIB = 117\n\n\t// ISO115481 is the MIB identifier with IANA name ISO-11548-1.\n\t//\n\t// See https://www.iana.org/assignments/charset-reg/ISO-11548-1\n\tISO115481 MIB = 118\n\n\t// KZ1048 is the MIB identifier with IANA name KZ-1048.\n\t//\n\t// See https://www.iana.org/assignments/charset-reg/KZ-1048\n\tKZ1048 MIB = 119\n\n\t// Unicode is the MIB identifier with IANA name ISO-10646-UCS-2.\n\t//\n\t// the 2-octet Basic Multilingual Plane, aka Unicode\n\t// this needs to specify network byte order: the standard\n\t// does not specify (it is a 16-bit integer space)\n\tUnicode MIB = 1000\n\n\t// UCS4 is the MIB identifier with IANA name ISO-10646-UCS-4.\n\t//\n\t// the full code space. (same comment about byte order,\n\t// these are 31-bit numbers.\n\tUCS4 MIB = 1001\n\n\t// UnicodeASCII is the MIB identifier with IANA name ISO-10646-UCS-Basic.\n\t//\n\t// ASCII subset of Unicode.  Basic Latin = collection 1\n\t// See ISO 10646, Appendix A\n\tUnicodeASCII MIB = 1002\n\n\t// UnicodeLatin1 is the MIB identifier with IANA name ISO-10646-Unicode-Latin1.\n\t//\n\t// ISO Latin-1 subset of Unicode. Basic Latin and Latin-1\n\t// Supplement  = collections 1 and 2.  See ISO 10646,\n\t// Appendix A.  See rfc1815 .\n\tUnicodeLatin1 MIB = 1003\n\n\t// UnicodeJapanese is the MIB identifier with IANA name ISO-10646-J-1.\n\t//\n\t// ISO 10646 Japanese, see rfc1815 .\n\tUnicodeJapanese MIB = 1004\n\n\t// UnicodeIBM1261 is the MIB identifier with IANA name ISO-Unicode-IBM-1261.\n\t//\n\t// IBM Latin-2, -3, -5, Extended Presentation Set, GCSGID: 1261\n\tUnicodeIBM1261 MIB = 1005\n\n\t// UnicodeIBM1268 is the MIB identifier with IANA name ISO-Unicode-IBM-1268.\n\t//\n\t// IBM Latin-4 Extended Presentation Set, GCSGID: 1268\n\tUnicodeIBM1268 MIB = 1006\n\n\t// UnicodeIBM1276 is the MIB identifier with IANA name ISO-Unicode-IBM-1276.\n\t//\n\t// IBM Cyrillic Greek Extended Presentation Set, GCSGID: 1276\n\tUnicodeIBM1276 MIB = 1007\n\n\t// UnicodeIBM1264 is the MIB identifier with IANA name ISO-Unicode-IBM-1264.\n\t//\n\t// IBM Arabic Presentation Set, GCSGID: 1264\n\tUnicodeIBM1264 MIB = 1008\n\n\t// UnicodeIBM1265 is the MIB identifier with IANA name ISO-Unicode-IBM-1265.\n\t//\n\t// IBM Hebrew Presentation Set, GCSGID: 1265\n\tUnicodeIBM1265 MIB = 1009\n\n\t// Unicode11 is the MIB identifier with IANA name UNICODE-1-1.\n\t//\n\t// rfc1641\n\t// Reference: RFC1641\n\tUnicode11 MIB = 1010\n\n\t// SCSU is the MIB identifier with IANA name SCSU.\n\t//\n\t// SCSU See https://www.iana.org/assignments/charset-reg/SCSU\n\tSCSU MIB = 1011\n\n\t// UTF7 is the MIB identifier with IANA name UTF-7.\n\t//\n\t// rfc2152\n\t// Reference: RFC2152\n\tUTF7 MIB = 1012\n\n\t// UTF16BE is the MIB identifier with IANA name UTF-16BE.\n\t//\n\t// rfc2781\n\t// Reference: RFC2781\n\tUTF16BE MIB = 1013\n\n\t// UTF16LE is the MIB identifier with IANA name UTF-16LE.\n\t//\n\t// rfc2781\n\t// Reference: RFC2781\n\tUTF16LE MIB = 1014\n\n\t// UTF16 is the MIB identifier with IANA name UTF-16.\n\t//\n\t// rfc2781\n\t// Reference: RFC2781\n\tUTF16 MIB = 1015\n\n\t// CESU8 is the MIB identifier with IANA name CESU-8.\n\t//\n\t// https://www.unicode.org/reports/tr26\n\tCESU8 MIB = 1016\n\n\t// UTF32 is the MIB identifier with IANA name UTF-32.\n\t//\n\t// https://www.unicode.org/reports/tr19/\n\tUTF32 MIB = 1017\n\n\t// UTF32BE is the MIB identifier with IANA name UTF-32BE.\n\t//\n\t// https://www.unicode.org/reports/tr19/\n\tUTF32BE MIB = 1018\n\n\t// UTF32LE is the MIB identifier with IANA name UTF-32LE.\n\t//\n\t// https://www.unicode.org/reports/tr19/\n\tUTF32LE MIB = 1019\n\n\t// BOCU1 is the MIB identifier with IANA name BOCU-1.\n\t//\n\t// https://www.unicode.org/notes/tn6/\n\tBOCU1 MIB = 1020\n\n\t// UTF7IMAP is the MIB identifier with IANA name UTF-7-IMAP.\n\t//\n\t// Note: This charset is used to encode Unicode in IMAP mailbox names;\n\t// see section 5.1.3 of rfc3501 . It should never be used\n\t// outside this context. A name has been assigned so that charset processing\n\t// implementations can refer to it in a consistent way.\n\tUTF7IMAP MIB = 1021\n\n\t// Windows30Latin1 is the MIB identifier with IANA name ISO-8859-1-Windows-3.0-Latin-1.\n\t//\n\t// Extended ISO 8859-1 Latin-1 for Windows 3.0.\n\t// PCL Symbol Set id: 9U\n\tWindows30Latin1 MIB = 2000\n\n\t// Windows31Latin1 is the MIB identifier with IANA name ISO-8859-1-Windows-3.1-Latin-1.\n\t//\n\t// Extended ISO 8859-1 Latin-1 for Windows 3.1.\n\t// PCL Symbol Set id: 19U\n\tWindows31Latin1 MIB = 2001\n\n\t// Windows31Latin2 is the MIB identifier with IANA name ISO-8859-2-Windows-Latin-2.\n\t//\n\t// Extended ISO 8859-2.  Latin-2 for Windows 3.1.\n\t// PCL Symbol Set id: 9E\n\tWindows31Latin2 MIB = 2002\n\n\t// Windows31Latin5 is the MIB identifier with IANA name ISO-8859-9-Windows-Latin-5.\n\t//\n\t// Extended ISO 8859-9.  Latin-5 for Windows 3.1\n\t// PCL Symbol Set id: 5T\n\tWindows31Latin5 MIB = 2003\n\n\t// HPRoman8 is the MIB identifier with IANA name hp-roman8.\n\t//\n\t// LaserJet IIP Printer User's Manual,\n\t// HP part no 33471-90901, Hewlet-Packard, June 1989.\n\t// Reference: RFC1345\n\tHPRoman8 MIB = 2004\n\n\t// AdobeStandardEncoding is the MIB identifier with IANA name Adobe-Standard-Encoding.\n\t//\n\t// PostScript Language Reference Manual\n\t// PCL Symbol Set id: 10J\n\tAdobeStandardEncoding MIB = 2005\n\n\t// VenturaUS is the MIB identifier with IANA name Ventura-US.\n\t//\n\t// Ventura US.  ASCII plus characters typically used in\n\t// publishing, like pilcrow, copyright, registered, trade mark,\n\t// section, dagger, and double dagger in the range A0 (hex)\n\t// to FF (hex).\n\t// PCL Symbol Set id: 14J\n\tVenturaUS MIB = 2006\n\n\t// VenturaInternational is the MIB identifier with IANA name Ventura-International.\n\t//\n\t// Ventura International.  ASCII plus coded characters similar\n\t// to Roman8.\n\t// PCL Symbol Set id: 13J\n\tVenturaInternational MIB = 2007\n\n\t// DECMCS is the MIB identifier with IANA name DEC-MCS.\n\t//\n\t// VAX/VMS User's Manual,\n\t// Order Number: AI-Y517A-TE, April 1986.\n\t// Reference: RFC1345\n\tDECMCS MIB = 2008\n\n\t// PC850Multilingual is the MIB identifier with IANA name IBM850.\n\t//\n\t// IBM NLS RM Vol2 SE09-8002-01, March 1990\n\t// Reference: RFC1345\n\tPC850Multilingual MIB = 2009\n\n\t// PC8DanishNorwegian is the MIB identifier with IANA name PC8-Danish-Norwegian.\n\t//\n\t// PC Danish Norwegian\n\t// 8-bit PC set for Danish Norwegian\n\t// PCL Symbol Set id: 11U\n\tPC8DanishNorwegian MIB = 2012\n\n\t// PC862LatinHebrew is the MIB identifier with IANA name IBM862.\n\t//\n\t// IBM NLS RM Vol2 SE09-8002-01, March 1990\n\t// Reference: RFC1345\n\tPC862LatinHebrew MIB = 2013\n\n\t// PC8Turkish is the MIB identifier with IANA name PC8-Turkish.\n\t//\n\t// PC Latin Turkish.  PCL Symbol Set id: 9T\n\tPC8Turkish MIB = 2014\n\n\t// IBMSymbols is the MIB identifier with IANA name IBM-Symbols.\n\t//\n\t// Presentation Set, CPGID: 259\n\tIBMSymbols MIB = 2015\n\n\t// IBMThai is the MIB identifier with IANA name IBM-Thai.\n\t//\n\t// Presentation Set, CPGID: 838\n\tIBMThai MIB = 2016\n\n\t// HPLegal is the MIB identifier with IANA name HP-Legal.\n\t//\n\t// PCL 5 Comparison Guide, Hewlett-Packard,\n\t// HP part number 5961-0510, October 1992\n\t// PCL Symbol Set id: 1U\n\tHPLegal MIB = 2017\n\n\t// HPPiFont is the MIB identifier with IANA name HP-Pi-font.\n\t//\n\t// PCL 5 Comparison Guide, Hewlett-Packard,\n\t// HP part number 5961-0510, October 1992\n\t// PCL Symbol Set id: 15U\n\tHPPiFont MIB = 2018\n\n\t// HPMath8 is the MIB identifier with IANA name HP-Math8.\n\t//\n\t// PCL 5 Comparison Guide, Hewlett-Packard,\n\t// HP part number 5961-0510, October 1992\n\t// PCL Symbol Set id: 8M\n\tHPMath8 MIB = 2019\n\n\t// HPPSMath is the MIB identifier with IANA name Adobe-Symbol-Encoding.\n\t//\n\t// PostScript Language Reference Manual\n\t// PCL Symbol Set id: 5M\n\tHPPSMath MIB = 2020\n\n\t// HPDesktop is the MIB identifier with IANA name HP-DeskTop.\n\t//\n\t// PCL 5 Comparison Guide, Hewlett-Packard,\n\t// HP part number 5961-0510, October 1992\n\t// PCL Symbol Set id: 7J\n\tHPDesktop MIB = 2021\n\n\t// VenturaMath is the MIB identifier with IANA name Ventura-Math.\n\t//\n\t// PCL 5 Comparison Guide, Hewlett-Packard,\n\t// HP part number 5961-0510, October 1992\n\t// PCL Symbol Set id: 6M\n\tVenturaMath MIB = 2022\n\n\t// MicrosoftPublishing is the MIB identifier with IANA name Microsoft-Publishing.\n\t//\n\t// PCL 5 Comparison Guide, Hewlett-Packard,\n\t// HP part number 5961-0510, October 1992\n\t// PCL Symbol Set id: 6J\n\tMicrosoftPublishing MIB = 2023\n\n\t// Windows31J is the MIB identifier with IANA name Windows-31J.\n\t//\n\t// Windows Japanese.  A further extension of Shift_JIS\n\t// to include NEC special characters (Row 13), NEC\n\t// selection of IBM extensions (Rows 89 to 92), and IBM\n\t// extensions (Rows 115 to 119).  The CCS's are\n\t// JIS X0201:1997, JIS X0208:1997, and these extensions.\n\t// This charset can be used for the top-level media type \"text\",\n\t// but it is of limited or specialized use (see rfc2278 ).\n\t// PCL Symbol Set id: 19K\n\tWindows31J MIB = 2024\n\n\t// GB2312 is the MIB identifier with IANA name GB2312 (MIME: GB2312).\n\t//\n\t// Chinese for People's Republic of China (PRC) mixed one byte,\n\t// two byte set:\n\t// 20-7E = one byte ASCII\n\t// A1-FE = two byte PRC Kanji\n\t// See GB 2312-80\n\t// PCL Symbol Set Id: 18C\n\tGB2312 MIB = 2025\n\n\t// Big5 is the MIB identifier with IANA name Big5 (MIME: Big5).\n\t//\n\t// Chinese for Taiwan Multi-byte set.\n\t// PCL Symbol Set Id: 18T\n\tBig5 MIB = 2026\n\n\t// Macintosh is the MIB identifier with IANA name macintosh.\n\t//\n\t// The Unicode Standard ver1.0, ISBN 0-201-56788-1, Oct 1991\n\t// Reference: RFC1345\n\tMacintosh MIB = 2027\n\n\t// IBM037 is the MIB identifier with IANA name IBM037.\n\t//\n\t// IBM NLS RM Vol2 SE09-8002-01, March 1990\n\t// Reference: RFC1345\n\tIBM037 MIB = 2028\n\n\t// IBM038 is the MIB identifier with IANA name IBM038.\n\t//\n\t// IBM 3174 Character Set Ref, GA27-3831-02, March 1990\n\t// Reference: RFC1345\n\tIBM038 MIB = 2029\n\n\t// IBM273 is the MIB identifier with IANA name IBM273.\n\t//\n\t// IBM NLS RM Vol2 SE09-8002-01, March 1990\n\t// Reference: RFC1345\n\tIBM273 MIB = 2030\n\n\t// IBM274 is the MIB identifier with IANA name IBM274.\n\t//\n\t// IBM 3174 Character Set Ref, GA27-3831-02, March 1990\n\t// Reference: RFC1345\n\tIBM274 MIB = 2031\n\n\t// IBM275 is the MIB identifier with IANA name IBM275.\n\t//\n\t// IBM NLS RM Vol2 SE09-8002-01, March 1990\n\t// Reference: RFC1345\n\tIBM275 MIB = 2032\n\n\t// IBM277 is the MIB identifier with IANA name IBM277.\n\t//\n\t// IBM NLS RM Vol2 SE09-8002-01, March 1990\n\t// Reference: RFC1345\n\tIBM277 MIB = 2033\n\n\t// IBM278 is the MIB identifier with IANA name IBM278.\n\t//\n\t// IBM NLS RM Vol2 SE09-8002-01, March 1990\n\t// Reference: RFC1345\n\tIBM278 MIB = 2034\n\n\t// IBM280 is the MIB identifier with IANA name IBM280.\n\t//\n\t// IBM NLS RM Vol2 SE09-8002-01, March 1990\n\t// Reference: RFC1345\n\tIBM280 MIB = 2035\n\n\t// IBM281 is the MIB identifier with IANA name IBM281.\n\t//\n\t// IBM 3174 Character Set Ref, GA27-3831-02, March 1990\n\t// Reference: RFC1345\n\tIBM281 MIB = 2036\n\n\t// IBM284 is the MIB identifier with IANA name IBM284.\n\t//\n\t// IBM NLS RM Vol2 SE09-8002-01, March 1990\n\t// Reference: RFC1345\n\tIBM284 MIB = 2037\n\n\t// IBM285 is the MIB identifier with IANA name IBM285.\n\t//\n\t// IBM NLS RM Vol2 SE09-8002-01, March 1990\n\t// Reference: RFC1345\n\tIBM285 MIB = 2038\n\n\t// IBM290 is the MIB identifier with IANA name IBM290.\n\t//\n\t// IBM 3174 Character Set Ref, GA27-3831-02, March 1990\n\t// Reference: RFC1345\n\tIBM290 MIB = 2039\n\n\t// IBM297 is the MIB identifier with IANA name IBM297.\n\t//\n\t// IBM NLS RM Vol2 SE09-8002-01, March 1990\n\t// Reference: RFC1345\n\tIBM297 MIB = 2040\n\n\t// IBM420 is the MIB identifier with IANA name IBM420.\n\t//\n\t// IBM NLS RM Vol2 SE09-8002-01, March 1990,\n\t// IBM NLS RM p 11-11\n\t// Reference: RFC1345\n\tIBM420 MIB = 2041\n\n\t// IBM423 is the MIB identifier with IANA name IBM423.\n\t//\n\t// IBM NLS RM Vol2 SE09-8002-01, March 1990\n\t// Reference: RFC1345\n\tIBM423 MIB = 2042\n\n\t// IBM424 is the MIB identifier with IANA name IBM424.\n\t//\n\t// IBM NLS RM Vol2 SE09-8002-01, March 1990\n\t// Reference: RFC1345\n\tIBM424 MIB = 2043\n\n\t// PC8CodePage437 is the MIB identifier with IANA name IBM437.\n\t//\n\t// IBM NLS RM Vol2 SE09-8002-01, March 1990\n\t// Reference: RFC1345\n\tPC8CodePage437 MIB = 2011\n\n\t// IBM500 is the MIB identifier with IANA name IBM500.\n\t//\n\t// IBM NLS RM Vol2 SE09-8002-01, March 1990\n\t// Reference: RFC1345\n\tIBM500 MIB = 2044\n\n\t// IBM851 is the MIB identifier with IANA name IBM851.\n\t//\n\t// IBM NLS RM Vol2 SE09-8002-01, March 1990\n\t// Reference: RFC1345\n\tIBM851 MIB = 2045\n\n\t// PCp852 is the MIB identifier with IANA name IBM852.\n\t//\n\t// IBM NLS RM Vol2 SE09-8002-01, March 1990\n\t// Reference: RFC1345\n\tPCp852 MIB = 2010\n\n\t// IBM855 is the MIB identifier with IANA name IBM855.\n\t//\n\t// IBM NLS RM Vol2 SE09-8002-01, March 1990\n\t// Reference: RFC1345\n\tIBM855 MIB = 2046\n\n\t// IBM857 is the MIB identifier with IANA name IBM857.\n\t//\n\t// IBM NLS RM Vol2 SE09-8002-01, March 1990\n\t// Reference: RFC1345\n\tIBM857 MIB = 2047\n\n\t// IBM860 is the MIB identifier with IANA name IBM860.\n\t//\n\t// IBM NLS RM Vol2 SE09-8002-01, March 1990\n\t// Reference: RFC1345\n\tIBM860 MIB = 2048\n\n\t// IBM861 is the MIB identifier with IANA name IBM861.\n\t//\n\t// IBM NLS RM Vol2 SE09-8002-01, March 1990\n\t// Reference: RFC1345\n\tIBM861 MIB = 2049\n\n\t// IBM863 is the MIB identifier with IANA name IBM863.\n\t//\n\t// IBM Keyboard layouts and code pages, PN 07G4586 June 1991\n\t// Reference: RFC1345\n\tIBM863 MIB = 2050\n\n\t// IBM864 is the MIB identifier with IANA name IBM864.\n\t//\n\t// IBM Keyboard layouts and code pages, PN 07G4586 June 1991\n\t// Reference: RFC1345\n\tIBM864 MIB = 2051\n\n\t// IBM865 is the MIB identifier with IANA name IBM865.\n\t//\n\t// IBM DOS 3.3 Ref (Abridged), 94X9575 (Feb 1987)\n\t// Reference: RFC1345\n\tIBM865 MIB = 2052\n\n\t// IBM868 is the MIB identifier with IANA name IBM868.\n\t//\n\t// IBM NLS RM Vol2 SE09-8002-01, March 1990\n\t// Reference: RFC1345\n\tIBM868 MIB = 2053\n\n\t// IBM869 is the MIB identifier with IANA name IBM869.\n\t//\n\t// IBM Keyboard layouts and code pages, PN 07G4586 June 1991\n\t// Reference: RFC1345\n\tIBM869 MIB = 2054\n\n\t// IBM870 is the MIB identifier with IANA name IBM870.\n\t//\n\t// IBM NLS RM Vol2 SE09-8002-01, March 1990\n\t// Reference: RFC1345\n\tIBM870 MIB = 2055\n\n\t// IBM871 is the MIB identifier with IANA name IBM871.\n\t//\n\t// IBM NLS RM Vol2 SE09-8002-01, March 1990\n\t// Reference: RFC1345\n\tIBM871 MIB = 2056\n\n\t// IBM880 is the MIB identifier with IANA name IBM880.\n\t//\n\t// IBM NLS RM Vol2 SE09-8002-01, March 1990\n\t// Reference: RFC1345\n\tIBM880 MIB = 2057\n\n\t// IBM891 is the MIB identifier with IANA name IBM891.\n\t//\n\t// IBM NLS RM Vol2 SE09-8002-01, March 1990\n\t// Reference: RFC1345\n\tIBM891 MIB = 2058\n\n\t// IBM903 is the MIB identifier with IANA name IBM903.\n\t//\n\t// IBM NLS RM Vol2 SE09-8002-01, March 1990\n\t// Reference: RFC1345\n\tIBM903 MIB = 2059\n\n\t// IBBM904 is the MIB identifier with IANA name IBM904.\n\t//\n\t// IBM NLS RM Vol2 SE09-8002-01, March 1990\n\t// Reference: RFC1345\n\tIBBM904 MIB = 2060\n\n\t// IBM905 is the MIB identifier with IANA name IBM905.\n\t//\n\t// IBM 3174 Character Set Ref, GA27-3831-02, March 1990\n\t// Reference: RFC1345\n\tIBM905 MIB = 2061\n\n\t// IBM918 is the MIB identifier with IANA name IBM918.\n\t//\n\t// IBM NLS RM Vol2 SE09-8002-01, March 1990\n\t// Reference: RFC1345\n\tIBM918 MIB = 2062\n\n\t// IBM1026 is the MIB identifier with IANA name IBM1026.\n\t//\n\t// IBM NLS RM Vol2 SE09-8002-01, March 1990\n\t// Reference: RFC1345\n\tIBM1026 MIB = 2063\n\n\t// IBMEBCDICATDE is the MIB identifier with IANA name EBCDIC-AT-DE.\n\t//\n\t// IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987\n\t// Reference: RFC1345\n\tIBMEBCDICATDE MIB = 2064\n\n\t// EBCDICATDEA is the MIB identifier with IANA name EBCDIC-AT-DE-A.\n\t//\n\t// IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987\n\t// Reference: RFC1345\n\tEBCDICATDEA MIB = 2065\n\n\t// EBCDICCAFR is the MIB identifier with IANA name EBCDIC-CA-FR.\n\t//\n\t// IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987\n\t// Reference: RFC1345\n\tEBCDICCAFR MIB = 2066\n\n\t// EBCDICDKNO is the MIB identifier with IANA name EBCDIC-DK-NO.\n\t//\n\t// IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987\n\t// Reference: RFC1345\n\tEBCDICDKNO MIB = 2067\n\n\t// EBCDICDKNOA is the MIB identifier with IANA name EBCDIC-DK-NO-A.\n\t//\n\t// IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987\n\t// Reference: RFC1345\n\tEBCDICDKNOA MIB = 2068\n\n\t// EBCDICFISE is the MIB identifier with IANA name EBCDIC-FI-SE.\n\t//\n\t// IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987\n\t// Reference: RFC1345\n\tEBCDICFISE MIB = 2069\n\n\t// EBCDICFISEA is the MIB identifier with IANA name EBCDIC-FI-SE-A.\n\t//\n\t// IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987\n\t// Reference: RFC1345\n\tEBCDICFISEA MIB = 2070\n\n\t// EBCDICFR is the MIB identifier with IANA name EBCDIC-FR.\n\t//\n\t// IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987\n\t// Reference: RFC1345\n\tEBCDICFR MIB = 2071\n\n\t// EBCDICIT is the MIB identifier with IANA name EBCDIC-IT.\n\t//\n\t// IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987\n\t// Reference: RFC1345\n\tEBCDICIT MIB = 2072\n\n\t// EBCDICPT is the MIB identifier with IANA name EBCDIC-PT.\n\t//\n\t// IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987\n\t// Reference: RFC1345\n\tEBCDICPT MIB = 2073\n\n\t// EBCDICES is the MIB identifier with IANA name EBCDIC-ES.\n\t//\n\t// IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987\n\t// Reference: RFC1345\n\tEBCDICES MIB = 2074\n\n\t// EBCDICESA is the MIB identifier with IANA name EBCDIC-ES-A.\n\t//\n\t// IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987\n\t// Reference: RFC1345\n\tEBCDICESA MIB = 2075\n\n\t// EBCDICESS is the MIB identifier with IANA name EBCDIC-ES-S.\n\t//\n\t// IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987\n\t// Reference: RFC1345\n\tEBCDICESS MIB = 2076\n\n\t// EBCDICUK is the MIB identifier with IANA name EBCDIC-UK.\n\t//\n\t// IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987\n\t// Reference: RFC1345\n\tEBCDICUK MIB = 2077\n\n\t// EBCDICUS is the MIB identifier with IANA name EBCDIC-US.\n\t//\n\t// IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987\n\t// Reference: RFC1345\n\tEBCDICUS MIB = 2078\n\n\t// Unknown8BiT is the MIB identifier with IANA name UNKNOWN-8BIT.\n\t//\n\t// Reference: RFC1428\n\tUnknown8BiT MIB = 2079\n\n\t// Mnemonic is the MIB identifier with IANA name MNEMONIC.\n\t//\n\t// rfc1345 , also known as \"mnemonic+ascii+38\"\n\t// Reference: RFC1345\n\tMnemonic MIB = 2080\n\n\t// Mnem is the MIB identifier with IANA name MNEM.\n\t//\n\t// rfc1345 , also known as \"mnemonic+ascii+8200\"\n\t// Reference: RFC1345\n\tMnem MIB = 2081\n\n\t// VISCII is the MIB identifier with IANA name VISCII.\n\t//\n\t// rfc1456\n\t// Reference: RFC1456\n\tVISCII MIB = 2082\n\n\t// VIQR is the MIB identifier with IANA name VIQR.\n\t//\n\t// rfc1456\n\t// Reference: RFC1456\n\tVIQR MIB = 2083\n\n\t// KOI8R is the MIB identifier with IANA name KOI8-R (MIME: KOI8-R).\n\t//\n\t// rfc1489 , based on GOST-19768-74, ISO-6937/8,\n\t// INIS-Cyrillic, ISO-5427.\n\t// Reference: RFC1489\n\tKOI8R MIB = 2084\n\n\t// HZGB2312 is the MIB identifier with IANA name HZ-GB-2312.\n\t//\n\t// rfc1842 , rfc1843 rfc1843 rfc1842\n\tHZGB2312 MIB = 2085\n\n\t// IBM866 is the MIB identifier with IANA name IBM866.\n\t//\n\t// IBM NLDG Volume 2 (SE09-8002-03) August 1994\n\tIBM866 MIB = 2086\n\n\t// PC775Baltic is the MIB identifier with IANA name IBM775.\n\t//\n\t// HP PCL 5 Comparison Guide (P/N 5021-0329) pp B-13, 1996\n\tPC775Baltic MIB = 2087\n\n\t// KOI8U is the MIB identifier with IANA name KOI8-U.\n\t//\n\t// rfc2319\n\t// Reference: RFC2319\n\tKOI8U MIB = 2088\n\n\t// IBM00858 is the MIB identifier with IANA name IBM00858.\n\t//\n\t// IBM See https://www.iana.org/assignments/charset-reg/IBM00858\n\tIBM00858 MIB = 2089\n\n\t// IBM00924 is the MIB identifier with IANA name IBM00924.\n\t//\n\t// IBM See https://www.iana.org/assignments/charset-reg/IBM00924\n\tIBM00924 MIB = 2090\n\n\t// IBM01140 is the MIB identifier with IANA name IBM01140.\n\t//\n\t// IBM See https://www.iana.org/assignments/charset-reg/IBM01140\n\tIBM01140 MIB = 2091\n\n\t// IBM01141 is the MIB identifier with IANA name IBM01141.\n\t//\n\t// IBM See https://www.iana.org/assignments/charset-reg/IBM01141\n\tIBM01141 MIB = 2092\n\n\t// IBM01142 is the MIB identifier with IANA name IBM01142.\n\t//\n\t// IBM See https://www.iana.org/assignments/charset-reg/IBM01142\n\tIBM01142 MIB = 2093\n\n\t// IBM01143 is the MIB identifier with IANA name IBM01143.\n\t//\n\t// IBM See https://www.iana.org/assignments/charset-reg/IBM01143\n\tIBM01143 MIB = 2094\n\n\t// IBM01144 is the MIB identifier with IANA name IBM01144.\n\t//\n\t// IBM See https://www.iana.org/assignments/charset-reg/IBM01144\n\tIBM01144 MIB = 2095\n\n\t// IBM01145 is the MIB identifier with IANA name IBM01145.\n\t//\n\t// IBM See https://www.iana.org/assignments/charset-reg/IBM01145\n\tIBM01145 MIB = 2096\n\n\t// IBM01146 is the MIB identifier with IANA name IBM01146.\n\t//\n\t// IBM See https://www.iana.org/assignments/charset-reg/IBM01146\n\tIBM01146 MIB = 2097\n\n\t// IBM01147 is the MIB identifier with IANA name IBM01147.\n\t//\n\t// IBM See https://www.iana.org/assignments/charset-reg/IBM01147\n\tIBM01147 MIB = 2098\n\n\t// IBM01148 is the MIB identifier with IANA name IBM01148.\n\t//\n\t// IBM See https://www.iana.org/assignments/charset-reg/IBM01148\n\tIBM01148 MIB = 2099\n\n\t// IBM01149 is the MIB identifier with IANA name IBM01149.\n\t//\n\t// IBM See https://www.iana.org/assignments/charset-reg/IBM01149\n\tIBM01149 MIB = 2100\n\n\t// Big5HKSCS is the MIB identifier with IANA name Big5-HKSCS.\n\t//\n\t// See https://www.iana.org/assignments/charset-reg/Big5-HKSCS\n\tBig5HKSCS MIB = 2101\n\n\t// IBM1047 is the MIB identifier with IANA name IBM1047.\n\t//\n\t// IBM1047 (EBCDIC Latin 1/Open Systems) https://www-1.ibm.com/servers/eserver/iseries/software/globalization/pdf/cp01047z.pdf\n\tIBM1047 MIB = 2102\n\n\t// PTCP154 is the MIB identifier with IANA name PTCP154.\n\t//\n\t// See https://www.iana.org/assignments/charset-reg/PTCP154\n\tPTCP154 MIB = 2103\n\n\t// Amiga1251 is the MIB identifier with IANA name Amiga-1251.\n\t//\n\t// See https://www.amiga.ultranet.ru/Amiga-1251.html\n\tAmiga1251 MIB = 2104\n\n\t// KOI7switched is the MIB identifier with IANA name KOI7-switched.\n\t//\n\t// See https://www.iana.org/assignments/charset-reg/KOI7-switched\n\tKOI7switched MIB = 2105\n\n\t// BRF is the MIB identifier with IANA name BRF.\n\t//\n\t// See https://www.iana.org/assignments/charset-reg/BRF\n\tBRF MIB = 2106\n\n\t// TSCII is the MIB identifier with IANA name TSCII.\n\t//\n\t// See https://www.iana.org/assignments/charset-reg/TSCII\n\tTSCII MIB = 2107\n\n\t// CP51932 is the MIB identifier with IANA name CP51932.\n\t//\n\t// See https://www.iana.org/assignments/charset-reg/CP51932\n\tCP51932 MIB = 2108\n\n\t// Windows874 is the MIB identifier with IANA name windows-874.\n\t//\n\t// See https://www.iana.org/assignments/charset-reg/windows-874\n\tWindows874 MIB = 2109\n\n\t// Windows1250 is the MIB identifier with IANA name windows-1250.\n\t//\n\t// Microsoft https://www.iana.org/assignments/charset-reg/windows-1250\n\tWindows1250 MIB = 2250\n\n\t// Windows1251 is the MIB identifier with IANA name windows-1251.\n\t//\n\t// Microsoft https://www.iana.org/assignments/charset-reg/windows-1251\n\tWindows1251 MIB = 2251\n\n\t// Windows1252 is the MIB identifier with IANA name windows-1252.\n\t//\n\t// Microsoft https://www.iana.org/assignments/charset-reg/windows-1252\n\tWindows1252 MIB = 2252\n\n\t// Windows1253 is the MIB identifier with IANA name windows-1253.\n\t//\n\t// Microsoft https://www.iana.org/assignments/charset-reg/windows-1253\n\tWindows1253 MIB = 2253\n\n\t// Windows1254 is the MIB identifier with IANA name windows-1254.\n\t//\n\t// Microsoft https://www.iana.org/assignments/charset-reg/windows-1254\n\tWindows1254 MIB = 2254\n\n\t// Windows1255 is the MIB identifier with IANA name windows-1255.\n\t//\n\t// Microsoft https://www.iana.org/assignments/charset-reg/windows-1255\n\tWindows1255 MIB = 2255\n\n\t// Windows1256 is the MIB identifier with IANA name windows-1256.\n\t//\n\t// Microsoft https://www.iana.org/assignments/charset-reg/windows-1256\n\tWindows1256 MIB = 2256\n\n\t// Windows1257 is the MIB identifier with IANA name windows-1257.\n\t//\n\t// Microsoft https://www.iana.org/assignments/charset-reg/windows-1257\n\tWindows1257 MIB = 2257\n\n\t// Windows1258 is the MIB identifier with IANA name windows-1258.\n\t//\n\t// Microsoft https://www.iana.org/assignments/charset-reg/windows-1258\n\tWindows1258 MIB = 2258\n\n\t// TIS620 is the MIB identifier with IANA name TIS-620.\n\t//\n\t// Thai Industrial Standards Institute (TISI)\n\tTIS620 MIB = 2259\n\n\t// CP50220 is the MIB identifier with IANA name CP50220.\n\t//\n\t// See https://www.iana.org/assignments/charset-reg/CP50220\n\tCP50220 MIB = 2260\n)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/text/encoding/internal/internal.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package internal contains code that is shared among encoding implementations.\npackage internal\n\nimport (\n\t\"golang.org/x/text/encoding\"\n\t\"golang.org/x/text/encoding/internal/identifier\"\n\t\"golang.org/x/text/transform\"\n)\n\n// Encoding is an implementation of the Encoding interface that adds the String\n// and ID methods to an existing encoding.\ntype Encoding struct {\n\tencoding.Encoding\n\tName string\n\tMIB  identifier.MIB\n}\n\n// _ verifies that Encoding implements identifier.Interface.\nvar _ identifier.Interface = (*Encoding)(nil)\n\nfunc (e *Encoding) String() string {\n\treturn e.Name\n}\n\nfunc (e *Encoding) ID() (mib identifier.MIB, other string) {\n\treturn e.MIB, \"\"\n}\n\n// SimpleEncoding is an Encoding that combines two Transformers.\ntype SimpleEncoding struct {\n\tDecoder transform.Transformer\n\tEncoder transform.Transformer\n}\n\nfunc (e *SimpleEncoding) NewDecoder() *encoding.Decoder {\n\treturn &encoding.Decoder{Transformer: e.Decoder}\n}\n\nfunc (e *SimpleEncoding) NewEncoder() *encoding.Encoder {\n\treturn &encoding.Encoder{Transformer: e.Encoder}\n}\n\n// FuncEncoding is an Encoding that combines two functions returning a new\n// Transformer.\ntype FuncEncoding struct {\n\tDecoder func() transform.Transformer\n\tEncoder func() transform.Transformer\n}\n\nfunc (e FuncEncoding) NewDecoder() *encoding.Decoder {\n\treturn &encoding.Decoder{Transformer: e.Decoder()}\n}\n\nfunc (e FuncEncoding) NewEncoder() *encoding.Encoder {\n\treturn &encoding.Encoder{Transformer: e.Encoder()}\n}\n\n// A RepertoireError indicates a rune is not in the repertoire of a destination\n// encoding. It is associated with an encoding-specific suggested replacement\n// byte.\ntype RepertoireError byte\n\n// Error implements the error interface.\nfunc (r RepertoireError) Error() string {\n\treturn \"encoding: rune not supported by encoding.\"\n}\n\n// Replacement returns the replacement string associated with this error.\nfunc (r RepertoireError) Replacement() byte { return byte(r) }\n\nvar ErrASCIIReplacement = RepertoireError(encoding.ASCIISub)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/text/encoding/japanese/all.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage japanese\n\nimport (\n\t\"golang.org/x/text/encoding\"\n)\n\n// All is a list of all defined encodings in this package.\nvar All = []encoding.Encoding{EUCJP, ISO2022JP, ShiftJIS}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/text/encoding/japanese/eucjp.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage japanese\n\nimport (\n\t\"unicode/utf8\"\n\n\t\"golang.org/x/text/encoding\"\n\t\"golang.org/x/text/encoding/internal\"\n\t\"golang.org/x/text/encoding/internal/identifier\"\n\t\"golang.org/x/text/transform\"\n)\n\n// EUCJP is the EUC-JP encoding.\nvar EUCJP encoding.Encoding = &eucJP\n\nvar eucJP = internal.Encoding{\n\tEncoding: &internal.SimpleEncoding{Decoder: eucJPDecoder{}, Encoder: eucJPEncoder{}},\n\tName:     \"EUC-JP\",\n\tMIB:      identifier.EUCPkdFmtJapanese,\n}\n\ntype eucJPDecoder struct{ transform.NopResetter }\n\n// See https://encoding.spec.whatwg.org/#euc-jp-decoder.\nfunc (eucJPDecoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {\n\tr, size := rune(0), 0\nloop:\n\tfor ; nSrc < len(src); nSrc += size {\n\t\tswitch c0 := src[nSrc]; {\n\t\tcase c0 < utf8.RuneSelf:\n\t\t\tr, size = rune(c0), 1\n\n\t\tcase c0 == 0x8e:\n\t\t\tif nSrc+1 >= len(src) {\n\t\t\t\tif !atEOF {\n\t\t\t\t\terr = transform.ErrShortSrc\n\t\t\t\t\tbreak loop\n\t\t\t\t}\n\t\t\t\tr, size = utf8.RuneError, 1\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tc1 := src[nSrc+1]\n\t\t\tswitch {\n\t\t\tcase c1 < 0xa1:\n\t\t\t\tr, size = utf8.RuneError, 1\n\t\t\tcase c1 > 0xdf:\n\t\t\t\tr, size = utf8.RuneError, 2\n\t\t\t\tif c1 == 0xff {\n\t\t\t\t\tsize = 1\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tr, size = rune(c1)+(0xff61-0xa1), 2\n\t\t\t}\n\t\tcase c0 == 0x8f:\n\t\t\tif nSrc+2 >= len(src) {\n\t\t\t\tif !atEOF {\n\t\t\t\t\terr = transform.ErrShortSrc\n\t\t\t\t\tbreak loop\n\t\t\t\t}\n\t\t\t\tr, size = utf8.RuneError, 1\n\t\t\t\tif p := nSrc + 1; p < len(src) && 0xa1 <= src[p] && src[p] < 0xfe {\n\t\t\t\t\tsize = 2\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tc1 := src[nSrc+1]\n\t\t\tif c1 < 0xa1 || 0xfe < c1 {\n\t\t\t\tr, size = utf8.RuneError, 1\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tc2 := src[nSrc+2]\n\t\t\tif c2 < 0xa1 || 0xfe < c2 {\n\t\t\t\tr, size = utf8.RuneError, 2\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tr, size = utf8.RuneError, 3\n\t\t\tif i := int(c1-0xa1)*94 + int(c2-0xa1); i < len(jis0212Decode) {\n\t\t\t\tr = rune(jis0212Decode[i])\n\t\t\t\tif r == 0 {\n\t\t\t\t\tr = utf8.RuneError\n\t\t\t\t}\n\t\t\t}\n\n\t\tcase 0xa1 <= c0 && c0 <= 0xfe:\n\t\t\tif nSrc+1 >= len(src) {\n\t\t\t\tif !atEOF {\n\t\t\t\t\terr = transform.ErrShortSrc\n\t\t\t\t\tbreak loop\n\t\t\t\t}\n\t\t\t\tr, size = utf8.RuneError, 1\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tc1 := src[nSrc+1]\n\t\t\tif c1 < 0xa1 || 0xfe < c1 {\n\t\t\t\tr, size = utf8.RuneError, 1\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tr, size = utf8.RuneError, 2\n\t\t\tif i := int(c0-0xa1)*94 + int(c1-0xa1); i < len(jis0208Decode) {\n\t\t\t\tr = rune(jis0208Decode[i])\n\t\t\t\tif r == 0 {\n\t\t\t\t\tr = utf8.RuneError\n\t\t\t\t}\n\t\t\t}\n\n\t\tdefault:\n\t\t\tr, size = utf8.RuneError, 1\n\t\t}\n\n\t\tif nDst+utf8.RuneLen(r) > len(dst) {\n\t\t\terr = transform.ErrShortDst\n\t\t\tbreak loop\n\t\t}\n\t\tnDst += utf8.EncodeRune(dst[nDst:], r)\n\t}\n\treturn nDst, nSrc, err\n}\n\ntype eucJPEncoder struct{ transform.NopResetter }\n\nfunc (eucJPEncoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {\n\tr, size := rune(0), 0\n\tfor ; nSrc < len(src); nSrc += size {\n\t\tr = rune(src[nSrc])\n\n\t\t// Decode a 1-byte rune.\n\t\tif r < utf8.RuneSelf {\n\t\t\tsize = 1\n\n\t\t} else {\n\t\t\t// Decode a multi-byte rune.\n\t\t\tr, size = utf8.DecodeRune(src[nSrc:])\n\t\t\tif size == 1 {\n\t\t\t\t// All valid runes of size 1 (those below utf8.RuneSelf) were\n\t\t\t\t// handled above. We have invalid UTF-8 or we haven't seen the\n\t\t\t\t// full character yet.\n\t\t\t\tif !atEOF && !utf8.FullRune(src[nSrc:]) {\n\t\t\t\t\terr = transform.ErrShortSrc\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// func init checks that the switch covers all tables.\n\t\t\tswitch {\n\t\t\tcase encode0Low <= r && r < encode0High:\n\t\t\t\tif r = rune(encode0[r-encode0Low]); r != 0 {\n\t\t\t\t\tgoto write2or3\n\t\t\t\t}\n\t\t\tcase encode1Low <= r && r < encode1High:\n\t\t\t\tif r = rune(encode1[r-encode1Low]); r != 0 {\n\t\t\t\t\tgoto write2or3\n\t\t\t\t}\n\t\t\tcase encode2Low <= r && r < encode2High:\n\t\t\t\tif r = rune(encode2[r-encode2Low]); r != 0 {\n\t\t\t\t\tgoto write2or3\n\t\t\t\t}\n\t\t\tcase encode3Low <= r && r < encode3High:\n\t\t\t\tif r = rune(encode3[r-encode3Low]); r != 0 {\n\t\t\t\t\tgoto write2or3\n\t\t\t\t}\n\t\t\tcase encode4Low <= r && r < encode4High:\n\t\t\t\tif r = rune(encode4[r-encode4Low]); r != 0 {\n\t\t\t\t\tgoto write2or3\n\t\t\t\t}\n\t\t\tcase encode5Low <= r && r < encode5High:\n\t\t\t\tif 0xff61 <= r && r < 0xffa0 {\n\t\t\t\t\tgoto write2\n\t\t\t\t}\n\t\t\t\tif r = rune(encode5[r-encode5Low]); r != 0 {\n\t\t\t\t\tgoto write2or3\n\t\t\t\t}\n\t\t\t}\n\t\t\terr = internal.ErrASCIIReplacement\n\t\t\tbreak\n\t\t}\n\n\t\tif nDst >= len(dst) {\n\t\t\terr = transform.ErrShortDst\n\t\t\tbreak\n\t\t}\n\t\tdst[nDst] = uint8(r)\n\t\tnDst++\n\t\tcontinue\n\n\twrite2or3:\n\t\tif r>>tableShift == jis0208 {\n\t\t\tif nDst+2 > len(dst) {\n\t\t\t\terr = transform.ErrShortDst\n\t\t\t\tbreak\n\t\t\t}\n\t\t} else {\n\t\t\tif nDst+3 > len(dst) {\n\t\t\t\terr = transform.ErrShortDst\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tdst[nDst] = 0x8f\n\t\t\tnDst++\n\t\t}\n\t\tdst[nDst+0] = 0xa1 + uint8(r>>codeShift)&codeMask\n\t\tdst[nDst+1] = 0xa1 + uint8(r)&codeMask\n\t\tnDst += 2\n\t\tcontinue\n\n\twrite2:\n\t\tif nDst+2 > len(dst) {\n\t\t\terr = transform.ErrShortDst\n\t\t\tbreak\n\t\t}\n\t\tdst[nDst+0] = 0x8e\n\t\tdst[nDst+1] = uint8(r - (0xff61 - 0xa1))\n\t\tnDst += 2\n\t\tcontinue\n\t}\n\treturn nDst, nSrc, err\n}\n\nfunc init() {\n\t// Check that the hard-coded encode switch covers all tables.\n\tif numEncodeTables != 6 {\n\t\tpanic(\"bad numEncodeTables\")\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/text/encoding/japanese/iso2022jp.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage japanese\n\nimport (\n\t\"unicode/utf8\"\n\n\t\"golang.org/x/text/encoding\"\n\t\"golang.org/x/text/encoding/internal\"\n\t\"golang.org/x/text/encoding/internal/identifier\"\n\t\"golang.org/x/text/transform\"\n)\n\n// ISO2022JP is the ISO-2022-JP encoding.\nvar ISO2022JP encoding.Encoding = &iso2022JP\n\nvar iso2022JP = internal.Encoding{\n\tEncoding: internal.FuncEncoding{Decoder: iso2022JPNewDecoder, Encoder: iso2022JPNewEncoder},\n\tName:     \"ISO-2022-JP\",\n\tMIB:      identifier.ISO2022JP,\n}\n\nfunc iso2022JPNewDecoder() transform.Transformer {\n\treturn new(iso2022JPDecoder)\n}\n\nfunc iso2022JPNewEncoder() transform.Transformer {\n\treturn new(iso2022JPEncoder)\n}\n\nconst (\n\tasciiState = iota\n\tkatakanaState\n\tjis0208State\n\tjis0212State\n)\n\nconst asciiEsc = 0x1b\n\ntype iso2022JPDecoder int\n\nfunc (d *iso2022JPDecoder) Reset() {\n\t*d = asciiState\n}\n\nfunc (d *iso2022JPDecoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {\n\tr, size := rune(0), 0\n\tfor ; nSrc < len(src); nSrc += size {\n\t\tc0 := src[nSrc]\n\t\tif c0 >= utf8.RuneSelf {\n\t\t\tr, size = '\\ufffd', 1\n\t\t\tgoto write\n\t\t}\n\n\t\tif c0 == asciiEsc {\n\t\t\tif nSrc+2 >= len(src) {\n\t\t\t\tif !atEOF {\n\t\t\t\t\treturn nDst, nSrc, transform.ErrShortSrc\n\t\t\t\t}\n\t\t\t\t// TODO: is it correct to only skip 1??\n\t\t\t\tr, size = '\\ufffd', 1\n\t\t\t\tgoto write\n\t\t\t}\n\t\t\tsize = 3\n\t\t\tc1 := src[nSrc+1]\n\t\t\tc2 := src[nSrc+2]\n\t\t\tswitch {\n\t\t\tcase c1 == '$' && (c2 == '@' || c2 == 'B'): // 0x24 {0x40, 0x42}\n\t\t\t\t*d = jis0208State\n\t\t\t\tcontinue\n\t\t\tcase c1 == '$' && c2 == '(': // 0x24 0x28\n\t\t\t\tif nSrc+3 >= len(src) {\n\t\t\t\t\tif !atEOF {\n\t\t\t\t\t\treturn nDst, nSrc, transform.ErrShortSrc\n\t\t\t\t\t}\n\t\t\t\t\tr, size = '\\ufffd', 1\n\t\t\t\t\tgoto write\n\t\t\t\t}\n\t\t\t\tsize = 4\n\t\t\t\tif src[nSrc+3] == 'D' {\n\t\t\t\t\t*d = jis0212State\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\tcase c1 == '(' && (c2 == 'B' || c2 == 'J'): // 0x28 {0x42, 0x4A}\n\t\t\t\t*d = asciiState\n\t\t\t\tcontinue\n\t\t\tcase c1 == '(' && c2 == 'I': // 0x28 0x49\n\t\t\t\t*d = katakanaState\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tr, size = '\\ufffd', 1\n\t\t\tgoto write\n\t\t}\n\n\t\tswitch *d {\n\t\tcase asciiState:\n\t\t\tr, size = rune(c0), 1\n\n\t\tcase katakanaState:\n\t\t\tif c0 < 0x21 || 0x60 <= c0 {\n\t\t\t\tr, size = '\\ufffd', 1\n\t\t\t\tgoto write\n\t\t\t}\n\t\t\tr, size = rune(c0)+(0xff61-0x21), 1\n\n\t\tdefault:\n\t\t\tif c0 == 0x0a {\n\t\t\t\t*d = asciiState\n\t\t\t\tr, size = rune(c0), 1\n\t\t\t\tgoto write\n\t\t\t}\n\t\t\tif nSrc+1 >= len(src) {\n\t\t\t\tif !atEOF {\n\t\t\t\t\treturn nDst, nSrc, transform.ErrShortSrc\n\t\t\t\t}\n\t\t\t\tr, size = '\\ufffd', 1\n\t\t\t\tgoto write\n\t\t\t}\n\t\t\tsize = 2\n\t\t\tc1 := src[nSrc+1]\n\t\t\ti := int(c0-0x21)*94 + int(c1-0x21)\n\t\t\tif *d == jis0208State && i < len(jis0208Decode) {\n\t\t\t\tr = rune(jis0208Decode[i])\n\t\t\t} else if *d == jis0212State && i < len(jis0212Decode) {\n\t\t\t\tr = rune(jis0212Decode[i])\n\t\t\t} else {\n\t\t\t\tr = '\\ufffd'\n\t\t\t\tgoto write\n\t\t\t}\n\t\t\tif r == 0 {\n\t\t\t\tr = '\\ufffd'\n\t\t\t}\n\t\t}\n\n\twrite:\n\t\tif nDst+utf8.RuneLen(r) > len(dst) {\n\t\t\treturn nDst, nSrc, transform.ErrShortDst\n\t\t}\n\t\tnDst += utf8.EncodeRune(dst[nDst:], r)\n\t}\n\treturn nDst, nSrc, err\n}\n\ntype iso2022JPEncoder int\n\nfunc (e *iso2022JPEncoder) Reset() {\n\t*e = asciiState\n}\n\nfunc (e *iso2022JPEncoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {\n\tr, size := rune(0), 0\n\tfor ; nSrc < len(src); nSrc += size {\n\t\tr = rune(src[nSrc])\n\n\t\t// Decode a 1-byte rune.\n\t\tif r < utf8.RuneSelf {\n\t\t\tsize = 1\n\n\t\t} else {\n\t\t\t// Decode a multi-byte rune.\n\t\t\tr, size = utf8.DecodeRune(src[nSrc:])\n\t\t\tif size == 1 {\n\t\t\t\t// All valid runes of size 1 (those below utf8.RuneSelf) were\n\t\t\t\t// handled above. We have invalid UTF-8 or we haven't seen the\n\t\t\t\t// full character yet.\n\t\t\t\tif !atEOF && !utf8.FullRune(src[nSrc:]) {\n\t\t\t\t\terr = transform.ErrShortSrc\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// func init checks that the switch covers all tables.\n\t\t\t//\n\t\t\t// http://encoding.spec.whatwg.org/#iso-2022-jp says that \"the index jis0212\n\t\t\t// is not used by the iso-2022-jp encoder due to lack of widespread support\".\n\t\t\t//\n\t\t\t// TODO: do we have to special-case U+00A5 and U+203E, as per\n\t\t\t// http://encoding.spec.whatwg.org/#iso-2022-jp\n\t\t\t// Doing so would mean that \"\\u00a5\" would not be preserved\n\t\t\t// after an encode-decode round trip.\n\t\t\tswitch {\n\t\t\tcase encode0Low <= r && r < encode0High:\n\t\t\t\tif r = rune(encode0[r-encode0Low]); r>>tableShift == jis0208 {\n\t\t\t\t\tgoto writeJIS\n\t\t\t\t}\n\t\t\tcase encode1Low <= r && r < encode1High:\n\t\t\t\tif r = rune(encode1[r-encode1Low]); r>>tableShift == jis0208 {\n\t\t\t\t\tgoto writeJIS\n\t\t\t\t}\n\t\t\tcase encode2Low <= r && r < encode2High:\n\t\t\t\tif r = rune(encode2[r-encode2Low]); r>>tableShift == jis0208 {\n\t\t\t\t\tgoto writeJIS\n\t\t\t\t}\n\t\t\tcase encode3Low <= r && r < encode3High:\n\t\t\t\tif r = rune(encode3[r-encode3Low]); r>>tableShift == jis0208 {\n\t\t\t\t\tgoto writeJIS\n\t\t\t\t}\n\t\t\tcase encode4Low <= r && r < encode4High:\n\t\t\t\tif r = rune(encode4[r-encode4Low]); r>>tableShift == jis0208 {\n\t\t\t\t\tgoto writeJIS\n\t\t\t\t}\n\t\t\tcase encode5Low <= r && r < encode5High:\n\t\t\t\tif 0xff61 <= r && r < 0xffa0 {\n\t\t\t\t\tgoto writeKatakana\n\t\t\t\t}\n\t\t\t\tif r = rune(encode5[r-encode5Low]); r>>tableShift == jis0208 {\n\t\t\t\t\tgoto writeJIS\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Switch back to ASCII state in case of error so that an ASCII\n\t\t\t// replacement character can be written in the correct state.\n\t\t\tif *e != asciiState {\n\t\t\t\tif nDst+3 > len(dst) {\n\t\t\t\t\terr = transform.ErrShortDst\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\t*e = asciiState\n\t\t\t\tdst[nDst+0] = asciiEsc\n\t\t\t\tdst[nDst+1] = '('\n\t\t\t\tdst[nDst+2] = 'B'\n\t\t\t\tnDst += 3\n\t\t\t}\n\t\t\terr = internal.ErrASCIIReplacement\n\t\t\tbreak\n\t\t}\n\n\t\tif *e != asciiState {\n\t\t\tif nDst+4 > len(dst) {\n\t\t\t\terr = transform.ErrShortDst\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t*e = asciiState\n\t\t\tdst[nDst+0] = asciiEsc\n\t\t\tdst[nDst+1] = '('\n\t\t\tdst[nDst+2] = 'B'\n\t\t\tnDst += 3\n\t\t} else if nDst >= len(dst) {\n\t\t\terr = transform.ErrShortDst\n\t\t\tbreak\n\t\t}\n\t\tdst[nDst] = uint8(r)\n\t\tnDst++\n\t\tcontinue\n\n\twriteJIS:\n\t\tif *e != jis0208State {\n\t\t\tif nDst+5 > len(dst) {\n\t\t\t\terr = transform.ErrShortDst\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t*e = jis0208State\n\t\t\tdst[nDst+0] = asciiEsc\n\t\t\tdst[nDst+1] = '$'\n\t\t\tdst[nDst+2] = 'B'\n\t\t\tnDst += 3\n\t\t} else if nDst+2 > len(dst) {\n\t\t\terr = transform.ErrShortDst\n\t\t\tbreak\n\t\t}\n\t\tdst[nDst+0] = 0x21 + uint8(r>>codeShift)&codeMask\n\t\tdst[nDst+1] = 0x21 + uint8(r)&codeMask\n\t\tnDst += 2\n\t\tcontinue\n\n\twriteKatakana:\n\t\tif *e != katakanaState {\n\t\t\tif nDst+4 > len(dst) {\n\t\t\t\terr = transform.ErrShortDst\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t*e = katakanaState\n\t\t\tdst[nDst+0] = asciiEsc\n\t\t\tdst[nDst+1] = '('\n\t\t\tdst[nDst+2] = 'I'\n\t\t\tnDst += 3\n\t\t} else if nDst >= len(dst) {\n\t\t\terr = transform.ErrShortDst\n\t\t\tbreak\n\t\t}\n\t\tdst[nDst] = uint8(r - (0xff61 - 0x21))\n\t\tnDst++\n\t\tcontinue\n\t}\n\tif atEOF && err == nil && *e != asciiState {\n\t\tif nDst+3 > len(dst) {\n\t\t\terr = transform.ErrShortDst\n\t\t} else {\n\t\t\t*e = asciiState\n\t\t\tdst[nDst+0] = asciiEsc\n\t\t\tdst[nDst+1] = '('\n\t\t\tdst[nDst+2] = 'B'\n\t\t\tnDst += 3\n\t\t}\n\t}\n\treturn nDst, nSrc, err\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/text/encoding/japanese/shiftjis.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage japanese\n\nimport (\n\t\"unicode/utf8\"\n\n\t\"golang.org/x/text/encoding\"\n\t\"golang.org/x/text/encoding/internal\"\n\t\"golang.org/x/text/encoding/internal/identifier\"\n\t\"golang.org/x/text/transform\"\n)\n\n// ShiftJIS is the Shift JIS encoding, also known as Code Page 932 and\n// Windows-31J.\nvar ShiftJIS encoding.Encoding = &shiftJIS\n\nvar shiftJIS = internal.Encoding{\n\tEncoding: &internal.SimpleEncoding{Decoder: shiftJISDecoder{}, Encoder: shiftJISEncoder{}},\n\tName:     \"Shift JIS\",\n\tMIB:      identifier.ShiftJIS,\n}\n\ntype shiftJISDecoder struct{ transform.NopResetter }\n\nfunc (shiftJISDecoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {\n\tr, size := rune(0), 0\nloop:\n\tfor ; nSrc < len(src); nSrc += size {\n\t\tswitch c0 := src[nSrc]; {\n\t\tcase c0 < utf8.RuneSelf:\n\t\t\tr, size = rune(c0), 1\n\n\t\tcase 0xa1 <= c0 && c0 < 0xe0:\n\t\t\tr, size = rune(c0)+(0xff61-0xa1), 1\n\n\t\tcase (0x81 <= c0 && c0 < 0xa0) || (0xe0 <= c0 && c0 < 0xfd):\n\t\t\tif c0 <= 0x9f {\n\t\t\t\tc0 -= 0x70\n\t\t\t} else {\n\t\t\t\tc0 -= 0xb0\n\t\t\t}\n\t\t\tc0 = 2*c0 - 0x21\n\n\t\t\tif nSrc+1 >= len(src) {\n\t\t\t\tif !atEOF {\n\t\t\t\t\terr = transform.ErrShortSrc\n\t\t\t\t\tbreak loop\n\t\t\t\t}\n\t\t\t\tr, size = '\\ufffd', 1\n\t\t\t\tgoto write\n\t\t\t}\n\t\t\tc1 := src[nSrc+1]\n\t\t\tswitch {\n\t\t\tcase c1 < 0x40:\n\t\t\t\tr, size = '\\ufffd', 1 // c1 is ASCII so output on next round\n\t\t\t\tgoto write\n\t\t\tcase c1 < 0x7f:\n\t\t\t\tc0--\n\t\t\t\tc1 -= 0x40\n\t\t\tcase c1 == 0x7f:\n\t\t\t\tr, size = '\\ufffd', 1 // c1 is ASCII so output on next round\n\t\t\t\tgoto write\n\t\t\tcase c1 < 0x9f:\n\t\t\t\tc0--\n\t\t\t\tc1 -= 0x41\n\t\t\tcase c1 < 0xfd:\n\t\t\t\tc1 -= 0x9f\n\t\t\tdefault:\n\t\t\t\tr, size = '\\ufffd', 2\n\t\t\t\tgoto write\n\t\t\t}\n\t\t\tr, size = '\\ufffd', 2\n\t\t\tif i := int(c0)*94 + int(c1); i < len(jis0208Decode) {\n\t\t\t\tr = rune(jis0208Decode[i])\n\t\t\t\tif r == 0 {\n\t\t\t\t\tr = '\\ufffd'\n\t\t\t\t}\n\t\t\t}\n\n\t\tcase c0 == 0x80:\n\t\t\tr, size = 0x80, 1\n\n\t\tdefault:\n\t\t\tr, size = '\\ufffd', 1\n\t\t}\n\twrite:\n\t\tif nDst+utf8.RuneLen(r) > len(dst) {\n\t\t\terr = transform.ErrShortDst\n\t\t\tbreak loop\n\t\t}\n\t\tnDst += utf8.EncodeRune(dst[nDst:], r)\n\t}\n\treturn nDst, nSrc, err\n}\n\ntype shiftJISEncoder struct{ transform.NopResetter }\n\nfunc (shiftJISEncoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {\n\tr, size := rune(0), 0\nloop:\n\tfor ; nSrc < len(src); nSrc += size {\n\t\tr = rune(src[nSrc])\n\n\t\t// Decode a 1-byte rune.\n\t\tif r < utf8.RuneSelf {\n\t\t\tsize = 1\n\n\t\t} else {\n\t\t\t// Decode a multi-byte rune.\n\t\t\tr, size = utf8.DecodeRune(src[nSrc:])\n\t\t\tif size == 1 {\n\t\t\t\t// All valid runes of size 1 (those below utf8.RuneSelf) were\n\t\t\t\t// handled above. We have invalid UTF-8 or we haven't seen the\n\t\t\t\t// full character yet.\n\t\t\t\tif !atEOF && !utf8.FullRune(src[nSrc:]) {\n\t\t\t\t\terr = transform.ErrShortSrc\n\t\t\t\t\tbreak loop\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// func init checks that the switch covers all tables.\n\t\t\tswitch {\n\t\t\tcase encode0Low <= r && r < encode0High:\n\t\t\t\tif r = rune(encode0[r-encode0Low]); r>>tableShift == jis0208 {\n\t\t\t\t\tgoto write2\n\t\t\t\t}\n\t\t\tcase encode1Low <= r && r < encode1High:\n\t\t\t\tif r = rune(encode1[r-encode1Low]); r>>tableShift == jis0208 {\n\t\t\t\t\tgoto write2\n\t\t\t\t}\n\t\t\tcase encode2Low <= r && r < encode2High:\n\t\t\t\tif r = rune(encode2[r-encode2Low]); r>>tableShift == jis0208 {\n\t\t\t\t\tgoto write2\n\t\t\t\t}\n\t\t\tcase encode3Low <= r && r < encode3High:\n\t\t\t\tif r = rune(encode3[r-encode3Low]); r>>tableShift == jis0208 {\n\t\t\t\t\tgoto write2\n\t\t\t\t}\n\t\t\tcase encode4Low <= r && r < encode4High:\n\t\t\t\tif r = rune(encode4[r-encode4Low]); r>>tableShift == jis0208 {\n\t\t\t\t\tgoto write2\n\t\t\t\t}\n\t\t\tcase encode5Low <= r && r < encode5High:\n\t\t\t\tif 0xff61 <= r && r < 0xffa0 {\n\t\t\t\t\tr -= 0xff61 - 0xa1\n\t\t\t\t\tgoto write1\n\t\t\t\t}\n\t\t\t\tif r = rune(encode5[r-encode5Low]); r>>tableShift == jis0208 {\n\t\t\t\t\tgoto write2\n\t\t\t\t}\n\t\t\t}\n\t\t\terr = internal.ErrASCIIReplacement\n\t\t\tbreak\n\t\t}\n\n\twrite1:\n\t\tif nDst >= len(dst) {\n\t\t\terr = transform.ErrShortDst\n\t\t\tbreak\n\t\t}\n\t\tdst[nDst] = uint8(r)\n\t\tnDst++\n\t\tcontinue\n\n\twrite2:\n\t\tj1 := uint8(r>>codeShift) & codeMask\n\t\tj2 := uint8(r) & codeMask\n\t\tif nDst+2 > len(dst) {\n\t\t\terr = transform.ErrShortDst\n\t\t\tbreak loop\n\t\t}\n\t\tif j1 <= 61 {\n\t\t\tdst[nDst+0] = 129 + j1/2\n\t\t} else {\n\t\t\tdst[nDst+0] = 193 + j1/2\n\t\t}\n\t\tif j1&1 == 0 {\n\t\t\tdst[nDst+1] = j2 + j2/63 + 64\n\t\t} else {\n\t\t\tdst[nDst+1] = j2 + 159\n\t\t}\n\t\tnDst += 2\n\t\tcontinue\n\t}\n\treturn nDst, nSrc, err\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/text/encoding/japanese/tables.go",
    "content": "// generated by go run maketables.go; DO NOT EDIT\n\n// Package japanese provides Japanese encodings such as EUC-JP and Shift JIS.\npackage japanese // import \"golang.org/x/text/encoding/japanese\"\n\n// jis0208Decode is the decoding table from JIS 0208 code to Unicode.\n// It is defined at http://encoding.spec.whatwg.org/index-jis0208.txt\nvar jis0208Decode = [...]uint16{\n\t0:     0x3000,\n\t1:     0x3001,\n\t2:     0x3002,\n\t3:     0xFF0C,\n\t4:     0xFF0E,\n\t5:     0x30FB,\n\t6:     0xFF1A,\n\t7:     0xFF1B,\n\t8:     0xFF1F,\n\t9:     0xFF01,\n\t10:    0x309B,\n\t11:    0x309C,\n\t12:    0x00B4,\n\t13:    0xFF40,\n\t14:    0x00A8,\n\t15:    0xFF3E,\n\t16:    0xFFE3,\n\t17:    0xFF3F,\n\t18:    0x30FD,\n\t19:    0x30FE,\n\t20:    0x309D,\n\t21:    0x309E,\n\t22:    0x3003,\n\t23:    0x4EDD,\n\t24:    0x3005,\n\t25:    0x3006,\n\t26:    0x3007,\n\t27:    0x30FC,\n\t28:    0x2015,\n\t29:    0x2010,\n\t30:    0xFF0F,\n\t31:    0xFF3C,\n\t32:    0xFF5E,\n\t33:    0x2225,\n\t34:    0xFF5C,\n\t35:    0x2026,\n\t36:    0x2025,\n\t37:    0x2018,\n\t38:    0x2019,\n\t39:    0x201C,\n\t40:    0x201D,\n\t41:    0xFF08,\n\t42:    0xFF09,\n\t43:    0x3014,\n\t44:    0x3015,\n\t45:    0xFF3B,\n\t46:    0xFF3D,\n\t47:    0xFF5B,\n\t48:    0xFF5D,\n\t49:    0x3008,\n\t50:    0x3009,\n\t51:    0x300A,\n\t52:    0x300B,\n\t53:    0x300C,\n\t54:    0x300D,\n\t55:    0x300E,\n\t56:    0x300F,\n\t57:    0x3010,\n\t58:    0x3011,\n\t59:    0xFF0B,\n\t60:    0xFF0D,\n\t61:    0x00B1,\n\t62:    0x00D7,\n\t63:    0x00F7,\n\t64:    0xFF1D,\n\t65:    0x2260,\n\t66:    0xFF1C,\n\t67:    0xFF1E,\n\t68:    0x2266,\n\t69:    0x2267,\n\t70:    0x221E,\n\t71:    0x2234,\n\t72:    0x2642,\n\t73:    0x2640,\n\t74:    0x00B0,\n\t75:    0x2032,\n\t76:    0x2033,\n\t77:    0x2103,\n\t78:    0xFFE5,\n\t79:    0xFF04,\n\t80:    0xFFE0,\n\t81:    0xFFE1,\n\t82:    0xFF05,\n\t83:    0xFF03,\n\t84:    0xFF06,\n\t85:    0xFF0A,\n\t86:    0xFF20,\n\t87:    0x00A7,\n\t88:    0x2606,\n\t89:    0x2605,\n\t90:    0x25CB,\n\t91:    0x25CF,\n\t92:    0x25CE,\n\t93:    0x25C7,\n\t94:    0x25C6,\n\t95:    0x25A1,\n\t96:    0x25A0,\n\t97:    0x25B3,\n\t98:    0x25B2,\n\t99:    0x25BD,\n\t100:   0x25BC,\n\t101:   0x203B,\n\t102:   0x3012,\n\t103:   0x2192,\n\t104:   0x2190,\n\t105:   0x2191,\n\t106:   0x2193,\n\t107:   0x3013,\n\t119:   0x2208,\n\t120:   0x220B,\n\t121:   0x2286,\n\t122:   0x2287,\n\t123:   0x2282,\n\t124:   0x2283,\n\t125:   0x222A,\n\t126:   0x2229,\n\t135:   0x2227,\n\t136:   0x2228,\n\t137:   0xFFE2,\n\t138:   0x21D2,\n\t139:   0x21D4,\n\t140:   0x2200,\n\t141:   0x2203,\n\t153:   0x2220,\n\t154:   0x22A5,\n\t155:   0x2312,\n\t156:   0x2202,\n\t157:   0x2207,\n\t158:   0x2261,\n\t159:   0x2252,\n\t160:   0x226A,\n\t161:   0x226B,\n\t162:   0x221A,\n\t163:   0x223D,\n\t164:   0x221D,\n\t165:   0x2235,\n\t166:   0x222B,\n\t167:   0x222C,\n\t175:   0x212B,\n\t176:   0x2030,\n\t177:   0x266F,\n\t178:   0x266D,\n\t179:   0x266A,\n\t180:   0x2020,\n\t181:   0x2021,\n\t182:   0x00B6,\n\t187:   0x25EF,\n\t203:   0xFF10,\n\t204:   0xFF11,\n\t205:   0xFF12,\n\t206:   0xFF13,\n\t207:   0xFF14,\n\t208:   0xFF15,\n\t209:   0xFF16,\n\t210:   0xFF17,\n\t211:   0xFF18,\n\t212:   0xFF19,\n\t220:   0xFF21,\n\t221:   0xFF22,\n\t222:   0xFF23,\n\t223:   0xFF24,\n\t224:   0xFF25,\n\t225:   0xFF26,\n\t226:   0xFF27,\n\t227:   0xFF28,\n\t228:   0xFF29,\n\t229:   0xFF2A,\n\t230:   0xFF2B,\n\t231:   0xFF2C,\n\t232:   0xFF2D,\n\t233:   0xFF2E,\n\t234:   0xFF2F,\n\t235:   0xFF30,\n\t236:   0xFF31,\n\t237:   0xFF32,\n\t238:   0xFF33,\n\t239:   0xFF34,\n\t240:   0xFF35,\n\t241:   0xFF36,\n\t242:   0xFF37,\n\t243:   0xFF38,\n\t244:   0xFF39,\n\t245:   0xFF3A,\n\t252:   0xFF41,\n\t253:   0xFF42,\n\t254:   0xFF43,\n\t255:   0xFF44,\n\t256:   0xFF45,\n\t257:   0xFF46,\n\t258:   0xFF47,\n\t259:   0xFF48,\n\t260:   0xFF49,\n\t261:   0xFF4A,\n\t262:   0xFF4B,\n\t263:   0xFF4C,\n\t264:   0xFF4D,\n\t265:   0xFF4E,\n\t266:   0xFF4F,\n\t267:   0xFF50,\n\t268:   0xFF51,\n\t269:   0xFF52,\n\t270:   0xFF53,\n\t271:   0xFF54,\n\t272:   0xFF55,\n\t273:   0xFF56,\n\t274:   0xFF57,\n\t275:   0xFF58,\n\t276:   0xFF59,\n\t277:   0xFF5A,\n\t282:   0x3041,\n\t283:   0x3042,\n\t284:   0x3043,\n\t285:   0x3044,\n\t286:   0x3045,\n\t287:   0x3046,\n\t288:   0x3047,\n\t289:   0x3048,\n\t290:   0x3049,\n\t291:   0x304A,\n\t292:   0x304B,\n\t293:   0x304C,\n\t294:   0x304D,\n\t295:   0x304E,\n\t296:   0x304F,\n\t297:   0x3050,\n\t298:   0x3051,\n\t299:   0x3052,\n\t300:   0x3053,\n\t301:   0x3054,\n\t302:   0x3055,\n\t303:   0x3056,\n\t304:   0x3057,\n\t305:   0x3058,\n\t306:   0x3059,\n\t307:   0x305A,\n\t308:   0x305B,\n\t309:   0x305C,\n\t310:   0x305D,\n\t311:   0x305E,\n\t312:   0x305F,\n\t313:   0x3060,\n\t314:   0x3061,\n\t315:   0x3062,\n\t316:   0x3063,\n\t317:   0x3064,\n\t318:   0x3065,\n\t319:   0x3066,\n\t320:   0x3067,\n\t321:   0x3068,\n\t322:   0x3069,\n\t323:   0x306A,\n\t324:   0x306B,\n\t325:   0x306C,\n\t326:   0x306D,\n\t327:   0x306E,\n\t328:   0x306F,\n\t329:   0x3070,\n\t330:   0x3071,\n\t331:   0x3072,\n\t332:   0x3073,\n\t333:   0x3074,\n\t334:   0x3075,\n\t335:   0x3076,\n\t336:   0x3077,\n\t337:   0x3078,\n\t338:   0x3079,\n\t339:   0x307A,\n\t340:   0x307B,\n\t341:   0x307C,\n\t342:   0x307D,\n\t343:   0x307E,\n\t344:   0x307F,\n\t345:   0x3080,\n\t346:   0x3081,\n\t347:   0x3082,\n\t348:   0x3083,\n\t349:   0x3084,\n\t350:   0x3085,\n\t351:   0x3086,\n\t352:   0x3087,\n\t353:   0x3088,\n\t354:   0x3089,\n\t355:   0x308A,\n\t356:   0x308B,\n\t357:   0x308C,\n\t358:   0x308D,\n\t359:   0x308E,\n\t360:   0x308F,\n\t361:   0x3090,\n\t362:   0x3091,\n\t363:   0x3092,\n\t364:   0x3093,\n\t376:   0x30A1,\n\t377:   0x30A2,\n\t378:   0x30A3,\n\t379:   0x30A4,\n\t380:   0x30A5,\n\t381:   0x30A6,\n\t382:   0x30A7,\n\t383:   0x30A8,\n\t384:   0x30A9,\n\t385:   0x30AA,\n\t386:   0x30AB,\n\t387:   0x30AC,\n\t388:   0x30AD,\n\t389:   0x30AE,\n\t390:   0x30AF,\n\t391:   0x30B0,\n\t392:   0x30B1,\n\t393:   0x30B2,\n\t394:   0x30B3,\n\t395:   0x30B4,\n\t396:   0x30B5,\n\t397:   0x30B6,\n\t398:   0x30B7,\n\t399:   0x30B8,\n\t400:   0x30B9,\n\t401:   0x30BA,\n\t402:   0x30BB,\n\t403:   0x30BC,\n\t404:   0x30BD,\n\t405:   0x30BE,\n\t406:   0x30BF,\n\t407:   0x30C0,\n\t408:   0x30C1,\n\t409:   0x30C2,\n\t410:   0x30C3,\n\t411:   0x30C4,\n\t412:   0x30C5,\n\t413:   0x30C6,\n\t414:   0x30C7,\n\t415:   0x30C8,\n\t416:   0x30C9,\n\t417:   0x30CA,\n\t418:   0x30CB,\n\t419:   0x30CC,\n\t420:   0x30CD,\n\t421:   0x30CE,\n\t422:   0x30CF,\n\t423:   0x30D0,\n\t424:   0x30D1,\n\t425:   0x30D2,\n\t426:   0x30D3,\n\t427:   0x30D4,\n\t428:   0x30D5,\n\t429:   0x30D6,\n\t430:   0x30D7,\n\t431:   0x30D8,\n\t432:   0x30D9,\n\t433:   0x30DA,\n\t434:   0x30DB,\n\t435:   0x30DC,\n\t436:   0x30DD,\n\t437:   0x30DE,\n\t438:   0x30DF,\n\t439:   0x30E0,\n\t440:   0x30E1,\n\t441:   0x30E2,\n\t442:   0x30E3,\n\t443:   0x30E4,\n\t444:   0x30E5,\n\t445:   0x30E6,\n\t446:   0x30E7,\n\t447:   0x30E8,\n\t448:   0x30E9,\n\t449:   0x30EA,\n\t450:   0x30EB,\n\t451:   0x30EC,\n\t452:   0x30ED,\n\t453:   0x30EE,\n\t454:   0x30EF,\n\t455:   0x30F0,\n\t456:   0x30F1,\n\t457:   0x30F2,\n\t458:   0x30F3,\n\t459:   0x30F4,\n\t460:   0x30F5,\n\t461:   0x30F6,\n\t470:   0x0391,\n\t471:   0x0392,\n\t472:   0x0393,\n\t473:   0x0394,\n\t474:   0x0395,\n\t475:   0x0396,\n\t476:   0x0397,\n\t477:   0x0398,\n\t478:   0x0399,\n\t479:   0x039A,\n\t480:   0x039B,\n\t481:   0x039C,\n\t482:   0x039D,\n\t483:   0x039E,\n\t484:   0x039F,\n\t485:   0x03A0,\n\t486:   0x03A1,\n\t487:   0x03A3,\n\t488:   0x03A4,\n\t489:   0x03A5,\n\t490:   0x03A6,\n\t491:   0x03A7,\n\t492:   0x03A8,\n\t493:   0x03A9,\n\t502:   0x03B1,\n\t503:   0x03B2,\n\t504:   0x03B3,\n\t505:   0x03B4,\n\t506:   0x03B5,\n\t507:   0x03B6,\n\t508:   0x03B7,\n\t509:   0x03B8,\n\t510:   0x03B9,\n\t511:   0x03BA,\n\t512:   0x03BB,\n\t513:   0x03BC,\n\t514:   0x03BD,\n\t515:   0x03BE,\n\t516:   0x03BF,\n\t517:   0x03C0,\n\t518:   0x03C1,\n\t519:   0x03C3,\n\t520:   0x03C4,\n\t521:   0x03C5,\n\t522:   0x03C6,\n\t523:   0x03C7,\n\t524:   0x03C8,\n\t525:   0x03C9,\n\t564:   0x0410,\n\t565:   0x0411,\n\t566:   0x0412,\n\t567:   0x0413,\n\t568:   0x0414,\n\t569:   0x0415,\n\t570:   0x0401,\n\t571:   0x0416,\n\t572:   0x0417,\n\t573:   0x0418,\n\t574:   0x0419,\n\t575:   0x041A,\n\t576:   0x041B,\n\t577:   0x041C,\n\t578:   0x041D,\n\t579:   0x041E,\n\t580:   0x041F,\n\t581:   0x0420,\n\t582:   0x0421,\n\t583:   0x0422,\n\t584:   0x0423,\n\t585:   0x0424,\n\t586:   0x0425,\n\t587:   0x0426,\n\t588:   0x0427,\n\t589:   0x0428,\n\t590:   0x0429,\n\t591:   0x042A,\n\t592:   0x042B,\n\t593:   0x042C,\n\t594:   0x042D,\n\t595:   0x042E,\n\t596:   0x042F,\n\t612:   0x0430,\n\t613:   0x0431,\n\t614:   0x0432,\n\t615:   0x0433,\n\t616:   0x0434,\n\t617:   0x0435,\n\t618:   0x0451,\n\t619:   0x0436,\n\t620:   0x0437,\n\t621:   0x0438,\n\t622:   0x0439,\n\t623:   0x043A,\n\t624:   0x043B,\n\t625:   0x043C,\n\t626:   0x043D,\n\t627:   0x043E,\n\t628:   0x043F,\n\t629:   0x0440,\n\t630:   0x0441,\n\t631:   0x0442,\n\t632:   0x0443,\n\t633:   0x0444,\n\t634:   0x0445,\n\t635:   0x0446,\n\t636:   0x0447,\n\t637:   0x0448,\n\t638:   0x0449,\n\t639:   0x044A,\n\t640:   0x044B,\n\t641:   0x044C,\n\t642:   0x044D,\n\t643:   0x044E,\n\t644:   0x044F,\n\t658:   0x2500,\n\t659:   0x2502,\n\t660:   0x250C,\n\t661:   0x2510,\n\t662:   0x2518,\n\t663:   0x2514,\n\t664:   0x251C,\n\t665:   0x252C,\n\t666:   0x2524,\n\t667:   0x2534,\n\t668:   0x253C,\n\t669:   0x2501,\n\t670:   0x2503,\n\t671:   0x250F,\n\t672:   0x2513,\n\t673:   0x251B,\n\t674:   0x2517,\n\t675:   0x2523,\n\t676:   0x2533,\n\t677:   0x252B,\n\t678:   0x253B,\n\t679:   0x254B,\n\t680:   0x2520,\n\t681:   0x252F,\n\t682:   0x2528,\n\t683:   0x2537,\n\t684:   0x253F,\n\t685:   0x251D,\n\t686:   0x2530,\n\t687:   0x2525,\n\t688:   0x2538,\n\t689:   0x2542,\n\t1128:  0x2460,\n\t1129:  0x2461,\n\t1130:  0x2462,\n\t1131:  0x2463,\n\t1132:  0x2464,\n\t1133:  0x2465,\n\t1134:  0x2466,\n\t1135:  0x2467,\n\t1136:  0x2468,\n\t1137:  0x2469,\n\t1138:  0x246A,\n\t1139:  0x246B,\n\t1140:  0x246C,\n\t1141:  0x246D,\n\t1142:  0x246E,\n\t1143:  0x246F,\n\t1144:  0x2470,\n\t1145:  0x2471,\n\t1146:  0x2472,\n\t1147:  0x2473,\n\t1148:  0x2160,\n\t1149:  0x2161,\n\t1150:  0x2162,\n\t1151:  0x2163,\n\t1152:  0x2164,\n\t1153:  0x2165,\n\t1154:  0x2166,\n\t1155:  0x2167,\n\t1156:  0x2168,\n\t1157:  0x2169,\n\t1159:  0x3349,\n\t1160:  0x3314,\n\t1161:  0x3322,\n\t1162:  0x334D,\n\t1163:  0x3318,\n\t1164:  0x3327,\n\t1165:  0x3303,\n\t1166:  0x3336,\n\t1167:  0x3351,\n\t1168:  0x3357,\n\t1169:  0x330D,\n\t1170:  0x3326,\n\t1171:  0x3323,\n\t1172:  0x332B,\n\t1173:  0x334A,\n\t1174:  0x333B,\n\t1175:  0x339C,\n\t1176:  0x339D,\n\t1177:  0x339E,\n\t1178:  0x338E,\n\t1179:  0x338F,\n\t1180:  0x33C4,\n\t1181:  0x33A1,\n\t1190:  0x337B,\n\t1191:  0x301D,\n\t1192:  0x301F,\n\t1193:  0x2116,\n\t1194:  0x33CD,\n\t1195:  0x2121,\n\t1196:  0x32A4,\n\t1197:  0x32A5,\n\t1198:  0x32A6,\n\t1199:  0x32A7,\n\t1200:  0x32A8,\n\t1201:  0x3231,\n\t1202:  0x3232,\n\t1203:  0x3239,\n\t1204:  0x337E,\n\t1205:  0x337D,\n\t1206:  0x337C,\n\t1207:  0x2252,\n\t1208:  0x2261,\n\t1209:  0x222B,\n\t1210:  0x222E,\n\t1211:  0x2211,\n\t1212:  0x221A,\n\t1213:  0x22A5,\n\t1214:  0x2220,\n\t1215:  0x221F,\n\t1216:  0x22BF,\n\t1217:  0x2235,\n\t1218:  0x2229,\n\t1219:  0x222A,\n\t1410:  0x4E9C,\n\t1411:  0x5516,\n\t1412:  0x5A03,\n\t1413:  0x963F,\n\t1414:  0x54C0,\n\t1415:  0x611B,\n\t1416:  0x6328,\n\t1417:  0x59F6,\n\t1418:  0x9022,\n\t1419:  0x8475,\n\t1420:  0x831C,\n\t1421:  0x7A50,\n\t1422:  0x60AA,\n\t1423:  0x63E1,\n\t1424:  0x6E25,\n\t1425:  0x65ED,\n\t1426:  0x8466,\n\t1427:  0x82A6,\n\t1428:  0x9BF5,\n\t1429:  0x6893,\n\t1430:  0x5727,\n\t1431:  0x65A1,\n\t1432:  0x6271,\n\t1433:  0x5B9B,\n\t1434:  0x59D0,\n\t1435:  0x867B,\n\t1436:  0x98F4,\n\t1437:  0x7D62,\n\t1438:  0x7DBE,\n\t1439:  0x9B8E,\n\t1440:  0x6216,\n\t1441:  0x7C9F,\n\t1442:  0x88B7,\n\t1443:  0x5B89,\n\t1444:  0x5EB5,\n\t1445:  0x6309,\n\t1446:  0x6697,\n\t1447:  0x6848,\n\t1448:  0x95C7,\n\t1449:  0x978D,\n\t1450:  0x674F,\n\t1451:  0x4EE5,\n\t1452:  0x4F0A,\n\t1453:  0x4F4D,\n\t1454:  0x4F9D,\n\t1455:  0x5049,\n\t1456:  0x56F2,\n\t1457:  0x5937,\n\t1458:  0x59D4,\n\t1459:  0x5A01,\n\t1460:  0x5C09,\n\t1461:  0x60DF,\n\t1462:  0x610F,\n\t1463:  0x6170,\n\t1464:  0x6613,\n\t1465:  0x6905,\n\t1466:  0x70BA,\n\t1467:  0x754F,\n\t1468:  0x7570,\n\t1469:  0x79FB,\n\t1470:  0x7DAD,\n\t1471:  0x7DEF,\n\t1472:  0x80C3,\n\t1473:  0x840E,\n\t1474:  0x8863,\n\t1475:  0x8B02,\n\t1476:  0x9055,\n\t1477:  0x907A,\n\t1478:  0x533B,\n\t1479:  0x4E95,\n\t1480:  0x4EA5,\n\t1481:  0x57DF,\n\t1482:  0x80B2,\n\t1483:  0x90C1,\n\t1484:  0x78EF,\n\t1485:  0x4E00,\n\t1486:  0x58F1,\n\t1487:  0x6EA2,\n\t1488:  0x9038,\n\t1489:  0x7A32,\n\t1490:  0x8328,\n\t1491:  0x828B,\n\t1492:  0x9C2F,\n\t1493:  0x5141,\n\t1494:  0x5370,\n\t1495:  0x54BD,\n\t1496:  0x54E1,\n\t1497:  0x56E0,\n\t1498:  0x59FB,\n\t1499:  0x5F15,\n\t1500:  0x98F2,\n\t1501:  0x6DEB,\n\t1502:  0x80E4,\n\t1503:  0x852D,\n\t1504:  0x9662,\n\t1505:  0x9670,\n\t1506:  0x96A0,\n\t1507:  0x97FB,\n\t1508:  0x540B,\n\t1509:  0x53F3,\n\t1510:  0x5B87,\n\t1511:  0x70CF,\n\t1512:  0x7FBD,\n\t1513:  0x8FC2,\n\t1514:  0x96E8,\n\t1515:  0x536F,\n\t1516:  0x9D5C,\n\t1517:  0x7ABA,\n\t1518:  0x4E11,\n\t1519:  0x7893,\n\t1520:  0x81FC,\n\t1521:  0x6E26,\n\t1522:  0x5618,\n\t1523:  0x5504,\n\t1524:  0x6B1D,\n\t1525:  0x851A,\n\t1526:  0x9C3B,\n\t1527:  0x59E5,\n\t1528:  0x53A9,\n\t1529:  0x6D66,\n\t1530:  0x74DC,\n\t1531:  0x958F,\n\t1532:  0x5642,\n\t1533:  0x4E91,\n\t1534:  0x904B,\n\t1535:  0x96F2,\n\t1536:  0x834F,\n\t1537:  0x990C,\n\t1538:  0x53E1,\n\t1539:  0x55B6,\n\t1540:  0x5B30,\n\t1541:  0x5F71,\n\t1542:  0x6620,\n\t1543:  0x66F3,\n\t1544:  0x6804,\n\t1545:  0x6C38,\n\t1546:  0x6CF3,\n\t1547:  0x6D29,\n\t1548:  0x745B,\n\t1549:  0x76C8,\n\t1550:  0x7A4E,\n\t1551:  0x9834,\n\t1552:  0x82F1,\n\t1553:  0x885B,\n\t1554:  0x8A60,\n\t1555:  0x92ED,\n\t1556:  0x6DB2,\n\t1557:  0x75AB,\n\t1558:  0x76CA,\n\t1559:  0x99C5,\n\t1560:  0x60A6,\n\t1561:  0x8B01,\n\t1562:  0x8D8A,\n\t1563:  0x95B2,\n\t1564:  0x698E,\n\t1565:  0x53AD,\n\t1566:  0x5186,\n\t1567:  0x5712,\n\t1568:  0x5830,\n\t1569:  0x5944,\n\t1570:  0x5BB4,\n\t1571:  0x5EF6,\n\t1572:  0x6028,\n\t1573:  0x63A9,\n\t1574:  0x63F4,\n\t1575:  0x6CBF,\n\t1576:  0x6F14,\n\t1577:  0x708E,\n\t1578:  0x7114,\n\t1579:  0x7159,\n\t1580:  0x71D5,\n\t1581:  0x733F,\n\t1582:  0x7E01,\n\t1583:  0x8276,\n\t1584:  0x82D1,\n\t1585:  0x8597,\n\t1586:  0x9060,\n\t1587:  0x925B,\n\t1588:  0x9D1B,\n\t1589:  0x5869,\n\t1590:  0x65BC,\n\t1591:  0x6C5A,\n\t1592:  0x7525,\n\t1593:  0x51F9,\n\t1594:  0x592E,\n\t1595:  0x5965,\n\t1596:  0x5F80,\n\t1597:  0x5FDC,\n\t1598:  0x62BC,\n\t1599:  0x65FA,\n\t1600:  0x6A2A,\n\t1601:  0x6B27,\n\t1602:  0x6BB4,\n\t1603:  0x738B,\n\t1604:  0x7FC1,\n\t1605:  0x8956,\n\t1606:  0x9D2C,\n\t1607:  0x9D0E,\n\t1608:  0x9EC4,\n\t1609:  0x5CA1,\n\t1610:  0x6C96,\n\t1611:  0x837B,\n\t1612:  0x5104,\n\t1613:  0x5C4B,\n\t1614:  0x61B6,\n\t1615:  0x81C6,\n\t1616:  0x6876,\n\t1617:  0x7261,\n\t1618:  0x4E59,\n\t1619:  0x4FFA,\n\t1620:  0x5378,\n\t1621:  0x6069,\n\t1622:  0x6E29,\n\t1623:  0x7A4F,\n\t1624:  0x97F3,\n\t1625:  0x4E0B,\n\t1626:  0x5316,\n\t1627:  0x4EEE,\n\t1628:  0x4F55,\n\t1629:  0x4F3D,\n\t1630:  0x4FA1,\n\t1631:  0x4F73,\n\t1632:  0x52A0,\n\t1633:  0x53EF,\n\t1634:  0x5609,\n\t1635:  0x590F,\n\t1636:  0x5AC1,\n\t1637:  0x5BB6,\n\t1638:  0x5BE1,\n\t1639:  0x79D1,\n\t1640:  0x6687,\n\t1641:  0x679C,\n\t1642:  0x67B6,\n\t1643:  0x6B4C,\n\t1644:  0x6CB3,\n\t1645:  0x706B,\n\t1646:  0x73C2,\n\t1647:  0x798D,\n\t1648:  0x79BE,\n\t1649:  0x7A3C,\n\t1650:  0x7B87,\n\t1651:  0x82B1,\n\t1652:  0x82DB,\n\t1653:  0x8304,\n\t1654:  0x8377,\n\t1655:  0x83EF,\n\t1656:  0x83D3,\n\t1657:  0x8766,\n\t1658:  0x8AB2,\n\t1659:  0x5629,\n\t1660:  0x8CA8,\n\t1661:  0x8FE6,\n\t1662:  0x904E,\n\t1663:  0x971E,\n\t1664:  0x868A,\n\t1665:  0x4FC4,\n\t1666:  0x5CE8,\n\t1667:  0x6211,\n\t1668:  0x7259,\n\t1669:  0x753B,\n\t1670:  0x81E5,\n\t1671:  0x82BD,\n\t1672:  0x86FE,\n\t1673:  0x8CC0,\n\t1674:  0x96C5,\n\t1675:  0x9913,\n\t1676:  0x99D5,\n\t1677:  0x4ECB,\n\t1678:  0x4F1A,\n\t1679:  0x89E3,\n\t1680:  0x56DE,\n\t1681:  0x584A,\n\t1682:  0x58CA,\n\t1683:  0x5EFB,\n\t1684:  0x5FEB,\n\t1685:  0x602A,\n\t1686:  0x6094,\n\t1687:  0x6062,\n\t1688:  0x61D0,\n\t1689:  0x6212,\n\t1690:  0x62D0,\n\t1691:  0x6539,\n\t1692:  0x9B41,\n\t1693:  0x6666,\n\t1694:  0x68B0,\n\t1695:  0x6D77,\n\t1696:  0x7070,\n\t1697:  0x754C,\n\t1698:  0x7686,\n\t1699:  0x7D75,\n\t1700:  0x82A5,\n\t1701:  0x87F9,\n\t1702:  0x958B,\n\t1703:  0x968E,\n\t1704:  0x8C9D,\n\t1705:  0x51F1,\n\t1706:  0x52BE,\n\t1707:  0x5916,\n\t1708:  0x54B3,\n\t1709:  0x5BB3,\n\t1710:  0x5D16,\n\t1711:  0x6168,\n\t1712:  0x6982,\n\t1713:  0x6DAF,\n\t1714:  0x788D,\n\t1715:  0x84CB,\n\t1716:  0x8857,\n\t1717:  0x8A72,\n\t1718:  0x93A7,\n\t1719:  0x9AB8,\n\t1720:  0x6D6C,\n\t1721:  0x99A8,\n\t1722:  0x86D9,\n\t1723:  0x57A3,\n\t1724:  0x67FF,\n\t1725:  0x86CE,\n\t1726:  0x920E,\n\t1727:  0x5283,\n\t1728:  0x5687,\n\t1729:  0x5404,\n\t1730:  0x5ED3,\n\t1731:  0x62E1,\n\t1732:  0x64B9,\n\t1733:  0x683C,\n\t1734:  0x6838,\n\t1735:  0x6BBB,\n\t1736:  0x7372,\n\t1737:  0x78BA,\n\t1738:  0x7A6B,\n\t1739:  0x899A,\n\t1740:  0x89D2,\n\t1741:  0x8D6B,\n\t1742:  0x8F03,\n\t1743:  0x90ED,\n\t1744:  0x95A3,\n\t1745:  0x9694,\n\t1746:  0x9769,\n\t1747:  0x5B66,\n\t1748:  0x5CB3,\n\t1749:  0x697D,\n\t1750:  0x984D,\n\t1751:  0x984E,\n\t1752:  0x639B,\n\t1753:  0x7B20,\n\t1754:  0x6A2B,\n\t1755:  0x6A7F,\n\t1756:  0x68B6,\n\t1757:  0x9C0D,\n\t1758:  0x6F5F,\n\t1759:  0x5272,\n\t1760:  0x559D,\n\t1761:  0x6070,\n\t1762:  0x62EC,\n\t1763:  0x6D3B,\n\t1764:  0x6E07,\n\t1765:  0x6ED1,\n\t1766:  0x845B,\n\t1767:  0x8910,\n\t1768:  0x8F44,\n\t1769:  0x4E14,\n\t1770:  0x9C39,\n\t1771:  0x53F6,\n\t1772:  0x691B,\n\t1773:  0x6A3A,\n\t1774:  0x9784,\n\t1775:  0x682A,\n\t1776:  0x515C,\n\t1777:  0x7AC3,\n\t1778:  0x84B2,\n\t1779:  0x91DC,\n\t1780:  0x938C,\n\t1781:  0x565B,\n\t1782:  0x9D28,\n\t1783:  0x6822,\n\t1784:  0x8305,\n\t1785:  0x8431,\n\t1786:  0x7CA5,\n\t1787:  0x5208,\n\t1788:  0x82C5,\n\t1789:  0x74E6,\n\t1790:  0x4E7E,\n\t1791:  0x4F83,\n\t1792:  0x51A0,\n\t1793:  0x5BD2,\n\t1794:  0x520A,\n\t1795:  0x52D8,\n\t1796:  0x52E7,\n\t1797:  0x5DFB,\n\t1798:  0x559A,\n\t1799:  0x582A,\n\t1800:  0x59E6,\n\t1801:  0x5B8C,\n\t1802:  0x5B98,\n\t1803:  0x5BDB,\n\t1804:  0x5E72,\n\t1805:  0x5E79,\n\t1806:  0x60A3,\n\t1807:  0x611F,\n\t1808:  0x6163,\n\t1809:  0x61BE,\n\t1810:  0x63DB,\n\t1811:  0x6562,\n\t1812:  0x67D1,\n\t1813:  0x6853,\n\t1814:  0x68FA,\n\t1815:  0x6B3E,\n\t1816:  0x6B53,\n\t1817:  0x6C57,\n\t1818:  0x6F22,\n\t1819:  0x6F97,\n\t1820:  0x6F45,\n\t1821:  0x74B0,\n\t1822:  0x7518,\n\t1823:  0x76E3,\n\t1824:  0x770B,\n\t1825:  0x7AFF,\n\t1826:  0x7BA1,\n\t1827:  0x7C21,\n\t1828:  0x7DE9,\n\t1829:  0x7F36,\n\t1830:  0x7FF0,\n\t1831:  0x809D,\n\t1832:  0x8266,\n\t1833:  0x839E,\n\t1834:  0x89B3,\n\t1835:  0x8ACC,\n\t1836:  0x8CAB,\n\t1837:  0x9084,\n\t1838:  0x9451,\n\t1839:  0x9593,\n\t1840:  0x9591,\n\t1841:  0x95A2,\n\t1842:  0x9665,\n\t1843:  0x97D3,\n\t1844:  0x9928,\n\t1845:  0x8218,\n\t1846:  0x4E38,\n\t1847:  0x542B,\n\t1848:  0x5CB8,\n\t1849:  0x5DCC,\n\t1850:  0x73A9,\n\t1851:  0x764C,\n\t1852:  0x773C,\n\t1853:  0x5CA9,\n\t1854:  0x7FEB,\n\t1855:  0x8D0B,\n\t1856:  0x96C1,\n\t1857:  0x9811,\n\t1858:  0x9854,\n\t1859:  0x9858,\n\t1860:  0x4F01,\n\t1861:  0x4F0E,\n\t1862:  0x5371,\n\t1863:  0x559C,\n\t1864:  0x5668,\n\t1865:  0x57FA,\n\t1866:  0x5947,\n\t1867:  0x5B09,\n\t1868:  0x5BC4,\n\t1869:  0x5C90,\n\t1870:  0x5E0C,\n\t1871:  0x5E7E,\n\t1872:  0x5FCC,\n\t1873:  0x63EE,\n\t1874:  0x673A,\n\t1875:  0x65D7,\n\t1876:  0x65E2,\n\t1877:  0x671F,\n\t1878:  0x68CB,\n\t1879:  0x68C4,\n\t1880:  0x6A5F,\n\t1881:  0x5E30,\n\t1882:  0x6BC5,\n\t1883:  0x6C17,\n\t1884:  0x6C7D,\n\t1885:  0x757F,\n\t1886:  0x7948,\n\t1887:  0x5B63,\n\t1888:  0x7A00,\n\t1889:  0x7D00,\n\t1890:  0x5FBD,\n\t1891:  0x898F,\n\t1892:  0x8A18,\n\t1893:  0x8CB4,\n\t1894:  0x8D77,\n\t1895:  0x8ECC,\n\t1896:  0x8F1D,\n\t1897:  0x98E2,\n\t1898:  0x9A0E,\n\t1899:  0x9B3C,\n\t1900:  0x4E80,\n\t1901:  0x507D,\n\t1902:  0x5100,\n\t1903:  0x5993,\n\t1904:  0x5B9C,\n\t1905:  0x622F,\n\t1906:  0x6280,\n\t1907:  0x64EC,\n\t1908:  0x6B3A,\n\t1909:  0x72A0,\n\t1910:  0x7591,\n\t1911:  0x7947,\n\t1912:  0x7FA9,\n\t1913:  0x87FB,\n\t1914:  0x8ABC,\n\t1915:  0x8B70,\n\t1916:  0x63AC,\n\t1917:  0x83CA,\n\t1918:  0x97A0,\n\t1919:  0x5409,\n\t1920:  0x5403,\n\t1921:  0x55AB,\n\t1922:  0x6854,\n\t1923:  0x6A58,\n\t1924:  0x8A70,\n\t1925:  0x7827,\n\t1926:  0x6775,\n\t1927:  0x9ECD,\n\t1928:  0x5374,\n\t1929:  0x5BA2,\n\t1930:  0x811A,\n\t1931:  0x8650,\n\t1932:  0x9006,\n\t1933:  0x4E18,\n\t1934:  0x4E45,\n\t1935:  0x4EC7,\n\t1936:  0x4F11,\n\t1937:  0x53CA,\n\t1938:  0x5438,\n\t1939:  0x5BAE,\n\t1940:  0x5F13,\n\t1941:  0x6025,\n\t1942:  0x6551,\n\t1943:  0x673D,\n\t1944:  0x6C42,\n\t1945:  0x6C72,\n\t1946:  0x6CE3,\n\t1947:  0x7078,\n\t1948:  0x7403,\n\t1949:  0x7A76,\n\t1950:  0x7AAE,\n\t1951:  0x7B08,\n\t1952:  0x7D1A,\n\t1953:  0x7CFE,\n\t1954:  0x7D66,\n\t1955:  0x65E7,\n\t1956:  0x725B,\n\t1957:  0x53BB,\n\t1958:  0x5C45,\n\t1959:  0x5DE8,\n\t1960:  0x62D2,\n\t1961:  0x62E0,\n\t1962:  0x6319,\n\t1963:  0x6E20,\n\t1964:  0x865A,\n\t1965:  0x8A31,\n\t1966:  0x8DDD,\n\t1967:  0x92F8,\n\t1968:  0x6F01,\n\t1969:  0x79A6,\n\t1970:  0x9B5A,\n\t1971:  0x4EA8,\n\t1972:  0x4EAB,\n\t1973:  0x4EAC,\n\t1974:  0x4F9B,\n\t1975:  0x4FA0,\n\t1976:  0x50D1,\n\t1977:  0x5147,\n\t1978:  0x7AF6,\n\t1979:  0x5171,\n\t1980:  0x51F6,\n\t1981:  0x5354,\n\t1982:  0x5321,\n\t1983:  0x537F,\n\t1984:  0x53EB,\n\t1985:  0x55AC,\n\t1986:  0x5883,\n\t1987:  0x5CE1,\n\t1988:  0x5F37,\n\t1989:  0x5F4A,\n\t1990:  0x602F,\n\t1991:  0x6050,\n\t1992:  0x606D,\n\t1993:  0x631F,\n\t1994:  0x6559,\n\t1995:  0x6A4B,\n\t1996:  0x6CC1,\n\t1997:  0x72C2,\n\t1998:  0x72ED,\n\t1999:  0x77EF,\n\t2000:  0x80F8,\n\t2001:  0x8105,\n\t2002:  0x8208,\n\t2003:  0x854E,\n\t2004:  0x90F7,\n\t2005:  0x93E1,\n\t2006:  0x97FF,\n\t2007:  0x9957,\n\t2008:  0x9A5A,\n\t2009:  0x4EF0,\n\t2010:  0x51DD,\n\t2011:  0x5C2D,\n\t2012:  0x6681,\n\t2013:  0x696D,\n\t2014:  0x5C40,\n\t2015:  0x66F2,\n\t2016:  0x6975,\n\t2017:  0x7389,\n\t2018:  0x6850,\n\t2019:  0x7C81,\n\t2020:  0x50C5,\n\t2021:  0x52E4,\n\t2022:  0x5747,\n\t2023:  0x5DFE,\n\t2024:  0x9326,\n\t2025:  0x65A4,\n\t2026:  0x6B23,\n\t2027:  0x6B3D,\n\t2028:  0x7434,\n\t2029:  0x7981,\n\t2030:  0x79BD,\n\t2031:  0x7B4B,\n\t2032:  0x7DCA,\n\t2033:  0x82B9,\n\t2034:  0x83CC,\n\t2035:  0x887F,\n\t2036:  0x895F,\n\t2037:  0x8B39,\n\t2038:  0x8FD1,\n\t2039:  0x91D1,\n\t2040:  0x541F,\n\t2041:  0x9280,\n\t2042:  0x4E5D,\n\t2043:  0x5036,\n\t2044:  0x53E5,\n\t2045:  0x533A,\n\t2046:  0x72D7,\n\t2047:  0x7396,\n\t2048:  0x77E9,\n\t2049:  0x82E6,\n\t2050:  0x8EAF,\n\t2051:  0x99C6,\n\t2052:  0x99C8,\n\t2053:  0x99D2,\n\t2054:  0x5177,\n\t2055:  0x611A,\n\t2056:  0x865E,\n\t2057:  0x55B0,\n\t2058:  0x7A7A,\n\t2059:  0x5076,\n\t2060:  0x5BD3,\n\t2061:  0x9047,\n\t2062:  0x9685,\n\t2063:  0x4E32,\n\t2064:  0x6ADB,\n\t2065:  0x91E7,\n\t2066:  0x5C51,\n\t2067:  0x5C48,\n\t2068:  0x6398,\n\t2069:  0x7A9F,\n\t2070:  0x6C93,\n\t2071:  0x9774,\n\t2072:  0x8F61,\n\t2073:  0x7AAA,\n\t2074:  0x718A,\n\t2075:  0x9688,\n\t2076:  0x7C82,\n\t2077:  0x6817,\n\t2078:  0x7E70,\n\t2079:  0x6851,\n\t2080:  0x936C,\n\t2081:  0x52F2,\n\t2082:  0x541B,\n\t2083:  0x85AB,\n\t2084:  0x8A13,\n\t2085:  0x7FA4,\n\t2086:  0x8ECD,\n\t2087:  0x90E1,\n\t2088:  0x5366,\n\t2089:  0x8888,\n\t2090:  0x7941,\n\t2091:  0x4FC2,\n\t2092:  0x50BE,\n\t2093:  0x5211,\n\t2094:  0x5144,\n\t2095:  0x5553,\n\t2096:  0x572D,\n\t2097:  0x73EA,\n\t2098:  0x578B,\n\t2099:  0x5951,\n\t2100:  0x5F62,\n\t2101:  0x5F84,\n\t2102:  0x6075,\n\t2103:  0x6176,\n\t2104:  0x6167,\n\t2105:  0x61A9,\n\t2106:  0x63B2,\n\t2107:  0x643A,\n\t2108:  0x656C,\n\t2109:  0x666F,\n\t2110:  0x6842,\n\t2111:  0x6E13,\n\t2112:  0x7566,\n\t2113:  0x7A3D,\n\t2114:  0x7CFB,\n\t2115:  0x7D4C,\n\t2116:  0x7D99,\n\t2117:  0x7E4B,\n\t2118:  0x7F6B,\n\t2119:  0x830E,\n\t2120:  0x834A,\n\t2121:  0x86CD,\n\t2122:  0x8A08,\n\t2123:  0x8A63,\n\t2124:  0x8B66,\n\t2125:  0x8EFD,\n\t2126:  0x981A,\n\t2127:  0x9D8F,\n\t2128:  0x82B8,\n\t2129:  0x8FCE,\n\t2130:  0x9BE8,\n\t2131:  0x5287,\n\t2132:  0x621F,\n\t2133:  0x6483,\n\t2134:  0x6FC0,\n\t2135:  0x9699,\n\t2136:  0x6841,\n\t2137:  0x5091,\n\t2138:  0x6B20,\n\t2139:  0x6C7A,\n\t2140:  0x6F54,\n\t2141:  0x7A74,\n\t2142:  0x7D50,\n\t2143:  0x8840,\n\t2144:  0x8A23,\n\t2145:  0x6708,\n\t2146:  0x4EF6,\n\t2147:  0x5039,\n\t2148:  0x5026,\n\t2149:  0x5065,\n\t2150:  0x517C,\n\t2151:  0x5238,\n\t2152:  0x5263,\n\t2153:  0x55A7,\n\t2154:  0x570F,\n\t2155:  0x5805,\n\t2156:  0x5ACC,\n\t2157:  0x5EFA,\n\t2158:  0x61B2,\n\t2159:  0x61F8,\n\t2160:  0x62F3,\n\t2161:  0x6372,\n\t2162:  0x691C,\n\t2163:  0x6A29,\n\t2164:  0x727D,\n\t2165:  0x72AC,\n\t2166:  0x732E,\n\t2167:  0x7814,\n\t2168:  0x786F,\n\t2169:  0x7D79,\n\t2170:  0x770C,\n\t2171:  0x80A9,\n\t2172:  0x898B,\n\t2173:  0x8B19,\n\t2174:  0x8CE2,\n\t2175:  0x8ED2,\n\t2176:  0x9063,\n\t2177:  0x9375,\n\t2178:  0x967A,\n\t2179:  0x9855,\n\t2180:  0x9A13,\n\t2181:  0x9E78,\n\t2182:  0x5143,\n\t2183:  0x539F,\n\t2184:  0x53B3,\n\t2185:  0x5E7B,\n\t2186:  0x5F26,\n\t2187:  0x6E1B,\n\t2188:  0x6E90,\n\t2189:  0x7384,\n\t2190:  0x73FE,\n\t2191:  0x7D43,\n\t2192:  0x8237,\n\t2193:  0x8A00,\n\t2194:  0x8AFA,\n\t2195:  0x9650,\n\t2196:  0x4E4E,\n\t2197:  0x500B,\n\t2198:  0x53E4,\n\t2199:  0x547C,\n\t2200:  0x56FA,\n\t2201:  0x59D1,\n\t2202:  0x5B64,\n\t2203:  0x5DF1,\n\t2204:  0x5EAB,\n\t2205:  0x5F27,\n\t2206:  0x6238,\n\t2207:  0x6545,\n\t2208:  0x67AF,\n\t2209:  0x6E56,\n\t2210:  0x72D0,\n\t2211:  0x7CCA,\n\t2212:  0x88B4,\n\t2213:  0x80A1,\n\t2214:  0x80E1,\n\t2215:  0x83F0,\n\t2216:  0x864E,\n\t2217:  0x8A87,\n\t2218:  0x8DE8,\n\t2219:  0x9237,\n\t2220:  0x96C7,\n\t2221:  0x9867,\n\t2222:  0x9F13,\n\t2223:  0x4E94,\n\t2224:  0x4E92,\n\t2225:  0x4F0D,\n\t2226:  0x5348,\n\t2227:  0x5449,\n\t2228:  0x543E,\n\t2229:  0x5A2F,\n\t2230:  0x5F8C,\n\t2231:  0x5FA1,\n\t2232:  0x609F,\n\t2233:  0x68A7,\n\t2234:  0x6A8E,\n\t2235:  0x745A,\n\t2236:  0x7881,\n\t2237:  0x8A9E,\n\t2238:  0x8AA4,\n\t2239:  0x8B77,\n\t2240:  0x9190,\n\t2241:  0x4E5E,\n\t2242:  0x9BC9,\n\t2243:  0x4EA4,\n\t2244:  0x4F7C,\n\t2245:  0x4FAF,\n\t2246:  0x5019,\n\t2247:  0x5016,\n\t2248:  0x5149,\n\t2249:  0x516C,\n\t2250:  0x529F,\n\t2251:  0x52B9,\n\t2252:  0x52FE,\n\t2253:  0x539A,\n\t2254:  0x53E3,\n\t2255:  0x5411,\n\t2256:  0x540E,\n\t2257:  0x5589,\n\t2258:  0x5751,\n\t2259:  0x57A2,\n\t2260:  0x597D,\n\t2261:  0x5B54,\n\t2262:  0x5B5D,\n\t2263:  0x5B8F,\n\t2264:  0x5DE5,\n\t2265:  0x5DE7,\n\t2266:  0x5DF7,\n\t2267:  0x5E78,\n\t2268:  0x5E83,\n\t2269:  0x5E9A,\n\t2270:  0x5EB7,\n\t2271:  0x5F18,\n\t2272:  0x6052,\n\t2273:  0x614C,\n\t2274:  0x6297,\n\t2275:  0x62D8,\n\t2276:  0x63A7,\n\t2277:  0x653B,\n\t2278:  0x6602,\n\t2279:  0x6643,\n\t2280:  0x66F4,\n\t2281:  0x676D,\n\t2282:  0x6821,\n\t2283:  0x6897,\n\t2284:  0x69CB,\n\t2285:  0x6C5F,\n\t2286:  0x6D2A,\n\t2287:  0x6D69,\n\t2288:  0x6E2F,\n\t2289:  0x6E9D,\n\t2290:  0x7532,\n\t2291:  0x7687,\n\t2292:  0x786C,\n\t2293:  0x7A3F,\n\t2294:  0x7CE0,\n\t2295:  0x7D05,\n\t2296:  0x7D18,\n\t2297:  0x7D5E,\n\t2298:  0x7DB1,\n\t2299:  0x8015,\n\t2300:  0x8003,\n\t2301:  0x80AF,\n\t2302:  0x80B1,\n\t2303:  0x8154,\n\t2304:  0x818F,\n\t2305:  0x822A,\n\t2306:  0x8352,\n\t2307:  0x884C,\n\t2308:  0x8861,\n\t2309:  0x8B1B,\n\t2310:  0x8CA2,\n\t2311:  0x8CFC,\n\t2312:  0x90CA,\n\t2313:  0x9175,\n\t2314:  0x9271,\n\t2315:  0x783F,\n\t2316:  0x92FC,\n\t2317:  0x95A4,\n\t2318:  0x964D,\n\t2319:  0x9805,\n\t2320:  0x9999,\n\t2321:  0x9AD8,\n\t2322:  0x9D3B,\n\t2323:  0x525B,\n\t2324:  0x52AB,\n\t2325:  0x53F7,\n\t2326:  0x5408,\n\t2327:  0x58D5,\n\t2328:  0x62F7,\n\t2329:  0x6FE0,\n\t2330:  0x8C6A,\n\t2331:  0x8F5F,\n\t2332:  0x9EB9,\n\t2333:  0x514B,\n\t2334:  0x523B,\n\t2335:  0x544A,\n\t2336:  0x56FD,\n\t2337:  0x7A40,\n\t2338:  0x9177,\n\t2339:  0x9D60,\n\t2340:  0x9ED2,\n\t2341:  0x7344,\n\t2342:  0x6F09,\n\t2343:  0x8170,\n\t2344:  0x7511,\n\t2345:  0x5FFD,\n\t2346:  0x60DA,\n\t2347:  0x9AA8,\n\t2348:  0x72DB,\n\t2349:  0x8FBC,\n\t2350:  0x6B64,\n\t2351:  0x9803,\n\t2352:  0x4ECA,\n\t2353:  0x56F0,\n\t2354:  0x5764,\n\t2355:  0x58BE,\n\t2356:  0x5A5A,\n\t2357:  0x6068,\n\t2358:  0x61C7,\n\t2359:  0x660F,\n\t2360:  0x6606,\n\t2361:  0x6839,\n\t2362:  0x68B1,\n\t2363:  0x6DF7,\n\t2364:  0x75D5,\n\t2365:  0x7D3A,\n\t2366:  0x826E,\n\t2367:  0x9B42,\n\t2368:  0x4E9B,\n\t2369:  0x4F50,\n\t2370:  0x53C9,\n\t2371:  0x5506,\n\t2372:  0x5D6F,\n\t2373:  0x5DE6,\n\t2374:  0x5DEE,\n\t2375:  0x67FB,\n\t2376:  0x6C99,\n\t2377:  0x7473,\n\t2378:  0x7802,\n\t2379:  0x8A50,\n\t2380:  0x9396,\n\t2381:  0x88DF,\n\t2382:  0x5750,\n\t2383:  0x5EA7,\n\t2384:  0x632B,\n\t2385:  0x50B5,\n\t2386:  0x50AC,\n\t2387:  0x518D,\n\t2388:  0x6700,\n\t2389:  0x54C9,\n\t2390:  0x585E,\n\t2391:  0x59BB,\n\t2392:  0x5BB0,\n\t2393:  0x5F69,\n\t2394:  0x624D,\n\t2395:  0x63A1,\n\t2396:  0x683D,\n\t2397:  0x6B73,\n\t2398:  0x6E08,\n\t2399:  0x707D,\n\t2400:  0x91C7,\n\t2401:  0x7280,\n\t2402:  0x7815,\n\t2403:  0x7826,\n\t2404:  0x796D,\n\t2405:  0x658E,\n\t2406:  0x7D30,\n\t2407:  0x83DC,\n\t2408:  0x88C1,\n\t2409:  0x8F09,\n\t2410:  0x969B,\n\t2411:  0x5264,\n\t2412:  0x5728,\n\t2413:  0x6750,\n\t2414:  0x7F6A,\n\t2415:  0x8CA1,\n\t2416:  0x51B4,\n\t2417:  0x5742,\n\t2418:  0x962A,\n\t2419:  0x583A,\n\t2420:  0x698A,\n\t2421:  0x80B4,\n\t2422:  0x54B2,\n\t2423:  0x5D0E,\n\t2424:  0x57FC,\n\t2425:  0x7895,\n\t2426:  0x9DFA,\n\t2427:  0x4F5C,\n\t2428:  0x524A,\n\t2429:  0x548B,\n\t2430:  0x643E,\n\t2431:  0x6628,\n\t2432:  0x6714,\n\t2433:  0x67F5,\n\t2434:  0x7A84,\n\t2435:  0x7B56,\n\t2436:  0x7D22,\n\t2437:  0x932F,\n\t2438:  0x685C,\n\t2439:  0x9BAD,\n\t2440:  0x7B39,\n\t2441:  0x5319,\n\t2442:  0x518A,\n\t2443:  0x5237,\n\t2444:  0x5BDF,\n\t2445:  0x62F6,\n\t2446:  0x64AE,\n\t2447:  0x64E6,\n\t2448:  0x672D,\n\t2449:  0x6BBA,\n\t2450:  0x85A9,\n\t2451:  0x96D1,\n\t2452:  0x7690,\n\t2453:  0x9BD6,\n\t2454:  0x634C,\n\t2455:  0x9306,\n\t2456:  0x9BAB,\n\t2457:  0x76BF,\n\t2458:  0x6652,\n\t2459:  0x4E09,\n\t2460:  0x5098,\n\t2461:  0x53C2,\n\t2462:  0x5C71,\n\t2463:  0x60E8,\n\t2464:  0x6492,\n\t2465:  0x6563,\n\t2466:  0x685F,\n\t2467:  0x71E6,\n\t2468:  0x73CA,\n\t2469:  0x7523,\n\t2470:  0x7B97,\n\t2471:  0x7E82,\n\t2472:  0x8695,\n\t2473:  0x8B83,\n\t2474:  0x8CDB,\n\t2475:  0x9178,\n\t2476:  0x9910,\n\t2477:  0x65AC,\n\t2478:  0x66AB,\n\t2479:  0x6B8B,\n\t2480:  0x4ED5,\n\t2481:  0x4ED4,\n\t2482:  0x4F3A,\n\t2483:  0x4F7F,\n\t2484:  0x523A,\n\t2485:  0x53F8,\n\t2486:  0x53F2,\n\t2487:  0x55E3,\n\t2488:  0x56DB,\n\t2489:  0x58EB,\n\t2490:  0x59CB,\n\t2491:  0x59C9,\n\t2492:  0x59FF,\n\t2493:  0x5B50,\n\t2494:  0x5C4D,\n\t2495:  0x5E02,\n\t2496:  0x5E2B,\n\t2497:  0x5FD7,\n\t2498:  0x601D,\n\t2499:  0x6307,\n\t2500:  0x652F,\n\t2501:  0x5B5C,\n\t2502:  0x65AF,\n\t2503:  0x65BD,\n\t2504:  0x65E8,\n\t2505:  0x679D,\n\t2506:  0x6B62,\n\t2507:  0x6B7B,\n\t2508:  0x6C0F,\n\t2509:  0x7345,\n\t2510:  0x7949,\n\t2511:  0x79C1,\n\t2512:  0x7CF8,\n\t2513:  0x7D19,\n\t2514:  0x7D2B,\n\t2515:  0x80A2,\n\t2516:  0x8102,\n\t2517:  0x81F3,\n\t2518:  0x8996,\n\t2519:  0x8A5E,\n\t2520:  0x8A69,\n\t2521:  0x8A66,\n\t2522:  0x8A8C,\n\t2523:  0x8AEE,\n\t2524:  0x8CC7,\n\t2525:  0x8CDC,\n\t2526:  0x96CC,\n\t2527:  0x98FC,\n\t2528:  0x6B6F,\n\t2529:  0x4E8B,\n\t2530:  0x4F3C,\n\t2531:  0x4F8D,\n\t2532:  0x5150,\n\t2533:  0x5B57,\n\t2534:  0x5BFA,\n\t2535:  0x6148,\n\t2536:  0x6301,\n\t2537:  0x6642,\n\t2538:  0x6B21,\n\t2539:  0x6ECB,\n\t2540:  0x6CBB,\n\t2541:  0x723E,\n\t2542:  0x74BD,\n\t2543:  0x75D4,\n\t2544:  0x78C1,\n\t2545:  0x793A,\n\t2546:  0x800C,\n\t2547:  0x8033,\n\t2548:  0x81EA,\n\t2549:  0x8494,\n\t2550:  0x8F9E,\n\t2551:  0x6C50,\n\t2552:  0x9E7F,\n\t2553:  0x5F0F,\n\t2554:  0x8B58,\n\t2555:  0x9D2B,\n\t2556:  0x7AFA,\n\t2557:  0x8EF8,\n\t2558:  0x5B8D,\n\t2559:  0x96EB,\n\t2560:  0x4E03,\n\t2561:  0x53F1,\n\t2562:  0x57F7,\n\t2563:  0x5931,\n\t2564:  0x5AC9,\n\t2565:  0x5BA4,\n\t2566:  0x6089,\n\t2567:  0x6E7F,\n\t2568:  0x6F06,\n\t2569:  0x75BE,\n\t2570:  0x8CEA,\n\t2571:  0x5B9F,\n\t2572:  0x8500,\n\t2573:  0x7BE0,\n\t2574:  0x5072,\n\t2575:  0x67F4,\n\t2576:  0x829D,\n\t2577:  0x5C61,\n\t2578:  0x854A,\n\t2579:  0x7E1E,\n\t2580:  0x820E,\n\t2581:  0x5199,\n\t2582:  0x5C04,\n\t2583:  0x6368,\n\t2584:  0x8D66,\n\t2585:  0x659C,\n\t2586:  0x716E,\n\t2587:  0x793E,\n\t2588:  0x7D17,\n\t2589:  0x8005,\n\t2590:  0x8B1D,\n\t2591:  0x8ECA,\n\t2592:  0x906E,\n\t2593:  0x86C7,\n\t2594:  0x90AA,\n\t2595:  0x501F,\n\t2596:  0x52FA,\n\t2597:  0x5C3A,\n\t2598:  0x6753,\n\t2599:  0x707C,\n\t2600:  0x7235,\n\t2601:  0x914C,\n\t2602:  0x91C8,\n\t2603:  0x932B,\n\t2604:  0x82E5,\n\t2605:  0x5BC2,\n\t2606:  0x5F31,\n\t2607:  0x60F9,\n\t2608:  0x4E3B,\n\t2609:  0x53D6,\n\t2610:  0x5B88,\n\t2611:  0x624B,\n\t2612:  0x6731,\n\t2613:  0x6B8A,\n\t2614:  0x72E9,\n\t2615:  0x73E0,\n\t2616:  0x7A2E,\n\t2617:  0x816B,\n\t2618:  0x8DA3,\n\t2619:  0x9152,\n\t2620:  0x9996,\n\t2621:  0x5112,\n\t2622:  0x53D7,\n\t2623:  0x546A,\n\t2624:  0x5BFF,\n\t2625:  0x6388,\n\t2626:  0x6A39,\n\t2627:  0x7DAC,\n\t2628:  0x9700,\n\t2629:  0x56DA,\n\t2630:  0x53CE,\n\t2631:  0x5468,\n\t2632:  0x5B97,\n\t2633:  0x5C31,\n\t2634:  0x5DDE,\n\t2635:  0x4FEE,\n\t2636:  0x6101,\n\t2637:  0x62FE,\n\t2638:  0x6D32,\n\t2639:  0x79C0,\n\t2640:  0x79CB,\n\t2641:  0x7D42,\n\t2642:  0x7E4D,\n\t2643:  0x7FD2,\n\t2644:  0x81ED,\n\t2645:  0x821F,\n\t2646:  0x8490,\n\t2647:  0x8846,\n\t2648:  0x8972,\n\t2649:  0x8B90,\n\t2650:  0x8E74,\n\t2651:  0x8F2F,\n\t2652:  0x9031,\n\t2653:  0x914B,\n\t2654:  0x916C,\n\t2655:  0x96C6,\n\t2656:  0x919C,\n\t2657:  0x4EC0,\n\t2658:  0x4F4F,\n\t2659:  0x5145,\n\t2660:  0x5341,\n\t2661:  0x5F93,\n\t2662:  0x620E,\n\t2663:  0x67D4,\n\t2664:  0x6C41,\n\t2665:  0x6E0B,\n\t2666:  0x7363,\n\t2667:  0x7E26,\n\t2668:  0x91CD,\n\t2669:  0x9283,\n\t2670:  0x53D4,\n\t2671:  0x5919,\n\t2672:  0x5BBF,\n\t2673:  0x6DD1,\n\t2674:  0x795D,\n\t2675:  0x7E2E,\n\t2676:  0x7C9B,\n\t2677:  0x587E,\n\t2678:  0x719F,\n\t2679:  0x51FA,\n\t2680:  0x8853,\n\t2681:  0x8FF0,\n\t2682:  0x4FCA,\n\t2683:  0x5CFB,\n\t2684:  0x6625,\n\t2685:  0x77AC,\n\t2686:  0x7AE3,\n\t2687:  0x821C,\n\t2688:  0x99FF,\n\t2689:  0x51C6,\n\t2690:  0x5FAA,\n\t2691:  0x65EC,\n\t2692:  0x696F,\n\t2693:  0x6B89,\n\t2694:  0x6DF3,\n\t2695:  0x6E96,\n\t2696:  0x6F64,\n\t2697:  0x76FE,\n\t2698:  0x7D14,\n\t2699:  0x5DE1,\n\t2700:  0x9075,\n\t2701:  0x9187,\n\t2702:  0x9806,\n\t2703:  0x51E6,\n\t2704:  0x521D,\n\t2705:  0x6240,\n\t2706:  0x6691,\n\t2707:  0x66D9,\n\t2708:  0x6E1A,\n\t2709:  0x5EB6,\n\t2710:  0x7DD2,\n\t2711:  0x7F72,\n\t2712:  0x66F8,\n\t2713:  0x85AF,\n\t2714:  0x85F7,\n\t2715:  0x8AF8,\n\t2716:  0x52A9,\n\t2717:  0x53D9,\n\t2718:  0x5973,\n\t2719:  0x5E8F,\n\t2720:  0x5F90,\n\t2721:  0x6055,\n\t2722:  0x92E4,\n\t2723:  0x9664,\n\t2724:  0x50B7,\n\t2725:  0x511F,\n\t2726:  0x52DD,\n\t2727:  0x5320,\n\t2728:  0x5347,\n\t2729:  0x53EC,\n\t2730:  0x54E8,\n\t2731:  0x5546,\n\t2732:  0x5531,\n\t2733:  0x5617,\n\t2734:  0x5968,\n\t2735:  0x59BE,\n\t2736:  0x5A3C,\n\t2737:  0x5BB5,\n\t2738:  0x5C06,\n\t2739:  0x5C0F,\n\t2740:  0x5C11,\n\t2741:  0x5C1A,\n\t2742:  0x5E84,\n\t2743:  0x5E8A,\n\t2744:  0x5EE0,\n\t2745:  0x5F70,\n\t2746:  0x627F,\n\t2747:  0x6284,\n\t2748:  0x62DB,\n\t2749:  0x638C,\n\t2750:  0x6377,\n\t2751:  0x6607,\n\t2752:  0x660C,\n\t2753:  0x662D,\n\t2754:  0x6676,\n\t2755:  0x677E,\n\t2756:  0x68A2,\n\t2757:  0x6A1F,\n\t2758:  0x6A35,\n\t2759:  0x6CBC,\n\t2760:  0x6D88,\n\t2761:  0x6E09,\n\t2762:  0x6E58,\n\t2763:  0x713C,\n\t2764:  0x7126,\n\t2765:  0x7167,\n\t2766:  0x75C7,\n\t2767:  0x7701,\n\t2768:  0x785D,\n\t2769:  0x7901,\n\t2770:  0x7965,\n\t2771:  0x79F0,\n\t2772:  0x7AE0,\n\t2773:  0x7B11,\n\t2774:  0x7CA7,\n\t2775:  0x7D39,\n\t2776:  0x8096,\n\t2777:  0x83D6,\n\t2778:  0x848B,\n\t2779:  0x8549,\n\t2780:  0x885D,\n\t2781:  0x88F3,\n\t2782:  0x8A1F,\n\t2783:  0x8A3C,\n\t2784:  0x8A54,\n\t2785:  0x8A73,\n\t2786:  0x8C61,\n\t2787:  0x8CDE,\n\t2788:  0x91A4,\n\t2789:  0x9266,\n\t2790:  0x937E,\n\t2791:  0x9418,\n\t2792:  0x969C,\n\t2793:  0x9798,\n\t2794:  0x4E0A,\n\t2795:  0x4E08,\n\t2796:  0x4E1E,\n\t2797:  0x4E57,\n\t2798:  0x5197,\n\t2799:  0x5270,\n\t2800:  0x57CE,\n\t2801:  0x5834,\n\t2802:  0x58CC,\n\t2803:  0x5B22,\n\t2804:  0x5E38,\n\t2805:  0x60C5,\n\t2806:  0x64FE,\n\t2807:  0x6761,\n\t2808:  0x6756,\n\t2809:  0x6D44,\n\t2810:  0x72B6,\n\t2811:  0x7573,\n\t2812:  0x7A63,\n\t2813:  0x84B8,\n\t2814:  0x8B72,\n\t2815:  0x91B8,\n\t2816:  0x9320,\n\t2817:  0x5631,\n\t2818:  0x57F4,\n\t2819:  0x98FE,\n\t2820:  0x62ED,\n\t2821:  0x690D,\n\t2822:  0x6B96,\n\t2823:  0x71ED,\n\t2824:  0x7E54,\n\t2825:  0x8077,\n\t2826:  0x8272,\n\t2827:  0x89E6,\n\t2828:  0x98DF,\n\t2829:  0x8755,\n\t2830:  0x8FB1,\n\t2831:  0x5C3B,\n\t2832:  0x4F38,\n\t2833:  0x4FE1,\n\t2834:  0x4FB5,\n\t2835:  0x5507,\n\t2836:  0x5A20,\n\t2837:  0x5BDD,\n\t2838:  0x5BE9,\n\t2839:  0x5FC3,\n\t2840:  0x614E,\n\t2841:  0x632F,\n\t2842:  0x65B0,\n\t2843:  0x664B,\n\t2844:  0x68EE,\n\t2845:  0x699B,\n\t2846:  0x6D78,\n\t2847:  0x6DF1,\n\t2848:  0x7533,\n\t2849:  0x75B9,\n\t2850:  0x771F,\n\t2851:  0x795E,\n\t2852:  0x79E6,\n\t2853:  0x7D33,\n\t2854:  0x81E3,\n\t2855:  0x82AF,\n\t2856:  0x85AA,\n\t2857:  0x89AA,\n\t2858:  0x8A3A,\n\t2859:  0x8EAB,\n\t2860:  0x8F9B,\n\t2861:  0x9032,\n\t2862:  0x91DD,\n\t2863:  0x9707,\n\t2864:  0x4EBA,\n\t2865:  0x4EC1,\n\t2866:  0x5203,\n\t2867:  0x5875,\n\t2868:  0x58EC,\n\t2869:  0x5C0B,\n\t2870:  0x751A,\n\t2871:  0x5C3D,\n\t2872:  0x814E,\n\t2873:  0x8A0A,\n\t2874:  0x8FC5,\n\t2875:  0x9663,\n\t2876:  0x976D,\n\t2877:  0x7B25,\n\t2878:  0x8ACF,\n\t2879:  0x9808,\n\t2880:  0x9162,\n\t2881:  0x56F3,\n\t2882:  0x53A8,\n\t2883:  0x9017,\n\t2884:  0x5439,\n\t2885:  0x5782,\n\t2886:  0x5E25,\n\t2887:  0x63A8,\n\t2888:  0x6C34,\n\t2889:  0x708A,\n\t2890:  0x7761,\n\t2891:  0x7C8B,\n\t2892:  0x7FE0,\n\t2893:  0x8870,\n\t2894:  0x9042,\n\t2895:  0x9154,\n\t2896:  0x9310,\n\t2897:  0x9318,\n\t2898:  0x968F,\n\t2899:  0x745E,\n\t2900:  0x9AC4,\n\t2901:  0x5D07,\n\t2902:  0x5D69,\n\t2903:  0x6570,\n\t2904:  0x67A2,\n\t2905:  0x8DA8,\n\t2906:  0x96DB,\n\t2907:  0x636E,\n\t2908:  0x6749,\n\t2909:  0x6919,\n\t2910:  0x83C5,\n\t2911:  0x9817,\n\t2912:  0x96C0,\n\t2913:  0x88FE,\n\t2914:  0x6F84,\n\t2915:  0x647A,\n\t2916:  0x5BF8,\n\t2917:  0x4E16,\n\t2918:  0x702C,\n\t2919:  0x755D,\n\t2920:  0x662F,\n\t2921:  0x51C4,\n\t2922:  0x5236,\n\t2923:  0x52E2,\n\t2924:  0x59D3,\n\t2925:  0x5F81,\n\t2926:  0x6027,\n\t2927:  0x6210,\n\t2928:  0x653F,\n\t2929:  0x6574,\n\t2930:  0x661F,\n\t2931:  0x6674,\n\t2932:  0x68F2,\n\t2933:  0x6816,\n\t2934:  0x6B63,\n\t2935:  0x6E05,\n\t2936:  0x7272,\n\t2937:  0x751F,\n\t2938:  0x76DB,\n\t2939:  0x7CBE,\n\t2940:  0x8056,\n\t2941:  0x58F0,\n\t2942:  0x88FD,\n\t2943:  0x897F,\n\t2944:  0x8AA0,\n\t2945:  0x8A93,\n\t2946:  0x8ACB,\n\t2947:  0x901D,\n\t2948:  0x9192,\n\t2949:  0x9752,\n\t2950:  0x9759,\n\t2951:  0x6589,\n\t2952:  0x7A0E,\n\t2953:  0x8106,\n\t2954:  0x96BB,\n\t2955:  0x5E2D,\n\t2956:  0x60DC,\n\t2957:  0x621A,\n\t2958:  0x65A5,\n\t2959:  0x6614,\n\t2960:  0x6790,\n\t2961:  0x77F3,\n\t2962:  0x7A4D,\n\t2963:  0x7C4D,\n\t2964:  0x7E3E,\n\t2965:  0x810A,\n\t2966:  0x8CAC,\n\t2967:  0x8D64,\n\t2968:  0x8DE1,\n\t2969:  0x8E5F,\n\t2970:  0x78A9,\n\t2971:  0x5207,\n\t2972:  0x62D9,\n\t2973:  0x63A5,\n\t2974:  0x6442,\n\t2975:  0x6298,\n\t2976:  0x8A2D,\n\t2977:  0x7A83,\n\t2978:  0x7BC0,\n\t2979:  0x8AAC,\n\t2980:  0x96EA,\n\t2981:  0x7D76,\n\t2982:  0x820C,\n\t2983:  0x8749,\n\t2984:  0x4ED9,\n\t2985:  0x5148,\n\t2986:  0x5343,\n\t2987:  0x5360,\n\t2988:  0x5BA3,\n\t2989:  0x5C02,\n\t2990:  0x5C16,\n\t2991:  0x5DDD,\n\t2992:  0x6226,\n\t2993:  0x6247,\n\t2994:  0x64B0,\n\t2995:  0x6813,\n\t2996:  0x6834,\n\t2997:  0x6CC9,\n\t2998:  0x6D45,\n\t2999:  0x6D17,\n\t3000:  0x67D3,\n\t3001:  0x6F5C,\n\t3002:  0x714E,\n\t3003:  0x717D,\n\t3004:  0x65CB,\n\t3005:  0x7A7F,\n\t3006:  0x7BAD,\n\t3007:  0x7DDA,\n\t3008:  0x7E4A,\n\t3009:  0x7FA8,\n\t3010:  0x817A,\n\t3011:  0x821B,\n\t3012:  0x8239,\n\t3013:  0x85A6,\n\t3014:  0x8A6E,\n\t3015:  0x8CCE,\n\t3016:  0x8DF5,\n\t3017:  0x9078,\n\t3018:  0x9077,\n\t3019:  0x92AD,\n\t3020:  0x9291,\n\t3021:  0x9583,\n\t3022:  0x9BAE,\n\t3023:  0x524D,\n\t3024:  0x5584,\n\t3025:  0x6F38,\n\t3026:  0x7136,\n\t3027:  0x5168,\n\t3028:  0x7985,\n\t3029:  0x7E55,\n\t3030:  0x81B3,\n\t3031:  0x7CCE,\n\t3032:  0x564C,\n\t3033:  0x5851,\n\t3034:  0x5CA8,\n\t3035:  0x63AA,\n\t3036:  0x66FE,\n\t3037:  0x66FD,\n\t3038:  0x695A,\n\t3039:  0x72D9,\n\t3040:  0x758F,\n\t3041:  0x758E,\n\t3042:  0x790E,\n\t3043:  0x7956,\n\t3044:  0x79DF,\n\t3045:  0x7C97,\n\t3046:  0x7D20,\n\t3047:  0x7D44,\n\t3048:  0x8607,\n\t3049:  0x8A34,\n\t3050:  0x963B,\n\t3051:  0x9061,\n\t3052:  0x9F20,\n\t3053:  0x50E7,\n\t3054:  0x5275,\n\t3055:  0x53CC,\n\t3056:  0x53E2,\n\t3057:  0x5009,\n\t3058:  0x55AA,\n\t3059:  0x58EE,\n\t3060:  0x594F,\n\t3061:  0x723D,\n\t3062:  0x5B8B,\n\t3063:  0x5C64,\n\t3064:  0x531D,\n\t3065:  0x60E3,\n\t3066:  0x60F3,\n\t3067:  0x635C,\n\t3068:  0x6383,\n\t3069:  0x633F,\n\t3070:  0x63BB,\n\t3071:  0x64CD,\n\t3072:  0x65E9,\n\t3073:  0x66F9,\n\t3074:  0x5DE3,\n\t3075:  0x69CD,\n\t3076:  0x69FD,\n\t3077:  0x6F15,\n\t3078:  0x71E5,\n\t3079:  0x4E89,\n\t3080:  0x75E9,\n\t3081:  0x76F8,\n\t3082:  0x7A93,\n\t3083:  0x7CDF,\n\t3084:  0x7DCF,\n\t3085:  0x7D9C,\n\t3086:  0x8061,\n\t3087:  0x8349,\n\t3088:  0x8358,\n\t3089:  0x846C,\n\t3090:  0x84BC,\n\t3091:  0x85FB,\n\t3092:  0x88C5,\n\t3093:  0x8D70,\n\t3094:  0x9001,\n\t3095:  0x906D,\n\t3096:  0x9397,\n\t3097:  0x971C,\n\t3098:  0x9A12,\n\t3099:  0x50CF,\n\t3100:  0x5897,\n\t3101:  0x618E,\n\t3102:  0x81D3,\n\t3103:  0x8535,\n\t3104:  0x8D08,\n\t3105:  0x9020,\n\t3106:  0x4FC3,\n\t3107:  0x5074,\n\t3108:  0x5247,\n\t3109:  0x5373,\n\t3110:  0x606F,\n\t3111:  0x6349,\n\t3112:  0x675F,\n\t3113:  0x6E2C,\n\t3114:  0x8DB3,\n\t3115:  0x901F,\n\t3116:  0x4FD7,\n\t3117:  0x5C5E,\n\t3118:  0x8CCA,\n\t3119:  0x65CF,\n\t3120:  0x7D9A,\n\t3121:  0x5352,\n\t3122:  0x8896,\n\t3123:  0x5176,\n\t3124:  0x63C3,\n\t3125:  0x5B58,\n\t3126:  0x5B6B,\n\t3127:  0x5C0A,\n\t3128:  0x640D,\n\t3129:  0x6751,\n\t3130:  0x905C,\n\t3131:  0x4ED6,\n\t3132:  0x591A,\n\t3133:  0x592A,\n\t3134:  0x6C70,\n\t3135:  0x8A51,\n\t3136:  0x553E,\n\t3137:  0x5815,\n\t3138:  0x59A5,\n\t3139:  0x60F0,\n\t3140:  0x6253,\n\t3141:  0x67C1,\n\t3142:  0x8235,\n\t3143:  0x6955,\n\t3144:  0x9640,\n\t3145:  0x99C4,\n\t3146:  0x9A28,\n\t3147:  0x4F53,\n\t3148:  0x5806,\n\t3149:  0x5BFE,\n\t3150:  0x8010,\n\t3151:  0x5CB1,\n\t3152:  0x5E2F,\n\t3153:  0x5F85,\n\t3154:  0x6020,\n\t3155:  0x614B,\n\t3156:  0x6234,\n\t3157:  0x66FF,\n\t3158:  0x6CF0,\n\t3159:  0x6EDE,\n\t3160:  0x80CE,\n\t3161:  0x817F,\n\t3162:  0x82D4,\n\t3163:  0x888B,\n\t3164:  0x8CB8,\n\t3165:  0x9000,\n\t3166:  0x902E,\n\t3167:  0x968A,\n\t3168:  0x9EDB,\n\t3169:  0x9BDB,\n\t3170:  0x4EE3,\n\t3171:  0x53F0,\n\t3172:  0x5927,\n\t3173:  0x7B2C,\n\t3174:  0x918D,\n\t3175:  0x984C,\n\t3176:  0x9DF9,\n\t3177:  0x6EDD,\n\t3178:  0x7027,\n\t3179:  0x5353,\n\t3180:  0x5544,\n\t3181:  0x5B85,\n\t3182:  0x6258,\n\t3183:  0x629E,\n\t3184:  0x62D3,\n\t3185:  0x6CA2,\n\t3186:  0x6FEF,\n\t3187:  0x7422,\n\t3188:  0x8A17,\n\t3189:  0x9438,\n\t3190:  0x6FC1,\n\t3191:  0x8AFE,\n\t3192:  0x8338,\n\t3193:  0x51E7,\n\t3194:  0x86F8,\n\t3195:  0x53EA,\n\t3196:  0x53E9,\n\t3197:  0x4F46,\n\t3198:  0x9054,\n\t3199:  0x8FB0,\n\t3200:  0x596A,\n\t3201:  0x8131,\n\t3202:  0x5DFD,\n\t3203:  0x7AEA,\n\t3204:  0x8FBF,\n\t3205:  0x68DA,\n\t3206:  0x8C37,\n\t3207:  0x72F8,\n\t3208:  0x9C48,\n\t3209:  0x6A3D,\n\t3210:  0x8AB0,\n\t3211:  0x4E39,\n\t3212:  0x5358,\n\t3213:  0x5606,\n\t3214:  0x5766,\n\t3215:  0x62C5,\n\t3216:  0x63A2,\n\t3217:  0x65E6,\n\t3218:  0x6B4E,\n\t3219:  0x6DE1,\n\t3220:  0x6E5B,\n\t3221:  0x70AD,\n\t3222:  0x77ED,\n\t3223:  0x7AEF,\n\t3224:  0x7BAA,\n\t3225:  0x7DBB,\n\t3226:  0x803D,\n\t3227:  0x80C6,\n\t3228:  0x86CB,\n\t3229:  0x8A95,\n\t3230:  0x935B,\n\t3231:  0x56E3,\n\t3232:  0x58C7,\n\t3233:  0x5F3E,\n\t3234:  0x65AD,\n\t3235:  0x6696,\n\t3236:  0x6A80,\n\t3237:  0x6BB5,\n\t3238:  0x7537,\n\t3239:  0x8AC7,\n\t3240:  0x5024,\n\t3241:  0x77E5,\n\t3242:  0x5730,\n\t3243:  0x5F1B,\n\t3244:  0x6065,\n\t3245:  0x667A,\n\t3246:  0x6C60,\n\t3247:  0x75F4,\n\t3248:  0x7A1A,\n\t3249:  0x7F6E,\n\t3250:  0x81F4,\n\t3251:  0x8718,\n\t3252:  0x9045,\n\t3253:  0x99B3,\n\t3254:  0x7BC9,\n\t3255:  0x755C,\n\t3256:  0x7AF9,\n\t3257:  0x7B51,\n\t3258:  0x84C4,\n\t3259:  0x9010,\n\t3260:  0x79E9,\n\t3261:  0x7A92,\n\t3262:  0x8336,\n\t3263:  0x5AE1,\n\t3264:  0x7740,\n\t3265:  0x4E2D,\n\t3266:  0x4EF2,\n\t3267:  0x5B99,\n\t3268:  0x5FE0,\n\t3269:  0x62BD,\n\t3270:  0x663C,\n\t3271:  0x67F1,\n\t3272:  0x6CE8,\n\t3273:  0x866B,\n\t3274:  0x8877,\n\t3275:  0x8A3B,\n\t3276:  0x914E,\n\t3277:  0x92F3,\n\t3278:  0x99D0,\n\t3279:  0x6A17,\n\t3280:  0x7026,\n\t3281:  0x732A,\n\t3282:  0x82E7,\n\t3283:  0x8457,\n\t3284:  0x8CAF,\n\t3285:  0x4E01,\n\t3286:  0x5146,\n\t3287:  0x51CB,\n\t3288:  0x558B,\n\t3289:  0x5BF5,\n\t3290:  0x5E16,\n\t3291:  0x5E33,\n\t3292:  0x5E81,\n\t3293:  0x5F14,\n\t3294:  0x5F35,\n\t3295:  0x5F6B,\n\t3296:  0x5FB4,\n\t3297:  0x61F2,\n\t3298:  0x6311,\n\t3299:  0x66A2,\n\t3300:  0x671D,\n\t3301:  0x6F6E,\n\t3302:  0x7252,\n\t3303:  0x753A,\n\t3304:  0x773A,\n\t3305:  0x8074,\n\t3306:  0x8139,\n\t3307:  0x8178,\n\t3308:  0x8776,\n\t3309:  0x8ABF,\n\t3310:  0x8ADC,\n\t3311:  0x8D85,\n\t3312:  0x8DF3,\n\t3313:  0x929A,\n\t3314:  0x9577,\n\t3315:  0x9802,\n\t3316:  0x9CE5,\n\t3317:  0x52C5,\n\t3318:  0x6357,\n\t3319:  0x76F4,\n\t3320:  0x6715,\n\t3321:  0x6C88,\n\t3322:  0x73CD,\n\t3323:  0x8CC3,\n\t3324:  0x93AE,\n\t3325:  0x9673,\n\t3326:  0x6D25,\n\t3327:  0x589C,\n\t3328:  0x690E,\n\t3329:  0x69CC,\n\t3330:  0x8FFD,\n\t3331:  0x939A,\n\t3332:  0x75DB,\n\t3333:  0x901A,\n\t3334:  0x585A,\n\t3335:  0x6802,\n\t3336:  0x63B4,\n\t3337:  0x69FB,\n\t3338:  0x4F43,\n\t3339:  0x6F2C,\n\t3340:  0x67D8,\n\t3341:  0x8FBB,\n\t3342:  0x8526,\n\t3343:  0x7DB4,\n\t3344:  0x9354,\n\t3345:  0x693F,\n\t3346:  0x6F70,\n\t3347:  0x576A,\n\t3348:  0x58F7,\n\t3349:  0x5B2C,\n\t3350:  0x7D2C,\n\t3351:  0x722A,\n\t3352:  0x540A,\n\t3353:  0x91E3,\n\t3354:  0x9DB4,\n\t3355:  0x4EAD,\n\t3356:  0x4F4E,\n\t3357:  0x505C,\n\t3358:  0x5075,\n\t3359:  0x5243,\n\t3360:  0x8C9E,\n\t3361:  0x5448,\n\t3362:  0x5824,\n\t3363:  0x5B9A,\n\t3364:  0x5E1D,\n\t3365:  0x5E95,\n\t3366:  0x5EAD,\n\t3367:  0x5EF7,\n\t3368:  0x5F1F,\n\t3369:  0x608C,\n\t3370:  0x62B5,\n\t3371:  0x633A,\n\t3372:  0x63D0,\n\t3373:  0x68AF,\n\t3374:  0x6C40,\n\t3375:  0x7887,\n\t3376:  0x798E,\n\t3377:  0x7A0B,\n\t3378:  0x7DE0,\n\t3379:  0x8247,\n\t3380:  0x8A02,\n\t3381:  0x8AE6,\n\t3382:  0x8E44,\n\t3383:  0x9013,\n\t3384:  0x90B8,\n\t3385:  0x912D,\n\t3386:  0x91D8,\n\t3387:  0x9F0E,\n\t3388:  0x6CE5,\n\t3389:  0x6458,\n\t3390:  0x64E2,\n\t3391:  0x6575,\n\t3392:  0x6EF4,\n\t3393:  0x7684,\n\t3394:  0x7B1B,\n\t3395:  0x9069,\n\t3396:  0x93D1,\n\t3397:  0x6EBA,\n\t3398:  0x54F2,\n\t3399:  0x5FB9,\n\t3400:  0x64A4,\n\t3401:  0x8F4D,\n\t3402:  0x8FED,\n\t3403:  0x9244,\n\t3404:  0x5178,\n\t3405:  0x586B,\n\t3406:  0x5929,\n\t3407:  0x5C55,\n\t3408:  0x5E97,\n\t3409:  0x6DFB,\n\t3410:  0x7E8F,\n\t3411:  0x751C,\n\t3412:  0x8CBC,\n\t3413:  0x8EE2,\n\t3414:  0x985B,\n\t3415:  0x70B9,\n\t3416:  0x4F1D,\n\t3417:  0x6BBF,\n\t3418:  0x6FB1,\n\t3419:  0x7530,\n\t3420:  0x96FB,\n\t3421:  0x514E,\n\t3422:  0x5410,\n\t3423:  0x5835,\n\t3424:  0x5857,\n\t3425:  0x59AC,\n\t3426:  0x5C60,\n\t3427:  0x5F92,\n\t3428:  0x6597,\n\t3429:  0x675C,\n\t3430:  0x6E21,\n\t3431:  0x767B,\n\t3432:  0x83DF,\n\t3433:  0x8CED,\n\t3434:  0x9014,\n\t3435:  0x90FD,\n\t3436:  0x934D,\n\t3437:  0x7825,\n\t3438:  0x783A,\n\t3439:  0x52AA,\n\t3440:  0x5EA6,\n\t3441:  0x571F,\n\t3442:  0x5974,\n\t3443:  0x6012,\n\t3444:  0x5012,\n\t3445:  0x515A,\n\t3446:  0x51AC,\n\t3447:  0x51CD,\n\t3448:  0x5200,\n\t3449:  0x5510,\n\t3450:  0x5854,\n\t3451:  0x5858,\n\t3452:  0x5957,\n\t3453:  0x5B95,\n\t3454:  0x5CF6,\n\t3455:  0x5D8B,\n\t3456:  0x60BC,\n\t3457:  0x6295,\n\t3458:  0x642D,\n\t3459:  0x6771,\n\t3460:  0x6843,\n\t3461:  0x68BC,\n\t3462:  0x68DF,\n\t3463:  0x76D7,\n\t3464:  0x6DD8,\n\t3465:  0x6E6F,\n\t3466:  0x6D9B,\n\t3467:  0x706F,\n\t3468:  0x71C8,\n\t3469:  0x5F53,\n\t3470:  0x75D8,\n\t3471:  0x7977,\n\t3472:  0x7B49,\n\t3473:  0x7B54,\n\t3474:  0x7B52,\n\t3475:  0x7CD6,\n\t3476:  0x7D71,\n\t3477:  0x5230,\n\t3478:  0x8463,\n\t3479:  0x8569,\n\t3480:  0x85E4,\n\t3481:  0x8A0E,\n\t3482:  0x8B04,\n\t3483:  0x8C46,\n\t3484:  0x8E0F,\n\t3485:  0x9003,\n\t3486:  0x900F,\n\t3487:  0x9419,\n\t3488:  0x9676,\n\t3489:  0x982D,\n\t3490:  0x9A30,\n\t3491:  0x95D8,\n\t3492:  0x50CD,\n\t3493:  0x52D5,\n\t3494:  0x540C,\n\t3495:  0x5802,\n\t3496:  0x5C0E,\n\t3497:  0x61A7,\n\t3498:  0x649E,\n\t3499:  0x6D1E,\n\t3500:  0x77B3,\n\t3501:  0x7AE5,\n\t3502:  0x80F4,\n\t3503:  0x8404,\n\t3504:  0x9053,\n\t3505:  0x9285,\n\t3506:  0x5CE0,\n\t3507:  0x9D07,\n\t3508:  0x533F,\n\t3509:  0x5F97,\n\t3510:  0x5FB3,\n\t3511:  0x6D9C,\n\t3512:  0x7279,\n\t3513:  0x7763,\n\t3514:  0x79BF,\n\t3515:  0x7BE4,\n\t3516:  0x6BD2,\n\t3517:  0x72EC,\n\t3518:  0x8AAD,\n\t3519:  0x6803,\n\t3520:  0x6A61,\n\t3521:  0x51F8,\n\t3522:  0x7A81,\n\t3523:  0x6934,\n\t3524:  0x5C4A,\n\t3525:  0x9CF6,\n\t3526:  0x82EB,\n\t3527:  0x5BC5,\n\t3528:  0x9149,\n\t3529:  0x701E,\n\t3530:  0x5678,\n\t3531:  0x5C6F,\n\t3532:  0x60C7,\n\t3533:  0x6566,\n\t3534:  0x6C8C,\n\t3535:  0x8C5A,\n\t3536:  0x9041,\n\t3537:  0x9813,\n\t3538:  0x5451,\n\t3539:  0x66C7,\n\t3540:  0x920D,\n\t3541:  0x5948,\n\t3542:  0x90A3,\n\t3543:  0x5185,\n\t3544:  0x4E4D,\n\t3545:  0x51EA,\n\t3546:  0x8599,\n\t3547:  0x8B0E,\n\t3548:  0x7058,\n\t3549:  0x637A,\n\t3550:  0x934B,\n\t3551:  0x6962,\n\t3552:  0x99B4,\n\t3553:  0x7E04,\n\t3554:  0x7577,\n\t3555:  0x5357,\n\t3556:  0x6960,\n\t3557:  0x8EDF,\n\t3558:  0x96E3,\n\t3559:  0x6C5D,\n\t3560:  0x4E8C,\n\t3561:  0x5C3C,\n\t3562:  0x5F10,\n\t3563:  0x8FE9,\n\t3564:  0x5302,\n\t3565:  0x8CD1,\n\t3566:  0x8089,\n\t3567:  0x8679,\n\t3568:  0x5EFF,\n\t3569:  0x65E5,\n\t3570:  0x4E73,\n\t3571:  0x5165,\n\t3572:  0x5982,\n\t3573:  0x5C3F,\n\t3574:  0x97EE,\n\t3575:  0x4EFB,\n\t3576:  0x598A,\n\t3577:  0x5FCD,\n\t3578:  0x8A8D,\n\t3579:  0x6FE1,\n\t3580:  0x79B0,\n\t3581:  0x7962,\n\t3582:  0x5BE7,\n\t3583:  0x8471,\n\t3584:  0x732B,\n\t3585:  0x71B1,\n\t3586:  0x5E74,\n\t3587:  0x5FF5,\n\t3588:  0x637B,\n\t3589:  0x649A,\n\t3590:  0x71C3,\n\t3591:  0x7C98,\n\t3592:  0x4E43,\n\t3593:  0x5EFC,\n\t3594:  0x4E4B,\n\t3595:  0x57DC,\n\t3596:  0x56A2,\n\t3597:  0x60A9,\n\t3598:  0x6FC3,\n\t3599:  0x7D0D,\n\t3600:  0x80FD,\n\t3601:  0x8133,\n\t3602:  0x81BF,\n\t3603:  0x8FB2,\n\t3604:  0x8997,\n\t3605:  0x86A4,\n\t3606:  0x5DF4,\n\t3607:  0x628A,\n\t3608:  0x64AD,\n\t3609:  0x8987,\n\t3610:  0x6777,\n\t3611:  0x6CE2,\n\t3612:  0x6D3E,\n\t3613:  0x7436,\n\t3614:  0x7834,\n\t3615:  0x5A46,\n\t3616:  0x7F75,\n\t3617:  0x82AD,\n\t3618:  0x99AC,\n\t3619:  0x4FF3,\n\t3620:  0x5EC3,\n\t3621:  0x62DD,\n\t3622:  0x6392,\n\t3623:  0x6557,\n\t3624:  0x676F,\n\t3625:  0x76C3,\n\t3626:  0x724C,\n\t3627:  0x80CC,\n\t3628:  0x80BA,\n\t3629:  0x8F29,\n\t3630:  0x914D,\n\t3631:  0x500D,\n\t3632:  0x57F9,\n\t3633:  0x5A92,\n\t3634:  0x6885,\n\t3635:  0x6973,\n\t3636:  0x7164,\n\t3637:  0x72FD,\n\t3638:  0x8CB7,\n\t3639:  0x58F2,\n\t3640:  0x8CE0,\n\t3641:  0x966A,\n\t3642:  0x9019,\n\t3643:  0x877F,\n\t3644:  0x79E4,\n\t3645:  0x77E7,\n\t3646:  0x8429,\n\t3647:  0x4F2F,\n\t3648:  0x5265,\n\t3649:  0x535A,\n\t3650:  0x62CD,\n\t3651:  0x67CF,\n\t3652:  0x6CCA,\n\t3653:  0x767D,\n\t3654:  0x7B94,\n\t3655:  0x7C95,\n\t3656:  0x8236,\n\t3657:  0x8584,\n\t3658:  0x8FEB,\n\t3659:  0x66DD,\n\t3660:  0x6F20,\n\t3661:  0x7206,\n\t3662:  0x7E1B,\n\t3663:  0x83AB,\n\t3664:  0x99C1,\n\t3665:  0x9EA6,\n\t3666:  0x51FD,\n\t3667:  0x7BB1,\n\t3668:  0x7872,\n\t3669:  0x7BB8,\n\t3670:  0x8087,\n\t3671:  0x7B48,\n\t3672:  0x6AE8,\n\t3673:  0x5E61,\n\t3674:  0x808C,\n\t3675:  0x7551,\n\t3676:  0x7560,\n\t3677:  0x516B,\n\t3678:  0x9262,\n\t3679:  0x6E8C,\n\t3680:  0x767A,\n\t3681:  0x9197,\n\t3682:  0x9AEA,\n\t3683:  0x4F10,\n\t3684:  0x7F70,\n\t3685:  0x629C,\n\t3686:  0x7B4F,\n\t3687:  0x95A5,\n\t3688:  0x9CE9,\n\t3689:  0x567A,\n\t3690:  0x5859,\n\t3691:  0x86E4,\n\t3692:  0x96BC,\n\t3693:  0x4F34,\n\t3694:  0x5224,\n\t3695:  0x534A,\n\t3696:  0x53CD,\n\t3697:  0x53DB,\n\t3698:  0x5E06,\n\t3699:  0x642C,\n\t3700:  0x6591,\n\t3701:  0x677F,\n\t3702:  0x6C3E,\n\t3703:  0x6C4E,\n\t3704:  0x7248,\n\t3705:  0x72AF,\n\t3706:  0x73ED,\n\t3707:  0x7554,\n\t3708:  0x7E41,\n\t3709:  0x822C,\n\t3710:  0x85E9,\n\t3711:  0x8CA9,\n\t3712:  0x7BC4,\n\t3713:  0x91C6,\n\t3714:  0x7169,\n\t3715:  0x9812,\n\t3716:  0x98EF,\n\t3717:  0x633D,\n\t3718:  0x6669,\n\t3719:  0x756A,\n\t3720:  0x76E4,\n\t3721:  0x78D0,\n\t3722:  0x8543,\n\t3723:  0x86EE,\n\t3724:  0x532A,\n\t3725:  0x5351,\n\t3726:  0x5426,\n\t3727:  0x5983,\n\t3728:  0x5E87,\n\t3729:  0x5F7C,\n\t3730:  0x60B2,\n\t3731:  0x6249,\n\t3732:  0x6279,\n\t3733:  0x62AB,\n\t3734:  0x6590,\n\t3735:  0x6BD4,\n\t3736:  0x6CCC,\n\t3737:  0x75B2,\n\t3738:  0x76AE,\n\t3739:  0x7891,\n\t3740:  0x79D8,\n\t3741:  0x7DCB,\n\t3742:  0x7F77,\n\t3743:  0x80A5,\n\t3744:  0x88AB,\n\t3745:  0x8AB9,\n\t3746:  0x8CBB,\n\t3747:  0x907F,\n\t3748:  0x975E,\n\t3749:  0x98DB,\n\t3750:  0x6A0B,\n\t3751:  0x7C38,\n\t3752:  0x5099,\n\t3753:  0x5C3E,\n\t3754:  0x5FAE,\n\t3755:  0x6787,\n\t3756:  0x6BD8,\n\t3757:  0x7435,\n\t3758:  0x7709,\n\t3759:  0x7F8E,\n\t3760:  0x9F3B,\n\t3761:  0x67CA,\n\t3762:  0x7A17,\n\t3763:  0x5339,\n\t3764:  0x758B,\n\t3765:  0x9AED,\n\t3766:  0x5F66,\n\t3767:  0x819D,\n\t3768:  0x83F1,\n\t3769:  0x8098,\n\t3770:  0x5F3C,\n\t3771:  0x5FC5,\n\t3772:  0x7562,\n\t3773:  0x7B46,\n\t3774:  0x903C,\n\t3775:  0x6867,\n\t3776:  0x59EB,\n\t3777:  0x5A9B,\n\t3778:  0x7D10,\n\t3779:  0x767E,\n\t3780:  0x8B2C,\n\t3781:  0x4FF5,\n\t3782:  0x5F6A,\n\t3783:  0x6A19,\n\t3784:  0x6C37,\n\t3785:  0x6F02,\n\t3786:  0x74E2,\n\t3787:  0x7968,\n\t3788:  0x8868,\n\t3789:  0x8A55,\n\t3790:  0x8C79,\n\t3791:  0x5EDF,\n\t3792:  0x63CF,\n\t3793:  0x75C5,\n\t3794:  0x79D2,\n\t3795:  0x82D7,\n\t3796:  0x9328,\n\t3797:  0x92F2,\n\t3798:  0x849C,\n\t3799:  0x86ED,\n\t3800:  0x9C2D,\n\t3801:  0x54C1,\n\t3802:  0x5F6C,\n\t3803:  0x658C,\n\t3804:  0x6D5C,\n\t3805:  0x7015,\n\t3806:  0x8CA7,\n\t3807:  0x8CD3,\n\t3808:  0x983B,\n\t3809:  0x654F,\n\t3810:  0x74F6,\n\t3811:  0x4E0D,\n\t3812:  0x4ED8,\n\t3813:  0x57E0,\n\t3814:  0x592B,\n\t3815:  0x5A66,\n\t3816:  0x5BCC,\n\t3817:  0x51A8,\n\t3818:  0x5E03,\n\t3819:  0x5E9C,\n\t3820:  0x6016,\n\t3821:  0x6276,\n\t3822:  0x6577,\n\t3823:  0x65A7,\n\t3824:  0x666E,\n\t3825:  0x6D6E,\n\t3826:  0x7236,\n\t3827:  0x7B26,\n\t3828:  0x8150,\n\t3829:  0x819A,\n\t3830:  0x8299,\n\t3831:  0x8B5C,\n\t3832:  0x8CA0,\n\t3833:  0x8CE6,\n\t3834:  0x8D74,\n\t3835:  0x961C,\n\t3836:  0x9644,\n\t3837:  0x4FAE,\n\t3838:  0x64AB,\n\t3839:  0x6B66,\n\t3840:  0x821E,\n\t3841:  0x8461,\n\t3842:  0x856A,\n\t3843:  0x90E8,\n\t3844:  0x5C01,\n\t3845:  0x6953,\n\t3846:  0x98A8,\n\t3847:  0x847A,\n\t3848:  0x8557,\n\t3849:  0x4F0F,\n\t3850:  0x526F,\n\t3851:  0x5FA9,\n\t3852:  0x5E45,\n\t3853:  0x670D,\n\t3854:  0x798F,\n\t3855:  0x8179,\n\t3856:  0x8907,\n\t3857:  0x8986,\n\t3858:  0x6DF5,\n\t3859:  0x5F17,\n\t3860:  0x6255,\n\t3861:  0x6CB8,\n\t3862:  0x4ECF,\n\t3863:  0x7269,\n\t3864:  0x9B92,\n\t3865:  0x5206,\n\t3866:  0x543B,\n\t3867:  0x5674,\n\t3868:  0x58B3,\n\t3869:  0x61A4,\n\t3870:  0x626E,\n\t3871:  0x711A,\n\t3872:  0x596E,\n\t3873:  0x7C89,\n\t3874:  0x7CDE,\n\t3875:  0x7D1B,\n\t3876:  0x96F0,\n\t3877:  0x6587,\n\t3878:  0x805E,\n\t3879:  0x4E19,\n\t3880:  0x4F75,\n\t3881:  0x5175,\n\t3882:  0x5840,\n\t3883:  0x5E63,\n\t3884:  0x5E73,\n\t3885:  0x5F0A,\n\t3886:  0x67C4,\n\t3887:  0x4E26,\n\t3888:  0x853D,\n\t3889:  0x9589,\n\t3890:  0x965B,\n\t3891:  0x7C73,\n\t3892:  0x9801,\n\t3893:  0x50FB,\n\t3894:  0x58C1,\n\t3895:  0x7656,\n\t3896:  0x78A7,\n\t3897:  0x5225,\n\t3898:  0x77A5,\n\t3899:  0x8511,\n\t3900:  0x7B86,\n\t3901:  0x504F,\n\t3902:  0x5909,\n\t3903:  0x7247,\n\t3904:  0x7BC7,\n\t3905:  0x7DE8,\n\t3906:  0x8FBA,\n\t3907:  0x8FD4,\n\t3908:  0x904D,\n\t3909:  0x4FBF,\n\t3910:  0x52C9,\n\t3911:  0x5A29,\n\t3912:  0x5F01,\n\t3913:  0x97AD,\n\t3914:  0x4FDD,\n\t3915:  0x8217,\n\t3916:  0x92EA,\n\t3917:  0x5703,\n\t3918:  0x6355,\n\t3919:  0x6B69,\n\t3920:  0x752B,\n\t3921:  0x88DC,\n\t3922:  0x8F14,\n\t3923:  0x7A42,\n\t3924:  0x52DF,\n\t3925:  0x5893,\n\t3926:  0x6155,\n\t3927:  0x620A,\n\t3928:  0x66AE,\n\t3929:  0x6BCD,\n\t3930:  0x7C3F,\n\t3931:  0x83E9,\n\t3932:  0x5023,\n\t3933:  0x4FF8,\n\t3934:  0x5305,\n\t3935:  0x5446,\n\t3936:  0x5831,\n\t3937:  0x5949,\n\t3938:  0x5B9D,\n\t3939:  0x5CF0,\n\t3940:  0x5CEF,\n\t3941:  0x5D29,\n\t3942:  0x5E96,\n\t3943:  0x62B1,\n\t3944:  0x6367,\n\t3945:  0x653E,\n\t3946:  0x65B9,\n\t3947:  0x670B,\n\t3948:  0x6CD5,\n\t3949:  0x6CE1,\n\t3950:  0x70F9,\n\t3951:  0x7832,\n\t3952:  0x7E2B,\n\t3953:  0x80DE,\n\t3954:  0x82B3,\n\t3955:  0x840C,\n\t3956:  0x84EC,\n\t3957:  0x8702,\n\t3958:  0x8912,\n\t3959:  0x8A2A,\n\t3960:  0x8C4A,\n\t3961:  0x90A6,\n\t3962:  0x92D2,\n\t3963:  0x98FD,\n\t3964:  0x9CF3,\n\t3965:  0x9D6C,\n\t3966:  0x4E4F,\n\t3967:  0x4EA1,\n\t3968:  0x508D,\n\t3969:  0x5256,\n\t3970:  0x574A,\n\t3971:  0x59A8,\n\t3972:  0x5E3D,\n\t3973:  0x5FD8,\n\t3974:  0x5FD9,\n\t3975:  0x623F,\n\t3976:  0x66B4,\n\t3977:  0x671B,\n\t3978:  0x67D0,\n\t3979:  0x68D2,\n\t3980:  0x5192,\n\t3981:  0x7D21,\n\t3982:  0x80AA,\n\t3983:  0x81A8,\n\t3984:  0x8B00,\n\t3985:  0x8C8C,\n\t3986:  0x8CBF,\n\t3987:  0x927E,\n\t3988:  0x9632,\n\t3989:  0x5420,\n\t3990:  0x982C,\n\t3991:  0x5317,\n\t3992:  0x50D5,\n\t3993:  0x535C,\n\t3994:  0x58A8,\n\t3995:  0x64B2,\n\t3996:  0x6734,\n\t3997:  0x7267,\n\t3998:  0x7766,\n\t3999:  0x7A46,\n\t4000:  0x91E6,\n\t4001:  0x52C3,\n\t4002:  0x6CA1,\n\t4003:  0x6B86,\n\t4004:  0x5800,\n\t4005:  0x5E4C,\n\t4006:  0x5954,\n\t4007:  0x672C,\n\t4008:  0x7FFB,\n\t4009:  0x51E1,\n\t4010:  0x76C6,\n\t4011:  0x6469,\n\t4012:  0x78E8,\n\t4013:  0x9B54,\n\t4014:  0x9EBB,\n\t4015:  0x57CB,\n\t4016:  0x59B9,\n\t4017:  0x6627,\n\t4018:  0x679A,\n\t4019:  0x6BCE,\n\t4020:  0x54E9,\n\t4021:  0x69D9,\n\t4022:  0x5E55,\n\t4023:  0x819C,\n\t4024:  0x6795,\n\t4025:  0x9BAA,\n\t4026:  0x67FE,\n\t4027:  0x9C52,\n\t4028:  0x685D,\n\t4029:  0x4EA6,\n\t4030:  0x4FE3,\n\t4031:  0x53C8,\n\t4032:  0x62B9,\n\t4033:  0x672B,\n\t4034:  0x6CAB,\n\t4035:  0x8FC4,\n\t4036:  0x4FAD,\n\t4037:  0x7E6D,\n\t4038:  0x9EBF,\n\t4039:  0x4E07,\n\t4040:  0x6162,\n\t4041:  0x6E80,\n\t4042:  0x6F2B,\n\t4043:  0x8513,\n\t4044:  0x5473,\n\t4045:  0x672A,\n\t4046:  0x9B45,\n\t4047:  0x5DF3,\n\t4048:  0x7B95,\n\t4049:  0x5CAC,\n\t4050:  0x5BC6,\n\t4051:  0x871C,\n\t4052:  0x6E4A,\n\t4053:  0x84D1,\n\t4054:  0x7A14,\n\t4055:  0x8108,\n\t4056:  0x5999,\n\t4057:  0x7C8D,\n\t4058:  0x6C11,\n\t4059:  0x7720,\n\t4060:  0x52D9,\n\t4061:  0x5922,\n\t4062:  0x7121,\n\t4063:  0x725F,\n\t4064:  0x77DB,\n\t4065:  0x9727,\n\t4066:  0x9D61,\n\t4067:  0x690B,\n\t4068:  0x5A7F,\n\t4069:  0x5A18,\n\t4070:  0x51A5,\n\t4071:  0x540D,\n\t4072:  0x547D,\n\t4073:  0x660E,\n\t4074:  0x76DF,\n\t4075:  0x8FF7,\n\t4076:  0x9298,\n\t4077:  0x9CF4,\n\t4078:  0x59EA,\n\t4079:  0x725D,\n\t4080:  0x6EC5,\n\t4081:  0x514D,\n\t4082:  0x68C9,\n\t4083:  0x7DBF,\n\t4084:  0x7DEC,\n\t4085:  0x9762,\n\t4086:  0x9EBA,\n\t4087:  0x6478,\n\t4088:  0x6A21,\n\t4089:  0x8302,\n\t4090:  0x5984,\n\t4091:  0x5B5F,\n\t4092:  0x6BDB,\n\t4093:  0x731B,\n\t4094:  0x76F2,\n\t4095:  0x7DB2,\n\t4096:  0x8017,\n\t4097:  0x8499,\n\t4098:  0x5132,\n\t4099:  0x6728,\n\t4100:  0x9ED9,\n\t4101:  0x76EE,\n\t4102:  0x6762,\n\t4103:  0x52FF,\n\t4104:  0x9905,\n\t4105:  0x5C24,\n\t4106:  0x623B,\n\t4107:  0x7C7E,\n\t4108:  0x8CB0,\n\t4109:  0x554F,\n\t4110:  0x60B6,\n\t4111:  0x7D0B,\n\t4112:  0x9580,\n\t4113:  0x5301,\n\t4114:  0x4E5F,\n\t4115:  0x51B6,\n\t4116:  0x591C,\n\t4117:  0x723A,\n\t4118:  0x8036,\n\t4119:  0x91CE,\n\t4120:  0x5F25,\n\t4121:  0x77E2,\n\t4122:  0x5384,\n\t4123:  0x5F79,\n\t4124:  0x7D04,\n\t4125:  0x85AC,\n\t4126:  0x8A33,\n\t4127:  0x8E8D,\n\t4128:  0x9756,\n\t4129:  0x67F3,\n\t4130:  0x85AE,\n\t4131:  0x9453,\n\t4132:  0x6109,\n\t4133:  0x6108,\n\t4134:  0x6CB9,\n\t4135:  0x7652,\n\t4136:  0x8AED,\n\t4137:  0x8F38,\n\t4138:  0x552F,\n\t4139:  0x4F51,\n\t4140:  0x512A,\n\t4141:  0x52C7,\n\t4142:  0x53CB,\n\t4143:  0x5BA5,\n\t4144:  0x5E7D,\n\t4145:  0x60A0,\n\t4146:  0x6182,\n\t4147:  0x63D6,\n\t4148:  0x6709,\n\t4149:  0x67DA,\n\t4150:  0x6E67,\n\t4151:  0x6D8C,\n\t4152:  0x7336,\n\t4153:  0x7337,\n\t4154:  0x7531,\n\t4155:  0x7950,\n\t4156:  0x88D5,\n\t4157:  0x8A98,\n\t4158:  0x904A,\n\t4159:  0x9091,\n\t4160:  0x90F5,\n\t4161:  0x96C4,\n\t4162:  0x878D,\n\t4163:  0x5915,\n\t4164:  0x4E88,\n\t4165:  0x4F59,\n\t4166:  0x4E0E,\n\t4167:  0x8A89,\n\t4168:  0x8F3F,\n\t4169:  0x9810,\n\t4170:  0x50AD,\n\t4171:  0x5E7C,\n\t4172:  0x5996,\n\t4173:  0x5BB9,\n\t4174:  0x5EB8,\n\t4175:  0x63DA,\n\t4176:  0x63FA,\n\t4177:  0x64C1,\n\t4178:  0x66DC,\n\t4179:  0x694A,\n\t4180:  0x69D8,\n\t4181:  0x6D0B,\n\t4182:  0x6EB6,\n\t4183:  0x7194,\n\t4184:  0x7528,\n\t4185:  0x7AAF,\n\t4186:  0x7F8A,\n\t4187:  0x8000,\n\t4188:  0x8449,\n\t4189:  0x84C9,\n\t4190:  0x8981,\n\t4191:  0x8B21,\n\t4192:  0x8E0A,\n\t4193:  0x9065,\n\t4194:  0x967D,\n\t4195:  0x990A,\n\t4196:  0x617E,\n\t4197:  0x6291,\n\t4198:  0x6B32,\n\t4199:  0x6C83,\n\t4200:  0x6D74,\n\t4201:  0x7FCC,\n\t4202:  0x7FFC,\n\t4203:  0x6DC0,\n\t4204:  0x7F85,\n\t4205:  0x87BA,\n\t4206:  0x88F8,\n\t4207:  0x6765,\n\t4208:  0x83B1,\n\t4209:  0x983C,\n\t4210:  0x96F7,\n\t4211:  0x6D1B,\n\t4212:  0x7D61,\n\t4213:  0x843D,\n\t4214:  0x916A,\n\t4215:  0x4E71,\n\t4216:  0x5375,\n\t4217:  0x5D50,\n\t4218:  0x6B04,\n\t4219:  0x6FEB,\n\t4220:  0x85CD,\n\t4221:  0x862D,\n\t4222:  0x89A7,\n\t4223:  0x5229,\n\t4224:  0x540F,\n\t4225:  0x5C65,\n\t4226:  0x674E,\n\t4227:  0x68A8,\n\t4228:  0x7406,\n\t4229:  0x7483,\n\t4230:  0x75E2,\n\t4231:  0x88CF,\n\t4232:  0x88E1,\n\t4233:  0x91CC,\n\t4234:  0x96E2,\n\t4235:  0x9678,\n\t4236:  0x5F8B,\n\t4237:  0x7387,\n\t4238:  0x7ACB,\n\t4239:  0x844E,\n\t4240:  0x63A0,\n\t4241:  0x7565,\n\t4242:  0x5289,\n\t4243:  0x6D41,\n\t4244:  0x6E9C,\n\t4245:  0x7409,\n\t4246:  0x7559,\n\t4247:  0x786B,\n\t4248:  0x7C92,\n\t4249:  0x9686,\n\t4250:  0x7ADC,\n\t4251:  0x9F8D,\n\t4252:  0x4FB6,\n\t4253:  0x616E,\n\t4254:  0x65C5,\n\t4255:  0x865C,\n\t4256:  0x4E86,\n\t4257:  0x4EAE,\n\t4258:  0x50DA,\n\t4259:  0x4E21,\n\t4260:  0x51CC,\n\t4261:  0x5BEE,\n\t4262:  0x6599,\n\t4263:  0x6881,\n\t4264:  0x6DBC,\n\t4265:  0x731F,\n\t4266:  0x7642,\n\t4267:  0x77AD,\n\t4268:  0x7A1C,\n\t4269:  0x7CE7,\n\t4270:  0x826F,\n\t4271:  0x8AD2,\n\t4272:  0x907C,\n\t4273:  0x91CF,\n\t4274:  0x9675,\n\t4275:  0x9818,\n\t4276:  0x529B,\n\t4277:  0x7DD1,\n\t4278:  0x502B,\n\t4279:  0x5398,\n\t4280:  0x6797,\n\t4281:  0x6DCB,\n\t4282:  0x71D0,\n\t4283:  0x7433,\n\t4284:  0x81E8,\n\t4285:  0x8F2A,\n\t4286:  0x96A3,\n\t4287:  0x9C57,\n\t4288:  0x9E9F,\n\t4289:  0x7460,\n\t4290:  0x5841,\n\t4291:  0x6D99,\n\t4292:  0x7D2F,\n\t4293:  0x985E,\n\t4294:  0x4EE4,\n\t4295:  0x4F36,\n\t4296:  0x4F8B,\n\t4297:  0x51B7,\n\t4298:  0x52B1,\n\t4299:  0x5DBA,\n\t4300:  0x601C,\n\t4301:  0x73B2,\n\t4302:  0x793C,\n\t4303:  0x82D3,\n\t4304:  0x9234,\n\t4305:  0x96B7,\n\t4306:  0x96F6,\n\t4307:  0x970A,\n\t4308:  0x9E97,\n\t4309:  0x9F62,\n\t4310:  0x66A6,\n\t4311:  0x6B74,\n\t4312:  0x5217,\n\t4313:  0x52A3,\n\t4314:  0x70C8,\n\t4315:  0x88C2,\n\t4316:  0x5EC9,\n\t4317:  0x604B,\n\t4318:  0x6190,\n\t4319:  0x6F23,\n\t4320:  0x7149,\n\t4321:  0x7C3E,\n\t4322:  0x7DF4,\n\t4323:  0x806F,\n\t4324:  0x84EE,\n\t4325:  0x9023,\n\t4326:  0x932C,\n\t4327:  0x5442,\n\t4328:  0x9B6F,\n\t4329:  0x6AD3,\n\t4330:  0x7089,\n\t4331:  0x8CC2,\n\t4332:  0x8DEF,\n\t4333:  0x9732,\n\t4334:  0x52B4,\n\t4335:  0x5A41,\n\t4336:  0x5ECA,\n\t4337:  0x5F04,\n\t4338:  0x6717,\n\t4339:  0x697C,\n\t4340:  0x6994,\n\t4341:  0x6D6A,\n\t4342:  0x6F0F,\n\t4343:  0x7262,\n\t4344:  0x72FC,\n\t4345:  0x7BED,\n\t4346:  0x8001,\n\t4347:  0x807E,\n\t4348:  0x874B,\n\t4349:  0x90CE,\n\t4350:  0x516D,\n\t4351:  0x9E93,\n\t4352:  0x7984,\n\t4353:  0x808B,\n\t4354:  0x9332,\n\t4355:  0x8AD6,\n\t4356:  0x502D,\n\t4357:  0x548C,\n\t4358:  0x8A71,\n\t4359:  0x6B6A,\n\t4360:  0x8CC4,\n\t4361:  0x8107,\n\t4362:  0x60D1,\n\t4363:  0x67A0,\n\t4364:  0x9DF2,\n\t4365:  0x4E99,\n\t4366:  0x4E98,\n\t4367:  0x9C10,\n\t4368:  0x8A6B,\n\t4369:  0x85C1,\n\t4370:  0x8568,\n\t4371:  0x6900,\n\t4372:  0x6E7E,\n\t4373:  0x7897,\n\t4374:  0x8155,\n\t4418:  0x5F0C,\n\t4419:  0x4E10,\n\t4420:  0x4E15,\n\t4421:  0x4E2A,\n\t4422:  0x4E31,\n\t4423:  0x4E36,\n\t4424:  0x4E3C,\n\t4425:  0x4E3F,\n\t4426:  0x4E42,\n\t4427:  0x4E56,\n\t4428:  0x4E58,\n\t4429:  0x4E82,\n\t4430:  0x4E85,\n\t4431:  0x8C6B,\n\t4432:  0x4E8A,\n\t4433:  0x8212,\n\t4434:  0x5F0D,\n\t4435:  0x4E8E,\n\t4436:  0x4E9E,\n\t4437:  0x4E9F,\n\t4438:  0x4EA0,\n\t4439:  0x4EA2,\n\t4440:  0x4EB0,\n\t4441:  0x4EB3,\n\t4442:  0x4EB6,\n\t4443:  0x4ECE,\n\t4444:  0x4ECD,\n\t4445:  0x4EC4,\n\t4446:  0x4EC6,\n\t4447:  0x4EC2,\n\t4448:  0x4ED7,\n\t4449:  0x4EDE,\n\t4450:  0x4EED,\n\t4451:  0x4EDF,\n\t4452:  0x4EF7,\n\t4453:  0x4F09,\n\t4454:  0x4F5A,\n\t4455:  0x4F30,\n\t4456:  0x4F5B,\n\t4457:  0x4F5D,\n\t4458:  0x4F57,\n\t4459:  0x4F47,\n\t4460:  0x4F76,\n\t4461:  0x4F88,\n\t4462:  0x4F8F,\n\t4463:  0x4F98,\n\t4464:  0x4F7B,\n\t4465:  0x4F69,\n\t4466:  0x4F70,\n\t4467:  0x4F91,\n\t4468:  0x4F6F,\n\t4469:  0x4F86,\n\t4470:  0x4F96,\n\t4471:  0x5118,\n\t4472:  0x4FD4,\n\t4473:  0x4FDF,\n\t4474:  0x4FCE,\n\t4475:  0x4FD8,\n\t4476:  0x4FDB,\n\t4477:  0x4FD1,\n\t4478:  0x4FDA,\n\t4479:  0x4FD0,\n\t4480:  0x4FE4,\n\t4481:  0x4FE5,\n\t4482:  0x501A,\n\t4483:  0x5028,\n\t4484:  0x5014,\n\t4485:  0x502A,\n\t4486:  0x5025,\n\t4487:  0x5005,\n\t4488:  0x4F1C,\n\t4489:  0x4FF6,\n\t4490:  0x5021,\n\t4491:  0x5029,\n\t4492:  0x502C,\n\t4493:  0x4FFE,\n\t4494:  0x4FEF,\n\t4495:  0x5011,\n\t4496:  0x5006,\n\t4497:  0x5043,\n\t4498:  0x5047,\n\t4499:  0x6703,\n\t4500:  0x5055,\n\t4501:  0x5050,\n\t4502:  0x5048,\n\t4503:  0x505A,\n\t4504:  0x5056,\n\t4505:  0x506C,\n\t4506:  0x5078,\n\t4507:  0x5080,\n\t4508:  0x509A,\n\t4509:  0x5085,\n\t4510:  0x50B4,\n\t4511:  0x50B2,\n\t4512:  0x50C9,\n\t4513:  0x50CA,\n\t4514:  0x50B3,\n\t4515:  0x50C2,\n\t4516:  0x50D6,\n\t4517:  0x50DE,\n\t4518:  0x50E5,\n\t4519:  0x50ED,\n\t4520:  0x50E3,\n\t4521:  0x50EE,\n\t4522:  0x50F9,\n\t4523:  0x50F5,\n\t4524:  0x5109,\n\t4525:  0x5101,\n\t4526:  0x5102,\n\t4527:  0x5116,\n\t4528:  0x5115,\n\t4529:  0x5114,\n\t4530:  0x511A,\n\t4531:  0x5121,\n\t4532:  0x513A,\n\t4533:  0x5137,\n\t4534:  0x513C,\n\t4535:  0x513B,\n\t4536:  0x513F,\n\t4537:  0x5140,\n\t4538:  0x5152,\n\t4539:  0x514C,\n\t4540:  0x5154,\n\t4541:  0x5162,\n\t4542:  0x7AF8,\n\t4543:  0x5169,\n\t4544:  0x516A,\n\t4545:  0x516E,\n\t4546:  0x5180,\n\t4547:  0x5182,\n\t4548:  0x56D8,\n\t4549:  0x518C,\n\t4550:  0x5189,\n\t4551:  0x518F,\n\t4552:  0x5191,\n\t4553:  0x5193,\n\t4554:  0x5195,\n\t4555:  0x5196,\n\t4556:  0x51A4,\n\t4557:  0x51A6,\n\t4558:  0x51A2,\n\t4559:  0x51A9,\n\t4560:  0x51AA,\n\t4561:  0x51AB,\n\t4562:  0x51B3,\n\t4563:  0x51B1,\n\t4564:  0x51B2,\n\t4565:  0x51B0,\n\t4566:  0x51B5,\n\t4567:  0x51BD,\n\t4568:  0x51C5,\n\t4569:  0x51C9,\n\t4570:  0x51DB,\n\t4571:  0x51E0,\n\t4572:  0x8655,\n\t4573:  0x51E9,\n\t4574:  0x51ED,\n\t4575:  0x51F0,\n\t4576:  0x51F5,\n\t4577:  0x51FE,\n\t4578:  0x5204,\n\t4579:  0x520B,\n\t4580:  0x5214,\n\t4581:  0x520E,\n\t4582:  0x5227,\n\t4583:  0x522A,\n\t4584:  0x522E,\n\t4585:  0x5233,\n\t4586:  0x5239,\n\t4587:  0x524F,\n\t4588:  0x5244,\n\t4589:  0x524B,\n\t4590:  0x524C,\n\t4591:  0x525E,\n\t4592:  0x5254,\n\t4593:  0x526A,\n\t4594:  0x5274,\n\t4595:  0x5269,\n\t4596:  0x5273,\n\t4597:  0x527F,\n\t4598:  0x527D,\n\t4599:  0x528D,\n\t4600:  0x5294,\n\t4601:  0x5292,\n\t4602:  0x5271,\n\t4603:  0x5288,\n\t4604:  0x5291,\n\t4605:  0x8FA8,\n\t4606:  0x8FA7,\n\t4607:  0x52AC,\n\t4608:  0x52AD,\n\t4609:  0x52BC,\n\t4610:  0x52B5,\n\t4611:  0x52C1,\n\t4612:  0x52CD,\n\t4613:  0x52D7,\n\t4614:  0x52DE,\n\t4615:  0x52E3,\n\t4616:  0x52E6,\n\t4617:  0x98ED,\n\t4618:  0x52E0,\n\t4619:  0x52F3,\n\t4620:  0x52F5,\n\t4621:  0x52F8,\n\t4622:  0x52F9,\n\t4623:  0x5306,\n\t4624:  0x5308,\n\t4625:  0x7538,\n\t4626:  0x530D,\n\t4627:  0x5310,\n\t4628:  0x530F,\n\t4629:  0x5315,\n\t4630:  0x531A,\n\t4631:  0x5323,\n\t4632:  0x532F,\n\t4633:  0x5331,\n\t4634:  0x5333,\n\t4635:  0x5338,\n\t4636:  0x5340,\n\t4637:  0x5346,\n\t4638:  0x5345,\n\t4639:  0x4E17,\n\t4640:  0x5349,\n\t4641:  0x534D,\n\t4642:  0x51D6,\n\t4643:  0x535E,\n\t4644:  0x5369,\n\t4645:  0x536E,\n\t4646:  0x5918,\n\t4647:  0x537B,\n\t4648:  0x5377,\n\t4649:  0x5382,\n\t4650:  0x5396,\n\t4651:  0x53A0,\n\t4652:  0x53A6,\n\t4653:  0x53A5,\n\t4654:  0x53AE,\n\t4655:  0x53B0,\n\t4656:  0x53B6,\n\t4657:  0x53C3,\n\t4658:  0x7C12,\n\t4659:  0x96D9,\n\t4660:  0x53DF,\n\t4661:  0x66FC,\n\t4662:  0x71EE,\n\t4663:  0x53EE,\n\t4664:  0x53E8,\n\t4665:  0x53ED,\n\t4666:  0x53FA,\n\t4667:  0x5401,\n\t4668:  0x543D,\n\t4669:  0x5440,\n\t4670:  0x542C,\n\t4671:  0x542D,\n\t4672:  0x543C,\n\t4673:  0x542E,\n\t4674:  0x5436,\n\t4675:  0x5429,\n\t4676:  0x541D,\n\t4677:  0x544E,\n\t4678:  0x548F,\n\t4679:  0x5475,\n\t4680:  0x548E,\n\t4681:  0x545F,\n\t4682:  0x5471,\n\t4683:  0x5477,\n\t4684:  0x5470,\n\t4685:  0x5492,\n\t4686:  0x547B,\n\t4687:  0x5480,\n\t4688:  0x5476,\n\t4689:  0x5484,\n\t4690:  0x5490,\n\t4691:  0x5486,\n\t4692:  0x54C7,\n\t4693:  0x54A2,\n\t4694:  0x54B8,\n\t4695:  0x54A5,\n\t4696:  0x54AC,\n\t4697:  0x54C4,\n\t4698:  0x54C8,\n\t4699:  0x54A8,\n\t4700:  0x54AB,\n\t4701:  0x54C2,\n\t4702:  0x54A4,\n\t4703:  0x54BE,\n\t4704:  0x54BC,\n\t4705:  0x54D8,\n\t4706:  0x54E5,\n\t4707:  0x54E6,\n\t4708:  0x550F,\n\t4709:  0x5514,\n\t4710:  0x54FD,\n\t4711:  0x54EE,\n\t4712:  0x54ED,\n\t4713:  0x54FA,\n\t4714:  0x54E2,\n\t4715:  0x5539,\n\t4716:  0x5540,\n\t4717:  0x5563,\n\t4718:  0x554C,\n\t4719:  0x552E,\n\t4720:  0x555C,\n\t4721:  0x5545,\n\t4722:  0x5556,\n\t4723:  0x5557,\n\t4724:  0x5538,\n\t4725:  0x5533,\n\t4726:  0x555D,\n\t4727:  0x5599,\n\t4728:  0x5580,\n\t4729:  0x54AF,\n\t4730:  0x558A,\n\t4731:  0x559F,\n\t4732:  0x557B,\n\t4733:  0x557E,\n\t4734:  0x5598,\n\t4735:  0x559E,\n\t4736:  0x55AE,\n\t4737:  0x557C,\n\t4738:  0x5583,\n\t4739:  0x55A9,\n\t4740:  0x5587,\n\t4741:  0x55A8,\n\t4742:  0x55DA,\n\t4743:  0x55C5,\n\t4744:  0x55DF,\n\t4745:  0x55C4,\n\t4746:  0x55DC,\n\t4747:  0x55E4,\n\t4748:  0x55D4,\n\t4749:  0x5614,\n\t4750:  0x55F7,\n\t4751:  0x5616,\n\t4752:  0x55FE,\n\t4753:  0x55FD,\n\t4754:  0x561B,\n\t4755:  0x55F9,\n\t4756:  0x564E,\n\t4757:  0x5650,\n\t4758:  0x71DF,\n\t4759:  0x5634,\n\t4760:  0x5636,\n\t4761:  0x5632,\n\t4762:  0x5638,\n\t4763:  0x566B,\n\t4764:  0x5664,\n\t4765:  0x562F,\n\t4766:  0x566C,\n\t4767:  0x566A,\n\t4768:  0x5686,\n\t4769:  0x5680,\n\t4770:  0x568A,\n\t4771:  0x56A0,\n\t4772:  0x5694,\n\t4773:  0x568F,\n\t4774:  0x56A5,\n\t4775:  0x56AE,\n\t4776:  0x56B6,\n\t4777:  0x56B4,\n\t4778:  0x56C2,\n\t4779:  0x56BC,\n\t4780:  0x56C1,\n\t4781:  0x56C3,\n\t4782:  0x56C0,\n\t4783:  0x56C8,\n\t4784:  0x56CE,\n\t4785:  0x56D1,\n\t4786:  0x56D3,\n\t4787:  0x56D7,\n\t4788:  0x56EE,\n\t4789:  0x56F9,\n\t4790:  0x5700,\n\t4791:  0x56FF,\n\t4792:  0x5704,\n\t4793:  0x5709,\n\t4794:  0x5708,\n\t4795:  0x570B,\n\t4796:  0x570D,\n\t4797:  0x5713,\n\t4798:  0x5718,\n\t4799:  0x5716,\n\t4800:  0x55C7,\n\t4801:  0x571C,\n\t4802:  0x5726,\n\t4803:  0x5737,\n\t4804:  0x5738,\n\t4805:  0x574E,\n\t4806:  0x573B,\n\t4807:  0x5740,\n\t4808:  0x574F,\n\t4809:  0x5769,\n\t4810:  0x57C0,\n\t4811:  0x5788,\n\t4812:  0x5761,\n\t4813:  0x577F,\n\t4814:  0x5789,\n\t4815:  0x5793,\n\t4816:  0x57A0,\n\t4817:  0x57B3,\n\t4818:  0x57A4,\n\t4819:  0x57AA,\n\t4820:  0x57B0,\n\t4821:  0x57C3,\n\t4822:  0x57C6,\n\t4823:  0x57D4,\n\t4824:  0x57D2,\n\t4825:  0x57D3,\n\t4826:  0x580A,\n\t4827:  0x57D6,\n\t4828:  0x57E3,\n\t4829:  0x580B,\n\t4830:  0x5819,\n\t4831:  0x581D,\n\t4832:  0x5872,\n\t4833:  0x5821,\n\t4834:  0x5862,\n\t4835:  0x584B,\n\t4836:  0x5870,\n\t4837:  0x6BC0,\n\t4838:  0x5852,\n\t4839:  0x583D,\n\t4840:  0x5879,\n\t4841:  0x5885,\n\t4842:  0x58B9,\n\t4843:  0x589F,\n\t4844:  0x58AB,\n\t4845:  0x58BA,\n\t4846:  0x58DE,\n\t4847:  0x58BB,\n\t4848:  0x58B8,\n\t4849:  0x58AE,\n\t4850:  0x58C5,\n\t4851:  0x58D3,\n\t4852:  0x58D1,\n\t4853:  0x58D7,\n\t4854:  0x58D9,\n\t4855:  0x58D8,\n\t4856:  0x58E5,\n\t4857:  0x58DC,\n\t4858:  0x58E4,\n\t4859:  0x58DF,\n\t4860:  0x58EF,\n\t4861:  0x58FA,\n\t4862:  0x58F9,\n\t4863:  0x58FB,\n\t4864:  0x58FC,\n\t4865:  0x58FD,\n\t4866:  0x5902,\n\t4867:  0x590A,\n\t4868:  0x5910,\n\t4869:  0x591B,\n\t4870:  0x68A6,\n\t4871:  0x5925,\n\t4872:  0x592C,\n\t4873:  0x592D,\n\t4874:  0x5932,\n\t4875:  0x5938,\n\t4876:  0x593E,\n\t4877:  0x7AD2,\n\t4878:  0x5955,\n\t4879:  0x5950,\n\t4880:  0x594E,\n\t4881:  0x595A,\n\t4882:  0x5958,\n\t4883:  0x5962,\n\t4884:  0x5960,\n\t4885:  0x5967,\n\t4886:  0x596C,\n\t4887:  0x5969,\n\t4888:  0x5978,\n\t4889:  0x5981,\n\t4890:  0x599D,\n\t4891:  0x4F5E,\n\t4892:  0x4FAB,\n\t4893:  0x59A3,\n\t4894:  0x59B2,\n\t4895:  0x59C6,\n\t4896:  0x59E8,\n\t4897:  0x59DC,\n\t4898:  0x598D,\n\t4899:  0x59D9,\n\t4900:  0x59DA,\n\t4901:  0x5A25,\n\t4902:  0x5A1F,\n\t4903:  0x5A11,\n\t4904:  0x5A1C,\n\t4905:  0x5A09,\n\t4906:  0x5A1A,\n\t4907:  0x5A40,\n\t4908:  0x5A6C,\n\t4909:  0x5A49,\n\t4910:  0x5A35,\n\t4911:  0x5A36,\n\t4912:  0x5A62,\n\t4913:  0x5A6A,\n\t4914:  0x5A9A,\n\t4915:  0x5ABC,\n\t4916:  0x5ABE,\n\t4917:  0x5ACB,\n\t4918:  0x5AC2,\n\t4919:  0x5ABD,\n\t4920:  0x5AE3,\n\t4921:  0x5AD7,\n\t4922:  0x5AE6,\n\t4923:  0x5AE9,\n\t4924:  0x5AD6,\n\t4925:  0x5AFA,\n\t4926:  0x5AFB,\n\t4927:  0x5B0C,\n\t4928:  0x5B0B,\n\t4929:  0x5B16,\n\t4930:  0x5B32,\n\t4931:  0x5AD0,\n\t4932:  0x5B2A,\n\t4933:  0x5B36,\n\t4934:  0x5B3E,\n\t4935:  0x5B43,\n\t4936:  0x5B45,\n\t4937:  0x5B40,\n\t4938:  0x5B51,\n\t4939:  0x5B55,\n\t4940:  0x5B5A,\n\t4941:  0x5B5B,\n\t4942:  0x5B65,\n\t4943:  0x5B69,\n\t4944:  0x5B70,\n\t4945:  0x5B73,\n\t4946:  0x5B75,\n\t4947:  0x5B78,\n\t4948:  0x6588,\n\t4949:  0x5B7A,\n\t4950:  0x5B80,\n\t4951:  0x5B83,\n\t4952:  0x5BA6,\n\t4953:  0x5BB8,\n\t4954:  0x5BC3,\n\t4955:  0x5BC7,\n\t4956:  0x5BC9,\n\t4957:  0x5BD4,\n\t4958:  0x5BD0,\n\t4959:  0x5BE4,\n\t4960:  0x5BE6,\n\t4961:  0x5BE2,\n\t4962:  0x5BDE,\n\t4963:  0x5BE5,\n\t4964:  0x5BEB,\n\t4965:  0x5BF0,\n\t4966:  0x5BF6,\n\t4967:  0x5BF3,\n\t4968:  0x5C05,\n\t4969:  0x5C07,\n\t4970:  0x5C08,\n\t4971:  0x5C0D,\n\t4972:  0x5C13,\n\t4973:  0x5C20,\n\t4974:  0x5C22,\n\t4975:  0x5C28,\n\t4976:  0x5C38,\n\t4977:  0x5C39,\n\t4978:  0x5C41,\n\t4979:  0x5C46,\n\t4980:  0x5C4E,\n\t4981:  0x5C53,\n\t4982:  0x5C50,\n\t4983:  0x5C4F,\n\t4984:  0x5B71,\n\t4985:  0x5C6C,\n\t4986:  0x5C6E,\n\t4987:  0x4E62,\n\t4988:  0x5C76,\n\t4989:  0x5C79,\n\t4990:  0x5C8C,\n\t4991:  0x5C91,\n\t4992:  0x5C94,\n\t4993:  0x599B,\n\t4994:  0x5CAB,\n\t4995:  0x5CBB,\n\t4996:  0x5CB6,\n\t4997:  0x5CBC,\n\t4998:  0x5CB7,\n\t4999:  0x5CC5,\n\t5000:  0x5CBE,\n\t5001:  0x5CC7,\n\t5002:  0x5CD9,\n\t5003:  0x5CE9,\n\t5004:  0x5CFD,\n\t5005:  0x5CFA,\n\t5006:  0x5CED,\n\t5007:  0x5D8C,\n\t5008:  0x5CEA,\n\t5009:  0x5D0B,\n\t5010:  0x5D15,\n\t5011:  0x5D17,\n\t5012:  0x5D5C,\n\t5013:  0x5D1F,\n\t5014:  0x5D1B,\n\t5015:  0x5D11,\n\t5016:  0x5D14,\n\t5017:  0x5D22,\n\t5018:  0x5D1A,\n\t5019:  0x5D19,\n\t5020:  0x5D18,\n\t5021:  0x5D4C,\n\t5022:  0x5D52,\n\t5023:  0x5D4E,\n\t5024:  0x5D4B,\n\t5025:  0x5D6C,\n\t5026:  0x5D73,\n\t5027:  0x5D76,\n\t5028:  0x5D87,\n\t5029:  0x5D84,\n\t5030:  0x5D82,\n\t5031:  0x5DA2,\n\t5032:  0x5D9D,\n\t5033:  0x5DAC,\n\t5034:  0x5DAE,\n\t5035:  0x5DBD,\n\t5036:  0x5D90,\n\t5037:  0x5DB7,\n\t5038:  0x5DBC,\n\t5039:  0x5DC9,\n\t5040:  0x5DCD,\n\t5041:  0x5DD3,\n\t5042:  0x5DD2,\n\t5043:  0x5DD6,\n\t5044:  0x5DDB,\n\t5045:  0x5DEB,\n\t5046:  0x5DF2,\n\t5047:  0x5DF5,\n\t5048:  0x5E0B,\n\t5049:  0x5E1A,\n\t5050:  0x5E19,\n\t5051:  0x5E11,\n\t5052:  0x5E1B,\n\t5053:  0x5E36,\n\t5054:  0x5E37,\n\t5055:  0x5E44,\n\t5056:  0x5E43,\n\t5057:  0x5E40,\n\t5058:  0x5E4E,\n\t5059:  0x5E57,\n\t5060:  0x5E54,\n\t5061:  0x5E5F,\n\t5062:  0x5E62,\n\t5063:  0x5E64,\n\t5064:  0x5E47,\n\t5065:  0x5E75,\n\t5066:  0x5E76,\n\t5067:  0x5E7A,\n\t5068:  0x9EBC,\n\t5069:  0x5E7F,\n\t5070:  0x5EA0,\n\t5071:  0x5EC1,\n\t5072:  0x5EC2,\n\t5073:  0x5EC8,\n\t5074:  0x5ED0,\n\t5075:  0x5ECF,\n\t5076:  0x5ED6,\n\t5077:  0x5EE3,\n\t5078:  0x5EDD,\n\t5079:  0x5EDA,\n\t5080:  0x5EDB,\n\t5081:  0x5EE2,\n\t5082:  0x5EE1,\n\t5083:  0x5EE8,\n\t5084:  0x5EE9,\n\t5085:  0x5EEC,\n\t5086:  0x5EF1,\n\t5087:  0x5EF3,\n\t5088:  0x5EF0,\n\t5089:  0x5EF4,\n\t5090:  0x5EF8,\n\t5091:  0x5EFE,\n\t5092:  0x5F03,\n\t5093:  0x5F09,\n\t5094:  0x5F5D,\n\t5095:  0x5F5C,\n\t5096:  0x5F0B,\n\t5097:  0x5F11,\n\t5098:  0x5F16,\n\t5099:  0x5F29,\n\t5100:  0x5F2D,\n\t5101:  0x5F38,\n\t5102:  0x5F41,\n\t5103:  0x5F48,\n\t5104:  0x5F4C,\n\t5105:  0x5F4E,\n\t5106:  0x5F2F,\n\t5107:  0x5F51,\n\t5108:  0x5F56,\n\t5109:  0x5F57,\n\t5110:  0x5F59,\n\t5111:  0x5F61,\n\t5112:  0x5F6D,\n\t5113:  0x5F73,\n\t5114:  0x5F77,\n\t5115:  0x5F83,\n\t5116:  0x5F82,\n\t5117:  0x5F7F,\n\t5118:  0x5F8A,\n\t5119:  0x5F88,\n\t5120:  0x5F91,\n\t5121:  0x5F87,\n\t5122:  0x5F9E,\n\t5123:  0x5F99,\n\t5124:  0x5F98,\n\t5125:  0x5FA0,\n\t5126:  0x5FA8,\n\t5127:  0x5FAD,\n\t5128:  0x5FBC,\n\t5129:  0x5FD6,\n\t5130:  0x5FFB,\n\t5131:  0x5FE4,\n\t5132:  0x5FF8,\n\t5133:  0x5FF1,\n\t5134:  0x5FDD,\n\t5135:  0x60B3,\n\t5136:  0x5FFF,\n\t5137:  0x6021,\n\t5138:  0x6060,\n\t5139:  0x6019,\n\t5140:  0x6010,\n\t5141:  0x6029,\n\t5142:  0x600E,\n\t5143:  0x6031,\n\t5144:  0x601B,\n\t5145:  0x6015,\n\t5146:  0x602B,\n\t5147:  0x6026,\n\t5148:  0x600F,\n\t5149:  0x603A,\n\t5150:  0x605A,\n\t5151:  0x6041,\n\t5152:  0x606A,\n\t5153:  0x6077,\n\t5154:  0x605F,\n\t5155:  0x604A,\n\t5156:  0x6046,\n\t5157:  0x604D,\n\t5158:  0x6063,\n\t5159:  0x6043,\n\t5160:  0x6064,\n\t5161:  0x6042,\n\t5162:  0x606C,\n\t5163:  0x606B,\n\t5164:  0x6059,\n\t5165:  0x6081,\n\t5166:  0x608D,\n\t5167:  0x60E7,\n\t5168:  0x6083,\n\t5169:  0x609A,\n\t5170:  0x6084,\n\t5171:  0x609B,\n\t5172:  0x6096,\n\t5173:  0x6097,\n\t5174:  0x6092,\n\t5175:  0x60A7,\n\t5176:  0x608B,\n\t5177:  0x60E1,\n\t5178:  0x60B8,\n\t5179:  0x60E0,\n\t5180:  0x60D3,\n\t5181:  0x60B4,\n\t5182:  0x5FF0,\n\t5183:  0x60BD,\n\t5184:  0x60C6,\n\t5185:  0x60B5,\n\t5186:  0x60D8,\n\t5187:  0x614D,\n\t5188:  0x6115,\n\t5189:  0x6106,\n\t5190:  0x60F6,\n\t5191:  0x60F7,\n\t5192:  0x6100,\n\t5193:  0x60F4,\n\t5194:  0x60FA,\n\t5195:  0x6103,\n\t5196:  0x6121,\n\t5197:  0x60FB,\n\t5198:  0x60F1,\n\t5199:  0x610D,\n\t5200:  0x610E,\n\t5201:  0x6147,\n\t5202:  0x613E,\n\t5203:  0x6128,\n\t5204:  0x6127,\n\t5205:  0x614A,\n\t5206:  0x613F,\n\t5207:  0x613C,\n\t5208:  0x612C,\n\t5209:  0x6134,\n\t5210:  0x613D,\n\t5211:  0x6142,\n\t5212:  0x6144,\n\t5213:  0x6173,\n\t5214:  0x6177,\n\t5215:  0x6158,\n\t5216:  0x6159,\n\t5217:  0x615A,\n\t5218:  0x616B,\n\t5219:  0x6174,\n\t5220:  0x616F,\n\t5221:  0x6165,\n\t5222:  0x6171,\n\t5223:  0x615F,\n\t5224:  0x615D,\n\t5225:  0x6153,\n\t5226:  0x6175,\n\t5227:  0x6199,\n\t5228:  0x6196,\n\t5229:  0x6187,\n\t5230:  0x61AC,\n\t5231:  0x6194,\n\t5232:  0x619A,\n\t5233:  0x618A,\n\t5234:  0x6191,\n\t5235:  0x61AB,\n\t5236:  0x61AE,\n\t5237:  0x61CC,\n\t5238:  0x61CA,\n\t5239:  0x61C9,\n\t5240:  0x61F7,\n\t5241:  0x61C8,\n\t5242:  0x61C3,\n\t5243:  0x61C6,\n\t5244:  0x61BA,\n\t5245:  0x61CB,\n\t5246:  0x7F79,\n\t5247:  0x61CD,\n\t5248:  0x61E6,\n\t5249:  0x61E3,\n\t5250:  0x61F6,\n\t5251:  0x61FA,\n\t5252:  0x61F4,\n\t5253:  0x61FF,\n\t5254:  0x61FD,\n\t5255:  0x61FC,\n\t5256:  0x61FE,\n\t5257:  0x6200,\n\t5258:  0x6208,\n\t5259:  0x6209,\n\t5260:  0x620D,\n\t5261:  0x620C,\n\t5262:  0x6214,\n\t5263:  0x621B,\n\t5264:  0x621E,\n\t5265:  0x6221,\n\t5266:  0x622A,\n\t5267:  0x622E,\n\t5268:  0x6230,\n\t5269:  0x6232,\n\t5270:  0x6233,\n\t5271:  0x6241,\n\t5272:  0x624E,\n\t5273:  0x625E,\n\t5274:  0x6263,\n\t5275:  0x625B,\n\t5276:  0x6260,\n\t5277:  0x6268,\n\t5278:  0x627C,\n\t5279:  0x6282,\n\t5280:  0x6289,\n\t5281:  0x627E,\n\t5282:  0x6292,\n\t5283:  0x6293,\n\t5284:  0x6296,\n\t5285:  0x62D4,\n\t5286:  0x6283,\n\t5287:  0x6294,\n\t5288:  0x62D7,\n\t5289:  0x62D1,\n\t5290:  0x62BB,\n\t5291:  0x62CF,\n\t5292:  0x62FF,\n\t5293:  0x62C6,\n\t5294:  0x64D4,\n\t5295:  0x62C8,\n\t5296:  0x62DC,\n\t5297:  0x62CC,\n\t5298:  0x62CA,\n\t5299:  0x62C2,\n\t5300:  0x62C7,\n\t5301:  0x629B,\n\t5302:  0x62C9,\n\t5303:  0x630C,\n\t5304:  0x62EE,\n\t5305:  0x62F1,\n\t5306:  0x6327,\n\t5307:  0x6302,\n\t5308:  0x6308,\n\t5309:  0x62EF,\n\t5310:  0x62F5,\n\t5311:  0x6350,\n\t5312:  0x633E,\n\t5313:  0x634D,\n\t5314:  0x641C,\n\t5315:  0x634F,\n\t5316:  0x6396,\n\t5317:  0x638E,\n\t5318:  0x6380,\n\t5319:  0x63AB,\n\t5320:  0x6376,\n\t5321:  0x63A3,\n\t5322:  0x638F,\n\t5323:  0x6389,\n\t5324:  0x639F,\n\t5325:  0x63B5,\n\t5326:  0x636B,\n\t5327:  0x6369,\n\t5328:  0x63BE,\n\t5329:  0x63E9,\n\t5330:  0x63C0,\n\t5331:  0x63C6,\n\t5332:  0x63E3,\n\t5333:  0x63C9,\n\t5334:  0x63D2,\n\t5335:  0x63F6,\n\t5336:  0x63C4,\n\t5337:  0x6416,\n\t5338:  0x6434,\n\t5339:  0x6406,\n\t5340:  0x6413,\n\t5341:  0x6426,\n\t5342:  0x6436,\n\t5343:  0x651D,\n\t5344:  0x6417,\n\t5345:  0x6428,\n\t5346:  0x640F,\n\t5347:  0x6467,\n\t5348:  0x646F,\n\t5349:  0x6476,\n\t5350:  0x644E,\n\t5351:  0x652A,\n\t5352:  0x6495,\n\t5353:  0x6493,\n\t5354:  0x64A5,\n\t5355:  0x64A9,\n\t5356:  0x6488,\n\t5357:  0x64BC,\n\t5358:  0x64DA,\n\t5359:  0x64D2,\n\t5360:  0x64C5,\n\t5361:  0x64C7,\n\t5362:  0x64BB,\n\t5363:  0x64D8,\n\t5364:  0x64C2,\n\t5365:  0x64F1,\n\t5366:  0x64E7,\n\t5367:  0x8209,\n\t5368:  0x64E0,\n\t5369:  0x64E1,\n\t5370:  0x62AC,\n\t5371:  0x64E3,\n\t5372:  0x64EF,\n\t5373:  0x652C,\n\t5374:  0x64F6,\n\t5375:  0x64F4,\n\t5376:  0x64F2,\n\t5377:  0x64FA,\n\t5378:  0x6500,\n\t5379:  0x64FD,\n\t5380:  0x6518,\n\t5381:  0x651C,\n\t5382:  0x6505,\n\t5383:  0x6524,\n\t5384:  0x6523,\n\t5385:  0x652B,\n\t5386:  0x6534,\n\t5387:  0x6535,\n\t5388:  0x6537,\n\t5389:  0x6536,\n\t5390:  0x6538,\n\t5391:  0x754B,\n\t5392:  0x6548,\n\t5393:  0x6556,\n\t5394:  0x6555,\n\t5395:  0x654D,\n\t5396:  0x6558,\n\t5397:  0x655E,\n\t5398:  0x655D,\n\t5399:  0x6572,\n\t5400:  0x6578,\n\t5401:  0x6582,\n\t5402:  0x6583,\n\t5403:  0x8B8A,\n\t5404:  0x659B,\n\t5405:  0x659F,\n\t5406:  0x65AB,\n\t5407:  0x65B7,\n\t5408:  0x65C3,\n\t5409:  0x65C6,\n\t5410:  0x65C1,\n\t5411:  0x65C4,\n\t5412:  0x65CC,\n\t5413:  0x65D2,\n\t5414:  0x65DB,\n\t5415:  0x65D9,\n\t5416:  0x65E0,\n\t5417:  0x65E1,\n\t5418:  0x65F1,\n\t5419:  0x6772,\n\t5420:  0x660A,\n\t5421:  0x6603,\n\t5422:  0x65FB,\n\t5423:  0x6773,\n\t5424:  0x6635,\n\t5425:  0x6636,\n\t5426:  0x6634,\n\t5427:  0x661C,\n\t5428:  0x664F,\n\t5429:  0x6644,\n\t5430:  0x6649,\n\t5431:  0x6641,\n\t5432:  0x665E,\n\t5433:  0x665D,\n\t5434:  0x6664,\n\t5435:  0x6667,\n\t5436:  0x6668,\n\t5437:  0x665F,\n\t5438:  0x6662,\n\t5439:  0x6670,\n\t5440:  0x6683,\n\t5441:  0x6688,\n\t5442:  0x668E,\n\t5443:  0x6689,\n\t5444:  0x6684,\n\t5445:  0x6698,\n\t5446:  0x669D,\n\t5447:  0x66C1,\n\t5448:  0x66B9,\n\t5449:  0x66C9,\n\t5450:  0x66BE,\n\t5451:  0x66BC,\n\t5452:  0x66C4,\n\t5453:  0x66B8,\n\t5454:  0x66D6,\n\t5455:  0x66DA,\n\t5456:  0x66E0,\n\t5457:  0x663F,\n\t5458:  0x66E6,\n\t5459:  0x66E9,\n\t5460:  0x66F0,\n\t5461:  0x66F5,\n\t5462:  0x66F7,\n\t5463:  0x670F,\n\t5464:  0x6716,\n\t5465:  0x671E,\n\t5466:  0x6726,\n\t5467:  0x6727,\n\t5468:  0x9738,\n\t5469:  0x672E,\n\t5470:  0x673F,\n\t5471:  0x6736,\n\t5472:  0x6741,\n\t5473:  0x6738,\n\t5474:  0x6737,\n\t5475:  0x6746,\n\t5476:  0x675E,\n\t5477:  0x6760,\n\t5478:  0x6759,\n\t5479:  0x6763,\n\t5480:  0x6764,\n\t5481:  0x6789,\n\t5482:  0x6770,\n\t5483:  0x67A9,\n\t5484:  0x677C,\n\t5485:  0x676A,\n\t5486:  0x678C,\n\t5487:  0x678B,\n\t5488:  0x67A6,\n\t5489:  0x67A1,\n\t5490:  0x6785,\n\t5491:  0x67B7,\n\t5492:  0x67EF,\n\t5493:  0x67B4,\n\t5494:  0x67EC,\n\t5495:  0x67B3,\n\t5496:  0x67E9,\n\t5497:  0x67B8,\n\t5498:  0x67E4,\n\t5499:  0x67DE,\n\t5500:  0x67DD,\n\t5501:  0x67E2,\n\t5502:  0x67EE,\n\t5503:  0x67B9,\n\t5504:  0x67CE,\n\t5505:  0x67C6,\n\t5506:  0x67E7,\n\t5507:  0x6A9C,\n\t5508:  0x681E,\n\t5509:  0x6846,\n\t5510:  0x6829,\n\t5511:  0x6840,\n\t5512:  0x684D,\n\t5513:  0x6832,\n\t5514:  0x684E,\n\t5515:  0x68B3,\n\t5516:  0x682B,\n\t5517:  0x6859,\n\t5518:  0x6863,\n\t5519:  0x6877,\n\t5520:  0x687F,\n\t5521:  0x689F,\n\t5522:  0x688F,\n\t5523:  0x68AD,\n\t5524:  0x6894,\n\t5525:  0x689D,\n\t5526:  0x689B,\n\t5527:  0x6883,\n\t5528:  0x6AAE,\n\t5529:  0x68B9,\n\t5530:  0x6874,\n\t5531:  0x68B5,\n\t5532:  0x68A0,\n\t5533:  0x68BA,\n\t5534:  0x690F,\n\t5535:  0x688D,\n\t5536:  0x687E,\n\t5537:  0x6901,\n\t5538:  0x68CA,\n\t5539:  0x6908,\n\t5540:  0x68D8,\n\t5541:  0x6922,\n\t5542:  0x6926,\n\t5543:  0x68E1,\n\t5544:  0x690C,\n\t5545:  0x68CD,\n\t5546:  0x68D4,\n\t5547:  0x68E7,\n\t5548:  0x68D5,\n\t5549:  0x6936,\n\t5550:  0x6912,\n\t5551:  0x6904,\n\t5552:  0x68D7,\n\t5553:  0x68E3,\n\t5554:  0x6925,\n\t5555:  0x68F9,\n\t5556:  0x68E0,\n\t5557:  0x68EF,\n\t5558:  0x6928,\n\t5559:  0x692A,\n\t5560:  0x691A,\n\t5561:  0x6923,\n\t5562:  0x6921,\n\t5563:  0x68C6,\n\t5564:  0x6979,\n\t5565:  0x6977,\n\t5566:  0x695C,\n\t5567:  0x6978,\n\t5568:  0x696B,\n\t5569:  0x6954,\n\t5570:  0x697E,\n\t5571:  0x696E,\n\t5572:  0x6939,\n\t5573:  0x6974,\n\t5574:  0x693D,\n\t5575:  0x6959,\n\t5576:  0x6930,\n\t5577:  0x6961,\n\t5578:  0x695E,\n\t5579:  0x695D,\n\t5580:  0x6981,\n\t5581:  0x696A,\n\t5582:  0x69B2,\n\t5583:  0x69AE,\n\t5584:  0x69D0,\n\t5585:  0x69BF,\n\t5586:  0x69C1,\n\t5587:  0x69D3,\n\t5588:  0x69BE,\n\t5589:  0x69CE,\n\t5590:  0x5BE8,\n\t5591:  0x69CA,\n\t5592:  0x69DD,\n\t5593:  0x69BB,\n\t5594:  0x69C3,\n\t5595:  0x69A7,\n\t5596:  0x6A2E,\n\t5597:  0x6991,\n\t5598:  0x69A0,\n\t5599:  0x699C,\n\t5600:  0x6995,\n\t5601:  0x69B4,\n\t5602:  0x69DE,\n\t5603:  0x69E8,\n\t5604:  0x6A02,\n\t5605:  0x6A1B,\n\t5606:  0x69FF,\n\t5607:  0x6B0A,\n\t5608:  0x69F9,\n\t5609:  0x69F2,\n\t5610:  0x69E7,\n\t5611:  0x6A05,\n\t5612:  0x69B1,\n\t5613:  0x6A1E,\n\t5614:  0x69ED,\n\t5615:  0x6A14,\n\t5616:  0x69EB,\n\t5617:  0x6A0A,\n\t5618:  0x6A12,\n\t5619:  0x6AC1,\n\t5620:  0x6A23,\n\t5621:  0x6A13,\n\t5622:  0x6A44,\n\t5623:  0x6A0C,\n\t5624:  0x6A72,\n\t5625:  0x6A36,\n\t5626:  0x6A78,\n\t5627:  0x6A47,\n\t5628:  0x6A62,\n\t5629:  0x6A59,\n\t5630:  0x6A66,\n\t5631:  0x6A48,\n\t5632:  0x6A38,\n\t5633:  0x6A22,\n\t5634:  0x6A90,\n\t5635:  0x6A8D,\n\t5636:  0x6AA0,\n\t5637:  0x6A84,\n\t5638:  0x6AA2,\n\t5639:  0x6AA3,\n\t5640:  0x6A97,\n\t5641:  0x8617,\n\t5642:  0x6ABB,\n\t5643:  0x6AC3,\n\t5644:  0x6AC2,\n\t5645:  0x6AB8,\n\t5646:  0x6AB3,\n\t5647:  0x6AAC,\n\t5648:  0x6ADE,\n\t5649:  0x6AD1,\n\t5650:  0x6ADF,\n\t5651:  0x6AAA,\n\t5652:  0x6ADA,\n\t5653:  0x6AEA,\n\t5654:  0x6AFB,\n\t5655:  0x6B05,\n\t5656:  0x8616,\n\t5657:  0x6AFA,\n\t5658:  0x6B12,\n\t5659:  0x6B16,\n\t5660:  0x9B31,\n\t5661:  0x6B1F,\n\t5662:  0x6B38,\n\t5663:  0x6B37,\n\t5664:  0x76DC,\n\t5665:  0x6B39,\n\t5666:  0x98EE,\n\t5667:  0x6B47,\n\t5668:  0x6B43,\n\t5669:  0x6B49,\n\t5670:  0x6B50,\n\t5671:  0x6B59,\n\t5672:  0x6B54,\n\t5673:  0x6B5B,\n\t5674:  0x6B5F,\n\t5675:  0x6B61,\n\t5676:  0x6B78,\n\t5677:  0x6B79,\n\t5678:  0x6B7F,\n\t5679:  0x6B80,\n\t5680:  0x6B84,\n\t5681:  0x6B83,\n\t5682:  0x6B8D,\n\t5683:  0x6B98,\n\t5684:  0x6B95,\n\t5685:  0x6B9E,\n\t5686:  0x6BA4,\n\t5687:  0x6BAA,\n\t5688:  0x6BAB,\n\t5689:  0x6BAF,\n\t5690:  0x6BB2,\n\t5691:  0x6BB1,\n\t5692:  0x6BB3,\n\t5693:  0x6BB7,\n\t5694:  0x6BBC,\n\t5695:  0x6BC6,\n\t5696:  0x6BCB,\n\t5697:  0x6BD3,\n\t5698:  0x6BDF,\n\t5699:  0x6BEC,\n\t5700:  0x6BEB,\n\t5701:  0x6BF3,\n\t5702:  0x6BEF,\n\t5703:  0x9EBE,\n\t5704:  0x6C08,\n\t5705:  0x6C13,\n\t5706:  0x6C14,\n\t5707:  0x6C1B,\n\t5708:  0x6C24,\n\t5709:  0x6C23,\n\t5710:  0x6C5E,\n\t5711:  0x6C55,\n\t5712:  0x6C62,\n\t5713:  0x6C6A,\n\t5714:  0x6C82,\n\t5715:  0x6C8D,\n\t5716:  0x6C9A,\n\t5717:  0x6C81,\n\t5718:  0x6C9B,\n\t5719:  0x6C7E,\n\t5720:  0x6C68,\n\t5721:  0x6C73,\n\t5722:  0x6C92,\n\t5723:  0x6C90,\n\t5724:  0x6CC4,\n\t5725:  0x6CF1,\n\t5726:  0x6CD3,\n\t5727:  0x6CBD,\n\t5728:  0x6CD7,\n\t5729:  0x6CC5,\n\t5730:  0x6CDD,\n\t5731:  0x6CAE,\n\t5732:  0x6CB1,\n\t5733:  0x6CBE,\n\t5734:  0x6CBA,\n\t5735:  0x6CDB,\n\t5736:  0x6CEF,\n\t5737:  0x6CD9,\n\t5738:  0x6CEA,\n\t5739:  0x6D1F,\n\t5740:  0x884D,\n\t5741:  0x6D36,\n\t5742:  0x6D2B,\n\t5743:  0x6D3D,\n\t5744:  0x6D38,\n\t5745:  0x6D19,\n\t5746:  0x6D35,\n\t5747:  0x6D33,\n\t5748:  0x6D12,\n\t5749:  0x6D0C,\n\t5750:  0x6D63,\n\t5751:  0x6D93,\n\t5752:  0x6D64,\n\t5753:  0x6D5A,\n\t5754:  0x6D79,\n\t5755:  0x6D59,\n\t5756:  0x6D8E,\n\t5757:  0x6D95,\n\t5758:  0x6FE4,\n\t5759:  0x6D85,\n\t5760:  0x6DF9,\n\t5761:  0x6E15,\n\t5762:  0x6E0A,\n\t5763:  0x6DB5,\n\t5764:  0x6DC7,\n\t5765:  0x6DE6,\n\t5766:  0x6DB8,\n\t5767:  0x6DC6,\n\t5768:  0x6DEC,\n\t5769:  0x6DDE,\n\t5770:  0x6DCC,\n\t5771:  0x6DE8,\n\t5772:  0x6DD2,\n\t5773:  0x6DC5,\n\t5774:  0x6DFA,\n\t5775:  0x6DD9,\n\t5776:  0x6DE4,\n\t5777:  0x6DD5,\n\t5778:  0x6DEA,\n\t5779:  0x6DEE,\n\t5780:  0x6E2D,\n\t5781:  0x6E6E,\n\t5782:  0x6E2E,\n\t5783:  0x6E19,\n\t5784:  0x6E72,\n\t5785:  0x6E5F,\n\t5786:  0x6E3E,\n\t5787:  0x6E23,\n\t5788:  0x6E6B,\n\t5789:  0x6E2B,\n\t5790:  0x6E76,\n\t5791:  0x6E4D,\n\t5792:  0x6E1F,\n\t5793:  0x6E43,\n\t5794:  0x6E3A,\n\t5795:  0x6E4E,\n\t5796:  0x6E24,\n\t5797:  0x6EFF,\n\t5798:  0x6E1D,\n\t5799:  0x6E38,\n\t5800:  0x6E82,\n\t5801:  0x6EAA,\n\t5802:  0x6E98,\n\t5803:  0x6EC9,\n\t5804:  0x6EB7,\n\t5805:  0x6ED3,\n\t5806:  0x6EBD,\n\t5807:  0x6EAF,\n\t5808:  0x6EC4,\n\t5809:  0x6EB2,\n\t5810:  0x6ED4,\n\t5811:  0x6ED5,\n\t5812:  0x6E8F,\n\t5813:  0x6EA5,\n\t5814:  0x6EC2,\n\t5815:  0x6E9F,\n\t5816:  0x6F41,\n\t5817:  0x6F11,\n\t5818:  0x704C,\n\t5819:  0x6EEC,\n\t5820:  0x6EF8,\n\t5821:  0x6EFE,\n\t5822:  0x6F3F,\n\t5823:  0x6EF2,\n\t5824:  0x6F31,\n\t5825:  0x6EEF,\n\t5826:  0x6F32,\n\t5827:  0x6ECC,\n\t5828:  0x6F3E,\n\t5829:  0x6F13,\n\t5830:  0x6EF7,\n\t5831:  0x6F86,\n\t5832:  0x6F7A,\n\t5833:  0x6F78,\n\t5834:  0x6F81,\n\t5835:  0x6F80,\n\t5836:  0x6F6F,\n\t5837:  0x6F5B,\n\t5838:  0x6FF3,\n\t5839:  0x6F6D,\n\t5840:  0x6F82,\n\t5841:  0x6F7C,\n\t5842:  0x6F58,\n\t5843:  0x6F8E,\n\t5844:  0x6F91,\n\t5845:  0x6FC2,\n\t5846:  0x6F66,\n\t5847:  0x6FB3,\n\t5848:  0x6FA3,\n\t5849:  0x6FA1,\n\t5850:  0x6FA4,\n\t5851:  0x6FB9,\n\t5852:  0x6FC6,\n\t5853:  0x6FAA,\n\t5854:  0x6FDF,\n\t5855:  0x6FD5,\n\t5856:  0x6FEC,\n\t5857:  0x6FD4,\n\t5858:  0x6FD8,\n\t5859:  0x6FF1,\n\t5860:  0x6FEE,\n\t5861:  0x6FDB,\n\t5862:  0x7009,\n\t5863:  0x700B,\n\t5864:  0x6FFA,\n\t5865:  0x7011,\n\t5866:  0x7001,\n\t5867:  0x700F,\n\t5868:  0x6FFE,\n\t5869:  0x701B,\n\t5870:  0x701A,\n\t5871:  0x6F74,\n\t5872:  0x701D,\n\t5873:  0x7018,\n\t5874:  0x701F,\n\t5875:  0x7030,\n\t5876:  0x703E,\n\t5877:  0x7032,\n\t5878:  0x7051,\n\t5879:  0x7063,\n\t5880:  0x7099,\n\t5881:  0x7092,\n\t5882:  0x70AF,\n\t5883:  0x70F1,\n\t5884:  0x70AC,\n\t5885:  0x70B8,\n\t5886:  0x70B3,\n\t5887:  0x70AE,\n\t5888:  0x70DF,\n\t5889:  0x70CB,\n\t5890:  0x70DD,\n\t5891:  0x70D9,\n\t5892:  0x7109,\n\t5893:  0x70FD,\n\t5894:  0x711C,\n\t5895:  0x7119,\n\t5896:  0x7165,\n\t5897:  0x7155,\n\t5898:  0x7188,\n\t5899:  0x7166,\n\t5900:  0x7162,\n\t5901:  0x714C,\n\t5902:  0x7156,\n\t5903:  0x716C,\n\t5904:  0x718F,\n\t5905:  0x71FB,\n\t5906:  0x7184,\n\t5907:  0x7195,\n\t5908:  0x71A8,\n\t5909:  0x71AC,\n\t5910:  0x71D7,\n\t5911:  0x71B9,\n\t5912:  0x71BE,\n\t5913:  0x71D2,\n\t5914:  0x71C9,\n\t5915:  0x71D4,\n\t5916:  0x71CE,\n\t5917:  0x71E0,\n\t5918:  0x71EC,\n\t5919:  0x71E7,\n\t5920:  0x71F5,\n\t5921:  0x71FC,\n\t5922:  0x71F9,\n\t5923:  0x71FF,\n\t5924:  0x720D,\n\t5925:  0x7210,\n\t5926:  0x721B,\n\t5927:  0x7228,\n\t5928:  0x722D,\n\t5929:  0x722C,\n\t5930:  0x7230,\n\t5931:  0x7232,\n\t5932:  0x723B,\n\t5933:  0x723C,\n\t5934:  0x723F,\n\t5935:  0x7240,\n\t5936:  0x7246,\n\t5937:  0x724B,\n\t5938:  0x7258,\n\t5939:  0x7274,\n\t5940:  0x727E,\n\t5941:  0x7282,\n\t5942:  0x7281,\n\t5943:  0x7287,\n\t5944:  0x7292,\n\t5945:  0x7296,\n\t5946:  0x72A2,\n\t5947:  0x72A7,\n\t5948:  0x72B9,\n\t5949:  0x72B2,\n\t5950:  0x72C3,\n\t5951:  0x72C6,\n\t5952:  0x72C4,\n\t5953:  0x72CE,\n\t5954:  0x72D2,\n\t5955:  0x72E2,\n\t5956:  0x72E0,\n\t5957:  0x72E1,\n\t5958:  0x72F9,\n\t5959:  0x72F7,\n\t5960:  0x500F,\n\t5961:  0x7317,\n\t5962:  0x730A,\n\t5963:  0x731C,\n\t5964:  0x7316,\n\t5965:  0x731D,\n\t5966:  0x7334,\n\t5967:  0x732F,\n\t5968:  0x7329,\n\t5969:  0x7325,\n\t5970:  0x733E,\n\t5971:  0x734E,\n\t5972:  0x734F,\n\t5973:  0x9ED8,\n\t5974:  0x7357,\n\t5975:  0x736A,\n\t5976:  0x7368,\n\t5977:  0x7370,\n\t5978:  0x7378,\n\t5979:  0x7375,\n\t5980:  0x737B,\n\t5981:  0x737A,\n\t5982:  0x73C8,\n\t5983:  0x73B3,\n\t5984:  0x73CE,\n\t5985:  0x73BB,\n\t5986:  0x73C0,\n\t5987:  0x73E5,\n\t5988:  0x73EE,\n\t5989:  0x73DE,\n\t5990:  0x74A2,\n\t5991:  0x7405,\n\t5992:  0x746F,\n\t5993:  0x7425,\n\t5994:  0x73F8,\n\t5995:  0x7432,\n\t5996:  0x743A,\n\t5997:  0x7455,\n\t5998:  0x743F,\n\t5999:  0x745F,\n\t6000:  0x7459,\n\t6001:  0x7441,\n\t6002:  0x745C,\n\t6003:  0x7469,\n\t6004:  0x7470,\n\t6005:  0x7463,\n\t6006:  0x746A,\n\t6007:  0x7476,\n\t6008:  0x747E,\n\t6009:  0x748B,\n\t6010:  0x749E,\n\t6011:  0x74A7,\n\t6012:  0x74CA,\n\t6013:  0x74CF,\n\t6014:  0x74D4,\n\t6015:  0x73F1,\n\t6016:  0x74E0,\n\t6017:  0x74E3,\n\t6018:  0x74E7,\n\t6019:  0x74E9,\n\t6020:  0x74EE,\n\t6021:  0x74F2,\n\t6022:  0x74F0,\n\t6023:  0x74F1,\n\t6024:  0x74F8,\n\t6025:  0x74F7,\n\t6026:  0x7504,\n\t6027:  0x7503,\n\t6028:  0x7505,\n\t6029:  0x750C,\n\t6030:  0x750E,\n\t6031:  0x750D,\n\t6032:  0x7515,\n\t6033:  0x7513,\n\t6034:  0x751E,\n\t6035:  0x7526,\n\t6036:  0x752C,\n\t6037:  0x753C,\n\t6038:  0x7544,\n\t6039:  0x754D,\n\t6040:  0x754A,\n\t6041:  0x7549,\n\t6042:  0x755B,\n\t6043:  0x7546,\n\t6044:  0x755A,\n\t6045:  0x7569,\n\t6046:  0x7564,\n\t6047:  0x7567,\n\t6048:  0x756B,\n\t6049:  0x756D,\n\t6050:  0x7578,\n\t6051:  0x7576,\n\t6052:  0x7586,\n\t6053:  0x7587,\n\t6054:  0x7574,\n\t6055:  0x758A,\n\t6056:  0x7589,\n\t6057:  0x7582,\n\t6058:  0x7594,\n\t6059:  0x759A,\n\t6060:  0x759D,\n\t6061:  0x75A5,\n\t6062:  0x75A3,\n\t6063:  0x75C2,\n\t6064:  0x75B3,\n\t6065:  0x75C3,\n\t6066:  0x75B5,\n\t6067:  0x75BD,\n\t6068:  0x75B8,\n\t6069:  0x75BC,\n\t6070:  0x75B1,\n\t6071:  0x75CD,\n\t6072:  0x75CA,\n\t6073:  0x75D2,\n\t6074:  0x75D9,\n\t6075:  0x75E3,\n\t6076:  0x75DE,\n\t6077:  0x75FE,\n\t6078:  0x75FF,\n\t6079:  0x75FC,\n\t6080:  0x7601,\n\t6081:  0x75F0,\n\t6082:  0x75FA,\n\t6083:  0x75F2,\n\t6084:  0x75F3,\n\t6085:  0x760B,\n\t6086:  0x760D,\n\t6087:  0x7609,\n\t6088:  0x761F,\n\t6089:  0x7627,\n\t6090:  0x7620,\n\t6091:  0x7621,\n\t6092:  0x7622,\n\t6093:  0x7624,\n\t6094:  0x7634,\n\t6095:  0x7630,\n\t6096:  0x763B,\n\t6097:  0x7647,\n\t6098:  0x7648,\n\t6099:  0x7646,\n\t6100:  0x765C,\n\t6101:  0x7658,\n\t6102:  0x7661,\n\t6103:  0x7662,\n\t6104:  0x7668,\n\t6105:  0x7669,\n\t6106:  0x766A,\n\t6107:  0x7667,\n\t6108:  0x766C,\n\t6109:  0x7670,\n\t6110:  0x7672,\n\t6111:  0x7676,\n\t6112:  0x7678,\n\t6113:  0x767C,\n\t6114:  0x7680,\n\t6115:  0x7683,\n\t6116:  0x7688,\n\t6117:  0x768B,\n\t6118:  0x768E,\n\t6119:  0x7696,\n\t6120:  0x7693,\n\t6121:  0x7699,\n\t6122:  0x769A,\n\t6123:  0x76B0,\n\t6124:  0x76B4,\n\t6125:  0x76B8,\n\t6126:  0x76B9,\n\t6127:  0x76BA,\n\t6128:  0x76C2,\n\t6129:  0x76CD,\n\t6130:  0x76D6,\n\t6131:  0x76D2,\n\t6132:  0x76DE,\n\t6133:  0x76E1,\n\t6134:  0x76E5,\n\t6135:  0x76E7,\n\t6136:  0x76EA,\n\t6137:  0x862F,\n\t6138:  0x76FB,\n\t6139:  0x7708,\n\t6140:  0x7707,\n\t6141:  0x7704,\n\t6142:  0x7729,\n\t6143:  0x7724,\n\t6144:  0x771E,\n\t6145:  0x7725,\n\t6146:  0x7726,\n\t6147:  0x771B,\n\t6148:  0x7737,\n\t6149:  0x7738,\n\t6150:  0x7747,\n\t6151:  0x775A,\n\t6152:  0x7768,\n\t6153:  0x776B,\n\t6154:  0x775B,\n\t6155:  0x7765,\n\t6156:  0x777F,\n\t6157:  0x777E,\n\t6158:  0x7779,\n\t6159:  0x778E,\n\t6160:  0x778B,\n\t6161:  0x7791,\n\t6162:  0x77A0,\n\t6163:  0x779E,\n\t6164:  0x77B0,\n\t6165:  0x77B6,\n\t6166:  0x77B9,\n\t6167:  0x77BF,\n\t6168:  0x77BC,\n\t6169:  0x77BD,\n\t6170:  0x77BB,\n\t6171:  0x77C7,\n\t6172:  0x77CD,\n\t6173:  0x77D7,\n\t6174:  0x77DA,\n\t6175:  0x77DC,\n\t6176:  0x77E3,\n\t6177:  0x77EE,\n\t6178:  0x77FC,\n\t6179:  0x780C,\n\t6180:  0x7812,\n\t6181:  0x7926,\n\t6182:  0x7820,\n\t6183:  0x792A,\n\t6184:  0x7845,\n\t6185:  0x788E,\n\t6186:  0x7874,\n\t6187:  0x7886,\n\t6188:  0x787C,\n\t6189:  0x789A,\n\t6190:  0x788C,\n\t6191:  0x78A3,\n\t6192:  0x78B5,\n\t6193:  0x78AA,\n\t6194:  0x78AF,\n\t6195:  0x78D1,\n\t6196:  0x78C6,\n\t6197:  0x78CB,\n\t6198:  0x78D4,\n\t6199:  0x78BE,\n\t6200:  0x78BC,\n\t6201:  0x78C5,\n\t6202:  0x78CA,\n\t6203:  0x78EC,\n\t6204:  0x78E7,\n\t6205:  0x78DA,\n\t6206:  0x78FD,\n\t6207:  0x78F4,\n\t6208:  0x7907,\n\t6209:  0x7912,\n\t6210:  0x7911,\n\t6211:  0x7919,\n\t6212:  0x792C,\n\t6213:  0x792B,\n\t6214:  0x7940,\n\t6215:  0x7960,\n\t6216:  0x7957,\n\t6217:  0x795F,\n\t6218:  0x795A,\n\t6219:  0x7955,\n\t6220:  0x7953,\n\t6221:  0x797A,\n\t6222:  0x797F,\n\t6223:  0x798A,\n\t6224:  0x799D,\n\t6225:  0x79A7,\n\t6226:  0x9F4B,\n\t6227:  0x79AA,\n\t6228:  0x79AE,\n\t6229:  0x79B3,\n\t6230:  0x79B9,\n\t6231:  0x79BA,\n\t6232:  0x79C9,\n\t6233:  0x79D5,\n\t6234:  0x79E7,\n\t6235:  0x79EC,\n\t6236:  0x79E1,\n\t6237:  0x79E3,\n\t6238:  0x7A08,\n\t6239:  0x7A0D,\n\t6240:  0x7A18,\n\t6241:  0x7A19,\n\t6242:  0x7A20,\n\t6243:  0x7A1F,\n\t6244:  0x7980,\n\t6245:  0x7A31,\n\t6246:  0x7A3B,\n\t6247:  0x7A3E,\n\t6248:  0x7A37,\n\t6249:  0x7A43,\n\t6250:  0x7A57,\n\t6251:  0x7A49,\n\t6252:  0x7A61,\n\t6253:  0x7A62,\n\t6254:  0x7A69,\n\t6255:  0x9F9D,\n\t6256:  0x7A70,\n\t6257:  0x7A79,\n\t6258:  0x7A7D,\n\t6259:  0x7A88,\n\t6260:  0x7A97,\n\t6261:  0x7A95,\n\t6262:  0x7A98,\n\t6263:  0x7A96,\n\t6264:  0x7AA9,\n\t6265:  0x7AC8,\n\t6266:  0x7AB0,\n\t6267:  0x7AB6,\n\t6268:  0x7AC5,\n\t6269:  0x7AC4,\n\t6270:  0x7ABF,\n\t6271:  0x9083,\n\t6272:  0x7AC7,\n\t6273:  0x7ACA,\n\t6274:  0x7ACD,\n\t6275:  0x7ACF,\n\t6276:  0x7AD5,\n\t6277:  0x7AD3,\n\t6278:  0x7AD9,\n\t6279:  0x7ADA,\n\t6280:  0x7ADD,\n\t6281:  0x7AE1,\n\t6282:  0x7AE2,\n\t6283:  0x7AE6,\n\t6284:  0x7AED,\n\t6285:  0x7AF0,\n\t6286:  0x7B02,\n\t6287:  0x7B0F,\n\t6288:  0x7B0A,\n\t6289:  0x7B06,\n\t6290:  0x7B33,\n\t6291:  0x7B18,\n\t6292:  0x7B19,\n\t6293:  0x7B1E,\n\t6294:  0x7B35,\n\t6295:  0x7B28,\n\t6296:  0x7B36,\n\t6297:  0x7B50,\n\t6298:  0x7B7A,\n\t6299:  0x7B04,\n\t6300:  0x7B4D,\n\t6301:  0x7B0B,\n\t6302:  0x7B4C,\n\t6303:  0x7B45,\n\t6304:  0x7B75,\n\t6305:  0x7B65,\n\t6306:  0x7B74,\n\t6307:  0x7B67,\n\t6308:  0x7B70,\n\t6309:  0x7B71,\n\t6310:  0x7B6C,\n\t6311:  0x7B6E,\n\t6312:  0x7B9D,\n\t6313:  0x7B98,\n\t6314:  0x7B9F,\n\t6315:  0x7B8D,\n\t6316:  0x7B9C,\n\t6317:  0x7B9A,\n\t6318:  0x7B8B,\n\t6319:  0x7B92,\n\t6320:  0x7B8F,\n\t6321:  0x7B5D,\n\t6322:  0x7B99,\n\t6323:  0x7BCB,\n\t6324:  0x7BC1,\n\t6325:  0x7BCC,\n\t6326:  0x7BCF,\n\t6327:  0x7BB4,\n\t6328:  0x7BC6,\n\t6329:  0x7BDD,\n\t6330:  0x7BE9,\n\t6331:  0x7C11,\n\t6332:  0x7C14,\n\t6333:  0x7BE6,\n\t6334:  0x7BE5,\n\t6335:  0x7C60,\n\t6336:  0x7C00,\n\t6337:  0x7C07,\n\t6338:  0x7C13,\n\t6339:  0x7BF3,\n\t6340:  0x7BF7,\n\t6341:  0x7C17,\n\t6342:  0x7C0D,\n\t6343:  0x7BF6,\n\t6344:  0x7C23,\n\t6345:  0x7C27,\n\t6346:  0x7C2A,\n\t6347:  0x7C1F,\n\t6348:  0x7C37,\n\t6349:  0x7C2B,\n\t6350:  0x7C3D,\n\t6351:  0x7C4C,\n\t6352:  0x7C43,\n\t6353:  0x7C54,\n\t6354:  0x7C4F,\n\t6355:  0x7C40,\n\t6356:  0x7C50,\n\t6357:  0x7C58,\n\t6358:  0x7C5F,\n\t6359:  0x7C64,\n\t6360:  0x7C56,\n\t6361:  0x7C65,\n\t6362:  0x7C6C,\n\t6363:  0x7C75,\n\t6364:  0x7C83,\n\t6365:  0x7C90,\n\t6366:  0x7CA4,\n\t6367:  0x7CAD,\n\t6368:  0x7CA2,\n\t6369:  0x7CAB,\n\t6370:  0x7CA1,\n\t6371:  0x7CA8,\n\t6372:  0x7CB3,\n\t6373:  0x7CB2,\n\t6374:  0x7CB1,\n\t6375:  0x7CAE,\n\t6376:  0x7CB9,\n\t6377:  0x7CBD,\n\t6378:  0x7CC0,\n\t6379:  0x7CC5,\n\t6380:  0x7CC2,\n\t6381:  0x7CD8,\n\t6382:  0x7CD2,\n\t6383:  0x7CDC,\n\t6384:  0x7CE2,\n\t6385:  0x9B3B,\n\t6386:  0x7CEF,\n\t6387:  0x7CF2,\n\t6388:  0x7CF4,\n\t6389:  0x7CF6,\n\t6390:  0x7CFA,\n\t6391:  0x7D06,\n\t6392:  0x7D02,\n\t6393:  0x7D1C,\n\t6394:  0x7D15,\n\t6395:  0x7D0A,\n\t6396:  0x7D45,\n\t6397:  0x7D4B,\n\t6398:  0x7D2E,\n\t6399:  0x7D32,\n\t6400:  0x7D3F,\n\t6401:  0x7D35,\n\t6402:  0x7D46,\n\t6403:  0x7D73,\n\t6404:  0x7D56,\n\t6405:  0x7D4E,\n\t6406:  0x7D72,\n\t6407:  0x7D68,\n\t6408:  0x7D6E,\n\t6409:  0x7D4F,\n\t6410:  0x7D63,\n\t6411:  0x7D93,\n\t6412:  0x7D89,\n\t6413:  0x7D5B,\n\t6414:  0x7D8F,\n\t6415:  0x7D7D,\n\t6416:  0x7D9B,\n\t6417:  0x7DBA,\n\t6418:  0x7DAE,\n\t6419:  0x7DA3,\n\t6420:  0x7DB5,\n\t6421:  0x7DC7,\n\t6422:  0x7DBD,\n\t6423:  0x7DAB,\n\t6424:  0x7E3D,\n\t6425:  0x7DA2,\n\t6426:  0x7DAF,\n\t6427:  0x7DDC,\n\t6428:  0x7DB8,\n\t6429:  0x7D9F,\n\t6430:  0x7DB0,\n\t6431:  0x7DD8,\n\t6432:  0x7DDD,\n\t6433:  0x7DE4,\n\t6434:  0x7DDE,\n\t6435:  0x7DFB,\n\t6436:  0x7DF2,\n\t6437:  0x7DE1,\n\t6438:  0x7E05,\n\t6439:  0x7E0A,\n\t6440:  0x7E23,\n\t6441:  0x7E21,\n\t6442:  0x7E12,\n\t6443:  0x7E31,\n\t6444:  0x7E1F,\n\t6445:  0x7E09,\n\t6446:  0x7E0B,\n\t6447:  0x7E22,\n\t6448:  0x7E46,\n\t6449:  0x7E66,\n\t6450:  0x7E3B,\n\t6451:  0x7E35,\n\t6452:  0x7E39,\n\t6453:  0x7E43,\n\t6454:  0x7E37,\n\t6455:  0x7E32,\n\t6456:  0x7E3A,\n\t6457:  0x7E67,\n\t6458:  0x7E5D,\n\t6459:  0x7E56,\n\t6460:  0x7E5E,\n\t6461:  0x7E59,\n\t6462:  0x7E5A,\n\t6463:  0x7E79,\n\t6464:  0x7E6A,\n\t6465:  0x7E69,\n\t6466:  0x7E7C,\n\t6467:  0x7E7B,\n\t6468:  0x7E83,\n\t6469:  0x7DD5,\n\t6470:  0x7E7D,\n\t6471:  0x8FAE,\n\t6472:  0x7E7F,\n\t6473:  0x7E88,\n\t6474:  0x7E89,\n\t6475:  0x7E8C,\n\t6476:  0x7E92,\n\t6477:  0x7E90,\n\t6478:  0x7E93,\n\t6479:  0x7E94,\n\t6480:  0x7E96,\n\t6481:  0x7E8E,\n\t6482:  0x7E9B,\n\t6483:  0x7E9C,\n\t6484:  0x7F38,\n\t6485:  0x7F3A,\n\t6486:  0x7F45,\n\t6487:  0x7F4C,\n\t6488:  0x7F4D,\n\t6489:  0x7F4E,\n\t6490:  0x7F50,\n\t6491:  0x7F51,\n\t6492:  0x7F55,\n\t6493:  0x7F54,\n\t6494:  0x7F58,\n\t6495:  0x7F5F,\n\t6496:  0x7F60,\n\t6497:  0x7F68,\n\t6498:  0x7F69,\n\t6499:  0x7F67,\n\t6500:  0x7F78,\n\t6501:  0x7F82,\n\t6502:  0x7F86,\n\t6503:  0x7F83,\n\t6504:  0x7F88,\n\t6505:  0x7F87,\n\t6506:  0x7F8C,\n\t6507:  0x7F94,\n\t6508:  0x7F9E,\n\t6509:  0x7F9D,\n\t6510:  0x7F9A,\n\t6511:  0x7FA3,\n\t6512:  0x7FAF,\n\t6513:  0x7FB2,\n\t6514:  0x7FB9,\n\t6515:  0x7FAE,\n\t6516:  0x7FB6,\n\t6517:  0x7FB8,\n\t6518:  0x8B71,\n\t6519:  0x7FC5,\n\t6520:  0x7FC6,\n\t6521:  0x7FCA,\n\t6522:  0x7FD5,\n\t6523:  0x7FD4,\n\t6524:  0x7FE1,\n\t6525:  0x7FE6,\n\t6526:  0x7FE9,\n\t6527:  0x7FF3,\n\t6528:  0x7FF9,\n\t6529:  0x98DC,\n\t6530:  0x8006,\n\t6531:  0x8004,\n\t6532:  0x800B,\n\t6533:  0x8012,\n\t6534:  0x8018,\n\t6535:  0x8019,\n\t6536:  0x801C,\n\t6537:  0x8021,\n\t6538:  0x8028,\n\t6539:  0x803F,\n\t6540:  0x803B,\n\t6541:  0x804A,\n\t6542:  0x8046,\n\t6543:  0x8052,\n\t6544:  0x8058,\n\t6545:  0x805A,\n\t6546:  0x805F,\n\t6547:  0x8062,\n\t6548:  0x8068,\n\t6549:  0x8073,\n\t6550:  0x8072,\n\t6551:  0x8070,\n\t6552:  0x8076,\n\t6553:  0x8079,\n\t6554:  0x807D,\n\t6555:  0x807F,\n\t6556:  0x8084,\n\t6557:  0x8086,\n\t6558:  0x8085,\n\t6559:  0x809B,\n\t6560:  0x8093,\n\t6561:  0x809A,\n\t6562:  0x80AD,\n\t6563:  0x5190,\n\t6564:  0x80AC,\n\t6565:  0x80DB,\n\t6566:  0x80E5,\n\t6567:  0x80D9,\n\t6568:  0x80DD,\n\t6569:  0x80C4,\n\t6570:  0x80DA,\n\t6571:  0x80D6,\n\t6572:  0x8109,\n\t6573:  0x80EF,\n\t6574:  0x80F1,\n\t6575:  0x811B,\n\t6576:  0x8129,\n\t6577:  0x8123,\n\t6578:  0x812F,\n\t6579:  0x814B,\n\t6580:  0x968B,\n\t6581:  0x8146,\n\t6582:  0x813E,\n\t6583:  0x8153,\n\t6584:  0x8151,\n\t6585:  0x80FC,\n\t6586:  0x8171,\n\t6587:  0x816E,\n\t6588:  0x8165,\n\t6589:  0x8166,\n\t6590:  0x8174,\n\t6591:  0x8183,\n\t6592:  0x8188,\n\t6593:  0x818A,\n\t6594:  0x8180,\n\t6595:  0x8182,\n\t6596:  0x81A0,\n\t6597:  0x8195,\n\t6598:  0x81A4,\n\t6599:  0x81A3,\n\t6600:  0x815F,\n\t6601:  0x8193,\n\t6602:  0x81A9,\n\t6603:  0x81B0,\n\t6604:  0x81B5,\n\t6605:  0x81BE,\n\t6606:  0x81B8,\n\t6607:  0x81BD,\n\t6608:  0x81C0,\n\t6609:  0x81C2,\n\t6610:  0x81BA,\n\t6611:  0x81C9,\n\t6612:  0x81CD,\n\t6613:  0x81D1,\n\t6614:  0x81D9,\n\t6615:  0x81D8,\n\t6616:  0x81C8,\n\t6617:  0x81DA,\n\t6618:  0x81DF,\n\t6619:  0x81E0,\n\t6620:  0x81E7,\n\t6621:  0x81FA,\n\t6622:  0x81FB,\n\t6623:  0x81FE,\n\t6624:  0x8201,\n\t6625:  0x8202,\n\t6626:  0x8205,\n\t6627:  0x8207,\n\t6628:  0x820A,\n\t6629:  0x820D,\n\t6630:  0x8210,\n\t6631:  0x8216,\n\t6632:  0x8229,\n\t6633:  0x822B,\n\t6634:  0x8238,\n\t6635:  0x8233,\n\t6636:  0x8240,\n\t6637:  0x8259,\n\t6638:  0x8258,\n\t6639:  0x825D,\n\t6640:  0x825A,\n\t6641:  0x825F,\n\t6642:  0x8264,\n\t6643:  0x8262,\n\t6644:  0x8268,\n\t6645:  0x826A,\n\t6646:  0x826B,\n\t6647:  0x822E,\n\t6648:  0x8271,\n\t6649:  0x8277,\n\t6650:  0x8278,\n\t6651:  0x827E,\n\t6652:  0x828D,\n\t6653:  0x8292,\n\t6654:  0x82AB,\n\t6655:  0x829F,\n\t6656:  0x82BB,\n\t6657:  0x82AC,\n\t6658:  0x82E1,\n\t6659:  0x82E3,\n\t6660:  0x82DF,\n\t6661:  0x82D2,\n\t6662:  0x82F4,\n\t6663:  0x82F3,\n\t6664:  0x82FA,\n\t6665:  0x8393,\n\t6666:  0x8303,\n\t6667:  0x82FB,\n\t6668:  0x82F9,\n\t6669:  0x82DE,\n\t6670:  0x8306,\n\t6671:  0x82DC,\n\t6672:  0x8309,\n\t6673:  0x82D9,\n\t6674:  0x8335,\n\t6675:  0x8334,\n\t6676:  0x8316,\n\t6677:  0x8332,\n\t6678:  0x8331,\n\t6679:  0x8340,\n\t6680:  0x8339,\n\t6681:  0x8350,\n\t6682:  0x8345,\n\t6683:  0x832F,\n\t6684:  0x832B,\n\t6685:  0x8317,\n\t6686:  0x8318,\n\t6687:  0x8385,\n\t6688:  0x839A,\n\t6689:  0x83AA,\n\t6690:  0x839F,\n\t6691:  0x83A2,\n\t6692:  0x8396,\n\t6693:  0x8323,\n\t6694:  0x838E,\n\t6695:  0x8387,\n\t6696:  0x838A,\n\t6697:  0x837C,\n\t6698:  0x83B5,\n\t6699:  0x8373,\n\t6700:  0x8375,\n\t6701:  0x83A0,\n\t6702:  0x8389,\n\t6703:  0x83A8,\n\t6704:  0x83F4,\n\t6705:  0x8413,\n\t6706:  0x83EB,\n\t6707:  0x83CE,\n\t6708:  0x83FD,\n\t6709:  0x8403,\n\t6710:  0x83D8,\n\t6711:  0x840B,\n\t6712:  0x83C1,\n\t6713:  0x83F7,\n\t6714:  0x8407,\n\t6715:  0x83E0,\n\t6716:  0x83F2,\n\t6717:  0x840D,\n\t6718:  0x8422,\n\t6719:  0x8420,\n\t6720:  0x83BD,\n\t6721:  0x8438,\n\t6722:  0x8506,\n\t6723:  0x83FB,\n\t6724:  0x846D,\n\t6725:  0x842A,\n\t6726:  0x843C,\n\t6727:  0x855A,\n\t6728:  0x8484,\n\t6729:  0x8477,\n\t6730:  0x846B,\n\t6731:  0x84AD,\n\t6732:  0x846E,\n\t6733:  0x8482,\n\t6734:  0x8469,\n\t6735:  0x8446,\n\t6736:  0x842C,\n\t6737:  0x846F,\n\t6738:  0x8479,\n\t6739:  0x8435,\n\t6740:  0x84CA,\n\t6741:  0x8462,\n\t6742:  0x84B9,\n\t6743:  0x84BF,\n\t6744:  0x849F,\n\t6745:  0x84D9,\n\t6746:  0x84CD,\n\t6747:  0x84BB,\n\t6748:  0x84DA,\n\t6749:  0x84D0,\n\t6750:  0x84C1,\n\t6751:  0x84C6,\n\t6752:  0x84D6,\n\t6753:  0x84A1,\n\t6754:  0x8521,\n\t6755:  0x84FF,\n\t6756:  0x84F4,\n\t6757:  0x8517,\n\t6758:  0x8518,\n\t6759:  0x852C,\n\t6760:  0x851F,\n\t6761:  0x8515,\n\t6762:  0x8514,\n\t6763:  0x84FC,\n\t6764:  0x8540,\n\t6765:  0x8563,\n\t6766:  0x8558,\n\t6767:  0x8548,\n\t6768:  0x8541,\n\t6769:  0x8602,\n\t6770:  0x854B,\n\t6771:  0x8555,\n\t6772:  0x8580,\n\t6773:  0x85A4,\n\t6774:  0x8588,\n\t6775:  0x8591,\n\t6776:  0x858A,\n\t6777:  0x85A8,\n\t6778:  0x856D,\n\t6779:  0x8594,\n\t6780:  0x859B,\n\t6781:  0x85EA,\n\t6782:  0x8587,\n\t6783:  0x859C,\n\t6784:  0x8577,\n\t6785:  0x857E,\n\t6786:  0x8590,\n\t6787:  0x85C9,\n\t6788:  0x85BA,\n\t6789:  0x85CF,\n\t6790:  0x85B9,\n\t6791:  0x85D0,\n\t6792:  0x85D5,\n\t6793:  0x85DD,\n\t6794:  0x85E5,\n\t6795:  0x85DC,\n\t6796:  0x85F9,\n\t6797:  0x860A,\n\t6798:  0x8613,\n\t6799:  0x860B,\n\t6800:  0x85FE,\n\t6801:  0x85FA,\n\t6802:  0x8606,\n\t6803:  0x8622,\n\t6804:  0x861A,\n\t6805:  0x8630,\n\t6806:  0x863F,\n\t6807:  0x864D,\n\t6808:  0x4E55,\n\t6809:  0x8654,\n\t6810:  0x865F,\n\t6811:  0x8667,\n\t6812:  0x8671,\n\t6813:  0x8693,\n\t6814:  0x86A3,\n\t6815:  0x86A9,\n\t6816:  0x86AA,\n\t6817:  0x868B,\n\t6818:  0x868C,\n\t6819:  0x86B6,\n\t6820:  0x86AF,\n\t6821:  0x86C4,\n\t6822:  0x86C6,\n\t6823:  0x86B0,\n\t6824:  0x86C9,\n\t6825:  0x8823,\n\t6826:  0x86AB,\n\t6827:  0x86D4,\n\t6828:  0x86DE,\n\t6829:  0x86E9,\n\t6830:  0x86EC,\n\t6831:  0x86DF,\n\t6832:  0x86DB,\n\t6833:  0x86EF,\n\t6834:  0x8712,\n\t6835:  0x8706,\n\t6836:  0x8708,\n\t6837:  0x8700,\n\t6838:  0x8703,\n\t6839:  0x86FB,\n\t6840:  0x8711,\n\t6841:  0x8709,\n\t6842:  0x870D,\n\t6843:  0x86F9,\n\t6844:  0x870A,\n\t6845:  0x8734,\n\t6846:  0x873F,\n\t6847:  0x8737,\n\t6848:  0x873B,\n\t6849:  0x8725,\n\t6850:  0x8729,\n\t6851:  0x871A,\n\t6852:  0x8760,\n\t6853:  0x875F,\n\t6854:  0x8778,\n\t6855:  0x874C,\n\t6856:  0x874E,\n\t6857:  0x8774,\n\t6858:  0x8757,\n\t6859:  0x8768,\n\t6860:  0x876E,\n\t6861:  0x8759,\n\t6862:  0x8753,\n\t6863:  0x8763,\n\t6864:  0x876A,\n\t6865:  0x8805,\n\t6866:  0x87A2,\n\t6867:  0x879F,\n\t6868:  0x8782,\n\t6869:  0x87AF,\n\t6870:  0x87CB,\n\t6871:  0x87BD,\n\t6872:  0x87C0,\n\t6873:  0x87D0,\n\t6874:  0x96D6,\n\t6875:  0x87AB,\n\t6876:  0x87C4,\n\t6877:  0x87B3,\n\t6878:  0x87C7,\n\t6879:  0x87C6,\n\t6880:  0x87BB,\n\t6881:  0x87EF,\n\t6882:  0x87F2,\n\t6883:  0x87E0,\n\t6884:  0x880F,\n\t6885:  0x880D,\n\t6886:  0x87FE,\n\t6887:  0x87F6,\n\t6888:  0x87F7,\n\t6889:  0x880E,\n\t6890:  0x87D2,\n\t6891:  0x8811,\n\t6892:  0x8816,\n\t6893:  0x8815,\n\t6894:  0x8822,\n\t6895:  0x8821,\n\t6896:  0x8831,\n\t6897:  0x8836,\n\t6898:  0x8839,\n\t6899:  0x8827,\n\t6900:  0x883B,\n\t6901:  0x8844,\n\t6902:  0x8842,\n\t6903:  0x8852,\n\t6904:  0x8859,\n\t6905:  0x885E,\n\t6906:  0x8862,\n\t6907:  0x886B,\n\t6908:  0x8881,\n\t6909:  0x887E,\n\t6910:  0x889E,\n\t6911:  0x8875,\n\t6912:  0x887D,\n\t6913:  0x88B5,\n\t6914:  0x8872,\n\t6915:  0x8882,\n\t6916:  0x8897,\n\t6917:  0x8892,\n\t6918:  0x88AE,\n\t6919:  0x8899,\n\t6920:  0x88A2,\n\t6921:  0x888D,\n\t6922:  0x88A4,\n\t6923:  0x88B0,\n\t6924:  0x88BF,\n\t6925:  0x88B1,\n\t6926:  0x88C3,\n\t6927:  0x88C4,\n\t6928:  0x88D4,\n\t6929:  0x88D8,\n\t6930:  0x88D9,\n\t6931:  0x88DD,\n\t6932:  0x88F9,\n\t6933:  0x8902,\n\t6934:  0x88FC,\n\t6935:  0x88F4,\n\t6936:  0x88E8,\n\t6937:  0x88F2,\n\t6938:  0x8904,\n\t6939:  0x890C,\n\t6940:  0x890A,\n\t6941:  0x8913,\n\t6942:  0x8943,\n\t6943:  0x891E,\n\t6944:  0x8925,\n\t6945:  0x892A,\n\t6946:  0x892B,\n\t6947:  0x8941,\n\t6948:  0x8944,\n\t6949:  0x893B,\n\t6950:  0x8936,\n\t6951:  0x8938,\n\t6952:  0x894C,\n\t6953:  0x891D,\n\t6954:  0x8960,\n\t6955:  0x895E,\n\t6956:  0x8966,\n\t6957:  0x8964,\n\t6958:  0x896D,\n\t6959:  0x896A,\n\t6960:  0x896F,\n\t6961:  0x8974,\n\t6962:  0x8977,\n\t6963:  0x897E,\n\t6964:  0x8983,\n\t6965:  0x8988,\n\t6966:  0x898A,\n\t6967:  0x8993,\n\t6968:  0x8998,\n\t6969:  0x89A1,\n\t6970:  0x89A9,\n\t6971:  0x89A6,\n\t6972:  0x89AC,\n\t6973:  0x89AF,\n\t6974:  0x89B2,\n\t6975:  0x89BA,\n\t6976:  0x89BD,\n\t6977:  0x89BF,\n\t6978:  0x89C0,\n\t6979:  0x89DA,\n\t6980:  0x89DC,\n\t6981:  0x89DD,\n\t6982:  0x89E7,\n\t6983:  0x89F4,\n\t6984:  0x89F8,\n\t6985:  0x8A03,\n\t6986:  0x8A16,\n\t6987:  0x8A10,\n\t6988:  0x8A0C,\n\t6989:  0x8A1B,\n\t6990:  0x8A1D,\n\t6991:  0x8A25,\n\t6992:  0x8A36,\n\t6993:  0x8A41,\n\t6994:  0x8A5B,\n\t6995:  0x8A52,\n\t6996:  0x8A46,\n\t6997:  0x8A48,\n\t6998:  0x8A7C,\n\t6999:  0x8A6D,\n\t7000:  0x8A6C,\n\t7001:  0x8A62,\n\t7002:  0x8A85,\n\t7003:  0x8A82,\n\t7004:  0x8A84,\n\t7005:  0x8AA8,\n\t7006:  0x8AA1,\n\t7007:  0x8A91,\n\t7008:  0x8AA5,\n\t7009:  0x8AA6,\n\t7010:  0x8A9A,\n\t7011:  0x8AA3,\n\t7012:  0x8AC4,\n\t7013:  0x8ACD,\n\t7014:  0x8AC2,\n\t7015:  0x8ADA,\n\t7016:  0x8AEB,\n\t7017:  0x8AF3,\n\t7018:  0x8AE7,\n\t7019:  0x8AE4,\n\t7020:  0x8AF1,\n\t7021:  0x8B14,\n\t7022:  0x8AE0,\n\t7023:  0x8AE2,\n\t7024:  0x8AF7,\n\t7025:  0x8ADE,\n\t7026:  0x8ADB,\n\t7027:  0x8B0C,\n\t7028:  0x8B07,\n\t7029:  0x8B1A,\n\t7030:  0x8AE1,\n\t7031:  0x8B16,\n\t7032:  0x8B10,\n\t7033:  0x8B17,\n\t7034:  0x8B20,\n\t7035:  0x8B33,\n\t7036:  0x97AB,\n\t7037:  0x8B26,\n\t7038:  0x8B2B,\n\t7039:  0x8B3E,\n\t7040:  0x8B28,\n\t7041:  0x8B41,\n\t7042:  0x8B4C,\n\t7043:  0x8B4F,\n\t7044:  0x8B4E,\n\t7045:  0x8B49,\n\t7046:  0x8B56,\n\t7047:  0x8B5B,\n\t7048:  0x8B5A,\n\t7049:  0x8B6B,\n\t7050:  0x8B5F,\n\t7051:  0x8B6C,\n\t7052:  0x8B6F,\n\t7053:  0x8B74,\n\t7054:  0x8B7D,\n\t7055:  0x8B80,\n\t7056:  0x8B8C,\n\t7057:  0x8B8E,\n\t7058:  0x8B92,\n\t7059:  0x8B93,\n\t7060:  0x8B96,\n\t7061:  0x8B99,\n\t7062:  0x8B9A,\n\t7063:  0x8C3A,\n\t7064:  0x8C41,\n\t7065:  0x8C3F,\n\t7066:  0x8C48,\n\t7067:  0x8C4C,\n\t7068:  0x8C4E,\n\t7069:  0x8C50,\n\t7070:  0x8C55,\n\t7071:  0x8C62,\n\t7072:  0x8C6C,\n\t7073:  0x8C78,\n\t7074:  0x8C7A,\n\t7075:  0x8C82,\n\t7076:  0x8C89,\n\t7077:  0x8C85,\n\t7078:  0x8C8A,\n\t7079:  0x8C8D,\n\t7080:  0x8C8E,\n\t7081:  0x8C94,\n\t7082:  0x8C7C,\n\t7083:  0x8C98,\n\t7084:  0x621D,\n\t7085:  0x8CAD,\n\t7086:  0x8CAA,\n\t7087:  0x8CBD,\n\t7088:  0x8CB2,\n\t7089:  0x8CB3,\n\t7090:  0x8CAE,\n\t7091:  0x8CB6,\n\t7092:  0x8CC8,\n\t7093:  0x8CC1,\n\t7094:  0x8CE4,\n\t7095:  0x8CE3,\n\t7096:  0x8CDA,\n\t7097:  0x8CFD,\n\t7098:  0x8CFA,\n\t7099:  0x8CFB,\n\t7100:  0x8D04,\n\t7101:  0x8D05,\n\t7102:  0x8D0A,\n\t7103:  0x8D07,\n\t7104:  0x8D0F,\n\t7105:  0x8D0D,\n\t7106:  0x8D10,\n\t7107:  0x9F4E,\n\t7108:  0x8D13,\n\t7109:  0x8CCD,\n\t7110:  0x8D14,\n\t7111:  0x8D16,\n\t7112:  0x8D67,\n\t7113:  0x8D6D,\n\t7114:  0x8D71,\n\t7115:  0x8D73,\n\t7116:  0x8D81,\n\t7117:  0x8D99,\n\t7118:  0x8DC2,\n\t7119:  0x8DBE,\n\t7120:  0x8DBA,\n\t7121:  0x8DCF,\n\t7122:  0x8DDA,\n\t7123:  0x8DD6,\n\t7124:  0x8DCC,\n\t7125:  0x8DDB,\n\t7126:  0x8DCB,\n\t7127:  0x8DEA,\n\t7128:  0x8DEB,\n\t7129:  0x8DDF,\n\t7130:  0x8DE3,\n\t7131:  0x8DFC,\n\t7132:  0x8E08,\n\t7133:  0x8E09,\n\t7134:  0x8DFF,\n\t7135:  0x8E1D,\n\t7136:  0x8E1E,\n\t7137:  0x8E10,\n\t7138:  0x8E1F,\n\t7139:  0x8E42,\n\t7140:  0x8E35,\n\t7141:  0x8E30,\n\t7142:  0x8E34,\n\t7143:  0x8E4A,\n\t7144:  0x8E47,\n\t7145:  0x8E49,\n\t7146:  0x8E4C,\n\t7147:  0x8E50,\n\t7148:  0x8E48,\n\t7149:  0x8E59,\n\t7150:  0x8E64,\n\t7151:  0x8E60,\n\t7152:  0x8E2A,\n\t7153:  0x8E63,\n\t7154:  0x8E55,\n\t7155:  0x8E76,\n\t7156:  0x8E72,\n\t7157:  0x8E7C,\n\t7158:  0x8E81,\n\t7159:  0x8E87,\n\t7160:  0x8E85,\n\t7161:  0x8E84,\n\t7162:  0x8E8B,\n\t7163:  0x8E8A,\n\t7164:  0x8E93,\n\t7165:  0x8E91,\n\t7166:  0x8E94,\n\t7167:  0x8E99,\n\t7168:  0x8EAA,\n\t7169:  0x8EA1,\n\t7170:  0x8EAC,\n\t7171:  0x8EB0,\n\t7172:  0x8EC6,\n\t7173:  0x8EB1,\n\t7174:  0x8EBE,\n\t7175:  0x8EC5,\n\t7176:  0x8EC8,\n\t7177:  0x8ECB,\n\t7178:  0x8EDB,\n\t7179:  0x8EE3,\n\t7180:  0x8EFC,\n\t7181:  0x8EFB,\n\t7182:  0x8EEB,\n\t7183:  0x8EFE,\n\t7184:  0x8F0A,\n\t7185:  0x8F05,\n\t7186:  0x8F15,\n\t7187:  0x8F12,\n\t7188:  0x8F19,\n\t7189:  0x8F13,\n\t7190:  0x8F1C,\n\t7191:  0x8F1F,\n\t7192:  0x8F1B,\n\t7193:  0x8F0C,\n\t7194:  0x8F26,\n\t7195:  0x8F33,\n\t7196:  0x8F3B,\n\t7197:  0x8F39,\n\t7198:  0x8F45,\n\t7199:  0x8F42,\n\t7200:  0x8F3E,\n\t7201:  0x8F4C,\n\t7202:  0x8F49,\n\t7203:  0x8F46,\n\t7204:  0x8F4E,\n\t7205:  0x8F57,\n\t7206:  0x8F5C,\n\t7207:  0x8F62,\n\t7208:  0x8F63,\n\t7209:  0x8F64,\n\t7210:  0x8F9C,\n\t7211:  0x8F9F,\n\t7212:  0x8FA3,\n\t7213:  0x8FAD,\n\t7214:  0x8FAF,\n\t7215:  0x8FB7,\n\t7216:  0x8FDA,\n\t7217:  0x8FE5,\n\t7218:  0x8FE2,\n\t7219:  0x8FEA,\n\t7220:  0x8FEF,\n\t7221:  0x9087,\n\t7222:  0x8FF4,\n\t7223:  0x9005,\n\t7224:  0x8FF9,\n\t7225:  0x8FFA,\n\t7226:  0x9011,\n\t7227:  0x9015,\n\t7228:  0x9021,\n\t7229:  0x900D,\n\t7230:  0x901E,\n\t7231:  0x9016,\n\t7232:  0x900B,\n\t7233:  0x9027,\n\t7234:  0x9036,\n\t7235:  0x9035,\n\t7236:  0x9039,\n\t7237:  0x8FF8,\n\t7238:  0x904F,\n\t7239:  0x9050,\n\t7240:  0x9051,\n\t7241:  0x9052,\n\t7242:  0x900E,\n\t7243:  0x9049,\n\t7244:  0x903E,\n\t7245:  0x9056,\n\t7246:  0x9058,\n\t7247:  0x905E,\n\t7248:  0x9068,\n\t7249:  0x906F,\n\t7250:  0x9076,\n\t7251:  0x96A8,\n\t7252:  0x9072,\n\t7253:  0x9082,\n\t7254:  0x907D,\n\t7255:  0x9081,\n\t7256:  0x9080,\n\t7257:  0x908A,\n\t7258:  0x9089,\n\t7259:  0x908F,\n\t7260:  0x90A8,\n\t7261:  0x90AF,\n\t7262:  0x90B1,\n\t7263:  0x90B5,\n\t7264:  0x90E2,\n\t7265:  0x90E4,\n\t7266:  0x6248,\n\t7267:  0x90DB,\n\t7268:  0x9102,\n\t7269:  0x9112,\n\t7270:  0x9119,\n\t7271:  0x9132,\n\t7272:  0x9130,\n\t7273:  0x914A,\n\t7274:  0x9156,\n\t7275:  0x9158,\n\t7276:  0x9163,\n\t7277:  0x9165,\n\t7278:  0x9169,\n\t7279:  0x9173,\n\t7280:  0x9172,\n\t7281:  0x918B,\n\t7282:  0x9189,\n\t7283:  0x9182,\n\t7284:  0x91A2,\n\t7285:  0x91AB,\n\t7286:  0x91AF,\n\t7287:  0x91AA,\n\t7288:  0x91B5,\n\t7289:  0x91B4,\n\t7290:  0x91BA,\n\t7291:  0x91C0,\n\t7292:  0x91C1,\n\t7293:  0x91C9,\n\t7294:  0x91CB,\n\t7295:  0x91D0,\n\t7296:  0x91D6,\n\t7297:  0x91DF,\n\t7298:  0x91E1,\n\t7299:  0x91DB,\n\t7300:  0x91FC,\n\t7301:  0x91F5,\n\t7302:  0x91F6,\n\t7303:  0x921E,\n\t7304:  0x91FF,\n\t7305:  0x9214,\n\t7306:  0x922C,\n\t7307:  0x9215,\n\t7308:  0x9211,\n\t7309:  0x925E,\n\t7310:  0x9257,\n\t7311:  0x9245,\n\t7312:  0x9249,\n\t7313:  0x9264,\n\t7314:  0x9248,\n\t7315:  0x9295,\n\t7316:  0x923F,\n\t7317:  0x924B,\n\t7318:  0x9250,\n\t7319:  0x929C,\n\t7320:  0x9296,\n\t7321:  0x9293,\n\t7322:  0x929B,\n\t7323:  0x925A,\n\t7324:  0x92CF,\n\t7325:  0x92B9,\n\t7326:  0x92B7,\n\t7327:  0x92E9,\n\t7328:  0x930F,\n\t7329:  0x92FA,\n\t7330:  0x9344,\n\t7331:  0x932E,\n\t7332:  0x9319,\n\t7333:  0x9322,\n\t7334:  0x931A,\n\t7335:  0x9323,\n\t7336:  0x933A,\n\t7337:  0x9335,\n\t7338:  0x933B,\n\t7339:  0x935C,\n\t7340:  0x9360,\n\t7341:  0x937C,\n\t7342:  0x936E,\n\t7343:  0x9356,\n\t7344:  0x93B0,\n\t7345:  0x93AC,\n\t7346:  0x93AD,\n\t7347:  0x9394,\n\t7348:  0x93B9,\n\t7349:  0x93D6,\n\t7350:  0x93D7,\n\t7351:  0x93E8,\n\t7352:  0x93E5,\n\t7353:  0x93D8,\n\t7354:  0x93C3,\n\t7355:  0x93DD,\n\t7356:  0x93D0,\n\t7357:  0x93C8,\n\t7358:  0x93E4,\n\t7359:  0x941A,\n\t7360:  0x9414,\n\t7361:  0x9413,\n\t7362:  0x9403,\n\t7363:  0x9407,\n\t7364:  0x9410,\n\t7365:  0x9436,\n\t7366:  0x942B,\n\t7367:  0x9435,\n\t7368:  0x9421,\n\t7369:  0x943A,\n\t7370:  0x9441,\n\t7371:  0x9452,\n\t7372:  0x9444,\n\t7373:  0x945B,\n\t7374:  0x9460,\n\t7375:  0x9462,\n\t7376:  0x945E,\n\t7377:  0x946A,\n\t7378:  0x9229,\n\t7379:  0x9470,\n\t7380:  0x9475,\n\t7381:  0x9477,\n\t7382:  0x947D,\n\t7383:  0x945A,\n\t7384:  0x947C,\n\t7385:  0x947E,\n\t7386:  0x9481,\n\t7387:  0x947F,\n\t7388:  0x9582,\n\t7389:  0x9587,\n\t7390:  0x958A,\n\t7391:  0x9594,\n\t7392:  0x9596,\n\t7393:  0x9598,\n\t7394:  0x9599,\n\t7395:  0x95A0,\n\t7396:  0x95A8,\n\t7397:  0x95A7,\n\t7398:  0x95AD,\n\t7399:  0x95BC,\n\t7400:  0x95BB,\n\t7401:  0x95B9,\n\t7402:  0x95BE,\n\t7403:  0x95CA,\n\t7404:  0x6FF6,\n\t7405:  0x95C3,\n\t7406:  0x95CD,\n\t7407:  0x95CC,\n\t7408:  0x95D5,\n\t7409:  0x95D4,\n\t7410:  0x95D6,\n\t7411:  0x95DC,\n\t7412:  0x95E1,\n\t7413:  0x95E5,\n\t7414:  0x95E2,\n\t7415:  0x9621,\n\t7416:  0x9628,\n\t7417:  0x962E,\n\t7418:  0x962F,\n\t7419:  0x9642,\n\t7420:  0x964C,\n\t7421:  0x964F,\n\t7422:  0x964B,\n\t7423:  0x9677,\n\t7424:  0x965C,\n\t7425:  0x965E,\n\t7426:  0x965D,\n\t7427:  0x965F,\n\t7428:  0x9666,\n\t7429:  0x9672,\n\t7430:  0x966C,\n\t7431:  0x968D,\n\t7432:  0x9698,\n\t7433:  0x9695,\n\t7434:  0x9697,\n\t7435:  0x96AA,\n\t7436:  0x96A7,\n\t7437:  0x96B1,\n\t7438:  0x96B2,\n\t7439:  0x96B0,\n\t7440:  0x96B4,\n\t7441:  0x96B6,\n\t7442:  0x96B8,\n\t7443:  0x96B9,\n\t7444:  0x96CE,\n\t7445:  0x96CB,\n\t7446:  0x96C9,\n\t7447:  0x96CD,\n\t7448:  0x894D,\n\t7449:  0x96DC,\n\t7450:  0x970D,\n\t7451:  0x96D5,\n\t7452:  0x96F9,\n\t7453:  0x9704,\n\t7454:  0x9706,\n\t7455:  0x9708,\n\t7456:  0x9713,\n\t7457:  0x970E,\n\t7458:  0x9711,\n\t7459:  0x970F,\n\t7460:  0x9716,\n\t7461:  0x9719,\n\t7462:  0x9724,\n\t7463:  0x972A,\n\t7464:  0x9730,\n\t7465:  0x9739,\n\t7466:  0x973D,\n\t7467:  0x973E,\n\t7468:  0x9744,\n\t7469:  0x9746,\n\t7470:  0x9748,\n\t7471:  0x9742,\n\t7472:  0x9749,\n\t7473:  0x975C,\n\t7474:  0x9760,\n\t7475:  0x9764,\n\t7476:  0x9766,\n\t7477:  0x9768,\n\t7478:  0x52D2,\n\t7479:  0x976B,\n\t7480:  0x9771,\n\t7481:  0x9779,\n\t7482:  0x9785,\n\t7483:  0x977C,\n\t7484:  0x9781,\n\t7485:  0x977A,\n\t7486:  0x9786,\n\t7487:  0x978B,\n\t7488:  0x978F,\n\t7489:  0x9790,\n\t7490:  0x979C,\n\t7491:  0x97A8,\n\t7492:  0x97A6,\n\t7493:  0x97A3,\n\t7494:  0x97B3,\n\t7495:  0x97B4,\n\t7496:  0x97C3,\n\t7497:  0x97C6,\n\t7498:  0x97C8,\n\t7499:  0x97CB,\n\t7500:  0x97DC,\n\t7501:  0x97ED,\n\t7502:  0x9F4F,\n\t7503:  0x97F2,\n\t7504:  0x7ADF,\n\t7505:  0x97F6,\n\t7506:  0x97F5,\n\t7507:  0x980F,\n\t7508:  0x980C,\n\t7509:  0x9838,\n\t7510:  0x9824,\n\t7511:  0x9821,\n\t7512:  0x9837,\n\t7513:  0x983D,\n\t7514:  0x9846,\n\t7515:  0x984F,\n\t7516:  0x984B,\n\t7517:  0x986B,\n\t7518:  0x986F,\n\t7519:  0x9870,\n\t7520:  0x9871,\n\t7521:  0x9874,\n\t7522:  0x9873,\n\t7523:  0x98AA,\n\t7524:  0x98AF,\n\t7525:  0x98B1,\n\t7526:  0x98B6,\n\t7527:  0x98C4,\n\t7528:  0x98C3,\n\t7529:  0x98C6,\n\t7530:  0x98E9,\n\t7531:  0x98EB,\n\t7532:  0x9903,\n\t7533:  0x9909,\n\t7534:  0x9912,\n\t7535:  0x9914,\n\t7536:  0x9918,\n\t7537:  0x9921,\n\t7538:  0x991D,\n\t7539:  0x991E,\n\t7540:  0x9924,\n\t7541:  0x9920,\n\t7542:  0x992C,\n\t7543:  0x992E,\n\t7544:  0x993D,\n\t7545:  0x993E,\n\t7546:  0x9942,\n\t7547:  0x9949,\n\t7548:  0x9945,\n\t7549:  0x9950,\n\t7550:  0x994B,\n\t7551:  0x9951,\n\t7552:  0x9952,\n\t7553:  0x994C,\n\t7554:  0x9955,\n\t7555:  0x9997,\n\t7556:  0x9998,\n\t7557:  0x99A5,\n\t7558:  0x99AD,\n\t7559:  0x99AE,\n\t7560:  0x99BC,\n\t7561:  0x99DF,\n\t7562:  0x99DB,\n\t7563:  0x99DD,\n\t7564:  0x99D8,\n\t7565:  0x99D1,\n\t7566:  0x99ED,\n\t7567:  0x99EE,\n\t7568:  0x99F1,\n\t7569:  0x99F2,\n\t7570:  0x99FB,\n\t7571:  0x99F8,\n\t7572:  0x9A01,\n\t7573:  0x9A0F,\n\t7574:  0x9A05,\n\t7575:  0x99E2,\n\t7576:  0x9A19,\n\t7577:  0x9A2B,\n\t7578:  0x9A37,\n\t7579:  0x9A45,\n\t7580:  0x9A42,\n\t7581:  0x9A40,\n\t7582:  0x9A43,\n\t7583:  0x9A3E,\n\t7584:  0x9A55,\n\t7585:  0x9A4D,\n\t7586:  0x9A5B,\n\t7587:  0x9A57,\n\t7588:  0x9A5F,\n\t7589:  0x9A62,\n\t7590:  0x9A65,\n\t7591:  0x9A64,\n\t7592:  0x9A69,\n\t7593:  0x9A6B,\n\t7594:  0x9A6A,\n\t7595:  0x9AAD,\n\t7596:  0x9AB0,\n\t7597:  0x9ABC,\n\t7598:  0x9AC0,\n\t7599:  0x9ACF,\n\t7600:  0x9AD1,\n\t7601:  0x9AD3,\n\t7602:  0x9AD4,\n\t7603:  0x9ADE,\n\t7604:  0x9ADF,\n\t7605:  0x9AE2,\n\t7606:  0x9AE3,\n\t7607:  0x9AE6,\n\t7608:  0x9AEF,\n\t7609:  0x9AEB,\n\t7610:  0x9AEE,\n\t7611:  0x9AF4,\n\t7612:  0x9AF1,\n\t7613:  0x9AF7,\n\t7614:  0x9AFB,\n\t7615:  0x9B06,\n\t7616:  0x9B18,\n\t7617:  0x9B1A,\n\t7618:  0x9B1F,\n\t7619:  0x9B22,\n\t7620:  0x9B23,\n\t7621:  0x9B25,\n\t7622:  0x9B27,\n\t7623:  0x9B28,\n\t7624:  0x9B29,\n\t7625:  0x9B2A,\n\t7626:  0x9B2E,\n\t7627:  0x9B2F,\n\t7628:  0x9B32,\n\t7629:  0x9B44,\n\t7630:  0x9B43,\n\t7631:  0x9B4F,\n\t7632:  0x9B4D,\n\t7633:  0x9B4E,\n\t7634:  0x9B51,\n\t7635:  0x9B58,\n\t7636:  0x9B74,\n\t7637:  0x9B93,\n\t7638:  0x9B83,\n\t7639:  0x9B91,\n\t7640:  0x9B96,\n\t7641:  0x9B97,\n\t7642:  0x9B9F,\n\t7643:  0x9BA0,\n\t7644:  0x9BA8,\n\t7645:  0x9BB4,\n\t7646:  0x9BC0,\n\t7647:  0x9BCA,\n\t7648:  0x9BB9,\n\t7649:  0x9BC6,\n\t7650:  0x9BCF,\n\t7651:  0x9BD1,\n\t7652:  0x9BD2,\n\t7653:  0x9BE3,\n\t7654:  0x9BE2,\n\t7655:  0x9BE4,\n\t7656:  0x9BD4,\n\t7657:  0x9BE1,\n\t7658:  0x9C3A,\n\t7659:  0x9BF2,\n\t7660:  0x9BF1,\n\t7661:  0x9BF0,\n\t7662:  0x9C15,\n\t7663:  0x9C14,\n\t7664:  0x9C09,\n\t7665:  0x9C13,\n\t7666:  0x9C0C,\n\t7667:  0x9C06,\n\t7668:  0x9C08,\n\t7669:  0x9C12,\n\t7670:  0x9C0A,\n\t7671:  0x9C04,\n\t7672:  0x9C2E,\n\t7673:  0x9C1B,\n\t7674:  0x9C25,\n\t7675:  0x9C24,\n\t7676:  0x9C21,\n\t7677:  0x9C30,\n\t7678:  0x9C47,\n\t7679:  0x9C32,\n\t7680:  0x9C46,\n\t7681:  0x9C3E,\n\t7682:  0x9C5A,\n\t7683:  0x9C60,\n\t7684:  0x9C67,\n\t7685:  0x9C76,\n\t7686:  0x9C78,\n\t7687:  0x9CE7,\n\t7688:  0x9CEC,\n\t7689:  0x9CF0,\n\t7690:  0x9D09,\n\t7691:  0x9D08,\n\t7692:  0x9CEB,\n\t7693:  0x9D03,\n\t7694:  0x9D06,\n\t7695:  0x9D2A,\n\t7696:  0x9D26,\n\t7697:  0x9DAF,\n\t7698:  0x9D23,\n\t7699:  0x9D1F,\n\t7700:  0x9D44,\n\t7701:  0x9D15,\n\t7702:  0x9D12,\n\t7703:  0x9D41,\n\t7704:  0x9D3F,\n\t7705:  0x9D3E,\n\t7706:  0x9D46,\n\t7707:  0x9D48,\n\t7708:  0x9D5D,\n\t7709:  0x9D5E,\n\t7710:  0x9D64,\n\t7711:  0x9D51,\n\t7712:  0x9D50,\n\t7713:  0x9D59,\n\t7714:  0x9D72,\n\t7715:  0x9D89,\n\t7716:  0x9D87,\n\t7717:  0x9DAB,\n\t7718:  0x9D6F,\n\t7719:  0x9D7A,\n\t7720:  0x9D9A,\n\t7721:  0x9DA4,\n\t7722:  0x9DA9,\n\t7723:  0x9DB2,\n\t7724:  0x9DC4,\n\t7725:  0x9DC1,\n\t7726:  0x9DBB,\n\t7727:  0x9DB8,\n\t7728:  0x9DBA,\n\t7729:  0x9DC6,\n\t7730:  0x9DCF,\n\t7731:  0x9DC2,\n\t7732:  0x9DD9,\n\t7733:  0x9DD3,\n\t7734:  0x9DF8,\n\t7735:  0x9DE6,\n\t7736:  0x9DED,\n\t7737:  0x9DEF,\n\t7738:  0x9DFD,\n\t7739:  0x9E1A,\n\t7740:  0x9E1B,\n\t7741:  0x9E1E,\n\t7742:  0x9E75,\n\t7743:  0x9E79,\n\t7744:  0x9E7D,\n\t7745:  0x9E81,\n\t7746:  0x9E88,\n\t7747:  0x9E8B,\n\t7748:  0x9E8C,\n\t7749:  0x9E92,\n\t7750:  0x9E95,\n\t7751:  0x9E91,\n\t7752:  0x9E9D,\n\t7753:  0x9EA5,\n\t7754:  0x9EA9,\n\t7755:  0x9EB8,\n\t7756:  0x9EAA,\n\t7757:  0x9EAD,\n\t7758:  0x9761,\n\t7759:  0x9ECC,\n\t7760:  0x9ECE,\n\t7761:  0x9ECF,\n\t7762:  0x9ED0,\n\t7763:  0x9ED4,\n\t7764:  0x9EDC,\n\t7765:  0x9EDE,\n\t7766:  0x9EDD,\n\t7767:  0x9EE0,\n\t7768:  0x9EE5,\n\t7769:  0x9EE8,\n\t7770:  0x9EEF,\n\t7771:  0x9EF4,\n\t7772:  0x9EF6,\n\t7773:  0x9EF7,\n\t7774:  0x9EF9,\n\t7775:  0x9EFB,\n\t7776:  0x9EFC,\n\t7777:  0x9EFD,\n\t7778:  0x9F07,\n\t7779:  0x9F08,\n\t7780:  0x76B7,\n\t7781:  0x9F15,\n\t7782:  0x9F21,\n\t7783:  0x9F2C,\n\t7784:  0x9F3E,\n\t7785:  0x9F4A,\n\t7786:  0x9F52,\n\t7787:  0x9F54,\n\t7788:  0x9F63,\n\t7789:  0x9F5F,\n\t7790:  0x9F60,\n\t7791:  0x9F61,\n\t7792:  0x9F66,\n\t7793:  0x9F67,\n\t7794:  0x9F6C,\n\t7795:  0x9F6A,\n\t7796:  0x9F77,\n\t7797:  0x9F72,\n\t7798:  0x9F76,\n\t7799:  0x9F95,\n\t7800:  0x9F9C,\n\t7801:  0x9FA0,\n\t7802:  0x582F,\n\t7803:  0x69C7,\n\t7804:  0x9059,\n\t7805:  0x7464,\n\t7806:  0x51DC,\n\t7807:  0x7199,\n\t8272:  0x7E8A,\n\t8273:  0x891C,\n\t8274:  0x9348,\n\t8275:  0x9288,\n\t8276:  0x84DC,\n\t8277:  0x4FC9,\n\t8278:  0x70BB,\n\t8279:  0x6631,\n\t8280:  0x68C8,\n\t8281:  0x92F9,\n\t8282:  0x66FB,\n\t8283:  0x5F45,\n\t8284:  0x4E28,\n\t8285:  0x4EE1,\n\t8286:  0x4EFC,\n\t8287:  0x4F00,\n\t8288:  0x4F03,\n\t8289:  0x4F39,\n\t8290:  0x4F56,\n\t8291:  0x4F92,\n\t8292:  0x4F8A,\n\t8293:  0x4F9A,\n\t8294:  0x4F94,\n\t8295:  0x4FCD,\n\t8296:  0x5040,\n\t8297:  0x5022,\n\t8298:  0x4FFF,\n\t8299:  0x501E,\n\t8300:  0x5046,\n\t8301:  0x5070,\n\t8302:  0x5042,\n\t8303:  0x5094,\n\t8304:  0x50F4,\n\t8305:  0x50D8,\n\t8306:  0x514A,\n\t8307:  0x5164,\n\t8308:  0x519D,\n\t8309:  0x51BE,\n\t8310:  0x51EC,\n\t8311:  0x5215,\n\t8312:  0x529C,\n\t8313:  0x52A6,\n\t8314:  0x52C0,\n\t8315:  0x52DB,\n\t8316:  0x5300,\n\t8317:  0x5307,\n\t8318:  0x5324,\n\t8319:  0x5372,\n\t8320:  0x5393,\n\t8321:  0x53B2,\n\t8322:  0x53DD,\n\t8323:  0xFA0E,\n\t8324:  0x549C,\n\t8325:  0x548A,\n\t8326:  0x54A9,\n\t8327:  0x54FF,\n\t8328:  0x5586,\n\t8329:  0x5759,\n\t8330:  0x5765,\n\t8331:  0x57AC,\n\t8332:  0x57C8,\n\t8333:  0x57C7,\n\t8334:  0xFA0F,\n\t8335:  0xFA10,\n\t8336:  0x589E,\n\t8337:  0x58B2,\n\t8338:  0x590B,\n\t8339:  0x5953,\n\t8340:  0x595B,\n\t8341:  0x595D,\n\t8342:  0x5963,\n\t8343:  0x59A4,\n\t8344:  0x59BA,\n\t8345:  0x5B56,\n\t8346:  0x5BC0,\n\t8347:  0x752F,\n\t8348:  0x5BD8,\n\t8349:  0x5BEC,\n\t8350:  0x5C1E,\n\t8351:  0x5CA6,\n\t8352:  0x5CBA,\n\t8353:  0x5CF5,\n\t8354:  0x5D27,\n\t8355:  0x5D53,\n\t8356:  0xFA11,\n\t8357:  0x5D42,\n\t8358:  0x5D6D,\n\t8359:  0x5DB8,\n\t8360:  0x5DB9,\n\t8361:  0x5DD0,\n\t8362:  0x5F21,\n\t8363:  0x5F34,\n\t8364:  0x5F67,\n\t8365:  0x5FB7,\n\t8366:  0x5FDE,\n\t8367:  0x605D,\n\t8368:  0x6085,\n\t8369:  0x608A,\n\t8370:  0x60DE,\n\t8371:  0x60D5,\n\t8372:  0x6120,\n\t8373:  0x60F2,\n\t8374:  0x6111,\n\t8375:  0x6137,\n\t8376:  0x6130,\n\t8377:  0x6198,\n\t8378:  0x6213,\n\t8379:  0x62A6,\n\t8380:  0x63F5,\n\t8381:  0x6460,\n\t8382:  0x649D,\n\t8383:  0x64CE,\n\t8384:  0x654E,\n\t8385:  0x6600,\n\t8386:  0x6615,\n\t8387:  0x663B,\n\t8388:  0x6609,\n\t8389:  0x662E,\n\t8390:  0x661E,\n\t8391:  0x6624,\n\t8392:  0x6665,\n\t8393:  0x6657,\n\t8394:  0x6659,\n\t8395:  0xFA12,\n\t8396:  0x6673,\n\t8397:  0x6699,\n\t8398:  0x66A0,\n\t8399:  0x66B2,\n\t8400:  0x66BF,\n\t8401:  0x66FA,\n\t8402:  0x670E,\n\t8403:  0xF929,\n\t8404:  0x6766,\n\t8405:  0x67BB,\n\t8406:  0x6852,\n\t8407:  0x67C0,\n\t8408:  0x6801,\n\t8409:  0x6844,\n\t8410:  0x68CF,\n\t8411:  0xFA13,\n\t8412:  0x6968,\n\t8413:  0xFA14,\n\t8414:  0x6998,\n\t8415:  0x69E2,\n\t8416:  0x6A30,\n\t8417:  0x6A6B,\n\t8418:  0x6A46,\n\t8419:  0x6A73,\n\t8420:  0x6A7E,\n\t8421:  0x6AE2,\n\t8422:  0x6AE4,\n\t8423:  0x6BD6,\n\t8424:  0x6C3F,\n\t8425:  0x6C5C,\n\t8426:  0x6C86,\n\t8427:  0x6C6F,\n\t8428:  0x6CDA,\n\t8429:  0x6D04,\n\t8430:  0x6D87,\n\t8431:  0x6D6F,\n\t8432:  0x6D96,\n\t8433:  0x6DAC,\n\t8434:  0x6DCF,\n\t8435:  0x6DF8,\n\t8436:  0x6DF2,\n\t8437:  0x6DFC,\n\t8438:  0x6E39,\n\t8439:  0x6E5C,\n\t8440:  0x6E27,\n\t8441:  0x6E3C,\n\t8442:  0x6EBF,\n\t8443:  0x6F88,\n\t8444:  0x6FB5,\n\t8445:  0x6FF5,\n\t8446:  0x7005,\n\t8447:  0x7007,\n\t8448:  0x7028,\n\t8449:  0x7085,\n\t8450:  0x70AB,\n\t8451:  0x710F,\n\t8452:  0x7104,\n\t8453:  0x715C,\n\t8454:  0x7146,\n\t8455:  0x7147,\n\t8456:  0xFA15,\n\t8457:  0x71C1,\n\t8458:  0x71FE,\n\t8459:  0x72B1,\n\t8460:  0x72BE,\n\t8461:  0x7324,\n\t8462:  0xFA16,\n\t8463:  0x7377,\n\t8464:  0x73BD,\n\t8465:  0x73C9,\n\t8466:  0x73D6,\n\t8467:  0x73E3,\n\t8468:  0x73D2,\n\t8469:  0x7407,\n\t8470:  0x73F5,\n\t8471:  0x7426,\n\t8472:  0x742A,\n\t8473:  0x7429,\n\t8474:  0x742E,\n\t8475:  0x7462,\n\t8476:  0x7489,\n\t8477:  0x749F,\n\t8478:  0x7501,\n\t8479:  0x756F,\n\t8480:  0x7682,\n\t8481:  0x769C,\n\t8482:  0x769E,\n\t8483:  0x769B,\n\t8484:  0x76A6,\n\t8485:  0xFA17,\n\t8486:  0x7746,\n\t8487:  0x52AF,\n\t8488:  0x7821,\n\t8489:  0x784E,\n\t8490:  0x7864,\n\t8491:  0x787A,\n\t8492:  0x7930,\n\t8493:  0xFA18,\n\t8494:  0xFA19,\n\t8495:  0xFA1A,\n\t8496:  0x7994,\n\t8497:  0xFA1B,\n\t8498:  0x799B,\n\t8499:  0x7AD1,\n\t8500:  0x7AE7,\n\t8501:  0xFA1C,\n\t8502:  0x7AEB,\n\t8503:  0x7B9E,\n\t8504:  0xFA1D,\n\t8505:  0x7D48,\n\t8506:  0x7D5C,\n\t8507:  0x7DB7,\n\t8508:  0x7DA0,\n\t8509:  0x7DD6,\n\t8510:  0x7E52,\n\t8511:  0x7F47,\n\t8512:  0x7FA1,\n\t8513:  0xFA1E,\n\t8514:  0x8301,\n\t8515:  0x8362,\n\t8516:  0x837F,\n\t8517:  0x83C7,\n\t8518:  0x83F6,\n\t8519:  0x8448,\n\t8520:  0x84B4,\n\t8521:  0x8553,\n\t8522:  0x8559,\n\t8523:  0x856B,\n\t8524:  0xFA1F,\n\t8525:  0x85B0,\n\t8526:  0xFA20,\n\t8527:  0xFA21,\n\t8528:  0x8807,\n\t8529:  0x88F5,\n\t8530:  0x8A12,\n\t8531:  0x8A37,\n\t8532:  0x8A79,\n\t8533:  0x8AA7,\n\t8534:  0x8ABE,\n\t8535:  0x8ADF,\n\t8536:  0xFA22,\n\t8537:  0x8AF6,\n\t8538:  0x8B53,\n\t8539:  0x8B7F,\n\t8540:  0x8CF0,\n\t8541:  0x8CF4,\n\t8542:  0x8D12,\n\t8543:  0x8D76,\n\t8544:  0xFA23,\n\t8545:  0x8ECF,\n\t8546:  0xFA24,\n\t8547:  0xFA25,\n\t8548:  0x9067,\n\t8549:  0x90DE,\n\t8550:  0xFA26,\n\t8551:  0x9115,\n\t8552:  0x9127,\n\t8553:  0x91DA,\n\t8554:  0x91D7,\n\t8555:  0x91DE,\n\t8556:  0x91ED,\n\t8557:  0x91EE,\n\t8558:  0x91E4,\n\t8559:  0x91E5,\n\t8560:  0x9206,\n\t8561:  0x9210,\n\t8562:  0x920A,\n\t8563:  0x923A,\n\t8564:  0x9240,\n\t8565:  0x923C,\n\t8566:  0x924E,\n\t8567:  0x9259,\n\t8568:  0x9251,\n\t8569:  0x9239,\n\t8570:  0x9267,\n\t8571:  0x92A7,\n\t8572:  0x9277,\n\t8573:  0x9278,\n\t8574:  0x92E7,\n\t8575:  0x92D7,\n\t8576:  0x92D9,\n\t8577:  0x92D0,\n\t8578:  0xFA27,\n\t8579:  0x92D5,\n\t8580:  0x92E0,\n\t8581:  0x92D3,\n\t8582:  0x9325,\n\t8583:  0x9321,\n\t8584:  0x92FB,\n\t8585:  0xFA28,\n\t8586:  0x931E,\n\t8587:  0x92FF,\n\t8588:  0x931D,\n\t8589:  0x9302,\n\t8590:  0x9370,\n\t8591:  0x9357,\n\t8592:  0x93A4,\n\t8593:  0x93C6,\n\t8594:  0x93DE,\n\t8595:  0x93F8,\n\t8596:  0x9431,\n\t8597:  0x9445,\n\t8598:  0x9448,\n\t8599:  0x9592,\n\t8600:  0xF9DC,\n\t8601:  0xFA29,\n\t8602:  0x969D,\n\t8603:  0x96AF,\n\t8604:  0x9733,\n\t8605:  0x973B,\n\t8606:  0x9743,\n\t8607:  0x974D,\n\t8608:  0x974F,\n\t8609:  0x9751,\n\t8610:  0x9755,\n\t8611:  0x9857,\n\t8612:  0x9865,\n\t8613:  0xFA2A,\n\t8614:  0xFA2B,\n\t8615:  0x9927,\n\t8616:  0xFA2C,\n\t8617:  0x999E,\n\t8618:  0x9A4E,\n\t8619:  0x9AD9,\n\t8620:  0x9ADC,\n\t8621:  0x9B75,\n\t8622:  0x9B72,\n\t8623:  0x9B8F,\n\t8624:  0x9BB1,\n\t8625:  0x9BBB,\n\t8626:  0x9C00,\n\t8627:  0x9D70,\n\t8628:  0x9D6B,\n\t8629:  0xFA2D,\n\t8630:  0x9E19,\n\t8631:  0x9ED1,\n\t8634:  0x2170,\n\t8635:  0x2171,\n\t8636:  0x2172,\n\t8637:  0x2173,\n\t8638:  0x2174,\n\t8639:  0x2175,\n\t8640:  0x2176,\n\t8641:  0x2177,\n\t8642:  0x2178,\n\t8643:  0x2179,\n\t8644:  0xFFE2,\n\t8645:  0xFFE4,\n\t8646:  0xFF07,\n\t8647:  0xFF02,\n\t10716: 0x2170,\n\t10717: 0x2171,\n\t10718: 0x2172,\n\t10719: 0x2173,\n\t10720: 0x2174,\n\t10721: 0x2175,\n\t10722: 0x2176,\n\t10723: 0x2177,\n\t10724: 0x2178,\n\t10725: 0x2179,\n\t10726: 0x2160,\n\t10727: 0x2161,\n\t10728: 0x2162,\n\t10729: 0x2163,\n\t10730: 0x2164,\n\t10731: 0x2165,\n\t10732: 0x2166,\n\t10733: 0x2167,\n\t10734: 0x2168,\n\t10735: 0x2169,\n\t10736: 0xFFE2,\n\t10737: 0xFFE4,\n\t10738: 0xFF07,\n\t10739: 0xFF02,\n\t10740: 0x3231,\n\t10741: 0x2116,\n\t10742: 0x2121,\n\t10743: 0x2235,\n\t10744: 0x7E8A,\n\t10745: 0x891C,\n\t10746: 0x9348,\n\t10747: 0x9288,\n\t10748: 0x84DC,\n\t10749: 0x4FC9,\n\t10750: 0x70BB,\n\t10751: 0x6631,\n\t10752: 0x68C8,\n\t10753: 0x92F9,\n\t10754: 0x66FB,\n\t10755: 0x5F45,\n\t10756: 0x4E28,\n\t10757: 0x4EE1,\n\t10758: 0x4EFC,\n\t10759: 0x4F00,\n\t10760: 0x4F03,\n\t10761: 0x4F39,\n\t10762: 0x4F56,\n\t10763: 0x4F92,\n\t10764: 0x4F8A,\n\t10765: 0x4F9A,\n\t10766: 0x4F94,\n\t10767: 0x4FCD,\n\t10768: 0x5040,\n\t10769: 0x5022,\n\t10770: 0x4FFF,\n\t10771: 0x501E,\n\t10772: 0x5046,\n\t10773: 0x5070,\n\t10774: 0x5042,\n\t10775: 0x5094,\n\t10776: 0x50F4,\n\t10777: 0x50D8,\n\t10778: 0x514A,\n\t10779: 0x5164,\n\t10780: 0x519D,\n\t10781: 0x51BE,\n\t10782: 0x51EC,\n\t10783: 0x5215,\n\t10784: 0x529C,\n\t10785: 0x52A6,\n\t10786: 0x52C0,\n\t10787: 0x52DB,\n\t10788: 0x5300,\n\t10789: 0x5307,\n\t10790: 0x5324,\n\t10791: 0x5372,\n\t10792: 0x5393,\n\t10793: 0x53B2,\n\t10794: 0x53DD,\n\t10795: 0xFA0E,\n\t10796: 0x549C,\n\t10797: 0x548A,\n\t10798: 0x54A9,\n\t10799: 0x54FF,\n\t10800: 0x5586,\n\t10801: 0x5759,\n\t10802: 0x5765,\n\t10803: 0x57AC,\n\t10804: 0x57C8,\n\t10805: 0x57C7,\n\t10806: 0xFA0F,\n\t10807: 0xFA10,\n\t10808: 0x589E,\n\t10809: 0x58B2,\n\t10810: 0x590B,\n\t10811: 0x5953,\n\t10812: 0x595B,\n\t10813: 0x595D,\n\t10814: 0x5963,\n\t10815: 0x59A4,\n\t10816: 0x59BA,\n\t10817: 0x5B56,\n\t10818: 0x5BC0,\n\t10819: 0x752F,\n\t10820: 0x5BD8,\n\t10821: 0x5BEC,\n\t10822: 0x5C1E,\n\t10823: 0x5CA6,\n\t10824: 0x5CBA,\n\t10825: 0x5CF5,\n\t10826: 0x5D27,\n\t10827: 0x5D53,\n\t10828: 0xFA11,\n\t10829: 0x5D42,\n\t10830: 0x5D6D,\n\t10831: 0x5DB8,\n\t10832: 0x5DB9,\n\t10833: 0x5DD0,\n\t10834: 0x5F21,\n\t10835: 0x5F34,\n\t10836: 0x5F67,\n\t10837: 0x5FB7,\n\t10838: 0x5FDE,\n\t10839: 0x605D,\n\t10840: 0x6085,\n\t10841: 0x608A,\n\t10842: 0x60DE,\n\t10843: 0x60D5,\n\t10844: 0x6120,\n\t10845: 0x60F2,\n\t10846: 0x6111,\n\t10847: 0x6137,\n\t10848: 0x6130,\n\t10849: 0x6198,\n\t10850: 0x6213,\n\t10851: 0x62A6,\n\t10852: 0x63F5,\n\t10853: 0x6460,\n\t10854: 0x649D,\n\t10855: 0x64CE,\n\t10856: 0x654E,\n\t10857: 0x6600,\n\t10858: 0x6615,\n\t10859: 0x663B,\n\t10860: 0x6609,\n\t10861: 0x662E,\n\t10862: 0x661E,\n\t10863: 0x6624,\n\t10864: 0x6665,\n\t10865: 0x6657,\n\t10866: 0x6659,\n\t10867: 0xFA12,\n\t10868: 0x6673,\n\t10869: 0x6699,\n\t10870: 0x66A0,\n\t10871: 0x66B2,\n\t10872: 0x66BF,\n\t10873: 0x66FA,\n\t10874: 0x670E,\n\t10875: 0xF929,\n\t10876: 0x6766,\n\t10877: 0x67BB,\n\t10878: 0x6852,\n\t10879: 0x67C0,\n\t10880: 0x6801,\n\t10881: 0x6844,\n\t10882: 0x68CF,\n\t10883: 0xFA13,\n\t10884: 0x6968,\n\t10885: 0xFA14,\n\t10886: 0x6998,\n\t10887: 0x69E2,\n\t10888: 0x6A30,\n\t10889: 0x6A6B,\n\t10890: 0x6A46,\n\t10891: 0x6A73,\n\t10892: 0x6A7E,\n\t10893: 0x6AE2,\n\t10894: 0x6AE4,\n\t10895: 0x6BD6,\n\t10896: 0x6C3F,\n\t10897: 0x6C5C,\n\t10898: 0x6C86,\n\t10899: 0x6C6F,\n\t10900: 0x6CDA,\n\t10901: 0x6D04,\n\t10902: 0x6D87,\n\t10903: 0x6D6F,\n\t10904: 0x6D96,\n\t10905: 0x6DAC,\n\t10906: 0x6DCF,\n\t10907: 0x6DF8,\n\t10908: 0x6DF2,\n\t10909: 0x6DFC,\n\t10910: 0x6E39,\n\t10911: 0x6E5C,\n\t10912: 0x6E27,\n\t10913: 0x6E3C,\n\t10914: 0x6EBF,\n\t10915: 0x6F88,\n\t10916: 0x6FB5,\n\t10917: 0x6FF5,\n\t10918: 0x7005,\n\t10919: 0x7007,\n\t10920: 0x7028,\n\t10921: 0x7085,\n\t10922: 0x70AB,\n\t10923: 0x710F,\n\t10924: 0x7104,\n\t10925: 0x715C,\n\t10926: 0x7146,\n\t10927: 0x7147,\n\t10928: 0xFA15,\n\t10929: 0x71C1,\n\t10930: 0x71FE,\n\t10931: 0x72B1,\n\t10932: 0x72BE,\n\t10933: 0x7324,\n\t10934: 0xFA16,\n\t10935: 0x7377,\n\t10936: 0x73BD,\n\t10937: 0x73C9,\n\t10938: 0x73D6,\n\t10939: 0x73E3,\n\t10940: 0x73D2,\n\t10941: 0x7407,\n\t10942: 0x73F5,\n\t10943: 0x7426,\n\t10944: 0x742A,\n\t10945: 0x7429,\n\t10946: 0x742E,\n\t10947: 0x7462,\n\t10948: 0x7489,\n\t10949: 0x749F,\n\t10950: 0x7501,\n\t10951: 0x756F,\n\t10952: 0x7682,\n\t10953: 0x769C,\n\t10954: 0x769E,\n\t10955: 0x769B,\n\t10956: 0x76A6,\n\t10957: 0xFA17,\n\t10958: 0x7746,\n\t10959: 0x52AF,\n\t10960: 0x7821,\n\t10961: 0x784E,\n\t10962: 0x7864,\n\t10963: 0x787A,\n\t10964: 0x7930,\n\t10965: 0xFA18,\n\t10966: 0xFA19,\n\t10967: 0xFA1A,\n\t10968: 0x7994,\n\t10969: 0xFA1B,\n\t10970: 0x799B,\n\t10971: 0x7AD1,\n\t10972: 0x7AE7,\n\t10973: 0xFA1C,\n\t10974: 0x7AEB,\n\t10975: 0x7B9E,\n\t10976: 0xFA1D,\n\t10977: 0x7D48,\n\t10978: 0x7D5C,\n\t10979: 0x7DB7,\n\t10980: 0x7DA0,\n\t10981: 0x7DD6,\n\t10982: 0x7E52,\n\t10983: 0x7F47,\n\t10984: 0x7FA1,\n\t10985: 0xFA1E,\n\t10986: 0x8301,\n\t10987: 0x8362,\n\t10988: 0x837F,\n\t10989: 0x83C7,\n\t10990: 0x83F6,\n\t10991: 0x8448,\n\t10992: 0x84B4,\n\t10993: 0x8553,\n\t10994: 0x8559,\n\t10995: 0x856B,\n\t10996: 0xFA1F,\n\t10997: 0x85B0,\n\t10998: 0xFA20,\n\t10999: 0xFA21,\n\t11000: 0x8807,\n\t11001: 0x88F5,\n\t11002: 0x8A12,\n\t11003: 0x8A37,\n\t11004: 0x8A79,\n\t11005: 0x8AA7,\n\t11006: 0x8ABE,\n\t11007: 0x8ADF,\n\t11008: 0xFA22,\n\t11009: 0x8AF6,\n\t11010: 0x8B53,\n\t11011: 0x8B7F,\n\t11012: 0x8CF0,\n\t11013: 0x8CF4,\n\t11014: 0x8D12,\n\t11015: 0x8D76,\n\t11016: 0xFA23,\n\t11017: 0x8ECF,\n\t11018: 0xFA24,\n\t11019: 0xFA25,\n\t11020: 0x9067,\n\t11021: 0x90DE,\n\t11022: 0xFA26,\n\t11023: 0x9115,\n\t11024: 0x9127,\n\t11025: 0x91DA,\n\t11026: 0x91D7,\n\t11027: 0x91DE,\n\t11028: 0x91ED,\n\t11029: 0x91EE,\n\t11030: 0x91E4,\n\t11031: 0x91E5,\n\t11032: 0x9206,\n\t11033: 0x9210,\n\t11034: 0x920A,\n\t11035: 0x923A,\n\t11036: 0x9240,\n\t11037: 0x923C,\n\t11038: 0x924E,\n\t11039: 0x9259,\n\t11040: 0x9251,\n\t11041: 0x9239,\n\t11042: 0x9267,\n\t11043: 0x92A7,\n\t11044: 0x9277,\n\t11045: 0x9278,\n\t11046: 0x92E7,\n\t11047: 0x92D7,\n\t11048: 0x92D9,\n\t11049: 0x92D0,\n\t11050: 0xFA27,\n\t11051: 0x92D5,\n\t11052: 0x92E0,\n\t11053: 0x92D3,\n\t11054: 0x9325,\n\t11055: 0x9321,\n\t11056: 0x92FB,\n\t11057: 0xFA28,\n\t11058: 0x931E,\n\t11059: 0x92FF,\n\t11060: 0x931D,\n\t11061: 0x9302,\n\t11062: 0x9370,\n\t11063: 0x9357,\n\t11064: 0x93A4,\n\t11065: 0x93C6,\n\t11066: 0x93DE,\n\t11067: 0x93F8,\n\t11068: 0x9431,\n\t11069: 0x9445,\n\t11070: 0x9448,\n\t11071: 0x9592,\n\t11072: 0xF9DC,\n\t11073: 0xFA29,\n\t11074: 0x969D,\n\t11075: 0x96AF,\n\t11076: 0x9733,\n\t11077: 0x973B,\n\t11078: 0x9743,\n\t11079: 0x974D,\n\t11080: 0x974F,\n\t11081: 0x9751,\n\t11082: 0x9755,\n\t11083: 0x9857,\n\t11084: 0x9865,\n\t11085: 0xFA2A,\n\t11086: 0xFA2B,\n\t11087: 0x9927,\n\t11088: 0xFA2C,\n\t11089: 0x999E,\n\t11090: 0x9A4E,\n\t11091: 0x9AD9,\n\t11092: 0x9ADC,\n\t11093: 0x9B75,\n\t11094: 0x9B72,\n\t11095: 0x9B8F,\n\t11096: 0x9BB1,\n\t11097: 0x9BBB,\n\t11098: 0x9C00,\n\t11099: 0x9D70,\n\t11100: 0x9D6B,\n\t11101: 0xFA2D,\n\t11102: 0x9E19,\n\t11103: 0x9ED1,\n}\n\n// jis0212Decode is the decoding table from JIS 0212 code to Unicode.\n// It is defined at http://encoding.spec.whatwg.org/index-jis0212.txt\nvar jis0212Decode = [...]uint16{\n\t108:  0x02D8,\n\t109:  0x02C7,\n\t110:  0x00B8,\n\t111:  0x02D9,\n\t112:  0x02DD,\n\t113:  0x00AF,\n\t114:  0x02DB,\n\t115:  0x02DA,\n\t116:  0xFF5E,\n\t117:  0x0384,\n\t118:  0x0385,\n\t127:  0x00A1,\n\t128:  0x00A6,\n\t129:  0x00BF,\n\t168:  0x00BA,\n\t169:  0x00AA,\n\t170:  0x00A9,\n\t171:  0x00AE,\n\t172:  0x2122,\n\t173:  0x00A4,\n\t174:  0x2116,\n\t534:  0x0386,\n\t535:  0x0388,\n\t536:  0x0389,\n\t537:  0x038A,\n\t538:  0x03AA,\n\t540:  0x038C,\n\t542:  0x038E,\n\t543:  0x03AB,\n\t545:  0x038F,\n\t550:  0x03AC,\n\t551:  0x03AD,\n\t552:  0x03AE,\n\t553:  0x03AF,\n\t554:  0x03CA,\n\t555:  0x0390,\n\t556:  0x03CC,\n\t557:  0x03C2,\n\t558:  0x03CD,\n\t559:  0x03CB,\n\t560:  0x03B0,\n\t561:  0x03CE,\n\t597:  0x0402,\n\t598:  0x0403,\n\t599:  0x0404,\n\t600:  0x0405,\n\t601:  0x0406,\n\t602:  0x0407,\n\t603:  0x0408,\n\t604:  0x0409,\n\t605:  0x040A,\n\t606:  0x040B,\n\t607:  0x040C,\n\t608:  0x040E,\n\t609:  0x040F,\n\t645:  0x0452,\n\t646:  0x0453,\n\t647:  0x0454,\n\t648:  0x0455,\n\t649:  0x0456,\n\t650:  0x0457,\n\t651:  0x0458,\n\t652:  0x0459,\n\t653:  0x045A,\n\t654:  0x045B,\n\t655:  0x045C,\n\t656:  0x045E,\n\t657:  0x045F,\n\t752:  0x00C6,\n\t753:  0x0110,\n\t755:  0x0126,\n\t757:  0x0132,\n\t759:  0x0141,\n\t760:  0x013F,\n\t762:  0x014A,\n\t763:  0x00D8,\n\t764:  0x0152,\n\t766:  0x0166,\n\t767:  0x00DE,\n\t784:  0x00E6,\n\t785:  0x0111,\n\t786:  0x00F0,\n\t787:  0x0127,\n\t788:  0x0131,\n\t789:  0x0133,\n\t790:  0x0138,\n\t791:  0x0142,\n\t792:  0x0140,\n\t793:  0x0149,\n\t794:  0x014B,\n\t795:  0x00F8,\n\t796:  0x0153,\n\t797:  0x00DF,\n\t798:  0x0167,\n\t799:  0x00FE,\n\t846:  0x00C1,\n\t847:  0x00C0,\n\t848:  0x00C4,\n\t849:  0x00C2,\n\t850:  0x0102,\n\t851:  0x01CD,\n\t852:  0x0100,\n\t853:  0x0104,\n\t854:  0x00C5,\n\t855:  0x00C3,\n\t856:  0x0106,\n\t857:  0x0108,\n\t858:  0x010C,\n\t859:  0x00C7,\n\t860:  0x010A,\n\t861:  0x010E,\n\t862:  0x00C9,\n\t863:  0x00C8,\n\t864:  0x00CB,\n\t865:  0x00CA,\n\t866:  0x011A,\n\t867:  0x0116,\n\t868:  0x0112,\n\t869:  0x0118,\n\t871:  0x011C,\n\t872:  0x011E,\n\t873:  0x0122,\n\t874:  0x0120,\n\t875:  0x0124,\n\t876:  0x00CD,\n\t877:  0x00CC,\n\t878:  0x00CF,\n\t879:  0x00CE,\n\t880:  0x01CF,\n\t881:  0x0130,\n\t882:  0x012A,\n\t883:  0x012E,\n\t884:  0x0128,\n\t885:  0x0134,\n\t886:  0x0136,\n\t887:  0x0139,\n\t888:  0x013D,\n\t889:  0x013B,\n\t890:  0x0143,\n\t891:  0x0147,\n\t892:  0x0145,\n\t893:  0x00D1,\n\t894:  0x00D3,\n\t895:  0x00D2,\n\t896:  0x00D6,\n\t897:  0x00D4,\n\t898:  0x01D1,\n\t899:  0x0150,\n\t900:  0x014C,\n\t901:  0x00D5,\n\t902:  0x0154,\n\t903:  0x0158,\n\t904:  0x0156,\n\t905:  0x015A,\n\t906:  0x015C,\n\t907:  0x0160,\n\t908:  0x015E,\n\t909:  0x0164,\n\t910:  0x0162,\n\t911:  0x00DA,\n\t912:  0x00D9,\n\t913:  0x00DC,\n\t914:  0x00DB,\n\t915:  0x016C,\n\t916:  0x01D3,\n\t917:  0x0170,\n\t918:  0x016A,\n\t919:  0x0172,\n\t920:  0x016E,\n\t921:  0x0168,\n\t922:  0x01D7,\n\t923:  0x01DB,\n\t924:  0x01D9,\n\t925:  0x01D5,\n\t926:  0x0174,\n\t927:  0x00DD,\n\t928:  0x0178,\n\t929:  0x0176,\n\t930:  0x0179,\n\t931:  0x017D,\n\t932:  0x017B,\n\t940:  0x00E1,\n\t941:  0x00E0,\n\t942:  0x00E4,\n\t943:  0x00E2,\n\t944:  0x0103,\n\t945:  0x01CE,\n\t946:  0x0101,\n\t947:  0x0105,\n\t948:  0x00E5,\n\t949:  0x00E3,\n\t950:  0x0107,\n\t951:  0x0109,\n\t952:  0x010D,\n\t953:  0x00E7,\n\t954:  0x010B,\n\t955:  0x010F,\n\t956:  0x00E9,\n\t957:  0x00E8,\n\t958:  0x00EB,\n\t959:  0x00EA,\n\t960:  0x011B,\n\t961:  0x0117,\n\t962:  0x0113,\n\t963:  0x0119,\n\t964:  0x01F5,\n\t965:  0x011D,\n\t966:  0x011F,\n\t968:  0x0121,\n\t969:  0x0125,\n\t970:  0x00ED,\n\t971:  0x00EC,\n\t972:  0x00EF,\n\t973:  0x00EE,\n\t974:  0x01D0,\n\t976:  0x012B,\n\t977:  0x012F,\n\t978:  0x0129,\n\t979:  0x0135,\n\t980:  0x0137,\n\t981:  0x013A,\n\t982:  0x013E,\n\t983:  0x013C,\n\t984:  0x0144,\n\t985:  0x0148,\n\t986:  0x0146,\n\t987:  0x00F1,\n\t988:  0x00F3,\n\t989:  0x00F2,\n\t990:  0x00F6,\n\t991:  0x00F4,\n\t992:  0x01D2,\n\t993:  0x0151,\n\t994:  0x014D,\n\t995:  0x00F5,\n\t996:  0x0155,\n\t997:  0x0159,\n\t998:  0x0157,\n\t999:  0x015B,\n\t1000: 0x015D,\n\t1001: 0x0161,\n\t1002: 0x015F,\n\t1003: 0x0165,\n\t1004: 0x0163,\n\t1005: 0x00FA,\n\t1006: 0x00F9,\n\t1007: 0x00FC,\n\t1008: 0x00FB,\n\t1009: 0x016D,\n\t1010: 0x01D4,\n\t1011: 0x0171,\n\t1012: 0x016B,\n\t1013: 0x0173,\n\t1014: 0x016F,\n\t1015: 0x0169,\n\t1016: 0x01D8,\n\t1017: 0x01DC,\n\t1018: 0x01DA,\n\t1019: 0x01D6,\n\t1020: 0x0175,\n\t1021: 0x00FD,\n\t1022: 0x00FF,\n\t1023: 0x0177,\n\t1024: 0x017A,\n\t1025: 0x017E,\n\t1026: 0x017C,\n\t1410: 0x4E02,\n\t1411: 0x4E04,\n\t1412: 0x4E05,\n\t1413: 0x4E0C,\n\t1414: 0x4E12,\n\t1415: 0x4E1F,\n\t1416: 0x4E23,\n\t1417: 0x4E24,\n\t1418: 0x4E28,\n\t1419: 0x4E2B,\n\t1420: 0x4E2E,\n\t1421: 0x4E2F,\n\t1422: 0x4E30,\n\t1423: 0x4E35,\n\t1424: 0x4E40,\n\t1425: 0x4E41,\n\t1426: 0x4E44,\n\t1427: 0x4E47,\n\t1428: 0x4E51,\n\t1429: 0x4E5A,\n\t1430: 0x4E5C,\n\t1431: 0x4E63,\n\t1432: 0x4E68,\n\t1433: 0x4E69,\n\t1434: 0x4E74,\n\t1435: 0x4E75,\n\t1436: 0x4E79,\n\t1437: 0x4E7F,\n\t1438: 0x4E8D,\n\t1439: 0x4E96,\n\t1440: 0x4E97,\n\t1441: 0x4E9D,\n\t1442: 0x4EAF,\n\t1443: 0x4EB9,\n\t1444: 0x4EC3,\n\t1445: 0x4ED0,\n\t1446: 0x4EDA,\n\t1447: 0x4EDB,\n\t1448: 0x4EE0,\n\t1449: 0x4EE1,\n\t1450: 0x4EE2,\n\t1451: 0x4EE8,\n\t1452: 0x4EEF,\n\t1453: 0x4EF1,\n\t1454: 0x4EF3,\n\t1455: 0x4EF5,\n\t1456: 0x4EFD,\n\t1457: 0x4EFE,\n\t1458: 0x4EFF,\n\t1459: 0x4F00,\n\t1460: 0x4F02,\n\t1461: 0x4F03,\n\t1462: 0x4F08,\n\t1463: 0x4F0B,\n\t1464: 0x4F0C,\n\t1465: 0x4F12,\n\t1466: 0x4F15,\n\t1467: 0x4F16,\n\t1468: 0x4F17,\n\t1469: 0x4F19,\n\t1470: 0x4F2E,\n\t1471: 0x4F31,\n\t1472: 0x4F60,\n\t1473: 0x4F33,\n\t1474: 0x4F35,\n\t1475: 0x4F37,\n\t1476: 0x4F39,\n\t1477: 0x4F3B,\n\t1478: 0x4F3E,\n\t1479: 0x4F40,\n\t1480: 0x4F42,\n\t1481: 0x4F48,\n\t1482: 0x4F49,\n\t1483: 0x4F4B,\n\t1484: 0x4F4C,\n\t1485: 0x4F52,\n\t1486: 0x4F54,\n\t1487: 0x4F56,\n\t1488: 0x4F58,\n\t1489: 0x4F5F,\n\t1490: 0x4F63,\n\t1491: 0x4F6A,\n\t1492: 0x4F6C,\n\t1493: 0x4F6E,\n\t1494: 0x4F71,\n\t1495: 0x4F77,\n\t1496: 0x4F78,\n\t1497: 0x4F79,\n\t1498: 0x4F7A,\n\t1499: 0x4F7D,\n\t1500: 0x4F7E,\n\t1501: 0x4F81,\n\t1502: 0x4F82,\n\t1503: 0x4F84,\n\t1504: 0x4F85,\n\t1505: 0x4F89,\n\t1506: 0x4F8A,\n\t1507: 0x4F8C,\n\t1508: 0x4F8E,\n\t1509: 0x4F90,\n\t1510: 0x4F92,\n\t1511: 0x4F93,\n\t1512: 0x4F94,\n\t1513: 0x4F97,\n\t1514: 0x4F99,\n\t1515: 0x4F9A,\n\t1516: 0x4F9E,\n\t1517: 0x4F9F,\n\t1518: 0x4FB2,\n\t1519: 0x4FB7,\n\t1520: 0x4FB9,\n\t1521: 0x4FBB,\n\t1522: 0x4FBC,\n\t1523: 0x4FBD,\n\t1524: 0x4FBE,\n\t1525: 0x4FC0,\n\t1526: 0x4FC1,\n\t1527: 0x4FC5,\n\t1528: 0x4FC6,\n\t1529: 0x4FC8,\n\t1530: 0x4FC9,\n\t1531: 0x4FCB,\n\t1532: 0x4FCC,\n\t1533: 0x4FCD,\n\t1534: 0x4FCF,\n\t1535: 0x4FD2,\n\t1536: 0x4FDC,\n\t1537: 0x4FE0,\n\t1538: 0x4FE2,\n\t1539: 0x4FF0,\n\t1540: 0x4FF2,\n\t1541: 0x4FFC,\n\t1542: 0x4FFD,\n\t1543: 0x4FFF,\n\t1544: 0x5000,\n\t1545: 0x5001,\n\t1546: 0x5004,\n\t1547: 0x5007,\n\t1548: 0x500A,\n\t1549: 0x500C,\n\t1550: 0x500E,\n\t1551: 0x5010,\n\t1552: 0x5013,\n\t1553: 0x5017,\n\t1554: 0x5018,\n\t1555: 0x501B,\n\t1556: 0x501C,\n\t1557: 0x501D,\n\t1558: 0x501E,\n\t1559: 0x5022,\n\t1560: 0x5027,\n\t1561: 0x502E,\n\t1562: 0x5030,\n\t1563: 0x5032,\n\t1564: 0x5033,\n\t1565: 0x5035,\n\t1566: 0x5040,\n\t1567: 0x5041,\n\t1568: 0x5042,\n\t1569: 0x5045,\n\t1570: 0x5046,\n\t1571: 0x504A,\n\t1572: 0x504C,\n\t1573: 0x504E,\n\t1574: 0x5051,\n\t1575: 0x5052,\n\t1576: 0x5053,\n\t1577: 0x5057,\n\t1578: 0x5059,\n\t1579: 0x505F,\n\t1580: 0x5060,\n\t1581: 0x5062,\n\t1582: 0x5063,\n\t1583: 0x5066,\n\t1584: 0x5067,\n\t1585: 0x506A,\n\t1586: 0x506D,\n\t1587: 0x5070,\n\t1588: 0x5071,\n\t1589: 0x503B,\n\t1590: 0x5081,\n\t1591: 0x5083,\n\t1592: 0x5084,\n\t1593: 0x5086,\n\t1594: 0x508A,\n\t1595: 0x508E,\n\t1596: 0x508F,\n\t1597: 0x5090,\n\t1598: 0x5092,\n\t1599: 0x5093,\n\t1600: 0x5094,\n\t1601: 0x5096,\n\t1602: 0x509B,\n\t1603: 0x509C,\n\t1604: 0x509E,\n\t1605: 0x509F,\n\t1606: 0x50A0,\n\t1607: 0x50A1,\n\t1608: 0x50A2,\n\t1609: 0x50AA,\n\t1610: 0x50AF,\n\t1611: 0x50B0,\n\t1612: 0x50B9,\n\t1613: 0x50BA,\n\t1614: 0x50BD,\n\t1615: 0x50C0,\n\t1616: 0x50C3,\n\t1617: 0x50C4,\n\t1618: 0x50C7,\n\t1619: 0x50CC,\n\t1620: 0x50CE,\n\t1621: 0x50D0,\n\t1622: 0x50D3,\n\t1623: 0x50D4,\n\t1624: 0x50D8,\n\t1625: 0x50DC,\n\t1626: 0x50DD,\n\t1627: 0x50DF,\n\t1628: 0x50E2,\n\t1629: 0x50E4,\n\t1630: 0x50E6,\n\t1631: 0x50E8,\n\t1632: 0x50E9,\n\t1633: 0x50EF,\n\t1634: 0x50F1,\n\t1635: 0x50F6,\n\t1636: 0x50FA,\n\t1637: 0x50FE,\n\t1638: 0x5103,\n\t1639: 0x5106,\n\t1640: 0x5107,\n\t1641: 0x5108,\n\t1642: 0x510B,\n\t1643: 0x510C,\n\t1644: 0x510D,\n\t1645: 0x510E,\n\t1646: 0x50F2,\n\t1647: 0x5110,\n\t1648: 0x5117,\n\t1649: 0x5119,\n\t1650: 0x511B,\n\t1651: 0x511C,\n\t1652: 0x511D,\n\t1653: 0x511E,\n\t1654: 0x5123,\n\t1655: 0x5127,\n\t1656: 0x5128,\n\t1657: 0x512C,\n\t1658: 0x512D,\n\t1659: 0x512F,\n\t1660: 0x5131,\n\t1661: 0x5133,\n\t1662: 0x5134,\n\t1663: 0x5135,\n\t1664: 0x5138,\n\t1665: 0x5139,\n\t1666: 0x5142,\n\t1667: 0x514A,\n\t1668: 0x514F,\n\t1669: 0x5153,\n\t1670: 0x5155,\n\t1671: 0x5157,\n\t1672: 0x5158,\n\t1673: 0x515F,\n\t1674: 0x5164,\n\t1675: 0x5166,\n\t1676: 0x517E,\n\t1677: 0x5183,\n\t1678: 0x5184,\n\t1679: 0x518B,\n\t1680: 0x518E,\n\t1681: 0x5198,\n\t1682: 0x519D,\n\t1683: 0x51A1,\n\t1684: 0x51A3,\n\t1685: 0x51AD,\n\t1686: 0x51B8,\n\t1687: 0x51BA,\n\t1688: 0x51BC,\n\t1689: 0x51BE,\n\t1690: 0x51BF,\n\t1691: 0x51C2,\n\t1692: 0x51C8,\n\t1693: 0x51CF,\n\t1694: 0x51D1,\n\t1695: 0x51D2,\n\t1696: 0x51D3,\n\t1697: 0x51D5,\n\t1698: 0x51D8,\n\t1699: 0x51DE,\n\t1700: 0x51E2,\n\t1701: 0x51E5,\n\t1702: 0x51EE,\n\t1703: 0x51F2,\n\t1704: 0x51F3,\n\t1705: 0x51F4,\n\t1706: 0x51F7,\n\t1707: 0x5201,\n\t1708: 0x5202,\n\t1709: 0x5205,\n\t1710: 0x5212,\n\t1711: 0x5213,\n\t1712: 0x5215,\n\t1713: 0x5216,\n\t1714: 0x5218,\n\t1715: 0x5222,\n\t1716: 0x5228,\n\t1717: 0x5231,\n\t1718: 0x5232,\n\t1719: 0x5235,\n\t1720: 0x523C,\n\t1721: 0x5245,\n\t1722: 0x5249,\n\t1723: 0x5255,\n\t1724: 0x5257,\n\t1725: 0x5258,\n\t1726: 0x525A,\n\t1727: 0x525C,\n\t1728: 0x525F,\n\t1729: 0x5260,\n\t1730: 0x5261,\n\t1731: 0x5266,\n\t1732: 0x526E,\n\t1733: 0x5277,\n\t1734: 0x5278,\n\t1735: 0x5279,\n\t1736: 0x5280,\n\t1737: 0x5282,\n\t1738: 0x5285,\n\t1739: 0x528A,\n\t1740: 0x528C,\n\t1741: 0x5293,\n\t1742: 0x5295,\n\t1743: 0x5296,\n\t1744: 0x5297,\n\t1745: 0x5298,\n\t1746: 0x529A,\n\t1747: 0x529C,\n\t1748: 0x52A4,\n\t1749: 0x52A5,\n\t1750: 0x52A6,\n\t1751: 0x52A7,\n\t1752: 0x52AF,\n\t1753: 0x52B0,\n\t1754: 0x52B6,\n\t1755: 0x52B7,\n\t1756: 0x52B8,\n\t1757: 0x52BA,\n\t1758: 0x52BB,\n\t1759: 0x52BD,\n\t1760: 0x52C0,\n\t1761: 0x52C4,\n\t1762: 0x52C6,\n\t1763: 0x52C8,\n\t1764: 0x52CC,\n\t1765: 0x52CF,\n\t1766: 0x52D1,\n\t1767: 0x52D4,\n\t1768: 0x52D6,\n\t1769: 0x52DB,\n\t1770: 0x52DC,\n\t1771: 0x52E1,\n\t1772: 0x52E5,\n\t1773: 0x52E8,\n\t1774: 0x52E9,\n\t1775: 0x52EA,\n\t1776: 0x52EC,\n\t1777: 0x52F0,\n\t1778: 0x52F1,\n\t1779: 0x52F4,\n\t1780: 0x52F6,\n\t1781: 0x52F7,\n\t1782: 0x5300,\n\t1783: 0x5303,\n\t1784: 0x530A,\n\t1785: 0x530B,\n\t1786: 0x530C,\n\t1787: 0x5311,\n\t1788: 0x5313,\n\t1789: 0x5318,\n\t1790: 0x531B,\n\t1791: 0x531C,\n\t1792: 0x531E,\n\t1793: 0x531F,\n\t1794: 0x5325,\n\t1795: 0x5327,\n\t1796: 0x5328,\n\t1797: 0x5329,\n\t1798: 0x532B,\n\t1799: 0x532C,\n\t1800: 0x532D,\n\t1801: 0x5330,\n\t1802: 0x5332,\n\t1803: 0x5335,\n\t1804: 0x533C,\n\t1805: 0x533D,\n\t1806: 0x533E,\n\t1807: 0x5342,\n\t1808: 0x534C,\n\t1809: 0x534B,\n\t1810: 0x5359,\n\t1811: 0x535B,\n\t1812: 0x5361,\n\t1813: 0x5363,\n\t1814: 0x5365,\n\t1815: 0x536C,\n\t1816: 0x536D,\n\t1817: 0x5372,\n\t1818: 0x5379,\n\t1819: 0x537E,\n\t1820: 0x5383,\n\t1821: 0x5387,\n\t1822: 0x5388,\n\t1823: 0x538E,\n\t1824: 0x5393,\n\t1825: 0x5394,\n\t1826: 0x5399,\n\t1827: 0x539D,\n\t1828: 0x53A1,\n\t1829: 0x53A4,\n\t1830: 0x53AA,\n\t1831: 0x53AB,\n\t1832: 0x53AF,\n\t1833: 0x53B2,\n\t1834: 0x53B4,\n\t1835: 0x53B5,\n\t1836: 0x53B7,\n\t1837: 0x53B8,\n\t1838: 0x53BA,\n\t1839: 0x53BD,\n\t1840: 0x53C0,\n\t1841: 0x53C5,\n\t1842: 0x53CF,\n\t1843: 0x53D2,\n\t1844: 0x53D3,\n\t1845: 0x53D5,\n\t1846: 0x53DA,\n\t1847: 0x53DD,\n\t1848: 0x53DE,\n\t1849: 0x53E0,\n\t1850: 0x53E6,\n\t1851: 0x53E7,\n\t1852: 0x53F5,\n\t1853: 0x5402,\n\t1854: 0x5413,\n\t1855: 0x541A,\n\t1856: 0x5421,\n\t1857: 0x5427,\n\t1858: 0x5428,\n\t1859: 0x542A,\n\t1860: 0x542F,\n\t1861: 0x5431,\n\t1862: 0x5434,\n\t1863: 0x5435,\n\t1864: 0x5443,\n\t1865: 0x5444,\n\t1866: 0x5447,\n\t1867: 0x544D,\n\t1868: 0x544F,\n\t1869: 0x545E,\n\t1870: 0x5462,\n\t1871: 0x5464,\n\t1872: 0x5466,\n\t1873: 0x5467,\n\t1874: 0x5469,\n\t1875: 0x546B,\n\t1876: 0x546D,\n\t1877: 0x546E,\n\t1878: 0x5474,\n\t1879: 0x547F,\n\t1880: 0x5481,\n\t1881: 0x5483,\n\t1882: 0x5485,\n\t1883: 0x5488,\n\t1884: 0x5489,\n\t1885: 0x548D,\n\t1886: 0x5491,\n\t1887: 0x5495,\n\t1888: 0x5496,\n\t1889: 0x549C,\n\t1890: 0x549F,\n\t1891: 0x54A1,\n\t1892: 0x54A6,\n\t1893: 0x54A7,\n\t1894: 0x54A9,\n\t1895: 0x54AA,\n\t1896: 0x54AD,\n\t1897: 0x54AE,\n\t1898: 0x54B1,\n\t1899: 0x54B7,\n\t1900: 0x54B9,\n\t1901: 0x54BA,\n\t1902: 0x54BB,\n\t1903: 0x54BF,\n\t1904: 0x54C6,\n\t1905: 0x54CA,\n\t1906: 0x54CD,\n\t1907: 0x54CE,\n\t1908: 0x54E0,\n\t1909: 0x54EA,\n\t1910: 0x54EC,\n\t1911: 0x54EF,\n\t1912: 0x54F6,\n\t1913: 0x54FC,\n\t1914: 0x54FE,\n\t1915: 0x54FF,\n\t1916: 0x5500,\n\t1917: 0x5501,\n\t1918: 0x5505,\n\t1919: 0x5508,\n\t1920: 0x5509,\n\t1921: 0x550C,\n\t1922: 0x550D,\n\t1923: 0x550E,\n\t1924: 0x5515,\n\t1925: 0x552A,\n\t1926: 0x552B,\n\t1927: 0x5532,\n\t1928: 0x5535,\n\t1929: 0x5536,\n\t1930: 0x553B,\n\t1931: 0x553C,\n\t1932: 0x553D,\n\t1933: 0x5541,\n\t1934: 0x5547,\n\t1935: 0x5549,\n\t1936: 0x554A,\n\t1937: 0x554D,\n\t1938: 0x5550,\n\t1939: 0x5551,\n\t1940: 0x5558,\n\t1941: 0x555A,\n\t1942: 0x555B,\n\t1943: 0x555E,\n\t1944: 0x5560,\n\t1945: 0x5561,\n\t1946: 0x5564,\n\t1947: 0x5566,\n\t1948: 0x557F,\n\t1949: 0x5581,\n\t1950: 0x5582,\n\t1951: 0x5586,\n\t1952: 0x5588,\n\t1953: 0x558E,\n\t1954: 0x558F,\n\t1955: 0x5591,\n\t1956: 0x5592,\n\t1957: 0x5593,\n\t1958: 0x5594,\n\t1959: 0x5597,\n\t1960: 0x55A3,\n\t1961: 0x55A4,\n\t1962: 0x55AD,\n\t1963: 0x55B2,\n\t1964: 0x55BF,\n\t1965: 0x55C1,\n\t1966: 0x55C3,\n\t1967: 0x55C6,\n\t1968: 0x55C9,\n\t1969: 0x55CB,\n\t1970: 0x55CC,\n\t1971: 0x55CE,\n\t1972: 0x55D1,\n\t1973: 0x55D2,\n\t1974: 0x55D3,\n\t1975: 0x55D7,\n\t1976: 0x55D8,\n\t1977: 0x55DB,\n\t1978: 0x55DE,\n\t1979: 0x55E2,\n\t1980: 0x55E9,\n\t1981: 0x55F6,\n\t1982: 0x55FF,\n\t1983: 0x5605,\n\t1984: 0x5608,\n\t1985: 0x560A,\n\t1986: 0x560D,\n\t1987: 0x560E,\n\t1988: 0x560F,\n\t1989: 0x5610,\n\t1990: 0x5611,\n\t1991: 0x5612,\n\t1992: 0x5619,\n\t1993: 0x562C,\n\t1994: 0x5630,\n\t1995: 0x5633,\n\t1996: 0x5635,\n\t1997: 0x5637,\n\t1998: 0x5639,\n\t1999: 0x563B,\n\t2000: 0x563C,\n\t2001: 0x563D,\n\t2002: 0x563F,\n\t2003: 0x5640,\n\t2004: 0x5641,\n\t2005: 0x5643,\n\t2006: 0x5644,\n\t2007: 0x5646,\n\t2008: 0x5649,\n\t2009: 0x564B,\n\t2010: 0x564D,\n\t2011: 0x564F,\n\t2012: 0x5654,\n\t2013: 0x565E,\n\t2014: 0x5660,\n\t2015: 0x5661,\n\t2016: 0x5662,\n\t2017: 0x5663,\n\t2018: 0x5666,\n\t2019: 0x5669,\n\t2020: 0x566D,\n\t2021: 0x566F,\n\t2022: 0x5671,\n\t2023: 0x5672,\n\t2024: 0x5675,\n\t2025: 0x5684,\n\t2026: 0x5685,\n\t2027: 0x5688,\n\t2028: 0x568B,\n\t2029: 0x568C,\n\t2030: 0x5695,\n\t2031: 0x5699,\n\t2032: 0x569A,\n\t2033: 0x569D,\n\t2034: 0x569E,\n\t2035: 0x569F,\n\t2036: 0x56A6,\n\t2037: 0x56A7,\n\t2038: 0x56A8,\n\t2039: 0x56A9,\n\t2040: 0x56AB,\n\t2041: 0x56AC,\n\t2042: 0x56AD,\n\t2043: 0x56B1,\n\t2044: 0x56B3,\n\t2045: 0x56B7,\n\t2046: 0x56BE,\n\t2047: 0x56C5,\n\t2048: 0x56C9,\n\t2049: 0x56CA,\n\t2050: 0x56CB,\n\t2051: 0x56CF,\n\t2052: 0x56D0,\n\t2053: 0x56CC,\n\t2054: 0x56CD,\n\t2055: 0x56D9,\n\t2056: 0x56DC,\n\t2057: 0x56DD,\n\t2058: 0x56DF,\n\t2059: 0x56E1,\n\t2060: 0x56E4,\n\t2061: 0x56E5,\n\t2062: 0x56E6,\n\t2063: 0x56E7,\n\t2064: 0x56E8,\n\t2065: 0x56F1,\n\t2066: 0x56EB,\n\t2067: 0x56ED,\n\t2068: 0x56F6,\n\t2069: 0x56F7,\n\t2070: 0x5701,\n\t2071: 0x5702,\n\t2072: 0x5707,\n\t2073: 0x570A,\n\t2074: 0x570C,\n\t2075: 0x5711,\n\t2076: 0x5715,\n\t2077: 0x571A,\n\t2078: 0x571B,\n\t2079: 0x571D,\n\t2080: 0x5720,\n\t2081: 0x5722,\n\t2082: 0x5723,\n\t2083: 0x5724,\n\t2084: 0x5725,\n\t2085: 0x5729,\n\t2086: 0x572A,\n\t2087: 0x572C,\n\t2088: 0x572E,\n\t2089: 0x572F,\n\t2090: 0x5733,\n\t2091: 0x5734,\n\t2092: 0x573D,\n\t2093: 0x573E,\n\t2094: 0x573F,\n\t2095: 0x5745,\n\t2096: 0x5746,\n\t2097: 0x574C,\n\t2098: 0x574D,\n\t2099: 0x5752,\n\t2100: 0x5762,\n\t2101: 0x5765,\n\t2102: 0x5767,\n\t2103: 0x5768,\n\t2104: 0x576B,\n\t2105: 0x576D,\n\t2106: 0x576E,\n\t2107: 0x576F,\n\t2108: 0x5770,\n\t2109: 0x5771,\n\t2110: 0x5773,\n\t2111: 0x5774,\n\t2112: 0x5775,\n\t2113: 0x5777,\n\t2114: 0x5779,\n\t2115: 0x577A,\n\t2116: 0x577B,\n\t2117: 0x577C,\n\t2118: 0x577E,\n\t2119: 0x5781,\n\t2120: 0x5783,\n\t2121: 0x578C,\n\t2122: 0x5794,\n\t2123: 0x5797,\n\t2124: 0x5799,\n\t2125: 0x579A,\n\t2126: 0x579C,\n\t2127: 0x579D,\n\t2128: 0x579E,\n\t2129: 0x579F,\n\t2130: 0x57A1,\n\t2131: 0x5795,\n\t2132: 0x57A7,\n\t2133: 0x57A8,\n\t2134: 0x57A9,\n\t2135: 0x57AC,\n\t2136: 0x57B8,\n\t2137: 0x57BD,\n\t2138: 0x57C7,\n\t2139: 0x57C8,\n\t2140: 0x57CC,\n\t2141: 0x57CF,\n\t2142: 0x57D5,\n\t2143: 0x57DD,\n\t2144: 0x57DE,\n\t2145: 0x57E4,\n\t2146: 0x57E6,\n\t2147: 0x57E7,\n\t2148: 0x57E9,\n\t2149: 0x57ED,\n\t2150: 0x57F0,\n\t2151: 0x57F5,\n\t2152: 0x57F6,\n\t2153: 0x57F8,\n\t2154: 0x57FD,\n\t2155: 0x57FE,\n\t2156: 0x57FF,\n\t2157: 0x5803,\n\t2158: 0x5804,\n\t2159: 0x5808,\n\t2160: 0x5809,\n\t2161: 0x57E1,\n\t2162: 0x580C,\n\t2163: 0x580D,\n\t2164: 0x581B,\n\t2165: 0x581E,\n\t2166: 0x581F,\n\t2167: 0x5820,\n\t2168: 0x5826,\n\t2169: 0x5827,\n\t2170: 0x582D,\n\t2171: 0x5832,\n\t2172: 0x5839,\n\t2173: 0x583F,\n\t2174: 0x5849,\n\t2175: 0x584C,\n\t2176: 0x584D,\n\t2177: 0x584F,\n\t2178: 0x5850,\n\t2179: 0x5855,\n\t2180: 0x585F,\n\t2181: 0x5861,\n\t2182: 0x5864,\n\t2183: 0x5867,\n\t2184: 0x5868,\n\t2185: 0x5878,\n\t2186: 0x587C,\n\t2187: 0x587F,\n\t2188: 0x5880,\n\t2189: 0x5881,\n\t2190: 0x5887,\n\t2191: 0x5888,\n\t2192: 0x5889,\n\t2193: 0x588A,\n\t2194: 0x588C,\n\t2195: 0x588D,\n\t2196: 0x588F,\n\t2197: 0x5890,\n\t2198: 0x5894,\n\t2199: 0x5896,\n\t2200: 0x589D,\n\t2201: 0x58A0,\n\t2202: 0x58A1,\n\t2203: 0x58A2,\n\t2204: 0x58A6,\n\t2205: 0x58A9,\n\t2206: 0x58B1,\n\t2207: 0x58B2,\n\t2208: 0x58C4,\n\t2209: 0x58BC,\n\t2210: 0x58C2,\n\t2211: 0x58C8,\n\t2212: 0x58CD,\n\t2213: 0x58CE,\n\t2214: 0x58D0,\n\t2215: 0x58D2,\n\t2216: 0x58D4,\n\t2217: 0x58D6,\n\t2218: 0x58DA,\n\t2219: 0x58DD,\n\t2220: 0x58E1,\n\t2221: 0x58E2,\n\t2222: 0x58E9,\n\t2223: 0x58F3,\n\t2224: 0x5905,\n\t2225: 0x5906,\n\t2226: 0x590B,\n\t2227: 0x590C,\n\t2228: 0x5912,\n\t2229: 0x5913,\n\t2230: 0x5914,\n\t2231: 0x8641,\n\t2232: 0x591D,\n\t2233: 0x5921,\n\t2234: 0x5923,\n\t2235: 0x5924,\n\t2236: 0x5928,\n\t2237: 0x592F,\n\t2238: 0x5930,\n\t2239: 0x5933,\n\t2240: 0x5935,\n\t2241: 0x5936,\n\t2242: 0x593F,\n\t2243: 0x5943,\n\t2244: 0x5946,\n\t2245: 0x5952,\n\t2246: 0x5953,\n\t2247: 0x5959,\n\t2248: 0x595B,\n\t2249: 0x595D,\n\t2250: 0x595E,\n\t2251: 0x595F,\n\t2252: 0x5961,\n\t2253: 0x5963,\n\t2254: 0x596B,\n\t2255: 0x596D,\n\t2256: 0x596F,\n\t2257: 0x5972,\n\t2258: 0x5975,\n\t2259: 0x5976,\n\t2260: 0x5979,\n\t2261: 0x597B,\n\t2262: 0x597C,\n\t2263: 0x598B,\n\t2264: 0x598C,\n\t2265: 0x598E,\n\t2266: 0x5992,\n\t2267: 0x5995,\n\t2268: 0x5997,\n\t2269: 0x599F,\n\t2270: 0x59A4,\n\t2271: 0x59A7,\n\t2272: 0x59AD,\n\t2273: 0x59AE,\n\t2274: 0x59AF,\n\t2275: 0x59B0,\n\t2276: 0x59B3,\n\t2277: 0x59B7,\n\t2278: 0x59BA,\n\t2279: 0x59BC,\n\t2280: 0x59C1,\n\t2281: 0x59C3,\n\t2282: 0x59C4,\n\t2283: 0x59C8,\n\t2284: 0x59CA,\n\t2285: 0x59CD,\n\t2286: 0x59D2,\n\t2287: 0x59DD,\n\t2288: 0x59DE,\n\t2289: 0x59DF,\n\t2290: 0x59E3,\n\t2291: 0x59E4,\n\t2292: 0x59E7,\n\t2293: 0x59EE,\n\t2294: 0x59EF,\n\t2295: 0x59F1,\n\t2296: 0x59F2,\n\t2297: 0x59F4,\n\t2298: 0x59F7,\n\t2299: 0x5A00,\n\t2300: 0x5A04,\n\t2301: 0x5A0C,\n\t2302: 0x5A0D,\n\t2303: 0x5A0E,\n\t2304: 0x5A12,\n\t2305: 0x5A13,\n\t2306: 0x5A1E,\n\t2307: 0x5A23,\n\t2308: 0x5A24,\n\t2309: 0x5A27,\n\t2310: 0x5A28,\n\t2311: 0x5A2A,\n\t2312: 0x5A2D,\n\t2313: 0x5A30,\n\t2314: 0x5A44,\n\t2315: 0x5A45,\n\t2316: 0x5A47,\n\t2317: 0x5A48,\n\t2318: 0x5A4C,\n\t2319: 0x5A50,\n\t2320: 0x5A55,\n\t2321: 0x5A5E,\n\t2322: 0x5A63,\n\t2323: 0x5A65,\n\t2324: 0x5A67,\n\t2325: 0x5A6D,\n\t2326: 0x5A77,\n\t2327: 0x5A7A,\n\t2328: 0x5A7B,\n\t2329: 0x5A7E,\n\t2330: 0x5A8B,\n\t2331: 0x5A90,\n\t2332: 0x5A93,\n\t2333: 0x5A96,\n\t2334: 0x5A99,\n\t2335: 0x5A9C,\n\t2336: 0x5A9E,\n\t2337: 0x5A9F,\n\t2338: 0x5AA0,\n\t2339: 0x5AA2,\n\t2340: 0x5AA7,\n\t2341: 0x5AAC,\n\t2342: 0x5AB1,\n\t2343: 0x5AB2,\n\t2344: 0x5AB3,\n\t2345: 0x5AB5,\n\t2346: 0x5AB8,\n\t2347: 0x5ABA,\n\t2348: 0x5ABB,\n\t2349: 0x5ABF,\n\t2350: 0x5AC4,\n\t2351: 0x5AC6,\n\t2352: 0x5AC8,\n\t2353: 0x5ACF,\n\t2354: 0x5ADA,\n\t2355: 0x5ADC,\n\t2356: 0x5AE0,\n\t2357: 0x5AE5,\n\t2358: 0x5AEA,\n\t2359: 0x5AEE,\n\t2360: 0x5AF5,\n\t2361: 0x5AF6,\n\t2362: 0x5AFD,\n\t2363: 0x5B00,\n\t2364: 0x5B01,\n\t2365: 0x5B08,\n\t2366: 0x5B17,\n\t2367: 0x5B34,\n\t2368: 0x5B19,\n\t2369: 0x5B1B,\n\t2370: 0x5B1D,\n\t2371: 0x5B21,\n\t2372: 0x5B25,\n\t2373: 0x5B2D,\n\t2374: 0x5B38,\n\t2375: 0x5B41,\n\t2376: 0x5B4B,\n\t2377: 0x5B4C,\n\t2378: 0x5B52,\n\t2379: 0x5B56,\n\t2380: 0x5B5E,\n\t2381: 0x5B68,\n\t2382: 0x5B6E,\n\t2383: 0x5B6F,\n\t2384: 0x5B7C,\n\t2385: 0x5B7D,\n\t2386: 0x5B7E,\n\t2387: 0x5B7F,\n\t2388: 0x5B81,\n\t2389: 0x5B84,\n\t2390: 0x5B86,\n\t2391: 0x5B8A,\n\t2392: 0x5B8E,\n\t2393: 0x5B90,\n\t2394: 0x5B91,\n\t2395: 0x5B93,\n\t2396: 0x5B94,\n\t2397: 0x5B96,\n\t2398: 0x5BA8,\n\t2399: 0x5BA9,\n\t2400: 0x5BAC,\n\t2401: 0x5BAD,\n\t2402: 0x5BAF,\n\t2403: 0x5BB1,\n\t2404: 0x5BB2,\n\t2405: 0x5BB7,\n\t2406: 0x5BBA,\n\t2407: 0x5BBC,\n\t2408: 0x5BC0,\n\t2409: 0x5BC1,\n\t2410: 0x5BCD,\n\t2411: 0x5BCF,\n\t2412: 0x5BD6,\n\t2413: 0x5BD7,\n\t2414: 0x5BD8,\n\t2415: 0x5BD9,\n\t2416: 0x5BDA,\n\t2417: 0x5BE0,\n\t2418: 0x5BEF,\n\t2419: 0x5BF1,\n\t2420: 0x5BF4,\n\t2421: 0x5BFD,\n\t2422: 0x5C0C,\n\t2423: 0x5C17,\n\t2424: 0x5C1E,\n\t2425: 0x5C1F,\n\t2426: 0x5C23,\n\t2427: 0x5C26,\n\t2428: 0x5C29,\n\t2429: 0x5C2B,\n\t2430: 0x5C2C,\n\t2431: 0x5C2E,\n\t2432: 0x5C30,\n\t2433: 0x5C32,\n\t2434: 0x5C35,\n\t2435: 0x5C36,\n\t2436: 0x5C59,\n\t2437: 0x5C5A,\n\t2438: 0x5C5C,\n\t2439: 0x5C62,\n\t2440: 0x5C63,\n\t2441: 0x5C67,\n\t2442: 0x5C68,\n\t2443: 0x5C69,\n\t2444: 0x5C6D,\n\t2445: 0x5C70,\n\t2446: 0x5C74,\n\t2447: 0x5C75,\n\t2448: 0x5C7A,\n\t2449: 0x5C7B,\n\t2450: 0x5C7C,\n\t2451: 0x5C7D,\n\t2452: 0x5C87,\n\t2453: 0x5C88,\n\t2454: 0x5C8A,\n\t2455: 0x5C8F,\n\t2456: 0x5C92,\n\t2457: 0x5C9D,\n\t2458: 0x5C9F,\n\t2459: 0x5CA0,\n\t2460: 0x5CA2,\n\t2461: 0x5CA3,\n\t2462: 0x5CA6,\n\t2463: 0x5CAA,\n\t2464: 0x5CB2,\n\t2465: 0x5CB4,\n\t2466: 0x5CB5,\n\t2467: 0x5CBA,\n\t2468: 0x5CC9,\n\t2469: 0x5CCB,\n\t2470: 0x5CD2,\n\t2471: 0x5CDD,\n\t2472: 0x5CD7,\n\t2473: 0x5CEE,\n\t2474: 0x5CF1,\n\t2475: 0x5CF2,\n\t2476: 0x5CF4,\n\t2477: 0x5D01,\n\t2478: 0x5D06,\n\t2479: 0x5D0D,\n\t2480: 0x5D12,\n\t2481: 0x5D2B,\n\t2482: 0x5D23,\n\t2483: 0x5D24,\n\t2484: 0x5D26,\n\t2485: 0x5D27,\n\t2486: 0x5D31,\n\t2487: 0x5D34,\n\t2488: 0x5D39,\n\t2489: 0x5D3D,\n\t2490: 0x5D3F,\n\t2491: 0x5D42,\n\t2492: 0x5D43,\n\t2493: 0x5D46,\n\t2494: 0x5D48,\n\t2495: 0x5D55,\n\t2496: 0x5D51,\n\t2497: 0x5D59,\n\t2498: 0x5D4A,\n\t2499: 0x5D5F,\n\t2500: 0x5D60,\n\t2501: 0x5D61,\n\t2502: 0x5D62,\n\t2503: 0x5D64,\n\t2504: 0x5D6A,\n\t2505: 0x5D6D,\n\t2506: 0x5D70,\n\t2507: 0x5D79,\n\t2508: 0x5D7A,\n\t2509: 0x5D7E,\n\t2510: 0x5D7F,\n\t2511: 0x5D81,\n\t2512: 0x5D83,\n\t2513: 0x5D88,\n\t2514: 0x5D8A,\n\t2515: 0x5D92,\n\t2516: 0x5D93,\n\t2517: 0x5D94,\n\t2518: 0x5D95,\n\t2519: 0x5D99,\n\t2520: 0x5D9B,\n\t2521: 0x5D9F,\n\t2522: 0x5DA0,\n\t2523: 0x5DA7,\n\t2524: 0x5DAB,\n\t2525: 0x5DB0,\n\t2526: 0x5DB4,\n\t2527: 0x5DB8,\n\t2528: 0x5DB9,\n\t2529: 0x5DC3,\n\t2530: 0x5DC7,\n\t2531: 0x5DCB,\n\t2532: 0x5DD0,\n\t2533: 0x5DCE,\n\t2534: 0x5DD8,\n\t2535: 0x5DD9,\n\t2536: 0x5DE0,\n\t2537: 0x5DE4,\n\t2538: 0x5DE9,\n\t2539: 0x5DF8,\n\t2540: 0x5DF9,\n\t2541: 0x5E00,\n\t2542: 0x5E07,\n\t2543: 0x5E0D,\n\t2544: 0x5E12,\n\t2545: 0x5E14,\n\t2546: 0x5E15,\n\t2547: 0x5E18,\n\t2548: 0x5E1F,\n\t2549: 0x5E20,\n\t2550: 0x5E2E,\n\t2551: 0x5E28,\n\t2552: 0x5E32,\n\t2553: 0x5E35,\n\t2554: 0x5E3E,\n\t2555: 0x5E4B,\n\t2556: 0x5E50,\n\t2557: 0x5E49,\n\t2558: 0x5E51,\n\t2559: 0x5E56,\n\t2560: 0x5E58,\n\t2561: 0x5E5B,\n\t2562: 0x5E5C,\n\t2563: 0x5E5E,\n\t2564: 0x5E68,\n\t2565: 0x5E6A,\n\t2566: 0x5E6B,\n\t2567: 0x5E6C,\n\t2568: 0x5E6D,\n\t2569: 0x5E6E,\n\t2570: 0x5E70,\n\t2571: 0x5E80,\n\t2572: 0x5E8B,\n\t2573: 0x5E8E,\n\t2574: 0x5EA2,\n\t2575: 0x5EA4,\n\t2576: 0x5EA5,\n\t2577: 0x5EA8,\n\t2578: 0x5EAA,\n\t2579: 0x5EAC,\n\t2580: 0x5EB1,\n\t2581: 0x5EB3,\n\t2582: 0x5EBD,\n\t2583: 0x5EBE,\n\t2584: 0x5EBF,\n\t2585: 0x5EC6,\n\t2586: 0x5ECC,\n\t2587: 0x5ECB,\n\t2588: 0x5ECE,\n\t2589: 0x5ED1,\n\t2590: 0x5ED2,\n\t2591: 0x5ED4,\n\t2592: 0x5ED5,\n\t2593: 0x5EDC,\n\t2594: 0x5EDE,\n\t2595: 0x5EE5,\n\t2596: 0x5EEB,\n\t2597: 0x5F02,\n\t2598: 0x5F06,\n\t2599: 0x5F07,\n\t2600: 0x5F08,\n\t2601: 0x5F0E,\n\t2602: 0x5F19,\n\t2603: 0x5F1C,\n\t2604: 0x5F1D,\n\t2605: 0x5F21,\n\t2606: 0x5F22,\n\t2607: 0x5F23,\n\t2608: 0x5F24,\n\t2609: 0x5F28,\n\t2610: 0x5F2B,\n\t2611: 0x5F2C,\n\t2612: 0x5F2E,\n\t2613: 0x5F30,\n\t2614: 0x5F34,\n\t2615: 0x5F36,\n\t2616: 0x5F3B,\n\t2617: 0x5F3D,\n\t2618: 0x5F3F,\n\t2619: 0x5F40,\n\t2620: 0x5F44,\n\t2621: 0x5F45,\n\t2622: 0x5F47,\n\t2623: 0x5F4D,\n\t2624: 0x5F50,\n\t2625: 0x5F54,\n\t2626: 0x5F58,\n\t2627: 0x5F5B,\n\t2628: 0x5F60,\n\t2629: 0x5F63,\n\t2630: 0x5F64,\n\t2631: 0x5F67,\n\t2632: 0x5F6F,\n\t2633: 0x5F72,\n\t2634: 0x5F74,\n\t2635: 0x5F75,\n\t2636: 0x5F78,\n\t2637: 0x5F7A,\n\t2638: 0x5F7D,\n\t2639: 0x5F7E,\n\t2640: 0x5F89,\n\t2641: 0x5F8D,\n\t2642: 0x5F8F,\n\t2643: 0x5F96,\n\t2644: 0x5F9C,\n\t2645: 0x5F9D,\n\t2646: 0x5FA2,\n\t2647: 0x5FA7,\n\t2648: 0x5FAB,\n\t2649: 0x5FA4,\n\t2650: 0x5FAC,\n\t2651: 0x5FAF,\n\t2652: 0x5FB0,\n\t2653: 0x5FB1,\n\t2654: 0x5FB8,\n\t2655: 0x5FC4,\n\t2656: 0x5FC7,\n\t2657: 0x5FC8,\n\t2658: 0x5FC9,\n\t2659: 0x5FCB,\n\t2660: 0x5FD0,\n\t2661: 0x5FD1,\n\t2662: 0x5FD2,\n\t2663: 0x5FD3,\n\t2664: 0x5FD4,\n\t2665: 0x5FDE,\n\t2666: 0x5FE1,\n\t2667: 0x5FE2,\n\t2668: 0x5FE8,\n\t2669: 0x5FE9,\n\t2670: 0x5FEA,\n\t2671: 0x5FEC,\n\t2672: 0x5FED,\n\t2673: 0x5FEE,\n\t2674: 0x5FEF,\n\t2675: 0x5FF2,\n\t2676: 0x5FF3,\n\t2677: 0x5FF6,\n\t2678: 0x5FFA,\n\t2679: 0x5FFC,\n\t2680: 0x6007,\n\t2681: 0x600A,\n\t2682: 0x600D,\n\t2683: 0x6013,\n\t2684: 0x6014,\n\t2685: 0x6017,\n\t2686: 0x6018,\n\t2687: 0x601A,\n\t2688: 0x601F,\n\t2689: 0x6024,\n\t2690: 0x602D,\n\t2691: 0x6033,\n\t2692: 0x6035,\n\t2693: 0x6040,\n\t2694: 0x6047,\n\t2695: 0x6048,\n\t2696: 0x6049,\n\t2697: 0x604C,\n\t2698: 0x6051,\n\t2699: 0x6054,\n\t2700: 0x6056,\n\t2701: 0x6057,\n\t2702: 0x605D,\n\t2703: 0x6061,\n\t2704: 0x6067,\n\t2705: 0x6071,\n\t2706: 0x607E,\n\t2707: 0x607F,\n\t2708: 0x6082,\n\t2709: 0x6086,\n\t2710: 0x6088,\n\t2711: 0x608A,\n\t2712: 0x608E,\n\t2713: 0x6091,\n\t2714: 0x6093,\n\t2715: 0x6095,\n\t2716: 0x6098,\n\t2717: 0x609D,\n\t2718: 0x609E,\n\t2719: 0x60A2,\n\t2720: 0x60A4,\n\t2721: 0x60A5,\n\t2722: 0x60A8,\n\t2723: 0x60B0,\n\t2724: 0x60B1,\n\t2725: 0x60B7,\n\t2726: 0x60BB,\n\t2727: 0x60BE,\n\t2728: 0x60C2,\n\t2729: 0x60C4,\n\t2730: 0x60C8,\n\t2731: 0x60C9,\n\t2732: 0x60CA,\n\t2733: 0x60CB,\n\t2734: 0x60CE,\n\t2735: 0x60CF,\n\t2736: 0x60D4,\n\t2737: 0x60D5,\n\t2738: 0x60D9,\n\t2739: 0x60DB,\n\t2740: 0x60DD,\n\t2741: 0x60DE,\n\t2742: 0x60E2,\n\t2743: 0x60E5,\n\t2744: 0x60F2,\n\t2745: 0x60F5,\n\t2746: 0x60F8,\n\t2747: 0x60FC,\n\t2748: 0x60FD,\n\t2749: 0x6102,\n\t2750: 0x6107,\n\t2751: 0x610A,\n\t2752: 0x610C,\n\t2753: 0x6110,\n\t2754: 0x6111,\n\t2755: 0x6112,\n\t2756: 0x6113,\n\t2757: 0x6114,\n\t2758: 0x6116,\n\t2759: 0x6117,\n\t2760: 0x6119,\n\t2761: 0x611C,\n\t2762: 0x611E,\n\t2763: 0x6122,\n\t2764: 0x612A,\n\t2765: 0x612B,\n\t2766: 0x6130,\n\t2767: 0x6131,\n\t2768: 0x6135,\n\t2769: 0x6136,\n\t2770: 0x6137,\n\t2771: 0x6139,\n\t2772: 0x6141,\n\t2773: 0x6145,\n\t2774: 0x6146,\n\t2775: 0x6149,\n\t2776: 0x615E,\n\t2777: 0x6160,\n\t2778: 0x616C,\n\t2779: 0x6172,\n\t2780: 0x6178,\n\t2781: 0x617B,\n\t2782: 0x617C,\n\t2783: 0x617F,\n\t2784: 0x6180,\n\t2785: 0x6181,\n\t2786: 0x6183,\n\t2787: 0x6184,\n\t2788: 0x618B,\n\t2789: 0x618D,\n\t2790: 0x6192,\n\t2791: 0x6193,\n\t2792: 0x6197,\n\t2793: 0x6198,\n\t2794: 0x619C,\n\t2795: 0x619D,\n\t2796: 0x619F,\n\t2797: 0x61A0,\n\t2798: 0x61A5,\n\t2799: 0x61A8,\n\t2800: 0x61AA,\n\t2801: 0x61AD,\n\t2802: 0x61B8,\n\t2803: 0x61B9,\n\t2804: 0x61BC,\n\t2805: 0x61C0,\n\t2806: 0x61C1,\n\t2807: 0x61C2,\n\t2808: 0x61CE,\n\t2809: 0x61CF,\n\t2810: 0x61D5,\n\t2811: 0x61DC,\n\t2812: 0x61DD,\n\t2813: 0x61DE,\n\t2814: 0x61DF,\n\t2815: 0x61E1,\n\t2816: 0x61E2,\n\t2817: 0x61E7,\n\t2818: 0x61E9,\n\t2819: 0x61E5,\n\t2820: 0x61EC,\n\t2821: 0x61ED,\n\t2822: 0x61EF,\n\t2823: 0x6201,\n\t2824: 0x6203,\n\t2825: 0x6204,\n\t2826: 0x6207,\n\t2827: 0x6213,\n\t2828: 0x6215,\n\t2829: 0x621C,\n\t2830: 0x6220,\n\t2831: 0x6222,\n\t2832: 0x6223,\n\t2833: 0x6227,\n\t2834: 0x6229,\n\t2835: 0x622B,\n\t2836: 0x6239,\n\t2837: 0x623D,\n\t2838: 0x6242,\n\t2839: 0x6243,\n\t2840: 0x6244,\n\t2841: 0x6246,\n\t2842: 0x624C,\n\t2843: 0x6250,\n\t2844: 0x6251,\n\t2845: 0x6252,\n\t2846: 0x6254,\n\t2847: 0x6256,\n\t2848: 0x625A,\n\t2849: 0x625C,\n\t2850: 0x6264,\n\t2851: 0x626D,\n\t2852: 0x626F,\n\t2853: 0x6273,\n\t2854: 0x627A,\n\t2855: 0x627D,\n\t2856: 0x628D,\n\t2857: 0x628E,\n\t2858: 0x628F,\n\t2859: 0x6290,\n\t2860: 0x62A6,\n\t2861: 0x62A8,\n\t2862: 0x62B3,\n\t2863: 0x62B6,\n\t2864: 0x62B7,\n\t2865: 0x62BA,\n\t2866: 0x62BE,\n\t2867: 0x62BF,\n\t2868: 0x62C4,\n\t2869: 0x62CE,\n\t2870: 0x62D5,\n\t2871: 0x62D6,\n\t2872: 0x62DA,\n\t2873: 0x62EA,\n\t2874: 0x62F2,\n\t2875: 0x62F4,\n\t2876: 0x62FC,\n\t2877: 0x62FD,\n\t2878: 0x6303,\n\t2879: 0x6304,\n\t2880: 0x630A,\n\t2881: 0x630B,\n\t2882: 0x630D,\n\t2883: 0x6310,\n\t2884: 0x6313,\n\t2885: 0x6316,\n\t2886: 0x6318,\n\t2887: 0x6329,\n\t2888: 0x632A,\n\t2889: 0x632D,\n\t2890: 0x6335,\n\t2891: 0x6336,\n\t2892: 0x6339,\n\t2893: 0x633C,\n\t2894: 0x6341,\n\t2895: 0x6342,\n\t2896: 0x6343,\n\t2897: 0x6344,\n\t2898: 0x6346,\n\t2899: 0x634A,\n\t2900: 0x634B,\n\t2901: 0x634E,\n\t2902: 0x6352,\n\t2903: 0x6353,\n\t2904: 0x6354,\n\t2905: 0x6358,\n\t2906: 0x635B,\n\t2907: 0x6365,\n\t2908: 0x6366,\n\t2909: 0x636C,\n\t2910: 0x636D,\n\t2911: 0x6371,\n\t2912: 0x6374,\n\t2913: 0x6375,\n\t2914: 0x6378,\n\t2915: 0x637C,\n\t2916: 0x637D,\n\t2917: 0x637F,\n\t2918: 0x6382,\n\t2919: 0x6384,\n\t2920: 0x6387,\n\t2921: 0x638A,\n\t2922: 0x6390,\n\t2923: 0x6394,\n\t2924: 0x6395,\n\t2925: 0x6399,\n\t2926: 0x639A,\n\t2927: 0x639E,\n\t2928: 0x63A4,\n\t2929: 0x63A6,\n\t2930: 0x63AD,\n\t2931: 0x63AE,\n\t2932: 0x63AF,\n\t2933: 0x63BD,\n\t2934: 0x63C1,\n\t2935: 0x63C5,\n\t2936: 0x63C8,\n\t2937: 0x63CE,\n\t2938: 0x63D1,\n\t2939: 0x63D3,\n\t2940: 0x63D4,\n\t2941: 0x63D5,\n\t2942: 0x63DC,\n\t2943: 0x63E0,\n\t2944: 0x63E5,\n\t2945: 0x63EA,\n\t2946: 0x63EC,\n\t2947: 0x63F2,\n\t2948: 0x63F3,\n\t2949: 0x63F5,\n\t2950: 0x63F8,\n\t2951: 0x63F9,\n\t2952: 0x6409,\n\t2953: 0x640A,\n\t2954: 0x6410,\n\t2955: 0x6412,\n\t2956: 0x6414,\n\t2957: 0x6418,\n\t2958: 0x641E,\n\t2959: 0x6420,\n\t2960: 0x6422,\n\t2961: 0x6424,\n\t2962: 0x6425,\n\t2963: 0x6429,\n\t2964: 0x642A,\n\t2965: 0x642F,\n\t2966: 0x6430,\n\t2967: 0x6435,\n\t2968: 0x643D,\n\t2969: 0x643F,\n\t2970: 0x644B,\n\t2971: 0x644F,\n\t2972: 0x6451,\n\t2973: 0x6452,\n\t2974: 0x6453,\n\t2975: 0x6454,\n\t2976: 0x645A,\n\t2977: 0x645B,\n\t2978: 0x645C,\n\t2979: 0x645D,\n\t2980: 0x645F,\n\t2981: 0x6460,\n\t2982: 0x6461,\n\t2983: 0x6463,\n\t2984: 0x646D,\n\t2985: 0x6473,\n\t2986: 0x6474,\n\t2987: 0x647B,\n\t2988: 0x647D,\n\t2989: 0x6485,\n\t2990: 0x6487,\n\t2991: 0x648F,\n\t2992: 0x6490,\n\t2993: 0x6491,\n\t2994: 0x6498,\n\t2995: 0x6499,\n\t2996: 0x649B,\n\t2997: 0x649D,\n\t2998: 0x649F,\n\t2999: 0x64A1,\n\t3000: 0x64A3,\n\t3001: 0x64A6,\n\t3002: 0x64A8,\n\t3003: 0x64AC,\n\t3004: 0x64B3,\n\t3005: 0x64BD,\n\t3006: 0x64BE,\n\t3007: 0x64BF,\n\t3008: 0x64C4,\n\t3009: 0x64C9,\n\t3010: 0x64CA,\n\t3011: 0x64CB,\n\t3012: 0x64CC,\n\t3013: 0x64CE,\n\t3014: 0x64D0,\n\t3015: 0x64D1,\n\t3016: 0x64D5,\n\t3017: 0x64D7,\n\t3018: 0x64E4,\n\t3019: 0x64E5,\n\t3020: 0x64E9,\n\t3021: 0x64EA,\n\t3022: 0x64ED,\n\t3023: 0x64F0,\n\t3024: 0x64F5,\n\t3025: 0x64F7,\n\t3026: 0x64FB,\n\t3027: 0x64FF,\n\t3028: 0x6501,\n\t3029: 0x6504,\n\t3030: 0x6508,\n\t3031: 0x6509,\n\t3032: 0x650A,\n\t3033: 0x650F,\n\t3034: 0x6513,\n\t3035: 0x6514,\n\t3036: 0x6516,\n\t3037: 0x6519,\n\t3038: 0x651B,\n\t3039: 0x651E,\n\t3040: 0x651F,\n\t3041: 0x6522,\n\t3042: 0x6526,\n\t3043: 0x6529,\n\t3044: 0x652E,\n\t3045: 0x6531,\n\t3046: 0x653A,\n\t3047: 0x653C,\n\t3048: 0x653D,\n\t3049: 0x6543,\n\t3050: 0x6547,\n\t3051: 0x6549,\n\t3052: 0x6550,\n\t3053: 0x6552,\n\t3054: 0x6554,\n\t3055: 0x655F,\n\t3056: 0x6560,\n\t3057: 0x6567,\n\t3058: 0x656B,\n\t3059: 0x657A,\n\t3060: 0x657D,\n\t3061: 0x6581,\n\t3062: 0x6585,\n\t3063: 0x658A,\n\t3064: 0x6592,\n\t3065: 0x6595,\n\t3066: 0x6598,\n\t3067: 0x659D,\n\t3068: 0x65A0,\n\t3069: 0x65A3,\n\t3070: 0x65A6,\n\t3071: 0x65AE,\n\t3072: 0x65B2,\n\t3073: 0x65B3,\n\t3074: 0x65B4,\n\t3075: 0x65BF,\n\t3076: 0x65C2,\n\t3077: 0x65C8,\n\t3078: 0x65C9,\n\t3079: 0x65CE,\n\t3080: 0x65D0,\n\t3081: 0x65D4,\n\t3082: 0x65D6,\n\t3083: 0x65D8,\n\t3084: 0x65DF,\n\t3085: 0x65F0,\n\t3086: 0x65F2,\n\t3087: 0x65F4,\n\t3088: 0x65F5,\n\t3089: 0x65F9,\n\t3090: 0x65FE,\n\t3091: 0x65FF,\n\t3092: 0x6600,\n\t3093: 0x6604,\n\t3094: 0x6608,\n\t3095: 0x6609,\n\t3096: 0x660D,\n\t3097: 0x6611,\n\t3098: 0x6612,\n\t3099: 0x6615,\n\t3100: 0x6616,\n\t3101: 0x661D,\n\t3102: 0x661E,\n\t3103: 0x6621,\n\t3104: 0x6622,\n\t3105: 0x6623,\n\t3106: 0x6624,\n\t3107: 0x6626,\n\t3108: 0x6629,\n\t3109: 0x662A,\n\t3110: 0x662B,\n\t3111: 0x662C,\n\t3112: 0x662E,\n\t3113: 0x6630,\n\t3114: 0x6631,\n\t3115: 0x6633,\n\t3116: 0x6639,\n\t3117: 0x6637,\n\t3118: 0x6640,\n\t3119: 0x6645,\n\t3120: 0x6646,\n\t3121: 0x664A,\n\t3122: 0x664C,\n\t3123: 0x6651,\n\t3124: 0x664E,\n\t3125: 0x6657,\n\t3126: 0x6658,\n\t3127: 0x6659,\n\t3128: 0x665B,\n\t3129: 0x665C,\n\t3130: 0x6660,\n\t3131: 0x6661,\n\t3132: 0x66FB,\n\t3133: 0x666A,\n\t3134: 0x666B,\n\t3135: 0x666C,\n\t3136: 0x667E,\n\t3137: 0x6673,\n\t3138: 0x6675,\n\t3139: 0x667F,\n\t3140: 0x6677,\n\t3141: 0x6678,\n\t3142: 0x6679,\n\t3143: 0x667B,\n\t3144: 0x6680,\n\t3145: 0x667C,\n\t3146: 0x668B,\n\t3147: 0x668C,\n\t3148: 0x668D,\n\t3149: 0x6690,\n\t3150: 0x6692,\n\t3151: 0x6699,\n\t3152: 0x669A,\n\t3153: 0x669B,\n\t3154: 0x669C,\n\t3155: 0x669F,\n\t3156: 0x66A0,\n\t3157: 0x66A4,\n\t3158: 0x66AD,\n\t3159: 0x66B1,\n\t3160: 0x66B2,\n\t3161: 0x66B5,\n\t3162: 0x66BB,\n\t3163: 0x66BF,\n\t3164: 0x66C0,\n\t3165: 0x66C2,\n\t3166: 0x66C3,\n\t3167: 0x66C8,\n\t3168: 0x66CC,\n\t3169: 0x66CE,\n\t3170: 0x66CF,\n\t3171: 0x66D4,\n\t3172: 0x66DB,\n\t3173: 0x66DF,\n\t3174: 0x66E8,\n\t3175: 0x66EB,\n\t3176: 0x66EC,\n\t3177: 0x66EE,\n\t3178: 0x66FA,\n\t3179: 0x6705,\n\t3180: 0x6707,\n\t3181: 0x670E,\n\t3182: 0x6713,\n\t3183: 0x6719,\n\t3184: 0x671C,\n\t3185: 0x6720,\n\t3186: 0x6722,\n\t3187: 0x6733,\n\t3188: 0x673E,\n\t3189: 0x6745,\n\t3190: 0x6747,\n\t3191: 0x6748,\n\t3192: 0x674C,\n\t3193: 0x6754,\n\t3194: 0x6755,\n\t3195: 0x675D,\n\t3196: 0x6766,\n\t3197: 0x676C,\n\t3198: 0x676E,\n\t3199: 0x6774,\n\t3200: 0x6776,\n\t3201: 0x677B,\n\t3202: 0x6781,\n\t3203: 0x6784,\n\t3204: 0x678E,\n\t3205: 0x678F,\n\t3206: 0x6791,\n\t3207: 0x6793,\n\t3208: 0x6796,\n\t3209: 0x6798,\n\t3210: 0x6799,\n\t3211: 0x679B,\n\t3212: 0x67B0,\n\t3213: 0x67B1,\n\t3214: 0x67B2,\n\t3215: 0x67B5,\n\t3216: 0x67BB,\n\t3217: 0x67BC,\n\t3218: 0x67BD,\n\t3219: 0x67F9,\n\t3220: 0x67C0,\n\t3221: 0x67C2,\n\t3222: 0x67C3,\n\t3223: 0x67C5,\n\t3224: 0x67C8,\n\t3225: 0x67C9,\n\t3226: 0x67D2,\n\t3227: 0x67D7,\n\t3228: 0x67D9,\n\t3229: 0x67DC,\n\t3230: 0x67E1,\n\t3231: 0x67E6,\n\t3232: 0x67F0,\n\t3233: 0x67F2,\n\t3234: 0x67F6,\n\t3235: 0x67F7,\n\t3236: 0x6852,\n\t3237: 0x6814,\n\t3238: 0x6819,\n\t3239: 0x681D,\n\t3240: 0x681F,\n\t3241: 0x6828,\n\t3242: 0x6827,\n\t3243: 0x682C,\n\t3244: 0x682D,\n\t3245: 0x682F,\n\t3246: 0x6830,\n\t3247: 0x6831,\n\t3248: 0x6833,\n\t3249: 0x683B,\n\t3250: 0x683F,\n\t3251: 0x6844,\n\t3252: 0x6845,\n\t3253: 0x684A,\n\t3254: 0x684C,\n\t3255: 0x6855,\n\t3256: 0x6857,\n\t3257: 0x6858,\n\t3258: 0x685B,\n\t3259: 0x686B,\n\t3260: 0x686E,\n\t3261: 0x686F,\n\t3262: 0x6870,\n\t3263: 0x6871,\n\t3264: 0x6872,\n\t3265: 0x6875,\n\t3266: 0x6879,\n\t3267: 0x687A,\n\t3268: 0x687B,\n\t3269: 0x687C,\n\t3270: 0x6882,\n\t3271: 0x6884,\n\t3272: 0x6886,\n\t3273: 0x6888,\n\t3274: 0x6896,\n\t3275: 0x6898,\n\t3276: 0x689A,\n\t3277: 0x689C,\n\t3278: 0x68A1,\n\t3279: 0x68A3,\n\t3280: 0x68A5,\n\t3281: 0x68A9,\n\t3282: 0x68AA,\n\t3283: 0x68AE,\n\t3284: 0x68B2,\n\t3285: 0x68BB,\n\t3286: 0x68C5,\n\t3287: 0x68C8,\n\t3288: 0x68CC,\n\t3289: 0x68CF,\n\t3290: 0x68D0,\n\t3291: 0x68D1,\n\t3292: 0x68D3,\n\t3293: 0x68D6,\n\t3294: 0x68D9,\n\t3295: 0x68DC,\n\t3296: 0x68DD,\n\t3297: 0x68E5,\n\t3298: 0x68E8,\n\t3299: 0x68EA,\n\t3300: 0x68EB,\n\t3301: 0x68EC,\n\t3302: 0x68ED,\n\t3303: 0x68F0,\n\t3304: 0x68F1,\n\t3305: 0x68F5,\n\t3306: 0x68F6,\n\t3307: 0x68FB,\n\t3308: 0x68FC,\n\t3309: 0x68FD,\n\t3310: 0x6906,\n\t3311: 0x6909,\n\t3312: 0x690A,\n\t3313: 0x6910,\n\t3314: 0x6911,\n\t3315: 0x6913,\n\t3316: 0x6916,\n\t3317: 0x6917,\n\t3318: 0x6931,\n\t3319: 0x6933,\n\t3320: 0x6935,\n\t3321: 0x6938,\n\t3322: 0x693B,\n\t3323: 0x6942,\n\t3324: 0x6945,\n\t3325: 0x6949,\n\t3326: 0x694E,\n\t3327: 0x6957,\n\t3328: 0x695B,\n\t3329: 0x6963,\n\t3330: 0x6964,\n\t3331: 0x6965,\n\t3332: 0x6966,\n\t3333: 0x6968,\n\t3334: 0x6969,\n\t3335: 0x696C,\n\t3336: 0x6970,\n\t3337: 0x6971,\n\t3338: 0x6972,\n\t3339: 0x697A,\n\t3340: 0x697B,\n\t3341: 0x697F,\n\t3342: 0x6980,\n\t3343: 0x698D,\n\t3344: 0x6992,\n\t3345: 0x6996,\n\t3346: 0x6998,\n\t3347: 0x69A1,\n\t3348: 0x69A5,\n\t3349: 0x69A6,\n\t3350: 0x69A8,\n\t3351: 0x69AB,\n\t3352: 0x69AD,\n\t3353: 0x69AF,\n\t3354: 0x69B7,\n\t3355: 0x69B8,\n\t3356: 0x69BA,\n\t3357: 0x69BC,\n\t3358: 0x69C5,\n\t3359: 0x69C8,\n\t3360: 0x69D1,\n\t3361: 0x69D6,\n\t3362: 0x69D7,\n\t3363: 0x69E2,\n\t3364: 0x69E5,\n\t3365: 0x69EE,\n\t3366: 0x69EF,\n\t3367: 0x69F1,\n\t3368: 0x69F3,\n\t3369: 0x69F5,\n\t3370: 0x69FE,\n\t3371: 0x6A00,\n\t3372: 0x6A01,\n\t3373: 0x6A03,\n\t3374: 0x6A0F,\n\t3375: 0x6A11,\n\t3376: 0x6A15,\n\t3377: 0x6A1A,\n\t3378: 0x6A1D,\n\t3379: 0x6A20,\n\t3380: 0x6A24,\n\t3381: 0x6A28,\n\t3382: 0x6A30,\n\t3383: 0x6A32,\n\t3384: 0x6A34,\n\t3385: 0x6A37,\n\t3386: 0x6A3B,\n\t3387: 0x6A3E,\n\t3388: 0x6A3F,\n\t3389: 0x6A45,\n\t3390: 0x6A46,\n\t3391: 0x6A49,\n\t3392: 0x6A4A,\n\t3393: 0x6A4E,\n\t3394: 0x6A50,\n\t3395: 0x6A51,\n\t3396: 0x6A52,\n\t3397: 0x6A55,\n\t3398: 0x6A56,\n\t3399: 0x6A5B,\n\t3400: 0x6A64,\n\t3401: 0x6A67,\n\t3402: 0x6A6A,\n\t3403: 0x6A71,\n\t3404: 0x6A73,\n\t3405: 0x6A7E,\n\t3406: 0x6A81,\n\t3407: 0x6A83,\n\t3408: 0x6A86,\n\t3409: 0x6A87,\n\t3410: 0x6A89,\n\t3411: 0x6A8B,\n\t3412: 0x6A91,\n\t3413: 0x6A9B,\n\t3414: 0x6A9D,\n\t3415: 0x6A9E,\n\t3416: 0x6A9F,\n\t3417: 0x6AA5,\n\t3418: 0x6AAB,\n\t3419: 0x6AAF,\n\t3420: 0x6AB0,\n\t3421: 0x6AB1,\n\t3422: 0x6AB4,\n\t3423: 0x6ABD,\n\t3424: 0x6ABE,\n\t3425: 0x6ABF,\n\t3426: 0x6AC6,\n\t3427: 0x6AC9,\n\t3428: 0x6AC8,\n\t3429: 0x6ACC,\n\t3430: 0x6AD0,\n\t3431: 0x6AD4,\n\t3432: 0x6AD5,\n\t3433: 0x6AD6,\n\t3434: 0x6ADC,\n\t3435: 0x6ADD,\n\t3436: 0x6AE4,\n\t3437: 0x6AE7,\n\t3438: 0x6AEC,\n\t3439: 0x6AF0,\n\t3440: 0x6AF1,\n\t3441: 0x6AF2,\n\t3442: 0x6AFC,\n\t3443: 0x6AFD,\n\t3444: 0x6B02,\n\t3445: 0x6B03,\n\t3446: 0x6B06,\n\t3447: 0x6B07,\n\t3448: 0x6B09,\n\t3449: 0x6B0F,\n\t3450: 0x6B10,\n\t3451: 0x6B11,\n\t3452: 0x6B17,\n\t3453: 0x6B1B,\n\t3454: 0x6B1E,\n\t3455: 0x6B24,\n\t3456: 0x6B28,\n\t3457: 0x6B2B,\n\t3458: 0x6B2C,\n\t3459: 0x6B2F,\n\t3460: 0x6B35,\n\t3461: 0x6B36,\n\t3462: 0x6B3B,\n\t3463: 0x6B3F,\n\t3464: 0x6B46,\n\t3465: 0x6B4A,\n\t3466: 0x6B4D,\n\t3467: 0x6B52,\n\t3468: 0x6B56,\n\t3469: 0x6B58,\n\t3470: 0x6B5D,\n\t3471: 0x6B60,\n\t3472: 0x6B67,\n\t3473: 0x6B6B,\n\t3474: 0x6B6E,\n\t3475: 0x6B70,\n\t3476: 0x6B75,\n\t3477: 0x6B7D,\n\t3478: 0x6B7E,\n\t3479: 0x6B82,\n\t3480: 0x6B85,\n\t3481: 0x6B97,\n\t3482: 0x6B9B,\n\t3483: 0x6B9F,\n\t3484: 0x6BA0,\n\t3485: 0x6BA2,\n\t3486: 0x6BA3,\n\t3487: 0x6BA8,\n\t3488: 0x6BA9,\n\t3489: 0x6BAC,\n\t3490: 0x6BAD,\n\t3491: 0x6BAE,\n\t3492: 0x6BB0,\n\t3493: 0x6BB8,\n\t3494: 0x6BB9,\n\t3495: 0x6BBD,\n\t3496: 0x6BBE,\n\t3497: 0x6BC3,\n\t3498: 0x6BC4,\n\t3499: 0x6BC9,\n\t3500: 0x6BCC,\n\t3501: 0x6BD6,\n\t3502: 0x6BDA,\n\t3503: 0x6BE1,\n\t3504: 0x6BE3,\n\t3505: 0x6BE6,\n\t3506: 0x6BE7,\n\t3507: 0x6BEE,\n\t3508: 0x6BF1,\n\t3509: 0x6BF7,\n\t3510: 0x6BF9,\n\t3511: 0x6BFF,\n\t3512: 0x6C02,\n\t3513: 0x6C04,\n\t3514: 0x6C05,\n\t3515: 0x6C09,\n\t3516: 0x6C0D,\n\t3517: 0x6C0E,\n\t3518: 0x6C10,\n\t3519: 0x6C12,\n\t3520: 0x6C19,\n\t3521: 0x6C1F,\n\t3522: 0x6C26,\n\t3523: 0x6C27,\n\t3524: 0x6C28,\n\t3525: 0x6C2C,\n\t3526: 0x6C2E,\n\t3527: 0x6C33,\n\t3528: 0x6C35,\n\t3529: 0x6C36,\n\t3530: 0x6C3A,\n\t3531: 0x6C3B,\n\t3532: 0x6C3F,\n\t3533: 0x6C4A,\n\t3534: 0x6C4B,\n\t3535: 0x6C4D,\n\t3536: 0x6C4F,\n\t3537: 0x6C52,\n\t3538: 0x6C54,\n\t3539: 0x6C59,\n\t3540: 0x6C5B,\n\t3541: 0x6C5C,\n\t3542: 0x6C6B,\n\t3543: 0x6C6D,\n\t3544: 0x6C6F,\n\t3545: 0x6C74,\n\t3546: 0x6C76,\n\t3547: 0x6C78,\n\t3548: 0x6C79,\n\t3549: 0x6C7B,\n\t3550: 0x6C85,\n\t3551: 0x6C86,\n\t3552: 0x6C87,\n\t3553: 0x6C89,\n\t3554: 0x6C94,\n\t3555: 0x6C95,\n\t3556: 0x6C97,\n\t3557: 0x6C98,\n\t3558: 0x6C9C,\n\t3559: 0x6C9F,\n\t3560: 0x6CB0,\n\t3561: 0x6CB2,\n\t3562: 0x6CB4,\n\t3563: 0x6CC2,\n\t3564: 0x6CC6,\n\t3565: 0x6CCD,\n\t3566: 0x6CCF,\n\t3567: 0x6CD0,\n\t3568: 0x6CD1,\n\t3569: 0x6CD2,\n\t3570: 0x6CD4,\n\t3571: 0x6CD6,\n\t3572: 0x6CDA,\n\t3573: 0x6CDC,\n\t3574: 0x6CE0,\n\t3575: 0x6CE7,\n\t3576: 0x6CE9,\n\t3577: 0x6CEB,\n\t3578: 0x6CEC,\n\t3579: 0x6CEE,\n\t3580: 0x6CF2,\n\t3581: 0x6CF4,\n\t3582: 0x6D04,\n\t3583: 0x6D07,\n\t3584: 0x6D0A,\n\t3585: 0x6D0E,\n\t3586: 0x6D0F,\n\t3587: 0x6D11,\n\t3588: 0x6D13,\n\t3589: 0x6D1A,\n\t3590: 0x6D26,\n\t3591: 0x6D27,\n\t3592: 0x6D28,\n\t3593: 0x6C67,\n\t3594: 0x6D2E,\n\t3595: 0x6D2F,\n\t3596: 0x6D31,\n\t3597: 0x6D39,\n\t3598: 0x6D3C,\n\t3599: 0x6D3F,\n\t3600: 0x6D57,\n\t3601: 0x6D5E,\n\t3602: 0x6D5F,\n\t3603: 0x6D61,\n\t3604: 0x6D65,\n\t3605: 0x6D67,\n\t3606: 0x6D6F,\n\t3607: 0x6D70,\n\t3608: 0x6D7C,\n\t3609: 0x6D82,\n\t3610: 0x6D87,\n\t3611: 0x6D91,\n\t3612: 0x6D92,\n\t3613: 0x6D94,\n\t3614: 0x6D96,\n\t3615: 0x6D97,\n\t3616: 0x6D98,\n\t3617: 0x6DAA,\n\t3618: 0x6DAC,\n\t3619: 0x6DB4,\n\t3620: 0x6DB7,\n\t3621: 0x6DB9,\n\t3622: 0x6DBD,\n\t3623: 0x6DBF,\n\t3624: 0x6DC4,\n\t3625: 0x6DC8,\n\t3626: 0x6DCA,\n\t3627: 0x6DCE,\n\t3628: 0x6DCF,\n\t3629: 0x6DD6,\n\t3630: 0x6DDB,\n\t3631: 0x6DDD,\n\t3632: 0x6DDF,\n\t3633: 0x6DE0,\n\t3634: 0x6DE2,\n\t3635: 0x6DE5,\n\t3636: 0x6DE9,\n\t3637: 0x6DEF,\n\t3638: 0x6DF0,\n\t3639: 0x6DF4,\n\t3640: 0x6DF6,\n\t3641: 0x6DFC,\n\t3642: 0x6E00,\n\t3643: 0x6E04,\n\t3644: 0x6E1E,\n\t3645: 0x6E22,\n\t3646: 0x6E27,\n\t3647: 0x6E32,\n\t3648: 0x6E36,\n\t3649: 0x6E39,\n\t3650: 0x6E3B,\n\t3651: 0x6E3C,\n\t3652: 0x6E44,\n\t3653: 0x6E45,\n\t3654: 0x6E48,\n\t3655: 0x6E49,\n\t3656: 0x6E4B,\n\t3657: 0x6E4F,\n\t3658: 0x6E51,\n\t3659: 0x6E52,\n\t3660: 0x6E53,\n\t3661: 0x6E54,\n\t3662: 0x6E57,\n\t3663: 0x6E5C,\n\t3664: 0x6E5D,\n\t3665: 0x6E5E,\n\t3666: 0x6E62,\n\t3667: 0x6E63,\n\t3668: 0x6E68,\n\t3669: 0x6E73,\n\t3670: 0x6E7B,\n\t3671: 0x6E7D,\n\t3672: 0x6E8D,\n\t3673: 0x6E93,\n\t3674: 0x6E99,\n\t3675: 0x6EA0,\n\t3676: 0x6EA7,\n\t3677: 0x6EAD,\n\t3678: 0x6EAE,\n\t3679: 0x6EB1,\n\t3680: 0x6EB3,\n\t3681: 0x6EBB,\n\t3682: 0x6EBF,\n\t3683: 0x6EC0,\n\t3684: 0x6EC1,\n\t3685: 0x6EC3,\n\t3686: 0x6EC7,\n\t3687: 0x6EC8,\n\t3688: 0x6ECA,\n\t3689: 0x6ECD,\n\t3690: 0x6ECE,\n\t3691: 0x6ECF,\n\t3692: 0x6EEB,\n\t3693: 0x6EED,\n\t3694: 0x6EEE,\n\t3695: 0x6EF9,\n\t3696: 0x6EFB,\n\t3697: 0x6EFD,\n\t3698: 0x6F04,\n\t3699: 0x6F08,\n\t3700: 0x6F0A,\n\t3701: 0x6F0C,\n\t3702: 0x6F0D,\n\t3703: 0x6F16,\n\t3704: 0x6F18,\n\t3705: 0x6F1A,\n\t3706: 0x6F1B,\n\t3707: 0x6F26,\n\t3708: 0x6F29,\n\t3709: 0x6F2A,\n\t3710: 0x6F2F,\n\t3711: 0x6F30,\n\t3712: 0x6F33,\n\t3713: 0x6F36,\n\t3714: 0x6F3B,\n\t3715: 0x6F3C,\n\t3716: 0x6F2D,\n\t3717: 0x6F4F,\n\t3718: 0x6F51,\n\t3719: 0x6F52,\n\t3720: 0x6F53,\n\t3721: 0x6F57,\n\t3722: 0x6F59,\n\t3723: 0x6F5A,\n\t3724: 0x6F5D,\n\t3725: 0x6F5E,\n\t3726: 0x6F61,\n\t3727: 0x6F62,\n\t3728: 0x6F68,\n\t3729: 0x6F6C,\n\t3730: 0x6F7D,\n\t3731: 0x6F7E,\n\t3732: 0x6F83,\n\t3733: 0x6F87,\n\t3734: 0x6F88,\n\t3735: 0x6F8B,\n\t3736: 0x6F8C,\n\t3737: 0x6F8D,\n\t3738: 0x6F90,\n\t3739: 0x6F92,\n\t3740: 0x6F93,\n\t3741: 0x6F94,\n\t3742: 0x6F96,\n\t3743: 0x6F9A,\n\t3744: 0x6F9F,\n\t3745: 0x6FA0,\n\t3746: 0x6FA5,\n\t3747: 0x6FA6,\n\t3748: 0x6FA7,\n\t3749: 0x6FA8,\n\t3750: 0x6FAE,\n\t3751: 0x6FAF,\n\t3752: 0x6FB0,\n\t3753: 0x6FB5,\n\t3754: 0x6FB6,\n\t3755: 0x6FBC,\n\t3756: 0x6FC5,\n\t3757: 0x6FC7,\n\t3758: 0x6FC8,\n\t3759: 0x6FCA,\n\t3760: 0x6FDA,\n\t3761: 0x6FDE,\n\t3762: 0x6FE8,\n\t3763: 0x6FE9,\n\t3764: 0x6FF0,\n\t3765: 0x6FF5,\n\t3766: 0x6FF9,\n\t3767: 0x6FFC,\n\t3768: 0x6FFD,\n\t3769: 0x7000,\n\t3770: 0x7005,\n\t3771: 0x7006,\n\t3772: 0x7007,\n\t3773: 0x700D,\n\t3774: 0x7017,\n\t3775: 0x7020,\n\t3776: 0x7023,\n\t3777: 0x702F,\n\t3778: 0x7034,\n\t3779: 0x7037,\n\t3780: 0x7039,\n\t3781: 0x703C,\n\t3782: 0x7043,\n\t3783: 0x7044,\n\t3784: 0x7048,\n\t3785: 0x7049,\n\t3786: 0x704A,\n\t3787: 0x704B,\n\t3788: 0x7054,\n\t3789: 0x7055,\n\t3790: 0x705D,\n\t3791: 0x705E,\n\t3792: 0x704E,\n\t3793: 0x7064,\n\t3794: 0x7065,\n\t3795: 0x706C,\n\t3796: 0x706E,\n\t3797: 0x7075,\n\t3798: 0x7076,\n\t3799: 0x707E,\n\t3800: 0x7081,\n\t3801: 0x7085,\n\t3802: 0x7086,\n\t3803: 0x7094,\n\t3804: 0x7095,\n\t3805: 0x7096,\n\t3806: 0x7097,\n\t3807: 0x7098,\n\t3808: 0x709B,\n\t3809: 0x70A4,\n\t3810: 0x70AB,\n\t3811: 0x70B0,\n\t3812: 0x70B1,\n\t3813: 0x70B4,\n\t3814: 0x70B7,\n\t3815: 0x70CA,\n\t3816: 0x70D1,\n\t3817: 0x70D3,\n\t3818: 0x70D4,\n\t3819: 0x70D5,\n\t3820: 0x70D6,\n\t3821: 0x70D8,\n\t3822: 0x70DC,\n\t3823: 0x70E4,\n\t3824: 0x70FA,\n\t3825: 0x7103,\n\t3826: 0x7104,\n\t3827: 0x7105,\n\t3828: 0x7106,\n\t3829: 0x7107,\n\t3830: 0x710B,\n\t3831: 0x710C,\n\t3832: 0x710F,\n\t3833: 0x711E,\n\t3834: 0x7120,\n\t3835: 0x712B,\n\t3836: 0x712D,\n\t3837: 0x712F,\n\t3838: 0x7130,\n\t3839: 0x7131,\n\t3840: 0x7138,\n\t3841: 0x7141,\n\t3842: 0x7145,\n\t3843: 0x7146,\n\t3844: 0x7147,\n\t3845: 0x714A,\n\t3846: 0x714B,\n\t3847: 0x7150,\n\t3848: 0x7152,\n\t3849: 0x7157,\n\t3850: 0x715A,\n\t3851: 0x715C,\n\t3852: 0x715E,\n\t3853: 0x7160,\n\t3854: 0x7168,\n\t3855: 0x7179,\n\t3856: 0x7180,\n\t3857: 0x7185,\n\t3858: 0x7187,\n\t3859: 0x718C,\n\t3860: 0x7192,\n\t3861: 0x719A,\n\t3862: 0x719B,\n\t3863: 0x71A0,\n\t3864: 0x71A2,\n\t3865: 0x71AF,\n\t3866: 0x71B0,\n\t3867: 0x71B2,\n\t3868: 0x71B3,\n\t3869: 0x71BA,\n\t3870: 0x71BF,\n\t3871: 0x71C0,\n\t3872: 0x71C1,\n\t3873: 0x71C4,\n\t3874: 0x71CB,\n\t3875: 0x71CC,\n\t3876: 0x71D3,\n\t3877: 0x71D6,\n\t3878: 0x71D9,\n\t3879: 0x71DA,\n\t3880: 0x71DC,\n\t3881: 0x71F8,\n\t3882: 0x71FE,\n\t3883: 0x7200,\n\t3884: 0x7207,\n\t3885: 0x7208,\n\t3886: 0x7209,\n\t3887: 0x7213,\n\t3888: 0x7217,\n\t3889: 0x721A,\n\t3890: 0x721D,\n\t3891: 0x721F,\n\t3892: 0x7224,\n\t3893: 0x722B,\n\t3894: 0x722F,\n\t3895: 0x7234,\n\t3896: 0x7238,\n\t3897: 0x7239,\n\t3898: 0x7241,\n\t3899: 0x7242,\n\t3900: 0x7243,\n\t3901: 0x7245,\n\t3902: 0x724E,\n\t3903: 0x724F,\n\t3904: 0x7250,\n\t3905: 0x7253,\n\t3906: 0x7255,\n\t3907: 0x7256,\n\t3908: 0x725A,\n\t3909: 0x725C,\n\t3910: 0x725E,\n\t3911: 0x7260,\n\t3912: 0x7263,\n\t3913: 0x7268,\n\t3914: 0x726B,\n\t3915: 0x726E,\n\t3916: 0x726F,\n\t3917: 0x7271,\n\t3918: 0x7277,\n\t3919: 0x7278,\n\t3920: 0x727B,\n\t3921: 0x727C,\n\t3922: 0x727F,\n\t3923: 0x7284,\n\t3924: 0x7289,\n\t3925: 0x728D,\n\t3926: 0x728E,\n\t3927: 0x7293,\n\t3928: 0x729B,\n\t3929: 0x72A8,\n\t3930: 0x72AD,\n\t3931: 0x72AE,\n\t3932: 0x72B1,\n\t3933: 0x72B4,\n\t3934: 0x72BE,\n\t3935: 0x72C1,\n\t3936: 0x72C7,\n\t3937: 0x72C9,\n\t3938: 0x72CC,\n\t3939: 0x72D5,\n\t3940: 0x72D6,\n\t3941: 0x72D8,\n\t3942: 0x72DF,\n\t3943: 0x72E5,\n\t3944: 0x72F3,\n\t3945: 0x72F4,\n\t3946: 0x72FA,\n\t3947: 0x72FB,\n\t3948: 0x72FE,\n\t3949: 0x7302,\n\t3950: 0x7304,\n\t3951: 0x7305,\n\t3952: 0x7307,\n\t3953: 0x730B,\n\t3954: 0x730D,\n\t3955: 0x7312,\n\t3956: 0x7313,\n\t3957: 0x7318,\n\t3958: 0x7319,\n\t3959: 0x731E,\n\t3960: 0x7322,\n\t3961: 0x7324,\n\t3962: 0x7327,\n\t3963: 0x7328,\n\t3964: 0x732C,\n\t3965: 0x7331,\n\t3966: 0x7332,\n\t3967: 0x7335,\n\t3968: 0x733A,\n\t3969: 0x733B,\n\t3970: 0x733D,\n\t3971: 0x7343,\n\t3972: 0x734D,\n\t3973: 0x7350,\n\t3974: 0x7352,\n\t3975: 0x7356,\n\t3976: 0x7358,\n\t3977: 0x735D,\n\t3978: 0x735E,\n\t3979: 0x735F,\n\t3980: 0x7360,\n\t3981: 0x7366,\n\t3982: 0x7367,\n\t3983: 0x7369,\n\t3984: 0x736B,\n\t3985: 0x736C,\n\t3986: 0x736E,\n\t3987: 0x736F,\n\t3988: 0x7371,\n\t3989: 0x7377,\n\t3990: 0x7379,\n\t3991: 0x737C,\n\t3992: 0x7380,\n\t3993: 0x7381,\n\t3994: 0x7383,\n\t3995: 0x7385,\n\t3996: 0x7386,\n\t3997: 0x738E,\n\t3998: 0x7390,\n\t3999: 0x7393,\n\t4000: 0x7395,\n\t4001: 0x7397,\n\t4002: 0x7398,\n\t4003: 0x739C,\n\t4004: 0x739E,\n\t4005: 0x739F,\n\t4006: 0x73A0,\n\t4007: 0x73A2,\n\t4008: 0x73A5,\n\t4009: 0x73A6,\n\t4010: 0x73AA,\n\t4011: 0x73AB,\n\t4012: 0x73AD,\n\t4013: 0x73B5,\n\t4014: 0x73B7,\n\t4015: 0x73B9,\n\t4016: 0x73BC,\n\t4017: 0x73BD,\n\t4018: 0x73BF,\n\t4019: 0x73C5,\n\t4020: 0x73C6,\n\t4021: 0x73C9,\n\t4022: 0x73CB,\n\t4023: 0x73CC,\n\t4024: 0x73CF,\n\t4025: 0x73D2,\n\t4026: 0x73D3,\n\t4027: 0x73D6,\n\t4028: 0x73D9,\n\t4029: 0x73DD,\n\t4030: 0x73E1,\n\t4031: 0x73E3,\n\t4032: 0x73E6,\n\t4033: 0x73E7,\n\t4034: 0x73E9,\n\t4035: 0x73F4,\n\t4036: 0x73F5,\n\t4037: 0x73F7,\n\t4038: 0x73F9,\n\t4039: 0x73FA,\n\t4040: 0x73FB,\n\t4041: 0x73FD,\n\t4042: 0x73FF,\n\t4043: 0x7400,\n\t4044: 0x7401,\n\t4045: 0x7404,\n\t4046: 0x7407,\n\t4047: 0x740A,\n\t4048: 0x7411,\n\t4049: 0x741A,\n\t4050: 0x741B,\n\t4051: 0x7424,\n\t4052: 0x7426,\n\t4053: 0x7428,\n\t4054: 0x7429,\n\t4055: 0x742A,\n\t4056: 0x742B,\n\t4057: 0x742C,\n\t4058: 0x742D,\n\t4059: 0x742E,\n\t4060: 0x742F,\n\t4061: 0x7430,\n\t4062: 0x7431,\n\t4063: 0x7439,\n\t4064: 0x7440,\n\t4065: 0x7443,\n\t4066: 0x7444,\n\t4067: 0x7446,\n\t4068: 0x7447,\n\t4069: 0x744B,\n\t4070: 0x744D,\n\t4071: 0x7451,\n\t4072: 0x7452,\n\t4073: 0x7457,\n\t4074: 0x745D,\n\t4075: 0x7462,\n\t4076: 0x7466,\n\t4077: 0x7467,\n\t4078: 0x7468,\n\t4079: 0x746B,\n\t4080: 0x746D,\n\t4081: 0x746E,\n\t4082: 0x7471,\n\t4083: 0x7472,\n\t4084: 0x7480,\n\t4085: 0x7481,\n\t4086: 0x7485,\n\t4087: 0x7486,\n\t4088: 0x7487,\n\t4089: 0x7489,\n\t4090: 0x748F,\n\t4091: 0x7490,\n\t4092: 0x7491,\n\t4093: 0x7492,\n\t4094: 0x7498,\n\t4095: 0x7499,\n\t4096: 0x749A,\n\t4097: 0x749C,\n\t4098: 0x749F,\n\t4099: 0x74A0,\n\t4100: 0x74A1,\n\t4101: 0x74A3,\n\t4102: 0x74A6,\n\t4103: 0x74A8,\n\t4104: 0x74A9,\n\t4105: 0x74AA,\n\t4106: 0x74AB,\n\t4107: 0x74AE,\n\t4108: 0x74AF,\n\t4109: 0x74B1,\n\t4110: 0x74B2,\n\t4111: 0x74B5,\n\t4112: 0x74B9,\n\t4113: 0x74BB,\n\t4114: 0x74BF,\n\t4115: 0x74C8,\n\t4116: 0x74C9,\n\t4117: 0x74CC,\n\t4118: 0x74D0,\n\t4119: 0x74D3,\n\t4120: 0x74D8,\n\t4121: 0x74DA,\n\t4122: 0x74DB,\n\t4123: 0x74DE,\n\t4124: 0x74DF,\n\t4125: 0x74E4,\n\t4126: 0x74E8,\n\t4127: 0x74EA,\n\t4128: 0x74EB,\n\t4129: 0x74EF,\n\t4130: 0x74F4,\n\t4131: 0x74FA,\n\t4132: 0x74FB,\n\t4133: 0x74FC,\n\t4134: 0x74FF,\n\t4135: 0x7506,\n\t4136: 0x7512,\n\t4137: 0x7516,\n\t4138: 0x7517,\n\t4139: 0x7520,\n\t4140: 0x7521,\n\t4141: 0x7524,\n\t4142: 0x7527,\n\t4143: 0x7529,\n\t4144: 0x752A,\n\t4145: 0x752F,\n\t4146: 0x7536,\n\t4147: 0x7539,\n\t4148: 0x753D,\n\t4149: 0x753E,\n\t4150: 0x753F,\n\t4151: 0x7540,\n\t4152: 0x7543,\n\t4153: 0x7547,\n\t4154: 0x7548,\n\t4155: 0x754E,\n\t4156: 0x7550,\n\t4157: 0x7552,\n\t4158: 0x7557,\n\t4159: 0x755E,\n\t4160: 0x755F,\n\t4161: 0x7561,\n\t4162: 0x756F,\n\t4163: 0x7571,\n\t4164: 0x7579,\n\t4165: 0x757A,\n\t4166: 0x757B,\n\t4167: 0x757C,\n\t4168: 0x757D,\n\t4169: 0x757E,\n\t4170: 0x7581,\n\t4171: 0x7585,\n\t4172: 0x7590,\n\t4173: 0x7592,\n\t4174: 0x7593,\n\t4175: 0x7595,\n\t4176: 0x7599,\n\t4177: 0x759C,\n\t4178: 0x75A2,\n\t4179: 0x75A4,\n\t4180: 0x75B4,\n\t4181: 0x75BA,\n\t4182: 0x75BF,\n\t4183: 0x75C0,\n\t4184: 0x75C1,\n\t4185: 0x75C4,\n\t4186: 0x75C6,\n\t4187: 0x75CC,\n\t4188: 0x75CE,\n\t4189: 0x75CF,\n\t4190: 0x75D7,\n\t4191: 0x75DC,\n\t4192: 0x75DF,\n\t4193: 0x75E0,\n\t4194: 0x75E1,\n\t4195: 0x75E4,\n\t4196: 0x75E7,\n\t4197: 0x75EC,\n\t4198: 0x75EE,\n\t4199: 0x75EF,\n\t4200: 0x75F1,\n\t4201: 0x75F9,\n\t4202: 0x7600,\n\t4203: 0x7602,\n\t4204: 0x7603,\n\t4205: 0x7604,\n\t4206: 0x7607,\n\t4207: 0x7608,\n\t4208: 0x760A,\n\t4209: 0x760C,\n\t4210: 0x760F,\n\t4211: 0x7612,\n\t4212: 0x7613,\n\t4213: 0x7615,\n\t4214: 0x7616,\n\t4215: 0x7619,\n\t4216: 0x761B,\n\t4217: 0x761C,\n\t4218: 0x761D,\n\t4219: 0x761E,\n\t4220: 0x7623,\n\t4221: 0x7625,\n\t4222: 0x7626,\n\t4223: 0x7629,\n\t4224: 0x762D,\n\t4225: 0x7632,\n\t4226: 0x7633,\n\t4227: 0x7635,\n\t4228: 0x7638,\n\t4229: 0x7639,\n\t4230: 0x763A,\n\t4231: 0x763C,\n\t4232: 0x764A,\n\t4233: 0x7640,\n\t4234: 0x7641,\n\t4235: 0x7643,\n\t4236: 0x7644,\n\t4237: 0x7645,\n\t4238: 0x7649,\n\t4239: 0x764B,\n\t4240: 0x7655,\n\t4241: 0x7659,\n\t4242: 0x765F,\n\t4243: 0x7664,\n\t4244: 0x7665,\n\t4245: 0x766D,\n\t4246: 0x766E,\n\t4247: 0x766F,\n\t4248: 0x7671,\n\t4249: 0x7674,\n\t4250: 0x7681,\n\t4251: 0x7685,\n\t4252: 0x768C,\n\t4253: 0x768D,\n\t4254: 0x7695,\n\t4255: 0x769B,\n\t4256: 0x769C,\n\t4257: 0x769D,\n\t4258: 0x769F,\n\t4259: 0x76A0,\n\t4260: 0x76A2,\n\t4261: 0x76A3,\n\t4262: 0x76A4,\n\t4263: 0x76A5,\n\t4264: 0x76A6,\n\t4265: 0x76A7,\n\t4266: 0x76A8,\n\t4267: 0x76AA,\n\t4268: 0x76AD,\n\t4269: 0x76BD,\n\t4270: 0x76C1,\n\t4271: 0x76C5,\n\t4272: 0x76C9,\n\t4273: 0x76CB,\n\t4274: 0x76CC,\n\t4275: 0x76CE,\n\t4276: 0x76D4,\n\t4277: 0x76D9,\n\t4278: 0x76E0,\n\t4279: 0x76E6,\n\t4280: 0x76E8,\n\t4281: 0x76EC,\n\t4282: 0x76F0,\n\t4283: 0x76F1,\n\t4284: 0x76F6,\n\t4285: 0x76F9,\n\t4286: 0x76FC,\n\t4287: 0x7700,\n\t4288: 0x7706,\n\t4289: 0x770A,\n\t4290: 0x770E,\n\t4291: 0x7712,\n\t4292: 0x7714,\n\t4293: 0x7715,\n\t4294: 0x7717,\n\t4295: 0x7719,\n\t4296: 0x771A,\n\t4297: 0x771C,\n\t4298: 0x7722,\n\t4299: 0x7728,\n\t4300: 0x772D,\n\t4301: 0x772E,\n\t4302: 0x772F,\n\t4303: 0x7734,\n\t4304: 0x7735,\n\t4305: 0x7736,\n\t4306: 0x7739,\n\t4307: 0x773D,\n\t4308: 0x773E,\n\t4309: 0x7742,\n\t4310: 0x7745,\n\t4311: 0x7746,\n\t4312: 0x774A,\n\t4313: 0x774D,\n\t4314: 0x774E,\n\t4315: 0x774F,\n\t4316: 0x7752,\n\t4317: 0x7756,\n\t4318: 0x7757,\n\t4319: 0x775C,\n\t4320: 0x775E,\n\t4321: 0x775F,\n\t4322: 0x7760,\n\t4323: 0x7762,\n\t4324: 0x7764,\n\t4325: 0x7767,\n\t4326: 0x776A,\n\t4327: 0x776C,\n\t4328: 0x7770,\n\t4329: 0x7772,\n\t4330: 0x7773,\n\t4331: 0x7774,\n\t4332: 0x777A,\n\t4333: 0x777D,\n\t4334: 0x7780,\n\t4335: 0x7784,\n\t4336: 0x778C,\n\t4337: 0x778D,\n\t4338: 0x7794,\n\t4339: 0x7795,\n\t4340: 0x7796,\n\t4341: 0x779A,\n\t4342: 0x779F,\n\t4343: 0x77A2,\n\t4344: 0x77A7,\n\t4345: 0x77AA,\n\t4346: 0x77AE,\n\t4347: 0x77AF,\n\t4348: 0x77B1,\n\t4349: 0x77B5,\n\t4350: 0x77BE,\n\t4351: 0x77C3,\n\t4352: 0x77C9,\n\t4353: 0x77D1,\n\t4354: 0x77D2,\n\t4355: 0x77D5,\n\t4356: 0x77D9,\n\t4357: 0x77DE,\n\t4358: 0x77DF,\n\t4359: 0x77E0,\n\t4360: 0x77E4,\n\t4361: 0x77E6,\n\t4362: 0x77EA,\n\t4363: 0x77EC,\n\t4364: 0x77F0,\n\t4365: 0x77F1,\n\t4366: 0x77F4,\n\t4367: 0x77F8,\n\t4368: 0x77FB,\n\t4369: 0x7805,\n\t4370: 0x7806,\n\t4371: 0x7809,\n\t4372: 0x780D,\n\t4373: 0x780E,\n\t4374: 0x7811,\n\t4375: 0x781D,\n\t4376: 0x7821,\n\t4377: 0x7822,\n\t4378: 0x7823,\n\t4379: 0x782D,\n\t4380: 0x782E,\n\t4381: 0x7830,\n\t4382: 0x7835,\n\t4383: 0x7837,\n\t4384: 0x7843,\n\t4385: 0x7844,\n\t4386: 0x7847,\n\t4387: 0x7848,\n\t4388: 0x784C,\n\t4389: 0x784E,\n\t4390: 0x7852,\n\t4391: 0x785C,\n\t4392: 0x785E,\n\t4393: 0x7860,\n\t4394: 0x7861,\n\t4395: 0x7863,\n\t4396: 0x7864,\n\t4397: 0x7868,\n\t4398: 0x786A,\n\t4399: 0x786E,\n\t4400: 0x787A,\n\t4401: 0x787E,\n\t4402: 0x788A,\n\t4403: 0x788F,\n\t4404: 0x7894,\n\t4405: 0x7898,\n\t4406: 0x78A1,\n\t4407: 0x789D,\n\t4408: 0x789E,\n\t4409: 0x789F,\n\t4410: 0x78A4,\n\t4411: 0x78A8,\n\t4412: 0x78AC,\n\t4413: 0x78AD,\n\t4414: 0x78B0,\n\t4415: 0x78B1,\n\t4416: 0x78B2,\n\t4417: 0x78B3,\n\t4418: 0x78BB,\n\t4419: 0x78BD,\n\t4420: 0x78BF,\n\t4421: 0x78C7,\n\t4422: 0x78C8,\n\t4423: 0x78C9,\n\t4424: 0x78CC,\n\t4425: 0x78CE,\n\t4426: 0x78D2,\n\t4427: 0x78D3,\n\t4428: 0x78D5,\n\t4429: 0x78D6,\n\t4430: 0x78E4,\n\t4431: 0x78DB,\n\t4432: 0x78DF,\n\t4433: 0x78E0,\n\t4434: 0x78E1,\n\t4435: 0x78E6,\n\t4436: 0x78EA,\n\t4437: 0x78F2,\n\t4438: 0x78F3,\n\t4439: 0x7900,\n\t4440: 0x78F6,\n\t4441: 0x78F7,\n\t4442: 0x78FA,\n\t4443: 0x78FB,\n\t4444: 0x78FF,\n\t4445: 0x7906,\n\t4446: 0x790C,\n\t4447: 0x7910,\n\t4448: 0x791A,\n\t4449: 0x791C,\n\t4450: 0x791E,\n\t4451: 0x791F,\n\t4452: 0x7920,\n\t4453: 0x7925,\n\t4454: 0x7927,\n\t4455: 0x7929,\n\t4456: 0x792D,\n\t4457: 0x7931,\n\t4458: 0x7934,\n\t4459: 0x7935,\n\t4460: 0x793B,\n\t4461: 0x793D,\n\t4462: 0x793F,\n\t4463: 0x7944,\n\t4464: 0x7945,\n\t4465: 0x7946,\n\t4466: 0x794A,\n\t4467: 0x794B,\n\t4468: 0x794F,\n\t4469: 0x7951,\n\t4470: 0x7954,\n\t4471: 0x7958,\n\t4472: 0x795B,\n\t4473: 0x795C,\n\t4474: 0x7967,\n\t4475: 0x7969,\n\t4476: 0x796B,\n\t4477: 0x7972,\n\t4478: 0x7979,\n\t4479: 0x797B,\n\t4480: 0x797C,\n\t4481: 0x797E,\n\t4482: 0x798B,\n\t4483: 0x798C,\n\t4484: 0x7991,\n\t4485: 0x7993,\n\t4486: 0x7994,\n\t4487: 0x7995,\n\t4488: 0x7996,\n\t4489: 0x7998,\n\t4490: 0x799B,\n\t4491: 0x799C,\n\t4492: 0x79A1,\n\t4493: 0x79A8,\n\t4494: 0x79A9,\n\t4495: 0x79AB,\n\t4496: 0x79AF,\n\t4497: 0x79B1,\n\t4498: 0x79B4,\n\t4499: 0x79B8,\n\t4500: 0x79BB,\n\t4501: 0x79C2,\n\t4502: 0x79C4,\n\t4503: 0x79C7,\n\t4504: 0x79C8,\n\t4505: 0x79CA,\n\t4506: 0x79CF,\n\t4507: 0x79D4,\n\t4508: 0x79D6,\n\t4509: 0x79DA,\n\t4510: 0x79DD,\n\t4511: 0x79DE,\n\t4512: 0x79E0,\n\t4513: 0x79E2,\n\t4514: 0x79E5,\n\t4515: 0x79EA,\n\t4516: 0x79EB,\n\t4517: 0x79ED,\n\t4518: 0x79F1,\n\t4519: 0x79F8,\n\t4520: 0x79FC,\n\t4521: 0x7A02,\n\t4522: 0x7A03,\n\t4523: 0x7A07,\n\t4524: 0x7A09,\n\t4525: 0x7A0A,\n\t4526: 0x7A0C,\n\t4527: 0x7A11,\n\t4528: 0x7A15,\n\t4529: 0x7A1B,\n\t4530: 0x7A1E,\n\t4531: 0x7A21,\n\t4532: 0x7A27,\n\t4533: 0x7A2B,\n\t4534: 0x7A2D,\n\t4535: 0x7A2F,\n\t4536: 0x7A30,\n\t4537: 0x7A34,\n\t4538: 0x7A35,\n\t4539: 0x7A38,\n\t4540: 0x7A39,\n\t4541: 0x7A3A,\n\t4542: 0x7A44,\n\t4543: 0x7A45,\n\t4544: 0x7A47,\n\t4545: 0x7A48,\n\t4546: 0x7A4C,\n\t4547: 0x7A55,\n\t4548: 0x7A56,\n\t4549: 0x7A59,\n\t4550: 0x7A5C,\n\t4551: 0x7A5D,\n\t4552: 0x7A5F,\n\t4553: 0x7A60,\n\t4554: 0x7A65,\n\t4555: 0x7A67,\n\t4556: 0x7A6A,\n\t4557: 0x7A6D,\n\t4558: 0x7A75,\n\t4559: 0x7A78,\n\t4560: 0x7A7E,\n\t4561: 0x7A80,\n\t4562: 0x7A82,\n\t4563: 0x7A85,\n\t4564: 0x7A86,\n\t4565: 0x7A8A,\n\t4566: 0x7A8B,\n\t4567: 0x7A90,\n\t4568: 0x7A91,\n\t4569: 0x7A94,\n\t4570: 0x7A9E,\n\t4571: 0x7AA0,\n\t4572: 0x7AA3,\n\t4573: 0x7AAC,\n\t4574: 0x7AB3,\n\t4575: 0x7AB5,\n\t4576: 0x7AB9,\n\t4577: 0x7ABB,\n\t4578: 0x7ABC,\n\t4579: 0x7AC6,\n\t4580: 0x7AC9,\n\t4581: 0x7ACC,\n\t4582: 0x7ACE,\n\t4583: 0x7AD1,\n\t4584: 0x7ADB,\n\t4585: 0x7AE8,\n\t4586: 0x7AE9,\n\t4587: 0x7AEB,\n\t4588: 0x7AEC,\n\t4589: 0x7AF1,\n\t4590: 0x7AF4,\n\t4591: 0x7AFB,\n\t4592: 0x7AFD,\n\t4593: 0x7AFE,\n\t4594: 0x7B07,\n\t4595: 0x7B14,\n\t4596: 0x7B1F,\n\t4597: 0x7B23,\n\t4598: 0x7B27,\n\t4599: 0x7B29,\n\t4600: 0x7B2A,\n\t4601: 0x7B2B,\n\t4602: 0x7B2D,\n\t4603: 0x7B2E,\n\t4604: 0x7B2F,\n\t4605: 0x7B30,\n\t4606: 0x7B31,\n\t4607: 0x7B34,\n\t4608: 0x7B3D,\n\t4609: 0x7B3F,\n\t4610: 0x7B40,\n\t4611: 0x7B41,\n\t4612: 0x7B47,\n\t4613: 0x7B4E,\n\t4614: 0x7B55,\n\t4615: 0x7B60,\n\t4616: 0x7B64,\n\t4617: 0x7B66,\n\t4618: 0x7B69,\n\t4619: 0x7B6A,\n\t4620: 0x7B6D,\n\t4621: 0x7B6F,\n\t4622: 0x7B72,\n\t4623: 0x7B73,\n\t4624: 0x7B77,\n\t4625: 0x7B84,\n\t4626: 0x7B89,\n\t4627: 0x7B8E,\n\t4628: 0x7B90,\n\t4629: 0x7B91,\n\t4630: 0x7B96,\n\t4631: 0x7B9B,\n\t4632: 0x7B9E,\n\t4633: 0x7BA0,\n\t4634: 0x7BA5,\n\t4635: 0x7BAC,\n\t4636: 0x7BAF,\n\t4637: 0x7BB0,\n\t4638: 0x7BB2,\n\t4639: 0x7BB5,\n\t4640: 0x7BB6,\n\t4641: 0x7BBA,\n\t4642: 0x7BBB,\n\t4643: 0x7BBC,\n\t4644: 0x7BBD,\n\t4645: 0x7BC2,\n\t4646: 0x7BC5,\n\t4647: 0x7BC8,\n\t4648: 0x7BCA,\n\t4649: 0x7BD4,\n\t4650: 0x7BD6,\n\t4651: 0x7BD7,\n\t4652: 0x7BD9,\n\t4653: 0x7BDA,\n\t4654: 0x7BDB,\n\t4655: 0x7BE8,\n\t4656: 0x7BEA,\n\t4657: 0x7BF2,\n\t4658: 0x7BF4,\n\t4659: 0x7BF5,\n\t4660: 0x7BF8,\n\t4661: 0x7BF9,\n\t4662: 0x7BFA,\n\t4663: 0x7BFC,\n\t4664: 0x7BFE,\n\t4665: 0x7C01,\n\t4666: 0x7C02,\n\t4667: 0x7C03,\n\t4668: 0x7C04,\n\t4669: 0x7C06,\n\t4670: 0x7C09,\n\t4671: 0x7C0B,\n\t4672: 0x7C0C,\n\t4673: 0x7C0E,\n\t4674: 0x7C0F,\n\t4675: 0x7C19,\n\t4676: 0x7C1B,\n\t4677: 0x7C20,\n\t4678: 0x7C25,\n\t4679: 0x7C26,\n\t4680: 0x7C28,\n\t4681: 0x7C2C,\n\t4682: 0x7C31,\n\t4683: 0x7C33,\n\t4684: 0x7C34,\n\t4685: 0x7C36,\n\t4686: 0x7C39,\n\t4687: 0x7C3A,\n\t4688: 0x7C46,\n\t4689: 0x7C4A,\n\t4690: 0x7C55,\n\t4691: 0x7C51,\n\t4692: 0x7C52,\n\t4693: 0x7C53,\n\t4694: 0x7C59,\n\t4695: 0x7C5A,\n\t4696: 0x7C5B,\n\t4697: 0x7C5C,\n\t4698: 0x7C5D,\n\t4699: 0x7C5E,\n\t4700: 0x7C61,\n\t4701: 0x7C63,\n\t4702: 0x7C67,\n\t4703: 0x7C69,\n\t4704: 0x7C6D,\n\t4705: 0x7C6E,\n\t4706: 0x7C70,\n\t4707: 0x7C72,\n\t4708: 0x7C79,\n\t4709: 0x7C7C,\n\t4710: 0x7C7D,\n\t4711: 0x7C86,\n\t4712: 0x7C87,\n\t4713: 0x7C8F,\n\t4714: 0x7C94,\n\t4715: 0x7C9E,\n\t4716: 0x7CA0,\n\t4717: 0x7CA6,\n\t4718: 0x7CB0,\n\t4719: 0x7CB6,\n\t4720: 0x7CB7,\n\t4721: 0x7CBA,\n\t4722: 0x7CBB,\n\t4723: 0x7CBC,\n\t4724: 0x7CBF,\n\t4725: 0x7CC4,\n\t4726: 0x7CC7,\n\t4727: 0x7CC8,\n\t4728: 0x7CC9,\n\t4729: 0x7CCD,\n\t4730: 0x7CCF,\n\t4731: 0x7CD3,\n\t4732: 0x7CD4,\n\t4733: 0x7CD5,\n\t4734: 0x7CD7,\n\t4735: 0x7CD9,\n\t4736: 0x7CDA,\n\t4737: 0x7CDD,\n\t4738: 0x7CE6,\n\t4739: 0x7CE9,\n\t4740: 0x7CEB,\n\t4741: 0x7CF5,\n\t4742: 0x7D03,\n\t4743: 0x7D07,\n\t4744: 0x7D08,\n\t4745: 0x7D09,\n\t4746: 0x7D0F,\n\t4747: 0x7D11,\n\t4748: 0x7D12,\n\t4749: 0x7D13,\n\t4750: 0x7D16,\n\t4751: 0x7D1D,\n\t4752: 0x7D1E,\n\t4753: 0x7D23,\n\t4754: 0x7D26,\n\t4755: 0x7D2A,\n\t4756: 0x7D2D,\n\t4757: 0x7D31,\n\t4758: 0x7D3C,\n\t4759: 0x7D3D,\n\t4760: 0x7D3E,\n\t4761: 0x7D40,\n\t4762: 0x7D41,\n\t4763: 0x7D47,\n\t4764: 0x7D48,\n\t4765: 0x7D4D,\n\t4766: 0x7D51,\n\t4767: 0x7D53,\n\t4768: 0x7D57,\n\t4769: 0x7D59,\n\t4770: 0x7D5A,\n\t4771: 0x7D5C,\n\t4772: 0x7D5D,\n\t4773: 0x7D65,\n\t4774: 0x7D67,\n\t4775: 0x7D6A,\n\t4776: 0x7D70,\n\t4777: 0x7D78,\n\t4778: 0x7D7A,\n\t4779: 0x7D7B,\n\t4780: 0x7D7F,\n\t4781: 0x7D81,\n\t4782: 0x7D82,\n\t4783: 0x7D83,\n\t4784: 0x7D85,\n\t4785: 0x7D86,\n\t4786: 0x7D88,\n\t4787: 0x7D8B,\n\t4788: 0x7D8C,\n\t4789: 0x7D8D,\n\t4790: 0x7D91,\n\t4791: 0x7D96,\n\t4792: 0x7D97,\n\t4793: 0x7D9D,\n\t4794: 0x7D9E,\n\t4795: 0x7DA6,\n\t4796: 0x7DA7,\n\t4797: 0x7DAA,\n\t4798: 0x7DB3,\n\t4799: 0x7DB6,\n\t4800: 0x7DB7,\n\t4801: 0x7DB9,\n\t4802: 0x7DC2,\n\t4803: 0x7DC3,\n\t4804: 0x7DC4,\n\t4805: 0x7DC5,\n\t4806: 0x7DC6,\n\t4807: 0x7DCC,\n\t4808: 0x7DCD,\n\t4809: 0x7DCE,\n\t4810: 0x7DD7,\n\t4811: 0x7DD9,\n\t4812: 0x7E00,\n\t4813: 0x7DE2,\n\t4814: 0x7DE5,\n\t4815: 0x7DE6,\n\t4816: 0x7DEA,\n\t4817: 0x7DEB,\n\t4818: 0x7DED,\n\t4819: 0x7DF1,\n\t4820: 0x7DF5,\n\t4821: 0x7DF6,\n\t4822: 0x7DF9,\n\t4823: 0x7DFA,\n\t4824: 0x7E08,\n\t4825: 0x7E10,\n\t4826: 0x7E11,\n\t4827: 0x7E15,\n\t4828: 0x7E17,\n\t4829: 0x7E1C,\n\t4830: 0x7E1D,\n\t4831: 0x7E20,\n\t4832: 0x7E27,\n\t4833: 0x7E28,\n\t4834: 0x7E2C,\n\t4835: 0x7E2D,\n\t4836: 0x7E2F,\n\t4837: 0x7E33,\n\t4838: 0x7E36,\n\t4839: 0x7E3F,\n\t4840: 0x7E44,\n\t4841: 0x7E45,\n\t4842: 0x7E47,\n\t4843: 0x7E4E,\n\t4844: 0x7E50,\n\t4845: 0x7E52,\n\t4846: 0x7E58,\n\t4847: 0x7E5F,\n\t4848: 0x7E61,\n\t4849: 0x7E62,\n\t4850: 0x7E65,\n\t4851: 0x7E6B,\n\t4852: 0x7E6E,\n\t4853: 0x7E6F,\n\t4854: 0x7E73,\n\t4855: 0x7E78,\n\t4856: 0x7E7E,\n\t4857: 0x7E81,\n\t4858: 0x7E86,\n\t4859: 0x7E87,\n\t4860: 0x7E8A,\n\t4861: 0x7E8D,\n\t4862: 0x7E91,\n\t4863: 0x7E95,\n\t4864: 0x7E98,\n\t4865: 0x7E9A,\n\t4866: 0x7E9D,\n\t4867: 0x7E9E,\n\t4868: 0x7F3C,\n\t4869: 0x7F3B,\n\t4870: 0x7F3D,\n\t4871: 0x7F3E,\n\t4872: 0x7F3F,\n\t4873: 0x7F43,\n\t4874: 0x7F44,\n\t4875: 0x7F47,\n\t4876: 0x7F4F,\n\t4877: 0x7F52,\n\t4878: 0x7F53,\n\t4879: 0x7F5B,\n\t4880: 0x7F5C,\n\t4881: 0x7F5D,\n\t4882: 0x7F61,\n\t4883: 0x7F63,\n\t4884: 0x7F64,\n\t4885: 0x7F65,\n\t4886: 0x7F66,\n\t4887: 0x7F6D,\n\t4888: 0x7F71,\n\t4889: 0x7F7D,\n\t4890: 0x7F7E,\n\t4891: 0x7F7F,\n\t4892: 0x7F80,\n\t4893: 0x7F8B,\n\t4894: 0x7F8D,\n\t4895: 0x7F8F,\n\t4896: 0x7F90,\n\t4897: 0x7F91,\n\t4898: 0x7F96,\n\t4899: 0x7F97,\n\t4900: 0x7F9C,\n\t4901: 0x7FA1,\n\t4902: 0x7FA2,\n\t4903: 0x7FA6,\n\t4904: 0x7FAA,\n\t4905: 0x7FAD,\n\t4906: 0x7FB4,\n\t4907: 0x7FBC,\n\t4908: 0x7FBF,\n\t4909: 0x7FC0,\n\t4910: 0x7FC3,\n\t4911: 0x7FC8,\n\t4912: 0x7FCE,\n\t4913: 0x7FCF,\n\t4914: 0x7FDB,\n\t4915: 0x7FDF,\n\t4916: 0x7FE3,\n\t4917: 0x7FE5,\n\t4918: 0x7FE8,\n\t4919: 0x7FEC,\n\t4920: 0x7FEE,\n\t4921: 0x7FEF,\n\t4922: 0x7FF2,\n\t4923: 0x7FFA,\n\t4924: 0x7FFD,\n\t4925: 0x7FFE,\n\t4926: 0x7FFF,\n\t4927: 0x8007,\n\t4928: 0x8008,\n\t4929: 0x800A,\n\t4930: 0x800D,\n\t4931: 0x800E,\n\t4932: 0x800F,\n\t4933: 0x8011,\n\t4934: 0x8013,\n\t4935: 0x8014,\n\t4936: 0x8016,\n\t4937: 0x801D,\n\t4938: 0x801E,\n\t4939: 0x801F,\n\t4940: 0x8020,\n\t4941: 0x8024,\n\t4942: 0x8026,\n\t4943: 0x802C,\n\t4944: 0x802E,\n\t4945: 0x8030,\n\t4946: 0x8034,\n\t4947: 0x8035,\n\t4948: 0x8037,\n\t4949: 0x8039,\n\t4950: 0x803A,\n\t4951: 0x803C,\n\t4952: 0x803E,\n\t4953: 0x8040,\n\t4954: 0x8044,\n\t4955: 0x8060,\n\t4956: 0x8064,\n\t4957: 0x8066,\n\t4958: 0x806D,\n\t4959: 0x8071,\n\t4960: 0x8075,\n\t4961: 0x8081,\n\t4962: 0x8088,\n\t4963: 0x808E,\n\t4964: 0x809C,\n\t4965: 0x809E,\n\t4966: 0x80A6,\n\t4967: 0x80A7,\n\t4968: 0x80AB,\n\t4969: 0x80B8,\n\t4970: 0x80B9,\n\t4971: 0x80C8,\n\t4972: 0x80CD,\n\t4973: 0x80CF,\n\t4974: 0x80D2,\n\t4975: 0x80D4,\n\t4976: 0x80D5,\n\t4977: 0x80D7,\n\t4978: 0x80D8,\n\t4979: 0x80E0,\n\t4980: 0x80ED,\n\t4981: 0x80EE,\n\t4982: 0x80F0,\n\t4983: 0x80F2,\n\t4984: 0x80F3,\n\t4985: 0x80F6,\n\t4986: 0x80F9,\n\t4987: 0x80FA,\n\t4988: 0x80FE,\n\t4989: 0x8103,\n\t4990: 0x810B,\n\t4991: 0x8116,\n\t4992: 0x8117,\n\t4993: 0x8118,\n\t4994: 0x811C,\n\t4995: 0x811E,\n\t4996: 0x8120,\n\t4997: 0x8124,\n\t4998: 0x8127,\n\t4999: 0x812C,\n\t5000: 0x8130,\n\t5001: 0x8135,\n\t5002: 0x813A,\n\t5003: 0x813C,\n\t5004: 0x8145,\n\t5005: 0x8147,\n\t5006: 0x814A,\n\t5007: 0x814C,\n\t5008: 0x8152,\n\t5009: 0x8157,\n\t5010: 0x8160,\n\t5011: 0x8161,\n\t5012: 0x8167,\n\t5013: 0x8168,\n\t5014: 0x8169,\n\t5015: 0x816D,\n\t5016: 0x816F,\n\t5017: 0x8177,\n\t5018: 0x8181,\n\t5019: 0x8190,\n\t5020: 0x8184,\n\t5021: 0x8185,\n\t5022: 0x8186,\n\t5023: 0x818B,\n\t5024: 0x818E,\n\t5025: 0x8196,\n\t5026: 0x8198,\n\t5027: 0x819B,\n\t5028: 0x819E,\n\t5029: 0x81A2,\n\t5030: 0x81AE,\n\t5031: 0x81B2,\n\t5032: 0x81B4,\n\t5033: 0x81BB,\n\t5034: 0x81CB,\n\t5035: 0x81C3,\n\t5036: 0x81C5,\n\t5037: 0x81CA,\n\t5038: 0x81CE,\n\t5039: 0x81CF,\n\t5040: 0x81D5,\n\t5041: 0x81D7,\n\t5042: 0x81DB,\n\t5043: 0x81DD,\n\t5044: 0x81DE,\n\t5045: 0x81E1,\n\t5046: 0x81E4,\n\t5047: 0x81EB,\n\t5048: 0x81EC,\n\t5049: 0x81F0,\n\t5050: 0x81F1,\n\t5051: 0x81F2,\n\t5052: 0x81F5,\n\t5053: 0x81F6,\n\t5054: 0x81F8,\n\t5055: 0x81F9,\n\t5056: 0x81FD,\n\t5057: 0x81FF,\n\t5058: 0x8200,\n\t5059: 0x8203,\n\t5060: 0x820F,\n\t5061: 0x8213,\n\t5062: 0x8214,\n\t5063: 0x8219,\n\t5064: 0x821A,\n\t5065: 0x821D,\n\t5066: 0x8221,\n\t5067: 0x8222,\n\t5068: 0x8228,\n\t5069: 0x8232,\n\t5070: 0x8234,\n\t5071: 0x823A,\n\t5072: 0x8243,\n\t5073: 0x8244,\n\t5074: 0x8245,\n\t5075: 0x8246,\n\t5076: 0x824B,\n\t5077: 0x824E,\n\t5078: 0x824F,\n\t5079: 0x8251,\n\t5080: 0x8256,\n\t5081: 0x825C,\n\t5082: 0x8260,\n\t5083: 0x8263,\n\t5084: 0x8267,\n\t5085: 0x826D,\n\t5086: 0x8274,\n\t5087: 0x827B,\n\t5088: 0x827D,\n\t5089: 0x827F,\n\t5090: 0x8280,\n\t5091: 0x8281,\n\t5092: 0x8283,\n\t5093: 0x8284,\n\t5094: 0x8287,\n\t5095: 0x8289,\n\t5096: 0x828A,\n\t5097: 0x828E,\n\t5098: 0x8291,\n\t5099: 0x8294,\n\t5100: 0x8296,\n\t5101: 0x8298,\n\t5102: 0x829A,\n\t5103: 0x829B,\n\t5104: 0x82A0,\n\t5105: 0x82A1,\n\t5106: 0x82A3,\n\t5107: 0x82A4,\n\t5108: 0x82A7,\n\t5109: 0x82A8,\n\t5110: 0x82A9,\n\t5111: 0x82AA,\n\t5112: 0x82AE,\n\t5113: 0x82B0,\n\t5114: 0x82B2,\n\t5115: 0x82B4,\n\t5116: 0x82B7,\n\t5117: 0x82BA,\n\t5118: 0x82BC,\n\t5119: 0x82BE,\n\t5120: 0x82BF,\n\t5121: 0x82C6,\n\t5122: 0x82D0,\n\t5123: 0x82D5,\n\t5124: 0x82DA,\n\t5125: 0x82E0,\n\t5126: 0x82E2,\n\t5127: 0x82E4,\n\t5128: 0x82E8,\n\t5129: 0x82EA,\n\t5130: 0x82ED,\n\t5131: 0x82EF,\n\t5132: 0x82F6,\n\t5133: 0x82F7,\n\t5134: 0x82FD,\n\t5135: 0x82FE,\n\t5136: 0x8300,\n\t5137: 0x8301,\n\t5138: 0x8307,\n\t5139: 0x8308,\n\t5140: 0x830A,\n\t5141: 0x830B,\n\t5142: 0x8354,\n\t5143: 0x831B,\n\t5144: 0x831D,\n\t5145: 0x831E,\n\t5146: 0x831F,\n\t5147: 0x8321,\n\t5148: 0x8322,\n\t5149: 0x832C,\n\t5150: 0x832D,\n\t5151: 0x832E,\n\t5152: 0x8330,\n\t5153: 0x8333,\n\t5154: 0x8337,\n\t5155: 0x833A,\n\t5156: 0x833C,\n\t5157: 0x833D,\n\t5158: 0x8342,\n\t5159: 0x8343,\n\t5160: 0x8344,\n\t5161: 0x8347,\n\t5162: 0x834D,\n\t5163: 0x834E,\n\t5164: 0x8351,\n\t5165: 0x8355,\n\t5166: 0x8356,\n\t5167: 0x8357,\n\t5168: 0x8370,\n\t5169: 0x8378,\n\t5170: 0x837D,\n\t5171: 0x837F,\n\t5172: 0x8380,\n\t5173: 0x8382,\n\t5174: 0x8384,\n\t5175: 0x8386,\n\t5176: 0x838D,\n\t5177: 0x8392,\n\t5178: 0x8394,\n\t5179: 0x8395,\n\t5180: 0x8398,\n\t5181: 0x8399,\n\t5182: 0x839B,\n\t5183: 0x839C,\n\t5184: 0x839D,\n\t5185: 0x83A6,\n\t5186: 0x83A7,\n\t5187: 0x83A9,\n\t5188: 0x83AC,\n\t5189: 0x83BE,\n\t5190: 0x83BF,\n\t5191: 0x83C0,\n\t5192: 0x83C7,\n\t5193: 0x83C9,\n\t5194: 0x83CF,\n\t5195: 0x83D0,\n\t5196: 0x83D1,\n\t5197: 0x83D4,\n\t5198: 0x83DD,\n\t5199: 0x8353,\n\t5200: 0x83E8,\n\t5201: 0x83EA,\n\t5202: 0x83F6,\n\t5203: 0x83F8,\n\t5204: 0x83F9,\n\t5205: 0x83FC,\n\t5206: 0x8401,\n\t5207: 0x8406,\n\t5208: 0x840A,\n\t5209: 0x840F,\n\t5210: 0x8411,\n\t5211: 0x8415,\n\t5212: 0x8419,\n\t5213: 0x83AD,\n\t5214: 0x842F,\n\t5215: 0x8439,\n\t5216: 0x8445,\n\t5217: 0x8447,\n\t5218: 0x8448,\n\t5219: 0x844A,\n\t5220: 0x844D,\n\t5221: 0x844F,\n\t5222: 0x8451,\n\t5223: 0x8452,\n\t5224: 0x8456,\n\t5225: 0x8458,\n\t5226: 0x8459,\n\t5227: 0x845A,\n\t5228: 0x845C,\n\t5229: 0x8460,\n\t5230: 0x8464,\n\t5231: 0x8465,\n\t5232: 0x8467,\n\t5233: 0x846A,\n\t5234: 0x8470,\n\t5235: 0x8473,\n\t5236: 0x8474,\n\t5237: 0x8476,\n\t5238: 0x8478,\n\t5239: 0x847C,\n\t5240: 0x847D,\n\t5241: 0x8481,\n\t5242: 0x8485,\n\t5243: 0x8492,\n\t5244: 0x8493,\n\t5245: 0x8495,\n\t5246: 0x849E,\n\t5247: 0x84A6,\n\t5248: 0x84A8,\n\t5249: 0x84A9,\n\t5250: 0x84AA,\n\t5251: 0x84AF,\n\t5252: 0x84B1,\n\t5253: 0x84B4,\n\t5254: 0x84BA,\n\t5255: 0x84BD,\n\t5256: 0x84BE,\n\t5257: 0x84C0,\n\t5258: 0x84C2,\n\t5259: 0x84C7,\n\t5260: 0x84C8,\n\t5261: 0x84CC,\n\t5262: 0x84CF,\n\t5263: 0x84D3,\n\t5264: 0x84DC,\n\t5265: 0x84E7,\n\t5266: 0x84EA,\n\t5267: 0x84EF,\n\t5268: 0x84F0,\n\t5269: 0x84F1,\n\t5270: 0x84F2,\n\t5271: 0x84F7,\n\t5272: 0x8532,\n\t5273: 0x84FA,\n\t5274: 0x84FB,\n\t5275: 0x84FD,\n\t5276: 0x8502,\n\t5277: 0x8503,\n\t5278: 0x8507,\n\t5279: 0x850C,\n\t5280: 0x850E,\n\t5281: 0x8510,\n\t5282: 0x851C,\n\t5283: 0x851E,\n\t5284: 0x8522,\n\t5285: 0x8523,\n\t5286: 0x8524,\n\t5287: 0x8525,\n\t5288: 0x8527,\n\t5289: 0x852A,\n\t5290: 0x852B,\n\t5291: 0x852F,\n\t5292: 0x8533,\n\t5293: 0x8534,\n\t5294: 0x8536,\n\t5295: 0x853F,\n\t5296: 0x8546,\n\t5297: 0x854F,\n\t5298: 0x8550,\n\t5299: 0x8551,\n\t5300: 0x8552,\n\t5301: 0x8553,\n\t5302: 0x8556,\n\t5303: 0x8559,\n\t5304: 0x855C,\n\t5305: 0x855D,\n\t5306: 0x855E,\n\t5307: 0x855F,\n\t5308: 0x8560,\n\t5309: 0x8561,\n\t5310: 0x8562,\n\t5311: 0x8564,\n\t5312: 0x856B,\n\t5313: 0x856F,\n\t5314: 0x8579,\n\t5315: 0x857A,\n\t5316: 0x857B,\n\t5317: 0x857D,\n\t5318: 0x857F,\n\t5319: 0x8581,\n\t5320: 0x8585,\n\t5321: 0x8586,\n\t5322: 0x8589,\n\t5323: 0x858B,\n\t5324: 0x858C,\n\t5325: 0x858F,\n\t5326: 0x8593,\n\t5327: 0x8598,\n\t5328: 0x859D,\n\t5329: 0x859F,\n\t5330: 0x85A0,\n\t5331: 0x85A2,\n\t5332: 0x85A5,\n\t5333: 0x85A7,\n\t5334: 0x85B4,\n\t5335: 0x85B6,\n\t5336: 0x85B7,\n\t5337: 0x85B8,\n\t5338: 0x85BC,\n\t5339: 0x85BD,\n\t5340: 0x85BE,\n\t5341: 0x85BF,\n\t5342: 0x85C2,\n\t5343: 0x85C7,\n\t5344: 0x85CA,\n\t5345: 0x85CB,\n\t5346: 0x85CE,\n\t5347: 0x85AD,\n\t5348: 0x85D8,\n\t5349: 0x85DA,\n\t5350: 0x85DF,\n\t5351: 0x85E0,\n\t5352: 0x85E6,\n\t5353: 0x85E8,\n\t5354: 0x85ED,\n\t5355: 0x85F3,\n\t5356: 0x85F6,\n\t5357: 0x85FC,\n\t5358: 0x85FF,\n\t5359: 0x8600,\n\t5360: 0x8604,\n\t5361: 0x8605,\n\t5362: 0x860D,\n\t5363: 0x860E,\n\t5364: 0x8610,\n\t5365: 0x8611,\n\t5366: 0x8612,\n\t5367: 0x8618,\n\t5368: 0x8619,\n\t5369: 0x861B,\n\t5370: 0x861E,\n\t5371: 0x8621,\n\t5372: 0x8627,\n\t5373: 0x8629,\n\t5374: 0x8636,\n\t5375: 0x8638,\n\t5376: 0x863A,\n\t5377: 0x863C,\n\t5378: 0x863D,\n\t5379: 0x8640,\n\t5380: 0x8642,\n\t5381: 0x8646,\n\t5382: 0x8652,\n\t5383: 0x8653,\n\t5384: 0x8656,\n\t5385: 0x8657,\n\t5386: 0x8658,\n\t5387: 0x8659,\n\t5388: 0x865D,\n\t5389: 0x8660,\n\t5390: 0x8661,\n\t5391: 0x8662,\n\t5392: 0x8663,\n\t5393: 0x8664,\n\t5394: 0x8669,\n\t5395: 0x866C,\n\t5396: 0x866F,\n\t5397: 0x8675,\n\t5398: 0x8676,\n\t5399: 0x8677,\n\t5400: 0x867A,\n\t5401: 0x868D,\n\t5402: 0x8691,\n\t5403: 0x8696,\n\t5404: 0x8698,\n\t5405: 0x869A,\n\t5406: 0x869C,\n\t5407: 0x86A1,\n\t5408: 0x86A6,\n\t5409: 0x86A7,\n\t5410: 0x86A8,\n\t5411: 0x86AD,\n\t5412: 0x86B1,\n\t5413: 0x86B3,\n\t5414: 0x86B4,\n\t5415: 0x86B5,\n\t5416: 0x86B7,\n\t5417: 0x86B8,\n\t5418: 0x86B9,\n\t5419: 0x86BF,\n\t5420: 0x86C0,\n\t5421: 0x86C1,\n\t5422: 0x86C3,\n\t5423: 0x86C5,\n\t5424: 0x86D1,\n\t5425: 0x86D2,\n\t5426: 0x86D5,\n\t5427: 0x86D7,\n\t5428: 0x86DA,\n\t5429: 0x86DC,\n\t5430: 0x86E0,\n\t5431: 0x86E3,\n\t5432: 0x86E5,\n\t5433: 0x86E7,\n\t5434: 0x8688,\n\t5435: 0x86FA,\n\t5436: 0x86FC,\n\t5437: 0x86FD,\n\t5438: 0x8704,\n\t5439: 0x8705,\n\t5440: 0x8707,\n\t5441: 0x870B,\n\t5442: 0x870E,\n\t5443: 0x870F,\n\t5444: 0x8710,\n\t5445: 0x8713,\n\t5446: 0x8714,\n\t5447: 0x8719,\n\t5448: 0x871E,\n\t5449: 0x871F,\n\t5450: 0x8721,\n\t5451: 0x8723,\n\t5452: 0x8728,\n\t5453: 0x872E,\n\t5454: 0x872F,\n\t5455: 0x8731,\n\t5456: 0x8732,\n\t5457: 0x8739,\n\t5458: 0x873A,\n\t5459: 0x873C,\n\t5460: 0x873D,\n\t5461: 0x873E,\n\t5462: 0x8740,\n\t5463: 0x8743,\n\t5464: 0x8745,\n\t5465: 0x874D,\n\t5466: 0x8758,\n\t5467: 0x875D,\n\t5468: 0x8761,\n\t5469: 0x8764,\n\t5470: 0x8765,\n\t5471: 0x876F,\n\t5472: 0x8771,\n\t5473: 0x8772,\n\t5474: 0x877B,\n\t5475: 0x8783,\n\t5476: 0x8784,\n\t5477: 0x8785,\n\t5478: 0x8786,\n\t5479: 0x8787,\n\t5480: 0x8788,\n\t5481: 0x8789,\n\t5482: 0x878B,\n\t5483: 0x878C,\n\t5484: 0x8790,\n\t5485: 0x8793,\n\t5486: 0x8795,\n\t5487: 0x8797,\n\t5488: 0x8798,\n\t5489: 0x8799,\n\t5490: 0x879E,\n\t5491: 0x87A0,\n\t5492: 0x87A3,\n\t5493: 0x87A7,\n\t5494: 0x87AC,\n\t5495: 0x87AD,\n\t5496: 0x87AE,\n\t5497: 0x87B1,\n\t5498: 0x87B5,\n\t5499: 0x87BE,\n\t5500: 0x87BF,\n\t5501: 0x87C1,\n\t5502: 0x87C8,\n\t5503: 0x87C9,\n\t5504: 0x87CA,\n\t5505: 0x87CE,\n\t5506: 0x87D5,\n\t5507: 0x87D6,\n\t5508: 0x87D9,\n\t5509: 0x87DA,\n\t5510: 0x87DC,\n\t5511: 0x87DF,\n\t5512: 0x87E2,\n\t5513: 0x87E3,\n\t5514: 0x87E4,\n\t5515: 0x87EA,\n\t5516: 0x87EB,\n\t5517: 0x87ED,\n\t5518: 0x87F1,\n\t5519: 0x87F3,\n\t5520: 0x87F8,\n\t5521: 0x87FA,\n\t5522: 0x87FF,\n\t5523: 0x8801,\n\t5524: 0x8803,\n\t5525: 0x8806,\n\t5526: 0x8809,\n\t5527: 0x880A,\n\t5528: 0x880B,\n\t5529: 0x8810,\n\t5530: 0x8819,\n\t5531: 0x8812,\n\t5532: 0x8813,\n\t5533: 0x8814,\n\t5534: 0x8818,\n\t5535: 0x881A,\n\t5536: 0x881B,\n\t5537: 0x881C,\n\t5538: 0x881E,\n\t5539: 0x881F,\n\t5540: 0x8828,\n\t5541: 0x882D,\n\t5542: 0x882E,\n\t5543: 0x8830,\n\t5544: 0x8832,\n\t5545: 0x8835,\n\t5546: 0x883A,\n\t5547: 0x883C,\n\t5548: 0x8841,\n\t5549: 0x8843,\n\t5550: 0x8845,\n\t5551: 0x8848,\n\t5552: 0x8849,\n\t5553: 0x884A,\n\t5554: 0x884B,\n\t5555: 0x884E,\n\t5556: 0x8851,\n\t5557: 0x8855,\n\t5558: 0x8856,\n\t5559: 0x8858,\n\t5560: 0x885A,\n\t5561: 0x885C,\n\t5562: 0x885F,\n\t5563: 0x8860,\n\t5564: 0x8864,\n\t5565: 0x8869,\n\t5566: 0x8871,\n\t5567: 0x8879,\n\t5568: 0x887B,\n\t5569: 0x8880,\n\t5570: 0x8898,\n\t5571: 0x889A,\n\t5572: 0x889B,\n\t5573: 0x889C,\n\t5574: 0x889F,\n\t5575: 0x88A0,\n\t5576: 0x88A8,\n\t5577: 0x88AA,\n\t5578: 0x88BA,\n\t5579: 0x88BD,\n\t5580: 0x88BE,\n\t5581: 0x88C0,\n\t5582: 0x88CA,\n\t5583: 0x88CB,\n\t5584: 0x88CC,\n\t5585: 0x88CD,\n\t5586: 0x88CE,\n\t5587: 0x88D1,\n\t5588: 0x88D2,\n\t5589: 0x88D3,\n\t5590: 0x88DB,\n\t5591: 0x88DE,\n\t5592: 0x88E7,\n\t5593: 0x88EF,\n\t5594: 0x88F0,\n\t5595: 0x88F1,\n\t5596: 0x88F5,\n\t5597: 0x88F7,\n\t5598: 0x8901,\n\t5599: 0x8906,\n\t5600: 0x890D,\n\t5601: 0x890E,\n\t5602: 0x890F,\n\t5603: 0x8915,\n\t5604: 0x8916,\n\t5605: 0x8918,\n\t5606: 0x8919,\n\t5607: 0x891A,\n\t5608: 0x891C,\n\t5609: 0x8920,\n\t5610: 0x8926,\n\t5611: 0x8927,\n\t5612: 0x8928,\n\t5613: 0x8930,\n\t5614: 0x8931,\n\t5615: 0x8932,\n\t5616: 0x8935,\n\t5617: 0x8939,\n\t5618: 0x893A,\n\t5619: 0x893E,\n\t5620: 0x8940,\n\t5621: 0x8942,\n\t5622: 0x8945,\n\t5623: 0x8946,\n\t5624: 0x8949,\n\t5625: 0x894F,\n\t5626: 0x8952,\n\t5627: 0x8957,\n\t5628: 0x895A,\n\t5629: 0x895B,\n\t5630: 0x895C,\n\t5631: 0x8961,\n\t5632: 0x8962,\n\t5633: 0x8963,\n\t5634: 0x896B,\n\t5635: 0x896E,\n\t5636: 0x8970,\n\t5637: 0x8973,\n\t5638: 0x8975,\n\t5639: 0x897A,\n\t5640: 0x897B,\n\t5641: 0x897C,\n\t5642: 0x897D,\n\t5643: 0x8989,\n\t5644: 0x898D,\n\t5645: 0x8990,\n\t5646: 0x8994,\n\t5647: 0x8995,\n\t5648: 0x899B,\n\t5649: 0x899C,\n\t5650: 0x899F,\n\t5651: 0x89A0,\n\t5652: 0x89A5,\n\t5653: 0x89B0,\n\t5654: 0x89B4,\n\t5655: 0x89B5,\n\t5656: 0x89B6,\n\t5657: 0x89B7,\n\t5658: 0x89BC,\n\t5659: 0x89D4,\n\t5660: 0x89D5,\n\t5661: 0x89D6,\n\t5662: 0x89D7,\n\t5663: 0x89D8,\n\t5664: 0x89E5,\n\t5665: 0x89E9,\n\t5666: 0x89EB,\n\t5667: 0x89ED,\n\t5668: 0x89F1,\n\t5669: 0x89F3,\n\t5670: 0x89F6,\n\t5671: 0x89F9,\n\t5672: 0x89FD,\n\t5673: 0x89FF,\n\t5674: 0x8A04,\n\t5675: 0x8A05,\n\t5676: 0x8A07,\n\t5677: 0x8A0F,\n\t5678: 0x8A11,\n\t5679: 0x8A12,\n\t5680: 0x8A14,\n\t5681: 0x8A15,\n\t5682: 0x8A1E,\n\t5683: 0x8A20,\n\t5684: 0x8A22,\n\t5685: 0x8A24,\n\t5686: 0x8A26,\n\t5687: 0x8A2B,\n\t5688: 0x8A2C,\n\t5689: 0x8A2F,\n\t5690: 0x8A35,\n\t5691: 0x8A37,\n\t5692: 0x8A3D,\n\t5693: 0x8A3E,\n\t5694: 0x8A40,\n\t5695: 0x8A43,\n\t5696: 0x8A45,\n\t5697: 0x8A47,\n\t5698: 0x8A49,\n\t5699: 0x8A4D,\n\t5700: 0x8A4E,\n\t5701: 0x8A53,\n\t5702: 0x8A56,\n\t5703: 0x8A57,\n\t5704: 0x8A58,\n\t5705: 0x8A5C,\n\t5706: 0x8A5D,\n\t5707: 0x8A61,\n\t5708: 0x8A65,\n\t5709: 0x8A67,\n\t5710: 0x8A75,\n\t5711: 0x8A76,\n\t5712: 0x8A77,\n\t5713: 0x8A79,\n\t5714: 0x8A7A,\n\t5715: 0x8A7B,\n\t5716: 0x8A7E,\n\t5717: 0x8A7F,\n\t5718: 0x8A80,\n\t5719: 0x8A83,\n\t5720: 0x8A86,\n\t5721: 0x8A8B,\n\t5722: 0x8A8F,\n\t5723: 0x8A90,\n\t5724: 0x8A92,\n\t5725: 0x8A96,\n\t5726: 0x8A97,\n\t5727: 0x8A99,\n\t5728: 0x8A9F,\n\t5729: 0x8AA7,\n\t5730: 0x8AA9,\n\t5731: 0x8AAE,\n\t5732: 0x8AAF,\n\t5733: 0x8AB3,\n\t5734: 0x8AB6,\n\t5735: 0x8AB7,\n\t5736: 0x8ABB,\n\t5737: 0x8ABE,\n\t5738: 0x8AC3,\n\t5739: 0x8AC6,\n\t5740: 0x8AC8,\n\t5741: 0x8AC9,\n\t5742: 0x8ACA,\n\t5743: 0x8AD1,\n\t5744: 0x8AD3,\n\t5745: 0x8AD4,\n\t5746: 0x8AD5,\n\t5747: 0x8AD7,\n\t5748: 0x8ADD,\n\t5749: 0x8ADF,\n\t5750: 0x8AEC,\n\t5751: 0x8AF0,\n\t5752: 0x8AF4,\n\t5753: 0x8AF5,\n\t5754: 0x8AF6,\n\t5755: 0x8AFC,\n\t5756: 0x8AFF,\n\t5757: 0x8B05,\n\t5758: 0x8B06,\n\t5759: 0x8B0B,\n\t5760: 0x8B11,\n\t5761: 0x8B1C,\n\t5762: 0x8B1E,\n\t5763: 0x8B1F,\n\t5764: 0x8B0A,\n\t5765: 0x8B2D,\n\t5766: 0x8B30,\n\t5767: 0x8B37,\n\t5768: 0x8B3C,\n\t5769: 0x8B42,\n\t5770: 0x8B43,\n\t5771: 0x8B44,\n\t5772: 0x8B45,\n\t5773: 0x8B46,\n\t5774: 0x8B48,\n\t5775: 0x8B52,\n\t5776: 0x8B53,\n\t5777: 0x8B54,\n\t5778: 0x8B59,\n\t5779: 0x8B4D,\n\t5780: 0x8B5E,\n\t5781: 0x8B63,\n\t5782: 0x8B6D,\n\t5783: 0x8B76,\n\t5784: 0x8B78,\n\t5785: 0x8B79,\n\t5786: 0x8B7C,\n\t5787: 0x8B7E,\n\t5788: 0x8B81,\n\t5789: 0x8B84,\n\t5790: 0x8B85,\n\t5791: 0x8B8B,\n\t5792: 0x8B8D,\n\t5793: 0x8B8F,\n\t5794: 0x8B94,\n\t5795: 0x8B95,\n\t5796: 0x8B9C,\n\t5797: 0x8B9E,\n\t5798: 0x8B9F,\n\t5799: 0x8C38,\n\t5800: 0x8C39,\n\t5801: 0x8C3D,\n\t5802: 0x8C3E,\n\t5803: 0x8C45,\n\t5804: 0x8C47,\n\t5805: 0x8C49,\n\t5806: 0x8C4B,\n\t5807: 0x8C4F,\n\t5808: 0x8C51,\n\t5809: 0x8C53,\n\t5810: 0x8C54,\n\t5811: 0x8C57,\n\t5812: 0x8C58,\n\t5813: 0x8C5B,\n\t5814: 0x8C5D,\n\t5815: 0x8C59,\n\t5816: 0x8C63,\n\t5817: 0x8C64,\n\t5818: 0x8C66,\n\t5819: 0x8C68,\n\t5820: 0x8C69,\n\t5821: 0x8C6D,\n\t5822: 0x8C73,\n\t5823: 0x8C75,\n\t5824: 0x8C76,\n\t5825: 0x8C7B,\n\t5826: 0x8C7E,\n\t5827: 0x8C86,\n\t5828: 0x8C87,\n\t5829: 0x8C8B,\n\t5830: 0x8C90,\n\t5831: 0x8C92,\n\t5832: 0x8C93,\n\t5833: 0x8C99,\n\t5834: 0x8C9B,\n\t5835: 0x8C9C,\n\t5836: 0x8CA4,\n\t5837: 0x8CB9,\n\t5838: 0x8CBA,\n\t5839: 0x8CC5,\n\t5840: 0x8CC6,\n\t5841: 0x8CC9,\n\t5842: 0x8CCB,\n\t5843: 0x8CCF,\n\t5844: 0x8CD6,\n\t5845: 0x8CD5,\n\t5846: 0x8CD9,\n\t5847: 0x8CDD,\n\t5848: 0x8CE1,\n\t5849: 0x8CE8,\n\t5850: 0x8CEC,\n\t5851: 0x8CEF,\n\t5852: 0x8CF0,\n\t5853: 0x8CF2,\n\t5854: 0x8CF5,\n\t5855: 0x8CF7,\n\t5856: 0x8CF8,\n\t5857: 0x8CFE,\n\t5858: 0x8CFF,\n\t5859: 0x8D01,\n\t5860: 0x8D03,\n\t5861: 0x8D09,\n\t5862: 0x8D12,\n\t5863: 0x8D17,\n\t5864: 0x8D1B,\n\t5865: 0x8D65,\n\t5866: 0x8D69,\n\t5867: 0x8D6C,\n\t5868: 0x8D6E,\n\t5869: 0x8D7F,\n\t5870: 0x8D82,\n\t5871: 0x8D84,\n\t5872: 0x8D88,\n\t5873: 0x8D8D,\n\t5874: 0x8D90,\n\t5875: 0x8D91,\n\t5876: 0x8D95,\n\t5877: 0x8D9E,\n\t5878: 0x8D9F,\n\t5879: 0x8DA0,\n\t5880: 0x8DA6,\n\t5881: 0x8DAB,\n\t5882: 0x8DAC,\n\t5883: 0x8DAF,\n\t5884: 0x8DB2,\n\t5885: 0x8DB5,\n\t5886: 0x8DB7,\n\t5887: 0x8DB9,\n\t5888: 0x8DBB,\n\t5889: 0x8DC0,\n\t5890: 0x8DC5,\n\t5891: 0x8DC6,\n\t5892: 0x8DC7,\n\t5893: 0x8DC8,\n\t5894: 0x8DCA,\n\t5895: 0x8DCE,\n\t5896: 0x8DD1,\n\t5897: 0x8DD4,\n\t5898: 0x8DD5,\n\t5899: 0x8DD7,\n\t5900: 0x8DD9,\n\t5901: 0x8DE4,\n\t5902: 0x8DE5,\n\t5903: 0x8DE7,\n\t5904: 0x8DEC,\n\t5905: 0x8DF0,\n\t5906: 0x8DBC,\n\t5907: 0x8DF1,\n\t5908: 0x8DF2,\n\t5909: 0x8DF4,\n\t5910: 0x8DFD,\n\t5911: 0x8E01,\n\t5912: 0x8E04,\n\t5913: 0x8E05,\n\t5914: 0x8E06,\n\t5915: 0x8E0B,\n\t5916: 0x8E11,\n\t5917: 0x8E14,\n\t5918: 0x8E16,\n\t5919: 0x8E20,\n\t5920: 0x8E21,\n\t5921: 0x8E22,\n\t5922: 0x8E23,\n\t5923: 0x8E26,\n\t5924: 0x8E27,\n\t5925: 0x8E31,\n\t5926: 0x8E33,\n\t5927: 0x8E36,\n\t5928: 0x8E37,\n\t5929: 0x8E38,\n\t5930: 0x8E39,\n\t5931: 0x8E3D,\n\t5932: 0x8E40,\n\t5933: 0x8E41,\n\t5934: 0x8E4B,\n\t5935: 0x8E4D,\n\t5936: 0x8E4E,\n\t5937: 0x8E4F,\n\t5938: 0x8E54,\n\t5939: 0x8E5B,\n\t5940: 0x8E5C,\n\t5941: 0x8E5D,\n\t5942: 0x8E5E,\n\t5943: 0x8E61,\n\t5944: 0x8E62,\n\t5945: 0x8E69,\n\t5946: 0x8E6C,\n\t5947: 0x8E6D,\n\t5948: 0x8E6F,\n\t5949: 0x8E70,\n\t5950: 0x8E71,\n\t5951: 0x8E79,\n\t5952: 0x8E7A,\n\t5953: 0x8E7B,\n\t5954: 0x8E82,\n\t5955: 0x8E83,\n\t5956: 0x8E89,\n\t5957: 0x8E90,\n\t5958: 0x8E92,\n\t5959: 0x8E95,\n\t5960: 0x8E9A,\n\t5961: 0x8E9B,\n\t5962: 0x8E9D,\n\t5963: 0x8E9E,\n\t5964: 0x8EA2,\n\t5965: 0x8EA7,\n\t5966: 0x8EA9,\n\t5967: 0x8EAD,\n\t5968: 0x8EAE,\n\t5969: 0x8EB3,\n\t5970: 0x8EB5,\n\t5971: 0x8EBA,\n\t5972: 0x8EBB,\n\t5973: 0x8EC0,\n\t5974: 0x8EC1,\n\t5975: 0x8EC3,\n\t5976: 0x8EC4,\n\t5977: 0x8EC7,\n\t5978: 0x8ECF,\n\t5979: 0x8ED1,\n\t5980: 0x8ED4,\n\t5981: 0x8EDC,\n\t5982: 0x8EE8,\n\t5983: 0x8EEE,\n\t5984: 0x8EF0,\n\t5985: 0x8EF1,\n\t5986: 0x8EF7,\n\t5987: 0x8EF9,\n\t5988: 0x8EFA,\n\t5989: 0x8EED,\n\t5990: 0x8F00,\n\t5991: 0x8F02,\n\t5992: 0x8F07,\n\t5993: 0x8F08,\n\t5994: 0x8F0F,\n\t5995: 0x8F10,\n\t5996: 0x8F16,\n\t5997: 0x8F17,\n\t5998: 0x8F18,\n\t5999: 0x8F1E,\n\t6000: 0x8F20,\n\t6001: 0x8F21,\n\t6002: 0x8F23,\n\t6003: 0x8F25,\n\t6004: 0x8F27,\n\t6005: 0x8F28,\n\t6006: 0x8F2C,\n\t6007: 0x8F2D,\n\t6008: 0x8F2E,\n\t6009: 0x8F34,\n\t6010: 0x8F35,\n\t6011: 0x8F36,\n\t6012: 0x8F37,\n\t6013: 0x8F3A,\n\t6014: 0x8F40,\n\t6015: 0x8F41,\n\t6016: 0x8F43,\n\t6017: 0x8F47,\n\t6018: 0x8F4F,\n\t6019: 0x8F51,\n\t6020: 0x8F52,\n\t6021: 0x8F53,\n\t6022: 0x8F54,\n\t6023: 0x8F55,\n\t6024: 0x8F58,\n\t6025: 0x8F5D,\n\t6026: 0x8F5E,\n\t6027: 0x8F65,\n\t6028: 0x8F9D,\n\t6029: 0x8FA0,\n\t6030: 0x8FA1,\n\t6031: 0x8FA4,\n\t6032: 0x8FA5,\n\t6033: 0x8FA6,\n\t6034: 0x8FB5,\n\t6035: 0x8FB6,\n\t6036: 0x8FB8,\n\t6037: 0x8FBE,\n\t6038: 0x8FC0,\n\t6039: 0x8FC1,\n\t6040: 0x8FC6,\n\t6041: 0x8FCA,\n\t6042: 0x8FCB,\n\t6043: 0x8FCD,\n\t6044: 0x8FD0,\n\t6045: 0x8FD2,\n\t6046: 0x8FD3,\n\t6047: 0x8FD5,\n\t6048: 0x8FE0,\n\t6049: 0x8FE3,\n\t6050: 0x8FE4,\n\t6051: 0x8FE8,\n\t6052: 0x8FEE,\n\t6053: 0x8FF1,\n\t6054: 0x8FF5,\n\t6055: 0x8FF6,\n\t6056: 0x8FFB,\n\t6057: 0x8FFE,\n\t6058: 0x9002,\n\t6059: 0x9004,\n\t6060: 0x9008,\n\t6061: 0x900C,\n\t6062: 0x9018,\n\t6063: 0x901B,\n\t6064: 0x9028,\n\t6065: 0x9029,\n\t6066: 0x902F,\n\t6067: 0x902A,\n\t6068: 0x902C,\n\t6069: 0x902D,\n\t6070: 0x9033,\n\t6071: 0x9034,\n\t6072: 0x9037,\n\t6073: 0x903F,\n\t6074: 0x9043,\n\t6075: 0x9044,\n\t6076: 0x904C,\n\t6077: 0x905B,\n\t6078: 0x905D,\n\t6079: 0x9062,\n\t6080: 0x9066,\n\t6081: 0x9067,\n\t6082: 0x906C,\n\t6083: 0x9070,\n\t6084: 0x9074,\n\t6085: 0x9079,\n\t6086: 0x9085,\n\t6087: 0x9088,\n\t6088: 0x908B,\n\t6089: 0x908C,\n\t6090: 0x908E,\n\t6091: 0x9090,\n\t6092: 0x9095,\n\t6093: 0x9097,\n\t6094: 0x9098,\n\t6095: 0x9099,\n\t6096: 0x909B,\n\t6097: 0x90A0,\n\t6098: 0x90A1,\n\t6099: 0x90A2,\n\t6100: 0x90A5,\n\t6101: 0x90B0,\n\t6102: 0x90B2,\n\t6103: 0x90B3,\n\t6104: 0x90B4,\n\t6105: 0x90B6,\n\t6106: 0x90BD,\n\t6107: 0x90CC,\n\t6108: 0x90BE,\n\t6109: 0x90C3,\n\t6110: 0x90C4,\n\t6111: 0x90C5,\n\t6112: 0x90C7,\n\t6113: 0x90C8,\n\t6114: 0x90D5,\n\t6115: 0x90D7,\n\t6116: 0x90D8,\n\t6117: 0x90D9,\n\t6118: 0x90DC,\n\t6119: 0x90DD,\n\t6120: 0x90DF,\n\t6121: 0x90E5,\n\t6122: 0x90D2,\n\t6123: 0x90F6,\n\t6124: 0x90EB,\n\t6125: 0x90EF,\n\t6126: 0x90F0,\n\t6127: 0x90F4,\n\t6128: 0x90FE,\n\t6129: 0x90FF,\n\t6130: 0x9100,\n\t6131: 0x9104,\n\t6132: 0x9105,\n\t6133: 0x9106,\n\t6134: 0x9108,\n\t6135: 0x910D,\n\t6136: 0x9110,\n\t6137: 0x9114,\n\t6138: 0x9116,\n\t6139: 0x9117,\n\t6140: 0x9118,\n\t6141: 0x911A,\n\t6142: 0x911C,\n\t6143: 0x911E,\n\t6144: 0x9120,\n\t6145: 0x9125,\n\t6146: 0x9122,\n\t6147: 0x9123,\n\t6148: 0x9127,\n\t6149: 0x9129,\n\t6150: 0x912E,\n\t6151: 0x912F,\n\t6152: 0x9131,\n\t6153: 0x9134,\n\t6154: 0x9136,\n\t6155: 0x9137,\n\t6156: 0x9139,\n\t6157: 0x913A,\n\t6158: 0x913C,\n\t6159: 0x913D,\n\t6160: 0x9143,\n\t6161: 0x9147,\n\t6162: 0x9148,\n\t6163: 0x914F,\n\t6164: 0x9153,\n\t6165: 0x9157,\n\t6166: 0x9159,\n\t6167: 0x915A,\n\t6168: 0x915B,\n\t6169: 0x9161,\n\t6170: 0x9164,\n\t6171: 0x9167,\n\t6172: 0x916D,\n\t6173: 0x9174,\n\t6174: 0x9179,\n\t6175: 0x917A,\n\t6176: 0x917B,\n\t6177: 0x9181,\n\t6178: 0x9183,\n\t6179: 0x9185,\n\t6180: 0x9186,\n\t6181: 0x918A,\n\t6182: 0x918E,\n\t6183: 0x9191,\n\t6184: 0x9193,\n\t6185: 0x9194,\n\t6186: 0x9195,\n\t6187: 0x9198,\n\t6188: 0x919E,\n\t6189: 0x91A1,\n\t6190: 0x91A6,\n\t6191: 0x91A8,\n\t6192: 0x91AC,\n\t6193: 0x91AD,\n\t6194: 0x91AE,\n\t6195: 0x91B0,\n\t6196: 0x91B1,\n\t6197: 0x91B2,\n\t6198: 0x91B3,\n\t6199: 0x91B6,\n\t6200: 0x91BB,\n\t6201: 0x91BC,\n\t6202: 0x91BD,\n\t6203: 0x91BF,\n\t6204: 0x91C2,\n\t6205: 0x91C3,\n\t6206: 0x91C5,\n\t6207: 0x91D3,\n\t6208: 0x91D4,\n\t6209: 0x91D7,\n\t6210: 0x91D9,\n\t6211: 0x91DA,\n\t6212: 0x91DE,\n\t6213: 0x91E4,\n\t6214: 0x91E5,\n\t6215: 0x91E9,\n\t6216: 0x91EA,\n\t6217: 0x91EC,\n\t6218: 0x91ED,\n\t6219: 0x91EE,\n\t6220: 0x91EF,\n\t6221: 0x91F0,\n\t6222: 0x91F1,\n\t6223: 0x91F7,\n\t6224: 0x91F9,\n\t6225: 0x91FB,\n\t6226: 0x91FD,\n\t6227: 0x9200,\n\t6228: 0x9201,\n\t6229: 0x9204,\n\t6230: 0x9205,\n\t6231: 0x9206,\n\t6232: 0x9207,\n\t6233: 0x9209,\n\t6234: 0x920A,\n\t6235: 0x920C,\n\t6236: 0x9210,\n\t6237: 0x9212,\n\t6238: 0x9213,\n\t6239: 0x9216,\n\t6240: 0x9218,\n\t6241: 0x921C,\n\t6242: 0x921D,\n\t6243: 0x9223,\n\t6244: 0x9224,\n\t6245: 0x9225,\n\t6246: 0x9226,\n\t6247: 0x9228,\n\t6248: 0x922E,\n\t6249: 0x922F,\n\t6250: 0x9230,\n\t6251: 0x9233,\n\t6252: 0x9235,\n\t6253: 0x9236,\n\t6254: 0x9238,\n\t6255: 0x9239,\n\t6256: 0x923A,\n\t6257: 0x923C,\n\t6258: 0x923E,\n\t6259: 0x9240,\n\t6260: 0x9242,\n\t6261: 0x9243,\n\t6262: 0x9246,\n\t6263: 0x9247,\n\t6264: 0x924A,\n\t6265: 0x924D,\n\t6266: 0x924E,\n\t6267: 0x924F,\n\t6268: 0x9251,\n\t6269: 0x9258,\n\t6270: 0x9259,\n\t6271: 0x925C,\n\t6272: 0x925D,\n\t6273: 0x9260,\n\t6274: 0x9261,\n\t6275: 0x9265,\n\t6276: 0x9267,\n\t6277: 0x9268,\n\t6278: 0x9269,\n\t6279: 0x926E,\n\t6280: 0x926F,\n\t6281: 0x9270,\n\t6282: 0x9275,\n\t6283: 0x9276,\n\t6284: 0x9277,\n\t6285: 0x9278,\n\t6286: 0x9279,\n\t6287: 0x927B,\n\t6288: 0x927C,\n\t6289: 0x927D,\n\t6290: 0x927F,\n\t6291: 0x9288,\n\t6292: 0x9289,\n\t6293: 0x928A,\n\t6294: 0x928D,\n\t6295: 0x928E,\n\t6296: 0x9292,\n\t6297: 0x9297,\n\t6298: 0x9299,\n\t6299: 0x929F,\n\t6300: 0x92A0,\n\t6301: 0x92A4,\n\t6302: 0x92A5,\n\t6303: 0x92A7,\n\t6304: 0x92A8,\n\t6305: 0x92AB,\n\t6306: 0x92AF,\n\t6307: 0x92B2,\n\t6308: 0x92B6,\n\t6309: 0x92B8,\n\t6310: 0x92BA,\n\t6311: 0x92BB,\n\t6312: 0x92BC,\n\t6313: 0x92BD,\n\t6314: 0x92BF,\n\t6315: 0x92C0,\n\t6316: 0x92C1,\n\t6317: 0x92C2,\n\t6318: 0x92C3,\n\t6319: 0x92C5,\n\t6320: 0x92C6,\n\t6321: 0x92C7,\n\t6322: 0x92C8,\n\t6323: 0x92CB,\n\t6324: 0x92CC,\n\t6325: 0x92CD,\n\t6326: 0x92CE,\n\t6327: 0x92D0,\n\t6328: 0x92D3,\n\t6329: 0x92D5,\n\t6330: 0x92D7,\n\t6331: 0x92D8,\n\t6332: 0x92D9,\n\t6333: 0x92DC,\n\t6334: 0x92DD,\n\t6335: 0x92DF,\n\t6336: 0x92E0,\n\t6337: 0x92E1,\n\t6338: 0x92E3,\n\t6339: 0x92E5,\n\t6340: 0x92E7,\n\t6341: 0x92E8,\n\t6342: 0x92EC,\n\t6343: 0x92EE,\n\t6344: 0x92F0,\n\t6345: 0x92F9,\n\t6346: 0x92FB,\n\t6347: 0x92FF,\n\t6348: 0x9300,\n\t6349: 0x9302,\n\t6350: 0x9308,\n\t6351: 0x930D,\n\t6352: 0x9311,\n\t6353: 0x9314,\n\t6354: 0x9315,\n\t6355: 0x931C,\n\t6356: 0x931D,\n\t6357: 0x931E,\n\t6358: 0x931F,\n\t6359: 0x9321,\n\t6360: 0x9324,\n\t6361: 0x9325,\n\t6362: 0x9327,\n\t6363: 0x9329,\n\t6364: 0x932A,\n\t6365: 0x9333,\n\t6366: 0x9334,\n\t6367: 0x9336,\n\t6368: 0x9337,\n\t6369: 0x9347,\n\t6370: 0x9348,\n\t6371: 0x9349,\n\t6372: 0x9350,\n\t6373: 0x9351,\n\t6374: 0x9352,\n\t6375: 0x9355,\n\t6376: 0x9357,\n\t6377: 0x9358,\n\t6378: 0x935A,\n\t6379: 0x935E,\n\t6380: 0x9364,\n\t6381: 0x9365,\n\t6382: 0x9367,\n\t6383: 0x9369,\n\t6384: 0x936A,\n\t6385: 0x936D,\n\t6386: 0x936F,\n\t6387: 0x9370,\n\t6388: 0x9371,\n\t6389: 0x9373,\n\t6390: 0x9374,\n\t6391: 0x9376,\n\t6392: 0x937A,\n\t6393: 0x937D,\n\t6394: 0x937F,\n\t6395: 0x9380,\n\t6396: 0x9381,\n\t6397: 0x9382,\n\t6398: 0x9388,\n\t6399: 0x938A,\n\t6400: 0x938B,\n\t6401: 0x938D,\n\t6402: 0x938F,\n\t6403: 0x9392,\n\t6404: 0x9395,\n\t6405: 0x9398,\n\t6406: 0x939B,\n\t6407: 0x939E,\n\t6408: 0x93A1,\n\t6409: 0x93A3,\n\t6410: 0x93A4,\n\t6411: 0x93A6,\n\t6412: 0x93A8,\n\t6413: 0x93AB,\n\t6414: 0x93B4,\n\t6415: 0x93B5,\n\t6416: 0x93B6,\n\t6417: 0x93BA,\n\t6418: 0x93A9,\n\t6419: 0x93C1,\n\t6420: 0x93C4,\n\t6421: 0x93C5,\n\t6422: 0x93C6,\n\t6423: 0x93C7,\n\t6424: 0x93C9,\n\t6425: 0x93CA,\n\t6426: 0x93CB,\n\t6427: 0x93CC,\n\t6428: 0x93CD,\n\t6429: 0x93D3,\n\t6430: 0x93D9,\n\t6431: 0x93DC,\n\t6432: 0x93DE,\n\t6433: 0x93DF,\n\t6434: 0x93E2,\n\t6435: 0x93E6,\n\t6436: 0x93E7,\n\t6437: 0x93F9,\n\t6438: 0x93F7,\n\t6439: 0x93F8,\n\t6440: 0x93FA,\n\t6441: 0x93FB,\n\t6442: 0x93FD,\n\t6443: 0x9401,\n\t6444: 0x9402,\n\t6445: 0x9404,\n\t6446: 0x9408,\n\t6447: 0x9409,\n\t6448: 0x940D,\n\t6449: 0x940E,\n\t6450: 0x940F,\n\t6451: 0x9415,\n\t6452: 0x9416,\n\t6453: 0x9417,\n\t6454: 0x941F,\n\t6455: 0x942E,\n\t6456: 0x942F,\n\t6457: 0x9431,\n\t6458: 0x9432,\n\t6459: 0x9433,\n\t6460: 0x9434,\n\t6461: 0x943B,\n\t6462: 0x943F,\n\t6463: 0x943D,\n\t6464: 0x9443,\n\t6465: 0x9445,\n\t6466: 0x9448,\n\t6467: 0x944A,\n\t6468: 0x944C,\n\t6469: 0x9455,\n\t6470: 0x9459,\n\t6471: 0x945C,\n\t6472: 0x945F,\n\t6473: 0x9461,\n\t6474: 0x9463,\n\t6475: 0x9468,\n\t6476: 0x946B,\n\t6477: 0x946D,\n\t6478: 0x946E,\n\t6479: 0x946F,\n\t6480: 0x9471,\n\t6481: 0x9472,\n\t6482: 0x9484,\n\t6483: 0x9483,\n\t6484: 0x9578,\n\t6485: 0x9579,\n\t6486: 0x957E,\n\t6487: 0x9584,\n\t6488: 0x9588,\n\t6489: 0x958C,\n\t6490: 0x958D,\n\t6491: 0x958E,\n\t6492: 0x959D,\n\t6493: 0x959E,\n\t6494: 0x959F,\n\t6495: 0x95A1,\n\t6496: 0x95A6,\n\t6497: 0x95A9,\n\t6498: 0x95AB,\n\t6499: 0x95AC,\n\t6500: 0x95B4,\n\t6501: 0x95B6,\n\t6502: 0x95BA,\n\t6503: 0x95BD,\n\t6504: 0x95BF,\n\t6505: 0x95C6,\n\t6506: 0x95C8,\n\t6507: 0x95C9,\n\t6508: 0x95CB,\n\t6509: 0x95D0,\n\t6510: 0x95D1,\n\t6511: 0x95D2,\n\t6512: 0x95D3,\n\t6513: 0x95D9,\n\t6514: 0x95DA,\n\t6515: 0x95DD,\n\t6516: 0x95DE,\n\t6517: 0x95DF,\n\t6518: 0x95E0,\n\t6519: 0x95E4,\n\t6520: 0x95E6,\n\t6521: 0x961D,\n\t6522: 0x961E,\n\t6523: 0x9622,\n\t6524: 0x9624,\n\t6525: 0x9625,\n\t6526: 0x9626,\n\t6527: 0x962C,\n\t6528: 0x9631,\n\t6529: 0x9633,\n\t6530: 0x9637,\n\t6531: 0x9638,\n\t6532: 0x9639,\n\t6533: 0x963A,\n\t6534: 0x963C,\n\t6535: 0x963D,\n\t6536: 0x9641,\n\t6537: 0x9652,\n\t6538: 0x9654,\n\t6539: 0x9656,\n\t6540: 0x9657,\n\t6541: 0x9658,\n\t6542: 0x9661,\n\t6543: 0x966E,\n\t6544: 0x9674,\n\t6545: 0x967B,\n\t6546: 0x967C,\n\t6547: 0x967E,\n\t6548: 0x967F,\n\t6549: 0x9681,\n\t6550: 0x9682,\n\t6551: 0x9683,\n\t6552: 0x9684,\n\t6553: 0x9689,\n\t6554: 0x9691,\n\t6555: 0x9696,\n\t6556: 0x969A,\n\t6557: 0x969D,\n\t6558: 0x969F,\n\t6559: 0x96A4,\n\t6560: 0x96A5,\n\t6561: 0x96A6,\n\t6562: 0x96A9,\n\t6563: 0x96AE,\n\t6564: 0x96AF,\n\t6565: 0x96B3,\n\t6566: 0x96BA,\n\t6567: 0x96CA,\n\t6568: 0x96D2,\n\t6569: 0x5DB2,\n\t6570: 0x96D8,\n\t6571: 0x96DA,\n\t6572: 0x96DD,\n\t6573: 0x96DE,\n\t6574: 0x96DF,\n\t6575: 0x96E9,\n\t6576: 0x96EF,\n\t6577: 0x96F1,\n\t6578: 0x96FA,\n\t6579: 0x9702,\n\t6580: 0x9703,\n\t6581: 0x9705,\n\t6582: 0x9709,\n\t6583: 0x971A,\n\t6584: 0x971B,\n\t6585: 0x971D,\n\t6586: 0x9721,\n\t6587: 0x9722,\n\t6588: 0x9723,\n\t6589: 0x9728,\n\t6590: 0x9731,\n\t6591: 0x9733,\n\t6592: 0x9741,\n\t6593: 0x9743,\n\t6594: 0x974A,\n\t6595: 0x974E,\n\t6596: 0x974F,\n\t6597: 0x9755,\n\t6598: 0x9757,\n\t6599: 0x9758,\n\t6600: 0x975A,\n\t6601: 0x975B,\n\t6602: 0x9763,\n\t6603: 0x9767,\n\t6604: 0x976A,\n\t6605: 0x976E,\n\t6606: 0x9773,\n\t6607: 0x9776,\n\t6608: 0x9777,\n\t6609: 0x9778,\n\t6610: 0x977B,\n\t6611: 0x977D,\n\t6612: 0x977F,\n\t6613: 0x9780,\n\t6614: 0x9789,\n\t6615: 0x9795,\n\t6616: 0x9796,\n\t6617: 0x9797,\n\t6618: 0x9799,\n\t6619: 0x979A,\n\t6620: 0x979E,\n\t6621: 0x979F,\n\t6622: 0x97A2,\n\t6623: 0x97AC,\n\t6624: 0x97AE,\n\t6625: 0x97B1,\n\t6626: 0x97B2,\n\t6627: 0x97B5,\n\t6628: 0x97B6,\n\t6629: 0x97B8,\n\t6630: 0x97B9,\n\t6631: 0x97BA,\n\t6632: 0x97BC,\n\t6633: 0x97BE,\n\t6634: 0x97BF,\n\t6635: 0x97C1,\n\t6636: 0x97C4,\n\t6637: 0x97C5,\n\t6638: 0x97C7,\n\t6639: 0x97C9,\n\t6640: 0x97CA,\n\t6641: 0x97CC,\n\t6642: 0x97CD,\n\t6643: 0x97CE,\n\t6644: 0x97D0,\n\t6645: 0x97D1,\n\t6646: 0x97D4,\n\t6647: 0x97D7,\n\t6648: 0x97D8,\n\t6649: 0x97D9,\n\t6650: 0x97DD,\n\t6651: 0x97DE,\n\t6652: 0x97E0,\n\t6653: 0x97DB,\n\t6654: 0x97E1,\n\t6655: 0x97E4,\n\t6656: 0x97EF,\n\t6657: 0x97F1,\n\t6658: 0x97F4,\n\t6659: 0x97F7,\n\t6660: 0x97F8,\n\t6661: 0x97FA,\n\t6662: 0x9807,\n\t6663: 0x980A,\n\t6664: 0x9819,\n\t6665: 0x980D,\n\t6666: 0x980E,\n\t6667: 0x9814,\n\t6668: 0x9816,\n\t6669: 0x981C,\n\t6670: 0x981E,\n\t6671: 0x9820,\n\t6672: 0x9823,\n\t6673: 0x9826,\n\t6674: 0x982B,\n\t6675: 0x982E,\n\t6676: 0x982F,\n\t6677: 0x9830,\n\t6678: 0x9832,\n\t6679: 0x9833,\n\t6680: 0x9835,\n\t6681: 0x9825,\n\t6682: 0x983E,\n\t6683: 0x9844,\n\t6684: 0x9847,\n\t6685: 0x984A,\n\t6686: 0x9851,\n\t6687: 0x9852,\n\t6688: 0x9853,\n\t6689: 0x9856,\n\t6690: 0x9857,\n\t6691: 0x9859,\n\t6692: 0x985A,\n\t6693: 0x9862,\n\t6694: 0x9863,\n\t6695: 0x9865,\n\t6696: 0x9866,\n\t6697: 0x986A,\n\t6698: 0x986C,\n\t6699: 0x98AB,\n\t6700: 0x98AD,\n\t6701: 0x98AE,\n\t6702: 0x98B0,\n\t6703: 0x98B4,\n\t6704: 0x98B7,\n\t6705: 0x98B8,\n\t6706: 0x98BA,\n\t6707: 0x98BB,\n\t6708: 0x98BF,\n\t6709: 0x98C2,\n\t6710: 0x98C5,\n\t6711: 0x98C8,\n\t6712: 0x98CC,\n\t6713: 0x98E1,\n\t6714: 0x98E3,\n\t6715: 0x98E5,\n\t6716: 0x98E6,\n\t6717: 0x98E7,\n\t6718: 0x98EA,\n\t6719: 0x98F3,\n\t6720: 0x98F6,\n\t6721: 0x9902,\n\t6722: 0x9907,\n\t6723: 0x9908,\n\t6724: 0x9911,\n\t6725: 0x9915,\n\t6726: 0x9916,\n\t6727: 0x9917,\n\t6728: 0x991A,\n\t6729: 0x991B,\n\t6730: 0x991C,\n\t6731: 0x991F,\n\t6732: 0x9922,\n\t6733: 0x9926,\n\t6734: 0x9927,\n\t6735: 0x992B,\n\t6736: 0x9931,\n\t6737: 0x9932,\n\t6738: 0x9933,\n\t6739: 0x9934,\n\t6740: 0x9935,\n\t6741: 0x9939,\n\t6742: 0x993A,\n\t6743: 0x993B,\n\t6744: 0x993C,\n\t6745: 0x9940,\n\t6746: 0x9941,\n\t6747: 0x9946,\n\t6748: 0x9947,\n\t6749: 0x9948,\n\t6750: 0x994D,\n\t6751: 0x994E,\n\t6752: 0x9954,\n\t6753: 0x9958,\n\t6754: 0x9959,\n\t6755: 0x995B,\n\t6756: 0x995C,\n\t6757: 0x995E,\n\t6758: 0x995F,\n\t6759: 0x9960,\n\t6760: 0x999B,\n\t6761: 0x999D,\n\t6762: 0x999F,\n\t6763: 0x99A6,\n\t6764: 0x99B0,\n\t6765: 0x99B1,\n\t6766: 0x99B2,\n\t6767: 0x99B5,\n\t6768: 0x99B9,\n\t6769: 0x99BA,\n\t6770: 0x99BD,\n\t6771: 0x99BF,\n\t6772: 0x99C3,\n\t6773: 0x99C9,\n\t6774: 0x99D3,\n\t6775: 0x99D4,\n\t6776: 0x99D9,\n\t6777: 0x99DA,\n\t6778: 0x99DC,\n\t6779: 0x99DE,\n\t6780: 0x99E7,\n\t6781: 0x99EA,\n\t6782: 0x99EB,\n\t6783: 0x99EC,\n\t6784: 0x99F0,\n\t6785: 0x99F4,\n\t6786: 0x99F5,\n\t6787: 0x99F9,\n\t6788: 0x99FD,\n\t6789: 0x99FE,\n\t6790: 0x9A02,\n\t6791: 0x9A03,\n\t6792: 0x9A04,\n\t6793: 0x9A0B,\n\t6794: 0x9A0C,\n\t6795: 0x9A10,\n\t6796: 0x9A11,\n\t6797: 0x9A16,\n\t6798: 0x9A1E,\n\t6799: 0x9A20,\n\t6800: 0x9A22,\n\t6801: 0x9A23,\n\t6802: 0x9A24,\n\t6803: 0x9A27,\n\t6804: 0x9A2D,\n\t6805: 0x9A2E,\n\t6806: 0x9A33,\n\t6807: 0x9A35,\n\t6808: 0x9A36,\n\t6809: 0x9A38,\n\t6810: 0x9A47,\n\t6811: 0x9A41,\n\t6812: 0x9A44,\n\t6813: 0x9A4A,\n\t6814: 0x9A4B,\n\t6815: 0x9A4C,\n\t6816: 0x9A4E,\n\t6817: 0x9A51,\n\t6818: 0x9A54,\n\t6819: 0x9A56,\n\t6820: 0x9A5D,\n\t6821: 0x9AAA,\n\t6822: 0x9AAC,\n\t6823: 0x9AAE,\n\t6824: 0x9AAF,\n\t6825: 0x9AB2,\n\t6826: 0x9AB4,\n\t6827: 0x9AB5,\n\t6828: 0x9AB6,\n\t6829: 0x9AB9,\n\t6830: 0x9ABB,\n\t6831: 0x9ABE,\n\t6832: 0x9ABF,\n\t6833: 0x9AC1,\n\t6834: 0x9AC3,\n\t6835: 0x9AC6,\n\t6836: 0x9AC8,\n\t6837: 0x9ACE,\n\t6838: 0x9AD0,\n\t6839: 0x9AD2,\n\t6840: 0x9AD5,\n\t6841: 0x9AD6,\n\t6842: 0x9AD7,\n\t6843: 0x9ADB,\n\t6844: 0x9ADC,\n\t6845: 0x9AE0,\n\t6846: 0x9AE4,\n\t6847: 0x9AE5,\n\t6848: 0x9AE7,\n\t6849: 0x9AE9,\n\t6850: 0x9AEC,\n\t6851: 0x9AF2,\n\t6852: 0x9AF3,\n\t6853: 0x9AF5,\n\t6854: 0x9AF9,\n\t6855: 0x9AFA,\n\t6856: 0x9AFD,\n\t6857: 0x9AFF,\n\t6858: 0x9B00,\n\t6859: 0x9B01,\n\t6860: 0x9B02,\n\t6861: 0x9B03,\n\t6862: 0x9B04,\n\t6863: 0x9B05,\n\t6864: 0x9B08,\n\t6865: 0x9B09,\n\t6866: 0x9B0B,\n\t6867: 0x9B0C,\n\t6868: 0x9B0D,\n\t6869: 0x9B0E,\n\t6870: 0x9B10,\n\t6871: 0x9B12,\n\t6872: 0x9B16,\n\t6873: 0x9B19,\n\t6874: 0x9B1B,\n\t6875: 0x9B1C,\n\t6876: 0x9B20,\n\t6877: 0x9B26,\n\t6878: 0x9B2B,\n\t6879: 0x9B2D,\n\t6880: 0x9B33,\n\t6881: 0x9B34,\n\t6882: 0x9B35,\n\t6883: 0x9B37,\n\t6884: 0x9B39,\n\t6885: 0x9B3A,\n\t6886: 0x9B3D,\n\t6887: 0x9B48,\n\t6888: 0x9B4B,\n\t6889: 0x9B4C,\n\t6890: 0x9B55,\n\t6891: 0x9B56,\n\t6892: 0x9B57,\n\t6893: 0x9B5B,\n\t6894: 0x9B5E,\n\t6895: 0x9B61,\n\t6896: 0x9B63,\n\t6897: 0x9B65,\n\t6898: 0x9B66,\n\t6899: 0x9B68,\n\t6900: 0x9B6A,\n\t6901: 0x9B6B,\n\t6902: 0x9B6C,\n\t6903: 0x9B6D,\n\t6904: 0x9B6E,\n\t6905: 0x9B73,\n\t6906: 0x9B75,\n\t6907: 0x9B77,\n\t6908: 0x9B78,\n\t6909: 0x9B79,\n\t6910: 0x9B7F,\n\t6911: 0x9B80,\n\t6912: 0x9B84,\n\t6913: 0x9B85,\n\t6914: 0x9B86,\n\t6915: 0x9B87,\n\t6916: 0x9B89,\n\t6917: 0x9B8A,\n\t6918: 0x9B8B,\n\t6919: 0x9B8D,\n\t6920: 0x9B8F,\n\t6921: 0x9B90,\n\t6922: 0x9B94,\n\t6923: 0x9B9A,\n\t6924: 0x9B9D,\n\t6925: 0x9B9E,\n\t6926: 0x9BA6,\n\t6927: 0x9BA7,\n\t6928: 0x9BA9,\n\t6929: 0x9BAC,\n\t6930: 0x9BB0,\n\t6931: 0x9BB1,\n\t6932: 0x9BB2,\n\t6933: 0x9BB7,\n\t6934: 0x9BB8,\n\t6935: 0x9BBB,\n\t6936: 0x9BBC,\n\t6937: 0x9BBE,\n\t6938: 0x9BBF,\n\t6939: 0x9BC1,\n\t6940: 0x9BC7,\n\t6941: 0x9BC8,\n\t6942: 0x9BCE,\n\t6943: 0x9BD0,\n\t6944: 0x9BD7,\n\t6945: 0x9BD8,\n\t6946: 0x9BDD,\n\t6947: 0x9BDF,\n\t6948: 0x9BE5,\n\t6949: 0x9BE7,\n\t6950: 0x9BEA,\n\t6951: 0x9BEB,\n\t6952: 0x9BEF,\n\t6953: 0x9BF3,\n\t6954: 0x9BF7,\n\t6955: 0x9BF8,\n\t6956: 0x9BF9,\n\t6957: 0x9BFA,\n\t6958: 0x9BFD,\n\t6959: 0x9BFF,\n\t6960: 0x9C00,\n\t6961: 0x9C02,\n\t6962: 0x9C0B,\n\t6963: 0x9C0F,\n\t6964: 0x9C11,\n\t6965: 0x9C16,\n\t6966: 0x9C18,\n\t6967: 0x9C19,\n\t6968: 0x9C1A,\n\t6969: 0x9C1C,\n\t6970: 0x9C1E,\n\t6971: 0x9C22,\n\t6972: 0x9C23,\n\t6973: 0x9C26,\n\t6974: 0x9C27,\n\t6975: 0x9C28,\n\t6976: 0x9C29,\n\t6977: 0x9C2A,\n\t6978: 0x9C31,\n\t6979: 0x9C35,\n\t6980: 0x9C36,\n\t6981: 0x9C37,\n\t6982: 0x9C3D,\n\t6983: 0x9C41,\n\t6984: 0x9C43,\n\t6985: 0x9C44,\n\t6986: 0x9C45,\n\t6987: 0x9C49,\n\t6988: 0x9C4A,\n\t6989: 0x9C4E,\n\t6990: 0x9C4F,\n\t6991: 0x9C50,\n\t6992: 0x9C53,\n\t6993: 0x9C54,\n\t6994: 0x9C56,\n\t6995: 0x9C58,\n\t6996: 0x9C5B,\n\t6997: 0x9C5D,\n\t6998: 0x9C5E,\n\t6999: 0x9C5F,\n\t7000: 0x9C63,\n\t7001: 0x9C69,\n\t7002: 0x9C6A,\n\t7003: 0x9C5C,\n\t7004: 0x9C6B,\n\t7005: 0x9C68,\n\t7006: 0x9C6E,\n\t7007: 0x9C70,\n\t7008: 0x9C72,\n\t7009: 0x9C75,\n\t7010: 0x9C77,\n\t7011: 0x9C7B,\n\t7012: 0x9CE6,\n\t7013: 0x9CF2,\n\t7014: 0x9CF7,\n\t7015: 0x9CF9,\n\t7016: 0x9D0B,\n\t7017: 0x9D02,\n\t7018: 0x9D11,\n\t7019: 0x9D17,\n\t7020: 0x9D18,\n\t7021: 0x9D1C,\n\t7022: 0x9D1D,\n\t7023: 0x9D1E,\n\t7024: 0x9D2F,\n\t7025: 0x9D30,\n\t7026: 0x9D32,\n\t7027: 0x9D33,\n\t7028: 0x9D34,\n\t7029: 0x9D3A,\n\t7030: 0x9D3C,\n\t7031: 0x9D45,\n\t7032: 0x9D3D,\n\t7033: 0x9D42,\n\t7034: 0x9D43,\n\t7035: 0x9D47,\n\t7036: 0x9D4A,\n\t7037: 0x9D53,\n\t7038: 0x9D54,\n\t7039: 0x9D5F,\n\t7040: 0x9D63,\n\t7041: 0x9D62,\n\t7042: 0x9D65,\n\t7043: 0x9D69,\n\t7044: 0x9D6A,\n\t7045: 0x9D6B,\n\t7046: 0x9D70,\n\t7047: 0x9D76,\n\t7048: 0x9D77,\n\t7049: 0x9D7B,\n\t7050: 0x9D7C,\n\t7051: 0x9D7E,\n\t7052: 0x9D83,\n\t7053: 0x9D84,\n\t7054: 0x9D86,\n\t7055: 0x9D8A,\n\t7056: 0x9D8D,\n\t7057: 0x9D8E,\n\t7058: 0x9D92,\n\t7059: 0x9D93,\n\t7060: 0x9D95,\n\t7061: 0x9D96,\n\t7062: 0x9D97,\n\t7063: 0x9D98,\n\t7064: 0x9DA1,\n\t7065: 0x9DAA,\n\t7066: 0x9DAC,\n\t7067: 0x9DAE,\n\t7068: 0x9DB1,\n\t7069: 0x9DB5,\n\t7070: 0x9DB9,\n\t7071: 0x9DBC,\n\t7072: 0x9DBF,\n\t7073: 0x9DC3,\n\t7074: 0x9DC7,\n\t7075: 0x9DC9,\n\t7076: 0x9DCA,\n\t7077: 0x9DD4,\n\t7078: 0x9DD5,\n\t7079: 0x9DD6,\n\t7080: 0x9DD7,\n\t7081: 0x9DDA,\n\t7082: 0x9DDE,\n\t7083: 0x9DDF,\n\t7084: 0x9DE0,\n\t7085: 0x9DE5,\n\t7086: 0x9DE7,\n\t7087: 0x9DE9,\n\t7088: 0x9DEB,\n\t7089: 0x9DEE,\n\t7090: 0x9DF0,\n\t7091: 0x9DF3,\n\t7092: 0x9DF4,\n\t7093: 0x9DFE,\n\t7094: 0x9E0A,\n\t7095: 0x9E02,\n\t7096: 0x9E07,\n\t7097: 0x9E0E,\n\t7098: 0x9E10,\n\t7099: 0x9E11,\n\t7100: 0x9E12,\n\t7101: 0x9E15,\n\t7102: 0x9E16,\n\t7103: 0x9E19,\n\t7104: 0x9E1C,\n\t7105: 0x9E1D,\n\t7106: 0x9E7A,\n\t7107: 0x9E7B,\n\t7108: 0x9E7C,\n\t7109: 0x9E80,\n\t7110: 0x9E82,\n\t7111: 0x9E83,\n\t7112: 0x9E84,\n\t7113: 0x9E85,\n\t7114: 0x9E87,\n\t7115: 0x9E8E,\n\t7116: 0x9E8F,\n\t7117: 0x9E96,\n\t7118: 0x9E98,\n\t7119: 0x9E9B,\n\t7120: 0x9E9E,\n\t7121: 0x9EA4,\n\t7122: 0x9EA8,\n\t7123: 0x9EAC,\n\t7124: 0x9EAE,\n\t7125: 0x9EAF,\n\t7126: 0x9EB0,\n\t7127: 0x9EB3,\n\t7128: 0x9EB4,\n\t7129: 0x9EB5,\n\t7130: 0x9EC6,\n\t7131: 0x9EC8,\n\t7132: 0x9ECB,\n\t7133: 0x9ED5,\n\t7134: 0x9EDF,\n\t7135: 0x9EE4,\n\t7136: 0x9EE7,\n\t7137: 0x9EEC,\n\t7138: 0x9EED,\n\t7139: 0x9EEE,\n\t7140: 0x9EF0,\n\t7141: 0x9EF1,\n\t7142: 0x9EF2,\n\t7143: 0x9EF5,\n\t7144: 0x9EF8,\n\t7145: 0x9EFF,\n\t7146: 0x9F02,\n\t7147: 0x9F03,\n\t7148: 0x9F09,\n\t7149: 0x9F0F,\n\t7150: 0x9F10,\n\t7151: 0x9F11,\n\t7152: 0x9F12,\n\t7153: 0x9F14,\n\t7154: 0x9F16,\n\t7155: 0x9F17,\n\t7156: 0x9F19,\n\t7157: 0x9F1A,\n\t7158: 0x9F1B,\n\t7159: 0x9F1F,\n\t7160: 0x9F22,\n\t7161: 0x9F26,\n\t7162: 0x9F2A,\n\t7163: 0x9F2B,\n\t7164: 0x9F2F,\n\t7165: 0x9F31,\n\t7166: 0x9F32,\n\t7167: 0x9F34,\n\t7168: 0x9F37,\n\t7169: 0x9F39,\n\t7170: 0x9F3A,\n\t7171: 0x9F3C,\n\t7172: 0x9F3D,\n\t7173: 0x9F3F,\n\t7174: 0x9F41,\n\t7175: 0x9F43,\n\t7176: 0x9F44,\n\t7177: 0x9F45,\n\t7178: 0x9F46,\n\t7179: 0x9F47,\n\t7180: 0x9F53,\n\t7181: 0x9F55,\n\t7182: 0x9F56,\n\t7183: 0x9F57,\n\t7184: 0x9F58,\n\t7185: 0x9F5A,\n\t7186: 0x9F5D,\n\t7187: 0x9F5E,\n\t7188: 0x9F68,\n\t7189: 0x9F69,\n\t7190: 0x9F6D,\n\t7191: 0x9F6E,\n\t7192: 0x9F6F,\n\t7193: 0x9F70,\n\t7194: 0x9F71,\n\t7195: 0x9F73,\n\t7196: 0x9F75,\n\t7197: 0x9F7A,\n\t7198: 0x9F7D,\n\t7199: 0x9F8F,\n\t7200: 0x9F90,\n\t7201: 0x9F91,\n\t7202: 0x9F92,\n\t7203: 0x9F94,\n\t7204: 0x9F96,\n\t7205: 0x9F97,\n\t7206: 0x9F9E,\n\t7207: 0x9FA1,\n\t7208: 0x9FA2,\n\t7209: 0x9FA3,\n\t7210: 0x9FA5,\n}\n\nconst (\n\tjis0208    = 1\n\tjis0212    = 2\n\tcodeMask   = 0x7f\n\tcodeShift  = 7\n\ttableShift = 14\n)\n\nconst numEncodeTables = 6\n\n// encodeX are the encoding tables from Unicode to JIS code,\n// sorted by decreasing length.\n// encode0: 20902 entries for runes in [19968, 40870).\n// encode1:  1632 entries for runes in [ 8208,  9840).\n// encode2:   974 entries for runes in [12288, 13262).\n// encode3:   959 entries for runes in [  161,  1120).\n// encode4:   261 entries for runes in [63785, 64046).\n// encode5:   229 entries for runes in [65281, 65510).\n//\n// The high two bits of the value record whether the JIS code comes from the\n// JIS0208 table (high bits == 1) or the JIS0212 table (high bits == 2).\n// The low 14 bits are two 7-bit unsigned integers j1 and j2 that form the\n// JIS code (94*j1 + j2) within that table.\n\nconst encode0Low, encode0High = 19968, 40870\n\nvar encode0 = [...]uint16{\n\t19968 - 19968: jis0208<<14 | 0x0F<<7 | 0x4B,\n\t19969 - 19968: jis0208<<14 | 0x22<<7 | 0x59,\n\t19970 - 19968: jis0212<<14 | 0x0F<<7 | 0x00,\n\t19971 - 19968: jis0208<<14 | 0x1B<<7 | 0x16,\n\t19972 - 19968: jis0212<<14 | 0x0F<<7 | 0x01,\n\t19973 - 19968: jis0212<<14 | 0x0F<<7 | 0x02,\n\t19975 - 19968: jis0208<<14 | 0x2A<<7 | 0x5B,\n\t19976 - 19968: jis0208<<14 | 0x1D<<7 | 0x45,\n\t19977 - 19968: jis0208<<14 | 0x1A<<7 | 0x0F,\n\t19978 - 19968: jis0208<<14 | 0x1D<<7 | 0x44,\n\t19979 - 19968: jis0208<<14 | 0x11<<7 | 0x1B,\n\t19980 - 19968: jis0212<<14 | 0x0F<<7 | 0x03,\n\t19981 - 19968: jis0208<<14 | 0x28<<7 | 0x33,\n\t19982 - 19968: jis0208<<14 | 0x2C<<7 | 0x1E,\n\t19984 - 19968: jis0208<<14 | 0x2F<<7 | 0x01,\n\t19985 - 19968: jis0208<<14 | 0x10<<7 | 0x0E,\n\t19986 - 19968: jis0212<<14 | 0x0F<<7 | 0x04,\n\t19988 - 19968: jis0208<<14 | 0x12<<7 | 0x4D,\n\t19989 - 19968: jis0208<<14 | 0x2F<<7 | 0x02,\n\t19990 - 19968: jis0208<<14 | 0x1F<<7 | 0x03,\n\t19991 - 19968: jis0208<<14 | 0x31<<7 | 0x21,\n\t19992 - 19968: jis0208<<14 | 0x14<<7 | 0x35,\n\t19993 - 19968: jis0208<<14 | 0x29<<7 | 0x19,\n\t19998 - 19968: jis0208<<14 | 0x1D<<7 | 0x46,\n\t19999 - 19968: jis0212<<14 | 0x0F<<7 | 0x05,\n\t20001 - 19968: jis0208<<14 | 0x2D<<7 | 0x1D,\n\t20003 - 19968: jis0212<<14 | 0x0F<<7 | 0x06,\n\t20004 - 19968: jis0212<<14 | 0x0F<<7 | 0x07,\n\t20006 - 19968: jis0208<<14 | 0x29<<7 | 0x21,\n\t20008 - 19968: jis0208<<14 | 0x58<<7 | 0x0C,\n\t20010 - 19968: jis0208<<14 | 0x2F<<7 | 0x03,\n\t20011 - 19968: jis0212<<14 | 0x0F<<7 | 0x09,\n\t20013 - 19968: jis0208<<14 | 0x22<<7 | 0x45,\n\t20014 - 19968: jis0212<<14 | 0x0F<<7 | 0x0A,\n\t20015 - 19968: jis0212<<14 | 0x0F<<7 | 0x0B,\n\t20016 - 19968: jis0212<<14 | 0x0F<<7 | 0x0C,\n\t20017 - 19968: jis0208<<14 | 0x2F<<7 | 0x04,\n\t20018 - 19968: jis0208<<14 | 0x15<<7 | 0x59,\n\t20021 - 19968: jis0212<<14 | 0x0F<<7 | 0x0D,\n\t20022 - 19968: jis0208<<14 | 0x2F<<7 | 0x05,\n\t20024 - 19968: jis0208<<14 | 0x13<<7 | 0x3C,\n\t20025 - 19968: jis0208<<14 | 0x22<<7 | 0x0F,\n\t20027 - 19968: jis0208<<14 | 0x1B<<7 | 0x46,\n\t20028 - 19968: jis0208<<14 | 0x2F<<7 | 0x06,\n\t20031 - 19968: jis0208<<14 | 0x2F<<7 | 0x07,\n\t20032 - 19968: jis0212<<14 | 0x0F<<7 | 0x0E,\n\t20033 - 19968: jis0212<<14 | 0x0F<<7 | 0x0F,\n\t20034 - 19968: jis0208<<14 | 0x2F<<7 | 0x08,\n\t20035 - 19968: jis0208<<14 | 0x26<<7 | 0x14,\n\t20036 - 19968: jis0212<<14 | 0x0F<<7 | 0x10,\n\t20037 - 19968: jis0208<<14 | 0x14<<7 | 0x36,\n\t20039 - 19968: jis0212<<14 | 0x0F<<7 | 0x11,\n\t20043 - 19968: jis0208<<14 | 0x26<<7 | 0x16,\n\t20045 - 19968: jis0208<<14 | 0x25<<7 | 0x42,\n\t20046 - 19968: jis0208<<14 | 0x17<<7 | 0x22,\n\t20047 - 19968: jis0208<<14 | 0x2A<<7 | 0x12,\n\t20049 - 19968: jis0212<<14 | 0x0F<<7 | 0x12,\n\t20053 - 19968: jis0208<<14 | 0x48<<7 | 0x28,\n\t20054 - 19968: jis0208<<14 | 0x2F<<7 | 0x09,\n\t20055 - 19968: jis0208<<14 | 0x1D<<7 | 0x47,\n\t20056 - 19968: jis0208<<14 | 0x2F<<7 | 0x0A,\n\t20057 - 19968: jis0208<<14 | 0x11<<7 | 0x14,\n\t20058 - 19968: jis0212<<14 | 0x0F<<7 | 0x13,\n\t20060 - 19968: jis0212<<14 | 0x0F<<7 | 0x14,\n\t20061 - 19968: jis0208<<14 | 0x15<<7 | 0x44,\n\t20062 - 19968: jis0208<<14 | 0x17<<7 | 0x4F,\n\t20063 - 19968: jis0208<<14 | 0x2B<<7 | 0x48,\n\t20066 - 19968: jis0208<<14 | 0x35<<7 | 0x05,\n\t20067 - 19968: jis0212<<14 | 0x0F<<7 | 0x15,\n\t20072 - 19968: jis0212<<14 | 0x0F<<7 | 0x16,\n\t20073 - 19968: jis0212<<14 | 0x0F<<7 | 0x17,\n\t20081 - 19968: jis0208<<14 | 0x2C<<7 | 0x4F,\n\t20083 - 19968: jis0208<<14 | 0x25<<7 | 0x5C,\n\t20084 - 19968: jis0212<<14 | 0x0F<<7 | 0x18,\n\t20085 - 19968: jis0212<<14 | 0x0F<<7 | 0x19,\n\t20089 - 19968: jis0212<<14 | 0x0F<<7 | 0x1A,\n\t20094 - 19968: jis0208<<14 | 0x13<<7 | 0x04,\n\t20095 - 19968: jis0212<<14 | 0x0F<<7 | 0x1B,\n\t20096 - 19968: jis0208<<14 | 0x14<<7 | 0x14,\n\t20098 - 19968: jis0208<<14 | 0x2F<<7 | 0x0B,\n\t20101 - 19968: jis0208<<14 | 0x2F<<7 | 0x0C,\n\t20102 - 19968: jis0208<<14 | 0x2D<<7 | 0x1A,\n\t20104 - 19968: jis0208<<14 | 0x2C<<7 | 0x1C,\n\t20105 - 19968: jis0208<<14 | 0x20<<7 | 0x47,\n\t20106 - 19968: jis0208<<14 | 0x2F<<7 | 0x0E,\n\t20107 - 19968: jis0208<<14 | 0x1A<<7 | 0x55,\n\t20108 - 19968: jis0208<<14 | 0x25<<7 | 0x52,\n\t20109 - 19968: jis0212<<14 | 0x0F<<7 | 0x1C,\n\t20110 - 19968: jis0208<<14 | 0x2F<<7 | 0x11,\n\t20113 - 19968: jis0208<<14 | 0x10<<7 | 0x1D,\n\t20114 - 19968: jis0208<<14 | 0x17<<7 | 0x3E,\n\t20116 - 19968: jis0208<<14 | 0x17<<7 | 0x3D,\n\t20117 - 19968: jis0208<<14 | 0x0F<<7 | 0x45,\n\t20118 - 19968: jis0212<<14 | 0x0F<<7 | 0x1D,\n\t20119 - 19968: jis0212<<14 | 0x0F<<7 | 0x1E,\n\t20120 - 19968: jis0208<<14 | 0x2E<<7 | 0x2A,\n\t20121 - 19968: jis0208<<14 | 0x2E<<7 | 0x29,\n\t20123 - 19968: jis0208<<14 | 0x19<<7 | 0x12,\n\t20124 - 19968: jis0208<<14 | 0x0F<<7 | 0x00,\n\t20125 - 19968: jis0212<<14 | 0x0F<<7 | 0x1F,\n\t20126 - 19968: jis0208<<14 | 0x2F<<7 | 0x12,\n\t20127 - 19968: jis0208<<14 | 0x2F<<7 | 0x13,\n\t20128 - 19968: jis0208<<14 | 0x2F<<7 | 0x14,\n\t20129 - 19968: jis0208<<14 | 0x2A<<7 | 0x13,\n\t20130 - 19968: jis0208<<14 | 0x2F<<7 | 0x15,\n\t20132 - 19968: jis0208<<14 | 0x17<<7 | 0x51,\n\t20133 - 19968: jis0208<<14 | 0x0F<<7 | 0x46,\n\t20134 - 19968: jis0208<<14 | 0x2A<<7 | 0x51,\n\t20136 - 19968: jis0208<<14 | 0x14<<7 | 0x5B,\n\t20139 - 19968: jis0208<<14 | 0x14<<7 | 0x5C,\n\t20140 - 19968: jis0208<<14 | 0x14<<7 | 0x5D,\n\t20141 - 19968: jis0208<<14 | 0x23<<7 | 0x41,\n\t20142 - 19968: jis0208<<14 | 0x2D<<7 | 0x1B,\n\t20143 - 19968: jis0212<<14 | 0x0F<<7 | 0x20,\n\t20144 - 19968: jis0208<<14 | 0x2F<<7 | 0x16,\n\t20147 - 19968: jis0208<<14 | 0x2F<<7 | 0x17,\n\t20150 - 19968: jis0208<<14 | 0x2F<<7 | 0x18,\n\t20153 - 19968: jis0212<<14 | 0x0F<<7 | 0x21,\n\t20154 - 19968: jis0208<<14 | 0x1E<<7 | 0x2C,\n\t20160 - 19968: jis0208<<14 | 0x1C<<7 | 0x19,\n\t20161 - 19968: jis0208<<14 | 0x1E<<7 | 0x2D,\n\t20162 - 19968: jis0208<<14 | 0x2F<<7 | 0x1D,\n\t20163 - 19968: jis0212<<14 | 0x0F<<7 | 0x22,\n\t20164 - 19968: jis0208<<14 | 0x2F<<7 | 0x1B,\n\t20166 - 19968: jis0208<<14 | 0x2F<<7 | 0x1C,\n\t20167 - 19968: jis0208<<14 | 0x14<<7 | 0x37,\n\t20170 - 19968: jis0208<<14 | 0x19<<7 | 0x02,\n\t20171 - 19968: jis0208<<14 | 0x11<<7 | 0x4F,\n\t20173 - 19968: jis0208<<14 | 0x2F<<7 | 0x1A,\n\t20174 - 19968: jis0208<<14 | 0x2F<<7 | 0x19,\n\t20175 - 19968: jis0208<<14 | 0x29<<7 | 0x08,\n\t20176 - 19968: jis0212<<14 | 0x0F<<7 | 0x23,\n\t20180 - 19968: jis0208<<14 | 0x1A<<7 | 0x25,\n\t20181 - 19968: jis0208<<14 | 0x1A<<7 | 0x24,\n\t20182 - 19968: jis0208<<14 | 0x21<<7 | 0x1D,\n\t20183 - 19968: jis0208<<14 | 0x2F<<7 | 0x1E,\n\t20184 - 19968: jis0208<<14 | 0x28<<7 | 0x34,\n\t20185 - 19968: jis0208<<14 | 0x1F<<7 | 0x46,\n\t20186 - 19968: jis0212<<14 | 0x0F<<7 | 0x24,\n\t20187 - 19968: jis0212<<14 | 0x0F<<7 | 0x25,\n\t20189 - 19968: jis0208<<14 | 0x00<<7 | 0x17,\n\t20190 - 19968: jis0208<<14 | 0x2F<<7 | 0x1F,\n\t20191 - 19968: jis0208<<14 | 0x2F<<7 | 0x21,\n\t20192 - 19968: jis0212<<14 | 0x0F<<7 | 0x26,\n\t20193 - 19968: jis0208<<14 | 0x58<<7 | 0x0D,\n\t20194 - 19968: jis0212<<14 | 0x0F<<7 | 0x28,\n\t20195 - 19968: jis0208<<14 | 0x21<<7 | 0x44,\n\t20196 - 19968: jis0208<<14 | 0x2D<<7 | 0x40,\n\t20197 - 19968: jis0208<<14 | 0x0F<<7 | 0x29,\n\t20200 - 19968: jis0212<<14 | 0x0F<<7 | 0x29,\n\t20205 - 19968: jis0208<<14 | 0x2F<<7 | 0x20,\n\t20206 - 19968: jis0208<<14 | 0x11<<7 | 0x1D,\n\t20207 - 19968: jis0212<<14 | 0x0F<<7 | 0x2A,\n\t20208 - 19968: jis0208<<14 | 0x15<<7 | 0x23,\n\t20209 - 19968: jis0212<<14 | 0x0F<<7 | 0x2B,\n\t20210 - 19968: jis0208<<14 | 0x22<<7 | 0x46,\n\t20211 - 19968: jis0212<<14 | 0x0F<<7 | 0x2C,\n\t20213 - 19968: jis0212<<14 | 0x0F<<7 | 0x2D,\n\t20214 - 19968: jis0208<<14 | 0x16<<7 | 0x4E,\n\t20215 - 19968: jis0208<<14 | 0x2F<<7 | 0x22,\n\t20219 - 19968: jis0208<<14 | 0x26<<7 | 0x03,\n\t20220 - 19968: jis0208<<14 | 0x58<<7 | 0x0E,\n\t20221 - 19968: jis0212<<14 | 0x0F<<7 | 0x2E,\n\t20222 - 19968: jis0212<<14 | 0x0F<<7 | 0x2F,\n\t20223 - 19968: jis0212<<14 | 0x0F<<7 | 0x30,\n\t20224 - 19968: jis0208<<14 | 0x58<<7 | 0x0F,\n\t20225 - 19968: jis0208<<14 | 0x13<<7 | 0x4A,\n\t20226 - 19968: jis0212<<14 | 0x0F<<7 | 0x32,\n\t20227 - 19968: jis0208<<14 | 0x58<<7 | 0x10,\n\t20232 - 19968: jis0212<<14 | 0x0F<<7 | 0x34,\n\t20233 - 19968: jis0208<<14 | 0x2F<<7 | 0x23,\n\t20234 - 19968: jis0208<<14 | 0x0F<<7 | 0x2A,\n\t20235 - 19968: jis0212<<14 | 0x0F<<7 | 0x35,\n\t20236 - 19968: jis0212<<14 | 0x0F<<7 | 0x36,\n\t20237 - 19968: jis0208<<14 | 0x17<<7 | 0x3F,\n\t20238 - 19968: jis0208<<14 | 0x13<<7 | 0x4B,\n\t20239 - 19968: jis0208<<14 | 0x28<<7 | 0x59,\n\t20240 - 19968: jis0208<<14 | 0x27<<7 | 0x11,\n\t20241 - 19968: jis0208<<14 | 0x14<<7 | 0x38,\n\t20242 - 19968: jis0212<<14 | 0x0F<<7 | 0x37,\n\t20245 - 19968: jis0212<<14 | 0x0F<<7 | 0x38,\n\t20246 - 19968: jis0212<<14 | 0x0F<<7 | 0x39,\n\t20247 - 19968: jis0212<<14 | 0x0F<<7 | 0x3A,\n\t20249 - 19968: jis0212<<14 | 0x0F<<7 | 0x3B,\n\t20250 - 19968: jis0208<<14 | 0x11<<7 | 0x50,\n\t20252 - 19968: jis0208<<14 | 0x2F<<7 | 0x46,\n\t20253 - 19968: jis0208<<14 | 0x24<<7 | 0x20,\n\t20270 - 19968: jis0212<<14 | 0x0F<<7 | 0x3C,\n\t20271 - 19968: jis0208<<14 | 0x26<<7 | 0x4B,\n\t20272 - 19968: jis0208<<14 | 0x2F<<7 | 0x25,\n\t20273 - 19968: jis0212<<14 | 0x0F<<7 | 0x3D,\n\t20275 - 19968: jis0212<<14 | 0x0F<<7 | 0x3F,\n\t20276 - 19968: jis0208<<14 | 0x27<<7 | 0x1B,\n\t20277 - 19968: jis0212<<14 | 0x0F<<7 | 0x40,\n\t20278 - 19968: jis0208<<14 | 0x2D<<7 | 0x41,\n\t20279 - 19968: jis0212<<14 | 0x0F<<7 | 0x41,\n\t20280 - 19968: jis0208<<14 | 0x1E<<7 | 0x0C,\n\t20281 - 19968: jis0208<<14 | 0x58<<7 | 0x11,\n\t20282 - 19968: jis0208<<14 | 0x1A<<7 | 0x26,\n\t20283 - 19968: jis0212<<14 | 0x0F<<7 | 0x43,\n\t20284 - 19968: jis0208<<14 | 0x1A<<7 | 0x56,\n\t20285 - 19968: jis0208<<14 | 0x11<<7 | 0x1F,\n\t20286 - 19968: jis0212<<14 | 0x0F<<7 | 0x44,\n\t20288 - 19968: jis0212<<14 | 0x0F<<7 | 0x45,\n\t20290 - 19968: jis0212<<14 | 0x0F<<7 | 0x46,\n\t20291 - 19968: jis0208<<14 | 0x23<<7 | 0x30,\n\t20294 - 19968: jis0208<<14 | 0x22<<7 | 0x01,\n\t20295 - 19968: jis0208<<14 | 0x2F<<7 | 0x29,\n\t20296 - 19968: jis0212<<14 | 0x0F<<7 | 0x47,\n\t20297 - 19968: jis0212<<14 | 0x0F<<7 | 0x48,\n\t20299 - 19968: jis0212<<14 | 0x0F<<7 | 0x49,\n\t20300 - 19968: jis0212<<14 | 0x0F<<7 | 0x4A,\n\t20301 - 19968: jis0208<<14 | 0x0F<<7 | 0x2B,\n\t20302 - 19968: jis0208<<14 | 0x23<<7 | 0x42,\n\t20303 - 19968: jis0208<<14 | 0x1C<<7 | 0x1A,\n\t20304 - 19968: jis0208<<14 | 0x19<<7 | 0x13,\n\t20305 - 19968: jis0208<<14 | 0x2C<<7 | 0x03,\n\t20306 - 19968: jis0212<<14 | 0x0F<<7 | 0x4B,\n\t20307 - 19968: jis0208<<14 | 0x21<<7 | 0x2D,\n\t20308 - 19968: jis0212<<14 | 0x0F<<7 | 0x4C,\n\t20309 - 19968: jis0208<<14 | 0x11<<7 | 0x1E,\n\t20310 - 19968: jis0208<<14 | 0x58<<7 | 0x12,\n\t20311 - 19968: jis0208<<14 | 0x2F<<7 | 0x28,\n\t20312 - 19968: jis0212<<14 | 0x0F<<7 | 0x4E,\n\t20313 - 19968: jis0208<<14 | 0x2C<<7 | 0x1D,\n\t20314 - 19968: jis0208<<14 | 0x2F<<7 | 0x24,\n\t20315 - 19968: jis0208<<14 | 0x2F<<7 | 0x26,\n\t20316 - 19968: jis0208<<14 | 0x19<<7 | 0x4D,\n\t20317 - 19968: jis0208<<14 | 0x2F<<7 | 0x27,\n\t20318 - 19968: jis0208<<14 | 0x34<<7 | 0x03,\n\t20319 - 19968: jis0212<<14 | 0x0F<<7 | 0x4F,\n\t20320 - 19968: jis0212<<14 | 0x0F<<7 | 0x3E,\n\t20323 - 19968: jis0212<<14 | 0x0F<<7 | 0x50,\n\t20329 - 19968: jis0208<<14 | 0x2F<<7 | 0x2F,\n\t20330 - 19968: jis0212<<14 | 0x0F<<7 | 0x51,\n\t20332 - 19968: jis0212<<14 | 0x0F<<7 | 0x52,\n\t20334 - 19968: jis0212<<14 | 0x0F<<7 | 0x53,\n\t20335 - 19968: jis0208<<14 | 0x2F<<7 | 0x32,\n\t20336 - 19968: jis0208<<14 | 0x2F<<7 | 0x30,\n\t20337 - 19968: jis0212<<14 | 0x0F<<7 | 0x54,\n\t20339 - 19968: jis0208<<14 | 0x11<<7 | 0x21,\n\t20341 - 19968: jis0208<<14 | 0x29<<7 | 0x1A,\n\t20342 - 19968: jis0208<<14 | 0x2F<<7 | 0x2A,\n\t20343 - 19968: jis0212<<14 | 0x0F<<7 | 0x55,\n\t20344 - 19968: jis0212<<14 | 0x0F<<7 | 0x56,\n\t20345 - 19968: jis0212<<14 | 0x0F<<7 | 0x57,\n\t20346 - 19968: jis0212<<14 | 0x0F<<7 | 0x58,\n\t20347 - 19968: jis0208<<14 | 0x2F<<7 | 0x2E,\n\t20348 - 19968: jis0208<<14 | 0x17<<7 | 0x52,\n\t20349 - 19968: jis0212<<14 | 0x0F<<7 | 0x59,\n\t20350 - 19968: jis0212<<14 | 0x0F<<7 | 0x5A,\n\t20351 - 19968: jis0208<<14 | 0x1A<<7 | 0x27,\n\t20353 - 19968: jis0212<<14 | 0x0F<<7 | 0x5B,\n\t20354 - 19968: jis0212<<14 | 0x0F<<7 | 0x5C,\n\t20355 - 19968: jis0208<<14 | 0x13<<7 | 0x05,\n\t20356 - 19968: jis0212<<14 | 0x0F<<7 | 0x5D,\n\t20357 - 19968: jis0212<<14 | 0x10<<7 | 0x00,\n\t20358 - 19968: jis0208<<14 | 0x2F<<7 | 0x33,\n\t20360 - 19968: jis0208<<14 | 0x2F<<7 | 0x2B,\n\t20361 - 19968: jis0212<<14 | 0x10<<7 | 0x01,\n\t20362 - 19968: jis0208<<14 | 0x58<<7 | 0x14,\n\t20363 - 19968: jis0208<<14 | 0x2D<<7 | 0x42,\n\t20364 - 19968: jis0212<<14 | 0x10<<7 | 0x03,\n\t20365 - 19968: jis0208<<14 | 0x1A<<7 | 0x57,\n\t20366 - 19968: jis0212<<14 | 0x10<<7 | 0x04,\n\t20367 - 19968: jis0208<<14 | 0x2F<<7 | 0x2C,\n\t20368 - 19968: jis0212<<14 | 0x10<<7 | 0x05,\n\t20369 - 19968: jis0208<<14 | 0x2F<<7 | 0x31,\n\t20370 - 19968: jis0208<<14 | 0x58<<7 | 0x13,\n\t20371 - 19968: jis0212<<14 | 0x10<<7 | 0x07,\n\t20372 - 19968: jis0208<<14 | 0x58<<7 | 0x16,\n\t20374 - 19968: jis0208<<14 | 0x2F<<7 | 0x34,\n\t20375 - 19968: jis0212<<14 | 0x10<<7 | 0x09,\n\t20376 - 19968: jis0208<<14 | 0x2F<<7 | 0x2D,\n\t20377 - 19968: jis0212<<14 | 0x10<<7 | 0x0A,\n\t20378 - 19968: jis0208<<14 | 0x58<<7 | 0x15,\n\t20379 - 19968: jis0208<<14 | 0x15<<7 | 0x00,\n\t20381 - 19968: jis0208<<14 | 0x0F<<7 | 0x2C,\n\t20382 - 19968: jis0212<<14 | 0x10<<7 | 0x0C,\n\t20383 - 19968: jis0212<<14 | 0x10<<7 | 0x0D,\n\t20384 - 19968: jis0208<<14 | 0x15<<7 | 0x01,\n\t20385 - 19968: jis0208<<14 | 0x11<<7 | 0x20,\n\t20395 - 19968: jis0208<<14 | 0x34<<7 | 0x04,\n\t20397 - 19968: jis0208<<14 | 0x2A<<7 | 0x58,\n\t20398 - 19968: jis0208<<14 | 0x28<<7 | 0x4D,\n\t20399 - 19968: jis0208<<14 | 0x17<<7 | 0x53,\n\t20402 - 19968: jis0212<<14 | 0x10<<7 | 0x0E,\n\t20405 - 19968: jis0208<<14 | 0x1E<<7 | 0x0E,\n\t20406 - 19968: jis0208<<14 | 0x2D<<7 | 0x16,\n\t20407 - 19968: jis0212<<14 | 0x10<<7 | 0x0F,\n\t20409 - 19968: jis0212<<14 | 0x10<<7 | 0x10,\n\t20411 - 19968: jis0212<<14 | 0x10<<7 | 0x11,\n\t20412 - 19968: jis0212<<14 | 0x10<<7 | 0x12,\n\t20413 - 19968: jis0212<<14 | 0x10<<7 | 0x13,\n\t20414 - 19968: jis0212<<14 | 0x10<<7 | 0x14,\n\t20415 - 19968: jis0208<<14 | 0x29<<7 | 0x37,\n\t20416 - 19968: jis0212<<14 | 0x10<<7 | 0x15,\n\t20417 - 19968: jis0212<<14 | 0x10<<7 | 0x16,\n\t20418 - 19968: jis0208<<14 | 0x16<<7 | 0x17,\n\t20419 - 19968: jis0208<<14 | 0x21<<7 | 0x04,\n\t20420 - 19968: jis0208<<14 | 0x11<<7 | 0x43,\n\t20421 - 19968: jis0212<<14 | 0x10<<7 | 0x17,\n\t20422 - 19968: jis0212<<14 | 0x10<<7 | 0x18,\n\t20424 - 19968: jis0212<<14 | 0x10<<7 | 0x19,\n\t20425 - 19968: jis0208<<14 | 0x58<<7 | 0x05,\n\t20426 - 19968: jis0208<<14 | 0x1C<<7 | 0x32,\n\t20427 - 19968: jis0212<<14 | 0x10<<7 | 0x1B,\n\t20428 - 19968: jis0212<<14 | 0x10<<7 | 0x1C,\n\t20429 - 19968: jis0208<<14 | 0x58<<7 | 0x17,\n\t20430 - 19968: jis0208<<14 | 0x2F<<7 | 0x38,\n\t20431 - 19968: jis0212<<14 | 0x10<<7 | 0x1E,\n\t20432 - 19968: jis0208<<14 | 0x2F<<7 | 0x3D,\n\t20433 - 19968: jis0208<<14 | 0x2F<<7 | 0x3B,\n\t20434 - 19968: jis0212<<14 | 0x10<<7 | 0x1F,\n\t20436 - 19968: jis0208<<14 | 0x2F<<7 | 0x36,\n\t20439 - 19968: jis0208<<14 | 0x21<<7 | 0x0E,\n\t20440 - 19968: jis0208<<14 | 0x2F<<7 | 0x39,\n\t20442 - 19968: jis0208<<14 | 0x2F<<7 | 0x3C,\n\t20443 - 19968: jis0208<<14 | 0x2F<<7 | 0x3A,\n\t20444 - 19968: jis0212<<14 | 0x10<<7 | 0x20,\n\t20445 - 19968: jis0208<<14 | 0x29<<7 | 0x3C,\n\t20447 - 19968: jis0208<<14 | 0x2F<<7 | 0x37,\n\t20448 - 19968: jis0212<<14 | 0x10<<7 | 0x21,\n\t20449 - 19968: jis0208<<14 | 0x1E<<7 | 0x0D,\n\t20450 - 19968: jis0212<<14 | 0x10<<7 | 0x22,\n\t20451 - 19968: jis0208<<14 | 0x2A<<7 | 0x52,\n\t20452 - 19968: jis0208<<14 | 0x2F<<7 | 0x3E,\n\t20453 - 19968: jis0208<<14 | 0x2F<<7 | 0x3F,\n\t20462 - 19968: jis0208<<14 | 0x1C<<7 | 0x03,\n\t20463 - 19968: jis0208<<14 | 0x2F<<7 | 0x4C,\n\t20464 - 19968: jis0212<<14 | 0x10<<7 | 0x23,\n\t20466 - 19968: jis0212<<14 | 0x10<<7 | 0x24,\n\t20467 - 19968: jis0208<<14 | 0x26<<7 | 0x2F,\n\t20469 - 19968: jis0208<<14 | 0x28<<7 | 0x15,\n\t20470 - 19968: jis0208<<14 | 0x2F<<7 | 0x47,\n\t20472 - 19968: jis0208<<14 | 0x29<<7 | 0x4F,\n\t20474 - 19968: jis0208<<14 | 0x11<<7 | 0x15,\n\t20476 - 19968: jis0212<<14 | 0x10<<7 | 0x25,\n\t20477 - 19968: jis0212<<14 | 0x10<<7 | 0x26,\n\t20478 - 19968: jis0208<<14 | 0x2F<<7 | 0x4B,\n\t20479 - 19968: jis0208<<14 | 0x58<<7 | 0x1A,\n\t20480 - 19968: jis0212<<14 | 0x10<<7 | 0x28,\n\t20481 - 19968: jis0212<<14 | 0x10<<7 | 0x29,\n\t20484 - 19968: jis0212<<14 | 0x10<<7 | 0x2A,\n\t20485 - 19968: jis0208<<14 | 0x2F<<7 | 0x45,\n\t20486 - 19968: jis0208<<14 | 0x2F<<7 | 0x4E,\n\t20487 - 19968: jis0212<<14 | 0x10<<7 | 0x2B,\n\t20489 - 19968: jis0208<<14 | 0x20<<7 | 0x31,\n\t20490 - 19968: jis0212<<14 | 0x10<<7 | 0x2C,\n\t20491 - 19968: jis0208<<14 | 0x17<<7 | 0x23,\n\t20492 - 19968: jis0212<<14 | 0x10<<7 | 0x2D,\n\t20493 - 19968: jis0208<<14 | 0x26<<7 | 0x3B,\n\t20494 - 19968: jis0212<<14 | 0x10<<7 | 0x2E,\n\t20495 - 19968: jis0208<<14 | 0x3F<<7 | 0x26,\n\t20496 - 19968: jis0212<<14 | 0x10<<7 | 0x2F,\n\t20497 - 19968: jis0208<<14 | 0x2F<<7 | 0x4D,\n\t20498 - 19968: jis0208<<14 | 0x24<<7 | 0x3C,\n\t20499 - 19968: jis0212<<14 | 0x10<<7 | 0x30,\n\t20500 - 19968: jis0208<<14 | 0x2F<<7 | 0x42,\n\t20502 - 19968: jis0208<<14 | 0x17<<7 | 0x55,\n\t20503 - 19968: jis0212<<14 | 0x10<<7 | 0x31,\n\t20504 - 19968: jis0212<<14 | 0x10<<7 | 0x32,\n\t20505 - 19968: jis0208<<14 | 0x17<<7 | 0x54,\n\t20506 - 19968: jis0208<<14 | 0x2F<<7 | 0x40,\n\t20507 - 19968: jis0212<<14 | 0x10<<7 | 0x33,\n\t20508 - 19968: jis0212<<14 | 0x10<<7 | 0x34,\n\t20509 - 19968: jis0212<<14 | 0x10<<7 | 0x35,\n\t20510 - 19968: jis0208<<14 | 0x58<<7 | 0x1B,\n\t20511 - 19968: jis0208<<14 | 0x1B<<7 | 0x39,\n\t20513 - 19968: jis0208<<14 | 0x2F<<7 | 0x48,\n\t20514 - 19968: jis0208<<14 | 0x58<<7 | 0x19,\n\t20515 - 19968: jis0208<<14 | 0x29<<7 | 0x4E,\n\t20516 - 19968: jis0208<<14 | 0x22<<7 | 0x2C,\n\t20517 - 19968: jis0208<<14 | 0x2F<<7 | 0x44,\n\t20518 - 19968: jis0208<<14 | 0x16<<7 | 0x50,\n\t20519 - 19968: jis0212<<14 | 0x10<<7 | 0x38,\n\t20520 - 19968: jis0208<<14 | 0x2F<<7 | 0x41,\n\t20521 - 19968: jis0208<<14 | 0x2F<<7 | 0x49,\n\t20522 - 19968: jis0208<<14 | 0x2F<<7 | 0x43,\n\t20523 - 19968: jis0208<<14 | 0x2D<<7 | 0x30,\n\t20524 - 19968: jis0208<<14 | 0x2F<<7 | 0x4A,\n\t20525 - 19968: jis0208<<14 | 0x2E<<7 | 0x20,\n\t20526 - 19968: jis0212<<14 | 0x10<<7 | 0x39,\n\t20528 - 19968: jis0212<<14 | 0x10<<7 | 0x3A,\n\t20530 - 19968: jis0212<<14 | 0x10<<7 | 0x3B,\n\t20531 - 19968: jis0212<<14 | 0x10<<7 | 0x3C,\n\t20533 - 19968: jis0212<<14 | 0x10<<7 | 0x3D,\n\t20534 - 19968: jis0208<<14 | 0x15<<7 | 0x45,\n\t20537 - 19968: jis0208<<14 | 0x16<<7 | 0x4F,\n\t20539 - 19968: jis0212<<14 | 0x10<<7 | 0x55,\n\t20544 - 19968: jis0208<<14 | 0x58<<7 | 0x18,\n\t20545 - 19968: jis0212<<14 | 0x10<<7 | 0x3F,\n\t20546 - 19968: jis0208<<14 | 0x58<<7 | 0x1E,\n\t20547 - 19968: jis0208<<14 | 0x2F<<7 | 0x4F,\n\t20549 - 19968: jis0212<<14 | 0x10<<7 | 0x41,\n\t20550 - 19968: jis0208<<14 | 0x58<<7 | 0x1C,\n\t20551 - 19968: jis0208<<14 | 0x2F<<7 | 0x50,\n\t20552 - 19968: jis0208<<14 | 0x2F<<7 | 0x54,\n\t20553 - 19968: jis0208<<14 | 0x0F<<7 | 0x2D,\n\t20554 - 19968: jis0212<<14 | 0x10<<7 | 0x43,\n\t20556 - 19968: jis0212<<14 | 0x10<<7 | 0x44,\n\t20558 - 19968: jis0212<<14 | 0x10<<7 | 0x45,\n\t20559 - 19968: jis0208<<14 | 0x29<<7 | 0x2F,\n\t20560 - 19968: jis0208<<14 | 0x2F<<7 | 0x53,\n\t20561 - 19968: jis0212<<14 | 0x10<<7 | 0x46,\n\t20562 - 19968: jis0212<<14 | 0x10<<7 | 0x47,\n\t20563 - 19968: jis0212<<14 | 0x10<<7 | 0x48,\n\t20565 - 19968: jis0208<<14 | 0x2F<<7 | 0x52,\n\t20566 - 19968: jis0208<<14 | 0x2F<<7 | 0x56,\n\t20567 - 19968: jis0212<<14 | 0x10<<7 | 0x49,\n\t20569 - 19968: jis0212<<14 | 0x10<<7 | 0x4A,\n\t20570 - 19968: jis0208<<14 | 0x2F<<7 | 0x55,\n\t20572 - 19968: jis0208<<14 | 0x23<<7 | 0x43,\n\t20575 - 19968: jis0212<<14 | 0x10<<7 | 0x4B,\n\t20576 - 19968: jis0212<<14 | 0x10<<7 | 0x4C,\n\t20578 - 19968: jis0212<<14 | 0x10<<7 | 0x4D,\n\t20579 - 19968: jis0212<<14 | 0x10<<7 | 0x4E,\n\t20581 - 19968: jis0208<<14 | 0x16<<7 | 0x51,\n\t20582 - 19968: jis0212<<14 | 0x10<<7 | 0x4F,\n\t20583 - 19968: jis0212<<14 | 0x10<<7 | 0x50,\n\t20586 - 19968: jis0212<<14 | 0x10<<7 | 0x51,\n\t20588 - 19968: jis0208<<14 | 0x2F<<7 | 0x57,\n\t20589 - 19968: jis0212<<14 | 0x10<<7 | 0x52,\n\t20592 - 19968: jis0208<<14 | 0x58<<7 | 0x1D,\n\t20593 - 19968: jis0212<<14 | 0x10<<7 | 0x54,\n\t20594 - 19968: jis0208<<14 | 0x1B<<7 | 0x24,\n\t20596 - 19968: jis0208<<14 | 0x21<<7 | 0x05,\n\t20597 - 19968: jis0208<<14 | 0x23<<7 | 0x44,\n\t20598 - 19968: jis0208<<14 | 0x15<<7 | 0x55,\n\t20600 - 19968: jis0208<<14 | 0x2F<<7 | 0x58,\n\t20605 - 19968: jis0208<<14 | 0x14<<7 | 0x15,\n\t20608 - 19968: jis0208<<14 | 0x2F<<7 | 0x59,\n\t20609 - 19968: jis0212<<14 | 0x10<<7 | 0x56,\n\t20611 - 19968: jis0212<<14 | 0x10<<7 | 0x57,\n\t20612 - 19968: jis0212<<14 | 0x10<<7 | 0x58,\n\t20613 - 19968: jis0208<<14 | 0x2F<<7 | 0x5B,\n\t20614 - 19968: jis0212<<14 | 0x10<<7 | 0x59,\n\t20618 - 19968: jis0212<<14 | 0x10<<7 | 0x5A,\n\t20621 - 19968: jis0208<<14 | 0x2A<<7 | 0x14,\n\t20622 - 19968: jis0212<<14 | 0x10<<7 | 0x5B,\n\t20623 - 19968: jis0212<<14 | 0x10<<7 | 0x5C,\n\t20624 - 19968: jis0212<<14 | 0x10<<7 | 0x5D,\n\t20625 - 19968: jis0208<<14 | 0x16<<7 | 0x45,\n\t20626 - 19968: jis0212<<14 | 0x11<<7 | 0x00,\n\t20627 - 19968: jis0212<<14 | 0x11<<7 | 0x01,\n\t20628 - 19968: jis0208<<14 | 0x58<<7 | 0x1F,\n\t20630 - 19968: jis0212<<14 | 0x11<<7 | 0x03,\n\t20632 - 19968: jis0208<<14 | 0x1A<<7 | 0x10,\n\t20633 - 19968: jis0208<<14 | 0x27<<7 | 0x56,\n\t20634 - 19968: jis0208<<14 | 0x2F<<7 | 0x5A,\n\t20635 - 19968: jis0212<<14 | 0x11<<7 | 0x04,\n\t20636 - 19968: jis0212<<14 | 0x11<<7 | 0x05,\n\t20638 - 19968: jis0212<<14 | 0x11<<7 | 0x06,\n\t20639 - 19968: jis0212<<14 | 0x11<<7 | 0x07,\n\t20640 - 19968: jis0212<<14 | 0x11<<7 | 0x08,\n\t20641 - 19968: jis0212<<14 | 0x11<<7 | 0x09,\n\t20642 - 19968: jis0212<<14 | 0x11<<7 | 0x0A,\n\t20650 - 19968: jis0212<<14 | 0x11<<7 | 0x0B,\n\t20652 - 19968: jis0208<<14 | 0x19<<7 | 0x24,\n\t20653 - 19968: jis0208<<14 | 0x2C<<7 | 0x22,\n\t20655 - 19968: jis0212<<14 | 0x11<<7 | 0x0C,\n\t20656 - 19968: jis0212<<14 | 0x11<<7 | 0x0D,\n\t20658 - 19968: jis0208<<14 | 0x2F<<7 | 0x5D,\n\t20659 - 19968: jis0208<<14 | 0x30<<7 | 0x02,\n\t20660 - 19968: jis0208<<14 | 0x2F<<7 | 0x5C,\n\t20661 - 19968: jis0208<<14 | 0x19<<7 | 0x23,\n\t20663 - 19968: jis0208<<14 | 0x1C<<7 | 0x5C,\n\t20665 - 19968: jis0212<<14 | 0x11<<7 | 0x0E,\n\t20666 - 19968: jis0212<<14 | 0x11<<7 | 0x0F,\n\t20669 - 19968: jis0212<<14 | 0x11<<7 | 0x10,\n\t20670 - 19968: jis0208<<14 | 0x16<<7 | 0x18,\n\t20672 - 19968: jis0212<<14 | 0x11<<7 | 0x11,\n\t20674 - 19968: jis0208<<14 | 0x30<<7 | 0x03,\n\t20675 - 19968: jis0212<<14 | 0x11<<7 | 0x12,\n\t20676 - 19968: jis0212<<14 | 0x11<<7 | 0x13,\n\t20677 - 19968: jis0208<<14 | 0x15<<7 | 0x2E,\n\t20679 - 19968: jis0212<<14 | 0x11<<7 | 0x14,\n\t20681 - 19968: jis0208<<14 | 0x30<<7 | 0x00,\n\t20682 - 19968: jis0208<<14 | 0x30<<7 | 0x01,\n\t20684 - 19968: jis0212<<14 | 0x11<<7 | 0x15,\n\t20685 - 19968: jis0208<<14 | 0x25<<7 | 0x0E,\n\t20686 - 19968: jis0212<<14 | 0x11<<7 | 0x16,\n\t20687 - 19968: jis0208<<14 | 0x20<<7 | 0x5B,\n\t20688 - 19968: jis0212<<14 | 0x11<<7 | 0x17,\n\t20689 - 19968: jis0208<<14 | 0x15<<7 | 0x02,\n\t20691 - 19968: jis0212<<14 | 0x11<<7 | 0x18,\n\t20692 - 19968: jis0212<<14 | 0x11<<7 | 0x19,\n\t20693 - 19968: jis0208<<14 | 0x2A<<7 | 0x2C,\n\t20694 - 19968: jis0208<<14 | 0x30<<7 | 0x04,\n\t20696 - 19968: jis0208<<14 | 0x58<<7 | 0x21,\n\t20698 - 19968: jis0208<<14 | 0x2D<<7 | 0x1C,\n\t20700 - 19968: jis0212<<14 | 0x11<<7 | 0x1B,\n\t20701 - 19968: jis0212<<14 | 0x11<<7 | 0x1C,\n\t20702 - 19968: jis0208<<14 | 0x30<<7 | 0x05,\n\t20703 - 19968: jis0212<<14 | 0x11<<7 | 0x1D,\n\t20706 - 19968: jis0212<<14 | 0x11<<7 | 0x1E,\n\t20707 - 19968: jis0208<<14 | 0x30<<7 | 0x08,\n\t20708 - 19968: jis0212<<14 | 0x11<<7 | 0x1F,\n\t20709 - 19968: jis0208<<14 | 0x30<<7 | 0x06,\n\t20710 - 19968: jis0212<<14 | 0x11<<7 | 0x20,\n\t20711 - 19968: jis0208<<14 | 0x20<<7 | 0x2D,\n\t20712 - 19968: jis0212<<14 | 0x11<<7 | 0x21,\n\t20713 - 19968: jis0212<<14 | 0x11<<7 | 0x22,\n\t20717 - 19968: jis0208<<14 | 0x30<<7 | 0x07,\n\t20718 - 19968: jis0208<<14 | 0x30<<7 | 0x09,\n\t20719 - 19968: jis0212<<14 | 0x11<<7 | 0x23,\n\t20721 - 19968: jis0212<<14 | 0x11<<7 | 0x24,\n\t20722 - 19968: jis0212<<14 | 0x11<<7 | 0x30,\n\t20724 - 19968: jis0208<<14 | 0x58<<7 | 0x20,\n\t20725 - 19968: jis0208<<14 | 0x30<<7 | 0x0B,\n\t20726 - 19968: jis0212<<14 | 0x11<<7 | 0x25,\n\t20729 - 19968: jis0208<<14 | 0x30<<7 | 0x0A,\n\t20730 - 19968: jis0212<<14 | 0x11<<7 | 0x26,\n\t20731 - 19968: jis0208<<14 | 0x29<<7 | 0x27,\n\t20734 - 19968: jis0212<<14 | 0x11<<7 | 0x27,\n\t20736 - 19968: jis0208<<14 | 0x14<<7 | 0x16,\n\t20737 - 19968: jis0208<<14 | 0x30<<7 | 0x0D,\n\t20738 - 19968: jis0208<<14 | 0x30<<7 | 0x0E,\n\t20739 - 19968: jis0212<<14 | 0x11<<7 | 0x28,\n\t20740 - 19968: jis0208<<14 | 0x11<<7 | 0x0E,\n\t20742 - 19968: jis0212<<14 | 0x11<<7 | 0x29,\n\t20743 - 19968: jis0212<<14 | 0x11<<7 | 0x2A,\n\t20744 - 19968: jis0212<<14 | 0x11<<7 | 0x2B,\n\t20745 - 19968: jis0208<<14 | 0x30<<7 | 0x0C,\n\t20747 - 19968: jis0212<<14 | 0x11<<7 | 0x2C,\n\t20748 - 19968: jis0212<<14 | 0x11<<7 | 0x2D,\n\t20749 - 19968: jis0212<<14 | 0x11<<7 | 0x2E,\n\t20750 - 19968: jis0212<<14 | 0x11<<7 | 0x2F,\n\t20752 - 19968: jis0212<<14 | 0x11<<7 | 0x31,\n\t20754 - 19968: jis0208<<14 | 0x1B<<7 | 0x53,\n\t20756 - 19968: jis0208<<14 | 0x30<<7 | 0x11,\n\t20757 - 19968: jis0208<<14 | 0x30<<7 | 0x10,\n\t20758 - 19968: jis0208<<14 | 0x30<<7 | 0x0F,\n\t20759 - 19968: jis0212<<14 | 0x11<<7 | 0x32,\n\t20760 - 19968: jis0208<<14 | 0x2F<<7 | 0x35,\n\t20761 - 19968: jis0212<<14 | 0x11<<7 | 0x33,\n\t20762 - 19968: jis0208<<14 | 0x30<<7 | 0x12,\n\t20763 - 19968: jis0212<<14 | 0x11<<7 | 0x34,\n\t20764 - 19968: jis0212<<14 | 0x11<<7 | 0x35,\n\t20765 - 19968: jis0212<<14 | 0x11<<7 | 0x36,\n\t20766 - 19968: jis0212<<14 | 0x11<<7 | 0x37,\n\t20767 - 19968: jis0208<<14 | 0x1C<<7 | 0x5D,\n\t20769 - 19968: jis0208<<14 | 0x30<<7 | 0x13,\n\t20771 - 19968: jis0212<<14 | 0x11<<7 | 0x38,\n\t20775 - 19968: jis0212<<14 | 0x11<<7 | 0x39,\n\t20776 - 19968: jis0212<<14 | 0x11<<7 | 0x3A,\n\t20778 - 19968: jis0208<<14 | 0x2C<<7 | 0x04,\n\t20780 - 19968: jis0212<<14 | 0x11<<7 | 0x3B,\n\t20781 - 19968: jis0212<<14 | 0x11<<7 | 0x3C,\n\t20783 - 19968: jis0212<<14 | 0x11<<7 | 0x3D,\n\t20785 - 19968: jis0212<<14 | 0x11<<7 | 0x3E,\n\t20786 - 19968: jis0208<<14 | 0x2B<<7 | 0x38,\n\t20787 - 19968: jis0212<<14 | 0x11<<7 | 0x3F,\n\t20788 - 19968: jis0212<<14 | 0x11<<7 | 0x40,\n\t20789 - 19968: jis0212<<14 | 0x11<<7 | 0x41,\n\t20791 - 19968: jis0208<<14 | 0x30<<7 | 0x15,\n\t20792 - 19968: jis0212<<14 | 0x11<<7 | 0x42,\n\t20793 - 19968: jis0212<<14 | 0x11<<7 | 0x43,\n\t20794 - 19968: jis0208<<14 | 0x30<<7 | 0x14,\n\t20795 - 19968: jis0208<<14 | 0x30<<7 | 0x17,\n\t20796 - 19968: jis0208<<14 | 0x30<<7 | 0x16,\n\t20799 - 19968: jis0208<<14 | 0x30<<7 | 0x18,\n\t20800 - 19968: jis0208<<14 | 0x30<<7 | 0x19,\n\t20801 - 19968: jis0208<<14 | 0x0F<<7 | 0x53,\n\t20802 - 19968: jis0212<<14 | 0x11<<7 | 0x44,\n\t20803 - 19968: jis0208<<14 | 0x17<<7 | 0x14,\n\t20804 - 19968: jis0208<<14 | 0x16<<7 | 0x1A,\n\t20805 - 19968: jis0208<<14 | 0x1C<<7 | 0x1B,\n\t20806 - 19968: jis0208<<14 | 0x22<<7 | 0x5A,\n\t20807 - 19968: jis0208<<14 | 0x15<<7 | 0x03,\n\t20808 - 19968: jis0208<<14 | 0x1F<<7 | 0x47,\n\t20809 - 19968: jis0208<<14 | 0x17<<7 | 0x56,\n\t20810 - 19968: jis0208<<14 | 0x58<<7 | 0x22,\n\t20811 - 19968: jis0208<<14 | 0x18<<7 | 0x4D,\n\t20812 - 19968: jis0208<<14 | 0x30<<7 | 0x1B,\n\t20813 - 19968: jis0208<<14 | 0x2B<<7 | 0x27,\n\t20814 - 19968: jis0208<<14 | 0x24<<7 | 0x25,\n\t20815 - 19968: jis0212<<14 | 0x11<<7 | 0x46,\n\t20816 - 19968: jis0208<<14 | 0x1A<<7 | 0x58,\n\t20818 - 19968: jis0208<<14 | 0x30<<7 | 0x1A,\n\t20819 - 19968: jis0212<<14 | 0x11<<7 | 0x47,\n\t20820 - 19968: jis0208<<14 | 0x30<<7 | 0x1C,\n\t20821 - 19968: jis0212<<14 | 0x11<<7 | 0x48,\n\t20823 - 19968: jis0212<<14 | 0x11<<7 | 0x49,\n\t20824 - 19968: jis0212<<14 | 0x11<<7 | 0x4A,\n\t20826 - 19968: jis0208<<14 | 0x24<<7 | 0x3D,\n\t20828 - 19968: jis0208<<14 | 0x12<<7 | 0x54,\n\t20831 - 19968: jis0212<<14 | 0x11<<7 | 0x4B,\n\t20834 - 19968: jis0208<<14 | 0x30<<7 | 0x1D,\n\t20836 - 19968: jis0208<<14 | 0x58<<7 | 0x23,\n\t20837 - 19968: jis0208<<14 | 0x25<<7 | 0x5D,\n\t20838 - 19968: jis0212<<14 | 0x11<<7 | 0x4D,\n\t20840 - 19968: jis0208<<14 | 0x20<<7 | 0x13,\n\t20841 - 19968: jis0208<<14 | 0x30<<7 | 0x1F,\n\t20842 - 19968: jis0208<<14 | 0x30<<7 | 0x20,\n\t20843 - 19968: jis0208<<14 | 0x27<<7 | 0x0B,\n\t20844 - 19968: jis0208<<14 | 0x17<<7 | 0x57,\n\t20845 - 19968: jis0208<<14 | 0x2E<<7 | 0x1A,\n\t20846 - 19968: jis0208<<14 | 0x30<<7 | 0x21,\n\t20849 - 19968: jis0208<<14 | 0x15<<7 | 0x05,\n\t20853 - 19968: jis0208<<14 | 0x29<<7 | 0x1B,\n\t20854 - 19968: jis0208<<14 | 0x21<<7 | 0x15,\n\t20855 - 19968: jis0208<<14 | 0x15<<7 | 0x50,\n\t20856 - 19968: jis0208<<14 | 0x24<<7 | 0x14,\n\t20860 - 19968: jis0208<<14 | 0x16<<7 | 0x52,\n\t20862 - 19968: jis0212<<14 | 0x11<<7 | 0x4E,\n\t20864 - 19968: jis0208<<14 | 0x30<<7 | 0x22,\n\t20866 - 19968: jis0208<<14 | 0x30<<7 | 0x23,\n\t20867 - 19968: jis0212<<14 | 0x11<<7 | 0x4F,\n\t20868 - 19968: jis0212<<14 | 0x11<<7 | 0x50,\n\t20869 - 19968: jis0208<<14 | 0x25<<7 | 0x41,\n\t20870 - 19968: jis0208<<14 | 0x10<<7 | 0x3E,\n\t20873 - 19968: jis0208<<14 | 0x30<<7 | 0x26,\n\t20874 - 19968: jis0208<<14 | 0x19<<7 | 0x5C,\n\t20875 - 19968: jis0212<<14 | 0x11<<7 | 0x51,\n\t20876 - 19968: jis0208<<14 | 0x30<<7 | 0x25,\n\t20877 - 19968: jis0208<<14 | 0x19<<7 | 0x25,\n\t20878 - 19968: jis0212<<14 | 0x11<<7 | 0x52,\n\t20879 - 19968: jis0208<<14 | 0x30<<7 | 0x27,\n\t20880 - 19968: jis0208<<14 | 0x45<<7 | 0x4D,\n\t20881 - 19968: jis0208<<14 | 0x30<<7 | 0x28,\n\t20882 - 19968: jis0208<<14 | 0x2A<<7 | 0x20,\n\t20883 - 19968: jis0208<<14 | 0x30<<7 | 0x29,\n\t20885 - 19968: jis0208<<14 | 0x30<<7 | 0x2A,\n\t20886 - 19968: jis0208<<14 | 0x30<<7 | 0x2B,\n\t20887 - 19968: jis0208<<14 | 0x1D<<7 | 0x48,\n\t20888 - 19968: jis0212<<14 | 0x11<<7 | 0x53,\n\t20889 - 19968: jis0208<<14 | 0x1B<<7 | 0x2B,\n\t20893 - 19968: jis0208<<14 | 0x58<<7 | 0x24,\n\t20896 - 19968: jis0208<<14 | 0x13<<7 | 0x06,\n\t20897 - 19968: jis0212<<14 | 0x11<<7 | 0x55,\n\t20898 - 19968: jis0208<<14 | 0x30<<7 | 0x2E,\n\t20899 - 19968: jis0212<<14 | 0x11<<7 | 0x56,\n\t20900 - 19968: jis0208<<14 | 0x30<<7 | 0x2C,\n\t20901 - 19968: jis0208<<14 | 0x2B<<7 | 0x1C,\n\t20902 - 19968: jis0208<<14 | 0x30<<7 | 0x2D,\n\t20904 - 19968: jis0208<<14 | 0x28<<7 | 0x39,\n\t20905 - 19968: jis0208<<14 | 0x30<<7 | 0x2F,\n\t20906 - 19968: jis0208<<14 | 0x30<<7 | 0x30,\n\t20907 - 19968: jis0208<<14 | 0x30<<7 | 0x31,\n\t20908 - 19968: jis0208<<14 | 0x24<<7 | 0x3E,\n\t20909 - 19968: jis0212<<14 | 0x11<<7 | 0x57,\n\t20912 - 19968: jis0208<<14 | 0x30<<7 | 0x35,\n\t20913 - 19968: jis0208<<14 | 0x30<<7 | 0x33,\n\t20914 - 19968: jis0208<<14 | 0x30<<7 | 0x34,\n\t20915 - 19968: jis0208<<14 | 0x30<<7 | 0x32,\n\t20916 - 19968: jis0208<<14 | 0x19<<7 | 0x42,\n\t20917 - 19968: jis0208<<14 | 0x30<<7 | 0x36,\n\t20918 - 19968: jis0208<<14 | 0x2B<<7 | 0x49,\n\t20919 - 19968: jis0208<<14 | 0x2D<<7 | 0x43,\n\t20920 - 19968: jis0212<<14 | 0x11<<7 | 0x58,\n\t20922 - 19968: jis0212<<14 | 0x11<<7 | 0x59,\n\t20924 - 19968: jis0212<<14 | 0x11<<7 | 0x5A,\n\t20925 - 19968: jis0208<<14 | 0x30<<7 | 0x37,\n\t20926 - 19968: jis0208<<14 | 0x58<<7 | 0x25,\n\t20927 - 19968: jis0212<<14 | 0x11<<7 | 0x5C,\n\t20930 - 19968: jis0212<<14 | 0x11<<7 | 0x5D,\n\t20932 - 19968: jis0208<<14 | 0x1F<<7 | 0x07,\n\t20933 - 19968: jis0208<<14 | 0x30<<7 | 0x38,\n\t20934 - 19968: jis0208<<14 | 0x1C<<7 | 0x39,\n\t20936 - 19968: jis0212<<14 | 0x12<<7 | 0x00,\n\t20937 - 19968: jis0208<<14 | 0x30<<7 | 0x39,\n\t20939 - 19968: jis0208<<14 | 0x22<<7 | 0x5B,\n\t20940 - 19968: jis0208<<14 | 0x2D<<7 | 0x1E,\n\t20941 - 19968: jis0208<<14 | 0x24<<7 | 0x3F,\n\t20943 - 19968: jis0212<<14 | 0x12<<7 | 0x01,\n\t20945 - 19968: jis0212<<14 | 0x12<<7 | 0x02,\n\t20946 - 19968: jis0212<<14 | 0x12<<7 | 0x03,\n\t20947 - 19968: jis0212<<14 | 0x12<<7 | 0x04,\n\t20949 - 19968: jis0212<<14 | 0x12<<7 | 0x05,\n\t20950 - 19968: jis0208<<14 | 0x31<<7 | 0x24,\n\t20952 - 19968: jis0212<<14 | 0x12<<7 | 0x06,\n\t20955 - 19968: jis0208<<14 | 0x30<<7 | 0x3A,\n\t20956 - 19968: jis0208<<14 | 0x53<<7 | 0x04,\n\t20957 - 19968: jis0208<<14 | 0x15<<7 | 0x24,\n\t20958 - 19968: jis0212<<14 | 0x12<<7 | 0x07,\n\t20960 - 19968: jis0208<<14 | 0x30<<7 | 0x3B,\n\t20961 - 19968: jis0208<<14 | 0x2A<<7 | 0x3D,\n\t20962 - 19968: jis0212<<14 | 0x12<<7 | 0x08,\n\t20965 - 19968: jis0212<<14 | 0x12<<7 | 0x09,\n\t20966 - 19968: jis0208<<14 | 0x1C<<7 | 0x47,\n\t20967 - 19968: jis0208<<14 | 0x21<<7 | 0x5B,\n\t20969 - 19968: jis0208<<14 | 0x30<<7 | 0x3D,\n\t20970 - 19968: jis0208<<14 | 0x25<<7 | 0x43,\n\t20972 - 19968: jis0208<<14 | 0x58<<7 | 0x26,\n\t20973 - 19968: jis0208<<14 | 0x30<<7 | 0x3E,\n\t20974 - 19968: jis0212<<14 | 0x12<<7 | 0x0A,\n\t20976 - 19968: jis0208<<14 | 0x30<<7 | 0x3F,\n\t20977 - 19968: jis0208<<14 | 0x12<<7 | 0x0D,\n\t20978 - 19968: jis0212<<14 | 0x12<<7 | 0x0B,\n\t20979 - 19968: jis0212<<14 | 0x12<<7 | 0x0C,\n\t20980 - 19968: jis0212<<14 | 0x12<<7 | 0x0D,\n\t20981 - 19968: jis0208<<14 | 0x30<<7 | 0x40,\n\t20982 - 19968: jis0208<<14 | 0x15<<7 | 0x06,\n\t20983 - 19968: jis0212<<14 | 0x12<<7 | 0x0E,\n\t20984 - 19968: jis0208<<14 | 0x25<<7 | 0x2B,\n\t20985 - 19968: jis0208<<14 | 0x10<<7 | 0x59,\n\t20986 - 19968: jis0208<<14 | 0x1C<<7 | 0x2F,\n\t20989 - 19968: jis0208<<14 | 0x27<<7 | 0x00,\n\t20990 - 19968: jis0208<<14 | 0x30<<7 | 0x41,\n\t20992 - 19968: jis0208<<14 | 0x24<<7 | 0x40,\n\t20993 - 19968: jis0212<<14 | 0x12<<7 | 0x0F,\n\t20994 - 19968: jis0212<<14 | 0x12<<7 | 0x10,\n\t20995 - 19968: jis0208<<14 | 0x1E<<7 | 0x2E,\n\t20996 - 19968: jis0208<<14 | 0x30<<7 | 0x42,\n\t20997 - 19968: jis0212<<14 | 0x12<<7 | 0x11,\n\t20998 - 19968: jis0208<<14 | 0x29<<7 | 0x0B,\n\t20999 - 19968: jis0208<<14 | 0x1F<<7 | 0x39,\n\t21000 - 19968: jis0208<<14 | 0x13<<7 | 0x01,\n\t21002 - 19968: jis0208<<14 | 0x13<<7 | 0x08,\n\t21003 - 19968: jis0208<<14 | 0x30<<7 | 0x43,\n\t21006 - 19968: jis0208<<14 | 0x30<<7 | 0x45,\n\t21009 - 19968: jis0208<<14 | 0x16<<7 | 0x19,\n\t21010 - 19968: jis0212<<14 | 0x12<<7 | 0x12,\n\t21011 - 19968: jis0212<<14 | 0x12<<7 | 0x13,\n\t21012 - 19968: jis0208<<14 | 0x30<<7 | 0x44,\n\t21013 - 19968: jis0208<<14 | 0x58<<7 | 0x27,\n\t21014 - 19968: jis0212<<14 | 0x12<<7 | 0x15,\n\t21015 - 19968: jis0208<<14 | 0x2D<<7 | 0x52,\n\t21016 - 19968: jis0212<<14 | 0x12<<7 | 0x16,\n\t21021 - 19968: jis0208<<14 | 0x1C<<7 | 0x48,\n\t21026 - 19968: jis0212<<14 | 0x12<<7 | 0x17,\n\t21028 - 19968: jis0208<<14 | 0x27<<7 | 0x1C,\n\t21029 - 19968: jis0208<<14 | 0x29<<7 | 0x2B,\n\t21031 - 19968: jis0208<<14 | 0x30<<7 | 0x46,\n\t21032 - 19968: jis0212<<14 | 0x12<<7 | 0x18,\n\t21033 - 19968: jis0208<<14 | 0x2C<<7 | 0x57,\n\t21034 - 19968: jis0208<<14 | 0x30<<7 | 0x47,\n\t21038 - 19968: jis0208<<14 | 0x30<<7 | 0x48,\n\t21040 - 19968: jis0208<<14 | 0x24<<7 | 0x5D,\n\t21041 - 19968: jis0212<<14 | 0x12<<7 | 0x19,\n\t21042 - 19968: jis0212<<14 | 0x12<<7 | 0x1A,\n\t21043 - 19968: jis0208<<14 | 0x30<<7 | 0x49,\n\t21045 - 19968: jis0212<<14 | 0x12<<7 | 0x1B,\n\t21046 - 19968: jis0208<<14 | 0x1F<<7 | 0x08,\n\t21047 - 19968: jis0208<<14 | 0x19<<7 | 0x5D,\n\t21048 - 19968: jis0208<<14 | 0x16<<7 | 0x53,\n\t21049 - 19968: jis0208<<14 | 0x30<<7 | 0x4A,\n\t21050 - 19968: jis0208<<14 | 0x1A<<7 | 0x28,\n\t21051 - 19968: jis0208<<14 | 0x18<<7 | 0x4E,\n\t21052 - 19968: jis0212<<14 | 0x12<<7 | 0x1C,\n\t21059 - 19968: jis0208<<14 | 0x23<<7 | 0x45,\n\t21060 - 19968: jis0208<<14 | 0x30<<7 | 0x4C,\n\t21061 - 19968: jis0212<<14 | 0x12<<7 | 0x1D,\n\t21063 - 19968: jis0208<<14 | 0x21<<7 | 0x06,\n\t21065 - 19968: jis0212<<14 | 0x12<<7 | 0x1E,\n\t21066 - 19968: jis0208<<14 | 0x19<<7 | 0x4E,\n\t21067 - 19968: jis0208<<14 | 0x30<<7 | 0x4D,\n\t21068 - 19968: jis0208<<14 | 0x30<<7 | 0x4E,\n\t21069 - 19968: jis0208<<14 | 0x20<<7 | 0x0F,\n\t21071 - 19968: jis0208<<14 | 0x30<<7 | 0x4B,\n\t21076 - 19968: jis0208<<14 | 0x30<<7 | 0x50,\n\t21077 - 19968: jis0212<<14 | 0x12<<7 | 0x1F,\n\t21078 - 19968: jis0208<<14 | 0x2A<<7 | 0x15,\n\t21079 - 19968: jis0212<<14 | 0x12<<7 | 0x20,\n\t21080 - 19968: jis0212<<14 | 0x12<<7 | 0x21,\n\t21082 - 19968: jis0212<<14 | 0x12<<7 | 0x22,\n\t21083 - 19968: jis0208<<14 | 0x18<<7 | 0x43,\n\t21084 - 19968: jis0212<<14 | 0x12<<7 | 0x23,\n\t21086 - 19968: jis0208<<14 | 0x30<<7 | 0x4F,\n\t21087 - 19968: jis0212<<14 | 0x12<<7 | 0x24,\n\t21088 - 19968: jis0212<<14 | 0x12<<7 | 0x25,\n\t21089 - 19968: jis0212<<14 | 0x12<<7 | 0x26,\n\t21091 - 19968: jis0208<<14 | 0x16<<7 | 0x54,\n\t21092 - 19968: jis0208<<14 | 0x19<<7 | 0x3D,\n\t21093 - 19968: jis0208<<14 | 0x26<<7 | 0x4C,\n\t21094 - 19968: jis0212<<14 | 0x12<<7 | 0x27,\n\t21097 - 19968: jis0208<<14 | 0x30<<7 | 0x53,\n\t21098 - 19968: jis0208<<14 | 0x30<<7 | 0x51,\n\t21102 - 19968: jis0212<<14 | 0x12<<7 | 0x28,\n\t21103 - 19968: jis0208<<14 | 0x28<<7 | 0x5A,\n\t21104 - 19968: jis0208<<14 | 0x1D<<7 | 0x49,\n\t21105 - 19968: jis0208<<14 | 0x30<<7 | 0x5A,\n\t21106 - 19968: jis0208<<14 | 0x12<<7 | 0x43,\n\t21107 - 19968: jis0208<<14 | 0x30<<7 | 0x54,\n\t21108 - 19968: jis0208<<14 | 0x30<<7 | 0x52,\n\t21109 - 19968: jis0208<<14 | 0x20<<7 | 0x2E,\n\t21111 - 19968: jis0212<<14 | 0x12<<7 | 0x29,\n\t21112 - 19968: jis0212<<14 | 0x12<<7 | 0x2A,\n\t21113 - 19968: jis0212<<14 | 0x12<<7 | 0x2B,\n\t21117 - 19968: jis0208<<14 | 0x30<<7 | 0x56,\n\t21119 - 19968: jis0208<<14 | 0x30<<7 | 0x55,\n\t21120 - 19968: jis0212<<14 | 0x12<<7 | 0x2C,\n\t21122 - 19968: jis0212<<14 | 0x12<<7 | 0x2D,\n\t21123 - 19968: jis0208<<14 | 0x12<<7 | 0x23,\n\t21125 - 19968: jis0212<<14 | 0x12<<7 | 0x2E,\n\t21127 - 19968: jis0208<<14 | 0x16<<7 | 0x3F,\n\t21128 - 19968: jis0208<<14 | 0x30<<7 | 0x5B,\n\t21129 - 19968: jis0208<<14 | 0x2D<<7 | 0x0C,\n\t21130 - 19968: jis0212<<14 | 0x12<<7 | 0x2F,\n\t21132 - 19968: jis0212<<14 | 0x12<<7 | 0x30,\n\t21133 - 19968: jis0208<<14 | 0x30<<7 | 0x57,\n\t21137 - 19968: jis0208<<14 | 0x30<<7 | 0x5C,\n\t21138 - 19968: jis0208<<14 | 0x30<<7 | 0x59,\n\t21139 - 19968: jis0212<<14 | 0x12<<7 | 0x31,\n\t21140 - 19968: jis0208<<14 | 0x30<<7 | 0x58,\n\t21141 - 19968: jis0212<<14 | 0x12<<7 | 0x32,\n\t21142 - 19968: jis0212<<14 | 0x12<<7 | 0x33,\n\t21143 - 19968: jis0212<<14 | 0x12<<7 | 0x34,\n\t21144 - 19968: jis0212<<14 | 0x12<<7 | 0x35,\n\t21146 - 19968: jis0212<<14 | 0x12<<7 | 0x36,\n\t21147 - 19968: jis0208<<14 | 0x2D<<7 | 0x2E,\n\t21148 - 19968: jis0208<<14 | 0x58<<7 | 0x28,\n\t21151 - 19968: jis0208<<14 | 0x17<<7 | 0x58,\n\t21152 - 19968: jis0208<<14 | 0x11<<7 | 0x22,\n\t21155 - 19968: jis0208<<14 | 0x2D<<7 | 0x53,\n\t21156 - 19968: jis0212<<14 | 0x12<<7 | 0x38,\n\t21157 - 19968: jis0212<<14 | 0x12<<7 | 0x39,\n\t21158 - 19968: jis0208<<14 | 0x58<<7 | 0x29,\n\t21159 - 19968: jis0212<<14 | 0x12<<7 | 0x3B,\n\t21161 - 19968: jis0208<<14 | 0x1C<<7 | 0x54,\n\t21162 - 19968: jis0208<<14 | 0x24<<7 | 0x37,\n\t21163 - 19968: jis0208<<14 | 0x18<<7 | 0x44,\n\t21164 - 19968: jis0208<<14 | 0x31<<7 | 0x01,\n\t21165 - 19968: jis0208<<14 | 0x31<<7 | 0x02,\n\t21167 - 19968: jis0208<<14 | 0x5A<<7 | 0x1B,\n\t21168 - 19968: jis0212<<14 | 0x12<<7 | 0x3D,\n\t21169 - 19968: jis0208<<14 | 0x2D<<7 | 0x44,\n\t21172 - 19968: jis0208<<14 | 0x2E<<7 | 0x0A,\n\t21173 - 19968: jis0208<<14 | 0x31<<7 | 0x04,\n\t21174 - 19968: jis0212<<14 | 0x12<<7 | 0x3E,\n\t21175 - 19968: jis0212<<14 | 0x12<<7 | 0x3F,\n\t21176 - 19968: jis0212<<14 | 0x12<<7 | 0x40,\n\t21177 - 19968: jis0208<<14 | 0x17<<7 | 0x59,\n\t21178 - 19968: jis0212<<14 | 0x12<<7 | 0x41,\n\t21179 - 19968: jis0212<<14 | 0x12<<7 | 0x42,\n\t21180 - 19968: jis0208<<14 | 0x31<<7 | 0x03,\n\t21181 - 19968: jis0212<<14 | 0x12<<7 | 0x43,\n\t21182 - 19968: jis0208<<14 | 0x12<<7 | 0x0E,\n\t21184 - 19968: jis0208<<14 | 0x58<<7 | 0x2A,\n\t21185 - 19968: jis0208<<14 | 0x31<<7 | 0x05,\n\t21187 - 19968: jis0208<<14 | 0x2A<<7 | 0x35,\n\t21188 - 19968: jis0212<<14 | 0x12<<7 | 0x45,\n\t21189 - 19968: jis0208<<14 | 0x23<<7 | 0x1B,\n\t21190 - 19968: jis0212<<14 | 0x12<<7 | 0x46,\n\t21191 - 19968: jis0208<<14 | 0x2C<<7 | 0x05,\n\t21192 - 19968: jis0212<<14 | 0x12<<7 | 0x47,\n\t21193 - 19968: jis0208<<14 | 0x29<<7 | 0x38,\n\t21196 - 19968: jis0212<<14 | 0x12<<7 | 0x48,\n\t21197 - 19968: jis0208<<14 | 0x31<<7 | 0x06,\n\t21199 - 19968: jis0212<<14 | 0x12<<7 | 0x49,\n\t21201 - 19968: jis0212<<14 | 0x12<<7 | 0x4A,\n\t21202 - 19968: jis0208<<14 | 0x4F<<7 | 0x34,\n\t21204 - 19968: jis0212<<14 | 0x12<<7 | 0x4B,\n\t21205 - 19968: jis0208<<14 | 0x25<<7 | 0x0F,\n\t21206 - 19968: jis0212<<14 | 0x12<<7 | 0x4C,\n\t21207 - 19968: jis0208<<14 | 0x31<<7 | 0x07,\n\t21208 - 19968: jis0208<<14 | 0x13<<7 | 0x09,\n\t21209 - 19968: jis0208<<14 | 0x2B<<7 | 0x12,\n\t21211 - 19968: jis0208<<14 | 0x58<<7 | 0x2B,\n\t21212 - 19968: jis0212<<14 | 0x12<<7 | 0x4E,\n\t21213 - 19968: jis0208<<14 | 0x1D<<7 | 0x00,\n\t21214 - 19968: jis0208<<14 | 0x31<<7 | 0x08,\n\t21215 - 19968: jis0208<<14 | 0x29<<7 | 0x46,\n\t21216 - 19968: jis0208<<14 | 0x31<<7 | 0x0C,\n\t21217 - 19968: jis0212<<14 | 0x12<<7 | 0x4F,\n\t21218 - 19968: jis0208<<14 | 0x1F<<7 | 0x09,\n\t21219 - 19968: jis0208<<14 | 0x31<<7 | 0x09,\n\t21220 - 19968: jis0208<<14 | 0x15<<7 | 0x2F,\n\t21221 - 19968: jis0212<<14 | 0x12<<7 | 0x50,\n\t21222 - 19968: jis0208<<14 | 0x31<<7 | 0x0A,\n\t21223 - 19968: jis0208<<14 | 0x13<<7 | 0x0A,\n\t21224 - 19968: jis0212<<14 | 0x12<<7 | 0x51,\n\t21225 - 19968: jis0212<<14 | 0x12<<7 | 0x52,\n\t21226 - 19968: jis0212<<14 | 0x12<<7 | 0x53,\n\t21228 - 19968: jis0212<<14 | 0x12<<7 | 0x54,\n\t21232 - 19968: jis0212<<14 | 0x12<<7 | 0x55,\n\t21233 - 19968: jis0212<<14 | 0x12<<7 | 0x56,\n\t21234 - 19968: jis0208<<14 | 0x16<<7 | 0x0D,\n\t21235 - 19968: jis0208<<14 | 0x31<<7 | 0x0D,\n\t21236 - 19968: jis0212<<14 | 0x12<<7 | 0x57,\n\t21237 - 19968: jis0208<<14 | 0x31<<7 | 0x0E,\n\t21238 - 19968: jis0212<<14 | 0x12<<7 | 0x58,\n\t21239 - 19968: jis0212<<14 | 0x12<<7 | 0x59,\n\t21240 - 19968: jis0208<<14 | 0x31<<7 | 0x0F,\n\t21241 - 19968: jis0208<<14 | 0x31<<7 | 0x10,\n\t21242 - 19968: jis0208<<14 | 0x1B<<7 | 0x3A,\n\t21246 - 19968: jis0208<<14 | 0x17<<7 | 0x5A,\n\t21247 - 19968: jis0208<<14 | 0x2B<<7 | 0x3D,\n\t21248 - 19968: jis0208<<14 | 0x58<<7 | 0x2C,\n\t21249 - 19968: jis0208<<14 | 0x2B<<7 | 0x47,\n\t21250 - 19968: jis0208<<14 | 0x25<<7 | 0x56,\n\t21251 - 19968: jis0212<<14 | 0x12<<7 | 0x5B,\n\t21253 - 19968: jis0208<<14 | 0x29<<7 | 0x50,\n\t21254 - 19968: jis0208<<14 | 0x31<<7 | 0x11,\n\t21255 - 19968: jis0208<<14 | 0x58<<7 | 0x2D,\n\t21256 - 19968: jis0208<<14 | 0x31<<7 | 0x12,\n\t21258 - 19968: jis0212<<14 | 0x12<<7 | 0x5C,\n\t21259 - 19968: jis0212<<14 | 0x12<<7 | 0x5D,\n\t21260 - 19968: jis0212<<14 | 0x13<<7 | 0x00,\n\t21261 - 19968: jis0208<<14 | 0x31<<7 | 0x14,\n\t21263 - 19968: jis0208<<14 | 0x31<<7 | 0x16,\n\t21264 - 19968: jis0208<<14 | 0x31<<7 | 0x15,\n\t21265 - 19968: jis0212<<14 | 0x13<<7 | 0x01,\n\t21267 - 19968: jis0212<<14 | 0x13<<7 | 0x02,\n\t21269 - 19968: jis0208<<14 | 0x31<<7 | 0x17,\n\t21270 - 19968: jis0208<<14 | 0x11<<7 | 0x1C,\n\t21271 - 19968: jis0208<<14 | 0x2A<<7 | 0x2B,\n\t21272 - 19968: jis0212<<14 | 0x13<<7 | 0x03,\n\t21273 - 19968: jis0208<<14 | 0x19<<7 | 0x5B,\n\t21274 - 19968: jis0208<<14 | 0x31<<7 | 0x18,\n\t21275 - 19968: jis0212<<14 | 0x13<<7 | 0x04,\n\t21276 - 19968: jis0212<<14 | 0x13<<7 | 0x05,\n\t21277 - 19968: jis0208<<14 | 0x20<<7 | 0x38,\n\t21278 - 19968: jis0212<<14 | 0x13<<7 | 0x06,\n\t21279 - 19968: jis0212<<14 | 0x13<<7 | 0x07,\n\t21280 - 19968: jis0208<<14 | 0x1D<<7 | 0x01,\n\t21281 - 19968: jis0208<<14 | 0x15<<7 | 0x08,\n\t21283 - 19968: jis0208<<14 | 0x31<<7 | 0x19,\n\t21284 - 19968: jis0208<<14 | 0x58<<7 | 0x2E,\n\t21285 - 19968: jis0212<<14 | 0x13<<7 | 0x08,\n\t21287 - 19968: jis0212<<14 | 0x13<<7 | 0x09,\n\t21288 - 19968: jis0212<<14 | 0x13<<7 | 0x0A,\n\t21289 - 19968: jis0212<<14 | 0x13<<7 | 0x0B,\n\t21290 - 19968: jis0208<<14 | 0x27<<7 | 0x3A,\n\t21291 - 19968: jis0212<<14 | 0x13<<7 | 0x0C,\n\t21292 - 19968: jis0212<<14 | 0x13<<7 | 0x0D,\n\t21293 - 19968: jis0212<<14 | 0x13<<7 | 0x0E,\n\t21295 - 19968: jis0208<<14 | 0x31<<7 | 0x1A,\n\t21296 - 19968: jis0212<<14 | 0x13<<7 | 0x0F,\n\t21297 - 19968: jis0208<<14 | 0x31<<7 | 0x1B,\n\t21298 - 19968: jis0212<<14 | 0x13<<7 | 0x10,\n\t21299 - 19968: jis0208<<14 | 0x31<<7 | 0x1C,\n\t21301 - 19968: jis0212<<14 | 0x13<<7 | 0x11,\n\t21304 - 19968: jis0208<<14 | 0x31<<7 | 0x1D,\n\t21305 - 19968: jis0208<<14 | 0x28<<7 | 0x03,\n\t21306 - 19968: jis0208<<14 | 0x15<<7 | 0x47,\n\t21307 - 19968: jis0208<<14 | 0x0F<<7 | 0x44,\n\t21308 - 19968: jis0212<<14 | 0x13<<7 | 0x12,\n\t21309 - 19968: jis0212<<14 | 0x13<<7 | 0x13,\n\t21310 - 19968: jis0212<<14 | 0x13<<7 | 0x14,\n\t21311 - 19968: jis0208<<14 | 0x25<<7 | 0x1E,\n\t21312 - 19968: jis0208<<14 | 0x31<<7 | 0x1E,\n\t21313 - 19968: jis0208<<14 | 0x1C<<7 | 0x1C,\n\t21314 - 19968: jis0212<<14 | 0x13<<7 | 0x15,\n\t21315 - 19968: jis0208<<14 | 0x1F<<7 | 0x48,\n\t21317 - 19968: jis0208<<14 | 0x31<<7 | 0x20,\n\t21318 - 19968: jis0208<<14 | 0x31<<7 | 0x1F,\n\t21319 - 19968: jis0208<<14 | 0x1D<<7 | 0x02,\n\t21320 - 19968: jis0208<<14 | 0x17<<7 | 0x40,\n\t21321 - 19968: jis0208<<14 | 0x31<<7 | 0x22,\n\t21322 - 19968: jis0208<<14 | 0x27<<7 | 0x1D,\n\t21323 - 19968: jis0212<<14 | 0x13<<7 | 0x17,\n\t21324 - 19968: jis0212<<14 | 0x13<<7 | 0x16,\n\t21325 - 19968: jis0208<<14 | 0x31<<7 | 0x23,\n\t21329 - 19968: jis0208<<14 | 0x27<<7 | 0x3B,\n\t21330 - 19968: jis0208<<14 | 0x21<<7 | 0x13,\n\t21331 - 19968: jis0208<<14 | 0x21<<7 | 0x4D,\n\t21332 - 19968: jis0208<<14 | 0x15<<7 | 0x07,\n\t21335 - 19968: jis0208<<14 | 0x25<<7 | 0x4D,\n\t21336 - 19968: jis0208<<14 | 0x22<<7 | 0x10,\n\t21337 - 19968: jis0212<<14 | 0x13<<7 | 0x18,\n\t21338 - 19968: jis0208<<14 | 0x26<<7 | 0x4D,\n\t21339 - 19968: jis0212<<14 | 0x13<<7 | 0x19,\n\t21340 - 19968: jis0208<<14 | 0x2A<<7 | 0x2D,\n\t21342 - 19968: jis0208<<14 | 0x31<<7 | 0x25,\n\t21344 - 19968: jis0208<<14 | 0x1F<<7 | 0x49,\n\t21345 - 19968: jis0212<<14 | 0x13<<7 | 0x1A,\n\t21347 - 19968: jis0212<<14 | 0x13<<7 | 0x1B,\n\t21349 - 19968: jis0212<<14 | 0x13<<7 | 0x1C,\n\t21350 - 19968: jis0208<<14 | 0x16<<7 | 0x14,\n\t21353 - 19968: jis0208<<14 | 0x31<<7 | 0x26,\n\t21356 - 19968: jis0212<<14 | 0x13<<7 | 0x1D,\n\t21357 - 19968: jis0212<<14 | 0x13<<7 | 0x1E,\n\t21358 - 19968: jis0208<<14 | 0x31<<7 | 0x27,\n\t21359 - 19968: jis0208<<14 | 0x10<<7 | 0x0B,\n\t21360 - 19968: jis0208<<14 | 0x0F<<7 | 0x54,\n\t21361 - 19968: jis0208<<14 | 0x13<<7 | 0x4C,\n\t21362 - 19968: jis0208<<14 | 0x58<<7 | 0x2F,\n\t21363 - 19968: jis0208<<14 | 0x21<<7 | 0x07,\n\t21364 - 19968: jis0208<<14 | 0x14<<7 | 0x30,\n\t21365 - 19968: jis0208<<14 | 0x2C<<7 | 0x50,\n\t21367 - 19968: jis0208<<14 | 0x31<<7 | 0x2A,\n\t21368 - 19968: jis0208<<14 | 0x11<<7 | 0x16,\n\t21369 - 19968: jis0212<<14 | 0x13<<7 | 0x20,\n\t21371 - 19968: jis0208<<14 | 0x31<<7 | 0x29,\n\t21374 - 19968: jis0212<<14 | 0x13<<7 | 0x21,\n\t21375 - 19968: jis0208<<14 | 0x15<<7 | 0x09,\n\t21378 - 19968: jis0208<<14 | 0x31<<7 | 0x2B,\n\t21379 - 19968: jis0212<<14 | 0x13<<7 | 0x22,\n\t21380 - 19968: jis0208<<14 | 0x2B<<7 | 0x50,\n\t21383 - 19968: jis0212<<14 | 0x13<<7 | 0x23,\n\t21384 - 19968: jis0212<<14 | 0x13<<7 | 0x24,\n\t21390 - 19968: jis0212<<14 | 0x13<<7 | 0x25,\n\t21395 - 19968: jis0208<<14 | 0x58<<7 | 0x30,\n\t21396 - 19968: jis0212<<14 | 0x13<<7 | 0x27,\n\t21398 - 19968: jis0208<<14 | 0x31<<7 | 0x2C,\n\t21400 - 19968: jis0208<<14 | 0x2D<<7 | 0x31,\n\t21401 - 19968: jis0212<<14 | 0x13<<7 | 0x28,\n\t21402 - 19968: jis0208<<14 | 0x17<<7 | 0x5B,\n\t21405 - 19968: jis0212<<14 | 0x13<<7 | 0x29,\n\t21407 - 19968: jis0208<<14 | 0x17<<7 | 0x15,\n\t21408 - 19968: jis0208<<14 | 0x31<<7 | 0x2D,\n\t21409 - 19968: jis0212<<14 | 0x13<<7 | 0x2A,\n\t21412 - 19968: jis0212<<14 | 0x13<<7 | 0x2B,\n\t21413 - 19968: jis0208<<14 | 0x31<<7 | 0x2F,\n\t21414 - 19968: jis0208<<14 | 0x31<<7 | 0x2E,\n\t21416 - 19968: jis0208<<14 | 0x1E<<7 | 0x3E,\n\t21417 - 19968: jis0208<<14 | 0x10<<7 | 0x18,\n\t21418 - 19968: jis0212<<14 | 0x13<<7 | 0x2C,\n\t21419 - 19968: jis0212<<14 | 0x13<<7 | 0x2D,\n\t21421 - 19968: jis0208<<14 | 0x10<<7 | 0x3D,\n\t21422 - 19968: jis0208<<14 | 0x31<<7 | 0x30,\n\t21423 - 19968: jis0212<<14 | 0x13<<7 | 0x2E,\n\t21424 - 19968: jis0208<<14 | 0x31<<7 | 0x31,\n\t21426 - 19968: jis0208<<14 | 0x58<<7 | 0x31,\n\t21427 - 19968: jis0208<<14 | 0x17<<7 | 0x16,\n\t21428 - 19968: jis0212<<14 | 0x13<<7 | 0x30,\n\t21429 - 19968: jis0212<<14 | 0x13<<7 | 0x31,\n\t21430 - 19968: jis0208<<14 | 0x31<<7 | 0x32,\n\t21431 - 19968: jis0212<<14 | 0x13<<7 | 0x32,\n\t21432 - 19968: jis0212<<14 | 0x13<<7 | 0x33,\n\t21434 - 19968: jis0212<<14 | 0x13<<7 | 0x34,\n\t21435 - 19968: jis0208<<14 | 0x14<<7 | 0x4D,\n\t21437 - 19968: jis0212<<14 | 0x13<<7 | 0x35,\n\t21440 - 19968: jis0212<<14 | 0x13<<7 | 0x36,\n\t21442 - 19968: jis0208<<14 | 0x1A<<7 | 0x11,\n\t21443 - 19968: jis0208<<14 | 0x31<<7 | 0x33,\n\t21445 - 19968: jis0212<<14 | 0x13<<7 | 0x37,\n\t21448 - 19968: jis0208<<14 | 0x2A<<7 | 0x53,\n\t21449 - 19968: jis0208<<14 | 0x19<<7 | 0x14,\n\t21450 - 19968: jis0208<<14 | 0x14<<7 | 0x39,\n\t21451 - 19968: jis0208<<14 | 0x2C<<7 | 0x06,\n\t21452 - 19968: jis0208<<14 | 0x20<<7 | 0x2F,\n\t21453 - 19968: jis0208<<14 | 0x27<<7 | 0x1E,\n\t21454 - 19968: jis0208<<14 | 0x1B<<7 | 0x5C,\n\t21455 - 19968: jis0212<<14 | 0x13<<7 | 0x38,\n\t21458 - 19968: jis0212<<14 | 0x13<<7 | 0x39,\n\t21459 - 19968: jis0212<<14 | 0x13<<7 | 0x3A,\n\t21460 - 19968: jis0208<<14 | 0x1C<<7 | 0x26,\n\t21461 - 19968: jis0212<<14 | 0x13<<7 | 0x3B,\n\t21462 - 19968: jis0208<<14 | 0x1B<<7 | 0x47,\n\t21463 - 19968: jis0208<<14 | 0x1B<<7 | 0x54,\n\t21465 - 19968: jis0208<<14 | 0x1C<<7 | 0x55,\n\t21466 - 19968: jis0212<<14 | 0x13<<7 | 0x3C,\n\t21467 - 19968: jis0208<<14 | 0x27<<7 | 0x1F,\n\t21469 - 19968: jis0208<<14 | 0x58<<7 | 0x32,\n\t21470 - 19968: jis0212<<14 | 0x13<<7 | 0x3E,\n\t21471 - 19968: jis0208<<14 | 0x31<<7 | 0x36,\n\t21472 - 19968: jis0212<<14 | 0x13<<7 | 0x3F,\n\t21473 - 19968: jis0208<<14 | 0x10<<7 | 0x22,\n\t21474 - 19968: jis0208<<14 | 0x20<<7 | 0x30,\n\t21475 - 19968: jis0208<<14 | 0x17<<7 | 0x5C,\n\t21476 - 19968: jis0208<<14 | 0x17<<7 | 0x24,\n\t21477 - 19968: jis0208<<14 | 0x15<<7 | 0x46,\n\t21478 - 19968: jis0212<<14 | 0x13<<7 | 0x40,\n\t21479 - 19968: jis0212<<14 | 0x13<<7 | 0x41,\n\t21480 - 19968: jis0208<<14 | 0x31<<7 | 0x3A,\n\t21481 - 19968: jis0208<<14 | 0x22<<7 | 0x00,\n\t21482 - 19968: jis0208<<14 | 0x21<<7 | 0x5D,\n\t21483 - 19968: jis0208<<14 | 0x15<<7 | 0x0A,\n\t21484 - 19968: jis0208<<14 | 0x1D<<7 | 0x03,\n\t21485 - 19968: jis0208<<14 | 0x31<<7 | 0x3B,\n\t21486 - 19968: jis0208<<14 | 0x31<<7 | 0x39,\n\t21487 - 19968: jis0208<<14 | 0x11<<7 | 0x23,\n\t21488 - 19968: jis0208<<14 | 0x21<<7 | 0x45,\n\t21489 - 19968: jis0208<<14 | 0x1B<<7 | 0x17,\n\t21490 - 19968: jis0208<<14 | 0x1A<<7 | 0x2A,\n\t21491 - 19968: jis0208<<14 | 0x10<<7 | 0x05,\n\t21493 - 19968: jis0212<<14 | 0x13<<7 | 0x42,\n\t21494 - 19968: jis0208<<14 | 0x12<<7 | 0x4F,\n\t21495 - 19968: jis0208<<14 | 0x18<<7 | 0x45,\n\t21496 - 19968: jis0208<<14 | 0x1A<<7 | 0x29,\n\t21498 - 19968: jis0208<<14 | 0x31<<7 | 0x3C,\n\t21505 - 19968: jis0208<<14 | 0x31<<7 | 0x3D,\n\t21506 - 19968: jis0212<<14 | 0x13<<7 | 0x43,\n\t21507 - 19968: jis0208<<14 | 0x14<<7 | 0x28,\n\t21508 - 19968: jis0208<<14 | 0x12<<7 | 0x25,\n\t21512 - 19968: jis0208<<14 | 0x18<<7 | 0x46,\n\t21513 - 19968: jis0208<<14 | 0x14<<7 | 0x27,\n\t21514 - 19968: jis0208<<14 | 0x23<<7 | 0x3E,\n\t21515 - 19968: jis0208<<14 | 0x10<<7 | 0x04,\n\t21516 - 19968: jis0208<<14 | 0x25<<7 | 0x10,\n\t21517 - 19968: jis0208<<14 | 0x2B<<7 | 0x1D,\n\t21518 - 19968: jis0208<<14 | 0x18<<7 | 0x00,\n\t21519 - 19968: jis0208<<14 | 0x2C<<7 | 0x58,\n\t21520 - 19968: jis0208<<14 | 0x24<<7 | 0x26,\n\t21521 - 19968: jis0208<<14 | 0x17<<7 | 0x5D,\n\t21523 - 19968: jis0212<<14 | 0x13<<7 | 0x44,\n\t21530 - 19968: jis0212<<14 | 0x13<<7 | 0x45,\n\t21531 - 19968: jis0208<<14 | 0x16<<7 | 0x0E,\n\t21533 - 19968: jis0208<<14 | 0x31<<7 | 0x46,\n\t21535 - 19968: jis0208<<14 | 0x15<<7 | 0x42,\n\t21536 - 19968: jis0208<<14 | 0x2A<<7 | 0x29,\n\t21537 - 19968: jis0212<<14 | 0x13<<7 | 0x46,\n\t21542 - 19968: jis0208<<14 | 0x27<<7 | 0x3C,\n\t21543 - 19968: jis0212<<14 | 0x13<<7 | 0x47,\n\t21544 - 19968: jis0212<<14 | 0x13<<7 | 0x48,\n\t21545 - 19968: jis0208<<14 | 0x31<<7 | 0x45,\n\t21546 - 19968: jis0212<<14 | 0x13<<7 | 0x49,\n\t21547 - 19968: jis0208<<14 | 0x13<<7 | 0x3D,\n\t21548 - 19968: jis0208<<14 | 0x31<<7 | 0x40,\n\t21549 - 19968: jis0208<<14 | 0x31<<7 | 0x41,\n\t21550 - 19968: jis0208<<14 | 0x31<<7 | 0x43,\n\t21551 - 19968: jis0212<<14 | 0x13<<7 | 0x4A,\n\t21553 - 19968: jis0212<<14 | 0x13<<7 | 0x4B,\n\t21556 - 19968: jis0212<<14 | 0x13<<7 | 0x4C,\n\t21557 - 19968: jis0212<<14 | 0x13<<7 | 0x4D,\n\t21558 - 19968: jis0208<<14 | 0x31<<7 | 0x44,\n\t21560 - 19968: jis0208<<14 | 0x14<<7 | 0x3A,\n\t21561 - 19968: jis0208<<14 | 0x1E<<7 | 0x40,\n\t21563 - 19968: jis0208<<14 | 0x29<<7 | 0x0C,\n\t21564 - 19968: jis0208<<14 | 0x31<<7 | 0x42,\n\t21565 - 19968: jis0208<<14 | 0x31<<7 | 0x3E,\n\t21566 - 19968: jis0208<<14 | 0x17<<7 | 0x42,\n\t21568 - 19968: jis0208<<14 | 0x31<<7 | 0x3F,\n\t21570 - 19968: jis0208<<14 | 0x2E<<7 | 0x03,\n\t21571 - 19968: jis0212<<14 | 0x13<<7 | 0x4E,\n\t21572 - 19968: jis0212<<14 | 0x13<<7 | 0x4F,\n\t21574 - 19968: jis0208<<14 | 0x29<<7 | 0x51,\n\t21575 - 19968: jis0212<<14 | 0x13<<7 | 0x50,\n\t21576 - 19968: jis0208<<14 | 0x23<<7 | 0x47,\n\t21577 - 19968: jis0208<<14 | 0x17<<7 | 0x41,\n\t21578 - 19968: jis0208<<14 | 0x18<<7 | 0x4F,\n\t21581 - 19968: jis0212<<14 | 0x13<<7 | 0x51,\n\t21582 - 19968: jis0208<<14 | 0x31<<7 | 0x47,\n\t21583 - 19968: jis0212<<14 | 0x13<<7 | 0x52,\n\t21585 - 19968: jis0208<<14 | 0x25<<7 | 0x3C,\n\t21598 - 19968: jis0212<<14 | 0x13<<7 | 0x53,\n\t21599 - 19968: jis0208<<14 | 0x31<<7 | 0x4B,\n\t21602 - 19968: jis0212<<14 | 0x13<<7 | 0x54,\n\t21604 - 19968: jis0212<<14 | 0x13<<7 | 0x55,\n\t21606 - 19968: jis0212<<14 | 0x13<<7 | 0x56,\n\t21607 - 19968: jis0212<<14 | 0x13<<7 | 0x57,\n\t21608 - 19968: jis0208<<14 | 0x1B<<7 | 0x5D,\n\t21609 - 19968: jis0212<<14 | 0x13<<7 | 0x58,\n\t21610 - 19968: jis0208<<14 | 0x1B<<7 | 0x55,\n\t21611 - 19968: jis0212<<14 | 0x13<<7 | 0x59,\n\t21613 - 19968: jis0212<<14 | 0x13<<7 | 0x5A,\n\t21614 - 19968: jis0212<<14 | 0x13<<7 | 0x5B,\n\t21616 - 19968: jis0208<<14 | 0x31<<7 | 0x4E,\n\t21617 - 19968: jis0208<<14 | 0x31<<7 | 0x4C,\n\t21619 - 19968: jis0208<<14 | 0x2B<<7 | 0x02,\n\t21620 - 19968: jis0212<<14 | 0x13<<7 | 0x5C,\n\t21621 - 19968: jis0208<<14 | 0x31<<7 | 0x49,\n\t21622 - 19968: jis0208<<14 | 0x31<<7 | 0x52,\n\t21623 - 19968: jis0208<<14 | 0x31<<7 | 0x4D,\n\t21627 - 19968: jis0208<<14 | 0x31<<7 | 0x50,\n\t21628 - 19968: jis0208<<14 | 0x17<<7 | 0x25,\n\t21629 - 19968: jis0208<<14 | 0x2B<<7 | 0x1E,\n\t21631 - 19968: jis0212<<14 | 0x13<<7 | 0x5D,\n\t21632 - 19968: jis0208<<14 | 0x31<<7 | 0x51,\n\t21633 - 19968: jis0212<<14 | 0x14<<7 | 0x00,\n\t21635 - 19968: jis0212<<14 | 0x14<<7 | 0x01,\n\t21636 - 19968: jis0208<<14 | 0x31<<7 | 0x53,\n\t21637 - 19968: jis0212<<14 | 0x14<<7 | 0x02,\n\t21638 - 19968: jis0208<<14 | 0x31<<7 | 0x55,\n\t21640 - 19968: jis0212<<14 | 0x14<<7 | 0x03,\n\t21641 - 19968: jis0212<<14 | 0x14<<7 | 0x04,\n\t21642 - 19968: jis0208<<14 | 0x58<<7 | 0x35,\n\t21643 - 19968: jis0208<<14 | 0x19<<7 | 0x4F,\n\t21644 - 19968: jis0208<<14 | 0x2E<<7 | 0x21,\n\t21645 - 19968: jis0212<<14 | 0x14<<7 | 0x05,\n\t21646 - 19968: jis0208<<14 | 0x31<<7 | 0x4A,\n\t21647 - 19968: jis0208<<14 | 0x31<<7 | 0x48,\n\t21648 - 19968: jis0208<<14 | 0x31<<7 | 0x54,\n\t21649 - 19968: jis0212<<14 | 0x14<<7 | 0x06,\n\t21650 - 19968: jis0208<<14 | 0x31<<7 | 0x4F,\n\t21653 - 19968: jis0212<<14 | 0x14<<7 | 0x07,\n\t21654 - 19968: jis0212<<14 | 0x14<<7 | 0x08,\n\t21660 - 19968: jis0208<<14 | 0x58<<7 | 0x34,\n\t21663 - 19968: jis0212<<14 | 0x14<<7 | 0x0A,\n\t21665 - 19968: jis0212<<14 | 0x14<<7 | 0x0B,\n\t21666 - 19968: jis0208<<14 | 0x31<<7 | 0x57,\n\t21668 - 19968: jis0208<<14 | 0x32<<7 | 0x02,\n\t21669 - 19968: jis0208<<14 | 0x31<<7 | 0x59,\n\t21670 - 19968: jis0212<<14 | 0x14<<7 | 0x0C,\n\t21671 - 19968: jis0212<<14 | 0x14<<7 | 0x0D,\n\t21672 - 19968: jis0208<<14 | 0x31<<7 | 0x5D,\n\t21673 - 19968: jis0208<<14 | 0x58<<7 | 0x36,\n\t21674 - 19968: jis0212<<14 | 0x14<<7 | 0x0F,\n\t21675 - 19968: jis0208<<14 | 0x32<<7 | 0x00,\n\t21676 - 19968: jis0208<<14 | 0x31<<7 | 0x5A,\n\t21677 - 19968: jis0212<<14 | 0x14<<7 | 0x10,\n\t21678 - 19968: jis0212<<14 | 0x14<<7 | 0x11,\n\t21679 - 19968: jis0208<<14 | 0x32<<7 | 0x1D,\n\t21681 - 19968: jis0212<<14 | 0x14<<7 | 0x12,\n\t21682 - 19968: jis0208<<14 | 0x19<<7 | 0x48,\n\t21683 - 19968: jis0208<<14 | 0x12<<7 | 0x10,\n\t21687 - 19968: jis0212<<14 | 0x14<<7 | 0x13,\n\t21688 - 19968: jis0208<<14 | 0x31<<7 | 0x58,\n\t21689 - 19968: jis0212<<14 | 0x14<<7 | 0x14,\n\t21690 - 19968: jis0212<<14 | 0x14<<7 | 0x15,\n\t21691 - 19968: jis0212<<14 | 0x14<<7 | 0x16,\n\t21692 - 19968: jis0208<<14 | 0x32<<7 | 0x04,\n\t21693 - 19968: jis0208<<14 | 0x0F<<7 | 0x55,\n\t21694 - 19968: jis0208<<14 | 0x32<<7 | 0x03,\n\t21695 - 19968: jis0212<<14 | 0x14<<7 | 0x17,\n\t21696 - 19968: jis0208<<14 | 0x0F<<7 | 0x04,\n\t21697 - 19968: jis0208<<14 | 0x28<<7 | 0x29,\n\t21698 - 19968: jis0208<<14 | 0x32<<7 | 0x01,\n\t21700 - 19968: jis0208<<14 | 0x31<<7 | 0x5B,\n\t21702 - 19968: jis0212<<14 | 0x14<<7 | 0x18,\n\t21703 - 19968: jis0208<<14 | 0x31<<7 | 0x56,\n\t21704 - 19968: jis0208<<14 | 0x31<<7 | 0x5C,\n\t21705 - 19968: jis0208<<14 | 0x19<<7 | 0x27,\n\t21706 - 19968: jis0212<<14 | 0x14<<7 | 0x19,\n\t21709 - 19968: jis0212<<14 | 0x14<<7 | 0x1A,\n\t21710 - 19968: jis0212<<14 | 0x14<<7 | 0x1B,\n\t21720 - 19968: jis0208<<14 | 0x32<<7 | 0x05,\n\t21728 - 19968: jis0212<<14 | 0x14<<7 | 0x1C,\n\t21729 - 19968: jis0208<<14 | 0x0F<<7 | 0x56,\n\t21730 - 19968: jis0208<<14 | 0x32<<7 | 0x0E,\n\t21733 - 19968: jis0208<<14 | 0x32<<7 | 0x06,\n\t21734 - 19968: jis0208<<14 | 0x32<<7 | 0x07,\n\t21736 - 19968: jis0208<<14 | 0x1D<<7 | 0x04,\n\t21737 - 19968: jis0208<<14 | 0x2A<<7 | 0x48,\n\t21738 - 19968: jis0212<<14 | 0x14<<7 | 0x1D,\n\t21740 - 19968: jis0212<<14 | 0x14<<7 | 0x1E,\n\t21741 - 19968: jis0208<<14 | 0x32<<7 | 0x0C,\n\t21742 - 19968: jis0208<<14 | 0x32<<7 | 0x0B,\n\t21743 - 19968: jis0212<<14 | 0x14<<7 | 0x1F,\n\t21746 - 19968: jis0208<<14 | 0x24<<7 | 0x0E,\n\t21750 - 19968: jis0212<<14 | 0x14<<7 | 0x20,\n\t21754 - 19968: jis0208<<14 | 0x32<<7 | 0x0D,\n\t21756 - 19968: jis0212<<14 | 0x14<<7 | 0x21,\n\t21757 - 19968: jis0208<<14 | 0x32<<7 | 0x0A,\n\t21758 - 19968: jis0212<<14 | 0x14<<7 | 0x22,\n\t21759 - 19968: jis0208<<14 | 0x58<<7 | 0x37,\n\t21760 - 19968: jis0212<<14 | 0x14<<7 | 0x24,\n\t21761 - 19968: jis0212<<14 | 0x14<<7 | 0x25,\n\t21764 - 19968: jis0208<<14 | 0x10<<7 | 0x13,\n\t21765 - 19968: jis0212<<14 | 0x14<<7 | 0x26,\n\t21766 - 19968: jis0208<<14 | 0x19<<7 | 0x15,\n\t21767 - 19968: jis0208<<14 | 0x1E<<7 | 0x0F,\n\t21768 - 19968: jis0212<<14 | 0x14<<7 | 0x27,\n\t21769 - 19968: jis0212<<14 | 0x14<<7 | 0x28,\n\t21772 - 19968: jis0212<<14 | 0x14<<7 | 0x29,\n\t21773 - 19968: jis0212<<14 | 0x14<<7 | 0x2A,\n\t21774 - 19968: jis0212<<14 | 0x14<<7 | 0x2B,\n\t21775 - 19968: jis0208<<14 | 0x32<<7 | 0x08,\n\t21776 - 19968: jis0208<<14 | 0x24<<7 | 0x41,\n\t21780 - 19968: jis0208<<14 | 0x32<<7 | 0x09,\n\t21781 - 19968: jis0212<<14 | 0x14<<7 | 0x2C,\n\t21782 - 19968: jis0208<<14 | 0x0F<<7 | 0x01,\n\t21802 - 19968: jis0212<<14 | 0x14<<7 | 0x2D,\n\t21803 - 19968: jis0212<<14 | 0x14<<7 | 0x2E,\n\t21806 - 19968: jis0208<<14 | 0x32<<7 | 0x13,\n\t21807 - 19968: jis0208<<14 | 0x2C<<7 | 0x02,\n\t21809 - 19968: jis0208<<14 | 0x1D<<7 | 0x06,\n\t21810 - 19968: jis0212<<14 | 0x14<<7 | 0x2F,\n\t21811 - 19968: jis0208<<14 | 0x32<<7 | 0x19,\n\t21813 - 19968: jis0212<<14 | 0x14<<7 | 0x30,\n\t21814 - 19968: jis0212<<14 | 0x14<<7 | 0x31,\n\t21816 - 19968: jis0208<<14 | 0x32<<7 | 0x18,\n\t21817 - 19968: jis0208<<14 | 0x32<<7 | 0x0F,\n\t21819 - 19968: jis0212<<14 | 0x14<<7 | 0x32,\n\t21820 - 19968: jis0212<<14 | 0x14<<7 | 0x33,\n\t21821 - 19968: jis0212<<14 | 0x14<<7 | 0x34,\n\t21822 - 19968: jis0208<<14 | 0x21<<7 | 0x22,\n\t21824 - 19968: jis0208<<14 | 0x32<<7 | 0x10,\n\t21825 - 19968: jis0212<<14 | 0x14<<7 | 0x35,\n\t21828 - 19968: jis0208<<14 | 0x21<<7 | 0x4E,\n\t21829 - 19968: jis0208<<14 | 0x32<<7 | 0x15,\n\t21830 - 19968: jis0208<<14 | 0x1D<<7 | 0x05,\n\t21831 - 19968: jis0212<<14 | 0x14<<7 | 0x36,\n\t21833 - 19968: jis0212<<14 | 0x14<<7 | 0x37,\n\t21834 - 19968: jis0212<<14 | 0x14<<7 | 0x38,\n\t21836 - 19968: jis0208<<14 | 0x32<<7 | 0x12,\n\t21837 - 19968: jis0212<<14 | 0x14<<7 | 0x39,\n\t21839 - 19968: jis0208<<14 | 0x2B<<7 | 0x43,\n\t21840 - 19968: jis0212<<14 | 0x14<<7 | 0x3A,\n\t21841 - 19968: jis0212<<14 | 0x14<<7 | 0x3B,\n\t21843 - 19968: jis0208<<14 | 0x16<<7 | 0x1B,\n\t21846 - 19968: jis0208<<14 | 0x32<<7 | 0x16,\n\t21847 - 19968: jis0208<<14 | 0x32<<7 | 0x17,\n\t21848 - 19968: jis0212<<14 | 0x14<<7 | 0x3C,\n\t21850 - 19968: jis0212<<14 | 0x14<<7 | 0x3D,\n\t21851 - 19968: jis0212<<14 | 0x14<<7 | 0x3E,\n\t21852 - 19968: jis0208<<14 | 0x32<<7 | 0x14,\n\t21853 - 19968: jis0208<<14 | 0x32<<7 | 0x1A,\n\t21854 - 19968: jis0212<<14 | 0x14<<7 | 0x3F,\n\t21856 - 19968: jis0212<<14 | 0x14<<7 | 0x40,\n\t21857 - 19968: jis0212<<14 | 0x14<<7 | 0x41,\n\t21859 - 19968: jis0208<<14 | 0x32<<7 | 0x11,\n\t21860 - 19968: jis0212<<14 | 0x14<<7 | 0x42,\n\t21862 - 19968: jis0212<<14 | 0x14<<7 | 0x43,\n\t21883 - 19968: jis0208<<14 | 0x32<<7 | 0x20,\n\t21884 - 19968: jis0208<<14 | 0x32<<7 | 0x25,\n\t21886 - 19968: jis0208<<14 | 0x32<<7 | 0x21,\n\t21887 - 19968: jis0212<<14 | 0x14<<7 | 0x44,\n\t21888 - 19968: jis0208<<14 | 0x32<<7 | 0x1C,\n\t21889 - 19968: jis0212<<14 | 0x14<<7 | 0x45,\n\t21890 - 19968: jis0212<<14 | 0x14<<7 | 0x46,\n\t21891 - 19968: jis0208<<14 | 0x32<<7 | 0x26,\n\t21892 - 19968: jis0208<<14 | 0x20<<7 | 0x10,\n\t21894 - 19968: jis0208<<14 | 0x58<<7 | 0x38,\n\t21895 - 19968: jis0208<<14 | 0x32<<7 | 0x28,\n\t21896 - 19968: jis0212<<14 | 0x14<<7 | 0x48,\n\t21897 - 19968: jis0208<<14 | 0x18<<7 | 0x01,\n\t21898 - 19968: jis0208<<14 | 0x32<<7 | 0x1E,\n\t21899 - 19968: jis0208<<14 | 0x22<<7 | 0x5C,\n\t21902 - 19968: jis0212<<14 | 0x14<<7 | 0x49,\n\t21903 - 19968: jis0212<<14 | 0x14<<7 | 0x4A,\n\t21905 - 19968: jis0212<<14 | 0x14<<7 | 0x4B,\n\t21906 - 19968: jis0212<<14 | 0x14<<7 | 0x4C,\n\t21907 - 19968: jis0212<<14 | 0x14<<7 | 0x4D,\n\t21908 - 19968: jis0212<<14 | 0x14<<7 | 0x4E,\n\t21911 - 19968: jis0212<<14 | 0x14<<7 | 0x4F,\n\t21912 - 19968: jis0208<<14 | 0x32<<7 | 0x22,\n\t21913 - 19968: jis0208<<14 | 0x32<<7 | 0x1B,\n\t21914 - 19968: jis0208<<14 | 0x13<<7 | 0x0C,\n\t21916 - 19968: jis0208<<14 | 0x13<<7 | 0x4D,\n\t21917 - 19968: jis0208<<14 | 0x12<<7 | 0x44,\n\t21918 - 19968: jis0208<<14 | 0x32<<7 | 0x23,\n\t21919 - 19968: jis0208<<14 | 0x32<<7 | 0x1F,\n\t21923 - 19968: jis0212<<14 | 0x14<<7 | 0x50,\n\t21924 - 19968: jis0212<<14 | 0x14<<7 | 0x51,\n\t21927 - 19968: jis0208<<14 | 0x16<<7 | 0x55,\n\t21928 - 19968: jis0208<<14 | 0x32<<7 | 0x29,\n\t21929 - 19968: jis0208<<14 | 0x32<<7 | 0x27,\n\t21930 - 19968: jis0208<<14 | 0x20<<7 | 0x32,\n\t21931 - 19968: jis0208<<14 | 0x14<<7 | 0x29,\n\t21932 - 19968: jis0208<<14 | 0x15<<7 | 0x0B,\n\t21933 - 19968: jis0212<<14 | 0x14<<7 | 0x52,\n\t21934 - 19968: jis0208<<14 | 0x32<<7 | 0x24,\n\t21936 - 19968: jis0208<<14 | 0x15<<7 | 0x53,\n\t21938 - 19968: jis0212<<14 | 0x14<<7 | 0x53,\n\t21942 - 19968: jis0208<<14 | 0x10<<7 | 0x23,\n\t21951 - 19968: jis0212<<14 | 0x14<<7 | 0x54,\n\t21953 - 19968: jis0212<<14 | 0x14<<7 | 0x55,\n\t21955 - 19968: jis0212<<14 | 0x14<<7 | 0x56,\n\t21956 - 19968: jis0208<<14 | 0x32<<7 | 0x2D,\n\t21957 - 19968: jis0208<<14 | 0x32<<7 | 0x2B,\n\t21958 - 19968: jis0212<<14 | 0x14<<7 | 0x57,\n\t21959 - 19968: jis0208<<14 | 0x33<<7 | 0x06,\n\t21961 - 19968: jis0212<<14 | 0x14<<7 | 0x58,\n\t21963 - 19968: jis0212<<14 | 0x14<<7 | 0x59,\n\t21964 - 19968: jis0212<<14 | 0x14<<7 | 0x5A,\n\t21966 - 19968: jis0212<<14 | 0x14<<7 | 0x5B,\n\t21969 - 19968: jis0212<<14 | 0x14<<7 | 0x5C,\n\t21970 - 19968: jis0212<<14 | 0x14<<7 | 0x5D,\n\t21971 - 19968: jis0212<<14 | 0x15<<7 | 0x00,\n\t21972 - 19968: jis0208<<14 | 0x32<<7 | 0x30,\n\t21975 - 19968: jis0212<<14 | 0x15<<7 | 0x01,\n\t21976 - 19968: jis0212<<14 | 0x15<<7 | 0x02,\n\t21978 - 19968: jis0208<<14 | 0x32<<7 | 0x2A,\n\t21979 - 19968: jis0212<<14 | 0x15<<7 | 0x03,\n\t21980 - 19968: jis0208<<14 | 0x32<<7 | 0x2E,\n\t21982 - 19968: jis0212<<14 | 0x15<<7 | 0x04,\n\t21983 - 19968: jis0208<<14 | 0x32<<7 | 0x2C,\n\t21986 - 19968: jis0212<<14 | 0x15<<7 | 0x05,\n\t21987 - 19968: jis0208<<14 | 0x1A<<7 | 0x2B,\n\t21988 - 19968: jis0208<<14 | 0x32<<7 | 0x2F,\n\t21993 - 19968: jis0212<<14 | 0x15<<7 | 0x06,\n\t22006 - 19968: jis0212<<14 | 0x15<<7 | 0x07,\n\t22007 - 19968: jis0208<<14 | 0x32<<7 | 0x32,\n\t22009 - 19968: jis0208<<14 | 0x32<<7 | 0x37,\n\t22013 - 19968: jis0208<<14 | 0x32<<7 | 0x35,\n\t22014 - 19968: jis0208<<14 | 0x32<<7 | 0x34,\n\t22015 - 19968: jis0212<<14 | 0x15<<7 | 0x08,\n\t22021 - 19968: jis0212<<14 | 0x15<<7 | 0x09,\n\t22022 - 19968: jis0208<<14 | 0x22<<7 | 0x11,\n\t22024 - 19968: jis0212<<14 | 0x15<<7 | 0x0A,\n\t22025 - 19968: jis0208<<14 | 0x11<<7 | 0x24,\n\t22026 - 19968: jis0212<<14 | 0x15<<7 | 0x0B,\n\t22029 - 19968: jis0212<<14 | 0x15<<7 | 0x0C,\n\t22030 - 19968: jis0212<<14 | 0x15<<7 | 0x0D,\n\t22031 - 19968: jis0212<<14 | 0x15<<7 | 0x0E,\n\t22032 - 19968: jis0212<<14 | 0x15<<7 | 0x0F,\n\t22033 - 19968: jis0212<<14 | 0x15<<7 | 0x10,\n\t22034 - 19968: jis0212<<14 | 0x15<<7 | 0x11,\n\t22036 - 19968: jis0208<<14 | 0x32<<7 | 0x31,\n\t22038 - 19968: jis0208<<14 | 0x32<<7 | 0x33,\n\t22039 - 19968: jis0208<<14 | 0x1D<<7 | 0x07,\n\t22040 - 19968: jis0208<<14 | 0x10<<7 | 0x12,\n\t22041 - 19968: jis0212<<14 | 0x15<<7 | 0x12,\n\t22043 - 19968: jis0208<<14 | 0x32<<7 | 0x36,\n\t22057 - 19968: jis0208<<14 | 0x11<<7 | 0x3D,\n\t22060 - 19968: jis0212<<14 | 0x15<<7 | 0x13,\n\t22063 - 19968: jis0208<<14 | 0x32<<7 | 0x41,\n\t22064 - 19968: jis0212<<14 | 0x15<<7 | 0x14,\n\t22065 - 19968: jis0208<<14 | 0x1D<<7 | 0x5B,\n\t22066 - 19968: jis0208<<14 | 0x32<<7 | 0x3D,\n\t22067 - 19968: jis0212<<14 | 0x15<<7 | 0x15,\n\t22068 - 19968: jis0208<<14 | 0x32<<7 | 0x3B,\n\t22069 - 19968: jis0212<<14 | 0x15<<7 | 0x16,\n\t22070 - 19968: jis0208<<14 | 0x32<<7 | 0x3C,\n\t22071 - 19968: jis0212<<14 | 0x15<<7 | 0x17,\n\t22072 - 19968: jis0208<<14 | 0x32<<7 | 0x3E,\n\t22073 - 19968: jis0212<<14 | 0x15<<7 | 0x18,\n\t22075 - 19968: jis0212<<14 | 0x15<<7 | 0x19,\n\t22076 - 19968: jis0212<<14 | 0x15<<7 | 0x1A,\n\t22077 - 19968: jis0212<<14 | 0x15<<7 | 0x1B,\n\t22079 - 19968: jis0212<<14 | 0x15<<7 | 0x1C,\n\t22080 - 19968: jis0212<<14 | 0x15<<7 | 0x1D,\n\t22081 - 19968: jis0212<<14 | 0x15<<7 | 0x1E,\n\t22082 - 19968: jis0208<<14 | 0x10<<7 | 0x1C,\n\t22083 - 19968: jis0212<<14 | 0x15<<7 | 0x1F,\n\t22084 - 19968: jis0212<<14 | 0x15<<7 | 0x20,\n\t22086 - 19968: jis0212<<14 | 0x15<<7 | 0x21,\n\t22089 - 19968: jis0212<<14 | 0x15<<7 | 0x22,\n\t22091 - 19968: jis0212<<14 | 0x15<<7 | 0x23,\n\t22092 - 19968: jis0208<<14 | 0x20<<7 | 0x18,\n\t22093 - 19968: jis0212<<14 | 0x15<<7 | 0x24,\n\t22094 - 19968: jis0208<<14 | 0x32<<7 | 0x38,\n\t22095 - 19968: jis0212<<14 | 0x15<<7 | 0x25,\n\t22096 - 19968: jis0208<<14 | 0x32<<7 | 0x39,\n\t22100 - 19968: jis0212<<14 | 0x15<<7 | 0x26,\n\t22107 - 19968: jis0208<<14 | 0x12<<7 | 0x59,\n\t22110 - 19968: jis0212<<14 | 0x15<<7 | 0x27,\n\t22112 - 19968: jis0212<<14 | 0x15<<7 | 0x28,\n\t22113 - 19968: jis0212<<14 | 0x15<<7 | 0x29,\n\t22114 - 19968: jis0212<<14 | 0x15<<7 | 0x2A,\n\t22115 - 19968: jis0212<<14 | 0x15<<7 | 0x2B,\n\t22116 - 19968: jis0208<<14 | 0x32<<7 | 0x40,\n\t22118 - 19968: jis0212<<14 | 0x15<<7 | 0x2C,\n\t22120 - 19968: jis0208<<14 | 0x13<<7 | 0x4E,\n\t22121 - 19968: jis0212<<14 | 0x15<<7 | 0x2D,\n\t22122 - 19968: jis0208<<14 | 0x32<<7 | 0x43,\n\t22123 - 19968: jis0208<<14 | 0x32<<7 | 0x3F,\n\t22124 - 19968: jis0208<<14 | 0x32<<7 | 0x42,\n\t22125 - 19968: jis0212<<14 | 0x15<<7 | 0x2E,\n\t22127 - 19968: jis0212<<14 | 0x15<<7 | 0x2F,\n\t22129 - 19968: jis0212<<14 | 0x15<<7 | 0x30,\n\t22130 - 19968: jis0212<<14 | 0x15<<7 | 0x31,\n\t22132 - 19968: jis0208<<14 | 0x29<<7 | 0x0D,\n\t22133 - 19968: jis0212<<14 | 0x15<<7 | 0x32,\n\t22136 - 19968: jis0208<<14 | 0x25<<7 | 0x34,\n\t22138 - 19968: jis0208<<14 | 0x27<<7 | 0x17,\n\t22144 - 19968: jis0208<<14 | 0x32<<7 | 0x45,\n\t22148 - 19968: jis0212<<14 | 0x15<<7 | 0x33,\n\t22149 - 19968: jis0212<<14 | 0x15<<7 | 0x34,\n\t22150 - 19968: jis0208<<14 | 0x32<<7 | 0x44,\n\t22151 - 19968: jis0208<<14 | 0x12<<7 | 0x24,\n\t22152 - 19968: jis0212<<14 | 0x15<<7 | 0x35,\n\t22154 - 19968: jis0208<<14 | 0x32<<7 | 0x46,\n\t22155 - 19968: jis0212<<14 | 0x15<<7 | 0x36,\n\t22156 - 19968: jis0212<<14 | 0x15<<7 | 0x37,\n\t22159 - 19968: jis0208<<14 | 0x32<<7 | 0x49,\n\t22164 - 19968: jis0208<<14 | 0x32<<7 | 0x48,\n\t22165 - 19968: jis0212<<14 | 0x15<<7 | 0x38,\n\t22169 - 19968: jis0212<<14 | 0x15<<7 | 0x39,\n\t22170 - 19968: jis0212<<14 | 0x15<<7 | 0x3A,\n\t22173 - 19968: jis0212<<14 | 0x15<<7 | 0x3B,\n\t22174 - 19968: jis0212<<14 | 0x15<<7 | 0x3C,\n\t22175 - 19968: jis0212<<14 | 0x15<<7 | 0x3D,\n\t22176 - 19968: jis0208<<14 | 0x32<<7 | 0x47,\n\t22178 - 19968: jis0208<<14 | 0x26<<7 | 0x18,\n\t22181 - 19968: jis0208<<14 | 0x32<<7 | 0x4A,\n\t22182 - 19968: jis0212<<14 | 0x15<<7 | 0x3E,\n\t22183 - 19968: jis0212<<14 | 0x15<<7 | 0x3F,\n\t22184 - 19968: jis0212<<14 | 0x15<<7 | 0x40,\n\t22185 - 19968: jis0212<<14 | 0x15<<7 | 0x41,\n\t22187 - 19968: jis0212<<14 | 0x15<<7 | 0x42,\n\t22188 - 19968: jis0212<<14 | 0x15<<7 | 0x43,\n\t22189 - 19968: jis0212<<14 | 0x15<<7 | 0x44,\n\t22190 - 19968: jis0208<<14 | 0x32<<7 | 0x4B,\n\t22193 - 19968: jis0212<<14 | 0x15<<7 | 0x45,\n\t22195 - 19968: jis0212<<14 | 0x15<<7 | 0x46,\n\t22196 - 19968: jis0208<<14 | 0x32<<7 | 0x4D,\n\t22198 - 19968: jis0208<<14 | 0x32<<7 | 0x4C,\n\t22199 - 19968: jis0212<<14 | 0x15<<7 | 0x47,\n\t22204 - 19968: jis0208<<14 | 0x32<<7 | 0x4F,\n\t22206 - 19968: jis0212<<14 | 0x15<<7 | 0x48,\n\t22208 - 19968: jis0208<<14 | 0x32<<7 | 0x52,\n\t22209 - 19968: jis0208<<14 | 0x32<<7 | 0x50,\n\t22210 - 19968: jis0208<<14 | 0x32<<7 | 0x4E,\n\t22211 - 19968: jis0208<<14 | 0x32<<7 | 0x51,\n\t22213 - 19968: jis0212<<14 | 0x15<<7 | 0x49,\n\t22216 - 19968: jis0208<<14 | 0x32<<7 | 0x53,\n\t22217 - 19968: jis0212<<14 | 0x15<<7 | 0x4A,\n\t22218 - 19968: jis0212<<14 | 0x15<<7 | 0x4B,\n\t22219 - 19968: jis0212<<14 | 0x15<<7 | 0x4C,\n\t22220 - 19968: jis0212<<14 | 0x15<<7 | 0x4F,\n\t22221 - 19968: jis0212<<14 | 0x15<<7 | 0x50,\n\t22222 - 19968: jis0208<<14 | 0x32<<7 | 0x54,\n\t22223 - 19968: jis0212<<14 | 0x15<<7 | 0x4D,\n\t22224 - 19968: jis0212<<14 | 0x15<<7 | 0x4E,\n\t22225 - 19968: jis0208<<14 | 0x32<<7 | 0x55,\n\t22227 - 19968: jis0208<<14 | 0x32<<7 | 0x56,\n\t22231 - 19968: jis0208<<14 | 0x32<<7 | 0x57,\n\t22232 - 19968: jis0208<<14 | 0x30<<7 | 0x24,\n\t22233 - 19968: jis0212<<14 | 0x15<<7 | 0x51,\n\t22234 - 19968: jis0208<<14 | 0x1B<<7 | 0x5B,\n\t22235 - 19968: jis0208<<14 | 0x1A<<7 | 0x2C,\n\t22236 - 19968: jis0212<<14 | 0x15<<7 | 0x52,\n\t22237 - 19968: jis0212<<14 | 0x15<<7 | 0x53,\n\t22238 - 19968: jis0208<<14 | 0x11<<7 | 0x52,\n\t22239 - 19968: jis0212<<14 | 0x15<<7 | 0x54,\n\t22240 - 19968: jis0208<<14 | 0x0F<<7 | 0x57,\n\t22241 - 19968: jis0212<<14 | 0x15<<7 | 0x55,\n\t22243 - 19968: jis0208<<14 | 0x22<<7 | 0x23,\n\t22244 - 19968: jis0212<<14 | 0x15<<7 | 0x56,\n\t22245 - 19968: jis0212<<14 | 0x15<<7 | 0x57,\n\t22246 - 19968: jis0212<<14 | 0x15<<7 | 0x58,\n\t22247 - 19968: jis0212<<14 | 0x15<<7 | 0x59,\n\t22248 - 19968: jis0212<<14 | 0x15<<7 | 0x5A,\n\t22251 - 19968: jis0212<<14 | 0x15<<7 | 0x5C,\n\t22253 - 19968: jis0212<<14 | 0x15<<7 | 0x5D,\n\t22254 - 19968: jis0208<<14 | 0x32<<7 | 0x58,\n\t22256 - 19968: jis0208<<14 | 0x19<<7 | 0x03,\n\t22257 - 19968: jis0212<<14 | 0x15<<7 | 0x5B,\n\t22258 - 19968: jis0208<<14 | 0x0F<<7 | 0x2E,\n\t22259 - 19968: jis0208<<14 | 0x1E<<7 | 0x3D,\n\t22262 - 19968: jis0212<<14 | 0x16<<7 | 0x00,\n\t22263 - 19968: jis0212<<14 | 0x16<<7 | 0x01,\n\t22265 - 19968: jis0208<<14 | 0x32<<7 | 0x59,\n\t22266 - 19968: jis0208<<14 | 0x17<<7 | 0x26,\n\t22269 - 19968: jis0208<<14 | 0x18<<7 | 0x50,\n\t22271 - 19968: jis0208<<14 | 0x32<<7 | 0x5B,\n\t22272 - 19968: jis0208<<14 | 0x32<<7 | 0x5A,\n\t22273 - 19968: jis0212<<14 | 0x16<<7 | 0x02,\n\t22274 - 19968: jis0212<<14 | 0x16<<7 | 0x03,\n\t22275 - 19968: jis0208<<14 | 0x29<<7 | 0x3F,\n\t22276 - 19968: jis0208<<14 | 0x32<<7 | 0x5C,\n\t22279 - 19968: jis0212<<14 | 0x16<<7 | 0x04,\n\t22280 - 19968: jis0208<<14 | 0x33<<7 | 0x00,\n\t22281 - 19968: jis0208<<14 | 0x32<<7 | 0x5D,\n\t22282 - 19968: jis0212<<14 | 0x16<<7 | 0x05,\n\t22283 - 19968: jis0208<<14 | 0x33<<7 | 0x01,\n\t22284 - 19968: jis0212<<14 | 0x16<<7 | 0x06,\n\t22285 - 19968: jis0208<<14 | 0x33<<7 | 0x02,\n\t22287 - 19968: jis0208<<14 | 0x16<<7 | 0x56,\n\t22289 - 19968: jis0212<<14 | 0x16<<7 | 0x07,\n\t22290 - 19968: jis0208<<14 | 0x10<<7 | 0x3F,\n\t22291 - 19968: jis0208<<14 | 0x33<<7 | 0x03,\n\t22293 - 19968: jis0212<<14 | 0x16<<7 | 0x08,\n\t22294 - 19968: jis0208<<14 | 0x33<<7 | 0x05,\n\t22296 - 19968: jis0208<<14 | 0x33<<7 | 0x04,\n\t22298 - 19968: jis0212<<14 | 0x16<<7 | 0x09,\n\t22299 - 19968: jis0212<<14 | 0x16<<7 | 0x0A,\n\t22300 - 19968: jis0208<<14 | 0x33<<7 | 0x07,\n\t22301 - 19968: jis0212<<14 | 0x16<<7 | 0x0B,\n\t22303 - 19968: jis0208<<14 | 0x24<<7 | 0x39,\n\t22304 - 19968: jis0212<<14 | 0x16<<7 | 0x0C,\n\t22306 - 19968: jis0212<<14 | 0x16<<7 | 0x0D,\n\t22307 - 19968: jis0212<<14 | 0x16<<7 | 0x0E,\n\t22308 - 19968: jis0212<<14 | 0x16<<7 | 0x0F,\n\t22309 - 19968: jis0212<<14 | 0x16<<7 | 0x10,\n\t22310 - 19968: jis0208<<14 | 0x33<<7 | 0x08,\n\t22311 - 19968: jis0208<<14 | 0x0F<<7 | 0x14,\n\t22312 - 19968: jis0208<<14 | 0x19<<7 | 0x3E,\n\t22313 - 19968: jis0212<<14 | 0x16<<7 | 0x11,\n\t22314 - 19968: jis0212<<14 | 0x16<<7 | 0x12,\n\t22316 - 19968: jis0212<<14 | 0x16<<7 | 0x13,\n\t22317 - 19968: jis0208<<14 | 0x16<<7 | 0x1C,\n\t22318 - 19968: jis0212<<14 | 0x16<<7 | 0x14,\n\t22319 - 19968: jis0212<<14 | 0x16<<7 | 0x15,\n\t22320 - 19968: jis0208<<14 | 0x22<<7 | 0x2E,\n\t22323 - 19968: jis0212<<14 | 0x16<<7 | 0x16,\n\t22324 - 19968: jis0212<<14 | 0x16<<7 | 0x17,\n\t22327 - 19968: jis0208<<14 | 0x33<<7 | 0x09,\n\t22328 - 19968: jis0208<<14 | 0x33<<7 | 0x0A,\n\t22331 - 19968: jis0208<<14 | 0x33<<7 | 0x0C,\n\t22333 - 19968: jis0212<<14 | 0x16<<7 | 0x18,\n\t22334 - 19968: jis0212<<14 | 0x16<<7 | 0x19,\n\t22335 - 19968: jis0212<<14 | 0x16<<7 | 0x1A,\n\t22336 - 19968: jis0208<<14 | 0x33<<7 | 0x0D,\n\t22338 - 19968: jis0208<<14 | 0x19<<7 | 0x43,\n\t22341 - 19968: jis0212<<14 | 0x16<<7 | 0x1B,\n\t22342 - 19968: jis0212<<14 | 0x16<<7 | 0x1C,\n\t22343 - 19968: jis0208<<14 | 0x15<<7 | 0x30,\n\t22346 - 19968: jis0208<<14 | 0x2A<<7 | 0x16,\n\t22348 - 19968: jis0212<<14 | 0x16<<7 | 0x1D,\n\t22349 - 19968: jis0212<<14 | 0x16<<7 | 0x1E,\n\t22350 - 19968: jis0208<<14 | 0x33<<7 | 0x0B,\n\t22351 - 19968: jis0208<<14 | 0x33<<7 | 0x0E,\n\t22352 - 19968: jis0208<<14 | 0x19<<7 | 0x20,\n\t22353 - 19968: jis0208<<14 | 0x18<<7 | 0x02,\n\t22354 - 19968: jis0212<<14 | 0x16<<7 | 0x1F,\n\t22361 - 19968: jis0208<<14 | 0x58<<7 | 0x39,\n\t22369 - 19968: jis0208<<14 | 0x33<<7 | 0x12,\n\t22370 - 19968: jis0212<<14 | 0x16<<7 | 0x20,\n\t22372 - 19968: jis0208<<14 | 0x19<<7 | 0x04,\n\t22373 - 19968: jis0208<<14 | 0x58<<7 | 0x3A,\n\t22374 - 19968: jis0208<<14 | 0x22<<7 | 0x12,\n\t22375 - 19968: jis0212<<14 | 0x16<<7 | 0x22,\n\t22376 - 19968: jis0212<<14 | 0x16<<7 | 0x23,\n\t22377 - 19968: jis0208<<14 | 0x33<<7 | 0x0F,\n\t22378 - 19968: jis0208<<14 | 0x23<<7 | 0x39,\n\t22379 - 19968: jis0212<<14 | 0x16<<7 | 0x24,\n\t22381 - 19968: jis0212<<14 | 0x16<<7 | 0x25,\n\t22382 - 19968: jis0212<<14 | 0x16<<7 | 0x26,\n\t22383 - 19968: jis0212<<14 | 0x16<<7 | 0x27,\n\t22384 - 19968: jis0212<<14 | 0x16<<7 | 0x28,\n\t22385 - 19968: jis0212<<14 | 0x16<<7 | 0x29,\n\t22387 - 19968: jis0212<<14 | 0x16<<7 | 0x2A,\n\t22388 - 19968: jis0212<<14 | 0x16<<7 | 0x2B,\n\t22389 - 19968: jis0212<<14 | 0x16<<7 | 0x2C,\n\t22391 - 19968: jis0212<<14 | 0x16<<7 | 0x2D,\n\t22393 - 19968: jis0212<<14 | 0x16<<7 | 0x2E,\n\t22394 - 19968: jis0212<<14 | 0x16<<7 | 0x2F,\n\t22395 - 19968: jis0212<<14 | 0x16<<7 | 0x30,\n\t22396 - 19968: jis0212<<14 | 0x16<<7 | 0x31,\n\t22398 - 19968: jis0212<<14 | 0x16<<7 | 0x32,\n\t22399 - 19968: jis0208<<14 | 0x33<<7 | 0x13,\n\t22401 - 19968: jis0212<<14 | 0x16<<7 | 0x33,\n\t22402 - 19968: jis0208<<14 | 0x1E<<7 | 0x41,\n\t22403 - 19968: jis0212<<14 | 0x16<<7 | 0x34,\n\t22408 - 19968: jis0208<<14 | 0x33<<7 | 0x11,\n\t22409 - 19968: jis0208<<14 | 0x33<<7 | 0x14,\n\t22411 - 19968: jis0208<<14 | 0x16<<7 | 0x1E,\n\t22412 - 19968: jis0212<<14 | 0x16<<7 | 0x35,\n\t22419 - 19968: jis0208<<14 | 0x33<<7 | 0x15,\n\t22420 - 19968: jis0212<<14 | 0x16<<7 | 0x36,\n\t22421 - 19968: jis0212<<14 | 0x16<<7 | 0x3F,\n\t22423 - 19968: jis0212<<14 | 0x16<<7 | 0x37,\n\t22425 - 19968: jis0212<<14 | 0x16<<7 | 0x38,\n\t22426 - 19968: jis0212<<14 | 0x16<<7 | 0x39,\n\t22428 - 19968: jis0212<<14 | 0x16<<7 | 0x3A,\n\t22429 - 19968: jis0212<<14 | 0x16<<7 | 0x3B,\n\t22430 - 19968: jis0212<<14 | 0x16<<7 | 0x3C,\n\t22431 - 19968: jis0212<<14 | 0x16<<7 | 0x3D,\n\t22432 - 19968: jis0208<<14 | 0x33<<7 | 0x16,\n\t22433 - 19968: jis0212<<14 | 0x16<<7 | 0x3E,\n\t22434 - 19968: jis0208<<14 | 0x18<<7 | 0x03,\n\t22435 - 19968: jis0208<<14 | 0x12<<7 | 0x1F,\n\t22436 - 19968: jis0208<<14 | 0x33<<7 | 0x18,\n\t22439 - 19968: jis0212<<14 | 0x16<<7 | 0x40,\n\t22440 - 19968: jis0212<<14 | 0x16<<7 | 0x41,\n\t22441 - 19968: jis0212<<14 | 0x16<<7 | 0x42,\n\t22442 - 19968: jis0208<<14 | 0x33<<7 | 0x19,\n\t22444 - 19968: jis0208<<14 | 0x58<<7 | 0x3B,\n\t22448 - 19968: jis0208<<14 | 0x33<<7 | 0x1A,\n\t22451 - 19968: jis0208<<14 | 0x33<<7 | 0x17,\n\t22456 - 19968: jis0212<<14 | 0x16<<7 | 0x44,\n\t22461 - 19968: jis0212<<14 | 0x16<<7 | 0x45,\n\t22464 - 19968: jis0208<<14 | 0x33<<7 | 0x10,\n\t22467 - 19968: jis0208<<14 | 0x33<<7 | 0x1B,\n\t22470 - 19968: jis0208<<14 | 0x33<<7 | 0x1C,\n\t22471 - 19968: jis0208<<14 | 0x58<<7 | 0x3D,\n\t22472 - 19968: jis0208<<14 | 0x58<<7 | 0x3C,\n\t22475 - 19968: jis0208<<14 | 0x2A<<7 | 0x43,\n\t22476 - 19968: jis0212<<14 | 0x16<<7 | 0x48,\n\t22478 - 19968: jis0208<<14 | 0x1D<<7 | 0x4A,\n\t22479 - 19968: jis0212<<14 | 0x16<<7 | 0x49,\n\t22482 - 19968: jis0208<<14 | 0x33<<7 | 0x1E,\n\t22483 - 19968: jis0208<<14 | 0x33<<7 | 0x1F,\n\t22484 - 19968: jis0208<<14 | 0x33<<7 | 0x1D,\n\t22485 - 19968: jis0212<<14 | 0x16<<7 | 0x4A,\n\t22486 - 19968: jis0208<<14 | 0x33<<7 | 0x21,\n\t22492 - 19968: jis0208<<14 | 0x26<<7 | 0x17,\n\t22493 - 19968: jis0212<<14 | 0x16<<7 | 0x4B,\n\t22494 - 19968: jis0212<<14 | 0x16<<7 | 0x4C,\n\t22495 - 19968: jis0208<<14 | 0x0F<<7 | 0x47,\n\t22496 - 19968: jis0208<<14 | 0x28<<7 | 0x35,\n\t22497 - 19968: jis0212<<14 | 0x16<<7 | 0x5D,\n\t22499 - 19968: jis0208<<14 | 0x33<<7 | 0x22,\n\t22500 - 19968: jis0212<<14 | 0x16<<7 | 0x4D,\n\t22502 - 19968: jis0212<<14 | 0x16<<7 | 0x4E,\n\t22503 - 19968: jis0212<<14 | 0x16<<7 | 0x4F,\n\t22505 - 19968: jis0212<<14 | 0x16<<7 | 0x50,\n\t22509 - 19968: jis0212<<14 | 0x16<<7 | 0x51,\n\t22512 - 19968: jis0212<<14 | 0x16<<7 | 0x52,\n\t22516 - 19968: jis0208<<14 | 0x1D<<7 | 0x5C,\n\t22517 - 19968: jis0212<<14 | 0x16<<7 | 0x53,\n\t22518 - 19968: jis0212<<14 | 0x16<<7 | 0x54,\n\t22519 - 19968: jis0208<<14 | 0x1B<<7 | 0x18,\n\t22520 - 19968: jis0212<<14 | 0x16<<7 | 0x55,\n\t22521 - 19968: jis0208<<14 | 0x26<<7 | 0x3C,\n\t22522 - 19968: jis0208<<14 | 0x13<<7 | 0x4F,\n\t22524 - 19968: jis0208<<14 | 0x19<<7 | 0x4A,\n\t22525 - 19968: jis0212<<14 | 0x16<<7 | 0x56,\n\t22526 - 19968: jis0212<<14 | 0x16<<7 | 0x57,\n\t22527 - 19968: jis0212<<14 | 0x16<<7 | 0x58,\n\t22528 - 19968: jis0208<<14 | 0x2A<<7 | 0x38,\n\t22530 - 19968: jis0208<<14 | 0x25<<7 | 0x11,\n\t22531 - 19968: jis0212<<14 | 0x16<<7 | 0x59,\n\t22532 - 19968: jis0212<<14 | 0x16<<7 | 0x5A,\n\t22533 - 19968: jis0208<<14 | 0x16<<7 | 0x57,\n\t22534 - 19968: jis0208<<14 | 0x21<<7 | 0x2E,\n\t22536 - 19968: jis0212<<14 | 0x16<<7 | 0x5B,\n\t22537 - 19968: jis0212<<14 | 0x16<<7 | 0x5C,\n\t22538 - 19968: jis0208<<14 | 0x33<<7 | 0x20,\n\t22539 - 19968: jis0208<<14 | 0x33<<7 | 0x23,\n\t22540 - 19968: jis0212<<14 | 0x17<<7 | 0x00,\n\t22541 - 19968: jis0212<<14 | 0x17<<7 | 0x01,\n\t22549 - 19968: jis0208<<14 | 0x21<<7 | 0x23,\n\t22553 - 19968: jis0208<<14 | 0x33<<7 | 0x24,\n\t22555 - 19968: jis0212<<14 | 0x17<<7 | 0x02,\n\t22557 - 19968: jis0208<<14 | 0x33<<7 | 0x25,\n\t22558 - 19968: jis0212<<14 | 0x17<<7 | 0x03,\n\t22559 - 19968: jis0212<<14 | 0x17<<7 | 0x04,\n\t22560 - 19968: jis0212<<14 | 0x17<<7 | 0x05,\n\t22561 - 19968: jis0208<<14 | 0x33<<7 | 0x27,\n\t22564 - 19968: jis0208<<14 | 0x23<<7 | 0x48,\n\t22566 - 19968: jis0212<<14 | 0x17<<7 | 0x06,\n\t22567 - 19968: jis0212<<14 | 0x17<<7 | 0x07,\n\t22570 - 19968: jis0208<<14 | 0x13<<7 | 0x0D,\n\t22573 - 19968: jis0212<<14 | 0x17<<7 | 0x08,\n\t22575 - 19968: jis0208<<14 | 0x53<<7 | 0x00,\n\t22576 - 19968: jis0208<<14 | 0x10<<7 | 0x40,\n\t22577 - 19968: jis0208<<14 | 0x29<<7 | 0x52,\n\t22578 - 19968: jis0212<<14 | 0x17<<7 | 0x09,\n\t22580 - 19968: jis0208<<14 | 0x1D<<7 | 0x4B,\n\t22581 - 19968: jis0208<<14 | 0x24<<7 | 0x27,\n\t22585 - 19968: jis0212<<14 | 0x17<<7 | 0x0A,\n\t22586 - 19968: jis0208<<14 | 0x19<<7 | 0x45,\n\t22589 - 19968: jis0208<<14 | 0x33<<7 | 0x2D,\n\t22591 - 19968: jis0212<<14 | 0x17<<7 | 0x0B,\n\t22592 - 19968: jis0208<<14 | 0x29<<7 | 0x1C,\n\t22593 - 19968: jis0208<<14 | 0x2D<<7 | 0x3C,\n\t22601 - 19968: jis0212<<14 | 0x17<<7 | 0x0C,\n\t22602 - 19968: jis0208<<14 | 0x11<<7 | 0x53,\n\t22603 - 19968: jis0208<<14 | 0x33<<7 | 0x29,\n\t22604 - 19968: jis0212<<14 | 0x17<<7 | 0x0D,\n\t22605 - 19968: jis0212<<14 | 0x17<<7 | 0x0E,\n\t22607 - 19968: jis0212<<14 | 0x17<<7 | 0x0F,\n\t22608 - 19968: jis0212<<14 | 0x17<<7 | 0x10,\n\t22609 - 19968: jis0208<<14 | 0x20<<7 | 0x19,\n\t22610 - 19968: jis0208<<14 | 0x33<<7 | 0x2C,\n\t22612 - 19968: jis0208<<14 | 0x24<<7 | 0x42,\n\t22613 - 19968: jis0212<<14 | 0x17<<7 | 0x11,\n\t22615 - 19968: jis0208<<14 | 0x24<<7 | 0x28,\n\t22616 - 19968: jis0208<<14 | 0x24<<7 | 0x43,\n\t22617 - 19968: jis0208<<14 | 0x27<<7 | 0x18,\n\t22618 - 19968: jis0208<<14 | 0x23<<7 | 0x2C,\n\t22622 - 19968: jis0208<<14 | 0x19<<7 | 0x28,\n\t22623 - 19968: jis0212<<14 | 0x17<<7 | 0x12,\n\t22625 - 19968: jis0212<<14 | 0x17<<7 | 0x13,\n\t22626 - 19968: jis0208<<14 | 0x33<<7 | 0x28,\n\t22628 - 19968: jis0212<<14 | 0x17<<7 | 0x14,\n\t22631 - 19968: jis0212<<14 | 0x17<<7 | 0x15,\n\t22632 - 19968: jis0212<<14 | 0x17<<7 | 0x16,\n\t22633 - 19968: jis0208<<14 | 0x10<<7 | 0x55,\n\t22635 - 19968: jis0208<<14 | 0x24<<7 | 0x15,\n\t22640 - 19968: jis0208<<14 | 0x33<<7 | 0x2A,\n\t22642 - 19968: jis0208<<14 | 0x33<<7 | 0x26,\n\t22645 - 19968: jis0208<<14 | 0x1E<<7 | 0x2F,\n\t22648 - 19968: jis0212<<14 | 0x17<<7 | 0x17,\n\t22649 - 19968: jis0208<<14 | 0x33<<7 | 0x2E,\n\t22652 - 19968: jis0212<<14 | 0x17<<7 | 0x18,\n\t22654 - 19968: jis0208<<14 | 0x1C<<7 | 0x2D,\n\t22655 - 19968: jis0212<<14 | 0x17<<7 | 0x19,\n\t22656 - 19968: jis0212<<14 | 0x17<<7 | 0x1A,\n\t22657 - 19968: jis0212<<14 | 0x17<<7 | 0x1B,\n\t22659 - 19968: jis0208<<14 | 0x15<<7 | 0x0C,\n\t22661 - 19968: jis0208<<14 | 0x33<<7 | 0x2F,\n\t22663 - 19968: jis0212<<14 | 0x17<<7 | 0x1C,\n\t22664 - 19968: jis0212<<14 | 0x17<<7 | 0x1D,\n\t22665 - 19968: jis0212<<14 | 0x17<<7 | 0x1E,\n\t22666 - 19968: jis0212<<14 | 0x17<<7 | 0x1F,\n\t22668 - 19968: jis0212<<14 | 0x17<<7 | 0x20,\n\t22669 - 19968: jis0212<<14 | 0x17<<7 | 0x21,\n\t22671 - 19968: jis0212<<14 | 0x17<<7 | 0x22,\n\t22672 - 19968: jis0212<<14 | 0x17<<7 | 0x23,\n\t22675 - 19968: jis0208<<14 | 0x29<<7 | 0x47,\n\t22676 - 19968: jis0212<<14 | 0x17<<7 | 0x24,\n\t22678 - 19968: jis0212<<14 | 0x17<<7 | 0x25,\n\t22679 - 19968: jis0208<<14 | 0x20<<7 | 0x5C,\n\t22684 - 19968: jis0208<<14 | 0x23<<7 | 0x25,\n\t22685 - 19968: jis0212<<14 | 0x17<<7 | 0x26,\n\t22686 - 19968: jis0208<<14 | 0x58<<7 | 0x40,\n\t22687 - 19968: jis0208<<14 | 0x33<<7 | 0x31,\n\t22688 - 19968: jis0212<<14 | 0x17<<7 | 0x27,\n\t22689 - 19968: jis0212<<14 | 0x17<<7 | 0x28,\n\t22690 - 19968: jis0212<<14 | 0x17<<7 | 0x29,\n\t22694 - 19968: jis0212<<14 | 0x17<<7 | 0x2A,\n\t22696 - 19968: jis0208<<14 | 0x2A<<7 | 0x2E,\n\t22697 - 19968: jis0212<<14 | 0x17<<7 | 0x2B,\n\t22699 - 19968: jis0208<<14 | 0x33<<7 | 0x32,\n\t22702 - 19968: jis0208<<14 | 0x33<<7 | 0x37,\n\t22705 - 19968: jis0212<<14 | 0x17<<7 | 0x2C,\n\t22706 - 19968: jis0208<<14 | 0x58<<7 | 0x41,\n\t22707 - 19968: jis0208<<14 | 0x29<<7 | 0x0E,\n\t22712 - 19968: jis0208<<14 | 0x33<<7 | 0x36,\n\t22713 - 19968: jis0208<<14 | 0x33<<7 | 0x30,\n\t22714 - 19968: jis0208<<14 | 0x33<<7 | 0x33,\n\t22715 - 19968: jis0208<<14 | 0x33<<7 | 0x35,\n\t22716 - 19968: jis0212<<14 | 0x17<<7 | 0x2F,\n\t22718 - 19968: jis0208<<14 | 0x19<<7 | 0x05,\n\t22721 - 19968: jis0208<<14 | 0x29<<7 | 0x28,\n\t22722 - 19968: jis0212<<14 | 0x17<<7 | 0x30,\n\t22724 - 19968: jis0212<<14 | 0x17<<7 | 0x2E,\n\t22725 - 19968: jis0208<<14 | 0x33<<7 | 0x38,\n\t22727 - 19968: jis0208<<14 | 0x22<<7 | 0x24,\n\t22728 - 19968: jis0212<<14 | 0x17<<7 | 0x31,\n\t22730 - 19968: jis0208<<14 | 0x11<<7 | 0x54,\n\t22732 - 19968: jis0208<<14 | 0x1D<<7 | 0x4C,\n\t22733 - 19968: jis0212<<14 | 0x17<<7 | 0x32,\n\t22734 - 19968: jis0212<<14 | 0x17<<7 | 0x33,\n\t22736 - 19968: jis0212<<14 | 0x17<<7 | 0x34,\n\t22737 - 19968: jis0208<<14 | 0x33<<7 | 0x3A,\n\t22738 - 19968: jis0212<<14 | 0x17<<7 | 0x35,\n\t22739 - 19968: jis0208<<14 | 0x33<<7 | 0x39,\n\t22740 - 19968: jis0212<<14 | 0x17<<7 | 0x36,\n\t22741 - 19968: jis0208<<14 | 0x18<<7 | 0x47,\n\t22742 - 19968: jis0212<<14 | 0x17<<7 | 0x37,\n\t22743 - 19968: jis0208<<14 | 0x33<<7 | 0x3B,\n\t22744 - 19968: jis0208<<14 | 0x33<<7 | 0x3D,\n\t22745 - 19968: jis0208<<14 | 0x33<<7 | 0x3C,\n\t22746 - 19968: jis0212<<14 | 0x17<<7 | 0x38,\n\t22748 - 19968: jis0208<<14 | 0x33<<7 | 0x3F,\n\t22749 - 19968: jis0212<<14 | 0x17<<7 | 0x39,\n\t22750 - 19968: jis0208<<14 | 0x33<<7 | 0x34,\n\t22751 - 19968: jis0208<<14 | 0x33<<7 | 0x41,\n\t22753 - 19968: jis0212<<14 | 0x17<<7 | 0x3A,\n\t22754 - 19968: jis0212<<14 | 0x17<<7 | 0x3B,\n\t22756 - 19968: jis0208<<14 | 0x33<<7 | 0x40,\n\t22757 - 19968: jis0208<<14 | 0x33<<7 | 0x3E,\n\t22761 - 19968: jis0212<<14 | 0x17<<7 | 0x3C,\n\t22763 - 19968: jis0208<<14 | 0x1A<<7 | 0x2D,\n\t22764 - 19968: jis0208<<14 | 0x1E<<7 | 0x30,\n\t22766 - 19968: jis0208<<14 | 0x20<<7 | 0x33,\n\t22767 - 19968: jis0208<<14 | 0x33<<7 | 0x42,\n\t22768 - 19968: jis0208<<14 | 0x1F<<7 | 0x1B,\n\t22769 - 19968: jis0208<<14 | 0x0F<<7 | 0x4C,\n\t22770 - 19968: jis0208<<14 | 0x26<<7 | 0x43,\n\t22771 - 19968: jis0212<<14 | 0x17<<7 | 0x3D,\n\t22775 - 19968: jis0208<<14 | 0x23<<7 | 0x3A,\n\t22777 - 19968: jis0208<<14 | 0x33<<7 | 0x44,\n\t22778 - 19968: jis0208<<14 | 0x33<<7 | 0x43,\n\t22779 - 19968: jis0208<<14 | 0x33<<7 | 0x45,\n\t22780 - 19968: jis0208<<14 | 0x33<<7 | 0x46,\n\t22781 - 19968: jis0208<<14 | 0x33<<7 | 0x47,\n\t22786 - 19968: jis0208<<14 | 0x33<<7 | 0x48,\n\t22789 - 19968: jis0212<<14 | 0x17<<7 | 0x3E,\n\t22790 - 19968: jis0212<<14 | 0x17<<7 | 0x3F,\n\t22793 - 19968: jis0208<<14 | 0x29<<7 | 0x30,\n\t22794 - 19968: jis0208<<14 | 0x33<<7 | 0x49,\n\t22795 - 19968: jis0208<<14 | 0x58<<7 | 0x42,\n\t22796 - 19968: jis0212<<14 | 0x17<<7 | 0x41,\n\t22799 - 19968: jis0208<<14 | 0x11<<7 | 0x25,\n\t22800 - 19968: jis0208<<14 | 0x33<<7 | 0x4A,\n\t22802 - 19968: jis0212<<14 | 0x17<<7 | 0x42,\n\t22803 - 19968: jis0212<<14 | 0x17<<7 | 0x43,\n\t22804 - 19968: jis0212<<14 | 0x17<<7 | 0x44,\n\t22805 - 19968: jis0208<<14 | 0x2C<<7 | 0x1B,\n\t22806 - 19968: jis0208<<14 | 0x12<<7 | 0x0F,\n\t22808 - 19968: jis0208<<14 | 0x31<<7 | 0x28,\n\t22809 - 19968: jis0208<<14 | 0x1C<<7 | 0x27,\n\t22810 - 19968: jis0208<<14 | 0x21<<7 | 0x1E,\n\t22811 - 19968: jis0208<<14 | 0x33<<7 | 0x4B,\n\t22812 - 19968: jis0208<<14 | 0x2B<<7 | 0x4A,\n\t22813 - 19968: jis0212<<14 | 0x17<<7 | 0x46,\n\t22817 - 19968: jis0212<<14 | 0x17<<7 | 0x47,\n\t22818 - 19968: jis0208<<14 | 0x2B<<7 | 0x13,\n\t22819 - 19968: jis0212<<14 | 0x17<<7 | 0x48,\n\t22820 - 19968: jis0212<<14 | 0x17<<7 | 0x49,\n\t22821 - 19968: jis0208<<14 | 0x33<<7 | 0x4D,\n\t22823 - 19968: jis0208<<14 | 0x21<<7 | 0x46,\n\t22824 - 19968: jis0212<<14 | 0x17<<7 | 0x4A,\n\t22825 - 19968: jis0208<<14 | 0x24<<7 | 0x16,\n\t22826 - 19968: jis0208<<14 | 0x21<<7 | 0x1F,\n\t22827 - 19968: jis0208<<14 | 0x28<<7 | 0x36,\n\t22828 - 19968: jis0208<<14 | 0x33<<7 | 0x4E,\n\t22829 - 19968: jis0208<<14 | 0x33<<7 | 0x4F,\n\t22830 - 19968: jis0208<<14 | 0x10<<7 | 0x5A,\n\t22831 - 19968: jis0212<<14 | 0x17<<7 | 0x4B,\n\t22832 - 19968: jis0212<<14 | 0x17<<7 | 0x4C,\n\t22833 - 19968: jis0208<<14 | 0x1B<<7 | 0x19,\n\t22834 - 19968: jis0208<<14 | 0x33<<7 | 0x50,\n\t22835 - 19968: jis0212<<14 | 0x17<<7 | 0x4D,\n\t22837 - 19968: jis0212<<14 | 0x17<<7 | 0x4E,\n\t22838 - 19968: jis0212<<14 | 0x17<<7 | 0x4F,\n\t22839 - 19968: jis0208<<14 | 0x0F<<7 | 0x2F,\n\t22840 - 19968: jis0208<<14 | 0x33<<7 | 0x51,\n\t22846 - 19968: jis0208<<14 | 0x33<<7 | 0x52,\n\t22847 - 19968: jis0212<<14 | 0x17<<7 | 0x50,\n\t22851 - 19968: jis0212<<14 | 0x17<<7 | 0x51,\n\t22852 - 19968: jis0208<<14 | 0x10<<7 | 0x41,\n\t22854 - 19968: jis0212<<14 | 0x17<<7 | 0x52,\n\t22855 - 19968: jis0208<<14 | 0x13<<7 | 0x50,\n\t22856 - 19968: jis0208<<14 | 0x25<<7 | 0x3F,\n\t22857 - 19968: jis0208<<14 | 0x29<<7 | 0x53,\n\t22862 - 19968: jis0208<<14 | 0x33<<7 | 0x56,\n\t22863 - 19968: jis0208<<14 | 0x20<<7 | 0x34,\n\t22864 - 19968: jis0208<<14 | 0x33<<7 | 0x55,\n\t22865 - 19968: jis0208<<14 | 0x16<<7 | 0x1F,\n\t22866 - 19968: jis0212<<14 | 0x17<<7 | 0x53,\n\t22867 - 19968: jis0208<<14 | 0x58<<7 | 0x43,\n\t22868 - 19968: jis0208<<14 | 0x2A<<7 | 0x3A,\n\t22869 - 19968: jis0208<<14 | 0x33<<7 | 0x54,\n\t22871 - 19968: jis0208<<14 | 0x24<<7 | 0x44,\n\t22872 - 19968: jis0208<<14 | 0x33<<7 | 0x58,\n\t22873 - 19968: jis0212<<14 | 0x17<<7 | 0x55,\n\t22874 - 19968: jis0208<<14 | 0x33<<7 | 0x57,\n\t22875 - 19968: jis0208<<14 | 0x58<<7 | 0x44,\n\t22877 - 19968: jis0208<<14 | 0x58<<7 | 0x45,\n\t22878 - 19968: jis0212<<14 | 0x17<<7 | 0x58,\n\t22879 - 19968: jis0212<<14 | 0x17<<7 | 0x59,\n\t22880 - 19968: jis0208<<14 | 0x33<<7 | 0x5A,\n\t22881 - 19968: jis0212<<14 | 0x17<<7 | 0x5A,\n\t22882 - 19968: jis0208<<14 | 0x33<<7 | 0x59,\n\t22883 - 19968: jis0208<<14 | 0x58<<7 | 0x46,\n\t22885 - 19968: jis0208<<14 | 0x10<<7 | 0x5B,\n\t22887 - 19968: jis0208<<14 | 0x33<<7 | 0x5B,\n\t22888 - 19968: jis0208<<14 | 0x1D<<7 | 0x08,\n\t22889 - 19968: jis0208<<14 | 0x33<<7 | 0x5D,\n\t22890 - 19968: jis0208<<14 | 0x22<<7 | 0x04,\n\t22891 - 19968: jis0212<<14 | 0x17<<7 | 0x5C,\n\t22892 - 19968: jis0208<<14 | 0x33<<7 | 0x5C,\n\t22893 - 19968: jis0212<<14 | 0x17<<7 | 0x5D,\n\t22894 - 19968: jis0208<<14 | 0x29<<7 | 0x12,\n\t22895 - 19968: jis0212<<14 | 0x18<<7 | 0x00,\n\t22898 - 19968: jis0212<<14 | 0x18<<7 | 0x01,\n\t22899 - 19968: jis0208<<14 | 0x1C<<7 | 0x56,\n\t22900 - 19968: jis0208<<14 | 0x24<<7 | 0x3A,\n\t22901 - 19968: jis0212<<14 | 0x18<<7 | 0x02,\n\t22902 - 19968: jis0212<<14 | 0x18<<7 | 0x03,\n\t22904 - 19968: jis0208<<14 | 0x34<<7 | 0x00,\n\t22905 - 19968: jis0212<<14 | 0x18<<7 | 0x04,\n\t22907 - 19968: jis0212<<14 | 0x18<<7 | 0x05,\n\t22908 - 19968: jis0212<<14 | 0x18<<7 | 0x06,\n\t22909 - 19968: jis0208<<14 | 0x18<<7 | 0x04,\n\t22913 - 19968: jis0208<<14 | 0x34<<7 | 0x01,\n\t22914 - 19968: jis0208<<14 | 0x26<<7 | 0x00,\n\t22915 - 19968: jis0208<<14 | 0x27<<7 | 0x3D,\n\t22916 - 19968: jis0208<<14 | 0x2B<<7 | 0x30,\n\t22922 - 19968: jis0208<<14 | 0x26<<7 | 0x04,\n\t22923 - 19968: jis0212<<14 | 0x18<<7 | 0x07,\n\t22924 - 19968: jis0212<<14 | 0x18<<7 | 0x08,\n\t22925 - 19968: jis0208<<14 | 0x34<<7 | 0x0A,\n\t22926 - 19968: jis0212<<14 | 0x18<<7 | 0x09,\n\t22930 - 19968: jis0212<<14 | 0x18<<7 | 0x0A,\n\t22931 - 19968: jis0208<<14 | 0x14<<7 | 0x17,\n\t22933 - 19968: jis0212<<14 | 0x18<<7 | 0x0B,\n\t22934 - 19968: jis0208<<14 | 0x2C<<7 | 0x24,\n\t22935 - 19968: jis0212<<14 | 0x18<<7 | 0x0C,\n\t22937 - 19968: jis0208<<14 | 0x2B<<7 | 0x0E,\n\t22939 - 19968: jis0208<<14 | 0x35<<7 | 0x0B,\n\t22941 - 19968: jis0208<<14 | 0x34<<7 | 0x02,\n\t22943 - 19968: jis0212<<14 | 0x18<<7 | 0x0D,\n\t22947 - 19968: jis0208<<14 | 0x34<<7 | 0x05,\n\t22948 - 19968: jis0208<<14 | 0x58<<7 | 0x47,\n\t22949 - 19968: jis0208<<14 | 0x21<<7 | 0x24,\n\t22951 - 19968: jis0212<<14 | 0x18<<7 | 0x0F,\n\t22952 - 19968: jis0208<<14 | 0x2A<<7 | 0x17,\n\t22956 - 19968: jis0208<<14 | 0x24<<7 | 0x29,\n\t22957 - 19968: jis0212<<14 | 0x18<<7 | 0x10,\n\t22958 - 19968: jis0212<<14 | 0x18<<7 | 0x11,\n\t22959 - 19968: jis0212<<14 | 0x18<<7 | 0x12,\n\t22960 - 19968: jis0212<<14 | 0x18<<7 | 0x13,\n\t22962 - 19968: jis0208<<14 | 0x34<<7 | 0x06,\n\t22963 - 19968: jis0212<<14 | 0x18<<7 | 0x14,\n\t22967 - 19968: jis0212<<14 | 0x18<<7 | 0x15,\n\t22969 - 19968: jis0208<<14 | 0x2A<<7 | 0x44,\n\t22970 - 19968: jis0208<<14 | 0x58<<7 | 0x48,\n\t22971 - 19968: jis0208<<14 | 0x19<<7 | 0x29,\n\t22972 - 19968: jis0212<<14 | 0x18<<7 | 0x17,\n\t22974 - 19968: jis0208<<14 | 0x1D<<7 | 0x09,\n\t22977 - 19968: jis0212<<14 | 0x18<<7 | 0x18,\n\t22979 - 19968: jis0212<<14 | 0x18<<7 | 0x19,\n\t22980 - 19968: jis0212<<14 | 0x18<<7 | 0x1A,\n\t22982 - 19968: jis0208<<14 | 0x34<<7 | 0x07,\n\t22984 - 19968: jis0212<<14 | 0x18<<7 | 0x1B,\n\t22985 - 19968: jis0208<<14 | 0x1A<<7 | 0x2F,\n\t22986 - 19968: jis0212<<14 | 0x18<<7 | 0x1C,\n\t22987 - 19968: jis0208<<14 | 0x1A<<7 | 0x2E,\n\t22989 - 19968: jis0212<<14 | 0x18<<7 | 0x1D,\n\t22992 - 19968: jis0208<<14 | 0x0F<<7 | 0x18,\n\t22993 - 19968: jis0208<<14 | 0x17<<7 | 0x27,\n\t22994 - 19968: jis0212<<14 | 0x18<<7 | 0x1E,\n\t22995 - 19968: jis0208<<14 | 0x1F<<7 | 0x0A,\n\t22996 - 19968: jis0208<<14 | 0x0F<<7 | 0x30,\n\t23001 - 19968: jis0208<<14 | 0x34<<7 | 0x0B,\n\t23002 - 19968: jis0208<<14 | 0x34<<7 | 0x0C,\n\t23004 - 19968: jis0208<<14 | 0x34<<7 | 0x09,\n\t23005 - 19968: jis0212<<14 | 0x18<<7 | 0x1F,\n\t23006 - 19968: jis0212<<14 | 0x18<<7 | 0x20,\n\t23007 - 19968: jis0212<<14 | 0x18<<7 | 0x21,\n\t23011 - 19968: jis0212<<14 | 0x18<<7 | 0x22,\n\t23012 - 19968: jis0212<<14 | 0x18<<7 | 0x23,\n\t23013 - 19968: jis0208<<14 | 0x10<<7 | 0x17,\n\t23014 - 19968: jis0208<<14 | 0x13<<7 | 0x0E,\n\t23015 - 19968: jis0212<<14 | 0x18<<7 | 0x24,\n\t23016 - 19968: jis0208<<14 | 0x34<<7 | 0x08,\n\t23018 - 19968: jis0208<<14 | 0x2B<<7 | 0x24,\n\t23019 - 19968: jis0208<<14 | 0x28<<7 | 0x10,\n\t23022 - 19968: jis0212<<14 | 0x18<<7 | 0x25,\n\t23023 - 19968: jis0212<<14 | 0x18<<7 | 0x26,\n\t23025 - 19968: jis0212<<14 | 0x18<<7 | 0x27,\n\t23026 - 19968: jis0212<<14 | 0x18<<7 | 0x28,\n\t23028 - 19968: jis0212<<14 | 0x18<<7 | 0x29,\n\t23030 - 19968: jis0208<<14 | 0x0F<<7 | 0x07,\n\t23031 - 19968: jis0212<<14 | 0x18<<7 | 0x2A,\n\t23035 - 19968: jis0208<<14 | 0x0F<<7 | 0x58,\n\t23039 - 19968: jis0208<<14 | 0x1A<<7 | 0x30,\n\t23040 - 19968: jis0212<<14 | 0x18<<7 | 0x2B,\n\t23041 - 19968: jis0208<<14 | 0x0F<<7 | 0x31,\n\t23043 - 19968: jis0208<<14 | 0x0F<<7 | 0x02,\n\t23044 - 19968: jis0212<<14 | 0x18<<7 | 0x2C,\n\t23049 - 19968: jis0208<<14 | 0x34<<7 | 0x11,\n\t23052 - 19968: jis0212<<14 | 0x18<<7 | 0x2D,\n\t23053 - 19968: jis0212<<14 | 0x18<<7 | 0x2E,\n\t23054 - 19968: jis0212<<14 | 0x18<<7 | 0x2F,\n\t23057 - 19968: jis0208<<14 | 0x34<<7 | 0x0F,\n\t23058 - 19968: jis0212<<14 | 0x18<<7 | 0x30,\n\t23059 - 19968: jis0212<<14 | 0x18<<7 | 0x31,\n\t23064 - 19968: jis0208<<14 | 0x2B<<7 | 0x1B,\n\t23066 - 19968: jis0208<<14 | 0x34<<7 | 0x12,\n\t23068 - 19968: jis0208<<14 | 0x34<<7 | 0x10,\n\t23070 - 19968: jis0212<<14 | 0x18<<7 | 0x32,\n\t23071 - 19968: jis0208<<14 | 0x34<<7 | 0x0E,\n\t23072 - 19968: jis0208<<14 | 0x1E<<7 | 0x10,\n\t23075 - 19968: jis0212<<14 | 0x18<<7 | 0x33,\n\t23076 - 19968: jis0212<<14 | 0x18<<7 | 0x34,\n\t23077 - 19968: jis0208<<14 | 0x34<<7 | 0x0D,\n\t23079 - 19968: jis0212<<14 | 0x18<<7 | 0x35,\n\t23080 - 19968: jis0212<<14 | 0x18<<7 | 0x36,\n\t23081 - 19968: jis0208<<14 | 0x29<<7 | 0x39,\n\t23082 - 19968: jis0212<<14 | 0x18<<7 | 0x37,\n\t23085 - 19968: jis0212<<14 | 0x18<<7 | 0x38,\n\t23087 - 19968: jis0208<<14 | 0x17<<7 | 0x43,\n\t23088 - 19968: jis0212<<14 | 0x18<<7 | 0x39,\n\t23093 - 19968: jis0208<<14 | 0x34<<7 | 0x16,\n\t23094 - 19968: jis0208<<14 | 0x34<<7 | 0x17,\n\t23100 - 19968: jis0208<<14 | 0x1D<<7 | 0x0A,\n\t23104 - 19968: jis0208<<14 | 0x34<<7 | 0x13,\n\t23105 - 19968: jis0208<<14 | 0x2E<<7 | 0x0B,\n\t23108 - 19968: jis0212<<14 | 0x18<<7 | 0x3A,\n\t23109 - 19968: jis0212<<14 | 0x18<<7 | 0x3B,\n\t23110 - 19968: jis0208<<14 | 0x26<<7 | 0x2B,\n\t23111 - 19968: jis0212<<14 | 0x18<<7 | 0x3C,\n\t23112 - 19968: jis0212<<14 | 0x18<<7 | 0x3D,\n\t23113 - 19968: jis0208<<14 | 0x34<<7 | 0x15,\n\t23116 - 19968: jis0212<<14 | 0x18<<7 | 0x3E,\n\t23120 - 19968: jis0212<<14 | 0x18<<7 | 0x3F,\n\t23125 - 19968: jis0212<<14 | 0x18<<7 | 0x40,\n\t23130 - 19968: jis0208<<14 | 0x19<<7 | 0x06,\n\t23134 - 19968: jis0212<<14 | 0x18<<7 | 0x41,\n\t23138 - 19968: jis0208<<14 | 0x34<<7 | 0x18,\n\t23139 - 19968: jis0212<<14 | 0x18<<7 | 0x42,\n\t23141 - 19968: jis0212<<14 | 0x18<<7 | 0x43,\n\t23142 - 19968: jis0208<<14 | 0x28<<7 | 0x37,\n\t23143 - 19968: jis0212<<14 | 0x18<<7 | 0x44,\n\t23146 - 19968: jis0208<<14 | 0x34<<7 | 0x19,\n\t23148 - 19968: jis0208<<14 | 0x34<<7 | 0x14,\n\t23149 - 19968: jis0212<<14 | 0x18<<7 | 0x45,\n\t23159 - 19968: jis0212<<14 | 0x18<<7 | 0x46,\n\t23162 - 19968: jis0212<<14 | 0x18<<7 | 0x47,\n\t23163 - 19968: jis0212<<14 | 0x18<<7 | 0x48,\n\t23166 - 19968: jis0212<<14 | 0x18<<7 | 0x49,\n\t23167 - 19968: jis0208<<14 | 0x2B<<7 | 0x1A,\n\t23179 - 19968: jis0212<<14 | 0x18<<7 | 0x4A,\n\t23184 - 19968: jis0212<<14 | 0x18<<7 | 0x4B,\n\t23186 - 19968: jis0208<<14 | 0x26<<7 | 0x3D,\n\t23187 - 19968: jis0212<<14 | 0x18<<7 | 0x4C,\n\t23190 - 19968: jis0212<<14 | 0x18<<7 | 0x4D,\n\t23193 - 19968: jis0212<<14 | 0x18<<7 | 0x4E,\n\t23194 - 19968: jis0208<<14 | 0x34<<7 | 0x1A,\n\t23195 - 19968: jis0208<<14 | 0x28<<7 | 0x11,\n\t23196 - 19968: jis0212<<14 | 0x18<<7 | 0x4F,\n\t23198 - 19968: jis0212<<14 | 0x18<<7 | 0x50,\n\t23199 - 19968: jis0212<<14 | 0x18<<7 | 0x51,\n\t23200 - 19968: jis0212<<14 | 0x18<<7 | 0x52,\n\t23202 - 19968: jis0212<<14 | 0x18<<7 | 0x53,\n\t23207 - 19968: jis0212<<14 | 0x18<<7 | 0x54,\n\t23212 - 19968: jis0212<<14 | 0x18<<7 | 0x55,\n\t23217 - 19968: jis0212<<14 | 0x18<<7 | 0x56,\n\t23218 - 19968: jis0212<<14 | 0x18<<7 | 0x57,\n\t23219 - 19968: jis0212<<14 | 0x18<<7 | 0x58,\n\t23221 - 19968: jis0212<<14 | 0x18<<7 | 0x59,\n\t23224 - 19968: jis0212<<14 | 0x18<<7 | 0x5A,\n\t23226 - 19968: jis0212<<14 | 0x18<<7 | 0x5B,\n\t23227 - 19968: jis0212<<14 | 0x18<<7 | 0x5C,\n\t23228 - 19968: jis0208<<14 | 0x34<<7 | 0x1B,\n\t23229 - 19968: jis0208<<14 | 0x34<<7 | 0x1F,\n\t23230 - 19968: jis0208<<14 | 0x34<<7 | 0x1C,\n\t23231 - 19968: jis0212<<14 | 0x18<<7 | 0x5D,\n\t23233 - 19968: jis0208<<14 | 0x11<<7 | 0x26,\n\t23234 - 19968: jis0208<<14 | 0x34<<7 | 0x1E,\n\t23236 - 19968: jis0212<<14 | 0x19<<7 | 0x00,\n\t23238 - 19968: jis0212<<14 | 0x19<<7 | 0x01,\n\t23240 - 19968: jis0212<<14 | 0x19<<7 | 0x02,\n\t23241 - 19968: jis0208<<14 | 0x1B<<7 | 0x1A,\n\t23243 - 19968: jis0208<<14 | 0x34<<7 | 0x1D,\n\t23244 - 19968: jis0208<<14 | 0x16<<7 | 0x58,\n\t23247 - 19968: jis0212<<14 | 0x19<<7 | 0x03,\n\t23248 - 19968: jis0208<<14 | 0x34<<7 | 0x2B,\n\t23254 - 19968: jis0208<<14 | 0x34<<7 | 0x24,\n\t23255 - 19968: jis0208<<14 | 0x34<<7 | 0x21,\n\t23258 - 19968: jis0212<<14 | 0x19<<7 | 0x04,\n\t23260 - 19968: jis0212<<14 | 0x19<<7 | 0x05,\n\t23264 - 19968: jis0212<<14 | 0x19<<7 | 0x06,\n\t23265 - 19968: jis0208<<14 | 0x22<<7 | 0x43,\n\t23267 - 19968: jis0208<<14 | 0x34<<7 | 0x20,\n\t23269 - 19968: jis0212<<14 | 0x19<<7 | 0x07,\n\t23270 - 19968: jis0208<<14 | 0x34<<7 | 0x22,\n\t23273 - 19968: jis0208<<14 | 0x34<<7 | 0x23,\n\t23274 - 19968: jis0212<<14 | 0x19<<7 | 0x08,\n\t23278 - 19968: jis0212<<14 | 0x19<<7 | 0x09,\n\t23285 - 19968: jis0212<<14 | 0x19<<7 | 0x0A,\n\t23286 - 19968: jis0212<<14 | 0x19<<7 | 0x0B,\n\t23290 - 19968: jis0208<<14 | 0x34<<7 | 0x25,\n\t23291 - 19968: jis0208<<14 | 0x34<<7 | 0x26,\n\t23293 - 19968: jis0212<<14 | 0x19<<7 | 0x0C,\n\t23296 - 19968: jis0212<<14 | 0x19<<7 | 0x0D,\n\t23297 - 19968: jis0212<<14 | 0x19<<7 | 0x0E,\n\t23304 - 19968: jis0212<<14 | 0x19<<7 | 0x0F,\n\t23305 - 19968: jis0208<<14 | 0x13<<7 | 0x51,\n\t23307 - 19968: jis0208<<14 | 0x34<<7 | 0x28,\n\t23308 - 19968: jis0208<<14 | 0x34<<7 | 0x27,\n\t23318 - 19968: jis0208<<14 | 0x34<<7 | 0x29,\n\t23319 - 19968: jis0212<<14 | 0x19<<7 | 0x10,\n\t23321 - 19968: jis0212<<14 | 0x19<<7 | 0x12,\n\t23323 - 19968: jis0212<<14 | 0x19<<7 | 0x13,\n\t23325 - 19968: jis0212<<14 | 0x19<<7 | 0x14,\n\t23329 - 19968: jis0212<<14 | 0x19<<7 | 0x15,\n\t23330 - 19968: jis0208<<14 | 0x1D<<7 | 0x4D,\n\t23333 - 19968: jis0212<<14 | 0x19<<7 | 0x16,\n\t23338 - 19968: jis0208<<14 | 0x34<<7 | 0x2C,\n\t23340 - 19968: jis0208<<14 | 0x23<<7 | 0x3B,\n\t23341 - 19968: jis0212<<14 | 0x19<<7 | 0x17,\n\t23344 - 19968: jis0208<<14 | 0x10<<7 | 0x24,\n\t23346 - 19968: jis0208<<14 | 0x34<<7 | 0x2A,\n\t23348 - 19968: jis0212<<14 | 0x19<<7 | 0x11,\n\t23350 - 19968: jis0208<<14 | 0x34<<7 | 0x2D,\n\t23352 - 19968: jis0212<<14 | 0x19<<7 | 0x18,\n\t23358 - 19968: jis0208<<14 | 0x34<<7 | 0x2E,\n\t23360 - 19968: jis0208<<14 | 0x34<<7 | 0x31,\n\t23361 - 19968: jis0212<<14 | 0x19<<7 | 0x19,\n\t23363 - 19968: jis0208<<14 | 0x34<<7 | 0x2F,\n\t23365 - 19968: jis0208<<14 | 0x34<<7 | 0x30,\n\t23371 - 19968: jis0212<<14 | 0x19<<7 | 0x1A,\n\t23372 - 19968: jis0212<<14 | 0x19<<7 | 0x1B,\n\t23376 - 19968: jis0208<<14 | 0x1A<<7 | 0x31,\n\t23377 - 19968: jis0208<<14 | 0x34<<7 | 0x32,\n\t23378 - 19968: jis0212<<14 | 0x19<<7 | 0x1C,\n\t23380 - 19968: jis0208<<14 | 0x18<<7 | 0x05,\n\t23381 - 19968: jis0208<<14 | 0x34<<7 | 0x33,\n\t23382 - 19968: jis0208<<14 | 0x58<<7 | 0x49,\n\t23383 - 19968: jis0208<<14 | 0x1A<<7 | 0x59,\n\t23384 - 19968: jis0208<<14 | 0x21<<7 | 0x17,\n\t23386 - 19968: jis0208<<14 | 0x34<<7 | 0x34,\n\t23387 - 19968: jis0208<<14 | 0x34<<7 | 0x35,\n\t23388 - 19968: jis0208<<14 | 0x1A<<7 | 0x39,\n\t23389 - 19968: jis0208<<14 | 0x18<<7 | 0x06,\n\t23390 - 19968: jis0212<<14 | 0x19<<7 | 0x1E,\n\t23391 - 19968: jis0208<<14 | 0x2B<<7 | 0x31,\n\t23395 - 19968: jis0208<<14 | 0x14<<7 | 0x07,\n\t23396 - 19968: jis0208<<14 | 0x17<<7 | 0x28,\n\t23397 - 19968: jis0208<<14 | 0x34<<7 | 0x36,\n\t23398 - 19968: jis0208<<14 | 0x12<<7 | 0x37,\n\t23400 - 19968: jis0212<<14 | 0x19<<7 | 0x1F,\n\t23401 - 19968: jis0208<<14 | 0x34<<7 | 0x37,\n\t23403 - 19968: jis0208<<14 | 0x21<<7 | 0x18,\n\t23406 - 19968: jis0212<<14 | 0x19<<7 | 0x20,\n\t23407 - 19968: jis0212<<14 | 0x19<<7 | 0x21,\n\t23408 - 19968: jis0208<<14 | 0x34<<7 | 0x38,\n\t23409 - 19968: jis0208<<14 | 0x35<<7 | 0x02,\n\t23411 - 19968: jis0208<<14 | 0x34<<7 | 0x39,\n\t23413 - 19968: jis0208<<14 | 0x34<<7 | 0x3A,\n\t23416 - 19968: jis0208<<14 | 0x34<<7 | 0x3B,\n\t23418 - 19968: jis0208<<14 | 0x34<<7 | 0x3D,\n\t23420 - 19968: jis0212<<14 | 0x19<<7 | 0x22,\n\t23421 - 19968: jis0212<<14 | 0x19<<7 | 0x23,\n\t23422 - 19968: jis0212<<14 | 0x19<<7 | 0x24,\n\t23423 - 19968: jis0212<<14 | 0x19<<7 | 0x25,\n\t23424 - 19968: jis0208<<14 | 0x34<<7 | 0x3E,\n\t23425 - 19968: jis0212<<14 | 0x19<<7 | 0x26,\n\t23427 - 19968: jis0208<<14 | 0x34<<7 | 0x3F,\n\t23428 - 19968: jis0212<<14 | 0x19<<7 | 0x27,\n\t23429 - 19968: jis0208<<14 | 0x21<<7 | 0x4F,\n\t23430 - 19968: jis0212<<14 | 0x19<<7 | 0x28,\n\t23431 - 19968: jis0208<<14 | 0x10<<7 | 0x06,\n\t23432 - 19968: jis0208<<14 | 0x1B<<7 | 0x48,\n\t23433 - 19968: jis0208<<14 | 0x0F<<7 | 0x21,\n\t23434 - 19968: jis0212<<14 | 0x19<<7 | 0x29,\n\t23435 - 19968: jis0208<<14 | 0x20<<7 | 0x36,\n\t23436 - 19968: jis0208<<14 | 0x13<<7 | 0x0F,\n\t23437 - 19968: jis0208<<14 | 0x1B<<7 | 0x14,\n\t23438 - 19968: jis0212<<14 | 0x19<<7 | 0x2A,\n\t23439 - 19968: jis0208<<14 | 0x18<<7 | 0x07,\n\t23440 - 19968: jis0212<<14 | 0x19<<7 | 0x2B,\n\t23441 - 19968: jis0212<<14 | 0x19<<7 | 0x2C,\n\t23443 - 19968: jis0212<<14 | 0x19<<7 | 0x2D,\n\t23444 - 19968: jis0212<<14 | 0x19<<7 | 0x2E,\n\t23445 - 19968: jis0208<<14 | 0x24<<7 | 0x45,\n\t23446 - 19968: jis0212<<14 | 0x19<<7 | 0x2F,\n\t23447 - 19968: jis0208<<14 | 0x1C<<7 | 0x00,\n\t23448 - 19968: jis0208<<14 | 0x13<<7 | 0x10,\n\t23449 - 19968: jis0208<<14 | 0x22<<7 | 0x47,\n\t23450 - 19968: jis0208<<14 | 0x23<<7 | 0x49,\n\t23451 - 19968: jis0208<<14 | 0x0F<<7 | 0x17,\n\t23452 - 19968: jis0208<<14 | 0x14<<7 | 0x18,\n\t23453 - 19968: jis0208<<14 | 0x29<<7 | 0x54,\n\t23455 - 19968: jis0208<<14 | 0x1B<<7 | 0x21,\n\t23458 - 19968: jis0208<<14 | 0x14<<7 | 0x31,\n\t23459 - 19968: jis0208<<14 | 0x1F<<7 | 0x4A,\n\t23460 - 19968: jis0208<<14 | 0x1B<<7 | 0x1B,\n\t23461 - 19968: jis0208<<14 | 0x2C<<7 | 0x07,\n\t23462 - 19968: jis0208<<14 | 0x34<<7 | 0x40,\n\t23464 - 19968: jis0212<<14 | 0x19<<7 | 0x30,\n\t23465 - 19968: jis0212<<14 | 0x19<<7 | 0x31,\n\t23468 - 19968: jis0212<<14 | 0x19<<7 | 0x32,\n\t23469 - 19968: jis0212<<14 | 0x19<<7 | 0x33,\n\t23470 - 19968: jis0208<<14 | 0x14<<7 | 0x3B,\n\t23471 - 19968: jis0212<<14 | 0x19<<7 | 0x34,\n\t23472 - 19968: jis0208<<14 | 0x19<<7 | 0x2A,\n\t23473 - 19968: jis0212<<14 | 0x19<<7 | 0x35,\n\t23474 - 19968: jis0212<<14 | 0x19<<7 | 0x36,\n\t23475 - 19968: jis0208<<14 | 0x12<<7 | 0x11,\n\t23476 - 19968: jis0208<<14 | 0x10<<7 | 0x42,\n\t23477 - 19968: jis0208<<14 | 0x1D<<7 | 0x0B,\n\t23478 - 19968: jis0208<<14 | 0x11<<7 | 0x27,\n\t23479 - 19968: jis0212<<14 | 0x19<<7 | 0x37,\n\t23480 - 19968: jis0208<<14 | 0x34<<7 | 0x41,\n\t23481 - 19968: jis0208<<14 | 0x2C<<7 | 0x25,\n\t23482 - 19968: jis0212<<14 | 0x19<<7 | 0x38,\n\t23484 - 19968: jis0212<<14 | 0x19<<7 | 0x39,\n\t23487 - 19968: jis0208<<14 | 0x1C<<7 | 0x28,\n\t23488 - 19968: jis0208<<14 | 0x58<<7 | 0x4A,\n\t23489 - 19968: jis0212<<14 | 0x19<<7 | 0x3B,\n\t23490 - 19968: jis0208<<14 | 0x1B<<7 | 0x43,\n\t23491 - 19968: jis0208<<14 | 0x34<<7 | 0x42,\n\t23492 - 19968: jis0208<<14 | 0x13<<7 | 0x52,\n\t23493 - 19968: jis0208<<14 | 0x25<<7 | 0x31,\n\t23494 - 19968: jis0208<<14 | 0x2B<<7 | 0x08,\n\t23495 - 19968: jis0208<<14 | 0x34<<7 | 0x43,\n\t23497 - 19968: jis0208<<14 | 0x34<<7 | 0x44,\n\t23500 - 19968: jis0208<<14 | 0x28<<7 | 0x38,\n\t23501 - 19968: jis0212<<14 | 0x19<<7 | 0x3C,\n\t23503 - 19968: jis0212<<14 | 0x19<<7 | 0x3D,\n\t23504 - 19968: jis0208<<14 | 0x34<<7 | 0x46,\n\t23506 - 19968: jis0208<<14 | 0x13<<7 | 0x07,\n\t23507 - 19968: jis0208<<14 | 0x15<<7 | 0x56,\n\t23508 - 19968: jis0208<<14 | 0x34<<7 | 0x45,\n\t23510 - 19968: jis0212<<14 | 0x19<<7 | 0x3E,\n\t23511 - 19968: jis0212<<14 | 0x19<<7 | 0x3F,\n\t23512 - 19968: jis0208<<14 | 0x58<<7 | 0x4C,\n\t23513 - 19968: jis0212<<14 | 0x19<<7 | 0x41,\n\t23514 - 19968: jis0212<<14 | 0x19<<7 | 0x42,\n\t23515 - 19968: jis0208<<14 | 0x13<<7 | 0x11,\n\t23517 - 19968: jis0208<<14 | 0x1E<<7 | 0x11,\n\t23518 - 19968: jis0208<<14 | 0x34<<7 | 0x4A,\n\t23519 - 19968: jis0208<<14 | 0x1A<<7 | 0x00,\n\t23520 - 19968: jis0212<<14 | 0x19<<7 | 0x43,\n\t23521 - 19968: jis0208<<14 | 0x11<<7 | 0x28,\n\t23522 - 19968: jis0208<<14 | 0x34<<7 | 0x49,\n\t23524 - 19968: jis0208<<14 | 0x34<<7 | 0x47,\n\t23525 - 19968: jis0208<<14 | 0x34<<7 | 0x4B,\n\t23526 - 19968: jis0208<<14 | 0x34<<7 | 0x48,\n\t23527 - 19968: jis0208<<14 | 0x26<<7 | 0x0A,\n\t23528 - 19968: jis0208<<14 | 0x3B<<7 | 0x2C,\n\t23529 - 19968: jis0208<<14 | 0x1E<<7 | 0x12,\n\t23531 - 19968: jis0208<<14 | 0x34<<7 | 0x4C,\n\t23532 - 19968: jis0208<<14 | 0x58<<7 | 0x4D,\n\t23534 - 19968: jis0208<<14 | 0x2D<<7 | 0x1F,\n\t23535 - 19968: jis0212<<14 | 0x19<<7 | 0x44,\n\t23536 - 19968: jis0208<<14 | 0x34<<7 | 0x4D,\n\t23537 - 19968: jis0212<<14 | 0x19<<7 | 0x45,\n\t23539 - 19968: jis0208<<14 | 0x34<<7 | 0x4F,\n\t23540 - 19968: jis0212<<14 | 0x19<<7 | 0x46,\n\t23541 - 19968: jis0208<<14 | 0x22<<7 | 0x5D,\n\t23542 - 19968: jis0208<<14 | 0x34<<7 | 0x4E,\n\t23544 - 19968: jis0208<<14 | 0x1F<<7 | 0x02,\n\t23546 - 19968: jis0208<<14 | 0x1A<<7 | 0x5A,\n\t23549 - 19968: jis0212<<14 | 0x19<<7 | 0x47,\n\t23550 - 19968: jis0208<<14 | 0x21<<7 | 0x2F,\n\t23551 - 19968: jis0208<<14 | 0x1B<<7 | 0x56,\n\t23553 - 19968: jis0208<<14 | 0x28<<7 | 0x54,\n\t23554 - 19968: jis0208<<14 | 0x1F<<7 | 0x4B,\n\t23556 - 19968: jis0208<<14 | 0x1B<<7 | 0x2C,\n\t23557 - 19968: jis0208<<14 | 0x34<<7 | 0x50,\n\t23558 - 19968: jis0208<<14 | 0x1D<<7 | 0x0C,\n\t23559 - 19968: jis0208<<14 | 0x34<<7 | 0x51,\n\t23560 - 19968: jis0208<<14 | 0x34<<7 | 0x52,\n\t23561 - 19968: jis0208<<14 | 0x0F<<7 | 0x32,\n\t23562 - 19968: jis0208<<14 | 0x21<<7 | 0x19,\n\t23563 - 19968: jis0208<<14 | 0x1E<<7 | 0x31,\n\t23564 - 19968: jis0212<<14 | 0x19<<7 | 0x48,\n\t23565 - 19968: jis0208<<14 | 0x34<<7 | 0x53,\n\t23566 - 19968: jis0208<<14 | 0x25<<7 | 0x12,\n\t23567 - 19968: jis0208<<14 | 0x1D<<7 | 0x0D,\n\t23569 - 19968: jis0208<<14 | 0x1D<<7 | 0x0E,\n\t23571 - 19968: jis0208<<14 | 0x34<<7 | 0x54,\n\t23574 - 19968: jis0208<<14 | 0x1F<<7 | 0x4C,\n\t23575 - 19968: jis0212<<14 | 0x19<<7 | 0x49,\n\t23578 - 19968: jis0208<<14 | 0x1D<<7 | 0x0F,\n\t23582 - 19968: jis0208<<14 | 0x58<<7 | 0x4E,\n\t23583 - 19968: jis0212<<14 | 0x19<<7 | 0x4B,\n\t23584 - 19968: jis0208<<14 | 0x34<<7 | 0x55,\n\t23586 - 19968: jis0208<<14 | 0x34<<7 | 0x56,\n\t23587 - 19968: jis0212<<14 | 0x19<<7 | 0x4C,\n\t23588 - 19968: jis0208<<14 | 0x2B<<7 | 0x3F,\n\t23590 - 19968: jis0212<<14 | 0x19<<7 | 0x4D,\n\t23592 - 19968: jis0208<<14 | 0x34<<7 | 0x57,\n\t23593 - 19968: jis0212<<14 | 0x19<<7 | 0x4E,\n\t23595 - 19968: jis0212<<14 | 0x19<<7 | 0x4F,\n\t23596 - 19968: jis0212<<14 | 0x19<<7 | 0x50,\n\t23597 - 19968: jis0208<<14 | 0x15<<7 | 0x25,\n\t23598 - 19968: jis0212<<14 | 0x19<<7 | 0x51,\n\t23600 - 19968: jis0212<<14 | 0x19<<7 | 0x52,\n\t23601 - 19968: jis0208<<14 | 0x1C<<7 | 0x01,\n\t23602 - 19968: jis0212<<14 | 0x19<<7 | 0x53,\n\t23605 - 19968: jis0212<<14 | 0x19<<7 | 0x54,\n\t23606 - 19968: jis0212<<14 | 0x19<<7 | 0x55,\n\t23608 - 19968: jis0208<<14 | 0x34<<7 | 0x58,\n\t23609 - 19968: jis0208<<14 | 0x34<<7 | 0x59,\n\t23610 - 19968: jis0208<<14 | 0x1B<<7 | 0x3B,\n\t23611 - 19968: jis0208<<14 | 0x1E<<7 | 0x0B,\n\t23612 - 19968: jis0208<<14 | 0x25<<7 | 0x53,\n\t23613 - 19968: jis0208<<14 | 0x1E<<7 | 0x33,\n\t23614 - 19968: jis0208<<14 | 0x27<<7 | 0x57,\n\t23615 - 19968: jis0208<<14 | 0x26<<7 | 0x01,\n\t23616 - 19968: jis0208<<14 | 0x15<<7 | 0x28,\n\t23617 - 19968: jis0208<<14 | 0x34<<7 | 0x5A,\n\t23621 - 19968: jis0208<<14 | 0x14<<7 | 0x4E,\n\t23622 - 19968: jis0208<<14 | 0x34<<7 | 0x5B,\n\t23624 - 19968: jis0208<<14 | 0x15<<7 | 0x5D,\n\t23626 - 19968: jis0208<<14 | 0x25<<7 | 0x2E,\n\t23627 - 19968: jis0208<<14 | 0x11<<7 | 0x0F,\n\t23629 - 19968: jis0208<<14 | 0x1A<<7 | 0x32,\n\t23630 - 19968: jis0208<<14 | 0x34<<7 | 0x5C,\n\t23631 - 19968: jis0208<<14 | 0x35<<7 | 0x01,\n\t23632 - 19968: jis0208<<14 | 0x35<<7 | 0x00,\n\t23633 - 19968: jis0208<<14 | 0x15<<7 | 0x5C,\n\t23635 - 19968: jis0208<<14 | 0x34<<7 | 0x5D,\n\t23637 - 19968: jis0208<<14 | 0x24<<7 | 0x17,\n\t23641 - 19968: jis0212<<14 | 0x19<<7 | 0x56,\n\t23642 - 19968: jis0212<<14 | 0x19<<7 | 0x57,\n\t23644 - 19968: jis0212<<14 | 0x19<<7 | 0x58,\n\t23646 - 19968: jis0208<<14 | 0x21<<7 | 0x0F,\n\t23648 - 19968: jis0208<<14 | 0x24<<7 | 0x2A,\n\t23649 - 19968: jis0208<<14 | 0x1B<<7 | 0x27,\n\t23650 - 19968: jis0212<<14 | 0x19<<7 | 0x59,\n\t23651 - 19968: jis0212<<14 | 0x19<<7 | 0x5A,\n\t23652 - 19968: jis0208<<14 | 0x20<<7 | 0x37,\n\t23653 - 19968: jis0208<<14 | 0x2C<<7 | 0x59,\n\t23655 - 19968: jis0212<<14 | 0x19<<7 | 0x5B,\n\t23656 - 19968: jis0212<<14 | 0x19<<7 | 0x5C,\n\t23657 - 19968: jis0212<<14 | 0x19<<7 | 0x5D,\n\t23660 - 19968: jis0208<<14 | 0x35<<7 | 0x03,\n\t23661 - 19968: jis0212<<14 | 0x1A<<7 | 0x00,\n\t23662 - 19968: jis0208<<14 | 0x35<<7 | 0x04,\n\t23663 - 19968: jis0208<<14 | 0x25<<7 | 0x35,\n\t23664 - 19968: jis0212<<14 | 0x1A<<7 | 0x01,\n\t23665 - 19968: jis0208<<14 | 0x1A<<7 | 0x12,\n\t23668 - 19968: jis0212<<14 | 0x1A<<7 | 0x02,\n\t23669 - 19968: jis0212<<14 | 0x1A<<7 | 0x03,\n\t23670 - 19968: jis0208<<14 | 0x35<<7 | 0x06,\n\t23673 - 19968: jis0208<<14 | 0x35<<7 | 0x07,\n\t23674 - 19968: jis0212<<14 | 0x1A<<7 | 0x04,\n\t23675 - 19968: jis0212<<14 | 0x1A<<7 | 0x05,\n\t23676 - 19968: jis0212<<14 | 0x1A<<7 | 0x06,\n\t23677 - 19968: jis0212<<14 | 0x1A<<7 | 0x07,\n\t23687 - 19968: jis0212<<14 | 0x1A<<7 | 0x08,\n\t23688 - 19968: jis0212<<14 | 0x1A<<7 | 0x09,\n\t23690 - 19968: jis0212<<14 | 0x1A<<7 | 0x0A,\n\t23692 - 19968: jis0208<<14 | 0x35<<7 | 0x08,\n\t23695 - 19968: jis0212<<14 | 0x1A<<7 | 0x0B,\n\t23696 - 19968: jis0208<<14 | 0x13<<7 | 0x53,\n\t23697 - 19968: jis0208<<14 | 0x35<<7 | 0x09,\n\t23698 - 19968: jis0212<<14 | 0x1A<<7 | 0x0C,\n\t23700 - 19968: jis0208<<14 | 0x35<<7 | 0x0A,\n\t23709 - 19968: jis0212<<14 | 0x1A<<7 | 0x0D,\n\t23711 - 19968: jis0212<<14 | 0x1A<<7 | 0x0E,\n\t23712 - 19968: jis0212<<14 | 0x1A<<7 | 0x0F,\n\t23713 - 19968: jis0208<<14 | 0x11<<7 | 0x0B,\n\t23714 - 19968: jis0212<<14 | 0x1A<<7 | 0x10,\n\t23715 - 19968: jis0212<<14 | 0x1A<<7 | 0x11,\n\t23718 - 19968: jis0208<<14 | 0x58<<7 | 0x4F,\n\t23720 - 19968: jis0208<<14 | 0x20<<7 | 0x1A,\n\t23721 - 19968: jis0208<<14 | 0x13<<7 | 0x43,\n\t23722 - 19968: jis0212<<14 | 0x1A<<7 | 0x13,\n\t23723 - 19968: jis0208<<14 | 0x35<<7 | 0x0C,\n\t23724 - 19968: jis0208<<14 | 0x2B<<7 | 0x07,\n\t23729 - 19968: jis0208<<14 | 0x21<<7 | 0x31,\n\t23730 - 19968: jis0212<<14 | 0x1A<<7 | 0x14,\n\t23731 - 19968: jis0208<<14 | 0x12<<7 | 0x38,\n\t23732 - 19968: jis0212<<14 | 0x1A<<7 | 0x15,\n\t23733 - 19968: jis0212<<14 | 0x1A<<7 | 0x16,\n\t23734 - 19968: jis0208<<14 | 0x35<<7 | 0x0E,\n\t23735 - 19968: jis0208<<14 | 0x35<<7 | 0x10,\n\t23736 - 19968: jis0208<<14 | 0x13<<7 | 0x3E,\n\t23738 - 19968: jis0208<<14 | 0x58<<7 | 0x50,\n\t23739 - 19968: jis0208<<14 | 0x35<<7 | 0x0D,\n\t23740 - 19968: jis0208<<14 | 0x35<<7 | 0x0F,\n\t23742 - 19968: jis0208<<14 | 0x35<<7 | 0x12,\n\t23749 - 19968: jis0208<<14 | 0x35<<7 | 0x11,\n\t23751 - 19968: jis0208<<14 | 0x35<<7 | 0x13,\n\t23753 - 19968: jis0212<<14 | 0x1A<<7 | 0x18,\n\t23755 - 19968: jis0212<<14 | 0x1A<<7 | 0x19,\n\t23762 - 19968: jis0212<<14 | 0x1A<<7 | 0x1A,\n\t23767 - 19968: jis0212<<14 | 0x1A<<7 | 0x1C,\n\t23769 - 19968: jis0208<<14 | 0x35<<7 | 0x14,\n\t23773 - 19968: jis0212<<14 | 0x1A<<7 | 0x1B,\n\t23776 - 19968: jis0208<<14 | 0x25<<7 | 0x1C,\n\t23777 - 19968: jis0208<<14 | 0x15<<7 | 0x0D,\n\t23784 - 19968: jis0208<<14 | 0x11<<7 | 0x44,\n\t23785 - 19968: jis0208<<14 | 0x35<<7 | 0x15,\n\t23786 - 19968: jis0208<<14 | 0x35<<7 | 0x1A,\n\t23789 - 19968: jis0208<<14 | 0x35<<7 | 0x18,\n\t23790 - 19968: jis0212<<14 | 0x1A<<7 | 0x1D,\n\t23791 - 19968: jis0208<<14 | 0x29<<7 | 0x56,\n\t23792 - 19968: jis0208<<14 | 0x29<<7 | 0x55,\n\t23793 - 19968: jis0212<<14 | 0x1A<<7 | 0x1E,\n\t23794 - 19968: jis0212<<14 | 0x1A<<7 | 0x1F,\n\t23796 - 19968: jis0212<<14 | 0x1A<<7 | 0x20,\n\t23797 - 19968: jis0208<<14 | 0x58<<7 | 0x51,\n\t23798 - 19968: jis0208<<14 | 0x24<<7 | 0x46,\n\t23802 - 19968: jis0208<<14 | 0x35<<7 | 0x17,\n\t23803 - 19968: jis0208<<14 | 0x1C<<7 | 0x33,\n\t23805 - 19968: jis0208<<14 | 0x35<<7 | 0x16,\n\t23809 - 19968: jis0212<<14 | 0x1A<<7 | 0x21,\n\t23814 - 19968: jis0212<<14 | 0x1A<<7 | 0x22,\n\t23815 - 19968: jis0208<<14 | 0x1E<<7 | 0x51,\n\t23819 - 19968: jis0208<<14 | 0x35<<7 | 0x1B,\n\t23821 - 19968: jis0212<<14 | 0x1A<<7 | 0x23,\n\t23822 - 19968: jis0208<<14 | 0x19<<7 | 0x49,\n\t23825 - 19968: jis0208<<14 | 0x35<<7 | 0x21,\n\t23826 - 19968: jis0212<<14 | 0x1A<<7 | 0x24,\n\t23828 - 19968: jis0208<<14 | 0x35<<7 | 0x22,\n\t23829 - 19968: jis0208<<14 | 0x35<<7 | 0x1C,\n\t23830 - 19968: jis0208<<14 | 0x12<<7 | 0x12,\n\t23831 - 19968: jis0208<<14 | 0x35<<7 | 0x1D,\n\t23832 - 19968: jis0208<<14 | 0x35<<7 | 0x26,\n\t23833 - 19968: jis0208<<14 | 0x35<<7 | 0x25,\n\t23834 - 19968: jis0208<<14 | 0x35<<7 | 0x24,\n\t23835 - 19968: jis0208<<14 | 0x35<<7 | 0x20,\n\t23839 - 19968: jis0208<<14 | 0x35<<7 | 0x1F,\n\t23842 - 19968: jis0208<<14 | 0x35<<7 | 0x23,\n\t23843 - 19968: jis0212<<14 | 0x1A<<7 | 0x26,\n\t23844 - 19968: jis0212<<14 | 0x1A<<7 | 0x27,\n\t23846 - 19968: jis0212<<14 | 0x1A<<7 | 0x28,\n\t23847 - 19968: jis0208<<14 | 0x58<<7 | 0x52,\n\t23849 - 19968: jis0208<<14 | 0x29<<7 | 0x57,\n\t23851 - 19968: jis0212<<14 | 0x1A<<7 | 0x25,\n\t23857 - 19968: jis0212<<14 | 0x1A<<7 | 0x2A,\n\t23860 - 19968: jis0212<<14 | 0x1A<<7 | 0x2B,\n\t23865 - 19968: jis0212<<14 | 0x1A<<7 | 0x2C,\n\t23869 - 19968: jis0212<<14 | 0x1A<<7 | 0x2D,\n\t23871 - 19968: jis0212<<14 | 0x1A<<7 | 0x2E,\n\t23874 - 19968: jis0208<<14 | 0x58<<7 | 0x55,\n\t23875 - 19968: jis0212<<14 | 0x1A<<7 | 0x30,\n\t23878 - 19968: jis0212<<14 | 0x1A<<7 | 0x31,\n\t23880 - 19968: jis0212<<14 | 0x1A<<7 | 0x32,\n\t23882 - 19968: jis0212<<14 | 0x1A<<7 | 0x36,\n\t23883 - 19968: jis0208<<14 | 0x35<<7 | 0x2A,\n\t23884 - 19968: jis0208<<14 | 0x35<<7 | 0x27,\n\t23886 - 19968: jis0208<<14 | 0x35<<7 | 0x29,\n\t23888 - 19968: jis0208<<14 | 0x2C<<7 | 0x51,\n\t23889 - 19968: jis0212<<14 | 0x1A<<7 | 0x34,\n\t23890 - 19968: jis0208<<14 | 0x35<<7 | 0x28,\n\t23891 - 19968: jis0208<<14 | 0x58<<7 | 0x53,\n\t23893 - 19968: jis0212<<14 | 0x1A<<7 | 0x33,\n\t23897 - 19968: jis0212<<14 | 0x1A<<7 | 0x35,\n\t23900 - 19968: jis0208<<14 | 0x35<<7 | 0x1E,\n\t23903 - 19968: jis0212<<14 | 0x1A<<7 | 0x37,\n\t23904 - 19968: jis0212<<14 | 0x1A<<7 | 0x38,\n\t23905 - 19968: jis0212<<14 | 0x1A<<7 | 0x39,\n\t23906 - 19968: jis0212<<14 | 0x1A<<7 | 0x3A,\n\t23908 - 19968: jis0212<<14 | 0x1A<<7 | 0x3B,\n\t23913 - 19968: jis0208<<14 | 0x1E<<7 | 0x52,\n\t23914 - 19968: jis0212<<14 | 0x1A<<7 | 0x3C,\n\t23916 - 19968: jis0208<<14 | 0x35<<7 | 0x2B,\n\t23917 - 19968: jis0208<<14 | 0x58<<7 | 0x56,\n\t23919 - 19968: jis0208<<14 | 0x19<<7 | 0x16,\n\t23920 - 19968: jis0212<<14 | 0x1A<<7 | 0x3E,\n\t23923 - 19968: jis0208<<14 | 0x35<<7 | 0x2C,\n\t23926 - 19968: jis0208<<14 | 0x35<<7 | 0x2D,\n\t23929 - 19968: jis0212<<14 | 0x1A<<7 | 0x3F,\n\t23930 - 19968: jis0212<<14 | 0x1A<<7 | 0x40,\n\t23934 - 19968: jis0212<<14 | 0x1A<<7 | 0x41,\n\t23935 - 19968: jis0212<<14 | 0x1A<<7 | 0x42,\n\t23937 - 19968: jis0212<<14 | 0x1A<<7 | 0x43,\n\t23938 - 19968: jis0208<<14 | 0x35<<7 | 0x30,\n\t23939 - 19968: jis0212<<14 | 0x1A<<7 | 0x44,\n\t23940 - 19968: jis0208<<14 | 0x35<<7 | 0x2F,\n\t23943 - 19968: jis0208<<14 | 0x35<<7 | 0x2E,\n\t23944 - 19968: jis0212<<14 | 0x1A<<7 | 0x45,\n\t23946 - 19968: jis0212<<14 | 0x1A<<7 | 0x46,\n\t23947 - 19968: jis0208<<14 | 0x24<<7 | 0x47,\n\t23948 - 19968: jis0208<<14 | 0x35<<7 | 0x19,\n\t23952 - 19968: jis0208<<14 | 0x35<<7 | 0x36,\n\t23954 - 19968: jis0212<<14 | 0x1A<<7 | 0x47,\n\t23955 - 19968: jis0212<<14 | 0x1A<<7 | 0x48,\n\t23956 - 19968: jis0212<<14 | 0x1A<<7 | 0x49,\n\t23957 - 19968: jis0212<<14 | 0x1A<<7 | 0x4A,\n\t23961 - 19968: jis0212<<14 | 0x1A<<7 | 0x4B,\n\t23963 - 19968: jis0212<<14 | 0x1A<<7 | 0x4C,\n\t23965 - 19968: jis0208<<14 | 0x35<<7 | 0x32,\n\t23967 - 19968: jis0212<<14 | 0x1A<<7 | 0x4D,\n\t23968 - 19968: jis0212<<14 | 0x1A<<7 | 0x4E,\n\t23970 - 19968: jis0208<<14 | 0x35<<7 | 0x31,\n\t23975 - 19968: jis0212<<14 | 0x1A<<7 | 0x4F,\n\t23979 - 19968: jis0212<<14 | 0x1A<<7 | 0x50,\n\t23980 - 19968: jis0208<<14 | 0x35<<7 | 0x33,\n\t23982 - 19968: jis0208<<14 | 0x35<<7 | 0x34,\n\t23984 - 19968: jis0212<<14 | 0x1A<<7 | 0x51,\n\t23986 - 19968: jis0212<<14 | 0x45<<7 | 0x53,\n\t23988 - 19968: jis0212<<14 | 0x1A<<7 | 0x52,\n\t23991 - 19968: jis0208<<14 | 0x35<<7 | 0x37,\n\t23992 - 19968: jis0208<<14 | 0x58<<7 | 0x57,\n\t23993 - 19968: jis0208<<14 | 0x58<<7 | 0x58,\n\t23994 - 19968: jis0208<<14 | 0x2D<<7 | 0x45,\n\t23996 - 19968: jis0208<<14 | 0x35<<7 | 0x38,\n\t23997 - 19968: jis0208<<14 | 0x35<<7 | 0x35,\n\t24003 - 19968: jis0212<<14 | 0x1A<<7 | 0x55,\n\t24007 - 19968: jis0212<<14 | 0x1A<<7 | 0x56,\n\t24009 - 19968: jis0208<<14 | 0x35<<7 | 0x39,\n\t24011 - 19968: jis0212<<14 | 0x1A<<7 | 0x57,\n\t24012 - 19968: jis0208<<14 | 0x13<<7 | 0x3F,\n\t24013 - 19968: jis0208<<14 | 0x35<<7 | 0x3A,\n\t24014 - 19968: jis0212<<14 | 0x1A<<7 | 0x59,\n\t24016 - 19968: jis0208<<14 | 0x58<<7 | 0x59,\n\t24018 - 19968: jis0208<<14 | 0x35<<7 | 0x3C,\n\t24019 - 19968: jis0208<<14 | 0x35<<7 | 0x3B,\n\t24022 - 19968: jis0208<<14 | 0x35<<7 | 0x3D,\n\t24024 - 19968: jis0212<<14 | 0x1A<<7 | 0x5A,\n\t24025 - 19968: jis0212<<14 | 0x1A<<7 | 0x5B,\n\t24027 - 19968: jis0208<<14 | 0x35<<7 | 0x3E,\n\t24029 - 19968: jis0208<<14 | 0x1F<<7 | 0x4D,\n\t24030 - 19968: jis0208<<14 | 0x1C<<7 | 0x02,\n\t24032 - 19968: jis0212<<14 | 0x1A<<7 | 0x5C,\n\t24033 - 19968: jis0208<<14 | 0x1C<<7 | 0x43,\n\t24035 - 19968: jis0208<<14 | 0x20<<7 | 0x42,\n\t24036 - 19968: jis0212<<14 | 0x1A<<7 | 0x5D,\n\t24037 - 19968: jis0208<<14 | 0x18<<7 | 0x08,\n\t24038 - 19968: jis0208<<14 | 0x19<<7 | 0x17,\n\t24039 - 19968: jis0208<<14 | 0x18<<7 | 0x09,\n\t24040 - 19968: jis0208<<14 | 0x14<<7 | 0x4F,\n\t24041 - 19968: jis0212<<14 | 0x1B<<7 | 0x00,\n\t24043 - 19968: jis0208<<14 | 0x35<<7 | 0x3F,\n\t24046 - 19968: jis0208<<14 | 0x19<<7 | 0x18,\n\t24049 - 19968: jis0208<<14 | 0x17<<7 | 0x29,\n\t24050 - 19968: jis0208<<14 | 0x35<<7 | 0x40,\n\t24051 - 19968: jis0208<<14 | 0x2B<<7 | 0x05,\n\t24052 - 19968: jis0208<<14 | 0x26<<7 | 0x22,\n\t24053 - 19968: jis0208<<14 | 0x35<<7 | 0x41,\n\t24055 - 19968: jis0208<<14 | 0x18<<7 | 0x0A,\n\t24056 - 19968: jis0212<<14 | 0x1B<<7 | 0x01,\n\t24057 - 19968: jis0212<<14 | 0x1B<<7 | 0x02,\n\t24059 - 19968: jis0208<<14 | 0x13<<7 | 0x0B,\n\t24061 - 19968: jis0208<<14 | 0x22<<7 | 0x06,\n\t24062 - 19968: jis0208<<14 | 0x15<<7 | 0x31,\n\t24064 - 19968: jis0212<<14 | 0x1B<<7 | 0x03,\n\t24066 - 19968: jis0208<<14 | 0x1A<<7 | 0x33,\n\t24067 - 19968: jis0208<<14 | 0x28<<7 | 0x3A,\n\t24070 - 19968: jis0208<<14 | 0x27<<7 | 0x20,\n\t24071 - 19968: jis0212<<14 | 0x1B<<7 | 0x04,\n\t24075 - 19968: jis0208<<14 | 0x35<<7 | 0x42,\n\t24076 - 19968: jis0208<<14 | 0x13<<7 | 0x54,\n\t24077 - 19968: jis0212<<14 | 0x1B<<7 | 0x05,\n\t24081 - 19968: jis0208<<14 | 0x35<<7 | 0x45,\n\t24082 - 19968: jis0212<<14 | 0x1B<<7 | 0x06,\n\t24084 - 19968: jis0212<<14 | 0x1B<<7 | 0x07,\n\t24085 - 19968: jis0212<<14 | 0x1B<<7 | 0x08,\n\t24086 - 19968: jis0208<<14 | 0x23<<7 | 0x00,\n\t24088 - 19968: jis0212<<14 | 0x1B<<7 | 0x09,\n\t24089 - 19968: jis0208<<14 | 0x35<<7 | 0x44,\n\t24090 - 19968: jis0208<<14 | 0x35<<7 | 0x43,\n\t24091 - 19968: jis0208<<14 | 0x35<<7 | 0x46,\n\t24093 - 19968: jis0208<<14 | 0x23<<7 | 0x4A,\n\t24095 - 19968: jis0212<<14 | 0x1B<<7 | 0x0A,\n\t24096 - 19968: jis0212<<14 | 0x1B<<7 | 0x0B,\n\t24101 - 19968: jis0208<<14 | 0x1E<<7 | 0x42,\n\t24104 - 19968: jis0212<<14 | 0x1B<<7 | 0x0D,\n\t24107 - 19968: jis0208<<14 | 0x1A<<7 | 0x34,\n\t24109 - 19968: jis0208<<14 | 0x1F<<7 | 0x29,\n\t24110 - 19968: jis0212<<14 | 0x1B<<7 | 0x0C,\n\t24111 - 19968: jis0208<<14 | 0x21<<7 | 0x32,\n\t24112 - 19968: jis0208<<14 | 0x14<<7 | 0x01,\n\t24114 - 19968: jis0212<<14 | 0x1B<<7 | 0x0E,\n\t24115 - 19968: jis0208<<14 | 0x23<<7 | 0x01,\n\t24117 - 19968: jis0212<<14 | 0x1B<<7 | 0x0F,\n\t24118 - 19968: jis0208<<14 | 0x35<<7 | 0x47,\n\t24119 - 19968: jis0208<<14 | 0x35<<7 | 0x48,\n\t24120 - 19968: jis0208<<14 | 0x1D<<7 | 0x4E,\n\t24125 - 19968: jis0208<<14 | 0x2A<<7 | 0x18,\n\t24126 - 19968: jis0212<<14 | 0x1B<<7 | 0x10,\n\t24128 - 19968: jis0208<<14 | 0x35<<7 | 0x4B,\n\t24131 - 19968: jis0208<<14 | 0x35<<7 | 0x4A,\n\t24132 - 19968: jis0208<<14 | 0x35<<7 | 0x49,\n\t24133 - 19968: jis0208<<14 | 0x28<<7 | 0x5C,\n\t24135 - 19968: jis0208<<14 | 0x35<<7 | 0x52,\n\t24137 - 19968: jis0212<<14 | 0x1B<<7 | 0x13,\n\t24139 - 19968: jis0212<<14 | 0x1B<<7 | 0x11,\n\t24140 - 19968: jis0208<<14 | 0x2A<<7 | 0x39,\n\t24142 - 19968: jis0208<<14 | 0x35<<7 | 0x4C,\n\t24144 - 19968: jis0212<<14 | 0x1B<<7 | 0x12,\n\t24145 - 19968: jis0212<<14 | 0x1B<<7 | 0x14,\n\t24148 - 19968: jis0208<<14 | 0x35<<7 | 0x4E,\n\t24149 - 19968: jis0208<<14 | 0x2A<<7 | 0x4A,\n\t24150 - 19968: jis0212<<14 | 0x1B<<7 | 0x15,\n\t24151 - 19968: jis0208<<14 | 0x35<<7 | 0x4D,\n\t24152 - 19968: jis0212<<14 | 0x1B<<7 | 0x16,\n\t24155 - 19968: jis0212<<14 | 0x1B<<7 | 0x17,\n\t24156 - 19968: jis0212<<14 | 0x1B<<7 | 0x18,\n\t24158 - 19968: jis0212<<14 | 0x1B<<7 | 0x19,\n\t24159 - 19968: jis0208<<14 | 0x35<<7 | 0x4F,\n\t24161 - 19968: jis0208<<14 | 0x27<<7 | 0x07,\n\t24162 - 19968: jis0208<<14 | 0x35<<7 | 0x50,\n\t24163 - 19968: jis0208<<14 | 0x29<<7 | 0x1D,\n\t24164 - 19968: jis0208<<14 | 0x35<<7 | 0x51,\n\t24168 - 19968: jis0212<<14 | 0x1B<<7 | 0x1A,\n\t24170 - 19968: jis0212<<14 | 0x1B<<7 | 0x1B,\n\t24171 - 19968: jis0212<<14 | 0x1B<<7 | 0x1C,\n\t24172 - 19968: jis0212<<14 | 0x1B<<7 | 0x1D,\n\t24173 - 19968: jis0212<<14 | 0x1B<<7 | 0x1E,\n\t24174 - 19968: jis0212<<14 | 0x1B<<7 | 0x1F,\n\t24176 - 19968: jis0212<<14 | 0x1B<<7 | 0x20,\n\t24178 - 19968: jis0208<<14 | 0x13<<7 | 0x12,\n\t24179 - 19968: jis0208<<14 | 0x29<<7 | 0x1E,\n\t24180 - 19968: jis0208<<14 | 0x26<<7 | 0x0E,\n\t24181 - 19968: jis0208<<14 | 0x35<<7 | 0x53,\n\t24182 - 19968: jis0208<<14 | 0x35<<7 | 0x54,\n\t24184 - 19968: jis0208<<14 | 0x18<<7 | 0x0B,\n\t24185 - 19968: jis0208<<14 | 0x13<<7 | 0x13,\n\t24186 - 19968: jis0208<<14 | 0x35<<7 | 0x55,\n\t24187 - 19968: jis0208<<14 | 0x17<<7 | 0x17,\n\t24188 - 19968: jis0208<<14 | 0x2C<<7 | 0x23,\n\t24189 - 19968: jis0208<<14 | 0x2C<<7 | 0x08,\n\t24190 - 19968: jis0208<<14 | 0x13<<7 | 0x55,\n\t24191 - 19968: jis0208<<14 | 0x35<<7 | 0x57,\n\t24192 - 19968: jis0212<<14 | 0x1B<<7 | 0x21,\n\t24193 - 19968: jis0208<<14 | 0x23<<7 | 0x02,\n\t24195 - 19968: jis0208<<14 | 0x18<<7 | 0x0C,\n\t24196 - 19968: jis0208<<14 | 0x1D<<7 | 0x10,\n\t24199 - 19968: jis0208<<14 | 0x27<<7 | 0x3E,\n\t24202 - 19968: jis0208<<14 | 0x1D<<7 | 0x11,\n\t24203 - 19968: jis0212<<14 | 0x1B<<7 | 0x22,\n\t24206 - 19968: jis0212<<14 | 0x1B<<7 | 0x23,\n\t24207 - 19968: jis0208<<14 | 0x1C<<7 | 0x57,\n\t24213 - 19968: jis0208<<14 | 0x23<<7 | 0x4B,\n\t24214 - 19968: jis0208<<14 | 0x29<<7 | 0x58,\n\t24215 - 19968: jis0208<<14 | 0x24<<7 | 0x18,\n\t24218 - 19968: jis0208<<14 | 0x18<<7 | 0x0D,\n\t24220 - 19968: jis0208<<14 | 0x28<<7 | 0x3B,\n\t24224 - 19968: jis0208<<14 | 0x35<<7 | 0x58,\n\t24226 - 19968: jis0212<<14 | 0x1B<<7 | 0x24,\n\t24228 - 19968: jis0212<<14 | 0x1B<<7 | 0x25,\n\t24229 - 19968: jis0212<<14 | 0x1B<<7 | 0x26,\n\t24230 - 19968: jis0208<<14 | 0x24<<7 | 0x38,\n\t24231 - 19968: jis0208<<14 | 0x19<<7 | 0x21,\n\t24232 - 19968: jis0212<<14 | 0x1B<<7 | 0x27,\n\t24234 - 19968: jis0212<<14 | 0x1B<<7 | 0x28,\n\t24235 - 19968: jis0208<<14 | 0x17<<7 | 0x2A,\n\t24236 - 19968: jis0212<<14 | 0x1B<<7 | 0x29,\n\t24237 - 19968: jis0208<<14 | 0x23<<7 | 0x4C,\n\t24241 - 19968: jis0212<<14 | 0x1B<<7 | 0x2A,\n\t24243 - 19968: jis0212<<14 | 0x1B<<7 | 0x2B,\n\t24245 - 19968: jis0208<<14 | 0x0F<<7 | 0x22,\n\t24246 - 19968: jis0208<<14 | 0x1C<<7 | 0x4D,\n\t24247 - 19968: jis0208<<14 | 0x18<<7 | 0x0E,\n\t24248 - 19968: jis0208<<14 | 0x2C<<7 | 0x26,\n\t24253 - 19968: jis0212<<14 | 0x1B<<7 | 0x2C,\n\t24254 - 19968: jis0212<<14 | 0x1B<<7 | 0x2D,\n\t24255 - 19968: jis0212<<14 | 0x1B<<7 | 0x2E,\n\t24257 - 19968: jis0208<<14 | 0x35<<7 | 0x59,\n\t24258 - 19968: jis0208<<14 | 0x35<<7 | 0x5A,\n\t24259 - 19968: jis0208<<14 | 0x26<<7 | 0x30,\n\t24262 - 19968: jis0212<<14 | 0x1B<<7 | 0x2F,\n\t24264 - 19968: jis0208<<14 | 0x35<<7 | 0x5B,\n\t24265 - 19968: jis0208<<14 | 0x2D<<7 | 0x56,\n\t24266 - 19968: jis0208<<14 | 0x2E<<7 | 0x0C,\n\t24267 - 19968: jis0212<<14 | 0x1B<<7 | 0x31,\n\t24268 - 19968: jis0212<<14 | 0x1B<<7 | 0x30,\n\t24270 - 19968: jis0212<<14 | 0x1B<<7 | 0x32,\n\t24271 - 19968: jis0208<<14 | 0x35<<7 | 0x5D,\n\t24272 - 19968: jis0208<<14 | 0x35<<7 | 0x5C,\n\t24273 - 19968: jis0212<<14 | 0x1B<<7 | 0x33,\n\t24274 - 19968: jis0212<<14 | 0x1B<<7 | 0x34,\n\t24275 - 19968: jis0208<<14 | 0x12<<7 | 0x26,\n\t24276 - 19968: jis0212<<14 | 0x1B<<7 | 0x35,\n\t24277 - 19968: jis0212<<14 | 0x1B<<7 | 0x36,\n\t24278 - 19968: jis0208<<14 | 0x36<<7 | 0x00,\n\t24282 - 19968: jis0208<<14 | 0x36<<7 | 0x03,\n\t24283 - 19968: jis0208<<14 | 0x36<<7 | 0x04,\n\t24284 - 19968: jis0212<<14 | 0x1B<<7 | 0x37,\n\t24285 - 19968: jis0208<<14 | 0x36<<7 | 0x02,\n\t24286 - 19968: jis0212<<14 | 0x1B<<7 | 0x38,\n\t24287 - 19968: jis0208<<14 | 0x28<<7 | 0x1F,\n\t24288 - 19968: jis0208<<14 | 0x1D<<7 | 0x12,\n\t24289 - 19968: jis0208<<14 | 0x36<<7 | 0x06,\n\t24290 - 19968: jis0208<<14 | 0x36<<7 | 0x05,\n\t24291 - 19968: jis0208<<14 | 0x36<<7 | 0x01,\n\t24293 - 19968: jis0212<<14 | 0x1B<<7 | 0x39,\n\t24296 - 19968: jis0208<<14 | 0x36<<7 | 0x07,\n\t24297 - 19968: jis0208<<14 | 0x36<<7 | 0x08,\n\t24299 - 19968: jis0212<<14 | 0x1B<<7 | 0x3A,\n\t24300 - 19968: jis0208<<14 | 0x36<<7 | 0x09,\n\t24304 - 19968: jis0208<<14 | 0x36<<7 | 0x0C,\n\t24305 - 19968: jis0208<<14 | 0x36<<7 | 0x0A,\n\t24307 - 19968: jis0208<<14 | 0x36<<7 | 0x0B,\n\t24308 - 19968: jis0208<<14 | 0x36<<7 | 0x0D,\n\t24310 - 19968: jis0208<<14 | 0x10<<7 | 0x43,\n\t24311 - 19968: jis0208<<14 | 0x23<<7 | 0x4D,\n\t24312 - 19968: jis0208<<14 | 0x36<<7 | 0x0E,\n\t24314 - 19968: jis0208<<14 | 0x16<<7 | 0x59,\n\t24315 - 19968: jis0208<<14 | 0x11<<7 | 0x55,\n\t24316 - 19968: jis0208<<14 | 0x26<<7 | 0x15,\n\t24318 - 19968: jis0208<<14 | 0x36<<7 | 0x0F,\n\t24319 - 19968: jis0208<<14 | 0x25<<7 | 0x5A,\n\t24321 - 19968: jis0208<<14 | 0x29<<7 | 0x3A,\n\t24322 - 19968: jis0212<<14 | 0x1B<<7 | 0x3B,\n\t24323 - 19968: jis0208<<14 | 0x36<<7 | 0x10,\n\t24324 - 19968: jis0208<<14 | 0x2E<<7 | 0x0D,\n\t24326 - 19968: jis0212<<14 | 0x1B<<7 | 0x3C,\n\t24327 - 19968: jis0212<<14 | 0x1B<<7 | 0x3D,\n\t24328 - 19968: jis0212<<14 | 0x1B<<7 | 0x3E,\n\t24329 - 19968: jis0208<<14 | 0x36<<7 | 0x11,\n\t24330 - 19968: jis0208<<14 | 0x29<<7 | 0x1F,\n\t24331 - 19968: jis0208<<14 | 0x36<<7 | 0x14,\n\t24332 - 19968: jis0208<<14 | 0x2F<<7 | 0x00,\n\t24333 - 19968: jis0208<<14 | 0x2F<<7 | 0x10,\n\t24334 - 19968: jis0212<<14 | 0x1B<<7 | 0x3F,\n\t24335 - 19968: jis0208<<14 | 0x1B<<7 | 0x0F,\n\t24336 - 19968: jis0208<<14 | 0x25<<7 | 0x54,\n\t24337 - 19968: jis0208<<14 | 0x36<<7 | 0x15,\n\t24339 - 19968: jis0208<<14 | 0x14<<7 | 0x3C,\n\t24340 - 19968: jis0208<<14 | 0x23<<7 | 0x03,\n\t24341 - 19968: jis0208<<14 | 0x0F<<7 | 0x59,\n\t24342 - 19968: jis0208<<14 | 0x36<<7 | 0x16,\n\t24343 - 19968: jis0208<<14 | 0x29<<7 | 0x05,\n\t24344 - 19968: jis0208<<14 | 0x18<<7 | 0x0F,\n\t24345 - 19968: jis0212<<14 | 0x1B<<7 | 0x40,\n\t24347 - 19968: jis0208<<14 | 0x22<<7 | 0x2F,\n\t24348 - 19968: jis0212<<14 | 0x1B<<7 | 0x41,\n\t24349 - 19968: jis0212<<14 | 0x1B<<7 | 0x42,\n\t24351 - 19968: jis0208<<14 | 0x23<<7 | 0x4E,\n\t24353 - 19968: jis0208<<14 | 0x58<<7 | 0x5A,\n\t24354 - 19968: jis0212<<14 | 0x1B<<7 | 0x44,\n\t24355 - 19968: jis0212<<14 | 0x1B<<7 | 0x45,\n\t24356 - 19968: jis0212<<14 | 0x1B<<7 | 0x46,\n\t24357 - 19968: jis0208<<14 | 0x2B<<7 | 0x4E,\n\t24358 - 19968: jis0208<<14 | 0x17<<7 | 0x18,\n\t24359 - 19968: jis0208<<14 | 0x17<<7 | 0x2B,\n\t24360 - 19968: jis0212<<14 | 0x1B<<7 | 0x47,\n\t24361 - 19968: jis0208<<14 | 0x36<<7 | 0x17,\n\t24363 - 19968: jis0212<<14 | 0x1B<<7 | 0x48,\n\t24364 - 19968: jis0212<<14 | 0x1B<<7 | 0x49,\n\t24365 - 19968: jis0208<<14 | 0x36<<7 | 0x18,\n\t24366 - 19968: jis0212<<14 | 0x1B<<7 | 0x4A,\n\t24367 - 19968: jis0208<<14 | 0x36<<7 | 0x1E,\n\t24368 - 19968: jis0212<<14 | 0x1B<<7 | 0x4B,\n\t24369 - 19968: jis0208<<14 | 0x1B<<7 | 0x44,\n\t24372 - 19968: jis0208<<14 | 0x58<<7 | 0x5B,\n\t24373 - 19968: jis0208<<14 | 0x23<<7 | 0x04,\n\t24374 - 19968: jis0212<<14 | 0x1B<<7 | 0x4D,\n\t24375 - 19968: jis0208<<14 | 0x15<<7 | 0x0E,\n\t24376 - 19968: jis0208<<14 | 0x36<<7 | 0x19,\n\t24379 - 19968: jis0212<<14 | 0x1B<<7 | 0x4E,\n\t24380 - 19968: jis0208<<14 | 0x28<<7 | 0x0A,\n\t24381 - 19968: jis0212<<14 | 0x1B<<7 | 0x4F,\n\t24382 - 19968: jis0208<<14 | 0x22<<7 | 0x25,\n\t24383 - 19968: jis0212<<14 | 0x1B<<7 | 0x50,\n\t24384 - 19968: jis0212<<14 | 0x1B<<7 | 0x51,\n\t24385 - 19968: jis0208<<14 | 0x36<<7 | 0x1A,\n\t24388 - 19968: jis0212<<14 | 0x1B<<7 | 0x52,\n\t24389 - 19968: jis0208<<14 | 0x58<<7 | 0x0B,\n\t24391 - 19968: jis0212<<14 | 0x1B<<7 | 0x54,\n\t24392 - 19968: jis0208<<14 | 0x36<<7 | 0x1B,\n\t24394 - 19968: jis0208<<14 | 0x15<<7 | 0x0F,\n\t24396 - 19968: jis0208<<14 | 0x36<<7 | 0x1C,\n\t24397 - 19968: jis0212<<14 | 0x1B<<7 | 0x55,\n\t24398 - 19968: jis0208<<14 | 0x36<<7 | 0x1D,\n\t24400 - 19968: jis0212<<14 | 0x1B<<7 | 0x56,\n\t24401 - 19968: jis0208<<14 | 0x36<<7 | 0x1F,\n\t24403 - 19968: jis0208<<14 | 0x24<<7 | 0x55,\n\t24404 - 19968: jis0212<<14 | 0x1B<<7 | 0x57,\n\t24406 - 19968: jis0208<<14 | 0x36<<7 | 0x20,\n\t24407 - 19968: jis0208<<14 | 0x36<<7 | 0x21,\n\t24408 - 19968: jis0212<<14 | 0x1B<<7 | 0x58,\n\t24409 - 19968: jis0208<<14 | 0x36<<7 | 0x22,\n\t24411 - 19968: jis0212<<14 | 0x1B<<7 | 0x59,\n\t24412 - 19968: jis0208<<14 | 0x36<<7 | 0x13,\n\t24413 - 19968: jis0208<<14 | 0x36<<7 | 0x12,\n\t24416 - 19968: jis0212<<14 | 0x1B<<7 | 0x5A,\n\t24417 - 19968: jis0208<<14 | 0x36<<7 | 0x23,\n\t24418 - 19968: jis0208<<14 | 0x16<<7 | 0x20,\n\t24419 - 19968: jis0212<<14 | 0x1B<<7 | 0x5B,\n\t24420 - 19968: jis0212<<14 | 0x1B<<7 | 0x5C,\n\t24422 - 19968: jis0208<<14 | 0x28<<7 | 0x06,\n\t24423 - 19968: jis0208<<14 | 0x58<<7 | 0x5C,\n\t24425 - 19968: jis0208<<14 | 0x19<<7 | 0x2B,\n\t24426 - 19968: jis0208<<14 | 0x28<<7 | 0x16,\n\t24427 - 19968: jis0208<<14 | 0x23<<7 | 0x05,\n\t24428 - 19968: jis0208<<14 | 0x28<<7 | 0x2A,\n\t24429 - 19968: jis0208<<14 | 0x36<<7 | 0x24,\n\t24431 - 19968: jis0212<<14 | 0x1C<<7 | 0x00,\n\t24432 - 19968: jis0208<<14 | 0x1D<<7 | 0x13,\n\t24433 - 19968: jis0208<<14 | 0x10<<7 | 0x25,\n\t24434 - 19968: jis0212<<14 | 0x1C<<7 | 0x01,\n\t24435 - 19968: jis0208<<14 | 0x36<<7 | 0x25,\n\t24436 - 19968: jis0212<<14 | 0x1C<<7 | 0x02,\n\t24437 - 19968: jis0212<<14 | 0x1C<<7 | 0x03,\n\t24439 - 19968: jis0208<<14 | 0x36<<7 | 0x26,\n\t24440 - 19968: jis0212<<14 | 0x1C<<7 | 0x04,\n\t24441 - 19968: jis0208<<14 | 0x2B<<7 | 0x51,\n\t24442 - 19968: jis0212<<14 | 0x1C<<7 | 0x05,\n\t24444 - 19968: jis0208<<14 | 0x27<<7 | 0x3F,\n\t24445 - 19968: jis0212<<14 | 0x1C<<7 | 0x06,\n\t24446 - 19968: jis0212<<14 | 0x1C<<7 | 0x07,\n\t24447 - 19968: jis0208<<14 | 0x36<<7 | 0x29,\n\t24448 - 19968: jis0208<<14 | 0x10<<7 | 0x5C,\n\t24449 - 19968: jis0208<<14 | 0x1F<<7 | 0x0B,\n\t24450 - 19968: jis0208<<14 | 0x36<<7 | 0x28,\n\t24451 - 19968: jis0208<<14 | 0x36<<7 | 0x27,\n\t24452 - 19968: jis0208<<14 | 0x16<<7 | 0x21,\n\t24453 - 19968: jis0208<<14 | 0x21<<7 | 0x33,\n\t24455 - 19968: jis0208<<14 | 0x36<<7 | 0x2D,\n\t24456 - 19968: jis0208<<14 | 0x36<<7 | 0x2B,\n\t24457 - 19968: jis0212<<14 | 0x1C<<7 | 0x08,\n\t24458 - 19968: jis0208<<14 | 0x36<<7 | 0x2A,\n\t24459 - 19968: jis0208<<14 | 0x2D<<7 | 0x06,\n\t24460 - 19968: jis0208<<14 | 0x17<<7 | 0x44,\n\t24461 - 19968: jis0212<<14 | 0x1C<<7 | 0x09,\n\t24463 - 19968: jis0212<<14 | 0x1C<<7 | 0x0A,\n\t24464 - 19968: jis0208<<14 | 0x1C<<7 | 0x58,\n\t24465 - 19968: jis0208<<14 | 0x36<<7 | 0x2C,\n\t24466 - 19968: jis0208<<14 | 0x24<<7 | 0x2B,\n\t24467 - 19968: jis0208<<14 | 0x1C<<7 | 0x1D,\n\t24470 - 19968: jis0212<<14 | 0x1C<<7 | 0x0B,\n\t24471 - 19968: jis0208<<14 | 0x25<<7 | 0x1F,\n\t24472 - 19968: jis0208<<14 | 0x36<<7 | 0x30,\n\t24473 - 19968: jis0208<<14 | 0x36<<7 | 0x2F,\n\t24476 - 19968: jis0212<<14 | 0x1C<<7 | 0x0C,\n\t24477 - 19968: jis0212<<14 | 0x1C<<7 | 0x0D,\n\t24478 - 19968: jis0208<<14 | 0x36<<7 | 0x2E,\n\t24480 - 19968: jis0208<<14 | 0x36<<7 | 0x31,\n\t24481 - 19968: jis0208<<14 | 0x17<<7 | 0x45,\n\t24482 - 19968: jis0212<<14 | 0x1C<<7 | 0x0E,\n\t24484 - 19968: jis0212<<14 | 0x1C<<7 | 0x11,\n\t24487 - 19968: jis0212<<14 | 0x1C<<7 | 0x0F,\n\t24488 - 19968: jis0208<<14 | 0x36<<7 | 0x32,\n\t24489 - 19968: jis0208<<14 | 0x28<<7 | 0x5B,\n\t24490 - 19968: jis0208<<14 | 0x1C<<7 | 0x3A,\n\t24491 - 19968: jis0212<<14 | 0x1C<<7 | 0x10,\n\t24492 - 19968: jis0212<<14 | 0x1C<<7 | 0x12,\n\t24493 - 19968: jis0208<<14 | 0x36<<7 | 0x33,\n\t24494 - 19968: jis0208<<14 | 0x27<<7 | 0x58,\n\t24495 - 19968: jis0212<<14 | 0x1C<<7 | 0x13,\n\t24496 - 19968: jis0212<<14 | 0x1C<<7 | 0x14,\n\t24497 - 19968: jis0212<<14 | 0x1C<<7 | 0x15,\n\t24499 - 19968: jis0208<<14 | 0x25<<7 | 0x20,\n\t24500 - 19968: jis0208<<14 | 0x23<<7 | 0x06,\n\t24503 - 19968: jis0208<<14 | 0x58<<7 | 0x5D,\n\t24504 - 19968: jis0212<<14 | 0x1C<<7 | 0x16,\n\t24505 - 19968: jis0208<<14 | 0x24<<7 | 0x0F,\n\t24508 - 19968: jis0208<<14 | 0x36<<7 | 0x34,\n\t24509 - 19968: jis0208<<14 | 0x14<<7 | 0x0A,\n\t24515 - 19968: jis0208<<14 | 0x1E<<7 | 0x13,\n\t24516 - 19968: jis0212<<14 | 0x1C<<7 | 0x17,\n\t24517 - 19968: jis0208<<14 | 0x28<<7 | 0x0B,\n\t24519 - 19968: jis0212<<14 | 0x1C<<7 | 0x18,\n\t24520 - 19968: jis0212<<14 | 0x1C<<7 | 0x19,\n\t24521 - 19968: jis0212<<14 | 0x1C<<7 | 0x1A,\n\t24523 - 19968: jis0212<<14 | 0x1C<<7 | 0x1B,\n\t24524 - 19968: jis0208<<14 | 0x13<<7 | 0x56,\n\t24525 - 19968: jis0208<<14 | 0x26<<7 | 0x05,\n\t24528 - 19968: jis0212<<14 | 0x1C<<7 | 0x1C,\n\t24529 - 19968: jis0212<<14 | 0x1C<<7 | 0x1D,\n\t24530 - 19968: jis0212<<14 | 0x1C<<7 | 0x1E,\n\t24531 - 19968: jis0212<<14 | 0x1C<<7 | 0x1F,\n\t24532 - 19968: jis0212<<14 | 0x1C<<7 | 0x20,\n\t24534 - 19968: jis0208<<14 | 0x36<<7 | 0x35,\n\t24535 - 19968: jis0208<<14 | 0x1A<<7 | 0x35,\n\t24536 - 19968: jis0208<<14 | 0x2A<<7 | 0x19,\n\t24537 - 19968: jis0208<<14 | 0x2A<<7 | 0x1A,\n\t24540 - 19968: jis0208<<14 | 0x10<<7 | 0x5D,\n\t24541 - 19968: jis0208<<14 | 0x36<<7 | 0x3A,\n\t24542 - 19968: jis0208<<14 | 0x59<<7 | 0x00,\n\t24544 - 19968: jis0208<<14 | 0x22<<7 | 0x48,\n\t24545 - 19968: jis0212<<14 | 0x1C<<7 | 0x22,\n\t24546 - 19968: jis0212<<14 | 0x1C<<7 | 0x23,\n\t24548 - 19968: jis0208<<14 | 0x36<<7 | 0x37,\n\t24552 - 19968: jis0212<<14 | 0x1C<<7 | 0x24,\n\t24553 - 19968: jis0212<<14 | 0x1C<<7 | 0x25,\n\t24554 - 19968: jis0212<<14 | 0x1C<<7 | 0x26,\n\t24555 - 19968: jis0208<<14 | 0x11<<7 | 0x56,\n\t24556 - 19968: jis0212<<14 | 0x1C<<7 | 0x27,\n\t24557 - 19968: jis0212<<14 | 0x1C<<7 | 0x28,\n\t24558 - 19968: jis0212<<14 | 0x1C<<7 | 0x29,\n\t24559 - 19968: jis0212<<14 | 0x1C<<7 | 0x2A,\n\t24560 - 19968: jis0208<<14 | 0x37<<7 | 0x0C,\n\t24561 - 19968: jis0208<<14 | 0x36<<7 | 0x39,\n\t24562 - 19968: jis0212<<14 | 0x1C<<7 | 0x2B,\n\t24563 - 19968: jis0212<<14 | 0x1C<<7 | 0x2C,\n\t24565 - 19968: jis0208<<14 | 0x26<<7 | 0x0F,\n\t24566 - 19968: jis0212<<14 | 0x1C<<7 | 0x2D,\n\t24568 - 19968: jis0208<<14 | 0x36<<7 | 0x38,\n\t24570 - 19968: jis0212<<14 | 0x1C<<7 | 0x2E,\n\t24571 - 19968: jis0208<<14 | 0x36<<7 | 0x36,\n\t24572 - 19968: jis0212<<14 | 0x1C<<7 | 0x2F,\n\t24573 - 19968: jis0208<<14 | 0x18<<7 | 0x59,\n\t24575 - 19968: jis0208<<14 | 0x36<<7 | 0x3C,\n\t24583 - 19968: jis0212<<14 | 0x1C<<7 | 0x30,\n\t24586 - 19968: jis0212<<14 | 0x1C<<7 | 0x31,\n\t24589 - 19968: jis0212<<14 | 0x1C<<7 | 0x32,\n\t24590 - 19968: jis0208<<14 | 0x36<<7 | 0x42,\n\t24591 - 19968: jis0208<<14 | 0x36<<7 | 0x48,\n\t24592 - 19968: jis0208<<14 | 0x36<<7 | 0x40,\n\t24594 - 19968: jis0208<<14 | 0x24<<7 | 0x3B,\n\t24595 - 19968: jis0212<<14 | 0x1C<<7 | 0x33,\n\t24596 - 19968: jis0212<<14 | 0x1C<<7 | 0x34,\n\t24597 - 19968: jis0208<<14 | 0x36<<7 | 0x45,\n\t24598 - 19968: jis0208<<14 | 0x28<<7 | 0x3C,\n\t24599 - 19968: jis0212<<14 | 0x1C<<7 | 0x35,\n\t24600 - 19968: jis0212<<14 | 0x1C<<7 | 0x36,\n\t24601 - 19968: jis0208<<14 | 0x36<<7 | 0x3F,\n\t24602 - 19968: jis0212<<14 | 0x1C<<7 | 0x37,\n\t24603 - 19968: jis0208<<14 | 0x36<<7 | 0x44,\n\t24604 - 19968: jis0208<<14 | 0x2D<<7 | 0x46,\n\t24605 - 19968: jis0208<<14 | 0x1A<<7 | 0x36,\n\t24607 - 19968: jis0212<<14 | 0x1C<<7 | 0x38,\n\t24608 - 19968: jis0208<<14 | 0x21<<7 | 0x34,\n\t24609 - 19968: jis0208<<14 | 0x36<<7 | 0x3D,\n\t24612 - 19968: jis0212<<14 | 0x1C<<7 | 0x39,\n\t24613 - 19968: jis0208<<14 | 0x14<<7 | 0x3D,\n\t24614 - 19968: jis0208<<14 | 0x36<<7 | 0x47,\n\t24615 - 19968: jis0208<<14 | 0x1F<<7 | 0x0C,\n\t24616 - 19968: jis0208<<14 | 0x10<<7 | 0x44,\n\t24617 - 19968: jis0208<<14 | 0x36<<7 | 0x41,\n\t24618 - 19968: jis0208<<14 | 0x11<<7 | 0x57,\n\t24619 - 19968: jis0208<<14 | 0x36<<7 | 0x46,\n\t24621 - 19968: jis0212<<14 | 0x1C<<7 | 0x3A,\n\t24623 - 19968: jis0208<<14 | 0x15<<7 | 0x10,\n\t24625 - 19968: jis0208<<14 | 0x36<<7 | 0x43,\n\t24627 - 19968: jis0212<<14 | 0x1C<<7 | 0x3B,\n\t24629 - 19968: jis0212<<14 | 0x1C<<7 | 0x3C,\n\t24634 - 19968: jis0208<<14 | 0x36<<7 | 0x49,\n\t24640 - 19968: jis0212<<14 | 0x1C<<7 | 0x3D,\n\t24641 - 19968: jis0208<<14 | 0x36<<7 | 0x4B,\n\t24642 - 19968: jis0208<<14 | 0x36<<7 | 0x55,\n\t24643 - 19968: jis0208<<14 | 0x36<<7 | 0x53,\n\t24646 - 19968: jis0208<<14 | 0x36<<7 | 0x50,\n\t24647 - 19968: jis0212<<14 | 0x1C<<7 | 0x3E,\n\t24648 - 19968: jis0212<<14 | 0x1C<<7 | 0x3F,\n\t24649 - 19968: jis0212<<14 | 0x1C<<7 | 0x40,\n\t24650 - 19968: jis0208<<14 | 0x36<<7 | 0x4F,\n\t24651 - 19968: jis0208<<14 | 0x2D<<7 | 0x57,\n\t24652 - 19968: jis0212<<14 | 0x1C<<7 | 0x41,\n\t24653 - 19968: jis0208<<14 | 0x36<<7 | 0x51,\n\t24656 - 19968: jis0208<<14 | 0x15<<7 | 0x11,\n\t24657 - 19968: jis0212<<14 | 0x1C<<7 | 0x42,\n\t24658 - 19968: jis0208<<14 | 0x18<<7 | 0x10,\n\t24660 - 19968: jis0212<<14 | 0x1C<<7 | 0x43,\n\t24661 - 19968: jis0208<<14 | 0x1C<<7 | 0x59,\n\t24662 - 19968: jis0212<<14 | 0x1C<<7 | 0x44,\n\t24663 - 19968: jis0212<<14 | 0x1C<<7 | 0x45,\n\t24665 - 19968: jis0208<<14 | 0x36<<7 | 0x58,\n\t24666 - 19968: jis0208<<14 | 0x36<<7 | 0x4A,\n\t24669 - 19968: jis0208<<14 | 0x59<<7 | 0x01,\n\t24671 - 19968: jis0208<<14 | 0x36<<7 | 0x4E,\n\t24672 - 19968: jis0208<<14 | 0x36<<7 | 0x3E,\n\t24673 - 19968: jis0212<<14 | 0x1C<<7 | 0x47,\n\t24674 - 19968: jis0208<<14 | 0x11<<7 | 0x59,\n\t24675 - 19968: jis0208<<14 | 0x36<<7 | 0x52,\n\t24676 - 19968: jis0208<<14 | 0x36<<7 | 0x54,\n\t24677 - 19968: jis0208<<14 | 0x22<<7 | 0x30,\n\t24679 - 19968: jis0212<<14 | 0x1C<<7 | 0x48,\n\t24680 - 19968: jis0208<<14 | 0x19<<7 | 0x07,\n\t24681 - 19968: jis0208<<14 | 0x11<<7 | 0x17,\n\t24682 - 19968: jis0208<<14 | 0x36<<7 | 0x4C,\n\t24683 - 19968: jis0208<<14 | 0x36<<7 | 0x57,\n\t24684 - 19968: jis0208<<14 | 0x36<<7 | 0x56,\n\t24685 - 19968: jis0208<<14 | 0x15<<7 | 0x12,\n\t24687 - 19968: jis0208<<14 | 0x21<<7 | 0x08,\n\t24688 - 19968: jis0208<<14 | 0x12<<7 | 0x45,\n\t24689 - 19968: jis0212<<14 | 0x1C<<7 | 0x49,\n\t24693 - 19968: jis0208<<14 | 0x16<<7 | 0x22,\n\t24695 - 19968: jis0208<<14 | 0x36<<7 | 0x4D,\n\t24702 - 19968: jis0212<<14 | 0x1C<<7 | 0x4A,\n\t24703 - 19968: jis0212<<14 | 0x1C<<7 | 0x4B,\n\t24705 - 19968: jis0208<<14 | 0x36<<7 | 0x59,\n\t24706 - 19968: jis0212<<14 | 0x1C<<7 | 0x4C,\n\t24707 - 19968: jis0208<<14 | 0x36<<7 | 0x5C,\n\t24708 - 19968: jis0208<<14 | 0x37<<7 | 0x00,\n\t24709 - 19968: jis0208<<14 | 0x59<<7 | 0x02,\n\t24710 - 19968: jis0212<<14 | 0x1C<<7 | 0x4D,\n\t24712 - 19968: jis0212<<14 | 0x1C<<7 | 0x4E,\n\t24713 - 19968: jis0208<<14 | 0x1B<<7 | 0x1C,\n\t24714 - 19968: jis0208<<14 | 0x59<<7 | 0x03,\n\t24715 - 19968: jis0208<<14 | 0x37<<7 | 0x06,\n\t24716 - 19968: jis0208<<14 | 0x23<<7 | 0x4F,\n\t24717 - 19968: jis0208<<14 | 0x36<<7 | 0x5A,\n\t24718 - 19968: jis0212<<14 | 0x1C<<7 | 0x50,\n\t24721 - 19968: jis0212<<14 | 0x1C<<7 | 0x51,\n\t24722 - 19968: jis0208<<14 | 0x37<<7 | 0x04,\n\t24723 - 19968: jis0212<<14 | 0x1C<<7 | 0x52,\n\t24724 - 19968: jis0208<<14 | 0x11<<7 | 0x58,\n\t24725 - 19968: jis0212<<14 | 0x1C<<7 | 0x53,\n\t24726 - 19968: jis0208<<14 | 0x37<<7 | 0x02,\n\t24727 - 19968: jis0208<<14 | 0x37<<7 | 0x03,\n\t24728 - 19968: jis0212<<14 | 0x1C<<7 | 0x54,\n\t24730 - 19968: jis0208<<14 | 0x36<<7 | 0x5D,\n\t24731 - 19968: jis0208<<14 | 0x37<<7 | 0x01,\n\t24733 - 19968: jis0212<<14 | 0x1C<<7 | 0x55,\n\t24734 - 19968: jis0212<<14 | 0x1C<<7 | 0x56,\n\t24735 - 19968: jis0208<<14 | 0x17<<7 | 0x46,\n\t24736 - 19968: jis0208<<14 | 0x2C<<7 | 0x09,\n\t24738 - 19968: jis0212<<14 | 0x1C<<7 | 0x57,\n\t24739 - 19968: jis0208<<14 | 0x13<<7 | 0x14,\n\t24740 - 19968: jis0212<<14 | 0x1C<<7 | 0x58,\n\t24741 - 19968: jis0212<<14 | 0x1C<<7 | 0x59,\n\t24742 - 19968: jis0208<<14 | 0x10<<7 | 0x38,\n\t24743 - 19968: jis0208<<14 | 0x37<<7 | 0x05,\n\t24744 - 19968: jis0212<<14 | 0x1C<<7 | 0x5A,\n\t24745 - 19968: jis0208<<14 | 0x26<<7 | 0x19,\n\t24746 - 19968: jis0208<<14 | 0x0F<<7 | 0x0C,\n\t24752 - 19968: jis0212<<14 | 0x1C<<7 | 0x5B,\n\t24753 - 19968: jis0212<<14 | 0x1C<<7 | 0x5C,\n\t24754 - 19968: jis0208<<14 | 0x27<<7 | 0x40,\n\t24755 - 19968: jis0208<<14 | 0x36<<7 | 0x3B,\n\t24756 - 19968: jis0208<<14 | 0x37<<7 | 0x0B,\n\t24757 - 19968: jis0208<<14 | 0x37<<7 | 0x0F,\n\t24758 - 19968: jis0208<<14 | 0x2B<<7 | 0x44,\n\t24759 - 19968: jis0212<<14 | 0x1C<<7 | 0x5D,\n\t24760 - 19968: jis0208<<14 | 0x37<<7 | 0x08,\n\t24763 - 19968: jis0212<<14 | 0x1D<<7 | 0x00,\n\t24764 - 19968: jis0208<<14 | 0x24<<7 | 0x48,\n\t24765 - 19968: jis0208<<14 | 0x37<<7 | 0x0D,\n\t24766 - 19968: jis0212<<14 | 0x1D<<7 | 0x01,\n\t24770 - 19968: jis0212<<14 | 0x1D<<7 | 0x02,\n\t24772 - 19968: jis0212<<14 | 0x1D<<7 | 0x03,\n\t24773 - 19968: jis0208<<14 | 0x1D<<7 | 0x4F,\n\t24774 - 19968: jis0208<<14 | 0x37<<7 | 0x0E,\n\t24775 - 19968: jis0208<<14 | 0x25<<7 | 0x36,\n\t24776 - 19968: jis0212<<14 | 0x1D<<7 | 0x04,\n\t24777 - 19968: jis0212<<14 | 0x1D<<7 | 0x05,\n\t24778 - 19968: jis0212<<14 | 0x1D<<7 | 0x06,\n\t24779 - 19968: jis0212<<14 | 0x1D<<7 | 0x07,\n\t24782 - 19968: jis0212<<14 | 0x1D<<7 | 0x08,\n\t24783 - 19968: jis0212<<14 | 0x1D<<7 | 0x09,\n\t24785 - 19968: jis0208<<14 | 0x2E<<7 | 0x26,\n\t24787 - 19968: jis0208<<14 | 0x37<<7 | 0x0A,\n\t24788 - 19968: jis0212<<14 | 0x1D<<7 | 0x0A,\n\t24789 - 19968: jis0208<<14 | 0x59<<7 | 0x05,\n\t24792 - 19968: jis0208<<14 | 0x37<<7 | 0x10,\n\t24793 - 19968: jis0212<<14 | 0x1D<<7 | 0x0C,\n\t24794 - 19968: jis0208<<14 | 0x18<<7 | 0x5A,\n\t24795 - 19968: jis0212<<14 | 0x1D<<7 | 0x0D,\n\t24796 - 19968: jis0208<<14 | 0x1F<<7 | 0x2A,\n\t24797 - 19968: jis0212<<14 | 0x1D<<7 | 0x0E,\n\t24798 - 19968: jis0208<<14 | 0x59<<7 | 0x04,\n\t24799 - 19968: jis0208<<14 | 0x0F<<7 | 0x33,\n\t24800 - 19968: jis0208<<14 | 0x37<<7 | 0x09,\n\t24801 - 19968: jis0208<<14 | 0x37<<7 | 0x07,\n\t24802 - 19968: jis0212<<14 | 0x1D<<7 | 0x10,\n\t24803 - 19968: jis0208<<14 | 0x20<<7 | 0x39,\n\t24805 - 19968: jis0212<<14 | 0x1D<<7 | 0x11,\n\t24807 - 19968: jis0208<<14 | 0x36<<7 | 0x5B,\n\t24808 - 19968: jis0208<<14 | 0x1A<<7 | 0x13,\n\t24816 - 19968: jis0208<<14 | 0x21<<7 | 0x25,\n\t24817 - 19968: jis0208<<14 | 0x37<<7 | 0x1C,\n\t24818 - 19968: jis0208<<14 | 0x59<<7 | 0x07,\n\t24819 - 19968: jis0208<<14 | 0x20<<7 | 0x3A,\n\t24820 - 19968: jis0208<<14 | 0x37<<7 | 0x17,\n\t24821 - 19968: jis0212<<14 | 0x1D<<7 | 0x13,\n\t24822 - 19968: jis0208<<14 | 0x37<<7 | 0x14,\n\t24823 - 19968: jis0208<<14 | 0x37<<7 | 0x15,\n\t24824 - 19968: jis0212<<14 | 0x1D<<7 | 0x14,\n\t24825 - 19968: jis0208<<14 | 0x1B<<7 | 0x45,\n\t24826 - 19968: jis0208<<14 | 0x37<<7 | 0x18,\n\t24827 - 19968: jis0208<<14 | 0x37<<7 | 0x1B,\n\t24828 - 19968: jis0212<<14 | 0x1D<<7 | 0x15,\n\t24829 - 19968: jis0212<<14 | 0x1D<<7 | 0x16,\n\t24832 - 19968: jis0208<<14 | 0x37<<7 | 0x16,\n\t24833 - 19968: jis0208<<14 | 0x1C<<7 | 0x04,\n\t24834 - 19968: jis0212<<14 | 0x1D<<7 | 0x17,\n\t24835 - 19968: jis0208<<14 | 0x37<<7 | 0x19,\n\t24838 - 19968: jis0208<<14 | 0x37<<7 | 0x13,\n\t24839 - 19968: jis0212<<14 | 0x1D<<7 | 0x18,\n\t24840 - 19968: jis0208<<14 | 0x2B<<7 | 0x5B,\n\t24841 - 19968: jis0208<<14 | 0x2B<<7 | 0x5A,\n\t24842 - 19968: jis0212<<14 | 0x1D<<7 | 0x19,\n\t24844 - 19968: jis0212<<14 | 0x1D<<7 | 0x1A,\n\t24845 - 19968: jis0208<<14 | 0x37<<7 | 0x1D,\n\t24846 - 19968: jis0208<<14 | 0x37<<7 | 0x1E,\n\t24847 - 19968: jis0208<<14 | 0x0F<<7 | 0x34,\n\t24848 - 19968: jis0212<<14 | 0x1D<<7 | 0x1B,\n\t24849 - 19968: jis0208<<14 | 0x59<<7 | 0x08,\n\t24850 - 19968: jis0212<<14 | 0x1D<<7 | 0x1D,\n\t24851 - 19968: jis0212<<14 | 0x1D<<7 | 0x1E,\n\t24852 - 19968: jis0212<<14 | 0x1D<<7 | 0x1F,\n\t24853 - 19968: jis0208<<14 | 0x37<<7 | 0x12,\n\t24854 - 19968: jis0212<<14 | 0x1D<<7 | 0x20,\n\t24855 - 19968: jis0212<<14 | 0x1D<<7 | 0x21,\n\t24857 - 19968: jis0212<<14 | 0x1D<<7 | 0x22,\n\t24858 - 19968: jis0208<<14 | 0x15<<7 | 0x51,\n\t24859 - 19968: jis0208<<14 | 0x0F<<7 | 0x05,\n\t24860 - 19968: jis0212<<14 | 0x1D<<7 | 0x23,\n\t24862 - 19968: jis0212<<14 | 0x1D<<7 | 0x24,\n\t24863 - 19968: jis0208<<14 | 0x13<<7 | 0x15,\n\t24864 - 19968: jis0208<<14 | 0x59<<7 | 0x06,\n\t24865 - 19968: jis0208<<14 | 0x37<<7 | 0x1A,\n\t24866 - 19968: jis0212<<14 | 0x1D<<7 | 0x25,\n\t24871 - 19968: jis0208<<14 | 0x37<<7 | 0x22,\n\t24872 - 19968: jis0208<<14 | 0x37<<7 | 0x21,\n\t24874 - 19968: jis0212<<14 | 0x1D<<7 | 0x26,\n\t24875 - 19968: jis0212<<14 | 0x1D<<7 | 0x27,\n\t24876 - 19968: jis0208<<14 | 0x37<<7 | 0x26,\n\t24880 - 19968: jis0208<<14 | 0x59<<7 | 0x0A,\n\t24881 - 19968: jis0212<<14 | 0x1D<<7 | 0x29,\n\t24884 - 19968: jis0208<<14 | 0x37<<7 | 0x27,\n\t24885 - 19968: jis0212<<14 | 0x1D<<7 | 0x2A,\n\t24886 - 19968: jis0212<<14 | 0x1D<<7 | 0x2B,\n\t24887 - 19968: jis0208<<14 | 0x59<<7 | 0x09,\n\t24889 - 19968: jis0212<<14 | 0x1D<<7 | 0x2D,\n\t24892 - 19968: jis0208<<14 | 0x37<<7 | 0x25,\n\t24893 - 19968: jis0208<<14 | 0x37<<7 | 0x28,\n\t24894 - 19968: jis0208<<14 | 0x37<<7 | 0x20,\n\t24895 - 19968: jis0208<<14 | 0x37<<7 | 0x24,\n\t24897 - 19968: jis0212<<14 | 0x1D<<7 | 0x2E,\n\t24898 - 19968: jis0208<<14 | 0x37<<7 | 0x29,\n\t24900 - 19968: jis0208<<14 | 0x37<<7 | 0x2A,\n\t24901 - 19968: jis0212<<14 | 0x1D<<7 | 0x2F,\n\t24902 - 19968: jis0212<<14 | 0x1D<<7 | 0x30,\n\t24903 - 19968: jis0208<<14 | 0x37<<7 | 0x1F,\n\t24904 - 19968: jis0208<<14 | 0x1A<<7 | 0x5B,\n\t24905 - 19968: jis0212<<14 | 0x1D<<7 | 0x31,\n\t24906 - 19968: jis0208<<14 | 0x37<<7 | 0x23,\n\t24907 - 19968: jis0208<<14 | 0x21<<7 | 0x35,\n\t24908 - 19968: jis0208<<14 | 0x18<<7 | 0x11,\n\t24909 - 19968: jis0208<<14 | 0x37<<7 | 0x11,\n\t24910 - 19968: jis0208<<14 | 0x1E<<7 | 0x14,\n\t24915 - 19968: jis0208<<14 | 0x37<<7 | 0x37,\n\t24917 - 19968: jis0208<<14 | 0x29<<7 | 0x48,\n\t24920 - 19968: jis0208<<14 | 0x37<<7 | 0x2D,\n\t24921 - 19968: jis0208<<14 | 0x37<<7 | 0x2E,\n\t24922 - 19968: jis0208<<14 | 0x37<<7 | 0x2F,\n\t24925 - 19968: jis0208<<14 | 0x37<<7 | 0x36,\n\t24926 - 19968: jis0212<<14 | 0x1D<<7 | 0x32,\n\t24927 - 19968: jis0208<<14 | 0x37<<7 | 0x35,\n\t24928 - 19968: jis0212<<14 | 0x1D<<7 | 0x33,\n\t24930 - 19968: jis0208<<14 | 0x2A<<7 | 0x5C,\n\t24931 - 19968: jis0208<<14 | 0x13<<7 | 0x16,\n\t24933 - 19968: jis0208<<14 | 0x37<<7 | 0x33,\n\t24935 - 19968: jis0208<<14 | 0x16<<7 | 0x24,\n\t24936 - 19968: jis0208<<14 | 0x12<<7 | 0x13,\n\t24939 - 19968: jis0208<<14 | 0x37<<7 | 0x30,\n\t24940 - 19968: jis0212<<14 | 0x1D<<7 | 0x34,\n\t24942 - 19968: jis0208<<14 | 0x2D<<7 | 0x17,\n\t24943 - 19968: jis0208<<14 | 0x37<<7 | 0x32,\n\t24944 - 19968: jis0208<<14 | 0x0F<<7 | 0x35,\n\t24945 - 19968: jis0208<<14 | 0x37<<7 | 0x34,\n\t24946 - 19968: jis0212<<14 | 0x1D<<7 | 0x35,\n\t24947 - 19968: jis0208<<14 | 0x37<<7 | 0x2B,\n\t24948 - 19968: jis0208<<14 | 0x37<<7 | 0x31,\n\t24949 - 19968: jis0208<<14 | 0x37<<7 | 0x38,\n\t24950 - 19968: jis0208<<14 | 0x16<<7 | 0x23,\n\t24951 - 19968: jis0208<<14 | 0x37<<7 | 0x2C,\n\t24952 - 19968: jis0212<<14 | 0x1D<<7 | 0x36,\n\t24955 - 19968: jis0212<<14 | 0x1D<<7 | 0x37,\n\t24956 - 19968: jis0212<<14 | 0x1D<<7 | 0x38,\n\t24958 - 19968: jis0208<<14 | 0x2C<<7 | 0x3C,\n\t24959 - 19968: jis0212<<14 | 0x1D<<7 | 0x39,\n\t24960 - 19968: jis0212<<14 | 0x1D<<7 | 0x3A,\n\t24961 - 19968: jis0212<<14 | 0x1D<<7 | 0x3B,\n\t24962 - 19968: jis0208<<14 | 0x2C<<7 | 0x0A,\n\t24963 - 19968: jis0212<<14 | 0x1D<<7 | 0x3C,\n\t24964 - 19968: jis0212<<14 | 0x1D<<7 | 0x3D,\n\t24967 - 19968: jis0208<<14 | 0x37<<7 | 0x3B,\n\t24970 - 19968: jis0208<<14 | 0x37<<7 | 0x3F,\n\t24971 - 19968: jis0212<<14 | 0x1D<<7 | 0x3E,\n\t24973 - 19968: jis0212<<14 | 0x1D<<7 | 0x3F,\n\t24974 - 19968: jis0208<<14 | 0x20<<7 | 0x5D,\n\t24976 - 19968: jis0208<<14 | 0x2D<<7 | 0x58,\n\t24977 - 19968: jis0208<<14 | 0x37<<7 | 0x40,\n\t24978 - 19968: jis0212<<14 | 0x1D<<7 | 0x40,\n\t24979 - 19968: jis0212<<14 | 0x1D<<7 | 0x41,\n\t24980 - 19968: jis0208<<14 | 0x37<<7 | 0x3D,\n\t24982 - 19968: jis0208<<14 | 0x37<<7 | 0x3A,\n\t24983 - 19968: jis0212<<14 | 0x1D<<7 | 0x42,\n\t24984 - 19968: jis0208<<14 | 0x59<<7 | 0x0B,\n\t24985 - 19968: jis0208<<14 | 0x37<<7 | 0x39,\n\t24986 - 19968: jis0208<<14 | 0x37<<7 | 0x3E,\n\t24988 - 19968: jis0212<<14 | 0x1D<<7 | 0x44,\n\t24989 - 19968: jis0212<<14 | 0x1D<<7 | 0x45,\n\t24991 - 19968: jis0212<<14 | 0x1D<<7 | 0x46,\n\t24992 - 19968: jis0212<<14 | 0x1D<<7 | 0x47,\n\t24996 - 19968: jis0208<<14 | 0x29<<7 | 0x0F,\n\t24997 - 19968: jis0212<<14 | 0x1D<<7 | 0x48,\n\t24999 - 19968: jis0208<<14 | 0x25<<7 | 0x13,\n\t25000 - 19968: jis0212<<14 | 0x1D<<7 | 0x49,\n\t25001 - 19968: jis0208<<14 | 0x16<<7 | 0x25,\n\t25002 - 19968: jis0212<<14 | 0x1D<<7 | 0x4A,\n\t25003 - 19968: jis0208<<14 | 0x37<<7 | 0x41,\n\t25004 - 19968: jis0208<<14 | 0x37<<7 | 0x3C,\n\t25005 - 19968: jis0212<<14 | 0x1D<<7 | 0x4B,\n\t25006 - 19968: jis0208<<14 | 0x37<<7 | 0x42,\n\t25010 - 19968: jis0208<<14 | 0x16<<7 | 0x5A,\n\t25014 - 19968: jis0208<<14 | 0x11<<7 | 0x10,\n\t25016 - 19968: jis0212<<14 | 0x1D<<7 | 0x4C,\n\t25017 - 19968: jis0212<<14 | 0x1D<<7 | 0x4D,\n\t25018 - 19968: jis0208<<14 | 0x37<<7 | 0x4A,\n\t25020 - 19968: jis0212<<14 | 0x1D<<7 | 0x4E,\n\t25022 - 19968: jis0208<<14 | 0x13<<7 | 0x17,\n\t25024 - 19968: jis0212<<14 | 0x1D<<7 | 0x4F,\n\t25025 - 19968: jis0212<<14 | 0x1D<<7 | 0x50,\n\t25026 - 19968: jis0212<<14 | 0x1D<<7 | 0x51,\n\t25027 - 19968: jis0208<<14 | 0x37<<7 | 0x48,\n\t25030 - 19968: jis0208<<14 | 0x37<<7 | 0x49,\n\t25031 - 19968: jis0208<<14 | 0x19<<7 | 0x08,\n\t25032 - 19968: jis0208<<14 | 0x37<<7 | 0x47,\n\t25033 - 19968: jis0208<<14 | 0x37<<7 | 0x45,\n\t25034 - 19968: jis0208<<14 | 0x37<<7 | 0x44,\n\t25035 - 19968: jis0208<<14 | 0x37<<7 | 0x4B,\n\t25036 - 19968: jis0208<<14 | 0x37<<7 | 0x43,\n\t25037 - 19968: jis0208<<14 | 0x37<<7 | 0x4D,\n\t25038 - 19968: jis0212<<14 | 0x1D<<7 | 0x52,\n\t25039 - 19968: jis0212<<14 | 0x1D<<7 | 0x53,\n\t25040 - 19968: jis0208<<14 | 0x11<<7 | 0x5A,\n\t25045 - 19968: jis0212<<14 | 0x1D<<7 | 0x54,\n\t25052 - 19968: jis0212<<14 | 0x1D<<7 | 0x55,\n\t25053 - 19968: jis0212<<14 | 0x1D<<7 | 0x56,\n\t25054 - 19968: jis0212<<14 | 0x1D<<7 | 0x57,\n\t25055 - 19968: jis0212<<14 | 0x1D<<7 | 0x58,\n\t25057 - 19968: jis0212<<14 | 0x1D<<7 | 0x59,\n\t25058 - 19968: jis0212<<14 | 0x1D<<7 | 0x5A,\n\t25059 - 19968: jis0208<<14 | 0x37<<7 | 0x4F,\n\t25061 - 19968: jis0212<<14 | 0x1D<<7 | 0x5D,\n\t25062 - 19968: jis0208<<14 | 0x37<<7 | 0x4E,\n\t25063 - 19968: jis0212<<14 | 0x1D<<7 | 0x5B,\n\t25065 - 19968: jis0212<<14 | 0x1D<<7 | 0x5C,\n\t25068 - 19968: jis0212<<14 | 0x1E<<7 | 0x00,\n\t25069 - 19968: jis0212<<14 | 0x1E<<7 | 0x01,\n\t25071 - 19968: jis0212<<14 | 0x1E<<7 | 0x02,\n\t25074 - 19968: jis0208<<14 | 0x23<<7 | 0x07,\n\t25076 - 19968: jis0208<<14 | 0x37<<7 | 0x52,\n\t25078 - 19968: jis0208<<14 | 0x37<<7 | 0x50,\n\t25079 - 19968: jis0208<<14 | 0x37<<7 | 0x46,\n\t25080 - 19968: jis0208<<14 | 0x16<<7 | 0x5B,\n\t25082 - 19968: jis0208<<14 | 0x37<<7 | 0x51,\n\t25084 - 19968: jis0208<<14 | 0x37<<7 | 0x55,\n\t25085 - 19968: jis0208<<14 | 0x37<<7 | 0x54,\n\t25086 - 19968: jis0208<<14 | 0x37<<7 | 0x56,\n\t25087 - 19968: jis0208<<14 | 0x37<<7 | 0x53,\n\t25088 - 19968: jis0208<<14 | 0x37<<7 | 0x57,\n\t25089 - 19968: jis0212<<14 | 0x1E<<7 | 0x03,\n\t25091 - 19968: jis0212<<14 | 0x1E<<7 | 0x04,\n\t25092 - 19968: jis0212<<14 | 0x1E<<7 | 0x05,\n\t25095 - 19968: jis0212<<14 | 0x1E<<7 | 0x06,\n\t25096 - 19968: jis0208<<14 | 0x37<<7 | 0x58,\n\t25097 - 19968: jis0208<<14 | 0x37<<7 | 0x59,\n\t25098 - 19968: jis0208<<14 | 0x29<<7 | 0x49,\n\t25100 - 19968: jis0208<<14 | 0x37<<7 | 0x5B,\n\t25101 - 19968: jis0208<<14 | 0x37<<7 | 0x5A,\n\t25102 - 19968: jis0208<<14 | 0x1C<<7 | 0x1E,\n\t25104 - 19968: jis0208<<14 | 0x1F<<7 | 0x0D,\n\t25105 - 19968: jis0208<<14 | 0x11<<7 | 0x45,\n\t25106 - 19968: jis0208<<14 | 0x11<<7 | 0x5B,\n\t25107 - 19968: jis0208<<14 | 0x59<<7 | 0x0C,\n\t25108 - 19968: jis0208<<14 | 0x37<<7 | 0x5C,\n\t25109 - 19968: jis0212<<14 | 0x1E<<7 | 0x08,\n\t25110 - 19968: jis0208<<14 | 0x0F<<7 | 0x1E,\n\t25114 - 19968: jis0208<<14 | 0x1F<<7 | 0x2B,\n\t25115 - 19968: jis0208<<14 | 0x37<<7 | 0x5D,\n\t25116 - 19968: jis0212<<14 | 0x1E<<7 | 0x09,\n\t25117 - 19968: jis0208<<14 | 0x4B<<7 | 0x22,\n\t25118 - 19968: jis0208<<14 | 0x38<<7 | 0x00,\n\t25119 - 19968: jis0208<<14 | 0x16<<7 | 0x40,\n\t25120 - 19968: jis0212<<14 | 0x1E<<7 | 0x0A,\n\t25121 - 19968: jis0208<<14 | 0x38<<7 | 0x01,\n\t25122 - 19968: jis0212<<14 | 0x1E<<7 | 0x0B,\n\t25123 - 19968: jis0212<<14 | 0x1E<<7 | 0x0C,\n\t25126 - 19968: jis0208<<14 | 0x1F<<7 | 0x4E,\n\t25127 - 19968: jis0212<<14 | 0x1E<<7 | 0x0D,\n\t25129 - 19968: jis0212<<14 | 0x1E<<7 | 0x0E,\n\t25130 - 19968: jis0208<<14 | 0x38<<7 | 0x02,\n\t25131 - 19968: jis0212<<14 | 0x1E<<7 | 0x0F,\n\t25134 - 19968: jis0208<<14 | 0x38<<7 | 0x03,\n\t25135 - 19968: jis0208<<14 | 0x14<<7 | 0x19,\n\t25136 - 19968: jis0208<<14 | 0x38<<7 | 0x04,\n\t25138 - 19968: jis0208<<14 | 0x38<<7 | 0x05,\n\t25139 - 19968: jis0208<<14 | 0x38<<7 | 0x06,\n\t25140 - 19968: jis0208<<14 | 0x21<<7 | 0x36,\n\t25144 - 19968: jis0208<<14 | 0x17<<7 | 0x2C,\n\t25145 - 19968: jis0212<<14 | 0x1E<<7 | 0x10,\n\t25147 - 19968: jis0208<<14 | 0x2B<<7 | 0x40,\n\t25149 - 19968: jis0212<<14 | 0x1E<<7 | 0x11,\n\t25151 - 19968: jis0208<<14 | 0x2A<<7 | 0x1B,\n\t25152 - 19968: jis0208<<14 | 0x1C<<7 | 0x49,\n\t25153 - 19968: jis0208<<14 | 0x38<<7 | 0x07,\n\t25154 - 19968: jis0212<<14 | 0x1E<<7 | 0x12,\n\t25155 - 19968: jis0212<<14 | 0x1E<<7 | 0x13,\n\t25156 - 19968: jis0212<<14 | 0x1E<<7 | 0x14,\n\t25158 - 19968: jis0212<<14 | 0x1E<<7 | 0x15,\n\t25159 - 19968: jis0208<<14 | 0x1F<<7 | 0x4F,\n\t25160 - 19968: jis0208<<14 | 0x4D<<7 | 0x1C,\n\t25161 - 19968: jis0208<<14 | 0x27<<7 | 0x41,\n\t25163 - 19968: jis0208<<14 | 0x1B<<7 | 0x49,\n\t25164 - 19968: jis0212<<14 | 0x1E<<7 | 0x16,\n\t25165 - 19968: jis0208<<14 | 0x19<<7 | 0x2C,\n\t25166 - 19968: jis0208<<14 | 0x38<<7 | 0x08,\n\t25168 - 19968: jis0212<<14 | 0x1E<<7 | 0x17,\n\t25169 - 19968: jis0212<<14 | 0x1E<<7 | 0x18,\n\t25170 - 19968: jis0212<<14 | 0x1E<<7 | 0x19,\n\t25171 - 19968: jis0208<<14 | 0x21<<7 | 0x26,\n\t25172 - 19968: jis0212<<14 | 0x1E<<7 | 0x1A,\n\t25173 - 19968: jis0208<<14 | 0x29<<7 | 0x06,\n\t25174 - 19968: jis0212<<14 | 0x1E<<7 | 0x1B,\n\t25176 - 19968: jis0208<<14 | 0x21<<7 | 0x50,\n\t25178 - 19968: jis0212<<14 | 0x1E<<7 | 0x1C,\n\t25179 - 19968: jis0208<<14 | 0x38<<7 | 0x0B,\n\t25180 - 19968: jis0212<<14 | 0x1E<<7 | 0x1D,\n\t25182 - 19968: jis0208<<14 | 0x38<<7 | 0x09,\n\t25184 - 19968: jis0208<<14 | 0x38<<7 | 0x0C,\n\t25187 - 19968: jis0208<<14 | 0x38<<7 | 0x0A,\n\t25188 - 19968: jis0212<<14 | 0x1E<<7 | 0x1E,\n\t25192 - 19968: jis0208<<14 | 0x38<<7 | 0x0D,\n\t25197 - 19968: jis0212<<14 | 0x1E<<7 | 0x1F,\n\t25198 - 19968: jis0208<<14 | 0x29<<7 | 0x10,\n\t25199 - 19968: jis0212<<14 | 0x1E<<7 | 0x20,\n\t25201 - 19968: jis0208<<14 | 0x0F<<7 | 0x16,\n\t25203 - 19968: jis0212<<14 | 0x1E<<7 | 0x21,\n\t25206 - 19968: jis0208<<14 | 0x28<<7 | 0x3D,\n\t25209 - 19968: jis0208<<14 | 0x27<<7 | 0x42,\n\t25210 - 19968: jis0212<<14 | 0x1E<<7 | 0x22,\n\t25212 - 19968: jis0208<<14 | 0x38<<7 | 0x0E,\n\t25213 - 19968: jis0212<<14 | 0x1E<<7 | 0x23,\n\t25214 - 19968: jis0208<<14 | 0x38<<7 | 0x11,\n\t25215 - 19968: jis0208<<14 | 0x1D<<7 | 0x14,\n\t25216 - 19968: jis0208<<14 | 0x14<<7 | 0x1A,\n\t25218 - 19968: jis0208<<14 | 0x38<<7 | 0x0F,\n\t25219 - 19968: jis0208<<14 | 0x38<<7 | 0x16,\n\t25220 - 19968: jis0208<<14 | 0x1D<<7 | 0x15,\n\t25225 - 19968: jis0208<<14 | 0x38<<7 | 0x10,\n\t25226 - 19968: jis0208<<14 | 0x26<<7 | 0x23,\n\t25229 - 19968: jis0212<<14 | 0x1E<<7 | 0x24,\n\t25230 - 19968: jis0212<<14 | 0x1E<<7 | 0x25,\n\t25231 - 19968: jis0212<<14 | 0x1E<<7 | 0x26,\n\t25232 - 19968: jis0212<<14 | 0x1E<<7 | 0x27,\n\t25233 - 19968: jis0208<<14 | 0x2C<<7 | 0x3D,\n\t25234 - 19968: jis0208<<14 | 0x38<<7 | 0x12,\n\t25235 - 19968: jis0208<<14 | 0x38<<7 | 0x13,\n\t25236 - 19968: jis0208<<14 | 0x38<<7 | 0x17,\n\t25237 - 19968: jis0208<<14 | 0x24<<7 | 0x49,\n\t25238 - 19968: jis0208<<14 | 0x38<<7 | 0x14,\n\t25239 - 19968: jis0208<<14 | 0x18<<7 | 0x12,\n\t25240 - 19968: jis0208<<14 | 0x1F<<7 | 0x3D,\n\t25243 - 19968: jis0208<<14 | 0x38<<7 | 0x25,\n\t25244 - 19968: jis0208<<14 | 0x27<<7 | 0x13,\n\t25246 - 19968: jis0208<<14 | 0x21<<7 | 0x51,\n\t25254 - 19968: jis0208<<14 | 0x59<<7 | 0x0D,\n\t25256 - 19968: jis0212<<14 | 0x1E<<7 | 0x29,\n\t25259 - 19968: jis0208<<14 | 0x27<<7 | 0x43,\n\t25260 - 19968: jis0208<<14 | 0x39<<7 | 0x0C,\n\t25265 - 19968: jis0208<<14 | 0x29<<7 | 0x59,\n\t25267 - 19968: jis0212<<14 | 0x1E<<7 | 0x2A,\n\t25269 - 19968: jis0208<<14 | 0x23<<7 | 0x50,\n\t25270 - 19968: jis0212<<14 | 0x1E<<7 | 0x2B,\n\t25271 - 19968: jis0212<<14 | 0x1E<<7 | 0x2C,\n\t25273 - 19968: jis0208<<14 | 0x2A<<7 | 0x54,\n\t25274 - 19968: jis0212<<14 | 0x1E<<7 | 0x2D,\n\t25275 - 19968: jis0208<<14 | 0x38<<7 | 0x1A,\n\t25276 - 19968: jis0208<<14 | 0x11<<7 | 0x00,\n\t25277 - 19968: jis0208<<14 | 0x22<<7 | 0x49,\n\t25278 - 19968: jis0212<<14 | 0x1E<<7 | 0x2E,\n\t25279 - 19968: jis0212<<14 | 0x1E<<7 | 0x2F,\n\t25282 - 19968: jis0208<<14 | 0x38<<7 | 0x23,\n\t25284 - 19968: jis0212<<14 | 0x1E<<7 | 0x30,\n\t25285 - 19968: jis0208<<14 | 0x22<<7 | 0x13,\n\t25286 - 19968: jis0208<<14 | 0x38<<7 | 0x1D,\n\t25287 - 19968: jis0208<<14 | 0x38<<7 | 0x24,\n\t25288 - 19968: jis0208<<14 | 0x38<<7 | 0x1F,\n\t25289 - 19968: jis0208<<14 | 0x38<<7 | 0x26,\n\t25290 - 19968: jis0208<<14 | 0x38<<7 | 0x22,\n\t25292 - 19968: jis0208<<14 | 0x38<<7 | 0x21,\n\t25293 - 19968: jis0208<<14 | 0x26<<7 | 0x4E,\n\t25294 - 19968: jis0212<<14 | 0x1E<<7 | 0x31,\n\t25295 - 19968: jis0208<<14 | 0x38<<7 | 0x1B,\n\t25296 - 19968: jis0208<<14 | 0x11<<7 | 0x5C,\n\t25297 - 19968: jis0208<<14 | 0x38<<7 | 0x19,\n\t25298 - 19968: jis0208<<14 | 0x14<<7 | 0x50,\n\t25299 - 19968: jis0208<<14 | 0x21<<7 | 0x52,\n\t25300 - 19968: jis0208<<14 | 0x38<<7 | 0x15,\n\t25301 - 19968: jis0212<<14 | 0x1E<<7 | 0x32,\n\t25302 - 19968: jis0212<<14 | 0x1E<<7 | 0x33,\n\t25303 - 19968: jis0208<<14 | 0x38<<7 | 0x18,\n\t25304 - 19968: jis0208<<14 | 0x18<<7 | 0x13,\n\t25305 - 19968: jis0208<<14 | 0x1F<<7 | 0x3A,\n\t25306 - 19968: jis0212<<14 | 0x1E<<7 | 0x34,\n\t25307 - 19968: jis0208<<14 | 0x1D<<7 | 0x16,\n\t25308 - 19968: jis0208<<14 | 0x38<<7 | 0x20,\n\t25309 - 19968: jis0208<<14 | 0x26<<7 | 0x31,\n\t25312 - 19968: jis0208<<14 | 0x14<<7 | 0x51,\n\t25313 - 19968: jis0208<<14 | 0x12<<7 | 0x27,\n\t25322 - 19968: jis0212<<14 | 0x1E<<7 | 0x35,\n\t25324 - 19968: jis0208<<14 | 0x12<<7 | 0x46,\n\t25325 - 19968: jis0208<<14 | 0x1E<<7 | 0x00,\n\t25326 - 19968: jis0208<<14 | 0x38<<7 | 0x28,\n\t25327 - 19968: jis0208<<14 | 0x38<<7 | 0x2D,\n\t25329 - 19968: jis0208<<14 | 0x38<<7 | 0x29,\n\t25330 - 19968: jis0212<<14 | 0x1E<<7 | 0x36,\n\t25331 - 19968: jis0208<<14 | 0x16<<7 | 0x5C,\n\t25332 - 19968: jis0212<<14 | 0x1E<<7 | 0x37,\n\t25333 - 19968: jis0208<<14 | 0x38<<7 | 0x2E,\n\t25334 - 19968: jis0208<<14 | 0x1A<<7 | 0x01,\n\t25335 - 19968: jis0208<<14 | 0x18<<7 | 0x48,\n\t25340 - 19968: jis0212<<14 | 0x1E<<7 | 0x38,\n\t25341 - 19968: jis0212<<14 | 0x1E<<7 | 0x39,\n\t25342 - 19968: jis0208<<14 | 0x1C<<7 | 0x05,\n\t25343 - 19968: jis0208<<14 | 0x38<<7 | 0x1C,\n\t25345 - 19968: jis0208<<14 | 0x1A<<7 | 0x5C,\n\t25346 - 19968: jis0208<<14 | 0x38<<7 | 0x2B,\n\t25347 - 19968: jis0212<<14 | 0x1E<<7 | 0x3A,\n\t25348 - 19968: jis0212<<14 | 0x1E<<7 | 0x3B,\n\t25351 - 19968: jis0208<<14 | 0x1A<<7 | 0x37,\n\t25352 - 19968: jis0208<<14 | 0x38<<7 | 0x2C,\n\t25353 - 19968: jis0208<<14 | 0x0F<<7 | 0x23,\n\t25354 - 19968: jis0212<<14 | 0x1E<<7 | 0x3C,\n\t25355 - 19968: jis0212<<14 | 0x1E<<7 | 0x3D,\n\t25356 - 19968: jis0208<<14 | 0x38<<7 | 0x27,\n\t25357 - 19968: jis0212<<14 | 0x1E<<7 | 0x3E,\n\t25360 - 19968: jis0212<<14 | 0x1E<<7 | 0x3F,\n\t25361 - 19968: jis0208<<14 | 0x23<<7 | 0x08,\n\t25363 - 19968: jis0212<<14 | 0x1E<<7 | 0x40,\n\t25366 - 19968: jis0212<<14 | 0x1E<<7 | 0x41,\n\t25368 - 19968: jis0212<<14 | 0x1E<<7 | 0x42,\n\t25369 - 19968: jis0208<<14 | 0x14<<7 | 0x52,\n\t25375 - 19968: jis0208<<14 | 0x15<<7 | 0x13,\n\t25383 - 19968: jis0208<<14 | 0x38<<7 | 0x2A,\n\t25384 - 19968: jis0208<<14 | 0x0F<<7 | 0x06,\n\t25385 - 19968: jis0212<<14 | 0x1E<<7 | 0x43,\n\t25386 - 19968: jis0212<<14 | 0x1E<<7 | 0x44,\n\t25387 - 19968: jis0208<<14 | 0x19<<7 | 0x22,\n\t25389 - 19968: jis0212<<14 | 0x1E<<7 | 0x45,\n\t25391 - 19968: jis0208<<14 | 0x1E<<7 | 0x15,\n\t25397 - 19968: jis0212<<14 | 0x1E<<7 | 0x46,\n\t25398 - 19968: jis0212<<14 | 0x1E<<7 | 0x47,\n\t25401 - 19968: jis0212<<14 | 0x1E<<7 | 0x48,\n\t25402 - 19968: jis0208<<14 | 0x23<<7 | 0x51,\n\t25404 - 19968: jis0212<<14 | 0x1E<<7 | 0x49,\n\t25405 - 19968: jis0208<<14 | 0x27<<7 | 0x33,\n\t25406 - 19968: jis0208<<14 | 0x38<<7 | 0x30,\n\t25407 - 19968: jis0208<<14 | 0x20<<7 | 0x3D,\n\t25409 - 19968: jis0212<<14 | 0x1E<<7 | 0x4A,\n\t25410 - 19968: jis0212<<14 | 0x1E<<7 | 0x4B,\n\t25411 - 19968: jis0212<<14 | 0x1E<<7 | 0x4C,\n\t25412 - 19968: jis0212<<14 | 0x1E<<7 | 0x4D,\n\t25414 - 19968: jis0212<<14 | 0x1E<<7 | 0x4E,\n\t25417 - 19968: jis0208<<14 | 0x21<<7 | 0x09,\n\t25418 - 19968: jis0212<<14 | 0x1E<<7 | 0x4F,\n\t25419 - 19968: jis0212<<14 | 0x1E<<7 | 0x50,\n\t25420 - 19968: jis0208<<14 | 0x1A<<7 | 0x0A,\n\t25421 - 19968: jis0208<<14 | 0x38<<7 | 0x31,\n\t25422 - 19968: jis0212<<14 | 0x1E<<7 | 0x51,\n\t25423 - 19968: jis0208<<14 | 0x38<<7 | 0x33,\n\t25424 - 19968: jis0208<<14 | 0x38<<7 | 0x2F,\n\t25426 - 19968: jis0212<<14 | 0x1E<<7 | 0x52,\n\t25427 - 19968: jis0212<<14 | 0x1E<<7 | 0x53,\n\t25428 - 19968: jis0212<<14 | 0x1E<<7 | 0x54,\n\t25429 - 19968: jis0208<<14 | 0x29<<7 | 0x40,\n\t25431 - 19968: jis0208<<14 | 0x23<<7 | 0x1C,\n\t25432 - 19968: jis0212<<14 | 0x1E<<7 | 0x55,\n\t25435 - 19968: jis0212<<14 | 0x1E<<7 | 0x56,\n\t25436 - 19968: jis0208<<14 | 0x20<<7 | 0x3B,\n\t25445 - 19968: jis0212<<14 | 0x1E<<7 | 0x57,\n\t25446 - 19968: jis0212<<14 | 0x1E<<7 | 0x58,\n\t25447 - 19968: jis0208<<14 | 0x29<<7 | 0x5A,\n\t25448 - 19968: jis0208<<14 | 0x1B<<7 | 0x2D,\n\t25449 - 19968: jis0208<<14 | 0x38<<7 | 0x3F,\n\t25451 - 19968: jis0208<<14 | 0x38<<7 | 0x3E,\n\t25452 - 19968: jis0212<<14 | 0x1E<<7 | 0x59,\n\t25453 - 19968: jis0212<<14 | 0x1E<<7 | 0x5A,\n\t25454 - 19968: jis0208<<14 | 0x1E<<7 | 0x57,\n\t25457 - 19968: jis0212<<14 | 0x1E<<7 | 0x5B,\n\t25458 - 19968: jis0208<<14 | 0x16<<7 | 0x5D,\n\t25460 - 19968: jis0212<<14 | 0x1E<<7 | 0x5C,\n\t25461 - 19968: jis0212<<14 | 0x1E<<7 | 0x5D,\n\t25462 - 19968: jis0208<<14 | 0x38<<7 | 0x38,\n\t25463 - 19968: jis0208<<14 | 0x1D<<7 | 0x18,\n\t25464 - 19968: jis0212<<14 | 0x1F<<7 | 0x00,\n\t25466 - 19968: jis0208<<14 | 0x25<<7 | 0x47,\n\t25467 - 19968: jis0208<<14 | 0x26<<7 | 0x10,\n\t25468 - 19968: jis0212<<14 | 0x1F<<7 | 0x01,\n\t25469 - 19968: jis0212<<14 | 0x1F<<7 | 0x02,\n\t25471 - 19968: jis0212<<14 | 0x1F<<7 | 0x03,\n\t25472 - 19968: jis0208<<14 | 0x38<<7 | 0x36,\n\t25474 - 19968: jis0212<<14 | 0x1F<<7 | 0x04,\n\t25475 - 19968: jis0208<<14 | 0x20<<7 | 0x3C,\n\t25476 - 19968: jis0212<<14 | 0x1F<<7 | 0x05,\n\t25479 - 19968: jis0212<<14 | 0x1F<<7 | 0x06,\n\t25480 - 19968: jis0208<<14 | 0x1B<<7 | 0x57,\n\t25481 - 19968: jis0208<<14 | 0x38<<7 | 0x3B,\n\t25482 - 19968: jis0212<<14 | 0x1F<<7 | 0x07,\n\t25484 - 19968: jis0208<<14 | 0x1D<<7 | 0x17,\n\t25486 - 19968: jis0208<<14 | 0x38<<7 | 0x35,\n\t25487 - 19968: jis0208<<14 | 0x38<<7 | 0x3A,\n\t25488 - 19968: jis0212<<14 | 0x1F<<7 | 0x08,\n\t25490 - 19968: jis0208<<14 | 0x26<<7 | 0x32,\n\t25492 - 19968: jis0212<<14 | 0x1F<<7 | 0x09,\n\t25493 - 19968: jis0212<<14 | 0x1F<<7 | 0x0A,\n\t25494 - 19968: jis0208<<14 | 0x38<<7 | 0x34,\n\t25496 - 19968: jis0208<<14 | 0x16<<7 | 0x00,\n\t25497 - 19968: jis0212<<14 | 0x1F<<7 | 0x0B,\n\t25498 - 19968: jis0212<<14 | 0x1F<<7 | 0x0C,\n\t25499 - 19968: jis0208<<14 | 0x12<<7 | 0x3C,\n\t25502 - 19968: jis0212<<14 | 0x1F<<7 | 0x0D,\n\t25503 - 19968: jis0208<<14 | 0x38<<7 | 0x3C,\n\t25504 - 19968: jis0208<<14 | 0x2D<<7 | 0x0A,\n\t25505 - 19968: jis0208<<14 | 0x19<<7 | 0x2D,\n\t25506 - 19968: jis0208<<14 | 0x22<<7 | 0x14,\n\t25507 - 19968: jis0208<<14 | 0x38<<7 | 0x39,\n\t25508 - 19968: jis0212<<14 | 0x1F<<7 | 0x0E,\n\t25509 - 19968: jis0208<<14 | 0x1F<<7 | 0x3B,\n\t25510 - 19968: jis0212<<14 | 0x1F<<7 | 0x0F,\n\t25511 - 19968: jis0208<<14 | 0x18<<7 | 0x14,\n\t25512 - 19968: jis0208<<14 | 0x1E<<7 | 0x43,\n\t25513 - 19968: jis0208<<14 | 0x10<<7 | 0x45,\n\t25514 - 19968: jis0208<<14 | 0x20<<7 | 0x1B,\n\t25515 - 19968: jis0208<<14 | 0x38<<7 | 0x37,\n\t25516 - 19968: jis0208<<14 | 0x14<<7 | 0x24,\n\t25517 - 19968: jis0212<<14 | 0x1F<<7 | 0x10,\n\t25518 - 19968: jis0212<<14 | 0x1F<<7 | 0x11,\n\t25519 - 19968: jis0212<<14 | 0x1F<<7 | 0x12,\n\t25522 - 19968: jis0208<<14 | 0x16<<7 | 0x26,\n\t25524 - 19968: jis0208<<14 | 0x23<<7 | 0x2E,\n\t25525 - 19968: jis0208<<14 | 0x38<<7 | 0x3D,\n\t25531 - 19968: jis0208<<14 | 0x20<<7 | 0x3E,\n\t25533 - 19968: jis0212<<14 | 0x1F<<7 | 0x13,\n\t25534 - 19968: jis0208<<14 | 0x38<<7 | 0x40,\n\t25536 - 19968: jis0208<<14 | 0x38<<7 | 0x42,\n\t25537 - 19968: jis0212<<14 | 0x1F<<7 | 0x14,\n\t25539 - 19968: jis0208<<14 | 0x21<<7 | 0x16,\n\t25540 - 19968: jis0208<<14 | 0x38<<7 | 0x48,\n\t25541 - 19968: jis0212<<14 | 0x1F<<7 | 0x15,\n\t25542 - 19968: jis0208<<14 | 0x38<<7 | 0x43,\n\t25544 - 19968: jis0212<<14 | 0x1F<<7 | 0x16,\n\t25545 - 19968: jis0208<<14 | 0x38<<7 | 0x45,\n\t25550 - 19968: jis0212<<14 | 0x1F<<7 | 0x17,\n\t25551 - 19968: jis0208<<14 | 0x28<<7 | 0x20,\n\t25552 - 19968: jis0208<<14 | 0x23<<7 | 0x52,\n\t25553 - 19968: jis0212<<14 | 0x1F<<7 | 0x18,\n\t25554 - 19968: jis0208<<14 | 0x38<<7 | 0x46,\n\t25555 - 19968: jis0212<<14 | 0x1F<<7 | 0x19,\n\t25556 - 19968: jis0212<<14 | 0x1F<<7 | 0x1A,\n\t25557 - 19968: jis0212<<14 | 0x1F<<7 | 0x1B,\n\t25558 - 19968: jis0208<<14 | 0x2C<<7 | 0x0B,\n\t25562 - 19968: jis0208<<14 | 0x2C<<7 | 0x27,\n\t25563 - 19968: jis0208<<14 | 0x13<<7 | 0x18,\n\t25564 - 19968: jis0212<<14 | 0x1F<<7 | 0x1C,\n\t25568 - 19968: jis0212<<14 | 0x1F<<7 | 0x1D,\n\t25569 - 19968: jis0208<<14 | 0x0F<<7 | 0x0D,\n\t25571 - 19968: jis0208<<14 | 0x38<<7 | 0x44,\n\t25573 - 19968: jis0212<<14 | 0x1F<<7 | 0x1E,\n\t25577 - 19968: jis0208<<14 | 0x38<<7 | 0x41,\n\t25578 - 19968: jis0212<<14 | 0x1F<<7 | 0x1F,\n\t25580 - 19968: jis0212<<14 | 0x1F<<7 | 0x20,\n\t25582 - 19968: jis0208<<14 | 0x13<<7 | 0x57,\n\t25586 - 19968: jis0212<<14 | 0x1F<<7 | 0x21,\n\t25587 - 19968: jis0212<<14 | 0x1F<<7 | 0x22,\n\t25588 - 19968: jis0208<<14 | 0x10<<7 | 0x46,\n\t25589 - 19968: jis0208<<14 | 0x59<<7 | 0x0E,\n\t25590 - 19968: jis0208<<14 | 0x38<<7 | 0x47,\n\t25592 - 19968: jis0212<<14 | 0x1F<<7 | 0x24,\n\t25593 - 19968: jis0212<<14 | 0x1F<<7 | 0x25,\n\t25594 - 19968: jis0208<<14 | 0x2C<<7 | 0x28,\n\t25606 - 19968: jis0208<<14 | 0x38<<7 | 0x4B,\n\t25609 - 19968: jis0212<<14 | 0x1F<<7 | 0x26,\n\t25610 - 19968: jis0212<<14 | 0x1F<<7 | 0x27,\n\t25613 - 19968: jis0208<<14 | 0x21<<7 | 0x1A,\n\t25615 - 19968: jis0208<<14 | 0x38<<7 | 0x52,\n\t25616 - 19968: jis0212<<14 | 0x1F<<7 | 0x28,\n\t25618 - 19968: jis0212<<14 | 0x1F<<7 | 0x29,\n\t25619 - 19968: jis0208<<14 | 0x38<<7 | 0x4C,\n\t25620 - 19968: jis0212<<14 | 0x1F<<7 | 0x2A,\n\t25622 - 19968: jis0208<<14 | 0x38<<7 | 0x49,\n\t25623 - 19968: jis0208<<14 | 0x38<<7 | 0x50,\n\t25624 - 19968: jis0212<<14 | 0x1F<<7 | 0x2B,\n\t25628 - 19968: jis0208<<14 | 0x38<<7 | 0x32,\n\t25630 - 19968: jis0212<<14 | 0x1F<<7 | 0x2C,\n\t25632 - 19968: jis0212<<14 | 0x1F<<7 | 0x2D,\n\t25634 - 19968: jis0212<<14 | 0x1F<<7 | 0x2E,\n\t25636 - 19968: jis0212<<14 | 0x1F<<7 | 0x2F,\n\t25637 - 19968: jis0212<<14 | 0x1F<<7 | 0x30,\n\t25638 - 19968: jis0208<<14 | 0x38<<7 | 0x4D,\n\t25640 - 19968: jis0208<<14 | 0x38<<7 | 0x51,\n\t25641 - 19968: jis0212<<14 | 0x1F<<7 | 0x31,\n\t25642 - 19968: jis0212<<14 | 0x1F<<7 | 0x32,\n\t25644 - 19968: jis0208<<14 | 0x27<<7 | 0x21,\n\t25645 - 19968: jis0208<<14 | 0x24<<7 | 0x4A,\n\t25647 - 19968: jis0212<<14 | 0x1F<<7 | 0x33,\n\t25648 - 19968: jis0212<<14 | 0x1F<<7 | 0x34,\n\t25652 - 19968: jis0208<<14 | 0x38<<7 | 0x4A,\n\t25653 - 19968: jis0212<<14 | 0x1F<<7 | 0x35,\n\t25654 - 19968: jis0208<<14 | 0x38<<7 | 0x4E,\n\t25658 - 19968: jis0208<<14 | 0x16<<7 | 0x27,\n\t25661 - 19968: jis0212<<14 | 0x1F<<7 | 0x36,\n\t25662 - 19968: jis0208<<14 | 0x19<<7 | 0x50,\n\t25663 - 19968: jis0212<<14 | 0x1F<<7 | 0x37,\n\t25666 - 19968: jis0208<<14 | 0x1F<<7 | 0x3C,\n\t25675 - 19968: jis0212<<14 | 0x1F<<7 | 0x38,\n\t25678 - 19968: jis0208<<14 | 0x38<<7 | 0x56,\n\t25679 - 19968: jis0212<<14 | 0x1F<<7 | 0x39,\n\t25681 - 19968: jis0212<<14 | 0x1F<<7 | 0x3A,\n\t25682 - 19968: jis0212<<14 | 0x1F<<7 | 0x3B,\n\t25683 - 19968: jis0212<<14 | 0x1F<<7 | 0x3C,\n\t25684 - 19968: jis0212<<14 | 0x1F<<7 | 0x3D,\n\t25688 - 19968: jis0208<<14 | 0x24<<7 | 0x05,\n\t25690 - 19968: jis0212<<14 | 0x1F<<7 | 0x3E,\n\t25691 - 19968: jis0212<<14 | 0x1F<<7 | 0x3F,\n\t25692 - 19968: jis0212<<14 | 0x1F<<7 | 0x40,\n\t25693 - 19968: jis0212<<14 | 0x1F<<7 | 0x41,\n\t25695 - 19968: jis0212<<14 | 0x1F<<7 | 0x42,\n\t25696 - 19968: jis0208<<14 | 0x59<<7 | 0x0F,\n\t25697 - 19968: jis0212<<14 | 0x1F<<7 | 0x44,\n\t25699 - 19968: jis0212<<14 | 0x1F<<7 | 0x45,\n\t25703 - 19968: jis0208<<14 | 0x38<<7 | 0x53,\n\t25705 - 19968: jis0208<<14 | 0x2A<<7 | 0x3F,\n\t25709 - 19968: jis0212<<14 | 0x1F<<7 | 0x46,\n\t25711 - 19968: jis0208<<14 | 0x38<<7 | 0x54,\n\t25715 - 19968: jis0212<<14 | 0x1F<<7 | 0x47,\n\t25716 - 19968: jis0212<<14 | 0x1F<<7 | 0x48,\n\t25718 - 19968: jis0208<<14 | 0x38<<7 | 0x55,\n\t25720 - 19968: jis0208<<14 | 0x2B<<7 | 0x2D,\n\t25722 - 19968: jis0208<<14 | 0x1F<<7 | 0x01,\n\t25723 - 19968: jis0212<<14 | 0x1F<<7 | 0x49,\n\t25725 - 19968: jis0212<<14 | 0x1F<<7 | 0x4A,\n\t25731 - 19968: jis0208<<14 | 0x16<<7 | 0x41,\n\t25733 - 19968: jis0212<<14 | 0x1F<<7 | 0x4B,\n\t25735 - 19968: jis0212<<14 | 0x1F<<7 | 0x4C,\n\t25736 - 19968: jis0208<<14 | 0x38<<7 | 0x5C,\n\t25743 - 19968: jis0212<<14 | 0x1F<<7 | 0x4D,\n\t25744 - 19968: jis0212<<14 | 0x1F<<7 | 0x4E,\n\t25745 - 19968: jis0212<<14 | 0x1F<<7 | 0x4F,\n\t25746 - 19968: jis0208<<14 | 0x1A<<7 | 0x14,\n\t25747 - 19968: jis0208<<14 | 0x38<<7 | 0x59,\n\t25749 - 19968: jis0208<<14 | 0x38<<7 | 0x58,\n\t25752 - 19968: jis0212<<14 | 0x1F<<7 | 0x50,\n\t25753 - 19968: jis0212<<14 | 0x1F<<7 | 0x51,\n\t25754 - 19968: jis0208<<14 | 0x26<<7 | 0x11,\n\t25755 - 19968: jis0212<<14 | 0x1F<<7 | 0x52,\n\t25757 - 19968: jis0208<<14 | 0x59<<7 | 0x10,\n\t25758 - 19968: jis0208<<14 | 0x25<<7 | 0x14,\n\t25759 - 19968: jis0212<<14 | 0x1F<<7 | 0x54,\n\t25761 - 19968: jis0212<<14 | 0x1F<<7 | 0x55,\n\t25763 - 19968: jis0212<<14 | 0x1F<<7 | 0x56,\n\t25764 - 19968: jis0208<<14 | 0x24<<7 | 0x10,\n\t25765 - 19968: jis0208<<14 | 0x38<<7 | 0x5A,\n\t25766 - 19968: jis0212<<14 | 0x1F<<7 | 0x57,\n\t25768 - 19968: jis0212<<14 | 0x1F<<7 | 0x58,\n\t25769 - 19968: jis0208<<14 | 0x38<<7 | 0x5B,\n\t25771 - 19968: jis0208<<14 | 0x28<<7 | 0x4E,\n\t25772 - 19968: jis0212<<14 | 0x1F<<7 | 0x59,\n\t25773 - 19968: jis0208<<14 | 0x26<<7 | 0x24,\n\t25774 - 19968: jis0208<<14 | 0x1A<<7 | 0x02,\n\t25776 - 19968: jis0208<<14 | 0x1F<<7 | 0x50,\n\t25778 - 19968: jis0208<<14 | 0x2A<<7 | 0x2F,\n\t25779 - 19968: jis0212<<14 | 0x1F<<7 | 0x5A,\n\t25785 - 19968: jis0208<<14 | 0x12<<7 | 0x28,\n\t25787 - 19968: jis0208<<14 | 0x39<<7 | 0x04,\n\t25788 - 19968: jis0208<<14 | 0x38<<7 | 0x5D,\n\t25789 - 19968: jis0212<<14 | 0x1F<<7 | 0x5B,\n\t25790 - 19968: jis0212<<14 | 0x1F<<7 | 0x5C,\n\t25791 - 19968: jis0212<<14 | 0x1F<<7 | 0x5D,\n\t25793 - 19968: jis0208<<14 | 0x2C<<7 | 0x29,\n\t25794 - 19968: jis0208<<14 | 0x39<<7 | 0x06,\n\t25796 - 19968: jis0212<<14 | 0x20<<7 | 0x00,\n\t25797 - 19968: jis0208<<14 | 0x39<<7 | 0x02,\n\t25799 - 19968: jis0208<<14 | 0x39<<7 | 0x03,\n\t25801 - 19968: jis0212<<14 | 0x20<<7 | 0x01,\n\t25802 - 19968: jis0212<<14 | 0x20<<7 | 0x02,\n\t25803 - 19968: jis0212<<14 | 0x20<<7 | 0x03,\n\t25804 - 19968: jis0212<<14 | 0x20<<7 | 0x04,\n\t25805 - 19968: jis0208<<14 | 0x20<<7 | 0x3F,\n\t25806 - 19968: jis0208<<14 | 0x59<<7 | 0x11,\n\t25808 - 19968: jis0212<<14 | 0x20<<7 | 0x06,\n\t25809 - 19968: jis0212<<14 | 0x20<<7 | 0x07,\n\t25810 - 19968: jis0208<<14 | 0x39<<7 | 0x01,\n\t25812 - 19968: jis0208<<14 | 0x38<<7 | 0x1E,\n\t25813 - 19968: jis0212<<14 | 0x20<<7 | 0x08,\n\t25815 - 19968: jis0212<<14 | 0x20<<7 | 0x09,\n\t25816 - 19968: jis0208<<14 | 0x39<<7 | 0x05,\n\t25818 - 19968: jis0208<<14 | 0x39<<7 | 0x00,\n\t25824 - 19968: jis0208<<14 | 0x39<<7 | 0x0A,\n\t25825 - 19968: jis0208<<14 | 0x39<<7 | 0x0B,\n\t25826 - 19968: jis0208<<14 | 0x24<<7 | 0x06,\n\t25827 - 19968: jis0208<<14 | 0x39<<7 | 0x0D,\n\t25828 - 19968: jis0212<<14 | 0x20<<7 | 0x0A,\n\t25829 - 19968: jis0212<<14 | 0x20<<7 | 0x0B,\n\t25830 - 19968: jis0208<<14 | 0x1A<<7 | 0x03,\n\t25831 - 19968: jis0208<<14 | 0x39<<7 | 0x08,\n\t25833 - 19968: jis0212<<14 | 0x20<<7 | 0x0C,\n\t25834 - 19968: jis0212<<14 | 0x20<<7 | 0x0D,\n\t25836 - 19968: jis0208<<14 | 0x14<<7 | 0x1B,\n\t25837 - 19968: jis0212<<14 | 0x20<<7 | 0x0E,\n\t25839 - 19968: jis0208<<14 | 0x39<<7 | 0x0E,\n\t25840 - 19968: jis0212<<14 | 0x20<<7 | 0x0F,\n\t25841 - 19968: jis0208<<14 | 0x39<<7 | 0x07,\n\t25842 - 19968: jis0208<<14 | 0x39<<7 | 0x12,\n\t25844 - 19968: jis0208<<14 | 0x39<<7 | 0x11,\n\t25845 - 19968: jis0212<<14 | 0x20<<7 | 0x10,\n\t25846 - 19968: jis0208<<14 | 0x39<<7 | 0x10,\n\t25847 - 19968: jis0212<<14 | 0x20<<7 | 0x11,\n\t25850 - 19968: jis0208<<14 | 0x39<<7 | 0x13,\n\t25851 - 19968: jis0212<<14 | 0x20<<7 | 0x12,\n\t25853 - 19968: jis0208<<14 | 0x39<<7 | 0x15,\n\t25854 - 19968: jis0208<<14 | 0x1D<<7 | 0x50,\n\t25855 - 19968: jis0212<<14 | 0x20<<7 | 0x13,\n\t25856 - 19968: jis0208<<14 | 0x39<<7 | 0x14,\n\t25857 - 19968: jis0212<<14 | 0x20<<7 | 0x14,\n\t25860 - 19968: jis0212<<14 | 0x20<<7 | 0x15,\n\t25861 - 19968: jis0208<<14 | 0x39<<7 | 0x18,\n\t25864 - 19968: jis0212<<14 | 0x20<<7 | 0x16,\n\t25865 - 19968: jis0212<<14 | 0x20<<7 | 0x17,\n\t25866 - 19968: jis0212<<14 | 0x20<<7 | 0x18,\n\t25871 - 19968: jis0212<<14 | 0x20<<7 | 0x19,\n\t25875 - 19968: jis0212<<14 | 0x20<<7 | 0x1A,\n\t25876 - 19968: jis0212<<14 | 0x20<<7 | 0x1B,\n\t25878 - 19968: jis0212<<14 | 0x20<<7 | 0x1C,\n\t25880 - 19968: jis0208<<14 | 0x39<<7 | 0x16,\n\t25881 - 19968: jis0212<<14 | 0x20<<7 | 0x1D,\n\t25883 - 19968: jis0212<<14 | 0x20<<7 | 0x1E,\n\t25884 - 19968: jis0208<<14 | 0x39<<7 | 0x17,\n\t25885 - 19968: jis0208<<14 | 0x38<<7 | 0x4F,\n\t25886 - 19968: jis0212<<14 | 0x20<<7 | 0x1F,\n\t25887 - 19968: jis0212<<14 | 0x20<<7 | 0x20,\n\t25890 - 19968: jis0212<<14 | 0x20<<7 | 0x21,\n\t25891 - 19968: jis0208<<14 | 0x39<<7 | 0x1A,\n\t25892 - 19968: jis0208<<14 | 0x39<<7 | 0x19,\n\t25894 - 19968: jis0212<<14 | 0x20<<7 | 0x22,\n\t25897 - 19968: jis0212<<14 | 0x20<<7 | 0x23,\n\t25898 - 19968: jis0208<<14 | 0x38<<7 | 0x57,\n\t25899 - 19968: jis0208<<14 | 0x39<<7 | 0x1B,\n\t25900 - 19968: jis0208<<14 | 0x39<<7 | 0x0F,\n\t25902 - 19968: jis0212<<14 | 0x20<<7 | 0x24,\n\t25903 - 19968: jis0208<<14 | 0x1A<<7 | 0x38,\n\t25905 - 19968: jis0212<<14 | 0x20<<7 | 0x25,\n\t25908 - 19968: jis0208<<14 | 0x39<<7 | 0x1C,\n\t25909 - 19968: jis0208<<14 | 0x39<<7 | 0x1D,\n\t25910 - 19968: jis0208<<14 | 0x39<<7 | 0x1F,\n\t25911 - 19968: jis0208<<14 | 0x39<<7 | 0x1E,\n\t25912 - 19968: jis0208<<14 | 0x39<<7 | 0x20,\n\t25913 - 19968: jis0208<<14 | 0x11<<7 | 0x5D,\n\t25914 - 19968: jis0212<<14 | 0x20<<7 | 0x26,\n\t25915 - 19968: jis0208<<14 | 0x18<<7 | 0x15,\n\t25916 - 19968: jis0212<<14 | 0x20<<7 | 0x27,\n\t25917 - 19968: jis0212<<14 | 0x20<<7 | 0x28,\n\t25918 - 19968: jis0208<<14 | 0x29<<7 | 0x5B,\n\t25919 - 19968: jis0208<<14 | 0x1F<<7 | 0x0E,\n\t25923 - 19968: jis0212<<14 | 0x20<<7 | 0x29,\n\t25925 - 19968: jis0208<<14 | 0x17<<7 | 0x2D,\n\t25927 - 19968: jis0212<<14 | 0x20<<7 | 0x2A,\n\t25928 - 19968: jis0208<<14 | 0x39<<7 | 0x22,\n\t25929 - 19968: jis0212<<14 | 0x20<<7 | 0x2B,\n\t25933 - 19968: jis0208<<14 | 0x39<<7 | 0x25,\n\t25934 - 19968: jis0208<<14 | 0x59<<7 | 0x12,\n\t25935 - 19968: jis0208<<14 | 0x28<<7 | 0x31,\n\t25936 - 19968: jis0212<<14 | 0x20<<7 | 0x2C,\n\t25937 - 19968: jis0208<<14 | 0x14<<7 | 0x3E,\n\t25938 - 19968: jis0212<<14 | 0x20<<7 | 0x2D,\n\t25940 - 19968: jis0212<<14 | 0x20<<7 | 0x2E,\n\t25941 - 19968: jis0208<<14 | 0x39<<7 | 0x24,\n\t25942 - 19968: jis0208<<14 | 0x39<<7 | 0x23,\n\t25943 - 19968: jis0208<<14 | 0x26<<7 | 0x33,\n\t25944 - 19968: jis0208<<14 | 0x39<<7 | 0x26,\n\t25945 - 19968: jis0208<<14 | 0x15<<7 | 0x14,\n\t25949 - 19968: jis0208<<14 | 0x39<<7 | 0x28,\n\t25950 - 19968: jis0208<<14 | 0x39<<7 | 0x27,\n\t25951 - 19968: jis0212<<14 | 0x20<<7 | 0x2F,\n\t25952 - 19968: jis0212<<14 | 0x20<<7 | 0x30,\n\t25954 - 19968: jis0208<<14 | 0x13<<7 | 0x19,\n\t25955 - 19968: jis0208<<14 | 0x1A<<7 | 0x15,\n\t25958 - 19968: jis0208<<14 | 0x25<<7 | 0x37,\n\t25959 - 19968: jis0212<<14 | 0x20<<7 | 0x31,\n\t25963 - 19968: jis0212<<14 | 0x20<<7 | 0x32,\n\t25964 - 19968: jis0208<<14 | 0x16<<7 | 0x28,\n\t25968 - 19968: jis0208<<14 | 0x1E<<7 | 0x53,\n\t25970 - 19968: jis0208<<14 | 0x39<<7 | 0x29,\n\t25972 - 19968: jis0208<<14 | 0x1F<<7 | 0x0F,\n\t25973 - 19968: jis0208<<14 | 0x24<<7 | 0x07,\n\t25975 - 19968: jis0208<<14 | 0x28<<7 | 0x3E,\n\t25976 - 19968: jis0208<<14 | 0x39<<7 | 0x2A,\n\t25978 - 19968: jis0212<<14 | 0x20<<7 | 0x33,\n\t25981 - 19968: jis0212<<14 | 0x20<<7 | 0x34,\n\t25985 - 19968: jis0212<<14 | 0x20<<7 | 0x35,\n\t25986 - 19968: jis0208<<14 | 0x39<<7 | 0x2B,\n\t25987 - 19968: jis0208<<14 | 0x39<<7 | 0x2C,\n\t25989 - 19968: jis0212<<14 | 0x20<<7 | 0x36,\n\t25991 - 19968: jis0208<<14 | 0x29<<7 | 0x17,\n\t25992 - 19968: jis0208<<14 | 0x34<<7 | 0x3C,\n\t25993 - 19968: jis0208<<14 | 0x1F<<7 | 0x25,\n\t25994 - 19968: jis0212<<14 | 0x20<<7 | 0x37,\n\t25996 - 19968: jis0208<<14 | 0x28<<7 | 0x2B,\n\t25998 - 19968: jis0208<<14 | 0x19<<7 | 0x37,\n\t26000 - 19968: jis0208<<14 | 0x27<<7 | 0x44,\n\t26001 - 19968: jis0208<<14 | 0x27<<7 | 0x22,\n\t26002 - 19968: jis0212<<14 | 0x20<<7 | 0x38,\n\t26005 - 19968: jis0212<<14 | 0x20<<7 | 0x39,\n\t26007 - 19968: jis0208<<14 | 0x24<<7 | 0x2C,\n\t26008 - 19968: jis0212<<14 | 0x20<<7 | 0x3A,\n\t26009 - 19968: jis0208<<14 | 0x2D<<7 | 0x20,\n\t26011 - 19968: jis0208<<14 | 0x39<<7 | 0x2E,\n\t26012 - 19968: jis0208<<14 | 0x1B<<7 | 0x2F,\n\t26013 - 19968: jis0212<<14 | 0x20<<7 | 0x3B,\n\t26015 - 19968: jis0208<<14 | 0x39<<7 | 0x2F,\n\t26016 - 19968: jis0212<<14 | 0x20<<7 | 0x3C,\n\t26017 - 19968: jis0208<<14 | 0x0F<<7 | 0x15,\n\t26019 - 19968: jis0212<<14 | 0x20<<7 | 0x3D,\n\t26020 - 19968: jis0208<<14 | 0x15<<7 | 0x33,\n\t26021 - 19968: jis0208<<14 | 0x1F<<7 | 0x2C,\n\t26022 - 19968: jis0212<<14 | 0x20<<7 | 0x3E,\n\t26023 - 19968: jis0208<<14 | 0x28<<7 | 0x3F,\n\t26027 - 19968: jis0208<<14 | 0x39<<7 | 0x30,\n\t26028 - 19968: jis0208<<14 | 0x1A<<7 | 0x21,\n\t26029 - 19968: jis0208<<14 | 0x22<<7 | 0x26,\n\t26030 - 19968: jis0212<<14 | 0x20<<7 | 0x3F,\n\t26031 - 19968: jis0208<<14 | 0x1A<<7 | 0x3A,\n\t26032 - 19968: jis0208<<14 | 0x1E<<7 | 0x16,\n\t26034 - 19968: jis0212<<14 | 0x20<<7 | 0x40,\n\t26035 - 19968: jis0212<<14 | 0x20<<7 | 0x41,\n\t26036 - 19968: jis0212<<14 | 0x20<<7 | 0x42,\n\t26039 - 19968: jis0208<<14 | 0x39<<7 | 0x31,\n\t26041 - 19968: jis0208<<14 | 0x29<<7 | 0x5C,\n\t26044 - 19968: jis0208<<14 | 0x10<<7 | 0x56,\n\t26045 - 19968: jis0208<<14 | 0x1A<<7 | 0x3B,\n\t26047 - 19968: jis0212<<14 | 0x20<<7 | 0x43,\n\t26049 - 19968: jis0208<<14 | 0x39<<7 | 0x34,\n\t26050 - 19968: jis0212<<14 | 0x20<<7 | 0x44,\n\t26051 - 19968: jis0208<<14 | 0x39<<7 | 0x32,\n\t26052 - 19968: jis0208<<14 | 0x39<<7 | 0x35,\n\t26053 - 19968: jis0208<<14 | 0x2D<<7 | 0x18,\n\t26054 - 19968: jis0208<<14 | 0x39<<7 | 0x33,\n\t26056 - 19968: jis0212<<14 | 0x20<<7 | 0x45,\n\t26057 - 19968: jis0212<<14 | 0x20<<7 | 0x46,\n\t26059 - 19968: jis0208<<14 | 0x1F<<7 | 0x5A,\n\t26060 - 19968: jis0208<<14 | 0x39<<7 | 0x36,\n\t26062 - 19968: jis0212<<14 | 0x20<<7 | 0x47,\n\t26063 - 19968: jis0208<<14 | 0x21<<7 | 0x11,\n\t26064 - 19968: jis0212<<14 | 0x20<<7 | 0x48,\n\t26066 - 19968: jis0208<<14 | 0x39<<7 | 0x37,\n\t26068 - 19968: jis0212<<14 | 0x20<<7 | 0x49,\n\t26070 - 19968: jis0212<<14 | 0x20<<7 | 0x4A,\n\t26071 - 19968: jis0208<<14 | 0x13<<7 | 0x59,\n\t26072 - 19968: jis0212<<14 | 0x20<<7 | 0x4B,\n\t26073 - 19968: jis0208<<14 | 0x39<<7 | 0x39,\n\t26075 - 19968: jis0208<<14 | 0x39<<7 | 0x38,\n\t26079 - 19968: jis0212<<14 | 0x20<<7 | 0x4C,\n\t26080 - 19968: jis0208<<14 | 0x39<<7 | 0x3A,\n\t26081 - 19968: jis0208<<14 | 0x39<<7 | 0x3B,\n\t26082 - 19968: jis0208<<14 | 0x13<<7 | 0x5A,\n\t26085 - 19968: jis0208<<14 | 0x25<<7 | 0x5B,\n\t26086 - 19968: jis0208<<14 | 0x22<<7 | 0x15,\n\t26087 - 19968: jis0208<<14 | 0x14<<7 | 0x4B,\n\t26088 - 19968: jis0208<<14 | 0x1A<<7 | 0x3C,\n\t26089 - 19968: jis0208<<14 | 0x20<<7 | 0x40,\n\t26092 - 19968: jis0208<<14 | 0x1C<<7 | 0x3B,\n\t26093 - 19968: jis0208<<14 | 0x0F<<7 | 0x0F,\n\t26096 - 19968: jis0212<<14 | 0x20<<7 | 0x4D,\n\t26097 - 19968: jis0208<<14 | 0x39<<7 | 0x3C,\n\t26098 - 19968: jis0212<<14 | 0x20<<7 | 0x4E,\n\t26100 - 19968: jis0212<<14 | 0x20<<7 | 0x4F,\n\t26101 - 19968: jis0212<<14 | 0x20<<7 | 0x50,\n\t26105 - 19968: jis0212<<14 | 0x20<<7 | 0x51,\n\t26106 - 19968: jis0208<<14 | 0x11<<7 | 0x01,\n\t26107 - 19968: jis0208<<14 | 0x39<<7 | 0x40,\n\t26110 - 19968: jis0212<<14 | 0x20<<7 | 0x52,\n\t26111 - 19968: jis0212<<14 | 0x20<<7 | 0x53,\n\t26112 - 19968: jis0208<<14 | 0x59<<7 | 0x13,\n\t26114 - 19968: jis0208<<14 | 0x18<<7 | 0x16,\n\t26115 - 19968: jis0208<<14 | 0x39<<7 | 0x3F,\n\t26116 - 19968: jis0212<<14 | 0x20<<7 | 0x55,\n\t26118 - 19968: jis0208<<14 | 0x19<<7 | 0x0A,\n\t26119 - 19968: jis0208<<14 | 0x1D<<7 | 0x19,\n\t26120 - 19968: jis0212<<14 | 0x20<<7 | 0x56,\n\t26121 - 19968: jis0208<<14 | 0x59<<7 | 0x16,\n\t26122 - 19968: jis0208<<14 | 0x39<<7 | 0x3E,\n\t26124 - 19968: jis0208<<14 | 0x1D<<7 | 0x1A,\n\t26125 - 19968: jis0212<<14 | 0x20<<7 | 0x58,\n\t26126 - 19968: jis0208<<14 | 0x2B<<7 | 0x1F,\n\t26127 - 19968: jis0208<<14 | 0x19<<7 | 0x09,\n\t26129 - 19968: jis0212<<14 | 0x20<<7 | 0x59,\n\t26130 - 19968: jis0212<<14 | 0x20<<7 | 0x5A,\n\t26131 - 19968: jis0208<<14 | 0x0F<<7 | 0x36,\n\t26132 - 19968: jis0208<<14 | 0x1F<<7 | 0x2D,\n\t26133 - 19968: jis0208<<14 | 0x59<<7 | 0x14,\n\t26134 - 19968: jis0212<<14 | 0x20<<7 | 0x5C,\n\t26140 - 19968: jis0208<<14 | 0x39<<7 | 0x45,\n\t26141 - 19968: jis0212<<14 | 0x20<<7 | 0x5D,\n\t26142 - 19968: jis0208<<14 | 0x59<<7 | 0x18,\n\t26143 - 19968: jis0208<<14 | 0x1F<<7 | 0x10,\n\t26144 - 19968: jis0208<<14 | 0x10<<7 | 0x26,\n\t26145 - 19968: jis0212<<14 | 0x21<<7 | 0x01,\n\t26146 - 19968: jis0212<<14 | 0x21<<7 | 0x02,\n\t26147 - 19968: jis0212<<14 | 0x21<<7 | 0x03,\n\t26148 - 19968: jis0208<<14 | 0x59<<7 | 0x19,\n\t26149 - 19968: jis0208<<14 | 0x1C<<7 | 0x34,\n\t26150 - 19968: jis0212<<14 | 0x21<<7 | 0x05,\n\t26151 - 19968: jis0208<<14 | 0x2A<<7 | 0x45,\n\t26152 - 19968: jis0208<<14 | 0x19<<7 | 0x51,\n\t26153 - 19968: jis0212<<14 | 0x21<<7 | 0x06,\n\t26154 - 19968: jis0212<<14 | 0x21<<7 | 0x07,\n\t26155 - 19968: jis0212<<14 | 0x21<<7 | 0x08,\n\t26156 - 19968: jis0212<<14 | 0x21<<7 | 0x09,\n\t26157 - 19968: jis0208<<14 | 0x1D<<7 | 0x1B,\n\t26158 - 19968: jis0208<<14 | 0x59<<7 | 0x17,\n\t26159 - 19968: jis0208<<14 | 0x1F<<7 | 0x06,\n\t26160 - 19968: jis0212<<14 | 0x21<<7 | 0x0B,\n\t26161 - 19968: jis0208<<14 | 0x58<<7 | 0x07,\n\t26163 - 19968: jis0212<<14 | 0x21<<7 | 0x0D,\n\t26164 - 19968: jis0208<<14 | 0x39<<7 | 0x44,\n\t26165 - 19968: jis0208<<14 | 0x39<<7 | 0x42,\n\t26166 - 19968: jis0208<<14 | 0x39<<7 | 0x43,\n\t26167 - 19968: jis0212<<14 | 0x21<<7 | 0x0F,\n\t26169 - 19968: jis0212<<14 | 0x21<<7 | 0x0E,\n\t26171 - 19968: jis0208<<14 | 0x59<<7 | 0x15,\n\t26172 - 19968: jis0208<<14 | 0x22<<7 | 0x4A,\n\t26175 - 19968: jis0208<<14 | 0x3A<<7 | 0x05,\n\t26176 - 19968: jis0212<<14 | 0x21<<7 | 0x10,\n\t26177 - 19968: jis0208<<14 | 0x39<<7 | 0x49,\n\t26178 - 19968: jis0208<<14 | 0x1A<<7 | 0x5D,\n\t26179 - 19968: jis0208<<14 | 0x18<<7 | 0x17,\n\t26180 - 19968: jis0208<<14 | 0x39<<7 | 0x47,\n\t26181 - 19968: jis0212<<14 | 0x21<<7 | 0x11,\n\t26182 - 19968: jis0212<<14 | 0x21<<7 | 0x12,\n\t26185 - 19968: jis0208<<14 | 0x39<<7 | 0x48,\n\t26186 - 19968: jis0212<<14 | 0x21<<7 | 0x13,\n\t26187 - 19968: jis0208<<14 | 0x1E<<7 | 0x17,\n\t26188 - 19968: jis0212<<14 | 0x21<<7 | 0x14,\n\t26190 - 19968: jis0212<<14 | 0x21<<7 | 0x16,\n\t26191 - 19968: jis0208<<14 | 0x39<<7 | 0x46,\n\t26193 - 19968: jis0212<<14 | 0x21<<7 | 0x15,\n\t26194 - 19968: jis0208<<14 | 0x1A<<7 | 0x0E,\n\t26199 - 19968: jis0208<<14 | 0x59<<7 | 0x1B,\n\t26200 - 19968: jis0212<<14 | 0x21<<7 | 0x18,\n\t26201 - 19968: jis0208<<14 | 0x59<<7 | 0x1C,\n\t26203 - 19968: jis0212<<14 | 0x21<<7 | 0x1A,\n\t26204 - 19968: jis0212<<14 | 0x21<<7 | 0x1B,\n\t26205 - 19968: jis0208<<14 | 0x39<<7 | 0x4B,\n\t26206 - 19968: jis0208<<14 | 0x39<<7 | 0x4A,\n\t26207 - 19968: jis0208<<14 | 0x39<<7 | 0x4F,\n\t26208 - 19968: jis0212<<14 | 0x21<<7 | 0x1C,\n\t26209 - 19968: jis0212<<14 | 0x21<<7 | 0x1D,\n\t26210 - 19968: jis0208<<14 | 0x39<<7 | 0x50,\n\t26212 - 19968: jis0208<<14 | 0x39<<7 | 0x4C,\n\t26213 - 19968: jis0208<<14 | 0x59<<7 | 0x1A,\n\t26214 - 19968: jis0208<<14 | 0x12<<7 | 0x01,\n\t26215 - 19968: jis0208<<14 | 0x39<<7 | 0x4D,\n\t26216 - 19968: jis0208<<14 | 0x39<<7 | 0x4E,\n\t26217 - 19968: jis0208<<14 | 0x27<<7 | 0x34,\n\t26218 - 19968: jis0212<<14 | 0x21<<7 | 0x1F,\n\t26219 - 19968: jis0212<<14 | 0x21<<7 | 0x20,\n\t26220 - 19968: jis0212<<14 | 0x21<<7 | 0x21,\n\t26222 - 19968: jis0208<<14 | 0x28<<7 | 0x40,\n\t26223 - 19968: jis0208<<14 | 0x16<<7 | 0x29,\n\t26224 - 19968: jis0208<<14 | 0x39<<7 | 0x51,\n\t26227 - 19968: jis0208<<14 | 0x59<<7 | 0x1E,\n\t26228 - 19968: jis0208<<14 | 0x1F<<7 | 0x11,\n\t26229 - 19968: jis0212<<14 | 0x21<<7 | 0x24,\n\t26230 - 19968: jis0208<<14 | 0x1D<<7 | 0x1C,\n\t26231 - 19968: jis0212<<14 | 0x21<<7 | 0x26,\n\t26232 - 19968: jis0212<<14 | 0x21<<7 | 0x27,\n\t26233 - 19968: jis0212<<14 | 0x21<<7 | 0x28,\n\t26234 - 19968: jis0208<<14 | 0x22<<7 | 0x31,\n\t26235 - 19968: jis0212<<14 | 0x21<<7 | 0x29,\n\t26236 - 19968: jis0212<<14 | 0x21<<7 | 0x2B,\n\t26238 - 19968: jis0212<<14 | 0x21<<7 | 0x22,\n\t26239 - 19968: jis0212<<14 | 0x21<<7 | 0x25,\n\t26240 - 19968: jis0212<<14 | 0x21<<7 | 0x2A,\n\t26241 - 19968: jis0208<<14 | 0x15<<7 | 0x26,\n\t26243 - 19968: jis0208<<14 | 0x39<<7 | 0x52,\n\t26244 - 19968: jis0208<<14 | 0x39<<7 | 0x56,\n\t26247 - 19968: jis0208<<14 | 0x11<<7 | 0x2A,\n\t26248 - 19968: jis0208<<14 | 0x39<<7 | 0x53,\n\t26249 - 19968: jis0208<<14 | 0x39<<7 | 0x55,\n\t26251 - 19968: jis0212<<14 | 0x21<<7 | 0x2C,\n\t26252 - 19968: jis0212<<14 | 0x21<<7 | 0x2D,\n\t26253 - 19968: jis0212<<14 | 0x21<<7 | 0x2E,\n\t26254 - 19968: jis0208<<14 | 0x39<<7 | 0x54,\n\t26256 - 19968: jis0212<<14 | 0x21<<7 | 0x2F,\n\t26257 - 19968: jis0208<<14 | 0x1C<<7 | 0x4A,\n\t26258 - 19968: jis0212<<14 | 0x21<<7 | 0x30,\n\t26262 - 19968: jis0208<<14 | 0x22<<7 | 0x27,\n\t26263 - 19968: jis0208<<14 | 0x0F<<7 | 0x24,\n\t26264 - 19968: jis0208<<14 | 0x39<<7 | 0x57,\n\t26265 - 19968: jis0208<<14 | 0x59<<7 | 0x1F,\n\t26266 - 19968: jis0212<<14 | 0x21<<7 | 0x32,\n\t26267 - 19968: jis0212<<14 | 0x21<<7 | 0x33,\n\t26268 - 19968: jis0212<<14 | 0x21<<7 | 0x34,\n\t26269 - 19968: jis0208<<14 | 0x39<<7 | 0x58,\n\t26271 - 19968: jis0212<<14 | 0x21<<7 | 0x35,\n\t26272 - 19968: jis0208<<14 | 0x59<<7 | 0x20,\n\t26274 - 19968: jis0208<<14 | 0x23<<7 | 0x09,\n\t26276 - 19968: jis0212<<14 | 0x21<<7 | 0x37,\n\t26278 - 19968: jis0208<<14 | 0x2D<<7 | 0x50,\n\t26283 - 19968: jis0208<<14 | 0x1A<<7 | 0x22,\n\t26285 - 19968: jis0212<<14 | 0x21<<7 | 0x38,\n\t26286 - 19968: jis0208<<14 | 0x29<<7 | 0x4A,\n\t26289 - 19968: jis0212<<14 | 0x21<<7 | 0x39,\n\t26290 - 19968: jis0208<<14 | 0x59<<7 | 0x21,\n\t26292 - 19968: jis0208<<14 | 0x2A<<7 | 0x1C,\n\t26293 - 19968: jis0212<<14 | 0x21<<7 | 0x3B,\n\t26296 - 19968: jis0208<<14 | 0x3A<<7 | 0x01,\n\t26297 - 19968: jis0208<<14 | 0x39<<7 | 0x5A,\n\t26299 - 19968: jis0212<<14 | 0x21<<7 | 0x3C,\n\t26300 - 19968: jis0208<<14 | 0x39<<7 | 0x5D,\n\t26302 - 19968: jis0208<<14 | 0x39<<7 | 0x5C,\n\t26303 - 19968: jis0208<<14 | 0x59<<7 | 0x22,\n\t26304 - 19968: jis0212<<14 | 0x21<<7 | 0x3E,\n\t26305 - 19968: jis0208<<14 | 0x39<<7 | 0x59,\n\t26306 - 19968: jis0212<<14 | 0x21<<7 | 0x3F,\n\t26307 - 19968: jis0212<<14 | 0x21<<7 | 0x40,\n\t26308 - 19968: jis0208<<14 | 0x3A<<7 | 0x00,\n\t26311 - 19968: jis0208<<14 | 0x25<<7 | 0x3D,\n\t26312 - 19968: jis0212<<14 | 0x21<<7 | 0x41,\n\t26313 - 19968: jis0208<<14 | 0x39<<7 | 0x5B,\n\t26316 - 19968: jis0212<<14 | 0x21<<7 | 0x42,\n\t26318 - 19968: jis0212<<14 | 0x21<<7 | 0x43,\n\t26319 - 19968: jis0212<<14 | 0x21<<7 | 0x44,\n\t26324 - 19968: jis0212<<14 | 0x21<<7 | 0x45,\n\t26326 - 19968: jis0208<<14 | 0x3A<<7 | 0x02,\n\t26329 - 19968: jis0208<<14 | 0x1C<<7 | 0x4B,\n\t26330 - 19968: jis0208<<14 | 0x3A<<7 | 0x03,\n\t26331 - 19968: jis0212<<14 | 0x21<<7 | 0x46,\n\t26332 - 19968: jis0208<<14 | 0x2C<<7 | 0x2A,\n\t26333 - 19968: jis0208<<14 | 0x26<<7 | 0x57,\n\t26335 - 19968: jis0212<<14 | 0x21<<7 | 0x47,\n\t26336 - 19968: jis0208<<14 | 0x3A<<7 | 0x04,\n\t26342 - 19968: jis0208<<14 | 0x3A<<7 | 0x06,\n\t26344 - 19968: jis0212<<14 | 0x21<<7 | 0x48,\n\t26345 - 19968: jis0208<<14 | 0x3A<<7 | 0x07,\n\t26347 - 19968: jis0212<<14 | 0x21<<7 | 0x49,\n\t26348 - 19968: jis0212<<14 | 0x21<<7 | 0x4A,\n\t26350 - 19968: jis0212<<14 | 0x21<<7 | 0x4B,\n\t26352 - 19968: jis0208<<14 | 0x3A<<7 | 0x08,\n\t26354 - 19968: jis0208<<14 | 0x15<<7 | 0x29,\n\t26355 - 19968: jis0208<<14 | 0x10<<7 | 0x27,\n\t26356 - 19968: jis0208<<14 | 0x18<<7 | 0x18,\n\t26357 - 19968: jis0208<<14 | 0x3A<<7 | 0x09,\n\t26359 - 19968: jis0208<<14 | 0x3A<<7 | 0x0A,\n\t26360 - 19968: jis0208<<14 | 0x1C<<7 | 0x50,\n\t26361 - 19968: jis0208<<14 | 0x20<<7 | 0x41,\n\t26362 - 19968: jis0208<<14 | 0x59<<7 | 0x23,\n\t26363 - 19968: jis0208<<14 | 0x58<<7 | 0x0A,\n\t26364 - 19968: jis0208<<14 | 0x31<<7 | 0x37,\n\t26365 - 19968: jis0208<<14 | 0x20<<7 | 0x1D,\n\t26366 - 19968: jis0208<<14 | 0x20<<7 | 0x1C,\n\t26367 - 19968: jis0208<<14 | 0x21<<7 | 0x37,\n\t26368 - 19968: jis0208<<14 | 0x19<<7 | 0x26,\n\t26371 - 19968: jis0208<<14 | 0x2F<<7 | 0x51,\n\t26373 - 19968: jis0212<<14 | 0x21<<7 | 0x4D,\n\t26375 - 19968: jis0212<<14 | 0x21<<7 | 0x4E,\n\t26376 - 19968: jis0208<<14 | 0x16<<7 | 0x4D,\n\t26377 - 19968: jis0208<<14 | 0x2C<<7 | 0x0C,\n\t26379 - 19968: jis0208<<14 | 0x29<<7 | 0x5D,\n\t26381 - 19968: jis0208<<14 | 0x28<<7 | 0x5D,\n\t26382 - 19968: jis0208<<14 | 0x59<<7 | 0x24,\n\t26383 - 19968: jis0208<<14 | 0x3A<<7 | 0x0B,\n\t26387 - 19968: jis0212<<14 | 0x21<<7 | 0x50,\n\t26388 - 19968: jis0208<<14 | 0x19<<7 | 0x52,\n\t26389 - 19968: jis0208<<14 | 0x23<<7 | 0x1E,\n\t26390 - 19968: jis0208<<14 | 0x3A<<7 | 0x0C,\n\t26391 - 19968: jis0208<<14 | 0x2E<<7 | 0x0E,\n\t26393 - 19968: jis0212<<14 | 0x21<<7 | 0x51,\n\t26395 - 19968: jis0208<<14 | 0x2A<<7 | 0x1D,\n\t26396 - 19968: jis0212<<14 | 0x21<<7 | 0x52,\n\t26397 - 19968: jis0208<<14 | 0x23<<7 | 0x0A,\n\t26398 - 19968: jis0208<<14 | 0x3A<<7 | 0x0D,\n\t26399 - 19968: jis0208<<14 | 0x13<<7 | 0x5B,\n\t26400 - 19968: jis0212<<14 | 0x21<<7 | 0x53,\n\t26402 - 19968: jis0212<<14 | 0x21<<7 | 0x54,\n\t26406 - 19968: jis0208<<14 | 0x3A<<7 | 0x0E,\n\t26407 - 19968: jis0208<<14 | 0x3A<<7 | 0x0F,\n\t26408 - 19968: jis0208<<14 | 0x2B<<7 | 0x39,\n\t26410 - 19968: jis0208<<14 | 0x2B<<7 | 0x03,\n\t26411 - 19968: jis0208<<14 | 0x2A<<7 | 0x55,\n\t26412 - 19968: jis0208<<14 | 0x2A<<7 | 0x3B,\n\t26413 - 19968: jis0208<<14 | 0x1A<<7 | 0x04,\n\t26414 - 19968: jis0208<<14 | 0x3A<<7 | 0x11,\n\t26417 - 19968: jis0208<<14 | 0x1B<<7 | 0x4A,\n\t26419 - 19968: jis0212<<14 | 0x21<<7 | 0x55,\n\t26420 - 19968: jis0208<<14 | 0x2A<<7 | 0x30,\n\t26422 - 19968: jis0208<<14 | 0x3A<<7 | 0x13,\n\t26423 - 19968: jis0208<<14 | 0x3A<<7 | 0x16,\n\t26424 - 19968: jis0208<<14 | 0x3A<<7 | 0x15,\n\t26426 - 19968: jis0208<<14 | 0x13<<7 | 0x58,\n\t26429 - 19968: jis0208<<14 | 0x14<<7 | 0x3F,\n\t26430 - 19968: jis0212<<14 | 0x21<<7 | 0x56,\n\t26431 - 19968: jis0208<<14 | 0x3A<<7 | 0x12,\n\t26433 - 19968: jis0208<<14 | 0x3A<<7 | 0x14,\n\t26437 - 19968: jis0212<<14 | 0x21<<7 | 0x57,\n\t26438 - 19968: jis0208<<14 | 0x3A<<7 | 0x17,\n\t26439 - 19968: jis0212<<14 | 0x21<<7 | 0x58,\n\t26440 - 19968: jis0212<<14 | 0x21<<7 | 0x59,\n\t26441 - 19968: jis0208<<14 | 0x1E<<7 | 0x58,\n\t26444 - 19968: jis0212<<14 | 0x21<<7 | 0x5A,\n\t26446 - 19968: jis0208<<14 | 0x2C<<7 | 0x5A,\n\t26447 - 19968: jis0208<<14 | 0x0F<<7 | 0x28,\n\t26448 - 19968: jis0208<<14 | 0x19<<7 | 0x3F,\n\t26449 - 19968: jis0208<<14 | 0x21<<7 | 0x1B,\n\t26451 - 19968: jis0208<<14 | 0x1B<<7 | 0x3C,\n\t26452 - 19968: jis0212<<14 | 0x21<<7 | 0x5B,\n\t26453 - 19968: jis0212<<14 | 0x21<<7 | 0x5C,\n\t26454 - 19968: jis0208<<14 | 0x1D<<7 | 0x52,\n\t26457 - 19968: jis0208<<14 | 0x3A<<7 | 0x1A,\n\t26460 - 19968: jis0208<<14 | 0x24<<7 | 0x2D,\n\t26461 - 19968: jis0212<<14 | 0x21<<7 | 0x5D,\n\t26462 - 19968: jis0208<<14 | 0x3A<<7 | 0x18,\n\t26463 - 19968: jis0208<<14 | 0x21<<7 | 0x0A,\n\t26464 - 19968: jis0208<<14 | 0x3A<<7 | 0x19,\n\t26465 - 19968: jis0208<<14 | 0x1D<<7 | 0x51,\n\t26466 - 19968: jis0208<<14 | 0x2B<<7 | 0x3C,\n\t26467 - 19968: jis0208<<14 | 0x3A<<7 | 0x1B,\n\t26468 - 19968: jis0208<<14 | 0x3A<<7 | 0x1C,\n\t26469 - 19968: jis0208<<14 | 0x2C<<7 | 0x47,\n\t26470 - 19968: jis0208<<14 | 0x59<<7 | 0x26,\n\t26474 - 19968: jis0208<<14 | 0x3A<<7 | 0x21,\n\t26476 - 19968: jis0212<<14 | 0x22<<7 | 0x01,\n\t26477 - 19968: jis0208<<14 | 0x18<<7 | 0x19,\n\t26478 - 19968: jis0212<<14 | 0x22<<7 | 0x02,\n\t26479 - 19968: jis0208<<14 | 0x26<<7 | 0x34,\n\t26480 - 19968: jis0208<<14 | 0x3A<<7 | 0x1E,\n\t26481 - 19968: jis0208<<14 | 0x24<<7 | 0x4B,\n\t26482 - 19968: jis0208<<14 | 0x39<<7 | 0x3D,\n\t26483 - 19968: jis0208<<14 | 0x39<<7 | 0x41,\n\t26484 - 19968: jis0212<<14 | 0x22<<7 | 0x03,\n\t26485 - 19968: jis0208<<14 | 0x14<<7 | 0x2E,\n\t26486 - 19968: jis0212<<14 | 0x22<<7 | 0x04,\n\t26487 - 19968: jis0208<<14 | 0x26<<7 | 0x26,\n\t26491 - 19968: jis0212<<14 | 0x22<<7 | 0x05,\n\t26492 - 19968: jis0208<<14 | 0x3A<<7 | 0x20,\n\t26494 - 19968: jis0208<<14 | 0x1D<<7 | 0x1D,\n\t26495 - 19968: jis0208<<14 | 0x27<<7 | 0x23,\n\t26497 - 19968: jis0212<<14 | 0x22<<7 | 0x06,\n\t26500 - 19968: jis0212<<14 | 0x22<<7 | 0x07,\n\t26501 - 19968: jis0208<<14 | 0x3A<<7 | 0x26,\n\t26503 - 19968: jis0208<<14 | 0x27<<7 | 0x59,\n\t26505 - 19968: jis0208<<14 | 0x3A<<7 | 0x1D,\n\t26507 - 19968: jis0208<<14 | 0x3A<<7 | 0x23,\n\t26508 - 19968: jis0208<<14 | 0x3A<<7 | 0x22,\n\t26510 - 19968: jis0212<<14 | 0x22<<7 | 0x08,\n\t26511 - 19968: jis0212<<14 | 0x22<<7 | 0x09,\n\t26512 - 19968: jis0208<<14 | 0x1F<<7 | 0x2E,\n\t26513 - 19968: jis0212<<14 | 0x22<<7 | 0x0A,\n\t26515 - 19968: jis0212<<14 | 0x22<<7 | 0x0B,\n\t26517 - 19968: jis0208<<14 | 0x2A<<7 | 0x4C,\n\t26518 - 19968: jis0212<<14 | 0x22<<7 | 0x0C,\n\t26519 - 19968: jis0208<<14 | 0x2D<<7 | 0x32,\n\t26520 - 19968: jis0212<<14 | 0x22<<7 | 0x0D,\n\t26521 - 19968: jis0212<<14 | 0x22<<7 | 0x0E,\n\t26522 - 19968: jis0208<<14 | 0x2A<<7 | 0x46,\n\t26523 - 19968: jis0212<<14 | 0x22<<7 | 0x0F,\n\t26524 - 19968: jis0208<<14 | 0x11<<7 | 0x2B,\n\t26525 - 19968: jis0208<<14 | 0x1A<<7 | 0x3D,\n\t26528 - 19968: jis0208<<14 | 0x2E<<7 | 0x27,\n\t26529 - 19968: jis0208<<14 | 0x3A<<7 | 0x25,\n\t26530 - 19968: jis0208<<14 | 0x1E<<7 | 0x54,\n\t26534 - 19968: jis0208<<14 | 0x3A<<7 | 0x24,\n\t26537 - 19968: jis0208<<14 | 0x3A<<7 | 0x1F,\n\t26543 - 19968: jis0208<<14 | 0x17<<7 | 0x2E,\n\t26544 - 19968: jis0212<<14 | 0x22<<7 | 0x10,\n\t26545 - 19968: jis0212<<14 | 0x22<<7 | 0x11,\n\t26546 - 19968: jis0212<<14 | 0x22<<7 | 0x12,\n\t26547 - 19968: jis0208<<14 | 0x3A<<7 | 0x2B,\n\t26548 - 19968: jis0208<<14 | 0x3A<<7 | 0x29,\n\t26549 - 19968: jis0212<<14 | 0x22<<7 | 0x13,\n\t26550 - 19968: jis0208<<14 | 0x11<<7 | 0x2C,\n\t26551 - 19968: jis0208<<14 | 0x3A<<7 | 0x27,\n\t26552 - 19968: jis0208<<14 | 0x3A<<7 | 0x2D,\n\t26553 - 19968: jis0208<<14 | 0x3A<<7 | 0x33,\n\t26555 - 19968: jis0208<<14 | 0x59<<7 | 0x27,\n\t26556 - 19968: jis0212<<14 | 0x22<<7 | 0x15,\n\t26557 - 19968: jis0212<<14 | 0x22<<7 | 0x16,\n\t26560 - 19968: jis0208<<14 | 0x59<<7 | 0x29,\n\t26561 - 19968: jis0208<<14 | 0x21<<7 | 0x27,\n\t26562 - 19968: jis0212<<14 | 0x22<<7 | 0x19,\n\t26563 - 19968: jis0212<<14 | 0x22<<7 | 0x1A,\n\t26564 - 19968: jis0208<<14 | 0x29<<7 | 0x20,\n\t26565 - 19968: jis0212<<14 | 0x22<<7 | 0x1B,\n\t26566 - 19968: jis0208<<14 | 0x3A<<7 | 0x35,\n\t26568 - 19968: jis0212<<14 | 0x22<<7 | 0x1C,\n\t26569 - 19968: jis0212<<14 | 0x22<<7 | 0x1D,\n\t26570 - 19968: jis0208<<14 | 0x28<<7 | 0x01,\n\t26574 - 19968: jis0208<<14 | 0x3A<<7 | 0x34,\n\t26575 - 19968: jis0208<<14 | 0x26<<7 | 0x4F,\n\t26576 - 19968: jis0208<<14 | 0x2A<<7 | 0x1E,\n\t26577 - 19968: jis0208<<14 | 0x13<<7 | 0x1A,\n\t26578 - 19968: jis0212<<14 | 0x22<<7 | 0x1E,\n\t26579 - 19968: jis0208<<14 | 0x1F<<7 | 0x56,\n\t26580 - 19968: jis0208<<14 | 0x1C<<7 | 0x1F,\n\t26583 - 19968: jis0212<<14 | 0x22<<7 | 0x1F,\n\t26584 - 19968: jis0208<<14 | 0x23<<7 | 0x32,\n\t26585 - 19968: jis0212<<14 | 0x22<<7 | 0x20,\n\t26586 - 19968: jis0208<<14 | 0x2C<<7 | 0x0D,\n\t26588 - 19968: jis0212<<14 | 0x22<<7 | 0x21,\n\t26589 - 19968: jis0208<<14 | 0x3A<<7 | 0x30,\n\t26590 - 19968: jis0208<<14 | 0x3A<<7 | 0x2F,\n\t26593 - 19968: jis0212<<14 | 0x22<<7 | 0x22,\n\t26594 - 19968: jis0208<<14 | 0x3A<<7 | 0x31,\n\t26596 - 19968: jis0208<<14 | 0x3A<<7 | 0x2E,\n\t26598 - 19968: jis0212<<14 | 0x22<<7 | 0x23,\n\t26599 - 19968: jis0208<<14 | 0x3A<<7 | 0x36,\n\t26601 - 19968: jis0208<<14 | 0x3A<<7 | 0x2C,\n\t26604 - 19968: jis0208<<14 | 0x3A<<7 | 0x2A,\n\t26606 - 19968: jis0208<<14 | 0x3A<<7 | 0x32,\n\t26607 - 19968: jis0208<<14 | 0x3A<<7 | 0x28,\n\t26608 - 19968: jis0212<<14 | 0x22<<7 | 0x24,\n\t26609 - 19968: jis0208<<14 | 0x22<<7 | 0x4B,\n\t26610 - 19968: jis0212<<14 | 0x22<<7 | 0x25,\n\t26611 - 19968: jis0208<<14 | 0x2B<<7 | 0x57,\n\t26612 - 19968: jis0208<<14 | 0x1B<<7 | 0x25,\n\t26613 - 19968: jis0208<<14 | 0x19<<7 | 0x53,\n\t26614 - 19968: jis0212<<14 | 0x22<<7 | 0x26,\n\t26615 - 19968: jis0212<<14 | 0x22<<7 | 0x27,\n\t26617 - 19968: jis0212<<14 | 0x22<<7 | 0x17,\n\t26619 - 19968: jis0208<<14 | 0x19<<7 | 0x19,\n\t26622 - 19968: jis0208<<14 | 0x2A<<7 | 0x4E,\n\t26623 - 19968: jis0208<<14 | 0x12<<7 | 0x20,\n\t26625 - 19968: jis0208<<14 | 0x59<<7 | 0x2A,\n\t26626 - 19968: jis0208<<14 | 0x23<<7 | 0x2D,\n\t26627 - 19968: jis0208<<14 | 0x25<<7 | 0x29,\n\t26628 - 19968: jis0208<<14 | 0x10<<7 | 0x28,\n\t26643 - 19968: jis0208<<14 | 0x1F<<7 | 0x51,\n\t26644 - 19968: jis0212<<14 | 0x22<<7 | 0x29,\n\t26646 - 19968: jis0208<<14 | 0x1F<<7 | 0x13,\n\t26647 - 19968: jis0208<<14 | 0x16<<7 | 0x09,\n\t26649 - 19968: jis0212<<14 | 0x22<<7 | 0x2A,\n\t26653 - 19968: jis0212<<14 | 0x22<<7 | 0x2B,\n\t26654 - 19968: jis0208<<14 | 0x3A<<7 | 0x38,\n\t26655 - 19968: jis0212<<14 | 0x22<<7 | 0x2C,\n\t26657 - 19968: jis0208<<14 | 0x18<<7 | 0x1A,\n\t26658 - 19968: jis0208<<14 | 0x12<<7 | 0x5B,\n\t26663 - 19968: jis0212<<14 | 0x22<<7 | 0x2E,\n\t26664 - 19968: jis0212<<14 | 0x22<<7 | 0x2D,\n\t26665 - 19968: jis0208<<14 | 0x3A<<7 | 0x3A,\n\t26666 - 19968: jis0208<<14 | 0x12<<7 | 0x53,\n\t26667 - 19968: jis0208<<14 | 0x3A<<7 | 0x40,\n\t26668 - 19968: jis0212<<14 | 0x22<<7 | 0x2F,\n\t26669 - 19968: jis0212<<14 | 0x22<<7 | 0x30,\n\t26671 - 19968: jis0212<<14 | 0x22<<7 | 0x31,\n\t26672 - 19968: jis0212<<14 | 0x22<<7 | 0x32,\n\t26673 - 19968: jis0212<<14 | 0x22<<7 | 0x33,\n\t26674 - 19968: jis0208<<14 | 0x3A<<7 | 0x3D,\n\t26675 - 19968: jis0212<<14 | 0x22<<7 | 0x34,\n\t26676 - 19968: jis0208<<14 | 0x1F<<7 | 0x52,\n\t26680 - 19968: jis0208<<14 | 0x12<<7 | 0x2A,\n\t26681 - 19968: jis0208<<14 | 0x19<<7 | 0x0B,\n\t26683 - 19968: jis0212<<14 | 0x22<<7 | 0x35,\n\t26684 - 19968: jis0208<<14 | 0x12<<7 | 0x29,\n\t26685 - 19968: jis0208<<14 | 0x19<<7 | 0x2E,\n\t26687 - 19968: jis0212<<14 | 0x22<<7 | 0x36,\n\t26688 - 19968: jis0208<<14 | 0x3A<<7 | 0x3B,\n\t26689 - 19968: jis0208<<14 | 0x16<<7 | 0x44,\n\t26690 - 19968: jis0208<<14 | 0x16<<7 | 0x2A,\n\t26691 - 19968: jis0208<<14 | 0x24<<7 | 0x4C,\n\t26692 - 19968: jis0208<<14 | 0x59<<7 | 0x2B,\n\t26693 - 19968: jis0212<<14 | 0x22<<7 | 0x38,\n\t26694 - 19968: jis0208<<14 | 0x3A<<7 | 0x39,\n\t26696 - 19968: jis0208<<14 | 0x0F<<7 | 0x25,\n\t26698 - 19968: jis0212<<14 | 0x22<<7 | 0x39,\n\t26700 - 19968: jis0212<<14 | 0x22<<7 | 0x3A,\n\t26701 - 19968: jis0208<<14 | 0x3A<<7 | 0x3C,\n\t26702 - 19968: jis0208<<14 | 0x3A<<7 | 0x3E,\n\t26704 - 19968: jis0208<<14 | 0x15<<7 | 0x2C,\n\t26705 - 19968: jis0208<<14 | 0x16<<7 | 0x0B,\n\t26706 - 19968: jis0208<<14 | 0x59<<7 | 0x28,\n\t26707 - 19968: jis0208<<14 | 0x13<<7 | 0x1B,\n\t26708 - 19968: jis0208<<14 | 0x14<<7 | 0x2A,\n\t26709 - 19968: jis0212<<14 | 0x22<<7 | 0x3B,\n\t26711 - 19968: jis0212<<14 | 0x22<<7 | 0x3C,\n\t26712 - 19968: jis0212<<14 | 0x22<<7 | 0x3D,\n\t26713 - 19968: jis0208<<14 | 0x3A<<7 | 0x41,\n\t26715 - 19968: jis0212<<14 | 0x22<<7 | 0x3E,\n\t26716 - 19968: jis0208<<14 | 0x19<<7 | 0x58,\n\t26717 - 19968: jis0208<<14 | 0x2A<<7 | 0x50,\n\t26719 - 19968: jis0208<<14 | 0x1A<<7 | 0x16,\n\t26723 - 19968: jis0208<<14 | 0x3A<<7 | 0x42,\n\t26727 - 19968: jis0208<<14 | 0x28<<7 | 0x0F,\n\t26731 - 19968: jis0212<<14 | 0x22<<7 | 0x3F,\n\t26734 - 19968: jis0212<<14 | 0x22<<7 | 0x40,\n\t26735 - 19968: jis0212<<14 | 0x22<<7 | 0x41,\n\t26736 - 19968: jis0212<<14 | 0x22<<7 | 0x42,\n\t26737 - 19968: jis0212<<14 | 0x22<<7 | 0x43,\n\t26738 - 19968: jis0212<<14 | 0x22<<7 | 0x44,\n\t26740 - 19968: jis0208<<14 | 0x3A<<7 | 0x4E,\n\t26741 - 19968: jis0212<<14 | 0x22<<7 | 0x45,\n\t26742 - 19968: jis0208<<14 | 0x11<<7 | 0x12,\n\t26743 - 19968: jis0208<<14 | 0x3A<<7 | 0x43,\n\t26745 - 19968: jis0212<<14 | 0x22<<7 | 0x46,\n\t26746 - 19968: jis0212<<14 | 0x22<<7 | 0x47,\n\t26747 - 19968: jis0212<<14 | 0x22<<7 | 0x48,\n\t26748 - 19968: jis0212<<14 | 0x22<<7 | 0x49,\n\t26750 - 19968: jis0208<<14 | 0x3A<<7 | 0x54,\n\t26751 - 19968: jis0208<<14 | 0x3A<<7 | 0x44,\n\t26753 - 19968: jis0208<<14 | 0x2D<<7 | 0x21,\n\t26754 - 19968: jis0212<<14 | 0x22<<7 | 0x4A,\n\t26755 - 19968: jis0208<<14 | 0x3A<<7 | 0x4B,\n\t26756 - 19968: jis0212<<14 | 0x22<<7 | 0x4B,\n\t26757 - 19968: jis0208<<14 | 0x26<<7 | 0x3E,\n\t26758 - 19968: jis0212<<14 | 0x22<<7 | 0x4C,\n\t26760 - 19968: jis0212<<14 | 0x22<<7 | 0x4D,\n\t26765 - 19968: jis0208<<14 | 0x3A<<7 | 0x53,\n\t26767 - 19968: jis0208<<14 | 0x3A<<7 | 0x46,\n\t26771 - 19968: jis0208<<14 | 0x0F<<7 | 0x13,\n\t26772 - 19968: jis0208<<14 | 0x3A<<7 | 0x48,\n\t26774 - 19968: jis0212<<14 | 0x22<<7 | 0x4E,\n\t26775 - 19968: jis0208<<14 | 0x18<<7 | 0x1B,\n\t26776 - 19968: jis0212<<14 | 0x22<<7 | 0x4F,\n\t26778 - 19968: jis0212<<14 | 0x22<<7 | 0x50,\n\t26779 - 19968: jis0208<<14 | 0x3A<<7 | 0x4A,\n\t26780 - 19968: jis0212<<14 | 0x22<<7 | 0x51,\n\t26781 - 19968: jis0208<<14 | 0x3A<<7 | 0x49,\n\t26783 - 19968: jis0208<<14 | 0x3A<<7 | 0x45,\n\t26784 - 19968: jis0208<<14 | 0x3A<<7 | 0x50,\n\t26785 - 19968: jis0212<<14 | 0x22<<7 | 0x52,\n\t26786 - 19968: jis0208<<14 | 0x1D<<7 | 0x1E,\n\t26787 - 19968: jis0212<<14 | 0x22<<7 | 0x53,\n\t26789 - 19968: jis0212<<14 | 0x22<<7 | 0x54,\n\t26790 - 19968: jis0208<<14 | 0x33<<7 | 0x4C,\n\t26791 - 19968: jis0208<<14 | 0x17<<7 | 0x47,\n\t26792 - 19968: jis0208<<14 | 0x2C<<7 | 0x5B,\n\t26793 - 19968: jis0212<<14 | 0x22<<7 | 0x55,\n\t26794 - 19968: jis0212<<14 | 0x22<<7 | 0x56,\n\t26797 - 19968: jis0208<<14 | 0x3A<<7 | 0x47,\n\t26798 - 19968: jis0212<<14 | 0x22<<7 | 0x57,\n\t26799 - 19968: jis0208<<14 | 0x23<<7 | 0x53,\n\t26800 - 19968: jis0208<<14 | 0x12<<7 | 0x02,\n\t26801 - 19968: jis0208<<14 | 0x19<<7 | 0x0C,\n\t26802 - 19968: jis0212<<14 | 0x22<<7 | 0x58,\n\t26803 - 19968: jis0208<<14 | 0x3A<<7 | 0x3F,\n\t26805 - 19968: jis0208<<14 | 0x3A<<7 | 0x4F,\n\t26806 - 19968: jis0208<<14 | 0x12<<7 | 0x40,\n\t26809 - 19968: jis0208<<14 | 0x3A<<7 | 0x4D,\n\t26810 - 19968: jis0208<<14 | 0x3A<<7 | 0x51,\n\t26811 - 19968: jis0212<<14 | 0x22<<7 | 0x59,\n\t26812 - 19968: jis0208<<14 | 0x24<<7 | 0x4D,\n\t26820 - 19968: jis0208<<14 | 0x13<<7 | 0x5D,\n\t26821 - 19968: jis0212<<14 | 0x22<<7 | 0x5A,\n\t26822 - 19968: jis0208<<14 | 0x3B<<7 | 0x11,\n\t26824 - 19968: jis0208<<14 | 0x58<<7 | 0x08,\n\t26825 - 19968: jis0208<<14 | 0x2B<<7 | 0x28,\n\t26826 - 19968: jis0208<<14 | 0x3A<<7 | 0x56,\n\t26827 - 19968: jis0208<<14 | 0x13<<7 | 0x5C,\n\t26828 - 19968: jis0212<<14 | 0x22<<7 | 0x5C,\n\t26829 - 19968: jis0208<<14 | 0x3A<<7 | 0x5D,\n\t26831 - 19968: jis0208<<14 | 0x59<<7 | 0x2C,\n\t26832 - 19968: jis0212<<14 | 0x23<<7 | 0x00,\n\t26833 - 19968: jis0212<<14 | 0x23<<7 | 0x01,\n\t26834 - 19968: jis0208<<14 | 0x2A<<7 | 0x1F,\n\t26835 - 19968: jis0212<<14 | 0x23<<7 | 0x02,\n\t26836 - 19968: jis0208<<14 | 0x3B<<7 | 0x00,\n\t26837 - 19968: jis0208<<14 | 0x3B<<7 | 0x02,\n\t26838 - 19968: jis0212<<14 | 0x23<<7 | 0x03,\n\t26839 - 19968: jis0208<<14 | 0x3B<<7 | 0x06,\n\t26840 - 19968: jis0208<<14 | 0x3A<<7 | 0x58,\n\t26841 - 19968: jis0212<<14 | 0x23<<7 | 0x04,\n\t26842 - 19968: jis0208<<14 | 0x22<<7 | 0x09,\n\t26844 - 19968: jis0212<<14 | 0x23<<7 | 0x05,\n\t26845 - 19968: jis0212<<14 | 0x23<<7 | 0x06,\n\t26847 - 19968: jis0208<<14 | 0x24<<7 | 0x4E,\n\t26848 - 19968: jis0208<<14 | 0x3B<<7 | 0x0A,\n\t26849 - 19968: jis0208<<14 | 0x3A<<7 | 0x5B,\n\t26851 - 19968: jis0208<<14 | 0x3B<<7 | 0x07,\n\t26853 - 19968: jis0212<<14 | 0x23<<7 | 0x07,\n\t26855 - 19968: jis0208<<14 | 0x3B<<7 | 0x01,\n\t26856 - 19968: jis0212<<14 | 0x23<<7 | 0x08,\n\t26858 - 19968: jis0212<<14 | 0x23<<7 | 0x09,\n\t26859 - 19968: jis0212<<14 | 0x23<<7 | 0x0A,\n\t26860 - 19968: jis0212<<14 | 0x23<<7 | 0x0B,\n\t26861 - 19968: jis0212<<14 | 0x23<<7 | 0x0C,\n\t26862 - 19968: jis0208<<14 | 0x1E<<7 | 0x18,\n\t26863 - 19968: jis0208<<14 | 0x3B<<7 | 0x0B,\n\t26864 - 19968: jis0212<<14 | 0x23<<7 | 0x0D,\n\t26865 - 19968: jis0212<<14 | 0x23<<7 | 0x0E,\n\t26866 - 19968: jis0208<<14 | 0x1F<<7 | 0x12,\n\t26869 - 19968: jis0212<<14 | 0x23<<7 | 0x0F,\n\t26870 - 19968: jis0212<<14 | 0x23<<7 | 0x10,\n\t26873 - 19968: jis0208<<14 | 0x3B<<7 | 0x09,\n\t26874 - 19968: jis0208<<14 | 0x13<<7 | 0x1C,\n\t26875 - 19968: jis0212<<14 | 0x23<<7 | 0x11,\n\t26876 - 19968: jis0212<<14 | 0x23<<7 | 0x12,\n\t26877 - 19968: jis0212<<14 | 0x23<<7 | 0x13,\n\t26880 - 19968: jis0208<<14 | 0x2E<<7 | 0x2F,\n\t26881 - 19968: jis0208<<14 | 0x3A<<7 | 0x55,\n\t26884 - 19968: jis0208<<14 | 0x3B<<7 | 0x05,\n\t26885 - 19968: jis0208<<14 | 0x0F<<7 | 0x37,\n\t26886 - 19968: jis0212<<14 | 0x23<<7 | 0x14,\n\t26888 - 19968: jis0208<<14 | 0x3A<<7 | 0x57,\n\t26889 - 19968: jis0212<<14 | 0x23<<7 | 0x15,\n\t26890 - 19968: jis0212<<14 | 0x23<<7 | 0x16,\n\t26891 - 19968: jis0208<<14 | 0x2B<<7 | 0x19,\n\t26892 - 19968: jis0208<<14 | 0x3A<<7 | 0x5C,\n\t26893 - 19968: jis0208<<14 | 0x1E<<7 | 0x01,\n\t26894 - 19968: jis0208<<14 | 0x23<<7 | 0x26,\n\t26895 - 19968: jis0208<<14 | 0x3A<<7 | 0x52,\n\t26896 - 19968: jis0212<<14 | 0x23<<7 | 0x17,\n\t26897 - 19968: jis0212<<14 | 0x23<<7 | 0x18,\n\t26898 - 19968: jis0208<<14 | 0x3B<<7 | 0x04,\n\t26899 - 19968: jis0212<<14 | 0x23<<7 | 0x19,\n\t26902 - 19968: jis0212<<14 | 0x23<<7 | 0x1A,\n\t26903 - 19968: jis0212<<14 | 0x23<<7 | 0x1B,\n\t26905 - 19968: jis0208<<14 | 0x1E<<7 | 0x59,\n\t26906 - 19968: jis0208<<14 | 0x3B<<7 | 0x0E,\n\t26907 - 19968: jis0208<<14 | 0x12<<7 | 0x50,\n\t26908 - 19968: jis0208<<14 | 0x17<<7 | 0x00,\n\t26913 - 19968: jis0208<<14 | 0x3B<<7 | 0x10,\n\t26914 - 19968: jis0208<<14 | 0x3A<<7 | 0x59,\n\t26915 - 19968: jis0208<<14 | 0x3B<<7 | 0x0F,\n\t26917 - 19968: jis0208<<14 | 0x3B<<7 | 0x08,\n\t26918 - 19968: jis0208<<14 | 0x3A<<7 | 0x5A,\n\t26920 - 19968: jis0208<<14 | 0x3B<<7 | 0x0C,\n\t26922 - 19968: jis0208<<14 | 0x3B<<7 | 0x0D,\n\t26928 - 19968: jis0208<<14 | 0x3B<<7 | 0x1E,\n\t26929 - 19968: jis0212<<14 | 0x23<<7 | 0x1C,\n\t26931 - 19968: jis0212<<14 | 0x23<<7 | 0x1D,\n\t26932 - 19968: jis0208<<14 | 0x25<<7 | 0x2D,\n\t26933 - 19968: jis0212<<14 | 0x23<<7 | 0x1E,\n\t26934 - 19968: jis0208<<14 | 0x3B<<7 | 0x03,\n\t26936 - 19968: jis0212<<14 | 0x23<<7 | 0x1F,\n\t26937 - 19968: jis0208<<14 | 0x3B<<7 | 0x1A,\n\t26939 - 19968: jis0212<<14 | 0x23<<7 | 0x20,\n\t26941 - 19968: jis0208<<14 | 0x3B<<7 | 0x1C,\n\t26943 - 19968: jis0208<<14 | 0x23<<7 | 0x37,\n\t26946 - 19968: jis0212<<14 | 0x23<<7 | 0x21,\n\t26949 - 19968: jis0212<<14 | 0x23<<7 | 0x22,\n\t26953 - 19968: jis0212<<14 | 0x23<<7 | 0x23,\n\t26954 - 19968: jis0208<<14 | 0x2C<<7 | 0x2B,\n\t26958 - 19968: jis0212<<14 | 0x23<<7 | 0x24,\n\t26963 - 19968: jis0208<<14 | 0x28<<7 | 0x55,\n\t26964 - 19968: jis0208<<14 | 0x3B<<7 | 0x17,\n\t26965 - 19968: jis0208<<14 | 0x21<<7 | 0x29,\n\t26967 - 19968: jis0212<<14 | 0x23<<7 | 0x25,\n\t26969 - 19968: jis0208<<14 | 0x3B<<7 | 0x1D,\n\t26970 - 19968: jis0208<<14 | 0x20<<7 | 0x1E,\n\t26971 - 19968: jis0212<<14 | 0x23<<7 | 0x26,\n\t26972 - 19968: jis0208<<14 | 0x3B<<7 | 0x14,\n\t26973 - 19968: jis0208<<14 | 0x3B<<7 | 0x21,\n\t26974 - 19968: jis0208<<14 | 0x3B<<7 | 0x20,\n\t26976 - 19968: jis0208<<14 | 0x25<<7 | 0x4E,\n\t26977 - 19968: jis0208<<14 | 0x3B<<7 | 0x1F,\n\t26978 - 19968: jis0208<<14 | 0x25<<7 | 0x49,\n\t26979 - 19968: jis0212<<14 | 0x23<<7 | 0x27,\n\t26980 - 19968: jis0212<<14 | 0x23<<7 | 0x28,\n\t26981 - 19968: jis0212<<14 | 0x23<<7 | 0x29,\n\t26982 - 19968: jis0212<<14 | 0x23<<7 | 0x2A,\n\t26984 - 19968: jis0208<<14 | 0x59<<7 | 0x2E,\n\t26985 - 19968: jis0212<<14 | 0x23<<7 | 0x2C,\n\t26986 - 19968: jis0208<<14 | 0x3B<<7 | 0x23,\n\t26987 - 19968: jis0208<<14 | 0x3B<<7 | 0x16,\n\t26988 - 19968: jis0212<<14 | 0x23<<7 | 0x2D,\n\t26989 - 19968: jis0208<<14 | 0x15<<7 | 0x27,\n\t26990 - 19968: jis0208<<14 | 0x3B<<7 | 0x19,\n\t26991 - 19968: jis0208<<14 | 0x1C<<7 | 0x3C,\n\t26992 - 19968: jis0212<<14 | 0x23<<7 | 0x2E,\n\t26993 - 19968: jis0212<<14 | 0x23<<7 | 0x2F,\n\t26994 - 19968: jis0212<<14 | 0x23<<7 | 0x30,\n\t26995 - 19968: jis0208<<14 | 0x26<<7 | 0x3F,\n\t26996 - 19968: jis0208<<14 | 0x3B<<7 | 0x1B,\n\t26997 - 19968: jis0208<<14 | 0x15<<7 | 0x2A,\n\t26999 - 19968: jis0208<<14 | 0x3B<<7 | 0x13,\n\t27000 - 19968: jis0208<<14 | 0x3B<<7 | 0x15,\n\t27001 - 19968: jis0208<<14 | 0x3B<<7 | 0x12,\n\t27002 - 19968: jis0212<<14 | 0x23<<7 | 0x31,\n\t27003 - 19968: jis0212<<14 | 0x23<<7 | 0x32,\n\t27004 - 19968: jis0208<<14 | 0x2E<<7 | 0x0F,\n\t27005 - 19968: jis0208<<14 | 0x12<<7 | 0x39,\n\t27006 - 19968: jis0208<<14 | 0x3B<<7 | 0x18,\n\t27007 - 19968: jis0212<<14 | 0x23<<7 | 0x33,\n\t27008 - 19968: jis0212<<14 | 0x23<<7 | 0x34,\n\t27009 - 19968: jis0208<<14 | 0x3B<<7 | 0x22,\n\t27010 - 19968: jis0208<<14 | 0x12<<7 | 0x14,\n\t27018 - 19968: jis0208<<14 | 0x19<<7 | 0x46,\n\t27021 - 19968: jis0212<<14 | 0x23<<7 | 0x35,\n\t27022 - 19968: jis0208<<14 | 0x10<<7 | 0x3C,\n\t27025 - 19968: jis0208<<14 | 0x3B<<7 | 0x33,\n\t27026 - 19968: jis0212<<14 | 0x23<<7 | 0x36,\n\t27028 - 19968: jis0208<<14 | 0x2E<<7 | 0x10,\n\t27029 - 19968: jis0208<<14 | 0x3B<<7 | 0x36,\n\t27030 - 19968: jis0212<<14 | 0x23<<7 | 0x37,\n\t27032 - 19968: jis0208<<14 | 0x59<<7 | 0x30,\n\t27035 - 19968: jis0208<<14 | 0x1E<<7 | 0x19,\n\t27036 - 19968: jis0208<<14 | 0x3B<<7 | 0x35,\n\t27040 - 19968: jis0208<<14 | 0x3B<<7 | 0x34,\n\t27041 - 19968: jis0212<<14 | 0x23<<7 | 0x39,\n\t27045 - 19968: jis0212<<14 | 0x23<<7 | 0x3A,\n\t27046 - 19968: jis0212<<14 | 0x23<<7 | 0x3B,\n\t27047 - 19968: jis0208<<14 | 0x3B<<7 | 0x31,\n\t27048 - 19968: jis0212<<14 | 0x23<<7 | 0x3C,\n\t27051 - 19968: jis0212<<14 | 0x23<<7 | 0x3D,\n\t27053 - 19968: jis0212<<14 | 0x23<<7 | 0x3E,\n\t27054 - 19968: jis0208<<14 | 0x3B<<7 | 0x25,\n\t27055 - 19968: jis0212<<14 | 0x23<<7 | 0x3F,\n\t27057 - 19968: jis0208<<14 | 0x3B<<7 | 0x42,\n\t27058 - 19968: jis0208<<14 | 0x3B<<7 | 0x24,\n\t27060 - 19968: jis0208<<14 | 0x3B<<7 | 0x37,\n\t27063 - 19968: jis0212<<14 | 0x23<<7 | 0x40,\n\t27064 - 19968: jis0212<<14 | 0x23<<7 | 0x41,\n\t27066 - 19968: jis0212<<14 | 0x23<<7 | 0x42,\n\t27067 - 19968: jis0208<<14 | 0x3B<<7 | 0x2F,\n\t27068 - 19968: jis0212<<14 | 0x23<<7 | 0x43,\n\t27070 - 19968: jis0208<<14 | 0x3B<<7 | 0x2A,\n\t27071 - 19968: jis0208<<14 | 0x3B<<7 | 0x27,\n\t27073 - 19968: jis0208<<14 | 0x3B<<7 | 0x28,\n\t27075 - 19968: jis0208<<14 | 0x3B<<7 | 0x30,\n\t27077 - 19968: jis0212<<14 | 0x23<<7 | 0x44,\n\t27079 - 19968: jis0208<<14 | 0x53<<7 | 0x01,\n\t27080 - 19968: jis0212<<14 | 0x23<<7 | 0x45,\n\t27082 - 19968: jis0208<<14 | 0x3B<<7 | 0x2D,\n\t27083 - 19968: jis0208<<14 | 0x18<<7 | 0x1C,\n\t27084 - 19968: jis0208<<14 | 0x23<<7 | 0x27,\n\t27085 - 19968: jis0208<<14 | 0x20<<7 | 0x43,\n\t27086 - 19968: jis0208<<14 | 0x3B<<7 | 0x2B,\n\t27088 - 19968: jis0208<<14 | 0x3B<<7 | 0x26,\n\t27089 - 19968: jis0212<<14 | 0x23<<7 | 0x46,\n\t27091 - 19968: jis0208<<14 | 0x3B<<7 | 0x29,\n\t27094 - 19968: jis0212<<14 | 0x23<<7 | 0x47,\n\t27095 - 19968: jis0212<<14 | 0x23<<7 | 0x48,\n\t27096 - 19968: jis0208<<14 | 0x2C<<7 | 0x2C,\n\t27097 - 19968: jis0208<<14 | 0x2A<<7 | 0x49,\n\t27101 - 19968: jis0208<<14 | 0x3B<<7 | 0x2E,\n\t27102 - 19968: jis0208<<14 | 0x3B<<7 | 0x38,\n\t27106 - 19968: jis0208<<14 | 0x59<<7 | 0x31,\n\t27109 - 19968: jis0212<<14 | 0x23<<7 | 0x4A,\n\t27111 - 19968: jis0208<<14 | 0x3B<<7 | 0x40,\n\t27112 - 19968: jis0208<<14 | 0x3B<<7 | 0x39,\n\t27115 - 19968: jis0208<<14 | 0x3B<<7 | 0x46,\n\t27117 - 19968: jis0208<<14 | 0x3B<<7 | 0x44,\n\t27118 - 19968: jis0212<<14 | 0x23<<7 | 0x4B,\n\t27119 - 19968: jis0212<<14 | 0x23<<7 | 0x4C,\n\t27121 - 19968: jis0212<<14 | 0x23<<7 | 0x4D,\n\t27122 - 19968: jis0208<<14 | 0x3B<<7 | 0x3F,\n\t27123 - 19968: jis0212<<14 | 0x23<<7 | 0x4E,\n\t27125 - 19968: jis0212<<14 | 0x23<<7 | 0x4F,\n\t27129 - 19968: jis0208<<14 | 0x3B<<7 | 0x3E,\n\t27131 - 19968: jis0208<<14 | 0x23<<7 | 0x2F,\n\t27133 - 19968: jis0208<<14 | 0x20<<7 | 0x44,\n\t27134 - 19968: jis0212<<14 | 0x23<<7 | 0x50,\n\t27135 - 19968: jis0208<<14 | 0x3B<<7 | 0x3C,\n\t27136 - 19968: jis0212<<14 | 0x23<<7 | 0x51,\n\t27137 - 19968: jis0212<<14 | 0x23<<7 | 0x52,\n\t27138 - 19968: jis0208<<14 | 0x3B<<7 | 0x3A,\n\t27139 - 19968: jis0212<<14 | 0x23<<7 | 0x53,\n\t27141 - 19968: jis0208<<14 | 0x3B<<7 | 0x41,\n\t27146 - 19968: jis0208<<14 | 0x3B<<7 | 0x47,\n\t27147 - 19968: jis0208<<14 | 0x27<<7 | 0x54,\n\t27148 - 19968: jis0208<<14 | 0x3B<<7 | 0x4D,\n\t27151 - 19968: jis0212<<14 | 0x23<<7 | 0x54,\n\t27153 - 19968: jis0212<<14 | 0x23<<7 | 0x55,\n\t27154 - 19968: jis0208<<14 | 0x3B<<7 | 0x48,\n\t27155 - 19968: jis0208<<14 | 0x3B<<7 | 0x4B,\n\t27156 - 19968: jis0208<<14 | 0x3B<<7 | 0x45,\n\t27157 - 19968: jis0212<<14 | 0x23<<7 | 0x56,\n\t27159 - 19968: jis0208<<14 | 0x22<<7 | 0x53,\n\t27161 - 19968: jis0208<<14 | 0x28<<7 | 0x17,\n\t27162 - 19968: jis0212<<14 | 0x23<<7 | 0x57,\n\t27163 - 19968: jis0208<<14 | 0x3B<<7 | 0x3B,\n\t27165 - 19968: jis0212<<14 | 0x23<<7 | 0x58,\n\t27166 - 19968: jis0208<<14 | 0x3B<<7 | 0x43,\n\t27167 - 19968: jis0208<<14 | 0x1D<<7 | 0x1F,\n\t27168 - 19968: jis0212<<14 | 0x23<<7 | 0x59,\n\t27169 - 19968: jis0208<<14 | 0x2B<<7 | 0x2E,\n\t27170 - 19968: jis0208<<14 | 0x3B<<7 | 0x57,\n\t27171 - 19968: jis0208<<14 | 0x3B<<7 | 0x4A,\n\t27172 - 19968: jis0212<<14 | 0x23<<7 | 0x5A,\n\t27176 - 19968: jis0212<<14 | 0x23<<7 | 0x5B,\n\t27177 - 19968: jis0208<<14 | 0x17<<7 | 0x01,\n\t27178 - 19968: jis0208<<14 | 0x11<<7 | 0x02,\n\t27179 - 19968: jis0208<<14 | 0x12<<7 | 0x3E,\n\t27182 - 19968: jis0208<<14 | 0x3B<<7 | 0x32,\n\t27184 - 19968: jis0208<<14 | 0x59<<7 | 0x32,\n\t27186 - 19968: jis0212<<14 | 0x23<<7 | 0x5D,\n\t27188 - 19968: jis0212<<14 | 0x24<<7 | 0x00,\n\t27189 - 19968: jis0208<<14 | 0x1D<<7 | 0x20,\n\t27190 - 19968: jis0208<<14 | 0x3B<<7 | 0x4F,\n\t27191 - 19968: jis0212<<14 | 0x24<<7 | 0x01,\n\t27192 - 19968: jis0208<<14 | 0x3B<<7 | 0x56,\n\t27193 - 19968: jis0208<<14 | 0x1B<<7 | 0x58,\n\t27194 - 19968: jis0208<<14 | 0x12<<7 | 0x51,\n\t27195 - 19968: jis0212<<14 | 0x24<<7 | 0x02,\n\t27197 - 19968: jis0208<<14 | 0x22<<7 | 0x0D,\n\t27198 - 19968: jis0212<<14 | 0x24<<7 | 0x03,\n\t27199 - 19968: jis0212<<14 | 0x24<<7 | 0x04,\n\t27204 - 19968: jis0208<<14 | 0x3B<<7 | 0x4C,\n\t27205 - 19968: jis0212<<14 | 0x24<<7 | 0x05,\n\t27206 - 19968: jis0208<<14 | 0x59<<7 | 0x34,\n\t27207 - 19968: jis0208<<14 | 0x3B<<7 | 0x51,\n\t27208 - 19968: jis0208<<14 | 0x3B<<7 | 0x55,\n\t27209 - 19968: jis0212<<14 | 0x24<<7 | 0x07,\n\t27210 - 19968: jis0212<<14 | 0x24<<7 | 0x08,\n\t27211 - 19968: jis0208<<14 | 0x15<<7 | 0x15,\n\t27214 - 19968: jis0212<<14 | 0x24<<7 | 0x09,\n\t27216 - 19968: jis0212<<14 | 0x24<<7 | 0x0A,\n\t27217 - 19968: jis0212<<14 | 0x24<<7 | 0x0B,\n\t27218 - 19968: jis0212<<14 | 0x24<<7 | 0x0C,\n\t27221 - 19968: jis0212<<14 | 0x24<<7 | 0x0D,\n\t27222 - 19968: jis0212<<14 | 0x24<<7 | 0x0E,\n\t27224 - 19968: jis0208<<14 | 0x14<<7 | 0x2B,\n\t27225 - 19968: jis0208<<14 | 0x3B<<7 | 0x53,\n\t27227 - 19968: jis0212<<14 | 0x24<<7 | 0x0F,\n\t27231 - 19968: jis0208<<14 | 0x14<<7 | 0x00,\n\t27233 - 19968: jis0208<<14 | 0x25<<7 | 0x2A,\n\t27234 - 19968: jis0208<<14 | 0x3B<<7 | 0x52,\n\t27236 - 19968: jis0212<<14 | 0x24<<7 | 0x10,\n\t27238 - 19968: jis0208<<14 | 0x3B<<7 | 0x54,\n\t27239 - 19968: jis0212<<14 | 0x24<<7 | 0x11,\n\t27242 - 19968: jis0212<<14 | 0x24<<7 | 0x12,\n\t27243 - 19968: jis0208<<14 | 0x59<<7 | 0x33,\n\t27249 - 19968: jis0212<<14 | 0x24<<7 | 0x13,\n\t27250 - 19968: jis0208<<14 | 0x3B<<7 | 0x4E,\n\t27251 - 19968: jis0208<<14 | 0x59<<7 | 0x35,\n\t27256 - 19968: jis0208<<14 | 0x3B<<7 | 0x50,\n\t27262 - 19968: jis0208<<14 | 0x59<<7 | 0x36,\n\t27263 - 19968: jis0208<<14 | 0x12<<7 | 0x3F,\n\t27264 - 19968: jis0208<<14 | 0x22<<7 | 0x28,\n\t27265 - 19968: jis0212<<14 | 0x24<<7 | 0x16,\n\t27267 - 19968: jis0212<<14 | 0x24<<7 | 0x17,\n\t27268 - 19968: jis0208<<14 | 0x3B<<7 | 0x5B,\n\t27270 - 19968: jis0212<<14 | 0x24<<7 | 0x18,\n\t27271 - 19968: jis0212<<14 | 0x24<<7 | 0x19,\n\t27273 - 19968: jis0212<<14 | 0x24<<7 | 0x1A,\n\t27275 - 19968: jis0212<<14 | 0x24<<7 | 0x1B,\n\t27277 - 19968: jis0208<<14 | 0x3B<<7 | 0x59,\n\t27278 - 19968: jis0208<<14 | 0x17<<7 | 0x48,\n\t27280 - 19968: jis0208<<14 | 0x3B<<7 | 0x58,\n\t27281 - 19968: jis0212<<14 | 0x24<<7 | 0x1C,\n\t27287 - 19968: jis0208<<14 | 0x3C<<7 | 0x00,\n\t27291 - 19968: jis0212<<14 | 0x24<<7 | 0x1D,\n\t27292 - 19968: jis0208<<14 | 0x3A<<7 | 0x37,\n\t27293 - 19968: jis0212<<14 | 0x24<<7 | 0x1E,\n\t27294 - 19968: jis0212<<14 | 0x24<<7 | 0x1F,\n\t27295 - 19968: jis0212<<14 | 0x24<<7 | 0x20,\n\t27296 - 19968: jis0208<<14 | 0x3B<<7 | 0x5A,\n\t27298 - 19968: jis0208<<14 | 0x3B<<7 | 0x5C,\n\t27299 - 19968: jis0208<<14 | 0x3B<<7 | 0x5D,\n\t27301 - 19968: jis0212<<14 | 0x24<<7 | 0x21,\n\t27306 - 19968: jis0208<<14 | 0x3C<<7 | 0x0B,\n\t27307 - 19968: jis0212<<14 | 0x24<<7 | 0x22,\n\t27308 - 19968: jis0208<<14 | 0x3C<<7 | 0x07,\n\t27310 - 19968: jis0208<<14 | 0x3A<<7 | 0x4C,\n\t27311 - 19968: jis0212<<14 | 0x24<<7 | 0x23,\n\t27312 - 19968: jis0212<<14 | 0x24<<7 | 0x24,\n\t27313 - 19968: jis0212<<14 | 0x24<<7 | 0x25,\n\t27315 - 19968: jis0208<<14 | 0x3C<<7 | 0x06,\n\t27316 - 19968: jis0212<<14 | 0x24<<7 | 0x26,\n\t27320 - 19968: jis0208<<14 | 0x3C<<7 | 0x05,\n\t27323 - 19968: jis0208<<14 | 0x3C<<7 | 0x02,\n\t27325 - 19968: jis0212<<14 | 0x24<<7 | 0x27,\n\t27326 - 19968: jis0212<<14 | 0x24<<7 | 0x28,\n\t27327 - 19968: jis0212<<14 | 0x24<<7 | 0x29,\n\t27329 - 19968: jis0208<<14 | 0x3B<<7 | 0x49,\n\t27330 - 19968: jis0208<<14 | 0x3C<<7 | 0x04,\n\t27331 - 19968: jis0208<<14 | 0x3C<<7 | 0x03,\n\t27334 - 19968: jis0212<<14 | 0x24<<7 | 0x2A,\n\t27336 - 19968: jis0212<<14 | 0x24<<7 | 0x2C,\n\t27337 - 19968: jis0212<<14 | 0x24<<7 | 0x2B,\n\t27340 - 19968: jis0212<<14 | 0x24<<7 | 0x2D,\n\t27344 - 19968: jis0212<<14 | 0x24<<7 | 0x2E,\n\t27345 - 19968: jis0208<<14 | 0x3C<<7 | 0x09,\n\t27347 - 19968: jis0208<<14 | 0x2E<<7 | 0x05,\n\t27348 - 19968: jis0212<<14 | 0x24<<7 | 0x2F,\n\t27349 - 19968: jis0212<<14 | 0x24<<7 | 0x30,\n\t27350 - 19968: jis0212<<14 | 0x24<<7 | 0x31,\n\t27354 - 19968: jis0208<<14 | 0x3C<<7 | 0x0C,\n\t27355 - 19968: jis0208<<14 | 0x15<<7 | 0x5A,\n\t27356 - 19968: jis0212<<14 | 0x24<<7 | 0x32,\n\t27357 - 19968: jis0212<<14 | 0x24<<7 | 0x33,\n\t27358 - 19968: jis0208<<14 | 0x3C<<7 | 0x08,\n\t27359 - 19968: jis0208<<14 | 0x3C<<7 | 0x0A,\n\t27362 - 19968: jis0208<<14 | 0x59<<7 | 0x37,\n\t27364 - 19968: jis0208<<14 | 0x59<<7 | 0x38,\n\t27367 - 19968: jis0212<<14 | 0x24<<7 | 0x35,\n\t27368 - 19968: jis0208<<14 | 0x27<<7 | 0x06,\n\t27370 - 19968: jis0208<<14 | 0x3C<<7 | 0x0D,\n\t27372 - 19968: jis0212<<14 | 0x24<<7 | 0x36,\n\t27376 - 19968: jis0212<<14 | 0x24<<7 | 0x37,\n\t27377 - 19968: jis0212<<14 | 0x24<<7 | 0x38,\n\t27378 - 19968: jis0212<<14 | 0x24<<7 | 0x39,\n\t27386 - 19968: jis0208<<14 | 0x3C<<7 | 0x11,\n\t27387 - 19968: jis0208<<14 | 0x3C<<7 | 0x0E,\n\t27388 - 19968: jis0212<<14 | 0x24<<7 | 0x3A,\n\t27389 - 19968: jis0212<<14 | 0x24<<7 | 0x3B,\n\t27394 - 19968: jis0212<<14 | 0x24<<7 | 0x3C,\n\t27395 - 19968: jis0212<<14 | 0x24<<7 | 0x3D,\n\t27396 - 19968: jis0208<<14 | 0x2C<<7 | 0x52,\n\t27397 - 19968: jis0208<<14 | 0x3C<<7 | 0x0F,\n\t27398 - 19968: jis0212<<14 | 0x24<<7 | 0x3E,\n\t27399 - 19968: jis0212<<14 | 0x24<<7 | 0x3F,\n\t27401 - 19968: jis0212<<14 | 0x24<<7 | 0x40,\n\t27402 - 19968: jis0208<<14 | 0x3B<<7 | 0x3D,\n\t27407 - 19968: jis0212<<14 | 0x24<<7 | 0x41,\n\t27408 - 19968: jis0212<<14 | 0x24<<7 | 0x42,\n\t27409 - 19968: jis0212<<14 | 0x24<<7 | 0x43,\n\t27410 - 19968: jis0208<<14 | 0x3C<<7 | 0x12,\n\t27414 - 19968: jis0208<<14 | 0x3C<<7 | 0x13,\n\t27415 - 19968: jis0212<<14 | 0x24<<7 | 0x44,\n\t27419 - 19968: jis0212<<14 | 0x24<<7 | 0x45,\n\t27421 - 19968: jis0208<<14 | 0x10<<7 | 0x14,\n\t27422 - 19968: jis0212<<14 | 0x24<<7 | 0x46,\n\t27423 - 19968: jis0208<<14 | 0x3C<<7 | 0x15,\n\t27424 - 19968: jis0208<<14 | 0x16<<7 | 0x46,\n\t27425 - 19968: jis0208<<14 | 0x1B<<7 | 0x00,\n\t27427 - 19968: jis0208<<14 | 0x15<<7 | 0x34,\n\t27428 - 19968: jis0212<<14 | 0x24<<7 | 0x47,\n\t27431 - 19968: jis0208<<14 | 0x11<<7 | 0x03,\n\t27432 - 19968: jis0212<<14 | 0x24<<7 | 0x48,\n\t27435 - 19968: jis0212<<14 | 0x24<<7 | 0x49,\n\t27436 - 19968: jis0212<<14 | 0x24<<7 | 0x4A,\n\t27439 - 19968: jis0212<<14 | 0x24<<7 | 0x4B,\n\t27442 - 19968: jis0208<<14 | 0x2C<<7 | 0x3E,\n\t27445 - 19968: jis0212<<14 | 0x24<<7 | 0x4C,\n\t27446 - 19968: jis0212<<14 | 0x24<<7 | 0x4D,\n\t27447 - 19968: jis0208<<14 | 0x3C<<7 | 0x17,\n\t27448 - 19968: jis0208<<14 | 0x3C<<7 | 0x16,\n\t27449 - 19968: jis0208<<14 | 0x3C<<7 | 0x19,\n\t27450 - 19968: jis0208<<14 | 0x14<<7 | 0x1C,\n\t27451 - 19968: jis0212<<14 | 0x24<<7 | 0x4E,\n\t27453 - 19968: jis0208<<14 | 0x15<<7 | 0x35,\n\t27454 - 19968: jis0208<<14 | 0x13<<7 | 0x1D,\n\t27455 - 19968: jis0212<<14 | 0x24<<7 | 0x4F,\n\t27459 - 19968: jis0208<<14 | 0x3C<<7 | 0x1C,\n\t27462 - 19968: jis0212<<14 | 0x24<<7 | 0x50,\n\t27463 - 19968: jis0208<<14 | 0x3C<<7 | 0x1B,\n\t27465 - 19968: jis0208<<14 | 0x3C<<7 | 0x1D,\n\t27466 - 19968: jis0212<<14 | 0x24<<7 | 0x51,\n\t27468 - 19968: jis0208<<14 | 0x11<<7 | 0x2D,\n\t27469 - 19968: jis0212<<14 | 0x24<<7 | 0x52,\n\t27470 - 19968: jis0208<<14 | 0x22<<7 | 0x16,\n\t27472 - 19968: jis0208<<14 | 0x3C<<7 | 0x1E,\n\t27474 - 19968: jis0212<<14 | 0x24<<7 | 0x53,\n\t27475 - 19968: jis0208<<14 | 0x13<<7 | 0x1E,\n\t27476 - 19968: jis0208<<14 | 0x3C<<7 | 0x20,\n\t27478 - 19968: jis0212<<14 | 0x24<<7 | 0x54,\n\t27480 - 19968: jis0212<<14 | 0x24<<7 | 0x55,\n\t27481 - 19968: jis0208<<14 | 0x3C<<7 | 0x1F,\n\t27483 - 19968: jis0208<<14 | 0x3C<<7 | 0x21,\n\t27485 - 19968: jis0212<<14 | 0x24<<7 | 0x56,\n\t27487 - 19968: jis0208<<14 | 0x3C<<7 | 0x22,\n\t27488 - 19968: jis0212<<14 | 0x24<<7 | 0x57,\n\t27489 - 19968: jis0208<<14 | 0x3C<<7 | 0x23,\n\t27490 - 19968: jis0208<<14 | 0x1A<<7 | 0x3E,\n\t27491 - 19968: jis0208<<14 | 0x1F<<7 | 0x14,\n\t27492 - 19968: jis0208<<14 | 0x19<<7 | 0x00,\n\t27494 - 19968: jis0208<<14 | 0x28<<7 | 0x4F,\n\t27495 - 19968: jis0212<<14 | 0x24<<7 | 0x58,\n\t27497 - 19968: jis0208<<14 | 0x29<<7 | 0x41,\n\t27498 - 19968: jis0208<<14 | 0x2E<<7 | 0x23,\n\t27499 - 19968: jis0212<<14 | 0x24<<7 | 0x59,\n\t27502 - 19968: jis0212<<14 | 0x24<<7 | 0x5A,\n\t27503 - 19968: jis0208<<14 | 0x1A<<7 | 0x54,\n\t27504 - 19968: jis0212<<14 | 0x24<<7 | 0x5B,\n\t27507 - 19968: jis0208<<14 | 0x19<<7 | 0x2F,\n\t27508 - 19968: jis0208<<14 | 0x2D<<7 | 0x51,\n\t27509 - 19968: jis0212<<14 | 0x24<<7 | 0x5C,\n\t27512 - 19968: jis0208<<14 | 0x3C<<7 | 0x24,\n\t27513 - 19968: jis0208<<14 | 0x3C<<7 | 0x25,\n\t27515 - 19968: jis0208<<14 | 0x1A<<7 | 0x3F,\n\t27517 - 19968: jis0212<<14 | 0x24<<7 | 0x5D,\n\t27518 - 19968: jis0212<<14 | 0x25<<7 | 0x00,\n\t27519 - 19968: jis0208<<14 | 0x3C<<7 | 0x26,\n\t27520 - 19968: jis0208<<14 | 0x3C<<7 | 0x27,\n\t27522 - 19968: jis0212<<14 | 0x25<<7 | 0x01,\n\t27523 - 19968: jis0208<<14 | 0x3C<<7 | 0x29,\n\t27524 - 19968: jis0208<<14 | 0x3C<<7 | 0x28,\n\t27525 - 19968: jis0212<<14 | 0x25<<7 | 0x02,\n\t27526 - 19968: jis0208<<14 | 0x2A<<7 | 0x37,\n\t27529 - 19968: jis0208<<14 | 0x1C<<7 | 0x3D,\n\t27530 - 19968: jis0208<<14 | 0x1B<<7 | 0x4B,\n\t27531 - 19968: jis0208<<14 | 0x1A<<7 | 0x23,\n\t27533 - 19968: jis0208<<14 | 0x3C<<7 | 0x2A,\n\t27541 - 19968: jis0208<<14 | 0x3C<<7 | 0x2C,\n\t27542 - 19968: jis0208<<14 | 0x1E<<7 | 0x02,\n\t27543 - 19968: jis0212<<14 | 0x25<<7 | 0x03,\n\t27544 - 19968: jis0208<<14 | 0x3C<<7 | 0x2B,\n\t27547 - 19968: jis0212<<14 | 0x25<<7 | 0x04,\n\t27550 - 19968: jis0208<<14 | 0x3C<<7 | 0x2D,\n\t27551 - 19968: jis0212<<14 | 0x25<<7 | 0x05,\n\t27552 - 19968: jis0212<<14 | 0x25<<7 | 0x06,\n\t27554 - 19968: jis0212<<14 | 0x25<<7 | 0x07,\n\t27555 - 19968: jis0212<<14 | 0x25<<7 | 0x08,\n\t27556 - 19968: jis0208<<14 | 0x3C<<7 | 0x2E,\n\t27560 - 19968: jis0212<<14 | 0x25<<7 | 0x09,\n\t27561 - 19968: jis0212<<14 | 0x25<<7 | 0x0A,\n\t27562 - 19968: jis0208<<14 | 0x3C<<7 | 0x2F,\n\t27563 - 19968: jis0208<<14 | 0x3C<<7 | 0x30,\n\t27564 - 19968: jis0212<<14 | 0x25<<7 | 0x0B,\n\t27565 - 19968: jis0212<<14 | 0x25<<7 | 0x0C,\n\t27566 - 19968: jis0212<<14 | 0x25<<7 | 0x0D,\n\t27567 - 19968: jis0208<<14 | 0x3C<<7 | 0x31,\n\t27568 - 19968: jis0212<<14 | 0x25<<7 | 0x0E,\n\t27569 - 19968: jis0208<<14 | 0x3C<<7 | 0x33,\n\t27570 - 19968: jis0208<<14 | 0x3C<<7 | 0x32,\n\t27571 - 19968: jis0208<<14 | 0x3C<<7 | 0x34,\n\t27572 - 19968: jis0208<<14 | 0x11<<7 | 0x04,\n\t27573 - 19968: jis0208<<14 | 0x22<<7 | 0x29,\n\t27575 - 19968: jis0208<<14 | 0x3C<<7 | 0x35,\n\t27576 - 19968: jis0212<<14 | 0x25<<7 | 0x0F,\n\t27577 - 19968: jis0212<<14 | 0x25<<7 | 0x10,\n\t27578 - 19968: jis0208<<14 | 0x1A<<7 | 0x05,\n\t27579 - 19968: jis0208<<14 | 0x12<<7 | 0x2B,\n\t27580 - 19968: jis0208<<14 | 0x3C<<7 | 0x36,\n\t27581 - 19968: jis0212<<14 | 0x25<<7 | 0x11,\n\t27582 - 19968: jis0212<<14 | 0x25<<7 | 0x12,\n\t27583 - 19968: jis0208<<14 | 0x24<<7 | 0x21,\n\t27584 - 19968: jis0208<<14 | 0x33<<7 | 0x2B,\n\t27587 - 19968: jis0212<<14 | 0x25<<7 | 0x13,\n\t27588 - 19968: jis0212<<14 | 0x25<<7 | 0x14,\n\t27589 - 19968: jis0208<<14 | 0x14<<7 | 0x02,\n\t27590 - 19968: jis0208<<14 | 0x3C<<7 | 0x37,\n\t27593 - 19968: jis0212<<14 | 0x25<<7 | 0x15,\n\t27595 - 19968: jis0208<<14 | 0x3C<<7 | 0x38,\n\t27596 - 19968: jis0212<<14 | 0x25<<7 | 0x16,\n\t27597 - 19968: jis0208<<14 | 0x29<<7 | 0x4B,\n\t27598 - 19968: jis0208<<14 | 0x2A<<7 | 0x47,\n\t27602 - 19968: jis0208<<14 | 0x25<<7 | 0x26,\n\t27603 - 19968: jis0208<<14 | 0x3C<<7 | 0x39,\n\t27604 - 19968: jis0208<<14 | 0x27<<7 | 0x45,\n\t27606 - 19968: jis0208<<14 | 0x59<<7 | 0x39,\n\t27608 - 19968: jis0208<<14 | 0x27<<7 | 0x5A,\n\t27610 - 19968: jis0212<<14 | 0x25<<7 | 0x18,\n\t27611 - 19968: jis0208<<14 | 0x2B<<7 | 0x32,\n\t27615 - 19968: jis0208<<14 | 0x3C<<7 | 0x3A,\n\t27617 - 19968: jis0212<<14 | 0x25<<7 | 0x19,\n\t27619 - 19968: jis0212<<14 | 0x25<<7 | 0x1A,\n\t27622 - 19968: jis0212<<14 | 0x25<<7 | 0x1B,\n\t27623 - 19968: jis0212<<14 | 0x25<<7 | 0x1C,\n\t27627 - 19968: jis0208<<14 | 0x3C<<7 | 0x3C,\n\t27628 - 19968: jis0208<<14 | 0x3C<<7 | 0x3B,\n\t27630 - 19968: jis0212<<14 | 0x25<<7 | 0x1D,\n\t27631 - 19968: jis0208<<14 | 0x3C<<7 | 0x3E,\n\t27633 - 19968: jis0212<<14 | 0x25<<7 | 0x1E,\n\t27635 - 19968: jis0208<<14 | 0x3C<<7 | 0x3D,\n\t27639 - 19968: jis0212<<14 | 0x25<<7 | 0x1F,\n\t27641 - 19968: jis0212<<14 | 0x25<<7 | 0x20,\n\t27647 - 19968: jis0212<<14 | 0x25<<7 | 0x21,\n\t27650 - 19968: jis0212<<14 | 0x25<<7 | 0x22,\n\t27652 - 19968: jis0212<<14 | 0x25<<7 | 0x23,\n\t27653 - 19968: jis0212<<14 | 0x25<<7 | 0x24,\n\t27656 - 19968: jis0208<<14 | 0x3C<<7 | 0x40,\n\t27657 - 19968: jis0212<<14 | 0x25<<7 | 0x25,\n\t27661 - 19968: jis0212<<14 | 0x25<<7 | 0x26,\n\t27662 - 19968: jis0212<<14 | 0x25<<7 | 0x27,\n\t27663 - 19968: jis0208<<14 | 0x1A<<7 | 0x40,\n\t27664 - 19968: jis0212<<14 | 0x25<<7 | 0x28,\n\t27665 - 19968: jis0208<<14 | 0x2B<<7 | 0x10,\n\t27666 - 19968: jis0212<<14 | 0x25<<7 | 0x29,\n\t27667 - 19968: jis0208<<14 | 0x3C<<7 | 0x41,\n\t27668 - 19968: jis0208<<14 | 0x3C<<7 | 0x42,\n\t27671 - 19968: jis0208<<14 | 0x14<<7 | 0x03,\n\t27673 - 19968: jis0212<<14 | 0x25<<7 | 0x2A,\n\t27675 - 19968: jis0208<<14 | 0x3C<<7 | 0x43,\n\t27679 - 19968: jis0212<<14 | 0x25<<7 | 0x2B,\n\t27683 - 19968: jis0208<<14 | 0x3C<<7 | 0x45,\n\t27684 - 19968: jis0208<<14 | 0x3C<<7 | 0x44,\n\t27686 - 19968: jis0212<<14 | 0x25<<7 | 0x2C,\n\t27687 - 19968: jis0212<<14 | 0x25<<7 | 0x2D,\n\t27688 - 19968: jis0212<<14 | 0x25<<7 | 0x2E,\n\t27692 - 19968: jis0212<<14 | 0x25<<7 | 0x2F,\n\t27694 - 19968: jis0212<<14 | 0x25<<7 | 0x30,\n\t27699 - 19968: jis0212<<14 | 0x25<<7 | 0x31,\n\t27700 - 19968: jis0208<<14 | 0x1E<<7 | 0x44,\n\t27701 - 19968: jis0212<<14 | 0x25<<7 | 0x32,\n\t27702 - 19968: jis0212<<14 | 0x25<<7 | 0x33,\n\t27703 - 19968: jis0208<<14 | 0x28<<7 | 0x18,\n\t27704 - 19968: jis0208<<14 | 0x10<<7 | 0x29,\n\t27706 - 19968: jis0212<<14 | 0x25<<7 | 0x34,\n\t27707 - 19968: jis0212<<14 | 0x25<<7 | 0x35,\n\t27710 - 19968: jis0208<<14 | 0x27<<7 | 0x24,\n\t27711 - 19968: jis0208<<14 | 0x59<<7 | 0x3A,\n\t27712 - 19968: jis0208<<14 | 0x23<<7 | 0x54,\n\t27713 - 19968: jis0208<<14 | 0x1C<<7 | 0x20,\n\t27714 - 19968: jis0208<<14 | 0x14<<7 | 0x40,\n\t27722 - 19968: jis0212<<14 | 0x25<<7 | 0x37,\n\t27723 - 19968: jis0212<<14 | 0x25<<7 | 0x38,\n\t27725 - 19968: jis0212<<14 | 0x25<<7 | 0x39,\n\t27726 - 19968: jis0208<<14 | 0x27<<7 | 0x25,\n\t27727 - 19968: jis0212<<14 | 0x25<<7 | 0x3A,\n\t27728 - 19968: jis0208<<14 | 0x1B<<7 | 0x0D,\n\t27730 - 19968: jis0212<<14 | 0x25<<7 | 0x3B,\n\t27732 - 19968: jis0212<<14 | 0x25<<7 | 0x3C,\n\t27733 - 19968: jis0208<<14 | 0x3C<<7 | 0x47,\n\t27735 - 19968: jis0208<<14 | 0x13<<7 | 0x1F,\n\t27737 - 19968: jis0212<<14 | 0x25<<7 | 0x3D,\n\t27738 - 19968: jis0208<<14 | 0x10<<7 | 0x57,\n\t27739 - 19968: jis0212<<14 | 0x25<<7 | 0x3E,\n\t27740 - 19968: jis0208<<14 | 0x59<<7 | 0x3B,\n\t27741 - 19968: jis0208<<14 | 0x25<<7 | 0x51,\n\t27742 - 19968: jis0208<<14 | 0x3C<<7 | 0x46,\n\t27743 - 19968: jis0208<<14 | 0x18<<7 | 0x1D,\n\t27744 - 19968: jis0208<<14 | 0x22<<7 | 0x32,\n\t27746 - 19968: jis0208<<14 | 0x3C<<7 | 0x48,\n\t27751 - 19968: jis0212<<14 | 0x26<<7 | 0x15,\n\t27752 - 19968: jis0208<<14 | 0x3C<<7 | 0x50,\n\t27754 - 19968: jis0208<<14 | 0x3C<<7 | 0x49,\n\t27755 - 19968: jis0212<<14 | 0x25<<7 | 0x40,\n\t27757 - 19968: jis0212<<14 | 0x25<<7 | 0x41,\n\t27759 - 19968: jis0208<<14 | 0x59<<7 | 0x3D,\n\t27760 - 19968: jis0208<<14 | 0x21<<7 | 0x20,\n\t27762 - 19968: jis0208<<14 | 0x14<<7 | 0x41,\n\t27763 - 19968: jis0208<<14 | 0x3C<<7 | 0x51,\n\t27764 - 19968: jis0212<<14 | 0x25<<7 | 0x43,\n\t27766 - 19968: jis0212<<14 | 0x25<<7 | 0x44,\n\t27768 - 19968: jis0212<<14 | 0x25<<7 | 0x45,\n\t27769 - 19968: jis0212<<14 | 0x25<<7 | 0x46,\n\t27770 - 19968: jis0208<<14 | 0x16<<7 | 0x47,\n\t27771 - 19968: jis0212<<14 | 0x25<<7 | 0x47,\n\t27773 - 19968: jis0208<<14 | 0x14<<7 | 0x04,\n\t27774 - 19968: jis0208<<14 | 0x3C<<7 | 0x4F,\n\t27777 - 19968: jis0208<<14 | 0x3C<<7 | 0x4D,\n\t27778 - 19968: jis0208<<14 | 0x3C<<7 | 0x4A,\n\t27779 - 19968: jis0208<<14 | 0x2C<<7 | 0x3F,\n\t27781 - 19968: jis0212<<14 | 0x25<<7 | 0x48,\n\t27782 - 19968: jis0208<<14 | 0x59<<7 | 0x3C,\n\t27783 - 19968: jis0212<<14 | 0x25<<7 | 0x4A,\n\t27784 - 19968: jis0208<<14 | 0x23<<7 | 0x1F,\n\t27785 - 19968: jis0212<<14 | 0x25<<7 | 0x4B,\n\t27788 - 19968: jis0208<<14 | 0x25<<7 | 0x38,\n\t27789 - 19968: jis0208<<14 | 0x3C<<7 | 0x4B,\n\t27792 - 19968: jis0208<<14 | 0x3C<<7 | 0x53,\n\t27794 - 19968: jis0208<<14 | 0x3C<<7 | 0x52,\n\t27795 - 19968: jis0208<<14 | 0x16<<7 | 0x02,\n\t27796 - 19968: jis0212<<14 | 0x25<<7 | 0x4C,\n\t27797 - 19968: jis0212<<14 | 0x25<<7 | 0x4D,\n\t27798 - 19968: jis0208<<14 | 0x11<<7 | 0x0C,\n\t27799 - 19968: jis0212<<14 | 0x25<<7 | 0x4E,\n\t27800 - 19968: jis0212<<14 | 0x25<<7 | 0x4F,\n\t27801 - 19968: jis0208<<14 | 0x19<<7 | 0x1A,\n\t27802 - 19968: jis0208<<14 | 0x3C<<7 | 0x4C,\n\t27803 - 19968: jis0208<<14 | 0x3C<<7 | 0x4E,\n\t27804 - 19968: jis0212<<14 | 0x25<<7 | 0x50,\n\t27807 - 19968: jis0212<<14 | 0x25<<7 | 0x51,\n\t27809 - 19968: jis0208<<14 | 0x2A<<7 | 0x36,\n\t27810 - 19968: jis0208<<14 | 0x21<<7 | 0x53,\n\t27819 - 19968: jis0208<<14 | 0x2A<<7 | 0x56,\n\t27822 - 19968: jis0208<<14 | 0x3C<<7 | 0x5B,\n\t27824 - 19968: jis0212<<14 | 0x25<<7 | 0x52,\n\t27825 - 19968: jis0208<<14 | 0x3C<<7 | 0x5C,\n\t27826 - 19968: jis0212<<14 | 0x25<<7 | 0x53,\n\t27827 - 19968: jis0208<<14 | 0x11<<7 | 0x2E,\n\t27828 - 19968: jis0212<<14 | 0x25<<7 | 0x54,\n\t27832 - 19968: jis0208<<14 | 0x29<<7 | 0x07,\n\t27833 - 19968: jis0208<<14 | 0x2B<<7 | 0x5C,\n\t27834 - 19968: jis0208<<14 | 0x3D<<7 | 0x00,\n\t27835 - 19968: jis0208<<14 | 0x1B<<7 | 0x02,\n\t27836 - 19968: jis0208<<14 | 0x1D<<7 | 0x21,\n\t27837 - 19968: jis0208<<14 | 0x3C<<7 | 0x57,\n\t27838 - 19968: jis0208<<14 | 0x3C<<7 | 0x5D,\n\t27839 - 19968: jis0208<<14 | 0x10<<7 | 0x47,\n\t27841 - 19968: jis0208<<14 | 0x15<<7 | 0x16,\n\t27842 - 19968: jis0212<<14 | 0x25<<7 | 0x55,\n\t27844 - 19968: jis0208<<14 | 0x3C<<7 | 0x54,\n\t27845 - 19968: jis0208<<14 | 0x3C<<7 | 0x59,\n\t27846 - 19968: jis0212<<14 | 0x25<<7 | 0x56,\n\t27849 - 19968: jis0208<<14 | 0x1F<<7 | 0x53,\n\t27850 - 19968: jis0208<<14 | 0x26<<7 | 0x50,\n\t27852 - 19968: jis0208<<14 | 0x27<<7 | 0x46,\n\t27853 - 19968: jis0212<<14 | 0x25<<7 | 0x57,\n\t27855 - 19968: jis0212<<14 | 0x25<<7 | 0x58,\n\t27856 - 19968: jis0212<<14 | 0x25<<7 | 0x59,\n\t27857 - 19968: jis0212<<14 | 0x25<<7 | 0x5A,\n\t27858 - 19968: jis0212<<14 | 0x25<<7 | 0x5B,\n\t27859 - 19968: jis0208<<14 | 0x3C<<7 | 0x56,\n\t27860 - 19968: jis0212<<14 | 0x25<<7 | 0x5C,\n\t27861 - 19968: jis0208<<14 | 0x2A<<7 | 0x00,\n\t27862 - 19968: jis0212<<14 | 0x25<<7 | 0x5D,\n\t27863 - 19968: jis0208<<14 | 0x3C<<7 | 0x58,\n\t27865 - 19968: jis0208<<14 | 0x3D<<7 | 0x03,\n\t27866 - 19968: jis0208<<14 | 0x59<<7 | 0x3E,\n\t27867 - 19968: jis0208<<14 | 0x3D<<7 | 0x01,\n\t27868 - 19968: jis0212<<14 | 0x26<<7 | 0x01,\n\t27869 - 19968: jis0208<<14 | 0x3C<<7 | 0x5A,\n\t27872 - 19968: jis0212<<14 | 0x26<<7 | 0x02,\n\t27873 - 19968: jis0208<<14 | 0x2A<<7 | 0x01,\n\t27874 - 19968: jis0208<<14 | 0x26<<7 | 0x27,\n\t27875 - 19968: jis0208<<14 | 0x14<<7 | 0x42,\n\t27877 - 19968: jis0208<<14 | 0x24<<7 | 0x04,\n\t27879 - 19968: jis0212<<14 | 0x26<<7 | 0x03,\n\t27880 - 19968: jis0208<<14 | 0x22<<7 | 0x4C,\n\t27881 - 19968: jis0212<<14 | 0x26<<7 | 0x04,\n\t27882 - 19968: jis0208<<14 | 0x3D<<7 | 0x04,\n\t27883 - 19968: jis0212<<14 | 0x26<<7 | 0x05,\n\t27884 - 19968: jis0212<<14 | 0x26<<7 | 0x06,\n\t27886 - 19968: jis0212<<14 | 0x26<<7 | 0x07,\n\t27887 - 19968: jis0208<<14 | 0x3D<<7 | 0x02,\n\t27888 - 19968: jis0208<<14 | 0x21<<7 | 0x38,\n\t27889 - 19968: jis0208<<14 | 0x3C<<7 | 0x55,\n\t27890 - 19968: jis0212<<14 | 0x26<<7 | 0x08,\n\t27891 - 19968: jis0208<<14 | 0x10<<7 | 0x2A,\n\t27892 - 19968: jis0212<<14 | 0x26<<7 | 0x09,\n\t27908 - 19968: jis0208<<14 | 0x59<<7 | 0x3F,\n\t27911 - 19968: jis0212<<14 | 0x26<<7 | 0x0B,\n\t27914 - 19968: jis0212<<14 | 0x26<<7 | 0x0C,\n\t27915 - 19968: jis0208<<14 | 0x2C<<7 | 0x2D,\n\t27916 - 19968: jis0208<<14 | 0x3D<<7 | 0x0F,\n\t27918 - 19968: jis0212<<14 | 0x26<<7 | 0x0D,\n\t27919 - 19968: jis0212<<14 | 0x26<<7 | 0x0E,\n\t27921 - 19968: jis0212<<14 | 0x26<<7 | 0x0F,\n\t27922 - 19968: jis0208<<14 | 0x3D<<7 | 0x0E,\n\t27923 - 19968: jis0212<<14 | 0x26<<7 | 0x10,\n\t27927 - 19968: jis0208<<14 | 0x1F<<7 | 0x55,\n\t27929 - 19968: jis0208<<14 | 0x3D<<7 | 0x0B,\n\t27930 - 19968: jis0212<<14 | 0x26<<7 | 0x11,\n\t27931 - 19968: jis0208<<14 | 0x2C<<7 | 0x4B,\n\t27934 - 19968: jis0208<<14 | 0x25<<7 | 0x15,\n\t27935 - 19968: jis0208<<14 | 0x3D<<7 | 0x05,\n\t27941 - 19968: jis0208<<14 | 0x23<<7 | 0x24,\n\t27942 - 19968: jis0212<<14 | 0x26<<7 | 0x12,\n\t27943 - 19968: jis0212<<14 | 0x26<<7 | 0x13,\n\t27944 - 19968: jis0212<<14 | 0x26<<7 | 0x14,\n\t27945 - 19968: jis0208<<14 | 0x10<<7 | 0x2B,\n\t27946 - 19968: jis0208<<14 | 0x18<<7 | 0x1E,\n\t27947 - 19968: jis0208<<14 | 0x3D<<7 | 0x08,\n\t27950 - 19968: jis0212<<14 | 0x26<<7 | 0x16,\n\t27951 - 19968: jis0212<<14 | 0x26<<7 | 0x17,\n\t27953 - 19968: jis0212<<14 | 0x26<<7 | 0x18,\n\t27954 - 19968: jis0208<<14 | 0x1C<<7 | 0x06,\n\t27955 - 19968: jis0208<<14 | 0x3D<<7 | 0x0D,\n\t27957 - 19968: jis0208<<14 | 0x3D<<7 | 0x0C,\n\t27958 - 19968: jis0208<<14 | 0x3D<<7 | 0x07,\n\t27960 - 19968: jis0208<<14 | 0x3D<<7 | 0x0A,\n\t27961 - 19968: jis0212<<14 | 0x26<<7 | 0x19,\n\t27963 - 19968: jis0208<<14 | 0x12<<7 | 0x47,\n\t27964 - 19968: jis0212<<14 | 0x26<<7 | 0x1A,\n\t27965 - 19968: jis0208<<14 | 0x3D<<7 | 0x09,\n\t27966 - 19968: jis0208<<14 | 0x26<<7 | 0x28,\n\t27967 - 19968: jis0212<<14 | 0x26<<7 | 0x1B,\n\t27969 - 19968: jis0208<<14 | 0x2D<<7 | 0x0D,\n\t27972 - 19968: jis0208<<14 | 0x1D<<7 | 0x53,\n\t27973 - 19968: jis0208<<14 | 0x1F<<7 | 0x54,\n\t27991 - 19968: jis0212<<14 | 0x26<<7 | 0x1C,\n\t27993 - 19968: jis0208<<14 | 0x3D<<7 | 0x15,\n\t27994 - 19968: jis0208<<14 | 0x3D<<7 | 0x13,\n\t27996 - 19968: jis0208<<14 | 0x28<<7 | 0x2C,\n\t27998 - 19968: jis0212<<14 | 0x26<<7 | 0x1D,\n\t27999 - 19968: jis0212<<14 | 0x26<<7 | 0x1E,\n\t28001 - 19968: jis0212<<14 | 0x26<<7 | 0x1F,\n\t28003 - 19968: jis0208<<14 | 0x3D<<7 | 0x10,\n\t28004 - 19968: jis0208<<14 | 0x3D<<7 | 0x12,\n\t28005 - 19968: jis0212<<14 | 0x26<<7 | 0x20,\n\t28006 - 19968: jis0208<<14 | 0x10<<7 | 0x19,\n\t28007 - 19968: jis0212<<14 | 0x26<<7 | 0x21,\n\t28009 - 19968: jis0208<<14 | 0x18<<7 | 0x1F,\n\t28010 - 19968: jis0208<<14 | 0x2E<<7 | 0x11,\n\t28012 - 19968: jis0208<<14 | 0x12<<7 | 0x1C,\n\t28014 - 19968: jis0208<<14 | 0x28<<7 | 0x41,\n\t28015 - 19968: jis0208<<14 | 0x59<<7 | 0x41,\n\t28016 - 19968: jis0212<<14 | 0x26<<7 | 0x23,\n\t28020 - 19968: jis0208<<14 | 0x2C<<7 | 0x40,\n\t28023 - 19968: jis0208<<14 | 0x12<<7 | 0x03,\n\t28024 - 19968: jis0208<<14 | 0x1E<<7 | 0x1A,\n\t28025 - 19968: jis0208<<14 | 0x3D<<7 | 0x14,\n\t28028 - 19968: jis0212<<14 | 0x26<<7 | 0x24,\n\t28034 - 19968: jis0212<<14 | 0x26<<7 | 0x25,\n\t28037 - 19968: jis0208<<14 | 0x3D<<7 | 0x19,\n\t28039 - 19968: jis0208<<14 | 0x59<<7 | 0x40,\n\t28040 - 19968: jis0208<<14 | 0x1D<<7 | 0x22,\n\t28044 - 19968: jis0208<<14 | 0x2C<<7 | 0x0F,\n\t28046 - 19968: jis0208<<14 | 0x3D<<7 | 0x16,\n\t28049 - 19968: jis0212<<14 | 0x26<<7 | 0x27,\n\t28050 - 19968: jis0212<<14 | 0x26<<7 | 0x28,\n\t28051 - 19968: jis0208<<14 | 0x3D<<7 | 0x11,\n\t28052 - 19968: jis0212<<14 | 0x26<<7 | 0x29,\n\t28053 - 19968: jis0208<<14 | 0x3D<<7 | 0x17,\n\t28054 - 19968: jis0208<<14 | 0x59<<7 | 0x42,\n\t28055 - 19968: jis0212<<14 | 0x26<<7 | 0x2B,\n\t28056 - 19968: jis0212<<14 | 0x26<<7 | 0x2C,\n\t28057 - 19968: jis0208<<14 | 0x2D<<7 | 0x3D,\n\t28059 - 19968: jis0208<<14 | 0x24<<7 | 0x52,\n\t28060 - 19968: jis0208<<14 | 0x25<<7 | 0x21,\n\t28074 - 19968: jis0212<<14 | 0x26<<7 | 0x2D,\n\t28076 - 19968: jis0208<<14 | 0x59<<7 | 0x43,\n\t28079 - 19968: jis0208<<14 | 0x12<<7 | 0x15,\n\t28082 - 19968: jis0208<<14 | 0x10<<7 | 0x34,\n\t28084 - 19968: jis0212<<14 | 0x26<<7 | 0x2F,\n\t28085 - 19968: jis0208<<14 | 0x3D<<7 | 0x1D,\n\t28087 - 19968: jis0212<<14 | 0x26<<7 | 0x30,\n\t28088 - 19968: jis0208<<14 | 0x3D<<7 | 0x20,\n\t28089 - 19968: jis0212<<14 | 0x26<<7 | 0x31,\n\t28092 - 19968: jis0208<<14 | 0x2D<<7 | 0x22,\n\t28093 - 19968: jis0212<<14 | 0x26<<7 | 0x32,\n\t28095 - 19968: jis0212<<14 | 0x26<<7 | 0x33,\n\t28096 - 19968: jis0208<<14 | 0x2C<<7 | 0x43,\n\t28100 - 19968: jis0212<<14 | 0x26<<7 | 0x34,\n\t28101 - 19968: jis0208<<14 | 0x3D<<7 | 0x27,\n\t28102 - 19968: jis0208<<14 | 0x3D<<7 | 0x21,\n\t28103 - 19968: jis0208<<14 | 0x3D<<7 | 0x1E,\n\t28104 - 19968: jis0212<<14 | 0x26<<7 | 0x35,\n\t28106 - 19968: jis0212<<14 | 0x26<<7 | 0x36,\n\t28107 - 19968: jis0208<<14 | 0x2D<<7 | 0x33,\n\t28108 - 19968: jis0208<<14 | 0x3D<<7 | 0x24,\n\t28110 - 19968: jis0212<<14 | 0x26<<7 | 0x37,\n\t28111 - 19968: jis0208<<14 | 0x59<<7 | 0x44,\n\t28113 - 19968: jis0208<<14 | 0x1C<<7 | 0x29,\n\t28114 - 19968: jis0208<<14 | 0x3D<<7 | 0x26,\n\t28117 - 19968: jis0208<<14 | 0x3D<<7 | 0x2B,\n\t28118 - 19968: jis0212<<14 | 0x26<<7 | 0x39,\n\t28120 - 19968: jis0208<<14 | 0x24<<7 | 0x50,\n\t28121 - 19968: jis0208<<14 | 0x3D<<7 | 0x29,\n\t28123 - 19968: jis0212<<14 | 0x26<<7 | 0x3A,\n\t28125 - 19968: jis0212<<14 | 0x26<<7 | 0x3B,\n\t28126 - 19968: jis0208<<14 | 0x3D<<7 | 0x23,\n\t28127 - 19968: jis0212<<14 | 0x26<<7 | 0x3C,\n\t28128 - 19968: jis0212<<14 | 0x26<<7 | 0x3D,\n\t28129 - 19968: jis0208<<14 | 0x22<<7 | 0x17,\n\t28130 - 19968: jis0212<<14 | 0x26<<7 | 0x3E,\n\t28132 - 19968: jis0208<<14 | 0x3D<<7 | 0x2A,\n\t28133 - 19968: jis0212<<14 | 0x26<<7 | 0x3F,\n\t28134 - 19968: jis0208<<14 | 0x3D<<7 | 0x1F,\n\t28136 - 19968: jis0208<<14 | 0x3D<<7 | 0x25,\n\t28137 - 19968: jis0212<<14 | 0x26<<7 | 0x40,\n\t28138 - 19968: jis0208<<14 | 0x3D<<7 | 0x2C,\n\t28139 - 19968: jis0208<<14 | 0x0F<<7 | 0x5B,\n\t28140 - 19968: jis0208<<14 | 0x3D<<7 | 0x22,\n\t28142 - 19968: jis0208<<14 | 0x3D<<7 | 0x2D,\n\t28143 - 19968: jis0212<<14 | 0x26<<7 | 0x41,\n\t28144 - 19968: jis0212<<14 | 0x26<<7 | 0x42,\n\t28145 - 19968: jis0208<<14 | 0x1E<<7 | 0x1B,\n\t28146 - 19968: jis0208<<14 | 0x59<<7 | 0x46,\n\t28147 - 19968: jis0208<<14 | 0x1C<<7 | 0x3E,\n\t28148 - 19968: jis0212<<14 | 0x26<<7 | 0x43,\n\t28149 - 19968: jis0208<<14 | 0x29<<7 | 0x04,\n\t28150 - 19968: jis0212<<14 | 0x26<<7 | 0x44,\n\t28151 - 19968: jis0208<<14 | 0x19<<7 | 0x0D,\n\t28152 - 19968: jis0208<<14 | 0x59<<7 | 0x45,\n\t28153 - 19968: jis0208<<14 | 0x3D<<7 | 0x1A,\n\t28154 - 19968: jis0208<<14 | 0x3D<<7 | 0x28,\n\t28155 - 19968: jis0208<<14 | 0x24<<7 | 0x19,\n\t28156 - 19968: jis0208<<14 | 0x59<<7 | 0x47,\n\t28160 - 19968: jis0212<<14 | 0x26<<7 | 0x46,\n\t28164 - 19968: jis0212<<14 | 0x26<<7 | 0x47,\n\t28165 - 19968: jis0208<<14 | 0x1F<<7 | 0x15,\n\t28167 - 19968: jis0208<<14 | 0x12<<7 | 0x48,\n\t28168 - 19968: jis0208<<14 | 0x19<<7 | 0x30,\n\t28169 - 19968: jis0208<<14 | 0x1D<<7 | 0x23,\n\t28170 - 19968: jis0208<<14 | 0x3D<<7 | 0x1C,\n\t28171 - 19968: jis0208<<14 | 0x1C<<7 | 0x21,\n\t28179 - 19968: jis0208<<14 | 0x16<<7 | 0x2B,\n\t28181 - 19968: jis0208<<14 | 0x3D<<7 | 0x1B,\n\t28185 - 19968: jis0208<<14 | 0x3D<<7 | 0x31,\n\t28186 - 19968: jis0208<<14 | 0x1C<<7 | 0x4C,\n\t28187 - 19968: jis0208<<14 | 0x17<<7 | 0x19,\n\t28189 - 19968: jis0208<<14 | 0x3D<<7 | 0x40,\n\t28190 - 19968: jis0212<<14 | 0x26<<7 | 0x48,\n\t28191 - 19968: jis0208<<14 | 0x3D<<7 | 0x3A,\n\t28192 - 19968: jis0208<<14 | 0x14<<7 | 0x53,\n\t28193 - 19968: jis0208<<14 | 0x24<<7 | 0x2E,\n\t28194 - 19968: jis0212<<14 | 0x26<<7 | 0x49,\n\t28195 - 19968: jis0208<<14 | 0x3D<<7 | 0x35,\n\t28196 - 19968: jis0208<<14 | 0x3D<<7 | 0x3E,\n\t28197 - 19968: jis0208<<14 | 0x0F<<7 | 0x0E,\n\t28198 - 19968: jis0208<<14 | 0x10<<7 | 0x11,\n\t28199 - 19968: jis0208<<14 | 0x59<<7 | 0x4A,\n\t28201 - 19968: jis0208<<14 | 0x11<<7 | 0x18,\n\t28203 - 19968: jis0208<<14 | 0x3D<<7 | 0x37,\n\t28204 - 19968: jis0208<<14 | 0x21<<7 | 0x0B,\n\t28205 - 19968: jis0208<<14 | 0x3D<<7 | 0x2E,\n\t28206 - 19968: jis0208<<14 | 0x3D<<7 | 0x30,\n\t28207 - 19968: jis0208<<14 | 0x18<<7 | 0x20,\n\t28210 - 19968: jis0212<<14 | 0x26<<7 | 0x4B,\n\t28214 - 19968: jis0212<<14 | 0x26<<7 | 0x4C,\n\t28216 - 19968: jis0208<<14 | 0x3D<<7 | 0x41,\n\t28217 - 19968: jis0208<<14 | 0x59<<7 | 0x48,\n\t28218 - 19968: jis0208<<14 | 0x3D<<7 | 0x3C,\n\t28219 - 19968: jis0212<<14 | 0x26<<7 | 0x4E,\n\t28220 - 19968: jis0208<<14 | 0x59<<7 | 0x4B,\n\t28222 - 19968: jis0208<<14 | 0x3D<<7 | 0x34,\n\t28227 - 19968: jis0208<<14 | 0x3D<<7 | 0x3B,\n\t28228 - 19968: jis0212<<14 | 0x26<<7 | 0x50,\n\t28229 - 19968: jis0212<<14 | 0x26<<7 | 0x51,\n\t28232 - 19968: jis0212<<14 | 0x26<<7 | 0x52,\n\t28233 - 19968: jis0212<<14 | 0x26<<7 | 0x53,\n\t28234 - 19968: jis0208<<14 | 0x2B<<7 | 0x0A,\n\t28235 - 19968: jis0212<<14 | 0x26<<7 | 0x54,\n\t28237 - 19968: jis0208<<14 | 0x3D<<7 | 0x39,\n\t28238 - 19968: jis0208<<14 | 0x3D<<7 | 0x3D,\n\t28239 - 19968: jis0212<<14 | 0x26<<7 | 0x55,\n\t28241 - 19968: jis0212<<14 | 0x26<<7 | 0x56,\n\t28242 - 19968: jis0212<<14 | 0x26<<7 | 0x57,\n\t28243 - 19968: jis0212<<14 | 0x26<<7 | 0x58,\n\t28244 - 19968: jis0212<<14 | 0x26<<7 | 0x59,\n\t28246 - 19968: jis0208<<14 | 0x17<<7 | 0x2F,\n\t28247 - 19968: jis0212<<14 | 0x26<<7 | 0x5A,\n\t28248 - 19968: jis0208<<14 | 0x1D<<7 | 0x24,\n\t28251 - 19968: jis0208<<14 | 0x22<<7 | 0x18,\n\t28252 - 19968: jis0208<<14 | 0x59<<7 | 0x49,\n\t28253 - 19968: jis0212<<14 | 0x26<<7 | 0x5C,\n\t28254 - 19968: jis0212<<14 | 0x26<<7 | 0x5D,\n\t28255 - 19968: jis0208<<14 | 0x3D<<7 | 0x33,\n\t28258 - 19968: jis0212<<14 | 0x27<<7 | 0x00,\n\t28259 - 19968: jis0212<<14 | 0x27<<7 | 0x01,\n\t28263 - 19968: jis0208<<14 | 0x2C<<7 | 0x0E,\n\t28264 - 19968: jis0212<<14 | 0x27<<7 | 0x02,\n\t28267 - 19968: jis0208<<14 | 0x3D<<7 | 0x36,\n\t28270 - 19968: jis0208<<14 | 0x3D<<7 | 0x2F,\n\t28271 - 19968: jis0208<<14 | 0x24<<7 | 0x51,\n\t28274 - 19968: jis0208<<14 | 0x3D<<7 | 0x32,\n\t28275 - 19968: jis0212<<14 | 0x27<<7 | 0x03,\n\t28278 - 19968: jis0208<<14 | 0x3D<<7 | 0x38,\n\t28283 - 19968: jis0212<<14 | 0x27<<7 | 0x04,\n\t28285 - 19968: jis0212<<14 | 0x27<<7 | 0x05,\n\t28286 - 19968: jis0208<<14 | 0x2E<<7 | 0x30,\n\t28287 - 19968: jis0208<<14 | 0x1B<<7 | 0x1D,\n\t28288 - 19968: jis0208<<14 | 0x2A<<7 | 0x5D,\n\t28290 - 19968: jis0208<<14 | 0x3D<<7 | 0x42,\n\t28300 - 19968: jis0208<<14 | 0x27<<7 | 0x0D,\n\t28301 - 19968: jis0212<<14 | 0x27<<7 | 0x06,\n\t28303 - 19968: jis0208<<14 | 0x3D<<7 | 0x4E,\n\t28304 - 19968: jis0208<<14 | 0x17<<7 | 0x1A,\n\t28307 - 19968: jis0212<<14 | 0x27<<7 | 0x07,\n\t28310 - 19968: jis0208<<14 | 0x1C<<7 | 0x3F,\n\t28312 - 19968: jis0208<<14 | 0x3D<<7 | 0x44,\n\t28313 - 19968: jis0212<<14 | 0x27<<7 | 0x08,\n\t28316 - 19968: jis0208<<14 | 0x2D<<7 | 0x0E,\n\t28317 - 19968: jis0208<<14 | 0x18<<7 | 0x21,\n\t28319 - 19968: jis0208<<14 | 0x3D<<7 | 0x51,\n\t28320 - 19968: jis0212<<14 | 0x27<<7 | 0x09,\n\t28322 - 19968: jis0208<<14 | 0x0F<<7 | 0x4D,\n\t28325 - 19968: jis0208<<14 | 0x3D<<7 | 0x4F,\n\t28327 - 19968: jis0212<<14 | 0x27<<7 | 0x0A,\n\t28330 - 19968: jis0208<<14 | 0x3D<<7 | 0x43,\n\t28333 - 19968: jis0212<<14 | 0x27<<7 | 0x0B,\n\t28334 - 19968: jis0212<<14 | 0x27<<7 | 0x0C,\n\t28335 - 19968: jis0208<<14 | 0x3D<<7 | 0x49,\n\t28337 - 19968: jis0212<<14 | 0x27<<7 | 0x0D,\n\t28338 - 19968: jis0208<<14 | 0x3D<<7 | 0x4B,\n\t28339 - 19968: jis0212<<14 | 0x27<<7 | 0x0E,\n\t28342 - 19968: jis0208<<14 | 0x2C<<7 | 0x2E,\n\t28343 - 19968: jis0208<<14 | 0x3D<<7 | 0x46,\n\t28346 - 19968: jis0208<<14 | 0x24<<7 | 0x0D,\n\t28347 - 19968: jis0212<<14 | 0x27<<7 | 0x0F,\n\t28349 - 19968: jis0208<<14 | 0x3D<<7 | 0x48,\n\t28351 - 19968: jis0208<<14 | 0x59<<7 | 0x4C,\n\t28352 - 19968: jis0212<<14 | 0x27<<7 | 0x11,\n\t28353 - 19968: jis0212<<14 | 0x27<<7 | 0x12,\n\t28354 - 19968: jis0208<<14 | 0x3D<<7 | 0x50,\n\t28355 - 19968: jis0212<<14 | 0x27<<7 | 0x13,\n\t28356 - 19968: jis0208<<14 | 0x3D<<7 | 0x4A,\n\t28357 - 19968: jis0208<<14 | 0x2B<<7 | 0x26,\n\t28359 - 19968: jis0212<<14 | 0x27<<7 | 0x14,\n\t28360 - 19968: jis0212<<14 | 0x27<<7 | 0x15,\n\t28361 - 19968: jis0208<<14 | 0x3D<<7 | 0x45,\n\t28362 - 19968: jis0212<<14 | 0x27<<7 | 0x16,\n\t28363 - 19968: jis0208<<14 | 0x1B<<7 | 0x01,\n\t28364 - 19968: jis0208<<14 | 0x3D<<7 | 0x5D,\n\t28365 - 19968: jis0212<<14 | 0x27<<7 | 0x17,\n\t28366 - 19968: jis0212<<14 | 0x27<<7 | 0x18,\n\t28367 - 19968: jis0212<<14 | 0x27<<7 | 0x19,\n\t28369 - 19968: jis0208<<14 | 0x12<<7 | 0x49,\n\t28371 - 19968: jis0208<<14 | 0x3D<<7 | 0x47,\n\t28372 - 19968: jis0208<<14 | 0x3D<<7 | 0x4C,\n\t28373 - 19968: jis0208<<14 | 0x3D<<7 | 0x4D,\n\t28381 - 19968: jis0208<<14 | 0x21<<7 | 0x4B,\n\t28382 - 19968: jis0208<<14 | 0x21<<7 | 0x39,\n\t28395 - 19968: jis0212<<14 | 0x27<<7 | 0x1A,\n\t28396 - 19968: jis0208<<14 | 0x3D<<7 | 0x55,\n\t28397 - 19968: jis0212<<14 | 0x27<<7 | 0x1B,\n\t28398 - 19968: jis0212<<14 | 0x27<<7 | 0x1C,\n\t28399 - 19968: jis0208<<14 | 0x3D<<7 | 0x5B,\n\t28402 - 19968: jis0208<<14 | 0x3D<<7 | 0x59,\n\t28404 - 19968: jis0208<<14 | 0x24<<7 | 0x08,\n\t28407 - 19968: jis0208<<14 | 0x3E<<7 | 0x02,\n\t28408 - 19968: jis0208<<14 | 0x3D<<7 | 0x56,\n\t28409 - 19968: jis0212<<14 | 0x27<<7 | 0x1D,\n\t28411 - 19968: jis0212<<14 | 0x27<<7 | 0x1E,\n\t28413 - 19968: jis0212<<14 | 0x27<<7 | 0x1F,\n\t28414 - 19968: jis0208<<14 | 0x3D<<7 | 0x57,\n\t28415 - 19968: jis0208<<14 | 0x3D<<7 | 0x3F,\n\t28417 - 19968: jis0208<<14 | 0x14<<7 | 0x58,\n\t28418 - 19968: jis0208<<14 | 0x28<<7 | 0x19,\n\t28420 - 19968: jis0212<<14 | 0x27<<7 | 0x20,\n\t28422 - 19968: jis0208<<14 | 0x1B<<7 | 0x1E,\n\t28424 - 19968: jis0212<<14 | 0x27<<7 | 0x21,\n\t28425 - 19968: jis0208<<14 | 0x18<<7 | 0x56,\n\t28426 - 19968: jis0212<<14 | 0x27<<7 | 0x22,\n\t28428 - 19968: jis0212<<14 | 0x27<<7 | 0x23,\n\t28429 - 19968: jis0212<<14 | 0x27<<7 | 0x24,\n\t28431 - 19968: jis0208<<14 | 0x2E<<7 | 0x12,\n\t28433 - 19968: jis0208<<14 | 0x3D<<7 | 0x53,\n\t28435 - 19968: jis0208<<14 | 0x3E<<7 | 0x01,\n\t28436 - 19968: jis0208<<14 | 0x10<<7 | 0x48,\n\t28437 - 19968: jis0208<<14 | 0x20<<7 | 0x45,\n\t28438 - 19968: jis0212<<14 | 0x27<<7 | 0x25,\n\t28440 - 19968: jis0212<<14 | 0x27<<7 | 0x26,\n\t28442 - 19968: jis0212<<14 | 0x27<<7 | 0x27,\n\t28443 - 19968: jis0212<<14 | 0x27<<7 | 0x28,\n\t28448 - 19968: jis0208<<14 | 0x26<<7 | 0x58,\n\t28450 - 19968: jis0208<<14 | 0x13<<7 | 0x20,\n\t28451 - 19968: jis0208<<14 | 0x2D<<7 | 0x59,\n\t28454 - 19968: jis0212<<14 | 0x27<<7 | 0x29,\n\t28457 - 19968: jis0212<<14 | 0x27<<7 | 0x2A,\n\t28458 - 19968: jis0212<<14 | 0x27<<7 | 0x2B,\n\t28459 - 19968: jis0208<<14 | 0x2B<<7 | 0x00,\n\t28460 - 19968: jis0208<<14 | 0x23<<7 | 0x31,\n\t28461 - 19968: jis0212<<14 | 0x27<<7 | 0x32,\n\t28463 - 19968: jis0212<<14 | 0x27<<7 | 0x2C,\n\t28464 - 19968: jis0212<<14 | 0x27<<7 | 0x2D,\n\t28465 - 19968: jis0208<<14 | 0x3D<<7 | 0x5A,\n\t28466 - 19968: jis0208<<14 | 0x3D<<7 | 0x5C,\n\t28467 - 19968: jis0212<<14 | 0x27<<7 | 0x2E,\n\t28470 - 19968: jis0212<<14 | 0x27<<7 | 0x2F,\n\t28472 - 19968: jis0208<<14 | 0x20<<7 | 0x11,\n\t28475 - 19968: jis0212<<14 | 0x27<<7 | 0x30,\n\t28476 - 19968: jis0212<<14 | 0x27<<7 | 0x31,\n\t28478 - 19968: jis0208<<14 | 0x3E<<7 | 0x00,\n\t28479 - 19968: jis0208<<14 | 0x3D<<7 | 0x58,\n\t28481 - 19968: jis0208<<14 | 0x3D<<7 | 0x52,\n\t28485 - 19968: jis0208<<14 | 0x13<<7 | 0x22,\n\t28495 - 19968: jis0212<<14 | 0x27<<7 | 0x33,\n\t28497 - 19968: jis0212<<14 | 0x27<<7 | 0x34,\n\t28498 - 19968: jis0212<<14 | 0x27<<7 | 0x35,\n\t28499 - 19968: jis0212<<14 | 0x27<<7 | 0x36,\n\t28500 - 19968: jis0208<<14 | 0x16<<7 | 0x48,\n\t28503 - 19968: jis0212<<14 | 0x27<<7 | 0x37,\n\t28504 - 19968: jis0208<<14 | 0x3E<<7 | 0x0E,\n\t28505 - 19968: jis0212<<14 | 0x27<<7 | 0x38,\n\t28506 - 19968: jis0212<<14 | 0x27<<7 | 0x39,\n\t28507 - 19968: jis0208<<14 | 0x3E<<7 | 0x09,\n\t28508 - 19968: jis0208<<14 | 0x1F<<7 | 0x57,\n\t28509 - 19968: jis0212<<14 | 0x27<<7 | 0x3A,\n\t28510 - 19968: jis0212<<14 | 0x27<<7 | 0x3B,\n\t28511 - 19968: jis0208<<14 | 0x12<<7 | 0x42,\n\t28513 - 19968: jis0212<<14 | 0x27<<7 | 0x3C,\n\t28514 - 19968: jis0212<<14 | 0x27<<7 | 0x3D,\n\t28516 - 19968: jis0208<<14 | 0x1C<<7 | 0x40,\n\t28518 - 19968: jis0208<<14 | 0x3E<<7 | 0x12,\n\t28520 - 19968: jis0212<<14 | 0x27<<7 | 0x3E,\n\t28524 - 19968: jis0212<<14 | 0x27<<7 | 0x3F,\n\t28525 - 19968: jis0208<<14 | 0x3E<<7 | 0x0B,\n\t28526 - 19968: jis0208<<14 | 0x23<<7 | 0x0B,\n\t28527 - 19968: jis0208<<14 | 0x3E<<7 | 0x08,\n\t28528 - 19968: jis0208<<14 | 0x23<<7 | 0x38,\n\t28532 - 19968: jis0208<<14 | 0x3E<<7 | 0x2B,\n\t28536 - 19968: jis0208<<14 | 0x3E<<7 | 0x05,\n\t28538 - 19968: jis0208<<14 | 0x3E<<7 | 0x04,\n\t28540 - 19968: jis0208<<14 | 0x3E<<7 | 0x0D,\n\t28541 - 19968: jis0212<<14 | 0x27<<7 | 0x40,\n\t28542 - 19968: jis0212<<14 | 0x27<<7 | 0x41,\n\t28544 - 19968: jis0208<<14 | 0x3E<<7 | 0x07,\n\t28545 - 19968: jis0208<<14 | 0x3E<<7 | 0x06,\n\t28546 - 19968: jis0208<<14 | 0x3E<<7 | 0x0C,\n\t28547 - 19968: jis0212<<14 | 0x27<<7 | 0x42,\n\t28548 - 19968: jis0208<<14 | 0x1F<<7 | 0x00,\n\t28550 - 19968: jis0208<<14 | 0x3E<<7 | 0x03,\n\t28551 - 19968: jis0212<<14 | 0x27<<7 | 0x43,\n\t28552 - 19968: jis0208<<14 | 0x59<<7 | 0x4D,\n\t28555 - 19968: jis0212<<14 | 0x27<<7 | 0x45,\n\t28556 - 19968: jis0212<<14 | 0x27<<7 | 0x46,\n\t28557 - 19968: jis0212<<14 | 0x27<<7 | 0x47,\n\t28558 - 19968: jis0208<<14 | 0x3E<<7 | 0x0F,\n\t28560 - 19968: jis0212<<14 | 0x27<<7 | 0x48,\n\t28561 - 19968: jis0208<<14 | 0x3E<<7 | 0x10,\n\t28562 - 19968: jis0212<<14 | 0x27<<7 | 0x49,\n\t28563 - 19968: jis0212<<14 | 0x27<<7 | 0x4A,\n\t28564 - 19968: jis0212<<14 | 0x27<<7 | 0x4B,\n\t28566 - 19968: jis0212<<14 | 0x27<<7 | 0x4C,\n\t28567 - 19968: jis0208<<14 | 0x13<<7 | 0x21,\n\t28570 - 19968: jis0212<<14 | 0x27<<7 | 0x4D,\n\t28575 - 19968: jis0212<<14 | 0x27<<7 | 0x4E,\n\t28576 - 19968: jis0212<<14 | 0x27<<7 | 0x4F,\n\t28577 - 19968: jis0208<<14 | 0x3E<<7 | 0x15,\n\t28579 - 19968: jis0208<<14 | 0x3E<<7 | 0x14,\n\t28580 - 19968: jis0208<<14 | 0x3E<<7 | 0x16,\n\t28581 - 19968: jis0212<<14 | 0x27<<7 | 0x50,\n\t28582 - 19968: jis0212<<14 | 0x27<<7 | 0x51,\n\t28583 - 19968: jis0212<<14 | 0x27<<7 | 0x52,\n\t28584 - 19968: jis0212<<14 | 0x27<<7 | 0x53,\n\t28586 - 19968: jis0208<<14 | 0x3E<<7 | 0x19,\n\t28590 - 19968: jis0212<<14 | 0x27<<7 | 0x54,\n\t28591 - 19968: jis0212<<14 | 0x27<<7 | 0x55,\n\t28592 - 19968: jis0212<<14 | 0x27<<7 | 0x56,\n\t28593 - 19968: jis0208<<14 | 0x24<<7 | 0x22,\n\t28595 - 19968: jis0208<<14 | 0x3E<<7 | 0x13,\n\t28597 - 19968: jis0208<<14 | 0x59<<7 | 0x4E,\n\t28598 - 19968: jis0212<<14 | 0x27<<7 | 0x58,\n\t28601 - 19968: jis0208<<14 | 0x3E<<7 | 0x17,\n\t28604 - 19968: jis0212<<14 | 0x27<<7 | 0x59,\n\t28608 - 19968: jis0208<<14 | 0x16<<7 | 0x42,\n\t28609 - 19968: jis0208<<14 | 0x21<<7 | 0x58,\n\t28610 - 19968: jis0208<<14 | 0x3E<<7 | 0x11,\n\t28611 - 19968: jis0208<<14 | 0x26<<7 | 0x1A,\n\t28613 - 19968: jis0212<<14 | 0x27<<7 | 0x5A,\n\t28614 - 19968: jis0208<<14 | 0x3E<<7 | 0x18,\n\t28615 - 19968: jis0212<<14 | 0x27<<7 | 0x5B,\n\t28616 - 19968: jis0212<<14 | 0x27<<7 | 0x5C,\n\t28618 - 19968: jis0212<<14 | 0x27<<7 | 0x5D,\n\t28628 - 19968: jis0208<<14 | 0x3E<<7 | 0x1D,\n\t28629 - 19968: jis0208<<14 | 0x3E<<7 | 0x1B,\n\t28632 - 19968: jis0208<<14 | 0x3E<<7 | 0x1E,\n\t28634 - 19968: jis0212<<14 | 0x28<<7 | 0x00,\n\t28635 - 19968: jis0208<<14 | 0x3E<<7 | 0x21,\n\t28638 - 19968: jis0212<<14 | 0x28<<7 | 0x01,\n\t28639 - 19968: jis0208<<14 | 0x3E<<7 | 0x1A,\n\t28640 - 19968: jis0208<<14 | 0x18<<7 | 0x49,\n\t28641 - 19968: jis0208<<14 | 0x26<<7 | 0x07,\n\t28644 - 19968: jis0208<<14 | 0x3D<<7 | 0x18,\n\t28648 - 19968: jis0212<<14 | 0x28<<7 | 0x02,\n\t28649 - 19968: jis0212<<14 | 0x28<<7 | 0x03,\n\t28651 - 19968: jis0208<<14 | 0x2C<<7 | 0x53,\n\t28652 - 19968: jis0208<<14 | 0x3E<<7 | 0x1C,\n\t28654 - 19968: jis0208<<14 | 0x3E<<7 | 0x20,\n\t28655 - 19968: jis0208<<14 | 0x21<<7 | 0x54,\n\t28656 - 19968: jis0212<<14 | 0x28<<7 | 0x04,\n\t28657 - 19968: jis0208<<14 | 0x3E<<7 | 0x1F,\n\t28659 - 19968: jis0208<<14 | 0x3E<<7 | 0x0A,\n\t28661 - 19968: jis0208<<14 | 0x59<<7 | 0x4F,\n\t28662 - 19968: jis0208<<14 | 0x4E<<7 | 0x48,\n\t28665 - 19968: jis0212<<14 | 0x28<<7 | 0x06,\n\t28666 - 19968: jis0208<<14 | 0x3E<<7 | 0x24,\n\t28668 - 19968: jis0212<<14 | 0x28<<7 | 0x07,\n\t28669 - 19968: jis0212<<14 | 0x28<<7 | 0x08,\n\t28670 - 19968: jis0208<<14 | 0x3E<<7 | 0x28,\n\t28672 - 19968: jis0212<<14 | 0x28<<7 | 0x09,\n\t28673 - 19968: jis0208<<14 | 0x3E<<7 | 0x26,\n\t28677 - 19968: jis0208<<14 | 0x59<<7 | 0x50,\n\t28678 - 19968: jis0212<<14 | 0x28<<7 | 0x0B,\n\t28679 - 19968: jis0208<<14 | 0x59<<7 | 0x51,\n\t28681 - 19968: jis0208<<14 | 0x3E<<7 | 0x22,\n\t28683 - 19968: jis0208<<14 | 0x3E<<7 | 0x23,\n\t28685 - 19968: jis0212<<14 | 0x28<<7 | 0x0D,\n\t28687 - 19968: jis0208<<14 | 0x3E<<7 | 0x27,\n\t28689 - 19968: jis0208<<14 | 0x3E<<7 | 0x25,\n\t28693 - 19968: jis0208<<14 | 0x28<<7 | 0x2D,\n\t28695 - 19968: jis0212<<14 | 0x28<<7 | 0x0E,\n\t28696 - 19968: jis0208<<14 | 0x3E<<7 | 0x2D,\n\t28698 - 19968: jis0208<<14 | 0x3E<<7 | 0x2A,\n\t28699 - 19968: jis0208<<14 | 0x3E<<7 | 0x29,\n\t28701 - 19968: jis0208<<14 | 0x3E<<7 | 0x2C,\n\t28702 - 19968: jis0208<<14 | 0x25<<7 | 0x33,\n\t28703 - 19968: jis0208<<14 | 0x3E<<7 | 0x2E,\n\t28704 - 19968: jis0212<<14 | 0x28<<7 | 0x0F,\n\t28707 - 19968: jis0212<<14 | 0x28<<7 | 0x10,\n\t28710 - 19968: jis0208<<14 | 0x22<<7 | 0x54,\n\t28711 - 19968: jis0208<<14 | 0x21<<7 | 0x4C,\n\t28712 - 19968: jis0208<<14 | 0x59<<7 | 0x52,\n\t28716 - 19968: jis0208<<14 | 0x1F<<7 | 0x04,\n\t28719 - 19968: jis0212<<14 | 0x28<<7 | 0x11,\n\t28720 - 19968: jis0208<<14 | 0x3E<<7 | 0x2F,\n\t28722 - 19968: jis0208<<14 | 0x3E<<7 | 0x31,\n\t28724 - 19968: jis0212<<14 | 0x28<<7 | 0x12,\n\t28727 - 19968: jis0212<<14 | 0x28<<7 | 0x13,\n\t28729 - 19968: jis0212<<14 | 0x28<<7 | 0x14,\n\t28732 - 19968: jis0212<<14 | 0x28<<7 | 0x15,\n\t28734 - 19968: jis0208<<14 | 0x3E<<7 | 0x30,\n\t28739 - 19968: jis0212<<14 | 0x28<<7 | 0x16,\n\t28740 - 19968: jis0212<<14 | 0x28<<7 | 0x17,\n\t28744 - 19968: jis0212<<14 | 0x28<<7 | 0x18,\n\t28745 - 19968: jis0212<<14 | 0x28<<7 | 0x19,\n\t28746 - 19968: jis0212<<14 | 0x28<<7 | 0x1A,\n\t28747 - 19968: jis0212<<14 | 0x28<<7 | 0x1B,\n\t28748 - 19968: jis0208<<14 | 0x3D<<7 | 0x54,\n\t28750 - 19968: jis0212<<14 | 0x28<<7 | 0x20,\n\t28753 - 19968: jis0208<<14 | 0x3E<<7 | 0x32,\n\t28756 - 19968: jis0212<<14 | 0x28<<7 | 0x1C,\n\t28757 - 19968: jis0212<<14 | 0x28<<7 | 0x1D,\n\t28760 - 19968: jis0208<<14 | 0x25<<7 | 0x46,\n\t28765 - 19968: jis0212<<14 | 0x28<<7 | 0x1E,\n\t28766 - 19968: jis0212<<14 | 0x28<<7 | 0x1F,\n\t28771 - 19968: jis0208<<14 | 0x3E<<7 | 0x33,\n\t28772 - 19968: jis0212<<14 | 0x28<<7 | 0x21,\n\t28773 - 19968: jis0212<<14 | 0x28<<7 | 0x22,\n\t28779 - 19968: jis0208<<14 | 0x11<<7 | 0x2F,\n\t28780 - 19968: jis0212<<14 | 0x28<<7 | 0x23,\n\t28782 - 19968: jis0212<<14 | 0x28<<7 | 0x24,\n\t28783 - 19968: jis0208<<14 | 0x24<<7 | 0x53,\n\t28784 - 19968: jis0208<<14 | 0x12<<7 | 0x04,\n\t28789 - 19968: jis0212<<14 | 0x28<<7 | 0x25,\n\t28790 - 19968: jis0212<<14 | 0x28<<7 | 0x26,\n\t28792 - 19968: jis0208<<14 | 0x14<<7 | 0x43,\n\t28796 - 19968: jis0208<<14 | 0x1B<<7 | 0x3D,\n\t28797 - 19968: jis0208<<14 | 0x19<<7 | 0x31,\n\t28798 - 19968: jis0212<<14 | 0x28<<7 | 0x27,\n\t28801 - 19968: jis0212<<14 | 0x28<<7 | 0x28,\n\t28805 - 19968: jis0208<<14 | 0x59<<7 | 0x53,\n\t28806 - 19968: jis0212<<14 | 0x28<<7 | 0x2A,\n\t28809 - 19968: jis0208<<14 | 0x2E<<7 | 0x06,\n\t28810 - 19968: jis0208<<14 | 0x1E<<7 | 0x45,\n\t28814 - 19968: jis0208<<14 | 0x10<<7 | 0x49,\n\t28818 - 19968: jis0208<<14 | 0x3E<<7 | 0x35,\n\t28820 - 19968: jis0212<<14 | 0x28<<7 | 0x2B,\n\t28821 - 19968: jis0212<<14 | 0x28<<7 | 0x2C,\n\t28822 - 19968: jis0212<<14 | 0x28<<7 | 0x2D,\n\t28823 - 19968: jis0212<<14 | 0x28<<7 | 0x2E,\n\t28824 - 19968: jis0212<<14 | 0x28<<7 | 0x2F,\n\t28825 - 19968: jis0208<<14 | 0x3E<<7 | 0x34,\n\t28827 - 19968: jis0212<<14 | 0x28<<7 | 0x30,\n\t28836 - 19968: jis0212<<14 | 0x28<<7 | 0x31,\n\t28843 - 19968: jis0208<<14 | 0x59<<7 | 0x54,\n\t28844 - 19968: jis0208<<14 | 0x3E<<7 | 0x38,\n\t28845 - 19968: jis0208<<14 | 0x22<<7 | 0x19,\n\t28846 - 19968: jis0208<<14 | 0x3E<<7 | 0x3B,\n\t28847 - 19968: jis0208<<14 | 0x3E<<7 | 0x36,\n\t28848 - 19968: jis0212<<14 | 0x28<<7 | 0x33,\n\t28849 - 19968: jis0212<<14 | 0x28<<7 | 0x34,\n\t28851 - 19968: jis0208<<14 | 0x3E<<7 | 0x3A,\n\t28852 - 19968: jis0212<<14 | 0x28<<7 | 0x35,\n\t28855 - 19968: jis0212<<14 | 0x28<<7 | 0x36,\n\t28856 - 19968: jis0208<<14 | 0x3E<<7 | 0x39,\n\t28857 - 19968: jis0208<<14 | 0x24<<7 | 0x1F,\n\t28858 - 19968: jis0208<<14 | 0x0F<<7 | 0x38,\n\t28859 - 19968: jis0208<<14 | 0x58<<7 | 0x06,\n\t28872 - 19968: jis0208<<14 | 0x2D<<7 | 0x54,\n\t28874 - 19968: jis0212<<14 | 0x28<<7 | 0x37,\n\t28875 - 19968: jis0208<<14 | 0x3E<<7 | 0x3D,\n\t28879 - 19968: jis0208<<14 | 0x10<<7 | 0x07,\n\t28881 - 19968: jis0212<<14 | 0x28<<7 | 0x38,\n\t28883 - 19968: jis0212<<14 | 0x28<<7 | 0x39,\n\t28884 - 19968: jis0212<<14 | 0x28<<7 | 0x3A,\n\t28885 - 19968: jis0212<<14 | 0x28<<7 | 0x3B,\n\t28886 - 19968: jis0212<<14 | 0x28<<7 | 0x3C,\n\t28888 - 19968: jis0212<<14 | 0x28<<7 | 0x3D,\n\t28889 - 19968: jis0208<<14 | 0x3E<<7 | 0x3F,\n\t28892 - 19968: jis0212<<14 | 0x28<<7 | 0x3E,\n\t28893 - 19968: jis0208<<14 | 0x3E<<7 | 0x3E,\n\t28895 - 19968: jis0208<<14 | 0x3E<<7 | 0x3C,\n\t28900 - 19968: jis0212<<14 | 0x28<<7 | 0x3F,\n\t28913 - 19968: jis0208<<14 | 0x3E<<7 | 0x37,\n\t28921 - 19968: jis0208<<14 | 0x2A<<7 | 0x02,\n\t28922 - 19968: jis0212<<14 | 0x28<<7 | 0x40,\n\t28925 - 19968: jis0208<<14 | 0x3E<<7 | 0x41,\n\t28931 - 19968: jis0212<<14 | 0x28<<7 | 0x41,\n\t28932 - 19968: jis0208<<14 | 0x59<<7 | 0x56,\n\t28933 - 19968: jis0212<<14 | 0x28<<7 | 0x43,\n\t28934 - 19968: jis0212<<14 | 0x28<<7 | 0x44,\n\t28935 - 19968: jis0212<<14 | 0x28<<7 | 0x45,\n\t28937 - 19968: jis0208<<14 | 0x3E<<7 | 0x40,\n\t28939 - 19968: jis0212<<14 | 0x28<<7 | 0x46,\n\t28940 - 19968: jis0212<<14 | 0x28<<7 | 0x47,\n\t28943 - 19968: jis0208<<14 | 0x59<<7 | 0x55,\n\t28948 - 19968: jis0208<<14 | 0x10<<7 | 0x4A,\n\t28953 - 19968: jis0208<<14 | 0x3E<<7 | 0x43,\n\t28954 - 19968: jis0208<<14 | 0x29<<7 | 0x11,\n\t28956 - 19968: jis0208<<14 | 0x3E<<7 | 0x42,\n\t28958 - 19968: jis0212<<14 | 0x28<<7 | 0x49,\n\t28960 - 19968: jis0212<<14 | 0x28<<7 | 0x4A,\n\t28961 - 19968: jis0208<<14 | 0x2B<<7 | 0x14,\n\t28966 - 19968: jis0208<<14 | 0x1D<<7 | 0x26,\n\t28971 - 19968: jis0212<<14 | 0x28<<7 | 0x4B,\n\t28973 - 19968: jis0212<<14 | 0x28<<7 | 0x4C,\n\t28975 - 19968: jis0212<<14 | 0x28<<7 | 0x4D,\n\t28976 - 19968: jis0212<<14 | 0x28<<7 | 0x4E,\n\t28977 - 19968: jis0212<<14 | 0x28<<7 | 0x4F,\n\t28982 - 19968: jis0208<<14 | 0x20<<7 | 0x12,\n\t28984 - 19968: jis0212<<14 | 0x28<<7 | 0x50,\n\t28988 - 19968: jis0208<<14 | 0x1D<<7 | 0x25,\n\t28993 - 19968: jis0212<<14 | 0x28<<7 | 0x51,\n\t28997 - 19968: jis0212<<14 | 0x28<<7 | 0x52,\n\t28998 - 19968: jis0208<<14 | 0x59<<7 | 0x58,\n\t28999 - 19968: jis0208<<14 | 0x59<<7 | 0x59,\n\t29001 - 19968: jis0208<<14 | 0x2D<<7 | 0x5A,\n\t29002 - 19968: jis0212<<14 | 0x28<<7 | 0x55,\n\t29003 - 19968: jis0212<<14 | 0x28<<7 | 0x56,\n\t29004 - 19968: jis0208<<14 | 0x3E<<7 | 0x49,\n\t29006 - 19968: jis0208<<14 | 0x1F<<7 | 0x58,\n\t29008 - 19968: jis0212<<14 | 0x28<<7 | 0x57,\n\t29010 - 19968: jis0212<<14 | 0x28<<7 | 0x58,\n\t29013 - 19968: jis0208<<14 | 0x3E<<7 | 0x45,\n\t29014 - 19968: jis0208<<14 | 0x3E<<7 | 0x4A,\n\t29015 - 19968: jis0212<<14 | 0x28<<7 | 0x59,\n\t29017 - 19968: jis0208<<14 | 0x10<<7 | 0x4B,\n\t29018 - 19968: jis0212<<14 | 0x28<<7 | 0x5A,\n\t29020 - 19968: jis0208<<14 | 0x59<<7 | 0x57,\n\t29022 - 19968: jis0212<<14 | 0x28<<7 | 0x5C,\n\t29024 - 19968: jis0212<<14 | 0x28<<7 | 0x5D,\n\t29026 - 19968: jis0208<<14 | 0x3E<<7 | 0x48,\n\t29028 - 19968: jis0208<<14 | 0x26<<7 | 0x40,\n\t29029 - 19968: jis0208<<14 | 0x3E<<7 | 0x44,\n\t29030 - 19968: jis0208<<14 | 0x3E<<7 | 0x47,\n\t29031 - 19968: jis0208<<14 | 0x1D<<7 | 0x27,\n\t29032 - 19968: jis0212<<14 | 0x29<<7 | 0x00,\n\t29033 - 19968: jis0208<<14 | 0x27<<7 | 0x30,\n\t29036 - 19968: jis0208<<14 | 0x3E<<7 | 0x4B,\n\t29038 - 19968: jis0208<<14 | 0x1B<<7 | 0x30,\n\t29049 - 19968: jis0212<<14 | 0x29<<7 | 0x01,\n\t29053 - 19968: jis0208<<14 | 0x1F<<7 | 0x59,\n\t29056 - 19968: jis0212<<14 | 0x29<<7 | 0x02,\n\t29060 - 19968: jis0208<<14 | 0x3E<<7 | 0x4E,\n\t29061 - 19968: jis0212<<14 | 0x29<<7 | 0x03,\n\t29063 - 19968: jis0212<<14 | 0x29<<7 | 0x04,\n\t29064 - 19968: jis0208<<14 | 0x3E<<7 | 0x46,\n\t29066 - 19968: jis0208<<14 | 0x16<<7 | 0x06,\n\t29068 - 19968: jis0212<<14 | 0x29<<7 | 0x05,\n\t29071 - 19968: jis0208<<14 | 0x3E<<7 | 0x4C,\n\t29074 - 19968: jis0212<<14 | 0x29<<7 | 0x06,\n\t29076 - 19968: jis0208<<14 | 0x2C<<7 | 0x2F,\n\t29077 - 19968: jis0208<<14 | 0x3E<<7 | 0x4F,\n\t29081 - 19968: jis0208<<14 | 0x53<<7 | 0x05,\n\t29082 - 19968: jis0212<<14 | 0x29<<7 | 0x07,\n\t29083 - 19968: jis0212<<14 | 0x29<<7 | 0x08,\n\t29087 - 19968: jis0208<<14 | 0x1C<<7 | 0x2E,\n\t29088 - 19968: jis0212<<14 | 0x29<<7 | 0x09,\n\t29090 - 19968: jis0212<<14 | 0x29<<7 | 0x0A,\n\t29096 - 19968: jis0208<<14 | 0x3E<<7 | 0x50,\n\t29100 - 19968: jis0208<<14 | 0x3E<<7 | 0x51,\n\t29103 - 19968: jis0212<<14 | 0x29<<7 | 0x0B,\n\t29104 - 19968: jis0212<<14 | 0x29<<7 | 0x0C,\n\t29105 - 19968: jis0208<<14 | 0x26<<7 | 0x0D,\n\t29106 - 19968: jis0212<<14 | 0x29<<7 | 0x0D,\n\t29107 - 19968: jis0212<<14 | 0x29<<7 | 0x0E,\n\t29113 - 19968: jis0208<<14 | 0x3E<<7 | 0x53,\n\t29114 - 19968: jis0212<<14 | 0x29<<7 | 0x0F,\n\t29118 - 19968: jis0208<<14 | 0x3E<<7 | 0x54,\n\t29119 - 19968: jis0212<<14 | 0x29<<7 | 0x10,\n\t29120 - 19968: jis0212<<14 | 0x29<<7 | 0x11,\n\t29121 - 19968: jis0208<<14 | 0x59<<7 | 0x5B,\n\t29123 - 19968: jis0208<<14 | 0x26<<7 | 0x12,\n\t29124 - 19968: jis0212<<14 | 0x29<<7 | 0x13,\n\t29128 - 19968: jis0208<<14 | 0x24<<7 | 0x54,\n\t29129 - 19968: jis0208<<14 | 0x3E<<7 | 0x56,\n\t29131 - 19968: jis0212<<14 | 0x29<<7 | 0x14,\n\t29132 - 19968: jis0212<<14 | 0x29<<7 | 0x15,\n\t29134 - 19968: jis0208<<14 | 0x3E<<7 | 0x58,\n\t29136 - 19968: jis0208<<14 | 0x2D<<7 | 0x34,\n\t29138 - 19968: jis0208<<14 | 0x3E<<7 | 0x55,\n\t29139 - 19968: jis0212<<14 | 0x29<<7 | 0x16,\n\t29140 - 19968: jis0208<<14 | 0x3E<<7 | 0x57,\n\t29141 - 19968: jis0208<<14 | 0x10<<7 | 0x4C,\n\t29142 - 19968: jis0212<<14 | 0x29<<7 | 0x17,\n\t29143 - 19968: jis0208<<14 | 0x3E<<7 | 0x52,\n\t29145 - 19968: jis0212<<14 | 0x29<<7 | 0x18,\n\t29146 - 19968: jis0212<<14 | 0x29<<7 | 0x19,\n\t29148 - 19968: jis0212<<14 | 0x29<<7 | 0x1A,\n\t29151 - 19968: jis0208<<14 | 0x32<<7 | 0x3A,\n\t29152 - 19968: jis0208<<14 | 0x3E<<7 | 0x59,\n\t29157 - 19968: jis0208<<14 | 0x20<<7 | 0x46,\n\t29158 - 19968: jis0208<<14 | 0x1A<<7 | 0x17,\n\t29159 - 19968: jis0208<<14 | 0x3E<<7 | 0x5B,\n\t29164 - 19968: jis0208<<14 | 0x3E<<7 | 0x5A,\n\t29165 - 19968: jis0208<<14 | 0x1E<<7 | 0x03,\n\t29166 - 19968: jis0208<<14 | 0x31<<7 | 0x38,\n\t29173 - 19968: jis0208<<14 | 0x3E<<7 | 0x5C,\n\t29176 - 19968: jis0212<<14 | 0x29<<7 | 0x1B,\n\t29177 - 19968: jis0208<<14 | 0x3F<<7 | 0x00,\n\t29179 - 19968: jis0208<<14 | 0x3E<<7 | 0x4D,\n\t29180 - 19968: jis0208<<14 | 0x3E<<7 | 0x5D,\n\t29182 - 19968: jis0208<<14 | 0x59<<7 | 0x5C,\n\t29183 - 19968: jis0208<<14 | 0x3F<<7 | 0x01,\n\t29184 - 19968: jis0212<<14 | 0x29<<7 | 0x1D,\n\t29190 - 19968: jis0208<<14 | 0x26<<7 | 0x59,\n\t29191 - 19968: jis0212<<14 | 0x29<<7 | 0x1E,\n\t29192 - 19968: jis0212<<14 | 0x29<<7 | 0x1F,\n\t29193 - 19968: jis0212<<14 | 0x29<<7 | 0x20,\n\t29197 - 19968: jis0208<<14 | 0x3F<<7 | 0x02,\n\t29200 - 19968: jis0208<<14 | 0x3F<<7 | 0x03,\n\t29203 - 19968: jis0212<<14 | 0x29<<7 | 0x21,\n\t29207 - 19968: jis0212<<14 | 0x29<<7 | 0x22,\n\t29210 - 19968: jis0212<<14 | 0x29<<7 | 0x23,\n\t29211 - 19968: jis0208<<14 | 0x3F<<7 | 0x04,\n\t29213 - 19968: jis0212<<14 | 0x29<<7 | 0x24,\n\t29215 - 19968: jis0212<<14 | 0x29<<7 | 0x25,\n\t29220 - 19968: jis0212<<14 | 0x29<<7 | 0x26,\n\t29224 - 19968: jis0208<<14 | 0x3F<<7 | 0x05,\n\t29226 - 19968: jis0208<<14 | 0x23<<7 | 0x3D,\n\t29227 - 19968: jis0212<<14 | 0x29<<7 | 0x27,\n\t29228 - 19968: jis0208<<14 | 0x3F<<7 | 0x07,\n\t29229 - 19968: jis0208<<14 | 0x3F<<7 | 0x06,\n\t29231 - 19968: jis0212<<14 | 0x29<<7 | 0x28,\n\t29232 - 19968: jis0208<<14 | 0x3F<<7 | 0x08,\n\t29234 - 19968: jis0208<<14 | 0x3F<<7 | 0x09,\n\t29236 - 19968: jis0212<<14 | 0x29<<7 | 0x29,\n\t29237 - 19968: jis0208<<14 | 0x1B<<7 | 0x3E,\n\t29238 - 19968: jis0208<<14 | 0x28<<7 | 0x42,\n\t29240 - 19968: jis0212<<14 | 0x29<<7 | 0x2A,\n\t29241 - 19968: jis0212<<14 | 0x29<<7 | 0x2B,\n\t29242 - 19968: jis0208<<14 | 0x2B<<7 | 0x4B,\n\t29243 - 19968: jis0208<<14 | 0x3F<<7 | 0x0A,\n\t29244 - 19968: jis0208<<14 | 0x3F<<7 | 0x0B,\n\t29245 - 19968: jis0208<<14 | 0x20<<7 | 0x35,\n\t29246 - 19968: jis0208<<14 | 0x1B<<7 | 0x03,\n\t29247 - 19968: jis0208<<14 | 0x3F<<7 | 0x0C,\n\t29248 - 19968: jis0208<<14 | 0x3F<<7 | 0x0D,\n\t29249 - 19968: jis0212<<14 | 0x29<<7 | 0x2C,\n\t29250 - 19968: jis0212<<14 | 0x29<<7 | 0x2D,\n\t29251 - 19968: jis0212<<14 | 0x29<<7 | 0x2E,\n\t29253 - 19968: jis0212<<14 | 0x29<<7 | 0x2F,\n\t29254 - 19968: jis0208<<14 | 0x3F<<7 | 0x0E,\n\t29255 - 19968: jis0208<<14 | 0x29<<7 | 0x31,\n\t29256 - 19968: jis0208<<14 | 0x27<<7 | 0x26,\n\t29259 - 19968: jis0208<<14 | 0x3F<<7 | 0x0F,\n\t29260 - 19968: jis0208<<14 | 0x26<<7 | 0x36,\n\t29262 - 19968: jis0212<<14 | 0x29<<7 | 0x30,\n\t29263 - 19968: jis0212<<14 | 0x29<<7 | 0x31,\n\t29264 - 19968: jis0212<<14 | 0x29<<7 | 0x32,\n\t29266 - 19968: jis0208<<14 | 0x23<<7 | 0x0C,\n\t29267 - 19968: jis0212<<14 | 0x29<<7 | 0x33,\n\t29269 - 19968: jis0212<<14 | 0x29<<7 | 0x34,\n\t29270 - 19968: jis0212<<14 | 0x29<<7 | 0x35,\n\t29272 - 19968: jis0208<<14 | 0x3F<<7 | 0x10,\n\t29273 - 19968: jis0208<<14 | 0x11<<7 | 0x46,\n\t29274 - 19968: jis0212<<14 | 0x29<<7 | 0x36,\n\t29275 - 19968: jis0208<<14 | 0x14<<7 | 0x4C,\n\t29276 - 19968: jis0212<<14 | 0x29<<7 | 0x37,\n\t29277 - 19968: jis0208<<14 | 0x2B<<7 | 0x25,\n\t29278 - 19968: jis0212<<14 | 0x29<<7 | 0x38,\n\t29279 - 19968: jis0208<<14 | 0x2B<<7 | 0x15,\n\t29280 - 19968: jis0212<<14 | 0x29<<7 | 0x39,\n\t29281 - 19968: jis0208<<14 | 0x11<<7 | 0x13,\n\t29282 - 19968: jis0208<<14 | 0x2E<<7 | 0x13,\n\t29283 - 19968: jis0212<<14 | 0x29<<7 | 0x3A,\n\t29287 - 19968: jis0208<<14 | 0x2A<<7 | 0x31,\n\t29288 - 19968: jis0212<<14 | 0x29<<7 | 0x3B,\n\t29289 - 19968: jis0208<<14 | 0x29<<7 | 0x09,\n\t29291 - 19968: jis0212<<14 | 0x29<<7 | 0x3C,\n\t29294 - 19968: jis0212<<14 | 0x29<<7 | 0x3D,\n\t29295 - 19968: jis0212<<14 | 0x29<<7 | 0x3E,\n\t29297 - 19968: jis0212<<14 | 0x29<<7 | 0x3F,\n\t29298 - 19968: jis0208<<14 | 0x1F<<7 | 0x16,\n\t29300 - 19968: jis0208<<14 | 0x3F<<7 | 0x11,\n\t29303 - 19968: jis0212<<14 | 0x29<<7 | 0x40,\n\t29304 - 19968: jis0212<<14 | 0x29<<7 | 0x41,\n\t29305 - 19968: jis0208<<14 | 0x25<<7 | 0x22,\n\t29307 - 19968: jis0212<<14 | 0x29<<7 | 0x42,\n\t29308 - 19968: jis0212<<14 | 0x29<<7 | 0x43,\n\t29309 - 19968: jis0208<<14 | 0x17<<7 | 0x02,\n\t29310 - 19968: jis0208<<14 | 0x3F<<7 | 0x12,\n\t29311 - 19968: jis0212<<14 | 0x29<<7 | 0x44,\n\t29312 - 19968: jis0208<<14 | 0x19<<7 | 0x33,\n\t29313 - 19968: jis0208<<14 | 0x3F<<7 | 0x14,\n\t29314 - 19968: jis0208<<14 | 0x3F<<7 | 0x13,\n\t29316 - 19968: jis0212<<14 | 0x29<<7 | 0x45,\n\t29319 - 19968: jis0208<<14 | 0x3F<<7 | 0x15,\n\t29321 - 19968: jis0212<<14 | 0x29<<7 | 0x46,\n\t29325 - 19968: jis0212<<14 | 0x29<<7 | 0x47,\n\t29326 - 19968: jis0212<<14 | 0x29<<7 | 0x48,\n\t29330 - 19968: jis0208<<14 | 0x3F<<7 | 0x16,\n\t29331 - 19968: jis0212<<14 | 0x29<<7 | 0x49,\n\t29334 - 19968: jis0208<<14 | 0x3F<<7 | 0x17,\n\t29339 - 19968: jis0212<<14 | 0x29<<7 | 0x4A,\n\t29344 - 19968: jis0208<<14 | 0x14<<7 | 0x1D,\n\t29346 - 19968: jis0208<<14 | 0x3F<<7 | 0x18,\n\t29351 - 19968: jis0208<<14 | 0x3F<<7 | 0x19,\n\t29352 - 19968: jis0212<<14 | 0x29<<7 | 0x4B,\n\t29356 - 19968: jis0208<<14 | 0x17<<7 | 0x03,\n\t29357 - 19968: jis0212<<14 | 0x29<<7 | 0x4C,\n\t29358 - 19968: jis0212<<14 | 0x29<<7 | 0x4D,\n\t29359 - 19968: jis0208<<14 | 0x27<<7 | 0x27,\n\t29361 - 19968: jis0208<<14 | 0x59<<7 | 0x5D,\n\t29362 - 19968: jis0208<<14 | 0x3F<<7 | 0x1B,\n\t29364 - 19968: jis0212<<14 | 0x29<<7 | 0x4F,\n\t29366 - 19968: jis0208<<14 | 0x1D<<7 | 0x54,\n\t29369 - 19968: jis0208<<14 | 0x3F<<7 | 0x1A,\n\t29374 - 19968: jis0208<<14 | 0x5A<<7 | 0x00,\n\t29377 - 19968: jis0212<<14 | 0x29<<7 | 0x51,\n\t29378 - 19968: jis0208<<14 | 0x15<<7 | 0x17,\n\t29379 - 19968: jis0208<<14 | 0x3F<<7 | 0x1C,\n\t29380 - 19968: jis0208<<14 | 0x3F<<7 | 0x1E,\n\t29382 - 19968: jis0208<<14 | 0x3F<<7 | 0x1D,\n\t29383 - 19968: jis0212<<14 | 0x29<<7 | 0x52,\n\t29385 - 19968: jis0212<<14 | 0x29<<7 | 0x53,\n\t29388 - 19968: jis0212<<14 | 0x29<<7 | 0x54,\n\t29390 - 19968: jis0208<<14 | 0x3F<<7 | 0x1F,\n\t29392 - 19968: jis0208<<14 | 0x17<<7 | 0x30,\n\t29394 - 19968: jis0208<<14 | 0x3F<<7 | 0x20,\n\t29397 - 19968: jis0212<<14 | 0x29<<7 | 0x55,\n\t29398 - 19968: jis0212<<14 | 0x29<<7 | 0x56,\n\t29399 - 19968: jis0208<<14 | 0x15<<7 | 0x48,\n\t29400 - 19968: jis0212<<14 | 0x29<<7 | 0x57,\n\t29401 - 19968: jis0208<<14 | 0x20<<7 | 0x1F,\n\t29403 - 19968: jis0208<<14 | 0x18<<7 | 0x5C,\n\t29407 - 19968: jis0212<<14 | 0x29<<7 | 0x58,\n\t29408 - 19968: jis0208<<14 | 0x3F<<7 | 0x22,\n\t29409 - 19968: jis0208<<14 | 0x3F<<7 | 0x23,\n\t29410 - 19968: jis0208<<14 | 0x3F<<7 | 0x21,\n\t29413 - 19968: jis0212<<14 | 0x29<<7 | 0x59,\n\t29417 - 19968: jis0208<<14 | 0x1B<<7 | 0x4C,\n\t29420 - 19968: jis0208<<14 | 0x25<<7 | 0x27,\n\t29421 - 19968: jis0208<<14 | 0x15<<7 | 0x18,\n\t29427 - 19968: jis0212<<14 | 0x29<<7 | 0x5A,\n\t29428 - 19968: jis0212<<14 | 0x29<<7 | 0x5B,\n\t29431 - 19968: jis0208<<14 | 0x3F<<7 | 0x25,\n\t29432 - 19968: jis0208<<14 | 0x22<<7 | 0x0B,\n\t29433 - 19968: jis0208<<14 | 0x3F<<7 | 0x24,\n\t29434 - 19968: jis0212<<14 | 0x29<<7 | 0x5C,\n\t29435 - 19968: jis0212<<14 | 0x29<<7 | 0x5D,\n\t29436 - 19968: jis0208<<14 | 0x2E<<7 | 0x14,\n\t29437 - 19968: jis0208<<14 | 0x26<<7 | 0x41,\n\t29438 - 19968: jis0212<<14 | 0x2A<<7 | 0x00,\n\t29442 - 19968: jis0212<<14 | 0x2A<<7 | 0x01,\n\t29444 - 19968: jis0212<<14 | 0x2A<<7 | 0x02,\n\t29445 - 19968: jis0212<<14 | 0x2A<<7 | 0x03,\n\t29447 - 19968: jis0212<<14 | 0x2A<<7 | 0x04,\n\t29450 - 19968: jis0208<<14 | 0x3F<<7 | 0x28,\n\t29451 - 19968: jis0212<<14 | 0x2A<<7 | 0x05,\n\t29453 - 19968: jis0212<<14 | 0x2A<<7 | 0x06,\n\t29458 - 19968: jis0212<<14 | 0x2A<<7 | 0x07,\n\t29459 - 19968: jis0212<<14 | 0x2A<<7 | 0x08,\n\t29462 - 19968: jis0208<<14 | 0x3F<<7 | 0x2A,\n\t29463 - 19968: jis0208<<14 | 0x3F<<7 | 0x27,\n\t29464 - 19968: jis0212<<14 | 0x2A<<7 | 0x09,\n\t29465 - 19968: jis0212<<14 | 0x2A<<7 | 0x0A,\n\t29467 - 19968: jis0208<<14 | 0x2B<<7 | 0x33,\n\t29468 - 19968: jis0208<<14 | 0x3F<<7 | 0x29,\n\t29469 - 19968: jis0208<<14 | 0x3F<<7 | 0x2B,\n\t29470 - 19968: jis0212<<14 | 0x2A<<7 | 0x0B,\n\t29471 - 19968: jis0208<<14 | 0x2D<<7 | 0x23,\n\t29474 - 19968: jis0212<<14 | 0x2A<<7 | 0x0C,\n\t29476 - 19968: jis0208<<14 | 0x5A<<7 | 0x01,\n\t29477 - 19968: jis0208<<14 | 0x3F<<7 | 0x2F,\n\t29479 - 19968: jis0212<<14 | 0x2A<<7 | 0x0E,\n\t29480 - 19968: jis0212<<14 | 0x2A<<7 | 0x0F,\n\t29481 - 19968: jis0208<<14 | 0x3F<<7 | 0x2E,\n\t29482 - 19968: jis0208<<14 | 0x22<<7 | 0x55,\n\t29483 - 19968: jis0208<<14 | 0x26<<7 | 0x0C,\n\t29484 - 19968: jis0212<<14 | 0x2A<<7 | 0x10,\n\t29486 - 19968: jis0208<<14 | 0x17<<7 | 0x04,\n\t29487 - 19968: jis0208<<14 | 0x3F<<7 | 0x2D,\n\t29489 - 19968: jis0212<<14 | 0x2A<<7 | 0x11,\n\t29490 - 19968: jis0212<<14 | 0x2A<<7 | 0x12,\n\t29492 - 19968: jis0208<<14 | 0x3F<<7 | 0x2C,\n\t29493 - 19968: jis0212<<14 | 0x2A<<7 | 0x13,\n\t29494 - 19968: jis0208<<14 | 0x2C<<7 | 0x10,\n\t29495 - 19968: jis0208<<14 | 0x2C<<7 | 0x11,\n\t29498 - 19968: jis0212<<14 | 0x2A<<7 | 0x14,\n\t29499 - 19968: jis0212<<14 | 0x2A<<7 | 0x15,\n\t29501 - 19968: jis0212<<14 | 0x2A<<7 | 0x16,\n\t29502 - 19968: jis0208<<14 | 0x3F<<7 | 0x30,\n\t29503 - 19968: jis0208<<14 | 0x10<<7 | 0x4D,\n\t29507 - 19968: jis0212<<14 | 0x2A<<7 | 0x17,\n\t29508 - 19968: jis0208<<14 | 0x18<<7 | 0x55,\n\t29509 - 19968: jis0208<<14 | 0x1A<<7 | 0x41,\n\t29517 - 19968: jis0212<<14 | 0x2A<<7 | 0x18,\n\t29518 - 19968: jis0208<<14 | 0x3F<<7 | 0x31,\n\t29519 - 19968: jis0208<<14 | 0x3F<<7 | 0x32,\n\t29520 - 19968: jis0212<<14 | 0x2A<<7 | 0x19,\n\t29522 - 19968: jis0212<<14 | 0x2A<<7 | 0x1A,\n\t29526 - 19968: jis0212<<14 | 0x2A<<7 | 0x1B,\n\t29527 - 19968: jis0208<<14 | 0x3F<<7 | 0x34,\n\t29528 - 19968: jis0212<<14 | 0x2A<<7 | 0x1C,\n\t29533 - 19968: jis0212<<14 | 0x2A<<7 | 0x1D,\n\t29534 - 19968: jis0212<<14 | 0x2A<<7 | 0x1E,\n\t29535 - 19968: jis0212<<14 | 0x2A<<7 | 0x1F,\n\t29536 - 19968: jis0212<<14 | 0x2A<<7 | 0x20,\n\t29539 - 19968: jis0208<<14 | 0x1C<<7 | 0x22,\n\t29542 - 19968: jis0212<<14 | 0x2A<<7 | 0x21,\n\t29543 - 19968: jis0212<<14 | 0x2A<<7 | 0x22,\n\t29544 - 19968: jis0208<<14 | 0x3F<<7 | 0x36,\n\t29545 - 19968: jis0212<<14 | 0x2A<<7 | 0x23,\n\t29546 - 19968: jis0208<<14 | 0x3F<<7 | 0x35,\n\t29547 - 19968: jis0212<<14 | 0x2A<<7 | 0x24,\n\t29548 - 19968: jis0212<<14 | 0x2A<<7 | 0x25,\n\t29550 - 19968: jis0212<<14 | 0x2A<<7 | 0x26,\n\t29551 - 19968: jis0212<<14 | 0x2A<<7 | 0x27,\n\t29552 - 19968: jis0208<<14 | 0x3F<<7 | 0x37,\n\t29553 - 19968: jis0212<<14 | 0x2A<<7 | 0x28,\n\t29554 - 19968: jis0208<<14 | 0x12<<7 | 0x2C,\n\t29557 - 19968: jis0208<<14 | 0x3F<<7 | 0x39,\n\t29559 - 19968: jis0208<<14 | 0x5A<<7 | 0x03,\n\t29560 - 19968: jis0208<<14 | 0x3F<<7 | 0x38,\n\t29561 - 19968: jis0212<<14 | 0x2A<<7 | 0x2A,\n\t29562 - 19968: jis0208<<14 | 0x3F<<7 | 0x3B,\n\t29563 - 19968: jis0208<<14 | 0x3F<<7 | 0x3A,\n\t29564 - 19968: jis0212<<14 | 0x2A<<7 | 0x2B,\n\t29568 - 19968: jis0212<<14 | 0x2A<<7 | 0x2C,\n\t29569 - 19968: jis0212<<14 | 0x2A<<7 | 0x2D,\n\t29571 - 19968: jis0212<<14 | 0x2A<<7 | 0x2E,\n\t29572 - 19968: jis0208<<14 | 0x17<<7 | 0x1B,\n\t29573 - 19968: jis0212<<14 | 0x2A<<7 | 0x2F,\n\t29574 - 19968: jis0212<<14 | 0x2A<<7 | 0x30,\n\t29575 - 19968: jis0208<<14 | 0x2D<<7 | 0x07,\n\t29577 - 19968: jis0208<<14 | 0x15<<7 | 0x2B,\n\t29579 - 19968: jis0208<<14 | 0x11<<7 | 0x05,\n\t29582 - 19968: jis0212<<14 | 0x2A<<7 | 0x31,\n\t29584 - 19968: jis0212<<14 | 0x2A<<7 | 0x32,\n\t29587 - 19968: jis0212<<14 | 0x2A<<7 | 0x33,\n\t29589 - 19968: jis0212<<14 | 0x2A<<7 | 0x34,\n\t29590 - 19968: jis0208<<14 | 0x15<<7 | 0x49,\n\t29591 - 19968: jis0212<<14 | 0x2A<<7 | 0x35,\n\t29592 - 19968: jis0212<<14 | 0x2A<<7 | 0x36,\n\t29596 - 19968: jis0212<<14 | 0x2A<<7 | 0x37,\n\t29598 - 19968: jis0212<<14 | 0x2A<<7 | 0x38,\n\t29599 - 19968: jis0212<<14 | 0x2A<<7 | 0x39,\n\t29600 - 19968: jis0212<<14 | 0x2A<<7 | 0x3A,\n\t29602 - 19968: jis0212<<14 | 0x2A<<7 | 0x3B,\n\t29605 - 19968: jis0212<<14 | 0x2A<<7 | 0x3C,\n\t29606 - 19968: jis0212<<14 | 0x2A<<7 | 0x3D,\n\t29609 - 19968: jis0208<<14 | 0x13<<7 | 0x40,\n\t29610 - 19968: jis0212<<14 | 0x2A<<7 | 0x3E,\n\t29611 - 19968: jis0212<<14 | 0x2A<<7 | 0x3F,\n\t29613 - 19968: jis0212<<14 | 0x2A<<7 | 0x40,\n\t29618 - 19968: jis0208<<14 | 0x2D<<7 | 0x47,\n\t29619 - 19968: jis0208<<14 | 0x3F<<7 | 0x3D,\n\t29621 - 19968: jis0212<<14 | 0x2A<<7 | 0x41,\n\t29623 - 19968: jis0212<<14 | 0x2A<<7 | 0x42,\n\t29625 - 19968: jis0212<<14 | 0x2A<<7 | 0x43,\n\t29627 - 19968: jis0208<<14 | 0x3F<<7 | 0x3F,\n\t29628 - 19968: jis0212<<14 | 0x2A<<7 | 0x44,\n\t29629 - 19968: jis0208<<14 | 0x5A<<7 | 0x04,\n\t29631 - 19968: jis0212<<14 | 0x2A<<7 | 0x46,\n\t29632 - 19968: jis0208<<14 | 0x3F<<7 | 0x40,\n\t29634 - 19968: jis0208<<14 | 0x11<<7 | 0x30,\n\t29637 - 19968: jis0212<<14 | 0x2A<<7 | 0x47,\n\t29638 - 19968: jis0212<<14 | 0x2A<<7 | 0x48,\n\t29640 - 19968: jis0208<<14 | 0x3F<<7 | 0x3C,\n\t29641 - 19968: jis0208<<14 | 0x5A<<7 | 0x05,\n\t29642 - 19968: jis0208<<14 | 0x1A<<7 | 0x18,\n\t29643 - 19968: jis0212<<14 | 0x2A<<7 | 0x4A,\n\t29644 - 19968: jis0212<<14 | 0x2A<<7 | 0x4B,\n\t29645 - 19968: jis0208<<14 | 0x23<<7 | 0x20,\n\t29646 - 19968: jis0208<<14 | 0x3F<<7 | 0x3E,\n\t29647 - 19968: jis0212<<14 | 0x2A<<7 | 0x4C,\n\t29650 - 19968: jis0208<<14 | 0x5A<<7 | 0x08,\n\t29651 - 19968: jis0212<<14 | 0x2A<<7 | 0x4E,\n\t29654 - 19968: jis0208<<14 | 0x5A<<7 | 0x06,\n\t29657 - 19968: jis0212<<14 | 0x2A<<7 | 0x50,\n\t29661 - 19968: jis0212<<14 | 0x2A<<7 | 0x51,\n\t29662 - 19968: jis0208<<14 | 0x3F<<7 | 0x43,\n\t29664 - 19968: jis0208<<14 | 0x1B<<7 | 0x4D,\n\t29665 - 19968: jis0212<<14 | 0x2A<<7 | 0x52,\n\t29667 - 19968: jis0208<<14 | 0x5A<<7 | 0x07,\n\t29669 - 19968: jis0208<<14 | 0x3F<<7 | 0x41,\n\t29670 - 19968: jis0212<<14 | 0x2A<<7 | 0x54,\n\t29671 - 19968: jis0212<<14 | 0x2A<<7 | 0x55,\n\t29673 - 19968: jis0212<<14 | 0x2A<<7 | 0x56,\n\t29674 - 19968: jis0208<<14 | 0x16<<7 | 0x1D,\n\t29677 - 19968: jis0208<<14 | 0x27<<7 | 0x28,\n\t29678 - 19968: jis0208<<14 | 0x3F<<7 | 0x42,\n\t29681 - 19968: jis0208<<14 | 0x3F<<7 | 0x5D,\n\t29684 - 19968: jis0212<<14 | 0x2A<<7 | 0x57,\n\t29685 - 19968: jis0208<<14 | 0x5A<<7 | 0x0A,\n\t29687 - 19968: jis0212<<14 | 0x2A<<7 | 0x59,\n\t29688 - 19968: jis0208<<14 | 0x3F<<7 | 0x48,\n\t29689 - 19968: jis0212<<14 | 0x2A<<7 | 0x5A,\n\t29690 - 19968: jis0212<<14 | 0x2A<<7 | 0x5B,\n\t29691 - 19968: jis0212<<14 | 0x2A<<7 | 0x5C,\n\t29693 - 19968: jis0212<<14 | 0x2A<<7 | 0x5D,\n\t29694 - 19968: jis0208<<14 | 0x17<<7 | 0x1C,\n\t29695 - 19968: jis0212<<14 | 0x2B<<7 | 0x00,\n\t29696 - 19968: jis0212<<14 | 0x2B<<7 | 0x01,\n\t29697 - 19968: jis0212<<14 | 0x2B<<7 | 0x02,\n\t29699 - 19968: jis0208<<14 | 0x14<<7 | 0x44,\n\t29700 - 19968: jis0212<<14 | 0x2B<<7 | 0x03,\n\t29701 - 19968: jis0208<<14 | 0x3F<<7 | 0x45,\n\t29702 - 19968: jis0208<<14 | 0x2C<<7 | 0x5C,\n\t29703 - 19968: jis0208<<14 | 0x5A<<7 | 0x09,\n\t29705 - 19968: jis0208<<14 | 0x2D<<7 | 0x0F,\n\t29706 - 19968: jis0212<<14 | 0x2B<<7 | 0x05,\n\t29713 - 19968: jis0212<<14 | 0x2B<<7 | 0x06,\n\t29722 - 19968: jis0212<<14 | 0x2B<<7 | 0x07,\n\t29723 - 19968: jis0212<<14 | 0x2B<<7 | 0x08,\n\t29730 - 19968: jis0208<<14 | 0x21<<7 | 0x55,\n\t29732 - 19968: jis0212<<14 | 0x2B<<7 | 0x09,\n\t29733 - 19968: jis0208<<14 | 0x3F<<7 | 0x47,\n\t29734 - 19968: jis0208<<14 | 0x5A<<7 | 0x0B,\n\t29736 - 19968: jis0212<<14 | 0x2B<<7 | 0x0B,\n\t29737 - 19968: jis0208<<14 | 0x5A<<7 | 0x0D,\n\t29738 - 19968: jis0208<<14 | 0x5A<<7 | 0x0C,\n\t29739 - 19968: jis0212<<14 | 0x2B<<7 | 0x0E,\n\t29740 - 19968: jis0212<<14 | 0x2B<<7 | 0x0F,\n\t29741 - 19968: jis0212<<14 | 0x2B<<7 | 0x10,\n\t29742 - 19968: jis0208<<14 | 0x5A<<7 | 0x0E,\n\t29743 - 19968: jis0212<<14 | 0x2B<<7 | 0x12,\n\t29744 - 19968: jis0212<<14 | 0x2B<<7 | 0x13,\n\t29745 - 19968: jis0212<<14 | 0x2B<<7 | 0x14,\n\t29746 - 19968: jis0208<<14 | 0x3F<<7 | 0x49,\n\t29747 - 19968: jis0208<<14 | 0x2D<<7 | 0x35,\n\t29748 - 19968: jis0208<<14 | 0x15<<7 | 0x36,\n\t29749 - 19968: jis0208<<14 | 0x27<<7 | 0x5B,\n\t29750 - 19968: jis0208<<14 | 0x26<<7 | 0x29,\n\t29753 - 19968: jis0212<<14 | 0x2B<<7 | 0x15,\n\t29754 - 19968: jis0208<<14 | 0x3F<<7 | 0x4A,\n\t29759 - 19968: jis0208<<14 | 0x3F<<7 | 0x4C,\n\t29760 - 19968: jis0212<<14 | 0x2B<<7 | 0x16,\n\t29761 - 19968: jis0208<<14 | 0x3F<<7 | 0x4F,\n\t29763 - 19968: jis0212<<14 | 0x2B<<7 | 0x17,\n\t29764 - 19968: jis0212<<14 | 0x2B<<7 | 0x18,\n\t29766 - 19968: jis0212<<14 | 0x2B<<7 | 0x19,\n\t29767 - 19968: jis0212<<14 | 0x2B<<7 | 0x1A,\n\t29771 - 19968: jis0212<<14 | 0x2B<<7 | 0x1B,\n\t29773 - 19968: jis0212<<14 | 0x2B<<7 | 0x1C,\n\t29777 - 19968: jis0212<<14 | 0x2B<<7 | 0x1D,\n\t29778 - 19968: jis0212<<14 | 0x2B<<7 | 0x1E,\n\t29781 - 19968: jis0208<<14 | 0x3F<<7 | 0x4B,\n\t29783 - 19968: jis0212<<14 | 0x2B<<7 | 0x1F,\n\t29785 - 19968: jis0208<<14 | 0x3F<<7 | 0x4E,\n\t29786 - 19968: jis0208<<14 | 0x17<<7 | 0x49,\n\t29787 - 19968: jis0208<<14 | 0x10<<7 | 0x2C,\n\t29788 - 19968: jis0208<<14 | 0x3F<<7 | 0x50,\n\t29789 - 19968: jis0212<<14 | 0x2B<<7 | 0x20,\n\t29790 - 19968: jis0208<<14 | 0x1E<<7 | 0x4F,\n\t29791 - 19968: jis0208<<14 | 0x3F<<7 | 0x4D,\n\t29792 - 19968: jis0208<<14 | 0x2D<<7 | 0x3B,\n\t29794 - 19968: jis0208<<14 | 0x5A<<7 | 0x0F,\n\t29795 - 19968: jis0208<<14 | 0x3F<<7 | 0x53,\n\t29796 - 19968: jis0208<<14 | 0x53<<7 | 0x03,\n\t29798 - 19968: jis0212<<14 | 0x2B<<7 | 0x22,\n\t29799 - 19968: jis0212<<14 | 0x2B<<7 | 0x23,\n\t29800 - 19968: jis0212<<14 | 0x2B<<7 | 0x24,\n\t29801 - 19968: jis0208<<14 | 0x3F<<7 | 0x51,\n\t29802 - 19968: jis0208<<14 | 0x3F<<7 | 0x54,\n\t29803 - 19968: jis0212<<14 | 0x2B<<7 | 0x25,\n\t29805 - 19968: jis0212<<14 | 0x2B<<7 | 0x26,\n\t29806 - 19968: jis0212<<14 | 0x2B<<7 | 0x27,\n\t29807 - 19968: jis0208<<14 | 0x3F<<7 | 0x46,\n\t29808 - 19968: jis0208<<14 | 0x3F<<7 | 0x52,\n\t29809 - 19968: jis0212<<14 | 0x2B<<7 | 0x28,\n\t29810 - 19968: jis0212<<14 | 0x2B<<7 | 0x29,\n\t29811 - 19968: jis0208<<14 | 0x19<<7 | 0x1B,\n\t29814 - 19968: jis0208<<14 | 0x3F<<7 | 0x55,\n\t29822 - 19968: jis0208<<14 | 0x3F<<7 | 0x56,\n\t29824 - 19968: jis0212<<14 | 0x2B<<7 | 0x2A,\n\t29825 - 19968: jis0212<<14 | 0x2B<<7 | 0x2B,\n\t29827 - 19968: jis0208<<14 | 0x2C<<7 | 0x5D,\n\t29829 - 19968: jis0212<<14 | 0x2B<<7 | 0x2C,\n\t29830 - 19968: jis0212<<14 | 0x2B<<7 | 0x2D,\n\t29831 - 19968: jis0212<<14 | 0x2B<<7 | 0x2E,\n\t29833 - 19968: jis0208<<14 | 0x5A<<7 | 0x10,\n\t29835 - 19968: jis0208<<14 | 0x3F<<7 | 0x57,\n\t29839 - 19968: jis0212<<14 | 0x2B<<7 | 0x30,\n\t29840 - 19968: jis0212<<14 | 0x2B<<7 | 0x31,\n\t29841 - 19968: jis0212<<14 | 0x2B<<7 | 0x32,\n\t29842 - 19968: jis0212<<14 | 0x2B<<7 | 0x33,\n\t29848 - 19968: jis0212<<14 | 0x2B<<7 | 0x34,\n\t29849 - 19968: jis0212<<14 | 0x2B<<7 | 0x35,\n\t29850 - 19968: jis0212<<14 | 0x2B<<7 | 0x36,\n\t29852 - 19968: jis0212<<14 | 0x2B<<7 | 0x37,\n\t29854 - 19968: jis0208<<14 | 0x3F<<7 | 0x58,\n\t29855 - 19968: jis0208<<14 | 0x5A<<7 | 0x11,\n\t29856 - 19968: jis0212<<14 | 0x2B<<7 | 0x39,\n\t29857 - 19968: jis0212<<14 | 0x2B<<7 | 0x3A,\n\t29858 - 19968: jis0208<<14 | 0x3F<<7 | 0x44,\n\t29859 - 19968: jis0212<<14 | 0x2B<<7 | 0x3B,\n\t29862 - 19968: jis0212<<14 | 0x2B<<7 | 0x3C,\n\t29863 - 19968: jis0208<<14 | 0x3F<<7 | 0x59,\n\t29864 - 19968: jis0212<<14 | 0x2B<<7 | 0x3D,\n\t29865 - 19968: jis0212<<14 | 0x2B<<7 | 0x3E,\n\t29866 - 19968: jis0212<<14 | 0x2B<<7 | 0x3F,\n\t29867 - 19968: jis0212<<14 | 0x2B<<7 | 0x40,\n\t29870 - 19968: jis0212<<14 | 0x2B<<7 | 0x41,\n\t29871 - 19968: jis0212<<14 | 0x2B<<7 | 0x42,\n\t29872 - 19968: jis0208<<14 | 0x13<<7 | 0x23,\n\t29873 - 19968: jis0212<<14 | 0x2B<<7 | 0x43,\n\t29874 - 19968: jis0212<<14 | 0x2B<<7 | 0x44,\n\t29877 - 19968: jis0212<<14 | 0x2B<<7 | 0x45,\n\t29881 - 19968: jis0212<<14 | 0x2B<<7 | 0x46,\n\t29883 - 19968: jis0212<<14 | 0x2B<<7 | 0x47,\n\t29885 - 19968: jis0208<<14 | 0x1B<<7 | 0x04,\n\t29887 - 19968: jis0212<<14 | 0x2B<<7 | 0x48,\n\t29896 - 19968: jis0212<<14 | 0x2B<<7 | 0x49,\n\t29897 - 19968: jis0212<<14 | 0x2B<<7 | 0x4A,\n\t29898 - 19968: jis0208<<14 | 0x3F<<7 | 0x5A,\n\t29900 - 19968: jis0212<<14 | 0x2B<<7 | 0x4B,\n\t29903 - 19968: jis0208<<14 | 0x3F<<7 | 0x5B,\n\t29904 - 19968: jis0212<<14 | 0x2B<<7 | 0x4C,\n\t29907 - 19968: jis0212<<14 | 0x2B<<7 | 0x4D,\n\t29908 - 19968: jis0208<<14 | 0x3F<<7 | 0x5C,\n\t29912 - 19968: jis0212<<14 | 0x2B<<7 | 0x4E,\n\t29914 - 19968: jis0212<<14 | 0x2B<<7 | 0x4F,\n\t29915 - 19968: jis0212<<14 | 0x2B<<7 | 0x50,\n\t29916 - 19968: jis0208<<14 | 0x10<<7 | 0x1A,\n\t29918 - 19968: jis0212<<14 | 0x2B<<7 | 0x51,\n\t29919 - 19968: jis0212<<14 | 0x2B<<7 | 0x52,\n\t29920 - 19968: jis0208<<14 | 0x40<<7 | 0x00,\n\t29922 - 19968: jis0208<<14 | 0x28<<7 | 0x1A,\n\t29923 - 19968: jis0208<<14 | 0x40<<7 | 0x01,\n\t29924 - 19968: jis0212<<14 | 0x2B<<7 | 0x53,\n\t29926 - 19968: jis0208<<14 | 0x13<<7 | 0x03,\n\t29927 - 19968: jis0208<<14 | 0x40<<7 | 0x02,\n\t29928 - 19968: jis0212<<14 | 0x2B<<7 | 0x54,\n\t29929 - 19968: jis0208<<14 | 0x40<<7 | 0x03,\n\t29930 - 19968: jis0212<<14 | 0x2B<<7 | 0x55,\n\t29931 - 19968: jis0212<<14 | 0x2B<<7 | 0x56,\n\t29934 - 19968: jis0208<<14 | 0x40<<7 | 0x04,\n\t29935 - 19968: jis0212<<14 | 0x2B<<7 | 0x57,\n\t29936 - 19968: jis0208<<14 | 0x40<<7 | 0x06,\n\t29937 - 19968: jis0208<<14 | 0x40<<7 | 0x07,\n\t29938 - 19968: jis0208<<14 | 0x40<<7 | 0x05,\n\t29940 - 19968: jis0212<<14 | 0x2B<<7 | 0x58,\n\t29942 - 19968: jis0208<<14 | 0x28<<7 | 0x32,\n\t29943 - 19968: jis0208<<14 | 0x40<<7 | 0x09,\n\t29944 - 19968: jis0208<<14 | 0x40<<7 | 0x08,\n\t29946 - 19968: jis0212<<14 | 0x2B<<7 | 0x59,\n\t29947 - 19968: jis0212<<14 | 0x2B<<7 | 0x5A,\n\t29948 - 19968: jis0212<<14 | 0x2B<<7 | 0x5B,\n\t29951 - 19968: jis0212<<14 | 0x2B<<7 | 0x5C,\n\t29953 - 19968: jis0208<<14 | 0x5A<<7 | 0x12,\n\t29955 - 19968: jis0208<<14 | 0x40<<7 | 0x0B,\n\t29956 - 19968: jis0208<<14 | 0x40<<7 | 0x0A,\n\t29957 - 19968: jis0208<<14 | 0x40<<7 | 0x0C,\n\t29958 - 19968: jis0212<<14 | 0x2B<<7 | 0x5D,\n\t29964 - 19968: jis0208<<14 | 0x40<<7 | 0x0D,\n\t29965 - 19968: jis0208<<14 | 0x40<<7 | 0x0F,\n\t29966 - 19968: jis0208<<14 | 0x40<<7 | 0x0E,\n\t29969 - 19968: jis0208<<14 | 0x18<<7 | 0x58,\n\t29970 - 19968: jis0212<<14 | 0x2C<<7 | 0x00,\n\t29971 - 19968: jis0208<<14 | 0x40<<7 | 0x11,\n\t29973 - 19968: jis0208<<14 | 0x40<<7 | 0x10,\n\t29974 - 19968: jis0212<<14 | 0x2C<<7 | 0x01,\n\t29975 - 19968: jis0212<<14 | 0x2C<<7 | 0x02,\n\t29976 - 19968: jis0208<<14 | 0x13<<7 | 0x24,\n\t29978 - 19968: jis0208<<14 | 0x1E<<7 | 0x32,\n\t29980 - 19968: jis0208<<14 | 0x24<<7 | 0x1B,\n\t29982 - 19968: jis0208<<14 | 0x40<<7 | 0x12,\n\t29983 - 19968: jis0208<<14 | 0x1F<<7 | 0x17,\n\t29984 - 19968: jis0212<<14 | 0x2C<<7 | 0x03,\n\t29985 - 19968: jis0212<<14 | 0x2C<<7 | 0x04,\n\t29987 - 19968: jis0208<<14 | 0x1A<<7 | 0x19,\n\t29988 - 19968: jis0212<<14 | 0x2C<<7 | 0x05,\n\t29989 - 19968: jis0208<<14 | 0x10<<7 | 0x58,\n\t29990 - 19968: jis0208<<14 | 0x40<<7 | 0x13,\n\t29991 - 19968: jis0212<<14 | 0x2C<<7 | 0x06,\n\t29992 - 19968: jis0208<<14 | 0x2C<<7 | 0x30,\n\t29993 - 19968: jis0212<<14 | 0x2C<<7 | 0x07,\n\t29994 - 19968: jis0212<<14 | 0x2C<<7 | 0x08,\n\t29995 - 19968: jis0208<<14 | 0x29<<7 | 0x42,\n\t29996 - 19968: jis0208<<14 | 0x40<<7 | 0x14,\n\t29999 - 19968: jis0208<<14 | 0x58<<7 | 0x4B,\n\t30000 - 19968: jis0208<<14 | 0x24<<7 | 0x23,\n\t30001 - 19968: jis0208<<14 | 0x2C<<7 | 0x12,\n\t30002 - 19968: jis0208<<14 | 0x18<<7 | 0x22,\n\t30003 - 19968: jis0208<<14 | 0x1E<<7 | 0x1C,\n\t30006 - 19968: jis0212<<14 | 0x2C<<7 | 0x0A,\n\t30007 - 19968: jis0208<<14 | 0x22<<7 | 0x2A,\n\t30008 - 19968: jis0208<<14 | 0x31<<7 | 0x13,\n\t30009 - 19968: jis0212<<14 | 0x2C<<7 | 0x0B,\n\t30010 - 19968: jis0208<<14 | 0x23<<7 | 0x0D,\n\t30011 - 19968: jis0208<<14 | 0x11<<7 | 0x47,\n\t30012 - 19968: jis0208<<14 | 0x40<<7 | 0x15,\n\t30013 - 19968: jis0212<<14 | 0x2C<<7 | 0x0C,\n\t30014 - 19968: jis0212<<14 | 0x2C<<7 | 0x0D,\n\t30015 - 19968: jis0212<<14 | 0x2C<<7 | 0x0E,\n\t30016 - 19968: jis0212<<14 | 0x2C<<7 | 0x0F,\n\t30019 - 19968: jis0212<<14 | 0x2C<<7 | 0x10,\n\t30020 - 19968: jis0208<<14 | 0x40<<7 | 0x16,\n\t30022 - 19968: jis0208<<14 | 0x40<<7 | 0x1B,\n\t30023 - 19968: jis0212<<14 | 0x2C<<7 | 0x11,\n\t30024 - 19968: jis0212<<14 | 0x2C<<7 | 0x12,\n\t30025 - 19968: jis0208<<14 | 0x40<<7 | 0x19,\n\t30026 - 19968: jis0208<<14 | 0x40<<7 | 0x18,\n\t30027 - 19968: jis0208<<14 | 0x39<<7 | 0x21,\n\t30028 - 19968: jis0208<<14 | 0x12<<7 | 0x05,\n\t30029 - 19968: jis0208<<14 | 0x40<<7 | 0x17,\n\t30030 - 19968: jis0212<<14 | 0x2C<<7 | 0x13,\n\t30031 - 19968: jis0208<<14 | 0x0F<<7 | 0x39,\n\t30032 - 19968: jis0212<<14 | 0x2C<<7 | 0x14,\n\t30033 - 19968: jis0208<<14 | 0x27<<7 | 0x09,\n\t30034 - 19968: jis0212<<14 | 0x2C<<7 | 0x15,\n\t30036 - 19968: jis0208<<14 | 0x27<<7 | 0x29,\n\t30039 - 19968: jis0212<<14 | 0x2C<<7 | 0x16,\n\t30041 - 19968: jis0208<<14 | 0x2D<<7 | 0x10,\n\t30042 - 19968: jis0208<<14 | 0x40<<7 | 0x1C,\n\t30043 - 19968: jis0208<<14 | 0x40<<7 | 0x1A,\n\t30044 - 19968: jis0208<<14 | 0x22<<7 | 0x3B,\n\t30045 - 19968: jis0208<<14 | 0x1F<<7 | 0x05,\n\t30046 - 19968: jis0212<<14 | 0x2C<<7 | 0x17,\n\t30047 - 19968: jis0212<<14 | 0x2C<<7 | 0x18,\n\t30048 - 19968: jis0208<<14 | 0x27<<7 | 0x0A,\n\t30049 - 19968: jis0212<<14 | 0x2C<<7 | 0x19,\n\t30050 - 19968: jis0208<<14 | 0x28<<7 | 0x0C,\n\t30052 - 19968: jis0208<<14 | 0x40<<7 | 0x1E,\n\t30053 - 19968: jis0208<<14 | 0x2D<<7 | 0x0B,\n\t30054 - 19968: jis0208<<14 | 0x16<<7 | 0x2C,\n\t30055 - 19968: jis0208<<14 | 0x40<<7 | 0x1F,\n\t30057 - 19968: jis0208<<14 | 0x40<<7 | 0x1D,\n\t30058 - 19968: jis0208<<14 | 0x27<<7 | 0x35,\n\t30059 - 19968: jis0208<<14 | 0x40<<7 | 0x20,\n\t30061 - 19968: jis0208<<14 | 0x40<<7 | 0x21,\n\t30063 - 19968: jis0208<<14 | 0x5A<<7 | 0x13,\n\t30064 - 19968: jis0208<<14 | 0x0F<<7 | 0x3A,\n\t30065 - 19968: jis0212<<14 | 0x2C<<7 | 0x1B,\n\t30067 - 19968: jis0208<<14 | 0x1D<<7 | 0x55,\n\t30068 - 19968: jis0208<<14 | 0x40<<7 | 0x26,\n\t30070 - 19968: jis0208<<14 | 0x40<<7 | 0x23,\n\t30071 - 19968: jis0208<<14 | 0x25<<7 | 0x4C,\n\t30072 - 19968: jis0208<<14 | 0x40<<7 | 0x22,\n\t30073 - 19968: jis0212<<14 | 0x2C<<7 | 0x1C,\n\t30074 - 19968: jis0212<<14 | 0x2C<<7 | 0x1D,\n\t30075 - 19968: jis0212<<14 | 0x2C<<7 | 0x1E,\n\t30076 - 19968: jis0212<<14 | 0x2C<<7 | 0x1F,\n\t30077 - 19968: jis0212<<14 | 0x2C<<7 | 0x20,\n\t30078 - 19968: jis0212<<14 | 0x2C<<7 | 0x21,\n\t30079 - 19968: jis0208<<14 | 0x14<<7 | 0x05,\n\t30081 - 19968: jis0212<<14 | 0x2C<<7 | 0x22,\n\t30082 - 19968: jis0208<<14 | 0x40<<7 | 0x29,\n\t30085 - 19968: jis0212<<14 | 0x2C<<7 | 0x23,\n\t30086 - 19968: jis0208<<14 | 0x40<<7 | 0x24,\n\t30087 - 19968: jis0208<<14 | 0x40<<7 | 0x25,\n\t30089 - 19968: jis0208<<14 | 0x40<<7 | 0x28,\n\t30090 - 19968: jis0208<<14 | 0x40<<7 | 0x27,\n\t30091 - 19968: jis0208<<14 | 0x28<<7 | 0x04,\n\t30094 - 19968: jis0208<<14 | 0x20<<7 | 0x21,\n\t30095 - 19968: jis0208<<14 | 0x20<<7 | 0x20,\n\t30096 - 19968: jis0212<<14 | 0x2C<<7 | 0x24,\n\t30097 - 19968: jis0208<<14 | 0x14<<7 | 0x1E,\n\t30098 - 19968: jis0212<<14 | 0x2C<<7 | 0x25,\n\t30099 - 19968: jis0212<<14 | 0x2C<<7 | 0x26,\n\t30100 - 19968: jis0208<<14 | 0x40<<7 | 0x2A,\n\t30101 - 19968: jis0212<<14 | 0x2C<<7 | 0x27,\n\t30105 - 19968: jis0212<<14 | 0x2C<<7 | 0x28,\n\t30106 - 19968: jis0208<<14 | 0x40<<7 | 0x2B,\n\t30108 - 19968: jis0212<<14 | 0x2C<<7 | 0x29,\n\t30109 - 19968: jis0208<<14 | 0x40<<7 | 0x2C,\n\t30114 - 19968: jis0212<<14 | 0x2C<<7 | 0x2A,\n\t30115 - 19968: jis0208<<14 | 0x40<<7 | 0x2E,\n\t30116 - 19968: jis0212<<14 | 0x2C<<7 | 0x2B,\n\t30117 - 19968: jis0208<<14 | 0x40<<7 | 0x2D,\n\t30123 - 19968: jis0208<<14 | 0x10<<7 | 0x35,\n\t30129 - 19968: jis0208<<14 | 0x40<<7 | 0x36,\n\t30130 - 19968: jis0208<<14 | 0x27<<7 | 0x47,\n\t30131 - 19968: jis0208<<14 | 0x40<<7 | 0x30,\n\t30132 - 19968: jis0212<<14 | 0x2C<<7 | 0x2C,\n\t30133 - 19968: jis0208<<14 | 0x40<<7 | 0x32,\n\t30136 - 19968: jis0208<<14 | 0x40<<7 | 0x34,\n\t30137 - 19968: jis0208<<14 | 0x1E<<7 | 0x1D,\n\t30138 - 19968: jis0212<<14 | 0x2C<<7 | 0x2D,\n\t30140 - 19968: jis0208<<14 | 0x40<<7 | 0x35,\n\t30141 - 19968: jis0208<<14 | 0x40<<7 | 0x33,\n\t30142 - 19968: jis0208<<14 | 0x1B<<7 | 0x1F,\n\t30143 - 19968: jis0212<<14 | 0x2C<<7 | 0x2E,\n\t30144 - 19968: jis0212<<14 | 0x2C<<7 | 0x2F,\n\t30145 - 19968: jis0212<<14 | 0x2C<<7 | 0x30,\n\t30146 - 19968: jis0208<<14 | 0x40<<7 | 0x2F,\n\t30147 - 19968: jis0208<<14 | 0x40<<7 | 0x31,\n\t30148 - 19968: jis0212<<14 | 0x2C<<7 | 0x31,\n\t30149 - 19968: jis0208<<14 | 0x28<<7 | 0x21,\n\t30150 - 19968: jis0212<<14 | 0x2C<<7 | 0x32,\n\t30151 - 19968: jis0208<<14 | 0x1D<<7 | 0x28,\n\t30154 - 19968: jis0208<<14 | 0x40<<7 | 0x38,\n\t30156 - 19968: jis0212<<14 | 0x2C<<7 | 0x33,\n\t30157 - 19968: jis0208<<14 | 0x40<<7 | 0x37,\n\t30158 - 19968: jis0212<<14 | 0x2C<<7 | 0x34,\n\t30159 - 19968: jis0212<<14 | 0x2C<<7 | 0x35,\n\t30162 - 19968: jis0208<<14 | 0x40<<7 | 0x39,\n\t30164 - 19968: jis0208<<14 | 0x1B<<7 | 0x05,\n\t30165 - 19968: jis0208<<14 | 0x19<<7 | 0x0E,\n\t30167 - 19968: jis0212<<14 | 0x2C<<7 | 0x36,\n\t30168 - 19968: jis0208<<14 | 0x24<<7 | 0x56,\n\t30169 - 19968: jis0208<<14 | 0x40<<7 | 0x3A,\n\t30171 - 19968: jis0208<<14 | 0x23<<7 | 0x2A,\n\t30172 - 19968: jis0212<<14 | 0x2C<<7 | 0x37,\n\t30174 - 19968: jis0208<<14 | 0x40<<7 | 0x3C,\n\t30175 - 19968: jis0212<<14 | 0x2C<<7 | 0x38,\n\t30176 - 19968: jis0212<<14 | 0x2C<<7 | 0x39,\n\t30177 - 19968: jis0212<<14 | 0x2C<<7 | 0x3A,\n\t30178 - 19968: jis0208<<14 | 0x2D<<7 | 0x00,\n\t30179 - 19968: jis0208<<14 | 0x40<<7 | 0x3B,\n\t30180 - 19968: jis0212<<14 | 0x2C<<7 | 0x3B,\n\t30183 - 19968: jis0212<<14 | 0x2C<<7 | 0x3C,\n\t30185 - 19968: jis0208<<14 | 0x20<<7 | 0x48,\n\t30188 - 19968: jis0212<<14 | 0x2C<<7 | 0x3D,\n\t30190 - 19968: jis0212<<14 | 0x2C<<7 | 0x3E,\n\t30191 - 19968: jis0212<<14 | 0x2C<<7 | 0x3F,\n\t30192 - 19968: jis0208<<14 | 0x40<<7 | 0x41,\n\t30193 - 19968: jis0212<<14 | 0x2C<<7 | 0x40,\n\t30194 - 19968: jis0208<<14 | 0x40<<7 | 0x43,\n\t30195 - 19968: jis0208<<14 | 0x40<<7 | 0x44,\n\t30196 - 19968: jis0208<<14 | 0x22<<7 | 0x33,\n\t30201 - 19968: jis0212<<14 | 0x2C<<7 | 0x41,\n\t30202 - 19968: jis0208<<14 | 0x40<<7 | 0x42,\n\t30204 - 19968: jis0208<<14 | 0x40<<7 | 0x3F,\n\t30206 - 19968: jis0208<<14 | 0x40<<7 | 0x3D,\n\t30207 - 19968: jis0208<<14 | 0x40<<7 | 0x3E,\n\t30208 - 19968: jis0212<<14 | 0x2C<<7 | 0x42,\n\t30209 - 19968: jis0208<<14 | 0x40<<7 | 0x40,\n\t30210 - 19968: jis0212<<14 | 0x2C<<7 | 0x43,\n\t30211 - 19968: jis0212<<14 | 0x2C<<7 | 0x44,\n\t30212 - 19968: jis0212<<14 | 0x2C<<7 | 0x45,\n\t30215 - 19968: jis0212<<14 | 0x2C<<7 | 0x46,\n\t30216 - 19968: jis0212<<14 | 0x2C<<7 | 0x47,\n\t30217 - 19968: jis0208<<14 | 0x40<<7 | 0x47,\n\t30218 - 19968: jis0212<<14 | 0x2C<<7 | 0x48,\n\t30219 - 19968: jis0208<<14 | 0x40<<7 | 0x45,\n\t30220 - 19968: jis0212<<14 | 0x2C<<7 | 0x49,\n\t30221 - 19968: jis0208<<14 | 0x40<<7 | 0x46,\n\t30223 - 19968: jis0212<<14 | 0x2C<<7 | 0x4A,\n\t30226 - 19968: jis0212<<14 | 0x2C<<7 | 0x4B,\n\t30227 - 19968: jis0212<<14 | 0x2C<<7 | 0x4C,\n\t30229 - 19968: jis0212<<14 | 0x2C<<7 | 0x4D,\n\t30230 - 19968: jis0212<<14 | 0x2C<<7 | 0x4E,\n\t30233 - 19968: jis0212<<14 | 0x2C<<7 | 0x4F,\n\t30235 - 19968: jis0212<<14 | 0x2C<<7 | 0x50,\n\t30236 - 19968: jis0212<<14 | 0x2C<<7 | 0x51,\n\t30237 - 19968: jis0212<<14 | 0x2C<<7 | 0x52,\n\t30238 - 19968: jis0212<<14 | 0x2C<<7 | 0x53,\n\t30239 - 19968: jis0208<<14 | 0x40<<7 | 0x48,\n\t30240 - 19968: jis0208<<14 | 0x40<<7 | 0x4A,\n\t30241 - 19968: jis0208<<14 | 0x40<<7 | 0x4B,\n\t30242 - 19968: jis0208<<14 | 0x40<<7 | 0x4C,\n\t30243 - 19968: jis0212<<14 | 0x2C<<7 | 0x54,\n\t30244 - 19968: jis0208<<14 | 0x40<<7 | 0x4D,\n\t30245 - 19968: jis0212<<14 | 0x2C<<7 | 0x55,\n\t30246 - 19968: jis0212<<14 | 0x2C<<7 | 0x56,\n\t30247 - 19968: jis0208<<14 | 0x40<<7 | 0x49,\n\t30249 - 19968: jis0212<<14 | 0x2C<<7 | 0x57,\n\t30253 - 19968: jis0212<<14 | 0x2C<<7 | 0x58,\n\t30256 - 19968: jis0208<<14 | 0x40<<7 | 0x4F,\n\t30258 - 19968: jis0212<<14 | 0x2C<<7 | 0x59,\n\t30259 - 19968: jis0212<<14 | 0x2C<<7 | 0x5A,\n\t30260 - 19968: jis0208<<14 | 0x40<<7 | 0x4E,\n\t30261 - 19968: jis0212<<14 | 0x2C<<7 | 0x5B,\n\t30264 - 19968: jis0212<<14 | 0x2C<<7 | 0x5C,\n\t30265 - 19968: jis0212<<14 | 0x2C<<7 | 0x5D,\n\t30266 - 19968: jis0212<<14 | 0x2D<<7 | 0x00,\n\t30267 - 19968: jis0208<<14 | 0x40<<7 | 0x50,\n\t30268 - 19968: jis0212<<14 | 0x2D<<7 | 0x01,\n\t30272 - 19968: jis0212<<14 | 0x2D<<7 | 0x03,\n\t30273 - 19968: jis0212<<14 | 0x2D<<7 | 0x04,\n\t30274 - 19968: jis0208<<14 | 0x2D<<7 | 0x24,\n\t30275 - 19968: jis0212<<14 | 0x2D<<7 | 0x05,\n\t30276 - 19968: jis0212<<14 | 0x2D<<7 | 0x06,\n\t30277 - 19968: jis0212<<14 | 0x2D<<7 | 0x07,\n\t30278 - 19968: jis0208<<14 | 0x40<<7 | 0x53,\n\t30279 - 19968: jis0208<<14 | 0x40<<7 | 0x51,\n\t30280 - 19968: jis0208<<14 | 0x40<<7 | 0x52,\n\t30281 - 19968: jis0212<<14 | 0x2D<<7 | 0x08,\n\t30282 - 19968: jis0212<<14 | 0x2D<<7 | 0x02,\n\t30283 - 19968: jis0212<<14 | 0x2D<<7 | 0x09,\n\t30284 - 19968: jis0208<<14 | 0x13<<7 | 0x41,\n\t30290 - 19968: jis0208<<14 | 0x2B<<7 | 0x5D,\n\t30293 - 19968: jis0212<<14 | 0x2D<<7 | 0x0A,\n\t30294 - 19968: jis0208<<14 | 0x29<<7 | 0x29,\n\t30296 - 19968: jis0208<<14 | 0x40<<7 | 0x55,\n\t30297 - 19968: jis0212<<14 | 0x2D<<7 | 0x0B,\n\t30300 - 19968: jis0208<<14 | 0x40<<7 | 0x54,\n\t30303 - 19968: jis0212<<14 | 0x2D<<7 | 0x0C,\n\t30305 - 19968: jis0208<<14 | 0x40<<7 | 0x56,\n\t30306 - 19968: jis0208<<14 | 0x40<<7 | 0x57,\n\t30308 - 19968: jis0212<<14 | 0x2D<<7 | 0x0D,\n\t30309 - 19968: jis0212<<14 | 0x2D<<7 | 0x0E,\n\t30311 - 19968: jis0208<<14 | 0x40<<7 | 0x5B,\n\t30312 - 19968: jis0208<<14 | 0x40<<7 | 0x58,\n\t30313 - 19968: jis0208<<14 | 0x40<<7 | 0x59,\n\t30314 - 19968: jis0208<<14 | 0x40<<7 | 0x5A,\n\t30316 - 19968: jis0208<<14 | 0x40<<7 | 0x5C,\n\t30317 - 19968: jis0212<<14 | 0x2D<<7 | 0x0F,\n\t30318 - 19968: jis0212<<14 | 0x2D<<7 | 0x10,\n\t30319 - 19968: jis0212<<14 | 0x2D<<7 | 0x11,\n\t30320 - 19968: jis0208<<14 | 0x40<<7 | 0x5D,\n\t30321 - 19968: jis0212<<14 | 0x2D<<7 | 0x12,\n\t30322 - 19968: jis0208<<14 | 0x41<<7 | 0x00,\n\t30324 - 19968: jis0212<<14 | 0x2D<<7 | 0x13,\n\t30326 - 19968: jis0208<<14 | 0x41<<7 | 0x01,\n\t30328 - 19968: jis0208<<14 | 0x41<<7 | 0x02,\n\t30330 - 19968: jis0208<<14 | 0x27<<7 | 0x0E,\n\t30331 - 19968: jis0208<<14 | 0x24<<7 | 0x2F,\n\t30332 - 19968: jis0208<<14 | 0x41<<7 | 0x03,\n\t30333 - 19968: jis0208<<14 | 0x26<<7 | 0x51,\n\t30334 - 19968: jis0208<<14 | 0x28<<7 | 0x13,\n\t30336 - 19968: jis0208<<14 | 0x41<<7 | 0x04,\n\t30337 - 19968: jis0212<<14 | 0x2D<<7 | 0x14,\n\t30338 - 19968: jis0208<<14 | 0x5A<<7 | 0x14,\n\t30339 - 19968: jis0208<<14 | 0x41<<7 | 0x05,\n\t30340 - 19968: jis0208<<14 | 0x24<<7 | 0x09,\n\t30341 - 19968: jis0212<<14 | 0x2D<<7 | 0x15,\n\t30342 - 19968: jis0208<<14 | 0x12<<7 | 0x06,\n\t30343 - 19968: jis0208<<14 | 0x18<<7 | 0x23,\n\t30344 - 19968: jis0208<<14 | 0x41<<7 | 0x06,\n\t30347 - 19968: jis0208<<14 | 0x41<<7 | 0x07,\n\t30348 - 19968: jis0212<<14 | 0x2D<<7 | 0x16,\n\t30349 - 19968: jis0212<<14 | 0x2D<<7 | 0x17,\n\t30350 - 19968: jis0208<<14 | 0x41<<7 | 0x08,\n\t30352 - 19968: jis0208<<14 | 0x1A<<7 | 0x08,\n\t30355 - 19968: jis0208<<14 | 0x41<<7 | 0x0A,\n\t30357 - 19968: jis0212<<14 | 0x2D<<7 | 0x18,\n\t30358 - 19968: jis0208<<14 | 0x41<<7 | 0x09,\n\t30361 - 19968: jis0208<<14 | 0x41<<7 | 0x0B,\n\t30362 - 19968: jis0208<<14 | 0x41<<7 | 0x0C,\n\t30363 - 19968: jis0208<<14 | 0x5A<<7 | 0x17,\n\t30364 - 19968: jis0208<<14 | 0x5A<<7 | 0x15,\n\t30365 - 19968: jis0212<<14 | 0x2D<<7 | 0x1B,\n\t30366 - 19968: jis0208<<14 | 0x5A<<7 | 0x16,\n\t30367 - 19968: jis0212<<14 | 0x2D<<7 | 0x1C,\n\t30368 - 19968: jis0212<<14 | 0x2D<<7 | 0x1D,\n\t30370 - 19968: jis0212<<14 | 0x2D<<7 | 0x1E,\n\t30371 - 19968: jis0212<<14 | 0x2D<<7 | 0x1F,\n\t30372 - 19968: jis0212<<14 | 0x2D<<7 | 0x20,\n\t30373 - 19968: jis0212<<14 | 0x2D<<7 | 0x21,\n\t30374 - 19968: jis0208<<14 | 0x5A<<7 | 0x18,\n\t30375 - 19968: jis0212<<14 | 0x2D<<7 | 0x23,\n\t30376 - 19968: jis0212<<14 | 0x2D<<7 | 0x24,\n\t30378 - 19968: jis0212<<14 | 0x2D<<7 | 0x25,\n\t30381 - 19968: jis0212<<14 | 0x2D<<7 | 0x26,\n\t30382 - 19968: jis0208<<14 | 0x27<<7 | 0x48,\n\t30384 - 19968: jis0208<<14 | 0x41<<7 | 0x0D,\n\t30388 - 19968: jis0208<<14 | 0x41<<7 | 0x0E,\n\t30391 - 19968: jis0208<<14 | 0x52<<7 | 0x48,\n\t30392 - 19968: jis0208<<14 | 0x41<<7 | 0x0F,\n\t30393 - 19968: jis0208<<14 | 0x41<<7 | 0x10,\n\t30394 - 19968: jis0208<<14 | 0x41<<7 | 0x11,\n\t30397 - 19968: jis0212<<14 | 0x2D<<7 | 0x27,\n\t30399 - 19968: jis0208<<14 | 0x1A<<7 | 0x0D,\n\t30401 - 19968: jis0212<<14 | 0x2D<<7 | 0x28,\n\t30402 - 19968: jis0208<<14 | 0x41<<7 | 0x12,\n\t30403 - 19968: jis0208<<14 | 0x26<<7 | 0x35,\n\t30405 - 19968: jis0212<<14 | 0x2D<<7 | 0x29,\n\t30406 - 19968: jis0208<<14 | 0x2A<<7 | 0x3E,\n\t30408 - 19968: jis0208<<14 | 0x10<<7 | 0x2D,\n\t30409 - 19968: jis0212<<14 | 0x2D<<7 | 0x2A,\n\t30410 - 19968: jis0208<<14 | 0x10<<7 | 0x36,\n\t30411 - 19968: jis0212<<14 | 0x2D<<7 | 0x2B,\n\t30412 - 19968: jis0212<<14 | 0x2D<<7 | 0x2C,\n\t30413 - 19968: jis0208<<14 | 0x41<<7 | 0x13,\n\t30414 - 19968: jis0212<<14 | 0x2D<<7 | 0x2D,\n\t30418 - 19968: jis0208<<14 | 0x41<<7 | 0x15,\n\t30420 - 19968: jis0212<<14 | 0x2D<<7 | 0x2E,\n\t30422 - 19968: jis0208<<14 | 0x41<<7 | 0x14,\n\t30423 - 19968: jis0208<<14 | 0x24<<7 | 0x4F,\n\t30425 - 19968: jis0212<<14 | 0x2D<<7 | 0x2F,\n\t30427 - 19968: jis0208<<14 | 0x1F<<7 | 0x18,\n\t30428 - 19968: jis0208<<14 | 0x3C<<7 | 0x18,\n\t30430 - 19968: jis0208<<14 | 0x41<<7 | 0x16,\n\t30431 - 19968: jis0208<<14 | 0x2B<<7 | 0x20,\n\t30432 - 19968: jis0212<<14 | 0x2D<<7 | 0x30,\n\t30433 - 19968: jis0208<<14 | 0x41<<7 | 0x17,\n\t30435 - 19968: jis0208<<14 | 0x13<<7 | 0x25,\n\t30436 - 19968: jis0208<<14 | 0x27<<7 | 0x36,\n\t30437 - 19968: jis0208<<14 | 0x41<<7 | 0x18,\n\t30438 - 19968: jis0212<<14 | 0x2D<<7 | 0x31,\n\t30439 - 19968: jis0208<<14 | 0x41<<7 | 0x19,\n\t30440 - 19968: jis0212<<14 | 0x2D<<7 | 0x32,\n\t30442 - 19968: jis0208<<14 | 0x41<<7 | 0x1A,\n\t30444 - 19968: jis0212<<14 | 0x2D<<7 | 0x33,\n\t30446 - 19968: jis0208<<14 | 0x2B<<7 | 0x3B,\n\t30448 - 19968: jis0212<<14 | 0x2D<<7 | 0x34,\n\t30449 - 19968: jis0212<<14 | 0x2D<<7 | 0x35,\n\t30450 - 19968: jis0208<<14 | 0x2B<<7 | 0x34,\n\t30452 - 19968: jis0208<<14 | 0x23<<7 | 0x1D,\n\t30454 - 19968: jis0212<<14 | 0x2D<<7 | 0x36,\n\t30456 - 19968: jis0208<<14 | 0x20<<7 | 0x49,\n\t30457 - 19968: jis0212<<14 | 0x2D<<7 | 0x37,\n\t30459 - 19968: jis0208<<14 | 0x41<<7 | 0x1C,\n\t30460 - 19968: jis0212<<14 | 0x2D<<7 | 0x38,\n\t30462 - 19968: jis0208<<14 | 0x1C<<7 | 0x41,\n\t30464 - 19968: jis0212<<14 | 0x2D<<7 | 0x39,\n\t30465 - 19968: jis0208<<14 | 0x1D<<7 | 0x29,\n\t30468 - 19968: jis0208<<14 | 0x41<<7 | 0x1F,\n\t30470 - 19968: jis0212<<14 | 0x2D<<7 | 0x3A,\n\t30471 - 19968: jis0208<<14 | 0x41<<7 | 0x1E,\n\t30472 - 19968: jis0208<<14 | 0x41<<7 | 0x1D,\n\t30473 - 19968: jis0208<<14 | 0x27<<7 | 0x5C,\n\t30474 - 19968: jis0212<<14 | 0x2D<<7 | 0x3B,\n\t30475 - 19968: jis0208<<14 | 0x13<<7 | 0x26,\n\t30476 - 19968: jis0208<<14 | 0x17<<7 | 0x08,\n\t30478 - 19968: jis0212<<14 | 0x2D<<7 | 0x3C,\n\t30482 - 19968: jis0212<<14 | 0x2D<<7 | 0x3D,\n\t30484 - 19968: jis0212<<14 | 0x2D<<7 | 0x3E,\n\t30485 - 19968: jis0212<<14 | 0x2D<<7 | 0x3F,\n\t30487 - 19968: jis0212<<14 | 0x2D<<7 | 0x40,\n\t30489 - 19968: jis0212<<14 | 0x2D<<7 | 0x41,\n\t30490 - 19968: jis0212<<14 | 0x2D<<7 | 0x42,\n\t30491 - 19968: jis0208<<14 | 0x41<<7 | 0x25,\n\t30492 - 19968: jis0212<<14 | 0x2D<<7 | 0x43,\n\t30494 - 19968: jis0208<<14 | 0x41<<7 | 0x22,\n\t30495 - 19968: jis0208<<14 | 0x1E<<7 | 0x1E,\n\t30496 - 19968: jis0208<<14 | 0x2B<<7 | 0x11,\n\t30498 - 19968: jis0212<<14 | 0x2D<<7 | 0x44,\n\t30500 - 19968: jis0208<<14 | 0x41<<7 | 0x21,\n\t30501 - 19968: jis0208<<14 | 0x41<<7 | 0x23,\n\t30502 - 19968: jis0208<<14 | 0x41<<7 | 0x24,\n\t30504 - 19968: jis0212<<14 | 0x2D<<7 | 0x45,\n\t30505 - 19968: jis0208<<14 | 0x41<<7 | 0x20,\n\t30509 - 19968: jis0212<<14 | 0x2D<<7 | 0x46,\n\t30510 - 19968: jis0212<<14 | 0x2D<<7 | 0x47,\n\t30511 - 19968: jis0212<<14 | 0x2D<<7 | 0x48,\n\t30516 - 19968: jis0212<<14 | 0x2D<<7 | 0x49,\n\t30517 - 19968: jis0212<<14 | 0x2D<<7 | 0x4A,\n\t30518 - 19968: jis0212<<14 | 0x2D<<7 | 0x4B,\n\t30519 - 19968: jis0208<<14 | 0x41<<7 | 0x26,\n\t30520 - 19968: jis0208<<14 | 0x41<<7 | 0x27,\n\t30521 - 19968: jis0212<<14 | 0x2D<<7 | 0x4C,\n\t30522 - 19968: jis0208<<14 | 0x23<<7 | 0x0E,\n\t30524 - 19968: jis0208<<14 | 0x13<<7 | 0x42,\n\t30525 - 19968: jis0212<<14 | 0x2D<<7 | 0x4D,\n\t30526 - 19968: jis0212<<14 | 0x2D<<7 | 0x4E,\n\t30528 - 19968: jis0208<<14 | 0x22<<7 | 0x44,\n\t30530 - 19968: jis0212<<14 | 0x2D<<7 | 0x4F,\n\t30533 - 19968: jis0212<<14 | 0x2D<<7 | 0x50,\n\t30534 - 19968: jis0208<<14 | 0x5A<<7 | 0x1A,\n\t30535 - 19968: jis0208<<14 | 0x41<<7 | 0x28,\n\t30538 - 19968: jis0212<<14 | 0x2D<<7 | 0x52,\n\t30541 - 19968: jis0212<<14 | 0x2D<<7 | 0x53,\n\t30542 - 19968: jis0212<<14 | 0x2D<<7 | 0x54,\n\t30543 - 19968: jis0212<<14 | 0x2D<<7 | 0x55,\n\t30546 - 19968: jis0212<<14 | 0x2D<<7 | 0x56,\n\t30550 - 19968: jis0212<<14 | 0x2D<<7 | 0x57,\n\t30551 - 19968: jis0212<<14 | 0x2D<<7 | 0x58,\n\t30554 - 19968: jis0208<<14 | 0x41<<7 | 0x29,\n\t30555 - 19968: jis0208<<14 | 0x41<<7 | 0x2C,\n\t30556 - 19968: jis0212<<14 | 0x2D<<7 | 0x59,\n\t30558 - 19968: jis0212<<14 | 0x2D<<7 | 0x5A,\n\t30559 - 19968: jis0212<<14 | 0x2D<<7 | 0x5B,\n\t30560 - 19968: jis0212<<14 | 0x2D<<7 | 0x5C,\n\t30561 - 19968: jis0208<<14 | 0x1E<<7 | 0x46,\n\t30562 - 19968: jis0212<<14 | 0x2D<<7 | 0x5D,\n\t30563 - 19968: jis0208<<14 | 0x25<<7 | 0x23,\n\t30564 - 19968: jis0212<<14 | 0x2E<<7 | 0x00,\n\t30565 - 19968: jis0208<<14 | 0x41<<7 | 0x2D,\n\t30566 - 19968: jis0208<<14 | 0x2A<<7 | 0x32,\n\t30567 - 19968: jis0212<<14 | 0x2E<<7 | 0x01,\n\t30568 - 19968: jis0208<<14 | 0x41<<7 | 0x2A,\n\t30570 - 19968: jis0212<<14 | 0x2E<<7 | 0x02,\n\t30571 - 19968: jis0208<<14 | 0x41<<7 | 0x2B,\n\t30572 - 19968: jis0212<<14 | 0x2E<<7 | 0x03,\n\t30576 - 19968: jis0212<<14 | 0x2E<<7 | 0x04,\n\t30578 - 19968: jis0212<<14 | 0x2E<<7 | 0x05,\n\t30579 - 19968: jis0212<<14 | 0x2E<<7 | 0x06,\n\t30580 - 19968: jis0212<<14 | 0x2E<<7 | 0x07,\n\t30585 - 19968: jis0208<<14 | 0x41<<7 | 0x30,\n\t30586 - 19968: jis0212<<14 | 0x2E<<7 | 0x08,\n\t30589 - 19968: jis0212<<14 | 0x2E<<7 | 0x09,\n\t30590 - 19968: jis0208<<14 | 0x41<<7 | 0x2F,\n\t30591 - 19968: jis0208<<14 | 0x41<<7 | 0x2E,\n\t30592 - 19968: jis0212<<14 | 0x2E<<7 | 0x0A,\n\t30596 - 19968: jis0212<<14 | 0x2E<<7 | 0x0B,\n\t30603 - 19968: jis0208<<14 | 0x41<<7 | 0x32,\n\t30604 - 19968: jis0212<<14 | 0x2E<<7 | 0x0C,\n\t30605 - 19968: jis0212<<14 | 0x2E<<7 | 0x0D,\n\t30606 - 19968: jis0208<<14 | 0x41<<7 | 0x31,\n\t30609 - 19968: jis0208<<14 | 0x41<<7 | 0x33,\n\t30612 - 19968: jis0212<<14 | 0x2E<<7 | 0x0E,\n\t30613 - 19968: jis0212<<14 | 0x2E<<7 | 0x0F,\n\t30614 - 19968: jis0212<<14 | 0x2E<<7 | 0x10,\n\t30618 - 19968: jis0212<<14 | 0x2E<<7 | 0x11,\n\t30622 - 19968: jis0208<<14 | 0x41<<7 | 0x35,\n\t30623 - 19968: jis0212<<14 | 0x2E<<7 | 0x12,\n\t30624 - 19968: jis0208<<14 | 0x41<<7 | 0x34,\n\t30626 - 19968: jis0212<<14 | 0x2E<<7 | 0x13,\n\t30629 - 19968: jis0208<<14 | 0x29<<7 | 0x2C,\n\t30631 - 19968: jis0212<<14 | 0x2E<<7 | 0x14,\n\t30634 - 19968: jis0212<<14 | 0x2E<<7 | 0x15,\n\t30636 - 19968: jis0208<<14 | 0x1C<<7 | 0x35,\n\t30637 - 19968: jis0208<<14 | 0x2D<<7 | 0x25,\n\t30638 - 19968: jis0212<<14 | 0x2E<<7 | 0x16,\n\t30639 - 19968: jis0212<<14 | 0x2E<<7 | 0x17,\n\t30640 - 19968: jis0208<<14 | 0x41<<7 | 0x36,\n\t30641 - 19968: jis0212<<14 | 0x2E<<7 | 0x18,\n\t30643 - 19968: jis0208<<14 | 0x25<<7 | 0x16,\n\t30645 - 19968: jis0212<<14 | 0x2E<<7 | 0x19,\n\t30646 - 19968: jis0208<<14 | 0x41<<7 | 0x37,\n\t30649 - 19968: jis0208<<14 | 0x41<<7 | 0x38,\n\t30651 - 19968: jis0208<<14 | 0x41<<7 | 0x3C,\n\t30652 - 19968: jis0208<<14 | 0x41<<7 | 0x3A,\n\t30653 - 19968: jis0208<<14 | 0x41<<7 | 0x3B,\n\t30654 - 19968: jis0212<<14 | 0x2E<<7 | 0x1A,\n\t30655 - 19968: jis0208<<14 | 0x41<<7 | 0x39,\n\t30659 - 19968: jis0212<<14 | 0x2E<<7 | 0x1B,\n\t30663 - 19968: jis0208<<14 | 0x41<<7 | 0x3D,\n\t30665 - 19968: jis0212<<14 | 0x2E<<7 | 0x1C,\n\t30669 - 19968: jis0208<<14 | 0x41<<7 | 0x3E,\n\t30673 - 19968: jis0212<<14 | 0x2E<<7 | 0x1D,\n\t30674 - 19968: jis0212<<14 | 0x2E<<7 | 0x1E,\n\t30677 - 19968: jis0212<<14 | 0x2E<<7 | 0x1F,\n\t30679 - 19968: jis0208<<14 | 0x41<<7 | 0x3F,\n\t30681 - 19968: jis0212<<14 | 0x2E<<7 | 0x20,\n\t30682 - 19968: jis0208<<14 | 0x41<<7 | 0x40,\n\t30683 - 19968: jis0208<<14 | 0x2B<<7 | 0x16,\n\t30684 - 19968: jis0208<<14 | 0x41<<7 | 0x41,\n\t30686 - 19968: jis0212<<14 | 0x2E<<7 | 0x21,\n\t30687 - 19968: jis0212<<14 | 0x2E<<7 | 0x22,\n\t30688 - 19968: jis0212<<14 | 0x2E<<7 | 0x23,\n\t30690 - 19968: jis0208<<14 | 0x2B<<7 | 0x4F,\n\t30691 - 19968: jis0208<<14 | 0x41<<7 | 0x42,\n\t30692 - 19968: jis0212<<14 | 0x2E<<7 | 0x24,\n\t30693 - 19968: jis0208<<14 | 0x22<<7 | 0x2D,\n\t30694 - 19968: jis0212<<14 | 0x2E<<7 | 0x25,\n\t30695 - 19968: jis0208<<14 | 0x26<<7 | 0x49,\n\t30697 - 19968: jis0208<<14 | 0x15<<7 | 0x4A,\n\t30698 - 19968: jis0212<<14 | 0x2E<<7 | 0x26,\n\t30700 - 19968: jis0212<<14 | 0x2E<<7 | 0x27,\n\t30701 - 19968: jis0208<<14 | 0x22<<7 | 0x1A,\n\t30702 - 19968: jis0208<<14 | 0x41<<7 | 0x43,\n\t30703 - 19968: jis0208<<14 | 0x15<<7 | 0x19,\n\t30704 - 19968: jis0212<<14 | 0x2E<<7 | 0x28,\n\t30705 - 19968: jis0212<<14 | 0x2E<<7 | 0x29,\n\t30707 - 19968: jis0208<<14 | 0x1F<<7 | 0x2F,\n\t30708 - 19968: jis0212<<14 | 0x2E<<7 | 0x2A,\n\t30712 - 19968: jis0212<<14 | 0x2E<<7 | 0x2B,\n\t30715 - 19968: jis0212<<14 | 0x2E<<7 | 0x2C,\n\t30716 - 19968: jis0208<<14 | 0x41<<7 | 0x44,\n\t30722 - 19968: jis0208<<14 | 0x19<<7 | 0x1C,\n\t30725 - 19968: jis0212<<14 | 0x2E<<7 | 0x2D,\n\t30726 - 19968: jis0212<<14 | 0x2E<<7 | 0x2E,\n\t30729 - 19968: jis0212<<14 | 0x2E<<7 | 0x2F,\n\t30732 - 19968: jis0208<<14 | 0x41<<7 | 0x45,\n\t30733 - 19968: jis0212<<14 | 0x2E<<7 | 0x30,\n\t30734 - 19968: jis0212<<14 | 0x2E<<7 | 0x31,\n\t30737 - 19968: jis0212<<14 | 0x2E<<7 | 0x32,\n\t30738 - 19968: jis0208<<14 | 0x41<<7 | 0x46,\n\t30740 - 19968: jis0208<<14 | 0x17<<7 | 0x05,\n\t30741 - 19968: jis0208<<14 | 0x19<<7 | 0x34,\n\t30749 - 19968: jis0212<<14 | 0x2E<<7 | 0x33,\n\t30752 - 19968: jis0208<<14 | 0x41<<7 | 0x48,\n\t30753 - 19968: jis0208<<14 | 0x5A<<7 | 0x1C,\n\t30754 - 19968: jis0212<<14 | 0x2E<<7 | 0x35,\n\t30755 - 19968: jis0212<<14 | 0x2E<<7 | 0x36,\n\t30757 - 19968: jis0208<<14 | 0x24<<7 | 0x35,\n\t30758 - 19968: jis0208<<14 | 0x19<<7 | 0x35,\n\t30759 - 19968: jis0208<<14 | 0x14<<7 | 0x2D,\n\t30765 - 19968: jis0212<<14 | 0x2E<<7 | 0x37,\n\t30766 - 19968: jis0212<<14 | 0x2E<<7 | 0x38,\n\t30768 - 19968: jis0212<<14 | 0x2E<<7 | 0x39,\n\t30770 - 19968: jis0208<<14 | 0x2A<<7 | 0x03,\n\t30772 - 19968: jis0208<<14 | 0x26<<7 | 0x2A,\n\t30773 - 19968: jis0212<<14 | 0x2E<<7 | 0x3A,\n\t30775 - 19968: jis0212<<14 | 0x2E<<7 | 0x3B,\n\t30778 - 19968: jis0208<<14 | 0x24<<7 | 0x36,\n\t30783 - 19968: jis0208<<14 | 0x18<<7 | 0x3B,\n\t30787 - 19968: jis0212<<14 | 0x2E<<7 | 0x3C,\n\t30788 - 19968: jis0212<<14 | 0x2E<<7 | 0x3D,\n\t30789 - 19968: jis0208<<14 | 0x41<<7 | 0x4A,\n\t30791 - 19968: jis0212<<14 | 0x2E<<7 | 0x3E,\n\t30792 - 19968: jis0212<<14 | 0x2E<<7 | 0x3F,\n\t30796 - 19968: jis0212<<14 | 0x2E<<7 | 0x40,\n\t30798 - 19968: jis0208<<14 | 0x5A<<7 | 0x1D,\n\t30802 - 19968: jis0212<<14 | 0x2E<<7 | 0x42,\n\t30812 - 19968: jis0212<<14 | 0x2E<<7 | 0x43,\n\t30813 - 19968: jis0208<<14 | 0x1D<<7 | 0x2A,\n\t30814 - 19968: jis0212<<14 | 0x2E<<7 | 0x44,\n\t30816 - 19968: jis0212<<14 | 0x2E<<7 | 0x45,\n\t30817 - 19968: jis0212<<14 | 0x2E<<7 | 0x46,\n\t30819 - 19968: jis0212<<14 | 0x2E<<7 | 0x47,\n\t30820 - 19968: jis0208<<14 | 0x5A<<7 | 0x1E,\n\t30824 - 19968: jis0212<<14 | 0x2E<<7 | 0x49,\n\t30826 - 19968: jis0212<<14 | 0x2E<<7 | 0x4A,\n\t30827 - 19968: jis0208<<14 | 0x2D<<7 | 0x11,\n\t30828 - 19968: jis0208<<14 | 0x18<<7 | 0x24,\n\t30830 - 19968: jis0212<<14 | 0x2E<<7 | 0x4B,\n\t30831 - 19968: jis0208<<14 | 0x17<<7 | 0x06,\n\t30834 - 19968: jis0208<<14 | 0x27<<7 | 0x02,\n\t30836 - 19968: jis0208<<14 | 0x41<<7 | 0x4C,\n\t30842 - 19968: jis0208<<14 | 0x5A<<7 | 0x1F,\n\t30844 - 19968: jis0208<<14 | 0x41<<7 | 0x4E,\n\t30846 - 19968: jis0212<<14 | 0x2E<<7 | 0x4D,\n\t30849 - 19968: jis0208<<14 | 0x17<<7 | 0x4A,\n\t30854 - 19968: jis0208<<14 | 0x41<<7 | 0x4D,\n\t30855 - 19968: jis0208<<14 | 0x23<<7 | 0x55,\n\t30858 - 19968: jis0212<<14 | 0x2E<<7 | 0x4E,\n\t30860 - 19968: jis0208<<14 | 0x41<<7 | 0x50,\n\t30861 - 19968: jis0208<<14 | 0x12<<7 | 0x16,\n\t30862 - 19968: jis0208<<14 | 0x41<<7 | 0x4B,\n\t30863 - 19968: jis0212<<14 | 0x2E<<7 | 0x4F,\n\t30865 - 19968: jis0208<<14 | 0x27<<7 | 0x49,\n\t30867 - 19968: jis0208<<14 | 0x10<<7 | 0x0F,\n\t30868 - 19968: jis0212<<14 | 0x2E<<7 | 0x50,\n\t30869 - 19968: jis0208<<14 | 0x19<<7 | 0x4B,\n\t30871 - 19968: jis0208<<14 | 0x2E<<7 | 0x31,\n\t30872 - 19968: jis0212<<14 | 0x2E<<7 | 0x51,\n\t30874 - 19968: jis0208<<14 | 0x41<<7 | 0x4F,\n\t30877 - 19968: jis0212<<14 | 0x2E<<7 | 0x53,\n\t30878 - 19968: jis0212<<14 | 0x2E<<7 | 0x54,\n\t30879 - 19968: jis0212<<14 | 0x2E<<7 | 0x55,\n\t30881 - 19968: jis0212<<14 | 0x2E<<7 | 0x52,\n\t30883 - 19968: jis0208<<14 | 0x41<<7 | 0x51,\n\t30884 - 19968: jis0212<<14 | 0x2E<<7 | 0x56,\n\t30887 - 19968: jis0208<<14 | 0x29<<7 | 0x2A,\n\t30888 - 19968: jis0212<<14 | 0x2E<<7 | 0x57,\n\t30889 - 19968: jis0208<<14 | 0x1F<<7 | 0x38,\n\t30890 - 19968: jis0208<<14 | 0x41<<7 | 0x53,\n\t30892 - 19968: jis0212<<14 | 0x2E<<7 | 0x58,\n\t30893 - 19968: jis0212<<14 | 0x2E<<7 | 0x59,\n\t30895 - 19968: jis0208<<14 | 0x41<<7 | 0x54,\n\t30896 - 19968: jis0212<<14 | 0x2E<<7 | 0x5A,\n\t30897 - 19968: jis0212<<14 | 0x2E<<7 | 0x5B,\n\t30898 - 19968: jis0212<<14 | 0x2E<<7 | 0x5C,\n\t30899 - 19968: jis0212<<14 | 0x2E<<7 | 0x5D,\n\t30901 - 19968: jis0208<<14 | 0x41<<7 | 0x52,\n\t30906 - 19968: jis0208<<14 | 0x12<<7 | 0x2D,\n\t30907 - 19968: jis0212<<14 | 0x2F<<7 | 0x00,\n\t30908 - 19968: jis0208<<14 | 0x41<<7 | 0x5A,\n\t30909 - 19968: jis0212<<14 | 0x2F<<7 | 0x01,\n\t30910 - 19968: jis0208<<14 | 0x41<<7 | 0x59,\n\t30911 - 19968: jis0212<<14 | 0x2F<<7 | 0x02,\n\t30913 - 19968: jis0208<<14 | 0x1B<<7 | 0x06,\n\t30917 - 19968: jis0208<<14 | 0x41<<7 | 0x5B,\n\t30918 - 19968: jis0208<<14 | 0x41<<7 | 0x56,\n\t30919 - 19968: jis0212<<14 | 0x2F<<7 | 0x03,\n\t30920 - 19968: jis0212<<14 | 0x2F<<7 | 0x04,\n\t30921 - 19968: jis0212<<14 | 0x2F<<7 | 0x05,\n\t30922 - 19968: jis0208<<14 | 0x41<<7 | 0x5C,\n\t30923 - 19968: jis0208<<14 | 0x41<<7 | 0x57,\n\t30924 - 19968: jis0212<<14 | 0x2F<<7 | 0x06,\n\t30926 - 19968: jis0212<<14 | 0x2F<<7 | 0x07,\n\t30928 - 19968: jis0208<<14 | 0x27<<7 | 0x37,\n\t30929 - 19968: jis0208<<14 | 0x41<<7 | 0x55,\n\t30930 - 19968: jis0212<<14 | 0x2F<<7 | 0x08,\n\t30931 - 19968: jis0212<<14 | 0x2F<<7 | 0x09,\n\t30932 - 19968: jis0208<<14 | 0x41<<7 | 0x58,\n\t30933 - 19968: jis0212<<14 | 0x2F<<7 | 0x0A,\n\t30934 - 19968: jis0212<<14 | 0x2F<<7 | 0x0B,\n\t30938 - 19968: jis0208<<14 | 0x42<<7 | 0x01,\n\t30939 - 19968: jis0212<<14 | 0x2F<<7 | 0x0D,\n\t30943 - 19968: jis0212<<14 | 0x2F<<7 | 0x0E,\n\t30944 - 19968: jis0212<<14 | 0x2F<<7 | 0x0F,\n\t30945 - 19968: jis0212<<14 | 0x2F<<7 | 0x10,\n\t30948 - 19968: jis0212<<14 | 0x2F<<7 | 0x0C,\n\t30950 - 19968: jis0212<<14 | 0x2F<<7 | 0x11,\n\t30951 - 19968: jis0208<<14 | 0x42<<7 | 0x00,\n\t30952 - 19968: jis0208<<14 | 0x2A<<7 | 0x40,\n\t30954 - 19968: jis0212<<14 | 0x2F<<7 | 0x12,\n\t30956 - 19968: jis0208<<14 | 0x41<<7 | 0x5D,\n\t30959 - 19968: jis0208<<14 | 0x0F<<7 | 0x4A,\n\t30962 - 19968: jis0212<<14 | 0x2F<<7 | 0x13,\n\t30963 - 19968: jis0212<<14 | 0x2F<<7 | 0x14,\n\t30964 - 19968: jis0208<<14 | 0x42<<7 | 0x03,\n\t30966 - 19968: jis0212<<14 | 0x2F<<7 | 0x16,\n\t30967 - 19968: jis0212<<14 | 0x2F<<7 | 0x17,\n\t30970 - 19968: jis0212<<14 | 0x2F<<7 | 0x18,\n\t30971 - 19968: jis0212<<14 | 0x2F<<7 | 0x19,\n\t30973 - 19968: jis0208<<14 | 0x42<<7 | 0x02,\n\t30975 - 19968: jis0212<<14 | 0x2F<<7 | 0x1A,\n\t30976 - 19968: jis0212<<14 | 0x2F<<7 | 0x15,\n\t30977 - 19968: jis0208<<14 | 0x1D<<7 | 0x2B,\n\t30982 - 19968: jis0212<<14 | 0x2F<<7 | 0x1B,\n\t30983 - 19968: jis0208<<14 | 0x42<<7 | 0x04,\n\t30988 - 19968: jis0212<<14 | 0x2F<<7 | 0x1C,\n\t30990 - 19968: jis0208<<14 | 0x20<<7 | 0x22,\n\t30992 - 19968: jis0212<<14 | 0x2F<<7 | 0x1D,\n\t30993 - 19968: jis0208<<14 | 0x42<<7 | 0x06,\n\t30994 - 19968: jis0208<<14 | 0x42<<7 | 0x05,\n\t31001 - 19968: jis0208<<14 | 0x42<<7 | 0x07,\n\t31002 - 19968: jis0212<<14 | 0x2F<<7 | 0x1E,\n\t31004 - 19968: jis0212<<14 | 0x2F<<7 | 0x1F,\n\t31006 - 19968: jis0212<<14 | 0x2F<<7 | 0x20,\n\t31007 - 19968: jis0212<<14 | 0x2F<<7 | 0x21,\n\t31008 - 19968: jis0212<<14 | 0x2F<<7 | 0x22,\n\t31013 - 19968: jis0212<<14 | 0x2F<<7 | 0x23,\n\t31014 - 19968: jis0208<<14 | 0x41<<7 | 0x47,\n\t31015 - 19968: jis0212<<14 | 0x2F<<7 | 0x24,\n\t31017 - 19968: jis0212<<14 | 0x2F<<7 | 0x25,\n\t31018 - 19968: jis0208<<14 | 0x41<<7 | 0x49,\n\t31019 - 19968: jis0208<<14 | 0x42<<7 | 0x09,\n\t31020 - 19968: jis0208<<14 | 0x42<<7 | 0x08,\n\t31021 - 19968: jis0212<<14 | 0x2F<<7 | 0x26,\n\t31024 - 19968: jis0208<<14 | 0x5A<<7 | 0x20,\n\t31025 - 19968: jis0212<<14 | 0x2F<<7 | 0x27,\n\t31028 - 19968: jis0212<<14 | 0x2F<<7 | 0x28,\n\t31029 - 19968: jis0212<<14 | 0x2F<<7 | 0x29,\n\t31034 - 19968: jis0208<<14 | 0x1B<<7 | 0x07,\n\t31035 - 19968: jis0212<<14 | 0x2F<<7 | 0x2A,\n\t31036 - 19968: jis0208<<14 | 0x2D<<7 | 0x48,\n\t31037 - 19968: jis0212<<14 | 0x2F<<7 | 0x2B,\n\t31038 - 19968: jis0208<<14 | 0x1B<<7 | 0x31,\n\t31039 - 19968: jis0212<<14 | 0x2F<<7 | 0x2C,\n\t31040 - 19968: jis0208<<14 | 0x42<<7 | 0x0A,\n\t31041 - 19968: jis0208<<14 | 0x16<<7 | 0x16,\n\t31044 - 19968: jis0212<<14 | 0x2F<<7 | 0x2D,\n\t31045 - 19968: jis0212<<14 | 0x2F<<7 | 0x2E,\n\t31046 - 19968: jis0212<<14 | 0x2F<<7 | 0x2F,\n\t31047 - 19968: jis0208<<14 | 0x14<<7 | 0x1F,\n\t31048 - 19968: jis0208<<14 | 0x14<<7 | 0x06,\n\t31049 - 19968: jis0208<<14 | 0x1A<<7 | 0x42,\n\t31050 - 19968: jis0212<<14 | 0x2F<<7 | 0x30,\n\t31051 - 19968: jis0212<<14 | 0x2F<<7 | 0x31,\n\t31055 - 19968: jis0212<<14 | 0x2F<<7 | 0x32,\n\t31056 - 19968: jis0208<<14 | 0x2C<<7 | 0x13,\n\t31057 - 19968: jis0212<<14 | 0x2F<<7 | 0x33,\n\t31059 - 19968: jis0208<<14 | 0x42<<7 | 0x10,\n\t31060 - 19968: jis0212<<14 | 0x2F<<7 | 0x34,\n\t31061 - 19968: jis0208<<14 | 0x42<<7 | 0x0F,\n\t31062 - 19968: jis0208<<14 | 0x20<<7 | 0x23,\n\t31063 - 19968: jis0208<<14 | 0x42<<7 | 0x0C,\n\t31064 - 19968: jis0212<<14 | 0x2F<<7 | 0x35,\n\t31066 - 19968: jis0208<<14 | 0x42<<7 | 0x0E,\n\t31067 - 19968: jis0212<<14 | 0x2F<<7 | 0x36,\n\t31068 - 19968: jis0212<<14 | 0x2F<<7 | 0x37,\n\t31069 - 19968: jis0208<<14 | 0x1C<<7 | 0x2A,\n\t31070 - 19968: jis0208<<14 | 0x1E<<7 | 0x1F,\n\t31071 - 19968: jis0208<<14 | 0x42<<7 | 0x0D,\n\t31072 - 19968: jis0208<<14 | 0x42<<7 | 0x0B,\n\t31074 - 19968: jis0208<<14 | 0x26<<7 | 0x09,\n\t31077 - 19968: jis0208<<14 | 0x1D<<7 | 0x2C,\n\t31079 - 19968: jis0212<<14 | 0x2F<<7 | 0x38,\n\t31080 - 19968: jis0208<<14 | 0x28<<7 | 0x1B,\n\t31081 - 19968: jis0212<<14 | 0x2F<<7 | 0x39,\n\t31083 - 19968: jis0212<<14 | 0x2F<<7 | 0x3A,\n\t31085 - 19968: jis0208<<14 | 0x19<<7 | 0x36,\n\t31090 - 19968: jis0212<<14 | 0x2F<<7 | 0x3B,\n\t31095 - 19968: jis0208<<14 | 0x24<<7 | 0x57,\n\t31097 - 19968: jis0212<<14 | 0x2F<<7 | 0x3C,\n\t31098 - 19968: jis0208<<14 | 0x42<<7 | 0x11,\n\t31099 - 19968: jis0212<<14 | 0x2F<<7 | 0x3D,\n\t31100 - 19968: jis0212<<14 | 0x2F<<7 | 0x3E,\n\t31102 - 19968: jis0212<<14 | 0x2F<<7 | 0x3F,\n\t31103 - 19968: jis0208<<14 | 0x42<<7 | 0x12,\n\t31104 - 19968: jis0208<<14 | 0x42<<7 | 0x28,\n\t31105 - 19968: jis0208<<14 | 0x15<<7 | 0x37,\n\t31108 - 19968: jis0208<<14 | 0x2E<<7 | 0x1C,\n\t31109 - 19968: jis0208<<14 | 0x20<<7 | 0x14,\n\t31114 - 19968: jis0208<<14 | 0x42<<7 | 0x13,\n\t31115 - 19968: jis0212<<14 | 0x2F<<7 | 0x40,\n\t31116 - 19968: jis0212<<14 | 0x2F<<7 | 0x41,\n\t31117 - 19968: jis0208<<14 | 0x11<<7 | 0x31,\n\t31118 - 19968: jis0208<<14 | 0x23<<7 | 0x56,\n\t31119 - 19968: jis0208<<14 | 0x29<<7 | 0x00,\n\t31121 - 19968: jis0212<<14 | 0x2F<<7 | 0x42,\n\t31123 - 19968: jis0212<<14 | 0x2F<<7 | 0x43,\n\t31124 - 19968: jis0208<<14 | 0x5A<<7 | 0x24,\n\t31125 - 19968: jis0212<<14 | 0x2F<<7 | 0x45,\n\t31126 - 19968: jis0212<<14 | 0x2F<<7 | 0x46,\n\t31128 - 19968: jis0212<<14 | 0x2F<<7 | 0x47,\n\t31131 - 19968: jis0208<<14 | 0x5A<<7 | 0x26,\n\t31132 - 19968: jis0212<<14 | 0x2F<<7 | 0x49,\n\t31133 - 19968: jis0208<<14 | 0x42<<7 | 0x14,\n\t31137 - 19968: jis0212<<14 | 0x2F<<7 | 0x4A,\n\t31142 - 19968: jis0208<<14 | 0x14<<7 | 0x59,\n\t31143 - 19968: jis0208<<14 | 0x42<<7 | 0x15,\n\t31144 - 19968: jis0212<<14 | 0x2F<<7 | 0x4B,\n\t31145 - 19968: jis0212<<14 | 0x2F<<7 | 0x4C,\n\t31146 - 19968: jis0208<<14 | 0x42<<7 | 0x17,\n\t31147 - 19968: jis0212<<14 | 0x2F<<7 | 0x4D,\n\t31150 - 19968: jis0208<<14 | 0x42<<7 | 0x18,\n\t31151 - 19968: jis0212<<14 | 0x2F<<7 | 0x4E,\n\t31152 - 19968: jis0208<<14 | 0x26<<7 | 0x08,\n\t31153 - 19968: jis0212<<14 | 0x2F<<7 | 0x4F,\n\t31155 - 19968: jis0208<<14 | 0x42<<7 | 0x19,\n\t31156 - 19968: jis0212<<14 | 0x2F<<7 | 0x50,\n\t31160 - 19968: jis0212<<14 | 0x2F<<7 | 0x51,\n\t31161 - 19968: jis0208<<14 | 0x42<<7 | 0x1A,\n\t31162 - 19968: jis0208<<14 | 0x42<<7 | 0x1B,\n\t31163 - 19968: jis0212<<14 | 0x2F<<7 | 0x52,\n\t31165 - 19968: jis0208<<14 | 0x15<<7 | 0x38,\n\t31166 - 19968: jis0208<<14 | 0x11<<7 | 0x32,\n\t31167 - 19968: jis0208<<14 | 0x25<<7 | 0x24,\n\t31168 - 19968: jis0208<<14 | 0x1C<<7 | 0x07,\n\t31169 - 19968: jis0208<<14 | 0x1A<<7 | 0x43,\n\t31170 - 19968: jis0212<<14 | 0x2F<<7 | 0x53,\n\t31172 - 19968: jis0212<<14 | 0x2F<<7 | 0x54,\n\t31175 - 19968: jis0212<<14 | 0x2F<<7 | 0x55,\n\t31176 - 19968: jis0212<<14 | 0x2F<<7 | 0x56,\n\t31177 - 19968: jis0208<<14 | 0x42<<7 | 0x1C,\n\t31178 - 19968: jis0212<<14 | 0x2F<<7 | 0x57,\n\t31179 - 19968: jis0208<<14 | 0x1C<<7 | 0x08,\n\t31183 - 19968: jis0212<<14 | 0x2F<<7 | 0x58,\n\t31185 - 19968: jis0208<<14 | 0x11<<7 | 0x29,\n\t31186 - 19968: jis0208<<14 | 0x28<<7 | 0x22,\n\t31188 - 19968: jis0212<<14 | 0x2F<<7 | 0x59,\n\t31189 - 19968: jis0208<<14 | 0x42<<7 | 0x1D,\n\t31190 - 19968: jis0212<<14 | 0x2F<<7 | 0x5A,\n\t31192 - 19968: jis0208<<14 | 0x27<<7 | 0x4A,\n\t31194 - 19968: jis0212<<14 | 0x2F<<7 | 0x5B,\n\t31197 - 19968: jis0212<<14 | 0x2F<<7 | 0x5C,\n\t31198 - 19968: jis0212<<14 | 0x2F<<7 | 0x5D,\n\t31199 - 19968: jis0208<<14 | 0x20<<7 | 0x24,\n\t31200 - 19968: jis0212<<14 | 0x30<<7 | 0x00,\n\t31201 - 19968: jis0208<<14 | 0x42<<7 | 0x20,\n\t31202 - 19968: jis0212<<14 | 0x30<<7 | 0x01,\n\t31203 - 19968: jis0208<<14 | 0x42<<7 | 0x21,\n\t31204 - 19968: jis0208<<14 | 0x26<<7 | 0x48,\n\t31205 - 19968: jis0212<<14 | 0x30<<7 | 0x02,\n\t31206 - 19968: jis0208<<14 | 0x1E<<7 | 0x20,\n\t31207 - 19968: jis0208<<14 | 0x42<<7 | 0x1E,\n\t31209 - 19968: jis0208<<14 | 0x22<<7 | 0x40,\n\t31210 - 19968: jis0212<<14 | 0x30<<7 | 0x03,\n\t31211 - 19968: jis0212<<14 | 0x30<<7 | 0x04,\n\t31212 - 19968: jis0208<<14 | 0x42<<7 | 0x1F,\n\t31213 - 19968: jis0212<<14 | 0x30<<7 | 0x05,\n\t31216 - 19968: jis0208<<14 | 0x1D<<7 | 0x2D,\n\t31217 - 19968: jis0212<<14 | 0x30<<7 | 0x06,\n\t31224 - 19968: jis0212<<14 | 0x30<<7 | 0x07,\n\t31227 - 19968: jis0208<<14 | 0x0F<<7 | 0x3B,\n\t31228 - 19968: jis0212<<14 | 0x30<<7 | 0x08,\n\t31232 - 19968: jis0208<<14 | 0x14<<7 | 0x08,\n\t31234 - 19968: jis0212<<14 | 0x30<<7 | 0x09,\n\t31235 - 19968: jis0212<<14 | 0x30<<7 | 0x0A,\n\t31239 - 19968: jis0212<<14 | 0x30<<7 | 0x0B,\n\t31240 - 19968: jis0208<<14 | 0x42<<7 | 0x22,\n\t31241 - 19968: jis0212<<14 | 0x30<<7 | 0x0C,\n\t31242 - 19968: jis0212<<14 | 0x30<<7 | 0x0D,\n\t31243 - 19968: jis0208<<14 | 0x23<<7 | 0x57,\n\t31244 - 19968: jis0212<<14 | 0x30<<7 | 0x0E,\n\t31245 - 19968: jis0208<<14 | 0x42<<7 | 0x23,\n\t31246 - 19968: jis0208<<14 | 0x1F<<7 | 0x26,\n\t31249 - 19968: jis0212<<14 | 0x30<<7 | 0x0F,\n\t31252 - 19968: jis0208<<14 | 0x2B<<7 | 0x0C,\n\t31253 - 19968: jis0212<<14 | 0x30<<7 | 0x10,\n\t31255 - 19968: jis0208<<14 | 0x28<<7 | 0x02,\n\t31256 - 19968: jis0208<<14 | 0x42<<7 | 0x24,\n\t31257 - 19968: jis0208<<14 | 0x42<<7 | 0x25,\n\t31258 - 19968: jis0208<<14 | 0x22<<7 | 0x34,\n\t31259 - 19968: jis0212<<14 | 0x30<<7 | 0x11,\n\t31260 - 19968: jis0208<<14 | 0x2D<<7 | 0x26,\n\t31262 - 19968: jis0212<<14 | 0x30<<7 | 0x12,\n\t31263 - 19968: jis0208<<14 | 0x42<<7 | 0x27,\n\t31264 - 19968: jis0208<<14 | 0x42<<7 | 0x26,\n\t31265 - 19968: jis0212<<14 | 0x30<<7 | 0x13,\n\t31271 - 19968: jis0212<<14 | 0x30<<7 | 0x14,\n\t31275 - 19968: jis0212<<14 | 0x30<<7 | 0x15,\n\t31277 - 19968: jis0212<<14 | 0x30<<7 | 0x16,\n\t31278 - 19968: jis0208<<14 | 0x1B<<7 | 0x4E,\n\t31279 - 19968: jis0212<<14 | 0x30<<7 | 0x17,\n\t31280 - 19968: jis0212<<14 | 0x30<<7 | 0x18,\n\t31281 - 19968: jis0208<<14 | 0x42<<7 | 0x29,\n\t31282 - 19968: jis0208<<14 | 0x0F<<7 | 0x4F,\n\t31284 - 19968: jis0212<<14 | 0x30<<7 | 0x19,\n\t31285 - 19968: jis0212<<14 | 0x30<<7 | 0x1A,\n\t31287 - 19968: jis0208<<14 | 0x42<<7 | 0x2C,\n\t31288 - 19968: jis0212<<14 | 0x30<<7 | 0x1B,\n\t31289 - 19968: jis0212<<14 | 0x30<<7 | 0x1C,\n\t31290 - 19968: jis0212<<14 | 0x30<<7 | 0x1D,\n\t31291 - 19968: jis0208<<14 | 0x42<<7 | 0x2A,\n\t31292 - 19968: jis0208<<14 | 0x11<<7 | 0x33,\n\t31293 - 19968: jis0208<<14 | 0x16<<7 | 0x2D,\n\t31294 - 19968: jis0208<<14 | 0x42<<7 | 0x2B,\n\t31295 - 19968: jis0208<<14 | 0x18<<7 | 0x25,\n\t31296 - 19968: jis0208<<14 | 0x18<<7 | 0x51,\n\t31298 - 19968: jis0208<<14 | 0x29<<7 | 0x45,\n\t31299 - 19968: jis0208<<14 | 0x42<<7 | 0x2D,\n\t31300 - 19968: jis0212<<14 | 0x30<<7 | 0x1E,\n\t31301 - 19968: jis0212<<14 | 0x30<<7 | 0x1F,\n\t31302 - 19968: jis0208<<14 | 0x2A<<7 | 0x33,\n\t31303 - 19968: jis0212<<14 | 0x30<<7 | 0x20,\n\t31304 - 19968: jis0212<<14 | 0x30<<7 | 0x21,\n\t31305 - 19968: jis0208<<14 | 0x42<<7 | 0x2F,\n\t31308 - 19968: jis0212<<14 | 0x30<<7 | 0x22,\n\t31309 - 19968: jis0208<<14 | 0x1F<<7 | 0x30,\n\t31310 - 19968: jis0208<<14 | 0x10<<7 | 0x2E,\n\t31311 - 19968: jis0208<<14 | 0x11<<7 | 0x19,\n\t31312 - 19968: jis0208<<14 | 0x0F<<7 | 0x0B,\n\t31317 - 19968: jis0212<<14 | 0x30<<7 | 0x23,\n\t31318 - 19968: jis0212<<14 | 0x30<<7 | 0x24,\n\t31319 - 19968: jis0208<<14 | 0x42<<7 | 0x2E,\n\t31321 - 19968: jis0212<<14 | 0x30<<7 | 0x25,\n\t31324 - 19968: jis0212<<14 | 0x30<<7 | 0x26,\n\t31325 - 19968: jis0212<<14 | 0x30<<7 | 0x27,\n\t31327 - 19968: jis0212<<14 | 0x30<<7 | 0x28,\n\t31328 - 19968: jis0212<<14 | 0x30<<7 | 0x29,\n\t31329 - 19968: jis0208<<14 | 0x42<<7 | 0x30,\n\t31330 - 19968: jis0208<<14 | 0x42<<7 | 0x31,\n\t31331 - 19968: jis0208<<14 | 0x1D<<7 | 0x56,\n\t31333 - 19968: jis0212<<14 | 0x30<<7 | 0x2A,\n\t31335 - 19968: jis0212<<14 | 0x30<<7 | 0x2B,\n\t31337 - 19968: jis0208<<14 | 0x42<<7 | 0x32,\n\t31338 - 19968: jis0212<<14 | 0x30<<7 | 0x2C,\n\t31339 - 19968: jis0208<<14 | 0x12<<7 | 0x2E,\n\t31341 - 19968: jis0212<<14 | 0x30<<7 | 0x2D,\n\t31344 - 19968: jis0208<<14 | 0x42<<7 | 0x34,\n\t31348 - 19968: jis0208<<14 | 0x16<<7 | 0x49,\n\t31349 - 19968: jis0212<<14 | 0x30<<7 | 0x2E,\n\t31350 - 19968: jis0208<<14 | 0x14<<7 | 0x45,\n\t31352 - 19968: jis0212<<14 | 0x30<<7 | 0x2F,\n\t31353 - 19968: jis0208<<14 | 0x42<<7 | 0x35,\n\t31354 - 19968: jis0208<<14 | 0x15<<7 | 0x54,\n\t31357 - 19968: jis0208<<14 | 0x42<<7 | 0x36,\n\t31358 - 19968: jis0212<<14 | 0x30<<7 | 0x30,\n\t31359 - 19968: jis0208<<14 | 0x1F<<7 | 0x5B,\n\t31360 - 19968: jis0212<<14 | 0x30<<7 | 0x31,\n\t31361 - 19968: jis0208<<14 | 0x25<<7 | 0x2C,\n\t31362 - 19968: jis0212<<14 | 0x30<<7 | 0x32,\n\t31363 - 19968: jis0208<<14 | 0x1F<<7 | 0x3F,\n\t31364 - 19968: jis0208<<14 | 0x19<<7 | 0x54,\n\t31365 - 19968: jis0212<<14 | 0x30<<7 | 0x33,\n\t31366 - 19968: jis0212<<14 | 0x30<<7 | 0x34,\n\t31368 - 19968: jis0208<<14 | 0x42<<7 | 0x37,\n\t31370 - 19968: jis0212<<14 | 0x30<<7 | 0x35,\n\t31371 - 19968: jis0212<<14 | 0x30<<7 | 0x36,\n\t31376 - 19968: jis0212<<14 | 0x30<<7 | 0x37,\n\t31377 - 19968: jis0212<<14 | 0x30<<7 | 0x38,\n\t31378 - 19968: jis0208<<14 | 0x22<<7 | 0x41,\n\t31379 - 19968: jis0208<<14 | 0x20<<7 | 0x4A,\n\t31380 - 19968: jis0212<<14 | 0x30<<7 | 0x39,\n\t31381 - 19968: jis0208<<14 | 0x42<<7 | 0x39,\n\t31382 - 19968: jis0208<<14 | 0x42<<7 | 0x3B,\n\t31383 - 19968: jis0208<<14 | 0x42<<7 | 0x38,\n\t31384 - 19968: jis0208<<14 | 0x42<<7 | 0x3A,\n\t31390 - 19968: jis0212<<14 | 0x30<<7 | 0x3A,\n\t31391 - 19968: jis0208<<14 | 0x16<<7 | 0x01,\n\t31392 - 19968: jis0212<<14 | 0x30<<7 | 0x3B,\n\t31395 - 19968: jis0212<<14 | 0x30<<7 | 0x3C,\n\t31401 - 19968: jis0208<<14 | 0x42<<7 | 0x3C,\n\t31402 - 19968: jis0208<<14 | 0x16<<7 | 0x05,\n\t31404 - 19968: jis0212<<14 | 0x30<<7 | 0x3D,\n\t31406 - 19968: jis0208<<14 | 0x14<<7 | 0x46,\n\t31407 - 19968: jis0208<<14 | 0x2C<<7 | 0x31,\n\t31408 - 19968: jis0208<<14 | 0x42<<7 | 0x3E,\n\t31411 - 19968: jis0212<<14 | 0x30<<7 | 0x3E,\n\t31413 - 19968: jis0212<<14 | 0x30<<7 | 0x3F,\n\t31414 - 19968: jis0208<<14 | 0x42<<7 | 0x3F,\n\t31417 - 19968: jis0212<<14 | 0x30<<7 | 0x40,\n\t31418 - 19968: jis0208<<14 | 0x10<<7 | 0x0D,\n\t31419 - 19968: jis0212<<14 | 0x30<<7 | 0x41,\n\t31420 - 19968: jis0212<<14 | 0x30<<7 | 0x42,\n\t31423 - 19968: jis0208<<14 | 0x42<<7 | 0x42,\n\t31427 - 19968: jis0208<<14 | 0x12<<7 | 0x55,\n\t31428 - 19968: jis0208<<14 | 0x42<<7 | 0x41,\n\t31429 - 19968: jis0208<<14 | 0x42<<7 | 0x40,\n\t31430 - 19968: jis0212<<14 | 0x30<<7 | 0x43,\n\t31431 - 19968: jis0208<<14 | 0x42<<7 | 0x44,\n\t31432 - 19968: jis0208<<14 | 0x42<<7 | 0x3D,\n\t31433 - 19968: jis0212<<14 | 0x30<<7 | 0x44,\n\t31434 - 19968: jis0208<<14 | 0x42<<7 | 0x45,\n\t31435 - 19968: jis0208<<14 | 0x2D<<7 | 0x08,\n\t31436 - 19968: jis0212<<14 | 0x30<<7 | 0x45,\n\t31437 - 19968: jis0208<<14 | 0x42<<7 | 0x46,\n\t31438 - 19968: jis0212<<14 | 0x30<<7 | 0x46,\n\t31439 - 19968: jis0208<<14 | 0x42<<7 | 0x47,\n\t31441 - 19968: jis0208<<14 | 0x5A<<7 | 0x27,\n\t31442 - 19968: jis0208<<14 | 0x33<<7 | 0x53,\n\t31443 - 19968: jis0208<<14 | 0x42<<7 | 0x49,\n\t31445 - 19968: jis0208<<14 | 0x42<<7 | 0x48,\n\t31449 - 19968: jis0208<<14 | 0x42<<7 | 0x4A,\n\t31450 - 19968: jis0208<<14 | 0x42<<7 | 0x4B,\n\t31451 - 19968: jis0212<<14 | 0x30<<7 | 0x48,\n\t31452 - 19968: jis0208<<14 | 0x2D<<7 | 0x14,\n\t31453 - 19968: jis0208<<14 | 0x42<<7 | 0x4C,\n\t31455 - 19968: jis0208<<14 | 0x4F<<7 | 0x4E,\n\t31456 - 19968: jis0208<<14 | 0x1D<<7 | 0x2E,\n\t31457 - 19968: jis0208<<14 | 0x42<<7 | 0x4D,\n\t31458 - 19968: jis0208<<14 | 0x42<<7 | 0x4E,\n\t31459 - 19968: jis0208<<14 | 0x1C<<7 | 0x36,\n\t31461 - 19968: jis0208<<14 | 0x25<<7 | 0x17,\n\t31462 - 19968: jis0208<<14 | 0x42<<7 | 0x4F,\n\t31463 - 19968: jis0208<<14 | 0x5A<<7 | 0x28,\n\t31464 - 19968: jis0212<<14 | 0x30<<7 | 0x49,\n\t31465 - 19968: jis0212<<14 | 0x30<<7 | 0x4A,\n\t31466 - 19968: jis0208<<14 | 0x22<<7 | 0x07,\n\t31467 - 19968: jis0208<<14 | 0x5A<<7 | 0x2A,\n\t31468 - 19968: jis0212<<14 | 0x30<<7 | 0x4C,\n\t31469 - 19968: jis0208<<14 | 0x42<<7 | 0x50,\n\t31471 - 19968: jis0208<<14 | 0x22<<7 | 0x1B,\n\t31472 - 19968: jis0208<<14 | 0x42<<7 | 0x51,\n\t31473 - 19968: jis0212<<14 | 0x30<<7 | 0x4D,\n\t31476 - 19968: jis0212<<14 | 0x30<<7 | 0x4E,\n\t31478 - 19968: jis0208<<14 | 0x15<<7 | 0x04,\n\t31480 - 19968: jis0208<<14 | 0x30<<7 | 0x1E,\n\t31481 - 19968: jis0208<<14 | 0x22<<7 | 0x3C,\n\t31482 - 19968: jis0208<<14 | 0x1B<<7 | 0x12,\n\t31483 - 19968: jis0212<<14 | 0x30<<7 | 0x4F,\n\t31485 - 19968: jis0212<<14 | 0x30<<7 | 0x50,\n\t31486 - 19968: jis0212<<14 | 0x30<<7 | 0x51,\n\t31487 - 19968: jis0208<<14 | 0x13<<7 | 0x27,\n\t31490 - 19968: jis0208<<14 | 0x42<<7 | 0x52,\n\t31492 - 19968: jis0208<<14 | 0x43<<7 | 0x01,\n\t31494 - 19968: jis0208<<14 | 0x42<<7 | 0x55,\n\t31495 - 19968: jis0212<<14 | 0x30<<7 | 0x52,\n\t31496 - 19968: jis0208<<14 | 0x14<<7 | 0x47,\n\t31498 - 19968: jis0208<<14 | 0x42<<7 | 0x54,\n\t31499 - 19968: jis0208<<14 | 0x43<<7 | 0x03,\n\t31503 - 19968: jis0208<<14 | 0x42<<7 | 0x53,\n\t31505 - 19968: jis0208<<14 | 0x1D<<7 | 0x2F,\n\t31508 - 19968: jis0212<<14 | 0x30<<7 | 0x53,\n\t31512 - 19968: jis0208<<14 | 0x42<<7 | 0x57,\n\t31513 - 19968: jis0208<<14 | 0x42<<7 | 0x58,\n\t31515 - 19968: jis0208<<14 | 0x24<<7 | 0x0A,\n\t31518 - 19968: jis0208<<14 | 0x42<<7 | 0x59,\n\t31519 - 19968: jis0212<<14 | 0x30<<7 | 0x54,\n\t31520 - 19968: jis0208<<14 | 0x12<<7 | 0x3D,\n\t31523 - 19968: jis0212<<14 | 0x30<<7 | 0x55,\n\t31525 - 19968: jis0208<<14 | 0x1E<<7 | 0x39,\n\t31526 - 19968: jis0208<<14 | 0x28<<7 | 0x43,\n\t31527 - 19968: jis0212<<14 | 0x30<<7 | 0x56,\n\t31528 - 19968: jis0208<<14 | 0x42<<7 | 0x5B,\n\t31529 - 19968: jis0212<<14 | 0x30<<7 | 0x57,\n\t31530 - 19968: jis0212<<14 | 0x30<<7 | 0x58,\n\t31531 - 19968: jis0212<<14 | 0x30<<7 | 0x59,\n\t31532 - 19968: jis0208<<14 | 0x21<<7 | 0x47,\n\t31533 - 19968: jis0212<<14 | 0x30<<7 | 0x5A,\n\t31534 - 19968: jis0212<<14 | 0x30<<7 | 0x5B,\n\t31535 - 19968: jis0212<<14 | 0x30<<7 | 0x5C,\n\t31536 - 19968: jis0212<<14 | 0x30<<7 | 0x5D,\n\t31537 - 19968: jis0212<<14 | 0x31<<7 | 0x00,\n\t31539 - 19968: jis0208<<14 | 0x42<<7 | 0x56,\n\t31540 - 19968: jis0212<<14 | 0x31<<7 | 0x01,\n\t31541 - 19968: jis0208<<14 | 0x42<<7 | 0x5A,\n\t31542 - 19968: jis0208<<14 | 0x42<<7 | 0x5C,\n\t31545 - 19968: jis0208<<14 | 0x19<<7 | 0x5A,\n\t31549 - 19968: jis0212<<14 | 0x31<<7 | 0x02,\n\t31551 - 19968: jis0212<<14 | 0x31<<7 | 0x03,\n\t31552 - 19968: jis0212<<14 | 0x31<<7 | 0x04,\n\t31553 - 19968: jis0212<<14 | 0x31<<7 | 0x05,\n\t31557 - 19968: jis0208<<14 | 0x43<<7 | 0x05,\n\t31558 - 19968: jis0208<<14 | 0x28<<7 | 0x0D,\n\t31559 - 19968: jis0212<<14 | 0x31<<7 | 0x06,\n\t31560 - 19968: jis0208<<14 | 0x27<<7 | 0x05,\n\t31561 - 19968: jis0208<<14 | 0x24<<7 | 0x58,\n\t31563 - 19968: jis0208<<14 | 0x15<<7 | 0x39,\n\t31564 - 19968: jis0208<<14 | 0x43<<7 | 0x04,\n\t31565 - 19968: jis0208<<14 | 0x43<<7 | 0x02,\n\t31566 - 19968: jis0212<<14 | 0x31<<7 | 0x07,\n\t31567 - 19968: jis0208<<14 | 0x27<<7 | 0x14,\n\t31568 - 19968: jis0208<<14 | 0x42<<7 | 0x5D,\n\t31569 - 19968: jis0208<<14 | 0x22<<7 | 0x3D,\n\t31570 - 19968: jis0208<<14 | 0x24<<7 | 0x5A,\n\t31572 - 19968: jis0208<<14 | 0x24<<7 | 0x59,\n\t31573 - 19968: jis0212<<14 | 0x31<<7 | 0x08,\n\t31574 - 19968: jis0208<<14 | 0x19<<7 | 0x55,\n\t31581 - 19968: jis0208<<14 | 0x43<<7 | 0x17,\n\t31584 - 19968: jis0212<<14 | 0x31<<7 | 0x09,\n\t31588 - 19968: jis0212<<14 | 0x31<<7 | 0x0A,\n\t31589 - 19968: jis0208<<14 | 0x43<<7 | 0x07,\n\t31590 - 19968: jis0212<<14 | 0x31<<7 | 0x0B,\n\t31591 - 19968: jis0208<<14 | 0x43<<7 | 0x09,\n\t31593 - 19968: jis0212<<14 | 0x31<<7 | 0x0C,\n\t31594 - 19968: jis0212<<14 | 0x31<<7 | 0x0D,\n\t31596 - 19968: jis0208<<14 | 0x43<<7 | 0x0C,\n\t31597 - 19968: jis0212<<14 | 0x31<<7 | 0x0E,\n\t31598 - 19968: jis0208<<14 | 0x43<<7 | 0x0D,\n\t31599 - 19968: jis0212<<14 | 0x31<<7 | 0x0F,\n\t31600 - 19968: jis0208<<14 | 0x43<<7 | 0x0A,\n\t31601 - 19968: jis0208<<14 | 0x43<<7 | 0x0B,\n\t31602 - 19968: jis0212<<14 | 0x31<<7 | 0x10,\n\t31603 - 19968: jis0212<<14 | 0x31<<7 | 0x11,\n\t31604 - 19968: jis0208<<14 | 0x43<<7 | 0x08,\n\t31605 - 19968: jis0208<<14 | 0x43<<7 | 0x06,\n\t31607 - 19968: jis0212<<14 | 0x31<<7 | 0x12,\n\t31610 - 19968: jis0208<<14 | 0x43<<7 | 0x00,\n\t31620 - 19968: jis0212<<14 | 0x31<<7 | 0x13,\n\t31622 - 19968: jis0208<<14 | 0x29<<7 | 0x2E,\n\t31623 - 19968: jis0208<<14 | 0x11<<7 | 0x34,\n\t31625 - 19968: jis0212<<14 | 0x31<<7 | 0x14,\n\t31627 - 19968: jis0208<<14 | 0x43<<7 | 0x14,\n\t31629 - 19968: jis0208<<14 | 0x43<<7 | 0x11,\n\t31630 - 19968: jis0212<<14 | 0x31<<7 | 0x15,\n\t31631 - 19968: jis0208<<14 | 0x43<<7 | 0x16,\n\t31632 - 19968: jis0212<<14 | 0x31<<7 | 0x16,\n\t31633 - 19968: jis0212<<14 | 0x31<<7 | 0x17,\n\t31634 - 19968: jis0208<<14 | 0x43<<7 | 0x15,\n\t31636 - 19968: jis0208<<14 | 0x26<<7 | 0x52,\n\t31637 - 19968: jis0208<<14 | 0x2B<<7 | 0x06,\n\t31638 - 19968: jis0212<<14 | 0x31<<7 | 0x18,\n\t31639 - 19968: jis0208<<14 | 0x1A<<7 | 0x1A,\n\t31640 - 19968: jis0208<<14 | 0x43<<7 | 0x0F,\n\t31641 - 19968: jis0208<<14 | 0x43<<7 | 0x18,\n\t31642 - 19968: jis0208<<14 | 0x43<<7 | 0x13,\n\t31643 - 19968: jis0212<<14 | 0x31<<7 | 0x19,\n\t31644 - 19968: jis0208<<14 | 0x43<<7 | 0x12,\n\t31645 - 19968: jis0208<<14 | 0x43<<7 | 0x0E,\n\t31646 - 19968: jis0208<<14 | 0x5A<<7 | 0x2B,\n\t31647 - 19968: jis0208<<14 | 0x43<<7 | 0x10,\n\t31648 - 19968: jis0212<<14 | 0x31<<7 | 0x1B,\n\t31649 - 19968: jis0208<<14 | 0x13<<7 | 0x28,\n\t31653 - 19968: jis0212<<14 | 0x31<<7 | 0x1C,\n\t31658 - 19968: jis0208<<14 | 0x22<<7 | 0x1C,\n\t31660 - 19968: jis0212<<14 | 0x31<<7 | 0x1D,\n\t31661 - 19968: jis0208<<14 | 0x1F<<7 | 0x5C,\n\t31663 - 19968: jis0212<<14 | 0x31<<7 | 0x1E,\n\t31664 - 19968: jis0212<<14 | 0x31<<7 | 0x1F,\n\t31665 - 19968: jis0208<<14 | 0x27<<7 | 0x01,\n\t31666 - 19968: jis0212<<14 | 0x31<<7 | 0x20,\n\t31668 - 19968: jis0208<<14 | 0x43<<7 | 0x1D,\n\t31669 - 19968: jis0212<<14 | 0x31<<7 | 0x21,\n\t31670 - 19968: jis0212<<14 | 0x31<<7 | 0x22,\n\t31672 - 19968: jis0208<<14 | 0x27<<7 | 0x03,\n\t31674 - 19968: jis0212<<14 | 0x31<<7 | 0x23,\n\t31675 - 19968: jis0212<<14 | 0x31<<7 | 0x24,\n\t31676 - 19968: jis0212<<14 | 0x31<<7 | 0x25,\n\t31677 - 19968: jis0212<<14 | 0x31<<7 | 0x26,\n\t31680 - 19968: jis0208<<14 | 0x1F<<7 | 0x40,\n\t31681 - 19968: jis0208<<14 | 0x43<<7 | 0x1A,\n\t31682 - 19968: jis0212<<14 | 0x31<<7 | 0x27,\n\t31684 - 19968: jis0208<<14 | 0x27<<7 | 0x2E,\n\t31685 - 19968: jis0212<<14 | 0x31<<7 | 0x28,\n\t31686 - 19968: jis0208<<14 | 0x43<<7 | 0x1E,\n\t31687 - 19968: jis0208<<14 | 0x29<<7 | 0x32,\n\t31688 - 19968: jis0212<<14 | 0x31<<7 | 0x29,\n\t31689 - 19968: jis0208<<14 | 0x22<<7 | 0x3A,\n\t31690 - 19968: jis0212<<14 | 0x31<<7 | 0x2A,\n\t31691 - 19968: jis0208<<14 | 0x43<<7 | 0x19,\n\t31692 - 19968: jis0208<<14 | 0x43<<7 | 0x1B,\n\t31695 - 19968: jis0208<<14 | 0x43<<7 | 0x1C,\n\t31700 - 19968: jis0212<<14 | 0x31<<7 | 0x2B,\n\t31702 - 19968: jis0212<<14 | 0x31<<7 | 0x2C,\n\t31703 - 19968: jis0212<<14 | 0x31<<7 | 0x2D,\n\t31705 - 19968: jis0212<<14 | 0x31<<7 | 0x2E,\n\t31706 - 19968: jis0212<<14 | 0x31<<7 | 0x2F,\n\t31707 - 19968: jis0212<<14 | 0x31<<7 | 0x30,\n\t31709 - 19968: jis0208<<14 | 0x43<<7 | 0x1F,\n\t31712 - 19968: jis0208<<14 | 0x1B<<7 | 0x23,\n\t31716 - 19968: jis0208<<14 | 0x25<<7 | 0x25,\n\t31717 - 19968: jis0208<<14 | 0x43<<7 | 0x24,\n\t31718 - 19968: jis0208<<14 | 0x43<<7 | 0x23,\n\t31720 - 19968: jis0212<<14 | 0x31<<7 | 0x31,\n\t31721 - 19968: jis0208<<14 | 0x43<<7 | 0x20,\n\t31722 - 19968: jis0212<<14 | 0x31<<7 | 0x32,\n\t31725 - 19968: jis0208<<14 | 0x2E<<7 | 0x15,\n\t31730 - 19968: jis0212<<14 | 0x31<<7 | 0x33,\n\t31731 - 19968: jis0208<<14 | 0x43<<7 | 0x29,\n\t31732 - 19968: jis0212<<14 | 0x31<<7 | 0x34,\n\t31733 - 19968: jis0212<<14 | 0x31<<7 | 0x35,\n\t31734 - 19968: jis0208<<14 | 0x43<<7 | 0x2D,\n\t31735 - 19968: jis0208<<14 | 0x43<<7 | 0x2A,\n\t31736 - 19968: jis0212<<14 | 0x31<<7 | 0x36,\n\t31737 - 19968: jis0212<<14 | 0x31<<7 | 0x37,\n\t31738 - 19968: jis0212<<14 | 0x31<<7 | 0x38,\n\t31740 - 19968: jis0212<<14 | 0x31<<7 | 0x39,\n\t31742 - 19968: jis0212<<14 | 0x31<<7 | 0x3A,\n\t31744 - 19968: jis0208<<14 | 0x43<<7 | 0x26,\n\t31745 - 19968: jis0212<<14 | 0x31<<7 | 0x3B,\n\t31746 - 19968: jis0212<<14 | 0x31<<7 | 0x3C,\n\t31747 - 19968: jis0212<<14 | 0x31<<7 | 0x3D,\n\t31748 - 19968: jis0212<<14 | 0x31<<7 | 0x3E,\n\t31750 - 19968: jis0212<<14 | 0x31<<7 | 0x3F,\n\t31751 - 19968: jis0208<<14 | 0x43<<7 | 0x27,\n\t31753 - 19968: jis0212<<14 | 0x31<<7 | 0x40,\n\t31755 - 19968: jis0212<<14 | 0x31<<7 | 0x41,\n\t31756 - 19968: jis0212<<14 | 0x31<<7 | 0x42,\n\t31757 - 19968: jis0208<<14 | 0x43<<7 | 0x2C,\n\t31758 - 19968: jis0212<<14 | 0x31<<7 | 0x43,\n\t31759 - 19968: jis0212<<14 | 0x31<<7 | 0x44,\n\t31761 - 19968: jis0208<<14 | 0x43<<7 | 0x21,\n\t31762 - 19968: jis0208<<14 | 0x31<<7 | 0x34,\n\t31763 - 19968: jis0208<<14 | 0x43<<7 | 0x28,\n\t31764 - 19968: jis0208<<14 | 0x43<<7 | 0x22,\n\t31767 - 19968: jis0208<<14 | 0x43<<7 | 0x2B,\n\t31769 - 19968: jis0212<<14 | 0x31<<7 | 0x45,\n\t31771 - 19968: jis0212<<14 | 0x31<<7 | 0x46,\n\t31775 - 19968: jis0208<<14 | 0x43<<7 | 0x31,\n\t31776 - 19968: jis0212<<14 | 0x31<<7 | 0x47,\n\t31777 - 19968: jis0208<<14 | 0x13<<7 | 0x29,\n\t31779 - 19968: jis0208<<14 | 0x43<<7 | 0x2E,\n\t31781 - 19968: jis0212<<14 | 0x31<<7 | 0x48,\n\t31782 - 19968: jis0212<<14 | 0x31<<7 | 0x49,\n\t31783 - 19968: jis0208<<14 | 0x43<<7 | 0x2F,\n\t31784 - 19968: jis0212<<14 | 0x31<<7 | 0x4A,\n\t31786 - 19968: jis0208<<14 | 0x43<<7 | 0x30,\n\t31787 - 19968: jis0208<<14 | 0x43<<7 | 0x33,\n\t31788 - 19968: jis0212<<14 | 0x31<<7 | 0x4B,\n\t31793 - 19968: jis0212<<14 | 0x31<<7 | 0x4C,\n\t31795 - 19968: jis0212<<14 | 0x31<<7 | 0x4D,\n\t31796 - 19968: jis0212<<14 | 0x31<<7 | 0x4E,\n\t31798 - 19968: jis0212<<14 | 0x31<<7 | 0x4F,\n\t31799 - 19968: jis0208<<14 | 0x43<<7 | 0x32,\n\t31800 - 19968: jis0208<<14 | 0x27<<7 | 0x55,\n\t31801 - 19968: jis0212<<14 | 0x31<<7 | 0x50,\n\t31802 - 19968: jis0212<<14 | 0x31<<7 | 0x51,\n\t31805 - 19968: jis0208<<14 | 0x43<<7 | 0x34,\n\t31806 - 19968: jis0208<<14 | 0x2D<<7 | 0x5B,\n\t31807 - 19968: jis0208<<14 | 0x29<<7 | 0x4C,\n\t31808 - 19968: jis0208<<14 | 0x43<<7 | 0x39,\n\t31811 - 19968: jis0208<<14 | 0x43<<7 | 0x36,\n\t31814 - 19968: jis0212<<14 | 0x31<<7 | 0x52,\n\t31818 - 19968: jis0212<<14 | 0x31<<7 | 0x53,\n\t31820 - 19968: jis0208<<14 | 0x43<<7 | 0x35,\n\t31821 - 19968: jis0208<<14 | 0x1F<<7 | 0x31,\n\t31823 - 19968: jis0208<<14 | 0x43<<7 | 0x38,\n\t31824 - 19968: jis0208<<14 | 0x43<<7 | 0x3A,\n\t31825 - 19968: jis0212<<14 | 0x31<<7 | 0x55,\n\t31826 - 19968: jis0212<<14 | 0x31<<7 | 0x56,\n\t31827 - 19968: jis0212<<14 | 0x31<<7 | 0x57,\n\t31828 - 19968: jis0208<<14 | 0x43<<7 | 0x37,\n\t31829 - 19968: jis0212<<14 | 0x31<<7 | 0x54,\n\t31830 - 19968: jis0208<<14 | 0x43<<7 | 0x3E,\n\t31832 - 19968: jis0208<<14 | 0x43<<7 | 0x3B,\n\t31833 - 19968: jis0212<<14 | 0x31<<7 | 0x58,\n\t31834 - 19968: jis0212<<14 | 0x31<<7 | 0x59,\n\t31835 - 19968: jis0212<<14 | 0x31<<7 | 0x5A,\n\t31836 - 19968: jis0212<<14 | 0x31<<7 | 0x5B,\n\t31837 - 19968: jis0212<<14 | 0x31<<7 | 0x5C,\n\t31838 - 19968: jis0212<<14 | 0x31<<7 | 0x5D,\n\t31839 - 19968: jis0208<<14 | 0x43<<7 | 0x3C,\n\t31840 - 19968: jis0208<<14 | 0x43<<7 | 0x25,\n\t31841 - 19968: jis0212<<14 | 0x32<<7 | 0x00,\n\t31843 - 19968: jis0212<<14 | 0x32<<7 | 0x01,\n\t31844 - 19968: jis0208<<14 | 0x43<<7 | 0x3D,\n\t31845 - 19968: jis0208<<14 | 0x43<<7 | 0x3F,\n\t31847 - 19968: jis0212<<14 | 0x32<<7 | 0x02,\n\t31849 - 19968: jis0212<<14 | 0x32<<7 | 0x03,\n\t31852 - 19968: jis0208<<14 | 0x43<<7 | 0x40,\n\t31853 - 19968: jis0212<<14 | 0x32<<7 | 0x04,\n\t31854 - 19968: jis0212<<14 | 0x32<<7 | 0x05,\n\t31856 - 19968: jis0212<<14 | 0x32<<7 | 0x06,\n\t31858 - 19968: jis0212<<14 | 0x32<<7 | 0x07,\n\t31859 - 19968: jis0208<<14 | 0x29<<7 | 0x25,\n\t31861 - 19968: jis0208<<14 | 0x43<<7 | 0x41,\n\t31865 - 19968: jis0212<<14 | 0x32<<7 | 0x08,\n\t31868 - 19968: jis0212<<14 | 0x32<<7 | 0x09,\n\t31869 - 19968: jis0212<<14 | 0x32<<7 | 0x0A,\n\t31870 - 19968: jis0208<<14 | 0x2B<<7 | 0x41,\n\t31873 - 19968: jis0208<<14 | 0x15<<7 | 0x2D,\n\t31874 - 19968: jis0208<<14 | 0x16<<7 | 0x08,\n\t31875 - 19968: jis0208<<14 | 0x43<<7 | 0x42,\n\t31878 - 19968: jis0212<<14 | 0x32<<7 | 0x0B,\n\t31879 - 19968: jis0212<<14 | 0x32<<7 | 0x0C,\n\t31881 - 19968: jis0208<<14 | 0x29<<7 | 0x13,\n\t31883 - 19968: jis0208<<14 | 0x1E<<7 | 0x47,\n\t31885 - 19968: jis0208<<14 | 0x2B<<7 | 0x0F,\n\t31887 - 19968: jis0212<<14 | 0x32<<7 | 0x0D,\n\t31888 - 19968: jis0208<<14 | 0x43<<7 | 0x43,\n\t31890 - 19968: jis0208<<14 | 0x2D<<7 | 0x12,\n\t31892 - 19968: jis0212<<14 | 0x32<<7 | 0x0E,\n\t31893 - 19968: jis0208<<14 | 0x26<<7 | 0x53,\n\t31895 - 19968: jis0208<<14 | 0x20<<7 | 0x25,\n\t31896 - 19968: jis0208<<14 | 0x26<<7 | 0x13,\n\t31899 - 19968: jis0208<<14 | 0x1C<<7 | 0x2C,\n\t31902 - 19968: jis0212<<14 | 0x32<<7 | 0x0F,\n\t31903 - 19968: jis0208<<14 | 0x0F<<7 | 0x1F,\n\t31904 - 19968: jis0212<<14 | 0x32<<7 | 0x10,\n\t31905 - 19968: jis0208<<14 | 0x43<<7 | 0x48,\n\t31906 - 19968: jis0208<<14 | 0x43<<7 | 0x46,\n\t31908 - 19968: jis0208<<14 | 0x43<<7 | 0x44,\n\t31909 - 19968: jis0208<<14 | 0x13<<7 | 0x00,\n\t31910 - 19968: jis0212<<14 | 0x32<<7 | 0x11,\n\t31911 - 19968: jis0208<<14 | 0x1D<<7 | 0x30,\n\t31912 - 19968: jis0208<<14 | 0x43<<7 | 0x49,\n\t31915 - 19968: jis0208<<14 | 0x43<<7 | 0x47,\n\t31917 - 19968: jis0208<<14 | 0x43<<7 | 0x45,\n\t31918 - 19968: jis0208<<14 | 0x43<<7 | 0x4D,\n\t31920 - 19968: jis0212<<14 | 0x32<<7 | 0x12,\n\t31921 - 19968: jis0208<<14 | 0x43<<7 | 0x4C,\n\t31922 - 19968: jis0208<<14 | 0x43<<7 | 0x4B,\n\t31923 - 19968: jis0208<<14 | 0x43<<7 | 0x4A,\n\t31926 - 19968: jis0212<<14 | 0x32<<7 | 0x13,\n\t31927 - 19968: jis0212<<14 | 0x32<<7 | 0x14,\n\t31929 - 19968: jis0208<<14 | 0x43<<7 | 0x4E,\n\t31930 - 19968: jis0212<<14 | 0x32<<7 | 0x15,\n\t31931 - 19968: jis0212<<14 | 0x32<<7 | 0x16,\n\t31932 - 19968: jis0212<<14 | 0x32<<7 | 0x17,\n\t31933 - 19968: jis0208<<14 | 0x43<<7 | 0x4F,\n\t31934 - 19968: jis0208<<14 | 0x1F<<7 | 0x19,\n\t31935 - 19968: jis0212<<14 | 0x32<<7 | 0x18,\n\t31936 - 19968: jis0208<<14 | 0x43<<7 | 0x50,\n\t31938 - 19968: jis0208<<14 | 0x43<<7 | 0x52,\n\t31940 - 19968: jis0212<<14 | 0x32<<7 | 0x19,\n\t31941 - 19968: jis0208<<14 | 0x43<<7 | 0x51,\n\t31943 - 19968: jis0212<<14 | 0x32<<7 | 0x1A,\n\t31944 - 19968: jis0212<<14 | 0x32<<7 | 0x1B,\n\t31945 - 19968: jis0212<<14 | 0x32<<7 | 0x1C,\n\t31946 - 19968: jis0208<<14 | 0x17<<7 | 0x31,\n\t31949 - 19968: jis0212<<14 | 0x32<<7 | 0x1D,\n\t31950 - 19968: jis0208<<14 | 0x20<<7 | 0x17,\n\t31951 - 19968: jis0212<<14 | 0x32<<7 | 0x1E,\n\t31954 - 19968: jis0208<<14 | 0x43<<7 | 0x54,\n\t31955 - 19968: jis0212<<14 | 0x32<<7 | 0x1F,\n\t31956 - 19968: jis0212<<14 | 0x32<<7 | 0x20,\n\t31957 - 19968: jis0212<<14 | 0x32<<7 | 0x21,\n\t31958 - 19968: jis0208<<14 | 0x24<<7 | 0x5B,\n\t31959 - 19968: jis0212<<14 | 0x32<<7 | 0x22,\n\t31960 - 19968: jis0208<<14 | 0x43<<7 | 0x53,\n\t31961 - 19968: jis0212<<14 | 0x32<<7 | 0x23,\n\t31962 - 19968: jis0212<<14 | 0x32<<7 | 0x24,\n\t31964 - 19968: jis0208<<14 | 0x43<<7 | 0x55,\n\t31965 - 19968: jis0212<<14 | 0x32<<7 | 0x25,\n\t31966 - 19968: jis0208<<14 | 0x29<<7 | 0x14,\n\t31967 - 19968: jis0208<<14 | 0x20<<7 | 0x4B,\n\t31968 - 19968: jis0208<<14 | 0x18<<7 | 0x26,\n\t31970 - 19968: jis0208<<14 | 0x43<<7 | 0x56,\n\t31974 - 19968: jis0212<<14 | 0x32<<7 | 0x26,\n\t31975 - 19968: jis0208<<14 | 0x2D<<7 | 0x27,\n\t31977 - 19968: jis0212<<14 | 0x32<<7 | 0x27,\n\t31979 - 19968: jis0212<<14 | 0x32<<7 | 0x28,\n\t31983 - 19968: jis0208<<14 | 0x43<<7 | 0x58,\n\t31986 - 19968: jis0208<<14 | 0x43<<7 | 0x59,\n\t31988 - 19968: jis0208<<14 | 0x43<<7 | 0x5A,\n\t31989 - 19968: jis0212<<14 | 0x32<<7 | 0x29,\n\t31990 - 19968: jis0208<<14 | 0x43<<7 | 0x5B,\n\t31992 - 19968: jis0208<<14 | 0x1A<<7 | 0x44,\n\t31994 - 19968: jis0208<<14 | 0x43<<7 | 0x5C,\n\t31995 - 19968: jis0208<<14 | 0x16<<7 | 0x2E,\n\t31998 - 19968: jis0208<<14 | 0x14<<7 | 0x49,\n\t32000 - 19968: jis0208<<14 | 0x14<<7 | 0x09,\n\t32002 - 19968: jis0208<<14 | 0x44<<7 | 0x00,\n\t32003 - 19968: jis0212<<14 | 0x32<<7 | 0x2A,\n\t32004 - 19968: jis0208<<14 | 0x2B<<7 | 0x52,\n\t32005 - 19968: jis0208<<14 | 0x18<<7 | 0x27,\n\t32006 - 19968: jis0208<<14 | 0x43<<7 | 0x5D,\n\t32007 - 19968: jis0212<<14 | 0x32<<7 | 0x2B,\n\t32008 - 19968: jis0212<<14 | 0x32<<7 | 0x2C,\n\t32009 - 19968: jis0212<<14 | 0x32<<7 | 0x2D,\n\t32010 - 19968: jis0208<<14 | 0x44<<7 | 0x03,\n\t32011 - 19968: jis0208<<14 | 0x2B<<7 | 0x45,\n\t32013 - 19968: jis0208<<14 | 0x26<<7 | 0x1B,\n\t32015 - 19968: jis0212<<14 | 0x32<<7 | 0x2E,\n\t32016 - 19968: jis0208<<14 | 0x28<<7 | 0x12,\n\t32017 - 19968: jis0212<<14 | 0x32<<7 | 0x2F,\n\t32018 - 19968: jis0212<<14 | 0x32<<7 | 0x30,\n\t32019 - 19968: jis0212<<14 | 0x32<<7 | 0x31,\n\t32020 - 19968: jis0208<<14 | 0x1C<<7 | 0x42,\n\t32021 - 19968: jis0208<<14 | 0x44<<7 | 0x02,\n\t32022 - 19968: jis0212<<14 | 0x32<<7 | 0x32,\n\t32023 - 19968: jis0208<<14 | 0x1B<<7 | 0x32,\n\t32024 - 19968: jis0208<<14 | 0x18<<7 | 0x28,\n\t32025 - 19968: jis0208<<14 | 0x1A<<7 | 0x45,\n\t32026 - 19968: jis0208<<14 | 0x14<<7 | 0x48,\n\t32027 - 19968: jis0208<<14 | 0x29<<7 | 0x15,\n\t32028 - 19968: jis0208<<14 | 0x44<<7 | 0x01,\n\t32029 - 19968: jis0212<<14 | 0x32<<7 | 0x33,\n\t32030 - 19968: jis0212<<14 | 0x32<<7 | 0x34,\n\t32032 - 19968: jis0208<<14 | 0x20<<7 | 0x26,\n\t32033 - 19968: jis0208<<14 | 0x2A<<7 | 0x21,\n\t32034 - 19968: jis0208<<14 | 0x19<<7 | 0x56,\n\t32035 - 19968: jis0212<<14 | 0x32<<7 | 0x35,\n\t32038 - 19968: jis0212<<14 | 0x32<<7 | 0x36,\n\t32042 - 19968: jis0212<<14 | 0x32<<7 | 0x37,\n\t32043 - 19968: jis0208<<14 | 0x1A<<7 | 0x46,\n\t32044 - 19968: jis0208<<14 | 0x23<<7 | 0x3C,\n\t32045 - 19968: jis0212<<14 | 0x32<<7 | 0x38,\n\t32046 - 19968: jis0208<<14 | 0x44<<7 | 0x06,\n\t32047 - 19968: jis0208<<14 | 0x2D<<7 | 0x3E,\n\t32048 - 19968: jis0208<<14 | 0x19<<7 | 0x38,\n\t32049 - 19968: jis0212<<14 | 0x32<<7 | 0x39,\n\t32050 - 19968: jis0208<<14 | 0x44<<7 | 0x07,\n\t32051 - 19968: jis0208<<14 | 0x1E<<7 | 0x21,\n\t32053 - 19968: jis0208<<14 | 0x44<<7 | 0x09,\n\t32057 - 19968: jis0208<<14 | 0x1D<<7 | 0x31,\n\t32058 - 19968: jis0208<<14 | 0x19<<7 | 0x0F,\n\t32060 - 19968: jis0212<<14 | 0x32<<7 | 0x3A,\n\t32061 - 19968: jis0212<<14 | 0x32<<7 | 0x3B,\n\t32062 - 19968: jis0212<<14 | 0x32<<7 | 0x3C,\n\t32063 - 19968: jis0208<<14 | 0x44<<7 | 0x08,\n\t32064 - 19968: jis0212<<14 | 0x32<<7 | 0x3D,\n\t32065 - 19968: jis0212<<14 | 0x32<<7 | 0x3E,\n\t32066 - 19968: jis0208<<14 | 0x1C<<7 | 0x09,\n\t32067 - 19968: jis0208<<14 | 0x17<<7 | 0x1D,\n\t32068 - 19968: jis0208<<14 | 0x20<<7 | 0x27,\n\t32069 - 19968: jis0208<<14 | 0x44<<7 | 0x04,\n\t32070 - 19968: jis0208<<14 | 0x44<<7 | 0x0A,\n\t32071 - 19968: jis0212<<14 | 0x32<<7 | 0x3F,\n\t32072 - 19968: jis0208<<14 | 0x5A<<7 | 0x2D,\n\t32075 - 19968: jis0208<<14 | 0x44<<7 | 0x05,\n\t32076 - 19968: jis0208<<14 | 0x16<<7 | 0x2F,\n\t32077 - 19968: jis0212<<14 | 0x32<<7 | 0x41,\n\t32078 - 19968: jis0208<<14 | 0x44<<7 | 0x0D,\n\t32079 - 19968: jis0208<<14 | 0x44<<7 | 0x11,\n\t32080 - 19968: jis0208<<14 | 0x16<<7 | 0x4A,\n\t32081 - 19968: jis0212<<14 | 0x32<<7 | 0x42,\n\t32083 - 19968: jis0212<<14 | 0x32<<7 | 0x43,\n\t32086 - 19968: jis0208<<14 | 0x44<<7 | 0x0C,\n\t32087 - 19968: jis0212<<14 | 0x32<<7 | 0x44,\n\t32089 - 19968: jis0212<<14 | 0x32<<7 | 0x45,\n\t32090 - 19968: jis0212<<14 | 0x32<<7 | 0x46,\n\t32091 - 19968: jis0208<<14 | 0x44<<7 | 0x15,\n\t32092 - 19968: jis0208<<14 | 0x5A<<7 | 0x2E,\n\t32093 - 19968: jis0212<<14 | 0x32<<7 | 0x48,\n\t32094 - 19968: jis0208<<14 | 0x18<<7 | 0x29,\n\t32097 - 19968: jis0208<<14 | 0x2C<<7 | 0x4C,\n\t32098 - 19968: jis0208<<14 | 0x0F<<7 | 0x1B,\n\t32099 - 19968: jis0208<<14 | 0x44<<7 | 0x12,\n\t32101 - 19968: jis0212<<14 | 0x32<<7 | 0x49,\n\t32102 - 19968: jis0208<<14 | 0x14<<7 | 0x4A,\n\t32103 - 19968: jis0212<<14 | 0x32<<7 | 0x4A,\n\t32104 - 19968: jis0208<<14 | 0x44<<7 | 0x0F,\n\t32106 - 19968: jis0212<<14 | 0x32<<7 | 0x4B,\n\t32110 - 19968: jis0208<<14 | 0x44<<7 | 0x10,\n\t32112 - 19968: jis0212<<14 | 0x32<<7 | 0x4C,\n\t32113 - 19968: jis0208<<14 | 0x24<<7 | 0x5C,\n\t32114 - 19968: jis0208<<14 | 0x44<<7 | 0x0E,\n\t32115 - 19968: jis0208<<14 | 0x44<<7 | 0x0B,\n\t32117 - 19968: jis0208<<14 | 0x12<<7 | 0x07,\n\t32118 - 19968: jis0208<<14 | 0x1F<<7 | 0x43,\n\t32120 - 19968: jis0212<<14 | 0x32<<7 | 0x4D,\n\t32121 - 19968: jis0208<<14 | 0x17<<7 | 0x07,\n\t32122 - 19968: jis0212<<14 | 0x32<<7 | 0x4E,\n\t32123 - 19968: jis0212<<14 | 0x32<<7 | 0x4F,\n\t32125 - 19968: jis0208<<14 | 0x44<<7 | 0x17,\n\t32127 - 19968: jis0212<<14 | 0x32<<7 | 0x50,\n\t32129 - 19968: jis0212<<14 | 0x32<<7 | 0x51,\n\t32130 - 19968: jis0212<<14 | 0x32<<7 | 0x52,\n\t32131 - 19968: jis0212<<14 | 0x32<<7 | 0x53,\n\t32133 - 19968: jis0212<<14 | 0x32<<7 | 0x54,\n\t32134 - 19968: jis0212<<14 | 0x32<<7 | 0x55,\n\t32136 - 19968: jis0212<<14 | 0x32<<7 | 0x56,\n\t32137 - 19968: jis0208<<14 | 0x44<<7 | 0x14,\n\t32139 - 19968: jis0212<<14 | 0x32<<7 | 0x57,\n\t32140 - 19968: jis0212<<14 | 0x32<<7 | 0x58,\n\t32141 - 19968: jis0212<<14 | 0x32<<7 | 0x59,\n\t32143 - 19968: jis0208<<14 | 0x44<<7 | 0x16,\n\t32145 - 19968: jis0212<<14 | 0x32<<7 | 0x5A,\n\t32147 - 19968: jis0208<<14 | 0x44<<7 | 0x13,\n\t32150 - 19968: jis0212<<14 | 0x32<<7 | 0x5B,\n\t32151 - 19968: jis0212<<14 | 0x32<<7 | 0x5C,\n\t32153 - 19968: jis0208<<14 | 0x16<<7 | 0x30,\n\t32154 - 19968: jis0208<<14 | 0x21<<7 | 0x12,\n\t32155 - 19968: jis0208<<14 | 0x44<<7 | 0x18,\n\t32156 - 19968: jis0208<<14 | 0x20<<7 | 0x4D,\n\t32157 - 19968: jis0212<<14 | 0x32<<7 | 0x5D,\n\t32158 - 19968: jis0212<<14 | 0x33<<7 | 0x00,\n\t32159 - 19968: jis0208<<14 | 0x44<<7 | 0x25,\n\t32160 - 19968: jis0208<<14 | 0x5A<<7 | 0x30,\n\t32162 - 19968: jis0208<<14 | 0x44<<7 | 0x21,\n\t32163 - 19968: jis0208<<14 | 0x44<<7 | 0x1B,\n\t32166 - 19968: jis0212<<14 | 0x33<<7 | 0x01,\n\t32167 - 19968: jis0212<<14 | 0x33<<7 | 0x02,\n\t32170 - 19968: jis0212<<14 | 0x33<<7 | 0x03,\n\t32171 - 19968: jis0208<<14 | 0x44<<7 | 0x1F,\n\t32172 - 19968: jis0208<<14 | 0x1B<<7 | 0x59,\n\t32173 - 19968: jis0208<<14 | 0x0F<<7 | 0x3C,\n\t32174 - 19968: jis0208<<14 | 0x44<<7 | 0x1A,\n\t32175 - 19968: jis0208<<14 | 0x44<<7 | 0x22,\n\t32176 - 19968: jis0208<<14 | 0x44<<7 | 0x26,\n\t32177 - 19968: jis0208<<14 | 0x18<<7 | 0x2A,\n\t32178 - 19968: jis0208<<14 | 0x2B<<7 | 0x35,\n\t32179 - 19968: jis0212<<14 | 0x33<<7 | 0x04,\n\t32180 - 19968: jis0208<<14 | 0x23<<7 | 0x35,\n\t32181 - 19968: jis0208<<14 | 0x44<<7 | 0x1C,\n\t32182 - 19968: jis0212<<14 | 0x33<<7 | 0x05,\n\t32183 - 19968: jis0208<<14 | 0x5A<<7 | 0x2F,\n\t32184 - 19968: jis0208<<14 | 0x44<<7 | 0x24,\n\t32185 - 19968: jis0212<<14 | 0x33<<7 | 0x07,\n\t32186 - 19968: jis0208<<14 | 0x44<<7 | 0x19,\n\t32187 - 19968: jis0208<<14 | 0x22<<7 | 0x1D,\n\t32189 - 19968: jis0208<<14 | 0x44<<7 | 0x1E,\n\t32190 - 19968: jis0208<<14 | 0x0F<<7 | 0x1C,\n\t32191 - 19968: jis0208<<14 | 0x2B<<7 | 0x29,\n\t32194 - 19968: jis0212<<14 | 0x33<<7 | 0x08,\n\t32195 - 19968: jis0212<<14 | 0x33<<7 | 0x09,\n\t32196 - 19968: jis0212<<14 | 0x33<<7 | 0x0A,\n\t32197 - 19968: jis0212<<14 | 0x33<<7 | 0x0B,\n\t32198 - 19968: jis0212<<14 | 0x33<<7 | 0x0C,\n\t32199 - 19968: jis0208<<14 | 0x44<<7 | 0x1D,\n\t32202 - 19968: jis0208<<14 | 0x15<<7 | 0x3A,\n\t32203 - 19968: jis0208<<14 | 0x27<<7 | 0x4B,\n\t32204 - 19968: jis0212<<14 | 0x33<<7 | 0x0D,\n\t32205 - 19968: jis0212<<14 | 0x33<<7 | 0x0E,\n\t32206 - 19968: jis0212<<14 | 0x33<<7 | 0x0F,\n\t32207 - 19968: jis0208<<14 | 0x20<<7 | 0x4C,\n\t32209 - 19968: jis0208<<14 | 0x2D<<7 | 0x2F,\n\t32210 - 19968: jis0208<<14 | 0x1C<<7 | 0x4E,\n\t32213 - 19968: jis0208<<14 | 0x44<<7 | 0x4D,\n\t32214 - 19968: jis0208<<14 | 0x5A<<7 | 0x31,\n\t32215 - 19968: jis0212<<14 | 0x33<<7 | 0x10,\n\t32216 - 19968: jis0208<<14 | 0x44<<7 | 0x27,\n\t32217 - 19968: jis0212<<14 | 0x33<<7 | 0x11,\n\t32218 - 19968: jis0208<<14 | 0x1F<<7 | 0x5D,\n\t32220 - 19968: jis0208<<14 | 0x44<<7 | 0x23,\n\t32221 - 19968: jis0208<<14 | 0x44<<7 | 0x28,\n\t32222 - 19968: jis0208<<14 | 0x44<<7 | 0x2A,\n\t32224 - 19968: jis0208<<14 | 0x23<<7 | 0x58,\n\t32225 - 19968: jis0208<<14 | 0x44<<7 | 0x2D,\n\t32226 - 19968: jis0212<<14 | 0x33<<7 | 0x13,\n\t32228 - 19968: jis0208<<14 | 0x44<<7 | 0x29,\n\t32229 - 19968: jis0212<<14 | 0x33<<7 | 0x14,\n\t32230 - 19968: jis0212<<14 | 0x33<<7 | 0x15,\n\t32232 - 19968: jis0208<<14 | 0x29<<7 | 0x33,\n\t32233 - 19968: jis0208<<14 | 0x13<<7 | 0x2A,\n\t32234 - 19968: jis0212<<14 | 0x33<<7 | 0x16,\n\t32235 - 19968: jis0212<<14 | 0x33<<7 | 0x17,\n\t32236 - 19968: jis0208<<14 | 0x2B<<7 | 0x2A,\n\t32237 - 19968: jis0212<<14 | 0x33<<7 | 0x18,\n\t32239 - 19968: jis0208<<14 | 0x0F<<7 | 0x3D,\n\t32241 - 19968: jis0212<<14 | 0x33<<7 | 0x19,\n\t32242 - 19968: jis0208<<14 | 0x44<<7 | 0x2C,\n\t32244 - 19968: jis0208<<14 | 0x2D<<7 | 0x5C,\n\t32245 - 19968: jis0212<<14 | 0x33<<7 | 0x1A,\n\t32246 - 19968: jis0212<<14 | 0x33<<7 | 0x1B,\n\t32249 - 19968: jis0212<<14 | 0x33<<7 | 0x1C,\n\t32250 - 19968: jis0212<<14 | 0x33<<7 | 0x1D,\n\t32251 - 19968: jis0208<<14 | 0x44<<7 | 0x2B,\n\t32256 - 19968: jis0212<<14 | 0x33<<7 | 0x12,\n\t32257 - 19968: jis0208<<14 | 0x10<<7 | 0x4E,\n\t32260 - 19968: jis0208<<14 | 0x25<<7 | 0x4B,\n\t32261 - 19968: jis0208<<14 | 0x44<<7 | 0x2E,\n\t32264 - 19968: jis0212<<14 | 0x33<<7 | 0x1E,\n\t32265 - 19968: jis0208<<14 | 0x44<<7 | 0x35,\n\t32266 - 19968: jis0208<<14 | 0x44<<7 | 0x2F,\n\t32267 - 19968: jis0208<<14 | 0x44<<7 | 0x36,\n\t32272 - 19968: jis0212<<14 | 0x33<<7 | 0x1F,\n\t32273 - 19968: jis0212<<14 | 0x33<<7 | 0x20,\n\t32274 - 19968: jis0208<<14 | 0x44<<7 | 0x32,\n\t32277 - 19968: jis0212<<14 | 0x33<<7 | 0x21,\n\t32279 - 19968: jis0212<<14 | 0x33<<7 | 0x22,\n\t32283 - 19968: jis0208<<14 | 0x26<<7 | 0x5A,\n\t32284 - 19968: jis0212<<14 | 0x33<<7 | 0x23,\n\t32285 - 19968: jis0212<<14 | 0x33<<7 | 0x24,\n\t32286 - 19968: jis0208<<14 | 0x1B<<7 | 0x29,\n\t32287 - 19968: jis0208<<14 | 0x44<<7 | 0x34,\n\t32288 - 19968: jis0212<<14 | 0x33<<7 | 0x25,\n\t32289 - 19968: jis0208<<14 | 0x44<<7 | 0x31,\n\t32290 - 19968: jis0208<<14 | 0x44<<7 | 0x37,\n\t32291 - 19968: jis0208<<14 | 0x44<<7 | 0x30,\n\t32294 - 19968: jis0208<<14 | 0x1C<<7 | 0x23,\n\t32295 - 19968: jis0212<<14 | 0x33<<7 | 0x26,\n\t32296 - 19968: jis0212<<14 | 0x33<<7 | 0x27,\n\t32299 - 19968: jis0208<<14 | 0x2A<<7 | 0x04,\n\t32300 - 19968: jis0212<<14 | 0x33<<7 | 0x28,\n\t32301 - 19968: jis0212<<14 | 0x33<<7 | 0x29,\n\t32302 - 19968: jis0208<<14 | 0x1C<<7 | 0x2B,\n\t32303 - 19968: jis0212<<14 | 0x33<<7 | 0x2A,\n\t32305 - 19968: jis0208<<14 | 0x44<<7 | 0x33,\n\t32306 - 19968: jis0208<<14 | 0x44<<7 | 0x3F,\n\t32307 - 19968: jis0212<<14 | 0x33<<7 | 0x2B,\n\t32309 - 19968: jis0208<<14 | 0x44<<7 | 0x3B,\n\t32310 - 19968: jis0212<<14 | 0x33<<7 | 0x2C,\n\t32311 - 19968: jis0208<<14 | 0x44<<7 | 0x3E,\n\t32313 - 19968: jis0208<<14 | 0x44<<7 | 0x3C,\n\t32314 - 19968: jis0208<<14 | 0x44<<7 | 0x40,\n\t32315 - 19968: jis0208<<14 | 0x44<<7 | 0x3A,\n\t32317 - 19968: jis0208<<14 | 0x44<<7 | 0x20,\n\t32318 - 19968: jis0208<<14 | 0x1F<<7 | 0x32,\n\t32319 - 19968: jis0212<<14 | 0x33<<7 | 0x2D,\n\t32321 - 19968: jis0208<<14 | 0x27<<7 | 0x2A,\n\t32323 - 19968: jis0208<<14 | 0x44<<7 | 0x3D,\n\t32324 - 19968: jis0212<<14 | 0x33<<7 | 0x2E,\n\t32325 - 19968: jis0212<<14 | 0x33<<7 | 0x2F,\n\t32326 - 19968: jis0208<<14 | 0x44<<7 | 0x38,\n\t32327 - 19968: jis0212<<14 | 0x33<<7 | 0x30,\n\t32330 - 19968: jis0208<<14 | 0x20<<7 | 0x00,\n\t32331 - 19968: jis0208<<14 | 0x16<<7 | 0x31,\n\t32333 - 19968: jis0208<<14 | 0x1C<<7 | 0x0A,\n\t32334 - 19968: jis0212<<14 | 0x33<<7 | 0x31,\n\t32336 - 19968: jis0212<<14 | 0x33<<7 | 0x32,\n\t32338 - 19968: jis0208<<14 | 0x5A<<7 | 0x32,\n\t32340 - 19968: jis0208<<14 | 0x1E<<7 | 0x04,\n\t32341 - 19968: jis0208<<14 | 0x20<<7 | 0x15,\n\t32342 - 19968: jis0208<<14 | 0x44<<7 | 0x43,\n\t32344 - 19968: jis0212<<14 | 0x33<<7 | 0x34,\n\t32345 - 19968: jis0208<<14 | 0x44<<7 | 0x45,\n\t32346 - 19968: jis0208<<14 | 0x44<<7 | 0x46,\n\t32349 - 19968: jis0208<<14 | 0x44<<7 | 0x42,\n\t32350 - 19968: jis0208<<14 | 0x44<<7 | 0x44,\n\t32351 - 19968: jis0212<<14 | 0x33<<7 | 0x35,\n\t32353 - 19968: jis0212<<14 | 0x33<<7 | 0x36,\n\t32354 - 19968: jis0212<<14 | 0x33<<7 | 0x37,\n\t32357 - 19968: jis0212<<14 | 0x33<<7 | 0x38,\n\t32358 - 19968: jis0208<<14 | 0x44<<7 | 0x39,\n\t32359 - 19968: jis0208<<14 | 0x44<<7 | 0x41,\n\t32361 - 19968: jis0208<<14 | 0x44<<7 | 0x49,\n\t32362 - 19968: jis0208<<14 | 0x44<<7 | 0x48,\n\t32363 - 19968: jis0212<<14 | 0x33<<7 | 0x39,\n\t32365 - 19968: jis0208<<14 | 0x2A<<7 | 0x59,\n\t32366 - 19968: jis0212<<14 | 0x33<<7 | 0x3A,\n\t32367 - 19968: jis0212<<14 | 0x33<<7 | 0x3B,\n\t32368 - 19968: jis0208<<14 | 0x16<<7 | 0x0A,\n\t32371 - 19968: jis0212<<14 | 0x33<<7 | 0x3C,\n\t32376 - 19968: jis0212<<14 | 0x33<<7 | 0x3D,\n\t32377 - 19968: jis0208<<14 | 0x44<<7 | 0x47,\n\t32379 - 19968: jis0208<<14 | 0x44<<7 | 0x4B,\n\t32380 - 19968: jis0208<<14 | 0x44<<7 | 0x4A,\n\t32381 - 19968: jis0208<<14 | 0x44<<7 | 0x4E,\n\t32382 - 19968: jis0212<<14 | 0x33<<7 | 0x3E,\n\t32383 - 19968: jis0208<<14 | 0x44<<7 | 0x50,\n\t32385 - 19968: jis0212<<14 | 0x33<<7 | 0x3F,\n\t32386 - 19968: jis0208<<14 | 0x1A<<7 | 0x1B,\n\t32387 - 19968: jis0208<<14 | 0x44<<7 | 0x4C,\n\t32390 - 19968: jis0212<<14 | 0x33<<7 | 0x40,\n\t32391 - 19968: jis0212<<14 | 0x33<<7 | 0x41,\n\t32392 - 19968: jis0208<<14 | 0x44<<7 | 0x51,\n\t32393 - 19968: jis0208<<14 | 0x44<<7 | 0x52,\n\t32394 - 19968: jis0208<<14 | 0x58<<7 | 0x00,\n\t32396 - 19968: jis0208<<14 | 0x44<<7 | 0x53,\n\t32397 - 19968: jis0212<<14 | 0x33<<7 | 0x43,\n\t32398 - 19968: jis0208<<14 | 0x44<<7 | 0x59,\n\t32399 - 19968: jis0208<<14 | 0x24<<7 | 0x1A,\n\t32400 - 19968: jis0208<<14 | 0x44<<7 | 0x55,\n\t32401 - 19968: jis0212<<14 | 0x33<<7 | 0x44,\n\t32402 - 19968: jis0208<<14 | 0x44<<7 | 0x54,\n\t32403 - 19968: jis0208<<14 | 0x44<<7 | 0x56,\n\t32404 - 19968: jis0208<<14 | 0x44<<7 | 0x57,\n\t32405 - 19968: jis0212<<14 | 0x33<<7 | 0x45,\n\t32406 - 19968: jis0208<<14 | 0x44<<7 | 0x58,\n\t32408 - 19968: jis0212<<14 | 0x33<<7 | 0x46,\n\t32410 - 19968: jis0212<<14 | 0x33<<7 | 0x47,\n\t32411 - 19968: jis0208<<14 | 0x44<<7 | 0x5A,\n\t32412 - 19968: jis0208<<14 | 0x44<<7 | 0x5B,\n\t32413 - 19968: jis0212<<14 | 0x33<<7 | 0x48,\n\t32414 - 19968: jis0212<<14 | 0x33<<7 | 0x49,\n\t32566 - 19968: jis0208<<14 | 0x13<<7 | 0x2B,\n\t32568 - 19968: jis0208<<14 | 0x44<<7 | 0x5C,\n\t32570 - 19968: jis0208<<14 | 0x44<<7 | 0x5D,\n\t32571 - 19968: jis0212<<14 | 0x33<<7 | 0x4B,\n\t32572 - 19968: jis0212<<14 | 0x33<<7 | 0x4A,\n\t32573 - 19968: jis0212<<14 | 0x33<<7 | 0x4C,\n\t32574 - 19968: jis0212<<14 | 0x33<<7 | 0x4D,\n\t32575 - 19968: jis0212<<14 | 0x33<<7 | 0x4E,\n\t32579 - 19968: jis0212<<14 | 0x33<<7 | 0x4F,\n\t32580 - 19968: jis0212<<14 | 0x33<<7 | 0x50,\n\t32581 - 19968: jis0208<<14 | 0x45<<7 | 0x00,\n\t32583 - 19968: jis0208<<14 | 0x5A<<7 | 0x33,\n\t32588 - 19968: jis0208<<14 | 0x45<<7 | 0x01,\n\t32589 - 19968: jis0208<<14 | 0x45<<7 | 0x02,\n\t32590 - 19968: jis0208<<14 | 0x45<<7 | 0x03,\n\t32591 - 19968: jis0212<<14 | 0x33<<7 | 0x52,\n\t32592 - 19968: jis0208<<14 | 0x45<<7 | 0x04,\n\t32593 - 19968: jis0208<<14 | 0x45<<7 | 0x05,\n\t32594 - 19968: jis0212<<14 | 0x33<<7 | 0x53,\n\t32595 - 19968: jis0212<<14 | 0x33<<7 | 0x54,\n\t32596 - 19968: jis0208<<14 | 0x45<<7 | 0x07,\n\t32597 - 19968: jis0208<<14 | 0x45<<7 | 0x06,\n\t32600 - 19968: jis0208<<14 | 0x45<<7 | 0x08,\n\t32603 - 19968: jis0212<<14 | 0x33<<7 | 0x55,\n\t32604 - 19968: jis0212<<14 | 0x33<<7 | 0x56,\n\t32605 - 19968: jis0212<<14 | 0x33<<7 | 0x57,\n\t32607 - 19968: jis0208<<14 | 0x45<<7 | 0x09,\n\t32608 - 19968: jis0208<<14 | 0x45<<7 | 0x0A,\n\t32609 - 19968: jis0212<<14 | 0x33<<7 | 0x58,\n\t32611 - 19968: jis0212<<14 | 0x33<<7 | 0x59,\n\t32612 - 19968: jis0212<<14 | 0x33<<7 | 0x5A,\n\t32613 - 19968: jis0212<<14 | 0x33<<7 | 0x5B,\n\t32614 - 19968: jis0212<<14 | 0x33<<7 | 0x5C,\n\t32615 - 19968: jis0208<<14 | 0x45<<7 | 0x0D,\n\t32616 - 19968: jis0208<<14 | 0x45<<7 | 0x0B,\n\t32617 - 19968: jis0208<<14 | 0x45<<7 | 0x0C,\n\t32618 - 19968: jis0208<<14 | 0x19<<7 | 0x40,\n\t32619 - 19968: jis0208<<14 | 0x16<<7 | 0x32,\n\t32621 - 19968: jis0212<<14 | 0x33<<7 | 0x5D,\n\t32622 - 19968: jis0208<<14 | 0x22<<7 | 0x35,\n\t32624 - 19968: jis0208<<14 | 0x27<<7 | 0x12,\n\t32625 - 19968: jis0212<<14 | 0x34<<7 | 0x00,\n\t32626 - 19968: jis0208<<14 | 0x1C<<7 | 0x4F,\n\t32629 - 19968: jis0208<<14 | 0x26<<7 | 0x2C,\n\t32631 - 19968: jis0208<<14 | 0x27<<7 | 0x4C,\n\t32632 - 19968: jis0208<<14 | 0x45<<7 | 0x0E,\n\t32633 - 19968: jis0208<<14 | 0x37<<7 | 0x4C,\n\t32637 - 19968: jis0212<<14 | 0x34<<7 | 0x01,\n\t32638 - 19968: jis0212<<14 | 0x34<<7 | 0x02,\n\t32639 - 19968: jis0212<<14 | 0x34<<7 | 0x03,\n\t32640 - 19968: jis0212<<14 | 0x34<<7 | 0x04,\n\t32642 - 19968: jis0208<<14 | 0x45<<7 | 0x0F,\n\t32643 - 19968: jis0208<<14 | 0x45<<7 | 0x11,\n\t32645 - 19968: jis0208<<14 | 0x2C<<7 | 0x44,\n\t32646 - 19968: jis0208<<14 | 0x45<<7 | 0x10,\n\t32647 - 19968: jis0208<<14 | 0x45<<7 | 0x13,\n\t32648 - 19968: jis0208<<14 | 0x45<<7 | 0x12,\n\t32650 - 19968: jis0208<<14 | 0x2C<<7 | 0x32,\n\t32651 - 19968: jis0212<<14 | 0x34<<7 | 0x05,\n\t32652 - 19968: jis0208<<14 | 0x45<<7 | 0x14,\n\t32653 - 19968: jis0212<<14 | 0x34<<7 | 0x06,\n\t32654 - 19968: jis0208<<14 | 0x27<<7 | 0x5D,\n\t32655 - 19968: jis0212<<14 | 0x34<<7 | 0x07,\n\t32656 - 19968: jis0212<<14 | 0x34<<7 | 0x08,\n\t32657 - 19968: jis0212<<14 | 0x34<<7 | 0x09,\n\t32660 - 19968: jis0208<<14 | 0x45<<7 | 0x15,\n\t32662 - 19968: jis0212<<14 | 0x34<<7 | 0x0A,\n\t32663 - 19968: jis0212<<14 | 0x34<<7 | 0x0B,\n\t32666 - 19968: jis0208<<14 | 0x45<<7 | 0x18,\n\t32668 - 19968: jis0212<<14 | 0x34<<7 | 0x0C,\n\t32669 - 19968: jis0208<<14 | 0x45<<7 | 0x17,\n\t32670 - 19968: jis0208<<14 | 0x45<<7 | 0x16,\n\t32673 - 19968: jis0208<<14 | 0x5A<<7 | 0x34,\n\t32674 - 19968: jis0212<<14 | 0x34<<7 | 0x0E,\n\t32675 - 19968: jis0208<<14 | 0x45<<7 | 0x19,\n\t32676 - 19968: jis0208<<14 | 0x16<<7 | 0x11,\n\t32678 - 19968: jis0212<<14 | 0x34<<7 | 0x0F,\n\t32680 - 19968: jis0208<<14 | 0x20<<7 | 0x01,\n\t32681 - 19968: jis0208<<14 | 0x14<<7 | 0x20,\n\t32682 - 19968: jis0212<<14 | 0x34<<7 | 0x10,\n\t32685 - 19968: jis0212<<14 | 0x34<<7 | 0x11,\n\t32686 - 19968: jis0208<<14 | 0x45<<7 | 0x1D,\n\t32687 - 19968: jis0208<<14 | 0x45<<7 | 0x1A,\n\t32690 - 19968: jis0208<<14 | 0x45<<7 | 0x1B,\n\t32692 - 19968: jis0212<<14 | 0x34<<7 | 0x12,\n\t32694 - 19968: jis0208<<14 | 0x45<<7 | 0x1E,\n\t32696 - 19968: jis0208<<14 | 0x45<<7 | 0x1F,\n\t32697 - 19968: jis0208<<14 | 0x45<<7 | 0x1C,\n\t32700 - 19968: jis0212<<14 | 0x34<<7 | 0x13,\n\t32701 - 19968: jis0208<<14 | 0x10<<7 | 0x08,\n\t32703 - 19968: jis0212<<14 | 0x34<<7 | 0x14,\n\t32704 - 19968: jis0212<<14 | 0x34<<7 | 0x15,\n\t32705 - 19968: jis0208<<14 | 0x11<<7 | 0x06,\n\t32707 - 19968: jis0212<<14 | 0x34<<7 | 0x16,\n\t32709 - 19968: jis0208<<14 | 0x45<<7 | 0x21,\n\t32710 - 19968: jis0208<<14 | 0x45<<7 | 0x22,\n\t32712 - 19968: jis0212<<14 | 0x34<<7 | 0x17,\n\t32714 - 19968: jis0208<<14 | 0x45<<7 | 0x23,\n\t32716 - 19968: jis0208<<14 | 0x2C<<7 | 0x41,\n\t32718 - 19968: jis0212<<14 | 0x34<<7 | 0x18,\n\t32719 - 19968: jis0212<<14 | 0x34<<7 | 0x19,\n\t32722 - 19968: jis0208<<14 | 0x1C<<7 | 0x0B,\n\t32724 - 19968: jis0208<<14 | 0x45<<7 | 0x25,\n\t32725 - 19968: jis0208<<14 | 0x45<<7 | 0x24,\n\t32731 - 19968: jis0212<<14 | 0x34<<7 | 0x1A,\n\t32735 - 19968: jis0212<<14 | 0x34<<7 | 0x1B,\n\t32736 - 19968: jis0208<<14 | 0x1E<<7 | 0x48,\n\t32737 - 19968: jis0208<<14 | 0x45<<7 | 0x26,\n\t32739 - 19968: jis0212<<14 | 0x34<<7 | 0x1C,\n\t32741 - 19968: jis0212<<14 | 0x34<<7 | 0x1D,\n\t32742 - 19968: jis0208<<14 | 0x45<<7 | 0x27,\n\t32744 - 19968: jis0212<<14 | 0x34<<7 | 0x1E,\n\t32745 - 19968: jis0208<<14 | 0x45<<7 | 0x28,\n\t32747 - 19968: jis0208<<14 | 0x13<<7 | 0x44,\n\t32748 - 19968: jis0212<<14 | 0x34<<7 | 0x1F,\n\t32750 - 19968: jis0212<<14 | 0x34<<7 | 0x20,\n\t32751 - 19968: jis0212<<14 | 0x34<<7 | 0x21,\n\t32752 - 19968: jis0208<<14 | 0x13<<7 | 0x2C,\n\t32754 - 19968: jis0212<<14 | 0x34<<7 | 0x22,\n\t32755 - 19968: jis0208<<14 | 0x45<<7 | 0x29,\n\t32761 - 19968: jis0208<<14 | 0x45<<7 | 0x2A,\n\t32762 - 19968: jis0212<<14 | 0x34<<7 | 0x23,\n\t32763 - 19968: jis0208<<14 | 0x2A<<7 | 0x3C,\n\t32764 - 19968: jis0208<<14 | 0x2C<<7 | 0x42,\n\t32765 - 19968: jis0212<<14 | 0x34<<7 | 0x24,\n\t32766 - 19968: jis0212<<14 | 0x34<<7 | 0x25,\n\t32767 - 19968: jis0212<<14 | 0x34<<7 | 0x26,\n\t32768 - 19968: jis0208<<14 | 0x2C<<7 | 0x33,\n\t32769 - 19968: jis0208<<14 | 0x2E<<7 | 0x16,\n\t32771 - 19968: jis0208<<14 | 0x18<<7 | 0x2C,\n\t32772 - 19968: jis0208<<14 | 0x45<<7 | 0x2D,\n\t32773 - 19968: jis0208<<14 | 0x1B<<7 | 0x33,\n\t32774 - 19968: jis0208<<14 | 0x45<<7 | 0x2C,\n\t32775 - 19968: jis0212<<14 | 0x34<<7 | 0x27,\n\t32776 - 19968: jis0212<<14 | 0x34<<7 | 0x28,\n\t32778 - 19968: jis0212<<14 | 0x34<<7 | 0x29,\n\t32779 - 19968: jis0208<<14 | 0x45<<7 | 0x2E,\n\t32780 - 19968: jis0208<<14 | 0x1B<<7 | 0x08,\n\t32781 - 19968: jis0212<<14 | 0x34<<7 | 0x2A,\n\t32782 - 19968: jis0212<<14 | 0x34<<7 | 0x2B,\n\t32783 - 19968: jis0212<<14 | 0x34<<7 | 0x2C,\n\t32784 - 19968: jis0208<<14 | 0x21<<7 | 0x30,\n\t32785 - 19968: jis0212<<14 | 0x34<<7 | 0x2D,\n\t32786 - 19968: jis0208<<14 | 0x45<<7 | 0x2F,\n\t32787 - 19968: jis0212<<14 | 0x34<<7 | 0x2E,\n\t32788 - 19968: jis0212<<14 | 0x34<<7 | 0x2F,\n\t32789 - 19968: jis0208<<14 | 0x18<<7 | 0x2B,\n\t32790 - 19968: jis0212<<14 | 0x34<<7 | 0x30,\n\t32791 - 19968: jis0208<<14 | 0x2B<<7 | 0x36,\n\t32792 - 19968: jis0208<<14 | 0x45<<7 | 0x30,\n\t32793 - 19968: jis0208<<14 | 0x45<<7 | 0x31,\n\t32796 - 19968: jis0208<<14 | 0x45<<7 | 0x32,\n\t32797 - 19968: jis0212<<14 | 0x34<<7 | 0x31,\n\t32798 - 19968: jis0212<<14 | 0x34<<7 | 0x32,\n\t32799 - 19968: jis0212<<14 | 0x34<<7 | 0x33,\n\t32800 - 19968: jis0212<<14 | 0x34<<7 | 0x34,\n\t32801 - 19968: jis0208<<14 | 0x45<<7 | 0x33,\n\t32804 - 19968: jis0212<<14 | 0x34<<7 | 0x35,\n\t32806 - 19968: jis0212<<14 | 0x34<<7 | 0x36,\n\t32808 - 19968: jis0208<<14 | 0x45<<7 | 0x34,\n\t32812 - 19968: jis0212<<14 | 0x34<<7 | 0x37,\n\t32814 - 19968: jis0212<<14 | 0x34<<7 | 0x38,\n\t32816 - 19968: jis0212<<14 | 0x34<<7 | 0x39,\n\t32819 - 19968: jis0208<<14 | 0x1B<<7 | 0x09,\n\t32820 - 19968: jis0212<<14 | 0x34<<7 | 0x3A,\n\t32821 - 19968: jis0212<<14 | 0x34<<7 | 0x3B,\n\t32822 - 19968: jis0208<<14 | 0x2B<<7 | 0x4C,\n\t32823 - 19968: jis0212<<14 | 0x34<<7 | 0x3C,\n\t32825 - 19968: jis0212<<14 | 0x34<<7 | 0x3D,\n\t32826 - 19968: jis0212<<14 | 0x34<<7 | 0x3E,\n\t32827 - 19968: jis0208<<14 | 0x45<<7 | 0x36,\n\t32828 - 19968: jis0212<<14 | 0x34<<7 | 0x3F,\n\t32829 - 19968: jis0208<<14 | 0x22<<7 | 0x1E,\n\t32830 - 19968: jis0212<<14 | 0x34<<7 | 0x40,\n\t32831 - 19968: jis0208<<14 | 0x45<<7 | 0x35,\n\t32832 - 19968: jis0212<<14 | 0x34<<7 | 0x41,\n\t32836 - 19968: jis0212<<14 | 0x34<<7 | 0x42,\n\t32838 - 19968: jis0208<<14 | 0x45<<7 | 0x38,\n\t32842 - 19968: jis0208<<14 | 0x45<<7 | 0x37,\n\t32850 - 19968: jis0208<<14 | 0x45<<7 | 0x39,\n\t32854 - 19968: jis0208<<14 | 0x1F<<7 | 0x1A,\n\t32856 - 19968: jis0208<<14 | 0x45<<7 | 0x3A,\n\t32858 - 19968: jis0208<<14 | 0x45<<7 | 0x3B,\n\t32862 - 19968: jis0208<<14 | 0x29<<7 | 0x18,\n\t32863 - 19968: jis0208<<14 | 0x45<<7 | 0x3C,\n\t32864 - 19968: jis0212<<14 | 0x34<<7 | 0x43,\n\t32865 - 19968: jis0208<<14 | 0x20<<7 | 0x4E,\n\t32866 - 19968: jis0208<<14 | 0x45<<7 | 0x3D,\n\t32868 - 19968: jis0212<<14 | 0x34<<7 | 0x44,\n\t32870 - 19968: jis0212<<14 | 0x34<<7 | 0x45,\n\t32872 - 19968: jis0208<<14 | 0x45<<7 | 0x3E,\n\t32877 - 19968: jis0212<<14 | 0x34<<7 | 0x46,\n\t32879 - 19968: jis0208<<14 | 0x2D<<7 | 0x5D,\n\t32880 - 19968: jis0208<<14 | 0x45<<7 | 0x41,\n\t32881 - 19968: jis0212<<14 | 0x34<<7 | 0x47,\n\t32882 - 19968: jis0208<<14 | 0x45<<7 | 0x40,\n\t32883 - 19968: jis0208<<14 | 0x45<<7 | 0x3F,\n\t32884 - 19968: jis0208<<14 | 0x23<<7 | 0x0F,\n\t32885 - 19968: jis0212<<14 | 0x34<<7 | 0x48,\n\t32886 - 19968: jis0208<<14 | 0x45<<7 | 0x42,\n\t32887 - 19968: jis0208<<14 | 0x1E<<7 | 0x05,\n\t32889 - 19968: jis0208<<14 | 0x45<<7 | 0x43,\n\t32893 - 19968: jis0208<<14 | 0x45<<7 | 0x44,\n\t32894 - 19968: jis0208<<14 | 0x2E<<7 | 0x17,\n\t32895 - 19968: jis0208<<14 | 0x45<<7 | 0x45,\n\t32897 - 19968: jis0212<<14 | 0x34<<7 | 0x49,\n\t32900 - 19968: jis0208<<14 | 0x45<<7 | 0x46,\n\t32901 - 19968: jis0208<<14 | 0x45<<7 | 0x48,\n\t32902 - 19968: jis0208<<14 | 0x45<<7 | 0x47,\n\t32903 - 19968: jis0208<<14 | 0x27<<7 | 0x04,\n\t32904 - 19968: jis0212<<14 | 0x34<<7 | 0x4A,\n\t32905 - 19968: jis0208<<14 | 0x25<<7 | 0x58,\n\t32907 - 19968: jis0208<<14 | 0x2E<<7 | 0x1D,\n\t32908 - 19968: jis0208<<14 | 0x27<<7 | 0x08,\n\t32910 - 19968: jis0212<<14 | 0x34<<7 | 0x4B,\n\t32915 - 19968: jis0208<<14 | 0x45<<7 | 0x4A,\n\t32918 - 19968: jis0208<<14 | 0x1D<<7 | 0x32,\n\t32920 - 19968: jis0208<<14 | 0x28<<7 | 0x09,\n\t32922 - 19968: jis0208<<14 | 0x45<<7 | 0x4B,\n\t32923 - 19968: jis0208<<14 | 0x45<<7 | 0x49,\n\t32924 - 19968: jis0212<<14 | 0x34<<7 | 0x4C,\n\t32925 - 19968: jis0208<<14 | 0x13<<7 | 0x2D,\n\t32926 - 19968: jis0212<<14 | 0x34<<7 | 0x4D,\n\t32929 - 19968: jis0208<<14 | 0x17<<7 | 0x33,\n\t32930 - 19968: jis0208<<14 | 0x1A<<7 | 0x47,\n\t32933 - 19968: jis0208<<14 | 0x27<<7 | 0x4D,\n\t32934 - 19968: jis0212<<14 | 0x34<<7 | 0x4E,\n\t32935 - 19968: jis0212<<14 | 0x34<<7 | 0x4F,\n\t32937 - 19968: jis0208<<14 | 0x17<<7 | 0x09,\n\t32938 - 19968: jis0208<<14 | 0x2A<<7 | 0x22,\n\t32939 - 19968: jis0212<<14 | 0x34<<7 | 0x50,\n\t32940 - 19968: jis0208<<14 | 0x45<<7 | 0x4E,\n\t32941 - 19968: jis0208<<14 | 0x45<<7 | 0x4C,\n\t32943 - 19968: jis0208<<14 | 0x18<<7 | 0x2D,\n\t32945 - 19968: jis0208<<14 | 0x18<<7 | 0x2E,\n\t32946 - 19968: jis0208<<14 | 0x0F<<7 | 0x48,\n\t32948 - 19968: jis0208<<14 | 0x19<<7 | 0x47,\n\t32952 - 19968: jis0212<<14 | 0x34<<7 | 0x51,\n\t32953 - 19968: jis0212<<14 | 0x34<<7 | 0x52,\n\t32954 - 19968: jis0208<<14 | 0x26<<7 | 0x38,\n\t32963 - 19968: jis0208<<14 | 0x0F<<7 | 0x3E,\n\t32964 - 19968: jis0208<<14 | 0x45<<7 | 0x53,\n\t32966 - 19968: jis0208<<14 | 0x22<<7 | 0x1F,\n\t32968 - 19968: jis0212<<14 | 0x34<<7 | 0x53,\n\t32972 - 19968: jis0208<<14 | 0x26<<7 | 0x37,\n\t32973 - 19968: jis0212<<14 | 0x34<<7 | 0x54,\n\t32974 - 19968: jis0208<<14 | 0x21<<7 | 0x3A,\n\t32975 - 19968: jis0212<<14 | 0x34<<7 | 0x55,\n\t32978 - 19968: jis0212<<14 | 0x34<<7 | 0x56,\n\t32980 - 19968: jis0212<<14 | 0x34<<7 | 0x57,\n\t32981 - 19968: jis0212<<14 | 0x34<<7 | 0x58,\n\t32982 - 19968: jis0208<<14 | 0x45<<7 | 0x55,\n\t32983 - 19968: jis0212<<14 | 0x34<<7 | 0x59,\n\t32984 - 19968: jis0212<<14 | 0x34<<7 | 0x5A,\n\t32985 - 19968: jis0208<<14 | 0x45<<7 | 0x51,\n\t32986 - 19968: jis0208<<14 | 0x45<<7 | 0x54,\n\t32987 - 19968: jis0208<<14 | 0x45<<7 | 0x4F,\n\t32989 - 19968: jis0208<<14 | 0x45<<7 | 0x52,\n\t32990 - 19968: jis0208<<14 | 0x2A<<7 | 0x05,\n\t32992 - 19968: jis0212<<14 | 0x34<<7 | 0x5B,\n\t32993 - 19968: jis0208<<14 | 0x17<<7 | 0x34,\n\t32996 - 19968: jis0208<<14 | 0x0F<<7 | 0x5C,\n\t32997 - 19968: jis0208<<14 | 0x45<<7 | 0x50,\n\t33005 - 19968: jis0212<<14 | 0x34<<7 | 0x5C,\n\t33006 - 19968: jis0212<<14 | 0x34<<7 | 0x5D,\n\t33007 - 19968: jis0208<<14 | 0x45<<7 | 0x57,\n\t33008 - 19968: jis0212<<14 | 0x35<<7 | 0x00,\n\t33009 - 19968: jis0208<<14 | 0x45<<7 | 0x58,\n\t33010 - 19968: jis0212<<14 | 0x35<<7 | 0x01,\n\t33011 - 19968: jis0212<<14 | 0x35<<7 | 0x02,\n\t33012 - 19968: jis0208<<14 | 0x25<<7 | 0x18,\n\t33014 - 19968: jis0212<<14 | 0x35<<7 | 0x03,\n\t33016 - 19968: jis0208<<14 | 0x15<<7 | 0x1A,\n\t33017 - 19968: jis0212<<14 | 0x35<<7 | 0x04,\n\t33018 - 19968: jis0212<<14 | 0x35<<7 | 0x05,\n\t33020 - 19968: jis0208<<14 | 0x46<<7 | 0x05,\n\t33021 - 19968: jis0208<<14 | 0x26<<7 | 0x1C,\n\t33022 - 19968: jis0212<<14 | 0x35<<7 | 0x06,\n\t33026 - 19968: jis0208<<14 | 0x1A<<7 | 0x48,\n\t33027 - 19968: jis0212<<14 | 0x35<<7 | 0x07,\n\t33029 - 19968: jis0208<<14 | 0x15<<7 | 0x1B,\n\t33030 - 19968: jis0208<<14 | 0x1F<<7 | 0x27,\n\t33031 - 19968: jis0208<<14 | 0x2E<<7 | 0x25,\n\t33032 - 19968: jis0208<<14 | 0x2B<<7 | 0x0D,\n\t33033 - 19968: jis0208<<14 | 0x45<<7 | 0x56,\n\t33034 - 19968: jis0208<<14 | 0x1F<<7 | 0x33,\n\t33035 - 19968: jis0212<<14 | 0x35<<7 | 0x08,\n\t33046 - 19968: jis0212<<14 | 0x35<<7 | 0x09,\n\t33047 - 19968: jis0212<<14 | 0x35<<7 | 0x0A,\n\t33048 - 19968: jis0212<<14 | 0x35<<7 | 0x0B,\n\t33050 - 19968: jis0208<<14 | 0x14<<7 | 0x32,\n\t33051 - 19968: jis0208<<14 | 0x45<<7 | 0x59,\n\t33052 - 19968: jis0212<<14 | 0x35<<7 | 0x0C,\n\t33054 - 19968: jis0212<<14 | 0x35<<7 | 0x0D,\n\t33056 - 19968: jis0212<<14 | 0x35<<7 | 0x0E,\n\t33059 - 19968: jis0208<<14 | 0x45<<7 | 0x5B,\n\t33060 - 19968: jis0212<<14 | 0x35<<7 | 0x0F,\n\t33063 - 19968: jis0212<<14 | 0x35<<7 | 0x10,\n\t33065 - 19968: jis0208<<14 | 0x45<<7 | 0x5A,\n\t33068 - 19968: jis0212<<14 | 0x35<<7 | 0x11,\n\t33071 - 19968: jis0208<<14 | 0x45<<7 | 0x5C,\n\t33072 - 19968: jis0212<<14 | 0x35<<7 | 0x12,\n\t33073 - 19968: jis0208<<14 | 0x22<<7 | 0x05,\n\t33075 - 19968: jis0208<<14 | 0x26<<7 | 0x1D,\n\t33077 - 19968: jis0212<<14 | 0x35<<7 | 0x13,\n\t33081 - 19968: jis0208<<14 | 0x23<<7 | 0x10,\n\t33082 - 19968: jis0212<<14 | 0x35<<7 | 0x14,\n\t33084 - 19968: jis0212<<14 | 0x35<<7 | 0x15,\n\t33086 - 19968: jis0208<<14 | 0x46<<7 | 0x02,\n\t33093 - 19968: jis0212<<14 | 0x35<<7 | 0x16,\n\t33094 - 19968: jis0208<<14 | 0x46<<7 | 0x01,\n\t33095 - 19968: jis0212<<14 | 0x35<<7 | 0x17,\n\t33098 - 19968: jis0212<<14 | 0x35<<7 | 0x18,\n\t33099 - 19968: jis0208<<14 | 0x45<<7 | 0x5D,\n\t33100 - 19968: jis0212<<14 | 0x35<<7 | 0x19,\n\t33102 - 19968: jis0208<<14 | 0x1E<<7 | 0x34,\n\t33104 - 19968: jis0208<<14 | 0x28<<7 | 0x44,\n\t33105 - 19968: jis0208<<14 | 0x46<<7 | 0x04,\n\t33106 - 19968: jis0212<<14 | 0x35<<7 | 0x1A,\n\t33107 - 19968: jis0208<<14 | 0x46<<7 | 0x03,\n\t33108 - 19968: jis0208<<14 | 0x18<<7 | 0x2F,\n\t33109 - 19968: jis0208<<14 | 0x2E<<7 | 0x32,\n\t33111 - 19968: jis0212<<14 | 0x35<<7 | 0x1B,\n\t33119 - 19968: jis0208<<14 | 0x46<<7 | 0x14,\n\t33120 - 19968: jis0212<<14 | 0x35<<7 | 0x1C,\n\t33121 - 19968: jis0212<<14 | 0x35<<7 | 0x1D,\n\t33125 - 19968: jis0208<<14 | 0x46<<7 | 0x08,\n\t33126 - 19968: jis0208<<14 | 0x46<<7 | 0x09,\n\t33127 - 19968: jis0212<<14 | 0x35<<7 | 0x1E,\n\t33128 - 19968: jis0212<<14 | 0x35<<7 | 0x1F,\n\t33129 - 19968: jis0212<<14 | 0x35<<7 | 0x20,\n\t33131 - 19968: jis0208<<14 | 0x1B<<7 | 0x4F,\n\t33133 - 19968: jis0212<<14 | 0x35<<7 | 0x21,\n\t33134 - 19968: jis0208<<14 | 0x46<<7 | 0x07,\n\t33135 - 19968: jis0212<<14 | 0x35<<7 | 0x22,\n\t33136 - 19968: jis0208<<14 | 0x18<<7 | 0x57,\n\t33137 - 19968: jis0208<<14 | 0x46<<7 | 0x06,\n\t33140 - 19968: jis0208<<14 | 0x46<<7 | 0x0A,\n\t33143 - 19968: jis0212<<14 | 0x35<<7 | 0x23,\n\t33144 - 19968: jis0208<<14 | 0x23<<7 | 0x11,\n\t33145 - 19968: jis0208<<14 | 0x29<<7 | 0x01,\n\t33146 - 19968: jis0208<<14 | 0x20<<7 | 0x02,\n\t33151 - 19968: jis0208<<14 | 0x21<<7 | 0x3B,\n\t33152 - 19968: jis0208<<14 | 0x46<<7 | 0x0E,\n\t33153 - 19968: jis0212<<14 | 0x35<<7 | 0x24,\n\t33154 - 19968: jis0208<<14 | 0x46<<7 | 0x0F,\n\t33155 - 19968: jis0208<<14 | 0x46<<7 | 0x0B,\n\t33156 - 19968: jis0212<<14 | 0x35<<7 | 0x26,\n\t33157 - 19968: jis0212<<14 | 0x35<<7 | 0x27,\n\t33158 - 19968: jis0212<<14 | 0x35<<7 | 0x28,\n\t33160 - 19968: jis0208<<14 | 0x46<<7 | 0x0C,\n\t33162 - 19968: jis0208<<14 | 0x46<<7 | 0x0D,\n\t33163 - 19968: jis0212<<14 | 0x35<<7 | 0x29,\n\t33166 - 19968: jis0212<<14 | 0x35<<7 | 0x2A,\n\t33167 - 19968: jis0208<<14 | 0x18<<7 | 0x30,\n\t33168 - 19968: jis0212<<14 | 0x35<<7 | 0x25,\n\t33171 - 19968: jis0208<<14 | 0x46<<7 | 0x15,\n\t33173 - 19968: jis0208<<14 | 0x46<<7 | 0x11,\n\t33174 - 19968: jis0212<<14 | 0x35<<7 | 0x2B,\n\t33176 - 19968: jis0212<<14 | 0x35<<7 | 0x2C,\n\t33178 - 19968: jis0208<<14 | 0x28<<7 | 0x45,\n\t33179 - 19968: jis0212<<14 | 0x35<<7 | 0x2D,\n\t33180 - 19968: jis0208<<14 | 0x2A<<7 | 0x4B,\n\t33181 - 19968: jis0208<<14 | 0x28<<7 | 0x07,\n\t33182 - 19968: jis0212<<14 | 0x35<<7 | 0x2E,\n\t33184 - 19968: jis0208<<14 | 0x46<<7 | 0x10,\n\t33186 - 19968: jis0212<<14 | 0x35<<7 | 0x2F,\n\t33187 - 19968: jis0208<<14 | 0x46<<7 | 0x13,\n\t33188 - 19968: jis0208<<14 | 0x46<<7 | 0x12,\n\t33192 - 19968: jis0208<<14 | 0x2A<<7 | 0x23,\n\t33193 - 19968: jis0208<<14 | 0x46<<7 | 0x16,\n\t33198 - 19968: jis0212<<14 | 0x35<<7 | 0x30,\n\t33200 - 19968: jis0208<<14 | 0x46<<7 | 0x17,\n\t33202 - 19968: jis0212<<14 | 0x35<<7 | 0x31,\n\t33203 - 19968: jis0208<<14 | 0x20<<7 | 0x16,\n\t33204 - 19968: jis0212<<14 | 0x35<<7 | 0x32,\n\t33205 - 19968: jis0208<<14 | 0x46<<7 | 0x18,\n\t33208 - 19968: jis0208<<14 | 0x46<<7 | 0x1A,\n\t33210 - 19968: jis0208<<14 | 0x46<<7 | 0x1E,\n\t33211 - 19968: jis0212<<14 | 0x35<<7 | 0x33,\n\t33213 - 19968: jis0208<<14 | 0x46<<7 | 0x1B,\n\t33214 - 19968: jis0208<<14 | 0x46<<7 | 0x19,\n\t33215 - 19968: jis0208<<14 | 0x26<<7 | 0x1E,\n\t33216 - 19968: jis0208<<14 | 0x46<<7 | 0x1C,\n\t33218 - 19968: jis0208<<14 | 0x46<<7 | 0x1D,\n\t33219 - 19968: jis0212<<14 | 0x35<<7 | 0x35,\n\t33221 - 19968: jis0212<<14 | 0x35<<7 | 0x36,\n\t33222 - 19968: jis0208<<14 | 0x11<<7 | 0x11,\n\t33224 - 19968: jis0208<<14 | 0x46<<7 | 0x24,\n\t33225 - 19968: jis0208<<14 | 0x46<<7 | 0x1F,\n\t33226 - 19968: jis0212<<14 | 0x35<<7 | 0x37,\n\t33227 - 19968: jis0212<<14 | 0x35<<7 | 0x34,\n\t33229 - 19968: jis0208<<14 | 0x46<<7 | 0x20,\n\t33230 - 19968: jis0212<<14 | 0x35<<7 | 0x38,\n\t33231 - 19968: jis0212<<14 | 0x35<<7 | 0x39,\n\t33233 - 19968: jis0208<<14 | 0x46<<7 | 0x21,\n\t33235 - 19968: jis0208<<14 | 0x21<<7 | 0x00,\n\t33237 - 19968: jis0212<<14 | 0x35<<7 | 0x3A,\n\t33239 - 19968: jis0212<<14 | 0x35<<7 | 0x3B,\n\t33240 - 19968: jis0208<<14 | 0x46<<7 | 0x23,\n\t33241 - 19968: jis0208<<14 | 0x46<<7 | 0x22,\n\t33242 - 19968: jis0208<<14 | 0x46<<7 | 0x25,\n\t33243 - 19968: jis0212<<14 | 0x35<<7 | 0x3C,\n\t33245 - 19968: jis0212<<14 | 0x35<<7 | 0x3D,\n\t33246 - 19968: jis0212<<14 | 0x35<<7 | 0x3E,\n\t33247 - 19968: jis0208<<14 | 0x46<<7 | 0x26,\n\t33248 - 19968: jis0208<<14 | 0x46<<7 | 0x27,\n\t33249 - 19968: jis0212<<14 | 0x35<<7 | 0x3F,\n\t33251 - 19968: jis0208<<14 | 0x1E<<7 | 0x22,\n\t33252 - 19968: jis0212<<14 | 0x35<<7 | 0x40,\n\t33253 - 19968: jis0208<<14 | 0x11<<7 | 0x48,\n\t33255 - 19968: jis0208<<14 | 0x46<<7 | 0x28,\n\t33256 - 19968: jis0208<<14 | 0x2D<<7 | 0x36,\n\t33258 - 19968: jis0208<<14 | 0x1B<<7 | 0x0A,\n\t33259 - 19968: jis0212<<14 | 0x35<<7 | 0x41,\n\t33260 - 19968: jis0212<<14 | 0x35<<7 | 0x42,\n\t33261 - 19968: jis0208<<14 | 0x1C<<7 | 0x0C,\n\t33264 - 19968: jis0212<<14 | 0x35<<7 | 0x43,\n\t33265 - 19968: jis0212<<14 | 0x35<<7 | 0x44,\n\t33266 - 19968: jis0212<<14 | 0x35<<7 | 0x45,\n\t33267 - 19968: jis0208<<14 | 0x1A<<7 | 0x49,\n\t33268 - 19968: jis0208<<14 | 0x22<<7 | 0x36,\n\t33269 - 19968: jis0212<<14 | 0x35<<7 | 0x46,\n\t33270 - 19968: jis0212<<14 | 0x35<<7 | 0x47,\n\t33272 - 19968: jis0212<<14 | 0x35<<7 | 0x48,\n\t33273 - 19968: jis0212<<14 | 0x35<<7 | 0x49,\n\t33274 - 19968: jis0208<<14 | 0x46<<7 | 0x29,\n\t33275 - 19968: jis0208<<14 | 0x46<<7 | 0x2A,\n\t33276 - 19968: jis0208<<14 | 0x10<<7 | 0x10,\n\t33277 - 19968: jis0212<<14 | 0x35<<7 | 0x4A,\n\t33278 - 19968: jis0208<<14 | 0x46<<7 | 0x2B,\n\t33279 - 19968: jis0212<<14 | 0x35<<7 | 0x4B,\n\t33280 - 19968: jis0212<<14 | 0x35<<7 | 0x4C,\n\t33281 - 19968: jis0208<<14 | 0x46<<7 | 0x2C,\n\t33282 - 19968: jis0208<<14 | 0x46<<7 | 0x2D,\n\t33283 - 19968: jis0212<<14 | 0x35<<7 | 0x4D,\n\t33285 - 19968: jis0208<<14 | 0x46<<7 | 0x2E,\n\t33287 - 19968: jis0208<<14 | 0x46<<7 | 0x2F,\n\t33288 - 19968: jis0208<<14 | 0x15<<7 | 0x1C,\n\t33289 - 19968: jis0208<<14 | 0x39<<7 | 0x09,\n\t33290 - 19968: jis0208<<14 | 0x46<<7 | 0x30,\n\t33292 - 19968: jis0208<<14 | 0x1F<<7 | 0x44,\n\t33293 - 19968: jis0208<<14 | 0x46<<7 | 0x31,\n\t33294 - 19968: jis0208<<14 | 0x1B<<7 | 0x2A,\n\t33295 - 19968: jis0212<<14 | 0x35<<7 | 0x4E,\n\t33296 - 19968: jis0208<<14 | 0x46<<7 | 0x32,\n\t33298 - 19968: jis0208<<14 | 0x2F<<7 | 0x0F,\n\t33299 - 19968: jis0212<<14 | 0x35<<7 | 0x4F,\n\t33300 - 19968: jis0212<<14 | 0x35<<7 | 0x50,\n\t33302 - 19968: jis0208<<14 | 0x46<<7 | 0x33,\n\t33303 - 19968: jis0208<<14 | 0x29<<7 | 0x3D,\n\t33304 - 19968: jis0208<<14 | 0x13<<7 | 0x3B,\n\t33305 - 19968: jis0212<<14 | 0x35<<7 | 0x51,\n\t33306 - 19968: jis0212<<14 | 0x35<<7 | 0x52,\n\t33307 - 19968: jis0208<<14 | 0x20<<7 | 0x03,\n\t33308 - 19968: jis0208<<14 | 0x1C<<7 | 0x37,\n\t33309 - 19968: jis0212<<14 | 0x35<<7 | 0x53,\n\t33310 - 19968: jis0208<<14 | 0x28<<7 | 0x50,\n\t33311 - 19968: jis0208<<14 | 0x1C<<7 | 0x0D,\n\t33313 - 19968: jis0212<<14 | 0x35<<7 | 0x54,\n\t33314 - 19968: jis0212<<14 | 0x35<<7 | 0x55,\n\t33320 - 19968: jis0212<<14 | 0x35<<7 | 0x56,\n\t33321 - 19968: jis0208<<14 | 0x46<<7 | 0x34,\n\t33322 - 19968: jis0208<<14 | 0x18<<7 | 0x31,\n\t33323 - 19968: jis0208<<14 | 0x46<<7 | 0x35,\n\t33324 - 19968: jis0208<<14 | 0x27<<7 | 0x2B,\n\t33326 - 19968: jis0208<<14 | 0x46<<7 | 0x43,\n\t33330 - 19968: jis0212<<14 | 0x35<<7 | 0x57,\n\t33331 - 19968: jis0208<<14 | 0x46<<7 | 0x37,\n\t33332 - 19968: jis0212<<14 | 0x35<<7 | 0x58,\n\t33333 - 19968: jis0208<<14 | 0x21<<7 | 0x28,\n\t33334 - 19968: jis0208<<14 | 0x26<<7 | 0x54,\n\t33335 - 19968: jis0208<<14 | 0x17<<7 | 0x1E,\n\t33336 - 19968: jis0208<<14 | 0x46<<7 | 0x36,\n\t33337 - 19968: jis0208<<14 | 0x20<<7 | 0x04,\n\t33338 - 19968: jis0212<<14 | 0x35<<7 | 0x59,\n\t33344 - 19968: jis0208<<14 | 0x46<<7 | 0x38,\n\t33347 - 19968: jis0212<<14 | 0x35<<7 | 0x5A,\n\t33348 - 19968: jis0212<<14 | 0x35<<7 | 0x5B,\n\t33349 - 19968: jis0212<<14 | 0x35<<7 | 0x5C,\n\t33350 - 19968: jis0212<<14 | 0x35<<7 | 0x5D,\n\t33351 - 19968: jis0208<<14 | 0x23<<7 | 0x59,\n\t33355 - 19968: jis0212<<14 | 0x36<<7 | 0x00,\n\t33358 - 19968: jis0212<<14 | 0x36<<7 | 0x01,\n\t33359 - 19968: jis0212<<14 | 0x36<<7 | 0x02,\n\t33361 - 19968: jis0212<<14 | 0x36<<7 | 0x03,\n\t33366 - 19968: jis0212<<14 | 0x36<<7 | 0x04,\n\t33368 - 19968: jis0208<<14 | 0x46<<7 | 0x3A,\n\t33369 - 19968: jis0208<<14 | 0x46<<7 | 0x39,\n\t33370 - 19968: jis0208<<14 | 0x46<<7 | 0x3C,\n\t33372 - 19968: jis0212<<14 | 0x36<<7 | 0x05,\n\t33373 - 19968: jis0208<<14 | 0x46<<7 | 0x3B,\n\t33375 - 19968: jis0208<<14 | 0x46<<7 | 0x3D,\n\t33376 - 19968: jis0212<<14 | 0x36<<7 | 0x06,\n\t33378 - 19968: jis0208<<14 | 0x46<<7 | 0x3F,\n\t33379 - 19968: jis0212<<14 | 0x36<<7 | 0x07,\n\t33380 - 19968: jis0208<<14 | 0x46<<7 | 0x3E,\n\t33382 - 19968: jis0208<<14 | 0x13<<7 | 0x2E,\n\t33383 - 19968: jis0212<<14 | 0x36<<7 | 0x08,\n\t33384 - 19968: jis0208<<14 | 0x46<<7 | 0x40,\n\t33386 - 19968: jis0208<<14 | 0x46<<7 | 0x41,\n\t33387 - 19968: jis0208<<14 | 0x46<<7 | 0x42,\n\t33389 - 19968: jis0212<<14 | 0x36<<7 | 0x09,\n\t33390 - 19968: jis0208<<14 | 0x19<<7 | 0x10,\n\t33391 - 19968: jis0208<<14 | 0x2D<<7 | 0x28,\n\t33393 - 19968: jis0208<<14 | 0x46<<7 | 0x44,\n\t33394 - 19968: jis0208<<14 | 0x1E<<7 | 0x06,\n\t33396 - 19968: jis0212<<14 | 0x36<<7 | 0x0A,\n\t33398 - 19968: jis0208<<14 | 0x10<<7 | 0x4F,\n\t33399 - 19968: jis0208<<14 | 0x46<<7 | 0x45,\n\t33400 - 19968: jis0208<<14 | 0x46<<7 | 0x46,\n\t33403 - 19968: jis0212<<14 | 0x36<<7 | 0x0B,\n\t33405 - 19968: jis0212<<14 | 0x36<<7 | 0x0C,\n\t33406 - 19968: jis0208<<14 | 0x46<<7 | 0x47,\n\t33407 - 19968: jis0212<<14 | 0x36<<7 | 0x0D,\n\t33408 - 19968: jis0212<<14 | 0x36<<7 | 0x0E,\n\t33409 - 19968: jis0212<<14 | 0x36<<7 | 0x0F,\n\t33411 - 19968: jis0212<<14 | 0x36<<7 | 0x10,\n\t33412 - 19968: jis0212<<14 | 0x36<<7 | 0x11,\n\t33415 - 19968: jis0212<<14 | 0x36<<7 | 0x12,\n\t33417 - 19968: jis0212<<14 | 0x36<<7 | 0x13,\n\t33418 - 19968: jis0212<<14 | 0x36<<7 | 0x14,\n\t33419 - 19968: jis0208<<14 | 0x0F<<7 | 0x51,\n\t33421 - 19968: jis0208<<14 | 0x46<<7 | 0x48,\n\t33422 - 19968: jis0212<<14 | 0x36<<7 | 0x15,\n\t33425 - 19968: jis0212<<14 | 0x36<<7 | 0x16,\n\t33426 - 19968: jis0208<<14 | 0x46<<7 | 0x49,\n\t33428 - 19968: jis0212<<14 | 0x36<<7 | 0x17,\n\t33430 - 19968: jis0212<<14 | 0x36<<7 | 0x18,\n\t33432 - 19968: jis0212<<14 | 0x36<<7 | 0x19,\n\t33433 - 19968: jis0208<<14 | 0x28<<7 | 0x46,\n\t33434 - 19968: jis0212<<14 | 0x36<<7 | 0x1A,\n\t33435 - 19968: jis0212<<14 | 0x36<<7 | 0x1B,\n\t33437 - 19968: jis0208<<14 | 0x1B<<7 | 0x26,\n\t33439 - 19968: jis0208<<14 | 0x46<<7 | 0x4B,\n\t33440 - 19968: jis0212<<14 | 0x36<<7 | 0x1C,\n\t33441 - 19968: jis0212<<14 | 0x36<<7 | 0x1D,\n\t33443 - 19968: jis0212<<14 | 0x36<<7 | 0x1E,\n\t33444 - 19968: jis0212<<14 | 0x36<<7 | 0x1F,\n\t33445 - 19968: jis0208<<14 | 0x12<<7 | 0x08,\n\t33446 - 19968: jis0208<<14 | 0x0F<<7 | 0x11,\n\t33447 - 19968: jis0212<<14 | 0x36<<7 | 0x20,\n\t33448 - 19968: jis0212<<14 | 0x36<<7 | 0x21,\n\t33449 - 19968: jis0212<<14 | 0x36<<7 | 0x22,\n\t33450 - 19968: jis0212<<14 | 0x36<<7 | 0x23,\n\t33451 - 19968: jis0208<<14 | 0x46<<7 | 0x4A,\n\t33452 - 19968: jis0208<<14 | 0x46<<7 | 0x4D,\n\t33453 - 19968: jis0208<<14 | 0x26<<7 | 0x2D,\n\t33454 - 19968: jis0212<<14 | 0x36<<7 | 0x24,\n\t33455 - 19968: jis0208<<14 | 0x1E<<7 | 0x23,\n\t33456 - 19968: jis0212<<14 | 0x36<<7 | 0x25,\n\t33457 - 19968: jis0208<<14 | 0x11<<7 | 0x35,\n\t33458 - 19968: jis0212<<14 | 0x36<<7 | 0x26,\n\t33459 - 19968: jis0208<<14 | 0x2A<<7 | 0x06,\n\t33460 - 19968: jis0212<<14 | 0x36<<7 | 0x27,\n\t33463 - 19968: jis0212<<14 | 0x36<<7 | 0x28,\n\t33464 - 19968: jis0208<<14 | 0x16<<7 | 0x3C,\n\t33465 - 19968: jis0208<<14 | 0x15<<7 | 0x3B,\n\t33466 - 19968: jis0212<<14 | 0x36<<7 | 0x29,\n\t33467 - 19968: jis0208<<14 | 0x46<<7 | 0x4C,\n\t33468 - 19968: jis0212<<14 | 0x36<<7 | 0x2A,\n\t33469 - 19968: jis0208<<14 | 0x11<<7 | 0x49,\n\t33470 - 19968: jis0212<<14 | 0x36<<7 | 0x2B,\n\t33471 - 19968: jis0212<<14 | 0x36<<7 | 0x2C,\n\t33477 - 19968: jis0208<<14 | 0x13<<7 | 0x02,\n\t33478 - 19968: jis0212<<14 | 0x36<<7 | 0x2D,\n\t33488 - 19968: jis0212<<14 | 0x36<<7 | 0x2E,\n\t33489 - 19968: jis0208<<14 | 0x10<<7 | 0x50,\n\t33490 - 19968: jis0208<<14 | 0x46<<7 | 0x51,\n\t33491 - 19968: jis0208<<14 | 0x2D<<7 | 0x49,\n\t33492 - 19968: jis0208<<14 | 0x21<<7 | 0x3C,\n\t33493 - 19968: jis0212<<14 | 0x36<<7 | 0x2F,\n\t33495 - 19968: jis0208<<14 | 0x28<<7 | 0x23,\n\t33497 - 19968: jis0208<<14 | 0x46<<7 | 0x5D,\n\t33498 - 19968: jis0212<<14 | 0x36<<7 | 0x30,\n\t33499 - 19968: jis0208<<14 | 0x11<<7 | 0x36,\n\t33500 - 19968: jis0208<<14 | 0x46<<7 | 0x5B,\n\t33502 - 19968: jis0208<<14 | 0x46<<7 | 0x59,\n\t33503 - 19968: jis0208<<14 | 0x46<<7 | 0x50,\n\t33504 - 19968: jis0212<<14 | 0x36<<7 | 0x31,\n\t33505 - 19968: jis0208<<14 | 0x46<<7 | 0x4E,\n\t33506 - 19968: jis0212<<14 | 0x36<<7 | 0x32,\n\t33507 - 19968: jis0208<<14 | 0x46<<7 | 0x4F,\n\t33508 - 19968: jis0212<<14 | 0x36<<7 | 0x33,\n\t33509 - 19968: jis0208<<14 | 0x1B<<7 | 0x42,\n\t33510 - 19968: jis0208<<14 | 0x15<<7 | 0x4B,\n\t33511 - 19968: jis0208<<14 | 0x22<<7 | 0x56,\n\t33512 - 19968: jis0212<<14 | 0x36<<7 | 0x34,\n\t33514 - 19968: jis0212<<14 | 0x36<<7 | 0x35,\n\t33515 - 19968: jis0208<<14 | 0x25<<7 | 0x30,\n\t33517 - 19968: jis0212<<14 | 0x36<<7 | 0x36,\n\t33519 - 19968: jis0212<<14 | 0x36<<7 | 0x37,\n\t33521 - 19968: jis0208<<14 | 0x10<<7 | 0x30,\n\t33523 - 19968: jis0208<<14 | 0x46<<7 | 0x53,\n\t33524 - 19968: jis0208<<14 | 0x46<<7 | 0x52,\n\t33526 - 19968: jis0212<<14 | 0x36<<7 | 0x38,\n\t33527 - 19968: jis0212<<14 | 0x36<<7 | 0x39,\n\t33529 - 19968: jis0208<<14 | 0x46<<7 | 0x58,\n\t33530 - 19968: jis0208<<14 | 0x46<<7 | 0x54,\n\t33531 - 19968: jis0208<<14 | 0x46<<7 | 0x57,\n\t33533 - 19968: jis0212<<14 | 0x36<<7 | 0x3A,\n\t33534 - 19968: jis0212<<14 | 0x36<<7 | 0x3B,\n\t33536 - 19968: jis0212<<14 | 0x36<<7 | 0x3C,\n\t33537 - 19968: jis0208<<14 | 0x5A<<7 | 0x36,\n\t33538 - 19968: jis0208<<14 | 0x2B<<7 | 0x2F,\n\t33539 - 19968: jis0208<<14 | 0x46<<7 | 0x56,\n\t33540 - 19968: jis0208<<14 | 0x11<<7 | 0x37,\n\t33541 - 19968: jis0208<<14 | 0x12<<7 | 0x5C,\n\t33542 - 19968: jis0208<<14 | 0x46<<7 | 0x5A,\n\t33543 - 19968: jis0212<<14 | 0x36<<7 | 0x3E,\n\t33544 - 19968: jis0212<<14 | 0x36<<7 | 0x3F,\n\t33545 - 19968: jis0208<<14 | 0x46<<7 | 0x5C,\n\t33546 - 19968: jis0212<<14 | 0x36<<7 | 0x40,\n\t33547 - 19968: jis0212<<14 | 0x36<<7 | 0x41,\n\t33550 - 19968: jis0208<<14 | 0x16<<7 | 0x33,\n\t33558 - 19968: jis0208<<14 | 0x47<<7 | 0x02,\n\t33559 - 19968: jis0208<<14 | 0x47<<7 | 0x0B,\n\t33560 - 19968: jis0208<<14 | 0x47<<7 | 0x0C,\n\t33563 - 19968: jis0212<<14 | 0x36<<7 | 0x43,\n\t33564 - 19968: jis0208<<14 | 0x0F<<7 | 0x0A,\n\t33565 - 19968: jis0212<<14 | 0x36<<7 | 0x44,\n\t33566 - 19968: jis0212<<14 | 0x36<<7 | 0x45,\n\t33567 - 19968: jis0212<<14 | 0x36<<7 | 0x46,\n\t33569 - 19968: jis0212<<14 | 0x36<<7 | 0x47,\n\t33570 - 19968: jis0212<<14 | 0x36<<7 | 0x48,\n\t33571 - 19968: jis0208<<14 | 0x47<<7 | 0x13,\n\t33576 - 19968: jis0208<<14 | 0x0F<<7 | 0x50,\n\t33579 - 19968: jis0208<<14 | 0x47<<7 | 0x0A,\n\t33580 - 19968: jis0212<<14 | 0x36<<7 | 0x49,\n\t33581 - 19968: jis0212<<14 | 0x36<<7 | 0x4A,\n\t33582 - 19968: jis0212<<14 | 0x36<<7 | 0x4B,\n\t33583 - 19968: jis0208<<14 | 0x47<<7 | 0x09,\n\t33584 - 19968: jis0212<<14 | 0x36<<7 | 0x4C,\n\t33585 - 19968: jis0208<<14 | 0x47<<7 | 0x04,\n\t33586 - 19968: jis0208<<14 | 0x47<<7 | 0x03,\n\t33587 - 19968: jis0212<<14 | 0x36<<7 | 0x4D,\n\t33588 - 19968: jis0208<<14 | 0x47<<7 | 0x01,\n\t33589 - 19968: jis0208<<14 | 0x47<<7 | 0x00,\n\t33590 - 19968: jis0208<<14 | 0x22<<7 | 0x42,\n\t33591 - 19968: jis0212<<14 | 0x36<<7 | 0x4E,\n\t33592 - 19968: jis0208<<14 | 0x21<<7 | 0x5A,\n\t33593 - 19968: jis0208<<14 | 0x47<<7 | 0x06,\n\t33594 - 19968: jis0212<<14 | 0x36<<7 | 0x4F,\n\t33596 - 19968: jis0212<<14 | 0x36<<7 | 0x50,\n\t33597 - 19968: jis0212<<14 | 0x36<<7 | 0x51,\n\t33600 - 19968: jis0208<<14 | 0x47<<7 | 0x05,\n\t33602 - 19968: jis0212<<14 | 0x36<<7 | 0x52,\n\t33603 - 19968: jis0212<<14 | 0x36<<7 | 0x53,\n\t33604 - 19968: jis0212<<14 | 0x36<<7 | 0x54,\n\t33605 - 19968: jis0208<<14 | 0x47<<7 | 0x08,\n\t33607 - 19968: jis0212<<14 | 0x36<<7 | 0x55,\n\t33609 - 19968: jis0208<<14 | 0x20<<7 | 0x4F,\n\t33610 - 19968: jis0208<<14 | 0x16<<7 | 0x34,\n\t33613 - 19968: jis0212<<14 | 0x36<<7 | 0x56,\n\t33614 - 19968: jis0212<<14 | 0x36<<7 | 0x57,\n\t33615 - 19968: jis0208<<14 | 0x10<<7 | 0x20,\n\t33616 - 19968: jis0208<<14 | 0x47<<7 | 0x07,\n\t33617 - 19968: jis0212<<14 | 0x36<<7 | 0x58,\n\t33618 - 19968: jis0208<<14 | 0x18<<7 | 0x32,\n\t33619 - 19968: jis0212<<14 | 0x37<<7 | 0x1D,\n\t33620 - 19968: jis0212<<14 | 0x36<<7 | 0x42,\n\t33621 - 19968: jis0212<<14 | 0x36<<7 | 0x59,\n\t33622 - 19968: jis0212<<14 | 0x36<<7 | 0x5A,\n\t33623 - 19968: jis0212<<14 | 0x36<<7 | 0x5B,\n\t33624 - 19968: jis0208<<14 | 0x20<<7 | 0x50,\n\t33634 - 19968: jis0208<<14 | 0x5A<<7 | 0x37,\n\t33648 - 19968: jis0212<<14 | 0x36<<7 | 0x5C,\n\t33651 - 19968: jis0208<<14 | 0x47<<7 | 0x19,\n\t33653 - 19968: jis0208<<14 | 0x47<<7 | 0x1A,\n\t33655 - 19968: jis0208<<14 | 0x11<<7 | 0x38,\n\t33656 - 19968: jis0212<<14 | 0x36<<7 | 0x5D,\n\t33659 - 19968: jis0208<<14 | 0x11<<7 | 0x0D,\n\t33660 - 19968: jis0208<<14 | 0x47<<7 | 0x17,\n\t33661 - 19968: jis0212<<14 | 0x37<<7 | 0x00,\n\t33663 - 19968: jis0208<<14 | 0x5A<<7 | 0x38,\n\t33664 - 19968: jis0212<<14 | 0x37<<7 | 0x02,\n\t33666 - 19968: jis0212<<14 | 0x37<<7 | 0x03,\n\t33668 - 19968: jis0212<<14 | 0x37<<7 | 0x04,\n\t33669 - 19968: jis0208<<14 | 0x47<<7 | 0x0D,\n\t33670 - 19968: jis0212<<14 | 0x37<<7 | 0x05,\n\t33671 - 19968: jis0208<<14 | 0x47<<7 | 0x15,\n\t33673 - 19968: jis0208<<14 | 0x47<<7 | 0x1C,\n\t33674 - 19968: jis0208<<14 | 0x47<<7 | 0x16,\n\t33677 - 19968: jis0212<<14 | 0x37<<7 | 0x06,\n\t33678 - 19968: jis0208<<14 | 0x47<<7 | 0x14,\n\t33682 - 19968: jis0212<<14 | 0x37<<7 | 0x07,\n\t33683 - 19968: jis0208<<14 | 0x46<<7 | 0x55,\n\t33684 - 19968: jis0212<<14 | 0x37<<7 | 0x08,\n\t33685 - 19968: jis0212<<14 | 0x37<<7 | 0x09,\n\t33686 - 19968: jis0208<<14 | 0x47<<7 | 0x12,\n\t33688 - 19968: jis0212<<14 | 0x37<<7 | 0x0A,\n\t33689 - 19968: jis0212<<14 | 0x37<<7 | 0x0B,\n\t33690 - 19968: jis0208<<14 | 0x47<<7 | 0x0E,\n\t33691 - 19968: jis0212<<14 | 0x37<<7 | 0x0C,\n\t33692 - 19968: jis0212<<14 | 0x37<<7 | 0x0D,\n\t33693 - 19968: jis0212<<14 | 0x37<<7 | 0x0E,\n\t33694 - 19968: jis0208<<14 | 0x13<<7 | 0x2F,\n\t33695 - 19968: jis0208<<14 | 0x47<<7 | 0x10,\n\t33696 - 19968: jis0208<<14 | 0x47<<7 | 0x1B,\n\t33698 - 19968: jis0208<<14 | 0x47<<7 | 0x11,\n\t33702 - 19968: jis0212<<14 | 0x37<<7 | 0x0F,\n\t33703 - 19968: jis0212<<14 | 0x37<<7 | 0x10,\n\t33704 - 19968: jis0208<<14 | 0x47<<7 | 0x1D,\n\t33705 - 19968: jis0212<<14 | 0x37<<7 | 0x11,\n\t33706 - 19968: jis0208<<14 | 0x47<<7 | 0x0F,\n\t33707 - 19968: jis0208<<14 | 0x26<<7 | 0x5B,\n\t33708 - 19968: jis0212<<14 | 0x37<<7 | 0x12,\n\t33709 - 19968: jis0212<<14 | 0x37<<7 | 0x2B,\n\t33713 - 19968: jis0208<<14 | 0x2C<<7 | 0x48,\n\t33717 - 19968: jis0208<<14 | 0x47<<7 | 0x18,\n\t33725 - 19968: jis0208<<14 | 0x47<<7 | 0x2E,\n\t33726 - 19968: jis0212<<14 | 0x37<<7 | 0x13,\n\t33727 - 19968: jis0212<<14 | 0x37<<7 | 0x14,\n\t33728 - 19968: jis0212<<14 | 0x37<<7 | 0x15,\n\t33729 - 19968: jis0208<<14 | 0x47<<7 | 0x26,\n\t33733 - 19968: jis0208<<14 | 0x1E<<7 | 0x5A,\n\t33735 - 19968: jis0208<<14 | 0x5A<<7 | 0x39,\n\t33737 - 19968: jis0212<<14 | 0x37<<7 | 0x17,\n\t33738 - 19968: jis0208<<14 | 0x14<<7 | 0x25,\n\t33740 - 19968: jis0208<<14 | 0x15<<7 | 0x3C,\n\t33742 - 19968: jis0208<<14 | 0x47<<7 | 0x21,\n\t33743 - 19968: jis0212<<14 | 0x37<<7 | 0x18,\n\t33744 - 19968: jis0212<<14 | 0x37<<7 | 0x19,\n\t33745 - 19968: jis0212<<14 | 0x37<<7 | 0x1A,\n\t33747 - 19968: jis0208<<14 | 0x11<<7 | 0x3A,\n\t33748 - 19968: jis0212<<14 | 0x37<<7 | 0x1B,\n\t33750 - 19968: jis0208<<14 | 0x1D<<7 | 0x33,\n\t33752 - 19968: jis0208<<14 | 0x47<<7 | 0x24,\n\t33756 - 19968: jis0208<<14 | 0x19<<7 | 0x39,\n\t33757 - 19968: jis0212<<14 | 0x37<<7 | 0x1C,\n\t33759 - 19968: jis0208<<14 | 0x24<<7 | 0x30,\n\t33760 - 19968: jis0208<<14 | 0x47<<7 | 0x29,\n\t33768 - 19968: jis0212<<14 | 0x37<<7 | 0x1E,\n\t33769 - 19968: jis0208<<14 | 0x29<<7 | 0x4D,\n\t33770 - 19968: jis0212<<14 | 0x37<<7 | 0x1F,\n\t33771 - 19968: jis0208<<14 | 0x47<<7 | 0x20,\n\t33775 - 19968: jis0208<<14 | 0x11<<7 | 0x39,\n\t33776 - 19968: jis0208<<14 | 0x17<<7 | 0x35,\n\t33777 - 19968: jis0208<<14 | 0x28<<7 | 0x08,\n\t33778 - 19968: jis0208<<14 | 0x47<<7 | 0x2A,\n\t33780 - 19968: jis0208<<14 | 0x47<<7 | 0x1E,\n\t33782 - 19968: jis0208<<14 | 0x5A<<7 | 0x3A,\n\t33783 - 19968: jis0208<<14 | 0x47<<7 | 0x27,\n\t33784 - 19968: jis0212<<14 | 0x37<<7 | 0x21,\n\t33785 - 19968: jis0212<<14 | 0x37<<7 | 0x22,\n\t33787 - 19968: jis0208<<14 | 0x47<<7 | 0x31,\n\t33788 - 19968: jis0212<<14 | 0x37<<7 | 0x23,\n\t33789 - 19968: jis0208<<14 | 0x47<<7 | 0x22,\n\t33793 - 19968: jis0212<<14 | 0x37<<7 | 0x24,\n\t33795 - 19968: jis0208<<14 | 0x47<<7 | 0x23,\n\t33796 - 19968: jis0208<<14 | 0x25<<7 | 0x19,\n\t33798 - 19968: jis0212<<14 | 0x37<<7 | 0x25,\n\t33799 - 19968: jis0208<<14 | 0x47<<7 | 0x28,\n\t33802 - 19968: jis0212<<14 | 0x37<<7 | 0x26,\n\t33803 - 19968: jis0208<<14 | 0x47<<7 | 0x25,\n\t33804 - 19968: jis0208<<14 | 0x2A<<7 | 0x07,\n\t33805 - 19968: jis0208<<14 | 0x47<<7 | 0x2B,\n\t33806 - 19968: jis0208<<14 | 0x0F<<7 | 0x3F,\n\t33807 - 19968: jis0212<<14 | 0x37<<7 | 0x27,\n\t33809 - 19968: jis0212<<14 | 0x37<<7 | 0x28,\n\t33811 - 19968: jis0208<<14 | 0x47<<7 | 0x1F,\n\t33813 - 19968: jis0212<<14 | 0x37<<7 | 0x29,\n\t33817 - 19968: jis0212<<14 | 0x37<<7 | 0x2A,\n\t33824 - 19968: jis0208<<14 | 0x47<<7 | 0x2D,\n\t33826 - 19968: jis0208<<14 | 0x47<<7 | 0x2C,\n\t33833 - 19968: jis0208<<14 | 0x26<<7 | 0x4A,\n\t33834 - 19968: jis0208<<14 | 0x47<<7 | 0x33,\n\t33836 - 19968: jis0208<<14 | 0x47<<7 | 0x3E,\n\t33839 - 19968: jis0212<<14 | 0x37<<7 | 0x2C,\n\t33841 - 19968: jis0208<<14 | 0x12<<7 | 0x5D,\n\t33845 - 19968: jis0208<<14 | 0x47<<7 | 0x41,\n\t33848 - 19968: jis0208<<14 | 0x47<<7 | 0x2F,\n\t33849 - 19968: jis0212<<14 | 0x37<<7 | 0x2D,\n\t33852 - 19968: jis0208<<14 | 0x47<<7 | 0x34,\n\t33853 - 19968: jis0208<<14 | 0x2C<<7 | 0x4D,\n\t33861 - 19968: jis0212<<14 | 0x37<<7 | 0x2E,\n\t33862 - 19968: jis0208<<14 | 0x47<<7 | 0x3D,\n\t33863 - 19968: jis0212<<14 | 0x37<<7 | 0x2F,\n\t33864 - 19968: jis0208<<14 | 0x5A<<7 | 0x3B,\n\t33865 - 19968: jis0208<<14 | 0x2C<<7 | 0x34,\n\t33866 - 19968: jis0212<<14 | 0x37<<7 | 0x31,\n\t33869 - 19968: jis0212<<14 | 0x37<<7 | 0x32,\n\t33870 - 19968: jis0208<<14 | 0x2D<<7 | 0x09,\n\t33871 - 19968: jis0212<<14 | 0x37<<7 | 0x33,\n\t33873 - 19968: jis0212<<14 | 0x37<<7 | 0x34,\n\t33874 - 19968: jis0212<<14 | 0x37<<7 | 0x35,\n\t33878 - 19968: jis0212<<14 | 0x37<<7 | 0x36,\n\t33879 - 19968: jis0208<<14 | 0x22<<7 | 0x57,\n\t33880 - 19968: jis0212<<14 | 0x37<<7 | 0x37,\n\t33881 - 19968: jis0212<<14 | 0x37<<7 | 0x38,\n\t33882 - 19968: jis0212<<14 | 0x37<<7 | 0x39,\n\t33883 - 19968: jis0208<<14 | 0x12<<7 | 0x4A,\n\t33884 - 19968: jis0212<<14 | 0x37<<7 | 0x3A,\n\t33888 - 19968: jis0212<<14 | 0x37<<7 | 0x3B,\n\t33889 - 19968: jis0208<<14 | 0x28<<7 | 0x51,\n\t33890 - 19968: jis0208<<14 | 0x47<<7 | 0x43,\n\t33891 - 19968: jis0208<<14 | 0x25<<7 | 0x00,\n\t33892 - 19968: jis0212<<14 | 0x37<<7 | 0x3C,\n\t33893 - 19968: jis0212<<14 | 0x37<<7 | 0x3D,\n\t33894 - 19968: jis0208<<14 | 0x0F<<7 | 0x10,\n\t33895 - 19968: jis0212<<14 | 0x37<<7 | 0x3E,\n\t33897 - 19968: jis0208<<14 | 0x47<<7 | 0x3C,\n\t33898 - 19968: jis0212<<14 | 0x37<<7 | 0x3F,\n\t33899 - 19968: jis0208<<14 | 0x47<<7 | 0x38,\n\t33900 - 19968: jis0208<<14 | 0x20<<7 | 0x51,\n\t33901 - 19968: jis0208<<14 | 0x47<<7 | 0x32,\n\t33902 - 19968: jis0208<<14 | 0x47<<7 | 0x3A,\n\t33903 - 19968: jis0208<<14 | 0x47<<7 | 0x3F,\n\t33904 - 19968: jis0212<<14 | 0x37<<7 | 0x40,\n\t33905 - 19968: jis0208<<14 | 0x26<<7 | 0x0B,\n\t33907 - 19968: jis0212<<14 | 0x37<<7 | 0x41,\n\t33908 - 19968: jis0212<<14 | 0x37<<7 | 0x42,\n\t33909 - 19968: jis0208<<14 | 0x0F<<7 | 0x09,\n\t33910 - 19968: jis0212<<14 | 0x37<<7 | 0x43,\n\t33911 - 19968: jis0208<<14 | 0x47<<7 | 0x37,\n\t33912 - 19968: jis0212<<14 | 0x37<<7 | 0x44,\n\t33913 - 19968: jis0208<<14 | 0x47<<7 | 0x40,\n\t33914 - 19968: jis0208<<14 | 0x28<<7 | 0x57,\n\t33916 - 19968: jis0212<<14 | 0x37<<7 | 0x45,\n\t33917 - 19968: jis0212<<14 | 0x37<<7 | 0x46,\n\t33921 - 19968: jis0212<<14 | 0x37<<7 | 0x47,\n\t33922 - 19968: jis0208<<14 | 0x47<<7 | 0x3B,\n\t33924 - 19968: jis0208<<14 | 0x47<<7 | 0x36,\n\t33925 - 19968: jis0212<<14 | 0x37<<7 | 0x48,\n\t33931 - 19968: jis0208<<14 | 0x1D<<7 | 0x34,\n\t33936 - 19968: jis0208<<14 | 0x1C<<7 | 0x0E,\n\t33938 - 19968: jis0212<<14 | 0x37<<7 | 0x49,\n\t33939 - 19968: jis0212<<14 | 0x37<<7 | 0x4A,\n\t33940 - 19968: jis0208<<14 | 0x1B<<7 | 0x0B,\n\t33941 - 19968: jis0212<<14 | 0x37<<7 | 0x4B,\n\t33945 - 19968: jis0208<<14 | 0x2B<<7 | 0x37,\n\t33948 - 19968: jis0208<<14 | 0x28<<7 | 0x26,\n\t33950 - 19968: jis0212<<14 | 0x37<<7 | 0x4C,\n\t33951 - 19968: jis0208<<14 | 0x47<<7 | 0x46,\n\t33953 - 19968: jis0208<<14 | 0x47<<7 | 0x4F,\n\t33958 - 19968: jis0212<<14 | 0x37<<7 | 0x4D,\n\t33960 - 19968: jis0212<<14 | 0x37<<7 | 0x4E,\n\t33961 - 19968: jis0212<<14 | 0x37<<7 | 0x4F,\n\t33962 - 19968: jis0212<<14 | 0x37<<7 | 0x50,\n\t33965 - 19968: jis0208<<14 | 0x47<<7 | 0x39,\n\t33967 - 19968: jis0212<<14 | 0x37<<7 | 0x51,\n\t33969 - 19968: jis0212<<14 | 0x37<<7 | 0x52,\n\t33970 - 19968: jis0208<<14 | 0x12<<7 | 0x56,\n\t33972 - 19968: jis0208<<14 | 0x5A<<7 | 0x3C,\n\t33976 - 19968: jis0208<<14 | 0x1D<<7 | 0x57,\n\t33977 - 19968: jis0208<<14 | 0x47<<7 | 0x44,\n\t33978 - 19968: jis0212<<14 | 0x37<<7 | 0x54,\n\t33979 - 19968: jis0208<<14 | 0x47<<7 | 0x49,\n\t33980 - 19968: jis0208<<14 | 0x20<<7 | 0x52,\n\t33981 - 19968: jis0212<<14 | 0x37<<7 | 0x55,\n\t33982 - 19968: jis0212<<14 | 0x37<<7 | 0x56,\n\t33983 - 19968: jis0208<<14 | 0x47<<7 | 0x45,\n\t33984 - 19968: jis0212<<14 | 0x37<<7 | 0x57,\n\t33985 - 19968: jis0208<<14 | 0x47<<7 | 0x4C,\n\t33986 - 19968: jis0212<<14 | 0x37<<7 | 0x58,\n\t33988 - 19968: jis0208<<14 | 0x22<<7 | 0x3E,\n\t33990 - 19968: jis0208<<14 | 0x47<<7 | 0x4D,\n\t33991 - 19968: jis0212<<14 | 0x37<<7 | 0x59,\n\t33992 - 19968: jis0212<<14 | 0x37<<7 | 0x5A,\n\t33993 - 19968: jis0208<<14 | 0x2C<<7 | 0x35,\n\t33994 - 19968: jis0208<<14 | 0x47<<7 | 0x42,\n\t33995 - 19968: jis0208<<14 | 0x12<<7 | 0x17,\n\t33996 - 19968: jis0212<<14 | 0x37<<7 | 0x5B,\n\t33997 - 19968: jis0208<<14 | 0x47<<7 | 0x48,\n\t33999 - 19968: jis0212<<14 | 0x37<<7 | 0x5C,\n\t34000 - 19968: jis0208<<14 | 0x47<<7 | 0x4B,\n\t34001 - 19968: jis0208<<14 | 0x2B<<7 | 0x0B,\n\t34003 - 19968: jis0212<<14 | 0x37<<7 | 0x5D,\n\t34006 - 19968: jis0208<<14 | 0x47<<7 | 0x4E,\n\t34009 - 19968: jis0208<<14 | 0x47<<7 | 0x47,\n\t34010 - 19968: jis0208<<14 | 0x47<<7 | 0x4A,\n\t34012 - 19968: jis0208<<14 | 0x58<<7 | 0x04,\n\t34023 - 19968: jis0212<<14 | 0x38<<7 | 0x01,\n\t34026 - 19968: jis0212<<14 | 0x38<<7 | 0x02,\n\t34028 - 19968: jis0208<<14 | 0x2A<<7 | 0x08,\n\t34030 - 19968: jis0208<<14 | 0x2E<<7 | 0x00,\n\t34031 - 19968: jis0212<<14 | 0x38<<7 | 0x03,\n\t34032 - 19968: jis0212<<14 | 0x38<<7 | 0x04,\n\t34033 - 19968: jis0212<<14 | 0x38<<7 | 0x05,\n\t34034 - 19968: jis0212<<14 | 0x38<<7 | 0x06,\n\t34036 - 19968: jis0208<<14 | 0x47<<7 | 0x52,\n\t34039 - 19968: jis0212<<14 | 0x38<<7 | 0x07,\n\t34042 - 19968: jis0212<<14 | 0x38<<7 | 0x09,\n\t34043 - 19968: jis0212<<14 | 0x38<<7 | 0x0A,\n\t34044 - 19968: jis0208<<14 | 0x47<<7 | 0x59,\n\t34045 - 19968: jis0212<<14 | 0x38<<7 | 0x0B,\n\t34047 - 19968: jis0208<<14 | 0x47<<7 | 0x51,\n\t34048 - 19968: jis0208<<14 | 0x1B<<7 | 0x22,\n\t34050 - 19968: jis0212<<14 | 0x38<<7 | 0x0C,\n\t34051 - 19968: jis0212<<14 | 0x38<<7 | 0x0D,\n\t34054 - 19968: jis0208<<14 | 0x47<<7 | 0x30,\n\t34055 - 19968: jis0212<<14 | 0x38<<7 | 0x0E,\n\t34060 - 19968: jis0212<<14 | 0x38<<7 | 0x0F,\n\t34062 - 19968: jis0212<<14 | 0x38<<7 | 0x10,\n\t34064 - 19968: jis0212<<14 | 0x38<<7 | 0x11,\n\t34065 - 19968: jis0208<<14 | 0x29<<7 | 0x2D,\n\t34067 - 19968: jis0208<<14 | 0x2B<<7 | 0x01,\n\t34068 - 19968: jis0208<<14 | 0x47<<7 | 0x58,\n\t34069 - 19968: jis0208<<14 | 0x47<<7 | 0x57,\n\t34071 - 19968: jis0208<<14 | 0x47<<7 | 0x53,\n\t34072 - 19968: jis0208<<14 | 0x47<<7 | 0x54,\n\t34074 - 19968: jis0208<<14 | 0x10<<7 | 0x15,\n\t34076 - 19968: jis0212<<14 | 0x38<<7 | 0x12,\n\t34078 - 19968: jis0212<<14 | 0x38<<7 | 0x13,\n\t34079 - 19968: jis0208<<14 | 0x47<<7 | 0x56,\n\t34081 - 19968: jis0208<<14 | 0x47<<7 | 0x50,\n\t34082 - 19968: jis0212<<14 | 0x38<<7 | 0x14,\n\t34083 - 19968: jis0212<<14 | 0x38<<7 | 0x15,\n\t34084 - 19968: jis0212<<14 | 0x38<<7 | 0x16,\n\t34085 - 19968: jis0212<<14 | 0x38<<7 | 0x17,\n\t34086 - 19968: jis0208<<14 | 0x23<<7 | 0x34,\n\t34087 - 19968: jis0212<<14 | 0x38<<7 | 0x18,\n\t34090 - 19968: jis0212<<14 | 0x38<<7 | 0x19,\n\t34091 - 19968: jis0212<<14 | 0x38<<7 | 0x1A,\n\t34092 - 19968: jis0208<<14 | 0x47<<7 | 0x55,\n\t34093 - 19968: jis0208<<14 | 0x0F<<7 | 0x5D,\n\t34095 - 19968: jis0212<<14 | 0x38<<7 | 0x1B,\n\t34098 - 19968: jis0212<<14 | 0x38<<7 | 0x08,\n\t34099 - 19968: jis0212<<14 | 0x38<<7 | 0x1C,\n\t34100 - 19968: jis0212<<14 | 0x38<<7 | 0x1D,\n\t34101 - 19968: jis0208<<14 | 0x21<<7 | 0x01,\n\t34102 - 19968: jis0212<<14 | 0x38<<7 | 0x1E,\n\t34109 - 19968: jis0208<<14 | 0x29<<7 | 0x22,\n\t34111 - 19968: jis0212<<14 | 0x38<<7 | 0x1F,\n\t34112 - 19968: jis0208<<14 | 0x47<<7 | 0x5A,\n\t34113 - 19968: jis0208<<14 | 0x48<<7 | 0x00,\n\t34115 - 19968: jis0208<<14 | 0x27<<7 | 0x38,\n\t34118 - 19968: jis0212<<14 | 0x38<<7 | 0x20,\n\t34120 - 19968: jis0208<<14 | 0x47<<7 | 0x5D,\n\t34121 - 19968: jis0208<<14 | 0x1D<<7 | 0x35,\n\t34122 - 19968: jis0208<<14 | 0x1B<<7 | 0x28,\n\t34123 - 19968: jis0208<<14 | 0x48<<7 | 0x02,\n\t34126 - 19968: jis0208<<14 | 0x15<<7 | 0x1D,\n\t34127 - 19968: jis0212<<14 | 0x38<<7 | 0x21,\n\t34128 - 19968: jis0212<<14 | 0x38<<7 | 0x22,\n\t34129 - 19968: jis0212<<14 | 0x38<<7 | 0x23,\n\t34130 - 19968: jis0212<<14 | 0x38<<7 | 0x24,\n\t34131 - 19968: jis0208<<14 | 0x5A<<7 | 0x3D,\n\t34133 - 19968: jis0208<<14 | 0x48<<7 | 0x03,\n\t34134 - 19968: jis0212<<14 | 0x38<<7 | 0x26,\n\t34135 - 19968: jis0208<<14 | 0x28<<7 | 0x58,\n\t34136 - 19968: jis0208<<14 | 0x47<<7 | 0x5C,\n\t34137 - 19968: jis0208<<14 | 0x5A<<7 | 0x3E,\n\t34138 - 19968: jis0208<<14 | 0x47<<7 | 0x35,\n\t34140 - 19968: jis0212<<14 | 0x38<<7 | 0x28,\n\t34141 - 19968: jis0212<<14 | 0x38<<7 | 0x29,\n\t34142 - 19968: jis0212<<14 | 0x38<<7 | 0x2A,\n\t34143 - 19968: jis0212<<14 | 0x38<<7 | 0x2B,\n\t34144 - 19968: jis0212<<14 | 0x38<<7 | 0x2C,\n\t34145 - 19968: jis0212<<14 | 0x38<<7 | 0x2D,\n\t34146 - 19968: jis0212<<14 | 0x38<<7 | 0x2E,\n\t34147 - 19968: jis0208<<14 | 0x47<<7 | 0x5B,\n\t34148 - 19968: jis0212<<14 | 0x38<<7 | 0x2F,\n\t34152 - 19968: jis0208<<14 | 0x2E<<7 | 0x2E,\n\t34153 - 19968: jis0208<<14 | 0x25<<7 | 0x01,\n\t34154 - 19968: jis0208<<14 | 0x28<<7 | 0x52,\n\t34155 - 19968: jis0208<<14 | 0x5A<<7 | 0x3F,\n\t34157 - 19968: jis0208<<14 | 0x48<<7 | 0x0A,\n\t34159 - 19968: jis0212<<14 | 0x38<<7 | 0x31,\n\t34167 - 19968: jis0208<<14 | 0x48<<7 | 0x10,\n\t34169 - 19968: jis0212<<14 | 0x38<<7 | 0x32,\n\t34170 - 19968: jis0212<<14 | 0x38<<7 | 0x33,\n\t34171 - 19968: jis0212<<14 | 0x38<<7 | 0x34,\n\t34173 - 19968: jis0212<<14 | 0x38<<7 | 0x35,\n\t34174 - 19968: jis0208<<14 | 0x48<<7 | 0x11,\n\t34175 - 19968: jis0212<<14 | 0x38<<7 | 0x36,\n\t34176 - 19968: jis0208<<14 | 0x48<<7 | 0x04,\n\t34177 - 19968: jis0212<<14 | 0x38<<7 | 0x37,\n\t34180 - 19968: jis0208<<14 | 0x26<<7 | 0x55,\n\t34181 - 19968: jis0212<<14 | 0x38<<7 | 0x38,\n\t34182 - 19968: jis0212<<14 | 0x38<<7 | 0x39,\n\t34183 - 19968: jis0208<<14 | 0x48<<7 | 0x0E,\n\t34184 - 19968: jis0208<<14 | 0x48<<7 | 0x06,\n\t34185 - 19968: jis0212<<14 | 0x38<<7 | 0x3A,\n\t34186 - 19968: jis0208<<14 | 0x48<<7 | 0x08,\n\t34187 - 19968: jis0212<<14 | 0x38<<7 | 0x3B,\n\t34188 - 19968: jis0212<<14 | 0x38<<7 | 0x3C,\n\t34191 - 19968: jis0212<<14 | 0x38<<7 | 0x3D,\n\t34192 - 19968: jis0208<<14 | 0x48<<7 | 0x12,\n\t34193 - 19968: jis0208<<14 | 0x48<<7 | 0x07,\n\t34195 - 19968: jis0212<<14 | 0x38<<7 | 0x3E,\n\t34196 - 19968: jis0208<<14 | 0x48<<7 | 0x0B,\n\t34199 - 19968: jis0208<<14 | 0x10<<7 | 0x51,\n\t34200 - 19968: jis0212<<14 | 0x38<<7 | 0x3F,\n\t34201 - 19968: jis0208<<14 | 0x25<<7 | 0x44,\n\t34203 - 19968: jis0208<<14 | 0x48<<7 | 0x0C,\n\t34204 - 19968: jis0208<<14 | 0x48<<7 | 0x0F,\n\t34205 - 19968: jis0212<<14 | 0x38<<7 | 0x40,\n\t34207 - 19968: jis0212<<14 | 0x38<<7 | 0x41,\n\t34208 - 19968: jis0212<<14 | 0x38<<7 | 0x42,\n\t34210 - 19968: jis0212<<14 | 0x38<<7 | 0x43,\n\t34212 - 19968: jis0208<<14 | 0x48<<7 | 0x05,\n\t34213 - 19968: jis0212<<14 | 0x38<<7 | 0x44,\n\t34214 - 19968: jis0208<<14 | 0x20<<7 | 0x05,\n\t34215 - 19968: jis0212<<14 | 0x38<<7 | 0x45,\n\t34216 - 19968: jis0208<<14 | 0x48<<7 | 0x09,\n\t34217 - 19968: jis0208<<14 | 0x1A<<7 | 0x06,\n\t34218 - 19968: jis0208<<14 | 0x1E<<7 | 0x24,\n\t34219 - 19968: jis0208<<14 | 0x16<<7 | 0x0F,\n\t34220 - 19968: jis0208<<14 | 0x2B<<7 | 0x53,\n\t34221 - 19968: jis0212<<14 | 0x38<<7 | 0x53,\n\t34222 - 19968: jis0208<<14 | 0x2B<<7 | 0x58,\n\t34223 - 19968: jis0208<<14 | 0x1C<<7 | 0x51,\n\t34224 - 19968: jis0208<<14 | 0x5A<<7 | 0x41,\n\t34228 - 19968: jis0212<<14 | 0x38<<7 | 0x46,\n\t34230 - 19968: jis0212<<14 | 0x38<<7 | 0x47,\n\t34231 - 19968: jis0212<<14 | 0x38<<7 | 0x48,\n\t34232 - 19968: jis0212<<14 | 0x38<<7 | 0x49,\n\t34233 - 19968: jis0208<<14 | 0x48<<7 | 0x16,\n\t34234 - 19968: jis0208<<14 | 0x48<<7 | 0x14,\n\t34236 - 19968: jis0212<<14 | 0x38<<7 | 0x4A,\n\t34237 - 19968: jis0212<<14 | 0x38<<7 | 0x4B,\n\t34238 - 19968: jis0212<<14 | 0x38<<7 | 0x4C,\n\t34239 - 19968: jis0212<<14 | 0x38<<7 | 0x4D,\n\t34241 - 19968: jis0208<<14 | 0x2E<<7 | 0x2D,\n\t34242 - 19968: jis0212<<14 | 0x38<<7 | 0x4E,\n\t34247 - 19968: jis0212<<14 | 0x38<<7 | 0x4F,\n\t34249 - 19968: jis0208<<14 | 0x48<<7 | 0x13,\n\t34250 - 19968: jis0212<<14 | 0x38<<7 | 0x50,\n\t34251 - 19968: jis0212<<14 | 0x38<<7 | 0x51,\n\t34253 - 19968: jis0208<<14 | 0x2C<<7 | 0x54,\n\t34254 - 19968: jis0212<<14 | 0x38<<7 | 0x52,\n\t34255 - 19968: jis0208<<14 | 0x48<<7 | 0x15,\n\t34256 - 19968: jis0208<<14 | 0x48<<7 | 0x17,\n\t34261 - 19968: jis0208<<14 | 0x48<<7 | 0x18,\n\t34264 - 19968: jis0212<<14 | 0x38<<7 | 0x54,\n\t34266 - 19968: jis0212<<14 | 0x38<<7 | 0x55,\n\t34268 - 19968: jis0208<<14 | 0x48<<7 | 0x1B,\n\t34269 - 19968: jis0208<<14 | 0x48<<7 | 0x19,\n\t34271 - 19968: jis0212<<14 | 0x38<<7 | 0x56,\n\t34272 - 19968: jis0212<<14 | 0x38<<7 | 0x57,\n\t34276 - 19968: jis0208<<14 | 0x25<<7 | 0x02,\n\t34277 - 19968: jis0208<<14 | 0x48<<7 | 0x1A,\n\t34278 - 19968: jis0212<<14 | 0x38<<7 | 0x58,\n\t34280 - 19968: jis0212<<14 | 0x38<<7 | 0x59,\n\t34281 - 19968: jis0208<<14 | 0x27<<7 | 0x2C,\n\t34282 - 19968: jis0208<<14 | 0x48<<7 | 0x0D,\n\t34285 - 19968: jis0212<<14 | 0x38<<7 | 0x5A,\n\t34291 - 19968: jis0212<<14 | 0x38<<7 | 0x5B,\n\t34294 - 19968: jis0212<<14 | 0x38<<7 | 0x5C,\n\t34295 - 19968: jis0208<<14 | 0x1C<<7 | 0x52,\n\t34297 - 19968: jis0208<<14 | 0x48<<7 | 0x1C,\n\t34298 - 19968: jis0208<<14 | 0x48<<7 | 0x21,\n\t34299 - 19968: jis0208<<14 | 0x20<<7 | 0x53,\n\t34300 - 19968: jis0212<<14 | 0x38<<7 | 0x5D,\n\t34302 - 19968: jis0208<<14 | 0x48<<7 | 0x20,\n\t34303 - 19968: jis0212<<14 | 0x39<<7 | 0x00,\n\t34304 - 19968: jis0212<<14 | 0x39<<7 | 0x01,\n\t34306 - 19968: jis0208<<14 | 0x48<<7 | 0x01,\n\t34308 - 19968: jis0212<<14 | 0x39<<7 | 0x02,\n\t34309 - 19968: jis0212<<14 | 0x39<<7 | 0x03,\n\t34310 - 19968: jis0208<<14 | 0x48<<7 | 0x22,\n\t34311 - 19968: jis0208<<14 | 0x20<<7 | 0x28,\n\t34314 - 19968: jis0208<<14 | 0x48<<7 | 0x1D,\n\t34315 - 19968: jis0208<<14 | 0x48<<7 | 0x1F,\n\t34317 - 19968: jis0212<<14 | 0x39<<7 | 0x04,\n\t34318 - 19968: jis0212<<14 | 0x39<<7 | 0x05,\n\t34320 - 19968: jis0212<<14 | 0x39<<7 | 0x06,\n\t34321 - 19968: jis0212<<14 | 0x39<<7 | 0x07,\n\t34322 - 19968: jis0212<<14 | 0x39<<7 | 0x08,\n\t34323 - 19968: jis0208<<14 | 0x48<<7 | 0x1E,\n\t34326 - 19968: jis0208<<14 | 0x3C<<7 | 0x10,\n\t34327 - 19968: jis0208<<14 | 0x3C<<7 | 0x01,\n\t34328 - 19968: jis0212<<14 | 0x39<<7 | 0x09,\n\t34329 - 19968: jis0212<<14 | 0x39<<7 | 0x0A,\n\t34330 - 19968: jis0208<<14 | 0x48<<7 | 0x24,\n\t34331 - 19968: jis0212<<14 | 0x39<<7 | 0x0B,\n\t34334 - 19968: jis0212<<14 | 0x39<<7 | 0x0C,\n\t34337 - 19968: jis0212<<14 | 0x39<<7 | 0x0D,\n\t34338 - 19968: jis0208<<14 | 0x48<<7 | 0x23,\n\t34343 - 19968: jis0212<<14 | 0x39<<7 | 0x0E,\n\t34345 - 19968: jis0212<<14 | 0x39<<7 | 0x0F,\n\t34349 - 19968: jis0208<<14 | 0x2C<<7 | 0x55,\n\t34351 - 19968: jis0208<<14 | 0x41<<7 | 0x1B,\n\t34352 - 19968: jis0208<<14 | 0x48<<7 | 0x25,\n\t34358 - 19968: jis0212<<14 | 0x39<<7 | 0x10,\n\t34360 - 19968: jis0212<<14 | 0x39<<7 | 0x11,\n\t34362 - 19968: jis0212<<14 | 0x39<<7 | 0x12,\n\t34364 - 19968: jis0212<<14 | 0x39<<7 | 0x13,\n\t34365 - 19968: jis0212<<14 | 0x39<<7 | 0x14,\n\t34367 - 19968: jis0208<<14 | 0x48<<7 | 0x26,\n\t34368 - 19968: jis0212<<14 | 0x39<<7 | 0x15,\n\t34369 - 19968: jis0212<<14 | 0x17<<7 | 0x45,\n\t34370 - 19968: jis0212<<14 | 0x39<<7 | 0x16,\n\t34374 - 19968: jis0212<<14 | 0x39<<7 | 0x17,\n\t34381 - 19968: jis0208<<14 | 0x48<<7 | 0x27,\n\t34382 - 19968: jis0208<<14 | 0x17<<7 | 0x36,\n\t34384 - 19968: jis0208<<14 | 0x14<<7 | 0x33,\n\t34386 - 19968: jis0212<<14 | 0x39<<7 | 0x18,\n\t34387 - 19968: jis0212<<14 | 0x39<<7 | 0x19,\n\t34388 - 19968: jis0208<<14 | 0x48<<7 | 0x29,\n\t34389 - 19968: jis0208<<14 | 0x30<<7 | 0x3C,\n\t34390 - 19968: jis0212<<14 | 0x39<<7 | 0x1A,\n\t34391 - 19968: jis0212<<14 | 0x39<<7 | 0x1B,\n\t34392 - 19968: jis0212<<14 | 0x39<<7 | 0x1C,\n\t34393 - 19968: jis0212<<14 | 0x39<<7 | 0x1D,\n\t34394 - 19968: jis0208<<14 | 0x14<<7 | 0x54,\n\t34396 - 19968: jis0208<<14 | 0x2D<<7 | 0x19,\n\t34397 - 19968: jis0212<<14 | 0x39<<7 | 0x1E,\n\t34398 - 19968: jis0208<<14 | 0x15<<7 | 0x52,\n\t34399 - 19968: jis0208<<14 | 0x48<<7 | 0x2A,\n\t34400 - 19968: jis0212<<14 | 0x39<<7 | 0x1F,\n\t34401 - 19968: jis0212<<14 | 0x39<<7 | 0x20,\n\t34402 - 19968: jis0212<<14 | 0x39<<7 | 0x21,\n\t34403 - 19968: jis0212<<14 | 0x39<<7 | 0x22,\n\t34404 - 19968: jis0212<<14 | 0x39<<7 | 0x23,\n\t34407 - 19968: jis0208<<14 | 0x48<<7 | 0x2B,\n\t34409 - 19968: jis0212<<14 | 0x39<<7 | 0x24,\n\t34411 - 19968: jis0208<<14 | 0x22<<7 | 0x4D,\n\t34412 - 19968: jis0212<<14 | 0x39<<7 | 0x25,\n\t34415 - 19968: jis0212<<14 | 0x39<<7 | 0x26,\n\t34417 - 19968: jis0208<<14 | 0x48<<7 | 0x2C,\n\t34421 - 19968: jis0212<<14 | 0x39<<7 | 0x27,\n\t34422 - 19968: jis0212<<14 | 0x39<<7 | 0x28,\n\t34423 - 19968: jis0212<<14 | 0x39<<7 | 0x29,\n\t34425 - 19968: jis0208<<14 | 0x25<<7 | 0x59,\n\t34426 - 19968: jis0212<<14 | 0x39<<7 | 0x2A,\n\t34427 - 19968: jis0208<<14 | 0x0F<<7 | 0x19,\n\t34440 - 19968: jis0212<<14 | 0x39<<7 | 0x4C,\n\t34442 - 19968: jis0208<<14 | 0x11<<7 | 0x42,\n\t34443 - 19968: jis0208<<14 | 0x48<<7 | 0x31,\n\t34444 - 19968: jis0208<<14 | 0x48<<7 | 0x32,\n\t34445 - 19968: jis0212<<14 | 0x39<<7 | 0x2B,\n\t34449 - 19968: jis0212<<14 | 0x39<<7 | 0x2C,\n\t34451 - 19968: jis0208<<14 | 0x48<<7 | 0x2D,\n\t34453 - 19968: jis0208<<14 | 0x1A<<7 | 0x1C,\n\t34454 - 19968: jis0212<<14 | 0x39<<7 | 0x2D,\n\t34456 - 19968: jis0212<<14 | 0x39<<7 | 0x2E,\n\t34458 - 19968: jis0212<<14 | 0x39<<7 | 0x2F,\n\t34460 - 19968: jis0212<<14 | 0x39<<7 | 0x30,\n\t34465 - 19968: jis0212<<14 | 0x39<<7 | 0x31,\n\t34467 - 19968: jis0208<<14 | 0x48<<7 | 0x2E,\n\t34468 - 19968: jis0208<<14 | 0x26<<7 | 0x21,\n\t34470 - 19968: jis0212<<14 | 0x39<<7 | 0x32,\n\t34471 - 19968: jis0212<<14 | 0x39<<7 | 0x33,\n\t34472 - 19968: jis0212<<14 | 0x39<<7 | 0x34,\n\t34473 - 19968: jis0208<<14 | 0x48<<7 | 0x2F,\n\t34474 - 19968: jis0208<<14 | 0x48<<7 | 0x30,\n\t34475 - 19968: jis0208<<14 | 0x48<<7 | 0x3A,\n\t34477 - 19968: jis0212<<14 | 0x39<<7 | 0x35,\n\t34479 - 19968: jis0208<<14 | 0x48<<7 | 0x34,\n\t34480 - 19968: jis0208<<14 | 0x48<<7 | 0x37,\n\t34481 - 19968: jis0212<<14 | 0x39<<7 | 0x36,\n\t34483 - 19968: jis0212<<14 | 0x39<<7 | 0x37,\n\t34484 - 19968: jis0212<<14 | 0x39<<7 | 0x38,\n\t34485 - 19968: jis0212<<14 | 0x39<<7 | 0x39,\n\t34486 - 19968: jis0208<<14 | 0x48<<7 | 0x33,\n\t34487 - 19968: jis0212<<14 | 0x39<<7 | 0x3A,\n\t34488 - 19968: jis0212<<14 | 0x39<<7 | 0x3B,\n\t34489 - 19968: jis0212<<14 | 0x39<<7 | 0x3C,\n\t34495 - 19968: jis0212<<14 | 0x39<<7 | 0x3D,\n\t34496 - 19968: jis0212<<14 | 0x39<<7 | 0x3E,\n\t34497 - 19968: jis0212<<14 | 0x39<<7 | 0x3F,\n\t34499 - 19968: jis0212<<14 | 0x39<<7 | 0x40,\n\t34500 - 19968: jis0208<<14 | 0x48<<7 | 0x35,\n\t34501 - 19968: jis0212<<14 | 0x39<<7 | 0x41,\n\t34502 - 19968: jis0208<<14 | 0x48<<7 | 0x36,\n\t34503 - 19968: jis0208<<14 | 0x1B<<7 | 0x37,\n\t34505 - 19968: jis0208<<14 | 0x48<<7 | 0x38,\n\t34507 - 19968: jis0208<<14 | 0x22<<7 | 0x20,\n\t34509 - 19968: jis0208<<14 | 0x16<<7 | 0x35,\n\t34510 - 19968: jis0208<<14 | 0x12<<7 | 0x21,\n\t34513 - 19968: jis0212<<14 | 0x39<<7 | 0x42,\n\t34514 - 19968: jis0212<<14 | 0x39<<7 | 0x43,\n\t34516 - 19968: jis0208<<14 | 0x48<<7 | 0x3B,\n\t34517 - 19968: jis0212<<14 | 0x39<<7 | 0x44,\n\t34519 - 19968: jis0212<<14 | 0x39<<7 | 0x45,\n\t34521 - 19968: jis0208<<14 | 0x12<<7 | 0x1E,\n\t34522 - 19968: jis0212<<14 | 0x39<<7 | 0x46,\n\t34523 - 19968: jis0208<<14 | 0x48<<7 | 0x40,\n\t34524 - 19968: jis0212<<14 | 0x39<<7 | 0x47,\n\t34526 - 19968: jis0208<<14 | 0x48<<7 | 0x3C,\n\t34527 - 19968: jis0208<<14 | 0x48<<7 | 0x3F,\n\t34528 - 19968: jis0212<<14 | 0x39<<7 | 0x48,\n\t34531 - 19968: jis0212<<14 | 0x39<<7 | 0x49,\n\t34532 - 19968: jis0208<<14 | 0x27<<7 | 0x19,\n\t34533 - 19968: jis0212<<14 | 0x39<<7 | 0x4A,\n\t34535 - 19968: jis0212<<14 | 0x39<<7 | 0x4B,\n\t34537 - 19968: jis0208<<14 | 0x48<<7 | 0x3D,\n\t34540 - 19968: jis0208<<14 | 0x48<<7 | 0x3E,\n\t34541 - 19968: jis0208<<14 | 0x28<<7 | 0x27,\n\t34542 - 19968: jis0208<<14 | 0x27<<7 | 0x39,\n\t34543 - 19968: jis0208<<14 | 0x48<<7 | 0x41,\n\t34552 - 19968: jis0208<<14 | 0x21<<7 | 0x5C,\n\t34553 - 19968: jis0208<<14 | 0x48<<7 | 0x4B,\n\t34554 - 19968: jis0212<<14 | 0x39<<7 | 0x4D,\n\t34555 - 19968: jis0208<<14 | 0x48<<7 | 0x47,\n\t34556 - 19968: jis0212<<14 | 0x39<<7 | 0x4E,\n\t34557 - 19968: jis0212<<14 | 0x39<<7 | 0x4F,\n\t34558 - 19968: jis0208<<14 | 0x11<<7 | 0x4A,\n\t34560 - 19968: jis0208<<14 | 0x48<<7 | 0x45,\n\t34562 - 19968: jis0208<<14 | 0x2A<<7 | 0x09,\n\t34563 - 19968: jis0208<<14 | 0x48<<7 | 0x46,\n\t34564 - 19968: jis0212<<14 | 0x39<<7 | 0x50,\n\t34565 - 19968: jis0212<<14 | 0x39<<7 | 0x51,\n\t34566 - 19968: jis0208<<14 | 0x48<<7 | 0x43,\n\t34567 - 19968: jis0212<<14 | 0x39<<7 | 0x52,\n\t34568 - 19968: jis0208<<14 | 0x48<<7 | 0x44,\n\t34569 - 19968: jis0208<<14 | 0x48<<7 | 0x49,\n\t34570 - 19968: jis0208<<14 | 0x48<<7 | 0x4C,\n\t34571 - 19968: jis0212<<14 | 0x39<<7 | 0x53,\n\t34573 - 19968: jis0208<<14 | 0x48<<7 | 0x4A,\n\t34574 - 19968: jis0212<<14 | 0x39<<7 | 0x54,\n\t34575 - 19968: jis0212<<14 | 0x39<<7 | 0x55,\n\t34576 - 19968: jis0212<<14 | 0x39<<7 | 0x56,\n\t34577 - 19968: jis0208<<14 | 0x48<<7 | 0x48,\n\t34578 - 19968: jis0208<<14 | 0x48<<7 | 0x42,\n\t34579 - 19968: jis0212<<14 | 0x39<<7 | 0x57,\n\t34580 - 19968: jis0212<<14 | 0x39<<7 | 0x58,\n\t34584 - 19968: jis0208<<14 | 0x22<<7 | 0x37,\n\t34585 - 19968: jis0212<<14 | 0x39<<7 | 0x59,\n\t34586 - 19968: jis0208<<14 | 0x48<<7 | 0x53,\n\t34588 - 19968: jis0208<<14 | 0x2B<<7 | 0x09,\n\t34590 - 19968: jis0212<<14 | 0x39<<7 | 0x5A,\n\t34591 - 19968: jis0212<<14 | 0x39<<7 | 0x5B,\n\t34593 - 19968: jis0212<<14 | 0x39<<7 | 0x5C,\n\t34595 - 19968: jis0212<<14 | 0x39<<7 | 0x5D,\n\t34597 - 19968: jis0208<<14 | 0x48<<7 | 0x51,\n\t34600 - 19968: jis0212<<14 | 0x3A<<7 | 0x00,\n\t34601 - 19968: jis0208<<14 | 0x48<<7 | 0x52,\n\t34606 - 19968: jis0212<<14 | 0x3A<<7 | 0x01,\n\t34607 - 19968: jis0212<<14 | 0x3A<<7 | 0x02,\n\t34609 - 19968: jis0212<<14 | 0x3A<<7 | 0x03,\n\t34610 - 19968: jis0212<<14 | 0x3A<<7 | 0x04,\n\t34612 - 19968: jis0208<<14 | 0x48<<7 | 0x4D,\n\t34615 - 19968: jis0208<<14 | 0x48<<7 | 0x4F,\n\t34617 - 19968: jis0212<<14 | 0x3A<<7 | 0x05,\n\t34618 - 19968: jis0212<<14 | 0x3A<<7 | 0x06,\n\t34619 - 19968: jis0208<<14 | 0x48<<7 | 0x50,\n\t34620 - 19968: jis0212<<14 | 0x3A<<7 | 0x07,\n\t34621 - 19968: jis0212<<14 | 0x3A<<7 | 0x08,\n\t34622 - 19968: jis0212<<14 | 0x3A<<7 | 0x09,\n\t34623 - 19968: jis0208<<14 | 0x48<<7 | 0x4E,\n\t34624 - 19968: jis0212<<14 | 0x3A<<7 | 0x0A,\n\t34627 - 19968: jis0212<<14 | 0x3A<<7 | 0x0B,\n\t34629 - 19968: jis0212<<14 | 0x3A<<7 | 0x0C,\n\t34633 - 19968: jis0208<<14 | 0x1F<<7 | 0x45,\n\t34635 - 19968: jis0208<<14 | 0x2E<<7 | 0x18,\n\t34636 - 19968: jis0208<<14 | 0x48<<7 | 0x57,\n\t34637 - 19968: jis0212<<14 | 0x3A<<7 | 0x0D,\n\t34638 - 19968: jis0208<<14 | 0x48<<7 | 0x58,\n\t34643 - 19968: jis0208<<14 | 0x49<<7 | 0x00,\n\t34645 - 19968: jis0208<<14 | 0x1E<<7 | 0x09,\n\t34647 - 19968: jis0208<<14 | 0x48<<7 | 0x5A,\n\t34648 - 19968: jis0212<<14 | 0x3A<<7 | 0x0E,\n\t34649 - 19968: jis0208<<14 | 0x48<<7 | 0x5D,\n\t34653 - 19968: jis0212<<14 | 0x3A<<7 | 0x0F,\n\t34655 - 19968: jis0208<<14 | 0x48<<7 | 0x55,\n\t34656 - 19968: jis0208<<14 | 0x48<<7 | 0x54,\n\t34657 - 19968: jis0212<<14 | 0x3A<<7 | 0x10,\n\t34659 - 19968: jis0208<<14 | 0x49<<7 | 0x01,\n\t34660 - 19968: jis0212<<14 | 0x3A<<7 | 0x11,\n\t34661 - 19968: jis0212<<14 | 0x3A<<7 | 0x12,\n\t34662 - 19968: jis0208<<14 | 0x11<<7 | 0x3B,\n\t34664 - 19968: jis0208<<14 | 0x48<<7 | 0x5B,\n\t34666 - 19968: jis0208<<14 | 0x49<<7 | 0x02,\n\t34670 - 19968: jis0208<<14 | 0x48<<7 | 0x5C,\n\t34671 - 19968: jis0212<<14 | 0x3A<<7 | 0x13,\n\t34673 - 19968: jis0212<<14 | 0x3A<<7 | 0x14,\n\t34674 - 19968: jis0212<<14 | 0x3A<<7 | 0x15,\n\t34676 - 19968: jis0208<<14 | 0x48<<7 | 0x59,\n\t34678 - 19968: jis0208<<14 | 0x23<<7 | 0x12,\n\t34680 - 19968: jis0208<<14 | 0x48<<7 | 0x56,\n\t34683 - 19968: jis0212<<14 | 0x3A<<7 | 0x16,\n\t34687 - 19968: jis0208<<14 | 0x26<<7 | 0x47,\n\t34690 - 19968: jis0208<<14 | 0x49<<7 | 0x06,\n\t34691 - 19968: jis0212<<14 | 0x3A<<7 | 0x17,\n\t34692 - 19968: jis0212<<14 | 0x3A<<7 | 0x18,\n\t34693 - 19968: jis0212<<14 | 0x3A<<7 | 0x19,\n\t34694 - 19968: jis0212<<14 | 0x3A<<7 | 0x1A,\n\t34695 - 19968: jis0212<<14 | 0x3A<<7 | 0x1B,\n\t34696 - 19968: jis0212<<14 | 0x3A<<7 | 0x1C,\n\t34697 - 19968: jis0212<<14 | 0x3A<<7 | 0x1D,\n\t34699 - 19968: jis0212<<14 | 0x3A<<7 | 0x1E,\n\t34700 - 19968: jis0212<<14 | 0x3A<<7 | 0x1F,\n\t34701 - 19968: jis0208<<14 | 0x2C<<7 | 0x1A,\n\t34704 - 19968: jis0212<<14 | 0x3A<<7 | 0x20,\n\t34707 - 19968: jis0212<<14 | 0x3A<<7 | 0x21,\n\t34709 - 19968: jis0212<<14 | 0x3A<<7 | 0x22,\n\t34711 - 19968: jis0212<<14 | 0x3A<<7 | 0x23,\n\t34712 - 19968: jis0212<<14 | 0x3A<<7 | 0x24,\n\t34713 - 19968: jis0212<<14 | 0x3A<<7 | 0x25,\n\t34718 - 19968: jis0212<<14 | 0x3A<<7 | 0x26,\n\t34719 - 19968: jis0208<<14 | 0x49<<7 | 0x05,\n\t34720 - 19968: jis0212<<14 | 0x3A<<7 | 0x27,\n\t34722 - 19968: jis0208<<14 | 0x49<<7 | 0x04,\n\t34723 - 19968: jis0212<<14 | 0x3A<<7 | 0x28,\n\t34727 - 19968: jis0212<<14 | 0x3A<<7 | 0x29,\n\t34731 - 19968: jis0208<<14 | 0x49<<7 | 0x0D,\n\t34732 - 19968: jis0212<<14 | 0x3A<<7 | 0x2A,\n\t34733 - 19968: jis0212<<14 | 0x3A<<7 | 0x2B,\n\t34734 - 19968: jis0212<<14 | 0x3A<<7 | 0x2C,\n\t34735 - 19968: jis0208<<14 | 0x49<<7 | 0x07,\n\t34737 - 19968: jis0212<<14 | 0x3A<<7 | 0x2D,\n\t34739 - 19968: jis0208<<14 | 0x49<<7 | 0x0F,\n\t34741 - 19968: jis0212<<14 | 0x3A<<7 | 0x2E,\n\t34746 - 19968: jis0208<<14 | 0x2C<<7 | 0x45,\n\t34747 - 19968: jis0208<<14 | 0x49<<7 | 0x12,\n\t34749 - 19968: jis0208<<14 | 0x49<<7 | 0x09,\n\t34750 - 19968: jis0212<<14 | 0x3A<<7 | 0x2F,\n\t34751 - 19968: jis0212<<14 | 0x3A<<7 | 0x30,\n\t34752 - 19968: jis0208<<14 | 0x49<<7 | 0x0A,\n\t34753 - 19968: jis0212<<14 | 0x3A<<7 | 0x31,\n\t34756 - 19968: jis0208<<14 | 0x49<<7 | 0x0E,\n\t34758 - 19968: jis0208<<14 | 0x49<<7 | 0x11,\n\t34759 - 19968: jis0208<<14 | 0x49<<7 | 0x10,\n\t34760 - 19968: jis0212<<14 | 0x3A<<7 | 0x32,\n\t34761 - 19968: jis0212<<14 | 0x3A<<7 | 0x33,\n\t34762 - 19968: jis0212<<14 | 0x3A<<7 | 0x34,\n\t34763 - 19968: jis0208<<14 | 0x49<<7 | 0x08,\n\t34766 - 19968: jis0212<<14 | 0x3A<<7 | 0x35,\n\t34768 - 19968: jis0208<<14 | 0x49<<7 | 0x0B,\n\t34770 - 19968: jis0208<<14 | 0x49<<7 | 0x1C,\n\t34773 - 19968: jis0212<<14 | 0x3A<<7 | 0x36,\n\t34774 - 19968: jis0212<<14 | 0x3A<<7 | 0x37,\n\t34777 - 19968: jis0212<<14 | 0x3A<<7 | 0x38,\n\t34778 - 19968: jis0212<<14 | 0x3A<<7 | 0x39,\n\t34780 - 19968: jis0212<<14 | 0x3A<<7 | 0x3A,\n\t34783 - 19968: jis0212<<14 | 0x3A<<7 | 0x3B,\n\t34784 - 19968: jis0208<<14 | 0x49<<7 | 0x15,\n\t34786 - 19968: jis0212<<14 | 0x3A<<7 | 0x3C,\n\t34787 - 19968: jis0212<<14 | 0x3A<<7 | 0x3D,\n\t34788 - 19968: jis0212<<14 | 0x3A<<7 | 0x3E,\n\t34794 - 19968: jis0212<<14 | 0x3A<<7 | 0x3F,\n\t34795 - 19968: jis0212<<14 | 0x3A<<7 | 0x40,\n\t34797 - 19968: jis0212<<14 | 0x3A<<7 | 0x41,\n\t34799 - 19968: jis0208<<14 | 0x49<<7 | 0x13,\n\t34801 - 19968: jis0212<<14 | 0x3A<<7 | 0x42,\n\t34802 - 19968: jis0208<<14 | 0x49<<7 | 0x14,\n\t34803 - 19968: jis0212<<14 | 0x3A<<7 | 0x43,\n\t34806 - 19968: jis0208<<14 | 0x49<<7 | 0x19,\n\t34807 - 19968: jis0208<<14 | 0x49<<7 | 0x1A,\n\t34808 - 19968: jis0212<<14 | 0x3A<<7 | 0x44,\n\t34809 - 19968: jis0208<<14 | 0x12<<7 | 0x09,\n\t34810 - 19968: jis0212<<14 | 0x3A<<7 | 0x45,\n\t34811 - 19968: jis0208<<14 | 0x14<<7 | 0x21,\n\t34814 - 19968: jis0208<<14 | 0x49<<7 | 0x18,\n\t34815 - 19968: jis0212<<14 | 0x3A<<7 | 0x46,\n\t34817 - 19968: jis0212<<14 | 0x3A<<7 | 0x47,\n\t34819 - 19968: jis0212<<14 | 0x3A<<7 | 0x48,\n\t34821 - 19968: jis0208<<14 | 0x49<<7 | 0x03,\n\t34822 - 19968: jis0212<<14 | 0x3A<<7 | 0x49,\n\t34823 - 19968: jis0208<<14 | 0x5A<<7 | 0x44,\n\t34825 - 19968: jis0212<<14 | 0x3A<<7 | 0x4A,\n\t34826 - 19968: jis0212<<14 | 0x3A<<7 | 0x4B,\n\t34827 - 19968: jis0212<<14 | 0x3A<<7 | 0x4C,\n\t34829 - 19968: jis0208<<14 | 0x49<<7 | 0x17,\n\t34830 - 19968: jis0208<<14 | 0x49<<7 | 0x1B,\n\t34831 - 19968: jis0208<<14 | 0x49<<7 | 0x16,\n\t34832 - 19968: jis0212<<14 | 0x3A<<7 | 0x4D,\n\t34833 - 19968: jis0208<<14 | 0x49<<7 | 0x1D,\n\t34834 - 19968: jis0212<<14 | 0x3A<<7 | 0x4F,\n\t34835 - 19968: jis0212<<14 | 0x3A<<7 | 0x50,\n\t34836 - 19968: jis0212<<14 | 0x3A<<7 | 0x51,\n\t34837 - 19968: jis0208<<14 | 0x49<<7 | 0x1F,\n\t34838 - 19968: jis0208<<14 | 0x49<<7 | 0x1E,\n\t34840 - 19968: jis0212<<14 | 0x3A<<7 | 0x52,\n\t34841 - 19968: jis0212<<14 | 0x3A<<7 | 0x4E,\n\t34842 - 19968: jis0212<<14 | 0x3A<<7 | 0x53,\n\t34843 - 19968: jis0212<<14 | 0x3A<<7 | 0x54,\n\t34844 - 19968: jis0212<<14 | 0x3A<<7 | 0x55,\n\t34846 - 19968: jis0212<<14 | 0x3A<<7 | 0x56,\n\t34847 - 19968: jis0212<<14 | 0x3A<<7 | 0x57,\n\t34849 - 19968: jis0208<<14 | 0x49<<7 | 0x21,\n\t34850 - 19968: jis0208<<14 | 0x49<<7 | 0x20,\n\t34851 - 19968: jis0208<<14 | 0x48<<7 | 0x39,\n\t34855 - 19968: jis0208<<14 | 0x49<<7 | 0x25,\n\t34856 - 19968: jis0212<<14 | 0x3A<<7 | 0x58,\n\t34861 - 19968: jis0212<<14 | 0x3A<<7 | 0x59,\n\t34862 - 19968: jis0212<<14 | 0x3A<<7 | 0x5A,\n\t34864 - 19968: jis0212<<14 | 0x3A<<7 | 0x5B,\n\t34865 - 19968: jis0208<<14 | 0x49<<7 | 0x22,\n\t34866 - 19968: jis0212<<14 | 0x3A<<7 | 0x5C,\n\t34869 - 19968: jis0212<<14 | 0x3A<<7 | 0x5D,\n\t34870 - 19968: jis0208<<14 | 0x49<<7 | 0x23,\n\t34873 - 19968: jis0208<<14 | 0x49<<7 | 0x24,\n\t34874 - 19968: jis0212<<14 | 0x3B<<7 | 0x00,\n\t34875 - 19968: jis0208<<14 | 0x49<<7 | 0x26,\n\t34876 - 19968: jis0212<<14 | 0x3B<<7 | 0x01,\n\t34880 - 19968: jis0208<<14 | 0x16<<7 | 0x4B,\n\t34881 - 19968: jis0212<<14 | 0x3B<<7 | 0x02,\n\t34882 - 19968: jis0208<<14 | 0x49<<7 | 0x28,\n\t34883 - 19968: jis0212<<14 | 0x3B<<7 | 0x03,\n\t34884 - 19968: jis0208<<14 | 0x49<<7 | 0x27,\n\t34885 - 19968: jis0212<<14 | 0x3B<<7 | 0x04,\n\t34886 - 19968: jis0208<<14 | 0x1C<<7 | 0x0F,\n\t34888 - 19968: jis0212<<14 | 0x3B<<7 | 0x05,\n\t34889 - 19968: jis0212<<14 | 0x3B<<7 | 0x06,\n\t34890 - 19968: jis0212<<14 | 0x3B<<7 | 0x07,\n\t34891 - 19968: jis0212<<14 | 0x3B<<7 | 0x08,\n\t34892 - 19968: jis0208<<14 | 0x18<<7 | 0x33,\n\t34893 - 19968: jis0208<<14 | 0x3D<<7 | 0x06,\n\t34894 - 19968: jis0212<<14 | 0x3B<<7 | 0x09,\n\t34897 - 19968: jis0212<<14 | 0x3B<<7 | 0x0A,\n\t34898 - 19968: jis0208<<14 | 0x49<<7 | 0x29,\n\t34899 - 19968: jis0208<<14 | 0x1C<<7 | 0x30,\n\t34901 - 19968: jis0212<<14 | 0x3B<<7 | 0x0B,\n\t34902 - 19968: jis0212<<14 | 0x3B<<7 | 0x0C,\n\t34903 - 19968: jis0208<<14 | 0x12<<7 | 0x18,\n\t34904 - 19968: jis0212<<14 | 0x3B<<7 | 0x0D,\n\t34905 - 19968: jis0208<<14 | 0x49<<7 | 0x2A,\n\t34906 - 19968: jis0212<<14 | 0x3B<<7 | 0x0E,\n\t34907 - 19968: jis0208<<14 | 0x10<<7 | 0x31,\n\t34908 - 19968: jis0212<<14 | 0x3B<<7 | 0x0F,\n\t34909 - 19968: jis0208<<14 | 0x1D<<7 | 0x36,\n\t34910 - 19968: jis0208<<14 | 0x49<<7 | 0x2B,\n\t34911 - 19968: jis0212<<14 | 0x3B<<7 | 0x10,\n\t34912 - 19968: jis0212<<14 | 0x3B<<7 | 0x11,\n\t34913 - 19968: jis0208<<14 | 0x18<<7 | 0x34,\n\t34914 - 19968: jis0208<<14 | 0x49<<7 | 0x2C,\n\t34915 - 19968: jis0208<<14 | 0x0F<<7 | 0x40,\n\t34916 - 19968: jis0212<<14 | 0x3B<<7 | 0x12,\n\t34920 - 19968: jis0208<<14 | 0x28<<7 | 0x1C,\n\t34921 - 19968: jis0212<<14 | 0x3B<<7 | 0x13,\n\t34923 - 19968: jis0208<<14 | 0x49<<7 | 0x2D,\n\t34928 - 19968: jis0208<<14 | 0x1E<<7 | 0x49,\n\t34929 - 19968: jis0212<<14 | 0x3B<<7 | 0x14,\n\t34930 - 19968: jis0208<<14 | 0x49<<7 | 0x34,\n\t34933 - 19968: jis0208<<14 | 0x49<<7 | 0x31,\n\t34935 - 19968: jis0208<<14 | 0x22<<7 | 0x4E,\n\t34937 - 19968: jis0212<<14 | 0x3B<<7 | 0x15,\n\t34939 - 19968: jis0212<<14 | 0x3B<<7 | 0x16,\n\t34941 - 19968: jis0208<<14 | 0x49<<7 | 0x32,\n\t34942 - 19968: jis0208<<14 | 0x49<<7 | 0x2F,\n\t34943 - 19968: jis0208<<14 | 0x15<<7 | 0x3D,\n\t34944 - 19968: jis0212<<14 | 0x3B<<7 | 0x17,\n\t34945 - 19968: jis0208<<14 | 0x49<<7 | 0x2E,\n\t34946 - 19968: jis0208<<14 | 0x49<<7 | 0x35,\n\t34952 - 19968: jis0208<<14 | 0x16<<7 | 0x15,\n\t34955 - 19968: jis0208<<14 | 0x21<<7 | 0x3D,\n\t34957 - 19968: jis0208<<14 | 0x49<<7 | 0x3B,\n\t34962 - 19968: jis0208<<14 | 0x49<<7 | 0x37,\n\t34966 - 19968: jis0208<<14 | 0x21<<7 | 0x14,\n\t34967 - 19968: jis0208<<14 | 0x49<<7 | 0x36,\n\t34968 - 19968: jis0212<<14 | 0x3B<<7 | 0x18,\n\t34969 - 19968: jis0208<<14 | 0x49<<7 | 0x39,\n\t34970 - 19968: jis0212<<14 | 0x3B<<7 | 0x19,\n\t34971 - 19968: jis0212<<14 | 0x3B<<7 | 0x1A,\n\t34972 - 19968: jis0212<<14 | 0x3B<<7 | 0x1B,\n\t34974 - 19968: jis0208<<14 | 0x49<<7 | 0x30,\n\t34975 - 19968: jis0212<<14 | 0x3B<<7 | 0x1C,\n\t34976 - 19968: jis0212<<14 | 0x3B<<7 | 0x1D,\n\t34978 - 19968: jis0208<<14 | 0x49<<7 | 0x3A,\n\t34980 - 19968: jis0208<<14 | 0x49<<7 | 0x3C,\n\t34984 - 19968: jis0212<<14 | 0x3B<<7 | 0x1E,\n\t34986 - 19968: jis0212<<14 | 0x3B<<7 | 0x1F,\n\t34987 - 19968: jis0208<<14 | 0x27<<7 | 0x4E,\n\t34990 - 19968: jis0208<<14 | 0x49<<7 | 0x38,\n\t34992 - 19968: jis0208<<14 | 0x49<<7 | 0x3D,\n\t34993 - 19968: jis0208<<14 | 0x49<<7 | 0x3F,\n\t34996 - 19968: jis0208<<14 | 0x17<<7 | 0x32,\n\t34997 - 19968: jis0208<<14 | 0x49<<7 | 0x33,\n\t34999 - 19968: jis0208<<14 | 0x0F<<7 | 0x20,\n\t35002 - 19968: jis0212<<14 | 0x3B<<7 | 0x20,\n\t35005 - 19968: jis0212<<14 | 0x3B<<7 | 0x21,\n\t35006 - 19968: jis0212<<14 | 0x3B<<7 | 0x22,\n\t35007 - 19968: jis0208<<14 | 0x49<<7 | 0x3E,\n\t35008 - 19968: jis0212<<14 | 0x3B<<7 | 0x23,\n\t35009 - 19968: jis0208<<14 | 0x19<<7 | 0x3A,\n\t35010 - 19968: jis0208<<14 | 0x2D<<7 | 0x55,\n\t35011 - 19968: jis0208<<14 | 0x49<<7 | 0x40,\n\t35012 - 19968: jis0208<<14 | 0x49<<7 | 0x41,\n\t35013 - 19968: jis0208<<14 | 0x20<<7 | 0x54,\n\t35018 - 19968: jis0212<<14 | 0x3B<<7 | 0x24,\n\t35019 - 19968: jis0212<<14 | 0x3B<<7 | 0x25,\n\t35020 - 19968: jis0212<<14 | 0x3B<<7 | 0x26,\n\t35021 - 19968: jis0212<<14 | 0x3B<<7 | 0x27,\n\t35022 - 19968: jis0212<<14 | 0x3B<<7 | 0x28,\n\t35023 - 19968: jis0208<<14 | 0x2D<<7 | 0x01,\n\t35025 - 19968: jis0212<<14 | 0x3B<<7 | 0x29,\n\t35026 - 19968: jis0212<<14 | 0x3B<<7 | 0x2A,\n\t35027 - 19968: jis0212<<14 | 0x3B<<7 | 0x2B,\n\t35028 - 19968: jis0208<<14 | 0x49<<7 | 0x42,\n\t35029 - 19968: jis0208<<14 | 0x2C<<7 | 0x14,\n\t35032 - 19968: jis0208<<14 | 0x49<<7 | 0x43,\n\t35033 - 19968: jis0208<<14 | 0x49<<7 | 0x44,\n\t35035 - 19968: jis0212<<14 | 0x3B<<7 | 0x2C,\n\t35036 - 19968: jis0208<<14 | 0x29<<7 | 0x43,\n\t35037 - 19968: jis0208<<14 | 0x49<<7 | 0x45,\n\t35038 - 19968: jis0212<<14 | 0x3B<<7 | 0x2D,\n\t35039 - 19968: jis0208<<14 | 0x19<<7 | 0x1F,\n\t35041 - 19968: jis0208<<14 | 0x2D<<7 | 0x02,\n\t35047 - 19968: jis0212<<14 | 0x3B<<7 | 0x2E,\n\t35048 - 19968: jis0208<<14 | 0x49<<7 | 0x4A,\n\t35055 - 19968: jis0212<<14 | 0x3B<<7 | 0x2F,\n\t35056 - 19968: jis0212<<14 | 0x3B<<7 | 0x30,\n\t35057 - 19968: jis0212<<14 | 0x3B<<7 | 0x31,\n\t35058 - 19968: jis0208<<14 | 0x49<<7 | 0x4B,\n\t35059 - 19968: jis0208<<14 | 0x1D<<7 | 0x37,\n\t35060 - 19968: jis0208<<14 | 0x49<<7 | 0x49,\n\t35061 - 19968: jis0208<<14 | 0x5A<<7 | 0x45,\n\t35063 - 19968: jis0212<<14 | 0x3B<<7 | 0x33,\n\t35064 - 19968: jis0208<<14 | 0x2C<<7 | 0x46,\n\t35065 - 19968: jis0208<<14 | 0x49<<7 | 0x46,\n\t35068 - 19968: jis0208<<14 | 0x49<<7 | 0x48,\n\t35069 - 19968: jis0208<<14 | 0x1F<<7 | 0x1C,\n\t35070 - 19968: jis0208<<14 | 0x1E<<7 | 0x5D,\n\t35073 - 19968: jis0212<<14 | 0x3B<<7 | 0x34,\n\t35074 - 19968: jis0208<<14 | 0x49<<7 | 0x47,\n\t35076 - 19968: jis0208<<14 | 0x49<<7 | 0x4C,\n\t35078 - 19968: jis0212<<14 | 0x3B<<7 | 0x35,\n\t35079 - 19968: jis0208<<14 | 0x29<<7 | 0x02,\n\t35082 - 19968: jis0208<<14 | 0x49<<7 | 0x4E,\n\t35084 - 19968: jis0208<<14 | 0x49<<7 | 0x4D,\n\t35085 - 19968: jis0212<<14 | 0x3B<<7 | 0x36,\n\t35086 - 19968: jis0212<<14 | 0x3B<<7 | 0x37,\n\t35087 - 19968: jis0212<<14 | 0x3B<<7 | 0x38,\n\t35088 - 19968: jis0208<<14 | 0x12<<7 | 0x4B,\n\t35090 - 19968: jis0208<<14 | 0x2A<<7 | 0x0A,\n\t35091 - 19968: jis0208<<14 | 0x49<<7 | 0x4F,\n\t35093 - 19968: jis0212<<14 | 0x3B<<7 | 0x39,\n\t35094 - 19968: jis0212<<14 | 0x3B<<7 | 0x3A,\n\t35096 - 19968: jis0212<<14 | 0x3B<<7 | 0x3B,\n\t35097 - 19968: jis0212<<14 | 0x3B<<7 | 0x3C,\n\t35098 - 19968: jis0212<<14 | 0x3B<<7 | 0x3D,\n\t35100 - 19968: jis0208<<14 | 0x58<<7 | 0x01,\n\t35101 - 19968: jis0208<<14 | 0x49<<7 | 0x5B,\n\t35102 - 19968: jis0208<<14 | 0x49<<7 | 0x51,\n\t35104 - 19968: jis0212<<14 | 0x3B<<7 | 0x3F,\n\t35109 - 19968: jis0208<<14 | 0x49<<7 | 0x52,\n\t35110 - 19968: jis0212<<14 | 0x3B<<7 | 0x40,\n\t35111 - 19968: jis0212<<14 | 0x3B<<7 | 0x41,\n\t35112 - 19968: jis0212<<14 | 0x3B<<7 | 0x42,\n\t35114 - 19968: jis0208<<14 | 0x49<<7 | 0x53,\n\t35115 - 19968: jis0208<<14 | 0x49<<7 | 0x54,\n\t35120 - 19968: jis0212<<14 | 0x3B<<7 | 0x43,\n\t35121 - 19968: jis0212<<14 | 0x3B<<7 | 0x44,\n\t35122 - 19968: jis0212<<14 | 0x3B<<7 | 0x45,\n\t35125 - 19968: jis0212<<14 | 0x3B<<7 | 0x46,\n\t35126 - 19968: jis0208<<14 | 0x49<<7 | 0x58,\n\t35128 - 19968: jis0208<<14 | 0x49<<7 | 0x59,\n\t35129 - 19968: jis0212<<14 | 0x3B<<7 | 0x47,\n\t35130 - 19968: jis0212<<14 | 0x3B<<7 | 0x48,\n\t35131 - 19968: jis0208<<14 | 0x49<<7 | 0x57,\n\t35134 - 19968: jis0212<<14 | 0x3B<<7 | 0x49,\n\t35136 - 19968: jis0212<<14 | 0x3B<<7 | 0x4A,\n\t35137 - 19968: jis0208<<14 | 0x49<<7 | 0x55,\n\t35138 - 19968: jis0212<<14 | 0x3B<<7 | 0x4B,\n\t35139 - 19968: jis0208<<14 | 0x49<<7 | 0x50,\n\t35140 - 19968: jis0208<<14 | 0x49<<7 | 0x56,\n\t35141 - 19968: jis0212<<14 | 0x3B<<7 | 0x4C,\n\t35142 - 19968: jis0212<<14 | 0x3B<<7 | 0x4D,\n\t35145 - 19968: jis0212<<14 | 0x3B<<7 | 0x4E,\n\t35148 - 19968: jis0208<<14 | 0x49<<7 | 0x5A,\n\t35149 - 19968: jis0208<<14 | 0x4F<<7 | 0x16,\n\t35151 - 19968: jis0212<<14 | 0x3B<<7 | 0x4F,\n\t35154 - 19968: jis0212<<14 | 0x3B<<7 | 0x50,\n\t35158 - 19968: jis0208<<14 | 0x11<<7 | 0x07,\n\t35159 - 19968: jis0212<<14 | 0x3B<<7 | 0x51,\n\t35162 - 19968: jis0212<<14 | 0x3B<<7 | 0x52,\n\t35163 - 19968: jis0212<<14 | 0x3B<<7 | 0x53,\n\t35164 - 19968: jis0212<<14 | 0x3B<<7 | 0x54,\n\t35166 - 19968: jis0208<<14 | 0x49<<7 | 0x5D,\n\t35167 - 19968: jis0208<<14 | 0x15<<7 | 0x3E,\n\t35168 - 19968: jis0208<<14 | 0x49<<7 | 0x5C,\n\t35169 - 19968: jis0212<<14 | 0x3B<<7 | 0x55,\n\t35170 - 19968: jis0212<<14 | 0x3B<<7 | 0x56,\n\t35171 - 19968: jis0212<<14 | 0x3B<<7 | 0x57,\n\t35172 - 19968: jis0208<<14 | 0x4A<<7 | 0x01,\n\t35174 - 19968: jis0208<<14 | 0x4A<<7 | 0x00,\n\t35178 - 19968: jis0208<<14 | 0x4A<<7 | 0x03,\n\t35179 - 19968: jis0212<<14 | 0x3B<<7 | 0x58,\n\t35181 - 19968: jis0208<<14 | 0x4A<<7 | 0x02,\n\t35182 - 19968: jis0212<<14 | 0x3B<<7 | 0x59,\n\t35183 - 19968: jis0208<<14 | 0x4A<<7 | 0x04,\n\t35184 - 19968: jis0212<<14 | 0x3B<<7 | 0x5A,\n\t35186 - 19968: jis0208<<14 | 0x1C<<7 | 0x10,\n\t35187 - 19968: jis0212<<14 | 0x3B<<7 | 0x5B,\n\t35188 - 19968: jis0208<<14 | 0x4A<<7 | 0x05,\n\t35189 - 19968: jis0212<<14 | 0x3B<<7 | 0x5C,\n\t35191 - 19968: jis0208<<14 | 0x4A<<7 | 0x06,\n\t35194 - 19968: jis0212<<14 | 0x3B<<7 | 0x5D,\n\t35195 - 19968: jis0212<<14 | 0x3C<<7 | 0x00,\n\t35196 - 19968: jis0212<<14 | 0x3C<<7 | 0x01,\n\t35197 - 19968: jis0212<<14 | 0x3C<<7 | 0x02,\n\t35198 - 19968: jis0208<<14 | 0x4A<<7 | 0x07,\n\t35199 - 19968: jis0208<<14 | 0x1F<<7 | 0x1D,\n\t35201 - 19968: jis0208<<14 | 0x2C<<7 | 0x36,\n\t35203 - 19968: jis0208<<14 | 0x4A<<7 | 0x08,\n\t35206 - 19968: jis0208<<14 | 0x29<<7 | 0x03,\n\t35207 - 19968: jis0208<<14 | 0x26<<7 | 0x25,\n\t35208 - 19968: jis0208<<14 | 0x4A<<7 | 0x09,\n\t35209 - 19968: jis0212<<14 | 0x3C<<7 | 0x03,\n\t35210 - 19968: jis0208<<14 | 0x4A<<7 | 0x0A,\n\t35211 - 19968: jis0208<<14 | 0x17<<7 | 0x0A,\n\t35213 - 19968: jis0212<<14 | 0x3C<<7 | 0x04,\n\t35215 - 19968: jis0208<<14 | 0x14<<7 | 0x0B,\n\t35216 - 19968: jis0212<<14 | 0x3C<<7 | 0x05,\n\t35219 - 19968: jis0208<<14 | 0x4A<<7 | 0x0B,\n\t35220 - 19968: jis0212<<14 | 0x3C<<7 | 0x06,\n\t35221 - 19968: jis0212<<14 | 0x3C<<7 | 0x07,\n\t35222 - 19968: jis0208<<14 | 0x1A<<7 | 0x4A,\n\t35223 - 19968: jis0208<<14 | 0x26<<7 | 0x20,\n\t35224 - 19968: jis0208<<14 | 0x4A<<7 | 0x0C,\n\t35226 - 19968: jis0208<<14 | 0x12<<7 | 0x2F,\n\t35227 - 19968: jis0212<<14 | 0x3C<<7 | 0x08,\n\t35228 - 19968: jis0212<<14 | 0x3C<<7 | 0x09,\n\t35231 - 19968: jis0212<<14 | 0x3C<<7 | 0x0A,\n\t35232 - 19968: jis0212<<14 | 0x3C<<7 | 0x0B,\n\t35233 - 19968: jis0208<<14 | 0x4A<<7 | 0x0D,\n\t35237 - 19968: jis0212<<14 | 0x3C<<7 | 0x0C,\n\t35238 - 19968: jis0208<<14 | 0x4A<<7 | 0x0F,\n\t35239 - 19968: jis0208<<14 | 0x2C<<7 | 0x56,\n\t35241 - 19968: jis0208<<14 | 0x4A<<7 | 0x0E,\n\t35242 - 19968: jis0208<<14 | 0x1E<<7 | 0x25,\n\t35244 - 19968: jis0208<<14 | 0x4A<<7 | 0x10,\n\t35247 - 19968: jis0208<<14 | 0x4A<<7 | 0x11,\n\t35248 - 19968: jis0212<<14 | 0x3C<<7 | 0x0D,\n\t35250 - 19968: jis0208<<14 | 0x4A<<7 | 0x12,\n\t35251 - 19968: jis0208<<14 | 0x13<<7 | 0x30,\n\t35252 - 19968: jis0212<<14 | 0x3C<<7 | 0x0E,\n\t35253 - 19968: jis0212<<14 | 0x3C<<7 | 0x0F,\n\t35254 - 19968: jis0212<<14 | 0x3C<<7 | 0x10,\n\t35255 - 19968: jis0212<<14 | 0x3C<<7 | 0x11,\n\t35258 - 19968: jis0208<<14 | 0x4A<<7 | 0x13,\n\t35260 - 19968: jis0212<<14 | 0x3C<<7 | 0x12,\n\t35261 - 19968: jis0208<<14 | 0x4A<<7 | 0x14,\n\t35263 - 19968: jis0208<<14 | 0x4A<<7 | 0x15,\n\t35264 - 19968: jis0208<<14 | 0x4A<<7 | 0x16,\n\t35282 - 19968: jis0208<<14 | 0x12<<7 | 0x30,\n\t35284 - 19968: jis0212<<14 | 0x3C<<7 | 0x13,\n\t35285 - 19968: jis0212<<14 | 0x3C<<7 | 0x14,\n\t35286 - 19968: jis0212<<14 | 0x3C<<7 | 0x15,\n\t35287 - 19968: jis0212<<14 | 0x3C<<7 | 0x16,\n\t35288 - 19968: jis0212<<14 | 0x3C<<7 | 0x17,\n\t35290 - 19968: jis0208<<14 | 0x4A<<7 | 0x17,\n\t35292 - 19968: jis0208<<14 | 0x4A<<7 | 0x18,\n\t35293 - 19968: jis0208<<14 | 0x4A<<7 | 0x19,\n\t35299 - 19968: jis0208<<14 | 0x11<<7 | 0x51,\n\t35301 - 19968: jis0212<<14 | 0x3C<<7 | 0x18,\n\t35302 - 19968: jis0208<<14 | 0x1E<<7 | 0x07,\n\t35303 - 19968: jis0208<<14 | 0x4A<<7 | 0x1A,\n\t35305 - 19968: jis0212<<14 | 0x3C<<7 | 0x19,\n\t35307 - 19968: jis0212<<14 | 0x3C<<7 | 0x1A,\n\t35309 - 19968: jis0212<<14 | 0x3C<<7 | 0x1B,\n\t35313 - 19968: jis0212<<14 | 0x3C<<7 | 0x1C,\n\t35315 - 19968: jis0212<<14 | 0x3C<<7 | 0x1D,\n\t35316 - 19968: jis0208<<14 | 0x4A<<7 | 0x1B,\n\t35318 - 19968: jis0212<<14 | 0x3C<<7 | 0x1E,\n\t35320 - 19968: jis0208<<14 | 0x4A<<7 | 0x1C,\n\t35321 - 19968: jis0212<<14 | 0x3C<<7 | 0x1F,\n\t35325 - 19968: jis0212<<14 | 0x3C<<7 | 0x20,\n\t35327 - 19968: jis0212<<14 | 0x3C<<7 | 0x21,\n\t35328 - 19968: jis0208<<14 | 0x17<<7 | 0x1F,\n\t35330 - 19968: jis0208<<14 | 0x23<<7 | 0x5A,\n\t35331 - 19968: jis0208<<14 | 0x4A<<7 | 0x1D,\n\t35332 - 19968: jis0212<<14 | 0x3C<<7 | 0x22,\n\t35333 - 19968: jis0212<<14 | 0x3C<<7 | 0x23,\n\t35335 - 19968: jis0212<<14 | 0x3C<<7 | 0x24,\n\t35336 - 19968: jis0208<<14 | 0x16<<7 | 0x36,\n\t35338 - 19968: jis0208<<14 | 0x1E<<7 | 0x35,\n\t35340 - 19968: jis0208<<14 | 0x4A<<7 | 0x20,\n\t35342 - 19968: jis0208<<14 | 0x25<<7 | 0x03,\n\t35343 - 19968: jis0212<<14 | 0x3C<<7 | 0x25,\n\t35344 - 19968: jis0208<<14 | 0x4A<<7 | 0x1F,\n\t35345 - 19968: jis0212<<14 | 0x3C<<7 | 0x26,\n\t35346 - 19968: jis0208<<14 | 0x5A<<7 | 0x46,\n\t35347 - 19968: jis0208<<14 | 0x16<<7 | 0x10,\n\t35348 - 19968: jis0212<<14 | 0x3C<<7 | 0x28,\n\t35349 - 19968: jis0212<<14 | 0x3C<<7 | 0x29,\n\t35350 - 19968: jis0208<<14 | 0x4A<<7 | 0x1E,\n\t35351 - 19968: jis0208<<14 | 0x21<<7 | 0x56,\n\t35352 - 19968: jis0208<<14 | 0x14<<7 | 0x0C,\n\t35355 - 19968: jis0208<<14 | 0x4A<<7 | 0x21,\n\t35357 - 19968: jis0208<<14 | 0x4A<<7 | 0x22,\n\t35358 - 19968: jis0212<<14 | 0x3C<<7 | 0x2A,\n\t35359 - 19968: jis0208<<14 | 0x1D<<7 | 0x38,\n\t35360 - 19968: jis0212<<14 | 0x3C<<7 | 0x2B,\n\t35362 - 19968: jis0212<<14 | 0x3C<<7 | 0x2C,\n\t35363 - 19968: jis0208<<14 | 0x16<<7 | 0x4C,\n\t35364 - 19968: jis0212<<14 | 0x3C<<7 | 0x2D,\n\t35365 - 19968: jis0208<<14 | 0x4A<<7 | 0x23,\n\t35366 - 19968: jis0212<<14 | 0x3C<<7 | 0x2E,\n\t35370 - 19968: jis0208<<14 | 0x2A<<7 | 0x0B,\n\t35371 - 19968: jis0212<<14 | 0x3C<<7 | 0x2F,\n\t35372 - 19968: jis0212<<14 | 0x3C<<7 | 0x30,\n\t35373 - 19968: jis0208<<14 | 0x1F<<7 | 0x3E,\n\t35375 - 19968: jis0212<<14 | 0x3C<<7 | 0x31,\n\t35377 - 19968: jis0208<<14 | 0x14<<7 | 0x55,\n\t35379 - 19968: jis0208<<14 | 0x2B<<7 | 0x54,\n\t35380 - 19968: jis0208<<14 | 0x20<<7 | 0x29,\n\t35381 - 19968: jis0212<<14 | 0x3C<<7 | 0x32,\n\t35382 - 19968: jis0208<<14 | 0x4A<<7 | 0x24,\n\t35383 - 19968: jis0208<<14 | 0x5A<<7 | 0x47,\n\t35386 - 19968: jis0208<<14 | 0x1E<<7 | 0x26,\n\t35387 - 19968: jis0208<<14 | 0x22<<7 | 0x4F,\n\t35388 - 19968: jis0208<<14 | 0x1D<<7 | 0x39,\n\t35389 - 19968: jis0212<<14 | 0x3C<<7 | 0x34,\n\t35390 - 19968: jis0212<<14 | 0x3C<<7 | 0x35,\n\t35392 - 19968: jis0212<<14 | 0x3C<<7 | 0x36,\n\t35393 - 19968: jis0208<<14 | 0x4A<<7 | 0x25,\n\t35395 - 19968: jis0212<<14 | 0x3C<<7 | 0x37,\n\t35397 - 19968: jis0212<<14 | 0x3C<<7 | 0x38,\n\t35398 - 19968: jis0208<<14 | 0x4A<<7 | 0x28,\n\t35399 - 19968: jis0212<<14 | 0x3C<<7 | 0x39,\n\t35400 - 19968: jis0208<<14 | 0x4A<<7 | 0x29,\n\t35401 - 19968: jis0212<<14 | 0x3C<<7 | 0x3A,\n\t35405 - 19968: jis0212<<14 | 0x3C<<7 | 0x3B,\n\t35406 - 19968: jis0212<<14 | 0x3C<<7 | 0x3C,\n\t35408 - 19968: jis0208<<14 | 0x19<<7 | 0x1D,\n\t35409 - 19968: jis0208<<14 | 0x21<<7 | 0x21,\n\t35410 - 19968: jis0208<<14 | 0x4A<<7 | 0x27,\n\t35411 - 19968: jis0212<<14 | 0x3C<<7 | 0x3D,\n\t35412 - 19968: jis0208<<14 | 0x1D<<7 | 0x3A,\n\t35413 - 19968: jis0208<<14 | 0x28<<7 | 0x1D,\n\t35414 - 19968: jis0212<<14 | 0x3C<<7 | 0x3E,\n\t35415 - 19968: jis0212<<14 | 0x3C<<7 | 0x3F,\n\t35416 - 19968: jis0212<<14 | 0x3C<<7 | 0x40,\n\t35419 - 19968: jis0208<<14 | 0x4A<<7 | 0x26,\n\t35420 - 19968: jis0212<<14 | 0x3C<<7 | 0x41,\n\t35421 - 19968: jis0212<<14 | 0x3C<<7 | 0x42,\n\t35422 - 19968: jis0208<<14 | 0x1A<<7 | 0x4B,\n\t35424 - 19968: jis0208<<14 | 0x10<<7 | 0x32,\n\t35425 - 19968: jis0212<<14 | 0x3C<<7 | 0x43,\n\t35426 - 19968: jis0208<<14 | 0x4A<<7 | 0x2D,\n\t35427 - 19968: jis0208<<14 | 0x16<<7 | 0x37,\n\t35429 - 19968: jis0212<<14 | 0x3C<<7 | 0x44,\n\t35430 - 19968: jis0208<<14 | 0x1A<<7 | 0x4D,\n\t35431 - 19968: jis0212<<14 | 0x3C<<7 | 0x45,\n\t35433 - 19968: jis0208<<14 | 0x1A<<7 | 0x4C,\n\t35435 - 19968: jis0208<<14 | 0x2E<<7 | 0x2C,\n\t35436 - 19968: jis0208<<14 | 0x4A<<7 | 0x2C,\n\t35437 - 19968: jis0208<<14 | 0x4A<<7 | 0x2B,\n\t35438 - 19968: jis0208<<14 | 0x20<<7 | 0x06,\n\t35440 - 19968: jis0208<<14 | 0x14<<7 | 0x2C,\n\t35441 - 19968: jis0208<<14 | 0x2E<<7 | 0x22,\n\t35442 - 19968: jis0208<<14 | 0x12<<7 | 0x19,\n\t35443 - 19968: jis0208<<14 | 0x1D<<7 | 0x3B,\n\t35445 - 19968: jis0212<<14 | 0x3C<<7 | 0x46,\n\t35446 - 19968: jis0212<<14 | 0x3C<<7 | 0x47,\n\t35447 - 19968: jis0212<<14 | 0x3C<<7 | 0x48,\n\t35449 - 19968: jis0208<<14 | 0x5A<<7 | 0x48,\n\t35450 - 19968: jis0212<<14 | 0x3C<<7 | 0x4A,\n\t35451 - 19968: jis0212<<14 | 0x3C<<7 | 0x4B,\n\t35452 - 19968: jis0208<<14 | 0x4A<<7 | 0x2A,\n\t35454 - 19968: jis0212<<14 | 0x3C<<7 | 0x4C,\n\t35455 - 19968: jis0212<<14 | 0x3C<<7 | 0x4D,\n\t35456 - 19968: jis0212<<14 | 0x3C<<7 | 0x4E,\n\t35458 - 19968: jis0208<<14 | 0x4A<<7 | 0x2F,\n\t35459 - 19968: jis0212<<14 | 0x3C<<7 | 0x4F,\n\t35460 - 19968: jis0208<<14 | 0x4A<<7 | 0x30,\n\t35461 - 19968: jis0208<<14 | 0x4A<<7 | 0x2E,\n\t35462 - 19968: jis0212<<14 | 0x3C<<7 | 0x50,\n\t35463 - 19968: jis0208<<14 | 0x17<<7 | 0x37,\n\t35465 - 19968: jis0208<<14 | 0x2C<<7 | 0x1F,\n\t35467 - 19968: jis0212<<14 | 0x3C<<7 | 0x51,\n\t35468 - 19968: jis0208<<14 | 0x1A<<7 | 0x4E,\n\t35469 - 19968: jis0208<<14 | 0x26<<7 | 0x06,\n\t35471 - 19968: jis0212<<14 | 0x3C<<7 | 0x52,\n\t35472 - 19968: jis0212<<14 | 0x3C<<7 | 0x53,\n\t35473 - 19968: jis0208<<14 | 0x4A<<7 | 0x33,\n\t35474 - 19968: jis0212<<14 | 0x3C<<7 | 0x54,\n\t35475 - 19968: jis0208<<14 | 0x1F<<7 | 0x1F,\n\t35477 - 19968: jis0208<<14 | 0x22<<7 | 0x21,\n\t35478 - 19968: jis0212<<14 | 0x3C<<7 | 0x55,\n\t35479 - 19968: jis0212<<14 | 0x3C<<7 | 0x56,\n\t35480 - 19968: jis0208<<14 | 0x2C<<7 | 0x15,\n\t35481 - 19968: jis0212<<14 | 0x3C<<7 | 0x57,\n\t35482 - 19968: jis0208<<14 | 0x4A<<7 | 0x36,\n\t35486 - 19968: jis0208<<14 | 0x17<<7 | 0x4B,\n\t35487 - 19968: jis0212<<14 | 0x3C<<7 | 0x58,\n\t35488 - 19968: jis0208<<14 | 0x1F<<7 | 0x1E,\n\t35489 - 19968: jis0208<<14 | 0x4A<<7 | 0x32,\n\t35491 - 19968: jis0208<<14 | 0x4A<<7 | 0x37,\n\t35492 - 19968: jis0208<<14 | 0x17<<7 | 0x4C,\n\t35493 - 19968: jis0208<<14 | 0x4A<<7 | 0x34,\n\t35494 - 19968: jis0208<<14 | 0x4A<<7 | 0x35,\n\t35495 - 19968: jis0208<<14 | 0x5A<<7 | 0x49,\n\t35496 - 19968: jis0208<<14 | 0x4A<<7 | 0x31,\n\t35497 - 19968: jis0212<<14 | 0x3C<<7 | 0x5A,\n\t35500 - 19968: jis0208<<14 | 0x1F<<7 | 0x41,\n\t35501 - 19968: jis0208<<14 | 0x25<<7 | 0x28,\n\t35502 - 19968: jis0212<<14 | 0x3C<<7 | 0x5B,\n\t35503 - 19968: jis0212<<14 | 0x3C<<7 | 0x5C,\n\t35504 - 19968: jis0208<<14 | 0x22<<7 | 0x0E,\n\t35506 - 19968: jis0208<<14 | 0x11<<7 | 0x3C,\n\t35507 - 19968: jis0212<<14 | 0x3C<<7 | 0x5D,\n\t35510 - 19968: jis0212<<14 | 0x3D<<7 | 0x00,\n\t35511 - 19968: jis0212<<14 | 0x3D<<7 | 0x01,\n\t35513 - 19968: jis0208<<14 | 0x27<<7 | 0x4F,\n\t35515 - 19968: jis0212<<14 | 0x3D<<7 | 0x02,\n\t35516 - 19968: jis0208<<14 | 0x14<<7 | 0x22,\n\t35518 - 19968: jis0208<<14 | 0x5A<<7 | 0x4A,\n\t35519 - 19968: jis0208<<14 | 0x23<<7 | 0x13,\n\t35522 - 19968: jis0208<<14 | 0x4A<<7 | 0x3A,\n\t35523 - 19968: jis0212<<14 | 0x3D<<7 | 0x04,\n\t35524 - 19968: jis0208<<14 | 0x4A<<7 | 0x38,\n\t35526 - 19968: jis0212<<14 | 0x3D<<7 | 0x05,\n\t35527 - 19968: jis0208<<14 | 0x22<<7 | 0x2B,\n\t35528 - 19968: jis0212<<14 | 0x3D<<7 | 0x06,\n\t35529 - 19968: jis0212<<14 | 0x3D<<7 | 0x07,\n\t35530 - 19968: jis0212<<14 | 0x3D<<7 | 0x08,\n\t35531 - 19968: jis0208<<14 | 0x1F<<7 | 0x20,\n\t35532 - 19968: jis0208<<14 | 0x13<<7 | 0x31,\n\t35533 - 19968: jis0208<<14 | 0x4A<<7 | 0x39,\n\t35535 - 19968: jis0208<<14 | 0x1E<<7 | 0x3A,\n\t35537 - 19968: jis0212<<14 | 0x3D<<7 | 0x09,\n\t35538 - 19968: jis0208<<14 | 0x2D<<7 | 0x29,\n\t35539 - 19968: jis0212<<14 | 0x3D<<7 | 0x0A,\n\t35540 - 19968: jis0212<<14 | 0x3D<<7 | 0x0B,\n\t35541 - 19968: jis0212<<14 | 0x3D<<7 | 0x0C,\n\t35542 - 19968: jis0208<<14 | 0x2E<<7 | 0x1F,\n\t35543 - 19968: jis0212<<14 | 0x3D<<7 | 0x0D,\n\t35546 - 19968: jis0208<<14 | 0x4A<<7 | 0x3B,\n\t35547 - 19968: jis0208<<14 | 0x4A<<7 | 0x46,\n\t35548 - 19968: jis0208<<14 | 0x23<<7 | 0x14,\n\t35549 - 19968: jis0212<<14 | 0x3D<<7 | 0x0E,\n\t35550 - 19968: jis0208<<14 | 0x4A<<7 | 0x45,\n\t35551 - 19968: jis0208<<14 | 0x5A<<7 | 0x4B,\n\t35552 - 19968: jis0208<<14 | 0x4A<<7 | 0x42,\n\t35553 - 19968: jis0208<<14 | 0x4A<<7 | 0x4A,\n\t35554 - 19968: jis0208<<14 | 0x4A<<7 | 0x43,\n\t35556 - 19968: jis0208<<14 | 0x4A<<7 | 0x3F,\n\t35558 - 19968: jis0208<<14 | 0x23<<7 | 0x5B,\n\t35559 - 19968: jis0208<<14 | 0x4A<<7 | 0x3E,\n\t35563 - 19968: jis0208<<14 | 0x4A<<7 | 0x3C,\n\t35564 - 19968: jis0212<<14 | 0x3D<<7 | 0x10,\n\t35565 - 19968: jis0208<<14 | 0x2C<<7 | 0x00,\n\t35566 - 19968: jis0208<<14 | 0x1A<<7 | 0x4F,\n\t35568 - 19968: jis0212<<14 | 0x3D<<7 | 0x11,\n\t35569 - 19968: jis0208<<14 | 0x4A<<7 | 0x40,\n\t35571 - 19968: jis0208<<14 | 0x4A<<7 | 0x3D,\n\t35572 - 19968: jis0212<<14 | 0x3D<<7 | 0x12,\n\t35573 - 19968: jis0212<<14 | 0x3D<<7 | 0x13,\n\t35574 - 19968: jis0208<<14 | 0x5A<<7 | 0x4D,\n\t35575 - 19968: jis0208<<14 | 0x4A<<7 | 0x44,\n\t35576 - 19968: jis0208<<14 | 0x1C<<7 | 0x53,\n\t35578 - 19968: jis0208<<14 | 0x17<<7 | 0x20,\n\t35580 - 19968: jis0212<<14 | 0x3D<<7 | 0x15,\n\t35582 - 19968: jis0208<<14 | 0x21<<7 | 0x59,\n\t35583 - 19968: jis0212<<14 | 0x3D<<7 | 0x16,\n\t35584 - 19968: jis0208<<14 | 0x2A<<7 | 0x24,\n\t35585 - 19968: jis0208<<14 | 0x10<<7 | 0x39,\n\t35586 - 19968: jis0208<<14 | 0x0F<<7 | 0x41,\n\t35588 - 19968: jis0208<<14 | 0x25<<7 | 0x04,\n\t35589 - 19968: jis0212<<14 | 0x3D<<7 | 0x17,\n\t35590 - 19968: jis0212<<14 | 0x3D<<7 | 0x18,\n\t35591 - 19968: jis0208<<14 | 0x4A<<7 | 0x48,\n\t35594 - 19968: jis0212<<14 | 0x3D<<7 | 0x1E,\n\t35595 - 19968: jis0212<<14 | 0x3D<<7 | 0x19,\n\t35596 - 19968: jis0208<<14 | 0x4A<<7 | 0x47,\n\t35598 - 19968: jis0208<<14 | 0x25<<7 | 0x45,\n\t35600 - 19968: jis0208<<14 | 0x4A<<7 | 0x4C,\n\t35601 - 19968: jis0212<<14 | 0x3D<<7 | 0x1A,\n\t35604 - 19968: jis0208<<14 | 0x4A<<7 | 0x41,\n\t35606 - 19968: jis0208<<14 | 0x4A<<7 | 0x4B,\n\t35607 - 19968: jis0208<<14 | 0x4A<<7 | 0x4D,\n\t35609 - 19968: jis0208<<14 | 0x17<<7 | 0x0B,\n\t35610 - 19968: jis0208<<14 | 0x4A<<7 | 0x49,\n\t35611 - 19968: jis0208<<14 | 0x18<<7 | 0x35,\n\t35612 - 19968: jis0212<<14 | 0x3D<<7 | 0x1B,\n\t35613 - 19968: jis0208<<14 | 0x1B<<7 | 0x34,\n\t35614 - 19968: jis0212<<14 | 0x3D<<7 | 0x1C,\n\t35615 - 19968: jis0212<<14 | 0x3D<<7 | 0x1D,\n\t35616 - 19968: jis0208<<14 | 0x4A<<7 | 0x4E,\n\t35617 - 19968: jis0208<<14 | 0x2C<<7 | 0x37,\n\t35622 - 19968: jis0208<<14 | 0x4A<<7 | 0x51,\n\t35624 - 19968: jis0208<<14 | 0x4A<<7 | 0x54,\n\t35627 - 19968: jis0208<<14 | 0x4A<<7 | 0x52,\n\t35628 - 19968: jis0208<<14 | 0x28<<7 | 0x14,\n\t35629 - 19968: jis0212<<14 | 0x3D<<7 | 0x1F,\n\t35632 - 19968: jis0212<<14 | 0x3D<<7 | 0x20,\n\t35635 - 19968: jis0208<<14 | 0x4A<<7 | 0x4F,\n\t35639 - 19968: jis0212<<14 | 0x3D<<7 | 0x21,\n\t35641 - 19968: jis0208<<14 | 0x15<<7 | 0x3F,\n\t35644 - 19968: jis0212<<14 | 0x3D<<7 | 0x22,\n\t35646 - 19968: jis0208<<14 | 0x4A<<7 | 0x53,\n\t35649 - 19968: jis0208<<14 | 0x4A<<7 | 0x55,\n\t35650 - 19968: jis0212<<14 | 0x3D<<7 | 0x23,\n\t35651 - 19968: jis0212<<14 | 0x3D<<7 | 0x24,\n\t35652 - 19968: jis0212<<14 | 0x3D<<7 | 0x25,\n\t35653 - 19968: jis0212<<14 | 0x3D<<7 | 0x26,\n\t35654 - 19968: jis0212<<14 | 0x3D<<7 | 0x27,\n\t35656 - 19968: jis0212<<14 | 0x3D<<7 | 0x28,\n\t35657 - 19968: jis0208<<14 | 0x4A<<7 | 0x59,\n\t35660 - 19968: jis0208<<14 | 0x4A<<7 | 0x56,\n\t35661 - 19968: jis0212<<14 | 0x3D<<7 | 0x2D,\n\t35662 - 19968: jis0208<<14 | 0x4A<<7 | 0x58,\n\t35663 - 19968: jis0208<<14 | 0x4A<<7 | 0x57,\n\t35666 - 19968: jis0212<<14 | 0x3D<<7 | 0x29,\n\t35667 - 19968: jis0208<<14 | 0x5A<<7 | 0x4E,\n\t35668 - 19968: jis0212<<14 | 0x3D<<7 | 0x2B,\n\t35670 - 19968: jis0208<<14 | 0x4A<<7 | 0x5A,\n\t35672 - 19968: jis0208<<14 | 0x1B<<7 | 0x10,\n\t35673 - 19968: jis0212<<14 | 0x3D<<7 | 0x2C,\n\t35674 - 19968: jis0208<<14 | 0x4A<<7 | 0x5C,\n\t35675 - 19968: jis0208<<14 | 0x4A<<7 | 0x5B,\n\t35676 - 19968: jis0208<<14 | 0x28<<7 | 0x47,\n\t35678 - 19968: jis0212<<14 | 0x3D<<7 | 0x2E,\n\t35679 - 19968: jis0208<<14 | 0x4B<<7 | 0x00,\n\t35683 - 19968: jis0212<<14 | 0x3D<<7 | 0x2F,\n\t35686 - 19968: jis0208<<14 | 0x16<<7 | 0x38,\n\t35691 - 19968: jis0208<<14 | 0x4A<<7 | 0x5D,\n\t35692 - 19968: jis0208<<14 | 0x4B<<7 | 0x01,\n\t35693 - 19968: jis0212<<14 | 0x3D<<7 | 0x30,\n\t35695 - 19968: jis0208<<14 | 0x4B<<7 | 0x02,\n\t35696 - 19968: jis0208<<14 | 0x14<<7 | 0x23,\n\t35697 - 19968: jis0208<<14 | 0x45<<7 | 0x20,\n\t35698 - 19968: jis0208<<14 | 0x1D<<7 | 0x58,\n\t35700 - 19968: jis0208<<14 | 0x4B<<7 | 0x03,\n\t35702 - 19968: jis0212<<14 | 0x3D<<7 | 0x31,\n\t35703 - 19968: jis0208<<14 | 0x17<<7 | 0x4D,\n\t35704 - 19968: jis0212<<14 | 0x3D<<7 | 0x32,\n\t35705 - 19968: jis0212<<14 | 0x3D<<7 | 0x33,\n\t35708 - 19968: jis0212<<14 | 0x3D<<7 | 0x34,\n\t35709 - 19968: jis0208<<14 | 0x4B<<7 | 0x04,\n\t35710 - 19968: jis0212<<14 | 0x3D<<7 | 0x35,\n\t35711 - 19968: jis0208<<14 | 0x5A<<7 | 0x4F,\n\t35712 - 19968: jis0208<<14 | 0x4B<<7 | 0x05,\n\t35713 - 19968: jis0212<<14 | 0x3D<<7 | 0x36,\n\t35715 - 19968: jis0208<<14 | 0x1A<<7 | 0x1D,\n\t35716 - 19968: jis0212<<14 | 0x3D<<7 | 0x37,\n\t35717 - 19968: jis0212<<14 | 0x3D<<7 | 0x38,\n\t35722 - 19968: jis0208<<14 | 0x39<<7 | 0x2D,\n\t35723 - 19968: jis0212<<14 | 0x3D<<7 | 0x39,\n\t35724 - 19968: jis0208<<14 | 0x4B<<7 | 0x06,\n\t35725 - 19968: jis0212<<14 | 0x3D<<7 | 0x3A,\n\t35726 - 19968: jis0208<<14 | 0x4B<<7 | 0x07,\n\t35727 - 19968: jis0212<<14 | 0x3D<<7 | 0x3B,\n\t35728 - 19968: jis0208<<14 | 0x1C<<7 | 0x11,\n\t35730 - 19968: jis0208<<14 | 0x4B<<7 | 0x08,\n\t35731 - 19968: jis0208<<14 | 0x4B<<7 | 0x09,\n\t35732 - 19968: jis0212<<14 | 0x3D<<7 | 0x3C,\n\t35733 - 19968: jis0212<<14 | 0x3D<<7 | 0x3D,\n\t35734 - 19968: jis0208<<14 | 0x4B<<7 | 0x0A,\n\t35737 - 19968: jis0208<<14 | 0x4B<<7 | 0x0B,\n\t35738 - 19968: jis0208<<14 | 0x4B<<7 | 0x0C,\n\t35740 - 19968: jis0212<<14 | 0x3D<<7 | 0x3E,\n\t35742 - 19968: jis0212<<14 | 0x3D<<7 | 0x3F,\n\t35743 - 19968: jis0212<<14 | 0x3D<<7 | 0x40,\n\t35895 - 19968: jis0208<<14 | 0x22<<7 | 0x0A,\n\t35896 - 19968: jis0212<<14 | 0x3D<<7 | 0x41,\n\t35897 - 19968: jis0212<<14 | 0x3D<<7 | 0x42,\n\t35898 - 19968: jis0208<<14 | 0x4B<<7 | 0x0D,\n\t35901 - 19968: jis0212<<14 | 0x3D<<7 | 0x43,\n\t35902 - 19968: jis0212<<14 | 0x3D<<7 | 0x44,\n\t35903 - 19968: jis0208<<14 | 0x4B<<7 | 0x0F,\n\t35905 - 19968: jis0208<<14 | 0x4B<<7 | 0x0E,\n\t35909 - 19968: jis0212<<14 | 0x3D<<7 | 0x45,\n\t35910 - 19968: jis0208<<14 | 0x25<<7 | 0x05,\n\t35911 - 19968: jis0212<<14 | 0x3D<<7 | 0x46,\n\t35912 - 19968: jis0208<<14 | 0x4B<<7 | 0x10,\n\t35913 - 19968: jis0212<<14 | 0x3D<<7 | 0x47,\n\t35914 - 19968: jis0208<<14 | 0x2A<<7 | 0x0C,\n\t35915 - 19968: jis0212<<14 | 0x3D<<7 | 0x48,\n\t35916 - 19968: jis0208<<14 | 0x4B<<7 | 0x11,\n\t35918 - 19968: jis0208<<14 | 0x4B<<7 | 0x12,\n\t35919 - 19968: jis0212<<14 | 0x3D<<7 | 0x49,\n\t35920 - 19968: jis0208<<14 | 0x4B<<7 | 0x13,\n\t35921 - 19968: jis0212<<14 | 0x3D<<7 | 0x4A,\n\t35923 - 19968: jis0212<<14 | 0x3D<<7 | 0x4B,\n\t35924 - 19968: jis0212<<14 | 0x3D<<7 | 0x4C,\n\t35925 - 19968: jis0208<<14 | 0x4B<<7 | 0x14,\n\t35927 - 19968: jis0212<<14 | 0x3D<<7 | 0x4D,\n\t35928 - 19968: jis0212<<14 | 0x3D<<7 | 0x4E,\n\t35929 - 19968: jis0212<<14 | 0x3D<<7 | 0x51,\n\t35930 - 19968: jis0208<<14 | 0x25<<7 | 0x39,\n\t35931 - 19968: jis0212<<14 | 0x3D<<7 | 0x4F,\n\t35933 - 19968: jis0212<<14 | 0x3D<<7 | 0x50,\n\t35937 - 19968: jis0208<<14 | 0x1D<<7 | 0x3C,\n\t35938 - 19968: jis0208<<14 | 0x4B<<7 | 0x15,\n\t35939 - 19968: jis0212<<14 | 0x3D<<7 | 0x52,\n\t35940 - 19968: jis0212<<14 | 0x3D<<7 | 0x53,\n\t35942 - 19968: jis0212<<14 | 0x3D<<7 | 0x54,\n\t35944 - 19968: jis0212<<14 | 0x3D<<7 | 0x55,\n\t35945 - 19968: jis0212<<14 | 0x3D<<7 | 0x56,\n\t35946 - 19968: jis0208<<14 | 0x18<<7 | 0x4A,\n\t35947 - 19968: jis0208<<14 | 0x2F<<7 | 0x0D,\n\t35948 - 19968: jis0208<<14 | 0x4B<<7 | 0x16,\n\t35949 - 19968: jis0212<<14 | 0x3D<<7 | 0x57,\n\t35955 - 19968: jis0212<<14 | 0x3D<<7 | 0x58,\n\t35957 - 19968: jis0212<<14 | 0x3D<<7 | 0x59,\n\t35958 - 19968: jis0212<<14 | 0x3D<<7 | 0x5A,\n\t35960 - 19968: jis0208<<14 | 0x4B<<7 | 0x17,\n\t35961 - 19968: jis0208<<14 | 0x28<<7 | 0x1E,\n\t35962 - 19968: jis0208<<14 | 0x4B<<7 | 0x18,\n\t35963 - 19968: jis0212<<14 | 0x3D<<7 | 0x5B,\n\t35964 - 19968: jis0208<<14 | 0x4B<<7 | 0x20,\n\t35966 - 19968: jis0212<<14 | 0x3D<<7 | 0x5C,\n\t35970 - 19968: jis0208<<14 | 0x4B<<7 | 0x19,\n\t35973 - 19968: jis0208<<14 | 0x4B<<7 | 0x1B,\n\t35974 - 19968: jis0212<<14 | 0x3D<<7 | 0x5D,\n\t35975 - 19968: jis0212<<14 | 0x3E<<7 | 0x00,\n\t35977 - 19968: jis0208<<14 | 0x4B<<7 | 0x1A,\n\t35978 - 19968: jis0208<<14 | 0x4B<<7 | 0x1C,\n\t35979 - 19968: jis0212<<14 | 0x3E<<7 | 0x01,\n\t35980 - 19968: jis0208<<14 | 0x2A<<7 | 0x25,\n\t35981 - 19968: jis0208<<14 | 0x4B<<7 | 0x1D,\n\t35982 - 19968: jis0208<<14 | 0x4B<<7 | 0x1E,\n\t35984 - 19968: jis0212<<14 | 0x3E<<7 | 0x02,\n\t35986 - 19968: jis0212<<14 | 0x3E<<7 | 0x03,\n\t35987 - 19968: jis0212<<14 | 0x3E<<7 | 0x04,\n\t35988 - 19968: jis0208<<14 | 0x4B<<7 | 0x1F,\n\t35992 - 19968: jis0208<<14 | 0x4B<<7 | 0x21,\n\t35993 - 19968: jis0212<<14 | 0x3E<<7 | 0x05,\n\t35995 - 19968: jis0212<<14 | 0x3E<<7 | 0x06,\n\t35996 - 19968: jis0212<<14 | 0x3E<<7 | 0x07,\n\t35997 - 19968: jis0208<<14 | 0x12<<7 | 0x0C,\n\t35998 - 19968: jis0208<<14 | 0x23<<7 | 0x46,\n\t36000 - 19968: jis0208<<14 | 0x28<<7 | 0x48,\n\t36001 - 19968: jis0208<<14 | 0x19<<7 | 0x41,\n\t36002 - 19968: jis0208<<14 | 0x18<<7 | 0x36,\n\t36004 - 19968: jis0212<<14 | 0x3E<<7 | 0x08,\n\t36007 - 19968: jis0208<<14 | 0x28<<7 | 0x2E,\n\t36008 - 19968: jis0208<<14 | 0x11<<7 | 0x3E,\n\t36009 - 19968: jis0208<<14 | 0x27<<7 | 0x2D,\n\t36010 - 19968: jis0208<<14 | 0x4B<<7 | 0x24,\n\t36011 - 19968: jis0208<<14 | 0x13<<7 | 0x32,\n\t36012 - 19968: jis0208<<14 | 0x1F<<7 | 0x34,\n\t36013 - 19968: jis0208<<14 | 0x4B<<7 | 0x23,\n\t36014 - 19968: jis0208<<14 | 0x4B<<7 | 0x28,\n\t36015 - 19968: jis0208<<14 | 0x22<<7 | 0x58,\n\t36016 - 19968: jis0208<<14 | 0x2B<<7 | 0x42,\n\t36018 - 19968: jis0208<<14 | 0x4B<<7 | 0x26,\n\t36019 - 19968: jis0208<<14 | 0x4B<<7 | 0x27,\n\t36020 - 19968: jis0208<<14 | 0x14<<7 | 0x0D,\n\t36022 - 19968: jis0208<<14 | 0x4B<<7 | 0x29,\n\t36023 - 19968: jis0208<<14 | 0x26<<7 | 0x42,\n\t36024 - 19968: jis0208<<14 | 0x21<<7 | 0x3E,\n\t36025 - 19968: jis0212<<14 | 0x3E<<7 | 0x09,\n\t36026 - 19968: jis0212<<14 | 0x3E<<7 | 0x0A,\n\t36027 - 19968: jis0208<<14 | 0x27<<7 | 0x50,\n\t36028 - 19968: jis0208<<14 | 0x24<<7 | 0x1C,\n\t36029 - 19968: jis0208<<14 | 0x4B<<7 | 0x25,\n\t36031 - 19968: jis0208<<14 | 0x2A<<7 | 0x26,\n\t36032 - 19968: jis0208<<14 | 0x11<<7 | 0x4B,\n\t36033 - 19968: jis0208<<14 | 0x4B<<7 | 0x2B,\n\t36034 - 19968: jis0208<<14 | 0x2E<<7 | 0x07,\n\t36035 - 19968: jis0208<<14 | 0x23<<7 | 0x21,\n\t36036 - 19968: jis0208<<14 | 0x2E<<7 | 0x24,\n\t36037 - 19968: jis0212<<14 | 0x3E<<7 | 0x0B,\n\t36038 - 19968: jis0212<<14 | 0x3E<<7 | 0x0C,\n\t36039 - 19968: jis0208<<14 | 0x1A<<7 | 0x50,\n\t36040 - 19968: jis0208<<14 | 0x4B<<7 | 0x2A,\n\t36041 - 19968: jis0212<<14 | 0x3E<<7 | 0x0D,\n\t36042 - 19968: jis0208<<14 | 0x21<<7 | 0x10,\n\t36043 - 19968: jis0212<<14 | 0x3E<<7 | 0x0E,\n\t36045 - 19968: jis0208<<14 | 0x4B<<7 | 0x3B,\n\t36046 - 19968: jis0208<<14 | 0x20<<7 | 0x07,\n\t36047 - 19968: jis0212<<14 | 0x3E<<7 | 0x0F,\n\t36049 - 19968: jis0208<<14 | 0x25<<7 | 0x57,\n\t36051 - 19968: jis0208<<14 | 0x28<<7 | 0x2F,\n\t36053 - 19968: jis0212<<14 | 0x3E<<7 | 0x11,\n\t36054 - 19968: jis0212<<14 | 0x3E<<7 | 0x10,\n\t36057 - 19968: jis0212<<14 | 0x3E<<7 | 0x12,\n\t36058 - 19968: jis0208<<14 | 0x4B<<7 | 0x2E,\n\t36059 - 19968: jis0208<<14 | 0x1A<<7 | 0x1E,\n\t36060 - 19968: jis0208<<14 | 0x1A<<7 | 0x51,\n\t36061 - 19968: jis0212<<14 | 0x3E<<7 | 0x13,\n\t36062 - 19968: jis0208<<14 | 0x1D<<7 | 0x3D,\n\t36064 - 19968: jis0208<<14 | 0x26<<7 | 0x44,\n\t36065 - 19968: jis0212<<14 | 0x3E<<7 | 0x14,\n\t36066 - 19968: jis0208<<14 | 0x17<<7 | 0x0C,\n\t36067 - 19968: jis0208<<14 | 0x4B<<7 | 0x2D,\n\t36068 - 19968: jis0208<<14 | 0x4B<<7 | 0x2C,\n\t36070 - 19968: jis0208<<14 | 0x28<<7 | 0x49,\n\t36072 - 19968: jis0212<<14 | 0x3E<<7 | 0x15,\n\t36074 - 19968: jis0208<<14 | 0x1B<<7 | 0x20,\n\t36076 - 19968: jis0212<<14 | 0x3E<<7 | 0x16,\n\t36077 - 19968: jis0208<<14 | 0x24<<7 | 0x31,\n\t36079 - 19968: jis0212<<14 | 0x3E<<7 | 0x17,\n\t36080 - 19968: jis0208<<14 | 0x5A<<7 | 0x50,\n\t36082 - 19968: jis0212<<14 | 0x3E<<7 | 0x19,\n\t36084 - 19968: jis0208<<14 | 0x5A<<7 | 0x51,\n\t36085 - 19968: jis0212<<14 | 0x3E<<7 | 0x1A,\n\t36087 - 19968: jis0212<<14 | 0x3E<<7 | 0x1B,\n\t36088 - 19968: jis0212<<14 | 0x3E<<7 | 0x1C,\n\t36090 - 19968: jis0208<<14 | 0x4B<<7 | 0x30,\n\t36091 - 19968: jis0208<<14 | 0x4B<<7 | 0x31,\n\t36092 - 19968: jis0208<<14 | 0x18<<7 | 0x37,\n\t36093 - 19968: jis0208<<14 | 0x4B<<7 | 0x2F,\n\t36094 - 19968: jis0212<<14 | 0x3E<<7 | 0x1D,\n\t36095 - 19968: jis0212<<14 | 0x3E<<7 | 0x1E,\n\t36097 - 19968: jis0212<<14 | 0x3E<<7 | 0x1F,\n\t36099 - 19968: jis0212<<14 | 0x3E<<7 | 0x20,\n\t36100 - 19968: jis0208<<14 | 0x4B<<7 | 0x32,\n\t36101 - 19968: jis0208<<14 | 0x4B<<7 | 0x33,\n\t36103 - 19968: jis0208<<14 | 0x4B<<7 | 0x35,\n\t36104 - 19968: jis0208<<14 | 0x21<<7 | 0x02,\n\t36105 - 19968: jis0212<<14 | 0x3E<<7 | 0x21,\n\t36106 - 19968: jis0208<<14 | 0x4B<<7 | 0x34,\n\t36107 - 19968: jis0208<<14 | 0x13<<7 | 0x45,\n\t36109 - 19968: jis0208<<14 | 0x4B<<7 | 0x37,\n\t36111 - 19968: jis0208<<14 | 0x4B<<7 | 0x36,\n\t36112 - 19968: jis0208<<14 | 0x4B<<7 | 0x38,\n\t36114 - 19968: jis0208<<14 | 0x5A<<7 | 0x52,\n\t36115 - 19968: jis0208<<14 | 0x4B<<7 | 0x3A,\n\t36116 - 19968: jis0208<<14 | 0x4B<<7 | 0x3C,\n\t36118 - 19968: jis0208<<14 | 0x4B<<7 | 0x3D,\n\t36119 - 19968: jis0212<<14 | 0x3E<<7 | 0x23,\n\t36123 - 19968: jis0212<<14 | 0x3E<<7 | 0x24,\n\t36196 - 19968: jis0208<<14 | 0x1F<<7 | 0x35,\n\t36197 - 19968: jis0212<<14 | 0x3E<<7 | 0x25,\n\t36198 - 19968: jis0208<<14 | 0x1B<<7 | 0x2E,\n\t36199 - 19968: jis0208<<14 | 0x4B<<7 | 0x3E,\n\t36201 - 19968: jis0212<<14 | 0x3E<<7 | 0x26,\n\t36203 - 19968: jis0208<<14 | 0x12<<7 | 0x31,\n\t36204 - 19968: jis0212<<14 | 0x3E<<7 | 0x27,\n\t36205 - 19968: jis0208<<14 | 0x4B<<7 | 0x3F,\n\t36206 - 19968: jis0212<<14 | 0x3E<<7 | 0x28,\n\t36208 - 19968: jis0208<<14 | 0x20<<7 | 0x55,\n\t36209 - 19968: jis0208<<14 | 0x4B<<7 | 0x40,\n\t36211 - 19968: jis0208<<14 | 0x4B<<7 | 0x41,\n\t36212 - 19968: jis0208<<14 | 0x28<<7 | 0x4A,\n\t36214 - 19968: jis0208<<14 | 0x5A<<7 | 0x53,\n\t36215 - 19968: jis0208<<14 | 0x14<<7 | 0x0E,\n\t36223 - 19968: jis0212<<14 | 0x3E<<7 | 0x29,\n\t36225 - 19968: jis0208<<14 | 0x4B<<7 | 0x42,\n\t36226 - 19968: jis0212<<14 | 0x3E<<7 | 0x2A,\n\t36228 - 19968: jis0212<<14 | 0x3E<<7 | 0x2B,\n\t36229 - 19968: jis0208<<14 | 0x23<<7 | 0x15,\n\t36232 - 19968: jis0212<<14 | 0x3E<<7 | 0x2C,\n\t36234 - 19968: jis0208<<14 | 0x10<<7 | 0x3A,\n\t36237 - 19968: jis0212<<14 | 0x3E<<7 | 0x2D,\n\t36240 - 19968: jis0212<<14 | 0x3E<<7 | 0x2E,\n\t36241 - 19968: jis0212<<14 | 0x3E<<7 | 0x2F,\n\t36245 - 19968: jis0212<<14 | 0x3E<<7 | 0x30,\n\t36249 - 19968: jis0208<<14 | 0x4B<<7 | 0x43,\n\t36254 - 19968: jis0212<<14 | 0x3E<<7 | 0x31,\n\t36255 - 19968: jis0212<<14 | 0x3E<<7 | 0x32,\n\t36256 - 19968: jis0212<<14 | 0x3E<<7 | 0x33,\n\t36259 - 19968: jis0208<<14 | 0x1B<<7 | 0x50,\n\t36262 - 19968: jis0212<<14 | 0x3E<<7 | 0x34,\n\t36264 - 19968: jis0208<<14 | 0x1E<<7 | 0x55,\n\t36267 - 19968: jis0212<<14 | 0x3E<<7 | 0x35,\n\t36268 - 19968: jis0212<<14 | 0x3E<<7 | 0x36,\n\t36271 - 19968: jis0212<<14 | 0x3E<<7 | 0x37,\n\t36274 - 19968: jis0212<<14 | 0x3E<<7 | 0x38,\n\t36275 - 19968: jis0208<<14 | 0x21<<7 | 0x0C,\n\t36277 - 19968: jis0212<<14 | 0x3E<<7 | 0x39,\n\t36279 - 19968: jis0212<<14 | 0x3E<<7 | 0x3A,\n\t36281 - 19968: jis0212<<14 | 0x3E<<7 | 0x3B,\n\t36282 - 19968: jis0208<<14 | 0x4B<<7 | 0x46,\n\t36283 - 19968: jis0212<<14 | 0x3E<<7 | 0x3C,\n\t36284 - 19968: jis0212<<14 | 0x3E<<7 | 0x4E,\n\t36286 - 19968: jis0208<<14 | 0x4B<<7 | 0x45,\n\t36288 - 19968: jis0212<<14 | 0x3E<<7 | 0x3D,\n\t36290 - 19968: jis0208<<14 | 0x4B<<7 | 0x44,\n\t36293 - 19968: jis0212<<14 | 0x3E<<7 | 0x3E,\n\t36294 - 19968: jis0212<<14 | 0x3E<<7 | 0x3F,\n\t36295 - 19968: jis0212<<14 | 0x3E<<7 | 0x40,\n\t36296 - 19968: jis0212<<14 | 0x3E<<7 | 0x41,\n\t36298 - 19968: jis0212<<14 | 0x3E<<7 | 0x42,\n\t36299 - 19968: jis0208<<14 | 0x4B<<7 | 0x4C,\n\t36300 - 19968: jis0208<<14 | 0x4B<<7 | 0x4A,\n\t36302 - 19968: jis0212<<14 | 0x3E<<7 | 0x43,\n\t36303 - 19968: jis0208<<14 | 0x4B<<7 | 0x47,\n\t36305 - 19968: jis0212<<14 | 0x3E<<7 | 0x44,\n\t36308 - 19968: jis0212<<14 | 0x3E<<7 | 0x45,\n\t36309 - 19968: jis0212<<14 | 0x3E<<7 | 0x46,\n\t36310 - 19968: jis0208<<14 | 0x4B<<7 | 0x49,\n\t36311 - 19968: jis0212<<14 | 0x3E<<7 | 0x47,\n\t36313 - 19968: jis0212<<14 | 0x3E<<7 | 0x48,\n\t36314 - 19968: jis0208<<14 | 0x4B<<7 | 0x48,\n\t36315 - 19968: jis0208<<14 | 0x4B<<7 | 0x4B,\n\t36317 - 19968: jis0208<<14 | 0x14<<7 | 0x56,\n\t36319 - 19968: jis0208<<14 | 0x4B<<7 | 0x4F,\n\t36321 - 19968: jis0208<<14 | 0x1F<<7 | 0x36,\n\t36323 - 19968: jis0208<<14 | 0x4B<<7 | 0x50,\n\t36324 - 19968: jis0212<<14 | 0x3E<<7 | 0x49,\n\t36325 - 19968: jis0212<<14 | 0x3E<<7 | 0x4A,\n\t36327 - 19968: jis0212<<14 | 0x3E<<7 | 0x4B,\n\t36328 - 19968: jis0208<<14 | 0x17<<7 | 0x38,\n\t36330 - 19968: jis0208<<14 | 0x4B<<7 | 0x4D,\n\t36331 - 19968: jis0208<<14 | 0x4B<<7 | 0x4E,\n\t36332 - 19968: jis0212<<14 | 0x3E<<7 | 0x4C,\n\t36335 - 19968: jis0208<<14 | 0x2E<<7 | 0x08,\n\t36336 - 19968: jis0212<<14 | 0x3E<<7 | 0x4D,\n\t36337 - 19968: jis0212<<14 | 0x3E<<7 | 0x4F,\n\t36338 - 19968: jis0212<<14 | 0x3E<<7 | 0x50,\n\t36339 - 19968: jis0208<<14 | 0x23<<7 | 0x16,\n\t36340 - 19968: jis0212<<14 | 0x3E<<7 | 0x51,\n\t36341 - 19968: jis0208<<14 | 0x20<<7 | 0x08,\n\t36348 - 19968: jis0208<<14 | 0x4B<<7 | 0x51,\n\t36349 - 19968: jis0212<<14 | 0x3E<<7 | 0x52,\n\t36351 - 19968: jis0208<<14 | 0x4B<<7 | 0x54,\n\t36353 - 19968: jis0212<<14 | 0x3E<<7 | 0x53,\n\t36356 - 19968: jis0212<<14 | 0x3E<<7 | 0x54,\n\t36357 - 19968: jis0212<<14 | 0x3E<<7 | 0x55,\n\t36358 - 19968: jis0212<<14 | 0x3E<<7 | 0x56,\n\t36360 - 19968: jis0208<<14 | 0x4B<<7 | 0x52,\n\t36361 - 19968: jis0208<<14 | 0x4B<<7 | 0x53,\n\t36362 - 19968: jis0208<<14 | 0x2C<<7 | 0x38,\n\t36363 - 19968: jis0212<<14 | 0x3E<<7 | 0x57,\n\t36367 - 19968: jis0208<<14 | 0x25<<7 | 0x06,\n\t36368 - 19968: jis0208<<14 | 0x4B<<7 | 0x57,\n\t36369 - 19968: jis0212<<14 | 0x3E<<7 | 0x58,\n\t36372 - 19968: jis0212<<14 | 0x3E<<7 | 0x59,\n\t36374 - 19968: jis0212<<14 | 0x3E<<7 | 0x5A,\n\t36381 - 19968: jis0208<<14 | 0x4B<<7 | 0x55,\n\t36382 - 19968: jis0208<<14 | 0x4B<<7 | 0x56,\n\t36383 - 19968: jis0208<<14 | 0x4B<<7 | 0x58,\n\t36384 - 19968: jis0212<<14 | 0x3E<<7 | 0x5B,\n\t36385 - 19968: jis0212<<14 | 0x3E<<7 | 0x5C,\n\t36386 - 19968: jis0212<<14 | 0x3E<<7 | 0x5D,\n\t36387 - 19968: jis0212<<14 | 0x3F<<7 | 0x00,\n\t36390 - 19968: jis0212<<14 | 0x3F<<7 | 0x01,\n\t36391 - 19968: jis0212<<14 | 0x3F<<7 | 0x02,\n\t36394 - 19968: jis0208<<14 | 0x4C<<7 | 0x08,\n\t36400 - 19968: jis0208<<14 | 0x4B<<7 | 0x5B,\n\t36401 - 19968: jis0212<<14 | 0x3F<<7 | 0x03,\n\t36403 - 19968: jis0212<<14 | 0x3F<<7 | 0x04,\n\t36404 - 19968: jis0208<<14 | 0x4B<<7 | 0x5C,\n\t36405 - 19968: jis0208<<14 | 0x4B<<7 | 0x5A,\n\t36406 - 19968: jis0212<<14 | 0x3F<<7 | 0x05,\n\t36407 - 19968: jis0212<<14 | 0x3F<<7 | 0x06,\n\t36408 - 19968: jis0212<<14 | 0x3F<<7 | 0x07,\n\t36409 - 19968: jis0212<<14 | 0x3F<<7 | 0x08,\n\t36413 - 19968: jis0212<<14 | 0x3F<<7 | 0x09,\n\t36416 - 19968: jis0212<<14 | 0x3F<<7 | 0x0A,\n\t36417 - 19968: jis0212<<14 | 0x3F<<7 | 0x0B,\n\t36418 - 19968: jis0208<<14 | 0x4B<<7 | 0x59,\n\t36420 - 19968: jis0208<<14 | 0x23<<7 | 0x5C,\n\t36423 - 19968: jis0208<<14 | 0x4C<<7 | 0x00,\n\t36424 - 19968: jis0208<<14 | 0x4C<<7 | 0x04,\n\t36425 - 19968: jis0208<<14 | 0x4C<<7 | 0x01,\n\t36426 - 19968: jis0208<<14 | 0x4B<<7 | 0x5D,\n\t36427 - 19968: jis0212<<14 | 0x3F<<7 | 0x0C,\n\t36428 - 19968: jis0208<<14 | 0x4C<<7 | 0x02,\n\t36429 - 19968: jis0212<<14 | 0x3F<<7 | 0x0D,\n\t36430 - 19968: jis0212<<14 | 0x3F<<7 | 0x0E,\n\t36431 - 19968: jis0212<<14 | 0x3F<<7 | 0x0F,\n\t36432 - 19968: jis0208<<14 | 0x4C<<7 | 0x03,\n\t36436 - 19968: jis0212<<14 | 0x3F<<7 | 0x10,\n\t36437 - 19968: jis0208<<14 | 0x4C<<7 | 0x0A,\n\t36441 - 19968: jis0208<<14 | 0x4C<<7 | 0x05,\n\t36443 - 19968: jis0212<<14 | 0x3F<<7 | 0x11,\n\t36444 - 19968: jis0212<<14 | 0x3F<<7 | 0x12,\n\t36445 - 19968: jis0212<<14 | 0x3F<<7 | 0x13,\n\t36446 - 19968: jis0212<<14 | 0x3F<<7 | 0x14,\n\t36447 - 19968: jis0208<<14 | 0x1F<<7 | 0x37,\n\t36448 - 19968: jis0208<<14 | 0x4C<<7 | 0x07,\n\t36449 - 19968: jis0212<<14 | 0x3F<<7 | 0x15,\n\t36450 - 19968: jis0212<<14 | 0x3F<<7 | 0x16,\n\t36451 - 19968: jis0208<<14 | 0x4C<<7 | 0x09,\n\t36452 - 19968: jis0208<<14 | 0x4C<<7 | 0x06,\n\t36457 - 19968: jis0212<<14 | 0x3F<<7 | 0x17,\n\t36460 - 19968: jis0212<<14 | 0x3F<<7 | 0x18,\n\t36461 - 19968: jis0212<<14 | 0x3F<<7 | 0x19,\n\t36463 - 19968: jis0212<<14 | 0x3F<<7 | 0x1A,\n\t36464 - 19968: jis0212<<14 | 0x3F<<7 | 0x1B,\n\t36465 - 19968: jis0212<<14 | 0x3F<<7 | 0x1C,\n\t36466 - 19968: jis0208<<14 | 0x4C<<7 | 0x0C,\n\t36468 - 19968: jis0208<<14 | 0x1C<<7 | 0x12,\n\t36470 - 19968: jis0208<<14 | 0x4C<<7 | 0x0B,\n\t36473 - 19968: jis0212<<14 | 0x3F<<7 | 0x1D,\n\t36474 - 19968: jis0212<<14 | 0x3F<<7 | 0x1E,\n\t36475 - 19968: jis0212<<14 | 0x3F<<7 | 0x1F,\n\t36476 - 19968: jis0208<<14 | 0x4C<<7 | 0x0D,\n\t36481 - 19968: jis0208<<14 | 0x4C<<7 | 0x0E,\n\t36482 - 19968: jis0212<<14 | 0x3F<<7 | 0x20,\n\t36483 - 19968: jis0212<<14 | 0x3F<<7 | 0x21,\n\t36484 - 19968: jis0208<<14 | 0x4C<<7 | 0x11,\n\t36485 - 19968: jis0208<<14 | 0x4C<<7 | 0x10,\n\t36487 - 19968: jis0208<<14 | 0x4C<<7 | 0x0F,\n\t36489 - 19968: jis0212<<14 | 0x3F<<7 | 0x22,\n\t36490 - 19968: jis0208<<14 | 0x4C<<7 | 0x13,\n\t36491 - 19968: jis0208<<14 | 0x4C<<7 | 0x12,\n\t36493 - 19968: jis0208<<14 | 0x2B<<7 | 0x55,\n\t36496 - 19968: jis0212<<14 | 0x3F<<7 | 0x23,\n\t36497 - 19968: jis0208<<14 | 0x4C<<7 | 0x15,\n\t36498 - 19968: jis0212<<14 | 0x3F<<7 | 0x24,\n\t36499 - 19968: jis0208<<14 | 0x4C<<7 | 0x14,\n\t36500 - 19968: jis0208<<14 | 0x4C<<7 | 0x16,\n\t36501 - 19968: jis0212<<14 | 0x3F<<7 | 0x25,\n\t36505 - 19968: jis0208<<14 | 0x4C<<7 | 0x17,\n\t36506 - 19968: jis0212<<14 | 0x3F<<7 | 0x26,\n\t36507 - 19968: jis0212<<14 | 0x3F<<7 | 0x27,\n\t36509 - 19968: jis0212<<14 | 0x3F<<7 | 0x28,\n\t36510 - 19968: jis0212<<14 | 0x3F<<7 | 0x29,\n\t36513 - 19968: jis0208<<14 | 0x4C<<7 | 0x19,\n\t36514 - 19968: jis0212<<14 | 0x3F<<7 | 0x2A,\n\t36519 - 19968: jis0212<<14 | 0x3F<<7 | 0x2B,\n\t36521 - 19968: jis0212<<14 | 0x3F<<7 | 0x2C,\n\t36522 - 19968: jis0208<<14 | 0x4C<<7 | 0x18,\n\t36523 - 19968: jis0208<<14 | 0x1E<<7 | 0x27,\n\t36524 - 19968: jis0208<<14 | 0x4C<<7 | 0x1A,\n\t36525 - 19968: jis0212<<14 | 0x3F<<7 | 0x2D,\n\t36526 - 19968: jis0212<<14 | 0x3F<<7 | 0x2E,\n\t36527 - 19968: jis0208<<14 | 0x15<<7 | 0x4C,\n\t36528 - 19968: jis0208<<14 | 0x4C<<7 | 0x1B,\n\t36529 - 19968: jis0208<<14 | 0x4C<<7 | 0x1D,\n\t36531 - 19968: jis0212<<14 | 0x3F<<7 | 0x2F,\n\t36533 - 19968: jis0212<<14 | 0x3F<<7 | 0x30,\n\t36538 - 19968: jis0212<<14 | 0x3F<<7 | 0x31,\n\t36539 - 19968: jis0212<<14 | 0x3F<<7 | 0x32,\n\t36542 - 19968: jis0208<<14 | 0x4C<<7 | 0x1E,\n\t36544 - 19968: jis0212<<14 | 0x3F<<7 | 0x33,\n\t36545 - 19968: jis0212<<14 | 0x3F<<7 | 0x34,\n\t36547 - 19968: jis0212<<14 | 0x3F<<7 | 0x35,\n\t36548 - 19968: jis0212<<14 | 0x3F<<7 | 0x36,\n\t36549 - 19968: jis0208<<14 | 0x4C<<7 | 0x1F,\n\t36550 - 19968: jis0208<<14 | 0x4C<<7 | 0x1C,\n\t36551 - 19968: jis0212<<14 | 0x3F<<7 | 0x37,\n\t36552 - 19968: jis0208<<14 | 0x4C<<7 | 0x20,\n\t36554 - 19968: jis0208<<14 | 0x1B<<7 | 0x35,\n\t36555 - 19968: jis0208<<14 | 0x4C<<7 | 0x21,\n\t36556 - 19968: jis0208<<14 | 0x14<<7 | 0x0F,\n\t36557 - 19968: jis0208<<14 | 0x16<<7 | 0x12,\n\t36559 - 19968: jis0208<<14 | 0x5A<<7 | 0x55,\n\t36561 - 19968: jis0212<<14 | 0x3F<<7 | 0x39,\n\t36562 - 19968: jis0208<<14 | 0x17<<7 | 0x0D,\n\t36564 - 19968: jis0212<<14 | 0x3F<<7 | 0x3A,\n\t36571 - 19968: jis0208<<14 | 0x4C<<7 | 0x22,\n\t36572 - 19968: jis0212<<14 | 0x3F<<7 | 0x3B,\n\t36575 - 19968: jis0208<<14 | 0x25<<7 | 0x4F,\n\t36578 - 19968: jis0208<<14 | 0x24<<7 | 0x1D,\n\t36579 - 19968: jis0208<<14 | 0x4C<<7 | 0x23,\n\t36584 - 19968: jis0212<<14 | 0x3F<<7 | 0x3C,\n\t36587 - 19968: jis0208<<14 | 0x4C<<7 | 0x26,\n\t36589 - 19968: jis0212<<14 | 0x3F<<7 | 0x43,\n\t36590 - 19968: jis0212<<14 | 0x3F<<7 | 0x3D,\n\t36592 - 19968: jis0212<<14 | 0x3F<<7 | 0x3E,\n\t36593 - 19968: jis0212<<14 | 0x3F<<7 | 0x3F,\n\t36599 - 19968: jis0212<<14 | 0x3F<<7 | 0x40,\n\t36600 - 19968: jis0208<<14 | 0x1B<<7 | 0x13,\n\t36601 - 19968: jis0212<<14 | 0x3F<<7 | 0x41,\n\t36602 - 19968: jis0212<<14 | 0x3F<<7 | 0x42,\n\t36603 - 19968: jis0208<<14 | 0x4C<<7 | 0x25,\n\t36604 - 19968: jis0208<<14 | 0x4C<<7 | 0x24,\n\t36605 - 19968: jis0208<<14 | 0x16<<7 | 0x39,\n\t36606 - 19968: jis0208<<14 | 0x4C<<7 | 0x27,\n\t36608 - 19968: jis0212<<14 | 0x3F<<7 | 0x44,\n\t36610 - 19968: jis0212<<14 | 0x3F<<7 | 0x45,\n\t36611 - 19968: jis0208<<14 | 0x12<<7 | 0x32,\n\t36613 - 19968: jis0208<<14 | 0x4C<<7 | 0x29,\n\t36615 - 19968: jis0212<<14 | 0x3F<<7 | 0x46,\n\t36616 - 19968: jis0212<<14 | 0x3F<<7 | 0x47,\n\t36617 - 19968: jis0208<<14 | 0x19<<7 | 0x3B,\n\t36618 - 19968: jis0208<<14 | 0x4C<<7 | 0x28,\n\t36620 - 19968: jis0208<<14 | 0x4C<<7 | 0x31,\n\t36623 - 19968: jis0212<<14 | 0x3F<<7 | 0x48,\n\t36624 - 19968: jis0212<<14 | 0x3F<<7 | 0x49,\n\t36626 - 19968: jis0208<<14 | 0x4C<<7 | 0x2B,\n\t36627 - 19968: jis0208<<14 | 0x4C<<7 | 0x2D,\n\t36628 - 19968: jis0208<<14 | 0x29<<7 | 0x44,\n\t36629 - 19968: jis0208<<14 | 0x4C<<7 | 0x2A,\n\t36630 - 19968: jis0212<<14 | 0x3F<<7 | 0x4A,\n\t36631 - 19968: jis0212<<14 | 0x3F<<7 | 0x4B,\n\t36632 - 19968: jis0212<<14 | 0x3F<<7 | 0x4C,\n\t36633 - 19968: jis0208<<14 | 0x4C<<7 | 0x2C,\n\t36635 - 19968: jis0208<<14 | 0x4C<<7 | 0x30,\n\t36636 - 19968: jis0208<<14 | 0x4C<<7 | 0x2E,\n\t36637 - 19968: jis0208<<14 | 0x14<<7 | 0x10,\n\t36638 - 19968: jis0212<<14 | 0x3F<<7 | 0x4D,\n\t36639 - 19968: jis0208<<14 | 0x4C<<7 | 0x2F,\n\t36640 - 19968: jis0212<<14 | 0x3F<<7 | 0x4E,\n\t36641 - 19968: jis0212<<14 | 0x3F<<7 | 0x4F,\n\t36643 - 19968: jis0212<<14 | 0x3F<<7 | 0x50,\n\t36645 - 19968: jis0212<<14 | 0x3F<<7 | 0x51,\n\t36646 - 19968: jis0208<<14 | 0x4C<<7 | 0x32,\n\t36647 - 19968: jis0212<<14 | 0x3F<<7 | 0x52,\n\t36648 - 19968: jis0212<<14 | 0x3F<<7 | 0x53,\n\t36649 - 19968: jis0208<<14 | 0x26<<7 | 0x39,\n\t36650 - 19968: jis0208<<14 | 0x2D<<7 | 0x37,\n\t36652 - 19968: jis0212<<14 | 0x3F<<7 | 0x54,\n\t36653 - 19968: jis0212<<14 | 0x3F<<7 | 0x55,\n\t36654 - 19968: jis0212<<14 | 0x3F<<7 | 0x56,\n\t36655 - 19968: jis0208<<14 | 0x1C<<7 | 0x13,\n\t36659 - 19968: jis0208<<14 | 0x4C<<7 | 0x33,\n\t36660 - 19968: jis0212<<14 | 0x3F<<7 | 0x57,\n\t36661 - 19968: jis0212<<14 | 0x3F<<7 | 0x58,\n\t36662 - 19968: jis0212<<14 | 0x3F<<7 | 0x59,\n\t36663 - 19968: jis0212<<14 | 0x3F<<7 | 0x5A,\n\t36664 - 19968: jis0208<<14 | 0x2C<<7 | 0x01,\n\t36665 - 19968: jis0208<<14 | 0x4C<<7 | 0x35,\n\t36666 - 19968: jis0212<<14 | 0x3F<<7 | 0x5B,\n\t36667 - 19968: jis0208<<14 | 0x4C<<7 | 0x34,\n\t36670 - 19968: jis0208<<14 | 0x4C<<7 | 0x38,\n\t36671 - 19968: jis0208<<14 | 0x2C<<7 | 0x20,\n\t36672 - 19968: jis0212<<14 | 0x3F<<7 | 0x5C,\n\t36673 - 19968: jis0212<<14 | 0x3F<<7 | 0x5D,\n\t36674 - 19968: jis0208<<14 | 0x4C<<7 | 0x37,\n\t36675 - 19968: jis0212<<14 | 0x40<<7 | 0x00,\n\t36676 - 19968: jis0208<<14 | 0x12<<7 | 0x4C,\n\t36677 - 19968: jis0208<<14 | 0x4C<<7 | 0x36,\n\t36678 - 19968: jis0208<<14 | 0x4C<<7 | 0x3B,\n\t36679 - 19968: jis0212<<14 | 0x40<<7 | 0x01,\n\t36681 - 19968: jis0208<<14 | 0x4C<<7 | 0x3A,\n\t36684 - 19968: jis0208<<14 | 0x4C<<7 | 0x39,\n\t36685 - 19968: jis0208<<14 | 0x24<<7 | 0x11,\n\t36686 - 19968: jis0208<<14 | 0x4C<<7 | 0x3C,\n\t36687 - 19968: jis0212<<14 | 0x40<<7 | 0x02,\n\t36689 - 19968: jis0212<<14 | 0x40<<7 | 0x03,\n\t36690 - 19968: jis0212<<14 | 0x40<<7 | 0x04,\n\t36691 - 19968: jis0212<<14 | 0x40<<7 | 0x05,\n\t36692 - 19968: jis0212<<14 | 0x40<<7 | 0x06,\n\t36693 - 19968: jis0212<<14 | 0x40<<7 | 0x07,\n\t36695 - 19968: jis0208<<14 | 0x4C<<7 | 0x3D,\n\t36696 - 19968: jis0212<<14 | 0x40<<7 | 0x08,\n\t36700 - 19968: jis0208<<14 | 0x4C<<7 | 0x3E,\n\t36701 - 19968: jis0212<<14 | 0x40<<7 | 0x09,\n\t36702 - 19968: jis0212<<14 | 0x40<<7 | 0x0A,\n\t36703 - 19968: jis0208<<14 | 0x18<<7 | 0x4B,\n\t36705 - 19968: jis0208<<14 | 0x16<<7 | 0x04,\n\t36706 - 19968: jis0208<<14 | 0x4C<<7 | 0x3F,\n\t36707 - 19968: jis0208<<14 | 0x4C<<7 | 0x40,\n\t36708 - 19968: jis0208<<14 | 0x4C<<7 | 0x41,\n\t36709 - 19968: jis0212<<14 | 0x40<<7 | 0x0B,\n\t36763 - 19968: jis0208<<14 | 0x1E<<7 | 0x28,\n\t36764 - 19968: jis0208<<14 | 0x4C<<7 | 0x42,\n\t36765 - 19968: jis0212<<14 | 0x40<<7 | 0x0C,\n\t36766 - 19968: jis0208<<14 | 0x1B<<7 | 0x0C,\n\t36767 - 19968: jis0208<<14 | 0x4C<<7 | 0x43,\n\t36768 - 19968: jis0212<<14 | 0x40<<7 | 0x0D,\n\t36769 - 19968: jis0212<<14 | 0x40<<7 | 0x0E,\n\t36771 - 19968: jis0208<<14 | 0x4C<<7 | 0x44,\n\t36772 - 19968: jis0212<<14 | 0x40<<7 | 0x0F,\n\t36773 - 19968: jis0212<<14 | 0x40<<7 | 0x10,\n\t36774 - 19968: jis0212<<14 | 0x40<<7 | 0x11,\n\t36775 - 19968: jis0208<<14 | 0x31<<7 | 0x00,\n\t36776 - 19968: jis0208<<14 | 0x30<<7 | 0x5D,\n\t36781 - 19968: jis0208<<14 | 0x4C<<7 | 0x45,\n\t36782 - 19968: jis0208<<14 | 0x44<<7 | 0x4F,\n\t36783 - 19968: jis0208<<14 | 0x4C<<7 | 0x46,\n\t36784 - 19968: jis0208<<14 | 0x22<<7 | 0x03,\n\t36785 - 19968: jis0208<<14 | 0x1E<<7 | 0x0A,\n\t36786 - 19968: jis0208<<14 | 0x26<<7 | 0x1F,\n\t36789 - 19968: jis0212<<14 | 0x40<<7 | 0x12,\n\t36790 - 19968: jis0212<<14 | 0x40<<7 | 0x13,\n\t36791 - 19968: jis0208<<14 | 0x4C<<7 | 0x47,\n\t36792 - 19968: jis0212<<14 | 0x40<<7 | 0x14,\n\t36794 - 19968: jis0208<<14 | 0x29<<7 | 0x34,\n\t36795 - 19968: jis0208<<14 | 0x23<<7 | 0x33,\n\t36796 - 19968: jis0208<<14 | 0x18<<7 | 0x5D,\n\t36798 - 19968: jis0212<<14 | 0x40<<7 | 0x15,\n\t36799 - 19968: jis0208<<14 | 0x22<<7 | 0x08,\n\t36800 - 19968: jis0212<<14 | 0x40<<7 | 0x16,\n\t36801 - 19968: jis0212<<14 | 0x40<<7 | 0x17,\n\t36802 - 19968: jis0208<<14 | 0x10<<7 | 0x09,\n\t36804 - 19968: jis0208<<14 | 0x2A<<7 | 0x57,\n\t36805 - 19968: jis0208<<14 | 0x1E<<7 | 0x36,\n\t36806 - 19968: jis0212<<14 | 0x40<<7 | 0x18,\n\t36810 - 19968: jis0212<<14 | 0x40<<7 | 0x19,\n\t36811 - 19968: jis0212<<14 | 0x40<<7 | 0x1A,\n\t36813 - 19968: jis0212<<14 | 0x40<<7 | 0x1B,\n\t36814 - 19968: jis0208<<14 | 0x16<<7 | 0x3D,\n\t36816 - 19968: jis0212<<14 | 0x40<<7 | 0x1C,\n\t36817 - 19968: jis0208<<14 | 0x15<<7 | 0x40,\n\t36818 - 19968: jis0212<<14 | 0x40<<7 | 0x1D,\n\t36819 - 19968: jis0212<<14 | 0x40<<7 | 0x1E,\n\t36820 - 19968: jis0208<<14 | 0x29<<7 | 0x35,\n\t36821 - 19968: jis0212<<14 | 0x40<<7 | 0x1F,\n\t36826 - 19968: jis0208<<14 | 0x4C<<7 | 0x48,\n\t36832 - 19968: jis0212<<14 | 0x40<<7 | 0x20,\n\t36834 - 19968: jis0208<<14 | 0x4C<<7 | 0x4A,\n\t36835 - 19968: jis0212<<14 | 0x40<<7 | 0x21,\n\t36836 - 19968: jis0212<<14 | 0x40<<7 | 0x22,\n\t36837 - 19968: jis0208<<14 | 0x4C<<7 | 0x49,\n\t36838 - 19968: jis0208<<14 | 0x11<<7 | 0x3F,\n\t36840 - 19968: jis0212<<14 | 0x40<<7 | 0x23,\n\t36841 - 19968: jis0208<<14 | 0x25<<7 | 0x55,\n\t36842 - 19968: jis0208<<14 | 0x4C<<7 | 0x4B,\n\t36843 - 19968: jis0208<<14 | 0x26<<7 | 0x56,\n\t36845 - 19968: jis0208<<14 | 0x24<<7 | 0x12,\n\t36846 - 19968: jis0212<<14 | 0x40<<7 | 0x24,\n\t36847 - 19968: jis0208<<14 | 0x4C<<7 | 0x4C,\n\t36848 - 19968: jis0208<<14 | 0x1C<<7 | 0x31,\n\t36849 - 19968: jis0212<<14 | 0x40<<7 | 0x25,\n\t36852 - 19968: jis0208<<14 | 0x4C<<7 | 0x4E,\n\t36853 - 19968: jis0212<<14 | 0x40<<7 | 0x26,\n\t36854 - 19968: jis0212<<14 | 0x40<<7 | 0x27,\n\t36855 - 19968: jis0208<<14 | 0x2B<<7 | 0x21,\n\t36856 - 19968: jis0208<<14 | 0x4C<<7 | 0x5D,\n\t36857 - 19968: jis0208<<14 | 0x4C<<7 | 0x50,\n\t36858 - 19968: jis0208<<14 | 0x4C<<7 | 0x51,\n\t36859 - 19968: jis0212<<14 | 0x40<<7 | 0x28,\n\t36861 - 19968: jis0208<<14 | 0x23<<7 | 0x28,\n\t36862 - 19968: jis0212<<14 | 0x40<<7 | 0x29,\n\t36864 - 19968: jis0208<<14 | 0x21<<7 | 0x3F,\n\t36865 - 19968: jis0208<<14 | 0x20<<7 | 0x56,\n\t36866 - 19968: jis0212<<14 | 0x40<<7 | 0x2A,\n\t36867 - 19968: jis0208<<14 | 0x25<<7 | 0x07,\n\t36868 - 19968: jis0212<<14 | 0x40<<7 | 0x2B,\n\t36869 - 19968: jis0208<<14 | 0x4C<<7 | 0x4F,\n\t36870 - 19968: jis0208<<14 | 0x14<<7 | 0x34,\n\t36872 - 19968: jis0212<<14 | 0x40<<7 | 0x2C,\n\t36875 - 19968: jis0208<<14 | 0x4C<<7 | 0x58,\n\t36876 - 19968: jis0212<<14 | 0x40<<7 | 0x2D,\n\t36877 - 19968: jis0208<<14 | 0x4C<<7 | 0x55,\n\t36878 - 19968: jis0208<<14 | 0x4D<<7 | 0x04,\n\t36879 - 19968: jis0208<<14 | 0x25<<7 | 0x08,\n\t36880 - 19968: jis0208<<14 | 0x22<<7 | 0x3F,\n\t36881 - 19968: jis0208<<14 | 0x4C<<7 | 0x52,\n\t36883 - 19968: jis0208<<14 | 0x23<<7 | 0x5D,\n\t36884 - 19968: jis0208<<14 | 0x24<<7 | 0x32,\n\t36885 - 19968: jis0208<<14 | 0x4C<<7 | 0x53,\n\t36886 - 19968: jis0208<<14 | 0x4C<<7 | 0x57,\n\t36887 - 19968: jis0208<<14 | 0x1E<<7 | 0x3F,\n\t36888 - 19968: jis0212<<14 | 0x40<<7 | 0x2E,\n\t36889 - 19968: jis0208<<14 | 0x26<<7 | 0x46,\n\t36890 - 19968: jis0208<<14 | 0x23<<7 | 0x2B,\n\t36891 - 19968: jis0212<<14 | 0x40<<7 | 0x2F,\n\t36893 - 19968: jis0208<<14 | 0x1F<<7 | 0x21,\n\t36894 - 19968: jis0208<<14 | 0x4C<<7 | 0x56,\n\t36895 - 19968: jis0208<<14 | 0x21<<7 | 0x0D,\n\t36896 - 19968: jis0208<<14 | 0x21<<7 | 0x03,\n\t36897 - 19968: jis0208<<14 | 0x4C<<7 | 0x54,\n\t36898 - 19968: jis0208<<14 | 0x0F<<7 | 0x08,\n\t36899 - 19968: jis0208<<14 | 0x2E<<7 | 0x01,\n\t36903 - 19968: jis0208<<14 | 0x4C<<7 | 0x59,\n\t36904 - 19968: jis0212<<14 | 0x40<<7 | 0x30,\n\t36905 - 19968: jis0212<<14 | 0x40<<7 | 0x31,\n\t36906 - 19968: jis0212<<14 | 0x40<<7 | 0x33,\n\t36908 - 19968: jis0212<<14 | 0x40<<7 | 0x34,\n\t36909 - 19968: jis0212<<14 | 0x40<<7 | 0x35,\n\t36910 - 19968: jis0208<<14 | 0x21<<7 | 0x40,\n\t36911 - 19968: jis0212<<14 | 0x40<<7 | 0x32,\n\t36913 - 19968: jis0208<<14 | 0x1C<<7 | 0x14,\n\t36914 - 19968: jis0208<<14 | 0x1E<<7 | 0x29,\n\t36915 - 19968: jis0212<<14 | 0x40<<7 | 0x36,\n\t36916 - 19968: jis0212<<14 | 0x40<<7 | 0x37,\n\t36917 - 19968: jis0208<<14 | 0x4C<<7 | 0x5B,\n\t36918 - 19968: jis0208<<14 | 0x4C<<7 | 0x5A,\n\t36919 - 19968: jis0212<<14 | 0x40<<7 | 0x38,\n\t36920 - 19968: jis0208<<14 | 0x0F<<7 | 0x4E,\n\t36921 - 19968: jis0208<<14 | 0x4C<<7 | 0x5C,\n\t36924 - 19968: jis0208<<14 | 0x28<<7 | 0x0E,\n\t36926 - 19968: jis0208<<14 | 0x4D<<7 | 0x06,\n\t36927 - 19968: jis0212<<14 | 0x40<<7 | 0x39,\n\t36929 - 19968: jis0208<<14 | 0x25<<7 | 0x3A,\n\t36930 - 19968: jis0208<<14 | 0x1E<<7 | 0x4A,\n\t36931 - 19968: jis0212<<14 | 0x40<<7 | 0x3A,\n\t36932 - 19968: jis0212<<14 | 0x40<<7 | 0x3B,\n\t36933 - 19968: jis0208<<14 | 0x22<<7 | 0x38,\n\t36935 - 19968: jis0208<<14 | 0x15<<7 | 0x57,\n\t36937 - 19968: jis0208<<14 | 0x4D<<7 | 0x05,\n\t36938 - 19968: jis0208<<14 | 0x2C<<7 | 0x16,\n\t36939 - 19968: jis0208<<14 | 0x10<<7 | 0x1E,\n\t36940 - 19968: jis0212<<14 | 0x40<<7 | 0x3C,\n\t36941 - 19968: jis0208<<14 | 0x29<<7 | 0x36,\n\t36942 - 19968: jis0208<<14 | 0x11<<7 | 0x40,\n\t36943 - 19968: jis0208<<14 | 0x4D<<7 | 0x00,\n\t36944 - 19968: jis0208<<14 | 0x4D<<7 | 0x01,\n\t36945 - 19968: jis0208<<14 | 0x4D<<7 | 0x02,\n\t36946 - 19968: jis0208<<14 | 0x4D<<7 | 0x03,\n\t36947 - 19968: jis0208<<14 | 0x25<<7 | 0x1A,\n\t36948 - 19968: jis0208<<14 | 0x22<<7 | 0x02,\n\t36949 - 19968: jis0208<<14 | 0x0F<<7 | 0x42,\n\t36950 - 19968: jis0208<<14 | 0x4D<<7 | 0x07,\n\t36952 - 19968: jis0208<<14 | 0x4D<<7 | 0x08,\n\t36953 - 19968: jis0208<<14 | 0x53<<7 | 0x02,\n\t36955 - 19968: jis0212<<14 | 0x40<<7 | 0x3D,\n\t36956 - 19968: jis0208<<14 | 0x21<<7 | 0x1C,\n\t36957 - 19968: jis0212<<14 | 0x40<<7 | 0x3E,\n\t36958 - 19968: jis0208<<14 | 0x4D<<7 | 0x09,\n\t36960 - 19968: jis0208<<14 | 0x10<<7 | 0x52,\n\t36961 - 19968: jis0208<<14 | 0x20<<7 | 0x2B,\n\t36962 - 19968: jis0212<<14 | 0x40<<7 | 0x3F,\n\t36963 - 19968: jis0208<<14 | 0x17<<7 | 0x0E,\n\t36965 - 19968: jis0208<<14 | 0x2C<<7 | 0x39,\n\t36966 - 19968: jis0212<<14 | 0x40<<7 | 0x40,\n\t36967 - 19968: jis0208<<14 | 0x5A<<7 | 0x58,\n\t36968 - 19968: jis0208<<14 | 0x4D<<7 | 0x0A,\n\t36969 - 19968: jis0208<<14 | 0x24<<7 | 0x0B,\n\t36972 - 19968: jis0212<<14 | 0x40<<7 | 0x42,\n\t36973 - 19968: jis0208<<14 | 0x20<<7 | 0x57,\n\t36974 - 19968: jis0208<<14 | 0x1B<<7 | 0x36,\n\t36975 - 19968: jis0208<<14 | 0x4D<<7 | 0x0B,\n\t36976 - 19968: jis0212<<14 | 0x40<<7 | 0x43,\n\t36978 - 19968: jis0208<<14 | 0x4D<<7 | 0x0E,\n\t36980 - 19968: jis0212<<14 | 0x40<<7 | 0x44,\n\t36981 - 19968: jis0208<<14 | 0x1C<<7 | 0x44,\n\t36982 - 19968: jis0208<<14 | 0x4D<<7 | 0x0C,\n\t36983 - 19968: jis0208<<14 | 0x20<<7 | 0x0A,\n\t36984 - 19968: jis0208<<14 | 0x20<<7 | 0x09,\n\t36985 - 19968: jis0212<<14 | 0x40<<7 | 0x45,\n\t36986 - 19968: jis0208<<14 | 0x0F<<7 | 0x43,\n\t36988 - 19968: jis0208<<14 | 0x2D<<7 | 0x2A,\n\t36989 - 19968: jis0208<<14 | 0x4D<<7 | 0x10,\n\t36991 - 19968: jis0208<<14 | 0x27<<7 | 0x51,\n\t36992 - 19968: jis0208<<14 | 0x4D<<7 | 0x12,\n\t36993 - 19968: jis0208<<14 | 0x4D<<7 | 0x11,\n\t36994 - 19968: jis0208<<14 | 0x4D<<7 | 0x0F,\n\t36995 - 19968: jis0208<<14 | 0x42<<7 | 0x43,\n\t36996 - 19968: jis0208<<14 | 0x13<<7 | 0x33,\n\t36997 - 19968: jis0212<<14 | 0x40<<7 | 0x46,\n\t36999 - 19968: jis0208<<14 | 0x4C<<7 | 0x4D,\n\t37000 - 19968: jis0212<<14 | 0x40<<7 | 0x47,\n\t37001 - 19968: jis0208<<14 | 0x4D<<7 | 0x14,\n\t37002 - 19968: jis0208<<14 | 0x4D<<7 | 0x13,\n\t37003 - 19968: jis0212<<14 | 0x40<<7 | 0x48,\n\t37004 - 19968: jis0212<<14 | 0x40<<7 | 0x49,\n\t37006 - 19968: jis0212<<14 | 0x40<<7 | 0x4A,\n\t37007 - 19968: jis0208<<14 | 0x4D<<7 | 0x15,\n\t37008 - 19968: jis0212<<14 | 0x40<<7 | 0x4B,\n\t37009 - 19968: jis0208<<14 | 0x2C<<7 | 0x17,\n\t37013 - 19968: jis0212<<14 | 0x40<<7 | 0x4C,\n\t37015 - 19968: jis0212<<14 | 0x40<<7 | 0x4D,\n\t37016 - 19968: jis0212<<14 | 0x40<<7 | 0x4E,\n\t37017 - 19968: jis0212<<14 | 0x40<<7 | 0x4F,\n\t37019 - 19968: jis0212<<14 | 0x40<<7 | 0x50,\n\t37024 - 19968: jis0212<<14 | 0x40<<7 | 0x51,\n\t37025 - 19968: jis0212<<14 | 0x40<<7 | 0x52,\n\t37026 - 19968: jis0212<<14 | 0x40<<7 | 0x53,\n\t37027 - 19968: jis0208<<14 | 0x25<<7 | 0x40,\n\t37029 - 19968: jis0212<<14 | 0x40<<7 | 0x54,\n\t37030 - 19968: jis0208<<14 | 0x2A<<7 | 0x0D,\n\t37032 - 19968: jis0208<<14 | 0x4D<<7 | 0x16,\n\t37034 - 19968: jis0208<<14 | 0x1B<<7 | 0x38,\n\t37039 - 19968: jis0208<<14 | 0x4D<<7 | 0x17,\n\t37040 - 19968: jis0212<<14 | 0x40<<7 | 0x55,\n\t37041 - 19968: jis0208<<14 | 0x4D<<7 | 0x18,\n\t37042 - 19968: jis0212<<14 | 0x40<<7 | 0x56,\n\t37043 - 19968: jis0212<<14 | 0x40<<7 | 0x57,\n\t37044 - 19968: jis0212<<14 | 0x40<<7 | 0x58,\n\t37045 - 19968: jis0208<<14 | 0x4D<<7 | 0x19,\n\t37046 - 19968: jis0212<<14 | 0x40<<7 | 0x59,\n\t37048 - 19968: jis0208<<14 | 0x24<<7 | 0x00,\n\t37053 - 19968: jis0212<<14 | 0x40<<7 | 0x5A,\n\t37054 - 19968: jis0212<<14 | 0x40<<7 | 0x5C,\n\t37057 - 19968: jis0208<<14 | 0x0F<<7 | 0x49,\n\t37059 - 19968: jis0212<<14 | 0x40<<7 | 0x5D,\n\t37060 - 19968: jis0212<<14 | 0x41<<7 | 0x00,\n\t37061 - 19968: jis0212<<14 | 0x41<<7 | 0x01,\n\t37063 - 19968: jis0212<<14 | 0x41<<7 | 0x02,\n\t37064 - 19968: jis0212<<14 | 0x41<<7 | 0x03,\n\t37066 - 19968: jis0208<<14 | 0x18<<7 | 0x38,\n\t37068 - 19968: jis0212<<14 | 0x40<<7 | 0x5B,\n\t37070 - 19968: jis0208<<14 | 0x2E<<7 | 0x19,\n\t37074 - 19968: jis0212<<14 | 0x41<<7 | 0x0C,\n\t37077 - 19968: jis0212<<14 | 0x41<<7 | 0x04,\n\t37079 - 19968: jis0212<<14 | 0x41<<7 | 0x05,\n\t37080 - 19968: jis0212<<14 | 0x41<<7 | 0x06,\n\t37081 - 19968: jis0212<<14 | 0x41<<7 | 0x07,\n\t37083 - 19968: jis0208<<14 | 0x4D<<7 | 0x1D,\n\t37084 - 19968: jis0212<<14 | 0x41<<7 | 0x08,\n\t37085 - 19968: jis0212<<14 | 0x41<<7 | 0x09,\n\t37086 - 19968: jis0208<<14 | 0x5A<<7 | 0x59,\n\t37087 - 19968: jis0212<<14 | 0x41<<7 | 0x0A,\n\t37089 - 19968: jis0208<<14 | 0x16<<7 | 0x13,\n\t37090 - 19968: jis0208<<14 | 0x4D<<7 | 0x1A,\n\t37092 - 19968: jis0208<<14 | 0x4D<<7 | 0x1B,\n\t37093 - 19968: jis0212<<14 | 0x41<<7 | 0x0B,\n\t37096 - 19968: jis0208<<14 | 0x28<<7 | 0x53,\n\t37099 - 19968: jis0212<<14 | 0x41<<7 | 0x0E,\n\t37101 - 19968: jis0208<<14 | 0x12<<7 | 0x33,\n\t37103 - 19968: jis0212<<14 | 0x41<<7 | 0x0F,\n\t37104 - 19968: jis0212<<14 | 0x41<<7 | 0x10,\n\t37108 - 19968: jis0212<<14 | 0x41<<7 | 0x11,\n\t37109 - 19968: jis0208<<14 | 0x2C<<7 | 0x18,\n\t37110 - 19968: jis0212<<14 | 0x41<<7 | 0x0D,\n\t37111 - 19968: jis0208<<14 | 0x15<<7 | 0x1E,\n\t37117 - 19968: jis0208<<14 | 0x24<<7 | 0x33,\n\t37118 - 19968: jis0212<<14 | 0x41<<7 | 0x12,\n\t37119 - 19968: jis0212<<14 | 0x41<<7 | 0x13,\n\t37120 - 19968: jis0212<<14 | 0x41<<7 | 0x14,\n\t37122 - 19968: jis0208<<14 | 0x4D<<7 | 0x1E,\n\t37124 - 19968: jis0212<<14 | 0x41<<7 | 0x15,\n\t37125 - 19968: jis0212<<14 | 0x41<<7 | 0x16,\n\t37126 - 19968: jis0212<<14 | 0x41<<7 | 0x17,\n\t37128 - 19968: jis0212<<14 | 0x41<<7 | 0x18,\n\t37133 - 19968: jis0212<<14 | 0x41<<7 | 0x19,\n\t37136 - 19968: jis0212<<14 | 0x41<<7 | 0x1A,\n\t37138 - 19968: jis0208<<14 | 0x4D<<7 | 0x1F,\n\t37140 - 19968: jis0212<<14 | 0x41<<7 | 0x1B,\n\t37141 - 19968: jis0208<<14 | 0x5A<<7 | 0x5B,\n\t37142 - 19968: jis0212<<14 | 0x41<<7 | 0x1C,\n\t37143 - 19968: jis0212<<14 | 0x41<<7 | 0x1D,\n\t37144 - 19968: jis0212<<14 | 0x41<<7 | 0x1E,\n\t37145 - 19968: jis0208<<14 | 0x4D<<7 | 0x20,\n\t37146 - 19968: jis0212<<14 | 0x41<<7 | 0x1F,\n\t37148 - 19968: jis0212<<14 | 0x41<<7 | 0x20,\n\t37150 - 19968: jis0212<<14 | 0x41<<7 | 0x21,\n\t37152 - 19968: jis0212<<14 | 0x41<<7 | 0x22,\n\t37154 - 19968: jis0212<<14 | 0x41<<7 | 0x24,\n\t37155 - 19968: jis0212<<14 | 0x41<<7 | 0x25,\n\t37157 - 19968: jis0212<<14 | 0x41<<7 | 0x23,\n\t37159 - 19968: jis0208<<14 | 0x5A<<7 | 0x5C,\n\t37161 - 19968: jis0212<<14 | 0x41<<7 | 0x27,\n\t37165 - 19968: jis0208<<14 | 0x24<<7 | 0x01,\n\t37166 - 19968: jis0212<<14 | 0x41<<7 | 0x28,\n\t37167 - 19968: jis0212<<14 | 0x41<<7 | 0x29,\n\t37168 - 19968: jis0208<<14 | 0x4D<<7 | 0x22,\n\t37169 - 19968: jis0212<<14 | 0x41<<7 | 0x2A,\n\t37170 - 19968: jis0208<<14 | 0x4D<<7 | 0x21,\n\t37172 - 19968: jis0212<<14 | 0x41<<7 | 0x2B,\n\t37174 - 19968: jis0212<<14 | 0x41<<7 | 0x2C,\n\t37175 - 19968: jis0212<<14 | 0x41<<7 | 0x2D,\n\t37177 - 19968: jis0212<<14 | 0x41<<7 | 0x2E,\n\t37178 - 19968: jis0212<<14 | 0x41<<7 | 0x2F,\n\t37180 - 19968: jis0212<<14 | 0x41<<7 | 0x30,\n\t37181 - 19968: jis0212<<14 | 0x41<<7 | 0x31,\n\t37187 - 19968: jis0212<<14 | 0x41<<7 | 0x32,\n\t37191 - 19968: jis0212<<14 | 0x41<<7 | 0x33,\n\t37192 - 19968: jis0212<<14 | 0x41<<7 | 0x34,\n\t37193 - 19968: jis0208<<14 | 0x25<<7 | 0x32,\n\t37194 - 19968: jis0208<<14 | 0x4D<<7 | 0x23,\n\t37195 - 19968: jis0208<<14 | 0x1C<<7 | 0x15,\n\t37196 - 19968: jis0208<<14 | 0x1B<<7 | 0x3F,\n\t37197 - 19968: jis0208<<14 | 0x26<<7 | 0x3A,\n\t37198 - 19968: jis0208<<14 | 0x22<<7 | 0x50,\n\t37199 - 19968: jis0212<<14 | 0x41<<7 | 0x35,\n\t37202 - 19968: jis0208<<14 | 0x1B<<7 | 0x51,\n\t37203 - 19968: jis0212<<14 | 0x41<<7 | 0x36,\n\t37204 - 19968: jis0208<<14 | 0x1E<<7 | 0x4B,\n\t37206 - 19968: jis0208<<14 | 0x4D<<7 | 0x24,\n\t37207 - 19968: jis0212<<14 | 0x41<<7 | 0x37,\n\t37208 - 19968: jis0208<<14 | 0x4D<<7 | 0x25,\n\t37209 - 19968: jis0212<<14 | 0x41<<7 | 0x38,\n\t37210 - 19968: jis0212<<14 | 0x41<<7 | 0x39,\n\t37211 - 19968: jis0212<<14 | 0x41<<7 | 0x3A,\n\t37217 - 19968: jis0212<<14 | 0x41<<7 | 0x3B,\n\t37218 - 19968: jis0208<<14 | 0x1E<<7 | 0x3C,\n\t37219 - 19968: jis0208<<14 | 0x4D<<7 | 0x26,\n\t37220 - 19968: jis0212<<14 | 0x41<<7 | 0x3C,\n\t37221 - 19968: jis0208<<14 | 0x4D<<7 | 0x27,\n\t37223 - 19968: jis0212<<14 | 0x41<<7 | 0x3D,\n\t37225 - 19968: jis0208<<14 | 0x4D<<7 | 0x28,\n\t37226 - 19968: jis0208<<14 | 0x2C<<7 | 0x4E,\n\t37228 - 19968: jis0208<<14 | 0x1C<<7 | 0x16,\n\t37229 - 19968: jis0212<<14 | 0x41<<7 | 0x3E,\n\t37234 - 19968: jis0208<<14 | 0x4D<<7 | 0x2A,\n\t37235 - 19968: jis0208<<14 | 0x4D<<7 | 0x29,\n\t37236 - 19968: jis0212<<14 | 0x41<<7 | 0x3F,\n\t37237 - 19968: jis0208<<14 | 0x18<<7 | 0x39,\n\t37239 - 19968: jis0208<<14 | 0x18<<7 | 0x52,\n\t37240 - 19968: jis0208<<14 | 0x1A<<7 | 0x1F,\n\t37241 - 19968: jis0212<<14 | 0x41<<7 | 0x40,\n\t37242 - 19968: jis0212<<14 | 0x41<<7 | 0x41,\n\t37243 - 19968: jis0212<<14 | 0x41<<7 | 0x42,\n\t37249 - 19968: jis0212<<14 | 0x41<<7 | 0x43,\n\t37250 - 19968: jis0208<<14 | 0x4D<<7 | 0x2D,\n\t37251 - 19968: jis0212<<14 | 0x41<<7 | 0x44,\n\t37253 - 19968: jis0212<<14 | 0x41<<7 | 0x45,\n\t37254 - 19968: jis0212<<14 | 0x41<<7 | 0x46,\n\t37255 - 19968: jis0208<<14 | 0x1C<<7 | 0x45,\n\t37257 - 19968: jis0208<<14 | 0x4D<<7 | 0x2C,\n\t37258 - 19968: jis0212<<14 | 0x41<<7 | 0x47,\n\t37259 - 19968: jis0208<<14 | 0x4D<<7 | 0x2B,\n\t37261 - 19968: jis0208<<14 | 0x21<<7 | 0x48,\n\t37262 - 19968: jis0212<<14 | 0x41<<7 | 0x48,\n\t37264 - 19968: jis0208<<14 | 0x17<<7 | 0x4E,\n\t37265 - 19968: jis0212<<14 | 0x41<<7 | 0x49,\n\t37266 - 19968: jis0208<<14 | 0x1F<<7 | 0x22,\n\t37267 - 19968: jis0212<<14 | 0x41<<7 | 0x4A,\n\t37268 - 19968: jis0212<<14 | 0x41<<7 | 0x4B,\n\t37269 - 19968: jis0212<<14 | 0x41<<7 | 0x4C,\n\t37271 - 19968: jis0208<<14 | 0x27<<7 | 0x0F,\n\t37272 - 19968: jis0212<<14 | 0x41<<7 | 0x4D,\n\t37276 - 19968: jis0208<<14 | 0x1C<<7 | 0x18,\n\t37278 - 19968: jis0212<<14 | 0x41<<7 | 0x4E,\n\t37281 - 19968: jis0212<<14 | 0x41<<7 | 0x4F,\n\t37282 - 19968: jis0208<<14 | 0x4D<<7 | 0x2E,\n\t37284 - 19968: jis0208<<14 | 0x1D<<7 | 0x3E,\n\t37286 - 19968: jis0212<<14 | 0x41<<7 | 0x50,\n\t37288 - 19968: jis0212<<14 | 0x41<<7 | 0x51,\n\t37290 - 19968: jis0208<<14 | 0x4D<<7 | 0x31,\n\t37291 - 19968: jis0208<<14 | 0x4D<<7 | 0x2F,\n\t37292 - 19968: jis0212<<14 | 0x41<<7 | 0x52,\n\t37293 - 19968: jis0212<<14 | 0x41<<7 | 0x53,\n\t37294 - 19968: jis0212<<14 | 0x41<<7 | 0x54,\n\t37295 - 19968: jis0208<<14 | 0x4D<<7 | 0x30,\n\t37296 - 19968: jis0212<<14 | 0x41<<7 | 0x55,\n\t37297 - 19968: jis0212<<14 | 0x41<<7 | 0x56,\n\t37298 - 19968: jis0212<<14 | 0x41<<7 | 0x57,\n\t37299 - 19968: jis0212<<14 | 0x41<<7 | 0x58,\n\t37300 - 19968: jis0208<<14 | 0x4D<<7 | 0x33,\n\t37301 - 19968: jis0208<<14 | 0x4D<<7 | 0x32,\n\t37302 - 19968: jis0212<<14 | 0x41<<7 | 0x59,\n\t37304 - 19968: jis0208<<14 | 0x1D<<7 | 0x59,\n\t37306 - 19968: jis0208<<14 | 0x4D<<7 | 0x34,\n\t37307 - 19968: jis0212<<14 | 0x41<<7 | 0x5A,\n\t37308 - 19968: jis0212<<14 | 0x41<<7 | 0x5B,\n\t37309 - 19968: jis0212<<14 | 0x41<<7 | 0x5C,\n\t37311 - 19968: jis0212<<14 | 0x41<<7 | 0x5D,\n\t37312 - 19968: jis0208<<14 | 0x4D<<7 | 0x35,\n\t37313 - 19968: jis0208<<14 | 0x4D<<7 | 0x36,\n\t37314 - 19968: jis0212<<14 | 0x42<<7 | 0x00,\n\t37315 - 19968: jis0212<<14 | 0x42<<7 | 0x01,\n\t37317 - 19968: jis0212<<14 | 0x42<<7 | 0x02,\n\t37318 - 19968: jis0208<<14 | 0x27<<7 | 0x2F,\n\t37319 - 19968: jis0208<<14 | 0x19<<7 | 0x32,\n\t37320 - 19968: jis0208<<14 | 0x1B<<7 | 0x40,\n\t37321 - 19968: jis0208<<14 | 0x4D<<7 | 0x37,\n\t37323 - 19968: jis0208<<14 | 0x4D<<7 | 0x38,\n\t37324 - 19968: jis0208<<14 | 0x2D<<7 | 0x03,\n\t37325 - 19968: jis0208<<14 | 0x1C<<7 | 0x24,\n\t37326 - 19968: jis0208<<14 | 0x2B<<7 | 0x4D,\n\t37327 - 19968: jis0208<<14 | 0x2D<<7 | 0x2B,\n\t37328 - 19968: jis0208<<14 | 0x4D<<7 | 0x39,\n\t37329 - 19968: jis0208<<14 | 0x15<<7 | 0x41,\n\t37331 - 19968: jis0212<<14 | 0x42<<7 | 0x03,\n\t37332 - 19968: jis0212<<14 | 0x42<<7 | 0x04,\n\t37334 - 19968: jis0208<<14 | 0x4D<<7 | 0x3A,\n\t37335 - 19968: jis0208<<14 | 0x5B<<7 | 0x00,\n\t37336 - 19968: jis0208<<14 | 0x24<<7 | 0x02,\n\t37337 - 19968: jis0212<<14 | 0x42<<7 | 0x06,\n\t37338 - 19968: jis0208<<14 | 0x5A<<7 | 0x5D,\n\t37339 - 19968: jis0208<<14 | 0x4D<<7 | 0x3D,\n\t37340 - 19968: jis0208<<14 | 0x12<<7 | 0x57,\n\t37341 - 19968: jis0208<<14 | 0x1E<<7 | 0x2A,\n\t37342 - 19968: jis0208<<14 | 0x5B<<7 | 0x01,\n\t37343 - 19968: jis0208<<14 | 0x4D<<7 | 0x3B,\n\t37345 - 19968: jis0208<<14 | 0x4D<<7 | 0x3C,\n\t37347 - 19968: jis0208<<14 | 0x23<<7 | 0x3F,\n\t37348 - 19968: jis0208<<14 | 0x5B<<7 | 0x04,\n\t37349 - 19968: jis0208<<14 | 0x5B<<7 | 0x05,\n\t37350 - 19968: jis0208<<14 | 0x2A<<7 | 0x34,\n\t37351 - 19968: jis0208<<14 | 0x15<<7 | 0x5B,\n\t37353 - 19968: jis0212<<14 | 0x42<<7 | 0x0B,\n\t37354 - 19968: jis0212<<14 | 0x42<<7 | 0x0C,\n\t37356 - 19968: jis0212<<14 | 0x42<<7 | 0x0D,\n\t37357 - 19968: jis0208<<14 | 0x5B<<7 | 0x02,\n\t37358 - 19968: jis0208<<14 | 0x5B<<7 | 0x03,\n\t37359 - 19968: jis0212<<14 | 0x42<<7 | 0x10,\n\t37360 - 19968: jis0212<<14 | 0x42<<7 | 0x11,\n\t37361 - 19968: jis0212<<14 | 0x42<<7 | 0x12,\n\t37365 - 19968: jis0208<<14 | 0x4D<<7 | 0x3F,\n\t37366 - 19968: jis0208<<14 | 0x4D<<7 | 0x40,\n\t37367 - 19968: jis0212<<14 | 0x42<<7 | 0x13,\n\t37369 - 19968: jis0212<<14 | 0x42<<7 | 0x14,\n\t37371 - 19968: jis0212<<14 | 0x42<<7 | 0x15,\n\t37372 - 19968: jis0208<<14 | 0x4D<<7 | 0x3E,\n\t37373 - 19968: jis0212<<14 | 0x42<<7 | 0x16,\n\t37375 - 19968: jis0208<<14 | 0x4D<<7 | 0x42,\n\t37376 - 19968: jis0212<<14 | 0x42<<7 | 0x17,\n\t37377 - 19968: jis0212<<14 | 0x42<<7 | 0x18,\n\t37380 - 19968: jis0212<<14 | 0x42<<7 | 0x19,\n\t37381 - 19968: jis0212<<14 | 0x42<<7 | 0x1A,\n\t37382 - 19968: jis0208<<14 | 0x5B<<7 | 0x06,\n\t37383 - 19968: jis0212<<14 | 0x42<<7 | 0x1C,\n\t37385 - 19968: jis0212<<14 | 0x42<<7 | 0x1D,\n\t37386 - 19968: jis0208<<14 | 0x5B<<7 | 0x08,\n\t37388 - 19968: jis0212<<14 | 0x42<<7 | 0x1F,\n\t37389 - 19968: jis0208<<14 | 0x25<<7 | 0x3E,\n\t37390 - 19968: jis0208<<14 | 0x12<<7 | 0x22,\n\t37392 - 19968: jis0208<<14 | 0x5B<<7 | 0x07,\n\t37393 - 19968: jis0208<<14 | 0x4D<<7 | 0x46,\n\t37394 - 19968: jis0212<<14 | 0x42<<7 | 0x21,\n\t37395 - 19968: jis0212<<14 | 0x42<<7 | 0x22,\n\t37396 - 19968: jis0208<<14 | 0x4D<<7 | 0x43,\n\t37397 - 19968: jis0208<<14 | 0x4D<<7 | 0x45,\n\t37398 - 19968: jis0212<<14 | 0x42<<7 | 0x23,\n\t37400 - 19968: jis0212<<14 | 0x42<<7 | 0x24,\n\t37404 - 19968: jis0212<<14 | 0x42<<7 | 0x25,\n\t37405 - 19968: jis0212<<14 | 0x42<<7 | 0x26,\n\t37406 - 19968: jis0208<<14 | 0x4D<<7 | 0x41,\n\t37411 - 19968: jis0212<<14 | 0x42<<7 | 0x27,\n\t37412 - 19968: jis0212<<14 | 0x42<<7 | 0x28,\n\t37413 - 19968: jis0212<<14 | 0x42<<7 | 0x29,\n\t37414 - 19968: jis0212<<14 | 0x42<<7 | 0x2A,\n\t37416 - 19968: jis0212<<14 | 0x42<<7 | 0x2B,\n\t37417 - 19968: jis0208<<14 | 0x4E<<7 | 0x2E,\n\t37420 - 19968: jis0208<<14 | 0x4D<<7 | 0x44,\n\t37422 - 19968: jis0212<<14 | 0x42<<7 | 0x2C,\n\t37423 - 19968: jis0212<<14 | 0x42<<7 | 0x2D,\n\t37424 - 19968: jis0212<<14 | 0x42<<7 | 0x2E,\n\t37427 - 19968: jis0212<<14 | 0x42<<7 | 0x2F,\n\t37428 - 19968: jis0208<<14 | 0x2D<<7 | 0x4A,\n\t37429 - 19968: jis0212<<14 | 0x42<<7 | 0x30,\n\t37430 - 19968: jis0212<<14 | 0x42<<7 | 0x31,\n\t37431 - 19968: jis0208<<14 | 0x17<<7 | 0x39,\n\t37432 - 19968: jis0212<<14 | 0x42<<7 | 0x32,\n\t37433 - 19968: jis0208<<14 | 0x5B<<7 | 0x0F,\n\t37434 - 19968: jis0208<<14 | 0x5B<<7 | 0x09,\n\t37436 - 19968: jis0208<<14 | 0x5B<<7 | 0x0B,\n\t37438 - 19968: jis0212<<14 | 0x42<<7 | 0x36,\n\t37439 - 19968: jis0208<<14 | 0x4D<<7 | 0x4E,\n\t37440 - 19968: jis0208<<14 | 0x5B<<7 | 0x0A,\n\t37442 - 19968: jis0212<<14 | 0x42<<7 | 0x38,\n\t37443 - 19968: jis0212<<14 | 0x42<<7 | 0x39,\n\t37444 - 19968: jis0208<<14 | 0x24<<7 | 0x13,\n\t37445 - 19968: jis0208<<14 | 0x4D<<7 | 0x49,\n\t37446 - 19968: jis0212<<14 | 0x42<<7 | 0x3A,\n\t37447 - 19968: jis0212<<14 | 0x42<<7 | 0x3B,\n\t37448 - 19968: jis0208<<14 | 0x4D<<7 | 0x4C,\n\t37449 - 19968: jis0208<<14 | 0x4D<<7 | 0x4A,\n\t37450 - 19968: jis0212<<14 | 0x42<<7 | 0x3C,\n\t37451 - 19968: jis0208<<14 | 0x4D<<7 | 0x4F,\n\t37453 - 19968: jis0212<<14 | 0x42<<7 | 0x3D,\n\t37454 - 19968: jis0208<<14 | 0x5B<<7 | 0x0C,\n\t37455 - 19968: jis0212<<14 | 0x42<<7 | 0x3F,\n\t37456 - 19968: jis0208<<14 | 0x4D<<7 | 0x50,\n\t37457 - 19968: jis0208<<14 | 0x5B<<7 | 0x0E,\n\t37463 - 19968: jis0208<<14 | 0x4D<<7 | 0x48,\n\t37464 - 19968: jis0212<<14 | 0x42<<7 | 0x41,\n\t37465 - 19968: jis0208<<14 | 0x5B<<7 | 0x0D,\n\t37466 - 19968: jis0208<<14 | 0x4D<<7 | 0x55,\n\t37467 - 19968: jis0208<<14 | 0x10<<7 | 0x53,\n\t37468 - 19968: jis0212<<14 | 0x42<<7 | 0x43,\n\t37469 - 19968: jis0212<<14 | 0x42<<7 | 0x44,\n\t37470 - 19968: jis0208<<14 | 0x4D<<7 | 0x47,\n\t37472 - 19968: jis0212<<14 | 0x42<<7 | 0x45,\n\t37473 - 19968: jis0212<<14 | 0x42<<7 | 0x46,\n\t37474 - 19968: jis0208<<14 | 0x27<<7 | 0x0C,\n\t37476 - 19968: jis0208<<14 | 0x4D<<7 | 0x4B,\n\t37477 - 19968: jis0212<<14 | 0x42<<7 | 0x47,\n\t37478 - 19968: jis0208<<14 | 0x1D<<7 | 0x3F,\n\t37479 - 19968: jis0208<<14 | 0x5B<<7 | 0x10,\n\t37480 - 19968: jis0212<<14 | 0x42<<7 | 0x49,\n\t37481 - 19968: jis0212<<14 | 0x42<<7 | 0x4A,\n\t37486 - 19968: jis0212<<14 | 0x42<<7 | 0x4B,\n\t37487 - 19968: jis0212<<14 | 0x42<<7 | 0x4C,\n\t37488 - 19968: jis0212<<14 | 0x42<<7 | 0x4D,\n\t37489 - 19968: jis0208<<14 | 0x18<<7 | 0x3A,\n\t37493 - 19968: jis0212<<14 | 0x42<<7 | 0x4E,\n\t37494 - 19968: jis0212<<14 | 0x42<<7 | 0x4F,\n\t37495 - 19968: jis0208<<14 | 0x5B<<7 | 0x12,\n\t37496 - 19968: jis0208<<14 | 0x5B<<7 | 0x13,\n\t37497 - 19968: jis0212<<14 | 0x42<<7 | 0x52,\n\t37499 - 19968: jis0212<<14 | 0x42<<7 | 0x53,\n\t37500 - 19968: jis0212<<14 | 0x42<<7 | 0x54,\n\t37501 - 19968: jis0212<<14 | 0x42<<7 | 0x55,\n\t37502 - 19968: jis0208<<14 | 0x2A<<7 | 0x27,\n\t37503 - 19968: jis0212<<14 | 0x42<<7 | 0x56,\n\t37504 - 19968: jis0208<<14 | 0x15<<7 | 0x43,\n\t37507 - 19968: jis0208<<14 | 0x1C<<7 | 0x25,\n\t37509 - 19968: jis0208<<14 | 0x25<<7 | 0x1B,\n\t37512 - 19968: jis0208<<14 | 0x58<<7 | 0x03,\n\t37513 - 19968: jis0212<<14 | 0x42<<7 | 0x58,\n\t37514 - 19968: jis0212<<14 | 0x42<<7 | 0x59,\n\t37517 - 19968: jis0212<<14 | 0x42<<7 | 0x5A,\n\t37518 - 19968: jis0212<<14 | 0x42<<7 | 0x5B,\n\t37521 - 19968: jis0208<<14 | 0x20<<7 | 0x0C,\n\t37522 - 19968: jis0212<<14 | 0x42<<7 | 0x5C,\n\t37523 - 19968: jis0208<<14 | 0x4D<<7 | 0x53,\n\t37525 - 19968: jis0208<<14 | 0x4D<<7 | 0x4D,\n\t37526 - 19968: jis0208<<14 | 0x4D<<7 | 0x52,\n\t37527 - 19968: jis0212<<14 | 0x42<<7 | 0x5D,\n\t37528 - 19968: jis0208<<14 | 0x2B<<7 | 0x22,\n\t37529 - 19968: jis0212<<14 | 0x43<<7 | 0x00,\n\t37530 - 19968: jis0208<<14 | 0x23<<7 | 0x17,\n\t37531 - 19968: jis0208<<14 | 0x4D<<7 | 0x54,\n\t37532 - 19968: jis0208<<14 | 0x4D<<7 | 0x51,\n\t37535 - 19968: jis0212<<14 | 0x43<<7 | 0x01,\n\t37536 - 19968: jis0212<<14 | 0x43<<7 | 0x02,\n\t37540 - 19968: jis0212<<14 | 0x43<<7 | 0x03,\n\t37541 - 19968: jis0212<<14 | 0x43<<7 | 0x04,\n\t37543 - 19968: jis0208<<14 | 0x5B<<7 | 0x11,\n\t37544 - 19968: jis0212<<14 | 0x43<<7 | 0x06,\n\t37547 - 19968: jis0212<<14 | 0x43<<7 | 0x07,\n\t37549 - 19968: jis0208<<14 | 0x20<<7 | 0x0B,\n\t37551 - 19968: jis0212<<14 | 0x43<<7 | 0x08,\n\t37554 - 19968: jis0212<<14 | 0x43<<7 | 0x09,\n\t37558 - 19968: jis0212<<14 | 0x43<<7 | 0x0A,\n\t37559 - 19968: jis0208<<14 | 0x4D<<7 | 0x58,\n\t37560 - 19968: jis0212<<14 | 0x43<<7 | 0x0B,\n\t37561 - 19968: jis0208<<14 | 0x4D<<7 | 0x57,\n\t37562 - 19968: jis0212<<14 | 0x43<<7 | 0x0C,\n\t37563 - 19968: jis0212<<14 | 0x43<<7 | 0x0D,\n\t37564 - 19968: jis0212<<14 | 0x43<<7 | 0x0E,\n\t37565 - 19968: jis0212<<14 | 0x43<<7 | 0x0F,\n\t37567 - 19968: jis0212<<14 | 0x43<<7 | 0x10,\n\t37568 - 19968: jis0212<<14 | 0x43<<7 | 0x11,\n\t37569 - 19968: jis0212<<14 | 0x43<<7 | 0x12,\n\t37570 - 19968: jis0212<<14 | 0x43<<7 | 0x13,\n\t37571 - 19968: jis0212<<14 | 0x43<<7 | 0x14,\n\t37573 - 19968: jis0212<<14 | 0x43<<7 | 0x15,\n\t37574 - 19968: jis0212<<14 | 0x43<<7 | 0x16,\n\t37575 - 19968: jis0212<<14 | 0x43<<7 | 0x17,\n\t37576 - 19968: jis0212<<14 | 0x43<<7 | 0x18,\n\t37579 - 19968: jis0212<<14 | 0x43<<7 | 0x19,\n\t37580 - 19968: jis0212<<14 | 0x43<<7 | 0x1A,\n\t37581 - 19968: jis0212<<14 | 0x43<<7 | 0x1B,\n\t37582 - 19968: jis0212<<14 | 0x43<<7 | 0x1C,\n\t37583 - 19968: jis0208<<14 | 0x4D<<7 | 0x56,\n\t37584 - 19968: jis0208<<14 | 0x5B<<7 | 0x17,\n\t37586 - 19968: jis0208<<14 | 0x2A<<7 | 0x0E,\n\t37587 - 19968: jis0208<<14 | 0x5B<<7 | 0x1B,\n\t37589 - 19968: jis0208<<14 | 0x5B<<7 | 0x19,\n\t37591 - 19968: jis0208<<14 | 0x5B<<7 | 0x15,\n\t37592 - 19968: jis0212<<14 | 0x43<<7 | 0x21,\n\t37593 - 19968: jis0208<<14 | 0x5B<<7 | 0x16,\n\t37596 - 19968: jis0212<<14 | 0x43<<7 | 0x23,\n\t37597 - 19968: jis0212<<14 | 0x43<<7 | 0x24,\n\t37599 - 19968: jis0212<<14 | 0x43<<7 | 0x25,\n\t37600 - 19968: jis0208<<14 | 0x5B<<7 | 0x1A,\n\t37601 - 19968: jis0212<<14 | 0x43<<7 | 0x27,\n\t37603 - 19968: jis0212<<14 | 0x43<<7 | 0x28,\n\t37604 - 19968: jis0208<<14 | 0x1C<<7 | 0x5A,\n\t37605 - 19968: jis0212<<14 | 0x43<<7 | 0x29,\n\t37607 - 19968: jis0208<<14 | 0x5B<<7 | 0x14,\n\t37608 - 19968: jis0212<<14 | 0x43<<7 | 0x2B,\n\t37609 - 19968: jis0208<<14 | 0x4D<<7 | 0x59,\n\t37610 - 19968: jis0208<<14 | 0x29<<7 | 0x3E,\n\t37612 - 19968: jis0212<<14 | 0x43<<7 | 0x2C,\n\t37613 - 19968: jis0208<<14 | 0x10<<7 | 0x33,\n\t37614 - 19968: jis0212<<14 | 0x43<<7 | 0x2D,\n\t37616 - 19968: jis0212<<14 | 0x43<<7 | 0x2E,\n\t37618 - 19968: jis0208<<14 | 0x28<<7 | 0x25,\n\t37619 - 19968: jis0208<<14 | 0x22<<7 | 0x51,\n\t37624 - 19968: jis0208<<14 | 0x14<<7 | 0x57,\n\t37625 - 19968: jis0208<<14 | 0x58<<7 | 0x09,\n\t37626 - 19968: jis0208<<14 | 0x4D<<7 | 0x5B,\n\t37627 - 19968: jis0208<<14 | 0x5B<<7 | 0x1E,\n\t37628 - 19968: jis0208<<14 | 0x18<<7 | 0x3C,\n\t37631 - 19968: jis0208<<14 | 0x5B<<7 | 0x21,\n\t37632 - 19968: jis0212<<14 | 0x43<<7 | 0x32,\n\t37634 - 19968: jis0208<<14 | 0x5B<<7 | 0x23,\n\t37638 - 19968: jis0208<<14 | 0x1A<<7 | 0x0B,\n\t37640 - 19968: jis0212<<14 | 0x43<<7 | 0x34,\n\t37645 - 19968: jis0212<<14 | 0x43<<7 | 0x35,\n\t37647 - 19968: jis0208<<14 | 0x4D<<7 | 0x5A,\n\t37648 - 19968: jis0208<<14 | 0x1E<<7 | 0x4C,\n\t37649 - 19968: jis0212<<14 | 0x43<<7 | 0x36,\n\t37652 - 19968: jis0212<<14 | 0x43<<7 | 0x37,\n\t37653 - 19968: jis0212<<14 | 0x43<<7 | 0x38,\n\t37656 - 19968: jis0208<<14 | 0x1E<<7 | 0x4D,\n\t37657 - 19968: jis0208<<14 | 0x4E<<7 | 0x00,\n\t37658 - 19968: jis0208<<14 | 0x4E<<7 | 0x02,\n\t37660 - 19968: jis0212<<14 | 0x43<<7 | 0x39,\n\t37661 - 19968: jis0208<<14 | 0x5B<<7 | 0x22,\n\t37662 - 19968: jis0208<<14 | 0x5B<<7 | 0x20,\n\t37663 - 19968: jis0212<<14 | 0x43<<7 | 0x3C,\n\t37664 - 19968: jis0208<<14 | 0x1D<<7 | 0x5A,\n\t37665 - 19968: jis0208<<14 | 0x5B<<7 | 0x1D,\n\t37666 - 19968: jis0208<<14 | 0x4E<<7 | 0x01,\n\t37667 - 19968: jis0208<<14 | 0x4E<<7 | 0x03,\n\t37668 - 19968: jis0212<<14 | 0x43<<7 | 0x3E,\n\t37669 - 19968: jis0208<<14 | 0x5B<<7 | 0x1C,\n\t37670 - 19968: jis0208<<14 | 0x15<<7 | 0x32,\n\t37671 - 19968: jis0212<<14 | 0x43<<7 | 0x40,\n\t37672 - 19968: jis0208<<14 | 0x28<<7 | 0x24,\n\t37673 - 19968: jis0212<<14 | 0x43<<7 | 0x41,\n\t37674 - 19968: jis0212<<14 | 0x43<<7 | 0x42,\n\t37675 - 19968: jis0208<<14 | 0x1B<<7 | 0x41,\n\t37676 - 19968: jis0208<<14 | 0x2E<<7 | 0x02,\n\t37678 - 19968: jis0208<<14 | 0x4D<<7 | 0x5D,\n\t37679 - 19968: jis0208<<14 | 0x19<<7 | 0x57,\n\t37682 - 19968: jis0208<<14 | 0x2E<<7 | 0x1E,\n\t37683 - 19968: jis0212<<14 | 0x43<<7 | 0x43,\n\t37684 - 19968: jis0212<<14 | 0x43<<7 | 0x44,\n\t37685 - 19968: jis0208<<14 | 0x4E<<7 | 0x05,\n\t37686 - 19968: jis0212<<14 | 0x43<<7 | 0x45,\n\t37687 - 19968: jis0212<<14 | 0x43<<7 | 0x46,\n\t37690 - 19968: jis0208<<14 | 0x4E<<7 | 0x04,\n\t37691 - 19968: jis0208<<14 | 0x4E<<7 | 0x06,\n\t37700 - 19968: jis0208<<14 | 0x4D<<7 | 0x5C,\n\t37703 - 19968: jis0212<<14 | 0x43<<7 | 0x47,\n\t37704 - 19968: jis0208<<14 | 0x58<<7 | 0x02,\n\t37705 - 19968: jis0212<<14 | 0x43<<7 | 0x49,\n\t37707 - 19968: jis0208<<14 | 0x25<<7 | 0x48,\n\t37709 - 19968: jis0208<<14 | 0x24<<7 | 0x34,\n\t37712 - 19968: jis0212<<14 | 0x43<<7 | 0x4A,\n\t37713 - 19968: jis0212<<14 | 0x43<<7 | 0x4B,\n\t37714 - 19968: jis0212<<14 | 0x43<<7 | 0x4C,\n\t37716 - 19968: jis0208<<14 | 0x23<<7 | 0x36,\n\t37717 - 19968: jis0212<<14 | 0x43<<7 | 0x4D,\n\t37718 - 19968: jis0208<<14 | 0x4E<<7 | 0x0B,\n\t37719 - 19968: jis0208<<14 | 0x5B<<7 | 0x25,\n\t37720 - 19968: jis0212<<14 | 0x43<<7 | 0x4F,\n\t37722 - 19968: jis0212<<14 | 0x43<<7 | 0x50,\n\t37723 - 19968: jis0208<<14 | 0x22<<7 | 0x22,\n\t37724 - 19968: jis0208<<14 | 0x4E<<7 | 0x07,\n\t37726 - 19968: jis0212<<14 | 0x43<<7 | 0x51,\n\t37728 - 19968: jis0208<<14 | 0x4E<<7 | 0x08,\n\t37732 - 19968: jis0212<<14 | 0x43<<7 | 0x52,\n\t37733 - 19968: jis0212<<14 | 0x43<<7 | 0x53,\n\t37735 - 19968: jis0212<<14 | 0x43<<7 | 0x54,\n\t37737 - 19968: jis0212<<14 | 0x43<<7 | 0x55,\n\t37738 - 19968: jis0212<<14 | 0x43<<7 | 0x56,\n\t37740 - 19968: jis0208<<14 | 0x16<<7 | 0x0C,\n\t37741 - 19968: jis0212<<14 | 0x43<<7 | 0x57,\n\t37742 - 19968: jis0208<<14 | 0x4E<<7 | 0x0A,\n\t37743 - 19968: jis0212<<14 | 0x43<<7 | 0x58,\n\t37744 - 19968: jis0208<<14 | 0x5B<<7 | 0x24,\n\t37745 - 19968: jis0212<<14 | 0x43<<7 | 0x5A,\n\t37747 - 19968: jis0212<<14 | 0x43<<7 | 0x5B,\n\t37748 - 19968: jis0212<<14 | 0x43<<7 | 0x5C,\n\t37749 - 19968: jis0208<<14 | 0x17<<7 | 0x0F,\n\t37750 - 19968: jis0212<<14 | 0x43<<7 | 0x5D,\n\t37754 - 19968: jis0212<<14 | 0x44<<7 | 0x00,\n\t37756 - 19968: jis0208<<14 | 0x4E<<7 | 0x09,\n\t37757 - 19968: jis0212<<14 | 0x44<<7 | 0x01,\n\t37758 - 19968: jis0208<<14 | 0x1D<<7 | 0x40,\n\t37759 - 19968: jis0212<<14 | 0x44<<7 | 0x02,\n\t37760 - 19968: jis0212<<14 | 0x44<<7 | 0x03,\n\t37761 - 19968: jis0212<<14 | 0x44<<7 | 0x04,\n\t37762 - 19968: jis0212<<14 | 0x44<<7 | 0x05,\n\t37768 - 19968: jis0212<<14 | 0x44<<7 | 0x06,\n\t37770 - 19968: jis0212<<14 | 0x44<<7 | 0x07,\n\t37771 - 19968: jis0212<<14 | 0x44<<7 | 0x08,\n\t37772 - 19968: jis0208<<14 | 0x12<<7 | 0x58,\n\t37773 - 19968: jis0212<<14 | 0x44<<7 | 0x09,\n\t37775 - 19968: jis0212<<14 | 0x44<<7 | 0x0A,\n\t37778 - 19968: jis0212<<14 | 0x44<<7 | 0x0B,\n\t37780 - 19968: jis0208<<14 | 0x4E<<7 | 0x0F,\n\t37781 - 19968: jis0212<<14 | 0x44<<7 | 0x0C,\n\t37782 - 19968: jis0208<<14 | 0x19<<7 | 0x1E,\n\t37783 - 19968: jis0208<<14 | 0x20<<7 | 0x58,\n\t37784 - 19968: jis0212<<14 | 0x44<<7 | 0x0D,\n\t37786 - 19968: jis0208<<14 | 0x23<<7 | 0x29,\n\t37787 - 19968: jis0212<<14 | 0x44<<7 | 0x0E,\n\t37790 - 19968: jis0212<<14 | 0x44<<7 | 0x0F,\n\t37793 - 19968: jis0212<<14 | 0x44<<7 | 0x10,\n\t37795 - 19968: jis0212<<14 | 0x44<<7 | 0x11,\n\t37796 - 19968: jis0208<<14 | 0x5B<<7 | 0x26,\n\t37798 - 19968: jis0212<<14 | 0x44<<7 | 0x13,\n\t37799 - 19968: jis0208<<14 | 0x12<<7 | 0x1A,\n\t37800 - 19968: jis0212<<14 | 0x44<<7 | 0x14,\n\t37801 - 19968: jis0212<<14 | 0x44<<7 | 0x1A,\n\t37803 - 19968: jis0212<<14 | 0x44<<7 | 0x15,\n\t37804 - 19968: jis0208<<14 | 0x4E<<7 | 0x0D,\n\t37805 - 19968: jis0208<<14 | 0x4E<<7 | 0x0E,\n\t37806 - 19968: jis0208<<14 | 0x23<<7 | 0x22,\n\t37808 - 19968: jis0208<<14 | 0x4E<<7 | 0x0C,\n\t37812 - 19968: jis0212<<14 | 0x44<<7 | 0x16,\n\t37813 - 19968: jis0212<<14 | 0x44<<7 | 0x17,\n\t37814 - 19968: jis0212<<14 | 0x44<<7 | 0x18,\n\t37817 - 19968: jis0208<<14 | 0x4E<<7 | 0x10,\n\t37818 - 19968: jis0212<<14 | 0x44<<7 | 0x19,\n\t37825 - 19968: jis0212<<14 | 0x44<<7 | 0x1B,\n\t37827 - 19968: jis0208<<14 | 0x4E<<7 | 0x16,\n\t37828 - 19968: jis0212<<14 | 0x44<<7 | 0x1C,\n\t37829 - 19968: jis0212<<14 | 0x44<<7 | 0x1D,\n\t37830 - 19968: jis0208<<14 | 0x5B<<7 | 0x27,\n\t37831 - 19968: jis0212<<14 | 0x44<<7 | 0x1F,\n\t37832 - 19968: jis0208<<14 | 0x4E<<7 | 0x19,\n\t37833 - 19968: jis0212<<14 | 0x44<<7 | 0x20,\n\t37834 - 19968: jis0212<<14 | 0x44<<7 | 0x21,\n\t37835 - 19968: jis0212<<14 | 0x44<<7 | 0x22,\n\t37836 - 19968: jis0212<<14 | 0x44<<7 | 0x23,\n\t37837 - 19968: jis0212<<14 | 0x44<<7 | 0x24,\n\t37840 - 19968: jis0208<<14 | 0x4E<<7 | 0x18,\n\t37841 - 19968: jis0208<<14 | 0x24<<7 | 0x0C,\n\t37843 - 19968: jis0212<<14 | 0x44<<7 | 0x25,\n\t37846 - 19968: jis0208<<14 | 0x4E<<7 | 0x11,\n\t37847 - 19968: jis0208<<14 | 0x4E<<7 | 0x12,\n\t37848 - 19968: jis0208<<14 | 0x4E<<7 | 0x15,\n\t37849 - 19968: jis0212<<14 | 0x44<<7 | 0x26,\n\t37852 - 19968: jis0212<<14 | 0x44<<7 | 0x27,\n\t37853 - 19968: jis0208<<14 | 0x4E<<7 | 0x17,\n\t37854 - 19968: jis0208<<14 | 0x5B<<7 | 0x28,\n\t37855 - 19968: jis0212<<14 | 0x44<<7 | 0x29,\n\t37857 - 19968: jis0208<<14 | 0x15<<7 | 0x1F,\n\t37858 - 19968: jis0212<<14 | 0x44<<7 | 0x2A,\n\t37860 - 19968: jis0208<<14 | 0x4E<<7 | 0x1A,\n\t37861 - 19968: jis0208<<14 | 0x4E<<7 | 0x14,\n\t37862 - 19968: jis0212<<14 | 0x44<<7 | 0x2B,\n\t37863 - 19968: jis0212<<14 | 0x44<<7 | 0x2C,\n\t37864 - 19968: jis0208<<14 | 0x4E<<7 | 0x13,\n\t37879 - 19968: jis0212<<14 | 0x44<<7 | 0x2E,\n\t37880 - 19968: jis0208<<14 | 0x5B<<7 | 0x29,\n\t37881 - 19968: jis0212<<14 | 0x44<<7 | 0x2D,\n\t37882 - 19968: jis0212<<14 | 0x44<<7 | 0x30,\n\t37883 - 19968: jis0212<<14 | 0x44<<7 | 0x31,\n\t37885 - 19968: jis0212<<14 | 0x44<<7 | 0x32,\n\t37889 - 19968: jis0212<<14 | 0x44<<7 | 0x33,\n\t37890 - 19968: jis0212<<14 | 0x44<<7 | 0x34,\n\t37891 - 19968: jis0208<<14 | 0x4E<<7 | 0x1E,\n\t37892 - 19968: jis0212<<14 | 0x44<<7 | 0x35,\n\t37895 - 19968: jis0208<<14 | 0x4E<<7 | 0x1F,\n\t37896 - 19968: jis0212<<14 | 0x44<<7 | 0x36,\n\t37897 - 19968: jis0212<<14 | 0x44<<7 | 0x37,\n\t37901 - 19968: jis0212<<14 | 0x44<<7 | 0x38,\n\t37902 - 19968: jis0212<<14 | 0x44<<7 | 0x39,\n\t37903 - 19968: jis0212<<14 | 0x44<<7 | 0x3A,\n\t37904 - 19968: jis0208<<14 | 0x4E<<7 | 0x20,\n\t37907 - 19968: jis0208<<14 | 0x4E<<7 | 0x1D,\n\t37908 - 19968: jis0208<<14 | 0x4E<<7 | 0x1C,\n\t37909 - 19968: jis0212<<14 | 0x44<<7 | 0x3B,\n\t37910 - 19968: jis0212<<14 | 0x44<<7 | 0x3C,\n\t37911 - 19968: jis0212<<14 | 0x44<<7 | 0x3D,\n\t37912 - 19968: jis0208<<14 | 0x1D<<7 | 0x41,\n\t37913 - 19968: jis0208<<14 | 0x25<<7 | 0x09,\n\t37914 - 19968: jis0208<<14 | 0x4E<<7 | 0x1B,\n\t37919 - 19968: jis0212<<14 | 0x44<<7 | 0x3E,\n\t37921 - 19968: jis0208<<14 | 0x4E<<7 | 0x24,\n\t37931 - 19968: jis0208<<14 | 0x4E<<7 | 0x22,\n\t37934 - 19968: jis0212<<14 | 0x44<<7 | 0x3F,\n\t37935 - 19968: jis0212<<14 | 0x44<<7 | 0x40,\n\t37937 - 19968: jis0208<<14 | 0x5B<<7 | 0x2A,\n\t37938 - 19968: jis0212<<14 | 0x44<<7 | 0x42,\n\t37939 - 19968: jis0212<<14 | 0x44<<7 | 0x43,\n\t37940 - 19968: jis0212<<14 | 0x44<<7 | 0x44,\n\t37941 - 19968: jis0208<<14 | 0x4E<<7 | 0x23,\n\t37942 - 19968: jis0208<<14 | 0x4E<<7 | 0x21,\n\t37944 - 19968: jis0208<<14 | 0x21<<7 | 0x57,\n\t37946 - 19968: jis0208<<14 | 0x4E<<7 | 0x25,\n\t37947 - 19968: jis0212<<14 | 0x44<<7 | 0x45,\n\t37949 - 19968: jis0212<<14 | 0x44<<7 | 0x47,\n\t37951 - 19968: jis0212<<14 | 0x44<<7 | 0x46,\n\t37953 - 19968: jis0208<<14 | 0x4E<<7 | 0x26,\n\t37955 - 19968: jis0212<<14 | 0x44<<7 | 0x48,\n\t37956 - 19968: jis0208<<14 | 0x4E<<7 | 0x28,\n\t37957 - 19968: jis0208<<14 | 0x5B<<7 | 0x2B,\n\t37960 - 19968: jis0208<<14 | 0x5B<<7 | 0x2C,\n\t37962 - 19968: jis0212<<14 | 0x44<<7 | 0x4B,\n\t37964 - 19968: jis0212<<14 | 0x44<<7 | 0x4C,\n\t37969 - 19968: jis0208<<14 | 0x13<<7 | 0x34,\n\t37970 - 19968: jis0208<<14 | 0x4E<<7 | 0x27,\n\t37971 - 19968: jis0208<<14 | 0x2B<<7 | 0x59,\n\t37973 - 19968: jis0212<<14 | 0x44<<7 | 0x4D,\n\t37977 - 19968: jis0212<<14 | 0x44<<7 | 0x4E,\n\t37978 - 19968: jis0208<<14 | 0x4E<<7 | 0x33,\n\t37979 - 19968: jis0208<<14 | 0x4E<<7 | 0x29,\n\t37980 - 19968: jis0212<<14 | 0x44<<7 | 0x4F,\n\t37982 - 19968: jis0208<<14 | 0x4E<<7 | 0x2C,\n\t37983 - 19968: jis0212<<14 | 0x44<<7 | 0x50,\n\t37984 - 19968: jis0208<<14 | 0x4E<<7 | 0x2A,\n\t37985 - 19968: jis0212<<14 | 0x44<<7 | 0x51,\n\t37986 - 19968: jis0208<<14 | 0x4E<<7 | 0x2B,\n\t37987 - 19968: jis0212<<14 | 0x44<<7 | 0x52,\n\t37992 - 19968: jis0212<<14 | 0x44<<7 | 0x53,\n\t37994 - 19968: jis0208<<14 | 0x4E<<7 | 0x2D,\n\t37995 - 19968: jis0212<<14 | 0x44<<7 | 0x54,\n\t37997 - 19968: jis0212<<14 | 0x44<<7 | 0x55,\n\t37998 - 19968: jis0212<<14 | 0x44<<7 | 0x56,\n\t37999 - 19968: jis0212<<14 | 0x44<<7 | 0x57,\n\t38000 - 19968: jis0208<<14 | 0x4E<<7 | 0x2F,\n\t38001 - 19968: jis0212<<14 | 0x44<<7 | 0x58,\n\t38002 - 19968: jis0212<<14 | 0x44<<7 | 0x59,\n\t38005 - 19968: jis0208<<14 | 0x4E<<7 | 0x30,\n\t38007 - 19968: jis0208<<14 | 0x4E<<7 | 0x31,\n\t38012 - 19968: jis0208<<14 | 0x4E<<7 | 0x34,\n\t38013 - 19968: jis0208<<14 | 0x4E<<7 | 0x32,\n\t38014 - 19968: jis0208<<14 | 0x4E<<7 | 0x35,\n\t38015 - 19968: jis0208<<14 | 0x4E<<7 | 0x37,\n\t38017 - 19968: jis0208<<14 | 0x4E<<7 | 0x36,\n\t38019 - 19968: jis0212<<14 | 0x44<<7 | 0x5B,\n\t38020 - 19968: jis0212<<14 | 0x44<<7 | 0x5A,\n\t38263 - 19968: jis0208<<14 | 0x23<<7 | 0x18,\n\t38264 - 19968: jis0212<<14 | 0x44<<7 | 0x5C,\n\t38265 - 19968: jis0212<<14 | 0x44<<7 | 0x5D,\n\t38270 - 19968: jis0212<<14 | 0x45<<7 | 0x00,\n\t38272 - 19968: jis0208<<14 | 0x2B<<7 | 0x46,\n\t38274 - 19968: jis0208<<14 | 0x4E<<7 | 0x38,\n\t38275 - 19968: jis0208<<14 | 0x20<<7 | 0x0D,\n\t38276 - 19968: jis0212<<14 | 0x45<<7 | 0x01,\n\t38279 - 19968: jis0208<<14 | 0x4E<<7 | 0x39,\n\t38280 - 19968: jis0212<<14 | 0x45<<7 | 0x02,\n\t38281 - 19968: jis0208<<14 | 0x29<<7 | 0x23,\n\t38282 - 19968: jis0208<<14 | 0x4E<<7 | 0x3A,\n\t38283 - 19968: jis0208<<14 | 0x12<<7 | 0x0A,\n\t38284 - 19968: jis0212<<14 | 0x45<<7 | 0x03,\n\t38285 - 19968: jis0212<<14 | 0x45<<7 | 0x04,\n\t38286 - 19968: jis0212<<14 | 0x45<<7 | 0x05,\n\t38287 - 19968: jis0208<<14 | 0x10<<7 | 0x1B,\n\t38289 - 19968: jis0208<<14 | 0x13<<7 | 0x36,\n\t38290 - 19968: jis0208<<14 | 0x5B<<7 | 0x2D,\n\t38291 - 19968: jis0208<<14 | 0x13<<7 | 0x35,\n\t38292 - 19968: jis0208<<14 | 0x4E<<7 | 0x3B,\n\t38294 - 19968: jis0208<<14 | 0x4E<<7 | 0x3C,\n\t38296 - 19968: jis0208<<14 | 0x4E<<7 | 0x3D,\n\t38297 - 19968: jis0208<<14 | 0x4E<<7 | 0x3E,\n\t38301 - 19968: jis0212<<14 | 0x45<<7 | 0x06,\n\t38302 - 19968: jis0212<<14 | 0x45<<7 | 0x07,\n\t38303 - 19968: jis0212<<14 | 0x45<<7 | 0x08,\n\t38304 - 19968: jis0208<<14 | 0x4E<<7 | 0x3F,\n\t38305 - 19968: jis0212<<14 | 0x45<<7 | 0x09,\n\t38306 - 19968: jis0208<<14 | 0x13<<7 | 0x37,\n\t38307 - 19968: jis0208<<14 | 0x12<<7 | 0x34,\n\t38308 - 19968: jis0208<<14 | 0x18<<7 | 0x3D,\n\t38309 - 19968: jis0208<<14 | 0x27<<7 | 0x15,\n\t38310 - 19968: jis0212<<14 | 0x45<<7 | 0x0A,\n\t38311 - 19968: jis0208<<14 | 0x4E<<7 | 0x41,\n\t38312 - 19968: jis0208<<14 | 0x4E<<7 | 0x40,\n\t38313 - 19968: jis0212<<14 | 0x45<<7 | 0x0B,\n\t38315 - 19968: jis0212<<14 | 0x45<<7 | 0x0C,\n\t38316 - 19968: jis0212<<14 | 0x45<<7 | 0x0D,\n\t38317 - 19968: jis0208<<14 | 0x4E<<7 | 0x42,\n\t38322 - 19968: jis0208<<14 | 0x10<<7 | 0x3B,\n\t38324 - 19968: jis0212<<14 | 0x45<<7 | 0x0E,\n\t38326 - 19968: jis0212<<14 | 0x45<<7 | 0x0F,\n\t38329 - 19968: jis0208<<14 | 0x4E<<7 | 0x45,\n\t38330 - 19968: jis0212<<14 | 0x45<<7 | 0x10,\n\t38331 - 19968: jis0208<<14 | 0x4E<<7 | 0x44,\n\t38332 - 19968: jis0208<<14 | 0x4E<<7 | 0x43,\n\t38333 - 19968: jis0212<<14 | 0x45<<7 | 0x11,\n\t38334 - 19968: jis0208<<14 | 0x4E<<7 | 0x46,\n\t38335 - 19968: jis0212<<14 | 0x45<<7 | 0x12,\n\t38339 - 19968: jis0208<<14 | 0x4E<<7 | 0x49,\n\t38342 - 19968: jis0212<<14 | 0x45<<7 | 0x13,\n\t38343 - 19968: jis0208<<14 | 0x0F<<7 | 0x26,\n\t38344 - 19968: jis0212<<14 | 0x45<<7 | 0x14,\n\t38345 - 19968: jis0212<<14 | 0x45<<7 | 0x15,\n\t38346 - 19968: jis0208<<14 | 0x4E<<7 | 0x47,\n\t38347 - 19968: jis0212<<14 | 0x45<<7 | 0x16,\n\t38348 - 19968: jis0208<<14 | 0x4E<<7 | 0x4B,\n\t38349 - 19968: jis0208<<14 | 0x4E<<7 | 0x4A,\n\t38352 - 19968: jis0212<<14 | 0x45<<7 | 0x17,\n\t38353 - 19968: jis0212<<14 | 0x45<<7 | 0x18,\n\t38354 - 19968: jis0212<<14 | 0x45<<7 | 0x19,\n\t38355 - 19968: jis0212<<14 | 0x45<<7 | 0x1A,\n\t38356 - 19968: jis0208<<14 | 0x4E<<7 | 0x4D,\n\t38357 - 19968: jis0208<<14 | 0x4E<<7 | 0x4C,\n\t38358 - 19968: jis0208<<14 | 0x4E<<7 | 0x4E,\n\t38360 - 19968: jis0208<<14 | 0x25<<7 | 0x0D,\n\t38361 - 19968: jis0212<<14 | 0x45<<7 | 0x1B,\n\t38362 - 19968: jis0212<<14 | 0x45<<7 | 0x1C,\n\t38364 - 19968: jis0208<<14 | 0x4E<<7 | 0x4F,\n\t38365 - 19968: jis0212<<14 | 0x45<<7 | 0x1D,\n\t38366 - 19968: jis0212<<14 | 0x45<<7 | 0x1E,\n\t38367 - 19968: jis0212<<14 | 0x45<<7 | 0x1F,\n\t38368 - 19968: jis0212<<14 | 0x45<<7 | 0x20,\n\t38369 - 19968: jis0208<<14 | 0x4E<<7 | 0x50,\n\t38370 - 19968: jis0208<<14 | 0x4E<<7 | 0x52,\n\t38372 - 19968: jis0212<<14 | 0x45<<7 | 0x21,\n\t38373 - 19968: jis0208<<14 | 0x4E<<7 | 0x51,\n\t38374 - 19968: jis0212<<14 | 0x45<<7 | 0x22,\n\t38428 - 19968: jis0208<<14 | 0x28<<7 | 0x4B,\n\t38429 - 19968: jis0212<<14 | 0x45<<7 | 0x23,\n\t38430 - 19968: jis0212<<14 | 0x45<<7 | 0x24,\n\t38433 - 19968: jis0208<<14 | 0x4E<<7 | 0x53,\n\t38434 - 19968: jis0212<<14 | 0x45<<7 | 0x25,\n\t38436 - 19968: jis0212<<14 | 0x45<<7 | 0x26,\n\t38437 - 19968: jis0212<<14 | 0x45<<7 | 0x27,\n\t38438 - 19968: jis0212<<14 | 0x45<<7 | 0x28,\n\t38440 - 19968: jis0208<<14 | 0x4E<<7 | 0x54,\n\t38442 - 19968: jis0208<<14 | 0x19<<7 | 0x44,\n\t38444 - 19968: jis0212<<14 | 0x45<<7 | 0x29,\n\t38446 - 19968: jis0208<<14 | 0x4E<<7 | 0x55,\n\t38447 - 19968: jis0208<<14 | 0x4E<<7 | 0x56,\n\t38449 - 19968: jis0212<<14 | 0x45<<7 | 0x2A,\n\t38450 - 19968: jis0208<<14 | 0x2A<<7 | 0x28,\n\t38451 - 19968: jis0212<<14 | 0x45<<7 | 0x2B,\n\t38455 - 19968: jis0212<<14 | 0x45<<7 | 0x2C,\n\t38456 - 19968: jis0212<<14 | 0x45<<7 | 0x2D,\n\t38457 - 19968: jis0212<<14 | 0x45<<7 | 0x2E,\n\t38458 - 19968: jis0212<<14 | 0x45<<7 | 0x2F,\n\t38459 - 19968: jis0208<<14 | 0x20<<7 | 0x2A,\n\t38460 - 19968: jis0212<<14 | 0x45<<7 | 0x30,\n\t38461 - 19968: jis0212<<14 | 0x45<<7 | 0x31,\n\t38463 - 19968: jis0208<<14 | 0x0F<<7 | 0x03,\n\t38464 - 19968: jis0208<<14 | 0x21<<7 | 0x2A,\n\t38465 - 19968: jis0212<<14 | 0x45<<7 | 0x32,\n\t38466 - 19968: jis0208<<14 | 0x4E<<7 | 0x57,\n\t38468 - 19968: jis0208<<14 | 0x28<<7 | 0x4C,\n\t38475 - 19968: jis0208<<14 | 0x4E<<7 | 0x5A,\n\t38476 - 19968: jis0208<<14 | 0x4E<<7 | 0x58,\n\t38477 - 19968: jis0208<<14 | 0x18<<7 | 0x3E,\n\t38479 - 19968: jis0208<<14 | 0x4E<<7 | 0x59,\n\t38480 - 19968: jis0208<<14 | 0x17<<7 | 0x21,\n\t38482 - 19968: jis0212<<14 | 0x45<<7 | 0x33,\n\t38484 - 19968: jis0212<<14 | 0x45<<7 | 0x34,\n\t38486 - 19968: jis0212<<14 | 0x45<<7 | 0x35,\n\t38487 - 19968: jis0212<<14 | 0x45<<7 | 0x36,\n\t38488 - 19968: jis0212<<14 | 0x45<<7 | 0x37,\n\t38491 - 19968: jis0208<<14 | 0x29<<7 | 0x24,\n\t38492 - 19968: jis0208<<14 | 0x4E<<7 | 0x5C,\n\t38493 - 19968: jis0208<<14 | 0x4F<<7 | 0x00,\n\t38494 - 19968: jis0208<<14 | 0x4E<<7 | 0x5D,\n\t38495 - 19968: jis0208<<14 | 0x4F<<7 | 0x01,\n\t38497 - 19968: jis0212<<14 | 0x45<<7 | 0x38,\n\t38498 - 19968: jis0208<<14 | 0x10<<7 | 0x00,\n\t38499 - 19968: jis0208<<14 | 0x1E<<7 | 0x37,\n\t38500 - 19968: jis0208<<14 | 0x1C<<7 | 0x5B,\n\t38501 - 19968: jis0208<<14 | 0x13<<7 | 0x38,\n\t38502 - 19968: jis0208<<14 | 0x4F<<7 | 0x02,\n\t38506 - 19968: jis0208<<14 | 0x26<<7 | 0x45,\n\t38508 - 19968: jis0208<<14 | 0x4F<<7 | 0x04,\n\t38510 - 19968: jis0212<<14 | 0x45<<7 | 0x39,\n\t38512 - 19968: jis0208<<14 | 0x10<<7 | 0x01,\n\t38514 - 19968: jis0208<<14 | 0x4F<<7 | 0x03,\n\t38515 - 19968: jis0208<<14 | 0x23<<7 | 0x23,\n\t38516 - 19968: jis0212<<14 | 0x45<<7 | 0x3A,\n\t38517 - 19968: jis0208<<14 | 0x2D<<7 | 0x2C,\n\t38518 - 19968: jis0208<<14 | 0x25<<7 | 0x0A,\n\t38519 - 19968: jis0208<<14 | 0x4E<<7 | 0x5B,\n\t38520 - 19968: jis0208<<14 | 0x2D<<7 | 0x05,\n\t38522 - 19968: jis0208<<14 | 0x17<<7 | 0x10,\n\t38523 - 19968: jis0212<<14 | 0x45<<7 | 0x3B,\n\t38524 - 19968: jis0212<<14 | 0x45<<7 | 0x3C,\n\t38525 - 19968: jis0208<<14 | 0x2C<<7 | 0x3A,\n\t38526 - 19968: jis0212<<14 | 0x45<<7 | 0x3D,\n\t38527 - 19968: jis0212<<14 | 0x45<<7 | 0x3E,\n\t38529 - 19968: jis0212<<14 | 0x45<<7 | 0x3F,\n\t38530 - 19968: jis0212<<14 | 0x45<<7 | 0x40,\n\t38531 - 19968: jis0212<<14 | 0x45<<7 | 0x41,\n\t38532 - 19968: jis0212<<14 | 0x45<<7 | 0x42,\n\t38533 - 19968: jis0208<<14 | 0x15<<7 | 0x58,\n\t38534 - 19968: jis0208<<14 | 0x2D<<7 | 0x13,\n\t38536 - 19968: jis0208<<14 | 0x16<<7 | 0x07,\n\t38537 - 19968: jis0212<<14 | 0x45<<7 | 0x43,\n\t38538 - 19968: jis0208<<14 | 0x21<<7 | 0x41,\n\t38539 - 19968: jis0208<<14 | 0x46<<7 | 0x00,\n\t38541 - 19968: jis0208<<14 | 0x4F<<7 | 0x05,\n\t38542 - 19968: jis0208<<14 | 0x12<<7 | 0x0B,\n\t38543 - 19968: jis0208<<14 | 0x1E<<7 | 0x4E,\n\t38545 - 19968: jis0212<<14 | 0x45<<7 | 0x44,\n\t38548 - 19968: jis0208<<14 | 0x12<<7 | 0x35,\n\t38549 - 19968: jis0208<<14 | 0x4F<<7 | 0x07,\n\t38550 - 19968: jis0212<<14 | 0x45<<7 | 0x45,\n\t38551 - 19968: jis0208<<14 | 0x4F<<7 | 0x08,\n\t38552 - 19968: jis0208<<14 | 0x4F<<7 | 0x06,\n\t38553 - 19968: jis0208<<14 | 0x16<<7 | 0x43,\n\t38554 - 19968: jis0212<<14 | 0x45<<7 | 0x46,\n\t38555 - 19968: jis0208<<14 | 0x19<<7 | 0x3C,\n\t38556 - 19968: jis0208<<14 | 0x1D<<7 | 0x42,\n\t38557 - 19968: jis0208<<14 | 0x5B<<7 | 0x30,\n\t38559 - 19968: jis0212<<14 | 0x45<<7 | 0x48,\n\t38560 - 19968: jis0208<<14 | 0x10<<7 | 0x02,\n\t38563 - 19968: jis0208<<14 | 0x2D<<7 | 0x38,\n\t38564 - 19968: jis0212<<14 | 0x45<<7 | 0x49,\n\t38565 - 19968: jis0212<<14 | 0x45<<7 | 0x4A,\n\t38566 - 19968: jis0212<<14 | 0x45<<7 | 0x4B,\n\t38567 - 19968: jis0208<<14 | 0x4F<<7 | 0x0A,\n\t38568 - 19968: jis0208<<14 | 0x4D<<7 | 0x0D,\n\t38569 - 19968: jis0212<<14 | 0x45<<7 | 0x4C,\n\t38570 - 19968: jis0208<<14 | 0x4F<<7 | 0x09,\n\t38574 - 19968: jis0212<<14 | 0x45<<7 | 0x4D,\n\t38575 - 19968: jis0208<<14 | 0x5B<<7 | 0x31,\n\t38576 - 19968: jis0208<<14 | 0x4F<<7 | 0x0D,\n\t38577 - 19968: jis0208<<14 | 0x4F<<7 | 0x0B,\n\t38578 - 19968: jis0208<<14 | 0x4F<<7 | 0x0C,\n\t38579 - 19968: jis0212<<14 | 0x45<<7 | 0x4F,\n\t38580 - 19968: jis0208<<14 | 0x4F<<7 | 0x0E,\n\t38582 - 19968: jis0208<<14 | 0x4F<<7 | 0x0F,\n\t38583 - 19968: jis0208<<14 | 0x2D<<7 | 0x4B,\n\t38584 - 19968: jis0208<<14 | 0x4F<<7 | 0x10,\n\t38585 - 19968: jis0208<<14 | 0x4F<<7 | 0x11,\n\t38586 - 19968: jis0212<<14 | 0x45<<7 | 0x50,\n\t38587 - 19968: jis0208<<14 | 0x1F<<7 | 0x28,\n\t38588 - 19968: jis0208<<14 | 0x27<<7 | 0x1A,\n\t38592 - 19968: jis0208<<14 | 0x1E<<7 | 0x5C,\n\t38593 - 19968: jis0208<<14 | 0x13<<7 | 0x46,\n\t38596 - 19968: jis0208<<14 | 0x2C<<7 | 0x19,\n\t38597 - 19968: jis0208<<14 | 0x11<<7 | 0x4C,\n\t38598 - 19968: jis0208<<14 | 0x1C<<7 | 0x17,\n\t38599 - 19968: jis0208<<14 | 0x17<<7 | 0x3A,\n\t38601 - 19968: jis0208<<14 | 0x4F<<7 | 0x14,\n\t38602 - 19968: jis0212<<14 | 0x45<<7 | 0x51,\n\t38603 - 19968: jis0208<<14 | 0x4F<<7 | 0x13,\n\t38604 - 19968: jis0208<<14 | 0x1A<<7 | 0x52,\n\t38605 - 19968: jis0208<<14 | 0x4F<<7 | 0x15,\n\t38606 - 19968: jis0208<<14 | 0x4F<<7 | 0x12,\n\t38609 - 19968: jis0208<<14 | 0x1A<<7 | 0x07,\n\t38610 - 19968: jis0212<<14 | 0x45<<7 | 0x52,\n\t38613 - 19968: jis0208<<14 | 0x4F<<7 | 0x19,\n\t38614 - 19968: jis0208<<14 | 0x49<<7 | 0x0C,\n\t38616 - 19968: jis0212<<14 | 0x45<<7 | 0x54,\n\t38617 - 19968: jis0208<<14 | 0x31<<7 | 0x35,\n\t38618 - 19968: jis0212<<14 | 0x45<<7 | 0x55,\n\t38619 - 19968: jis0208<<14 | 0x1E<<7 | 0x56,\n\t38620 - 19968: jis0208<<14 | 0x4F<<7 | 0x17,\n\t38621 - 19968: jis0212<<14 | 0x45<<7 | 0x56,\n\t38622 - 19968: jis0212<<14 | 0x45<<7 | 0x57,\n\t38623 - 19968: jis0212<<14 | 0x45<<7 | 0x58,\n\t38626 - 19968: jis0208<<14 | 0x2D<<7 | 0x04,\n\t38627 - 19968: jis0208<<14 | 0x25<<7 | 0x50,\n\t38632 - 19968: jis0208<<14 | 0x10<<7 | 0x0A,\n\t38633 - 19968: jis0212<<14 | 0x45<<7 | 0x59,\n\t38634 - 19968: jis0208<<14 | 0x1F<<7 | 0x42,\n\t38635 - 19968: jis0208<<14 | 0x1B<<7 | 0x15,\n\t38639 - 19968: jis0212<<14 | 0x45<<7 | 0x5A,\n\t38640 - 19968: jis0208<<14 | 0x29<<7 | 0x16,\n\t38641 - 19968: jis0212<<14 | 0x45<<7 | 0x5B,\n\t38642 - 19968: jis0208<<14 | 0x10<<7 | 0x1F,\n\t38646 - 19968: jis0208<<14 | 0x2D<<7 | 0x4C,\n\t38647 - 19968: jis0208<<14 | 0x2C<<7 | 0x4A,\n\t38649 - 19968: jis0208<<14 | 0x4F<<7 | 0x1A,\n\t38650 - 19968: jis0212<<14 | 0x45<<7 | 0x5C,\n\t38651 - 19968: jis0208<<14 | 0x24<<7 | 0x24,\n\t38656 - 19968: jis0208<<14 | 0x1B<<7 | 0x5A,\n\t38658 - 19968: jis0212<<14 | 0x45<<7 | 0x5D,\n\t38659 - 19968: jis0212<<14 | 0x46<<7 | 0x00,\n\t38660 - 19968: jis0208<<14 | 0x4F<<7 | 0x1B,\n\t38661 - 19968: jis0212<<14 | 0x46<<7 | 0x01,\n\t38662 - 19968: jis0208<<14 | 0x4F<<7 | 0x1C,\n\t38663 - 19968: jis0208<<14 | 0x1E<<7 | 0x2B,\n\t38664 - 19968: jis0208<<14 | 0x4F<<7 | 0x1D,\n\t38665 - 19968: jis0212<<14 | 0x46<<7 | 0x02,\n\t38666 - 19968: jis0208<<14 | 0x2D<<7 | 0x4D,\n\t38669 - 19968: jis0208<<14 | 0x4F<<7 | 0x18,\n\t38670 - 19968: jis0208<<14 | 0x4F<<7 | 0x1F,\n\t38671 - 19968: jis0208<<14 | 0x4F<<7 | 0x21,\n\t38673 - 19968: jis0208<<14 | 0x4F<<7 | 0x20,\n\t38675 - 19968: jis0208<<14 | 0x4F<<7 | 0x1E,\n\t38678 - 19968: jis0208<<14 | 0x4F<<7 | 0x22,\n\t38681 - 19968: jis0208<<14 | 0x4F<<7 | 0x23,\n\t38682 - 19968: jis0212<<14 | 0x46<<7 | 0x03,\n\t38683 - 19968: jis0212<<14 | 0x46<<7 | 0x04,\n\t38684 - 19968: jis0208<<14 | 0x20<<7 | 0x59,\n\t38685 - 19968: jis0212<<14 | 0x46<<7 | 0x05,\n\t38686 - 19968: jis0208<<14 | 0x11<<7 | 0x41,\n\t38689 - 19968: jis0212<<14 | 0x46<<7 | 0x06,\n\t38690 - 19968: jis0212<<14 | 0x46<<7 | 0x07,\n\t38691 - 19968: jis0212<<14 | 0x46<<7 | 0x08,\n\t38692 - 19968: jis0208<<14 | 0x4F<<7 | 0x24,\n\t38695 - 19968: jis0208<<14 | 0x2B<<7 | 0x17,\n\t38696 - 19968: jis0212<<14 | 0x46<<7 | 0x09,\n\t38698 - 19968: jis0208<<14 | 0x4F<<7 | 0x25,\n\t38704 - 19968: jis0208<<14 | 0x4F<<7 | 0x26,\n\t38705 - 19968: jis0212<<14 | 0x46<<7 | 0x0A,\n\t38706 - 19968: jis0208<<14 | 0x2E<<7 | 0x09,\n\t38707 - 19968: jis0208<<14 | 0x5B<<7 | 0x32,\n\t38712 - 19968: jis0208<<14 | 0x3A<<7 | 0x10,\n\t38713 - 19968: jis0208<<14 | 0x4F<<7 | 0x27,\n\t38715 - 19968: jis0208<<14 | 0x5B<<7 | 0x33,\n\t38717 - 19968: jis0208<<14 | 0x4F<<7 | 0x28,\n\t38718 - 19968: jis0208<<14 | 0x4F<<7 | 0x29,\n\t38721 - 19968: jis0212<<14 | 0x46<<7 | 0x0C,\n\t38722 - 19968: jis0208<<14 | 0x4F<<7 | 0x2D,\n\t38723 - 19968: jis0208<<14 | 0x5B<<7 | 0x34,\n\t38724 - 19968: jis0208<<14 | 0x4F<<7 | 0x2A,\n\t38726 - 19968: jis0208<<14 | 0x4F<<7 | 0x2B,\n\t38728 - 19968: jis0208<<14 | 0x4F<<7 | 0x2C,\n\t38729 - 19968: jis0208<<14 | 0x4F<<7 | 0x2E,\n\t38730 - 19968: jis0212<<14 | 0x46<<7 | 0x0E,\n\t38733 - 19968: jis0208<<14 | 0x5B<<7 | 0x35,\n\t38734 - 19968: jis0212<<14 | 0x46<<7 | 0x0F,\n\t38735 - 19968: jis0208<<14 | 0x5B<<7 | 0x36,\n\t38737 - 19968: jis0208<<14 | 0x5B<<7 | 0x37,\n\t38738 - 19968: jis0208<<14 | 0x1F<<7 | 0x23,\n\t38741 - 19968: jis0208<<14 | 0x5B<<7 | 0x38,\n\t38742 - 19968: jis0208<<14 | 0x2B<<7 | 0x56,\n\t38743 - 19968: jis0212<<14 | 0x46<<7 | 0x12,\n\t38744 - 19968: jis0212<<14 | 0x46<<7 | 0x13,\n\t38745 - 19968: jis0208<<14 | 0x1F<<7 | 0x24,\n\t38746 - 19968: jis0212<<14 | 0x46<<7 | 0x14,\n\t38747 - 19968: jis0212<<14 | 0x46<<7 | 0x15,\n\t38748 - 19968: jis0208<<14 | 0x4F<<7 | 0x2F,\n\t38750 - 19968: jis0208<<14 | 0x27<<7 | 0x52,\n\t38752 - 19968: jis0208<<14 | 0x4F<<7 | 0x30,\n\t38753 - 19968: jis0208<<14 | 0x52<<7 | 0x32,\n\t38754 - 19968: jis0208<<14 | 0x2B<<7 | 0x2B,\n\t38755 - 19968: jis0212<<14 | 0x46<<7 | 0x16,\n\t38756 - 19968: jis0208<<14 | 0x4F<<7 | 0x31,\n\t38758 - 19968: jis0208<<14 | 0x4F<<7 | 0x32,\n\t38759 - 19968: jis0212<<14 | 0x46<<7 | 0x17,\n\t38760 - 19968: jis0208<<14 | 0x4F<<7 | 0x33,\n\t38761 - 19968: jis0208<<14 | 0x12<<7 | 0x36,\n\t38762 - 19968: jis0212<<14 | 0x46<<7 | 0x18,\n\t38763 - 19968: jis0208<<14 | 0x4F<<7 | 0x35,\n\t38765 - 19968: jis0208<<14 | 0x1E<<7 | 0x38,\n\t38766 - 19968: jis0212<<14 | 0x46<<7 | 0x19,\n\t38769 - 19968: jis0208<<14 | 0x4F<<7 | 0x36,\n\t38771 - 19968: jis0212<<14 | 0x46<<7 | 0x1A,\n\t38772 - 19968: jis0208<<14 | 0x16<<7 | 0x03,\n\t38774 - 19968: jis0212<<14 | 0x46<<7 | 0x1B,\n\t38775 - 19968: jis0212<<14 | 0x46<<7 | 0x1C,\n\t38776 - 19968: jis0212<<14 | 0x46<<7 | 0x1D,\n\t38777 - 19968: jis0208<<14 | 0x4F<<7 | 0x37,\n\t38778 - 19968: jis0208<<14 | 0x4F<<7 | 0x3B,\n\t38779 - 19968: jis0212<<14 | 0x46<<7 | 0x1E,\n\t38780 - 19968: jis0208<<14 | 0x4F<<7 | 0x39,\n\t38781 - 19968: jis0212<<14 | 0x46<<7 | 0x1F,\n\t38783 - 19968: jis0212<<14 | 0x46<<7 | 0x20,\n\t38784 - 19968: jis0212<<14 | 0x46<<7 | 0x21,\n\t38785 - 19968: jis0208<<14 | 0x4F<<7 | 0x3A,\n\t38788 - 19968: jis0208<<14 | 0x12<<7 | 0x52,\n\t38789 - 19968: jis0208<<14 | 0x4F<<7 | 0x38,\n\t38790 - 19968: jis0208<<14 | 0x4F<<7 | 0x3C,\n\t38793 - 19968: jis0212<<14 | 0x46<<7 | 0x22,\n\t38795 - 19968: jis0208<<14 | 0x4F<<7 | 0x3D,\n\t38797 - 19968: jis0208<<14 | 0x0F<<7 | 0x27,\n\t38799 - 19968: jis0208<<14 | 0x4F<<7 | 0x3E,\n\t38800 - 19968: jis0208<<14 | 0x4F<<7 | 0x3F,\n\t38805 - 19968: jis0212<<14 | 0x46<<7 | 0x23,\n\t38806 - 19968: jis0212<<14 | 0x46<<7 | 0x24,\n\t38807 - 19968: jis0212<<14 | 0x46<<7 | 0x25,\n\t38808 - 19968: jis0208<<14 | 0x1D<<7 | 0x43,\n\t38809 - 19968: jis0212<<14 | 0x46<<7 | 0x26,\n\t38810 - 19968: jis0212<<14 | 0x46<<7 | 0x27,\n\t38812 - 19968: jis0208<<14 | 0x4F<<7 | 0x40,\n\t38814 - 19968: jis0212<<14 | 0x46<<7 | 0x28,\n\t38815 - 19968: jis0212<<14 | 0x46<<7 | 0x29,\n\t38816 - 19968: jis0208<<14 | 0x14<<7 | 0x26,\n\t38818 - 19968: jis0212<<14 | 0x46<<7 | 0x2A,\n\t38819 - 19968: jis0208<<14 | 0x4F<<7 | 0x43,\n\t38822 - 19968: jis0208<<14 | 0x4F<<7 | 0x42,\n\t38824 - 19968: jis0208<<14 | 0x4F<<7 | 0x41,\n\t38827 - 19968: jis0208<<14 | 0x4A<<7 | 0x50,\n\t38828 - 19968: jis0212<<14 | 0x46<<7 | 0x2B,\n\t38829 - 19968: jis0208<<14 | 0x29<<7 | 0x3B,\n\t38830 - 19968: jis0212<<14 | 0x46<<7 | 0x2C,\n\t38833 - 19968: jis0212<<14 | 0x46<<7 | 0x2D,\n\t38834 - 19968: jis0212<<14 | 0x46<<7 | 0x2E,\n\t38835 - 19968: jis0208<<14 | 0x4F<<7 | 0x44,\n\t38836 - 19968: jis0208<<14 | 0x4F<<7 | 0x45,\n\t38837 - 19968: jis0212<<14 | 0x46<<7 | 0x2F,\n\t38838 - 19968: jis0212<<14 | 0x46<<7 | 0x30,\n\t38840 - 19968: jis0212<<14 | 0x46<<7 | 0x31,\n\t38841 - 19968: jis0212<<14 | 0x46<<7 | 0x32,\n\t38842 - 19968: jis0212<<14 | 0x46<<7 | 0x33,\n\t38844 - 19968: jis0212<<14 | 0x46<<7 | 0x34,\n\t38846 - 19968: jis0212<<14 | 0x46<<7 | 0x35,\n\t38847 - 19968: jis0212<<14 | 0x46<<7 | 0x36,\n\t38849 - 19968: jis0212<<14 | 0x46<<7 | 0x37,\n\t38851 - 19968: jis0208<<14 | 0x4F<<7 | 0x46,\n\t38852 - 19968: jis0212<<14 | 0x46<<7 | 0x38,\n\t38853 - 19968: jis0212<<14 | 0x46<<7 | 0x39,\n\t38854 - 19968: jis0208<<14 | 0x4F<<7 | 0x47,\n\t38855 - 19968: jis0212<<14 | 0x46<<7 | 0x3A,\n\t38856 - 19968: jis0208<<14 | 0x4F<<7 | 0x48,\n\t38857 - 19968: jis0212<<14 | 0x46<<7 | 0x3B,\n\t38858 - 19968: jis0212<<14 | 0x46<<7 | 0x3C,\n\t38859 - 19968: jis0208<<14 | 0x4F<<7 | 0x49,\n\t38860 - 19968: jis0212<<14 | 0x46<<7 | 0x3D,\n\t38861 - 19968: jis0212<<14 | 0x46<<7 | 0x3E,\n\t38862 - 19968: jis0212<<14 | 0x46<<7 | 0x3F,\n\t38864 - 19968: jis0212<<14 | 0x46<<7 | 0x40,\n\t38865 - 19968: jis0212<<14 | 0x46<<7 | 0x41,\n\t38867 - 19968: jis0208<<14 | 0x13<<7 | 0x39,\n\t38868 - 19968: jis0212<<14 | 0x46<<7 | 0x42,\n\t38871 - 19968: jis0212<<14 | 0x46<<7 | 0x43,\n\t38872 - 19968: jis0212<<14 | 0x46<<7 | 0x44,\n\t38873 - 19968: jis0212<<14 | 0x46<<7 | 0x45,\n\t38875 - 19968: jis0212<<14 | 0x46<<7 | 0x49,\n\t38876 - 19968: jis0208<<14 | 0x4F<<7 | 0x4A,\n\t38877 - 19968: jis0212<<14 | 0x46<<7 | 0x46,\n\t38878 - 19968: jis0212<<14 | 0x46<<7 | 0x47,\n\t38880 - 19968: jis0212<<14 | 0x46<<7 | 0x48,\n\t38881 - 19968: jis0212<<14 | 0x46<<7 | 0x4A,\n\t38884 - 19968: jis0212<<14 | 0x46<<7 | 0x4B,\n\t38893 - 19968: jis0208<<14 | 0x4F<<7 | 0x4B,\n\t38894 - 19968: jis0208<<14 | 0x26<<7 | 0x02,\n\t38895 - 19968: jis0212<<14 | 0x46<<7 | 0x4C,\n\t38897 - 19968: jis0212<<14 | 0x46<<7 | 0x4D,\n\t38898 - 19968: jis0208<<14 | 0x4F<<7 | 0x4D,\n\t38899 - 19968: jis0208<<14 | 0x11<<7 | 0x1A,\n\t38900 - 19968: jis0212<<14 | 0x46<<7 | 0x4E,\n\t38901 - 19968: jis0208<<14 | 0x4F<<7 | 0x50,\n\t38902 - 19968: jis0208<<14 | 0x4F<<7 | 0x4F,\n\t38903 - 19968: jis0212<<14 | 0x46<<7 | 0x4F,\n\t38904 - 19968: jis0212<<14 | 0x46<<7 | 0x50,\n\t38906 - 19968: jis0212<<14 | 0x46<<7 | 0x51,\n\t38907 - 19968: jis0208<<14 | 0x10<<7 | 0x03,\n\t38911 - 19968: jis0208<<14 | 0x15<<7 | 0x20,\n\t38913 - 19968: jis0208<<14 | 0x29<<7 | 0x26,\n\t38914 - 19968: jis0208<<14 | 0x23<<7 | 0x19,\n\t38915 - 19968: jis0208<<14 | 0x19<<7 | 0x01,\n\t38917 - 19968: jis0208<<14 | 0x18<<7 | 0x3F,\n\t38918 - 19968: jis0208<<14 | 0x1C<<7 | 0x46,\n\t38919 - 19968: jis0212<<14 | 0x46<<7 | 0x52,\n\t38920 - 19968: jis0208<<14 | 0x1E<<7 | 0x3B,\n\t38922 - 19968: jis0212<<14 | 0x46<<7 | 0x53,\n\t38924 - 19968: jis0208<<14 | 0x4F<<7 | 0x52,\n\t38925 - 19968: jis0212<<14 | 0x46<<7 | 0x55,\n\t38926 - 19968: jis0212<<14 | 0x46<<7 | 0x56,\n\t38927 - 19968: jis0208<<14 | 0x4F<<7 | 0x51,\n\t38928 - 19968: jis0208<<14 | 0x2C<<7 | 0x21,\n\t38929 - 19968: jis0208<<14 | 0x13<<7 | 0x47,\n\t38930 - 19968: jis0208<<14 | 0x27<<7 | 0x31,\n\t38931 - 19968: jis0208<<14 | 0x25<<7 | 0x3B,\n\t38932 - 19968: jis0212<<14 | 0x46<<7 | 0x57,\n\t38934 - 19968: jis0212<<14 | 0x46<<7 | 0x58,\n\t38935 - 19968: jis0208<<14 | 0x1E<<7 | 0x5B,\n\t38936 - 19968: jis0208<<14 | 0x2D<<7 | 0x2D,\n\t38937 - 19968: jis0212<<14 | 0x46<<7 | 0x54,\n\t38938 - 19968: jis0208<<14 | 0x16<<7 | 0x3A,\n\t38940 - 19968: jis0212<<14 | 0x46<<7 | 0x59,\n\t38942 - 19968: jis0212<<14 | 0x46<<7 | 0x5A,\n\t38944 - 19968: jis0212<<14 | 0x46<<7 | 0x5B,\n\t38945 - 19968: jis0208<<14 | 0x4F<<7 | 0x55,\n\t38947 - 19968: jis0212<<14 | 0x46<<7 | 0x5C,\n\t38948 - 19968: jis0208<<14 | 0x4F<<7 | 0x54,\n\t38949 - 19968: jis0212<<14 | 0x47<<7 | 0x07,\n\t38950 - 19968: jis0212<<14 | 0x46<<7 | 0x5D,\n\t38955 - 19968: jis0212<<14 | 0x47<<7 | 0x00,\n\t38956 - 19968: jis0208<<14 | 0x2A<<7 | 0x2A,\n\t38957 - 19968: jis0208<<14 | 0x25<<7 | 0x0B,\n\t38958 - 19968: jis0212<<14 | 0x47<<7 | 0x01,\n\t38959 - 19968: jis0212<<14 | 0x47<<7 | 0x02,\n\t38960 - 19968: jis0212<<14 | 0x47<<7 | 0x03,\n\t38962 - 19968: jis0212<<14 | 0x47<<7 | 0x04,\n\t38963 - 19968: jis0212<<14 | 0x47<<7 | 0x05,\n\t38964 - 19968: jis0208<<14 | 0x10<<7 | 0x2F,\n\t38965 - 19968: jis0212<<14 | 0x47<<7 | 0x06,\n\t38967 - 19968: jis0208<<14 | 0x4F<<7 | 0x56,\n\t38968 - 19968: jis0208<<14 | 0x4F<<7 | 0x53,\n\t38971 - 19968: jis0208<<14 | 0x28<<7 | 0x30,\n\t38972 - 19968: jis0208<<14 | 0x2C<<7 | 0x49,\n\t38973 - 19968: jis0208<<14 | 0x4F<<7 | 0x57,\n\t38974 - 19968: jis0212<<14 | 0x47<<7 | 0x08,\n\t38980 - 19968: jis0212<<14 | 0x47<<7 | 0x09,\n\t38982 - 19968: jis0208<<14 | 0x4F<<7 | 0x58,\n\t38983 - 19968: jis0212<<14 | 0x47<<7 | 0x0A,\n\t38986 - 19968: jis0212<<14 | 0x47<<7 | 0x0B,\n\t38987 - 19968: jis0208<<14 | 0x4F<<7 | 0x5A,\n\t38988 - 19968: jis0208<<14 | 0x21<<7 | 0x49,\n\t38989 - 19968: jis0208<<14 | 0x12<<7 | 0x3A,\n\t38990 - 19968: jis0208<<14 | 0x12<<7 | 0x3B,\n\t38991 - 19968: jis0208<<14 | 0x4F<<7 | 0x59,\n\t38993 - 19968: jis0212<<14 | 0x47<<7 | 0x0C,\n\t38994 - 19968: jis0212<<14 | 0x47<<7 | 0x0D,\n\t38995 - 19968: jis0212<<14 | 0x47<<7 | 0x0E,\n\t38996 - 19968: jis0208<<14 | 0x13<<7 | 0x48,\n\t38997 - 19968: jis0208<<14 | 0x17<<7 | 0x11,\n\t38998 - 19968: jis0212<<14 | 0x47<<7 | 0x0F,\n\t38999 - 19968: jis0208<<14 | 0x5B<<7 | 0x39,\n\t39000 - 19968: jis0208<<14 | 0x13<<7 | 0x49,\n\t39001 - 19968: jis0212<<14 | 0x47<<7 | 0x11,\n\t39002 - 19968: jis0212<<14 | 0x47<<7 | 0x12,\n\t39003 - 19968: jis0208<<14 | 0x24<<7 | 0x1E,\n\t39006 - 19968: jis0208<<14 | 0x2D<<7 | 0x3F,\n\t39010 - 19968: jis0212<<14 | 0x47<<7 | 0x13,\n\t39011 - 19968: jis0212<<14 | 0x47<<7 | 0x14,\n\t39013 - 19968: jis0208<<14 | 0x5B<<7 | 0x3A,\n\t39014 - 19968: jis0212<<14 | 0x47<<7 | 0x16,\n\t39015 - 19968: jis0208<<14 | 0x17<<7 | 0x3B,\n\t39018 - 19968: jis0212<<14 | 0x47<<7 | 0x17,\n\t39019 - 19968: jis0208<<14 | 0x4F<<7 | 0x5B,\n\t39020 - 19968: jis0212<<14 | 0x47<<7 | 0x18,\n\t39023 - 19968: jis0208<<14 | 0x4F<<7 | 0x5C,\n\t39024 - 19968: jis0208<<14 | 0x4F<<7 | 0x5D,\n\t39025 - 19968: jis0208<<14 | 0x50<<7 | 0x00,\n\t39027 - 19968: jis0208<<14 | 0x50<<7 | 0x02,\n\t39028 - 19968: jis0208<<14 | 0x50<<7 | 0x01,\n\t39080 - 19968: jis0208<<14 | 0x28<<7 | 0x56,\n\t39082 - 19968: jis0208<<14 | 0x50<<7 | 0x03,\n\t39083 - 19968: jis0212<<14 | 0x47<<7 | 0x19,\n\t39085 - 19968: jis0212<<14 | 0x47<<7 | 0x1A,\n\t39086 - 19968: jis0212<<14 | 0x47<<7 | 0x1B,\n\t39087 - 19968: jis0208<<14 | 0x50<<7 | 0x04,\n\t39088 - 19968: jis0212<<14 | 0x47<<7 | 0x1C,\n\t39089 - 19968: jis0208<<14 | 0x50<<7 | 0x05,\n\t39092 - 19968: jis0212<<14 | 0x47<<7 | 0x1D,\n\t39094 - 19968: jis0208<<14 | 0x50<<7 | 0x06,\n\t39095 - 19968: jis0212<<14 | 0x47<<7 | 0x1E,\n\t39096 - 19968: jis0212<<14 | 0x47<<7 | 0x1F,\n\t39098 - 19968: jis0212<<14 | 0x47<<7 | 0x20,\n\t39099 - 19968: jis0212<<14 | 0x47<<7 | 0x21,\n\t39103 - 19968: jis0212<<14 | 0x47<<7 | 0x22,\n\t39106 - 19968: jis0212<<14 | 0x47<<7 | 0x23,\n\t39107 - 19968: jis0208<<14 | 0x50<<7 | 0x08,\n\t39108 - 19968: jis0208<<14 | 0x50<<7 | 0x07,\n\t39109 - 19968: jis0212<<14 | 0x47<<7 | 0x24,\n\t39110 - 19968: jis0208<<14 | 0x50<<7 | 0x09,\n\t39112 - 19968: jis0212<<14 | 0x47<<7 | 0x25,\n\t39116 - 19968: jis0212<<14 | 0x47<<7 | 0x26,\n\t39131 - 19968: jis0208<<14 | 0x27<<7 | 0x53,\n\t39132 - 19968: jis0208<<14 | 0x45<<7 | 0x2B,\n\t39135 - 19968: jis0208<<14 | 0x1E<<7 | 0x08,\n\t39137 - 19968: jis0212<<14 | 0x47<<7 | 0x27,\n\t39138 - 19968: jis0208<<14 | 0x14<<7 | 0x11,\n\t39139 - 19968: jis0212<<14 | 0x47<<7 | 0x28,\n\t39141 - 19968: jis0212<<14 | 0x47<<7 | 0x29,\n\t39142 - 19968: jis0212<<14 | 0x47<<7 | 0x2A,\n\t39143 - 19968: jis0212<<14 | 0x47<<7 | 0x2B,\n\t39145 - 19968: jis0208<<14 | 0x50<<7 | 0x0A,\n\t39146 - 19968: jis0212<<14 | 0x47<<7 | 0x2C,\n\t39147 - 19968: jis0208<<14 | 0x50<<7 | 0x0B,\n\t39149 - 19968: jis0208<<14 | 0x31<<7 | 0x0B,\n\t39150 - 19968: jis0208<<14 | 0x3C<<7 | 0x1A,\n\t39151 - 19968: jis0208<<14 | 0x27<<7 | 0x32,\n\t39154 - 19968: jis0208<<14 | 0x0F<<7 | 0x5A,\n\t39155 - 19968: jis0212<<14 | 0x47<<7 | 0x2D,\n\t39156 - 19968: jis0208<<14 | 0x0F<<7 | 0x1A,\n\t39158 - 19968: jis0212<<14 | 0x47<<7 | 0x2E,\n\t39164 - 19968: jis0208<<14 | 0x1A<<7 | 0x53,\n\t39165 - 19968: jis0208<<14 | 0x2A<<7 | 0x0F,\n\t39166 - 19968: jis0208<<14 | 0x1D<<7 | 0x5D,\n\t39170 - 19968: jis0212<<14 | 0x47<<7 | 0x2F,\n\t39171 - 19968: jis0208<<14 | 0x50<<7 | 0x0C,\n\t39173 - 19968: jis0208<<14 | 0x2B<<7 | 0x3E,\n\t39175 - 19968: jis0212<<14 | 0x47<<7 | 0x30,\n\t39176 - 19968: jis0212<<14 | 0x47<<7 | 0x31,\n\t39177 - 19968: jis0208<<14 | 0x50<<7 | 0x0D,\n\t39178 - 19968: jis0208<<14 | 0x2C<<7 | 0x3B,\n\t39180 - 19968: jis0208<<14 | 0x10<<7 | 0x21,\n\t39184 - 19968: jis0208<<14 | 0x1A<<7 | 0x20,\n\t39185 - 19968: jis0212<<14 | 0x47<<7 | 0x32,\n\t39186 - 19968: jis0208<<14 | 0x50<<7 | 0x0E,\n\t39187 - 19968: jis0208<<14 | 0x11<<7 | 0x4D,\n\t39188 - 19968: jis0208<<14 | 0x50<<7 | 0x0F,\n\t39189 - 19968: jis0212<<14 | 0x47<<7 | 0x33,\n\t39190 - 19968: jis0212<<14 | 0x47<<7 | 0x34,\n\t39191 - 19968: jis0212<<14 | 0x47<<7 | 0x35,\n\t39192 - 19968: jis0208<<14 | 0x50<<7 | 0x10,\n\t39194 - 19968: jis0212<<14 | 0x47<<7 | 0x36,\n\t39195 - 19968: jis0212<<14 | 0x47<<7 | 0x37,\n\t39196 - 19968: jis0212<<14 | 0x47<<7 | 0x38,\n\t39197 - 19968: jis0208<<14 | 0x50<<7 | 0x12,\n\t39198 - 19968: jis0208<<14 | 0x50<<7 | 0x13,\n\t39199 - 19968: jis0212<<14 | 0x47<<7 | 0x39,\n\t39200 - 19968: jis0208<<14 | 0x50<<7 | 0x15,\n\t39201 - 19968: jis0208<<14 | 0x50<<7 | 0x11,\n\t39202 - 19968: jis0212<<14 | 0x47<<7 | 0x3A,\n\t39204 - 19968: jis0208<<14 | 0x50<<7 | 0x14,\n\t39206 - 19968: jis0212<<14 | 0x47<<7 | 0x3B,\n\t39207 - 19968: jis0208<<14 | 0x5B<<7 | 0x3D,\n\t39208 - 19968: jis0208<<14 | 0x13<<7 | 0x3A,\n\t39211 - 19968: jis0212<<14 | 0x47<<7 | 0x3D,\n\t39212 - 19968: jis0208<<14 | 0x50<<7 | 0x16,\n\t39214 - 19968: jis0208<<14 | 0x50<<7 | 0x17,\n\t39217 - 19968: jis0212<<14 | 0x47<<7 | 0x3E,\n\t39218 - 19968: jis0212<<14 | 0x47<<7 | 0x3F,\n\t39219 - 19968: jis0212<<14 | 0x47<<7 | 0x40,\n\t39220 - 19968: jis0212<<14 | 0x47<<7 | 0x41,\n\t39221 - 19968: jis0212<<14 | 0x47<<7 | 0x42,\n\t39225 - 19968: jis0212<<14 | 0x47<<7 | 0x43,\n\t39226 - 19968: jis0212<<14 | 0x47<<7 | 0x44,\n\t39227 - 19968: jis0212<<14 | 0x47<<7 | 0x45,\n\t39228 - 19968: jis0212<<14 | 0x47<<7 | 0x46,\n\t39229 - 19968: jis0208<<14 | 0x50<<7 | 0x18,\n\t39230 - 19968: jis0208<<14 | 0x50<<7 | 0x19,\n\t39232 - 19968: jis0212<<14 | 0x47<<7 | 0x47,\n\t39233 - 19968: jis0212<<14 | 0x47<<7 | 0x48,\n\t39234 - 19968: jis0208<<14 | 0x50<<7 | 0x1A,\n\t39237 - 19968: jis0208<<14 | 0x50<<7 | 0x1C,\n\t39238 - 19968: jis0212<<14 | 0x47<<7 | 0x49,\n\t39239 - 19968: jis0212<<14 | 0x47<<7 | 0x4A,\n\t39240 - 19968: jis0212<<14 | 0x47<<7 | 0x4B,\n\t39241 - 19968: jis0208<<14 | 0x50<<7 | 0x1B,\n\t39243 - 19968: jis0208<<14 | 0x50<<7 | 0x1E,\n\t39244 - 19968: jis0208<<14 | 0x50<<7 | 0x21,\n\t39245 - 19968: jis0212<<14 | 0x47<<7 | 0x4C,\n\t39246 - 19968: jis0212<<14 | 0x47<<7 | 0x4D,\n\t39248 - 19968: jis0208<<14 | 0x50<<7 | 0x1D,\n\t39249 - 19968: jis0208<<14 | 0x50<<7 | 0x1F,\n\t39250 - 19968: jis0208<<14 | 0x50<<7 | 0x20,\n\t39252 - 19968: jis0212<<14 | 0x47<<7 | 0x4E,\n\t39253 - 19968: jis0208<<14 | 0x50<<7 | 0x22,\n\t39255 - 19968: jis0208<<14 | 0x15<<7 | 0x21,\n\t39256 - 19968: jis0212<<14 | 0x47<<7 | 0x4F,\n\t39257 - 19968: jis0212<<14 | 0x47<<7 | 0x50,\n\t39259 - 19968: jis0212<<14 | 0x47<<7 | 0x51,\n\t39260 - 19968: jis0212<<14 | 0x47<<7 | 0x52,\n\t39262 - 19968: jis0212<<14 | 0x47<<7 | 0x53,\n\t39263 - 19968: jis0212<<14 | 0x47<<7 | 0x54,\n\t39264 - 19968: jis0212<<14 | 0x47<<7 | 0x55,\n\t39318 - 19968: jis0208<<14 | 0x1B<<7 | 0x52,\n\t39319 - 19968: jis0208<<14 | 0x50<<7 | 0x23,\n\t39320 - 19968: jis0208<<14 | 0x50<<7 | 0x24,\n\t39321 - 19968: jis0208<<14 | 0x18<<7 | 0x40,\n\t39323 - 19968: jis0212<<14 | 0x47<<7 | 0x56,\n\t39325 - 19968: jis0212<<14 | 0x47<<7 | 0x57,\n\t39326 - 19968: jis0208<<14 | 0x5B<<7 | 0x3F,\n\t39327 - 19968: jis0212<<14 | 0x47<<7 | 0x58,\n\t39333 - 19968: jis0208<<14 | 0x50<<7 | 0x25,\n\t39334 - 19968: jis0212<<14 | 0x47<<7 | 0x59,\n\t39336 - 19968: jis0208<<14 | 0x12<<7 | 0x1D,\n\t39340 - 19968: jis0208<<14 | 0x26<<7 | 0x2E,\n\t39341 - 19968: jis0208<<14 | 0x50<<7 | 0x26,\n\t39342 - 19968: jis0208<<14 | 0x50<<7 | 0x27,\n\t39344 - 19968: jis0212<<14 | 0x47<<7 | 0x5A,\n\t39345 - 19968: jis0212<<14 | 0x47<<7 | 0x5B,\n\t39346 - 19968: jis0212<<14 | 0x47<<7 | 0x5C,\n\t39347 - 19968: jis0208<<14 | 0x22<<7 | 0x39,\n\t39348 - 19968: jis0208<<14 | 0x25<<7 | 0x4A,\n\t39349 - 19968: jis0212<<14 | 0x47<<7 | 0x5D,\n\t39353 - 19968: jis0212<<14 | 0x48<<7 | 0x00,\n\t39354 - 19968: jis0212<<14 | 0x48<<7 | 0x01,\n\t39356 - 19968: jis0208<<14 | 0x50<<7 | 0x28,\n\t39357 - 19968: jis0212<<14 | 0x48<<7 | 0x02,\n\t39359 - 19968: jis0212<<14 | 0x48<<7 | 0x03,\n\t39361 - 19968: jis0208<<14 | 0x26<<7 | 0x5C,\n\t39363 - 19968: jis0212<<14 | 0x48<<7 | 0x04,\n\t39364 - 19968: jis0208<<14 | 0x21<<7 | 0x2B,\n\t39365 - 19968: jis0208<<14 | 0x10<<7 | 0x37,\n\t39366 - 19968: jis0208<<14 | 0x15<<7 | 0x4D,\n\t39368 - 19968: jis0208<<14 | 0x15<<7 | 0x4E,\n\t39369 - 19968: jis0212<<14 | 0x48<<7 | 0x05,\n\t39376 - 19968: jis0208<<14 | 0x22<<7 | 0x52,\n\t39377 - 19968: jis0208<<14 | 0x50<<7 | 0x2D,\n\t39378 - 19968: jis0208<<14 | 0x15<<7 | 0x4F,\n\t39379 - 19968: jis0212<<14 | 0x48<<7 | 0x06,\n\t39380 - 19968: jis0212<<14 | 0x48<<7 | 0x07,\n\t39381 - 19968: jis0208<<14 | 0x11<<7 | 0x4E,\n\t39384 - 19968: jis0208<<14 | 0x50<<7 | 0x2C,\n\t39385 - 19968: jis0212<<14 | 0x48<<7 | 0x08,\n\t39386 - 19968: jis0212<<14 | 0x48<<7 | 0x09,\n\t39387 - 19968: jis0208<<14 | 0x50<<7 | 0x2A,\n\t39388 - 19968: jis0212<<14 | 0x48<<7 | 0x0A,\n\t39389 - 19968: jis0208<<14 | 0x50<<7 | 0x2B,\n\t39390 - 19968: jis0212<<14 | 0x48<<7 | 0x0B,\n\t39391 - 19968: jis0208<<14 | 0x50<<7 | 0x29,\n\t39394 - 19968: jis0208<<14 | 0x50<<7 | 0x37,\n\t39399 - 19968: jis0212<<14 | 0x48<<7 | 0x0C,\n\t39402 - 19968: jis0212<<14 | 0x48<<7 | 0x0D,\n\t39403 - 19968: jis0212<<14 | 0x48<<7 | 0x0E,\n\t39404 - 19968: jis0212<<14 | 0x48<<7 | 0x0F,\n\t39405 - 19968: jis0208<<14 | 0x50<<7 | 0x2E,\n\t39406 - 19968: jis0208<<14 | 0x50<<7 | 0x2F,\n\t39408 - 19968: jis0212<<14 | 0x48<<7 | 0x10,\n\t39409 - 19968: jis0208<<14 | 0x50<<7 | 0x30,\n\t39410 - 19968: jis0208<<14 | 0x50<<7 | 0x31,\n\t39412 - 19968: jis0212<<14 | 0x48<<7 | 0x11,\n\t39413 - 19968: jis0212<<14 | 0x48<<7 | 0x12,\n\t39416 - 19968: jis0208<<14 | 0x50<<7 | 0x33,\n\t39417 - 19968: jis0212<<14 | 0x48<<7 | 0x13,\n\t39419 - 19968: jis0208<<14 | 0x50<<7 | 0x32,\n\t39421 - 19968: jis0212<<14 | 0x48<<7 | 0x14,\n\t39422 - 19968: jis0212<<14 | 0x48<<7 | 0x15,\n\t39423 - 19968: jis0208<<14 | 0x1C<<7 | 0x38,\n\t39425 - 19968: jis0208<<14 | 0x50<<7 | 0x34,\n\t39426 - 19968: jis0212<<14 | 0x48<<7 | 0x16,\n\t39427 - 19968: jis0212<<14 | 0x48<<7 | 0x17,\n\t39428 - 19968: jis0212<<14 | 0x48<<7 | 0x18,\n\t39429 - 19968: jis0208<<14 | 0x50<<7 | 0x36,\n\t39435 - 19968: jis0212<<14 | 0x48<<7 | 0x19,\n\t39436 - 19968: jis0212<<14 | 0x48<<7 | 0x1A,\n\t39438 - 19968: jis0208<<14 | 0x14<<7 | 0x12,\n\t39439 - 19968: jis0208<<14 | 0x50<<7 | 0x35,\n\t39440 - 19968: jis0212<<14 | 0x48<<7 | 0x1B,\n\t39441 - 19968: jis0212<<14 | 0x48<<7 | 0x1C,\n\t39442 - 19968: jis0208<<14 | 0x20<<7 | 0x5A,\n\t39443 - 19968: jis0208<<14 | 0x17<<7 | 0x12,\n\t39446 - 19968: jis0212<<14 | 0x48<<7 | 0x1D,\n\t39449 - 19968: jis0208<<14 | 0x50<<7 | 0x38,\n\t39454 - 19968: jis0212<<14 | 0x48<<7 | 0x1E,\n\t39456 - 19968: jis0212<<14 | 0x48<<7 | 0x1F,\n\t39458 - 19968: jis0212<<14 | 0x48<<7 | 0x20,\n\t39459 - 19968: jis0212<<14 | 0x48<<7 | 0x21,\n\t39460 - 19968: jis0212<<14 | 0x48<<7 | 0x22,\n\t39463 - 19968: jis0212<<14 | 0x48<<7 | 0x23,\n\t39464 - 19968: jis0208<<14 | 0x21<<7 | 0x2C,\n\t39467 - 19968: jis0208<<14 | 0x50<<7 | 0x39,\n\t39469 - 19968: jis0212<<14 | 0x48<<7 | 0x24,\n\t39470 - 19968: jis0212<<14 | 0x48<<7 | 0x25,\n\t39472 - 19968: jis0208<<14 | 0x25<<7 | 0x0C,\n\t39475 - 19968: jis0212<<14 | 0x48<<7 | 0x26,\n\t39477 - 19968: jis0212<<14 | 0x48<<7 | 0x27,\n\t39478 - 19968: jis0212<<14 | 0x48<<7 | 0x28,\n\t39479 - 19968: jis0208<<14 | 0x50<<7 | 0x3A,\n\t39480 - 19968: jis0212<<14 | 0x48<<7 | 0x29,\n\t39486 - 19968: jis0208<<14 | 0x50<<7 | 0x3F,\n\t39488 - 19968: jis0208<<14 | 0x50<<7 | 0x3D,\n\t39489 - 19968: jis0212<<14 | 0x48<<7 | 0x2B,\n\t39490 - 19968: jis0208<<14 | 0x50<<7 | 0x3C,\n\t39491 - 19968: jis0208<<14 | 0x50<<7 | 0x3E,\n\t39492 - 19968: jis0212<<14 | 0x48<<7 | 0x2C,\n\t39493 - 19968: jis0208<<14 | 0x50<<7 | 0x3B,\n\t39495 - 19968: jis0212<<14 | 0x48<<7 | 0x2A,\n\t39498 - 19968: jis0212<<14 | 0x48<<7 | 0x2D,\n\t39499 - 19968: jis0212<<14 | 0x48<<7 | 0x2E,\n\t39500 - 19968: jis0212<<14 | 0x48<<7 | 0x2F,\n\t39501 - 19968: jis0208<<14 | 0x50<<7 | 0x41,\n\t39502 - 19968: jis0208<<14 | 0x5B<<7 | 0x40,\n\t39505 - 19968: jis0212<<14 | 0x48<<7 | 0x31,\n\t39508 - 19968: jis0212<<14 | 0x48<<7 | 0x32,\n\t39509 - 19968: jis0208<<14 | 0x50<<7 | 0x40,\n\t39510 - 19968: jis0212<<14 | 0x48<<7 | 0x33,\n\t39511 - 19968: jis0208<<14 | 0x50<<7 | 0x43,\n\t39514 - 19968: jis0208<<14 | 0x15<<7 | 0x22,\n\t39515 - 19968: jis0208<<14 | 0x50<<7 | 0x42,\n\t39517 - 19968: jis0212<<14 | 0x48<<7 | 0x34,\n\t39519 - 19968: jis0208<<14 | 0x50<<7 | 0x44,\n\t39522 - 19968: jis0208<<14 | 0x50<<7 | 0x45,\n\t39524 - 19968: jis0208<<14 | 0x50<<7 | 0x47,\n\t39525 - 19968: jis0208<<14 | 0x50<<7 | 0x46,\n\t39529 - 19968: jis0208<<14 | 0x50<<7 | 0x48,\n\t39530 - 19968: jis0208<<14 | 0x50<<7 | 0x4A,\n\t39531 - 19968: jis0208<<14 | 0x50<<7 | 0x49,\n\t39592 - 19968: jis0208<<14 | 0x18<<7 | 0x5B,\n\t39594 - 19968: jis0212<<14 | 0x48<<7 | 0x35,\n\t39596 - 19968: jis0212<<14 | 0x48<<7 | 0x36,\n\t39597 - 19968: jis0208<<14 | 0x50<<7 | 0x4B,\n\t39598 - 19968: jis0212<<14 | 0x48<<7 | 0x37,\n\t39599 - 19968: jis0212<<14 | 0x48<<7 | 0x38,\n\t39600 - 19968: jis0208<<14 | 0x50<<7 | 0x4C,\n\t39602 - 19968: jis0212<<14 | 0x48<<7 | 0x39,\n\t39604 - 19968: jis0212<<14 | 0x48<<7 | 0x3A,\n\t39605 - 19968: jis0212<<14 | 0x48<<7 | 0x3B,\n\t39606 - 19968: jis0212<<14 | 0x48<<7 | 0x3C,\n\t39608 - 19968: jis0208<<14 | 0x12<<7 | 0x1B,\n\t39609 - 19968: jis0212<<14 | 0x48<<7 | 0x3D,\n\t39611 - 19968: jis0212<<14 | 0x48<<7 | 0x3E,\n\t39612 - 19968: jis0208<<14 | 0x50<<7 | 0x4D,\n\t39614 - 19968: jis0212<<14 | 0x48<<7 | 0x3F,\n\t39615 - 19968: jis0212<<14 | 0x48<<7 | 0x40,\n\t39616 - 19968: jis0208<<14 | 0x50<<7 | 0x4E,\n\t39617 - 19968: jis0212<<14 | 0x48<<7 | 0x41,\n\t39619 - 19968: jis0212<<14 | 0x48<<7 | 0x42,\n\t39620 - 19968: jis0208<<14 | 0x1E<<7 | 0x50,\n\t39622 - 19968: jis0212<<14 | 0x48<<7 | 0x43,\n\t39624 - 19968: jis0212<<14 | 0x48<<7 | 0x44,\n\t39630 - 19968: jis0212<<14 | 0x48<<7 | 0x45,\n\t39631 - 19968: jis0208<<14 | 0x50<<7 | 0x4F,\n\t39632 - 19968: jis0212<<14 | 0x48<<7 | 0x46,\n\t39633 - 19968: jis0208<<14 | 0x50<<7 | 0x50,\n\t39634 - 19968: jis0212<<14 | 0x48<<7 | 0x47,\n\t39635 - 19968: jis0208<<14 | 0x50<<7 | 0x51,\n\t39636 - 19968: jis0208<<14 | 0x50<<7 | 0x52,\n\t39637 - 19968: jis0212<<14 | 0x48<<7 | 0x48,\n\t39638 - 19968: jis0212<<14 | 0x48<<7 | 0x49,\n\t39639 - 19968: jis0212<<14 | 0x48<<7 | 0x4A,\n\t39640 - 19968: jis0208<<14 | 0x18<<7 | 0x41,\n\t39641 - 19968: jis0208<<14 | 0x5B<<7 | 0x41,\n\t39643 - 19968: jis0212<<14 | 0x48<<7 | 0x4B,\n\t39644 - 19968: jis0208<<14 | 0x5B<<7 | 0x42,\n\t39646 - 19968: jis0208<<14 | 0x50<<7 | 0x53,\n\t39647 - 19968: jis0208<<14 | 0x50<<7 | 0x54,\n\t39648 - 19968: jis0212<<14 | 0x48<<7 | 0x4D,\n\t39650 - 19968: jis0208<<14 | 0x50<<7 | 0x55,\n\t39651 - 19968: jis0208<<14 | 0x50<<7 | 0x56,\n\t39652 - 19968: jis0212<<14 | 0x48<<7 | 0x4E,\n\t39653 - 19968: jis0212<<14 | 0x48<<7 | 0x4F,\n\t39654 - 19968: jis0208<<14 | 0x50<<7 | 0x57,\n\t39655 - 19968: jis0212<<14 | 0x48<<7 | 0x50,\n\t39657 - 19968: jis0212<<14 | 0x48<<7 | 0x51,\n\t39658 - 19968: jis0208<<14 | 0x27<<7 | 0x10,\n\t39659 - 19968: jis0208<<14 | 0x50<<7 | 0x59,\n\t39660 - 19968: jis0212<<14 | 0x48<<7 | 0x52,\n\t39661 - 19968: jis0208<<14 | 0x28<<7 | 0x05,\n\t39662 - 19968: jis0208<<14 | 0x50<<7 | 0x5A,\n\t39663 - 19968: jis0208<<14 | 0x50<<7 | 0x58,\n\t39665 - 19968: jis0208<<14 | 0x50<<7 | 0x5C,\n\t39666 - 19968: jis0212<<14 | 0x48<<7 | 0x53,\n\t39667 - 19968: jis0212<<14 | 0x48<<7 | 0x54,\n\t39668 - 19968: jis0208<<14 | 0x50<<7 | 0x5B,\n\t39669 - 19968: jis0212<<14 | 0x48<<7 | 0x55,\n\t39671 - 19968: jis0208<<14 | 0x50<<7 | 0x5D,\n\t39673 - 19968: jis0212<<14 | 0x48<<7 | 0x56,\n\t39674 - 19968: jis0212<<14 | 0x48<<7 | 0x57,\n\t39675 - 19968: jis0208<<14 | 0x51<<7 | 0x00,\n\t39677 - 19968: jis0212<<14 | 0x48<<7 | 0x58,\n\t39679 - 19968: jis0212<<14 | 0x48<<7 | 0x59,\n\t39680 - 19968: jis0212<<14 | 0x48<<7 | 0x5A,\n\t39681 - 19968: jis0212<<14 | 0x48<<7 | 0x5B,\n\t39682 - 19968: jis0212<<14 | 0x48<<7 | 0x5C,\n\t39683 - 19968: jis0212<<14 | 0x48<<7 | 0x5D,\n\t39684 - 19968: jis0212<<14 | 0x49<<7 | 0x00,\n\t39685 - 19968: jis0212<<14 | 0x49<<7 | 0x01,\n\t39686 - 19968: jis0208<<14 | 0x51<<7 | 0x01,\n\t39688 - 19968: jis0212<<14 | 0x49<<7 | 0x02,\n\t39689 - 19968: jis0212<<14 | 0x49<<7 | 0x03,\n\t39691 - 19968: jis0212<<14 | 0x49<<7 | 0x04,\n\t39692 - 19968: jis0212<<14 | 0x49<<7 | 0x05,\n\t39693 - 19968: jis0212<<14 | 0x49<<7 | 0x06,\n\t39694 - 19968: jis0212<<14 | 0x49<<7 | 0x07,\n\t39696 - 19968: jis0212<<14 | 0x49<<7 | 0x08,\n\t39698 - 19968: jis0212<<14 | 0x49<<7 | 0x09,\n\t39702 - 19968: jis0212<<14 | 0x49<<7 | 0x0A,\n\t39704 - 19968: jis0208<<14 | 0x51<<7 | 0x02,\n\t39705 - 19968: jis0212<<14 | 0x49<<7 | 0x0B,\n\t39706 - 19968: jis0208<<14 | 0x51<<7 | 0x03,\n\t39707 - 19968: jis0212<<14 | 0x49<<7 | 0x0C,\n\t39708 - 19968: jis0212<<14 | 0x49<<7 | 0x0D,\n\t39711 - 19968: jis0208<<14 | 0x51<<7 | 0x04,\n\t39712 - 19968: jis0212<<14 | 0x49<<7 | 0x0E,\n\t39714 - 19968: jis0208<<14 | 0x51<<7 | 0x05,\n\t39715 - 19968: jis0208<<14 | 0x51<<7 | 0x06,\n\t39717 - 19968: jis0208<<14 | 0x51<<7 | 0x07,\n\t39718 - 19968: jis0212<<14 | 0x49<<7 | 0x0F,\n\t39719 - 19968: jis0208<<14 | 0x51<<7 | 0x08,\n\t39720 - 19968: jis0208<<14 | 0x51<<7 | 0x09,\n\t39721 - 19968: jis0208<<14 | 0x51<<7 | 0x0A,\n\t39722 - 19968: jis0208<<14 | 0x51<<7 | 0x0B,\n\t39723 - 19968: jis0212<<14 | 0x49<<7 | 0x10,\n\t39725 - 19968: jis0212<<14 | 0x49<<7 | 0x11,\n\t39726 - 19968: jis0208<<14 | 0x51<<7 | 0x0C,\n\t39727 - 19968: jis0208<<14 | 0x51<<7 | 0x0D,\n\t39729 - 19968: jis0208<<14 | 0x3C<<7 | 0x14,\n\t39730 - 19968: jis0208<<14 | 0x51<<7 | 0x0E,\n\t39731 - 19968: jis0212<<14 | 0x49<<7 | 0x12,\n\t39732 - 19968: jis0212<<14 | 0x49<<7 | 0x13,\n\t39733 - 19968: jis0212<<14 | 0x49<<7 | 0x14,\n\t39735 - 19968: jis0212<<14 | 0x49<<7 | 0x15,\n\t39737 - 19968: jis0212<<14 | 0x49<<7 | 0x16,\n\t39738 - 19968: jis0212<<14 | 0x49<<7 | 0x17,\n\t39739 - 19968: jis0208<<14 | 0x43<<7 | 0x57,\n\t39740 - 19968: jis0208<<14 | 0x14<<7 | 0x13,\n\t39741 - 19968: jis0212<<14 | 0x49<<7 | 0x18,\n\t39745 - 19968: jis0208<<14 | 0x12<<7 | 0x00,\n\t39746 - 19968: jis0208<<14 | 0x19<<7 | 0x11,\n\t39747 - 19968: jis0208<<14 | 0x51<<7 | 0x10,\n\t39748 - 19968: jis0208<<14 | 0x51<<7 | 0x0F,\n\t39749 - 19968: jis0208<<14 | 0x2B<<7 | 0x04,\n\t39752 - 19968: jis0212<<14 | 0x49<<7 | 0x19,\n\t39755 - 19968: jis0212<<14 | 0x49<<7 | 0x1A,\n\t39756 - 19968: jis0212<<14 | 0x49<<7 | 0x1B,\n\t39757 - 19968: jis0208<<14 | 0x51<<7 | 0x12,\n\t39758 - 19968: jis0208<<14 | 0x51<<7 | 0x13,\n\t39759 - 19968: jis0208<<14 | 0x51<<7 | 0x11,\n\t39761 - 19968: jis0208<<14 | 0x51<<7 | 0x14,\n\t39764 - 19968: jis0208<<14 | 0x2A<<7 | 0x41,\n\t39765 - 19968: jis0212<<14 | 0x49<<7 | 0x1C,\n\t39766 - 19968: jis0212<<14 | 0x49<<7 | 0x1D,\n\t39767 - 19968: jis0212<<14 | 0x49<<7 | 0x1E,\n\t39768 - 19968: jis0208<<14 | 0x51<<7 | 0x15,\n\t39770 - 19968: jis0208<<14 | 0x14<<7 | 0x5A,\n\t39771 - 19968: jis0212<<14 | 0x49<<7 | 0x1F,\n\t39774 - 19968: jis0212<<14 | 0x49<<7 | 0x20,\n\t39777 - 19968: jis0212<<14 | 0x49<<7 | 0x21,\n\t39779 - 19968: jis0212<<14 | 0x49<<7 | 0x22,\n\t39781 - 19968: jis0212<<14 | 0x49<<7 | 0x23,\n\t39782 - 19968: jis0212<<14 | 0x49<<7 | 0x24,\n\t39784 - 19968: jis0212<<14 | 0x49<<7 | 0x25,\n\t39786 - 19968: jis0212<<14 | 0x49<<7 | 0x26,\n\t39787 - 19968: jis0212<<14 | 0x49<<7 | 0x27,\n\t39788 - 19968: jis0212<<14 | 0x49<<7 | 0x28,\n\t39789 - 19968: jis0212<<14 | 0x49<<7 | 0x29,\n\t39790 - 19968: jis0212<<14 | 0x49<<7 | 0x2A,\n\t39791 - 19968: jis0208<<14 | 0x2E<<7 | 0x04,\n\t39794 - 19968: jis0208<<14 | 0x5B<<7 | 0x44,\n\t39795 - 19968: jis0212<<14 | 0x49<<7 | 0x2B,\n\t39796 - 19968: jis0208<<14 | 0x51<<7 | 0x16,\n\t39797 - 19968: jis0208<<14 | 0x5B<<7 | 0x43,\n\t39799 - 19968: jis0212<<14 | 0x49<<7 | 0x2D,\n\t39800 - 19968: jis0212<<14 | 0x49<<7 | 0x2E,\n\t39801 - 19968: jis0212<<14 | 0x49<<7 | 0x2F,\n\t39807 - 19968: jis0212<<14 | 0x49<<7 | 0x30,\n\t39808 - 19968: jis0212<<14 | 0x49<<7 | 0x31,\n\t39811 - 19968: jis0208<<14 | 0x51<<7 | 0x18,\n\t39812 - 19968: jis0212<<14 | 0x49<<7 | 0x32,\n\t39813 - 19968: jis0212<<14 | 0x49<<7 | 0x33,\n\t39814 - 19968: jis0212<<14 | 0x49<<7 | 0x34,\n\t39815 - 19968: jis0212<<14 | 0x49<<7 | 0x35,\n\t39817 - 19968: jis0212<<14 | 0x49<<7 | 0x36,\n\t39818 - 19968: jis0212<<14 | 0x49<<7 | 0x37,\n\t39819 - 19968: jis0212<<14 | 0x49<<7 | 0x38,\n\t39821 - 19968: jis0212<<14 | 0x49<<7 | 0x39,\n\t39822 - 19968: jis0208<<14 | 0x0F<<7 | 0x1D,\n\t39823 - 19968: jis0208<<14 | 0x5B<<7 | 0x45,\n\t39824 - 19968: jis0212<<14 | 0x49<<7 | 0x3B,\n\t39825 - 19968: jis0208<<14 | 0x51<<7 | 0x19,\n\t39826 - 19968: jis0208<<14 | 0x29<<7 | 0x0A,\n\t39827 - 19968: jis0208<<14 | 0x51<<7 | 0x17,\n\t39828 - 19968: jis0212<<14 | 0x49<<7 | 0x3C,\n\t39830 - 19968: jis0208<<14 | 0x51<<7 | 0x1A,\n\t39831 - 19968: jis0208<<14 | 0x51<<7 | 0x1B,\n\t39834 - 19968: jis0212<<14 | 0x49<<7 | 0x3D,\n\t39837 - 19968: jis0212<<14 | 0x49<<7 | 0x3E,\n\t39838 - 19968: jis0212<<14 | 0x49<<7 | 0x3F,\n\t39839 - 19968: jis0208<<14 | 0x51<<7 | 0x1C,\n\t39840 - 19968: jis0208<<14 | 0x51<<7 | 0x1D,\n\t39846 - 19968: jis0212<<14 | 0x49<<7 | 0x40,\n\t39847 - 19968: jis0212<<14 | 0x49<<7 | 0x41,\n\t39848 - 19968: jis0208<<14 | 0x51<<7 | 0x1E,\n\t39849 - 19968: jis0212<<14 | 0x49<<7 | 0x42,\n\t39850 - 19968: jis0208<<14 | 0x2A<<7 | 0x4D,\n\t39851 - 19968: jis0208<<14 | 0x1A<<7 | 0x0C,\n\t39852 - 19968: jis0212<<14 | 0x49<<7 | 0x43,\n\t39853 - 19968: jis0208<<14 | 0x19<<7 | 0x59,\n\t39854 - 19968: jis0208<<14 | 0x20<<7 | 0x0E,\n\t39856 - 19968: jis0212<<14 | 0x49<<7 | 0x44,\n\t39857 - 19968: jis0208<<14 | 0x5B<<7 | 0x46,\n\t39858 - 19968: jis0212<<14 | 0x49<<7 | 0x46,\n\t39860 - 19968: jis0208<<14 | 0x51<<7 | 0x1F,\n\t39863 - 19968: jis0212<<14 | 0x49<<7 | 0x47,\n\t39864 - 19968: jis0212<<14 | 0x49<<7 | 0x48,\n\t39865 - 19968: jis0208<<14 | 0x51<<7 | 0x22,\n\t39867 - 19968: jis0208<<14 | 0x5B<<7 | 0x47,\n\t39868 - 19968: jis0212<<14 | 0x49<<7 | 0x4A,\n\t39870 - 19968: jis0212<<14 | 0x49<<7 | 0x4B,\n\t39871 - 19968: jis0212<<14 | 0x49<<7 | 0x4C,\n\t39872 - 19968: jis0208<<14 | 0x51<<7 | 0x20,\n\t39873 - 19968: jis0212<<14 | 0x49<<7 | 0x4D,\n\t39878 - 19968: jis0208<<14 | 0x51<<7 | 0x23,\n\t39879 - 19968: jis0212<<14 | 0x49<<7 | 0x4E,\n\t39880 - 19968: jis0212<<14 | 0x49<<7 | 0x4F,\n\t39881 - 19968: jis0208<<14 | 0x17<<7 | 0x50,\n\t39882 - 19968: jis0208<<14 | 0x51<<7 | 0x21,\n\t39886 - 19968: jis0212<<14 | 0x49<<7 | 0x50,\n\t39887 - 19968: jis0208<<14 | 0x51<<7 | 0x24,\n\t39888 - 19968: jis0212<<14 | 0x49<<7 | 0x51,\n\t39889 - 19968: jis0208<<14 | 0x51<<7 | 0x25,\n\t39890 - 19968: jis0208<<14 | 0x51<<7 | 0x26,\n\t39892 - 19968: jis0208<<14 | 0x51<<7 | 0x2A,\n\t39894 - 19968: jis0208<<14 | 0x1A<<7 | 0x09,\n\t39895 - 19968: jis0212<<14 | 0x49<<7 | 0x52,\n\t39896 - 19968: jis0212<<14 | 0x49<<7 | 0x53,\n\t39899 - 19968: jis0208<<14 | 0x21<<7 | 0x43,\n\t39901 - 19968: jis0212<<14 | 0x49<<7 | 0x54,\n\t39903 - 19968: jis0212<<14 | 0x49<<7 | 0x55,\n\t39905 - 19968: jis0208<<14 | 0x51<<7 | 0x2B,\n\t39906 - 19968: jis0208<<14 | 0x51<<7 | 0x28,\n\t39907 - 19968: jis0208<<14 | 0x51<<7 | 0x27,\n\t39908 - 19968: jis0208<<14 | 0x51<<7 | 0x29,\n\t39909 - 19968: jis0212<<14 | 0x49<<7 | 0x56,\n\t39911 - 19968: jis0212<<14 | 0x49<<7 | 0x57,\n\t39912 - 19968: jis0208<<14 | 0x16<<7 | 0x3E,\n\t39914 - 19968: jis0212<<14 | 0x49<<7 | 0x58,\n\t39915 - 19968: jis0212<<14 | 0x49<<7 | 0x59,\n\t39919 - 19968: jis0212<<14 | 0x49<<7 | 0x5A,\n\t39920 - 19968: jis0208<<14 | 0x51<<7 | 0x2F,\n\t39921 - 19968: jis0208<<14 | 0x51<<7 | 0x2E,\n\t39922 - 19968: jis0208<<14 | 0x51<<7 | 0x2D,\n\t39923 - 19968: jis0212<<14 | 0x49<<7 | 0x5B,\n\t39925 - 19968: jis0208<<14 | 0x0F<<7 | 0x12,\n\t39927 - 19968: jis0212<<14 | 0x49<<7 | 0x5C,\n\t39928 - 19968: jis0212<<14 | 0x49<<7 | 0x5D,\n\t39929 - 19968: jis0212<<14 | 0x4A<<7 | 0x00,\n\t39930 - 19968: jis0212<<14 | 0x4A<<7 | 0x01,\n\t39933 - 19968: jis0212<<14 | 0x4A<<7 | 0x02,\n\t39935 - 19968: jis0212<<14 | 0x4A<<7 | 0x03,\n\t39936 - 19968: jis0208<<14 | 0x5B<<7 | 0x48,\n\t39938 - 19968: jis0212<<14 | 0x4A<<7 | 0x05,\n\t39940 - 19968: jis0208<<14 | 0x51<<7 | 0x39,\n\t39942 - 19968: jis0208<<14 | 0x51<<7 | 0x35,\n\t39944 - 19968: jis0208<<14 | 0x51<<7 | 0x36,\n\t39945 - 19968: jis0208<<14 | 0x51<<7 | 0x32,\n\t39946 - 19968: jis0208<<14 | 0x51<<7 | 0x38,\n\t39947 - 19968: jis0212<<14 | 0x4A<<7 | 0x06,\n\t39948 - 19968: jis0208<<14 | 0x51<<7 | 0x34,\n\t39949 - 19968: jis0208<<14 | 0x12<<7 | 0x41,\n\t39951 - 19968: jis0212<<14 | 0x4A<<7 | 0x07,\n\t39952 - 19968: jis0208<<14 | 0x2E<<7 | 0x2B,\n\t39953 - 19968: jis0212<<14 | 0x4A<<7 | 0x08,\n\t39954 - 19968: jis0208<<14 | 0x51<<7 | 0x37,\n\t39955 - 19968: jis0208<<14 | 0x51<<7 | 0x33,\n\t39956 - 19968: jis0208<<14 | 0x51<<7 | 0x31,\n\t39957 - 19968: jis0208<<14 | 0x51<<7 | 0x30,\n\t39958 - 19968: jis0212<<14 | 0x4A<<7 | 0x09,\n\t39960 - 19968: jis0212<<14 | 0x4A<<7 | 0x0A,\n\t39961 - 19968: jis0212<<14 | 0x4A<<7 | 0x0B,\n\t39962 - 19968: jis0212<<14 | 0x4A<<7 | 0x0C,\n\t39963 - 19968: jis0208<<14 | 0x51<<7 | 0x3B,\n\t39964 - 19968: jis0212<<14 | 0x4A<<7 | 0x0D,\n\t39966 - 19968: jis0212<<14 | 0x4A<<7 | 0x0E,\n\t39969 - 19968: jis0208<<14 | 0x51<<7 | 0x3E,\n\t39970 - 19968: jis0212<<14 | 0x4A<<7 | 0x0F,\n\t39971 - 19968: jis0212<<14 | 0x4A<<7 | 0x10,\n\t39972 - 19968: jis0208<<14 | 0x51<<7 | 0x3D,\n\t39973 - 19968: jis0208<<14 | 0x51<<7 | 0x3C,\n\t39974 - 19968: jis0212<<14 | 0x4A<<7 | 0x11,\n\t39975 - 19968: jis0212<<14 | 0x4A<<7 | 0x12,\n\t39976 - 19968: jis0212<<14 | 0x4A<<7 | 0x13,\n\t39977 - 19968: jis0212<<14 | 0x4A<<7 | 0x14,\n\t39978 - 19968: jis0212<<14 | 0x4A<<7 | 0x15,\n\t39981 - 19968: jis0208<<14 | 0x28<<7 | 0x28,\n\t39982 - 19968: jis0208<<14 | 0x51<<7 | 0x3A,\n\t39983 - 19968: jis0208<<14 | 0x0F<<7 | 0x52,\n\t39984 - 19968: jis0208<<14 | 0x51<<7 | 0x3F,\n\t39985 - 19968: jis0212<<14 | 0x4A<<7 | 0x16,\n\t39986 - 19968: jis0208<<14 | 0x51<<7 | 0x41,\n\t39989 - 19968: jis0212<<14 | 0x4A<<7 | 0x17,\n\t39990 - 19968: jis0212<<14 | 0x4A<<7 | 0x18,\n\t39991 - 19968: jis0212<<14 | 0x4A<<7 | 0x19,\n\t39993 - 19968: jis0208<<14 | 0x12<<7 | 0x4E,\n\t39994 - 19968: jis0208<<14 | 0x51<<7 | 0x2C,\n\t39995 - 19968: jis0208<<14 | 0x10<<7 | 0x16,\n\t39997 - 19968: jis0212<<14 | 0x4A<<7 | 0x1A,\n\t39998 - 19968: jis0208<<14 | 0x51<<7 | 0x43,\n\t40001 - 19968: jis0212<<14 | 0x4A<<7 | 0x1B,\n\t40003 - 19968: jis0212<<14 | 0x4A<<7 | 0x1C,\n\t40004 - 19968: jis0212<<14 | 0x4A<<7 | 0x1D,\n\t40005 - 19968: jis0212<<14 | 0x4A<<7 | 0x1E,\n\t40006 - 19968: jis0208<<14 | 0x51<<7 | 0x42,\n\t40007 - 19968: jis0208<<14 | 0x51<<7 | 0x40,\n\t40008 - 19968: jis0208<<14 | 0x22<<7 | 0x0C,\n\t40009 - 19968: jis0212<<14 | 0x4A<<7 | 0x1F,\n\t40010 - 19968: jis0212<<14 | 0x4A<<7 | 0x20,\n\t40014 - 19968: jis0212<<14 | 0x4A<<7 | 0x21,\n\t40015 - 19968: jis0212<<14 | 0x4A<<7 | 0x22,\n\t40016 - 19968: jis0212<<14 | 0x4A<<7 | 0x23,\n\t40018 - 19968: jis0208<<14 | 0x2A<<7 | 0x4F,\n\t40019 - 19968: jis0212<<14 | 0x4A<<7 | 0x24,\n\t40020 - 19968: jis0212<<14 | 0x4A<<7 | 0x25,\n\t40022 - 19968: jis0212<<14 | 0x4A<<7 | 0x26,\n\t40023 - 19968: jis0208<<14 | 0x2D<<7 | 0x39,\n\t40024 - 19968: jis0212<<14 | 0x4A<<7 | 0x27,\n\t40026 - 19968: jis0208<<14 | 0x51<<7 | 0x44,\n\t40027 - 19968: jis0212<<14 | 0x4A<<7 | 0x28,\n\t40028 - 19968: jis0212<<14 | 0x4A<<7 | 0x2F,\n\t40029 - 19968: jis0212<<14 | 0x4A<<7 | 0x29,\n\t40030 - 19968: jis0212<<14 | 0x4A<<7 | 0x2A,\n\t40031 - 19968: jis0212<<14 | 0x4A<<7 | 0x2B,\n\t40032 - 19968: jis0208<<14 | 0x51<<7 | 0x45,\n\t40035 - 19968: jis0212<<14 | 0x4A<<7 | 0x2C,\n\t40039 - 19968: jis0208<<14 | 0x51<<7 | 0x46,\n\t40040 - 19968: jis0212<<14 | 0x4A<<7 | 0x31,\n\t40041 - 19968: jis0212<<14 | 0x4A<<7 | 0x2D,\n\t40042 - 19968: jis0212<<14 | 0x4A<<7 | 0x2E,\n\t40043 - 19968: jis0212<<14 | 0x4A<<7 | 0x30,\n\t40046 - 19968: jis0212<<14 | 0x4A<<7 | 0x32,\n\t40048 - 19968: jis0212<<14 | 0x4A<<7 | 0x33,\n\t40050 - 19968: jis0212<<14 | 0x4A<<7 | 0x34,\n\t40053 - 19968: jis0212<<14 | 0x4A<<7 | 0x35,\n\t40054 - 19968: jis0208<<14 | 0x51<<7 | 0x47,\n\t40055 - 19968: jis0212<<14 | 0x4A<<7 | 0x36,\n\t40056 - 19968: jis0208<<14 | 0x51<<7 | 0x48,\n\t40059 - 19968: jis0212<<14 | 0x4A<<7 | 0x37,\n\t40165 - 19968: jis0208<<14 | 0x23<<7 | 0x1A,\n\t40166 - 19968: jis0212<<14 | 0x4A<<7 | 0x38,\n\t40167 - 19968: jis0208<<14 | 0x51<<7 | 0x49,\n\t40169 - 19968: jis0208<<14 | 0x27<<7 | 0x16,\n\t40171 - 19968: jis0208<<14 | 0x51<<7 | 0x4E,\n\t40172 - 19968: jis0208<<14 | 0x51<<7 | 0x4A,\n\t40176 - 19968: jis0208<<14 | 0x51<<7 | 0x4B,\n\t40178 - 19968: jis0212<<14 | 0x4A<<7 | 0x39,\n\t40179 - 19968: jis0208<<14 | 0x2A<<7 | 0x10,\n\t40180 - 19968: jis0208<<14 | 0x2B<<7 | 0x23,\n\t40182 - 19968: jis0208<<14 | 0x25<<7 | 0x2F,\n\t40183 - 19968: jis0212<<14 | 0x4A<<7 | 0x3A,\n\t40185 - 19968: jis0212<<14 | 0x4A<<7 | 0x3B,\n\t40194 - 19968: jis0212<<14 | 0x4A<<7 | 0x3D,\n\t40195 - 19968: jis0208<<14 | 0x51<<7 | 0x4F,\n\t40198 - 19968: jis0208<<14 | 0x51<<7 | 0x50,\n\t40199 - 19968: jis0208<<14 | 0x25<<7 | 0x1D,\n\t40200 - 19968: jis0208<<14 | 0x51<<7 | 0x4D,\n\t40201 - 19968: jis0208<<14 | 0x51<<7 | 0x4C,\n\t40203 - 19968: jis0212<<14 | 0x4A<<7 | 0x3C,\n\t40206 - 19968: jis0208<<14 | 0x11<<7 | 0x09,\n\t40209 - 19968: jis0212<<14 | 0x4A<<7 | 0x3E,\n\t40210 - 19968: jis0208<<14 | 0x51<<7 | 0x58,\n\t40213 - 19968: jis0208<<14 | 0x51<<7 | 0x57,\n\t40215 - 19968: jis0212<<14 | 0x4A<<7 | 0x3F,\n\t40216 - 19968: jis0212<<14 | 0x4A<<7 | 0x40,\n\t40219 - 19968: jis0208<<14 | 0x10<<7 | 0x54,\n\t40220 - 19968: jis0212<<14 | 0x4A<<7 | 0x41,\n\t40221 - 19968: jis0212<<14 | 0x4A<<7 | 0x42,\n\t40222 - 19968: jis0212<<14 | 0x4A<<7 | 0x43,\n\t40223 - 19968: jis0208<<14 | 0x51<<7 | 0x55,\n\t40227 - 19968: jis0208<<14 | 0x51<<7 | 0x54,\n\t40230 - 19968: jis0208<<14 | 0x51<<7 | 0x52,\n\t40232 - 19968: jis0208<<14 | 0x12<<7 | 0x5A,\n\t40234 - 19968: jis0208<<14 | 0x51<<7 | 0x51,\n\t40235 - 19968: jis0208<<14 | 0x1B<<7 | 0x11,\n\t40236 - 19968: jis0208<<14 | 0x11<<7 | 0x08,\n\t40239 - 19968: jis0212<<14 | 0x4A<<7 | 0x44,\n\t40240 - 19968: jis0212<<14 | 0x4A<<7 | 0x45,\n\t40242 - 19968: jis0212<<14 | 0x4A<<7 | 0x46,\n\t40243 - 19968: jis0212<<14 | 0x4A<<7 | 0x47,\n\t40244 - 19968: jis0212<<14 | 0x4A<<7 | 0x48,\n\t40250 - 19968: jis0212<<14 | 0x4A<<7 | 0x49,\n\t40251 - 19968: jis0208<<14 | 0x18<<7 | 0x42,\n\t40252 - 19968: jis0212<<14 | 0x4A<<7 | 0x4A,\n\t40253 - 19968: jis0212<<14 | 0x4A<<7 | 0x4C,\n\t40254 - 19968: jis0208<<14 | 0x51<<7 | 0x5B,\n\t40255 - 19968: jis0208<<14 | 0x51<<7 | 0x5A,\n\t40257 - 19968: jis0208<<14 | 0x51<<7 | 0x59,\n\t40258 - 19968: jis0212<<14 | 0x4A<<7 | 0x4D,\n\t40259 - 19968: jis0212<<14 | 0x4A<<7 | 0x4E,\n\t40260 - 19968: jis0208<<14 | 0x51<<7 | 0x56,\n\t40261 - 19968: jis0212<<14 | 0x4A<<7 | 0x4B,\n\t40262 - 19968: jis0208<<14 | 0x51<<7 | 0x5C,\n\t40263 - 19968: jis0212<<14 | 0x4A<<7 | 0x4F,\n\t40264 - 19968: jis0208<<14 | 0x51<<7 | 0x5D,\n\t40266 - 19968: jis0212<<14 | 0x4A<<7 | 0x50,\n\t40272 - 19968: jis0208<<14 | 0x52<<7 | 0x04,\n\t40273 - 19968: jis0208<<14 | 0x52<<7 | 0x03,\n\t40275 - 19968: jis0212<<14 | 0x4A<<7 | 0x51,\n\t40276 - 19968: jis0212<<14 | 0x4A<<7 | 0x52,\n\t40281 - 19968: jis0208<<14 | 0x52<<7 | 0x05,\n\t40284 - 19968: jis0208<<14 | 0x10<<7 | 0x0C,\n\t40285 - 19968: jis0208<<14 | 0x52<<7 | 0x00,\n\t40286 - 19968: jis0208<<14 | 0x52<<7 | 0x01,\n\t40287 - 19968: jis0212<<14 | 0x4A<<7 | 0x53,\n\t40288 - 19968: jis0208<<14 | 0x18<<7 | 0x53,\n\t40289 - 19968: jis0208<<14 | 0x2B<<7 | 0x18,\n\t40290 - 19968: jis0212<<14 | 0x4A<<7 | 0x55,\n\t40291 - 19968: jis0212<<14 | 0x4A<<7 | 0x54,\n\t40292 - 19968: jis0208<<14 | 0x52<<7 | 0x02,\n\t40293 - 19968: jis0212<<14 | 0x4A<<7 | 0x56,\n\t40297 - 19968: jis0212<<14 | 0x4A<<7 | 0x57,\n\t40298 - 19968: jis0212<<14 | 0x4A<<7 | 0x58,\n\t40299 - 19968: jis0208<<14 | 0x5B<<7 | 0x4A,\n\t40300 - 19968: jis0208<<14 | 0x2A<<7 | 0x11,\n\t40303 - 19968: jis0208<<14 | 0x52<<7 | 0x0A,\n\t40304 - 19968: jis0208<<14 | 0x5B<<7 | 0x49,\n\t40306 - 19968: jis0208<<14 | 0x52<<7 | 0x06,\n\t40310 - 19968: jis0212<<14 | 0x4A<<7 | 0x5B,\n\t40311 - 19968: jis0212<<14 | 0x4A<<7 | 0x5C,\n\t40314 - 19968: jis0208<<14 | 0x52<<7 | 0x0B,\n\t40315 - 19968: jis0212<<14 | 0x4A<<7 | 0x5D,\n\t40316 - 19968: jis0212<<14 | 0x4B<<7 | 0x00,\n\t40318 - 19968: jis0212<<14 | 0x4B<<7 | 0x01,\n\t40323 - 19968: jis0212<<14 | 0x4B<<7 | 0x02,\n\t40324 - 19968: jis0212<<14 | 0x4B<<7 | 0x03,\n\t40326 - 19968: jis0212<<14 | 0x4B<<7 | 0x04,\n\t40327 - 19968: jis0208<<14 | 0x52<<7 | 0x08,\n\t40329 - 19968: jis0208<<14 | 0x52<<7 | 0x07,\n\t40330 - 19968: jis0212<<14 | 0x4B<<7 | 0x05,\n\t40333 - 19968: jis0212<<14 | 0x4B<<7 | 0x06,\n\t40334 - 19968: jis0212<<14 | 0x4B<<7 | 0x07,\n\t40335 - 19968: jis0208<<14 | 0x16<<7 | 0x3B,\n\t40338 - 19968: jis0212<<14 | 0x4B<<7 | 0x08,\n\t40339 - 19968: jis0212<<14 | 0x4B<<7 | 0x09,\n\t40341 - 19968: jis0212<<14 | 0x4B<<7 | 0x0A,\n\t40342 - 19968: jis0212<<14 | 0x4B<<7 | 0x0B,\n\t40343 - 19968: jis0212<<14 | 0x4B<<7 | 0x0C,\n\t40344 - 19968: jis0212<<14 | 0x4B<<7 | 0x0D,\n\t40346 - 19968: jis0208<<14 | 0x52<<7 | 0x0C,\n\t40353 - 19968: jis0212<<14 | 0x4B<<7 | 0x0E,\n\t40356 - 19968: jis0208<<14 | 0x52<<7 | 0x0D,\n\t40361 - 19968: jis0208<<14 | 0x52<<7 | 0x0E,\n\t40362 - 19968: jis0212<<14 | 0x4B<<7 | 0x0F,\n\t40363 - 19968: jis0208<<14 | 0x52<<7 | 0x09,\n\t40364 - 19968: jis0212<<14 | 0x4B<<7 | 0x10,\n\t40366 - 19968: jis0212<<14 | 0x4B<<7 | 0x11,\n\t40367 - 19968: jis0208<<14 | 0x51<<7 | 0x53,\n\t40369 - 19968: jis0212<<14 | 0x4B<<7 | 0x12,\n\t40370 - 19968: jis0208<<14 | 0x52<<7 | 0x0F,\n\t40372 - 19968: jis0208<<14 | 0x23<<7 | 0x40,\n\t40373 - 19968: jis0212<<14 | 0x4B<<7 | 0x13,\n\t40376 - 19968: jis0208<<14 | 0x52<<7 | 0x13,\n\t40377 - 19968: jis0212<<14 | 0x4B<<7 | 0x14,\n\t40378 - 19968: jis0208<<14 | 0x52<<7 | 0x14,\n\t40379 - 19968: jis0208<<14 | 0x52<<7 | 0x12,\n\t40380 - 19968: jis0212<<14 | 0x4B<<7 | 0x15,\n\t40383 - 19968: jis0212<<14 | 0x4B<<7 | 0x16,\n\t40385 - 19968: jis0208<<14 | 0x52<<7 | 0x11,\n\t40386 - 19968: jis0208<<14 | 0x52<<7 | 0x17,\n\t40387 - 19968: jis0212<<14 | 0x4B<<7 | 0x17,\n\t40388 - 19968: jis0208<<14 | 0x52<<7 | 0x10,\n\t40390 - 19968: jis0208<<14 | 0x52<<7 | 0x15,\n\t40391 - 19968: jis0212<<14 | 0x4B<<7 | 0x18,\n\t40393 - 19968: jis0212<<14 | 0x4B<<7 | 0x19,\n\t40394 - 19968: jis0212<<14 | 0x4B<<7 | 0x1A,\n\t40399 - 19968: jis0208<<14 | 0x52<<7 | 0x16,\n\t40403 - 19968: jis0208<<14 | 0x52<<7 | 0x19,\n\t40404 - 19968: jis0212<<14 | 0x4B<<7 | 0x1B,\n\t40405 - 19968: jis0212<<14 | 0x4B<<7 | 0x1C,\n\t40406 - 19968: jis0212<<14 | 0x4B<<7 | 0x1D,\n\t40407 - 19968: jis0212<<14 | 0x4B<<7 | 0x1E,\n\t40409 - 19968: jis0208<<14 | 0x52<<7 | 0x18,\n\t40410 - 19968: jis0212<<14 | 0x4B<<7 | 0x1F,\n\t40414 - 19968: jis0212<<14 | 0x4B<<7 | 0x20,\n\t40415 - 19968: jis0212<<14 | 0x4B<<7 | 0x21,\n\t40416 - 19968: jis0212<<14 | 0x4B<<7 | 0x22,\n\t40421 - 19968: jis0212<<14 | 0x4B<<7 | 0x23,\n\t40422 - 19968: jis0208<<14 | 0x52<<7 | 0x1B,\n\t40423 - 19968: jis0212<<14 | 0x4B<<7 | 0x24,\n\t40425 - 19968: jis0212<<14 | 0x4B<<7 | 0x25,\n\t40427 - 19968: jis0212<<14 | 0x4B<<7 | 0x26,\n\t40429 - 19968: jis0208<<14 | 0x52<<7 | 0x1C,\n\t40430 - 19968: jis0212<<14 | 0x4B<<7 | 0x27,\n\t40431 - 19968: jis0208<<14 | 0x52<<7 | 0x1D,\n\t40432 - 19968: jis0212<<14 | 0x4B<<7 | 0x28,\n\t40434 - 19968: jis0208<<14 | 0x2E<<7 | 0x28,\n\t40435 - 19968: jis0212<<14 | 0x4B<<7 | 0x29,\n\t40436 - 19968: jis0212<<14 | 0x4B<<7 | 0x2A,\n\t40440 - 19968: jis0208<<14 | 0x52<<7 | 0x1A,\n\t40441 - 19968: jis0208<<14 | 0x21<<7 | 0x4A,\n\t40442 - 19968: jis0208<<14 | 0x19<<7 | 0x4C,\n\t40445 - 19968: jis0208<<14 | 0x52<<7 | 0x1E,\n\t40446 - 19968: jis0212<<14 | 0x4B<<7 | 0x2B,\n\t40450 - 19968: jis0212<<14 | 0x4B<<7 | 0x2D,\n\t40455 - 19968: jis0212<<14 | 0x4B<<7 | 0x2E,\n\t40458 - 19968: jis0212<<14 | 0x4B<<7 | 0x2C,\n\t40462 - 19968: jis0212<<14 | 0x4B<<7 | 0x2F,\n\t40464 - 19968: jis0212<<14 | 0x4B<<7 | 0x30,\n\t40465 - 19968: jis0212<<14 | 0x4B<<7 | 0x31,\n\t40466 - 19968: jis0212<<14 | 0x4B<<7 | 0x32,\n\t40469 - 19968: jis0212<<14 | 0x4B<<7 | 0x33,\n\t40470 - 19968: jis0212<<14 | 0x4B<<7 | 0x34,\n\t40473 - 19968: jis0208<<14 | 0x5B<<7 | 0x4C,\n\t40474 - 19968: jis0208<<14 | 0x52<<7 | 0x1F,\n\t40475 - 19968: jis0208<<14 | 0x52<<7 | 0x20,\n\t40476 - 19968: jis0212<<14 | 0x4B<<7 | 0x36,\n\t40477 - 19968: jis0212<<14 | 0x4B<<7 | 0x37,\n\t40478 - 19968: jis0208<<14 | 0x52<<7 | 0x21,\n\t40565 - 19968: jis0208<<14 | 0x52<<7 | 0x22,\n\t40568 - 19968: jis0208<<14 | 0x17<<7 | 0x13,\n\t40569 - 19968: jis0208<<14 | 0x52<<7 | 0x23,\n\t40570 - 19968: jis0212<<14 | 0x4B<<7 | 0x38,\n\t40571 - 19968: jis0212<<14 | 0x4B<<7 | 0x39,\n\t40572 - 19968: jis0212<<14 | 0x4B<<7 | 0x3A,\n\t40573 - 19968: jis0208<<14 | 0x52<<7 | 0x24,\n\t40575 - 19968: jis0208<<14 | 0x1B<<7 | 0x0E,\n\t40576 - 19968: jis0212<<14 | 0x4B<<7 | 0x3B,\n\t40577 - 19968: jis0208<<14 | 0x52<<7 | 0x25,\n\t40578 - 19968: jis0212<<14 | 0x4B<<7 | 0x3C,\n\t40579 - 19968: jis0212<<14 | 0x4B<<7 | 0x3D,\n\t40580 - 19968: jis0212<<14 | 0x4B<<7 | 0x3E,\n\t40581 - 19968: jis0212<<14 | 0x4B<<7 | 0x3F,\n\t40583 - 19968: jis0212<<14 | 0x4B<<7 | 0x40,\n\t40584 - 19968: jis0208<<14 | 0x52<<7 | 0x26,\n\t40587 - 19968: jis0208<<14 | 0x52<<7 | 0x27,\n\t40588 - 19968: jis0208<<14 | 0x52<<7 | 0x28,\n\t40590 - 19968: jis0212<<14 | 0x4B<<7 | 0x41,\n\t40591 - 19968: jis0212<<14 | 0x4B<<7 | 0x42,\n\t40593 - 19968: jis0208<<14 | 0x52<<7 | 0x2B,\n\t40594 - 19968: jis0208<<14 | 0x52<<7 | 0x29,\n\t40595 - 19968: jis0208<<14 | 0x2E<<7 | 0x1B,\n\t40597 - 19968: jis0208<<14 | 0x52<<7 | 0x2A,\n\t40598 - 19968: jis0212<<14 | 0x4B<<7 | 0x43,\n\t40599 - 19968: jis0208<<14 | 0x2D<<7 | 0x4E,\n\t40600 - 19968: jis0212<<14 | 0x4B<<7 | 0x44,\n\t40603 - 19968: jis0212<<14 | 0x4B<<7 | 0x45,\n\t40605 - 19968: jis0208<<14 | 0x52<<7 | 0x2C,\n\t40606 - 19968: jis0212<<14 | 0x4B<<7 | 0x46,\n\t40607 - 19968: jis0208<<14 | 0x2D<<7 | 0x3A,\n\t40612 - 19968: jis0212<<14 | 0x4B<<7 | 0x47,\n\t40613 - 19968: jis0208<<14 | 0x52<<7 | 0x2D,\n\t40614 - 19968: jis0208<<14 | 0x26<<7 | 0x5D,\n\t40616 - 19968: jis0212<<14 | 0x4B<<7 | 0x48,\n\t40617 - 19968: jis0208<<14 | 0x52<<7 | 0x2E,\n\t40618 - 19968: jis0208<<14 | 0x52<<7 | 0x30,\n\t40620 - 19968: jis0212<<14 | 0x4B<<7 | 0x49,\n\t40621 - 19968: jis0208<<14 | 0x52<<7 | 0x31,\n\t40622 - 19968: jis0212<<14 | 0x4B<<7 | 0x4A,\n\t40623 - 19968: jis0212<<14 | 0x4B<<7 | 0x4B,\n\t40624 - 19968: jis0212<<14 | 0x4B<<7 | 0x4C,\n\t40627 - 19968: jis0212<<14 | 0x4B<<7 | 0x4D,\n\t40628 - 19968: jis0212<<14 | 0x4B<<7 | 0x4E,\n\t40629 - 19968: jis0212<<14 | 0x4B<<7 | 0x4F,\n\t40632 - 19968: jis0208<<14 | 0x52<<7 | 0x2F,\n\t40633 - 19968: jis0208<<14 | 0x18<<7 | 0x4C,\n\t40634 - 19968: jis0208<<14 | 0x2B<<7 | 0x2C,\n\t40635 - 19968: jis0208<<14 | 0x2A<<7 | 0x42,\n\t40636 - 19968: jis0208<<14 | 0x35<<7 | 0x56,\n\t40638 - 19968: jis0208<<14 | 0x3C<<7 | 0x3F,\n\t40639 - 19968: jis0208<<14 | 0x2A<<7 | 0x5A,\n\t40644 - 19968: jis0208<<14 | 0x11<<7 | 0x0A,\n\t40646 - 19968: jis0212<<14 | 0x4B<<7 | 0x50,\n\t40648 - 19968: jis0212<<14 | 0x4B<<7 | 0x51,\n\t40651 - 19968: jis0212<<14 | 0x4B<<7 | 0x52,\n\t40652 - 19968: jis0208<<14 | 0x52<<7 | 0x33,\n\t40653 - 19968: jis0208<<14 | 0x14<<7 | 0x2F,\n\t40654 - 19968: jis0208<<14 | 0x52<<7 | 0x34,\n\t40655 - 19968: jis0208<<14 | 0x52<<7 | 0x35,\n\t40656 - 19968: jis0208<<14 | 0x52<<7 | 0x36,\n\t40657 - 19968: jis0208<<14 | 0x5B<<7 | 0x4D,\n\t40658 - 19968: jis0208<<14 | 0x18<<7 | 0x54,\n\t40660 - 19968: jis0208<<14 | 0x52<<7 | 0x37,\n\t40661 - 19968: jis0212<<14 | 0x4B<<7 | 0x53,\n\t40664 - 19968: jis0208<<14 | 0x3F<<7 | 0x33,\n\t40665 - 19968: jis0208<<14 | 0x2B<<7 | 0x3A,\n\t40667 - 19968: jis0208<<14 | 0x21<<7 | 0x42,\n\t40668 - 19968: jis0208<<14 | 0x52<<7 | 0x38,\n\t40669 - 19968: jis0208<<14 | 0x52<<7 | 0x3A,\n\t40670 - 19968: jis0208<<14 | 0x52<<7 | 0x39,\n\t40671 - 19968: jis0212<<14 | 0x4B<<7 | 0x54,\n\t40672 - 19968: jis0208<<14 | 0x52<<7 | 0x3B,\n\t40676 - 19968: jis0212<<14 | 0x4B<<7 | 0x55,\n\t40677 - 19968: jis0208<<14 | 0x52<<7 | 0x3C,\n\t40679 - 19968: jis0212<<14 | 0x4B<<7 | 0x56,\n\t40680 - 19968: jis0208<<14 | 0x52<<7 | 0x3D,\n\t40684 - 19968: jis0212<<14 | 0x4B<<7 | 0x57,\n\t40685 - 19968: jis0212<<14 | 0x4B<<7 | 0x58,\n\t40686 - 19968: jis0212<<14 | 0x4B<<7 | 0x59,\n\t40687 - 19968: jis0208<<14 | 0x52<<7 | 0x3E,\n\t40688 - 19968: jis0212<<14 | 0x4B<<7 | 0x5A,\n\t40689 - 19968: jis0212<<14 | 0x4B<<7 | 0x5B,\n\t40690 - 19968: jis0212<<14 | 0x4B<<7 | 0x5C,\n\t40692 - 19968: jis0208<<14 | 0x52<<7 | 0x3F,\n\t40693 - 19968: jis0212<<14 | 0x4B<<7 | 0x5D,\n\t40694 - 19968: jis0208<<14 | 0x52<<7 | 0x40,\n\t40695 - 19968: jis0208<<14 | 0x52<<7 | 0x41,\n\t40696 - 19968: jis0212<<14 | 0x4C<<7 | 0x00,\n\t40697 - 19968: jis0208<<14 | 0x52<<7 | 0x42,\n\t40699 - 19968: jis0208<<14 | 0x52<<7 | 0x43,\n\t40700 - 19968: jis0208<<14 | 0x52<<7 | 0x44,\n\t40701 - 19968: jis0208<<14 | 0x52<<7 | 0x45,\n\t40703 - 19968: jis0212<<14 | 0x4C<<7 | 0x01,\n\t40706 - 19968: jis0212<<14 | 0x4C<<7 | 0x02,\n\t40707 - 19968: jis0212<<14 | 0x4C<<7 | 0x03,\n\t40711 - 19968: jis0208<<14 | 0x52<<7 | 0x46,\n\t40712 - 19968: jis0208<<14 | 0x52<<7 | 0x47,\n\t40713 - 19968: jis0212<<14 | 0x4C<<7 | 0x04,\n\t40718 - 19968: jis0208<<14 | 0x24<<7 | 0x03,\n\t40719 - 19968: jis0212<<14 | 0x4C<<7 | 0x05,\n\t40720 - 19968: jis0212<<14 | 0x4C<<7 | 0x06,\n\t40721 - 19968: jis0212<<14 | 0x4C<<7 | 0x07,\n\t40722 - 19968: jis0212<<14 | 0x4C<<7 | 0x08,\n\t40723 - 19968: jis0208<<14 | 0x17<<7 | 0x3C,\n\t40724 - 19968: jis0212<<14 | 0x4C<<7 | 0x09,\n\t40725 - 19968: jis0208<<14 | 0x52<<7 | 0x49,\n\t40726 - 19968: jis0212<<14 | 0x4C<<7 | 0x0A,\n\t40727 - 19968: jis0212<<14 | 0x4C<<7 | 0x0B,\n\t40729 - 19968: jis0212<<14 | 0x4C<<7 | 0x0C,\n\t40730 - 19968: jis0212<<14 | 0x4C<<7 | 0x0D,\n\t40731 - 19968: jis0212<<14 | 0x4C<<7 | 0x0E,\n\t40735 - 19968: jis0212<<14 | 0x4C<<7 | 0x0F,\n\t40736 - 19968: jis0208<<14 | 0x20<<7 | 0x2C,\n\t40737 - 19968: jis0208<<14 | 0x52<<7 | 0x4A,\n\t40738 - 19968: jis0212<<14 | 0x4C<<7 | 0x10,\n\t40742 - 19968: jis0212<<14 | 0x4C<<7 | 0x11,\n\t40746 - 19968: jis0212<<14 | 0x4C<<7 | 0x12,\n\t40747 - 19968: jis0212<<14 | 0x4C<<7 | 0x13,\n\t40748 - 19968: jis0208<<14 | 0x52<<7 | 0x4B,\n\t40751 - 19968: jis0212<<14 | 0x4C<<7 | 0x14,\n\t40753 - 19968: jis0212<<14 | 0x4C<<7 | 0x15,\n\t40754 - 19968: jis0212<<14 | 0x4C<<7 | 0x16,\n\t40756 - 19968: jis0212<<14 | 0x4C<<7 | 0x17,\n\t40759 - 19968: jis0212<<14 | 0x4C<<7 | 0x18,\n\t40761 - 19968: jis0212<<14 | 0x4C<<7 | 0x19,\n\t40762 - 19968: jis0212<<14 | 0x4C<<7 | 0x1A,\n\t40763 - 19968: jis0208<<14 | 0x28<<7 | 0x00,\n\t40764 - 19968: jis0212<<14 | 0x4C<<7 | 0x1B,\n\t40765 - 19968: jis0212<<14 | 0x4C<<7 | 0x1C,\n\t40766 - 19968: jis0208<<14 | 0x52<<7 | 0x4C,\n\t40767 - 19968: jis0212<<14 | 0x4C<<7 | 0x1D,\n\t40769 - 19968: jis0212<<14 | 0x4C<<7 | 0x1E,\n\t40771 - 19968: jis0212<<14 | 0x4C<<7 | 0x1F,\n\t40772 - 19968: jis0212<<14 | 0x4C<<7 | 0x20,\n\t40773 - 19968: jis0212<<14 | 0x4C<<7 | 0x21,\n\t40774 - 19968: jis0212<<14 | 0x4C<<7 | 0x22,\n\t40775 - 19968: jis0212<<14 | 0x4C<<7 | 0x23,\n\t40778 - 19968: jis0208<<14 | 0x52<<7 | 0x4D,\n\t40779 - 19968: jis0208<<14 | 0x42<<7 | 0x16,\n\t40782 - 19968: jis0208<<14 | 0x4B<<7 | 0x39,\n\t40783 - 19968: jis0208<<14 | 0x4F<<7 | 0x4C,\n\t40786 - 19968: jis0208<<14 | 0x52<<7 | 0x4E,\n\t40787 - 19968: jis0212<<14 | 0x4C<<7 | 0x24,\n\t40788 - 19968: jis0208<<14 | 0x52<<7 | 0x4F,\n\t40789 - 19968: jis0212<<14 | 0x4C<<7 | 0x25,\n\t40790 - 19968: jis0212<<14 | 0x4C<<7 | 0x26,\n\t40791 - 19968: jis0212<<14 | 0x4C<<7 | 0x27,\n\t40792 - 19968: jis0212<<14 | 0x4C<<7 | 0x28,\n\t40794 - 19968: jis0212<<14 | 0x4C<<7 | 0x29,\n\t40797 - 19968: jis0212<<14 | 0x4C<<7 | 0x2A,\n\t40798 - 19968: jis0212<<14 | 0x4C<<7 | 0x2B,\n\t40799 - 19968: jis0208<<14 | 0x52<<7 | 0x51,\n\t40800 - 19968: jis0208<<14 | 0x52<<7 | 0x52,\n\t40801 - 19968: jis0208<<14 | 0x52<<7 | 0x53,\n\t40802 - 19968: jis0208<<14 | 0x2D<<7 | 0x4F,\n\t40803 - 19968: jis0208<<14 | 0x52<<7 | 0x50,\n\t40806 - 19968: jis0208<<14 | 0x52<<7 | 0x54,\n\t40807 - 19968: jis0208<<14 | 0x52<<7 | 0x55,\n\t40808 - 19968: jis0212<<14 | 0x4C<<7 | 0x2C,\n\t40809 - 19968: jis0212<<14 | 0x4C<<7 | 0x2D,\n\t40810 - 19968: jis0208<<14 | 0x52<<7 | 0x57,\n\t40812 - 19968: jis0208<<14 | 0x52<<7 | 0x56,\n\t40813 - 19968: jis0212<<14 | 0x4C<<7 | 0x2E,\n\t40814 - 19968: jis0212<<14 | 0x4C<<7 | 0x2F,\n\t40815 - 19968: jis0212<<14 | 0x4C<<7 | 0x30,\n\t40816 - 19968: jis0212<<14 | 0x4C<<7 | 0x31,\n\t40817 - 19968: jis0212<<14 | 0x4C<<7 | 0x32,\n\t40818 - 19968: jis0208<<14 | 0x52<<7 | 0x59,\n\t40819 - 19968: jis0212<<14 | 0x4C<<7 | 0x33,\n\t40821 - 19968: jis0212<<14 | 0x4C<<7 | 0x34,\n\t40822 - 19968: jis0208<<14 | 0x52<<7 | 0x5A,\n\t40823 - 19968: jis0208<<14 | 0x52<<7 | 0x58,\n\t40826 - 19968: jis0212<<14 | 0x4C<<7 | 0x35,\n\t40829 - 19968: jis0212<<14 | 0x4C<<7 | 0x36,\n\t40845 - 19968: jis0208<<14 | 0x2D<<7 | 0x15,\n\t40847 - 19968: jis0212<<14 | 0x4C<<7 | 0x37,\n\t40848 - 19968: jis0212<<14 | 0x4C<<7 | 0x38,\n\t40849 - 19968: jis0212<<14 | 0x4C<<7 | 0x39,\n\t40850 - 19968: jis0212<<14 | 0x4C<<7 | 0x3A,\n\t40852 - 19968: jis0212<<14 | 0x4C<<7 | 0x3B,\n\t40853 - 19968: jis0208<<14 | 0x52<<7 | 0x5B,\n\t40854 - 19968: jis0212<<14 | 0x4C<<7 | 0x3C,\n\t40855 - 19968: jis0212<<14 | 0x4C<<7 | 0x3D,\n\t40860 - 19968: jis0208<<14 | 0x52<<7 | 0x5C,\n\t40861 - 19968: jis0208<<14 | 0x42<<7 | 0x33,\n\t40862 - 19968: jis0212<<14 | 0x4C<<7 | 0x3E,\n\t40864 - 19968: jis0208<<14 | 0x52<<7 | 0x5D,\n\t40865 - 19968: jis0212<<14 | 0x4C<<7 | 0x3F,\n\t40866 - 19968: jis0212<<14 | 0x4C<<7 | 0x40,\n\t40867 - 19968: jis0212<<14 | 0x4C<<7 | 0x41,\n\t40869 - 19968: jis0212<<14 | 0x4C<<7 | 0x42,\n}\n\nconst encode1Low, encode1High = 8208, 9840\n\nvar encode1 = [...]uint16{\n\t8208 - 8208: jis0208<<14 | 0x00<<7 | 0x1D,\n\t8213 - 8208: jis0208<<14 | 0x00<<7 | 0x1C,\n\t8216 - 8208: jis0208<<14 | 0x00<<7 | 0x25,\n\t8217 - 8208: jis0208<<14 | 0x00<<7 | 0x26,\n\t8220 - 8208: jis0208<<14 | 0x00<<7 | 0x27,\n\t8221 - 8208: jis0208<<14 | 0x00<<7 | 0x28,\n\t8224 - 8208: jis0208<<14 | 0x01<<7 | 0x56,\n\t8225 - 8208: jis0208<<14 | 0x01<<7 | 0x57,\n\t8229 - 8208: jis0208<<14 | 0x00<<7 | 0x24,\n\t8230 - 8208: jis0208<<14 | 0x00<<7 | 0x23,\n\t8240 - 8208: jis0208<<14 | 0x01<<7 | 0x52,\n\t8242 - 8208: jis0208<<14 | 0x00<<7 | 0x4B,\n\t8243 - 8208: jis0208<<14 | 0x00<<7 | 0x4C,\n\t8251 - 8208: jis0208<<14 | 0x01<<7 | 0x07,\n\t8451 - 8208: jis0208<<14 | 0x00<<7 | 0x4D,\n\t8470 - 8208: jis0208<<14 | 0x0C<<7 | 0x41,\n\t8481 - 8208: jis0208<<14 | 0x0C<<7 | 0x43,\n\t8482 - 8208: jis0212<<14 | 0x01<<7 | 0x4E,\n\t8491 - 8208: jis0208<<14 | 0x01<<7 | 0x51,\n\t8544 - 8208: jis0208<<14 | 0x0C<<7 | 0x14,\n\t8545 - 8208: jis0208<<14 | 0x0C<<7 | 0x15,\n\t8546 - 8208: jis0208<<14 | 0x0C<<7 | 0x16,\n\t8547 - 8208: jis0208<<14 | 0x0C<<7 | 0x17,\n\t8548 - 8208: jis0208<<14 | 0x0C<<7 | 0x18,\n\t8549 - 8208: jis0208<<14 | 0x0C<<7 | 0x19,\n\t8550 - 8208: jis0208<<14 | 0x0C<<7 | 0x1A,\n\t8551 - 8208: jis0208<<14 | 0x0C<<7 | 0x1B,\n\t8552 - 8208: jis0208<<14 | 0x0C<<7 | 0x1C,\n\t8553 - 8208: jis0208<<14 | 0x0C<<7 | 0x1D,\n\t8560 - 8208: jis0208<<14 | 0x5B<<7 | 0x50,\n\t8561 - 8208: jis0208<<14 | 0x5B<<7 | 0x51,\n\t8562 - 8208: jis0208<<14 | 0x5B<<7 | 0x52,\n\t8563 - 8208: jis0208<<14 | 0x5B<<7 | 0x53,\n\t8564 - 8208: jis0208<<14 | 0x5B<<7 | 0x54,\n\t8565 - 8208: jis0208<<14 | 0x5B<<7 | 0x55,\n\t8566 - 8208: jis0208<<14 | 0x5B<<7 | 0x56,\n\t8567 - 8208: jis0208<<14 | 0x5B<<7 | 0x57,\n\t8568 - 8208: jis0208<<14 | 0x5B<<7 | 0x58,\n\t8569 - 8208: jis0208<<14 | 0x5B<<7 | 0x59,\n\t8592 - 8208: jis0208<<14 | 0x01<<7 | 0x0A,\n\t8593 - 8208: jis0208<<14 | 0x01<<7 | 0x0B,\n\t8594 - 8208: jis0208<<14 | 0x01<<7 | 0x09,\n\t8595 - 8208: jis0208<<14 | 0x01<<7 | 0x0C,\n\t8658 - 8208: jis0208<<14 | 0x01<<7 | 0x2C,\n\t8660 - 8208: jis0208<<14 | 0x01<<7 | 0x2D,\n\t8704 - 8208: jis0208<<14 | 0x01<<7 | 0x2E,\n\t8706 - 8208: jis0208<<14 | 0x01<<7 | 0x3E,\n\t8707 - 8208: jis0208<<14 | 0x01<<7 | 0x2F,\n\t8711 - 8208: jis0208<<14 | 0x01<<7 | 0x3F,\n\t8712 - 8208: jis0208<<14 | 0x01<<7 | 0x19,\n\t8715 - 8208: jis0208<<14 | 0x01<<7 | 0x1A,\n\t8721 - 8208: jis0208<<14 | 0x0C<<7 | 0x53,\n\t8730 - 8208: jis0208<<14 | 0x01<<7 | 0x44,\n\t8733 - 8208: jis0208<<14 | 0x01<<7 | 0x46,\n\t8734 - 8208: jis0208<<14 | 0x00<<7 | 0x46,\n\t8735 - 8208: jis0208<<14 | 0x0C<<7 | 0x57,\n\t8736 - 8208: jis0208<<14 | 0x01<<7 | 0x3B,\n\t8741 - 8208: jis0208<<14 | 0x00<<7 | 0x21,\n\t8743 - 8208: jis0208<<14 | 0x01<<7 | 0x29,\n\t8744 - 8208: jis0208<<14 | 0x01<<7 | 0x2A,\n\t8745 - 8208: jis0208<<14 | 0x01<<7 | 0x20,\n\t8746 - 8208: jis0208<<14 | 0x01<<7 | 0x1F,\n\t8747 - 8208: jis0208<<14 | 0x01<<7 | 0x48,\n\t8748 - 8208: jis0208<<14 | 0x01<<7 | 0x49,\n\t8750 - 8208: jis0208<<14 | 0x0C<<7 | 0x52,\n\t8756 - 8208: jis0208<<14 | 0x00<<7 | 0x47,\n\t8757 - 8208: jis0208<<14 | 0x01<<7 | 0x47,\n\t8765 - 8208: jis0208<<14 | 0x01<<7 | 0x45,\n\t8786 - 8208: jis0208<<14 | 0x01<<7 | 0x41,\n\t8800 - 8208: jis0208<<14 | 0x00<<7 | 0x41,\n\t8801 - 8208: jis0208<<14 | 0x01<<7 | 0x40,\n\t8806 - 8208: jis0208<<14 | 0x00<<7 | 0x44,\n\t8807 - 8208: jis0208<<14 | 0x00<<7 | 0x45,\n\t8810 - 8208: jis0208<<14 | 0x01<<7 | 0x42,\n\t8811 - 8208: jis0208<<14 | 0x01<<7 | 0x43,\n\t8834 - 8208: jis0208<<14 | 0x01<<7 | 0x1D,\n\t8835 - 8208: jis0208<<14 | 0x01<<7 | 0x1E,\n\t8838 - 8208: jis0208<<14 | 0x01<<7 | 0x1B,\n\t8839 - 8208: jis0208<<14 | 0x01<<7 | 0x1C,\n\t8869 - 8208: jis0208<<14 | 0x01<<7 | 0x3C,\n\t8895 - 8208: jis0208<<14 | 0x0C<<7 | 0x58,\n\t8978 - 8208: jis0208<<14 | 0x01<<7 | 0x3D,\n\t9312 - 8208: jis0208<<14 | 0x0C<<7 | 0x00,\n\t9313 - 8208: jis0208<<14 | 0x0C<<7 | 0x01,\n\t9314 - 8208: jis0208<<14 | 0x0C<<7 | 0x02,\n\t9315 - 8208: jis0208<<14 | 0x0C<<7 | 0x03,\n\t9316 - 8208: jis0208<<14 | 0x0C<<7 | 0x04,\n\t9317 - 8208: jis0208<<14 | 0x0C<<7 | 0x05,\n\t9318 - 8208: jis0208<<14 | 0x0C<<7 | 0x06,\n\t9319 - 8208: jis0208<<14 | 0x0C<<7 | 0x07,\n\t9320 - 8208: jis0208<<14 | 0x0C<<7 | 0x08,\n\t9321 - 8208: jis0208<<14 | 0x0C<<7 | 0x09,\n\t9322 - 8208: jis0208<<14 | 0x0C<<7 | 0x0A,\n\t9323 - 8208: jis0208<<14 | 0x0C<<7 | 0x0B,\n\t9324 - 8208: jis0208<<14 | 0x0C<<7 | 0x0C,\n\t9325 - 8208: jis0208<<14 | 0x0C<<7 | 0x0D,\n\t9326 - 8208: jis0208<<14 | 0x0C<<7 | 0x0E,\n\t9327 - 8208: jis0208<<14 | 0x0C<<7 | 0x0F,\n\t9328 - 8208: jis0208<<14 | 0x0C<<7 | 0x10,\n\t9329 - 8208: jis0208<<14 | 0x0C<<7 | 0x11,\n\t9330 - 8208: jis0208<<14 | 0x0C<<7 | 0x12,\n\t9331 - 8208: jis0208<<14 | 0x0C<<7 | 0x13,\n\t9472 - 8208: jis0208<<14 | 0x07<<7 | 0x00,\n\t9473 - 8208: jis0208<<14 | 0x07<<7 | 0x0B,\n\t9474 - 8208: jis0208<<14 | 0x07<<7 | 0x01,\n\t9475 - 8208: jis0208<<14 | 0x07<<7 | 0x0C,\n\t9484 - 8208: jis0208<<14 | 0x07<<7 | 0x02,\n\t9487 - 8208: jis0208<<14 | 0x07<<7 | 0x0D,\n\t9488 - 8208: jis0208<<14 | 0x07<<7 | 0x03,\n\t9491 - 8208: jis0208<<14 | 0x07<<7 | 0x0E,\n\t9492 - 8208: jis0208<<14 | 0x07<<7 | 0x05,\n\t9495 - 8208: jis0208<<14 | 0x07<<7 | 0x10,\n\t9496 - 8208: jis0208<<14 | 0x07<<7 | 0x04,\n\t9499 - 8208: jis0208<<14 | 0x07<<7 | 0x0F,\n\t9500 - 8208: jis0208<<14 | 0x07<<7 | 0x06,\n\t9501 - 8208: jis0208<<14 | 0x07<<7 | 0x1B,\n\t9504 - 8208: jis0208<<14 | 0x07<<7 | 0x16,\n\t9507 - 8208: jis0208<<14 | 0x07<<7 | 0x11,\n\t9508 - 8208: jis0208<<14 | 0x07<<7 | 0x08,\n\t9509 - 8208: jis0208<<14 | 0x07<<7 | 0x1D,\n\t9512 - 8208: jis0208<<14 | 0x07<<7 | 0x18,\n\t9515 - 8208: jis0208<<14 | 0x07<<7 | 0x13,\n\t9516 - 8208: jis0208<<14 | 0x07<<7 | 0x07,\n\t9519 - 8208: jis0208<<14 | 0x07<<7 | 0x17,\n\t9520 - 8208: jis0208<<14 | 0x07<<7 | 0x1C,\n\t9523 - 8208: jis0208<<14 | 0x07<<7 | 0x12,\n\t9524 - 8208: jis0208<<14 | 0x07<<7 | 0x09,\n\t9527 - 8208: jis0208<<14 | 0x07<<7 | 0x19,\n\t9528 - 8208: jis0208<<14 | 0x07<<7 | 0x1E,\n\t9531 - 8208: jis0208<<14 | 0x07<<7 | 0x14,\n\t9532 - 8208: jis0208<<14 | 0x07<<7 | 0x0A,\n\t9535 - 8208: jis0208<<14 | 0x07<<7 | 0x1A,\n\t9538 - 8208: jis0208<<14 | 0x07<<7 | 0x1F,\n\t9547 - 8208: jis0208<<14 | 0x07<<7 | 0x15,\n\t9632 - 8208: jis0208<<14 | 0x01<<7 | 0x02,\n\t9633 - 8208: jis0208<<14 | 0x01<<7 | 0x01,\n\t9650 - 8208: jis0208<<14 | 0x01<<7 | 0x04,\n\t9651 - 8208: jis0208<<14 | 0x01<<7 | 0x03,\n\t9660 - 8208: jis0208<<14 | 0x01<<7 | 0x06,\n\t9661 - 8208: jis0208<<14 | 0x01<<7 | 0x05,\n\t9670 - 8208: jis0208<<14 | 0x01<<7 | 0x00,\n\t9671 - 8208: jis0208<<14 | 0x00<<7 | 0x5D,\n\t9675 - 8208: jis0208<<14 | 0x00<<7 | 0x5A,\n\t9678 - 8208: jis0208<<14 | 0x00<<7 | 0x5C,\n\t9679 - 8208: jis0208<<14 | 0x00<<7 | 0x5B,\n\t9711 - 8208: jis0208<<14 | 0x01<<7 | 0x5D,\n\t9733 - 8208: jis0208<<14 | 0x00<<7 | 0x59,\n\t9734 - 8208: jis0208<<14 | 0x00<<7 | 0x58,\n\t9792 - 8208: jis0208<<14 | 0x00<<7 | 0x49,\n\t9794 - 8208: jis0208<<14 | 0x00<<7 | 0x48,\n\t9834 - 8208: jis0208<<14 | 0x01<<7 | 0x55,\n\t9837 - 8208: jis0208<<14 | 0x01<<7 | 0x54,\n\t9839 - 8208: jis0208<<14 | 0x01<<7 | 0x53,\n}\n\nconst encode2Low, encode2High = 12288, 13262\n\nvar encode2 = [...]uint16{\n\t12288 - 12288: jis0208<<14 | 0x00<<7 | 0x00,\n\t12289 - 12288: jis0208<<14 | 0x00<<7 | 0x01,\n\t12290 - 12288: jis0208<<14 | 0x00<<7 | 0x02,\n\t12291 - 12288: jis0208<<14 | 0x00<<7 | 0x16,\n\t12293 - 12288: jis0208<<14 | 0x00<<7 | 0x18,\n\t12294 - 12288: jis0208<<14 | 0x00<<7 | 0x19,\n\t12295 - 12288: jis0208<<14 | 0x00<<7 | 0x1A,\n\t12296 - 12288: jis0208<<14 | 0x00<<7 | 0x31,\n\t12297 - 12288: jis0208<<14 | 0x00<<7 | 0x32,\n\t12298 - 12288: jis0208<<14 | 0x00<<7 | 0x33,\n\t12299 - 12288: jis0208<<14 | 0x00<<7 | 0x34,\n\t12300 - 12288: jis0208<<14 | 0x00<<7 | 0x35,\n\t12301 - 12288: jis0208<<14 | 0x00<<7 | 0x36,\n\t12302 - 12288: jis0208<<14 | 0x00<<7 | 0x37,\n\t12303 - 12288: jis0208<<14 | 0x00<<7 | 0x38,\n\t12304 - 12288: jis0208<<14 | 0x00<<7 | 0x39,\n\t12305 - 12288: jis0208<<14 | 0x00<<7 | 0x3A,\n\t12306 - 12288: jis0208<<14 | 0x01<<7 | 0x08,\n\t12307 - 12288: jis0208<<14 | 0x01<<7 | 0x0D,\n\t12308 - 12288: jis0208<<14 | 0x00<<7 | 0x2B,\n\t12309 - 12288: jis0208<<14 | 0x00<<7 | 0x2C,\n\t12317 - 12288: jis0208<<14 | 0x0C<<7 | 0x3F,\n\t12319 - 12288: jis0208<<14 | 0x0C<<7 | 0x40,\n\t12353 - 12288: jis0208<<14 | 0x03<<7 | 0x00,\n\t12354 - 12288: jis0208<<14 | 0x03<<7 | 0x01,\n\t12355 - 12288: jis0208<<14 | 0x03<<7 | 0x02,\n\t12356 - 12288: jis0208<<14 | 0x03<<7 | 0x03,\n\t12357 - 12288: jis0208<<14 | 0x03<<7 | 0x04,\n\t12358 - 12288: jis0208<<14 | 0x03<<7 | 0x05,\n\t12359 - 12288: jis0208<<14 | 0x03<<7 | 0x06,\n\t12360 - 12288: jis0208<<14 | 0x03<<7 | 0x07,\n\t12361 - 12288: jis0208<<14 | 0x03<<7 | 0x08,\n\t12362 - 12288: jis0208<<14 | 0x03<<7 | 0x09,\n\t12363 - 12288: jis0208<<14 | 0x03<<7 | 0x0A,\n\t12364 - 12288: jis0208<<14 | 0x03<<7 | 0x0B,\n\t12365 - 12288: jis0208<<14 | 0x03<<7 | 0x0C,\n\t12366 - 12288: jis0208<<14 | 0x03<<7 | 0x0D,\n\t12367 - 12288: jis0208<<14 | 0x03<<7 | 0x0E,\n\t12368 - 12288: jis0208<<14 | 0x03<<7 | 0x0F,\n\t12369 - 12288: jis0208<<14 | 0x03<<7 | 0x10,\n\t12370 - 12288: jis0208<<14 | 0x03<<7 | 0x11,\n\t12371 - 12288: jis0208<<14 | 0x03<<7 | 0x12,\n\t12372 - 12288: jis0208<<14 | 0x03<<7 | 0x13,\n\t12373 - 12288: jis0208<<14 | 0x03<<7 | 0x14,\n\t12374 - 12288: jis0208<<14 | 0x03<<7 | 0x15,\n\t12375 - 12288: jis0208<<14 | 0x03<<7 | 0x16,\n\t12376 - 12288: jis0208<<14 | 0x03<<7 | 0x17,\n\t12377 - 12288: jis0208<<14 | 0x03<<7 | 0x18,\n\t12378 - 12288: jis0208<<14 | 0x03<<7 | 0x19,\n\t12379 - 12288: jis0208<<14 | 0x03<<7 | 0x1A,\n\t12380 - 12288: jis0208<<14 | 0x03<<7 | 0x1B,\n\t12381 - 12288: jis0208<<14 | 0x03<<7 | 0x1C,\n\t12382 - 12288: jis0208<<14 | 0x03<<7 | 0x1D,\n\t12383 - 12288: jis0208<<14 | 0x03<<7 | 0x1E,\n\t12384 - 12288: jis0208<<14 | 0x03<<7 | 0x1F,\n\t12385 - 12288: jis0208<<14 | 0x03<<7 | 0x20,\n\t12386 - 12288: jis0208<<14 | 0x03<<7 | 0x21,\n\t12387 - 12288: jis0208<<14 | 0x03<<7 | 0x22,\n\t12388 - 12288: jis0208<<14 | 0x03<<7 | 0x23,\n\t12389 - 12288: jis0208<<14 | 0x03<<7 | 0x24,\n\t12390 - 12288: jis0208<<14 | 0x03<<7 | 0x25,\n\t12391 - 12288: jis0208<<14 | 0x03<<7 | 0x26,\n\t12392 - 12288: jis0208<<14 | 0x03<<7 | 0x27,\n\t12393 - 12288: jis0208<<14 | 0x03<<7 | 0x28,\n\t12394 - 12288: jis0208<<14 | 0x03<<7 | 0x29,\n\t12395 - 12288: jis0208<<14 | 0x03<<7 | 0x2A,\n\t12396 - 12288: jis0208<<14 | 0x03<<7 | 0x2B,\n\t12397 - 12288: jis0208<<14 | 0x03<<7 | 0x2C,\n\t12398 - 12288: jis0208<<14 | 0x03<<7 | 0x2D,\n\t12399 - 12288: jis0208<<14 | 0x03<<7 | 0x2E,\n\t12400 - 12288: jis0208<<14 | 0x03<<7 | 0x2F,\n\t12401 - 12288: jis0208<<14 | 0x03<<7 | 0x30,\n\t12402 - 12288: jis0208<<14 | 0x03<<7 | 0x31,\n\t12403 - 12288: jis0208<<14 | 0x03<<7 | 0x32,\n\t12404 - 12288: jis0208<<14 | 0x03<<7 | 0x33,\n\t12405 - 12288: jis0208<<14 | 0x03<<7 | 0x34,\n\t12406 - 12288: jis0208<<14 | 0x03<<7 | 0x35,\n\t12407 - 12288: jis0208<<14 | 0x03<<7 | 0x36,\n\t12408 - 12288: jis0208<<14 | 0x03<<7 | 0x37,\n\t12409 - 12288: jis0208<<14 | 0x03<<7 | 0x38,\n\t12410 - 12288: jis0208<<14 | 0x03<<7 | 0x39,\n\t12411 - 12288: jis0208<<14 | 0x03<<7 | 0x3A,\n\t12412 - 12288: jis0208<<14 | 0x03<<7 | 0x3B,\n\t12413 - 12288: jis0208<<14 | 0x03<<7 | 0x3C,\n\t12414 - 12288: jis0208<<14 | 0x03<<7 | 0x3D,\n\t12415 - 12288: jis0208<<14 | 0x03<<7 | 0x3E,\n\t12416 - 12288: jis0208<<14 | 0x03<<7 | 0x3F,\n\t12417 - 12288: jis0208<<14 | 0x03<<7 | 0x40,\n\t12418 - 12288: jis0208<<14 | 0x03<<7 | 0x41,\n\t12419 - 12288: jis0208<<14 | 0x03<<7 | 0x42,\n\t12420 - 12288: jis0208<<14 | 0x03<<7 | 0x43,\n\t12421 - 12288: jis0208<<14 | 0x03<<7 | 0x44,\n\t12422 - 12288: jis0208<<14 | 0x03<<7 | 0x45,\n\t12423 - 12288: jis0208<<14 | 0x03<<7 | 0x46,\n\t12424 - 12288: jis0208<<14 | 0x03<<7 | 0x47,\n\t12425 - 12288: jis0208<<14 | 0x03<<7 | 0x48,\n\t12426 - 12288: jis0208<<14 | 0x03<<7 | 0x49,\n\t12427 - 12288: jis0208<<14 | 0x03<<7 | 0x4A,\n\t12428 - 12288: jis0208<<14 | 0x03<<7 | 0x4B,\n\t12429 - 12288: jis0208<<14 | 0x03<<7 | 0x4C,\n\t12430 - 12288: jis0208<<14 | 0x03<<7 | 0x4D,\n\t12431 - 12288: jis0208<<14 | 0x03<<7 | 0x4E,\n\t12432 - 12288: jis0208<<14 | 0x03<<7 | 0x4F,\n\t12433 - 12288: jis0208<<14 | 0x03<<7 | 0x50,\n\t12434 - 12288: jis0208<<14 | 0x03<<7 | 0x51,\n\t12435 - 12288: jis0208<<14 | 0x03<<7 | 0x52,\n\t12443 - 12288: jis0208<<14 | 0x00<<7 | 0x0A,\n\t12444 - 12288: jis0208<<14 | 0x00<<7 | 0x0B,\n\t12445 - 12288: jis0208<<14 | 0x00<<7 | 0x14,\n\t12446 - 12288: jis0208<<14 | 0x00<<7 | 0x15,\n\t12449 - 12288: jis0208<<14 | 0x04<<7 | 0x00,\n\t12450 - 12288: jis0208<<14 | 0x04<<7 | 0x01,\n\t12451 - 12288: jis0208<<14 | 0x04<<7 | 0x02,\n\t12452 - 12288: jis0208<<14 | 0x04<<7 | 0x03,\n\t12453 - 12288: jis0208<<14 | 0x04<<7 | 0x04,\n\t12454 - 12288: jis0208<<14 | 0x04<<7 | 0x05,\n\t12455 - 12288: jis0208<<14 | 0x04<<7 | 0x06,\n\t12456 - 12288: jis0208<<14 | 0x04<<7 | 0x07,\n\t12457 - 12288: jis0208<<14 | 0x04<<7 | 0x08,\n\t12458 - 12288: jis0208<<14 | 0x04<<7 | 0x09,\n\t12459 - 12288: jis0208<<14 | 0x04<<7 | 0x0A,\n\t12460 - 12288: jis0208<<14 | 0x04<<7 | 0x0B,\n\t12461 - 12288: jis0208<<14 | 0x04<<7 | 0x0C,\n\t12462 - 12288: jis0208<<14 | 0x04<<7 | 0x0D,\n\t12463 - 12288: jis0208<<14 | 0x04<<7 | 0x0E,\n\t12464 - 12288: jis0208<<14 | 0x04<<7 | 0x0F,\n\t12465 - 12288: jis0208<<14 | 0x04<<7 | 0x10,\n\t12466 - 12288: jis0208<<14 | 0x04<<7 | 0x11,\n\t12467 - 12288: jis0208<<14 | 0x04<<7 | 0x12,\n\t12468 - 12288: jis0208<<14 | 0x04<<7 | 0x13,\n\t12469 - 12288: jis0208<<14 | 0x04<<7 | 0x14,\n\t12470 - 12288: jis0208<<14 | 0x04<<7 | 0x15,\n\t12471 - 12288: jis0208<<14 | 0x04<<7 | 0x16,\n\t12472 - 12288: jis0208<<14 | 0x04<<7 | 0x17,\n\t12473 - 12288: jis0208<<14 | 0x04<<7 | 0x18,\n\t12474 - 12288: jis0208<<14 | 0x04<<7 | 0x19,\n\t12475 - 12288: jis0208<<14 | 0x04<<7 | 0x1A,\n\t12476 - 12288: jis0208<<14 | 0x04<<7 | 0x1B,\n\t12477 - 12288: jis0208<<14 | 0x04<<7 | 0x1C,\n\t12478 - 12288: jis0208<<14 | 0x04<<7 | 0x1D,\n\t12479 - 12288: jis0208<<14 | 0x04<<7 | 0x1E,\n\t12480 - 12288: jis0208<<14 | 0x04<<7 | 0x1F,\n\t12481 - 12288: jis0208<<14 | 0x04<<7 | 0x20,\n\t12482 - 12288: jis0208<<14 | 0x04<<7 | 0x21,\n\t12483 - 12288: jis0208<<14 | 0x04<<7 | 0x22,\n\t12484 - 12288: jis0208<<14 | 0x04<<7 | 0x23,\n\t12485 - 12288: jis0208<<14 | 0x04<<7 | 0x24,\n\t12486 - 12288: jis0208<<14 | 0x04<<7 | 0x25,\n\t12487 - 12288: jis0208<<14 | 0x04<<7 | 0x26,\n\t12488 - 12288: jis0208<<14 | 0x04<<7 | 0x27,\n\t12489 - 12288: jis0208<<14 | 0x04<<7 | 0x28,\n\t12490 - 12288: jis0208<<14 | 0x04<<7 | 0x29,\n\t12491 - 12288: jis0208<<14 | 0x04<<7 | 0x2A,\n\t12492 - 12288: jis0208<<14 | 0x04<<7 | 0x2B,\n\t12493 - 12288: jis0208<<14 | 0x04<<7 | 0x2C,\n\t12494 - 12288: jis0208<<14 | 0x04<<7 | 0x2D,\n\t12495 - 12288: jis0208<<14 | 0x04<<7 | 0x2E,\n\t12496 - 12288: jis0208<<14 | 0x04<<7 | 0x2F,\n\t12497 - 12288: jis0208<<14 | 0x04<<7 | 0x30,\n\t12498 - 12288: jis0208<<14 | 0x04<<7 | 0x31,\n\t12499 - 12288: jis0208<<14 | 0x04<<7 | 0x32,\n\t12500 - 12288: jis0208<<14 | 0x04<<7 | 0x33,\n\t12501 - 12288: jis0208<<14 | 0x04<<7 | 0x34,\n\t12502 - 12288: jis0208<<14 | 0x04<<7 | 0x35,\n\t12503 - 12288: jis0208<<14 | 0x04<<7 | 0x36,\n\t12504 - 12288: jis0208<<14 | 0x04<<7 | 0x37,\n\t12505 - 12288: jis0208<<14 | 0x04<<7 | 0x38,\n\t12506 - 12288: jis0208<<14 | 0x04<<7 | 0x39,\n\t12507 - 12288: jis0208<<14 | 0x04<<7 | 0x3A,\n\t12508 - 12288: jis0208<<14 | 0x04<<7 | 0x3B,\n\t12509 - 12288: jis0208<<14 | 0x04<<7 | 0x3C,\n\t12510 - 12288: jis0208<<14 | 0x04<<7 | 0x3D,\n\t12511 - 12288: jis0208<<14 | 0x04<<7 | 0x3E,\n\t12512 - 12288: jis0208<<14 | 0x04<<7 | 0x3F,\n\t12513 - 12288: jis0208<<14 | 0x04<<7 | 0x40,\n\t12514 - 12288: jis0208<<14 | 0x04<<7 | 0x41,\n\t12515 - 12288: jis0208<<14 | 0x04<<7 | 0x42,\n\t12516 - 12288: jis0208<<14 | 0x04<<7 | 0x43,\n\t12517 - 12288: jis0208<<14 | 0x04<<7 | 0x44,\n\t12518 - 12288: jis0208<<14 | 0x04<<7 | 0x45,\n\t12519 - 12288: jis0208<<14 | 0x04<<7 | 0x46,\n\t12520 - 12288: jis0208<<14 | 0x04<<7 | 0x47,\n\t12521 - 12288: jis0208<<14 | 0x04<<7 | 0x48,\n\t12522 - 12288: jis0208<<14 | 0x04<<7 | 0x49,\n\t12523 - 12288: jis0208<<14 | 0x04<<7 | 0x4A,\n\t12524 - 12288: jis0208<<14 | 0x04<<7 | 0x4B,\n\t12525 - 12288: jis0208<<14 | 0x04<<7 | 0x4C,\n\t12526 - 12288: jis0208<<14 | 0x04<<7 | 0x4D,\n\t12527 - 12288: jis0208<<14 | 0x04<<7 | 0x4E,\n\t12528 - 12288: jis0208<<14 | 0x04<<7 | 0x4F,\n\t12529 - 12288: jis0208<<14 | 0x04<<7 | 0x50,\n\t12530 - 12288: jis0208<<14 | 0x04<<7 | 0x51,\n\t12531 - 12288: jis0208<<14 | 0x04<<7 | 0x52,\n\t12532 - 12288: jis0208<<14 | 0x04<<7 | 0x53,\n\t12533 - 12288: jis0208<<14 | 0x04<<7 | 0x54,\n\t12534 - 12288: jis0208<<14 | 0x04<<7 | 0x55,\n\t12539 - 12288: jis0208<<14 | 0x00<<7 | 0x05,\n\t12540 - 12288: jis0208<<14 | 0x00<<7 | 0x1B,\n\t12541 - 12288: jis0208<<14 | 0x00<<7 | 0x12,\n\t12542 - 12288: jis0208<<14 | 0x00<<7 | 0x13,\n\t12849 - 12288: jis0208<<14 | 0x0C<<7 | 0x49,\n\t12850 - 12288: jis0208<<14 | 0x0C<<7 | 0x4A,\n\t12857 - 12288: jis0208<<14 | 0x0C<<7 | 0x4B,\n\t12964 - 12288: jis0208<<14 | 0x0C<<7 | 0x44,\n\t12965 - 12288: jis0208<<14 | 0x0C<<7 | 0x45,\n\t12966 - 12288: jis0208<<14 | 0x0C<<7 | 0x46,\n\t12967 - 12288: jis0208<<14 | 0x0C<<7 | 0x47,\n\t12968 - 12288: jis0208<<14 | 0x0C<<7 | 0x48,\n\t13059 - 12288: jis0208<<14 | 0x0C<<7 | 0x25,\n\t13069 - 12288: jis0208<<14 | 0x0C<<7 | 0x29,\n\t13076 - 12288: jis0208<<14 | 0x0C<<7 | 0x20,\n\t13080 - 12288: jis0208<<14 | 0x0C<<7 | 0x23,\n\t13090 - 12288: jis0208<<14 | 0x0C<<7 | 0x21,\n\t13091 - 12288: jis0208<<14 | 0x0C<<7 | 0x2B,\n\t13094 - 12288: jis0208<<14 | 0x0C<<7 | 0x2A,\n\t13095 - 12288: jis0208<<14 | 0x0C<<7 | 0x24,\n\t13099 - 12288: jis0208<<14 | 0x0C<<7 | 0x2C,\n\t13110 - 12288: jis0208<<14 | 0x0C<<7 | 0x26,\n\t13115 - 12288: jis0208<<14 | 0x0C<<7 | 0x2E,\n\t13129 - 12288: jis0208<<14 | 0x0C<<7 | 0x1F,\n\t13130 - 12288: jis0208<<14 | 0x0C<<7 | 0x2D,\n\t13133 - 12288: jis0208<<14 | 0x0C<<7 | 0x22,\n\t13137 - 12288: jis0208<<14 | 0x0C<<7 | 0x27,\n\t13143 - 12288: jis0208<<14 | 0x0C<<7 | 0x28,\n\t13179 - 12288: jis0208<<14 | 0x0C<<7 | 0x3E,\n\t13180 - 12288: jis0208<<14 | 0x0C<<7 | 0x4E,\n\t13181 - 12288: jis0208<<14 | 0x0C<<7 | 0x4D,\n\t13182 - 12288: jis0208<<14 | 0x0C<<7 | 0x4C,\n\t13198 - 12288: jis0208<<14 | 0x0C<<7 | 0x32,\n\t13199 - 12288: jis0208<<14 | 0x0C<<7 | 0x33,\n\t13212 - 12288: jis0208<<14 | 0x0C<<7 | 0x2F,\n\t13213 - 12288: jis0208<<14 | 0x0C<<7 | 0x30,\n\t13214 - 12288: jis0208<<14 | 0x0C<<7 | 0x31,\n\t13217 - 12288: jis0208<<14 | 0x0C<<7 | 0x35,\n\t13252 - 12288: jis0208<<14 | 0x0C<<7 | 0x34,\n\t13261 - 12288: jis0208<<14 | 0x0C<<7 | 0x42,\n}\n\nconst encode3Low, encode3High = 161, 1120\n\nvar encode3 = [...]uint16{\n\t161 - 161:  jis0212<<14 | 0x01<<7 | 0x21,\n\t164 - 161:  jis0212<<14 | 0x01<<7 | 0x4F,\n\t166 - 161:  jis0212<<14 | 0x01<<7 | 0x22,\n\t167 - 161:  jis0208<<14 | 0x00<<7 | 0x57,\n\t168 - 161:  jis0208<<14 | 0x00<<7 | 0x0E,\n\t169 - 161:  jis0212<<14 | 0x01<<7 | 0x4C,\n\t170 - 161:  jis0212<<14 | 0x01<<7 | 0x4B,\n\t174 - 161:  jis0212<<14 | 0x01<<7 | 0x4D,\n\t175 - 161:  jis0212<<14 | 0x01<<7 | 0x13,\n\t176 - 161:  jis0208<<14 | 0x00<<7 | 0x4A,\n\t177 - 161:  jis0208<<14 | 0x00<<7 | 0x3D,\n\t180 - 161:  jis0208<<14 | 0x00<<7 | 0x0C,\n\t182 - 161:  jis0208<<14 | 0x01<<7 | 0x58,\n\t184 - 161:  jis0212<<14 | 0x01<<7 | 0x10,\n\t186 - 161:  jis0212<<14 | 0x01<<7 | 0x4A,\n\t191 - 161:  jis0212<<14 | 0x01<<7 | 0x23,\n\t192 - 161:  jis0212<<14 | 0x09<<7 | 0x01,\n\t193 - 161:  jis0212<<14 | 0x09<<7 | 0x00,\n\t194 - 161:  jis0212<<14 | 0x09<<7 | 0x03,\n\t195 - 161:  jis0212<<14 | 0x09<<7 | 0x09,\n\t196 - 161:  jis0212<<14 | 0x09<<7 | 0x02,\n\t197 - 161:  jis0212<<14 | 0x09<<7 | 0x08,\n\t198 - 161:  jis0212<<14 | 0x08<<7 | 0x00,\n\t199 - 161:  jis0212<<14 | 0x09<<7 | 0x0D,\n\t200 - 161:  jis0212<<14 | 0x09<<7 | 0x11,\n\t201 - 161:  jis0212<<14 | 0x09<<7 | 0x10,\n\t202 - 161:  jis0212<<14 | 0x09<<7 | 0x13,\n\t203 - 161:  jis0212<<14 | 0x09<<7 | 0x12,\n\t204 - 161:  jis0212<<14 | 0x09<<7 | 0x1F,\n\t205 - 161:  jis0212<<14 | 0x09<<7 | 0x1E,\n\t206 - 161:  jis0212<<14 | 0x09<<7 | 0x21,\n\t207 - 161:  jis0212<<14 | 0x09<<7 | 0x20,\n\t209 - 161:  jis0212<<14 | 0x09<<7 | 0x2F,\n\t210 - 161:  jis0212<<14 | 0x09<<7 | 0x31,\n\t211 - 161:  jis0212<<14 | 0x09<<7 | 0x30,\n\t212 - 161:  jis0212<<14 | 0x09<<7 | 0x33,\n\t213 - 161:  jis0212<<14 | 0x09<<7 | 0x37,\n\t214 - 161:  jis0212<<14 | 0x09<<7 | 0x32,\n\t215 - 161:  jis0208<<14 | 0x00<<7 | 0x3E,\n\t216 - 161:  jis0212<<14 | 0x08<<7 | 0x0B,\n\t217 - 161:  jis0212<<14 | 0x09<<7 | 0x42,\n\t218 - 161:  jis0212<<14 | 0x09<<7 | 0x41,\n\t219 - 161:  jis0212<<14 | 0x09<<7 | 0x44,\n\t220 - 161:  jis0212<<14 | 0x09<<7 | 0x43,\n\t221 - 161:  jis0212<<14 | 0x09<<7 | 0x51,\n\t222 - 161:  jis0212<<14 | 0x08<<7 | 0x0F,\n\t223 - 161:  jis0212<<14 | 0x08<<7 | 0x2D,\n\t224 - 161:  jis0212<<14 | 0x0A<<7 | 0x01,\n\t225 - 161:  jis0212<<14 | 0x0A<<7 | 0x00,\n\t226 - 161:  jis0212<<14 | 0x0A<<7 | 0x03,\n\t227 - 161:  jis0212<<14 | 0x0A<<7 | 0x09,\n\t228 - 161:  jis0212<<14 | 0x0A<<7 | 0x02,\n\t229 - 161:  jis0212<<14 | 0x0A<<7 | 0x08,\n\t230 - 161:  jis0212<<14 | 0x08<<7 | 0x20,\n\t231 - 161:  jis0212<<14 | 0x0A<<7 | 0x0D,\n\t232 - 161:  jis0212<<14 | 0x0A<<7 | 0x11,\n\t233 - 161:  jis0212<<14 | 0x0A<<7 | 0x10,\n\t234 - 161:  jis0212<<14 | 0x0A<<7 | 0x13,\n\t235 - 161:  jis0212<<14 | 0x0A<<7 | 0x12,\n\t236 - 161:  jis0212<<14 | 0x0A<<7 | 0x1F,\n\t237 - 161:  jis0212<<14 | 0x0A<<7 | 0x1E,\n\t238 - 161:  jis0212<<14 | 0x0A<<7 | 0x21,\n\t239 - 161:  jis0212<<14 | 0x0A<<7 | 0x20,\n\t240 - 161:  jis0212<<14 | 0x08<<7 | 0x22,\n\t241 - 161:  jis0212<<14 | 0x0A<<7 | 0x2F,\n\t242 - 161:  jis0212<<14 | 0x0A<<7 | 0x31,\n\t243 - 161:  jis0212<<14 | 0x0A<<7 | 0x30,\n\t244 - 161:  jis0212<<14 | 0x0A<<7 | 0x33,\n\t245 - 161:  jis0212<<14 | 0x0A<<7 | 0x37,\n\t246 - 161:  jis0212<<14 | 0x0A<<7 | 0x32,\n\t247 - 161:  jis0208<<14 | 0x00<<7 | 0x3F,\n\t248 - 161:  jis0212<<14 | 0x08<<7 | 0x2B,\n\t249 - 161:  jis0212<<14 | 0x0A<<7 | 0x42,\n\t250 - 161:  jis0212<<14 | 0x0A<<7 | 0x41,\n\t251 - 161:  jis0212<<14 | 0x0A<<7 | 0x44,\n\t252 - 161:  jis0212<<14 | 0x0A<<7 | 0x43,\n\t253 - 161:  jis0212<<14 | 0x0A<<7 | 0x51,\n\t254 - 161:  jis0212<<14 | 0x08<<7 | 0x2F,\n\t255 - 161:  jis0212<<14 | 0x0A<<7 | 0x52,\n\t256 - 161:  jis0212<<14 | 0x09<<7 | 0x06,\n\t257 - 161:  jis0212<<14 | 0x0A<<7 | 0x06,\n\t258 - 161:  jis0212<<14 | 0x09<<7 | 0x04,\n\t259 - 161:  jis0212<<14 | 0x0A<<7 | 0x04,\n\t260 - 161:  jis0212<<14 | 0x09<<7 | 0x07,\n\t261 - 161:  jis0212<<14 | 0x0A<<7 | 0x07,\n\t262 - 161:  jis0212<<14 | 0x09<<7 | 0x0A,\n\t263 - 161:  jis0212<<14 | 0x0A<<7 | 0x0A,\n\t264 - 161:  jis0212<<14 | 0x09<<7 | 0x0B,\n\t265 - 161:  jis0212<<14 | 0x0A<<7 | 0x0B,\n\t266 - 161:  jis0212<<14 | 0x09<<7 | 0x0E,\n\t267 - 161:  jis0212<<14 | 0x0A<<7 | 0x0E,\n\t268 - 161:  jis0212<<14 | 0x09<<7 | 0x0C,\n\t269 - 161:  jis0212<<14 | 0x0A<<7 | 0x0C,\n\t270 - 161:  jis0212<<14 | 0x09<<7 | 0x0F,\n\t271 - 161:  jis0212<<14 | 0x0A<<7 | 0x0F,\n\t272 - 161:  jis0212<<14 | 0x08<<7 | 0x01,\n\t273 - 161:  jis0212<<14 | 0x08<<7 | 0x21,\n\t274 - 161:  jis0212<<14 | 0x09<<7 | 0x16,\n\t275 - 161:  jis0212<<14 | 0x0A<<7 | 0x16,\n\t278 - 161:  jis0212<<14 | 0x09<<7 | 0x15,\n\t279 - 161:  jis0212<<14 | 0x0A<<7 | 0x15,\n\t280 - 161:  jis0212<<14 | 0x09<<7 | 0x17,\n\t281 - 161:  jis0212<<14 | 0x0A<<7 | 0x17,\n\t282 - 161:  jis0212<<14 | 0x09<<7 | 0x14,\n\t283 - 161:  jis0212<<14 | 0x0A<<7 | 0x14,\n\t284 - 161:  jis0212<<14 | 0x09<<7 | 0x19,\n\t285 - 161:  jis0212<<14 | 0x0A<<7 | 0x19,\n\t286 - 161:  jis0212<<14 | 0x09<<7 | 0x1A,\n\t287 - 161:  jis0212<<14 | 0x0A<<7 | 0x1A,\n\t288 - 161:  jis0212<<14 | 0x09<<7 | 0x1C,\n\t289 - 161:  jis0212<<14 | 0x0A<<7 | 0x1C,\n\t290 - 161:  jis0212<<14 | 0x09<<7 | 0x1B,\n\t292 - 161:  jis0212<<14 | 0x09<<7 | 0x1D,\n\t293 - 161:  jis0212<<14 | 0x0A<<7 | 0x1D,\n\t294 - 161:  jis0212<<14 | 0x08<<7 | 0x03,\n\t295 - 161:  jis0212<<14 | 0x08<<7 | 0x23,\n\t296 - 161:  jis0212<<14 | 0x09<<7 | 0x26,\n\t297 - 161:  jis0212<<14 | 0x0A<<7 | 0x26,\n\t298 - 161:  jis0212<<14 | 0x09<<7 | 0x24,\n\t299 - 161:  jis0212<<14 | 0x0A<<7 | 0x24,\n\t302 - 161:  jis0212<<14 | 0x09<<7 | 0x25,\n\t303 - 161:  jis0212<<14 | 0x0A<<7 | 0x25,\n\t304 - 161:  jis0212<<14 | 0x09<<7 | 0x23,\n\t305 - 161:  jis0212<<14 | 0x08<<7 | 0x24,\n\t306 - 161:  jis0212<<14 | 0x08<<7 | 0x05,\n\t307 - 161:  jis0212<<14 | 0x08<<7 | 0x25,\n\t308 - 161:  jis0212<<14 | 0x09<<7 | 0x27,\n\t309 - 161:  jis0212<<14 | 0x0A<<7 | 0x27,\n\t310 - 161:  jis0212<<14 | 0x09<<7 | 0x28,\n\t311 - 161:  jis0212<<14 | 0x0A<<7 | 0x28,\n\t312 - 161:  jis0212<<14 | 0x08<<7 | 0x26,\n\t313 - 161:  jis0212<<14 | 0x09<<7 | 0x29,\n\t314 - 161:  jis0212<<14 | 0x0A<<7 | 0x29,\n\t315 - 161:  jis0212<<14 | 0x09<<7 | 0x2B,\n\t316 - 161:  jis0212<<14 | 0x0A<<7 | 0x2B,\n\t317 - 161:  jis0212<<14 | 0x09<<7 | 0x2A,\n\t318 - 161:  jis0212<<14 | 0x0A<<7 | 0x2A,\n\t319 - 161:  jis0212<<14 | 0x08<<7 | 0x08,\n\t320 - 161:  jis0212<<14 | 0x08<<7 | 0x28,\n\t321 - 161:  jis0212<<14 | 0x08<<7 | 0x07,\n\t322 - 161:  jis0212<<14 | 0x08<<7 | 0x27,\n\t323 - 161:  jis0212<<14 | 0x09<<7 | 0x2C,\n\t324 - 161:  jis0212<<14 | 0x0A<<7 | 0x2C,\n\t325 - 161:  jis0212<<14 | 0x09<<7 | 0x2E,\n\t326 - 161:  jis0212<<14 | 0x0A<<7 | 0x2E,\n\t327 - 161:  jis0212<<14 | 0x09<<7 | 0x2D,\n\t328 - 161:  jis0212<<14 | 0x0A<<7 | 0x2D,\n\t329 - 161:  jis0212<<14 | 0x08<<7 | 0x29,\n\t330 - 161:  jis0212<<14 | 0x08<<7 | 0x0A,\n\t331 - 161:  jis0212<<14 | 0x08<<7 | 0x2A,\n\t332 - 161:  jis0212<<14 | 0x09<<7 | 0x36,\n\t333 - 161:  jis0212<<14 | 0x0A<<7 | 0x36,\n\t336 - 161:  jis0212<<14 | 0x09<<7 | 0x35,\n\t337 - 161:  jis0212<<14 | 0x0A<<7 | 0x35,\n\t338 - 161:  jis0212<<14 | 0x08<<7 | 0x0C,\n\t339 - 161:  jis0212<<14 | 0x08<<7 | 0x2C,\n\t340 - 161:  jis0212<<14 | 0x09<<7 | 0x38,\n\t341 - 161:  jis0212<<14 | 0x0A<<7 | 0x38,\n\t342 - 161:  jis0212<<14 | 0x09<<7 | 0x3A,\n\t343 - 161:  jis0212<<14 | 0x0A<<7 | 0x3A,\n\t344 - 161:  jis0212<<14 | 0x09<<7 | 0x39,\n\t345 - 161:  jis0212<<14 | 0x0A<<7 | 0x39,\n\t346 - 161:  jis0212<<14 | 0x09<<7 | 0x3B,\n\t347 - 161:  jis0212<<14 | 0x0A<<7 | 0x3B,\n\t348 - 161:  jis0212<<14 | 0x09<<7 | 0x3C,\n\t349 - 161:  jis0212<<14 | 0x0A<<7 | 0x3C,\n\t350 - 161:  jis0212<<14 | 0x09<<7 | 0x3E,\n\t351 - 161:  jis0212<<14 | 0x0A<<7 | 0x3E,\n\t352 - 161:  jis0212<<14 | 0x09<<7 | 0x3D,\n\t353 - 161:  jis0212<<14 | 0x0A<<7 | 0x3D,\n\t354 - 161:  jis0212<<14 | 0x09<<7 | 0x40,\n\t355 - 161:  jis0212<<14 | 0x0A<<7 | 0x40,\n\t356 - 161:  jis0212<<14 | 0x09<<7 | 0x3F,\n\t357 - 161:  jis0212<<14 | 0x0A<<7 | 0x3F,\n\t358 - 161:  jis0212<<14 | 0x08<<7 | 0x0E,\n\t359 - 161:  jis0212<<14 | 0x08<<7 | 0x2E,\n\t360 - 161:  jis0212<<14 | 0x09<<7 | 0x4B,\n\t361 - 161:  jis0212<<14 | 0x0A<<7 | 0x4B,\n\t362 - 161:  jis0212<<14 | 0x09<<7 | 0x48,\n\t363 - 161:  jis0212<<14 | 0x0A<<7 | 0x48,\n\t364 - 161:  jis0212<<14 | 0x09<<7 | 0x45,\n\t365 - 161:  jis0212<<14 | 0x0A<<7 | 0x45,\n\t366 - 161:  jis0212<<14 | 0x09<<7 | 0x4A,\n\t367 - 161:  jis0212<<14 | 0x0A<<7 | 0x4A,\n\t368 - 161:  jis0212<<14 | 0x09<<7 | 0x47,\n\t369 - 161:  jis0212<<14 | 0x0A<<7 | 0x47,\n\t370 - 161:  jis0212<<14 | 0x09<<7 | 0x49,\n\t371 - 161:  jis0212<<14 | 0x0A<<7 | 0x49,\n\t372 - 161:  jis0212<<14 | 0x09<<7 | 0x50,\n\t373 - 161:  jis0212<<14 | 0x0A<<7 | 0x50,\n\t374 - 161:  jis0212<<14 | 0x09<<7 | 0x53,\n\t375 - 161:  jis0212<<14 | 0x0A<<7 | 0x53,\n\t376 - 161:  jis0212<<14 | 0x09<<7 | 0x52,\n\t377 - 161:  jis0212<<14 | 0x09<<7 | 0x54,\n\t378 - 161:  jis0212<<14 | 0x0A<<7 | 0x54,\n\t379 - 161:  jis0212<<14 | 0x09<<7 | 0x56,\n\t380 - 161:  jis0212<<14 | 0x0A<<7 | 0x56,\n\t381 - 161:  jis0212<<14 | 0x09<<7 | 0x55,\n\t382 - 161:  jis0212<<14 | 0x0A<<7 | 0x55,\n\t461 - 161:  jis0212<<14 | 0x09<<7 | 0x05,\n\t462 - 161:  jis0212<<14 | 0x0A<<7 | 0x05,\n\t463 - 161:  jis0212<<14 | 0x09<<7 | 0x22,\n\t464 - 161:  jis0212<<14 | 0x0A<<7 | 0x22,\n\t465 - 161:  jis0212<<14 | 0x09<<7 | 0x34,\n\t466 - 161:  jis0212<<14 | 0x0A<<7 | 0x34,\n\t467 - 161:  jis0212<<14 | 0x09<<7 | 0x46,\n\t468 - 161:  jis0212<<14 | 0x0A<<7 | 0x46,\n\t469 - 161:  jis0212<<14 | 0x09<<7 | 0x4F,\n\t470 - 161:  jis0212<<14 | 0x0A<<7 | 0x4F,\n\t471 - 161:  jis0212<<14 | 0x09<<7 | 0x4C,\n\t472 - 161:  jis0212<<14 | 0x0A<<7 | 0x4C,\n\t473 - 161:  jis0212<<14 | 0x09<<7 | 0x4E,\n\t474 - 161:  jis0212<<14 | 0x0A<<7 | 0x4E,\n\t475 - 161:  jis0212<<14 | 0x09<<7 | 0x4D,\n\t476 - 161:  jis0212<<14 | 0x0A<<7 | 0x4D,\n\t501 - 161:  jis0212<<14 | 0x0A<<7 | 0x18,\n\t711 - 161:  jis0212<<14 | 0x01<<7 | 0x0F,\n\t728 - 161:  jis0212<<14 | 0x01<<7 | 0x0E,\n\t729 - 161:  jis0212<<14 | 0x01<<7 | 0x11,\n\t730 - 161:  jis0212<<14 | 0x01<<7 | 0x15,\n\t731 - 161:  jis0212<<14 | 0x01<<7 | 0x14,\n\t733 - 161:  jis0212<<14 | 0x01<<7 | 0x12,\n\t900 - 161:  jis0212<<14 | 0x01<<7 | 0x17,\n\t901 - 161:  jis0212<<14 | 0x01<<7 | 0x18,\n\t902 - 161:  jis0212<<14 | 0x05<<7 | 0x40,\n\t904 - 161:  jis0212<<14 | 0x05<<7 | 0x41,\n\t905 - 161:  jis0212<<14 | 0x05<<7 | 0x42,\n\t906 - 161:  jis0212<<14 | 0x05<<7 | 0x43,\n\t908 - 161:  jis0212<<14 | 0x05<<7 | 0x46,\n\t910 - 161:  jis0212<<14 | 0x05<<7 | 0x48,\n\t911 - 161:  jis0212<<14 | 0x05<<7 | 0x4B,\n\t912 - 161:  jis0212<<14 | 0x05<<7 | 0x55,\n\t913 - 161:  jis0208<<14 | 0x05<<7 | 0x00,\n\t914 - 161:  jis0208<<14 | 0x05<<7 | 0x01,\n\t915 - 161:  jis0208<<14 | 0x05<<7 | 0x02,\n\t916 - 161:  jis0208<<14 | 0x05<<7 | 0x03,\n\t917 - 161:  jis0208<<14 | 0x05<<7 | 0x04,\n\t918 - 161:  jis0208<<14 | 0x05<<7 | 0x05,\n\t919 - 161:  jis0208<<14 | 0x05<<7 | 0x06,\n\t920 - 161:  jis0208<<14 | 0x05<<7 | 0x07,\n\t921 - 161:  jis0208<<14 | 0x05<<7 | 0x08,\n\t922 - 161:  jis0208<<14 | 0x05<<7 | 0x09,\n\t923 - 161:  jis0208<<14 | 0x05<<7 | 0x0A,\n\t924 - 161:  jis0208<<14 | 0x05<<7 | 0x0B,\n\t925 - 161:  jis0208<<14 | 0x05<<7 | 0x0C,\n\t926 - 161:  jis0208<<14 | 0x05<<7 | 0x0D,\n\t927 - 161:  jis0208<<14 | 0x05<<7 | 0x0E,\n\t928 - 161:  jis0208<<14 | 0x05<<7 | 0x0F,\n\t929 - 161:  jis0208<<14 | 0x05<<7 | 0x10,\n\t931 - 161:  jis0208<<14 | 0x05<<7 | 0x11,\n\t932 - 161:  jis0208<<14 | 0x05<<7 | 0x12,\n\t933 - 161:  jis0208<<14 | 0x05<<7 | 0x13,\n\t934 - 161:  jis0208<<14 | 0x05<<7 | 0x14,\n\t935 - 161:  jis0208<<14 | 0x05<<7 | 0x15,\n\t936 - 161:  jis0208<<14 | 0x05<<7 | 0x16,\n\t937 - 161:  jis0208<<14 | 0x05<<7 | 0x17,\n\t938 - 161:  jis0212<<14 | 0x05<<7 | 0x44,\n\t939 - 161:  jis0212<<14 | 0x05<<7 | 0x49,\n\t940 - 161:  jis0212<<14 | 0x05<<7 | 0x50,\n\t941 - 161:  jis0212<<14 | 0x05<<7 | 0x51,\n\t942 - 161:  jis0212<<14 | 0x05<<7 | 0x52,\n\t943 - 161:  jis0212<<14 | 0x05<<7 | 0x53,\n\t944 - 161:  jis0212<<14 | 0x05<<7 | 0x5A,\n\t945 - 161:  jis0208<<14 | 0x05<<7 | 0x20,\n\t946 - 161:  jis0208<<14 | 0x05<<7 | 0x21,\n\t947 - 161:  jis0208<<14 | 0x05<<7 | 0x22,\n\t948 - 161:  jis0208<<14 | 0x05<<7 | 0x23,\n\t949 - 161:  jis0208<<14 | 0x05<<7 | 0x24,\n\t950 - 161:  jis0208<<14 | 0x05<<7 | 0x25,\n\t951 - 161:  jis0208<<14 | 0x05<<7 | 0x26,\n\t952 - 161:  jis0208<<14 | 0x05<<7 | 0x27,\n\t953 - 161:  jis0208<<14 | 0x05<<7 | 0x28,\n\t954 - 161:  jis0208<<14 | 0x05<<7 | 0x29,\n\t955 - 161:  jis0208<<14 | 0x05<<7 | 0x2A,\n\t956 - 161:  jis0208<<14 | 0x05<<7 | 0x2B,\n\t957 - 161:  jis0208<<14 | 0x05<<7 | 0x2C,\n\t958 - 161:  jis0208<<14 | 0x05<<7 | 0x2D,\n\t959 - 161:  jis0208<<14 | 0x05<<7 | 0x2E,\n\t960 - 161:  jis0208<<14 | 0x05<<7 | 0x2F,\n\t961 - 161:  jis0208<<14 | 0x05<<7 | 0x30,\n\t962 - 161:  jis0212<<14 | 0x05<<7 | 0x57,\n\t963 - 161:  jis0208<<14 | 0x05<<7 | 0x31,\n\t964 - 161:  jis0208<<14 | 0x05<<7 | 0x32,\n\t965 - 161:  jis0208<<14 | 0x05<<7 | 0x33,\n\t966 - 161:  jis0208<<14 | 0x05<<7 | 0x34,\n\t967 - 161:  jis0208<<14 | 0x05<<7 | 0x35,\n\t968 - 161:  jis0208<<14 | 0x05<<7 | 0x36,\n\t969 - 161:  jis0208<<14 | 0x05<<7 | 0x37,\n\t970 - 161:  jis0212<<14 | 0x05<<7 | 0x54,\n\t971 - 161:  jis0212<<14 | 0x05<<7 | 0x59,\n\t972 - 161:  jis0212<<14 | 0x05<<7 | 0x56,\n\t973 - 161:  jis0212<<14 | 0x05<<7 | 0x58,\n\t974 - 161:  jis0212<<14 | 0x05<<7 | 0x5B,\n\t1025 - 161: jis0208<<14 | 0x06<<7 | 0x06,\n\t1026 - 161: jis0212<<14 | 0x06<<7 | 0x21,\n\t1027 - 161: jis0212<<14 | 0x06<<7 | 0x22,\n\t1028 - 161: jis0212<<14 | 0x06<<7 | 0x23,\n\t1029 - 161: jis0212<<14 | 0x06<<7 | 0x24,\n\t1030 - 161: jis0212<<14 | 0x06<<7 | 0x25,\n\t1031 - 161: jis0212<<14 | 0x06<<7 | 0x26,\n\t1032 - 161: jis0212<<14 | 0x06<<7 | 0x27,\n\t1033 - 161: jis0212<<14 | 0x06<<7 | 0x28,\n\t1034 - 161: jis0212<<14 | 0x06<<7 | 0x29,\n\t1035 - 161: jis0212<<14 | 0x06<<7 | 0x2A,\n\t1036 - 161: jis0212<<14 | 0x06<<7 | 0x2B,\n\t1038 - 161: jis0212<<14 | 0x06<<7 | 0x2C,\n\t1039 - 161: jis0212<<14 | 0x06<<7 | 0x2D,\n\t1040 - 161: jis0208<<14 | 0x06<<7 | 0x00,\n\t1041 - 161: jis0208<<14 | 0x06<<7 | 0x01,\n\t1042 - 161: jis0208<<14 | 0x06<<7 | 0x02,\n\t1043 - 161: jis0208<<14 | 0x06<<7 | 0x03,\n\t1044 - 161: jis0208<<14 | 0x06<<7 | 0x04,\n\t1045 - 161: jis0208<<14 | 0x06<<7 | 0x05,\n\t1046 - 161: jis0208<<14 | 0x06<<7 | 0x07,\n\t1047 - 161: jis0208<<14 | 0x06<<7 | 0x08,\n\t1048 - 161: jis0208<<14 | 0x06<<7 | 0x09,\n\t1049 - 161: jis0208<<14 | 0x06<<7 | 0x0A,\n\t1050 - 161: jis0208<<14 | 0x06<<7 | 0x0B,\n\t1051 - 161: jis0208<<14 | 0x06<<7 | 0x0C,\n\t1052 - 161: jis0208<<14 | 0x06<<7 | 0x0D,\n\t1053 - 161: jis0208<<14 | 0x06<<7 | 0x0E,\n\t1054 - 161: jis0208<<14 | 0x06<<7 | 0x0F,\n\t1055 - 161: jis0208<<14 | 0x06<<7 | 0x10,\n\t1056 - 161: jis0208<<14 | 0x06<<7 | 0x11,\n\t1057 - 161: jis0208<<14 | 0x06<<7 | 0x12,\n\t1058 - 161: jis0208<<14 | 0x06<<7 | 0x13,\n\t1059 - 161: jis0208<<14 | 0x06<<7 | 0x14,\n\t1060 - 161: jis0208<<14 | 0x06<<7 | 0x15,\n\t1061 - 161: jis0208<<14 | 0x06<<7 | 0x16,\n\t1062 - 161: jis0208<<14 | 0x06<<7 | 0x17,\n\t1063 - 161: jis0208<<14 | 0x06<<7 | 0x18,\n\t1064 - 161: jis0208<<14 | 0x06<<7 | 0x19,\n\t1065 - 161: jis0208<<14 | 0x06<<7 | 0x1A,\n\t1066 - 161: jis0208<<14 | 0x06<<7 | 0x1B,\n\t1067 - 161: jis0208<<14 | 0x06<<7 | 0x1C,\n\t1068 - 161: jis0208<<14 | 0x06<<7 | 0x1D,\n\t1069 - 161: jis0208<<14 | 0x06<<7 | 0x1E,\n\t1070 - 161: jis0208<<14 | 0x06<<7 | 0x1F,\n\t1071 - 161: jis0208<<14 | 0x06<<7 | 0x20,\n\t1072 - 161: jis0208<<14 | 0x06<<7 | 0x30,\n\t1073 - 161: jis0208<<14 | 0x06<<7 | 0x31,\n\t1074 - 161: jis0208<<14 | 0x06<<7 | 0x32,\n\t1075 - 161: jis0208<<14 | 0x06<<7 | 0x33,\n\t1076 - 161: jis0208<<14 | 0x06<<7 | 0x34,\n\t1077 - 161: jis0208<<14 | 0x06<<7 | 0x35,\n\t1078 - 161: jis0208<<14 | 0x06<<7 | 0x37,\n\t1079 - 161: jis0208<<14 | 0x06<<7 | 0x38,\n\t1080 - 161: jis0208<<14 | 0x06<<7 | 0x39,\n\t1081 - 161: jis0208<<14 | 0x06<<7 | 0x3A,\n\t1082 - 161: jis0208<<14 | 0x06<<7 | 0x3B,\n\t1083 - 161: jis0208<<14 | 0x06<<7 | 0x3C,\n\t1084 - 161: jis0208<<14 | 0x06<<7 | 0x3D,\n\t1085 - 161: jis0208<<14 | 0x06<<7 | 0x3E,\n\t1086 - 161: jis0208<<14 | 0x06<<7 | 0x3F,\n\t1087 - 161: jis0208<<14 | 0x06<<7 | 0x40,\n\t1088 - 161: jis0208<<14 | 0x06<<7 | 0x41,\n\t1089 - 161: jis0208<<14 | 0x06<<7 | 0x42,\n\t1090 - 161: jis0208<<14 | 0x06<<7 | 0x43,\n\t1091 - 161: jis0208<<14 | 0x06<<7 | 0x44,\n\t1092 - 161: jis0208<<14 | 0x06<<7 | 0x45,\n\t1093 - 161: jis0208<<14 | 0x06<<7 | 0x46,\n\t1094 - 161: jis0208<<14 | 0x06<<7 | 0x47,\n\t1095 - 161: jis0208<<14 | 0x06<<7 | 0x48,\n\t1096 - 161: jis0208<<14 | 0x06<<7 | 0x49,\n\t1097 - 161: jis0208<<14 | 0x06<<7 | 0x4A,\n\t1098 - 161: jis0208<<14 | 0x06<<7 | 0x4B,\n\t1099 - 161: jis0208<<14 | 0x06<<7 | 0x4C,\n\t1100 - 161: jis0208<<14 | 0x06<<7 | 0x4D,\n\t1101 - 161: jis0208<<14 | 0x06<<7 | 0x4E,\n\t1102 - 161: jis0208<<14 | 0x06<<7 | 0x4F,\n\t1103 - 161: jis0208<<14 | 0x06<<7 | 0x50,\n\t1105 - 161: jis0208<<14 | 0x06<<7 | 0x36,\n\t1106 - 161: jis0212<<14 | 0x06<<7 | 0x51,\n\t1107 - 161: jis0212<<14 | 0x06<<7 | 0x52,\n\t1108 - 161: jis0212<<14 | 0x06<<7 | 0x53,\n\t1109 - 161: jis0212<<14 | 0x06<<7 | 0x54,\n\t1110 - 161: jis0212<<14 | 0x06<<7 | 0x55,\n\t1111 - 161: jis0212<<14 | 0x06<<7 | 0x56,\n\t1112 - 161: jis0212<<14 | 0x06<<7 | 0x57,\n\t1113 - 161: jis0212<<14 | 0x06<<7 | 0x58,\n\t1114 - 161: jis0212<<14 | 0x06<<7 | 0x59,\n\t1115 - 161: jis0212<<14 | 0x06<<7 | 0x5A,\n\t1116 - 161: jis0212<<14 | 0x06<<7 | 0x5B,\n\t1118 - 161: jis0212<<14 | 0x06<<7 | 0x5C,\n\t1119 - 161: jis0212<<14 | 0x06<<7 | 0x5D,\n}\n\nconst encode4Low, encode4High = 63785, 64046\n\nvar encode4 = [...]uint16{\n\t63785 - 63785: jis0208<<14 | 0x59<<7 | 0x25,\n\t63964 - 63785: jis0208<<14 | 0x5B<<7 | 0x2E,\n\t64014 - 63785: jis0208<<14 | 0x58<<7 | 0x33,\n\t64015 - 63785: jis0208<<14 | 0x58<<7 | 0x3E,\n\t64016 - 63785: jis0208<<14 | 0x58<<7 | 0x3F,\n\t64017 - 63785: jis0208<<14 | 0x58<<7 | 0x54,\n\t64018 - 63785: jis0208<<14 | 0x59<<7 | 0x1D,\n\t64019 - 63785: jis0208<<14 | 0x59<<7 | 0x2D,\n\t64020 - 63785: jis0208<<14 | 0x59<<7 | 0x2F,\n\t64021 - 63785: jis0208<<14 | 0x59<<7 | 0x5A,\n\t64022 - 63785: jis0208<<14 | 0x5A<<7 | 0x02,\n\t64023 - 63785: jis0208<<14 | 0x5A<<7 | 0x19,\n\t64024 - 63785: jis0208<<14 | 0x5A<<7 | 0x21,\n\t64025 - 63785: jis0208<<14 | 0x5A<<7 | 0x22,\n\t64026 - 63785: jis0208<<14 | 0x5A<<7 | 0x23,\n\t64027 - 63785: jis0208<<14 | 0x5A<<7 | 0x25,\n\t64028 - 63785: jis0208<<14 | 0x5A<<7 | 0x29,\n\t64029 - 63785: jis0208<<14 | 0x5A<<7 | 0x2C,\n\t64030 - 63785: jis0208<<14 | 0x5A<<7 | 0x35,\n\t64031 - 63785: jis0208<<14 | 0x5A<<7 | 0x40,\n\t64032 - 63785: jis0208<<14 | 0x5A<<7 | 0x42,\n\t64033 - 63785: jis0208<<14 | 0x5A<<7 | 0x43,\n\t64034 - 63785: jis0208<<14 | 0x5A<<7 | 0x4C,\n\t64035 - 63785: jis0208<<14 | 0x5A<<7 | 0x54,\n\t64036 - 63785: jis0208<<14 | 0x5A<<7 | 0x56,\n\t64037 - 63785: jis0208<<14 | 0x5A<<7 | 0x57,\n\t64038 - 63785: jis0208<<14 | 0x5A<<7 | 0x5A,\n\t64039 - 63785: jis0208<<14 | 0x5B<<7 | 0x18,\n\t64040 - 63785: jis0208<<14 | 0x5B<<7 | 0x1F,\n\t64041 - 63785: jis0208<<14 | 0x5B<<7 | 0x2F,\n\t64042 - 63785: jis0208<<14 | 0x5B<<7 | 0x3B,\n\t64043 - 63785: jis0208<<14 | 0x5B<<7 | 0x3C,\n\t64044 - 63785: jis0208<<14 | 0x5B<<7 | 0x3E,\n\t64045 - 63785: jis0208<<14 | 0x5B<<7 | 0x4B,\n}\n\nconst encode5Low, encode5High = 65281, 65510\n\nvar encode5 = [...]uint16{\n\t65281 - 65281: jis0208<<14 | 0x00<<7 | 0x09,\n\t65282 - 65281: jis0208<<14 | 0x5B<<7 | 0x5D,\n\t65283 - 65281: jis0208<<14 | 0x00<<7 | 0x53,\n\t65284 - 65281: jis0208<<14 | 0x00<<7 | 0x4F,\n\t65285 - 65281: jis0208<<14 | 0x00<<7 | 0x52,\n\t65286 - 65281: jis0208<<14 | 0x00<<7 | 0x54,\n\t65287 - 65281: jis0208<<14 | 0x5B<<7 | 0x5C,\n\t65288 - 65281: jis0208<<14 | 0x00<<7 | 0x29,\n\t65289 - 65281: jis0208<<14 | 0x00<<7 | 0x2A,\n\t65290 - 65281: jis0208<<14 | 0x00<<7 | 0x55,\n\t65291 - 65281: jis0208<<14 | 0x00<<7 | 0x3B,\n\t65292 - 65281: jis0208<<14 | 0x00<<7 | 0x03,\n\t65293 - 65281: jis0208<<14 | 0x00<<7 | 0x3C,\n\t65294 - 65281: jis0208<<14 | 0x00<<7 | 0x04,\n\t65295 - 65281: jis0208<<14 | 0x00<<7 | 0x1E,\n\t65296 - 65281: jis0208<<14 | 0x02<<7 | 0x0F,\n\t65297 - 65281: jis0208<<14 | 0x02<<7 | 0x10,\n\t65298 - 65281: jis0208<<14 | 0x02<<7 | 0x11,\n\t65299 - 65281: jis0208<<14 | 0x02<<7 | 0x12,\n\t65300 - 65281: jis0208<<14 | 0x02<<7 | 0x13,\n\t65301 - 65281: jis0208<<14 | 0x02<<7 | 0x14,\n\t65302 - 65281: jis0208<<14 | 0x02<<7 | 0x15,\n\t65303 - 65281: jis0208<<14 | 0x02<<7 | 0x16,\n\t65304 - 65281: jis0208<<14 | 0x02<<7 | 0x17,\n\t65305 - 65281: jis0208<<14 | 0x02<<7 | 0x18,\n\t65306 - 65281: jis0208<<14 | 0x00<<7 | 0x06,\n\t65307 - 65281: jis0208<<14 | 0x00<<7 | 0x07,\n\t65308 - 65281: jis0208<<14 | 0x00<<7 | 0x42,\n\t65309 - 65281: jis0208<<14 | 0x00<<7 | 0x40,\n\t65310 - 65281: jis0208<<14 | 0x00<<7 | 0x43,\n\t65311 - 65281: jis0208<<14 | 0x00<<7 | 0x08,\n\t65312 - 65281: jis0208<<14 | 0x00<<7 | 0x56,\n\t65313 - 65281: jis0208<<14 | 0x02<<7 | 0x20,\n\t65314 - 65281: jis0208<<14 | 0x02<<7 | 0x21,\n\t65315 - 65281: jis0208<<14 | 0x02<<7 | 0x22,\n\t65316 - 65281: jis0208<<14 | 0x02<<7 | 0x23,\n\t65317 - 65281: jis0208<<14 | 0x02<<7 | 0x24,\n\t65318 - 65281: jis0208<<14 | 0x02<<7 | 0x25,\n\t65319 - 65281: jis0208<<14 | 0x02<<7 | 0x26,\n\t65320 - 65281: jis0208<<14 | 0x02<<7 | 0x27,\n\t65321 - 65281: jis0208<<14 | 0x02<<7 | 0x28,\n\t65322 - 65281: jis0208<<14 | 0x02<<7 | 0x29,\n\t65323 - 65281: jis0208<<14 | 0x02<<7 | 0x2A,\n\t65324 - 65281: jis0208<<14 | 0x02<<7 | 0x2B,\n\t65325 - 65281: jis0208<<14 | 0x02<<7 | 0x2C,\n\t65326 - 65281: jis0208<<14 | 0x02<<7 | 0x2D,\n\t65327 - 65281: jis0208<<14 | 0x02<<7 | 0x2E,\n\t65328 - 65281: jis0208<<14 | 0x02<<7 | 0x2F,\n\t65329 - 65281: jis0208<<14 | 0x02<<7 | 0x30,\n\t65330 - 65281: jis0208<<14 | 0x02<<7 | 0x31,\n\t65331 - 65281: jis0208<<14 | 0x02<<7 | 0x32,\n\t65332 - 65281: jis0208<<14 | 0x02<<7 | 0x33,\n\t65333 - 65281: jis0208<<14 | 0x02<<7 | 0x34,\n\t65334 - 65281: jis0208<<14 | 0x02<<7 | 0x35,\n\t65335 - 65281: jis0208<<14 | 0x02<<7 | 0x36,\n\t65336 - 65281: jis0208<<14 | 0x02<<7 | 0x37,\n\t65337 - 65281: jis0208<<14 | 0x02<<7 | 0x38,\n\t65338 - 65281: jis0208<<14 | 0x02<<7 | 0x39,\n\t65339 - 65281: jis0208<<14 | 0x00<<7 | 0x2D,\n\t65340 - 65281: jis0208<<14 | 0x00<<7 | 0x1F,\n\t65341 - 65281: jis0208<<14 | 0x00<<7 | 0x2E,\n\t65342 - 65281: jis0208<<14 | 0x00<<7 | 0x0F,\n\t65343 - 65281: jis0208<<14 | 0x00<<7 | 0x11,\n\t65344 - 65281: jis0208<<14 | 0x00<<7 | 0x0D,\n\t65345 - 65281: jis0208<<14 | 0x02<<7 | 0x40,\n\t65346 - 65281: jis0208<<14 | 0x02<<7 | 0x41,\n\t65347 - 65281: jis0208<<14 | 0x02<<7 | 0x42,\n\t65348 - 65281: jis0208<<14 | 0x02<<7 | 0x43,\n\t65349 - 65281: jis0208<<14 | 0x02<<7 | 0x44,\n\t65350 - 65281: jis0208<<14 | 0x02<<7 | 0x45,\n\t65351 - 65281: jis0208<<14 | 0x02<<7 | 0x46,\n\t65352 - 65281: jis0208<<14 | 0x02<<7 | 0x47,\n\t65353 - 65281: jis0208<<14 | 0x02<<7 | 0x48,\n\t65354 - 65281: jis0208<<14 | 0x02<<7 | 0x49,\n\t65355 - 65281: jis0208<<14 | 0x02<<7 | 0x4A,\n\t65356 - 65281: jis0208<<14 | 0x02<<7 | 0x4B,\n\t65357 - 65281: jis0208<<14 | 0x02<<7 | 0x4C,\n\t65358 - 65281: jis0208<<14 | 0x02<<7 | 0x4D,\n\t65359 - 65281: jis0208<<14 | 0x02<<7 | 0x4E,\n\t65360 - 65281: jis0208<<14 | 0x02<<7 | 0x4F,\n\t65361 - 65281: jis0208<<14 | 0x02<<7 | 0x50,\n\t65362 - 65281: jis0208<<14 | 0x02<<7 | 0x51,\n\t65363 - 65281: jis0208<<14 | 0x02<<7 | 0x52,\n\t65364 - 65281: jis0208<<14 | 0x02<<7 | 0x53,\n\t65365 - 65281: jis0208<<14 | 0x02<<7 | 0x54,\n\t65366 - 65281: jis0208<<14 | 0x02<<7 | 0x55,\n\t65367 - 65281: jis0208<<14 | 0x02<<7 | 0x56,\n\t65368 - 65281: jis0208<<14 | 0x02<<7 | 0x57,\n\t65369 - 65281: jis0208<<14 | 0x02<<7 | 0x58,\n\t65370 - 65281: jis0208<<14 | 0x02<<7 | 0x59,\n\t65371 - 65281: jis0208<<14 | 0x00<<7 | 0x2F,\n\t65372 - 65281: jis0208<<14 | 0x00<<7 | 0x22,\n\t65373 - 65281: jis0208<<14 | 0x00<<7 | 0x30,\n\t65374 - 65281: jis0208<<14 | 0x00<<7 | 0x20,\n\t65504 - 65281: jis0208<<14 | 0x00<<7 | 0x50,\n\t65505 - 65281: jis0208<<14 | 0x00<<7 | 0x51,\n\t65506 - 65281: jis0208<<14 | 0x01<<7 | 0x2B,\n\t65507 - 65281: jis0208<<14 | 0x00<<7 | 0x10,\n\t65508 - 65281: jis0208<<14 | 0x5B<<7 | 0x5B,\n\t65509 - 65281: jis0208<<14 | 0x00<<7 | 0x4E,\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/text/encoding/korean/euckr.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage korean\n\nimport (\n\t\"unicode/utf8\"\n\n\t\"golang.org/x/text/encoding\"\n\t\"golang.org/x/text/encoding/internal\"\n\t\"golang.org/x/text/encoding/internal/identifier\"\n\t\"golang.org/x/text/transform\"\n)\n\n// All is a list of all defined encodings in this package.\nvar All = []encoding.Encoding{EUCKR}\n\n// EUCKR is the EUC-KR encoding, also known as Code Page 949.\nvar EUCKR encoding.Encoding = &eucKR\n\nvar eucKR = internal.Encoding{\n\tEncoding: &internal.SimpleEncoding{Decoder: eucKRDecoder{}, Encoder: eucKREncoder{}},\n\tName:     \"EUC-KR\",\n\tMIB:      identifier.EUCKR,\n}\n\ntype eucKRDecoder struct{ transform.NopResetter }\n\nfunc (eucKRDecoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {\n\tr, size := rune(0), 0\nloop:\n\tfor ; nSrc < len(src); nSrc += size {\n\t\tswitch c0 := src[nSrc]; {\n\t\tcase c0 < utf8.RuneSelf:\n\t\t\tr, size = rune(c0), 1\n\n\t\tcase 0x81 <= c0 && c0 < 0xff:\n\t\t\tif nSrc+1 >= len(src) {\n\t\t\t\tif !atEOF {\n\t\t\t\t\terr = transform.ErrShortSrc\n\t\t\t\t\tbreak loop\n\t\t\t\t}\n\t\t\t\tr, size = utf8.RuneError, 1\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tc1 := src[nSrc+1]\n\t\t\tsize = 2\n\t\t\tif c0 < 0xc7 {\n\t\t\t\tr = 178 * rune(c0-0x81)\n\t\t\t\tswitch {\n\t\t\t\tcase 0x41 <= c1 && c1 < 0x5b:\n\t\t\t\t\tr += rune(c1) - (0x41 - 0*26)\n\t\t\t\tcase 0x61 <= c1 && c1 < 0x7b:\n\t\t\t\t\tr += rune(c1) - (0x61 - 1*26)\n\t\t\t\tcase 0x81 <= c1 && c1 < 0xff:\n\t\t\t\t\tr += rune(c1) - (0x81 - 2*26)\n\t\t\t\tdefault:\n\t\t\t\t\tgoto decError\n\t\t\t\t}\n\t\t\t} else if 0xa1 <= c1 && c1 < 0xff {\n\t\t\t\tr = 178*(0xc7-0x81) + rune(c0-0xc7)*94 + rune(c1-0xa1)\n\t\t\t} else {\n\t\t\t\tgoto decError\n\t\t\t}\n\t\t\tif int(r) < len(decode) {\n\t\t\t\tr = rune(decode[r])\n\t\t\t\tif r != 0 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdecError:\n\t\t\tr = utf8.RuneError\n\t\t\tif c1 < utf8.RuneSelf {\n\t\t\t\tsize = 1\n\t\t\t}\n\n\t\tdefault:\n\t\t\tr, size = utf8.RuneError, 1\n\t\t\tbreak\n\t\t}\n\n\t\tif nDst+utf8.RuneLen(r) > len(dst) {\n\t\t\terr = transform.ErrShortDst\n\t\t\tbreak\n\t\t}\n\t\tnDst += utf8.EncodeRune(dst[nDst:], r)\n\t}\n\treturn nDst, nSrc, err\n}\n\ntype eucKREncoder struct{ transform.NopResetter }\n\nfunc (eucKREncoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {\n\tr, size := rune(0), 0\n\tfor ; nSrc < len(src); nSrc += size {\n\t\tr = rune(src[nSrc])\n\n\t\t// Decode a 1-byte rune.\n\t\tif r < utf8.RuneSelf {\n\t\t\tsize = 1\n\n\t\t\tif nDst >= len(dst) {\n\t\t\t\terr = transform.ErrShortDst\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tdst[nDst] = uint8(r)\n\t\t\tnDst++\n\t\t\tcontinue\n\n\t\t} else {\n\t\t\t// Decode a multi-byte rune.\n\t\t\tr, size = utf8.DecodeRune(src[nSrc:])\n\t\t\tif size == 1 {\n\t\t\t\t// All valid runes of size 1 (those below utf8.RuneSelf) were\n\t\t\t\t// handled above. We have invalid UTF-8 or we haven't seen the\n\t\t\t\t// full character yet.\n\t\t\t\tif !atEOF && !utf8.FullRune(src[nSrc:]) {\n\t\t\t\t\terr = transform.ErrShortSrc\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// func init checks that the switch covers all tables.\n\t\t\tswitch {\n\t\t\tcase encode0Low <= r && r < encode0High:\n\t\t\t\tif r = rune(encode0[r-encode0Low]); r != 0 {\n\t\t\t\t\tgoto write2\n\t\t\t\t}\n\t\t\tcase encode1Low <= r && r < encode1High:\n\t\t\t\tif r = rune(encode1[r-encode1Low]); r != 0 {\n\t\t\t\t\tgoto write2\n\t\t\t\t}\n\t\t\tcase encode2Low <= r && r < encode2High:\n\t\t\t\tif r = rune(encode2[r-encode2Low]); r != 0 {\n\t\t\t\t\tgoto write2\n\t\t\t\t}\n\t\t\tcase encode3Low <= r && r < encode3High:\n\t\t\t\tif r = rune(encode3[r-encode3Low]); r != 0 {\n\t\t\t\t\tgoto write2\n\t\t\t\t}\n\t\t\tcase encode4Low <= r && r < encode4High:\n\t\t\t\tif r = rune(encode4[r-encode4Low]); r != 0 {\n\t\t\t\t\tgoto write2\n\t\t\t\t}\n\t\t\tcase encode5Low <= r && r < encode5High:\n\t\t\t\tif r = rune(encode5[r-encode5Low]); r != 0 {\n\t\t\t\t\tgoto write2\n\t\t\t\t}\n\t\t\tcase encode6Low <= r && r < encode6High:\n\t\t\t\tif r = rune(encode6[r-encode6Low]); r != 0 {\n\t\t\t\t\tgoto write2\n\t\t\t\t}\n\t\t\t}\n\t\t\terr = internal.ErrASCIIReplacement\n\t\t\tbreak\n\t\t}\n\n\twrite2:\n\t\tif nDst+2 > len(dst) {\n\t\t\terr = transform.ErrShortDst\n\t\t\tbreak\n\t\t}\n\t\tdst[nDst+0] = uint8(r >> 8)\n\t\tdst[nDst+1] = uint8(r)\n\t\tnDst += 2\n\t\tcontinue\n\t}\n\treturn nDst, nSrc, err\n}\n\nfunc init() {\n\t// Check that the hard-coded encode switch covers all tables.\n\tif numEncodeTables != 7 {\n\t\tpanic(\"bad numEncodeTables\")\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/text/encoding/korean/tables.go",
    "content": "// generated by go run maketables.go; DO NOT EDIT\n\n// Package korean provides Korean encodings such as EUC-KR.\npackage korean // import \"golang.org/x/text/encoding/korean\"\n\n// decode is the decoding table from EUC-KR code to Unicode.\n// It is defined at http://encoding.spec.whatwg.org/index-euc-kr.txt\nvar decode = [...]uint16{\n\t0:     0xAC02,\n\t1:     0xAC03,\n\t2:     0xAC05,\n\t3:     0xAC06,\n\t4:     0xAC0B,\n\t5:     0xAC0C,\n\t6:     0xAC0D,\n\t7:     0xAC0E,\n\t8:     0xAC0F,\n\t9:     0xAC18,\n\t10:    0xAC1E,\n\t11:    0xAC1F,\n\t12:    0xAC21,\n\t13:    0xAC22,\n\t14:    0xAC23,\n\t15:    0xAC25,\n\t16:    0xAC26,\n\t17:    0xAC27,\n\t18:    0xAC28,\n\t19:    0xAC29,\n\t20:    0xAC2A,\n\t21:    0xAC2B,\n\t22:    0xAC2E,\n\t23:    0xAC32,\n\t24:    0xAC33,\n\t25:    0xAC34,\n\t26:    0xAC35,\n\t27:    0xAC36,\n\t28:    0xAC37,\n\t29:    0xAC3A,\n\t30:    0xAC3B,\n\t31:    0xAC3D,\n\t32:    0xAC3E,\n\t33:    0xAC3F,\n\t34:    0xAC41,\n\t35:    0xAC42,\n\t36:    0xAC43,\n\t37:    0xAC44,\n\t38:    0xAC45,\n\t39:    0xAC46,\n\t40:    0xAC47,\n\t41:    0xAC48,\n\t42:    0xAC49,\n\t43:    0xAC4A,\n\t44:    0xAC4C,\n\t45:    0xAC4E,\n\t46:    0xAC4F,\n\t47:    0xAC50,\n\t48:    0xAC51,\n\t49:    0xAC52,\n\t50:    0xAC53,\n\t51:    0xAC55,\n\t52:    0xAC56,\n\t53:    0xAC57,\n\t54:    0xAC59,\n\t55:    0xAC5A,\n\t56:    0xAC5B,\n\t57:    0xAC5D,\n\t58:    0xAC5E,\n\t59:    0xAC5F,\n\t60:    0xAC60,\n\t61:    0xAC61,\n\t62:    0xAC62,\n\t63:    0xAC63,\n\t64:    0xAC64,\n\t65:    0xAC65,\n\t66:    0xAC66,\n\t67:    0xAC67,\n\t68:    0xAC68,\n\t69:    0xAC69,\n\t70:    0xAC6A,\n\t71:    0xAC6B,\n\t72:    0xAC6C,\n\t73:    0xAC6D,\n\t74:    0xAC6E,\n\t75:    0xAC6F,\n\t76:    0xAC72,\n\t77:    0xAC73,\n\t78:    0xAC75,\n\t79:    0xAC76,\n\t80:    0xAC79,\n\t81:    0xAC7B,\n\t82:    0xAC7C,\n\t83:    0xAC7D,\n\t84:    0xAC7E,\n\t85:    0xAC7F,\n\t86:    0xAC82,\n\t87:    0xAC87,\n\t88:    0xAC88,\n\t89:    0xAC8D,\n\t90:    0xAC8E,\n\t91:    0xAC8F,\n\t92:    0xAC91,\n\t93:    0xAC92,\n\t94:    0xAC93,\n\t95:    0xAC95,\n\t96:    0xAC96,\n\t97:    0xAC97,\n\t98:    0xAC98,\n\t99:    0xAC99,\n\t100:   0xAC9A,\n\t101:   0xAC9B,\n\t102:   0xAC9E,\n\t103:   0xACA2,\n\t104:   0xACA3,\n\t105:   0xACA4,\n\t106:   0xACA5,\n\t107:   0xACA6,\n\t108:   0xACA7,\n\t109:   0xACAB,\n\t110:   0xACAD,\n\t111:   0xACAE,\n\t112:   0xACB1,\n\t113:   0xACB2,\n\t114:   0xACB3,\n\t115:   0xACB4,\n\t116:   0xACB5,\n\t117:   0xACB6,\n\t118:   0xACB7,\n\t119:   0xACBA,\n\t120:   0xACBE,\n\t121:   0xACBF,\n\t122:   0xACC0,\n\t123:   0xACC2,\n\t124:   0xACC3,\n\t125:   0xACC5,\n\t126:   0xACC6,\n\t127:   0xACC7,\n\t128:   0xACC9,\n\t129:   0xACCA,\n\t130:   0xACCB,\n\t131:   0xACCD,\n\t132:   0xACCE,\n\t133:   0xACCF,\n\t134:   0xACD0,\n\t135:   0xACD1,\n\t136:   0xACD2,\n\t137:   0xACD3,\n\t138:   0xACD4,\n\t139:   0xACD6,\n\t140:   0xACD8,\n\t141:   0xACD9,\n\t142:   0xACDA,\n\t143:   0xACDB,\n\t144:   0xACDC,\n\t145:   0xACDD,\n\t146:   0xACDE,\n\t147:   0xACDF,\n\t148:   0xACE2,\n\t149:   0xACE3,\n\t150:   0xACE5,\n\t151:   0xACE6,\n\t152:   0xACE9,\n\t153:   0xACEB,\n\t154:   0xACED,\n\t155:   0xACEE,\n\t156:   0xACF2,\n\t157:   0xACF4,\n\t158:   0xACF7,\n\t159:   0xACF8,\n\t160:   0xACF9,\n\t161:   0xACFA,\n\t162:   0xACFB,\n\t163:   0xACFE,\n\t164:   0xACFF,\n\t165:   0xAD01,\n\t166:   0xAD02,\n\t167:   0xAD03,\n\t168:   0xAD05,\n\t169:   0xAD07,\n\t170:   0xAD08,\n\t171:   0xAD09,\n\t172:   0xAD0A,\n\t173:   0xAD0B,\n\t174:   0xAD0E,\n\t175:   0xAD10,\n\t176:   0xAD12,\n\t177:   0xAD13,\n\t178:   0xAD14,\n\t179:   0xAD15,\n\t180:   0xAD16,\n\t181:   0xAD17,\n\t182:   0xAD19,\n\t183:   0xAD1A,\n\t184:   0xAD1B,\n\t185:   0xAD1D,\n\t186:   0xAD1E,\n\t187:   0xAD1F,\n\t188:   0xAD21,\n\t189:   0xAD22,\n\t190:   0xAD23,\n\t191:   0xAD24,\n\t192:   0xAD25,\n\t193:   0xAD26,\n\t194:   0xAD27,\n\t195:   0xAD28,\n\t196:   0xAD2A,\n\t197:   0xAD2B,\n\t198:   0xAD2E,\n\t199:   0xAD2F,\n\t200:   0xAD30,\n\t201:   0xAD31,\n\t202:   0xAD32,\n\t203:   0xAD33,\n\t204:   0xAD36,\n\t205:   0xAD37,\n\t206:   0xAD39,\n\t207:   0xAD3A,\n\t208:   0xAD3B,\n\t209:   0xAD3D,\n\t210:   0xAD3E,\n\t211:   0xAD3F,\n\t212:   0xAD40,\n\t213:   0xAD41,\n\t214:   0xAD42,\n\t215:   0xAD43,\n\t216:   0xAD46,\n\t217:   0xAD48,\n\t218:   0xAD4A,\n\t219:   0xAD4B,\n\t220:   0xAD4C,\n\t221:   0xAD4D,\n\t222:   0xAD4E,\n\t223:   0xAD4F,\n\t224:   0xAD51,\n\t225:   0xAD52,\n\t226:   0xAD53,\n\t227:   0xAD55,\n\t228:   0xAD56,\n\t229:   0xAD57,\n\t230:   0xAD59,\n\t231:   0xAD5A,\n\t232:   0xAD5B,\n\t233:   0xAD5C,\n\t234:   0xAD5D,\n\t235:   0xAD5E,\n\t236:   0xAD5F,\n\t237:   0xAD60,\n\t238:   0xAD62,\n\t239:   0xAD64,\n\t240:   0xAD65,\n\t241:   0xAD66,\n\t242:   0xAD67,\n\t243:   0xAD68,\n\t244:   0xAD69,\n\t245:   0xAD6A,\n\t246:   0xAD6B,\n\t247:   0xAD6E,\n\t248:   0xAD6F,\n\t249:   0xAD71,\n\t250:   0xAD72,\n\t251:   0xAD77,\n\t252:   0xAD78,\n\t253:   0xAD79,\n\t254:   0xAD7A,\n\t255:   0xAD7E,\n\t256:   0xAD80,\n\t257:   0xAD83,\n\t258:   0xAD84,\n\t259:   0xAD85,\n\t260:   0xAD86,\n\t261:   0xAD87,\n\t262:   0xAD8A,\n\t263:   0xAD8B,\n\t264:   0xAD8D,\n\t265:   0xAD8E,\n\t266:   0xAD8F,\n\t267:   0xAD91,\n\t268:   0xAD92,\n\t269:   0xAD93,\n\t270:   0xAD94,\n\t271:   0xAD95,\n\t272:   0xAD96,\n\t273:   0xAD97,\n\t274:   0xAD98,\n\t275:   0xAD99,\n\t276:   0xAD9A,\n\t277:   0xAD9B,\n\t278:   0xAD9E,\n\t279:   0xAD9F,\n\t280:   0xADA0,\n\t281:   0xADA1,\n\t282:   0xADA2,\n\t283:   0xADA3,\n\t284:   0xADA5,\n\t285:   0xADA6,\n\t286:   0xADA7,\n\t287:   0xADA8,\n\t288:   0xADA9,\n\t289:   0xADAA,\n\t290:   0xADAB,\n\t291:   0xADAC,\n\t292:   0xADAD,\n\t293:   0xADAE,\n\t294:   0xADAF,\n\t295:   0xADB0,\n\t296:   0xADB1,\n\t297:   0xADB2,\n\t298:   0xADB3,\n\t299:   0xADB4,\n\t300:   0xADB5,\n\t301:   0xADB6,\n\t302:   0xADB8,\n\t303:   0xADB9,\n\t304:   0xADBA,\n\t305:   0xADBB,\n\t306:   0xADBC,\n\t307:   0xADBD,\n\t308:   0xADBE,\n\t309:   0xADBF,\n\t310:   0xADC2,\n\t311:   0xADC3,\n\t312:   0xADC5,\n\t313:   0xADC6,\n\t314:   0xADC7,\n\t315:   0xADC9,\n\t316:   0xADCA,\n\t317:   0xADCB,\n\t318:   0xADCC,\n\t319:   0xADCD,\n\t320:   0xADCE,\n\t321:   0xADCF,\n\t322:   0xADD2,\n\t323:   0xADD4,\n\t324:   0xADD5,\n\t325:   0xADD6,\n\t326:   0xADD7,\n\t327:   0xADD8,\n\t328:   0xADD9,\n\t329:   0xADDA,\n\t330:   0xADDB,\n\t331:   0xADDD,\n\t332:   0xADDE,\n\t333:   0xADDF,\n\t334:   0xADE1,\n\t335:   0xADE2,\n\t336:   0xADE3,\n\t337:   0xADE5,\n\t338:   0xADE6,\n\t339:   0xADE7,\n\t340:   0xADE8,\n\t341:   0xADE9,\n\t342:   0xADEA,\n\t343:   0xADEB,\n\t344:   0xADEC,\n\t345:   0xADED,\n\t346:   0xADEE,\n\t347:   0xADEF,\n\t348:   0xADF0,\n\t349:   0xADF1,\n\t350:   0xADF2,\n\t351:   0xADF3,\n\t352:   0xADF4,\n\t353:   0xADF5,\n\t354:   0xADF6,\n\t355:   0xADF7,\n\t356:   0xADFA,\n\t357:   0xADFB,\n\t358:   0xADFD,\n\t359:   0xADFE,\n\t360:   0xAE02,\n\t361:   0xAE03,\n\t362:   0xAE04,\n\t363:   0xAE05,\n\t364:   0xAE06,\n\t365:   0xAE07,\n\t366:   0xAE0A,\n\t367:   0xAE0C,\n\t368:   0xAE0E,\n\t369:   0xAE0F,\n\t370:   0xAE10,\n\t371:   0xAE11,\n\t372:   0xAE12,\n\t373:   0xAE13,\n\t374:   0xAE15,\n\t375:   0xAE16,\n\t376:   0xAE17,\n\t377:   0xAE18,\n\t378:   0xAE19,\n\t379:   0xAE1A,\n\t380:   0xAE1B,\n\t381:   0xAE1C,\n\t382:   0xAE1D,\n\t383:   0xAE1E,\n\t384:   0xAE1F,\n\t385:   0xAE20,\n\t386:   0xAE21,\n\t387:   0xAE22,\n\t388:   0xAE23,\n\t389:   0xAE24,\n\t390:   0xAE25,\n\t391:   0xAE26,\n\t392:   0xAE27,\n\t393:   0xAE28,\n\t394:   0xAE29,\n\t395:   0xAE2A,\n\t396:   0xAE2B,\n\t397:   0xAE2C,\n\t398:   0xAE2D,\n\t399:   0xAE2E,\n\t400:   0xAE2F,\n\t401:   0xAE32,\n\t402:   0xAE33,\n\t403:   0xAE35,\n\t404:   0xAE36,\n\t405:   0xAE39,\n\t406:   0xAE3B,\n\t407:   0xAE3C,\n\t408:   0xAE3D,\n\t409:   0xAE3E,\n\t410:   0xAE3F,\n\t411:   0xAE42,\n\t412:   0xAE44,\n\t413:   0xAE47,\n\t414:   0xAE48,\n\t415:   0xAE49,\n\t416:   0xAE4B,\n\t417:   0xAE4F,\n\t418:   0xAE51,\n\t419:   0xAE52,\n\t420:   0xAE53,\n\t421:   0xAE55,\n\t422:   0xAE57,\n\t423:   0xAE58,\n\t424:   0xAE59,\n\t425:   0xAE5A,\n\t426:   0xAE5B,\n\t427:   0xAE5E,\n\t428:   0xAE62,\n\t429:   0xAE63,\n\t430:   0xAE64,\n\t431:   0xAE66,\n\t432:   0xAE67,\n\t433:   0xAE6A,\n\t434:   0xAE6B,\n\t435:   0xAE6D,\n\t436:   0xAE6E,\n\t437:   0xAE6F,\n\t438:   0xAE71,\n\t439:   0xAE72,\n\t440:   0xAE73,\n\t441:   0xAE74,\n\t442:   0xAE75,\n\t443:   0xAE76,\n\t444:   0xAE77,\n\t445:   0xAE7A,\n\t446:   0xAE7E,\n\t447:   0xAE7F,\n\t448:   0xAE80,\n\t449:   0xAE81,\n\t450:   0xAE82,\n\t451:   0xAE83,\n\t452:   0xAE86,\n\t453:   0xAE87,\n\t454:   0xAE88,\n\t455:   0xAE89,\n\t456:   0xAE8A,\n\t457:   0xAE8B,\n\t458:   0xAE8D,\n\t459:   0xAE8E,\n\t460:   0xAE8F,\n\t461:   0xAE90,\n\t462:   0xAE91,\n\t463:   0xAE92,\n\t464:   0xAE93,\n\t465:   0xAE94,\n\t466:   0xAE95,\n\t467:   0xAE96,\n\t468:   0xAE97,\n\t469:   0xAE98,\n\t470:   0xAE99,\n\t471:   0xAE9A,\n\t472:   0xAE9B,\n\t473:   0xAE9C,\n\t474:   0xAE9D,\n\t475:   0xAE9E,\n\t476:   0xAE9F,\n\t477:   0xAEA0,\n\t478:   0xAEA1,\n\t479:   0xAEA2,\n\t480:   0xAEA3,\n\t481:   0xAEA4,\n\t482:   0xAEA5,\n\t483:   0xAEA6,\n\t484:   0xAEA7,\n\t485:   0xAEA8,\n\t486:   0xAEA9,\n\t487:   0xAEAA,\n\t488:   0xAEAB,\n\t489:   0xAEAC,\n\t490:   0xAEAD,\n\t491:   0xAEAE,\n\t492:   0xAEAF,\n\t493:   0xAEB0,\n\t494:   0xAEB1,\n\t495:   0xAEB2,\n\t496:   0xAEB3,\n\t497:   0xAEB4,\n\t498:   0xAEB5,\n\t499:   0xAEB6,\n\t500:   0xAEB7,\n\t501:   0xAEB8,\n\t502:   0xAEB9,\n\t503:   0xAEBA,\n\t504:   0xAEBB,\n\t505:   0xAEBF,\n\t506:   0xAEC1,\n\t507:   0xAEC2,\n\t508:   0xAEC3,\n\t509:   0xAEC5,\n\t510:   0xAEC6,\n\t511:   0xAEC7,\n\t512:   0xAEC8,\n\t513:   0xAEC9,\n\t514:   0xAECA,\n\t515:   0xAECB,\n\t516:   0xAECE,\n\t517:   0xAED2,\n\t518:   0xAED3,\n\t519:   0xAED4,\n\t520:   0xAED5,\n\t521:   0xAED6,\n\t522:   0xAED7,\n\t523:   0xAEDA,\n\t524:   0xAEDB,\n\t525:   0xAEDD,\n\t526:   0xAEDE,\n\t527:   0xAEDF,\n\t528:   0xAEE0,\n\t529:   0xAEE1,\n\t530:   0xAEE2,\n\t531:   0xAEE3,\n\t532:   0xAEE4,\n\t533:   0xAEE5,\n\t534:   0xAEE6,\n\t535:   0xAEE7,\n\t536:   0xAEE9,\n\t537:   0xAEEA,\n\t538:   0xAEEC,\n\t539:   0xAEEE,\n\t540:   0xAEEF,\n\t541:   0xAEF0,\n\t542:   0xAEF1,\n\t543:   0xAEF2,\n\t544:   0xAEF3,\n\t545:   0xAEF5,\n\t546:   0xAEF6,\n\t547:   0xAEF7,\n\t548:   0xAEF9,\n\t549:   0xAEFA,\n\t550:   0xAEFB,\n\t551:   0xAEFD,\n\t552:   0xAEFE,\n\t553:   0xAEFF,\n\t554:   0xAF00,\n\t555:   0xAF01,\n\t556:   0xAF02,\n\t557:   0xAF03,\n\t558:   0xAF04,\n\t559:   0xAF05,\n\t560:   0xAF06,\n\t561:   0xAF09,\n\t562:   0xAF0A,\n\t563:   0xAF0B,\n\t564:   0xAF0C,\n\t565:   0xAF0E,\n\t566:   0xAF0F,\n\t567:   0xAF11,\n\t568:   0xAF12,\n\t569:   0xAF13,\n\t570:   0xAF14,\n\t571:   0xAF15,\n\t572:   0xAF16,\n\t573:   0xAF17,\n\t574:   0xAF18,\n\t575:   0xAF19,\n\t576:   0xAF1A,\n\t577:   0xAF1B,\n\t578:   0xAF1C,\n\t579:   0xAF1D,\n\t580:   0xAF1E,\n\t581:   0xAF1F,\n\t582:   0xAF20,\n\t583:   0xAF21,\n\t584:   0xAF22,\n\t585:   0xAF23,\n\t586:   0xAF24,\n\t587:   0xAF25,\n\t588:   0xAF26,\n\t589:   0xAF27,\n\t590:   0xAF28,\n\t591:   0xAF29,\n\t592:   0xAF2A,\n\t593:   0xAF2B,\n\t594:   0xAF2E,\n\t595:   0xAF2F,\n\t596:   0xAF31,\n\t597:   0xAF33,\n\t598:   0xAF35,\n\t599:   0xAF36,\n\t600:   0xAF37,\n\t601:   0xAF38,\n\t602:   0xAF39,\n\t603:   0xAF3A,\n\t604:   0xAF3B,\n\t605:   0xAF3E,\n\t606:   0xAF40,\n\t607:   0xAF44,\n\t608:   0xAF45,\n\t609:   0xAF46,\n\t610:   0xAF47,\n\t611:   0xAF4A,\n\t612:   0xAF4B,\n\t613:   0xAF4C,\n\t614:   0xAF4D,\n\t615:   0xAF4E,\n\t616:   0xAF4F,\n\t617:   0xAF51,\n\t618:   0xAF52,\n\t619:   0xAF53,\n\t620:   0xAF54,\n\t621:   0xAF55,\n\t622:   0xAF56,\n\t623:   0xAF57,\n\t624:   0xAF58,\n\t625:   0xAF59,\n\t626:   0xAF5A,\n\t627:   0xAF5B,\n\t628:   0xAF5E,\n\t629:   0xAF5F,\n\t630:   0xAF60,\n\t631:   0xAF61,\n\t632:   0xAF62,\n\t633:   0xAF63,\n\t634:   0xAF66,\n\t635:   0xAF67,\n\t636:   0xAF68,\n\t637:   0xAF69,\n\t638:   0xAF6A,\n\t639:   0xAF6B,\n\t640:   0xAF6C,\n\t641:   0xAF6D,\n\t642:   0xAF6E,\n\t643:   0xAF6F,\n\t644:   0xAF70,\n\t645:   0xAF71,\n\t646:   0xAF72,\n\t647:   0xAF73,\n\t648:   0xAF74,\n\t649:   0xAF75,\n\t650:   0xAF76,\n\t651:   0xAF77,\n\t652:   0xAF78,\n\t653:   0xAF7A,\n\t654:   0xAF7B,\n\t655:   0xAF7C,\n\t656:   0xAF7D,\n\t657:   0xAF7E,\n\t658:   0xAF7F,\n\t659:   0xAF81,\n\t660:   0xAF82,\n\t661:   0xAF83,\n\t662:   0xAF85,\n\t663:   0xAF86,\n\t664:   0xAF87,\n\t665:   0xAF89,\n\t666:   0xAF8A,\n\t667:   0xAF8B,\n\t668:   0xAF8C,\n\t669:   0xAF8D,\n\t670:   0xAF8E,\n\t671:   0xAF8F,\n\t672:   0xAF92,\n\t673:   0xAF93,\n\t674:   0xAF94,\n\t675:   0xAF96,\n\t676:   0xAF97,\n\t677:   0xAF98,\n\t678:   0xAF99,\n\t679:   0xAF9A,\n\t680:   0xAF9B,\n\t681:   0xAF9D,\n\t682:   0xAF9E,\n\t683:   0xAF9F,\n\t684:   0xAFA0,\n\t685:   0xAFA1,\n\t686:   0xAFA2,\n\t687:   0xAFA3,\n\t688:   0xAFA4,\n\t689:   0xAFA5,\n\t690:   0xAFA6,\n\t691:   0xAFA7,\n\t692:   0xAFA8,\n\t693:   0xAFA9,\n\t694:   0xAFAA,\n\t695:   0xAFAB,\n\t696:   0xAFAC,\n\t697:   0xAFAD,\n\t698:   0xAFAE,\n\t699:   0xAFAF,\n\t700:   0xAFB0,\n\t701:   0xAFB1,\n\t702:   0xAFB2,\n\t703:   0xAFB3,\n\t704:   0xAFB4,\n\t705:   0xAFB5,\n\t706:   0xAFB6,\n\t707:   0xAFB7,\n\t708:   0xAFBA,\n\t709:   0xAFBB,\n\t710:   0xAFBD,\n\t711:   0xAFBE,\n\t712:   0xAFBF,\n\t713:   0xAFC1,\n\t714:   0xAFC2,\n\t715:   0xAFC3,\n\t716:   0xAFC4,\n\t717:   0xAFC5,\n\t718:   0xAFC6,\n\t719:   0xAFCA,\n\t720:   0xAFCC,\n\t721:   0xAFCF,\n\t722:   0xAFD0,\n\t723:   0xAFD1,\n\t724:   0xAFD2,\n\t725:   0xAFD3,\n\t726:   0xAFD5,\n\t727:   0xAFD6,\n\t728:   0xAFD7,\n\t729:   0xAFD8,\n\t730:   0xAFD9,\n\t731:   0xAFDA,\n\t732:   0xAFDB,\n\t733:   0xAFDD,\n\t734:   0xAFDE,\n\t735:   0xAFDF,\n\t736:   0xAFE0,\n\t737:   0xAFE1,\n\t738:   0xAFE2,\n\t739:   0xAFE3,\n\t740:   0xAFE4,\n\t741:   0xAFE5,\n\t742:   0xAFE6,\n\t743:   0xAFE7,\n\t744:   0xAFEA,\n\t745:   0xAFEB,\n\t746:   0xAFEC,\n\t747:   0xAFED,\n\t748:   0xAFEE,\n\t749:   0xAFEF,\n\t750:   0xAFF2,\n\t751:   0xAFF3,\n\t752:   0xAFF5,\n\t753:   0xAFF6,\n\t754:   0xAFF7,\n\t755:   0xAFF9,\n\t756:   0xAFFA,\n\t757:   0xAFFB,\n\t758:   0xAFFC,\n\t759:   0xAFFD,\n\t760:   0xAFFE,\n\t761:   0xAFFF,\n\t762:   0xB002,\n\t763:   0xB003,\n\t764:   0xB005,\n\t765:   0xB006,\n\t766:   0xB007,\n\t767:   0xB008,\n\t768:   0xB009,\n\t769:   0xB00A,\n\t770:   0xB00B,\n\t771:   0xB00D,\n\t772:   0xB00E,\n\t773:   0xB00F,\n\t774:   0xB011,\n\t775:   0xB012,\n\t776:   0xB013,\n\t777:   0xB015,\n\t778:   0xB016,\n\t779:   0xB017,\n\t780:   0xB018,\n\t781:   0xB019,\n\t782:   0xB01A,\n\t783:   0xB01B,\n\t784:   0xB01E,\n\t785:   0xB01F,\n\t786:   0xB020,\n\t787:   0xB021,\n\t788:   0xB022,\n\t789:   0xB023,\n\t790:   0xB024,\n\t791:   0xB025,\n\t792:   0xB026,\n\t793:   0xB027,\n\t794:   0xB029,\n\t795:   0xB02A,\n\t796:   0xB02B,\n\t797:   0xB02C,\n\t798:   0xB02D,\n\t799:   0xB02E,\n\t800:   0xB02F,\n\t801:   0xB030,\n\t802:   0xB031,\n\t803:   0xB032,\n\t804:   0xB033,\n\t805:   0xB034,\n\t806:   0xB035,\n\t807:   0xB036,\n\t808:   0xB037,\n\t809:   0xB038,\n\t810:   0xB039,\n\t811:   0xB03A,\n\t812:   0xB03B,\n\t813:   0xB03C,\n\t814:   0xB03D,\n\t815:   0xB03E,\n\t816:   0xB03F,\n\t817:   0xB040,\n\t818:   0xB041,\n\t819:   0xB042,\n\t820:   0xB043,\n\t821:   0xB046,\n\t822:   0xB047,\n\t823:   0xB049,\n\t824:   0xB04B,\n\t825:   0xB04D,\n\t826:   0xB04F,\n\t827:   0xB050,\n\t828:   0xB051,\n\t829:   0xB052,\n\t830:   0xB056,\n\t831:   0xB058,\n\t832:   0xB05A,\n\t833:   0xB05B,\n\t834:   0xB05C,\n\t835:   0xB05E,\n\t836:   0xB05F,\n\t837:   0xB060,\n\t838:   0xB061,\n\t839:   0xB062,\n\t840:   0xB063,\n\t841:   0xB064,\n\t842:   0xB065,\n\t843:   0xB066,\n\t844:   0xB067,\n\t845:   0xB068,\n\t846:   0xB069,\n\t847:   0xB06A,\n\t848:   0xB06B,\n\t849:   0xB06C,\n\t850:   0xB06D,\n\t851:   0xB06E,\n\t852:   0xB06F,\n\t853:   0xB070,\n\t854:   0xB071,\n\t855:   0xB072,\n\t856:   0xB073,\n\t857:   0xB074,\n\t858:   0xB075,\n\t859:   0xB076,\n\t860:   0xB077,\n\t861:   0xB078,\n\t862:   0xB079,\n\t863:   0xB07A,\n\t864:   0xB07B,\n\t865:   0xB07E,\n\t866:   0xB07F,\n\t867:   0xB081,\n\t868:   0xB082,\n\t869:   0xB083,\n\t870:   0xB085,\n\t871:   0xB086,\n\t872:   0xB087,\n\t873:   0xB088,\n\t874:   0xB089,\n\t875:   0xB08A,\n\t876:   0xB08B,\n\t877:   0xB08E,\n\t878:   0xB090,\n\t879:   0xB092,\n\t880:   0xB093,\n\t881:   0xB094,\n\t882:   0xB095,\n\t883:   0xB096,\n\t884:   0xB097,\n\t885:   0xB09B,\n\t886:   0xB09D,\n\t887:   0xB09E,\n\t888:   0xB0A3,\n\t889:   0xB0A4,\n\t890:   0xB0A5,\n\t891:   0xB0A6,\n\t892:   0xB0A7,\n\t893:   0xB0AA,\n\t894:   0xB0B0,\n\t895:   0xB0B2,\n\t896:   0xB0B6,\n\t897:   0xB0B7,\n\t898:   0xB0B9,\n\t899:   0xB0BA,\n\t900:   0xB0BB,\n\t901:   0xB0BD,\n\t902:   0xB0BE,\n\t903:   0xB0BF,\n\t904:   0xB0C0,\n\t905:   0xB0C1,\n\t906:   0xB0C2,\n\t907:   0xB0C3,\n\t908:   0xB0C6,\n\t909:   0xB0CA,\n\t910:   0xB0CB,\n\t911:   0xB0CC,\n\t912:   0xB0CD,\n\t913:   0xB0CE,\n\t914:   0xB0CF,\n\t915:   0xB0D2,\n\t916:   0xB0D3,\n\t917:   0xB0D5,\n\t918:   0xB0D6,\n\t919:   0xB0D7,\n\t920:   0xB0D9,\n\t921:   0xB0DA,\n\t922:   0xB0DB,\n\t923:   0xB0DC,\n\t924:   0xB0DD,\n\t925:   0xB0DE,\n\t926:   0xB0DF,\n\t927:   0xB0E1,\n\t928:   0xB0E2,\n\t929:   0xB0E3,\n\t930:   0xB0E4,\n\t931:   0xB0E6,\n\t932:   0xB0E7,\n\t933:   0xB0E8,\n\t934:   0xB0E9,\n\t935:   0xB0EA,\n\t936:   0xB0EB,\n\t937:   0xB0EC,\n\t938:   0xB0ED,\n\t939:   0xB0EE,\n\t940:   0xB0EF,\n\t941:   0xB0F0,\n\t942:   0xB0F1,\n\t943:   0xB0F2,\n\t944:   0xB0F3,\n\t945:   0xB0F4,\n\t946:   0xB0F5,\n\t947:   0xB0F6,\n\t948:   0xB0F7,\n\t949:   0xB0F8,\n\t950:   0xB0F9,\n\t951:   0xB0FA,\n\t952:   0xB0FB,\n\t953:   0xB0FC,\n\t954:   0xB0FD,\n\t955:   0xB0FE,\n\t956:   0xB0FF,\n\t957:   0xB100,\n\t958:   0xB101,\n\t959:   0xB102,\n\t960:   0xB103,\n\t961:   0xB104,\n\t962:   0xB105,\n\t963:   0xB106,\n\t964:   0xB107,\n\t965:   0xB10A,\n\t966:   0xB10D,\n\t967:   0xB10E,\n\t968:   0xB10F,\n\t969:   0xB111,\n\t970:   0xB114,\n\t971:   0xB115,\n\t972:   0xB116,\n\t973:   0xB117,\n\t974:   0xB11A,\n\t975:   0xB11E,\n\t976:   0xB11F,\n\t977:   0xB120,\n\t978:   0xB121,\n\t979:   0xB122,\n\t980:   0xB126,\n\t981:   0xB127,\n\t982:   0xB129,\n\t983:   0xB12A,\n\t984:   0xB12B,\n\t985:   0xB12D,\n\t986:   0xB12E,\n\t987:   0xB12F,\n\t988:   0xB130,\n\t989:   0xB131,\n\t990:   0xB132,\n\t991:   0xB133,\n\t992:   0xB136,\n\t993:   0xB13A,\n\t994:   0xB13B,\n\t995:   0xB13C,\n\t996:   0xB13D,\n\t997:   0xB13E,\n\t998:   0xB13F,\n\t999:   0xB142,\n\t1000:  0xB143,\n\t1001:  0xB145,\n\t1002:  0xB146,\n\t1003:  0xB147,\n\t1004:  0xB149,\n\t1005:  0xB14A,\n\t1006:  0xB14B,\n\t1007:  0xB14C,\n\t1008:  0xB14D,\n\t1009:  0xB14E,\n\t1010:  0xB14F,\n\t1011:  0xB152,\n\t1012:  0xB153,\n\t1013:  0xB156,\n\t1014:  0xB157,\n\t1015:  0xB159,\n\t1016:  0xB15A,\n\t1017:  0xB15B,\n\t1018:  0xB15D,\n\t1019:  0xB15E,\n\t1020:  0xB15F,\n\t1021:  0xB161,\n\t1022:  0xB162,\n\t1023:  0xB163,\n\t1024:  0xB164,\n\t1025:  0xB165,\n\t1026:  0xB166,\n\t1027:  0xB167,\n\t1028:  0xB168,\n\t1029:  0xB169,\n\t1030:  0xB16A,\n\t1031:  0xB16B,\n\t1032:  0xB16C,\n\t1033:  0xB16D,\n\t1034:  0xB16E,\n\t1035:  0xB16F,\n\t1036:  0xB170,\n\t1037:  0xB171,\n\t1038:  0xB172,\n\t1039:  0xB173,\n\t1040:  0xB174,\n\t1041:  0xB175,\n\t1042:  0xB176,\n\t1043:  0xB177,\n\t1044:  0xB17A,\n\t1045:  0xB17B,\n\t1046:  0xB17D,\n\t1047:  0xB17E,\n\t1048:  0xB17F,\n\t1049:  0xB181,\n\t1050:  0xB183,\n\t1051:  0xB184,\n\t1052:  0xB185,\n\t1053:  0xB186,\n\t1054:  0xB187,\n\t1055:  0xB18A,\n\t1056:  0xB18C,\n\t1057:  0xB18E,\n\t1058:  0xB18F,\n\t1059:  0xB190,\n\t1060:  0xB191,\n\t1061:  0xB195,\n\t1062:  0xB196,\n\t1063:  0xB197,\n\t1064:  0xB199,\n\t1065:  0xB19A,\n\t1066:  0xB19B,\n\t1067:  0xB19D,\n\t1068:  0xB19E,\n\t1069:  0xB19F,\n\t1070:  0xB1A0,\n\t1071:  0xB1A1,\n\t1072:  0xB1A2,\n\t1073:  0xB1A3,\n\t1074:  0xB1A4,\n\t1075:  0xB1A5,\n\t1076:  0xB1A6,\n\t1077:  0xB1A7,\n\t1078:  0xB1A9,\n\t1079:  0xB1AA,\n\t1080:  0xB1AB,\n\t1081:  0xB1AC,\n\t1082:  0xB1AD,\n\t1083:  0xB1AE,\n\t1084:  0xB1AF,\n\t1085:  0xB1B0,\n\t1086:  0xB1B1,\n\t1087:  0xB1B2,\n\t1088:  0xB1B3,\n\t1089:  0xB1B4,\n\t1090:  0xB1B5,\n\t1091:  0xB1B6,\n\t1092:  0xB1B7,\n\t1093:  0xB1B8,\n\t1094:  0xB1B9,\n\t1095:  0xB1BA,\n\t1096:  0xB1BB,\n\t1097:  0xB1BC,\n\t1098:  0xB1BD,\n\t1099:  0xB1BE,\n\t1100:  0xB1BF,\n\t1101:  0xB1C0,\n\t1102:  0xB1C1,\n\t1103:  0xB1C2,\n\t1104:  0xB1C3,\n\t1105:  0xB1C4,\n\t1106:  0xB1C5,\n\t1107:  0xB1C6,\n\t1108:  0xB1C7,\n\t1109:  0xB1C8,\n\t1110:  0xB1C9,\n\t1111:  0xB1CA,\n\t1112:  0xB1CB,\n\t1113:  0xB1CD,\n\t1114:  0xB1CE,\n\t1115:  0xB1CF,\n\t1116:  0xB1D1,\n\t1117:  0xB1D2,\n\t1118:  0xB1D3,\n\t1119:  0xB1D5,\n\t1120:  0xB1D6,\n\t1121:  0xB1D7,\n\t1122:  0xB1D8,\n\t1123:  0xB1D9,\n\t1124:  0xB1DA,\n\t1125:  0xB1DB,\n\t1126:  0xB1DE,\n\t1127:  0xB1E0,\n\t1128:  0xB1E1,\n\t1129:  0xB1E2,\n\t1130:  0xB1E3,\n\t1131:  0xB1E4,\n\t1132:  0xB1E5,\n\t1133:  0xB1E6,\n\t1134:  0xB1E7,\n\t1135:  0xB1EA,\n\t1136:  0xB1EB,\n\t1137:  0xB1ED,\n\t1138:  0xB1EE,\n\t1139:  0xB1EF,\n\t1140:  0xB1F1,\n\t1141:  0xB1F2,\n\t1142:  0xB1F3,\n\t1143:  0xB1F4,\n\t1144:  0xB1F5,\n\t1145:  0xB1F6,\n\t1146:  0xB1F7,\n\t1147:  0xB1F8,\n\t1148:  0xB1FA,\n\t1149:  0xB1FC,\n\t1150:  0xB1FE,\n\t1151:  0xB1FF,\n\t1152:  0xB200,\n\t1153:  0xB201,\n\t1154:  0xB202,\n\t1155:  0xB203,\n\t1156:  0xB206,\n\t1157:  0xB207,\n\t1158:  0xB209,\n\t1159:  0xB20A,\n\t1160:  0xB20D,\n\t1161:  0xB20E,\n\t1162:  0xB20F,\n\t1163:  0xB210,\n\t1164:  0xB211,\n\t1165:  0xB212,\n\t1166:  0xB213,\n\t1167:  0xB216,\n\t1168:  0xB218,\n\t1169:  0xB21A,\n\t1170:  0xB21B,\n\t1171:  0xB21C,\n\t1172:  0xB21D,\n\t1173:  0xB21E,\n\t1174:  0xB21F,\n\t1175:  0xB221,\n\t1176:  0xB222,\n\t1177:  0xB223,\n\t1178:  0xB224,\n\t1179:  0xB225,\n\t1180:  0xB226,\n\t1181:  0xB227,\n\t1182:  0xB228,\n\t1183:  0xB229,\n\t1184:  0xB22A,\n\t1185:  0xB22B,\n\t1186:  0xB22C,\n\t1187:  0xB22D,\n\t1188:  0xB22E,\n\t1189:  0xB22F,\n\t1190:  0xB230,\n\t1191:  0xB231,\n\t1192:  0xB232,\n\t1193:  0xB233,\n\t1194:  0xB235,\n\t1195:  0xB236,\n\t1196:  0xB237,\n\t1197:  0xB238,\n\t1198:  0xB239,\n\t1199:  0xB23A,\n\t1200:  0xB23B,\n\t1201:  0xB23D,\n\t1202:  0xB23E,\n\t1203:  0xB23F,\n\t1204:  0xB240,\n\t1205:  0xB241,\n\t1206:  0xB242,\n\t1207:  0xB243,\n\t1208:  0xB244,\n\t1209:  0xB245,\n\t1210:  0xB246,\n\t1211:  0xB247,\n\t1212:  0xB248,\n\t1213:  0xB249,\n\t1214:  0xB24A,\n\t1215:  0xB24B,\n\t1216:  0xB24C,\n\t1217:  0xB24D,\n\t1218:  0xB24E,\n\t1219:  0xB24F,\n\t1220:  0xB250,\n\t1221:  0xB251,\n\t1222:  0xB252,\n\t1223:  0xB253,\n\t1224:  0xB254,\n\t1225:  0xB255,\n\t1226:  0xB256,\n\t1227:  0xB257,\n\t1228:  0xB259,\n\t1229:  0xB25A,\n\t1230:  0xB25B,\n\t1231:  0xB25D,\n\t1232:  0xB25E,\n\t1233:  0xB25F,\n\t1234:  0xB261,\n\t1235:  0xB262,\n\t1236:  0xB263,\n\t1237:  0xB264,\n\t1238:  0xB265,\n\t1239:  0xB266,\n\t1240:  0xB267,\n\t1241:  0xB26A,\n\t1242:  0xB26B,\n\t1243:  0xB26C,\n\t1244:  0xB26D,\n\t1245:  0xB26E,\n\t1246:  0xB26F,\n\t1247:  0xB270,\n\t1248:  0xB271,\n\t1249:  0xB272,\n\t1250:  0xB273,\n\t1251:  0xB276,\n\t1252:  0xB277,\n\t1253:  0xB278,\n\t1254:  0xB279,\n\t1255:  0xB27A,\n\t1256:  0xB27B,\n\t1257:  0xB27D,\n\t1258:  0xB27E,\n\t1259:  0xB27F,\n\t1260:  0xB280,\n\t1261:  0xB281,\n\t1262:  0xB282,\n\t1263:  0xB283,\n\t1264:  0xB286,\n\t1265:  0xB287,\n\t1266:  0xB288,\n\t1267:  0xB28A,\n\t1268:  0xB28B,\n\t1269:  0xB28C,\n\t1270:  0xB28D,\n\t1271:  0xB28E,\n\t1272:  0xB28F,\n\t1273:  0xB292,\n\t1274:  0xB293,\n\t1275:  0xB295,\n\t1276:  0xB296,\n\t1277:  0xB297,\n\t1278:  0xB29B,\n\t1279:  0xB29C,\n\t1280:  0xB29D,\n\t1281:  0xB29E,\n\t1282:  0xB29F,\n\t1283:  0xB2A2,\n\t1284:  0xB2A4,\n\t1285:  0xB2A7,\n\t1286:  0xB2A8,\n\t1287:  0xB2A9,\n\t1288:  0xB2AB,\n\t1289:  0xB2AD,\n\t1290:  0xB2AE,\n\t1291:  0xB2AF,\n\t1292:  0xB2B1,\n\t1293:  0xB2B2,\n\t1294:  0xB2B3,\n\t1295:  0xB2B5,\n\t1296:  0xB2B6,\n\t1297:  0xB2B7,\n\t1298:  0xB2B8,\n\t1299:  0xB2B9,\n\t1300:  0xB2BA,\n\t1301:  0xB2BB,\n\t1302:  0xB2BC,\n\t1303:  0xB2BD,\n\t1304:  0xB2BE,\n\t1305:  0xB2BF,\n\t1306:  0xB2C0,\n\t1307:  0xB2C1,\n\t1308:  0xB2C2,\n\t1309:  0xB2C3,\n\t1310:  0xB2C4,\n\t1311:  0xB2C5,\n\t1312:  0xB2C6,\n\t1313:  0xB2C7,\n\t1314:  0xB2CA,\n\t1315:  0xB2CB,\n\t1316:  0xB2CD,\n\t1317:  0xB2CE,\n\t1318:  0xB2CF,\n\t1319:  0xB2D1,\n\t1320:  0xB2D3,\n\t1321:  0xB2D4,\n\t1322:  0xB2D5,\n\t1323:  0xB2D6,\n\t1324:  0xB2D7,\n\t1325:  0xB2DA,\n\t1326:  0xB2DC,\n\t1327:  0xB2DE,\n\t1328:  0xB2DF,\n\t1329:  0xB2E0,\n\t1330:  0xB2E1,\n\t1331:  0xB2E3,\n\t1332:  0xB2E7,\n\t1333:  0xB2E9,\n\t1334:  0xB2EA,\n\t1335:  0xB2F0,\n\t1336:  0xB2F1,\n\t1337:  0xB2F2,\n\t1338:  0xB2F6,\n\t1339:  0xB2FC,\n\t1340:  0xB2FD,\n\t1341:  0xB2FE,\n\t1342:  0xB302,\n\t1343:  0xB303,\n\t1344:  0xB305,\n\t1345:  0xB306,\n\t1346:  0xB307,\n\t1347:  0xB309,\n\t1348:  0xB30A,\n\t1349:  0xB30B,\n\t1350:  0xB30C,\n\t1351:  0xB30D,\n\t1352:  0xB30E,\n\t1353:  0xB30F,\n\t1354:  0xB312,\n\t1355:  0xB316,\n\t1356:  0xB317,\n\t1357:  0xB318,\n\t1358:  0xB319,\n\t1359:  0xB31A,\n\t1360:  0xB31B,\n\t1361:  0xB31D,\n\t1362:  0xB31E,\n\t1363:  0xB31F,\n\t1364:  0xB320,\n\t1365:  0xB321,\n\t1366:  0xB322,\n\t1367:  0xB323,\n\t1368:  0xB324,\n\t1369:  0xB325,\n\t1370:  0xB326,\n\t1371:  0xB327,\n\t1372:  0xB328,\n\t1373:  0xB329,\n\t1374:  0xB32A,\n\t1375:  0xB32B,\n\t1376:  0xB32C,\n\t1377:  0xB32D,\n\t1378:  0xB32E,\n\t1379:  0xB32F,\n\t1380:  0xB330,\n\t1381:  0xB331,\n\t1382:  0xB332,\n\t1383:  0xB333,\n\t1384:  0xB334,\n\t1385:  0xB335,\n\t1386:  0xB336,\n\t1387:  0xB337,\n\t1388:  0xB338,\n\t1389:  0xB339,\n\t1390:  0xB33A,\n\t1391:  0xB33B,\n\t1392:  0xB33C,\n\t1393:  0xB33D,\n\t1394:  0xB33E,\n\t1395:  0xB33F,\n\t1396:  0xB340,\n\t1397:  0xB341,\n\t1398:  0xB342,\n\t1399:  0xB343,\n\t1400:  0xB344,\n\t1401:  0xB345,\n\t1402:  0xB346,\n\t1403:  0xB347,\n\t1404:  0xB348,\n\t1405:  0xB349,\n\t1406:  0xB34A,\n\t1407:  0xB34B,\n\t1408:  0xB34C,\n\t1409:  0xB34D,\n\t1410:  0xB34E,\n\t1411:  0xB34F,\n\t1412:  0xB350,\n\t1413:  0xB351,\n\t1414:  0xB352,\n\t1415:  0xB353,\n\t1416:  0xB357,\n\t1417:  0xB359,\n\t1418:  0xB35A,\n\t1419:  0xB35D,\n\t1420:  0xB360,\n\t1421:  0xB361,\n\t1422:  0xB362,\n\t1423:  0xB363,\n\t1424:  0xB366,\n\t1425:  0xB368,\n\t1426:  0xB36A,\n\t1427:  0xB36C,\n\t1428:  0xB36D,\n\t1429:  0xB36F,\n\t1430:  0xB372,\n\t1431:  0xB373,\n\t1432:  0xB375,\n\t1433:  0xB376,\n\t1434:  0xB377,\n\t1435:  0xB379,\n\t1436:  0xB37A,\n\t1437:  0xB37B,\n\t1438:  0xB37C,\n\t1439:  0xB37D,\n\t1440:  0xB37E,\n\t1441:  0xB37F,\n\t1442:  0xB382,\n\t1443:  0xB386,\n\t1444:  0xB387,\n\t1445:  0xB388,\n\t1446:  0xB389,\n\t1447:  0xB38A,\n\t1448:  0xB38B,\n\t1449:  0xB38D,\n\t1450:  0xB38E,\n\t1451:  0xB38F,\n\t1452:  0xB391,\n\t1453:  0xB392,\n\t1454:  0xB393,\n\t1455:  0xB395,\n\t1456:  0xB396,\n\t1457:  0xB397,\n\t1458:  0xB398,\n\t1459:  0xB399,\n\t1460:  0xB39A,\n\t1461:  0xB39B,\n\t1462:  0xB39C,\n\t1463:  0xB39D,\n\t1464:  0xB39E,\n\t1465:  0xB39F,\n\t1466:  0xB3A2,\n\t1467:  0xB3A3,\n\t1468:  0xB3A4,\n\t1469:  0xB3A5,\n\t1470:  0xB3A6,\n\t1471:  0xB3A7,\n\t1472:  0xB3A9,\n\t1473:  0xB3AA,\n\t1474:  0xB3AB,\n\t1475:  0xB3AD,\n\t1476:  0xB3AE,\n\t1477:  0xB3AF,\n\t1478:  0xB3B0,\n\t1479:  0xB3B1,\n\t1480:  0xB3B2,\n\t1481:  0xB3B3,\n\t1482:  0xB3B4,\n\t1483:  0xB3B5,\n\t1484:  0xB3B6,\n\t1485:  0xB3B7,\n\t1486:  0xB3B8,\n\t1487:  0xB3B9,\n\t1488:  0xB3BA,\n\t1489:  0xB3BB,\n\t1490:  0xB3BC,\n\t1491:  0xB3BD,\n\t1492:  0xB3BE,\n\t1493:  0xB3BF,\n\t1494:  0xB3C0,\n\t1495:  0xB3C1,\n\t1496:  0xB3C2,\n\t1497:  0xB3C3,\n\t1498:  0xB3C6,\n\t1499:  0xB3C7,\n\t1500:  0xB3C9,\n\t1501:  0xB3CA,\n\t1502:  0xB3CD,\n\t1503:  0xB3CF,\n\t1504:  0xB3D1,\n\t1505:  0xB3D2,\n\t1506:  0xB3D3,\n\t1507:  0xB3D6,\n\t1508:  0xB3D8,\n\t1509:  0xB3DA,\n\t1510:  0xB3DC,\n\t1511:  0xB3DE,\n\t1512:  0xB3DF,\n\t1513:  0xB3E1,\n\t1514:  0xB3E2,\n\t1515:  0xB3E3,\n\t1516:  0xB3E5,\n\t1517:  0xB3E6,\n\t1518:  0xB3E7,\n\t1519:  0xB3E9,\n\t1520:  0xB3EA,\n\t1521:  0xB3EB,\n\t1522:  0xB3EC,\n\t1523:  0xB3ED,\n\t1524:  0xB3EE,\n\t1525:  0xB3EF,\n\t1526:  0xB3F0,\n\t1527:  0xB3F1,\n\t1528:  0xB3F2,\n\t1529:  0xB3F3,\n\t1530:  0xB3F4,\n\t1531:  0xB3F5,\n\t1532:  0xB3F6,\n\t1533:  0xB3F7,\n\t1534:  0xB3F8,\n\t1535:  0xB3F9,\n\t1536:  0xB3FA,\n\t1537:  0xB3FB,\n\t1538:  0xB3FD,\n\t1539:  0xB3FE,\n\t1540:  0xB3FF,\n\t1541:  0xB400,\n\t1542:  0xB401,\n\t1543:  0xB402,\n\t1544:  0xB403,\n\t1545:  0xB404,\n\t1546:  0xB405,\n\t1547:  0xB406,\n\t1548:  0xB407,\n\t1549:  0xB408,\n\t1550:  0xB409,\n\t1551:  0xB40A,\n\t1552:  0xB40B,\n\t1553:  0xB40C,\n\t1554:  0xB40D,\n\t1555:  0xB40E,\n\t1556:  0xB40F,\n\t1557:  0xB411,\n\t1558:  0xB412,\n\t1559:  0xB413,\n\t1560:  0xB414,\n\t1561:  0xB415,\n\t1562:  0xB416,\n\t1563:  0xB417,\n\t1564:  0xB419,\n\t1565:  0xB41A,\n\t1566:  0xB41B,\n\t1567:  0xB41D,\n\t1568:  0xB41E,\n\t1569:  0xB41F,\n\t1570:  0xB421,\n\t1571:  0xB422,\n\t1572:  0xB423,\n\t1573:  0xB424,\n\t1574:  0xB425,\n\t1575:  0xB426,\n\t1576:  0xB427,\n\t1577:  0xB42A,\n\t1578:  0xB42C,\n\t1579:  0xB42D,\n\t1580:  0xB42E,\n\t1581:  0xB42F,\n\t1582:  0xB430,\n\t1583:  0xB431,\n\t1584:  0xB432,\n\t1585:  0xB433,\n\t1586:  0xB435,\n\t1587:  0xB436,\n\t1588:  0xB437,\n\t1589:  0xB438,\n\t1590:  0xB439,\n\t1591:  0xB43A,\n\t1592:  0xB43B,\n\t1593:  0xB43C,\n\t1594:  0xB43D,\n\t1595:  0xB43E,\n\t1596:  0xB43F,\n\t1597:  0xB440,\n\t1598:  0xB441,\n\t1599:  0xB442,\n\t1600:  0xB443,\n\t1601:  0xB444,\n\t1602:  0xB445,\n\t1603:  0xB446,\n\t1604:  0xB447,\n\t1605:  0xB448,\n\t1606:  0xB449,\n\t1607:  0xB44A,\n\t1608:  0xB44B,\n\t1609:  0xB44C,\n\t1610:  0xB44D,\n\t1611:  0xB44E,\n\t1612:  0xB44F,\n\t1613:  0xB452,\n\t1614:  0xB453,\n\t1615:  0xB455,\n\t1616:  0xB456,\n\t1617:  0xB457,\n\t1618:  0xB459,\n\t1619:  0xB45A,\n\t1620:  0xB45B,\n\t1621:  0xB45C,\n\t1622:  0xB45D,\n\t1623:  0xB45E,\n\t1624:  0xB45F,\n\t1625:  0xB462,\n\t1626:  0xB464,\n\t1627:  0xB466,\n\t1628:  0xB467,\n\t1629:  0xB468,\n\t1630:  0xB469,\n\t1631:  0xB46A,\n\t1632:  0xB46B,\n\t1633:  0xB46D,\n\t1634:  0xB46E,\n\t1635:  0xB46F,\n\t1636:  0xB470,\n\t1637:  0xB471,\n\t1638:  0xB472,\n\t1639:  0xB473,\n\t1640:  0xB474,\n\t1641:  0xB475,\n\t1642:  0xB476,\n\t1643:  0xB477,\n\t1644:  0xB478,\n\t1645:  0xB479,\n\t1646:  0xB47A,\n\t1647:  0xB47B,\n\t1648:  0xB47C,\n\t1649:  0xB47D,\n\t1650:  0xB47E,\n\t1651:  0xB47F,\n\t1652:  0xB481,\n\t1653:  0xB482,\n\t1654:  0xB483,\n\t1655:  0xB484,\n\t1656:  0xB485,\n\t1657:  0xB486,\n\t1658:  0xB487,\n\t1659:  0xB489,\n\t1660:  0xB48A,\n\t1661:  0xB48B,\n\t1662:  0xB48C,\n\t1663:  0xB48D,\n\t1664:  0xB48E,\n\t1665:  0xB48F,\n\t1666:  0xB490,\n\t1667:  0xB491,\n\t1668:  0xB492,\n\t1669:  0xB493,\n\t1670:  0xB494,\n\t1671:  0xB495,\n\t1672:  0xB496,\n\t1673:  0xB497,\n\t1674:  0xB498,\n\t1675:  0xB499,\n\t1676:  0xB49A,\n\t1677:  0xB49B,\n\t1678:  0xB49C,\n\t1679:  0xB49E,\n\t1680:  0xB49F,\n\t1681:  0xB4A0,\n\t1682:  0xB4A1,\n\t1683:  0xB4A2,\n\t1684:  0xB4A3,\n\t1685:  0xB4A5,\n\t1686:  0xB4A6,\n\t1687:  0xB4A7,\n\t1688:  0xB4A9,\n\t1689:  0xB4AA,\n\t1690:  0xB4AB,\n\t1691:  0xB4AD,\n\t1692:  0xB4AE,\n\t1693:  0xB4AF,\n\t1694:  0xB4B0,\n\t1695:  0xB4B1,\n\t1696:  0xB4B2,\n\t1697:  0xB4B3,\n\t1698:  0xB4B4,\n\t1699:  0xB4B6,\n\t1700:  0xB4B8,\n\t1701:  0xB4BA,\n\t1702:  0xB4BB,\n\t1703:  0xB4BC,\n\t1704:  0xB4BD,\n\t1705:  0xB4BE,\n\t1706:  0xB4BF,\n\t1707:  0xB4C1,\n\t1708:  0xB4C2,\n\t1709:  0xB4C3,\n\t1710:  0xB4C5,\n\t1711:  0xB4C6,\n\t1712:  0xB4C7,\n\t1713:  0xB4C9,\n\t1714:  0xB4CA,\n\t1715:  0xB4CB,\n\t1716:  0xB4CC,\n\t1717:  0xB4CD,\n\t1718:  0xB4CE,\n\t1719:  0xB4CF,\n\t1720:  0xB4D1,\n\t1721:  0xB4D2,\n\t1722:  0xB4D3,\n\t1723:  0xB4D4,\n\t1724:  0xB4D6,\n\t1725:  0xB4D7,\n\t1726:  0xB4D8,\n\t1727:  0xB4D9,\n\t1728:  0xB4DA,\n\t1729:  0xB4DB,\n\t1730:  0xB4DE,\n\t1731:  0xB4DF,\n\t1732:  0xB4E1,\n\t1733:  0xB4E2,\n\t1734:  0xB4E5,\n\t1735:  0xB4E7,\n\t1736:  0xB4E8,\n\t1737:  0xB4E9,\n\t1738:  0xB4EA,\n\t1739:  0xB4EB,\n\t1740:  0xB4EE,\n\t1741:  0xB4F0,\n\t1742:  0xB4F2,\n\t1743:  0xB4F3,\n\t1744:  0xB4F4,\n\t1745:  0xB4F5,\n\t1746:  0xB4F6,\n\t1747:  0xB4F7,\n\t1748:  0xB4F9,\n\t1749:  0xB4FA,\n\t1750:  0xB4FB,\n\t1751:  0xB4FC,\n\t1752:  0xB4FD,\n\t1753:  0xB4FE,\n\t1754:  0xB4FF,\n\t1755:  0xB500,\n\t1756:  0xB501,\n\t1757:  0xB502,\n\t1758:  0xB503,\n\t1759:  0xB504,\n\t1760:  0xB505,\n\t1761:  0xB506,\n\t1762:  0xB507,\n\t1763:  0xB508,\n\t1764:  0xB509,\n\t1765:  0xB50A,\n\t1766:  0xB50B,\n\t1767:  0xB50C,\n\t1768:  0xB50D,\n\t1769:  0xB50E,\n\t1770:  0xB50F,\n\t1771:  0xB510,\n\t1772:  0xB511,\n\t1773:  0xB512,\n\t1774:  0xB513,\n\t1775:  0xB516,\n\t1776:  0xB517,\n\t1777:  0xB519,\n\t1778:  0xB51A,\n\t1779:  0xB51D,\n\t1780:  0xB51E,\n\t1781:  0xB51F,\n\t1782:  0xB520,\n\t1783:  0xB521,\n\t1784:  0xB522,\n\t1785:  0xB523,\n\t1786:  0xB526,\n\t1787:  0xB52B,\n\t1788:  0xB52C,\n\t1789:  0xB52D,\n\t1790:  0xB52E,\n\t1791:  0xB52F,\n\t1792:  0xB532,\n\t1793:  0xB533,\n\t1794:  0xB535,\n\t1795:  0xB536,\n\t1796:  0xB537,\n\t1797:  0xB539,\n\t1798:  0xB53A,\n\t1799:  0xB53B,\n\t1800:  0xB53C,\n\t1801:  0xB53D,\n\t1802:  0xB53E,\n\t1803:  0xB53F,\n\t1804:  0xB542,\n\t1805:  0xB546,\n\t1806:  0xB547,\n\t1807:  0xB548,\n\t1808:  0xB549,\n\t1809:  0xB54A,\n\t1810:  0xB54E,\n\t1811:  0xB54F,\n\t1812:  0xB551,\n\t1813:  0xB552,\n\t1814:  0xB553,\n\t1815:  0xB555,\n\t1816:  0xB556,\n\t1817:  0xB557,\n\t1818:  0xB558,\n\t1819:  0xB559,\n\t1820:  0xB55A,\n\t1821:  0xB55B,\n\t1822:  0xB55E,\n\t1823:  0xB562,\n\t1824:  0xB563,\n\t1825:  0xB564,\n\t1826:  0xB565,\n\t1827:  0xB566,\n\t1828:  0xB567,\n\t1829:  0xB568,\n\t1830:  0xB569,\n\t1831:  0xB56A,\n\t1832:  0xB56B,\n\t1833:  0xB56C,\n\t1834:  0xB56D,\n\t1835:  0xB56E,\n\t1836:  0xB56F,\n\t1837:  0xB570,\n\t1838:  0xB571,\n\t1839:  0xB572,\n\t1840:  0xB573,\n\t1841:  0xB574,\n\t1842:  0xB575,\n\t1843:  0xB576,\n\t1844:  0xB577,\n\t1845:  0xB578,\n\t1846:  0xB579,\n\t1847:  0xB57A,\n\t1848:  0xB57B,\n\t1849:  0xB57C,\n\t1850:  0xB57D,\n\t1851:  0xB57E,\n\t1852:  0xB57F,\n\t1853:  0xB580,\n\t1854:  0xB581,\n\t1855:  0xB582,\n\t1856:  0xB583,\n\t1857:  0xB584,\n\t1858:  0xB585,\n\t1859:  0xB586,\n\t1860:  0xB587,\n\t1861:  0xB588,\n\t1862:  0xB589,\n\t1863:  0xB58A,\n\t1864:  0xB58B,\n\t1865:  0xB58C,\n\t1866:  0xB58D,\n\t1867:  0xB58E,\n\t1868:  0xB58F,\n\t1869:  0xB590,\n\t1870:  0xB591,\n\t1871:  0xB592,\n\t1872:  0xB593,\n\t1873:  0xB594,\n\t1874:  0xB595,\n\t1875:  0xB596,\n\t1876:  0xB597,\n\t1877:  0xB598,\n\t1878:  0xB599,\n\t1879:  0xB59A,\n\t1880:  0xB59B,\n\t1881:  0xB59C,\n\t1882:  0xB59D,\n\t1883:  0xB59E,\n\t1884:  0xB59F,\n\t1885:  0xB5A2,\n\t1886:  0xB5A3,\n\t1887:  0xB5A5,\n\t1888:  0xB5A6,\n\t1889:  0xB5A7,\n\t1890:  0xB5A9,\n\t1891:  0xB5AC,\n\t1892:  0xB5AD,\n\t1893:  0xB5AE,\n\t1894:  0xB5AF,\n\t1895:  0xB5B2,\n\t1896:  0xB5B6,\n\t1897:  0xB5B7,\n\t1898:  0xB5B8,\n\t1899:  0xB5B9,\n\t1900:  0xB5BA,\n\t1901:  0xB5BE,\n\t1902:  0xB5BF,\n\t1903:  0xB5C1,\n\t1904:  0xB5C2,\n\t1905:  0xB5C3,\n\t1906:  0xB5C5,\n\t1907:  0xB5C6,\n\t1908:  0xB5C7,\n\t1909:  0xB5C8,\n\t1910:  0xB5C9,\n\t1911:  0xB5CA,\n\t1912:  0xB5CB,\n\t1913:  0xB5CE,\n\t1914:  0xB5D2,\n\t1915:  0xB5D3,\n\t1916:  0xB5D4,\n\t1917:  0xB5D5,\n\t1918:  0xB5D6,\n\t1919:  0xB5D7,\n\t1920:  0xB5D9,\n\t1921:  0xB5DA,\n\t1922:  0xB5DB,\n\t1923:  0xB5DC,\n\t1924:  0xB5DD,\n\t1925:  0xB5DE,\n\t1926:  0xB5DF,\n\t1927:  0xB5E0,\n\t1928:  0xB5E1,\n\t1929:  0xB5E2,\n\t1930:  0xB5E3,\n\t1931:  0xB5E4,\n\t1932:  0xB5E5,\n\t1933:  0xB5E6,\n\t1934:  0xB5E7,\n\t1935:  0xB5E8,\n\t1936:  0xB5E9,\n\t1937:  0xB5EA,\n\t1938:  0xB5EB,\n\t1939:  0xB5ED,\n\t1940:  0xB5EE,\n\t1941:  0xB5EF,\n\t1942:  0xB5F0,\n\t1943:  0xB5F1,\n\t1944:  0xB5F2,\n\t1945:  0xB5F3,\n\t1946:  0xB5F4,\n\t1947:  0xB5F5,\n\t1948:  0xB5F6,\n\t1949:  0xB5F7,\n\t1950:  0xB5F8,\n\t1951:  0xB5F9,\n\t1952:  0xB5FA,\n\t1953:  0xB5FB,\n\t1954:  0xB5FC,\n\t1955:  0xB5FD,\n\t1956:  0xB5FE,\n\t1957:  0xB5FF,\n\t1958:  0xB600,\n\t1959:  0xB601,\n\t1960:  0xB602,\n\t1961:  0xB603,\n\t1962:  0xB604,\n\t1963:  0xB605,\n\t1964:  0xB606,\n\t1965:  0xB607,\n\t1966:  0xB608,\n\t1967:  0xB609,\n\t1968:  0xB60A,\n\t1969:  0xB60B,\n\t1970:  0xB60C,\n\t1971:  0xB60D,\n\t1972:  0xB60E,\n\t1973:  0xB60F,\n\t1974:  0xB612,\n\t1975:  0xB613,\n\t1976:  0xB615,\n\t1977:  0xB616,\n\t1978:  0xB617,\n\t1979:  0xB619,\n\t1980:  0xB61A,\n\t1981:  0xB61B,\n\t1982:  0xB61C,\n\t1983:  0xB61D,\n\t1984:  0xB61E,\n\t1985:  0xB61F,\n\t1986:  0xB620,\n\t1987:  0xB621,\n\t1988:  0xB622,\n\t1989:  0xB623,\n\t1990:  0xB624,\n\t1991:  0xB626,\n\t1992:  0xB627,\n\t1993:  0xB628,\n\t1994:  0xB629,\n\t1995:  0xB62A,\n\t1996:  0xB62B,\n\t1997:  0xB62D,\n\t1998:  0xB62E,\n\t1999:  0xB62F,\n\t2000:  0xB630,\n\t2001:  0xB631,\n\t2002:  0xB632,\n\t2003:  0xB633,\n\t2004:  0xB635,\n\t2005:  0xB636,\n\t2006:  0xB637,\n\t2007:  0xB638,\n\t2008:  0xB639,\n\t2009:  0xB63A,\n\t2010:  0xB63B,\n\t2011:  0xB63C,\n\t2012:  0xB63D,\n\t2013:  0xB63E,\n\t2014:  0xB63F,\n\t2015:  0xB640,\n\t2016:  0xB641,\n\t2017:  0xB642,\n\t2018:  0xB643,\n\t2019:  0xB644,\n\t2020:  0xB645,\n\t2021:  0xB646,\n\t2022:  0xB647,\n\t2023:  0xB649,\n\t2024:  0xB64A,\n\t2025:  0xB64B,\n\t2026:  0xB64C,\n\t2027:  0xB64D,\n\t2028:  0xB64E,\n\t2029:  0xB64F,\n\t2030:  0xB650,\n\t2031:  0xB651,\n\t2032:  0xB652,\n\t2033:  0xB653,\n\t2034:  0xB654,\n\t2035:  0xB655,\n\t2036:  0xB656,\n\t2037:  0xB657,\n\t2038:  0xB658,\n\t2039:  0xB659,\n\t2040:  0xB65A,\n\t2041:  0xB65B,\n\t2042:  0xB65C,\n\t2043:  0xB65D,\n\t2044:  0xB65E,\n\t2045:  0xB65F,\n\t2046:  0xB660,\n\t2047:  0xB661,\n\t2048:  0xB662,\n\t2049:  0xB663,\n\t2050:  0xB665,\n\t2051:  0xB666,\n\t2052:  0xB667,\n\t2053:  0xB669,\n\t2054:  0xB66A,\n\t2055:  0xB66B,\n\t2056:  0xB66C,\n\t2057:  0xB66D,\n\t2058:  0xB66E,\n\t2059:  0xB66F,\n\t2060:  0xB670,\n\t2061:  0xB671,\n\t2062:  0xB672,\n\t2063:  0xB673,\n\t2064:  0xB674,\n\t2065:  0xB675,\n\t2066:  0xB676,\n\t2067:  0xB677,\n\t2068:  0xB678,\n\t2069:  0xB679,\n\t2070:  0xB67A,\n\t2071:  0xB67B,\n\t2072:  0xB67C,\n\t2073:  0xB67D,\n\t2074:  0xB67E,\n\t2075:  0xB67F,\n\t2076:  0xB680,\n\t2077:  0xB681,\n\t2078:  0xB682,\n\t2079:  0xB683,\n\t2080:  0xB684,\n\t2081:  0xB685,\n\t2082:  0xB686,\n\t2083:  0xB687,\n\t2084:  0xB688,\n\t2085:  0xB689,\n\t2086:  0xB68A,\n\t2087:  0xB68B,\n\t2088:  0xB68C,\n\t2089:  0xB68D,\n\t2090:  0xB68E,\n\t2091:  0xB68F,\n\t2092:  0xB690,\n\t2093:  0xB691,\n\t2094:  0xB692,\n\t2095:  0xB693,\n\t2096:  0xB694,\n\t2097:  0xB695,\n\t2098:  0xB696,\n\t2099:  0xB697,\n\t2100:  0xB698,\n\t2101:  0xB699,\n\t2102:  0xB69A,\n\t2103:  0xB69B,\n\t2104:  0xB69E,\n\t2105:  0xB69F,\n\t2106:  0xB6A1,\n\t2107:  0xB6A2,\n\t2108:  0xB6A3,\n\t2109:  0xB6A5,\n\t2110:  0xB6A6,\n\t2111:  0xB6A7,\n\t2112:  0xB6A8,\n\t2113:  0xB6A9,\n\t2114:  0xB6AA,\n\t2115:  0xB6AD,\n\t2116:  0xB6AE,\n\t2117:  0xB6AF,\n\t2118:  0xB6B0,\n\t2119:  0xB6B2,\n\t2120:  0xB6B3,\n\t2121:  0xB6B4,\n\t2122:  0xB6B5,\n\t2123:  0xB6B6,\n\t2124:  0xB6B7,\n\t2125:  0xB6B8,\n\t2126:  0xB6B9,\n\t2127:  0xB6BA,\n\t2128:  0xB6BB,\n\t2129:  0xB6BC,\n\t2130:  0xB6BD,\n\t2131:  0xB6BE,\n\t2132:  0xB6BF,\n\t2133:  0xB6C0,\n\t2134:  0xB6C1,\n\t2135:  0xB6C2,\n\t2136:  0xB6C3,\n\t2137:  0xB6C4,\n\t2138:  0xB6C5,\n\t2139:  0xB6C6,\n\t2140:  0xB6C7,\n\t2141:  0xB6C8,\n\t2142:  0xB6C9,\n\t2143:  0xB6CA,\n\t2144:  0xB6CB,\n\t2145:  0xB6CC,\n\t2146:  0xB6CD,\n\t2147:  0xB6CE,\n\t2148:  0xB6CF,\n\t2149:  0xB6D0,\n\t2150:  0xB6D1,\n\t2151:  0xB6D2,\n\t2152:  0xB6D3,\n\t2153:  0xB6D5,\n\t2154:  0xB6D6,\n\t2155:  0xB6D7,\n\t2156:  0xB6D8,\n\t2157:  0xB6D9,\n\t2158:  0xB6DA,\n\t2159:  0xB6DB,\n\t2160:  0xB6DC,\n\t2161:  0xB6DD,\n\t2162:  0xB6DE,\n\t2163:  0xB6DF,\n\t2164:  0xB6E0,\n\t2165:  0xB6E1,\n\t2166:  0xB6E2,\n\t2167:  0xB6E3,\n\t2168:  0xB6E4,\n\t2169:  0xB6E5,\n\t2170:  0xB6E6,\n\t2171:  0xB6E7,\n\t2172:  0xB6E8,\n\t2173:  0xB6E9,\n\t2174:  0xB6EA,\n\t2175:  0xB6EB,\n\t2176:  0xB6EC,\n\t2177:  0xB6ED,\n\t2178:  0xB6EE,\n\t2179:  0xB6EF,\n\t2180:  0xB6F1,\n\t2181:  0xB6F2,\n\t2182:  0xB6F3,\n\t2183:  0xB6F5,\n\t2184:  0xB6F6,\n\t2185:  0xB6F7,\n\t2186:  0xB6F9,\n\t2187:  0xB6FA,\n\t2188:  0xB6FB,\n\t2189:  0xB6FC,\n\t2190:  0xB6FD,\n\t2191:  0xB6FE,\n\t2192:  0xB6FF,\n\t2193:  0xB702,\n\t2194:  0xB703,\n\t2195:  0xB704,\n\t2196:  0xB706,\n\t2197:  0xB707,\n\t2198:  0xB708,\n\t2199:  0xB709,\n\t2200:  0xB70A,\n\t2201:  0xB70B,\n\t2202:  0xB70C,\n\t2203:  0xB70D,\n\t2204:  0xB70E,\n\t2205:  0xB70F,\n\t2206:  0xB710,\n\t2207:  0xB711,\n\t2208:  0xB712,\n\t2209:  0xB713,\n\t2210:  0xB714,\n\t2211:  0xB715,\n\t2212:  0xB716,\n\t2213:  0xB717,\n\t2214:  0xB718,\n\t2215:  0xB719,\n\t2216:  0xB71A,\n\t2217:  0xB71B,\n\t2218:  0xB71C,\n\t2219:  0xB71D,\n\t2220:  0xB71E,\n\t2221:  0xB71F,\n\t2222:  0xB720,\n\t2223:  0xB721,\n\t2224:  0xB722,\n\t2225:  0xB723,\n\t2226:  0xB724,\n\t2227:  0xB725,\n\t2228:  0xB726,\n\t2229:  0xB727,\n\t2230:  0xB72A,\n\t2231:  0xB72B,\n\t2232:  0xB72D,\n\t2233:  0xB72E,\n\t2234:  0xB731,\n\t2235:  0xB732,\n\t2236:  0xB733,\n\t2237:  0xB734,\n\t2238:  0xB735,\n\t2239:  0xB736,\n\t2240:  0xB737,\n\t2241:  0xB73A,\n\t2242:  0xB73C,\n\t2243:  0xB73D,\n\t2244:  0xB73E,\n\t2245:  0xB73F,\n\t2246:  0xB740,\n\t2247:  0xB741,\n\t2248:  0xB742,\n\t2249:  0xB743,\n\t2250:  0xB745,\n\t2251:  0xB746,\n\t2252:  0xB747,\n\t2253:  0xB749,\n\t2254:  0xB74A,\n\t2255:  0xB74B,\n\t2256:  0xB74D,\n\t2257:  0xB74E,\n\t2258:  0xB74F,\n\t2259:  0xB750,\n\t2260:  0xB751,\n\t2261:  0xB752,\n\t2262:  0xB753,\n\t2263:  0xB756,\n\t2264:  0xB757,\n\t2265:  0xB758,\n\t2266:  0xB759,\n\t2267:  0xB75A,\n\t2268:  0xB75B,\n\t2269:  0xB75C,\n\t2270:  0xB75D,\n\t2271:  0xB75E,\n\t2272:  0xB75F,\n\t2273:  0xB761,\n\t2274:  0xB762,\n\t2275:  0xB763,\n\t2276:  0xB765,\n\t2277:  0xB766,\n\t2278:  0xB767,\n\t2279:  0xB769,\n\t2280:  0xB76A,\n\t2281:  0xB76B,\n\t2282:  0xB76C,\n\t2283:  0xB76D,\n\t2284:  0xB76E,\n\t2285:  0xB76F,\n\t2286:  0xB772,\n\t2287:  0xB774,\n\t2288:  0xB776,\n\t2289:  0xB777,\n\t2290:  0xB778,\n\t2291:  0xB779,\n\t2292:  0xB77A,\n\t2293:  0xB77B,\n\t2294:  0xB77E,\n\t2295:  0xB77F,\n\t2296:  0xB781,\n\t2297:  0xB782,\n\t2298:  0xB783,\n\t2299:  0xB785,\n\t2300:  0xB786,\n\t2301:  0xB787,\n\t2302:  0xB788,\n\t2303:  0xB789,\n\t2304:  0xB78A,\n\t2305:  0xB78B,\n\t2306:  0xB78E,\n\t2307:  0xB793,\n\t2308:  0xB794,\n\t2309:  0xB795,\n\t2310:  0xB79A,\n\t2311:  0xB79B,\n\t2312:  0xB79D,\n\t2313:  0xB79E,\n\t2314:  0xB79F,\n\t2315:  0xB7A1,\n\t2316:  0xB7A2,\n\t2317:  0xB7A3,\n\t2318:  0xB7A4,\n\t2319:  0xB7A5,\n\t2320:  0xB7A6,\n\t2321:  0xB7A7,\n\t2322:  0xB7AA,\n\t2323:  0xB7AE,\n\t2324:  0xB7AF,\n\t2325:  0xB7B0,\n\t2326:  0xB7B1,\n\t2327:  0xB7B2,\n\t2328:  0xB7B3,\n\t2329:  0xB7B6,\n\t2330:  0xB7B7,\n\t2331:  0xB7B9,\n\t2332:  0xB7BA,\n\t2333:  0xB7BB,\n\t2334:  0xB7BC,\n\t2335:  0xB7BD,\n\t2336:  0xB7BE,\n\t2337:  0xB7BF,\n\t2338:  0xB7C0,\n\t2339:  0xB7C1,\n\t2340:  0xB7C2,\n\t2341:  0xB7C3,\n\t2342:  0xB7C4,\n\t2343:  0xB7C5,\n\t2344:  0xB7C6,\n\t2345:  0xB7C8,\n\t2346:  0xB7CA,\n\t2347:  0xB7CB,\n\t2348:  0xB7CC,\n\t2349:  0xB7CD,\n\t2350:  0xB7CE,\n\t2351:  0xB7CF,\n\t2352:  0xB7D0,\n\t2353:  0xB7D1,\n\t2354:  0xB7D2,\n\t2355:  0xB7D3,\n\t2356:  0xB7D4,\n\t2357:  0xB7D5,\n\t2358:  0xB7D6,\n\t2359:  0xB7D7,\n\t2360:  0xB7D8,\n\t2361:  0xB7D9,\n\t2362:  0xB7DA,\n\t2363:  0xB7DB,\n\t2364:  0xB7DC,\n\t2365:  0xB7DD,\n\t2366:  0xB7DE,\n\t2367:  0xB7DF,\n\t2368:  0xB7E0,\n\t2369:  0xB7E1,\n\t2370:  0xB7E2,\n\t2371:  0xB7E3,\n\t2372:  0xB7E4,\n\t2373:  0xB7E5,\n\t2374:  0xB7E6,\n\t2375:  0xB7E7,\n\t2376:  0xB7E8,\n\t2377:  0xB7E9,\n\t2378:  0xB7EA,\n\t2379:  0xB7EB,\n\t2380:  0xB7EE,\n\t2381:  0xB7EF,\n\t2382:  0xB7F1,\n\t2383:  0xB7F2,\n\t2384:  0xB7F3,\n\t2385:  0xB7F5,\n\t2386:  0xB7F6,\n\t2387:  0xB7F7,\n\t2388:  0xB7F8,\n\t2389:  0xB7F9,\n\t2390:  0xB7FA,\n\t2391:  0xB7FB,\n\t2392:  0xB7FE,\n\t2393:  0xB802,\n\t2394:  0xB803,\n\t2395:  0xB804,\n\t2396:  0xB805,\n\t2397:  0xB806,\n\t2398:  0xB80A,\n\t2399:  0xB80B,\n\t2400:  0xB80D,\n\t2401:  0xB80E,\n\t2402:  0xB80F,\n\t2403:  0xB811,\n\t2404:  0xB812,\n\t2405:  0xB813,\n\t2406:  0xB814,\n\t2407:  0xB815,\n\t2408:  0xB816,\n\t2409:  0xB817,\n\t2410:  0xB81A,\n\t2411:  0xB81C,\n\t2412:  0xB81E,\n\t2413:  0xB81F,\n\t2414:  0xB820,\n\t2415:  0xB821,\n\t2416:  0xB822,\n\t2417:  0xB823,\n\t2418:  0xB826,\n\t2419:  0xB827,\n\t2420:  0xB829,\n\t2421:  0xB82A,\n\t2422:  0xB82B,\n\t2423:  0xB82D,\n\t2424:  0xB82E,\n\t2425:  0xB82F,\n\t2426:  0xB830,\n\t2427:  0xB831,\n\t2428:  0xB832,\n\t2429:  0xB833,\n\t2430:  0xB836,\n\t2431:  0xB83A,\n\t2432:  0xB83B,\n\t2433:  0xB83C,\n\t2434:  0xB83D,\n\t2435:  0xB83E,\n\t2436:  0xB83F,\n\t2437:  0xB841,\n\t2438:  0xB842,\n\t2439:  0xB843,\n\t2440:  0xB845,\n\t2441:  0xB846,\n\t2442:  0xB847,\n\t2443:  0xB848,\n\t2444:  0xB849,\n\t2445:  0xB84A,\n\t2446:  0xB84B,\n\t2447:  0xB84C,\n\t2448:  0xB84D,\n\t2449:  0xB84E,\n\t2450:  0xB84F,\n\t2451:  0xB850,\n\t2452:  0xB852,\n\t2453:  0xB854,\n\t2454:  0xB855,\n\t2455:  0xB856,\n\t2456:  0xB857,\n\t2457:  0xB858,\n\t2458:  0xB859,\n\t2459:  0xB85A,\n\t2460:  0xB85B,\n\t2461:  0xB85E,\n\t2462:  0xB85F,\n\t2463:  0xB861,\n\t2464:  0xB862,\n\t2465:  0xB863,\n\t2466:  0xB865,\n\t2467:  0xB866,\n\t2468:  0xB867,\n\t2469:  0xB868,\n\t2470:  0xB869,\n\t2471:  0xB86A,\n\t2472:  0xB86B,\n\t2473:  0xB86E,\n\t2474:  0xB870,\n\t2475:  0xB872,\n\t2476:  0xB873,\n\t2477:  0xB874,\n\t2478:  0xB875,\n\t2479:  0xB876,\n\t2480:  0xB877,\n\t2481:  0xB879,\n\t2482:  0xB87A,\n\t2483:  0xB87B,\n\t2484:  0xB87D,\n\t2485:  0xB87E,\n\t2486:  0xB87F,\n\t2487:  0xB880,\n\t2488:  0xB881,\n\t2489:  0xB882,\n\t2490:  0xB883,\n\t2491:  0xB884,\n\t2492:  0xB885,\n\t2493:  0xB886,\n\t2494:  0xB887,\n\t2495:  0xB888,\n\t2496:  0xB889,\n\t2497:  0xB88A,\n\t2498:  0xB88B,\n\t2499:  0xB88C,\n\t2500:  0xB88E,\n\t2501:  0xB88F,\n\t2502:  0xB890,\n\t2503:  0xB891,\n\t2504:  0xB892,\n\t2505:  0xB893,\n\t2506:  0xB894,\n\t2507:  0xB895,\n\t2508:  0xB896,\n\t2509:  0xB897,\n\t2510:  0xB898,\n\t2511:  0xB899,\n\t2512:  0xB89A,\n\t2513:  0xB89B,\n\t2514:  0xB89C,\n\t2515:  0xB89D,\n\t2516:  0xB89E,\n\t2517:  0xB89F,\n\t2518:  0xB8A0,\n\t2519:  0xB8A1,\n\t2520:  0xB8A2,\n\t2521:  0xB8A3,\n\t2522:  0xB8A4,\n\t2523:  0xB8A5,\n\t2524:  0xB8A6,\n\t2525:  0xB8A7,\n\t2526:  0xB8A9,\n\t2527:  0xB8AA,\n\t2528:  0xB8AB,\n\t2529:  0xB8AC,\n\t2530:  0xB8AD,\n\t2531:  0xB8AE,\n\t2532:  0xB8AF,\n\t2533:  0xB8B1,\n\t2534:  0xB8B2,\n\t2535:  0xB8B3,\n\t2536:  0xB8B5,\n\t2537:  0xB8B6,\n\t2538:  0xB8B7,\n\t2539:  0xB8B9,\n\t2540:  0xB8BA,\n\t2541:  0xB8BB,\n\t2542:  0xB8BC,\n\t2543:  0xB8BD,\n\t2544:  0xB8BE,\n\t2545:  0xB8BF,\n\t2546:  0xB8C2,\n\t2547:  0xB8C4,\n\t2548:  0xB8C6,\n\t2549:  0xB8C7,\n\t2550:  0xB8C8,\n\t2551:  0xB8C9,\n\t2552:  0xB8CA,\n\t2553:  0xB8CB,\n\t2554:  0xB8CD,\n\t2555:  0xB8CE,\n\t2556:  0xB8CF,\n\t2557:  0xB8D1,\n\t2558:  0xB8D2,\n\t2559:  0xB8D3,\n\t2560:  0xB8D5,\n\t2561:  0xB8D6,\n\t2562:  0xB8D7,\n\t2563:  0xB8D8,\n\t2564:  0xB8D9,\n\t2565:  0xB8DA,\n\t2566:  0xB8DB,\n\t2567:  0xB8DC,\n\t2568:  0xB8DE,\n\t2569:  0xB8E0,\n\t2570:  0xB8E2,\n\t2571:  0xB8E3,\n\t2572:  0xB8E4,\n\t2573:  0xB8E5,\n\t2574:  0xB8E6,\n\t2575:  0xB8E7,\n\t2576:  0xB8EA,\n\t2577:  0xB8EB,\n\t2578:  0xB8ED,\n\t2579:  0xB8EE,\n\t2580:  0xB8EF,\n\t2581:  0xB8F1,\n\t2582:  0xB8F2,\n\t2583:  0xB8F3,\n\t2584:  0xB8F4,\n\t2585:  0xB8F5,\n\t2586:  0xB8F6,\n\t2587:  0xB8F7,\n\t2588:  0xB8FA,\n\t2589:  0xB8FC,\n\t2590:  0xB8FE,\n\t2591:  0xB8FF,\n\t2592:  0xB900,\n\t2593:  0xB901,\n\t2594:  0xB902,\n\t2595:  0xB903,\n\t2596:  0xB905,\n\t2597:  0xB906,\n\t2598:  0xB907,\n\t2599:  0xB908,\n\t2600:  0xB909,\n\t2601:  0xB90A,\n\t2602:  0xB90B,\n\t2603:  0xB90C,\n\t2604:  0xB90D,\n\t2605:  0xB90E,\n\t2606:  0xB90F,\n\t2607:  0xB910,\n\t2608:  0xB911,\n\t2609:  0xB912,\n\t2610:  0xB913,\n\t2611:  0xB914,\n\t2612:  0xB915,\n\t2613:  0xB916,\n\t2614:  0xB917,\n\t2615:  0xB919,\n\t2616:  0xB91A,\n\t2617:  0xB91B,\n\t2618:  0xB91C,\n\t2619:  0xB91D,\n\t2620:  0xB91E,\n\t2621:  0xB91F,\n\t2622:  0xB921,\n\t2623:  0xB922,\n\t2624:  0xB923,\n\t2625:  0xB924,\n\t2626:  0xB925,\n\t2627:  0xB926,\n\t2628:  0xB927,\n\t2629:  0xB928,\n\t2630:  0xB929,\n\t2631:  0xB92A,\n\t2632:  0xB92B,\n\t2633:  0xB92C,\n\t2634:  0xB92D,\n\t2635:  0xB92E,\n\t2636:  0xB92F,\n\t2637:  0xB930,\n\t2638:  0xB931,\n\t2639:  0xB932,\n\t2640:  0xB933,\n\t2641:  0xB934,\n\t2642:  0xB935,\n\t2643:  0xB936,\n\t2644:  0xB937,\n\t2645:  0xB938,\n\t2646:  0xB939,\n\t2647:  0xB93A,\n\t2648:  0xB93B,\n\t2649:  0xB93E,\n\t2650:  0xB93F,\n\t2651:  0xB941,\n\t2652:  0xB942,\n\t2653:  0xB943,\n\t2654:  0xB945,\n\t2655:  0xB946,\n\t2656:  0xB947,\n\t2657:  0xB948,\n\t2658:  0xB949,\n\t2659:  0xB94A,\n\t2660:  0xB94B,\n\t2661:  0xB94D,\n\t2662:  0xB94E,\n\t2663:  0xB950,\n\t2664:  0xB952,\n\t2665:  0xB953,\n\t2666:  0xB954,\n\t2667:  0xB955,\n\t2668:  0xB956,\n\t2669:  0xB957,\n\t2670:  0xB95A,\n\t2671:  0xB95B,\n\t2672:  0xB95D,\n\t2673:  0xB95E,\n\t2674:  0xB95F,\n\t2675:  0xB961,\n\t2676:  0xB962,\n\t2677:  0xB963,\n\t2678:  0xB964,\n\t2679:  0xB965,\n\t2680:  0xB966,\n\t2681:  0xB967,\n\t2682:  0xB96A,\n\t2683:  0xB96C,\n\t2684:  0xB96E,\n\t2685:  0xB96F,\n\t2686:  0xB970,\n\t2687:  0xB971,\n\t2688:  0xB972,\n\t2689:  0xB973,\n\t2690:  0xB976,\n\t2691:  0xB977,\n\t2692:  0xB979,\n\t2693:  0xB97A,\n\t2694:  0xB97B,\n\t2695:  0xB97D,\n\t2696:  0xB97E,\n\t2697:  0xB97F,\n\t2698:  0xB980,\n\t2699:  0xB981,\n\t2700:  0xB982,\n\t2701:  0xB983,\n\t2702:  0xB986,\n\t2703:  0xB988,\n\t2704:  0xB98B,\n\t2705:  0xB98C,\n\t2706:  0xB98F,\n\t2707:  0xB990,\n\t2708:  0xB991,\n\t2709:  0xB992,\n\t2710:  0xB993,\n\t2711:  0xB994,\n\t2712:  0xB995,\n\t2713:  0xB996,\n\t2714:  0xB997,\n\t2715:  0xB998,\n\t2716:  0xB999,\n\t2717:  0xB99A,\n\t2718:  0xB99B,\n\t2719:  0xB99C,\n\t2720:  0xB99D,\n\t2721:  0xB99E,\n\t2722:  0xB99F,\n\t2723:  0xB9A0,\n\t2724:  0xB9A1,\n\t2725:  0xB9A2,\n\t2726:  0xB9A3,\n\t2727:  0xB9A4,\n\t2728:  0xB9A5,\n\t2729:  0xB9A6,\n\t2730:  0xB9A7,\n\t2731:  0xB9A8,\n\t2732:  0xB9A9,\n\t2733:  0xB9AA,\n\t2734:  0xB9AB,\n\t2735:  0xB9AE,\n\t2736:  0xB9AF,\n\t2737:  0xB9B1,\n\t2738:  0xB9B2,\n\t2739:  0xB9B3,\n\t2740:  0xB9B5,\n\t2741:  0xB9B6,\n\t2742:  0xB9B7,\n\t2743:  0xB9B8,\n\t2744:  0xB9B9,\n\t2745:  0xB9BA,\n\t2746:  0xB9BB,\n\t2747:  0xB9BE,\n\t2748:  0xB9C0,\n\t2749:  0xB9C2,\n\t2750:  0xB9C3,\n\t2751:  0xB9C4,\n\t2752:  0xB9C5,\n\t2753:  0xB9C6,\n\t2754:  0xB9C7,\n\t2755:  0xB9CA,\n\t2756:  0xB9CB,\n\t2757:  0xB9CD,\n\t2758:  0xB9D3,\n\t2759:  0xB9D4,\n\t2760:  0xB9D5,\n\t2761:  0xB9D6,\n\t2762:  0xB9D7,\n\t2763:  0xB9DA,\n\t2764:  0xB9DC,\n\t2765:  0xB9DF,\n\t2766:  0xB9E0,\n\t2767:  0xB9E2,\n\t2768:  0xB9E6,\n\t2769:  0xB9E7,\n\t2770:  0xB9E9,\n\t2771:  0xB9EA,\n\t2772:  0xB9EB,\n\t2773:  0xB9ED,\n\t2774:  0xB9EE,\n\t2775:  0xB9EF,\n\t2776:  0xB9F0,\n\t2777:  0xB9F1,\n\t2778:  0xB9F2,\n\t2779:  0xB9F3,\n\t2780:  0xB9F6,\n\t2781:  0xB9FB,\n\t2782:  0xB9FC,\n\t2783:  0xB9FD,\n\t2784:  0xB9FE,\n\t2785:  0xB9FF,\n\t2786:  0xBA02,\n\t2787:  0xBA03,\n\t2788:  0xBA04,\n\t2789:  0xBA05,\n\t2790:  0xBA06,\n\t2791:  0xBA07,\n\t2792:  0xBA09,\n\t2793:  0xBA0A,\n\t2794:  0xBA0B,\n\t2795:  0xBA0C,\n\t2796:  0xBA0D,\n\t2797:  0xBA0E,\n\t2798:  0xBA0F,\n\t2799:  0xBA10,\n\t2800:  0xBA11,\n\t2801:  0xBA12,\n\t2802:  0xBA13,\n\t2803:  0xBA14,\n\t2804:  0xBA16,\n\t2805:  0xBA17,\n\t2806:  0xBA18,\n\t2807:  0xBA19,\n\t2808:  0xBA1A,\n\t2809:  0xBA1B,\n\t2810:  0xBA1C,\n\t2811:  0xBA1D,\n\t2812:  0xBA1E,\n\t2813:  0xBA1F,\n\t2814:  0xBA20,\n\t2815:  0xBA21,\n\t2816:  0xBA22,\n\t2817:  0xBA23,\n\t2818:  0xBA24,\n\t2819:  0xBA25,\n\t2820:  0xBA26,\n\t2821:  0xBA27,\n\t2822:  0xBA28,\n\t2823:  0xBA29,\n\t2824:  0xBA2A,\n\t2825:  0xBA2B,\n\t2826:  0xBA2C,\n\t2827:  0xBA2D,\n\t2828:  0xBA2E,\n\t2829:  0xBA2F,\n\t2830:  0xBA30,\n\t2831:  0xBA31,\n\t2832:  0xBA32,\n\t2833:  0xBA33,\n\t2834:  0xBA34,\n\t2835:  0xBA35,\n\t2836:  0xBA36,\n\t2837:  0xBA37,\n\t2838:  0xBA3A,\n\t2839:  0xBA3B,\n\t2840:  0xBA3D,\n\t2841:  0xBA3E,\n\t2842:  0xBA3F,\n\t2843:  0xBA41,\n\t2844:  0xBA43,\n\t2845:  0xBA44,\n\t2846:  0xBA45,\n\t2847:  0xBA46,\n\t2848:  0xBA47,\n\t2849:  0xBA4A,\n\t2850:  0xBA4C,\n\t2851:  0xBA4F,\n\t2852:  0xBA50,\n\t2853:  0xBA51,\n\t2854:  0xBA52,\n\t2855:  0xBA56,\n\t2856:  0xBA57,\n\t2857:  0xBA59,\n\t2858:  0xBA5A,\n\t2859:  0xBA5B,\n\t2860:  0xBA5D,\n\t2861:  0xBA5E,\n\t2862:  0xBA5F,\n\t2863:  0xBA60,\n\t2864:  0xBA61,\n\t2865:  0xBA62,\n\t2866:  0xBA63,\n\t2867:  0xBA66,\n\t2868:  0xBA6A,\n\t2869:  0xBA6B,\n\t2870:  0xBA6C,\n\t2871:  0xBA6D,\n\t2872:  0xBA6E,\n\t2873:  0xBA6F,\n\t2874:  0xBA72,\n\t2875:  0xBA73,\n\t2876:  0xBA75,\n\t2877:  0xBA76,\n\t2878:  0xBA77,\n\t2879:  0xBA79,\n\t2880:  0xBA7A,\n\t2881:  0xBA7B,\n\t2882:  0xBA7C,\n\t2883:  0xBA7D,\n\t2884:  0xBA7E,\n\t2885:  0xBA7F,\n\t2886:  0xBA80,\n\t2887:  0xBA81,\n\t2888:  0xBA82,\n\t2889:  0xBA86,\n\t2890:  0xBA88,\n\t2891:  0xBA89,\n\t2892:  0xBA8A,\n\t2893:  0xBA8B,\n\t2894:  0xBA8D,\n\t2895:  0xBA8E,\n\t2896:  0xBA8F,\n\t2897:  0xBA90,\n\t2898:  0xBA91,\n\t2899:  0xBA92,\n\t2900:  0xBA93,\n\t2901:  0xBA94,\n\t2902:  0xBA95,\n\t2903:  0xBA96,\n\t2904:  0xBA97,\n\t2905:  0xBA98,\n\t2906:  0xBA99,\n\t2907:  0xBA9A,\n\t2908:  0xBA9B,\n\t2909:  0xBA9C,\n\t2910:  0xBA9D,\n\t2911:  0xBA9E,\n\t2912:  0xBA9F,\n\t2913:  0xBAA0,\n\t2914:  0xBAA1,\n\t2915:  0xBAA2,\n\t2916:  0xBAA3,\n\t2917:  0xBAA4,\n\t2918:  0xBAA5,\n\t2919:  0xBAA6,\n\t2920:  0xBAA7,\n\t2921:  0xBAAA,\n\t2922:  0xBAAD,\n\t2923:  0xBAAE,\n\t2924:  0xBAAF,\n\t2925:  0xBAB1,\n\t2926:  0xBAB3,\n\t2927:  0xBAB4,\n\t2928:  0xBAB5,\n\t2929:  0xBAB6,\n\t2930:  0xBAB7,\n\t2931:  0xBABA,\n\t2932:  0xBABC,\n\t2933:  0xBABE,\n\t2934:  0xBABF,\n\t2935:  0xBAC0,\n\t2936:  0xBAC1,\n\t2937:  0xBAC2,\n\t2938:  0xBAC3,\n\t2939:  0xBAC5,\n\t2940:  0xBAC6,\n\t2941:  0xBAC7,\n\t2942:  0xBAC9,\n\t2943:  0xBACA,\n\t2944:  0xBACB,\n\t2945:  0xBACC,\n\t2946:  0xBACD,\n\t2947:  0xBACE,\n\t2948:  0xBACF,\n\t2949:  0xBAD0,\n\t2950:  0xBAD1,\n\t2951:  0xBAD2,\n\t2952:  0xBAD3,\n\t2953:  0xBAD4,\n\t2954:  0xBAD5,\n\t2955:  0xBAD6,\n\t2956:  0xBAD7,\n\t2957:  0xBADA,\n\t2958:  0xBADB,\n\t2959:  0xBADC,\n\t2960:  0xBADD,\n\t2961:  0xBADE,\n\t2962:  0xBADF,\n\t2963:  0xBAE0,\n\t2964:  0xBAE1,\n\t2965:  0xBAE2,\n\t2966:  0xBAE3,\n\t2967:  0xBAE4,\n\t2968:  0xBAE5,\n\t2969:  0xBAE6,\n\t2970:  0xBAE7,\n\t2971:  0xBAE8,\n\t2972:  0xBAE9,\n\t2973:  0xBAEA,\n\t2974:  0xBAEB,\n\t2975:  0xBAEC,\n\t2976:  0xBAED,\n\t2977:  0xBAEE,\n\t2978:  0xBAEF,\n\t2979:  0xBAF0,\n\t2980:  0xBAF1,\n\t2981:  0xBAF2,\n\t2982:  0xBAF3,\n\t2983:  0xBAF4,\n\t2984:  0xBAF5,\n\t2985:  0xBAF6,\n\t2986:  0xBAF7,\n\t2987:  0xBAF8,\n\t2988:  0xBAF9,\n\t2989:  0xBAFA,\n\t2990:  0xBAFB,\n\t2991:  0xBAFD,\n\t2992:  0xBAFE,\n\t2993:  0xBAFF,\n\t2994:  0xBB01,\n\t2995:  0xBB02,\n\t2996:  0xBB03,\n\t2997:  0xBB05,\n\t2998:  0xBB06,\n\t2999:  0xBB07,\n\t3000:  0xBB08,\n\t3001:  0xBB09,\n\t3002:  0xBB0A,\n\t3003:  0xBB0B,\n\t3004:  0xBB0C,\n\t3005:  0xBB0E,\n\t3006:  0xBB10,\n\t3007:  0xBB12,\n\t3008:  0xBB13,\n\t3009:  0xBB14,\n\t3010:  0xBB15,\n\t3011:  0xBB16,\n\t3012:  0xBB17,\n\t3013:  0xBB19,\n\t3014:  0xBB1A,\n\t3015:  0xBB1B,\n\t3016:  0xBB1D,\n\t3017:  0xBB1E,\n\t3018:  0xBB1F,\n\t3019:  0xBB21,\n\t3020:  0xBB22,\n\t3021:  0xBB23,\n\t3022:  0xBB24,\n\t3023:  0xBB25,\n\t3024:  0xBB26,\n\t3025:  0xBB27,\n\t3026:  0xBB28,\n\t3027:  0xBB2A,\n\t3028:  0xBB2C,\n\t3029:  0xBB2D,\n\t3030:  0xBB2E,\n\t3031:  0xBB2F,\n\t3032:  0xBB30,\n\t3033:  0xBB31,\n\t3034:  0xBB32,\n\t3035:  0xBB33,\n\t3036:  0xBB37,\n\t3037:  0xBB39,\n\t3038:  0xBB3A,\n\t3039:  0xBB3F,\n\t3040:  0xBB40,\n\t3041:  0xBB41,\n\t3042:  0xBB42,\n\t3043:  0xBB43,\n\t3044:  0xBB46,\n\t3045:  0xBB48,\n\t3046:  0xBB4A,\n\t3047:  0xBB4B,\n\t3048:  0xBB4C,\n\t3049:  0xBB4E,\n\t3050:  0xBB51,\n\t3051:  0xBB52,\n\t3052:  0xBB53,\n\t3053:  0xBB55,\n\t3054:  0xBB56,\n\t3055:  0xBB57,\n\t3056:  0xBB59,\n\t3057:  0xBB5A,\n\t3058:  0xBB5B,\n\t3059:  0xBB5C,\n\t3060:  0xBB5D,\n\t3061:  0xBB5E,\n\t3062:  0xBB5F,\n\t3063:  0xBB60,\n\t3064:  0xBB62,\n\t3065:  0xBB64,\n\t3066:  0xBB65,\n\t3067:  0xBB66,\n\t3068:  0xBB67,\n\t3069:  0xBB68,\n\t3070:  0xBB69,\n\t3071:  0xBB6A,\n\t3072:  0xBB6B,\n\t3073:  0xBB6D,\n\t3074:  0xBB6E,\n\t3075:  0xBB6F,\n\t3076:  0xBB70,\n\t3077:  0xBB71,\n\t3078:  0xBB72,\n\t3079:  0xBB73,\n\t3080:  0xBB74,\n\t3081:  0xBB75,\n\t3082:  0xBB76,\n\t3083:  0xBB77,\n\t3084:  0xBB78,\n\t3085:  0xBB79,\n\t3086:  0xBB7A,\n\t3087:  0xBB7B,\n\t3088:  0xBB7C,\n\t3089:  0xBB7D,\n\t3090:  0xBB7E,\n\t3091:  0xBB7F,\n\t3092:  0xBB80,\n\t3093:  0xBB81,\n\t3094:  0xBB82,\n\t3095:  0xBB83,\n\t3096:  0xBB84,\n\t3097:  0xBB85,\n\t3098:  0xBB86,\n\t3099:  0xBB87,\n\t3100:  0xBB89,\n\t3101:  0xBB8A,\n\t3102:  0xBB8B,\n\t3103:  0xBB8D,\n\t3104:  0xBB8E,\n\t3105:  0xBB8F,\n\t3106:  0xBB91,\n\t3107:  0xBB92,\n\t3108:  0xBB93,\n\t3109:  0xBB94,\n\t3110:  0xBB95,\n\t3111:  0xBB96,\n\t3112:  0xBB97,\n\t3113:  0xBB98,\n\t3114:  0xBB99,\n\t3115:  0xBB9A,\n\t3116:  0xBB9B,\n\t3117:  0xBB9C,\n\t3118:  0xBB9D,\n\t3119:  0xBB9E,\n\t3120:  0xBB9F,\n\t3121:  0xBBA0,\n\t3122:  0xBBA1,\n\t3123:  0xBBA2,\n\t3124:  0xBBA3,\n\t3125:  0xBBA5,\n\t3126:  0xBBA6,\n\t3127:  0xBBA7,\n\t3128:  0xBBA9,\n\t3129:  0xBBAA,\n\t3130:  0xBBAB,\n\t3131:  0xBBAD,\n\t3132:  0xBBAE,\n\t3133:  0xBBAF,\n\t3134:  0xBBB0,\n\t3135:  0xBBB1,\n\t3136:  0xBBB2,\n\t3137:  0xBBB3,\n\t3138:  0xBBB5,\n\t3139:  0xBBB6,\n\t3140:  0xBBB8,\n\t3141:  0xBBB9,\n\t3142:  0xBBBA,\n\t3143:  0xBBBB,\n\t3144:  0xBBBC,\n\t3145:  0xBBBD,\n\t3146:  0xBBBE,\n\t3147:  0xBBBF,\n\t3148:  0xBBC1,\n\t3149:  0xBBC2,\n\t3150:  0xBBC3,\n\t3151:  0xBBC5,\n\t3152:  0xBBC6,\n\t3153:  0xBBC7,\n\t3154:  0xBBC9,\n\t3155:  0xBBCA,\n\t3156:  0xBBCB,\n\t3157:  0xBBCC,\n\t3158:  0xBBCD,\n\t3159:  0xBBCE,\n\t3160:  0xBBCF,\n\t3161:  0xBBD1,\n\t3162:  0xBBD2,\n\t3163:  0xBBD4,\n\t3164:  0xBBD5,\n\t3165:  0xBBD6,\n\t3166:  0xBBD7,\n\t3167:  0xBBD8,\n\t3168:  0xBBD9,\n\t3169:  0xBBDA,\n\t3170:  0xBBDB,\n\t3171:  0xBBDC,\n\t3172:  0xBBDD,\n\t3173:  0xBBDE,\n\t3174:  0xBBDF,\n\t3175:  0xBBE0,\n\t3176:  0xBBE1,\n\t3177:  0xBBE2,\n\t3178:  0xBBE3,\n\t3179:  0xBBE4,\n\t3180:  0xBBE5,\n\t3181:  0xBBE6,\n\t3182:  0xBBE7,\n\t3183:  0xBBE8,\n\t3184:  0xBBE9,\n\t3185:  0xBBEA,\n\t3186:  0xBBEB,\n\t3187:  0xBBEC,\n\t3188:  0xBBED,\n\t3189:  0xBBEE,\n\t3190:  0xBBEF,\n\t3191:  0xBBF0,\n\t3192:  0xBBF1,\n\t3193:  0xBBF2,\n\t3194:  0xBBF3,\n\t3195:  0xBBF4,\n\t3196:  0xBBF5,\n\t3197:  0xBBF6,\n\t3198:  0xBBF7,\n\t3199:  0xBBFA,\n\t3200:  0xBBFB,\n\t3201:  0xBBFD,\n\t3202:  0xBBFE,\n\t3203:  0xBC01,\n\t3204:  0xBC03,\n\t3205:  0xBC04,\n\t3206:  0xBC05,\n\t3207:  0xBC06,\n\t3208:  0xBC07,\n\t3209:  0xBC0A,\n\t3210:  0xBC0E,\n\t3211:  0xBC10,\n\t3212:  0xBC12,\n\t3213:  0xBC13,\n\t3214:  0xBC19,\n\t3215:  0xBC1A,\n\t3216:  0xBC20,\n\t3217:  0xBC21,\n\t3218:  0xBC22,\n\t3219:  0xBC23,\n\t3220:  0xBC26,\n\t3221:  0xBC28,\n\t3222:  0xBC2A,\n\t3223:  0xBC2B,\n\t3224:  0xBC2C,\n\t3225:  0xBC2E,\n\t3226:  0xBC2F,\n\t3227:  0xBC32,\n\t3228:  0xBC33,\n\t3229:  0xBC35,\n\t3230:  0xBC36,\n\t3231:  0xBC37,\n\t3232:  0xBC39,\n\t3233:  0xBC3A,\n\t3234:  0xBC3B,\n\t3235:  0xBC3C,\n\t3236:  0xBC3D,\n\t3237:  0xBC3E,\n\t3238:  0xBC3F,\n\t3239:  0xBC42,\n\t3240:  0xBC46,\n\t3241:  0xBC47,\n\t3242:  0xBC48,\n\t3243:  0xBC4A,\n\t3244:  0xBC4B,\n\t3245:  0xBC4E,\n\t3246:  0xBC4F,\n\t3247:  0xBC51,\n\t3248:  0xBC52,\n\t3249:  0xBC53,\n\t3250:  0xBC54,\n\t3251:  0xBC55,\n\t3252:  0xBC56,\n\t3253:  0xBC57,\n\t3254:  0xBC58,\n\t3255:  0xBC59,\n\t3256:  0xBC5A,\n\t3257:  0xBC5B,\n\t3258:  0xBC5C,\n\t3259:  0xBC5E,\n\t3260:  0xBC5F,\n\t3261:  0xBC60,\n\t3262:  0xBC61,\n\t3263:  0xBC62,\n\t3264:  0xBC63,\n\t3265:  0xBC64,\n\t3266:  0xBC65,\n\t3267:  0xBC66,\n\t3268:  0xBC67,\n\t3269:  0xBC68,\n\t3270:  0xBC69,\n\t3271:  0xBC6A,\n\t3272:  0xBC6B,\n\t3273:  0xBC6C,\n\t3274:  0xBC6D,\n\t3275:  0xBC6E,\n\t3276:  0xBC6F,\n\t3277:  0xBC70,\n\t3278:  0xBC71,\n\t3279:  0xBC72,\n\t3280:  0xBC73,\n\t3281:  0xBC74,\n\t3282:  0xBC75,\n\t3283:  0xBC76,\n\t3284:  0xBC77,\n\t3285:  0xBC78,\n\t3286:  0xBC79,\n\t3287:  0xBC7A,\n\t3288:  0xBC7B,\n\t3289:  0xBC7C,\n\t3290:  0xBC7D,\n\t3291:  0xBC7E,\n\t3292:  0xBC7F,\n\t3293:  0xBC80,\n\t3294:  0xBC81,\n\t3295:  0xBC82,\n\t3296:  0xBC83,\n\t3297:  0xBC86,\n\t3298:  0xBC87,\n\t3299:  0xBC89,\n\t3300:  0xBC8A,\n\t3301:  0xBC8D,\n\t3302:  0xBC8F,\n\t3303:  0xBC90,\n\t3304:  0xBC91,\n\t3305:  0xBC92,\n\t3306:  0xBC93,\n\t3307:  0xBC96,\n\t3308:  0xBC98,\n\t3309:  0xBC9B,\n\t3310:  0xBC9C,\n\t3311:  0xBC9D,\n\t3312:  0xBC9E,\n\t3313:  0xBC9F,\n\t3314:  0xBCA2,\n\t3315:  0xBCA3,\n\t3316:  0xBCA5,\n\t3317:  0xBCA6,\n\t3318:  0xBCA9,\n\t3319:  0xBCAA,\n\t3320:  0xBCAB,\n\t3321:  0xBCAC,\n\t3322:  0xBCAD,\n\t3323:  0xBCAE,\n\t3324:  0xBCAF,\n\t3325:  0xBCB2,\n\t3326:  0xBCB6,\n\t3327:  0xBCB7,\n\t3328:  0xBCB8,\n\t3329:  0xBCB9,\n\t3330:  0xBCBA,\n\t3331:  0xBCBB,\n\t3332:  0xBCBE,\n\t3333:  0xBCBF,\n\t3334:  0xBCC1,\n\t3335:  0xBCC2,\n\t3336:  0xBCC3,\n\t3337:  0xBCC5,\n\t3338:  0xBCC6,\n\t3339:  0xBCC7,\n\t3340:  0xBCC8,\n\t3341:  0xBCC9,\n\t3342:  0xBCCA,\n\t3343:  0xBCCB,\n\t3344:  0xBCCC,\n\t3345:  0xBCCE,\n\t3346:  0xBCD2,\n\t3347:  0xBCD3,\n\t3348:  0xBCD4,\n\t3349:  0xBCD6,\n\t3350:  0xBCD7,\n\t3351:  0xBCD9,\n\t3352:  0xBCDA,\n\t3353:  0xBCDB,\n\t3354:  0xBCDD,\n\t3355:  0xBCDE,\n\t3356:  0xBCDF,\n\t3357:  0xBCE0,\n\t3358:  0xBCE1,\n\t3359:  0xBCE2,\n\t3360:  0xBCE3,\n\t3361:  0xBCE4,\n\t3362:  0xBCE5,\n\t3363:  0xBCE6,\n\t3364:  0xBCE7,\n\t3365:  0xBCE8,\n\t3366:  0xBCE9,\n\t3367:  0xBCEA,\n\t3368:  0xBCEB,\n\t3369:  0xBCEC,\n\t3370:  0xBCED,\n\t3371:  0xBCEE,\n\t3372:  0xBCEF,\n\t3373:  0xBCF0,\n\t3374:  0xBCF1,\n\t3375:  0xBCF2,\n\t3376:  0xBCF3,\n\t3377:  0xBCF7,\n\t3378:  0xBCF9,\n\t3379:  0xBCFA,\n\t3380:  0xBCFB,\n\t3381:  0xBCFD,\n\t3382:  0xBCFE,\n\t3383:  0xBCFF,\n\t3384:  0xBD00,\n\t3385:  0xBD01,\n\t3386:  0xBD02,\n\t3387:  0xBD03,\n\t3388:  0xBD06,\n\t3389:  0xBD08,\n\t3390:  0xBD0A,\n\t3391:  0xBD0B,\n\t3392:  0xBD0C,\n\t3393:  0xBD0D,\n\t3394:  0xBD0E,\n\t3395:  0xBD0F,\n\t3396:  0xBD11,\n\t3397:  0xBD12,\n\t3398:  0xBD13,\n\t3399:  0xBD15,\n\t3400:  0xBD16,\n\t3401:  0xBD17,\n\t3402:  0xBD18,\n\t3403:  0xBD19,\n\t3404:  0xBD1A,\n\t3405:  0xBD1B,\n\t3406:  0xBD1C,\n\t3407:  0xBD1D,\n\t3408:  0xBD1E,\n\t3409:  0xBD1F,\n\t3410:  0xBD20,\n\t3411:  0xBD21,\n\t3412:  0xBD22,\n\t3413:  0xBD23,\n\t3414:  0xBD25,\n\t3415:  0xBD26,\n\t3416:  0xBD27,\n\t3417:  0xBD28,\n\t3418:  0xBD29,\n\t3419:  0xBD2A,\n\t3420:  0xBD2B,\n\t3421:  0xBD2D,\n\t3422:  0xBD2E,\n\t3423:  0xBD2F,\n\t3424:  0xBD30,\n\t3425:  0xBD31,\n\t3426:  0xBD32,\n\t3427:  0xBD33,\n\t3428:  0xBD34,\n\t3429:  0xBD35,\n\t3430:  0xBD36,\n\t3431:  0xBD37,\n\t3432:  0xBD38,\n\t3433:  0xBD39,\n\t3434:  0xBD3A,\n\t3435:  0xBD3B,\n\t3436:  0xBD3C,\n\t3437:  0xBD3D,\n\t3438:  0xBD3E,\n\t3439:  0xBD3F,\n\t3440:  0xBD41,\n\t3441:  0xBD42,\n\t3442:  0xBD43,\n\t3443:  0xBD44,\n\t3444:  0xBD45,\n\t3445:  0xBD46,\n\t3446:  0xBD47,\n\t3447:  0xBD4A,\n\t3448:  0xBD4B,\n\t3449:  0xBD4D,\n\t3450:  0xBD4E,\n\t3451:  0xBD4F,\n\t3452:  0xBD51,\n\t3453:  0xBD52,\n\t3454:  0xBD53,\n\t3455:  0xBD54,\n\t3456:  0xBD55,\n\t3457:  0xBD56,\n\t3458:  0xBD57,\n\t3459:  0xBD5A,\n\t3460:  0xBD5B,\n\t3461:  0xBD5C,\n\t3462:  0xBD5D,\n\t3463:  0xBD5E,\n\t3464:  0xBD5F,\n\t3465:  0xBD60,\n\t3466:  0xBD61,\n\t3467:  0xBD62,\n\t3468:  0xBD63,\n\t3469:  0xBD65,\n\t3470:  0xBD66,\n\t3471:  0xBD67,\n\t3472:  0xBD69,\n\t3473:  0xBD6A,\n\t3474:  0xBD6B,\n\t3475:  0xBD6C,\n\t3476:  0xBD6D,\n\t3477:  0xBD6E,\n\t3478:  0xBD6F,\n\t3479:  0xBD70,\n\t3480:  0xBD71,\n\t3481:  0xBD72,\n\t3482:  0xBD73,\n\t3483:  0xBD74,\n\t3484:  0xBD75,\n\t3485:  0xBD76,\n\t3486:  0xBD77,\n\t3487:  0xBD78,\n\t3488:  0xBD79,\n\t3489:  0xBD7A,\n\t3490:  0xBD7B,\n\t3491:  0xBD7C,\n\t3492:  0xBD7D,\n\t3493:  0xBD7E,\n\t3494:  0xBD7F,\n\t3495:  0xBD82,\n\t3496:  0xBD83,\n\t3497:  0xBD85,\n\t3498:  0xBD86,\n\t3499:  0xBD8B,\n\t3500:  0xBD8C,\n\t3501:  0xBD8D,\n\t3502:  0xBD8E,\n\t3503:  0xBD8F,\n\t3504:  0xBD92,\n\t3505:  0xBD94,\n\t3506:  0xBD96,\n\t3507:  0xBD97,\n\t3508:  0xBD98,\n\t3509:  0xBD9B,\n\t3510:  0xBD9D,\n\t3511:  0xBD9E,\n\t3512:  0xBD9F,\n\t3513:  0xBDA0,\n\t3514:  0xBDA1,\n\t3515:  0xBDA2,\n\t3516:  0xBDA3,\n\t3517:  0xBDA5,\n\t3518:  0xBDA6,\n\t3519:  0xBDA7,\n\t3520:  0xBDA8,\n\t3521:  0xBDA9,\n\t3522:  0xBDAA,\n\t3523:  0xBDAB,\n\t3524:  0xBDAC,\n\t3525:  0xBDAD,\n\t3526:  0xBDAE,\n\t3527:  0xBDAF,\n\t3528:  0xBDB1,\n\t3529:  0xBDB2,\n\t3530:  0xBDB3,\n\t3531:  0xBDB4,\n\t3532:  0xBDB5,\n\t3533:  0xBDB6,\n\t3534:  0xBDB7,\n\t3535:  0xBDB9,\n\t3536:  0xBDBA,\n\t3537:  0xBDBB,\n\t3538:  0xBDBC,\n\t3539:  0xBDBD,\n\t3540:  0xBDBE,\n\t3541:  0xBDBF,\n\t3542:  0xBDC0,\n\t3543:  0xBDC1,\n\t3544:  0xBDC2,\n\t3545:  0xBDC3,\n\t3546:  0xBDC4,\n\t3547:  0xBDC5,\n\t3548:  0xBDC6,\n\t3549:  0xBDC7,\n\t3550:  0xBDC8,\n\t3551:  0xBDC9,\n\t3552:  0xBDCA,\n\t3553:  0xBDCB,\n\t3554:  0xBDCC,\n\t3555:  0xBDCD,\n\t3556:  0xBDCE,\n\t3557:  0xBDCF,\n\t3558:  0xBDD0,\n\t3559:  0xBDD1,\n\t3560:  0xBDD2,\n\t3561:  0xBDD3,\n\t3562:  0xBDD6,\n\t3563:  0xBDD7,\n\t3564:  0xBDD9,\n\t3565:  0xBDDA,\n\t3566:  0xBDDB,\n\t3567:  0xBDDD,\n\t3568:  0xBDDE,\n\t3569:  0xBDDF,\n\t3570:  0xBDE0,\n\t3571:  0xBDE1,\n\t3572:  0xBDE2,\n\t3573:  0xBDE3,\n\t3574:  0xBDE4,\n\t3575:  0xBDE5,\n\t3576:  0xBDE6,\n\t3577:  0xBDE7,\n\t3578:  0xBDE8,\n\t3579:  0xBDEA,\n\t3580:  0xBDEB,\n\t3581:  0xBDEC,\n\t3582:  0xBDED,\n\t3583:  0xBDEE,\n\t3584:  0xBDEF,\n\t3585:  0xBDF1,\n\t3586:  0xBDF2,\n\t3587:  0xBDF3,\n\t3588:  0xBDF5,\n\t3589:  0xBDF6,\n\t3590:  0xBDF7,\n\t3591:  0xBDF9,\n\t3592:  0xBDFA,\n\t3593:  0xBDFB,\n\t3594:  0xBDFC,\n\t3595:  0xBDFD,\n\t3596:  0xBDFE,\n\t3597:  0xBDFF,\n\t3598:  0xBE01,\n\t3599:  0xBE02,\n\t3600:  0xBE04,\n\t3601:  0xBE06,\n\t3602:  0xBE07,\n\t3603:  0xBE08,\n\t3604:  0xBE09,\n\t3605:  0xBE0A,\n\t3606:  0xBE0B,\n\t3607:  0xBE0E,\n\t3608:  0xBE0F,\n\t3609:  0xBE11,\n\t3610:  0xBE12,\n\t3611:  0xBE13,\n\t3612:  0xBE15,\n\t3613:  0xBE16,\n\t3614:  0xBE17,\n\t3615:  0xBE18,\n\t3616:  0xBE19,\n\t3617:  0xBE1A,\n\t3618:  0xBE1B,\n\t3619:  0xBE1E,\n\t3620:  0xBE20,\n\t3621:  0xBE21,\n\t3622:  0xBE22,\n\t3623:  0xBE23,\n\t3624:  0xBE24,\n\t3625:  0xBE25,\n\t3626:  0xBE26,\n\t3627:  0xBE27,\n\t3628:  0xBE28,\n\t3629:  0xBE29,\n\t3630:  0xBE2A,\n\t3631:  0xBE2B,\n\t3632:  0xBE2C,\n\t3633:  0xBE2D,\n\t3634:  0xBE2E,\n\t3635:  0xBE2F,\n\t3636:  0xBE30,\n\t3637:  0xBE31,\n\t3638:  0xBE32,\n\t3639:  0xBE33,\n\t3640:  0xBE34,\n\t3641:  0xBE35,\n\t3642:  0xBE36,\n\t3643:  0xBE37,\n\t3644:  0xBE38,\n\t3645:  0xBE39,\n\t3646:  0xBE3A,\n\t3647:  0xBE3B,\n\t3648:  0xBE3C,\n\t3649:  0xBE3D,\n\t3650:  0xBE3E,\n\t3651:  0xBE3F,\n\t3652:  0xBE40,\n\t3653:  0xBE41,\n\t3654:  0xBE42,\n\t3655:  0xBE43,\n\t3656:  0xBE46,\n\t3657:  0xBE47,\n\t3658:  0xBE49,\n\t3659:  0xBE4A,\n\t3660:  0xBE4B,\n\t3661:  0xBE4D,\n\t3662:  0xBE4F,\n\t3663:  0xBE50,\n\t3664:  0xBE51,\n\t3665:  0xBE52,\n\t3666:  0xBE53,\n\t3667:  0xBE56,\n\t3668:  0xBE58,\n\t3669:  0xBE5C,\n\t3670:  0xBE5D,\n\t3671:  0xBE5E,\n\t3672:  0xBE5F,\n\t3673:  0xBE62,\n\t3674:  0xBE63,\n\t3675:  0xBE65,\n\t3676:  0xBE66,\n\t3677:  0xBE67,\n\t3678:  0xBE69,\n\t3679:  0xBE6B,\n\t3680:  0xBE6C,\n\t3681:  0xBE6D,\n\t3682:  0xBE6E,\n\t3683:  0xBE6F,\n\t3684:  0xBE72,\n\t3685:  0xBE76,\n\t3686:  0xBE77,\n\t3687:  0xBE78,\n\t3688:  0xBE79,\n\t3689:  0xBE7A,\n\t3690:  0xBE7E,\n\t3691:  0xBE7F,\n\t3692:  0xBE81,\n\t3693:  0xBE82,\n\t3694:  0xBE83,\n\t3695:  0xBE85,\n\t3696:  0xBE86,\n\t3697:  0xBE87,\n\t3698:  0xBE88,\n\t3699:  0xBE89,\n\t3700:  0xBE8A,\n\t3701:  0xBE8B,\n\t3702:  0xBE8E,\n\t3703:  0xBE92,\n\t3704:  0xBE93,\n\t3705:  0xBE94,\n\t3706:  0xBE95,\n\t3707:  0xBE96,\n\t3708:  0xBE97,\n\t3709:  0xBE9A,\n\t3710:  0xBE9B,\n\t3711:  0xBE9C,\n\t3712:  0xBE9D,\n\t3713:  0xBE9E,\n\t3714:  0xBE9F,\n\t3715:  0xBEA0,\n\t3716:  0xBEA1,\n\t3717:  0xBEA2,\n\t3718:  0xBEA3,\n\t3719:  0xBEA4,\n\t3720:  0xBEA5,\n\t3721:  0xBEA6,\n\t3722:  0xBEA7,\n\t3723:  0xBEA9,\n\t3724:  0xBEAA,\n\t3725:  0xBEAB,\n\t3726:  0xBEAC,\n\t3727:  0xBEAD,\n\t3728:  0xBEAE,\n\t3729:  0xBEAF,\n\t3730:  0xBEB0,\n\t3731:  0xBEB1,\n\t3732:  0xBEB2,\n\t3733:  0xBEB3,\n\t3734:  0xBEB4,\n\t3735:  0xBEB5,\n\t3736:  0xBEB6,\n\t3737:  0xBEB7,\n\t3738:  0xBEB8,\n\t3739:  0xBEB9,\n\t3740:  0xBEBA,\n\t3741:  0xBEBB,\n\t3742:  0xBEBC,\n\t3743:  0xBEBD,\n\t3744:  0xBEBE,\n\t3745:  0xBEBF,\n\t3746:  0xBEC0,\n\t3747:  0xBEC1,\n\t3748:  0xBEC2,\n\t3749:  0xBEC3,\n\t3750:  0xBEC4,\n\t3751:  0xBEC5,\n\t3752:  0xBEC6,\n\t3753:  0xBEC7,\n\t3754:  0xBEC8,\n\t3755:  0xBEC9,\n\t3756:  0xBECA,\n\t3757:  0xBECB,\n\t3758:  0xBECC,\n\t3759:  0xBECD,\n\t3760:  0xBECE,\n\t3761:  0xBECF,\n\t3762:  0xBED2,\n\t3763:  0xBED3,\n\t3764:  0xBED5,\n\t3765:  0xBED6,\n\t3766:  0xBED9,\n\t3767:  0xBEDA,\n\t3768:  0xBEDB,\n\t3769:  0xBEDC,\n\t3770:  0xBEDD,\n\t3771:  0xBEDE,\n\t3772:  0xBEDF,\n\t3773:  0xBEE1,\n\t3774:  0xBEE2,\n\t3775:  0xBEE6,\n\t3776:  0xBEE7,\n\t3777:  0xBEE8,\n\t3778:  0xBEE9,\n\t3779:  0xBEEA,\n\t3780:  0xBEEB,\n\t3781:  0xBEED,\n\t3782:  0xBEEE,\n\t3783:  0xBEEF,\n\t3784:  0xBEF0,\n\t3785:  0xBEF1,\n\t3786:  0xBEF2,\n\t3787:  0xBEF3,\n\t3788:  0xBEF4,\n\t3789:  0xBEF5,\n\t3790:  0xBEF6,\n\t3791:  0xBEF7,\n\t3792:  0xBEF8,\n\t3793:  0xBEF9,\n\t3794:  0xBEFA,\n\t3795:  0xBEFB,\n\t3796:  0xBEFC,\n\t3797:  0xBEFD,\n\t3798:  0xBEFE,\n\t3799:  0xBEFF,\n\t3800:  0xBF00,\n\t3801:  0xBF02,\n\t3802:  0xBF03,\n\t3803:  0xBF04,\n\t3804:  0xBF05,\n\t3805:  0xBF06,\n\t3806:  0xBF07,\n\t3807:  0xBF0A,\n\t3808:  0xBF0B,\n\t3809:  0xBF0C,\n\t3810:  0xBF0D,\n\t3811:  0xBF0E,\n\t3812:  0xBF0F,\n\t3813:  0xBF10,\n\t3814:  0xBF11,\n\t3815:  0xBF12,\n\t3816:  0xBF13,\n\t3817:  0xBF14,\n\t3818:  0xBF15,\n\t3819:  0xBF16,\n\t3820:  0xBF17,\n\t3821:  0xBF1A,\n\t3822:  0xBF1E,\n\t3823:  0xBF1F,\n\t3824:  0xBF20,\n\t3825:  0xBF21,\n\t3826:  0xBF22,\n\t3827:  0xBF23,\n\t3828:  0xBF24,\n\t3829:  0xBF25,\n\t3830:  0xBF26,\n\t3831:  0xBF27,\n\t3832:  0xBF28,\n\t3833:  0xBF29,\n\t3834:  0xBF2A,\n\t3835:  0xBF2B,\n\t3836:  0xBF2C,\n\t3837:  0xBF2D,\n\t3838:  0xBF2E,\n\t3839:  0xBF2F,\n\t3840:  0xBF30,\n\t3841:  0xBF31,\n\t3842:  0xBF32,\n\t3843:  0xBF33,\n\t3844:  0xBF34,\n\t3845:  0xBF35,\n\t3846:  0xBF36,\n\t3847:  0xBF37,\n\t3848:  0xBF38,\n\t3849:  0xBF39,\n\t3850:  0xBF3A,\n\t3851:  0xBF3B,\n\t3852:  0xBF3C,\n\t3853:  0xBF3D,\n\t3854:  0xBF3E,\n\t3855:  0xBF3F,\n\t3856:  0xBF42,\n\t3857:  0xBF43,\n\t3858:  0xBF45,\n\t3859:  0xBF46,\n\t3860:  0xBF47,\n\t3861:  0xBF49,\n\t3862:  0xBF4A,\n\t3863:  0xBF4B,\n\t3864:  0xBF4C,\n\t3865:  0xBF4D,\n\t3866:  0xBF4E,\n\t3867:  0xBF4F,\n\t3868:  0xBF52,\n\t3869:  0xBF53,\n\t3870:  0xBF54,\n\t3871:  0xBF56,\n\t3872:  0xBF57,\n\t3873:  0xBF58,\n\t3874:  0xBF59,\n\t3875:  0xBF5A,\n\t3876:  0xBF5B,\n\t3877:  0xBF5C,\n\t3878:  0xBF5D,\n\t3879:  0xBF5E,\n\t3880:  0xBF5F,\n\t3881:  0xBF60,\n\t3882:  0xBF61,\n\t3883:  0xBF62,\n\t3884:  0xBF63,\n\t3885:  0xBF64,\n\t3886:  0xBF65,\n\t3887:  0xBF66,\n\t3888:  0xBF67,\n\t3889:  0xBF68,\n\t3890:  0xBF69,\n\t3891:  0xBF6A,\n\t3892:  0xBF6B,\n\t3893:  0xBF6C,\n\t3894:  0xBF6D,\n\t3895:  0xBF6E,\n\t3896:  0xBF6F,\n\t3897:  0xBF70,\n\t3898:  0xBF71,\n\t3899:  0xBF72,\n\t3900:  0xBF73,\n\t3901:  0xBF74,\n\t3902:  0xBF75,\n\t3903:  0xBF76,\n\t3904:  0xBF77,\n\t3905:  0xBF78,\n\t3906:  0xBF79,\n\t3907:  0xBF7A,\n\t3908:  0xBF7B,\n\t3909:  0xBF7C,\n\t3910:  0xBF7D,\n\t3911:  0xBF7E,\n\t3912:  0xBF7F,\n\t3913:  0xBF80,\n\t3914:  0xBF81,\n\t3915:  0xBF82,\n\t3916:  0xBF83,\n\t3917:  0xBF84,\n\t3918:  0xBF85,\n\t3919:  0xBF86,\n\t3920:  0xBF87,\n\t3921:  0xBF88,\n\t3922:  0xBF89,\n\t3923:  0xBF8A,\n\t3924:  0xBF8B,\n\t3925:  0xBF8C,\n\t3926:  0xBF8D,\n\t3927:  0xBF8E,\n\t3928:  0xBF8F,\n\t3929:  0xBF90,\n\t3930:  0xBF91,\n\t3931:  0xBF92,\n\t3932:  0xBF93,\n\t3933:  0xBF95,\n\t3934:  0xBF96,\n\t3935:  0xBF97,\n\t3936:  0xBF98,\n\t3937:  0xBF99,\n\t3938:  0xBF9A,\n\t3939:  0xBF9B,\n\t3940:  0xBF9C,\n\t3941:  0xBF9D,\n\t3942:  0xBF9E,\n\t3943:  0xBF9F,\n\t3944:  0xBFA0,\n\t3945:  0xBFA1,\n\t3946:  0xBFA2,\n\t3947:  0xBFA3,\n\t3948:  0xBFA4,\n\t3949:  0xBFA5,\n\t3950:  0xBFA6,\n\t3951:  0xBFA7,\n\t3952:  0xBFA8,\n\t3953:  0xBFA9,\n\t3954:  0xBFAA,\n\t3955:  0xBFAB,\n\t3956:  0xBFAC,\n\t3957:  0xBFAD,\n\t3958:  0xBFAE,\n\t3959:  0xBFAF,\n\t3960:  0xBFB1,\n\t3961:  0xBFB2,\n\t3962:  0xBFB3,\n\t3963:  0xBFB4,\n\t3964:  0xBFB5,\n\t3965:  0xBFB6,\n\t3966:  0xBFB7,\n\t3967:  0xBFB8,\n\t3968:  0xBFB9,\n\t3969:  0xBFBA,\n\t3970:  0xBFBB,\n\t3971:  0xBFBC,\n\t3972:  0xBFBD,\n\t3973:  0xBFBE,\n\t3974:  0xBFBF,\n\t3975:  0xBFC0,\n\t3976:  0xBFC1,\n\t3977:  0xBFC2,\n\t3978:  0xBFC3,\n\t3979:  0xBFC4,\n\t3980:  0xBFC6,\n\t3981:  0xBFC7,\n\t3982:  0xBFC8,\n\t3983:  0xBFC9,\n\t3984:  0xBFCA,\n\t3985:  0xBFCB,\n\t3986:  0xBFCE,\n\t3987:  0xBFCF,\n\t3988:  0xBFD1,\n\t3989:  0xBFD2,\n\t3990:  0xBFD3,\n\t3991:  0xBFD5,\n\t3992:  0xBFD6,\n\t3993:  0xBFD7,\n\t3994:  0xBFD8,\n\t3995:  0xBFD9,\n\t3996:  0xBFDA,\n\t3997:  0xBFDB,\n\t3998:  0xBFDD,\n\t3999:  0xBFDE,\n\t4000:  0xBFE0,\n\t4001:  0xBFE2,\n\t4002:  0xBFE3,\n\t4003:  0xBFE4,\n\t4004:  0xBFE5,\n\t4005:  0xBFE6,\n\t4006:  0xBFE7,\n\t4007:  0xBFE8,\n\t4008:  0xBFE9,\n\t4009:  0xBFEA,\n\t4010:  0xBFEB,\n\t4011:  0xBFEC,\n\t4012:  0xBFED,\n\t4013:  0xBFEE,\n\t4014:  0xBFEF,\n\t4015:  0xBFF0,\n\t4016:  0xBFF1,\n\t4017:  0xBFF2,\n\t4018:  0xBFF3,\n\t4019:  0xBFF4,\n\t4020:  0xBFF5,\n\t4021:  0xBFF6,\n\t4022:  0xBFF7,\n\t4023:  0xBFF8,\n\t4024:  0xBFF9,\n\t4025:  0xBFFA,\n\t4026:  0xBFFB,\n\t4027:  0xBFFC,\n\t4028:  0xBFFD,\n\t4029:  0xBFFE,\n\t4030:  0xBFFF,\n\t4031:  0xC000,\n\t4032:  0xC001,\n\t4033:  0xC002,\n\t4034:  0xC003,\n\t4035:  0xC004,\n\t4036:  0xC005,\n\t4037:  0xC006,\n\t4038:  0xC007,\n\t4039:  0xC008,\n\t4040:  0xC009,\n\t4041:  0xC00A,\n\t4042:  0xC00B,\n\t4043:  0xC00C,\n\t4044:  0xC00D,\n\t4045:  0xC00E,\n\t4046:  0xC00F,\n\t4047:  0xC010,\n\t4048:  0xC011,\n\t4049:  0xC012,\n\t4050:  0xC013,\n\t4051:  0xC014,\n\t4052:  0xC015,\n\t4053:  0xC016,\n\t4054:  0xC017,\n\t4055:  0xC018,\n\t4056:  0xC019,\n\t4057:  0xC01A,\n\t4058:  0xC01B,\n\t4059:  0xC01C,\n\t4060:  0xC01D,\n\t4061:  0xC01E,\n\t4062:  0xC01F,\n\t4063:  0xC020,\n\t4064:  0xC021,\n\t4065:  0xC022,\n\t4066:  0xC023,\n\t4067:  0xC024,\n\t4068:  0xC025,\n\t4069:  0xC026,\n\t4070:  0xC027,\n\t4071:  0xC028,\n\t4072:  0xC029,\n\t4073:  0xC02A,\n\t4074:  0xC02B,\n\t4075:  0xC02C,\n\t4076:  0xC02D,\n\t4077:  0xC02E,\n\t4078:  0xC02F,\n\t4079:  0xC030,\n\t4080:  0xC031,\n\t4081:  0xC032,\n\t4082:  0xC033,\n\t4083:  0xC034,\n\t4084:  0xC035,\n\t4085:  0xC036,\n\t4086:  0xC037,\n\t4087:  0xC038,\n\t4088:  0xC039,\n\t4089:  0xC03A,\n\t4090:  0xC03B,\n\t4091:  0xC03D,\n\t4092:  0xC03E,\n\t4093:  0xC03F,\n\t4094:  0xC040,\n\t4095:  0xC041,\n\t4096:  0xC042,\n\t4097:  0xC043,\n\t4098:  0xC044,\n\t4099:  0xC045,\n\t4100:  0xC046,\n\t4101:  0xC047,\n\t4102:  0xC048,\n\t4103:  0xC049,\n\t4104:  0xC04A,\n\t4105:  0xC04B,\n\t4106:  0xC04C,\n\t4107:  0xC04D,\n\t4108:  0xC04E,\n\t4109:  0xC04F,\n\t4110:  0xC050,\n\t4111:  0xC052,\n\t4112:  0xC053,\n\t4113:  0xC054,\n\t4114:  0xC055,\n\t4115:  0xC056,\n\t4116:  0xC057,\n\t4117:  0xC059,\n\t4118:  0xC05A,\n\t4119:  0xC05B,\n\t4120:  0xC05D,\n\t4121:  0xC05E,\n\t4122:  0xC05F,\n\t4123:  0xC061,\n\t4124:  0xC062,\n\t4125:  0xC063,\n\t4126:  0xC064,\n\t4127:  0xC065,\n\t4128:  0xC066,\n\t4129:  0xC067,\n\t4130:  0xC06A,\n\t4131:  0xC06B,\n\t4132:  0xC06C,\n\t4133:  0xC06D,\n\t4134:  0xC06E,\n\t4135:  0xC06F,\n\t4136:  0xC070,\n\t4137:  0xC071,\n\t4138:  0xC072,\n\t4139:  0xC073,\n\t4140:  0xC074,\n\t4141:  0xC075,\n\t4142:  0xC076,\n\t4143:  0xC077,\n\t4144:  0xC078,\n\t4145:  0xC079,\n\t4146:  0xC07A,\n\t4147:  0xC07B,\n\t4148:  0xC07C,\n\t4149:  0xC07D,\n\t4150:  0xC07E,\n\t4151:  0xC07F,\n\t4152:  0xC080,\n\t4153:  0xC081,\n\t4154:  0xC082,\n\t4155:  0xC083,\n\t4156:  0xC084,\n\t4157:  0xC085,\n\t4158:  0xC086,\n\t4159:  0xC087,\n\t4160:  0xC088,\n\t4161:  0xC089,\n\t4162:  0xC08A,\n\t4163:  0xC08B,\n\t4164:  0xC08C,\n\t4165:  0xC08D,\n\t4166:  0xC08E,\n\t4167:  0xC08F,\n\t4168:  0xC092,\n\t4169:  0xC093,\n\t4170:  0xC095,\n\t4171:  0xC096,\n\t4172:  0xC097,\n\t4173:  0xC099,\n\t4174:  0xC09A,\n\t4175:  0xC09B,\n\t4176:  0xC09C,\n\t4177:  0xC09D,\n\t4178:  0xC09E,\n\t4179:  0xC09F,\n\t4180:  0xC0A2,\n\t4181:  0xC0A4,\n\t4182:  0xC0A6,\n\t4183:  0xC0A7,\n\t4184:  0xC0A8,\n\t4185:  0xC0A9,\n\t4186:  0xC0AA,\n\t4187:  0xC0AB,\n\t4188:  0xC0AE,\n\t4189:  0xC0B1,\n\t4190:  0xC0B2,\n\t4191:  0xC0B7,\n\t4192:  0xC0B8,\n\t4193:  0xC0B9,\n\t4194:  0xC0BA,\n\t4195:  0xC0BB,\n\t4196:  0xC0BE,\n\t4197:  0xC0C2,\n\t4198:  0xC0C3,\n\t4199:  0xC0C4,\n\t4200:  0xC0C6,\n\t4201:  0xC0C7,\n\t4202:  0xC0CA,\n\t4203:  0xC0CB,\n\t4204:  0xC0CD,\n\t4205:  0xC0CE,\n\t4206:  0xC0CF,\n\t4207:  0xC0D1,\n\t4208:  0xC0D2,\n\t4209:  0xC0D3,\n\t4210:  0xC0D4,\n\t4211:  0xC0D5,\n\t4212:  0xC0D6,\n\t4213:  0xC0D7,\n\t4214:  0xC0DA,\n\t4215:  0xC0DE,\n\t4216:  0xC0DF,\n\t4217:  0xC0E0,\n\t4218:  0xC0E1,\n\t4219:  0xC0E2,\n\t4220:  0xC0E3,\n\t4221:  0xC0E6,\n\t4222:  0xC0E7,\n\t4223:  0xC0E9,\n\t4224:  0xC0EA,\n\t4225:  0xC0EB,\n\t4226:  0xC0ED,\n\t4227:  0xC0EE,\n\t4228:  0xC0EF,\n\t4229:  0xC0F0,\n\t4230:  0xC0F1,\n\t4231:  0xC0F2,\n\t4232:  0xC0F3,\n\t4233:  0xC0F6,\n\t4234:  0xC0F8,\n\t4235:  0xC0FA,\n\t4236:  0xC0FB,\n\t4237:  0xC0FC,\n\t4238:  0xC0FD,\n\t4239:  0xC0FE,\n\t4240:  0xC0FF,\n\t4241:  0xC101,\n\t4242:  0xC102,\n\t4243:  0xC103,\n\t4244:  0xC105,\n\t4245:  0xC106,\n\t4246:  0xC107,\n\t4247:  0xC109,\n\t4248:  0xC10A,\n\t4249:  0xC10B,\n\t4250:  0xC10C,\n\t4251:  0xC10D,\n\t4252:  0xC10E,\n\t4253:  0xC10F,\n\t4254:  0xC111,\n\t4255:  0xC112,\n\t4256:  0xC113,\n\t4257:  0xC114,\n\t4258:  0xC116,\n\t4259:  0xC117,\n\t4260:  0xC118,\n\t4261:  0xC119,\n\t4262:  0xC11A,\n\t4263:  0xC11B,\n\t4264:  0xC121,\n\t4265:  0xC122,\n\t4266:  0xC125,\n\t4267:  0xC128,\n\t4268:  0xC129,\n\t4269:  0xC12A,\n\t4270:  0xC12B,\n\t4271:  0xC12E,\n\t4272:  0xC132,\n\t4273:  0xC133,\n\t4274:  0xC134,\n\t4275:  0xC135,\n\t4276:  0xC137,\n\t4277:  0xC13A,\n\t4278:  0xC13B,\n\t4279:  0xC13D,\n\t4280:  0xC13E,\n\t4281:  0xC13F,\n\t4282:  0xC141,\n\t4283:  0xC142,\n\t4284:  0xC143,\n\t4285:  0xC144,\n\t4286:  0xC145,\n\t4287:  0xC146,\n\t4288:  0xC147,\n\t4289:  0xC14A,\n\t4290:  0xC14E,\n\t4291:  0xC14F,\n\t4292:  0xC150,\n\t4293:  0xC151,\n\t4294:  0xC152,\n\t4295:  0xC153,\n\t4296:  0xC156,\n\t4297:  0xC157,\n\t4298:  0xC159,\n\t4299:  0xC15A,\n\t4300:  0xC15B,\n\t4301:  0xC15D,\n\t4302:  0xC15E,\n\t4303:  0xC15F,\n\t4304:  0xC160,\n\t4305:  0xC161,\n\t4306:  0xC162,\n\t4307:  0xC163,\n\t4308:  0xC166,\n\t4309:  0xC16A,\n\t4310:  0xC16B,\n\t4311:  0xC16C,\n\t4312:  0xC16D,\n\t4313:  0xC16E,\n\t4314:  0xC16F,\n\t4315:  0xC171,\n\t4316:  0xC172,\n\t4317:  0xC173,\n\t4318:  0xC175,\n\t4319:  0xC176,\n\t4320:  0xC177,\n\t4321:  0xC179,\n\t4322:  0xC17A,\n\t4323:  0xC17B,\n\t4324:  0xC17C,\n\t4325:  0xC17D,\n\t4326:  0xC17E,\n\t4327:  0xC17F,\n\t4328:  0xC180,\n\t4329:  0xC181,\n\t4330:  0xC182,\n\t4331:  0xC183,\n\t4332:  0xC184,\n\t4333:  0xC186,\n\t4334:  0xC187,\n\t4335:  0xC188,\n\t4336:  0xC189,\n\t4337:  0xC18A,\n\t4338:  0xC18B,\n\t4339:  0xC18F,\n\t4340:  0xC191,\n\t4341:  0xC192,\n\t4342:  0xC193,\n\t4343:  0xC195,\n\t4344:  0xC197,\n\t4345:  0xC198,\n\t4346:  0xC199,\n\t4347:  0xC19A,\n\t4348:  0xC19B,\n\t4349:  0xC19E,\n\t4350:  0xC1A0,\n\t4351:  0xC1A2,\n\t4352:  0xC1A3,\n\t4353:  0xC1A4,\n\t4354:  0xC1A6,\n\t4355:  0xC1A7,\n\t4356:  0xC1AA,\n\t4357:  0xC1AB,\n\t4358:  0xC1AD,\n\t4359:  0xC1AE,\n\t4360:  0xC1AF,\n\t4361:  0xC1B1,\n\t4362:  0xC1B2,\n\t4363:  0xC1B3,\n\t4364:  0xC1B4,\n\t4365:  0xC1B5,\n\t4366:  0xC1B6,\n\t4367:  0xC1B7,\n\t4368:  0xC1B8,\n\t4369:  0xC1B9,\n\t4370:  0xC1BA,\n\t4371:  0xC1BB,\n\t4372:  0xC1BC,\n\t4373:  0xC1BE,\n\t4374:  0xC1BF,\n\t4375:  0xC1C0,\n\t4376:  0xC1C1,\n\t4377:  0xC1C2,\n\t4378:  0xC1C3,\n\t4379:  0xC1C5,\n\t4380:  0xC1C6,\n\t4381:  0xC1C7,\n\t4382:  0xC1C9,\n\t4383:  0xC1CA,\n\t4384:  0xC1CB,\n\t4385:  0xC1CD,\n\t4386:  0xC1CE,\n\t4387:  0xC1CF,\n\t4388:  0xC1D0,\n\t4389:  0xC1D1,\n\t4390:  0xC1D2,\n\t4391:  0xC1D3,\n\t4392:  0xC1D5,\n\t4393:  0xC1D6,\n\t4394:  0xC1D9,\n\t4395:  0xC1DA,\n\t4396:  0xC1DB,\n\t4397:  0xC1DC,\n\t4398:  0xC1DD,\n\t4399:  0xC1DE,\n\t4400:  0xC1DF,\n\t4401:  0xC1E1,\n\t4402:  0xC1E2,\n\t4403:  0xC1E3,\n\t4404:  0xC1E5,\n\t4405:  0xC1E6,\n\t4406:  0xC1E7,\n\t4407:  0xC1E9,\n\t4408:  0xC1EA,\n\t4409:  0xC1EB,\n\t4410:  0xC1EC,\n\t4411:  0xC1ED,\n\t4412:  0xC1EE,\n\t4413:  0xC1EF,\n\t4414:  0xC1F2,\n\t4415:  0xC1F4,\n\t4416:  0xC1F5,\n\t4417:  0xC1F6,\n\t4418:  0xC1F7,\n\t4419:  0xC1F8,\n\t4420:  0xC1F9,\n\t4421:  0xC1FA,\n\t4422:  0xC1FB,\n\t4423:  0xC1FE,\n\t4424:  0xC1FF,\n\t4425:  0xC201,\n\t4426:  0xC202,\n\t4427:  0xC203,\n\t4428:  0xC205,\n\t4429:  0xC206,\n\t4430:  0xC207,\n\t4431:  0xC208,\n\t4432:  0xC209,\n\t4433:  0xC20A,\n\t4434:  0xC20B,\n\t4435:  0xC20E,\n\t4436:  0xC210,\n\t4437:  0xC212,\n\t4438:  0xC213,\n\t4439:  0xC214,\n\t4440:  0xC215,\n\t4441:  0xC216,\n\t4442:  0xC217,\n\t4443:  0xC21A,\n\t4444:  0xC21B,\n\t4445:  0xC21D,\n\t4446:  0xC21E,\n\t4447:  0xC221,\n\t4448:  0xC222,\n\t4449:  0xC223,\n\t4450:  0xC224,\n\t4451:  0xC225,\n\t4452:  0xC226,\n\t4453:  0xC227,\n\t4454:  0xC22A,\n\t4455:  0xC22C,\n\t4456:  0xC22E,\n\t4457:  0xC230,\n\t4458:  0xC233,\n\t4459:  0xC235,\n\t4460:  0xC236,\n\t4461:  0xC237,\n\t4462:  0xC238,\n\t4463:  0xC239,\n\t4464:  0xC23A,\n\t4465:  0xC23B,\n\t4466:  0xC23C,\n\t4467:  0xC23D,\n\t4468:  0xC23E,\n\t4469:  0xC23F,\n\t4470:  0xC240,\n\t4471:  0xC241,\n\t4472:  0xC242,\n\t4473:  0xC243,\n\t4474:  0xC244,\n\t4475:  0xC245,\n\t4476:  0xC246,\n\t4477:  0xC247,\n\t4478:  0xC249,\n\t4479:  0xC24A,\n\t4480:  0xC24B,\n\t4481:  0xC24C,\n\t4482:  0xC24D,\n\t4483:  0xC24E,\n\t4484:  0xC24F,\n\t4485:  0xC252,\n\t4486:  0xC253,\n\t4487:  0xC255,\n\t4488:  0xC256,\n\t4489:  0xC257,\n\t4490:  0xC259,\n\t4491:  0xC25A,\n\t4492:  0xC25B,\n\t4493:  0xC25C,\n\t4494:  0xC25D,\n\t4495:  0xC25E,\n\t4496:  0xC25F,\n\t4497:  0xC261,\n\t4498:  0xC262,\n\t4499:  0xC263,\n\t4500:  0xC264,\n\t4501:  0xC266,\n\t4502:  0xC267,\n\t4503:  0xC268,\n\t4504:  0xC269,\n\t4505:  0xC26A,\n\t4506:  0xC26B,\n\t4507:  0xC26E,\n\t4508:  0xC26F,\n\t4509:  0xC271,\n\t4510:  0xC272,\n\t4511:  0xC273,\n\t4512:  0xC275,\n\t4513:  0xC276,\n\t4514:  0xC277,\n\t4515:  0xC278,\n\t4516:  0xC279,\n\t4517:  0xC27A,\n\t4518:  0xC27B,\n\t4519:  0xC27E,\n\t4520:  0xC280,\n\t4521:  0xC282,\n\t4522:  0xC283,\n\t4523:  0xC284,\n\t4524:  0xC285,\n\t4525:  0xC286,\n\t4526:  0xC287,\n\t4527:  0xC28A,\n\t4528:  0xC28B,\n\t4529:  0xC28C,\n\t4530:  0xC28D,\n\t4531:  0xC28E,\n\t4532:  0xC28F,\n\t4533:  0xC291,\n\t4534:  0xC292,\n\t4535:  0xC293,\n\t4536:  0xC294,\n\t4537:  0xC295,\n\t4538:  0xC296,\n\t4539:  0xC297,\n\t4540:  0xC299,\n\t4541:  0xC29A,\n\t4542:  0xC29C,\n\t4543:  0xC29E,\n\t4544:  0xC29F,\n\t4545:  0xC2A0,\n\t4546:  0xC2A1,\n\t4547:  0xC2A2,\n\t4548:  0xC2A3,\n\t4549:  0xC2A6,\n\t4550:  0xC2A7,\n\t4551:  0xC2A9,\n\t4552:  0xC2AA,\n\t4553:  0xC2AB,\n\t4554:  0xC2AE,\n\t4555:  0xC2AF,\n\t4556:  0xC2B0,\n\t4557:  0xC2B1,\n\t4558:  0xC2B2,\n\t4559:  0xC2B3,\n\t4560:  0xC2B6,\n\t4561:  0xC2B8,\n\t4562:  0xC2BA,\n\t4563:  0xC2BB,\n\t4564:  0xC2BC,\n\t4565:  0xC2BD,\n\t4566:  0xC2BE,\n\t4567:  0xC2BF,\n\t4568:  0xC2C0,\n\t4569:  0xC2C1,\n\t4570:  0xC2C2,\n\t4571:  0xC2C3,\n\t4572:  0xC2C4,\n\t4573:  0xC2C5,\n\t4574:  0xC2C6,\n\t4575:  0xC2C7,\n\t4576:  0xC2C8,\n\t4577:  0xC2C9,\n\t4578:  0xC2CA,\n\t4579:  0xC2CB,\n\t4580:  0xC2CC,\n\t4581:  0xC2CD,\n\t4582:  0xC2CE,\n\t4583:  0xC2CF,\n\t4584:  0xC2D0,\n\t4585:  0xC2D1,\n\t4586:  0xC2D2,\n\t4587:  0xC2D3,\n\t4588:  0xC2D4,\n\t4589:  0xC2D5,\n\t4590:  0xC2D6,\n\t4591:  0xC2D7,\n\t4592:  0xC2D8,\n\t4593:  0xC2D9,\n\t4594:  0xC2DA,\n\t4595:  0xC2DB,\n\t4596:  0xC2DE,\n\t4597:  0xC2DF,\n\t4598:  0xC2E1,\n\t4599:  0xC2E2,\n\t4600:  0xC2E5,\n\t4601:  0xC2E6,\n\t4602:  0xC2E7,\n\t4603:  0xC2E8,\n\t4604:  0xC2E9,\n\t4605:  0xC2EA,\n\t4606:  0xC2EE,\n\t4607:  0xC2F0,\n\t4608:  0xC2F2,\n\t4609:  0xC2F3,\n\t4610:  0xC2F4,\n\t4611:  0xC2F5,\n\t4612:  0xC2F7,\n\t4613:  0xC2FA,\n\t4614:  0xC2FD,\n\t4615:  0xC2FE,\n\t4616:  0xC2FF,\n\t4617:  0xC301,\n\t4618:  0xC302,\n\t4619:  0xC303,\n\t4620:  0xC304,\n\t4621:  0xC305,\n\t4622:  0xC306,\n\t4623:  0xC307,\n\t4624:  0xC30A,\n\t4625:  0xC30B,\n\t4626:  0xC30E,\n\t4627:  0xC30F,\n\t4628:  0xC310,\n\t4629:  0xC311,\n\t4630:  0xC312,\n\t4631:  0xC316,\n\t4632:  0xC317,\n\t4633:  0xC319,\n\t4634:  0xC31A,\n\t4635:  0xC31B,\n\t4636:  0xC31D,\n\t4637:  0xC31E,\n\t4638:  0xC31F,\n\t4639:  0xC320,\n\t4640:  0xC321,\n\t4641:  0xC322,\n\t4642:  0xC323,\n\t4643:  0xC326,\n\t4644:  0xC327,\n\t4645:  0xC32A,\n\t4646:  0xC32B,\n\t4647:  0xC32C,\n\t4648:  0xC32D,\n\t4649:  0xC32E,\n\t4650:  0xC32F,\n\t4651:  0xC330,\n\t4652:  0xC331,\n\t4653:  0xC332,\n\t4654:  0xC333,\n\t4655:  0xC334,\n\t4656:  0xC335,\n\t4657:  0xC336,\n\t4658:  0xC337,\n\t4659:  0xC338,\n\t4660:  0xC339,\n\t4661:  0xC33A,\n\t4662:  0xC33B,\n\t4663:  0xC33C,\n\t4664:  0xC33D,\n\t4665:  0xC33E,\n\t4666:  0xC33F,\n\t4667:  0xC340,\n\t4668:  0xC341,\n\t4669:  0xC342,\n\t4670:  0xC343,\n\t4671:  0xC344,\n\t4672:  0xC346,\n\t4673:  0xC347,\n\t4674:  0xC348,\n\t4675:  0xC349,\n\t4676:  0xC34A,\n\t4677:  0xC34B,\n\t4678:  0xC34C,\n\t4679:  0xC34D,\n\t4680:  0xC34E,\n\t4681:  0xC34F,\n\t4682:  0xC350,\n\t4683:  0xC351,\n\t4684:  0xC352,\n\t4685:  0xC353,\n\t4686:  0xC354,\n\t4687:  0xC355,\n\t4688:  0xC356,\n\t4689:  0xC357,\n\t4690:  0xC358,\n\t4691:  0xC359,\n\t4692:  0xC35A,\n\t4693:  0xC35B,\n\t4694:  0xC35C,\n\t4695:  0xC35D,\n\t4696:  0xC35E,\n\t4697:  0xC35F,\n\t4698:  0xC360,\n\t4699:  0xC361,\n\t4700:  0xC362,\n\t4701:  0xC363,\n\t4702:  0xC364,\n\t4703:  0xC365,\n\t4704:  0xC366,\n\t4705:  0xC367,\n\t4706:  0xC36A,\n\t4707:  0xC36B,\n\t4708:  0xC36D,\n\t4709:  0xC36E,\n\t4710:  0xC36F,\n\t4711:  0xC371,\n\t4712:  0xC373,\n\t4713:  0xC374,\n\t4714:  0xC375,\n\t4715:  0xC376,\n\t4716:  0xC377,\n\t4717:  0xC37A,\n\t4718:  0xC37B,\n\t4719:  0xC37E,\n\t4720:  0xC37F,\n\t4721:  0xC380,\n\t4722:  0xC381,\n\t4723:  0xC382,\n\t4724:  0xC383,\n\t4725:  0xC385,\n\t4726:  0xC386,\n\t4727:  0xC387,\n\t4728:  0xC389,\n\t4729:  0xC38A,\n\t4730:  0xC38B,\n\t4731:  0xC38D,\n\t4732:  0xC38E,\n\t4733:  0xC38F,\n\t4734:  0xC390,\n\t4735:  0xC391,\n\t4736:  0xC392,\n\t4737:  0xC393,\n\t4738:  0xC394,\n\t4739:  0xC395,\n\t4740:  0xC396,\n\t4741:  0xC397,\n\t4742:  0xC398,\n\t4743:  0xC399,\n\t4744:  0xC39A,\n\t4745:  0xC39B,\n\t4746:  0xC39C,\n\t4747:  0xC39D,\n\t4748:  0xC39E,\n\t4749:  0xC39F,\n\t4750:  0xC3A0,\n\t4751:  0xC3A1,\n\t4752:  0xC3A2,\n\t4753:  0xC3A3,\n\t4754:  0xC3A4,\n\t4755:  0xC3A5,\n\t4756:  0xC3A6,\n\t4757:  0xC3A7,\n\t4758:  0xC3A8,\n\t4759:  0xC3A9,\n\t4760:  0xC3AA,\n\t4761:  0xC3AB,\n\t4762:  0xC3AC,\n\t4763:  0xC3AD,\n\t4764:  0xC3AE,\n\t4765:  0xC3AF,\n\t4766:  0xC3B0,\n\t4767:  0xC3B1,\n\t4768:  0xC3B2,\n\t4769:  0xC3B3,\n\t4770:  0xC3B4,\n\t4771:  0xC3B5,\n\t4772:  0xC3B6,\n\t4773:  0xC3B7,\n\t4774:  0xC3B8,\n\t4775:  0xC3B9,\n\t4776:  0xC3BA,\n\t4777:  0xC3BB,\n\t4778:  0xC3BC,\n\t4779:  0xC3BD,\n\t4780:  0xC3BE,\n\t4781:  0xC3BF,\n\t4782:  0xC3C1,\n\t4783:  0xC3C2,\n\t4784:  0xC3C3,\n\t4785:  0xC3C4,\n\t4786:  0xC3C5,\n\t4787:  0xC3C6,\n\t4788:  0xC3C7,\n\t4789:  0xC3C8,\n\t4790:  0xC3C9,\n\t4791:  0xC3CA,\n\t4792:  0xC3CB,\n\t4793:  0xC3CC,\n\t4794:  0xC3CD,\n\t4795:  0xC3CE,\n\t4796:  0xC3CF,\n\t4797:  0xC3D0,\n\t4798:  0xC3D1,\n\t4799:  0xC3D2,\n\t4800:  0xC3D3,\n\t4801:  0xC3D4,\n\t4802:  0xC3D5,\n\t4803:  0xC3D6,\n\t4804:  0xC3D7,\n\t4805:  0xC3DA,\n\t4806:  0xC3DB,\n\t4807:  0xC3DD,\n\t4808:  0xC3DE,\n\t4809:  0xC3E1,\n\t4810:  0xC3E3,\n\t4811:  0xC3E4,\n\t4812:  0xC3E5,\n\t4813:  0xC3E6,\n\t4814:  0xC3E7,\n\t4815:  0xC3EA,\n\t4816:  0xC3EB,\n\t4817:  0xC3EC,\n\t4818:  0xC3EE,\n\t4819:  0xC3EF,\n\t4820:  0xC3F0,\n\t4821:  0xC3F1,\n\t4822:  0xC3F2,\n\t4823:  0xC3F3,\n\t4824:  0xC3F6,\n\t4825:  0xC3F7,\n\t4826:  0xC3F9,\n\t4827:  0xC3FA,\n\t4828:  0xC3FB,\n\t4829:  0xC3FC,\n\t4830:  0xC3FD,\n\t4831:  0xC3FE,\n\t4832:  0xC3FF,\n\t4833:  0xC400,\n\t4834:  0xC401,\n\t4835:  0xC402,\n\t4836:  0xC403,\n\t4837:  0xC404,\n\t4838:  0xC405,\n\t4839:  0xC406,\n\t4840:  0xC407,\n\t4841:  0xC409,\n\t4842:  0xC40A,\n\t4843:  0xC40B,\n\t4844:  0xC40C,\n\t4845:  0xC40D,\n\t4846:  0xC40E,\n\t4847:  0xC40F,\n\t4848:  0xC411,\n\t4849:  0xC412,\n\t4850:  0xC413,\n\t4851:  0xC414,\n\t4852:  0xC415,\n\t4853:  0xC416,\n\t4854:  0xC417,\n\t4855:  0xC418,\n\t4856:  0xC419,\n\t4857:  0xC41A,\n\t4858:  0xC41B,\n\t4859:  0xC41C,\n\t4860:  0xC41D,\n\t4861:  0xC41E,\n\t4862:  0xC41F,\n\t4863:  0xC420,\n\t4864:  0xC421,\n\t4865:  0xC422,\n\t4866:  0xC423,\n\t4867:  0xC425,\n\t4868:  0xC426,\n\t4869:  0xC427,\n\t4870:  0xC428,\n\t4871:  0xC429,\n\t4872:  0xC42A,\n\t4873:  0xC42B,\n\t4874:  0xC42D,\n\t4875:  0xC42E,\n\t4876:  0xC42F,\n\t4877:  0xC431,\n\t4878:  0xC432,\n\t4879:  0xC433,\n\t4880:  0xC435,\n\t4881:  0xC436,\n\t4882:  0xC437,\n\t4883:  0xC438,\n\t4884:  0xC439,\n\t4885:  0xC43A,\n\t4886:  0xC43B,\n\t4887:  0xC43E,\n\t4888:  0xC43F,\n\t4889:  0xC440,\n\t4890:  0xC441,\n\t4891:  0xC442,\n\t4892:  0xC443,\n\t4893:  0xC444,\n\t4894:  0xC445,\n\t4895:  0xC446,\n\t4896:  0xC447,\n\t4897:  0xC449,\n\t4898:  0xC44A,\n\t4899:  0xC44B,\n\t4900:  0xC44C,\n\t4901:  0xC44D,\n\t4902:  0xC44E,\n\t4903:  0xC44F,\n\t4904:  0xC450,\n\t4905:  0xC451,\n\t4906:  0xC452,\n\t4907:  0xC453,\n\t4908:  0xC454,\n\t4909:  0xC455,\n\t4910:  0xC456,\n\t4911:  0xC457,\n\t4912:  0xC458,\n\t4913:  0xC459,\n\t4914:  0xC45A,\n\t4915:  0xC45B,\n\t4916:  0xC45C,\n\t4917:  0xC45D,\n\t4918:  0xC45E,\n\t4919:  0xC45F,\n\t4920:  0xC460,\n\t4921:  0xC461,\n\t4922:  0xC462,\n\t4923:  0xC463,\n\t4924:  0xC466,\n\t4925:  0xC467,\n\t4926:  0xC469,\n\t4927:  0xC46A,\n\t4928:  0xC46B,\n\t4929:  0xC46D,\n\t4930:  0xC46E,\n\t4931:  0xC46F,\n\t4932:  0xC470,\n\t4933:  0xC471,\n\t4934:  0xC472,\n\t4935:  0xC473,\n\t4936:  0xC476,\n\t4937:  0xC477,\n\t4938:  0xC478,\n\t4939:  0xC47A,\n\t4940:  0xC47B,\n\t4941:  0xC47C,\n\t4942:  0xC47D,\n\t4943:  0xC47E,\n\t4944:  0xC47F,\n\t4945:  0xC481,\n\t4946:  0xC482,\n\t4947:  0xC483,\n\t4948:  0xC484,\n\t4949:  0xC485,\n\t4950:  0xC486,\n\t4951:  0xC487,\n\t4952:  0xC488,\n\t4953:  0xC489,\n\t4954:  0xC48A,\n\t4955:  0xC48B,\n\t4956:  0xC48C,\n\t4957:  0xC48D,\n\t4958:  0xC48E,\n\t4959:  0xC48F,\n\t4960:  0xC490,\n\t4961:  0xC491,\n\t4962:  0xC492,\n\t4963:  0xC493,\n\t4964:  0xC495,\n\t4965:  0xC496,\n\t4966:  0xC497,\n\t4967:  0xC498,\n\t4968:  0xC499,\n\t4969:  0xC49A,\n\t4970:  0xC49B,\n\t4971:  0xC49D,\n\t4972:  0xC49E,\n\t4973:  0xC49F,\n\t4974:  0xC4A0,\n\t4975:  0xC4A1,\n\t4976:  0xC4A2,\n\t4977:  0xC4A3,\n\t4978:  0xC4A4,\n\t4979:  0xC4A5,\n\t4980:  0xC4A6,\n\t4981:  0xC4A7,\n\t4982:  0xC4A8,\n\t4983:  0xC4A9,\n\t4984:  0xC4AA,\n\t4985:  0xC4AB,\n\t4986:  0xC4AC,\n\t4987:  0xC4AD,\n\t4988:  0xC4AE,\n\t4989:  0xC4AF,\n\t4990:  0xC4B0,\n\t4991:  0xC4B1,\n\t4992:  0xC4B2,\n\t4993:  0xC4B3,\n\t4994:  0xC4B4,\n\t4995:  0xC4B5,\n\t4996:  0xC4B6,\n\t4997:  0xC4B7,\n\t4998:  0xC4B9,\n\t4999:  0xC4BA,\n\t5000:  0xC4BB,\n\t5001:  0xC4BD,\n\t5002:  0xC4BE,\n\t5003:  0xC4BF,\n\t5004:  0xC4C0,\n\t5005:  0xC4C1,\n\t5006:  0xC4C2,\n\t5007:  0xC4C3,\n\t5008:  0xC4C4,\n\t5009:  0xC4C5,\n\t5010:  0xC4C6,\n\t5011:  0xC4C7,\n\t5012:  0xC4C8,\n\t5013:  0xC4C9,\n\t5014:  0xC4CA,\n\t5015:  0xC4CB,\n\t5016:  0xC4CC,\n\t5017:  0xC4CD,\n\t5018:  0xC4CE,\n\t5019:  0xC4CF,\n\t5020:  0xC4D0,\n\t5021:  0xC4D1,\n\t5022:  0xC4D2,\n\t5023:  0xC4D3,\n\t5024:  0xC4D4,\n\t5025:  0xC4D5,\n\t5026:  0xC4D6,\n\t5027:  0xC4D7,\n\t5028:  0xC4D8,\n\t5029:  0xC4D9,\n\t5030:  0xC4DA,\n\t5031:  0xC4DB,\n\t5032:  0xC4DC,\n\t5033:  0xC4DD,\n\t5034:  0xC4DE,\n\t5035:  0xC4DF,\n\t5036:  0xC4E0,\n\t5037:  0xC4E1,\n\t5038:  0xC4E2,\n\t5039:  0xC4E3,\n\t5040:  0xC4E4,\n\t5041:  0xC4E5,\n\t5042:  0xC4E6,\n\t5043:  0xC4E7,\n\t5044:  0xC4E8,\n\t5045:  0xC4EA,\n\t5046:  0xC4EB,\n\t5047:  0xC4EC,\n\t5048:  0xC4ED,\n\t5049:  0xC4EE,\n\t5050:  0xC4EF,\n\t5051:  0xC4F2,\n\t5052:  0xC4F3,\n\t5053:  0xC4F5,\n\t5054:  0xC4F6,\n\t5055:  0xC4F7,\n\t5056:  0xC4F9,\n\t5057:  0xC4FB,\n\t5058:  0xC4FC,\n\t5059:  0xC4FD,\n\t5060:  0xC4FE,\n\t5061:  0xC502,\n\t5062:  0xC503,\n\t5063:  0xC504,\n\t5064:  0xC505,\n\t5065:  0xC506,\n\t5066:  0xC507,\n\t5067:  0xC508,\n\t5068:  0xC509,\n\t5069:  0xC50A,\n\t5070:  0xC50B,\n\t5071:  0xC50D,\n\t5072:  0xC50E,\n\t5073:  0xC50F,\n\t5074:  0xC511,\n\t5075:  0xC512,\n\t5076:  0xC513,\n\t5077:  0xC515,\n\t5078:  0xC516,\n\t5079:  0xC517,\n\t5080:  0xC518,\n\t5081:  0xC519,\n\t5082:  0xC51A,\n\t5083:  0xC51B,\n\t5084:  0xC51D,\n\t5085:  0xC51E,\n\t5086:  0xC51F,\n\t5087:  0xC520,\n\t5088:  0xC521,\n\t5089:  0xC522,\n\t5090:  0xC523,\n\t5091:  0xC524,\n\t5092:  0xC525,\n\t5093:  0xC526,\n\t5094:  0xC527,\n\t5095:  0xC52A,\n\t5096:  0xC52B,\n\t5097:  0xC52D,\n\t5098:  0xC52E,\n\t5099:  0xC52F,\n\t5100:  0xC531,\n\t5101:  0xC532,\n\t5102:  0xC533,\n\t5103:  0xC534,\n\t5104:  0xC535,\n\t5105:  0xC536,\n\t5106:  0xC537,\n\t5107:  0xC53A,\n\t5108:  0xC53C,\n\t5109:  0xC53E,\n\t5110:  0xC53F,\n\t5111:  0xC540,\n\t5112:  0xC541,\n\t5113:  0xC542,\n\t5114:  0xC543,\n\t5115:  0xC546,\n\t5116:  0xC547,\n\t5117:  0xC54B,\n\t5118:  0xC54F,\n\t5119:  0xC550,\n\t5120:  0xC551,\n\t5121:  0xC552,\n\t5122:  0xC556,\n\t5123:  0xC55A,\n\t5124:  0xC55B,\n\t5125:  0xC55C,\n\t5126:  0xC55F,\n\t5127:  0xC562,\n\t5128:  0xC563,\n\t5129:  0xC565,\n\t5130:  0xC566,\n\t5131:  0xC567,\n\t5132:  0xC569,\n\t5133:  0xC56A,\n\t5134:  0xC56B,\n\t5135:  0xC56C,\n\t5136:  0xC56D,\n\t5137:  0xC56E,\n\t5138:  0xC56F,\n\t5139:  0xC572,\n\t5140:  0xC576,\n\t5141:  0xC577,\n\t5142:  0xC578,\n\t5143:  0xC579,\n\t5144:  0xC57A,\n\t5145:  0xC57B,\n\t5146:  0xC57E,\n\t5147:  0xC57F,\n\t5148:  0xC581,\n\t5149:  0xC582,\n\t5150:  0xC583,\n\t5151:  0xC585,\n\t5152:  0xC586,\n\t5153:  0xC588,\n\t5154:  0xC589,\n\t5155:  0xC58A,\n\t5156:  0xC58B,\n\t5157:  0xC58E,\n\t5158:  0xC590,\n\t5159:  0xC592,\n\t5160:  0xC593,\n\t5161:  0xC594,\n\t5162:  0xC596,\n\t5163:  0xC599,\n\t5164:  0xC59A,\n\t5165:  0xC59B,\n\t5166:  0xC59D,\n\t5167:  0xC59E,\n\t5168:  0xC59F,\n\t5169:  0xC5A1,\n\t5170:  0xC5A2,\n\t5171:  0xC5A3,\n\t5172:  0xC5A4,\n\t5173:  0xC5A5,\n\t5174:  0xC5A6,\n\t5175:  0xC5A7,\n\t5176:  0xC5A8,\n\t5177:  0xC5AA,\n\t5178:  0xC5AB,\n\t5179:  0xC5AC,\n\t5180:  0xC5AD,\n\t5181:  0xC5AE,\n\t5182:  0xC5AF,\n\t5183:  0xC5B0,\n\t5184:  0xC5B1,\n\t5185:  0xC5B2,\n\t5186:  0xC5B3,\n\t5187:  0xC5B6,\n\t5188:  0xC5B7,\n\t5189:  0xC5BA,\n\t5190:  0xC5BF,\n\t5191:  0xC5C0,\n\t5192:  0xC5C1,\n\t5193:  0xC5C2,\n\t5194:  0xC5C3,\n\t5195:  0xC5CB,\n\t5196:  0xC5CD,\n\t5197:  0xC5CF,\n\t5198:  0xC5D2,\n\t5199:  0xC5D3,\n\t5200:  0xC5D5,\n\t5201:  0xC5D6,\n\t5202:  0xC5D7,\n\t5203:  0xC5D9,\n\t5204:  0xC5DA,\n\t5205:  0xC5DB,\n\t5206:  0xC5DC,\n\t5207:  0xC5DD,\n\t5208:  0xC5DE,\n\t5209:  0xC5DF,\n\t5210:  0xC5E2,\n\t5211:  0xC5E4,\n\t5212:  0xC5E6,\n\t5213:  0xC5E7,\n\t5214:  0xC5E8,\n\t5215:  0xC5E9,\n\t5216:  0xC5EA,\n\t5217:  0xC5EB,\n\t5218:  0xC5EF,\n\t5219:  0xC5F1,\n\t5220:  0xC5F2,\n\t5221:  0xC5F3,\n\t5222:  0xC5F5,\n\t5223:  0xC5F8,\n\t5224:  0xC5F9,\n\t5225:  0xC5FA,\n\t5226:  0xC5FB,\n\t5227:  0xC602,\n\t5228:  0xC603,\n\t5229:  0xC604,\n\t5230:  0xC609,\n\t5231:  0xC60A,\n\t5232:  0xC60B,\n\t5233:  0xC60D,\n\t5234:  0xC60E,\n\t5235:  0xC60F,\n\t5236:  0xC611,\n\t5237:  0xC612,\n\t5238:  0xC613,\n\t5239:  0xC614,\n\t5240:  0xC615,\n\t5241:  0xC616,\n\t5242:  0xC617,\n\t5243:  0xC61A,\n\t5244:  0xC61D,\n\t5245:  0xC61E,\n\t5246:  0xC61F,\n\t5247:  0xC620,\n\t5248:  0xC621,\n\t5249:  0xC622,\n\t5250:  0xC623,\n\t5251:  0xC626,\n\t5252:  0xC627,\n\t5253:  0xC629,\n\t5254:  0xC62A,\n\t5255:  0xC62B,\n\t5256:  0xC62F,\n\t5257:  0xC631,\n\t5258:  0xC632,\n\t5259:  0xC636,\n\t5260:  0xC638,\n\t5261:  0xC63A,\n\t5262:  0xC63C,\n\t5263:  0xC63D,\n\t5264:  0xC63E,\n\t5265:  0xC63F,\n\t5266:  0xC642,\n\t5267:  0xC643,\n\t5268:  0xC645,\n\t5269:  0xC646,\n\t5270:  0xC647,\n\t5271:  0xC649,\n\t5272:  0xC64A,\n\t5273:  0xC64B,\n\t5274:  0xC64C,\n\t5275:  0xC64D,\n\t5276:  0xC64E,\n\t5277:  0xC64F,\n\t5278:  0xC652,\n\t5279:  0xC656,\n\t5280:  0xC657,\n\t5281:  0xC658,\n\t5282:  0xC659,\n\t5283:  0xC65A,\n\t5284:  0xC65B,\n\t5285:  0xC65E,\n\t5286:  0xC65F,\n\t5287:  0xC661,\n\t5288:  0xC662,\n\t5289:  0xC663,\n\t5290:  0xC664,\n\t5291:  0xC665,\n\t5292:  0xC666,\n\t5293:  0xC667,\n\t5294:  0xC668,\n\t5295:  0xC669,\n\t5296:  0xC66A,\n\t5297:  0xC66B,\n\t5298:  0xC66D,\n\t5299:  0xC66E,\n\t5300:  0xC670,\n\t5301:  0xC672,\n\t5302:  0xC673,\n\t5303:  0xC674,\n\t5304:  0xC675,\n\t5305:  0xC676,\n\t5306:  0xC677,\n\t5307:  0xC67A,\n\t5308:  0xC67B,\n\t5309:  0xC67D,\n\t5310:  0xC67E,\n\t5311:  0xC67F,\n\t5312:  0xC681,\n\t5313:  0xC682,\n\t5314:  0xC683,\n\t5315:  0xC684,\n\t5316:  0xC685,\n\t5317:  0xC686,\n\t5318:  0xC687,\n\t5319:  0xC68A,\n\t5320:  0xC68C,\n\t5321:  0xC68E,\n\t5322:  0xC68F,\n\t5323:  0xC690,\n\t5324:  0xC691,\n\t5325:  0xC692,\n\t5326:  0xC693,\n\t5327:  0xC696,\n\t5328:  0xC697,\n\t5329:  0xC699,\n\t5330:  0xC69A,\n\t5331:  0xC69B,\n\t5332:  0xC69D,\n\t5333:  0xC69E,\n\t5334:  0xC69F,\n\t5335:  0xC6A0,\n\t5336:  0xC6A1,\n\t5337:  0xC6A2,\n\t5338:  0xC6A3,\n\t5339:  0xC6A6,\n\t5340:  0xC6A8,\n\t5341:  0xC6AA,\n\t5342:  0xC6AB,\n\t5343:  0xC6AC,\n\t5344:  0xC6AD,\n\t5345:  0xC6AE,\n\t5346:  0xC6AF,\n\t5347:  0xC6B2,\n\t5348:  0xC6B3,\n\t5349:  0xC6B5,\n\t5350:  0xC6B6,\n\t5351:  0xC6B7,\n\t5352:  0xC6BB,\n\t5353:  0xC6BC,\n\t5354:  0xC6BD,\n\t5355:  0xC6BE,\n\t5356:  0xC6BF,\n\t5357:  0xC6C2,\n\t5358:  0xC6C4,\n\t5359:  0xC6C6,\n\t5360:  0xC6C7,\n\t5361:  0xC6C8,\n\t5362:  0xC6C9,\n\t5363:  0xC6CA,\n\t5364:  0xC6CB,\n\t5365:  0xC6CE,\n\t5366:  0xC6CF,\n\t5367:  0xC6D1,\n\t5368:  0xC6D2,\n\t5369:  0xC6D3,\n\t5370:  0xC6D5,\n\t5371:  0xC6D6,\n\t5372:  0xC6D7,\n\t5373:  0xC6D8,\n\t5374:  0xC6D9,\n\t5375:  0xC6DA,\n\t5376:  0xC6DB,\n\t5377:  0xC6DE,\n\t5378:  0xC6DF,\n\t5379:  0xC6E2,\n\t5380:  0xC6E3,\n\t5381:  0xC6E4,\n\t5382:  0xC6E5,\n\t5383:  0xC6E6,\n\t5384:  0xC6E7,\n\t5385:  0xC6EA,\n\t5386:  0xC6EB,\n\t5387:  0xC6ED,\n\t5388:  0xC6EE,\n\t5389:  0xC6EF,\n\t5390:  0xC6F1,\n\t5391:  0xC6F2,\n\t5392:  0xC6F3,\n\t5393:  0xC6F4,\n\t5394:  0xC6F5,\n\t5395:  0xC6F6,\n\t5396:  0xC6F7,\n\t5397:  0xC6FA,\n\t5398:  0xC6FB,\n\t5399:  0xC6FC,\n\t5400:  0xC6FE,\n\t5401:  0xC6FF,\n\t5402:  0xC700,\n\t5403:  0xC701,\n\t5404:  0xC702,\n\t5405:  0xC703,\n\t5406:  0xC706,\n\t5407:  0xC707,\n\t5408:  0xC709,\n\t5409:  0xC70A,\n\t5410:  0xC70B,\n\t5411:  0xC70D,\n\t5412:  0xC70E,\n\t5413:  0xC70F,\n\t5414:  0xC710,\n\t5415:  0xC711,\n\t5416:  0xC712,\n\t5417:  0xC713,\n\t5418:  0xC716,\n\t5419:  0xC718,\n\t5420:  0xC71A,\n\t5421:  0xC71B,\n\t5422:  0xC71C,\n\t5423:  0xC71D,\n\t5424:  0xC71E,\n\t5425:  0xC71F,\n\t5426:  0xC722,\n\t5427:  0xC723,\n\t5428:  0xC725,\n\t5429:  0xC726,\n\t5430:  0xC727,\n\t5431:  0xC729,\n\t5432:  0xC72A,\n\t5433:  0xC72B,\n\t5434:  0xC72C,\n\t5435:  0xC72D,\n\t5436:  0xC72E,\n\t5437:  0xC72F,\n\t5438:  0xC732,\n\t5439:  0xC734,\n\t5440:  0xC736,\n\t5441:  0xC738,\n\t5442:  0xC739,\n\t5443:  0xC73A,\n\t5444:  0xC73B,\n\t5445:  0xC73E,\n\t5446:  0xC73F,\n\t5447:  0xC741,\n\t5448:  0xC742,\n\t5449:  0xC743,\n\t5450:  0xC745,\n\t5451:  0xC746,\n\t5452:  0xC747,\n\t5453:  0xC748,\n\t5454:  0xC749,\n\t5455:  0xC74B,\n\t5456:  0xC74E,\n\t5457:  0xC750,\n\t5458:  0xC759,\n\t5459:  0xC75A,\n\t5460:  0xC75B,\n\t5461:  0xC75D,\n\t5462:  0xC75E,\n\t5463:  0xC75F,\n\t5464:  0xC761,\n\t5465:  0xC762,\n\t5466:  0xC763,\n\t5467:  0xC764,\n\t5468:  0xC765,\n\t5469:  0xC766,\n\t5470:  0xC767,\n\t5471:  0xC769,\n\t5472:  0xC76A,\n\t5473:  0xC76C,\n\t5474:  0xC76D,\n\t5475:  0xC76E,\n\t5476:  0xC76F,\n\t5477:  0xC770,\n\t5478:  0xC771,\n\t5479:  0xC772,\n\t5480:  0xC773,\n\t5481:  0xC776,\n\t5482:  0xC777,\n\t5483:  0xC779,\n\t5484:  0xC77A,\n\t5485:  0xC77B,\n\t5486:  0xC77F,\n\t5487:  0xC780,\n\t5488:  0xC781,\n\t5489:  0xC782,\n\t5490:  0xC786,\n\t5491:  0xC78B,\n\t5492:  0xC78C,\n\t5493:  0xC78D,\n\t5494:  0xC78F,\n\t5495:  0xC792,\n\t5496:  0xC793,\n\t5497:  0xC795,\n\t5498:  0xC799,\n\t5499:  0xC79B,\n\t5500:  0xC79C,\n\t5501:  0xC79D,\n\t5502:  0xC79E,\n\t5503:  0xC79F,\n\t5504:  0xC7A2,\n\t5505:  0xC7A7,\n\t5506:  0xC7A8,\n\t5507:  0xC7A9,\n\t5508:  0xC7AA,\n\t5509:  0xC7AB,\n\t5510:  0xC7AE,\n\t5511:  0xC7AF,\n\t5512:  0xC7B1,\n\t5513:  0xC7B2,\n\t5514:  0xC7B3,\n\t5515:  0xC7B5,\n\t5516:  0xC7B6,\n\t5517:  0xC7B7,\n\t5518:  0xC7B8,\n\t5519:  0xC7B9,\n\t5520:  0xC7BA,\n\t5521:  0xC7BB,\n\t5522:  0xC7BE,\n\t5523:  0xC7C2,\n\t5524:  0xC7C3,\n\t5525:  0xC7C4,\n\t5526:  0xC7C5,\n\t5527:  0xC7C6,\n\t5528:  0xC7C7,\n\t5529:  0xC7CA,\n\t5530:  0xC7CB,\n\t5531:  0xC7CD,\n\t5532:  0xC7CF,\n\t5533:  0xC7D1,\n\t5534:  0xC7D2,\n\t5535:  0xC7D3,\n\t5536:  0xC7D4,\n\t5537:  0xC7D5,\n\t5538:  0xC7D6,\n\t5539:  0xC7D7,\n\t5540:  0xC7D9,\n\t5541:  0xC7DA,\n\t5542:  0xC7DB,\n\t5543:  0xC7DC,\n\t5544:  0xC7DE,\n\t5545:  0xC7DF,\n\t5546:  0xC7E0,\n\t5547:  0xC7E1,\n\t5548:  0xC7E2,\n\t5549:  0xC7E3,\n\t5550:  0xC7E5,\n\t5551:  0xC7E6,\n\t5552:  0xC7E7,\n\t5553:  0xC7E9,\n\t5554:  0xC7EA,\n\t5555:  0xC7EB,\n\t5556:  0xC7ED,\n\t5557:  0xC7EE,\n\t5558:  0xC7EF,\n\t5559:  0xC7F0,\n\t5560:  0xC7F1,\n\t5561:  0xC7F2,\n\t5562:  0xC7F3,\n\t5563:  0xC7F4,\n\t5564:  0xC7F5,\n\t5565:  0xC7F6,\n\t5566:  0xC7F7,\n\t5567:  0xC7F8,\n\t5568:  0xC7F9,\n\t5569:  0xC7FA,\n\t5570:  0xC7FB,\n\t5571:  0xC7FC,\n\t5572:  0xC7FD,\n\t5573:  0xC7FE,\n\t5574:  0xC7FF,\n\t5575:  0xC802,\n\t5576:  0xC803,\n\t5577:  0xC805,\n\t5578:  0xC806,\n\t5579:  0xC807,\n\t5580:  0xC809,\n\t5581:  0xC80B,\n\t5582:  0xC80C,\n\t5583:  0xC80D,\n\t5584:  0xC80E,\n\t5585:  0xC80F,\n\t5586:  0xC812,\n\t5587:  0xC814,\n\t5588:  0xC817,\n\t5589:  0xC818,\n\t5590:  0xC819,\n\t5591:  0xC81A,\n\t5592:  0xC81B,\n\t5593:  0xC81E,\n\t5594:  0xC81F,\n\t5595:  0xC821,\n\t5596:  0xC822,\n\t5597:  0xC823,\n\t5598:  0xC825,\n\t5599:  0xC826,\n\t5600:  0xC827,\n\t5601:  0xC828,\n\t5602:  0xC829,\n\t5603:  0xC82A,\n\t5604:  0xC82B,\n\t5605:  0xC82E,\n\t5606:  0xC830,\n\t5607:  0xC832,\n\t5608:  0xC833,\n\t5609:  0xC834,\n\t5610:  0xC835,\n\t5611:  0xC836,\n\t5612:  0xC837,\n\t5613:  0xC839,\n\t5614:  0xC83A,\n\t5615:  0xC83B,\n\t5616:  0xC83D,\n\t5617:  0xC83E,\n\t5618:  0xC83F,\n\t5619:  0xC841,\n\t5620:  0xC842,\n\t5621:  0xC843,\n\t5622:  0xC844,\n\t5623:  0xC845,\n\t5624:  0xC846,\n\t5625:  0xC847,\n\t5626:  0xC84A,\n\t5627:  0xC84B,\n\t5628:  0xC84E,\n\t5629:  0xC84F,\n\t5630:  0xC850,\n\t5631:  0xC851,\n\t5632:  0xC852,\n\t5633:  0xC853,\n\t5634:  0xC855,\n\t5635:  0xC856,\n\t5636:  0xC857,\n\t5637:  0xC858,\n\t5638:  0xC859,\n\t5639:  0xC85A,\n\t5640:  0xC85B,\n\t5641:  0xC85C,\n\t5642:  0xC85D,\n\t5643:  0xC85E,\n\t5644:  0xC85F,\n\t5645:  0xC860,\n\t5646:  0xC861,\n\t5647:  0xC862,\n\t5648:  0xC863,\n\t5649:  0xC864,\n\t5650:  0xC865,\n\t5651:  0xC866,\n\t5652:  0xC867,\n\t5653:  0xC868,\n\t5654:  0xC869,\n\t5655:  0xC86A,\n\t5656:  0xC86B,\n\t5657:  0xC86C,\n\t5658:  0xC86D,\n\t5659:  0xC86E,\n\t5660:  0xC86F,\n\t5661:  0xC872,\n\t5662:  0xC873,\n\t5663:  0xC875,\n\t5664:  0xC876,\n\t5665:  0xC877,\n\t5666:  0xC879,\n\t5667:  0xC87B,\n\t5668:  0xC87C,\n\t5669:  0xC87D,\n\t5670:  0xC87E,\n\t5671:  0xC87F,\n\t5672:  0xC882,\n\t5673:  0xC884,\n\t5674:  0xC888,\n\t5675:  0xC889,\n\t5676:  0xC88A,\n\t5677:  0xC88E,\n\t5678:  0xC88F,\n\t5679:  0xC890,\n\t5680:  0xC891,\n\t5681:  0xC892,\n\t5682:  0xC893,\n\t5683:  0xC895,\n\t5684:  0xC896,\n\t5685:  0xC897,\n\t5686:  0xC898,\n\t5687:  0xC899,\n\t5688:  0xC89A,\n\t5689:  0xC89B,\n\t5690:  0xC89C,\n\t5691:  0xC89E,\n\t5692:  0xC8A0,\n\t5693:  0xC8A2,\n\t5694:  0xC8A3,\n\t5695:  0xC8A4,\n\t5696:  0xC8A5,\n\t5697:  0xC8A6,\n\t5698:  0xC8A7,\n\t5699:  0xC8A9,\n\t5700:  0xC8AA,\n\t5701:  0xC8AB,\n\t5702:  0xC8AC,\n\t5703:  0xC8AD,\n\t5704:  0xC8AE,\n\t5705:  0xC8AF,\n\t5706:  0xC8B0,\n\t5707:  0xC8B1,\n\t5708:  0xC8B2,\n\t5709:  0xC8B3,\n\t5710:  0xC8B4,\n\t5711:  0xC8B5,\n\t5712:  0xC8B6,\n\t5713:  0xC8B7,\n\t5714:  0xC8B8,\n\t5715:  0xC8B9,\n\t5716:  0xC8BA,\n\t5717:  0xC8BB,\n\t5718:  0xC8BE,\n\t5719:  0xC8BF,\n\t5720:  0xC8C0,\n\t5721:  0xC8C1,\n\t5722:  0xC8C2,\n\t5723:  0xC8C3,\n\t5724:  0xC8C5,\n\t5725:  0xC8C6,\n\t5726:  0xC8C7,\n\t5727:  0xC8C9,\n\t5728:  0xC8CA,\n\t5729:  0xC8CB,\n\t5730:  0xC8CD,\n\t5731:  0xC8CE,\n\t5732:  0xC8CF,\n\t5733:  0xC8D0,\n\t5734:  0xC8D1,\n\t5735:  0xC8D2,\n\t5736:  0xC8D3,\n\t5737:  0xC8D6,\n\t5738:  0xC8D8,\n\t5739:  0xC8DA,\n\t5740:  0xC8DB,\n\t5741:  0xC8DC,\n\t5742:  0xC8DD,\n\t5743:  0xC8DE,\n\t5744:  0xC8DF,\n\t5745:  0xC8E2,\n\t5746:  0xC8E3,\n\t5747:  0xC8E5,\n\t5748:  0xC8E6,\n\t5749:  0xC8E7,\n\t5750:  0xC8E8,\n\t5751:  0xC8E9,\n\t5752:  0xC8EA,\n\t5753:  0xC8EB,\n\t5754:  0xC8EC,\n\t5755:  0xC8ED,\n\t5756:  0xC8EE,\n\t5757:  0xC8EF,\n\t5758:  0xC8F0,\n\t5759:  0xC8F1,\n\t5760:  0xC8F2,\n\t5761:  0xC8F3,\n\t5762:  0xC8F4,\n\t5763:  0xC8F6,\n\t5764:  0xC8F7,\n\t5765:  0xC8F8,\n\t5766:  0xC8F9,\n\t5767:  0xC8FA,\n\t5768:  0xC8FB,\n\t5769:  0xC8FE,\n\t5770:  0xC8FF,\n\t5771:  0xC901,\n\t5772:  0xC902,\n\t5773:  0xC903,\n\t5774:  0xC907,\n\t5775:  0xC908,\n\t5776:  0xC909,\n\t5777:  0xC90A,\n\t5778:  0xC90B,\n\t5779:  0xC90E,\n\t5780:  0x3000,\n\t5781:  0x3001,\n\t5782:  0x3002,\n\t5783:  0x00B7,\n\t5784:  0x2025,\n\t5785:  0x2026,\n\t5786:  0x00A8,\n\t5787:  0x3003,\n\t5788:  0x00AD,\n\t5789:  0x2015,\n\t5790:  0x2225,\n\t5791:  0xFF3C,\n\t5792:  0x223C,\n\t5793:  0x2018,\n\t5794:  0x2019,\n\t5795:  0x201C,\n\t5796:  0x201D,\n\t5797:  0x3014,\n\t5798:  0x3015,\n\t5799:  0x3008,\n\t5800:  0x3009,\n\t5801:  0x300A,\n\t5802:  0x300B,\n\t5803:  0x300C,\n\t5804:  0x300D,\n\t5805:  0x300E,\n\t5806:  0x300F,\n\t5807:  0x3010,\n\t5808:  0x3011,\n\t5809:  0x00B1,\n\t5810:  0x00D7,\n\t5811:  0x00F7,\n\t5812:  0x2260,\n\t5813:  0x2264,\n\t5814:  0x2265,\n\t5815:  0x221E,\n\t5816:  0x2234,\n\t5817:  0x00B0,\n\t5818:  0x2032,\n\t5819:  0x2033,\n\t5820:  0x2103,\n\t5821:  0x212B,\n\t5822:  0xFFE0,\n\t5823:  0xFFE1,\n\t5824:  0xFFE5,\n\t5825:  0x2642,\n\t5826:  0x2640,\n\t5827:  0x2220,\n\t5828:  0x22A5,\n\t5829:  0x2312,\n\t5830:  0x2202,\n\t5831:  0x2207,\n\t5832:  0x2261,\n\t5833:  0x2252,\n\t5834:  0x00A7,\n\t5835:  0x203B,\n\t5836:  0x2606,\n\t5837:  0x2605,\n\t5838:  0x25CB,\n\t5839:  0x25CF,\n\t5840:  0x25CE,\n\t5841:  0x25C7,\n\t5842:  0x25C6,\n\t5843:  0x25A1,\n\t5844:  0x25A0,\n\t5845:  0x25B3,\n\t5846:  0x25B2,\n\t5847:  0x25BD,\n\t5848:  0x25BC,\n\t5849:  0x2192,\n\t5850:  0x2190,\n\t5851:  0x2191,\n\t5852:  0x2193,\n\t5853:  0x2194,\n\t5854:  0x3013,\n\t5855:  0x226A,\n\t5856:  0x226B,\n\t5857:  0x221A,\n\t5858:  0x223D,\n\t5859:  0x221D,\n\t5860:  0x2235,\n\t5861:  0x222B,\n\t5862:  0x222C,\n\t5863:  0x2208,\n\t5864:  0x220B,\n\t5865:  0x2286,\n\t5866:  0x2287,\n\t5867:  0x2282,\n\t5868:  0x2283,\n\t5869:  0x222A,\n\t5870:  0x2229,\n\t5871:  0x2227,\n\t5872:  0x2228,\n\t5873:  0xFFE2,\n\t5874:  0xC910,\n\t5875:  0xC912,\n\t5876:  0xC913,\n\t5877:  0xC914,\n\t5878:  0xC915,\n\t5879:  0xC916,\n\t5880:  0xC917,\n\t5881:  0xC919,\n\t5882:  0xC91A,\n\t5883:  0xC91B,\n\t5884:  0xC91C,\n\t5885:  0xC91D,\n\t5886:  0xC91E,\n\t5887:  0xC91F,\n\t5888:  0xC920,\n\t5889:  0xC921,\n\t5890:  0xC922,\n\t5891:  0xC923,\n\t5892:  0xC924,\n\t5893:  0xC925,\n\t5894:  0xC926,\n\t5895:  0xC927,\n\t5896:  0xC928,\n\t5897:  0xC929,\n\t5898:  0xC92A,\n\t5899:  0xC92B,\n\t5900:  0xC92D,\n\t5901:  0xC92E,\n\t5902:  0xC92F,\n\t5903:  0xC930,\n\t5904:  0xC931,\n\t5905:  0xC932,\n\t5906:  0xC933,\n\t5907:  0xC935,\n\t5908:  0xC936,\n\t5909:  0xC937,\n\t5910:  0xC938,\n\t5911:  0xC939,\n\t5912:  0xC93A,\n\t5913:  0xC93B,\n\t5914:  0xC93C,\n\t5915:  0xC93D,\n\t5916:  0xC93E,\n\t5917:  0xC93F,\n\t5918:  0xC940,\n\t5919:  0xC941,\n\t5920:  0xC942,\n\t5921:  0xC943,\n\t5922:  0xC944,\n\t5923:  0xC945,\n\t5924:  0xC946,\n\t5925:  0xC947,\n\t5926:  0xC948,\n\t5927:  0xC949,\n\t5928:  0xC94A,\n\t5929:  0xC94B,\n\t5930:  0xC94C,\n\t5931:  0xC94D,\n\t5932:  0xC94E,\n\t5933:  0xC94F,\n\t5934:  0xC952,\n\t5935:  0xC953,\n\t5936:  0xC955,\n\t5937:  0xC956,\n\t5938:  0xC957,\n\t5939:  0xC959,\n\t5940:  0xC95A,\n\t5941:  0xC95B,\n\t5942:  0xC95C,\n\t5943:  0xC95D,\n\t5944:  0xC95E,\n\t5945:  0xC95F,\n\t5946:  0xC962,\n\t5947:  0xC964,\n\t5948:  0xC965,\n\t5949:  0xC966,\n\t5950:  0xC967,\n\t5951:  0xC968,\n\t5952:  0xC969,\n\t5953:  0xC96A,\n\t5954:  0xC96B,\n\t5955:  0xC96D,\n\t5956:  0xC96E,\n\t5957:  0xC96F,\n\t5958:  0x21D2,\n\t5959:  0x21D4,\n\t5960:  0x2200,\n\t5961:  0x2203,\n\t5962:  0x00B4,\n\t5963:  0xFF5E,\n\t5964:  0x02C7,\n\t5965:  0x02D8,\n\t5966:  0x02DD,\n\t5967:  0x02DA,\n\t5968:  0x02D9,\n\t5969:  0x00B8,\n\t5970:  0x02DB,\n\t5971:  0x00A1,\n\t5972:  0x00BF,\n\t5973:  0x02D0,\n\t5974:  0x222E,\n\t5975:  0x2211,\n\t5976:  0x220F,\n\t5977:  0x00A4,\n\t5978:  0x2109,\n\t5979:  0x2030,\n\t5980:  0x25C1,\n\t5981:  0x25C0,\n\t5982:  0x25B7,\n\t5983:  0x25B6,\n\t5984:  0x2664,\n\t5985:  0x2660,\n\t5986:  0x2661,\n\t5987:  0x2665,\n\t5988:  0x2667,\n\t5989:  0x2663,\n\t5990:  0x2299,\n\t5991:  0x25C8,\n\t5992:  0x25A3,\n\t5993:  0x25D0,\n\t5994:  0x25D1,\n\t5995:  0x2592,\n\t5996:  0x25A4,\n\t5997:  0x25A5,\n\t5998:  0x25A8,\n\t5999:  0x25A7,\n\t6000:  0x25A6,\n\t6001:  0x25A9,\n\t6002:  0x2668,\n\t6003:  0x260F,\n\t6004:  0x260E,\n\t6005:  0x261C,\n\t6006:  0x261E,\n\t6007:  0x00B6,\n\t6008:  0x2020,\n\t6009:  0x2021,\n\t6010:  0x2195,\n\t6011:  0x2197,\n\t6012:  0x2199,\n\t6013:  0x2196,\n\t6014:  0x2198,\n\t6015:  0x266D,\n\t6016:  0x2669,\n\t6017:  0x266A,\n\t6018:  0x266C,\n\t6019:  0x327F,\n\t6020:  0x321C,\n\t6021:  0x2116,\n\t6022:  0x33C7,\n\t6023:  0x2122,\n\t6024:  0x33C2,\n\t6025:  0x33D8,\n\t6026:  0x2121,\n\t6027:  0x20AC,\n\t6028:  0x00AE,\n\t6052:  0xC971,\n\t6053:  0xC972,\n\t6054:  0xC973,\n\t6055:  0xC975,\n\t6056:  0xC976,\n\t6057:  0xC977,\n\t6058:  0xC978,\n\t6059:  0xC979,\n\t6060:  0xC97A,\n\t6061:  0xC97B,\n\t6062:  0xC97D,\n\t6063:  0xC97E,\n\t6064:  0xC97F,\n\t6065:  0xC980,\n\t6066:  0xC981,\n\t6067:  0xC982,\n\t6068:  0xC983,\n\t6069:  0xC984,\n\t6070:  0xC985,\n\t6071:  0xC986,\n\t6072:  0xC987,\n\t6073:  0xC98A,\n\t6074:  0xC98B,\n\t6075:  0xC98D,\n\t6076:  0xC98E,\n\t6077:  0xC98F,\n\t6078:  0xC991,\n\t6079:  0xC992,\n\t6080:  0xC993,\n\t6081:  0xC994,\n\t6082:  0xC995,\n\t6083:  0xC996,\n\t6084:  0xC997,\n\t6085:  0xC99A,\n\t6086:  0xC99C,\n\t6087:  0xC99E,\n\t6088:  0xC99F,\n\t6089:  0xC9A0,\n\t6090:  0xC9A1,\n\t6091:  0xC9A2,\n\t6092:  0xC9A3,\n\t6093:  0xC9A4,\n\t6094:  0xC9A5,\n\t6095:  0xC9A6,\n\t6096:  0xC9A7,\n\t6097:  0xC9A8,\n\t6098:  0xC9A9,\n\t6099:  0xC9AA,\n\t6100:  0xC9AB,\n\t6101:  0xC9AC,\n\t6102:  0xC9AD,\n\t6103:  0xC9AE,\n\t6104:  0xC9AF,\n\t6105:  0xC9B0,\n\t6106:  0xC9B1,\n\t6107:  0xC9B2,\n\t6108:  0xC9B3,\n\t6109:  0xC9B4,\n\t6110:  0xC9B5,\n\t6111:  0xC9B6,\n\t6112:  0xC9B7,\n\t6113:  0xC9B8,\n\t6114:  0xC9B9,\n\t6115:  0xC9BA,\n\t6116:  0xC9BB,\n\t6117:  0xC9BC,\n\t6118:  0xC9BD,\n\t6119:  0xC9BE,\n\t6120:  0xC9BF,\n\t6121:  0xC9C2,\n\t6122:  0xC9C3,\n\t6123:  0xC9C5,\n\t6124:  0xC9C6,\n\t6125:  0xC9C9,\n\t6126:  0xC9CB,\n\t6127:  0xC9CC,\n\t6128:  0xC9CD,\n\t6129:  0xC9CE,\n\t6130:  0xC9CF,\n\t6131:  0xC9D2,\n\t6132:  0xC9D4,\n\t6133:  0xC9D7,\n\t6134:  0xC9D8,\n\t6135:  0xC9DB,\n\t6136:  0xFF01,\n\t6137:  0xFF02,\n\t6138:  0xFF03,\n\t6139:  0xFF04,\n\t6140:  0xFF05,\n\t6141:  0xFF06,\n\t6142:  0xFF07,\n\t6143:  0xFF08,\n\t6144:  0xFF09,\n\t6145:  0xFF0A,\n\t6146:  0xFF0B,\n\t6147:  0xFF0C,\n\t6148:  0xFF0D,\n\t6149:  0xFF0E,\n\t6150:  0xFF0F,\n\t6151:  0xFF10,\n\t6152:  0xFF11,\n\t6153:  0xFF12,\n\t6154:  0xFF13,\n\t6155:  0xFF14,\n\t6156:  0xFF15,\n\t6157:  0xFF16,\n\t6158:  0xFF17,\n\t6159:  0xFF18,\n\t6160:  0xFF19,\n\t6161:  0xFF1A,\n\t6162:  0xFF1B,\n\t6163:  0xFF1C,\n\t6164:  0xFF1D,\n\t6165:  0xFF1E,\n\t6166:  0xFF1F,\n\t6167:  0xFF20,\n\t6168:  0xFF21,\n\t6169:  0xFF22,\n\t6170:  0xFF23,\n\t6171:  0xFF24,\n\t6172:  0xFF25,\n\t6173:  0xFF26,\n\t6174:  0xFF27,\n\t6175:  0xFF28,\n\t6176:  0xFF29,\n\t6177:  0xFF2A,\n\t6178:  0xFF2B,\n\t6179:  0xFF2C,\n\t6180:  0xFF2D,\n\t6181:  0xFF2E,\n\t6182:  0xFF2F,\n\t6183:  0xFF30,\n\t6184:  0xFF31,\n\t6185:  0xFF32,\n\t6186:  0xFF33,\n\t6187:  0xFF34,\n\t6188:  0xFF35,\n\t6189:  0xFF36,\n\t6190:  0xFF37,\n\t6191:  0xFF38,\n\t6192:  0xFF39,\n\t6193:  0xFF3A,\n\t6194:  0xFF3B,\n\t6195:  0xFFE6,\n\t6196:  0xFF3D,\n\t6197:  0xFF3E,\n\t6198:  0xFF3F,\n\t6199:  0xFF40,\n\t6200:  0xFF41,\n\t6201:  0xFF42,\n\t6202:  0xFF43,\n\t6203:  0xFF44,\n\t6204:  0xFF45,\n\t6205:  0xFF46,\n\t6206:  0xFF47,\n\t6207:  0xFF48,\n\t6208:  0xFF49,\n\t6209:  0xFF4A,\n\t6210:  0xFF4B,\n\t6211:  0xFF4C,\n\t6212:  0xFF4D,\n\t6213:  0xFF4E,\n\t6214:  0xFF4F,\n\t6215:  0xFF50,\n\t6216:  0xFF51,\n\t6217:  0xFF52,\n\t6218:  0xFF53,\n\t6219:  0xFF54,\n\t6220:  0xFF55,\n\t6221:  0xFF56,\n\t6222:  0xFF57,\n\t6223:  0xFF58,\n\t6224:  0xFF59,\n\t6225:  0xFF5A,\n\t6226:  0xFF5B,\n\t6227:  0xFF5C,\n\t6228:  0xFF5D,\n\t6229:  0xFFE3,\n\t6230:  0xC9DE,\n\t6231:  0xC9DF,\n\t6232:  0xC9E1,\n\t6233:  0xC9E3,\n\t6234:  0xC9E5,\n\t6235:  0xC9E6,\n\t6236:  0xC9E8,\n\t6237:  0xC9E9,\n\t6238:  0xC9EA,\n\t6239:  0xC9EB,\n\t6240:  0xC9EE,\n\t6241:  0xC9F2,\n\t6242:  0xC9F3,\n\t6243:  0xC9F4,\n\t6244:  0xC9F5,\n\t6245:  0xC9F6,\n\t6246:  0xC9F7,\n\t6247:  0xC9FA,\n\t6248:  0xC9FB,\n\t6249:  0xC9FD,\n\t6250:  0xC9FE,\n\t6251:  0xC9FF,\n\t6252:  0xCA01,\n\t6253:  0xCA02,\n\t6254:  0xCA03,\n\t6255:  0xCA04,\n\t6256:  0xCA05,\n\t6257:  0xCA06,\n\t6258:  0xCA07,\n\t6259:  0xCA0A,\n\t6260:  0xCA0E,\n\t6261:  0xCA0F,\n\t6262:  0xCA10,\n\t6263:  0xCA11,\n\t6264:  0xCA12,\n\t6265:  0xCA13,\n\t6266:  0xCA15,\n\t6267:  0xCA16,\n\t6268:  0xCA17,\n\t6269:  0xCA19,\n\t6270:  0xCA1A,\n\t6271:  0xCA1B,\n\t6272:  0xCA1C,\n\t6273:  0xCA1D,\n\t6274:  0xCA1E,\n\t6275:  0xCA1F,\n\t6276:  0xCA20,\n\t6277:  0xCA21,\n\t6278:  0xCA22,\n\t6279:  0xCA23,\n\t6280:  0xCA24,\n\t6281:  0xCA25,\n\t6282:  0xCA26,\n\t6283:  0xCA27,\n\t6284:  0xCA28,\n\t6285:  0xCA2A,\n\t6286:  0xCA2B,\n\t6287:  0xCA2C,\n\t6288:  0xCA2D,\n\t6289:  0xCA2E,\n\t6290:  0xCA2F,\n\t6291:  0xCA30,\n\t6292:  0xCA31,\n\t6293:  0xCA32,\n\t6294:  0xCA33,\n\t6295:  0xCA34,\n\t6296:  0xCA35,\n\t6297:  0xCA36,\n\t6298:  0xCA37,\n\t6299:  0xCA38,\n\t6300:  0xCA39,\n\t6301:  0xCA3A,\n\t6302:  0xCA3B,\n\t6303:  0xCA3C,\n\t6304:  0xCA3D,\n\t6305:  0xCA3E,\n\t6306:  0xCA3F,\n\t6307:  0xCA40,\n\t6308:  0xCA41,\n\t6309:  0xCA42,\n\t6310:  0xCA43,\n\t6311:  0xCA44,\n\t6312:  0xCA45,\n\t6313:  0xCA46,\n\t6314:  0x3131,\n\t6315:  0x3132,\n\t6316:  0x3133,\n\t6317:  0x3134,\n\t6318:  0x3135,\n\t6319:  0x3136,\n\t6320:  0x3137,\n\t6321:  0x3138,\n\t6322:  0x3139,\n\t6323:  0x313A,\n\t6324:  0x313B,\n\t6325:  0x313C,\n\t6326:  0x313D,\n\t6327:  0x313E,\n\t6328:  0x313F,\n\t6329:  0x3140,\n\t6330:  0x3141,\n\t6331:  0x3142,\n\t6332:  0x3143,\n\t6333:  0x3144,\n\t6334:  0x3145,\n\t6335:  0x3146,\n\t6336:  0x3147,\n\t6337:  0x3148,\n\t6338:  0x3149,\n\t6339:  0x314A,\n\t6340:  0x314B,\n\t6341:  0x314C,\n\t6342:  0x314D,\n\t6343:  0x314E,\n\t6344:  0x314F,\n\t6345:  0x3150,\n\t6346:  0x3151,\n\t6347:  0x3152,\n\t6348:  0x3153,\n\t6349:  0x3154,\n\t6350:  0x3155,\n\t6351:  0x3156,\n\t6352:  0x3157,\n\t6353:  0x3158,\n\t6354:  0x3159,\n\t6355:  0x315A,\n\t6356:  0x315B,\n\t6357:  0x315C,\n\t6358:  0x315D,\n\t6359:  0x315E,\n\t6360:  0x315F,\n\t6361:  0x3160,\n\t6362:  0x3161,\n\t6363:  0x3162,\n\t6364:  0x3163,\n\t6365:  0x3164,\n\t6366:  0x3165,\n\t6367:  0x3166,\n\t6368:  0x3167,\n\t6369:  0x3168,\n\t6370:  0x3169,\n\t6371:  0x316A,\n\t6372:  0x316B,\n\t6373:  0x316C,\n\t6374:  0x316D,\n\t6375:  0x316E,\n\t6376:  0x316F,\n\t6377:  0x3170,\n\t6378:  0x3171,\n\t6379:  0x3172,\n\t6380:  0x3173,\n\t6381:  0x3174,\n\t6382:  0x3175,\n\t6383:  0x3176,\n\t6384:  0x3177,\n\t6385:  0x3178,\n\t6386:  0x3179,\n\t6387:  0x317A,\n\t6388:  0x317B,\n\t6389:  0x317C,\n\t6390:  0x317D,\n\t6391:  0x317E,\n\t6392:  0x317F,\n\t6393:  0x3180,\n\t6394:  0x3181,\n\t6395:  0x3182,\n\t6396:  0x3183,\n\t6397:  0x3184,\n\t6398:  0x3185,\n\t6399:  0x3186,\n\t6400:  0x3187,\n\t6401:  0x3188,\n\t6402:  0x3189,\n\t6403:  0x318A,\n\t6404:  0x318B,\n\t6405:  0x318C,\n\t6406:  0x318D,\n\t6407:  0x318E,\n\t6408:  0xCA47,\n\t6409:  0xCA48,\n\t6410:  0xCA49,\n\t6411:  0xCA4A,\n\t6412:  0xCA4B,\n\t6413:  0xCA4E,\n\t6414:  0xCA4F,\n\t6415:  0xCA51,\n\t6416:  0xCA52,\n\t6417:  0xCA53,\n\t6418:  0xCA55,\n\t6419:  0xCA56,\n\t6420:  0xCA57,\n\t6421:  0xCA58,\n\t6422:  0xCA59,\n\t6423:  0xCA5A,\n\t6424:  0xCA5B,\n\t6425:  0xCA5E,\n\t6426:  0xCA62,\n\t6427:  0xCA63,\n\t6428:  0xCA64,\n\t6429:  0xCA65,\n\t6430:  0xCA66,\n\t6431:  0xCA67,\n\t6432:  0xCA69,\n\t6433:  0xCA6A,\n\t6434:  0xCA6B,\n\t6435:  0xCA6C,\n\t6436:  0xCA6D,\n\t6437:  0xCA6E,\n\t6438:  0xCA6F,\n\t6439:  0xCA70,\n\t6440:  0xCA71,\n\t6441:  0xCA72,\n\t6442:  0xCA73,\n\t6443:  0xCA74,\n\t6444:  0xCA75,\n\t6445:  0xCA76,\n\t6446:  0xCA77,\n\t6447:  0xCA78,\n\t6448:  0xCA79,\n\t6449:  0xCA7A,\n\t6450:  0xCA7B,\n\t6451:  0xCA7C,\n\t6452:  0xCA7E,\n\t6453:  0xCA7F,\n\t6454:  0xCA80,\n\t6455:  0xCA81,\n\t6456:  0xCA82,\n\t6457:  0xCA83,\n\t6458:  0xCA85,\n\t6459:  0xCA86,\n\t6460:  0xCA87,\n\t6461:  0xCA88,\n\t6462:  0xCA89,\n\t6463:  0xCA8A,\n\t6464:  0xCA8B,\n\t6465:  0xCA8C,\n\t6466:  0xCA8D,\n\t6467:  0xCA8E,\n\t6468:  0xCA8F,\n\t6469:  0xCA90,\n\t6470:  0xCA91,\n\t6471:  0xCA92,\n\t6472:  0xCA93,\n\t6473:  0xCA94,\n\t6474:  0xCA95,\n\t6475:  0xCA96,\n\t6476:  0xCA97,\n\t6477:  0xCA99,\n\t6478:  0xCA9A,\n\t6479:  0xCA9B,\n\t6480:  0xCA9C,\n\t6481:  0xCA9D,\n\t6482:  0xCA9E,\n\t6483:  0xCA9F,\n\t6484:  0xCAA0,\n\t6485:  0xCAA1,\n\t6486:  0xCAA2,\n\t6487:  0xCAA3,\n\t6488:  0xCAA4,\n\t6489:  0xCAA5,\n\t6490:  0xCAA6,\n\t6491:  0xCAA7,\n\t6492:  0x2170,\n\t6493:  0x2171,\n\t6494:  0x2172,\n\t6495:  0x2173,\n\t6496:  0x2174,\n\t6497:  0x2175,\n\t6498:  0x2176,\n\t6499:  0x2177,\n\t6500:  0x2178,\n\t6501:  0x2179,\n\t6507:  0x2160,\n\t6508:  0x2161,\n\t6509:  0x2162,\n\t6510:  0x2163,\n\t6511:  0x2164,\n\t6512:  0x2165,\n\t6513:  0x2166,\n\t6514:  0x2167,\n\t6515:  0x2168,\n\t6516:  0x2169,\n\t6524:  0x0391,\n\t6525:  0x0392,\n\t6526:  0x0393,\n\t6527:  0x0394,\n\t6528:  0x0395,\n\t6529:  0x0396,\n\t6530:  0x0397,\n\t6531:  0x0398,\n\t6532:  0x0399,\n\t6533:  0x039A,\n\t6534:  0x039B,\n\t6535:  0x039C,\n\t6536:  0x039D,\n\t6537:  0x039E,\n\t6538:  0x039F,\n\t6539:  0x03A0,\n\t6540:  0x03A1,\n\t6541:  0x03A3,\n\t6542:  0x03A4,\n\t6543:  0x03A5,\n\t6544:  0x03A6,\n\t6545:  0x03A7,\n\t6546:  0x03A8,\n\t6547:  0x03A9,\n\t6556:  0x03B1,\n\t6557:  0x03B2,\n\t6558:  0x03B3,\n\t6559:  0x03B4,\n\t6560:  0x03B5,\n\t6561:  0x03B6,\n\t6562:  0x03B7,\n\t6563:  0x03B8,\n\t6564:  0x03B9,\n\t6565:  0x03BA,\n\t6566:  0x03BB,\n\t6567:  0x03BC,\n\t6568:  0x03BD,\n\t6569:  0x03BE,\n\t6570:  0x03BF,\n\t6571:  0x03C0,\n\t6572:  0x03C1,\n\t6573:  0x03C3,\n\t6574:  0x03C4,\n\t6575:  0x03C5,\n\t6576:  0x03C6,\n\t6577:  0x03C7,\n\t6578:  0x03C8,\n\t6579:  0x03C9,\n\t6586:  0xCAA8,\n\t6587:  0xCAA9,\n\t6588:  0xCAAA,\n\t6589:  0xCAAB,\n\t6590:  0xCAAC,\n\t6591:  0xCAAD,\n\t6592:  0xCAAE,\n\t6593:  0xCAAF,\n\t6594:  0xCAB0,\n\t6595:  0xCAB1,\n\t6596:  0xCAB2,\n\t6597:  0xCAB3,\n\t6598:  0xCAB4,\n\t6599:  0xCAB5,\n\t6600:  0xCAB6,\n\t6601:  0xCAB7,\n\t6602:  0xCAB8,\n\t6603:  0xCAB9,\n\t6604:  0xCABA,\n\t6605:  0xCABB,\n\t6606:  0xCABE,\n\t6607:  0xCABF,\n\t6608:  0xCAC1,\n\t6609:  0xCAC2,\n\t6610:  0xCAC3,\n\t6611:  0xCAC5,\n\t6612:  0xCAC6,\n\t6613:  0xCAC7,\n\t6614:  0xCAC8,\n\t6615:  0xCAC9,\n\t6616:  0xCACA,\n\t6617:  0xCACB,\n\t6618:  0xCACE,\n\t6619:  0xCAD0,\n\t6620:  0xCAD2,\n\t6621:  0xCAD4,\n\t6622:  0xCAD5,\n\t6623:  0xCAD6,\n\t6624:  0xCAD7,\n\t6625:  0xCADA,\n\t6626:  0xCADB,\n\t6627:  0xCADC,\n\t6628:  0xCADD,\n\t6629:  0xCADE,\n\t6630:  0xCADF,\n\t6631:  0xCAE1,\n\t6632:  0xCAE2,\n\t6633:  0xCAE3,\n\t6634:  0xCAE4,\n\t6635:  0xCAE5,\n\t6636:  0xCAE6,\n\t6637:  0xCAE7,\n\t6638:  0xCAE8,\n\t6639:  0xCAE9,\n\t6640:  0xCAEA,\n\t6641:  0xCAEB,\n\t6642:  0xCAED,\n\t6643:  0xCAEE,\n\t6644:  0xCAEF,\n\t6645:  0xCAF0,\n\t6646:  0xCAF1,\n\t6647:  0xCAF2,\n\t6648:  0xCAF3,\n\t6649:  0xCAF5,\n\t6650:  0xCAF6,\n\t6651:  0xCAF7,\n\t6652:  0xCAF8,\n\t6653:  0xCAF9,\n\t6654:  0xCAFA,\n\t6655:  0xCAFB,\n\t6656:  0xCAFC,\n\t6657:  0xCAFD,\n\t6658:  0xCAFE,\n\t6659:  0xCAFF,\n\t6660:  0xCB00,\n\t6661:  0xCB01,\n\t6662:  0xCB02,\n\t6663:  0xCB03,\n\t6664:  0xCB04,\n\t6665:  0xCB05,\n\t6666:  0xCB06,\n\t6667:  0xCB07,\n\t6668:  0xCB09,\n\t6669:  0xCB0A,\n\t6670:  0x2500,\n\t6671:  0x2502,\n\t6672:  0x250C,\n\t6673:  0x2510,\n\t6674:  0x2518,\n\t6675:  0x2514,\n\t6676:  0x251C,\n\t6677:  0x252C,\n\t6678:  0x2524,\n\t6679:  0x2534,\n\t6680:  0x253C,\n\t6681:  0x2501,\n\t6682:  0x2503,\n\t6683:  0x250F,\n\t6684:  0x2513,\n\t6685:  0x251B,\n\t6686:  0x2517,\n\t6687:  0x2523,\n\t6688:  0x2533,\n\t6689:  0x252B,\n\t6690:  0x253B,\n\t6691:  0x254B,\n\t6692:  0x2520,\n\t6693:  0x252F,\n\t6694:  0x2528,\n\t6695:  0x2537,\n\t6696:  0x253F,\n\t6697:  0x251D,\n\t6698:  0x2530,\n\t6699:  0x2525,\n\t6700:  0x2538,\n\t6701:  0x2542,\n\t6702:  0x2512,\n\t6703:  0x2511,\n\t6704:  0x251A,\n\t6705:  0x2519,\n\t6706:  0x2516,\n\t6707:  0x2515,\n\t6708:  0x250E,\n\t6709:  0x250D,\n\t6710:  0x251E,\n\t6711:  0x251F,\n\t6712:  0x2521,\n\t6713:  0x2522,\n\t6714:  0x2526,\n\t6715:  0x2527,\n\t6716:  0x2529,\n\t6717:  0x252A,\n\t6718:  0x252D,\n\t6719:  0x252E,\n\t6720:  0x2531,\n\t6721:  0x2532,\n\t6722:  0x2535,\n\t6723:  0x2536,\n\t6724:  0x2539,\n\t6725:  0x253A,\n\t6726:  0x253D,\n\t6727:  0x253E,\n\t6728:  0x2540,\n\t6729:  0x2541,\n\t6730:  0x2543,\n\t6731:  0x2544,\n\t6732:  0x2545,\n\t6733:  0x2546,\n\t6734:  0x2547,\n\t6735:  0x2548,\n\t6736:  0x2549,\n\t6737:  0x254A,\n\t6764:  0xCB0B,\n\t6765:  0xCB0C,\n\t6766:  0xCB0D,\n\t6767:  0xCB0E,\n\t6768:  0xCB0F,\n\t6769:  0xCB11,\n\t6770:  0xCB12,\n\t6771:  0xCB13,\n\t6772:  0xCB15,\n\t6773:  0xCB16,\n\t6774:  0xCB17,\n\t6775:  0xCB19,\n\t6776:  0xCB1A,\n\t6777:  0xCB1B,\n\t6778:  0xCB1C,\n\t6779:  0xCB1D,\n\t6780:  0xCB1E,\n\t6781:  0xCB1F,\n\t6782:  0xCB22,\n\t6783:  0xCB23,\n\t6784:  0xCB24,\n\t6785:  0xCB25,\n\t6786:  0xCB26,\n\t6787:  0xCB27,\n\t6788:  0xCB28,\n\t6789:  0xCB29,\n\t6790:  0xCB2A,\n\t6791:  0xCB2B,\n\t6792:  0xCB2C,\n\t6793:  0xCB2D,\n\t6794:  0xCB2E,\n\t6795:  0xCB2F,\n\t6796:  0xCB30,\n\t6797:  0xCB31,\n\t6798:  0xCB32,\n\t6799:  0xCB33,\n\t6800:  0xCB34,\n\t6801:  0xCB35,\n\t6802:  0xCB36,\n\t6803:  0xCB37,\n\t6804:  0xCB38,\n\t6805:  0xCB39,\n\t6806:  0xCB3A,\n\t6807:  0xCB3B,\n\t6808:  0xCB3C,\n\t6809:  0xCB3D,\n\t6810:  0xCB3E,\n\t6811:  0xCB3F,\n\t6812:  0xCB40,\n\t6813:  0xCB42,\n\t6814:  0xCB43,\n\t6815:  0xCB44,\n\t6816:  0xCB45,\n\t6817:  0xCB46,\n\t6818:  0xCB47,\n\t6819:  0xCB4A,\n\t6820:  0xCB4B,\n\t6821:  0xCB4D,\n\t6822:  0xCB4E,\n\t6823:  0xCB4F,\n\t6824:  0xCB51,\n\t6825:  0xCB52,\n\t6826:  0xCB53,\n\t6827:  0xCB54,\n\t6828:  0xCB55,\n\t6829:  0xCB56,\n\t6830:  0xCB57,\n\t6831:  0xCB5A,\n\t6832:  0xCB5B,\n\t6833:  0xCB5C,\n\t6834:  0xCB5E,\n\t6835:  0xCB5F,\n\t6836:  0xCB60,\n\t6837:  0xCB61,\n\t6838:  0xCB62,\n\t6839:  0xCB63,\n\t6840:  0xCB65,\n\t6841:  0xCB66,\n\t6842:  0xCB67,\n\t6843:  0xCB68,\n\t6844:  0xCB69,\n\t6845:  0xCB6A,\n\t6846:  0xCB6B,\n\t6847:  0xCB6C,\n\t6848:  0x3395,\n\t6849:  0x3396,\n\t6850:  0x3397,\n\t6851:  0x2113,\n\t6852:  0x3398,\n\t6853:  0x33C4,\n\t6854:  0x33A3,\n\t6855:  0x33A4,\n\t6856:  0x33A5,\n\t6857:  0x33A6,\n\t6858:  0x3399,\n\t6859:  0x339A,\n\t6860:  0x339B,\n\t6861:  0x339C,\n\t6862:  0x339D,\n\t6863:  0x339E,\n\t6864:  0x339F,\n\t6865:  0x33A0,\n\t6866:  0x33A1,\n\t6867:  0x33A2,\n\t6868:  0x33CA,\n\t6869:  0x338D,\n\t6870:  0x338E,\n\t6871:  0x338F,\n\t6872:  0x33CF,\n\t6873:  0x3388,\n\t6874:  0x3389,\n\t6875:  0x33C8,\n\t6876:  0x33A7,\n\t6877:  0x33A8,\n\t6878:  0x33B0,\n\t6879:  0x33B1,\n\t6880:  0x33B2,\n\t6881:  0x33B3,\n\t6882:  0x33B4,\n\t6883:  0x33B5,\n\t6884:  0x33B6,\n\t6885:  0x33B7,\n\t6886:  0x33B8,\n\t6887:  0x33B9,\n\t6888:  0x3380,\n\t6889:  0x3381,\n\t6890:  0x3382,\n\t6891:  0x3383,\n\t6892:  0x3384,\n\t6893:  0x33BA,\n\t6894:  0x33BB,\n\t6895:  0x33BC,\n\t6896:  0x33BD,\n\t6897:  0x33BE,\n\t6898:  0x33BF,\n\t6899:  0x3390,\n\t6900:  0x3391,\n\t6901:  0x3392,\n\t6902:  0x3393,\n\t6903:  0x3394,\n\t6904:  0x2126,\n\t6905:  0x33C0,\n\t6906:  0x33C1,\n\t6907:  0x338A,\n\t6908:  0x338B,\n\t6909:  0x338C,\n\t6910:  0x33D6,\n\t6911:  0x33C5,\n\t6912:  0x33AD,\n\t6913:  0x33AE,\n\t6914:  0x33AF,\n\t6915:  0x33DB,\n\t6916:  0x33A9,\n\t6917:  0x33AA,\n\t6918:  0x33AB,\n\t6919:  0x33AC,\n\t6920:  0x33DD,\n\t6921:  0x33D0,\n\t6922:  0x33D3,\n\t6923:  0x33C3,\n\t6924:  0x33C9,\n\t6925:  0x33DC,\n\t6926:  0x33C6,\n\t6942:  0xCB6D,\n\t6943:  0xCB6E,\n\t6944:  0xCB6F,\n\t6945:  0xCB70,\n\t6946:  0xCB71,\n\t6947:  0xCB72,\n\t6948:  0xCB73,\n\t6949:  0xCB74,\n\t6950:  0xCB75,\n\t6951:  0xCB76,\n\t6952:  0xCB77,\n\t6953:  0xCB7A,\n\t6954:  0xCB7B,\n\t6955:  0xCB7C,\n\t6956:  0xCB7D,\n\t6957:  0xCB7E,\n\t6958:  0xCB7F,\n\t6959:  0xCB80,\n\t6960:  0xCB81,\n\t6961:  0xCB82,\n\t6962:  0xCB83,\n\t6963:  0xCB84,\n\t6964:  0xCB85,\n\t6965:  0xCB86,\n\t6966:  0xCB87,\n\t6967:  0xCB88,\n\t6968:  0xCB89,\n\t6969:  0xCB8A,\n\t6970:  0xCB8B,\n\t6971:  0xCB8C,\n\t6972:  0xCB8D,\n\t6973:  0xCB8E,\n\t6974:  0xCB8F,\n\t6975:  0xCB90,\n\t6976:  0xCB91,\n\t6977:  0xCB92,\n\t6978:  0xCB93,\n\t6979:  0xCB94,\n\t6980:  0xCB95,\n\t6981:  0xCB96,\n\t6982:  0xCB97,\n\t6983:  0xCB98,\n\t6984:  0xCB99,\n\t6985:  0xCB9A,\n\t6986:  0xCB9B,\n\t6987:  0xCB9D,\n\t6988:  0xCB9E,\n\t6989:  0xCB9F,\n\t6990:  0xCBA0,\n\t6991:  0xCBA1,\n\t6992:  0xCBA2,\n\t6993:  0xCBA3,\n\t6994:  0xCBA4,\n\t6995:  0xCBA5,\n\t6996:  0xCBA6,\n\t6997:  0xCBA7,\n\t6998:  0xCBA8,\n\t6999:  0xCBA9,\n\t7000:  0xCBAA,\n\t7001:  0xCBAB,\n\t7002:  0xCBAC,\n\t7003:  0xCBAD,\n\t7004:  0xCBAE,\n\t7005:  0xCBAF,\n\t7006:  0xCBB0,\n\t7007:  0xCBB1,\n\t7008:  0xCBB2,\n\t7009:  0xCBB3,\n\t7010:  0xCBB4,\n\t7011:  0xCBB5,\n\t7012:  0xCBB6,\n\t7013:  0xCBB7,\n\t7014:  0xCBB9,\n\t7015:  0xCBBA,\n\t7016:  0xCBBB,\n\t7017:  0xCBBC,\n\t7018:  0xCBBD,\n\t7019:  0xCBBE,\n\t7020:  0xCBBF,\n\t7021:  0xCBC0,\n\t7022:  0xCBC1,\n\t7023:  0xCBC2,\n\t7024:  0xCBC3,\n\t7025:  0xCBC4,\n\t7026:  0x00C6,\n\t7027:  0x00D0,\n\t7028:  0x00AA,\n\t7029:  0x0126,\n\t7031:  0x0132,\n\t7033:  0x013F,\n\t7034:  0x0141,\n\t7035:  0x00D8,\n\t7036:  0x0152,\n\t7037:  0x00BA,\n\t7038:  0x00DE,\n\t7039:  0x0166,\n\t7040:  0x014A,\n\t7042:  0x3260,\n\t7043:  0x3261,\n\t7044:  0x3262,\n\t7045:  0x3263,\n\t7046:  0x3264,\n\t7047:  0x3265,\n\t7048:  0x3266,\n\t7049:  0x3267,\n\t7050:  0x3268,\n\t7051:  0x3269,\n\t7052:  0x326A,\n\t7053:  0x326B,\n\t7054:  0x326C,\n\t7055:  0x326D,\n\t7056:  0x326E,\n\t7057:  0x326F,\n\t7058:  0x3270,\n\t7059:  0x3271,\n\t7060:  0x3272,\n\t7061:  0x3273,\n\t7062:  0x3274,\n\t7063:  0x3275,\n\t7064:  0x3276,\n\t7065:  0x3277,\n\t7066:  0x3278,\n\t7067:  0x3279,\n\t7068:  0x327A,\n\t7069:  0x327B,\n\t7070:  0x24D0,\n\t7071:  0x24D1,\n\t7072:  0x24D2,\n\t7073:  0x24D3,\n\t7074:  0x24D4,\n\t7075:  0x24D5,\n\t7076:  0x24D6,\n\t7077:  0x24D7,\n\t7078:  0x24D8,\n\t7079:  0x24D9,\n\t7080:  0x24DA,\n\t7081:  0x24DB,\n\t7082:  0x24DC,\n\t7083:  0x24DD,\n\t7084:  0x24DE,\n\t7085:  0x24DF,\n\t7086:  0x24E0,\n\t7087:  0x24E1,\n\t7088:  0x24E2,\n\t7089:  0x24E3,\n\t7090:  0x24E4,\n\t7091:  0x24E5,\n\t7092:  0x24E6,\n\t7093:  0x24E7,\n\t7094:  0x24E8,\n\t7095:  0x24E9,\n\t7096:  0x2460,\n\t7097:  0x2461,\n\t7098:  0x2462,\n\t7099:  0x2463,\n\t7100:  0x2464,\n\t7101:  0x2465,\n\t7102:  0x2466,\n\t7103:  0x2467,\n\t7104:  0x2468,\n\t7105:  0x2469,\n\t7106:  0x246A,\n\t7107:  0x246B,\n\t7108:  0x246C,\n\t7109:  0x246D,\n\t7110:  0x246E,\n\t7111:  0x00BD,\n\t7112:  0x2153,\n\t7113:  0x2154,\n\t7114:  0x00BC,\n\t7115:  0x00BE,\n\t7116:  0x215B,\n\t7117:  0x215C,\n\t7118:  0x215D,\n\t7119:  0x215E,\n\t7120:  0xCBC5,\n\t7121:  0xCBC6,\n\t7122:  0xCBC7,\n\t7123:  0xCBC8,\n\t7124:  0xCBC9,\n\t7125:  0xCBCA,\n\t7126:  0xCBCB,\n\t7127:  0xCBCC,\n\t7128:  0xCBCD,\n\t7129:  0xCBCE,\n\t7130:  0xCBCF,\n\t7131:  0xCBD0,\n\t7132:  0xCBD1,\n\t7133:  0xCBD2,\n\t7134:  0xCBD3,\n\t7135:  0xCBD5,\n\t7136:  0xCBD6,\n\t7137:  0xCBD7,\n\t7138:  0xCBD8,\n\t7139:  0xCBD9,\n\t7140:  0xCBDA,\n\t7141:  0xCBDB,\n\t7142:  0xCBDC,\n\t7143:  0xCBDD,\n\t7144:  0xCBDE,\n\t7145:  0xCBDF,\n\t7146:  0xCBE0,\n\t7147:  0xCBE1,\n\t7148:  0xCBE2,\n\t7149:  0xCBE3,\n\t7150:  0xCBE5,\n\t7151:  0xCBE6,\n\t7152:  0xCBE8,\n\t7153:  0xCBEA,\n\t7154:  0xCBEB,\n\t7155:  0xCBEC,\n\t7156:  0xCBED,\n\t7157:  0xCBEE,\n\t7158:  0xCBEF,\n\t7159:  0xCBF0,\n\t7160:  0xCBF1,\n\t7161:  0xCBF2,\n\t7162:  0xCBF3,\n\t7163:  0xCBF4,\n\t7164:  0xCBF5,\n\t7165:  0xCBF6,\n\t7166:  0xCBF7,\n\t7167:  0xCBF8,\n\t7168:  0xCBF9,\n\t7169:  0xCBFA,\n\t7170:  0xCBFB,\n\t7171:  0xCBFC,\n\t7172:  0xCBFD,\n\t7173:  0xCBFE,\n\t7174:  0xCBFF,\n\t7175:  0xCC00,\n\t7176:  0xCC01,\n\t7177:  0xCC02,\n\t7178:  0xCC03,\n\t7179:  0xCC04,\n\t7180:  0xCC05,\n\t7181:  0xCC06,\n\t7182:  0xCC07,\n\t7183:  0xCC08,\n\t7184:  0xCC09,\n\t7185:  0xCC0A,\n\t7186:  0xCC0B,\n\t7187:  0xCC0E,\n\t7188:  0xCC0F,\n\t7189:  0xCC11,\n\t7190:  0xCC12,\n\t7191:  0xCC13,\n\t7192:  0xCC15,\n\t7193:  0xCC16,\n\t7194:  0xCC17,\n\t7195:  0xCC18,\n\t7196:  0xCC19,\n\t7197:  0xCC1A,\n\t7198:  0xCC1B,\n\t7199:  0xCC1E,\n\t7200:  0xCC1F,\n\t7201:  0xCC20,\n\t7202:  0xCC23,\n\t7203:  0xCC24,\n\t7204:  0x00E6,\n\t7205:  0x0111,\n\t7206:  0x00F0,\n\t7207:  0x0127,\n\t7208:  0x0131,\n\t7209:  0x0133,\n\t7210:  0x0138,\n\t7211:  0x0140,\n\t7212:  0x0142,\n\t7213:  0x00F8,\n\t7214:  0x0153,\n\t7215:  0x00DF,\n\t7216:  0x00FE,\n\t7217:  0x0167,\n\t7218:  0x014B,\n\t7219:  0x0149,\n\t7220:  0x3200,\n\t7221:  0x3201,\n\t7222:  0x3202,\n\t7223:  0x3203,\n\t7224:  0x3204,\n\t7225:  0x3205,\n\t7226:  0x3206,\n\t7227:  0x3207,\n\t7228:  0x3208,\n\t7229:  0x3209,\n\t7230:  0x320A,\n\t7231:  0x320B,\n\t7232:  0x320C,\n\t7233:  0x320D,\n\t7234:  0x320E,\n\t7235:  0x320F,\n\t7236:  0x3210,\n\t7237:  0x3211,\n\t7238:  0x3212,\n\t7239:  0x3213,\n\t7240:  0x3214,\n\t7241:  0x3215,\n\t7242:  0x3216,\n\t7243:  0x3217,\n\t7244:  0x3218,\n\t7245:  0x3219,\n\t7246:  0x321A,\n\t7247:  0x321B,\n\t7248:  0x249C,\n\t7249:  0x249D,\n\t7250:  0x249E,\n\t7251:  0x249F,\n\t7252:  0x24A0,\n\t7253:  0x24A1,\n\t7254:  0x24A2,\n\t7255:  0x24A3,\n\t7256:  0x24A4,\n\t7257:  0x24A5,\n\t7258:  0x24A6,\n\t7259:  0x24A7,\n\t7260:  0x24A8,\n\t7261:  0x24A9,\n\t7262:  0x24AA,\n\t7263:  0x24AB,\n\t7264:  0x24AC,\n\t7265:  0x24AD,\n\t7266:  0x24AE,\n\t7267:  0x24AF,\n\t7268:  0x24B0,\n\t7269:  0x24B1,\n\t7270:  0x24B2,\n\t7271:  0x24B3,\n\t7272:  0x24B4,\n\t7273:  0x24B5,\n\t7274:  0x2474,\n\t7275:  0x2475,\n\t7276:  0x2476,\n\t7277:  0x2477,\n\t7278:  0x2478,\n\t7279:  0x2479,\n\t7280:  0x247A,\n\t7281:  0x247B,\n\t7282:  0x247C,\n\t7283:  0x247D,\n\t7284:  0x247E,\n\t7285:  0x247F,\n\t7286:  0x2480,\n\t7287:  0x2481,\n\t7288:  0x2482,\n\t7289:  0x00B9,\n\t7290:  0x00B2,\n\t7291:  0x00B3,\n\t7292:  0x2074,\n\t7293:  0x207F,\n\t7294:  0x2081,\n\t7295:  0x2082,\n\t7296:  0x2083,\n\t7297:  0x2084,\n\t7298:  0xCC25,\n\t7299:  0xCC26,\n\t7300:  0xCC2A,\n\t7301:  0xCC2B,\n\t7302:  0xCC2D,\n\t7303:  0xCC2F,\n\t7304:  0xCC31,\n\t7305:  0xCC32,\n\t7306:  0xCC33,\n\t7307:  0xCC34,\n\t7308:  0xCC35,\n\t7309:  0xCC36,\n\t7310:  0xCC37,\n\t7311:  0xCC3A,\n\t7312:  0xCC3F,\n\t7313:  0xCC40,\n\t7314:  0xCC41,\n\t7315:  0xCC42,\n\t7316:  0xCC43,\n\t7317:  0xCC46,\n\t7318:  0xCC47,\n\t7319:  0xCC49,\n\t7320:  0xCC4A,\n\t7321:  0xCC4B,\n\t7322:  0xCC4D,\n\t7323:  0xCC4E,\n\t7324:  0xCC4F,\n\t7325:  0xCC50,\n\t7326:  0xCC51,\n\t7327:  0xCC52,\n\t7328:  0xCC53,\n\t7329:  0xCC56,\n\t7330:  0xCC5A,\n\t7331:  0xCC5B,\n\t7332:  0xCC5C,\n\t7333:  0xCC5D,\n\t7334:  0xCC5E,\n\t7335:  0xCC5F,\n\t7336:  0xCC61,\n\t7337:  0xCC62,\n\t7338:  0xCC63,\n\t7339:  0xCC65,\n\t7340:  0xCC67,\n\t7341:  0xCC69,\n\t7342:  0xCC6A,\n\t7343:  0xCC6B,\n\t7344:  0xCC6C,\n\t7345:  0xCC6D,\n\t7346:  0xCC6E,\n\t7347:  0xCC6F,\n\t7348:  0xCC71,\n\t7349:  0xCC72,\n\t7350:  0xCC73,\n\t7351:  0xCC74,\n\t7352:  0xCC76,\n\t7353:  0xCC77,\n\t7354:  0xCC78,\n\t7355:  0xCC79,\n\t7356:  0xCC7A,\n\t7357:  0xCC7B,\n\t7358:  0xCC7C,\n\t7359:  0xCC7D,\n\t7360:  0xCC7E,\n\t7361:  0xCC7F,\n\t7362:  0xCC80,\n\t7363:  0xCC81,\n\t7364:  0xCC82,\n\t7365:  0xCC83,\n\t7366:  0xCC84,\n\t7367:  0xCC85,\n\t7368:  0xCC86,\n\t7369:  0xCC87,\n\t7370:  0xCC88,\n\t7371:  0xCC89,\n\t7372:  0xCC8A,\n\t7373:  0xCC8B,\n\t7374:  0xCC8C,\n\t7375:  0xCC8D,\n\t7376:  0xCC8E,\n\t7377:  0xCC8F,\n\t7378:  0xCC90,\n\t7379:  0xCC91,\n\t7380:  0xCC92,\n\t7381:  0xCC93,\n\t7382:  0x3041,\n\t7383:  0x3042,\n\t7384:  0x3043,\n\t7385:  0x3044,\n\t7386:  0x3045,\n\t7387:  0x3046,\n\t7388:  0x3047,\n\t7389:  0x3048,\n\t7390:  0x3049,\n\t7391:  0x304A,\n\t7392:  0x304B,\n\t7393:  0x304C,\n\t7394:  0x304D,\n\t7395:  0x304E,\n\t7396:  0x304F,\n\t7397:  0x3050,\n\t7398:  0x3051,\n\t7399:  0x3052,\n\t7400:  0x3053,\n\t7401:  0x3054,\n\t7402:  0x3055,\n\t7403:  0x3056,\n\t7404:  0x3057,\n\t7405:  0x3058,\n\t7406:  0x3059,\n\t7407:  0x305A,\n\t7408:  0x305B,\n\t7409:  0x305C,\n\t7410:  0x305D,\n\t7411:  0x305E,\n\t7412:  0x305F,\n\t7413:  0x3060,\n\t7414:  0x3061,\n\t7415:  0x3062,\n\t7416:  0x3063,\n\t7417:  0x3064,\n\t7418:  0x3065,\n\t7419:  0x3066,\n\t7420:  0x3067,\n\t7421:  0x3068,\n\t7422:  0x3069,\n\t7423:  0x306A,\n\t7424:  0x306B,\n\t7425:  0x306C,\n\t7426:  0x306D,\n\t7427:  0x306E,\n\t7428:  0x306F,\n\t7429:  0x3070,\n\t7430:  0x3071,\n\t7431:  0x3072,\n\t7432:  0x3073,\n\t7433:  0x3074,\n\t7434:  0x3075,\n\t7435:  0x3076,\n\t7436:  0x3077,\n\t7437:  0x3078,\n\t7438:  0x3079,\n\t7439:  0x307A,\n\t7440:  0x307B,\n\t7441:  0x307C,\n\t7442:  0x307D,\n\t7443:  0x307E,\n\t7444:  0x307F,\n\t7445:  0x3080,\n\t7446:  0x3081,\n\t7447:  0x3082,\n\t7448:  0x3083,\n\t7449:  0x3084,\n\t7450:  0x3085,\n\t7451:  0x3086,\n\t7452:  0x3087,\n\t7453:  0x3088,\n\t7454:  0x3089,\n\t7455:  0x308A,\n\t7456:  0x308B,\n\t7457:  0x308C,\n\t7458:  0x308D,\n\t7459:  0x308E,\n\t7460:  0x308F,\n\t7461:  0x3090,\n\t7462:  0x3091,\n\t7463:  0x3092,\n\t7464:  0x3093,\n\t7476:  0xCC94,\n\t7477:  0xCC95,\n\t7478:  0xCC96,\n\t7479:  0xCC97,\n\t7480:  0xCC9A,\n\t7481:  0xCC9B,\n\t7482:  0xCC9D,\n\t7483:  0xCC9E,\n\t7484:  0xCC9F,\n\t7485:  0xCCA1,\n\t7486:  0xCCA2,\n\t7487:  0xCCA3,\n\t7488:  0xCCA4,\n\t7489:  0xCCA5,\n\t7490:  0xCCA6,\n\t7491:  0xCCA7,\n\t7492:  0xCCAA,\n\t7493:  0xCCAE,\n\t7494:  0xCCAF,\n\t7495:  0xCCB0,\n\t7496:  0xCCB1,\n\t7497:  0xCCB2,\n\t7498:  0xCCB3,\n\t7499:  0xCCB6,\n\t7500:  0xCCB7,\n\t7501:  0xCCB9,\n\t7502:  0xCCBA,\n\t7503:  0xCCBB,\n\t7504:  0xCCBD,\n\t7505:  0xCCBE,\n\t7506:  0xCCBF,\n\t7507:  0xCCC0,\n\t7508:  0xCCC1,\n\t7509:  0xCCC2,\n\t7510:  0xCCC3,\n\t7511:  0xCCC6,\n\t7512:  0xCCC8,\n\t7513:  0xCCCA,\n\t7514:  0xCCCB,\n\t7515:  0xCCCC,\n\t7516:  0xCCCD,\n\t7517:  0xCCCE,\n\t7518:  0xCCCF,\n\t7519:  0xCCD1,\n\t7520:  0xCCD2,\n\t7521:  0xCCD3,\n\t7522:  0xCCD5,\n\t7523:  0xCCD6,\n\t7524:  0xCCD7,\n\t7525:  0xCCD8,\n\t7526:  0xCCD9,\n\t7527:  0xCCDA,\n\t7528:  0xCCDB,\n\t7529:  0xCCDC,\n\t7530:  0xCCDD,\n\t7531:  0xCCDE,\n\t7532:  0xCCDF,\n\t7533:  0xCCE0,\n\t7534:  0xCCE1,\n\t7535:  0xCCE2,\n\t7536:  0xCCE3,\n\t7537:  0xCCE5,\n\t7538:  0xCCE6,\n\t7539:  0xCCE7,\n\t7540:  0xCCE8,\n\t7541:  0xCCE9,\n\t7542:  0xCCEA,\n\t7543:  0xCCEB,\n\t7544:  0xCCED,\n\t7545:  0xCCEE,\n\t7546:  0xCCEF,\n\t7547:  0xCCF1,\n\t7548:  0xCCF2,\n\t7549:  0xCCF3,\n\t7550:  0xCCF4,\n\t7551:  0xCCF5,\n\t7552:  0xCCF6,\n\t7553:  0xCCF7,\n\t7554:  0xCCF8,\n\t7555:  0xCCF9,\n\t7556:  0xCCFA,\n\t7557:  0xCCFB,\n\t7558:  0xCCFC,\n\t7559:  0xCCFD,\n\t7560:  0x30A1,\n\t7561:  0x30A2,\n\t7562:  0x30A3,\n\t7563:  0x30A4,\n\t7564:  0x30A5,\n\t7565:  0x30A6,\n\t7566:  0x30A7,\n\t7567:  0x30A8,\n\t7568:  0x30A9,\n\t7569:  0x30AA,\n\t7570:  0x30AB,\n\t7571:  0x30AC,\n\t7572:  0x30AD,\n\t7573:  0x30AE,\n\t7574:  0x30AF,\n\t7575:  0x30B0,\n\t7576:  0x30B1,\n\t7577:  0x30B2,\n\t7578:  0x30B3,\n\t7579:  0x30B4,\n\t7580:  0x30B5,\n\t7581:  0x30B6,\n\t7582:  0x30B7,\n\t7583:  0x30B8,\n\t7584:  0x30B9,\n\t7585:  0x30BA,\n\t7586:  0x30BB,\n\t7587:  0x30BC,\n\t7588:  0x30BD,\n\t7589:  0x30BE,\n\t7590:  0x30BF,\n\t7591:  0x30C0,\n\t7592:  0x30C1,\n\t7593:  0x30C2,\n\t7594:  0x30C3,\n\t7595:  0x30C4,\n\t7596:  0x30C5,\n\t7597:  0x30C6,\n\t7598:  0x30C7,\n\t7599:  0x30C8,\n\t7600:  0x30C9,\n\t7601:  0x30CA,\n\t7602:  0x30CB,\n\t7603:  0x30CC,\n\t7604:  0x30CD,\n\t7605:  0x30CE,\n\t7606:  0x30CF,\n\t7607:  0x30D0,\n\t7608:  0x30D1,\n\t7609:  0x30D2,\n\t7610:  0x30D3,\n\t7611:  0x30D4,\n\t7612:  0x30D5,\n\t7613:  0x30D6,\n\t7614:  0x30D7,\n\t7615:  0x30D8,\n\t7616:  0x30D9,\n\t7617:  0x30DA,\n\t7618:  0x30DB,\n\t7619:  0x30DC,\n\t7620:  0x30DD,\n\t7621:  0x30DE,\n\t7622:  0x30DF,\n\t7623:  0x30E0,\n\t7624:  0x30E1,\n\t7625:  0x30E2,\n\t7626:  0x30E3,\n\t7627:  0x30E4,\n\t7628:  0x30E5,\n\t7629:  0x30E6,\n\t7630:  0x30E7,\n\t7631:  0x30E8,\n\t7632:  0x30E9,\n\t7633:  0x30EA,\n\t7634:  0x30EB,\n\t7635:  0x30EC,\n\t7636:  0x30ED,\n\t7637:  0x30EE,\n\t7638:  0x30EF,\n\t7639:  0x30F0,\n\t7640:  0x30F1,\n\t7641:  0x30F2,\n\t7642:  0x30F3,\n\t7643:  0x30F4,\n\t7644:  0x30F5,\n\t7645:  0x30F6,\n\t7654:  0xCCFE,\n\t7655:  0xCCFF,\n\t7656:  0xCD00,\n\t7657:  0xCD02,\n\t7658:  0xCD03,\n\t7659:  0xCD04,\n\t7660:  0xCD05,\n\t7661:  0xCD06,\n\t7662:  0xCD07,\n\t7663:  0xCD0A,\n\t7664:  0xCD0B,\n\t7665:  0xCD0D,\n\t7666:  0xCD0E,\n\t7667:  0xCD0F,\n\t7668:  0xCD11,\n\t7669:  0xCD12,\n\t7670:  0xCD13,\n\t7671:  0xCD14,\n\t7672:  0xCD15,\n\t7673:  0xCD16,\n\t7674:  0xCD17,\n\t7675:  0xCD1A,\n\t7676:  0xCD1C,\n\t7677:  0xCD1E,\n\t7678:  0xCD1F,\n\t7679:  0xCD20,\n\t7680:  0xCD21,\n\t7681:  0xCD22,\n\t7682:  0xCD23,\n\t7683:  0xCD25,\n\t7684:  0xCD26,\n\t7685:  0xCD27,\n\t7686:  0xCD29,\n\t7687:  0xCD2A,\n\t7688:  0xCD2B,\n\t7689:  0xCD2D,\n\t7690:  0xCD2E,\n\t7691:  0xCD2F,\n\t7692:  0xCD30,\n\t7693:  0xCD31,\n\t7694:  0xCD32,\n\t7695:  0xCD33,\n\t7696:  0xCD34,\n\t7697:  0xCD35,\n\t7698:  0xCD36,\n\t7699:  0xCD37,\n\t7700:  0xCD38,\n\t7701:  0xCD3A,\n\t7702:  0xCD3B,\n\t7703:  0xCD3C,\n\t7704:  0xCD3D,\n\t7705:  0xCD3E,\n\t7706:  0xCD3F,\n\t7707:  0xCD40,\n\t7708:  0xCD41,\n\t7709:  0xCD42,\n\t7710:  0xCD43,\n\t7711:  0xCD44,\n\t7712:  0xCD45,\n\t7713:  0xCD46,\n\t7714:  0xCD47,\n\t7715:  0xCD48,\n\t7716:  0xCD49,\n\t7717:  0xCD4A,\n\t7718:  0xCD4B,\n\t7719:  0xCD4C,\n\t7720:  0xCD4D,\n\t7721:  0xCD4E,\n\t7722:  0xCD4F,\n\t7723:  0xCD50,\n\t7724:  0xCD51,\n\t7725:  0xCD52,\n\t7726:  0xCD53,\n\t7727:  0xCD54,\n\t7728:  0xCD55,\n\t7729:  0xCD56,\n\t7730:  0xCD57,\n\t7731:  0xCD58,\n\t7732:  0xCD59,\n\t7733:  0xCD5A,\n\t7734:  0xCD5B,\n\t7735:  0xCD5D,\n\t7736:  0xCD5E,\n\t7737:  0xCD5F,\n\t7738:  0x0410,\n\t7739:  0x0411,\n\t7740:  0x0412,\n\t7741:  0x0413,\n\t7742:  0x0414,\n\t7743:  0x0415,\n\t7744:  0x0401,\n\t7745:  0x0416,\n\t7746:  0x0417,\n\t7747:  0x0418,\n\t7748:  0x0419,\n\t7749:  0x041A,\n\t7750:  0x041B,\n\t7751:  0x041C,\n\t7752:  0x041D,\n\t7753:  0x041E,\n\t7754:  0x041F,\n\t7755:  0x0420,\n\t7756:  0x0421,\n\t7757:  0x0422,\n\t7758:  0x0423,\n\t7759:  0x0424,\n\t7760:  0x0425,\n\t7761:  0x0426,\n\t7762:  0x0427,\n\t7763:  0x0428,\n\t7764:  0x0429,\n\t7765:  0x042A,\n\t7766:  0x042B,\n\t7767:  0x042C,\n\t7768:  0x042D,\n\t7769:  0x042E,\n\t7770:  0x042F,\n\t7786:  0x0430,\n\t7787:  0x0431,\n\t7788:  0x0432,\n\t7789:  0x0433,\n\t7790:  0x0434,\n\t7791:  0x0435,\n\t7792:  0x0451,\n\t7793:  0x0436,\n\t7794:  0x0437,\n\t7795:  0x0438,\n\t7796:  0x0439,\n\t7797:  0x043A,\n\t7798:  0x043B,\n\t7799:  0x043C,\n\t7800:  0x043D,\n\t7801:  0x043E,\n\t7802:  0x043F,\n\t7803:  0x0440,\n\t7804:  0x0441,\n\t7805:  0x0442,\n\t7806:  0x0443,\n\t7807:  0x0444,\n\t7808:  0x0445,\n\t7809:  0x0446,\n\t7810:  0x0447,\n\t7811:  0x0448,\n\t7812:  0x0449,\n\t7813:  0x044A,\n\t7814:  0x044B,\n\t7815:  0x044C,\n\t7816:  0x044D,\n\t7817:  0x044E,\n\t7818:  0x044F,\n\t7832:  0xCD61,\n\t7833:  0xCD62,\n\t7834:  0xCD63,\n\t7835:  0xCD65,\n\t7836:  0xCD66,\n\t7837:  0xCD67,\n\t7838:  0xCD68,\n\t7839:  0xCD69,\n\t7840:  0xCD6A,\n\t7841:  0xCD6B,\n\t7842:  0xCD6E,\n\t7843:  0xCD70,\n\t7844:  0xCD72,\n\t7845:  0xCD73,\n\t7846:  0xCD74,\n\t7847:  0xCD75,\n\t7848:  0xCD76,\n\t7849:  0xCD77,\n\t7850:  0xCD79,\n\t7851:  0xCD7A,\n\t7852:  0xCD7B,\n\t7853:  0xCD7C,\n\t7854:  0xCD7D,\n\t7855:  0xCD7E,\n\t7856:  0xCD7F,\n\t7857:  0xCD80,\n\t7858:  0xCD81,\n\t7859:  0xCD82,\n\t7860:  0xCD83,\n\t7861:  0xCD84,\n\t7862:  0xCD85,\n\t7863:  0xCD86,\n\t7864:  0xCD87,\n\t7865:  0xCD89,\n\t7866:  0xCD8A,\n\t7867:  0xCD8B,\n\t7868:  0xCD8C,\n\t7869:  0xCD8D,\n\t7870:  0xCD8E,\n\t7871:  0xCD8F,\n\t7872:  0xCD90,\n\t7873:  0xCD91,\n\t7874:  0xCD92,\n\t7875:  0xCD93,\n\t7876:  0xCD96,\n\t7877:  0xCD97,\n\t7878:  0xCD99,\n\t7879:  0xCD9A,\n\t7880:  0xCD9B,\n\t7881:  0xCD9D,\n\t7882:  0xCD9E,\n\t7883:  0xCD9F,\n\t7884:  0xCDA0,\n\t7885:  0xCDA1,\n\t7886:  0xCDA2,\n\t7887:  0xCDA3,\n\t7888:  0xCDA6,\n\t7889:  0xCDA8,\n\t7890:  0xCDAA,\n\t7891:  0xCDAB,\n\t7892:  0xCDAC,\n\t7893:  0xCDAD,\n\t7894:  0xCDAE,\n\t7895:  0xCDAF,\n\t7896:  0xCDB1,\n\t7897:  0xCDB2,\n\t7898:  0xCDB3,\n\t7899:  0xCDB4,\n\t7900:  0xCDB5,\n\t7901:  0xCDB6,\n\t7902:  0xCDB7,\n\t7903:  0xCDB8,\n\t7904:  0xCDB9,\n\t7905:  0xCDBA,\n\t7906:  0xCDBB,\n\t7907:  0xCDBC,\n\t7908:  0xCDBD,\n\t7909:  0xCDBE,\n\t7910:  0xCDBF,\n\t7911:  0xCDC0,\n\t7912:  0xCDC1,\n\t7913:  0xCDC2,\n\t7914:  0xCDC3,\n\t7915:  0xCDC5,\n\t8010:  0xCDC6,\n\t8011:  0xCDC7,\n\t8012:  0xCDC8,\n\t8013:  0xCDC9,\n\t8014:  0xCDCA,\n\t8015:  0xCDCB,\n\t8016:  0xCDCD,\n\t8017:  0xCDCE,\n\t8018:  0xCDCF,\n\t8019:  0xCDD1,\n\t8020:  0xCDD2,\n\t8021:  0xCDD3,\n\t8022:  0xCDD4,\n\t8023:  0xCDD5,\n\t8024:  0xCDD6,\n\t8025:  0xCDD7,\n\t8026:  0xCDD8,\n\t8027:  0xCDD9,\n\t8028:  0xCDDA,\n\t8029:  0xCDDB,\n\t8030:  0xCDDC,\n\t8031:  0xCDDD,\n\t8032:  0xCDDE,\n\t8033:  0xCDDF,\n\t8034:  0xCDE0,\n\t8035:  0xCDE1,\n\t8036:  0xCDE2,\n\t8037:  0xCDE3,\n\t8038:  0xCDE4,\n\t8039:  0xCDE5,\n\t8040:  0xCDE6,\n\t8041:  0xCDE7,\n\t8042:  0xCDE9,\n\t8043:  0xCDEA,\n\t8044:  0xCDEB,\n\t8045:  0xCDED,\n\t8046:  0xCDEE,\n\t8047:  0xCDEF,\n\t8048:  0xCDF1,\n\t8049:  0xCDF2,\n\t8050:  0xCDF3,\n\t8051:  0xCDF4,\n\t8052:  0xCDF5,\n\t8053:  0xCDF6,\n\t8054:  0xCDF7,\n\t8055:  0xCDFA,\n\t8056:  0xCDFC,\n\t8057:  0xCDFE,\n\t8058:  0xCDFF,\n\t8059:  0xCE00,\n\t8060:  0xCE01,\n\t8061:  0xCE02,\n\t8062:  0xCE03,\n\t8063:  0xCE05,\n\t8064:  0xCE06,\n\t8065:  0xCE07,\n\t8066:  0xCE09,\n\t8067:  0xCE0A,\n\t8068:  0xCE0B,\n\t8069:  0xCE0D,\n\t8070:  0xCE0E,\n\t8071:  0xCE0F,\n\t8072:  0xCE10,\n\t8073:  0xCE11,\n\t8074:  0xCE12,\n\t8075:  0xCE13,\n\t8076:  0xCE15,\n\t8077:  0xCE16,\n\t8078:  0xCE17,\n\t8079:  0xCE18,\n\t8080:  0xCE1A,\n\t8081:  0xCE1B,\n\t8082:  0xCE1C,\n\t8083:  0xCE1D,\n\t8084:  0xCE1E,\n\t8085:  0xCE1F,\n\t8086:  0xCE22,\n\t8087:  0xCE23,\n\t8088:  0xCE25,\n\t8089:  0xCE26,\n\t8090:  0xCE27,\n\t8091:  0xCE29,\n\t8092:  0xCE2A,\n\t8093:  0xCE2B,\n\t8188:  0xCE2C,\n\t8189:  0xCE2D,\n\t8190:  0xCE2E,\n\t8191:  0xCE2F,\n\t8192:  0xCE32,\n\t8193:  0xCE34,\n\t8194:  0xCE36,\n\t8195:  0xCE37,\n\t8196:  0xCE38,\n\t8197:  0xCE39,\n\t8198:  0xCE3A,\n\t8199:  0xCE3B,\n\t8200:  0xCE3C,\n\t8201:  0xCE3D,\n\t8202:  0xCE3E,\n\t8203:  0xCE3F,\n\t8204:  0xCE40,\n\t8205:  0xCE41,\n\t8206:  0xCE42,\n\t8207:  0xCE43,\n\t8208:  0xCE44,\n\t8209:  0xCE45,\n\t8210:  0xCE46,\n\t8211:  0xCE47,\n\t8212:  0xCE48,\n\t8213:  0xCE49,\n\t8214:  0xCE4A,\n\t8215:  0xCE4B,\n\t8216:  0xCE4C,\n\t8217:  0xCE4D,\n\t8218:  0xCE4E,\n\t8219:  0xCE4F,\n\t8220:  0xCE50,\n\t8221:  0xCE51,\n\t8222:  0xCE52,\n\t8223:  0xCE53,\n\t8224:  0xCE54,\n\t8225:  0xCE55,\n\t8226:  0xCE56,\n\t8227:  0xCE57,\n\t8228:  0xCE5A,\n\t8229:  0xCE5B,\n\t8230:  0xCE5D,\n\t8231:  0xCE5E,\n\t8232:  0xCE62,\n\t8233:  0xCE63,\n\t8234:  0xCE64,\n\t8235:  0xCE65,\n\t8236:  0xCE66,\n\t8237:  0xCE67,\n\t8238:  0xCE6A,\n\t8239:  0xCE6C,\n\t8240:  0xCE6E,\n\t8241:  0xCE6F,\n\t8242:  0xCE70,\n\t8243:  0xCE71,\n\t8244:  0xCE72,\n\t8245:  0xCE73,\n\t8246:  0xCE76,\n\t8247:  0xCE77,\n\t8248:  0xCE79,\n\t8249:  0xCE7A,\n\t8250:  0xCE7B,\n\t8251:  0xCE7D,\n\t8252:  0xCE7E,\n\t8253:  0xCE7F,\n\t8254:  0xCE80,\n\t8255:  0xCE81,\n\t8256:  0xCE82,\n\t8257:  0xCE83,\n\t8258:  0xCE86,\n\t8259:  0xCE88,\n\t8260:  0xCE8A,\n\t8261:  0xCE8B,\n\t8262:  0xCE8C,\n\t8263:  0xCE8D,\n\t8264:  0xCE8E,\n\t8265:  0xCE8F,\n\t8266:  0xCE92,\n\t8267:  0xCE93,\n\t8268:  0xCE95,\n\t8269:  0xCE96,\n\t8270:  0xCE97,\n\t8271:  0xCE99,\n\t8366:  0xCE9A,\n\t8367:  0xCE9B,\n\t8368:  0xCE9C,\n\t8369:  0xCE9D,\n\t8370:  0xCE9E,\n\t8371:  0xCE9F,\n\t8372:  0xCEA2,\n\t8373:  0xCEA6,\n\t8374:  0xCEA7,\n\t8375:  0xCEA8,\n\t8376:  0xCEA9,\n\t8377:  0xCEAA,\n\t8378:  0xCEAB,\n\t8379:  0xCEAE,\n\t8380:  0xCEAF,\n\t8381:  0xCEB0,\n\t8382:  0xCEB1,\n\t8383:  0xCEB2,\n\t8384:  0xCEB3,\n\t8385:  0xCEB4,\n\t8386:  0xCEB5,\n\t8387:  0xCEB6,\n\t8388:  0xCEB7,\n\t8389:  0xCEB8,\n\t8390:  0xCEB9,\n\t8391:  0xCEBA,\n\t8392:  0xCEBB,\n\t8393:  0xCEBC,\n\t8394:  0xCEBD,\n\t8395:  0xCEBE,\n\t8396:  0xCEBF,\n\t8397:  0xCEC0,\n\t8398:  0xCEC2,\n\t8399:  0xCEC3,\n\t8400:  0xCEC4,\n\t8401:  0xCEC5,\n\t8402:  0xCEC6,\n\t8403:  0xCEC7,\n\t8404:  0xCEC8,\n\t8405:  0xCEC9,\n\t8406:  0xCECA,\n\t8407:  0xCECB,\n\t8408:  0xCECC,\n\t8409:  0xCECD,\n\t8410:  0xCECE,\n\t8411:  0xCECF,\n\t8412:  0xCED0,\n\t8413:  0xCED1,\n\t8414:  0xCED2,\n\t8415:  0xCED3,\n\t8416:  0xCED4,\n\t8417:  0xCED5,\n\t8418:  0xCED6,\n\t8419:  0xCED7,\n\t8420:  0xCED8,\n\t8421:  0xCED9,\n\t8422:  0xCEDA,\n\t8423:  0xCEDB,\n\t8424:  0xCEDC,\n\t8425:  0xCEDD,\n\t8426:  0xCEDE,\n\t8427:  0xCEDF,\n\t8428:  0xCEE0,\n\t8429:  0xCEE1,\n\t8430:  0xCEE2,\n\t8431:  0xCEE3,\n\t8432:  0xCEE6,\n\t8433:  0xCEE7,\n\t8434:  0xCEE9,\n\t8435:  0xCEEA,\n\t8436:  0xCEED,\n\t8437:  0xCEEE,\n\t8438:  0xCEEF,\n\t8439:  0xCEF0,\n\t8440:  0xCEF1,\n\t8441:  0xCEF2,\n\t8442:  0xCEF3,\n\t8443:  0xCEF6,\n\t8444:  0xCEFA,\n\t8445:  0xCEFB,\n\t8446:  0xCEFC,\n\t8447:  0xCEFD,\n\t8448:  0xCEFE,\n\t8449:  0xCEFF,\n\t8450:  0xAC00,\n\t8451:  0xAC01,\n\t8452:  0xAC04,\n\t8453:  0xAC07,\n\t8454:  0xAC08,\n\t8455:  0xAC09,\n\t8456:  0xAC0A,\n\t8457:  0xAC10,\n\t8458:  0xAC11,\n\t8459:  0xAC12,\n\t8460:  0xAC13,\n\t8461:  0xAC14,\n\t8462:  0xAC15,\n\t8463:  0xAC16,\n\t8464:  0xAC17,\n\t8465:  0xAC19,\n\t8466:  0xAC1A,\n\t8467:  0xAC1B,\n\t8468:  0xAC1C,\n\t8469:  0xAC1D,\n\t8470:  0xAC20,\n\t8471:  0xAC24,\n\t8472:  0xAC2C,\n\t8473:  0xAC2D,\n\t8474:  0xAC2F,\n\t8475:  0xAC30,\n\t8476:  0xAC31,\n\t8477:  0xAC38,\n\t8478:  0xAC39,\n\t8479:  0xAC3C,\n\t8480:  0xAC40,\n\t8481:  0xAC4B,\n\t8482:  0xAC4D,\n\t8483:  0xAC54,\n\t8484:  0xAC58,\n\t8485:  0xAC5C,\n\t8486:  0xAC70,\n\t8487:  0xAC71,\n\t8488:  0xAC74,\n\t8489:  0xAC77,\n\t8490:  0xAC78,\n\t8491:  0xAC7A,\n\t8492:  0xAC80,\n\t8493:  0xAC81,\n\t8494:  0xAC83,\n\t8495:  0xAC84,\n\t8496:  0xAC85,\n\t8497:  0xAC86,\n\t8498:  0xAC89,\n\t8499:  0xAC8A,\n\t8500:  0xAC8B,\n\t8501:  0xAC8C,\n\t8502:  0xAC90,\n\t8503:  0xAC94,\n\t8504:  0xAC9C,\n\t8505:  0xAC9D,\n\t8506:  0xAC9F,\n\t8507:  0xACA0,\n\t8508:  0xACA1,\n\t8509:  0xACA8,\n\t8510:  0xACA9,\n\t8511:  0xACAA,\n\t8512:  0xACAC,\n\t8513:  0xACAF,\n\t8514:  0xACB0,\n\t8515:  0xACB8,\n\t8516:  0xACB9,\n\t8517:  0xACBB,\n\t8518:  0xACBC,\n\t8519:  0xACBD,\n\t8520:  0xACC1,\n\t8521:  0xACC4,\n\t8522:  0xACC8,\n\t8523:  0xACCC,\n\t8524:  0xACD5,\n\t8525:  0xACD7,\n\t8526:  0xACE0,\n\t8527:  0xACE1,\n\t8528:  0xACE4,\n\t8529:  0xACE7,\n\t8530:  0xACE8,\n\t8531:  0xACEA,\n\t8532:  0xACEC,\n\t8533:  0xACEF,\n\t8534:  0xACF0,\n\t8535:  0xACF1,\n\t8536:  0xACF3,\n\t8537:  0xACF5,\n\t8538:  0xACF6,\n\t8539:  0xACFC,\n\t8540:  0xACFD,\n\t8541:  0xAD00,\n\t8542:  0xAD04,\n\t8543:  0xAD06,\n\t8544:  0xCF02,\n\t8545:  0xCF03,\n\t8546:  0xCF05,\n\t8547:  0xCF06,\n\t8548:  0xCF07,\n\t8549:  0xCF09,\n\t8550:  0xCF0A,\n\t8551:  0xCF0B,\n\t8552:  0xCF0C,\n\t8553:  0xCF0D,\n\t8554:  0xCF0E,\n\t8555:  0xCF0F,\n\t8556:  0xCF12,\n\t8557:  0xCF14,\n\t8558:  0xCF16,\n\t8559:  0xCF17,\n\t8560:  0xCF18,\n\t8561:  0xCF19,\n\t8562:  0xCF1A,\n\t8563:  0xCF1B,\n\t8564:  0xCF1D,\n\t8565:  0xCF1E,\n\t8566:  0xCF1F,\n\t8567:  0xCF21,\n\t8568:  0xCF22,\n\t8569:  0xCF23,\n\t8570:  0xCF25,\n\t8571:  0xCF26,\n\t8572:  0xCF27,\n\t8573:  0xCF28,\n\t8574:  0xCF29,\n\t8575:  0xCF2A,\n\t8576:  0xCF2B,\n\t8577:  0xCF2E,\n\t8578:  0xCF32,\n\t8579:  0xCF33,\n\t8580:  0xCF34,\n\t8581:  0xCF35,\n\t8582:  0xCF36,\n\t8583:  0xCF37,\n\t8584:  0xCF39,\n\t8585:  0xCF3A,\n\t8586:  0xCF3B,\n\t8587:  0xCF3C,\n\t8588:  0xCF3D,\n\t8589:  0xCF3E,\n\t8590:  0xCF3F,\n\t8591:  0xCF40,\n\t8592:  0xCF41,\n\t8593:  0xCF42,\n\t8594:  0xCF43,\n\t8595:  0xCF44,\n\t8596:  0xCF45,\n\t8597:  0xCF46,\n\t8598:  0xCF47,\n\t8599:  0xCF48,\n\t8600:  0xCF49,\n\t8601:  0xCF4A,\n\t8602:  0xCF4B,\n\t8603:  0xCF4C,\n\t8604:  0xCF4D,\n\t8605:  0xCF4E,\n\t8606:  0xCF4F,\n\t8607:  0xCF50,\n\t8608:  0xCF51,\n\t8609:  0xCF52,\n\t8610:  0xCF53,\n\t8611:  0xCF56,\n\t8612:  0xCF57,\n\t8613:  0xCF59,\n\t8614:  0xCF5A,\n\t8615:  0xCF5B,\n\t8616:  0xCF5D,\n\t8617:  0xCF5E,\n\t8618:  0xCF5F,\n\t8619:  0xCF60,\n\t8620:  0xCF61,\n\t8621:  0xCF62,\n\t8622:  0xCF63,\n\t8623:  0xCF66,\n\t8624:  0xCF68,\n\t8625:  0xCF6A,\n\t8626:  0xCF6B,\n\t8627:  0xCF6C,\n\t8628:  0xAD0C,\n\t8629:  0xAD0D,\n\t8630:  0xAD0F,\n\t8631:  0xAD11,\n\t8632:  0xAD18,\n\t8633:  0xAD1C,\n\t8634:  0xAD20,\n\t8635:  0xAD29,\n\t8636:  0xAD2C,\n\t8637:  0xAD2D,\n\t8638:  0xAD34,\n\t8639:  0xAD35,\n\t8640:  0xAD38,\n\t8641:  0xAD3C,\n\t8642:  0xAD44,\n\t8643:  0xAD45,\n\t8644:  0xAD47,\n\t8645:  0xAD49,\n\t8646:  0xAD50,\n\t8647:  0xAD54,\n\t8648:  0xAD58,\n\t8649:  0xAD61,\n\t8650:  0xAD63,\n\t8651:  0xAD6C,\n\t8652:  0xAD6D,\n\t8653:  0xAD70,\n\t8654:  0xAD73,\n\t8655:  0xAD74,\n\t8656:  0xAD75,\n\t8657:  0xAD76,\n\t8658:  0xAD7B,\n\t8659:  0xAD7C,\n\t8660:  0xAD7D,\n\t8661:  0xAD7F,\n\t8662:  0xAD81,\n\t8663:  0xAD82,\n\t8664:  0xAD88,\n\t8665:  0xAD89,\n\t8666:  0xAD8C,\n\t8667:  0xAD90,\n\t8668:  0xAD9C,\n\t8669:  0xAD9D,\n\t8670:  0xADA4,\n\t8671:  0xADB7,\n\t8672:  0xADC0,\n\t8673:  0xADC1,\n\t8674:  0xADC4,\n\t8675:  0xADC8,\n\t8676:  0xADD0,\n\t8677:  0xADD1,\n\t8678:  0xADD3,\n\t8679:  0xADDC,\n\t8680:  0xADE0,\n\t8681:  0xADE4,\n\t8682:  0xADF8,\n\t8683:  0xADF9,\n\t8684:  0xADFC,\n\t8685:  0xADFF,\n\t8686:  0xAE00,\n\t8687:  0xAE01,\n\t8688:  0xAE08,\n\t8689:  0xAE09,\n\t8690:  0xAE0B,\n\t8691:  0xAE0D,\n\t8692:  0xAE14,\n\t8693:  0xAE30,\n\t8694:  0xAE31,\n\t8695:  0xAE34,\n\t8696:  0xAE37,\n\t8697:  0xAE38,\n\t8698:  0xAE3A,\n\t8699:  0xAE40,\n\t8700:  0xAE41,\n\t8701:  0xAE43,\n\t8702:  0xAE45,\n\t8703:  0xAE46,\n\t8704:  0xAE4A,\n\t8705:  0xAE4C,\n\t8706:  0xAE4D,\n\t8707:  0xAE4E,\n\t8708:  0xAE50,\n\t8709:  0xAE54,\n\t8710:  0xAE56,\n\t8711:  0xAE5C,\n\t8712:  0xAE5D,\n\t8713:  0xAE5F,\n\t8714:  0xAE60,\n\t8715:  0xAE61,\n\t8716:  0xAE65,\n\t8717:  0xAE68,\n\t8718:  0xAE69,\n\t8719:  0xAE6C,\n\t8720:  0xAE70,\n\t8721:  0xAE78,\n\t8722:  0xCF6D,\n\t8723:  0xCF6E,\n\t8724:  0xCF6F,\n\t8725:  0xCF72,\n\t8726:  0xCF73,\n\t8727:  0xCF75,\n\t8728:  0xCF76,\n\t8729:  0xCF77,\n\t8730:  0xCF79,\n\t8731:  0xCF7A,\n\t8732:  0xCF7B,\n\t8733:  0xCF7C,\n\t8734:  0xCF7D,\n\t8735:  0xCF7E,\n\t8736:  0xCF7F,\n\t8737:  0xCF81,\n\t8738:  0xCF82,\n\t8739:  0xCF83,\n\t8740:  0xCF84,\n\t8741:  0xCF86,\n\t8742:  0xCF87,\n\t8743:  0xCF88,\n\t8744:  0xCF89,\n\t8745:  0xCF8A,\n\t8746:  0xCF8B,\n\t8747:  0xCF8D,\n\t8748:  0xCF8E,\n\t8749:  0xCF8F,\n\t8750:  0xCF90,\n\t8751:  0xCF91,\n\t8752:  0xCF92,\n\t8753:  0xCF93,\n\t8754:  0xCF94,\n\t8755:  0xCF95,\n\t8756:  0xCF96,\n\t8757:  0xCF97,\n\t8758:  0xCF98,\n\t8759:  0xCF99,\n\t8760:  0xCF9A,\n\t8761:  0xCF9B,\n\t8762:  0xCF9C,\n\t8763:  0xCF9D,\n\t8764:  0xCF9E,\n\t8765:  0xCF9F,\n\t8766:  0xCFA0,\n\t8767:  0xCFA2,\n\t8768:  0xCFA3,\n\t8769:  0xCFA4,\n\t8770:  0xCFA5,\n\t8771:  0xCFA6,\n\t8772:  0xCFA7,\n\t8773:  0xCFA9,\n\t8774:  0xCFAA,\n\t8775:  0xCFAB,\n\t8776:  0xCFAC,\n\t8777:  0xCFAD,\n\t8778:  0xCFAE,\n\t8779:  0xCFAF,\n\t8780:  0xCFB1,\n\t8781:  0xCFB2,\n\t8782:  0xCFB3,\n\t8783:  0xCFB4,\n\t8784:  0xCFB5,\n\t8785:  0xCFB6,\n\t8786:  0xCFB7,\n\t8787:  0xCFB8,\n\t8788:  0xCFB9,\n\t8789:  0xCFBA,\n\t8790:  0xCFBB,\n\t8791:  0xCFBC,\n\t8792:  0xCFBD,\n\t8793:  0xCFBE,\n\t8794:  0xCFBF,\n\t8795:  0xCFC0,\n\t8796:  0xCFC1,\n\t8797:  0xCFC2,\n\t8798:  0xCFC3,\n\t8799:  0xCFC5,\n\t8800:  0xCFC6,\n\t8801:  0xCFC7,\n\t8802:  0xCFC8,\n\t8803:  0xCFC9,\n\t8804:  0xCFCA,\n\t8805:  0xCFCB,\n\t8806:  0xAE79,\n\t8807:  0xAE7B,\n\t8808:  0xAE7C,\n\t8809:  0xAE7D,\n\t8810:  0xAE84,\n\t8811:  0xAE85,\n\t8812:  0xAE8C,\n\t8813:  0xAEBC,\n\t8814:  0xAEBD,\n\t8815:  0xAEBE,\n\t8816:  0xAEC0,\n\t8817:  0xAEC4,\n\t8818:  0xAECC,\n\t8819:  0xAECD,\n\t8820:  0xAECF,\n\t8821:  0xAED0,\n\t8822:  0xAED1,\n\t8823:  0xAED8,\n\t8824:  0xAED9,\n\t8825:  0xAEDC,\n\t8826:  0xAEE8,\n\t8827:  0xAEEB,\n\t8828:  0xAEED,\n\t8829:  0xAEF4,\n\t8830:  0xAEF8,\n\t8831:  0xAEFC,\n\t8832:  0xAF07,\n\t8833:  0xAF08,\n\t8834:  0xAF0D,\n\t8835:  0xAF10,\n\t8836:  0xAF2C,\n\t8837:  0xAF2D,\n\t8838:  0xAF30,\n\t8839:  0xAF32,\n\t8840:  0xAF34,\n\t8841:  0xAF3C,\n\t8842:  0xAF3D,\n\t8843:  0xAF3F,\n\t8844:  0xAF41,\n\t8845:  0xAF42,\n\t8846:  0xAF43,\n\t8847:  0xAF48,\n\t8848:  0xAF49,\n\t8849:  0xAF50,\n\t8850:  0xAF5C,\n\t8851:  0xAF5D,\n\t8852:  0xAF64,\n\t8853:  0xAF65,\n\t8854:  0xAF79,\n\t8855:  0xAF80,\n\t8856:  0xAF84,\n\t8857:  0xAF88,\n\t8858:  0xAF90,\n\t8859:  0xAF91,\n\t8860:  0xAF95,\n\t8861:  0xAF9C,\n\t8862:  0xAFB8,\n\t8863:  0xAFB9,\n\t8864:  0xAFBC,\n\t8865:  0xAFC0,\n\t8866:  0xAFC7,\n\t8867:  0xAFC8,\n\t8868:  0xAFC9,\n\t8869:  0xAFCB,\n\t8870:  0xAFCD,\n\t8871:  0xAFCE,\n\t8872:  0xAFD4,\n\t8873:  0xAFDC,\n\t8874:  0xAFE8,\n\t8875:  0xAFE9,\n\t8876:  0xAFF0,\n\t8877:  0xAFF1,\n\t8878:  0xAFF4,\n\t8879:  0xAFF8,\n\t8880:  0xB000,\n\t8881:  0xB001,\n\t8882:  0xB004,\n\t8883:  0xB00C,\n\t8884:  0xB010,\n\t8885:  0xB014,\n\t8886:  0xB01C,\n\t8887:  0xB01D,\n\t8888:  0xB028,\n\t8889:  0xB044,\n\t8890:  0xB045,\n\t8891:  0xB048,\n\t8892:  0xB04A,\n\t8893:  0xB04C,\n\t8894:  0xB04E,\n\t8895:  0xB053,\n\t8896:  0xB054,\n\t8897:  0xB055,\n\t8898:  0xB057,\n\t8899:  0xB059,\n\t8900:  0xCFCC,\n\t8901:  0xCFCD,\n\t8902:  0xCFCE,\n\t8903:  0xCFCF,\n\t8904:  0xCFD0,\n\t8905:  0xCFD1,\n\t8906:  0xCFD2,\n\t8907:  0xCFD3,\n\t8908:  0xCFD4,\n\t8909:  0xCFD5,\n\t8910:  0xCFD6,\n\t8911:  0xCFD7,\n\t8912:  0xCFD8,\n\t8913:  0xCFD9,\n\t8914:  0xCFDA,\n\t8915:  0xCFDB,\n\t8916:  0xCFDC,\n\t8917:  0xCFDD,\n\t8918:  0xCFDE,\n\t8919:  0xCFDF,\n\t8920:  0xCFE2,\n\t8921:  0xCFE3,\n\t8922:  0xCFE5,\n\t8923:  0xCFE6,\n\t8924:  0xCFE7,\n\t8925:  0xCFE9,\n\t8926:  0xCFEA,\n\t8927:  0xCFEB,\n\t8928:  0xCFEC,\n\t8929:  0xCFED,\n\t8930:  0xCFEE,\n\t8931:  0xCFEF,\n\t8932:  0xCFF2,\n\t8933:  0xCFF4,\n\t8934:  0xCFF6,\n\t8935:  0xCFF7,\n\t8936:  0xCFF8,\n\t8937:  0xCFF9,\n\t8938:  0xCFFA,\n\t8939:  0xCFFB,\n\t8940:  0xCFFD,\n\t8941:  0xCFFE,\n\t8942:  0xCFFF,\n\t8943:  0xD001,\n\t8944:  0xD002,\n\t8945:  0xD003,\n\t8946:  0xD005,\n\t8947:  0xD006,\n\t8948:  0xD007,\n\t8949:  0xD008,\n\t8950:  0xD009,\n\t8951:  0xD00A,\n\t8952:  0xD00B,\n\t8953:  0xD00C,\n\t8954:  0xD00D,\n\t8955:  0xD00E,\n\t8956:  0xD00F,\n\t8957:  0xD010,\n\t8958:  0xD012,\n\t8959:  0xD013,\n\t8960:  0xD014,\n\t8961:  0xD015,\n\t8962:  0xD016,\n\t8963:  0xD017,\n\t8964:  0xD019,\n\t8965:  0xD01A,\n\t8966:  0xD01B,\n\t8967:  0xD01C,\n\t8968:  0xD01D,\n\t8969:  0xD01E,\n\t8970:  0xD01F,\n\t8971:  0xD020,\n\t8972:  0xD021,\n\t8973:  0xD022,\n\t8974:  0xD023,\n\t8975:  0xD024,\n\t8976:  0xD025,\n\t8977:  0xD026,\n\t8978:  0xD027,\n\t8979:  0xD028,\n\t8980:  0xD029,\n\t8981:  0xD02A,\n\t8982:  0xD02B,\n\t8983:  0xD02C,\n\t8984:  0xB05D,\n\t8985:  0xB07C,\n\t8986:  0xB07D,\n\t8987:  0xB080,\n\t8988:  0xB084,\n\t8989:  0xB08C,\n\t8990:  0xB08D,\n\t8991:  0xB08F,\n\t8992:  0xB091,\n\t8993:  0xB098,\n\t8994:  0xB099,\n\t8995:  0xB09A,\n\t8996:  0xB09C,\n\t8997:  0xB09F,\n\t8998:  0xB0A0,\n\t8999:  0xB0A1,\n\t9000:  0xB0A2,\n\t9001:  0xB0A8,\n\t9002:  0xB0A9,\n\t9003:  0xB0AB,\n\t9004:  0xB0AC,\n\t9005:  0xB0AD,\n\t9006:  0xB0AE,\n\t9007:  0xB0AF,\n\t9008:  0xB0B1,\n\t9009:  0xB0B3,\n\t9010:  0xB0B4,\n\t9011:  0xB0B5,\n\t9012:  0xB0B8,\n\t9013:  0xB0BC,\n\t9014:  0xB0C4,\n\t9015:  0xB0C5,\n\t9016:  0xB0C7,\n\t9017:  0xB0C8,\n\t9018:  0xB0C9,\n\t9019:  0xB0D0,\n\t9020:  0xB0D1,\n\t9021:  0xB0D4,\n\t9022:  0xB0D8,\n\t9023:  0xB0E0,\n\t9024:  0xB0E5,\n\t9025:  0xB108,\n\t9026:  0xB109,\n\t9027:  0xB10B,\n\t9028:  0xB10C,\n\t9029:  0xB110,\n\t9030:  0xB112,\n\t9031:  0xB113,\n\t9032:  0xB118,\n\t9033:  0xB119,\n\t9034:  0xB11B,\n\t9035:  0xB11C,\n\t9036:  0xB11D,\n\t9037:  0xB123,\n\t9038:  0xB124,\n\t9039:  0xB125,\n\t9040:  0xB128,\n\t9041:  0xB12C,\n\t9042:  0xB134,\n\t9043:  0xB135,\n\t9044:  0xB137,\n\t9045:  0xB138,\n\t9046:  0xB139,\n\t9047:  0xB140,\n\t9048:  0xB141,\n\t9049:  0xB144,\n\t9050:  0xB148,\n\t9051:  0xB150,\n\t9052:  0xB151,\n\t9053:  0xB154,\n\t9054:  0xB155,\n\t9055:  0xB158,\n\t9056:  0xB15C,\n\t9057:  0xB160,\n\t9058:  0xB178,\n\t9059:  0xB179,\n\t9060:  0xB17C,\n\t9061:  0xB180,\n\t9062:  0xB182,\n\t9063:  0xB188,\n\t9064:  0xB189,\n\t9065:  0xB18B,\n\t9066:  0xB18D,\n\t9067:  0xB192,\n\t9068:  0xB193,\n\t9069:  0xB194,\n\t9070:  0xB198,\n\t9071:  0xB19C,\n\t9072:  0xB1A8,\n\t9073:  0xB1CC,\n\t9074:  0xB1D0,\n\t9075:  0xB1D4,\n\t9076:  0xB1DC,\n\t9077:  0xB1DD,\n\t9078:  0xD02E,\n\t9079:  0xD02F,\n\t9080:  0xD030,\n\t9081:  0xD031,\n\t9082:  0xD032,\n\t9083:  0xD033,\n\t9084:  0xD036,\n\t9085:  0xD037,\n\t9086:  0xD039,\n\t9087:  0xD03A,\n\t9088:  0xD03B,\n\t9089:  0xD03D,\n\t9090:  0xD03E,\n\t9091:  0xD03F,\n\t9092:  0xD040,\n\t9093:  0xD041,\n\t9094:  0xD042,\n\t9095:  0xD043,\n\t9096:  0xD046,\n\t9097:  0xD048,\n\t9098:  0xD04A,\n\t9099:  0xD04B,\n\t9100:  0xD04C,\n\t9101:  0xD04D,\n\t9102:  0xD04E,\n\t9103:  0xD04F,\n\t9104:  0xD051,\n\t9105:  0xD052,\n\t9106:  0xD053,\n\t9107:  0xD055,\n\t9108:  0xD056,\n\t9109:  0xD057,\n\t9110:  0xD059,\n\t9111:  0xD05A,\n\t9112:  0xD05B,\n\t9113:  0xD05C,\n\t9114:  0xD05D,\n\t9115:  0xD05E,\n\t9116:  0xD05F,\n\t9117:  0xD061,\n\t9118:  0xD062,\n\t9119:  0xD063,\n\t9120:  0xD064,\n\t9121:  0xD065,\n\t9122:  0xD066,\n\t9123:  0xD067,\n\t9124:  0xD068,\n\t9125:  0xD069,\n\t9126:  0xD06A,\n\t9127:  0xD06B,\n\t9128:  0xD06E,\n\t9129:  0xD06F,\n\t9130:  0xD071,\n\t9131:  0xD072,\n\t9132:  0xD073,\n\t9133:  0xD075,\n\t9134:  0xD076,\n\t9135:  0xD077,\n\t9136:  0xD078,\n\t9137:  0xD079,\n\t9138:  0xD07A,\n\t9139:  0xD07B,\n\t9140:  0xD07E,\n\t9141:  0xD07F,\n\t9142:  0xD080,\n\t9143:  0xD082,\n\t9144:  0xD083,\n\t9145:  0xD084,\n\t9146:  0xD085,\n\t9147:  0xD086,\n\t9148:  0xD087,\n\t9149:  0xD088,\n\t9150:  0xD089,\n\t9151:  0xD08A,\n\t9152:  0xD08B,\n\t9153:  0xD08C,\n\t9154:  0xD08D,\n\t9155:  0xD08E,\n\t9156:  0xD08F,\n\t9157:  0xD090,\n\t9158:  0xD091,\n\t9159:  0xD092,\n\t9160:  0xD093,\n\t9161:  0xD094,\n\t9162:  0xB1DF,\n\t9163:  0xB1E8,\n\t9164:  0xB1E9,\n\t9165:  0xB1EC,\n\t9166:  0xB1F0,\n\t9167:  0xB1F9,\n\t9168:  0xB1FB,\n\t9169:  0xB1FD,\n\t9170:  0xB204,\n\t9171:  0xB205,\n\t9172:  0xB208,\n\t9173:  0xB20B,\n\t9174:  0xB20C,\n\t9175:  0xB214,\n\t9176:  0xB215,\n\t9177:  0xB217,\n\t9178:  0xB219,\n\t9179:  0xB220,\n\t9180:  0xB234,\n\t9181:  0xB23C,\n\t9182:  0xB258,\n\t9183:  0xB25C,\n\t9184:  0xB260,\n\t9185:  0xB268,\n\t9186:  0xB269,\n\t9187:  0xB274,\n\t9188:  0xB275,\n\t9189:  0xB27C,\n\t9190:  0xB284,\n\t9191:  0xB285,\n\t9192:  0xB289,\n\t9193:  0xB290,\n\t9194:  0xB291,\n\t9195:  0xB294,\n\t9196:  0xB298,\n\t9197:  0xB299,\n\t9198:  0xB29A,\n\t9199:  0xB2A0,\n\t9200:  0xB2A1,\n\t9201:  0xB2A3,\n\t9202:  0xB2A5,\n\t9203:  0xB2A6,\n\t9204:  0xB2AA,\n\t9205:  0xB2AC,\n\t9206:  0xB2B0,\n\t9207:  0xB2B4,\n\t9208:  0xB2C8,\n\t9209:  0xB2C9,\n\t9210:  0xB2CC,\n\t9211:  0xB2D0,\n\t9212:  0xB2D2,\n\t9213:  0xB2D8,\n\t9214:  0xB2D9,\n\t9215:  0xB2DB,\n\t9216:  0xB2DD,\n\t9217:  0xB2E2,\n\t9218:  0xB2E4,\n\t9219:  0xB2E5,\n\t9220:  0xB2E6,\n\t9221:  0xB2E8,\n\t9222:  0xB2EB,\n\t9223:  0xB2EC,\n\t9224:  0xB2ED,\n\t9225:  0xB2EE,\n\t9226:  0xB2EF,\n\t9227:  0xB2F3,\n\t9228:  0xB2F4,\n\t9229:  0xB2F5,\n\t9230:  0xB2F7,\n\t9231:  0xB2F8,\n\t9232:  0xB2F9,\n\t9233:  0xB2FA,\n\t9234:  0xB2FB,\n\t9235:  0xB2FF,\n\t9236:  0xB300,\n\t9237:  0xB301,\n\t9238:  0xB304,\n\t9239:  0xB308,\n\t9240:  0xB310,\n\t9241:  0xB311,\n\t9242:  0xB313,\n\t9243:  0xB314,\n\t9244:  0xB315,\n\t9245:  0xB31C,\n\t9246:  0xB354,\n\t9247:  0xB355,\n\t9248:  0xB356,\n\t9249:  0xB358,\n\t9250:  0xB35B,\n\t9251:  0xB35C,\n\t9252:  0xB35E,\n\t9253:  0xB35F,\n\t9254:  0xB364,\n\t9255:  0xB365,\n\t9256:  0xD095,\n\t9257:  0xD096,\n\t9258:  0xD097,\n\t9259:  0xD098,\n\t9260:  0xD099,\n\t9261:  0xD09A,\n\t9262:  0xD09B,\n\t9263:  0xD09C,\n\t9264:  0xD09D,\n\t9265:  0xD09E,\n\t9266:  0xD09F,\n\t9267:  0xD0A0,\n\t9268:  0xD0A1,\n\t9269:  0xD0A2,\n\t9270:  0xD0A3,\n\t9271:  0xD0A6,\n\t9272:  0xD0A7,\n\t9273:  0xD0A9,\n\t9274:  0xD0AA,\n\t9275:  0xD0AB,\n\t9276:  0xD0AD,\n\t9277:  0xD0AE,\n\t9278:  0xD0AF,\n\t9279:  0xD0B0,\n\t9280:  0xD0B1,\n\t9281:  0xD0B2,\n\t9282:  0xD0B3,\n\t9283:  0xD0B6,\n\t9284:  0xD0B8,\n\t9285:  0xD0BA,\n\t9286:  0xD0BB,\n\t9287:  0xD0BC,\n\t9288:  0xD0BD,\n\t9289:  0xD0BE,\n\t9290:  0xD0BF,\n\t9291:  0xD0C2,\n\t9292:  0xD0C3,\n\t9293:  0xD0C5,\n\t9294:  0xD0C6,\n\t9295:  0xD0C7,\n\t9296:  0xD0CA,\n\t9297:  0xD0CB,\n\t9298:  0xD0CC,\n\t9299:  0xD0CD,\n\t9300:  0xD0CE,\n\t9301:  0xD0CF,\n\t9302:  0xD0D2,\n\t9303:  0xD0D6,\n\t9304:  0xD0D7,\n\t9305:  0xD0D8,\n\t9306:  0xD0D9,\n\t9307:  0xD0DA,\n\t9308:  0xD0DB,\n\t9309:  0xD0DE,\n\t9310:  0xD0DF,\n\t9311:  0xD0E1,\n\t9312:  0xD0E2,\n\t9313:  0xD0E3,\n\t9314:  0xD0E5,\n\t9315:  0xD0E6,\n\t9316:  0xD0E7,\n\t9317:  0xD0E8,\n\t9318:  0xD0E9,\n\t9319:  0xD0EA,\n\t9320:  0xD0EB,\n\t9321:  0xD0EE,\n\t9322:  0xD0F2,\n\t9323:  0xD0F3,\n\t9324:  0xD0F4,\n\t9325:  0xD0F5,\n\t9326:  0xD0F6,\n\t9327:  0xD0F7,\n\t9328:  0xD0F9,\n\t9329:  0xD0FA,\n\t9330:  0xD0FB,\n\t9331:  0xD0FC,\n\t9332:  0xD0FD,\n\t9333:  0xD0FE,\n\t9334:  0xD0FF,\n\t9335:  0xD100,\n\t9336:  0xD101,\n\t9337:  0xD102,\n\t9338:  0xD103,\n\t9339:  0xD104,\n\t9340:  0xB367,\n\t9341:  0xB369,\n\t9342:  0xB36B,\n\t9343:  0xB36E,\n\t9344:  0xB370,\n\t9345:  0xB371,\n\t9346:  0xB374,\n\t9347:  0xB378,\n\t9348:  0xB380,\n\t9349:  0xB381,\n\t9350:  0xB383,\n\t9351:  0xB384,\n\t9352:  0xB385,\n\t9353:  0xB38C,\n\t9354:  0xB390,\n\t9355:  0xB394,\n\t9356:  0xB3A0,\n\t9357:  0xB3A1,\n\t9358:  0xB3A8,\n\t9359:  0xB3AC,\n\t9360:  0xB3C4,\n\t9361:  0xB3C5,\n\t9362:  0xB3C8,\n\t9363:  0xB3CB,\n\t9364:  0xB3CC,\n\t9365:  0xB3CE,\n\t9366:  0xB3D0,\n\t9367:  0xB3D4,\n\t9368:  0xB3D5,\n\t9369:  0xB3D7,\n\t9370:  0xB3D9,\n\t9371:  0xB3DB,\n\t9372:  0xB3DD,\n\t9373:  0xB3E0,\n\t9374:  0xB3E4,\n\t9375:  0xB3E8,\n\t9376:  0xB3FC,\n\t9377:  0xB410,\n\t9378:  0xB418,\n\t9379:  0xB41C,\n\t9380:  0xB420,\n\t9381:  0xB428,\n\t9382:  0xB429,\n\t9383:  0xB42B,\n\t9384:  0xB434,\n\t9385:  0xB450,\n\t9386:  0xB451,\n\t9387:  0xB454,\n\t9388:  0xB458,\n\t9389:  0xB460,\n\t9390:  0xB461,\n\t9391:  0xB463,\n\t9392:  0xB465,\n\t9393:  0xB46C,\n\t9394:  0xB480,\n\t9395:  0xB488,\n\t9396:  0xB49D,\n\t9397:  0xB4A4,\n\t9398:  0xB4A8,\n\t9399:  0xB4AC,\n\t9400:  0xB4B5,\n\t9401:  0xB4B7,\n\t9402:  0xB4B9,\n\t9403:  0xB4C0,\n\t9404:  0xB4C4,\n\t9405:  0xB4C8,\n\t9406:  0xB4D0,\n\t9407:  0xB4D5,\n\t9408:  0xB4DC,\n\t9409:  0xB4DD,\n\t9410:  0xB4E0,\n\t9411:  0xB4E3,\n\t9412:  0xB4E4,\n\t9413:  0xB4E6,\n\t9414:  0xB4EC,\n\t9415:  0xB4ED,\n\t9416:  0xB4EF,\n\t9417:  0xB4F1,\n\t9418:  0xB4F8,\n\t9419:  0xB514,\n\t9420:  0xB515,\n\t9421:  0xB518,\n\t9422:  0xB51B,\n\t9423:  0xB51C,\n\t9424:  0xB524,\n\t9425:  0xB525,\n\t9426:  0xB527,\n\t9427:  0xB528,\n\t9428:  0xB529,\n\t9429:  0xB52A,\n\t9430:  0xB530,\n\t9431:  0xB531,\n\t9432:  0xB534,\n\t9433:  0xB538,\n\t9434:  0xD105,\n\t9435:  0xD106,\n\t9436:  0xD107,\n\t9437:  0xD108,\n\t9438:  0xD109,\n\t9439:  0xD10A,\n\t9440:  0xD10B,\n\t9441:  0xD10C,\n\t9442:  0xD10E,\n\t9443:  0xD10F,\n\t9444:  0xD110,\n\t9445:  0xD111,\n\t9446:  0xD112,\n\t9447:  0xD113,\n\t9448:  0xD114,\n\t9449:  0xD115,\n\t9450:  0xD116,\n\t9451:  0xD117,\n\t9452:  0xD118,\n\t9453:  0xD119,\n\t9454:  0xD11A,\n\t9455:  0xD11B,\n\t9456:  0xD11C,\n\t9457:  0xD11D,\n\t9458:  0xD11E,\n\t9459:  0xD11F,\n\t9460:  0xD120,\n\t9461:  0xD121,\n\t9462:  0xD122,\n\t9463:  0xD123,\n\t9464:  0xD124,\n\t9465:  0xD125,\n\t9466:  0xD126,\n\t9467:  0xD127,\n\t9468:  0xD128,\n\t9469:  0xD129,\n\t9470:  0xD12A,\n\t9471:  0xD12B,\n\t9472:  0xD12C,\n\t9473:  0xD12D,\n\t9474:  0xD12E,\n\t9475:  0xD12F,\n\t9476:  0xD132,\n\t9477:  0xD133,\n\t9478:  0xD135,\n\t9479:  0xD136,\n\t9480:  0xD137,\n\t9481:  0xD139,\n\t9482:  0xD13B,\n\t9483:  0xD13C,\n\t9484:  0xD13D,\n\t9485:  0xD13E,\n\t9486:  0xD13F,\n\t9487:  0xD142,\n\t9488:  0xD146,\n\t9489:  0xD147,\n\t9490:  0xD148,\n\t9491:  0xD149,\n\t9492:  0xD14A,\n\t9493:  0xD14B,\n\t9494:  0xD14E,\n\t9495:  0xD14F,\n\t9496:  0xD151,\n\t9497:  0xD152,\n\t9498:  0xD153,\n\t9499:  0xD155,\n\t9500:  0xD156,\n\t9501:  0xD157,\n\t9502:  0xD158,\n\t9503:  0xD159,\n\t9504:  0xD15A,\n\t9505:  0xD15B,\n\t9506:  0xD15E,\n\t9507:  0xD160,\n\t9508:  0xD162,\n\t9509:  0xD163,\n\t9510:  0xD164,\n\t9511:  0xD165,\n\t9512:  0xD166,\n\t9513:  0xD167,\n\t9514:  0xD169,\n\t9515:  0xD16A,\n\t9516:  0xD16B,\n\t9517:  0xD16D,\n\t9518:  0xB540,\n\t9519:  0xB541,\n\t9520:  0xB543,\n\t9521:  0xB544,\n\t9522:  0xB545,\n\t9523:  0xB54B,\n\t9524:  0xB54C,\n\t9525:  0xB54D,\n\t9526:  0xB550,\n\t9527:  0xB554,\n\t9528:  0xB55C,\n\t9529:  0xB55D,\n\t9530:  0xB55F,\n\t9531:  0xB560,\n\t9532:  0xB561,\n\t9533:  0xB5A0,\n\t9534:  0xB5A1,\n\t9535:  0xB5A4,\n\t9536:  0xB5A8,\n\t9537:  0xB5AA,\n\t9538:  0xB5AB,\n\t9539:  0xB5B0,\n\t9540:  0xB5B1,\n\t9541:  0xB5B3,\n\t9542:  0xB5B4,\n\t9543:  0xB5B5,\n\t9544:  0xB5BB,\n\t9545:  0xB5BC,\n\t9546:  0xB5BD,\n\t9547:  0xB5C0,\n\t9548:  0xB5C4,\n\t9549:  0xB5CC,\n\t9550:  0xB5CD,\n\t9551:  0xB5CF,\n\t9552:  0xB5D0,\n\t9553:  0xB5D1,\n\t9554:  0xB5D8,\n\t9555:  0xB5EC,\n\t9556:  0xB610,\n\t9557:  0xB611,\n\t9558:  0xB614,\n\t9559:  0xB618,\n\t9560:  0xB625,\n\t9561:  0xB62C,\n\t9562:  0xB634,\n\t9563:  0xB648,\n\t9564:  0xB664,\n\t9565:  0xB668,\n\t9566:  0xB69C,\n\t9567:  0xB69D,\n\t9568:  0xB6A0,\n\t9569:  0xB6A4,\n\t9570:  0xB6AB,\n\t9571:  0xB6AC,\n\t9572:  0xB6B1,\n\t9573:  0xB6D4,\n\t9574:  0xB6F0,\n\t9575:  0xB6F4,\n\t9576:  0xB6F8,\n\t9577:  0xB700,\n\t9578:  0xB701,\n\t9579:  0xB705,\n\t9580:  0xB728,\n\t9581:  0xB729,\n\t9582:  0xB72C,\n\t9583:  0xB72F,\n\t9584:  0xB730,\n\t9585:  0xB738,\n\t9586:  0xB739,\n\t9587:  0xB73B,\n\t9588:  0xB744,\n\t9589:  0xB748,\n\t9590:  0xB74C,\n\t9591:  0xB754,\n\t9592:  0xB755,\n\t9593:  0xB760,\n\t9594:  0xB764,\n\t9595:  0xB768,\n\t9596:  0xB770,\n\t9597:  0xB771,\n\t9598:  0xB773,\n\t9599:  0xB775,\n\t9600:  0xB77C,\n\t9601:  0xB77D,\n\t9602:  0xB780,\n\t9603:  0xB784,\n\t9604:  0xB78C,\n\t9605:  0xB78D,\n\t9606:  0xB78F,\n\t9607:  0xB790,\n\t9608:  0xB791,\n\t9609:  0xB792,\n\t9610:  0xB796,\n\t9611:  0xB797,\n\t9612:  0xD16E,\n\t9613:  0xD16F,\n\t9614:  0xD170,\n\t9615:  0xD171,\n\t9616:  0xD172,\n\t9617:  0xD173,\n\t9618:  0xD174,\n\t9619:  0xD175,\n\t9620:  0xD176,\n\t9621:  0xD177,\n\t9622:  0xD178,\n\t9623:  0xD179,\n\t9624:  0xD17A,\n\t9625:  0xD17B,\n\t9626:  0xD17D,\n\t9627:  0xD17E,\n\t9628:  0xD17F,\n\t9629:  0xD180,\n\t9630:  0xD181,\n\t9631:  0xD182,\n\t9632:  0xD183,\n\t9633:  0xD185,\n\t9634:  0xD186,\n\t9635:  0xD187,\n\t9636:  0xD189,\n\t9637:  0xD18A,\n\t9638:  0xD18B,\n\t9639:  0xD18C,\n\t9640:  0xD18D,\n\t9641:  0xD18E,\n\t9642:  0xD18F,\n\t9643:  0xD190,\n\t9644:  0xD191,\n\t9645:  0xD192,\n\t9646:  0xD193,\n\t9647:  0xD194,\n\t9648:  0xD195,\n\t9649:  0xD196,\n\t9650:  0xD197,\n\t9651:  0xD198,\n\t9652:  0xD199,\n\t9653:  0xD19A,\n\t9654:  0xD19B,\n\t9655:  0xD19C,\n\t9656:  0xD19D,\n\t9657:  0xD19E,\n\t9658:  0xD19F,\n\t9659:  0xD1A2,\n\t9660:  0xD1A3,\n\t9661:  0xD1A5,\n\t9662:  0xD1A6,\n\t9663:  0xD1A7,\n\t9664:  0xD1A9,\n\t9665:  0xD1AA,\n\t9666:  0xD1AB,\n\t9667:  0xD1AC,\n\t9668:  0xD1AD,\n\t9669:  0xD1AE,\n\t9670:  0xD1AF,\n\t9671:  0xD1B2,\n\t9672:  0xD1B4,\n\t9673:  0xD1B6,\n\t9674:  0xD1B7,\n\t9675:  0xD1B8,\n\t9676:  0xD1B9,\n\t9677:  0xD1BB,\n\t9678:  0xD1BD,\n\t9679:  0xD1BE,\n\t9680:  0xD1BF,\n\t9681:  0xD1C1,\n\t9682:  0xD1C2,\n\t9683:  0xD1C3,\n\t9684:  0xD1C4,\n\t9685:  0xD1C5,\n\t9686:  0xD1C6,\n\t9687:  0xD1C7,\n\t9688:  0xD1C8,\n\t9689:  0xD1C9,\n\t9690:  0xD1CA,\n\t9691:  0xD1CB,\n\t9692:  0xD1CC,\n\t9693:  0xD1CD,\n\t9694:  0xD1CE,\n\t9695:  0xD1CF,\n\t9696:  0xB798,\n\t9697:  0xB799,\n\t9698:  0xB79C,\n\t9699:  0xB7A0,\n\t9700:  0xB7A8,\n\t9701:  0xB7A9,\n\t9702:  0xB7AB,\n\t9703:  0xB7AC,\n\t9704:  0xB7AD,\n\t9705:  0xB7B4,\n\t9706:  0xB7B5,\n\t9707:  0xB7B8,\n\t9708:  0xB7C7,\n\t9709:  0xB7C9,\n\t9710:  0xB7EC,\n\t9711:  0xB7ED,\n\t9712:  0xB7F0,\n\t9713:  0xB7F4,\n\t9714:  0xB7FC,\n\t9715:  0xB7FD,\n\t9716:  0xB7FF,\n\t9717:  0xB800,\n\t9718:  0xB801,\n\t9719:  0xB807,\n\t9720:  0xB808,\n\t9721:  0xB809,\n\t9722:  0xB80C,\n\t9723:  0xB810,\n\t9724:  0xB818,\n\t9725:  0xB819,\n\t9726:  0xB81B,\n\t9727:  0xB81D,\n\t9728:  0xB824,\n\t9729:  0xB825,\n\t9730:  0xB828,\n\t9731:  0xB82C,\n\t9732:  0xB834,\n\t9733:  0xB835,\n\t9734:  0xB837,\n\t9735:  0xB838,\n\t9736:  0xB839,\n\t9737:  0xB840,\n\t9738:  0xB844,\n\t9739:  0xB851,\n\t9740:  0xB853,\n\t9741:  0xB85C,\n\t9742:  0xB85D,\n\t9743:  0xB860,\n\t9744:  0xB864,\n\t9745:  0xB86C,\n\t9746:  0xB86D,\n\t9747:  0xB86F,\n\t9748:  0xB871,\n\t9749:  0xB878,\n\t9750:  0xB87C,\n\t9751:  0xB88D,\n\t9752:  0xB8A8,\n\t9753:  0xB8B0,\n\t9754:  0xB8B4,\n\t9755:  0xB8B8,\n\t9756:  0xB8C0,\n\t9757:  0xB8C1,\n\t9758:  0xB8C3,\n\t9759:  0xB8C5,\n\t9760:  0xB8CC,\n\t9761:  0xB8D0,\n\t9762:  0xB8D4,\n\t9763:  0xB8DD,\n\t9764:  0xB8DF,\n\t9765:  0xB8E1,\n\t9766:  0xB8E8,\n\t9767:  0xB8E9,\n\t9768:  0xB8EC,\n\t9769:  0xB8F0,\n\t9770:  0xB8F8,\n\t9771:  0xB8F9,\n\t9772:  0xB8FB,\n\t9773:  0xB8FD,\n\t9774:  0xB904,\n\t9775:  0xB918,\n\t9776:  0xB920,\n\t9777:  0xB93C,\n\t9778:  0xB93D,\n\t9779:  0xB940,\n\t9780:  0xB944,\n\t9781:  0xB94C,\n\t9782:  0xB94F,\n\t9783:  0xB951,\n\t9784:  0xB958,\n\t9785:  0xB959,\n\t9786:  0xB95C,\n\t9787:  0xB960,\n\t9788:  0xB968,\n\t9789:  0xB969,\n\t9790:  0xD1D0,\n\t9791:  0xD1D1,\n\t9792:  0xD1D2,\n\t9793:  0xD1D3,\n\t9794:  0xD1D4,\n\t9795:  0xD1D5,\n\t9796:  0xD1D6,\n\t9797:  0xD1D7,\n\t9798:  0xD1D9,\n\t9799:  0xD1DA,\n\t9800:  0xD1DB,\n\t9801:  0xD1DC,\n\t9802:  0xD1DD,\n\t9803:  0xD1DE,\n\t9804:  0xD1DF,\n\t9805:  0xD1E0,\n\t9806:  0xD1E1,\n\t9807:  0xD1E2,\n\t9808:  0xD1E3,\n\t9809:  0xD1E4,\n\t9810:  0xD1E5,\n\t9811:  0xD1E6,\n\t9812:  0xD1E7,\n\t9813:  0xD1E8,\n\t9814:  0xD1E9,\n\t9815:  0xD1EA,\n\t9816:  0xD1EB,\n\t9817:  0xD1EC,\n\t9818:  0xD1ED,\n\t9819:  0xD1EE,\n\t9820:  0xD1EF,\n\t9821:  0xD1F0,\n\t9822:  0xD1F1,\n\t9823:  0xD1F2,\n\t9824:  0xD1F3,\n\t9825:  0xD1F5,\n\t9826:  0xD1F6,\n\t9827:  0xD1F7,\n\t9828:  0xD1F9,\n\t9829:  0xD1FA,\n\t9830:  0xD1FB,\n\t9831:  0xD1FC,\n\t9832:  0xD1FD,\n\t9833:  0xD1FE,\n\t9834:  0xD1FF,\n\t9835:  0xD200,\n\t9836:  0xD201,\n\t9837:  0xD202,\n\t9838:  0xD203,\n\t9839:  0xD204,\n\t9840:  0xD205,\n\t9841:  0xD206,\n\t9842:  0xD208,\n\t9843:  0xD20A,\n\t9844:  0xD20B,\n\t9845:  0xD20C,\n\t9846:  0xD20D,\n\t9847:  0xD20E,\n\t9848:  0xD20F,\n\t9849:  0xD211,\n\t9850:  0xD212,\n\t9851:  0xD213,\n\t9852:  0xD214,\n\t9853:  0xD215,\n\t9854:  0xD216,\n\t9855:  0xD217,\n\t9856:  0xD218,\n\t9857:  0xD219,\n\t9858:  0xD21A,\n\t9859:  0xD21B,\n\t9860:  0xD21C,\n\t9861:  0xD21D,\n\t9862:  0xD21E,\n\t9863:  0xD21F,\n\t9864:  0xD220,\n\t9865:  0xD221,\n\t9866:  0xD222,\n\t9867:  0xD223,\n\t9868:  0xD224,\n\t9869:  0xD225,\n\t9870:  0xD226,\n\t9871:  0xD227,\n\t9872:  0xD228,\n\t9873:  0xD229,\n\t9874:  0xB96B,\n\t9875:  0xB96D,\n\t9876:  0xB974,\n\t9877:  0xB975,\n\t9878:  0xB978,\n\t9879:  0xB97C,\n\t9880:  0xB984,\n\t9881:  0xB985,\n\t9882:  0xB987,\n\t9883:  0xB989,\n\t9884:  0xB98A,\n\t9885:  0xB98D,\n\t9886:  0xB98E,\n\t9887:  0xB9AC,\n\t9888:  0xB9AD,\n\t9889:  0xB9B0,\n\t9890:  0xB9B4,\n\t9891:  0xB9BC,\n\t9892:  0xB9BD,\n\t9893:  0xB9BF,\n\t9894:  0xB9C1,\n\t9895:  0xB9C8,\n\t9896:  0xB9C9,\n\t9897:  0xB9CC,\n\t9898:  0xB9CE,\n\t9899:  0xB9CF,\n\t9900:  0xB9D0,\n\t9901:  0xB9D1,\n\t9902:  0xB9D2,\n\t9903:  0xB9D8,\n\t9904:  0xB9D9,\n\t9905:  0xB9DB,\n\t9906:  0xB9DD,\n\t9907:  0xB9DE,\n\t9908:  0xB9E1,\n\t9909:  0xB9E3,\n\t9910:  0xB9E4,\n\t9911:  0xB9E5,\n\t9912:  0xB9E8,\n\t9913:  0xB9EC,\n\t9914:  0xB9F4,\n\t9915:  0xB9F5,\n\t9916:  0xB9F7,\n\t9917:  0xB9F8,\n\t9918:  0xB9F9,\n\t9919:  0xB9FA,\n\t9920:  0xBA00,\n\t9921:  0xBA01,\n\t9922:  0xBA08,\n\t9923:  0xBA15,\n\t9924:  0xBA38,\n\t9925:  0xBA39,\n\t9926:  0xBA3C,\n\t9927:  0xBA40,\n\t9928:  0xBA42,\n\t9929:  0xBA48,\n\t9930:  0xBA49,\n\t9931:  0xBA4B,\n\t9932:  0xBA4D,\n\t9933:  0xBA4E,\n\t9934:  0xBA53,\n\t9935:  0xBA54,\n\t9936:  0xBA55,\n\t9937:  0xBA58,\n\t9938:  0xBA5C,\n\t9939:  0xBA64,\n\t9940:  0xBA65,\n\t9941:  0xBA67,\n\t9942:  0xBA68,\n\t9943:  0xBA69,\n\t9944:  0xBA70,\n\t9945:  0xBA71,\n\t9946:  0xBA74,\n\t9947:  0xBA78,\n\t9948:  0xBA83,\n\t9949:  0xBA84,\n\t9950:  0xBA85,\n\t9951:  0xBA87,\n\t9952:  0xBA8C,\n\t9953:  0xBAA8,\n\t9954:  0xBAA9,\n\t9955:  0xBAAB,\n\t9956:  0xBAAC,\n\t9957:  0xBAB0,\n\t9958:  0xBAB2,\n\t9959:  0xBAB8,\n\t9960:  0xBAB9,\n\t9961:  0xBABB,\n\t9962:  0xBABD,\n\t9963:  0xBAC4,\n\t9964:  0xBAC8,\n\t9965:  0xBAD8,\n\t9966:  0xBAD9,\n\t9967:  0xBAFC,\n\t9968:  0xD22A,\n\t9969:  0xD22B,\n\t9970:  0xD22E,\n\t9971:  0xD22F,\n\t9972:  0xD231,\n\t9973:  0xD232,\n\t9974:  0xD233,\n\t9975:  0xD235,\n\t9976:  0xD236,\n\t9977:  0xD237,\n\t9978:  0xD238,\n\t9979:  0xD239,\n\t9980:  0xD23A,\n\t9981:  0xD23B,\n\t9982:  0xD23E,\n\t9983:  0xD240,\n\t9984:  0xD242,\n\t9985:  0xD243,\n\t9986:  0xD244,\n\t9987:  0xD245,\n\t9988:  0xD246,\n\t9989:  0xD247,\n\t9990:  0xD249,\n\t9991:  0xD24A,\n\t9992:  0xD24B,\n\t9993:  0xD24C,\n\t9994:  0xD24D,\n\t9995:  0xD24E,\n\t9996:  0xD24F,\n\t9997:  0xD250,\n\t9998:  0xD251,\n\t9999:  0xD252,\n\t10000: 0xD253,\n\t10001: 0xD254,\n\t10002: 0xD255,\n\t10003: 0xD256,\n\t10004: 0xD257,\n\t10005: 0xD258,\n\t10006: 0xD259,\n\t10007: 0xD25A,\n\t10008: 0xD25B,\n\t10009: 0xD25D,\n\t10010: 0xD25E,\n\t10011: 0xD25F,\n\t10012: 0xD260,\n\t10013: 0xD261,\n\t10014: 0xD262,\n\t10015: 0xD263,\n\t10016: 0xD265,\n\t10017: 0xD266,\n\t10018: 0xD267,\n\t10019: 0xD268,\n\t10020: 0xD269,\n\t10021: 0xD26A,\n\t10022: 0xD26B,\n\t10023: 0xD26C,\n\t10024: 0xD26D,\n\t10025: 0xD26E,\n\t10026: 0xD26F,\n\t10027: 0xD270,\n\t10028: 0xD271,\n\t10029: 0xD272,\n\t10030: 0xD273,\n\t10031: 0xD274,\n\t10032: 0xD275,\n\t10033: 0xD276,\n\t10034: 0xD277,\n\t10035: 0xD278,\n\t10036: 0xD279,\n\t10037: 0xD27A,\n\t10038: 0xD27B,\n\t10039: 0xD27C,\n\t10040: 0xD27D,\n\t10041: 0xD27E,\n\t10042: 0xD27F,\n\t10043: 0xD282,\n\t10044: 0xD283,\n\t10045: 0xD285,\n\t10046: 0xD286,\n\t10047: 0xD287,\n\t10048: 0xD289,\n\t10049: 0xD28A,\n\t10050: 0xD28B,\n\t10051: 0xD28C,\n\t10052: 0xBB00,\n\t10053: 0xBB04,\n\t10054: 0xBB0D,\n\t10055: 0xBB0F,\n\t10056: 0xBB11,\n\t10057: 0xBB18,\n\t10058: 0xBB1C,\n\t10059: 0xBB20,\n\t10060: 0xBB29,\n\t10061: 0xBB2B,\n\t10062: 0xBB34,\n\t10063: 0xBB35,\n\t10064: 0xBB36,\n\t10065: 0xBB38,\n\t10066: 0xBB3B,\n\t10067: 0xBB3C,\n\t10068: 0xBB3D,\n\t10069: 0xBB3E,\n\t10070: 0xBB44,\n\t10071: 0xBB45,\n\t10072: 0xBB47,\n\t10073: 0xBB49,\n\t10074: 0xBB4D,\n\t10075: 0xBB4F,\n\t10076: 0xBB50,\n\t10077: 0xBB54,\n\t10078: 0xBB58,\n\t10079: 0xBB61,\n\t10080: 0xBB63,\n\t10081: 0xBB6C,\n\t10082: 0xBB88,\n\t10083: 0xBB8C,\n\t10084: 0xBB90,\n\t10085: 0xBBA4,\n\t10086: 0xBBA8,\n\t10087: 0xBBAC,\n\t10088: 0xBBB4,\n\t10089: 0xBBB7,\n\t10090: 0xBBC0,\n\t10091: 0xBBC4,\n\t10092: 0xBBC8,\n\t10093: 0xBBD0,\n\t10094: 0xBBD3,\n\t10095: 0xBBF8,\n\t10096: 0xBBF9,\n\t10097: 0xBBFC,\n\t10098: 0xBBFF,\n\t10099: 0xBC00,\n\t10100: 0xBC02,\n\t10101: 0xBC08,\n\t10102: 0xBC09,\n\t10103: 0xBC0B,\n\t10104: 0xBC0C,\n\t10105: 0xBC0D,\n\t10106: 0xBC0F,\n\t10107: 0xBC11,\n\t10108: 0xBC14,\n\t10109: 0xBC15,\n\t10110: 0xBC16,\n\t10111: 0xBC17,\n\t10112: 0xBC18,\n\t10113: 0xBC1B,\n\t10114: 0xBC1C,\n\t10115: 0xBC1D,\n\t10116: 0xBC1E,\n\t10117: 0xBC1F,\n\t10118: 0xBC24,\n\t10119: 0xBC25,\n\t10120: 0xBC27,\n\t10121: 0xBC29,\n\t10122: 0xBC2D,\n\t10123: 0xBC30,\n\t10124: 0xBC31,\n\t10125: 0xBC34,\n\t10126: 0xBC38,\n\t10127: 0xBC40,\n\t10128: 0xBC41,\n\t10129: 0xBC43,\n\t10130: 0xBC44,\n\t10131: 0xBC45,\n\t10132: 0xBC49,\n\t10133: 0xBC4C,\n\t10134: 0xBC4D,\n\t10135: 0xBC50,\n\t10136: 0xBC5D,\n\t10137: 0xBC84,\n\t10138: 0xBC85,\n\t10139: 0xBC88,\n\t10140: 0xBC8B,\n\t10141: 0xBC8C,\n\t10142: 0xBC8E,\n\t10143: 0xBC94,\n\t10144: 0xBC95,\n\t10145: 0xBC97,\n\t10146: 0xD28D,\n\t10147: 0xD28E,\n\t10148: 0xD28F,\n\t10149: 0xD292,\n\t10150: 0xD293,\n\t10151: 0xD294,\n\t10152: 0xD296,\n\t10153: 0xD297,\n\t10154: 0xD298,\n\t10155: 0xD299,\n\t10156: 0xD29A,\n\t10157: 0xD29B,\n\t10158: 0xD29D,\n\t10159: 0xD29E,\n\t10160: 0xD29F,\n\t10161: 0xD2A1,\n\t10162: 0xD2A2,\n\t10163: 0xD2A3,\n\t10164: 0xD2A5,\n\t10165: 0xD2A6,\n\t10166: 0xD2A7,\n\t10167: 0xD2A8,\n\t10168: 0xD2A9,\n\t10169: 0xD2AA,\n\t10170: 0xD2AB,\n\t10171: 0xD2AD,\n\t10172: 0xD2AE,\n\t10173: 0xD2AF,\n\t10174: 0xD2B0,\n\t10175: 0xD2B2,\n\t10176: 0xD2B3,\n\t10177: 0xD2B4,\n\t10178: 0xD2B5,\n\t10179: 0xD2B6,\n\t10180: 0xD2B7,\n\t10181: 0xD2BA,\n\t10182: 0xD2BB,\n\t10183: 0xD2BD,\n\t10184: 0xD2BE,\n\t10185: 0xD2C1,\n\t10186: 0xD2C3,\n\t10187: 0xD2C4,\n\t10188: 0xD2C5,\n\t10189: 0xD2C6,\n\t10190: 0xD2C7,\n\t10191: 0xD2CA,\n\t10192: 0xD2CC,\n\t10193: 0xD2CD,\n\t10194: 0xD2CE,\n\t10195: 0xD2CF,\n\t10196: 0xD2D0,\n\t10197: 0xD2D1,\n\t10198: 0xD2D2,\n\t10199: 0xD2D3,\n\t10200: 0xD2D5,\n\t10201: 0xD2D6,\n\t10202: 0xD2D7,\n\t10203: 0xD2D9,\n\t10204: 0xD2DA,\n\t10205: 0xD2DB,\n\t10206: 0xD2DD,\n\t10207: 0xD2DE,\n\t10208: 0xD2DF,\n\t10209: 0xD2E0,\n\t10210: 0xD2E1,\n\t10211: 0xD2E2,\n\t10212: 0xD2E3,\n\t10213: 0xD2E6,\n\t10214: 0xD2E7,\n\t10215: 0xD2E8,\n\t10216: 0xD2E9,\n\t10217: 0xD2EA,\n\t10218: 0xD2EB,\n\t10219: 0xD2EC,\n\t10220: 0xD2ED,\n\t10221: 0xD2EE,\n\t10222: 0xD2EF,\n\t10223: 0xD2F2,\n\t10224: 0xD2F3,\n\t10225: 0xD2F5,\n\t10226: 0xD2F6,\n\t10227: 0xD2F7,\n\t10228: 0xD2F9,\n\t10229: 0xD2FA,\n\t10230: 0xBC99,\n\t10231: 0xBC9A,\n\t10232: 0xBCA0,\n\t10233: 0xBCA1,\n\t10234: 0xBCA4,\n\t10235: 0xBCA7,\n\t10236: 0xBCA8,\n\t10237: 0xBCB0,\n\t10238: 0xBCB1,\n\t10239: 0xBCB3,\n\t10240: 0xBCB4,\n\t10241: 0xBCB5,\n\t10242: 0xBCBC,\n\t10243: 0xBCBD,\n\t10244: 0xBCC0,\n\t10245: 0xBCC4,\n\t10246: 0xBCCD,\n\t10247: 0xBCCF,\n\t10248: 0xBCD0,\n\t10249: 0xBCD1,\n\t10250: 0xBCD5,\n\t10251: 0xBCD8,\n\t10252: 0xBCDC,\n\t10253: 0xBCF4,\n\t10254: 0xBCF5,\n\t10255: 0xBCF6,\n\t10256: 0xBCF8,\n\t10257: 0xBCFC,\n\t10258: 0xBD04,\n\t10259: 0xBD05,\n\t10260: 0xBD07,\n\t10261: 0xBD09,\n\t10262: 0xBD10,\n\t10263: 0xBD14,\n\t10264: 0xBD24,\n\t10265: 0xBD2C,\n\t10266: 0xBD40,\n\t10267: 0xBD48,\n\t10268: 0xBD49,\n\t10269: 0xBD4C,\n\t10270: 0xBD50,\n\t10271: 0xBD58,\n\t10272: 0xBD59,\n\t10273: 0xBD64,\n\t10274: 0xBD68,\n\t10275: 0xBD80,\n\t10276: 0xBD81,\n\t10277: 0xBD84,\n\t10278: 0xBD87,\n\t10279: 0xBD88,\n\t10280: 0xBD89,\n\t10281: 0xBD8A,\n\t10282: 0xBD90,\n\t10283: 0xBD91,\n\t10284: 0xBD93,\n\t10285: 0xBD95,\n\t10286: 0xBD99,\n\t10287: 0xBD9A,\n\t10288: 0xBD9C,\n\t10289: 0xBDA4,\n\t10290: 0xBDB0,\n\t10291: 0xBDB8,\n\t10292: 0xBDD4,\n\t10293: 0xBDD5,\n\t10294: 0xBDD8,\n\t10295: 0xBDDC,\n\t10296: 0xBDE9,\n\t10297: 0xBDF0,\n\t10298: 0xBDF4,\n\t10299: 0xBDF8,\n\t10300: 0xBE00,\n\t10301: 0xBE03,\n\t10302: 0xBE05,\n\t10303: 0xBE0C,\n\t10304: 0xBE0D,\n\t10305: 0xBE10,\n\t10306: 0xBE14,\n\t10307: 0xBE1C,\n\t10308: 0xBE1D,\n\t10309: 0xBE1F,\n\t10310: 0xBE44,\n\t10311: 0xBE45,\n\t10312: 0xBE48,\n\t10313: 0xBE4C,\n\t10314: 0xBE4E,\n\t10315: 0xBE54,\n\t10316: 0xBE55,\n\t10317: 0xBE57,\n\t10318: 0xBE59,\n\t10319: 0xBE5A,\n\t10320: 0xBE5B,\n\t10321: 0xBE60,\n\t10322: 0xBE61,\n\t10323: 0xBE64,\n\t10324: 0xD2FB,\n\t10325: 0xD2FC,\n\t10326: 0xD2FD,\n\t10327: 0xD2FE,\n\t10328: 0xD2FF,\n\t10329: 0xD302,\n\t10330: 0xD304,\n\t10331: 0xD306,\n\t10332: 0xD307,\n\t10333: 0xD308,\n\t10334: 0xD309,\n\t10335: 0xD30A,\n\t10336: 0xD30B,\n\t10337: 0xD30F,\n\t10338: 0xD311,\n\t10339: 0xD312,\n\t10340: 0xD313,\n\t10341: 0xD315,\n\t10342: 0xD317,\n\t10343: 0xD318,\n\t10344: 0xD319,\n\t10345: 0xD31A,\n\t10346: 0xD31B,\n\t10347: 0xD31E,\n\t10348: 0xD322,\n\t10349: 0xD323,\n\t10350: 0xD324,\n\t10351: 0xD326,\n\t10352: 0xD327,\n\t10353: 0xD32A,\n\t10354: 0xD32B,\n\t10355: 0xD32D,\n\t10356: 0xD32E,\n\t10357: 0xD32F,\n\t10358: 0xD331,\n\t10359: 0xD332,\n\t10360: 0xD333,\n\t10361: 0xD334,\n\t10362: 0xD335,\n\t10363: 0xD336,\n\t10364: 0xD337,\n\t10365: 0xD33A,\n\t10366: 0xD33E,\n\t10367: 0xD33F,\n\t10368: 0xD340,\n\t10369: 0xD341,\n\t10370: 0xD342,\n\t10371: 0xD343,\n\t10372: 0xD346,\n\t10373: 0xD347,\n\t10374: 0xD348,\n\t10375: 0xD349,\n\t10376: 0xD34A,\n\t10377: 0xD34B,\n\t10378: 0xD34C,\n\t10379: 0xD34D,\n\t10380: 0xD34E,\n\t10381: 0xD34F,\n\t10382: 0xD350,\n\t10383: 0xD351,\n\t10384: 0xD352,\n\t10385: 0xD353,\n\t10386: 0xD354,\n\t10387: 0xD355,\n\t10388: 0xD356,\n\t10389: 0xD357,\n\t10390: 0xD358,\n\t10391: 0xD359,\n\t10392: 0xD35A,\n\t10393: 0xD35B,\n\t10394: 0xD35C,\n\t10395: 0xD35D,\n\t10396: 0xD35E,\n\t10397: 0xD35F,\n\t10398: 0xD360,\n\t10399: 0xD361,\n\t10400: 0xD362,\n\t10401: 0xD363,\n\t10402: 0xD364,\n\t10403: 0xD365,\n\t10404: 0xD366,\n\t10405: 0xD367,\n\t10406: 0xD368,\n\t10407: 0xD369,\n\t10408: 0xBE68,\n\t10409: 0xBE6A,\n\t10410: 0xBE70,\n\t10411: 0xBE71,\n\t10412: 0xBE73,\n\t10413: 0xBE74,\n\t10414: 0xBE75,\n\t10415: 0xBE7B,\n\t10416: 0xBE7C,\n\t10417: 0xBE7D,\n\t10418: 0xBE80,\n\t10419: 0xBE84,\n\t10420: 0xBE8C,\n\t10421: 0xBE8D,\n\t10422: 0xBE8F,\n\t10423: 0xBE90,\n\t10424: 0xBE91,\n\t10425: 0xBE98,\n\t10426: 0xBE99,\n\t10427: 0xBEA8,\n\t10428: 0xBED0,\n\t10429: 0xBED1,\n\t10430: 0xBED4,\n\t10431: 0xBED7,\n\t10432: 0xBED8,\n\t10433: 0xBEE0,\n\t10434: 0xBEE3,\n\t10435: 0xBEE4,\n\t10436: 0xBEE5,\n\t10437: 0xBEEC,\n\t10438: 0xBF01,\n\t10439: 0xBF08,\n\t10440: 0xBF09,\n\t10441: 0xBF18,\n\t10442: 0xBF19,\n\t10443: 0xBF1B,\n\t10444: 0xBF1C,\n\t10445: 0xBF1D,\n\t10446: 0xBF40,\n\t10447: 0xBF41,\n\t10448: 0xBF44,\n\t10449: 0xBF48,\n\t10450: 0xBF50,\n\t10451: 0xBF51,\n\t10452: 0xBF55,\n\t10453: 0xBF94,\n\t10454: 0xBFB0,\n\t10455: 0xBFC5,\n\t10456: 0xBFCC,\n\t10457: 0xBFCD,\n\t10458: 0xBFD0,\n\t10459: 0xBFD4,\n\t10460: 0xBFDC,\n\t10461: 0xBFDF,\n\t10462: 0xBFE1,\n\t10463: 0xC03C,\n\t10464: 0xC051,\n\t10465: 0xC058,\n\t10466: 0xC05C,\n\t10467: 0xC060,\n\t10468: 0xC068,\n\t10469: 0xC069,\n\t10470: 0xC090,\n\t10471: 0xC091,\n\t10472: 0xC094,\n\t10473: 0xC098,\n\t10474: 0xC0A0,\n\t10475: 0xC0A1,\n\t10476: 0xC0A3,\n\t10477: 0xC0A5,\n\t10478: 0xC0AC,\n\t10479: 0xC0AD,\n\t10480: 0xC0AF,\n\t10481: 0xC0B0,\n\t10482: 0xC0B3,\n\t10483: 0xC0B4,\n\t10484: 0xC0B5,\n\t10485: 0xC0B6,\n\t10486: 0xC0BC,\n\t10487: 0xC0BD,\n\t10488: 0xC0BF,\n\t10489: 0xC0C0,\n\t10490: 0xC0C1,\n\t10491: 0xC0C5,\n\t10492: 0xC0C8,\n\t10493: 0xC0C9,\n\t10494: 0xC0CC,\n\t10495: 0xC0D0,\n\t10496: 0xC0D8,\n\t10497: 0xC0D9,\n\t10498: 0xC0DB,\n\t10499: 0xC0DC,\n\t10500: 0xC0DD,\n\t10501: 0xC0E4,\n\t10502: 0xD36A,\n\t10503: 0xD36B,\n\t10504: 0xD36C,\n\t10505: 0xD36D,\n\t10506: 0xD36E,\n\t10507: 0xD36F,\n\t10508: 0xD370,\n\t10509: 0xD371,\n\t10510: 0xD372,\n\t10511: 0xD373,\n\t10512: 0xD374,\n\t10513: 0xD375,\n\t10514: 0xD376,\n\t10515: 0xD377,\n\t10516: 0xD378,\n\t10517: 0xD379,\n\t10518: 0xD37A,\n\t10519: 0xD37B,\n\t10520: 0xD37E,\n\t10521: 0xD37F,\n\t10522: 0xD381,\n\t10523: 0xD382,\n\t10524: 0xD383,\n\t10525: 0xD385,\n\t10526: 0xD386,\n\t10527: 0xD387,\n\t10528: 0xD388,\n\t10529: 0xD389,\n\t10530: 0xD38A,\n\t10531: 0xD38B,\n\t10532: 0xD38E,\n\t10533: 0xD392,\n\t10534: 0xD393,\n\t10535: 0xD394,\n\t10536: 0xD395,\n\t10537: 0xD396,\n\t10538: 0xD397,\n\t10539: 0xD39A,\n\t10540: 0xD39B,\n\t10541: 0xD39D,\n\t10542: 0xD39E,\n\t10543: 0xD39F,\n\t10544: 0xD3A1,\n\t10545: 0xD3A2,\n\t10546: 0xD3A3,\n\t10547: 0xD3A4,\n\t10548: 0xD3A5,\n\t10549: 0xD3A6,\n\t10550: 0xD3A7,\n\t10551: 0xD3AA,\n\t10552: 0xD3AC,\n\t10553: 0xD3AE,\n\t10554: 0xD3AF,\n\t10555: 0xD3B0,\n\t10556: 0xD3B1,\n\t10557: 0xD3B2,\n\t10558: 0xD3B3,\n\t10559: 0xD3B5,\n\t10560: 0xD3B6,\n\t10561: 0xD3B7,\n\t10562: 0xD3B9,\n\t10563: 0xD3BA,\n\t10564: 0xD3BB,\n\t10565: 0xD3BD,\n\t10566: 0xD3BE,\n\t10567: 0xD3BF,\n\t10568: 0xD3C0,\n\t10569: 0xD3C1,\n\t10570: 0xD3C2,\n\t10571: 0xD3C3,\n\t10572: 0xD3C6,\n\t10573: 0xD3C7,\n\t10574: 0xD3CA,\n\t10575: 0xD3CB,\n\t10576: 0xD3CC,\n\t10577: 0xD3CD,\n\t10578: 0xD3CE,\n\t10579: 0xD3CF,\n\t10580: 0xD3D1,\n\t10581: 0xD3D2,\n\t10582: 0xD3D3,\n\t10583: 0xD3D4,\n\t10584: 0xD3D5,\n\t10585: 0xD3D6,\n\t10586: 0xC0E5,\n\t10587: 0xC0E8,\n\t10588: 0xC0EC,\n\t10589: 0xC0F4,\n\t10590: 0xC0F5,\n\t10591: 0xC0F7,\n\t10592: 0xC0F9,\n\t10593: 0xC100,\n\t10594: 0xC104,\n\t10595: 0xC108,\n\t10596: 0xC110,\n\t10597: 0xC115,\n\t10598: 0xC11C,\n\t10599: 0xC11D,\n\t10600: 0xC11E,\n\t10601: 0xC11F,\n\t10602: 0xC120,\n\t10603: 0xC123,\n\t10604: 0xC124,\n\t10605: 0xC126,\n\t10606: 0xC127,\n\t10607: 0xC12C,\n\t10608: 0xC12D,\n\t10609: 0xC12F,\n\t10610: 0xC130,\n\t10611: 0xC131,\n\t10612: 0xC136,\n\t10613: 0xC138,\n\t10614: 0xC139,\n\t10615: 0xC13C,\n\t10616: 0xC140,\n\t10617: 0xC148,\n\t10618: 0xC149,\n\t10619: 0xC14B,\n\t10620: 0xC14C,\n\t10621: 0xC14D,\n\t10622: 0xC154,\n\t10623: 0xC155,\n\t10624: 0xC158,\n\t10625: 0xC15C,\n\t10626: 0xC164,\n\t10627: 0xC165,\n\t10628: 0xC167,\n\t10629: 0xC168,\n\t10630: 0xC169,\n\t10631: 0xC170,\n\t10632: 0xC174,\n\t10633: 0xC178,\n\t10634: 0xC185,\n\t10635: 0xC18C,\n\t10636: 0xC18D,\n\t10637: 0xC18E,\n\t10638: 0xC190,\n\t10639: 0xC194,\n\t10640: 0xC196,\n\t10641: 0xC19C,\n\t10642: 0xC19D,\n\t10643: 0xC19F,\n\t10644: 0xC1A1,\n\t10645: 0xC1A5,\n\t10646: 0xC1A8,\n\t10647: 0xC1A9,\n\t10648: 0xC1AC,\n\t10649: 0xC1B0,\n\t10650: 0xC1BD,\n\t10651: 0xC1C4,\n\t10652: 0xC1C8,\n\t10653: 0xC1CC,\n\t10654: 0xC1D4,\n\t10655: 0xC1D7,\n\t10656: 0xC1D8,\n\t10657: 0xC1E0,\n\t10658: 0xC1E4,\n\t10659: 0xC1E8,\n\t10660: 0xC1F0,\n\t10661: 0xC1F1,\n\t10662: 0xC1F3,\n\t10663: 0xC1FC,\n\t10664: 0xC1FD,\n\t10665: 0xC200,\n\t10666: 0xC204,\n\t10667: 0xC20C,\n\t10668: 0xC20D,\n\t10669: 0xC20F,\n\t10670: 0xC211,\n\t10671: 0xC218,\n\t10672: 0xC219,\n\t10673: 0xC21C,\n\t10674: 0xC21F,\n\t10675: 0xC220,\n\t10676: 0xC228,\n\t10677: 0xC229,\n\t10678: 0xC22B,\n\t10679: 0xC22D,\n\t10680: 0xD3D7,\n\t10681: 0xD3D9,\n\t10682: 0xD3DA,\n\t10683: 0xD3DB,\n\t10684: 0xD3DC,\n\t10685: 0xD3DD,\n\t10686: 0xD3DE,\n\t10687: 0xD3DF,\n\t10688: 0xD3E0,\n\t10689: 0xD3E2,\n\t10690: 0xD3E4,\n\t10691: 0xD3E5,\n\t10692: 0xD3E6,\n\t10693: 0xD3E7,\n\t10694: 0xD3E8,\n\t10695: 0xD3E9,\n\t10696: 0xD3EA,\n\t10697: 0xD3EB,\n\t10698: 0xD3EE,\n\t10699: 0xD3EF,\n\t10700: 0xD3F1,\n\t10701: 0xD3F2,\n\t10702: 0xD3F3,\n\t10703: 0xD3F5,\n\t10704: 0xD3F6,\n\t10705: 0xD3F7,\n\t10706: 0xD3F8,\n\t10707: 0xD3F9,\n\t10708: 0xD3FA,\n\t10709: 0xD3FB,\n\t10710: 0xD3FE,\n\t10711: 0xD400,\n\t10712: 0xD402,\n\t10713: 0xD403,\n\t10714: 0xD404,\n\t10715: 0xD405,\n\t10716: 0xD406,\n\t10717: 0xD407,\n\t10718: 0xD409,\n\t10719: 0xD40A,\n\t10720: 0xD40B,\n\t10721: 0xD40C,\n\t10722: 0xD40D,\n\t10723: 0xD40E,\n\t10724: 0xD40F,\n\t10725: 0xD410,\n\t10726: 0xD411,\n\t10727: 0xD412,\n\t10728: 0xD413,\n\t10729: 0xD414,\n\t10730: 0xD415,\n\t10731: 0xD416,\n\t10732: 0xD417,\n\t10733: 0xD418,\n\t10734: 0xD419,\n\t10735: 0xD41A,\n\t10736: 0xD41B,\n\t10737: 0xD41C,\n\t10738: 0xD41E,\n\t10739: 0xD41F,\n\t10740: 0xD420,\n\t10741: 0xD421,\n\t10742: 0xD422,\n\t10743: 0xD423,\n\t10744: 0xD424,\n\t10745: 0xD425,\n\t10746: 0xD426,\n\t10747: 0xD427,\n\t10748: 0xD428,\n\t10749: 0xD429,\n\t10750: 0xD42A,\n\t10751: 0xD42B,\n\t10752: 0xD42C,\n\t10753: 0xD42D,\n\t10754: 0xD42E,\n\t10755: 0xD42F,\n\t10756: 0xD430,\n\t10757: 0xD431,\n\t10758: 0xD432,\n\t10759: 0xD433,\n\t10760: 0xD434,\n\t10761: 0xD435,\n\t10762: 0xD436,\n\t10763: 0xD437,\n\t10764: 0xC22F,\n\t10765: 0xC231,\n\t10766: 0xC232,\n\t10767: 0xC234,\n\t10768: 0xC248,\n\t10769: 0xC250,\n\t10770: 0xC251,\n\t10771: 0xC254,\n\t10772: 0xC258,\n\t10773: 0xC260,\n\t10774: 0xC265,\n\t10775: 0xC26C,\n\t10776: 0xC26D,\n\t10777: 0xC270,\n\t10778: 0xC274,\n\t10779: 0xC27C,\n\t10780: 0xC27D,\n\t10781: 0xC27F,\n\t10782: 0xC281,\n\t10783: 0xC288,\n\t10784: 0xC289,\n\t10785: 0xC290,\n\t10786: 0xC298,\n\t10787: 0xC29B,\n\t10788: 0xC29D,\n\t10789: 0xC2A4,\n\t10790: 0xC2A5,\n\t10791: 0xC2A8,\n\t10792: 0xC2AC,\n\t10793: 0xC2AD,\n\t10794: 0xC2B4,\n\t10795: 0xC2B5,\n\t10796: 0xC2B7,\n\t10797: 0xC2B9,\n\t10798: 0xC2DC,\n\t10799: 0xC2DD,\n\t10800: 0xC2E0,\n\t10801: 0xC2E3,\n\t10802: 0xC2E4,\n\t10803: 0xC2EB,\n\t10804: 0xC2EC,\n\t10805: 0xC2ED,\n\t10806: 0xC2EF,\n\t10807: 0xC2F1,\n\t10808: 0xC2F6,\n\t10809: 0xC2F8,\n\t10810: 0xC2F9,\n\t10811: 0xC2FB,\n\t10812: 0xC2FC,\n\t10813: 0xC300,\n\t10814: 0xC308,\n\t10815: 0xC309,\n\t10816: 0xC30C,\n\t10817: 0xC30D,\n\t10818: 0xC313,\n\t10819: 0xC314,\n\t10820: 0xC315,\n\t10821: 0xC318,\n\t10822: 0xC31C,\n\t10823: 0xC324,\n\t10824: 0xC325,\n\t10825: 0xC328,\n\t10826: 0xC329,\n\t10827: 0xC345,\n\t10828: 0xC368,\n\t10829: 0xC369,\n\t10830: 0xC36C,\n\t10831: 0xC370,\n\t10832: 0xC372,\n\t10833: 0xC378,\n\t10834: 0xC379,\n\t10835: 0xC37C,\n\t10836: 0xC37D,\n\t10837: 0xC384,\n\t10838: 0xC388,\n\t10839: 0xC38C,\n\t10840: 0xC3C0,\n\t10841: 0xC3D8,\n\t10842: 0xC3D9,\n\t10843: 0xC3DC,\n\t10844: 0xC3DF,\n\t10845: 0xC3E0,\n\t10846: 0xC3E2,\n\t10847: 0xC3E8,\n\t10848: 0xC3E9,\n\t10849: 0xC3ED,\n\t10850: 0xC3F4,\n\t10851: 0xC3F5,\n\t10852: 0xC3F8,\n\t10853: 0xC408,\n\t10854: 0xC410,\n\t10855: 0xC424,\n\t10856: 0xC42C,\n\t10857: 0xC430,\n\t10858: 0xD438,\n\t10859: 0xD439,\n\t10860: 0xD43A,\n\t10861: 0xD43B,\n\t10862: 0xD43C,\n\t10863: 0xD43D,\n\t10864: 0xD43E,\n\t10865: 0xD43F,\n\t10866: 0xD441,\n\t10867: 0xD442,\n\t10868: 0xD443,\n\t10869: 0xD445,\n\t10870: 0xD446,\n\t10871: 0xD447,\n\t10872: 0xD448,\n\t10873: 0xD449,\n\t10874: 0xD44A,\n\t10875: 0xD44B,\n\t10876: 0xD44C,\n\t10877: 0xD44D,\n\t10878: 0xD44E,\n\t10879: 0xD44F,\n\t10880: 0xD450,\n\t10881: 0xD451,\n\t10882: 0xD452,\n\t10883: 0xD453,\n\t10884: 0xD454,\n\t10885: 0xD455,\n\t10886: 0xD456,\n\t10887: 0xD457,\n\t10888: 0xD458,\n\t10889: 0xD459,\n\t10890: 0xD45A,\n\t10891: 0xD45B,\n\t10892: 0xD45D,\n\t10893: 0xD45E,\n\t10894: 0xD45F,\n\t10895: 0xD461,\n\t10896: 0xD462,\n\t10897: 0xD463,\n\t10898: 0xD465,\n\t10899: 0xD466,\n\t10900: 0xD467,\n\t10901: 0xD468,\n\t10902: 0xD469,\n\t10903: 0xD46A,\n\t10904: 0xD46B,\n\t10905: 0xD46C,\n\t10906: 0xD46E,\n\t10907: 0xD470,\n\t10908: 0xD471,\n\t10909: 0xD472,\n\t10910: 0xD473,\n\t10911: 0xD474,\n\t10912: 0xD475,\n\t10913: 0xD476,\n\t10914: 0xD477,\n\t10915: 0xD47A,\n\t10916: 0xD47B,\n\t10917: 0xD47D,\n\t10918: 0xD47E,\n\t10919: 0xD481,\n\t10920: 0xD483,\n\t10921: 0xD484,\n\t10922: 0xD485,\n\t10923: 0xD486,\n\t10924: 0xD487,\n\t10925: 0xD48A,\n\t10926: 0xD48C,\n\t10927: 0xD48E,\n\t10928: 0xD48F,\n\t10929: 0xD490,\n\t10930: 0xD491,\n\t10931: 0xD492,\n\t10932: 0xD493,\n\t10933: 0xD495,\n\t10934: 0xD496,\n\t10935: 0xD497,\n\t10936: 0xD498,\n\t10937: 0xD499,\n\t10938: 0xD49A,\n\t10939: 0xD49B,\n\t10940: 0xD49C,\n\t10941: 0xD49D,\n\t10942: 0xC434,\n\t10943: 0xC43C,\n\t10944: 0xC43D,\n\t10945: 0xC448,\n\t10946: 0xC464,\n\t10947: 0xC465,\n\t10948: 0xC468,\n\t10949: 0xC46C,\n\t10950: 0xC474,\n\t10951: 0xC475,\n\t10952: 0xC479,\n\t10953: 0xC480,\n\t10954: 0xC494,\n\t10955: 0xC49C,\n\t10956: 0xC4B8,\n\t10957: 0xC4BC,\n\t10958: 0xC4E9,\n\t10959: 0xC4F0,\n\t10960: 0xC4F1,\n\t10961: 0xC4F4,\n\t10962: 0xC4F8,\n\t10963: 0xC4FA,\n\t10964: 0xC4FF,\n\t10965: 0xC500,\n\t10966: 0xC501,\n\t10967: 0xC50C,\n\t10968: 0xC510,\n\t10969: 0xC514,\n\t10970: 0xC51C,\n\t10971: 0xC528,\n\t10972: 0xC529,\n\t10973: 0xC52C,\n\t10974: 0xC530,\n\t10975: 0xC538,\n\t10976: 0xC539,\n\t10977: 0xC53B,\n\t10978: 0xC53D,\n\t10979: 0xC544,\n\t10980: 0xC545,\n\t10981: 0xC548,\n\t10982: 0xC549,\n\t10983: 0xC54A,\n\t10984: 0xC54C,\n\t10985: 0xC54D,\n\t10986: 0xC54E,\n\t10987: 0xC553,\n\t10988: 0xC554,\n\t10989: 0xC555,\n\t10990: 0xC557,\n\t10991: 0xC558,\n\t10992: 0xC559,\n\t10993: 0xC55D,\n\t10994: 0xC55E,\n\t10995: 0xC560,\n\t10996: 0xC561,\n\t10997: 0xC564,\n\t10998: 0xC568,\n\t10999: 0xC570,\n\t11000: 0xC571,\n\t11001: 0xC573,\n\t11002: 0xC574,\n\t11003: 0xC575,\n\t11004: 0xC57C,\n\t11005: 0xC57D,\n\t11006: 0xC580,\n\t11007: 0xC584,\n\t11008: 0xC587,\n\t11009: 0xC58C,\n\t11010: 0xC58D,\n\t11011: 0xC58F,\n\t11012: 0xC591,\n\t11013: 0xC595,\n\t11014: 0xC597,\n\t11015: 0xC598,\n\t11016: 0xC59C,\n\t11017: 0xC5A0,\n\t11018: 0xC5A9,\n\t11019: 0xC5B4,\n\t11020: 0xC5B5,\n\t11021: 0xC5B8,\n\t11022: 0xC5B9,\n\t11023: 0xC5BB,\n\t11024: 0xC5BC,\n\t11025: 0xC5BD,\n\t11026: 0xC5BE,\n\t11027: 0xC5C4,\n\t11028: 0xC5C5,\n\t11029: 0xC5C6,\n\t11030: 0xC5C7,\n\t11031: 0xC5C8,\n\t11032: 0xC5C9,\n\t11033: 0xC5CA,\n\t11034: 0xC5CC,\n\t11035: 0xC5CE,\n\t11036: 0xD49E,\n\t11037: 0xD49F,\n\t11038: 0xD4A0,\n\t11039: 0xD4A1,\n\t11040: 0xD4A2,\n\t11041: 0xD4A3,\n\t11042: 0xD4A4,\n\t11043: 0xD4A5,\n\t11044: 0xD4A6,\n\t11045: 0xD4A7,\n\t11046: 0xD4A8,\n\t11047: 0xD4AA,\n\t11048: 0xD4AB,\n\t11049: 0xD4AC,\n\t11050: 0xD4AD,\n\t11051: 0xD4AE,\n\t11052: 0xD4AF,\n\t11053: 0xD4B0,\n\t11054: 0xD4B1,\n\t11055: 0xD4B2,\n\t11056: 0xD4B3,\n\t11057: 0xD4B4,\n\t11058: 0xD4B5,\n\t11059: 0xD4B6,\n\t11060: 0xD4B7,\n\t11061: 0xD4B8,\n\t11062: 0xD4B9,\n\t11063: 0xD4BA,\n\t11064: 0xD4BB,\n\t11065: 0xD4BC,\n\t11066: 0xD4BD,\n\t11067: 0xD4BE,\n\t11068: 0xD4BF,\n\t11069: 0xD4C0,\n\t11070: 0xD4C1,\n\t11071: 0xD4C2,\n\t11072: 0xD4C3,\n\t11073: 0xD4C4,\n\t11074: 0xD4C5,\n\t11075: 0xD4C6,\n\t11076: 0xD4C7,\n\t11077: 0xD4C8,\n\t11078: 0xD4C9,\n\t11079: 0xD4CA,\n\t11080: 0xD4CB,\n\t11081: 0xD4CD,\n\t11082: 0xD4CE,\n\t11083: 0xD4CF,\n\t11084: 0xD4D1,\n\t11085: 0xD4D2,\n\t11086: 0xD4D3,\n\t11087: 0xD4D5,\n\t11088: 0xD4D6,\n\t11089: 0xD4D7,\n\t11090: 0xD4D8,\n\t11091: 0xD4D9,\n\t11092: 0xD4DA,\n\t11093: 0xD4DB,\n\t11094: 0xD4DD,\n\t11095: 0xD4DE,\n\t11096: 0xD4E0,\n\t11097: 0xD4E1,\n\t11098: 0xD4E2,\n\t11099: 0xD4E3,\n\t11100: 0xD4E4,\n\t11101: 0xD4E5,\n\t11102: 0xD4E6,\n\t11103: 0xD4E7,\n\t11104: 0xD4E9,\n\t11105: 0xD4EA,\n\t11106: 0xD4EB,\n\t11107: 0xD4ED,\n\t11108: 0xD4EE,\n\t11109: 0xD4EF,\n\t11110: 0xD4F1,\n\t11111: 0xD4F2,\n\t11112: 0xD4F3,\n\t11113: 0xD4F4,\n\t11114: 0xD4F5,\n\t11115: 0xD4F6,\n\t11116: 0xD4F7,\n\t11117: 0xD4F9,\n\t11118: 0xD4FA,\n\t11119: 0xD4FC,\n\t11120: 0xC5D0,\n\t11121: 0xC5D1,\n\t11122: 0xC5D4,\n\t11123: 0xC5D8,\n\t11124: 0xC5E0,\n\t11125: 0xC5E1,\n\t11126: 0xC5E3,\n\t11127: 0xC5E5,\n\t11128: 0xC5EC,\n\t11129: 0xC5ED,\n\t11130: 0xC5EE,\n\t11131: 0xC5F0,\n\t11132: 0xC5F4,\n\t11133: 0xC5F6,\n\t11134: 0xC5F7,\n\t11135: 0xC5FC,\n\t11136: 0xC5FD,\n\t11137: 0xC5FE,\n\t11138: 0xC5FF,\n\t11139: 0xC600,\n\t11140: 0xC601,\n\t11141: 0xC605,\n\t11142: 0xC606,\n\t11143: 0xC607,\n\t11144: 0xC608,\n\t11145: 0xC60C,\n\t11146: 0xC610,\n\t11147: 0xC618,\n\t11148: 0xC619,\n\t11149: 0xC61B,\n\t11150: 0xC61C,\n\t11151: 0xC624,\n\t11152: 0xC625,\n\t11153: 0xC628,\n\t11154: 0xC62C,\n\t11155: 0xC62D,\n\t11156: 0xC62E,\n\t11157: 0xC630,\n\t11158: 0xC633,\n\t11159: 0xC634,\n\t11160: 0xC635,\n\t11161: 0xC637,\n\t11162: 0xC639,\n\t11163: 0xC63B,\n\t11164: 0xC640,\n\t11165: 0xC641,\n\t11166: 0xC644,\n\t11167: 0xC648,\n\t11168: 0xC650,\n\t11169: 0xC651,\n\t11170: 0xC653,\n\t11171: 0xC654,\n\t11172: 0xC655,\n\t11173: 0xC65C,\n\t11174: 0xC65D,\n\t11175: 0xC660,\n\t11176: 0xC66C,\n\t11177: 0xC66F,\n\t11178: 0xC671,\n\t11179: 0xC678,\n\t11180: 0xC679,\n\t11181: 0xC67C,\n\t11182: 0xC680,\n\t11183: 0xC688,\n\t11184: 0xC689,\n\t11185: 0xC68B,\n\t11186: 0xC68D,\n\t11187: 0xC694,\n\t11188: 0xC695,\n\t11189: 0xC698,\n\t11190: 0xC69C,\n\t11191: 0xC6A4,\n\t11192: 0xC6A5,\n\t11193: 0xC6A7,\n\t11194: 0xC6A9,\n\t11195: 0xC6B0,\n\t11196: 0xC6B1,\n\t11197: 0xC6B4,\n\t11198: 0xC6B8,\n\t11199: 0xC6B9,\n\t11200: 0xC6BA,\n\t11201: 0xC6C0,\n\t11202: 0xC6C1,\n\t11203: 0xC6C3,\n\t11204: 0xC6C5,\n\t11205: 0xC6CC,\n\t11206: 0xC6CD,\n\t11207: 0xC6D0,\n\t11208: 0xC6D4,\n\t11209: 0xC6DC,\n\t11210: 0xC6DD,\n\t11211: 0xC6E0,\n\t11212: 0xC6E1,\n\t11213: 0xC6E8,\n\t11214: 0xD4FE,\n\t11215: 0xD4FF,\n\t11216: 0xD500,\n\t11217: 0xD501,\n\t11218: 0xD502,\n\t11219: 0xD503,\n\t11220: 0xD505,\n\t11221: 0xD506,\n\t11222: 0xD507,\n\t11223: 0xD509,\n\t11224: 0xD50A,\n\t11225: 0xD50B,\n\t11226: 0xD50D,\n\t11227: 0xD50E,\n\t11228: 0xD50F,\n\t11229: 0xD510,\n\t11230: 0xD511,\n\t11231: 0xD512,\n\t11232: 0xD513,\n\t11233: 0xD516,\n\t11234: 0xD518,\n\t11235: 0xD519,\n\t11236: 0xD51A,\n\t11237: 0xD51B,\n\t11238: 0xD51C,\n\t11239: 0xD51D,\n\t11240: 0xD51E,\n\t11241: 0xD51F,\n\t11242: 0xD520,\n\t11243: 0xD521,\n\t11244: 0xD522,\n\t11245: 0xD523,\n\t11246: 0xD524,\n\t11247: 0xD525,\n\t11248: 0xD526,\n\t11249: 0xD527,\n\t11250: 0xD528,\n\t11251: 0xD529,\n\t11252: 0xD52A,\n\t11253: 0xD52B,\n\t11254: 0xD52C,\n\t11255: 0xD52D,\n\t11256: 0xD52E,\n\t11257: 0xD52F,\n\t11258: 0xD530,\n\t11259: 0xD531,\n\t11260: 0xD532,\n\t11261: 0xD533,\n\t11262: 0xD534,\n\t11263: 0xD535,\n\t11264: 0xD536,\n\t11265: 0xD537,\n\t11266: 0xD538,\n\t11267: 0xD539,\n\t11268: 0xD53A,\n\t11269: 0xD53B,\n\t11270: 0xD53E,\n\t11271: 0xD53F,\n\t11272: 0xD541,\n\t11273: 0xD542,\n\t11274: 0xD543,\n\t11275: 0xD545,\n\t11276: 0xD546,\n\t11277: 0xD547,\n\t11278: 0xD548,\n\t11279: 0xD549,\n\t11280: 0xD54A,\n\t11281: 0xD54B,\n\t11282: 0xD54E,\n\t11283: 0xD550,\n\t11284: 0xD552,\n\t11285: 0xD553,\n\t11286: 0xD554,\n\t11287: 0xD555,\n\t11288: 0xD556,\n\t11289: 0xD557,\n\t11290: 0xD55A,\n\t11291: 0xD55B,\n\t11292: 0xD55D,\n\t11293: 0xD55E,\n\t11294: 0xD55F,\n\t11295: 0xD561,\n\t11296: 0xD562,\n\t11297: 0xD563,\n\t11298: 0xC6E9,\n\t11299: 0xC6EC,\n\t11300: 0xC6F0,\n\t11301: 0xC6F8,\n\t11302: 0xC6F9,\n\t11303: 0xC6FD,\n\t11304: 0xC704,\n\t11305: 0xC705,\n\t11306: 0xC708,\n\t11307: 0xC70C,\n\t11308: 0xC714,\n\t11309: 0xC715,\n\t11310: 0xC717,\n\t11311: 0xC719,\n\t11312: 0xC720,\n\t11313: 0xC721,\n\t11314: 0xC724,\n\t11315: 0xC728,\n\t11316: 0xC730,\n\t11317: 0xC731,\n\t11318: 0xC733,\n\t11319: 0xC735,\n\t11320: 0xC737,\n\t11321: 0xC73C,\n\t11322: 0xC73D,\n\t11323: 0xC740,\n\t11324: 0xC744,\n\t11325: 0xC74A,\n\t11326: 0xC74C,\n\t11327: 0xC74D,\n\t11328: 0xC74F,\n\t11329: 0xC751,\n\t11330: 0xC752,\n\t11331: 0xC753,\n\t11332: 0xC754,\n\t11333: 0xC755,\n\t11334: 0xC756,\n\t11335: 0xC757,\n\t11336: 0xC758,\n\t11337: 0xC75C,\n\t11338: 0xC760,\n\t11339: 0xC768,\n\t11340: 0xC76B,\n\t11341: 0xC774,\n\t11342: 0xC775,\n\t11343: 0xC778,\n\t11344: 0xC77C,\n\t11345: 0xC77D,\n\t11346: 0xC77E,\n\t11347: 0xC783,\n\t11348: 0xC784,\n\t11349: 0xC785,\n\t11350: 0xC787,\n\t11351: 0xC788,\n\t11352: 0xC789,\n\t11353: 0xC78A,\n\t11354: 0xC78E,\n\t11355: 0xC790,\n\t11356: 0xC791,\n\t11357: 0xC794,\n\t11358: 0xC796,\n\t11359: 0xC797,\n\t11360: 0xC798,\n\t11361: 0xC79A,\n\t11362: 0xC7A0,\n\t11363: 0xC7A1,\n\t11364: 0xC7A3,\n\t11365: 0xC7A4,\n\t11366: 0xC7A5,\n\t11367: 0xC7A6,\n\t11368: 0xC7AC,\n\t11369: 0xC7AD,\n\t11370: 0xC7B0,\n\t11371: 0xC7B4,\n\t11372: 0xC7BC,\n\t11373: 0xC7BD,\n\t11374: 0xC7BF,\n\t11375: 0xC7C0,\n\t11376: 0xC7C1,\n\t11377: 0xC7C8,\n\t11378: 0xC7C9,\n\t11379: 0xC7CC,\n\t11380: 0xC7CE,\n\t11381: 0xC7D0,\n\t11382: 0xC7D8,\n\t11383: 0xC7DD,\n\t11384: 0xC7E4,\n\t11385: 0xC7E8,\n\t11386: 0xC7EC,\n\t11387: 0xC800,\n\t11388: 0xC801,\n\t11389: 0xC804,\n\t11390: 0xC808,\n\t11391: 0xC80A,\n\t11392: 0xD564,\n\t11393: 0xD566,\n\t11394: 0xD567,\n\t11395: 0xD56A,\n\t11396: 0xD56C,\n\t11397: 0xD56E,\n\t11398: 0xD56F,\n\t11399: 0xD570,\n\t11400: 0xD571,\n\t11401: 0xD572,\n\t11402: 0xD573,\n\t11403: 0xD576,\n\t11404: 0xD577,\n\t11405: 0xD579,\n\t11406: 0xD57A,\n\t11407: 0xD57B,\n\t11408: 0xD57D,\n\t11409: 0xD57E,\n\t11410: 0xD57F,\n\t11411: 0xD580,\n\t11412: 0xD581,\n\t11413: 0xD582,\n\t11414: 0xD583,\n\t11415: 0xD586,\n\t11416: 0xD58A,\n\t11417: 0xD58B,\n\t11418: 0xD58C,\n\t11419: 0xD58D,\n\t11420: 0xD58E,\n\t11421: 0xD58F,\n\t11422: 0xD591,\n\t11423: 0xD592,\n\t11424: 0xD593,\n\t11425: 0xD594,\n\t11426: 0xD595,\n\t11427: 0xD596,\n\t11428: 0xD597,\n\t11429: 0xD598,\n\t11430: 0xD599,\n\t11431: 0xD59A,\n\t11432: 0xD59B,\n\t11433: 0xD59C,\n\t11434: 0xD59D,\n\t11435: 0xD59E,\n\t11436: 0xD59F,\n\t11437: 0xD5A0,\n\t11438: 0xD5A1,\n\t11439: 0xD5A2,\n\t11440: 0xD5A3,\n\t11441: 0xD5A4,\n\t11442: 0xD5A6,\n\t11443: 0xD5A7,\n\t11444: 0xD5A8,\n\t11445: 0xD5A9,\n\t11446: 0xD5AA,\n\t11447: 0xD5AB,\n\t11448: 0xD5AC,\n\t11449: 0xD5AD,\n\t11450: 0xD5AE,\n\t11451: 0xD5AF,\n\t11452: 0xD5B0,\n\t11453: 0xD5B1,\n\t11454: 0xD5B2,\n\t11455: 0xD5B3,\n\t11456: 0xD5B4,\n\t11457: 0xD5B5,\n\t11458: 0xD5B6,\n\t11459: 0xD5B7,\n\t11460: 0xD5B8,\n\t11461: 0xD5B9,\n\t11462: 0xD5BA,\n\t11463: 0xD5BB,\n\t11464: 0xD5BC,\n\t11465: 0xD5BD,\n\t11466: 0xD5BE,\n\t11467: 0xD5BF,\n\t11468: 0xD5C0,\n\t11469: 0xD5C1,\n\t11470: 0xD5C2,\n\t11471: 0xD5C3,\n\t11472: 0xD5C4,\n\t11473: 0xD5C5,\n\t11474: 0xD5C6,\n\t11475: 0xD5C7,\n\t11476: 0xC810,\n\t11477: 0xC811,\n\t11478: 0xC813,\n\t11479: 0xC815,\n\t11480: 0xC816,\n\t11481: 0xC81C,\n\t11482: 0xC81D,\n\t11483: 0xC820,\n\t11484: 0xC824,\n\t11485: 0xC82C,\n\t11486: 0xC82D,\n\t11487: 0xC82F,\n\t11488: 0xC831,\n\t11489: 0xC838,\n\t11490: 0xC83C,\n\t11491: 0xC840,\n\t11492: 0xC848,\n\t11493: 0xC849,\n\t11494: 0xC84C,\n\t11495: 0xC84D,\n\t11496: 0xC854,\n\t11497: 0xC870,\n\t11498: 0xC871,\n\t11499: 0xC874,\n\t11500: 0xC878,\n\t11501: 0xC87A,\n\t11502: 0xC880,\n\t11503: 0xC881,\n\t11504: 0xC883,\n\t11505: 0xC885,\n\t11506: 0xC886,\n\t11507: 0xC887,\n\t11508: 0xC88B,\n\t11509: 0xC88C,\n\t11510: 0xC88D,\n\t11511: 0xC894,\n\t11512: 0xC89D,\n\t11513: 0xC89F,\n\t11514: 0xC8A1,\n\t11515: 0xC8A8,\n\t11516: 0xC8BC,\n\t11517: 0xC8BD,\n\t11518: 0xC8C4,\n\t11519: 0xC8C8,\n\t11520: 0xC8CC,\n\t11521: 0xC8D4,\n\t11522: 0xC8D5,\n\t11523: 0xC8D7,\n\t11524: 0xC8D9,\n\t11525: 0xC8E0,\n\t11526: 0xC8E1,\n\t11527: 0xC8E4,\n\t11528: 0xC8F5,\n\t11529: 0xC8FC,\n\t11530: 0xC8FD,\n\t11531: 0xC900,\n\t11532: 0xC904,\n\t11533: 0xC905,\n\t11534: 0xC906,\n\t11535: 0xC90C,\n\t11536: 0xC90D,\n\t11537: 0xC90F,\n\t11538: 0xC911,\n\t11539: 0xC918,\n\t11540: 0xC92C,\n\t11541: 0xC934,\n\t11542: 0xC950,\n\t11543: 0xC951,\n\t11544: 0xC954,\n\t11545: 0xC958,\n\t11546: 0xC960,\n\t11547: 0xC961,\n\t11548: 0xC963,\n\t11549: 0xC96C,\n\t11550: 0xC970,\n\t11551: 0xC974,\n\t11552: 0xC97C,\n\t11553: 0xC988,\n\t11554: 0xC989,\n\t11555: 0xC98C,\n\t11556: 0xC990,\n\t11557: 0xC998,\n\t11558: 0xC999,\n\t11559: 0xC99B,\n\t11560: 0xC99D,\n\t11561: 0xC9C0,\n\t11562: 0xC9C1,\n\t11563: 0xC9C4,\n\t11564: 0xC9C7,\n\t11565: 0xC9C8,\n\t11566: 0xC9CA,\n\t11567: 0xC9D0,\n\t11568: 0xC9D1,\n\t11569: 0xC9D3,\n\t11570: 0xD5CA,\n\t11571: 0xD5CB,\n\t11572: 0xD5CD,\n\t11573: 0xD5CE,\n\t11574: 0xD5CF,\n\t11575: 0xD5D1,\n\t11576: 0xD5D3,\n\t11577: 0xD5D4,\n\t11578: 0xD5D5,\n\t11579: 0xD5D6,\n\t11580: 0xD5D7,\n\t11581: 0xD5DA,\n\t11582: 0xD5DC,\n\t11583: 0xD5DE,\n\t11584: 0xD5DF,\n\t11585: 0xD5E0,\n\t11586: 0xD5E1,\n\t11587: 0xD5E2,\n\t11588: 0xD5E3,\n\t11589: 0xD5E6,\n\t11590: 0xD5E7,\n\t11591: 0xD5E9,\n\t11592: 0xD5EA,\n\t11593: 0xD5EB,\n\t11594: 0xD5ED,\n\t11595: 0xD5EE,\n\t11596: 0xD5EF,\n\t11597: 0xD5F0,\n\t11598: 0xD5F1,\n\t11599: 0xD5F2,\n\t11600: 0xD5F3,\n\t11601: 0xD5F6,\n\t11602: 0xD5F8,\n\t11603: 0xD5FA,\n\t11604: 0xD5FB,\n\t11605: 0xD5FC,\n\t11606: 0xD5FD,\n\t11607: 0xD5FE,\n\t11608: 0xD5FF,\n\t11609: 0xD602,\n\t11610: 0xD603,\n\t11611: 0xD605,\n\t11612: 0xD606,\n\t11613: 0xD607,\n\t11614: 0xD609,\n\t11615: 0xD60A,\n\t11616: 0xD60B,\n\t11617: 0xD60C,\n\t11618: 0xD60D,\n\t11619: 0xD60E,\n\t11620: 0xD60F,\n\t11621: 0xD612,\n\t11622: 0xD616,\n\t11623: 0xD617,\n\t11624: 0xD618,\n\t11625: 0xD619,\n\t11626: 0xD61A,\n\t11627: 0xD61B,\n\t11628: 0xD61D,\n\t11629: 0xD61E,\n\t11630: 0xD61F,\n\t11631: 0xD621,\n\t11632: 0xD622,\n\t11633: 0xD623,\n\t11634: 0xD625,\n\t11635: 0xD626,\n\t11636: 0xD627,\n\t11637: 0xD628,\n\t11638: 0xD629,\n\t11639: 0xD62A,\n\t11640: 0xD62B,\n\t11641: 0xD62C,\n\t11642: 0xD62E,\n\t11643: 0xD62F,\n\t11644: 0xD630,\n\t11645: 0xD631,\n\t11646: 0xD632,\n\t11647: 0xD633,\n\t11648: 0xD634,\n\t11649: 0xD635,\n\t11650: 0xD636,\n\t11651: 0xD637,\n\t11652: 0xD63A,\n\t11653: 0xD63B,\n\t11654: 0xC9D5,\n\t11655: 0xC9D6,\n\t11656: 0xC9D9,\n\t11657: 0xC9DA,\n\t11658: 0xC9DC,\n\t11659: 0xC9DD,\n\t11660: 0xC9E0,\n\t11661: 0xC9E2,\n\t11662: 0xC9E4,\n\t11663: 0xC9E7,\n\t11664: 0xC9EC,\n\t11665: 0xC9ED,\n\t11666: 0xC9EF,\n\t11667: 0xC9F0,\n\t11668: 0xC9F1,\n\t11669: 0xC9F8,\n\t11670: 0xC9F9,\n\t11671: 0xC9FC,\n\t11672: 0xCA00,\n\t11673: 0xCA08,\n\t11674: 0xCA09,\n\t11675: 0xCA0B,\n\t11676: 0xCA0C,\n\t11677: 0xCA0D,\n\t11678: 0xCA14,\n\t11679: 0xCA18,\n\t11680: 0xCA29,\n\t11681: 0xCA4C,\n\t11682: 0xCA4D,\n\t11683: 0xCA50,\n\t11684: 0xCA54,\n\t11685: 0xCA5C,\n\t11686: 0xCA5D,\n\t11687: 0xCA5F,\n\t11688: 0xCA60,\n\t11689: 0xCA61,\n\t11690: 0xCA68,\n\t11691: 0xCA7D,\n\t11692: 0xCA84,\n\t11693: 0xCA98,\n\t11694: 0xCABC,\n\t11695: 0xCABD,\n\t11696: 0xCAC0,\n\t11697: 0xCAC4,\n\t11698: 0xCACC,\n\t11699: 0xCACD,\n\t11700: 0xCACF,\n\t11701: 0xCAD1,\n\t11702: 0xCAD3,\n\t11703: 0xCAD8,\n\t11704: 0xCAD9,\n\t11705: 0xCAE0,\n\t11706: 0xCAEC,\n\t11707: 0xCAF4,\n\t11708: 0xCB08,\n\t11709: 0xCB10,\n\t11710: 0xCB14,\n\t11711: 0xCB18,\n\t11712: 0xCB20,\n\t11713: 0xCB21,\n\t11714: 0xCB41,\n\t11715: 0xCB48,\n\t11716: 0xCB49,\n\t11717: 0xCB4C,\n\t11718: 0xCB50,\n\t11719: 0xCB58,\n\t11720: 0xCB59,\n\t11721: 0xCB5D,\n\t11722: 0xCB64,\n\t11723: 0xCB78,\n\t11724: 0xCB79,\n\t11725: 0xCB9C,\n\t11726: 0xCBB8,\n\t11727: 0xCBD4,\n\t11728: 0xCBE4,\n\t11729: 0xCBE7,\n\t11730: 0xCBE9,\n\t11731: 0xCC0C,\n\t11732: 0xCC0D,\n\t11733: 0xCC10,\n\t11734: 0xCC14,\n\t11735: 0xCC1C,\n\t11736: 0xCC1D,\n\t11737: 0xCC21,\n\t11738: 0xCC22,\n\t11739: 0xCC27,\n\t11740: 0xCC28,\n\t11741: 0xCC29,\n\t11742: 0xCC2C,\n\t11743: 0xCC2E,\n\t11744: 0xCC30,\n\t11745: 0xCC38,\n\t11746: 0xCC39,\n\t11747: 0xCC3B,\n\t11748: 0xD63D,\n\t11749: 0xD63E,\n\t11750: 0xD63F,\n\t11751: 0xD641,\n\t11752: 0xD642,\n\t11753: 0xD643,\n\t11754: 0xD644,\n\t11755: 0xD646,\n\t11756: 0xD647,\n\t11757: 0xD64A,\n\t11758: 0xD64C,\n\t11759: 0xD64E,\n\t11760: 0xD64F,\n\t11761: 0xD650,\n\t11762: 0xD652,\n\t11763: 0xD653,\n\t11764: 0xD656,\n\t11765: 0xD657,\n\t11766: 0xD659,\n\t11767: 0xD65A,\n\t11768: 0xD65B,\n\t11769: 0xD65D,\n\t11770: 0xD65E,\n\t11771: 0xD65F,\n\t11772: 0xD660,\n\t11773: 0xD661,\n\t11774: 0xD662,\n\t11775: 0xD663,\n\t11776: 0xD664,\n\t11777: 0xD665,\n\t11778: 0xD666,\n\t11779: 0xD668,\n\t11780: 0xD66A,\n\t11781: 0xD66B,\n\t11782: 0xD66C,\n\t11783: 0xD66D,\n\t11784: 0xD66E,\n\t11785: 0xD66F,\n\t11786: 0xD672,\n\t11787: 0xD673,\n\t11788: 0xD675,\n\t11789: 0xD676,\n\t11790: 0xD677,\n\t11791: 0xD678,\n\t11792: 0xD679,\n\t11793: 0xD67A,\n\t11794: 0xD67B,\n\t11795: 0xD67C,\n\t11796: 0xD67D,\n\t11797: 0xD67E,\n\t11798: 0xD67F,\n\t11799: 0xD680,\n\t11800: 0xD681,\n\t11801: 0xD682,\n\t11802: 0xD684,\n\t11803: 0xD686,\n\t11804: 0xD687,\n\t11805: 0xD688,\n\t11806: 0xD689,\n\t11807: 0xD68A,\n\t11808: 0xD68B,\n\t11809: 0xD68E,\n\t11810: 0xD68F,\n\t11811: 0xD691,\n\t11812: 0xD692,\n\t11813: 0xD693,\n\t11814: 0xD695,\n\t11815: 0xD696,\n\t11816: 0xD697,\n\t11817: 0xD698,\n\t11818: 0xD699,\n\t11819: 0xD69A,\n\t11820: 0xD69B,\n\t11821: 0xD69C,\n\t11822: 0xD69E,\n\t11823: 0xD6A0,\n\t11824: 0xD6A2,\n\t11825: 0xD6A3,\n\t11826: 0xD6A4,\n\t11827: 0xD6A5,\n\t11828: 0xD6A6,\n\t11829: 0xD6A7,\n\t11830: 0xD6A9,\n\t11831: 0xD6AA,\n\t11832: 0xCC3C,\n\t11833: 0xCC3D,\n\t11834: 0xCC3E,\n\t11835: 0xCC44,\n\t11836: 0xCC45,\n\t11837: 0xCC48,\n\t11838: 0xCC4C,\n\t11839: 0xCC54,\n\t11840: 0xCC55,\n\t11841: 0xCC57,\n\t11842: 0xCC58,\n\t11843: 0xCC59,\n\t11844: 0xCC60,\n\t11845: 0xCC64,\n\t11846: 0xCC66,\n\t11847: 0xCC68,\n\t11848: 0xCC70,\n\t11849: 0xCC75,\n\t11850: 0xCC98,\n\t11851: 0xCC99,\n\t11852: 0xCC9C,\n\t11853: 0xCCA0,\n\t11854: 0xCCA8,\n\t11855: 0xCCA9,\n\t11856: 0xCCAB,\n\t11857: 0xCCAC,\n\t11858: 0xCCAD,\n\t11859: 0xCCB4,\n\t11860: 0xCCB5,\n\t11861: 0xCCB8,\n\t11862: 0xCCBC,\n\t11863: 0xCCC4,\n\t11864: 0xCCC5,\n\t11865: 0xCCC7,\n\t11866: 0xCCC9,\n\t11867: 0xCCD0,\n\t11868: 0xCCD4,\n\t11869: 0xCCE4,\n\t11870: 0xCCEC,\n\t11871: 0xCCF0,\n\t11872: 0xCD01,\n\t11873: 0xCD08,\n\t11874: 0xCD09,\n\t11875: 0xCD0C,\n\t11876: 0xCD10,\n\t11877: 0xCD18,\n\t11878: 0xCD19,\n\t11879: 0xCD1B,\n\t11880: 0xCD1D,\n\t11881: 0xCD24,\n\t11882: 0xCD28,\n\t11883: 0xCD2C,\n\t11884: 0xCD39,\n\t11885: 0xCD5C,\n\t11886: 0xCD60,\n\t11887: 0xCD64,\n\t11888: 0xCD6C,\n\t11889: 0xCD6D,\n\t11890: 0xCD6F,\n\t11891: 0xCD71,\n\t11892: 0xCD78,\n\t11893: 0xCD88,\n\t11894: 0xCD94,\n\t11895: 0xCD95,\n\t11896: 0xCD98,\n\t11897: 0xCD9C,\n\t11898: 0xCDA4,\n\t11899: 0xCDA5,\n\t11900: 0xCDA7,\n\t11901: 0xCDA9,\n\t11902: 0xCDB0,\n\t11903: 0xCDC4,\n\t11904: 0xCDCC,\n\t11905: 0xCDD0,\n\t11906: 0xCDE8,\n\t11907: 0xCDEC,\n\t11908: 0xCDF0,\n\t11909: 0xCDF8,\n\t11910: 0xCDF9,\n\t11911: 0xCDFB,\n\t11912: 0xCDFD,\n\t11913: 0xCE04,\n\t11914: 0xCE08,\n\t11915: 0xCE0C,\n\t11916: 0xCE14,\n\t11917: 0xCE19,\n\t11918: 0xCE20,\n\t11919: 0xCE21,\n\t11920: 0xCE24,\n\t11921: 0xCE28,\n\t11922: 0xCE30,\n\t11923: 0xCE31,\n\t11924: 0xCE33,\n\t11925: 0xCE35,\n\t11926: 0xD6AB,\n\t11927: 0xD6AD,\n\t11928: 0xD6AE,\n\t11929: 0xD6AF,\n\t11930: 0xD6B1,\n\t11931: 0xD6B2,\n\t11932: 0xD6B3,\n\t11933: 0xD6B4,\n\t11934: 0xD6B5,\n\t11935: 0xD6B6,\n\t11936: 0xD6B7,\n\t11937: 0xD6B8,\n\t11938: 0xD6BA,\n\t11939: 0xD6BC,\n\t11940: 0xD6BD,\n\t11941: 0xD6BE,\n\t11942: 0xD6BF,\n\t11943: 0xD6C0,\n\t11944: 0xD6C1,\n\t11945: 0xD6C2,\n\t11946: 0xD6C3,\n\t11947: 0xD6C6,\n\t11948: 0xD6C7,\n\t11949: 0xD6C9,\n\t11950: 0xD6CA,\n\t11951: 0xD6CB,\n\t11952: 0xD6CD,\n\t11953: 0xD6CE,\n\t11954: 0xD6CF,\n\t11955: 0xD6D0,\n\t11956: 0xD6D2,\n\t11957: 0xD6D3,\n\t11958: 0xD6D5,\n\t11959: 0xD6D6,\n\t11960: 0xD6D8,\n\t11961: 0xD6DA,\n\t11962: 0xD6DB,\n\t11963: 0xD6DC,\n\t11964: 0xD6DD,\n\t11965: 0xD6DE,\n\t11966: 0xD6DF,\n\t11967: 0xD6E1,\n\t11968: 0xD6E2,\n\t11969: 0xD6E3,\n\t11970: 0xD6E5,\n\t11971: 0xD6E6,\n\t11972: 0xD6E7,\n\t11973: 0xD6E9,\n\t11974: 0xD6EA,\n\t11975: 0xD6EB,\n\t11976: 0xD6EC,\n\t11977: 0xD6ED,\n\t11978: 0xD6EE,\n\t11979: 0xD6EF,\n\t11980: 0xD6F1,\n\t11981: 0xD6F2,\n\t11982: 0xD6F3,\n\t11983: 0xD6F4,\n\t11984: 0xD6F6,\n\t11985: 0xD6F7,\n\t11986: 0xD6F8,\n\t11987: 0xD6F9,\n\t11988: 0xD6FA,\n\t11989: 0xD6FB,\n\t11990: 0xD6FE,\n\t11991: 0xD6FF,\n\t11992: 0xD701,\n\t11993: 0xD702,\n\t11994: 0xD703,\n\t11995: 0xD705,\n\t11996: 0xD706,\n\t11997: 0xD707,\n\t11998: 0xD708,\n\t11999: 0xD709,\n\t12000: 0xD70A,\n\t12001: 0xD70B,\n\t12002: 0xD70C,\n\t12003: 0xD70D,\n\t12004: 0xD70E,\n\t12005: 0xD70F,\n\t12006: 0xD710,\n\t12007: 0xD712,\n\t12008: 0xD713,\n\t12009: 0xD714,\n\t12010: 0xCE58,\n\t12011: 0xCE59,\n\t12012: 0xCE5C,\n\t12013: 0xCE5F,\n\t12014: 0xCE60,\n\t12015: 0xCE61,\n\t12016: 0xCE68,\n\t12017: 0xCE69,\n\t12018: 0xCE6B,\n\t12019: 0xCE6D,\n\t12020: 0xCE74,\n\t12021: 0xCE75,\n\t12022: 0xCE78,\n\t12023: 0xCE7C,\n\t12024: 0xCE84,\n\t12025: 0xCE85,\n\t12026: 0xCE87,\n\t12027: 0xCE89,\n\t12028: 0xCE90,\n\t12029: 0xCE91,\n\t12030: 0xCE94,\n\t12031: 0xCE98,\n\t12032: 0xCEA0,\n\t12033: 0xCEA1,\n\t12034: 0xCEA3,\n\t12035: 0xCEA4,\n\t12036: 0xCEA5,\n\t12037: 0xCEAC,\n\t12038: 0xCEAD,\n\t12039: 0xCEC1,\n\t12040: 0xCEE4,\n\t12041: 0xCEE5,\n\t12042: 0xCEE8,\n\t12043: 0xCEEB,\n\t12044: 0xCEEC,\n\t12045: 0xCEF4,\n\t12046: 0xCEF5,\n\t12047: 0xCEF7,\n\t12048: 0xCEF8,\n\t12049: 0xCEF9,\n\t12050: 0xCF00,\n\t12051: 0xCF01,\n\t12052: 0xCF04,\n\t12053: 0xCF08,\n\t12054: 0xCF10,\n\t12055: 0xCF11,\n\t12056: 0xCF13,\n\t12057: 0xCF15,\n\t12058: 0xCF1C,\n\t12059: 0xCF20,\n\t12060: 0xCF24,\n\t12061: 0xCF2C,\n\t12062: 0xCF2D,\n\t12063: 0xCF2F,\n\t12064: 0xCF30,\n\t12065: 0xCF31,\n\t12066: 0xCF38,\n\t12067: 0xCF54,\n\t12068: 0xCF55,\n\t12069: 0xCF58,\n\t12070: 0xCF5C,\n\t12071: 0xCF64,\n\t12072: 0xCF65,\n\t12073: 0xCF67,\n\t12074: 0xCF69,\n\t12075: 0xCF70,\n\t12076: 0xCF71,\n\t12077: 0xCF74,\n\t12078: 0xCF78,\n\t12079: 0xCF80,\n\t12080: 0xCF85,\n\t12081: 0xCF8C,\n\t12082: 0xCFA1,\n\t12083: 0xCFA8,\n\t12084: 0xCFB0,\n\t12085: 0xCFC4,\n\t12086: 0xCFE0,\n\t12087: 0xCFE1,\n\t12088: 0xCFE4,\n\t12089: 0xCFE8,\n\t12090: 0xCFF0,\n\t12091: 0xCFF1,\n\t12092: 0xCFF3,\n\t12093: 0xCFF5,\n\t12094: 0xCFFC,\n\t12095: 0xD000,\n\t12096: 0xD004,\n\t12097: 0xD011,\n\t12098: 0xD018,\n\t12099: 0xD02D,\n\t12100: 0xD034,\n\t12101: 0xD035,\n\t12102: 0xD038,\n\t12103: 0xD03C,\n\t12104: 0xD715,\n\t12105: 0xD716,\n\t12106: 0xD717,\n\t12107: 0xD71A,\n\t12108: 0xD71B,\n\t12109: 0xD71D,\n\t12110: 0xD71E,\n\t12111: 0xD71F,\n\t12112: 0xD721,\n\t12113: 0xD722,\n\t12114: 0xD723,\n\t12115: 0xD724,\n\t12116: 0xD725,\n\t12117: 0xD726,\n\t12118: 0xD727,\n\t12119: 0xD72A,\n\t12120: 0xD72C,\n\t12121: 0xD72E,\n\t12122: 0xD72F,\n\t12123: 0xD730,\n\t12124: 0xD731,\n\t12125: 0xD732,\n\t12126: 0xD733,\n\t12127: 0xD736,\n\t12128: 0xD737,\n\t12129: 0xD739,\n\t12130: 0xD73A,\n\t12131: 0xD73B,\n\t12132: 0xD73D,\n\t12133: 0xD73E,\n\t12134: 0xD73F,\n\t12135: 0xD740,\n\t12136: 0xD741,\n\t12137: 0xD742,\n\t12138: 0xD743,\n\t12139: 0xD745,\n\t12140: 0xD746,\n\t12141: 0xD748,\n\t12142: 0xD74A,\n\t12143: 0xD74B,\n\t12144: 0xD74C,\n\t12145: 0xD74D,\n\t12146: 0xD74E,\n\t12147: 0xD74F,\n\t12148: 0xD752,\n\t12149: 0xD753,\n\t12150: 0xD755,\n\t12151: 0xD75A,\n\t12152: 0xD75B,\n\t12153: 0xD75C,\n\t12154: 0xD75D,\n\t12155: 0xD75E,\n\t12156: 0xD75F,\n\t12157: 0xD762,\n\t12158: 0xD764,\n\t12159: 0xD766,\n\t12160: 0xD767,\n\t12161: 0xD768,\n\t12162: 0xD76A,\n\t12163: 0xD76B,\n\t12164: 0xD76D,\n\t12165: 0xD76E,\n\t12166: 0xD76F,\n\t12167: 0xD771,\n\t12168: 0xD772,\n\t12169: 0xD773,\n\t12170: 0xD775,\n\t12171: 0xD776,\n\t12172: 0xD777,\n\t12173: 0xD778,\n\t12174: 0xD779,\n\t12175: 0xD77A,\n\t12176: 0xD77B,\n\t12177: 0xD77E,\n\t12178: 0xD77F,\n\t12179: 0xD780,\n\t12180: 0xD782,\n\t12181: 0xD783,\n\t12182: 0xD784,\n\t12183: 0xD785,\n\t12184: 0xD786,\n\t12185: 0xD787,\n\t12186: 0xD78A,\n\t12187: 0xD78B,\n\t12188: 0xD044,\n\t12189: 0xD045,\n\t12190: 0xD047,\n\t12191: 0xD049,\n\t12192: 0xD050,\n\t12193: 0xD054,\n\t12194: 0xD058,\n\t12195: 0xD060,\n\t12196: 0xD06C,\n\t12197: 0xD06D,\n\t12198: 0xD070,\n\t12199: 0xD074,\n\t12200: 0xD07C,\n\t12201: 0xD07D,\n\t12202: 0xD081,\n\t12203: 0xD0A4,\n\t12204: 0xD0A5,\n\t12205: 0xD0A8,\n\t12206: 0xD0AC,\n\t12207: 0xD0B4,\n\t12208: 0xD0B5,\n\t12209: 0xD0B7,\n\t12210: 0xD0B9,\n\t12211: 0xD0C0,\n\t12212: 0xD0C1,\n\t12213: 0xD0C4,\n\t12214: 0xD0C8,\n\t12215: 0xD0C9,\n\t12216: 0xD0D0,\n\t12217: 0xD0D1,\n\t12218: 0xD0D3,\n\t12219: 0xD0D4,\n\t12220: 0xD0D5,\n\t12221: 0xD0DC,\n\t12222: 0xD0DD,\n\t12223: 0xD0E0,\n\t12224: 0xD0E4,\n\t12225: 0xD0EC,\n\t12226: 0xD0ED,\n\t12227: 0xD0EF,\n\t12228: 0xD0F0,\n\t12229: 0xD0F1,\n\t12230: 0xD0F8,\n\t12231: 0xD10D,\n\t12232: 0xD130,\n\t12233: 0xD131,\n\t12234: 0xD134,\n\t12235: 0xD138,\n\t12236: 0xD13A,\n\t12237: 0xD140,\n\t12238: 0xD141,\n\t12239: 0xD143,\n\t12240: 0xD144,\n\t12241: 0xD145,\n\t12242: 0xD14C,\n\t12243: 0xD14D,\n\t12244: 0xD150,\n\t12245: 0xD154,\n\t12246: 0xD15C,\n\t12247: 0xD15D,\n\t12248: 0xD15F,\n\t12249: 0xD161,\n\t12250: 0xD168,\n\t12251: 0xD16C,\n\t12252: 0xD17C,\n\t12253: 0xD184,\n\t12254: 0xD188,\n\t12255: 0xD1A0,\n\t12256: 0xD1A1,\n\t12257: 0xD1A4,\n\t12258: 0xD1A8,\n\t12259: 0xD1B0,\n\t12260: 0xD1B1,\n\t12261: 0xD1B3,\n\t12262: 0xD1B5,\n\t12263: 0xD1BA,\n\t12264: 0xD1BC,\n\t12265: 0xD1C0,\n\t12266: 0xD1D8,\n\t12267: 0xD1F4,\n\t12268: 0xD1F8,\n\t12269: 0xD207,\n\t12270: 0xD209,\n\t12271: 0xD210,\n\t12272: 0xD22C,\n\t12273: 0xD22D,\n\t12274: 0xD230,\n\t12275: 0xD234,\n\t12276: 0xD23C,\n\t12277: 0xD23D,\n\t12278: 0xD23F,\n\t12279: 0xD241,\n\t12280: 0xD248,\n\t12281: 0xD25C,\n\t12282: 0xD78D,\n\t12283: 0xD78E,\n\t12284: 0xD78F,\n\t12285: 0xD791,\n\t12286: 0xD792,\n\t12287: 0xD793,\n\t12288: 0xD794,\n\t12289: 0xD795,\n\t12290: 0xD796,\n\t12291: 0xD797,\n\t12292: 0xD79A,\n\t12293: 0xD79C,\n\t12294: 0xD79E,\n\t12295: 0xD79F,\n\t12296: 0xD7A0,\n\t12297: 0xD7A1,\n\t12298: 0xD7A2,\n\t12299: 0xD7A3,\n\t12366: 0xD264,\n\t12367: 0xD280,\n\t12368: 0xD281,\n\t12369: 0xD284,\n\t12370: 0xD288,\n\t12371: 0xD290,\n\t12372: 0xD291,\n\t12373: 0xD295,\n\t12374: 0xD29C,\n\t12375: 0xD2A0,\n\t12376: 0xD2A4,\n\t12377: 0xD2AC,\n\t12378: 0xD2B1,\n\t12379: 0xD2B8,\n\t12380: 0xD2B9,\n\t12381: 0xD2BC,\n\t12382: 0xD2BF,\n\t12383: 0xD2C0,\n\t12384: 0xD2C2,\n\t12385: 0xD2C8,\n\t12386: 0xD2C9,\n\t12387: 0xD2CB,\n\t12388: 0xD2D4,\n\t12389: 0xD2D8,\n\t12390: 0xD2DC,\n\t12391: 0xD2E4,\n\t12392: 0xD2E5,\n\t12393: 0xD2F0,\n\t12394: 0xD2F1,\n\t12395: 0xD2F4,\n\t12396: 0xD2F8,\n\t12397: 0xD300,\n\t12398: 0xD301,\n\t12399: 0xD303,\n\t12400: 0xD305,\n\t12401: 0xD30C,\n\t12402: 0xD30D,\n\t12403: 0xD30E,\n\t12404: 0xD310,\n\t12405: 0xD314,\n\t12406: 0xD316,\n\t12407: 0xD31C,\n\t12408: 0xD31D,\n\t12409: 0xD31F,\n\t12410: 0xD320,\n\t12411: 0xD321,\n\t12412: 0xD325,\n\t12413: 0xD328,\n\t12414: 0xD329,\n\t12415: 0xD32C,\n\t12416: 0xD330,\n\t12417: 0xD338,\n\t12418: 0xD339,\n\t12419: 0xD33B,\n\t12420: 0xD33C,\n\t12421: 0xD33D,\n\t12422: 0xD344,\n\t12423: 0xD345,\n\t12424: 0xD37C,\n\t12425: 0xD37D,\n\t12426: 0xD380,\n\t12427: 0xD384,\n\t12428: 0xD38C,\n\t12429: 0xD38D,\n\t12430: 0xD38F,\n\t12431: 0xD390,\n\t12432: 0xD391,\n\t12433: 0xD398,\n\t12434: 0xD399,\n\t12435: 0xD39C,\n\t12436: 0xD3A0,\n\t12437: 0xD3A8,\n\t12438: 0xD3A9,\n\t12439: 0xD3AB,\n\t12440: 0xD3AD,\n\t12441: 0xD3B4,\n\t12442: 0xD3B8,\n\t12443: 0xD3BC,\n\t12444: 0xD3C4,\n\t12445: 0xD3C5,\n\t12446: 0xD3C8,\n\t12447: 0xD3C9,\n\t12448: 0xD3D0,\n\t12449: 0xD3D8,\n\t12450: 0xD3E1,\n\t12451: 0xD3E3,\n\t12452: 0xD3EC,\n\t12453: 0xD3ED,\n\t12454: 0xD3F0,\n\t12455: 0xD3F4,\n\t12456: 0xD3FC,\n\t12457: 0xD3FD,\n\t12458: 0xD3FF,\n\t12459: 0xD401,\n\t12460: 0xD408,\n\t12461: 0xD41D,\n\t12462: 0xD440,\n\t12463: 0xD444,\n\t12464: 0xD45C,\n\t12465: 0xD460,\n\t12466: 0xD464,\n\t12467: 0xD46D,\n\t12468: 0xD46F,\n\t12469: 0xD478,\n\t12470: 0xD479,\n\t12471: 0xD47C,\n\t12472: 0xD47F,\n\t12473: 0xD480,\n\t12474: 0xD482,\n\t12475: 0xD488,\n\t12476: 0xD489,\n\t12477: 0xD48B,\n\t12478: 0xD48D,\n\t12479: 0xD494,\n\t12480: 0xD4A9,\n\t12481: 0xD4CC,\n\t12482: 0xD4D0,\n\t12483: 0xD4D4,\n\t12484: 0xD4DC,\n\t12485: 0xD4DF,\n\t12486: 0xD4E8,\n\t12487: 0xD4EC,\n\t12488: 0xD4F0,\n\t12489: 0xD4F8,\n\t12490: 0xD4FB,\n\t12491: 0xD4FD,\n\t12492: 0xD504,\n\t12493: 0xD508,\n\t12494: 0xD50C,\n\t12495: 0xD514,\n\t12496: 0xD515,\n\t12497: 0xD517,\n\t12498: 0xD53C,\n\t12499: 0xD53D,\n\t12500: 0xD540,\n\t12501: 0xD544,\n\t12502: 0xD54C,\n\t12503: 0xD54D,\n\t12504: 0xD54F,\n\t12505: 0xD551,\n\t12506: 0xD558,\n\t12507: 0xD559,\n\t12508: 0xD55C,\n\t12509: 0xD560,\n\t12510: 0xD565,\n\t12511: 0xD568,\n\t12512: 0xD569,\n\t12513: 0xD56B,\n\t12514: 0xD56D,\n\t12515: 0xD574,\n\t12516: 0xD575,\n\t12517: 0xD578,\n\t12518: 0xD57C,\n\t12519: 0xD584,\n\t12520: 0xD585,\n\t12521: 0xD587,\n\t12522: 0xD588,\n\t12523: 0xD589,\n\t12524: 0xD590,\n\t12525: 0xD5A5,\n\t12526: 0xD5C8,\n\t12527: 0xD5C9,\n\t12528: 0xD5CC,\n\t12529: 0xD5D0,\n\t12530: 0xD5D2,\n\t12531: 0xD5D8,\n\t12532: 0xD5D9,\n\t12533: 0xD5DB,\n\t12534: 0xD5DD,\n\t12535: 0xD5E4,\n\t12536: 0xD5E5,\n\t12537: 0xD5E8,\n\t12538: 0xD5EC,\n\t12539: 0xD5F4,\n\t12540: 0xD5F5,\n\t12541: 0xD5F7,\n\t12542: 0xD5F9,\n\t12543: 0xD600,\n\t12544: 0xD601,\n\t12545: 0xD604,\n\t12546: 0xD608,\n\t12547: 0xD610,\n\t12548: 0xD611,\n\t12549: 0xD613,\n\t12550: 0xD614,\n\t12551: 0xD615,\n\t12552: 0xD61C,\n\t12553: 0xD620,\n\t12554: 0xD624,\n\t12555: 0xD62D,\n\t12556: 0xD638,\n\t12557: 0xD639,\n\t12558: 0xD63C,\n\t12559: 0xD640,\n\t12560: 0xD645,\n\t12561: 0xD648,\n\t12562: 0xD649,\n\t12563: 0xD64B,\n\t12564: 0xD64D,\n\t12565: 0xD651,\n\t12566: 0xD654,\n\t12567: 0xD655,\n\t12568: 0xD658,\n\t12569: 0xD65C,\n\t12570: 0xD667,\n\t12571: 0xD669,\n\t12572: 0xD670,\n\t12573: 0xD671,\n\t12574: 0xD674,\n\t12575: 0xD683,\n\t12576: 0xD685,\n\t12577: 0xD68C,\n\t12578: 0xD68D,\n\t12579: 0xD690,\n\t12580: 0xD694,\n\t12581: 0xD69D,\n\t12582: 0xD69F,\n\t12583: 0xD6A1,\n\t12584: 0xD6A8,\n\t12585: 0xD6AC,\n\t12586: 0xD6B0,\n\t12587: 0xD6B9,\n\t12588: 0xD6BB,\n\t12589: 0xD6C4,\n\t12590: 0xD6C5,\n\t12591: 0xD6C8,\n\t12592: 0xD6CC,\n\t12593: 0xD6D1,\n\t12594: 0xD6D4,\n\t12595: 0xD6D7,\n\t12596: 0xD6D9,\n\t12597: 0xD6E0,\n\t12598: 0xD6E4,\n\t12599: 0xD6E8,\n\t12600: 0xD6F0,\n\t12601: 0xD6F5,\n\t12602: 0xD6FC,\n\t12603: 0xD6FD,\n\t12604: 0xD700,\n\t12605: 0xD704,\n\t12606: 0xD711,\n\t12607: 0xD718,\n\t12608: 0xD719,\n\t12609: 0xD71C,\n\t12610: 0xD720,\n\t12611: 0xD728,\n\t12612: 0xD729,\n\t12613: 0xD72B,\n\t12614: 0xD72D,\n\t12615: 0xD734,\n\t12616: 0xD735,\n\t12617: 0xD738,\n\t12618: 0xD73C,\n\t12619: 0xD744,\n\t12620: 0xD747,\n\t12621: 0xD749,\n\t12622: 0xD750,\n\t12623: 0xD751,\n\t12624: 0xD754,\n\t12625: 0xD756,\n\t12626: 0xD757,\n\t12627: 0xD758,\n\t12628: 0xD759,\n\t12629: 0xD760,\n\t12630: 0xD761,\n\t12631: 0xD763,\n\t12632: 0xD765,\n\t12633: 0xD769,\n\t12634: 0xD76C,\n\t12635: 0xD770,\n\t12636: 0xD774,\n\t12637: 0xD77C,\n\t12638: 0xD77D,\n\t12639: 0xD781,\n\t12640: 0xD788,\n\t12641: 0xD789,\n\t12642: 0xD78C,\n\t12643: 0xD790,\n\t12644: 0xD798,\n\t12645: 0xD799,\n\t12646: 0xD79B,\n\t12647: 0xD79D,\n\t12742: 0x4F3D,\n\t12743: 0x4F73,\n\t12744: 0x5047,\n\t12745: 0x50F9,\n\t12746: 0x52A0,\n\t12747: 0x53EF,\n\t12748: 0x5475,\n\t12749: 0x54E5,\n\t12750: 0x5609,\n\t12751: 0x5AC1,\n\t12752: 0x5BB6,\n\t12753: 0x6687,\n\t12754: 0x67B6,\n\t12755: 0x67B7,\n\t12756: 0x67EF,\n\t12757: 0x6B4C,\n\t12758: 0x73C2,\n\t12759: 0x75C2,\n\t12760: 0x7A3C,\n\t12761: 0x82DB,\n\t12762: 0x8304,\n\t12763: 0x8857,\n\t12764: 0x8888,\n\t12765: 0x8A36,\n\t12766: 0x8CC8,\n\t12767: 0x8DCF,\n\t12768: 0x8EFB,\n\t12769: 0x8FE6,\n\t12770: 0x99D5,\n\t12771: 0x523B,\n\t12772: 0x5374,\n\t12773: 0x5404,\n\t12774: 0x606A,\n\t12775: 0x6164,\n\t12776: 0x6BBC,\n\t12777: 0x73CF,\n\t12778: 0x811A,\n\t12779: 0x89BA,\n\t12780: 0x89D2,\n\t12781: 0x95A3,\n\t12782: 0x4F83,\n\t12783: 0x520A,\n\t12784: 0x58BE,\n\t12785: 0x5978,\n\t12786: 0x59E6,\n\t12787: 0x5E72,\n\t12788: 0x5E79,\n\t12789: 0x61C7,\n\t12790: 0x63C0,\n\t12791: 0x6746,\n\t12792: 0x67EC,\n\t12793: 0x687F,\n\t12794: 0x6F97,\n\t12795: 0x764E,\n\t12796: 0x770B,\n\t12797: 0x78F5,\n\t12798: 0x7A08,\n\t12799: 0x7AFF,\n\t12800: 0x7C21,\n\t12801: 0x809D,\n\t12802: 0x826E,\n\t12803: 0x8271,\n\t12804: 0x8AEB,\n\t12805: 0x9593,\n\t12806: 0x4E6B,\n\t12807: 0x559D,\n\t12808: 0x66F7,\n\t12809: 0x6E34,\n\t12810: 0x78A3,\n\t12811: 0x7AED,\n\t12812: 0x845B,\n\t12813: 0x8910,\n\t12814: 0x874E,\n\t12815: 0x97A8,\n\t12816: 0x52D8,\n\t12817: 0x574E,\n\t12818: 0x582A,\n\t12819: 0x5D4C,\n\t12820: 0x611F,\n\t12821: 0x61BE,\n\t12822: 0x6221,\n\t12823: 0x6562,\n\t12824: 0x67D1,\n\t12825: 0x6A44,\n\t12826: 0x6E1B,\n\t12827: 0x7518,\n\t12828: 0x75B3,\n\t12829: 0x76E3,\n\t12830: 0x77B0,\n\t12831: 0x7D3A,\n\t12832: 0x90AF,\n\t12833: 0x9451,\n\t12834: 0x9452,\n\t12835: 0x9F95,\n\t12836: 0x5323,\n\t12837: 0x5CAC,\n\t12838: 0x7532,\n\t12839: 0x80DB,\n\t12840: 0x9240,\n\t12841: 0x9598,\n\t12842: 0x525B,\n\t12843: 0x5808,\n\t12844: 0x59DC,\n\t12845: 0x5CA1,\n\t12846: 0x5D17,\n\t12847: 0x5EB7,\n\t12848: 0x5F3A,\n\t12849: 0x5F4A,\n\t12850: 0x6177,\n\t12851: 0x6C5F,\n\t12852: 0x757A,\n\t12853: 0x7586,\n\t12854: 0x7CE0,\n\t12855: 0x7D73,\n\t12856: 0x7DB1,\n\t12857: 0x7F8C,\n\t12858: 0x8154,\n\t12859: 0x8221,\n\t12860: 0x8591,\n\t12861: 0x8941,\n\t12862: 0x8B1B,\n\t12863: 0x92FC,\n\t12864: 0x964D,\n\t12865: 0x9C47,\n\t12866: 0x4ECB,\n\t12867: 0x4EF7,\n\t12868: 0x500B,\n\t12869: 0x51F1,\n\t12870: 0x584F,\n\t12871: 0x6137,\n\t12872: 0x613E,\n\t12873: 0x6168,\n\t12874: 0x6539,\n\t12875: 0x69EA,\n\t12876: 0x6F11,\n\t12877: 0x75A5,\n\t12878: 0x7686,\n\t12879: 0x76D6,\n\t12880: 0x7B87,\n\t12881: 0x82A5,\n\t12882: 0x84CB,\n\t12883: 0xF900,\n\t12884: 0x93A7,\n\t12885: 0x958B,\n\t12886: 0x5580,\n\t12887: 0x5BA2,\n\t12888: 0x5751,\n\t12889: 0xF901,\n\t12890: 0x7CB3,\n\t12891: 0x7FB9,\n\t12892: 0x91B5,\n\t12893: 0x5028,\n\t12894: 0x53BB,\n\t12895: 0x5C45,\n\t12896: 0x5DE8,\n\t12897: 0x62D2,\n\t12898: 0x636E,\n\t12899: 0x64DA,\n\t12900: 0x64E7,\n\t12901: 0x6E20,\n\t12902: 0x70AC,\n\t12903: 0x795B,\n\t12904: 0x8DDD,\n\t12905: 0x8E1E,\n\t12906: 0xF902,\n\t12907: 0x907D,\n\t12908: 0x9245,\n\t12909: 0x92F8,\n\t12910: 0x4E7E,\n\t12911: 0x4EF6,\n\t12912: 0x5065,\n\t12913: 0x5DFE,\n\t12914: 0x5EFA,\n\t12915: 0x6106,\n\t12916: 0x6957,\n\t12917: 0x8171,\n\t12918: 0x8654,\n\t12919: 0x8E47,\n\t12920: 0x9375,\n\t12921: 0x9A2B,\n\t12922: 0x4E5E,\n\t12923: 0x5091,\n\t12924: 0x6770,\n\t12925: 0x6840,\n\t12926: 0x5109,\n\t12927: 0x528D,\n\t12928: 0x5292,\n\t12929: 0x6AA2,\n\t12930: 0x77BC,\n\t12931: 0x9210,\n\t12932: 0x9ED4,\n\t12933: 0x52AB,\n\t12934: 0x602F,\n\t12935: 0x8FF2,\n\t12936: 0x5048,\n\t12937: 0x61A9,\n\t12938: 0x63ED,\n\t12939: 0x64CA,\n\t12940: 0x683C,\n\t12941: 0x6A84,\n\t12942: 0x6FC0,\n\t12943: 0x8188,\n\t12944: 0x89A1,\n\t12945: 0x9694,\n\t12946: 0x5805,\n\t12947: 0x727D,\n\t12948: 0x72AC,\n\t12949: 0x7504,\n\t12950: 0x7D79,\n\t12951: 0x7E6D,\n\t12952: 0x80A9,\n\t12953: 0x898B,\n\t12954: 0x8B74,\n\t12955: 0x9063,\n\t12956: 0x9D51,\n\t12957: 0x6289,\n\t12958: 0x6C7A,\n\t12959: 0x6F54,\n\t12960: 0x7D50,\n\t12961: 0x7F3A,\n\t12962: 0x8A23,\n\t12963: 0x517C,\n\t12964: 0x614A,\n\t12965: 0x7B9D,\n\t12966: 0x8B19,\n\t12967: 0x9257,\n\t12968: 0x938C,\n\t12969: 0x4EAC,\n\t12970: 0x4FD3,\n\t12971: 0x501E,\n\t12972: 0x50BE,\n\t12973: 0x5106,\n\t12974: 0x52C1,\n\t12975: 0x52CD,\n\t12976: 0x537F,\n\t12977: 0x5770,\n\t12978: 0x5883,\n\t12979: 0x5E9A,\n\t12980: 0x5F91,\n\t12981: 0x6176,\n\t12982: 0x61AC,\n\t12983: 0x64CE,\n\t12984: 0x656C,\n\t12985: 0x666F,\n\t12986: 0x66BB,\n\t12987: 0x66F4,\n\t12988: 0x6897,\n\t12989: 0x6D87,\n\t12990: 0x7085,\n\t12991: 0x70F1,\n\t12992: 0x749F,\n\t12993: 0x74A5,\n\t12994: 0x74CA,\n\t12995: 0x75D9,\n\t12996: 0x786C,\n\t12997: 0x78EC,\n\t12998: 0x7ADF,\n\t12999: 0x7AF6,\n\t13000: 0x7D45,\n\t13001: 0x7D93,\n\t13002: 0x8015,\n\t13003: 0x803F,\n\t13004: 0x811B,\n\t13005: 0x8396,\n\t13006: 0x8B66,\n\t13007: 0x8F15,\n\t13008: 0x9015,\n\t13009: 0x93E1,\n\t13010: 0x9803,\n\t13011: 0x9838,\n\t13012: 0x9A5A,\n\t13013: 0x9BE8,\n\t13014: 0x4FC2,\n\t13015: 0x5553,\n\t13016: 0x583A,\n\t13017: 0x5951,\n\t13018: 0x5B63,\n\t13019: 0x5C46,\n\t13020: 0x60B8,\n\t13021: 0x6212,\n\t13022: 0x6842,\n\t13023: 0x68B0,\n\t13024: 0x68E8,\n\t13025: 0x6EAA,\n\t13026: 0x754C,\n\t13027: 0x7678,\n\t13028: 0x78CE,\n\t13029: 0x7A3D,\n\t13030: 0x7CFB,\n\t13031: 0x7E6B,\n\t13032: 0x7E7C,\n\t13033: 0x8A08,\n\t13034: 0x8AA1,\n\t13035: 0x8C3F,\n\t13036: 0x968E,\n\t13037: 0x9DC4,\n\t13038: 0x53E4,\n\t13039: 0x53E9,\n\t13040: 0x544A,\n\t13041: 0x5471,\n\t13042: 0x56FA,\n\t13043: 0x59D1,\n\t13044: 0x5B64,\n\t13045: 0x5C3B,\n\t13046: 0x5EAB,\n\t13047: 0x62F7,\n\t13048: 0x6537,\n\t13049: 0x6545,\n\t13050: 0x6572,\n\t13051: 0x66A0,\n\t13052: 0x67AF,\n\t13053: 0x69C1,\n\t13054: 0x6CBD,\n\t13055: 0x75FC,\n\t13056: 0x7690,\n\t13057: 0x777E,\n\t13058: 0x7A3F,\n\t13059: 0x7F94,\n\t13060: 0x8003,\n\t13061: 0x80A1,\n\t13062: 0x818F,\n\t13063: 0x82E6,\n\t13064: 0x82FD,\n\t13065: 0x83F0,\n\t13066: 0x85C1,\n\t13067: 0x8831,\n\t13068: 0x88B4,\n\t13069: 0x8AA5,\n\t13070: 0xF903,\n\t13071: 0x8F9C,\n\t13072: 0x932E,\n\t13073: 0x96C7,\n\t13074: 0x9867,\n\t13075: 0x9AD8,\n\t13076: 0x9F13,\n\t13077: 0x54ED,\n\t13078: 0x659B,\n\t13079: 0x66F2,\n\t13080: 0x688F,\n\t13081: 0x7A40,\n\t13082: 0x8C37,\n\t13083: 0x9D60,\n\t13084: 0x56F0,\n\t13085: 0x5764,\n\t13086: 0x5D11,\n\t13087: 0x6606,\n\t13088: 0x68B1,\n\t13089: 0x68CD,\n\t13090: 0x6EFE,\n\t13091: 0x7428,\n\t13092: 0x889E,\n\t13093: 0x9BE4,\n\t13094: 0x6C68,\n\t13095: 0xF904,\n\t13096: 0x9AA8,\n\t13097: 0x4F9B,\n\t13098: 0x516C,\n\t13099: 0x5171,\n\t13100: 0x529F,\n\t13101: 0x5B54,\n\t13102: 0x5DE5,\n\t13103: 0x6050,\n\t13104: 0x606D,\n\t13105: 0x62F1,\n\t13106: 0x63A7,\n\t13107: 0x653B,\n\t13108: 0x73D9,\n\t13109: 0x7A7A,\n\t13110: 0x86A3,\n\t13111: 0x8CA2,\n\t13112: 0x978F,\n\t13113: 0x4E32,\n\t13114: 0x5BE1,\n\t13115: 0x6208,\n\t13116: 0x679C,\n\t13117: 0x74DC,\n\t13118: 0x79D1,\n\t13119: 0x83D3,\n\t13120: 0x8A87,\n\t13121: 0x8AB2,\n\t13122: 0x8DE8,\n\t13123: 0x904E,\n\t13124: 0x934B,\n\t13125: 0x9846,\n\t13126: 0x5ED3,\n\t13127: 0x69E8,\n\t13128: 0x85FF,\n\t13129: 0x90ED,\n\t13130: 0xF905,\n\t13131: 0x51A0,\n\t13132: 0x5B98,\n\t13133: 0x5BEC,\n\t13134: 0x6163,\n\t13135: 0x68FA,\n\t13136: 0x6B3E,\n\t13137: 0x704C,\n\t13138: 0x742F,\n\t13139: 0x74D8,\n\t13140: 0x7BA1,\n\t13141: 0x7F50,\n\t13142: 0x83C5,\n\t13143: 0x89C0,\n\t13144: 0x8CAB,\n\t13145: 0x95DC,\n\t13146: 0x9928,\n\t13147: 0x522E,\n\t13148: 0x605D,\n\t13149: 0x62EC,\n\t13150: 0x9002,\n\t13151: 0x4F8A,\n\t13152: 0x5149,\n\t13153: 0x5321,\n\t13154: 0x58D9,\n\t13155: 0x5EE3,\n\t13156: 0x66E0,\n\t13157: 0x6D38,\n\t13158: 0x709A,\n\t13159: 0x72C2,\n\t13160: 0x73D6,\n\t13161: 0x7B50,\n\t13162: 0x80F1,\n\t13163: 0x945B,\n\t13164: 0x5366,\n\t13165: 0x639B,\n\t13166: 0x7F6B,\n\t13167: 0x4E56,\n\t13168: 0x5080,\n\t13169: 0x584A,\n\t13170: 0x58DE,\n\t13171: 0x602A,\n\t13172: 0x6127,\n\t13173: 0x62D0,\n\t13174: 0x69D0,\n\t13175: 0x9B41,\n\t13176: 0x5B8F,\n\t13177: 0x7D18,\n\t13178: 0x80B1,\n\t13179: 0x8F5F,\n\t13180: 0x4EA4,\n\t13181: 0x50D1,\n\t13182: 0x54AC,\n\t13183: 0x55AC,\n\t13184: 0x5B0C,\n\t13185: 0x5DA0,\n\t13186: 0x5DE7,\n\t13187: 0x652A,\n\t13188: 0x654E,\n\t13189: 0x6821,\n\t13190: 0x6A4B,\n\t13191: 0x72E1,\n\t13192: 0x768E,\n\t13193: 0x77EF,\n\t13194: 0x7D5E,\n\t13195: 0x7FF9,\n\t13196: 0x81A0,\n\t13197: 0x854E,\n\t13198: 0x86DF,\n\t13199: 0x8F03,\n\t13200: 0x8F4E,\n\t13201: 0x90CA,\n\t13202: 0x9903,\n\t13203: 0x9A55,\n\t13204: 0x9BAB,\n\t13205: 0x4E18,\n\t13206: 0x4E45,\n\t13207: 0x4E5D,\n\t13208: 0x4EC7,\n\t13209: 0x4FF1,\n\t13210: 0x5177,\n\t13211: 0x52FE,\n\t13212: 0x5340,\n\t13213: 0x53E3,\n\t13214: 0x53E5,\n\t13215: 0x548E,\n\t13216: 0x5614,\n\t13217: 0x5775,\n\t13218: 0x57A2,\n\t13219: 0x5BC7,\n\t13220: 0x5D87,\n\t13221: 0x5ED0,\n\t13222: 0x61FC,\n\t13223: 0x62D8,\n\t13224: 0x6551,\n\t13225: 0x67B8,\n\t13226: 0x67E9,\n\t13227: 0x69CB,\n\t13228: 0x6B50,\n\t13229: 0x6BC6,\n\t13230: 0x6BEC,\n\t13231: 0x6C42,\n\t13232: 0x6E9D,\n\t13233: 0x7078,\n\t13234: 0x72D7,\n\t13235: 0x7396,\n\t13236: 0x7403,\n\t13237: 0x77BF,\n\t13238: 0x77E9,\n\t13239: 0x7A76,\n\t13240: 0x7D7F,\n\t13241: 0x8009,\n\t13242: 0x81FC,\n\t13243: 0x8205,\n\t13244: 0x820A,\n\t13245: 0x82DF,\n\t13246: 0x8862,\n\t13247: 0x8B33,\n\t13248: 0x8CFC,\n\t13249: 0x8EC0,\n\t13250: 0x9011,\n\t13251: 0x90B1,\n\t13252: 0x9264,\n\t13253: 0x92B6,\n\t13254: 0x99D2,\n\t13255: 0x9A45,\n\t13256: 0x9CE9,\n\t13257: 0x9DD7,\n\t13258: 0x9F9C,\n\t13259: 0x570B,\n\t13260: 0x5C40,\n\t13261: 0x83CA,\n\t13262: 0x97A0,\n\t13263: 0x97AB,\n\t13264: 0x9EB4,\n\t13265: 0x541B,\n\t13266: 0x7A98,\n\t13267: 0x7FA4,\n\t13268: 0x88D9,\n\t13269: 0x8ECD,\n\t13270: 0x90E1,\n\t13271: 0x5800,\n\t13272: 0x5C48,\n\t13273: 0x6398,\n\t13274: 0x7A9F,\n\t13275: 0x5BAE,\n\t13276: 0x5F13,\n\t13277: 0x7A79,\n\t13278: 0x7AAE,\n\t13279: 0x828E,\n\t13280: 0x8EAC,\n\t13281: 0x5026,\n\t13282: 0x5238,\n\t13283: 0x52F8,\n\t13284: 0x5377,\n\t13285: 0x5708,\n\t13286: 0x62F3,\n\t13287: 0x6372,\n\t13288: 0x6B0A,\n\t13289: 0x6DC3,\n\t13290: 0x7737,\n\t13291: 0x53A5,\n\t13292: 0x7357,\n\t13293: 0x8568,\n\t13294: 0x8E76,\n\t13295: 0x95D5,\n\t13296: 0x673A,\n\t13297: 0x6AC3,\n\t13298: 0x6F70,\n\t13299: 0x8A6D,\n\t13300: 0x8ECC,\n\t13301: 0x994B,\n\t13302: 0xF906,\n\t13303: 0x6677,\n\t13304: 0x6B78,\n\t13305: 0x8CB4,\n\t13306: 0x9B3C,\n\t13307: 0xF907,\n\t13308: 0x53EB,\n\t13309: 0x572D,\n\t13310: 0x594E,\n\t13311: 0x63C6,\n\t13312: 0x69FB,\n\t13313: 0x73EA,\n\t13314: 0x7845,\n\t13315: 0x7ABA,\n\t13316: 0x7AC5,\n\t13317: 0x7CFE,\n\t13318: 0x8475,\n\t13319: 0x898F,\n\t13320: 0x8D73,\n\t13321: 0x9035,\n\t13322: 0x95A8,\n\t13323: 0x52FB,\n\t13324: 0x5747,\n\t13325: 0x7547,\n\t13326: 0x7B60,\n\t13327: 0x83CC,\n\t13328: 0x921E,\n\t13329: 0xF908,\n\t13330: 0x6A58,\n\t13331: 0x514B,\n\t13332: 0x524B,\n\t13333: 0x5287,\n\t13334: 0x621F,\n\t13335: 0x68D8,\n\t13336: 0x6975,\n\t13337: 0x9699,\n\t13338: 0x50C5,\n\t13339: 0x52A4,\n\t13340: 0x52E4,\n\t13341: 0x61C3,\n\t13342: 0x65A4,\n\t13343: 0x6839,\n\t13344: 0x69FF,\n\t13345: 0x747E,\n\t13346: 0x7B4B,\n\t13347: 0x82B9,\n\t13348: 0x83EB,\n\t13349: 0x89B2,\n\t13350: 0x8B39,\n\t13351: 0x8FD1,\n\t13352: 0x9949,\n\t13353: 0xF909,\n\t13354: 0x4ECA,\n\t13355: 0x5997,\n\t13356: 0x64D2,\n\t13357: 0x6611,\n\t13358: 0x6A8E,\n\t13359: 0x7434,\n\t13360: 0x7981,\n\t13361: 0x79BD,\n\t13362: 0x82A9,\n\t13363: 0x887E,\n\t13364: 0x887F,\n\t13365: 0x895F,\n\t13366: 0xF90A,\n\t13367: 0x9326,\n\t13368: 0x4F0B,\n\t13369: 0x53CA,\n\t13370: 0x6025,\n\t13371: 0x6271,\n\t13372: 0x6C72,\n\t13373: 0x7D1A,\n\t13374: 0x7D66,\n\t13375: 0x4E98,\n\t13376: 0x5162,\n\t13377: 0x77DC,\n\t13378: 0x80AF,\n\t13379: 0x4F01,\n\t13380: 0x4F0E,\n\t13381: 0x5176,\n\t13382: 0x5180,\n\t13383: 0x55DC,\n\t13384: 0x5668,\n\t13385: 0x573B,\n\t13386: 0x57FA,\n\t13387: 0x57FC,\n\t13388: 0x5914,\n\t13389: 0x5947,\n\t13390: 0x5993,\n\t13391: 0x5BC4,\n\t13392: 0x5C90,\n\t13393: 0x5D0E,\n\t13394: 0x5DF1,\n\t13395: 0x5E7E,\n\t13396: 0x5FCC,\n\t13397: 0x6280,\n\t13398: 0x65D7,\n\t13399: 0x65E3,\n\t13400: 0x671E,\n\t13401: 0x671F,\n\t13402: 0x675E,\n\t13403: 0x68CB,\n\t13404: 0x68C4,\n\t13405: 0x6A5F,\n\t13406: 0x6B3A,\n\t13407: 0x6C23,\n\t13408: 0x6C7D,\n\t13409: 0x6C82,\n\t13410: 0x6DC7,\n\t13411: 0x7398,\n\t13412: 0x7426,\n\t13413: 0x742A,\n\t13414: 0x7482,\n\t13415: 0x74A3,\n\t13416: 0x7578,\n\t13417: 0x757F,\n\t13418: 0x7881,\n\t13419: 0x78EF,\n\t13420: 0x7941,\n\t13421: 0x7947,\n\t13422: 0x7948,\n\t13423: 0x797A,\n\t13424: 0x7B95,\n\t13425: 0x7D00,\n\t13426: 0x7DBA,\n\t13427: 0x7F88,\n\t13428: 0x8006,\n\t13429: 0x802D,\n\t13430: 0x808C,\n\t13431: 0x8A18,\n\t13432: 0x8B4F,\n\t13433: 0x8C48,\n\t13434: 0x8D77,\n\t13435: 0x9321,\n\t13436: 0x9324,\n\t13437: 0x98E2,\n\t13438: 0x9951,\n\t13439: 0x9A0E,\n\t13440: 0x9A0F,\n\t13441: 0x9A65,\n\t13442: 0x9E92,\n\t13443: 0x7DCA,\n\t13444: 0x4F76,\n\t13445: 0x5409,\n\t13446: 0x62EE,\n\t13447: 0x6854,\n\t13448: 0x91D1,\n\t13449: 0x55AB,\n\t13450: 0x513A,\n\t13451: 0xF90B,\n\t13452: 0xF90C,\n\t13453: 0x5A1C,\n\t13454: 0x61E6,\n\t13455: 0xF90D,\n\t13456: 0x62CF,\n\t13457: 0x62FF,\n\t13458: 0xF90E,\n\t13459: 0xF90F,\n\t13460: 0xF910,\n\t13461: 0xF911,\n\t13462: 0xF912,\n\t13463: 0xF913,\n\t13464: 0x90A3,\n\t13465: 0xF914,\n\t13466: 0xF915,\n\t13467: 0xF916,\n\t13468: 0xF917,\n\t13469: 0xF918,\n\t13470: 0x8AFE,\n\t13471: 0xF919,\n\t13472: 0xF91A,\n\t13473: 0xF91B,\n\t13474: 0xF91C,\n\t13475: 0x6696,\n\t13476: 0xF91D,\n\t13477: 0x7156,\n\t13478: 0xF91E,\n\t13479: 0xF91F,\n\t13480: 0x96E3,\n\t13481: 0xF920,\n\t13482: 0x634F,\n\t13483: 0x637A,\n\t13484: 0x5357,\n\t13485: 0xF921,\n\t13486: 0x678F,\n\t13487: 0x6960,\n\t13488: 0x6E73,\n\t13489: 0xF922,\n\t13490: 0x7537,\n\t13491: 0xF923,\n\t13492: 0xF924,\n\t13493: 0xF925,\n\t13494: 0x7D0D,\n\t13495: 0xF926,\n\t13496: 0xF927,\n\t13497: 0x8872,\n\t13498: 0x56CA,\n\t13499: 0x5A18,\n\t13500: 0xF928,\n\t13501: 0xF929,\n\t13502: 0xF92A,\n\t13503: 0xF92B,\n\t13504: 0xF92C,\n\t13505: 0x4E43,\n\t13506: 0xF92D,\n\t13507: 0x5167,\n\t13508: 0x5948,\n\t13509: 0x67F0,\n\t13510: 0x8010,\n\t13511: 0xF92E,\n\t13512: 0x5973,\n\t13513: 0x5E74,\n\t13514: 0x649A,\n\t13515: 0x79CA,\n\t13516: 0x5FF5,\n\t13517: 0x606C,\n\t13518: 0x62C8,\n\t13519: 0x637B,\n\t13520: 0x5BE7,\n\t13521: 0x5BD7,\n\t13522: 0x52AA,\n\t13523: 0xF92F,\n\t13524: 0x5974,\n\t13525: 0x5F29,\n\t13526: 0x6012,\n\t13527: 0xF930,\n\t13528: 0xF931,\n\t13529: 0xF932,\n\t13530: 0x7459,\n\t13531: 0xF933,\n\t13532: 0xF934,\n\t13533: 0xF935,\n\t13534: 0xF936,\n\t13535: 0xF937,\n\t13536: 0xF938,\n\t13537: 0x99D1,\n\t13538: 0xF939,\n\t13539: 0xF93A,\n\t13540: 0xF93B,\n\t13541: 0xF93C,\n\t13542: 0xF93D,\n\t13543: 0xF93E,\n\t13544: 0xF93F,\n\t13545: 0xF940,\n\t13546: 0xF941,\n\t13547: 0xF942,\n\t13548: 0xF943,\n\t13549: 0x6FC3,\n\t13550: 0xF944,\n\t13551: 0xF945,\n\t13552: 0x81BF,\n\t13553: 0x8FB2,\n\t13554: 0x60F1,\n\t13555: 0xF946,\n\t13556: 0xF947,\n\t13557: 0x8166,\n\t13558: 0xF948,\n\t13559: 0xF949,\n\t13560: 0x5C3F,\n\t13561: 0xF94A,\n\t13562: 0xF94B,\n\t13563: 0xF94C,\n\t13564: 0xF94D,\n\t13565: 0xF94E,\n\t13566: 0xF94F,\n\t13567: 0xF950,\n\t13568: 0xF951,\n\t13569: 0x5AE9,\n\t13570: 0x8A25,\n\t13571: 0x677B,\n\t13572: 0x7D10,\n\t13573: 0xF952,\n\t13574: 0xF953,\n\t13575: 0xF954,\n\t13576: 0xF955,\n\t13577: 0xF956,\n\t13578: 0xF957,\n\t13579: 0x80FD,\n\t13580: 0xF958,\n\t13581: 0xF959,\n\t13582: 0x5C3C,\n\t13583: 0x6CE5,\n\t13584: 0x533F,\n\t13585: 0x6EBA,\n\t13586: 0x591A,\n\t13587: 0x8336,\n\t13588: 0x4E39,\n\t13589: 0x4EB6,\n\t13590: 0x4F46,\n\t13591: 0x55AE,\n\t13592: 0x5718,\n\t13593: 0x58C7,\n\t13594: 0x5F56,\n\t13595: 0x65B7,\n\t13596: 0x65E6,\n\t13597: 0x6A80,\n\t13598: 0x6BB5,\n\t13599: 0x6E4D,\n\t13600: 0x77ED,\n\t13601: 0x7AEF,\n\t13602: 0x7C1E,\n\t13603: 0x7DDE,\n\t13604: 0x86CB,\n\t13605: 0x8892,\n\t13606: 0x9132,\n\t13607: 0x935B,\n\t13608: 0x64BB,\n\t13609: 0x6FBE,\n\t13610: 0x737A,\n\t13611: 0x75B8,\n\t13612: 0x9054,\n\t13613: 0x5556,\n\t13614: 0x574D,\n\t13615: 0x61BA,\n\t13616: 0x64D4,\n\t13617: 0x66C7,\n\t13618: 0x6DE1,\n\t13619: 0x6E5B,\n\t13620: 0x6F6D,\n\t13621: 0x6FB9,\n\t13622: 0x75F0,\n\t13623: 0x8043,\n\t13624: 0x81BD,\n\t13625: 0x8541,\n\t13626: 0x8983,\n\t13627: 0x8AC7,\n\t13628: 0x8B5A,\n\t13629: 0x931F,\n\t13630: 0x6C93,\n\t13631: 0x7553,\n\t13632: 0x7B54,\n\t13633: 0x8E0F,\n\t13634: 0x905D,\n\t13635: 0x5510,\n\t13636: 0x5802,\n\t13637: 0x5858,\n\t13638: 0x5E62,\n\t13639: 0x6207,\n\t13640: 0x649E,\n\t13641: 0x68E0,\n\t13642: 0x7576,\n\t13643: 0x7CD6,\n\t13644: 0x87B3,\n\t13645: 0x9EE8,\n\t13646: 0x4EE3,\n\t13647: 0x5788,\n\t13648: 0x576E,\n\t13649: 0x5927,\n\t13650: 0x5C0D,\n\t13651: 0x5CB1,\n\t13652: 0x5E36,\n\t13653: 0x5F85,\n\t13654: 0x6234,\n\t13655: 0x64E1,\n\t13656: 0x73B3,\n\t13657: 0x81FA,\n\t13658: 0x888B,\n\t13659: 0x8CB8,\n\t13660: 0x968A,\n\t13661: 0x9EDB,\n\t13662: 0x5B85,\n\t13663: 0x5FB7,\n\t13664: 0x60B3,\n\t13665: 0x5012,\n\t13666: 0x5200,\n\t13667: 0x5230,\n\t13668: 0x5716,\n\t13669: 0x5835,\n\t13670: 0x5857,\n\t13671: 0x5C0E,\n\t13672: 0x5C60,\n\t13673: 0x5CF6,\n\t13674: 0x5D8B,\n\t13675: 0x5EA6,\n\t13676: 0x5F92,\n\t13677: 0x60BC,\n\t13678: 0x6311,\n\t13679: 0x6389,\n\t13680: 0x6417,\n\t13681: 0x6843,\n\t13682: 0x68F9,\n\t13683: 0x6AC2,\n\t13684: 0x6DD8,\n\t13685: 0x6E21,\n\t13686: 0x6ED4,\n\t13687: 0x6FE4,\n\t13688: 0x71FE,\n\t13689: 0x76DC,\n\t13690: 0x7779,\n\t13691: 0x79B1,\n\t13692: 0x7A3B,\n\t13693: 0x8404,\n\t13694: 0x89A9,\n\t13695: 0x8CED,\n\t13696: 0x8DF3,\n\t13697: 0x8E48,\n\t13698: 0x9003,\n\t13699: 0x9014,\n\t13700: 0x9053,\n\t13701: 0x90FD,\n\t13702: 0x934D,\n\t13703: 0x9676,\n\t13704: 0x97DC,\n\t13705: 0x6BD2,\n\t13706: 0x7006,\n\t13707: 0x7258,\n\t13708: 0x72A2,\n\t13709: 0x7368,\n\t13710: 0x7763,\n\t13711: 0x79BF,\n\t13712: 0x7BE4,\n\t13713: 0x7E9B,\n\t13714: 0x8B80,\n\t13715: 0x58A9,\n\t13716: 0x60C7,\n\t13717: 0x6566,\n\t13718: 0x65FD,\n\t13719: 0x66BE,\n\t13720: 0x6C8C,\n\t13721: 0x711E,\n\t13722: 0x71C9,\n\t13723: 0x8C5A,\n\t13724: 0x9813,\n\t13725: 0x4E6D,\n\t13726: 0x7A81,\n\t13727: 0x4EDD,\n\t13728: 0x51AC,\n\t13729: 0x51CD,\n\t13730: 0x52D5,\n\t13731: 0x540C,\n\t13732: 0x61A7,\n\t13733: 0x6771,\n\t13734: 0x6850,\n\t13735: 0x68DF,\n\t13736: 0x6D1E,\n\t13737: 0x6F7C,\n\t13738: 0x75BC,\n\t13739: 0x77B3,\n\t13740: 0x7AE5,\n\t13741: 0x80F4,\n\t13742: 0x8463,\n\t13743: 0x9285,\n\t13744: 0x515C,\n\t13745: 0x6597,\n\t13746: 0x675C,\n\t13747: 0x6793,\n\t13748: 0x75D8,\n\t13749: 0x7AC7,\n\t13750: 0x8373,\n\t13751: 0xF95A,\n\t13752: 0x8C46,\n\t13753: 0x9017,\n\t13754: 0x982D,\n\t13755: 0x5C6F,\n\t13756: 0x81C0,\n\t13757: 0x829A,\n\t13758: 0x9041,\n\t13759: 0x906F,\n\t13760: 0x920D,\n\t13761: 0x5F97,\n\t13762: 0x5D9D,\n\t13763: 0x6A59,\n\t13764: 0x71C8,\n\t13765: 0x767B,\n\t13766: 0x7B49,\n\t13767: 0x85E4,\n\t13768: 0x8B04,\n\t13769: 0x9127,\n\t13770: 0x9A30,\n\t13771: 0x5587,\n\t13772: 0x61F6,\n\t13773: 0xF95B,\n\t13774: 0x7669,\n\t13775: 0x7F85,\n\t13776: 0x863F,\n\t13777: 0x87BA,\n\t13778: 0x88F8,\n\t13779: 0x908F,\n\t13780: 0xF95C,\n\t13781: 0x6D1B,\n\t13782: 0x70D9,\n\t13783: 0x73DE,\n\t13784: 0x7D61,\n\t13785: 0x843D,\n\t13786: 0xF95D,\n\t13787: 0x916A,\n\t13788: 0x99F1,\n\t13789: 0xF95E,\n\t13790: 0x4E82,\n\t13791: 0x5375,\n\t13792: 0x6B04,\n\t13793: 0x6B12,\n\t13794: 0x703E,\n\t13795: 0x721B,\n\t13796: 0x862D,\n\t13797: 0x9E1E,\n\t13798: 0x524C,\n\t13799: 0x8FA3,\n\t13800: 0x5D50,\n\t13801: 0x64E5,\n\t13802: 0x652C,\n\t13803: 0x6B16,\n\t13804: 0x6FEB,\n\t13805: 0x7C43,\n\t13806: 0x7E9C,\n\t13807: 0x85CD,\n\t13808: 0x8964,\n\t13809: 0x89BD,\n\t13810: 0x62C9,\n\t13811: 0x81D8,\n\t13812: 0x881F,\n\t13813: 0x5ECA,\n\t13814: 0x6717,\n\t13815: 0x6D6A,\n\t13816: 0x72FC,\n\t13817: 0x7405,\n\t13818: 0x746F,\n\t13819: 0x8782,\n\t13820: 0x90DE,\n\t13821: 0x4F86,\n\t13822: 0x5D0D,\n\t13823: 0x5FA0,\n\t13824: 0x840A,\n\t13825: 0x51B7,\n\t13826: 0x63A0,\n\t13827: 0x7565,\n\t13828: 0x4EAE,\n\t13829: 0x5006,\n\t13830: 0x5169,\n\t13831: 0x51C9,\n\t13832: 0x6881,\n\t13833: 0x6A11,\n\t13834: 0x7CAE,\n\t13835: 0x7CB1,\n\t13836: 0x7CE7,\n\t13837: 0x826F,\n\t13838: 0x8AD2,\n\t13839: 0x8F1B,\n\t13840: 0x91CF,\n\t13841: 0x4FB6,\n\t13842: 0x5137,\n\t13843: 0x52F5,\n\t13844: 0x5442,\n\t13845: 0x5EEC,\n\t13846: 0x616E,\n\t13847: 0x623E,\n\t13848: 0x65C5,\n\t13849: 0x6ADA,\n\t13850: 0x6FFE,\n\t13851: 0x792A,\n\t13852: 0x85DC,\n\t13853: 0x8823,\n\t13854: 0x95AD,\n\t13855: 0x9A62,\n\t13856: 0x9A6A,\n\t13857: 0x9E97,\n\t13858: 0x9ECE,\n\t13859: 0x529B,\n\t13860: 0x66C6,\n\t13861: 0x6B77,\n\t13862: 0x701D,\n\t13863: 0x792B,\n\t13864: 0x8F62,\n\t13865: 0x9742,\n\t13866: 0x6190,\n\t13867: 0x6200,\n\t13868: 0x6523,\n\t13869: 0x6F23,\n\t13870: 0x7149,\n\t13871: 0x7489,\n\t13872: 0x7DF4,\n\t13873: 0x806F,\n\t13874: 0x84EE,\n\t13875: 0x8F26,\n\t13876: 0x9023,\n\t13877: 0x934A,\n\t13878: 0x51BD,\n\t13879: 0x5217,\n\t13880: 0x52A3,\n\t13881: 0x6D0C,\n\t13882: 0x70C8,\n\t13883: 0x88C2,\n\t13884: 0x5EC9,\n\t13885: 0x6582,\n\t13886: 0x6BAE,\n\t13887: 0x6FC2,\n\t13888: 0x7C3E,\n\t13889: 0x7375,\n\t13890: 0x4EE4,\n\t13891: 0x4F36,\n\t13892: 0x56F9,\n\t13893: 0xF95F,\n\t13894: 0x5CBA,\n\t13895: 0x5DBA,\n\t13896: 0x601C,\n\t13897: 0x73B2,\n\t13898: 0x7B2D,\n\t13899: 0x7F9A,\n\t13900: 0x7FCE,\n\t13901: 0x8046,\n\t13902: 0x901E,\n\t13903: 0x9234,\n\t13904: 0x96F6,\n\t13905: 0x9748,\n\t13906: 0x9818,\n\t13907: 0x9F61,\n\t13908: 0x4F8B,\n\t13909: 0x6FA7,\n\t13910: 0x79AE,\n\t13911: 0x91B4,\n\t13912: 0x96B7,\n\t13913: 0x52DE,\n\t13914: 0xF960,\n\t13915: 0x6488,\n\t13916: 0x64C4,\n\t13917: 0x6AD3,\n\t13918: 0x6F5E,\n\t13919: 0x7018,\n\t13920: 0x7210,\n\t13921: 0x76E7,\n\t13922: 0x8001,\n\t13923: 0x8606,\n\t13924: 0x865C,\n\t13925: 0x8DEF,\n\t13926: 0x8F05,\n\t13927: 0x9732,\n\t13928: 0x9B6F,\n\t13929: 0x9DFA,\n\t13930: 0x9E75,\n\t13931: 0x788C,\n\t13932: 0x797F,\n\t13933: 0x7DA0,\n\t13934: 0x83C9,\n\t13935: 0x9304,\n\t13936: 0x9E7F,\n\t13937: 0x9E93,\n\t13938: 0x8AD6,\n\t13939: 0x58DF,\n\t13940: 0x5F04,\n\t13941: 0x6727,\n\t13942: 0x7027,\n\t13943: 0x74CF,\n\t13944: 0x7C60,\n\t13945: 0x807E,\n\t13946: 0x5121,\n\t13947: 0x7028,\n\t13948: 0x7262,\n\t13949: 0x78CA,\n\t13950: 0x8CC2,\n\t13951: 0x8CDA,\n\t13952: 0x8CF4,\n\t13953: 0x96F7,\n\t13954: 0x4E86,\n\t13955: 0x50DA,\n\t13956: 0x5BEE,\n\t13957: 0x5ED6,\n\t13958: 0x6599,\n\t13959: 0x71CE,\n\t13960: 0x7642,\n\t13961: 0x77AD,\n\t13962: 0x804A,\n\t13963: 0x84FC,\n\t13964: 0x907C,\n\t13965: 0x9B27,\n\t13966: 0x9F8D,\n\t13967: 0x58D8,\n\t13968: 0x5A41,\n\t13969: 0x5C62,\n\t13970: 0x6A13,\n\t13971: 0x6DDA,\n\t13972: 0x6F0F,\n\t13973: 0x763B,\n\t13974: 0x7D2F,\n\t13975: 0x7E37,\n\t13976: 0x851E,\n\t13977: 0x8938,\n\t13978: 0x93E4,\n\t13979: 0x964B,\n\t13980: 0x5289,\n\t13981: 0x65D2,\n\t13982: 0x67F3,\n\t13983: 0x69B4,\n\t13984: 0x6D41,\n\t13985: 0x6E9C,\n\t13986: 0x700F,\n\t13987: 0x7409,\n\t13988: 0x7460,\n\t13989: 0x7559,\n\t13990: 0x7624,\n\t13991: 0x786B,\n\t13992: 0x8B2C,\n\t13993: 0x985E,\n\t13994: 0x516D,\n\t13995: 0x622E,\n\t13996: 0x9678,\n\t13997: 0x4F96,\n\t13998: 0x502B,\n\t13999: 0x5D19,\n\t14000: 0x6DEA,\n\t14001: 0x7DB8,\n\t14002: 0x8F2A,\n\t14003: 0x5F8B,\n\t14004: 0x6144,\n\t14005: 0x6817,\n\t14006: 0xF961,\n\t14007: 0x9686,\n\t14008: 0x52D2,\n\t14009: 0x808B,\n\t14010: 0x51DC,\n\t14011: 0x51CC,\n\t14012: 0x695E,\n\t14013: 0x7A1C,\n\t14014: 0x7DBE,\n\t14015: 0x83F1,\n\t14016: 0x9675,\n\t14017: 0x4FDA,\n\t14018: 0x5229,\n\t14019: 0x5398,\n\t14020: 0x540F,\n\t14021: 0x550E,\n\t14022: 0x5C65,\n\t14023: 0x60A7,\n\t14024: 0x674E,\n\t14025: 0x68A8,\n\t14026: 0x6D6C,\n\t14027: 0x7281,\n\t14028: 0x72F8,\n\t14029: 0x7406,\n\t14030: 0x7483,\n\t14031: 0xF962,\n\t14032: 0x75E2,\n\t14033: 0x7C6C,\n\t14034: 0x7F79,\n\t14035: 0x7FB8,\n\t14036: 0x8389,\n\t14037: 0x88CF,\n\t14038: 0x88E1,\n\t14039: 0x91CC,\n\t14040: 0x91D0,\n\t14041: 0x96E2,\n\t14042: 0x9BC9,\n\t14043: 0x541D,\n\t14044: 0x6F7E,\n\t14045: 0x71D0,\n\t14046: 0x7498,\n\t14047: 0x85FA,\n\t14048: 0x8EAA,\n\t14049: 0x96A3,\n\t14050: 0x9C57,\n\t14051: 0x9E9F,\n\t14052: 0x6797,\n\t14053: 0x6DCB,\n\t14054: 0x7433,\n\t14055: 0x81E8,\n\t14056: 0x9716,\n\t14057: 0x782C,\n\t14058: 0x7ACB,\n\t14059: 0x7B20,\n\t14060: 0x7C92,\n\t14061: 0x6469,\n\t14062: 0x746A,\n\t14063: 0x75F2,\n\t14064: 0x78BC,\n\t14065: 0x78E8,\n\t14066: 0x99AC,\n\t14067: 0x9B54,\n\t14068: 0x9EBB,\n\t14069: 0x5BDE,\n\t14070: 0x5E55,\n\t14071: 0x6F20,\n\t14072: 0x819C,\n\t14073: 0x83AB,\n\t14074: 0x9088,\n\t14075: 0x4E07,\n\t14076: 0x534D,\n\t14077: 0x5A29,\n\t14078: 0x5DD2,\n\t14079: 0x5F4E,\n\t14080: 0x6162,\n\t14081: 0x633D,\n\t14082: 0x6669,\n\t14083: 0x66FC,\n\t14084: 0x6EFF,\n\t14085: 0x6F2B,\n\t14086: 0x7063,\n\t14087: 0x779E,\n\t14088: 0x842C,\n\t14089: 0x8513,\n\t14090: 0x883B,\n\t14091: 0x8F13,\n\t14092: 0x9945,\n\t14093: 0x9C3B,\n\t14094: 0x551C,\n\t14095: 0x62B9,\n\t14096: 0x672B,\n\t14097: 0x6CAB,\n\t14098: 0x8309,\n\t14099: 0x896A,\n\t14100: 0x977A,\n\t14101: 0x4EA1,\n\t14102: 0x5984,\n\t14103: 0x5FD8,\n\t14104: 0x5FD9,\n\t14105: 0x671B,\n\t14106: 0x7DB2,\n\t14107: 0x7F54,\n\t14108: 0x8292,\n\t14109: 0x832B,\n\t14110: 0x83BD,\n\t14111: 0x8F1E,\n\t14112: 0x9099,\n\t14113: 0x57CB,\n\t14114: 0x59B9,\n\t14115: 0x5A92,\n\t14116: 0x5BD0,\n\t14117: 0x6627,\n\t14118: 0x679A,\n\t14119: 0x6885,\n\t14120: 0x6BCF,\n\t14121: 0x7164,\n\t14122: 0x7F75,\n\t14123: 0x8CB7,\n\t14124: 0x8CE3,\n\t14125: 0x9081,\n\t14126: 0x9B45,\n\t14127: 0x8108,\n\t14128: 0x8C8A,\n\t14129: 0x964C,\n\t14130: 0x9A40,\n\t14131: 0x9EA5,\n\t14132: 0x5B5F,\n\t14133: 0x6C13,\n\t14134: 0x731B,\n\t14135: 0x76F2,\n\t14136: 0x76DF,\n\t14137: 0x840C,\n\t14138: 0x51AA,\n\t14139: 0x8993,\n\t14140: 0x514D,\n\t14141: 0x5195,\n\t14142: 0x52C9,\n\t14143: 0x68C9,\n\t14144: 0x6C94,\n\t14145: 0x7704,\n\t14146: 0x7720,\n\t14147: 0x7DBF,\n\t14148: 0x7DEC,\n\t14149: 0x9762,\n\t14150: 0x9EB5,\n\t14151: 0x6EC5,\n\t14152: 0x8511,\n\t14153: 0x51A5,\n\t14154: 0x540D,\n\t14155: 0x547D,\n\t14156: 0x660E,\n\t14157: 0x669D,\n\t14158: 0x6927,\n\t14159: 0x6E9F,\n\t14160: 0x76BF,\n\t14161: 0x7791,\n\t14162: 0x8317,\n\t14163: 0x84C2,\n\t14164: 0x879F,\n\t14165: 0x9169,\n\t14166: 0x9298,\n\t14167: 0x9CF4,\n\t14168: 0x8882,\n\t14169: 0x4FAE,\n\t14170: 0x5192,\n\t14171: 0x52DF,\n\t14172: 0x59C6,\n\t14173: 0x5E3D,\n\t14174: 0x6155,\n\t14175: 0x6478,\n\t14176: 0x6479,\n\t14177: 0x66AE,\n\t14178: 0x67D0,\n\t14179: 0x6A21,\n\t14180: 0x6BCD,\n\t14181: 0x6BDB,\n\t14182: 0x725F,\n\t14183: 0x7261,\n\t14184: 0x7441,\n\t14185: 0x7738,\n\t14186: 0x77DB,\n\t14187: 0x8017,\n\t14188: 0x82BC,\n\t14189: 0x8305,\n\t14190: 0x8B00,\n\t14191: 0x8B28,\n\t14192: 0x8C8C,\n\t14193: 0x6728,\n\t14194: 0x6C90,\n\t14195: 0x7267,\n\t14196: 0x76EE,\n\t14197: 0x7766,\n\t14198: 0x7A46,\n\t14199: 0x9DA9,\n\t14200: 0x6B7F,\n\t14201: 0x6C92,\n\t14202: 0x5922,\n\t14203: 0x6726,\n\t14204: 0x8499,\n\t14205: 0x536F,\n\t14206: 0x5893,\n\t14207: 0x5999,\n\t14208: 0x5EDF,\n\t14209: 0x63CF,\n\t14210: 0x6634,\n\t14211: 0x6773,\n\t14212: 0x6E3A,\n\t14213: 0x732B,\n\t14214: 0x7AD7,\n\t14215: 0x82D7,\n\t14216: 0x9328,\n\t14217: 0x52D9,\n\t14218: 0x5DEB,\n\t14219: 0x61AE,\n\t14220: 0x61CB,\n\t14221: 0x620A,\n\t14222: 0x62C7,\n\t14223: 0x64AB,\n\t14224: 0x65E0,\n\t14225: 0x6959,\n\t14226: 0x6B66,\n\t14227: 0x6BCB,\n\t14228: 0x7121,\n\t14229: 0x73F7,\n\t14230: 0x755D,\n\t14231: 0x7E46,\n\t14232: 0x821E,\n\t14233: 0x8302,\n\t14234: 0x856A,\n\t14235: 0x8AA3,\n\t14236: 0x8CBF,\n\t14237: 0x9727,\n\t14238: 0x9D61,\n\t14239: 0x58A8,\n\t14240: 0x9ED8,\n\t14241: 0x5011,\n\t14242: 0x520E,\n\t14243: 0x543B,\n\t14244: 0x554F,\n\t14245: 0x6587,\n\t14246: 0x6C76,\n\t14247: 0x7D0A,\n\t14248: 0x7D0B,\n\t14249: 0x805E,\n\t14250: 0x868A,\n\t14251: 0x9580,\n\t14252: 0x96EF,\n\t14253: 0x52FF,\n\t14254: 0x6C95,\n\t14255: 0x7269,\n\t14256: 0x5473,\n\t14257: 0x5A9A,\n\t14258: 0x5C3E,\n\t14259: 0x5D4B,\n\t14260: 0x5F4C,\n\t14261: 0x5FAE,\n\t14262: 0x672A,\n\t14263: 0x68B6,\n\t14264: 0x6963,\n\t14265: 0x6E3C,\n\t14266: 0x6E44,\n\t14267: 0x7709,\n\t14268: 0x7C73,\n\t14269: 0x7F8E,\n\t14270: 0x8587,\n\t14271: 0x8B0E,\n\t14272: 0x8FF7,\n\t14273: 0x9761,\n\t14274: 0x9EF4,\n\t14275: 0x5CB7,\n\t14276: 0x60B6,\n\t14277: 0x610D,\n\t14278: 0x61AB,\n\t14279: 0x654F,\n\t14280: 0x65FB,\n\t14281: 0x65FC,\n\t14282: 0x6C11,\n\t14283: 0x6CEF,\n\t14284: 0x739F,\n\t14285: 0x73C9,\n\t14286: 0x7DE1,\n\t14287: 0x9594,\n\t14288: 0x5BC6,\n\t14289: 0x871C,\n\t14290: 0x8B10,\n\t14291: 0x525D,\n\t14292: 0x535A,\n\t14293: 0x62CD,\n\t14294: 0x640F,\n\t14295: 0x64B2,\n\t14296: 0x6734,\n\t14297: 0x6A38,\n\t14298: 0x6CCA,\n\t14299: 0x73C0,\n\t14300: 0x749E,\n\t14301: 0x7B94,\n\t14302: 0x7C95,\n\t14303: 0x7E1B,\n\t14304: 0x818A,\n\t14305: 0x8236,\n\t14306: 0x8584,\n\t14307: 0x8FEB,\n\t14308: 0x96F9,\n\t14309: 0x99C1,\n\t14310: 0x4F34,\n\t14311: 0x534A,\n\t14312: 0x53CD,\n\t14313: 0x53DB,\n\t14314: 0x62CC,\n\t14315: 0x642C,\n\t14316: 0x6500,\n\t14317: 0x6591,\n\t14318: 0x69C3,\n\t14319: 0x6CEE,\n\t14320: 0x6F58,\n\t14321: 0x73ED,\n\t14322: 0x7554,\n\t14323: 0x7622,\n\t14324: 0x76E4,\n\t14325: 0x76FC,\n\t14326: 0x78D0,\n\t14327: 0x78FB,\n\t14328: 0x792C,\n\t14329: 0x7D46,\n\t14330: 0x822C,\n\t14331: 0x87E0,\n\t14332: 0x8FD4,\n\t14333: 0x9812,\n\t14334: 0x98EF,\n\t14335: 0x52C3,\n\t14336: 0x62D4,\n\t14337: 0x64A5,\n\t14338: 0x6E24,\n\t14339: 0x6F51,\n\t14340: 0x767C,\n\t14341: 0x8DCB,\n\t14342: 0x91B1,\n\t14343: 0x9262,\n\t14344: 0x9AEE,\n\t14345: 0x9B43,\n\t14346: 0x5023,\n\t14347: 0x508D,\n\t14348: 0x574A,\n\t14349: 0x59A8,\n\t14350: 0x5C28,\n\t14351: 0x5E47,\n\t14352: 0x5F77,\n\t14353: 0x623F,\n\t14354: 0x653E,\n\t14355: 0x65B9,\n\t14356: 0x65C1,\n\t14357: 0x6609,\n\t14358: 0x678B,\n\t14359: 0x699C,\n\t14360: 0x6EC2,\n\t14361: 0x78C5,\n\t14362: 0x7D21,\n\t14363: 0x80AA,\n\t14364: 0x8180,\n\t14365: 0x822B,\n\t14366: 0x82B3,\n\t14367: 0x84A1,\n\t14368: 0x868C,\n\t14369: 0x8A2A,\n\t14370: 0x8B17,\n\t14371: 0x90A6,\n\t14372: 0x9632,\n\t14373: 0x9F90,\n\t14374: 0x500D,\n\t14375: 0x4FF3,\n\t14376: 0xF963,\n\t14377: 0x57F9,\n\t14378: 0x5F98,\n\t14379: 0x62DC,\n\t14380: 0x6392,\n\t14381: 0x676F,\n\t14382: 0x6E43,\n\t14383: 0x7119,\n\t14384: 0x76C3,\n\t14385: 0x80CC,\n\t14386: 0x80DA,\n\t14387: 0x88F4,\n\t14388: 0x88F5,\n\t14389: 0x8919,\n\t14390: 0x8CE0,\n\t14391: 0x8F29,\n\t14392: 0x914D,\n\t14393: 0x966A,\n\t14394: 0x4F2F,\n\t14395: 0x4F70,\n\t14396: 0x5E1B,\n\t14397: 0x67CF,\n\t14398: 0x6822,\n\t14399: 0x767D,\n\t14400: 0x767E,\n\t14401: 0x9B44,\n\t14402: 0x5E61,\n\t14403: 0x6A0A,\n\t14404: 0x7169,\n\t14405: 0x71D4,\n\t14406: 0x756A,\n\t14407: 0xF964,\n\t14408: 0x7E41,\n\t14409: 0x8543,\n\t14410: 0x85E9,\n\t14411: 0x98DC,\n\t14412: 0x4F10,\n\t14413: 0x7B4F,\n\t14414: 0x7F70,\n\t14415: 0x95A5,\n\t14416: 0x51E1,\n\t14417: 0x5E06,\n\t14418: 0x68B5,\n\t14419: 0x6C3E,\n\t14420: 0x6C4E,\n\t14421: 0x6CDB,\n\t14422: 0x72AF,\n\t14423: 0x7BC4,\n\t14424: 0x8303,\n\t14425: 0x6CD5,\n\t14426: 0x743A,\n\t14427: 0x50FB,\n\t14428: 0x5288,\n\t14429: 0x58C1,\n\t14430: 0x64D8,\n\t14431: 0x6A97,\n\t14432: 0x74A7,\n\t14433: 0x7656,\n\t14434: 0x78A7,\n\t14435: 0x8617,\n\t14436: 0x95E2,\n\t14437: 0x9739,\n\t14438: 0xF965,\n\t14439: 0x535E,\n\t14440: 0x5F01,\n\t14441: 0x8B8A,\n\t14442: 0x8FA8,\n\t14443: 0x8FAF,\n\t14444: 0x908A,\n\t14445: 0x5225,\n\t14446: 0x77A5,\n\t14447: 0x9C49,\n\t14448: 0x9F08,\n\t14449: 0x4E19,\n\t14450: 0x5002,\n\t14451: 0x5175,\n\t14452: 0x5C5B,\n\t14453: 0x5E77,\n\t14454: 0x661E,\n\t14455: 0x663A,\n\t14456: 0x67C4,\n\t14457: 0x68C5,\n\t14458: 0x70B3,\n\t14459: 0x7501,\n\t14460: 0x75C5,\n\t14461: 0x79C9,\n\t14462: 0x7ADD,\n\t14463: 0x8F27,\n\t14464: 0x9920,\n\t14465: 0x9A08,\n\t14466: 0x4FDD,\n\t14467: 0x5821,\n\t14468: 0x5831,\n\t14469: 0x5BF6,\n\t14470: 0x666E,\n\t14471: 0x6B65,\n\t14472: 0x6D11,\n\t14473: 0x6E7A,\n\t14474: 0x6F7D,\n\t14475: 0x73E4,\n\t14476: 0x752B,\n\t14477: 0x83E9,\n\t14478: 0x88DC,\n\t14479: 0x8913,\n\t14480: 0x8B5C,\n\t14481: 0x8F14,\n\t14482: 0x4F0F,\n\t14483: 0x50D5,\n\t14484: 0x5310,\n\t14485: 0x535C,\n\t14486: 0x5B93,\n\t14487: 0x5FA9,\n\t14488: 0x670D,\n\t14489: 0x798F,\n\t14490: 0x8179,\n\t14491: 0x832F,\n\t14492: 0x8514,\n\t14493: 0x8907,\n\t14494: 0x8986,\n\t14495: 0x8F39,\n\t14496: 0x8F3B,\n\t14497: 0x99A5,\n\t14498: 0x9C12,\n\t14499: 0x672C,\n\t14500: 0x4E76,\n\t14501: 0x4FF8,\n\t14502: 0x5949,\n\t14503: 0x5C01,\n\t14504: 0x5CEF,\n\t14505: 0x5CF0,\n\t14506: 0x6367,\n\t14507: 0x68D2,\n\t14508: 0x70FD,\n\t14509: 0x71A2,\n\t14510: 0x742B,\n\t14511: 0x7E2B,\n\t14512: 0x84EC,\n\t14513: 0x8702,\n\t14514: 0x9022,\n\t14515: 0x92D2,\n\t14516: 0x9CF3,\n\t14517: 0x4E0D,\n\t14518: 0x4ED8,\n\t14519: 0x4FEF,\n\t14520: 0x5085,\n\t14521: 0x5256,\n\t14522: 0x526F,\n\t14523: 0x5426,\n\t14524: 0x5490,\n\t14525: 0x57E0,\n\t14526: 0x592B,\n\t14527: 0x5A66,\n\t14528: 0x5B5A,\n\t14529: 0x5B75,\n\t14530: 0x5BCC,\n\t14531: 0x5E9C,\n\t14532: 0xF966,\n\t14533: 0x6276,\n\t14534: 0x6577,\n\t14535: 0x65A7,\n\t14536: 0x6D6E,\n\t14537: 0x6EA5,\n\t14538: 0x7236,\n\t14539: 0x7B26,\n\t14540: 0x7C3F,\n\t14541: 0x7F36,\n\t14542: 0x8150,\n\t14543: 0x8151,\n\t14544: 0x819A,\n\t14545: 0x8240,\n\t14546: 0x8299,\n\t14547: 0x83A9,\n\t14548: 0x8A03,\n\t14549: 0x8CA0,\n\t14550: 0x8CE6,\n\t14551: 0x8CFB,\n\t14552: 0x8D74,\n\t14553: 0x8DBA,\n\t14554: 0x90E8,\n\t14555: 0x91DC,\n\t14556: 0x961C,\n\t14557: 0x9644,\n\t14558: 0x99D9,\n\t14559: 0x9CE7,\n\t14560: 0x5317,\n\t14561: 0x5206,\n\t14562: 0x5429,\n\t14563: 0x5674,\n\t14564: 0x58B3,\n\t14565: 0x5954,\n\t14566: 0x596E,\n\t14567: 0x5FFF,\n\t14568: 0x61A4,\n\t14569: 0x626E,\n\t14570: 0x6610,\n\t14571: 0x6C7E,\n\t14572: 0x711A,\n\t14573: 0x76C6,\n\t14574: 0x7C89,\n\t14575: 0x7CDE,\n\t14576: 0x7D1B,\n\t14577: 0x82AC,\n\t14578: 0x8CC1,\n\t14579: 0x96F0,\n\t14580: 0xF967,\n\t14581: 0x4F5B,\n\t14582: 0x5F17,\n\t14583: 0x5F7F,\n\t14584: 0x62C2,\n\t14585: 0x5D29,\n\t14586: 0x670B,\n\t14587: 0x68DA,\n\t14588: 0x787C,\n\t14589: 0x7E43,\n\t14590: 0x9D6C,\n\t14591: 0x4E15,\n\t14592: 0x5099,\n\t14593: 0x5315,\n\t14594: 0x532A,\n\t14595: 0x5351,\n\t14596: 0x5983,\n\t14597: 0x5A62,\n\t14598: 0x5E87,\n\t14599: 0x60B2,\n\t14600: 0x618A,\n\t14601: 0x6249,\n\t14602: 0x6279,\n\t14603: 0x6590,\n\t14604: 0x6787,\n\t14605: 0x69A7,\n\t14606: 0x6BD4,\n\t14607: 0x6BD6,\n\t14608: 0x6BD7,\n\t14609: 0x6BD8,\n\t14610: 0x6CB8,\n\t14611: 0xF968,\n\t14612: 0x7435,\n\t14613: 0x75FA,\n\t14614: 0x7812,\n\t14615: 0x7891,\n\t14616: 0x79D5,\n\t14617: 0x79D8,\n\t14618: 0x7C83,\n\t14619: 0x7DCB,\n\t14620: 0x7FE1,\n\t14621: 0x80A5,\n\t14622: 0x813E,\n\t14623: 0x81C2,\n\t14624: 0x83F2,\n\t14625: 0x871A,\n\t14626: 0x88E8,\n\t14627: 0x8AB9,\n\t14628: 0x8B6C,\n\t14629: 0x8CBB,\n\t14630: 0x9119,\n\t14631: 0x975E,\n\t14632: 0x98DB,\n\t14633: 0x9F3B,\n\t14634: 0x56AC,\n\t14635: 0x5B2A,\n\t14636: 0x5F6C,\n\t14637: 0x658C,\n\t14638: 0x6AB3,\n\t14639: 0x6BAF,\n\t14640: 0x6D5C,\n\t14641: 0x6FF1,\n\t14642: 0x7015,\n\t14643: 0x725D,\n\t14644: 0x73AD,\n\t14645: 0x8CA7,\n\t14646: 0x8CD3,\n\t14647: 0x983B,\n\t14648: 0x6191,\n\t14649: 0x6C37,\n\t14650: 0x8058,\n\t14651: 0x9A01,\n\t14652: 0x4E4D,\n\t14653: 0x4E8B,\n\t14654: 0x4E9B,\n\t14655: 0x4ED5,\n\t14656: 0x4F3A,\n\t14657: 0x4F3C,\n\t14658: 0x4F7F,\n\t14659: 0x4FDF,\n\t14660: 0x50FF,\n\t14661: 0x53F2,\n\t14662: 0x53F8,\n\t14663: 0x5506,\n\t14664: 0x55E3,\n\t14665: 0x56DB,\n\t14666: 0x58EB,\n\t14667: 0x5962,\n\t14668: 0x5A11,\n\t14669: 0x5BEB,\n\t14670: 0x5BFA,\n\t14671: 0x5C04,\n\t14672: 0x5DF3,\n\t14673: 0x5E2B,\n\t14674: 0x5F99,\n\t14675: 0x601D,\n\t14676: 0x6368,\n\t14677: 0x659C,\n\t14678: 0x65AF,\n\t14679: 0x67F6,\n\t14680: 0x67FB,\n\t14681: 0x68AD,\n\t14682: 0x6B7B,\n\t14683: 0x6C99,\n\t14684: 0x6CD7,\n\t14685: 0x6E23,\n\t14686: 0x7009,\n\t14687: 0x7345,\n\t14688: 0x7802,\n\t14689: 0x793E,\n\t14690: 0x7940,\n\t14691: 0x7960,\n\t14692: 0x79C1,\n\t14693: 0x7BE9,\n\t14694: 0x7D17,\n\t14695: 0x7D72,\n\t14696: 0x8086,\n\t14697: 0x820D,\n\t14698: 0x838E,\n\t14699: 0x84D1,\n\t14700: 0x86C7,\n\t14701: 0x88DF,\n\t14702: 0x8A50,\n\t14703: 0x8A5E,\n\t14704: 0x8B1D,\n\t14705: 0x8CDC,\n\t14706: 0x8D66,\n\t14707: 0x8FAD,\n\t14708: 0x90AA,\n\t14709: 0x98FC,\n\t14710: 0x99DF,\n\t14711: 0x9E9D,\n\t14712: 0x524A,\n\t14713: 0xF969,\n\t14714: 0x6714,\n\t14715: 0xF96A,\n\t14716: 0x5098,\n\t14717: 0x522A,\n\t14718: 0x5C71,\n\t14719: 0x6563,\n\t14720: 0x6C55,\n\t14721: 0x73CA,\n\t14722: 0x7523,\n\t14723: 0x759D,\n\t14724: 0x7B97,\n\t14725: 0x849C,\n\t14726: 0x9178,\n\t14727: 0x9730,\n\t14728: 0x4E77,\n\t14729: 0x6492,\n\t14730: 0x6BBA,\n\t14731: 0x715E,\n\t14732: 0x85A9,\n\t14733: 0x4E09,\n\t14734: 0xF96B,\n\t14735: 0x6749,\n\t14736: 0x68EE,\n\t14737: 0x6E17,\n\t14738: 0x829F,\n\t14739: 0x8518,\n\t14740: 0x886B,\n\t14741: 0x63F7,\n\t14742: 0x6F81,\n\t14743: 0x9212,\n\t14744: 0x98AF,\n\t14745: 0x4E0A,\n\t14746: 0x50B7,\n\t14747: 0x50CF,\n\t14748: 0x511F,\n\t14749: 0x5546,\n\t14750: 0x55AA,\n\t14751: 0x5617,\n\t14752: 0x5B40,\n\t14753: 0x5C19,\n\t14754: 0x5CE0,\n\t14755: 0x5E38,\n\t14756: 0x5E8A,\n\t14757: 0x5EA0,\n\t14758: 0x5EC2,\n\t14759: 0x60F3,\n\t14760: 0x6851,\n\t14761: 0x6A61,\n\t14762: 0x6E58,\n\t14763: 0x723D,\n\t14764: 0x7240,\n\t14765: 0x72C0,\n\t14766: 0x76F8,\n\t14767: 0x7965,\n\t14768: 0x7BB1,\n\t14769: 0x7FD4,\n\t14770: 0x88F3,\n\t14771: 0x89F4,\n\t14772: 0x8A73,\n\t14773: 0x8C61,\n\t14774: 0x8CDE,\n\t14775: 0x971C,\n\t14776: 0x585E,\n\t14777: 0x74BD,\n\t14778: 0x8CFD,\n\t14779: 0x55C7,\n\t14780: 0xF96C,\n\t14781: 0x7A61,\n\t14782: 0x7D22,\n\t14783: 0x8272,\n\t14784: 0x7272,\n\t14785: 0x751F,\n\t14786: 0x7525,\n\t14787: 0xF96D,\n\t14788: 0x7B19,\n\t14789: 0x5885,\n\t14790: 0x58FB,\n\t14791: 0x5DBC,\n\t14792: 0x5E8F,\n\t14793: 0x5EB6,\n\t14794: 0x5F90,\n\t14795: 0x6055,\n\t14796: 0x6292,\n\t14797: 0x637F,\n\t14798: 0x654D,\n\t14799: 0x6691,\n\t14800: 0x66D9,\n\t14801: 0x66F8,\n\t14802: 0x6816,\n\t14803: 0x68F2,\n\t14804: 0x7280,\n\t14805: 0x745E,\n\t14806: 0x7B6E,\n\t14807: 0x7D6E,\n\t14808: 0x7DD6,\n\t14809: 0x7F72,\n\t14810: 0x80E5,\n\t14811: 0x8212,\n\t14812: 0x85AF,\n\t14813: 0x897F,\n\t14814: 0x8A93,\n\t14815: 0x901D,\n\t14816: 0x92E4,\n\t14817: 0x9ECD,\n\t14818: 0x9F20,\n\t14819: 0x5915,\n\t14820: 0x596D,\n\t14821: 0x5E2D,\n\t14822: 0x60DC,\n\t14823: 0x6614,\n\t14824: 0x6673,\n\t14825: 0x6790,\n\t14826: 0x6C50,\n\t14827: 0x6DC5,\n\t14828: 0x6F5F,\n\t14829: 0x77F3,\n\t14830: 0x78A9,\n\t14831: 0x84C6,\n\t14832: 0x91CB,\n\t14833: 0x932B,\n\t14834: 0x4ED9,\n\t14835: 0x50CA,\n\t14836: 0x5148,\n\t14837: 0x5584,\n\t14838: 0x5B0B,\n\t14839: 0x5BA3,\n\t14840: 0x6247,\n\t14841: 0x657E,\n\t14842: 0x65CB,\n\t14843: 0x6E32,\n\t14844: 0x717D,\n\t14845: 0x7401,\n\t14846: 0x7444,\n\t14847: 0x7487,\n\t14848: 0x74BF,\n\t14849: 0x766C,\n\t14850: 0x79AA,\n\t14851: 0x7DDA,\n\t14852: 0x7E55,\n\t14853: 0x7FA8,\n\t14854: 0x817A,\n\t14855: 0x81B3,\n\t14856: 0x8239,\n\t14857: 0x861A,\n\t14858: 0x87EC,\n\t14859: 0x8A75,\n\t14860: 0x8DE3,\n\t14861: 0x9078,\n\t14862: 0x9291,\n\t14863: 0x9425,\n\t14864: 0x994D,\n\t14865: 0x9BAE,\n\t14866: 0x5368,\n\t14867: 0x5C51,\n\t14868: 0x6954,\n\t14869: 0x6CC4,\n\t14870: 0x6D29,\n\t14871: 0x6E2B,\n\t14872: 0x820C,\n\t14873: 0x859B,\n\t14874: 0x893B,\n\t14875: 0x8A2D,\n\t14876: 0x8AAA,\n\t14877: 0x96EA,\n\t14878: 0x9F67,\n\t14879: 0x5261,\n\t14880: 0x66B9,\n\t14881: 0x6BB2,\n\t14882: 0x7E96,\n\t14883: 0x87FE,\n\t14884: 0x8D0D,\n\t14885: 0x9583,\n\t14886: 0x965D,\n\t14887: 0x651D,\n\t14888: 0x6D89,\n\t14889: 0x71EE,\n\t14890: 0xF96E,\n\t14891: 0x57CE,\n\t14892: 0x59D3,\n\t14893: 0x5BAC,\n\t14894: 0x6027,\n\t14895: 0x60FA,\n\t14896: 0x6210,\n\t14897: 0x661F,\n\t14898: 0x665F,\n\t14899: 0x7329,\n\t14900: 0x73F9,\n\t14901: 0x76DB,\n\t14902: 0x7701,\n\t14903: 0x7B6C,\n\t14904: 0x8056,\n\t14905: 0x8072,\n\t14906: 0x8165,\n\t14907: 0x8AA0,\n\t14908: 0x9192,\n\t14909: 0x4E16,\n\t14910: 0x52E2,\n\t14911: 0x6B72,\n\t14912: 0x6D17,\n\t14913: 0x7A05,\n\t14914: 0x7B39,\n\t14915: 0x7D30,\n\t14916: 0xF96F,\n\t14917: 0x8CB0,\n\t14918: 0x53EC,\n\t14919: 0x562F,\n\t14920: 0x5851,\n\t14921: 0x5BB5,\n\t14922: 0x5C0F,\n\t14923: 0x5C11,\n\t14924: 0x5DE2,\n\t14925: 0x6240,\n\t14926: 0x6383,\n\t14927: 0x6414,\n\t14928: 0x662D,\n\t14929: 0x68B3,\n\t14930: 0x6CBC,\n\t14931: 0x6D88,\n\t14932: 0x6EAF,\n\t14933: 0x701F,\n\t14934: 0x70A4,\n\t14935: 0x71D2,\n\t14936: 0x7526,\n\t14937: 0x758F,\n\t14938: 0x758E,\n\t14939: 0x7619,\n\t14940: 0x7B11,\n\t14941: 0x7BE0,\n\t14942: 0x7C2B,\n\t14943: 0x7D20,\n\t14944: 0x7D39,\n\t14945: 0x852C,\n\t14946: 0x856D,\n\t14947: 0x8607,\n\t14948: 0x8A34,\n\t14949: 0x900D,\n\t14950: 0x9061,\n\t14951: 0x90B5,\n\t14952: 0x92B7,\n\t14953: 0x97F6,\n\t14954: 0x9A37,\n\t14955: 0x4FD7,\n\t14956: 0x5C6C,\n\t14957: 0x675F,\n\t14958: 0x6D91,\n\t14959: 0x7C9F,\n\t14960: 0x7E8C,\n\t14961: 0x8B16,\n\t14962: 0x8D16,\n\t14963: 0x901F,\n\t14964: 0x5B6B,\n\t14965: 0x5DFD,\n\t14966: 0x640D,\n\t14967: 0x84C0,\n\t14968: 0x905C,\n\t14969: 0x98E1,\n\t14970: 0x7387,\n\t14971: 0x5B8B,\n\t14972: 0x609A,\n\t14973: 0x677E,\n\t14974: 0x6DDE,\n\t14975: 0x8A1F,\n\t14976: 0x8AA6,\n\t14977: 0x9001,\n\t14978: 0x980C,\n\t14979: 0x5237,\n\t14980: 0xF970,\n\t14981: 0x7051,\n\t14982: 0x788E,\n\t14983: 0x9396,\n\t14984: 0x8870,\n\t14985: 0x91D7,\n\t14986: 0x4FEE,\n\t14987: 0x53D7,\n\t14988: 0x55FD,\n\t14989: 0x56DA,\n\t14990: 0x5782,\n\t14991: 0x58FD,\n\t14992: 0x5AC2,\n\t14993: 0x5B88,\n\t14994: 0x5CAB,\n\t14995: 0x5CC0,\n\t14996: 0x5E25,\n\t14997: 0x6101,\n\t14998: 0x620D,\n\t14999: 0x624B,\n\t15000: 0x6388,\n\t15001: 0x641C,\n\t15002: 0x6536,\n\t15003: 0x6578,\n\t15004: 0x6A39,\n\t15005: 0x6B8A,\n\t15006: 0x6C34,\n\t15007: 0x6D19,\n\t15008: 0x6F31,\n\t15009: 0x71E7,\n\t15010: 0x72E9,\n\t15011: 0x7378,\n\t15012: 0x7407,\n\t15013: 0x74B2,\n\t15014: 0x7626,\n\t15015: 0x7761,\n\t15016: 0x79C0,\n\t15017: 0x7A57,\n\t15018: 0x7AEA,\n\t15019: 0x7CB9,\n\t15020: 0x7D8F,\n\t15021: 0x7DAC,\n\t15022: 0x7E61,\n\t15023: 0x7F9E,\n\t15024: 0x8129,\n\t15025: 0x8331,\n\t15026: 0x8490,\n\t15027: 0x84DA,\n\t15028: 0x85EA,\n\t15029: 0x8896,\n\t15030: 0x8AB0,\n\t15031: 0x8B90,\n\t15032: 0x8F38,\n\t15033: 0x9042,\n\t15034: 0x9083,\n\t15035: 0x916C,\n\t15036: 0x9296,\n\t15037: 0x92B9,\n\t15038: 0x968B,\n\t15039: 0x96A7,\n\t15040: 0x96A8,\n\t15041: 0x96D6,\n\t15042: 0x9700,\n\t15043: 0x9808,\n\t15044: 0x9996,\n\t15045: 0x9AD3,\n\t15046: 0x9B1A,\n\t15047: 0x53D4,\n\t15048: 0x587E,\n\t15049: 0x5919,\n\t15050: 0x5B70,\n\t15051: 0x5BBF,\n\t15052: 0x6DD1,\n\t15053: 0x6F5A,\n\t15054: 0x719F,\n\t15055: 0x7421,\n\t15056: 0x74B9,\n\t15057: 0x8085,\n\t15058: 0x83FD,\n\t15059: 0x5DE1,\n\t15060: 0x5F87,\n\t15061: 0x5FAA,\n\t15062: 0x6042,\n\t15063: 0x65EC,\n\t15064: 0x6812,\n\t15065: 0x696F,\n\t15066: 0x6A53,\n\t15067: 0x6B89,\n\t15068: 0x6D35,\n\t15069: 0x6DF3,\n\t15070: 0x73E3,\n\t15071: 0x76FE,\n\t15072: 0x77AC,\n\t15073: 0x7B4D,\n\t15074: 0x7D14,\n\t15075: 0x8123,\n\t15076: 0x821C,\n\t15077: 0x8340,\n\t15078: 0x84F4,\n\t15079: 0x8563,\n\t15080: 0x8A62,\n\t15081: 0x8AC4,\n\t15082: 0x9187,\n\t15083: 0x931E,\n\t15084: 0x9806,\n\t15085: 0x99B4,\n\t15086: 0x620C,\n\t15087: 0x8853,\n\t15088: 0x8FF0,\n\t15089: 0x9265,\n\t15090: 0x5D07,\n\t15091: 0x5D27,\n\t15092: 0x5D69,\n\t15093: 0x745F,\n\t15094: 0x819D,\n\t15095: 0x8768,\n\t15096: 0x6FD5,\n\t15097: 0x62FE,\n\t15098: 0x7FD2,\n\t15099: 0x8936,\n\t15100: 0x8972,\n\t15101: 0x4E1E,\n\t15102: 0x4E58,\n\t15103: 0x50E7,\n\t15104: 0x52DD,\n\t15105: 0x5347,\n\t15106: 0x627F,\n\t15107: 0x6607,\n\t15108: 0x7E69,\n\t15109: 0x8805,\n\t15110: 0x965E,\n\t15111: 0x4F8D,\n\t15112: 0x5319,\n\t15113: 0x5636,\n\t15114: 0x59CB,\n\t15115: 0x5AA4,\n\t15116: 0x5C38,\n\t15117: 0x5C4E,\n\t15118: 0x5C4D,\n\t15119: 0x5E02,\n\t15120: 0x5F11,\n\t15121: 0x6043,\n\t15122: 0x65BD,\n\t15123: 0x662F,\n\t15124: 0x6642,\n\t15125: 0x67BE,\n\t15126: 0x67F4,\n\t15127: 0x731C,\n\t15128: 0x77E2,\n\t15129: 0x793A,\n\t15130: 0x7FC5,\n\t15131: 0x8494,\n\t15132: 0x84CD,\n\t15133: 0x8996,\n\t15134: 0x8A66,\n\t15135: 0x8A69,\n\t15136: 0x8AE1,\n\t15137: 0x8C55,\n\t15138: 0x8C7A,\n\t15139: 0x57F4,\n\t15140: 0x5BD4,\n\t15141: 0x5F0F,\n\t15142: 0x606F,\n\t15143: 0x62ED,\n\t15144: 0x690D,\n\t15145: 0x6B96,\n\t15146: 0x6E5C,\n\t15147: 0x7184,\n\t15148: 0x7BD2,\n\t15149: 0x8755,\n\t15150: 0x8B58,\n\t15151: 0x8EFE,\n\t15152: 0x98DF,\n\t15153: 0x98FE,\n\t15154: 0x4F38,\n\t15155: 0x4F81,\n\t15156: 0x4FE1,\n\t15157: 0x547B,\n\t15158: 0x5A20,\n\t15159: 0x5BB8,\n\t15160: 0x613C,\n\t15161: 0x65B0,\n\t15162: 0x6668,\n\t15163: 0x71FC,\n\t15164: 0x7533,\n\t15165: 0x795E,\n\t15166: 0x7D33,\n\t15167: 0x814E,\n\t15168: 0x81E3,\n\t15169: 0x8398,\n\t15170: 0x85AA,\n\t15171: 0x85CE,\n\t15172: 0x8703,\n\t15173: 0x8A0A,\n\t15174: 0x8EAB,\n\t15175: 0x8F9B,\n\t15176: 0xF971,\n\t15177: 0x8FC5,\n\t15178: 0x5931,\n\t15179: 0x5BA4,\n\t15180: 0x5BE6,\n\t15181: 0x6089,\n\t15182: 0x5BE9,\n\t15183: 0x5C0B,\n\t15184: 0x5FC3,\n\t15185: 0x6C81,\n\t15186: 0xF972,\n\t15187: 0x6DF1,\n\t15188: 0x700B,\n\t15189: 0x751A,\n\t15190: 0x82AF,\n\t15191: 0x8AF6,\n\t15192: 0x4EC0,\n\t15193: 0x5341,\n\t15194: 0xF973,\n\t15195: 0x96D9,\n\t15196: 0x6C0F,\n\t15197: 0x4E9E,\n\t15198: 0x4FC4,\n\t15199: 0x5152,\n\t15200: 0x555E,\n\t15201: 0x5A25,\n\t15202: 0x5CE8,\n\t15203: 0x6211,\n\t15204: 0x7259,\n\t15205: 0x82BD,\n\t15206: 0x83AA,\n\t15207: 0x86FE,\n\t15208: 0x8859,\n\t15209: 0x8A1D,\n\t15210: 0x963F,\n\t15211: 0x96C5,\n\t15212: 0x9913,\n\t15213: 0x9D09,\n\t15214: 0x9D5D,\n\t15215: 0x580A,\n\t15216: 0x5CB3,\n\t15217: 0x5DBD,\n\t15218: 0x5E44,\n\t15219: 0x60E1,\n\t15220: 0x6115,\n\t15221: 0x63E1,\n\t15222: 0x6A02,\n\t15223: 0x6E25,\n\t15224: 0x9102,\n\t15225: 0x9354,\n\t15226: 0x984E,\n\t15227: 0x9C10,\n\t15228: 0x9F77,\n\t15229: 0x5B89,\n\t15230: 0x5CB8,\n\t15231: 0x6309,\n\t15232: 0x664F,\n\t15233: 0x6848,\n\t15234: 0x773C,\n\t15235: 0x96C1,\n\t15236: 0x978D,\n\t15237: 0x9854,\n\t15238: 0x9B9F,\n\t15239: 0x65A1,\n\t15240: 0x8B01,\n\t15241: 0x8ECB,\n\t15242: 0x95BC,\n\t15243: 0x5535,\n\t15244: 0x5CA9,\n\t15245: 0x5DD6,\n\t15246: 0x5EB5,\n\t15247: 0x6697,\n\t15248: 0x764C,\n\t15249: 0x83F4,\n\t15250: 0x95C7,\n\t15251: 0x58D3,\n\t15252: 0x62BC,\n\t15253: 0x72CE,\n\t15254: 0x9D28,\n\t15255: 0x4EF0,\n\t15256: 0x592E,\n\t15257: 0x600F,\n\t15258: 0x663B,\n\t15259: 0x6B83,\n\t15260: 0x79E7,\n\t15261: 0x9D26,\n\t15262: 0x5393,\n\t15263: 0x54C0,\n\t15264: 0x57C3,\n\t15265: 0x5D16,\n\t15266: 0x611B,\n\t15267: 0x66D6,\n\t15268: 0x6DAF,\n\t15269: 0x788D,\n\t15270: 0x827E,\n\t15271: 0x9698,\n\t15272: 0x9744,\n\t15273: 0x5384,\n\t15274: 0x627C,\n\t15275: 0x6396,\n\t15276: 0x6DB2,\n\t15277: 0x7E0A,\n\t15278: 0x814B,\n\t15279: 0x984D,\n\t15280: 0x6AFB,\n\t15281: 0x7F4C,\n\t15282: 0x9DAF,\n\t15283: 0x9E1A,\n\t15284: 0x4E5F,\n\t15285: 0x503B,\n\t15286: 0x51B6,\n\t15287: 0x591C,\n\t15288: 0x60F9,\n\t15289: 0x63F6,\n\t15290: 0x6930,\n\t15291: 0x723A,\n\t15292: 0x8036,\n\t15293: 0xF974,\n\t15294: 0x91CE,\n\t15295: 0x5F31,\n\t15296: 0xF975,\n\t15297: 0xF976,\n\t15298: 0x7D04,\n\t15299: 0x82E5,\n\t15300: 0x846F,\n\t15301: 0x84BB,\n\t15302: 0x85E5,\n\t15303: 0x8E8D,\n\t15304: 0xF977,\n\t15305: 0x4F6F,\n\t15306: 0xF978,\n\t15307: 0xF979,\n\t15308: 0x58E4,\n\t15309: 0x5B43,\n\t15310: 0x6059,\n\t15311: 0x63DA,\n\t15312: 0x6518,\n\t15313: 0x656D,\n\t15314: 0x6698,\n\t15315: 0xF97A,\n\t15316: 0x694A,\n\t15317: 0x6A23,\n\t15318: 0x6D0B,\n\t15319: 0x7001,\n\t15320: 0x716C,\n\t15321: 0x75D2,\n\t15322: 0x760D,\n\t15323: 0x79B3,\n\t15324: 0x7A70,\n\t15325: 0xF97B,\n\t15326: 0x7F8A,\n\t15327: 0xF97C,\n\t15328: 0x8944,\n\t15329: 0xF97D,\n\t15330: 0x8B93,\n\t15331: 0x91C0,\n\t15332: 0x967D,\n\t15333: 0xF97E,\n\t15334: 0x990A,\n\t15335: 0x5704,\n\t15336: 0x5FA1,\n\t15337: 0x65BC,\n\t15338: 0x6F01,\n\t15339: 0x7600,\n\t15340: 0x79A6,\n\t15341: 0x8A9E,\n\t15342: 0x99AD,\n\t15343: 0x9B5A,\n\t15344: 0x9F6C,\n\t15345: 0x5104,\n\t15346: 0x61B6,\n\t15347: 0x6291,\n\t15348: 0x6A8D,\n\t15349: 0x81C6,\n\t15350: 0x5043,\n\t15351: 0x5830,\n\t15352: 0x5F66,\n\t15353: 0x7109,\n\t15354: 0x8A00,\n\t15355: 0x8AFA,\n\t15356: 0x5B7C,\n\t15357: 0x8616,\n\t15358: 0x4FFA,\n\t15359: 0x513C,\n\t15360: 0x56B4,\n\t15361: 0x5944,\n\t15362: 0x63A9,\n\t15363: 0x6DF9,\n\t15364: 0x5DAA,\n\t15365: 0x696D,\n\t15366: 0x5186,\n\t15367: 0x4E88,\n\t15368: 0x4F59,\n\t15369: 0xF97F,\n\t15370: 0xF980,\n\t15371: 0xF981,\n\t15372: 0x5982,\n\t15373: 0xF982,\n\t15374: 0xF983,\n\t15375: 0x6B5F,\n\t15376: 0x6C5D,\n\t15377: 0xF984,\n\t15378: 0x74B5,\n\t15379: 0x7916,\n\t15380: 0xF985,\n\t15381: 0x8207,\n\t15382: 0x8245,\n\t15383: 0x8339,\n\t15384: 0x8F3F,\n\t15385: 0x8F5D,\n\t15386: 0xF986,\n\t15387: 0x9918,\n\t15388: 0xF987,\n\t15389: 0xF988,\n\t15390: 0xF989,\n\t15391: 0x4EA6,\n\t15392: 0xF98A,\n\t15393: 0x57DF,\n\t15394: 0x5F79,\n\t15395: 0x6613,\n\t15396: 0xF98B,\n\t15397: 0xF98C,\n\t15398: 0x75AB,\n\t15399: 0x7E79,\n\t15400: 0x8B6F,\n\t15401: 0xF98D,\n\t15402: 0x9006,\n\t15403: 0x9A5B,\n\t15404: 0x56A5,\n\t15405: 0x5827,\n\t15406: 0x59F8,\n\t15407: 0x5A1F,\n\t15408: 0x5BB4,\n\t15409: 0xF98E,\n\t15410: 0x5EF6,\n\t15411: 0xF98F,\n\t15412: 0xF990,\n\t15413: 0x6350,\n\t15414: 0x633B,\n\t15415: 0xF991,\n\t15416: 0x693D,\n\t15417: 0x6C87,\n\t15418: 0x6CBF,\n\t15419: 0x6D8E,\n\t15420: 0x6D93,\n\t15421: 0x6DF5,\n\t15422: 0x6F14,\n\t15423: 0xF992,\n\t15424: 0x70DF,\n\t15425: 0x7136,\n\t15426: 0x7159,\n\t15427: 0xF993,\n\t15428: 0x71C3,\n\t15429: 0x71D5,\n\t15430: 0xF994,\n\t15431: 0x784F,\n\t15432: 0x786F,\n\t15433: 0xF995,\n\t15434: 0x7B75,\n\t15435: 0x7DE3,\n\t15436: 0xF996,\n\t15437: 0x7E2F,\n\t15438: 0xF997,\n\t15439: 0x884D,\n\t15440: 0x8EDF,\n\t15441: 0xF998,\n\t15442: 0xF999,\n\t15443: 0xF99A,\n\t15444: 0x925B,\n\t15445: 0xF99B,\n\t15446: 0x9CF6,\n\t15447: 0xF99C,\n\t15448: 0xF99D,\n\t15449: 0xF99E,\n\t15450: 0x6085,\n\t15451: 0x6D85,\n\t15452: 0xF99F,\n\t15453: 0x71B1,\n\t15454: 0xF9A0,\n\t15455: 0xF9A1,\n\t15456: 0x95B1,\n\t15457: 0x53AD,\n\t15458: 0xF9A2,\n\t15459: 0xF9A3,\n\t15460: 0xF9A4,\n\t15461: 0x67D3,\n\t15462: 0xF9A5,\n\t15463: 0x708E,\n\t15464: 0x7130,\n\t15465: 0x7430,\n\t15466: 0x8276,\n\t15467: 0x82D2,\n\t15468: 0xF9A6,\n\t15469: 0x95BB,\n\t15470: 0x9AE5,\n\t15471: 0x9E7D,\n\t15472: 0x66C4,\n\t15473: 0xF9A7,\n\t15474: 0x71C1,\n\t15475: 0x8449,\n\t15476: 0xF9A8,\n\t15477: 0xF9A9,\n\t15478: 0x584B,\n\t15479: 0xF9AA,\n\t15480: 0xF9AB,\n\t15481: 0x5DB8,\n\t15482: 0x5F71,\n\t15483: 0xF9AC,\n\t15484: 0x6620,\n\t15485: 0x668E,\n\t15486: 0x6979,\n\t15487: 0x69AE,\n\t15488: 0x6C38,\n\t15489: 0x6CF3,\n\t15490: 0x6E36,\n\t15491: 0x6F41,\n\t15492: 0x6FDA,\n\t15493: 0x701B,\n\t15494: 0x702F,\n\t15495: 0x7150,\n\t15496: 0x71DF,\n\t15497: 0x7370,\n\t15498: 0xF9AD,\n\t15499: 0x745B,\n\t15500: 0xF9AE,\n\t15501: 0x74D4,\n\t15502: 0x76C8,\n\t15503: 0x7A4E,\n\t15504: 0x7E93,\n\t15505: 0xF9AF,\n\t15506: 0xF9B0,\n\t15507: 0x82F1,\n\t15508: 0x8A60,\n\t15509: 0x8FCE,\n\t15510: 0xF9B1,\n\t15511: 0x9348,\n\t15512: 0xF9B2,\n\t15513: 0x9719,\n\t15514: 0xF9B3,\n\t15515: 0xF9B4,\n\t15516: 0x4E42,\n\t15517: 0x502A,\n\t15518: 0xF9B5,\n\t15519: 0x5208,\n\t15520: 0x53E1,\n\t15521: 0x66F3,\n\t15522: 0x6C6D,\n\t15523: 0x6FCA,\n\t15524: 0x730A,\n\t15525: 0x777F,\n\t15526: 0x7A62,\n\t15527: 0x82AE,\n\t15528: 0x85DD,\n\t15529: 0x8602,\n\t15530: 0xF9B6,\n\t15531: 0x88D4,\n\t15532: 0x8A63,\n\t15533: 0x8B7D,\n\t15534: 0x8C6B,\n\t15535: 0xF9B7,\n\t15536: 0x92B3,\n\t15537: 0xF9B8,\n\t15538: 0x9713,\n\t15539: 0x9810,\n\t15540: 0x4E94,\n\t15541: 0x4F0D,\n\t15542: 0x4FC9,\n\t15543: 0x50B2,\n\t15544: 0x5348,\n\t15545: 0x543E,\n\t15546: 0x5433,\n\t15547: 0x55DA,\n\t15548: 0x5862,\n\t15549: 0x58BA,\n\t15550: 0x5967,\n\t15551: 0x5A1B,\n\t15552: 0x5BE4,\n\t15553: 0x609F,\n\t15554: 0xF9B9,\n\t15555: 0x61CA,\n\t15556: 0x6556,\n\t15557: 0x65FF,\n\t15558: 0x6664,\n\t15559: 0x68A7,\n\t15560: 0x6C5A,\n\t15561: 0x6FB3,\n\t15562: 0x70CF,\n\t15563: 0x71AC,\n\t15564: 0x7352,\n\t15565: 0x7B7D,\n\t15566: 0x8708,\n\t15567: 0x8AA4,\n\t15568: 0x9C32,\n\t15569: 0x9F07,\n\t15570: 0x5C4B,\n\t15571: 0x6C83,\n\t15572: 0x7344,\n\t15573: 0x7389,\n\t15574: 0x923A,\n\t15575: 0x6EAB,\n\t15576: 0x7465,\n\t15577: 0x761F,\n\t15578: 0x7A69,\n\t15579: 0x7E15,\n\t15580: 0x860A,\n\t15581: 0x5140,\n\t15582: 0x58C5,\n\t15583: 0x64C1,\n\t15584: 0x74EE,\n\t15585: 0x7515,\n\t15586: 0x7670,\n\t15587: 0x7FC1,\n\t15588: 0x9095,\n\t15589: 0x96CD,\n\t15590: 0x9954,\n\t15591: 0x6E26,\n\t15592: 0x74E6,\n\t15593: 0x7AA9,\n\t15594: 0x7AAA,\n\t15595: 0x81E5,\n\t15596: 0x86D9,\n\t15597: 0x8778,\n\t15598: 0x8A1B,\n\t15599: 0x5A49,\n\t15600: 0x5B8C,\n\t15601: 0x5B9B,\n\t15602: 0x68A1,\n\t15603: 0x6900,\n\t15604: 0x6D63,\n\t15605: 0x73A9,\n\t15606: 0x7413,\n\t15607: 0x742C,\n\t15608: 0x7897,\n\t15609: 0x7DE9,\n\t15610: 0x7FEB,\n\t15611: 0x8118,\n\t15612: 0x8155,\n\t15613: 0x839E,\n\t15614: 0x8C4C,\n\t15615: 0x962E,\n\t15616: 0x9811,\n\t15617: 0x66F0,\n\t15618: 0x5F80,\n\t15619: 0x65FA,\n\t15620: 0x6789,\n\t15621: 0x6C6A,\n\t15622: 0x738B,\n\t15623: 0x502D,\n\t15624: 0x5A03,\n\t15625: 0x6B6A,\n\t15626: 0x77EE,\n\t15627: 0x5916,\n\t15628: 0x5D6C,\n\t15629: 0x5DCD,\n\t15630: 0x7325,\n\t15631: 0x754F,\n\t15632: 0xF9BA,\n\t15633: 0xF9BB,\n\t15634: 0x50E5,\n\t15635: 0x51F9,\n\t15636: 0x582F,\n\t15637: 0x592D,\n\t15638: 0x5996,\n\t15639: 0x59DA,\n\t15640: 0x5BE5,\n\t15641: 0xF9BC,\n\t15642: 0xF9BD,\n\t15643: 0x5DA2,\n\t15644: 0x62D7,\n\t15645: 0x6416,\n\t15646: 0x6493,\n\t15647: 0x64FE,\n\t15648: 0xF9BE,\n\t15649: 0x66DC,\n\t15650: 0xF9BF,\n\t15651: 0x6A48,\n\t15652: 0xF9C0,\n\t15653: 0x71FF,\n\t15654: 0x7464,\n\t15655: 0xF9C1,\n\t15656: 0x7A88,\n\t15657: 0x7AAF,\n\t15658: 0x7E47,\n\t15659: 0x7E5E,\n\t15660: 0x8000,\n\t15661: 0x8170,\n\t15662: 0xF9C2,\n\t15663: 0x87EF,\n\t15664: 0x8981,\n\t15665: 0x8B20,\n\t15666: 0x9059,\n\t15667: 0xF9C3,\n\t15668: 0x9080,\n\t15669: 0x9952,\n\t15670: 0x617E,\n\t15671: 0x6B32,\n\t15672: 0x6D74,\n\t15673: 0x7E1F,\n\t15674: 0x8925,\n\t15675: 0x8FB1,\n\t15676: 0x4FD1,\n\t15677: 0x50AD,\n\t15678: 0x5197,\n\t15679: 0x52C7,\n\t15680: 0x57C7,\n\t15681: 0x5889,\n\t15682: 0x5BB9,\n\t15683: 0x5EB8,\n\t15684: 0x6142,\n\t15685: 0x6995,\n\t15686: 0x6D8C,\n\t15687: 0x6E67,\n\t15688: 0x6EB6,\n\t15689: 0x7194,\n\t15690: 0x7462,\n\t15691: 0x7528,\n\t15692: 0x752C,\n\t15693: 0x8073,\n\t15694: 0x8338,\n\t15695: 0x84C9,\n\t15696: 0x8E0A,\n\t15697: 0x9394,\n\t15698: 0x93DE,\n\t15699: 0xF9C4,\n\t15700: 0x4E8E,\n\t15701: 0x4F51,\n\t15702: 0x5076,\n\t15703: 0x512A,\n\t15704: 0x53C8,\n\t15705: 0x53CB,\n\t15706: 0x53F3,\n\t15707: 0x5B87,\n\t15708: 0x5BD3,\n\t15709: 0x5C24,\n\t15710: 0x611A,\n\t15711: 0x6182,\n\t15712: 0x65F4,\n\t15713: 0x725B,\n\t15714: 0x7397,\n\t15715: 0x7440,\n\t15716: 0x76C2,\n\t15717: 0x7950,\n\t15718: 0x7991,\n\t15719: 0x79B9,\n\t15720: 0x7D06,\n\t15721: 0x7FBD,\n\t15722: 0x828B,\n\t15723: 0x85D5,\n\t15724: 0x865E,\n\t15725: 0x8FC2,\n\t15726: 0x9047,\n\t15727: 0x90F5,\n\t15728: 0x91EA,\n\t15729: 0x9685,\n\t15730: 0x96E8,\n\t15731: 0x96E9,\n\t15732: 0x52D6,\n\t15733: 0x5F67,\n\t15734: 0x65ED,\n\t15735: 0x6631,\n\t15736: 0x682F,\n\t15737: 0x715C,\n\t15738: 0x7A36,\n\t15739: 0x90C1,\n\t15740: 0x980A,\n\t15741: 0x4E91,\n\t15742: 0xF9C5,\n\t15743: 0x6A52,\n\t15744: 0x6B9E,\n\t15745: 0x6F90,\n\t15746: 0x7189,\n\t15747: 0x8018,\n\t15748: 0x82B8,\n\t15749: 0x8553,\n\t15750: 0x904B,\n\t15751: 0x9695,\n\t15752: 0x96F2,\n\t15753: 0x97FB,\n\t15754: 0x851A,\n\t15755: 0x9B31,\n\t15756: 0x4E90,\n\t15757: 0x718A,\n\t15758: 0x96C4,\n\t15759: 0x5143,\n\t15760: 0x539F,\n\t15761: 0x54E1,\n\t15762: 0x5713,\n\t15763: 0x5712,\n\t15764: 0x57A3,\n\t15765: 0x5A9B,\n\t15766: 0x5AC4,\n\t15767: 0x5BC3,\n\t15768: 0x6028,\n\t15769: 0x613F,\n\t15770: 0x63F4,\n\t15771: 0x6C85,\n\t15772: 0x6D39,\n\t15773: 0x6E72,\n\t15774: 0x6E90,\n\t15775: 0x7230,\n\t15776: 0x733F,\n\t15777: 0x7457,\n\t15778: 0x82D1,\n\t15779: 0x8881,\n\t15780: 0x8F45,\n\t15781: 0x9060,\n\t15782: 0xF9C6,\n\t15783: 0x9662,\n\t15784: 0x9858,\n\t15785: 0x9D1B,\n\t15786: 0x6708,\n\t15787: 0x8D8A,\n\t15788: 0x925E,\n\t15789: 0x4F4D,\n\t15790: 0x5049,\n\t15791: 0x50DE,\n\t15792: 0x5371,\n\t15793: 0x570D,\n\t15794: 0x59D4,\n\t15795: 0x5A01,\n\t15796: 0x5C09,\n\t15797: 0x6170,\n\t15798: 0x6690,\n\t15799: 0x6E2D,\n\t15800: 0x7232,\n\t15801: 0x744B,\n\t15802: 0x7DEF,\n\t15803: 0x80C3,\n\t15804: 0x840E,\n\t15805: 0x8466,\n\t15806: 0x853F,\n\t15807: 0x875F,\n\t15808: 0x885B,\n\t15809: 0x8918,\n\t15810: 0x8B02,\n\t15811: 0x9055,\n\t15812: 0x97CB,\n\t15813: 0x9B4F,\n\t15814: 0x4E73,\n\t15815: 0x4F91,\n\t15816: 0x5112,\n\t15817: 0x516A,\n\t15818: 0xF9C7,\n\t15819: 0x552F,\n\t15820: 0x55A9,\n\t15821: 0x5B7A,\n\t15822: 0x5BA5,\n\t15823: 0x5E7C,\n\t15824: 0x5E7D,\n\t15825: 0x5EBE,\n\t15826: 0x60A0,\n\t15827: 0x60DF,\n\t15828: 0x6108,\n\t15829: 0x6109,\n\t15830: 0x63C4,\n\t15831: 0x6538,\n\t15832: 0x6709,\n\t15833: 0xF9C8,\n\t15834: 0x67D4,\n\t15835: 0x67DA,\n\t15836: 0xF9C9,\n\t15837: 0x6961,\n\t15838: 0x6962,\n\t15839: 0x6CB9,\n\t15840: 0x6D27,\n\t15841: 0xF9CA,\n\t15842: 0x6E38,\n\t15843: 0xF9CB,\n\t15844: 0x6FE1,\n\t15845: 0x7336,\n\t15846: 0x7337,\n\t15847: 0xF9CC,\n\t15848: 0x745C,\n\t15849: 0x7531,\n\t15850: 0xF9CD,\n\t15851: 0x7652,\n\t15852: 0xF9CE,\n\t15853: 0xF9CF,\n\t15854: 0x7DAD,\n\t15855: 0x81FE,\n\t15856: 0x8438,\n\t15857: 0x88D5,\n\t15858: 0x8A98,\n\t15859: 0x8ADB,\n\t15860: 0x8AED,\n\t15861: 0x8E30,\n\t15862: 0x8E42,\n\t15863: 0x904A,\n\t15864: 0x903E,\n\t15865: 0x907A,\n\t15866: 0x9149,\n\t15867: 0x91C9,\n\t15868: 0x936E,\n\t15869: 0xF9D0,\n\t15870: 0xF9D1,\n\t15871: 0x5809,\n\t15872: 0xF9D2,\n\t15873: 0x6BD3,\n\t15874: 0x8089,\n\t15875: 0x80B2,\n\t15876: 0xF9D3,\n\t15877: 0xF9D4,\n\t15878: 0x5141,\n\t15879: 0x596B,\n\t15880: 0x5C39,\n\t15881: 0xF9D5,\n\t15882: 0xF9D6,\n\t15883: 0x6F64,\n\t15884: 0x73A7,\n\t15885: 0x80E4,\n\t15886: 0x8D07,\n\t15887: 0xF9D7,\n\t15888: 0x9217,\n\t15889: 0x958F,\n\t15890: 0xF9D8,\n\t15891: 0xF9D9,\n\t15892: 0xF9DA,\n\t15893: 0xF9DB,\n\t15894: 0x807F,\n\t15895: 0x620E,\n\t15896: 0x701C,\n\t15897: 0x7D68,\n\t15898: 0x878D,\n\t15899: 0xF9DC,\n\t15900: 0x57A0,\n\t15901: 0x6069,\n\t15902: 0x6147,\n\t15903: 0x6BB7,\n\t15904: 0x8ABE,\n\t15905: 0x9280,\n\t15906: 0x96B1,\n\t15907: 0x4E59,\n\t15908: 0x541F,\n\t15909: 0x6DEB,\n\t15910: 0x852D,\n\t15911: 0x9670,\n\t15912: 0x97F3,\n\t15913: 0x98EE,\n\t15914: 0x63D6,\n\t15915: 0x6CE3,\n\t15916: 0x9091,\n\t15917: 0x51DD,\n\t15918: 0x61C9,\n\t15919: 0x81BA,\n\t15920: 0x9DF9,\n\t15921: 0x4F9D,\n\t15922: 0x501A,\n\t15923: 0x5100,\n\t15924: 0x5B9C,\n\t15925: 0x610F,\n\t15926: 0x61FF,\n\t15927: 0x64EC,\n\t15928: 0x6905,\n\t15929: 0x6BC5,\n\t15930: 0x7591,\n\t15931: 0x77E3,\n\t15932: 0x7FA9,\n\t15933: 0x8264,\n\t15934: 0x858F,\n\t15935: 0x87FB,\n\t15936: 0x8863,\n\t15937: 0x8ABC,\n\t15938: 0x8B70,\n\t15939: 0x91AB,\n\t15940: 0x4E8C,\n\t15941: 0x4EE5,\n\t15942: 0x4F0A,\n\t15943: 0xF9DD,\n\t15944: 0xF9DE,\n\t15945: 0x5937,\n\t15946: 0x59E8,\n\t15947: 0xF9DF,\n\t15948: 0x5DF2,\n\t15949: 0x5F1B,\n\t15950: 0x5F5B,\n\t15951: 0x6021,\n\t15952: 0xF9E0,\n\t15953: 0xF9E1,\n\t15954: 0xF9E2,\n\t15955: 0xF9E3,\n\t15956: 0x723E,\n\t15957: 0x73E5,\n\t15958: 0xF9E4,\n\t15959: 0x7570,\n\t15960: 0x75CD,\n\t15961: 0xF9E5,\n\t15962: 0x79FB,\n\t15963: 0xF9E6,\n\t15964: 0x800C,\n\t15965: 0x8033,\n\t15966: 0x8084,\n\t15967: 0x82E1,\n\t15968: 0x8351,\n\t15969: 0xF9E7,\n\t15970: 0xF9E8,\n\t15971: 0x8CBD,\n\t15972: 0x8CB3,\n\t15973: 0x9087,\n\t15974: 0xF9E9,\n\t15975: 0xF9EA,\n\t15976: 0x98F4,\n\t15977: 0x990C,\n\t15978: 0xF9EB,\n\t15979: 0xF9EC,\n\t15980: 0x7037,\n\t15981: 0x76CA,\n\t15982: 0x7FCA,\n\t15983: 0x7FCC,\n\t15984: 0x7FFC,\n\t15985: 0x8B1A,\n\t15986: 0x4EBA,\n\t15987: 0x4EC1,\n\t15988: 0x5203,\n\t15989: 0x5370,\n\t15990: 0xF9ED,\n\t15991: 0x54BD,\n\t15992: 0x56E0,\n\t15993: 0x59FB,\n\t15994: 0x5BC5,\n\t15995: 0x5F15,\n\t15996: 0x5FCD,\n\t15997: 0x6E6E,\n\t15998: 0xF9EE,\n\t15999: 0xF9EF,\n\t16000: 0x7D6A,\n\t16001: 0x8335,\n\t16002: 0xF9F0,\n\t16003: 0x8693,\n\t16004: 0x8A8D,\n\t16005: 0xF9F1,\n\t16006: 0x976D,\n\t16007: 0x9777,\n\t16008: 0xF9F2,\n\t16009: 0xF9F3,\n\t16010: 0x4E00,\n\t16011: 0x4F5A,\n\t16012: 0x4F7E,\n\t16013: 0x58F9,\n\t16014: 0x65E5,\n\t16015: 0x6EA2,\n\t16016: 0x9038,\n\t16017: 0x93B0,\n\t16018: 0x99B9,\n\t16019: 0x4EFB,\n\t16020: 0x58EC,\n\t16021: 0x598A,\n\t16022: 0x59D9,\n\t16023: 0x6041,\n\t16024: 0xF9F4,\n\t16025: 0xF9F5,\n\t16026: 0x7A14,\n\t16027: 0xF9F6,\n\t16028: 0x834F,\n\t16029: 0x8CC3,\n\t16030: 0x5165,\n\t16031: 0x5344,\n\t16032: 0xF9F7,\n\t16033: 0xF9F8,\n\t16034: 0xF9F9,\n\t16035: 0x4ECD,\n\t16036: 0x5269,\n\t16037: 0x5B55,\n\t16038: 0x82BF,\n\t16039: 0x4ED4,\n\t16040: 0x523A,\n\t16041: 0x54A8,\n\t16042: 0x59C9,\n\t16043: 0x59FF,\n\t16044: 0x5B50,\n\t16045: 0x5B57,\n\t16046: 0x5B5C,\n\t16047: 0x6063,\n\t16048: 0x6148,\n\t16049: 0x6ECB,\n\t16050: 0x7099,\n\t16051: 0x716E,\n\t16052: 0x7386,\n\t16053: 0x74F7,\n\t16054: 0x75B5,\n\t16055: 0x78C1,\n\t16056: 0x7D2B,\n\t16057: 0x8005,\n\t16058: 0x81EA,\n\t16059: 0x8328,\n\t16060: 0x8517,\n\t16061: 0x85C9,\n\t16062: 0x8AEE,\n\t16063: 0x8CC7,\n\t16064: 0x96CC,\n\t16065: 0x4F5C,\n\t16066: 0x52FA,\n\t16067: 0x56BC,\n\t16068: 0x65AB,\n\t16069: 0x6628,\n\t16070: 0x707C,\n\t16071: 0x70B8,\n\t16072: 0x7235,\n\t16073: 0x7DBD,\n\t16074: 0x828D,\n\t16075: 0x914C,\n\t16076: 0x96C0,\n\t16077: 0x9D72,\n\t16078: 0x5B71,\n\t16079: 0x68E7,\n\t16080: 0x6B98,\n\t16081: 0x6F7A,\n\t16082: 0x76DE,\n\t16083: 0x5C91,\n\t16084: 0x66AB,\n\t16085: 0x6F5B,\n\t16086: 0x7BB4,\n\t16087: 0x7C2A,\n\t16088: 0x8836,\n\t16089: 0x96DC,\n\t16090: 0x4E08,\n\t16091: 0x4ED7,\n\t16092: 0x5320,\n\t16093: 0x5834,\n\t16094: 0x58BB,\n\t16095: 0x58EF,\n\t16096: 0x596C,\n\t16097: 0x5C07,\n\t16098: 0x5E33,\n\t16099: 0x5E84,\n\t16100: 0x5F35,\n\t16101: 0x638C,\n\t16102: 0x66B2,\n\t16103: 0x6756,\n\t16104: 0x6A1F,\n\t16105: 0x6AA3,\n\t16106: 0x6B0C,\n\t16107: 0x6F3F,\n\t16108: 0x7246,\n\t16109: 0xF9FA,\n\t16110: 0x7350,\n\t16111: 0x748B,\n\t16112: 0x7AE0,\n\t16113: 0x7CA7,\n\t16114: 0x8178,\n\t16115: 0x81DF,\n\t16116: 0x81E7,\n\t16117: 0x838A,\n\t16118: 0x846C,\n\t16119: 0x8523,\n\t16120: 0x8594,\n\t16121: 0x85CF,\n\t16122: 0x88DD,\n\t16123: 0x8D13,\n\t16124: 0x91AC,\n\t16125: 0x9577,\n\t16126: 0x969C,\n\t16127: 0x518D,\n\t16128: 0x54C9,\n\t16129: 0x5728,\n\t16130: 0x5BB0,\n\t16131: 0x624D,\n\t16132: 0x6750,\n\t16133: 0x683D,\n\t16134: 0x6893,\n\t16135: 0x6E3D,\n\t16136: 0x6ED3,\n\t16137: 0x707D,\n\t16138: 0x7E21,\n\t16139: 0x88C1,\n\t16140: 0x8CA1,\n\t16141: 0x8F09,\n\t16142: 0x9F4B,\n\t16143: 0x9F4E,\n\t16144: 0x722D,\n\t16145: 0x7B8F,\n\t16146: 0x8ACD,\n\t16147: 0x931A,\n\t16148: 0x4F47,\n\t16149: 0x4F4E,\n\t16150: 0x5132,\n\t16151: 0x5480,\n\t16152: 0x59D0,\n\t16153: 0x5E95,\n\t16154: 0x62B5,\n\t16155: 0x6775,\n\t16156: 0x696E,\n\t16157: 0x6A17,\n\t16158: 0x6CAE,\n\t16159: 0x6E1A,\n\t16160: 0x72D9,\n\t16161: 0x732A,\n\t16162: 0x75BD,\n\t16163: 0x7BB8,\n\t16164: 0x7D35,\n\t16165: 0x82E7,\n\t16166: 0x83F9,\n\t16167: 0x8457,\n\t16168: 0x85F7,\n\t16169: 0x8A5B,\n\t16170: 0x8CAF,\n\t16171: 0x8E87,\n\t16172: 0x9019,\n\t16173: 0x90B8,\n\t16174: 0x96CE,\n\t16175: 0x9F5F,\n\t16176: 0x52E3,\n\t16177: 0x540A,\n\t16178: 0x5AE1,\n\t16179: 0x5BC2,\n\t16180: 0x6458,\n\t16181: 0x6575,\n\t16182: 0x6EF4,\n\t16183: 0x72C4,\n\t16184: 0xF9FB,\n\t16185: 0x7684,\n\t16186: 0x7A4D,\n\t16187: 0x7B1B,\n\t16188: 0x7C4D,\n\t16189: 0x7E3E,\n\t16190: 0x7FDF,\n\t16191: 0x837B,\n\t16192: 0x8B2B,\n\t16193: 0x8CCA,\n\t16194: 0x8D64,\n\t16195: 0x8DE1,\n\t16196: 0x8E5F,\n\t16197: 0x8FEA,\n\t16198: 0x8FF9,\n\t16199: 0x9069,\n\t16200: 0x93D1,\n\t16201: 0x4F43,\n\t16202: 0x4F7A,\n\t16203: 0x50B3,\n\t16204: 0x5168,\n\t16205: 0x5178,\n\t16206: 0x524D,\n\t16207: 0x526A,\n\t16208: 0x5861,\n\t16209: 0x587C,\n\t16210: 0x5960,\n\t16211: 0x5C08,\n\t16212: 0x5C55,\n\t16213: 0x5EDB,\n\t16214: 0x609B,\n\t16215: 0x6230,\n\t16216: 0x6813,\n\t16217: 0x6BBF,\n\t16218: 0x6C08,\n\t16219: 0x6FB1,\n\t16220: 0x714E,\n\t16221: 0x7420,\n\t16222: 0x7530,\n\t16223: 0x7538,\n\t16224: 0x7551,\n\t16225: 0x7672,\n\t16226: 0x7B4C,\n\t16227: 0x7B8B,\n\t16228: 0x7BAD,\n\t16229: 0x7BC6,\n\t16230: 0x7E8F,\n\t16231: 0x8A6E,\n\t16232: 0x8F3E,\n\t16233: 0x8F49,\n\t16234: 0x923F,\n\t16235: 0x9293,\n\t16236: 0x9322,\n\t16237: 0x942B,\n\t16238: 0x96FB,\n\t16239: 0x985A,\n\t16240: 0x986B,\n\t16241: 0x991E,\n\t16242: 0x5207,\n\t16243: 0x622A,\n\t16244: 0x6298,\n\t16245: 0x6D59,\n\t16246: 0x7664,\n\t16247: 0x7ACA,\n\t16248: 0x7BC0,\n\t16249: 0x7D76,\n\t16250: 0x5360,\n\t16251: 0x5CBE,\n\t16252: 0x5E97,\n\t16253: 0x6F38,\n\t16254: 0x70B9,\n\t16255: 0x7C98,\n\t16256: 0x9711,\n\t16257: 0x9B8E,\n\t16258: 0x9EDE,\n\t16259: 0x63A5,\n\t16260: 0x647A,\n\t16261: 0x8776,\n\t16262: 0x4E01,\n\t16263: 0x4E95,\n\t16264: 0x4EAD,\n\t16265: 0x505C,\n\t16266: 0x5075,\n\t16267: 0x5448,\n\t16268: 0x59C3,\n\t16269: 0x5B9A,\n\t16270: 0x5E40,\n\t16271: 0x5EAD,\n\t16272: 0x5EF7,\n\t16273: 0x5F81,\n\t16274: 0x60C5,\n\t16275: 0x633A,\n\t16276: 0x653F,\n\t16277: 0x6574,\n\t16278: 0x65CC,\n\t16279: 0x6676,\n\t16280: 0x6678,\n\t16281: 0x67FE,\n\t16282: 0x6968,\n\t16283: 0x6A89,\n\t16284: 0x6B63,\n\t16285: 0x6C40,\n\t16286: 0x6DC0,\n\t16287: 0x6DE8,\n\t16288: 0x6E1F,\n\t16289: 0x6E5E,\n\t16290: 0x701E,\n\t16291: 0x70A1,\n\t16292: 0x738E,\n\t16293: 0x73FD,\n\t16294: 0x753A,\n\t16295: 0x775B,\n\t16296: 0x7887,\n\t16297: 0x798E,\n\t16298: 0x7A0B,\n\t16299: 0x7A7D,\n\t16300: 0x7CBE,\n\t16301: 0x7D8E,\n\t16302: 0x8247,\n\t16303: 0x8A02,\n\t16304: 0x8AEA,\n\t16305: 0x8C9E,\n\t16306: 0x912D,\n\t16307: 0x914A,\n\t16308: 0x91D8,\n\t16309: 0x9266,\n\t16310: 0x92CC,\n\t16311: 0x9320,\n\t16312: 0x9706,\n\t16313: 0x9756,\n\t16314: 0x975C,\n\t16315: 0x9802,\n\t16316: 0x9F0E,\n\t16317: 0x5236,\n\t16318: 0x5291,\n\t16319: 0x557C,\n\t16320: 0x5824,\n\t16321: 0x5E1D,\n\t16322: 0x5F1F,\n\t16323: 0x608C,\n\t16324: 0x63D0,\n\t16325: 0x68AF,\n\t16326: 0x6FDF,\n\t16327: 0x796D,\n\t16328: 0x7B2C,\n\t16329: 0x81CD,\n\t16330: 0x85BA,\n\t16331: 0x88FD,\n\t16332: 0x8AF8,\n\t16333: 0x8E44,\n\t16334: 0x918D,\n\t16335: 0x9664,\n\t16336: 0x969B,\n\t16337: 0x973D,\n\t16338: 0x984C,\n\t16339: 0x9F4A,\n\t16340: 0x4FCE,\n\t16341: 0x5146,\n\t16342: 0x51CB,\n\t16343: 0x52A9,\n\t16344: 0x5632,\n\t16345: 0x5F14,\n\t16346: 0x5F6B,\n\t16347: 0x63AA,\n\t16348: 0x64CD,\n\t16349: 0x65E9,\n\t16350: 0x6641,\n\t16351: 0x66FA,\n\t16352: 0x66F9,\n\t16353: 0x671D,\n\t16354: 0x689D,\n\t16355: 0x68D7,\n\t16356: 0x69FD,\n\t16357: 0x6F15,\n\t16358: 0x6F6E,\n\t16359: 0x7167,\n\t16360: 0x71E5,\n\t16361: 0x722A,\n\t16362: 0x74AA,\n\t16363: 0x773A,\n\t16364: 0x7956,\n\t16365: 0x795A,\n\t16366: 0x79DF,\n\t16367: 0x7A20,\n\t16368: 0x7A95,\n\t16369: 0x7C97,\n\t16370: 0x7CDF,\n\t16371: 0x7D44,\n\t16372: 0x7E70,\n\t16373: 0x8087,\n\t16374: 0x85FB,\n\t16375: 0x86A4,\n\t16376: 0x8A54,\n\t16377: 0x8ABF,\n\t16378: 0x8D99,\n\t16379: 0x8E81,\n\t16380: 0x9020,\n\t16381: 0x906D,\n\t16382: 0x91E3,\n\t16383: 0x963B,\n\t16384: 0x96D5,\n\t16385: 0x9CE5,\n\t16386: 0x65CF,\n\t16387: 0x7C07,\n\t16388: 0x8DB3,\n\t16389: 0x93C3,\n\t16390: 0x5B58,\n\t16391: 0x5C0A,\n\t16392: 0x5352,\n\t16393: 0x62D9,\n\t16394: 0x731D,\n\t16395: 0x5027,\n\t16396: 0x5B97,\n\t16397: 0x5F9E,\n\t16398: 0x60B0,\n\t16399: 0x616B,\n\t16400: 0x68D5,\n\t16401: 0x6DD9,\n\t16402: 0x742E,\n\t16403: 0x7A2E,\n\t16404: 0x7D42,\n\t16405: 0x7D9C,\n\t16406: 0x7E31,\n\t16407: 0x816B,\n\t16408: 0x8E2A,\n\t16409: 0x8E35,\n\t16410: 0x937E,\n\t16411: 0x9418,\n\t16412: 0x4F50,\n\t16413: 0x5750,\n\t16414: 0x5DE6,\n\t16415: 0x5EA7,\n\t16416: 0x632B,\n\t16417: 0x7F6A,\n\t16418: 0x4E3B,\n\t16419: 0x4F4F,\n\t16420: 0x4F8F,\n\t16421: 0x505A,\n\t16422: 0x59DD,\n\t16423: 0x80C4,\n\t16424: 0x546A,\n\t16425: 0x5468,\n\t16426: 0x55FE,\n\t16427: 0x594F,\n\t16428: 0x5B99,\n\t16429: 0x5DDE,\n\t16430: 0x5EDA,\n\t16431: 0x665D,\n\t16432: 0x6731,\n\t16433: 0x67F1,\n\t16434: 0x682A,\n\t16435: 0x6CE8,\n\t16436: 0x6D32,\n\t16437: 0x6E4A,\n\t16438: 0x6F8D,\n\t16439: 0x70B7,\n\t16440: 0x73E0,\n\t16441: 0x7587,\n\t16442: 0x7C4C,\n\t16443: 0x7D02,\n\t16444: 0x7D2C,\n\t16445: 0x7DA2,\n\t16446: 0x821F,\n\t16447: 0x86DB,\n\t16448: 0x8A3B,\n\t16449: 0x8A85,\n\t16450: 0x8D70,\n\t16451: 0x8E8A,\n\t16452: 0x8F33,\n\t16453: 0x9031,\n\t16454: 0x914E,\n\t16455: 0x9152,\n\t16456: 0x9444,\n\t16457: 0x99D0,\n\t16458: 0x7AF9,\n\t16459: 0x7CA5,\n\t16460: 0x4FCA,\n\t16461: 0x5101,\n\t16462: 0x51C6,\n\t16463: 0x57C8,\n\t16464: 0x5BEF,\n\t16465: 0x5CFB,\n\t16466: 0x6659,\n\t16467: 0x6A3D,\n\t16468: 0x6D5A,\n\t16469: 0x6E96,\n\t16470: 0x6FEC,\n\t16471: 0x710C,\n\t16472: 0x756F,\n\t16473: 0x7AE3,\n\t16474: 0x8822,\n\t16475: 0x9021,\n\t16476: 0x9075,\n\t16477: 0x96CB,\n\t16478: 0x99FF,\n\t16479: 0x8301,\n\t16480: 0x4E2D,\n\t16481: 0x4EF2,\n\t16482: 0x8846,\n\t16483: 0x91CD,\n\t16484: 0x537D,\n\t16485: 0x6ADB,\n\t16486: 0x696B,\n\t16487: 0x6C41,\n\t16488: 0x847A,\n\t16489: 0x589E,\n\t16490: 0x618E,\n\t16491: 0x66FE,\n\t16492: 0x62EF,\n\t16493: 0x70DD,\n\t16494: 0x7511,\n\t16495: 0x75C7,\n\t16496: 0x7E52,\n\t16497: 0x84B8,\n\t16498: 0x8B49,\n\t16499: 0x8D08,\n\t16500: 0x4E4B,\n\t16501: 0x53EA,\n\t16502: 0x54AB,\n\t16503: 0x5730,\n\t16504: 0x5740,\n\t16505: 0x5FD7,\n\t16506: 0x6301,\n\t16507: 0x6307,\n\t16508: 0x646F,\n\t16509: 0x652F,\n\t16510: 0x65E8,\n\t16511: 0x667A,\n\t16512: 0x679D,\n\t16513: 0x67B3,\n\t16514: 0x6B62,\n\t16515: 0x6C60,\n\t16516: 0x6C9A,\n\t16517: 0x6F2C,\n\t16518: 0x77E5,\n\t16519: 0x7825,\n\t16520: 0x7949,\n\t16521: 0x7957,\n\t16522: 0x7D19,\n\t16523: 0x80A2,\n\t16524: 0x8102,\n\t16525: 0x81F3,\n\t16526: 0x829D,\n\t16527: 0x82B7,\n\t16528: 0x8718,\n\t16529: 0x8A8C,\n\t16530: 0xF9FC,\n\t16531: 0x8D04,\n\t16532: 0x8DBE,\n\t16533: 0x9072,\n\t16534: 0x76F4,\n\t16535: 0x7A19,\n\t16536: 0x7A37,\n\t16537: 0x7E54,\n\t16538: 0x8077,\n\t16539: 0x5507,\n\t16540: 0x55D4,\n\t16541: 0x5875,\n\t16542: 0x632F,\n\t16543: 0x6422,\n\t16544: 0x6649,\n\t16545: 0x664B,\n\t16546: 0x686D,\n\t16547: 0x699B,\n\t16548: 0x6B84,\n\t16549: 0x6D25,\n\t16550: 0x6EB1,\n\t16551: 0x73CD,\n\t16552: 0x7468,\n\t16553: 0x74A1,\n\t16554: 0x755B,\n\t16555: 0x75B9,\n\t16556: 0x76E1,\n\t16557: 0x771E,\n\t16558: 0x778B,\n\t16559: 0x79E6,\n\t16560: 0x7E09,\n\t16561: 0x7E1D,\n\t16562: 0x81FB,\n\t16563: 0x852F,\n\t16564: 0x8897,\n\t16565: 0x8A3A,\n\t16566: 0x8CD1,\n\t16567: 0x8EEB,\n\t16568: 0x8FB0,\n\t16569: 0x9032,\n\t16570: 0x93AD,\n\t16571: 0x9663,\n\t16572: 0x9673,\n\t16573: 0x9707,\n\t16574: 0x4F84,\n\t16575: 0x53F1,\n\t16576: 0x59EA,\n\t16577: 0x5AC9,\n\t16578: 0x5E19,\n\t16579: 0x684E,\n\t16580: 0x74C6,\n\t16581: 0x75BE,\n\t16582: 0x79E9,\n\t16583: 0x7A92,\n\t16584: 0x81A3,\n\t16585: 0x86ED,\n\t16586: 0x8CEA,\n\t16587: 0x8DCC,\n\t16588: 0x8FED,\n\t16589: 0x659F,\n\t16590: 0x6715,\n\t16591: 0xF9FD,\n\t16592: 0x57F7,\n\t16593: 0x6F57,\n\t16594: 0x7DDD,\n\t16595: 0x8F2F,\n\t16596: 0x93F6,\n\t16597: 0x96C6,\n\t16598: 0x5FB5,\n\t16599: 0x61F2,\n\t16600: 0x6F84,\n\t16601: 0x4E14,\n\t16602: 0x4F98,\n\t16603: 0x501F,\n\t16604: 0x53C9,\n\t16605: 0x55DF,\n\t16606: 0x5D6F,\n\t16607: 0x5DEE,\n\t16608: 0x6B21,\n\t16609: 0x6B64,\n\t16610: 0x78CB,\n\t16611: 0x7B9A,\n\t16612: 0xF9FE,\n\t16613: 0x8E49,\n\t16614: 0x8ECA,\n\t16615: 0x906E,\n\t16616: 0x6349,\n\t16617: 0x643E,\n\t16618: 0x7740,\n\t16619: 0x7A84,\n\t16620: 0x932F,\n\t16621: 0x947F,\n\t16622: 0x9F6A,\n\t16623: 0x64B0,\n\t16624: 0x6FAF,\n\t16625: 0x71E6,\n\t16626: 0x74A8,\n\t16627: 0x74DA,\n\t16628: 0x7AC4,\n\t16629: 0x7C12,\n\t16630: 0x7E82,\n\t16631: 0x7CB2,\n\t16632: 0x7E98,\n\t16633: 0x8B9A,\n\t16634: 0x8D0A,\n\t16635: 0x947D,\n\t16636: 0x9910,\n\t16637: 0x994C,\n\t16638: 0x5239,\n\t16639: 0x5BDF,\n\t16640: 0x64E6,\n\t16641: 0x672D,\n\t16642: 0x7D2E,\n\t16643: 0x50ED,\n\t16644: 0x53C3,\n\t16645: 0x5879,\n\t16646: 0x6158,\n\t16647: 0x6159,\n\t16648: 0x61FA,\n\t16649: 0x65AC,\n\t16650: 0x7AD9,\n\t16651: 0x8B92,\n\t16652: 0x8B96,\n\t16653: 0x5009,\n\t16654: 0x5021,\n\t16655: 0x5275,\n\t16656: 0x5531,\n\t16657: 0x5A3C,\n\t16658: 0x5EE0,\n\t16659: 0x5F70,\n\t16660: 0x6134,\n\t16661: 0x655E,\n\t16662: 0x660C,\n\t16663: 0x6636,\n\t16664: 0x66A2,\n\t16665: 0x69CD,\n\t16666: 0x6EC4,\n\t16667: 0x6F32,\n\t16668: 0x7316,\n\t16669: 0x7621,\n\t16670: 0x7A93,\n\t16671: 0x8139,\n\t16672: 0x8259,\n\t16673: 0x83D6,\n\t16674: 0x84BC,\n\t16675: 0x50B5,\n\t16676: 0x57F0,\n\t16677: 0x5BC0,\n\t16678: 0x5BE8,\n\t16679: 0x5F69,\n\t16680: 0x63A1,\n\t16681: 0x7826,\n\t16682: 0x7DB5,\n\t16683: 0x83DC,\n\t16684: 0x8521,\n\t16685: 0x91C7,\n\t16686: 0x91F5,\n\t16687: 0x518A,\n\t16688: 0x67F5,\n\t16689: 0x7B56,\n\t16690: 0x8CAC,\n\t16691: 0x51C4,\n\t16692: 0x59BB,\n\t16693: 0x60BD,\n\t16694: 0x8655,\n\t16695: 0x501C,\n\t16696: 0xF9FF,\n\t16697: 0x5254,\n\t16698: 0x5C3A,\n\t16699: 0x617D,\n\t16700: 0x621A,\n\t16701: 0x62D3,\n\t16702: 0x64F2,\n\t16703: 0x65A5,\n\t16704: 0x6ECC,\n\t16705: 0x7620,\n\t16706: 0x810A,\n\t16707: 0x8E60,\n\t16708: 0x965F,\n\t16709: 0x96BB,\n\t16710: 0x4EDF,\n\t16711: 0x5343,\n\t16712: 0x5598,\n\t16713: 0x5929,\n\t16714: 0x5DDD,\n\t16715: 0x64C5,\n\t16716: 0x6CC9,\n\t16717: 0x6DFA,\n\t16718: 0x7394,\n\t16719: 0x7A7F,\n\t16720: 0x821B,\n\t16721: 0x85A6,\n\t16722: 0x8CE4,\n\t16723: 0x8E10,\n\t16724: 0x9077,\n\t16725: 0x91E7,\n\t16726: 0x95E1,\n\t16727: 0x9621,\n\t16728: 0x97C6,\n\t16729: 0x51F8,\n\t16730: 0x54F2,\n\t16731: 0x5586,\n\t16732: 0x5FB9,\n\t16733: 0x64A4,\n\t16734: 0x6F88,\n\t16735: 0x7DB4,\n\t16736: 0x8F1F,\n\t16737: 0x8F4D,\n\t16738: 0x9435,\n\t16739: 0x50C9,\n\t16740: 0x5C16,\n\t16741: 0x6CBE,\n\t16742: 0x6DFB,\n\t16743: 0x751B,\n\t16744: 0x77BB,\n\t16745: 0x7C3D,\n\t16746: 0x7C64,\n\t16747: 0x8A79,\n\t16748: 0x8AC2,\n\t16749: 0x581E,\n\t16750: 0x59BE,\n\t16751: 0x5E16,\n\t16752: 0x6377,\n\t16753: 0x7252,\n\t16754: 0x758A,\n\t16755: 0x776B,\n\t16756: 0x8ADC,\n\t16757: 0x8CBC,\n\t16758: 0x8F12,\n\t16759: 0x5EF3,\n\t16760: 0x6674,\n\t16761: 0x6DF8,\n\t16762: 0x807D,\n\t16763: 0x83C1,\n\t16764: 0x8ACB,\n\t16765: 0x9751,\n\t16766: 0x9BD6,\n\t16767: 0xFA00,\n\t16768: 0x5243,\n\t16769: 0x66FF,\n\t16770: 0x6D95,\n\t16771: 0x6EEF,\n\t16772: 0x7DE0,\n\t16773: 0x8AE6,\n\t16774: 0x902E,\n\t16775: 0x905E,\n\t16776: 0x9AD4,\n\t16777: 0x521D,\n\t16778: 0x527F,\n\t16779: 0x54E8,\n\t16780: 0x6194,\n\t16781: 0x6284,\n\t16782: 0x62DB,\n\t16783: 0x68A2,\n\t16784: 0x6912,\n\t16785: 0x695A,\n\t16786: 0x6A35,\n\t16787: 0x7092,\n\t16788: 0x7126,\n\t16789: 0x785D,\n\t16790: 0x7901,\n\t16791: 0x790E,\n\t16792: 0x79D2,\n\t16793: 0x7A0D,\n\t16794: 0x8096,\n\t16795: 0x8278,\n\t16796: 0x82D5,\n\t16797: 0x8349,\n\t16798: 0x8549,\n\t16799: 0x8C82,\n\t16800: 0x8D85,\n\t16801: 0x9162,\n\t16802: 0x918B,\n\t16803: 0x91AE,\n\t16804: 0x4FC3,\n\t16805: 0x56D1,\n\t16806: 0x71ED,\n\t16807: 0x77D7,\n\t16808: 0x8700,\n\t16809: 0x89F8,\n\t16810: 0x5BF8,\n\t16811: 0x5FD6,\n\t16812: 0x6751,\n\t16813: 0x90A8,\n\t16814: 0x53E2,\n\t16815: 0x585A,\n\t16816: 0x5BF5,\n\t16817: 0x60A4,\n\t16818: 0x6181,\n\t16819: 0x6460,\n\t16820: 0x7E3D,\n\t16821: 0x8070,\n\t16822: 0x8525,\n\t16823: 0x9283,\n\t16824: 0x64AE,\n\t16825: 0x50AC,\n\t16826: 0x5D14,\n\t16827: 0x6700,\n\t16828: 0x589C,\n\t16829: 0x62BD,\n\t16830: 0x63A8,\n\t16831: 0x690E,\n\t16832: 0x6978,\n\t16833: 0x6A1E,\n\t16834: 0x6E6B,\n\t16835: 0x76BA,\n\t16836: 0x79CB,\n\t16837: 0x82BB,\n\t16838: 0x8429,\n\t16839: 0x8ACF,\n\t16840: 0x8DA8,\n\t16841: 0x8FFD,\n\t16842: 0x9112,\n\t16843: 0x914B,\n\t16844: 0x919C,\n\t16845: 0x9310,\n\t16846: 0x9318,\n\t16847: 0x939A,\n\t16848: 0x96DB,\n\t16849: 0x9A36,\n\t16850: 0x9C0D,\n\t16851: 0x4E11,\n\t16852: 0x755C,\n\t16853: 0x795D,\n\t16854: 0x7AFA,\n\t16855: 0x7B51,\n\t16856: 0x7BC9,\n\t16857: 0x7E2E,\n\t16858: 0x84C4,\n\t16859: 0x8E59,\n\t16860: 0x8E74,\n\t16861: 0x8EF8,\n\t16862: 0x9010,\n\t16863: 0x6625,\n\t16864: 0x693F,\n\t16865: 0x7443,\n\t16866: 0x51FA,\n\t16867: 0x672E,\n\t16868: 0x9EDC,\n\t16869: 0x5145,\n\t16870: 0x5FE0,\n\t16871: 0x6C96,\n\t16872: 0x87F2,\n\t16873: 0x885D,\n\t16874: 0x8877,\n\t16875: 0x60B4,\n\t16876: 0x81B5,\n\t16877: 0x8403,\n\t16878: 0x8D05,\n\t16879: 0x53D6,\n\t16880: 0x5439,\n\t16881: 0x5634,\n\t16882: 0x5A36,\n\t16883: 0x5C31,\n\t16884: 0x708A,\n\t16885: 0x7FE0,\n\t16886: 0x805A,\n\t16887: 0x8106,\n\t16888: 0x81ED,\n\t16889: 0x8DA3,\n\t16890: 0x9189,\n\t16891: 0x9A5F,\n\t16892: 0x9DF2,\n\t16893: 0x5074,\n\t16894: 0x4EC4,\n\t16895: 0x53A0,\n\t16896: 0x60FB,\n\t16897: 0x6E2C,\n\t16898: 0x5C64,\n\t16899: 0x4F88,\n\t16900: 0x5024,\n\t16901: 0x55E4,\n\t16902: 0x5CD9,\n\t16903: 0x5E5F,\n\t16904: 0x6065,\n\t16905: 0x6894,\n\t16906: 0x6CBB,\n\t16907: 0x6DC4,\n\t16908: 0x71BE,\n\t16909: 0x75D4,\n\t16910: 0x75F4,\n\t16911: 0x7661,\n\t16912: 0x7A1A,\n\t16913: 0x7A49,\n\t16914: 0x7DC7,\n\t16915: 0x7DFB,\n\t16916: 0x7F6E,\n\t16917: 0x81F4,\n\t16918: 0x86A9,\n\t16919: 0x8F1C,\n\t16920: 0x96C9,\n\t16921: 0x99B3,\n\t16922: 0x9F52,\n\t16923: 0x5247,\n\t16924: 0x52C5,\n\t16925: 0x98ED,\n\t16926: 0x89AA,\n\t16927: 0x4E03,\n\t16928: 0x67D2,\n\t16929: 0x6F06,\n\t16930: 0x4FB5,\n\t16931: 0x5BE2,\n\t16932: 0x6795,\n\t16933: 0x6C88,\n\t16934: 0x6D78,\n\t16935: 0x741B,\n\t16936: 0x7827,\n\t16937: 0x91DD,\n\t16938: 0x937C,\n\t16939: 0x87C4,\n\t16940: 0x79E4,\n\t16941: 0x7A31,\n\t16942: 0x5FEB,\n\t16943: 0x4ED6,\n\t16944: 0x54A4,\n\t16945: 0x553E,\n\t16946: 0x58AE,\n\t16947: 0x59A5,\n\t16948: 0x60F0,\n\t16949: 0x6253,\n\t16950: 0x62D6,\n\t16951: 0x6736,\n\t16952: 0x6955,\n\t16953: 0x8235,\n\t16954: 0x9640,\n\t16955: 0x99B1,\n\t16956: 0x99DD,\n\t16957: 0x502C,\n\t16958: 0x5353,\n\t16959: 0x5544,\n\t16960: 0x577C,\n\t16961: 0xFA01,\n\t16962: 0x6258,\n\t16963: 0xFA02,\n\t16964: 0x64E2,\n\t16965: 0x666B,\n\t16966: 0x67DD,\n\t16967: 0x6FC1,\n\t16968: 0x6FEF,\n\t16969: 0x7422,\n\t16970: 0x7438,\n\t16971: 0x8A17,\n\t16972: 0x9438,\n\t16973: 0x5451,\n\t16974: 0x5606,\n\t16975: 0x5766,\n\t16976: 0x5F48,\n\t16977: 0x619A,\n\t16978: 0x6B4E,\n\t16979: 0x7058,\n\t16980: 0x70AD,\n\t16981: 0x7DBB,\n\t16982: 0x8A95,\n\t16983: 0x596A,\n\t16984: 0x812B,\n\t16985: 0x63A2,\n\t16986: 0x7708,\n\t16987: 0x803D,\n\t16988: 0x8CAA,\n\t16989: 0x5854,\n\t16990: 0x642D,\n\t16991: 0x69BB,\n\t16992: 0x5B95,\n\t16993: 0x5E11,\n\t16994: 0x6E6F,\n\t16995: 0xFA03,\n\t16996: 0x8569,\n\t16997: 0x514C,\n\t16998: 0x53F0,\n\t16999: 0x592A,\n\t17000: 0x6020,\n\t17001: 0x614B,\n\t17002: 0x6B86,\n\t17003: 0x6C70,\n\t17004: 0x6CF0,\n\t17005: 0x7B1E,\n\t17006: 0x80CE,\n\t17007: 0x82D4,\n\t17008: 0x8DC6,\n\t17009: 0x90B0,\n\t17010: 0x98B1,\n\t17011: 0xFA04,\n\t17012: 0x64C7,\n\t17013: 0x6FA4,\n\t17014: 0x6491,\n\t17015: 0x6504,\n\t17016: 0x514E,\n\t17017: 0x5410,\n\t17018: 0x571F,\n\t17019: 0x8A0E,\n\t17020: 0x615F,\n\t17021: 0x6876,\n\t17022: 0xFA05,\n\t17023: 0x75DB,\n\t17024: 0x7B52,\n\t17025: 0x7D71,\n\t17026: 0x901A,\n\t17027: 0x5806,\n\t17028: 0x69CC,\n\t17029: 0x817F,\n\t17030: 0x892A,\n\t17031: 0x9000,\n\t17032: 0x9839,\n\t17033: 0x5078,\n\t17034: 0x5957,\n\t17035: 0x59AC,\n\t17036: 0x6295,\n\t17037: 0x900F,\n\t17038: 0x9B2A,\n\t17039: 0x615D,\n\t17040: 0x7279,\n\t17041: 0x95D6,\n\t17042: 0x5761,\n\t17043: 0x5A46,\n\t17044: 0x5DF4,\n\t17045: 0x628A,\n\t17046: 0x64AD,\n\t17047: 0x64FA,\n\t17048: 0x6777,\n\t17049: 0x6CE2,\n\t17050: 0x6D3E,\n\t17051: 0x722C,\n\t17052: 0x7436,\n\t17053: 0x7834,\n\t17054: 0x7F77,\n\t17055: 0x82AD,\n\t17056: 0x8DDB,\n\t17057: 0x9817,\n\t17058: 0x5224,\n\t17059: 0x5742,\n\t17060: 0x677F,\n\t17061: 0x7248,\n\t17062: 0x74E3,\n\t17063: 0x8CA9,\n\t17064: 0x8FA6,\n\t17065: 0x9211,\n\t17066: 0x962A,\n\t17067: 0x516B,\n\t17068: 0x53ED,\n\t17069: 0x634C,\n\t17070: 0x4F69,\n\t17071: 0x5504,\n\t17072: 0x6096,\n\t17073: 0x6557,\n\t17074: 0x6C9B,\n\t17075: 0x6D7F,\n\t17076: 0x724C,\n\t17077: 0x72FD,\n\t17078: 0x7A17,\n\t17079: 0x8987,\n\t17080: 0x8C9D,\n\t17081: 0x5F6D,\n\t17082: 0x6F8E,\n\t17083: 0x70F9,\n\t17084: 0x81A8,\n\t17085: 0x610E,\n\t17086: 0x4FBF,\n\t17087: 0x504F,\n\t17088: 0x6241,\n\t17089: 0x7247,\n\t17090: 0x7BC7,\n\t17091: 0x7DE8,\n\t17092: 0x7FE9,\n\t17093: 0x904D,\n\t17094: 0x97AD,\n\t17095: 0x9A19,\n\t17096: 0x8CB6,\n\t17097: 0x576A,\n\t17098: 0x5E73,\n\t17099: 0x67B0,\n\t17100: 0x840D,\n\t17101: 0x8A55,\n\t17102: 0x5420,\n\t17103: 0x5B16,\n\t17104: 0x5E63,\n\t17105: 0x5EE2,\n\t17106: 0x5F0A,\n\t17107: 0x6583,\n\t17108: 0x80BA,\n\t17109: 0x853D,\n\t17110: 0x9589,\n\t17111: 0x965B,\n\t17112: 0x4F48,\n\t17113: 0x5305,\n\t17114: 0x530D,\n\t17115: 0x530F,\n\t17116: 0x5486,\n\t17117: 0x54FA,\n\t17118: 0x5703,\n\t17119: 0x5E03,\n\t17120: 0x6016,\n\t17121: 0x629B,\n\t17122: 0x62B1,\n\t17123: 0x6355,\n\t17124: 0xFA06,\n\t17125: 0x6CE1,\n\t17126: 0x6D66,\n\t17127: 0x75B1,\n\t17128: 0x7832,\n\t17129: 0x80DE,\n\t17130: 0x812F,\n\t17131: 0x82DE,\n\t17132: 0x8461,\n\t17133: 0x84B2,\n\t17134: 0x888D,\n\t17135: 0x8912,\n\t17136: 0x900B,\n\t17137: 0x92EA,\n\t17138: 0x98FD,\n\t17139: 0x9B91,\n\t17140: 0x5E45,\n\t17141: 0x66B4,\n\t17142: 0x66DD,\n\t17143: 0x7011,\n\t17144: 0x7206,\n\t17145: 0xFA07,\n\t17146: 0x4FF5,\n\t17147: 0x527D,\n\t17148: 0x5F6A,\n\t17149: 0x6153,\n\t17150: 0x6753,\n\t17151: 0x6A19,\n\t17152: 0x6F02,\n\t17153: 0x74E2,\n\t17154: 0x7968,\n\t17155: 0x8868,\n\t17156: 0x8C79,\n\t17157: 0x98C7,\n\t17158: 0x98C4,\n\t17159: 0x9A43,\n\t17160: 0x54C1,\n\t17161: 0x7A1F,\n\t17162: 0x6953,\n\t17163: 0x8AF7,\n\t17164: 0x8C4A,\n\t17165: 0x98A8,\n\t17166: 0x99AE,\n\t17167: 0x5F7C,\n\t17168: 0x62AB,\n\t17169: 0x75B2,\n\t17170: 0x76AE,\n\t17171: 0x88AB,\n\t17172: 0x907F,\n\t17173: 0x9642,\n\t17174: 0x5339,\n\t17175: 0x5F3C,\n\t17176: 0x5FC5,\n\t17177: 0x6CCC,\n\t17178: 0x73CC,\n\t17179: 0x7562,\n\t17180: 0x758B,\n\t17181: 0x7B46,\n\t17182: 0x82FE,\n\t17183: 0x999D,\n\t17184: 0x4E4F,\n\t17185: 0x903C,\n\t17186: 0x4E0B,\n\t17187: 0x4F55,\n\t17188: 0x53A6,\n\t17189: 0x590F,\n\t17190: 0x5EC8,\n\t17191: 0x6630,\n\t17192: 0x6CB3,\n\t17193: 0x7455,\n\t17194: 0x8377,\n\t17195: 0x8766,\n\t17196: 0x8CC0,\n\t17197: 0x9050,\n\t17198: 0x971E,\n\t17199: 0x9C15,\n\t17200: 0x58D1,\n\t17201: 0x5B78,\n\t17202: 0x8650,\n\t17203: 0x8B14,\n\t17204: 0x9DB4,\n\t17205: 0x5BD2,\n\t17206: 0x6068,\n\t17207: 0x608D,\n\t17208: 0x65F1,\n\t17209: 0x6C57,\n\t17210: 0x6F22,\n\t17211: 0x6FA3,\n\t17212: 0x701A,\n\t17213: 0x7F55,\n\t17214: 0x7FF0,\n\t17215: 0x9591,\n\t17216: 0x9592,\n\t17217: 0x9650,\n\t17218: 0x97D3,\n\t17219: 0x5272,\n\t17220: 0x8F44,\n\t17221: 0x51FD,\n\t17222: 0x542B,\n\t17223: 0x54B8,\n\t17224: 0x5563,\n\t17225: 0x558A,\n\t17226: 0x6ABB,\n\t17227: 0x6DB5,\n\t17228: 0x7DD8,\n\t17229: 0x8266,\n\t17230: 0x929C,\n\t17231: 0x9677,\n\t17232: 0x9E79,\n\t17233: 0x5408,\n\t17234: 0x54C8,\n\t17235: 0x76D2,\n\t17236: 0x86E4,\n\t17237: 0x95A4,\n\t17238: 0x95D4,\n\t17239: 0x965C,\n\t17240: 0x4EA2,\n\t17241: 0x4F09,\n\t17242: 0x59EE,\n\t17243: 0x5AE6,\n\t17244: 0x5DF7,\n\t17245: 0x6052,\n\t17246: 0x6297,\n\t17247: 0x676D,\n\t17248: 0x6841,\n\t17249: 0x6C86,\n\t17250: 0x6E2F,\n\t17251: 0x7F38,\n\t17252: 0x809B,\n\t17253: 0x822A,\n\t17254: 0xFA08,\n\t17255: 0xFA09,\n\t17256: 0x9805,\n\t17257: 0x4EA5,\n\t17258: 0x5055,\n\t17259: 0x54B3,\n\t17260: 0x5793,\n\t17261: 0x595A,\n\t17262: 0x5B69,\n\t17263: 0x5BB3,\n\t17264: 0x61C8,\n\t17265: 0x6977,\n\t17266: 0x6D77,\n\t17267: 0x7023,\n\t17268: 0x87F9,\n\t17269: 0x89E3,\n\t17270: 0x8A72,\n\t17271: 0x8AE7,\n\t17272: 0x9082,\n\t17273: 0x99ED,\n\t17274: 0x9AB8,\n\t17275: 0x52BE,\n\t17276: 0x6838,\n\t17277: 0x5016,\n\t17278: 0x5E78,\n\t17279: 0x674F,\n\t17280: 0x8347,\n\t17281: 0x884C,\n\t17282: 0x4EAB,\n\t17283: 0x5411,\n\t17284: 0x56AE,\n\t17285: 0x73E6,\n\t17286: 0x9115,\n\t17287: 0x97FF,\n\t17288: 0x9909,\n\t17289: 0x9957,\n\t17290: 0x9999,\n\t17291: 0x5653,\n\t17292: 0x589F,\n\t17293: 0x865B,\n\t17294: 0x8A31,\n\t17295: 0x61B2,\n\t17296: 0x6AF6,\n\t17297: 0x737B,\n\t17298: 0x8ED2,\n\t17299: 0x6B47,\n\t17300: 0x96AA,\n\t17301: 0x9A57,\n\t17302: 0x5955,\n\t17303: 0x7200,\n\t17304: 0x8D6B,\n\t17305: 0x9769,\n\t17306: 0x4FD4,\n\t17307: 0x5CF4,\n\t17308: 0x5F26,\n\t17309: 0x61F8,\n\t17310: 0x665B,\n\t17311: 0x6CEB,\n\t17312: 0x70AB,\n\t17313: 0x7384,\n\t17314: 0x73B9,\n\t17315: 0x73FE,\n\t17316: 0x7729,\n\t17317: 0x774D,\n\t17318: 0x7D43,\n\t17319: 0x7D62,\n\t17320: 0x7E23,\n\t17321: 0x8237,\n\t17322: 0x8852,\n\t17323: 0xFA0A,\n\t17324: 0x8CE2,\n\t17325: 0x9249,\n\t17326: 0x986F,\n\t17327: 0x5B51,\n\t17328: 0x7A74,\n\t17329: 0x8840,\n\t17330: 0x9801,\n\t17331: 0x5ACC,\n\t17332: 0x4FE0,\n\t17333: 0x5354,\n\t17334: 0x593E,\n\t17335: 0x5CFD,\n\t17336: 0x633E,\n\t17337: 0x6D79,\n\t17338: 0x72F9,\n\t17339: 0x8105,\n\t17340: 0x8107,\n\t17341: 0x83A2,\n\t17342: 0x92CF,\n\t17343: 0x9830,\n\t17344: 0x4EA8,\n\t17345: 0x5144,\n\t17346: 0x5211,\n\t17347: 0x578B,\n\t17348: 0x5F62,\n\t17349: 0x6CC2,\n\t17350: 0x6ECE,\n\t17351: 0x7005,\n\t17352: 0x7050,\n\t17353: 0x70AF,\n\t17354: 0x7192,\n\t17355: 0x73E9,\n\t17356: 0x7469,\n\t17357: 0x834A,\n\t17358: 0x87A2,\n\t17359: 0x8861,\n\t17360: 0x9008,\n\t17361: 0x90A2,\n\t17362: 0x93A3,\n\t17363: 0x99A8,\n\t17364: 0x516E,\n\t17365: 0x5F57,\n\t17366: 0x60E0,\n\t17367: 0x6167,\n\t17368: 0x66B3,\n\t17369: 0x8559,\n\t17370: 0x8E4A,\n\t17371: 0x91AF,\n\t17372: 0x978B,\n\t17373: 0x4E4E,\n\t17374: 0x4E92,\n\t17375: 0x547C,\n\t17376: 0x58D5,\n\t17377: 0x58FA,\n\t17378: 0x597D,\n\t17379: 0x5CB5,\n\t17380: 0x5F27,\n\t17381: 0x6236,\n\t17382: 0x6248,\n\t17383: 0x660A,\n\t17384: 0x6667,\n\t17385: 0x6BEB,\n\t17386: 0x6D69,\n\t17387: 0x6DCF,\n\t17388: 0x6E56,\n\t17389: 0x6EF8,\n\t17390: 0x6F94,\n\t17391: 0x6FE0,\n\t17392: 0x6FE9,\n\t17393: 0x705D,\n\t17394: 0x72D0,\n\t17395: 0x7425,\n\t17396: 0x745A,\n\t17397: 0x74E0,\n\t17398: 0x7693,\n\t17399: 0x795C,\n\t17400: 0x7CCA,\n\t17401: 0x7E1E,\n\t17402: 0x80E1,\n\t17403: 0x82A6,\n\t17404: 0x846B,\n\t17405: 0x84BF,\n\t17406: 0x864E,\n\t17407: 0x865F,\n\t17408: 0x8774,\n\t17409: 0x8B77,\n\t17410: 0x8C6A,\n\t17411: 0x93AC,\n\t17412: 0x9800,\n\t17413: 0x9865,\n\t17414: 0x60D1,\n\t17415: 0x6216,\n\t17416: 0x9177,\n\t17417: 0x5A5A,\n\t17418: 0x660F,\n\t17419: 0x6DF7,\n\t17420: 0x6E3E,\n\t17421: 0x743F,\n\t17422: 0x9B42,\n\t17423: 0x5FFD,\n\t17424: 0x60DA,\n\t17425: 0x7B0F,\n\t17426: 0x54C4,\n\t17427: 0x5F18,\n\t17428: 0x6C5E,\n\t17429: 0x6CD3,\n\t17430: 0x6D2A,\n\t17431: 0x70D8,\n\t17432: 0x7D05,\n\t17433: 0x8679,\n\t17434: 0x8A0C,\n\t17435: 0x9D3B,\n\t17436: 0x5316,\n\t17437: 0x548C,\n\t17438: 0x5B05,\n\t17439: 0x6A3A,\n\t17440: 0x706B,\n\t17441: 0x7575,\n\t17442: 0x798D,\n\t17443: 0x79BE,\n\t17444: 0x82B1,\n\t17445: 0x83EF,\n\t17446: 0x8A71,\n\t17447: 0x8B41,\n\t17448: 0x8CA8,\n\t17449: 0x9774,\n\t17450: 0xFA0B,\n\t17451: 0x64F4,\n\t17452: 0x652B,\n\t17453: 0x78BA,\n\t17454: 0x78BB,\n\t17455: 0x7A6B,\n\t17456: 0x4E38,\n\t17457: 0x559A,\n\t17458: 0x5950,\n\t17459: 0x5BA6,\n\t17460: 0x5E7B,\n\t17461: 0x60A3,\n\t17462: 0x63DB,\n\t17463: 0x6B61,\n\t17464: 0x6665,\n\t17465: 0x6853,\n\t17466: 0x6E19,\n\t17467: 0x7165,\n\t17468: 0x74B0,\n\t17469: 0x7D08,\n\t17470: 0x9084,\n\t17471: 0x9A69,\n\t17472: 0x9C25,\n\t17473: 0x6D3B,\n\t17474: 0x6ED1,\n\t17475: 0x733E,\n\t17476: 0x8C41,\n\t17477: 0x95CA,\n\t17478: 0x51F0,\n\t17479: 0x5E4C,\n\t17480: 0x5FA8,\n\t17481: 0x604D,\n\t17482: 0x60F6,\n\t17483: 0x6130,\n\t17484: 0x614C,\n\t17485: 0x6643,\n\t17486: 0x6644,\n\t17487: 0x69A5,\n\t17488: 0x6CC1,\n\t17489: 0x6E5F,\n\t17490: 0x6EC9,\n\t17491: 0x6F62,\n\t17492: 0x714C,\n\t17493: 0x749C,\n\t17494: 0x7687,\n\t17495: 0x7BC1,\n\t17496: 0x7C27,\n\t17497: 0x8352,\n\t17498: 0x8757,\n\t17499: 0x9051,\n\t17500: 0x968D,\n\t17501: 0x9EC3,\n\t17502: 0x532F,\n\t17503: 0x56DE,\n\t17504: 0x5EFB,\n\t17505: 0x5F8A,\n\t17506: 0x6062,\n\t17507: 0x6094,\n\t17508: 0x61F7,\n\t17509: 0x6666,\n\t17510: 0x6703,\n\t17511: 0x6A9C,\n\t17512: 0x6DEE,\n\t17513: 0x6FAE,\n\t17514: 0x7070,\n\t17515: 0x736A,\n\t17516: 0x7E6A,\n\t17517: 0x81BE,\n\t17518: 0x8334,\n\t17519: 0x86D4,\n\t17520: 0x8AA8,\n\t17521: 0x8CC4,\n\t17522: 0x5283,\n\t17523: 0x7372,\n\t17524: 0x5B96,\n\t17525: 0x6A6B,\n\t17526: 0x9404,\n\t17527: 0x54EE,\n\t17528: 0x5686,\n\t17529: 0x5B5D,\n\t17530: 0x6548,\n\t17531: 0x6585,\n\t17532: 0x66C9,\n\t17533: 0x689F,\n\t17534: 0x6D8D,\n\t17535: 0x6DC6,\n\t17536: 0x723B,\n\t17537: 0x80B4,\n\t17538: 0x9175,\n\t17539: 0x9A4D,\n\t17540: 0x4FAF,\n\t17541: 0x5019,\n\t17542: 0x539A,\n\t17543: 0x540E,\n\t17544: 0x543C,\n\t17545: 0x5589,\n\t17546: 0x55C5,\n\t17547: 0x5E3F,\n\t17548: 0x5F8C,\n\t17549: 0x673D,\n\t17550: 0x7166,\n\t17551: 0x73DD,\n\t17552: 0x9005,\n\t17553: 0x52DB,\n\t17554: 0x52F3,\n\t17555: 0x5864,\n\t17556: 0x58CE,\n\t17557: 0x7104,\n\t17558: 0x718F,\n\t17559: 0x71FB,\n\t17560: 0x85B0,\n\t17561: 0x8A13,\n\t17562: 0x6688,\n\t17563: 0x85A8,\n\t17564: 0x55A7,\n\t17565: 0x6684,\n\t17566: 0x714A,\n\t17567: 0x8431,\n\t17568: 0x5349,\n\t17569: 0x5599,\n\t17570: 0x6BC1,\n\t17571: 0x5F59,\n\t17572: 0x5FBD,\n\t17573: 0x63EE,\n\t17574: 0x6689,\n\t17575: 0x7147,\n\t17576: 0x8AF1,\n\t17577: 0x8F1D,\n\t17578: 0x9EBE,\n\t17579: 0x4F11,\n\t17580: 0x643A,\n\t17581: 0x70CB,\n\t17582: 0x7566,\n\t17583: 0x8667,\n\t17584: 0x6064,\n\t17585: 0x8B4E,\n\t17586: 0x9DF8,\n\t17587: 0x5147,\n\t17588: 0x51F6,\n\t17589: 0x5308,\n\t17590: 0x6D36,\n\t17591: 0x80F8,\n\t17592: 0x9ED1,\n\t17593: 0x6615,\n\t17594: 0x6B23,\n\t17595: 0x7098,\n\t17596: 0x75D5,\n\t17597: 0x5403,\n\t17598: 0x5C79,\n\t17599: 0x7D07,\n\t17600: 0x8A16,\n\t17601: 0x6B20,\n\t17602: 0x6B3D,\n\t17603: 0x6B46,\n\t17604: 0x5438,\n\t17605: 0x6070,\n\t17606: 0x6D3D,\n\t17607: 0x7FD5,\n\t17608: 0x8208,\n\t17609: 0x50D6,\n\t17610: 0x51DE,\n\t17611: 0x559C,\n\t17612: 0x566B,\n\t17613: 0x56CD,\n\t17614: 0x59EC,\n\t17615: 0x5B09,\n\t17616: 0x5E0C,\n\t17617: 0x6199,\n\t17618: 0x6198,\n\t17619: 0x6231,\n\t17620: 0x665E,\n\t17621: 0x66E6,\n\t17622: 0x7199,\n\t17623: 0x71B9,\n\t17624: 0x71BA,\n\t17625: 0x72A7,\n\t17626: 0x79A7,\n\t17627: 0x7A00,\n\t17628: 0x7FB2,\n\t17629: 0x8A70,\n}\n\nconst numEncodeTables = 7\n\n// encodeX are the encoding tables from Unicode to EUC-KR code,\n// sorted by decreasing length.\n// encode0: 20893 entries for runes in [19968, 40861).\n// encode1: 11172 entries for runes in [44032, 55204).\n// encode2:  1625 entries for runes in [ 8213,  9838).\n// encode3:   990 entries for runes in [12288, 13278).\n// encode4:   945 entries for runes in [  161,  1106).\n// encode5:   268 entries for runes in [63744, 64012).\n// encode6:   230 entries for runes in [65281, 65511).\n\nconst encode0Low, encode0High = 19968, 40861\n\nvar encode0 = [...]uint16{\n\t19968 - 19968: 0xECE9,\n\t19969 - 19968: 0xEFCB,\n\t19971 - 19968: 0xF6D2,\n\t19975 - 19968: 0xD8B2,\n\t19976 - 19968: 0xEDDB,\n\t19977 - 19968: 0xDFB2,\n\t19978 - 19968: 0xDFBE,\n\t19979 - 19968: 0xF9BB,\n\t19981 - 19968: 0xDCF4,\n\t19985 - 19968: 0xF5E4,\n\t19988 - 19968: 0xF3A6,\n\t19989 - 19968: 0xDDE0,\n\t19990 - 19968: 0xE1A6,\n\t19992 - 19968: 0xCEF8,\n\t19993 - 19968: 0xDCB0,\n\t19998 - 19968: 0xE3AA,\n\t20013 - 19968: 0xF1E9,\n\t20018 - 19968: 0xCDFA,\n\t20024 - 19968: 0xFCAF,\n\t20025 - 19968: 0xD3A1,\n\t20027 - 19968: 0xF1AB,\n\t20034 - 19968: 0xE7D1,\n\t20035 - 19968: 0xD2AC,\n\t20037 - 19968: 0xCEF9,\n\t20043 - 19968: 0xF1FD,\n\t20045 - 19968: 0xDEBF,\n\t20046 - 19968: 0xFBBA,\n\t20047 - 19968: 0xF9B9,\n\t20054 - 19968: 0xCED2,\n\t20056 - 19968: 0xE3AB,\n\t20057 - 19968: 0xEBE0,\n\t20061 - 19968: 0xCEFA,\n\t20062 - 19968: 0xCBF7,\n\t20063 - 19968: 0xE5A5,\n\t20075 - 19968: 0xCAE1,\n\t20077 - 19968: 0xD4CC,\n\t20083 - 19968: 0xEAE1,\n\t20086 - 19968: 0xDCE3,\n\t20087 - 19968: 0xDFAD,\n\t20094 - 19968: 0xCBEB,\n\t20098 - 19968: 0xD5AF,\n\t20102 - 19968: 0xD6F5,\n\t20104 - 19968: 0xE5F8,\n\t20107 - 19968: 0xDEC0,\n\t20108 - 19968: 0xECA3,\n\t20110 - 19968: 0xE9CD,\n\t20112 - 19968: 0xEAA7,\n\t20113 - 19968: 0xE9F6,\n\t20114 - 19968: 0xFBBB,\n\t20116 - 19968: 0xE7E9,\n\t20117 - 19968: 0xEFCC,\n\t20120 - 19968: 0xD0E6,\n\t20123 - 19968: 0xDEC1,\n\t20126 - 19968: 0xE4AC,\n\t20129 - 19968: 0xD8CC,\n\t20130 - 19968: 0xF9F1,\n\t20132 - 19968: 0xCEDF,\n\t20133 - 19968: 0xFAA4,\n\t20134 - 19968: 0xE6B2,\n\t20136 - 19968: 0xFAFB,\n\t20139 - 19968: 0xFABD,\n\t20140 - 19968: 0xCCC8,\n\t20141 - 19968: 0xEFCD,\n\t20142 - 19968: 0xD5D5,\n\t20150 - 19968: 0xD3A2,\n\t20154 - 19968: 0xECD1,\n\t20160 - 19968: 0xE4A7,\n\t20161 - 19968: 0xECD2,\n\t20164 - 19968: 0xF6B1,\n\t20167 - 19968: 0xCEFB,\n\t20170 - 19968: 0xD0D1,\n\t20171 - 19968: 0xCBBF,\n\t20173 - 19968: 0xEDA4,\n\t20180 - 19968: 0xEDA8,\n\t20181 - 19968: 0xDEC2,\n\t20182 - 19968: 0xF6E2,\n\t20183 - 19968: 0xEDDC,\n\t20184 - 19968: 0xDCF5,\n\t20185 - 19968: 0xE0B9,\n\t20189 - 19968: 0xD4CE,\n\t20191 - 19968: 0xF4B5,\n\t20195 - 19968: 0xD3DB,\n\t20196 - 19968: 0xD6B5,\n\t20197 - 19968: 0xECA4,\n\t20208 - 19968: 0xE4E6,\n\t20210 - 19968: 0xF1EA,\n\t20214 - 19968: 0xCBEC,\n\t20215 - 19968: 0xCBC0,\n\t20219 - 19968: 0xECF2,\n\t20225 - 19968: 0xD0EA,\n\t20233 - 19968: 0xF9F2,\n\t20234 - 19968: 0xECA5,\n\t20235 - 19968: 0xD0DF,\n\t20237 - 19968: 0xE7EA,\n\t20238 - 19968: 0xD0EB,\n\t20239 - 19968: 0xDCD1,\n\t20240 - 19968: 0xDBE9,\n\t20241 - 19968: 0xFDCC,\n\t20271 - 19968: 0xDBD7,\n\t20276 - 19968: 0xDAE1,\n\t20278 - 19968: 0xD6B6,\n\t20280 - 19968: 0xE3DF,\n\t20282 - 19968: 0xDEC3,\n\t20284 - 19968: 0xDEC4,\n\t20285 - 19968: 0xCAA1,\n\t20291 - 19968: 0xEEEC,\n\t20294 - 19968: 0xD3A3,\n\t20295 - 19968: 0xEEB7,\n\t20296 - 19968: 0xF8CF,\n\t20301 - 19968: 0xEAC8,\n\t20302 - 19968: 0xEEB8,\n\t20303 - 19968: 0xF1AC,\n\t20304 - 19968: 0xF1A5,\n\t20305 - 19968: 0xE9CE,\n\t20309 - 19968: 0xF9BC,\n\t20313 - 19968: 0xE5F9,\n\t20314 - 19968: 0xECEA,\n\t20315 - 19968: 0xDDD6,\n\t20316 - 19968: 0xEDC2,\n\t20329 - 19968: 0xF8A5,\n\t20335 - 19968: 0xE5BA,\n\t20336 - 19968: 0xDBD8,\n\t20339 - 19968: 0xCAA2,\n\t20342 - 19968: 0xD1CD,\n\t20346 - 19968: 0xEEED,\n\t20350 - 19968: 0xECEB,\n\t20351 - 19968: 0xDEC5,\n\t20353 - 19968: 0xE3E0,\n\t20355 - 19968: 0xCAC9,\n\t20356 - 19968: 0xF2E9,\n\t20358 - 19968: 0xD5CE,\n\t20360 - 19968: 0xF6B6,\n\t20362 - 19968: 0xCEC2,\n\t20363 - 19968: 0xD6C7,\n\t20365 - 19968: 0xE3B4,\n\t20367 - 19968: 0xF1AD,\n\t20369 - 19968: 0xEAE2,\n\t20374 - 19968: 0xD7C2,\n\t20376 - 19968: 0xF3A7,\n\t20379 - 19968: 0xCDEA,\n\t20381 - 19968: 0xEBEE,\n\t20398 - 19968: 0xD9B2,\n\t20399 - 19968: 0xFDA5,\n\t20405 - 19968: 0xF6D5,\n\t20406 - 19968: 0xD5E2,\n\t20415 - 19968: 0xF8B5,\n\t20418 - 19968: 0xCCF5,\n\t20419 - 19968: 0xF5B5,\n\t20420 - 19968: 0xE4AD,\n\t20425 - 19968: 0xE7EB,\n\t20426 - 19968: 0xF1D5,\n\t20430 - 19968: 0xF0BB,\n\t20433 - 19968: 0xE9B5,\n\t20435 - 19968: 0xCCC9,\n\t20436 - 19968: 0xFAD5,\n\t20439 - 19968: 0xE1D4,\n\t20442 - 19968: 0xD7D6,\n\t20445 - 19968: 0xDCC1,\n\t20447 - 19968: 0xDEC6,\n\t20448 - 19968: 0xFAEF,\n\t20449 - 19968: 0xE3E1,\n\t20462 - 19968: 0xE1F3,\n\t20463 - 19968: 0xDCF6,\n\t20465 - 19968: 0xCEFC,\n\t20467 - 19968: 0xDBC4,\n\t20469 - 19968: 0xF8F1,\n\t20472 - 19968: 0xDCE4,\n\t20474 - 19968: 0xE5EF,\n\t20482 - 19968: 0xDCB1,\n\t20486 - 19968: 0xD5D6,\n\t20489 - 19968: 0xF3DA,\n\t20491 - 19968: 0xCBC1,\n\t20493 - 19968: 0xDBC3,\n\t20497 - 19968: 0xD9FA,\n\t20498 - 19968: 0xD3EE,\n\t20502 - 19968: 0xFAB8,\n\t20505 - 19968: 0xFDA6,\n\t20506 - 19968: 0xEBEF,\n\t20508 - 19968: 0xF4A6,\n\t20510 - 19968: 0xCCCA,\n\t20511 - 19968: 0xF3A8,\n\t20513 - 19968: 0xF3DB,\n\t20515 - 19968: 0xDBA7,\n\t20516 - 19968: 0xF6B7,\n\t20518 - 19968: 0xCFE6,\n\t20519 - 19968: 0xF0F2,\n\t20520 - 19968: 0xCBDA,\n\t20522 - 19968: 0xE7D2,\n\t20523 - 19968: 0xD7C3,\n\t20524 - 19968: 0xF6F0,\n\t20525 - 19968: 0xE8DE,\n\t20539 - 19968: 0xE5A6,\n\t20547 - 19968: 0xE5E7,\n\t20551 - 19968: 0xCAA3,\n\t20552 - 19968: 0xCCA7,\n\t20553 - 19968: 0xEAC9,\n\t20559 - 19968: 0xF8B6,\n\t20565 - 19968: 0xFAA5,\n\t20570 - 19968: 0xF1AE,\n\t20572 - 19968: 0xEFCE,\n\t20581 - 19968: 0xCBED,\n\t20596 - 19968: 0xF6B0,\n\t20597 - 19968: 0xEFCF,\n\t20598 - 19968: 0xE9CF,\n\t20600 - 19968: 0xF7DE,\n\t20608 - 19968: 0xCED3,\n\t20613 - 19968: 0xDCF7,\n\t20621 - 19968: 0xDBA8,\n\t20625 - 19968: 0xCBF8,\n\t20632 - 19968: 0xDFA1,\n\t20633 - 19968: 0xDDE1,\n\t20652 - 19968: 0xF5CA,\n\t20653 - 19968: 0xE9B6,\n\t20658 - 19968: 0xE7EC,\n\t20659 - 19968: 0xEEEE,\n\t20661 - 19968: 0xF3F0,\n\t20663 - 19968: 0xDFBF,\n\t20670 - 19968: 0xCCCB,\n\t20677 - 19968: 0xD0C1,\n\t20681 - 19968: 0xF4D2,\n\t20682 - 19968: 0xE0BA,\n\t20687 - 19968: 0xDFC0,\n\t20689 - 19968: 0xCEE0,\n\t20693 - 19968: 0xDCD2,\n\t20694 - 19968: 0xFDEA,\n\t20698 - 19968: 0xD6F6,\n\t20702 - 19968: 0xEACA,\n\t20709 - 19968: 0xE8E9,\n\t20711 - 19968: 0xE3AC,\n\t20717 - 19968: 0xF3D0,\n\t20729 - 19968: 0xCAA4,\n\t20731 - 19968: 0xDBF8,\n\t20735 - 19968: 0xDEC7,\n\t20736 - 19968: 0xEBF0,\n\t20737 - 19968: 0xF1D6,\n\t20740 - 19968: 0xE5E2,\n\t20742 - 19968: 0xCCCC,\n\t20745 - 19968: 0xCBFB,\n\t20754 - 19968: 0xEAE3,\n\t20767 - 19968: 0xDFC1,\n\t20769 - 19968: 0xD6ED,\n\t20778 - 19968: 0xE9D0,\n\t20786 - 19968: 0xEEB9,\n\t20791 - 19968: 0xD5E3,\n\t20794 - 19968: 0xD1D3,\n\t20796 - 19968: 0xE5F0,\n\t20800 - 19968: 0xE8B4,\n\t20801 - 19968: 0xEBC3,\n\t20803 - 19968: 0xEAAA,\n\t20804 - 19968: 0xFAFC,\n\t20805 - 19968: 0xF5F6,\n\t20806 - 19968: 0xF0BC,\n\t20807 - 19968: 0xFDD4,\n\t20808 - 19968: 0xE0BB,\n\t20809 - 19968: 0xCEC3,\n\t20811 - 19968: 0xD0BA,\n\t20812 - 19968: 0xF7BA,\n\t20813 - 19968: 0xD8F3,\n\t20814 - 19968: 0xF7CD,\n\t20818 - 19968: 0xE4AE,\n\t20828 - 19968: 0xD4DF,\n\t20834 - 19968: 0xD0E7,\n\t20837 - 19968: 0xECFD,\n\t20839 - 19968: 0xD2AE,\n\t20840 - 19968: 0xEEEF,\n\t20841 - 19968: 0xD5D7,\n\t20842 - 19968: 0xEAE4,\n\t20843 - 19968: 0xF8A2,\n\t20844 - 19968: 0xCDEB,\n\t20845 - 19968: 0xD7BF,\n\t20846 - 19968: 0xFBB1,\n\t20849 - 19968: 0xCDEC,\n\t20853 - 19968: 0xDCB2,\n\t20854 - 19968: 0xD0EC,\n\t20855 - 19968: 0xCEFD,\n\t20856 - 19968: 0xEEF0,\n\t20860 - 19968: 0xCCC2,\n\t20864 - 19968: 0xD0ED,\n\t20870 - 19968: 0xE5F7,\n\t20874 - 19968: 0xF3FC,\n\t20877 - 19968: 0xEEA2,\n\t20882 - 19968: 0xD9B3,\n\t20885 - 19968: 0xD8F4,\n\t20887 - 19968: 0xE9B7,\n\t20896 - 19968: 0xCEAE,\n\t20901 - 19968: 0xD9A2,\n\t20906 - 19968: 0xD8F1,\n\t20908 - 19968: 0xD4CF,\n\t20918 - 19968: 0xE5A7,\n\t20919 - 19968: 0xD5D2,\n\t20925 - 19968: 0xD6A9,\n\t20932 - 19968: 0xF4A2,\n\t20934 - 19968: 0xF1D7,\n\t20937 - 19968: 0xD5D8,\n\t20939 - 19968: 0xF0BD,\n\t20940 - 19968: 0xD7D0,\n\t20941 - 19968: 0xD4D0,\n\t20956 - 19968: 0xD7CF,\n\t20957 - 19968: 0xEBEA,\n\t20958 - 19968: 0xFDEB,\n\t20961 - 19968: 0xDBED,\n\t20976 - 19968: 0xFCC5,\n\t20977 - 19968: 0xCBC2,\n\t20982 - 19968: 0xFDD5,\n\t20984 - 19968: 0xF4C8,\n\t20985 - 19968: 0xE8EA,\n\t20986 - 19968: 0xF5F3,\n\t20989 - 19968: 0xF9DE,\n\t20992 - 19968: 0xD3EF,\n\t20995 - 19968: 0xECD3,\n\t20998 - 19968: 0xDDC2,\n\t20999 - 19968: 0xEFB7,\n\t21000 - 19968: 0xE7D4,\n\t21002 - 19968: 0xCACA,\n\t21006 - 19968: 0xD9FB,\n\t21009 - 19968: 0xFAFD,\n\t21015 - 19968: 0xD6AA,\n\t21021 - 19968: 0xF4F8,\n\t21028 - 19968: 0xF7F7,\n\t21029 - 19968: 0xDCAC,\n\t21033 - 19968: 0xD7D7,\n\t21034 - 19968: 0xDFA2,\n\t21038 - 19968: 0xCEBE,\n\t21040 - 19968: 0xD3F0,\n\t21046 - 19968: 0xF0A4,\n\t21047 - 19968: 0xE1EC,\n\t21048 - 19968: 0xCFE7,\n\t21049 - 19968: 0xF3CB,\n\t21050 - 19968: 0xEDA9,\n\t21051 - 19968: 0xCABE,\n\t21059 - 19968: 0xF4EF,\n\t21063 - 19968: 0xF6CE,\n\t21066 - 19968: 0xDEFB,\n\t21067 - 19968: 0xD0BB,\n\t21068 - 19968: 0xD5B7,\n\t21069 - 19968: 0xEEF1,\n\t21076 - 19968: 0xF4A8,\n\t21078 - 19968: 0xDCF8,\n\t21083 - 19968: 0xCBA7,\n\t21085 - 19968: 0xDACE,\n\t21089 - 19968: 0xE0E6,\n\t21097 - 19968: 0xEDA5,\n\t21098 - 19968: 0xEEF2,\n\t21103 - 19968: 0xDCF9,\n\t21106 - 19968: 0xF9DC,\n\t21109 - 19968: 0xF3DC,\n\t21117 - 19968: 0xF8F2,\n\t21119 - 19968: 0xF4F9,\n\t21123 - 19968: 0xFCF1,\n\t21127 - 19968: 0xD0BC,\n\t21128 - 19968: 0xDBF9,\n\t21129 - 19968: 0xD7B1,\n\t21133 - 19968: 0xCBFC,\n\t21137 - 19968: 0xF0A5,\n\t21138 - 19968: 0xCBFD,\n\t21147 - 19968: 0xD5F4,\n\t21151 - 19968: 0xCDED,\n\t21152 - 19968: 0xCAA5,\n\t21155 - 19968: 0xD6AB,\n\t21156 - 19968: 0xD0C2,\n\t21161 - 19968: 0xF0BE,\n\t21162 - 19968: 0xD2BD,\n\t21163 - 19968: 0xCCA4,\n\t21182 - 19968: 0xFAB6,\n\t21185 - 19968: 0xCCCD,\n\t21187 - 19968: 0xDAFA,\n\t21189 - 19968: 0xF6CF,\n\t21191 - 19968: 0xE9B8,\n\t21193 - 19968: 0xD8F5,\n\t21197 - 19968: 0xCCCE,\n\t21202 - 19968: 0xD7CD,\n\t21205 - 19968: 0xD4D1,\n\t21206 - 19968: 0xE9ED,\n\t21208 - 19968: 0xCAEB,\n\t21209 - 19968: 0xD9E2,\n\t21211 - 19968: 0xFDB2,\n\t21213 - 19968: 0xE3AD,\n\t21214 - 19968: 0xD6CC,\n\t21215 - 19968: 0xD9B4,\n\t21218 - 19968: 0xE1A7,\n\t21219 - 19968: 0xEED3,\n\t21220 - 19968: 0xD0C3,\n\t21235 - 19968: 0xFDB3,\n\t21237 - 19968: 0xD5E4,\n\t21240 - 19968: 0xCFE8,\n\t21242 - 19968: 0xEDC3,\n\t21243 - 19968: 0xD0B2,\n\t21246 - 19968: 0xCEFE,\n\t21247 - 19968: 0xDAA8,\n\t21253 - 19968: 0xF8D0,\n\t21256 - 19968: 0xFDD6,\n\t21261 - 19968: 0xF8D1,\n\t21263 - 19968: 0xF8D2,\n\t21264 - 19968: 0xDCD3,\n\t21269 - 19968: 0xDDE2,\n\t21270 - 19968: 0xFBF9,\n\t21271 - 19968: 0xDDC1,\n\t21273 - 19968: 0xE3B5,\n\t21280 - 19968: 0xEDDD,\n\t21281 - 19968: 0xCEC4,\n\t21283 - 19968: 0xCBA1,\n\t21290 - 19968: 0xDDE3,\n\t21295 - 19968: 0xFCDD,\n\t21305 - 19968: 0xF9AF,\n\t21311 - 19968: 0xD2FB,\n\t21312 - 19968: 0xCFA1,\n\t21313 - 19968: 0xE4A8,\n\t21315 - 19968: 0xF4B6,\n\t21316 - 19968: 0xECFE,\n\t21319 - 19968: 0xE3AE,\n\t21320 - 19968: 0xE7ED,\n\t21321 - 19968: 0xFDC1,\n\t21322 - 19968: 0xDAE2,\n\t21325 - 19968: 0xD8B3,\n\t21329 - 19968: 0xDDE4,\n\t21330 - 19968: 0xF0EF,\n\t21331 - 19968: 0xF6F1,\n\t21332 - 19968: 0xFAF0,\n\t21335 - 19968: 0xD1F5,\n\t21338 - 19968: 0xDACF,\n\t21340 - 19968: 0xDCD4,\n\t21342 - 19968: 0xDCA6,\n\t21344 - 19968: 0xEFBF,\n\t21350 - 19968: 0xCECF,\n\t21352 - 19968: 0xE0D9,\n\t21359 - 19968: 0xD9D6,\n\t21360 - 19968: 0xECD4,\n\t21361 - 19968: 0xEACB,\n\t21364 - 19968: 0xCABF,\n\t21365 - 19968: 0xD5B0,\n\t21367 - 19968: 0xCFE9,\n\t21373 - 19968: 0xF1ED,\n\t21375 - 19968: 0xCCCF,\n\t21380 - 19968: 0xE4F8,\n\t21395 - 19968: 0xE4ED,\n\t21400 - 19968: 0xD7D8,\n\t21402 - 19968: 0xFDA7,\n\t21407 - 19968: 0xEAAB,\n\t21408 - 19968: 0xF6B2,\n\t21413 - 19968: 0xCFF0,\n\t21414 - 19968: 0xF9BD,\n\t21421 - 19968: 0xE6F4,\n\t21435 - 19968: 0xCBDB,\n\t21443 - 19968: 0xF3D1,\n\t21448 - 19968: 0xE9D1,\n\t21449 - 19968: 0xF3A9,\n\t21450 - 19968: 0xD0E0,\n\t21451 - 19968: 0xE9D2,\n\t21453 - 19968: 0xDAE3,\n\t21460 - 19968: 0xE2D2,\n\t21462 - 19968: 0xF6A2,\n\t21463 - 19968: 0xE1F4,\n\t21467 - 19968: 0xDAE4,\n\t21473 - 19968: 0xE7D5,\n\t21474 - 19968: 0xF5BF,\n\t21475 - 19968: 0xCFA2,\n\t21476 - 19968: 0xCDAF,\n\t21477 - 19968: 0xCFA3,\n\t21481 - 19968: 0xCDB0,\n\t21482 - 19968: 0xF1FE,\n\t21483 - 19968: 0xD0A3,\n\t21484 - 19968: 0xE1AF,\n\t21485 - 19968: 0xF8A3,\n\t21487 - 19968: 0xCAA6,\n\t21488 - 19968: 0xF7BB,\n\t21489 - 19968: 0xF2EA,\n\t21490 - 19968: 0xDEC8,\n\t21491 - 19968: 0xE9D3,\n\t21496 - 19968: 0xDEC9,\n\t21507 - 19968: 0xFDDE,\n\t21508 - 19968: 0xCAC0,\n\t21512 - 19968: 0xF9EA,\n\t21513 - 19968: 0xD1CE,\n\t21514 - 19968: 0xEED4,\n\t21516 - 19968: 0xD4D2,\n\t21517 - 19968: 0xD9A3,\n\t21518 - 19968: 0xFDA8,\n\t21519 - 19968: 0xD7D9,\n\t21520 - 19968: 0xF7CE,\n\t21521 - 19968: 0xFABE,\n\t21531 - 19968: 0xCFD6,\n\t21533 - 19968: 0xD7F0,\n\t21535 - 19968: 0xEBE1,\n\t21536 - 19968: 0xF8C5,\n\t21542 - 19968: 0xDCFA,\n\t21545 - 19968: 0xDDC3,\n\t21547 - 19968: 0xF9DF,\n\t21555 - 19968: 0xE7EF,\n\t21560 - 19968: 0xFDE5,\n\t21561 - 19968: 0xF6A3,\n\t21563 - 19968: 0xD9FC,\n\t21564 - 19968: 0xFDA9,\n\t21566 - 19968: 0xE7EE,\n\t21570 - 19968: 0xD5E5,\n\t21576 - 19968: 0xEFD0,\n\t21578 - 19968: 0xCDB1,\n\t21585 - 19968: 0xF7A2,\n\t21608 - 19968: 0xF1B2,\n\t21610 - 19968: 0xF1B1,\n\t21617 - 19968: 0xCDB2,\n\t21619 - 19968: 0xDAAB,\n\t21621 - 19968: 0xCAA7,\n\t21627 - 19968: 0xE3E2,\n\t21628 - 19968: 0xFBBC,\n\t21629 - 19968: 0xD9A4,\n\t21632 - 19968: 0xEEBA,\n\t21638 - 19968: 0xF8D3,\n\t21644 - 19968: 0xFBFA,\n\t21646 - 19968: 0xCFA4,\n\t21648 - 19968: 0xDCFB,\n\t21668 - 19968: 0xF6E3,\n\t21672 - 19968: 0xEDAA,\n\t21675 - 19968: 0xF2A1,\n\t21676 - 19968: 0xCEE1,\n\t21683 - 19968: 0xFAA6,\n\t21688 - 19968: 0xF9E0,\n\t21693 - 19968: 0xECD6,\n\t21696 - 19968: 0xE4EE,\n\t21697 - 19968: 0xF9A1,\n\t21700 - 19968: 0xFBEF,\n\t21704 - 19968: 0xF9EB,\n\t21705 - 19968: 0xEEA3,\n\t21729 - 19968: 0xEAAC,\n\t21733 - 19968: 0xCAA8,\n\t21736 - 19968: 0xF4FA,\n\t21741 - 19968: 0xCDD6,\n\t21742 - 19968: 0xFCF6,\n\t21746 - 19968: 0xF4C9,\n\t21754 - 19968: 0xF8D4,\n\t21764 - 19968: 0xF8A6,\n\t21766 - 19968: 0xDECA,\n\t21767 - 19968: 0xF2C6,\n\t21774 - 19968: 0xD7DA,\n\t21776 - 19968: 0xD3D0,\n\t21788 - 19968: 0xD8C5,\n\t21807 - 19968: 0xEAE6,\n\t21809 - 19968: 0xF3DD,\n\t21813 - 19968: 0xE4DA,\n\t21822 - 19968: 0xF6E4,\n\t21828 - 19968: 0xF6F2,\n\t21830 - 19968: 0xDFC2,\n\t21839 - 19968: 0xD9FD,\n\t21843 - 19968: 0xCCF6,\n\t21846 - 19968: 0xD3BA,\n\t21854 - 19968: 0xE4AF,\n\t21859 - 19968: 0xF9E1,\n\t21884 - 19968: 0xF0A6,\n\t21888 - 19968: 0xCBD3,\n\t21892 - 19968: 0xE0BC,\n\t21894 - 19968: 0xF4CA,\n\t21895 - 19968: 0xD4FA,\n\t21897 - 19968: 0xFDAA,\n\t21898 - 19968: 0xF9E2,\n\t21912 - 19968: 0xF4B7,\n\t21913 - 19968: 0xFDC2,\n\t21914 - 19968: 0xFCB0,\n\t21916 - 19968: 0xFDEC,\n\t21917 - 19968: 0xCAE2,\n\t21927 - 19968: 0xFDBD,\n\t21929 - 19968: 0xEAE7,\n\t21930 - 19968: 0xDFC3,\n\t21931 - 19968: 0xD1D2,\n\t21932 - 19968: 0xCEE2,\n\t21934 - 19968: 0xD3A4,\n\t21957 - 19968: 0xFDAB,\n\t21959 - 19968: 0xDFE0,\n\t21972 - 19968: 0xF2C7,\n\t21978 - 19968: 0xE7F0,\n\t21980 - 19968: 0xD0EE,\n\t21983 - 19968: 0xF3AA,\n\t21987 - 19968: 0xDECB,\n\t21988 - 19968: 0xF6B8,\n\t22013 - 19968: 0xE1F5,\n\t22014 - 19968: 0xF1B3,\n\t22022 - 19968: 0xF7A3,\n\t22025 - 19968: 0xCAA9,\n\t22036 - 19968: 0xCFA5,\n\t22039 - 19968: 0xDFC4,\n\t22063 - 19968: 0xE1B0,\n\t22066 - 19968: 0xF0BF,\n\t22068 - 19968: 0xF6A4,\n\t22070 - 19968: 0xE3B6,\n\t22099 - 19968: 0xFAC6,\n\t22120 - 19968: 0xD0EF,\n\t22123 - 19968: 0xFDED,\n\t22132 - 19968: 0xDDC4,\n\t22150 - 19968: 0xFCF7,\n\t22181 - 19968: 0xE6BF,\n\t22188 - 19968: 0xDEAD,\n\t22190 - 19968: 0xFABF,\n\t22196 - 19968: 0xE5F1,\n\t22204 - 19968: 0xEDC4,\n\t22218 - 19968: 0xD2A5,\n\t22221 - 19968: 0xFDEE,\n\t22225 - 19968: 0xF5B6,\n\t22234 - 19968: 0xE1F6,\n\t22235 - 19968: 0xDECC,\n\t22238 - 19968: 0xFCDE,\n\t22240 - 19968: 0xECD7,\n\t22256 - 19968: 0xCDDD,\n\t22265 - 19968: 0xD6B7,\n\t22266 - 19968: 0xCDB3,\n\t22275 - 19968: 0xF8D5,\n\t22276 - 19968: 0xE5D8,\n\t22280 - 19968: 0xCFEA,\n\t22283 - 19968: 0xCFD0,\n\t22285 - 19968: 0xEACC,\n\t22290 - 19968: 0xEAAE,\n\t22291 - 19968: 0xEAAD,\n\t22294 - 19968: 0xD3F1,\n\t22296 - 19968: 0xD3A5,\n\t22303 - 19968: 0xF7CF,\n\t22312 - 19968: 0xEEA4,\n\t22317 - 19968: 0xD0A4,\n\t22320 - 19968: 0xF2A2,\n\t22331 - 19968: 0xD0F0,\n\t22336 - 19968: 0xF2A3,\n\t22338 - 19968: 0xF7F8,\n\t22343 - 19968: 0xD0B3,\n\t22346 - 19968: 0xDBA9,\n\t22349 - 19968: 0xD3BB,\n\t22350 - 19968: 0xCAEC,\n\t22352 - 19968: 0xF1A6,\n\t22353 - 19968: 0xCBD5,\n\t22369 - 19968: 0xF7E7,\n\t22372 - 19968: 0xCDDE,\n\t22374 - 19968: 0xF7A4,\n\t22378 - 19968: 0xF8C0,\n\t22382 - 19968: 0xD3DD,\n\t22384 - 19968: 0xCCD0,\n\t22389 - 19968: 0xCFA6,\n\t22396 - 19968: 0xF6F3,\n\t22402 - 19968: 0xE1F7,\n\t22408 - 19968: 0xD3DC,\n\t22411 - 19968: 0xFAFE,\n\t22419 - 19968: 0xFAA7,\n\t22432 - 19968: 0xEBD9,\n\t22434 - 19968: 0xCFA7,\n\t22435 - 19968: 0xEAAF,\n\t22467 - 19968: 0xE4EF,\n\t22471 - 19968: 0xE9B9,\n\t22472 - 19968: 0xF1D8,\n\t22475 - 19968: 0xD8D8,\n\t22478 - 19968: 0xE0F2,\n\t22495 - 19968: 0xE6B4,\n\t22496 - 19968: 0xDCFC,\n\t22512 - 19968: 0xF3F1,\n\t22516 - 19968: 0xE3D0,\n\t22519 - 19968: 0xF2FB,\n\t22521 - 19968: 0xDBC6,\n\t22522 - 19968: 0xD0F1,\n\t22524 - 19968: 0xD0F2,\n\t22528 - 19968: 0xCFDC,\n\t22530 - 19968: 0xD3D1,\n\t22533 - 19968: 0xCCB1,\n\t22534 - 19968: 0xF7D8,\n\t22536 - 19968: 0xCBA8,\n\t22537 - 19968: 0xEBBC,\n\t22538 - 19968: 0xE4BE,\n\t22558 - 19968: 0xF4DC,\n\t22561 - 19968: 0xDCC2,\n\t22564 - 19968: 0xF0A7,\n\t22567 - 19968: 0xE6C0,\n\t22570 - 19968: 0xCAED,\n\t22575 - 19968: 0xE8EB,\n\t22576 - 19968: 0xE5E8,\n\t22577 - 19968: 0xDCC3,\n\t22580 - 19968: 0xEDDE,\n\t22581 - 19968: 0xD3F2,\n\t22586 - 19968: 0xCCF7,\n\t22602 - 19968: 0xCED4,\n\t22603 - 19968: 0xE7AB,\n\t22607 - 19968: 0xCBC3,\n\t22609 - 19968: 0xE1B1,\n\t22612 - 19968: 0xF7B2,\n\t22615 - 19968: 0xD3F3,\n\t22616 - 19968: 0xD3D2,\n\t22618 - 19968: 0xF5C0,\n\t22622 - 19968: 0xDFDD,\n\t22625 - 19968: 0xEEF3,\n\t22626 - 19968: 0xE7F1,\n\t22628 - 19968: 0xFDB4,\n\t22645 - 19968: 0xF2C8,\n\t22649 - 19968: 0xF3D2,\n\t22652 - 19968: 0xEEF4,\n\t22654 - 19968: 0xE2D3,\n\t22659 - 19968: 0xCCD1,\n\t22661 - 19968: 0xDFEA,\n\t22665 - 19968: 0xE9BA,\n\t22675 - 19968: 0xD9D7,\n\t22684 - 19968: 0xF5CD,\n\t22686 - 19968: 0xF1F2,\n\t22687 - 19968: 0xFAC7,\n\t22696 - 19968: 0xD9F8,\n\t22697 - 19968: 0xD4C2,\n\t22702 - 19968: 0xF6E5,\n\t22707 - 19968: 0xDDC5,\n\t22714 - 19968: 0xE7F2,\n\t22715 - 19968: 0xEDDF,\n\t22718 - 19968: 0xCACB,\n\t22721 - 19968: 0xDBFA,\n\t22725 - 19968: 0xE8B5,\n\t22727 - 19968: 0xD3A6,\n\t22734 - 19968: 0xFDB5,\n\t22737 - 19968: 0xF9C9,\n\t22739 - 19968: 0xE4E2,\n\t22741 - 19968: 0xFBBD,\n\t22744 - 19968: 0xD7A4,\n\t22745 - 19968: 0xCEC5,\n\t22750 - 19968: 0xCED5,\n\t22751 - 19968: 0xD6E6,\n\t22756 - 19968: 0xE5BD,\n\t22763 - 19968: 0xDECD,\n\t22764 - 19968: 0xECF3,\n\t22767 - 19968: 0xEDE0,\n\t22777 - 19968: 0xECEC,\n\t22778 - 19968: 0xFBBE,\n\t22779 - 19968: 0xDFEB,\n\t22781 - 19968: 0xE1F8,\n\t22799 - 19968: 0xF9BE,\n\t22804 - 19968: 0xD0F3,\n\t22805 - 19968: 0xE0AA,\n\t22806 - 19968: 0xE8E2,\n\t22809 - 19968: 0xE2D4,\n\t22810 - 19968: 0xD2FD,\n\t22812 - 19968: 0xE5A8,\n\t22818 - 19968: 0xD9D3,\n\t22823 - 19968: 0xD3DE,\n\t22825 - 19968: 0xF4B8,\n\t22826 - 19968: 0xF7BC,\n\t22827 - 19968: 0xDCFD,\n\t22829 - 19968: 0xE8EC,\n\t22830 - 19968: 0xE4E7,\n\t22833 - 19968: 0xE3F7,\n\t22839 - 19968: 0xECA8,\n\t22846 - 19968: 0xFAF1,\n\t22852 - 19968: 0xE5F2,\n\t22855 - 19968: 0xD0F4,\n\t22856 - 19968: 0xD2AF,\n\t22857 - 19968: 0xDCE5,\n\t22862 - 19968: 0xD0A5,\n\t22863 - 19968: 0xF1B4,\n\t22864 - 19968: 0xFCB1,\n\t22865 - 19968: 0xCCF8,\n\t22868 - 19968: 0xDDC6,\n\t22869 - 19968: 0xFAD1,\n\t22871 - 19968: 0xF7DF,\n\t22874 - 19968: 0xFAA8,\n\t22880 - 19968: 0xEEF5,\n\t22882 - 19968: 0xDECE,\n\t22887 - 19968: 0xE7F3,\n\t22890 - 19968: 0xF7AC,\n\t22891 - 19968: 0xEBC4,\n\t22892 - 19968: 0xEDE1,\n\t22893 - 19968: 0xE0AB,\n\t22894 - 19968: 0xDDC7,\n\t22899 - 19968: 0xD2B3,\n\t22900 - 19968: 0xD2BF,\n\t22904 - 19968: 0xCACC,\n\t22909 - 19968: 0xFBBF,\n\t22914 - 19968: 0xE5FD,\n\t22915 - 19968: 0xDDE5,\n\t22916 - 19968: 0xD8CD,\n\t22922 - 19968: 0xECF4,\n\t22931 - 19968: 0xD0F5,\n\t22934 - 19968: 0xE8ED,\n\t22935 - 19968: 0xD0D2,\n\t22937 - 19968: 0xD9D8,\n\t22949 - 19968: 0xF6E6,\n\t22952 - 19968: 0xDBAA,\n\t22956 - 19968: 0xF7E0,\n\t22969 - 19968: 0xD8D9,\n\t22971 - 19968: 0xF4A3,\n\t22974 - 19968: 0xF4DD,\n\t22979 - 19968: 0xEFD1,\n\t22982 - 19968: 0xD9B5,\n\t22985 - 19968: 0xEDAB,\n\t22987 - 19968: 0xE3B7,\n\t22992 - 19968: 0xEEBB,\n\t22993 - 19968: 0xCDB4,\n\t22995 - 19968: 0xE0F3,\n\t22996 - 19968: 0xEACD,\n\t23001 - 19968: 0xECF5,\n\t23002 - 19968: 0xE8EE,\n\t23004 - 19968: 0xCBA9,\n\t23005 - 19968: 0xF1AF,\n\t23014 - 19968: 0xCACD,\n\t23016 - 19968: 0xECA9,\n\t23018 - 19968: 0xF2EB,\n\t23020 - 19968: 0xFDEF,\n\t23022 - 19968: 0xF9F3,\n\t23032 - 19968: 0xE6C1,\n\t23035 - 19968: 0xECD8,\n\t23039 - 19968: 0xEDAC,\n\t23041 - 19968: 0xEACE,\n\t23043 - 19968: 0xE8DF,\n\t23057 - 19968: 0xDECF,\n\t23064 - 19968: 0xD2A6,\n\t23067 - 19968: 0xE7F4,\n\t23068 - 19968: 0xD1D6,\n\t23071 - 19968: 0xE6C2,\n\t23072 - 19968: 0xE3E3,\n\t23077 - 19968: 0xE4B0,\n\t23081 - 19968: 0xD8B4,\n\t23094 - 19968: 0xF6A5,\n\t23100 - 19968: 0xF3DE,\n\t23105 - 19968: 0xD7A5,\n\t23110 - 19968: 0xF7E8,\n\t23113 - 19968: 0xE8C6,\n\t23130 - 19968: 0xFBE6,\n\t23138 - 19968: 0xDDE6,\n\t23142 - 19968: 0xDCFE,\n\t23186 - 19968: 0xD8DA,\n\t23194 - 19968: 0xDAAC,\n\t23195 - 19968: 0xEAB0,\n\t23204 - 19968: 0xE3B8,\n\t23233 - 19968: 0xCAAA,\n\t23234 - 19968: 0xE1F9,\n\t23236 - 19968: 0xEAB1,\n\t23241 - 19968: 0xF2EC,\n\t23244 - 19968: 0xFAEE,\n\t23265 - 19968: 0xEED5,\n\t23270 - 19968: 0xF9F4,\n\t23273 - 19968: 0xD2EC,\n\t23301 - 19968: 0xFBFB,\n\t23305 - 19968: 0xFDF0,\n\t23307 - 19968: 0xE0BD,\n\t23308 - 19968: 0xCEE3,\n\t23318 - 19968: 0xF8C6,\n\t23338 - 19968: 0xDEAE,\n\t23360 - 19968: 0xDFC5,\n\t23363 - 19968: 0xE5BE,\n\t23376 - 19968: 0xEDAD,\n\t23377 - 19968: 0xFAEA,\n\t23380 - 19968: 0xCDEE,\n\t23381 - 19968: 0xEDA6,\n\t23383 - 19968: 0xEDAE,\n\t23384 - 19968: 0xF0ED,\n\t23386 - 19968: 0xDDA1,\n\t23388 - 19968: 0xEDAF,\n\t23389 - 19968: 0xFCF8,\n\t23391 - 19968: 0xD8EB,\n\t23395 - 19968: 0xCCF9,\n\t23396 - 19968: 0xCDB5,\n\t23401 - 19968: 0xFAA9,\n\t23403 - 19968: 0xE1DD,\n\t23408 - 19968: 0xE2D5,\n\t23409 - 19968: 0xEDCF,\n\t23413 - 19968: 0xDDA2,\n\t23416 - 19968: 0xF9CA,\n\t23418 - 19968: 0xEAE8,\n\t23420 - 19968: 0xE5ED,\n\t23429 - 19968: 0xD3EB,\n\t23431 - 19968: 0xE9D4,\n\t23432 - 19968: 0xE1FA,\n\t23433 - 19968: 0xE4CC,\n\t23435 - 19968: 0xE1E4,\n\t23436 - 19968: 0xE8C7,\n\t23439 - 19968: 0xCEDB,\n\t23443 - 19968: 0xDCD5,\n\t23445 - 19968: 0xF7B5,\n\t23446 - 19968: 0xFCF3,\n\t23447 - 19968: 0xF0F3,\n\t23448 - 19968: 0xCEAF,\n\t23449 - 19968: 0xF1B5,\n\t23450 - 19968: 0xEFD2,\n\t23451 - 19968: 0xE8C8,\n\t23452 - 19968: 0xEBF1,\n\t23458 - 19968: 0xCBD4,\n\t23459 - 19968: 0xE0BE,\n\t23460 - 19968: 0xE3F8,\n\t23461 - 19968: 0xEAE9,\n\t23462 - 19968: 0xFCB2,\n\t23468 - 19968: 0xE0F4,\n\t23470 - 19968: 0xCFE0,\n\t23472 - 19968: 0xEEA5,\n\t23475 - 19968: 0xFAAA,\n\t23476 - 19968: 0xE6C3,\n\t23477 - 19968: 0xE1B2,\n\t23478 - 19968: 0xCAAB,\n\t23480 - 19968: 0xE3E4,\n\t23481 - 19968: 0xE9BB,\n\t23487 - 19968: 0xE2D6,\n\t23488 - 19968: 0xF3F2,\n\t23490 - 19968: 0xEED6,\n\t23491 - 19968: 0xEAB2,\n\t23492 - 19968: 0xD0F6,\n\t23493 - 19968: 0xECD9,\n\t23494 - 19968: 0xDACB,\n\t23495 - 19968: 0xCFA8,\n\t23500 - 19968: 0xDDA3,\n\t23504 - 19968: 0xD8DB,\n\t23506 - 19968: 0xF9CE,\n\t23507 - 19968: 0xE9D5,\n\t23508 - 19968: 0xE3D1,\n\t23511 - 19968: 0xD2BC,\n\t23518 - 19968: 0xD8AC,\n\t23519 - 19968: 0xF3CC,\n\t23521 - 19968: 0xCDFB,\n\t23522 - 19968: 0xF6D6,\n\t23524 - 19968: 0xE7F5,\n\t23525 - 19968: 0xE8EF,\n\t23526 - 19968: 0xE3F9,\n\t23527 - 19968: 0xD2BB,\n\t23528 - 19968: 0xF3F3,\n\t23529 - 19968: 0xE3FB,\n\t23531 - 19968: 0xDED0,\n\t23532 - 19968: 0xCEB0,\n\t23534 - 19968: 0xD6F7,\n\t23535 - 19968: 0xF1D9,\n\t23541 - 19968: 0xF5C1,\n\t23542 - 19968: 0xDCC4,\n\t23544 - 19968: 0xF5BB,\n\t23546 - 19968: 0xDED1,\n\t23553 - 19968: 0xDCE6,\n\t23556 - 19968: 0xDED2,\n\t23559 - 19968: 0xEDE2,\n\t23560 - 19968: 0xEEF6,\n\t23561 - 19968: 0xEACF,\n\t23562 - 19968: 0xF0EE,\n\t23563 - 19968: 0xE3FC,\n\t23565 - 19968: 0xD3DF,\n\t23566 - 19968: 0xD3F4,\n\t23567 - 19968: 0xE1B3,\n\t23569 - 19968: 0xE1B4,\n\t23574 - 19968: 0xF4D3,\n\t23577 - 19968: 0xDFC6,\n\t23588 - 19968: 0xE9D6,\n\t23592 - 19968: 0xDBAB,\n\t23601 - 19968: 0xF6A6,\n\t23608 - 19968: 0xE3B9,\n\t23609 - 19968: 0xEBC5,\n\t23610 - 19968: 0xF4A9,\n\t23611 - 19968: 0xCDB6,\n\t23612 - 19968: 0xD2F9,\n\t23614 - 19968: 0xDAAD,\n\t23615 - 19968: 0xD2E3,\n\t23616 - 19968: 0xCFD1,\n\t23621 - 19968: 0xCBDC,\n\t23622 - 19968: 0xCCFA,\n\t23624 - 19968: 0xCFDD,\n\t23627 - 19968: 0xE8A9,\n\t23629 - 19968: 0xE3BB,\n\t23630 - 19968: 0xE3BA,\n\t23633 - 19968: 0xE0DA,\n\t23637 - 19968: 0xEEF7,\n\t23643 - 19968: 0xDCB3,\n\t23648 - 19968: 0xD3F5,\n\t23650 - 19968: 0xD7A6,\n\t23652 - 19968: 0xF6B5,\n\t23653 - 19968: 0xD7DB,\n\t23660 - 19968: 0xE1D5,\n\t23663 - 19968: 0xD4EA,\n\t23665 - 19968: 0xDFA3,\n\t23673 - 19968: 0xFDDF,\n\t23696 - 19968: 0xD0F7,\n\t23697 - 19968: 0xEDD4,\n\t23713 - 19968: 0xCBAA,\n\t23721 - 19968: 0xE4DB,\n\t23723 - 19968: 0xE1FB,\n\t23724 - 19968: 0xCBA2,\n\t23729 - 19968: 0xD3E0,\n\t23731 - 19968: 0xE4BF,\n\t23733 - 19968: 0xFBC0,\n\t23735 - 19968: 0xDABE,\n\t23736 - 19968: 0xE4CD,\n\t23738 - 19968: 0xD6B9,\n\t23742 - 19968: 0xEFC0,\n\t23744 - 19968: 0xE1FC,\n\t23769 - 19968: 0xF6B9,\n\t23776 - 19968: 0xDFC7,\n\t23784 - 19968: 0xE4B1,\n\t23791 - 19968: 0xDCE7,\n\t23792 - 19968: 0xDCE8,\n\t23796 - 19968: 0xFAD6,\n\t23798 - 19968: 0xD3F6,\n\t23803 - 19968: 0xF1DA,\n\t23805 - 19968: 0xFAF2,\n\t23815 - 19968: 0xE2FD,\n\t23821 - 19968: 0xD5CF,\n\t23822 - 19968: 0xD0F8,\n\t23825 - 19968: 0xCDDF,\n\t23828 - 19968: 0xF5CB,\n\t23830 - 19968: 0xE4F0,\n\t23831 - 19968: 0xCBAB,\n\t23833 - 19968: 0xD7C4,\n\t23847 - 19968: 0xE2FE,\n\t23849 - 19968: 0xDDDA,\n\t23883 - 19968: 0xDAAE,\n\t23884 - 19968: 0xCAEE,\n\t23888 - 19968: 0xD5B9,\n\t23913 - 19968: 0xE3A1,\n\t23916 - 19968: 0xE8E3,\n\t23919 - 19968: 0xF3AB,\n\t23943 - 19968: 0xCFA9,\n\t23947 - 19968: 0xD3F7,\n\t23965 - 19968: 0xD4F1,\n\t23968 - 19968: 0xCEE4,\n\t23970 - 19968: 0xE8F2,\n\t23978 - 19968: 0xE5F5,\n\t23992 - 19968: 0xE7AE,\n\t23994 - 19968: 0xD6BA,\n\t23996 - 19968: 0xDFEC,\n\t23997 - 19968: 0xE4C0,\n\t24013 - 19968: 0xE8E4,\n\t24018 - 19968: 0xD8B5,\n\t24022 - 19968: 0xE4DC,\n\t24029 - 19968: 0xF4B9,\n\t24030 - 19968: 0xF1B6,\n\t24033 - 19968: 0xE2DE,\n\t24034 - 19968: 0xE1B5,\n\t24037 - 19968: 0xCDEF,\n\t24038 - 19968: 0xF1A7,\n\t24039 - 19968: 0xCEE5,\n\t24040 - 19968: 0xCBDD,\n\t24043 - 19968: 0xD9E3,\n\t24046 - 19968: 0xF3AC,\n\t24049 - 19968: 0xD0F9,\n\t24050 - 19968: 0xECAB,\n\t24051 - 19968: 0xDED3,\n\t24052 - 19968: 0xF7E9,\n\t24055 - 19968: 0xF9F5,\n\t24061 - 19968: 0xE1DE,\n\t24062 - 19968: 0xCBEE,\n\t24066 - 19968: 0xE3BC,\n\t24067 - 19968: 0xF8D6,\n\t24070 - 19968: 0xDBEE,\n\t24076 - 19968: 0xFDF1,\n\t24081 - 19968: 0xF7B6,\n\t24086 - 19968: 0xF4DE,\n\t24089 - 19968: 0xF2ED,\n\t24091 - 19968: 0xDBD9,\n\t24093 - 19968: 0xF0A8,\n\t24101 - 19968: 0xE1FD,\n\t24107 - 19968: 0xDED4,\n\t24109 - 19968: 0xE0AC,\n\t24115 - 19968: 0xEDE3,\n\t24118 - 19968: 0xD3E1,\n\t24120 - 19968: 0xDFC8,\n\t24125 - 19968: 0xD9B6,\n\t24127 - 19968: 0xFDAC,\n\t24128 - 19968: 0xEFD3,\n\t24132 - 19968: 0xE4C1,\n\t24133 - 19968: 0xF8EB,\n\t24135 - 19968: 0xDBAC,\n\t24140 - 19968: 0xFCC6,\n\t24149 - 19968: 0xD8AD,\n\t24159 - 19968: 0xF6BA,\n\t24161 - 19968: 0xDBDF,\n\t24162 - 19968: 0xD3D3,\n\t24163 - 19968: 0xF8C7,\n\t24178 - 19968: 0xCACE,\n\t24179 - 19968: 0xF8C1,\n\t24180 - 19968: 0xD2B4,\n\t24183 - 19968: 0xDCB4,\n\t24184 - 19968: 0xFAB9,\n\t24185 - 19968: 0xCACF,\n\t24187 - 19968: 0xFCB3,\n\t24188 - 19968: 0xEAEA,\n\t24189 - 19968: 0xEAEB,\n\t24190 - 19968: 0xD0FA,\n\t24196 - 19968: 0xEDE4,\n\t24199 - 19968: 0xDDE7,\n\t24202 - 19968: 0xDFC9,\n\t24207 - 19968: 0xDFED,\n\t24213 - 19968: 0xEEBC,\n\t24215 - 19968: 0xEFC1,\n\t24218 - 19968: 0xCCD2,\n\t24220 - 19968: 0xDDA4,\n\t24224 - 19968: 0xDFCA,\n\t24230 - 19968: 0xD3F8,\n\t24231 - 19968: 0xF1A8,\n\t24235 - 19968: 0xCDB7,\n\t24237 - 19968: 0xEFD4,\n\t24245 - 19968: 0xE4DD,\n\t24246 - 19968: 0xDFEE,\n\t24247 - 19968: 0xCBAC,\n\t24248 - 19968: 0xE9BC,\n\t24254 - 19968: 0xEAEC,\n\t24258 - 19968: 0xDFCB,\n\t24264 - 19968: 0xF9BF,\n\t24265 - 19968: 0xD6AF,\n\t24266 - 19968: 0xD5C6,\n\t24272 - 19968: 0xCFAA,\n\t24275 - 19968: 0xCEA9,\n\t24278 - 19968: 0xD6F8,\n\t24282 - 19968: 0xF1B7,\n\t24283 - 19968: 0xEEF8,\n\t24287 - 19968: 0xD9D9,\n\t24288 - 19968: 0xF3DF,\n\t24290 - 19968: 0xF8C8,\n\t24291 - 19968: 0xCEC6,\n\t24300 - 19968: 0xD5E6,\n\t24307 - 19968: 0xF4E6,\n\t24310 - 19968: 0xE6C5,\n\t24311 - 19968: 0xEFD5,\n\t24314 - 19968: 0xCBEF,\n\t24315 - 19968: 0xFCDF,\n\t24321 - 19968: 0xDCA7,\n\t24324 - 19968: 0xD6E7,\n\t24330 - 19968: 0xF8C9,\n\t24335 - 19968: 0xE3D2,\n\t24337 - 19968: 0xE3BD,\n\t24339 - 19968: 0xCFE1,\n\t24340 - 19968: 0xF0C0,\n\t24341 - 19968: 0xECDA,\n\t24343 - 19968: 0xDDD7,\n\t24344 - 19968: 0xFBF0,\n\t24347 - 19968: 0xECAC,\n\t24351 - 19968: 0xF0A9,\n\t24358 - 19968: 0xFAD7,\n\t24359 - 19968: 0xFBC1,\n\t24361 - 19968: 0xD2C0,\n\t24369 - 19968: 0xE5B0,\n\t24373 - 19968: 0xEDE5,\n\t24378 - 19968: 0xCBAD,\n\t24380 - 19968: 0xF9B0,\n\t24392 - 19968: 0xF7A5,\n\t24394 - 19968: 0xCBAE,\n\t24396 - 19968: 0xDAAF,\n\t24398 - 19968: 0xD8B6,\n\t24406 - 19968: 0xD3A7,\n\t24407 - 19968: 0xFBB2,\n\t24409 - 19968: 0xFDC4,\n\t24411 - 19968: 0xECAD,\n\t24418 - 19968: 0xFBA1,\n\t24422 - 19968: 0xE5E9,\n\t24423 - 19968: 0xE9EE,\n\t24425 - 19968: 0xF3F4,\n\t24426 - 19968: 0xF8F3,\n\t24427 - 19968: 0xF0C1,\n\t24428 - 19968: 0xDEAF,\n\t24429 - 19968: 0xF8B0,\n\t24432 - 19968: 0xF3E0,\n\t24433 - 19968: 0xE7AF,\n\t24439 - 19968: 0xDBAD,\n\t24441 - 19968: 0xE6B5,\n\t24444 - 19968: 0xF9A8,\n\t24447 - 19968: 0xDDD8,\n\t24448 - 19968: 0xE8D9,\n\t24449 - 19968: 0xEFD6,\n\t24453 - 19968: 0xD3E2,\n\t24455 - 19968: 0xE2DF,\n\t24458 - 19968: 0xFCE0,\n\t24459 - 19968: 0xD7C8,\n\t24460 - 19968: 0xFDAD,\n\t24464 - 19968: 0xDFEF,\n\t24465 - 19968: 0xCCD3,\n\t24466 - 19968: 0xD3F9,\n\t24471 - 19968: 0xD4F0,\n\t24472 - 19968: 0xDBC7,\n\t24473 - 19968: 0xDED5,\n\t24478 - 19968: 0xF0F4,\n\t24480 - 19968: 0xD5D0,\n\t24481 - 19968: 0xE5D9,\n\t24488 - 19968: 0xFCC7,\n\t24489 - 19968: 0xDCD6,\n\t24490 - 19968: 0xE2E0,\n\t24494 - 19968: 0xDAB0,\n\t24501 - 19968: 0xF3A3,\n\t24503 - 19968: 0xD3EC,\n\t24505 - 19968: 0xF4CB,\n\t24509 - 19968: 0xFDC5,\n\t24515 - 19968: 0xE3FD,\n\t24517 - 19968: 0xF9B1,\n\t24524 - 19968: 0xD0FB,\n\t24525 - 19968: 0xECDB,\n\t24534 - 19968: 0xF5BC,\n\t24535 - 19968: 0xF2A4,\n\t24536 - 19968: 0xD8CE,\n\t24537 - 19968: 0xD8CF,\n\t24544 - 19968: 0xF5F7,\n\t24555 - 19968: 0xF6E1,\n\t24565 - 19968: 0xD2B7,\n\t24573 - 19968: 0xFBEC,\n\t24575 - 19968: 0xDDC8,\n\t24591 - 19968: 0xE4E8,\n\t24594 - 19968: 0xD2C1,\n\t24598 - 19968: 0xF8D7,\n\t24604 - 19968: 0xD6BB,\n\t24605 - 19968: 0xDED6,\n\t24608 - 19968: 0xF7BD,\n\t24609 - 19968: 0xECAE,\n\t24613 - 19968: 0xD0E1,\n\t24615 - 19968: 0xE0F5,\n\t24616 - 19968: 0xEAB3,\n\t24618 - 19968: 0xCED6,\n\t24623 - 19968: 0xCCA5,\n\t24641 - 19968: 0xECF6,\n\t24642 - 19968: 0xE2E1,\n\t24643 - 19968: 0xE3BE,\n\t24653 - 19968: 0xFCC8,\n\t24656 - 19968: 0xCDF0,\n\t24658 - 19968: 0xF9F6,\n\t24661 - 19968: 0xDFF0,\n\t24665 - 19968: 0xE5BF,\n\t24669 - 19968: 0xCEBF,\n\t24674 - 19968: 0xFCE1,\n\t24675 - 19968: 0xEDB0,\n\t24676 - 19968: 0xFDD1,\n\t24677 - 19968: 0xF6BB,\n\t24680 - 19968: 0xF9CF,\n\t24681 - 19968: 0xEBDA,\n\t24682 - 19968: 0xCAC1,\n\t24684 - 19968: 0xD2B8,\n\t24685 - 19968: 0xCDF1,\n\t24687 - 19968: 0xE3D3,\n\t24688 - 19968: 0xFDE6,\n\t24709 - 19968: 0xE6ED,\n\t24713 - 19968: 0xE3FA,\n\t24716 - 19968: 0xF0AA,\n\t24717 - 19968: 0xF9D0,\n\t24724 - 19968: 0xFCE2,\n\t24726 - 19968: 0xF8A7,\n\t24730 - 19968: 0xE1E5,\n\t24731 - 19968: 0xEEF9,\n\t24735 - 19968: 0xE7F6,\n\t24736 - 19968: 0xEAED,\n\t24739 - 19968: 0xFCB4,\n\t24740 - 19968: 0xF5C2,\n\t24743 - 19968: 0xD7DC,\n\t24752 - 19968: 0xF0F5,\n\t24754 - 19968: 0xDDE8,\n\t24755 - 19968: 0xD3ED,\n\t24756 - 19968: 0xF5FC,\n\t24758 - 19968: 0xDABF,\n\t24760 - 19968: 0xCCFB,\n\t24764 - 19968: 0xD3FA,\n\t24765 - 19968: 0xF4A4,\n\t24773 - 19968: 0xEFD7,\n\t24775 - 19968: 0xD4C3,\n\t24785 - 19968: 0xFBE3,\n\t24794 - 19968: 0xFBED,\n\t24796 - 19968: 0xE0AD,\n\t24799 - 19968: 0xEAEE,\n\t24800 - 19968: 0xFBB3,\n\t24801 - 19968: 0xE4C2,\n\t24816 - 19968: 0xF6E7,\n\t24817 - 19968: 0xD2DD,\n\t24819 - 19968: 0xDFCC,\n\t24822 - 19968: 0xFCC9,\n\t24825 - 19968: 0xE5A9,\n\t24826 - 19968: 0xE0F6,\n\t24827 - 19968: 0xF6B3,\n\t24833 - 19968: 0xE1FE,\n\t24838 - 19968: 0xCBF0,\n\t24840 - 19968: 0xEAEF,\n\t24841 - 19968: 0xEAF0,\n\t24845 - 19968: 0xDAC0,\n\t24846 - 19968: 0xF8B4,\n\t24847 - 19968: 0xEBF2,\n\t24853 - 19968: 0xE4C3,\n\t24858 - 19968: 0xE9D7,\n\t24859 - 19968: 0xE4F1,\n\t24863 - 19968: 0xCAEF,\n\t24871 - 19968: 0xCED7,\n\t24880 - 19968: 0xFCCA,\n\t24884 - 19968: 0xF3E1,\n\t24887 - 19968: 0xCBC4,\n\t24892 - 19968: 0xE3E5,\n\t24894 - 19968: 0xCBC5,\n\t24895 - 19968: 0xEAB4,\n\t24898 - 19968: 0xE9BD,\n\t24900 - 19968: 0xD7C9,\n\t24903 - 19968: 0xEBDB,\n\t24904 - 19968: 0xEDB1,\n\t24906 - 19968: 0xCCC3,\n\t24907 - 19968: 0xF7BE,\n\t24908 - 19968: 0xFCCB,\n\t24915 - 19968: 0xF8F4,\n\t24917 - 19968: 0xD9B7,\n\t24920 - 19968: 0xF3D3,\n\t24921 - 19968: 0xF3D4,\n\t24925 - 19968: 0xF7E4,\n\t24927 - 19968: 0xF7D1,\n\t24930 - 19968: 0xD8B7,\n\t24931 - 19968: 0xCEB1,\n\t24932 - 19968: 0xCAC2,\n\t24935 - 19968: 0xFBB4,\n\t24936 - 19968: 0xCBC6,\n\t24939 - 19968: 0xF0F6,\n\t24942 - 19968: 0xD5E7,\n\t24944 - 19968: 0xEAD0,\n\t24950 - 19968: 0xCCD4,\n\t24951 - 19968: 0xCBAF,\n\t24957 - 19968: 0xF4AA,\n\t24958 - 19968: 0xE9AF,\n\t24961 - 19968: 0xF5C3,\n\t24962 - 19968: 0xE9D8,\n\t24970 - 19968: 0xDDE9,\n\t24974 - 19968: 0xF1F3,\n\t24976 - 19968: 0xD5FB,\n\t24977 - 19968: 0xDEBB,\n\t24980 - 19968: 0xF4FB,\n\t24984 - 19968: 0xFDF3,\n\t24985 - 19968: 0xFDF2,\n\t24986 - 19968: 0xF7A6,\n\t24996 - 19968: 0xDDC9,\n\t24999 - 19968: 0xD4D3,\n\t25001 - 19968: 0xCCA8,\n\t25003 - 19968: 0xDAC1,\n\t25004 - 19968: 0xCCD5,\n\t25006 - 19968: 0xD9E4,\n\t25010 - 19968: 0xFACA,\n\t25014 - 19968: 0xE5E3,\n\t25018 - 19968: 0xD3BC,\n\t25022 - 19968: 0xCAF0,\n\t25027 - 19968: 0xD0C4,\n\t25031 - 19968: 0xCAD0,\n\t25032 - 19968: 0xFAAB,\n\t25033 - 19968: 0xEBEB,\n\t25034 - 19968: 0xE7F8,\n\t25035 - 19968: 0xD9E5,\n\t25062 - 19968: 0xD1D7,\n\t25074 - 19968: 0xF3A4,\n\t25078 - 19968: 0xD4FB,\n\t25079 - 19968: 0xFCE3,\n\t25080 - 19968: 0xFAD8,\n\t25082 - 19968: 0xF3D5,\n\t25084 - 19968: 0xCFAB,\n\t25087 - 19968: 0xEBF3,\n\t25088 - 19968: 0xD5FC,\n\t25095 - 19968: 0xD3D4,\n\t25096 - 19968: 0xCDFC,\n\t25098 - 19968: 0xD9E6,\n\t25100 - 19968: 0xE2F9,\n\t25101 - 19968: 0xE2A1,\n\t25102 - 19968: 0xEBD4,\n\t25104 - 19968: 0xE0F7,\n\t25105 - 19968: 0xE4B2,\n\t25106 - 19968: 0xCCFC,\n\t25110 - 19968: 0xFBE4,\n\t25114 - 19968: 0xF4AB,\n\t25119 - 19968: 0xD0BD,\n\t25121 - 19968: 0xCAF1,\n\t25130 - 19968: 0xEFB8,\n\t25134 - 19968: 0xD7C0,\n\t25136 - 19968: 0xEEFA,\n\t25137 - 19968: 0xFDF4,\n\t25140 - 19968: 0xD3E3,\n\t25142 - 19968: 0xFBC2,\n\t25150 - 19968: 0xD5E8,\n\t25151 - 19968: 0xDBAE,\n\t25152 - 19968: 0xE1B6,\n\t25153 - 19968: 0xF8B7,\n\t25159 - 19968: 0xE0BF,\n\t25160 - 19968: 0xFBC3,\n\t25161 - 19968: 0xDDEA,\n\t25163 - 19968: 0xE2A2,\n\t25165 - 19968: 0xEEA6,\n\t25171 - 19968: 0xF6E8,\n\t25176 - 19968: 0xF6F5,\n\t25198 - 19968: 0xDDCA,\n\t25201 - 19968: 0xD0E2,\n\t25206 - 19968: 0xDDA6,\n\t25209 - 19968: 0xDDEB,\n\t25212 - 19968: 0xE4F9,\n\t25215 - 19968: 0xE3AF,\n\t25216 - 19968: 0xD0FC,\n\t25220 - 19968: 0xF4FC,\n\t25225 - 19968: 0xCCBC,\n\t25226 - 19968: 0xF7EA,\n\t25233 - 19968: 0xE5E4,\n\t25234 - 19968: 0xDFF1,\n\t25237 - 19968: 0xF7E1,\n\t25239 - 19968: 0xF9F7,\n\t25240 - 19968: 0xEFB9,\n\t25243 - 19968: 0xF8D8,\n\t25259 - 19968: 0xF9A9,\n\t25265 - 19968: 0xF8D9,\n\t25269 - 19968: 0xEEBD,\n\t25273 - 19968: 0xD8C6,\n\t25276 - 19968: 0xE4E3,\n\t25277 - 19968: 0xF5CE,\n\t25282 - 19968: 0xDDD9,\n\t25287 - 19968: 0xD9E7,\n\t25288 - 19968: 0xD2B9,\n\t25289 - 19968: 0xD5C3,\n\t25292 - 19968: 0xDAE5,\n\t25293 - 19968: 0xDAD0,\n\t25295 - 19968: 0xD1D9,\n\t25296 - 19968: 0xCED8,\n\t25298 - 19968: 0xCBDE,\n\t25299 - 19968: 0xF4AC,\n\t25300 - 19968: 0xDAFB,\n\t25302 - 19968: 0xF6E9,\n\t25303 - 19968: 0xE8F3,\n\t25304 - 19968: 0xCFAC,\n\t25305 - 19968: 0xF0F0,\n\t25307 - 19968: 0xF4FD,\n\t25308 - 19968: 0xDBC8,\n\t25324 - 19968: 0xCEC0,\n\t25325 - 19968: 0xE3D4,\n\t25326 - 19968: 0xD1CF,\n\t25327 - 19968: 0xF1F5,\n\t25329 - 19968: 0xCDF2,\n\t25331 - 19968: 0xCFEB,\n\t25335 - 19968: 0xCDB8,\n\t25342 - 19968: 0xE3A6,\n\t25343 - 19968: 0xD1DA,\n\t25345 - 19968: 0xF2A5,\n\t25351 - 19968: 0xF2A6,\n\t25353 - 19968: 0xE4CE,\n\t25361 - 19968: 0xD3FB,\n\t25387 - 19968: 0xF1A9,\n\t25391 - 19968: 0xF2C9,\n\t25402 - 19968: 0xEFD8,\n\t25403 - 19968: 0xE6C9,\n\t25405 - 19968: 0xD8B8,\n\t25406 - 19968: 0xFAF3,\n\t25417 - 19968: 0xF3B5,\n\t25420 - 19968: 0xF8A4,\n\t25423 - 19968: 0xD1F3,\n\t25424 - 19968: 0xE6C8,\n\t25429 - 19968: 0xF8DA,\n\t25447 - 19968: 0xDCE9,\n\t25448 - 19968: 0xDED7,\n\t25454 - 19968: 0xCBDF,\n\t25458 - 19968: 0xCFEC,\n\t25463 - 19968: 0xF4DF,\n\t25466 - 19968: 0xD1F4,\n\t25467 - 19968: 0xD2BA,\n\t25471 - 19968: 0xDFF2,\n\t25475 - 19968: 0xE1B7,\n\t25480 - 19968: 0xE2A3,\n\t25481 - 19968: 0xD3FC,\n\t25484 - 19968: 0xEDE6,\n\t25490 - 19968: 0xDBC9,\n\t25494 - 19968: 0xE4FA,\n\t25496 - 19968: 0xCFDE,\n\t25499 - 19968: 0xCED0,\n\t25504 - 19968: 0xD5D3,\n\t25505 - 19968: 0xF3F5,\n\t25506 - 19968: 0xF7AE,\n\t25509 - 19968: 0xEFC8,\n\t25511 - 19968: 0xCDF3,\n\t25512 - 19968: 0xF5CF,\n\t25513 - 19968: 0xE5F3,\n\t25514 - 19968: 0xF0C2,\n\t25536 - 19968: 0xCAD1,\n\t25540 - 19968: 0xEAF1,\n\t25542 - 19968: 0xD0A6,\n\t25551 - 19968: 0xD9DA,\n\t25552 - 19968: 0xF0AB,\n\t25558 - 19968: 0xEBE7,\n\t25562 - 19968: 0xE5C0,\n\t25563 - 19968: 0xFCB5,\n\t25569 - 19968: 0xE4C4,\n\t25581 - 19968: 0xCCA9,\n\t25582 - 19968: 0xFDC6,\n\t25588 - 19968: 0xEAB5,\n\t25590 - 19968: 0xE5AA,\n\t25591 - 19968: 0xDFBA,\n\t25613 - 19968: 0xE1DF,\n\t25615 - 19968: 0xDAD1,\n\t25620 - 19968: 0xE1B8,\n\t25622 - 19968: 0xE8F4,\n\t25623 - 19968: 0xD3FD,\n\t25628 - 19968: 0xE2A4,\n\t25634 - 19968: 0xF2CA,\n\t25644 - 19968: 0xDAE6,\n\t25645 - 19968: 0xF7B3,\n\t25658 - 19968: 0xFDCD,\n\t25662 - 19968: 0xF3B6,\n\t25688 - 19968: 0xEED7,\n\t25696 - 19968: 0xF5C4,\n\t25705 - 19968: 0xD8A4,\n\t25711 - 19968: 0xF2A7,\n\t25720 - 19968: 0xD9B8,\n\t25721 - 19968: 0xD9B9,\n\t25722 - 19968: 0xEFC9,\n\t25736 - 19968: 0xD6CE,\n\t25745 - 19968: 0xF7CB,\n\t25746 - 19968: 0xDFAE,\n\t25747 - 19968: 0xE8F5,\n\t25754 - 19968: 0xD2B5,\n\t25758 - 19968: 0xD3D5,\n\t25764 - 19968: 0xF4CC,\n\t25765 - 19968: 0xDAFC,\n\t25771 - 19968: 0xD9E8,\n\t25773 - 19968: 0xF7EB,\n\t25774 - 19968: 0xF5C9,\n\t25776 - 19968: 0xF3BC,\n\t25778 - 19968: 0xDAD2,\n\t25787 - 19968: 0xD3B5,\n\t25793 - 19968: 0xE8B6,\n\t25796 - 19968: 0xD6CF,\n\t25797 - 19968: 0xF4BA,\n\t25799 - 19968: 0xF7C9,\n\t25802 - 19968: 0xCCAA,\n\t25805 - 19968: 0xF0C3,\n\t25806 - 19968: 0xCCD6,\n\t25810 - 19968: 0xD0D3,\n\t25812 - 19968: 0xD3BD,\n\t25816 - 19968: 0xDBFB,\n\t25818 - 19968: 0xCBE0,\n\t25825 - 19968: 0xD3E4,\n\t25826 - 19968: 0xF6F7,\n\t25829 - 19968: 0xD5BA,\n\t25830 - 19968: 0xF3CD,\n\t25831 - 19968: 0xCBE1,\n\t25836 - 19968: 0xEBF4,\n\t25842 - 19968: 0xF4AD,\n\t25844 - 19968: 0xFCAA,\n\t25850 - 19968: 0xF7EC,\n\t25854 - 19968: 0xE8F6,\n\t25856 - 19968: 0xDAE7,\n\t25860 - 19968: 0xF7CC,\n\t25880 - 19968: 0xE5C1,\n\t25885 - 19968: 0xE0EE,\n\t25891 - 19968: 0xD5FD,\n\t25898 - 19968: 0xCEE6,\n\t25899 - 19968: 0xFCAB,\n\t25900 - 19968: 0xD5BB,\n\t25903 - 19968: 0xF2A8,\n\t25910 - 19968: 0xE2A5,\n\t25911 - 19968: 0xCDB9,\n\t25912 - 19968: 0xEAF2,\n\t25913 - 19968: 0xCBC7,\n\t25915 - 19968: 0xCDF4,\n\t25918 - 19968: 0xDBAF,\n\t25919 - 19968: 0xEFD9,\n\t25925 - 19968: 0xCDBA,\n\t25928 - 19968: 0xFCF9,\n\t25933 - 19968: 0xDFF3,\n\t25934 - 19968: 0xCEE7,\n\t25935 - 19968: 0xDAC2,\n\t25937 - 19968: 0xCFAD,\n\t25942 - 19968: 0xE7F9,\n\t25943 - 19968: 0xF8A8,\n\t25950 - 19968: 0xF3E2,\n\t25954 - 19968: 0xCAF2,\n\t25955 - 19968: 0xDFA4,\n\t25958 - 19968: 0xD4C4,\n\t25964 - 19968: 0xCCD7,\n\t25965 - 19968: 0xE5C2,\n\t25970 - 19968: 0xCDBB,\n\t25972 - 19968: 0xEFDA,\n\t25973 - 19968: 0xEED8,\n\t25975 - 19968: 0xDDA7,\n\t25976 - 19968: 0xE2A6,\n\t25982 - 19968: 0xE0C0,\n\t25986 - 19968: 0xD6B0,\n\t25987 - 19968: 0xF8CA,\n\t25989 - 19968: 0xFCFA,\n\t25991 - 19968: 0xD9FE,\n\t25996 - 19968: 0xDEB0,\n\t26000 - 19968: 0xDDEC,\n\t26001 - 19968: 0xDAE8,\n\t26007 - 19968: 0xD4E0,\n\t26009 - 19968: 0xD6F9,\n\t26011 - 19968: 0xCDD7,\n\t26012 - 19968: 0xDED8,\n\t26015 - 19968: 0xF2F8,\n\t26017 - 19968: 0xE4D6,\n\t26020 - 19968: 0xD0C5,\n\t26021 - 19968: 0xF4AE,\n\t26023 - 19968: 0xDDA8,\n\t26027 - 19968: 0xEDC5,\n\t26028 - 19968: 0xF3D6,\n\t26031 - 19968: 0xDED9,\n\t26032 - 19968: 0xE3E6,\n\t26039 - 19968: 0xD3A8,\n\t26041 - 19968: 0xDBB0,\n\t26044 - 19968: 0xE5DA,\n\t26045 - 19968: 0xE3BF,\n\t26049 - 19968: 0xDBB1,\n\t26053 - 19968: 0xD5E9,\n\t26059 - 19968: 0xE0C1,\n\t26060 - 19968: 0xEFDB,\n\t26063 - 19968: 0xF0E9,\n\t26066 - 19968: 0xD7B2,\n\t26071 - 19968: 0xD0FD,\n\t26080 - 19968: 0xD9E9,\n\t26083 - 19968: 0xD0FE,\n\t26085 - 19968: 0xECED,\n\t26086 - 19968: 0xD3A9,\n\t26088 - 19968: 0xF2A9,\n\t26089 - 19968: 0xF0C4,\n\t26092 - 19968: 0xE2E2,\n\t26093 - 19968: 0xE9EF,\n\t26097 - 19968: 0xF9D1,\n\t26100 - 19968: 0xE9D9,\n\t26106 - 19968: 0xE8DA,\n\t26107 - 19968: 0xDAC3,\n\t26108 - 19968: 0xDAC4,\n\t26109 - 19968: 0xD4C5,\n\t26111 - 19968: 0xE7FA,\n\t26118 - 19968: 0xCDE0,\n\t26119 - 19968: 0xE3B0,\n\t26121 - 19968: 0xDBB2,\n\t26122 - 19968: 0xFBC4,\n\t26124 - 19968: 0xF3E3,\n\t26126 - 19968: 0xD9A5,\n\t26127 - 19968: 0xFBE7,\n\t26128 - 19968: 0xDDCB,\n\t26129 - 19968: 0xD0D4,\n\t26131 - 19968: 0xE6B6,\n\t26132 - 19968: 0xE0AE,\n\t26133 - 19968: 0xFDDA,\n\t26142 - 19968: 0xDCB5,\n\t26143 - 19968: 0xE0F8,\n\t26144 - 19968: 0xE7B1,\n\t26149 - 19968: 0xF5F0,\n\t26151 - 19968: 0xD8DC,\n\t26152 - 19968: 0xEDC6,\n\t26157 - 19968: 0xE1B9,\n\t26159 - 19968: 0xE3C0,\n\t26160 - 19968: 0xF9C0,\n\t26161 - 19968: 0xE9F0,\n\t26164 - 19968: 0xD9DB,\n\t26166 - 19968: 0xF3E4,\n\t26170 - 19968: 0xDCB6,\n\t26171 - 19968: 0xE4E9,\n\t26177 - 19968: 0xF0C5,\n\t26178 - 19968: 0xE3C1,\n\t26179 - 19968: 0xFCCC,\n\t26180 - 19968: 0xFCCD,\n\t26185 - 19968: 0xF2CB,\n\t26187 - 19968: 0xF2CC,\n\t26191 - 19968: 0xE4CF,\n\t26201 - 19968: 0xF1DB,\n\t26203 - 19968: 0xFAD9,\n\t26205 - 19968: 0xF1B8,\n\t26206 - 19968: 0xFDF5,\n\t26207 - 19968: 0xE0F9,\n\t26212 - 19968: 0xE7FB,\n\t26213 - 19968: 0xFCB7,\n\t26214 - 19968: 0xFCE4,\n\t26215 - 19968: 0xFBC5,\n\t26216 - 19968: 0xE3E7,\n\t26217 - 19968: 0xD8B9,\n\t26219 - 19968: 0xF6F8,\n\t26222 - 19968: 0xDCC5,\n\t26223 - 19968: 0xCCD8,\n\t26227 - 19968: 0xE0AF,\n\t26228 - 19968: 0xF4E7,\n\t26230 - 19968: 0xEFDC,\n\t26231 - 19968: 0xCFFC,\n\t26232 - 19968: 0xEFDD,\n\t26234 - 19968: 0xF2AA,\n\t26244 - 19968: 0xFDBE,\n\t26247 - 19968: 0xCAAC,\n\t26248 - 19968: 0xFDBB,\n\t26249 - 19968: 0xFDC7,\n\t26254 - 19968: 0xE7B2,\n\t26256 - 19968: 0xEAD1,\n\t26257 - 19968: 0xDFF4,\n\t26262 - 19968: 0xD1EC,\n\t26263 - 19968: 0xE4DE,\n\t26264 - 19968: 0xE5C3,\n\t26269 - 19968: 0xD9A6,\n\t26272 - 19968: 0xCDBC,\n\t26274 - 19968: 0xF3E5,\n\t26283 - 19968: 0xEDD5,\n\t26286 - 19968: 0xD9BA,\n\t26290 - 19968: 0xEDE7,\n\t26291 - 19968: 0xFBB5,\n\t26292 - 19968: 0xF8EC,\n\t26297 - 19968: 0xE0E7,\n\t26299 - 19968: 0xCCD9,\n\t26302 - 19968: 0xD4C6,\n\t26308 - 19968: 0xE7A5,\n\t26310 - 19968: 0xD5F5,\n\t26311 - 19968: 0xD3BE,\n\t26313 - 19968: 0xFCFB,\n\t26326 - 19968: 0xE4F2,\n\t26329 - 19968: 0xDFF5,\n\t26332 - 19968: 0xE8F8,\n\t26333 - 19968: 0xF8ED,\n\t26336 - 19968: 0xCEC7,\n\t26342 - 19968: 0xFDF6,\n\t26352 - 19968: 0xE8D8,\n\t26354 - 19968: 0xCDD8,\n\t26355 - 19968: 0xE7D6,\n\t26356 - 19968: 0xCCDA,\n\t26359 - 19968: 0xCAE3,\n\t26360 - 19968: 0xDFF6,\n\t26361 - 19968: 0xF0C7,\n\t26362 - 19968: 0xF0C6,\n\t26364 - 19968: 0xD8BA,\n\t26366 - 19968: 0xF1F4,\n\t26367 - 19968: 0xF4F0,\n\t26368 - 19968: 0xF5CC,\n\t26371 - 19968: 0xFCE5,\n\t26376 - 19968: 0xEAC5,\n\t26377 - 19968: 0xEAF3,\n\t26379 - 19968: 0xDDDB,\n\t26381 - 19968: 0xDCD7,\n\t26388 - 19968: 0xDEFD,\n\t26389 - 19968: 0xF2F9,\n\t26391 - 19968: 0xD5C7,\n\t26395 - 19968: 0xD8D0,\n\t26397 - 19968: 0xF0C8,\n\t26398 - 19968: 0xD1A1,\n\t26399 - 19968: 0xD1A2,\n\t26406 - 19968: 0xD9D4,\n\t26407 - 19968: 0xD6E8,\n\t26408 - 19968: 0xD9CA,\n\t26410 - 19968: 0xDAB1,\n\t26411 - 19968: 0xD8C7,\n\t26412 - 19968: 0xDCE2,\n\t26413 - 19968: 0xF3CE,\n\t26414 - 19968: 0xF5F4,\n\t26417 - 19968: 0xF1B9,\n\t26420 - 19968: 0xDAD3,\n\t26422 - 19968: 0xF6EA,\n\t26426 - 19968: 0xCFF5,\n\t26429 - 19968: 0xFDAE,\n\t26438 - 19968: 0xCAD2,\n\t26441 - 19968: 0xDFB4,\n\t26446 - 19968: 0xD7DD,\n\t26447 - 19968: 0xFABA,\n\t26448 - 19968: 0xEEA7,\n\t26449 - 19968: 0xF5BD,\n\t26451 - 19968: 0xF8F5,\n\t26454 - 19968: 0xEDE8,\n\t26460 - 19968: 0xD4E1,\n\t26462 - 19968: 0xD1A3,\n\t26463 - 19968: 0xE1D6,\n\t26477 - 19968: 0xF9F8,\n\t26479 - 19968: 0xDBCA,\n\t26480 - 19968: 0xCBF9,\n\t26481 - 19968: 0xD4D4,\n\t26483 - 19968: 0xD9DC,\n\t26485 - 19968: 0xEEBE,\n\t26487 - 19968: 0xF7ED,\n\t26491 - 19968: 0xD2EE,\n\t26494 - 19968: 0xE1E6,\n\t26495 - 19968: 0xF7F9,\n\t26503 - 19968: 0xDDED,\n\t26505 - 19968: 0xE8DB,\n\t26507 - 19968: 0xDBB3,\n\t26511 - 19968: 0xD1F7,\n\t26512 - 19968: 0xE0B0,\n\t26515 - 19968: 0xD4E2,\n\t26517 - 19968: 0xF6D7,\n\t26519 - 19968: 0xD7F9,\n\t26522 - 19968: 0xD8DD,\n\t26524 - 19968: 0xCDFD,\n\t26525 - 19968: 0xF2AB,\n\t26543 - 19968: 0xCDBD,\n\t26544 - 19968: 0xF8C2,\n\t26547 - 19968: 0xF2AC,\n\t26550 - 19968: 0xCAAD,\n\t26551 - 19968: 0xCAAE,\n\t26552 - 19968: 0xCFAE,\n\t26558 - 19968: 0xE3C2,\n\t26564 - 19968: 0xDCB7,\n\t26575 - 19968: 0xDBDA,\n\t26576 - 19968: 0xD9BB,\n\t26577 - 19968: 0xCAF3,\n\t26578 - 19968: 0xF6D3,\n\t26579 - 19968: 0xE6F8,\n\t26580 - 19968: 0xEAF5,\n\t26586 - 19968: 0xEAF6,\n\t26589 - 19968: 0xF6F9,\n\t26601 - 19968: 0xCFAF,\n\t26604 - 19968: 0xCAD3,\n\t26607 - 19968: 0xCAAF,\n\t26608 - 19968: 0xD2B0,\n\t26609 - 19968: 0xF1BA,\n\t26611 - 19968: 0xD7B3,\n\t26612 - 19968: 0xE3C3,\n\t26613 - 19968: 0xF3FD,\n\t26614 - 19968: 0xDEDA,\n\t26619 - 19968: 0xDEDB,\n\t26622 - 19968: 0xEFDE,\n\t26642 - 19968: 0xE2E3,\n\t26643 - 19968: 0xEEFB,\n\t26646 - 19968: 0xDFF7,\n\t26647 - 19968: 0xD7CA,\n\t26657 - 19968: 0xCEE8,\n\t26658 - 19968: 0xDBDB,\n\t26666 - 19968: 0xF1BB,\n\t26671 - 19968: 0xE9F1,\n\t26680 - 19968: 0xFAB7,\n\t26681 - 19968: 0xD0C6,\n\t26684 - 19968: 0xCCAB,\n\t26685 - 19968: 0xEEA8,\n\t26688 - 19968: 0xCBFA,\n\t26689 - 19968: 0xF9F9,\n\t26690 - 19968: 0xCCFD,\n\t26691 - 19968: 0xD3FE,\n\t26696 - 19968: 0xE4D0,\n\t26702 - 19968: 0xF2EE,\n\t26704 - 19968: 0xD4D5,\n\t26705 - 19968: 0xDFCD,\n\t26707 - 19968: 0xFCB8,\n\t26708 - 19968: 0xD1D0,\n\t26733 - 19968: 0xF2CD,\n\t26742 - 19968: 0xF7D2,\n\t26751 - 19968: 0xCAD4,\n\t26753 - 19968: 0xD5D9,\n\t26757 - 19968: 0xD8DE,\n\t26767 - 19968: 0xCDD9,\n\t26771 - 19968: 0xEEA9,\n\t26772 - 19968: 0xF6BC,\n\t26775 - 19968: 0xCCDB,\n\t26781 - 19968: 0xF0C9,\n\t26783 - 19968: 0xFCFC,\n\t26785 - 19968: 0xE8C9,\n\t26786 - 19968: 0xF4FE,\n\t26791 - 19968: 0xE7FC,\n\t26792 - 19968: 0xD7DE,\n\t26797 - 19968: 0xDEDC,\n\t26799 - 19968: 0xF0AC,\n\t26800 - 19968: 0xCCFE,\n\t26801 - 19968: 0xCDE1,\n\t26803 - 19968: 0xE1BA,\n\t26805 - 19968: 0xDBEF,\n\t26806 - 19968: 0xDAB2,\n\t26820 - 19968: 0xD1A5,\n\t26821 - 19968: 0xDCB8,\n\t26825 - 19968: 0xD8F6,\n\t26827 - 19968: 0xD1A4,\n\t26829 - 19968: 0xCDE2,\n\t26834 - 19968: 0xDCEA,\n\t26837 - 19968: 0xF0F7,\n\t26839 - 19968: 0xF0CA,\n\t26840 - 19968: 0xD0BE,\n\t26842 - 19968: 0xDDDC,\n\t26847 - 19968: 0xD4D6,\n\t26848 - 19968: 0xD3D6,\n\t26855 - 19968: 0xEDD0,\n\t26856 - 19968: 0xCDA1,\n\t26862 - 19968: 0xDFB5,\n\t26866 - 19968: 0xDFF8,\n\t26873 - 19968: 0xD4A1,\n\t26874 - 19968: 0xCEB2,\n\t26880 - 19968: 0xE8CA,\n\t26885 - 19968: 0xEBF5,\n\t26893 - 19968: 0xE3D5,\n\t26894 - 19968: 0xF5D0,\n\t26898 - 19968: 0xF5A1,\n\t26919 - 19968: 0xD9A7,\n\t26928 - 19968: 0xE5AB,\n\t26941 - 19968: 0xE6CB,\n\t26943 - 19968: 0xF5F1,\n\t26954 - 19968: 0xE5C5,\n\t26963 - 19968: 0xF9A3,\n\t26964 - 19968: 0xE0DB,\n\t26965 - 19968: 0xF6EB,\n\t26967 - 19968: 0xCBF1,\n\t26969 - 19968: 0xD9EA,\n\t26970 - 19968: 0xF5A2,\n\t26974 - 19968: 0xD7D1,\n\t26976 - 19968: 0xD1F8,\n\t26977 - 19968: 0xEAF8,\n\t26978 - 19968: 0xEAF9,\n\t26979 - 19968: 0xDAB3,\n\t26984 - 19968: 0xEFDF,\n\t26987 - 19968: 0xF1EF,\n\t26989 - 19968: 0xE5F6,\n\t26990 - 19968: 0xEEBF,\n\t26991 - 19968: 0xE2E4,\n\t26997 - 19968: 0xD0BF,\n\t26999 - 19968: 0xFAAC,\n\t27000 - 19968: 0xF5D1,\n\t27001 - 19968: 0xE7B3,\n\t27029 - 19968: 0xE9BE,\n\t27035 - 19968: 0xF2CE,\n\t27036 - 19968: 0xDBB4,\n\t27045 - 19968: 0xFCCE,\n\t27047 - 19968: 0xDDEE,\n\t27054 - 19968: 0xE7B4,\n\t27060 - 19968: 0xD7B4,\n\t27067 - 19968: 0xF7B4,\n\t27073 - 19968: 0xCDBE,\n\t27075 - 19968: 0xDAE9,\n\t27083 - 19968: 0xCFB0,\n\t27084 - 19968: 0xF7D9,\n\t27085 - 19968: 0xF3E6,\n\t27088 - 19968: 0xCED9,\n\t27112 - 19968: 0xCEAA,\n\t27114 - 19968: 0xCBC8,\n\t27131 - 19968: 0xD0A7,\n\t27133 - 19968: 0xF0CB,\n\t27135 - 19968: 0xD0C7,\n\t27138 - 19968: 0xE4C5,\n\t27146 - 19968: 0xDBE0,\n\t27153 - 19968: 0xD5DA,\n\t27155 - 19968: 0xD7A7,\n\t27159 - 19968: 0xEEC0,\n\t27161 - 19968: 0xF8F6,\n\t27166 - 19968: 0xF5D2,\n\t27167 - 19968: 0xEDE9,\n\t27169 - 19968: 0xD9BC,\n\t27171 - 19968: 0xE5C6,\n\t27189 - 19968: 0xF5A3,\n\t27192 - 19968: 0xDAD4,\n\t27193 - 19968: 0xE2A7,\n\t27194 - 19968: 0xFBFC,\n\t27197 - 19968: 0xF1DC,\n\t27204 - 19968: 0xCAF4,\n\t27208 - 19968: 0xE8FA,\n\t27211 - 19968: 0xCEE9,\n\t27218 - 19968: 0xE9F8,\n\t27219 - 19968: 0xE2E5,\n\t27224 - 19968: 0xD0B9,\n\t27225 - 19968: 0xD4F2,\n\t27231 - 19968: 0xD1A6,\n\t27233 - 19968: 0xDFCE,\n\t27243 - 19968: 0xFCF4,\n\t27264 - 19968: 0xD3AA,\n\t27268 - 19968: 0xCCAC,\n\t27273 - 19968: 0xEFE0,\n\t27277 - 19968: 0xE5E5,\n\t27278 - 19968: 0xD0D5,\n\t27287 - 19968: 0xDBFC,\n\t27292 - 19968: 0xFCE6,\n\t27298 - 19968: 0xCBFE,\n\t27299 - 19968: 0xEDEA,\n\t27315 - 19968: 0xDEB1,\n\t27323 - 19968: 0xF9E3,\n\t27330 - 19968: 0xD4A2,\n\t27331 - 19968: 0xCFF6,\n\t27347 - 19968: 0xD6D0,\n\t27354 - 19968: 0xD5EA,\n\t27355 - 19968: 0xF1EE,\n\t27382 - 19968: 0xFACB,\n\t27387 - 19968: 0xE5A1,\n\t27396 - 19968: 0xD5B1,\n\t27402 - 19968: 0xCFED,\n\t27404 - 19968: 0xEDEB,\n\t27410 - 19968: 0xD5B2,\n\t27414 - 19968: 0xD5BC,\n\t27424 - 19968: 0xFDE2,\n\t27425 - 19968: 0xF3AD,\n\t27427 - 19968: 0xFDDB,\n\t27442 - 19968: 0xE9B0,\n\t27450 - 19968: 0xD1A7,\n\t27453 - 19968: 0xFDE3,\n\t27454 - 19968: 0xCEB3,\n\t27462 - 19968: 0xFDE4,\n\t27463 - 19968: 0xFACE,\n\t27468 - 19968: 0xCAB0,\n\t27470 - 19968: 0xF7A7,\n\t27472 - 19968: 0xCFB1,\n\t27487 - 19968: 0xE6A2,\n\t27489 - 19968: 0xFCB6,\n\t27490 - 19968: 0xF2AD,\n\t27491 - 19968: 0xEFE1,\n\t27492 - 19968: 0xF3AE,\n\t27493 - 19968: 0xDCC6,\n\t27494 - 19968: 0xD9EB,\n\t27498 - 19968: 0xE8E0,\n\t27506 - 19968: 0xE1A8,\n\t27511 - 19968: 0xD5F6,\n\t27512 - 19968: 0xCFFD,\n\t27515 - 19968: 0xDEDD,\n\t27519 - 19968: 0xD9D1,\n\t27523 - 19968: 0xE4EA,\n\t27524 - 19968: 0xF2CF,\n\t27526 - 19968: 0xF7BF,\n\t27529 - 19968: 0xE2E6,\n\t27530 - 19968: 0xE2A8,\n\t27542 - 19968: 0xE3D6,\n\t27544 - 19968: 0xEDD1,\n\t27550 - 19968: 0xE9F9,\n\t27566 - 19968: 0xD6B1,\n\t27567 - 19968: 0xDEB2,\n\t27570 - 19968: 0xE0E8,\n\t27573 - 19968: 0xD3AB,\n\t27575 - 19968: 0xEBDC,\n\t27578 - 19968: 0xDFAF,\n\t27580 - 19968: 0xCAC3,\n\t27583 - 19968: 0xEEFC,\n\t27585 - 19968: 0xFDC3,\n\t27589 - 19968: 0xEBF6,\n\t27590 - 19968: 0xCFB2,\n\t27595 - 19968: 0xD9EC,\n\t27597 - 19968: 0xD9BD,\n\t27599 - 19968: 0xD8DF,\n\t27602 - 19968: 0xD4B8,\n\t27603 - 19968: 0xEBBE,\n\t27604 - 19968: 0xDDEF,\n\t27606 - 19968: 0xDDF0,\n\t27607 - 19968: 0xDDF1,\n\t27608 - 19968: 0xDDF2,\n\t27611 - 19968: 0xD9BE,\n\t27627 - 19968: 0xFBC6,\n\t27628 - 19968: 0xCFB3,\n\t27656 - 19968: 0xEEFD,\n\t27663 - 19968: 0xE4AB,\n\t27665 - 19968: 0xDAC5,\n\t27667 - 19968: 0xD8EC,\n\t27683 - 19968: 0xD1A8,\n\t27700 - 19968: 0xE2A9,\n\t27703 - 19968: 0xDEBC,\n\t27704 - 19968: 0xE7B5,\n\t27710 - 19968: 0xDBF0,\n\t27712 - 19968: 0xEFE2,\n\t27713 - 19968: 0xF1F0,\n\t27714 - 19968: 0xCFB4,\n\t27726 - 19968: 0xDBF1,\n\t27728 - 19968: 0xE0B1,\n\t27733 - 19968: 0xDFA5,\n\t27735 - 19968: 0xF9D2,\n\t27738 - 19968: 0xE7FD,\n\t27741 - 19968: 0xE6A3,\n\t27742 - 19968: 0xFBF1,\n\t27743 - 19968: 0xCBB0,\n\t27744 - 19968: 0xF2AE,\n\t27752 - 19968: 0xCDE7,\n\t27754 - 19968: 0xE8DC,\n\t27757 - 19968: 0xE7D7,\n\t27760 - 19968: 0xF7C0,\n\t27762 - 19968: 0xD0E3,\n\t27766 - 19968: 0xDAA1,\n\t27770 - 19968: 0xCCBD,\n\t27773 - 19968: 0xD1A9,\n\t27774 - 19968: 0xDDCC,\n\t27777 - 19968: 0xE3FE,\n\t27778 - 19968: 0xD1AA,\n\t27779 - 19968: 0xE8AA,\n\t27781 - 19968: 0xEAB6,\n\t27782 - 19968: 0xF9FA,\n\t27783 - 19968: 0xE6CC,\n\t27784 - 19968: 0xF6D8,\n\t27788 - 19968: 0xD4C7,\n\t27792 - 19968: 0xD9CB,\n\t27794 - 19968: 0xD9D2,\n\t27795 - 19968: 0xD3CB,\n\t27796 - 19968: 0xD8F7,\n\t27797 - 19968: 0xDAA9,\n\t27798 - 19968: 0xF5F8,\n\t27801 - 19968: 0xDEDE,\n\t27802 - 19968: 0xF2AF,\n\t27803 - 19968: 0xF8A9,\n\t27819 - 19968: 0xD8C8,\n\t27822 - 19968: 0xEEC1,\n\t27827 - 19968: 0xF9C1,\n\t27832 - 19968: 0xDDF3,\n\t27833 - 19968: 0xEAFA,\n\t27835 - 19968: 0xF6BD,\n\t27836 - 19968: 0xE1BB,\n\t27837 - 19968: 0xCDBF,\n\t27838 - 19968: 0xF4D4,\n\t27839 - 19968: 0xE6CD,\n\t27841 - 19968: 0xFCCF,\n\t27842 - 19968: 0xFBA2,\n\t27844 - 19968: 0xE0DC,\n\t27849 - 19968: 0xF4BB,\n\t27850 - 19968: 0xDAD5,\n\t27852 - 19968: 0xF9B2,\n\t27859 - 19968: 0xFBF2,\n\t27861 - 19968: 0xDBF6,\n\t27863 - 19968: 0xDEDF,\n\t27867 - 19968: 0xDBF2,\n\t27873 - 19968: 0xF8DC,\n\t27874 - 19968: 0xF7EE,\n\t27875 - 19968: 0xEBE8,\n\t27877 - 19968: 0xD2FA,\n\t27880 - 19968: 0xF1BC,\n\t27883 - 19968: 0xFADA,\n\t27886 - 19968: 0xDAEA,\n\t27887 - 19968: 0xDAC6,\n\t27888 - 19968: 0xF7C1,\n\t27891 - 19968: 0xE7B6,\n\t27915 - 19968: 0xE5C7,\n\t27916 - 19968: 0xD6AC,\n\t27921 - 19968: 0xDCC7,\n\t27927 - 19968: 0xE1A9,\n\t27929 - 19968: 0xE2AA,\n\t27931 - 19968: 0xD5A6,\n\t27934 - 19968: 0xD4D7,\n\t27941 - 19968: 0xF2D0,\n\t27943 - 19968: 0xEAFB,\n\t27945 - 19968: 0xE0DD,\n\t27946 - 19968: 0xFBF3,\n\t27954 - 19968: 0xF1BD,\n\t27957 - 19968: 0xE2E7,\n\t27958 - 19968: 0xFDD7,\n\t27960 - 19968: 0xCEC8,\n\t27961 - 19968: 0xEAB7,\n\t27963 - 19968: 0xFCC0,\n\t27965 - 19968: 0xFDE7,\n\t27966 - 19968: 0xF7EF,\n\t27969 - 19968: 0xD7B5,\n\t27993 - 19968: 0xEFBA,\n\t27994 - 19968: 0xF1DD,\n\t27996 - 19968: 0xDEB3,\n\t28003 - 19968: 0xE8CB,\n\t28006 - 19968: 0xF8DD,\n\t28009 - 19968: 0xFBC7,\n\t28010 - 19968: 0xD5C8,\n\t28012 - 19968: 0xD7DF,\n\t28014 - 19968: 0xDDA9,\n\t28020 - 19968: 0xE9B1,\n\t28023 - 19968: 0xFAAD,\n\t28024 - 19968: 0xF6D9,\n\t28025 - 19968: 0xFAF4,\n\t28031 - 19968: 0xF8AA,\n\t28037 - 19968: 0xE6EE,\n\t28039 - 19968: 0xCCDC,\n\t28040 - 19968: 0xE1BC,\n\t28041 - 19968: 0xE0EF,\n\t28044 - 19968: 0xE9BF,\n\t28045 - 19968: 0xFCFD,\n\t28046 - 19968: 0xE6CE,\n\t28049 - 19968: 0xE1D7,\n\t28051 - 19968: 0xE6CF,\n\t28053 - 19968: 0xF4F1,\n\t28079 - 19968: 0xE4F3,\n\t28082 - 19968: 0xE4FB,\n\t28085 - 19968: 0xF9E4,\n\t28096 - 19968: 0xEFE3,\n\t28099 - 19968: 0xCFEE,\n\t28100 - 19968: 0xF6BE,\n\t28101 - 19968: 0xE0B2,\n\t28102 - 19968: 0xFCFE,\n\t28103 - 19968: 0xD1AB,\n\t28107 - 19968: 0xD7FA,\n\t28111 - 19968: 0xFBC8,\n\t28113 - 19968: 0xE2D7,\n\t28120 - 19968: 0xD4A3,\n\t28121 - 19968: 0xF0F8,\n\t28122 - 19968: 0xD7A8,\n\t28126 - 19968: 0xE1E7,\n\t28129 - 19968: 0xD3BF,\n\t28136 - 19968: 0xEFE4,\n\t28138 - 19968: 0xD7C5,\n\t28139 - 19968: 0xEBE2,\n\t28142 - 19968: 0xFCE7,\n\t28145 - 19968: 0xE4A2,\n\t28147 - 19968: 0xE2E8,\n\t28149 - 19968: 0xE6D0,\n\t28151 - 19968: 0xFBE8,\n\t28152 - 19968: 0xF4E8,\n\t28153 - 19968: 0xE5F4,\n\t28154 - 19968: 0xF4BC,\n\t28155 - 19968: 0xF4D5,\n\t28183 - 19968: 0xDFB6,\n\t28185 - 19968: 0xFCB9,\n\t28186 - 19968: 0xEEC2,\n\t28187 - 19968: 0xCAF5,\n\t28191 - 19968: 0xEFE5,\n\t28192 - 19968: 0xCBE2,\n\t28193 - 19968: 0xD4A4,\n\t28195 - 19968: 0xDEE0,\n\t28196 - 19968: 0xDAFD,\n\t28197 - 19968: 0xE4C6,\n\t28198 - 19968: 0xE8BE,\n\t28203 - 19968: 0xE0DE,\n\t28204 - 19968: 0xF6B4,\n\t28205 - 19968: 0xEAD2,\n\t28207 - 19968: 0xF9FB,\n\t28210 - 19968: 0xE0C2,\n\t28212 - 19968: 0xCAE4,\n\t28214 - 19968: 0xE7B7,\n\t28216 - 19968: 0xEAFD,\n\t28218 - 19968: 0xD9DD,\n\t28220 - 19968: 0xDAB4,\n\t28221 - 19968: 0xEEAA,\n\t28222 - 19968: 0xFBE9,\n\t28227 - 19968: 0xDBCB,\n\t28228 - 19968: 0xDAB5,\n\t28234 - 19968: 0xF1BE,\n\t28237 - 19968: 0xD3AC,\n\t28246 - 19968: 0xFBC9,\n\t28248 - 19968: 0xDFCF,\n\t28251 - 19968: 0xD3C0,\n\t28252 - 19968: 0xE3D7,\n\t28254 - 19968: 0xEFE6,\n\t28255 - 19968: 0xFCD0,\n\t28263 - 19968: 0xE9C0,\n\t28267 - 19968: 0xF5D3,\n\t28270 - 19968: 0xECDC,\n\t28271 - 19968: 0xF7B7,\n\t28274 - 19968: 0xEAB8,\n\t28275 - 19968: 0xD1F9,\n\t28282 - 19968: 0xDCC8,\n\t28304 - 19968: 0xEAB9,\n\t28310 - 19968: 0xF1DE,\n\t28316 - 19968: 0xD7B6,\n\t28317 - 19968: 0xCFB5,\n\t28319 - 19968: 0xD9A8,\n\t28322 - 19968: 0xECEE,\n\t28325 - 19968: 0xDDAA,\n\t28330 - 19968: 0xCDA2,\n\t28331 - 19968: 0xE8AE,\n\t28335 - 19968: 0xE1BD,\n\t28337 - 19968: 0xF2D1,\n\t28342 - 19968: 0xE9C1,\n\t28346 - 19968: 0xD2FC,\n\t28354 - 19968: 0xDBB5,\n\t28356 - 19968: 0xF3E7,\n\t28357 - 19968: 0xD8FE,\n\t28361 - 19968: 0xFCD1,\n\t28363 - 19968: 0xEDB2,\n\t28364 - 19968: 0xF4AF,\n\t28366 - 19968: 0xFBA3,\n\t28369 - 19968: 0xFCC1,\n\t28371 - 19968: 0xEEAB,\n\t28372 - 19968: 0xD4A5,\n\t28399 - 19968: 0xF4F2,\n\t28404 - 19968: 0xEED9,\n\t28408 - 19968: 0xFBCA,\n\t28414 - 19968: 0xCDE3,\n\t28415 - 19968: 0xD8BB,\n\t28417 - 19968: 0xE5DB,\n\t28418 - 19968: 0xF8F7,\n\t28422 - 19968: 0xF6D4,\n\t28431 - 19968: 0xD7A9,\n\t28433 - 19968: 0xCBC9,\n\t28436 - 19968: 0xE6D1,\n\t28437 - 19968: 0xF0CC,\n\t28448 - 19968: 0xD8AE,\n\t28450 - 19968: 0xF9D3,\n\t28451 - 19968: 0xD5FE,\n\t28459 - 19968: 0xD8BC,\n\t28460 - 19968: 0xF2B0,\n\t28465 - 19968: 0xE2AB,\n\t28466 - 19968: 0xF3E8,\n\t28472 - 19968: 0xEFC2,\n\t28479 - 19968: 0xEDEC,\n\t28481 - 19968: 0xE7B8,\n\t28497 - 19968: 0xDAFE,\n\t28500 - 19968: 0xCCBE,\n\t28503 - 19968: 0xF2FC,\n\t28504 - 19968: 0xDAEB,\n\t28506 - 19968: 0xE2D8,\n\t28507 - 19968: 0xEDD6,\n\t28510 - 19968: 0xD6D1,\n\t28511 - 19968: 0xE0B3,\n\t28514 - 19968: 0xFCD2,\n\t28516 - 19968: 0xEBC8,\n\t28525 - 19968: 0xD3C1,\n\t28526 - 19968: 0xF0CD,\n\t28528 - 19968: 0xCFF7,\n\t28538 - 19968: 0xEDD2,\n\t28540 - 19968: 0xD4D8,\n\t28541 - 19968: 0xDCC9,\n\t28542 - 19968: 0xD7F1,\n\t28545 - 19968: 0xDFBB,\n\t28548 - 19968: 0xF3A5,\n\t28552 - 19968: 0xF4CD,\n\t28557 - 19968: 0xF1BF,\n\t28558 - 19968: 0xF8B1,\n\t28560 - 19968: 0xE9FA,\n\t28564 - 19968: 0xFBCB,\n\t28567 - 19968: 0xCAD5,\n\t28579 - 19968: 0xF9D4,\n\t28580 - 19968: 0xF7CA,\n\t28583 - 19968: 0xD6C8,\n\t28590 - 19968: 0xFCE8,\n\t28591 - 19968: 0xF3BD,\n\t28593 - 19968: 0xEEFE,\n\t28595 - 19968: 0xE7FE,\n\t28601 - 19968: 0xD3C2,\n\t28606 - 19968: 0xD3B6,\n\t28608 - 19968: 0xCCAD,\n\t28609 - 19968: 0xF6FA,\n\t28610 - 19968: 0xD6B2,\n\t28611 - 19968: 0xD2D8,\n\t28618 - 19968: 0xE7D8,\n\t28629 - 19968: 0xE3A5,\n\t28634 - 19968: 0xE7B9,\n\t28639 - 19968: 0xF0AD,\n\t28640 - 19968: 0xFBCC,\n\t28641 - 19968: 0xEBA1,\n\t28644 - 19968: 0xD4A6,\n\t28649 - 19968: 0xFBCD,\n\t28651 - 19968: 0xD5BD,\n\t28652 - 19968: 0xF1DF,\n\t28655 - 19968: 0xF6FB,\n\t28657 - 19968: 0xDEB4,\n\t28670 - 19968: 0xD5EB,\n\t28673 - 19968: 0xE5C8,\n\t28677 - 19968: 0xFBA4,\n\t28678 - 19968: 0xD4B9,\n\t28681 - 19968: 0xDEE1,\n\t28683 - 19968: 0xE4A3,\n\t28687 - 19968: 0xD7B7,\n\t28689 - 19968: 0xF8EE,\n\t28693 - 19968: 0xDEB5,\n\t28696 - 19968: 0xD6D2,\n\t28698 - 19968: 0xF9D5,\n\t28699 - 19968: 0xE7BA,\n\t28700 - 19968: 0xEBD5,\n\t28701 - 19968: 0xD5F7,\n\t28702 - 19968: 0xEFE7,\n\t28703 - 19968: 0xE1BE,\n\t28707 - 19968: 0xFAAE,\n\t28711 - 19968: 0xD6E9,\n\t28712 - 19968: 0xD6EE,\n\t28719 - 19968: 0xE7BB,\n\t28727 - 19968: 0xECCB,\n\t28734 - 19968: 0xD5B3,\n\t28748 - 19968: 0xCEB4,\n\t28752 - 19968: 0xFBA5,\n\t28753 - 19968: 0xE1EE,\n\t28760 - 19968: 0xF7A8,\n\t28765 - 19968: 0xFBCE,\n\t28771 - 19968: 0xD8BD,\n\t28779 - 19968: 0xFBFD,\n\t28784 - 19968: 0xFCE9,\n\t28792 - 19968: 0xCFB6,\n\t28796 - 19968: 0xEDC7,\n\t28797 - 19968: 0xEEAC,\n\t28805 - 19968: 0xCCDD,\n\t28810 - 19968: 0xF6A7,\n\t28814 - 19968: 0xE6FA,\n\t28818 - 19968: 0xF5A4,\n\t28824 - 19968: 0xFDDC,\n\t28825 - 19968: 0xEDB3,\n\t28826 - 19968: 0xCEC9,\n\t28833 - 19968: 0xEFE8,\n\t28836 - 19968: 0xE1BF,\n\t28843 - 19968: 0xFADB,\n\t28844 - 19968: 0xCBE3,\n\t28845 - 19968: 0xF7A9,\n\t28847 - 19968: 0xFBA6,\n\t28851 - 19968: 0xDCB9,\n\t28855 - 19968: 0xF1C0,\n\t28856 - 19968: 0xEDC8,\n\t28857 - 19968: 0xEFC3,\n\t28872 - 19968: 0xD6AD,\n\t28875 - 19968: 0xFDCE,\n\t28879 - 19968: 0xE8A1,\n\t28888 - 19968: 0xFBF4,\n\t28889 - 19968: 0xD5A7,\n\t28893 - 19968: 0xF1F6,\n\t28895 - 19968: 0xE6D3,\n\t28913 - 19968: 0xCCDE,\n\t28921 - 19968: 0xF8B2,\n\t28925 - 19968: 0xDCEB,\n\t28932 - 19968: 0xFDB6,\n\t28937 - 19968: 0xE5EA,\n\t28940 - 19968: 0xF1E0,\n\t28953 - 19968: 0xDBCC,\n\t28954 - 19968: 0xDDCD,\n\t28958 - 19968: 0xD4C8,\n\t28961 - 19968: 0xD9ED,\n\t28966 - 19968: 0xF5A5,\n\t28976 - 19968: 0xE6FB,\n\t28982 - 19968: 0xE6D4,\n\t28999 - 19968: 0xFDC8,\n\t29001 - 19968: 0xD6A1,\n\t29002 - 19968: 0xFDBF,\n\t29004 - 19968: 0xFCD3,\n\t29006 - 19968: 0xEFA1,\n\t29008 - 19968: 0xE7BC,\n\t29014 - 19968: 0xD1EE,\n\t29017 - 19968: 0xE6D5,\n\t29020 - 19968: 0xE9F2,\n\t29022 - 19968: 0xDFB0,\n\t29028 - 19968: 0xD8E0,\n\t29029 - 19968: 0xFCBA,\n\t29030 - 19968: 0xFDAF,\n\t29031 - 19968: 0xF0CE,\n\t29033 - 19968: 0xDBE1,\n\t29036 - 19968: 0xE5C9,\n\t29038 - 19968: 0xEDB4,\n\t29053 - 19968: 0xE0C3,\n\t29060 - 19968: 0xE3D8,\n\t29065 - 19968: 0xE9FB,\n\t29066 - 19968: 0xEAA8,\n\t29071 - 19968: 0xFDB7,\n\t29074 - 19968: 0xFBA7,\n\t29076 - 19968: 0xE9C2,\n\t29081 - 19968: 0xFDF7,\n\t29087 - 19968: 0xE2D9,\n\t29090 - 19968: 0xDCEC,\n\t29100 - 19968: 0xE8A2,\n\t29105 - 19968: 0xE6F0,\n\t29113 - 19968: 0xFDF8,\n\t29114 - 19968: 0xFDF9,\n\t29118 - 19968: 0xF6BF,\n\t29121 - 19968: 0xE7A7,\n\t29123 - 19968: 0xE6D7,\n\t29128 - 19968: 0xD4F3,\n\t29129 - 19968: 0xD4C9,\n\t29134 - 19968: 0xD6FA,\n\t29136 - 19968: 0xD7F2,\n\t29138 - 19968: 0xE1C0,\n\t29140 - 19968: 0xDBE2,\n\t29141 - 19968: 0xE6D8,\n\t29151 - 19968: 0xE7BD,\n\t29157 - 19968: 0xF0CF,\n\t29158 - 19968: 0xF3BE,\n\t29159 - 19968: 0xE2AC,\n\t29165 - 19968: 0xF5B7,\n\t29166 - 19968: 0xE0F0,\n\t29179 - 19968: 0xFDB8,\n\t29180 - 19968: 0xE3E8,\n\t29182 - 19968: 0xD4A7,\n\t29183 - 19968: 0xE8FC,\n\t29184 - 19968: 0xFAD2,\n\t29190 - 19968: 0xF8EF,\n\t29200 - 19968: 0xD6D3,\n\t29211 - 19968: 0xD5B4,\n\t29226 - 19968: 0xF0D0,\n\t29228 - 19968: 0xF7F0,\n\t29229 - 19968: 0xEEB3,\n\t29232 - 19968: 0xEABA,\n\t29234 - 19968: 0xEAD3,\n\t29237 - 19968: 0xEDC9,\n\t29238 - 19968: 0xDDAB,\n\t29242 - 19968: 0xE5AC,\n\t29243 - 19968: 0xFDA1,\n\t29245 - 19968: 0xDFD0,\n\t29246 - 19968: 0xECB3,\n\t29248 - 19968: 0xDFD1,\n\t29254 - 19968: 0xEDED,\n\t29255 - 19968: 0xF8B8,\n\t29256 - 19968: 0xF7FA,\n\t29260 - 19968: 0xF8AB,\n\t29266 - 19968: 0xF4E0,\n\t29272 - 19968: 0xD4BA,\n\t29273 - 19968: 0xE4B3,\n\t29275 - 19968: 0xE9DA,\n\t29277 - 19968: 0xDEB6,\n\t29279 - 19968: 0xD9BF,\n\t29281 - 19968: 0xD9C0,\n\t29282 - 19968: 0xD6EF,\n\t29287 - 19968: 0xD9CC,\n\t29289 - 19968: 0xDAAA,\n\t29298 - 19968: 0xDFE5,\n\t29305 - 19968: 0xF7E5,\n\t29309 - 19968: 0xCCB2,\n\t29312 - 19968: 0xDFF9,\n\t29313 - 19968: 0xD7E0,\n\t29346 - 19968: 0xD4BB,\n\t29351 - 19968: 0xFDFA,\n\t29356 - 19968: 0xCCB3,\n\t29359 - 19968: 0xDBF3,\n\t29376 - 19968: 0xDFD2,\n\t29378 - 19968: 0xCECA,\n\t29380 - 19968: 0xEEDA,\n\t29390 - 19968: 0xE4E4,\n\t29392 - 19968: 0xFBCF,\n\t29399 - 19968: 0xCFB7,\n\t29401 - 19968: 0xEEC3,\n\t29409 - 19968: 0xCEEA,\n\t29417 - 19968: 0xE2AD,\n\t29432 - 19968: 0xD7E1,\n\t29433 - 19968: 0xFAF5,\n\t29436 - 19968: 0xD5C9,\n\t29437 - 19968: 0xF8AC,\n\t29450 - 19968: 0xE7D9,\n\t29462 - 19968: 0xF3E9,\n\t29467 - 19968: 0xD8ED,\n\t29468 - 19968: 0xE3C4,\n\t29469 - 19968: 0xF0F1,\n\t29477 - 19968: 0xE8E5,\n\t29481 - 19968: 0xE0FA,\n\t29482 - 19968: 0xEEC4,\n\t29483 - 19968: 0xD9DE,\n\t29494 - 19968: 0xEBA2,\n\t29495 - 19968: 0xEBA3,\n\t29502 - 19968: 0xFCC2,\n\t29503 - 19968: 0xEABB,\n\t29508 - 19968: 0xE8AB,\n\t29509 - 19968: 0xDEE2,\n\t29520 - 19968: 0xEDEF,\n\t29522 - 19968: 0xE8A3,\n\t29527 - 19968: 0xCFF1,\n\t29544 - 19968: 0xD4BC,\n\t29546 - 19968: 0xFCEA,\n\t29552 - 19968: 0xE7BE,\n\t29554 - 19968: 0xFCF2,\n\t29557 - 19968: 0xD6B4,\n\t29560 - 19968: 0xE2AE,\n\t29562 - 19968: 0xD3B7,\n\t29563 - 19968: 0xFACC,\n\t29572 - 19968: 0xFADC,\n\t29574 - 19968: 0xEDB5,\n\t29575 - 19968: 0xE1E3,\n\t29577 - 19968: 0xE8AC,\n\t29579 - 19968: 0xE8DD,\n\t29582 - 19968: 0xEFE9,\n\t29588 - 19968: 0xF4BD,\n\t29590 - 19968: 0xCFB8,\n\t29591 - 19968: 0xE9DB,\n\t29592 - 19968: 0xD1AC,\n\t29599 - 19968: 0xDAC7,\n\t29607 - 19968: 0xEBC9,\n\t29609 - 19968: 0xE8CC,\n\t29613 - 19968: 0xDEB7,\n\t29618 - 19968: 0xD6BC,\n\t29619 - 19968: 0xD3E5,\n\t29625 - 19968: 0xFADD,\n\t29632 - 19968: 0xDAD6,\n\t29634 - 19968: 0xCAB1,\n\t29641 - 19968: 0xDAC8,\n\t29642 - 19968: 0xDFA6,\n\t29644 - 19968: 0xF9B3,\n\t29645 - 19968: 0xF2D2,\n\t29647 - 19968: 0xCAC4,\n\t29654 - 19968: 0xCECB,\n\t29657 - 19968: 0xCDF5,\n\t29661 - 19968: 0xFDB0,\n\t29662 - 19968: 0xD5A8,\n\t29664 - 19968: 0xF1C1,\n\t29667 - 19968: 0xE2E9,\n\t29668 - 19968: 0xDCCA,\n\t29669 - 19968: 0xECB4,\n\t29670 - 19968: 0xFAC0,\n\t29673 - 19968: 0xFBA8,\n\t29674 - 19968: 0xD0A8,\n\t29677 - 19968: 0xDAEC,\n\t29687 - 19968: 0xD9EE,\n\t29689 - 19968: 0xE0FB,\n\t29693 - 19968: 0xEFEA,\n\t29694 - 19968: 0xFADE,\n\t29697 - 19968: 0xE0C4,\n\t29699 - 19968: 0xCFB9,\n\t29701 - 19968: 0xD5CA,\n\t29702 - 19968: 0xD7E2,\n\t29703 - 19968: 0xE2AF,\n\t29705 - 19968: 0xD7B8,\n\t29715 - 19968: 0xE8CD,\n\t29723 - 19968: 0xF6DA,\n\t29728 - 19968: 0xEFA2,\n\t29729 - 19968: 0xE2DA,\n\t29730 - 19968: 0xF6FC,\n\t29733 - 19968: 0xFBD0,\n\t29734 - 19968: 0xD1AD,\n\t29736 - 19968: 0xCDE4,\n\t29738 - 19968: 0xD1AE,\n\t29739 - 19968: 0xDCED,\n\t29740 - 19968: 0xE8CE,\n\t29742 - 19968: 0xF0F9,\n\t29743 - 19968: 0xCEB5,\n\t29744 - 19968: 0xE6FC,\n\t29747 - 19968: 0xD7FB,\n\t29748 - 19968: 0xD0D6,\n\t29749 - 19968: 0xDDF5,\n\t29750 - 19968: 0xF7F1,\n\t29752 - 19968: 0xF6FD,\n\t29754 - 19968: 0xDBF7,\n\t29759 - 19968: 0xFBEA,\n\t29760 - 19968: 0xE9DC,\n\t29761 - 19968: 0xD9C1,\n\t29763 - 19968: 0xF5F2,\n\t29764 - 19968: 0xE0C5,\n\t29771 - 19968: 0xEAD4,\n\t29781 - 19968: 0xF9C2,\n\t29783 - 19968: 0xEABC,\n\t29785 - 19968: 0xD2C5,\n\t29786 - 19968: 0xFBD1,\n\t29787 - 19968: 0xE7C0,\n\t29788 - 19968: 0xEBA5,\n\t29790 - 19968: 0xDFFA,\n\t29791 - 19968: 0xE3A2,\n\t29792 - 19968: 0xD7B9,\n\t29794 - 19968: 0xE9C3,\n\t29796 - 19968: 0xE8FD,\n\t29797 - 19968: 0xE8AF,\n\t29800 - 19968: 0xF2D3,\n\t29801 - 19968: 0xFBA9,\n\t29802 - 19968: 0xD8A5,\n\t29807 - 19968: 0xD5CB,\n\t29822 - 19968: 0xD0C8,\n\t29826 - 19968: 0xD1AF,\n\t29827 - 19968: 0xD7E3,\n\t29831 - 19968: 0xE0C6,\n\t29833 - 19968: 0xD6A2,\n\t29835 - 19968: 0xEDF0,\n\t29848 - 19968: 0xD7F3,\n\t29852 - 19968: 0xFCD4,\n\t29854 - 19968: 0xDAD7,\n\t29855 - 19968: 0xCCDF,\n\t29857 - 19968: 0xF2D4,\n\t29859 - 19968: 0xD1B0,\n\t29861 - 19968: 0xCCE0,\n\t29863 - 19968: 0xDBFD,\n\t29864 - 19968: 0xF3BF,\n\t29866 - 19968: 0xF0D1,\n\t29872 - 19968: 0xFCBB,\n\t29874 - 19968: 0xE2B0,\n\t29877 - 19968: 0xE6A5,\n\t29881 - 19968: 0xE2DB,\n\t29885 - 19968: 0xDFDE,\n\t29887 - 19968: 0xE0C7,\n\t29894 - 19968: 0xF2EF,\n\t29898 - 19968: 0xCCE1,\n\t29903 - 19968: 0xD6EA,\n\t29908 - 19968: 0xE7C2,\n\t29912 - 19968: 0xCEB6,\n\t29914 - 19968: 0xF3C0,\n\t29916 - 19968: 0xCDFE,\n\t29920 - 19968: 0xFBD2,\n\t29922 - 19968: 0xF8F8,\n\t29923 - 19968: 0xF7FB,\n\t29926 - 19968: 0xE8BF,\n\t29934 - 19968: 0xE8B7,\n\t29943 - 19968: 0xEDB6,\n\t29953 - 19968: 0xDCBA,\n\t29956 - 19968: 0xCCB4,\n\t29969 - 19968: 0xF1F7,\n\t29973 - 19968: 0xE8B8,\n\t29976 - 19968: 0xCAF6,\n\t29978 - 19968: 0xE4A4,\n\t29979 - 19968: 0xF4D6,\n\t29983 - 19968: 0xDFE6,\n\t29987 - 19968: 0xDFA7,\n\t29989 - 19968: 0xDFE7,\n\t29990 - 19968: 0xE1C1,\n\t29992 - 19968: 0xE9C4,\n\t29995 - 19968: 0xDCCB,\n\t29996 - 19968: 0xE9C5,\n\t30000 - 19968: 0xEFA3,\n\t30001 - 19968: 0xEBA6,\n\t30002 - 19968: 0xCBA3,\n\t30003 - 19968: 0xE3E9,\n\t30007 - 19968: 0xD1FB,\n\t30008 - 19968: 0xEFA4,\n\t30010 - 19968: 0xEFEB,\n\t30023 - 19968: 0xD0B4,\n\t30028 - 19968: 0xCDA3,\n\t30031 - 19968: 0xE8E6,\n\t30033 - 19968: 0xEFA5,\n\t30035 - 19968: 0xD3CC,\n\t30036 - 19968: 0xDAED,\n\t30041 - 19968: 0xD7BA,\n\t30043 - 19968: 0xF2D5,\n\t30044 - 19968: 0xF5E5,\n\t30045 - 19968: 0xD9EF,\n\t30050 - 19968: 0xF9B4,\n\t30053 - 19968: 0xD5D4,\n\t30054 - 19968: 0xFDCF,\n\t30058 - 19968: 0xDBE3,\n\t30063 - 19968: 0xF1E1,\n\t30064 - 19968: 0xECB6,\n\t30069 - 19968: 0xFBFE,\n\t30070 - 19968: 0xD3D7,\n\t30072 - 19968: 0xD1B1,\n\t30074 - 19968: 0xCBB1,\n\t30079 - 19968: 0xD1B2,\n\t30086 - 19968: 0xCBB2,\n\t30087 - 19968: 0xF1C2,\n\t30090 - 19968: 0xF4E1,\n\t30091 - 19968: 0xF9B5,\n\t30094 - 19968: 0xE1C3,\n\t30095 - 19968: 0xE1C2,\n\t30097 - 19968: 0xEBF7,\n\t30109 - 19968: 0xDFA8,\n\t30117 - 19968: 0xCBCA,\n\t30123 - 19968: 0xE6B9,\n\t30129 - 19968: 0xF8DE,\n\t30130 - 19968: 0xF9AA,\n\t30131 - 19968: 0xCAF7,\n\t30133 - 19968: 0xEDB7,\n\t30136 - 19968: 0xD3B8,\n\t30137 - 19968: 0xF2D6,\n\t30140 - 19968: 0xD4D9,\n\t30141 - 19968: 0xEEC5,\n\t30142 - 19968: 0xF2F0,\n\t30146 - 19968: 0xCAB2,\n\t30149 - 19968: 0xDCBB,\n\t30151 - 19968: 0xF1F8,\n\t30157 - 19968: 0xECB7,\n\t30162 - 19968: 0xE5CA,\n\t30164 - 19968: 0xF6C0,\n\t30165 - 19968: 0xFDDD,\n\t30168 - 19968: 0xD4E3,\n\t30169 - 19968: 0xCCE2,\n\t30171 - 19968: 0xF7D4,\n\t30178 - 19968: 0xD7E5,\n\t30192 - 19968: 0xD3C3,\n\t30194 - 19968: 0xD8A6,\n\t30196 - 19968: 0xF6C1,\n\t30202 - 19968: 0xDDF6,\n\t30204 - 19968: 0xCDC0,\n\t30208 - 19968: 0xE5DC,\n\t30221 - 19968: 0xE5CB,\n\t30233 - 19968: 0xE1C4,\n\t30239 - 19968: 0xE8B0,\n\t30240 - 19968: 0xF4B0,\n\t30241 - 19968: 0xF3EA,\n\t30242 - 19968: 0xDAEE,\n\t30244 - 19968: 0xD7BB,\n\t30246 - 19968: 0xE2B1,\n\t30267 - 19968: 0xD7AA,\n\t30274 - 19968: 0xD6FB,\n\t30284 - 19968: 0xE4DF,\n\t30286 - 19968: 0xCAD6,\n\t30290 - 19968: 0xEBA8,\n\t30294 - 19968: 0xDBFE,\n\t30305 - 19968: 0xF6C2,\n\t30308 - 19968: 0xEFBB,\n\t30313 - 19968: 0xD4FD,\n\t30316 - 19968: 0xE0C8,\n\t30320 - 19968: 0xE8B9,\n\t30322 - 19968: 0xEFA6,\n\t30328 - 19968: 0xCDA4,\n\t30331 - 19968: 0xD4F4,\n\t30332 - 19968: 0xDBA1,\n\t30333 - 19968: 0xDBDC,\n\t30334 - 19968: 0xDBDD,\n\t30340 - 19968: 0xEEDC,\n\t30342 - 19968: 0xCBCB,\n\t30343 - 19968: 0xFCD5,\n\t30350 - 19968: 0xCEEB,\n\t30352 - 19968: 0xCDC1,\n\t30355 - 19968: 0xFBD3,\n\t30382 - 19968: 0xF9AB,\n\t30394 - 19968: 0xF5D4,\n\t30399 - 19968: 0xD9A9,\n\t30402 - 19968: 0xE9DD,\n\t30403 - 19968: 0xDBCD,\n\t30406 - 19968: 0xDDCE,\n\t30408 - 19968: 0xE7C3,\n\t30410 - 19968: 0xECCC,\n\t30418 - 19968: 0xF9EC,\n\t30422 - 19968: 0xCBCC,\n\t30427 - 19968: 0xE0FC,\n\t30428 - 19968: 0xD4A8,\n\t30430 - 19968: 0xEDD3,\n\t30431 - 19968: 0xD8EF,\n\t30433 - 19968: 0xF2D7,\n\t30435 - 19968: 0xCAF8,\n\t30436 - 19968: 0xDAEF,\n\t30439 - 19968: 0xD6D4,\n\t30446 - 19968: 0xD9CD,\n\t30450 - 19968: 0xD8EE,\n\t30452 - 19968: 0xF2C1,\n\t30456 - 19968: 0xDFD3,\n\t30460 - 19968: 0xDAF0,\n\t30462 - 19968: 0xE2EA,\n\t30465 - 19968: 0xE0FD,\n\t30468 - 19968: 0xD8F8,\n\t30472 - 19968: 0xF7AF,\n\t30473 - 19968: 0xDAB6,\n\t30475 - 19968: 0xCAD7,\n\t30494 - 19968: 0xF2D8,\n\t30496 - 19968: 0xD8F9,\n\t30505 - 19968: 0xFADF,\n\t30519 - 19968: 0xCFEF,\n\t30520 - 19968: 0xD9C2,\n\t30522 - 19968: 0xF0D2,\n\t30524 - 19968: 0xE4D1,\n\t30528 - 19968: 0xF3B7,\n\t30541 - 19968: 0xFAE0,\n\t30555 - 19968: 0xEFEC,\n\t30561 - 19968: 0xE2B2,\n\t30563 - 19968: 0xD4BD,\n\t30566 - 19968: 0xD9CE,\n\t30571 - 19968: 0xF4E2,\n\t30585 - 19968: 0xD4A9,\n\t30590 - 19968: 0xCDC2,\n\t30591 - 19968: 0xE7DA,\n\t30603 - 19968: 0xF2D9,\n\t30609 - 19968: 0xD9AA,\n\t30622 - 19968: 0xD8BE,\n\t30629 - 19968: 0xDCAD,\n\t30636 - 19968: 0xE2EB,\n\t30637 - 19968: 0xD6FC,\n\t30640 - 19968: 0xCAF9,\n\t30643 - 19968: 0xD4DA,\n\t30651 - 19968: 0xF4D7,\n\t30652 - 19968: 0xCCA1,\n\t30655 - 19968: 0xCFBA,\n\t30679 - 19968: 0xF5B8,\n\t30683 - 19968: 0xD9C3,\n\t30684 - 19968: 0xD0E8,\n\t30690 - 19968: 0xE3C5,\n\t30691 - 19968: 0xEBF8,\n\t30693 - 19968: 0xF2B1,\n\t30697 - 19968: 0xCFBB,\n\t30701 - 19968: 0xD3AD,\n\t30702 - 19968: 0xE8E1,\n\t30703 - 19968: 0xCEEC,\n\t30707 - 19968: 0xE0B4,\n\t30722 - 19968: 0xDEE3,\n\t30738 - 19968: 0xDDF7,\n\t30757 - 19968: 0xF2B2,\n\t30758 - 19968: 0xF3F6,\n\t30759 - 19968: 0xF6DB,\n\t30764 - 19968: 0xD7FE,\n\t30770 - 19968: 0xF8DF,\n\t30772 - 19968: 0xF7F2,\n\t30789 - 19968: 0xD0A9,\n\t30799 - 19968: 0xE6DA,\n\t30813 - 19968: 0xF5A6,\n\t30827 - 19968: 0xD7BC,\n\t30828 - 19968: 0xCCE3,\n\t30831 - 19968: 0xE6DB,\n\t30844 - 19968: 0xDDDD,\n\t30849 - 19968: 0xD1B3,\n\t30855 - 19968: 0xEFED,\n\t30860 - 19968: 0xD6DE,\n\t30861 - 19968: 0xE4F4,\n\t30862 - 19968: 0xE1EF,\n\t30865 - 19968: 0xDDF8,\n\t30871 - 19968: 0xE8CF,\n\t30883 - 19968: 0xCAE5,\n\t30887 - 19968: 0xDCA1,\n\t30889 - 19968: 0xE0B5,\n\t30906 - 19968: 0xFCAC,\n\t30907 - 19968: 0xFCAD,\n\t30908 - 19968: 0xD8A7,\n\t30913 - 19968: 0xEDB8,\n\t30917 - 19968: 0xDBB6,\n\t30922 - 19968: 0xD6F0,\n\t30923 - 19968: 0xF3AF,\n\t30926 - 19968: 0xCDA5,\n\t30928 - 19968: 0xDAF1,\n\t30952 - 19968: 0xD8A8,\n\t30956 - 19968: 0xCCE4,\n\t30959 - 19968: 0xD1B4,\n\t30965 - 19968: 0xCAD8,\n\t30971 - 19968: 0xDAF2,\n\t30977 - 19968: 0xF5A7,\n\t30990 - 19968: 0xF5A8,\n\t30998 - 19968: 0xE6A6,\n\t31018 - 19968: 0xD5EC,\n\t31019 - 19968: 0xD5F8,\n\t31020 - 19968: 0xDAF3,\n\t31034 - 19968: 0xE3C6,\n\t31038 - 19968: 0xDEE4,\n\t31040 - 19968: 0xDEE5,\n\t31041 - 19968: 0xD1B5,\n\t31047 - 19968: 0xD1B6,\n\t31048 - 19968: 0xD1B7,\n\t31049 - 19968: 0xF2B3,\n\t31056 - 19968: 0xE9DE,\n\t31062 - 19968: 0xF0D3,\n\t31063 - 19968: 0xF2B4,\n\t31066 - 19968: 0xF0D4,\n\t31067 - 19968: 0xCBE4,\n\t31068 - 19968: 0xFBD4,\n\t31069 - 19968: 0xF5E6,\n\t31070 - 19968: 0xE3EA,\n\t31072 - 19968: 0xDEE6,\n\t31077 - 19968: 0xDFD4,\n\t31080 - 19968: 0xF8F9,\n\t31085 - 19968: 0xF0AE,\n\t31098 - 19968: 0xD1B8,\n\t31103 - 19968: 0xD6DF,\n\t31105 - 19968: 0xD0D7,\n\t31117 - 19968: 0xFCA1,\n\t31118 - 19968: 0xEFEE,\n\t31119 - 19968: 0xDCD8,\n\t31121 - 19968: 0xE9DF,\n\t31142 - 19968: 0xE5DD,\n\t31143 - 19968: 0xFDFB,\n\t31146 - 19968: 0xE0C9,\n\t31150 - 19968: 0xD6C9,\n\t31153 - 19968: 0xD4AA,\n\t31155 - 19968: 0xE5CC,\n\t31161 - 19968: 0xE9E0,\n\t31165 - 19968: 0xD0D8,\n\t31166 - 19968: 0xFCA2,\n\t31167 - 19968: 0xD4BE,\n\t31168 - 19968: 0xE2B3,\n\t31169 - 19968: 0xDEE7,\n\t31177 - 19968: 0xDCBC,\n\t31178 - 19968: 0xD2B6,\n\t31179 - 19968: 0xF5D5,\n\t31185 - 19968: 0xCEA1,\n\t31186 - 19968: 0xF5A9,\n\t31189 - 19968: 0xDDF9,\n\t31192 - 19968: 0xDDFA,\n\t31199 - 19968: 0xF0D5,\n\t31204 - 19968: 0xF6DF,\n\t31206 - 19968: 0xF2DA,\n\t31207 - 19968: 0xE4EB,\n\t31209 - 19968: 0xF2F1,\n\t31227 - 19968: 0xECB9,\n\t31232 - 19968: 0xFDFC,\n\t31237 - 19968: 0xE1AA,\n\t31240 - 19968: 0xCAD9,\n\t31243 - 19968: 0xEFEF,\n\t31245 - 19968: 0xF5AA,\n\t31252 - 19968: 0xECF9,\n\t31255 - 19968: 0xF8AD,\n\t31257 - 19968: 0xF2C2,\n\t31258 - 19968: 0xF6C3,\n\t31260 - 19968: 0xD7D2,\n\t31263 - 19968: 0xF9A2,\n\t31264 - 19968: 0xF0D6,\n\t31278 - 19968: 0xF0FA,\n\t31281 - 19968: 0xF6E0,\n\t31286 - 19968: 0xE9F3,\n\t31287 - 19968: 0xF2C3,\n\t31291 - 19968: 0xD4AB,\n\t31292 - 19968: 0xCAB3,\n\t31293 - 19968: 0xCDA6,\n\t31295 - 19968: 0xCDC3,\n\t31296 - 19968: 0xCDDA,\n\t31302 - 19968: 0xD9CF,\n\t31305 - 19968: 0xF6C4,\n\t31309 - 19968: 0xEEDD,\n\t31310 - 19968: 0xE7C4,\n\t31319 - 19968: 0xE2B4,\n\t31329 - 19968: 0xDFE2,\n\t31330 - 19968: 0xE7DB,\n\t31337 - 19968: 0xE8B1,\n\t31339 - 19968: 0xFCAE,\n\t31344 - 19968: 0xE5CD,\n\t31348 - 19968: 0xFAEB,\n\t31350 - 19968: 0xCFBC,\n\t31353 - 19968: 0xCFE2,\n\t31354 - 19968: 0xCDF6,\n\t31357 - 19968: 0xEFF0,\n\t31359 - 19968: 0xF4BE,\n\t31361 - 19968: 0xD4CD,\n\t31364 - 19968: 0xF3B8,\n\t31368 - 19968: 0xE9A1,\n\t31378 - 19968: 0xF2F2,\n\t31379 - 19968: 0xF3EB,\n\t31381 - 19968: 0xF0D7,\n\t31384 - 19968: 0xCFD7,\n\t31391 - 19968: 0xCFDF,\n\t31401 - 19968: 0xE8C0,\n\t31402 - 19968: 0xE8C1,\n\t31406 - 19968: 0xCFE3,\n\t31407 - 19968: 0xE9A2,\n\t31418 - 19968: 0xD0AA,\n\t31428 - 19968: 0xF3C1,\n\t31429 - 19968: 0xD0AB,\n\t31431 - 19968: 0xD4E4,\n\t31434 - 19968: 0xEFBC,\n\t31435 - 19968: 0xD8A1,\n\t31447 - 19968: 0xD9DF,\n\t31449 - 19968: 0xF3D7,\n\t31453 - 19968: 0xDCBD,\n\t31455 - 19968: 0xCCE5,\n\t31456 - 19968: 0xEDF1,\n\t31459 - 19968: 0xF1E2,\n\t31461 - 19968: 0xD4DB,\n\t31466 - 19968: 0xE2B5,\n\t31469 - 19968: 0xCAE6,\n\t31471 - 19968: 0xD3AE,\n\t31478 - 19968: 0xCCE6,\n\t31481 - 19968: 0xF1D3,\n\t31482 - 19968: 0xF5E7,\n\t31487 - 19968: 0xCADA,\n\t31503 - 19968: 0xFBEE,\n\t31505 - 19968: 0xE1C5,\n\t31513 - 19968: 0xDFE9,\n\t31515 - 19968: 0xEEDE,\n\t31518 - 19968: 0xF7C2,\n\t31520 - 19968: 0xD8A2,\n\t31526 - 19968: 0xDDAC,\n\t31532 - 19968: 0xF0AF,\n\t31533 - 19968: 0xD6BD,\n\t31545 - 19968: 0xE1AB,\n\t31558 - 19968: 0xF9B6,\n\t31561 - 19968: 0xD4F5,\n\t31563 - 19968: 0xD0C9,\n\t31564 - 19968: 0xEFA7,\n\t31565 - 19968: 0xE2EC,\n\t31567 - 19968: 0xDBEA,\n\t31568 - 19968: 0xCECC,\n\t31569 - 19968: 0xF5E8,\n\t31570 - 19968: 0xF7D5,\n\t31572 - 19968: 0xD3CD,\n\t31574 - 19968: 0xF3FE,\n\t31584 - 19968: 0xD0B5,\n\t31596 - 19968: 0xE0FE,\n\t31598 - 19968: 0xDFFB,\n\t31605 - 19968: 0xE6DD,\n\t31613 - 19968: 0xE8A4,\n\t31623 - 19968: 0xCBCD,\n\t31627 - 19968: 0xEFA8,\n\t31631 - 19968: 0xEEB4,\n\t31636 - 19968: 0xDAD8,\n\t31637 - 19968: 0xD1B9,\n\t31639 - 19968: 0xDFA9,\n\t31642 - 19968: 0xF3B0,\n\t31645 - 19968: 0xCCC4,\n\t31649 - 19968: 0xCEB7,\n\t31661 - 19968: 0xEFA9,\n\t31665 - 19968: 0xDFD5,\n\t31668 - 19968: 0xEDD7,\n\t31672 - 19968: 0xEEC6,\n\t31680 - 19968: 0xEFBD,\n\t31681 - 19968: 0xFCD6,\n\t31684 - 19968: 0xDBF4,\n\t31686 - 19968: 0xEFAA,\n\t31687 - 19968: 0xF8B9,\n\t31689 - 19968: 0xF5E9,\n\t31698 - 19968: 0xE3D9,\n\t31712 - 19968: 0xE1C6,\n\t31716 - 19968: 0xD4BF,\n\t31721 - 19968: 0xDEE8,\n\t31751 - 19968: 0xF0EA,\n\t31762 - 19968: 0xF3C2,\n\t31774 - 19968: 0xD3AF,\n\t31777 - 19968: 0xCADB,\n\t31783 - 19968: 0xFCD7,\n\t31786 - 19968: 0xEDD8,\n\t31787 - 19968: 0xE1C7,\n\t31805 - 19968: 0xF4D8,\n\t31806 - 19968: 0xD6B3,\n\t31807 - 19968: 0xDDAD,\n\t31811 - 19968: 0xD5BE,\n\t31820 - 19968: 0xF1C3,\n\t31821 - 19968: 0xEEDF,\n\t31840 - 19968: 0xD6EB,\n\t31844 - 19968: 0xF4D9,\n\t31852 - 19968: 0xD7E6,\n\t31859 - 19968: 0xDAB7,\n\t31875 - 19968: 0xDDFB,\n\t31881 - 19968: 0xDDCF,\n\t31890 - 19968: 0xD8A3,\n\t31893 - 19968: 0xDAD9,\n\t31895 - 19968: 0xF0D8,\n\t31896 - 19968: 0xEFC4,\n\t31903 - 19968: 0xE1D8,\n\t31909 - 19968: 0xF1D4,\n\t31911 - 19968: 0xEDF2,\n\t31918 - 19968: 0xD5DB,\n\t31921 - 19968: 0xD5DC,\n\t31922 - 19968: 0xF3C4,\n\t31923 - 19968: 0xCBD7,\n\t31929 - 19968: 0xE2B6,\n\t31934 - 19968: 0xEFF1,\n\t31946 - 19968: 0xFBD5,\n\t31958 - 19968: 0xD3D8,\n\t31966 - 19968: 0xDDD0,\n\t31967 - 19968: 0xF0D9,\n\t31968 - 19968: 0xCBB3,\n\t31975 - 19968: 0xD5DD,\n\t31995 - 19968: 0xCDA7,\n\t31998 - 19968: 0xD0AC,\n\t32000 - 19968: 0xD1BA,\n\t32002 - 19968: 0xF1C4,\n\t32004 - 19968: 0xE5B3,\n\t32005 - 19968: 0xFBF5,\n\t32006 - 19968: 0xE9E1,\n\t32007 - 19968: 0xFDE0,\n\t32008 - 19968: 0xFCBC,\n\t32010 - 19968: 0xDAA2,\n\t32011 - 19968: 0xDAA3,\n\t32013 - 19968: 0xD2A1,\n\t32016 - 19968: 0xD2EF,\n\t32020 - 19968: 0xE2ED,\n\t32023 - 19968: 0xDEE9,\n\t32024 - 19968: 0xCEDC,\n\t32025 - 19968: 0xF2B5,\n\t32026 - 19968: 0xD0E4,\n\t32027 - 19968: 0xDDD1,\n\t32032 - 19968: 0xE1C8,\n\t32033 - 19968: 0xDBB7,\n\t32034 - 19968: 0xDFE3,\n\t32043 - 19968: 0xEDB9,\n\t32044 - 19968: 0xF1C5,\n\t32046 - 19968: 0xF3CF,\n\t32047 - 19968: 0xD7AB,\n\t32048 - 19968: 0xE1AC,\n\t32051 - 19968: 0xE3EB,\n\t32053 - 19968: 0xEEC7,\n\t32057 - 19968: 0xE1C9,\n\t32058 - 19968: 0xCAFA,\n\t32066 - 19968: 0xF0FB,\n\t32067 - 19968: 0xFAE1,\n\t32068 - 19968: 0xF0DA,\n\t32069 - 19968: 0xCCE7,\n\t32070 - 19968: 0xDAF4,\n\t32080 - 19968: 0xCCBF,\n\t32094 - 19968: 0xCEED,\n\t32097 - 19968: 0xD5A9,\n\t32098 - 19968: 0xFAE2,\n\t32102 - 19968: 0xD0E5,\n\t32104 - 19968: 0xEBD6,\n\t32106 - 19968: 0xECDF,\n\t32110 - 19968: 0xDFFC,\n\t32113 - 19968: 0xF7D6,\n\t32114 - 19968: 0xDEEA,\n\t32115 - 19968: 0xCBB4,\n\t32118 - 19968: 0xEFBE,\n\t32121 - 19968: 0xCCB5,\n\t32127 - 19968: 0xCFBD,\n\t32142 - 19968: 0xEFF2,\n\t32143 - 19968: 0xE2B7,\n\t32147 - 19968: 0xCCE8,\n\t32156 - 19968: 0xF0FC,\n\t32160 - 19968: 0xD6E0,\n\t32162 - 19968: 0xF1C6,\n\t32172 - 19968: 0xE2B8,\n\t32173 - 19968: 0xEBAB,\n\t32177 - 19968: 0xCBB5,\n\t32178 - 19968: 0xD8D1,\n\t32180 - 19968: 0xF4CE,\n\t32181 - 19968: 0xF3F7,\n\t32184 - 19968: 0xD7C6,\n\t32186 - 19968: 0xD1BB,\n\t32187 - 19968: 0xF7AA,\n\t32189 - 19968: 0xEDCA,\n\t32190 - 19968: 0xD7D3,\n\t32191 - 19968: 0xD8FA,\n\t32199 - 19968: 0xF6C5,\n\t32202 - 19968: 0xD1CC,\n\t32203 - 19968: 0xDDFC,\n\t32214 - 19968: 0xDFFD,\n\t32216 - 19968: 0xF9E5,\n\t32218 - 19968: 0xE0CA,\n\t32221 - 19968: 0xF2FD,\n\t32222 - 19968: 0xD3B0,\n\t32224 - 19968: 0xF4F3,\n\t32225 - 19968: 0xDAC9,\n\t32227 - 19968: 0xE6DE,\n\t32232 - 19968: 0xF8BA,\n\t32233 - 19968: 0xE8D0,\n\t32236 - 19968: 0xD8FB,\n\t32239 - 19968: 0xEAD5,\n\t32244 - 19968: 0xD6A3,\n\t32251 - 19968: 0xF6C6,\n\t32265 - 19968: 0xF2DB,\n\t32266 - 19968: 0xE4FC,\n\t32277 - 19968: 0xE8B2,\n\t32283 - 19968: 0xDADA,\n\t32285 - 19968: 0xF2DC,\n\t32286 - 19968: 0xFBD6,\n\t32287 - 19968: 0xE9B2,\n\t32289 - 19968: 0xEEAD,\n\t32291 - 19968: 0xFAE3,\n\t32299 - 19968: 0xDCEE,\n\t32302 - 19968: 0xF5EA,\n\t32303 - 19968: 0xE6E0,\n\t32305 - 19968: 0xF0FD,\n\t32311 - 19968: 0xD7AC,\n\t32317 - 19968: 0xF5C5,\n\t32318 - 19968: 0xEEE0,\n\t32321 - 19968: 0xDBE5,\n\t32323 - 19968: 0xDDDE,\n\t32326 - 19968: 0xD9F0,\n\t32327 - 19968: 0xE9A3,\n\t32338 - 19968: 0xF1F9,\n\t32340 - 19968: 0xF2C4,\n\t32341 - 19968: 0xE0CB,\n\t32350 - 19968: 0xE9A4,\n\t32353 - 19968: 0xE2B9,\n\t32361 - 19968: 0xE3B1,\n\t32362 - 19968: 0xFCEB,\n\t32363 - 19968: 0xCDA8,\n\t32365 - 19968: 0xCCB6,\n\t32368 - 19968: 0xF0DB,\n\t32377 - 19968: 0xE6BA,\n\t32380 - 19968: 0xCDA9,\n\t32386 - 19968: 0xF3C3,\n\t32396 - 19968: 0xE1D9,\n\t32399 - 19968: 0xEFAB,\n\t32403 - 19968: 0xE7C5,\n\t32406 - 19968: 0xE0E9,\n\t32408 - 19968: 0xF3C5,\n\t32411 - 19968: 0xD4C0,\n\t32412 - 19968: 0xD5BF,\n\t32566 - 19968: 0xDDAE,\n\t32568 - 19968: 0xF9FC,\n\t32570 - 19968: 0xCCC0,\n\t32588 - 19968: 0xE5A2,\n\t32592 - 19968: 0xCEB8,\n\t32596 - 19968: 0xD8D2,\n\t32597 - 19968: 0xF9D6,\n\t32618 - 19968: 0xF1AA,\n\t32619 - 19968: 0xCED1,\n\t32622 - 19968: 0xF6C7,\n\t32624 - 19968: 0xDBEB,\n\t32626 - 19968: 0xDFFE,\n\t32629 - 19968: 0xD8E1,\n\t32631 - 19968: 0xF7F3,\n\t32633 - 19968: 0xD7E7,\n\t32645 - 19968: 0xD4FE,\n\t32648 - 19968: 0xD1BC,\n\t32650 - 19968: 0xE5CF,\n\t32652 - 19968: 0xCBB6,\n\t32654 - 19968: 0xDAB8,\n\t32660 - 19968: 0xCDC4,\n\t32666 - 19968: 0xD6BE,\n\t32670 - 19968: 0xE2BA,\n\t32676 - 19968: 0xCFD8,\n\t32680 - 19968: 0xE0CC,\n\t32681 - 19968: 0xEBF9,\n\t32690 - 19968: 0xFDFD,\n\t32696 - 19968: 0xD7E8,\n\t32697 - 19968: 0xCBD8,\n\t32701 - 19968: 0xE9E2,\n\t32705 - 19968: 0xE8BA,\n\t32709 - 19968: 0xE3C7,\n\t32714 - 19968: 0xECCD,\n\t32716 - 19968: 0xECCE,\n\t32718 - 19968: 0xD6BF,\n\t32722 - 19968: 0xE3A7,\n\t32724 - 19968: 0xDFD6,\n\t32725 - 19968: 0xFDE8,\n\t32735 - 19968: 0xEEE1,\n\t32736 - 19968: 0xF6A8,\n\t32737 - 19968: 0xDDFD,\n\t32745 - 19968: 0xF8BB,\n\t32747 - 19968: 0xE8D1,\n\t32752 - 19968: 0xF9D7,\n\t32761 - 19968: 0xCEEE,\n\t32764 - 19968: 0xECCF,\n\t32768 - 19968: 0xE9A5,\n\t32769 - 19968: 0xD6D5,\n\t32771 - 19968: 0xCDC5,\n\t32773 - 19968: 0xEDBA,\n\t32774 - 19968: 0xD1BD,\n\t32777 - 19968: 0xCFBE,\n\t32780 - 19968: 0xECBB,\n\t32784 - 19968: 0xD2B1,\n\t32789 - 19968: 0xCCE9,\n\t32791 - 19968: 0xD9C4,\n\t32792 - 19968: 0xE9FC,\n\t32813 - 19968: 0xD1BE,\n\t32819 - 19968: 0xECBC,\n\t32822 - 19968: 0xE5AD,\n\t32829 - 19968: 0xF7B0,\n\t32831 - 19968: 0xCCEA,\n\t32835 - 19968: 0xD3C4,\n\t32838 - 19968: 0xD6C0,\n\t32842 - 19968: 0xD6FD,\n\t32854 - 19968: 0xE1A1,\n\t32856 - 19968: 0xDEBD,\n\t32858 - 19968: 0xF6A9,\n\t32862 - 19968: 0xDAA4,\n\t32879 - 19968: 0xD6A4,\n\t32880 - 19968: 0xF5C6,\n\t32882 - 19968: 0xE1A2,\n\t32883 - 19968: 0xE9C6,\n\t32887 - 19968: 0xF2C5,\n\t32893 - 19968: 0xF4E9,\n\t32894 - 19968: 0xD6EC,\n\t32895 - 19968: 0xEBD3,\n\t32900 - 19968: 0xECBD,\n\t32901 - 19968: 0xE2DC,\n\t32902 - 19968: 0xDEEB,\n\t32903 - 19968: 0xF0DC,\n\t32905 - 19968: 0xEBBF,\n\t32907 - 19968: 0xD7CE,\n\t32908 - 19968: 0xD1BF,\n\t32918 - 19968: 0xF5AB,\n\t32923 - 19968: 0xF9FD,\n\t32925 - 19968: 0xCADC,\n\t32929 - 19968: 0xCDC6,\n\t32930 - 19968: 0xF2B6,\n\t32933 - 19968: 0xDDFE,\n\t32937 - 19968: 0xCCB7,\n\t32938 - 19968: 0xDBB8,\n\t32943 - 19968: 0xD0E9,\n\t32945 - 19968: 0xCEDD,\n\t32946 - 19968: 0xEBC0,\n\t32948 - 19968: 0xFDA2,\n\t32954 - 19968: 0xF8CB,\n\t32963 - 19968: 0xEAD6,\n\t32964 - 19968: 0xF1B0,\n\t32972 - 19968: 0xDBCE,\n\t32974 - 19968: 0xF7C3,\n\t32986 - 19968: 0xDBCF,\n\t32987 - 19968: 0xCBA4,\n\t32990 - 19968: 0xF8E0,\n\t32993 - 19968: 0xFBD7,\n\t32996 - 19968: 0xEBCA,\n\t32997 - 19968: 0xE0A1,\n\t33009 - 19968: 0xCECD,\n\t33012 - 19968: 0xD4DC,\n\t33016 - 19968: 0xFDD8,\n\t33021 - 19968: 0xD2F6,\n\t33026 - 19968: 0xF2B7,\n\t33029 - 19968: 0xFAF6,\n\t33030 - 19968: 0xF6AA,\n\t33031 - 19968: 0xFAF7,\n\t33032 - 19968: 0xD8E6,\n\t33034 - 19968: 0xF4B1,\n\t33048 - 19968: 0xE8D2,\n\t33050 - 19968: 0xCAC5,\n\t33051 - 19968: 0xCCEB,\n\t33059 - 19968: 0xE2EE,\n\t33065 - 19968: 0xE2BB,\n\t33067 - 19968: 0xF7AD,\n\t33071 - 19968: 0xF8E1,\n\t33081 - 19968: 0xF3EC,\n\t33086 - 19968: 0xDEA1,\n\t33099 - 19968: 0xE4FD,\n\t33102 - 19968: 0xE3EC,\n\t33104 - 19968: 0xDDAF,\n\t33105 - 19968: 0xDDB0,\n\t33108 - 19968: 0xCBB7,\n\t33109 - 19968: 0xE8D3,\n\t33125 - 19968: 0xE1A3,\n\t33126 - 19968: 0xD2E0,\n\t33131 - 19968: 0xF0FE,\n\t33136 - 19968: 0xE9A6,\n\t33137 - 19968: 0xCBF2,\n\t33144 - 19968: 0xEDF3,\n\t33145 - 19968: 0xDCD9,\n\t33146 - 19968: 0xE0CD,\n\t33151 - 19968: 0xF7DA,\n\t33152 - 19968: 0xDBB9,\n\t33160 - 19968: 0xCCAE,\n\t33162 - 19968: 0xDADB,\n\t33167 - 19968: 0xCDC7,\n\t33178 - 19968: 0xDDB1,\n\t33180 - 19968: 0xD8AF,\n\t33181 - 19968: 0xE3A3,\n\t33184 - 19968: 0xCEEF,\n\t33187 - 19968: 0xF2F3,\n\t33192 - 19968: 0xF8B3,\n\t33203 - 19968: 0xE0CE,\n\t33205 - 19968: 0xF5FD,\n\t33210 - 19968: 0xEBEC,\n\t33213 - 19968: 0xD3C5,\n\t33214 - 19968: 0xFCEC,\n\t33215 - 19968: 0xD2DB,\n\t33216 - 19968: 0xD4EB,\n\t33218 - 19968: 0xDEA2,\n\t33222 - 19968: 0xE5E6,\n\t33229 - 19968: 0xF0B0,\n\t33240 - 19968: 0xD5C4,\n\t33247 - 19968: 0xEDF4,\n\t33251 - 19968: 0xE3ED,\n\t33253 - 19968: 0xE8C2,\n\t33255 - 19968: 0xEDF5,\n\t33256 - 19968: 0xD7FC,\n\t33258 - 19968: 0xEDBB,\n\t33261 - 19968: 0xF6AB,\n\t33267 - 19968: 0xF2B8,\n\t33268 - 19968: 0xF6C8,\n\t33274 - 19968: 0xD3E6,\n\t33275 - 19968: 0xF2DD,\n\t33276 - 19968: 0xCFBF,\n\t33278 - 19968: 0xEBAC,\n\t33285 - 19968: 0xCFC0,\n\t33287 - 19968: 0xE6A8,\n\t33288 - 19968: 0xFDE9,\n\t33290 - 19968: 0xCFC1,\n\t33292 - 19968: 0xE0DF,\n\t33293 - 19968: 0xDEEC,\n\t33298 - 19968: 0xE0A2,\n\t33307 - 19968: 0xF4BF,\n\t33308 - 19968: 0xE2EF,\n\t33310 - 19968: 0xD9F1,\n\t33311 - 19968: 0xF1C7,\n\t33313 - 19968: 0xCBB8,\n\t33322 - 19968: 0xF9FE,\n\t33323 - 19968: 0xDBBA,\n\t33324 - 19968: 0xDAF5,\n\t33333 - 19968: 0xF6EC,\n\t33334 - 19968: 0xDADC,\n\t33335 - 19968: 0xFAE4,\n\t33337 - 19968: 0xE0CF,\n\t33344 - 19968: 0xDDB2,\n\t33349 - 19968: 0xE6A9,\n\t33351 - 19968: 0xEFF3,\n\t33369 - 19968: 0xF3ED,\n\t33380 - 19968: 0xEBFA,\n\t33382 - 19968: 0xF9E6,\n\t33390 - 19968: 0xCADD,\n\t33391 - 19968: 0xD5DE,\n\t33393 - 19968: 0xCADE,\n\t33394 - 19968: 0xDFE4,\n\t33398 - 19968: 0xE6FD,\n\t33400 - 19968: 0xF5AC,\n\t33406 - 19968: 0xE4F5,\n\t33419 - 19968: 0xE9E3,\n\t33421 - 19968: 0xEDCB,\n\t33422 - 19968: 0xCFE4,\n\t33426 - 19968: 0xD8D3,\n\t33433 - 19968: 0xDDB3,\n\t33434 - 19968: 0xD4EC,\n\t33437 - 19968: 0xF2B9,\n\t33439 - 19968: 0xDFB7,\n\t33445 - 19968: 0xCBCE,\n\t33446 - 19968: 0xFBD8,\n\t33449 - 19968: 0xD0D9,\n\t33452 - 19968: 0xDDD2,\n\t33453 - 19968: 0xF7F4,\n\t33454 - 19968: 0xE7DC,\n\t33455 - 19968: 0xE4A5,\n\t33457 - 19968: 0xFCA3,\n\t33459 - 19968: 0xDBBB,\n\t33463 - 19968: 0xF2BA,\n\t33464 - 19968: 0xE9FD,\n\t33465 - 19968: 0xD0CA,\n\t33467 - 19968: 0xF5D6,\n\t33468 - 19968: 0xD9C5,\n\t33469 - 19968: 0xE4B4,\n\t33471 - 19968: 0xEDA7,\n\t33489 - 19968: 0xEABD,\n\t33490 - 19968: 0xE6FE,\n\t33492 - 19968: 0xF7C4,\n\t33493 - 19968: 0xF5AD,\n\t33495 - 19968: 0xD9E0,\n\t33499 - 19968: 0xCAB4,\n\t33502 - 19968: 0xF8E2,\n\t33503 - 19968: 0xCFC2,\n\t33505 - 19968: 0xECBE,\n\t33509 - 19968: 0xE5B4,\n\t33510 - 19968: 0xCDC8,\n\t33511 - 19968: 0xEEC8,\n\t33521 - 19968: 0xE7C8,\n\t33533 - 19968: 0xCDC9,\n\t33534 - 19968: 0xF9B7,\n\t33537 - 19968: 0xF1E8,\n\t33538 - 19968: 0xD9F2,\n\t33539 - 19968: 0xDBF5,\n\t33540 - 19968: 0xCAB5,\n\t33541 - 19968: 0xD9C6,\n\t33545 - 19968: 0xD8C9,\n\t33559 - 19968: 0xD9AB,\n\t33576 - 19968: 0xEDBC,\n\t33579 - 19968: 0xD8D4,\n\t33583 - 19968: 0xDCDA,\n\t33585 - 19968: 0xE2BC,\n\t33588 - 19968: 0xFCED,\n\t33589 - 19968: 0xECE0,\n\t33590 - 19968: 0xD2FE,\n\t33592 - 19968: 0xE9C7,\n\t33593 - 19968: 0xE6AA,\n\t33600 - 19968: 0xE2F0,\n\t33607 - 19968: 0xFABB,\n\t33609 - 19968: 0xF5AE,\n\t33610 - 19968: 0xFBAA,\n\t33615 - 19968: 0xECFB,\n\t33617 - 19968: 0xECBF,\n\t33618 - 19968: 0xFCD8,\n\t33651 - 19968: 0xD4E5,\n\t33655 - 19968: 0xF9C3,\n\t33659 - 19968: 0xEEE2,\n\t33673 - 19968: 0xD7E9,\n\t33674 - 19968: 0xEDF6,\n\t33678 - 19968: 0xDEED,\n\t33686 - 19968: 0xCCEC,\n\t33688 - 19968: 0xE3EE,\n\t33694 - 19968: 0xE8D4,\n\t33698 - 19968: 0xFAF8,\n\t33705 - 19968: 0xDDB4,\n\t33706 - 19968: 0xE4B5,\n\t33707 - 19968: 0xD8B0,\n\t33725 - 19968: 0xD8D5,\n\t33729 - 19968: 0xF4EA,\n\t33733 - 19968: 0xCEB9,\n\t33737 - 19968: 0xD6E1,\n\t33738 - 19968: 0xCFD2,\n\t33740 - 19968: 0xD0B6,\n\t33747 - 19968: 0xCEA2,\n\t33750 - 19968: 0xF3EE,\n\t33756 - 19968: 0xF3F8,\n\t33769 - 19968: 0xDCCC,\n\t33771 - 19968: 0xD0CB,\n\t33775 - 19968: 0xFCA4,\n\t33776 - 19968: 0xCDCA,\n\t33777 - 19968: 0xD7D4,\n\t33778 - 19968: 0xDEA3,\n\t33780 - 19968: 0xE4E0,\n\t33785 - 19968: 0xEEC9,\n\t33789 - 19968: 0xE2DD,\n\t33795 - 19968: 0xF5FE,\n\t33796 - 19968: 0xD4AC,\n\t33802 - 19968: 0xD5D1,\n\t33804 - 19968: 0xD8F0,\n\t33805 - 19968: 0xF8C3,\n\t33806 - 19968: 0xEAD7,\n\t33833 - 19968: 0xF5D7,\n\t33836 - 19968: 0xD8BF,\n\t33841 - 19968: 0xFDC0,\n\t33848 - 19968: 0xEBAD,\n\t33853 - 19968: 0xD5AA,\n\t33865 - 19968: 0xE7A8,\n\t33879 - 19968: 0xEECA,\n\t33883 - 19968: 0xCAE7,\n\t33889 - 19968: 0xF8E3,\n\t33891 - 19968: 0xD4DD,\n\t33894 - 19968: 0xEAD8,\n\t33899 - 19968: 0xFBD9,\n\t33900 - 19968: 0xEDF7,\n\t33903 - 19968: 0xE5B5,\n\t33909 - 19968: 0xD0AD,\n\t33914 - 19968: 0xF1F1,\n\t33936 - 19968: 0xE2BD,\n\t33940 - 19968: 0xE3C8,\n\t33945 - 19968: 0xD9D5,\n\t33948 - 19968: 0xDFAA,\n\t33953 - 19968: 0xDBBC,\n\t33970 - 19968: 0xF8E4,\n\t33976 - 19968: 0xF1FA,\n\t33979 - 19968: 0xE5B6,\n\t33980 - 19968: 0xF3EF,\n\t33983 - 19968: 0xFBDA,\n\t33984 - 19968: 0xE1E0,\n\t33986 - 19968: 0xD9AC,\n\t33988 - 19968: 0xF5EB,\n\t33990 - 19968: 0xE0B6,\n\t33993 - 19968: 0xE9C8,\n\t33995 - 19968: 0xCBCF,\n\t33997 - 19968: 0xE3C9,\n\t34001 - 19968: 0xDEEE,\n\t34010 - 19968: 0xE2BE,\n\t34028 - 19968: 0xDCEF,\n\t34030 - 19968: 0xD6A5,\n\t34036 - 19968: 0xE2F1,\n\t34044 - 19968: 0xD6FE,\n\t34065 - 19968: 0xD9A1,\n\t34067 - 19968: 0xD8C0,\n\t34068 - 19968: 0xDCDB,\n\t34071 - 19968: 0xEDBD,\n\t34072 - 19968: 0xDFB8,\n\t34074 - 19968: 0xEAA5,\n\t34078 - 19968: 0xD7AD,\n\t34081 - 19968: 0xF3F9,\n\t34083 - 19968: 0xEDF8,\n\t34085 - 19968: 0xF5C7,\n\t34092 - 19968: 0xE1CA,\n\t34093 - 19968: 0xEBE3,\n\t34095 - 19968: 0xF2DE,\n\t34109 - 19968: 0xF8CC,\n\t34111 - 19968: 0xEAD9,\n\t34113 - 19968: 0xD3C6,\n\t34115 - 19968: 0xDBE6,\n\t34121 - 19968: 0xF5AF,\n\t34126 - 19968: 0xCEF0,\n\t34131 - 19968: 0xE9FE,\n\t34137 - 19968: 0xFBB6,\n\t34147 - 19968: 0xE2F2,\n\t34152 - 19968: 0xCFF2,\n\t34153 - 19968: 0xF7B9,\n\t34154 - 19968: 0xD9F3,\n\t34157 - 19968: 0xE1CB,\n\t34180 - 19968: 0xDADD,\n\t34183 - 19968: 0xDAB9,\n\t34191 - 19968: 0xEBFB,\n\t34193 - 19968: 0xCBB9,\n\t34196 - 19968: 0xEDF9,\n\t34203 - 19968: 0xE0E0,\n\t34214 - 19968: 0xF4C0,\n\t34216 - 19968: 0xFDBC,\n\t34217 - 19968: 0xDFB1,\n\t34218 - 19968: 0xE3EF,\n\t34223 - 19968: 0xE0A3,\n\t34224 - 19968: 0xFDB9,\n\t34234 - 19968: 0xF0B1,\n\t34241 - 19968: 0xCDCB,\n\t34249 - 19968: 0xEDBE,\n\t34253 - 19968: 0xD5C0,\n\t34254 - 19968: 0xE3F0,\n\t34255 - 19968: 0xEDFA,\n\t34261 - 19968: 0xE9E4,\n\t34268 - 19968: 0xD5ED,\n\t34269 - 19968: 0xE7DD,\n\t34276 - 19968: 0xD4F6,\n\t34277 - 19968: 0xE5B7,\n\t34281 - 19968: 0xDBE7,\n\t34282 - 19968: 0xE2BF,\n\t34295 - 19968: 0xEECB,\n\t34298 - 19968: 0xD7F4,\n\t34299 - 19968: 0xF0DD,\n\t34303 - 19968: 0xCEAB,\n\t34306 - 19968: 0xE7DE,\n\t34310 - 19968: 0xD6D6,\n\t34311 - 19968: 0xE1CC,\n\t34314 - 19968: 0xE8B3,\n\t34326 - 19968: 0xE5EE,\n\t34327 - 19968: 0xDCA2,\n\t34330 - 19968: 0xE0D0,\n\t34349 - 19968: 0xD5B5,\n\t34367 - 19968: 0xD5A1,\n\t34382 - 19968: 0xFBDB,\n\t34384 - 19968: 0xF9CB,\n\t34388 - 19968: 0xCBF3,\n\t34389 - 19968: 0xF4A5,\n\t34395 - 19968: 0xFAC8,\n\t34396 - 19968: 0xD6D7,\n\t34398 - 19968: 0xE9E5,\n\t34399 - 19968: 0xFBDC,\n\t34407 - 19968: 0xFDD0,\n\t34425 - 19968: 0xFBF6,\n\t34442 - 19968: 0xDAA5,\n\t34444 - 19968: 0xDBBD,\n\t34451 - 19968: 0xECE2,\n\t34467 - 19968: 0xCDF7,\n\t34468 - 19968: 0xF0DE,\n\t34473 - 19968: 0xF6C9,\n\t34503 - 19968: 0xDEEF,\n\t34507 - 19968: 0xD3B1,\n\t34516 - 19968: 0xFCEE,\n\t34521 - 19968: 0xE8C3,\n\t34523 - 19968: 0xF1C8,\n\t34527 - 19968: 0xCEF1,\n\t34532 - 19968: 0xF9ED,\n\t34541 - 19968: 0xF2F4,\n\t34558 - 19968: 0xE4B6,\n\t34560 - 19968: 0xF5B9,\n\t34562 - 19968: 0xDCF0,\n\t34563 - 19968: 0xE3F1,\n\t34568 - 19968: 0xE8A5,\n\t34584 - 19968: 0xF2BB,\n\t34586 - 19968: 0xDEA4,\n\t34588 - 19968: 0xDACC,\n\t34638 - 19968: 0xCAE9,\n\t34645 - 19968: 0xE3DA,\n\t34647 - 19968: 0xFCD9,\n\t34655 - 19968: 0xEADA,\n\t34662 - 19968: 0xF9C4,\n\t34664 - 19968: 0xE3A4,\n\t34676 - 19968: 0xFBDD,\n\t34678 - 19968: 0xEFCA,\n\t34680 - 19968: 0xE8C4,\n\t34690 - 19968: 0xD5CC,\n\t34701 - 19968: 0xEBD7,\n\t34719 - 19968: 0xD9AD,\n\t34722 - 19968: 0xFBAB,\n\t34739 - 19968: 0xD3D9,\n\t34746 - 19968: 0xD5A2,\n\t34756 - 19968: 0xF6DE,\n\t34784 - 19968: 0xDAF6,\n\t34796 - 19968: 0xE0D1,\n\t34799 - 19968: 0xE9A8,\n\t34802 - 19968: 0xF5F9,\n\t34809 - 19968: 0xFAAF,\n\t34811 - 19968: 0xEBFC,\n\t34814 - 19968: 0xE0EA,\n\t34821 - 19968: 0xE3B2,\n\t34847 - 19968: 0xD5C5,\n\t34850 - 19968: 0xF1E3,\n\t34851 - 19968: 0xD5EE,\n\t34865 - 19968: 0xCDCC,\n\t34870 - 19968: 0xEDD9,\n\t34875 - 19968: 0xD8C1,\n\t34880 - 19968: 0xFAEC,\n\t34886 - 19968: 0xF1EB,\n\t34892 - 19968: 0xFABC,\n\t34893 - 19968: 0xE6E2,\n\t34898 - 19968: 0xFAE5,\n\t34899 - 19968: 0xE2FA,\n\t34903 - 19968: 0xCAB6,\n\t34905 - 19968: 0xE4B7,\n\t34907 - 19968: 0xEADB,\n\t34909 - 19968: 0xF5FA,\n\t34913 - 19968: 0xFBAC,\n\t34914 - 19968: 0xCFC3,\n\t34915 - 19968: 0xEBFD,\n\t34920 - 19968: 0xF8FA,\n\t34923 - 19968: 0xDFB9,\n\t34928 - 19968: 0xE1F1,\n\t34930 - 19968: 0xD2A4,\n\t34935 - 19968: 0xF5FB,\n\t34942 - 19968: 0xD0DA,\n\t34943 - 19968: 0xD0DB,\n\t34945 - 19968: 0xEABE,\n\t34946 - 19968: 0xD9B1,\n\t34952 - 19968: 0xCAB7,\n\t34955 - 19968: 0xD3E7,\n\t34957 - 19968: 0xF8E5,\n\t34962 - 19968: 0xD3B2,\n\t34966 - 19968: 0xE2C0,\n\t34967 - 19968: 0xF2DF,\n\t34974 - 19968: 0xCDE5,\n\t34987 - 19968: 0xF9AC,\n\t34996 - 19968: 0xCDCD,\n\t35009 - 19968: 0xEEAE,\n\t35010 - 19968: 0xD6AE,\n\t35023 - 19968: 0xD7EA,\n\t35028 - 19968: 0xE7E0,\n\t35029 - 19968: 0xEBAE,\n\t35033 - 19968: 0xCFD9,\n\t35036 - 19968: 0xDCCD,\n\t35037 - 19968: 0xEDFB,\n\t35039 - 19968: 0xDEF0,\n\t35041 - 19968: 0xD7EB,\n\t35048 - 19968: 0xDEA5,\n\t35059 - 19968: 0xDFD7,\n\t35060 - 19968: 0xDBD0,\n\t35061 - 19968: 0xDBD1,\n\t35064 - 19968: 0xD5A3,\n\t35069 - 19968: 0xF0B2,\n\t35079 - 19968: 0xDCDC,\n\t35088 - 19968: 0xCAE8,\n\t35090 - 19968: 0xF8E6,\n\t35091 - 19968: 0xDCCE,\n\t35096 - 19968: 0xEADC,\n\t35097 - 19968: 0xDBD2,\n\t35109 - 19968: 0xE9B3,\n\t35114 - 19968: 0xF7DB,\n\t35126 - 19968: 0xE3A8,\n\t35128 - 19968: 0xD7AE,\n\t35131 - 19968: 0xE0E1,\n\t35137 - 19968: 0xCBBA,\n\t35140 - 19968: 0xE5D1,\n\t35167 - 19968: 0xD0DC,\n\t35172 - 19968: 0xD5C1,\n\t35178 - 19968: 0xD8CA,\n\t35186 - 19968: 0xE3A9,\n\t35199 - 19968: 0xE0A4,\n\t35201 - 19968: 0xE9A9,\n\t35203 - 19968: 0xD3C7,\n\t35206 - 19968: 0xDCDD,\n\t35207 - 19968: 0xF8AE,\n\t35211 - 19968: 0xCCB8,\n\t35215 - 19968: 0xD0AE,\n\t35219 - 19968: 0xD8F2,\n\t35222 - 19968: 0xE3CA,\n\t35233 - 19968: 0xCCAF,\n\t35241 - 19968: 0xD4AD,\n\t35242 - 19968: 0xF6D1,\n\t35250 - 19968: 0xD0CC,\n\t35258 - 19968: 0xCAC6,\n\t35261 - 19968: 0xD5C2,\n\t35264 - 19968: 0xCEBA,\n\t35282 - 19968: 0xCAC7,\n\t35299 - 19968: 0xFAB0,\n\t35316 - 19968: 0xDFD8,\n\t35320 - 19968: 0xF5BA,\n\t35328 - 19968: 0xE5EB,\n\t35330 - 19968: 0xEFF4,\n\t35331 - 19968: 0xDDB5,\n\t35336 - 19968: 0xCDAA,\n\t35338 - 19968: 0xE3F2,\n\t35340 - 19968: 0xFBF7,\n\t35342 - 19968: 0xF7D0,\n\t35347 - 19968: 0xFDBA,\n\t35350 - 19968: 0xFDE1,\n\t35351 - 19968: 0xF6FE,\n\t35352 - 19968: 0xD1C0,\n\t35355 - 19968: 0xE8C5,\n\t35357 - 19968: 0xE4B8,\n\t35359 - 19968: 0xE1E8,\n\t35363 - 19968: 0xCCC1,\n\t35365 - 19968: 0xD2ED,\n\t35370 - 19968: 0xDBBE,\n\t35373 - 19968: 0xE0E2,\n\t35377 - 19968: 0xFAC9,\n\t35380 - 19968: 0xE1CD,\n\t35382 - 19968: 0xCAB8,\n\t35386 - 19968: 0xF2E0,\n\t35387 - 19968: 0xF1C9,\n\t35408 - 19968: 0xDEF1,\n\t35412 - 19968: 0xF0DF,\n\t35413 - 19968: 0xF8C4,\n\t35419 - 19968: 0xEECC,\n\t35422 - 19968: 0xDEF2,\n\t35424 - 19968: 0xE7C9,\n\t35426 - 19968: 0xE2F3,\n\t35427 - 19968: 0xE7E1,\n\t35430 - 19968: 0xE3CB,\n\t35433 - 19968: 0xE3CC,\n\t35437 - 19968: 0xCFF8,\n\t35438 - 19968: 0xEFAC,\n\t35440 - 19968: 0xFDFE,\n\t35441 - 19968: 0xFCA5,\n\t35442 - 19968: 0xFAB1,\n\t35443 - 19968: 0xDFD9,\n\t35445 - 19968: 0xE0D2,\n\t35449 - 19968: 0xF4DA,\n\t35461 - 19968: 0xF1CA,\n\t35463 - 19968: 0xCEA3,\n\t35468 - 19968: 0xF2BC,\n\t35469 - 19968: 0xECE3,\n\t35475 - 19968: 0xE0A5,\n\t35477 - 19968: 0xF7AB,\n\t35480 - 19968: 0xEBAF,\n\t35486 - 19968: 0xE5DE,\n\t35488 - 19968: 0xE1A4,\n\t35489 - 19968: 0xCDAB,\n\t35491 - 19968: 0xD9F4,\n\t35492 - 19968: 0xE8A6,\n\t35493 - 19968: 0xCDCE,\n\t35494 - 19968: 0xE1E9,\n\t35496 - 19968: 0xFCEF,\n\t35498 - 19968: 0xE0E3,\n\t35504 - 19968: 0xE2C1,\n\t35506 - 19968: 0xCEA4,\n\t35513 - 19968: 0xDEA6,\n\t35516 - 19968: 0xEBFE,\n\t35518 - 19968: 0xEBDD,\n\t35519 - 19968: 0xF0E0,\n\t35522 - 19968: 0xF4DB,\n\t35524 - 19968: 0xE2F4,\n\t35527 - 19968: 0xD3C8,\n\t35531 - 19968: 0xF4EB,\n\t35533 - 19968: 0xEEB5,\n\t35535 - 19968: 0xF5D8,\n\t35538 - 19968: 0xD5DF,\n\t35542 - 19968: 0xD6E5,\n\t35547 - 19968: 0xEBB0,\n\t35548 - 19968: 0xF4E3,\n\t35553 - 19968: 0xE3CD,\n\t35558 - 19968: 0xF4F4,\n\t35559 - 19968: 0xFAB2,\n\t35562 - 19968: 0xEFF5,\n\t35563 - 19968: 0xCADF,\n\t35565 - 19968: 0xEBB1,\n\t35566 - 19968: 0xEDBF,\n\t35569 - 19968: 0xFDC9,\n\t35574 - 19968: 0xE4A6,\n\t35575 - 19968: 0xF9A4,\n\t35576 - 19968: 0xF0B3,\n\t35578 - 19968: 0xE5EC,\n\t35582 - 19968: 0xD1E7,\n\t35584 - 19968: 0xD9C7,\n\t35585 - 19968: 0xE4D7,\n\t35586 - 19968: 0xEADD,\n\t35588 - 19968: 0xD4F7,\n\t35598 - 19968: 0xDABA,\n\t35600 - 19968: 0xDACD,\n\t35604 - 19968: 0xF9CC,\n\t35606 - 19968: 0xE1DA,\n\t35607 - 19968: 0xDBBF,\n\t35609 - 19968: 0xCCC5,\n\t35610 - 19968: 0xECD0,\n\t35611 - 19968: 0xCBBB,\n\t35613 - 19968: 0xDEF3,\n\t35616 - 19968: 0xE9AA,\n\t35624 - 19968: 0xD9C8,\n\t35627 - 19968: 0xEEE3,\n\t35628 - 19968: 0xD7BD,\n\t35635 - 19968: 0xCFC4,\n\t35641 - 19968: 0xD0CD,\n\t35649 - 19968: 0xFCA6,\n\t35657 - 19968: 0xF1FB,\n\t35662 - 19968: 0xFDD2,\n\t35663 - 19968: 0xD1C1,\n\t35672 - 19968: 0xE3DB,\n\t35674 - 19968: 0xD3C9,\n\t35676 - 19968: 0xDCCF,\n\t35686 - 19968: 0xCCED,\n\t35692 - 19968: 0xDEA7,\n\t35695 - 19968: 0xE6BB,\n\t35696 - 19968: 0xECA1,\n\t35700 - 19968: 0xCCB9,\n\t35703 - 19968: 0xFBDE,\n\t35709 - 19968: 0xE7E2,\n\t35712 - 19968: 0xD4C1,\n\t35722 - 19968: 0xDCA8,\n\t35728 - 19968: 0xE2C2,\n\t35730 - 19968: 0xF3D8,\n\t35731 - 19968: 0xE5D3,\n\t35734 - 19968: 0xF3D9,\n\t35738 - 19968: 0xF3C6,\n\t35895 - 19968: 0xCDDB,\n\t35903 - 19968: 0xCDAC,\n\t35905 - 19968: 0xFCC3,\n\t35910 - 19968: 0xD4E7,\n\t35912 - 19968: 0xD1C2,\n\t35914 - 19968: 0xF9A5,\n\t35916 - 19968: 0xE8D5,\n\t35925 - 19968: 0xE3CE,\n\t35930 - 19968: 0xD4CA,\n\t35937 - 19968: 0xDFDA,\n\t35946 - 19968: 0xFBDF,\n\t35947 - 19968: 0xE7E3,\n\t35961 - 19968: 0xF8FB,\n\t35962 - 19968: 0xE3CF,\n\t35970 - 19968: 0xF5B0,\n\t35978 - 19968: 0xD8E7,\n\t35980 - 19968: 0xD9C9,\n\t35997 - 19968: 0xF8AF,\n\t35998 - 19968: 0xEFF6,\n\t36000 - 19968: 0xDDB6,\n\t36001 - 19968: 0xEEAF,\n\t36002 - 19968: 0xCDF8,\n\t36007 - 19968: 0xDEB8,\n\t36008 - 19968: 0xFCA7,\n\t36009 - 19968: 0xF7FC,\n\t36010 - 19968: 0xF7B1,\n\t36011 - 19968: 0xCEBB,\n\t36012 - 19968: 0xF4A1,\n\t36015 - 19968: 0xEECD,\n\t36016 - 19968: 0xE1AE,\n\t36019 - 19968: 0xECC3,\n\t36020 - 19968: 0xCFFE,\n\t36022 - 19968: 0xF8BF,\n\t36023 - 19968: 0xD8E2,\n\t36024 - 19968: 0xD3E8,\n\t36027 - 19968: 0xDEA8,\n\t36028 - 19968: 0xF4E4,\n\t36029 - 19968: 0xECC2,\n\t36031 - 19968: 0xD9F5,\n\t36032 - 19968: 0xF9C5,\n\t36033 - 19968: 0xDDD3,\n\t36034 - 19968: 0xD6F1,\n\t36035 - 19968: 0xECFC,\n\t36036 - 19968: 0xFCF0,\n\t36039 - 19968: 0xEDC0,\n\t36040 - 19968: 0xCAB9,\n\t36042 - 19968: 0xEEE4,\n\t36049 - 19968: 0xF2E1,\n\t36051 - 19968: 0xDEB9,\n\t36058 - 19968: 0xD6F2,\n\t36060 - 19968: 0xDEF4,\n\t36062 - 19968: 0xDFDB,\n\t36064 - 19968: 0xDBD3,\n\t36066 - 19968: 0xFAE7,\n\t36067 - 19968: 0xD8E3,\n\t36068 - 19968: 0xF4C1,\n\t36070 - 19968: 0xDDB7,\n\t36074 - 19968: 0xF2F5,\n\t36077 - 19968: 0xD4AE,\n\t36084 - 19968: 0xD6F3,\n\t36091 - 19968: 0xDDB8,\n\t36092 - 19968: 0xCFC5,\n\t36093 - 19968: 0xDFDF,\n\t36100 - 19968: 0xF2BE,\n\t36101 - 19968: 0xF6A1,\n\t36103 - 19968: 0xEBCB,\n\t36104 - 19968: 0xF1FC,\n\t36106 - 19968: 0xF3C7,\n\t36109 - 19968: 0xE0EB,\n\t36115 - 19968: 0xEDFC,\n\t36118 - 19968: 0xE1DB,\n\t36196 - 19968: 0xEEE5,\n\t36198 - 19968: 0xDEF5,\n\t36203 - 19968: 0xFAD3,\n\t36208 - 19968: 0xF1CB,\n\t36211 - 19968: 0xD0AF,\n\t36212 - 19968: 0xDDB9,\n\t36215 - 19968: 0xD1C3,\n\t36229 - 19968: 0xF5B1,\n\t36234 - 19968: 0xEAC6,\n\t36249 - 19968: 0xF0E1,\n\t36259 - 19968: 0xF6AC,\n\t36264 - 19968: 0xF5D9,\n\t36275 - 19968: 0xF0EB,\n\t36282 - 19968: 0xDDBA,\n\t36286 - 19968: 0xF2BF,\n\t36294 - 19968: 0xF7C5,\n\t36299 - 19968: 0xDBA2,\n\t36300 - 19968: 0xF2F6,\n\t36303 - 19968: 0xCABA,\n\t36315 - 19968: 0xF7F5,\n\t36317 - 19968: 0xCBE5,\n\t36321 - 19968: 0xEEE6,\n\t36323 - 19968: 0xE0D3,\n\t36328 - 19968: 0xCEA5,\n\t36335 - 19968: 0xD6D8,\n\t36339 - 19968: 0xD4AF,\n\t36362 - 19968: 0xE9C9,\n\t36367 - 19968: 0xD3CE,\n\t36368 - 19968: 0xF4C2,\n\t36382 - 19968: 0xCBE6,\n\t36394 - 19968: 0xF1A1,\n\t36400 - 19968: 0xEBB2,\n\t36405 - 19968: 0xF1A2,\n\t36418 - 19968: 0xEBB3,\n\t36420 - 19968: 0xF0B4,\n\t36423 - 19968: 0xCBF4,\n\t36424 - 19968: 0xD4B0,\n\t36425 - 19968: 0xF3B2,\n\t36426 - 19968: 0xFBB7,\n\t36441 - 19968: 0xF5EC,\n\t36447 - 19968: 0xEEE7,\n\t36448 - 19968: 0xF4B2,\n\t36468 - 19968: 0xF5ED,\n\t36470 - 19968: 0xCFF3,\n\t36481 - 19968: 0xF0E2,\n\t36487 - 19968: 0xEECE,\n\t36490 - 19968: 0xF1CC,\n\t36493 - 19968: 0xE5B8,\n\t36522 - 19968: 0xD7F5,\n\t36523 - 19968: 0xE3F3,\n\t36524 - 19968: 0xCFE5,\n\t36544 - 19968: 0xCFC6,\n\t36554 - 19968: 0xF3B3,\n\t36555 - 19968: 0xE4D8,\n\t36556 - 19968: 0xCFF9,\n\t36557 - 19968: 0xCFDA,\n\t36562 - 19968: 0xFACD,\n\t36575 - 19968: 0xE6E3,\n\t36587 - 19968: 0xF2E2,\n\t36600 - 19968: 0xF5EE,\n\t36603 - 19968: 0xCABB,\n\t36606 - 19968: 0xE3DC,\n\t36611 - 19968: 0xCEF2,\n\t36613 - 19968: 0xD6D9,\n\t36617 - 19968: 0xEEB0,\n\t36626 - 19968: 0xF4E5,\n\t36627 - 19968: 0xD8C2,\n\t36628 - 19968: 0xDCD0,\n\t36629 - 19968: 0xCCEE,\n\t36635 - 19968: 0xD5E0,\n\t36636 - 19968: 0xF6CA,\n\t36637 - 19968: 0xFDCA,\n\t36638 - 19968: 0xD8D6,\n\t36639 - 19968: 0xF4CF,\n\t36646 - 19968: 0xD6A6,\n\t36647 - 19968: 0xDCBE,\n\t36649 - 19968: 0xDBD4,\n\t36650 - 19968: 0xD7C7,\n\t36655 - 19968: 0xF2FE,\n\t36659 - 19968: 0xF1CD,\n\t36664 - 19968: 0xE2C3,\n\t36665 - 19968: 0xDCDE,\n\t36667 - 19968: 0xDCDF,\n\t36670 - 19968: 0xEFAD,\n\t36671 - 19968: 0xE6AB,\n\t36676 - 19968: 0xF9DD,\n\t36677 - 19968: 0xEABF,\n\t36681 - 19968: 0xEFAE,\n\t36685 - 19968: 0xF4D0,\n\t36686 - 19968: 0xCEF3,\n\t36701 - 19968: 0xE6AC,\n\t36703 - 19968: 0xCEDE,\n\t36706 - 19968: 0xD5F9,\n\t36763 - 19968: 0xE3F4,\n\t36764 - 19968: 0xCDD0,\n\t36771 - 19968: 0xD5B8,\n\t36774 - 19968: 0xF7FD,\n\t36776 - 19968: 0xDCA9,\n\t36781 - 19968: 0xDEF6,\n\t36783 - 19968: 0xDCAA,\n\t36784 - 19968: 0xF2E3,\n\t36785 - 19968: 0xE9B4,\n\t36786 - 19968: 0xD2DC,\n\t36802 - 19968: 0xE9E6,\n\t36805 - 19968: 0xE3F6,\n\t36814 - 19968: 0xE7CA,\n\t36817 - 19968: 0xD0CE,\n\t36820 - 19968: 0xDAF7,\n\t36838 - 19968: 0xCABC,\n\t36842 - 19968: 0xEEE8,\n\t36843 - 19968: 0xDADE,\n\t36845 - 19968: 0xF2F7,\n\t36848 - 19968: 0xE2FB,\n\t36850 - 19968: 0xCCA6,\n\t36855 - 19968: 0xDABB,\n\t36857 - 19968: 0xEEE9,\n\t36861 - 19968: 0xF5DA,\n\t36864 - 19968: 0xF7DC,\n\t36865 - 19968: 0xE1EA,\n\t36866 - 19968: 0xCEC1,\n\t36867 - 19968: 0xD4B1,\n\t36869 - 19968: 0xFDB1,\n\t36870 - 19968: 0xE6BD,\n\t36872 - 19968: 0xFBAD,\n\t36875 - 19968: 0xF8E7,\n\t36877 - 19968: 0xE1CE,\n\t36879 - 19968: 0xF7E2,\n\t36880 - 19968: 0xF5EF,\n\t36881 - 19968: 0xCFC7,\n\t36884 - 19968: 0xD4B2,\n\t36885 - 19968: 0xCCEF,\n\t36887 - 19968: 0xD4E8,\n\t36889 - 19968: 0xEECF,\n\t36890 - 19968: 0xF7D7,\n\t36893 - 19968: 0xE0A6,\n\t36894 - 19968: 0xD6C1,\n\t36895 - 19968: 0xE1DC,\n\t36896 - 19968: 0xF0E3,\n\t36897 - 19968: 0xF1E4,\n\t36898 - 19968: 0xDCF1,\n\t36899 - 19968: 0xD6A7,\n\t36910 - 19968: 0xF4F5,\n\t36913 - 19968: 0xF1CE,\n\t36914 - 19968: 0xF2E4,\n\t36917 - 19968: 0xD0B0,\n\t36920 - 19968: 0xECEF,\n\t36924 - 19968: 0xF9BA,\n\t36926 - 19968: 0xEBB5,\n\t36929 - 19968: 0xD4ED,\n\t36930 - 19968: 0xE2C4,\n\t36935 - 19968: 0xE9E7,\n\t36938 - 19968: 0xEBB4,\n\t36939 - 19968: 0xEAA1,\n\t36941 - 19968: 0xF8BC,\n\t36942 - 19968: 0xCEA6,\n\t36944 - 19968: 0xF9C6,\n\t36945 - 19968: 0xFCDA,\n\t36947 - 19968: 0xD4B3,\n\t36948 - 19968: 0xD3B9,\n\t36949 - 19968: 0xEADE,\n\t36953 - 19968: 0xE9AB,\n\t36956 - 19968: 0xE1E1,\n\t36957 - 19968: 0xD3CF,\n\t36958 - 19968: 0xF4F6,\n\t36960 - 19968: 0xEAC0,\n\t36961 - 19968: 0xE1CF,\n\t36963 - 19968: 0xCCBA,\n\t36969 - 19968: 0xEEEA,\n\t36973 - 19968: 0xF0E4,\n\t36974 - 19968: 0xF3B4,\n\t36975 - 19968: 0xD4EE,\n\t36978 - 19968: 0xF2C0,\n\t36981 - 19968: 0xF1E5,\n\t36983 - 19968: 0xF4C3,\n\t36984 - 19968: 0xE0D4,\n\t36986 - 19968: 0xEBB6,\n\t36988 - 19968: 0xD7A1,\n\t36989 - 19968: 0xCBE8,\n\t36991 - 19968: 0xF9AD,\n\t36992 - 19968: 0xE9AD,\n\t36993 - 19968: 0xD8E4,\n\t36994 - 19968: 0xFAB3,\n\t36995 - 19968: 0xE2C5,\n\t36996 - 19968: 0xFCBD,\n\t36999 - 19968: 0xECC4,\n\t37000 - 19968: 0xD8B1,\n\t37002 - 19968: 0xDCAB,\n\t37007 - 19968: 0xD5A4,\n\t37009 - 19968: 0xEBE9,\n\t37013 - 19968: 0xE8BB,\n\t37017 - 19968: 0xD8D7,\n\t37026 - 19968: 0xFBAE,\n\t37027 - 19968: 0xD1E1,\n\t37030 - 19968: 0xDBC0,\n\t37032 - 19968: 0xF5BE,\n\t37034 - 19968: 0xDEF7,\n\t37039 - 19968: 0xCAFB,\n\t37040 - 19968: 0xF7C6,\n\t37041 - 19968: 0xCFC8,\n\t37045 - 19968: 0xE1D0,\n\t37048 - 19968: 0xEED0,\n\t37057 - 19968: 0xE9F4,\n\t37066 - 19968: 0xCEF4,\n\t37086 - 19968: 0xD5CD,\n\t37089 - 19968: 0xCFDB,\n\t37096 - 19968: 0xDDBB,\n\t37101 - 19968: 0xCEAC,\n\t37109 - 19968: 0xE9E8,\n\t37117 - 19968: 0xD4B4,\n\t37122 - 19968: 0xE4C7,\n\t37138 - 19968: 0xF5DB,\n\t37141 - 19968: 0xFAC1,\n\t37145 - 19968: 0xDEA9,\n\t37159 - 19968: 0xD4F8,\n\t37165 - 19968: 0xEFF7,\n\t37170 - 19968: 0xD3B3,\n\t37193 - 19968: 0xEBB7,\n\t37194 - 19968: 0xEFF8,\n\t37195 - 19968: 0xF5DC,\n\t37196 - 19968: 0xEDCC,\n\t37197 - 19968: 0xDBD5,\n\t37198 - 19968: 0xF1CF,\n\t37202 - 19968: 0xF1D0,\n\t37218 - 19968: 0xF5B2,\n\t37225 - 19968: 0xD9AE,\n\t37226 - 19968: 0xD5AC,\n\t37228 - 19968: 0xE2C6,\n\t37237 - 19968: 0xFDA3,\n\t37239 - 19968: 0xFBE5,\n\t37240 - 19968: 0xDFAB,\n\t37255 - 19968: 0xE2F5,\n\t37257 - 19968: 0xF6AD,\n\t37259 - 19968: 0xF5B3,\n\t37261 - 19968: 0xF0B5,\n\t37266 - 19968: 0xE1A5,\n\t37276 - 19968: 0xF5DD,\n\t37291 - 19968: 0xECA2,\n\t37292 - 19968: 0xEDFD,\n\t37294 - 19968: 0xF5B4,\n\t37295 - 19968: 0xFBB8,\n\t37297 - 19968: 0xDBA3,\n\t37300 - 19968: 0xD6CA,\n\t37301 - 19968: 0xCBD9,\n\t37312 - 19968: 0xE5D4,\n\t37319 - 19968: 0xF3FA,\n\t37321 - 19968: 0xEBB8,\n\t37323 - 19968: 0xE0B7,\n\t37324 - 19968: 0xD7EC,\n\t37325 - 19968: 0xF1EC,\n\t37326 - 19968: 0xE5AF,\n\t37327 - 19968: 0xD5E1,\n\t37328 - 19968: 0xD7ED,\n\t37329 - 19968: 0xD1D1,\n\t37335 - 19968: 0xE1F2,\n\t37336 - 19968: 0xEFF9,\n\t37340 - 19968: 0xDDBC,\n\t37341 - 19968: 0xF6DC,\n\t37347 - 19968: 0xF0E5,\n\t37351 - 19968: 0xF4C4,\n\t37354 - 19968: 0xE9E9,\n\t37365 - 19968: 0xF3FB,\n\t37389 - 19968: 0xD4EF,\n\t37392 - 19968: 0xCCA2,\n\t37393 - 19968: 0xF7FE,\n\t37394 - 19968: 0xDFBC,\n\t37399 - 19968: 0xEBCD,\n\t37406 - 19968: 0xD0B7,\n\t37428 - 19968: 0xD6C2,\n\t37434 - 19968: 0xE8AD,\n\t37439 - 19968: 0xEFAF,\n\t37440 - 19968: 0xCBA5,\n\t37445 - 19968: 0xCBE9,\n\t37449 - 19968: 0xFAE8,\n\t37463 - 19968: 0xCCC6,\n\t37467 - 19968: 0xE6E7,\n\t37470 - 19968: 0xEAC7,\n\t37474 - 19968: 0xDBA4,\n\t37476 - 19968: 0xCFC9,\n\t37477 - 19968: 0xE2FC,\n\t37478 - 19968: 0xEFFA,\n\t37504 - 19968: 0xEBDE,\n\t37507 - 19968: 0xF5C8,\n\t37509 - 19968: 0xD4DE,\n\t37521 - 19968: 0xE0D5,\n\t37523 - 19968: 0xEFB0,\n\t37526 - 19968: 0xE2C7,\n\t37528 - 19968: 0xD9AF,\n\t37532 - 19968: 0xF9E7,\n\t37555 - 19968: 0xE7E5,\n\t37558 - 19968: 0xCFCA,\n\t37559 - 19968: 0xE1D1,\n\t37561 - 19968: 0xE2C8,\n\t37580 - 19968: 0xEFFB,\n\t37583 - 19968: 0xFAF9,\n\t37586 - 19968: 0xDCF2,\n\t37604 - 19968: 0xE0A7,\n\t37610 - 19968: 0xF8E8,\n\t37624 - 19968: 0xCBEA,\n\t37628 - 19968: 0xCBBC,\n\t37636 - 19968: 0xD6E2,\n\t37648 - 19968: 0xF5DE,\n\t37656 - 19968: 0xF5DF,\n\t37658 - 19968: 0xEEB6,\n\t37662 - 19968: 0xE2F6,\n\t37663 - 19968: 0xD3CA,\n\t37664 - 19968: 0xEFFC,\n\t37665 - 19968: 0xD1C4,\n\t37666 - 19968: 0xEFB1,\n\t37668 - 19968: 0xD1C5,\n\t37670 - 19968: 0xD0DE,\n\t37672 - 19968: 0xD9E1,\n\t37675 - 19968: 0xE0B8,\n\t37678 - 19968: 0xCDD1,\n\t37679 - 19968: 0xF3B9,\n\t37704 - 19968: 0xE7CC,\n\t37706 - 19968: 0xD6A8,\n\t37707 - 19968: 0xCEA7,\n\t37709 - 19968: 0xD4B5,\n\t37716 - 19968: 0xE4C8,\n\t37723 - 19968: 0xD3B4,\n\t37742 - 19968: 0xEBB9,\n\t37749 - 19968: 0xCBF5,\n\t37756 - 19968: 0xF6DD,\n\t37758 - 19968: 0xF1A3,\n\t37772 - 19968: 0xCCC7,\n\t37780 - 19968: 0xE9CA,\n\t37782 - 19968: 0xE1F0,\n\t37786 - 19968: 0xF5E0,\n\t37795 - 19968: 0xFBAF,\n\t37799 - 19968: 0xCBD1,\n\t37804 - 19968: 0xFBE0,\n\t37805 - 19968: 0xF2E5,\n\t37808 - 19968: 0xECF0,\n\t37827 - 19968: 0xF0EC,\n\t37841 - 19968: 0xEEEB,\n\t37854 - 19968: 0xE9CB,\n\t37857 - 19968: 0xCCF0,\n\t37860 - 19968: 0xD7AF,\n\t37878 - 19968: 0xF3A1,\n\t37892 - 19968: 0xFCF5,\n\t37912 - 19968: 0xF1A4,\n\t37925 - 19968: 0xE0D6,\n\t37931 - 19968: 0xEFB2,\n\t37941 - 19968: 0xF4D1,\n\t37944 - 19968: 0xF7A1,\n\t37956 - 19968: 0xF1D1,\n\t37969 - 19968: 0xCAFC,\n\t37970 - 19968: 0xCAFD,\n\t37979 - 19968: 0xCECE,\n\t38013 - 19968: 0xF3C8,\n\t38015 - 19968: 0xF3BA,\n\t38263 - 19968: 0xEDFE,\n\t38272 - 19968: 0xDAA6,\n\t38275 - 19968: 0xE0EC,\n\t38281 - 19968: 0xF8CD,\n\t38283 - 19968: 0xCBD2,\n\t38287 - 19968: 0xEBCE,\n\t38289 - 19968: 0xF9D8,\n\t38290 - 19968: 0xF9D9,\n\t38291 - 19968: 0xCAE0,\n\t38292 - 19968: 0xDACA,\n\t38296 - 19968: 0xCBA6,\n\t38307 - 19968: 0xCAC8,\n\t38308 - 19968: 0xF9EE,\n\t38309 - 19968: 0xDBEC,\n\t38312 - 19968: 0xD0B1,\n\t38317 - 19968: 0xD5EF,\n\t38321 - 19968: 0xE6F3,\n\t38331 - 19968: 0xE7A2,\n\t38332 - 19968: 0xE4D9,\n\t38343 - 19968: 0xE4E1,\n\t38346 - 19968: 0xFCC4,\n\t38356 - 19968: 0xF9EF,\n\t38357 - 19968: 0xCFF4,\n\t38358 - 19968: 0xF7E6,\n\t38364 - 19968: 0xCEBC,\n\t38369 - 19968: 0xF4C5,\n\t38370 - 19968: 0xDCA3,\n\t38428 - 19968: 0xDDBD,\n\t38433 - 19968: 0xF4C6,\n\t38442 - 19968: 0xF8A1,\n\t38446 - 19968: 0xE8D6,\n\t38450 - 19968: 0xDBC1,\n\t38459 - 19968: 0xF0E6,\n\t38463 - 19968: 0xE4B9,\n\t38464 - 19968: 0xF6ED,\n\t38466 - 19968: 0xF9AE,\n\t38468 - 19968: 0xDDBE,\n\t38475 - 19968: 0xD7B0,\n\t38476 - 19968: 0xD8E8,\n\t38477 - 19968: 0xCBBD,\n\t38480 - 19968: 0xF9DA,\n\t38491 - 19968: 0xF8CE,\n\t38492 - 19968: 0xF9F0,\n\t38493 - 19968: 0xE0ED,\n\t38494 - 19968: 0xE3B3,\n\t38495 - 19968: 0xF4B3,\n\t38498 - 19968: 0xEAC2,\n\t38499 - 19968: 0xF2E6,\n\t38500 - 19968: 0xF0B6,\n\t38506 - 19968: 0xDBD6,\n\t38512 - 19968: 0xEBE4,\n\t38515 - 19968: 0xF2E7,\n\t38517 - 19968: 0xD7D5,\n\t38518 - 19968: 0xD4B6,\n\t38519 - 19968: 0xF9E8,\n\t38520 - 19968: 0xD7C1,\n\t38525 - 19968: 0xE5D5,\n\t38533 - 19968: 0xE9EA,\n\t38534 - 19968: 0xD7CC,\n\t38538 - 19968: 0xD3E9,\n\t38539 - 19968: 0xE2C9,\n\t38541 - 19968: 0xFCDB,\n\t38542 - 19968: 0xCDAD,\n\t38548 - 19968: 0xCCB0,\n\t38549 - 19968: 0xEAA2,\n\t38552 - 19968: 0xE4F6,\n\t38553 - 19968: 0xD0C0,\n\t38555 - 19968: 0xF0B7,\n\t38556 - 19968: 0xEEA1,\n\t38563 - 19968: 0xD7F6,\n\t38567 - 19968: 0xE2CA,\n\t38568 - 19968: 0xE2CB,\n\t38570 - 19968: 0xFACF,\n\t38577 - 19968: 0xEBDF,\n\t38583 - 19968: 0xD6CB,\n\t38587 - 19968: 0xF4B4,\n\t38592 - 19968: 0xEDCD,\n\t38593 - 19968: 0xE4D2,\n\t38596 - 19968: 0xEAA9,\n\t38597 - 19968: 0xE4BA,\n\t38598 - 19968: 0xF3A2,\n\t38599 - 19968: 0xCDD2,\n\t38601 - 19968: 0xF6CB,\n\t38603 - 19968: 0xF1E6,\n\t38604 - 19968: 0xEDC1,\n\t38605 - 19968: 0xE8BC,\n\t38606 - 19968: 0xEED1,\n\t38613 - 19968: 0xF0E7,\n\t38614 - 19968: 0xE2CC,\n\t38617 - 19968: 0xE4AA,\n\t38619 - 19968: 0xF5E1,\n\t38620 - 19968: 0xEDDA,\n\t38626 - 19968: 0xD7EE,\n\t38627 - 19968: 0xD1F1,\n\t38632 - 19968: 0xE9EB,\n\t38633 - 19968: 0xE9EC,\n\t38634 - 19968: 0xE0E4,\n\t38639 - 19968: 0xDAA7,\n\t38640 - 19968: 0xDDD4,\n\t38642 - 19968: 0xEAA3,\n\t38646 - 19968: 0xD6C3,\n\t38647 - 19968: 0xD6F4,\n\t38649 - 19968: 0xDADF,\n\t38651 - 19968: 0xEFB3,\n\t38656 - 19968: 0xE2CD,\n\t38662 - 19968: 0xEFFD,\n\t38663 - 19968: 0xF2E8,\n\t38673 - 19968: 0xEFC5,\n\t38675 - 19968: 0xE7E7,\n\t38678 - 19968: 0xD7FD,\n\t38681 - 19968: 0xE7CE,\n\t38684 - 19968: 0xDFDC,\n\t38686 - 19968: 0xF9C7,\n\t38695 - 19968: 0xD9F6,\n\t38704 - 19968: 0xDFAC,\n\t38706 - 19968: 0xD6DA,\n\t38713 - 19968: 0xDCA4,\n\t38717 - 19968: 0xF0B8,\n\t38722 - 19968: 0xD5FA,\n\t38724 - 19968: 0xE4F7,\n\t38728 - 19968: 0xD6C4,\n\t38737 - 19968: 0xF4EC,\n\t38742 - 19968: 0xEFFE,\n\t38748 - 19968: 0xF0A1,\n\t38750 - 19968: 0xDEAA,\n\t38753 - 19968: 0xDABC,\n\t38754 - 19968: 0xD8FC,\n\t38761 - 19968: 0xFAD4,\n\t38765 - 19968: 0xECE5,\n\t38772 - 19968: 0xFCA8,\n\t38775 - 19968: 0xECE6,\n\t38778 - 19968: 0xD8CB,\n\t38795 - 19968: 0xFBB9,\n\t38797 - 19968: 0xE4D3,\n\t38799 - 19968: 0xCDF9,\n\t38816 - 19968: 0xCFD3,\n\t38824 - 19968: 0xCAEA,\n\t38827 - 19968: 0xCFD4,\n\t38829 - 19968: 0xF8BD,\n\t38854 - 19968: 0xF4C7,\n\t38859 - 19968: 0xEADF,\n\t38867 - 19968: 0xF9DB,\n\t38876 - 19968: 0xD4B7,\n\t38899 - 19968: 0xEBE5,\n\t38902 - 19968: 0xE1D2,\n\t38907 - 19968: 0xEAA4,\n\t38911 - 19968: 0xFAC2,\n\t38912 - 19968: 0xFBE1,\n\t38913 - 19968: 0xFAED,\n\t38914 - 19968: 0xF0A2,\n\t38915 - 19968: 0xCCF1,\n\t38917 - 19968: 0xFAA3,\n\t38918 - 19968: 0xE2F7,\n\t38920 - 19968: 0xE2CE,\n\t38922 - 19968: 0xE9F5,\n\t38924 - 19968: 0xE1EB,\n\t38928 - 19968: 0xE7E8,\n\t38929 - 19968: 0xE8D7,\n\t38930 - 19968: 0xDAF8,\n\t38931 - 19968: 0xD4CB,\n\t38935 - 19968: 0xF7F6,\n\t38936 - 19968: 0xD6C5,\n\t38957 - 19968: 0xD4E9,\n\t38960 - 19968: 0xFAFA,\n\t38968 - 19968: 0xCCF2,\n\t38969 - 19968: 0xF7DD,\n\t38971 - 19968: 0xDEBA,\n\t38982 - 19968: 0xCEA8,\n\t38988 - 19968: 0xF0B9,\n\t38989 - 19968: 0xE4FE,\n\t38990 - 19968: 0xE4C9,\n\t38996 - 19968: 0xE4D4,\n\t39000 - 19968: 0xEAC3,\n\t39002 - 19968: 0xEFB4,\n\t39006 - 19968: 0xD7BE,\n\t39013 - 19968: 0xFBE2,\n\t39015 - 19968: 0xCDD3,\n\t39019 - 19968: 0xEFB5,\n\t39023 - 19968: 0xFAE9,\n\t39080 - 19968: 0xF9A6,\n\t39087 - 19968: 0xDFBD,\n\t39089 - 19968: 0xF7C7,\n\t39108 - 19968: 0xF8FD,\n\t39111 - 19968: 0xF8FC,\n\t39131 - 19968: 0xDEAB,\n\t39132 - 19968: 0xDBE8,\n\t39135 - 19968: 0xE3DD,\n\t39137 - 19968: 0xE1E2,\n\t39138 - 19968: 0xD1C6,\n\t39149 - 19968: 0xF6D0,\n\t39150 - 19968: 0xEBE6,\n\t39151 - 19968: 0xDAF9,\n\t39156 - 19968: 0xECC7,\n\t39164 - 19968: 0xDEF8,\n\t39165 - 19968: 0xF8E9,\n\t39166 - 19968: 0xE3DE,\n\t39171 - 19968: 0xCEF5,\n\t39177 - 19968: 0xFAC3,\n\t39178 - 19968: 0xE5D7,\n\t39180 - 19968: 0xECC8,\n\t39184 - 19968: 0xF3C9,\n\t39187 - 19968: 0xE4BB,\n\t39192 - 19968: 0xE6AE,\n\t39198 - 19968: 0xEFB6,\n\t39200 - 19968: 0xDCBF,\n\t39208 - 19968: 0xCEBD,\n\t39237 - 19968: 0xD8C3,\n\t39241 - 19968: 0xD0CF,\n\t39243 - 19968: 0xCFFA,\n\t39244 - 19968: 0xF3CA,\n\t39245 - 19968: 0xE0D7,\n\t39249 - 19968: 0xD1C7,\n\t39250 - 19968: 0xE9AE,\n\t39252 - 19968: 0xE8BD,\n\t39255 - 19968: 0xFAC4,\n\t39318 - 19968: 0xE2CF,\n\t39321 - 19968: 0xFAC5,\n\t39325 - 19968: 0xF9B8,\n\t39333 - 19968: 0xDCE0,\n\t39336 - 19968: 0xFBB0,\n\t39340 - 19968: 0xD8A9,\n\t39341 - 19968: 0xE5DF,\n\t39342 - 19968: 0xF9A7,\n\t39345 - 19968: 0xF6EE,\n\t39347 - 19968: 0xF6CC,\n\t39348 - 19968: 0xE2F8,\n\t39353 - 19968: 0xECF1,\n\t39361 - 19968: 0xDAE0,\n\t39376 - 19968: 0xF1D2,\n\t39377 - 19968: 0xD2CC,\n\t39378 - 19968: 0xCFCB,\n\t39381 - 19968: 0xCABD,\n\t39385 - 19968: 0xDDBF,\n\t39389 - 19968: 0xF6EF,\n\t39391 - 19968: 0xDEF9,\n\t39405 - 19968: 0xFAB4,\n\t39409 - 19968: 0xD5AD,\n\t39423 - 19968: 0xF1E7,\n\t39425 - 19968: 0xDEBE,\n\t39432 - 19968: 0xDCC0,\n\t39438 - 19968: 0xD1C8,\n\t39439 - 19968: 0xD1C9,\n\t39449 - 19968: 0xF8BE,\n\t39467 - 19968: 0xCBF6,\n\t39472 - 19968: 0xD4F9,\n\t39478 - 19968: 0xF5E2,\n\t39479 - 19968: 0xE1D3,\n\t39488 - 19968: 0xD8E9,\n\t39491 - 19968: 0xF8FE,\n\t39493 - 19968: 0xCFCC,\n\t39501 - 19968: 0xFDA4,\n\t39509 - 19968: 0xCEF6,\n\t39511 - 19968: 0xFAD0,\n\t39514 - 19968: 0xCCF3,\n\t39515 - 19968: 0xE6BE,\n\t39519 - 19968: 0xF6AE,\n\t39522 - 19968: 0xD5F0,\n\t39525 - 19968: 0xD1CA,\n\t39529 - 19968: 0xFCBE,\n\t39530 - 19968: 0xD5F1,\n\t39592 - 19968: 0xCDE9,\n\t39608 - 19968: 0xFAB5,\n\t39635 - 19968: 0xE2D0,\n\t39636 - 19968: 0xF4F7,\n\t39640 - 19968: 0xCDD4,\n\t39653 - 19968: 0xE7A3,\n\t39662 - 19968: 0xDBA5,\n\t39706 - 19968: 0xE2D1,\n\t39719 - 19968: 0xD7A2,\n\t39722 - 19968: 0xF7E3,\n\t39729 - 19968: 0xEAA6,\n\t39740 - 19968: 0xD0A1,\n\t39745 - 19968: 0xCEDA,\n\t39746 - 19968: 0xFBEB,\n\t39747 - 19968: 0xDBA6,\n\t39748 - 19968: 0xDBDE,\n\t39749 - 19968: 0xD8E5,\n\t39759 - 19968: 0xEAE0,\n\t39764 - 19968: 0xD8AA,\n\t39770 - 19968: 0xE5E0,\n\t39791 - 19968: 0xD6DB,\n\t39822 - 19968: 0xEFC6,\n\t39825 - 19968: 0xF8EA,\n\t39839 - 19968: 0xE4D5,\n\t39851 - 19968: 0xCEF7,\n\t39854 - 19968: 0xE0D8,\n\t39881 - 19968: 0xD7EF,\n\t39894 - 19968: 0xF4ED,\n\t39908 - 19968: 0xCDE6,\n\t39912 - 19968: 0xCCF4,\n\t39949 - 19968: 0xF5E3,\n\t39952 - 19968: 0xE4CA,\n\t39954 - 19968: 0xDCE1,\n\t39957 - 19968: 0xF9C8,\n\t39973 - 19968: 0xFCBF,\n\t39986 - 19968: 0xE8A7,\n\t39995 - 19968: 0xD8C4,\n\t40007 - 19968: 0xCBBE,\n\t40009 - 19968: 0xDCAE,\n\t40023 - 19968: 0xD7F7,\n\t40165 - 19968: 0xF0E8,\n\t40167 - 19968: 0xDDC0,\n\t40169 - 19968: 0xCFCD,\n\t40179 - 19968: 0xDCF3,\n\t40180 - 19968: 0xD9B0,\n\t40182 - 19968: 0xE6E9,\n\t40201 - 19968: 0xE4BC,\n\t40219 - 19968: 0xEAC4,\n\t40230 - 19968: 0xE4EC,\n\t40232 - 19968: 0xE4E5,\n\t40251 - 19968: 0xFBF8,\n\t40273 - 19968: 0xCCBB,\n\t40285 - 19968: 0xE4BD,\n\t40288 - 19968: 0xCDDC,\n\t40289 - 19968: 0xD9F7,\n\t40300 - 19968: 0xDDDF,\n\t40306 - 19968: 0xEDCE,\n\t40361 - 19968: 0xD9D0,\n\t40367 - 19968: 0xE5A3,\n\t40372 - 19968: 0xF9CD,\n\t40388 - 19968: 0xCDAE,\n\t40407 - 19968: 0xCFCE,\n\t40434 - 19968: 0xF6AF,\n\t40440 - 19968: 0xFDD3,\n\t40441 - 19968: 0xEBED,\n\t40442 - 19968: 0xD6DC,\n\t40474 - 19968: 0xE5A4,\n\t40478 - 19968: 0xD5B6,\n\t40565 - 19968: 0xD6DD,\n\t40569 - 19968: 0xF9E9,\n\t40573 - 19968: 0xE7A4,\n\t40575 - 19968: 0xD6E3,\n\t40594 - 19968: 0xD1CB,\n\t40595 - 19968: 0xD6E4,\n\t40599 - 19968: 0xD5F2,\n\t40605 - 19968: 0xDEFA,\n\t40607 - 19968: 0xD7F8,\n\t40613 - 19968: 0xD8EA,\n\t40628 - 19968: 0xCFD5,\n\t40629 - 19968: 0xD8FD,\n\t40635 - 19968: 0xD8AB,\n\t40638 - 19968: 0xFDCB,\n\t40643 - 19968: 0xFCDC,\n\t40653 - 19968: 0xE0A8,\n\t40654 - 19968: 0xD5F3,\n\t40657 - 19968: 0xFDD9,\n\t40660 - 19968: 0xCCA3,\n\t40664 - 19968: 0xD9F9,\n\t40667 - 19968: 0xD3EA,\n\t40668 - 19968: 0xF5F5,\n\t40670 - 19968: 0xEFC7,\n\t40680 - 19968: 0xD3DA,\n\t40692 - 19968: 0xDABD,\n\t40711 - 19968: 0xE8A8,\n\t40712 - 19968: 0xDCAF,\n\t40718 - 19968: 0xF0A3,\n\t40723 - 19968: 0xCDD5,\n\t40736 - 19968: 0xE0A9,\n\t40763 - 19968: 0xDEAC,\n\t40778 - 19968: 0xF0BA,\n\t40779 - 19968: 0xEEB1,\n\t40782 - 19968: 0xEEB2,\n\t40786 - 19968: 0xF6CD,\n\t40799 - 19968: 0xEED2,\n\t40801 - 19968: 0xD6C6,\n\t40807 - 19968: 0xE0E5,\n\t40810 - 19968: 0xF3BB,\n\t40812 - 19968: 0xE5E1,\n\t40823 - 19968: 0xE4CB,\n\t40845 - 19968: 0xD7A3,\n\t40848 - 19968: 0xDBC2,\n\t40853 - 19968: 0xCAFE,\n\t40860 - 19968: 0xCFCF,\n}\n\nconst encode1Low, encode1High = 44032, 55204\n\nvar encode1 = [...]uint16{\n\t44032 - 44032: 0xB0A1,\n\t44033 - 44032: 0xB0A2,\n\t44034 - 44032: 0x8141,\n\t44035 - 44032: 0x8142,\n\t44036 - 44032: 0xB0A3,\n\t44037 - 44032: 0x8143,\n\t44038 - 44032: 0x8144,\n\t44039 - 44032: 0xB0A4,\n\t44040 - 44032: 0xB0A5,\n\t44041 - 44032: 0xB0A6,\n\t44042 - 44032: 0xB0A7,\n\t44043 - 44032: 0x8145,\n\t44044 - 44032: 0x8146,\n\t44045 - 44032: 0x8147,\n\t44046 - 44032: 0x8148,\n\t44047 - 44032: 0x8149,\n\t44048 - 44032: 0xB0A8,\n\t44049 - 44032: 0xB0A9,\n\t44050 - 44032: 0xB0AA,\n\t44051 - 44032: 0xB0AB,\n\t44052 - 44032: 0xB0AC,\n\t44053 - 44032: 0xB0AD,\n\t44054 - 44032: 0xB0AE,\n\t44055 - 44032: 0xB0AF,\n\t44056 - 44032: 0x814A,\n\t44057 - 44032: 0xB0B0,\n\t44058 - 44032: 0xB0B1,\n\t44059 - 44032: 0xB0B2,\n\t44060 - 44032: 0xB0B3,\n\t44061 - 44032: 0xB0B4,\n\t44062 - 44032: 0x814B,\n\t44063 - 44032: 0x814C,\n\t44064 - 44032: 0xB0B5,\n\t44065 - 44032: 0x814D,\n\t44066 - 44032: 0x814E,\n\t44067 - 44032: 0x814F,\n\t44068 - 44032: 0xB0B6,\n\t44069 - 44032: 0x8150,\n\t44070 - 44032: 0x8151,\n\t44071 - 44032: 0x8152,\n\t44072 - 44032: 0x8153,\n\t44073 - 44032: 0x8154,\n\t44074 - 44032: 0x8155,\n\t44075 - 44032: 0x8156,\n\t44076 - 44032: 0xB0B7,\n\t44077 - 44032: 0xB0B8,\n\t44078 - 44032: 0x8157,\n\t44079 - 44032: 0xB0B9,\n\t44080 - 44032: 0xB0BA,\n\t44081 - 44032: 0xB0BB,\n\t44082 - 44032: 0x8158,\n\t44083 - 44032: 0x8159,\n\t44084 - 44032: 0x815A,\n\t44085 - 44032: 0x8161,\n\t44086 - 44032: 0x8162,\n\t44087 - 44032: 0x8163,\n\t44088 - 44032: 0xB0BC,\n\t44089 - 44032: 0xB0BD,\n\t44090 - 44032: 0x8164,\n\t44091 - 44032: 0x8165,\n\t44092 - 44032: 0xB0BE,\n\t44093 - 44032: 0x8166,\n\t44094 - 44032: 0x8167,\n\t44095 - 44032: 0x8168,\n\t44096 - 44032: 0xB0BF,\n\t44097 - 44032: 0x8169,\n\t44098 - 44032: 0x816A,\n\t44099 - 44032: 0x816B,\n\t44100 - 44032: 0x816C,\n\t44101 - 44032: 0x816D,\n\t44102 - 44032: 0x816E,\n\t44103 - 44032: 0x816F,\n\t44104 - 44032: 0x8170,\n\t44105 - 44032: 0x8171,\n\t44106 - 44032: 0x8172,\n\t44107 - 44032: 0xB0C0,\n\t44108 - 44032: 0x8173,\n\t44109 - 44032: 0xB0C1,\n\t44110 - 44032: 0x8174,\n\t44111 - 44032: 0x8175,\n\t44112 - 44032: 0x8176,\n\t44113 - 44032: 0x8177,\n\t44114 - 44032: 0x8178,\n\t44115 - 44032: 0x8179,\n\t44116 - 44032: 0xB0C2,\n\t44117 - 44032: 0x817A,\n\t44118 - 44032: 0x8181,\n\t44119 - 44032: 0x8182,\n\t44120 - 44032: 0xB0C3,\n\t44121 - 44032: 0x8183,\n\t44122 - 44032: 0x8184,\n\t44123 - 44032: 0x8185,\n\t44124 - 44032: 0xB0C4,\n\t44125 - 44032: 0x8186,\n\t44126 - 44032: 0x8187,\n\t44127 - 44032: 0x8188,\n\t44128 - 44032: 0x8189,\n\t44129 - 44032: 0x818A,\n\t44130 - 44032: 0x818B,\n\t44131 - 44032: 0x818C,\n\t44132 - 44032: 0x818D,\n\t44133 - 44032: 0x818E,\n\t44134 - 44032: 0x818F,\n\t44135 - 44032: 0x8190,\n\t44136 - 44032: 0x8191,\n\t44137 - 44032: 0x8192,\n\t44138 - 44032: 0x8193,\n\t44139 - 44032: 0x8194,\n\t44140 - 44032: 0x8195,\n\t44141 - 44032: 0x8196,\n\t44142 - 44032: 0x8197,\n\t44143 - 44032: 0x8198,\n\t44144 - 44032: 0xB0C5,\n\t44145 - 44032: 0xB0C6,\n\t44146 - 44032: 0x8199,\n\t44147 - 44032: 0x819A,\n\t44148 - 44032: 0xB0C7,\n\t44149 - 44032: 0x819B,\n\t44150 - 44032: 0x819C,\n\t44151 - 44032: 0xB0C8,\n\t44152 - 44032: 0xB0C9,\n\t44153 - 44032: 0x819D,\n\t44154 - 44032: 0xB0CA,\n\t44155 - 44032: 0x819E,\n\t44156 - 44032: 0x819F,\n\t44157 - 44032: 0x81A0,\n\t44158 - 44032: 0x81A1,\n\t44159 - 44032: 0x81A2,\n\t44160 - 44032: 0xB0CB,\n\t44161 - 44032: 0xB0CC,\n\t44162 - 44032: 0x81A3,\n\t44163 - 44032: 0xB0CD,\n\t44164 - 44032: 0xB0CE,\n\t44165 - 44032: 0xB0CF,\n\t44166 - 44032: 0xB0D0,\n\t44167 - 44032: 0x81A4,\n\t44168 - 44032: 0x81A5,\n\t44169 - 44032: 0xB0D1,\n\t44170 - 44032: 0xB0D2,\n\t44171 - 44032: 0xB0D3,\n\t44172 - 44032: 0xB0D4,\n\t44173 - 44032: 0x81A6,\n\t44174 - 44032: 0x81A7,\n\t44175 - 44032: 0x81A8,\n\t44176 - 44032: 0xB0D5,\n\t44177 - 44032: 0x81A9,\n\t44178 - 44032: 0x81AA,\n\t44179 - 44032: 0x81AB,\n\t44180 - 44032: 0xB0D6,\n\t44181 - 44032: 0x81AC,\n\t44182 - 44032: 0x81AD,\n\t44183 - 44032: 0x81AE,\n\t44184 - 44032: 0x81AF,\n\t44185 - 44032: 0x81B0,\n\t44186 - 44032: 0x81B1,\n\t44187 - 44032: 0x81B2,\n\t44188 - 44032: 0xB0D7,\n\t44189 - 44032: 0xB0D8,\n\t44190 - 44032: 0x81B3,\n\t44191 - 44032: 0xB0D9,\n\t44192 - 44032: 0xB0DA,\n\t44193 - 44032: 0xB0DB,\n\t44194 - 44032: 0x81B4,\n\t44195 - 44032: 0x81B5,\n\t44196 - 44032: 0x81B6,\n\t44197 - 44032: 0x81B7,\n\t44198 - 44032: 0x81B8,\n\t44199 - 44032: 0x81B9,\n\t44200 - 44032: 0xB0DC,\n\t44201 - 44032: 0xB0DD,\n\t44202 - 44032: 0xB0DE,\n\t44203 - 44032: 0x81BA,\n\t44204 - 44032: 0xB0DF,\n\t44205 - 44032: 0x81BB,\n\t44206 - 44032: 0x81BC,\n\t44207 - 44032: 0xB0E0,\n\t44208 - 44032: 0xB0E1,\n\t44209 - 44032: 0x81BD,\n\t44210 - 44032: 0x81BE,\n\t44211 - 44032: 0x81BF,\n\t44212 - 44032: 0x81C0,\n\t44213 - 44032: 0x81C1,\n\t44214 - 44032: 0x81C2,\n\t44215 - 44032: 0x81C3,\n\t44216 - 44032: 0xB0E2,\n\t44217 - 44032: 0xB0E3,\n\t44218 - 44032: 0x81C4,\n\t44219 - 44032: 0xB0E4,\n\t44220 - 44032: 0xB0E5,\n\t44221 - 44032: 0xB0E6,\n\t44222 - 44032: 0x81C5,\n\t44223 - 44032: 0x81C6,\n\t44224 - 44032: 0x81C7,\n\t44225 - 44032: 0xB0E7,\n\t44226 - 44032: 0x81C8,\n\t44227 - 44032: 0x81C9,\n\t44228 - 44032: 0xB0E8,\n\t44229 - 44032: 0x81CA,\n\t44230 - 44032: 0x81CB,\n\t44231 - 44032: 0x81CC,\n\t44232 - 44032: 0xB0E9,\n\t44233 - 44032: 0x81CD,\n\t44234 - 44032: 0x81CE,\n\t44235 - 44032: 0x81CF,\n\t44236 - 44032: 0xB0EA,\n\t44237 - 44032: 0x81D0,\n\t44238 - 44032: 0x81D1,\n\t44239 - 44032: 0x81D2,\n\t44240 - 44032: 0x81D3,\n\t44241 - 44032: 0x81D4,\n\t44242 - 44032: 0x81D5,\n\t44243 - 44032: 0x81D6,\n\t44244 - 44032: 0x81D7,\n\t44245 - 44032: 0xB0EB,\n\t44246 - 44032: 0x81D8,\n\t44247 - 44032: 0xB0EC,\n\t44248 - 44032: 0x81D9,\n\t44249 - 44032: 0x81DA,\n\t44250 - 44032: 0x81DB,\n\t44251 - 44032: 0x81DC,\n\t44252 - 44032: 0x81DD,\n\t44253 - 44032: 0x81DE,\n\t44254 - 44032: 0x81DF,\n\t44255 - 44032: 0x81E0,\n\t44256 - 44032: 0xB0ED,\n\t44257 - 44032: 0xB0EE,\n\t44258 - 44032: 0x81E1,\n\t44259 - 44032: 0x81E2,\n\t44260 - 44032: 0xB0EF,\n\t44261 - 44032: 0x81E3,\n\t44262 - 44032: 0x81E4,\n\t44263 - 44032: 0xB0F0,\n\t44264 - 44032: 0xB0F1,\n\t44265 - 44032: 0x81E5,\n\t44266 - 44032: 0xB0F2,\n\t44267 - 44032: 0x81E6,\n\t44268 - 44032: 0xB0F3,\n\t44269 - 44032: 0x81E7,\n\t44270 - 44032: 0x81E8,\n\t44271 - 44032: 0xB0F4,\n\t44272 - 44032: 0xB0F5,\n\t44273 - 44032: 0xB0F6,\n\t44274 - 44032: 0x81E9,\n\t44275 - 44032: 0xB0F7,\n\t44276 - 44032: 0x81EA,\n\t44277 - 44032: 0xB0F8,\n\t44278 - 44032: 0xB0F9,\n\t44279 - 44032: 0x81EB,\n\t44280 - 44032: 0x81EC,\n\t44281 - 44032: 0x81ED,\n\t44282 - 44032: 0x81EE,\n\t44283 - 44032: 0x81EF,\n\t44284 - 44032: 0xB0FA,\n\t44285 - 44032: 0xB0FB,\n\t44286 - 44032: 0x81F0,\n\t44287 - 44032: 0x81F1,\n\t44288 - 44032: 0xB0FC,\n\t44289 - 44032: 0x81F2,\n\t44290 - 44032: 0x81F3,\n\t44291 - 44032: 0x81F4,\n\t44292 - 44032: 0xB0FD,\n\t44293 - 44032: 0x81F5,\n\t44294 - 44032: 0xB0FE,\n\t44295 - 44032: 0x81F6,\n\t44296 - 44032: 0x81F7,\n\t44297 - 44032: 0x81F8,\n\t44298 - 44032: 0x81F9,\n\t44299 - 44032: 0x81FA,\n\t44300 - 44032: 0xB1A1,\n\t44301 - 44032: 0xB1A2,\n\t44302 - 44032: 0x81FB,\n\t44303 - 44032: 0xB1A3,\n\t44304 - 44032: 0x81FC,\n\t44305 - 44032: 0xB1A4,\n\t44306 - 44032: 0x81FD,\n\t44307 - 44032: 0x81FE,\n\t44308 - 44032: 0x8241,\n\t44309 - 44032: 0x8242,\n\t44310 - 44032: 0x8243,\n\t44311 - 44032: 0x8244,\n\t44312 - 44032: 0xB1A5,\n\t44313 - 44032: 0x8245,\n\t44314 - 44032: 0x8246,\n\t44315 - 44032: 0x8247,\n\t44316 - 44032: 0xB1A6,\n\t44317 - 44032: 0x8248,\n\t44318 - 44032: 0x8249,\n\t44319 - 44032: 0x824A,\n\t44320 - 44032: 0xB1A7,\n\t44321 - 44032: 0x824B,\n\t44322 - 44032: 0x824C,\n\t44323 - 44032: 0x824D,\n\t44324 - 44032: 0x824E,\n\t44325 - 44032: 0x824F,\n\t44326 - 44032: 0x8250,\n\t44327 - 44032: 0x8251,\n\t44328 - 44032: 0x8252,\n\t44329 - 44032: 0xB1A8,\n\t44330 - 44032: 0x8253,\n\t44331 - 44032: 0x8254,\n\t44332 - 44032: 0xB1A9,\n\t44333 - 44032: 0xB1AA,\n\t44334 - 44032: 0x8255,\n\t44335 - 44032: 0x8256,\n\t44336 - 44032: 0x8257,\n\t44337 - 44032: 0x8258,\n\t44338 - 44032: 0x8259,\n\t44339 - 44032: 0x825A,\n\t44340 - 44032: 0xB1AB,\n\t44341 - 44032: 0xB1AC,\n\t44342 - 44032: 0x8261,\n\t44343 - 44032: 0x8262,\n\t44344 - 44032: 0xB1AD,\n\t44345 - 44032: 0x8263,\n\t44346 - 44032: 0x8264,\n\t44347 - 44032: 0x8265,\n\t44348 - 44032: 0xB1AE,\n\t44349 - 44032: 0x8266,\n\t44350 - 44032: 0x8267,\n\t44351 - 44032: 0x8268,\n\t44352 - 44032: 0x8269,\n\t44353 - 44032: 0x826A,\n\t44354 - 44032: 0x826B,\n\t44355 - 44032: 0x826C,\n\t44356 - 44032: 0xB1AF,\n\t44357 - 44032: 0xB1B0,\n\t44358 - 44032: 0x826D,\n\t44359 - 44032: 0xB1B1,\n\t44360 - 44032: 0x826E,\n\t44361 - 44032: 0xB1B2,\n\t44362 - 44032: 0x826F,\n\t44363 - 44032: 0x8270,\n\t44364 - 44032: 0x8271,\n\t44365 - 44032: 0x8272,\n\t44366 - 44032: 0x8273,\n\t44367 - 44032: 0x8274,\n\t44368 - 44032: 0xB1B3,\n\t44369 - 44032: 0x8275,\n\t44370 - 44032: 0x8276,\n\t44371 - 44032: 0x8277,\n\t44372 - 44032: 0xB1B4,\n\t44373 - 44032: 0x8278,\n\t44374 - 44032: 0x8279,\n\t44375 - 44032: 0x827A,\n\t44376 - 44032: 0xB1B5,\n\t44377 - 44032: 0x8281,\n\t44378 - 44032: 0x8282,\n\t44379 - 44032: 0x8283,\n\t44380 - 44032: 0x8284,\n\t44381 - 44032: 0x8285,\n\t44382 - 44032: 0x8286,\n\t44383 - 44032: 0x8287,\n\t44384 - 44032: 0x8288,\n\t44385 - 44032: 0xB1B6,\n\t44386 - 44032: 0x8289,\n\t44387 - 44032: 0xB1B7,\n\t44388 - 44032: 0x828A,\n\t44389 - 44032: 0x828B,\n\t44390 - 44032: 0x828C,\n\t44391 - 44032: 0x828D,\n\t44392 - 44032: 0x828E,\n\t44393 - 44032: 0x828F,\n\t44394 - 44032: 0x8290,\n\t44395 - 44032: 0x8291,\n\t44396 - 44032: 0xB1B8,\n\t44397 - 44032: 0xB1B9,\n\t44398 - 44032: 0x8292,\n\t44399 - 44032: 0x8293,\n\t44400 - 44032: 0xB1BA,\n\t44401 - 44032: 0x8294,\n\t44402 - 44032: 0x8295,\n\t44403 - 44032: 0xB1BB,\n\t44404 - 44032: 0xB1BC,\n\t44405 - 44032: 0xB1BD,\n\t44406 - 44032: 0xB1BE,\n\t44407 - 44032: 0x8296,\n\t44408 - 44032: 0x8297,\n\t44409 - 44032: 0x8298,\n\t44410 - 44032: 0x8299,\n\t44411 - 44032: 0xB1BF,\n\t44412 - 44032: 0xB1C0,\n\t44413 - 44032: 0xB1C1,\n\t44414 - 44032: 0x829A,\n\t44415 - 44032: 0xB1C2,\n\t44416 - 44032: 0x829B,\n\t44417 - 44032: 0xB1C3,\n\t44418 - 44032: 0xB1C4,\n\t44419 - 44032: 0x829C,\n\t44420 - 44032: 0x829D,\n\t44421 - 44032: 0x829E,\n\t44422 - 44032: 0x829F,\n\t44423 - 44032: 0x82A0,\n\t44424 - 44032: 0xB1C5,\n\t44425 - 44032: 0xB1C6,\n\t44426 - 44032: 0x82A1,\n\t44427 - 44032: 0x82A2,\n\t44428 - 44032: 0xB1C7,\n\t44429 - 44032: 0x82A3,\n\t44430 - 44032: 0x82A4,\n\t44431 - 44032: 0x82A5,\n\t44432 - 44032: 0xB1C8,\n\t44433 - 44032: 0x82A6,\n\t44434 - 44032: 0x82A7,\n\t44435 - 44032: 0x82A8,\n\t44436 - 44032: 0x82A9,\n\t44437 - 44032: 0x82AA,\n\t44438 - 44032: 0x82AB,\n\t44439 - 44032: 0x82AC,\n\t44440 - 44032: 0x82AD,\n\t44441 - 44032: 0x82AE,\n\t44442 - 44032: 0x82AF,\n\t44443 - 44032: 0x82B0,\n\t44444 - 44032: 0xB1C9,\n\t44445 - 44032: 0xB1CA,\n\t44446 - 44032: 0x82B1,\n\t44447 - 44032: 0x82B2,\n\t44448 - 44032: 0x82B3,\n\t44449 - 44032: 0x82B4,\n\t44450 - 44032: 0x82B5,\n\t44451 - 44032: 0x82B6,\n\t44452 - 44032: 0xB1CB,\n\t44453 - 44032: 0x82B7,\n\t44454 - 44032: 0x82B8,\n\t44455 - 44032: 0x82B9,\n\t44456 - 44032: 0x82BA,\n\t44457 - 44032: 0x82BB,\n\t44458 - 44032: 0x82BC,\n\t44459 - 44032: 0x82BD,\n\t44460 - 44032: 0x82BE,\n\t44461 - 44032: 0x82BF,\n\t44462 - 44032: 0x82C0,\n\t44463 - 44032: 0x82C1,\n\t44464 - 44032: 0x82C2,\n\t44465 - 44032: 0x82C3,\n\t44466 - 44032: 0x82C4,\n\t44467 - 44032: 0x82C5,\n\t44468 - 44032: 0x82C6,\n\t44469 - 44032: 0x82C7,\n\t44470 - 44032: 0x82C8,\n\t44471 - 44032: 0xB1CC,\n\t44472 - 44032: 0x82C9,\n\t44473 - 44032: 0x82CA,\n\t44474 - 44032: 0x82CB,\n\t44475 - 44032: 0x82CC,\n\t44476 - 44032: 0x82CD,\n\t44477 - 44032: 0x82CE,\n\t44478 - 44032: 0x82CF,\n\t44479 - 44032: 0x82D0,\n\t44480 - 44032: 0xB1CD,\n\t44481 - 44032: 0xB1CE,\n\t44482 - 44032: 0x82D1,\n\t44483 - 44032: 0x82D2,\n\t44484 - 44032: 0xB1CF,\n\t44485 - 44032: 0x82D3,\n\t44486 - 44032: 0x82D4,\n\t44487 - 44032: 0x82D5,\n\t44488 - 44032: 0xB1D0,\n\t44489 - 44032: 0x82D6,\n\t44490 - 44032: 0x82D7,\n\t44491 - 44032: 0x82D8,\n\t44492 - 44032: 0x82D9,\n\t44493 - 44032: 0x82DA,\n\t44494 - 44032: 0x82DB,\n\t44495 - 44032: 0x82DC,\n\t44496 - 44032: 0xB1D1,\n\t44497 - 44032: 0xB1D2,\n\t44498 - 44032: 0x82DD,\n\t44499 - 44032: 0xB1D3,\n\t44500 - 44032: 0x82DE,\n\t44501 - 44032: 0x82DF,\n\t44502 - 44032: 0x82E0,\n\t44503 - 44032: 0x82E1,\n\t44504 - 44032: 0x82E2,\n\t44505 - 44032: 0x82E3,\n\t44506 - 44032: 0x82E4,\n\t44507 - 44032: 0x82E5,\n\t44508 - 44032: 0xB1D4,\n\t44509 - 44032: 0x82E6,\n\t44510 - 44032: 0x82E7,\n\t44511 - 44032: 0x82E8,\n\t44512 - 44032: 0xB1D5,\n\t44513 - 44032: 0x82E9,\n\t44514 - 44032: 0x82EA,\n\t44515 - 44032: 0x82EB,\n\t44516 - 44032: 0xB1D6,\n\t44517 - 44032: 0x82EC,\n\t44518 - 44032: 0x82ED,\n\t44519 - 44032: 0x82EE,\n\t44520 - 44032: 0x82EF,\n\t44521 - 44032: 0x82F0,\n\t44522 - 44032: 0x82F1,\n\t44523 - 44032: 0x82F2,\n\t44524 - 44032: 0x82F3,\n\t44525 - 44032: 0x82F4,\n\t44526 - 44032: 0x82F5,\n\t44527 - 44032: 0x82F6,\n\t44528 - 44032: 0x82F7,\n\t44529 - 44032: 0x82F8,\n\t44530 - 44032: 0x82F9,\n\t44531 - 44032: 0x82FA,\n\t44532 - 44032: 0x82FB,\n\t44533 - 44032: 0x82FC,\n\t44534 - 44032: 0x82FD,\n\t44535 - 44032: 0x82FE,\n\t44536 - 44032: 0xB1D7,\n\t44537 - 44032: 0xB1D8,\n\t44538 - 44032: 0x8341,\n\t44539 - 44032: 0x8342,\n\t44540 - 44032: 0xB1D9,\n\t44541 - 44032: 0x8343,\n\t44542 - 44032: 0x8344,\n\t44543 - 44032: 0xB1DA,\n\t44544 - 44032: 0xB1DB,\n\t44545 - 44032: 0xB1DC,\n\t44546 - 44032: 0x8345,\n\t44547 - 44032: 0x8346,\n\t44548 - 44032: 0x8347,\n\t44549 - 44032: 0x8348,\n\t44550 - 44032: 0x8349,\n\t44551 - 44032: 0x834A,\n\t44552 - 44032: 0xB1DD,\n\t44553 - 44032: 0xB1DE,\n\t44554 - 44032: 0x834B,\n\t44555 - 44032: 0xB1DF,\n\t44556 - 44032: 0x834C,\n\t44557 - 44032: 0xB1E0,\n\t44558 - 44032: 0x834D,\n\t44559 - 44032: 0x834E,\n\t44560 - 44032: 0x834F,\n\t44561 - 44032: 0x8350,\n\t44562 - 44032: 0x8351,\n\t44563 - 44032: 0x8352,\n\t44564 - 44032: 0xB1E1,\n\t44565 - 44032: 0x8353,\n\t44566 - 44032: 0x8354,\n\t44567 - 44032: 0x8355,\n\t44568 - 44032: 0x8356,\n\t44569 - 44032: 0x8357,\n\t44570 - 44032: 0x8358,\n\t44571 - 44032: 0x8359,\n\t44572 - 44032: 0x835A,\n\t44573 - 44032: 0x8361,\n\t44574 - 44032: 0x8362,\n\t44575 - 44032: 0x8363,\n\t44576 - 44032: 0x8364,\n\t44577 - 44032: 0x8365,\n\t44578 - 44032: 0x8366,\n\t44579 - 44032: 0x8367,\n\t44580 - 44032: 0x8368,\n\t44581 - 44032: 0x8369,\n\t44582 - 44032: 0x836A,\n\t44583 - 44032: 0x836B,\n\t44584 - 44032: 0x836C,\n\t44585 - 44032: 0x836D,\n\t44586 - 44032: 0x836E,\n\t44587 - 44032: 0x836F,\n\t44588 - 44032: 0x8370,\n\t44589 - 44032: 0x8371,\n\t44590 - 44032: 0x8372,\n\t44591 - 44032: 0x8373,\n\t44592 - 44032: 0xB1E2,\n\t44593 - 44032: 0xB1E3,\n\t44594 - 44032: 0x8374,\n\t44595 - 44032: 0x8375,\n\t44596 - 44032: 0xB1E4,\n\t44597 - 44032: 0x8376,\n\t44598 - 44032: 0x8377,\n\t44599 - 44032: 0xB1E5,\n\t44600 - 44032: 0xB1E6,\n\t44601 - 44032: 0x8378,\n\t44602 - 44032: 0xB1E7,\n\t44603 - 44032: 0x8379,\n\t44604 - 44032: 0x837A,\n\t44605 - 44032: 0x8381,\n\t44606 - 44032: 0x8382,\n\t44607 - 44032: 0x8383,\n\t44608 - 44032: 0xB1E8,\n\t44609 - 44032: 0xB1E9,\n\t44610 - 44032: 0x8384,\n\t44611 - 44032: 0xB1EA,\n\t44612 - 44032: 0x8385,\n\t44613 - 44032: 0xB1EB,\n\t44614 - 44032: 0xB1EC,\n\t44615 - 44032: 0x8386,\n\t44616 - 44032: 0x8387,\n\t44617 - 44032: 0x8388,\n\t44618 - 44032: 0xB1ED,\n\t44619 - 44032: 0x8389,\n\t44620 - 44032: 0xB1EE,\n\t44621 - 44032: 0xB1EF,\n\t44622 - 44032: 0xB1F0,\n\t44623 - 44032: 0x838A,\n\t44624 - 44032: 0xB1F1,\n\t44625 - 44032: 0x838B,\n\t44626 - 44032: 0x838C,\n\t44627 - 44032: 0x838D,\n\t44628 - 44032: 0xB1F2,\n\t44629 - 44032: 0x838E,\n\t44630 - 44032: 0xB1F3,\n\t44631 - 44032: 0x838F,\n\t44632 - 44032: 0x8390,\n\t44633 - 44032: 0x8391,\n\t44634 - 44032: 0x8392,\n\t44635 - 44032: 0x8393,\n\t44636 - 44032: 0xB1F4,\n\t44637 - 44032: 0xB1F5,\n\t44638 - 44032: 0x8394,\n\t44639 - 44032: 0xB1F6,\n\t44640 - 44032: 0xB1F7,\n\t44641 - 44032: 0xB1F8,\n\t44642 - 44032: 0x8395,\n\t44643 - 44032: 0x8396,\n\t44644 - 44032: 0x8397,\n\t44645 - 44032: 0xB1F9,\n\t44646 - 44032: 0x8398,\n\t44647 - 44032: 0x8399,\n\t44648 - 44032: 0xB1FA,\n\t44649 - 44032: 0xB1FB,\n\t44650 - 44032: 0x839A,\n\t44651 - 44032: 0x839B,\n\t44652 - 44032: 0xB1FC,\n\t44653 - 44032: 0x839C,\n\t44654 - 44032: 0x839D,\n\t44655 - 44032: 0x839E,\n\t44656 - 44032: 0xB1FD,\n\t44657 - 44032: 0x839F,\n\t44658 - 44032: 0x83A0,\n\t44659 - 44032: 0x83A1,\n\t44660 - 44032: 0x83A2,\n\t44661 - 44032: 0x83A3,\n\t44662 - 44032: 0x83A4,\n\t44663 - 44032: 0x83A5,\n\t44664 - 44032: 0xB1FE,\n\t44665 - 44032: 0xB2A1,\n\t44666 - 44032: 0x83A6,\n\t44667 - 44032: 0xB2A2,\n\t44668 - 44032: 0xB2A3,\n\t44669 - 44032: 0xB2A4,\n\t44670 - 44032: 0x83A7,\n\t44671 - 44032: 0x83A8,\n\t44672 - 44032: 0x83A9,\n\t44673 - 44032: 0x83AA,\n\t44674 - 44032: 0x83AB,\n\t44675 - 44032: 0x83AC,\n\t44676 - 44032: 0xB2A5,\n\t44677 - 44032: 0xB2A6,\n\t44678 - 44032: 0x83AD,\n\t44679 - 44032: 0x83AE,\n\t44680 - 44032: 0x83AF,\n\t44681 - 44032: 0x83B0,\n\t44682 - 44032: 0x83B1,\n\t44683 - 44032: 0x83B2,\n\t44684 - 44032: 0xB2A7,\n\t44685 - 44032: 0x83B3,\n\t44686 - 44032: 0x83B4,\n\t44687 - 44032: 0x83B5,\n\t44688 - 44032: 0x83B6,\n\t44689 - 44032: 0x83B7,\n\t44690 - 44032: 0x83B8,\n\t44691 - 44032: 0x83B9,\n\t44692 - 44032: 0x83BA,\n\t44693 - 44032: 0x83BB,\n\t44694 - 44032: 0x83BC,\n\t44695 - 44032: 0x83BD,\n\t44696 - 44032: 0x83BE,\n\t44697 - 44032: 0x83BF,\n\t44698 - 44032: 0x83C0,\n\t44699 - 44032: 0x83C1,\n\t44700 - 44032: 0x83C2,\n\t44701 - 44032: 0x83C3,\n\t44702 - 44032: 0x83C4,\n\t44703 - 44032: 0x83C5,\n\t44704 - 44032: 0x83C6,\n\t44705 - 44032: 0x83C7,\n\t44706 - 44032: 0x83C8,\n\t44707 - 44032: 0x83C9,\n\t44708 - 44032: 0x83CA,\n\t44709 - 44032: 0x83CB,\n\t44710 - 44032: 0x83CC,\n\t44711 - 44032: 0x83CD,\n\t44712 - 44032: 0x83CE,\n\t44713 - 44032: 0x83CF,\n\t44714 - 44032: 0x83D0,\n\t44715 - 44032: 0x83D1,\n\t44716 - 44032: 0x83D2,\n\t44717 - 44032: 0x83D3,\n\t44718 - 44032: 0x83D4,\n\t44719 - 44032: 0x83D5,\n\t44720 - 44032: 0x83D6,\n\t44721 - 44032: 0x83D7,\n\t44722 - 44032: 0x83D8,\n\t44723 - 44032: 0x83D9,\n\t44724 - 44032: 0x83DA,\n\t44725 - 44032: 0x83DB,\n\t44726 - 44032: 0x83DC,\n\t44727 - 44032: 0x83DD,\n\t44728 - 44032: 0x83DE,\n\t44729 - 44032: 0x83DF,\n\t44730 - 44032: 0x83E0,\n\t44731 - 44032: 0x83E1,\n\t44732 - 44032: 0xB2A8,\n\t44733 - 44032: 0xB2A9,\n\t44734 - 44032: 0xB2AA,\n\t44735 - 44032: 0x83E2,\n\t44736 - 44032: 0xB2AB,\n\t44737 - 44032: 0x83E3,\n\t44738 - 44032: 0x83E4,\n\t44739 - 44032: 0x83E5,\n\t44740 - 44032: 0xB2AC,\n\t44741 - 44032: 0x83E6,\n\t44742 - 44032: 0x83E7,\n\t44743 - 44032: 0x83E8,\n\t44744 - 44032: 0x83E9,\n\t44745 - 44032: 0x83EA,\n\t44746 - 44032: 0x83EB,\n\t44747 - 44032: 0x83EC,\n\t44748 - 44032: 0xB2AD,\n\t44749 - 44032: 0xB2AE,\n\t44750 - 44032: 0x83ED,\n\t44751 - 44032: 0xB2AF,\n\t44752 - 44032: 0xB2B0,\n\t44753 - 44032: 0xB2B1,\n\t44754 - 44032: 0x83EE,\n\t44755 - 44032: 0x83EF,\n\t44756 - 44032: 0x83F0,\n\t44757 - 44032: 0x83F1,\n\t44758 - 44032: 0x83F2,\n\t44759 - 44032: 0x83F3,\n\t44760 - 44032: 0xB2B2,\n\t44761 - 44032: 0xB2B3,\n\t44762 - 44032: 0x83F4,\n\t44763 - 44032: 0x83F5,\n\t44764 - 44032: 0xB2B4,\n\t44765 - 44032: 0x83F6,\n\t44766 - 44032: 0x83F7,\n\t44767 - 44032: 0x83F8,\n\t44768 - 44032: 0x83F9,\n\t44769 - 44032: 0x83FA,\n\t44770 - 44032: 0x83FB,\n\t44771 - 44032: 0x83FC,\n\t44772 - 44032: 0x83FD,\n\t44773 - 44032: 0x83FE,\n\t44774 - 44032: 0x8441,\n\t44775 - 44032: 0x8442,\n\t44776 - 44032: 0xB2B5,\n\t44777 - 44032: 0x8443,\n\t44778 - 44032: 0x8444,\n\t44779 - 44032: 0xB2B6,\n\t44780 - 44032: 0x8445,\n\t44781 - 44032: 0xB2B7,\n\t44782 - 44032: 0x8446,\n\t44783 - 44032: 0x8447,\n\t44784 - 44032: 0x8448,\n\t44785 - 44032: 0x8449,\n\t44786 - 44032: 0x844A,\n\t44787 - 44032: 0x844B,\n\t44788 - 44032: 0xB2B8,\n\t44789 - 44032: 0x844C,\n\t44790 - 44032: 0x844D,\n\t44791 - 44032: 0x844E,\n\t44792 - 44032: 0xB2B9,\n\t44793 - 44032: 0x844F,\n\t44794 - 44032: 0x8450,\n\t44795 - 44032: 0x8451,\n\t44796 - 44032: 0xB2BA,\n\t44797 - 44032: 0x8452,\n\t44798 - 44032: 0x8453,\n\t44799 - 44032: 0x8454,\n\t44800 - 44032: 0x8455,\n\t44801 - 44032: 0x8456,\n\t44802 - 44032: 0x8457,\n\t44803 - 44032: 0x8458,\n\t44804 - 44032: 0x8459,\n\t44805 - 44032: 0x845A,\n\t44806 - 44032: 0x8461,\n\t44807 - 44032: 0xB2BB,\n\t44808 - 44032: 0xB2BC,\n\t44809 - 44032: 0x8462,\n\t44810 - 44032: 0x8463,\n\t44811 - 44032: 0x8464,\n\t44812 - 44032: 0x8465,\n\t44813 - 44032: 0xB2BD,\n\t44814 - 44032: 0x8466,\n\t44815 - 44032: 0x8467,\n\t44816 - 44032: 0xB2BE,\n\t44817 - 44032: 0x8468,\n\t44818 - 44032: 0x8469,\n\t44819 - 44032: 0x846A,\n\t44820 - 44032: 0x846B,\n\t44821 - 44032: 0x846C,\n\t44822 - 44032: 0x846D,\n\t44823 - 44032: 0x846E,\n\t44824 - 44032: 0x846F,\n\t44825 - 44032: 0x8470,\n\t44826 - 44032: 0x8471,\n\t44827 - 44032: 0x8472,\n\t44828 - 44032: 0x8473,\n\t44829 - 44032: 0x8474,\n\t44830 - 44032: 0x8475,\n\t44831 - 44032: 0x8476,\n\t44832 - 44032: 0x8477,\n\t44833 - 44032: 0x8478,\n\t44834 - 44032: 0x8479,\n\t44835 - 44032: 0x847A,\n\t44836 - 44032: 0x8481,\n\t44837 - 44032: 0x8482,\n\t44838 - 44032: 0x8483,\n\t44839 - 44032: 0x8484,\n\t44840 - 44032: 0x8485,\n\t44841 - 44032: 0x8486,\n\t44842 - 44032: 0x8487,\n\t44843 - 44032: 0x8488,\n\t44844 - 44032: 0xB2BF,\n\t44845 - 44032: 0xB2C0,\n\t44846 - 44032: 0x8489,\n\t44847 - 44032: 0x848A,\n\t44848 - 44032: 0xB2C1,\n\t44849 - 44032: 0x848B,\n\t44850 - 44032: 0xB2C2,\n\t44851 - 44032: 0x848C,\n\t44852 - 44032: 0xB2C3,\n\t44853 - 44032: 0x848D,\n\t44854 - 44032: 0x848E,\n\t44855 - 44032: 0x848F,\n\t44856 - 44032: 0x8490,\n\t44857 - 44032: 0x8491,\n\t44858 - 44032: 0x8492,\n\t44859 - 44032: 0x8493,\n\t44860 - 44032: 0xB2C4,\n\t44861 - 44032: 0xB2C5,\n\t44862 - 44032: 0x8494,\n\t44863 - 44032: 0xB2C6,\n\t44864 - 44032: 0x8495,\n\t44865 - 44032: 0xB2C7,\n\t44866 - 44032: 0xB2C8,\n\t44867 - 44032: 0xB2C9,\n\t44868 - 44032: 0x8496,\n\t44869 - 44032: 0x8497,\n\t44870 - 44032: 0x8498,\n\t44871 - 44032: 0x8499,\n\t44872 - 44032: 0xB2CA,\n\t44873 - 44032: 0xB2CB,\n\t44874 - 44032: 0x849A,\n\t44875 - 44032: 0x849B,\n\t44876 - 44032: 0x849C,\n\t44877 - 44032: 0x849D,\n\t44878 - 44032: 0x849E,\n\t44879 - 44032: 0x849F,\n\t44880 - 44032: 0xB2CC,\n\t44881 - 44032: 0x84A0,\n\t44882 - 44032: 0x84A1,\n\t44883 - 44032: 0x84A2,\n\t44884 - 44032: 0x84A3,\n\t44885 - 44032: 0x84A4,\n\t44886 - 44032: 0x84A5,\n\t44887 - 44032: 0x84A6,\n\t44888 - 44032: 0x84A7,\n\t44889 - 44032: 0x84A8,\n\t44890 - 44032: 0x84A9,\n\t44891 - 44032: 0x84AA,\n\t44892 - 44032: 0xB2CD,\n\t44893 - 44032: 0xB2CE,\n\t44894 - 44032: 0x84AB,\n\t44895 - 44032: 0x84AC,\n\t44896 - 44032: 0x84AD,\n\t44897 - 44032: 0x84AE,\n\t44898 - 44032: 0x84AF,\n\t44899 - 44032: 0x84B0,\n\t44900 - 44032: 0xB2CF,\n\t44901 - 44032: 0xB2D0,\n\t44902 - 44032: 0x84B1,\n\t44903 - 44032: 0x84B2,\n\t44904 - 44032: 0x84B3,\n\t44905 - 44032: 0x84B4,\n\t44906 - 44032: 0x84B5,\n\t44907 - 44032: 0x84B6,\n\t44908 - 44032: 0x84B7,\n\t44909 - 44032: 0x84B8,\n\t44910 - 44032: 0x84B9,\n\t44911 - 44032: 0x84BA,\n\t44912 - 44032: 0x84BB,\n\t44913 - 44032: 0x84BC,\n\t44914 - 44032: 0x84BD,\n\t44915 - 44032: 0x84BE,\n\t44916 - 44032: 0x84BF,\n\t44917 - 44032: 0x84C0,\n\t44918 - 44032: 0x84C1,\n\t44919 - 44032: 0x84C2,\n\t44920 - 44032: 0x84C3,\n\t44921 - 44032: 0xB2D1,\n\t44922 - 44032: 0x84C4,\n\t44923 - 44032: 0x84C5,\n\t44924 - 44032: 0x84C6,\n\t44925 - 44032: 0x84C7,\n\t44926 - 44032: 0x84C8,\n\t44927 - 44032: 0x84C9,\n\t44928 - 44032: 0xB2D2,\n\t44929 - 44032: 0x84CA,\n\t44930 - 44032: 0x84CB,\n\t44931 - 44032: 0x84CC,\n\t44932 - 44032: 0xB2D3,\n\t44933 - 44032: 0x84CD,\n\t44934 - 44032: 0x84CE,\n\t44935 - 44032: 0x84CF,\n\t44936 - 44032: 0xB2D4,\n\t44937 - 44032: 0x84D0,\n\t44938 - 44032: 0x84D1,\n\t44939 - 44032: 0x84D2,\n\t44940 - 44032: 0x84D3,\n\t44941 - 44032: 0x84D4,\n\t44942 - 44032: 0x84D5,\n\t44943 - 44032: 0x84D6,\n\t44944 - 44032: 0xB2D5,\n\t44945 - 44032: 0xB2D6,\n\t44946 - 44032: 0x84D7,\n\t44947 - 44032: 0x84D8,\n\t44948 - 44032: 0x84D9,\n\t44949 - 44032: 0xB2D7,\n\t44950 - 44032: 0x84DA,\n\t44951 - 44032: 0x84DB,\n\t44952 - 44032: 0x84DC,\n\t44953 - 44032: 0x84DD,\n\t44954 - 44032: 0x84DE,\n\t44955 - 44032: 0x84DF,\n\t44956 - 44032: 0xB2D8,\n\t44957 - 44032: 0x84E0,\n\t44958 - 44032: 0x84E1,\n\t44959 - 44032: 0x84E2,\n\t44960 - 44032: 0x84E3,\n\t44961 - 44032: 0x84E4,\n\t44962 - 44032: 0x84E5,\n\t44963 - 44032: 0x84E6,\n\t44964 - 44032: 0x84E7,\n\t44965 - 44032: 0x84E8,\n\t44966 - 44032: 0x84E9,\n\t44967 - 44032: 0x84EA,\n\t44968 - 44032: 0x84EB,\n\t44969 - 44032: 0x84EC,\n\t44970 - 44032: 0x84ED,\n\t44971 - 44032: 0x84EE,\n\t44972 - 44032: 0x84EF,\n\t44973 - 44032: 0x84F0,\n\t44974 - 44032: 0x84F1,\n\t44975 - 44032: 0x84F2,\n\t44976 - 44032: 0x84F3,\n\t44977 - 44032: 0x84F4,\n\t44978 - 44032: 0x84F5,\n\t44979 - 44032: 0x84F6,\n\t44980 - 44032: 0x84F7,\n\t44981 - 44032: 0x84F8,\n\t44982 - 44032: 0x84F9,\n\t44983 - 44032: 0x84FA,\n\t44984 - 44032: 0xB2D9,\n\t44985 - 44032: 0xB2DA,\n\t44986 - 44032: 0x84FB,\n\t44987 - 44032: 0x84FC,\n\t44988 - 44032: 0xB2DB,\n\t44989 - 44032: 0x84FD,\n\t44990 - 44032: 0x84FE,\n\t44991 - 44032: 0x8541,\n\t44992 - 44032: 0xB2DC,\n\t44993 - 44032: 0x8542,\n\t44994 - 44032: 0x8543,\n\t44995 - 44032: 0x8544,\n\t44996 - 44032: 0x8545,\n\t44997 - 44032: 0x8546,\n\t44998 - 44032: 0x8547,\n\t44999 - 44032: 0xB2DD,\n\t45000 - 44032: 0xB2DE,\n\t45001 - 44032: 0xB2DF,\n\t45002 - 44032: 0x8548,\n\t45003 - 44032: 0xB2E0,\n\t45004 - 44032: 0x8549,\n\t45005 - 44032: 0xB2E1,\n\t45006 - 44032: 0xB2E2,\n\t45007 - 44032: 0x854A,\n\t45008 - 44032: 0x854B,\n\t45009 - 44032: 0x854C,\n\t45010 - 44032: 0x854D,\n\t45011 - 44032: 0x854E,\n\t45012 - 44032: 0xB2E3,\n\t45013 - 44032: 0x854F,\n\t45014 - 44032: 0x8550,\n\t45015 - 44032: 0x8551,\n\t45016 - 44032: 0x8552,\n\t45017 - 44032: 0x8553,\n\t45018 - 44032: 0x8554,\n\t45019 - 44032: 0x8555,\n\t45020 - 44032: 0xB2E4,\n\t45021 - 44032: 0x8556,\n\t45022 - 44032: 0x8557,\n\t45023 - 44032: 0x8558,\n\t45024 - 44032: 0x8559,\n\t45025 - 44032: 0x855A,\n\t45026 - 44032: 0x8561,\n\t45027 - 44032: 0x8562,\n\t45028 - 44032: 0x8563,\n\t45029 - 44032: 0x8564,\n\t45030 - 44032: 0x8565,\n\t45031 - 44032: 0x8566,\n\t45032 - 44032: 0xB2E5,\n\t45033 - 44032: 0xB2E6,\n\t45034 - 44032: 0x8567,\n\t45035 - 44032: 0x8568,\n\t45036 - 44032: 0x8569,\n\t45037 - 44032: 0x856A,\n\t45038 - 44032: 0x856B,\n\t45039 - 44032: 0x856C,\n\t45040 - 44032: 0xB2E7,\n\t45041 - 44032: 0xB2E8,\n\t45042 - 44032: 0x856D,\n\t45043 - 44032: 0x856E,\n\t45044 - 44032: 0xB2E9,\n\t45045 - 44032: 0x856F,\n\t45046 - 44032: 0x8570,\n\t45047 - 44032: 0x8571,\n\t45048 - 44032: 0xB2EA,\n\t45049 - 44032: 0x8572,\n\t45050 - 44032: 0x8573,\n\t45051 - 44032: 0x8574,\n\t45052 - 44032: 0x8575,\n\t45053 - 44032: 0x8576,\n\t45054 - 44032: 0x8577,\n\t45055 - 44032: 0x8578,\n\t45056 - 44032: 0xB2EB,\n\t45057 - 44032: 0xB2EC,\n\t45058 - 44032: 0x8579,\n\t45059 - 44032: 0x857A,\n\t45060 - 44032: 0xB2ED,\n\t45061 - 44032: 0x8581,\n\t45062 - 44032: 0x8582,\n\t45063 - 44032: 0x8583,\n\t45064 - 44032: 0x8584,\n\t45065 - 44032: 0x8585,\n\t45066 - 44032: 0x8586,\n\t45067 - 44032: 0x8587,\n\t45068 - 44032: 0xB2EE,\n\t45069 - 44032: 0x8588,\n\t45070 - 44032: 0x8589,\n\t45071 - 44032: 0x858A,\n\t45072 - 44032: 0xB2EF,\n\t45073 - 44032: 0x858B,\n\t45074 - 44032: 0x858C,\n\t45075 - 44032: 0x858D,\n\t45076 - 44032: 0xB2F0,\n\t45077 - 44032: 0x858E,\n\t45078 - 44032: 0x858F,\n\t45079 - 44032: 0x8590,\n\t45080 - 44032: 0x8591,\n\t45081 - 44032: 0x8592,\n\t45082 - 44032: 0x8593,\n\t45083 - 44032: 0x8594,\n\t45084 - 44032: 0xB2F1,\n\t45085 - 44032: 0xB2F2,\n\t45086 - 44032: 0x8595,\n\t45087 - 44032: 0x8596,\n\t45088 - 44032: 0x8597,\n\t45089 - 44032: 0x8598,\n\t45090 - 44032: 0x8599,\n\t45091 - 44032: 0x859A,\n\t45092 - 44032: 0x859B,\n\t45093 - 44032: 0x859C,\n\t45094 - 44032: 0x859D,\n\t45095 - 44032: 0x859E,\n\t45096 - 44032: 0xB2F3,\n\t45097 - 44032: 0x859F,\n\t45098 - 44032: 0x85A0,\n\t45099 - 44032: 0x85A1,\n\t45100 - 44032: 0x85A2,\n\t45101 - 44032: 0x85A3,\n\t45102 - 44032: 0x85A4,\n\t45103 - 44032: 0x85A5,\n\t45104 - 44032: 0x85A6,\n\t45105 - 44032: 0x85A7,\n\t45106 - 44032: 0x85A8,\n\t45107 - 44032: 0x85A9,\n\t45108 - 44032: 0x85AA,\n\t45109 - 44032: 0x85AB,\n\t45110 - 44032: 0x85AC,\n\t45111 - 44032: 0x85AD,\n\t45112 - 44032: 0x85AE,\n\t45113 - 44032: 0x85AF,\n\t45114 - 44032: 0x85B0,\n\t45115 - 44032: 0x85B1,\n\t45116 - 44032: 0x85B2,\n\t45117 - 44032: 0x85B3,\n\t45118 - 44032: 0x85B4,\n\t45119 - 44032: 0x85B5,\n\t45120 - 44032: 0x85B6,\n\t45121 - 44032: 0x85B7,\n\t45122 - 44032: 0x85B8,\n\t45123 - 44032: 0x85B9,\n\t45124 - 44032: 0xB2F4,\n\t45125 - 44032: 0xB2F5,\n\t45126 - 44032: 0x85BA,\n\t45127 - 44032: 0x85BB,\n\t45128 - 44032: 0xB2F6,\n\t45129 - 44032: 0x85BC,\n\t45130 - 44032: 0xB2F7,\n\t45131 - 44032: 0x85BD,\n\t45132 - 44032: 0xB2F8,\n\t45133 - 44032: 0x85BE,\n\t45134 - 44032: 0xB2F9,\n\t45135 - 44032: 0x85BF,\n\t45136 - 44032: 0x85C0,\n\t45137 - 44032: 0x85C1,\n\t45138 - 44032: 0x85C2,\n\t45139 - 44032: 0xB2FA,\n\t45140 - 44032: 0xB2FB,\n\t45141 - 44032: 0xB2FC,\n\t45142 - 44032: 0x85C3,\n\t45143 - 44032: 0xB2FD,\n\t45144 - 44032: 0x85C4,\n\t45145 - 44032: 0xB2FE,\n\t45146 - 44032: 0x85C5,\n\t45147 - 44032: 0x85C6,\n\t45148 - 44032: 0x85C7,\n\t45149 - 44032: 0xB3A1,\n\t45150 - 44032: 0x85C8,\n\t45151 - 44032: 0x85C9,\n\t45152 - 44032: 0x85CA,\n\t45153 - 44032: 0x85CB,\n\t45154 - 44032: 0x85CC,\n\t45155 - 44032: 0x85CD,\n\t45156 - 44032: 0x85CE,\n\t45157 - 44032: 0x85CF,\n\t45158 - 44032: 0x85D0,\n\t45159 - 44032: 0x85D1,\n\t45160 - 44032: 0x85D2,\n\t45161 - 44032: 0x85D3,\n\t45162 - 44032: 0x85D4,\n\t45163 - 44032: 0x85D5,\n\t45164 - 44032: 0x85D6,\n\t45165 - 44032: 0x85D7,\n\t45166 - 44032: 0x85D8,\n\t45167 - 44032: 0x85D9,\n\t45168 - 44032: 0x85DA,\n\t45169 - 44032: 0x85DB,\n\t45170 - 44032: 0x85DC,\n\t45171 - 44032: 0x85DD,\n\t45172 - 44032: 0x85DE,\n\t45173 - 44032: 0x85DF,\n\t45174 - 44032: 0x85E0,\n\t45175 - 44032: 0x85E1,\n\t45176 - 44032: 0x85E2,\n\t45177 - 44032: 0x85E3,\n\t45178 - 44032: 0x85E4,\n\t45179 - 44032: 0x85E5,\n\t45180 - 44032: 0xB3A2,\n\t45181 - 44032: 0xB3A3,\n\t45182 - 44032: 0x85E6,\n\t45183 - 44032: 0x85E7,\n\t45184 - 44032: 0xB3A4,\n\t45185 - 44032: 0x85E8,\n\t45186 - 44032: 0x85E9,\n\t45187 - 44032: 0x85EA,\n\t45188 - 44032: 0xB3A5,\n\t45189 - 44032: 0x85EB,\n\t45190 - 44032: 0x85EC,\n\t45191 - 44032: 0x85ED,\n\t45192 - 44032: 0x85EE,\n\t45193 - 44032: 0x85EF,\n\t45194 - 44032: 0x85F0,\n\t45195 - 44032: 0x85F1,\n\t45196 - 44032: 0xB3A6,\n\t45197 - 44032: 0xB3A7,\n\t45198 - 44032: 0x85F2,\n\t45199 - 44032: 0xB3A8,\n\t45200 - 44032: 0x85F3,\n\t45201 - 44032: 0xB3A9,\n\t45202 - 44032: 0x85F4,\n\t45203 - 44032: 0x85F5,\n\t45204 - 44032: 0x85F6,\n\t45205 - 44032: 0x85F7,\n\t45206 - 44032: 0x85F8,\n\t45207 - 44032: 0x85F9,\n\t45208 - 44032: 0xB3AA,\n\t45209 - 44032: 0xB3AB,\n\t45210 - 44032: 0xB3AC,\n\t45211 - 44032: 0x85FA,\n\t45212 - 44032: 0xB3AD,\n\t45213 - 44032: 0x85FB,\n\t45214 - 44032: 0x85FC,\n\t45215 - 44032: 0xB3AE,\n\t45216 - 44032: 0xB3AF,\n\t45217 - 44032: 0xB3B0,\n\t45218 - 44032: 0xB3B1,\n\t45219 - 44032: 0x85FD,\n\t45220 - 44032: 0x85FE,\n\t45221 - 44032: 0x8641,\n\t45222 - 44032: 0x8642,\n\t45223 - 44032: 0x8643,\n\t45224 - 44032: 0xB3B2,\n\t45225 - 44032: 0xB3B3,\n\t45226 - 44032: 0x8644,\n\t45227 - 44032: 0xB3B4,\n\t45228 - 44032: 0xB3B5,\n\t45229 - 44032: 0xB3B6,\n\t45230 - 44032: 0xB3B7,\n\t45231 - 44032: 0xB3B8,\n\t45232 - 44032: 0x8645,\n\t45233 - 44032: 0xB3B9,\n\t45234 - 44032: 0x8646,\n\t45235 - 44032: 0xB3BA,\n\t45236 - 44032: 0xB3BB,\n\t45237 - 44032: 0xB3BC,\n\t45238 - 44032: 0x8647,\n\t45239 - 44032: 0x8648,\n\t45240 - 44032: 0xB3BD,\n\t45241 - 44032: 0x8649,\n\t45242 - 44032: 0x864A,\n\t45243 - 44032: 0x864B,\n\t45244 - 44032: 0xB3BE,\n\t45245 - 44032: 0x864C,\n\t45246 - 44032: 0x864D,\n\t45247 - 44032: 0x864E,\n\t45248 - 44032: 0x864F,\n\t45249 - 44032: 0x8650,\n\t45250 - 44032: 0x8651,\n\t45251 - 44032: 0x8652,\n\t45252 - 44032: 0xB3BF,\n\t45253 - 44032: 0xB3C0,\n\t45254 - 44032: 0x8653,\n\t45255 - 44032: 0xB3C1,\n\t45256 - 44032: 0xB3C2,\n\t45257 - 44032: 0xB3C3,\n\t45258 - 44032: 0x8654,\n\t45259 - 44032: 0x8655,\n\t45260 - 44032: 0x8656,\n\t45261 - 44032: 0x8657,\n\t45262 - 44032: 0x8658,\n\t45263 - 44032: 0x8659,\n\t45264 - 44032: 0xB3C4,\n\t45265 - 44032: 0xB3C5,\n\t45266 - 44032: 0x865A,\n\t45267 - 44032: 0x8661,\n\t45268 - 44032: 0xB3C6,\n\t45269 - 44032: 0x8662,\n\t45270 - 44032: 0x8663,\n\t45271 - 44032: 0x8664,\n\t45272 - 44032: 0xB3C7,\n\t45273 - 44032: 0x8665,\n\t45274 - 44032: 0x8666,\n\t45275 - 44032: 0x8667,\n\t45276 - 44032: 0x8668,\n\t45277 - 44032: 0x8669,\n\t45278 - 44032: 0x866A,\n\t45279 - 44032: 0x866B,\n\t45280 - 44032: 0xB3C8,\n\t45281 - 44032: 0x866C,\n\t45282 - 44032: 0x866D,\n\t45283 - 44032: 0x866E,\n\t45284 - 44032: 0x866F,\n\t45285 - 44032: 0xB3C9,\n\t45286 - 44032: 0x8670,\n\t45287 - 44032: 0x8671,\n\t45288 - 44032: 0x8672,\n\t45289 - 44032: 0x8673,\n\t45290 - 44032: 0x8674,\n\t45291 - 44032: 0x8675,\n\t45292 - 44032: 0x8676,\n\t45293 - 44032: 0x8677,\n\t45294 - 44032: 0x8678,\n\t45295 - 44032: 0x8679,\n\t45296 - 44032: 0x867A,\n\t45297 - 44032: 0x8681,\n\t45298 - 44032: 0x8682,\n\t45299 - 44032: 0x8683,\n\t45300 - 44032: 0x8684,\n\t45301 - 44032: 0x8685,\n\t45302 - 44032: 0x8686,\n\t45303 - 44032: 0x8687,\n\t45304 - 44032: 0x8688,\n\t45305 - 44032: 0x8689,\n\t45306 - 44032: 0x868A,\n\t45307 - 44032: 0x868B,\n\t45308 - 44032: 0x868C,\n\t45309 - 44032: 0x868D,\n\t45310 - 44032: 0x868E,\n\t45311 - 44032: 0x868F,\n\t45312 - 44032: 0x8690,\n\t45313 - 44032: 0x8691,\n\t45314 - 44032: 0x8692,\n\t45315 - 44032: 0x8693,\n\t45316 - 44032: 0x8694,\n\t45317 - 44032: 0x8695,\n\t45318 - 44032: 0x8696,\n\t45319 - 44032: 0x8697,\n\t45320 - 44032: 0xB3CA,\n\t45321 - 44032: 0xB3CB,\n\t45322 - 44032: 0x8698,\n\t45323 - 44032: 0xB3CC,\n\t45324 - 44032: 0xB3CD,\n\t45325 - 44032: 0x8699,\n\t45326 - 44032: 0x869A,\n\t45327 - 44032: 0x869B,\n\t45328 - 44032: 0xB3CE,\n\t45329 - 44032: 0x869C,\n\t45330 - 44032: 0xB3CF,\n\t45331 - 44032: 0xB3D0,\n\t45332 - 44032: 0x869D,\n\t45333 - 44032: 0x869E,\n\t45334 - 44032: 0x869F,\n\t45335 - 44032: 0x86A0,\n\t45336 - 44032: 0xB3D1,\n\t45337 - 44032: 0xB3D2,\n\t45338 - 44032: 0x86A1,\n\t45339 - 44032: 0xB3D3,\n\t45340 - 44032: 0xB3D4,\n\t45341 - 44032: 0xB3D5,\n\t45342 - 44032: 0x86A2,\n\t45343 - 44032: 0x86A3,\n\t45344 - 44032: 0x86A4,\n\t45345 - 44032: 0x86A5,\n\t45346 - 44032: 0x86A6,\n\t45347 - 44032: 0xB3D6,\n\t45348 - 44032: 0xB3D7,\n\t45349 - 44032: 0xB3D8,\n\t45350 - 44032: 0x86A7,\n\t45351 - 44032: 0x86A8,\n\t45352 - 44032: 0xB3D9,\n\t45353 - 44032: 0x86A9,\n\t45354 - 44032: 0x86AA,\n\t45355 - 44032: 0x86AB,\n\t45356 - 44032: 0xB3DA,\n\t45357 - 44032: 0x86AC,\n\t45358 - 44032: 0x86AD,\n\t45359 - 44032: 0x86AE,\n\t45360 - 44032: 0x86AF,\n\t45361 - 44032: 0x86B0,\n\t45362 - 44032: 0x86B1,\n\t45363 - 44032: 0x86B2,\n\t45364 - 44032: 0xB3DB,\n\t45365 - 44032: 0xB3DC,\n\t45366 - 44032: 0x86B3,\n\t45367 - 44032: 0xB3DD,\n\t45368 - 44032: 0xB3DE,\n\t45369 - 44032: 0xB3DF,\n\t45370 - 44032: 0x86B4,\n\t45371 - 44032: 0x86B5,\n\t45372 - 44032: 0x86B6,\n\t45373 - 44032: 0x86B7,\n\t45374 - 44032: 0x86B8,\n\t45375 - 44032: 0x86B9,\n\t45376 - 44032: 0xB3E0,\n\t45377 - 44032: 0xB3E1,\n\t45378 - 44032: 0x86BA,\n\t45379 - 44032: 0x86BB,\n\t45380 - 44032: 0xB3E2,\n\t45381 - 44032: 0x86BC,\n\t45382 - 44032: 0x86BD,\n\t45383 - 44032: 0x86BE,\n\t45384 - 44032: 0xB3E3,\n\t45385 - 44032: 0x86BF,\n\t45386 - 44032: 0x86C0,\n\t45387 - 44032: 0x86C1,\n\t45388 - 44032: 0x86C2,\n\t45389 - 44032: 0x86C3,\n\t45390 - 44032: 0x86C4,\n\t45391 - 44032: 0x86C5,\n\t45392 - 44032: 0xB3E4,\n\t45393 - 44032: 0xB3E5,\n\t45394 - 44032: 0x86C6,\n\t45395 - 44032: 0x86C7,\n\t45396 - 44032: 0xB3E6,\n\t45397 - 44032: 0xB3E7,\n\t45398 - 44032: 0x86C8,\n\t45399 - 44032: 0x86C9,\n\t45400 - 44032: 0xB3E8,\n\t45401 - 44032: 0x86CA,\n\t45402 - 44032: 0x86CB,\n\t45403 - 44032: 0x86CC,\n\t45404 - 44032: 0xB3E9,\n\t45405 - 44032: 0x86CD,\n\t45406 - 44032: 0x86CE,\n\t45407 - 44032: 0x86CF,\n\t45408 - 44032: 0xB3EA,\n\t45409 - 44032: 0x86D0,\n\t45410 - 44032: 0x86D1,\n\t45411 - 44032: 0x86D2,\n\t45412 - 44032: 0x86D3,\n\t45413 - 44032: 0x86D4,\n\t45414 - 44032: 0x86D5,\n\t45415 - 44032: 0x86D6,\n\t45416 - 44032: 0x86D7,\n\t45417 - 44032: 0x86D8,\n\t45418 - 44032: 0x86D9,\n\t45419 - 44032: 0x86DA,\n\t45420 - 44032: 0x86DB,\n\t45421 - 44032: 0x86DC,\n\t45422 - 44032: 0x86DD,\n\t45423 - 44032: 0x86DE,\n\t45424 - 44032: 0x86DF,\n\t45425 - 44032: 0x86E0,\n\t45426 - 44032: 0x86E1,\n\t45427 - 44032: 0x86E2,\n\t45428 - 44032: 0x86E3,\n\t45429 - 44032: 0x86E4,\n\t45430 - 44032: 0x86E5,\n\t45431 - 44032: 0x86E6,\n\t45432 - 44032: 0xB3EB,\n\t45433 - 44032: 0xB3EC,\n\t45434 - 44032: 0x86E7,\n\t45435 - 44032: 0x86E8,\n\t45436 - 44032: 0xB3ED,\n\t45437 - 44032: 0x86E9,\n\t45438 - 44032: 0x86EA,\n\t45439 - 44032: 0x86EB,\n\t45440 - 44032: 0xB3EE,\n\t45441 - 44032: 0x86EC,\n\t45442 - 44032: 0xB3EF,\n\t45443 - 44032: 0x86ED,\n\t45444 - 44032: 0x86EE,\n\t45445 - 44032: 0x86EF,\n\t45446 - 44032: 0x86F0,\n\t45447 - 44032: 0x86F1,\n\t45448 - 44032: 0xB3F0,\n\t45449 - 44032: 0xB3F1,\n\t45450 - 44032: 0x86F2,\n\t45451 - 44032: 0xB3F2,\n\t45452 - 44032: 0x86F3,\n\t45453 - 44032: 0xB3F3,\n\t45454 - 44032: 0x86F4,\n\t45455 - 44032: 0x86F5,\n\t45456 - 44032: 0x86F6,\n\t45457 - 44032: 0x86F7,\n\t45458 - 44032: 0xB3F4,\n\t45459 - 44032: 0xB3F5,\n\t45460 - 44032: 0xB3F6,\n\t45461 - 44032: 0x86F8,\n\t45462 - 44032: 0x86F9,\n\t45463 - 44032: 0x86FA,\n\t45464 - 44032: 0xB3F7,\n\t45465 - 44032: 0x86FB,\n\t45466 - 44032: 0x86FC,\n\t45467 - 44032: 0x86FD,\n\t45468 - 44032: 0xB3F8,\n\t45469 - 44032: 0x86FE,\n\t45470 - 44032: 0x8741,\n\t45471 - 44032: 0x8742,\n\t45472 - 44032: 0x8743,\n\t45473 - 44032: 0x8744,\n\t45474 - 44032: 0x8745,\n\t45475 - 44032: 0x8746,\n\t45476 - 44032: 0x8747,\n\t45477 - 44032: 0x8748,\n\t45478 - 44032: 0x8749,\n\t45479 - 44032: 0x874A,\n\t45480 - 44032: 0xB3F9,\n\t45481 - 44032: 0x874B,\n\t45482 - 44032: 0x874C,\n\t45483 - 44032: 0x874D,\n\t45484 - 44032: 0x874E,\n\t45485 - 44032: 0x874F,\n\t45486 - 44032: 0x8750,\n\t45487 - 44032: 0x8751,\n\t45488 - 44032: 0x8752,\n\t45489 - 44032: 0x8753,\n\t45490 - 44032: 0x8754,\n\t45491 - 44032: 0x8755,\n\t45492 - 44032: 0x8756,\n\t45493 - 44032: 0x8757,\n\t45494 - 44032: 0x8758,\n\t45495 - 44032: 0x8759,\n\t45496 - 44032: 0x875A,\n\t45497 - 44032: 0x8761,\n\t45498 - 44032: 0x8762,\n\t45499 - 44032: 0x8763,\n\t45500 - 44032: 0x8764,\n\t45501 - 44032: 0x8765,\n\t45502 - 44032: 0x8766,\n\t45503 - 44032: 0x8767,\n\t45504 - 44032: 0x8768,\n\t45505 - 44032: 0x8769,\n\t45506 - 44032: 0x876A,\n\t45507 - 44032: 0x876B,\n\t45508 - 44032: 0x876C,\n\t45509 - 44032: 0x876D,\n\t45510 - 44032: 0x876E,\n\t45511 - 44032: 0x876F,\n\t45512 - 44032: 0x8770,\n\t45513 - 44032: 0x8771,\n\t45514 - 44032: 0x8772,\n\t45515 - 44032: 0x8773,\n\t45516 - 44032: 0xB3FA,\n\t45517 - 44032: 0x8774,\n\t45518 - 44032: 0x8775,\n\t45519 - 44032: 0x8776,\n\t45520 - 44032: 0xB3FB,\n\t45521 - 44032: 0x8777,\n\t45522 - 44032: 0x8778,\n\t45523 - 44032: 0x8779,\n\t45524 - 44032: 0xB3FC,\n\t45525 - 44032: 0x877A,\n\t45526 - 44032: 0x8781,\n\t45527 - 44032: 0x8782,\n\t45528 - 44032: 0x8783,\n\t45529 - 44032: 0x8784,\n\t45530 - 44032: 0x8785,\n\t45531 - 44032: 0x8786,\n\t45532 - 44032: 0xB3FD,\n\t45533 - 44032: 0xB3FE,\n\t45534 - 44032: 0x8787,\n\t45535 - 44032: 0xB4A1,\n\t45536 - 44032: 0x8788,\n\t45537 - 44032: 0x8789,\n\t45538 - 44032: 0x878A,\n\t45539 - 44032: 0x878B,\n\t45540 - 44032: 0x878C,\n\t45541 - 44032: 0x878D,\n\t45542 - 44032: 0x878E,\n\t45543 - 44032: 0x878F,\n\t45544 - 44032: 0xB4A2,\n\t45545 - 44032: 0xB4A3,\n\t45546 - 44032: 0x8790,\n\t45547 - 44032: 0x8791,\n\t45548 - 44032: 0xB4A4,\n\t45549 - 44032: 0x8792,\n\t45550 - 44032: 0x8793,\n\t45551 - 44032: 0x8794,\n\t45552 - 44032: 0xB4A5,\n\t45553 - 44032: 0x8795,\n\t45554 - 44032: 0x8796,\n\t45555 - 44032: 0x8797,\n\t45556 - 44032: 0x8798,\n\t45557 - 44032: 0x8799,\n\t45558 - 44032: 0x879A,\n\t45559 - 44032: 0x879B,\n\t45560 - 44032: 0x879C,\n\t45561 - 44032: 0xB4A6,\n\t45562 - 44032: 0x879D,\n\t45563 - 44032: 0xB4A7,\n\t45564 - 44032: 0x879E,\n\t45565 - 44032: 0xB4A8,\n\t45566 - 44032: 0x879F,\n\t45567 - 44032: 0x87A0,\n\t45568 - 44032: 0x87A1,\n\t45569 - 44032: 0x87A2,\n\t45570 - 44032: 0x87A3,\n\t45571 - 44032: 0x87A4,\n\t45572 - 44032: 0xB4A9,\n\t45573 - 44032: 0xB4AA,\n\t45574 - 44032: 0x87A5,\n\t45575 - 44032: 0x87A6,\n\t45576 - 44032: 0xB4AB,\n\t45577 - 44032: 0x87A7,\n\t45578 - 44032: 0x87A8,\n\t45579 - 44032: 0xB4AC,\n\t45580 - 44032: 0xB4AD,\n\t45581 - 44032: 0x87A9,\n\t45582 - 44032: 0x87AA,\n\t45583 - 44032: 0x87AB,\n\t45584 - 44032: 0x87AC,\n\t45585 - 44032: 0x87AD,\n\t45586 - 44032: 0x87AE,\n\t45587 - 44032: 0x87AF,\n\t45588 - 44032: 0xB4AE,\n\t45589 - 44032: 0xB4AF,\n\t45590 - 44032: 0x87B0,\n\t45591 - 44032: 0xB4B0,\n\t45592 - 44032: 0x87B1,\n\t45593 - 44032: 0xB4B1,\n\t45594 - 44032: 0x87B2,\n\t45595 - 44032: 0x87B3,\n\t45596 - 44032: 0x87B4,\n\t45597 - 44032: 0x87B5,\n\t45598 - 44032: 0x87B6,\n\t45599 - 44032: 0x87B7,\n\t45600 - 44032: 0xB4B2,\n\t45601 - 44032: 0x87B8,\n\t45602 - 44032: 0x87B9,\n\t45603 - 44032: 0x87BA,\n\t45604 - 44032: 0x87BB,\n\t45605 - 44032: 0x87BC,\n\t45606 - 44032: 0x87BD,\n\t45607 - 44032: 0x87BE,\n\t45608 - 44032: 0x87BF,\n\t45609 - 44032: 0x87C0,\n\t45610 - 44032: 0x87C1,\n\t45611 - 44032: 0x87C2,\n\t45612 - 44032: 0x87C3,\n\t45613 - 44032: 0x87C4,\n\t45614 - 44032: 0x87C5,\n\t45615 - 44032: 0x87C6,\n\t45616 - 44032: 0x87C7,\n\t45617 - 44032: 0x87C8,\n\t45618 - 44032: 0x87C9,\n\t45619 - 44032: 0x87CA,\n\t45620 - 44032: 0xB4B3,\n\t45621 - 44032: 0x87CB,\n\t45622 - 44032: 0x87CC,\n\t45623 - 44032: 0x87CD,\n\t45624 - 44032: 0x87CE,\n\t45625 - 44032: 0x87CF,\n\t45626 - 44032: 0x87D0,\n\t45627 - 44032: 0x87D1,\n\t45628 - 44032: 0xB4B4,\n\t45629 - 44032: 0x87D2,\n\t45630 - 44032: 0x87D3,\n\t45631 - 44032: 0x87D4,\n\t45632 - 44032: 0x87D5,\n\t45633 - 44032: 0x87D6,\n\t45634 - 44032: 0x87D7,\n\t45635 - 44032: 0x87D8,\n\t45636 - 44032: 0x87D9,\n\t45637 - 44032: 0x87DA,\n\t45638 - 44032: 0x87DB,\n\t45639 - 44032: 0x87DC,\n\t45640 - 44032: 0x87DD,\n\t45641 - 44032: 0x87DE,\n\t45642 - 44032: 0x87DF,\n\t45643 - 44032: 0x87E0,\n\t45644 - 44032: 0x87E1,\n\t45645 - 44032: 0x87E2,\n\t45646 - 44032: 0x87E3,\n\t45647 - 44032: 0x87E4,\n\t45648 - 44032: 0x87E5,\n\t45649 - 44032: 0x87E6,\n\t45650 - 44032: 0x87E7,\n\t45651 - 44032: 0x87E8,\n\t45652 - 44032: 0x87E9,\n\t45653 - 44032: 0x87EA,\n\t45654 - 44032: 0x87EB,\n\t45655 - 44032: 0x87EC,\n\t45656 - 44032: 0xB4B5,\n\t45657 - 44032: 0x87ED,\n\t45658 - 44032: 0x87EE,\n\t45659 - 44032: 0x87EF,\n\t45660 - 44032: 0xB4B6,\n\t45661 - 44032: 0x87F0,\n\t45662 - 44032: 0x87F1,\n\t45663 - 44032: 0x87F2,\n\t45664 - 44032: 0xB4B7,\n\t45665 - 44032: 0x87F3,\n\t45666 - 44032: 0x87F4,\n\t45667 - 44032: 0x87F5,\n\t45668 - 44032: 0x87F6,\n\t45669 - 44032: 0x87F7,\n\t45670 - 44032: 0x87F8,\n\t45671 - 44032: 0x87F9,\n\t45672 - 44032: 0xB4B8,\n\t45673 - 44032: 0xB4B9,\n\t45674 - 44032: 0x87FA,\n\t45675 - 44032: 0x87FB,\n\t45676 - 44032: 0x87FC,\n\t45677 - 44032: 0x87FD,\n\t45678 - 44032: 0x87FE,\n\t45679 - 44032: 0x8841,\n\t45680 - 44032: 0x8842,\n\t45681 - 44032: 0x8843,\n\t45682 - 44032: 0x8844,\n\t45683 - 44032: 0x8845,\n\t45684 - 44032: 0xB4BA,\n\t45685 - 44032: 0xB4BB,\n\t45686 - 44032: 0x8846,\n\t45687 - 44032: 0x8847,\n\t45688 - 44032: 0x8848,\n\t45689 - 44032: 0x8849,\n\t45690 - 44032: 0x884A,\n\t45691 - 44032: 0x884B,\n\t45692 - 44032: 0xB4BC,\n\t45693 - 44032: 0x884C,\n\t45694 - 44032: 0x884D,\n\t45695 - 44032: 0x884E,\n\t45696 - 44032: 0x884F,\n\t45697 - 44032: 0x8850,\n\t45698 - 44032: 0x8851,\n\t45699 - 44032: 0x8852,\n\t45700 - 44032: 0xB4BD,\n\t45701 - 44032: 0xB4BE,\n\t45702 - 44032: 0x8853,\n\t45703 - 44032: 0x8854,\n\t45704 - 44032: 0x8855,\n\t45705 - 44032: 0xB4BF,\n\t45706 - 44032: 0x8856,\n\t45707 - 44032: 0x8857,\n\t45708 - 44032: 0x8858,\n\t45709 - 44032: 0x8859,\n\t45710 - 44032: 0x885A,\n\t45711 - 44032: 0x8861,\n\t45712 - 44032: 0xB4C0,\n\t45713 - 44032: 0xB4C1,\n\t45714 - 44032: 0x8862,\n\t45715 - 44032: 0x8863,\n\t45716 - 44032: 0xB4C2,\n\t45717 - 44032: 0x8864,\n\t45718 - 44032: 0x8865,\n\t45719 - 44032: 0x8866,\n\t45720 - 44032: 0xB4C3,\n\t45721 - 44032: 0xB4C4,\n\t45722 - 44032: 0xB4C5,\n\t45723 - 44032: 0x8867,\n\t45724 - 44032: 0x8868,\n\t45725 - 44032: 0x8869,\n\t45726 - 44032: 0x886A,\n\t45727 - 44032: 0x886B,\n\t45728 - 44032: 0xB4C6,\n\t45729 - 44032: 0xB4C7,\n\t45730 - 44032: 0x886C,\n\t45731 - 44032: 0xB4C8,\n\t45732 - 44032: 0x886D,\n\t45733 - 44032: 0xB4C9,\n\t45734 - 44032: 0xB4CA,\n\t45735 - 44032: 0x886E,\n\t45736 - 44032: 0x886F,\n\t45737 - 44032: 0x8870,\n\t45738 - 44032: 0xB4CB,\n\t45739 - 44032: 0x8871,\n\t45740 - 44032: 0xB4CC,\n\t45741 - 44032: 0x8872,\n\t45742 - 44032: 0x8873,\n\t45743 - 44032: 0x8874,\n\t45744 - 44032: 0xB4CD,\n\t45745 - 44032: 0x8875,\n\t45746 - 44032: 0x8876,\n\t45747 - 44032: 0x8877,\n\t45748 - 44032: 0xB4CE,\n\t45749 - 44032: 0x8878,\n\t45750 - 44032: 0x8879,\n\t45751 - 44032: 0x887A,\n\t45752 - 44032: 0x8881,\n\t45753 - 44032: 0x8882,\n\t45754 - 44032: 0x8883,\n\t45755 - 44032: 0x8884,\n\t45756 - 44032: 0x8885,\n\t45757 - 44032: 0x8886,\n\t45758 - 44032: 0x8887,\n\t45759 - 44032: 0x8888,\n\t45760 - 44032: 0x8889,\n\t45761 - 44032: 0x888A,\n\t45762 - 44032: 0x888B,\n\t45763 - 44032: 0x888C,\n\t45764 - 44032: 0x888D,\n\t45765 - 44032: 0x888E,\n\t45766 - 44032: 0x888F,\n\t45767 - 44032: 0x8890,\n\t45768 - 44032: 0xB4CF,\n\t45769 - 44032: 0xB4D0,\n\t45770 - 44032: 0x8891,\n\t45771 - 44032: 0x8892,\n\t45772 - 44032: 0xB4D1,\n\t45773 - 44032: 0x8893,\n\t45774 - 44032: 0x8894,\n\t45775 - 44032: 0x8895,\n\t45776 - 44032: 0xB4D2,\n\t45777 - 44032: 0x8896,\n\t45778 - 44032: 0xB4D3,\n\t45779 - 44032: 0x8897,\n\t45780 - 44032: 0x8898,\n\t45781 - 44032: 0x8899,\n\t45782 - 44032: 0x889A,\n\t45783 - 44032: 0x889B,\n\t45784 - 44032: 0xB4D4,\n\t45785 - 44032: 0xB4D5,\n\t45786 - 44032: 0x889C,\n\t45787 - 44032: 0xB4D6,\n\t45788 - 44032: 0x889D,\n\t45789 - 44032: 0xB4D7,\n\t45790 - 44032: 0x889E,\n\t45791 - 44032: 0x889F,\n\t45792 - 44032: 0x88A0,\n\t45793 - 44032: 0x88A1,\n\t45794 - 44032: 0xB4D8,\n\t45795 - 44032: 0x88A2,\n\t45796 - 44032: 0xB4D9,\n\t45797 - 44032: 0xB4DA,\n\t45798 - 44032: 0xB4DB,\n\t45799 - 44032: 0x88A3,\n\t45800 - 44032: 0xB4DC,\n\t45801 - 44032: 0x88A4,\n\t45802 - 44032: 0x88A5,\n\t45803 - 44032: 0xB4DD,\n\t45804 - 44032: 0xB4DE,\n\t45805 - 44032: 0xB4DF,\n\t45806 - 44032: 0xB4E0,\n\t45807 - 44032: 0xB4E1,\n\t45808 - 44032: 0x88A6,\n\t45809 - 44032: 0x88A7,\n\t45810 - 44032: 0x88A8,\n\t45811 - 44032: 0xB4E2,\n\t45812 - 44032: 0xB4E3,\n\t45813 - 44032: 0xB4E4,\n\t45814 - 44032: 0x88A9,\n\t45815 - 44032: 0xB4E5,\n\t45816 - 44032: 0xB4E6,\n\t45817 - 44032: 0xB4E7,\n\t45818 - 44032: 0xB4E8,\n\t45819 - 44032: 0xB4E9,\n\t45820 - 44032: 0x88AA,\n\t45821 - 44032: 0x88AB,\n\t45822 - 44032: 0x88AC,\n\t45823 - 44032: 0xB4EA,\n\t45824 - 44032: 0xB4EB,\n\t45825 - 44032: 0xB4EC,\n\t45826 - 44032: 0x88AD,\n\t45827 - 44032: 0x88AE,\n\t45828 - 44032: 0xB4ED,\n\t45829 - 44032: 0x88AF,\n\t45830 - 44032: 0x88B0,\n\t45831 - 44032: 0x88B1,\n\t45832 - 44032: 0xB4EE,\n\t45833 - 44032: 0x88B2,\n\t45834 - 44032: 0x88B3,\n\t45835 - 44032: 0x88B4,\n\t45836 - 44032: 0x88B5,\n\t45837 - 44032: 0x88B6,\n\t45838 - 44032: 0x88B7,\n\t45839 - 44032: 0x88B8,\n\t45840 - 44032: 0xB4EF,\n\t45841 - 44032: 0xB4F0,\n\t45842 - 44032: 0x88B9,\n\t45843 - 44032: 0xB4F1,\n\t45844 - 44032: 0xB4F2,\n\t45845 - 44032: 0xB4F3,\n\t45846 - 44032: 0x88BA,\n\t45847 - 44032: 0x88BB,\n\t45848 - 44032: 0x88BC,\n\t45849 - 44032: 0x88BD,\n\t45850 - 44032: 0x88BE,\n\t45851 - 44032: 0x88BF,\n\t45852 - 44032: 0xB4F4,\n\t45853 - 44032: 0x88C0,\n\t45854 - 44032: 0x88C1,\n\t45855 - 44032: 0x88C2,\n\t45856 - 44032: 0x88C3,\n\t45857 - 44032: 0x88C4,\n\t45858 - 44032: 0x88C5,\n\t45859 - 44032: 0x88C6,\n\t45860 - 44032: 0x88C7,\n\t45861 - 44032: 0x88C8,\n\t45862 - 44032: 0x88C9,\n\t45863 - 44032: 0x88CA,\n\t45864 - 44032: 0x88CB,\n\t45865 - 44032: 0x88CC,\n\t45866 - 44032: 0x88CD,\n\t45867 - 44032: 0x88CE,\n\t45868 - 44032: 0x88CF,\n\t45869 - 44032: 0x88D0,\n\t45870 - 44032: 0x88D1,\n\t45871 - 44032: 0x88D2,\n\t45872 - 44032: 0x88D3,\n\t45873 - 44032: 0x88D4,\n\t45874 - 44032: 0x88D5,\n\t45875 - 44032: 0x88D6,\n\t45876 - 44032: 0x88D7,\n\t45877 - 44032: 0x88D8,\n\t45878 - 44032: 0x88D9,\n\t45879 - 44032: 0x88DA,\n\t45880 - 44032: 0x88DB,\n\t45881 - 44032: 0x88DC,\n\t45882 - 44032: 0x88DD,\n\t45883 - 44032: 0x88DE,\n\t45884 - 44032: 0x88DF,\n\t45885 - 44032: 0x88E0,\n\t45886 - 44032: 0x88E1,\n\t45887 - 44032: 0x88E2,\n\t45888 - 44032: 0x88E3,\n\t45889 - 44032: 0x88E4,\n\t45890 - 44032: 0x88E5,\n\t45891 - 44032: 0x88E6,\n\t45892 - 44032: 0x88E7,\n\t45893 - 44032: 0x88E8,\n\t45894 - 44032: 0x88E9,\n\t45895 - 44032: 0x88EA,\n\t45896 - 44032: 0x88EB,\n\t45897 - 44032: 0x88EC,\n\t45898 - 44032: 0x88ED,\n\t45899 - 44032: 0x88EE,\n\t45900 - 44032: 0x88EF,\n\t45901 - 44032: 0x88F0,\n\t45902 - 44032: 0x88F1,\n\t45903 - 44032: 0x88F2,\n\t45904 - 44032: 0x88F3,\n\t45905 - 44032: 0x88F4,\n\t45906 - 44032: 0x88F5,\n\t45907 - 44032: 0x88F6,\n\t45908 - 44032: 0xB4F5,\n\t45909 - 44032: 0xB4F6,\n\t45910 - 44032: 0xB4F7,\n\t45911 - 44032: 0x88F7,\n\t45912 - 44032: 0xB4F8,\n\t45913 - 44032: 0x88F8,\n\t45914 - 44032: 0x88F9,\n\t45915 - 44032: 0xB4F9,\n\t45916 - 44032: 0xB4FA,\n\t45917 - 44032: 0x88FA,\n\t45918 - 44032: 0xB4FB,\n\t45919 - 44032: 0xB4FC,\n\t45920 - 44032: 0x88FB,\n\t45921 - 44032: 0x88FC,\n\t45922 - 44032: 0x88FD,\n\t45923 - 44032: 0x88FE,\n\t45924 - 44032: 0xB4FD,\n\t45925 - 44032: 0xB4FE,\n\t45926 - 44032: 0x8941,\n\t45927 - 44032: 0xB5A1,\n\t45928 - 44032: 0x8942,\n\t45929 - 44032: 0xB5A2,\n\t45930 - 44032: 0x8943,\n\t45931 - 44032: 0xB5A3,\n\t45932 - 44032: 0x8944,\n\t45933 - 44032: 0x8945,\n\t45934 - 44032: 0xB5A4,\n\t45935 - 44032: 0x8946,\n\t45936 - 44032: 0xB5A5,\n\t45937 - 44032: 0xB5A6,\n\t45938 - 44032: 0x8947,\n\t45939 - 44032: 0x8948,\n\t45940 - 44032: 0xB5A7,\n\t45941 - 44032: 0x8949,\n\t45942 - 44032: 0x894A,\n\t45943 - 44032: 0x894B,\n\t45944 - 44032: 0xB5A8,\n\t45945 - 44032: 0x894C,\n\t45946 - 44032: 0x894D,\n\t45947 - 44032: 0x894E,\n\t45948 - 44032: 0x894F,\n\t45949 - 44032: 0x8950,\n\t45950 - 44032: 0x8951,\n\t45951 - 44032: 0x8952,\n\t45952 - 44032: 0xB5A9,\n\t45953 - 44032: 0xB5AA,\n\t45954 - 44032: 0x8953,\n\t45955 - 44032: 0xB5AB,\n\t45956 - 44032: 0xB5AC,\n\t45957 - 44032: 0xB5AD,\n\t45958 - 44032: 0x8954,\n\t45959 - 44032: 0x8955,\n\t45960 - 44032: 0x8956,\n\t45961 - 44032: 0x8957,\n\t45962 - 44032: 0x8958,\n\t45963 - 44032: 0x8959,\n\t45964 - 44032: 0xB5AE,\n\t45965 - 44032: 0x895A,\n\t45966 - 44032: 0x8961,\n\t45967 - 44032: 0x8962,\n\t45968 - 44032: 0xB5AF,\n\t45969 - 44032: 0x8963,\n\t45970 - 44032: 0x8964,\n\t45971 - 44032: 0x8965,\n\t45972 - 44032: 0xB5B0,\n\t45973 - 44032: 0x8966,\n\t45974 - 44032: 0x8967,\n\t45975 - 44032: 0x8968,\n\t45976 - 44032: 0x8969,\n\t45977 - 44032: 0x896A,\n\t45978 - 44032: 0x896B,\n\t45979 - 44032: 0x896C,\n\t45980 - 44032: 0x896D,\n\t45981 - 44032: 0x896E,\n\t45982 - 44032: 0x896F,\n\t45983 - 44032: 0x8970,\n\t45984 - 44032: 0xB5B1,\n\t45985 - 44032: 0xB5B2,\n\t45986 - 44032: 0x8971,\n\t45987 - 44032: 0x8972,\n\t45988 - 44032: 0x8973,\n\t45989 - 44032: 0x8974,\n\t45990 - 44032: 0x8975,\n\t45991 - 44032: 0x8976,\n\t45992 - 44032: 0xB5B3,\n\t45993 - 44032: 0x8977,\n\t45994 - 44032: 0x8978,\n\t45995 - 44032: 0x8979,\n\t45996 - 44032: 0xB5B4,\n\t45997 - 44032: 0x897A,\n\t45998 - 44032: 0x8981,\n\t45999 - 44032: 0x8982,\n\t46000 - 44032: 0x8983,\n\t46001 - 44032: 0x8984,\n\t46002 - 44032: 0x8985,\n\t46003 - 44032: 0x8986,\n\t46004 - 44032: 0x8987,\n\t46005 - 44032: 0x8988,\n\t46006 - 44032: 0x8989,\n\t46007 - 44032: 0x898A,\n\t46008 - 44032: 0x898B,\n\t46009 - 44032: 0x898C,\n\t46010 - 44032: 0x898D,\n\t46011 - 44032: 0x898E,\n\t46012 - 44032: 0x898F,\n\t46013 - 44032: 0x8990,\n\t46014 - 44032: 0x8991,\n\t46015 - 44032: 0x8992,\n\t46016 - 44032: 0x8993,\n\t46017 - 44032: 0x8994,\n\t46018 - 44032: 0x8995,\n\t46019 - 44032: 0x8996,\n\t46020 - 44032: 0xB5B5,\n\t46021 - 44032: 0xB5B6,\n\t46022 - 44032: 0x8997,\n\t46023 - 44032: 0x8998,\n\t46024 - 44032: 0xB5B7,\n\t46025 - 44032: 0x8999,\n\t46026 - 44032: 0x899A,\n\t46027 - 44032: 0xB5B8,\n\t46028 - 44032: 0xB5B9,\n\t46029 - 44032: 0x899B,\n\t46030 - 44032: 0xB5BA,\n\t46031 - 44032: 0x899C,\n\t46032 - 44032: 0xB5BB,\n\t46033 - 44032: 0x899D,\n\t46034 - 44032: 0x899E,\n\t46035 - 44032: 0x899F,\n\t46036 - 44032: 0xB5BC,\n\t46037 - 44032: 0xB5BD,\n\t46038 - 44032: 0x89A0,\n\t46039 - 44032: 0xB5BE,\n\t46040 - 44032: 0x89A1,\n\t46041 - 44032: 0xB5BF,\n\t46042 - 44032: 0x89A2,\n\t46043 - 44032: 0xB5C0,\n\t46044 - 44032: 0x89A3,\n\t46045 - 44032: 0xB5C1,\n\t46046 - 44032: 0x89A4,\n\t46047 - 44032: 0x89A5,\n\t46048 - 44032: 0xB5C2,\n\t46049 - 44032: 0x89A6,\n\t46050 - 44032: 0x89A7,\n\t46051 - 44032: 0x89A8,\n\t46052 - 44032: 0xB5C3,\n\t46053 - 44032: 0x89A9,\n\t46054 - 44032: 0x89AA,\n\t46055 - 44032: 0x89AB,\n\t46056 - 44032: 0xB5C4,\n\t46057 - 44032: 0x89AC,\n\t46058 - 44032: 0x89AD,\n\t46059 - 44032: 0x89AE,\n\t46060 - 44032: 0x89AF,\n\t46061 - 44032: 0x89B0,\n\t46062 - 44032: 0x89B1,\n\t46063 - 44032: 0x89B2,\n\t46064 - 44032: 0x89B3,\n\t46065 - 44032: 0x89B4,\n\t46066 - 44032: 0x89B5,\n\t46067 - 44032: 0x89B6,\n\t46068 - 44032: 0x89B7,\n\t46069 - 44032: 0x89B8,\n\t46070 - 44032: 0x89B9,\n\t46071 - 44032: 0x89BA,\n\t46072 - 44032: 0x89BB,\n\t46073 - 44032: 0x89BC,\n\t46074 - 44032: 0x89BD,\n\t46075 - 44032: 0x89BE,\n\t46076 - 44032: 0xB5C5,\n\t46077 - 44032: 0x89BF,\n\t46078 - 44032: 0x89C0,\n\t46079 - 44032: 0x89C1,\n\t46080 - 44032: 0x89C2,\n\t46081 - 44032: 0x89C3,\n\t46082 - 44032: 0x89C4,\n\t46083 - 44032: 0x89C5,\n\t46084 - 44032: 0x89C6,\n\t46085 - 44032: 0x89C7,\n\t46086 - 44032: 0x89C8,\n\t46087 - 44032: 0x89C9,\n\t46088 - 44032: 0x89CA,\n\t46089 - 44032: 0x89CB,\n\t46090 - 44032: 0x89CC,\n\t46091 - 44032: 0x89CD,\n\t46092 - 44032: 0x89CE,\n\t46093 - 44032: 0x89CF,\n\t46094 - 44032: 0x89D0,\n\t46095 - 44032: 0x89D1,\n\t46096 - 44032: 0xB5C6,\n\t46097 - 44032: 0x89D2,\n\t46098 - 44032: 0x89D3,\n\t46099 - 44032: 0x89D4,\n\t46100 - 44032: 0x89D5,\n\t46101 - 44032: 0x89D6,\n\t46102 - 44032: 0x89D7,\n\t46103 - 44032: 0x89D8,\n\t46104 - 44032: 0xB5C7,\n\t46105 - 44032: 0x89D9,\n\t46106 - 44032: 0x89DA,\n\t46107 - 44032: 0x89DB,\n\t46108 - 44032: 0xB5C8,\n\t46109 - 44032: 0x89DC,\n\t46110 - 44032: 0x89DD,\n\t46111 - 44032: 0x89DE,\n\t46112 - 44032: 0xB5C9,\n\t46113 - 44032: 0x89DF,\n\t46114 - 44032: 0x89E0,\n\t46115 - 44032: 0x89E1,\n\t46116 - 44032: 0x89E2,\n\t46117 - 44032: 0x89E3,\n\t46118 - 44032: 0x89E4,\n\t46119 - 44032: 0x89E5,\n\t46120 - 44032: 0xB5CA,\n\t46121 - 44032: 0xB5CB,\n\t46122 - 44032: 0x89E6,\n\t46123 - 44032: 0xB5CC,\n\t46124 - 44032: 0x89E7,\n\t46125 - 44032: 0x89E8,\n\t46126 - 44032: 0x89E9,\n\t46127 - 44032: 0x89EA,\n\t46128 - 44032: 0x89EB,\n\t46129 - 44032: 0x89EC,\n\t46130 - 44032: 0x89ED,\n\t46131 - 44032: 0x89EE,\n\t46132 - 44032: 0xB5CD,\n\t46133 - 44032: 0x89EF,\n\t46134 - 44032: 0x89F0,\n\t46135 - 44032: 0x89F1,\n\t46136 - 44032: 0x89F2,\n\t46137 - 44032: 0x89F3,\n\t46138 - 44032: 0x89F4,\n\t46139 - 44032: 0x89F5,\n\t46140 - 44032: 0x89F6,\n\t46141 - 44032: 0x89F7,\n\t46142 - 44032: 0x89F8,\n\t46143 - 44032: 0x89F9,\n\t46144 - 44032: 0x89FA,\n\t46145 - 44032: 0x89FB,\n\t46146 - 44032: 0x89FC,\n\t46147 - 44032: 0x89FD,\n\t46148 - 44032: 0x89FE,\n\t46149 - 44032: 0x8A41,\n\t46150 - 44032: 0x8A42,\n\t46151 - 44032: 0x8A43,\n\t46152 - 44032: 0x8A44,\n\t46153 - 44032: 0x8A45,\n\t46154 - 44032: 0x8A46,\n\t46155 - 44032: 0x8A47,\n\t46156 - 44032: 0x8A48,\n\t46157 - 44032: 0x8A49,\n\t46158 - 44032: 0x8A4A,\n\t46159 - 44032: 0x8A4B,\n\t46160 - 44032: 0xB5CE,\n\t46161 - 44032: 0xB5CF,\n\t46162 - 44032: 0x8A4C,\n\t46163 - 44032: 0x8A4D,\n\t46164 - 44032: 0xB5D0,\n\t46165 - 44032: 0x8A4E,\n\t46166 - 44032: 0x8A4F,\n\t46167 - 44032: 0x8A50,\n\t46168 - 44032: 0xB5D1,\n\t46169 - 44032: 0x8A51,\n\t46170 - 44032: 0x8A52,\n\t46171 - 44032: 0x8A53,\n\t46172 - 44032: 0x8A54,\n\t46173 - 44032: 0x8A55,\n\t46174 - 44032: 0x8A56,\n\t46175 - 44032: 0x8A57,\n\t46176 - 44032: 0xB5D2,\n\t46177 - 44032: 0xB5D3,\n\t46178 - 44032: 0x8A58,\n\t46179 - 44032: 0xB5D4,\n\t46180 - 44032: 0x8A59,\n\t46181 - 44032: 0xB5D5,\n\t46182 - 44032: 0x8A5A,\n\t46183 - 44032: 0x8A61,\n\t46184 - 44032: 0x8A62,\n\t46185 - 44032: 0x8A63,\n\t46186 - 44032: 0x8A64,\n\t46187 - 44032: 0x8A65,\n\t46188 - 44032: 0xB5D6,\n\t46189 - 44032: 0x8A66,\n\t46190 - 44032: 0x8A67,\n\t46191 - 44032: 0x8A68,\n\t46192 - 44032: 0x8A69,\n\t46193 - 44032: 0x8A6A,\n\t46194 - 44032: 0x8A6B,\n\t46195 - 44032: 0x8A6C,\n\t46196 - 44032: 0x8A6D,\n\t46197 - 44032: 0x8A6E,\n\t46198 - 44032: 0x8A6F,\n\t46199 - 44032: 0x8A70,\n\t46200 - 44032: 0x8A71,\n\t46201 - 44032: 0x8A72,\n\t46202 - 44032: 0x8A73,\n\t46203 - 44032: 0x8A74,\n\t46204 - 44032: 0x8A75,\n\t46205 - 44032: 0x8A76,\n\t46206 - 44032: 0x8A77,\n\t46207 - 44032: 0x8A78,\n\t46208 - 44032: 0xB5D7,\n\t46209 - 44032: 0x8A79,\n\t46210 - 44032: 0x8A7A,\n\t46211 - 44032: 0x8A81,\n\t46212 - 44032: 0x8A82,\n\t46213 - 44032: 0x8A83,\n\t46214 - 44032: 0x8A84,\n\t46215 - 44032: 0x8A85,\n\t46216 - 44032: 0xB5D8,\n\t46217 - 44032: 0x8A86,\n\t46218 - 44032: 0x8A87,\n\t46219 - 44032: 0x8A88,\n\t46220 - 44032: 0x8A89,\n\t46221 - 44032: 0x8A8A,\n\t46222 - 44032: 0x8A8B,\n\t46223 - 44032: 0x8A8C,\n\t46224 - 44032: 0x8A8D,\n\t46225 - 44032: 0x8A8E,\n\t46226 - 44032: 0x8A8F,\n\t46227 - 44032: 0x8A90,\n\t46228 - 44032: 0x8A91,\n\t46229 - 44032: 0x8A92,\n\t46230 - 44032: 0x8A93,\n\t46231 - 44032: 0x8A94,\n\t46232 - 44032: 0x8A95,\n\t46233 - 44032: 0x8A96,\n\t46234 - 44032: 0x8A97,\n\t46235 - 44032: 0x8A98,\n\t46236 - 44032: 0x8A99,\n\t46237 - 44032: 0xB5D9,\n\t46238 - 44032: 0x8A9A,\n\t46239 - 44032: 0x8A9B,\n\t46240 - 44032: 0x8A9C,\n\t46241 - 44032: 0x8A9D,\n\t46242 - 44032: 0x8A9E,\n\t46243 - 44032: 0x8A9F,\n\t46244 - 44032: 0xB5DA,\n\t46245 - 44032: 0x8AA0,\n\t46246 - 44032: 0x8AA1,\n\t46247 - 44032: 0x8AA2,\n\t46248 - 44032: 0xB5DB,\n\t46249 - 44032: 0x8AA3,\n\t46250 - 44032: 0x8AA4,\n\t46251 - 44032: 0x8AA5,\n\t46252 - 44032: 0xB5DC,\n\t46253 - 44032: 0x8AA6,\n\t46254 - 44032: 0x8AA7,\n\t46255 - 44032: 0x8AA8,\n\t46256 - 44032: 0x8AA9,\n\t46257 - 44032: 0x8AAA,\n\t46258 - 44032: 0x8AAB,\n\t46259 - 44032: 0x8AAC,\n\t46260 - 44032: 0x8AAD,\n\t46261 - 44032: 0xB5DD,\n\t46262 - 44032: 0x8AAE,\n\t46263 - 44032: 0xB5DE,\n\t46264 - 44032: 0x8AAF,\n\t46265 - 44032: 0xB5DF,\n\t46266 - 44032: 0x8AB0,\n\t46267 - 44032: 0x8AB1,\n\t46268 - 44032: 0x8AB2,\n\t46269 - 44032: 0x8AB3,\n\t46270 - 44032: 0x8AB4,\n\t46271 - 44032: 0x8AB5,\n\t46272 - 44032: 0xB5E0,\n\t46273 - 44032: 0x8AB6,\n\t46274 - 44032: 0x8AB7,\n\t46275 - 44032: 0x8AB8,\n\t46276 - 44032: 0xB5E1,\n\t46277 - 44032: 0x8AB9,\n\t46278 - 44032: 0x8ABA,\n\t46279 - 44032: 0x8ABB,\n\t46280 - 44032: 0xB5E2,\n\t46281 - 44032: 0x8ABC,\n\t46282 - 44032: 0x8ABD,\n\t46283 - 44032: 0x8ABE,\n\t46284 - 44032: 0x8ABF,\n\t46285 - 44032: 0x8AC0,\n\t46286 - 44032: 0x8AC1,\n\t46287 - 44032: 0x8AC2,\n\t46288 - 44032: 0xB5E3,\n\t46289 - 44032: 0x8AC3,\n\t46290 - 44032: 0x8AC4,\n\t46291 - 44032: 0x8AC5,\n\t46292 - 44032: 0x8AC6,\n\t46293 - 44032: 0xB5E4,\n\t46294 - 44032: 0x8AC7,\n\t46295 - 44032: 0x8AC8,\n\t46296 - 44032: 0x8AC9,\n\t46297 - 44032: 0x8ACA,\n\t46298 - 44032: 0x8ACB,\n\t46299 - 44032: 0x8ACC,\n\t46300 - 44032: 0xB5E5,\n\t46301 - 44032: 0xB5E6,\n\t46302 - 44032: 0x8ACD,\n\t46303 - 44032: 0x8ACE,\n\t46304 - 44032: 0xB5E7,\n\t46305 - 44032: 0x8ACF,\n\t46306 - 44032: 0x8AD0,\n\t46307 - 44032: 0xB5E8,\n\t46308 - 44032: 0xB5E9,\n\t46309 - 44032: 0x8AD1,\n\t46310 - 44032: 0xB5EA,\n\t46311 - 44032: 0x8AD2,\n\t46312 - 44032: 0x8AD3,\n\t46313 - 44032: 0x8AD4,\n\t46314 - 44032: 0x8AD5,\n\t46315 - 44032: 0x8AD6,\n\t46316 - 44032: 0xB5EB,\n\t46317 - 44032: 0xB5EC,\n\t46318 - 44032: 0x8AD7,\n\t46319 - 44032: 0xB5ED,\n\t46320 - 44032: 0x8AD8,\n\t46321 - 44032: 0xB5EE,\n\t46322 - 44032: 0x8AD9,\n\t46323 - 44032: 0x8ADA,\n\t46324 - 44032: 0x8ADB,\n\t46325 - 44032: 0x8ADC,\n\t46326 - 44032: 0x8ADD,\n\t46327 - 44032: 0x8ADE,\n\t46328 - 44032: 0xB5EF,\n\t46329 - 44032: 0x8ADF,\n\t46330 - 44032: 0x8AE0,\n\t46331 - 44032: 0x8AE1,\n\t46332 - 44032: 0x8AE2,\n\t46333 - 44032: 0x8AE3,\n\t46334 - 44032: 0x8AE4,\n\t46335 - 44032: 0x8AE5,\n\t46336 - 44032: 0x8AE6,\n\t46337 - 44032: 0x8AE7,\n\t46338 - 44032: 0x8AE8,\n\t46339 - 44032: 0x8AE9,\n\t46340 - 44032: 0x8AEA,\n\t46341 - 44032: 0x8AEB,\n\t46342 - 44032: 0x8AEC,\n\t46343 - 44032: 0x8AED,\n\t46344 - 44032: 0x8AEE,\n\t46345 - 44032: 0x8AEF,\n\t46346 - 44032: 0x8AF0,\n\t46347 - 44032: 0x8AF1,\n\t46348 - 44032: 0x8AF2,\n\t46349 - 44032: 0x8AF3,\n\t46350 - 44032: 0x8AF4,\n\t46351 - 44032: 0x8AF5,\n\t46352 - 44032: 0x8AF6,\n\t46353 - 44032: 0x8AF7,\n\t46354 - 44032: 0x8AF8,\n\t46355 - 44032: 0x8AF9,\n\t46356 - 44032: 0xB5F0,\n\t46357 - 44032: 0xB5F1,\n\t46358 - 44032: 0x8AFA,\n\t46359 - 44032: 0x8AFB,\n\t46360 - 44032: 0xB5F2,\n\t46361 - 44032: 0x8AFC,\n\t46362 - 44032: 0x8AFD,\n\t46363 - 44032: 0xB5F3,\n\t46364 - 44032: 0xB5F4,\n\t46365 - 44032: 0x8AFE,\n\t46366 - 44032: 0x8B41,\n\t46367 - 44032: 0x8B42,\n\t46368 - 44032: 0x8B43,\n\t46369 - 44032: 0x8B44,\n\t46370 - 44032: 0x8B45,\n\t46371 - 44032: 0x8B46,\n\t46372 - 44032: 0xB5F5,\n\t46373 - 44032: 0xB5F6,\n\t46374 - 44032: 0x8B47,\n\t46375 - 44032: 0xB5F7,\n\t46376 - 44032: 0xB5F8,\n\t46377 - 44032: 0xB5F9,\n\t46378 - 44032: 0xB5FA,\n\t46379 - 44032: 0x8B48,\n\t46380 - 44032: 0x8B49,\n\t46381 - 44032: 0x8B4A,\n\t46382 - 44032: 0x8B4B,\n\t46383 - 44032: 0x8B4C,\n\t46384 - 44032: 0xB5FB,\n\t46385 - 44032: 0xB5FC,\n\t46386 - 44032: 0x8B4D,\n\t46387 - 44032: 0x8B4E,\n\t46388 - 44032: 0xB5FD,\n\t46389 - 44032: 0x8B4F,\n\t46390 - 44032: 0x8B50,\n\t46391 - 44032: 0x8B51,\n\t46392 - 44032: 0xB5FE,\n\t46393 - 44032: 0x8B52,\n\t46394 - 44032: 0x8B53,\n\t46395 - 44032: 0x8B54,\n\t46396 - 44032: 0x8B55,\n\t46397 - 44032: 0x8B56,\n\t46398 - 44032: 0x8B57,\n\t46399 - 44032: 0x8B58,\n\t46400 - 44032: 0xB6A1,\n\t46401 - 44032: 0xB6A2,\n\t46402 - 44032: 0x8B59,\n\t46403 - 44032: 0xB6A3,\n\t46404 - 44032: 0xB6A4,\n\t46405 - 44032: 0xB6A5,\n\t46406 - 44032: 0x8B5A,\n\t46407 - 44032: 0x8B61,\n\t46408 - 44032: 0x8B62,\n\t46409 - 44032: 0x8B63,\n\t46410 - 44032: 0x8B64,\n\t46411 - 44032: 0xB6A6,\n\t46412 - 44032: 0xB6A7,\n\t46413 - 44032: 0xB6A8,\n\t46414 - 44032: 0x8B65,\n\t46415 - 44032: 0x8B66,\n\t46416 - 44032: 0xB6A9,\n\t46417 - 44032: 0x8B67,\n\t46418 - 44032: 0x8B68,\n\t46419 - 44032: 0x8B69,\n\t46420 - 44032: 0xB6AA,\n\t46421 - 44032: 0x8B6A,\n\t46422 - 44032: 0x8B6B,\n\t46423 - 44032: 0x8B6C,\n\t46424 - 44032: 0x8B6D,\n\t46425 - 44032: 0x8B6E,\n\t46426 - 44032: 0x8B6F,\n\t46427 - 44032: 0x8B70,\n\t46428 - 44032: 0xB6AB,\n\t46429 - 44032: 0xB6AC,\n\t46430 - 44032: 0x8B71,\n\t46431 - 44032: 0xB6AD,\n\t46432 - 44032: 0xB6AE,\n\t46433 - 44032: 0xB6AF,\n\t46434 - 44032: 0x8B72,\n\t46435 - 44032: 0x8B73,\n\t46436 - 44032: 0x8B74,\n\t46437 - 44032: 0x8B75,\n\t46438 - 44032: 0x8B76,\n\t46439 - 44032: 0x8B77,\n\t46440 - 44032: 0x8B78,\n\t46441 - 44032: 0x8B79,\n\t46442 - 44032: 0x8B7A,\n\t46443 - 44032: 0x8B81,\n\t46444 - 44032: 0x8B82,\n\t46445 - 44032: 0x8B83,\n\t46446 - 44032: 0x8B84,\n\t46447 - 44032: 0x8B85,\n\t46448 - 44032: 0x8B86,\n\t46449 - 44032: 0x8B87,\n\t46450 - 44032: 0x8B88,\n\t46451 - 44032: 0x8B89,\n\t46452 - 44032: 0x8B8A,\n\t46453 - 44032: 0x8B8B,\n\t46454 - 44032: 0x8B8C,\n\t46455 - 44032: 0x8B8D,\n\t46456 - 44032: 0x8B8E,\n\t46457 - 44032: 0x8B8F,\n\t46458 - 44032: 0x8B90,\n\t46459 - 44032: 0x8B91,\n\t46460 - 44032: 0x8B92,\n\t46461 - 44032: 0x8B93,\n\t46462 - 44032: 0x8B94,\n\t46463 - 44032: 0x8B95,\n\t46464 - 44032: 0x8B96,\n\t46465 - 44032: 0x8B97,\n\t46466 - 44032: 0x8B98,\n\t46467 - 44032: 0x8B99,\n\t46468 - 44032: 0x8B9A,\n\t46469 - 44032: 0x8B9B,\n\t46470 - 44032: 0x8B9C,\n\t46471 - 44032: 0x8B9D,\n\t46472 - 44032: 0x8B9E,\n\t46473 - 44032: 0x8B9F,\n\t46474 - 44032: 0x8BA0,\n\t46475 - 44032: 0x8BA1,\n\t46476 - 44032: 0x8BA2,\n\t46477 - 44032: 0x8BA3,\n\t46478 - 44032: 0x8BA4,\n\t46479 - 44032: 0x8BA5,\n\t46480 - 44032: 0x8BA6,\n\t46481 - 44032: 0x8BA7,\n\t46482 - 44032: 0x8BA8,\n\t46483 - 44032: 0x8BA9,\n\t46484 - 44032: 0x8BAA,\n\t46485 - 44032: 0x8BAB,\n\t46486 - 44032: 0x8BAC,\n\t46487 - 44032: 0x8BAD,\n\t46488 - 44032: 0x8BAE,\n\t46489 - 44032: 0x8BAF,\n\t46490 - 44032: 0x8BB0,\n\t46491 - 44032: 0x8BB1,\n\t46492 - 44032: 0x8BB2,\n\t46493 - 44032: 0x8BB3,\n\t46494 - 44032: 0x8BB4,\n\t46495 - 44032: 0x8BB5,\n\t46496 - 44032: 0xB6B0,\n\t46497 - 44032: 0xB6B1,\n\t46498 - 44032: 0x8BB6,\n\t46499 - 44032: 0x8BB7,\n\t46500 - 44032: 0xB6B2,\n\t46501 - 44032: 0x8BB8,\n\t46502 - 44032: 0x8BB9,\n\t46503 - 44032: 0x8BBA,\n\t46504 - 44032: 0xB6B3,\n\t46505 - 44032: 0x8BBB,\n\t46506 - 44032: 0xB6B4,\n\t46507 - 44032: 0xB6B5,\n\t46508 - 44032: 0x8BBC,\n\t46509 - 44032: 0x8BBD,\n\t46510 - 44032: 0x8BBE,\n\t46511 - 44032: 0x8BBF,\n\t46512 - 44032: 0xB6B6,\n\t46513 - 44032: 0xB6B7,\n\t46514 - 44032: 0x8BC0,\n\t46515 - 44032: 0xB6B8,\n\t46516 - 44032: 0xB6B9,\n\t46517 - 44032: 0xB6BA,\n\t46518 - 44032: 0x8BC1,\n\t46519 - 44032: 0x8BC2,\n\t46520 - 44032: 0x8BC3,\n\t46521 - 44032: 0x8BC4,\n\t46522 - 44032: 0x8BC5,\n\t46523 - 44032: 0xB6BB,\n\t46524 - 44032: 0xB6BC,\n\t46525 - 44032: 0xB6BD,\n\t46526 - 44032: 0x8BC6,\n\t46527 - 44032: 0x8BC7,\n\t46528 - 44032: 0xB6BE,\n\t46529 - 44032: 0x8BC8,\n\t46530 - 44032: 0x8BC9,\n\t46531 - 44032: 0x8BCA,\n\t46532 - 44032: 0xB6BF,\n\t46533 - 44032: 0x8BCB,\n\t46534 - 44032: 0x8BCC,\n\t46535 - 44032: 0x8BCD,\n\t46536 - 44032: 0x8BCE,\n\t46537 - 44032: 0x8BCF,\n\t46538 - 44032: 0x8BD0,\n\t46539 - 44032: 0x8BD1,\n\t46540 - 44032: 0xB6C0,\n\t46541 - 44032: 0xB6C1,\n\t46542 - 44032: 0x8BD2,\n\t46543 - 44032: 0xB6C2,\n\t46544 - 44032: 0xB6C3,\n\t46545 - 44032: 0xB6C4,\n\t46546 - 44032: 0x8BD3,\n\t46547 - 44032: 0x8BD4,\n\t46548 - 44032: 0x8BD5,\n\t46549 - 44032: 0x8BD6,\n\t46550 - 44032: 0x8BD7,\n\t46551 - 44032: 0x8BD8,\n\t46552 - 44032: 0xB6C5,\n\t46553 - 44032: 0x8BD9,\n\t46554 - 44032: 0x8BDA,\n\t46555 - 44032: 0x8BDB,\n\t46556 - 44032: 0x8BDC,\n\t46557 - 44032: 0x8BDD,\n\t46558 - 44032: 0x8BDE,\n\t46559 - 44032: 0x8BDF,\n\t46560 - 44032: 0x8BE0,\n\t46561 - 44032: 0x8BE1,\n\t46562 - 44032: 0x8BE2,\n\t46563 - 44032: 0x8BE3,\n\t46564 - 44032: 0x8BE4,\n\t46565 - 44032: 0x8BE5,\n\t46566 - 44032: 0x8BE6,\n\t46567 - 44032: 0x8BE7,\n\t46568 - 44032: 0x8BE8,\n\t46569 - 44032: 0x8BE9,\n\t46570 - 44032: 0x8BEA,\n\t46571 - 44032: 0x8BEB,\n\t46572 - 44032: 0xB6C6,\n\t46573 - 44032: 0x8BEC,\n\t46574 - 44032: 0x8BED,\n\t46575 - 44032: 0x8BEE,\n\t46576 - 44032: 0x8BEF,\n\t46577 - 44032: 0x8BF0,\n\t46578 - 44032: 0x8BF1,\n\t46579 - 44032: 0x8BF2,\n\t46580 - 44032: 0x8BF3,\n\t46581 - 44032: 0x8BF4,\n\t46582 - 44032: 0x8BF5,\n\t46583 - 44032: 0x8BF6,\n\t46584 - 44032: 0x8BF7,\n\t46585 - 44032: 0x8BF8,\n\t46586 - 44032: 0x8BF9,\n\t46587 - 44032: 0x8BFA,\n\t46588 - 44032: 0x8BFB,\n\t46589 - 44032: 0x8BFC,\n\t46590 - 44032: 0x8BFD,\n\t46591 - 44032: 0x8BFE,\n\t46592 - 44032: 0x8C41,\n\t46593 - 44032: 0x8C42,\n\t46594 - 44032: 0x8C43,\n\t46595 - 44032: 0x8C44,\n\t46596 - 44032: 0x8C45,\n\t46597 - 44032: 0x8C46,\n\t46598 - 44032: 0x8C47,\n\t46599 - 44032: 0x8C48,\n\t46600 - 44032: 0x8C49,\n\t46601 - 44032: 0x8C4A,\n\t46602 - 44032: 0x8C4B,\n\t46603 - 44032: 0x8C4C,\n\t46604 - 44032: 0x8C4D,\n\t46605 - 44032: 0x8C4E,\n\t46606 - 44032: 0x8C4F,\n\t46607 - 44032: 0x8C50,\n\t46608 - 44032: 0xB6C7,\n\t46609 - 44032: 0xB6C8,\n\t46610 - 44032: 0x8C51,\n\t46611 - 44032: 0x8C52,\n\t46612 - 44032: 0xB6C9,\n\t46613 - 44032: 0x8C53,\n\t46614 - 44032: 0x8C54,\n\t46615 - 44032: 0x8C55,\n\t46616 - 44032: 0xB6CA,\n\t46617 - 44032: 0x8C56,\n\t46618 - 44032: 0x8C57,\n\t46619 - 44032: 0x8C58,\n\t46620 - 44032: 0x8C59,\n\t46621 - 44032: 0x8C5A,\n\t46622 - 44032: 0x8C61,\n\t46623 - 44032: 0x8C62,\n\t46624 - 44032: 0x8C63,\n\t46625 - 44032: 0x8C64,\n\t46626 - 44032: 0x8C65,\n\t46627 - 44032: 0x8C66,\n\t46628 - 44032: 0x8C67,\n\t46629 - 44032: 0xB6CB,\n\t46630 - 44032: 0x8C68,\n\t46631 - 44032: 0x8C69,\n\t46632 - 44032: 0x8C6A,\n\t46633 - 44032: 0x8C6B,\n\t46634 - 44032: 0x8C6C,\n\t46635 - 44032: 0x8C6D,\n\t46636 - 44032: 0xB6CC,\n\t46637 - 44032: 0x8C6E,\n\t46638 - 44032: 0x8C6F,\n\t46639 - 44032: 0x8C70,\n\t46640 - 44032: 0x8C71,\n\t46641 - 44032: 0x8C72,\n\t46642 - 44032: 0x8C73,\n\t46643 - 44032: 0x8C74,\n\t46644 - 44032: 0xB6CD,\n\t46645 - 44032: 0x8C75,\n\t46646 - 44032: 0x8C76,\n\t46647 - 44032: 0x8C77,\n\t46648 - 44032: 0x8C78,\n\t46649 - 44032: 0x8C79,\n\t46650 - 44032: 0x8C7A,\n\t46651 - 44032: 0x8C81,\n\t46652 - 44032: 0x8C82,\n\t46653 - 44032: 0x8C83,\n\t46654 - 44032: 0x8C84,\n\t46655 - 44032: 0x8C85,\n\t46656 - 44032: 0x8C86,\n\t46657 - 44032: 0x8C87,\n\t46658 - 44032: 0x8C88,\n\t46659 - 44032: 0x8C89,\n\t46660 - 44032: 0x8C8A,\n\t46661 - 44032: 0x8C8B,\n\t46662 - 44032: 0x8C8C,\n\t46663 - 44032: 0x8C8D,\n\t46664 - 44032: 0xB6CE,\n\t46665 - 44032: 0x8C8E,\n\t46666 - 44032: 0x8C8F,\n\t46667 - 44032: 0x8C90,\n\t46668 - 44032: 0x8C91,\n\t46669 - 44032: 0x8C92,\n\t46670 - 44032: 0x8C93,\n\t46671 - 44032: 0x8C94,\n\t46672 - 44032: 0x8C95,\n\t46673 - 44032: 0x8C96,\n\t46674 - 44032: 0x8C97,\n\t46675 - 44032: 0x8C98,\n\t46676 - 44032: 0x8C99,\n\t46677 - 44032: 0x8C9A,\n\t46678 - 44032: 0x8C9B,\n\t46679 - 44032: 0x8C9C,\n\t46680 - 44032: 0x8C9D,\n\t46681 - 44032: 0x8C9E,\n\t46682 - 44032: 0x8C9F,\n\t46683 - 44032: 0x8CA0,\n\t46684 - 44032: 0x8CA1,\n\t46685 - 44032: 0x8CA2,\n\t46686 - 44032: 0x8CA3,\n\t46687 - 44032: 0x8CA4,\n\t46688 - 44032: 0x8CA5,\n\t46689 - 44032: 0x8CA6,\n\t46690 - 44032: 0x8CA7,\n\t46691 - 44032: 0x8CA8,\n\t46692 - 44032: 0xB6CF,\n\t46693 - 44032: 0x8CA9,\n\t46694 - 44032: 0x8CAA,\n\t46695 - 44032: 0x8CAB,\n\t46696 - 44032: 0xB6D0,\n\t46697 - 44032: 0x8CAC,\n\t46698 - 44032: 0x8CAD,\n\t46699 - 44032: 0x8CAE,\n\t46700 - 44032: 0x8CAF,\n\t46701 - 44032: 0x8CB0,\n\t46702 - 44032: 0x8CB1,\n\t46703 - 44032: 0x8CB2,\n\t46704 - 44032: 0x8CB3,\n\t46705 - 44032: 0x8CB4,\n\t46706 - 44032: 0x8CB5,\n\t46707 - 44032: 0x8CB6,\n\t46708 - 44032: 0x8CB7,\n\t46709 - 44032: 0x8CB8,\n\t46710 - 44032: 0x8CB9,\n\t46711 - 44032: 0x8CBA,\n\t46712 - 44032: 0x8CBB,\n\t46713 - 44032: 0x8CBC,\n\t46714 - 44032: 0x8CBD,\n\t46715 - 44032: 0x8CBE,\n\t46716 - 44032: 0x8CBF,\n\t46717 - 44032: 0x8CC0,\n\t46718 - 44032: 0x8CC1,\n\t46719 - 44032: 0x8CC2,\n\t46720 - 44032: 0x8CC3,\n\t46721 - 44032: 0x8CC4,\n\t46722 - 44032: 0x8CC5,\n\t46723 - 44032: 0x8CC6,\n\t46724 - 44032: 0x8CC7,\n\t46725 - 44032: 0x8CC8,\n\t46726 - 44032: 0x8CC9,\n\t46727 - 44032: 0x8CCA,\n\t46728 - 44032: 0x8CCB,\n\t46729 - 44032: 0x8CCC,\n\t46730 - 44032: 0x8CCD,\n\t46731 - 44032: 0x8CCE,\n\t46732 - 44032: 0x8CCF,\n\t46733 - 44032: 0x8CD0,\n\t46734 - 44032: 0x8CD1,\n\t46735 - 44032: 0x8CD2,\n\t46736 - 44032: 0x8CD3,\n\t46737 - 44032: 0x8CD4,\n\t46738 - 44032: 0x8CD5,\n\t46739 - 44032: 0x8CD6,\n\t46740 - 44032: 0x8CD7,\n\t46741 - 44032: 0x8CD8,\n\t46742 - 44032: 0x8CD9,\n\t46743 - 44032: 0x8CDA,\n\t46744 - 44032: 0x8CDB,\n\t46745 - 44032: 0x8CDC,\n\t46746 - 44032: 0x8CDD,\n\t46747 - 44032: 0x8CDE,\n\t46748 - 44032: 0xB6D1,\n\t46749 - 44032: 0xB6D2,\n\t46750 - 44032: 0x8CDF,\n\t46751 - 44032: 0x8CE0,\n\t46752 - 44032: 0xB6D3,\n\t46753 - 44032: 0x8CE1,\n\t46754 - 44032: 0x8CE2,\n\t46755 - 44032: 0x8CE3,\n\t46756 - 44032: 0xB6D4,\n\t46757 - 44032: 0x8CE4,\n\t46758 - 44032: 0x8CE5,\n\t46759 - 44032: 0x8CE6,\n\t46760 - 44032: 0x8CE7,\n\t46761 - 44032: 0x8CE8,\n\t46762 - 44032: 0x8CE9,\n\t46763 - 44032: 0xB6D5,\n\t46764 - 44032: 0xB6D6,\n\t46765 - 44032: 0x8CEA,\n\t46766 - 44032: 0x8CEB,\n\t46767 - 44032: 0x8CEC,\n\t46768 - 44032: 0x8CED,\n\t46769 - 44032: 0xB6D7,\n\t46770 - 44032: 0x8CEE,\n\t46771 - 44032: 0x8CEF,\n\t46772 - 44032: 0x8CF0,\n\t46773 - 44032: 0x8CF1,\n\t46774 - 44032: 0x8CF2,\n\t46775 - 44032: 0x8CF3,\n\t46776 - 44032: 0x8CF4,\n\t46777 - 44032: 0x8CF5,\n\t46778 - 44032: 0x8CF6,\n\t46779 - 44032: 0x8CF7,\n\t46780 - 44032: 0x8CF8,\n\t46781 - 44032: 0x8CF9,\n\t46782 - 44032: 0x8CFA,\n\t46783 - 44032: 0x8CFB,\n\t46784 - 44032: 0x8CFC,\n\t46785 - 44032: 0x8CFD,\n\t46786 - 44032: 0x8CFE,\n\t46787 - 44032: 0x8D41,\n\t46788 - 44032: 0x8D42,\n\t46789 - 44032: 0x8D43,\n\t46790 - 44032: 0x8D44,\n\t46791 - 44032: 0x8D45,\n\t46792 - 44032: 0x8D46,\n\t46793 - 44032: 0x8D47,\n\t46794 - 44032: 0x8D48,\n\t46795 - 44032: 0x8D49,\n\t46796 - 44032: 0x8D4A,\n\t46797 - 44032: 0x8D4B,\n\t46798 - 44032: 0x8D4C,\n\t46799 - 44032: 0x8D4D,\n\t46800 - 44032: 0x8D4E,\n\t46801 - 44032: 0x8D4F,\n\t46802 - 44032: 0x8D50,\n\t46803 - 44032: 0x8D51,\n\t46804 - 44032: 0xB6D8,\n\t46805 - 44032: 0x8D52,\n\t46806 - 44032: 0x8D53,\n\t46807 - 44032: 0x8D54,\n\t46808 - 44032: 0x8D55,\n\t46809 - 44032: 0x8D56,\n\t46810 - 44032: 0x8D57,\n\t46811 - 44032: 0x8D58,\n\t46812 - 44032: 0x8D59,\n\t46813 - 44032: 0x8D5A,\n\t46814 - 44032: 0x8D61,\n\t46815 - 44032: 0x8D62,\n\t46816 - 44032: 0x8D63,\n\t46817 - 44032: 0x8D64,\n\t46818 - 44032: 0x8D65,\n\t46819 - 44032: 0x8D66,\n\t46820 - 44032: 0x8D67,\n\t46821 - 44032: 0x8D68,\n\t46822 - 44032: 0x8D69,\n\t46823 - 44032: 0x8D6A,\n\t46824 - 44032: 0x8D6B,\n\t46825 - 44032: 0x8D6C,\n\t46826 - 44032: 0x8D6D,\n\t46827 - 44032: 0x8D6E,\n\t46828 - 44032: 0x8D6F,\n\t46829 - 44032: 0x8D70,\n\t46830 - 44032: 0x8D71,\n\t46831 - 44032: 0x8D72,\n\t46832 - 44032: 0xB6D9,\n\t46833 - 44032: 0x8D73,\n\t46834 - 44032: 0x8D74,\n\t46835 - 44032: 0x8D75,\n\t46836 - 44032: 0xB6DA,\n\t46837 - 44032: 0x8D76,\n\t46838 - 44032: 0x8D77,\n\t46839 - 44032: 0x8D78,\n\t46840 - 44032: 0xB6DB,\n\t46841 - 44032: 0x8D79,\n\t46842 - 44032: 0x8D7A,\n\t46843 - 44032: 0x8D81,\n\t46844 - 44032: 0x8D82,\n\t46845 - 44032: 0x8D83,\n\t46846 - 44032: 0x8D84,\n\t46847 - 44032: 0x8D85,\n\t46848 - 44032: 0xB6DC,\n\t46849 - 44032: 0xB6DD,\n\t46850 - 44032: 0x8D86,\n\t46851 - 44032: 0x8D87,\n\t46852 - 44032: 0x8D88,\n\t46853 - 44032: 0xB6DE,\n\t46854 - 44032: 0x8D89,\n\t46855 - 44032: 0x8D8A,\n\t46856 - 44032: 0x8D8B,\n\t46857 - 44032: 0x8D8C,\n\t46858 - 44032: 0x8D8D,\n\t46859 - 44032: 0x8D8E,\n\t46860 - 44032: 0x8D8F,\n\t46861 - 44032: 0x8D90,\n\t46862 - 44032: 0x8D91,\n\t46863 - 44032: 0x8D92,\n\t46864 - 44032: 0x8D93,\n\t46865 - 44032: 0x8D94,\n\t46866 - 44032: 0x8D95,\n\t46867 - 44032: 0x8D96,\n\t46868 - 44032: 0x8D97,\n\t46869 - 44032: 0x8D98,\n\t46870 - 44032: 0x8D99,\n\t46871 - 44032: 0x8D9A,\n\t46872 - 44032: 0x8D9B,\n\t46873 - 44032: 0x8D9C,\n\t46874 - 44032: 0x8D9D,\n\t46875 - 44032: 0x8D9E,\n\t46876 - 44032: 0x8D9F,\n\t46877 - 44032: 0x8DA0,\n\t46878 - 44032: 0x8DA1,\n\t46879 - 44032: 0x8DA2,\n\t46880 - 44032: 0x8DA3,\n\t46881 - 44032: 0x8DA4,\n\t46882 - 44032: 0x8DA5,\n\t46883 - 44032: 0x8DA6,\n\t46884 - 44032: 0x8DA7,\n\t46885 - 44032: 0x8DA8,\n\t46886 - 44032: 0x8DA9,\n\t46887 - 44032: 0x8DAA,\n\t46888 - 44032: 0xB6DF,\n\t46889 - 44032: 0xB6E0,\n\t46890 - 44032: 0x8DAB,\n\t46891 - 44032: 0x8DAC,\n\t46892 - 44032: 0xB6E1,\n\t46893 - 44032: 0x8DAD,\n\t46894 - 44032: 0x8DAE,\n\t46895 - 44032: 0xB6E2,\n\t46896 - 44032: 0xB6E3,\n\t46897 - 44032: 0x8DAF,\n\t46898 - 44032: 0x8DB0,\n\t46899 - 44032: 0x8DB1,\n\t46900 - 44032: 0x8DB2,\n\t46901 - 44032: 0x8DB3,\n\t46902 - 44032: 0x8DB4,\n\t46903 - 44032: 0x8DB5,\n\t46904 - 44032: 0xB6E4,\n\t46905 - 44032: 0xB6E5,\n\t46906 - 44032: 0x8DB6,\n\t46907 - 44032: 0xB6E6,\n\t46908 - 44032: 0x8DB7,\n\t46909 - 44032: 0x8DB8,\n\t46910 - 44032: 0x8DB9,\n\t46911 - 44032: 0x8DBA,\n\t46912 - 44032: 0x8DBB,\n\t46913 - 44032: 0x8DBC,\n\t46914 - 44032: 0x8DBD,\n\t46915 - 44032: 0x8DBE,\n\t46916 - 44032: 0xB6E7,\n\t46917 - 44032: 0x8DBF,\n\t46918 - 44032: 0x8DC0,\n\t46919 - 44032: 0x8DC1,\n\t46920 - 44032: 0xB6E8,\n\t46921 - 44032: 0x8DC2,\n\t46922 - 44032: 0x8DC3,\n\t46923 - 44032: 0x8DC4,\n\t46924 - 44032: 0xB6E9,\n\t46925 - 44032: 0x8DC5,\n\t46926 - 44032: 0x8DC6,\n\t46927 - 44032: 0x8DC7,\n\t46928 - 44032: 0x8DC8,\n\t46929 - 44032: 0x8DC9,\n\t46930 - 44032: 0x8DCA,\n\t46931 - 44032: 0x8DCB,\n\t46932 - 44032: 0xB6EA,\n\t46933 - 44032: 0xB6EB,\n\t46934 - 44032: 0x8DCC,\n\t46935 - 44032: 0x8DCD,\n\t46936 - 44032: 0x8DCE,\n\t46937 - 44032: 0x8DCF,\n\t46938 - 44032: 0x8DD0,\n\t46939 - 44032: 0x8DD1,\n\t46940 - 44032: 0x8DD2,\n\t46941 - 44032: 0x8DD3,\n\t46942 - 44032: 0x8DD4,\n\t46943 - 44032: 0x8DD5,\n\t46944 - 44032: 0xB6EC,\n\t46945 - 44032: 0x8DD6,\n\t46946 - 44032: 0x8DD7,\n\t46947 - 44032: 0x8DD8,\n\t46948 - 44032: 0xB6ED,\n\t46949 - 44032: 0x8DD9,\n\t46950 - 44032: 0x8DDA,\n\t46951 - 44032: 0x8DDB,\n\t46952 - 44032: 0xB6EE,\n\t46953 - 44032: 0x8DDC,\n\t46954 - 44032: 0x8DDD,\n\t46955 - 44032: 0x8DDE,\n\t46956 - 44032: 0x8DDF,\n\t46957 - 44032: 0x8DE0,\n\t46958 - 44032: 0x8DE1,\n\t46959 - 44032: 0x8DE2,\n\t46960 - 44032: 0xB6EF,\n\t46961 - 44032: 0xB6F0,\n\t46962 - 44032: 0x8DE3,\n\t46963 - 44032: 0xB6F1,\n\t46964 - 44032: 0x8DE4,\n\t46965 - 44032: 0xB6F2,\n\t46966 - 44032: 0x8DE5,\n\t46967 - 44032: 0x8DE6,\n\t46968 - 44032: 0x8DE7,\n\t46969 - 44032: 0x8DE8,\n\t46970 - 44032: 0x8DE9,\n\t46971 - 44032: 0x8DEA,\n\t46972 - 44032: 0xB6F3,\n\t46973 - 44032: 0xB6F4,\n\t46974 - 44032: 0x8DEB,\n\t46975 - 44032: 0x8DEC,\n\t46976 - 44032: 0xB6F5,\n\t46977 - 44032: 0x8DED,\n\t46978 - 44032: 0x8DEE,\n\t46979 - 44032: 0x8DEF,\n\t46980 - 44032: 0xB6F6,\n\t46981 - 44032: 0x8DF0,\n\t46982 - 44032: 0x8DF1,\n\t46983 - 44032: 0x8DF2,\n\t46984 - 44032: 0x8DF3,\n\t46985 - 44032: 0x8DF4,\n\t46986 - 44032: 0x8DF5,\n\t46987 - 44032: 0x8DF6,\n\t46988 - 44032: 0xB6F7,\n\t46989 - 44032: 0xB6F8,\n\t46990 - 44032: 0x8DF7,\n\t46991 - 44032: 0xB6F9,\n\t46992 - 44032: 0xB6FA,\n\t46993 - 44032: 0xB6FB,\n\t46994 - 44032: 0xB6FC,\n\t46995 - 44032: 0x8DF8,\n\t46996 - 44032: 0x8DF9,\n\t46997 - 44032: 0x8DFA,\n\t46998 - 44032: 0xB6FD,\n\t46999 - 44032: 0xB6FE,\n\t47000 - 44032: 0xB7A1,\n\t47001 - 44032: 0xB7A2,\n\t47002 - 44032: 0x8DFB,\n\t47003 - 44032: 0x8DFC,\n\t47004 - 44032: 0xB7A3,\n\t47005 - 44032: 0x8DFD,\n\t47006 - 44032: 0x8DFE,\n\t47007 - 44032: 0x8E41,\n\t47008 - 44032: 0xB7A4,\n\t47009 - 44032: 0x8E42,\n\t47010 - 44032: 0x8E43,\n\t47011 - 44032: 0x8E44,\n\t47012 - 44032: 0x8E45,\n\t47013 - 44032: 0x8E46,\n\t47014 - 44032: 0x8E47,\n\t47015 - 44032: 0x8E48,\n\t47016 - 44032: 0xB7A5,\n\t47017 - 44032: 0xB7A6,\n\t47018 - 44032: 0x8E49,\n\t47019 - 44032: 0xB7A7,\n\t47020 - 44032: 0xB7A8,\n\t47021 - 44032: 0xB7A9,\n\t47022 - 44032: 0x8E4A,\n\t47023 - 44032: 0x8E4B,\n\t47024 - 44032: 0x8E4C,\n\t47025 - 44032: 0x8E4D,\n\t47026 - 44032: 0x8E4E,\n\t47027 - 44032: 0x8E4F,\n\t47028 - 44032: 0xB7AA,\n\t47029 - 44032: 0xB7AB,\n\t47030 - 44032: 0x8E50,\n\t47031 - 44032: 0x8E51,\n\t47032 - 44032: 0xB7AC,\n\t47033 - 44032: 0x8E52,\n\t47034 - 44032: 0x8E53,\n\t47035 - 44032: 0x8E54,\n\t47036 - 44032: 0x8E55,\n\t47037 - 44032: 0x8E56,\n\t47038 - 44032: 0x8E57,\n\t47039 - 44032: 0x8E58,\n\t47040 - 44032: 0x8E59,\n\t47041 - 44032: 0x8E5A,\n\t47042 - 44032: 0x8E61,\n\t47043 - 44032: 0x8E62,\n\t47044 - 44032: 0x8E63,\n\t47045 - 44032: 0x8E64,\n\t47046 - 44032: 0x8E65,\n\t47047 - 44032: 0xB7AD,\n\t47048 - 44032: 0x8E66,\n\t47049 - 44032: 0xB7AE,\n\t47050 - 44032: 0x8E67,\n\t47051 - 44032: 0x8E68,\n\t47052 - 44032: 0x8E69,\n\t47053 - 44032: 0x8E6A,\n\t47054 - 44032: 0x8E6B,\n\t47055 - 44032: 0x8E6C,\n\t47056 - 44032: 0x8E6D,\n\t47057 - 44032: 0x8E6E,\n\t47058 - 44032: 0x8E6F,\n\t47059 - 44032: 0x8E70,\n\t47060 - 44032: 0x8E71,\n\t47061 - 44032: 0x8E72,\n\t47062 - 44032: 0x8E73,\n\t47063 - 44032: 0x8E74,\n\t47064 - 44032: 0x8E75,\n\t47065 - 44032: 0x8E76,\n\t47066 - 44032: 0x8E77,\n\t47067 - 44032: 0x8E78,\n\t47068 - 44032: 0x8E79,\n\t47069 - 44032: 0x8E7A,\n\t47070 - 44032: 0x8E81,\n\t47071 - 44032: 0x8E82,\n\t47072 - 44032: 0x8E83,\n\t47073 - 44032: 0x8E84,\n\t47074 - 44032: 0x8E85,\n\t47075 - 44032: 0x8E86,\n\t47076 - 44032: 0x8E87,\n\t47077 - 44032: 0x8E88,\n\t47078 - 44032: 0x8E89,\n\t47079 - 44032: 0x8E8A,\n\t47080 - 44032: 0x8E8B,\n\t47081 - 44032: 0x8E8C,\n\t47082 - 44032: 0x8E8D,\n\t47083 - 44032: 0x8E8E,\n\t47084 - 44032: 0xB7AF,\n\t47085 - 44032: 0xB7B0,\n\t47086 - 44032: 0x8E8F,\n\t47087 - 44032: 0x8E90,\n\t47088 - 44032: 0xB7B1,\n\t47089 - 44032: 0x8E91,\n\t47090 - 44032: 0x8E92,\n\t47091 - 44032: 0x8E93,\n\t47092 - 44032: 0xB7B2,\n\t47093 - 44032: 0x8E94,\n\t47094 - 44032: 0x8E95,\n\t47095 - 44032: 0x8E96,\n\t47096 - 44032: 0x8E97,\n\t47097 - 44032: 0x8E98,\n\t47098 - 44032: 0x8E99,\n\t47099 - 44032: 0x8E9A,\n\t47100 - 44032: 0xB7B3,\n\t47101 - 44032: 0xB7B4,\n\t47102 - 44032: 0x8E9B,\n\t47103 - 44032: 0xB7B5,\n\t47104 - 44032: 0xB7B6,\n\t47105 - 44032: 0xB7B7,\n\t47106 - 44032: 0x8E9C,\n\t47107 - 44032: 0x8E9D,\n\t47108 - 44032: 0x8E9E,\n\t47109 - 44032: 0x8E9F,\n\t47110 - 44032: 0x8EA0,\n\t47111 - 44032: 0xB7B8,\n\t47112 - 44032: 0xB7B9,\n\t47113 - 44032: 0xB7BA,\n\t47114 - 44032: 0x8EA1,\n\t47115 - 44032: 0x8EA2,\n\t47116 - 44032: 0xB7BB,\n\t47117 - 44032: 0x8EA3,\n\t47118 - 44032: 0x8EA4,\n\t47119 - 44032: 0x8EA5,\n\t47120 - 44032: 0xB7BC,\n\t47121 - 44032: 0x8EA6,\n\t47122 - 44032: 0x8EA7,\n\t47123 - 44032: 0x8EA8,\n\t47124 - 44032: 0x8EA9,\n\t47125 - 44032: 0x8EAA,\n\t47126 - 44032: 0x8EAB,\n\t47127 - 44032: 0x8EAC,\n\t47128 - 44032: 0xB7BD,\n\t47129 - 44032: 0xB7BE,\n\t47130 - 44032: 0x8EAD,\n\t47131 - 44032: 0xB7BF,\n\t47132 - 44032: 0x8EAE,\n\t47133 - 44032: 0xB7C0,\n\t47134 - 44032: 0x8EAF,\n\t47135 - 44032: 0x8EB0,\n\t47136 - 44032: 0x8EB1,\n\t47137 - 44032: 0x8EB2,\n\t47138 - 44032: 0x8EB3,\n\t47139 - 44032: 0x8EB4,\n\t47140 - 44032: 0xB7C1,\n\t47141 - 44032: 0xB7C2,\n\t47142 - 44032: 0x8EB5,\n\t47143 - 44032: 0x8EB6,\n\t47144 - 44032: 0xB7C3,\n\t47145 - 44032: 0x8EB7,\n\t47146 - 44032: 0x8EB8,\n\t47147 - 44032: 0x8EB9,\n\t47148 - 44032: 0xB7C4,\n\t47149 - 44032: 0x8EBA,\n\t47150 - 44032: 0x8EBB,\n\t47151 - 44032: 0x8EBC,\n\t47152 - 44032: 0x8EBD,\n\t47153 - 44032: 0x8EBE,\n\t47154 - 44032: 0x8EBF,\n\t47155 - 44032: 0x8EC0,\n\t47156 - 44032: 0xB7C5,\n\t47157 - 44032: 0xB7C6,\n\t47158 - 44032: 0x8EC1,\n\t47159 - 44032: 0xB7C7,\n\t47160 - 44032: 0xB7C8,\n\t47161 - 44032: 0xB7C9,\n\t47162 - 44032: 0x8EC2,\n\t47163 - 44032: 0x8EC3,\n\t47164 - 44032: 0x8EC4,\n\t47165 - 44032: 0x8EC5,\n\t47166 - 44032: 0x8EC6,\n\t47167 - 44032: 0x8EC7,\n\t47168 - 44032: 0xB7CA,\n\t47169 - 44032: 0x8EC8,\n\t47170 - 44032: 0x8EC9,\n\t47171 - 44032: 0x8ECA,\n\t47172 - 44032: 0xB7CB,\n\t47173 - 44032: 0x8ECB,\n\t47174 - 44032: 0x8ECC,\n\t47175 - 44032: 0x8ECD,\n\t47176 - 44032: 0x8ECE,\n\t47177 - 44032: 0x8ECF,\n\t47178 - 44032: 0x8ED0,\n\t47179 - 44032: 0x8ED1,\n\t47180 - 44032: 0x8ED2,\n\t47181 - 44032: 0x8ED3,\n\t47182 - 44032: 0x8ED4,\n\t47183 - 44032: 0x8ED5,\n\t47184 - 44032: 0x8ED6,\n\t47185 - 44032: 0xB7CC,\n\t47186 - 44032: 0x8ED7,\n\t47187 - 44032: 0xB7CD,\n\t47188 - 44032: 0x8ED8,\n\t47189 - 44032: 0x8ED9,\n\t47190 - 44032: 0x8EDA,\n\t47191 - 44032: 0x8EDB,\n\t47192 - 44032: 0x8EDC,\n\t47193 - 44032: 0x8EDD,\n\t47194 - 44032: 0x8EDE,\n\t47195 - 44032: 0x8EDF,\n\t47196 - 44032: 0xB7CE,\n\t47197 - 44032: 0xB7CF,\n\t47198 - 44032: 0x8EE0,\n\t47199 - 44032: 0x8EE1,\n\t47200 - 44032: 0xB7D0,\n\t47201 - 44032: 0x8EE2,\n\t47202 - 44032: 0x8EE3,\n\t47203 - 44032: 0x8EE4,\n\t47204 - 44032: 0xB7D1,\n\t47205 - 44032: 0x8EE5,\n\t47206 - 44032: 0x8EE6,\n\t47207 - 44032: 0x8EE7,\n\t47208 - 44032: 0x8EE8,\n\t47209 - 44032: 0x8EE9,\n\t47210 - 44032: 0x8EEA,\n\t47211 - 44032: 0x8EEB,\n\t47212 - 44032: 0xB7D2,\n\t47213 - 44032: 0xB7D3,\n\t47214 - 44032: 0x8EEC,\n\t47215 - 44032: 0xB7D4,\n\t47216 - 44032: 0x8EED,\n\t47217 - 44032: 0xB7D5,\n\t47218 - 44032: 0x8EEE,\n\t47219 - 44032: 0x8EEF,\n\t47220 - 44032: 0x8EF0,\n\t47221 - 44032: 0x8EF1,\n\t47222 - 44032: 0x8EF2,\n\t47223 - 44032: 0x8EF3,\n\t47224 - 44032: 0xB7D6,\n\t47225 - 44032: 0x8EF4,\n\t47226 - 44032: 0x8EF5,\n\t47227 - 44032: 0x8EF6,\n\t47228 - 44032: 0xB7D7,\n\t47229 - 44032: 0x8EF7,\n\t47230 - 44032: 0x8EF8,\n\t47231 - 44032: 0x8EF9,\n\t47232 - 44032: 0x8EFA,\n\t47233 - 44032: 0x8EFB,\n\t47234 - 44032: 0x8EFC,\n\t47235 - 44032: 0x8EFD,\n\t47236 - 44032: 0x8EFE,\n\t47237 - 44032: 0x8F41,\n\t47238 - 44032: 0x8F42,\n\t47239 - 44032: 0x8F43,\n\t47240 - 44032: 0x8F44,\n\t47241 - 44032: 0x8F45,\n\t47242 - 44032: 0x8F46,\n\t47243 - 44032: 0x8F47,\n\t47244 - 44032: 0x8F48,\n\t47245 - 44032: 0xB7D8,\n\t47246 - 44032: 0x8F49,\n\t47247 - 44032: 0x8F4A,\n\t47248 - 44032: 0x8F4B,\n\t47249 - 44032: 0x8F4C,\n\t47250 - 44032: 0x8F4D,\n\t47251 - 44032: 0x8F4E,\n\t47252 - 44032: 0x8F4F,\n\t47253 - 44032: 0x8F50,\n\t47254 - 44032: 0x8F51,\n\t47255 - 44032: 0x8F52,\n\t47256 - 44032: 0x8F53,\n\t47257 - 44032: 0x8F54,\n\t47258 - 44032: 0x8F55,\n\t47259 - 44032: 0x8F56,\n\t47260 - 44032: 0x8F57,\n\t47261 - 44032: 0x8F58,\n\t47262 - 44032: 0x8F59,\n\t47263 - 44032: 0x8F5A,\n\t47264 - 44032: 0x8F61,\n\t47265 - 44032: 0x8F62,\n\t47266 - 44032: 0x8F63,\n\t47267 - 44032: 0x8F64,\n\t47268 - 44032: 0x8F65,\n\t47269 - 44032: 0x8F66,\n\t47270 - 44032: 0x8F67,\n\t47271 - 44032: 0x8F68,\n\t47272 - 44032: 0xB7D9,\n\t47273 - 44032: 0x8F69,\n\t47274 - 44032: 0x8F6A,\n\t47275 - 44032: 0x8F6B,\n\t47276 - 44032: 0x8F6C,\n\t47277 - 44032: 0x8F6D,\n\t47278 - 44032: 0x8F6E,\n\t47279 - 44032: 0x8F6F,\n\t47280 - 44032: 0xB7DA,\n\t47281 - 44032: 0x8F70,\n\t47282 - 44032: 0x8F71,\n\t47283 - 44032: 0x8F72,\n\t47284 - 44032: 0xB7DB,\n\t47285 - 44032: 0x8F73,\n\t47286 - 44032: 0x8F74,\n\t47287 - 44032: 0x8F75,\n\t47288 - 44032: 0xB7DC,\n\t47289 - 44032: 0x8F76,\n\t47290 - 44032: 0x8F77,\n\t47291 - 44032: 0x8F78,\n\t47292 - 44032: 0x8F79,\n\t47293 - 44032: 0x8F7A,\n\t47294 - 44032: 0x8F81,\n\t47295 - 44032: 0x8F82,\n\t47296 - 44032: 0xB7DD,\n\t47297 - 44032: 0xB7DE,\n\t47298 - 44032: 0x8F83,\n\t47299 - 44032: 0xB7DF,\n\t47300 - 44032: 0x8F84,\n\t47301 - 44032: 0xB7E0,\n\t47302 - 44032: 0x8F85,\n\t47303 - 44032: 0x8F86,\n\t47304 - 44032: 0x8F87,\n\t47305 - 44032: 0x8F88,\n\t47306 - 44032: 0x8F89,\n\t47307 - 44032: 0x8F8A,\n\t47308 - 44032: 0xB7E1,\n\t47309 - 44032: 0x8F8B,\n\t47310 - 44032: 0x8F8C,\n\t47311 - 44032: 0x8F8D,\n\t47312 - 44032: 0xB7E2,\n\t47313 - 44032: 0x8F8E,\n\t47314 - 44032: 0x8F8F,\n\t47315 - 44032: 0x8F90,\n\t47316 - 44032: 0xB7E3,\n\t47317 - 44032: 0x8F91,\n\t47318 - 44032: 0x8F92,\n\t47319 - 44032: 0x8F93,\n\t47320 - 44032: 0x8F94,\n\t47321 - 44032: 0x8F95,\n\t47322 - 44032: 0x8F96,\n\t47323 - 44032: 0x8F97,\n\t47324 - 44032: 0x8F98,\n\t47325 - 44032: 0xB7E4,\n\t47326 - 44032: 0x8F99,\n\t47327 - 44032: 0xB7E5,\n\t47328 - 44032: 0x8F9A,\n\t47329 - 44032: 0xB7E6,\n\t47330 - 44032: 0x8F9B,\n\t47331 - 44032: 0x8F9C,\n\t47332 - 44032: 0x8F9D,\n\t47333 - 44032: 0x8F9E,\n\t47334 - 44032: 0x8F9F,\n\t47335 - 44032: 0x8FA0,\n\t47336 - 44032: 0xB7E7,\n\t47337 - 44032: 0xB7E8,\n\t47338 - 44032: 0x8FA1,\n\t47339 - 44032: 0x8FA2,\n\t47340 - 44032: 0xB7E9,\n\t47341 - 44032: 0x8FA3,\n\t47342 - 44032: 0x8FA4,\n\t47343 - 44032: 0x8FA5,\n\t47344 - 44032: 0xB7EA,\n\t47345 - 44032: 0x8FA6,\n\t47346 - 44032: 0x8FA7,\n\t47347 - 44032: 0x8FA8,\n\t47348 - 44032: 0x8FA9,\n\t47349 - 44032: 0x8FAA,\n\t47350 - 44032: 0x8FAB,\n\t47351 - 44032: 0x8FAC,\n\t47352 - 44032: 0xB7EB,\n\t47353 - 44032: 0xB7EC,\n\t47354 - 44032: 0x8FAD,\n\t47355 - 44032: 0xB7ED,\n\t47356 - 44032: 0x8FAE,\n\t47357 - 44032: 0xB7EE,\n\t47358 - 44032: 0x8FAF,\n\t47359 - 44032: 0x8FB0,\n\t47360 - 44032: 0x8FB1,\n\t47361 - 44032: 0x8FB2,\n\t47362 - 44032: 0x8FB3,\n\t47363 - 44032: 0x8FB4,\n\t47364 - 44032: 0xB7EF,\n\t47365 - 44032: 0x8FB5,\n\t47366 - 44032: 0x8FB6,\n\t47367 - 44032: 0x8FB7,\n\t47368 - 44032: 0x8FB8,\n\t47369 - 44032: 0x8FB9,\n\t47370 - 44032: 0x8FBA,\n\t47371 - 44032: 0x8FBB,\n\t47372 - 44032: 0x8FBC,\n\t47373 - 44032: 0x8FBD,\n\t47374 - 44032: 0x8FBE,\n\t47375 - 44032: 0x8FBF,\n\t47376 - 44032: 0x8FC0,\n\t47377 - 44032: 0x8FC1,\n\t47378 - 44032: 0x8FC2,\n\t47379 - 44032: 0x8FC3,\n\t47380 - 44032: 0x8FC4,\n\t47381 - 44032: 0x8FC5,\n\t47382 - 44032: 0x8FC6,\n\t47383 - 44032: 0x8FC7,\n\t47384 - 44032: 0xB7F0,\n\t47385 - 44032: 0x8FC8,\n\t47386 - 44032: 0x8FC9,\n\t47387 - 44032: 0x8FCA,\n\t47388 - 44032: 0x8FCB,\n\t47389 - 44032: 0x8FCC,\n\t47390 - 44032: 0x8FCD,\n\t47391 - 44032: 0x8FCE,\n\t47392 - 44032: 0xB7F1,\n\t47393 - 44032: 0x8FCF,\n\t47394 - 44032: 0x8FD0,\n\t47395 - 44032: 0x8FD1,\n\t47396 - 44032: 0x8FD2,\n\t47397 - 44032: 0x8FD3,\n\t47398 - 44032: 0x8FD4,\n\t47399 - 44032: 0x8FD5,\n\t47400 - 44032: 0x8FD6,\n\t47401 - 44032: 0x8FD7,\n\t47402 - 44032: 0x8FD8,\n\t47403 - 44032: 0x8FD9,\n\t47404 - 44032: 0x8FDA,\n\t47405 - 44032: 0x8FDB,\n\t47406 - 44032: 0x8FDC,\n\t47407 - 44032: 0x8FDD,\n\t47408 - 44032: 0x8FDE,\n\t47409 - 44032: 0x8FDF,\n\t47410 - 44032: 0x8FE0,\n\t47411 - 44032: 0x8FE1,\n\t47412 - 44032: 0x8FE2,\n\t47413 - 44032: 0x8FE3,\n\t47414 - 44032: 0x8FE4,\n\t47415 - 44032: 0x8FE5,\n\t47416 - 44032: 0x8FE6,\n\t47417 - 44032: 0x8FE7,\n\t47418 - 44032: 0x8FE8,\n\t47419 - 44032: 0x8FE9,\n\t47420 - 44032: 0xB7F2,\n\t47421 - 44032: 0xB7F3,\n\t47422 - 44032: 0x8FEA,\n\t47423 - 44032: 0x8FEB,\n\t47424 - 44032: 0xB7F4,\n\t47425 - 44032: 0x8FEC,\n\t47426 - 44032: 0x8FED,\n\t47427 - 44032: 0x8FEE,\n\t47428 - 44032: 0xB7F5,\n\t47429 - 44032: 0x8FEF,\n\t47430 - 44032: 0x8FF0,\n\t47431 - 44032: 0x8FF1,\n\t47432 - 44032: 0x8FF2,\n\t47433 - 44032: 0x8FF3,\n\t47434 - 44032: 0x8FF4,\n\t47435 - 44032: 0x8FF5,\n\t47436 - 44032: 0xB7F6,\n\t47437 - 44032: 0x8FF6,\n\t47438 - 44032: 0x8FF7,\n\t47439 - 44032: 0xB7F7,\n\t47440 - 44032: 0x8FF8,\n\t47441 - 44032: 0xB7F8,\n\t47442 - 44032: 0x8FF9,\n\t47443 - 44032: 0x8FFA,\n\t47444 - 44032: 0x8FFB,\n\t47445 - 44032: 0x8FFC,\n\t47446 - 44032: 0x8FFD,\n\t47447 - 44032: 0x8FFE,\n\t47448 - 44032: 0xB7F9,\n\t47449 - 44032: 0xB7FA,\n\t47450 - 44032: 0x9041,\n\t47451 - 44032: 0x9042,\n\t47452 - 44032: 0xB7FB,\n\t47453 - 44032: 0x9043,\n\t47454 - 44032: 0x9044,\n\t47455 - 44032: 0x9045,\n\t47456 - 44032: 0xB7FC,\n\t47457 - 44032: 0x9046,\n\t47458 - 44032: 0x9047,\n\t47459 - 44032: 0x9048,\n\t47460 - 44032: 0x9049,\n\t47461 - 44032: 0x904A,\n\t47462 - 44032: 0x904B,\n\t47463 - 44032: 0x904C,\n\t47464 - 44032: 0xB7FD,\n\t47465 - 44032: 0xB7FE,\n\t47466 - 44032: 0x904D,\n\t47467 - 44032: 0xB8A1,\n\t47468 - 44032: 0x904E,\n\t47469 - 44032: 0xB8A2,\n\t47470 - 44032: 0x904F,\n\t47471 - 44032: 0x9050,\n\t47472 - 44032: 0x9051,\n\t47473 - 44032: 0x9052,\n\t47474 - 44032: 0x9053,\n\t47475 - 44032: 0x9054,\n\t47476 - 44032: 0xB8A3,\n\t47477 - 44032: 0xB8A4,\n\t47478 - 44032: 0x9055,\n\t47479 - 44032: 0x9056,\n\t47480 - 44032: 0xB8A5,\n\t47481 - 44032: 0x9057,\n\t47482 - 44032: 0x9058,\n\t47483 - 44032: 0x9059,\n\t47484 - 44032: 0xB8A6,\n\t47485 - 44032: 0x905A,\n\t47486 - 44032: 0x9061,\n\t47487 - 44032: 0x9062,\n\t47488 - 44032: 0x9063,\n\t47489 - 44032: 0x9064,\n\t47490 - 44032: 0x9065,\n\t47491 - 44032: 0x9066,\n\t47492 - 44032: 0xB8A7,\n\t47493 - 44032: 0xB8A8,\n\t47494 - 44032: 0x9067,\n\t47495 - 44032: 0xB8A9,\n\t47496 - 44032: 0x9068,\n\t47497 - 44032: 0xB8AA,\n\t47498 - 44032: 0xB8AB,\n\t47499 - 44032: 0x9069,\n\t47500 - 44032: 0x906A,\n\t47501 - 44032: 0xB8AC,\n\t47502 - 44032: 0xB8AD,\n\t47503 - 44032: 0x906B,\n\t47504 - 44032: 0x906C,\n\t47505 - 44032: 0x906D,\n\t47506 - 44032: 0x906E,\n\t47507 - 44032: 0x906F,\n\t47508 - 44032: 0x9070,\n\t47509 - 44032: 0x9071,\n\t47510 - 44032: 0x9072,\n\t47511 - 44032: 0x9073,\n\t47512 - 44032: 0x9074,\n\t47513 - 44032: 0x9075,\n\t47514 - 44032: 0x9076,\n\t47515 - 44032: 0x9077,\n\t47516 - 44032: 0x9078,\n\t47517 - 44032: 0x9079,\n\t47518 - 44032: 0x907A,\n\t47519 - 44032: 0x9081,\n\t47520 - 44032: 0x9082,\n\t47521 - 44032: 0x9083,\n\t47522 - 44032: 0x9084,\n\t47523 - 44032: 0x9085,\n\t47524 - 44032: 0x9086,\n\t47525 - 44032: 0x9087,\n\t47526 - 44032: 0x9088,\n\t47527 - 44032: 0x9089,\n\t47528 - 44032: 0x908A,\n\t47529 - 44032: 0x908B,\n\t47530 - 44032: 0x908C,\n\t47531 - 44032: 0x908D,\n\t47532 - 44032: 0xB8AE,\n\t47533 - 44032: 0xB8AF,\n\t47534 - 44032: 0x908E,\n\t47535 - 44032: 0x908F,\n\t47536 - 44032: 0xB8B0,\n\t47537 - 44032: 0x9090,\n\t47538 - 44032: 0x9091,\n\t47539 - 44032: 0x9092,\n\t47540 - 44032: 0xB8B1,\n\t47541 - 44032: 0x9093,\n\t47542 - 44032: 0x9094,\n\t47543 - 44032: 0x9095,\n\t47544 - 44032: 0x9096,\n\t47545 - 44032: 0x9097,\n\t47546 - 44032: 0x9098,\n\t47547 - 44032: 0x9099,\n\t47548 - 44032: 0xB8B2,\n\t47549 - 44032: 0xB8B3,\n\t47550 - 44032: 0x909A,\n\t47551 - 44032: 0xB8B4,\n\t47552 - 44032: 0x909B,\n\t47553 - 44032: 0xB8B5,\n\t47554 - 44032: 0x909C,\n\t47555 - 44032: 0x909D,\n\t47556 - 44032: 0x909E,\n\t47557 - 44032: 0x909F,\n\t47558 - 44032: 0x90A0,\n\t47559 - 44032: 0x90A1,\n\t47560 - 44032: 0xB8B6,\n\t47561 - 44032: 0xB8B7,\n\t47562 - 44032: 0x90A2,\n\t47563 - 44032: 0x90A3,\n\t47564 - 44032: 0xB8B8,\n\t47565 - 44032: 0x90A4,\n\t47566 - 44032: 0xB8B9,\n\t47567 - 44032: 0xB8BA,\n\t47568 - 44032: 0xB8BB,\n\t47569 - 44032: 0xB8BC,\n\t47570 - 44032: 0xB8BD,\n\t47571 - 44032: 0x90A5,\n\t47572 - 44032: 0x90A6,\n\t47573 - 44032: 0x90A7,\n\t47574 - 44032: 0x90A8,\n\t47575 - 44032: 0x90A9,\n\t47576 - 44032: 0xB8BE,\n\t47577 - 44032: 0xB8BF,\n\t47578 - 44032: 0x90AA,\n\t47579 - 44032: 0xB8C0,\n\t47580 - 44032: 0x90AB,\n\t47581 - 44032: 0xB8C1,\n\t47582 - 44032: 0xB8C2,\n\t47583 - 44032: 0x90AC,\n\t47584 - 44032: 0x90AD,\n\t47585 - 44032: 0xB8C3,\n\t47586 - 44032: 0x90AE,\n\t47587 - 44032: 0xB8C4,\n\t47588 - 44032: 0xB8C5,\n\t47589 - 44032: 0xB8C6,\n\t47590 - 44032: 0x90AF,\n\t47591 - 44032: 0x90B0,\n\t47592 - 44032: 0xB8C7,\n\t47593 - 44032: 0x90B1,\n\t47594 - 44032: 0x90B2,\n\t47595 - 44032: 0x90B3,\n\t47596 - 44032: 0xB8C8,\n\t47597 - 44032: 0x90B4,\n\t47598 - 44032: 0x90B5,\n\t47599 - 44032: 0x90B6,\n\t47600 - 44032: 0x90B7,\n\t47601 - 44032: 0x90B8,\n\t47602 - 44032: 0x90B9,\n\t47603 - 44032: 0x90BA,\n\t47604 - 44032: 0xB8C9,\n\t47605 - 44032: 0xB8CA,\n\t47606 - 44032: 0x90BB,\n\t47607 - 44032: 0xB8CB,\n\t47608 - 44032: 0xB8CC,\n\t47609 - 44032: 0xB8CD,\n\t47610 - 44032: 0xB8CE,\n\t47611 - 44032: 0x90BC,\n\t47612 - 44032: 0x90BD,\n\t47613 - 44032: 0x90BE,\n\t47614 - 44032: 0x90BF,\n\t47615 - 44032: 0x90C0,\n\t47616 - 44032: 0xB8CF,\n\t47617 - 44032: 0xB8D0,\n\t47618 - 44032: 0x90C1,\n\t47619 - 44032: 0x90C2,\n\t47620 - 44032: 0x90C3,\n\t47621 - 44032: 0x90C4,\n\t47622 - 44032: 0x90C5,\n\t47623 - 44032: 0x90C6,\n\t47624 - 44032: 0xB8D1,\n\t47625 - 44032: 0x90C7,\n\t47626 - 44032: 0x90C8,\n\t47627 - 44032: 0x90C9,\n\t47628 - 44032: 0x90CA,\n\t47629 - 44032: 0x90CB,\n\t47630 - 44032: 0x90CC,\n\t47631 - 44032: 0x90CD,\n\t47632 - 44032: 0x90CE,\n\t47633 - 44032: 0x90CF,\n\t47634 - 44032: 0x90D0,\n\t47635 - 44032: 0x90D1,\n\t47636 - 44032: 0x90D2,\n\t47637 - 44032: 0xB8D2,\n\t47638 - 44032: 0x90D3,\n\t47639 - 44032: 0x90D4,\n\t47640 - 44032: 0x90D5,\n\t47641 - 44032: 0x90D6,\n\t47642 - 44032: 0x90D7,\n\t47643 - 44032: 0x90D8,\n\t47644 - 44032: 0x90D9,\n\t47645 - 44032: 0x90DA,\n\t47646 - 44032: 0x90DB,\n\t47647 - 44032: 0x90DC,\n\t47648 - 44032: 0x90DD,\n\t47649 - 44032: 0x90DE,\n\t47650 - 44032: 0x90DF,\n\t47651 - 44032: 0x90E0,\n\t47652 - 44032: 0x90E1,\n\t47653 - 44032: 0x90E2,\n\t47654 - 44032: 0x90E3,\n\t47655 - 44032: 0x90E4,\n\t47656 - 44032: 0x90E5,\n\t47657 - 44032: 0x90E6,\n\t47658 - 44032: 0x90E7,\n\t47659 - 44032: 0x90E8,\n\t47660 - 44032: 0x90E9,\n\t47661 - 44032: 0x90EA,\n\t47662 - 44032: 0x90EB,\n\t47663 - 44032: 0x90EC,\n\t47664 - 44032: 0x90ED,\n\t47665 - 44032: 0x90EE,\n\t47666 - 44032: 0x90EF,\n\t47667 - 44032: 0x90F0,\n\t47668 - 44032: 0x90F1,\n\t47669 - 44032: 0x90F2,\n\t47670 - 44032: 0x90F3,\n\t47671 - 44032: 0x90F4,\n\t47672 - 44032: 0xB8D3,\n\t47673 - 44032: 0xB8D4,\n\t47674 - 44032: 0x90F5,\n\t47675 - 44032: 0x90F6,\n\t47676 - 44032: 0xB8D5,\n\t47677 - 44032: 0x90F7,\n\t47678 - 44032: 0x90F8,\n\t47679 - 44032: 0x90F9,\n\t47680 - 44032: 0xB8D6,\n\t47681 - 44032: 0x90FA,\n\t47682 - 44032: 0xB8D7,\n\t47683 - 44032: 0x90FB,\n\t47684 - 44032: 0x90FC,\n\t47685 - 44032: 0x90FD,\n\t47686 - 44032: 0x90FE,\n\t47687 - 44032: 0x9141,\n\t47688 - 44032: 0xB8D8,\n\t47689 - 44032: 0xB8D9,\n\t47690 - 44032: 0x9142,\n\t47691 - 44032: 0xB8DA,\n\t47692 - 44032: 0x9143,\n\t47693 - 44032: 0xB8DB,\n\t47694 - 44032: 0xB8DC,\n\t47695 - 44032: 0x9144,\n\t47696 - 44032: 0x9145,\n\t47697 - 44032: 0x9146,\n\t47698 - 44032: 0x9147,\n\t47699 - 44032: 0xB8DD,\n\t47700 - 44032: 0xB8DE,\n\t47701 - 44032: 0xB8DF,\n\t47702 - 44032: 0x9148,\n\t47703 - 44032: 0x9149,\n\t47704 - 44032: 0xB8E0,\n\t47705 - 44032: 0x914A,\n\t47706 - 44032: 0x914B,\n\t47707 - 44032: 0x914C,\n\t47708 - 44032: 0xB8E1,\n\t47709 - 44032: 0x914D,\n\t47710 - 44032: 0x914E,\n\t47711 - 44032: 0x914F,\n\t47712 - 44032: 0x9150,\n\t47713 - 44032: 0x9151,\n\t47714 - 44032: 0x9152,\n\t47715 - 44032: 0x9153,\n\t47716 - 44032: 0xB8E2,\n\t47717 - 44032: 0xB8E3,\n\t47718 - 44032: 0x9154,\n\t47719 - 44032: 0xB8E4,\n\t47720 - 44032: 0xB8E5,\n\t47721 - 44032: 0xB8E6,\n\t47722 - 44032: 0x9155,\n\t47723 - 44032: 0x9156,\n\t47724 - 44032: 0x9157,\n\t47725 - 44032: 0x9158,\n\t47726 - 44032: 0x9159,\n\t47727 - 44032: 0x915A,\n\t47728 - 44032: 0xB8E7,\n\t47729 - 44032: 0xB8E8,\n\t47730 - 44032: 0x9161,\n\t47731 - 44032: 0x9162,\n\t47732 - 44032: 0xB8E9,\n\t47733 - 44032: 0x9163,\n\t47734 - 44032: 0x9164,\n\t47735 - 44032: 0x9165,\n\t47736 - 44032: 0xB8EA,\n\t47737 - 44032: 0x9166,\n\t47738 - 44032: 0x9167,\n\t47739 - 44032: 0x9168,\n\t47740 - 44032: 0x9169,\n\t47741 - 44032: 0x916A,\n\t47742 - 44032: 0x916B,\n\t47743 - 44032: 0x916C,\n\t47744 - 44032: 0x916D,\n\t47745 - 44032: 0x916E,\n\t47746 - 44032: 0x916F,\n\t47747 - 44032: 0xB8EB,\n\t47748 - 44032: 0xB8EC,\n\t47749 - 44032: 0xB8ED,\n\t47750 - 44032: 0x9170,\n\t47751 - 44032: 0xB8EE,\n\t47752 - 44032: 0x9171,\n\t47753 - 44032: 0x9172,\n\t47754 - 44032: 0x9173,\n\t47755 - 44032: 0x9174,\n\t47756 - 44032: 0xB8EF,\n\t47757 - 44032: 0x9175,\n\t47758 - 44032: 0x9176,\n\t47759 - 44032: 0x9177,\n\t47760 - 44032: 0x9178,\n\t47761 - 44032: 0x9179,\n\t47762 - 44032: 0x917A,\n\t47763 - 44032: 0x9181,\n\t47764 - 44032: 0x9182,\n\t47765 - 44032: 0x9183,\n\t47766 - 44032: 0x9184,\n\t47767 - 44032: 0x9185,\n\t47768 - 44032: 0x9186,\n\t47769 - 44032: 0x9187,\n\t47770 - 44032: 0x9188,\n\t47771 - 44032: 0x9189,\n\t47772 - 44032: 0x918A,\n\t47773 - 44032: 0x918B,\n\t47774 - 44032: 0x918C,\n\t47775 - 44032: 0x918D,\n\t47776 - 44032: 0x918E,\n\t47777 - 44032: 0x918F,\n\t47778 - 44032: 0x9190,\n\t47779 - 44032: 0x9191,\n\t47780 - 44032: 0x9192,\n\t47781 - 44032: 0x9193,\n\t47782 - 44032: 0x9194,\n\t47783 - 44032: 0x9195,\n\t47784 - 44032: 0xB8F0,\n\t47785 - 44032: 0xB8F1,\n\t47786 - 44032: 0x9196,\n\t47787 - 44032: 0xB8F2,\n\t47788 - 44032: 0xB8F3,\n\t47789 - 44032: 0x9197,\n\t47790 - 44032: 0x9198,\n\t47791 - 44032: 0x9199,\n\t47792 - 44032: 0xB8F4,\n\t47793 - 44032: 0x919A,\n\t47794 - 44032: 0xB8F5,\n\t47795 - 44032: 0x919B,\n\t47796 - 44032: 0x919C,\n\t47797 - 44032: 0x919D,\n\t47798 - 44032: 0x919E,\n\t47799 - 44032: 0x919F,\n\t47800 - 44032: 0xB8F6,\n\t47801 - 44032: 0xB8F7,\n\t47802 - 44032: 0x91A0,\n\t47803 - 44032: 0xB8F8,\n\t47804 - 44032: 0x91A1,\n\t47805 - 44032: 0xB8F9,\n\t47806 - 44032: 0x91A2,\n\t47807 - 44032: 0x91A3,\n\t47808 - 44032: 0x91A4,\n\t47809 - 44032: 0x91A5,\n\t47810 - 44032: 0x91A6,\n\t47811 - 44032: 0x91A7,\n\t47812 - 44032: 0xB8FA,\n\t47813 - 44032: 0x91A8,\n\t47814 - 44032: 0x91A9,\n\t47815 - 44032: 0x91AA,\n\t47816 - 44032: 0xB8FB,\n\t47817 - 44032: 0x91AB,\n\t47818 - 44032: 0x91AC,\n\t47819 - 44032: 0x91AD,\n\t47820 - 44032: 0x91AE,\n\t47821 - 44032: 0x91AF,\n\t47822 - 44032: 0x91B0,\n\t47823 - 44032: 0x91B1,\n\t47824 - 44032: 0x91B2,\n\t47825 - 44032: 0x91B3,\n\t47826 - 44032: 0x91B4,\n\t47827 - 44032: 0x91B5,\n\t47828 - 44032: 0x91B6,\n\t47829 - 44032: 0x91B7,\n\t47830 - 44032: 0x91B8,\n\t47831 - 44032: 0x91B9,\n\t47832 - 44032: 0xB8FC,\n\t47833 - 44032: 0xB8FD,\n\t47834 - 44032: 0x91BA,\n\t47835 - 44032: 0x91BB,\n\t47836 - 44032: 0x91BC,\n\t47837 - 44032: 0x91BD,\n\t47838 - 44032: 0x91BE,\n\t47839 - 44032: 0x91BF,\n\t47840 - 44032: 0x91C0,\n\t47841 - 44032: 0x91C1,\n\t47842 - 44032: 0x91C2,\n\t47843 - 44032: 0x91C3,\n\t47844 - 44032: 0x91C4,\n\t47845 - 44032: 0x91C5,\n\t47846 - 44032: 0x91C6,\n\t47847 - 44032: 0x91C7,\n\t47848 - 44032: 0x91C8,\n\t47849 - 44032: 0x91C9,\n\t47850 - 44032: 0x91CA,\n\t47851 - 44032: 0x91CB,\n\t47852 - 44032: 0x91CC,\n\t47853 - 44032: 0x91CD,\n\t47854 - 44032: 0x91CE,\n\t47855 - 44032: 0x91CF,\n\t47856 - 44032: 0x91D0,\n\t47857 - 44032: 0x91D1,\n\t47858 - 44032: 0x91D2,\n\t47859 - 44032: 0x91D3,\n\t47860 - 44032: 0x91D4,\n\t47861 - 44032: 0x91D5,\n\t47862 - 44032: 0x91D6,\n\t47863 - 44032: 0x91D7,\n\t47864 - 44032: 0x91D8,\n\t47865 - 44032: 0x91D9,\n\t47866 - 44032: 0x91DA,\n\t47867 - 44032: 0x91DB,\n\t47868 - 44032: 0xB8FE,\n\t47869 - 44032: 0x91DC,\n\t47870 - 44032: 0x91DD,\n\t47871 - 44032: 0x91DE,\n\t47872 - 44032: 0xB9A1,\n\t47873 - 44032: 0x91DF,\n\t47874 - 44032: 0x91E0,\n\t47875 - 44032: 0x91E1,\n\t47876 - 44032: 0xB9A2,\n\t47877 - 44032: 0x91E2,\n\t47878 - 44032: 0x91E3,\n\t47879 - 44032: 0x91E4,\n\t47880 - 44032: 0x91E5,\n\t47881 - 44032: 0x91E6,\n\t47882 - 44032: 0x91E7,\n\t47883 - 44032: 0x91E8,\n\t47884 - 44032: 0x91E9,\n\t47885 - 44032: 0xB9A3,\n\t47886 - 44032: 0x91EA,\n\t47887 - 44032: 0xB9A4,\n\t47888 - 44032: 0x91EB,\n\t47889 - 44032: 0xB9A5,\n\t47890 - 44032: 0x91EC,\n\t47891 - 44032: 0x91ED,\n\t47892 - 44032: 0x91EE,\n\t47893 - 44032: 0x91EF,\n\t47894 - 44032: 0x91F0,\n\t47895 - 44032: 0x91F1,\n\t47896 - 44032: 0xB9A6,\n\t47897 - 44032: 0x91F2,\n\t47898 - 44032: 0x91F3,\n\t47899 - 44032: 0x91F4,\n\t47900 - 44032: 0xB9A7,\n\t47901 - 44032: 0x91F5,\n\t47902 - 44032: 0x91F6,\n\t47903 - 44032: 0x91F7,\n\t47904 - 44032: 0xB9A8,\n\t47905 - 44032: 0x91F8,\n\t47906 - 44032: 0x91F9,\n\t47907 - 44032: 0x91FA,\n\t47908 - 44032: 0x91FB,\n\t47909 - 44032: 0x91FC,\n\t47910 - 44032: 0x91FD,\n\t47911 - 44032: 0x91FE,\n\t47912 - 44032: 0x9241,\n\t47913 - 44032: 0xB9A9,\n\t47914 - 44032: 0x9242,\n\t47915 - 44032: 0xB9AA,\n\t47916 - 44032: 0x9243,\n\t47917 - 44032: 0x9244,\n\t47918 - 44032: 0x9245,\n\t47919 - 44032: 0x9246,\n\t47920 - 44032: 0x9247,\n\t47921 - 44032: 0x9248,\n\t47922 - 44032: 0x9249,\n\t47923 - 44032: 0x924A,\n\t47924 - 44032: 0xB9AB,\n\t47925 - 44032: 0xB9AC,\n\t47926 - 44032: 0xB9AD,\n\t47927 - 44032: 0x924B,\n\t47928 - 44032: 0xB9AE,\n\t47929 - 44032: 0x924C,\n\t47930 - 44032: 0x924D,\n\t47931 - 44032: 0xB9AF,\n\t47932 - 44032: 0xB9B0,\n\t47933 - 44032: 0xB9B1,\n\t47934 - 44032: 0xB9B2,\n\t47935 - 44032: 0x924E,\n\t47936 - 44032: 0x924F,\n\t47937 - 44032: 0x9250,\n\t47938 - 44032: 0x9251,\n\t47939 - 44032: 0x9252,\n\t47940 - 44032: 0xB9B3,\n\t47941 - 44032: 0xB9B4,\n\t47942 - 44032: 0x9253,\n\t47943 - 44032: 0xB9B5,\n\t47944 - 44032: 0x9254,\n\t47945 - 44032: 0xB9B6,\n\t47946 - 44032: 0x9255,\n\t47947 - 44032: 0x9256,\n\t47948 - 44032: 0x9257,\n\t47949 - 44032: 0xB9B7,\n\t47950 - 44032: 0x9258,\n\t47951 - 44032: 0xB9B8,\n\t47952 - 44032: 0xB9B9,\n\t47953 - 44032: 0x9259,\n\t47954 - 44032: 0x925A,\n\t47955 - 44032: 0x9261,\n\t47956 - 44032: 0xB9BA,\n\t47957 - 44032: 0x9262,\n\t47958 - 44032: 0x9263,\n\t47959 - 44032: 0x9264,\n\t47960 - 44032: 0xB9BB,\n\t47961 - 44032: 0x9265,\n\t47962 - 44032: 0x9266,\n\t47963 - 44032: 0x9267,\n\t47964 - 44032: 0x9268,\n\t47965 - 44032: 0x9269,\n\t47966 - 44032: 0x926A,\n\t47967 - 44032: 0x926B,\n\t47968 - 44032: 0x926C,\n\t47969 - 44032: 0xB9BC,\n\t47970 - 44032: 0x926D,\n\t47971 - 44032: 0xB9BD,\n\t47972 - 44032: 0x926E,\n\t47973 - 44032: 0x926F,\n\t47974 - 44032: 0x9270,\n\t47975 - 44032: 0x9271,\n\t47976 - 44032: 0x9272,\n\t47977 - 44032: 0x9273,\n\t47978 - 44032: 0x9274,\n\t47979 - 44032: 0x9275,\n\t47980 - 44032: 0xB9BE,\n\t47981 - 44032: 0x9276,\n\t47982 - 44032: 0x9277,\n\t47983 - 44032: 0x9278,\n\t47984 - 44032: 0x9279,\n\t47985 - 44032: 0x927A,\n\t47986 - 44032: 0x9281,\n\t47987 - 44032: 0x9282,\n\t47988 - 44032: 0x9283,\n\t47989 - 44032: 0x9284,\n\t47990 - 44032: 0x9285,\n\t47991 - 44032: 0x9286,\n\t47992 - 44032: 0x9287,\n\t47993 - 44032: 0x9288,\n\t47994 - 44032: 0x9289,\n\t47995 - 44032: 0x928A,\n\t47996 - 44032: 0x928B,\n\t47997 - 44032: 0x928C,\n\t47998 - 44032: 0x928D,\n\t47999 - 44032: 0x928E,\n\t48000 - 44032: 0x928F,\n\t48001 - 44032: 0x9290,\n\t48002 - 44032: 0x9291,\n\t48003 - 44032: 0x9292,\n\t48004 - 44032: 0x9293,\n\t48005 - 44032: 0x9294,\n\t48006 - 44032: 0x9295,\n\t48007 - 44032: 0x9296,\n\t48008 - 44032: 0xB9BF,\n\t48009 - 44032: 0x9297,\n\t48010 - 44032: 0x9298,\n\t48011 - 44032: 0x9299,\n\t48012 - 44032: 0xB9C0,\n\t48013 - 44032: 0x929A,\n\t48014 - 44032: 0x929B,\n\t48015 - 44032: 0x929C,\n\t48016 - 44032: 0xB9C1,\n\t48017 - 44032: 0x929D,\n\t48018 - 44032: 0x929E,\n\t48019 - 44032: 0x929F,\n\t48020 - 44032: 0x92A0,\n\t48021 - 44032: 0x92A1,\n\t48022 - 44032: 0x92A2,\n\t48023 - 44032: 0x92A3,\n\t48024 - 44032: 0x92A4,\n\t48025 - 44032: 0x92A5,\n\t48026 - 44032: 0x92A6,\n\t48027 - 44032: 0x92A7,\n\t48028 - 44032: 0x92A8,\n\t48029 - 44032: 0x92A9,\n\t48030 - 44032: 0x92AA,\n\t48031 - 44032: 0x92AB,\n\t48032 - 44032: 0x92AC,\n\t48033 - 44032: 0x92AD,\n\t48034 - 44032: 0x92AE,\n\t48035 - 44032: 0x92AF,\n\t48036 - 44032: 0xB9C2,\n\t48037 - 44032: 0x92B0,\n\t48038 - 44032: 0x92B1,\n\t48039 - 44032: 0x92B2,\n\t48040 - 44032: 0xB9C3,\n\t48041 - 44032: 0x92B3,\n\t48042 - 44032: 0x92B4,\n\t48043 - 44032: 0x92B5,\n\t48044 - 44032: 0xB9C4,\n\t48045 - 44032: 0x92B6,\n\t48046 - 44032: 0x92B7,\n\t48047 - 44032: 0x92B8,\n\t48048 - 44032: 0x92B9,\n\t48049 - 44032: 0x92BA,\n\t48050 - 44032: 0x92BB,\n\t48051 - 44032: 0x92BC,\n\t48052 - 44032: 0xB9C5,\n\t48053 - 44032: 0x92BD,\n\t48054 - 44032: 0x92BE,\n\t48055 - 44032: 0xB9C6,\n\t48056 - 44032: 0x92BF,\n\t48057 - 44032: 0x92C0,\n\t48058 - 44032: 0x92C1,\n\t48059 - 44032: 0x92C2,\n\t48060 - 44032: 0x92C3,\n\t48061 - 44032: 0x92C4,\n\t48062 - 44032: 0x92C5,\n\t48063 - 44032: 0x92C6,\n\t48064 - 44032: 0xB9C7,\n\t48065 - 44032: 0x92C7,\n\t48066 - 44032: 0x92C8,\n\t48067 - 44032: 0x92C9,\n\t48068 - 44032: 0xB9C8,\n\t48069 - 44032: 0x92CA,\n\t48070 - 44032: 0x92CB,\n\t48071 - 44032: 0x92CC,\n\t48072 - 44032: 0xB9C9,\n\t48073 - 44032: 0x92CD,\n\t48074 - 44032: 0x92CE,\n\t48075 - 44032: 0x92CF,\n\t48076 - 44032: 0x92D0,\n\t48077 - 44032: 0x92D1,\n\t48078 - 44032: 0x92D2,\n\t48079 - 44032: 0x92D3,\n\t48080 - 44032: 0xB9CA,\n\t48081 - 44032: 0x92D4,\n\t48082 - 44032: 0x92D5,\n\t48083 - 44032: 0xB9CB,\n\t48084 - 44032: 0x92D6,\n\t48085 - 44032: 0x92D7,\n\t48086 - 44032: 0x92D8,\n\t48087 - 44032: 0x92D9,\n\t48088 - 44032: 0x92DA,\n\t48089 - 44032: 0x92DB,\n\t48090 - 44032: 0x92DC,\n\t48091 - 44032: 0x92DD,\n\t48092 - 44032: 0x92DE,\n\t48093 - 44032: 0x92DF,\n\t48094 - 44032: 0x92E0,\n\t48095 - 44032: 0x92E1,\n\t48096 - 44032: 0x92E2,\n\t48097 - 44032: 0x92E3,\n\t48098 - 44032: 0x92E4,\n\t48099 - 44032: 0x92E5,\n\t48100 - 44032: 0x92E6,\n\t48101 - 44032: 0x92E7,\n\t48102 - 44032: 0x92E8,\n\t48103 - 44032: 0x92E9,\n\t48104 - 44032: 0x92EA,\n\t48105 - 44032: 0x92EB,\n\t48106 - 44032: 0x92EC,\n\t48107 - 44032: 0x92ED,\n\t48108 - 44032: 0x92EE,\n\t48109 - 44032: 0x92EF,\n\t48110 - 44032: 0x92F0,\n\t48111 - 44032: 0x92F1,\n\t48112 - 44032: 0x92F2,\n\t48113 - 44032: 0x92F3,\n\t48114 - 44032: 0x92F4,\n\t48115 - 44032: 0x92F5,\n\t48116 - 44032: 0x92F6,\n\t48117 - 44032: 0x92F7,\n\t48118 - 44032: 0x92F8,\n\t48119 - 44032: 0x92F9,\n\t48120 - 44032: 0xB9CC,\n\t48121 - 44032: 0xB9CD,\n\t48122 - 44032: 0x92FA,\n\t48123 - 44032: 0x92FB,\n\t48124 - 44032: 0xB9CE,\n\t48125 - 44032: 0x92FC,\n\t48126 - 44032: 0x92FD,\n\t48127 - 44032: 0xB9CF,\n\t48128 - 44032: 0xB9D0,\n\t48129 - 44032: 0x92FE,\n\t48130 - 44032: 0xB9D1,\n\t48131 - 44032: 0x9341,\n\t48132 - 44032: 0x9342,\n\t48133 - 44032: 0x9343,\n\t48134 - 44032: 0x9344,\n\t48135 - 44032: 0x9345,\n\t48136 - 44032: 0xB9D2,\n\t48137 - 44032: 0xB9D3,\n\t48138 - 44032: 0x9346,\n\t48139 - 44032: 0xB9D4,\n\t48140 - 44032: 0xB9D5,\n\t48141 - 44032: 0xB9D6,\n\t48142 - 44032: 0x9347,\n\t48143 - 44032: 0xB9D7,\n\t48144 - 44032: 0x9348,\n\t48145 - 44032: 0xB9D8,\n\t48146 - 44032: 0x9349,\n\t48147 - 44032: 0x934A,\n\t48148 - 44032: 0xB9D9,\n\t48149 - 44032: 0xB9DA,\n\t48150 - 44032: 0xB9DB,\n\t48151 - 44032: 0xB9DC,\n\t48152 - 44032: 0xB9DD,\n\t48153 - 44032: 0x934B,\n\t48154 - 44032: 0x934C,\n\t48155 - 44032: 0xB9DE,\n\t48156 - 44032: 0xB9DF,\n\t48157 - 44032: 0xB9E0,\n\t48158 - 44032: 0xB9E1,\n\t48159 - 44032: 0xB9E2,\n\t48160 - 44032: 0x934D,\n\t48161 - 44032: 0x934E,\n\t48162 - 44032: 0x934F,\n\t48163 - 44032: 0x9350,\n\t48164 - 44032: 0xB9E3,\n\t48165 - 44032: 0xB9E4,\n\t48166 - 44032: 0x9351,\n\t48167 - 44032: 0xB9E5,\n\t48168 - 44032: 0x9352,\n\t48169 - 44032: 0xB9E6,\n\t48170 - 44032: 0x9353,\n\t48171 - 44032: 0x9354,\n\t48172 - 44032: 0x9355,\n\t48173 - 44032: 0xB9E7,\n\t48174 - 44032: 0x9356,\n\t48175 - 44032: 0x9357,\n\t48176 - 44032: 0xB9E8,\n\t48177 - 44032: 0xB9E9,\n\t48178 - 44032: 0x9358,\n\t48179 - 44032: 0x9359,\n\t48180 - 44032: 0xB9EA,\n\t48181 - 44032: 0x935A,\n\t48182 - 44032: 0x9361,\n\t48183 - 44032: 0x9362,\n\t48184 - 44032: 0xB9EB,\n\t48185 - 44032: 0x9363,\n\t48186 - 44032: 0x9364,\n\t48187 - 44032: 0x9365,\n\t48188 - 44032: 0x9366,\n\t48189 - 44032: 0x9367,\n\t48190 - 44032: 0x9368,\n\t48191 - 44032: 0x9369,\n\t48192 - 44032: 0xB9EC,\n\t48193 - 44032: 0xB9ED,\n\t48194 - 44032: 0x936A,\n\t48195 - 44032: 0xB9EE,\n\t48196 - 44032: 0xB9EF,\n\t48197 - 44032: 0xB9F0,\n\t48198 - 44032: 0x936B,\n\t48199 - 44032: 0x936C,\n\t48200 - 44032: 0x936D,\n\t48201 - 44032: 0xB9F1,\n\t48202 - 44032: 0x936E,\n\t48203 - 44032: 0x936F,\n\t48204 - 44032: 0xB9F2,\n\t48205 - 44032: 0xB9F3,\n\t48206 - 44032: 0x9370,\n\t48207 - 44032: 0x9371,\n\t48208 - 44032: 0xB9F4,\n\t48209 - 44032: 0x9372,\n\t48210 - 44032: 0x9373,\n\t48211 - 44032: 0x9374,\n\t48212 - 44032: 0x9375,\n\t48213 - 44032: 0x9376,\n\t48214 - 44032: 0x9377,\n\t48215 - 44032: 0x9378,\n\t48216 - 44032: 0x9379,\n\t48217 - 44032: 0x937A,\n\t48218 - 44032: 0x9381,\n\t48219 - 44032: 0x9382,\n\t48220 - 44032: 0x9383,\n\t48221 - 44032: 0xB9F5,\n\t48222 - 44032: 0x9384,\n\t48223 - 44032: 0x9385,\n\t48224 - 44032: 0x9386,\n\t48225 - 44032: 0x9387,\n\t48226 - 44032: 0x9388,\n\t48227 - 44032: 0x9389,\n\t48228 - 44032: 0x938A,\n\t48229 - 44032: 0x938B,\n\t48230 - 44032: 0x938C,\n\t48231 - 44032: 0x938D,\n\t48232 - 44032: 0x938E,\n\t48233 - 44032: 0x938F,\n\t48234 - 44032: 0x9390,\n\t48235 - 44032: 0x9391,\n\t48236 - 44032: 0x9392,\n\t48237 - 44032: 0x9393,\n\t48238 - 44032: 0x9394,\n\t48239 - 44032: 0x9395,\n\t48240 - 44032: 0x9396,\n\t48241 - 44032: 0x9397,\n\t48242 - 44032: 0x9398,\n\t48243 - 44032: 0x9399,\n\t48244 - 44032: 0x939A,\n\t48245 - 44032: 0x939B,\n\t48246 - 44032: 0x939C,\n\t48247 - 44032: 0x939D,\n\t48248 - 44032: 0x939E,\n\t48249 - 44032: 0x939F,\n\t48250 - 44032: 0x93A0,\n\t48251 - 44032: 0x93A1,\n\t48252 - 44032: 0x93A2,\n\t48253 - 44032: 0x93A3,\n\t48254 - 44032: 0x93A4,\n\t48255 - 44032: 0x93A5,\n\t48256 - 44032: 0x93A6,\n\t48257 - 44032: 0x93A7,\n\t48258 - 44032: 0x93A8,\n\t48259 - 44032: 0x93A9,\n\t48260 - 44032: 0xB9F6,\n\t48261 - 44032: 0xB9F7,\n\t48262 - 44032: 0x93AA,\n\t48263 - 44032: 0x93AB,\n\t48264 - 44032: 0xB9F8,\n\t48265 - 44032: 0x93AC,\n\t48266 - 44032: 0x93AD,\n\t48267 - 44032: 0xB9F9,\n\t48268 - 44032: 0xB9FA,\n\t48269 - 44032: 0x93AE,\n\t48270 - 44032: 0xB9FB,\n\t48271 - 44032: 0x93AF,\n\t48272 - 44032: 0x93B0,\n\t48273 - 44032: 0x93B1,\n\t48274 - 44032: 0x93B2,\n\t48275 - 44032: 0x93B3,\n\t48276 - 44032: 0xB9FC,\n\t48277 - 44032: 0xB9FD,\n\t48278 - 44032: 0x93B4,\n\t48279 - 44032: 0xB9FE,\n\t48280 - 44032: 0x93B5,\n\t48281 - 44032: 0xBAA1,\n\t48282 - 44032: 0xBAA2,\n\t48283 - 44032: 0x93B6,\n\t48284 - 44032: 0x93B7,\n\t48285 - 44032: 0x93B8,\n\t48286 - 44032: 0x93B9,\n\t48287 - 44032: 0x93BA,\n\t48288 - 44032: 0xBAA3,\n\t48289 - 44032: 0xBAA4,\n\t48290 - 44032: 0x93BB,\n\t48291 - 44032: 0x93BC,\n\t48292 - 44032: 0xBAA5,\n\t48293 - 44032: 0x93BD,\n\t48294 - 44032: 0x93BE,\n\t48295 - 44032: 0xBAA6,\n\t48296 - 44032: 0xBAA7,\n\t48297 - 44032: 0x93BF,\n\t48298 - 44032: 0x93C0,\n\t48299 - 44032: 0x93C1,\n\t48300 - 44032: 0x93C2,\n\t48301 - 44032: 0x93C3,\n\t48302 - 44032: 0x93C4,\n\t48303 - 44032: 0x93C5,\n\t48304 - 44032: 0xBAA8,\n\t48305 - 44032: 0xBAA9,\n\t48306 - 44032: 0x93C6,\n\t48307 - 44032: 0xBAAA,\n\t48308 - 44032: 0xBAAB,\n\t48309 - 44032: 0xBAAC,\n\t48310 - 44032: 0x93C7,\n\t48311 - 44032: 0x93C8,\n\t48312 - 44032: 0x93C9,\n\t48313 - 44032: 0x93CA,\n\t48314 - 44032: 0x93CB,\n\t48315 - 44032: 0x93CC,\n\t48316 - 44032: 0xBAAD,\n\t48317 - 44032: 0xBAAE,\n\t48318 - 44032: 0x93CD,\n\t48319 - 44032: 0x93CE,\n\t48320 - 44032: 0xBAAF,\n\t48321 - 44032: 0x93CF,\n\t48322 - 44032: 0x93D0,\n\t48323 - 44032: 0x93D1,\n\t48324 - 44032: 0xBAB0,\n\t48325 - 44032: 0x93D2,\n\t48326 - 44032: 0x93D3,\n\t48327 - 44032: 0x93D4,\n\t48328 - 44032: 0x93D5,\n\t48329 - 44032: 0x93D6,\n\t48330 - 44032: 0x93D7,\n\t48331 - 44032: 0x93D8,\n\t48332 - 44032: 0x93D9,\n\t48333 - 44032: 0xBAB1,\n\t48334 - 44032: 0x93DA,\n\t48335 - 44032: 0xBAB2,\n\t48336 - 44032: 0xBAB3,\n\t48337 - 44032: 0xBAB4,\n\t48338 - 44032: 0x93DB,\n\t48339 - 44032: 0x93DC,\n\t48340 - 44032: 0x93DD,\n\t48341 - 44032: 0xBAB5,\n\t48342 - 44032: 0x93DE,\n\t48343 - 44032: 0x93DF,\n\t48344 - 44032: 0xBAB6,\n\t48345 - 44032: 0x93E0,\n\t48346 - 44032: 0x93E1,\n\t48347 - 44032: 0x93E2,\n\t48348 - 44032: 0xBAB7,\n\t48349 - 44032: 0x93E3,\n\t48350 - 44032: 0x93E4,\n\t48351 - 44032: 0x93E5,\n\t48352 - 44032: 0x93E6,\n\t48353 - 44032: 0x93E7,\n\t48354 - 44032: 0x93E8,\n\t48355 - 44032: 0x93E9,\n\t48356 - 44032: 0x93EA,\n\t48357 - 44032: 0x93EB,\n\t48358 - 44032: 0x93EC,\n\t48359 - 44032: 0x93ED,\n\t48360 - 44032: 0x93EE,\n\t48361 - 44032: 0x93EF,\n\t48362 - 44032: 0x93F0,\n\t48363 - 44032: 0x93F1,\n\t48364 - 44032: 0x93F2,\n\t48365 - 44032: 0x93F3,\n\t48366 - 44032: 0x93F4,\n\t48367 - 44032: 0x93F5,\n\t48368 - 44032: 0x93F6,\n\t48369 - 44032: 0x93F7,\n\t48370 - 44032: 0x93F8,\n\t48371 - 44032: 0x93F9,\n\t48372 - 44032: 0xBAB8,\n\t48373 - 44032: 0xBAB9,\n\t48374 - 44032: 0xBABA,\n\t48375 - 44032: 0x93FA,\n\t48376 - 44032: 0xBABB,\n\t48377 - 44032: 0x93FB,\n\t48378 - 44032: 0x93FC,\n\t48379 - 44032: 0x93FD,\n\t48380 - 44032: 0xBABC,\n\t48381 - 44032: 0x93FE,\n\t48382 - 44032: 0x9441,\n\t48383 - 44032: 0x9442,\n\t48384 - 44032: 0x9443,\n\t48385 - 44032: 0x9444,\n\t48386 - 44032: 0x9445,\n\t48387 - 44032: 0x9446,\n\t48388 - 44032: 0xBABD,\n\t48389 - 44032: 0xBABE,\n\t48390 - 44032: 0x9447,\n\t48391 - 44032: 0xBABF,\n\t48392 - 44032: 0x9448,\n\t48393 - 44032: 0xBAC0,\n\t48394 - 44032: 0x9449,\n\t48395 - 44032: 0x944A,\n\t48396 - 44032: 0x944B,\n\t48397 - 44032: 0x944C,\n\t48398 - 44032: 0x944D,\n\t48399 - 44032: 0x944E,\n\t48400 - 44032: 0xBAC1,\n\t48401 - 44032: 0x944F,\n\t48402 - 44032: 0x9450,\n\t48403 - 44032: 0x9451,\n\t48404 - 44032: 0xBAC2,\n\t48405 - 44032: 0x9452,\n\t48406 - 44032: 0x9453,\n\t48407 - 44032: 0x9454,\n\t48408 - 44032: 0x9455,\n\t48409 - 44032: 0x9456,\n\t48410 - 44032: 0x9457,\n\t48411 - 44032: 0x9458,\n\t48412 - 44032: 0x9459,\n\t48413 - 44032: 0x945A,\n\t48414 - 44032: 0x9461,\n\t48415 - 44032: 0x9462,\n\t48416 - 44032: 0x9463,\n\t48417 - 44032: 0x9464,\n\t48418 - 44032: 0x9465,\n\t48419 - 44032: 0x9466,\n\t48420 - 44032: 0xBAC3,\n\t48421 - 44032: 0x9467,\n\t48422 - 44032: 0x9468,\n\t48423 - 44032: 0x9469,\n\t48424 - 44032: 0x946A,\n\t48425 - 44032: 0x946B,\n\t48426 - 44032: 0x946C,\n\t48427 - 44032: 0x946D,\n\t48428 - 44032: 0xBAC4,\n\t48429 - 44032: 0x946E,\n\t48430 - 44032: 0x946F,\n\t48431 - 44032: 0x9470,\n\t48432 - 44032: 0x9471,\n\t48433 - 44032: 0x9472,\n\t48434 - 44032: 0x9473,\n\t48435 - 44032: 0x9474,\n\t48436 - 44032: 0x9475,\n\t48437 - 44032: 0x9476,\n\t48438 - 44032: 0x9477,\n\t48439 - 44032: 0x9478,\n\t48440 - 44032: 0x9479,\n\t48441 - 44032: 0x947A,\n\t48442 - 44032: 0x9481,\n\t48443 - 44032: 0x9482,\n\t48444 - 44032: 0x9483,\n\t48445 - 44032: 0x9484,\n\t48446 - 44032: 0x9485,\n\t48447 - 44032: 0x9486,\n\t48448 - 44032: 0xBAC5,\n\t48449 - 44032: 0x9487,\n\t48450 - 44032: 0x9488,\n\t48451 - 44032: 0x9489,\n\t48452 - 44032: 0x948A,\n\t48453 - 44032: 0x948B,\n\t48454 - 44032: 0x948C,\n\t48455 - 44032: 0x948D,\n\t48456 - 44032: 0xBAC6,\n\t48457 - 44032: 0xBAC7,\n\t48458 - 44032: 0x948E,\n\t48459 - 44032: 0x948F,\n\t48460 - 44032: 0xBAC8,\n\t48461 - 44032: 0x9490,\n\t48462 - 44032: 0x9491,\n\t48463 - 44032: 0x9492,\n\t48464 - 44032: 0xBAC9,\n\t48465 - 44032: 0x9493,\n\t48466 - 44032: 0x9494,\n\t48467 - 44032: 0x9495,\n\t48468 - 44032: 0x9496,\n\t48469 - 44032: 0x9497,\n\t48470 - 44032: 0x9498,\n\t48471 - 44032: 0x9499,\n\t48472 - 44032: 0xBACA,\n\t48473 - 44032: 0xBACB,\n\t48474 - 44032: 0x949A,\n\t48475 - 44032: 0x949B,\n\t48476 - 44032: 0x949C,\n\t48477 - 44032: 0x949D,\n\t48478 - 44032: 0x949E,\n\t48479 - 44032: 0x949F,\n\t48480 - 44032: 0x94A0,\n\t48481 - 44032: 0x94A1,\n\t48482 - 44032: 0x94A2,\n\t48483 - 44032: 0x94A3,\n\t48484 - 44032: 0xBACC,\n\t48485 - 44032: 0x94A4,\n\t48486 - 44032: 0x94A5,\n\t48487 - 44032: 0x94A6,\n\t48488 - 44032: 0xBACD,\n\t48489 - 44032: 0x94A7,\n\t48490 - 44032: 0x94A8,\n\t48491 - 44032: 0x94A9,\n\t48492 - 44032: 0x94AA,\n\t48493 - 44032: 0x94AB,\n\t48494 - 44032: 0x94AC,\n\t48495 - 44032: 0x94AD,\n\t48496 - 44032: 0x94AE,\n\t48497 - 44032: 0x94AF,\n\t48498 - 44032: 0x94B0,\n\t48499 - 44032: 0x94B1,\n\t48500 - 44032: 0x94B2,\n\t48501 - 44032: 0x94B3,\n\t48502 - 44032: 0x94B4,\n\t48503 - 44032: 0x94B5,\n\t48504 - 44032: 0x94B6,\n\t48505 - 44032: 0x94B7,\n\t48506 - 44032: 0x94B8,\n\t48507 - 44032: 0x94B9,\n\t48508 - 44032: 0x94BA,\n\t48509 - 44032: 0x94BB,\n\t48510 - 44032: 0x94BC,\n\t48511 - 44032: 0x94BD,\n\t48512 - 44032: 0xBACE,\n\t48513 - 44032: 0xBACF,\n\t48514 - 44032: 0x94BE,\n\t48515 - 44032: 0x94BF,\n\t48516 - 44032: 0xBAD0,\n\t48517 - 44032: 0x94C0,\n\t48518 - 44032: 0x94C1,\n\t48519 - 44032: 0xBAD1,\n\t48520 - 44032: 0xBAD2,\n\t48521 - 44032: 0xBAD3,\n\t48522 - 44032: 0xBAD4,\n\t48523 - 44032: 0x94C2,\n\t48524 - 44032: 0x94C3,\n\t48525 - 44032: 0x94C4,\n\t48526 - 44032: 0x94C5,\n\t48527 - 44032: 0x94C6,\n\t48528 - 44032: 0xBAD5,\n\t48529 - 44032: 0xBAD6,\n\t48530 - 44032: 0x94C7,\n\t48531 - 44032: 0xBAD7,\n\t48532 - 44032: 0x94C8,\n\t48533 - 44032: 0xBAD8,\n\t48534 - 44032: 0x94C9,\n\t48535 - 44032: 0x94CA,\n\t48536 - 44032: 0x94CB,\n\t48537 - 44032: 0xBAD9,\n\t48538 - 44032: 0xBADA,\n\t48539 - 44032: 0x94CC,\n\t48540 - 44032: 0xBADB,\n\t48541 - 44032: 0x94CD,\n\t48542 - 44032: 0x94CE,\n\t48543 - 44032: 0x94CF,\n\t48544 - 44032: 0x94D0,\n\t48545 - 44032: 0x94D1,\n\t48546 - 44032: 0x94D2,\n\t48547 - 44032: 0x94D3,\n\t48548 - 44032: 0xBADC,\n\t48549 - 44032: 0x94D4,\n\t48550 - 44032: 0x94D5,\n\t48551 - 44032: 0x94D6,\n\t48552 - 44032: 0x94D7,\n\t48553 - 44032: 0x94D8,\n\t48554 - 44032: 0x94D9,\n\t48555 - 44032: 0x94DA,\n\t48556 - 44032: 0x94DB,\n\t48557 - 44032: 0x94DC,\n\t48558 - 44032: 0x94DD,\n\t48559 - 44032: 0x94DE,\n\t48560 - 44032: 0xBADD,\n\t48561 - 44032: 0x94DF,\n\t48562 - 44032: 0x94E0,\n\t48563 - 44032: 0x94E1,\n\t48564 - 44032: 0x94E2,\n\t48565 - 44032: 0x94E3,\n\t48566 - 44032: 0x94E4,\n\t48567 - 44032: 0x94E5,\n\t48568 - 44032: 0xBADE,\n\t48569 - 44032: 0x94E6,\n\t48570 - 44032: 0x94E7,\n\t48571 - 44032: 0x94E8,\n\t48572 - 44032: 0x94E9,\n\t48573 - 44032: 0x94EA,\n\t48574 - 44032: 0x94EB,\n\t48575 - 44032: 0x94EC,\n\t48576 - 44032: 0x94ED,\n\t48577 - 44032: 0x94EE,\n\t48578 - 44032: 0x94EF,\n\t48579 - 44032: 0x94F0,\n\t48580 - 44032: 0x94F1,\n\t48581 - 44032: 0x94F2,\n\t48582 - 44032: 0x94F3,\n\t48583 - 44032: 0x94F4,\n\t48584 - 44032: 0x94F5,\n\t48585 - 44032: 0x94F6,\n\t48586 - 44032: 0x94F7,\n\t48587 - 44032: 0x94F8,\n\t48588 - 44032: 0x94F9,\n\t48589 - 44032: 0x94FA,\n\t48590 - 44032: 0x94FB,\n\t48591 - 44032: 0x94FC,\n\t48592 - 44032: 0x94FD,\n\t48593 - 44032: 0x94FE,\n\t48594 - 44032: 0x9541,\n\t48595 - 44032: 0x9542,\n\t48596 - 44032: 0xBADF,\n\t48597 - 44032: 0xBAE0,\n\t48598 - 44032: 0x9543,\n\t48599 - 44032: 0x9544,\n\t48600 - 44032: 0xBAE1,\n\t48601 - 44032: 0x9545,\n\t48602 - 44032: 0x9546,\n\t48603 - 44032: 0x9547,\n\t48604 - 44032: 0xBAE2,\n\t48605 - 44032: 0x9548,\n\t48606 - 44032: 0x9549,\n\t48607 - 44032: 0x954A,\n\t48608 - 44032: 0x954B,\n\t48609 - 44032: 0x954C,\n\t48610 - 44032: 0x954D,\n\t48611 - 44032: 0x954E,\n\t48612 - 44032: 0x954F,\n\t48613 - 44032: 0x9550,\n\t48614 - 44032: 0x9551,\n\t48615 - 44032: 0x9552,\n\t48616 - 44032: 0x9553,\n\t48617 - 44032: 0xBAE3,\n\t48618 - 44032: 0x9554,\n\t48619 - 44032: 0x9555,\n\t48620 - 44032: 0x9556,\n\t48621 - 44032: 0x9557,\n\t48622 - 44032: 0x9558,\n\t48623 - 44032: 0x9559,\n\t48624 - 44032: 0xBAE4,\n\t48625 - 44032: 0x955A,\n\t48626 - 44032: 0x9561,\n\t48627 - 44032: 0x9562,\n\t48628 - 44032: 0xBAE5,\n\t48629 - 44032: 0x9563,\n\t48630 - 44032: 0x9564,\n\t48631 - 44032: 0x9565,\n\t48632 - 44032: 0xBAE6,\n\t48633 - 44032: 0x9566,\n\t48634 - 44032: 0x9567,\n\t48635 - 44032: 0x9568,\n\t48636 - 44032: 0x9569,\n\t48637 - 44032: 0x956A,\n\t48638 - 44032: 0x956B,\n\t48639 - 44032: 0x956C,\n\t48640 - 44032: 0xBAE7,\n\t48641 - 44032: 0x956D,\n\t48642 - 44032: 0x956E,\n\t48643 - 44032: 0xBAE8,\n\t48644 - 44032: 0x956F,\n\t48645 - 44032: 0xBAE9,\n\t48646 - 44032: 0x9570,\n\t48647 - 44032: 0x9571,\n\t48648 - 44032: 0x9572,\n\t48649 - 44032: 0x9573,\n\t48650 - 44032: 0x9574,\n\t48651 - 44032: 0x9575,\n\t48652 - 44032: 0xBAEA,\n\t48653 - 44032: 0xBAEB,\n\t48654 - 44032: 0x9576,\n\t48655 - 44032: 0x9577,\n\t48656 - 44032: 0xBAEC,\n\t48657 - 44032: 0x9578,\n\t48658 - 44032: 0x9579,\n\t48659 - 44032: 0x957A,\n\t48660 - 44032: 0xBAED,\n\t48661 - 44032: 0x9581,\n\t48662 - 44032: 0x9582,\n\t48663 - 44032: 0x9583,\n\t48664 - 44032: 0x9584,\n\t48665 - 44032: 0x9585,\n\t48666 - 44032: 0x9586,\n\t48667 - 44032: 0x9587,\n\t48668 - 44032: 0xBAEE,\n\t48669 - 44032: 0xBAEF,\n\t48670 - 44032: 0x9588,\n\t48671 - 44032: 0xBAF0,\n\t48672 - 44032: 0x9589,\n\t48673 - 44032: 0x958A,\n\t48674 - 44032: 0x958B,\n\t48675 - 44032: 0x958C,\n\t48676 - 44032: 0x958D,\n\t48677 - 44032: 0x958E,\n\t48678 - 44032: 0x958F,\n\t48679 - 44032: 0x9590,\n\t48680 - 44032: 0x9591,\n\t48681 - 44032: 0x9592,\n\t48682 - 44032: 0x9593,\n\t48683 - 44032: 0x9594,\n\t48684 - 44032: 0x9595,\n\t48685 - 44032: 0x9596,\n\t48686 - 44032: 0x9597,\n\t48687 - 44032: 0x9598,\n\t48688 - 44032: 0x9599,\n\t48689 - 44032: 0x959A,\n\t48690 - 44032: 0x959B,\n\t48691 - 44032: 0x959C,\n\t48692 - 44032: 0x959D,\n\t48693 - 44032: 0x959E,\n\t48694 - 44032: 0x959F,\n\t48695 - 44032: 0x95A0,\n\t48696 - 44032: 0x95A1,\n\t48697 - 44032: 0x95A2,\n\t48698 - 44032: 0x95A3,\n\t48699 - 44032: 0x95A4,\n\t48700 - 44032: 0x95A5,\n\t48701 - 44032: 0x95A6,\n\t48702 - 44032: 0x95A7,\n\t48703 - 44032: 0x95A8,\n\t48704 - 44032: 0x95A9,\n\t48705 - 44032: 0x95AA,\n\t48706 - 44032: 0x95AB,\n\t48707 - 44032: 0x95AC,\n\t48708 - 44032: 0xBAF1,\n\t48709 - 44032: 0xBAF2,\n\t48710 - 44032: 0x95AD,\n\t48711 - 44032: 0x95AE,\n\t48712 - 44032: 0xBAF3,\n\t48713 - 44032: 0x95AF,\n\t48714 - 44032: 0x95B0,\n\t48715 - 44032: 0x95B1,\n\t48716 - 44032: 0xBAF4,\n\t48717 - 44032: 0x95B2,\n\t48718 - 44032: 0xBAF5,\n\t48719 - 44032: 0x95B3,\n\t48720 - 44032: 0x95B4,\n\t48721 - 44032: 0x95B5,\n\t48722 - 44032: 0x95B6,\n\t48723 - 44032: 0x95B7,\n\t48724 - 44032: 0xBAF6,\n\t48725 - 44032: 0xBAF7,\n\t48726 - 44032: 0x95B8,\n\t48727 - 44032: 0xBAF8,\n\t48728 - 44032: 0x95B9,\n\t48729 - 44032: 0xBAF9,\n\t48730 - 44032: 0xBAFA,\n\t48731 - 44032: 0xBAFB,\n\t48732 - 44032: 0x95BA,\n\t48733 - 44032: 0x95BB,\n\t48734 - 44032: 0x95BC,\n\t48735 - 44032: 0x95BD,\n\t48736 - 44032: 0xBAFC,\n\t48737 - 44032: 0xBAFD,\n\t48738 - 44032: 0x95BE,\n\t48739 - 44032: 0x95BF,\n\t48740 - 44032: 0xBAFE,\n\t48741 - 44032: 0x95C0,\n\t48742 - 44032: 0x95C1,\n\t48743 - 44032: 0x95C2,\n\t48744 - 44032: 0xBBA1,\n\t48745 - 44032: 0x95C3,\n\t48746 - 44032: 0xBBA2,\n\t48747 - 44032: 0x95C4,\n\t48748 - 44032: 0x95C5,\n\t48749 - 44032: 0x95C6,\n\t48750 - 44032: 0x95C7,\n\t48751 - 44032: 0x95C8,\n\t48752 - 44032: 0xBBA3,\n\t48753 - 44032: 0xBBA4,\n\t48754 - 44032: 0x95C9,\n\t48755 - 44032: 0xBBA5,\n\t48756 - 44032: 0xBBA6,\n\t48757 - 44032: 0xBBA7,\n\t48758 - 44032: 0x95CA,\n\t48759 - 44032: 0x95CB,\n\t48760 - 44032: 0x95CC,\n\t48761 - 44032: 0x95CD,\n\t48762 - 44032: 0x95CE,\n\t48763 - 44032: 0xBBA8,\n\t48764 - 44032: 0xBBA9,\n\t48765 - 44032: 0xBBAA,\n\t48766 - 44032: 0x95CF,\n\t48767 - 44032: 0x95D0,\n\t48768 - 44032: 0xBBAB,\n\t48769 - 44032: 0x95D1,\n\t48770 - 44032: 0x95D2,\n\t48771 - 44032: 0x95D3,\n\t48772 - 44032: 0xBBAC,\n\t48773 - 44032: 0x95D4,\n\t48774 - 44032: 0x95D5,\n\t48775 - 44032: 0x95D6,\n\t48776 - 44032: 0x95D7,\n\t48777 - 44032: 0x95D8,\n\t48778 - 44032: 0x95D9,\n\t48779 - 44032: 0x95DA,\n\t48780 - 44032: 0xBBAD,\n\t48781 - 44032: 0xBBAE,\n\t48782 - 44032: 0x95DB,\n\t48783 - 44032: 0xBBAF,\n\t48784 - 44032: 0xBBB0,\n\t48785 - 44032: 0xBBB1,\n\t48786 - 44032: 0x95DC,\n\t48787 - 44032: 0x95DD,\n\t48788 - 44032: 0x95DE,\n\t48789 - 44032: 0x95DF,\n\t48790 - 44032: 0x95E0,\n\t48791 - 44032: 0x95E1,\n\t48792 - 44032: 0xBBB2,\n\t48793 - 44032: 0xBBB3,\n\t48794 - 44032: 0x95E2,\n\t48795 - 44032: 0x95E3,\n\t48796 - 44032: 0x95E4,\n\t48797 - 44032: 0x95E5,\n\t48798 - 44032: 0x95E6,\n\t48799 - 44032: 0x95E7,\n\t48800 - 44032: 0x95E8,\n\t48801 - 44032: 0x95E9,\n\t48802 - 44032: 0x95EA,\n\t48803 - 44032: 0x95EB,\n\t48804 - 44032: 0x95EC,\n\t48805 - 44032: 0x95ED,\n\t48806 - 44032: 0x95EE,\n\t48807 - 44032: 0x95EF,\n\t48808 - 44032: 0xBBB4,\n\t48809 - 44032: 0x95F0,\n\t48810 - 44032: 0x95F1,\n\t48811 - 44032: 0x95F2,\n\t48812 - 44032: 0x95F3,\n\t48813 - 44032: 0x95F4,\n\t48814 - 44032: 0x95F5,\n\t48815 - 44032: 0x95F6,\n\t48816 - 44032: 0x95F7,\n\t48817 - 44032: 0x95F8,\n\t48818 - 44032: 0x95F9,\n\t48819 - 44032: 0x95FA,\n\t48820 - 44032: 0x95FB,\n\t48821 - 44032: 0x95FC,\n\t48822 - 44032: 0x95FD,\n\t48823 - 44032: 0x95FE,\n\t48824 - 44032: 0x9641,\n\t48825 - 44032: 0x9642,\n\t48826 - 44032: 0x9643,\n\t48827 - 44032: 0x9644,\n\t48828 - 44032: 0x9645,\n\t48829 - 44032: 0x9646,\n\t48830 - 44032: 0x9647,\n\t48831 - 44032: 0x9648,\n\t48832 - 44032: 0x9649,\n\t48833 - 44032: 0x964A,\n\t48834 - 44032: 0x964B,\n\t48835 - 44032: 0x964C,\n\t48836 - 44032: 0x964D,\n\t48837 - 44032: 0x964E,\n\t48838 - 44032: 0x964F,\n\t48839 - 44032: 0x9650,\n\t48840 - 44032: 0x9651,\n\t48841 - 44032: 0x9652,\n\t48842 - 44032: 0x9653,\n\t48843 - 44032: 0x9654,\n\t48844 - 44032: 0x9655,\n\t48845 - 44032: 0x9656,\n\t48846 - 44032: 0x9657,\n\t48847 - 44032: 0x9658,\n\t48848 - 44032: 0xBBB5,\n\t48849 - 44032: 0xBBB6,\n\t48850 - 44032: 0x9659,\n\t48851 - 44032: 0x965A,\n\t48852 - 44032: 0xBBB7,\n\t48853 - 44032: 0x9661,\n\t48854 - 44032: 0x9662,\n\t48855 - 44032: 0xBBB8,\n\t48856 - 44032: 0xBBB9,\n\t48857 - 44032: 0x9663,\n\t48858 - 44032: 0x9664,\n\t48859 - 44032: 0x9665,\n\t48860 - 44032: 0x9666,\n\t48861 - 44032: 0x9667,\n\t48862 - 44032: 0x9668,\n\t48863 - 44032: 0x9669,\n\t48864 - 44032: 0xBBBA,\n\t48865 - 44032: 0x966A,\n\t48866 - 44032: 0x966B,\n\t48867 - 44032: 0xBBBB,\n\t48868 - 44032: 0xBBBC,\n\t48869 - 44032: 0xBBBD,\n\t48870 - 44032: 0x966C,\n\t48871 - 44032: 0x966D,\n\t48872 - 44032: 0x966E,\n\t48873 - 44032: 0x966F,\n\t48874 - 44032: 0x9670,\n\t48875 - 44032: 0x9671,\n\t48876 - 44032: 0xBBBE,\n\t48877 - 44032: 0x9672,\n\t48878 - 44032: 0x9673,\n\t48879 - 44032: 0x9674,\n\t48880 - 44032: 0x9675,\n\t48881 - 44032: 0x9676,\n\t48882 - 44032: 0x9677,\n\t48883 - 44032: 0x9678,\n\t48884 - 44032: 0x9679,\n\t48885 - 44032: 0x967A,\n\t48886 - 44032: 0x9681,\n\t48887 - 44032: 0x9682,\n\t48888 - 44032: 0x9683,\n\t48889 - 44032: 0x9684,\n\t48890 - 44032: 0x9685,\n\t48891 - 44032: 0x9686,\n\t48892 - 44032: 0x9687,\n\t48893 - 44032: 0x9688,\n\t48894 - 44032: 0x9689,\n\t48895 - 44032: 0x968A,\n\t48896 - 44032: 0x968B,\n\t48897 - 44032: 0xBBBF,\n\t48898 - 44032: 0x968C,\n\t48899 - 44032: 0x968D,\n\t48900 - 44032: 0x968E,\n\t48901 - 44032: 0x968F,\n\t48902 - 44032: 0x9690,\n\t48903 - 44032: 0x9691,\n\t48904 - 44032: 0xBBC0,\n\t48905 - 44032: 0xBBC1,\n\t48906 - 44032: 0x9692,\n\t48907 - 44032: 0x9693,\n\t48908 - 44032: 0x9694,\n\t48909 - 44032: 0x9695,\n\t48910 - 44032: 0x9696,\n\t48911 - 44032: 0x9697,\n\t48912 - 44032: 0x9698,\n\t48913 - 44032: 0x9699,\n\t48914 - 44032: 0x969A,\n\t48915 - 44032: 0x969B,\n\t48916 - 44032: 0x969C,\n\t48917 - 44032: 0x969D,\n\t48918 - 44032: 0x969E,\n\t48919 - 44032: 0x969F,\n\t48920 - 44032: 0xBBC2,\n\t48921 - 44032: 0xBBC3,\n\t48922 - 44032: 0x96A0,\n\t48923 - 44032: 0xBBC4,\n\t48924 - 44032: 0xBBC5,\n\t48925 - 44032: 0xBBC6,\n\t48926 - 44032: 0x96A1,\n\t48927 - 44032: 0x96A2,\n\t48928 - 44032: 0x96A3,\n\t48929 - 44032: 0x96A4,\n\t48930 - 44032: 0x96A5,\n\t48931 - 44032: 0x96A6,\n\t48932 - 44032: 0x96A7,\n\t48933 - 44032: 0x96A8,\n\t48934 - 44032: 0x96A9,\n\t48935 - 44032: 0x96AA,\n\t48936 - 44032: 0x96AB,\n\t48937 - 44032: 0x96AC,\n\t48938 - 44032: 0x96AD,\n\t48939 - 44032: 0x96AE,\n\t48940 - 44032: 0x96AF,\n\t48941 - 44032: 0x96B0,\n\t48942 - 44032: 0x96B1,\n\t48943 - 44032: 0x96B2,\n\t48944 - 44032: 0x96B3,\n\t48945 - 44032: 0x96B4,\n\t48946 - 44032: 0x96B5,\n\t48947 - 44032: 0x96B6,\n\t48948 - 44032: 0x96B7,\n\t48949 - 44032: 0x96B8,\n\t48950 - 44032: 0x96B9,\n\t48951 - 44032: 0x96BA,\n\t48952 - 44032: 0x96BB,\n\t48953 - 44032: 0x96BC,\n\t48954 - 44032: 0x96BD,\n\t48955 - 44032: 0x96BE,\n\t48956 - 44032: 0x96BF,\n\t48957 - 44032: 0x96C0,\n\t48958 - 44032: 0x96C1,\n\t48959 - 44032: 0x96C2,\n\t48960 - 44032: 0xBBC7,\n\t48961 - 44032: 0xBBC8,\n\t48962 - 44032: 0x96C3,\n\t48963 - 44032: 0x96C4,\n\t48964 - 44032: 0xBBC9,\n\t48965 - 44032: 0x96C5,\n\t48966 - 44032: 0x96C6,\n\t48967 - 44032: 0x96C7,\n\t48968 - 44032: 0xBBCA,\n\t48969 - 44032: 0x96C8,\n\t48970 - 44032: 0x96C9,\n\t48971 - 44032: 0x96CA,\n\t48972 - 44032: 0x96CB,\n\t48973 - 44032: 0x96CC,\n\t48974 - 44032: 0x96CD,\n\t48975 - 44032: 0x96CE,\n\t48976 - 44032: 0xBBCB,\n\t48977 - 44032: 0xBBCC,\n\t48978 - 44032: 0x96CF,\n\t48979 - 44032: 0x96D0,\n\t48980 - 44032: 0x96D1,\n\t48981 - 44032: 0xBBCD,\n\t48982 - 44032: 0x96D2,\n\t48983 - 44032: 0x96D3,\n\t48984 - 44032: 0x96D4,\n\t48985 - 44032: 0x96D5,\n\t48986 - 44032: 0x96D6,\n\t48987 - 44032: 0x96D7,\n\t48988 - 44032: 0x96D8,\n\t48989 - 44032: 0x96D9,\n\t48990 - 44032: 0x96DA,\n\t48991 - 44032: 0x96DB,\n\t48992 - 44032: 0x96DC,\n\t48993 - 44032: 0x96DD,\n\t48994 - 44032: 0x96DE,\n\t48995 - 44032: 0x96DF,\n\t48996 - 44032: 0x96E0,\n\t48997 - 44032: 0x96E1,\n\t48998 - 44032: 0x96E2,\n\t48999 - 44032: 0x96E3,\n\t49000 - 44032: 0x96E4,\n\t49001 - 44032: 0x96E5,\n\t49002 - 44032: 0x96E6,\n\t49003 - 44032: 0x96E7,\n\t49004 - 44032: 0x96E8,\n\t49005 - 44032: 0x96E9,\n\t49006 - 44032: 0x96EA,\n\t49007 - 44032: 0x96EB,\n\t49008 - 44032: 0x96EC,\n\t49009 - 44032: 0x96ED,\n\t49010 - 44032: 0x96EE,\n\t49011 - 44032: 0x96EF,\n\t49012 - 44032: 0x96F0,\n\t49013 - 44032: 0x96F1,\n\t49014 - 44032: 0x96F2,\n\t49015 - 44032: 0x96F3,\n\t49016 - 44032: 0x96F4,\n\t49017 - 44032: 0x96F5,\n\t49018 - 44032: 0x96F6,\n\t49019 - 44032: 0x96F7,\n\t49020 - 44032: 0x96F8,\n\t49021 - 44032: 0x96F9,\n\t49022 - 44032: 0x96FA,\n\t49023 - 44032: 0x96FB,\n\t49024 - 44032: 0x96FC,\n\t49025 - 44032: 0x96FD,\n\t49026 - 44032: 0x96FE,\n\t49027 - 44032: 0x9741,\n\t49028 - 44032: 0x9742,\n\t49029 - 44032: 0x9743,\n\t49030 - 44032: 0x9744,\n\t49031 - 44032: 0x9745,\n\t49032 - 44032: 0x9746,\n\t49033 - 44032: 0x9747,\n\t49034 - 44032: 0x9748,\n\t49035 - 44032: 0x9749,\n\t49036 - 44032: 0x974A,\n\t49037 - 44032: 0x974B,\n\t49038 - 44032: 0x974C,\n\t49039 - 44032: 0x974D,\n\t49040 - 44032: 0x974E,\n\t49041 - 44032: 0x974F,\n\t49042 - 44032: 0x9750,\n\t49043 - 44032: 0x9751,\n\t49044 - 44032: 0xBBCE,\n\t49045 - 44032: 0x9752,\n\t49046 - 44032: 0x9753,\n\t49047 - 44032: 0x9754,\n\t49048 - 44032: 0x9755,\n\t49049 - 44032: 0x9756,\n\t49050 - 44032: 0x9757,\n\t49051 - 44032: 0x9758,\n\t49052 - 44032: 0x9759,\n\t49053 - 44032: 0x975A,\n\t49054 - 44032: 0x9761,\n\t49055 - 44032: 0x9762,\n\t49056 - 44032: 0x9763,\n\t49057 - 44032: 0x9764,\n\t49058 - 44032: 0x9765,\n\t49059 - 44032: 0x9766,\n\t49060 - 44032: 0x9767,\n\t49061 - 44032: 0x9768,\n\t49062 - 44032: 0x9769,\n\t49063 - 44032: 0x976A,\n\t49064 - 44032: 0x976B,\n\t49065 - 44032: 0x976C,\n\t49066 - 44032: 0x976D,\n\t49067 - 44032: 0x976E,\n\t49068 - 44032: 0x976F,\n\t49069 - 44032: 0x9770,\n\t49070 - 44032: 0x9771,\n\t49071 - 44032: 0x9772,\n\t49072 - 44032: 0xBBCF,\n\t49073 - 44032: 0x9773,\n\t49074 - 44032: 0x9774,\n\t49075 - 44032: 0x9775,\n\t49076 - 44032: 0x9776,\n\t49077 - 44032: 0x9777,\n\t49078 - 44032: 0x9778,\n\t49079 - 44032: 0x9779,\n\t49080 - 44032: 0x977A,\n\t49081 - 44032: 0x9781,\n\t49082 - 44032: 0x9782,\n\t49083 - 44032: 0x9783,\n\t49084 - 44032: 0x9784,\n\t49085 - 44032: 0x9785,\n\t49086 - 44032: 0x9786,\n\t49087 - 44032: 0x9787,\n\t49088 - 44032: 0x9788,\n\t49089 - 44032: 0x9789,\n\t49090 - 44032: 0x978A,\n\t49091 - 44032: 0x978B,\n\t49092 - 44032: 0x978C,\n\t49093 - 44032: 0xBBD0,\n\t49094 - 44032: 0x978D,\n\t49095 - 44032: 0x978E,\n\t49096 - 44032: 0x978F,\n\t49097 - 44032: 0x9790,\n\t49098 - 44032: 0x9791,\n\t49099 - 44032: 0x9792,\n\t49100 - 44032: 0xBBD1,\n\t49101 - 44032: 0xBBD2,\n\t49102 - 44032: 0x9793,\n\t49103 - 44032: 0x9794,\n\t49104 - 44032: 0xBBD3,\n\t49105 - 44032: 0x9795,\n\t49106 - 44032: 0x9796,\n\t49107 - 44032: 0x9797,\n\t49108 - 44032: 0xBBD4,\n\t49109 - 44032: 0x9798,\n\t49110 - 44032: 0x9799,\n\t49111 - 44032: 0x979A,\n\t49112 - 44032: 0x979B,\n\t49113 - 44032: 0x979C,\n\t49114 - 44032: 0x979D,\n\t49115 - 44032: 0x979E,\n\t49116 - 44032: 0xBBD5,\n\t49117 - 44032: 0x979F,\n\t49118 - 44032: 0x97A0,\n\t49119 - 44032: 0xBBD6,\n\t49120 - 44032: 0x97A1,\n\t49121 - 44032: 0xBBD7,\n\t49122 - 44032: 0x97A2,\n\t49123 - 44032: 0x97A3,\n\t49124 - 44032: 0x97A4,\n\t49125 - 44032: 0x97A5,\n\t49126 - 44032: 0x97A6,\n\t49127 - 44032: 0x97A7,\n\t49128 - 44032: 0x97A8,\n\t49129 - 44032: 0x97A9,\n\t49130 - 44032: 0x97AA,\n\t49131 - 44032: 0x97AB,\n\t49132 - 44032: 0x97AC,\n\t49133 - 44032: 0x97AD,\n\t49134 - 44032: 0x97AE,\n\t49135 - 44032: 0x97AF,\n\t49136 - 44032: 0x97B0,\n\t49137 - 44032: 0x97B1,\n\t49138 - 44032: 0x97B2,\n\t49139 - 44032: 0x97B3,\n\t49140 - 44032: 0x97B4,\n\t49141 - 44032: 0x97B5,\n\t49142 - 44032: 0x97B6,\n\t49143 - 44032: 0x97B7,\n\t49144 - 44032: 0x97B8,\n\t49145 - 44032: 0x97B9,\n\t49146 - 44032: 0x97BA,\n\t49147 - 44032: 0x97BB,\n\t49148 - 44032: 0x97BC,\n\t49149 - 44032: 0x97BD,\n\t49150 - 44032: 0x97BE,\n\t49151 - 44032: 0x97BF,\n\t49152 - 44032: 0x97C0,\n\t49153 - 44032: 0x97C1,\n\t49154 - 44032: 0x97C2,\n\t49155 - 44032: 0x97C3,\n\t49156 - 44032: 0x97C4,\n\t49157 - 44032: 0x97C5,\n\t49158 - 44032: 0x97C6,\n\t49159 - 44032: 0x97C7,\n\t49160 - 44032: 0x97C8,\n\t49161 - 44032: 0x97C9,\n\t49162 - 44032: 0x97CA,\n\t49163 - 44032: 0x97CB,\n\t49164 - 44032: 0x97CC,\n\t49165 - 44032: 0x97CD,\n\t49166 - 44032: 0x97CE,\n\t49167 - 44032: 0x97CF,\n\t49168 - 44032: 0x97D0,\n\t49169 - 44032: 0x97D1,\n\t49170 - 44032: 0x97D2,\n\t49171 - 44032: 0x97D3,\n\t49172 - 44032: 0x97D4,\n\t49173 - 44032: 0x97D5,\n\t49174 - 44032: 0x97D6,\n\t49175 - 44032: 0x97D7,\n\t49176 - 44032: 0x97D8,\n\t49177 - 44032: 0x97D9,\n\t49178 - 44032: 0x97DA,\n\t49179 - 44032: 0x97DB,\n\t49180 - 44032: 0x97DC,\n\t49181 - 44032: 0x97DD,\n\t49182 - 44032: 0x97DE,\n\t49183 - 44032: 0x97DF,\n\t49184 - 44032: 0x97E0,\n\t49185 - 44032: 0x97E1,\n\t49186 - 44032: 0x97E2,\n\t49187 - 44032: 0x97E3,\n\t49188 - 44032: 0x97E4,\n\t49189 - 44032: 0x97E5,\n\t49190 - 44032: 0x97E6,\n\t49191 - 44032: 0x97E7,\n\t49192 - 44032: 0x97E8,\n\t49193 - 44032: 0x97E9,\n\t49194 - 44032: 0x97EA,\n\t49195 - 44032: 0x97EB,\n\t49196 - 44032: 0x97EC,\n\t49197 - 44032: 0x97ED,\n\t49198 - 44032: 0x97EE,\n\t49199 - 44032: 0x97EF,\n\t49200 - 44032: 0x97F0,\n\t49201 - 44032: 0x97F1,\n\t49202 - 44032: 0x97F2,\n\t49203 - 44032: 0x97F3,\n\t49204 - 44032: 0x97F4,\n\t49205 - 44032: 0x97F5,\n\t49206 - 44032: 0x97F6,\n\t49207 - 44032: 0x97F7,\n\t49208 - 44032: 0x97F8,\n\t49209 - 44032: 0x97F9,\n\t49210 - 44032: 0x97FA,\n\t49211 - 44032: 0x97FB,\n\t49212 - 44032: 0xBBD8,\n\t49213 - 44032: 0x97FC,\n\t49214 - 44032: 0x97FD,\n\t49215 - 44032: 0x97FE,\n\t49216 - 44032: 0x9841,\n\t49217 - 44032: 0x9842,\n\t49218 - 44032: 0x9843,\n\t49219 - 44032: 0x9844,\n\t49220 - 44032: 0x9845,\n\t49221 - 44032: 0x9846,\n\t49222 - 44032: 0x9847,\n\t49223 - 44032: 0x9848,\n\t49224 - 44032: 0x9849,\n\t49225 - 44032: 0x984A,\n\t49226 - 44032: 0x984B,\n\t49227 - 44032: 0x984C,\n\t49228 - 44032: 0x984D,\n\t49229 - 44032: 0x984E,\n\t49230 - 44032: 0x984F,\n\t49231 - 44032: 0x9850,\n\t49232 - 44032: 0x9851,\n\t49233 - 44032: 0xBBD9,\n\t49234 - 44032: 0x9852,\n\t49235 - 44032: 0x9853,\n\t49236 - 44032: 0x9854,\n\t49237 - 44032: 0x9855,\n\t49238 - 44032: 0x9856,\n\t49239 - 44032: 0x9857,\n\t49240 - 44032: 0xBBDA,\n\t49241 - 44032: 0x9858,\n\t49242 - 44032: 0x9859,\n\t49243 - 44032: 0x985A,\n\t49244 - 44032: 0xBBDB,\n\t49245 - 44032: 0x9861,\n\t49246 - 44032: 0x9862,\n\t49247 - 44032: 0x9863,\n\t49248 - 44032: 0xBBDC,\n\t49249 - 44032: 0x9864,\n\t49250 - 44032: 0x9865,\n\t49251 - 44032: 0x9866,\n\t49252 - 44032: 0x9867,\n\t49253 - 44032: 0x9868,\n\t49254 - 44032: 0x9869,\n\t49255 - 44032: 0x986A,\n\t49256 - 44032: 0xBBDD,\n\t49257 - 44032: 0xBBDE,\n\t49258 - 44032: 0x986B,\n\t49259 - 44032: 0x986C,\n\t49260 - 44032: 0x986D,\n\t49261 - 44032: 0x986E,\n\t49262 - 44032: 0x986F,\n\t49263 - 44032: 0x9870,\n\t49264 - 44032: 0x9871,\n\t49265 - 44032: 0x9872,\n\t49266 - 44032: 0x9873,\n\t49267 - 44032: 0x9874,\n\t49268 - 44032: 0x9875,\n\t49269 - 44032: 0x9876,\n\t49270 - 44032: 0x9877,\n\t49271 - 44032: 0x9878,\n\t49272 - 44032: 0x9879,\n\t49273 - 44032: 0x987A,\n\t49274 - 44032: 0x9881,\n\t49275 - 44032: 0x9882,\n\t49276 - 44032: 0x9883,\n\t49277 - 44032: 0x9884,\n\t49278 - 44032: 0x9885,\n\t49279 - 44032: 0x9886,\n\t49280 - 44032: 0x9887,\n\t49281 - 44032: 0x9888,\n\t49282 - 44032: 0x9889,\n\t49283 - 44032: 0x988A,\n\t49284 - 44032: 0x988B,\n\t49285 - 44032: 0x988C,\n\t49286 - 44032: 0x988D,\n\t49287 - 44032: 0x988E,\n\t49288 - 44032: 0x988F,\n\t49289 - 44032: 0x9890,\n\t49290 - 44032: 0x9891,\n\t49291 - 44032: 0x9892,\n\t49292 - 44032: 0x9893,\n\t49293 - 44032: 0x9894,\n\t49294 - 44032: 0x9895,\n\t49295 - 44032: 0x9896,\n\t49296 - 44032: 0xBBDF,\n\t49297 - 44032: 0xBBE0,\n\t49298 - 44032: 0x9897,\n\t49299 - 44032: 0x9898,\n\t49300 - 44032: 0xBBE1,\n\t49301 - 44032: 0x9899,\n\t49302 - 44032: 0x989A,\n\t49303 - 44032: 0x989B,\n\t49304 - 44032: 0xBBE2,\n\t49305 - 44032: 0x989C,\n\t49306 - 44032: 0x989D,\n\t49307 - 44032: 0x989E,\n\t49308 - 44032: 0x989F,\n\t49309 - 44032: 0x98A0,\n\t49310 - 44032: 0x98A1,\n\t49311 - 44032: 0x98A2,\n\t49312 - 44032: 0xBBE3,\n\t49313 - 44032: 0xBBE4,\n\t49314 - 44032: 0x98A3,\n\t49315 - 44032: 0xBBE5,\n\t49316 - 44032: 0x98A4,\n\t49317 - 44032: 0xBBE6,\n\t49318 - 44032: 0x98A5,\n\t49319 - 44032: 0x98A6,\n\t49320 - 44032: 0x98A7,\n\t49321 - 44032: 0x98A8,\n\t49322 - 44032: 0x98A9,\n\t49323 - 44032: 0x98AA,\n\t49324 - 44032: 0xBBE7,\n\t49325 - 44032: 0xBBE8,\n\t49326 - 44032: 0x98AB,\n\t49327 - 44032: 0xBBE9,\n\t49328 - 44032: 0xBBEA,\n\t49329 - 44032: 0x98AC,\n\t49330 - 44032: 0x98AD,\n\t49331 - 44032: 0xBBEB,\n\t49332 - 44032: 0xBBEC,\n\t49333 - 44032: 0xBBED,\n\t49334 - 44032: 0xBBEE,\n\t49335 - 44032: 0x98AE,\n\t49336 - 44032: 0x98AF,\n\t49337 - 44032: 0x98B0,\n\t49338 - 44032: 0x98B1,\n\t49339 - 44032: 0x98B2,\n\t49340 - 44032: 0xBBEF,\n\t49341 - 44032: 0xBBF0,\n\t49342 - 44032: 0x98B3,\n\t49343 - 44032: 0xBBF1,\n\t49344 - 44032: 0xBBF2,\n\t49345 - 44032: 0xBBF3,\n\t49346 - 44032: 0x98B4,\n\t49347 - 44032: 0x98B5,\n\t49348 - 44032: 0x98B6,\n\t49349 - 44032: 0xBBF4,\n\t49350 - 44032: 0x98B7,\n\t49351 - 44032: 0x98B8,\n\t49352 - 44032: 0xBBF5,\n\t49353 - 44032: 0xBBF6,\n\t49354 - 44032: 0x98B9,\n\t49355 - 44032: 0x98BA,\n\t49356 - 44032: 0xBBF7,\n\t49357 - 44032: 0x98BB,\n\t49358 - 44032: 0x98BC,\n\t49359 - 44032: 0x98BD,\n\t49360 - 44032: 0xBBF8,\n\t49361 - 44032: 0x98BE,\n\t49362 - 44032: 0x98BF,\n\t49363 - 44032: 0x98C0,\n\t49364 - 44032: 0x98C1,\n\t49365 - 44032: 0x98C2,\n\t49366 - 44032: 0x98C3,\n\t49367 - 44032: 0x98C4,\n\t49368 - 44032: 0xBBF9,\n\t49369 - 44032: 0xBBFA,\n\t49370 - 44032: 0x98C5,\n\t49371 - 44032: 0xBBFB,\n\t49372 - 44032: 0xBBFC,\n\t49373 - 44032: 0xBBFD,\n\t49374 - 44032: 0x98C6,\n\t49375 - 44032: 0x98C7,\n\t49376 - 44032: 0x98C8,\n\t49377 - 44032: 0x98C9,\n\t49378 - 44032: 0x98CA,\n\t49379 - 44032: 0x98CB,\n\t49380 - 44032: 0xBBFE,\n\t49381 - 44032: 0xBCA1,\n\t49382 - 44032: 0x98CC,\n\t49383 - 44032: 0x98CD,\n\t49384 - 44032: 0xBCA2,\n\t49385 - 44032: 0x98CE,\n\t49386 - 44032: 0x98CF,\n\t49387 - 44032: 0x98D0,\n\t49388 - 44032: 0xBCA3,\n\t49389 - 44032: 0x98D1,\n\t49390 - 44032: 0x98D2,\n\t49391 - 44032: 0x98D3,\n\t49392 - 44032: 0x98D4,\n\t49393 - 44032: 0x98D5,\n\t49394 - 44032: 0x98D6,\n\t49395 - 44032: 0x98D7,\n\t49396 - 44032: 0xBCA4,\n\t49397 - 44032: 0xBCA5,\n\t49398 - 44032: 0x98D8,\n\t49399 - 44032: 0xBCA6,\n\t49400 - 44032: 0x98D9,\n\t49401 - 44032: 0xBCA7,\n\t49402 - 44032: 0x98DA,\n\t49403 - 44032: 0x98DB,\n\t49404 - 44032: 0x98DC,\n\t49405 - 44032: 0x98DD,\n\t49406 - 44032: 0x98DE,\n\t49407 - 44032: 0x98DF,\n\t49408 - 44032: 0xBCA8,\n\t49409 - 44032: 0x98E0,\n\t49410 - 44032: 0x98E1,\n\t49411 - 44032: 0x98E2,\n\t49412 - 44032: 0xBCA9,\n\t49413 - 44032: 0x98E3,\n\t49414 - 44032: 0x98E4,\n\t49415 - 44032: 0x98E5,\n\t49416 - 44032: 0xBCAA,\n\t49417 - 44032: 0x98E6,\n\t49418 - 44032: 0x98E7,\n\t49419 - 44032: 0x98E8,\n\t49420 - 44032: 0x98E9,\n\t49421 - 44032: 0x98EA,\n\t49422 - 44032: 0x98EB,\n\t49423 - 44032: 0x98EC,\n\t49424 - 44032: 0xBCAB,\n\t49425 - 44032: 0x98ED,\n\t49426 - 44032: 0x98EE,\n\t49427 - 44032: 0x98EF,\n\t49428 - 44032: 0x98F0,\n\t49429 - 44032: 0xBCAC,\n\t49430 - 44032: 0x98F1,\n\t49431 - 44032: 0x98F2,\n\t49432 - 44032: 0x98F3,\n\t49433 - 44032: 0x98F4,\n\t49434 - 44032: 0x98F5,\n\t49435 - 44032: 0x98F6,\n\t49436 - 44032: 0xBCAD,\n\t49437 - 44032: 0xBCAE,\n\t49438 - 44032: 0xBCAF,\n\t49439 - 44032: 0xBCB0,\n\t49440 - 44032: 0xBCB1,\n\t49441 - 44032: 0x98F7,\n\t49442 - 44032: 0x98F8,\n\t49443 - 44032: 0xBCB2,\n\t49444 - 44032: 0xBCB3,\n\t49445 - 44032: 0x98F9,\n\t49446 - 44032: 0xBCB4,\n\t49447 - 44032: 0xBCB5,\n\t49448 - 44032: 0x98FA,\n\t49449 - 44032: 0x98FB,\n\t49450 - 44032: 0x98FC,\n\t49451 - 44032: 0x98FD,\n\t49452 - 44032: 0xBCB6,\n\t49453 - 44032: 0xBCB7,\n\t49454 - 44032: 0x98FE,\n\t49455 - 44032: 0xBCB8,\n\t49456 - 44032: 0xBCB9,\n\t49457 - 44032: 0xBCBA,\n\t49458 - 44032: 0x9941,\n\t49459 - 44032: 0x9942,\n\t49460 - 44032: 0x9943,\n\t49461 - 44032: 0x9944,\n\t49462 - 44032: 0xBCBB,\n\t49463 - 44032: 0x9945,\n\t49464 - 44032: 0xBCBC,\n\t49465 - 44032: 0xBCBD,\n\t49466 - 44032: 0x9946,\n\t49467 - 44032: 0x9947,\n\t49468 - 44032: 0xBCBE,\n\t49469 - 44032: 0x9948,\n\t49470 - 44032: 0x9949,\n\t49471 - 44032: 0x994A,\n\t49472 - 44032: 0xBCBF,\n\t49473 - 44032: 0x994B,\n\t49474 - 44032: 0x994C,\n\t49475 - 44032: 0x994D,\n\t49476 - 44032: 0x994E,\n\t49477 - 44032: 0x994F,\n\t49478 - 44032: 0x9950,\n\t49479 - 44032: 0x9951,\n\t49480 - 44032: 0xBCC0,\n\t49481 - 44032: 0xBCC1,\n\t49482 - 44032: 0x9952,\n\t49483 - 44032: 0xBCC2,\n\t49484 - 44032: 0xBCC3,\n\t49485 - 44032: 0xBCC4,\n\t49486 - 44032: 0x9953,\n\t49487 - 44032: 0x9954,\n\t49488 - 44032: 0x9955,\n\t49489 - 44032: 0x9956,\n\t49490 - 44032: 0x9957,\n\t49491 - 44032: 0x9958,\n\t49492 - 44032: 0xBCC5,\n\t49493 - 44032: 0xBCC6,\n\t49494 - 44032: 0x9959,\n\t49495 - 44032: 0x995A,\n\t49496 - 44032: 0xBCC7,\n\t49497 - 44032: 0x9961,\n\t49498 - 44032: 0x9962,\n\t49499 - 44032: 0x9963,\n\t49500 - 44032: 0xBCC8,\n\t49501 - 44032: 0x9964,\n\t49502 - 44032: 0x9965,\n\t49503 - 44032: 0x9966,\n\t49504 - 44032: 0x9967,\n\t49505 - 44032: 0x9968,\n\t49506 - 44032: 0x9969,\n\t49507 - 44032: 0x996A,\n\t49508 - 44032: 0xBCC9,\n\t49509 - 44032: 0xBCCA,\n\t49510 - 44032: 0x996B,\n\t49511 - 44032: 0xBCCB,\n\t49512 - 44032: 0xBCCC,\n\t49513 - 44032: 0xBCCD,\n\t49514 - 44032: 0x996C,\n\t49515 - 44032: 0x996D,\n\t49516 - 44032: 0x996E,\n\t49517 - 44032: 0x996F,\n\t49518 - 44032: 0x9970,\n\t49519 - 44032: 0x9971,\n\t49520 - 44032: 0xBCCE,\n\t49521 - 44032: 0x9972,\n\t49522 - 44032: 0x9973,\n\t49523 - 44032: 0x9974,\n\t49524 - 44032: 0xBCCF,\n\t49525 - 44032: 0x9975,\n\t49526 - 44032: 0x9976,\n\t49527 - 44032: 0x9977,\n\t49528 - 44032: 0xBCD0,\n\t49529 - 44032: 0x9978,\n\t49530 - 44032: 0x9979,\n\t49531 - 44032: 0x997A,\n\t49532 - 44032: 0x9981,\n\t49533 - 44032: 0x9982,\n\t49534 - 44032: 0x9983,\n\t49535 - 44032: 0x9984,\n\t49536 - 44032: 0x9985,\n\t49537 - 44032: 0x9986,\n\t49538 - 44032: 0x9987,\n\t49539 - 44032: 0x9988,\n\t49540 - 44032: 0x9989,\n\t49541 - 44032: 0xBCD1,\n\t49542 - 44032: 0x998A,\n\t49543 - 44032: 0x998B,\n\t49544 - 44032: 0x998C,\n\t49545 - 44032: 0x998D,\n\t49546 - 44032: 0x998E,\n\t49547 - 44032: 0x998F,\n\t49548 - 44032: 0xBCD2,\n\t49549 - 44032: 0xBCD3,\n\t49550 - 44032: 0xBCD4,\n\t49551 - 44032: 0x9990,\n\t49552 - 44032: 0xBCD5,\n\t49553 - 44032: 0x9991,\n\t49554 - 44032: 0x9992,\n\t49555 - 44032: 0x9993,\n\t49556 - 44032: 0xBCD6,\n\t49557 - 44032: 0x9994,\n\t49558 - 44032: 0xBCD7,\n\t49559 - 44032: 0x9995,\n\t49560 - 44032: 0x9996,\n\t49561 - 44032: 0x9997,\n\t49562 - 44032: 0x9998,\n\t49563 - 44032: 0x9999,\n\t49564 - 44032: 0xBCD8,\n\t49565 - 44032: 0xBCD9,\n\t49566 - 44032: 0x999A,\n\t49567 - 44032: 0xBCDA,\n\t49568 - 44032: 0x999B,\n\t49569 - 44032: 0xBCDB,\n\t49570 - 44032: 0x999C,\n\t49571 - 44032: 0x999D,\n\t49572 - 44032: 0x999E,\n\t49573 - 44032: 0xBCDC,\n\t49574 - 44032: 0x999F,\n\t49575 - 44032: 0x99A0,\n\t49576 - 44032: 0xBCDD,\n\t49577 - 44032: 0xBCDE,\n\t49578 - 44032: 0x99A1,\n\t49579 - 44032: 0x99A2,\n\t49580 - 44032: 0xBCDF,\n\t49581 - 44032: 0x99A3,\n\t49582 - 44032: 0x99A4,\n\t49583 - 44032: 0x99A5,\n\t49584 - 44032: 0xBCE0,\n\t49585 - 44032: 0x99A6,\n\t49586 - 44032: 0x99A7,\n\t49587 - 44032: 0x99A8,\n\t49588 - 44032: 0x99A9,\n\t49589 - 44032: 0x99AA,\n\t49590 - 44032: 0x99AB,\n\t49591 - 44032: 0x99AC,\n\t49592 - 44032: 0x99AD,\n\t49593 - 44032: 0x99AE,\n\t49594 - 44032: 0x99AF,\n\t49595 - 44032: 0x99B0,\n\t49596 - 44032: 0x99B1,\n\t49597 - 44032: 0xBCE1,\n\t49598 - 44032: 0x99B2,\n\t49599 - 44032: 0x99B3,\n\t49600 - 44032: 0x99B4,\n\t49601 - 44032: 0x99B5,\n\t49602 - 44032: 0x99B6,\n\t49603 - 44032: 0x99B7,\n\t49604 - 44032: 0xBCE2,\n\t49605 - 44032: 0x99B8,\n\t49606 - 44032: 0x99B9,\n\t49607 - 44032: 0x99BA,\n\t49608 - 44032: 0xBCE3,\n\t49609 - 44032: 0x99BB,\n\t49610 - 44032: 0x99BC,\n\t49611 - 44032: 0x99BD,\n\t49612 - 44032: 0xBCE4,\n\t49613 - 44032: 0x99BE,\n\t49614 - 44032: 0x99BF,\n\t49615 - 44032: 0x99C0,\n\t49616 - 44032: 0x99C1,\n\t49617 - 44032: 0x99C2,\n\t49618 - 44032: 0x99C3,\n\t49619 - 44032: 0x99C4,\n\t49620 - 44032: 0xBCE5,\n\t49621 - 44032: 0x99C5,\n\t49622 - 44032: 0x99C6,\n\t49623 - 44032: 0xBCE6,\n\t49624 - 44032: 0xBCE7,\n\t49625 - 44032: 0x99C7,\n\t49626 - 44032: 0x99C8,\n\t49627 - 44032: 0x99C9,\n\t49628 - 44032: 0x99CA,\n\t49629 - 44032: 0x99CB,\n\t49630 - 44032: 0x99CC,\n\t49631 - 44032: 0x99CD,\n\t49632 - 44032: 0xBCE8,\n\t49633 - 44032: 0x99CE,\n\t49634 - 44032: 0x99CF,\n\t49635 - 44032: 0x99D0,\n\t49636 - 44032: 0xBCE9,\n\t49637 - 44032: 0x99D1,\n\t49638 - 44032: 0x99D2,\n\t49639 - 44032: 0x99D3,\n\t49640 - 44032: 0xBCEA,\n\t49641 - 44032: 0x99D4,\n\t49642 - 44032: 0x99D5,\n\t49643 - 44032: 0x99D6,\n\t49644 - 44032: 0x99D7,\n\t49645 - 44032: 0x99D8,\n\t49646 - 44032: 0x99D9,\n\t49647 - 44032: 0x99DA,\n\t49648 - 44032: 0xBCEB,\n\t49649 - 44032: 0xBCEC,\n\t49650 - 44032: 0x99DB,\n\t49651 - 44032: 0xBCED,\n\t49652 - 44032: 0x99DC,\n\t49653 - 44032: 0x99DD,\n\t49654 - 44032: 0x99DE,\n\t49655 - 44032: 0x99DF,\n\t49656 - 44032: 0x99E0,\n\t49657 - 44032: 0x99E1,\n\t49658 - 44032: 0x99E2,\n\t49659 - 44032: 0x99E3,\n\t49660 - 44032: 0xBCEE,\n\t49661 - 44032: 0xBCEF,\n\t49662 - 44032: 0x99E4,\n\t49663 - 44032: 0x99E5,\n\t49664 - 44032: 0xBCF0,\n\t49665 - 44032: 0x99E6,\n\t49666 - 44032: 0x99E7,\n\t49667 - 44032: 0x99E8,\n\t49668 - 44032: 0xBCF1,\n\t49669 - 44032: 0x99E9,\n\t49670 - 44032: 0x99EA,\n\t49671 - 44032: 0x99EB,\n\t49672 - 44032: 0x99EC,\n\t49673 - 44032: 0x99ED,\n\t49674 - 44032: 0x99EE,\n\t49675 - 44032: 0x99EF,\n\t49676 - 44032: 0xBCF2,\n\t49677 - 44032: 0xBCF3,\n\t49678 - 44032: 0x99F0,\n\t49679 - 44032: 0xBCF4,\n\t49680 - 44032: 0x99F1,\n\t49681 - 44032: 0xBCF5,\n\t49682 - 44032: 0x99F2,\n\t49683 - 44032: 0x99F3,\n\t49684 - 44032: 0x99F4,\n\t49685 - 44032: 0x99F5,\n\t49686 - 44032: 0x99F6,\n\t49687 - 44032: 0x99F7,\n\t49688 - 44032: 0xBCF6,\n\t49689 - 44032: 0xBCF7,\n\t49690 - 44032: 0x99F8,\n\t49691 - 44032: 0x99F9,\n\t49692 - 44032: 0xBCF8,\n\t49693 - 44032: 0x99FA,\n\t49694 - 44032: 0x99FB,\n\t49695 - 44032: 0xBCF9,\n\t49696 - 44032: 0xBCFA,\n\t49697 - 44032: 0x99FC,\n\t49698 - 44032: 0x99FD,\n\t49699 - 44032: 0x99FE,\n\t49700 - 44032: 0x9A41,\n\t49701 - 44032: 0x9A42,\n\t49702 - 44032: 0x9A43,\n\t49703 - 44032: 0x9A44,\n\t49704 - 44032: 0xBCFB,\n\t49705 - 44032: 0xBCFC,\n\t49706 - 44032: 0x9A45,\n\t49707 - 44032: 0xBCFD,\n\t49708 - 44032: 0x9A46,\n\t49709 - 44032: 0xBCFE,\n\t49710 - 44032: 0x9A47,\n\t49711 - 44032: 0xBDA1,\n\t49712 - 44032: 0x9A48,\n\t49713 - 44032: 0xBDA2,\n\t49714 - 44032: 0xBDA3,\n\t49715 - 44032: 0x9A49,\n\t49716 - 44032: 0xBDA4,\n\t49717 - 44032: 0x9A4A,\n\t49718 - 44032: 0x9A4B,\n\t49719 - 44032: 0x9A4C,\n\t49720 - 44032: 0x9A4D,\n\t49721 - 44032: 0x9A4E,\n\t49722 - 44032: 0x9A4F,\n\t49723 - 44032: 0x9A50,\n\t49724 - 44032: 0x9A51,\n\t49725 - 44032: 0x9A52,\n\t49726 - 44032: 0x9A53,\n\t49727 - 44032: 0x9A54,\n\t49728 - 44032: 0x9A55,\n\t49729 - 44032: 0x9A56,\n\t49730 - 44032: 0x9A57,\n\t49731 - 44032: 0x9A58,\n\t49732 - 44032: 0x9A59,\n\t49733 - 44032: 0x9A5A,\n\t49734 - 44032: 0x9A61,\n\t49735 - 44032: 0x9A62,\n\t49736 - 44032: 0xBDA5,\n\t49737 - 44032: 0x9A63,\n\t49738 - 44032: 0x9A64,\n\t49739 - 44032: 0x9A65,\n\t49740 - 44032: 0x9A66,\n\t49741 - 44032: 0x9A67,\n\t49742 - 44032: 0x9A68,\n\t49743 - 44032: 0x9A69,\n\t49744 - 44032: 0xBDA6,\n\t49745 - 44032: 0xBDA7,\n\t49746 - 44032: 0x9A6A,\n\t49747 - 44032: 0x9A6B,\n\t49748 - 44032: 0xBDA8,\n\t49749 - 44032: 0x9A6C,\n\t49750 - 44032: 0x9A6D,\n\t49751 - 44032: 0x9A6E,\n\t49752 - 44032: 0xBDA9,\n\t49753 - 44032: 0x9A6F,\n\t49754 - 44032: 0x9A70,\n\t49755 - 44032: 0x9A71,\n\t49756 - 44032: 0x9A72,\n\t49757 - 44032: 0x9A73,\n\t49758 - 44032: 0x9A74,\n\t49759 - 44032: 0x9A75,\n\t49760 - 44032: 0xBDAA,\n\t49761 - 44032: 0x9A76,\n\t49762 - 44032: 0x9A77,\n\t49763 - 44032: 0x9A78,\n\t49764 - 44032: 0x9A79,\n\t49765 - 44032: 0xBDAB,\n\t49766 - 44032: 0x9A7A,\n\t49767 - 44032: 0x9A81,\n\t49768 - 44032: 0x9A82,\n\t49769 - 44032: 0x9A83,\n\t49770 - 44032: 0x9A84,\n\t49771 - 44032: 0x9A85,\n\t49772 - 44032: 0xBDAC,\n\t49773 - 44032: 0xBDAD,\n\t49774 - 44032: 0x9A86,\n\t49775 - 44032: 0x9A87,\n\t49776 - 44032: 0xBDAE,\n\t49777 - 44032: 0x9A88,\n\t49778 - 44032: 0x9A89,\n\t49779 - 44032: 0x9A8A,\n\t49780 - 44032: 0xBDAF,\n\t49781 - 44032: 0x9A8B,\n\t49782 - 44032: 0x9A8C,\n\t49783 - 44032: 0x9A8D,\n\t49784 - 44032: 0x9A8E,\n\t49785 - 44032: 0x9A8F,\n\t49786 - 44032: 0x9A90,\n\t49787 - 44032: 0x9A91,\n\t49788 - 44032: 0xBDB0,\n\t49789 - 44032: 0xBDB1,\n\t49790 - 44032: 0x9A92,\n\t49791 - 44032: 0xBDB2,\n\t49792 - 44032: 0x9A93,\n\t49793 - 44032: 0xBDB3,\n\t49794 - 44032: 0x9A94,\n\t49795 - 44032: 0x9A95,\n\t49796 - 44032: 0x9A96,\n\t49797 - 44032: 0x9A97,\n\t49798 - 44032: 0x9A98,\n\t49799 - 44032: 0x9A99,\n\t49800 - 44032: 0xBDB4,\n\t49801 - 44032: 0xBDB5,\n\t49802 - 44032: 0x9A9A,\n\t49803 - 44032: 0x9A9B,\n\t49804 - 44032: 0x9A9C,\n\t49805 - 44032: 0x9A9D,\n\t49806 - 44032: 0x9A9E,\n\t49807 - 44032: 0x9A9F,\n\t49808 - 44032: 0xBDB6,\n\t49809 - 44032: 0x9AA0,\n\t49810 - 44032: 0x9AA1,\n\t49811 - 44032: 0x9AA2,\n\t49812 - 44032: 0x9AA3,\n\t49813 - 44032: 0x9AA4,\n\t49814 - 44032: 0x9AA5,\n\t49815 - 44032: 0x9AA6,\n\t49816 - 44032: 0xBDB7,\n\t49817 - 44032: 0x9AA7,\n\t49818 - 44032: 0x9AA8,\n\t49819 - 44032: 0xBDB8,\n\t49820 - 44032: 0x9AA9,\n\t49821 - 44032: 0xBDB9,\n\t49822 - 44032: 0x9AAA,\n\t49823 - 44032: 0x9AAB,\n\t49824 - 44032: 0x9AAC,\n\t49825 - 44032: 0x9AAD,\n\t49826 - 44032: 0x9AAE,\n\t49827 - 44032: 0x9AAF,\n\t49828 - 44032: 0xBDBA,\n\t49829 - 44032: 0xBDBB,\n\t49830 - 44032: 0x9AB0,\n\t49831 - 44032: 0x9AB1,\n\t49832 - 44032: 0xBDBC,\n\t49833 - 44032: 0x9AB2,\n\t49834 - 44032: 0x9AB3,\n\t49835 - 44032: 0x9AB4,\n\t49836 - 44032: 0xBDBD,\n\t49837 - 44032: 0xBDBE,\n\t49838 - 44032: 0x9AB5,\n\t49839 - 44032: 0x9AB6,\n\t49840 - 44032: 0x9AB7,\n\t49841 - 44032: 0x9AB8,\n\t49842 - 44032: 0x9AB9,\n\t49843 - 44032: 0x9ABA,\n\t49844 - 44032: 0xBDBF,\n\t49845 - 44032: 0xBDC0,\n\t49846 - 44032: 0x9ABB,\n\t49847 - 44032: 0xBDC1,\n\t49848 - 44032: 0x9ABC,\n\t49849 - 44032: 0xBDC2,\n\t49850 - 44032: 0x9ABD,\n\t49851 - 44032: 0x9ABE,\n\t49852 - 44032: 0x9ABF,\n\t49853 - 44032: 0x9AC0,\n\t49854 - 44032: 0x9AC1,\n\t49855 - 44032: 0x9AC2,\n\t49856 - 44032: 0x9AC3,\n\t49857 - 44032: 0x9AC4,\n\t49858 - 44032: 0x9AC5,\n\t49859 - 44032: 0x9AC6,\n\t49860 - 44032: 0x9AC7,\n\t49861 - 44032: 0x9AC8,\n\t49862 - 44032: 0x9AC9,\n\t49863 - 44032: 0x9ACA,\n\t49864 - 44032: 0x9ACB,\n\t49865 - 44032: 0x9ACC,\n\t49866 - 44032: 0x9ACD,\n\t49867 - 44032: 0x9ACE,\n\t49868 - 44032: 0x9ACF,\n\t49869 - 44032: 0x9AD0,\n\t49870 - 44032: 0x9AD1,\n\t49871 - 44032: 0x9AD2,\n\t49872 - 44032: 0x9AD3,\n\t49873 - 44032: 0x9AD4,\n\t49874 - 44032: 0x9AD5,\n\t49875 - 44032: 0x9AD6,\n\t49876 - 44032: 0x9AD7,\n\t49877 - 44032: 0x9AD8,\n\t49878 - 44032: 0x9AD9,\n\t49879 - 44032: 0x9ADA,\n\t49880 - 44032: 0x9ADB,\n\t49881 - 44032: 0x9ADC,\n\t49882 - 44032: 0x9ADD,\n\t49883 - 44032: 0x9ADE,\n\t49884 - 44032: 0xBDC3,\n\t49885 - 44032: 0xBDC4,\n\t49886 - 44032: 0x9ADF,\n\t49887 - 44032: 0x9AE0,\n\t49888 - 44032: 0xBDC5,\n\t49889 - 44032: 0x9AE1,\n\t49890 - 44032: 0x9AE2,\n\t49891 - 44032: 0xBDC6,\n\t49892 - 44032: 0xBDC7,\n\t49893 - 44032: 0x9AE3,\n\t49894 - 44032: 0x9AE4,\n\t49895 - 44032: 0x9AE5,\n\t49896 - 44032: 0x9AE6,\n\t49897 - 44032: 0x9AE7,\n\t49898 - 44032: 0x9AE8,\n\t49899 - 44032: 0xBDC8,\n\t49900 - 44032: 0xBDC9,\n\t49901 - 44032: 0xBDCA,\n\t49902 - 44032: 0x9AE9,\n\t49903 - 44032: 0xBDCB,\n\t49904 - 44032: 0x9AEA,\n\t49905 - 44032: 0xBDCC,\n\t49906 - 44032: 0x9AEB,\n\t49907 - 44032: 0x9AEC,\n\t49908 - 44032: 0x9AED,\n\t49909 - 44032: 0x9AEE,\n\t49910 - 44032: 0xBDCD,\n\t49911 - 44032: 0x9AEF,\n\t49912 - 44032: 0xBDCE,\n\t49913 - 44032: 0xBDCF,\n\t49914 - 44032: 0x9AF0,\n\t49915 - 44032: 0xBDD0,\n\t49916 - 44032: 0xBDD1,\n\t49917 - 44032: 0x9AF1,\n\t49918 - 44032: 0x9AF2,\n\t49919 - 44032: 0x9AF3,\n\t49920 - 44032: 0xBDD2,\n\t49921 - 44032: 0x9AF4,\n\t49922 - 44032: 0x9AF5,\n\t49923 - 44032: 0x9AF6,\n\t49924 - 44032: 0x9AF7,\n\t49925 - 44032: 0x9AF8,\n\t49926 - 44032: 0x9AF9,\n\t49927 - 44032: 0x9AFA,\n\t49928 - 44032: 0xBDD3,\n\t49929 - 44032: 0xBDD4,\n\t49930 - 44032: 0x9AFB,\n\t49931 - 44032: 0x9AFC,\n\t49932 - 44032: 0xBDD5,\n\t49933 - 44032: 0xBDD6,\n\t49934 - 44032: 0x9AFD,\n\t49935 - 44032: 0x9AFE,\n\t49936 - 44032: 0x9B41,\n\t49937 - 44032: 0x9B42,\n\t49938 - 44032: 0x9B43,\n\t49939 - 44032: 0xBDD7,\n\t49940 - 44032: 0xBDD8,\n\t49941 - 44032: 0xBDD9,\n\t49942 - 44032: 0x9B44,\n\t49943 - 44032: 0x9B45,\n\t49944 - 44032: 0xBDDA,\n\t49945 - 44032: 0x9B46,\n\t49946 - 44032: 0x9B47,\n\t49947 - 44032: 0x9B48,\n\t49948 - 44032: 0xBDDB,\n\t49949 - 44032: 0x9B49,\n\t49950 - 44032: 0x9B4A,\n\t49951 - 44032: 0x9B4B,\n\t49952 - 44032: 0x9B4C,\n\t49953 - 44032: 0x9B4D,\n\t49954 - 44032: 0x9B4E,\n\t49955 - 44032: 0x9B4F,\n\t49956 - 44032: 0xBDDC,\n\t49957 - 44032: 0xBDDD,\n\t49958 - 44032: 0x9B50,\n\t49959 - 44032: 0x9B51,\n\t49960 - 44032: 0xBDDE,\n\t49961 - 44032: 0xBDDF,\n\t49962 - 44032: 0x9B52,\n\t49963 - 44032: 0x9B53,\n\t49964 - 44032: 0x9B54,\n\t49965 - 44032: 0x9B55,\n\t49966 - 44032: 0x9B56,\n\t49967 - 44032: 0x9B57,\n\t49968 - 44032: 0x9B58,\n\t49969 - 44032: 0x9B59,\n\t49970 - 44032: 0x9B5A,\n\t49971 - 44032: 0x9B61,\n\t49972 - 44032: 0x9B62,\n\t49973 - 44032: 0x9B63,\n\t49974 - 44032: 0x9B64,\n\t49975 - 44032: 0x9B65,\n\t49976 - 44032: 0x9B66,\n\t49977 - 44032: 0x9B67,\n\t49978 - 44032: 0x9B68,\n\t49979 - 44032: 0x9B69,\n\t49980 - 44032: 0x9B6A,\n\t49981 - 44032: 0x9B6B,\n\t49982 - 44032: 0x9B6C,\n\t49983 - 44032: 0x9B6D,\n\t49984 - 44032: 0x9B6E,\n\t49985 - 44032: 0x9B6F,\n\t49986 - 44032: 0x9B70,\n\t49987 - 44032: 0x9B71,\n\t49988 - 44032: 0x9B72,\n\t49989 - 44032: 0xBDE0,\n\t49990 - 44032: 0x9B73,\n\t49991 - 44032: 0x9B74,\n\t49992 - 44032: 0x9B75,\n\t49993 - 44032: 0x9B76,\n\t49994 - 44032: 0x9B77,\n\t49995 - 44032: 0x9B78,\n\t49996 - 44032: 0x9B79,\n\t49997 - 44032: 0x9B7A,\n\t49998 - 44032: 0x9B81,\n\t49999 - 44032: 0x9B82,\n\t50000 - 44032: 0x9B83,\n\t50001 - 44032: 0x9B84,\n\t50002 - 44032: 0x9B85,\n\t50003 - 44032: 0x9B86,\n\t50004 - 44032: 0x9B87,\n\t50005 - 44032: 0x9B88,\n\t50006 - 44032: 0x9B89,\n\t50007 - 44032: 0x9B8A,\n\t50008 - 44032: 0x9B8B,\n\t50009 - 44032: 0x9B8C,\n\t50010 - 44032: 0x9B8D,\n\t50011 - 44032: 0x9B8E,\n\t50012 - 44032: 0x9B8F,\n\t50013 - 44032: 0x9B90,\n\t50014 - 44032: 0x9B91,\n\t50015 - 44032: 0x9B92,\n\t50016 - 44032: 0x9B93,\n\t50017 - 44032: 0x9B94,\n\t50018 - 44032: 0x9B95,\n\t50019 - 44032: 0x9B96,\n\t50020 - 44032: 0x9B97,\n\t50021 - 44032: 0x9B98,\n\t50022 - 44032: 0x9B99,\n\t50023 - 44032: 0x9B9A,\n\t50024 - 44032: 0xBDE1,\n\t50025 - 44032: 0xBDE2,\n\t50026 - 44032: 0x9B9B,\n\t50027 - 44032: 0x9B9C,\n\t50028 - 44032: 0xBDE3,\n\t50029 - 44032: 0x9B9D,\n\t50030 - 44032: 0x9B9E,\n\t50031 - 44032: 0x9B9F,\n\t50032 - 44032: 0xBDE4,\n\t50033 - 44032: 0x9BA0,\n\t50034 - 44032: 0xBDE5,\n\t50035 - 44032: 0x9BA1,\n\t50036 - 44032: 0x9BA2,\n\t50037 - 44032: 0x9BA3,\n\t50038 - 44032: 0x9BA4,\n\t50039 - 44032: 0x9BA5,\n\t50040 - 44032: 0xBDE6,\n\t50041 - 44032: 0xBDE7,\n\t50042 - 44032: 0x9BA6,\n\t50043 - 44032: 0x9BA7,\n\t50044 - 44032: 0xBDE8,\n\t50045 - 44032: 0xBDE9,\n\t50046 - 44032: 0x9BA8,\n\t50047 - 44032: 0x9BA9,\n\t50048 - 44032: 0x9BAA,\n\t50049 - 44032: 0x9BAB,\n\t50050 - 44032: 0x9BAC,\n\t50051 - 44032: 0x9BAD,\n\t50052 - 44032: 0xBDEA,\n\t50053 - 44032: 0x9BAE,\n\t50054 - 44032: 0x9BAF,\n\t50055 - 44032: 0x9BB0,\n\t50056 - 44032: 0xBDEB,\n\t50057 - 44032: 0x9BB1,\n\t50058 - 44032: 0x9BB2,\n\t50059 - 44032: 0x9BB3,\n\t50060 - 44032: 0xBDEC,\n\t50061 - 44032: 0x9BB4,\n\t50062 - 44032: 0x9BB5,\n\t50063 - 44032: 0x9BB6,\n\t50064 - 44032: 0x9BB7,\n\t50065 - 44032: 0x9BB8,\n\t50066 - 44032: 0x9BB9,\n\t50067 - 44032: 0x9BBA,\n\t50068 - 44032: 0x9BBB,\n\t50069 - 44032: 0x9BBC,\n\t50070 - 44032: 0x9BBD,\n\t50071 - 44032: 0x9BBE,\n\t50072 - 44032: 0x9BBF,\n\t50073 - 44032: 0x9BC0,\n\t50074 - 44032: 0x9BC1,\n\t50075 - 44032: 0x9BC2,\n\t50076 - 44032: 0x9BC3,\n\t50077 - 44032: 0x9BC4,\n\t50078 - 44032: 0x9BC5,\n\t50079 - 44032: 0x9BC6,\n\t50080 - 44032: 0x9BC7,\n\t50081 - 44032: 0x9BC8,\n\t50082 - 44032: 0x9BC9,\n\t50083 - 44032: 0x9BCA,\n\t50084 - 44032: 0x9BCB,\n\t50085 - 44032: 0x9BCC,\n\t50086 - 44032: 0x9BCD,\n\t50087 - 44032: 0x9BCE,\n\t50088 - 44032: 0x9BCF,\n\t50089 - 44032: 0x9BD0,\n\t50090 - 44032: 0x9BD1,\n\t50091 - 44032: 0x9BD2,\n\t50092 - 44032: 0x9BD3,\n\t50093 - 44032: 0x9BD4,\n\t50094 - 44032: 0x9BD5,\n\t50095 - 44032: 0x9BD6,\n\t50096 - 44032: 0x9BD7,\n\t50097 - 44032: 0x9BD8,\n\t50098 - 44032: 0x9BD9,\n\t50099 - 44032: 0x9BDA,\n\t50100 - 44032: 0x9BDB,\n\t50101 - 44032: 0x9BDC,\n\t50102 - 44032: 0x9BDD,\n\t50103 - 44032: 0x9BDE,\n\t50104 - 44032: 0x9BDF,\n\t50105 - 44032: 0x9BE0,\n\t50106 - 44032: 0x9BE1,\n\t50107 - 44032: 0x9BE2,\n\t50108 - 44032: 0x9BE3,\n\t50109 - 44032: 0x9BE4,\n\t50110 - 44032: 0x9BE5,\n\t50111 - 44032: 0x9BE6,\n\t50112 - 44032: 0xBDED,\n\t50113 - 44032: 0x9BE7,\n\t50114 - 44032: 0x9BE8,\n\t50115 - 44032: 0x9BE9,\n\t50116 - 44032: 0x9BEA,\n\t50117 - 44032: 0x9BEB,\n\t50118 - 44032: 0x9BEC,\n\t50119 - 44032: 0x9BED,\n\t50120 - 44032: 0x9BEE,\n\t50121 - 44032: 0x9BEF,\n\t50122 - 44032: 0x9BF0,\n\t50123 - 44032: 0x9BF1,\n\t50124 - 44032: 0x9BF2,\n\t50125 - 44032: 0x9BF3,\n\t50126 - 44032: 0x9BF4,\n\t50127 - 44032: 0x9BF5,\n\t50128 - 44032: 0x9BF6,\n\t50129 - 44032: 0x9BF7,\n\t50130 - 44032: 0x9BF8,\n\t50131 - 44032: 0x9BF9,\n\t50132 - 44032: 0x9BFA,\n\t50133 - 44032: 0x9BFB,\n\t50134 - 44032: 0x9BFC,\n\t50135 - 44032: 0x9BFD,\n\t50136 - 44032: 0xBDEE,\n\t50137 - 44032: 0xBDEF,\n\t50138 - 44032: 0x9BFE,\n\t50139 - 44032: 0x9C41,\n\t50140 - 44032: 0xBDF0,\n\t50141 - 44032: 0x9C42,\n\t50142 - 44032: 0x9C43,\n\t50143 - 44032: 0xBDF1,\n\t50144 - 44032: 0xBDF2,\n\t50145 - 44032: 0x9C44,\n\t50146 - 44032: 0xBDF3,\n\t50147 - 44032: 0x9C45,\n\t50148 - 44032: 0x9C46,\n\t50149 - 44032: 0x9C47,\n\t50150 - 44032: 0x9C48,\n\t50151 - 44032: 0x9C49,\n\t50152 - 44032: 0xBDF4,\n\t50153 - 44032: 0xBDF5,\n\t50154 - 44032: 0x9C4A,\n\t50155 - 44032: 0x9C4B,\n\t50156 - 44032: 0x9C4C,\n\t50157 - 44032: 0xBDF6,\n\t50158 - 44032: 0x9C4D,\n\t50159 - 44032: 0x9C4E,\n\t50160 - 44032: 0x9C4F,\n\t50161 - 44032: 0x9C50,\n\t50162 - 44032: 0x9C51,\n\t50163 - 44032: 0x9C52,\n\t50164 - 44032: 0xBDF7,\n\t50165 - 44032: 0xBDF8,\n\t50166 - 44032: 0x9C53,\n\t50167 - 44032: 0x9C54,\n\t50168 - 44032: 0xBDF9,\n\t50169 - 44032: 0x9C55,\n\t50170 - 44032: 0x9C56,\n\t50171 - 44032: 0x9C57,\n\t50172 - 44032: 0x9C58,\n\t50173 - 44032: 0x9C59,\n\t50174 - 44032: 0x9C5A,\n\t50175 - 44032: 0x9C61,\n\t50176 - 44032: 0x9C62,\n\t50177 - 44032: 0x9C63,\n\t50178 - 44032: 0x9C64,\n\t50179 - 44032: 0x9C65,\n\t50180 - 44032: 0x9C66,\n\t50181 - 44032: 0x9C67,\n\t50182 - 44032: 0x9C68,\n\t50183 - 44032: 0x9C69,\n\t50184 - 44032: 0xBDFA,\n\t50185 - 44032: 0x9C6A,\n\t50186 - 44032: 0x9C6B,\n\t50187 - 44032: 0x9C6C,\n\t50188 - 44032: 0x9C6D,\n\t50189 - 44032: 0x9C6E,\n\t50190 - 44032: 0x9C6F,\n\t50191 - 44032: 0x9C70,\n\t50192 - 44032: 0xBDFB,\n\t50193 - 44032: 0x9C71,\n\t50194 - 44032: 0x9C72,\n\t50195 - 44032: 0x9C73,\n\t50196 - 44032: 0x9C74,\n\t50197 - 44032: 0x9C75,\n\t50198 - 44032: 0x9C76,\n\t50199 - 44032: 0x9C77,\n\t50200 - 44032: 0x9C78,\n\t50201 - 44032: 0x9C79,\n\t50202 - 44032: 0x9C7A,\n\t50203 - 44032: 0x9C81,\n\t50204 - 44032: 0x9C82,\n\t50205 - 44032: 0x9C83,\n\t50206 - 44032: 0x9C84,\n\t50207 - 44032: 0x9C85,\n\t50208 - 44032: 0x9C86,\n\t50209 - 44032: 0x9C87,\n\t50210 - 44032: 0x9C88,\n\t50211 - 44032: 0x9C89,\n\t50212 - 44032: 0xBDFC,\n\t50213 - 44032: 0x9C8A,\n\t50214 - 44032: 0x9C8B,\n\t50215 - 44032: 0x9C8C,\n\t50216 - 44032: 0x9C8D,\n\t50217 - 44032: 0x9C8E,\n\t50218 - 44032: 0x9C8F,\n\t50219 - 44032: 0x9C90,\n\t50220 - 44032: 0xBDFD,\n\t50221 - 44032: 0x9C91,\n\t50222 - 44032: 0x9C92,\n\t50223 - 44032: 0x9C93,\n\t50224 - 44032: 0xBDFE,\n\t50225 - 44032: 0x9C94,\n\t50226 - 44032: 0x9C95,\n\t50227 - 44032: 0x9C96,\n\t50228 - 44032: 0xBEA1,\n\t50229 - 44032: 0x9C97,\n\t50230 - 44032: 0x9C98,\n\t50231 - 44032: 0x9C99,\n\t50232 - 44032: 0x9C9A,\n\t50233 - 44032: 0x9C9B,\n\t50234 - 44032: 0x9C9C,\n\t50235 - 44032: 0x9C9D,\n\t50236 - 44032: 0xBEA2,\n\t50237 - 44032: 0xBEA3,\n\t50238 - 44032: 0x9C9E,\n\t50239 - 44032: 0x9C9F,\n\t50240 - 44032: 0x9CA0,\n\t50241 - 44032: 0x9CA1,\n\t50242 - 44032: 0x9CA2,\n\t50243 - 44032: 0x9CA3,\n\t50244 - 44032: 0x9CA4,\n\t50245 - 44032: 0x9CA5,\n\t50246 - 44032: 0x9CA6,\n\t50247 - 44032: 0x9CA7,\n\t50248 - 44032: 0xBEA4,\n\t50249 - 44032: 0x9CA8,\n\t50250 - 44032: 0x9CA9,\n\t50251 - 44032: 0x9CAA,\n\t50252 - 44032: 0x9CAB,\n\t50253 - 44032: 0x9CAC,\n\t50254 - 44032: 0x9CAD,\n\t50255 - 44032: 0x9CAE,\n\t50256 - 44032: 0x9CAF,\n\t50257 - 44032: 0x9CB0,\n\t50258 - 44032: 0x9CB1,\n\t50259 - 44032: 0x9CB2,\n\t50260 - 44032: 0x9CB3,\n\t50261 - 44032: 0x9CB4,\n\t50262 - 44032: 0x9CB5,\n\t50263 - 44032: 0x9CB6,\n\t50264 - 44032: 0x9CB7,\n\t50265 - 44032: 0x9CB8,\n\t50266 - 44032: 0x9CB9,\n\t50267 - 44032: 0x9CBA,\n\t50268 - 44032: 0x9CBB,\n\t50269 - 44032: 0x9CBC,\n\t50270 - 44032: 0x9CBD,\n\t50271 - 44032: 0x9CBE,\n\t50272 - 44032: 0x9CBF,\n\t50273 - 44032: 0x9CC0,\n\t50274 - 44032: 0x9CC1,\n\t50275 - 44032: 0x9CC2,\n\t50276 - 44032: 0xBEA5,\n\t50277 - 44032: 0xBEA6,\n\t50278 - 44032: 0x9CC3,\n\t50279 - 44032: 0x9CC4,\n\t50280 - 44032: 0xBEA7,\n\t50281 - 44032: 0x9CC5,\n\t50282 - 44032: 0x9CC6,\n\t50283 - 44032: 0x9CC7,\n\t50284 - 44032: 0xBEA8,\n\t50285 - 44032: 0x9CC8,\n\t50286 - 44032: 0x9CC9,\n\t50287 - 44032: 0x9CCA,\n\t50288 - 44032: 0x9CCB,\n\t50289 - 44032: 0x9CCC,\n\t50290 - 44032: 0x9CCD,\n\t50291 - 44032: 0x9CCE,\n\t50292 - 44032: 0xBEA9,\n\t50293 - 44032: 0xBEAA,\n\t50294 - 44032: 0x9CCF,\n\t50295 - 44032: 0x9CD0,\n\t50296 - 44032: 0x9CD1,\n\t50297 - 44032: 0xBEAB,\n\t50298 - 44032: 0x9CD2,\n\t50299 - 44032: 0x9CD3,\n\t50300 - 44032: 0x9CD4,\n\t50301 - 44032: 0x9CD5,\n\t50302 - 44032: 0x9CD6,\n\t50303 - 44032: 0x9CD7,\n\t50304 - 44032: 0xBEAC,\n\t50305 - 44032: 0x9CD8,\n\t50306 - 44032: 0x9CD9,\n\t50307 - 44032: 0x9CDA,\n\t50308 - 44032: 0x9CDB,\n\t50309 - 44032: 0x9CDC,\n\t50310 - 44032: 0x9CDD,\n\t50311 - 44032: 0x9CDE,\n\t50312 - 44032: 0x9CDF,\n\t50313 - 44032: 0x9CE0,\n\t50314 - 44032: 0x9CE1,\n\t50315 - 44032: 0x9CE2,\n\t50316 - 44032: 0x9CE3,\n\t50317 - 44032: 0x9CE4,\n\t50318 - 44032: 0x9CE5,\n\t50319 - 44032: 0x9CE6,\n\t50320 - 44032: 0x9CE7,\n\t50321 - 44032: 0x9CE8,\n\t50322 - 44032: 0x9CE9,\n\t50323 - 44032: 0x9CEA,\n\t50324 - 44032: 0xBEAD,\n\t50325 - 44032: 0x9CEB,\n\t50326 - 44032: 0x9CEC,\n\t50327 - 44032: 0x9CED,\n\t50328 - 44032: 0x9CEE,\n\t50329 - 44032: 0x9CEF,\n\t50330 - 44032: 0x9CF0,\n\t50331 - 44032: 0x9CF1,\n\t50332 - 44032: 0xBEAE,\n\t50333 - 44032: 0x9CF2,\n\t50334 - 44032: 0x9CF3,\n\t50335 - 44032: 0x9CF4,\n\t50336 - 44032: 0x9CF5,\n\t50337 - 44032: 0x9CF6,\n\t50338 - 44032: 0x9CF7,\n\t50339 - 44032: 0x9CF8,\n\t50340 - 44032: 0x9CF9,\n\t50341 - 44032: 0x9CFA,\n\t50342 - 44032: 0x9CFB,\n\t50343 - 44032: 0x9CFC,\n\t50344 - 44032: 0x9CFD,\n\t50345 - 44032: 0x9CFE,\n\t50346 - 44032: 0x9D41,\n\t50347 - 44032: 0x9D42,\n\t50348 - 44032: 0x9D43,\n\t50349 - 44032: 0x9D44,\n\t50350 - 44032: 0x9D45,\n\t50351 - 44032: 0x9D46,\n\t50352 - 44032: 0x9D47,\n\t50353 - 44032: 0x9D48,\n\t50354 - 44032: 0x9D49,\n\t50355 - 44032: 0x9D4A,\n\t50356 - 44032: 0x9D4B,\n\t50357 - 44032: 0x9D4C,\n\t50358 - 44032: 0x9D4D,\n\t50359 - 44032: 0x9D4E,\n\t50360 - 44032: 0xBEAF,\n\t50361 - 44032: 0x9D4F,\n\t50362 - 44032: 0x9D50,\n\t50363 - 44032: 0x9D51,\n\t50364 - 44032: 0xBEB0,\n\t50365 - 44032: 0x9D52,\n\t50366 - 44032: 0x9D53,\n\t50367 - 44032: 0x9D54,\n\t50368 - 44032: 0x9D55,\n\t50369 - 44032: 0x9D56,\n\t50370 - 44032: 0x9D57,\n\t50371 - 44032: 0x9D58,\n\t50372 - 44032: 0x9D59,\n\t50373 - 44032: 0x9D5A,\n\t50374 - 44032: 0x9D61,\n\t50375 - 44032: 0x9D62,\n\t50376 - 44032: 0x9D63,\n\t50377 - 44032: 0x9D64,\n\t50378 - 44032: 0x9D65,\n\t50379 - 44032: 0x9D66,\n\t50380 - 44032: 0x9D67,\n\t50381 - 44032: 0x9D68,\n\t50382 - 44032: 0x9D69,\n\t50383 - 44032: 0x9D6A,\n\t50384 - 44032: 0x9D6B,\n\t50385 - 44032: 0x9D6C,\n\t50386 - 44032: 0x9D6D,\n\t50387 - 44032: 0x9D6E,\n\t50388 - 44032: 0x9D6F,\n\t50389 - 44032: 0x9D70,\n\t50390 - 44032: 0x9D71,\n\t50391 - 44032: 0x9D72,\n\t50392 - 44032: 0x9D73,\n\t50393 - 44032: 0x9D74,\n\t50394 - 44032: 0x9D75,\n\t50395 - 44032: 0x9D76,\n\t50396 - 44032: 0x9D77,\n\t50397 - 44032: 0x9D78,\n\t50398 - 44032: 0x9D79,\n\t50399 - 44032: 0x9D7A,\n\t50400 - 44032: 0x9D81,\n\t50401 - 44032: 0x9D82,\n\t50402 - 44032: 0x9D83,\n\t50403 - 44032: 0x9D84,\n\t50404 - 44032: 0x9D85,\n\t50405 - 44032: 0x9D86,\n\t50406 - 44032: 0x9D87,\n\t50407 - 44032: 0x9D88,\n\t50408 - 44032: 0x9D89,\n\t50409 - 44032: 0xBEB1,\n\t50410 - 44032: 0x9D8A,\n\t50411 - 44032: 0x9D8B,\n\t50412 - 44032: 0x9D8C,\n\t50413 - 44032: 0x9D8D,\n\t50414 - 44032: 0x9D8E,\n\t50415 - 44032: 0x9D8F,\n\t50416 - 44032: 0xBEB2,\n\t50417 - 44032: 0xBEB3,\n\t50418 - 44032: 0x9D90,\n\t50419 - 44032: 0x9D91,\n\t50420 - 44032: 0xBEB4,\n\t50421 - 44032: 0x9D92,\n\t50422 - 44032: 0x9D93,\n\t50423 - 44032: 0x9D94,\n\t50424 - 44032: 0xBEB5,\n\t50425 - 44032: 0x9D95,\n\t50426 - 44032: 0xBEB6,\n\t50427 - 44032: 0x9D96,\n\t50428 - 44032: 0x9D97,\n\t50429 - 44032: 0x9D98,\n\t50430 - 44032: 0x9D99,\n\t50431 - 44032: 0xBEB7,\n\t50432 - 44032: 0xBEB8,\n\t50433 - 44032: 0xBEB9,\n\t50434 - 44032: 0x9D9A,\n\t50435 - 44032: 0x9D9B,\n\t50436 - 44032: 0x9D9C,\n\t50437 - 44032: 0x9D9D,\n\t50438 - 44032: 0x9D9E,\n\t50439 - 44032: 0x9D9F,\n\t50440 - 44032: 0x9DA0,\n\t50441 - 44032: 0x9DA1,\n\t50442 - 44032: 0x9DA2,\n\t50443 - 44032: 0x9DA3,\n\t50444 - 44032: 0xBEBA,\n\t50445 - 44032: 0x9DA4,\n\t50446 - 44032: 0x9DA5,\n\t50447 - 44032: 0x9DA6,\n\t50448 - 44032: 0xBEBB,\n\t50449 - 44032: 0x9DA7,\n\t50450 - 44032: 0x9DA8,\n\t50451 - 44032: 0x9DA9,\n\t50452 - 44032: 0xBEBC,\n\t50453 - 44032: 0x9DAA,\n\t50454 - 44032: 0x9DAB,\n\t50455 - 44032: 0x9DAC,\n\t50456 - 44032: 0x9DAD,\n\t50457 - 44032: 0x9DAE,\n\t50458 - 44032: 0x9DAF,\n\t50459 - 44032: 0x9DB0,\n\t50460 - 44032: 0xBEBD,\n\t50461 - 44032: 0x9DB1,\n\t50462 - 44032: 0x9DB2,\n\t50463 - 44032: 0x9DB3,\n\t50464 - 44032: 0x9DB4,\n\t50465 - 44032: 0x9DB5,\n\t50466 - 44032: 0x9DB6,\n\t50467 - 44032: 0x9DB7,\n\t50468 - 44032: 0x9DB8,\n\t50469 - 44032: 0x9DB9,\n\t50470 - 44032: 0x9DBA,\n\t50471 - 44032: 0x9DBB,\n\t50472 - 44032: 0xBEBE,\n\t50473 - 44032: 0xBEBF,\n\t50474 - 44032: 0x9DBC,\n\t50475 - 44032: 0x9DBD,\n\t50476 - 44032: 0xBEC0,\n\t50477 - 44032: 0x9DBE,\n\t50478 - 44032: 0x9DBF,\n\t50479 - 44032: 0x9DC0,\n\t50480 - 44032: 0xBEC1,\n\t50481 - 44032: 0x9DC1,\n\t50482 - 44032: 0x9DC2,\n\t50483 - 44032: 0x9DC3,\n\t50484 - 44032: 0x9DC4,\n\t50485 - 44032: 0x9DC5,\n\t50486 - 44032: 0x9DC6,\n\t50487 - 44032: 0x9DC7,\n\t50488 - 44032: 0xBEC2,\n\t50489 - 44032: 0xBEC3,\n\t50490 - 44032: 0x9DC8,\n\t50491 - 44032: 0xBEC4,\n\t50492 - 44032: 0x9DC9,\n\t50493 - 44032: 0xBEC5,\n\t50494 - 44032: 0x9DCA,\n\t50495 - 44032: 0x9DCB,\n\t50496 - 44032: 0x9DCC,\n\t50497 - 44032: 0x9DCD,\n\t50498 - 44032: 0x9DCE,\n\t50499 - 44032: 0x9DCF,\n\t50500 - 44032: 0xBEC6,\n\t50501 - 44032: 0xBEC7,\n\t50502 - 44032: 0x9DD0,\n\t50503 - 44032: 0x9DD1,\n\t50504 - 44032: 0xBEC8,\n\t50505 - 44032: 0xBEC9,\n\t50506 - 44032: 0xBECA,\n\t50507 - 44032: 0x9DD2,\n\t50508 - 44032: 0xBECB,\n\t50509 - 44032: 0xBECC,\n\t50510 - 44032: 0xBECD,\n\t50511 - 44032: 0x9DD3,\n\t50512 - 44032: 0x9DD4,\n\t50513 - 44032: 0x9DD5,\n\t50514 - 44032: 0x9DD6,\n\t50515 - 44032: 0xBECE,\n\t50516 - 44032: 0xBECF,\n\t50517 - 44032: 0xBED0,\n\t50518 - 44032: 0x9DD7,\n\t50519 - 44032: 0xBED1,\n\t50520 - 44032: 0xBED2,\n\t50521 - 44032: 0xBED3,\n\t50522 - 44032: 0x9DD8,\n\t50523 - 44032: 0x9DD9,\n\t50524 - 44032: 0x9DDA,\n\t50525 - 44032: 0xBED4,\n\t50526 - 44032: 0xBED5,\n\t50527 - 44032: 0x9DDB,\n\t50528 - 44032: 0xBED6,\n\t50529 - 44032: 0xBED7,\n\t50530 - 44032: 0x9DDC,\n\t50531 - 44032: 0x9DDD,\n\t50532 - 44032: 0xBED8,\n\t50533 - 44032: 0x9DDE,\n\t50534 - 44032: 0x9DDF,\n\t50535 - 44032: 0x9DE0,\n\t50536 - 44032: 0xBED9,\n\t50537 - 44032: 0x9DE1,\n\t50538 - 44032: 0x9DE2,\n\t50539 - 44032: 0x9DE3,\n\t50540 - 44032: 0x9DE4,\n\t50541 - 44032: 0x9DE5,\n\t50542 - 44032: 0x9DE6,\n\t50543 - 44032: 0x9DE7,\n\t50544 - 44032: 0xBEDA,\n\t50545 - 44032: 0xBEDB,\n\t50546 - 44032: 0x9DE8,\n\t50547 - 44032: 0xBEDC,\n\t50548 - 44032: 0xBEDD,\n\t50549 - 44032: 0xBEDE,\n\t50550 - 44032: 0x9DE9,\n\t50551 - 44032: 0x9DEA,\n\t50552 - 44032: 0x9DEB,\n\t50553 - 44032: 0x9DEC,\n\t50554 - 44032: 0x9DED,\n\t50555 - 44032: 0x9DEE,\n\t50556 - 44032: 0xBEDF,\n\t50557 - 44032: 0xBEE0,\n\t50558 - 44032: 0x9DEF,\n\t50559 - 44032: 0x9DF0,\n\t50560 - 44032: 0xBEE1,\n\t50561 - 44032: 0x9DF1,\n\t50562 - 44032: 0x9DF2,\n\t50563 - 44032: 0x9DF3,\n\t50564 - 44032: 0xBEE2,\n\t50565 - 44032: 0x9DF4,\n\t50566 - 44032: 0x9DF5,\n\t50567 - 44032: 0xBEE3,\n\t50568 - 44032: 0x9DF6,\n\t50569 - 44032: 0x9DF7,\n\t50570 - 44032: 0x9DF8,\n\t50571 - 44032: 0x9DF9,\n\t50572 - 44032: 0xBEE4,\n\t50573 - 44032: 0xBEE5,\n\t50574 - 44032: 0x9DFA,\n\t50575 - 44032: 0xBEE6,\n\t50576 - 44032: 0x9DFB,\n\t50577 - 44032: 0xBEE7,\n\t50578 - 44032: 0x9DFC,\n\t50579 - 44032: 0x9DFD,\n\t50580 - 44032: 0x9DFE,\n\t50581 - 44032: 0xBEE8,\n\t50582 - 44032: 0x9E41,\n\t50583 - 44032: 0xBEE9,\n\t50584 - 44032: 0xBEEA,\n\t50585 - 44032: 0x9E42,\n\t50586 - 44032: 0x9E43,\n\t50587 - 44032: 0x9E44,\n\t50588 - 44032: 0xBEEB,\n\t50589 - 44032: 0x9E45,\n\t50590 - 44032: 0x9E46,\n\t50591 - 44032: 0x9E47,\n\t50592 - 44032: 0xBEEC,\n\t50593 - 44032: 0x9E48,\n\t50594 - 44032: 0x9E49,\n\t50595 - 44032: 0x9E4A,\n\t50596 - 44032: 0x9E4B,\n\t50597 - 44032: 0x9E4C,\n\t50598 - 44032: 0x9E4D,\n\t50599 - 44032: 0x9E4E,\n\t50600 - 44032: 0x9E4F,\n\t50601 - 44032: 0xBEED,\n\t50602 - 44032: 0x9E50,\n\t50603 - 44032: 0x9E51,\n\t50604 - 44032: 0x9E52,\n\t50605 - 44032: 0x9E53,\n\t50606 - 44032: 0x9E54,\n\t50607 - 44032: 0x9E55,\n\t50608 - 44032: 0x9E56,\n\t50609 - 44032: 0x9E57,\n\t50610 - 44032: 0x9E58,\n\t50611 - 44032: 0x9E59,\n\t50612 - 44032: 0xBEEE,\n\t50613 - 44032: 0xBEEF,\n\t50614 - 44032: 0x9E5A,\n\t50615 - 44032: 0x9E61,\n\t50616 - 44032: 0xBEF0,\n\t50617 - 44032: 0xBEF1,\n\t50618 - 44032: 0x9E62,\n\t50619 - 44032: 0xBEF2,\n\t50620 - 44032: 0xBEF3,\n\t50621 - 44032: 0xBEF4,\n\t50622 - 44032: 0xBEF5,\n\t50623 - 44032: 0x9E63,\n\t50624 - 44032: 0x9E64,\n\t50625 - 44032: 0x9E65,\n\t50626 - 44032: 0x9E66,\n\t50627 - 44032: 0x9E67,\n\t50628 - 44032: 0xBEF6,\n\t50629 - 44032: 0xBEF7,\n\t50630 - 44032: 0xBEF8,\n\t50631 - 44032: 0xBEF9,\n\t50632 - 44032: 0xBEFA,\n\t50633 - 44032: 0xBEFB,\n\t50634 - 44032: 0xBEFC,\n\t50635 - 44032: 0x9E68,\n\t50636 - 44032: 0xBEFD,\n\t50637 - 44032: 0x9E69,\n\t50638 - 44032: 0xBEFE,\n\t50639 - 44032: 0x9E6A,\n\t50640 - 44032: 0xBFA1,\n\t50641 - 44032: 0xBFA2,\n\t50642 - 44032: 0x9E6B,\n\t50643 - 44032: 0x9E6C,\n\t50644 - 44032: 0xBFA3,\n\t50645 - 44032: 0x9E6D,\n\t50646 - 44032: 0x9E6E,\n\t50647 - 44032: 0x9E6F,\n\t50648 - 44032: 0xBFA4,\n\t50649 - 44032: 0x9E70,\n\t50650 - 44032: 0x9E71,\n\t50651 - 44032: 0x9E72,\n\t50652 - 44032: 0x9E73,\n\t50653 - 44032: 0x9E74,\n\t50654 - 44032: 0x9E75,\n\t50655 - 44032: 0x9E76,\n\t50656 - 44032: 0xBFA5,\n\t50657 - 44032: 0xBFA6,\n\t50658 - 44032: 0x9E77,\n\t50659 - 44032: 0xBFA7,\n\t50660 - 44032: 0x9E78,\n\t50661 - 44032: 0xBFA8,\n\t50662 - 44032: 0x9E79,\n\t50663 - 44032: 0x9E7A,\n\t50664 - 44032: 0x9E81,\n\t50665 - 44032: 0x9E82,\n\t50666 - 44032: 0x9E83,\n\t50667 - 44032: 0x9E84,\n\t50668 - 44032: 0xBFA9,\n\t50669 - 44032: 0xBFAA,\n\t50670 - 44032: 0xBFAB,\n\t50671 - 44032: 0x9E85,\n\t50672 - 44032: 0xBFAC,\n\t50673 - 44032: 0x9E86,\n\t50674 - 44032: 0x9E87,\n\t50675 - 44032: 0x9E88,\n\t50676 - 44032: 0xBFAD,\n\t50677 - 44032: 0x9E89,\n\t50678 - 44032: 0xBFAE,\n\t50679 - 44032: 0xBFAF,\n\t50680 - 44032: 0x9E8A,\n\t50681 - 44032: 0x9E8B,\n\t50682 - 44032: 0x9E8C,\n\t50683 - 44032: 0x9E8D,\n\t50684 - 44032: 0xBFB0,\n\t50685 - 44032: 0xBFB1,\n\t50686 - 44032: 0xBFB2,\n\t50687 - 44032: 0xBFB3,\n\t50688 - 44032: 0xBFB4,\n\t50689 - 44032: 0xBFB5,\n\t50690 - 44032: 0x9E8E,\n\t50691 - 44032: 0x9E8F,\n\t50692 - 44032: 0x9E90,\n\t50693 - 44032: 0xBFB6,\n\t50694 - 44032: 0xBFB7,\n\t50695 - 44032: 0xBFB8,\n\t50696 - 44032: 0xBFB9,\n\t50697 - 44032: 0x9E91,\n\t50698 - 44032: 0x9E92,\n\t50699 - 44032: 0x9E93,\n\t50700 - 44032: 0xBFBA,\n\t50701 - 44032: 0x9E94,\n\t50702 - 44032: 0x9E95,\n\t50703 - 44032: 0x9E96,\n\t50704 - 44032: 0xBFBB,\n\t50705 - 44032: 0x9E97,\n\t50706 - 44032: 0x9E98,\n\t50707 - 44032: 0x9E99,\n\t50708 - 44032: 0x9E9A,\n\t50709 - 44032: 0x9E9B,\n\t50710 - 44032: 0x9E9C,\n\t50711 - 44032: 0x9E9D,\n\t50712 - 44032: 0xBFBC,\n\t50713 - 44032: 0xBFBD,\n\t50714 - 44032: 0x9E9E,\n\t50715 - 44032: 0xBFBE,\n\t50716 - 44032: 0xBFBF,\n\t50717 - 44032: 0x9E9F,\n\t50718 - 44032: 0x9EA0,\n\t50719 - 44032: 0x9EA1,\n\t50720 - 44032: 0x9EA2,\n\t50721 - 44032: 0x9EA3,\n\t50722 - 44032: 0x9EA4,\n\t50723 - 44032: 0x9EA5,\n\t50724 - 44032: 0xBFC0,\n\t50725 - 44032: 0xBFC1,\n\t50726 - 44032: 0x9EA6,\n\t50727 - 44032: 0x9EA7,\n\t50728 - 44032: 0xBFC2,\n\t50729 - 44032: 0x9EA8,\n\t50730 - 44032: 0x9EA9,\n\t50731 - 44032: 0x9EAA,\n\t50732 - 44032: 0xBFC3,\n\t50733 - 44032: 0xBFC4,\n\t50734 - 44032: 0xBFC5,\n\t50735 - 44032: 0x9EAB,\n\t50736 - 44032: 0xBFC6,\n\t50737 - 44032: 0x9EAC,\n\t50738 - 44032: 0x9EAD,\n\t50739 - 44032: 0xBFC7,\n\t50740 - 44032: 0xBFC8,\n\t50741 - 44032: 0xBFC9,\n\t50742 - 44032: 0x9EAE,\n\t50743 - 44032: 0xBFCA,\n\t50744 - 44032: 0x9EAF,\n\t50745 - 44032: 0xBFCB,\n\t50746 - 44032: 0x9EB0,\n\t50747 - 44032: 0xBFCC,\n\t50748 - 44032: 0x9EB1,\n\t50749 - 44032: 0x9EB2,\n\t50750 - 44032: 0x9EB3,\n\t50751 - 44032: 0x9EB4,\n\t50752 - 44032: 0xBFCD,\n\t50753 - 44032: 0xBFCE,\n\t50754 - 44032: 0x9EB5,\n\t50755 - 44032: 0x9EB6,\n\t50756 - 44032: 0xBFCF,\n\t50757 - 44032: 0x9EB7,\n\t50758 - 44032: 0x9EB8,\n\t50759 - 44032: 0x9EB9,\n\t50760 - 44032: 0xBFD0,\n\t50761 - 44032: 0x9EBA,\n\t50762 - 44032: 0x9EBB,\n\t50763 - 44032: 0x9EBC,\n\t50764 - 44032: 0x9EBD,\n\t50765 - 44032: 0x9EBE,\n\t50766 - 44032: 0x9EBF,\n\t50767 - 44032: 0x9EC0,\n\t50768 - 44032: 0xBFD1,\n\t50769 - 44032: 0xBFD2,\n\t50770 - 44032: 0x9EC1,\n\t50771 - 44032: 0xBFD3,\n\t50772 - 44032: 0xBFD4,\n\t50773 - 44032: 0xBFD5,\n\t50774 - 44032: 0x9EC2,\n\t50775 - 44032: 0x9EC3,\n\t50776 - 44032: 0x9EC4,\n\t50777 - 44032: 0x9EC5,\n\t50778 - 44032: 0x9EC6,\n\t50779 - 44032: 0x9EC7,\n\t50780 - 44032: 0xBFD6,\n\t50781 - 44032: 0xBFD7,\n\t50782 - 44032: 0x9EC8,\n\t50783 - 44032: 0x9EC9,\n\t50784 - 44032: 0xBFD8,\n\t50785 - 44032: 0x9ECA,\n\t50786 - 44032: 0x9ECB,\n\t50787 - 44032: 0x9ECC,\n\t50788 - 44032: 0x9ECD,\n\t50789 - 44032: 0x9ECE,\n\t50790 - 44032: 0x9ECF,\n\t50791 - 44032: 0x9ED0,\n\t50792 - 44032: 0x9ED1,\n\t50793 - 44032: 0x9ED2,\n\t50794 - 44032: 0x9ED3,\n\t50795 - 44032: 0x9ED4,\n\t50796 - 44032: 0xBFD9,\n\t50797 - 44032: 0x9ED5,\n\t50798 - 44032: 0x9ED6,\n\t50799 - 44032: 0xBFDA,\n\t50800 - 44032: 0x9ED7,\n\t50801 - 44032: 0xBFDB,\n\t50802 - 44032: 0x9ED8,\n\t50803 - 44032: 0x9ED9,\n\t50804 - 44032: 0x9EDA,\n\t50805 - 44032: 0x9EDB,\n\t50806 - 44032: 0x9EDC,\n\t50807 - 44032: 0x9EDD,\n\t50808 - 44032: 0xBFDC,\n\t50809 - 44032: 0xBFDD,\n\t50810 - 44032: 0x9EDE,\n\t50811 - 44032: 0x9EDF,\n\t50812 - 44032: 0xBFDE,\n\t50813 - 44032: 0x9EE0,\n\t50814 - 44032: 0x9EE1,\n\t50815 - 44032: 0x9EE2,\n\t50816 - 44032: 0xBFDF,\n\t50817 - 44032: 0x9EE3,\n\t50818 - 44032: 0x9EE4,\n\t50819 - 44032: 0x9EE5,\n\t50820 - 44032: 0x9EE6,\n\t50821 - 44032: 0x9EE7,\n\t50822 - 44032: 0x9EE8,\n\t50823 - 44032: 0x9EE9,\n\t50824 - 44032: 0xBFE0,\n\t50825 - 44032: 0xBFE1,\n\t50826 - 44032: 0x9EEA,\n\t50827 - 44032: 0xBFE2,\n\t50828 - 44032: 0x9EEB,\n\t50829 - 44032: 0xBFE3,\n\t50830 - 44032: 0x9EEC,\n\t50831 - 44032: 0x9EED,\n\t50832 - 44032: 0x9EEE,\n\t50833 - 44032: 0x9EEF,\n\t50834 - 44032: 0x9EF0,\n\t50835 - 44032: 0x9EF1,\n\t50836 - 44032: 0xBFE4,\n\t50837 - 44032: 0xBFE5,\n\t50838 - 44032: 0x9EF2,\n\t50839 - 44032: 0x9EF3,\n\t50840 - 44032: 0xBFE6,\n\t50841 - 44032: 0x9EF4,\n\t50842 - 44032: 0x9EF5,\n\t50843 - 44032: 0x9EF6,\n\t50844 - 44032: 0xBFE7,\n\t50845 - 44032: 0x9EF7,\n\t50846 - 44032: 0x9EF8,\n\t50847 - 44032: 0x9EF9,\n\t50848 - 44032: 0x9EFA,\n\t50849 - 44032: 0x9EFB,\n\t50850 - 44032: 0x9EFC,\n\t50851 - 44032: 0x9EFD,\n\t50852 - 44032: 0xBFE8,\n\t50853 - 44032: 0xBFE9,\n\t50854 - 44032: 0x9EFE,\n\t50855 - 44032: 0xBFEA,\n\t50856 - 44032: 0x9F41,\n\t50857 - 44032: 0xBFEB,\n\t50858 - 44032: 0x9F42,\n\t50859 - 44032: 0x9F43,\n\t50860 - 44032: 0x9F44,\n\t50861 - 44032: 0x9F45,\n\t50862 - 44032: 0x9F46,\n\t50863 - 44032: 0x9F47,\n\t50864 - 44032: 0xBFEC,\n\t50865 - 44032: 0xBFED,\n\t50866 - 44032: 0x9F48,\n\t50867 - 44032: 0x9F49,\n\t50868 - 44032: 0xBFEE,\n\t50869 - 44032: 0x9F4A,\n\t50870 - 44032: 0x9F4B,\n\t50871 - 44032: 0x9F4C,\n\t50872 - 44032: 0xBFEF,\n\t50873 - 44032: 0xBFF0,\n\t50874 - 44032: 0xBFF1,\n\t50875 - 44032: 0x9F4D,\n\t50876 - 44032: 0x9F4E,\n\t50877 - 44032: 0x9F4F,\n\t50878 - 44032: 0x9F50,\n\t50879 - 44032: 0x9F51,\n\t50880 - 44032: 0xBFF2,\n\t50881 - 44032: 0xBFF3,\n\t50882 - 44032: 0x9F52,\n\t50883 - 44032: 0xBFF4,\n\t50884 - 44032: 0x9F53,\n\t50885 - 44032: 0xBFF5,\n\t50886 - 44032: 0x9F54,\n\t50887 - 44032: 0x9F55,\n\t50888 - 44032: 0x9F56,\n\t50889 - 44032: 0x9F57,\n\t50890 - 44032: 0x9F58,\n\t50891 - 44032: 0x9F59,\n\t50892 - 44032: 0xBFF6,\n\t50893 - 44032: 0xBFF7,\n\t50894 - 44032: 0x9F5A,\n\t50895 - 44032: 0x9F61,\n\t50896 - 44032: 0xBFF8,\n\t50897 - 44032: 0x9F62,\n\t50898 - 44032: 0x9F63,\n\t50899 - 44032: 0x9F64,\n\t50900 - 44032: 0xBFF9,\n\t50901 - 44032: 0x9F65,\n\t50902 - 44032: 0x9F66,\n\t50903 - 44032: 0x9F67,\n\t50904 - 44032: 0x9F68,\n\t50905 - 44032: 0x9F69,\n\t50906 - 44032: 0x9F6A,\n\t50907 - 44032: 0x9F6B,\n\t50908 - 44032: 0xBFFA,\n\t50909 - 44032: 0xBFFB,\n\t50910 - 44032: 0x9F6C,\n\t50911 - 44032: 0x9F6D,\n\t50912 - 44032: 0xBFFC,\n\t50913 - 44032: 0xBFFD,\n\t50914 - 44032: 0x9F6E,\n\t50915 - 44032: 0x9F6F,\n\t50916 - 44032: 0x9F70,\n\t50917 - 44032: 0x9F71,\n\t50918 - 44032: 0x9F72,\n\t50919 - 44032: 0x9F73,\n\t50920 - 44032: 0xBFFE,\n\t50921 - 44032: 0xC0A1,\n\t50922 - 44032: 0x9F74,\n\t50923 - 44032: 0x9F75,\n\t50924 - 44032: 0xC0A2,\n\t50925 - 44032: 0x9F76,\n\t50926 - 44032: 0x9F77,\n\t50927 - 44032: 0x9F78,\n\t50928 - 44032: 0xC0A3,\n\t50929 - 44032: 0x9F79,\n\t50930 - 44032: 0x9F7A,\n\t50931 - 44032: 0x9F81,\n\t50932 - 44032: 0x9F82,\n\t50933 - 44032: 0x9F83,\n\t50934 - 44032: 0x9F84,\n\t50935 - 44032: 0x9F85,\n\t50936 - 44032: 0xC0A4,\n\t50937 - 44032: 0xC0A5,\n\t50938 - 44032: 0x9F86,\n\t50939 - 44032: 0x9F87,\n\t50940 - 44032: 0x9F88,\n\t50941 - 44032: 0xC0A6,\n\t50942 - 44032: 0x9F89,\n\t50943 - 44032: 0x9F8A,\n\t50944 - 44032: 0x9F8B,\n\t50945 - 44032: 0x9F8C,\n\t50946 - 44032: 0x9F8D,\n\t50947 - 44032: 0x9F8E,\n\t50948 - 44032: 0xC0A7,\n\t50949 - 44032: 0xC0A8,\n\t50950 - 44032: 0x9F8F,\n\t50951 - 44032: 0x9F90,\n\t50952 - 44032: 0xC0A9,\n\t50953 - 44032: 0x9F91,\n\t50954 - 44032: 0x9F92,\n\t50955 - 44032: 0x9F93,\n\t50956 - 44032: 0xC0AA,\n\t50957 - 44032: 0x9F94,\n\t50958 - 44032: 0x9F95,\n\t50959 - 44032: 0x9F96,\n\t50960 - 44032: 0x9F97,\n\t50961 - 44032: 0x9F98,\n\t50962 - 44032: 0x9F99,\n\t50963 - 44032: 0x9F9A,\n\t50964 - 44032: 0xC0AB,\n\t50965 - 44032: 0xC0AC,\n\t50966 - 44032: 0x9F9B,\n\t50967 - 44032: 0xC0AD,\n\t50968 - 44032: 0x9F9C,\n\t50969 - 44032: 0xC0AE,\n\t50970 - 44032: 0x9F9D,\n\t50971 - 44032: 0x9F9E,\n\t50972 - 44032: 0x9F9F,\n\t50973 - 44032: 0x9FA0,\n\t50974 - 44032: 0x9FA1,\n\t50975 - 44032: 0x9FA2,\n\t50976 - 44032: 0xC0AF,\n\t50977 - 44032: 0xC0B0,\n\t50978 - 44032: 0x9FA3,\n\t50979 - 44032: 0x9FA4,\n\t50980 - 44032: 0xC0B1,\n\t50981 - 44032: 0x9FA5,\n\t50982 - 44032: 0x9FA6,\n\t50983 - 44032: 0x9FA7,\n\t50984 - 44032: 0xC0B2,\n\t50985 - 44032: 0x9FA8,\n\t50986 - 44032: 0x9FA9,\n\t50987 - 44032: 0x9FAA,\n\t50988 - 44032: 0x9FAB,\n\t50989 - 44032: 0x9FAC,\n\t50990 - 44032: 0x9FAD,\n\t50991 - 44032: 0x9FAE,\n\t50992 - 44032: 0xC0B3,\n\t50993 - 44032: 0xC0B4,\n\t50994 - 44032: 0x9FAF,\n\t50995 - 44032: 0xC0B5,\n\t50996 - 44032: 0x9FB0,\n\t50997 - 44032: 0xC0B6,\n\t50998 - 44032: 0x9FB1,\n\t50999 - 44032: 0xC0B7,\n\t51000 - 44032: 0x9FB2,\n\t51001 - 44032: 0x9FB3,\n\t51002 - 44032: 0x9FB4,\n\t51003 - 44032: 0x9FB5,\n\t51004 - 44032: 0xC0B8,\n\t51005 - 44032: 0xC0B9,\n\t51006 - 44032: 0x9FB6,\n\t51007 - 44032: 0x9FB7,\n\t51008 - 44032: 0xC0BA,\n\t51009 - 44032: 0x9FB8,\n\t51010 - 44032: 0x9FB9,\n\t51011 - 44032: 0x9FBA,\n\t51012 - 44032: 0xC0BB,\n\t51013 - 44032: 0x9FBB,\n\t51014 - 44032: 0x9FBC,\n\t51015 - 44032: 0x9FBD,\n\t51016 - 44032: 0x9FBE,\n\t51017 - 44032: 0x9FBF,\n\t51018 - 44032: 0xC0BC,\n\t51019 - 44032: 0x9FC0,\n\t51020 - 44032: 0xC0BD,\n\t51021 - 44032: 0xC0BE,\n\t51022 - 44032: 0x9FC1,\n\t51023 - 44032: 0xC0BF,\n\t51024 - 44032: 0x9FC2,\n\t51025 - 44032: 0xC0C0,\n\t51026 - 44032: 0xC0C1,\n\t51027 - 44032: 0xC0C2,\n\t51028 - 44032: 0xC0C3,\n\t51029 - 44032: 0xC0C4,\n\t51030 - 44032: 0xC0C5,\n\t51031 - 44032: 0xC0C6,\n\t51032 - 44032: 0xC0C7,\n\t51033 - 44032: 0x9FC3,\n\t51034 - 44032: 0x9FC4,\n\t51035 - 44032: 0x9FC5,\n\t51036 - 44032: 0xC0C8,\n\t51037 - 44032: 0x9FC6,\n\t51038 - 44032: 0x9FC7,\n\t51039 - 44032: 0x9FC8,\n\t51040 - 44032: 0xC0C9,\n\t51041 - 44032: 0x9FC9,\n\t51042 - 44032: 0x9FCA,\n\t51043 - 44032: 0x9FCB,\n\t51044 - 44032: 0x9FCC,\n\t51045 - 44032: 0x9FCD,\n\t51046 - 44032: 0x9FCE,\n\t51047 - 44032: 0x9FCF,\n\t51048 - 44032: 0xC0CA,\n\t51049 - 44032: 0x9FD0,\n\t51050 - 44032: 0x9FD1,\n\t51051 - 44032: 0xC0CB,\n\t51052 - 44032: 0x9FD2,\n\t51053 - 44032: 0x9FD3,\n\t51054 - 44032: 0x9FD4,\n\t51055 - 44032: 0x9FD5,\n\t51056 - 44032: 0x9FD6,\n\t51057 - 44032: 0x9FD7,\n\t51058 - 44032: 0x9FD8,\n\t51059 - 44032: 0x9FD9,\n\t51060 - 44032: 0xC0CC,\n\t51061 - 44032: 0xC0CD,\n\t51062 - 44032: 0x9FDA,\n\t51063 - 44032: 0x9FDB,\n\t51064 - 44032: 0xC0CE,\n\t51065 - 44032: 0x9FDC,\n\t51066 - 44032: 0x9FDD,\n\t51067 - 44032: 0x9FDE,\n\t51068 - 44032: 0xC0CF,\n\t51069 - 44032: 0xC0D0,\n\t51070 - 44032: 0xC0D1,\n\t51071 - 44032: 0x9FDF,\n\t51072 - 44032: 0x9FE0,\n\t51073 - 44032: 0x9FE1,\n\t51074 - 44032: 0x9FE2,\n\t51075 - 44032: 0xC0D2,\n\t51076 - 44032: 0xC0D3,\n\t51077 - 44032: 0xC0D4,\n\t51078 - 44032: 0x9FE3,\n\t51079 - 44032: 0xC0D5,\n\t51080 - 44032: 0xC0D6,\n\t51081 - 44032: 0xC0D7,\n\t51082 - 44032: 0xC0D8,\n\t51083 - 44032: 0x9FE4,\n\t51084 - 44032: 0x9FE5,\n\t51085 - 44032: 0x9FE6,\n\t51086 - 44032: 0xC0D9,\n\t51087 - 44032: 0x9FE7,\n\t51088 - 44032: 0xC0DA,\n\t51089 - 44032: 0xC0DB,\n\t51090 - 44032: 0x9FE8,\n\t51091 - 44032: 0x9FE9,\n\t51092 - 44032: 0xC0DC,\n\t51093 - 44032: 0x9FEA,\n\t51094 - 44032: 0xC0DD,\n\t51095 - 44032: 0xC0DE,\n\t51096 - 44032: 0xC0DF,\n\t51097 - 44032: 0x9FEB,\n\t51098 - 44032: 0xC0E0,\n\t51099 - 44032: 0x9FEC,\n\t51100 - 44032: 0x9FED,\n\t51101 - 44032: 0x9FEE,\n\t51102 - 44032: 0x9FEF,\n\t51103 - 44032: 0x9FF0,\n\t51104 - 44032: 0xC0E1,\n\t51105 - 44032: 0xC0E2,\n\t51106 - 44032: 0x9FF1,\n\t51107 - 44032: 0xC0E3,\n\t51108 - 44032: 0xC0E4,\n\t51109 - 44032: 0xC0E5,\n\t51110 - 44032: 0xC0E6,\n\t51111 - 44032: 0x9FF2,\n\t51112 - 44032: 0x9FF3,\n\t51113 - 44032: 0x9FF4,\n\t51114 - 44032: 0x9FF5,\n\t51115 - 44032: 0x9FF6,\n\t51116 - 44032: 0xC0E7,\n\t51117 - 44032: 0xC0E8,\n\t51118 - 44032: 0x9FF7,\n\t51119 - 44032: 0x9FF8,\n\t51120 - 44032: 0xC0E9,\n\t51121 - 44032: 0x9FF9,\n\t51122 - 44032: 0x9FFA,\n\t51123 - 44032: 0x9FFB,\n\t51124 - 44032: 0xC0EA,\n\t51125 - 44032: 0x9FFC,\n\t51126 - 44032: 0x9FFD,\n\t51127 - 44032: 0x9FFE,\n\t51128 - 44032: 0xA041,\n\t51129 - 44032: 0xA042,\n\t51130 - 44032: 0xA043,\n\t51131 - 44032: 0xA044,\n\t51132 - 44032: 0xC0EB,\n\t51133 - 44032: 0xC0EC,\n\t51134 - 44032: 0xA045,\n\t51135 - 44032: 0xC0ED,\n\t51136 - 44032: 0xC0EE,\n\t51137 - 44032: 0xC0EF,\n\t51138 - 44032: 0xA046,\n\t51139 - 44032: 0xA047,\n\t51140 - 44032: 0xA048,\n\t51141 - 44032: 0xA049,\n\t51142 - 44032: 0xA04A,\n\t51143 - 44032: 0xA04B,\n\t51144 - 44032: 0xC0F0,\n\t51145 - 44032: 0xC0F1,\n\t51146 - 44032: 0xA04C,\n\t51147 - 44032: 0xA04D,\n\t51148 - 44032: 0xC0F2,\n\t51149 - 44032: 0xA04E,\n\t51150 - 44032: 0xC0F3,\n\t51151 - 44032: 0xA04F,\n\t51152 - 44032: 0xC0F4,\n\t51153 - 44032: 0xA050,\n\t51154 - 44032: 0xA051,\n\t51155 - 44032: 0xA052,\n\t51156 - 44032: 0xA053,\n\t51157 - 44032: 0xA054,\n\t51158 - 44032: 0xA055,\n\t51159 - 44032: 0xA056,\n\t51160 - 44032: 0xC0F5,\n\t51161 - 44032: 0xA057,\n\t51162 - 44032: 0xA058,\n\t51163 - 44032: 0xA059,\n\t51164 - 44032: 0xA05A,\n\t51165 - 44032: 0xC0F6,\n\t51166 - 44032: 0xA061,\n\t51167 - 44032: 0xA062,\n\t51168 - 44032: 0xA063,\n\t51169 - 44032: 0xA064,\n\t51170 - 44032: 0xA065,\n\t51171 - 44032: 0xA066,\n\t51172 - 44032: 0xC0F7,\n\t51173 - 44032: 0xA067,\n\t51174 - 44032: 0xA068,\n\t51175 - 44032: 0xA069,\n\t51176 - 44032: 0xC0F8,\n\t51177 - 44032: 0xA06A,\n\t51178 - 44032: 0xA06B,\n\t51179 - 44032: 0xA06C,\n\t51180 - 44032: 0xC0F9,\n\t51181 - 44032: 0xA06D,\n\t51182 - 44032: 0xA06E,\n\t51183 - 44032: 0xA06F,\n\t51184 - 44032: 0xA070,\n\t51185 - 44032: 0xA071,\n\t51186 - 44032: 0xA072,\n\t51187 - 44032: 0xA073,\n\t51188 - 44032: 0xA074,\n\t51189 - 44032: 0xA075,\n\t51190 - 44032: 0xA076,\n\t51191 - 44032: 0xA077,\n\t51192 - 44032: 0xA078,\n\t51193 - 44032: 0xA079,\n\t51194 - 44032: 0xA07A,\n\t51195 - 44032: 0xA081,\n\t51196 - 44032: 0xA082,\n\t51197 - 44032: 0xA083,\n\t51198 - 44032: 0xA084,\n\t51199 - 44032: 0xA085,\n\t51200 - 44032: 0xC0FA,\n\t51201 - 44032: 0xC0FB,\n\t51202 - 44032: 0xA086,\n\t51203 - 44032: 0xA087,\n\t51204 - 44032: 0xC0FC,\n\t51205 - 44032: 0xA088,\n\t51206 - 44032: 0xA089,\n\t51207 - 44032: 0xA08A,\n\t51208 - 44032: 0xC0FD,\n\t51209 - 44032: 0xA08B,\n\t51210 - 44032: 0xC0FE,\n\t51211 - 44032: 0xA08C,\n\t51212 - 44032: 0xA08D,\n\t51213 - 44032: 0xA08E,\n\t51214 - 44032: 0xA08F,\n\t51215 - 44032: 0xA090,\n\t51216 - 44032: 0xC1A1,\n\t51217 - 44032: 0xC1A2,\n\t51218 - 44032: 0xA091,\n\t51219 - 44032: 0xC1A3,\n\t51220 - 44032: 0xA092,\n\t51221 - 44032: 0xC1A4,\n\t51222 - 44032: 0xC1A5,\n\t51223 - 44032: 0xA093,\n\t51224 - 44032: 0xA094,\n\t51225 - 44032: 0xA095,\n\t51226 - 44032: 0xA096,\n\t51227 - 44032: 0xA097,\n\t51228 - 44032: 0xC1A6,\n\t51229 - 44032: 0xC1A7,\n\t51230 - 44032: 0xA098,\n\t51231 - 44032: 0xA099,\n\t51232 - 44032: 0xC1A8,\n\t51233 - 44032: 0xA09A,\n\t51234 - 44032: 0xA09B,\n\t51235 - 44032: 0xA09C,\n\t51236 - 44032: 0xC1A9,\n\t51237 - 44032: 0xA09D,\n\t51238 - 44032: 0xA09E,\n\t51239 - 44032: 0xA09F,\n\t51240 - 44032: 0xA0A0,\n\t51241 - 44032: 0xA0A1,\n\t51242 - 44032: 0xA0A2,\n\t51243 - 44032: 0xA0A3,\n\t51244 - 44032: 0xC1AA,\n\t51245 - 44032: 0xC1AB,\n\t51246 - 44032: 0xA0A4,\n\t51247 - 44032: 0xC1AC,\n\t51248 - 44032: 0xA0A5,\n\t51249 - 44032: 0xC1AD,\n\t51250 - 44032: 0xA0A6,\n\t51251 - 44032: 0xA0A7,\n\t51252 - 44032: 0xA0A8,\n\t51253 - 44032: 0xA0A9,\n\t51254 - 44032: 0xA0AA,\n\t51255 - 44032: 0xA0AB,\n\t51256 - 44032: 0xC1AE,\n\t51257 - 44032: 0xA0AC,\n\t51258 - 44032: 0xA0AD,\n\t51259 - 44032: 0xA0AE,\n\t51260 - 44032: 0xC1AF,\n\t51261 - 44032: 0xA0AF,\n\t51262 - 44032: 0xA0B0,\n\t51263 - 44032: 0xA0B1,\n\t51264 - 44032: 0xC1B0,\n\t51265 - 44032: 0xA0B2,\n\t51266 - 44032: 0xA0B3,\n\t51267 - 44032: 0xA0B4,\n\t51268 - 44032: 0xA0B5,\n\t51269 - 44032: 0xA0B6,\n\t51270 - 44032: 0xA0B7,\n\t51271 - 44032: 0xA0B8,\n\t51272 - 44032: 0xC1B1,\n\t51273 - 44032: 0xC1B2,\n\t51274 - 44032: 0xA0B9,\n\t51275 - 44032: 0xA0BA,\n\t51276 - 44032: 0xC1B3,\n\t51277 - 44032: 0xC1B4,\n\t51278 - 44032: 0xA0BB,\n\t51279 - 44032: 0xA0BC,\n\t51280 - 44032: 0xA0BD,\n\t51281 - 44032: 0xA0BE,\n\t51282 - 44032: 0xA0BF,\n\t51283 - 44032: 0xA0C0,\n\t51284 - 44032: 0xC1B5,\n\t51285 - 44032: 0xA0C1,\n\t51286 - 44032: 0xA0C2,\n\t51287 - 44032: 0xA0C3,\n\t51288 - 44032: 0xA0C4,\n\t51289 - 44032: 0xA0C5,\n\t51290 - 44032: 0xA0C6,\n\t51291 - 44032: 0xA0C7,\n\t51292 - 44032: 0xA0C8,\n\t51293 - 44032: 0xA0C9,\n\t51294 - 44032: 0xA0CA,\n\t51295 - 44032: 0xA0CB,\n\t51296 - 44032: 0xA0CC,\n\t51297 - 44032: 0xA0CD,\n\t51298 - 44032: 0xA0CE,\n\t51299 - 44032: 0xA0CF,\n\t51300 - 44032: 0xA0D0,\n\t51301 - 44032: 0xA0D1,\n\t51302 - 44032: 0xA0D2,\n\t51303 - 44032: 0xA0D3,\n\t51304 - 44032: 0xA0D4,\n\t51305 - 44032: 0xA0D5,\n\t51306 - 44032: 0xA0D6,\n\t51307 - 44032: 0xA0D7,\n\t51308 - 44032: 0xA0D8,\n\t51309 - 44032: 0xA0D9,\n\t51310 - 44032: 0xA0DA,\n\t51311 - 44032: 0xA0DB,\n\t51312 - 44032: 0xC1B6,\n\t51313 - 44032: 0xC1B7,\n\t51314 - 44032: 0xA0DC,\n\t51315 - 44032: 0xA0DD,\n\t51316 - 44032: 0xC1B8,\n\t51317 - 44032: 0xA0DE,\n\t51318 - 44032: 0xA0DF,\n\t51319 - 44032: 0xA0E0,\n\t51320 - 44032: 0xC1B9,\n\t51321 - 44032: 0xA0E1,\n\t51322 - 44032: 0xC1BA,\n\t51323 - 44032: 0xA0E2,\n\t51324 - 44032: 0xA0E3,\n\t51325 - 44032: 0xA0E4,\n\t51326 - 44032: 0xA0E5,\n\t51327 - 44032: 0xA0E6,\n\t51328 - 44032: 0xC1BB,\n\t51329 - 44032: 0xC1BC,\n\t51330 - 44032: 0xA0E7,\n\t51331 - 44032: 0xC1BD,\n\t51332 - 44032: 0xA0E8,\n\t51333 - 44032: 0xC1BE,\n\t51334 - 44032: 0xC1BF,\n\t51335 - 44032: 0xC1C0,\n\t51336 - 44032: 0xA0E9,\n\t51337 - 44032: 0xA0EA,\n\t51338 - 44032: 0xA0EB,\n\t51339 - 44032: 0xC1C1,\n\t51340 - 44032: 0xC1C2,\n\t51341 - 44032: 0xC1C3,\n\t51342 - 44032: 0xA0EC,\n\t51343 - 44032: 0xA0ED,\n\t51344 - 44032: 0xA0EE,\n\t51345 - 44032: 0xA0EF,\n\t51346 - 44032: 0xA0F0,\n\t51347 - 44032: 0xA0F1,\n\t51348 - 44032: 0xC1C4,\n\t51349 - 44032: 0xA0F2,\n\t51350 - 44032: 0xA0F3,\n\t51351 - 44032: 0xA0F4,\n\t51352 - 44032: 0xA0F5,\n\t51353 - 44032: 0xA0F6,\n\t51354 - 44032: 0xA0F7,\n\t51355 - 44032: 0xA0F8,\n\t51356 - 44032: 0xA0F9,\n\t51357 - 44032: 0xC1C5,\n\t51358 - 44032: 0xA0FA,\n\t51359 - 44032: 0xC1C6,\n\t51360 - 44032: 0xA0FB,\n\t51361 - 44032: 0xC1C7,\n\t51362 - 44032: 0xA0FC,\n\t51363 - 44032: 0xA0FD,\n\t51364 - 44032: 0xA0FE,\n\t51365 - 44032: 0xA141,\n\t51366 - 44032: 0xA142,\n\t51367 - 44032: 0xA143,\n\t51368 - 44032: 0xC1C8,\n\t51369 - 44032: 0xA144,\n\t51370 - 44032: 0xA145,\n\t51371 - 44032: 0xA146,\n\t51372 - 44032: 0xA147,\n\t51373 - 44032: 0xA148,\n\t51374 - 44032: 0xA149,\n\t51375 - 44032: 0xA14A,\n\t51376 - 44032: 0xA14B,\n\t51377 - 44032: 0xA14C,\n\t51378 - 44032: 0xA14D,\n\t51379 - 44032: 0xA14E,\n\t51380 - 44032: 0xA14F,\n\t51381 - 44032: 0xA150,\n\t51382 - 44032: 0xA151,\n\t51383 - 44032: 0xA152,\n\t51384 - 44032: 0xA153,\n\t51385 - 44032: 0xA154,\n\t51386 - 44032: 0xA155,\n\t51387 - 44032: 0xA156,\n\t51388 - 44032: 0xC1C9,\n\t51389 - 44032: 0xC1CA,\n\t51390 - 44032: 0xA157,\n\t51391 - 44032: 0xA158,\n\t51392 - 44032: 0xA159,\n\t51393 - 44032: 0xA15A,\n\t51394 - 44032: 0xA161,\n\t51395 - 44032: 0xA162,\n\t51396 - 44032: 0xC1CB,\n\t51397 - 44032: 0xA163,\n\t51398 - 44032: 0xA164,\n\t51399 - 44032: 0xA165,\n\t51400 - 44032: 0xC1CC,\n\t51401 - 44032: 0xA166,\n\t51402 - 44032: 0xA167,\n\t51403 - 44032: 0xA168,\n\t51404 - 44032: 0xC1CD,\n\t51405 - 44032: 0xA169,\n\t51406 - 44032: 0xA16A,\n\t51407 - 44032: 0xA16B,\n\t51408 - 44032: 0xA16C,\n\t51409 - 44032: 0xA16D,\n\t51410 - 44032: 0xA16E,\n\t51411 - 44032: 0xA16F,\n\t51412 - 44032: 0xC1CE,\n\t51413 - 44032: 0xC1CF,\n\t51414 - 44032: 0xA170,\n\t51415 - 44032: 0xC1D0,\n\t51416 - 44032: 0xA171,\n\t51417 - 44032: 0xC1D1,\n\t51418 - 44032: 0xA172,\n\t51419 - 44032: 0xA173,\n\t51420 - 44032: 0xA174,\n\t51421 - 44032: 0xA175,\n\t51422 - 44032: 0xA176,\n\t51423 - 44032: 0xA177,\n\t51424 - 44032: 0xC1D2,\n\t51425 - 44032: 0xC1D3,\n\t51426 - 44032: 0xA178,\n\t51427 - 44032: 0xA179,\n\t51428 - 44032: 0xC1D4,\n\t51429 - 44032: 0xA17A,\n\t51430 - 44032: 0xA181,\n\t51431 - 44032: 0xA182,\n\t51432 - 44032: 0xA183,\n\t51433 - 44032: 0xA184,\n\t51434 - 44032: 0xA185,\n\t51435 - 44032: 0xA186,\n\t51436 - 44032: 0xA187,\n\t51437 - 44032: 0xA188,\n\t51438 - 44032: 0xA189,\n\t51439 - 44032: 0xA18A,\n\t51440 - 44032: 0xA18B,\n\t51441 - 44032: 0xA18C,\n\t51442 - 44032: 0xA18D,\n\t51443 - 44032: 0xA18E,\n\t51444 - 44032: 0xA18F,\n\t51445 - 44032: 0xC1D5,\n\t51446 - 44032: 0xA190,\n\t51447 - 44032: 0xA191,\n\t51448 - 44032: 0xA192,\n\t51449 - 44032: 0xA193,\n\t51450 - 44032: 0xA194,\n\t51451 - 44032: 0xA195,\n\t51452 - 44032: 0xC1D6,\n\t51453 - 44032: 0xC1D7,\n\t51454 - 44032: 0xA196,\n\t51455 - 44032: 0xA197,\n\t51456 - 44032: 0xC1D8,\n\t51457 - 44032: 0xA198,\n\t51458 - 44032: 0xA199,\n\t51459 - 44032: 0xA19A,\n\t51460 - 44032: 0xC1D9,\n\t51461 - 44032: 0xC1DA,\n\t51462 - 44032: 0xC1DB,\n\t51463 - 44032: 0xA19B,\n\t51464 - 44032: 0xA19C,\n\t51465 - 44032: 0xA19D,\n\t51466 - 44032: 0xA19E,\n\t51467 - 44032: 0xA19F,\n\t51468 - 44032: 0xC1DC,\n\t51469 - 44032: 0xC1DD,\n\t51470 - 44032: 0xA1A0,\n\t51471 - 44032: 0xC1DE,\n\t51472 - 44032: 0xA241,\n\t51473 - 44032: 0xC1DF,\n\t51474 - 44032: 0xA242,\n\t51475 - 44032: 0xA243,\n\t51476 - 44032: 0xA244,\n\t51477 - 44032: 0xA245,\n\t51478 - 44032: 0xA246,\n\t51479 - 44032: 0xA247,\n\t51480 - 44032: 0xC1E0,\n\t51481 - 44032: 0xA248,\n\t51482 - 44032: 0xA249,\n\t51483 - 44032: 0xA24A,\n\t51484 - 44032: 0xA24B,\n\t51485 - 44032: 0xA24C,\n\t51486 - 44032: 0xA24D,\n\t51487 - 44032: 0xA24E,\n\t51488 - 44032: 0xA24F,\n\t51489 - 44032: 0xA250,\n\t51490 - 44032: 0xA251,\n\t51491 - 44032: 0xA252,\n\t51492 - 44032: 0xA253,\n\t51493 - 44032: 0xA254,\n\t51494 - 44032: 0xA255,\n\t51495 - 44032: 0xA256,\n\t51496 - 44032: 0xA257,\n\t51497 - 44032: 0xA258,\n\t51498 - 44032: 0xA259,\n\t51499 - 44032: 0xA25A,\n\t51500 - 44032: 0xC1E1,\n\t51501 - 44032: 0xA261,\n\t51502 - 44032: 0xA262,\n\t51503 - 44032: 0xA263,\n\t51504 - 44032: 0xA264,\n\t51505 - 44032: 0xA265,\n\t51506 - 44032: 0xA266,\n\t51507 - 44032: 0xA267,\n\t51508 - 44032: 0xC1E2,\n\t51509 - 44032: 0xA268,\n\t51510 - 44032: 0xA269,\n\t51511 - 44032: 0xA26A,\n\t51512 - 44032: 0xA26B,\n\t51513 - 44032: 0xA26C,\n\t51514 - 44032: 0xA26D,\n\t51515 - 44032: 0xA26E,\n\t51516 - 44032: 0xA26F,\n\t51517 - 44032: 0xA270,\n\t51518 - 44032: 0xA271,\n\t51519 - 44032: 0xA272,\n\t51520 - 44032: 0xA273,\n\t51521 - 44032: 0xA274,\n\t51522 - 44032: 0xA275,\n\t51523 - 44032: 0xA276,\n\t51524 - 44032: 0xA277,\n\t51525 - 44032: 0xA278,\n\t51526 - 44032: 0xA279,\n\t51527 - 44032: 0xA27A,\n\t51528 - 44032: 0xA281,\n\t51529 - 44032: 0xA282,\n\t51530 - 44032: 0xA283,\n\t51531 - 44032: 0xA284,\n\t51532 - 44032: 0xA285,\n\t51533 - 44032: 0xA286,\n\t51534 - 44032: 0xA287,\n\t51535 - 44032: 0xA288,\n\t51536 - 44032: 0xC1E3,\n\t51537 - 44032: 0xC1E4,\n\t51538 - 44032: 0xA289,\n\t51539 - 44032: 0xA28A,\n\t51540 - 44032: 0xC1E5,\n\t51541 - 44032: 0xA28B,\n\t51542 - 44032: 0xA28C,\n\t51543 - 44032: 0xA28D,\n\t51544 - 44032: 0xC1E6,\n\t51545 - 44032: 0xA28E,\n\t51546 - 44032: 0xA28F,\n\t51547 - 44032: 0xA290,\n\t51548 - 44032: 0xA291,\n\t51549 - 44032: 0xA292,\n\t51550 - 44032: 0xA293,\n\t51551 - 44032: 0xA294,\n\t51552 - 44032: 0xC1E7,\n\t51553 - 44032: 0xC1E8,\n\t51554 - 44032: 0xA295,\n\t51555 - 44032: 0xC1E9,\n\t51556 - 44032: 0xA296,\n\t51557 - 44032: 0xA297,\n\t51558 - 44032: 0xA298,\n\t51559 - 44032: 0xA299,\n\t51560 - 44032: 0xA29A,\n\t51561 - 44032: 0xA29B,\n\t51562 - 44032: 0xA29C,\n\t51563 - 44032: 0xA29D,\n\t51564 - 44032: 0xC1EA,\n\t51565 - 44032: 0xA29E,\n\t51566 - 44032: 0xA29F,\n\t51567 - 44032: 0xA2A0,\n\t51568 - 44032: 0xC1EB,\n\t51569 - 44032: 0xA341,\n\t51570 - 44032: 0xA342,\n\t51571 - 44032: 0xA343,\n\t51572 - 44032: 0xC1EC,\n\t51573 - 44032: 0xA344,\n\t51574 - 44032: 0xA345,\n\t51575 - 44032: 0xA346,\n\t51576 - 44032: 0xA347,\n\t51577 - 44032: 0xA348,\n\t51578 - 44032: 0xA349,\n\t51579 - 44032: 0xA34A,\n\t51580 - 44032: 0xC1ED,\n\t51581 - 44032: 0xA34B,\n\t51582 - 44032: 0xA34C,\n\t51583 - 44032: 0xA34D,\n\t51584 - 44032: 0xA34E,\n\t51585 - 44032: 0xA34F,\n\t51586 - 44032: 0xA350,\n\t51587 - 44032: 0xA351,\n\t51588 - 44032: 0xA352,\n\t51589 - 44032: 0xA353,\n\t51590 - 44032: 0xA354,\n\t51591 - 44032: 0xA355,\n\t51592 - 44032: 0xC1EE,\n\t51593 - 44032: 0xC1EF,\n\t51594 - 44032: 0xA356,\n\t51595 - 44032: 0xA357,\n\t51596 - 44032: 0xC1F0,\n\t51597 - 44032: 0xA358,\n\t51598 - 44032: 0xA359,\n\t51599 - 44032: 0xA35A,\n\t51600 - 44032: 0xC1F1,\n\t51601 - 44032: 0xA361,\n\t51602 - 44032: 0xA362,\n\t51603 - 44032: 0xA363,\n\t51604 - 44032: 0xA364,\n\t51605 - 44032: 0xA365,\n\t51606 - 44032: 0xA366,\n\t51607 - 44032: 0xA367,\n\t51608 - 44032: 0xC1F2,\n\t51609 - 44032: 0xC1F3,\n\t51610 - 44032: 0xA368,\n\t51611 - 44032: 0xC1F4,\n\t51612 - 44032: 0xA369,\n\t51613 - 44032: 0xC1F5,\n\t51614 - 44032: 0xA36A,\n\t51615 - 44032: 0xA36B,\n\t51616 - 44032: 0xA36C,\n\t51617 - 44032: 0xA36D,\n\t51618 - 44032: 0xA36E,\n\t51619 - 44032: 0xA36F,\n\t51620 - 44032: 0xA370,\n\t51621 - 44032: 0xA371,\n\t51622 - 44032: 0xA372,\n\t51623 - 44032: 0xA373,\n\t51624 - 44032: 0xA374,\n\t51625 - 44032: 0xA375,\n\t51626 - 44032: 0xA376,\n\t51627 - 44032: 0xA377,\n\t51628 - 44032: 0xA378,\n\t51629 - 44032: 0xA379,\n\t51630 - 44032: 0xA37A,\n\t51631 - 44032: 0xA381,\n\t51632 - 44032: 0xA382,\n\t51633 - 44032: 0xA383,\n\t51634 - 44032: 0xA384,\n\t51635 - 44032: 0xA385,\n\t51636 - 44032: 0xA386,\n\t51637 - 44032: 0xA387,\n\t51638 - 44032: 0xA388,\n\t51639 - 44032: 0xA389,\n\t51640 - 44032: 0xA38A,\n\t51641 - 44032: 0xA38B,\n\t51642 - 44032: 0xA38C,\n\t51643 - 44032: 0xA38D,\n\t51644 - 44032: 0xA38E,\n\t51645 - 44032: 0xA38F,\n\t51646 - 44032: 0xA390,\n\t51647 - 44032: 0xA391,\n\t51648 - 44032: 0xC1F6,\n\t51649 - 44032: 0xC1F7,\n\t51650 - 44032: 0xA392,\n\t51651 - 44032: 0xA393,\n\t51652 - 44032: 0xC1F8,\n\t51653 - 44032: 0xA394,\n\t51654 - 44032: 0xA395,\n\t51655 - 44032: 0xC1F9,\n\t51656 - 44032: 0xC1FA,\n\t51657 - 44032: 0xA396,\n\t51658 - 44032: 0xC1FB,\n\t51659 - 44032: 0xA397,\n\t51660 - 44032: 0xA398,\n\t51661 - 44032: 0xA399,\n\t51662 - 44032: 0xA39A,\n\t51663 - 44032: 0xA39B,\n\t51664 - 44032: 0xC1FC,\n\t51665 - 44032: 0xC1FD,\n\t51666 - 44032: 0xA39C,\n\t51667 - 44032: 0xC1FE,\n\t51668 - 44032: 0xA39D,\n\t51669 - 44032: 0xC2A1,\n\t51670 - 44032: 0xC2A2,\n\t51671 - 44032: 0xA39E,\n\t51672 - 44032: 0xA39F,\n\t51673 - 44032: 0xC2A3,\n\t51674 - 44032: 0xC2A4,\n\t51675 - 44032: 0xA3A0,\n\t51676 - 44032: 0xC2A5,\n\t51677 - 44032: 0xC2A6,\n\t51678 - 44032: 0xA441,\n\t51679 - 44032: 0xA442,\n\t51680 - 44032: 0xC2A7,\n\t51681 - 44032: 0xA443,\n\t51682 - 44032: 0xC2A8,\n\t51683 - 44032: 0xA444,\n\t51684 - 44032: 0xC2A9,\n\t51685 - 44032: 0xA445,\n\t51686 - 44032: 0xA446,\n\t51687 - 44032: 0xC2AA,\n\t51688 - 44032: 0xA447,\n\t51689 - 44032: 0xA448,\n\t51690 - 44032: 0xA449,\n\t51691 - 44032: 0xA44A,\n\t51692 - 44032: 0xC2AB,\n\t51693 - 44032: 0xC2AC,\n\t51694 - 44032: 0xA44B,\n\t51695 - 44032: 0xC2AD,\n\t51696 - 44032: 0xC2AE,\n\t51697 - 44032: 0xC2AF,\n\t51698 - 44032: 0xA44C,\n\t51699 - 44032: 0xA44D,\n\t51700 - 44032: 0xA44E,\n\t51701 - 44032: 0xA44F,\n\t51702 - 44032: 0xA450,\n\t51703 - 44032: 0xA451,\n\t51704 - 44032: 0xC2B0,\n\t51705 - 44032: 0xC2B1,\n\t51706 - 44032: 0xA452,\n\t51707 - 44032: 0xA453,\n\t51708 - 44032: 0xC2B2,\n\t51709 - 44032: 0xA454,\n\t51710 - 44032: 0xA455,\n\t51711 - 44032: 0xA456,\n\t51712 - 44032: 0xC2B3,\n\t51713 - 44032: 0xA457,\n\t51714 - 44032: 0xA458,\n\t51715 - 44032: 0xA459,\n\t51716 - 44032: 0xA45A,\n\t51717 - 44032: 0xA461,\n\t51718 - 44032: 0xA462,\n\t51719 - 44032: 0xA463,\n\t51720 - 44032: 0xC2B4,\n\t51721 - 44032: 0xC2B5,\n\t51722 - 44032: 0xA464,\n\t51723 - 44032: 0xC2B6,\n\t51724 - 44032: 0xC2B7,\n\t51725 - 44032: 0xC2B8,\n\t51726 - 44032: 0xA465,\n\t51727 - 44032: 0xA466,\n\t51728 - 44032: 0xA467,\n\t51729 - 44032: 0xA468,\n\t51730 - 44032: 0xA469,\n\t51731 - 44032: 0xA46A,\n\t51732 - 44032: 0xC2B9,\n\t51733 - 44032: 0xA46B,\n\t51734 - 44032: 0xA46C,\n\t51735 - 44032: 0xA46D,\n\t51736 - 44032: 0xC2BA,\n\t51737 - 44032: 0xA46E,\n\t51738 - 44032: 0xA46F,\n\t51739 - 44032: 0xA470,\n\t51740 - 44032: 0xA471,\n\t51741 - 44032: 0xA472,\n\t51742 - 44032: 0xA473,\n\t51743 - 44032: 0xA474,\n\t51744 - 44032: 0xA475,\n\t51745 - 44032: 0xA476,\n\t51746 - 44032: 0xA477,\n\t51747 - 44032: 0xA478,\n\t51748 - 44032: 0xA479,\n\t51749 - 44032: 0xA47A,\n\t51750 - 44032: 0xA481,\n\t51751 - 44032: 0xA482,\n\t51752 - 44032: 0xA483,\n\t51753 - 44032: 0xC2BB,\n\t51754 - 44032: 0xA484,\n\t51755 - 44032: 0xA485,\n\t51756 - 44032: 0xA486,\n\t51757 - 44032: 0xA487,\n\t51758 - 44032: 0xA488,\n\t51759 - 44032: 0xA489,\n\t51760 - 44032: 0xA48A,\n\t51761 - 44032: 0xA48B,\n\t51762 - 44032: 0xA48C,\n\t51763 - 44032: 0xA48D,\n\t51764 - 44032: 0xA48E,\n\t51765 - 44032: 0xA48F,\n\t51766 - 44032: 0xA490,\n\t51767 - 44032: 0xA491,\n\t51768 - 44032: 0xA492,\n\t51769 - 44032: 0xA493,\n\t51770 - 44032: 0xA494,\n\t51771 - 44032: 0xA495,\n\t51772 - 44032: 0xA496,\n\t51773 - 44032: 0xA497,\n\t51774 - 44032: 0xA498,\n\t51775 - 44032: 0xA499,\n\t51776 - 44032: 0xA49A,\n\t51777 - 44032: 0xA49B,\n\t51778 - 44032: 0xA49C,\n\t51779 - 44032: 0xA49D,\n\t51780 - 44032: 0xA49E,\n\t51781 - 44032: 0xA49F,\n\t51782 - 44032: 0xA4A0,\n\t51783 - 44032: 0xA541,\n\t51784 - 44032: 0xA542,\n\t51785 - 44032: 0xA543,\n\t51786 - 44032: 0xA544,\n\t51787 - 44032: 0xA545,\n\t51788 - 44032: 0xC2BC,\n\t51789 - 44032: 0xC2BD,\n\t51790 - 44032: 0xA546,\n\t51791 - 44032: 0xA547,\n\t51792 - 44032: 0xC2BE,\n\t51793 - 44032: 0xA548,\n\t51794 - 44032: 0xA549,\n\t51795 - 44032: 0xA54A,\n\t51796 - 44032: 0xC2BF,\n\t51797 - 44032: 0xA54B,\n\t51798 - 44032: 0xA54C,\n\t51799 - 44032: 0xA54D,\n\t51800 - 44032: 0xA54E,\n\t51801 - 44032: 0xA54F,\n\t51802 - 44032: 0xA550,\n\t51803 - 44032: 0xA551,\n\t51804 - 44032: 0xC2C0,\n\t51805 - 44032: 0xC2C1,\n\t51806 - 44032: 0xA552,\n\t51807 - 44032: 0xC2C2,\n\t51808 - 44032: 0xC2C3,\n\t51809 - 44032: 0xC2C4,\n\t51810 - 44032: 0xA553,\n\t51811 - 44032: 0xA554,\n\t51812 - 44032: 0xA555,\n\t51813 - 44032: 0xA556,\n\t51814 - 44032: 0xA557,\n\t51815 - 44032: 0xA558,\n\t51816 - 44032: 0xC2C5,\n\t51817 - 44032: 0xA559,\n\t51818 - 44032: 0xA55A,\n\t51819 - 44032: 0xA561,\n\t51820 - 44032: 0xA562,\n\t51821 - 44032: 0xA563,\n\t51822 - 44032: 0xA564,\n\t51823 - 44032: 0xA565,\n\t51824 - 44032: 0xA566,\n\t51825 - 44032: 0xA567,\n\t51826 - 44032: 0xA568,\n\t51827 - 44032: 0xA569,\n\t51828 - 44032: 0xA56A,\n\t51829 - 44032: 0xA56B,\n\t51830 - 44032: 0xA56C,\n\t51831 - 44032: 0xA56D,\n\t51832 - 44032: 0xA56E,\n\t51833 - 44032: 0xA56F,\n\t51834 - 44032: 0xA570,\n\t51835 - 44032: 0xA571,\n\t51836 - 44032: 0xA572,\n\t51837 - 44032: 0xC2C6,\n\t51838 - 44032: 0xA573,\n\t51839 - 44032: 0xA574,\n\t51840 - 44032: 0xA575,\n\t51841 - 44032: 0xA576,\n\t51842 - 44032: 0xA577,\n\t51843 - 44032: 0xA578,\n\t51844 - 44032: 0xC2C7,\n\t51845 - 44032: 0xA579,\n\t51846 - 44032: 0xA57A,\n\t51847 - 44032: 0xA581,\n\t51848 - 44032: 0xA582,\n\t51849 - 44032: 0xA583,\n\t51850 - 44032: 0xA584,\n\t51851 - 44032: 0xA585,\n\t51852 - 44032: 0xA586,\n\t51853 - 44032: 0xA587,\n\t51854 - 44032: 0xA588,\n\t51855 - 44032: 0xA589,\n\t51856 - 44032: 0xA58A,\n\t51857 - 44032: 0xA58B,\n\t51858 - 44032: 0xA58C,\n\t51859 - 44032: 0xA58D,\n\t51860 - 44032: 0xA58E,\n\t51861 - 44032: 0xA58F,\n\t51862 - 44032: 0xA590,\n\t51863 - 44032: 0xA591,\n\t51864 - 44032: 0xC2C8,\n\t51865 - 44032: 0xA592,\n\t51866 - 44032: 0xA593,\n\t51867 - 44032: 0xA594,\n\t51868 - 44032: 0xA595,\n\t51869 - 44032: 0xA596,\n\t51870 - 44032: 0xA597,\n\t51871 - 44032: 0xA598,\n\t51872 - 44032: 0xA599,\n\t51873 - 44032: 0xA59A,\n\t51874 - 44032: 0xA59B,\n\t51875 - 44032: 0xA59C,\n\t51876 - 44032: 0xA59D,\n\t51877 - 44032: 0xA59E,\n\t51878 - 44032: 0xA59F,\n\t51879 - 44032: 0xA5A0,\n\t51880 - 44032: 0xA641,\n\t51881 - 44032: 0xA642,\n\t51882 - 44032: 0xA643,\n\t51883 - 44032: 0xA644,\n\t51884 - 44032: 0xA645,\n\t51885 - 44032: 0xA646,\n\t51886 - 44032: 0xA647,\n\t51887 - 44032: 0xA648,\n\t51888 - 44032: 0xA649,\n\t51889 - 44032: 0xA64A,\n\t51890 - 44032: 0xA64B,\n\t51891 - 44032: 0xA64C,\n\t51892 - 44032: 0xA64D,\n\t51893 - 44032: 0xA64E,\n\t51894 - 44032: 0xA64F,\n\t51895 - 44032: 0xA650,\n\t51896 - 44032: 0xA651,\n\t51897 - 44032: 0xA652,\n\t51898 - 44032: 0xA653,\n\t51899 - 44032: 0xA654,\n\t51900 - 44032: 0xC2C9,\n\t51901 - 44032: 0xC2CA,\n\t51902 - 44032: 0xA655,\n\t51903 - 44032: 0xA656,\n\t51904 - 44032: 0xC2CB,\n\t51905 - 44032: 0xA657,\n\t51906 - 44032: 0xA658,\n\t51907 - 44032: 0xA659,\n\t51908 - 44032: 0xC2CC,\n\t51909 - 44032: 0xA65A,\n\t51910 - 44032: 0xA661,\n\t51911 - 44032: 0xA662,\n\t51912 - 44032: 0xA663,\n\t51913 - 44032: 0xA664,\n\t51914 - 44032: 0xA665,\n\t51915 - 44032: 0xA666,\n\t51916 - 44032: 0xC2CD,\n\t51917 - 44032: 0xC2CE,\n\t51918 - 44032: 0xA667,\n\t51919 - 44032: 0xC2CF,\n\t51920 - 44032: 0xA668,\n\t51921 - 44032: 0xC2D0,\n\t51922 - 44032: 0xA669,\n\t51923 - 44032: 0xC2D1,\n\t51924 - 44032: 0xA66A,\n\t51925 - 44032: 0xA66B,\n\t51926 - 44032: 0xA66C,\n\t51927 - 44032: 0xA66D,\n\t51928 - 44032: 0xC2D2,\n\t51929 - 44032: 0xC2D3,\n\t51930 - 44032: 0xA66E,\n\t51931 - 44032: 0xA66F,\n\t51932 - 44032: 0xA670,\n\t51933 - 44032: 0xA671,\n\t51934 - 44032: 0xA672,\n\t51935 - 44032: 0xA673,\n\t51936 - 44032: 0xC2D4,\n\t51937 - 44032: 0xA674,\n\t51938 - 44032: 0xA675,\n\t51939 - 44032: 0xA676,\n\t51940 - 44032: 0xA677,\n\t51941 - 44032: 0xA678,\n\t51942 - 44032: 0xA679,\n\t51943 - 44032: 0xA67A,\n\t51944 - 44032: 0xA681,\n\t51945 - 44032: 0xA682,\n\t51946 - 44032: 0xA683,\n\t51947 - 44032: 0xA684,\n\t51948 - 44032: 0xC2D5,\n\t51949 - 44032: 0xA685,\n\t51950 - 44032: 0xA686,\n\t51951 - 44032: 0xA687,\n\t51952 - 44032: 0xA688,\n\t51953 - 44032: 0xA689,\n\t51954 - 44032: 0xA68A,\n\t51955 - 44032: 0xA68B,\n\t51956 - 44032: 0xC2D6,\n\t51957 - 44032: 0xA68C,\n\t51958 - 44032: 0xA68D,\n\t51959 - 44032: 0xA68E,\n\t51960 - 44032: 0xA68F,\n\t51961 - 44032: 0xA690,\n\t51962 - 44032: 0xA691,\n\t51963 - 44032: 0xA692,\n\t51964 - 44032: 0xA693,\n\t51965 - 44032: 0xA694,\n\t51966 - 44032: 0xA695,\n\t51967 - 44032: 0xA696,\n\t51968 - 44032: 0xA697,\n\t51969 - 44032: 0xA698,\n\t51970 - 44032: 0xA699,\n\t51971 - 44032: 0xA69A,\n\t51972 - 44032: 0xA69B,\n\t51973 - 44032: 0xA69C,\n\t51974 - 44032: 0xA69D,\n\t51975 - 44032: 0xA69E,\n\t51976 - 44032: 0xC2D7,\n\t51977 - 44032: 0xA69F,\n\t51978 - 44032: 0xA6A0,\n\t51979 - 44032: 0xA741,\n\t51980 - 44032: 0xA742,\n\t51981 - 44032: 0xA743,\n\t51982 - 44032: 0xA744,\n\t51983 - 44032: 0xA745,\n\t51984 - 44032: 0xC2D8,\n\t51985 - 44032: 0xA746,\n\t51986 - 44032: 0xA747,\n\t51987 - 44032: 0xA748,\n\t51988 - 44032: 0xC2D9,\n\t51989 - 44032: 0xA749,\n\t51990 - 44032: 0xA74A,\n\t51991 - 44032: 0xA74B,\n\t51992 - 44032: 0xC2DA,\n\t51993 - 44032: 0xA74C,\n\t51994 - 44032: 0xA74D,\n\t51995 - 44032: 0xA74E,\n\t51996 - 44032: 0xA74F,\n\t51997 - 44032: 0xA750,\n\t51998 - 44032: 0xA751,\n\t51999 - 44032: 0xA752,\n\t52000 - 44032: 0xC2DB,\n\t52001 - 44032: 0xC2DC,\n\t52002 - 44032: 0xA753,\n\t52003 - 44032: 0xA754,\n\t52004 - 44032: 0xA755,\n\t52005 - 44032: 0xA756,\n\t52006 - 44032: 0xA757,\n\t52007 - 44032: 0xA758,\n\t52008 - 44032: 0xA759,\n\t52009 - 44032: 0xA75A,\n\t52010 - 44032: 0xA761,\n\t52011 - 44032: 0xA762,\n\t52012 - 44032: 0xA763,\n\t52013 - 44032: 0xA764,\n\t52014 - 44032: 0xA765,\n\t52015 - 44032: 0xA766,\n\t52016 - 44032: 0xA767,\n\t52017 - 44032: 0xA768,\n\t52018 - 44032: 0xA769,\n\t52019 - 44032: 0xA76A,\n\t52020 - 44032: 0xA76B,\n\t52021 - 44032: 0xA76C,\n\t52022 - 44032: 0xA76D,\n\t52023 - 44032: 0xA76E,\n\t52024 - 44032: 0xA76F,\n\t52025 - 44032: 0xA770,\n\t52026 - 44032: 0xA771,\n\t52027 - 44032: 0xA772,\n\t52028 - 44032: 0xA773,\n\t52029 - 44032: 0xA774,\n\t52030 - 44032: 0xA775,\n\t52031 - 44032: 0xA776,\n\t52032 - 44032: 0xA777,\n\t52033 - 44032: 0xC2DD,\n\t52034 - 44032: 0xA778,\n\t52035 - 44032: 0xA779,\n\t52036 - 44032: 0xA77A,\n\t52037 - 44032: 0xA781,\n\t52038 - 44032: 0xA782,\n\t52039 - 44032: 0xA783,\n\t52040 - 44032: 0xC2DE,\n\t52041 - 44032: 0xC2DF,\n\t52042 - 44032: 0xA784,\n\t52043 - 44032: 0xA785,\n\t52044 - 44032: 0xC2E0,\n\t52045 - 44032: 0xA786,\n\t52046 - 44032: 0xA787,\n\t52047 - 44032: 0xA788,\n\t52048 - 44032: 0xC2E1,\n\t52049 - 44032: 0xA789,\n\t52050 - 44032: 0xA78A,\n\t52051 - 44032: 0xA78B,\n\t52052 - 44032: 0xA78C,\n\t52053 - 44032: 0xA78D,\n\t52054 - 44032: 0xA78E,\n\t52055 - 44032: 0xA78F,\n\t52056 - 44032: 0xC2E2,\n\t52057 - 44032: 0xC2E3,\n\t52058 - 44032: 0xA790,\n\t52059 - 44032: 0xA791,\n\t52060 - 44032: 0xA792,\n\t52061 - 44032: 0xC2E4,\n\t52062 - 44032: 0xA793,\n\t52063 - 44032: 0xA794,\n\t52064 - 44032: 0xA795,\n\t52065 - 44032: 0xA796,\n\t52066 - 44032: 0xA797,\n\t52067 - 44032: 0xA798,\n\t52068 - 44032: 0xC2E5,\n\t52069 - 44032: 0xA799,\n\t52070 - 44032: 0xA79A,\n\t52071 - 44032: 0xA79B,\n\t52072 - 44032: 0xA79C,\n\t52073 - 44032: 0xA79D,\n\t52074 - 44032: 0xA79E,\n\t52075 - 44032: 0xA79F,\n\t52076 - 44032: 0xA7A0,\n\t52077 - 44032: 0xA841,\n\t52078 - 44032: 0xA842,\n\t52079 - 44032: 0xA843,\n\t52080 - 44032: 0xA844,\n\t52081 - 44032: 0xA845,\n\t52082 - 44032: 0xA846,\n\t52083 - 44032: 0xA847,\n\t52084 - 44032: 0xA848,\n\t52085 - 44032: 0xA849,\n\t52086 - 44032: 0xA84A,\n\t52087 - 44032: 0xA84B,\n\t52088 - 44032: 0xC2E6,\n\t52089 - 44032: 0xC2E7,\n\t52090 - 44032: 0xA84C,\n\t52091 - 44032: 0xA84D,\n\t52092 - 44032: 0xA84E,\n\t52093 - 44032: 0xA84F,\n\t52094 - 44032: 0xA850,\n\t52095 - 44032: 0xA851,\n\t52096 - 44032: 0xA852,\n\t52097 - 44032: 0xA853,\n\t52098 - 44032: 0xA854,\n\t52099 - 44032: 0xA855,\n\t52100 - 44032: 0xA856,\n\t52101 - 44032: 0xA857,\n\t52102 - 44032: 0xA858,\n\t52103 - 44032: 0xA859,\n\t52104 - 44032: 0xA85A,\n\t52105 - 44032: 0xA861,\n\t52106 - 44032: 0xA862,\n\t52107 - 44032: 0xA863,\n\t52108 - 44032: 0xA864,\n\t52109 - 44032: 0xA865,\n\t52110 - 44032: 0xA866,\n\t52111 - 44032: 0xA867,\n\t52112 - 44032: 0xA868,\n\t52113 - 44032: 0xA869,\n\t52114 - 44032: 0xA86A,\n\t52115 - 44032: 0xA86B,\n\t52116 - 44032: 0xA86C,\n\t52117 - 44032: 0xA86D,\n\t52118 - 44032: 0xA86E,\n\t52119 - 44032: 0xA86F,\n\t52120 - 44032: 0xA870,\n\t52121 - 44032: 0xA871,\n\t52122 - 44032: 0xA872,\n\t52123 - 44032: 0xA873,\n\t52124 - 44032: 0xC2E8,\n\t52125 - 44032: 0xA874,\n\t52126 - 44032: 0xA875,\n\t52127 - 44032: 0xA876,\n\t52128 - 44032: 0xA877,\n\t52129 - 44032: 0xA878,\n\t52130 - 44032: 0xA879,\n\t52131 - 44032: 0xA87A,\n\t52132 - 44032: 0xA881,\n\t52133 - 44032: 0xA882,\n\t52134 - 44032: 0xA883,\n\t52135 - 44032: 0xA884,\n\t52136 - 44032: 0xA885,\n\t52137 - 44032: 0xA886,\n\t52138 - 44032: 0xA887,\n\t52139 - 44032: 0xA888,\n\t52140 - 44032: 0xA889,\n\t52141 - 44032: 0xA88A,\n\t52142 - 44032: 0xA88B,\n\t52143 - 44032: 0xA88C,\n\t52144 - 44032: 0xA88D,\n\t52145 - 44032: 0xA88E,\n\t52146 - 44032: 0xA88F,\n\t52147 - 44032: 0xA890,\n\t52148 - 44032: 0xA891,\n\t52149 - 44032: 0xA892,\n\t52150 - 44032: 0xA893,\n\t52151 - 44032: 0xA894,\n\t52152 - 44032: 0xC2E9,\n\t52153 - 44032: 0xA895,\n\t52154 - 44032: 0xA896,\n\t52155 - 44032: 0xA897,\n\t52156 - 44032: 0xA898,\n\t52157 - 44032: 0xA899,\n\t52158 - 44032: 0xA89A,\n\t52159 - 44032: 0xA89B,\n\t52160 - 44032: 0xA89C,\n\t52161 - 44032: 0xA89D,\n\t52162 - 44032: 0xA89E,\n\t52163 - 44032: 0xA89F,\n\t52164 - 44032: 0xA8A0,\n\t52165 - 44032: 0xA941,\n\t52166 - 44032: 0xA942,\n\t52167 - 44032: 0xA943,\n\t52168 - 44032: 0xA944,\n\t52169 - 44032: 0xA945,\n\t52170 - 44032: 0xA946,\n\t52171 - 44032: 0xA947,\n\t52172 - 44032: 0xA948,\n\t52173 - 44032: 0xA949,\n\t52174 - 44032: 0xA94A,\n\t52175 - 44032: 0xA94B,\n\t52176 - 44032: 0xA94C,\n\t52177 - 44032: 0xA94D,\n\t52178 - 44032: 0xA94E,\n\t52179 - 44032: 0xA94F,\n\t52180 - 44032: 0xC2EA,\n\t52181 - 44032: 0xA950,\n\t52182 - 44032: 0xA951,\n\t52183 - 44032: 0xA952,\n\t52184 - 44032: 0xA953,\n\t52185 - 44032: 0xA954,\n\t52186 - 44032: 0xA955,\n\t52187 - 44032: 0xA956,\n\t52188 - 44032: 0xA957,\n\t52189 - 44032: 0xA958,\n\t52190 - 44032: 0xA959,\n\t52191 - 44032: 0xA95A,\n\t52192 - 44032: 0xA961,\n\t52193 - 44032: 0xA962,\n\t52194 - 44032: 0xA963,\n\t52195 - 44032: 0xA964,\n\t52196 - 44032: 0xC2EB,\n\t52197 - 44032: 0xA965,\n\t52198 - 44032: 0xA966,\n\t52199 - 44032: 0xC2EC,\n\t52200 - 44032: 0xA967,\n\t52201 - 44032: 0xC2ED,\n\t52202 - 44032: 0xA968,\n\t52203 - 44032: 0xA969,\n\t52204 - 44032: 0xA96A,\n\t52205 - 44032: 0xA96B,\n\t52206 - 44032: 0xA96C,\n\t52207 - 44032: 0xA96D,\n\t52208 - 44032: 0xA96E,\n\t52209 - 44032: 0xA96F,\n\t52210 - 44032: 0xA970,\n\t52211 - 44032: 0xA971,\n\t52212 - 44032: 0xA972,\n\t52213 - 44032: 0xA973,\n\t52214 - 44032: 0xA974,\n\t52215 - 44032: 0xA975,\n\t52216 - 44032: 0xA976,\n\t52217 - 44032: 0xA977,\n\t52218 - 44032: 0xA978,\n\t52219 - 44032: 0xA979,\n\t52220 - 44032: 0xA97A,\n\t52221 - 44032: 0xA981,\n\t52222 - 44032: 0xA982,\n\t52223 - 44032: 0xA983,\n\t52224 - 44032: 0xA984,\n\t52225 - 44032: 0xA985,\n\t52226 - 44032: 0xA986,\n\t52227 - 44032: 0xA987,\n\t52228 - 44032: 0xA988,\n\t52229 - 44032: 0xA989,\n\t52230 - 44032: 0xA98A,\n\t52231 - 44032: 0xA98B,\n\t52232 - 44032: 0xA98C,\n\t52233 - 44032: 0xA98D,\n\t52234 - 44032: 0xA98E,\n\t52235 - 44032: 0xA98F,\n\t52236 - 44032: 0xC2EE,\n\t52237 - 44032: 0xC2EF,\n\t52238 - 44032: 0xA990,\n\t52239 - 44032: 0xA991,\n\t52240 - 44032: 0xC2F0,\n\t52241 - 44032: 0xA992,\n\t52242 - 44032: 0xA993,\n\t52243 - 44032: 0xA994,\n\t52244 - 44032: 0xC2F1,\n\t52245 - 44032: 0xA995,\n\t52246 - 44032: 0xA996,\n\t52247 - 44032: 0xA997,\n\t52248 - 44032: 0xA998,\n\t52249 - 44032: 0xA999,\n\t52250 - 44032: 0xA99A,\n\t52251 - 44032: 0xA99B,\n\t52252 - 44032: 0xC2F2,\n\t52253 - 44032: 0xC2F3,\n\t52254 - 44032: 0xA99C,\n\t52255 - 44032: 0xA99D,\n\t52256 - 44032: 0xA99E,\n\t52257 - 44032: 0xC2F4,\n\t52258 - 44032: 0xC2F5,\n\t52259 - 44032: 0xA99F,\n\t52260 - 44032: 0xA9A0,\n\t52261 - 44032: 0xAA41,\n\t52262 - 44032: 0xAA42,\n\t52263 - 44032: 0xC2F6,\n\t52264 - 44032: 0xC2F7,\n\t52265 - 44032: 0xC2F8,\n\t52266 - 44032: 0xAA43,\n\t52267 - 44032: 0xAA44,\n\t52268 - 44032: 0xC2F9,\n\t52269 - 44032: 0xAA45,\n\t52270 - 44032: 0xC2FA,\n\t52271 - 44032: 0xAA46,\n\t52272 - 44032: 0xC2FB,\n\t52273 - 44032: 0xAA47,\n\t52274 - 44032: 0xAA48,\n\t52275 - 44032: 0xAA49,\n\t52276 - 44032: 0xAA4A,\n\t52277 - 44032: 0xAA4B,\n\t52278 - 44032: 0xAA4C,\n\t52279 - 44032: 0xAA4D,\n\t52280 - 44032: 0xC2FC,\n\t52281 - 44032: 0xC2FD,\n\t52282 - 44032: 0xAA4E,\n\t52283 - 44032: 0xC2FE,\n\t52284 - 44032: 0xC3A1,\n\t52285 - 44032: 0xC3A2,\n\t52286 - 44032: 0xC3A3,\n\t52287 - 44032: 0xAA4F,\n\t52288 - 44032: 0xAA50,\n\t52289 - 44032: 0xAA51,\n\t52290 - 44032: 0xAA52,\n\t52291 - 44032: 0xAA53,\n\t52292 - 44032: 0xC3A4,\n\t52293 - 44032: 0xC3A5,\n\t52294 - 44032: 0xAA54,\n\t52295 - 44032: 0xAA55,\n\t52296 - 44032: 0xC3A6,\n\t52297 - 44032: 0xAA56,\n\t52298 - 44032: 0xAA57,\n\t52299 - 44032: 0xAA58,\n\t52300 - 44032: 0xC3A7,\n\t52301 - 44032: 0xAA59,\n\t52302 - 44032: 0xAA5A,\n\t52303 - 44032: 0xAA61,\n\t52304 - 44032: 0xAA62,\n\t52305 - 44032: 0xAA63,\n\t52306 - 44032: 0xAA64,\n\t52307 - 44032: 0xAA65,\n\t52308 - 44032: 0xC3A8,\n\t52309 - 44032: 0xC3A9,\n\t52310 - 44032: 0xAA66,\n\t52311 - 44032: 0xC3AA,\n\t52312 - 44032: 0xC3AB,\n\t52313 - 44032: 0xC3AC,\n\t52314 - 44032: 0xAA67,\n\t52315 - 44032: 0xAA68,\n\t52316 - 44032: 0xAA69,\n\t52317 - 44032: 0xAA6A,\n\t52318 - 44032: 0xAA6B,\n\t52319 - 44032: 0xAA6C,\n\t52320 - 44032: 0xC3AD,\n\t52321 - 44032: 0xAA6D,\n\t52322 - 44032: 0xAA6E,\n\t52323 - 44032: 0xAA6F,\n\t52324 - 44032: 0xC3AE,\n\t52325 - 44032: 0xAA70,\n\t52326 - 44032: 0xC3AF,\n\t52327 - 44032: 0xAA71,\n\t52328 - 44032: 0xC3B0,\n\t52329 - 44032: 0xAA72,\n\t52330 - 44032: 0xAA73,\n\t52331 - 44032: 0xAA74,\n\t52332 - 44032: 0xAA75,\n\t52333 - 44032: 0xAA76,\n\t52334 - 44032: 0xAA77,\n\t52335 - 44032: 0xAA78,\n\t52336 - 44032: 0xC3B1,\n\t52337 - 44032: 0xAA79,\n\t52338 - 44032: 0xAA7A,\n\t52339 - 44032: 0xAA81,\n\t52340 - 44032: 0xAA82,\n\t52341 - 44032: 0xC3B2,\n\t52342 - 44032: 0xAA83,\n\t52343 - 44032: 0xAA84,\n\t52344 - 44032: 0xAA85,\n\t52345 - 44032: 0xAA86,\n\t52346 - 44032: 0xAA87,\n\t52347 - 44032: 0xAA88,\n\t52348 - 44032: 0xAA89,\n\t52349 - 44032: 0xAA8A,\n\t52350 - 44032: 0xAA8B,\n\t52351 - 44032: 0xAA8C,\n\t52352 - 44032: 0xAA8D,\n\t52353 - 44032: 0xAA8E,\n\t52354 - 44032: 0xAA8F,\n\t52355 - 44032: 0xAA90,\n\t52356 - 44032: 0xAA91,\n\t52357 - 44032: 0xAA92,\n\t52358 - 44032: 0xAA93,\n\t52359 - 44032: 0xAA94,\n\t52360 - 44032: 0xAA95,\n\t52361 - 44032: 0xAA96,\n\t52362 - 44032: 0xAA97,\n\t52363 - 44032: 0xAA98,\n\t52364 - 44032: 0xAA99,\n\t52365 - 44032: 0xAA9A,\n\t52366 - 44032: 0xAA9B,\n\t52367 - 44032: 0xAA9C,\n\t52368 - 44032: 0xAA9D,\n\t52369 - 44032: 0xAA9E,\n\t52370 - 44032: 0xAA9F,\n\t52371 - 44032: 0xAAA0,\n\t52372 - 44032: 0xAB41,\n\t52373 - 44032: 0xAB42,\n\t52374 - 44032: 0xAB43,\n\t52375 - 44032: 0xAB44,\n\t52376 - 44032: 0xC3B3,\n\t52377 - 44032: 0xC3B4,\n\t52378 - 44032: 0xAB45,\n\t52379 - 44032: 0xAB46,\n\t52380 - 44032: 0xC3B5,\n\t52381 - 44032: 0xAB47,\n\t52382 - 44032: 0xAB48,\n\t52383 - 44032: 0xAB49,\n\t52384 - 44032: 0xC3B6,\n\t52385 - 44032: 0xAB4A,\n\t52386 - 44032: 0xAB4B,\n\t52387 - 44032: 0xAB4C,\n\t52388 - 44032: 0xAB4D,\n\t52389 - 44032: 0xAB4E,\n\t52390 - 44032: 0xAB4F,\n\t52391 - 44032: 0xAB50,\n\t52392 - 44032: 0xC3B7,\n\t52393 - 44032: 0xC3B8,\n\t52394 - 44032: 0xAB51,\n\t52395 - 44032: 0xC3B9,\n\t52396 - 44032: 0xC3BA,\n\t52397 - 44032: 0xC3BB,\n\t52398 - 44032: 0xAB52,\n\t52399 - 44032: 0xAB53,\n\t52400 - 44032: 0xAB54,\n\t52401 - 44032: 0xAB55,\n\t52402 - 44032: 0xAB56,\n\t52403 - 44032: 0xAB57,\n\t52404 - 44032: 0xC3BC,\n\t52405 - 44032: 0xC3BD,\n\t52406 - 44032: 0xAB58,\n\t52407 - 44032: 0xAB59,\n\t52408 - 44032: 0xC3BE,\n\t52409 - 44032: 0xAB5A,\n\t52410 - 44032: 0xAB61,\n\t52411 - 44032: 0xAB62,\n\t52412 - 44032: 0xC3BF,\n\t52413 - 44032: 0xAB63,\n\t52414 - 44032: 0xAB64,\n\t52415 - 44032: 0xAB65,\n\t52416 - 44032: 0xAB66,\n\t52417 - 44032: 0xAB67,\n\t52418 - 44032: 0xAB68,\n\t52419 - 44032: 0xAB69,\n\t52420 - 44032: 0xC3C0,\n\t52421 - 44032: 0xC3C1,\n\t52422 - 44032: 0xAB6A,\n\t52423 - 44032: 0xC3C2,\n\t52424 - 44032: 0xAB6B,\n\t52425 - 44032: 0xC3C3,\n\t52426 - 44032: 0xAB6C,\n\t52427 - 44032: 0xAB6D,\n\t52428 - 44032: 0xAB6E,\n\t52429 - 44032: 0xAB6F,\n\t52430 - 44032: 0xAB70,\n\t52431 - 44032: 0xAB71,\n\t52432 - 44032: 0xC3C4,\n\t52433 - 44032: 0xAB72,\n\t52434 - 44032: 0xAB73,\n\t52435 - 44032: 0xAB74,\n\t52436 - 44032: 0xC3C5,\n\t52437 - 44032: 0xAB75,\n\t52438 - 44032: 0xAB76,\n\t52439 - 44032: 0xAB77,\n\t52440 - 44032: 0xAB78,\n\t52441 - 44032: 0xAB79,\n\t52442 - 44032: 0xAB7A,\n\t52443 - 44032: 0xAB81,\n\t52444 - 44032: 0xAB82,\n\t52445 - 44032: 0xAB83,\n\t52446 - 44032: 0xAB84,\n\t52447 - 44032: 0xAB85,\n\t52448 - 44032: 0xAB86,\n\t52449 - 44032: 0xAB87,\n\t52450 - 44032: 0xAB88,\n\t52451 - 44032: 0xAB89,\n\t52452 - 44032: 0xC3C6,\n\t52453 - 44032: 0xAB8A,\n\t52454 - 44032: 0xAB8B,\n\t52455 - 44032: 0xAB8C,\n\t52456 - 44032: 0xAB8D,\n\t52457 - 44032: 0xAB8E,\n\t52458 - 44032: 0xAB8F,\n\t52459 - 44032: 0xAB90,\n\t52460 - 44032: 0xC3C7,\n\t52461 - 44032: 0xAB91,\n\t52462 - 44032: 0xAB92,\n\t52463 - 44032: 0xAB93,\n\t52464 - 44032: 0xC3C8,\n\t52465 - 44032: 0xAB94,\n\t52466 - 44032: 0xAB95,\n\t52467 - 44032: 0xAB96,\n\t52468 - 44032: 0xAB97,\n\t52469 - 44032: 0xAB98,\n\t52470 - 44032: 0xAB99,\n\t52471 - 44032: 0xAB9A,\n\t52472 - 44032: 0xAB9B,\n\t52473 - 44032: 0xAB9C,\n\t52474 - 44032: 0xAB9D,\n\t52475 - 44032: 0xAB9E,\n\t52476 - 44032: 0xAB9F,\n\t52477 - 44032: 0xABA0,\n\t52478 - 44032: 0xAC41,\n\t52479 - 44032: 0xAC42,\n\t52480 - 44032: 0xAC43,\n\t52481 - 44032: 0xC3C9,\n\t52482 - 44032: 0xAC44,\n\t52483 - 44032: 0xAC45,\n\t52484 - 44032: 0xAC46,\n\t52485 - 44032: 0xAC47,\n\t52486 - 44032: 0xAC48,\n\t52487 - 44032: 0xAC49,\n\t52488 - 44032: 0xC3CA,\n\t52489 - 44032: 0xC3CB,\n\t52490 - 44032: 0xAC4A,\n\t52491 - 44032: 0xAC4B,\n\t52492 - 44032: 0xC3CC,\n\t52493 - 44032: 0xAC4C,\n\t52494 - 44032: 0xAC4D,\n\t52495 - 44032: 0xAC4E,\n\t52496 - 44032: 0xC3CD,\n\t52497 - 44032: 0xAC4F,\n\t52498 - 44032: 0xAC50,\n\t52499 - 44032: 0xAC51,\n\t52500 - 44032: 0xAC52,\n\t52501 - 44032: 0xAC53,\n\t52502 - 44032: 0xAC54,\n\t52503 - 44032: 0xAC55,\n\t52504 - 44032: 0xC3CE,\n\t52505 - 44032: 0xC3CF,\n\t52506 - 44032: 0xAC56,\n\t52507 - 44032: 0xC3D0,\n\t52508 - 44032: 0xAC57,\n\t52509 - 44032: 0xC3D1,\n\t52510 - 44032: 0xAC58,\n\t52511 - 44032: 0xAC59,\n\t52512 - 44032: 0xAC5A,\n\t52513 - 44032: 0xAC61,\n\t52514 - 44032: 0xAC62,\n\t52515 - 44032: 0xAC63,\n\t52516 - 44032: 0xC3D2,\n\t52517 - 44032: 0xAC64,\n\t52518 - 44032: 0xAC65,\n\t52519 - 44032: 0xAC66,\n\t52520 - 44032: 0xC3D3,\n\t52521 - 44032: 0xAC67,\n\t52522 - 44032: 0xAC68,\n\t52523 - 44032: 0xAC69,\n\t52524 - 44032: 0xC3D4,\n\t52525 - 44032: 0xAC6A,\n\t52526 - 44032: 0xAC6B,\n\t52527 - 44032: 0xAC6C,\n\t52528 - 44032: 0xAC6D,\n\t52529 - 44032: 0xAC6E,\n\t52530 - 44032: 0xAC6F,\n\t52531 - 44032: 0xAC70,\n\t52532 - 44032: 0xAC71,\n\t52533 - 44032: 0xAC72,\n\t52534 - 44032: 0xAC73,\n\t52535 - 44032: 0xAC74,\n\t52536 - 44032: 0xAC75,\n\t52537 - 44032: 0xC3D5,\n\t52538 - 44032: 0xAC76,\n\t52539 - 44032: 0xAC77,\n\t52540 - 44032: 0xAC78,\n\t52541 - 44032: 0xAC79,\n\t52542 - 44032: 0xAC7A,\n\t52543 - 44032: 0xAC81,\n\t52544 - 44032: 0xAC82,\n\t52545 - 44032: 0xAC83,\n\t52546 - 44032: 0xAC84,\n\t52547 - 44032: 0xAC85,\n\t52548 - 44032: 0xAC86,\n\t52549 - 44032: 0xAC87,\n\t52550 - 44032: 0xAC88,\n\t52551 - 44032: 0xAC89,\n\t52552 - 44032: 0xAC8A,\n\t52553 - 44032: 0xAC8B,\n\t52554 - 44032: 0xAC8C,\n\t52555 - 44032: 0xAC8D,\n\t52556 - 44032: 0xAC8E,\n\t52557 - 44032: 0xAC8F,\n\t52558 - 44032: 0xAC90,\n\t52559 - 44032: 0xAC91,\n\t52560 - 44032: 0xAC92,\n\t52561 - 44032: 0xAC93,\n\t52562 - 44032: 0xAC94,\n\t52563 - 44032: 0xAC95,\n\t52564 - 44032: 0xAC96,\n\t52565 - 44032: 0xAC97,\n\t52566 - 44032: 0xAC98,\n\t52567 - 44032: 0xAC99,\n\t52568 - 44032: 0xAC9A,\n\t52569 - 44032: 0xAC9B,\n\t52570 - 44032: 0xAC9C,\n\t52571 - 44032: 0xAC9D,\n\t52572 - 44032: 0xC3D6,\n\t52573 - 44032: 0xAC9E,\n\t52574 - 44032: 0xAC9F,\n\t52575 - 44032: 0xACA0,\n\t52576 - 44032: 0xC3D7,\n\t52577 - 44032: 0xAD41,\n\t52578 - 44032: 0xAD42,\n\t52579 - 44032: 0xAD43,\n\t52580 - 44032: 0xC3D8,\n\t52581 - 44032: 0xAD44,\n\t52582 - 44032: 0xAD45,\n\t52583 - 44032: 0xAD46,\n\t52584 - 44032: 0xAD47,\n\t52585 - 44032: 0xAD48,\n\t52586 - 44032: 0xAD49,\n\t52587 - 44032: 0xAD4A,\n\t52588 - 44032: 0xC3D9,\n\t52589 - 44032: 0xC3DA,\n\t52590 - 44032: 0xAD4B,\n\t52591 - 44032: 0xC3DB,\n\t52592 - 44032: 0xAD4C,\n\t52593 - 44032: 0xC3DC,\n\t52594 - 44032: 0xAD4D,\n\t52595 - 44032: 0xAD4E,\n\t52596 - 44032: 0xAD4F,\n\t52597 - 44032: 0xAD50,\n\t52598 - 44032: 0xAD51,\n\t52599 - 44032: 0xAD52,\n\t52600 - 44032: 0xC3DD,\n\t52601 - 44032: 0xAD53,\n\t52602 - 44032: 0xAD54,\n\t52603 - 44032: 0xAD55,\n\t52604 - 44032: 0xAD56,\n\t52605 - 44032: 0xAD57,\n\t52606 - 44032: 0xAD58,\n\t52607 - 44032: 0xAD59,\n\t52608 - 44032: 0xAD5A,\n\t52609 - 44032: 0xAD61,\n\t52610 - 44032: 0xAD62,\n\t52611 - 44032: 0xAD63,\n\t52612 - 44032: 0xAD64,\n\t52613 - 44032: 0xAD65,\n\t52614 - 44032: 0xAD66,\n\t52615 - 44032: 0xAD67,\n\t52616 - 44032: 0xC3DE,\n\t52617 - 44032: 0xAD68,\n\t52618 - 44032: 0xAD69,\n\t52619 - 44032: 0xAD6A,\n\t52620 - 44032: 0xAD6B,\n\t52621 - 44032: 0xAD6C,\n\t52622 - 44032: 0xAD6D,\n\t52623 - 44032: 0xAD6E,\n\t52624 - 44032: 0xAD6F,\n\t52625 - 44032: 0xAD70,\n\t52626 - 44032: 0xAD71,\n\t52627 - 44032: 0xAD72,\n\t52628 - 44032: 0xC3DF,\n\t52629 - 44032: 0xC3E0,\n\t52630 - 44032: 0xAD73,\n\t52631 - 44032: 0xAD74,\n\t52632 - 44032: 0xC3E1,\n\t52633 - 44032: 0xAD75,\n\t52634 - 44032: 0xAD76,\n\t52635 - 44032: 0xAD77,\n\t52636 - 44032: 0xC3E2,\n\t52637 - 44032: 0xAD78,\n\t52638 - 44032: 0xAD79,\n\t52639 - 44032: 0xAD7A,\n\t52640 - 44032: 0xAD81,\n\t52641 - 44032: 0xAD82,\n\t52642 - 44032: 0xAD83,\n\t52643 - 44032: 0xAD84,\n\t52644 - 44032: 0xC3E3,\n\t52645 - 44032: 0xC3E4,\n\t52646 - 44032: 0xAD85,\n\t52647 - 44032: 0xC3E5,\n\t52648 - 44032: 0xAD86,\n\t52649 - 44032: 0xC3E6,\n\t52650 - 44032: 0xAD87,\n\t52651 - 44032: 0xAD88,\n\t52652 - 44032: 0xAD89,\n\t52653 - 44032: 0xAD8A,\n\t52654 - 44032: 0xAD8B,\n\t52655 - 44032: 0xAD8C,\n\t52656 - 44032: 0xC3E7,\n\t52657 - 44032: 0xAD8D,\n\t52658 - 44032: 0xAD8E,\n\t52659 - 44032: 0xAD8F,\n\t52660 - 44032: 0xAD90,\n\t52661 - 44032: 0xAD91,\n\t52662 - 44032: 0xAD92,\n\t52663 - 44032: 0xAD93,\n\t52664 - 44032: 0xAD94,\n\t52665 - 44032: 0xAD95,\n\t52666 - 44032: 0xAD96,\n\t52667 - 44032: 0xAD97,\n\t52668 - 44032: 0xAD98,\n\t52669 - 44032: 0xAD99,\n\t52670 - 44032: 0xAD9A,\n\t52671 - 44032: 0xAD9B,\n\t52672 - 44032: 0xAD9C,\n\t52673 - 44032: 0xAD9D,\n\t52674 - 44032: 0xAD9E,\n\t52675 - 44032: 0xAD9F,\n\t52676 - 44032: 0xC3E8,\n\t52677 - 44032: 0xADA0,\n\t52678 - 44032: 0xAE41,\n\t52679 - 44032: 0xAE42,\n\t52680 - 44032: 0xAE43,\n\t52681 - 44032: 0xAE44,\n\t52682 - 44032: 0xAE45,\n\t52683 - 44032: 0xAE46,\n\t52684 - 44032: 0xC3E9,\n\t52685 - 44032: 0xAE47,\n\t52686 - 44032: 0xAE48,\n\t52687 - 44032: 0xAE49,\n\t52688 - 44032: 0xC3EA,\n\t52689 - 44032: 0xAE4A,\n\t52690 - 44032: 0xAE4B,\n\t52691 - 44032: 0xAE4C,\n\t52692 - 44032: 0xAE4D,\n\t52693 - 44032: 0xAE4E,\n\t52694 - 44032: 0xAE4F,\n\t52695 - 44032: 0xAE50,\n\t52696 - 44032: 0xAE51,\n\t52697 - 44032: 0xAE52,\n\t52698 - 44032: 0xAE53,\n\t52699 - 44032: 0xAE54,\n\t52700 - 44032: 0xAE55,\n\t52701 - 44032: 0xAE56,\n\t52702 - 44032: 0xAE57,\n\t52703 - 44032: 0xAE58,\n\t52704 - 44032: 0xAE59,\n\t52705 - 44032: 0xAE5A,\n\t52706 - 44032: 0xAE61,\n\t52707 - 44032: 0xAE62,\n\t52708 - 44032: 0xAE63,\n\t52709 - 44032: 0xAE64,\n\t52710 - 44032: 0xAE65,\n\t52711 - 44032: 0xAE66,\n\t52712 - 44032: 0xC3EB,\n\t52713 - 44032: 0xAE67,\n\t52714 - 44032: 0xAE68,\n\t52715 - 44032: 0xAE69,\n\t52716 - 44032: 0xC3EC,\n\t52717 - 44032: 0xAE6A,\n\t52718 - 44032: 0xAE6B,\n\t52719 - 44032: 0xAE6C,\n\t52720 - 44032: 0xC3ED,\n\t52721 - 44032: 0xAE6D,\n\t52722 - 44032: 0xAE6E,\n\t52723 - 44032: 0xAE6F,\n\t52724 - 44032: 0xAE70,\n\t52725 - 44032: 0xAE71,\n\t52726 - 44032: 0xAE72,\n\t52727 - 44032: 0xAE73,\n\t52728 - 44032: 0xC3EE,\n\t52729 - 44032: 0xC3EF,\n\t52730 - 44032: 0xAE74,\n\t52731 - 44032: 0xC3F0,\n\t52732 - 44032: 0xAE75,\n\t52733 - 44032: 0xC3F1,\n\t52734 - 44032: 0xAE76,\n\t52735 - 44032: 0xAE77,\n\t52736 - 44032: 0xAE78,\n\t52737 - 44032: 0xAE79,\n\t52738 - 44032: 0xAE7A,\n\t52739 - 44032: 0xAE81,\n\t52740 - 44032: 0xC3F2,\n\t52741 - 44032: 0xAE82,\n\t52742 - 44032: 0xAE83,\n\t52743 - 44032: 0xAE84,\n\t52744 - 44032: 0xC3F3,\n\t52745 - 44032: 0xAE85,\n\t52746 - 44032: 0xAE86,\n\t52747 - 44032: 0xAE87,\n\t52748 - 44032: 0xC3F4,\n\t52749 - 44032: 0xAE88,\n\t52750 - 44032: 0xAE89,\n\t52751 - 44032: 0xAE8A,\n\t52752 - 44032: 0xAE8B,\n\t52753 - 44032: 0xAE8C,\n\t52754 - 44032: 0xAE8D,\n\t52755 - 44032: 0xAE8E,\n\t52756 - 44032: 0xC3F5,\n\t52757 - 44032: 0xAE8F,\n\t52758 - 44032: 0xAE90,\n\t52759 - 44032: 0xAE91,\n\t52760 - 44032: 0xAE92,\n\t52761 - 44032: 0xC3F6,\n\t52762 - 44032: 0xAE93,\n\t52763 - 44032: 0xAE94,\n\t52764 - 44032: 0xAE95,\n\t52765 - 44032: 0xAE96,\n\t52766 - 44032: 0xAE97,\n\t52767 - 44032: 0xAE98,\n\t52768 - 44032: 0xC3F7,\n\t52769 - 44032: 0xC3F8,\n\t52770 - 44032: 0xAE99,\n\t52771 - 44032: 0xAE9A,\n\t52772 - 44032: 0xC3F9,\n\t52773 - 44032: 0xAE9B,\n\t52774 - 44032: 0xAE9C,\n\t52775 - 44032: 0xAE9D,\n\t52776 - 44032: 0xC3FA,\n\t52777 - 44032: 0xAE9E,\n\t52778 - 44032: 0xAE9F,\n\t52779 - 44032: 0xAEA0,\n\t52780 - 44032: 0xAF41,\n\t52781 - 44032: 0xAF42,\n\t52782 - 44032: 0xAF43,\n\t52783 - 44032: 0xAF44,\n\t52784 - 44032: 0xC3FB,\n\t52785 - 44032: 0xC3FC,\n\t52786 - 44032: 0xAF45,\n\t52787 - 44032: 0xC3FD,\n\t52788 - 44032: 0xAF46,\n\t52789 - 44032: 0xC3FE,\n\t52790 - 44032: 0xAF47,\n\t52791 - 44032: 0xAF48,\n\t52792 - 44032: 0xAF49,\n\t52793 - 44032: 0xAF4A,\n\t52794 - 44032: 0xAF4B,\n\t52795 - 44032: 0xAF4C,\n\t52796 - 44032: 0xAF4D,\n\t52797 - 44032: 0xAF4E,\n\t52798 - 44032: 0xAF4F,\n\t52799 - 44032: 0xAF50,\n\t52800 - 44032: 0xAF51,\n\t52801 - 44032: 0xAF52,\n\t52802 - 44032: 0xAF53,\n\t52803 - 44032: 0xAF54,\n\t52804 - 44032: 0xAF55,\n\t52805 - 44032: 0xAF56,\n\t52806 - 44032: 0xAF57,\n\t52807 - 44032: 0xAF58,\n\t52808 - 44032: 0xAF59,\n\t52809 - 44032: 0xAF5A,\n\t52810 - 44032: 0xAF61,\n\t52811 - 44032: 0xAF62,\n\t52812 - 44032: 0xAF63,\n\t52813 - 44032: 0xAF64,\n\t52814 - 44032: 0xAF65,\n\t52815 - 44032: 0xAF66,\n\t52816 - 44032: 0xAF67,\n\t52817 - 44032: 0xAF68,\n\t52818 - 44032: 0xAF69,\n\t52819 - 44032: 0xAF6A,\n\t52820 - 44032: 0xAF6B,\n\t52821 - 44032: 0xAF6C,\n\t52822 - 44032: 0xAF6D,\n\t52823 - 44032: 0xAF6E,\n\t52824 - 44032: 0xC4A1,\n\t52825 - 44032: 0xC4A2,\n\t52826 - 44032: 0xAF6F,\n\t52827 - 44032: 0xAF70,\n\t52828 - 44032: 0xC4A3,\n\t52829 - 44032: 0xAF71,\n\t52830 - 44032: 0xAF72,\n\t52831 - 44032: 0xC4A4,\n\t52832 - 44032: 0xC4A5,\n\t52833 - 44032: 0xC4A6,\n\t52834 - 44032: 0xAF73,\n\t52835 - 44032: 0xAF74,\n\t52836 - 44032: 0xAF75,\n\t52837 - 44032: 0xAF76,\n\t52838 - 44032: 0xAF77,\n\t52839 - 44032: 0xAF78,\n\t52840 - 44032: 0xC4A7,\n\t52841 - 44032: 0xC4A8,\n\t52842 - 44032: 0xAF79,\n\t52843 - 44032: 0xC4A9,\n\t52844 - 44032: 0xAF7A,\n\t52845 - 44032: 0xC4AA,\n\t52846 - 44032: 0xAF81,\n\t52847 - 44032: 0xAF82,\n\t52848 - 44032: 0xAF83,\n\t52849 - 44032: 0xAF84,\n\t52850 - 44032: 0xAF85,\n\t52851 - 44032: 0xAF86,\n\t52852 - 44032: 0xC4AB,\n\t52853 - 44032: 0xC4AC,\n\t52854 - 44032: 0xAF87,\n\t52855 - 44032: 0xAF88,\n\t52856 - 44032: 0xC4AD,\n\t52857 - 44032: 0xAF89,\n\t52858 - 44032: 0xAF8A,\n\t52859 - 44032: 0xAF8B,\n\t52860 - 44032: 0xC4AE,\n\t52861 - 44032: 0xAF8C,\n\t52862 - 44032: 0xAF8D,\n\t52863 - 44032: 0xAF8E,\n\t52864 - 44032: 0xAF8F,\n\t52865 - 44032: 0xAF90,\n\t52866 - 44032: 0xAF91,\n\t52867 - 44032: 0xAF92,\n\t52868 - 44032: 0xC4AF,\n\t52869 - 44032: 0xC4B0,\n\t52870 - 44032: 0xAF93,\n\t52871 - 44032: 0xC4B1,\n\t52872 - 44032: 0xAF94,\n\t52873 - 44032: 0xC4B2,\n\t52874 - 44032: 0xAF95,\n\t52875 - 44032: 0xAF96,\n\t52876 - 44032: 0xAF97,\n\t52877 - 44032: 0xAF98,\n\t52878 - 44032: 0xAF99,\n\t52879 - 44032: 0xAF9A,\n\t52880 - 44032: 0xC4B3,\n\t52881 - 44032: 0xC4B4,\n\t52882 - 44032: 0xAF9B,\n\t52883 - 44032: 0xAF9C,\n\t52884 - 44032: 0xC4B5,\n\t52885 - 44032: 0xAF9D,\n\t52886 - 44032: 0xAF9E,\n\t52887 - 44032: 0xAF9F,\n\t52888 - 44032: 0xC4B6,\n\t52889 - 44032: 0xAFA0,\n\t52890 - 44032: 0xB041,\n\t52891 - 44032: 0xB042,\n\t52892 - 44032: 0xB043,\n\t52893 - 44032: 0xB044,\n\t52894 - 44032: 0xB045,\n\t52895 - 44032: 0xB046,\n\t52896 - 44032: 0xC4B7,\n\t52897 - 44032: 0xC4B8,\n\t52898 - 44032: 0xB047,\n\t52899 - 44032: 0xC4B9,\n\t52900 - 44032: 0xC4BA,\n\t52901 - 44032: 0xC4BB,\n\t52902 - 44032: 0xB048,\n\t52903 - 44032: 0xB049,\n\t52904 - 44032: 0xB04A,\n\t52905 - 44032: 0xB04B,\n\t52906 - 44032: 0xB04C,\n\t52907 - 44032: 0xB04D,\n\t52908 - 44032: 0xC4BC,\n\t52909 - 44032: 0xC4BD,\n\t52910 - 44032: 0xB04E,\n\t52911 - 44032: 0xB04F,\n\t52912 - 44032: 0xB050,\n\t52913 - 44032: 0xB051,\n\t52914 - 44032: 0xB052,\n\t52915 - 44032: 0xB053,\n\t52916 - 44032: 0xB054,\n\t52917 - 44032: 0xB055,\n\t52918 - 44032: 0xB056,\n\t52919 - 44032: 0xB057,\n\t52920 - 44032: 0xB058,\n\t52921 - 44032: 0xB059,\n\t52922 - 44032: 0xB05A,\n\t52923 - 44032: 0xB061,\n\t52924 - 44032: 0xB062,\n\t52925 - 44032: 0xB063,\n\t52926 - 44032: 0xB064,\n\t52927 - 44032: 0xB065,\n\t52928 - 44032: 0xB066,\n\t52929 - 44032: 0xC4BE,\n\t52930 - 44032: 0xB067,\n\t52931 - 44032: 0xB068,\n\t52932 - 44032: 0xB069,\n\t52933 - 44032: 0xB06A,\n\t52934 - 44032: 0xB06B,\n\t52935 - 44032: 0xB06C,\n\t52936 - 44032: 0xB06D,\n\t52937 - 44032: 0xB06E,\n\t52938 - 44032: 0xB06F,\n\t52939 - 44032: 0xB070,\n\t52940 - 44032: 0xB071,\n\t52941 - 44032: 0xB072,\n\t52942 - 44032: 0xB073,\n\t52943 - 44032: 0xB074,\n\t52944 - 44032: 0xB075,\n\t52945 - 44032: 0xB076,\n\t52946 - 44032: 0xB077,\n\t52947 - 44032: 0xB078,\n\t52948 - 44032: 0xB079,\n\t52949 - 44032: 0xB07A,\n\t52950 - 44032: 0xB081,\n\t52951 - 44032: 0xB082,\n\t52952 - 44032: 0xB083,\n\t52953 - 44032: 0xB084,\n\t52954 - 44032: 0xB085,\n\t52955 - 44032: 0xB086,\n\t52956 - 44032: 0xB087,\n\t52957 - 44032: 0xB088,\n\t52958 - 44032: 0xB089,\n\t52959 - 44032: 0xB08A,\n\t52960 - 44032: 0xB08B,\n\t52961 - 44032: 0xB08C,\n\t52962 - 44032: 0xB08D,\n\t52963 - 44032: 0xB08E,\n\t52964 - 44032: 0xC4BF,\n\t52965 - 44032: 0xC4C0,\n\t52966 - 44032: 0xB08F,\n\t52967 - 44032: 0xB090,\n\t52968 - 44032: 0xC4C1,\n\t52969 - 44032: 0xB091,\n\t52970 - 44032: 0xB092,\n\t52971 - 44032: 0xC4C2,\n\t52972 - 44032: 0xC4C3,\n\t52973 - 44032: 0xB093,\n\t52974 - 44032: 0xB094,\n\t52975 - 44032: 0xB095,\n\t52976 - 44032: 0xB096,\n\t52977 - 44032: 0xB097,\n\t52978 - 44032: 0xB098,\n\t52979 - 44032: 0xB099,\n\t52980 - 44032: 0xC4C4,\n\t52981 - 44032: 0xC4C5,\n\t52982 - 44032: 0xB09A,\n\t52983 - 44032: 0xC4C6,\n\t52984 - 44032: 0xC4C7,\n\t52985 - 44032: 0xC4C8,\n\t52986 - 44032: 0xB09B,\n\t52987 - 44032: 0xB09C,\n\t52988 - 44032: 0xB09D,\n\t52989 - 44032: 0xB09E,\n\t52990 - 44032: 0xB09F,\n\t52991 - 44032: 0xB0A0,\n\t52992 - 44032: 0xC4C9,\n\t52993 - 44032: 0xC4CA,\n\t52994 - 44032: 0xB141,\n\t52995 - 44032: 0xB142,\n\t52996 - 44032: 0xC4CB,\n\t52997 - 44032: 0xB143,\n\t52998 - 44032: 0xB144,\n\t52999 - 44032: 0xB145,\n\t53000 - 44032: 0xC4CC,\n\t53001 - 44032: 0xB146,\n\t53002 - 44032: 0xB147,\n\t53003 - 44032: 0xB148,\n\t53004 - 44032: 0xB149,\n\t53005 - 44032: 0xB14A,\n\t53006 - 44032: 0xB14B,\n\t53007 - 44032: 0xB14C,\n\t53008 - 44032: 0xC4CD,\n\t53009 - 44032: 0xC4CE,\n\t53010 - 44032: 0xB14D,\n\t53011 - 44032: 0xC4CF,\n\t53012 - 44032: 0xB14E,\n\t53013 - 44032: 0xC4D0,\n\t53014 - 44032: 0xB14F,\n\t53015 - 44032: 0xB150,\n\t53016 - 44032: 0xB151,\n\t53017 - 44032: 0xB152,\n\t53018 - 44032: 0xB153,\n\t53019 - 44032: 0xB154,\n\t53020 - 44032: 0xC4D1,\n\t53021 - 44032: 0xB155,\n\t53022 - 44032: 0xB156,\n\t53023 - 44032: 0xB157,\n\t53024 - 44032: 0xC4D2,\n\t53025 - 44032: 0xB158,\n\t53026 - 44032: 0xB159,\n\t53027 - 44032: 0xB15A,\n\t53028 - 44032: 0xC4D3,\n\t53029 - 44032: 0xB161,\n\t53030 - 44032: 0xB162,\n\t53031 - 44032: 0xB163,\n\t53032 - 44032: 0xB164,\n\t53033 - 44032: 0xB165,\n\t53034 - 44032: 0xB166,\n\t53035 - 44032: 0xB167,\n\t53036 - 44032: 0xC4D4,\n\t53037 - 44032: 0xC4D5,\n\t53038 - 44032: 0xB168,\n\t53039 - 44032: 0xC4D6,\n\t53040 - 44032: 0xC4D7,\n\t53041 - 44032: 0xC4D8,\n\t53042 - 44032: 0xB169,\n\t53043 - 44032: 0xB16A,\n\t53044 - 44032: 0xB16B,\n\t53045 - 44032: 0xB16C,\n\t53046 - 44032: 0xB16D,\n\t53047 - 44032: 0xB16E,\n\t53048 - 44032: 0xC4D9,\n\t53049 - 44032: 0xB16F,\n\t53050 - 44032: 0xB170,\n\t53051 - 44032: 0xB171,\n\t53052 - 44032: 0xB172,\n\t53053 - 44032: 0xB173,\n\t53054 - 44032: 0xB174,\n\t53055 - 44032: 0xB175,\n\t53056 - 44032: 0xB176,\n\t53057 - 44032: 0xB177,\n\t53058 - 44032: 0xB178,\n\t53059 - 44032: 0xB179,\n\t53060 - 44032: 0xB17A,\n\t53061 - 44032: 0xB181,\n\t53062 - 44032: 0xB182,\n\t53063 - 44032: 0xB183,\n\t53064 - 44032: 0xB184,\n\t53065 - 44032: 0xB185,\n\t53066 - 44032: 0xB186,\n\t53067 - 44032: 0xB187,\n\t53068 - 44032: 0xB188,\n\t53069 - 44032: 0xB189,\n\t53070 - 44032: 0xB18A,\n\t53071 - 44032: 0xB18B,\n\t53072 - 44032: 0xB18C,\n\t53073 - 44032: 0xB18D,\n\t53074 - 44032: 0xB18E,\n\t53075 - 44032: 0xB18F,\n\t53076 - 44032: 0xC4DA,\n\t53077 - 44032: 0xC4DB,\n\t53078 - 44032: 0xB190,\n\t53079 - 44032: 0xB191,\n\t53080 - 44032: 0xC4DC,\n\t53081 - 44032: 0xB192,\n\t53082 - 44032: 0xB193,\n\t53083 - 44032: 0xB194,\n\t53084 - 44032: 0xC4DD,\n\t53085 - 44032: 0xB195,\n\t53086 - 44032: 0xB196,\n\t53087 - 44032: 0xB197,\n\t53088 - 44032: 0xB198,\n\t53089 - 44032: 0xB199,\n\t53090 - 44032: 0xB19A,\n\t53091 - 44032: 0xB19B,\n\t53092 - 44032: 0xC4DE,\n\t53093 - 44032: 0xC4DF,\n\t53094 - 44032: 0xB19C,\n\t53095 - 44032: 0xC4E0,\n\t53096 - 44032: 0xB19D,\n\t53097 - 44032: 0xC4E1,\n\t53098 - 44032: 0xB19E,\n\t53099 - 44032: 0xB19F,\n\t53100 - 44032: 0xB1A0,\n\t53101 - 44032: 0xB241,\n\t53102 - 44032: 0xB242,\n\t53103 - 44032: 0xB243,\n\t53104 - 44032: 0xC4E2,\n\t53105 - 44032: 0xC4E3,\n\t53106 - 44032: 0xB244,\n\t53107 - 44032: 0xB245,\n\t53108 - 44032: 0xC4E4,\n\t53109 - 44032: 0xB246,\n\t53110 - 44032: 0xB247,\n\t53111 - 44032: 0xB248,\n\t53112 - 44032: 0xC4E5,\n\t53113 - 44032: 0xB249,\n\t53114 - 44032: 0xB24A,\n\t53115 - 44032: 0xB24B,\n\t53116 - 44032: 0xB24C,\n\t53117 - 44032: 0xB24D,\n\t53118 - 44032: 0xB24E,\n\t53119 - 44032: 0xB24F,\n\t53120 - 44032: 0xC4E6,\n\t53121 - 44032: 0xB250,\n\t53122 - 44032: 0xB251,\n\t53123 - 44032: 0xB252,\n\t53124 - 44032: 0xB253,\n\t53125 - 44032: 0xC4E7,\n\t53126 - 44032: 0xB254,\n\t53127 - 44032: 0xB255,\n\t53128 - 44032: 0xB256,\n\t53129 - 44032: 0xB257,\n\t53130 - 44032: 0xB258,\n\t53131 - 44032: 0xB259,\n\t53132 - 44032: 0xC4E8,\n\t53133 - 44032: 0xB25A,\n\t53134 - 44032: 0xB261,\n\t53135 - 44032: 0xB262,\n\t53136 - 44032: 0xB263,\n\t53137 - 44032: 0xB264,\n\t53138 - 44032: 0xB265,\n\t53139 - 44032: 0xB266,\n\t53140 - 44032: 0xB267,\n\t53141 - 44032: 0xB268,\n\t53142 - 44032: 0xB269,\n\t53143 - 44032: 0xB26A,\n\t53144 - 44032: 0xB26B,\n\t53145 - 44032: 0xB26C,\n\t53146 - 44032: 0xB26D,\n\t53147 - 44032: 0xB26E,\n\t53148 - 44032: 0xB26F,\n\t53149 - 44032: 0xB270,\n\t53150 - 44032: 0xB271,\n\t53151 - 44032: 0xB272,\n\t53152 - 44032: 0xB273,\n\t53153 - 44032: 0xC4E9,\n\t53154 - 44032: 0xB274,\n\t53155 - 44032: 0xB275,\n\t53156 - 44032: 0xB276,\n\t53157 - 44032: 0xB277,\n\t53158 - 44032: 0xB278,\n\t53159 - 44032: 0xB279,\n\t53160 - 44032: 0xC4EA,\n\t53161 - 44032: 0xB27A,\n\t53162 - 44032: 0xB281,\n\t53163 - 44032: 0xB282,\n\t53164 - 44032: 0xB283,\n\t53165 - 44032: 0xB284,\n\t53166 - 44032: 0xB285,\n\t53167 - 44032: 0xB286,\n\t53168 - 44032: 0xC4EB,\n\t53169 - 44032: 0xB287,\n\t53170 - 44032: 0xB288,\n\t53171 - 44032: 0xB289,\n\t53172 - 44032: 0xB28A,\n\t53173 - 44032: 0xB28B,\n\t53174 - 44032: 0xB28C,\n\t53175 - 44032: 0xB28D,\n\t53176 - 44032: 0xB28E,\n\t53177 - 44032: 0xB28F,\n\t53178 - 44032: 0xB290,\n\t53179 - 44032: 0xB291,\n\t53180 - 44032: 0xB292,\n\t53181 - 44032: 0xB293,\n\t53182 - 44032: 0xB294,\n\t53183 - 44032: 0xB295,\n\t53184 - 44032: 0xB296,\n\t53185 - 44032: 0xB297,\n\t53186 - 44032: 0xB298,\n\t53187 - 44032: 0xB299,\n\t53188 - 44032: 0xC4EC,\n\t53189 - 44032: 0xB29A,\n\t53190 - 44032: 0xB29B,\n\t53191 - 44032: 0xB29C,\n\t53192 - 44032: 0xB29D,\n\t53193 - 44032: 0xB29E,\n\t53194 - 44032: 0xB29F,\n\t53195 - 44032: 0xB2A0,\n\t53196 - 44032: 0xB341,\n\t53197 - 44032: 0xB342,\n\t53198 - 44032: 0xB343,\n\t53199 - 44032: 0xB344,\n\t53200 - 44032: 0xB345,\n\t53201 - 44032: 0xB346,\n\t53202 - 44032: 0xB347,\n\t53203 - 44032: 0xB348,\n\t53204 - 44032: 0xB349,\n\t53205 - 44032: 0xB34A,\n\t53206 - 44032: 0xB34B,\n\t53207 - 44032: 0xB34C,\n\t53208 - 44032: 0xB34D,\n\t53209 - 44032: 0xB34E,\n\t53210 - 44032: 0xB34F,\n\t53211 - 44032: 0xB350,\n\t53212 - 44032: 0xB351,\n\t53213 - 44032: 0xB352,\n\t53214 - 44032: 0xB353,\n\t53215 - 44032: 0xB354,\n\t53216 - 44032: 0xC4ED,\n\t53217 - 44032: 0xC4EE,\n\t53218 - 44032: 0xB355,\n\t53219 - 44032: 0xB356,\n\t53220 - 44032: 0xC4EF,\n\t53221 - 44032: 0xB357,\n\t53222 - 44032: 0xB358,\n\t53223 - 44032: 0xB359,\n\t53224 - 44032: 0xC4F0,\n\t53225 - 44032: 0xB35A,\n\t53226 - 44032: 0xB361,\n\t53227 - 44032: 0xB362,\n\t53228 - 44032: 0xB363,\n\t53229 - 44032: 0xB364,\n\t53230 - 44032: 0xB365,\n\t53231 - 44032: 0xB366,\n\t53232 - 44032: 0xC4F1,\n\t53233 - 44032: 0xC4F2,\n\t53234 - 44032: 0xB367,\n\t53235 - 44032: 0xC4F3,\n\t53236 - 44032: 0xB368,\n\t53237 - 44032: 0xC4F4,\n\t53238 - 44032: 0xB369,\n\t53239 - 44032: 0xB36A,\n\t53240 - 44032: 0xB36B,\n\t53241 - 44032: 0xB36C,\n\t53242 - 44032: 0xB36D,\n\t53243 - 44032: 0xB36E,\n\t53244 - 44032: 0xC4F5,\n\t53245 - 44032: 0xB36F,\n\t53246 - 44032: 0xB370,\n\t53247 - 44032: 0xB371,\n\t53248 - 44032: 0xC4F6,\n\t53249 - 44032: 0xB372,\n\t53250 - 44032: 0xB373,\n\t53251 - 44032: 0xB374,\n\t53252 - 44032: 0xC4F7,\n\t53253 - 44032: 0xB375,\n\t53254 - 44032: 0xB376,\n\t53255 - 44032: 0xB377,\n\t53256 - 44032: 0xB378,\n\t53257 - 44032: 0xB379,\n\t53258 - 44032: 0xB37A,\n\t53259 - 44032: 0xB381,\n\t53260 - 44032: 0xB382,\n\t53261 - 44032: 0xB383,\n\t53262 - 44032: 0xB384,\n\t53263 - 44032: 0xB385,\n\t53264 - 44032: 0xB386,\n\t53265 - 44032: 0xC4F8,\n\t53266 - 44032: 0xB387,\n\t53267 - 44032: 0xB388,\n\t53268 - 44032: 0xB389,\n\t53269 - 44032: 0xB38A,\n\t53270 - 44032: 0xB38B,\n\t53271 - 44032: 0xB38C,\n\t53272 - 44032: 0xC4F9,\n\t53273 - 44032: 0xB38D,\n\t53274 - 44032: 0xB38E,\n\t53275 - 44032: 0xB38F,\n\t53276 - 44032: 0xB390,\n\t53277 - 44032: 0xB391,\n\t53278 - 44032: 0xB392,\n\t53279 - 44032: 0xB393,\n\t53280 - 44032: 0xB394,\n\t53281 - 44032: 0xB395,\n\t53282 - 44032: 0xB396,\n\t53283 - 44032: 0xB397,\n\t53284 - 44032: 0xB398,\n\t53285 - 44032: 0xB399,\n\t53286 - 44032: 0xB39A,\n\t53287 - 44032: 0xB39B,\n\t53288 - 44032: 0xB39C,\n\t53289 - 44032: 0xB39D,\n\t53290 - 44032: 0xB39E,\n\t53291 - 44032: 0xB39F,\n\t53292 - 44032: 0xB3A0,\n\t53293 - 44032: 0xC4FA,\n\t53294 - 44032: 0xB441,\n\t53295 - 44032: 0xB442,\n\t53296 - 44032: 0xB443,\n\t53297 - 44032: 0xB444,\n\t53298 - 44032: 0xB445,\n\t53299 - 44032: 0xB446,\n\t53300 - 44032: 0xC4FB,\n\t53301 - 44032: 0xC4FC,\n\t53302 - 44032: 0xB447,\n\t53303 - 44032: 0xB448,\n\t53304 - 44032: 0xC4FD,\n\t53305 - 44032: 0xB449,\n\t53306 - 44032: 0xB44A,\n\t53307 - 44032: 0xB44B,\n\t53308 - 44032: 0xC4FE,\n\t53309 - 44032: 0xB44C,\n\t53310 - 44032: 0xB44D,\n\t53311 - 44032: 0xB44E,\n\t53312 - 44032: 0xB44F,\n\t53313 - 44032: 0xB450,\n\t53314 - 44032: 0xB451,\n\t53315 - 44032: 0xB452,\n\t53316 - 44032: 0xC5A1,\n\t53317 - 44032: 0xC5A2,\n\t53318 - 44032: 0xB453,\n\t53319 - 44032: 0xC5A3,\n\t53320 - 44032: 0xB454,\n\t53321 - 44032: 0xC5A4,\n\t53322 - 44032: 0xB455,\n\t53323 - 44032: 0xB456,\n\t53324 - 44032: 0xB457,\n\t53325 - 44032: 0xB458,\n\t53326 - 44032: 0xB459,\n\t53327 - 44032: 0xB45A,\n\t53328 - 44032: 0xC5A5,\n\t53329 - 44032: 0xB461,\n\t53330 - 44032: 0xB462,\n\t53331 - 44032: 0xB463,\n\t53332 - 44032: 0xC5A6,\n\t53333 - 44032: 0xB464,\n\t53334 - 44032: 0xB465,\n\t53335 - 44032: 0xB466,\n\t53336 - 44032: 0xC5A7,\n\t53337 - 44032: 0xB467,\n\t53338 - 44032: 0xB468,\n\t53339 - 44032: 0xB469,\n\t53340 - 44032: 0xB46A,\n\t53341 - 44032: 0xB46B,\n\t53342 - 44032: 0xB46C,\n\t53343 - 44032: 0xB46D,\n\t53344 - 44032: 0xC5A8,\n\t53345 - 44032: 0xB46E,\n\t53346 - 44032: 0xB46F,\n\t53347 - 44032: 0xB470,\n\t53348 - 44032: 0xB471,\n\t53349 - 44032: 0xB472,\n\t53350 - 44032: 0xB473,\n\t53351 - 44032: 0xB474,\n\t53352 - 44032: 0xB475,\n\t53353 - 44032: 0xB476,\n\t53354 - 44032: 0xB477,\n\t53355 - 44032: 0xB478,\n\t53356 - 44032: 0xC5A9,\n\t53357 - 44032: 0xC5AA,\n\t53358 - 44032: 0xB479,\n\t53359 - 44032: 0xB47A,\n\t53360 - 44032: 0xC5AB,\n\t53361 - 44032: 0xB481,\n\t53362 - 44032: 0xB482,\n\t53363 - 44032: 0xB483,\n\t53364 - 44032: 0xC5AC,\n\t53365 - 44032: 0xB484,\n\t53366 - 44032: 0xB485,\n\t53367 - 44032: 0xB486,\n\t53368 - 44032: 0xB487,\n\t53369 - 44032: 0xB488,\n\t53370 - 44032: 0xB489,\n\t53371 - 44032: 0xB48A,\n\t53372 - 44032: 0xC5AD,\n\t53373 - 44032: 0xC5AE,\n\t53374 - 44032: 0xB48B,\n\t53375 - 44032: 0xB48C,\n\t53376 - 44032: 0xB48D,\n\t53377 - 44032: 0xC5AF,\n\t53378 - 44032: 0xB48E,\n\t53379 - 44032: 0xB48F,\n\t53380 - 44032: 0xB490,\n\t53381 - 44032: 0xB491,\n\t53382 - 44032: 0xB492,\n\t53383 - 44032: 0xB493,\n\t53384 - 44032: 0xB494,\n\t53385 - 44032: 0xB495,\n\t53386 - 44032: 0xB496,\n\t53387 - 44032: 0xB497,\n\t53388 - 44032: 0xB498,\n\t53389 - 44032: 0xB499,\n\t53390 - 44032: 0xB49A,\n\t53391 - 44032: 0xB49B,\n\t53392 - 44032: 0xB49C,\n\t53393 - 44032: 0xB49D,\n\t53394 - 44032: 0xB49E,\n\t53395 - 44032: 0xB49F,\n\t53396 - 44032: 0xB4A0,\n\t53397 - 44032: 0xB541,\n\t53398 - 44032: 0xB542,\n\t53399 - 44032: 0xB543,\n\t53400 - 44032: 0xB544,\n\t53401 - 44032: 0xB545,\n\t53402 - 44032: 0xB546,\n\t53403 - 44032: 0xB547,\n\t53404 - 44032: 0xB548,\n\t53405 - 44032: 0xB549,\n\t53406 - 44032: 0xB54A,\n\t53407 - 44032: 0xB54B,\n\t53408 - 44032: 0xB54C,\n\t53409 - 44032: 0xB54D,\n\t53410 - 44032: 0xB54E,\n\t53411 - 44032: 0xB54F,\n\t53412 - 44032: 0xC5B0,\n\t53413 - 44032: 0xC5B1,\n\t53414 - 44032: 0xB550,\n\t53415 - 44032: 0xB551,\n\t53416 - 44032: 0xC5B2,\n\t53417 - 44032: 0xB552,\n\t53418 - 44032: 0xB553,\n\t53419 - 44032: 0xB554,\n\t53420 - 44032: 0xC5B3,\n\t53421 - 44032: 0xB555,\n\t53422 - 44032: 0xB556,\n\t53423 - 44032: 0xB557,\n\t53424 - 44032: 0xB558,\n\t53425 - 44032: 0xB559,\n\t53426 - 44032: 0xB55A,\n\t53427 - 44032: 0xB561,\n\t53428 - 44032: 0xC5B4,\n\t53429 - 44032: 0xC5B5,\n\t53430 - 44032: 0xB562,\n\t53431 - 44032: 0xC5B6,\n\t53432 - 44032: 0xB563,\n\t53433 - 44032: 0xC5B7,\n\t53434 - 44032: 0xB564,\n\t53435 - 44032: 0xB565,\n\t53436 - 44032: 0xB566,\n\t53437 - 44032: 0xB567,\n\t53438 - 44032: 0xB568,\n\t53439 - 44032: 0xB569,\n\t53440 - 44032: 0xC5B8,\n\t53441 - 44032: 0xC5B9,\n\t53442 - 44032: 0xB56A,\n\t53443 - 44032: 0xB56B,\n\t53444 - 44032: 0xC5BA,\n\t53445 - 44032: 0xB56C,\n\t53446 - 44032: 0xB56D,\n\t53447 - 44032: 0xB56E,\n\t53448 - 44032: 0xC5BB,\n\t53449 - 44032: 0xC5BC,\n\t53450 - 44032: 0xB56F,\n\t53451 - 44032: 0xB570,\n\t53452 - 44032: 0xB571,\n\t53453 - 44032: 0xB572,\n\t53454 - 44032: 0xB573,\n\t53455 - 44032: 0xB574,\n\t53456 - 44032: 0xC5BD,\n\t53457 - 44032: 0xC5BE,\n\t53458 - 44032: 0xB575,\n\t53459 - 44032: 0xC5BF,\n\t53460 - 44032: 0xC5C0,\n\t53461 - 44032: 0xC5C1,\n\t53462 - 44032: 0xB576,\n\t53463 - 44032: 0xB577,\n\t53464 - 44032: 0xB578,\n\t53465 - 44032: 0xB579,\n\t53466 - 44032: 0xB57A,\n\t53467 - 44032: 0xB581,\n\t53468 - 44032: 0xC5C2,\n\t53469 - 44032: 0xC5C3,\n\t53470 - 44032: 0xB582,\n\t53471 - 44032: 0xB583,\n\t53472 - 44032: 0xC5C4,\n\t53473 - 44032: 0xB584,\n\t53474 - 44032: 0xB585,\n\t53475 - 44032: 0xB586,\n\t53476 - 44032: 0xC5C5,\n\t53477 - 44032: 0xB587,\n\t53478 - 44032: 0xB588,\n\t53479 - 44032: 0xB589,\n\t53480 - 44032: 0xB58A,\n\t53481 - 44032: 0xB58B,\n\t53482 - 44032: 0xB58C,\n\t53483 - 44032: 0xB58D,\n\t53484 - 44032: 0xC5C6,\n\t53485 - 44032: 0xC5C7,\n\t53486 - 44032: 0xB58E,\n\t53487 - 44032: 0xC5C8,\n\t53488 - 44032: 0xC5C9,\n\t53489 - 44032: 0xC5CA,\n\t53490 - 44032: 0xB58F,\n\t53491 - 44032: 0xB590,\n\t53492 - 44032: 0xB591,\n\t53493 - 44032: 0xB592,\n\t53494 - 44032: 0xB593,\n\t53495 - 44032: 0xB594,\n\t53496 - 44032: 0xC5CB,\n\t53497 - 44032: 0xB595,\n\t53498 - 44032: 0xB596,\n\t53499 - 44032: 0xB597,\n\t53500 - 44032: 0xB598,\n\t53501 - 44032: 0xB599,\n\t53502 - 44032: 0xB59A,\n\t53503 - 44032: 0xB59B,\n\t53504 - 44032: 0xB59C,\n\t53505 - 44032: 0xB59D,\n\t53506 - 44032: 0xB59E,\n\t53507 - 44032: 0xB59F,\n\t53508 - 44032: 0xB5A0,\n\t53509 - 44032: 0xB641,\n\t53510 - 44032: 0xB642,\n\t53511 - 44032: 0xB643,\n\t53512 - 44032: 0xB644,\n\t53513 - 44032: 0xB645,\n\t53514 - 44032: 0xB646,\n\t53515 - 44032: 0xB647,\n\t53516 - 44032: 0xB648,\n\t53517 - 44032: 0xC5CC,\n\t53518 - 44032: 0xB649,\n\t53519 - 44032: 0xB64A,\n\t53520 - 44032: 0xB64B,\n\t53521 - 44032: 0xB64C,\n\t53522 - 44032: 0xB64D,\n\t53523 - 44032: 0xB64E,\n\t53524 - 44032: 0xB64F,\n\t53525 - 44032: 0xB650,\n\t53526 - 44032: 0xB651,\n\t53527 - 44032: 0xB652,\n\t53528 - 44032: 0xB653,\n\t53529 - 44032: 0xB654,\n\t53530 - 44032: 0xB655,\n\t53531 - 44032: 0xB656,\n\t53532 - 44032: 0xB657,\n\t53533 - 44032: 0xB658,\n\t53534 - 44032: 0xB659,\n\t53535 - 44032: 0xB65A,\n\t53536 - 44032: 0xB661,\n\t53537 - 44032: 0xB662,\n\t53538 - 44032: 0xB663,\n\t53539 - 44032: 0xB664,\n\t53540 - 44032: 0xB665,\n\t53541 - 44032: 0xB666,\n\t53542 - 44032: 0xB667,\n\t53543 - 44032: 0xB668,\n\t53544 - 44032: 0xB669,\n\t53545 - 44032: 0xB66A,\n\t53546 - 44032: 0xB66B,\n\t53547 - 44032: 0xB66C,\n\t53548 - 44032: 0xB66D,\n\t53549 - 44032: 0xB66E,\n\t53550 - 44032: 0xB66F,\n\t53551 - 44032: 0xB670,\n\t53552 - 44032: 0xC5CD,\n\t53553 - 44032: 0xC5CE,\n\t53554 - 44032: 0xB671,\n\t53555 - 44032: 0xB672,\n\t53556 - 44032: 0xC5CF,\n\t53557 - 44032: 0xB673,\n\t53558 - 44032: 0xB674,\n\t53559 - 44032: 0xB675,\n\t53560 - 44032: 0xC5D0,\n\t53561 - 44032: 0xB676,\n\t53562 - 44032: 0xC5D1,\n\t53563 - 44032: 0xB677,\n\t53564 - 44032: 0xB678,\n\t53565 - 44032: 0xB679,\n\t53566 - 44032: 0xB67A,\n\t53567 - 44032: 0xB681,\n\t53568 - 44032: 0xC5D2,\n\t53569 - 44032: 0xC5D3,\n\t53570 - 44032: 0xB682,\n\t53571 - 44032: 0xC5D4,\n\t53572 - 44032: 0xC5D5,\n\t53573 - 44032: 0xC5D6,\n\t53574 - 44032: 0xB683,\n\t53575 - 44032: 0xB684,\n\t53576 - 44032: 0xB685,\n\t53577 - 44032: 0xB686,\n\t53578 - 44032: 0xB687,\n\t53579 - 44032: 0xB688,\n\t53580 - 44032: 0xC5D7,\n\t53581 - 44032: 0xC5D8,\n\t53582 - 44032: 0xB689,\n\t53583 - 44032: 0xB68A,\n\t53584 - 44032: 0xC5D9,\n\t53585 - 44032: 0xB68B,\n\t53586 - 44032: 0xB68C,\n\t53587 - 44032: 0xB68D,\n\t53588 - 44032: 0xC5DA,\n\t53589 - 44032: 0xB68E,\n\t53590 - 44032: 0xB68F,\n\t53591 - 44032: 0xB690,\n\t53592 - 44032: 0xB691,\n\t53593 - 44032: 0xB692,\n\t53594 - 44032: 0xB693,\n\t53595 - 44032: 0xB694,\n\t53596 - 44032: 0xC5DB,\n\t53597 - 44032: 0xC5DC,\n\t53598 - 44032: 0xB695,\n\t53599 - 44032: 0xC5DD,\n\t53600 - 44032: 0xB696,\n\t53601 - 44032: 0xC5DE,\n\t53602 - 44032: 0xB697,\n\t53603 - 44032: 0xB698,\n\t53604 - 44032: 0xB699,\n\t53605 - 44032: 0xB69A,\n\t53606 - 44032: 0xB69B,\n\t53607 - 44032: 0xB69C,\n\t53608 - 44032: 0xC5DF,\n\t53609 - 44032: 0xB69D,\n\t53610 - 44032: 0xB69E,\n\t53611 - 44032: 0xB69F,\n\t53612 - 44032: 0xC5E0,\n\t53613 - 44032: 0xB6A0,\n\t53614 - 44032: 0xB741,\n\t53615 - 44032: 0xB742,\n\t53616 - 44032: 0xB743,\n\t53617 - 44032: 0xB744,\n\t53618 - 44032: 0xB745,\n\t53619 - 44032: 0xB746,\n\t53620 - 44032: 0xB747,\n\t53621 - 44032: 0xB748,\n\t53622 - 44032: 0xB749,\n\t53623 - 44032: 0xB74A,\n\t53624 - 44032: 0xB74B,\n\t53625 - 44032: 0xB74C,\n\t53626 - 44032: 0xB74D,\n\t53627 - 44032: 0xB74E,\n\t53628 - 44032: 0xC5E1,\n\t53629 - 44032: 0xB74F,\n\t53630 - 44032: 0xB750,\n\t53631 - 44032: 0xB751,\n\t53632 - 44032: 0xB752,\n\t53633 - 44032: 0xB753,\n\t53634 - 44032: 0xB754,\n\t53635 - 44032: 0xB755,\n\t53636 - 44032: 0xC5E2,\n\t53637 - 44032: 0xB756,\n\t53638 - 44032: 0xB757,\n\t53639 - 44032: 0xB758,\n\t53640 - 44032: 0xC5E3,\n\t53641 - 44032: 0xB759,\n\t53642 - 44032: 0xB75A,\n\t53643 - 44032: 0xB761,\n\t53644 - 44032: 0xB762,\n\t53645 - 44032: 0xB763,\n\t53646 - 44032: 0xB764,\n\t53647 - 44032: 0xB765,\n\t53648 - 44032: 0xB766,\n\t53649 - 44032: 0xB767,\n\t53650 - 44032: 0xB768,\n\t53651 - 44032: 0xB769,\n\t53652 - 44032: 0xB76A,\n\t53653 - 44032: 0xB76B,\n\t53654 - 44032: 0xB76C,\n\t53655 - 44032: 0xB76D,\n\t53656 - 44032: 0xB76E,\n\t53657 - 44032: 0xB76F,\n\t53658 - 44032: 0xB770,\n\t53659 - 44032: 0xB771,\n\t53660 - 44032: 0xB772,\n\t53661 - 44032: 0xB773,\n\t53662 - 44032: 0xB774,\n\t53663 - 44032: 0xB775,\n\t53664 - 44032: 0xC5E4,\n\t53665 - 44032: 0xC5E5,\n\t53666 - 44032: 0xB776,\n\t53667 - 44032: 0xB777,\n\t53668 - 44032: 0xC5E6,\n\t53669 - 44032: 0xB778,\n\t53670 - 44032: 0xB779,\n\t53671 - 44032: 0xB77A,\n\t53672 - 44032: 0xC5E7,\n\t53673 - 44032: 0xB781,\n\t53674 - 44032: 0xB782,\n\t53675 - 44032: 0xB783,\n\t53676 - 44032: 0xB784,\n\t53677 - 44032: 0xB785,\n\t53678 - 44032: 0xB786,\n\t53679 - 44032: 0xB787,\n\t53680 - 44032: 0xC5E8,\n\t53681 - 44032: 0xC5E9,\n\t53682 - 44032: 0xB788,\n\t53683 - 44032: 0xC5EA,\n\t53684 - 44032: 0xB789,\n\t53685 - 44032: 0xC5EB,\n\t53686 - 44032: 0xB78A,\n\t53687 - 44032: 0xB78B,\n\t53688 - 44032: 0xB78C,\n\t53689 - 44032: 0xB78D,\n\t53690 - 44032: 0xC5EC,\n\t53691 - 44032: 0xB78E,\n\t53692 - 44032: 0xC5ED,\n\t53693 - 44032: 0xB78F,\n\t53694 - 44032: 0xB790,\n\t53695 - 44032: 0xB791,\n\t53696 - 44032: 0xC5EE,\n\t53697 - 44032: 0xB792,\n\t53698 - 44032: 0xB793,\n\t53699 - 44032: 0xB794,\n\t53700 - 44032: 0xB795,\n\t53701 - 44032: 0xB796,\n\t53702 - 44032: 0xB797,\n\t53703 - 44032: 0xB798,\n\t53704 - 44032: 0xB799,\n\t53705 - 44032: 0xB79A,\n\t53706 - 44032: 0xB79B,\n\t53707 - 44032: 0xB79C,\n\t53708 - 44032: 0xB79D,\n\t53709 - 44032: 0xB79E,\n\t53710 - 44032: 0xB79F,\n\t53711 - 44032: 0xB7A0,\n\t53712 - 44032: 0xB841,\n\t53713 - 44032: 0xB842,\n\t53714 - 44032: 0xB843,\n\t53715 - 44032: 0xB844,\n\t53716 - 44032: 0xB845,\n\t53717 - 44032: 0xB846,\n\t53718 - 44032: 0xB847,\n\t53719 - 44032: 0xB848,\n\t53720 - 44032: 0xC5EF,\n\t53721 - 44032: 0xB849,\n\t53722 - 44032: 0xB84A,\n\t53723 - 44032: 0xB84B,\n\t53724 - 44032: 0xB84C,\n\t53725 - 44032: 0xB84D,\n\t53726 - 44032: 0xB84E,\n\t53727 - 44032: 0xB84F,\n\t53728 - 44032: 0xB850,\n\t53729 - 44032: 0xB851,\n\t53730 - 44032: 0xB852,\n\t53731 - 44032: 0xB853,\n\t53732 - 44032: 0xB854,\n\t53733 - 44032: 0xB855,\n\t53734 - 44032: 0xB856,\n\t53735 - 44032: 0xB857,\n\t53736 - 44032: 0xB858,\n\t53737 - 44032: 0xB859,\n\t53738 - 44032: 0xB85A,\n\t53739 - 44032: 0xB861,\n\t53740 - 44032: 0xB862,\n\t53741 - 44032: 0xB863,\n\t53742 - 44032: 0xB864,\n\t53743 - 44032: 0xB865,\n\t53744 - 44032: 0xB866,\n\t53745 - 44032: 0xB867,\n\t53746 - 44032: 0xB868,\n\t53747 - 44032: 0xB869,\n\t53748 - 44032: 0xC5F0,\n\t53749 - 44032: 0xB86A,\n\t53750 - 44032: 0xB86B,\n\t53751 - 44032: 0xB86C,\n\t53752 - 44032: 0xC5F1,\n\t53753 - 44032: 0xB86D,\n\t53754 - 44032: 0xB86E,\n\t53755 - 44032: 0xB86F,\n\t53756 - 44032: 0xB870,\n\t53757 - 44032: 0xB871,\n\t53758 - 44032: 0xB872,\n\t53759 - 44032: 0xB873,\n\t53760 - 44032: 0xB874,\n\t53761 - 44032: 0xB875,\n\t53762 - 44032: 0xB876,\n\t53763 - 44032: 0xB877,\n\t53764 - 44032: 0xB878,\n\t53765 - 44032: 0xB879,\n\t53766 - 44032: 0xB87A,\n\t53767 - 44032: 0xC5F2,\n\t53768 - 44032: 0xB881,\n\t53769 - 44032: 0xC5F3,\n\t53770 - 44032: 0xB882,\n\t53771 - 44032: 0xB883,\n\t53772 - 44032: 0xB884,\n\t53773 - 44032: 0xB885,\n\t53774 - 44032: 0xB886,\n\t53775 - 44032: 0xB887,\n\t53776 - 44032: 0xC5F4,\n\t53777 - 44032: 0xB888,\n\t53778 - 44032: 0xB889,\n\t53779 - 44032: 0xB88A,\n\t53780 - 44032: 0xB88B,\n\t53781 - 44032: 0xB88C,\n\t53782 - 44032: 0xB88D,\n\t53783 - 44032: 0xB88E,\n\t53784 - 44032: 0xB88F,\n\t53785 - 44032: 0xB890,\n\t53786 - 44032: 0xB891,\n\t53787 - 44032: 0xB892,\n\t53788 - 44032: 0xB893,\n\t53789 - 44032: 0xB894,\n\t53790 - 44032: 0xB895,\n\t53791 - 44032: 0xB896,\n\t53792 - 44032: 0xB897,\n\t53793 - 44032: 0xB898,\n\t53794 - 44032: 0xB899,\n\t53795 - 44032: 0xB89A,\n\t53796 - 44032: 0xB89B,\n\t53797 - 44032: 0xB89C,\n\t53798 - 44032: 0xB89D,\n\t53799 - 44032: 0xB89E,\n\t53800 - 44032: 0xB89F,\n\t53801 - 44032: 0xB8A0,\n\t53802 - 44032: 0xB941,\n\t53803 - 44032: 0xB942,\n\t53804 - 44032: 0xC5F5,\n\t53805 - 44032: 0xC5F6,\n\t53806 - 44032: 0xB943,\n\t53807 - 44032: 0xB944,\n\t53808 - 44032: 0xC5F7,\n\t53809 - 44032: 0xB945,\n\t53810 - 44032: 0xB946,\n\t53811 - 44032: 0xB947,\n\t53812 - 44032: 0xC5F8,\n\t53813 - 44032: 0xB948,\n\t53814 - 44032: 0xB949,\n\t53815 - 44032: 0xB94A,\n\t53816 - 44032: 0xB94B,\n\t53817 - 44032: 0xB94C,\n\t53818 - 44032: 0xB94D,\n\t53819 - 44032: 0xB94E,\n\t53820 - 44032: 0xC5F9,\n\t53821 - 44032: 0xC5FA,\n\t53822 - 44032: 0xB94F,\n\t53823 - 44032: 0xC5FB,\n\t53824 - 44032: 0xB950,\n\t53825 - 44032: 0xC5FC,\n\t53826 - 44032: 0xB951,\n\t53827 - 44032: 0xB952,\n\t53828 - 44032: 0xB953,\n\t53829 - 44032: 0xB954,\n\t53830 - 44032: 0xB955,\n\t53831 - 44032: 0xB956,\n\t53832 - 44032: 0xC5FD,\n\t53833 - 44032: 0xB957,\n\t53834 - 44032: 0xB958,\n\t53835 - 44032: 0xB959,\n\t53836 - 44032: 0xB95A,\n\t53837 - 44032: 0xB961,\n\t53838 - 44032: 0xB962,\n\t53839 - 44032: 0xB963,\n\t53840 - 44032: 0xB964,\n\t53841 - 44032: 0xB965,\n\t53842 - 44032: 0xB966,\n\t53843 - 44032: 0xB967,\n\t53844 - 44032: 0xB968,\n\t53845 - 44032: 0xB969,\n\t53846 - 44032: 0xB96A,\n\t53847 - 44032: 0xB96B,\n\t53848 - 44032: 0xB96C,\n\t53849 - 44032: 0xB96D,\n\t53850 - 44032: 0xB96E,\n\t53851 - 44032: 0xB96F,\n\t53852 - 44032: 0xC5FE,\n\t53853 - 44032: 0xB970,\n\t53854 - 44032: 0xB971,\n\t53855 - 44032: 0xB972,\n\t53856 - 44032: 0xB973,\n\t53857 - 44032: 0xB974,\n\t53858 - 44032: 0xB975,\n\t53859 - 44032: 0xB976,\n\t53860 - 44032: 0xC6A1,\n\t53861 - 44032: 0xB977,\n\t53862 - 44032: 0xB978,\n\t53863 - 44032: 0xB979,\n\t53864 - 44032: 0xB97A,\n\t53865 - 44032: 0xB981,\n\t53866 - 44032: 0xB982,\n\t53867 - 44032: 0xB983,\n\t53868 - 44032: 0xB984,\n\t53869 - 44032: 0xB985,\n\t53870 - 44032: 0xB986,\n\t53871 - 44032: 0xB987,\n\t53872 - 44032: 0xB988,\n\t53873 - 44032: 0xB989,\n\t53874 - 44032: 0xB98A,\n\t53875 - 44032: 0xB98B,\n\t53876 - 44032: 0xB98C,\n\t53877 - 44032: 0xB98D,\n\t53878 - 44032: 0xB98E,\n\t53879 - 44032: 0xB98F,\n\t53880 - 44032: 0xB990,\n\t53881 - 44032: 0xB991,\n\t53882 - 44032: 0xB992,\n\t53883 - 44032: 0xB993,\n\t53884 - 44032: 0xB994,\n\t53885 - 44032: 0xB995,\n\t53886 - 44032: 0xB996,\n\t53887 - 44032: 0xB997,\n\t53888 - 44032: 0xC6A2,\n\t53889 - 44032: 0xC6A3,\n\t53890 - 44032: 0xB998,\n\t53891 - 44032: 0xB999,\n\t53892 - 44032: 0xC6A4,\n\t53893 - 44032: 0xB99A,\n\t53894 - 44032: 0xB99B,\n\t53895 - 44032: 0xB99C,\n\t53896 - 44032: 0xC6A5,\n\t53897 - 44032: 0xB99D,\n\t53898 - 44032: 0xB99E,\n\t53899 - 44032: 0xB99F,\n\t53900 - 44032: 0xB9A0,\n\t53901 - 44032: 0xBA41,\n\t53902 - 44032: 0xBA42,\n\t53903 - 44032: 0xBA43,\n\t53904 - 44032: 0xC6A6,\n\t53905 - 44032: 0xC6A7,\n\t53906 - 44032: 0xBA44,\n\t53907 - 44032: 0xBA45,\n\t53908 - 44032: 0xBA46,\n\t53909 - 44032: 0xC6A8,\n\t53910 - 44032: 0xBA47,\n\t53911 - 44032: 0xBA48,\n\t53912 - 44032: 0xBA49,\n\t53913 - 44032: 0xBA4A,\n\t53914 - 44032: 0xBA4B,\n\t53915 - 44032: 0xBA4C,\n\t53916 - 44032: 0xC6A9,\n\t53917 - 44032: 0xBA4D,\n\t53918 - 44032: 0xBA4E,\n\t53919 - 44032: 0xBA4F,\n\t53920 - 44032: 0xC6AA,\n\t53921 - 44032: 0xBA50,\n\t53922 - 44032: 0xBA51,\n\t53923 - 44032: 0xBA52,\n\t53924 - 44032: 0xC6AB,\n\t53925 - 44032: 0xBA53,\n\t53926 - 44032: 0xBA54,\n\t53927 - 44032: 0xBA55,\n\t53928 - 44032: 0xBA56,\n\t53929 - 44032: 0xBA57,\n\t53930 - 44032: 0xBA58,\n\t53931 - 44032: 0xBA59,\n\t53932 - 44032: 0xC6AC,\n\t53933 - 44032: 0xBA5A,\n\t53934 - 44032: 0xBA61,\n\t53935 - 44032: 0xBA62,\n\t53936 - 44032: 0xBA63,\n\t53937 - 44032: 0xC6AD,\n\t53938 - 44032: 0xBA64,\n\t53939 - 44032: 0xBA65,\n\t53940 - 44032: 0xBA66,\n\t53941 - 44032: 0xBA67,\n\t53942 - 44032: 0xBA68,\n\t53943 - 44032: 0xBA69,\n\t53944 - 44032: 0xC6AE,\n\t53945 - 44032: 0xC6AF,\n\t53946 - 44032: 0xBA6A,\n\t53947 - 44032: 0xBA6B,\n\t53948 - 44032: 0xC6B0,\n\t53949 - 44032: 0xBA6C,\n\t53950 - 44032: 0xBA6D,\n\t53951 - 44032: 0xC6B1,\n\t53952 - 44032: 0xC6B2,\n\t53953 - 44032: 0xBA6E,\n\t53954 - 44032: 0xC6B3,\n\t53955 - 44032: 0xBA6F,\n\t53956 - 44032: 0xBA70,\n\t53957 - 44032: 0xBA71,\n\t53958 - 44032: 0xBA72,\n\t53959 - 44032: 0xBA73,\n\t53960 - 44032: 0xC6B4,\n\t53961 - 44032: 0xC6B5,\n\t53962 - 44032: 0xBA74,\n\t53963 - 44032: 0xC6B6,\n\t53964 - 44032: 0xBA75,\n\t53965 - 44032: 0xBA76,\n\t53966 - 44032: 0xBA77,\n\t53967 - 44032: 0xBA78,\n\t53968 - 44032: 0xBA79,\n\t53969 - 44032: 0xBA7A,\n\t53970 - 44032: 0xBA81,\n\t53971 - 44032: 0xBA82,\n\t53972 - 44032: 0xC6B7,\n\t53973 - 44032: 0xBA83,\n\t53974 - 44032: 0xBA84,\n\t53975 - 44032: 0xBA85,\n\t53976 - 44032: 0xC6B8,\n\t53977 - 44032: 0xBA86,\n\t53978 - 44032: 0xBA87,\n\t53979 - 44032: 0xBA88,\n\t53980 - 44032: 0xC6B9,\n\t53981 - 44032: 0xBA89,\n\t53982 - 44032: 0xBA8A,\n\t53983 - 44032: 0xBA8B,\n\t53984 - 44032: 0xBA8C,\n\t53985 - 44032: 0xBA8D,\n\t53986 - 44032: 0xBA8E,\n\t53987 - 44032: 0xBA8F,\n\t53988 - 44032: 0xC6BA,\n\t53989 - 44032: 0xC6BB,\n\t53990 - 44032: 0xBA90,\n\t53991 - 44032: 0xBA91,\n\t53992 - 44032: 0xBA92,\n\t53993 - 44032: 0xBA93,\n\t53994 - 44032: 0xBA94,\n\t53995 - 44032: 0xBA95,\n\t53996 - 44032: 0xBA96,\n\t53997 - 44032: 0xBA97,\n\t53998 - 44032: 0xBA98,\n\t53999 - 44032: 0xBA99,\n\t54000 - 44032: 0xC6BC,\n\t54001 - 44032: 0xC6BD,\n\t54002 - 44032: 0xBA9A,\n\t54003 - 44032: 0xBA9B,\n\t54004 - 44032: 0xC6BE,\n\t54005 - 44032: 0xBA9C,\n\t54006 - 44032: 0xBA9D,\n\t54007 - 44032: 0xBA9E,\n\t54008 - 44032: 0xC6BF,\n\t54009 - 44032: 0xBA9F,\n\t54010 - 44032: 0xBAA0,\n\t54011 - 44032: 0xBB41,\n\t54012 - 44032: 0xBB42,\n\t54013 - 44032: 0xBB43,\n\t54014 - 44032: 0xBB44,\n\t54015 - 44032: 0xBB45,\n\t54016 - 44032: 0xC6C0,\n\t54017 - 44032: 0xC6C1,\n\t54018 - 44032: 0xBB46,\n\t54019 - 44032: 0xC6C2,\n\t54020 - 44032: 0xBB47,\n\t54021 - 44032: 0xC6C3,\n\t54022 - 44032: 0xBB48,\n\t54023 - 44032: 0xBB49,\n\t54024 - 44032: 0xBB4A,\n\t54025 - 44032: 0xBB4B,\n\t54026 - 44032: 0xBB4C,\n\t54027 - 44032: 0xBB4D,\n\t54028 - 44032: 0xC6C4,\n\t54029 - 44032: 0xC6C5,\n\t54030 - 44032: 0xC6C6,\n\t54031 - 44032: 0xBB4E,\n\t54032 - 44032: 0xC6C7,\n\t54033 - 44032: 0xBB4F,\n\t54034 - 44032: 0xBB50,\n\t54035 - 44032: 0xBB51,\n\t54036 - 44032: 0xC6C8,\n\t54037 - 44032: 0xBB52,\n\t54038 - 44032: 0xC6C9,\n\t54039 - 44032: 0xBB53,\n\t54040 - 44032: 0xBB54,\n\t54041 - 44032: 0xBB55,\n\t54042 - 44032: 0xBB56,\n\t54043 - 44032: 0xBB57,\n\t54044 - 44032: 0xC6CA,\n\t54045 - 44032: 0xC6CB,\n\t54046 - 44032: 0xBB58,\n\t54047 - 44032: 0xC6CC,\n\t54048 - 44032: 0xC6CD,\n\t54049 - 44032: 0xC6CE,\n\t54050 - 44032: 0xBB59,\n\t54051 - 44032: 0xBB5A,\n\t54052 - 44032: 0xBB61,\n\t54053 - 44032: 0xC6CF,\n\t54054 - 44032: 0xBB62,\n\t54055 - 44032: 0xBB63,\n\t54056 - 44032: 0xC6D0,\n\t54057 - 44032: 0xC6D1,\n\t54058 - 44032: 0xBB64,\n\t54059 - 44032: 0xBB65,\n\t54060 - 44032: 0xC6D2,\n\t54061 - 44032: 0xBB66,\n\t54062 - 44032: 0xBB67,\n\t54063 - 44032: 0xBB68,\n\t54064 - 44032: 0xC6D3,\n\t54065 - 44032: 0xBB69,\n\t54066 - 44032: 0xBB6A,\n\t54067 - 44032: 0xBB6B,\n\t54068 - 44032: 0xBB6C,\n\t54069 - 44032: 0xBB6D,\n\t54070 - 44032: 0xBB6E,\n\t54071 - 44032: 0xBB6F,\n\t54072 - 44032: 0xC6D4,\n\t54073 - 44032: 0xC6D5,\n\t54074 - 44032: 0xBB70,\n\t54075 - 44032: 0xC6D6,\n\t54076 - 44032: 0xC6D7,\n\t54077 - 44032: 0xC6D8,\n\t54078 - 44032: 0xBB71,\n\t54079 - 44032: 0xBB72,\n\t54080 - 44032: 0xBB73,\n\t54081 - 44032: 0xBB74,\n\t54082 - 44032: 0xBB75,\n\t54083 - 44032: 0xBB76,\n\t54084 - 44032: 0xC6D9,\n\t54085 - 44032: 0xC6DA,\n\t54086 - 44032: 0xBB77,\n\t54087 - 44032: 0xBB78,\n\t54088 - 44032: 0xBB79,\n\t54089 - 44032: 0xBB7A,\n\t54090 - 44032: 0xBB81,\n\t54091 - 44032: 0xBB82,\n\t54092 - 44032: 0xBB83,\n\t54093 - 44032: 0xBB84,\n\t54094 - 44032: 0xBB85,\n\t54095 - 44032: 0xBB86,\n\t54096 - 44032: 0xBB87,\n\t54097 - 44032: 0xBB88,\n\t54098 - 44032: 0xBB89,\n\t54099 - 44032: 0xBB8A,\n\t54100 - 44032: 0xBB8B,\n\t54101 - 44032: 0xBB8C,\n\t54102 - 44032: 0xBB8D,\n\t54103 - 44032: 0xBB8E,\n\t54104 - 44032: 0xBB8F,\n\t54105 - 44032: 0xBB90,\n\t54106 - 44032: 0xBB91,\n\t54107 - 44032: 0xBB92,\n\t54108 - 44032: 0xBB93,\n\t54109 - 44032: 0xBB94,\n\t54110 - 44032: 0xBB95,\n\t54111 - 44032: 0xBB96,\n\t54112 - 44032: 0xBB97,\n\t54113 - 44032: 0xBB98,\n\t54114 - 44032: 0xBB99,\n\t54115 - 44032: 0xBB9A,\n\t54116 - 44032: 0xBB9B,\n\t54117 - 44032: 0xBB9C,\n\t54118 - 44032: 0xBB9D,\n\t54119 - 44032: 0xBB9E,\n\t54120 - 44032: 0xBB9F,\n\t54121 - 44032: 0xBBA0,\n\t54122 - 44032: 0xBC41,\n\t54123 - 44032: 0xBC42,\n\t54124 - 44032: 0xBC43,\n\t54125 - 44032: 0xBC44,\n\t54126 - 44032: 0xBC45,\n\t54127 - 44032: 0xBC46,\n\t54128 - 44032: 0xBC47,\n\t54129 - 44032: 0xBC48,\n\t54130 - 44032: 0xBC49,\n\t54131 - 44032: 0xBC4A,\n\t54132 - 44032: 0xBC4B,\n\t54133 - 44032: 0xBC4C,\n\t54134 - 44032: 0xBC4D,\n\t54135 - 44032: 0xBC4E,\n\t54136 - 44032: 0xBC4F,\n\t54137 - 44032: 0xBC50,\n\t54138 - 44032: 0xBC51,\n\t54139 - 44032: 0xBC52,\n\t54140 - 44032: 0xC6DB,\n\t54141 - 44032: 0xC6DC,\n\t54142 - 44032: 0xBC53,\n\t54143 - 44032: 0xBC54,\n\t54144 - 44032: 0xC6DD,\n\t54145 - 44032: 0xBC55,\n\t54146 - 44032: 0xBC56,\n\t54147 - 44032: 0xBC57,\n\t54148 - 44032: 0xC6DE,\n\t54149 - 44032: 0xBC58,\n\t54150 - 44032: 0xBC59,\n\t54151 - 44032: 0xBC5A,\n\t54152 - 44032: 0xBC61,\n\t54153 - 44032: 0xBC62,\n\t54154 - 44032: 0xBC63,\n\t54155 - 44032: 0xBC64,\n\t54156 - 44032: 0xC6DF,\n\t54157 - 44032: 0xC6E0,\n\t54158 - 44032: 0xBC65,\n\t54159 - 44032: 0xC6E1,\n\t54160 - 44032: 0xC6E2,\n\t54161 - 44032: 0xC6E3,\n\t54162 - 44032: 0xBC66,\n\t54163 - 44032: 0xBC67,\n\t54164 - 44032: 0xBC68,\n\t54165 - 44032: 0xBC69,\n\t54166 - 44032: 0xBC6A,\n\t54167 - 44032: 0xBC6B,\n\t54168 - 44032: 0xC6E4,\n\t54169 - 44032: 0xC6E5,\n\t54170 - 44032: 0xBC6C,\n\t54171 - 44032: 0xBC6D,\n\t54172 - 44032: 0xC6E6,\n\t54173 - 44032: 0xBC6E,\n\t54174 - 44032: 0xBC6F,\n\t54175 - 44032: 0xBC70,\n\t54176 - 44032: 0xC6E7,\n\t54177 - 44032: 0xBC71,\n\t54178 - 44032: 0xBC72,\n\t54179 - 44032: 0xBC73,\n\t54180 - 44032: 0xBC74,\n\t54181 - 44032: 0xBC75,\n\t54182 - 44032: 0xBC76,\n\t54183 - 44032: 0xBC77,\n\t54184 - 44032: 0xC6E8,\n\t54185 - 44032: 0xC6E9,\n\t54186 - 44032: 0xBC78,\n\t54187 - 44032: 0xC6EA,\n\t54188 - 44032: 0xBC79,\n\t54189 - 44032: 0xC6EB,\n\t54190 - 44032: 0xBC7A,\n\t54191 - 44032: 0xBC81,\n\t54192 - 44032: 0xBC82,\n\t54193 - 44032: 0xBC83,\n\t54194 - 44032: 0xBC84,\n\t54195 - 44032: 0xBC85,\n\t54196 - 44032: 0xC6EC,\n\t54197 - 44032: 0xBC86,\n\t54198 - 44032: 0xBC87,\n\t54199 - 44032: 0xBC88,\n\t54200 - 44032: 0xC6ED,\n\t54201 - 44032: 0xBC89,\n\t54202 - 44032: 0xBC8A,\n\t54203 - 44032: 0xBC8B,\n\t54204 - 44032: 0xC6EE,\n\t54205 - 44032: 0xBC8C,\n\t54206 - 44032: 0xBC8D,\n\t54207 - 44032: 0xBC8E,\n\t54208 - 44032: 0xBC8F,\n\t54209 - 44032: 0xBC90,\n\t54210 - 44032: 0xBC91,\n\t54211 - 44032: 0xBC92,\n\t54212 - 44032: 0xC6EF,\n\t54213 - 44032: 0xC6F0,\n\t54214 - 44032: 0xBC93,\n\t54215 - 44032: 0xBC94,\n\t54216 - 44032: 0xC6F1,\n\t54217 - 44032: 0xC6F2,\n\t54218 - 44032: 0xBC95,\n\t54219 - 44032: 0xBC96,\n\t54220 - 44032: 0xBC97,\n\t54221 - 44032: 0xBC98,\n\t54222 - 44032: 0xBC99,\n\t54223 - 44032: 0xBC9A,\n\t54224 - 44032: 0xC6F3,\n\t54225 - 44032: 0xBC9B,\n\t54226 - 44032: 0xBC9C,\n\t54227 - 44032: 0xBC9D,\n\t54228 - 44032: 0xBC9E,\n\t54229 - 44032: 0xBC9F,\n\t54230 - 44032: 0xBCA0,\n\t54231 - 44032: 0xBD41,\n\t54232 - 44032: 0xC6F4,\n\t54233 - 44032: 0xBD42,\n\t54234 - 44032: 0xBD43,\n\t54235 - 44032: 0xBD44,\n\t54236 - 44032: 0xBD45,\n\t54237 - 44032: 0xBD46,\n\t54238 - 44032: 0xBD47,\n\t54239 - 44032: 0xBD48,\n\t54240 - 44032: 0xBD49,\n\t54241 - 44032: 0xC6F5,\n\t54242 - 44032: 0xBD4A,\n\t54243 - 44032: 0xC6F6,\n\t54244 - 44032: 0xBD4B,\n\t54245 - 44032: 0xBD4C,\n\t54246 - 44032: 0xBD4D,\n\t54247 - 44032: 0xBD4E,\n\t54248 - 44032: 0xBD4F,\n\t54249 - 44032: 0xBD50,\n\t54250 - 44032: 0xBD51,\n\t54251 - 44032: 0xBD52,\n\t54252 - 44032: 0xC6F7,\n\t54253 - 44032: 0xC6F8,\n\t54254 - 44032: 0xBD53,\n\t54255 - 44032: 0xBD54,\n\t54256 - 44032: 0xC6F9,\n\t54257 - 44032: 0xBD55,\n\t54258 - 44032: 0xBD56,\n\t54259 - 44032: 0xBD57,\n\t54260 - 44032: 0xC6FA,\n\t54261 - 44032: 0xBD58,\n\t54262 - 44032: 0xBD59,\n\t54263 - 44032: 0xBD5A,\n\t54264 - 44032: 0xBD61,\n\t54265 - 44032: 0xBD62,\n\t54266 - 44032: 0xBD63,\n\t54267 - 44032: 0xBD64,\n\t54268 - 44032: 0xC6FB,\n\t54269 - 44032: 0xC6FC,\n\t54270 - 44032: 0xBD65,\n\t54271 - 44032: 0xC6FD,\n\t54272 - 44032: 0xBD66,\n\t54273 - 44032: 0xC6FE,\n\t54274 - 44032: 0xBD67,\n\t54275 - 44032: 0xBD68,\n\t54276 - 44032: 0xBD69,\n\t54277 - 44032: 0xBD6A,\n\t54278 - 44032: 0xBD6B,\n\t54279 - 44032: 0xBD6C,\n\t54280 - 44032: 0xC7A1,\n\t54281 - 44032: 0xBD6D,\n\t54282 - 44032: 0xBD6E,\n\t54283 - 44032: 0xBD6F,\n\t54284 - 44032: 0xBD70,\n\t54285 - 44032: 0xBD71,\n\t54286 - 44032: 0xBD72,\n\t54287 - 44032: 0xBD73,\n\t54288 - 44032: 0xBD74,\n\t54289 - 44032: 0xBD75,\n\t54290 - 44032: 0xBD76,\n\t54291 - 44032: 0xBD77,\n\t54292 - 44032: 0xBD78,\n\t54293 - 44032: 0xBD79,\n\t54294 - 44032: 0xBD7A,\n\t54295 - 44032: 0xBD81,\n\t54296 - 44032: 0xBD82,\n\t54297 - 44032: 0xBD83,\n\t54298 - 44032: 0xBD84,\n\t54299 - 44032: 0xBD85,\n\t54300 - 44032: 0xBD86,\n\t54301 - 44032: 0xC7A2,\n\t54302 - 44032: 0xBD87,\n\t54303 - 44032: 0xBD88,\n\t54304 - 44032: 0xBD89,\n\t54305 - 44032: 0xBD8A,\n\t54306 - 44032: 0xBD8B,\n\t54307 - 44032: 0xBD8C,\n\t54308 - 44032: 0xBD8D,\n\t54309 - 44032: 0xBD8E,\n\t54310 - 44032: 0xBD8F,\n\t54311 - 44032: 0xBD90,\n\t54312 - 44032: 0xBD91,\n\t54313 - 44032: 0xBD92,\n\t54314 - 44032: 0xBD93,\n\t54315 - 44032: 0xBD94,\n\t54316 - 44032: 0xBD95,\n\t54317 - 44032: 0xBD96,\n\t54318 - 44032: 0xBD97,\n\t54319 - 44032: 0xBD98,\n\t54320 - 44032: 0xBD99,\n\t54321 - 44032: 0xBD9A,\n\t54322 - 44032: 0xBD9B,\n\t54323 - 44032: 0xBD9C,\n\t54324 - 44032: 0xBD9D,\n\t54325 - 44032: 0xBD9E,\n\t54326 - 44032: 0xBD9F,\n\t54327 - 44032: 0xBDA0,\n\t54328 - 44032: 0xBE41,\n\t54329 - 44032: 0xBE42,\n\t54330 - 44032: 0xBE43,\n\t54331 - 44032: 0xBE44,\n\t54332 - 44032: 0xBE45,\n\t54333 - 44032: 0xBE46,\n\t54334 - 44032: 0xBE47,\n\t54335 - 44032: 0xBE48,\n\t54336 - 44032: 0xC7A3,\n\t54337 - 44032: 0xBE49,\n\t54338 - 44032: 0xBE4A,\n\t54339 - 44032: 0xBE4B,\n\t54340 - 44032: 0xC7A4,\n\t54341 - 44032: 0xBE4C,\n\t54342 - 44032: 0xBE4D,\n\t54343 - 44032: 0xBE4E,\n\t54344 - 44032: 0xBE4F,\n\t54345 - 44032: 0xBE50,\n\t54346 - 44032: 0xBE51,\n\t54347 - 44032: 0xBE52,\n\t54348 - 44032: 0xBE53,\n\t54349 - 44032: 0xBE54,\n\t54350 - 44032: 0xBE55,\n\t54351 - 44032: 0xBE56,\n\t54352 - 44032: 0xBE57,\n\t54353 - 44032: 0xBE58,\n\t54354 - 44032: 0xBE59,\n\t54355 - 44032: 0xBE5A,\n\t54356 - 44032: 0xBE61,\n\t54357 - 44032: 0xBE62,\n\t54358 - 44032: 0xBE63,\n\t54359 - 44032: 0xBE64,\n\t54360 - 44032: 0xBE65,\n\t54361 - 44032: 0xBE66,\n\t54362 - 44032: 0xBE67,\n\t54363 - 44032: 0xBE68,\n\t54364 - 44032: 0xC7A5,\n\t54365 - 44032: 0xBE69,\n\t54366 - 44032: 0xBE6A,\n\t54367 - 44032: 0xBE6B,\n\t54368 - 44032: 0xC7A6,\n\t54369 - 44032: 0xBE6C,\n\t54370 - 44032: 0xBE6D,\n\t54371 - 44032: 0xBE6E,\n\t54372 - 44032: 0xC7A7,\n\t54373 - 44032: 0xBE6F,\n\t54374 - 44032: 0xBE70,\n\t54375 - 44032: 0xBE71,\n\t54376 - 44032: 0xBE72,\n\t54377 - 44032: 0xBE73,\n\t54378 - 44032: 0xBE74,\n\t54379 - 44032: 0xBE75,\n\t54380 - 44032: 0xBE76,\n\t54381 - 44032: 0xC7A8,\n\t54382 - 44032: 0xBE77,\n\t54383 - 44032: 0xC7A9,\n\t54384 - 44032: 0xBE78,\n\t54385 - 44032: 0xBE79,\n\t54386 - 44032: 0xBE7A,\n\t54387 - 44032: 0xBE81,\n\t54388 - 44032: 0xBE82,\n\t54389 - 44032: 0xBE83,\n\t54390 - 44032: 0xBE84,\n\t54391 - 44032: 0xBE85,\n\t54392 - 44032: 0xC7AA,\n\t54393 - 44032: 0xC7AB,\n\t54394 - 44032: 0xBE86,\n\t54395 - 44032: 0xBE87,\n\t54396 - 44032: 0xC7AC,\n\t54397 - 44032: 0xBE88,\n\t54398 - 44032: 0xBE89,\n\t54399 - 44032: 0xC7AD,\n\t54400 - 44032: 0xC7AE,\n\t54401 - 44032: 0xBE8A,\n\t54402 - 44032: 0xC7AF,\n\t54403 - 44032: 0xBE8B,\n\t54404 - 44032: 0xBE8C,\n\t54405 - 44032: 0xBE8D,\n\t54406 - 44032: 0xBE8E,\n\t54407 - 44032: 0xBE8F,\n\t54408 - 44032: 0xC7B0,\n\t54409 - 44032: 0xC7B1,\n\t54410 - 44032: 0xBE90,\n\t54411 - 44032: 0xC7B2,\n\t54412 - 44032: 0xBE91,\n\t54413 - 44032: 0xC7B3,\n\t54414 - 44032: 0xBE92,\n\t54415 - 44032: 0xBE93,\n\t54416 - 44032: 0xBE94,\n\t54417 - 44032: 0xBE95,\n\t54418 - 44032: 0xBE96,\n\t54419 - 44032: 0xBE97,\n\t54420 - 44032: 0xC7B4,\n\t54421 - 44032: 0xBE98,\n\t54422 - 44032: 0xBE99,\n\t54423 - 44032: 0xBE9A,\n\t54424 - 44032: 0xBE9B,\n\t54425 - 44032: 0xBE9C,\n\t54426 - 44032: 0xBE9D,\n\t54427 - 44032: 0xBE9E,\n\t54428 - 44032: 0xBE9F,\n\t54429 - 44032: 0xBEA0,\n\t54430 - 44032: 0xBF41,\n\t54431 - 44032: 0xBF42,\n\t54432 - 44032: 0xBF43,\n\t54433 - 44032: 0xBF44,\n\t54434 - 44032: 0xBF45,\n\t54435 - 44032: 0xBF46,\n\t54436 - 44032: 0xBF47,\n\t54437 - 44032: 0xBF48,\n\t54438 - 44032: 0xBF49,\n\t54439 - 44032: 0xBF4A,\n\t54440 - 44032: 0xBF4B,\n\t54441 - 44032: 0xC7B5,\n\t54442 - 44032: 0xBF4C,\n\t54443 - 44032: 0xBF4D,\n\t54444 - 44032: 0xBF4E,\n\t54445 - 44032: 0xBF4F,\n\t54446 - 44032: 0xBF50,\n\t54447 - 44032: 0xBF51,\n\t54448 - 44032: 0xBF52,\n\t54449 - 44032: 0xBF53,\n\t54450 - 44032: 0xBF54,\n\t54451 - 44032: 0xBF55,\n\t54452 - 44032: 0xBF56,\n\t54453 - 44032: 0xBF57,\n\t54454 - 44032: 0xBF58,\n\t54455 - 44032: 0xBF59,\n\t54456 - 44032: 0xBF5A,\n\t54457 - 44032: 0xBF61,\n\t54458 - 44032: 0xBF62,\n\t54459 - 44032: 0xBF63,\n\t54460 - 44032: 0xBF64,\n\t54461 - 44032: 0xBF65,\n\t54462 - 44032: 0xBF66,\n\t54463 - 44032: 0xBF67,\n\t54464 - 44032: 0xBF68,\n\t54465 - 44032: 0xBF69,\n\t54466 - 44032: 0xBF6A,\n\t54467 - 44032: 0xBF6B,\n\t54468 - 44032: 0xBF6C,\n\t54469 - 44032: 0xBF6D,\n\t54470 - 44032: 0xBF6E,\n\t54471 - 44032: 0xBF6F,\n\t54472 - 44032: 0xBF70,\n\t54473 - 44032: 0xBF71,\n\t54474 - 44032: 0xBF72,\n\t54475 - 44032: 0xBF73,\n\t54476 - 44032: 0xC7B6,\n\t54477 - 44032: 0xBF74,\n\t54478 - 44032: 0xBF75,\n\t54479 - 44032: 0xBF76,\n\t54480 - 44032: 0xC7B7,\n\t54481 - 44032: 0xBF77,\n\t54482 - 44032: 0xBF78,\n\t54483 - 44032: 0xBF79,\n\t54484 - 44032: 0xC7B8,\n\t54485 - 44032: 0xBF7A,\n\t54486 - 44032: 0xBF81,\n\t54487 - 44032: 0xBF82,\n\t54488 - 44032: 0xBF83,\n\t54489 - 44032: 0xBF84,\n\t54490 - 44032: 0xBF85,\n\t54491 - 44032: 0xBF86,\n\t54492 - 44032: 0xC7B9,\n\t54493 - 44032: 0xBF87,\n\t54494 - 44032: 0xBF88,\n\t54495 - 44032: 0xC7BA,\n\t54496 - 44032: 0xBF89,\n\t54497 - 44032: 0xBF8A,\n\t54498 - 44032: 0xBF8B,\n\t54499 - 44032: 0xBF8C,\n\t54500 - 44032: 0xBF8D,\n\t54501 - 44032: 0xBF8E,\n\t54502 - 44032: 0xBF8F,\n\t54503 - 44032: 0xBF90,\n\t54504 - 44032: 0xC7BB,\n\t54505 - 44032: 0xBF91,\n\t54506 - 44032: 0xBF92,\n\t54507 - 44032: 0xBF93,\n\t54508 - 44032: 0xC7BC,\n\t54509 - 44032: 0xBF94,\n\t54510 - 44032: 0xBF95,\n\t54511 - 44032: 0xBF96,\n\t54512 - 44032: 0xC7BD,\n\t54513 - 44032: 0xBF97,\n\t54514 - 44032: 0xBF98,\n\t54515 - 44032: 0xBF99,\n\t54516 - 44032: 0xBF9A,\n\t54517 - 44032: 0xBF9B,\n\t54518 - 44032: 0xBF9C,\n\t54519 - 44032: 0xBF9D,\n\t54520 - 44032: 0xC7BE,\n\t54521 - 44032: 0xBF9E,\n\t54522 - 44032: 0xBF9F,\n\t54523 - 44032: 0xC7BF,\n\t54524 - 44032: 0xBFA0,\n\t54525 - 44032: 0xC7C0,\n\t54526 - 44032: 0xC041,\n\t54527 - 44032: 0xC042,\n\t54528 - 44032: 0xC043,\n\t54529 - 44032: 0xC044,\n\t54530 - 44032: 0xC045,\n\t54531 - 44032: 0xC046,\n\t54532 - 44032: 0xC7C1,\n\t54533 - 44032: 0xC047,\n\t54534 - 44032: 0xC048,\n\t54535 - 44032: 0xC049,\n\t54536 - 44032: 0xC7C2,\n\t54537 - 44032: 0xC04A,\n\t54538 - 44032: 0xC04B,\n\t54539 - 44032: 0xC04C,\n\t54540 - 44032: 0xC7C3,\n\t54541 - 44032: 0xC04D,\n\t54542 - 44032: 0xC04E,\n\t54543 - 44032: 0xC04F,\n\t54544 - 44032: 0xC050,\n\t54545 - 44032: 0xC051,\n\t54546 - 44032: 0xC052,\n\t54547 - 44032: 0xC053,\n\t54548 - 44032: 0xC7C4,\n\t54549 - 44032: 0xC7C5,\n\t54550 - 44032: 0xC054,\n\t54551 - 44032: 0xC7C6,\n\t54552 - 44032: 0xC055,\n\t54553 - 44032: 0xC056,\n\t54554 - 44032: 0xC057,\n\t54555 - 44032: 0xC058,\n\t54556 - 44032: 0xC059,\n\t54557 - 44032: 0xC05A,\n\t54558 - 44032: 0xC061,\n\t54559 - 44032: 0xC062,\n\t54560 - 44032: 0xC063,\n\t54561 - 44032: 0xC064,\n\t54562 - 44032: 0xC065,\n\t54563 - 44032: 0xC066,\n\t54564 - 44032: 0xC067,\n\t54565 - 44032: 0xC068,\n\t54566 - 44032: 0xC069,\n\t54567 - 44032: 0xC06A,\n\t54568 - 44032: 0xC06B,\n\t54569 - 44032: 0xC06C,\n\t54570 - 44032: 0xC06D,\n\t54571 - 44032: 0xC06E,\n\t54572 - 44032: 0xC06F,\n\t54573 - 44032: 0xC070,\n\t54574 - 44032: 0xC071,\n\t54575 - 44032: 0xC072,\n\t54576 - 44032: 0xC073,\n\t54577 - 44032: 0xC074,\n\t54578 - 44032: 0xC075,\n\t54579 - 44032: 0xC076,\n\t54580 - 44032: 0xC077,\n\t54581 - 44032: 0xC078,\n\t54582 - 44032: 0xC079,\n\t54583 - 44032: 0xC07A,\n\t54584 - 44032: 0xC081,\n\t54585 - 44032: 0xC082,\n\t54586 - 44032: 0xC083,\n\t54587 - 44032: 0xC084,\n\t54588 - 44032: 0xC7C7,\n\t54589 - 44032: 0xC7C8,\n\t54590 - 44032: 0xC085,\n\t54591 - 44032: 0xC086,\n\t54592 - 44032: 0xC7C9,\n\t54593 - 44032: 0xC087,\n\t54594 - 44032: 0xC088,\n\t54595 - 44032: 0xC089,\n\t54596 - 44032: 0xC7CA,\n\t54597 - 44032: 0xC08A,\n\t54598 - 44032: 0xC08B,\n\t54599 - 44032: 0xC08C,\n\t54600 - 44032: 0xC08D,\n\t54601 - 44032: 0xC08E,\n\t54602 - 44032: 0xC08F,\n\t54603 - 44032: 0xC090,\n\t54604 - 44032: 0xC7CB,\n\t54605 - 44032: 0xC7CC,\n\t54606 - 44032: 0xC091,\n\t54607 - 44032: 0xC7CD,\n\t54608 - 44032: 0xC092,\n\t54609 - 44032: 0xC7CE,\n\t54610 - 44032: 0xC093,\n\t54611 - 44032: 0xC094,\n\t54612 - 44032: 0xC095,\n\t54613 - 44032: 0xC096,\n\t54614 - 44032: 0xC097,\n\t54615 - 44032: 0xC098,\n\t54616 - 44032: 0xC7CF,\n\t54617 - 44032: 0xC7D0,\n\t54618 - 44032: 0xC099,\n\t54619 - 44032: 0xC09A,\n\t54620 - 44032: 0xC7D1,\n\t54621 - 44032: 0xC09B,\n\t54622 - 44032: 0xC09C,\n\t54623 - 44032: 0xC09D,\n\t54624 - 44032: 0xC7D2,\n\t54625 - 44032: 0xC09E,\n\t54626 - 44032: 0xC09F,\n\t54627 - 44032: 0xC0A0,\n\t54628 - 44032: 0xC141,\n\t54629 - 44032: 0xC7D3,\n\t54630 - 44032: 0xC142,\n\t54631 - 44032: 0xC143,\n\t54632 - 44032: 0xC7D4,\n\t54633 - 44032: 0xC7D5,\n\t54634 - 44032: 0xC144,\n\t54635 - 44032: 0xC7D6,\n\t54636 - 44032: 0xC145,\n\t54637 - 44032: 0xC7D7,\n\t54638 - 44032: 0xC146,\n\t54639 - 44032: 0xC147,\n\t54640 - 44032: 0xC148,\n\t54641 - 44032: 0xC149,\n\t54642 - 44032: 0xC14A,\n\t54643 - 44032: 0xC14B,\n\t54644 - 44032: 0xC7D8,\n\t54645 - 44032: 0xC7D9,\n\t54646 - 44032: 0xC14C,\n\t54647 - 44032: 0xC14D,\n\t54648 - 44032: 0xC7DA,\n\t54649 - 44032: 0xC14E,\n\t54650 - 44032: 0xC14F,\n\t54651 - 44032: 0xC150,\n\t54652 - 44032: 0xC7DB,\n\t54653 - 44032: 0xC151,\n\t54654 - 44032: 0xC152,\n\t54655 - 44032: 0xC153,\n\t54656 - 44032: 0xC154,\n\t54657 - 44032: 0xC155,\n\t54658 - 44032: 0xC156,\n\t54659 - 44032: 0xC157,\n\t54660 - 44032: 0xC7DC,\n\t54661 - 44032: 0xC7DD,\n\t54662 - 44032: 0xC158,\n\t54663 - 44032: 0xC7DE,\n\t54664 - 44032: 0xC7DF,\n\t54665 - 44032: 0xC7E0,\n\t54666 - 44032: 0xC159,\n\t54667 - 44032: 0xC15A,\n\t54668 - 44032: 0xC161,\n\t54669 - 44032: 0xC162,\n\t54670 - 44032: 0xC163,\n\t54671 - 44032: 0xC164,\n\t54672 - 44032: 0xC7E1,\n\t54673 - 44032: 0xC165,\n\t54674 - 44032: 0xC166,\n\t54675 - 44032: 0xC167,\n\t54676 - 44032: 0xC168,\n\t54677 - 44032: 0xC169,\n\t54678 - 44032: 0xC16A,\n\t54679 - 44032: 0xC16B,\n\t54680 - 44032: 0xC16C,\n\t54681 - 44032: 0xC16D,\n\t54682 - 44032: 0xC16E,\n\t54683 - 44032: 0xC16F,\n\t54684 - 44032: 0xC170,\n\t54685 - 44032: 0xC171,\n\t54686 - 44032: 0xC172,\n\t54687 - 44032: 0xC173,\n\t54688 - 44032: 0xC174,\n\t54689 - 44032: 0xC175,\n\t54690 - 44032: 0xC176,\n\t54691 - 44032: 0xC177,\n\t54692 - 44032: 0xC178,\n\t54693 - 44032: 0xC7E2,\n\t54694 - 44032: 0xC179,\n\t54695 - 44032: 0xC17A,\n\t54696 - 44032: 0xC181,\n\t54697 - 44032: 0xC182,\n\t54698 - 44032: 0xC183,\n\t54699 - 44032: 0xC184,\n\t54700 - 44032: 0xC185,\n\t54701 - 44032: 0xC186,\n\t54702 - 44032: 0xC187,\n\t54703 - 44032: 0xC188,\n\t54704 - 44032: 0xC189,\n\t54705 - 44032: 0xC18A,\n\t54706 - 44032: 0xC18B,\n\t54707 - 44032: 0xC18C,\n\t54708 - 44032: 0xC18D,\n\t54709 - 44032: 0xC18E,\n\t54710 - 44032: 0xC18F,\n\t54711 - 44032: 0xC190,\n\t54712 - 44032: 0xC191,\n\t54713 - 44032: 0xC192,\n\t54714 - 44032: 0xC193,\n\t54715 - 44032: 0xC194,\n\t54716 - 44032: 0xC195,\n\t54717 - 44032: 0xC196,\n\t54718 - 44032: 0xC197,\n\t54719 - 44032: 0xC198,\n\t54720 - 44032: 0xC199,\n\t54721 - 44032: 0xC19A,\n\t54722 - 44032: 0xC19B,\n\t54723 - 44032: 0xC19C,\n\t54724 - 44032: 0xC19D,\n\t54725 - 44032: 0xC19E,\n\t54726 - 44032: 0xC19F,\n\t54727 - 44032: 0xC1A0,\n\t54728 - 44032: 0xC7E3,\n\t54729 - 44032: 0xC7E4,\n\t54730 - 44032: 0xC241,\n\t54731 - 44032: 0xC242,\n\t54732 - 44032: 0xC7E5,\n\t54733 - 44032: 0xC243,\n\t54734 - 44032: 0xC244,\n\t54735 - 44032: 0xC245,\n\t54736 - 44032: 0xC7E6,\n\t54737 - 44032: 0xC246,\n\t54738 - 44032: 0xC7E7,\n\t54739 - 44032: 0xC247,\n\t54740 - 44032: 0xC248,\n\t54741 - 44032: 0xC249,\n\t54742 - 44032: 0xC24A,\n\t54743 - 44032: 0xC24B,\n\t54744 - 44032: 0xC7E8,\n\t54745 - 44032: 0xC7E9,\n\t54746 - 44032: 0xC24C,\n\t54747 - 44032: 0xC7EA,\n\t54748 - 44032: 0xC24D,\n\t54749 - 44032: 0xC7EB,\n\t54750 - 44032: 0xC24E,\n\t54751 - 44032: 0xC24F,\n\t54752 - 44032: 0xC250,\n\t54753 - 44032: 0xC251,\n\t54754 - 44032: 0xC252,\n\t54755 - 44032: 0xC253,\n\t54756 - 44032: 0xC7EC,\n\t54757 - 44032: 0xC7ED,\n\t54758 - 44032: 0xC254,\n\t54759 - 44032: 0xC255,\n\t54760 - 44032: 0xC7EE,\n\t54761 - 44032: 0xC256,\n\t54762 - 44032: 0xC257,\n\t54763 - 44032: 0xC258,\n\t54764 - 44032: 0xC7EF,\n\t54765 - 44032: 0xC259,\n\t54766 - 44032: 0xC25A,\n\t54767 - 44032: 0xC261,\n\t54768 - 44032: 0xC262,\n\t54769 - 44032: 0xC263,\n\t54770 - 44032: 0xC264,\n\t54771 - 44032: 0xC265,\n\t54772 - 44032: 0xC7F0,\n\t54773 - 44032: 0xC7F1,\n\t54774 - 44032: 0xC266,\n\t54775 - 44032: 0xC7F2,\n\t54776 - 44032: 0xC267,\n\t54777 - 44032: 0xC7F3,\n\t54778 - 44032: 0xC268,\n\t54779 - 44032: 0xC269,\n\t54780 - 44032: 0xC26A,\n\t54781 - 44032: 0xC26B,\n\t54782 - 44032: 0xC26C,\n\t54783 - 44032: 0xC26D,\n\t54784 - 44032: 0xC7F4,\n\t54785 - 44032: 0xC7F5,\n\t54786 - 44032: 0xC26E,\n\t54787 - 44032: 0xC26F,\n\t54788 - 44032: 0xC7F6,\n\t54789 - 44032: 0xC270,\n\t54790 - 44032: 0xC271,\n\t54791 - 44032: 0xC272,\n\t54792 - 44032: 0xC7F7,\n\t54793 - 44032: 0xC273,\n\t54794 - 44032: 0xC274,\n\t54795 - 44032: 0xC275,\n\t54796 - 44032: 0xC276,\n\t54797 - 44032: 0xC277,\n\t54798 - 44032: 0xC278,\n\t54799 - 44032: 0xC279,\n\t54800 - 44032: 0xC7F8,\n\t54801 - 44032: 0xC7F9,\n\t54802 - 44032: 0xC27A,\n\t54803 - 44032: 0xC7FA,\n\t54804 - 44032: 0xC7FB,\n\t54805 - 44032: 0xC7FC,\n\t54806 - 44032: 0xC281,\n\t54807 - 44032: 0xC282,\n\t54808 - 44032: 0xC283,\n\t54809 - 44032: 0xC284,\n\t54810 - 44032: 0xC285,\n\t54811 - 44032: 0xC286,\n\t54812 - 44032: 0xC7FD,\n\t54813 - 44032: 0xC287,\n\t54814 - 44032: 0xC288,\n\t54815 - 44032: 0xC289,\n\t54816 - 44032: 0xC7FE,\n\t54817 - 44032: 0xC28A,\n\t54818 - 44032: 0xC28B,\n\t54819 - 44032: 0xC28C,\n\t54820 - 44032: 0xC8A1,\n\t54821 - 44032: 0xC28D,\n\t54822 - 44032: 0xC28E,\n\t54823 - 44032: 0xC28F,\n\t54824 - 44032: 0xC290,\n\t54825 - 44032: 0xC291,\n\t54826 - 44032: 0xC292,\n\t54827 - 44032: 0xC293,\n\t54828 - 44032: 0xC294,\n\t54829 - 44032: 0xC8A2,\n\t54830 - 44032: 0xC295,\n\t54831 - 44032: 0xC296,\n\t54832 - 44032: 0xC297,\n\t54833 - 44032: 0xC298,\n\t54834 - 44032: 0xC299,\n\t54835 - 44032: 0xC29A,\n\t54836 - 44032: 0xC29B,\n\t54837 - 44032: 0xC29C,\n\t54838 - 44032: 0xC29D,\n\t54839 - 44032: 0xC29E,\n\t54840 - 44032: 0xC8A3,\n\t54841 - 44032: 0xC8A4,\n\t54842 - 44032: 0xC29F,\n\t54843 - 44032: 0xC2A0,\n\t54844 - 44032: 0xC8A5,\n\t54845 - 44032: 0xC341,\n\t54846 - 44032: 0xC342,\n\t54847 - 44032: 0xC343,\n\t54848 - 44032: 0xC8A6,\n\t54849 - 44032: 0xC344,\n\t54850 - 44032: 0xC345,\n\t54851 - 44032: 0xC346,\n\t54852 - 44032: 0xC347,\n\t54853 - 44032: 0xC8A7,\n\t54854 - 44032: 0xC348,\n\t54855 - 44032: 0xC349,\n\t54856 - 44032: 0xC8A8,\n\t54857 - 44032: 0xC8A9,\n\t54858 - 44032: 0xC34A,\n\t54859 - 44032: 0xC8AA,\n\t54860 - 44032: 0xC34B,\n\t54861 - 44032: 0xC8AB,\n\t54862 - 44032: 0xC34C,\n\t54863 - 44032: 0xC34D,\n\t54864 - 44032: 0xC34E,\n\t54865 - 44032: 0xC8AC,\n\t54866 - 44032: 0xC34F,\n\t54867 - 44032: 0xC350,\n\t54868 - 44032: 0xC8AD,\n\t54869 - 44032: 0xC8AE,\n\t54870 - 44032: 0xC351,\n\t54871 - 44032: 0xC352,\n\t54872 - 44032: 0xC8AF,\n\t54873 - 44032: 0xC353,\n\t54874 - 44032: 0xC354,\n\t54875 - 44032: 0xC355,\n\t54876 - 44032: 0xC8B0,\n\t54877 - 44032: 0xC356,\n\t54878 - 44032: 0xC357,\n\t54879 - 44032: 0xC358,\n\t54880 - 44032: 0xC359,\n\t54881 - 44032: 0xC35A,\n\t54882 - 44032: 0xC361,\n\t54883 - 44032: 0xC362,\n\t54884 - 44032: 0xC363,\n\t54885 - 44032: 0xC364,\n\t54886 - 44032: 0xC365,\n\t54887 - 44032: 0xC8B1,\n\t54888 - 44032: 0xC366,\n\t54889 - 44032: 0xC8B2,\n\t54890 - 44032: 0xC367,\n\t54891 - 44032: 0xC368,\n\t54892 - 44032: 0xC369,\n\t54893 - 44032: 0xC36A,\n\t54894 - 44032: 0xC36B,\n\t54895 - 44032: 0xC36C,\n\t54896 - 44032: 0xC8B3,\n\t54897 - 44032: 0xC8B4,\n\t54898 - 44032: 0xC36D,\n\t54899 - 44032: 0xC36E,\n\t54900 - 44032: 0xC8B5,\n\t54901 - 44032: 0xC36F,\n\t54902 - 44032: 0xC370,\n\t54903 - 44032: 0xC371,\n\t54904 - 44032: 0xC372,\n\t54905 - 44032: 0xC373,\n\t54906 - 44032: 0xC374,\n\t54907 - 44032: 0xC375,\n\t54908 - 44032: 0xC376,\n\t54909 - 44032: 0xC377,\n\t54910 - 44032: 0xC378,\n\t54911 - 44032: 0xC379,\n\t54912 - 44032: 0xC37A,\n\t54913 - 44032: 0xC381,\n\t54914 - 44032: 0xC382,\n\t54915 - 44032: 0xC8B6,\n\t54916 - 44032: 0xC383,\n\t54917 - 44032: 0xC8B7,\n\t54918 - 44032: 0xC384,\n\t54919 - 44032: 0xC385,\n\t54920 - 44032: 0xC386,\n\t54921 - 44032: 0xC387,\n\t54922 - 44032: 0xC388,\n\t54923 - 44032: 0xC389,\n\t54924 - 44032: 0xC8B8,\n\t54925 - 44032: 0xC8B9,\n\t54926 - 44032: 0xC38A,\n\t54927 - 44032: 0xC38B,\n\t54928 - 44032: 0xC8BA,\n\t54929 - 44032: 0xC38C,\n\t54930 - 44032: 0xC38D,\n\t54931 - 44032: 0xC38E,\n\t54932 - 44032: 0xC8BB,\n\t54933 - 44032: 0xC38F,\n\t54934 - 44032: 0xC390,\n\t54935 - 44032: 0xC391,\n\t54936 - 44032: 0xC392,\n\t54937 - 44032: 0xC393,\n\t54938 - 44032: 0xC394,\n\t54939 - 44032: 0xC395,\n\t54940 - 44032: 0xC396,\n\t54941 - 44032: 0xC8BC,\n\t54942 - 44032: 0xC397,\n\t54943 - 44032: 0xC8BD,\n\t54944 - 44032: 0xC398,\n\t54945 - 44032: 0xC8BE,\n\t54946 - 44032: 0xC399,\n\t54947 - 44032: 0xC39A,\n\t54948 - 44032: 0xC39B,\n\t54949 - 44032: 0xC39C,\n\t54950 - 44032: 0xC39D,\n\t54951 - 44032: 0xC39E,\n\t54952 - 44032: 0xC8BF,\n\t54953 - 44032: 0xC39F,\n\t54954 - 44032: 0xC3A0,\n\t54955 - 44032: 0xC441,\n\t54956 - 44032: 0xC8C0,\n\t54957 - 44032: 0xC442,\n\t54958 - 44032: 0xC443,\n\t54959 - 44032: 0xC444,\n\t54960 - 44032: 0xC8C1,\n\t54961 - 44032: 0xC445,\n\t54962 - 44032: 0xC446,\n\t54963 - 44032: 0xC447,\n\t54964 - 44032: 0xC448,\n\t54965 - 44032: 0xC449,\n\t54966 - 44032: 0xC44A,\n\t54967 - 44032: 0xC44B,\n\t54968 - 44032: 0xC44C,\n\t54969 - 44032: 0xC8C2,\n\t54970 - 44032: 0xC44D,\n\t54971 - 44032: 0xC8C3,\n\t54972 - 44032: 0xC44E,\n\t54973 - 44032: 0xC44F,\n\t54974 - 44032: 0xC450,\n\t54975 - 44032: 0xC451,\n\t54976 - 44032: 0xC452,\n\t54977 - 44032: 0xC453,\n\t54978 - 44032: 0xC454,\n\t54979 - 44032: 0xC455,\n\t54980 - 44032: 0xC8C4,\n\t54981 - 44032: 0xC8C5,\n\t54982 - 44032: 0xC456,\n\t54983 - 44032: 0xC457,\n\t54984 - 44032: 0xC8C6,\n\t54985 - 44032: 0xC458,\n\t54986 - 44032: 0xC459,\n\t54987 - 44032: 0xC45A,\n\t54988 - 44032: 0xC8C7,\n\t54989 - 44032: 0xC461,\n\t54990 - 44032: 0xC462,\n\t54991 - 44032: 0xC463,\n\t54992 - 44032: 0xC464,\n\t54993 - 44032: 0xC8C8,\n\t54994 - 44032: 0xC465,\n\t54995 - 44032: 0xC466,\n\t54996 - 44032: 0xC8C9,\n\t54997 - 44032: 0xC467,\n\t54998 - 44032: 0xC468,\n\t54999 - 44032: 0xC8CA,\n\t55000 - 44032: 0xC469,\n\t55001 - 44032: 0xC8CB,\n\t55002 - 44032: 0xC46A,\n\t55003 - 44032: 0xC46B,\n\t55004 - 44032: 0xC46C,\n\t55005 - 44032: 0xC46D,\n\t55006 - 44032: 0xC46E,\n\t55007 - 44032: 0xC46F,\n\t55008 - 44032: 0xC8CC,\n\t55009 - 44032: 0xC470,\n\t55010 - 44032: 0xC471,\n\t55011 - 44032: 0xC472,\n\t55012 - 44032: 0xC8CD,\n\t55013 - 44032: 0xC473,\n\t55014 - 44032: 0xC474,\n\t55015 - 44032: 0xC475,\n\t55016 - 44032: 0xC8CE,\n\t55017 - 44032: 0xC476,\n\t55018 - 44032: 0xC477,\n\t55019 - 44032: 0xC478,\n\t55020 - 44032: 0xC479,\n\t55021 - 44032: 0xC47A,\n\t55022 - 44032: 0xC481,\n\t55023 - 44032: 0xC482,\n\t55024 - 44032: 0xC8CF,\n\t55025 - 44032: 0xC483,\n\t55026 - 44032: 0xC484,\n\t55027 - 44032: 0xC485,\n\t55028 - 44032: 0xC486,\n\t55029 - 44032: 0xC8D0,\n\t55030 - 44032: 0xC487,\n\t55031 - 44032: 0xC488,\n\t55032 - 44032: 0xC489,\n\t55033 - 44032: 0xC48A,\n\t55034 - 44032: 0xC48B,\n\t55035 - 44032: 0xC48C,\n\t55036 - 44032: 0xC8D1,\n\t55037 - 44032: 0xC8D2,\n\t55038 - 44032: 0xC48D,\n\t55039 - 44032: 0xC48E,\n\t55040 - 44032: 0xC8D3,\n\t55041 - 44032: 0xC48F,\n\t55042 - 44032: 0xC490,\n\t55043 - 44032: 0xC491,\n\t55044 - 44032: 0xC8D4,\n\t55045 - 44032: 0xC492,\n\t55046 - 44032: 0xC493,\n\t55047 - 44032: 0xC494,\n\t55048 - 44032: 0xC495,\n\t55049 - 44032: 0xC496,\n\t55050 - 44032: 0xC497,\n\t55051 - 44032: 0xC498,\n\t55052 - 44032: 0xC499,\n\t55053 - 44032: 0xC49A,\n\t55054 - 44032: 0xC49B,\n\t55055 - 44032: 0xC49C,\n\t55056 - 44032: 0xC49D,\n\t55057 - 44032: 0xC8D5,\n\t55058 - 44032: 0xC49E,\n\t55059 - 44032: 0xC49F,\n\t55060 - 44032: 0xC4A0,\n\t55061 - 44032: 0xC541,\n\t55062 - 44032: 0xC542,\n\t55063 - 44032: 0xC543,\n\t55064 - 44032: 0xC8D6,\n\t55065 - 44032: 0xC8D7,\n\t55066 - 44032: 0xC544,\n\t55067 - 44032: 0xC545,\n\t55068 - 44032: 0xC8D8,\n\t55069 - 44032: 0xC546,\n\t55070 - 44032: 0xC547,\n\t55071 - 44032: 0xC548,\n\t55072 - 44032: 0xC8D9,\n\t55073 - 44032: 0xC549,\n\t55074 - 44032: 0xC54A,\n\t55075 - 44032: 0xC54B,\n\t55076 - 44032: 0xC54C,\n\t55077 - 44032: 0xC54D,\n\t55078 - 44032: 0xC54E,\n\t55079 - 44032: 0xC54F,\n\t55080 - 44032: 0xC8DA,\n\t55081 - 44032: 0xC8DB,\n\t55082 - 44032: 0xC550,\n\t55083 - 44032: 0xC8DC,\n\t55084 - 44032: 0xC551,\n\t55085 - 44032: 0xC8DD,\n\t55086 - 44032: 0xC552,\n\t55087 - 44032: 0xC553,\n\t55088 - 44032: 0xC554,\n\t55089 - 44032: 0xC555,\n\t55090 - 44032: 0xC556,\n\t55091 - 44032: 0xC557,\n\t55092 - 44032: 0xC8DE,\n\t55093 - 44032: 0xC8DF,\n\t55094 - 44032: 0xC558,\n\t55095 - 44032: 0xC559,\n\t55096 - 44032: 0xC8E0,\n\t55097 - 44032: 0xC55A,\n\t55098 - 44032: 0xC561,\n\t55099 - 44032: 0xC562,\n\t55100 - 44032: 0xC8E1,\n\t55101 - 44032: 0xC563,\n\t55102 - 44032: 0xC564,\n\t55103 - 44032: 0xC565,\n\t55104 - 44032: 0xC566,\n\t55105 - 44032: 0xC567,\n\t55106 - 44032: 0xC568,\n\t55107 - 44032: 0xC569,\n\t55108 - 44032: 0xC8E2,\n\t55109 - 44032: 0xC56A,\n\t55110 - 44032: 0xC56B,\n\t55111 - 44032: 0xC8E3,\n\t55112 - 44032: 0xC56C,\n\t55113 - 44032: 0xC8E4,\n\t55114 - 44032: 0xC56D,\n\t55115 - 44032: 0xC56E,\n\t55116 - 44032: 0xC56F,\n\t55117 - 44032: 0xC570,\n\t55118 - 44032: 0xC571,\n\t55119 - 44032: 0xC572,\n\t55120 - 44032: 0xC8E5,\n\t55121 - 44032: 0xC8E6,\n\t55122 - 44032: 0xC573,\n\t55123 - 44032: 0xC574,\n\t55124 - 44032: 0xC8E7,\n\t55125 - 44032: 0xC575,\n\t55126 - 44032: 0xC8E8,\n\t55127 - 44032: 0xC8E9,\n\t55128 - 44032: 0xC8EA,\n\t55129 - 44032: 0xC8EB,\n\t55130 - 44032: 0xC576,\n\t55131 - 44032: 0xC577,\n\t55132 - 44032: 0xC578,\n\t55133 - 44032: 0xC579,\n\t55134 - 44032: 0xC57A,\n\t55135 - 44032: 0xC581,\n\t55136 - 44032: 0xC8EC,\n\t55137 - 44032: 0xC8ED,\n\t55138 - 44032: 0xC582,\n\t55139 - 44032: 0xC8EE,\n\t55140 - 44032: 0xC583,\n\t55141 - 44032: 0xC8EF,\n\t55142 - 44032: 0xC584,\n\t55143 - 44032: 0xC585,\n\t55144 - 44032: 0xC586,\n\t55145 - 44032: 0xC8F0,\n\t55146 - 44032: 0xC587,\n\t55147 - 44032: 0xC588,\n\t55148 - 44032: 0xC8F1,\n\t55149 - 44032: 0xC589,\n\t55150 - 44032: 0xC58A,\n\t55151 - 44032: 0xC58B,\n\t55152 - 44032: 0xC8F2,\n\t55153 - 44032: 0xC58C,\n\t55154 - 44032: 0xC58D,\n\t55155 - 44032: 0xC58E,\n\t55156 - 44032: 0xC8F3,\n\t55157 - 44032: 0xC58F,\n\t55158 - 44032: 0xC590,\n\t55159 - 44032: 0xC591,\n\t55160 - 44032: 0xC592,\n\t55161 - 44032: 0xC593,\n\t55162 - 44032: 0xC594,\n\t55163 - 44032: 0xC595,\n\t55164 - 44032: 0xC8F4,\n\t55165 - 44032: 0xC8F5,\n\t55166 - 44032: 0xC596,\n\t55167 - 44032: 0xC597,\n\t55168 - 44032: 0xC598,\n\t55169 - 44032: 0xC8F6,\n\t55170 - 44032: 0xC599,\n\t55171 - 44032: 0xC59A,\n\t55172 - 44032: 0xC59B,\n\t55173 - 44032: 0xC59C,\n\t55174 - 44032: 0xC59D,\n\t55175 - 44032: 0xC59E,\n\t55176 - 44032: 0xC8F7,\n\t55177 - 44032: 0xC8F8,\n\t55178 - 44032: 0xC59F,\n\t55179 - 44032: 0xC5A0,\n\t55180 - 44032: 0xC8F9,\n\t55181 - 44032: 0xC641,\n\t55182 - 44032: 0xC642,\n\t55183 - 44032: 0xC643,\n\t55184 - 44032: 0xC8FA,\n\t55185 - 44032: 0xC644,\n\t55186 - 44032: 0xC645,\n\t55187 - 44032: 0xC646,\n\t55188 - 44032: 0xC647,\n\t55189 - 44032: 0xC648,\n\t55190 - 44032: 0xC649,\n\t55191 - 44032: 0xC64A,\n\t55192 - 44032: 0xC8FB,\n\t55193 - 44032: 0xC8FC,\n\t55194 - 44032: 0xC64B,\n\t55195 - 44032: 0xC8FD,\n\t55196 - 44032: 0xC64C,\n\t55197 - 44032: 0xC8FE,\n\t55198 - 44032: 0xC64D,\n\t55199 - 44032: 0xC64E,\n\t55200 - 44032: 0xC64F,\n\t55201 - 44032: 0xC650,\n\t55202 - 44032: 0xC651,\n\t55203 - 44032: 0xC652,\n}\n\nconst encode2Low, encode2High = 8213, 9838\n\nvar encode2 = [...]uint16{\n\t8213 - 8213: 0xA1AA,\n\t8216 - 8213: 0xA1AE,\n\t8217 - 8213: 0xA1AF,\n\t8220 - 8213: 0xA1B0,\n\t8221 - 8213: 0xA1B1,\n\t8224 - 8213: 0xA2D3,\n\t8225 - 8213: 0xA2D4,\n\t8229 - 8213: 0xA1A5,\n\t8230 - 8213: 0xA1A6,\n\t8240 - 8213: 0xA2B6,\n\t8242 - 8213: 0xA1C7,\n\t8243 - 8213: 0xA1C8,\n\t8251 - 8213: 0xA1D8,\n\t8308 - 8213: 0xA9F9,\n\t8319 - 8213: 0xA9FA,\n\t8321 - 8213: 0xA9FB,\n\t8322 - 8213: 0xA9FC,\n\t8323 - 8213: 0xA9FD,\n\t8324 - 8213: 0xA9FE,\n\t8364 - 8213: 0xA2E6,\n\t8451 - 8213: 0xA1C9,\n\t8457 - 8213: 0xA2B5,\n\t8467 - 8213: 0xA7A4,\n\t8470 - 8213: 0xA2E0,\n\t8481 - 8213: 0xA2E5,\n\t8482 - 8213: 0xA2E2,\n\t8486 - 8213: 0xA7D9,\n\t8491 - 8213: 0xA1CA,\n\t8531 - 8213: 0xA8F7,\n\t8532 - 8213: 0xA8F8,\n\t8539 - 8213: 0xA8FB,\n\t8540 - 8213: 0xA8FC,\n\t8541 - 8213: 0xA8FD,\n\t8542 - 8213: 0xA8FE,\n\t8544 - 8213: 0xA5B0,\n\t8545 - 8213: 0xA5B1,\n\t8546 - 8213: 0xA5B2,\n\t8547 - 8213: 0xA5B3,\n\t8548 - 8213: 0xA5B4,\n\t8549 - 8213: 0xA5B5,\n\t8550 - 8213: 0xA5B6,\n\t8551 - 8213: 0xA5B7,\n\t8552 - 8213: 0xA5B8,\n\t8553 - 8213: 0xA5B9,\n\t8560 - 8213: 0xA5A1,\n\t8561 - 8213: 0xA5A2,\n\t8562 - 8213: 0xA5A3,\n\t8563 - 8213: 0xA5A4,\n\t8564 - 8213: 0xA5A5,\n\t8565 - 8213: 0xA5A6,\n\t8566 - 8213: 0xA5A7,\n\t8567 - 8213: 0xA5A8,\n\t8568 - 8213: 0xA5A9,\n\t8569 - 8213: 0xA5AA,\n\t8592 - 8213: 0xA1E7,\n\t8593 - 8213: 0xA1E8,\n\t8594 - 8213: 0xA1E6,\n\t8595 - 8213: 0xA1E9,\n\t8596 - 8213: 0xA1EA,\n\t8597 - 8213: 0xA2D5,\n\t8598 - 8213: 0xA2D8,\n\t8599 - 8213: 0xA2D6,\n\t8600 - 8213: 0xA2D9,\n\t8601 - 8213: 0xA2D7,\n\t8658 - 8213: 0xA2A1,\n\t8660 - 8213: 0xA2A2,\n\t8704 - 8213: 0xA2A3,\n\t8706 - 8213: 0xA1D3,\n\t8707 - 8213: 0xA2A4,\n\t8711 - 8213: 0xA1D4,\n\t8712 - 8213: 0xA1F4,\n\t8715 - 8213: 0xA1F5,\n\t8719 - 8213: 0xA2B3,\n\t8721 - 8213: 0xA2B2,\n\t8730 - 8213: 0xA1EE,\n\t8733 - 8213: 0xA1F0,\n\t8734 - 8213: 0xA1C4,\n\t8736 - 8213: 0xA1D0,\n\t8741 - 8213: 0xA1AB,\n\t8743 - 8213: 0xA1FC,\n\t8744 - 8213: 0xA1FD,\n\t8745 - 8213: 0xA1FB,\n\t8746 - 8213: 0xA1FA,\n\t8747 - 8213: 0xA1F2,\n\t8748 - 8213: 0xA1F3,\n\t8750 - 8213: 0xA2B1,\n\t8756 - 8213: 0xA1C5,\n\t8757 - 8213: 0xA1F1,\n\t8764 - 8213: 0xA1AD,\n\t8765 - 8213: 0xA1EF,\n\t8786 - 8213: 0xA1D6,\n\t8800 - 8213: 0xA1C1,\n\t8801 - 8213: 0xA1D5,\n\t8804 - 8213: 0xA1C2,\n\t8805 - 8213: 0xA1C3,\n\t8810 - 8213: 0xA1EC,\n\t8811 - 8213: 0xA1ED,\n\t8834 - 8213: 0xA1F8,\n\t8835 - 8213: 0xA1F9,\n\t8838 - 8213: 0xA1F6,\n\t8839 - 8213: 0xA1F7,\n\t8857 - 8213: 0xA2C1,\n\t8869 - 8213: 0xA1D1,\n\t8978 - 8213: 0xA1D2,\n\t9312 - 8213: 0xA8E7,\n\t9313 - 8213: 0xA8E8,\n\t9314 - 8213: 0xA8E9,\n\t9315 - 8213: 0xA8EA,\n\t9316 - 8213: 0xA8EB,\n\t9317 - 8213: 0xA8EC,\n\t9318 - 8213: 0xA8ED,\n\t9319 - 8213: 0xA8EE,\n\t9320 - 8213: 0xA8EF,\n\t9321 - 8213: 0xA8F0,\n\t9322 - 8213: 0xA8F1,\n\t9323 - 8213: 0xA8F2,\n\t9324 - 8213: 0xA8F3,\n\t9325 - 8213: 0xA8F4,\n\t9326 - 8213: 0xA8F5,\n\t9332 - 8213: 0xA9E7,\n\t9333 - 8213: 0xA9E8,\n\t9334 - 8213: 0xA9E9,\n\t9335 - 8213: 0xA9EA,\n\t9336 - 8213: 0xA9EB,\n\t9337 - 8213: 0xA9EC,\n\t9338 - 8213: 0xA9ED,\n\t9339 - 8213: 0xA9EE,\n\t9340 - 8213: 0xA9EF,\n\t9341 - 8213: 0xA9F0,\n\t9342 - 8213: 0xA9F1,\n\t9343 - 8213: 0xA9F2,\n\t9344 - 8213: 0xA9F3,\n\t9345 - 8213: 0xA9F4,\n\t9346 - 8213: 0xA9F5,\n\t9372 - 8213: 0xA9CD,\n\t9373 - 8213: 0xA9CE,\n\t9374 - 8213: 0xA9CF,\n\t9375 - 8213: 0xA9D0,\n\t9376 - 8213: 0xA9D1,\n\t9377 - 8213: 0xA9D2,\n\t9378 - 8213: 0xA9D3,\n\t9379 - 8213: 0xA9D4,\n\t9380 - 8213: 0xA9D5,\n\t9381 - 8213: 0xA9D6,\n\t9382 - 8213: 0xA9D7,\n\t9383 - 8213: 0xA9D8,\n\t9384 - 8213: 0xA9D9,\n\t9385 - 8213: 0xA9DA,\n\t9386 - 8213: 0xA9DB,\n\t9387 - 8213: 0xA9DC,\n\t9388 - 8213: 0xA9DD,\n\t9389 - 8213: 0xA9DE,\n\t9390 - 8213: 0xA9DF,\n\t9391 - 8213: 0xA9E0,\n\t9392 - 8213: 0xA9E1,\n\t9393 - 8213: 0xA9E2,\n\t9394 - 8213: 0xA9E3,\n\t9395 - 8213: 0xA9E4,\n\t9396 - 8213: 0xA9E5,\n\t9397 - 8213: 0xA9E6,\n\t9424 - 8213: 0xA8CD,\n\t9425 - 8213: 0xA8CE,\n\t9426 - 8213: 0xA8CF,\n\t9427 - 8213: 0xA8D0,\n\t9428 - 8213: 0xA8D1,\n\t9429 - 8213: 0xA8D2,\n\t9430 - 8213: 0xA8D3,\n\t9431 - 8213: 0xA8D4,\n\t9432 - 8213: 0xA8D5,\n\t9433 - 8213: 0xA8D6,\n\t9434 - 8213: 0xA8D7,\n\t9435 - 8213: 0xA8D8,\n\t9436 - 8213: 0xA8D9,\n\t9437 - 8213: 0xA8DA,\n\t9438 - 8213: 0xA8DB,\n\t9439 - 8213: 0xA8DC,\n\t9440 - 8213: 0xA8DD,\n\t9441 - 8213: 0xA8DE,\n\t9442 - 8213: 0xA8DF,\n\t9443 - 8213: 0xA8E0,\n\t9444 - 8213: 0xA8E1,\n\t9445 - 8213: 0xA8E2,\n\t9446 - 8213: 0xA8E3,\n\t9447 - 8213: 0xA8E4,\n\t9448 - 8213: 0xA8E5,\n\t9449 - 8213: 0xA8E6,\n\t9472 - 8213: 0xA6A1,\n\t9473 - 8213: 0xA6AC,\n\t9474 - 8213: 0xA6A2,\n\t9475 - 8213: 0xA6AD,\n\t9484 - 8213: 0xA6A3,\n\t9485 - 8213: 0xA6C8,\n\t9486 - 8213: 0xA6C7,\n\t9487 - 8213: 0xA6AE,\n\t9488 - 8213: 0xA6A4,\n\t9489 - 8213: 0xA6C2,\n\t9490 - 8213: 0xA6C1,\n\t9491 - 8213: 0xA6AF,\n\t9492 - 8213: 0xA6A6,\n\t9493 - 8213: 0xA6C6,\n\t9494 - 8213: 0xA6C5,\n\t9495 - 8213: 0xA6B1,\n\t9496 - 8213: 0xA6A5,\n\t9497 - 8213: 0xA6C4,\n\t9498 - 8213: 0xA6C3,\n\t9499 - 8213: 0xA6B0,\n\t9500 - 8213: 0xA6A7,\n\t9501 - 8213: 0xA6BC,\n\t9502 - 8213: 0xA6C9,\n\t9503 - 8213: 0xA6CA,\n\t9504 - 8213: 0xA6B7,\n\t9505 - 8213: 0xA6CB,\n\t9506 - 8213: 0xA6CC,\n\t9507 - 8213: 0xA6B2,\n\t9508 - 8213: 0xA6A9,\n\t9509 - 8213: 0xA6BE,\n\t9510 - 8213: 0xA6CD,\n\t9511 - 8213: 0xA6CE,\n\t9512 - 8213: 0xA6B9,\n\t9513 - 8213: 0xA6CF,\n\t9514 - 8213: 0xA6D0,\n\t9515 - 8213: 0xA6B4,\n\t9516 - 8213: 0xA6A8,\n\t9517 - 8213: 0xA6D1,\n\t9518 - 8213: 0xA6D2,\n\t9519 - 8213: 0xA6B8,\n\t9520 - 8213: 0xA6BD,\n\t9521 - 8213: 0xA6D3,\n\t9522 - 8213: 0xA6D4,\n\t9523 - 8213: 0xA6B3,\n\t9524 - 8213: 0xA6AA,\n\t9525 - 8213: 0xA6D5,\n\t9526 - 8213: 0xA6D6,\n\t9527 - 8213: 0xA6BA,\n\t9528 - 8213: 0xA6BF,\n\t9529 - 8213: 0xA6D7,\n\t9530 - 8213: 0xA6D8,\n\t9531 - 8213: 0xA6B5,\n\t9532 - 8213: 0xA6AB,\n\t9533 - 8213: 0xA6D9,\n\t9534 - 8213: 0xA6DA,\n\t9535 - 8213: 0xA6BB,\n\t9536 - 8213: 0xA6DB,\n\t9537 - 8213: 0xA6DC,\n\t9538 - 8213: 0xA6C0,\n\t9539 - 8213: 0xA6DD,\n\t9540 - 8213: 0xA6DE,\n\t9541 - 8213: 0xA6DF,\n\t9542 - 8213: 0xA6E0,\n\t9543 - 8213: 0xA6E1,\n\t9544 - 8213: 0xA6E2,\n\t9545 - 8213: 0xA6E3,\n\t9546 - 8213: 0xA6E4,\n\t9547 - 8213: 0xA6B6,\n\t9618 - 8213: 0xA2C6,\n\t9632 - 8213: 0xA1E1,\n\t9633 - 8213: 0xA1E0,\n\t9635 - 8213: 0xA2C3,\n\t9636 - 8213: 0xA2C7,\n\t9637 - 8213: 0xA2C8,\n\t9638 - 8213: 0xA2CB,\n\t9639 - 8213: 0xA2CA,\n\t9640 - 8213: 0xA2C9,\n\t9641 - 8213: 0xA2CC,\n\t9650 - 8213: 0xA1E3,\n\t9651 - 8213: 0xA1E2,\n\t9654 - 8213: 0xA2BA,\n\t9655 - 8213: 0xA2B9,\n\t9660 - 8213: 0xA1E5,\n\t9661 - 8213: 0xA1E4,\n\t9664 - 8213: 0xA2B8,\n\t9665 - 8213: 0xA2B7,\n\t9670 - 8213: 0xA1DF,\n\t9671 - 8213: 0xA1DE,\n\t9672 - 8213: 0xA2C2,\n\t9675 - 8213: 0xA1DB,\n\t9678 - 8213: 0xA1DD,\n\t9679 - 8213: 0xA1DC,\n\t9680 - 8213: 0xA2C4,\n\t9681 - 8213: 0xA2C5,\n\t9733 - 8213: 0xA1DA,\n\t9734 - 8213: 0xA1D9,\n\t9742 - 8213: 0xA2CF,\n\t9743 - 8213: 0xA2CE,\n\t9756 - 8213: 0xA2D0,\n\t9758 - 8213: 0xA2D1,\n\t9792 - 8213: 0xA1CF,\n\t9794 - 8213: 0xA1CE,\n\t9824 - 8213: 0xA2BC,\n\t9825 - 8213: 0xA2BD,\n\t9827 - 8213: 0xA2C0,\n\t9828 - 8213: 0xA2BB,\n\t9829 - 8213: 0xA2BE,\n\t9831 - 8213: 0xA2BF,\n\t9832 - 8213: 0xA2CD,\n\t9833 - 8213: 0xA2DB,\n\t9834 - 8213: 0xA2DC,\n\t9836 - 8213: 0xA2DD,\n\t9837 - 8213: 0xA2DA,\n}\n\nconst encode3Low, encode3High = 12288, 13278\n\nvar encode3 = [...]uint16{\n\t12288 - 12288: 0xA1A1,\n\t12289 - 12288: 0xA1A2,\n\t12290 - 12288: 0xA1A3,\n\t12291 - 12288: 0xA1A8,\n\t12296 - 12288: 0xA1B4,\n\t12297 - 12288: 0xA1B5,\n\t12298 - 12288: 0xA1B6,\n\t12299 - 12288: 0xA1B7,\n\t12300 - 12288: 0xA1B8,\n\t12301 - 12288: 0xA1B9,\n\t12302 - 12288: 0xA1BA,\n\t12303 - 12288: 0xA1BB,\n\t12304 - 12288: 0xA1BC,\n\t12305 - 12288: 0xA1BD,\n\t12307 - 12288: 0xA1EB,\n\t12308 - 12288: 0xA1B2,\n\t12309 - 12288: 0xA1B3,\n\t12353 - 12288: 0xAAA1,\n\t12354 - 12288: 0xAAA2,\n\t12355 - 12288: 0xAAA3,\n\t12356 - 12288: 0xAAA4,\n\t12357 - 12288: 0xAAA5,\n\t12358 - 12288: 0xAAA6,\n\t12359 - 12288: 0xAAA7,\n\t12360 - 12288: 0xAAA8,\n\t12361 - 12288: 0xAAA9,\n\t12362 - 12288: 0xAAAA,\n\t12363 - 12288: 0xAAAB,\n\t12364 - 12288: 0xAAAC,\n\t12365 - 12288: 0xAAAD,\n\t12366 - 12288: 0xAAAE,\n\t12367 - 12288: 0xAAAF,\n\t12368 - 12288: 0xAAB0,\n\t12369 - 12288: 0xAAB1,\n\t12370 - 12288: 0xAAB2,\n\t12371 - 12288: 0xAAB3,\n\t12372 - 12288: 0xAAB4,\n\t12373 - 12288: 0xAAB5,\n\t12374 - 12288: 0xAAB6,\n\t12375 - 12288: 0xAAB7,\n\t12376 - 12288: 0xAAB8,\n\t12377 - 12288: 0xAAB9,\n\t12378 - 12288: 0xAABA,\n\t12379 - 12288: 0xAABB,\n\t12380 - 12288: 0xAABC,\n\t12381 - 12288: 0xAABD,\n\t12382 - 12288: 0xAABE,\n\t12383 - 12288: 0xAABF,\n\t12384 - 12288: 0xAAC0,\n\t12385 - 12288: 0xAAC1,\n\t12386 - 12288: 0xAAC2,\n\t12387 - 12288: 0xAAC3,\n\t12388 - 12288: 0xAAC4,\n\t12389 - 12288: 0xAAC5,\n\t12390 - 12288: 0xAAC6,\n\t12391 - 12288: 0xAAC7,\n\t12392 - 12288: 0xAAC8,\n\t12393 - 12288: 0xAAC9,\n\t12394 - 12288: 0xAACA,\n\t12395 - 12288: 0xAACB,\n\t12396 - 12288: 0xAACC,\n\t12397 - 12288: 0xAACD,\n\t12398 - 12288: 0xAACE,\n\t12399 - 12288: 0xAACF,\n\t12400 - 12288: 0xAAD0,\n\t12401 - 12288: 0xAAD1,\n\t12402 - 12288: 0xAAD2,\n\t12403 - 12288: 0xAAD3,\n\t12404 - 12288: 0xAAD4,\n\t12405 - 12288: 0xAAD5,\n\t12406 - 12288: 0xAAD6,\n\t12407 - 12288: 0xAAD7,\n\t12408 - 12288: 0xAAD8,\n\t12409 - 12288: 0xAAD9,\n\t12410 - 12288: 0xAADA,\n\t12411 - 12288: 0xAADB,\n\t12412 - 12288: 0xAADC,\n\t12413 - 12288: 0xAADD,\n\t12414 - 12288: 0xAADE,\n\t12415 - 12288: 0xAADF,\n\t12416 - 12288: 0xAAE0,\n\t12417 - 12288: 0xAAE1,\n\t12418 - 12288: 0xAAE2,\n\t12419 - 12288: 0xAAE3,\n\t12420 - 12288: 0xAAE4,\n\t12421 - 12288: 0xAAE5,\n\t12422 - 12288: 0xAAE6,\n\t12423 - 12288: 0xAAE7,\n\t12424 - 12288: 0xAAE8,\n\t12425 - 12288: 0xAAE9,\n\t12426 - 12288: 0xAAEA,\n\t12427 - 12288: 0xAAEB,\n\t12428 - 12288: 0xAAEC,\n\t12429 - 12288: 0xAAED,\n\t12430 - 12288: 0xAAEE,\n\t12431 - 12288: 0xAAEF,\n\t12432 - 12288: 0xAAF0,\n\t12433 - 12288: 0xAAF1,\n\t12434 - 12288: 0xAAF2,\n\t12435 - 12288: 0xAAF3,\n\t12449 - 12288: 0xABA1,\n\t12450 - 12288: 0xABA2,\n\t12451 - 12288: 0xABA3,\n\t12452 - 12288: 0xABA4,\n\t12453 - 12288: 0xABA5,\n\t12454 - 12288: 0xABA6,\n\t12455 - 12288: 0xABA7,\n\t12456 - 12288: 0xABA8,\n\t12457 - 12288: 0xABA9,\n\t12458 - 12288: 0xABAA,\n\t12459 - 12288: 0xABAB,\n\t12460 - 12288: 0xABAC,\n\t12461 - 12288: 0xABAD,\n\t12462 - 12288: 0xABAE,\n\t12463 - 12288: 0xABAF,\n\t12464 - 12288: 0xABB0,\n\t12465 - 12288: 0xABB1,\n\t12466 - 12288: 0xABB2,\n\t12467 - 12288: 0xABB3,\n\t12468 - 12288: 0xABB4,\n\t12469 - 12288: 0xABB5,\n\t12470 - 12288: 0xABB6,\n\t12471 - 12288: 0xABB7,\n\t12472 - 12288: 0xABB8,\n\t12473 - 12288: 0xABB9,\n\t12474 - 12288: 0xABBA,\n\t12475 - 12288: 0xABBB,\n\t12476 - 12288: 0xABBC,\n\t12477 - 12288: 0xABBD,\n\t12478 - 12288: 0xABBE,\n\t12479 - 12288: 0xABBF,\n\t12480 - 12288: 0xABC0,\n\t12481 - 12288: 0xABC1,\n\t12482 - 12288: 0xABC2,\n\t12483 - 12288: 0xABC3,\n\t12484 - 12288: 0xABC4,\n\t12485 - 12288: 0xABC5,\n\t12486 - 12288: 0xABC6,\n\t12487 - 12288: 0xABC7,\n\t12488 - 12288: 0xABC8,\n\t12489 - 12288: 0xABC9,\n\t12490 - 12288: 0xABCA,\n\t12491 - 12288: 0xABCB,\n\t12492 - 12288: 0xABCC,\n\t12493 - 12288: 0xABCD,\n\t12494 - 12288: 0xABCE,\n\t12495 - 12288: 0xABCF,\n\t12496 - 12288: 0xABD0,\n\t12497 - 12288: 0xABD1,\n\t12498 - 12288: 0xABD2,\n\t12499 - 12288: 0xABD3,\n\t12500 - 12288: 0xABD4,\n\t12501 - 12288: 0xABD5,\n\t12502 - 12288: 0xABD6,\n\t12503 - 12288: 0xABD7,\n\t12504 - 12288: 0xABD8,\n\t12505 - 12288: 0xABD9,\n\t12506 - 12288: 0xABDA,\n\t12507 - 12288: 0xABDB,\n\t12508 - 12288: 0xABDC,\n\t12509 - 12288: 0xABDD,\n\t12510 - 12288: 0xABDE,\n\t12511 - 12288: 0xABDF,\n\t12512 - 12288: 0xABE0,\n\t12513 - 12288: 0xABE1,\n\t12514 - 12288: 0xABE2,\n\t12515 - 12288: 0xABE3,\n\t12516 - 12288: 0xABE4,\n\t12517 - 12288: 0xABE5,\n\t12518 - 12288: 0xABE6,\n\t12519 - 12288: 0xABE7,\n\t12520 - 12288: 0xABE8,\n\t12521 - 12288: 0xABE9,\n\t12522 - 12288: 0xABEA,\n\t12523 - 12288: 0xABEB,\n\t12524 - 12288: 0xABEC,\n\t12525 - 12288: 0xABED,\n\t12526 - 12288: 0xABEE,\n\t12527 - 12288: 0xABEF,\n\t12528 - 12288: 0xABF0,\n\t12529 - 12288: 0xABF1,\n\t12530 - 12288: 0xABF2,\n\t12531 - 12288: 0xABF3,\n\t12532 - 12288: 0xABF4,\n\t12533 - 12288: 0xABF5,\n\t12534 - 12288: 0xABF6,\n\t12593 - 12288: 0xA4A1,\n\t12594 - 12288: 0xA4A2,\n\t12595 - 12288: 0xA4A3,\n\t12596 - 12288: 0xA4A4,\n\t12597 - 12288: 0xA4A5,\n\t12598 - 12288: 0xA4A6,\n\t12599 - 12288: 0xA4A7,\n\t12600 - 12288: 0xA4A8,\n\t12601 - 12288: 0xA4A9,\n\t12602 - 12288: 0xA4AA,\n\t12603 - 12288: 0xA4AB,\n\t12604 - 12288: 0xA4AC,\n\t12605 - 12288: 0xA4AD,\n\t12606 - 12288: 0xA4AE,\n\t12607 - 12288: 0xA4AF,\n\t12608 - 12288: 0xA4B0,\n\t12609 - 12288: 0xA4B1,\n\t12610 - 12288: 0xA4B2,\n\t12611 - 12288: 0xA4B3,\n\t12612 - 12288: 0xA4B4,\n\t12613 - 12288: 0xA4B5,\n\t12614 - 12288: 0xA4B6,\n\t12615 - 12288: 0xA4B7,\n\t12616 - 12288: 0xA4B8,\n\t12617 - 12288: 0xA4B9,\n\t12618 - 12288: 0xA4BA,\n\t12619 - 12288: 0xA4BB,\n\t12620 - 12288: 0xA4BC,\n\t12621 - 12288: 0xA4BD,\n\t12622 - 12288: 0xA4BE,\n\t12623 - 12288: 0xA4BF,\n\t12624 - 12288: 0xA4C0,\n\t12625 - 12288: 0xA4C1,\n\t12626 - 12288: 0xA4C2,\n\t12627 - 12288: 0xA4C3,\n\t12628 - 12288: 0xA4C4,\n\t12629 - 12288: 0xA4C5,\n\t12630 - 12288: 0xA4C6,\n\t12631 - 12288: 0xA4C7,\n\t12632 - 12288: 0xA4C8,\n\t12633 - 12288: 0xA4C9,\n\t12634 - 12288: 0xA4CA,\n\t12635 - 12288: 0xA4CB,\n\t12636 - 12288: 0xA4CC,\n\t12637 - 12288: 0xA4CD,\n\t12638 - 12288: 0xA4CE,\n\t12639 - 12288: 0xA4CF,\n\t12640 - 12288: 0xA4D0,\n\t12641 - 12288: 0xA4D1,\n\t12642 - 12288: 0xA4D2,\n\t12643 - 12288: 0xA4D3,\n\t12644 - 12288: 0xA4D4,\n\t12645 - 12288: 0xA4D5,\n\t12646 - 12288: 0xA4D6,\n\t12647 - 12288: 0xA4D7,\n\t12648 - 12288: 0xA4D8,\n\t12649 - 12288: 0xA4D9,\n\t12650 - 12288: 0xA4DA,\n\t12651 - 12288: 0xA4DB,\n\t12652 - 12288: 0xA4DC,\n\t12653 - 12288: 0xA4DD,\n\t12654 - 12288: 0xA4DE,\n\t12655 - 12288: 0xA4DF,\n\t12656 - 12288: 0xA4E0,\n\t12657 - 12288: 0xA4E1,\n\t12658 - 12288: 0xA4E2,\n\t12659 - 12288: 0xA4E3,\n\t12660 - 12288: 0xA4E4,\n\t12661 - 12288: 0xA4E5,\n\t12662 - 12288: 0xA4E6,\n\t12663 - 12288: 0xA4E7,\n\t12664 - 12288: 0xA4E8,\n\t12665 - 12288: 0xA4E9,\n\t12666 - 12288: 0xA4EA,\n\t12667 - 12288: 0xA4EB,\n\t12668 - 12288: 0xA4EC,\n\t12669 - 12288: 0xA4ED,\n\t12670 - 12288: 0xA4EE,\n\t12671 - 12288: 0xA4EF,\n\t12672 - 12288: 0xA4F0,\n\t12673 - 12288: 0xA4F1,\n\t12674 - 12288: 0xA4F2,\n\t12675 - 12288: 0xA4F3,\n\t12676 - 12288: 0xA4F4,\n\t12677 - 12288: 0xA4F5,\n\t12678 - 12288: 0xA4F6,\n\t12679 - 12288: 0xA4F7,\n\t12680 - 12288: 0xA4F8,\n\t12681 - 12288: 0xA4F9,\n\t12682 - 12288: 0xA4FA,\n\t12683 - 12288: 0xA4FB,\n\t12684 - 12288: 0xA4FC,\n\t12685 - 12288: 0xA4FD,\n\t12686 - 12288: 0xA4FE,\n\t12800 - 12288: 0xA9B1,\n\t12801 - 12288: 0xA9B2,\n\t12802 - 12288: 0xA9B3,\n\t12803 - 12288: 0xA9B4,\n\t12804 - 12288: 0xA9B5,\n\t12805 - 12288: 0xA9B6,\n\t12806 - 12288: 0xA9B7,\n\t12807 - 12288: 0xA9B8,\n\t12808 - 12288: 0xA9B9,\n\t12809 - 12288: 0xA9BA,\n\t12810 - 12288: 0xA9BB,\n\t12811 - 12288: 0xA9BC,\n\t12812 - 12288: 0xA9BD,\n\t12813 - 12288: 0xA9BE,\n\t12814 - 12288: 0xA9BF,\n\t12815 - 12288: 0xA9C0,\n\t12816 - 12288: 0xA9C1,\n\t12817 - 12288: 0xA9C2,\n\t12818 - 12288: 0xA9C3,\n\t12819 - 12288: 0xA9C4,\n\t12820 - 12288: 0xA9C5,\n\t12821 - 12288: 0xA9C6,\n\t12822 - 12288: 0xA9C7,\n\t12823 - 12288: 0xA9C8,\n\t12824 - 12288: 0xA9C9,\n\t12825 - 12288: 0xA9CA,\n\t12826 - 12288: 0xA9CB,\n\t12827 - 12288: 0xA9CC,\n\t12828 - 12288: 0xA2DF,\n\t12896 - 12288: 0xA8B1,\n\t12897 - 12288: 0xA8B2,\n\t12898 - 12288: 0xA8B3,\n\t12899 - 12288: 0xA8B4,\n\t12900 - 12288: 0xA8B5,\n\t12901 - 12288: 0xA8B6,\n\t12902 - 12288: 0xA8B7,\n\t12903 - 12288: 0xA8B8,\n\t12904 - 12288: 0xA8B9,\n\t12905 - 12288: 0xA8BA,\n\t12906 - 12288: 0xA8BB,\n\t12907 - 12288: 0xA8BC,\n\t12908 - 12288: 0xA8BD,\n\t12909 - 12288: 0xA8BE,\n\t12910 - 12288: 0xA8BF,\n\t12911 - 12288: 0xA8C0,\n\t12912 - 12288: 0xA8C1,\n\t12913 - 12288: 0xA8C2,\n\t12914 - 12288: 0xA8C3,\n\t12915 - 12288: 0xA8C4,\n\t12916 - 12288: 0xA8C5,\n\t12917 - 12288: 0xA8C6,\n\t12918 - 12288: 0xA8C7,\n\t12919 - 12288: 0xA8C8,\n\t12920 - 12288: 0xA8C9,\n\t12921 - 12288: 0xA8CA,\n\t12922 - 12288: 0xA8CB,\n\t12923 - 12288: 0xA8CC,\n\t12927 - 12288: 0xA2DE,\n\t13184 - 12288: 0xA7C9,\n\t13185 - 12288: 0xA7CA,\n\t13186 - 12288: 0xA7CB,\n\t13187 - 12288: 0xA7CC,\n\t13188 - 12288: 0xA7CD,\n\t13192 - 12288: 0xA7BA,\n\t13193 - 12288: 0xA7BB,\n\t13194 - 12288: 0xA7DC,\n\t13195 - 12288: 0xA7DD,\n\t13196 - 12288: 0xA7DE,\n\t13197 - 12288: 0xA7B6,\n\t13198 - 12288: 0xA7B7,\n\t13199 - 12288: 0xA7B8,\n\t13200 - 12288: 0xA7D4,\n\t13201 - 12288: 0xA7D5,\n\t13202 - 12288: 0xA7D6,\n\t13203 - 12288: 0xA7D7,\n\t13204 - 12288: 0xA7D8,\n\t13205 - 12288: 0xA7A1,\n\t13206 - 12288: 0xA7A2,\n\t13207 - 12288: 0xA7A3,\n\t13208 - 12288: 0xA7A5,\n\t13209 - 12288: 0xA7AB,\n\t13210 - 12288: 0xA7AC,\n\t13211 - 12288: 0xA7AD,\n\t13212 - 12288: 0xA7AE,\n\t13213 - 12288: 0xA7AF,\n\t13214 - 12288: 0xA7B0,\n\t13215 - 12288: 0xA7B1,\n\t13216 - 12288: 0xA7B2,\n\t13217 - 12288: 0xA7B3,\n\t13218 - 12288: 0xA7B4,\n\t13219 - 12288: 0xA7A7,\n\t13220 - 12288: 0xA7A8,\n\t13221 - 12288: 0xA7A9,\n\t13222 - 12288: 0xA7AA,\n\t13223 - 12288: 0xA7BD,\n\t13224 - 12288: 0xA7BE,\n\t13225 - 12288: 0xA7E5,\n\t13226 - 12288: 0xA7E6,\n\t13227 - 12288: 0xA7E7,\n\t13228 - 12288: 0xA7E8,\n\t13229 - 12288: 0xA7E1,\n\t13230 - 12288: 0xA7E2,\n\t13231 - 12288: 0xA7E3,\n\t13232 - 12288: 0xA7BF,\n\t13233 - 12288: 0xA7C0,\n\t13234 - 12288: 0xA7C1,\n\t13235 - 12288: 0xA7C2,\n\t13236 - 12288: 0xA7C3,\n\t13237 - 12288: 0xA7C4,\n\t13238 - 12288: 0xA7C5,\n\t13239 - 12288: 0xA7C6,\n\t13240 - 12288: 0xA7C7,\n\t13241 - 12288: 0xA7C8,\n\t13242 - 12288: 0xA7CE,\n\t13243 - 12288: 0xA7CF,\n\t13244 - 12288: 0xA7D0,\n\t13245 - 12288: 0xA7D1,\n\t13246 - 12288: 0xA7D2,\n\t13247 - 12288: 0xA7D3,\n\t13248 - 12288: 0xA7DA,\n\t13249 - 12288: 0xA7DB,\n\t13250 - 12288: 0xA2E3,\n\t13251 - 12288: 0xA7EC,\n\t13252 - 12288: 0xA7A6,\n\t13253 - 12288: 0xA7E0,\n\t13254 - 12288: 0xA7EF,\n\t13255 - 12288: 0xA2E1,\n\t13256 - 12288: 0xA7BC,\n\t13257 - 12288: 0xA7ED,\n\t13258 - 12288: 0xA7B5,\n\t13263 - 12288: 0xA7B9,\n\t13264 - 12288: 0xA7EA,\n\t13267 - 12288: 0xA7EB,\n\t13270 - 12288: 0xA7DF,\n\t13272 - 12288: 0xA2E4,\n\t13275 - 12288: 0xA7E4,\n\t13276 - 12288: 0xA7EE,\n\t13277 - 12288: 0xA7E9,\n}\n\nconst encode4Low, encode4High = 161, 1106\n\nvar encode4 = [...]uint16{\n\t161 - 161:  0xA2AE,\n\t164 - 161:  0xA2B4,\n\t167 - 161:  0xA1D7,\n\t168 - 161:  0xA1A7,\n\t170 - 161:  0xA8A3,\n\t173 - 161:  0xA1A9,\n\t174 - 161:  0xA2E7,\n\t176 - 161:  0xA1C6,\n\t177 - 161:  0xA1BE,\n\t178 - 161:  0xA9F7,\n\t179 - 161:  0xA9F8,\n\t180 - 161:  0xA2A5,\n\t182 - 161:  0xA2D2,\n\t183 - 161:  0xA1A4,\n\t184 - 161:  0xA2AC,\n\t185 - 161:  0xA9F6,\n\t186 - 161:  0xA8AC,\n\t188 - 161:  0xA8F9,\n\t189 - 161:  0xA8F6,\n\t190 - 161:  0xA8FA,\n\t191 - 161:  0xA2AF,\n\t198 - 161:  0xA8A1,\n\t208 - 161:  0xA8A2,\n\t215 - 161:  0xA1BF,\n\t216 - 161:  0xA8AA,\n\t222 - 161:  0xA8AD,\n\t223 - 161:  0xA9AC,\n\t230 - 161:  0xA9A1,\n\t240 - 161:  0xA9A3,\n\t247 - 161:  0xA1C0,\n\t248 - 161:  0xA9AA,\n\t254 - 161:  0xA9AD,\n\t273 - 161:  0xA9A2,\n\t294 - 161:  0xA8A4,\n\t295 - 161:  0xA9A4,\n\t305 - 161:  0xA9A5,\n\t306 - 161:  0xA8A6,\n\t307 - 161:  0xA9A6,\n\t312 - 161:  0xA9A7,\n\t319 - 161:  0xA8A8,\n\t320 - 161:  0xA9A8,\n\t321 - 161:  0xA8A9,\n\t322 - 161:  0xA9A9,\n\t329 - 161:  0xA9B0,\n\t330 - 161:  0xA8AF,\n\t331 - 161:  0xA9AF,\n\t338 - 161:  0xA8AB,\n\t339 - 161:  0xA9AB,\n\t358 - 161:  0xA8AE,\n\t359 - 161:  0xA9AE,\n\t711 - 161:  0xA2A7,\n\t720 - 161:  0xA2B0,\n\t728 - 161:  0xA2A8,\n\t729 - 161:  0xA2AB,\n\t730 - 161:  0xA2AA,\n\t731 - 161:  0xA2AD,\n\t733 - 161:  0xA2A9,\n\t913 - 161:  0xA5C1,\n\t914 - 161:  0xA5C2,\n\t915 - 161:  0xA5C3,\n\t916 - 161:  0xA5C4,\n\t917 - 161:  0xA5C5,\n\t918 - 161:  0xA5C6,\n\t919 - 161:  0xA5C7,\n\t920 - 161:  0xA5C8,\n\t921 - 161:  0xA5C9,\n\t922 - 161:  0xA5CA,\n\t923 - 161:  0xA5CB,\n\t924 - 161:  0xA5CC,\n\t925 - 161:  0xA5CD,\n\t926 - 161:  0xA5CE,\n\t927 - 161:  0xA5CF,\n\t928 - 161:  0xA5D0,\n\t929 - 161:  0xA5D1,\n\t931 - 161:  0xA5D2,\n\t932 - 161:  0xA5D3,\n\t933 - 161:  0xA5D4,\n\t934 - 161:  0xA5D5,\n\t935 - 161:  0xA5D6,\n\t936 - 161:  0xA5D7,\n\t937 - 161:  0xA5D8,\n\t945 - 161:  0xA5E1,\n\t946 - 161:  0xA5E2,\n\t947 - 161:  0xA5E3,\n\t948 - 161:  0xA5E4,\n\t949 - 161:  0xA5E5,\n\t950 - 161:  0xA5E6,\n\t951 - 161:  0xA5E7,\n\t952 - 161:  0xA5E8,\n\t953 - 161:  0xA5E9,\n\t954 - 161:  0xA5EA,\n\t955 - 161:  0xA5EB,\n\t956 - 161:  0xA5EC,\n\t957 - 161:  0xA5ED,\n\t958 - 161:  0xA5EE,\n\t959 - 161:  0xA5EF,\n\t960 - 161:  0xA5F0,\n\t961 - 161:  0xA5F1,\n\t963 - 161:  0xA5F2,\n\t964 - 161:  0xA5F3,\n\t965 - 161:  0xA5F4,\n\t966 - 161:  0xA5F5,\n\t967 - 161:  0xA5F6,\n\t968 - 161:  0xA5F7,\n\t969 - 161:  0xA5F8,\n\t1025 - 161: 0xACA7,\n\t1040 - 161: 0xACA1,\n\t1041 - 161: 0xACA2,\n\t1042 - 161: 0xACA3,\n\t1043 - 161: 0xACA4,\n\t1044 - 161: 0xACA5,\n\t1045 - 161: 0xACA6,\n\t1046 - 161: 0xACA8,\n\t1047 - 161: 0xACA9,\n\t1048 - 161: 0xACAA,\n\t1049 - 161: 0xACAB,\n\t1050 - 161: 0xACAC,\n\t1051 - 161: 0xACAD,\n\t1052 - 161: 0xACAE,\n\t1053 - 161: 0xACAF,\n\t1054 - 161: 0xACB0,\n\t1055 - 161: 0xACB1,\n\t1056 - 161: 0xACB2,\n\t1057 - 161: 0xACB3,\n\t1058 - 161: 0xACB4,\n\t1059 - 161: 0xACB5,\n\t1060 - 161: 0xACB6,\n\t1061 - 161: 0xACB7,\n\t1062 - 161: 0xACB8,\n\t1063 - 161: 0xACB9,\n\t1064 - 161: 0xACBA,\n\t1065 - 161: 0xACBB,\n\t1066 - 161: 0xACBC,\n\t1067 - 161: 0xACBD,\n\t1068 - 161: 0xACBE,\n\t1069 - 161: 0xACBF,\n\t1070 - 161: 0xACC0,\n\t1071 - 161: 0xACC1,\n\t1072 - 161: 0xACD1,\n\t1073 - 161: 0xACD2,\n\t1074 - 161: 0xACD3,\n\t1075 - 161: 0xACD4,\n\t1076 - 161: 0xACD5,\n\t1077 - 161: 0xACD6,\n\t1078 - 161: 0xACD8,\n\t1079 - 161: 0xACD9,\n\t1080 - 161: 0xACDA,\n\t1081 - 161: 0xACDB,\n\t1082 - 161: 0xACDC,\n\t1083 - 161: 0xACDD,\n\t1084 - 161: 0xACDE,\n\t1085 - 161: 0xACDF,\n\t1086 - 161: 0xACE0,\n\t1087 - 161: 0xACE1,\n\t1088 - 161: 0xACE2,\n\t1089 - 161: 0xACE3,\n\t1090 - 161: 0xACE4,\n\t1091 - 161: 0xACE5,\n\t1092 - 161: 0xACE6,\n\t1093 - 161: 0xACE7,\n\t1094 - 161: 0xACE8,\n\t1095 - 161: 0xACE9,\n\t1096 - 161: 0xACEA,\n\t1097 - 161: 0xACEB,\n\t1098 - 161: 0xACEC,\n\t1099 - 161: 0xACED,\n\t1100 - 161: 0xACEE,\n\t1101 - 161: 0xACEF,\n\t1102 - 161: 0xACF0,\n\t1103 - 161: 0xACF1,\n\t1105 - 161: 0xACD7,\n}\n\nconst encode5Low, encode5High = 63744, 64012\n\nvar encode5 = [...]uint16{\n\t63744 - 63744: 0xCBD0,\n\t63745 - 63744: 0xCBD6,\n\t63746 - 63744: 0xCBE7,\n\t63747 - 63744: 0xCDCF,\n\t63748 - 63744: 0xCDE8,\n\t63749 - 63744: 0xCEAD,\n\t63750 - 63744: 0xCFFB,\n\t63751 - 63744: 0xD0A2,\n\t63752 - 63744: 0xD0B8,\n\t63753 - 63744: 0xD0D0,\n\t63754 - 63744: 0xD0DD,\n\t63755 - 63744: 0xD1D4,\n\t63756 - 63744: 0xD1D5,\n\t63757 - 63744: 0xD1D8,\n\t63758 - 63744: 0xD1DB,\n\t63759 - 63744: 0xD1DC,\n\t63760 - 63744: 0xD1DD,\n\t63761 - 63744: 0xD1DE,\n\t63762 - 63744: 0xD1DF,\n\t63763 - 63744: 0xD1E0,\n\t63764 - 63744: 0xD1E2,\n\t63765 - 63744: 0xD1E3,\n\t63766 - 63744: 0xD1E4,\n\t63767 - 63744: 0xD1E5,\n\t63768 - 63744: 0xD1E6,\n\t63769 - 63744: 0xD1E8,\n\t63770 - 63744: 0xD1E9,\n\t63771 - 63744: 0xD1EA,\n\t63772 - 63744: 0xD1EB,\n\t63773 - 63744: 0xD1ED,\n\t63774 - 63744: 0xD1EF,\n\t63775 - 63744: 0xD1F0,\n\t63776 - 63744: 0xD1F2,\n\t63777 - 63744: 0xD1F6,\n\t63778 - 63744: 0xD1FA,\n\t63779 - 63744: 0xD1FC,\n\t63780 - 63744: 0xD1FD,\n\t63781 - 63744: 0xD1FE,\n\t63782 - 63744: 0xD2A2,\n\t63783 - 63744: 0xD2A3,\n\t63784 - 63744: 0xD2A7,\n\t63785 - 63744: 0xD2A8,\n\t63786 - 63744: 0xD2A9,\n\t63787 - 63744: 0xD2AA,\n\t63788 - 63744: 0xD2AB,\n\t63789 - 63744: 0xD2AD,\n\t63790 - 63744: 0xD2B2,\n\t63791 - 63744: 0xD2BE,\n\t63792 - 63744: 0xD2C2,\n\t63793 - 63744: 0xD2C3,\n\t63794 - 63744: 0xD2C4,\n\t63795 - 63744: 0xD2C6,\n\t63796 - 63744: 0xD2C7,\n\t63797 - 63744: 0xD2C8,\n\t63798 - 63744: 0xD2C9,\n\t63799 - 63744: 0xD2CA,\n\t63800 - 63744: 0xD2CB,\n\t63801 - 63744: 0xD2CD,\n\t63802 - 63744: 0xD2CE,\n\t63803 - 63744: 0xD2CF,\n\t63804 - 63744: 0xD2D0,\n\t63805 - 63744: 0xD2D1,\n\t63806 - 63744: 0xD2D2,\n\t63807 - 63744: 0xD2D3,\n\t63808 - 63744: 0xD2D4,\n\t63809 - 63744: 0xD2D5,\n\t63810 - 63744: 0xD2D6,\n\t63811 - 63744: 0xD2D7,\n\t63812 - 63744: 0xD2D9,\n\t63813 - 63744: 0xD2DA,\n\t63814 - 63744: 0xD2DE,\n\t63815 - 63744: 0xD2DF,\n\t63816 - 63744: 0xD2E1,\n\t63817 - 63744: 0xD2E2,\n\t63818 - 63744: 0xD2E4,\n\t63819 - 63744: 0xD2E5,\n\t63820 - 63744: 0xD2E6,\n\t63821 - 63744: 0xD2E7,\n\t63822 - 63744: 0xD2E8,\n\t63823 - 63744: 0xD2E9,\n\t63824 - 63744: 0xD2EA,\n\t63825 - 63744: 0xD2EB,\n\t63826 - 63744: 0xD2F0,\n\t63827 - 63744: 0xD2F1,\n\t63828 - 63744: 0xD2F2,\n\t63829 - 63744: 0xD2F3,\n\t63830 - 63744: 0xD2F4,\n\t63831 - 63744: 0xD2F5,\n\t63832 - 63744: 0xD2F7,\n\t63833 - 63744: 0xD2F8,\n\t63834 - 63744: 0xD4E6,\n\t63835 - 63744: 0xD4FC,\n\t63836 - 63744: 0xD5A5,\n\t63837 - 63744: 0xD5AB,\n\t63838 - 63744: 0xD5AE,\n\t63839 - 63744: 0xD6B8,\n\t63840 - 63744: 0xD6CD,\n\t63841 - 63744: 0xD7CB,\n\t63842 - 63744: 0xD7E4,\n\t63843 - 63744: 0xDBC5,\n\t63844 - 63744: 0xDBE4,\n\t63845 - 63744: 0xDCA5,\n\t63846 - 63744: 0xDDA5,\n\t63847 - 63744: 0xDDD5,\n\t63848 - 63744: 0xDDF4,\n\t63849 - 63744: 0xDEFC,\n\t63850 - 63744: 0xDEFE,\n\t63851 - 63744: 0xDFB3,\n\t63852 - 63744: 0xDFE1,\n\t63853 - 63744: 0xDFE8,\n\t63854 - 63744: 0xE0F1,\n\t63855 - 63744: 0xE1AD,\n\t63856 - 63744: 0xE1ED,\n\t63857 - 63744: 0xE3F5,\n\t63858 - 63744: 0xE4A1,\n\t63859 - 63744: 0xE4A9,\n\t63860 - 63744: 0xE5AE,\n\t63861 - 63744: 0xE5B1,\n\t63862 - 63744: 0xE5B2,\n\t63863 - 63744: 0xE5B9,\n\t63864 - 63744: 0xE5BB,\n\t63865 - 63744: 0xE5BC,\n\t63866 - 63744: 0xE5C4,\n\t63867 - 63744: 0xE5CE,\n\t63868 - 63744: 0xE5D0,\n\t63869 - 63744: 0xE5D2,\n\t63870 - 63744: 0xE5D6,\n\t63871 - 63744: 0xE5FA,\n\t63872 - 63744: 0xE5FB,\n\t63873 - 63744: 0xE5FC,\n\t63874 - 63744: 0xE5FE,\n\t63875 - 63744: 0xE6A1,\n\t63876 - 63744: 0xE6A4,\n\t63877 - 63744: 0xE6A7,\n\t63878 - 63744: 0xE6AD,\n\t63879 - 63744: 0xE6AF,\n\t63880 - 63744: 0xE6B0,\n\t63881 - 63744: 0xE6B1,\n\t63882 - 63744: 0xE6B3,\n\t63883 - 63744: 0xE6B7,\n\t63884 - 63744: 0xE6B8,\n\t63885 - 63744: 0xE6BC,\n\t63886 - 63744: 0xE6C4,\n\t63887 - 63744: 0xE6C6,\n\t63888 - 63744: 0xE6C7,\n\t63889 - 63744: 0xE6CA,\n\t63890 - 63744: 0xE6D2,\n\t63891 - 63744: 0xE6D6,\n\t63892 - 63744: 0xE6D9,\n\t63893 - 63744: 0xE6DC,\n\t63894 - 63744: 0xE6DF,\n\t63895 - 63744: 0xE6E1,\n\t63896 - 63744: 0xE6E4,\n\t63897 - 63744: 0xE6E5,\n\t63898 - 63744: 0xE6E6,\n\t63899 - 63744: 0xE6E8,\n\t63900 - 63744: 0xE6EA,\n\t63901 - 63744: 0xE6EB,\n\t63902 - 63744: 0xE6EC,\n\t63903 - 63744: 0xE6EF,\n\t63904 - 63744: 0xE6F1,\n\t63905 - 63744: 0xE6F2,\n\t63906 - 63744: 0xE6F5,\n\t63907 - 63744: 0xE6F6,\n\t63908 - 63744: 0xE6F7,\n\t63909 - 63744: 0xE6F9,\n\t63910 - 63744: 0xE7A1,\n\t63911 - 63744: 0xE7A6,\n\t63912 - 63744: 0xE7A9,\n\t63913 - 63744: 0xE7AA,\n\t63914 - 63744: 0xE7AC,\n\t63915 - 63744: 0xE7AD,\n\t63916 - 63744: 0xE7B0,\n\t63917 - 63744: 0xE7BF,\n\t63918 - 63744: 0xE7C1,\n\t63919 - 63744: 0xE7C6,\n\t63920 - 63744: 0xE7C7,\n\t63921 - 63744: 0xE7CB,\n\t63922 - 63744: 0xE7CD,\n\t63923 - 63744: 0xE7CF,\n\t63924 - 63744: 0xE7D0,\n\t63925 - 63744: 0xE7D3,\n\t63926 - 63744: 0xE7DF,\n\t63927 - 63744: 0xE7E4,\n\t63928 - 63744: 0xE7E6,\n\t63929 - 63744: 0xE7F7,\n\t63930 - 63744: 0xE8E7,\n\t63931 - 63744: 0xE8E8,\n\t63932 - 63744: 0xE8F0,\n\t63933 - 63744: 0xE8F1,\n\t63934 - 63744: 0xE8F7,\n\t63935 - 63744: 0xE8F9,\n\t63936 - 63744: 0xE8FB,\n\t63937 - 63744: 0xE8FE,\n\t63938 - 63744: 0xE9A7,\n\t63939 - 63744: 0xE9AC,\n\t63940 - 63744: 0xE9CC,\n\t63941 - 63744: 0xE9F7,\n\t63942 - 63744: 0xEAC1,\n\t63943 - 63744: 0xEAE5,\n\t63944 - 63744: 0xEAF4,\n\t63945 - 63744: 0xEAF7,\n\t63946 - 63744: 0xEAFC,\n\t63947 - 63744: 0xEAFE,\n\t63948 - 63744: 0xEBA4,\n\t63949 - 63744: 0xEBA7,\n\t63950 - 63744: 0xEBA9,\n\t63951 - 63744: 0xEBAA,\n\t63952 - 63744: 0xEBBA,\n\t63953 - 63744: 0xEBBB,\n\t63954 - 63744: 0xEBBD,\n\t63955 - 63744: 0xEBC1,\n\t63956 - 63744: 0xEBC2,\n\t63957 - 63744: 0xEBC6,\n\t63958 - 63744: 0xEBC7,\n\t63959 - 63744: 0xEBCC,\n\t63960 - 63744: 0xEBCF,\n\t63961 - 63744: 0xEBD0,\n\t63962 - 63744: 0xEBD1,\n\t63963 - 63744: 0xEBD2,\n\t63964 - 63744: 0xEBD8,\n\t63965 - 63744: 0xECA6,\n\t63966 - 63744: 0xECA7,\n\t63967 - 63744: 0xECAA,\n\t63968 - 63744: 0xECAF,\n\t63969 - 63744: 0xECB0,\n\t63970 - 63744: 0xECB1,\n\t63971 - 63744: 0xECB2,\n\t63972 - 63744: 0xECB5,\n\t63973 - 63744: 0xECB8,\n\t63974 - 63744: 0xECBA,\n\t63975 - 63744: 0xECC0,\n\t63976 - 63744: 0xECC1,\n\t63977 - 63744: 0xECC5,\n\t63978 - 63744: 0xECC6,\n\t63979 - 63744: 0xECC9,\n\t63980 - 63744: 0xECCA,\n\t63981 - 63744: 0xECD5,\n\t63982 - 63744: 0xECDD,\n\t63983 - 63744: 0xECDE,\n\t63984 - 63744: 0xECE1,\n\t63985 - 63744: 0xECE4,\n\t63986 - 63744: 0xECE7,\n\t63987 - 63744: 0xECE8,\n\t63988 - 63744: 0xECF7,\n\t63989 - 63744: 0xECF8,\n\t63990 - 63744: 0xECFA,\n\t63991 - 63744: 0xEDA1,\n\t63992 - 63744: 0xEDA2,\n\t63993 - 63744: 0xEDA3,\n\t63994 - 63744: 0xEDEE,\n\t63995 - 63744: 0xEEDB,\n\t63996 - 63744: 0xF2BD,\n\t63997 - 63744: 0xF2FA,\n\t63998 - 63744: 0xF3B1,\n\t63999 - 63744: 0xF4A7,\n\t64000 - 63744: 0xF4EE,\n\t64001 - 63744: 0xF6F4,\n\t64002 - 63744: 0xF6F6,\n\t64003 - 63744: 0xF7B8,\n\t64004 - 63744: 0xF7C8,\n\t64005 - 63744: 0xF7D3,\n\t64006 - 63744: 0xF8DB,\n\t64007 - 63744: 0xF8F0,\n\t64008 - 63744: 0xFAA1,\n\t64009 - 63744: 0xFAA2,\n\t64010 - 63744: 0xFAE6,\n\t64011 - 63744: 0xFCA9,\n}\n\nconst encode6Low, encode6High = 65281, 65511\n\nvar encode6 = [...]uint16{\n\t65281 - 65281: 0xA3A1,\n\t65282 - 65281: 0xA3A2,\n\t65283 - 65281: 0xA3A3,\n\t65284 - 65281: 0xA3A4,\n\t65285 - 65281: 0xA3A5,\n\t65286 - 65281: 0xA3A6,\n\t65287 - 65281: 0xA3A7,\n\t65288 - 65281: 0xA3A8,\n\t65289 - 65281: 0xA3A9,\n\t65290 - 65281: 0xA3AA,\n\t65291 - 65281: 0xA3AB,\n\t65292 - 65281: 0xA3AC,\n\t65293 - 65281: 0xA3AD,\n\t65294 - 65281: 0xA3AE,\n\t65295 - 65281: 0xA3AF,\n\t65296 - 65281: 0xA3B0,\n\t65297 - 65281: 0xA3B1,\n\t65298 - 65281: 0xA3B2,\n\t65299 - 65281: 0xA3B3,\n\t65300 - 65281: 0xA3B4,\n\t65301 - 65281: 0xA3B5,\n\t65302 - 65281: 0xA3B6,\n\t65303 - 65281: 0xA3B7,\n\t65304 - 65281: 0xA3B8,\n\t65305 - 65281: 0xA3B9,\n\t65306 - 65281: 0xA3BA,\n\t65307 - 65281: 0xA3BB,\n\t65308 - 65281: 0xA3BC,\n\t65309 - 65281: 0xA3BD,\n\t65310 - 65281: 0xA3BE,\n\t65311 - 65281: 0xA3BF,\n\t65312 - 65281: 0xA3C0,\n\t65313 - 65281: 0xA3C1,\n\t65314 - 65281: 0xA3C2,\n\t65315 - 65281: 0xA3C3,\n\t65316 - 65281: 0xA3C4,\n\t65317 - 65281: 0xA3C5,\n\t65318 - 65281: 0xA3C6,\n\t65319 - 65281: 0xA3C7,\n\t65320 - 65281: 0xA3C8,\n\t65321 - 65281: 0xA3C9,\n\t65322 - 65281: 0xA3CA,\n\t65323 - 65281: 0xA3CB,\n\t65324 - 65281: 0xA3CC,\n\t65325 - 65281: 0xA3CD,\n\t65326 - 65281: 0xA3CE,\n\t65327 - 65281: 0xA3CF,\n\t65328 - 65281: 0xA3D0,\n\t65329 - 65281: 0xA3D1,\n\t65330 - 65281: 0xA3D2,\n\t65331 - 65281: 0xA3D3,\n\t65332 - 65281: 0xA3D4,\n\t65333 - 65281: 0xA3D5,\n\t65334 - 65281: 0xA3D6,\n\t65335 - 65281: 0xA3D7,\n\t65336 - 65281: 0xA3D8,\n\t65337 - 65281: 0xA3D9,\n\t65338 - 65281: 0xA3DA,\n\t65339 - 65281: 0xA3DB,\n\t65340 - 65281: 0xA1AC,\n\t65341 - 65281: 0xA3DD,\n\t65342 - 65281: 0xA3DE,\n\t65343 - 65281: 0xA3DF,\n\t65344 - 65281: 0xA3E0,\n\t65345 - 65281: 0xA3E1,\n\t65346 - 65281: 0xA3E2,\n\t65347 - 65281: 0xA3E3,\n\t65348 - 65281: 0xA3E4,\n\t65349 - 65281: 0xA3E5,\n\t65350 - 65281: 0xA3E6,\n\t65351 - 65281: 0xA3E7,\n\t65352 - 65281: 0xA3E8,\n\t65353 - 65281: 0xA3E9,\n\t65354 - 65281: 0xA3EA,\n\t65355 - 65281: 0xA3EB,\n\t65356 - 65281: 0xA3EC,\n\t65357 - 65281: 0xA3ED,\n\t65358 - 65281: 0xA3EE,\n\t65359 - 65281: 0xA3EF,\n\t65360 - 65281: 0xA3F0,\n\t65361 - 65281: 0xA3F1,\n\t65362 - 65281: 0xA3F2,\n\t65363 - 65281: 0xA3F3,\n\t65364 - 65281: 0xA3F4,\n\t65365 - 65281: 0xA3F5,\n\t65366 - 65281: 0xA3F6,\n\t65367 - 65281: 0xA3F7,\n\t65368 - 65281: 0xA3F8,\n\t65369 - 65281: 0xA3F9,\n\t65370 - 65281: 0xA3FA,\n\t65371 - 65281: 0xA3FB,\n\t65372 - 65281: 0xA3FC,\n\t65373 - 65281: 0xA3FD,\n\t65374 - 65281: 0xA2A6,\n\t65504 - 65281: 0xA1CB,\n\t65505 - 65281: 0xA1CC,\n\t65506 - 65281: 0xA1FE,\n\t65507 - 65281: 0xA3FE,\n\t65509 - 65281: 0xA1CD,\n\t65510 - 65281: 0xA3DC,\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/text/encoding/simplifiedchinese/all.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage simplifiedchinese\n\nimport (\n\t\"golang.org/x/text/encoding\"\n)\n\n// All is a list of all defined encodings in this package.\nvar All = []encoding.Encoding{GB18030, GBK, HZGB2312}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/text/encoding/simplifiedchinese/gbk.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage simplifiedchinese\n\nimport (\n\t\"unicode/utf8\"\n\n\t\"golang.org/x/text/encoding\"\n\t\"golang.org/x/text/encoding/internal\"\n\t\"golang.org/x/text/encoding/internal/identifier\"\n\t\"golang.org/x/text/transform\"\n)\n\nvar (\n\t// GB18030 is the GB18030 encoding.\n\tGB18030 encoding.Encoding = &gbk18030\n\t// GBK is the GBK encoding. It encodes an extension of the GB2312 character set\n\t// and is also known as Code Page 936.\n\tGBK encoding.Encoding = &gbk\n)\n\nvar gbk = internal.Encoding{\n\tEncoding: &internal.SimpleEncoding{\n\t\tDecoder: gbkDecoder{gb18030: false},\n\t\tEncoder: gbkEncoder{gb18030: false},\n\t},\n\tName: \"GBK\",\n\tMIB:  identifier.GBK,\n}\n\nvar gbk18030 = internal.Encoding{\n\tEncoding: &internal.SimpleEncoding{\n\t\tDecoder: gbkDecoder{gb18030: true},\n\t\tEncoder: gbkEncoder{gb18030: true},\n\t},\n\tName: \"GB18030\",\n\tMIB:  identifier.GB18030,\n}\n\ntype gbkDecoder struct {\n\ttransform.NopResetter\n\tgb18030 bool\n}\n\nfunc (d gbkDecoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {\n\tr, size := rune(0), 0\nloop:\n\tfor ; nSrc < len(src); nSrc += size {\n\t\tswitch c0 := src[nSrc]; {\n\t\tcase c0 < utf8.RuneSelf:\n\t\t\tr, size = rune(c0), 1\n\n\t\t// Microsoft's Code Page 936 extends GBK 1.0 to encode the euro sign U+20AC\n\t\t// as 0x80. The HTML5 specification at http://encoding.spec.whatwg.org/#gbk\n\t\t// says to treat \"gbk\" as Code Page 936.\n\t\t// GBK’s decoder is gb18030’s decoder. https://encoding.spec.whatwg.org/#gbk-decoder\n\t\t// If byte is 0x80, return code point U+20AC. https://encoding.spec.whatwg.org/#gb18030-decoder\n\t\tcase c0 == 0x80:\n\t\t\tr, size = '€', 1\n\n\t\tcase c0 < 0xff:\n\t\t\tif nSrc+1 >= len(src) {\n\t\t\t\tif !atEOF {\n\t\t\t\t\terr = transform.ErrShortSrc\n\t\t\t\t\tbreak loop\n\t\t\t\t}\n\t\t\t\tr, size = utf8.RuneError, 1\n\t\t\t\tgoto write\n\t\t\t}\n\t\t\tc1 := src[nSrc+1]\n\t\t\tswitch {\n\t\t\tcase 0x40 <= c1 && c1 < 0x7f:\n\t\t\t\tc1 -= 0x40\n\t\t\tcase 0x80 <= c1 && c1 < 0xff:\n\t\t\t\tc1 -= 0x41\n\t\t\tcase d.gb18030 && 0x30 <= c1 && c1 < 0x40:\n\t\t\t\tif nSrc+3 >= len(src) {\n\t\t\t\t\tif !atEOF {\n\t\t\t\t\t\terr = transform.ErrShortSrc\n\t\t\t\t\t\tbreak loop\n\t\t\t\t\t}\n\t\t\t\t\t// The second byte here is always ASCII, so we can set size\n\t\t\t\t\t// to 1 in all cases.\n\t\t\t\t\tr, size = utf8.RuneError, 1\n\t\t\t\t\tgoto write\n\t\t\t\t}\n\t\t\t\tc2 := src[nSrc+2]\n\t\t\t\tif c2 < 0x81 || 0xff <= c2 {\n\t\t\t\t\tr, size = utf8.RuneError, 1\n\t\t\t\t\tgoto write\n\t\t\t\t}\n\t\t\t\tc3 := src[nSrc+3]\n\t\t\t\tif c3 < 0x30 || 0x3a <= c3 {\n\t\t\t\t\tr, size = utf8.RuneError, 1\n\t\t\t\t\tgoto write\n\t\t\t\t}\n\t\t\t\tsize = 4\n\t\t\t\tr = ((rune(c0-0x81)*10+rune(c1-0x30))*126+rune(c2-0x81))*10 + rune(c3-0x30)\n\t\t\t\tif r < 39420 {\n\t\t\t\t\ti, j := 0, len(gb18030)\n\t\t\t\t\tfor i < j {\n\t\t\t\t\t\th := i + (j-i)/2\n\t\t\t\t\t\tif r >= rune(gb18030[h][0]) {\n\t\t\t\t\t\t\ti = h + 1\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tj = h\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdec := &gb18030[i-1]\n\t\t\t\t\tr += rune(dec[1]) - rune(dec[0])\n\t\t\t\t\tgoto write\n\t\t\t\t}\n\t\t\t\tr -= 189000\n\t\t\t\tif 0 <= r && r < 0x100000 {\n\t\t\t\t\tr += 0x10000\n\t\t\t\t} else {\n\t\t\t\t\tr, size = utf8.RuneError, 1\n\t\t\t\t}\n\t\t\t\tgoto write\n\t\t\tdefault:\n\t\t\t\tr, size = utf8.RuneError, 1\n\t\t\t\tgoto write\n\t\t\t}\n\t\t\tr, size = '\\ufffd', 2\n\t\t\tif i := int(c0-0x81)*190 + int(c1); i < len(decode) {\n\t\t\t\tr = rune(decode[i])\n\t\t\t\tif r == 0 {\n\t\t\t\t\tr = '\\ufffd'\n\t\t\t\t}\n\t\t\t}\n\n\t\tdefault:\n\t\t\tr, size = utf8.RuneError, 1\n\t\t}\n\n\twrite:\n\t\tif nDst+utf8.RuneLen(r) > len(dst) {\n\t\t\terr = transform.ErrShortDst\n\t\t\tbreak loop\n\t\t}\n\t\tnDst += utf8.EncodeRune(dst[nDst:], r)\n\t}\n\treturn nDst, nSrc, err\n}\n\ntype gbkEncoder struct {\n\ttransform.NopResetter\n\tgb18030 bool\n}\n\nfunc (e gbkEncoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {\n\tr, r2, size := rune(0), rune(0), 0\n\tfor ; nSrc < len(src); nSrc += size {\n\t\tr = rune(src[nSrc])\n\n\t\t// Decode a 1-byte rune.\n\t\tif r < utf8.RuneSelf {\n\t\t\tsize = 1\n\n\t\t} else {\n\t\t\t// Decode a multi-byte rune.\n\t\t\tr, size = utf8.DecodeRune(src[nSrc:])\n\t\t\tif size == 1 {\n\t\t\t\t// All valid runes of size 1 (those below utf8.RuneSelf) were\n\t\t\t\t// handled above. We have invalid UTF-8 or we haven't seen the\n\t\t\t\t// full character yet.\n\t\t\t\tif !atEOF && !utf8.FullRune(src[nSrc:]) {\n\t\t\t\t\terr = transform.ErrShortSrc\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// func init checks that the switch covers all tables.\n\t\t\tswitch {\n\t\t\tcase encode0Low <= r && r < encode0High:\n\t\t\t\tif r2 = rune(encode0[r-encode0Low]); r2 != 0 {\n\t\t\t\t\tgoto write2\n\t\t\t\t}\n\t\t\tcase encode1Low <= r && r < encode1High:\n\t\t\t\t// Microsoft's Code Page 936 extends GBK 1.0 to encode the euro sign U+20AC\n\t\t\t\t// as 0x80. The HTML5 specification at http://encoding.spec.whatwg.org/#gbk\n\t\t\t\t// says to treat \"gbk\" as Code Page 936.\n\t\t\t\t// GBK’s encoder is gb18030’s encoder with its _is GBK_ set to true. https://encoding.spec.whatwg.org/#gbk-encoder\n\t\t\t\t// If _is GBK_ is true and code point is U+20AC, return byte 0x80. https://encoding.spec.whatwg.org/#gb18030-encoder\n\t\t\t\tif !e.gb18030 && r == '€' {\n\t\t\t\t\tr = 0x80\n\t\t\t\t\tgoto write1\n\t\t\t\t}\n\t\t\t\tif r2 = rune(encode1[r-encode1Low]); r2 != 0 {\n\t\t\t\t\tgoto write2\n\t\t\t\t}\n\t\t\tcase encode2Low <= r && r < encode2High:\n\t\t\t\tif r2 = rune(encode2[r-encode2Low]); r2 != 0 {\n\t\t\t\t\tgoto write2\n\t\t\t\t}\n\t\t\tcase encode3Low <= r && r < encode3High:\n\t\t\t\tif r2 = rune(encode3[r-encode3Low]); r2 != 0 {\n\t\t\t\t\tgoto write2\n\t\t\t\t}\n\t\t\tcase encode4Low <= r && r < encode4High:\n\t\t\t\tif r2 = rune(encode4[r-encode4Low]); r2 != 0 {\n\t\t\t\t\tgoto write2\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif e.gb18030 {\n\t\t\t\tif r < 0x10000 {\n\t\t\t\t\ti, j := 0, len(gb18030)\n\t\t\t\t\tfor i < j {\n\t\t\t\t\t\th := i + (j-i)/2\n\t\t\t\t\t\tif r >= rune(gb18030[h][1]) {\n\t\t\t\t\t\t\ti = h + 1\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tj = h\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdec := &gb18030[i-1]\n\t\t\t\t\tr += rune(dec[0]) - rune(dec[1])\n\t\t\t\t\tgoto write4\n\t\t\t\t} else if r < 0x110000 {\n\t\t\t\t\tr += 189000 - 0x10000\n\t\t\t\t\tgoto write4\n\t\t\t\t}\n\t\t\t}\n\t\t\terr = internal.ErrASCIIReplacement\n\t\t\tbreak\n\t\t}\n\n\twrite1:\n\t\tif nDst >= len(dst) {\n\t\t\terr = transform.ErrShortDst\n\t\t\tbreak\n\t\t}\n\t\tdst[nDst] = uint8(r)\n\t\tnDst++\n\t\tcontinue\n\n\twrite2:\n\t\tif nDst+2 > len(dst) {\n\t\t\terr = transform.ErrShortDst\n\t\t\tbreak\n\t\t}\n\t\tdst[nDst+0] = uint8(r2 >> 8)\n\t\tdst[nDst+1] = uint8(r2)\n\t\tnDst += 2\n\t\tcontinue\n\n\twrite4:\n\t\tif nDst+4 > len(dst) {\n\t\t\terr = transform.ErrShortDst\n\t\t\tbreak\n\t\t}\n\t\tdst[nDst+3] = uint8(r%10 + 0x30)\n\t\tr /= 10\n\t\tdst[nDst+2] = uint8(r%126 + 0x81)\n\t\tr /= 126\n\t\tdst[nDst+1] = uint8(r%10 + 0x30)\n\t\tr /= 10\n\t\tdst[nDst+0] = uint8(r + 0x81)\n\t\tnDst += 4\n\t\tcontinue\n\t}\n\treturn nDst, nSrc, err\n}\n\nfunc init() {\n\t// Check that the hard-coded encode switch covers all tables.\n\tif numEncodeTables != 5 {\n\t\tpanic(\"bad numEncodeTables\")\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/text/encoding/simplifiedchinese/hzgb2312.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage simplifiedchinese\n\nimport (\n\t\"unicode/utf8\"\n\n\t\"golang.org/x/text/encoding\"\n\t\"golang.org/x/text/encoding/internal\"\n\t\"golang.org/x/text/encoding/internal/identifier\"\n\t\"golang.org/x/text/transform\"\n)\n\n// HZGB2312 is the HZ-GB2312 encoding.\nvar HZGB2312 encoding.Encoding = &hzGB2312\n\nvar hzGB2312 = internal.Encoding{\n\tEncoding: internal.FuncEncoding{Decoder: hzGB2312NewDecoder, Encoder: hzGB2312NewEncoder},\n\tName:     \"HZ-GB2312\",\n\tMIB:      identifier.HZGB2312,\n}\n\nfunc hzGB2312NewDecoder() transform.Transformer {\n\treturn new(hzGB2312Decoder)\n}\n\nfunc hzGB2312NewEncoder() transform.Transformer {\n\treturn new(hzGB2312Encoder)\n}\n\nconst (\n\tasciiState = iota\n\tgbState\n)\n\ntype hzGB2312Decoder int\n\nfunc (d *hzGB2312Decoder) Reset() {\n\t*d = asciiState\n}\n\nfunc (d *hzGB2312Decoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {\n\tr, size := rune(0), 0\nloop:\n\tfor ; nSrc < len(src); nSrc += size {\n\t\tc0 := src[nSrc]\n\t\tif c0 >= utf8.RuneSelf {\n\t\t\tr, size = utf8.RuneError, 1\n\t\t\tgoto write\n\t\t}\n\n\t\tif c0 == '~' {\n\t\t\tif nSrc+1 >= len(src) {\n\t\t\t\tif !atEOF {\n\t\t\t\t\terr = transform.ErrShortSrc\n\t\t\t\t\tbreak loop\n\t\t\t\t}\n\t\t\t\tr, size = utf8.RuneError, 1\n\t\t\t\tgoto write\n\t\t\t}\n\t\t\tsize = 2\n\t\t\tswitch src[nSrc+1] {\n\t\t\tcase '{':\n\t\t\t\t*d = gbState\n\t\t\t\tcontinue\n\t\t\tcase '}':\n\t\t\t\t*d = asciiState\n\t\t\t\tcontinue\n\t\t\tcase '~':\n\t\t\t\tif nDst >= len(dst) {\n\t\t\t\t\terr = transform.ErrShortDst\n\t\t\t\t\tbreak loop\n\t\t\t\t}\n\t\t\t\tdst[nDst] = '~'\n\t\t\t\tnDst++\n\t\t\t\tcontinue\n\t\t\tcase '\\n':\n\t\t\t\tcontinue\n\t\t\tdefault:\n\t\t\t\tr = utf8.RuneError\n\t\t\t\tgoto write\n\t\t\t}\n\t\t}\n\n\t\tif *d == asciiState {\n\t\t\tr, size = rune(c0), 1\n\t\t} else {\n\t\t\tif nSrc+1 >= len(src) {\n\t\t\t\tif !atEOF {\n\t\t\t\t\terr = transform.ErrShortSrc\n\t\t\t\t\tbreak loop\n\t\t\t\t}\n\t\t\t\tr, size = utf8.RuneError, 1\n\t\t\t\tgoto write\n\t\t\t}\n\t\t\tsize = 2\n\t\t\tc1 := src[nSrc+1]\n\t\t\tif c0 < 0x21 || 0x7e <= c0 || c1 < 0x21 || 0x7f <= c1 {\n\t\t\t\t// error\n\t\t\t} else if i := int(c0-0x01)*190 + int(c1+0x3f); i < len(decode) {\n\t\t\t\tr = rune(decode[i])\n\t\t\t\tif r != 0 {\n\t\t\t\t\tgoto write\n\t\t\t\t}\n\t\t\t}\n\t\t\tif c1 > utf8.RuneSelf {\n\t\t\t\t// Be consistent and always treat non-ASCII as a single error.\n\t\t\t\tsize = 1\n\t\t\t}\n\t\t\tr = utf8.RuneError\n\t\t}\n\n\twrite:\n\t\tif nDst+utf8.RuneLen(r) > len(dst) {\n\t\t\terr = transform.ErrShortDst\n\t\t\tbreak loop\n\t\t}\n\t\tnDst += utf8.EncodeRune(dst[nDst:], r)\n\t}\n\treturn nDst, nSrc, err\n}\n\ntype hzGB2312Encoder int\n\nfunc (d *hzGB2312Encoder) Reset() {\n\t*d = asciiState\n}\n\nfunc (e *hzGB2312Encoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {\n\tr, size := rune(0), 0\n\tfor ; nSrc < len(src); nSrc += size {\n\t\tr = rune(src[nSrc])\n\n\t\t// Decode a 1-byte rune.\n\t\tif r < utf8.RuneSelf {\n\t\t\tsize = 1\n\t\t\tif r == '~' {\n\t\t\t\tif nDst+2 > len(dst) {\n\t\t\t\t\terr = transform.ErrShortDst\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tdst[nDst+0] = '~'\n\t\t\t\tdst[nDst+1] = '~'\n\t\t\t\tnDst += 2\n\t\t\t\tcontinue\n\t\t\t} else if *e != asciiState {\n\t\t\t\tif nDst+3 > len(dst) {\n\t\t\t\t\terr = transform.ErrShortDst\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\t*e = asciiState\n\t\t\t\tdst[nDst+0] = '~'\n\t\t\t\tdst[nDst+1] = '}'\n\t\t\t\tnDst += 2\n\t\t\t} else if nDst >= len(dst) {\n\t\t\t\terr = transform.ErrShortDst\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tdst[nDst] = uint8(r)\n\t\t\tnDst += 1\n\t\t\tcontinue\n\n\t\t}\n\n\t\t// Decode a multi-byte rune.\n\t\tr, size = utf8.DecodeRune(src[nSrc:])\n\t\tif size == 1 {\n\t\t\t// All valid runes of size 1 (those below utf8.RuneSelf) were\n\t\t\t// handled above. We have invalid UTF-8 or we haven't seen the\n\t\t\t// full character yet.\n\t\t\tif !atEOF && !utf8.FullRune(src[nSrc:]) {\n\t\t\t\terr = transform.ErrShortSrc\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\t\t// func init checks that the switch covers all tables.\n\t\tswitch {\n\t\tcase encode0Low <= r && r < encode0High:\n\t\t\tif r = rune(encode0[r-encode0Low]); r != 0 {\n\t\t\t\tgoto writeGB\n\t\t\t}\n\t\tcase encode1Low <= r && r < encode1High:\n\t\t\tif r = rune(encode1[r-encode1Low]); r != 0 {\n\t\t\t\tgoto writeGB\n\t\t\t}\n\t\tcase encode2Low <= r && r < encode2High:\n\t\t\tif r = rune(encode2[r-encode2Low]); r != 0 {\n\t\t\t\tgoto writeGB\n\t\t\t}\n\t\tcase encode3Low <= r && r < encode3High:\n\t\t\tif r = rune(encode3[r-encode3Low]); r != 0 {\n\t\t\t\tgoto writeGB\n\t\t\t}\n\t\tcase encode4Low <= r && r < encode4High:\n\t\t\tif r = rune(encode4[r-encode4Low]); r != 0 {\n\t\t\t\tgoto writeGB\n\t\t\t}\n\t\t}\n\n\tterminateInASCIIState:\n\t\t// Switch back to ASCII state in case of error so that an ASCII\n\t\t// replacement character can be written in the correct state.\n\t\tif *e != asciiState {\n\t\t\tif nDst+2 > len(dst) {\n\t\t\t\terr = transform.ErrShortDst\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tdst[nDst+0] = '~'\n\t\t\tdst[nDst+1] = '}'\n\t\t\tnDst += 2\n\t\t}\n\t\terr = internal.ErrASCIIReplacement\n\t\tbreak\n\n\twriteGB:\n\t\tc0 := uint8(r>>8) - 0x80\n\t\tc1 := uint8(r) - 0x80\n\t\tif c0 < 0x21 || 0x7e <= c0 || c1 < 0x21 || 0x7f <= c1 {\n\t\t\tgoto terminateInASCIIState\n\t\t}\n\t\tif *e == asciiState {\n\t\t\tif nDst+4 > len(dst) {\n\t\t\t\terr = transform.ErrShortDst\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t*e = gbState\n\t\t\tdst[nDst+0] = '~'\n\t\t\tdst[nDst+1] = '{'\n\t\t\tnDst += 2\n\t\t} else if nDst+2 > len(dst) {\n\t\t\terr = transform.ErrShortDst\n\t\t\tbreak\n\t\t}\n\t\tdst[nDst+0] = c0\n\t\tdst[nDst+1] = c1\n\t\tnDst += 2\n\t\tcontinue\n\t}\n\t// TODO: should one always terminate in ASCII state to make it safe to\n\t// concatenate two HZ-GB2312-encoded strings?\n\treturn nDst, nSrc, err\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/text/encoding/simplifiedchinese/tables.go",
    "content": "// generated by go run maketables.go; DO NOT EDIT\n\n// Package simplifiedchinese provides Simplified Chinese encodings such as GBK.\npackage simplifiedchinese // import \"golang.org/x/text/encoding/simplifiedchinese\"\n\n// gb18030 is the table from http://encoding.spec.whatwg.org/index-gb18030.txt\nvar gb18030 = [...][2]uint16{\n\t{0x0000, 0x0080},\n\t{0x0024, 0x00a5},\n\t{0x0026, 0x00a9},\n\t{0x002d, 0x00b2},\n\t{0x0032, 0x00b8},\n\t{0x0051, 0x00d8},\n\t{0x0059, 0x00e2},\n\t{0x005f, 0x00eb},\n\t{0x0060, 0x00ee},\n\t{0x0064, 0x00f4},\n\t{0x0067, 0x00f8},\n\t{0x0068, 0x00fb},\n\t{0x0069, 0x00fd},\n\t{0x006d, 0x0102},\n\t{0x007e, 0x0114},\n\t{0x0085, 0x011c},\n\t{0x0094, 0x012c},\n\t{0x00ac, 0x0145},\n\t{0x00af, 0x0149},\n\t{0x00b3, 0x014e},\n\t{0x00d0, 0x016c},\n\t{0x0132, 0x01cf},\n\t{0x0133, 0x01d1},\n\t{0x0134, 0x01d3},\n\t{0x0135, 0x01d5},\n\t{0x0136, 0x01d7},\n\t{0x0137, 0x01d9},\n\t{0x0138, 0x01db},\n\t{0x0139, 0x01dd},\n\t{0x0155, 0x01fa},\n\t{0x01ac, 0x0252},\n\t{0x01bb, 0x0262},\n\t{0x0220, 0x02c8},\n\t{0x0221, 0x02cc},\n\t{0x022e, 0x02da},\n\t{0x02e5, 0x03a2},\n\t{0x02e6, 0x03aa},\n\t{0x02ed, 0x03c2},\n\t{0x02ee, 0x03ca},\n\t{0x0325, 0x0402},\n\t{0x0333, 0x0450},\n\t{0x0334, 0x0452},\n\t{0x1ef2, 0x2011},\n\t{0x1ef4, 0x2017},\n\t{0x1ef5, 0x201a},\n\t{0x1ef7, 0x201e},\n\t{0x1efe, 0x2027},\n\t{0x1f07, 0x2031},\n\t{0x1f08, 0x2034},\n\t{0x1f09, 0x2036},\n\t{0x1f0e, 0x203c},\n\t{0x1f7e, 0x20ad},\n\t{0x1fd4, 0x2104},\n\t{0x1fd5, 0x2106},\n\t{0x1fd8, 0x210a},\n\t{0x1fe4, 0x2117},\n\t{0x1fee, 0x2122},\n\t{0x202c, 0x216c},\n\t{0x2030, 0x217a},\n\t{0x2046, 0x2194},\n\t{0x2048, 0x219a},\n\t{0x20b6, 0x2209},\n\t{0x20bc, 0x2210},\n\t{0x20bd, 0x2212},\n\t{0x20c0, 0x2216},\n\t{0x20c4, 0x221b},\n\t{0x20c6, 0x2221},\n\t{0x20c8, 0x2224},\n\t{0x20c9, 0x2226},\n\t{0x20ca, 0x222c},\n\t{0x20cc, 0x222f},\n\t{0x20d1, 0x2238},\n\t{0x20d6, 0x223e},\n\t{0x20e0, 0x2249},\n\t{0x20e3, 0x224d},\n\t{0x20e8, 0x2253},\n\t{0x20f5, 0x2262},\n\t{0x20f7, 0x2268},\n\t{0x20fd, 0x2270},\n\t{0x2122, 0x2296},\n\t{0x2125, 0x229a},\n\t{0x2130, 0x22a6},\n\t{0x2149, 0x22c0},\n\t{0x219b, 0x2313},\n\t{0x22e8, 0x246a},\n\t{0x22f2, 0x249c},\n\t{0x2356, 0x254c},\n\t{0x235a, 0x2574},\n\t{0x2367, 0x2590},\n\t{0x236a, 0x2596},\n\t{0x2374, 0x25a2},\n\t{0x2384, 0x25b4},\n\t{0x238c, 0x25be},\n\t{0x2394, 0x25c8},\n\t{0x2397, 0x25cc},\n\t{0x2399, 0x25d0},\n\t{0x23ab, 0x25e6},\n\t{0x23ca, 0x2607},\n\t{0x23cc, 0x260a},\n\t{0x2402, 0x2641},\n\t{0x2403, 0x2643},\n\t{0x2c41, 0x2e82},\n\t{0x2c43, 0x2e85},\n\t{0x2c46, 0x2e89},\n\t{0x2c48, 0x2e8d},\n\t{0x2c52, 0x2e98},\n\t{0x2c61, 0x2ea8},\n\t{0x2c63, 0x2eab},\n\t{0x2c66, 0x2eaf},\n\t{0x2c6a, 0x2eb4},\n\t{0x2c6c, 0x2eb8},\n\t{0x2c6f, 0x2ebc},\n\t{0x2c7d, 0x2ecb},\n\t{0x2da2, 0x2ffc},\n\t{0x2da6, 0x3004},\n\t{0x2da7, 0x3018},\n\t{0x2dac, 0x301f},\n\t{0x2dae, 0x302a},\n\t{0x2dc2, 0x303f},\n\t{0x2dc4, 0x3094},\n\t{0x2dcb, 0x309f},\n\t{0x2dcd, 0x30f7},\n\t{0x2dd2, 0x30ff},\n\t{0x2dd8, 0x312a},\n\t{0x2ece, 0x322a},\n\t{0x2ed5, 0x3232},\n\t{0x2f46, 0x32a4},\n\t{0x3030, 0x3390},\n\t{0x303c, 0x339f},\n\t{0x303e, 0x33a2},\n\t{0x3060, 0x33c5},\n\t{0x3069, 0x33cf},\n\t{0x306b, 0x33d3},\n\t{0x306d, 0x33d6},\n\t{0x30de, 0x3448},\n\t{0x3109, 0x3474},\n\t{0x3233, 0x359f},\n\t{0x32a2, 0x360f},\n\t{0x32ad, 0x361b},\n\t{0x35aa, 0x3919},\n\t{0x35ff, 0x396f},\n\t{0x365f, 0x39d1},\n\t{0x366d, 0x39e0},\n\t{0x3700, 0x3a74},\n\t{0x37da, 0x3b4f},\n\t{0x38f9, 0x3c6f},\n\t{0x396a, 0x3ce1},\n\t{0x3cdf, 0x4057},\n\t{0x3de7, 0x4160},\n\t{0x3fbe, 0x4338},\n\t{0x4032, 0x43ad},\n\t{0x4036, 0x43b2},\n\t{0x4061, 0x43de},\n\t{0x4159, 0x44d7},\n\t{0x42ce, 0x464d},\n\t{0x42e2, 0x4662},\n\t{0x43a3, 0x4724},\n\t{0x43a8, 0x472a},\n\t{0x43fa, 0x477d},\n\t{0x440a, 0x478e},\n\t{0x45c3, 0x4948},\n\t{0x45f5, 0x497b},\n\t{0x45f7, 0x497e},\n\t{0x45fb, 0x4984},\n\t{0x45fc, 0x4987},\n\t{0x4610, 0x499c},\n\t{0x4613, 0x49a0},\n\t{0x4629, 0x49b8},\n\t{0x48e8, 0x4c78},\n\t{0x490f, 0x4ca4},\n\t{0x497e, 0x4d1a},\n\t{0x4a12, 0x4daf},\n\t{0x4a63, 0x9fa6},\n\t{0x82bd, 0xe76c},\n\t{0x82be, 0xe7c8},\n\t{0x82bf, 0xe7e7},\n\t{0x82cc, 0xe815},\n\t{0x82cd, 0xe819},\n\t{0x82d2, 0xe81f},\n\t{0x82d9, 0xe827},\n\t{0x82dd, 0xe82d},\n\t{0x82e1, 0xe833},\n\t{0x82e9, 0xe83c},\n\t{0x82f0, 0xe844},\n\t{0x8300, 0xe856},\n\t{0x830e, 0xe865},\n\t{0x93d5, 0xf92d},\n\t{0x9421, 0xf97a},\n\t{0x943c, 0xf996},\n\t{0x948d, 0xf9e8},\n\t{0x9496, 0xf9f2},\n\t{0x94b0, 0xfa10},\n\t{0x94b1, 0xfa12},\n\t{0x94b2, 0xfa15},\n\t{0x94b5, 0xfa19},\n\t{0x94bb, 0xfa22},\n\t{0x94bc, 0xfa25},\n\t{0x94be, 0xfa2a},\n\t{0x98c4, 0xfe32},\n\t{0x98c5, 0xfe45},\n\t{0x98c9, 0xfe53},\n\t{0x98ca, 0xfe58},\n\t{0x98cb, 0xfe67},\n\t{0x98cc, 0xfe6c},\n\t{0x9961, 0xff5f},\n\t{0x99e2, 0xffe6},\n}\n\n// decode is the decoding table from GBK code to Unicode.\n// It is defined at http://encoding.spec.whatwg.org/index-gbk.txt\nvar decode = [...]uint16{\n\t0:     0x4E02,\n\t1:     0x4E04,\n\t2:     0x4E05,\n\t3:     0x4E06,\n\t4:     0x4E0F,\n\t5:     0x4E12,\n\t6:     0x4E17,\n\t7:     0x4E1F,\n\t8:     0x4E20,\n\t9:     0x4E21,\n\t10:    0x4E23,\n\t11:    0x4E26,\n\t12:    0x4E29,\n\t13:    0x4E2E,\n\t14:    0x4E2F,\n\t15:    0x4E31,\n\t16:    0x4E33,\n\t17:    0x4E35,\n\t18:    0x4E37,\n\t19:    0x4E3C,\n\t20:    0x4E40,\n\t21:    0x4E41,\n\t22:    0x4E42,\n\t23:    0x4E44,\n\t24:    0x4E46,\n\t25:    0x4E4A,\n\t26:    0x4E51,\n\t27:    0x4E55,\n\t28:    0x4E57,\n\t29:    0x4E5A,\n\t30:    0x4E5B,\n\t31:    0x4E62,\n\t32:    0x4E63,\n\t33:    0x4E64,\n\t34:    0x4E65,\n\t35:    0x4E67,\n\t36:    0x4E68,\n\t37:    0x4E6A,\n\t38:    0x4E6B,\n\t39:    0x4E6C,\n\t40:    0x4E6D,\n\t41:    0x4E6E,\n\t42:    0x4E6F,\n\t43:    0x4E72,\n\t44:    0x4E74,\n\t45:    0x4E75,\n\t46:    0x4E76,\n\t47:    0x4E77,\n\t48:    0x4E78,\n\t49:    0x4E79,\n\t50:    0x4E7A,\n\t51:    0x4E7B,\n\t52:    0x4E7C,\n\t53:    0x4E7D,\n\t54:    0x4E7F,\n\t55:    0x4E80,\n\t56:    0x4E81,\n\t57:    0x4E82,\n\t58:    0x4E83,\n\t59:    0x4E84,\n\t60:    0x4E85,\n\t61:    0x4E87,\n\t62:    0x4E8A,\n\t63:    0x4E90,\n\t64:    0x4E96,\n\t65:    0x4E97,\n\t66:    0x4E99,\n\t67:    0x4E9C,\n\t68:    0x4E9D,\n\t69:    0x4E9E,\n\t70:    0x4EA3,\n\t71:    0x4EAA,\n\t72:    0x4EAF,\n\t73:    0x4EB0,\n\t74:    0x4EB1,\n\t75:    0x4EB4,\n\t76:    0x4EB6,\n\t77:    0x4EB7,\n\t78:    0x4EB8,\n\t79:    0x4EB9,\n\t80:    0x4EBC,\n\t81:    0x4EBD,\n\t82:    0x4EBE,\n\t83:    0x4EC8,\n\t84:    0x4ECC,\n\t85:    0x4ECF,\n\t86:    0x4ED0,\n\t87:    0x4ED2,\n\t88:    0x4EDA,\n\t89:    0x4EDB,\n\t90:    0x4EDC,\n\t91:    0x4EE0,\n\t92:    0x4EE2,\n\t93:    0x4EE6,\n\t94:    0x4EE7,\n\t95:    0x4EE9,\n\t96:    0x4EED,\n\t97:    0x4EEE,\n\t98:    0x4EEF,\n\t99:    0x4EF1,\n\t100:   0x4EF4,\n\t101:   0x4EF8,\n\t102:   0x4EF9,\n\t103:   0x4EFA,\n\t104:   0x4EFC,\n\t105:   0x4EFE,\n\t106:   0x4F00,\n\t107:   0x4F02,\n\t108:   0x4F03,\n\t109:   0x4F04,\n\t110:   0x4F05,\n\t111:   0x4F06,\n\t112:   0x4F07,\n\t113:   0x4F08,\n\t114:   0x4F0B,\n\t115:   0x4F0C,\n\t116:   0x4F12,\n\t117:   0x4F13,\n\t118:   0x4F14,\n\t119:   0x4F15,\n\t120:   0x4F16,\n\t121:   0x4F1C,\n\t122:   0x4F1D,\n\t123:   0x4F21,\n\t124:   0x4F23,\n\t125:   0x4F28,\n\t126:   0x4F29,\n\t127:   0x4F2C,\n\t128:   0x4F2D,\n\t129:   0x4F2E,\n\t130:   0x4F31,\n\t131:   0x4F33,\n\t132:   0x4F35,\n\t133:   0x4F37,\n\t134:   0x4F39,\n\t135:   0x4F3B,\n\t136:   0x4F3E,\n\t137:   0x4F3F,\n\t138:   0x4F40,\n\t139:   0x4F41,\n\t140:   0x4F42,\n\t141:   0x4F44,\n\t142:   0x4F45,\n\t143:   0x4F47,\n\t144:   0x4F48,\n\t145:   0x4F49,\n\t146:   0x4F4A,\n\t147:   0x4F4B,\n\t148:   0x4F4C,\n\t149:   0x4F52,\n\t150:   0x4F54,\n\t151:   0x4F56,\n\t152:   0x4F61,\n\t153:   0x4F62,\n\t154:   0x4F66,\n\t155:   0x4F68,\n\t156:   0x4F6A,\n\t157:   0x4F6B,\n\t158:   0x4F6D,\n\t159:   0x4F6E,\n\t160:   0x4F71,\n\t161:   0x4F72,\n\t162:   0x4F75,\n\t163:   0x4F77,\n\t164:   0x4F78,\n\t165:   0x4F79,\n\t166:   0x4F7A,\n\t167:   0x4F7D,\n\t168:   0x4F80,\n\t169:   0x4F81,\n\t170:   0x4F82,\n\t171:   0x4F85,\n\t172:   0x4F86,\n\t173:   0x4F87,\n\t174:   0x4F8A,\n\t175:   0x4F8C,\n\t176:   0x4F8E,\n\t177:   0x4F90,\n\t178:   0x4F92,\n\t179:   0x4F93,\n\t180:   0x4F95,\n\t181:   0x4F96,\n\t182:   0x4F98,\n\t183:   0x4F99,\n\t184:   0x4F9A,\n\t185:   0x4F9C,\n\t186:   0x4F9E,\n\t187:   0x4F9F,\n\t188:   0x4FA1,\n\t189:   0x4FA2,\n\t190:   0x4FA4,\n\t191:   0x4FAB,\n\t192:   0x4FAD,\n\t193:   0x4FB0,\n\t194:   0x4FB1,\n\t195:   0x4FB2,\n\t196:   0x4FB3,\n\t197:   0x4FB4,\n\t198:   0x4FB6,\n\t199:   0x4FB7,\n\t200:   0x4FB8,\n\t201:   0x4FB9,\n\t202:   0x4FBA,\n\t203:   0x4FBB,\n\t204:   0x4FBC,\n\t205:   0x4FBD,\n\t206:   0x4FBE,\n\t207:   0x4FC0,\n\t208:   0x4FC1,\n\t209:   0x4FC2,\n\t210:   0x4FC6,\n\t211:   0x4FC7,\n\t212:   0x4FC8,\n\t213:   0x4FC9,\n\t214:   0x4FCB,\n\t215:   0x4FCC,\n\t216:   0x4FCD,\n\t217:   0x4FD2,\n\t218:   0x4FD3,\n\t219:   0x4FD4,\n\t220:   0x4FD5,\n\t221:   0x4FD6,\n\t222:   0x4FD9,\n\t223:   0x4FDB,\n\t224:   0x4FE0,\n\t225:   0x4FE2,\n\t226:   0x4FE4,\n\t227:   0x4FE5,\n\t228:   0x4FE7,\n\t229:   0x4FEB,\n\t230:   0x4FEC,\n\t231:   0x4FF0,\n\t232:   0x4FF2,\n\t233:   0x4FF4,\n\t234:   0x4FF5,\n\t235:   0x4FF6,\n\t236:   0x4FF7,\n\t237:   0x4FF9,\n\t238:   0x4FFB,\n\t239:   0x4FFC,\n\t240:   0x4FFD,\n\t241:   0x4FFF,\n\t242:   0x5000,\n\t243:   0x5001,\n\t244:   0x5002,\n\t245:   0x5003,\n\t246:   0x5004,\n\t247:   0x5005,\n\t248:   0x5006,\n\t249:   0x5007,\n\t250:   0x5008,\n\t251:   0x5009,\n\t252:   0x500A,\n\t253:   0x500B,\n\t254:   0x500E,\n\t255:   0x5010,\n\t256:   0x5011,\n\t257:   0x5013,\n\t258:   0x5015,\n\t259:   0x5016,\n\t260:   0x5017,\n\t261:   0x501B,\n\t262:   0x501D,\n\t263:   0x501E,\n\t264:   0x5020,\n\t265:   0x5022,\n\t266:   0x5023,\n\t267:   0x5024,\n\t268:   0x5027,\n\t269:   0x502B,\n\t270:   0x502F,\n\t271:   0x5030,\n\t272:   0x5031,\n\t273:   0x5032,\n\t274:   0x5033,\n\t275:   0x5034,\n\t276:   0x5035,\n\t277:   0x5036,\n\t278:   0x5037,\n\t279:   0x5038,\n\t280:   0x5039,\n\t281:   0x503B,\n\t282:   0x503D,\n\t283:   0x503F,\n\t284:   0x5040,\n\t285:   0x5041,\n\t286:   0x5042,\n\t287:   0x5044,\n\t288:   0x5045,\n\t289:   0x5046,\n\t290:   0x5049,\n\t291:   0x504A,\n\t292:   0x504B,\n\t293:   0x504D,\n\t294:   0x5050,\n\t295:   0x5051,\n\t296:   0x5052,\n\t297:   0x5053,\n\t298:   0x5054,\n\t299:   0x5056,\n\t300:   0x5057,\n\t301:   0x5058,\n\t302:   0x5059,\n\t303:   0x505B,\n\t304:   0x505D,\n\t305:   0x505E,\n\t306:   0x505F,\n\t307:   0x5060,\n\t308:   0x5061,\n\t309:   0x5062,\n\t310:   0x5063,\n\t311:   0x5064,\n\t312:   0x5066,\n\t313:   0x5067,\n\t314:   0x5068,\n\t315:   0x5069,\n\t316:   0x506A,\n\t317:   0x506B,\n\t318:   0x506D,\n\t319:   0x506E,\n\t320:   0x506F,\n\t321:   0x5070,\n\t322:   0x5071,\n\t323:   0x5072,\n\t324:   0x5073,\n\t325:   0x5074,\n\t326:   0x5075,\n\t327:   0x5078,\n\t328:   0x5079,\n\t329:   0x507A,\n\t330:   0x507C,\n\t331:   0x507D,\n\t332:   0x5081,\n\t333:   0x5082,\n\t334:   0x5083,\n\t335:   0x5084,\n\t336:   0x5086,\n\t337:   0x5087,\n\t338:   0x5089,\n\t339:   0x508A,\n\t340:   0x508B,\n\t341:   0x508C,\n\t342:   0x508E,\n\t343:   0x508F,\n\t344:   0x5090,\n\t345:   0x5091,\n\t346:   0x5092,\n\t347:   0x5093,\n\t348:   0x5094,\n\t349:   0x5095,\n\t350:   0x5096,\n\t351:   0x5097,\n\t352:   0x5098,\n\t353:   0x5099,\n\t354:   0x509A,\n\t355:   0x509B,\n\t356:   0x509C,\n\t357:   0x509D,\n\t358:   0x509E,\n\t359:   0x509F,\n\t360:   0x50A0,\n\t361:   0x50A1,\n\t362:   0x50A2,\n\t363:   0x50A4,\n\t364:   0x50A6,\n\t365:   0x50AA,\n\t366:   0x50AB,\n\t367:   0x50AD,\n\t368:   0x50AE,\n\t369:   0x50AF,\n\t370:   0x50B0,\n\t371:   0x50B1,\n\t372:   0x50B3,\n\t373:   0x50B4,\n\t374:   0x50B5,\n\t375:   0x50B6,\n\t376:   0x50B7,\n\t377:   0x50B8,\n\t378:   0x50B9,\n\t379:   0x50BC,\n\t380:   0x50BD,\n\t381:   0x50BE,\n\t382:   0x50BF,\n\t383:   0x50C0,\n\t384:   0x50C1,\n\t385:   0x50C2,\n\t386:   0x50C3,\n\t387:   0x50C4,\n\t388:   0x50C5,\n\t389:   0x50C6,\n\t390:   0x50C7,\n\t391:   0x50C8,\n\t392:   0x50C9,\n\t393:   0x50CA,\n\t394:   0x50CB,\n\t395:   0x50CC,\n\t396:   0x50CD,\n\t397:   0x50CE,\n\t398:   0x50D0,\n\t399:   0x50D1,\n\t400:   0x50D2,\n\t401:   0x50D3,\n\t402:   0x50D4,\n\t403:   0x50D5,\n\t404:   0x50D7,\n\t405:   0x50D8,\n\t406:   0x50D9,\n\t407:   0x50DB,\n\t408:   0x50DC,\n\t409:   0x50DD,\n\t410:   0x50DE,\n\t411:   0x50DF,\n\t412:   0x50E0,\n\t413:   0x50E1,\n\t414:   0x50E2,\n\t415:   0x50E3,\n\t416:   0x50E4,\n\t417:   0x50E5,\n\t418:   0x50E8,\n\t419:   0x50E9,\n\t420:   0x50EA,\n\t421:   0x50EB,\n\t422:   0x50EF,\n\t423:   0x50F0,\n\t424:   0x50F1,\n\t425:   0x50F2,\n\t426:   0x50F4,\n\t427:   0x50F6,\n\t428:   0x50F7,\n\t429:   0x50F8,\n\t430:   0x50F9,\n\t431:   0x50FA,\n\t432:   0x50FC,\n\t433:   0x50FD,\n\t434:   0x50FE,\n\t435:   0x50FF,\n\t436:   0x5100,\n\t437:   0x5101,\n\t438:   0x5102,\n\t439:   0x5103,\n\t440:   0x5104,\n\t441:   0x5105,\n\t442:   0x5108,\n\t443:   0x5109,\n\t444:   0x510A,\n\t445:   0x510C,\n\t446:   0x510D,\n\t447:   0x510E,\n\t448:   0x510F,\n\t449:   0x5110,\n\t450:   0x5111,\n\t451:   0x5113,\n\t452:   0x5114,\n\t453:   0x5115,\n\t454:   0x5116,\n\t455:   0x5117,\n\t456:   0x5118,\n\t457:   0x5119,\n\t458:   0x511A,\n\t459:   0x511B,\n\t460:   0x511C,\n\t461:   0x511D,\n\t462:   0x511E,\n\t463:   0x511F,\n\t464:   0x5120,\n\t465:   0x5122,\n\t466:   0x5123,\n\t467:   0x5124,\n\t468:   0x5125,\n\t469:   0x5126,\n\t470:   0x5127,\n\t471:   0x5128,\n\t472:   0x5129,\n\t473:   0x512A,\n\t474:   0x512B,\n\t475:   0x512C,\n\t476:   0x512D,\n\t477:   0x512E,\n\t478:   0x512F,\n\t479:   0x5130,\n\t480:   0x5131,\n\t481:   0x5132,\n\t482:   0x5133,\n\t483:   0x5134,\n\t484:   0x5135,\n\t485:   0x5136,\n\t486:   0x5137,\n\t487:   0x5138,\n\t488:   0x5139,\n\t489:   0x513A,\n\t490:   0x513B,\n\t491:   0x513C,\n\t492:   0x513D,\n\t493:   0x513E,\n\t494:   0x5142,\n\t495:   0x5147,\n\t496:   0x514A,\n\t497:   0x514C,\n\t498:   0x514E,\n\t499:   0x514F,\n\t500:   0x5150,\n\t501:   0x5152,\n\t502:   0x5153,\n\t503:   0x5157,\n\t504:   0x5158,\n\t505:   0x5159,\n\t506:   0x515B,\n\t507:   0x515D,\n\t508:   0x515E,\n\t509:   0x515F,\n\t510:   0x5160,\n\t511:   0x5161,\n\t512:   0x5163,\n\t513:   0x5164,\n\t514:   0x5166,\n\t515:   0x5167,\n\t516:   0x5169,\n\t517:   0x516A,\n\t518:   0x516F,\n\t519:   0x5172,\n\t520:   0x517A,\n\t521:   0x517E,\n\t522:   0x517F,\n\t523:   0x5183,\n\t524:   0x5184,\n\t525:   0x5186,\n\t526:   0x5187,\n\t527:   0x518A,\n\t528:   0x518B,\n\t529:   0x518E,\n\t530:   0x518F,\n\t531:   0x5190,\n\t532:   0x5191,\n\t533:   0x5193,\n\t534:   0x5194,\n\t535:   0x5198,\n\t536:   0x519A,\n\t537:   0x519D,\n\t538:   0x519E,\n\t539:   0x519F,\n\t540:   0x51A1,\n\t541:   0x51A3,\n\t542:   0x51A6,\n\t543:   0x51A7,\n\t544:   0x51A8,\n\t545:   0x51A9,\n\t546:   0x51AA,\n\t547:   0x51AD,\n\t548:   0x51AE,\n\t549:   0x51B4,\n\t550:   0x51B8,\n\t551:   0x51B9,\n\t552:   0x51BA,\n\t553:   0x51BE,\n\t554:   0x51BF,\n\t555:   0x51C1,\n\t556:   0x51C2,\n\t557:   0x51C3,\n\t558:   0x51C5,\n\t559:   0x51C8,\n\t560:   0x51CA,\n\t561:   0x51CD,\n\t562:   0x51CE,\n\t563:   0x51D0,\n\t564:   0x51D2,\n\t565:   0x51D3,\n\t566:   0x51D4,\n\t567:   0x51D5,\n\t568:   0x51D6,\n\t569:   0x51D7,\n\t570:   0x51D8,\n\t571:   0x51D9,\n\t572:   0x51DA,\n\t573:   0x51DC,\n\t574:   0x51DE,\n\t575:   0x51DF,\n\t576:   0x51E2,\n\t577:   0x51E3,\n\t578:   0x51E5,\n\t579:   0x51E6,\n\t580:   0x51E7,\n\t581:   0x51E8,\n\t582:   0x51E9,\n\t583:   0x51EA,\n\t584:   0x51EC,\n\t585:   0x51EE,\n\t586:   0x51F1,\n\t587:   0x51F2,\n\t588:   0x51F4,\n\t589:   0x51F7,\n\t590:   0x51FE,\n\t591:   0x5204,\n\t592:   0x5205,\n\t593:   0x5209,\n\t594:   0x520B,\n\t595:   0x520C,\n\t596:   0x520F,\n\t597:   0x5210,\n\t598:   0x5213,\n\t599:   0x5214,\n\t600:   0x5215,\n\t601:   0x521C,\n\t602:   0x521E,\n\t603:   0x521F,\n\t604:   0x5221,\n\t605:   0x5222,\n\t606:   0x5223,\n\t607:   0x5225,\n\t608:   0x5226,\n\t609:   0x5227,\n\t610:   0x522A,\n\t611:   0x522C,\n\t612:   0x522F,\n\t613:   0x5231,\n\t614:   0x5232,\n\t615:   0x5234,\n\t616:   0x5235,\n\t617:   0x523C,\n\t618:   0x523E,\n\t619:   0x5244,\n\t620:   0x5245,\n\t621:   0x5246,\n\t622:   0x5247,\n\t623:   0x5248,\n\t624:   0x5249,\n\t625:   0x524B,\n\t626:   0x524E,\n\t627:   0x524F,\n\t628:   0x5252,\n\t629:   0x5253,\n\t630:   0x5255,\n\t631:   0x5257,\n\t632:   0x5258,\n\t633:   0x5259,\n\t634:   0x525A,\n\t635:   0x525B,\n\t636:   0x525D,\n\t637:   0x525F,\n\t638:   0x5260,\n\t639:   0x5262,\n\t640:   0x5263,\n\t641:   0x5264,\n\t642:   0x5266,\n\t643:   0x5268,\n\t644:   0x526B,\n\t645:   0x526C,\n\t646:   0x526D,\n\t647:   0x526E,\n\t648:   0x5270,\n\t649:   0x5271,\n\t650:   0x5273,\n\t651:   0x5274,\n\t652:   0x5275,\n\t653:   0x5276,\n\t654:   0x5277,\n\t655:   0x5278,\n\t656:   0x5279,\n\t657:   0x527A,\n\t658:   0x527B,\n\t659:   0x527C,\n\t660:   0x527E,\n\t661:   0x5280,\n\t662:   0x5283,\n\t663:   0x5284,\n\t664:   0x5285,\n\t665:   0x5286,\n\t666:   0x5287,\n\t667:   0x5289,\n\t668:   0x528A,\n\t669:   0x528B,\n\t670:   0x528C,\n\t671:   0x528D,\n\t672:   0x528E,\n\t673:   0x528F,\n\t674:   0x5291,\n\t675:   0x5292,\n\t676:   0x5294,\n\t677:   0x5295,\n\t678:   0x5296,\n\t679:   0x5297,\n\t680:   0x5298,\n\t681:   0x5299,\n\t682:   0x529A,\n\t683:   0x529C,\n\t684:   0x52A4,\n\t685:   0x52A5,\n\t686:   0x52A6,\n\t687:   0x52A7,\n\t688:   0x52AE,\n\t689:   0x52AF,\n\t690:   0x52B0,\n\t691:   0x52B4,\n\t692:   0x52B5,\n\t693:   0x52B6,\n\t694:   0x52B7,\n\t695:   0x52B8,\n\t696:   0x52B9,\n\t697:   0x52BA,\n\t698:   0x52BB,\n\t699:   0x52BC,\n\t700:   0x52BD,\n\t701:   0x52C0,\n\t702:   0x52C1,\n\t703:   0x52C2,\n\t704:   0x52C4,\n\t705:   0x52C5,\n\t706:   0x52C6,\n\t707:   0x52C8,\n\t708:   0x52CA,\n\t709:   0x52CC,\n\t710:   0x52CD,\n\t711:   0x52CE,\n\t712:   0x52CF,\n\t713:   0x52D1,\n\t714:   0x52D3,\n\t715:   0x52D4,\n\t716:   0x52D5,\n\t717:   0x52D7,\n\t718:   0x52D9,\n\t719:   0x52DA,\n\t720:   0x52DB,\n\t721:   0x52DC,\n\t722:   0x52DD,\n\t723:   0x52DE,\n\t724:   0x52E0,\n\t725:   0x52E1,\n\t726:   0x52E2,\n\t727:   0x52E3,\n\t728:   0x52E5,\n\t729:   0x52E6,\n\t730:   0x52E7,\n\t731:   0x52E8,\n\t732:   0x52E9,\n\t733:   0x52EA,\n\t734:   0x52EB,\n\t735:   0x52EC,\n\t736:   0x52ED,\n\t737:   0x52EE,\n\t738:   0x52EF,\n\t739:   0x52F1,\n\t740:   0x52F2,\n\t741:   0x52F3,\n\t742:   0x52F4,\n\t743:   0x52F5,\n\t744:   0x52F6,\n\t745:   0x52F7,\n\t746:   0x52F8,\n\t747:   0x52FB,\n\t748:   0x52FC,\n\t749:   0x52FD,\n\t750:   0x5301,\n\t751:   0x5302,\n\t752:   0x5303,\n\t753:   0x5304,\n\t754:   0x5307,\n\t755:   0x5309,\n\t756:   0x530A,\n\t757:   0x530B,\n\t758:   0x530C,\n\t759:   0x530E,\n\t760:   0x5311,\n\t761:   0x5312,\n\t762:   0x5313,\n\t763:   0x5314,\n\t764:   0x5318,\n\t765:   0x531B,\n\t766:   0x531C,\n\t767:   0x531E,\n\t768:   0x531F,\n\t769:   0x5322,\n\t770:   0x5324,\n\t771:   0x5325,\n\t772:   0x5327,\n\t773:   0x5328,\n\t774:   0x5329,\n\t775:   0x532B,\n\t776:   0x532C,\n\t777:   0x532D,\n\t778:   0x532F,\n\t779:   0x5330,\n\t780:   0x5331,\n\t781:   0x5332,\n\t782:   0x5333,\n\t783:   0x5334,\n\t784:   0x5335,\n\t785:   0x5336,\n\t786:   0x5337,\n\t787:   0x5338,\n\t788:   0x533C,\n\t789:   0x533D,\n\t790:   0x5340,\n\t791:   0x5342,\n\t792:   0x5344,\n\t793:   0x5346,\n\t794:   0x534B,\n\t795:   0x534C,\n\t796:   0x534D,\n\t797:   0x5350,\n\t798:   0x5354,\n\t799:   0x5358,\n\t800:   0x5359,\n\t801:   0x535B,\n\t802:   0x535D,\n\t803:   0x5365,\n\t804:   0x5368,\n\t805:   0x536A,\n\t806:   0x536C,\n\t807:   0x536D,\n\t808:   0x5372,\n\t809:   0x5376,\n\t810:   0x5379,\n\t811:   0x537B,\n\t812:   0x537C,\n\t813:   0x537D,\n\t814:   0x537E,\n\t815:   0x5380,\n\t816:   0x5381,\n\t817:   0x5383,\n\t818:   0x5387,\n\t819:   0x5388,\n\t820:   0x538A,\n\t821:   0x538E,\n\t822:   0x538F,\n\t823:   0x5390,\n\t824:   0x5391,\n\t825:   0x5392,\n\t826:   0x5393,\n\t827:   0x5394,\n\t828:   0x5396,\n\t829:   0x5397,\n\t830:   0x5399,\n\t831:   0x539B,\n\t832:   0x539C,\n\t833:   0x539E,\n\t834:   0x53A0,\n\t835:   0x53A1,\n\t836:   0x53A4,\n\t837:   0x53A7,\n\t838:   0x53AA,\n\t839:   0x53AB,\n\t840:   0x53AC,\n\t841:   0x53AD,\n\t842:   0x53AF,\n\t843:   0x53B0,\n\t844:   0x53B1,\n\t845:   0x53B2,\n\t846:   0x53B3,\n\t847:   0x53B4,\n\t848:   0x53B5,\n\t849:   0x53B7,\n\t850:   0x53B8,\n\t851:   0x53B9,\n\t852:   0x53BA,\n\t853:   0x53BC,\n\t854:   0x53BD,\n\t855:   0x53BE,\n\t856:   0x53C0,\n\t857:   0x53C3,\n\t858:   0x53C4,\n\t859:   0x53C5,\n\t860:   0x53C6,\n\t861:   0x53C7,\n\t862:   0x53CE,\n\t863:   0x53CF,\n\t864:   0x53D0,\n\t865:   0x53D2,\n\t866:   0x53D3,\n\t867:   0x53D5,\n\t868:   0x53DA,\n\t869:   0x53DC,\n\t870:   0x53DD,\n\t871:   0x53DE,\n\t872:   0x53E1,\n\t873:   0x53E2,\n\t874:   0x53E7,\n\t875:   0x53F4,\n\t876:   0x53FA,\n\t877:   0x53FE,\n\t878:   0x53FF,\n\t879:   0x5400,\n\t880:   0x5402,\n\t881:   0x5405,\n\t882:   0x5407,\n\t883:   0x540B,\n\t884:   0x5414,\n\t885:   0x5418,\n\t886:   0x5419,\n\t887:   0x541A,\n\t888:   0x541C,\n\t889:   0x5422,\n\t890:   0x5424,\n\t891:   0x5425,\n\t892:   0x542A,\n\t893:   0x5430,\n\t894:   0x5433,\n\t895:   0x5436,\n\t896:   0x5437,\n\t897:   0x543A,\n\t898:   0x543D,\n\t899:   0x543F,\n\t900:   0x5441,\n\t901:   0x5442,\n\t902:   0x5444,\n\t903:   0x5445,\n\t904:   0x5447,\n\t905:   0x5449,\n\t906:   0x544C,\n\t907:   0x544D,\n\t908:   0x544E,\n\t909:   0x544F,\n\t910:   0x5451,\n\t911:   0x545A,\n\t912:   0x545D,\n\t913:   0x545E,\n\t914:   0x545F,\n\t915:   0x5460,\n\t916:   0x5461,\n\t917:   0x5463,\n\t918:   0x5465,\n\t919:   0x5467,\n\t920:   0x5469,\n\t921:   0x546A,\n\t922:   0x546B,\n\t923:   0x546C,\n\t924:   0x546D,\n\t925:   0x546E,\n\t926:   0x546F,\n\t927:   0x5470,\n\t928:   0x5474,\n\t929:   0x5479,\n\t930:   0x547A,\n\t931:   0x547E,\n\t932:   0x547F,\n\t933:   0x5481,\n\t934:   0x5483,\n\t935:   0x5485,\n\t936:   0x5487,\n\t937:   0x5488,\n\t938:   0x5489,\n\t939:   0x548A,\n\t940:   0x548D,\n\t941:   0x5491,\n\t942:   0x5493,\n\t943:   0x5497,\n\t944:   0x5498,\n\t945:   0x549C,\n\t946:   0x549E,\n\t947:   0x549F,\n\t948:   0x54A0,\n\t949:   0x54A1,\n\t950:   0x54A2,\n\t951:   0x54A5,\n\t952:   0x54AE,\n\t953:   0x54B0,\n\t954:   0x54B2,\n\t955:   0x54B5,\n\t956:   0x54B6,\n\t957:   0x54B7,\n\t958:   0x54B9,\n\t959:   0x54BA,\n\t960:   0x54BC,\n\t961:   0x54BE,\n\t962:   0x54C3,\n\t963:   0x54C5,\n\t964:   0x54CA,\n\t965:   0x54CB,\n\t966:   0x54D6,\n\t967:   0x54D8,\n\t968:   0x54DB,\n\t969:   0x54E0,\n\t970:   0x54E1,\n\t971:   0x54E2,\n\t972:   0x54E3,\n\t973:   0x54E4,\n\t974:   0x54EB,\n\t975:   0x54EC,\n\t976:   0x54EF,\n\t977:   0x54F0,\n\t978:   0x54F1,\n\t979:   0x54F4,\n\t980:   0x54F5,\n\t981:   0x54F6,\n\t982:   0x54F7,\n\t983:   0x54F8,\n\t984:   0x54F9,\n\t985:   0x54FB,\n\t986:   0x54FE,\n\t987:   0x5500,\n\t988:   0x5502,\n\t989:   0x5503,\n\t990:   0x5504,\n\t991:   0x5505,\n\t992:   0x5508,\n\t993:   0x550A,\n\t994:   0x550B,\n\t995:   0x550C,\n\t996:   0x550D,\n\t997:   0x550E,\n\t998:   0x5512,\n\t999:   0x5513,\n\t1000:  0x5515,\n\t1001:  0x5516,\n\t1002:  0x5517,\n\t1003:  0x5518,\n\t1004:  0x5519,\n\t1005:  0x551A,\n\t1006:  0x551C,\n\t1007:  0x551D,\n\t1008:  0x551E,\n\t1009:  0x551F,\n\t1010:  0x5521,\n\t1011:  0x5525,\n\t1012:  0x5526,\n\t1013:  0x5528,\n\t1014:  0x5529,\n\t1015:  0x552B,\n\t1016:  0x552D,\n\t1017:  0x5532,\n\t1018:  0x5534,\n\t1019:  0x5535,\n\t1020:  0x5536,\n\t1021:  0x5538,\n\t1022:  0x5539,\n\t1023:  0x553A,\n\t1024:  0x553B,\n\t1025:  0x553D,\n\t1026:  0x5540,\n\t1027:  0x5542,\n\t1028:  0x5545,\n\t1029:  0x5547,\n\t1030:  0x5548,\n\t1031:  0x554B,\n\t1032:  0x554C,\n\t1033:  0x554D,\n\t1034:  0x554E,\n\t1035:  0x554F,\n\t1036:  0x5551,\n\t1037:  0x5552,\n\t1038:  0x5553,\n\t1039:  0x5554,\n\t1040:  0x5557,\n\t1041:  0x5558,\n\t1042:  0x5559,\n\t1043:  0x555A,\n\t1044:  0x555B,\n\t1045:  0x555D,\n\t1046:  0x555E,\n\t1047:  0x555F,\n\t1048:  0x5560,\n\t1049:  0x5562,\n\t1050:  0x5563,\n\t1051:  0x5568,\n\t1052:  0x5569,\n\t1053:  0x556B,\n\t1054:  0x556F,\n\t1055:  0x5570,\n\t1056:  0x5571,\n\t1057:  0x5572,\n\t1058:  0x5573,\n\t1059:  0x5574,\n\t1060:  0x5579,\n\t1061:  0x557A,\n\t1062:  0x557D,\n\t1063:  0x557F,\n\t1064:  0x5585,\n\t1065:  0x5586,\n\t1066:  0x558C,\n\t1067:  0x558D,\n\t1068:  0x558E,\n\t1069:  0x5590,\n\t1070:  0x5592,\n\t1071:  0x5593,\n\t1072:  0x5595,\n\t1073:  0x5596,\n\t1074:  0x5597,\n\t1075:  0x559A,\n\t1076:  0x559B,\n\t1077:  0x559E,\n\t1078:  0x55A0,\n\t1079:  0x55A1,\n\t1080:  0x55A2,\n\t1081:  0x55A3,\n\t1082:  0x55A4,\n\t1083:  0x55A5,\n\t1084:  0x55A6,\n\t1085:  0x55A8,\n\t1086:  0x55A9,\n\t1087:  0x55AA,\n\t1088:  0x55AB,\n\t1089:  0x55AC,\n\t1090:  0x55AD,\n\t1091:  0x55AE,\n\t1092:  0x55AF,\n\t1093:  0x55B0,\n\t1094:  0x55B2,\n\t1095:  0x55B4,\n\t1096:  0x55B6,\n\t1097:  0x55B8,\n\t1098:  0x55BA,\n\t1099:  0x55BC,\n\t1100:  0x55BF,\n\t1101:  0x55C0,\n\t1102:  0x55C1,\n\t1103:  0x55C2,\n\t1104:  0x55C3,\n\t1105:  0x55C6,\n\t1106:  0x55C7,\n\t1107:  0x55C8,\n\t1108:  0x55CA,\n\t1109:  0x55CB,\n\t1110:  0x55CE,\n\t1111:  0x55CF,\n\t1112:  0x55D0,\n\t1113:  0x55D5,\n\t1114:  0x55D7,\n\t1115:  0x55D8,\n\t1116:  0x55D9,\n\t1117:  0x55DA,\n\t1118:  0x55DB,\n\t1119:  0x55DE,\n\t1120:  0x55E0,\n\t1121:  0x55E2,\n\t1122:  0x55E7,\n\t1123:  0x55E9,\n\t1124:  0x55ED,\n\t1125:  0x55EE,\n\t1126:  0x55F0,\n\t1127:  0x55F1,\n\t1128:  0x55F4,\n\t1129:  0x55F6,\n\t1130:  0x55F8,\n\t1131:  0x55F9,\n\t1132:  0x55FA,\n\t1133:  0x55FB,\n\t1134:  0x55FC,\n\t1135:  0x55FF,\n\t1136:  0x5602,\n\t1137:  0x5603,\n\t1138:  0x5604,\n\t1139:  0x5605,\n\t1140:  0x5606,\n\t1141:  0x5607,\n\t1142:  0x560A,\n\t1143:  0x560B,\n\t1144:  0x560D,\n\t1145:  0x5610,\n\t1146:  0x5611,\n\t1147:  0x5612,\n\t1148:  0x5613,\n\t1149:  0x5614,\n\t1150:  0x5615,\n\t1151:  0x5616,\n\t1152:  0x5617,\n\t1153:  0x5619,\n\t1154:  0x561A,\n\t1155:  0x561C,\n\t1156:  0x561D,\n\t1157:  0x5620,\n\t1158:  0x5621,\n\t1159:  0x5622,\n\t1160:  0x5625,\n\t1161:  0x5626,\n\t1162:  0x5628,\n\t1163:  0x5629,\n\t1164:  0x562A,\n\t1165:  0x562B,\n\t1166:  0x562E,\n\t1167:  0x562F,\n\t1168:  0x5630,\n\t1169:  0x5633,\n\t1170:  0x5635,\n\t1171:  0x5637,\n\t1172:  0x5638,\n\t1173:  0x563A,\n\t1174:  0x563C,\n\t1175:  0x563D,\n\t1176:  0x563E,\n\t1177:  0x5640,\n\t1178:  0x5641,\n\t1179:  0x5642,\n\t1180:  0x5643,\n\t1181:  0x5644,\n\t1182:  0x5645,\n\t1183:  0x5646,\n\t1184:  0x5647,\n\t1185:  0x5648,\n\t1186:  0x5649,\n\t1187:  0x564A,\n\t1188:  0x564B,\n\t1189:  0x564F,\n\t1190:  0x5650,\n\t1191:  0x5651,\n\t1192:  0x5652,\n\t1193:  0x5653,\n\t1194:  0x5655,\n\t1195:  0x5656,\n\t1196:  0x565A,\n\t1197:  0x565B,\n\t1198:  0x565D,\n\t1199:  0x565E,\n\t1200:  0x565F,\n\t1201:  0x5660,\n\t1202:  0x5661,\n\t1203:  0x5663,\n\t1204:  0x5665,\n\t1205:  0x5666,\n\t1206:  0x5667,\n\t1207:  0x566D,\n\t1208:  0x566E,\n\t1209:  0x566F,\n\t1210:  0x5670,\n\t1211:  0x5672,\n\t1212:  0x5673,\n\t1213:  0x5674,\n\t1214:  0x5675,\n\t1215:  0x5677,\n\t1216:  0x5678,\n\t1217:  0x5679,\n\t1218:  0x567A,\n\t1219:  0x567D,\n\t1220:  0x567E,\n\t1221:  0x567F,\n\t1222:  0x5680,\n\t1223:  0x5681,\n\t1224:  0x5682,\n\t1225:  0x5683,\n\t1226:  0x5684,\n\t1227:  0x5687,\n\t1228:  0x5688,\n\t1229:  0x5689,\n\t1230:  0x568A,\n\t1231:  0x568B,\n\t1232:  0x568C,\n\t1233:  0x568D,\n\t1234:  0x5690,\n\t1235:  0x5691,\n\t1236:  0x5692,\n\t1237:  0x5694,\n\t1238:  0x5695,\n\t1239:  0x5696,\n\t1240:  0x5697,\n\t1241:  0x5698,\n\t1242:  0x5699,\n\t1243:  0x569A,\n\t1244:  0x569B,\n\t1245:  0x569C,\n\t1246:  0x569D,\n\t1247:  0x569E,\n\t1248:  0x569F,\n\t1249:  0x56A0,\n\t1250:  0x56A1,\n\t1251:  0x56A2,\n\t1252:  0x56A4,\n\t1253:  0x56A5,\n\t1254:  0x56A6,\n\t1255:  0x56A7,\n\t1256:  0x56A8,\n\t1257:  0x56A9,\n\t1258:  0x56AA,\n\t1259:  0x56AB,\n\t1260:  0x56AC,\n\t1261:  0x56AD,\n\t1262:  0x56AE,\n\t1263:  0x56B0,\n\t1264:  0x56B1,\n\t1265:  0x56B2,\n\t1266:  0x56B3,\n\t1267:  0x56B4,\n\t1268:  0x56B5,\n\t1269:  0x56B6,\n\t1270:  0x56B8,\n\t1271:  0x56B9,\n\t1272:  0x56BA,\n\t1273:  0x56BB,\n\t1274:  0x56BD,\n\t1275:  0x56BE,\n\t1276:  0x56BF,\n\t1277:  0x56C0,\n\t1278:  0x56C1,\n\t1279:  0x56C2,\n\t1280:  0x56C3,\n\t1281:  0x56C4,\n\t1282:  0x56C5,\n\t1283:  0x56C6,\n\t1284:  0x56C7,\n\t1285:  0x56C8,\n\t1286:  0x56C9,\n\t1287:  0x56CB,\n\t1288:  0x56CC,\n\t1289:  0x56CD,\n\t1290:  0x56CE,\n\t1291:  0x56CF,\n\t1292:  0x56D0,\n\t1293:  0x56D1,\n\t1294:  0x56D2,\n\t1295:  0x56D3,\n\t1296:  0x56D5,\n\t1297:  0x56D6,\n\t1298:  0x56D8,\n\t1299:  0x56D9,\n\t1300:  0x56DC,\n\t1301:  0x56E3,\n\t1302:  0x56E5,\n\t1303:  0x56E6,\n\t1304:  0x56E7,\n\t1305:  0x56E8,\n\t1306:  0x56E9,\n\t1307:  0x56EA,\n\t1308:  0x56EC,\n\t1309:  0x56EE,\n\t1310:  0x56EF,\n\t1311:  0x56F2,\n\t1312:  0x56F3,\n\t1313:  0x56F6,\n\t1314:  0x56F7,\n\t1315:  0x56F8,\n\t1316:  0x56FB,\n\t1317:  0x56FC,\n\t1318:  0x5700,\n\t1319:  0x5701,\n\t1320:  0x5702,\n\t1321:  0x5705,\n\t1322:  0x5707,\n\t1323:  0x570B,\n\t1324:  0x570C,\n\t1325:  0x570D,\n\t1326:  0x570E,\n\t1327:  0x570F,\n\t1328:  0x5710,\n\t1329:  0x5711,\n\t1330:  0x5712,\n\t1331:  0x5713,\n\t1332:  0x5714,\n\t1333:  0x5715,\n\t1334:  0x5716,\n\t1335:  0x5717,\n\t1336:  0x5718,\n\t1337:  0x5719,\n\t1338:  0x571A,\n\t1339:  0x571B,\n\t1340:  0x571D,\n\t1341:  0x571E,\n\t1342:  0x5720,\n\t1343:  0x5721,\n\t1344:  0x5722,\n\t1345:  0x5724,\n\t1346:  0x5725,\n\t1347:  0x5726,\n\t1348:  0x5727,\n\t1349:  0x572B,\n\t1350:  0x5731,\n\t1351:  0x5732,\n\t1352:  0x5734,\n\t1353:  0x5735,\n\t1354:  0x5736,\n\t1355:  0x5737,\n\t1356:  0x5738,\n\t1357:  0x573C,\n\t1358:  0x573D,\n\t1359:  0x573F,\n\t1360:  0x5741,\n\t1361:  0x5743,\n\t1362:  0x5744,\n\t1363:  0x5745,\n\t1364:  0x5746,\n\t1365:  0x5748,\n\t1366:  0x5749,\n\t1367:  0x574B,\n\t1368:  0x5752,\n\t1369:  0x5753,\n\t1370:  0x5754,\n\t1371:  0x5755,\n\t1372:  0x5756,\n\t1373:  0x5758,\n\t1374:  0x5759,\n\t1375:  0x5762,\n\t1376:  0x5763,\n\t1377:  0x5765,\n\t1378:  0x5767,\n\t1379:  0x576C,\n\t1380:  0x576E,\n\t1381:  0x5770,\n\t1382:  0x5771,\n\t1383:  0x5772,\n\t1384:  0x5774,\n\t1385:  0x5775,\n\t1386:  0x5778,\n\t1387:  0x5779,\n\t1388:  0x577A,\n\t1389:  0x577D,\n\t1390:  0x577E,\n\t1391:  0x577F,\n\t1392:  0x5780,\n\t1393:  0x5781,\n\t1394:  0x5787,\n\t1395:  0x5788,\n\t1396:  0x5789,\n\t1397:  0x578A,\n\t1398:  0x578D,\n\t1399:  0x578E,\n\t1400:  0x578F,\n\t1401:  0x5790,\n\t1402:  0x5791,\n\t1403:  0x5794,\n\t1404:  0x5795,\n\t1405:  0x5796,\n\t1406:  0x5797,\n\t1407:  0x5798,\n\t1408:  0x5799,\n\t1409:  0x579A,\n\t1410:  0x579C,\n\t1411:  0x579D,\n\t1412:  0x579E,\n\t1413:  0x579F,\n\t1414:  0x57A5,\n\t1415:  0x57A8,\n\t1416:  0x57AA,\n\t1417:  0x57AC,\n\t1418:  0x57AF,\n\t1419:  0x57B0,\n\t1420:  0x57B1,\n\t1421:  0x57B3,\n\t1422:  0x57B5,\n\t1423:  0x57B6,\n\t1424:  0x57B7,\n\t1425:  0x57B9,\n\t1426:  0x57BA,\n\t1427:  0x57BB,\n\t1428:  0x57BC,\n\t1429:  0x57BD,\n\t1430:  0x57BE,\n\t1431:  0x57BF,\n\t1432:  0x57C0,\n\t1433:  0x57C1,\n\t1434:  0x57C4,\n\t1435:  0x57C5,\n\t1436:  0x57C6,\n\t1437:  0x57C7,\n\t1438:  0x57C8,\n\t1439:  0x57C9,\n\t1440:  0x57CA,\n\t1441:  0x57CC,\n\t1442:  0x57CD,\n\t1443:  0x57D0,\n\t1444:  0x57D1,\n\t1445:  0x57D3,\n\t1446:  0x57D6,\n\t1447:  0x57D7,\n\t1448:  0x57DB,\n\t1449:  0x57DC,\n\t1450:  0x57DE,\n\t1451:  0x57E1,\n\t1452:  0x57E2,\n\t1453:  0x57E3,\n\t1454:  0x57E5,\n\t1455:  0x57E6,\n\t1456:  0x57E7,\n\t1457:  0x57E8,\n\t1458:  0x57E9,\n\t1459:  0x57EA,\n\t1460:  0x57EB,\n\t1461:  0x57EC,\n\t1462:  0x57EE,\n\t1463:  0x57F0,\n\t1464:  0x57F1,\n\t1465:  0x57F2,\n\t1466:  0x57F3,\n\t1467:  0x57F5,\n\t1468:  0x57F6,\n\t1469:  0x57F7,\n\t1470:  0x57FB,\n\t1471:  0x57FC,\n\t1472:  0x57FE,\n\t1473:  0x57FF,\n\t1474:  0x5801,\n\t1475:  0x5803,\n\t1476:  0x5804,\n\t1477:  0x5805,\n\t1478:  0x5808,\n\t1479:  0x5809,\n\t1480:  0x580A,\n\t1481:  0x580C,\n\t1482:  0x580E,\n\t1483:  0x580F,\n\t1484:  0x5810,\n\t1485:  0x5812,\n\t1486:  0x5813,\n\t1487:  0x5814,\n\t1488:  0x5816,\n\t1489:  0x5817,\n\t1490:  0x5818,\n\t1491:  0x581A,\n\t1492:  0x581B,\n\t1493:  0x581C,\n\t1494:  0x581D,\n\t1495:  0x581F,\n\t1496:  0x5822,\n\t1497:  0x5823,\n\t1498:  0x5825,\n\t1499:  0x5826,\n\t1500:  0x5827,\n\t1501:  0x5828,\n\t1502:  0x5829,\n\t1503:  0x582B,\n\t1504:  0x582C,\n\t1505:  0x582D,\n\t1506:  0x582E,\n\t1507:  0x582F,\n\t1508:  0x5831,\n\t1509:  0x5832,\n\t1510:  0x5833,\n\t1511:  0x5834,\n\t1512:  0x5836,\n\t1513:  0x5837,\n\t1514:  0x5838,\n\t1515:  0x5839,\n\t1516:  0x583A,\n\t1517:  0x583B,\n\t1518:  0x583C,\n\t1519:  0x583D,\n\t1520:  0x583E,\n\t1521:  0x583F,\n\t1522:  0x5840,\n\t1523:  0x5841,\n\t1524:  0x5842,\n\t1525:  0x5843,\n\t1526:  0x5845,\n\t1527:  0x5846,\n\t1528:  0x5847,\n\t1529:  0x5848,\n\t1530:  0x5849,\n\t1531:  0x584A,\n\t1532:  0x584B,\n\t1533:  0x584E,\n\t1534:  0x584F,\n\t1535:  0x5850,\n\t1536:  0x5852,\n\t1537:  0x5853,\n\t1538:  0x5855,\n\t1539:  0x5856,\n\t1540:  0x5857,\n\t1541:  0x5859,\n\t1542:  0x585A,\n\t1543:  0x585B,\n\t1544:  0x585C,\n\t1545:  0x585D,\n\t1546:  0x585F,\n\t1547:  0x5860,\n\t1548:  0x5861,\n\t1549:  0x5862,\n\t1550:  0x5863,\n\t1551:  0x5864,\n\t1552:  0x5866,\n\t1553:  0x5867,\n\t1554:  0x5868,\n\t1555:  0x5869,\n\t1556:  0x586A,\n\t1557:  0x586D,\n\t1558:  0x586E,\n\t1559:  0x586F,\n\t1560:  0x5870,\n\t1561:  0x5871,\n\t1562:  0x5872,\n\t1563:  0x5873,\n\t1564:  0x5874,\n\t1565:  0x5875,\n\t1566:  0x5876,\n\t1567:  0x5877,\n\t1568:  0x5878,\n\t1569:  0x5879,\n\t1570:  0x587A,\n\t1571:  0x587B,\n\t1572:  0x587C,\n\t1573:  0x587D,\n\t1574:  0x587F,\n\t1575:  0x5882,\n\t1576:  0x5884,\n\t1577:  0x5886,\n\t1578:  0x5887,\n\t1579:  0x5888,\n\t1580:  0x588A,\n\t1581:  0x588B,\n\t1582:  0x588C,\n\t1583:  0x588D,\n\t1584:  0x588E,\n\t1585:  0x588F,\n\t1586:  0x5890,\n\t1587:  0x5891,\n\t1588:  0x5894,\n\t1589:  0x5895,\n\t1590:  0x5896,\n\t1591:  0x5897,\n\t1592:  0x5898,\n\t1593:  0x589B,\n\t1594:  0x589C,\n\t1595:  0x589D,\n\t1596:  0x58A0,\n\t1597:  0x58A1,\n\t1598:  0x58A2,\n\t1599:  0x58A3,\n\t1600:  0x58A4,\n\t1601:  0x58A5,\n\t1602:  0x58A6,\n\t1603:  0x58A7,\n\t1604:  0x58AA,\n\t1605:  0x58AB,\n\t1606:  0x58AC,\n\t1607:  0x58AD,\n\t1608:  0x58AE,\n\t1609:  0x58AF,\n\t1610:  0x58B0,\n\t1611:  0x58B1,\n\t1612:  0x58B2,\n\t1613:  0x58B3,\n\t1614:  0x58B4,\n\t1615:  0x58B5,\n\t1616:  0x58B6,\n\t1617:  0x58B7,\n\t1618:  0x58B8,\n\t1619:  0x58B9,\n\t1620:  0x58BA,\n\t1621:  0x58BB,\n\t1622:  0x58BD,\n\t1623:  0x58BE,\n\t1624:  0x58BF,\n\t1625:  0x58C0,\n\t1626:  0x58C2,\n\t1627:  0x58C3,\n\t1628:  0x58C4,\n\t1629:  0x58C6,\n\t1630:  0x58C7,\n\t1631:  0x58C8,\n\t1632:  0x58C9,\n\t1633:  0x58CA,\n\t1634:  0x58CB,\n\t1635:  0x58CC,\n\t1636:  0x58CD,\n\t1637:  0x58CE,\n\t1638:  0x58CF,\n\t1639:  0x58D0,\n\t1640:  0x58D2,\n\t1641:  0x58D3,\n\t1642:  0x58D4,\n\t1643:  0x58D6,\n\t1644:  0x58D7,\n\t1645:  0x58D8,\n\t1646:  0x58D9,\n\t1647:  0x58DA,\n\t1648:  0x58DB,\n\t1649:  0x58DC,\n\t1650:  0x58DD,\n\t1651:  0x58DE,\n\t1652:  0x58DF,\n\t1653:  0x58E0,\n\t1654:  0x58E1,\n\t1655:  0x58E2,\n\t1656:  0x58E3,\n\t1657:  0x58E5,\n\t1658:  0x58E6,\n\t1659:  0x58E7,\n\t1660:  0x58E8,\n\t1661:  0x58E9,\n\t1662:  0x58EA,\n\t1663:  0x58ED,\n\t1664:  0x58EF,\n\t1665:  0x58F1,\n\t1666:  0x58F2,\n\t1667:  0x58F4,\n\t1668:  0x58F5,\n\t1669:  0x58F7,\n\t1670:  0x58F8,\n\t1671:  0x58FA,\n\t1672:  0x58FB,\n\t1673:  0x58FC,\n\t1674:  0x58FD,\n\t1675:  0x58FE,\n\t1676:  0x58FF,\n\t1677:  0x5900,\n\t1678:  0x5901,\n\t1679:  0x5903,\n\t1680:  0x5905,\n\t1681:  0x5906,\n\t1682:  0x5908,\n\t1683:  0x5909,\n\t1684:  0x590A,\n\t1685:  0x590B,\n\t1686:  0x590C,\n\t1687:  0x590E,\n\t1688:  0x5910,\n\t1689:  0x5911,\n\t1690:  0x5912,\n\t1691:  0x5913,\n\t1692:  0x5917,\n\t1693:  0x5918,\n\t1694:  0x591B,\n\t1695:  0x591D,\n\t1696:  0x591E,\n\t1697:  0x5920,\n\t1698:  0x5921,\n\t1699:  0x5922,\n\t1700:  0x5923,\n\t1701:  0x5926,\n\t1702:  0x5928,\n\t1703:  0x592C,\n\t1704:  0x5930,\n\t1705:  0x5932,\n\t1706:  0x5933,\n\t1707:  0x5935,\n\t1708:  0x5936,\n\t1709:  0x593B,\n\t1710:  0x593D,\n\t1711:  0x593E,\n\t1712:  0x593F,\n\t1713:  0x5940,\n\t1714:  0x5943,\n\t1715:  0x5945,\n\t1716:  0x5946,\n\t1717:  0x594A,\n\t1718:  0x594C,\n\t1719:  0x594D,\n\t1720:  0x5950,\n\t1721:  0x5952,\n\t1722:  0x5953,\n\t1723:  0x5959,\n\t1724:  0x595B,\n\t1725:  0x595C,\n\t1726:  0x595D,\n\t1727:  0x595E,\n\t1728:  0x595F,\n\t1729:  0x5961,\n\t1730:  0x5963,\n\t1731:  0x5964,\n\t1732:  0x5966,\n\t1733:  0x5967,\n\t1734:  0x5968,\n\t1735:  0x5969,\n\t1736:  0x596A,\n\t1737:  0x596B,\n\t1738:  0x596C,\n\t1739:  0x596D,\n\t1740:  0x596E,\n\t1741:  0x596F,\n\t1742:  0x5970,\n\t1743:  0x5971,\n\t1744:  0x5972,\n\t1745:  0x5975,\n\t1746:  0x5977,\n\t1747:  0x597A,\n\t1748:  0x597B,\n\t1749:  0x597C,\n\t1750:  0x597E,\n\t1751:  0x597F,\n\t1752:  0x5980,\n\t1753:  0x5985,\n\t1754:  0x5989,\n\t1755:  0x598B,\n\t1756:  0x598C,\n\t1757:  0x598E,\n\t1758:  0x598F,\n\t1759:  0x5990,\n\t1760:  0x5991,\n\t1761:  0x5994,\n\t1762:  0x5995,\n\t1763:  0x5998,\n\t1764:  0x599A,\n\t1765:  0x599B,\n\t1766:  0x599C,\n\t1767:  0x599D,\n\t1768:  0x599F,\n\t1769:  0x59A0,\n\t1770:  0x59A1,\n\t1771:  0x59A2,\n\t1772:  0x59A6,\n\t1773:  0x59A7,\n\t1774:  0x59AC,\n\t1775:  0x59AD,\n\t1776:  0x59B0,\n\t1777:  0x59B1,\n\t1778:  0x59B3,\n\t1779:  0x59B4,\n\t1780:  0x59B5,\n\t1781:  0x59B6,\n\t1782:  0x59B7,\n\t1783:  0x59B8,\n\t1784:  0x59BA,\n\t1785:  0x59BC,\n\t1786:  0x59BD,\n\t1787:  0x59BF,\n\t1788:  0x59C0,\n\t1789:  0x59C1,\n\t1790:  0x59C2,\n\t1791:  0x59C3,\n\t1792:  0x59C4,\n\t1793:  0x59C5,\n\t1794:  0x59C7,\n\t1795:  0x59C8,\n\t1796:  0x59C9,\n\t1797:  0x59CC,\n\t1798:  0x59CD,\n\t1799:  0x59CE,\n\t1800:  0x59CF,\n\t1801:  0x59D5,\n\t1802:  0x59D6,\n\t1803:  0x59D9,\n\t1804:  0x59DB,\n\t1805:  0x59DE,\n\t1806:  0x59DF,\n\t1807:  0x59E0,\n\t1808:  0x59E1,\n\t1809:  0x59E2,\n\t1810:  0x59E4,\n\t1811:  0x59E6,\n\t1812:  0x59E7,\n\t1813:  0x59E9,\n\t1814:  0x59EA,\n\t1815:  0x59EB,\n\t1816:  0x59ED,\n\t1817:  0x59EE,\n\t1818:  0x59EF,\n\t1819:  0x59F0,\n\t1820:  0x59F1,\n\t1821:  0x59F2,\n\t1822:  0x59F3,\n\t1823:  0x59F4,\n\t1824:  0x59F5,\n\t1825:  0x59F6,\n\t1826:  0x59F7,\n\t1827:  0x59F8,\n\t1828:  0x59FA,\n\t1829:  0x59FC,\n\t1830:  0x59FD,\n\t1831:  0x59FE,\n\t1832:  0x5A00,\n\t1833:  0x5A02,\n\t1834:  0x5A0A,\n\t1835:  0x5A0B,\n\t1836:  0x5A0D,\n\t1837:  0x5A0E,\n\t1838:  0x5A0F,\n\t1839:  0x5A10,\n\t1840:  0x5A12,\n\t1841:  0x5A14,\n\t1842:  0x5A15,\n\t1843:  0x5A16,\n\t1844:  0x5A17,\n\t1845:  0x5A19,\n\t1846:  0x5A1A,\n\t1847:  0x5A1B,\n\t1848:  0x5A1D,\n\t1849:  0x5A1E,\n\t1850:  0x5A21,\n\t1851:  0x5A22,\n\t1852:  0x5A24,\n\t1853:  0x5A26,\n\t1854:  0x5A27,\n\t1855:  0x5A28,\n\t1856:  0x5A2A,\n\t1857:  0x5A2B,\n\t1858:  0x5A2C,\n\t1859:  0x5A2D,\n\t1860:  0x5A2E,\n\t1861:  0x5A2F,\n\t1862:  0x5A30,\n\t1863:  0x5A33,\n\t1864:  0x5A35,\n\t1865:  0x5A37,\n\t1866:  0x5A38,\n\t1867:  0x5A39,\n\t1868:  0x5A3A,\n\t1869:  0x5A3B,\n\t1870:  0x5A3D,\n\t1871:  0x5A3E,\n\t1872:  0x5A3F,\n\t1873:  0x5A41,\n\t1874:  0x5A42,\n\t1875:  0x5A43,\n\t1876:  0x5A44,\n\t1877:  0x5A45,\n\t1878:  0x5A47,\n\t1879:  0x5A48,\n\t1880:  0x5A4B,\n\t1881:  0x5A4C,\n\t1882:  0x5A4D,\n\t1883:  0x5A4E,\n\t1884:  0x5A4F,\n\t1885:  0x5A50,\n\t1886:  0x5A51,\n\t1887:  0x5A52,\n\t1888:  0x5A53,\n\t1889:  0x5A54,\n\t1890:  0x5A56,\n\t1891:  0x5A57,\n\t1892:  0x5A58,\n\t1893:  0x5A59,\n\t1894:  0x5A5B,\n\t1895:  0x5A5C,\n\t1896:  0x5A5D,\n\t1897:  0x5A5E,\n\t1898:  0x5A5F,\n\t1899:  0x5A60,\n\t1900:  0x5A61,\n\t1901:  0x5A63,\n\t1902:  0x5A64,\n\t1903:  0x5A65,\n\t1904:  0x5A66,\n\t1905:  0x5A68,\n\t1906:  0x5A69,\n\t1907:  0x5A6B,\n\t1908:  0x5A6C,\n\t1909:  0x5A6D,\n\t1910:  0x5A6E,\n\t1911:  0x5A6F,\n\t1912:  0x5A70,\n\t1913:  0x5A71,\n\t1914:  0x5A72,\n\t1915:  0x5A73,\n\t1916:  0x5A78,\n\t1917:  0x5A79,\n\t1918:  0x5A7B,\n\t1919:  0x5A7C,\n\t1920:  0x5A7D,\n\t1921:  0x5A7E,\n\t1922:  0x5A80,\n\t1923:  0x5A81,\n\t1924:  0x5A82,\n\t1925:  0x5A83,\n\t1926:  0x5A84,\n\t1927:  0x5A85,\n\t1928:  0x5A86,\n\t1929:  0x5A87,\n\t1930:  0x5A88,\n\t1931:  0x5A89,\n\t1932:  0x5A8A,\n\t1933:  0x5A8B,\n\t1934:  0x5A8C,\n\t1935:  0x5A8D,\n\t1936:  0x5A8E,\n\t1937:  0x5A8F,\n\t1938:  0x5A90,\n\t1939:  0x5A91,\n\t1940:  0x5A93,\n\t1941:  0x5A94,\n\t1942:  0x5A95,\n\t1943:  0x5A96,\n\t1944:  0x5A97,\n\t1945:  0x5A98,\n\t1946:  0x5A99,\n\t1947:  0x5A9C,\n\t1948:  0x5A9D,\n\t1949:  0x5A9E,\n\t1950:  0x5A9F,\n\t1951:  0x5AA0,\n\t1952:  0x5AA1,\n\t1953:  0x5AA2,\n\t1954:  0x5AA3,\n\t1955:  0x5AA4,\n\t1956:  0x5AA5,\n\t1957:  0x5AA6,\n\t1958:  0x5AA7,\n\t1959:  0x5AA8,\n\t1960:  0x5AA9,\n\t1961:  0x5AAB,\n\t1962:  0x5AAC,\n\t1963:  0x5AAD,\n\t1964:  0x5AAE,\n\t1965:  0x5AAF,\n\t1966:  0x5AB0,\n\t1967:  0x5AB1,\n\t1968:  0x5AB4,\n\t1969:  0x5AB6,\n\t1970:  0x5AB7,\n\t1971:  0x5AB9,\n\t1972:  0x5ABA,\n\t1973:  0x5ABB,\n\t1974:  0x5ABC,\n\t1975:  0x5ABD,\n\t1976:  0x5ABF,\n\t1977:  0x5AC0,\n\t1978:  0x5AC3,\n\t1979:  0x5AC4,\n\t1980:  0x5AC5,\n\t1981:  0x5AC6,\n\t1982:  0x5AC7,\n\t1983:  0x5AC8,\n\t1984:  0x5ACA,\n\t1985:  0x5ACB,\n\t1986:  0x5ACD,\n\t1987:  0x5ACE,\n\t1988:  0x5ACF,\n\t1989:  0x5AD0,\n\t1990:  0x5AD1,\n\t1991:  0x5AD3,\n\t1992:  0x5AD5,\n\t1993:  0x5AD7,\n\t1994:  0x5AD9,\n\t1995:  0x5ADA,\n\t1996:  0x5ADB,\n\t1997:  0x5ADD,\n\t1998:  0x5ADE,\n\t1999:  0x5ADF,\n\t2000:  0x5AE2,\n\t2001:  0x5AE4,\n\t2002:  0x5AE5,\n\t2003:  0x5AE7,\n\t2004:  0x5AE8,\n\t2005:  0x5AEA,\n\t2006:  0x5AEC,\n\t2007:  0x5AED,\n\t2008:  0x5AEE,\n\t2009:  0x5AEF,\n\t2010:  0x5AF0,\n\t2011:  0x5AF2,\n\t2012:  0x5AF3,\n\t2013:  0x5AF4,\n\t2014:  0x5AF5,\n\t2015:  0x5AF6,\n\t2016:  0x5AF7,\n\t2017:  0x5AF8,\n\t2018:  0x5AF9,\n\t2019:  0x5AFA,\n\t2020:  0x5AFB,\n\t2021:  0x5AFC,\n\t2022:  0x5AFD,\n\t2023:  0x5AFE,\n\t2024:  0x5AFF,\n\t2025:  0x5B00,\n\t2026:  0x5B01,\n\t2027:  0x5B02,\n\t2028:  0x5B03,\n\t2029:  0x5B04,\n\t2030:  0x5B05,\n\t2031:  0x5B06,\n\t2032:  0x5B07,\n\t2033:  0x5B08,\n\t2034:  0x5B0A,\n\t2035:  0x5B0B,\n\t2036:  0x5B0C,\n\t2037:  0x5B0D,\n\t2038:  0x5B0E,\n\t2039:  0x5B0F,\n\t2040:  0x5B10,\n\t2041:  0x5B11,\n\t2042:  0x5B12,\n\t2043:  0x5B13,\n\t2044:  0x5B14,\n\t2045:  0x5B15,\n\t2046:  0x5B18,\n\t2047:  0x5B19,\n\t2048:  0x5B1A,\n\t2049:  0x5B1B,\n\t2050:  0x5B1C,\n\t2051:  0x5B1D,\n\t2052:  0x5B1E,\n\t2053:  0x5B1F,\n\t2054:  0x5B20,\n\t2055:  0x5B21,\n\t2056:  0x5B22,\n\t2057:  0x5B23,\n\t2058:  0x5B24,\n\t2059:  0x5B25,\n\t2060:  0x5B26,\n\t2061:  0x5B27,\n\t2062:  0x5B28,\n\t2063:  0x5B29,\n\t2064:  0x5B2A,\n\t2065:  0x5B2B,\n\t2066:  0x5B2C,\n\t2067:  0x5B2D,\n\t2068:  0x5B2E,\n\t2069:  0x5B2F,\n\t2070:  0x5B30,\n\t2071:  0x5B31,\n\t2072:  0x5B33,\n\t2073:  0x5B35,\n\t2074:  0x5B36,\n\t2075:  0x5B38,\n\t2076:  0x5B39,\n\t2077:  0x5B3A,\n\t2078:  0x5B3B,\n\t2079:  0x5B3C,\n\t2080:  0x5B3D,\n\t2081:  0x5B3E,\n\t2082:  0x5B3F,\n\t2083:  0x5B41,\n\t2084:  0x5B42,\n\t2085:  0x5B43,\n\t2086:  0x5B44,\n\t2087:  0x5B45,\n\t2088:  0x5B46,\n\t2089:  0x5B47,\n\t2090:  0x5B48,\n\t2091:  0x5B49,\n\t2092:  0x5B4A,\n\t2093:  0x5B4B,\n\t2094:  0x5B4C,\n\t2095:  0x5B4D,\n\t2096:  0x5B4E,\n\t2097:  0x5B4F,\n\t2098:  0x5B52,\n\t2099:  0x5B56,\n\t2100:  0x5B5E,\n\t2101:  0x5B60,\n\t2102:  0x5B61,\n\t2103:  0x5B67,\n\t2104:  0x5B68,\n\t2105:  0x5B6B,\n\t2106:  0x5B6D,\n\t2107:  0x5B6E,\n\t2108:  0x5B6F,\n\t2109:  0x5B72,\n\t2110:  0x5B74,\n\t2111:  0x5B76,\n\t2112:  0x5B77,\n\t2113:  0x5B78,\n\t2114:  0x5B79,\n\t2115:  0x5B7B,\n\t2116:  0x5B7C,\n\t2117:  0x5B7E,\n\t2118:  0x5B7F,\n\t2119:  0x5B82,\n\t2120:  0x5B86,\n\t2121:  0x5B8A,\n\t2122:  0x5B8D,\n\t2123:  0x5B8E,\n\t2124:  0x5B90,\n\t2125:  0x5B91,\n\t2126:  0x5B92,\n\t2127:  0x5B94,\n\t2128:  0x5B96,\n\t2129:  0x5B9F,\n\t2130:  0x5BA7,\n\t2131:  0x5BA8,\n\t2132:  0x5BA9,\n\t2133:  0x5BAC,\n\t2134:  0x5BAD,\n\t2135:  0x5BAE,\n\t2136:  0x5BAF,\n\t2137:  0x5BB1,\n\t2138:  0x5BB2,\n\t2139:  0x5BB7,\n\t2140:  0x5BBA,\n\t2141:  0x5BBB,\n\t2142:  0x5BBC,\n\t2143:  0x5BC0,\n\t2144:  0x5BC1,\n\t2145:  0x5BC3,\n\t2146:  0x5BC8,\n\t2147:  0x5BC9,\n\t2148:  0x5BCA,\n\t2149:  0x5BCB,\n\t2150:  0x5BCD,\n\t2151:  0x5BCE,\n\t2152:  0x5BCF,\n\t2153:  0x5BD1,\n\t2154:  0x5BD4,\n\t2155:  0x5BD5,\n\t2156:  0x5BD6,\n\t2157:  0x5BD7,\n\t2158:  0x5BD8,\n\t2159:  0x5BD9,\n\t2160:  0x5BDA,\n\t2161:  0x5BDB,\n\t2162:  0x5BDC,\n\t2163:  0x5BE0,\n\t2164:  0x5BE2,\n\t2165:  0x5BE3,\n\t2166:  0x5BE6,\n\t2167:  0x5BE7,\n\t2168:  0x5BE9,\n\t2169:  0x5BEA,\n\t2170:  0x5BEB,\n\t2171:  0x5BEC,\n\t2172:  0x5BED,\n\t2173:  0x5BEF,\n\t2174:  0x5BF1,\n\t2175:  0x5BF2,\n\t2176:  0x5BF3,\n\t2177:  0x5BF4,\n\t2178:  0x5BF5,\n\t2179:  0x5BF6,\n\t2180:  0x5BF7,\n\t2181:  0x5BFD,\n\t2182:  0x5BFE,\n\t2183:  0x5C00,\n\t2184:  0x5C02,\n\t2185:  0x5C03,\n\t2186:  0x5C05,\n\t2187:  0x5C07,\n\t2188:  0x5C08,\n\t2189:  0x5C0B,\n\t2190:  0x5C0C,\n\t2191:  0x5C0D,\n\t2192:  0x5C0E,\n\t2193:  0x5C10,\n\t2194:  0x5C12,\n\t2195:  0x5C13,\n\t2196:  0x5C17,\n\t2197:  0x5C19,\n\t2198:  0x5C1B,\n\t2199:  0x5C1E,\n\t2200:  0x5C1F,\n\t2201:  0x5C20,\n\t2202:  0x5C21,\n\t2203:  0x5C23,\n\t2204:  0x5C26,\n\t2205:  0x5C28,\n\t2206:  0x5C29,\n\t2207:  0x5C2A,\n\t2208:  0x5C2B,\n\t2209:  0x5C2D,\n\t2210:  0x5C2E,\n\t2211:  0x5C2F,\n\t2212:  0x5C30,\n\t2213:  0x5C32,\n\t2214:  0x5C33,\n\t2215:  0x5C35,\n\t2216:  0x5C36,\n\t2217:  0x5C37,\n\t2218:  0x5C43,\n\t2219:  0x5C44,\n\t2220:  0x5C46,\n\t2221:  0x5C47,\n\t2222:  0x5C4C,\n\t2223:  0x5C4D,\n\t2224:  0x5C52,\n\t2225:  0x5C53,\n\t2226:  0x5C54,\n\t2227:  0x5C56,\n\t2228:  0x5C57,\n\t2229:  0x5C58,\n\t2230:  0x5C5A,\n\t2231:  0x5C5B,\n\t2232:  0x5C5C,\n\t2233:  0x5C5D,\n\t2234:  0x5C5F,\n\t2235:  0x5C62,\n\t2236:  0x5C64,\n\t2237:  0x5C67,\n\t2238:  0x5C68,\n\t2239:  0x5C69,\n\t2240:  0x5C6A,\n\t2241:  0x5C6B,\n\t2242:  0x5C6C,\n\t2243:  0x5C6D,\n\t2244:  0x5C70,\n\t2245:  0x5C72,\n\t2246:  0x5C73,\n\t2247:  0x5C74,\n\t2248:  0x5C75,\n\t2249:  0x5C76,\n\t2250:  0x5C77,\n\t2251:  0x5C78,\n\t2252:  0x5C7B,\n\t2253:  0x5C7C,\n\t2254:  0x5C7D,\n\t2255:  0x5C7E,\n\t2256:  0x5C80,\n\t2257:  0x5C83,\n\t2258:  0x5C84,\n\t2259:  0x5C85,\n\t2260:  0x5C86,\n\t2261:  0x5C87,\n\t2262:  0x5C89,\n\t2263:  0x5C8A,\n\t2264:  0x5C8B,\n\t2265:  0x5C8E,\n\t2266:  0x5C8F,\n\t2267:  0x5C92,\n\t2268:  0x5C93,\n\t2269:  0x5C95,\n\t2270:  0x5C9D,\n\t2271:  0x5C9E,\n\t2272:  0x5C9F,\n\t2273:  0x5CA0,\n\t2274:  0x5CA1,\n\t2275:  0x5CA4,\n\t2276:  0x5CA5,\n\t2277:  0x5CA6,\n\t2278:  0x5CA7,\n\t2279:  0x5CA8,\n\t2280:  0x5CAA,\n\t2281:  0x5CAE,\n\t2282:  0x5CAF,\n\t2283:  0x5CB0,\n\t2284:  0x5CB2,\n\t2285:  0x5CB4,\n\t2286:  0x5CB6,\n\t2287:  0x5CB9,\n\t2288:  0x5CBA,\n\t2289:  0x5CBB,\n\t2290:  0x5CBC,\n\t2291:  0x5CBE,\n\t2292:  0x5CC0,\n\t2293:  0x5CC2,\n\t2294:  0x5CC3,\n\t2295:  0x5CC5,\n\t2296:  0x5CC6,\n\t2297:  0x5CC7,\n\t2298:  0x5CC8,\n\t2299:  0x5CC9,\n\t2300:  0x5CCA,\n\t2301:  0x5CCC,\n\t2302:  0x5CCD,\n\t2303:  0x5CCE,\n\t2304:  0x5CCF,\n\t2305:  0x5CD0,\n\t2306:  0x5CD1,\n\t2307:  0x5CD3,\n\t2308:  0x5CD4,\n\t2309:  0x5CD5,\n\t2310:  0x5CD6,\n\t2311:  0x5CD7,\n\t2312:  0x5CD8,\n\t2313:  0x5CDA,\n\t2314:  0x5CDB,\n\t2315:  0x5CDC,\n\t2316:  0x5CDD,\n\t2317:  0x5CDE,\n\t2318:  0x5CDF,\n\t2319:  0x5CE0,\n\t2320:  0x5CE2,\n\t2321:  0x5CE3,\n\t2322:  0x5CE7,\n\t2323:  0x5CE9,\n\t2324:  0x5CEB,\n\t2325:  0x5CEC,\n\t2326:  0x5CEE,\n\t2327:  0x5CEF,\n\t2328:  0x5CF1,\n\t2329:  0x5CF2,\n\t2330:  0x5CF3,\n\t2331:  0x5CF4,\n\t2332:  0x5CF5,\n\t2333:  0x5CF6,\n\t2334:  0x5CF7,\n\t2335:  0x5CF8,\n\t2336:  0x5CF9,\n\t2337:  0x5CFA,\n\t2338:  0x5CFC,\n\t2339:  0x5CFD,\n\t2340:  0x5CFE,\n\t2341:  0x5CFF,\n\t2342:  0x5D00,\n\t2343:  0x5D01,\n\t2344:  0x5D04,\n\t2345:  0x5D05,\n\t2346:  0x5D08,\n\t2347:  0x5D09,\n\t2348:  0x5D0A,\n\t2349:  0x5D0B,\n\t2350:  0x5D0C,\n\t2351:  0x5D0D,\n\t2352:  0x5D0F,\n\t2353:  0x5D10,\n\t2354:  0x5D11,\n\t2355:  0x5D12,\n\t2356:  0x5D13,\n\t2357:  0x5D15,\n\t2358:  0x5D17,\n\t2359:  0x5D18,\n\t2360:  0x5D19,\n\t2361:  0x5D1A,\n\t2362:  0x5D1C,\n\t2363:  0x5D1D,\n\t2364:  0x5D1F,\n\t2365:  0x5D20,\n\t2366:  0x5D21,\n\t2367:  0x5D22,\n\t2368:  0x5D23,\n\t2369:  0x5D25,\n\t2370:  0x5D28,\n\t2371:  0x5D2A,\n\t2372:  0x5D2B,\n\t2373:  0x5D2C,\n\t2374:  0x5D2F,\n\t2375:  0x5D30,\n\t2376:  0x5D31,\n\t2377:  0x5D32,\n\t2378:  0x5D33,\n\t2379:  0x5D35,\n\t2380:  0x5D36,\n\t2381:  0x5D37,\n\t2382:  0x5D38,\n\t2383:  0x5D39,\n\t2384:  0x5D3A,\n\t2385:  0x5D3B,\n\t2386:  0x5D3C,\n\t2387:  0x5D3F,\n\t2388:  0x5D40,\n\t2389:  0x5D41,\n\t2390:  0x5D42,\n\t2391:  0x5D43,\n\t2392:  0x5D44,\n\t2393:  0x5D45,\n\t2394:  0x5D46,\n\t2395:  0x5D48,\n\t2396:  0x5D49,\n\t2397:  0x5D4D,\n\t2398:  0x5D4E,\n\t2399:  0x5D4F,\n\t2400:  0x5D50,\n\t2401:  0x5D51,\n\t2402:  0x5D52,\n\t2403:  0x5D53,\n\t2404:  0x5D54,\n\t2405:  0x5D55,\n\t2406:  0x5D56,\n\t2407:  0x5D57,\n\t2408:  0x5D59,\n\t2409:  0x5D5A,\n\t2410:  0x5D5C,\n\t2411:  0x5D5E,\n\t2412:  0x5D5F,\n\t2413:  0x5D60,\n\t2414:  0x5D61,\n\t2415:  0x5D62,\n\t2416:  0x5D63,\n\t2417:  0x5D64,\n\t2418:  0x5D65,\n\t2419:  0x5D66,\n\t2420:  0x5D67,\n\t2421:  0x5D68,\n\t2422:  0x5D6A,\n\t2423:  0x5D6D,\n\t2424:  0x5D6E,\n\t2425:  0x5D70,\n\t2426:  0x5D71,\n\t2427:  0x5D72,\n\t2428:  0x5D73,\n\t2429:  0x5D75,\n\t2430:  0x5D76,\n\t2431:  0x5D77,\n\t2432:  0x5D78,\n\t2433:  0x5D79,\n\t2434:  0x5D7A,\n\t2435:  0x5D7B,\n\t2436:  0x5D7C,\n\t2437:  0x5D7D,\n\t2438:  0x5D7E,\n\t2439:  0x5D7F,\n\t2440:  0x5D80,\n\t2441:  0x5D81,\n\t2442:  0x5D83,\n\t2443:  0x5D84,\n\t2444:  0x5D85,\n\t2445:  0x5D86,\n\t2446:  0x5D87,\n\t2447:  0x5D88,\n\t2448:  0x5D89,\n\t2449:  0x5D8A,\n\t2450:  0x5D8B,\n\t2451:  0x5D8C,\n\t2452:  0x5D8D,\n\t2453:  0x5D8E,\n\t2454:  0x5D8F,\n\t2455:  0x5D90,\n\t2456:  0x5D91,\n\t2457:  0x5D92,\n\t2458:  0x5D93,\n\t2459:  0x5D94,\n\t2460:  0x5D95,\n\t2461:  0x5D96,\n\t2462:  0x5D97,\n\t2463:  0x5D98,\n\t2464:  0x5D9A,\n\t2465:  0x5D9B,\n\t2466:  0x5D9C,\n\t2467:  0x5D9E,\n\t2468:  0x5D9F,\n\t2469:  0x5DA0,\n\t2470:  0x5DA1,\n\t2471:  0x5DA2,\n\t2472:  0x5DA3,\n\t2473:  0x5DA4,\n\t2474:  0x5DA5,\n\t2475:  0x5DA6,\n\t2476:  0x5DA7,\n\t2477:  0x5DA8,\n\t2478:  0x5DA9,\n\t2479:  0x5DAA,\n\t2480:  0x5DAB,\n\t2481:  0x5DAC,\n\t2482:  0x5DAD,\n\t2483:  0x5DAE,\n\t2484:  0x5DAF,\n\t2485:  0x5DB0,\n\t2486:  0x5DB1,\n\t2487:  0x5DB2,\n\t2488:  0x5DB3,\n\t2489:  0x5DB4,\n\t2490:  0x5DB5,\n\t2491:  0x5DB6,\n\t2492:  0x5DB8,\n\t2493:  0x5DB9,\n\t2494:  0x5DBA,\n\t2495:  0x5DBB,\n\t2496:  0x5DBC,\n\t2497:  0x5DBD,\n\t2498:  0x5DBE,\n\t2499:  0x5DBF,\n\t2500:  0x5DC0,\n\t2501:  0x5DC1,\n\t2502:  0x5DC2,\n\t2503:  0x5DC3,\n\t2504:  0x5DC4,\n\t2505:  0x5DC6,\n\t2506:  0x5DC7,\n\t2507:  0x5DC8,\n\t2508:  0x5DC9,\n\t2509:  0x5DCA,\n\t2510:  0x5DCB,\n\t2511:  0x5DCC,\n\t2512:  0x5DCE,\n\t2513:  0x5DCF,\n\t2514:  0x5DD0,\n\t2515:  0x5DD1,\n\t2516:  0x5DD2,\n\t2517:  0x5DD3,\n\t2518:  0x5DD4,\n\t2519:  0x5DD5,\n\t2520:  0x5DD6,\n\t2521:  0x5DD7,\n\t2522:  0x5DD8,\n\t2523:  0x5DD9,\n\t2524:  0x5DDA,\n\t2525:  0x5DDC,\n\t2526:  0x5DDF,\n\t2527:  0x5DE0,\n\t2528:  0x5DE3,\n\t2529:  0x5DE4,\n\t2530:  0x5DEA,\n\t2531:  0x5DEC,\n\t2532:  0x5DED,\n\t2533:  0x5DF0,\n\t2534:  0x5DF5,\n\t2535:  0x5DF6,\n\t2536:  0x5DF8,\n\t2537:  0x5DF9,\n\t2538:  0x5DFA,\n\t2539:  0x5DFB,\n\t2540:  0x5DFC,\n\t2541:  0x5DFF,\n\t2542:  0x5E00,\n\t2543:  0x5E04,\n\t2544:  0x5E07,\n\t2545:  0x5E09,\n\t2546:  0x5E0A,\n\t2547:  0x5E0B,\n\t2548:  0x5E0D,\n\t2549:  0x5E0E,\n\t2550:  0x5E12,\n\t2551:  0x5E13,\n\t2552:  0x5E17,\n\t2553:  0x5E1E,\n\t2554:  0x5E1F,\n\t2555:  0x5E20,\n\t2556:  0x5E21,\n\t2557:  0x5E22,\n\t2558:  0x5E23,\n\t2559:  0x5E24,\n\t2560:  0x5E25,\n\t2561:  0x5E28,\n\t2562:  0x5E29,\n\t2563:  0x5E2A,\n\t2564:  0x5E2B,\n\t2565:  0x5E2C,\n\t2566:  0x5E2F,\n\t2567:  0x5E30,\n\t2568:  0x5E32,\n\t2569:  0x5E33,\n\t2570:  0x5E34,\n\t2571:  0x5E35,\n\t2572:  0x5E36,\n\t2573:  0x5E39,\n\t2574:  0x5E3A,\n\t2575:  0x5E3E,\n\t2576:  0x5E3F,\n\t2577:  0x5E40,\n\t2578:  0x5E41,\n\t2579:  0x5E43,\n\t2580:  0x5E46,\n\t2581:  0x5E47,\n\t2582:  0x5E48,\n\t2583:  0x5E49,\n\t2584:  0x5E4A,\n\t2585:  0x5E4B,\n\t2586:  0x5E4D,\n\t2587:  0x5E4E,\n\t2588:  0x5E4F,\n\t2589:  0x5E50,\n\t2590:  0x5E51,\n\t2591:  0x5E52,\n\t2592:  0x5E53,\n\t2593:  0x5E56,\n\t2594:  0x5E57,\n\t2595:  0x5E58,\n\t2596:  0x5E59,\n\t2597:  0x5E5A,\n\t2598:  0x5E5C,\n\t2599:  0x5E5D,\n\t2600:  0x5E5F,\n\t2601:  0x5E60,\n\t2602:  0x5E63,\n\t2603:  0x5E64,\n\t2604:  0x5E65,\n\t2605:  0x5E66,\n\t2606:  0x5E67,\n\t2607:  0x5E68,\n\t2608:  0x5E69,\n\t2609:  0x5E6A,\n\t2610:  0x5E6B,\n\t2611:  0x5E6C,\n\t2612:  0x5E6D,\n\t2613:  0x5E6E,\n\t2614:  0x5E6F,\n\t2615:  0x5E70,\n\t2616:  0x5E71,\n\t2617:  0x5E75,\n\t2618:  0x5E77,\n\t2619:  0x5E79,\n\t2620:  0x5E7E,\n\t2621:  0x5E81,\n\t2622:  0x5E82,\n\t2623:  0x5E83,\n\t2624:  0x5E85,\n\t2625:  0x5E88,\n\t2626:  0x5E89,\n\t2627:  0x5E8C,\n\t2628:  0x5E8D,\n\t2629:  0x5E8E,\n\t2630:  0x5E92,\n\t2631:  0x5E98,\n\t2632:  0x5E9B,\n\t2633:  0x5E9D,\n\t2634:  0x5EA1,\n\t2635:  0x5EA2,\n\t2636:  0x5EA3,\n\t2637:  0x5EA4,\n\t2638:  0x5EA8,\n\t2639:  0x5EA9,\n\t2640:  0x5EAA,\n\t2641:  0x5EAB,\n\t2642:  0x5EAC,\n\t2643:  0x5EAE,\n\t2644:  0x5EAF,\n\t2645:  0x5EB0,\n\t2646:  0x5EB1,\n\t2647:  0x5EB2,\n\t2648:  0x5EB4,\n\t2649:  0x5EBA,\n\t2650:  0x5EBB,\n\t2651:  0x5EBC,\n\t2652:  0x5EBD,\n\t2653:  0x5EBF,\n\t2654:  0x5EC0,\n\t2655:  0x5EC1,\n\t2656:  0x5EC2,\n\t2657:  0x5EC3,\n\t2658:  0x5EC4,\n\t2659:  0x5EC5,\n\t2660:  0x5EC6,\n\t2661:  0x5EC7,\n\t2662:  0x5EC8,\n\t2663:  0x5ECB,\n\t2664:  0x5ECC,\n\t2665:  0x5ECD,\n\t2666:  0x5ECE,\n\t2667:  0x5ECF,\n\t2668:  0x5ED0,\n\t2669:  0x5ED4,\n\t2670:  0x5ED5,\n\t2671:  0x5ED7,\n\t2672:  0x5ED8,\n\t2673:  0x5ED9,\n\t2674:  0x5EDA,\n\t2675:  0x5EDC,\n\t2676:  0x5EDD,\n\t2677:  0x5EDE,\n\t2678:  0x5EDF,\n\t2679:  0x5EE0,\n\t2680:  0x5EE1,\n\t2681:  0x5EE2,\n\t2682:  0x5EE3,\n\t2683:  0x5EE4,\n\t2684:  0x5EE5,\n\t2685:  0x5EE6,\n\t2686:  0x5EE7,\n\t2687:  0x5EE9,\n\t2688:  0x5EEB,\n\t2689:  0x5EEC,\n\t2690:  0x5EED,\n\t2691:  0x5EEE,\n\t2692:  0x5EEF,\n\t2693:  0x5EF0,\n\t2694:  0x5EF1,\n\t2695:  0x5EF2,\n\t2696:  0x5EF3,\n\t2697:  0x5EF5,\n\t2698:  0x5EF8,\n\t2699:  0x5EF9,\n\t2700:  0x5EFB,\n\t2701:  0x5EFC,\n\t2702:  0x5EFD,\n\t2703:  0x5F05,\n\t2704:  0x5F06,\n\t2705:  0x5F07,\n\t2706:  0x5F09,\n\t2707:  0x5F0C,\n\t2708:  0x5F0D,\n\t2709:  0x5F0E,\n\t2710:  0x5F10,\n\t2711:  0x5F12,\n\t2712:  0x5F14,\n\t2713:  0x5F16,\n\t2714:  0x5F19,\n\t2715:  0x5F1A,\n\t2716:  0x5F1C,\n\t2717:  0x5F1D,\n\t2718:  0x5F1E,\n\t2719:  0x5F21,\n\t2720:  0x5F22,\n\t2721:  0x5F23,\n\t2722:  0x5F24,\n\t2723:  0x5F28,\n\t2724:  0x5F2B,\n\t2725:  0x5F2C,\n\t2726:  0x5F2E,\n\t2727:  0x5F30,\n\t2728:  0x5F32,\n\t2729:  0x5F33,\n\t2730:  0x5F34,\n\t2731:  0x5F35,\n\t2732:  0x5F36,\n\t2733:  0x5F37,\n\t2734:  0x5F38,\n\t2735:  0x5F3B,\n\t2736:  0x5F3D,\n\t2737:  0x5F3E,\n\t2738:  0x5F3F,\n\t2739:  0x5F41,\n\t2740:  0x5F42,\n\t2741:  0x5F43,\n\t2742:  0x5F44,\n\t2743:  0x5F45,\n\t2744:  0x5F46,\n\t2745:  0x5F47,\n\t2746:  0x5F48,\n\t2747:  0x5F49,\n\t2748:  0x5F4A,\n\t2749:  0x5F4B,\n\t2750:  0x5F4C,\n\t2751:  0x5F4D,\n\t2752:  0x5F4E,\n\t2753:  0x5F4F,\n\t2754:  0x5F51,\n\t2755:  0x5F54,\n\t2756:  0x5F59,\n\t2757:  0x5F5A,\n\t2758:  0x5F5B,\n\t2759:  0x5F5C,\n\t2760:  0x5F5E,\n\t2761:  0x5F5F,\n\t2762:  0x5F60,\n\t2763:  0x5F63,\n\t2764:  0x5F65,\n\t2765:  0x5F67,\n\t2766:  0x5F68,\n\t2767:  0x5F6B,\n\t2768:  0x5F6E,\n\t2769:  0x5F6F,\n\t2770:  0x5F72,\n\t2771:  0x5F74,\n\t2772:  0x5F75,\n\t2773:  0x5F76,\n\t2774:  0x5F78,\n\t2775:  0x5F7A,\n\t2776:  0x5F7D,\n\t2777:  0x5F7E,\n\t2778:  0x5F7F,\n\t2779:  0x5F83,\n\t2780:  0x5F86,\n\t2781:  0x5F8D,\n\t2782:  0x5F8E,\n\t2783:  0x5F8F,\n\t2784:  0x5F91,\n\t2785:  0x5F93,\n\t2786:  0x5F94,\n\t2787:  0x5F96,\n\t2788:  0x5F9A,\n\t2789:  0x5F9B,\n\t2790:  0x5F9D,\n\t2791:  0x5F9E,\n\t2792:  0x5F9F,\n\t2793:  0x5FA0,\n\t2794:  0x5FA2,\n\t2795:  0x5FA3,\n\t2796:  0x5FA4,\n\t2797:  0x5FA5,\n\t2798:  0x5FA6,\n\t2799:  0x5FA7,\n\t2800:  0x5FA9,\n\t2801:  0x5FAB,\n\t2802:  0x5FAC,\n\t2803:  0x5FAF,\n\t2804:  0x5FB0,\n\t2805:  0x5FB1,\n\t2806:  0x5FB2,\n\t2807:  0x5FB3,\n\t2808:  0x5FB4,\n\t2809:  0x5FB6,\n\t2810:  0x5FB8,\n\t2811:  0x5FB9,\n\t2812:  0x5FBA,\n\t2813:  0x5FBB,\n\t2814:  0x5FBE,\n\t2815:  0x5FBF,\n\t2816:  0x5FC0,\n\t2817:  0x5FC1,\n\t2818:  0x5FC2,\n\t2819:  0x5FC7,\n\t2820:  0x5FC8,\n\t2821:  0x5FCA,\n\t2822:  0x5FCB,\n\t2823:  0x5FCE,\n\t2824:  0x5FD3,\n\t2825:  0x5FD4,\n\t2826:  0x5FD5,\n\t2827:  0x5FDA,\n\t2828:  0x5FDB,\n\t2829:  0x5FDC,\n\t2830:  0x5FDE,\n\t2831:  0x5FDF,\n\t2832:  0x5FE2,\n\t2833:  0x5FE3,\n\t2834:  0x5FE5,\n\t2835:  0x5FE6,\n\t2836:  0x5FE8,\n\t2837:  0x5FE9,\n\t2838:  0x5FEC,\n\t2839:  0x5FEF,\n\t2840:  0x5FF0,\n\t2841:  0x5FF2,\n\t2842:  0x5FF3,\n\t2843:  0x5FF4,\n\t2844:  0x5FF6,\n\t2845:  0x5FF7,\n\t2846:  0x5FF9,\n\t2847:  0x5FFA,\n\t2848:  0x5FFC,\n\t2849:  0x6007,\n\t2850:  0x6008,\n\t2851:  0x6009,\n\t2852:  0x600B,\n\t2853:  0x600C,\n\t2854:  0x6010,\n\t2855:  0x6011,\n\t2856:  0x6013,\n\t2857:  0x6017,\n\t2858:  0x6018,\n\t2859:  0x601A,\n\t2860:  0x601E,\n\t2861:  0x601F,\n\t2862:  0x6022,\n\t2863:  0x6023,\n\t2864:  0x6024,\n\t2865:  0x602C,\n\t2866:  0x602D,\n\t2867:  0x602E,\n\t2868:  0x6030,\n\t2869:  0x6031,\n\t2870:  0x6032,\n\t2871:  0x6033,\n\t2872:  0x6034,\n\t2873:  0x6036,\n\t2874:  0x6037,\n\t2875:  0x6038,\n\t2876:  0x6039,\n\t2877:  0x603A,\n\t2878:  0x603D,\n\t2879:  0x603E,\n\t2880:  0x6040,\n\t2881:  0x6044,\n\t2882:  0x6045,\n\t2883:  0x6046,\n\t2884:  0x6047,\n\t2885:  0x6048,\n\t2886:  0x6049,\n\t2887:  0x604A,\n\t2888:  0x604C,\n\t2889:  0x604E,\n\t2890:  0x604F,\n\t2891:  0x6051,\n\t2892:  0x6053,\n\t2893:  0x6054,\n\t2894:  0x6056,\n\t2895:  0x6057,\n\t2896:  0x6058,\n\t2897:  0x605B,\n\t2898:  0x605C,\n\t2899:  0x605E,\n\t2900:  0x605F,\n\t2901:  0x6060,\n\t2902:  0x6061,\n\t2903:  0x6065,\n\t2904:  0x6066,\n\t2905:  0x606E,\n\t2906:  0x6071,\n\t2907:  0x6072,\n\t2908:  0x6074,\n\t2909:  0x6075,\n\t2910:  0x6077,\n\t2911:  0x607E,\n\t2912:  0x6080,\n\t2913:  0x6081,\n\t2914:  0x6082,\n\t2915:  0x6085,\n\t2916:  0x6086,\n\t2917:  0x6087,\n\t2918:  0x6088,\n\t2919:  0x608A,\n\t2920:  0x608B,\n\t2921:  0x608E,\n\t2922:  0x608F,\n\t2923:  0x6090,\n\t2924:  0x6091,\n\t2925:  0x6093,\n\t2926:  0x6095,\n\t2927:  0x6097,\n\t2928:  0x6098,\n\t2929:  0x6099,\n\t2930:  0x609C,\n\t2931:  0x609E,\n\t2932:  0x60A1,\n\t2933:  0x60A2,\n\t2934:  0x60A4,\n\t2935:  0x60A5,\n\t2936:  0x60A7,\n\t2937:  0x60A9,\n\t2938:  0x60AA,\n\t2939:  0x60AE,\n\t2940:  0x60B0,\n\t2941:  0x60B3,\n\t2942:  0x60B5,\n\t2943:  0x60B6,\n\t2944:  0x60B7,\n\t2945:  0x60B9,\n\t2946:  0x60BA,\n\t2947:  0x60BD,\n\t2948:  0x60BE,\n\t2949:  0x60BF,\n\t2950:  0x60C0,\n\t2951:  0x60C1,\n\t2952:  0x60C2,\n\t2953:  0x60C3,\n\t2954:  0x60C4,\n\t2955:  0x60C7,\n\t2956:  0x60C8,\n\t2957:  0x60C9,\n\t2958:  0x60CC,\n\t2959:  0x60CD,\n\t2960:  0x60CE,\n\t2961:  0x60CF,\n\t2962:  0x60D0,\n\t2963:  0x60D2,\n\t2964:  0x60D3,\n\t2965:  0x60D4,\n\t2966:  0x60D6,\n\t2967:  0x60D7,\n\t2968:  0x60D9,\n\t2969:  0x60DB,\n\t2970:  0x60DE,\n\t2971:  0x60E1,\n\t2972:  0x60E2,\n\t2973:  0x60E3,\n\t2974:  0x60E4,\n\t2975:  0x60E5,\n\t2976:  0x60EA,\n\t2977:  0x60F1,\n\t2978:  0x60F2,\n\t2979:  0x60F5,\n\t2980:  0x60F7,\n\t2981:  0x60F8,\n\t2982:  0x60FB,\n\t2983:  0x60FC,\n\t2984:  0x60FD,\n\t2985:  0x60FE,\n\t2986:  0x60FF,\n\t2987:  0x6102,\n\t2988:  0x6103,\n\t2989:  0x6104,\n\t2990:  0x6105,\n\t2991:  0x6107,\n\t2992:  0x610A,\n\t2993:  0x610B,\n\t2994:  0x610C,\n\t2995:  0x6110,\n\t2996:  0x6111,\n\t2997:  0x6112,\n\t2998:  0x6113,\n\t2999:  0x6114,\n\t3000:  0x6116,\n\t3001:  0x6117,\n\t3002:  0x6118,\n\t3003:  0x6119,\n\t3004:  0x611B,\n\t3005:  0x611C,\n\t3006:  0x611D,\n\t3007:  0x611E,\n\t3008:  0x6121,\n\t3009:  0x6122,\n\t3010:  0x6125,\n\t3011:  0x6128,\n\t3012:  0x6129,\n\t3013:  0x612A,\n\t3014:  0x612C,\n\t3015:  0x612D,\n\t3016:  0x612E,\n\t3017:  0x612F,\n\t3018:  0x6130,\n\t3019:  0x6131,\n\t3020:  0x6132,\n\t3021:  0x6133,\n\t3022:  0x6134,\n\t3023:  0x6135,\n\t3024:  0x6136,\n\t3025:  0x6137,\n\t3026:  0x6138,\n\t3027:  0x6139,\n\t3028:  0x613A,\n\t3029:  0x613B,\n\t3030:  0x613C,\n\t3031:  0x613D,\n\t3032:  0x613E,\n\t3033:  0x6140,\n\t3034:  0x6141,\n\t3035:  0x6142,\n\t3036:  0x6143,\n\t3037:  0x6144,\n\t3038:  0x6145,\n\t3039:  0x6146,\n\t3040:  0x6147,\n\t3041:  0x6149,\n\t3042:  0x614B,\n\t3043:  0x614D,\n\t3044:  0x614F,\n\t3045:  0x6150,\n\t3046:  0x6152,\n\t3047:  0x6153,\n\t3048:  0x6154,\n\t3049:  0x6156,\n\t3050:  0x6157,\n\t3051:  0x6158,\n\t3052:  0x6159,\n\t3053:  0x615A,\n\t3054:  0x615B,\n\t3055:  0x615C,\n\t3056:  0x615E,\n\t3057:  0x615F,\n\t3058:  0x6160,\n\t3059:  0x6161,\n\t3060:  0x6163,\n\t3061:  0x6164,\n\t3062:  0x6165,\n\t3063:  0x6166,\n\t3064:  0x6169,\n\t3065:  0x616A,\n\t3066:  0x616B,\n\t3067:  0x616C,\n\t3068:  0x616D,\n\t3069:  0x616E,\n\t3070:  0x616F,\n\t3071:  0x6171,\n\t3072:  0x6172,\n\t3073:  0x6173,\n\t3074:  0x6174,\n\t3075:  0x6176,\n\t3076:  0x6178,\n\t3077:  0x6179,\n\t3078:  0x617A,\n\t3079:  0x617B,\n\t3080:  0x617C,\n\t3081:  0x617D,\n\t3082:  0x617E,\n\t3083:  0x617F,\n\t3084:  0x6180,\n\t3085:  0x6181,\n\t3086:  0x6182,\n\t3087:  0x6183,\n\t3088:  0x6184,\n\t3089:  0x6185,\n\t3090:  0x6186,\n\t3091:  0x6187,\n\t3092:  0x6188,\n\t3093:  0x6189,\n\t3094:  0x618A,\n\t3095:  0x618C,\n\t3096:  0x618D,\n\t3097:  0x618F,\n\t3098:  0x6190,\n\t3099:  0x6191,\n\t3100:  0x6192,\n\t3101:  0x6193,\n\t3102:  0x6195,\n\t3103:  0x6196,\n\t3104:  0x6197,\n\t3105:  0x6198,\n\t3106:  0x6199,\n\t3107:  0x619A,\n\t3108:  0x619B,\n\t3109:  0x619C,\n\t3110:  0x619E,\n\t3111:  0x619F,\n\t3112:  0x61A0,\n\t3113:  0x61A1,\n\t3114:  0x61A2,\n\t3115:  0x61A3,\n\t3116:  0x61A4,\n\t3117:  0x61A5,\n\t3118:  0x61A6,\n\t3119:  0x61AA,\n\t3120:  0x61AB,\n\t3121:  0x61AD,\n\t3122:  0x61AE,\n\t3123:  0x61AF,\n\t3124:  0x61B0,\n\t3125:  0x61B1,\n\t3126:  0x61B2,\n\t3127:  0x61B3,\n\t3128:  0x61B4,\n\t3129:  0x61B5,\n\t3130:  0x61B6,\n\t3131:  0x61B8,\n\t3132:  0x61B9,\n\t3133:  0x61BA,\n\t3134:  0x61BB,\n\t3135:  0x61BC,\n\t3136:  0x61BD,\n\t3137:  0x61BF,\n\t3138:  0x61C0,\n\t3139:  0x61C1,\n\t3140:  0x61C3,\n\t3141:  0x61C4,\n\t3142:  0x61C5,\n\t3143:  0x61C6,\n\t3144:  0x61C7,\n\t3145:  0x61C9,\n\t3146:  0x61CC,\n\t3147:  0x61CD,\n\t3148:  0x61CE,\n\t3149:  0x61CF,\n\t3150:  0x61D0,\n\t3151:  0x61D3,\n\t3152:  0x61D5,\n\t3153:  0x61D6,\n\t3154:  0x61D7,\n\t3155:  0x61D8,\n\t3156:  0x61D9,\n\t3157:  0x61DA,\n\t3158:  0x61DB,\n\t3159:  0x61DC,\n\t3160:  0x61DD,\n\t3161:  0x61DE,\n\t3162:  0x61DF,\n\t3163:  0x61E0,\n\t3164:  0x61E1,\n\t3165:  0x61E2,\n\t3166:  0x61E3,\n\t3167:  0x61E4,\n\t3168:  0x61E5,\n\t3169:  0x61E7,\n\t3170:  0x61E8,\n\t3171:  0x61E9,\n\t3172:  0x61EA,\n\t3173:  0x61EB,\n\t3174:  0x61EC,\n\t3175:  0x61ED,\n\t3176:  0x61EE,\n\t3177:  0x61EF,\n\t3178:  0x61F0,\n\t3179:  0x61F1,\n\t3180:  0x61F2,\n\t3181:  0x61F3,\n\t3182:  0x61F4,\n\t3183:  0x61F6,\n\t3184:  0x61F7,\n\t3185:  0x61F8,\n\t3186:  0x61F9,\n\t3187:  0x61FA,\n\t3188:  0x61FB,\n\t3189:  0x61FC,\n\t3190:  0x61FD,\n\t3191:  0x61FE,\n\t3192:  0x6200,\n\t3193:  0x6201,\n\t3194:  0x6202,\n\t3195:  0x6203,\n\t3196:  0x6204,\n\t3197:  0x6205,\n\t3198:  0x6207,\n\t3199:  0x6209,\n\t3200:  0x6213,\n\t3201:  0x6214,\n\t3202:  0x6219,\n\t3203:  0x621C,\n\t3204:  0x621D,\n\t3205:  0x621E,\n\t3206:  0x6220,\n\t3207:  0x6223,\n\t3208:  0x6226,\n\t3209:  0x6227,\n\t3210:  0x6228,\n\t3211:  0x6229,\n\t3212:  0x622B,\n\t3213:  0x622D,\n\t3214:  0x622F,\n\t3215:  0x6230,\n\t3216:  0x6231,\n\t3217:  0x6232,\n\t3218:  0x6235,\n\t3219:  0x6236,\n\t3220:  0x6238,\n\t3221:  0x6239,\n\t3222:  0x623A,\n\t3223:  0x623B,\n\t3224:  0x623C,\n\t3225:  0x6242,\n\t3226:  0x6244,\n\t3227:  0x6245,\n\t3228:  0x6246,\n\t3229:  0x624A,\n\t3230:  0x624F,\n\t3231:  0x6250,\n\t3232:  0x6255,\n\t3233:  0x6256,\n\t3234:  0x6257,\n\t3235:  0x6259,\n\t3236:  0x625A,\n\t3237:  0x625C,\n\t3238:  0x625D,\n\t3239:  0x625E,\n\t3240:  0x625F,\n\t3241:  0x6260,\n\t3242:  0x6261,\n\t3243:  0x6262,\n\t3244:  0x6264,\n\t3245:  0x6265,\n\t3246:  0x6268,\n\t3247:  0x6271,\n\t3248:  0x6272,\n\t3249:  0x6274,\n\t3250:  0x6275,\n\t3251:  0x6277,\n\t3252:  0x6278,\n\t3253:  0x627A,\n\t3254:  0x627B,\n\t3255:  0x627D,\n\t3256:  0x6281,\n\t3257:  0x6282,\n\t3258:  0x6283,\n\t3259:  0x6285,\n\t3260:  0x6286,\n\t3261:  0x6287,\n\t3262:  0x6288,\n\t3263:  0x628B,\n\t3264:  0x628C,\n\t3265:  0x628D,\n\t3266:  0x628E,\n\t3267:  0x628F,\n\t3268:  0x6290,\n\t3269:  0x6294,\n\t3270:  0x6299,\n\t3271:  0x629C,\n\t3272:  0x629D,\n\t3273:  0x629E,\n\t3274:  0x62A3,\n\t3275:  0x62A6,\n\t3276:  0x62A7,\n\t3277:  0x62A9,\n\t3278:  0x62AA,\n\t3279:  0x62AD,\n\t3280:  0x62AE,\n\t3281:  0x62AF,\n\t3282:  0x62B0,\n\t3283:  0x62B2,\n\t3284:  0x62B3,\n\t3285:  0x62B4,\n\t3286:  0x62B6,\n\t3287:  0x62B7,\n\t3288:  0x62B8,\n\t3289:  0x62BA,\n\t3290:  0x62BE,\n\t3291:  0x62C0,\n\t3292:  0x62C1,\n\t3293:  0x62C3,\n\t3294:  0x62CB,\n\t3295:  0x62CF,\n\t3296:  0x62D1,\n\t3297:  0x62D5,\n\t3298:  0x62DD,\n\t3299:  0x62DE,\n\t3300:  0x62E0,\n\t3301:  0x62E1,\n\t3302:  0x62E4,\n\t3303:  0x62EA,\n\t3304:  0x62EB,\n\t3305:  0x62F0,\n\t3306:  0x62F2,\n\t3307:  0x62F5,\n\t3308:  0x62F8,\n\t3309:  0x62F9,\n\t3310:  0x62FA,\n\t3311:  0x62FB,\n\t3312:  0x6300,\n\t3313:  0x6303,\n\t3314:  0x6304,\n\t3315:  0x6305,\n\t3316:  0x6306,\n\t3317:  0x630A,\n\t3318:  0x630B,\n\t3319:  0x630C,\n\t3320:  0x630D,\n\t3321:  0x630F,\n\t3322:  0x6310,\n\t3323:  0x6312,\n\t3324:  0x6313,\n\t3325:  0x6314,\n\t3326:  0x6315,\n\t3327:  0x6317,\n\t3328:  0x6318,\n\t3329:  0x6319,\n\t3330:  0x631C,\n\t3331:  0x6326,\n\t3332:  0x6327,\n\t3333:  0x6329,\n\t3334:  0x632C,\n\t3335:  0x632D,\n\t3336:  0x632E,\n\t3337:  0x6330,\n\t3338:  0x6331,\n\t3339:  0x6333,\n\t3340:  0x6334,\n\t3341:  0x6335,\n\t3342:  0x6336,\n\t3343:  0x6337,\n\t3344:  0x6338,\n\t3345:  0x633B,\n\t3346:  0x633C,\n\t3347:  0x633E,\n\t3348:  0x633F,\n\t3349:  0x6340,\n\t3350:  0x6341,\n\t3351:  0x6344,\n\t3352:  0x6347,\n\t3353:  0x6348,\n\t3354:  0x634A,\n\t3355:  0x6351,\n\t3356:  0x6352,\n\t3357:  0x6353,\n\t3358:  0x6354,\n\t3359:  0x6356,\n\t3360:  0x6357,\n\t3361:  0x6358,\n\t3362:  0x6359,\n\t3363:  0x635A,\n\t3364:  0x635B,\n\t3365:  0x635C,\n\t3366:  0x635D,\n\t3367:  0x6360,\n\t3368:  0x6364,\n\t3369:  0x6365,\n\t3370:  0x6366,\n\t3371:  0x6368,\n\t3372:  0x636A,\n\t3373:  0x636B,\n\t3374:  0x636C,\n\t3375:  0x636F,\n\t3376:  0x6370,\n\t3377:  0x6372,\n\t3378:  0x6373,\n\t3379:  0x6374,\n\t3380:  0x6375,\n\t3381:  0x6378,\n\t3382:  0x6379,\n\t3383:  0x637C,\n\t3384:  0x637D,\n\t3385:  0x637E,\n\t3386:  0x637F,\n\t3387:  0x6381,\n\t3388:  0x6383,\n\t3389:  0x6384,\n\t3390:  0x6385,\n\t3391:  0x6386,\n\t3392:  0x638B,\n\t3393:  0x638D,\n\t3394:  0x6391,\n\t3395:  0x6393,\n\t3396:  0x6394,\n\t3397:  0x6395,\n\t3398:  0x6397,\n\t3399:  0x6399,\n\t3400:  0x639A,\n\t3401:  0x639B,\n\t3402:  0x639C,\n\t3403:  0x639D,\n\t3404:  0x639E,\n\t3405:  0x639F,\n\t3406:  0x63A1,\n\t3407:  0x63A4,\n\t3408:  0x63A6,\n\t3409:  0x63AB,\n\t3410:  0x63AF,\n\t3411:  0x63B1,\n\t3412:  0x63B2,\n\t3413:  0x63B5,\n\t3414:  0x63B6,\n\t3415:  0x63B9,\n\t3416:  0x63BB,\n\t3417:  0x63BD,\n\t3418:  0x63BF,\n\t3419:  0x63C0,\n\t3420:  0x63C1,\n\t3421:  0x63C2,\n\t3422:  0x63C3,\n\t3423:  0x63C5,\n\t3424:  0x63C7,\n\t3425:  0x63C8,\n\t3426:  0x63CA,\n\t3427:  0x63CB,\n\t3428:  0x63CC,\n\t3429:  0x63D1,\n\t3430:  0x63D3,\n\t3431:  0x63D4,\n\t3432:  0x63D5,\n\t3433:  0x63D7,\n\t3434:  0x63D8,\n\t3435:  0x63D9,\n\t3436:  0x63DA,\n\t3437:  0x63DB,\n\t3438:  0x63DC,\n\t3439:  0x63DD,\n\t3440:  0x63DF,\n\t3441:  0x63E2,\n\t3442:  0x63E4,\n\t3443:  0x63E5,\n\t3444:  0x63E6,\n\t3445:  0x63E7,\n\t3446:  0x63E8,\n\t3447:  0x63EB,\n\t3448:  0x63EC,\n\t3449:  0x63EE,\n\t3450:  0x63EF,\n\t3451:  0x63F0,\n\t3452:  0x63F1,\n\t3453:  0x63F3,\n\t3454:  0x63F5,\n\t3455:  0x63F7,\n\t3456:  0x63F9,\n\t3457:  0x63FA,\n\t3458:  0x63FB,\n\t3459:  0x63FC,\n\t3460:  0x63FE,\n\t3461:  0x6403,\n\t3462:  0x6404,\n\t3463:  0x6406,\n\t3464:  0x6407,\n\t3465:  0x6408,\n\t3466:  0x6409,\n\t3467:  0x640A,\n\t3468:  0x640D,\n\t3469:  0x640E,\n\t3470:  0x6411,\n\t3471:  0x6412,\n\t3472:  0x6415,\n\t3473:  0x6416,\n\t3474:  0x6417,\n\t3475:  0x6418,\n\t3476:  0x6419,\n\t3477:  0x641A,\n\t3478:  0x641D,\n\t3479:  0x641F,\n\t3480:  0x6422,\n\t3481:  0x6423,\n\t3482:  0x6424,\n\t3483:  0x6425,\n\t3484:  0x6427,\n\t3485:  0x6428,\n\t3486:  0x6429,\n\t3487:  0x642B,\n\t3488:  0x642E,\n\t3489:  0x642F,\n\t3490:  0x6430,\n\t3491:  0x6431,\n\t3492:  0x6432,\n\t3493:  0x6433,\n\t3494:  0x6435,\n\t3495:  0x6436,\n\t3496:  0x6437,\n\t3497:  0x6438,\n\t3498:  0x6439,\n\t3499:  0x643B,\n\t3500:  0x643C,\n\t3501:  0x643E,\n\t3502:  0x6440,\n\t3503:  0x6442,\n\t3504:  0x6443,\n\t3505:  0x6449,\n\t3506:  0x644B,\n\t3507:  0x644C,\n\t3508:  0x644D,\n\t3509:  0x644E,\n\t3510:  0x644F,\n\t3511:  0x6450,\n\t3512:  0x6451,\n\t3513:  0x6453,\n\t3514:  0x6455,\n\t3515:  0x6456,\n\t3516:  0x6457,\n\t3517:  0x6459,\n\t3518:  0x645A,\n\t3519:  0x645B,\n\t3520:  0x645C,\n\t3521:  0x645D,\n\t3522:  0x645F,\n\t3523:  0x6460,\n\t3524:  0x6461,\n\t3525:  0x6462,\n\t3526:  0x6463,\n\t3527:  0x6464,\n\t3528:  0x6465,\n\t3529:  0x6466,\n\t3530:  0x6468,\n\t3531:  0x646A,\n\t3532:  0x646B,\n\t3533:  0x646C,\n\t3534:  0x646E,\n\t3535:  0x646F,\n\t3536:  0x6470,\n\t3537:  0x6471,\n\t3538:  0x6472,\n\t3539:  0x6473,\n\t3540:  0x6474,\n\t3541:  0x6475,\n\t3542:  0x6476,\n\t3543:  0x6477,\n\t3544:  0x647B,\n\t3545:  0x647C,\n\t3546:  0x647D,\n\t3547:  0x647E,\n\t3548:  0x647F,\n\t3549:  0x6480,\n\t3550:  0x6481,\n\t3551:  0x6483,\n\t3552:  0x6486,\n\t3553:  0x6488,\n\t3554:  0x6489,\n\t3555:  0x648A,\n\t3556:  0x648B,\n\t3557:  0x648C,\n\t3558:  0x648D,\n\t3559:  0x648E,\n\t3560:  0x648F,\n\t3561:  0x6490,\n\t3562:  0x6493,\n\t3563:  0x6494,\n\t3564:  0x6497,\n\t3565:  0x6498,\n\t3566:  0x649A,\n\t3567:  0x649B,\n\t3568:  0x649C,\n\t3569:  0x649D,\n\t3570:  0x649F,\n\t3571:  0x64A0,\n\t3572:  0x64A1,\n\t3573:  0x64A2,\n\t3574:  0x64A3,\n\t3575:  0x64A5,\n\t3576:  0x64A6,\n\t3577:  0x64A7,\n\t3578:  0x64A8,\n\t3579:  0x64AA,\n\t3580:  0x64AB,\n\t3581:  0x64AF,\n\t3582:  0x64B1,\n\t3583:  0x64B2,\n\t3584:  0x64B3,\n\t3585:  0x64B4,\n\t3586:  0x64B6,\n\t3587:  0x64B9,\n\t3588:  0x64BB,\n\t3589:  0x64BD,\n\t3590:  0x64BE,\n\t3591:  0x64BF,\n\t3592:  0x64C1,\n\t3593:  0x64C3,\n\t3594:  0x64C4,\n\t3595:  0x64C6,\n\t3596:  0x64C7,\n\t3597:  0x64C8,\n\t3598:  0x64C9,\n\t3599:  0x64CA,\n\t3600:  0x64CB,\n\t3601:  0x64CC,\n\t3602:  0x64CF,\n\t3603:  0x64D1,\n\t3604:  0x64D3,\n\t3605:  0x64D4,\n\t3606:  0x64D5,\n\t3607:  0x64D6,\n\t3608:  0x64D9,\n\t3609:  0x64DA,\n\t3610:  0x64DB,\n\t3611:  0x64DC,\n\t3612:  0x64DD,\n\t3613:  0x64DF,\n\t3614:  0x64E0,\n\t3615:  0x64E1,\n\t3616:  0x64E3,\n\t3617:  0x64E5,\n\t3618:  0x64E7,\n\t3619:  0x64E8,\n\t3620:  0x64E9,\n\t3621:  0x64EA,\n\t3622:  0x64EB,\n\t3623:  0x64EC,\n\t3624:  0x64ED,\n\t3625:  0x64EE,\n\t3626:  0x64EF,\n\t3627:  0x64F0,\n\t3628:  0x64F1,\n\t3629:  0x64F2,\n\t3630:  0x64F3,\n\t3631:  0x64F4,\n\t3632:  0x64F5,\n\t3633:  0x64F6,\n\t3634:  0x64F7,\n\t3635:  0x64F8,\n\t3636:  0x64F9,\n\t3637:  0x64FA,\n\t3638:  0x64FB,\n\t3639:  0x64FC,\n\t3640:  0x64FD,\n\t3641:  0x64FE,\n\t3642:  0x64FF,\n\t3643:  0x6501,\n\t3644:  0x6502,\n\t3645:  0x6503,\n\t3646:  0x6504,\n\t3647:  0x6505,\n\t3648:  0x6506,\n\t3649:  0x6507,\n\t3650:  0x6508,\n\t3651:  0x650A,\n\t3652:  0x650B,\n\t3653:  0x650C,\n\t3654:  0x650D,\n\t3655:  0x650E,\n\t3656:  0x650F,\n\t3657:  0x6510,\n\t3658:  0x6511,\n\t3659:  0x6513,\n\t3660:  0x6514,\n\t3661:  0x6515,\n\t3662:  0x6516,\n\t3663:  0x6517,\n\t3664:  0x6519,\n\t3665:  0x651A,\n\t3666:  0x651B,\n\t3667:  0x651C,\n\t3668:  0x651D,\n\t3669:  0x651E,\n\t3670:  0x651F,\n\t3671:  0x6520,\n\t3672:  0x6521,\n\t3673:  0x6522,\n\t3674:  0x6523,\n\t3675:  0x6524,\n\t3676:  0x6526,\n\t3677:  0x6527,\n\t3678:  0x6528,\n\t3679:  0x6529,\n\t3680:  0x652A,\n\t3681:  0x652C,\n\t3682:  0x652D,\n\t3683:  0x6530,\n\t3684:  0x6531,\n\t3685:  0x6532,\n\t3686:  0x6533,\n\t3687:  0x6537,\n\t3688:  0x653A,\n\t3689:  0x653C,\n\t3690:  0x653D,\n\t3691:  0x6540,\n\t3692:  0x6541,\n\t3693:  0x6542,\n\t3694:  0x6543,\n\t3695:  0x6544,\n\t3696:  0x6546,\n\t3697:  0x6547,\n\t3698:  0x654A,\n\t3699:  0x654B,\n\t3700:  0x654D,\n\t3701:  0x654E,\n\t3702:  0x6550,\n\t3703:  0x6552,\n\t3704:  0x6553,\n\t3705:  0x6554,\n\t3706:  0x6557,\n\t3707:  0x6558,\n\t3708:  0x655A,\n\t3709:  0x655C,\n\t3710:  0x655F,\n\t3711:  0x6560,\n\t3712:  0x6561,\n\t3713:  0x6564,\n\t3714:  0x6565,\n\t3715:  0x6567,\n\t3716:  0x6568,\n\t3717:  0x6569,\n\t3718:  0x656A,\n\t3719:  0x656D,\n\t3720:  0x656E,\n\t3721:  0x656F,\n\t3722:  0x6571,\n\t3723:  0x6573,\n\t3724:  0x6575,\n\t3725:  0x6576,\n\t3726:  0x6578,\n\t3727:  0x6579,\n\t3728:  0x657A,\n\t3729:  0x657B,\n\t3730:  0x657C,\n\t3731:  0x657D,\n\t3732:  0x657E,\n\t3733:  0x657F,\n\t3734:  0x6580,\n\t3735:  0x6581,\n\t3736:  0x6582,\n\t3737:  0x6583,\n\t3738:  0x6584,\n\t3739:  0x6585,\n\t3740:  0x6586,\n\t3741:  0x6588,\n\t3742:  0x6589,\n\t3743:  0x658A,\n\t3744:  0x658D,\n\t3745:  0x658E,\n\t3746:  0x658F,\n\t3747:  0x6592,\n\t3748:  0x6594,\n\t3749:  0x6595,\n\t3750:  0x6596,\n\t3751:  0x6598,\n\t3752:  0x659A,\n\t3753:  0x659D,\n\t3754:  0x659E,\n\t3755:  0x65A0,\n\t3756:  0x65A2,\n\t3757:  0x65A3,\n\t3758:  0x65A6,\n\t3759:  0x65A8,\n\t3760:  0x65AA,\n\t3761:  0x65AC,\n\t3762:  0x65AE,\n\t3763:  0x65B1,\n\t3764:  0x65B2,\n\t3765:  0x65B3,\n\t3766:  0x65B4,\n\t3767:  0x65B5,\n\t3768:  0x65B6,\n\t3769:  0x65B7,\n\t3770:  0x65B8,\n\t3771:  0x65BA,\n\t3772:  0x65BB,\n\t3773:  0x65BE,\n\t3774:  0x65BF,\n\t3775:  0x65C0,\n\t3776:  0x65C2,\n\t3777:  0x65C7,\n\t3778:  0x65C8,\n\t3779:  0x65C9,\n\t3780:  0x65CA,\n\t3781:  0x65CD,\n\t3782:  0x65D0,\n\t3783:  0x65D1,\n\t3784:  0x65D3,\n\t3785:  0x65D4,\n\t3786:  0x65D5,\n\t3787:  0x65D8,\n\t3788:  0x65D9,\n\t3789:  0x65DA,\n\t3790:  0x65DB,\n\t3791:  0x65DC,\n\t3792:  0x65DD,\n\t3793:  0x65DE,\n\t3794:  0x65DF,\n\t3795:  0x65E1,\n\t3796:  0x65E3,\n\t3797:  0x65E4,\n\t3798:  0x65EA,\n\t3799:  0x65EB,\n\t3800:  0x65F2,\n\t3801:  0x65F3,\n\t3802:  0x65F4,\n\t3803:  0x65F5,\n\t3804:  0x65F8,\n\t3805:  0x65F9,\n\t3806:  0x65FB,\n\t3807:  0x65FC,\n\t3808:  0x65FD,\n\t3809:  0x65FE,\n\t3810:  0x65FF,\n\t3811:  0x6601,\n\t3812:  0x6604,\n\t3813:  0x6605,\n\t3814:  0x6607,\n\t3815:  0x6608,\n\t3816:  0x6609,\n\t3817:  0x660B,\n\t3818:  0x660D,\n\t3819:  0x6610,\n\t3820:  0x6611,\n\t3821:  0x6612,\n\t3822:  0x6616,\n\t3823:  0x6617,\n\t3824:  0x6618,\n\t3825:  0x661A,\n\t3826:  0x661B,\n\t3827:  0x661C,\n\t3828:  0x661E,\n\t3829:  0x6621,\n\t3830:  0x6622,\n\t3831:  0x6623,\n\t3832:  0x6624,\n\t3833:  0x6626,\n\t3834:  0x6629,\n\t3835:  0x662A,\n\t3836:  0x662B,\n\t3837:  0x662C,\n\t3838:  0x662E,\n\t3839:  0x6630,\n\t3840:  0x6632,\n\t3841:  0x6633,\n\t3842:  0x6637,\n\t3843:  0x6638,\n\t3844:  0x6639,\n\t3845:  0x663A,\n\t3846:  0x663B,\n\t3847:  0x663D,\n\t3848:  0x663F,\n\t3849:  0x6640,\n\t3850:  0x6642,\n\t3851:  0x6644,\n\t3852:  0x6645,\n\t3853:  0x6646,\n\t3854:  0x6647,\n\t3855:  0x6648,\n\t3856:  0x6649,\n\t3857:  0x664A,\n\t3858:  0x664D,\n\t3859:  0x664E,\n\t3860:  0x6650,\n\t3861:  0x6651,\n\t3862:  0x6658,\n\t3863:  0x6659,\n\t3864:  0x665B,\n\t3865:  0x665C,\n\t3866:  0x665D,\n\t3867:  0x665E,\n\t3868:  0x6660,\n\t3869:  0x6662,\n\t3870:  0x6663,\n\t3871:  0x6665,\n\t3872:  0x6667,\n\t3873:  0x6669,\n\t3874:  0x666A,\n\t3875:  0x666B,\n\t3876:  0x666C,\n\t3877:  0x666D,\n\t3878:  0x6671,\n\t3879:  0x6672,\n\t3880:  0x6673,\n\t3881:  0x6675,\n\t3882:  0x6678,\n\t3883:  0x6679,\n\t3884:  0x667B,\n\t3885:  0x667C,\n\t3886:  0x667D,\n\t3887:  0x667F,\n\t3888:  0x6680,\n\t3889:  0x6681,\n\t3890:  0x6683,\n\t3891:  0x6685,\n\t3892:  0x6686,\n\t3893:  0x6688,\n\t3894:  0x6689,\n\t3895:  0x668A,\n\t3896:  0x668B,\n\t3897:  0x668D,\n\t3898:  0x668E,\n\t3899:  0x668F,\n\t3900:  0x6690,\n\t3901:  0x6692,\n\t3902:  0x6693,\n\t3903:  0x6694,\n\t3904:  0x6695,\n\t3905:  0x6698,\n\t3906:  0x6699,\n\t3907:  0x669A,\n\t3908:  0x669B,\n\t3909:  0x669C,\n\t3910:  0x669E,\n\t3911:  0x669F,\n\t3912:  0x66A0,\n\t3913:  0x66A1,\n\t3914:  0x66A2,\n\t3915:  0x66A3,\n\t3916:  0x66A4,\n\t3917:  0x66A5,\n\t3918:  0x66A6,\n\t3919:  0x66A9,\n\t3920:  0x66AA,\n\t3921:  0x66AB,\n\t3922:  0x66AC,\n\t3923:  0x66AD,\n\t3924:  0x66AF,\n\t3925:  0x66B0,\n\t3926:  0x66B1,\n\t3927:  0x66B2,\n\t3928:  0x66B3,\n\t3929:  0x66B5,\n\t3930:  0x66B6,\n\t3931:  0x66B7,\n\t3932:  0x66B8,\n\t3933:  0x66BA,\n\t3934:  0x66BB,\n\t3935:  0x66BC,\n\t3936:  0x66BD,\n\t3937:  0x66BF,\n\t3938:  0x66C0,\n\t3939:  0x66C1,\n\t3940:  0x66C2,\n\t3941:  0x66C3,\n\t3942:  0x66C4,\n\t3943:  0x66C5,\n\t3944:  0x66C6,\n\t3945:  0x66C7,\n\t3946:  0x66C8,\n\t3947:  0x66C9,\n\t3948:  0x66CA,\n\t3949:  0x66CB,\n\t3950:  0x66CC,\n\t3951:  0x66CD,\n\t3952:  0x66CE,\n\t3953:  0x66CF,\n\t3954:  0x66D0,\n\t3955:  0x66D1,\n\t3956:  0x66D2,\n\t3957:  0x66D3,\n\t3958:  0x66D4,\n\t3959:  0x66D5,\n\t3960:  0x66D6,\n\t3961:  0x66D7,\n\t3962:  0x66D8,\n\t3963:  0x66DA,\n\t3964:  0x66DE,\n\t3965:  0x66DF,\n\t3966:  0x66E0,\n\t3967:  0x66E1,\n\t3968:  0x66E2,\n\t3969:  0x66E3,\n\t3970:  0x66E4,\n\t3971:  0x66E5,\n\t3972:  0x66E7,\n\t3973:  0x66E8,\n\t3974:  0x66EA,\n\t3975:  0x66EB,\n\t3976:  0x66EC,\n\t3977:  0x66ED,\n\t3978:  0x66EE,\n\t3979:  0x66EF,\n\t3980:  0x66F1,\n\t3981:  0x66F5,\n\t3982:  0x66F6,\n\t3983:  0x66F8,\n\t3984:  0x66FA,\n\t3985:  0x66FB,\n\t3986:  0x66FD,\n\t3987:  0x6701,\n\t3988:  0x6702,\n\t3989:  0x6703,\n\t3990:  0x6704,\n\t3991:  0x6705,\n\t3992:  0x6706,\n\t3993:  0x6707,\n\t3994:  0x670C,\n\t3995:  0x670E,\n\t3996:  0x670F,\n\t3997:  0x6711,\n\t3998:  0x6712,\n\t3999:  0x6713,\n\t4000:  0x6716,\n\t4001:  0x6718,\n\t4002:  0x6719,\n\t4003:  0x671A,\n\t4004:  0x671C,\n\t4005:  0x671E,\n\t4006:  0x6720,\n\t4007:  0x6721,\n\t4008:  0x6722,\n\t4009:  0x6723,\n\t4010:  0x6724,\n\t4011:  0x6725,\n\t4012:  0x6727,\n\t4013:  0x6729,\n\t4014:  0x672E,\n\t4015:  0x6730,\n\t4016:  0x6732,\n\t4017:  0x6733,\n\t4018:  0x6736,\n\t4019:  0x6737,\n\t4020:  0x6738,\n\t4021:  0x6739,\n\t4022:  0x673B,\n\t4023:  0x673C,\n\t4024:  0x673E,\n\t4025:  0x673F,\n\t4026:  0x6741,\n\t4027:  0x6744,\n\t4028:  0x6745,\n\t4029:  0x6747,\n\t4030:  0x674A,\n\t4031:  0x674B,\n\t4032:  0x674D,\n\t4033:  0x6752,\n\t4034:  0x6754,\n\t4035:  0x6755,\n\t4036:  0x6757,\n\t4037:  0x6758,\n\t4038:  0x6759,\n\t4039:  0x675A,\n\t4040:  0x675B,\n\t4041:  0x675D,\n\t4042:  0x6762,\n\t4043:  0x6763,\n\t4044:  0x6764,\n\t4045:  0x6766,\n\t4046:  0x6767,\n\t4047:  0x676B,\n\t4048:  0x676C,\n\t4049:  0x676E,\n\t4050:  0x6771,\n\t4051:  0x6774,\n\t4052:  0x6776,\n\t4053:  0x6778,\n\t4054:  0x6779,\n\t4055:  0x677A,\n\t4056:  0x677B,\n\t4057:  0x677D,\n\t4058:  0x6780,\n\t4059:  0x6782,\n\t4060:  0x6783,\n\t4061:  0x6785,\n\t4062:  0x6786,\n\t4063:  0x6788,\n\t4064:  0x678A,\n\t4065:  0x678C,\n\t4066:  0x678D,\n\t4067:  0x678E,\n\t4068:  0x678F,\n\t4069:  0x6791,\n\t4070:  0x6792,\n\t4071:  0x6793,\n\t4072:  0x6794,\n\t4073:  0x6796,\n\t4074:  0x6799,\n\t4075:  0x679B,\n\t4076:  0x679F,\n\t4077:  0x67A0,\n\t4078:  0x67A1,\n\t4079:  0x67A4,\n\t4080:  0x67A6,\n\t4081:  0x67A9,\n\t4082:  0x67AC,\n\t4083:  0x67AE,\n\t4084:  0x67B1,\n\t4085:  0x67B2,\n\t4086:  0x67B4,\n\t4087:  0x67B9,\n\t4088:  0x67BA,\n\t4089:  0x67BB,\n\t4090:  0x67BC,\n\t4091:  0x67BD,\n\t4092:  0x67BE,\n\t4093:  0x67BF,\n\t4094:  0x67C0,\n\t4095:  0x67C2,\n\t4096:  0x67C5,\n\t4097:  0x67C6,\n\t4098:  0x67C7,\n\t4099:  0x67C8,\n\t4100:  0x67C9,\n\t4101:  0x67CA,\n\t4102:  0x67CB,\n\t4103:  0x67CC,\n\t4104:  0x67CD,\n\t4105:  0x67CE,\n\t4106:  0x67D5,\n\t4107:  0x67D6,\n\t4108:  0x67D7,\n\t4109:  0x67DB,\n\t4110:  0x67DF,\n\t4111:  0x67E1,\n\t4112:  0x67E3,\n\t4113:  0x67E4,\n\t4114:  0x67E6,\n\t4115:  0x67E7,\n\t4116:  0x67E8,\n\t4117:  0x67EA,\n\t4118:  0x67EB,\n\t4119:  0x67ED,\n\t4120:  0x67EE,\n\t4121:  0x67F2,\n\t4122:  0x67F5,\n\t4123:  0x67F6,\n\t4124:  0x67F7,\n\t4125:  0x67F8,\n\t4126:  0x67F9,\n\t4127:  0x67FA,\n\t4128:  0x67FB,\n\t4129:  0x67FC,\n\t4130:  0x67FE,\n\t4131:  0x6801,\n\t4132:  0x6802,\n\t4133:  0x6803,\n\t4134:  0x6804,\n\t4135:  0x6806,\n\t4136:  0x680D,\n\t4137:  0x6810,\n\t4138:  0x6812,\n\t4139:  0x6814,\n\t4140:  0x6815,\n\t4141:  0x6818,\n\t4142:  0x6819,\n\t4143:  0x681A,\n\t4144:  0x681B,\n\t4145:  0x681C,\n\t4146:  0x681E,\n\t4147:  0x681F,\n\t4148:  0x6820,\n\t4149:  0x6822,\n\t4150:  0x6823,\n\t4151:  0x6824,\n\t4152:  0x6825,\n\t4153:  0x6826,\n\t4154:  0x6827,\n\t4155:  0x6828,\n\t4156:  0x682B,\n\t4157:  0x682C,\n\t4158:  0x682D,\n\t4159:  0x682E,\n\t4160:  0x682F,\n\t4161:  0x6830,\n\t4162:  0x6831,\n\t4163:  0x6834,\n\t4164:  0x6835,\n\t4165:  0x6836,\n\t4166:  0x683A,\n\t4167:  0x683B,\n\t4168:  0x683F,\n\t4169:  0x6847,\n\t4170:  0x684B,\n\t4171:  0x684D,\n\t4172:  0x684F,\n\t4173:  0x6852,\n\t4174:  0x6856,\n\t4175:  0x6857,\n\t4176:  0x6858,\n\t4177:  0x6859,\n\t4178:  0x685A,\n\t4179:  0x685B,\n\t4180:  0x685C,\n\t4181:  0x685D,\n\t4182:  0x685E,\n\t4183:  0x685F,\n\t4184:  0x686A,\n\t4185:  0x686C,\n\t4186:  0x686D,\n\t4187:  0x686E,\n\t4188:  0x686F,\n\t4189:  0x6870,\n\t4190:  0x6871,\n\t4191:  0x6872,\n\t4192:  0x6873,\n\t4193:  0x6875,\n\t4194:  0x6878,\n\t4195:  0x6879,\n\t4196:  0x687A,\n\t4197:  0x687B,\n\t4198:  0x687C,\n\t4199:  0x687D,\n\t4200:  0x687E,\n\t4201:  0x687F,\n\t4202:  0x6880,\n\t4203:  0x6882,\n\t4204:  0x6884,\n\t4205:  0x6887,\n\t4206:  0x6888,\n\t4207:  0x6889,\n\t4208:  0x688A,\n\t4209:  0x688B,\n\t4210:  0x688C,\n\t4211:  0x688D,\n\t4212:  0x688E,\n\t4213:  0x6890,\n\t4214:  0x6891,\n\t4215:  0x6892,\n\t4216:  0x6894,\n\t4217:  0x6895,\n\t4218:  0x6896,\n\t4219:  0x6898,\n\t4220:  0x6899,\n\t4221:  0x689A,\n\t4222:  0x689B,\n\t4223:  0x689C,\n\t4224:  0x689D,\n\t4225:  0x689E,\n\t4226:  0x689F,\n\t4227:  0x68A0,\n\t4228:  0x68A1,\n\t4229:  0x68A3,\n\t4230:  0x68A4,\n\t4231:  0x68A5,\n\t4232:  0x68A9,\n\t4233:  0x68AA,\n\t4234:  0x68AB,\n\t4235:  0x68AC,\n\t4236:  0x68AE,\n\t4237:  0x68B1,\n\t4238:  0x68B2,\n\t4239:  0x68B4,\n\t4240:  0x68B6,\n\t4241:  0x68B7,\n\t4242:  0x68B8,\n\t4243:  0x68B9,\n\t4244:  0x68BA,\n\t4245:  0x68BB,\n\t4246:  0x68BC,\n\t4247:  0x68BD,\n\t4248:  0x68BE,\n\t4249:  0x68BF,\n\t4250:  0x68C1,\n\t4251:  0x68C3,\n\t4252:  0x68C4,\n\t4253:  0x68C5,\n\t4254:  0x68C6,\n\t4255:  0x68C7,\n\t4256:  0x68C8,\n\t4257:  0x68CA,\n\t4258:  0x68CC,\n\t4259:  0x68CE,\n\t4260:  0x68CF,\n\t4261:  0x68D0,\n\t4262:  0x68D1,\n\t4263:  0x68D3,\n\t4264:  0x68D4,\n\t4265:  0x68D6,\n\t4266:  0x68D7,\n\t4267:  0x68D9,\n\t4268:  0x68DB,\n\t4269:  0x68DC,\n\t4270:  0x68DD,\n\t4271:  0x68DE,\n\t4272:  0x68DF,\n\t4273:  0x68E1,\n\t4274:  0x68E2,\n\t4275:  0x68E4,\n\t4276:  0x68E5,\n\t4277:  0x68E6,\n\t4278:  0x68E7,\n\t4279:  0x68E8,\n\t4280:  0x68E9,\n\t4281:  0x68EA,\n\t4282:  0x68EB,\n\t4283:  0x68EC,\n\t4284:  0x68ED,\n\t4285:  0x68EF,\n\t4286:  0x68F2,\n\t4287:  0x68F3,\n\t4288:  0x68F4,\n\t4289:  0x68F6,\n\t4290:  0x68F7,\n\t4291:  0x68F8,\n\t4292:  0x68FB,\n\t4293:  0x68FD,\n\t4294:  0x68FE,\n\t4295:  0x68FF,\n\t4296:  0x6900,\n\t4297:  0x6902,\n\t4298:  0x6903,\n\t4299:  0x6904,\n\t4300:  0x6906,\n\t4301:  0x6907,\n\t4302:  0x6908,\n\t4303:  0x6909,\n\t4304:  0x690A,\n\t4305:  0x690C,\n\t4306:  0x690F,\n\t4307:  0x6911,\n\t4308:  0x6913,\n\t4309:  0x6914,\n\t4310:  0x6915,\n\t4311:  0x6916,\n\t4312:  0x6917,\n\t4313:  0x6918,\n\t4314:  0x6919,\n\t4315:  0x691A,\n\t4316:  0x691B,\n\t4317:  0x691C,\n\t4318:  0x691D,\n\t4319:  0x691E,\n\t4320:  0x6921,\n\t4321:  0x6922,\n\t4322:  0x6923,\n\t4323:  0x6925,\n\t4324:  0x6926,\n\t4325:  0x6927,\n\t4326:  0x6928,\n\t4327:  0x6929,\n\t4328:  0x692A,\n\t4329:  0x692B,\n\t4330:  0x692C,\n\t4331:  0x692E,\n\t4332:  0x692F,\n\t4333:  0x6931,\n\t4334:  0x6932,\n\t4335:  0x6933,\n\t4336:  0x6935,\n\t4337:  0x6936,\n\t4338:  0x6937,\n\t4339:  0x6938,\n\t4340:  0x693A,\n\t4341:  0x693B,\n\t4342:  0x693C,\n\t4343:  0x693E,\n\t4344:  0x6940,\n\t4345:  0x6941,\n\t4346:  0x6943,\n\t4347:  0x6944,\n\t4348:  0x6945,\n\t4349:  0x6946,\n\t4350:  0x6947,\n\t4351:  0x6948,\n\t4352:  0x6949,\n\t4353:  0x694A,\n\t4354:  0x694B,\n\t4355:  0x694C,\n\t4356:  0x694D,\n\t4357:  0x694E,\n\t4358:  0x694F,\n\t4359:  0x6950,\n\t4360:  0x6951,\n\t4361:  0x6952,\n\t4362:  0x6953,\n\t4363:  0x6955,\n\t4364:  0x6956,\n\t4365:  0x6958,\n\t4366:  0x6959,\n\t4367:  0x695B,\n\t4368:  0x695C,\n\t4369:  0x695F,\n\t4370:  0x6961,\n\t4371:  0x6962,\n\t4372:  0x6964,\n\t4373:  0x6965,\n\t4374:  0x6967,\n\t4375:  0x6968,\n\t4376:  0x6969,\n\t4377:  0x696A,\n\t4378:  0x696C,\n\t4379:  0x696D,\n\t4380:  0x696F,\n\t4381:  0x6970,\n\t4382:  0x6972,\n\t4383:  0x6973,\n\t4384:  0x6974,\n\t4385:  0x6975,\n\t4386:  0x6976,\n\t4387:  0x697A,\n\t4388:  0x697B,\n\t4389:  0x697D,\n\t4390:  0x697E,\n\t4391:  0x697F,\n\t4392:  0x6981,\n\t4393:  0x6983,\n\t4394:  0x6985,\n\t4395:  0x698A,\n\t4396:  0x698B,\n\t4397:  0x698C,\n\t4398:  0x698E,\n\t4399:  0x698F,\n\t4400:  0x6990,\n\t4401:  0x6991,\n\t4402:  0x6992,\n\t4403:  0x6993,\n\t4404:  0x6996,\n\t4405:  0x6997,\n\t4406:  0x6999,\n\t4407:  0x699A,\n\t4408:  0x699D,\n\t4409:  0x699E,\n\t4410:  0x699F,\n\t4411:  0x69A0,\n\t4412:  0x69A1,\n\t4413:  0x69A2,\n\t4414:  0x69A3,\n\t4415:  0x69A4,\n\t4416:  0x69A5,\n\t4417:  0x69A6,\n\t4418:  0x69A9,\n\t4419:  0x69AA,\n\t4420:  0x69AC,\n\t4421:  0x69AE,\n\t4422:  0x69AF,\n\t4423:  0x69B0,\n\t4424:  0x69B2,\n\t4425:  0x69B3,\n\t4426:  0x69B5,\n\t4427:  0x69B6,\n\t4428:  0x69B8,\n\t4429:  0x69B9,\n\t4430:  0x69BA,\n\t4431:  0x69BC,\n\t4432:  0x69BD,\n\t4433:  0x69BE,\n\t4434:  0x69BF,\n\t4435:  0x69C0,\n\t4436:  0x69C2,\n\t4437:  0x69C3,\n\t4438:  0x69C4,\n\t4439:  0x69C5,\n\t4440:  0x69C6,\n\t4441:  0x69C7,\n\t4442:  0x69C8,\n\t4443:  0x69C9,\n\t4444:  0x69CB,\n\t4445:  0x69CD,\n\t4446:  0x69CF,\n\t4447:  0x69D1,\n\t4448:  0x69D2,\n\t4449:  0x69D3,\n\t4450:  0x69D5,\n\t4451:  0x69D6,\n\t4452:  0x69D7,\n\t4453:  0x69D8,\n\t4454:  0x69D9,\n\t4455:  0x69DA,\n\t4456:  0x69DC,\n\t4457:  0x69DD,\n\t4458:  0x69DE,\n\t4459:  0x69E1,\n\t4460:  0x69E2,\n\t4461:  0x69E3,\n\t4462:  0x69E4,\n\t4463:  0x69E5,\n\t4464:  0x69E6,\n\t4465:  0x69E7,\n\t4466:  0x69E8,\n\t4467:  0x69E9,\n\t4468:  0x69EA,\n\t4469:  0x69EB,\n\t4470:  0x69EC,\n\t4471:  0x69EE,\n\t4472:  0x69EF,\n\t4473:  0x69F0,\n\t4474:  0x69F1,\n\t4475:  0x69F3,\n\t4476:  0x69F4,\n\t4477:  0x69F5,\n\t4478:  0x69F6,\n\t4479:  0x69F7,\n\t4480:  0x69F8,\n\t4481:  0x69F9,\n\t4482:  0x69FA,\n\t4483:  0x69FB,\n\t4484:  0x69FC,\n\t4485:  0x69FE,\n\t4486:  0x6A00,\n\t4487:  0x6A01,\n\t4488:  0x6A02,\n\t4489:  0x6A03,\n\t4490:  0x6A04,\n\t4491:  0x6A05,\n\t4492:  0x6A06,\n\t4493:  0x6A07,\n\t4494:  0x6A08,\n\t4495:  0x6A09,\n\t4496:  0x6A0B,\n\t4497:  0x6A0C,\n\t4498:  0x6A0D,\n\t4499:  0x6A0E,\n\t4500:  0x6A0F,\n\t4501:  0x6A10,\n\t4502:  0x6A11,\n\t4503:  0x6A12,\n\t4504:  0x6A13,\n\t4505:  0x6A14,\n\t4506:  0x6A15,\n\t4507:  0x6A16,\n\t4508:  0x6A19,\n\t4509:  0x6A1A,\n\t4510:  0x6A1B,\n\t4511:  0x6A1C,\n\t4512:  0x6A1D,\n\t4513:  0x6A1E,\n\t4514:  0x6A20,\n\t4515:  0x6A22,\n\t4516:  0x6A23,\n\t4517:  0x6A24,\n\t4518:  0x6A25,\n\t4519:  0x6A26,\n\t4520:  0x6A27,\n\t4521:  0x6A29,\n\t4522:  0x6A2B,\n\t4523:  0x6A2C,\n\t4524:  0x6A2D,\n\t4525:  0x6A2E,\n\t4526:  0x6A30,\n\t4527:  0x6A32,\n\t4528:  0x6A33,\n\t4529:  0x6A34,\n\t4530:  0x6A36,\n\t4531:  0x6A37,\n\t4532:  0x6A38,\n\t4533:  0x6A39,\n\t4534:  0x6A3A,\n\t4535:  0x6A3B,\n\t4536:  0x6A3C,\n\t4537:  0x6A3F,\n\t4538:  0x6A40,\n\t4539:  0x6A41,\n\t4540:  0x6A42,\n\t4541:  0x6A43,\n\t4542:  0x6A45,\n\t4543:  0x6A46,\n\t4544:  0x6A48,\n\t4545:  0x6A49,\n\t4546:  0x6A4A,\n\t4547:  0x6A4B,\n\t4548:  0x6A4C,\n\t4549:  0x6A4D,\n\t4550:  0x6A4E,\n\t4551:  0x6A4F,\n\t4552:  0x6A51,\n\t4553:  0x6A52,\n\t4554:  0x6A53,\n\t4555:  0x6A54,\n\t4556:  0x6A55,\n\t4557:  0x6A56,\n\t4558:  0x6A57,\n\t4559:  0x6A5A,\n\t4560:  0x6A5C,\n\t4561:  0x6A5D,\n\t4562:  0x6A5E,\n\t4563:  0x6A5F,\n\t4564:  0x6A60,\n\t4565:  0x6A62,\n\t4566:  0x6A63,\n\t4567:  0x6A64,\n\t4568:  0x6A66,\n\t4569:  0x6A67,\n\t4570:  0x6A68,\n\t4571:  0x6A69,\n\t4572:  0x6A6A,\n\t4573:  0x6A6B,\n\t4574:  0x6A6C,\n\t4575:  0x6A6D,\n\t4576:  0x6A6E,\n\t4577:  0x6A6F,\n\t4578:  0x6A70,\n\t4579:  0x6A72,\n\t4580:  0x6A73,\n\t4581:  0x6A74,\n\t4582:  0x6A75,\n\t4583:  0x6A76,\n\t4584:  0x6A77,\n\t4585:  0x6A78,\n\t4586:  0x6A7A,\n\t4587:  0x6A7B,\n\t4588:  0x6A7D,\n\t4589:  0x6A7E,\n\t4590:  0x6A7F,\n\t4591:  0x6A81,\n\t4592:  0x6A82,\n\t4593:  0x6A83,\n\t4594:  0x6A85,\n\t4595:  0x6A86,\n\t4596:  0x6A87,\n\t4597:  0x6A88,\n\t4598:  0x6A89,\n\t4599:  0x6A8A,\n\t4600:  0x6A8B,\n\t4601:  0x6A8C,\n\t4602:  0x6A8D,\n\t4603:  0x6A8F,\n\t4604:  0x6A92,\n\t4605:  0x6A93,\n\t4606:  0x6A94,\n\t4607:  0x6A95,\n\t4608:  0x6A96,\n\t4609:  0x6A98,\n\t4610:  0x6A99,\n\t4611:  0x6A9A,\n\t4612:  0x6A9B,\n\t4613:  0x6A9C,\n\t4614:  0x6A9D,\n\t4615:  0x6A9E,\n\t4616:  0x6A9F,\n\t4617:  0x6AA1,\n\t4618:  0x6AA2,\n\t4619:  0x6AA3,\n\t4620:  0x6AA4,\n\t4621:  0x6AA5,\n\t4622:  0x6AA6,\n\t4623:  0x6AA7,\n\t4624:  0x6AA8,\n\t4625:  0x6AAA,\n\t4626:  0x6AAD,\n\t4627:  0x6AAE,\n\t4628:  0x6AAF,\n\t4629:  0x6AB0,\n\t4630:  0x6AB1,\n\t4631:  0x6AB2,\n\t4632:  0x6AB3,\n\t4633:  0x6AB4,\n\t4634:  0x6AB5,\n\t4635:  0x6AB6,\n\t4636:  0x6AB7,\n\t4637:  0x6AB8,\n\t4638:  0x6AB9,\n\t4639:  0x6ABA,\n\t4640:  0x6ABB,\n\t4641:  0x6ABC,\n\t4642:  0x6ABD,\n\t4643:  0x6ABE,\n\t4644:  0x6ABF,\n\t4645:  0x6AC0,\n\t4646:  0x6AC1,\n\t4647:  0x6AC2,\n\t4648:  0x6AC3,\n\t4649:  0x6AC4,\n\t4650:  0x6AC5,\n\t4651:  0x6AC6,\n\t4652:  0x6AC7,\n\t4653:  0x6AC8,\n\t4654:  0x6AC9,\n\t4655:  0x6ACA,\n\t4656:  0x6ACB,\n\t4657:  0x6ACC,\n\t4658:  0x6ACD,\n\t4659:  0x6ACE,\n\t4660:  0x6ACF,\n\t4661:  0x6AD0,\n\t4662:  0x6AD1,\n\t4663:  0x6AD2,\n\t4664:  0x6AD3,\n\t4665:  0x6AD4,\n\t4666:  0x6AD5,\n\t4667:  0x6AD6,\n\t4668:  0x6AD7,\n\t4669:  0x6AD8,\n\t4670:  0x6AD9,\n\t4671:  0x6ADA,\n\t4672:  0x6ADB,\n\t4673:  0x6ADC,\n\t4674:  0x6ADD,\n\t4675:  0x6ADE,\n\t4676:  0x6ADF,\n\t4677:  0x6AE0,\n\t4678:  0x6AE1,\n\t4679:  0x6AE2,\n\t4680:  0x6AE3,\n\t4681:  0x6AE4,\n\t4682:  0x6AE5,\n\t4683:  0x6AE6,\n\t4684:  0x6AE7,\n\t4685:  0x6AE8,\n\t4686:  0x6AE9,\n\t4687:  0x6AEA,\n\t4688:  0x6AEB,\n\t4689:  0x6AEC,\n\t4690:  0x6AED,\n\t4691:  0x6AEE,\n\t4692:  0x6AEF,\n\t4693:  0x6AF0,\n\t4694:  0x6AF1,\n\t4695:  0x6AF2,\n\t4696:  0x6AF3,\n\t4697:  0x6AF4,\n\t4698:  0x6AF5,\n\t4699:  0x6AF6,\n\t4700:  0x6AF7,\n\t4701:  0x6AF8,\n\t4702:  0x6AF9,\n\t4703:  0x6AFA,\n\t4704:  0x6AFB,\n\t4705:  0x6AFC,\n\t4706:  0x6AFD,\n\t4707:  0x6AFE,\n\t4708:  0x6AFF,\n\t4709:  0x6B00,\n\t4710:  0x6B01,\n\t4711:  0x6B02,\n\t4712:  0x6B03,\n\t4713:  0x6B04,\n\t4714:  0x6B05,\n\t4715:  0x6B06,\n\t4716:  0x6B07,\n\t4717:  0x6B08,\n\t4718:  0x6B09,\n\t4719:  0x6B0A,\n\t4720:  0x6B0B,\n\t4721:  0x6B0C,\n\t4722:  0x6B0D,\n\t4723:  0x6B0E,\n\t4724:  0x6B0F,\n\t4725:  0x6B10,\n\t4726:  0x6B11,\n\t4727:  0x6B12,\n\t4728:  0x6B13,\n\t4729:  0x6B14,\n\t4730:  0x6B15,\n\t4731:  0x6B16,\n\t4732:  0x6B17,\n\t4733:  0x6B18,\n\t4734:  0x6B19,\n\t4735:  0x6B1A,\n\t4736:  0x6B1B,\n\t4737:  0x6B1C,\n\t4738:  0x6B1D,\n\t4739:  0x6B1E,\n\t4740:  0x6B1F,\n\t4741:  0x6B25,\n\t4742:  0x6B26,\n\t4743:  0x6B28,\n\t4744:  0x6B29,\n\t4745:  0x6B2A,\n\t4746:  0x6B2B,\n\t4747:  0x6B2C,\n\t4748:  0x6B2D,\n\t4749:  0x6B2E,\n\t4750:  0x6B2F,\n\t4751:  0x6B30,\n\t4752:  0x6B31,\n\t4753:  0x6B33,\n\t4754:  0x6B34,\n\t4755:  0x6B35,\n\t4756:  0x6B36,\n\t4757:  0x6B38,\n\t4758:  0x6B3B,\n\t4759:  0x6B3C,\n\t4760:  0x6B3D,\n\t4761:  0x6B3F,\n\t4762:  0x6B40,\n\t4763:  0x6B41,\n\t4764:  0x6B42,\n\t4765:  0x6B44,\n\t4766:  0x6B45,\n\t4767:  0x6B48,\n\t4768:  0x6B4A,\n\t4769:  0x6B4B,\n\t4770:  0x6B4D,\n\t4771:  0x6B4E,\n\t4772:  0x6B4F,\n\t4773:  0x6B50,\n\t4774:  0x6B51,\n\t4775:  0x6B52,\n\t4776:  0x6B53,\n\t4777:  0x6B54,\n\t4778:  0x6B55,\n\t4779:  0x6B56,\n\t4780:  0x6B57,\n\t4781:  0x6B58,\n\t4782:  0x6B5A,\n\t4783:  0x6B5B,\n\t4784:  0x6B5C,\n\t4785:  0x6B5D,\n\t4786:  0x6B5E,\n\t4787:  0x6B5F,\n\t4788:  0x6B60,\n\t4789:  0x6B61,\n\t4790:  0x6B68,\n\t4791:  0x6B69,\n\t4792:  0x6B6B,\n\t4793:  0x6B6C,\n\t4794:  0x6B6D,\n\t4795:  0x6B6E,\n\t4796:  0x6B6F,\n\t4797:  0x6B70,\n\t4798:  0x6B71,\n\t4799:  0x6B72,\n\t4800:  0x6B73,\n\t4801:  0x6B74,\n\t4802:  0x6B75,\n\t4803:  0x6B76,\n\t4804:  0x6B77,\n\t4805:  0x6B78,\n\t4806:  0x6B7A,\n\t4807:  0x6B7D,\n\t4808:  0x6B7E,\n\t4809:  0x6B7F,\n\t4810:  0x6B80,\n\t4811:  0x6B85,\n\t4812:  0x6B88,\n\t4813:  0x6B8C,\n\t4814:  0x6B8E,\n\t4815:  0x6B8F,\n\t4816:  0x6B90,\n\t4817:  0x6B91,\n\t4818:  0x6B94,\n\t4819:  0x6B95,\n\t4820:  0x6B97,\n\t4821:  0x6B98,\n\t4822:  0x6B99,\n\t4823:  0x6B9C,\n\t4824:  0x6B9D,\n\t4825:  0x6B9E,\n\t4826:  0x6B9F,\n\t4827:  0x6BA0,\n\t4828:  0x6BA2,\n\t4829:  0x6BA3,\n\t4830:  0x6BA4,\n\t4831:  0x6BA5,\n\t4832:  0x6BA6,\n\t4833:  0x6BA7,\n\t4834:  0x6BA8,\n\t4835:  0x6BA9,\n\t4836:  0x6BAB,\n\t4837:  0x6BAC,\n\t4838:  0x6BAD,\n\t4839:  0x6BAE,\n\t4840:  0x6BAF,\n\t4841:  0x6BB0,\n\t4842:  0x6BB1,\n\t4843:  0x6BB2,\n\t4844:  0x6BB6,\n\t4845:  0x6BB8,\n\t4846:  0x6BB9,\n\t4847:  0x6BBA,\n\t4848:  0x6BBB,\n\t4849:  0x6BBC,\n\t4850:  0x6BBD,\n\t4851:  0x6BBE,\n\t4852:  0x6BC0,\n\t4853:  0x6BC3,\n\t4854:  0x6BC4,\n\t4855:  0x6BC6,\n\t4856:  0x6BC7,\n\t4857:  0x6BC8,\n\t4858:  0x6BC9,\n\t4859:  0x6BCA,\n\t4860:  0x6BCC,\n\t4861:  0x6BCE,\n\t4862:  0x6BD0,\n\t4863:  0x6BD1,\n\t4864:  0x6BD8,\n\t4865:  0x6BDA,\n\t4866:  0x6BDC,\n\t4867:  0x6BDD,\n\t4868:  0x6BDE,\n\t4869:  0x6BDF,\n\t4870:  0x6BE0,\n\t4871:  0x6BE2,\n\t4872:  0x6BE3,\n\t4873:  0x6BE4,\n\t4874:  0x6BE5,\n\t4875:  0x6BE6,\n\t4876:  0x6BE7,\n\t4877:  0x6BE8,\n\t4878:  0x6BE9,\n\t4879:  0x6BEC,\n\t4880:  0x6BED,\n\t4881:  0x6BEE,\n\t4882:  0x6BF0,\n\t4883:  0x6BF1,\n\t4884:  0x6BF2,\n\t4885:  0x6BF4,\n\t4886:  0x6BF6,\n\t4887:  0x6BF7,\n\t4888:  0x6BF8,\n\t4889:  0x6BFA,\n\t4890:  0x6BFB,\n\t4891:  0x6BFC,\n\t4892:  0x6BFE,\n\t4893:  0x6BFF,\n\t4894:  0x6C00,\n\t4895:  0x6C01,\n\t4896:  0x6C02,\n\t4897:  0x6C03,\n\t4898:  0x6C04,\n\t4899:  0x6C08,\n\t4900:  0x6C09,\n\t4901:  0x6C0A,\n\t4902:  0x6C0B,\n\t4903:  0x6C0C,\n\t4904:  0x6C0E,\n\t4905:  0x6C12,\n\t4906:  0x6C17,\n\t4907:  0x6C1C,\n\t4908:  0x6C1D,\n\t4909:  0x6C1E,\n\t4910:  0x6C20,\n\t4911:  0x6C23,\n\t4912:  0x6C25,\n\t4913:  0x6C2B,\n\t4914:  0x6C2C,\n\t4915:  0x6C2D,\n\t4916:  0x6C31,\n\t4917:  0x6C33,\n\t4918:  0x6C36,\n\t4919:  0x6C37,\n\t4920:  0x6C39,\n\t4921:  0x6C3A,\n\t4922:  0x6C3B,\n\t4923:  0x6C3C,\n\t4924:  0x6C3E,\n\t4925:  0x6C3F,\n\t4926:  0x6C43,\n\t4927:  0x6C44,\n\t4928:  0x6C45,\n\t4929:  0x6C48,\n\t4930:  0x6C4B,\n\t4931:  0x6C4C,\n\t4932:  0x6C4D,\n\t4933:  0x6C4E,\n\t4934:  0x6C4F,\n\t4935:  0x6C51,\n\t4936:  0x6C52,\n\t4937:  0x6C53,\n\t4938:  0x6C56,\n\t4939:  0x6C58,\n\t4940:  0x6C59,\n\t4941:  0x6C5A,\n\t4942:  0x6C62,\n\t4943:  0x6C63,\n\t4944:  0x6C65,\n\t4945:  0x6C66,\n\t4946:  0x6C67,\n\t4947:  0x6C6B,\n\t4948:  0x6C6C,\n\t4949:  0x6C6D,\n\t4950:  0x6C6E,\n\t4951:  0x6C6F,\n\t4952:  0x6C71,\n\t4953:  0x6C73,\n\t4954:  0x6C75,\n\t4955:  0x6C77,\n\t4956:  0x6C78,\n\t4957:  0x6C7A,\n\t4958:  0x6C7B,\n\t4959:  0x6C7C,\n\t4960:  0x6C7F,\n\t4961:  0x6C80,\n\t4962:  0x6C84,\n\t4963:  0x6C87,\n\t4964:  0x6C8A,\n\t4965:  0x6C8B,\n\t4966:  0x6C8D,\n\t4967:  0x6C8E,\n\t4968:  0x6C91,\n\t4969:  0x6C92,\n\t4970:  0x6C95,\n\t4971:  0x6C96,\n\t4972:  0x6C97,\n\t4973:  0x6C98,\n\t4974:  0x6C9A,\n\t4975:  0x6C9C,\n\t4976:  0x6C9D,\n\t4977:  0x6C9E,\n\t4978:  0x6CA0,\n\t4979:  0x6CA2,\n\t4980:  0x6CA8,\n\t4981:  0x6CAC,\n\t4982:  0x6CAF,\n\t4983:  0x6CB0,\n\t4984:  0x6CB4,\n\t4985:  0x6CB5,\n\t4986:  0x6CB6,\n\t4987:  0x6CB7,\n\t4988:  0x6CBA,\n\t4989:  0x6CC0,\n\t4990:  0x6CC1,\n\t4991:  0x6CC2,\n\t4992:  0x6CC3,\n\t4993:  0x6CC6,\n\t4994:  0x6CC7,\n\t4995:  0x6CC8,\n\t4996:  0x6CCB,\n\t4997:  0x6CCD,\n\t4998:  0x6CCE,\n\t4999:  0x6CCF,\n\t5000:  0x6CD1,\n\t5001:  0x6CD2,\n\t5002:  0x6CD8,\n\t5003:  0x6CD9,\n\t5004:  0x6CDA,\n\t5005:  0x6CDC,\n\t5006:  0x6CDD,\n\t5007:  0x6CDF,\n\t5008:  0x6CE4,\n\t5009:  0x6CE6,\n\t5010:  0x6CE7,\n\t5011:  0x6CE9,\n\t5012:  0x6CEC,\n\t5013:  0x6CED,\n\t5014:  0x6CF2,\n\t5015:  0x6CF4,\n\t5016:  0x6CF9,\n\t5017:  0x6CFF,\n\t5018:  0x6D00,\n\t5019:  0x6D02,\n\t5020:  0x6D03,\n\t5021:  0x6D05,\n\t5022:  0x6D06,\n\t5023:  0x6D08,\n\t5024:  0x6D09,\n\t5025:  0x6D0A,\n\t5026:  0x6D0D,\n\t5027:  0x6D0F,\n\t5028:  0x6D10,\n\t5029:  0x6D11,\n\t5030:  0x6D13,\n\t5031:  0x6D14,\n\t5032:  0x6D15,\n\t5033:  0x6D16,\n\t5034:  0x6D18,\n\t5035:  0x6D1C,\n\t5036:  0x6D1D,\n\t5037:  0x6D1F,\n\t5038:  0x6D20,\n\t5039:  0x6D21,\n\t5040:  0x6D22,\n\t5041:  0x6D23,\n\t5042:  0x6D24,\n\t5043:  0x6D26,\n\t5044:  0x6D28,\n\t5045:  0x6D29,\n\t5046:  0x6D2C,\n\t5047:  0x6D2D,\n\t5048:  0x6D2F,\n\t5049:  0x6D30,\n\t5050:  0x6D34,\n\t5051:  0x6D36,\n\t5052:  0x6D37,\n\t5053:  0x6D38,\n\t5054:  0x6D3A,\n\t5055:  0x6D3F,\n\t5056:  0x6D40,\n\t5057:  0x6D42,\n\t5058:  0x6D44,\n\t5059:  0x6D49,\n\t5060:  0x6D4C,\n\t5061:  0x6D50,\n\t5062:  0x6D55,\n\t5063:  0x6D56,\n\t5064:  0x6D57,\n\t5065:  0x6D58,\n\t5066:  0x6D5B,\n\t5067:  0x6D5D,\n\t5068:  0x6D5F,\n\t5069:  0x6D61,\n\t5070:  0x6D62,\n\t5071:  0x6D64,\n\t5072:  0x6D65,\n\t5073:  0x6D67,\n\t5074:  0x6D68,\n\t5075:  0x6D6B,\n\t5076:  0x6D6C,\n\t5077:  0x6D6D,\n\t5078:  0x6D70,\n\t5079:  0x6D71,\n\t5080:  0x6D72,\n\t5081:  0x6D73,\n\t5082:  0x6D75,\n\t5083:  0x6D76,\n\t5084:  0x6D79,\n\t5085:  0x6D7A,\n\t5086:  0x6D7B,\n\t5087:  0x6D7D,\n\t5088:  0x6D7E,\n\t5089:  0x6D7F,\n\t5090:  0x6D80,\n\t5091:  0x6D81,\n\t5092:  0x6D83,\n\t5093:  0x6D84,\n\t5094:  0x6D86,\n\t5095:  0x6D87,\n\t5096:  0x6D8A,\n\t5097:  0x6D8B,\n\t5098:  0x6D8D,\n\t5099:  0x6D8F,\n\t5100:  0x6D90,\n\t5101:  0x6D92,\n\t5102:  0x6D96,\n\t5103:  0x6D97,\n\t5104:  0x6D98,\n\t5105:  0x6D99,\n\t5106:  0x6D9A,\n\t5107:  0x6D9C,\n\t5108:  0x6DA2,\n\t5109:  0x6DA5,\n\t5110:  0x6DAC,\n\t5111:  0x6DAD,\n\t5112:  0x6DB0,\n\t5113:  0x6DB1,\n\t5114:  0x6DB3,\n\t5115:  0x6DB4,\n\t5116:  0x6DB6,\n\t5117:  0x6DB7,\n\t5118:  0x6DB9,\n\t5119:  0x6DBA,\n\t5120:  0x6DBB,\n\t5121:  0x6DBC,\n\t5122:  0x6DBD,\n\t5123:  0x6DBE,\n\t5124:  0x6DC1,\n\t5125:  0x6DC2,\n\t5126:  0x6DC3,\n\t5127:  0x6DC8,\n\t5128:  0x6DC9,\n\t5129:  0x6DCA,\n\t5130:  0x6DCD,\n\t5131:  0x6DCE,\n\t5132:  0x6DCF,\n\t5133:  0x6DD0,\n\t5134:  0x6DD2,\n\t5135:  0x6DD3,\n\t5136:  0x6DD4,\n\t5137:  0x6DD5,\n\t5138:  0x6DD7,\n\t5139:  0x6DDA,\n\t5140:  0x6DDB,\n\t5141:  0x6DDC,\n\t5142:  0x6DDF,\n\t5143:  0x6DE2,\n\t5144:  0x6DE3,\n\t5145:  0x6DE5,\n\t5146:  0x6DE7,\n\t5147:  0x6DE8,\n\t5148:  0x6DE9,\n\t5149:  0x6DEA,\n\t5150:  0x6DED,\n\t5151:  0x6DEF,\n\t5152:  0x6DF0,\n\t5153:  0x6DF2,\n\t5154:  0x6DF4,\n\t5155:  0x6DF5,\n\t5156:  0x6DF6,\n\t5157:  0x6DF8,\n\t5158:  0x6DFA,\n\t5159:  0x6DFD,\n\t5160:  0x6DFE,\n\t5161:  0x6DFF,\n\t5162:  0x6E00,\n\t5163:  0x6E01,\n\t5164:  0x6E02,\n\t5165:  0x6E03,\n\t5166:  0x6E04,\n\t5167:  0x6E06,\n\t5168:  0x6E07,\n\t5169:  0x6E08,\n\t5170:  0x6E09,\n\t5171:  0x6E0B,\n\t5172:  0x6E0F,\n\t5173:  0x6E12,\n\t5174:  0x6E13,\n\t5175:  0x6E15,\n\t5176:  0x6E18,\n\t5177:  0x6E19,\n\t5178:  0x6E1B,\n\t5179:  0x6E1C,\n\t5180:  0x6E1E,\n\t5181:  0x6E1F,\n\t5182:  0x6E22,\n\t5183:  0x6E26,\n\t5184:  0x6E27,\n\t5185:  0x6E28,\n\t5186:  0x6E2A,\n\t5187:  0x6E2C,\n\t5188:  0x6E2E,\n\t5189:  0x6E30,\n\t5190:  0x6E31,\n\t5191:  0x6E33,\n\t5192:  0x6E35,\n\t5193:  0x6E36,\n\t5194:  0x6E37,\n\t5195:  0x6E39,\n\t5196:  0x6E3B,\n\t5197:  0x6E3C,\n\t5198:  0x6E3D,\n\t5199:  0x6E3E,\n\t5200:  0x6E3F,\n\t5201:  0x6E40,\n\t5202:  0x6E41,\n\t5203:  0x6E42,\n\t5204:  0x6E45,\n\t5205:  0x6E46,\n\t5206:  0x6E47,\n\t5207:  0x6E48,\n\t5208:  0x6E49,\n\t5209:  0x6E4A,\n\t5210:  0x6E4B,\n\t5211:  0x6E4C,\n\t5212:  0x6E4F,\n\t5213:  0x6E50,\n\t5214:  0x6E51,\n\t5215:  0x6E52,\n\t5216:  0x6E55,\n\t5217:  0x6E57,\n\t5218:  0x6E59,\n\t5219:  0x6E5A,\n\t5220:  0x6E5C,\n\t5221:  0x6E5D,\n\t5222:  0x6E5E,\n\t5223:  0x6E60,\n\t5224:  0x6E61,\n\t5225:  0x6E62,\n\t5226:  0x6E63,\n\t5227:  0x6E64,\n\t5228:  0x6E65,\n\t5229:  0x6E66,\n\t5230:  0x6E67,\n\t5231:  0x6E68,\n\t5232:  0x6E69,\n\t5233:  0x6E6A,\n\t5234:  0x6E6C,\n\t5235:  0x6E6D,\n\t5236:  0x6E6F,\n\t5237:  0x6E70,\n\t5238:  0x6E71,\n\t5239:  0x6E72,\n\t5240:  0x6E73,\n\t5241:  0x6E74,\n\t5242:  0x6E75,\n\t5243:  0x6E76,\n\t5244:  0x6E77,\n\t5245:  0x6E78,\n\t5246:  0x6E79,\n\t5247:  0x6E7A,\n\t5248:  0x6E7B,\n\t5249:  0x6E7C,\n\t5250:  0x6E7D,\n\t5251:  0x6E80,\n\t5252:  0x6E81,\n\t5253:  0x6E82,\n\t5254:  0x6E84,\n\t5255:  0x6E87,\n\t5256:  0x6E88,\n\t5257:  0x6E8A,\n\t5258:  0x6E8B,\n\t5259:  0x6E8C,\n\t5260:  0x6E8D,\n\t5261:  0x6E8E,\n\t5262:  0x6E91,\n\t5263:  0x6E92,\n\t5264:  0x6E93,\n\t5265:  0x6E94,\n\t5266:  0x6E95,\n\t5267:  0x6E96,\n\t5268:  0x6E97,\n\t5269:  0x6E99,\n\t5270:  0x6E9A,\n\t5271:  0x6E9B,\n\t5272:  0x6E9D,\n\t5273:  0x6E9E,\n\t5274:  0x6EA0,\n\t5275:  0x6EA1,\n\t5276:  0x6EA3,\n\t5277:  0x6EA4,\n\t5278:  0x6EA6,\n\t5279:  0x6EA8,\n\t5280:  0x6EA9,\n\t5281:  0x6EAB,\n\t5282:  0x6EAC,\n\t5283:  0x6EAD,\n\t5284:  0x6EAE,\n\t5285:  0x6EB0,\n\t5286:  0x6EB3,\n\t5287:  0x6EB5,\n\t5288:  0x6EB8,\n\t5289:  0x6EB9,\n\t5290:  0x6EBC,\n\t5291:  0x6EBE,\n\t5292:  0x6EBF,\n\t5293:  0x6EC0,\n\t5294:  0x6EC3,\n\t5295:  0x6EC4,\n\t5296:  0x6EC5,\n\t5297:  0x6EC6,\n\t5298:  0x6EC8,\n\t5299:  0x6EC9,\n\t5300:  0x6ECA,\n\t5301:  0x6ECC,\n\t5302:  0x6ECD,\n\t5303:  0x6ECE,\n\t5304:  0x6ED0,\n\t5305:  0x6ED2,\n\t5306:  0x6ED6,\n\t5307:  0x6ED8,\n\t5308:  0x6ED9,\n\t5309:  0x6EDB,\n\t5310:  0x6EDC,\n\t5311:  0x6EDD,\n\t5312:  0x6EE3,\n\t5313:  0x6EE7,\n\t5314:  0x6EEA,\n\t5315:  0x6EEB,\n\t5316:  0x6EEC,\n\t5317:  0x6EED,\n\t5318:  0x6EEE,\n\t5319:  0x6EEF,\n\t5320:  0x6EF0,\n\t5321:  0x6EF1,\n\t5322:  0x6EF2,\n\t5323:  0x6EF3,\n\t5324:  0x6EF5,\n\t5325:  0x6EF6,\n\t5326:  0x6EF7,\n\t5327:  0x6EF8,\n\t5328:  0x6EFA,\n\t5329:  0x6EFB,\n\t5330:  0x6EFC,\n\t5331:  0x6EFD,\n\t5332:  0x6EFE,\n\t5333:  0x6EFF,\n\t5334:  0x6F00,\n\t5335:  0x6F01,\n\t5336:  0x6F03,\n\t5337:  0x6F04,\n\t5338:  0x6F05,\n\t5339:  0x6F07,\n\t5340:  0x6F08,\n\t5341:  0x6F0A,\n\t5342:  0x6F0B,\n\t5343:  0x6F0C,\n\t5344:  0x6F0D,\n\t5345:  0x6F0E,\n\t5346:  0x6F10,\n\t5347:  0x6F11,\n\t5348:  0x6F12,\n\t5349:  0x6F16,\n\t5350:  0x6F17,\n\t5351:  0x6F18,\n\t5352:  0x6F19,\n\t5353:  0x6F1A,\n\t5354:  0x6F1B,\n\t5355:  0x6F1C,\n\t5356:  0x6F1D,\n\t5357:  0x6F1E,\n\t5358:  0x6F1F,\n\t5359:  0x6F21,\n\t5360:  0x6F22,\n\t5361:  0x6F23,\n\t5362:  0x6F25,\n\t5363:  0x6F26,\n\t5364:  0x6F27,\n\t5365:  0x6F28,\n\t5366:  0x6F2C,\n\t5367:  0x6F2E,\n\t5368:  0x6F30,\n\t5369:  0x6F32,\n\t5370:  0x6F34,\n\t5371:  0x6F35,\n\t5372:  0x6F37,\n\t5373:  0x6F38,\n\t5374:  0x6F39,\n\t5375:  0x6F3A,\n\t5376:  0x6F3B,\n\t5377:  0x6F3C,\n\t5378:  0x6F3D,\n\t5379:  0x6F3F,\n\t5380:  0x6F40,\n\t5381:  0x6F41,\n\t5382:  0x6F42,\n\t5383:  0x6F43,\n\t5384:  0x6F44,\n\t5385:  0x6F45,\n\t5386:  0x6F48,\n\t5387:  0x6F49,\n\t5388:  0x6F4A,\n\t5389:  0x6F4C,\n\t5390:  0x6F4E,\n\t5391:  0x6F4F,\n\t5392:  0x6F50,\n\t5393:  0x6F51,\n\t5394:  0x6F52,\n\t5395:  0x6F53,\n\t5396:  0x6F54,\n\t5397:  0x6F55,\n\t5398:  0x6F56,\n\t5399:  0x6F57,\n\t5400:  0x6F59,\n\t5401:  0x6F5A,\n\t5402:  0x6F5B,\n\t5403:  0x6F5D,\n\t5404:  0x6F5F,\n\t5405:  0x6F60,\n\t5406:  0x6F61,\n\t5407:  0x6F63,\n\t5408:  0x6F64,\n\t5409:  0x6F65,\n\t5410:  0x6F67,\n\t5411:  0x6F68,\n\t5412:  0x6F69,\n\t5413:  0x6F6A,\n\t5414:  0x6F6B,\n\t5415:  0x6F6C,\n\t5416:  0x6F6F,\n\t5417:  0x6F70,\n\t5418:  0x6F71,\n\t5419:  0x6F73,\n\t5420:  0x6F75,\n\t5421:  0x6F76,\n\t5422:  0x6F77,\n\t5423:  0x6F79,\n\t5424:  0x6F7B,\n\t5425:  0x6F7D,\n\t5426:  0x6F7E,\n\t5427:  0x6F7F,\n\t5428:  0x6F80,\n\t5429:  0x6F81,\n\t5430:  0x6F82,\n\t5431:  0x6F83,\n\t5432:  0x6F85,\n\t5433:  0x6F86,\n\t5434:  0x6F87,\n\t5435:  0x6F8A,\n\t5436:  0x6F8B,\n\t5437:  0x6F8F,\n\t5438:  0x6F90,\n\t5439:  0x6F91,\n\t5440:  0x6F92,\n\t5441:  0x6F93,\n\t5442:  0x6F94,\n\t5443:  0x6F95,\n\t5444:  0x6F96,\n\t5445:  0x6F97,\n\t5446:  0x6F98,\n\t5447:  0x6F99,\n\t5448:  0x6F9A,\n\t5449:  0x6F9B,\n\t5450:  0x6F9D,\n\t5451:  0x6F9E,\n\t5452:  0x6F9F,\n\t5453:  0x6FA0,\n\t5454:  0x6FA2,\n\t5455:  0x6FA3,\n\t5456:  0x6FA4,\n\t5457:  0x6FA5,\n\t5458:  0x6FA6,\n\t5459:  0x6FA8,\n\t5460:  0x6FA9,\n\t5461:  0x6FAA,\n\t5462:  0x6FAB,\n\t5463:  0x6FAC,\n\t5464:  0x6FAD,\n\t5465:  0x6FAE,\n\t5466:  0x6FAF,\n\t5467:  0x6FB0,\n\t5468:  0x6FB1,\n\t5469:  0x6FB2,\n\t5470:  0x6FB4,\n\t5471:  0x6FB5,\n\t5472:  0x6FB7,\n\t5473:  0x6FB8,\n\t5474:  0x6FBA,\n\t5475:  0x6FBB,\n\t5476:  0x6FBC,\n\t5477:  0x6FBD,\n\t5478:  0x6FBE,\n\t5479:  0x6FBF,\n\t5480:  0x6FC1,\n\t5481:  0x6FC3,\n\t5482:  0x6FC4,\n\t5483:  0x6FC5,\n\t5484:  0x6FC6,\n\t5485:  0x6FC7,\n\t5486:  0x6FC8,\n\t5487:  0x6FCA,\n\t5488:  0x6FCB,\n\t5489:  0x6FCC,\n\t5490:  0x6FCD,\n\t5491:  0x6FCE,\n\t5492:  0x6FCF,\n\t5493:  0x6FD0,\n\t5494:  0x6FD3,\n\t5495:  0x6FD4,\n\t5496:  0x6FD5,\n\t5497:  0x6FD6,\n\t5498:  0x6FD7,\n\t5499:  0x6FD8,\n\t5500:  0x6FD9,\n\t5501:  0x6FDA,\n\t5502:  0x6FDB,\n\t5503:  0x6FDC,\n\t5504:  0x6FDD,\n\t5505:  0x6FDF,\n\t5506:  0x6FE2,\n\t5507:  0x6FE3,\n\t5508:  0x6FE4,\n\t5509:  0x6FE5,\n\t5510:  0x6FE6,\n\t5511:  0x6FE7,\n\t5512:  0x6FE8,\n\t5513:  0x6FE9,\n\t5514:  0x6FEA,\n\t5515:  0x6FEB,\n\t5516:  0x6FEC,\n\t5517:  0x6FED,\n\t5518:  0x6FF0,\n\t5519:  0x6FF1,\n\t5520:  0x6FF2,\n\t5521:  0x6FF3,\n\t5522:  0x6FF4,\n\t5523:  0x6FF5,\n\t5524:  0x6FF6,\n\t5525:  0x6FF7,\n\t5526:  0x6FF8,\n\t5527:  0x6FF9,\n\t5528:  0x6FFA,\n\t5529:  0x6FFB,\n\t5530:  0x6FFC,\n\t5531:  0x6FFD,\n\t5532:  0x6FFE,\n\t5533:  0x6FFF,\n\t5534:  0x7000,\n\t5535:  0x7001,\n\t5536:  0x7002,\n\t5537:  0x7003,\n\t5538:  0x7004,\n\t5539:  0x7005,\n\t5540:  0x7006,\n\t5541:  0x7007,\n\t5542:  0x7008,\n\t5543:  0x7009,\n\t5544:  0x700A,\n\t5545:  0x700B,\n\t5546:  0x700C,\n\t5547:  0x700D,\n\t5548:  0x700E,\n\t5549:  0x700F,\n\t5550:  0x7010,\n\t5551:  0x7012,\n\t5552:  0x7013,\n\t5553:  0x7014,\n\t5554:  0x7015,\n\t5555:  0x7016,\n\t5556:  0x7017,\n\t5557:  0x7018,\n\t5558:  0x7019,\n\t5559:  0x701C,\n\t5560:  0x701D,\n\t5561:  0x701E,\n\t5562:  0x701F,\n\t5563:  0x7020,\n\t5564:  0x7021,\n\t5565:  0x7022,\n\t5566:  0x7024,\n\t5567:  0x7025,\n\t5568:  0x7026,\n\t5569:  0x7027,\n\t5570:  0x7028,\n\t5571:  0x7029,\n\t5572:  0x702A,\n\t5573:  0x702B,\n\t5574:  0x702C,\n\t5575:  0x702D,\n\t5576:  0x702E,\n\t5577:  0x702F,\n\t5578:  0x7030,\n\t5579:  0x7031,\n\t5580:  0x7032,\n\t5581:  0x7033,\n\t5582:  0x7034,\n\t5583:  0x7036,\n\t5584:  0x7037,\n\t5585:  0x7038,\n\t5586:  0x703A,\n\t5587:  0x703B,\n\t5588:  0x703C,\n\t5589:  0x703D,\n\t5590:  0x703E,\n\t5591:  0x703F,\n\t5592:  0x7040,\n\t5593:  0x7041,\n\t5594:  0x7042,\n\t5595:  0x7043,\n\t5596:  0x7044,\n\t5597:  0x7045,\n\t5598:  0x7046,\n\t5599:  0x7047,\n\t5600:  0x7048,\n\t5601:  0x7049,\n\t5602:  0x704A,\n\t5603:  0x704B,\n\t5604:  0x704D,\n\t5605:  0x704E,\n\t5606:  0x7050,\n\t5607:  0x7051,\n\t5608:  0x7052,\n\t5609:  0x7053,\n\t5610:  0x7054,\n\t5611:  0x7055,\n\t5612:  0x7056,\n\t5613:  0x7057,\n\t5614:  0x7058,\n\t5615:  0x7059,\n\t5616:  0x705A,\n\t5617:  0x705B,\n\t5618:  0x705C,\n\t5619:  0x705D,\n\t5620:  0x705F,\n\t5621:  0x7060,\n\t5622:  0x7061,\n\t5623:  0x7062,\n\t5624:  0x7063,\n\t5625:  0x7064,\n\t5626:  0x7065,\n\t5627:  0x7066,\n\t5628:  0x7067,\n\t5629:  0x7068,\n\t5630:  0x7069,\n\t5631:  0x706A,\n\t5632:  0x706E,\n\t5633:  0x7071,\n\t5634:  0x7072,\n\t5635:  0x7073,\n\t5636:  0x7074,\n\t5637:  0x7077,\n\t5638:  0x7079,\n\t5639:  0x707A,\n\t5640:  0x707B,\n\t5641:  0x707D,\n\t5642:  0x7081,\n\t5643:  0x7082,\n\t5644:  0x7083,\n\t5645:  0x7084,\n\t5646:  0x7086,\n\t5647:  0x7087,\n\t5648:  0x7088,\n\t5649:  0x708B,\n\t5650:  0x708C,\n\t5651:  0x708D,\n\t5652:  0x708F,\n\t5653:  0x7090,\n\t5654:  0x7091,\n\t5655:  0x7093,\n\t5656:  0x7097,\n\t5657:  0x7098,\n\t5658:  0x709A,\n\t5659:  0x709B,\n\t5660:  0x709E,\n\t5661:  0x709F,\n\t5662:  0x70A0,\n\t5663:  0x70A1,\n\t5664:  0x70A2,\n\t5665:  0x70A3,\n\t5666:  0x70A4,\n\t5667:  0x70A5,\n\t5668:  0x70A6,\n\t5669:  0x70A7,\n\t5670:  0x70A8,\n\t5671:  0x70A9,\n\t5672:  0x70AA,\n\t5673:  0x70B0,\n\t5674:  0x70B2,\n\t5675:  0x70B4,\n\t5676:  0x70B5,\n\t5677:  0x70B6,\n\t5678:  0x70BA,\n\t5679:  0x70BE,\n\t5680:  0x70BF,\n\t5681:  0x70C4,\n\t5682:  0x70C5,\n\t5683:  0x70C6,\n\t5684:  0x70C7,\n\t5685:  0x70C9,\n\t5686:  0x70CB,\n\t5687:  0x70CC,\n\t5688:  0x70CD,\n\t5689:  0x70CE,\n\t5690:  0x70CF,\n\t5691:  0x70D0,\n\t5692:  0x70D1,\n\t5693:  0x70D2,\n\t5694:  0x70D3,\n\t5695:  0x70D4,\n\t5696:  0x70D5,\n\t5697:  0x70D6,\n\t5698:  0x70D7,\n\t5699:  0x70DA,\n\t5700:  0x70DC,\n\t5701:  0x70DD,\n\t5702:  0x70DE,\n\t5703:  0x70E0,\n\t5704:  0x70E1,\n\t5705:  0x70E2,\n\t5706:  0x70E3,\n\t5707:  0x70E5,\n\t5708:  0x70EA,\n\t5709:  0x70EE,\n\t5710:  0x70F0,\n\t5711:  0x70F1,\n\t5712:  0x70F2,\n\t5713:  0x70F3,\n\t5714:  0x70F4,\n\t5715:  0x70F5,\n\t5716:  0x70F6,\n\t5717:  0x70F8,\n\t5718:  0x70FA,\n\t5719:  0x70FB,\n\t5720:  0x70FC,\n\t5721:  0x70FE,\n\t5722:  0x70FF,\n\t5723:  0x7100,\n\t5724:  0x7101,\n\t5725:  0x7102,\n\t5726:  0x7103,\n\t5727:  0x7104,\n\t5728:  0x7105,\n\t5729:  0x7106,\n\t5730:  0x7107,\n\t5731:  0x7108,\n\t5732:  0x710B,\n\t5733:  0x710C,\n\t5734:  0x710D,\n\t5735:  0x710E,\n\t5736:  0x710F,\n\t5737:  0x7111,\n\t5738:  0x7112,\n\t5739:  0x7114,\n\t5740:  0x7117,\n\t5741:  0x711B,\n\t5742:  0x711C,\n\t5743:  0x711D,\n\t5744:  0x711E,\n\t5745:  0x711F,\n\t5746:  0x7120,\n\t5747:  0x7121,\n\t5748:  0x7122,\n\t5749:  0x7123,\n\t5750:  0x7124,\n\t5751:  0x7125,\n\t5752:  0x7127,\n\t5753:  0x7128,\n\t5754:  0x7129,\n\t5755:  0x712A,\n\t5756:  0x712B,\n\t5757:  0x712C,\n\t5758:  0x712D,\n\t5759:  0x712E,\n\t5760:  0x7132,\n\t5761:  0x7133,\n\t5762:  0x7134,\n\t5763:  0x7135,\n\t5764:  0x7137,\n\t5765:  0x7138,\n\t5766:  0x7139,\n\t5767:  0x713A,\n\t5768:  0x713B,\n\t5769:  0x713C,\n\t5770:  0x713D,\n\t5771:  0x713E,\n\t5772:  0x713F,\n\t5773:  0x7140,\n\t5774:  0x7141,\n\t5775:  0x7142,\n\t5776:  0x7143,\n\t5777:  0x7144,\n\t5778:  0x7146,\n\t5779:  0x7147,\n\t5780:  0x7148,\n\t5781:  0x7149,\n\t5782:  0x714B,\n\t5783:  0x714D,\n\t5784:  0x714F,\n\t5785:  0x7150,\n\t5786:  0x7151,\n\t5787:  0x7152,\n\t5788:  0x7153,\n\t5789:  0x7154,\n\t5790:  0x7155,\n\t5791:  0x7156,\n\t5792:  0x7157,\n\t5793:  0x7158,\n\t5794:  0x7159,\n\t5795:  0x715A,\n\t5796:  0x715B,\n\t5797:  0x715D,\n\t5798:  0x715F,\n\t5799:  0x7160,\n\t5800:  0x7161,\n\t5801:  0x7162,\n\t5802:  0x7163,\n\t5803:  0x7165,\n\t5804:  0x7169,\n\t5805:  0x716A,\n\t5806:  0x716B,\n\t5807:  0x716C,\n\t5808:  0x716D,\n\t5809:  0x716F,\n\t5810:  0x7170,\n\t5811:  0x7171,\n\t5812:  0x7174,\n\t5813:  0x7175,\n\t5814:  0x7176,\n\t5815:  0x7177,\n\t5816:  0x7179,\n\t5817:  0x717B,\n\t5818:  0x717C,\n\t5819:  0x717E,\n\t5820:  0x717F,\n\t5821:  0x7180,\n\t5822:  0x7181,\n\t5823:  0x7182,\n\t5824:  0x7183,\n\t5825:  0x7185,\n\t5826:  0x7186,\n\t5827:  0x7187,\n\t5828:  0x7188,\n\t5829:  0x7189,\n\t5830:  0x718B,\n\t5831:  0x718C,\n\t5832:  0x718D,\n\t5833:  0x718E,\n\t5834:  0x7190,\n\t5835:  0x7191,\n\t5836:  0x7192,\n\t5837:  0x7193,\n\t5838:  0x7195,\n\t5839:  0x7196,\n\t5840:  0x7197,\n\t5841:  0x719A,\n\t5842:  0x719B,\n\t5843:  0x719C,\n\t5844:  0x719D,\n\t5845:  0x719E,\n\t5846:  0x71A1,\n\t5847:  0x71A2,\n\t5848:  0x71A3,\n\t5849:  0x71A4,\n\t5850:  0x71A5,\n\t5851:  0x71A6,\n\t5852:  0x71A7,\n\t5853:  0x71A9,\n\t5854:  0x71AA,\n\t5855:  0x71AB,\n\t5856:  0x71AD,\n\t5857:  0x71AE,\n\t5858:  0x71AF,\n\t5859:  0x71B0,\n\t5860:  0x71B1,\n\t5861:  0x71B2,\n\t5862:  0x71B4,\n\t5863:  0x71B6,\n\t5864:  0x71B7,\n\t5865:  0x71B8,\n\t5866:  0x71BA,\n\t5867:  0x71BB,\n\t5868:  0x71BC,\n\t5869:  0x71BD,\n\t5870:  0x71BE,\n\t5871:  0x71BF,\n\t5872:  0x71C0,\n\t5873:  0x71C1,\n\t5874:  0x71C2,\n\t5875:  0x71C4,\n\t5876:  0x71C5,\n\t5877:  0x71C6,\n\t5878:  0x71C7,\n\t5879:  0x71C8,\n\t5880:  0x71C9,\n\t5881:  0x71CA,\n\t5882:  0x71CB,\n\t5883:  0x71CC,\n\t5884:  0x71CD,\n\t5885:  0x71CF,\n\t5886:  0x71D0,\n\t5887:  0x71D1,\n\t5888:  0x71D2,\n\t5889:  0x71D3,\n\t5890:  0x71D6,\n\t5891:  0x71D7,\n\t5892:  0x71D8,\n\t5893:  0x71D9,\n\t5894:  0x71DA,\n\t5895:  0x71DB,\n\t5896:  0x71DC,\n\t5897:  0x71DD,\n\t5898:  0x71DE,\n\t5899:  0x71DF,\n\t5900:  0x71E1,\n\t5901:  0x71E2,\n\t5902:  0x71E3,\n\t5903:  0x71E4,\n\t5904:  0x71E6,\n\t5905:  0x71E8,\n\t5906:  0x71E9,\n\t5907:  0x71EA,\n\t5908:  0x71EB,\n\t5909:  0x71EC,\n\t5910:  0x71ED,\n\t5911:  0x71EF,\n\t5912:  0x71F0,\n\t5913:  0x71F1,\n\t5914:  0x71F2,\n\t5915:  0x71F3,\n\t5916:  0x71F4,\n\t5917:  0x71F5,\n\t5918:  0x71F6,\n\t5919:  0x71F7,\n\t5920:  0x71F8,\n\t5921:  0x71FA,\n\t5922:  0x71FB,\n\t5923:  0x71FC,\n\t5924:  0x71FD,\n\t5925:  0x71FE,\n\t5926:  0x71FF,\n\t5927:  0x7200,\n\t5928:  0x7201,\n\t5929:  0x7202,\n\t5930:  0x7203,\n\t5931:  0x7204,\n\t5932:  0x7205,\n\t5933:  0x7207,\n\t5934:  0x7208,\n\t5935:  0x7209,\n\t5936:  0x720A,\n\t5937:  0x720B,\n\t5938:  0x720C,\n\t5939:  0x720D,\n\t5940:  0x720E,\n\t5941:  0x720F,\n\t5942:  0x7210,\n\t5943:  0x7211,\n\t5944:  0x7212,\n\t5945:  0x7213,\n\t5946:  0x7214,\n\t5947:  0x7215,\n\t5948:  0x7216,\n\t5949:  0x7217,\n\t5950:  0x7218,\n\t5951:  0x7219,\n\t5952:  0x721A,\n\t5953:  0x721B,\n\t5954:  0x721C,\n\t5955:  0x721E,\n\t5956:  0x721F,\n\t5957:  0x7220,\n\t5958:  0x7221,\n\t5959:  0x7222,\n\t5960:  0x7223,\n\t5961:  0x7224,\n\t5962:  0x7225,\n\t5963:  0x7226,\n\t5964:  0x7227,\n\t5965:  0x7229,\n\t5966:  0x722B,\n\t5967:  0x722D,\n\t5968:  0x722E,\n\t5969:  0x722F,\n\t5970:  0x7232,\n\t5971:  0x7233,\n\t5972:  0x7234,\n\t5973:  0x723A,\n\t5974:  0x723C,\n\t5975:  0x723E,\n\t5976:  0x7240,\n\t5977:  0x7241,\n\t5978:  0x7242,\n\t5979:  0x7243,\n\t5980:  0x7244,\n\t5981:  0x7245,\n\t5982:  0x7246,\n\t5983:  0x7249,\n\t5984:  0x724A,\n\t5985:  0x724B,\n\t5986:  0x724E,\n\t5987:  0x724F,\n\t5988:  0x7250,\n\t5989:  0x7251,\n\t5990:  0x7253,\n\t5991:  0x7254,\n\t5992:  0x7255,\n\t5993:  0x7257,\n\t5994:  0x7258,\n\t5995:  0x725A,\n\t5996:  0x725C,\n\t5997:  0x725E,\n\t5998:  0x7260,\n\t5999:  0x7263,\n\t6000:  0x7264,\n\t6001:  0x7265,\n\t6002:  0x7268,\n\t6003:  0x726A,\n\t6004:  0x726B,\n\t6005:  0x726C,\n\t6006:  0x726D,\n\t6007:  0x7270,\n\t6008:  0x7271,\n\t6009:  0x7273,\n\t6010:  0x7274,\n\t6011:  0x7276,\n\t6012:  0x7277,\n\t6013:  0x7278,\n\t6014:  0x727B,\n\t6015:  0x727C,\n\t6016:  0x727D,\n\t6017:  0x7282,\n\t6018:  0x7283,\n\t6019:  0x7285,\n\t6020:  0x7286,\n\t6021:  0x7287,\n\t6022:  0x7288,\n\t6023:  0x7289,\n\t6024:  0x728C,\n\t6025:  0x728E,\n\t6026:  0x7290,\n\t6027:  0x7291,\n\t6028:  0x7293,\n\t6029:  0x7294,\n\t6030:  0x7295,\n\t6031:  0x7296,\n\t6032:  0x7297,\n\t6033:  0x7298,\n\t6034:  0x7299,\n\t6035:  0x729A,\n\t6036:  0x729B,\n\t6037:  0x729C,\n\t6038:  0x729D,\n\t6039:  0x729E,\n\t6040:  0x72A0,\n\t6041:  0x72A1,\n\t6042:  0x72A2,\n\t6043:  0x72A3,\n\t6044:  0x72A4,\n\t6045:  0x72A5,\n\t6046:  0x72A6,\n\t6047:  0x72A7,\n\t6048:  0x72A8,\n\t6049:  0x72A9,\n\t6050:  0x72AA,\n\t6051:  0x72AB,\n\t6052:  0x72AE,\n\t6053:  0x72B1,\n\t6054:  0x72B2,\n\t6055:  0x72B3,\n\t6056:  0x72B5,\n\t6057:  0x72BA,\n\t6058:  0x72BB,\n\t6059:  0x72BC,\n\t6060:  0x72BD,\n\t6061:  0x72BE,\n\t6062:  0x72BF,\n\t6063:  0x72C0,\n\t6064:  0x72C5,\n\t6065:  0x72C6,\n\t6066:  0x72C7,\n\t6067:  0x72C9,\n\t6068:  0x72CA,\n\t6069:  0x72CB,\n\t6070:  0x72CC,\n\t6071:  0x72CF,\n\t6072:  0x72D1,\n\t6073:  0x72D3,\n\t6074:  0x72D4,\n\t6075:  0x72D5,\n\t6076:  0x72D6,\n\t6077:  0x72D8,\n\t6078:  0x72DA,\n\t6079:  0x72DB,\n\t6176:  0x3000,\n\t6177:  0x3001,\n\t6178:  0x3002,\n\t6179:  0x00B7,\n\t6180:  0x02C9,\n\t6181:  0x02C7,\n\t6182:  0x00A8,\n\t6183:  0x3003,\n\t6184:  0x3005,\n\t6185:  0x2014,\n\t6186:  0xFF5E,\n\t6187:  0x2016,\n\t6188:  0x2026,\n\t6189:  0x2018,\n\t6190:  0x2019,\n\t6191:  0x201C,\n\t6192:  0x201D,\n\t6193:  0x3014,\n\t6194:  0x3015,\n\t6195:  0x3008,\n\t6196:  0x3009,\n\t6197:  0x300A,\n\t6198:  0x300B,\n\t6199:  0x300C,\n\t6200:  0x300D,\n\t6201:  0x300E,\n\t6202:  0x300F,\n\t6203:  0x3016,\n\t6204:  0x3017,\n\t6205:  0x3010,\n\t6206:  0x3011,\n\t6207:  0x00B1,\n\t6208:  0x00D7,\n\t6209:  0x00F7,\n\t6210:  0x2236,\n\t6211:  0x2227,\n\t6212:  0x2228,\n\t6213:  0x2211,\n\t6214:  0x220F,\n\t6215:  0x222A,\n\t6216:  0x2229,\n\t6217:  0x2208,\n\t6218:  0x2237,\n\t6219:  0x221A,\n\t6220:  0x22A5,\n\t6221:  0x2225,\n\t6222:  0x2220,\n\t6223:  0x2312,\n\t6224:  0x2299,\n\t6225:  0x222B,\n\t6226:  0x222E,\n\t6227:  0x2261,\n\t6228:  0x224C,\n\t6229:  0x2248,\n\t6230:  0x223D,\n\t6231:  0x221D,\n\t6232:  0x2260,\n\t6233:  0x226E,\n\t6234:  0x226F,\n\t6235:  0x2264,\n\t6236:  0x2265,\n\t6237:  0x221E,\n\t6238:  0x2235,\n\t6239:  0x2234,\n\t6240:  0x2642,\n\t6241:  0x2640,\n\t6242:  0x00B0,\n\t6243:  0x2032,\n\t6244:  0x2033,\n\t6245:  0x2103,\n\t6246:  0xFF04,\n\t6247:  0x00A4,\n\t6248:  0xFFE0,\n\t6249:  0xFFE1,\n\t6250:  0x2030,\n\t6251:  0x00A7,\n\t6252:  0x2116,\n\t6253:  0x2606,\n\t6254:  0x2605,\n\t6255:  0x25CB,\n\t6256:  0x25CF,\n\t6257:  0x25CE,\n\t6258:  0x25C7,\n\t6259:  0x25C6,\n\t6260:  0x25A1,\n\t6261:  0x25A0,\n\t6262:  0x25B3,\n\t6263:  0x25B2,\n\t6264:  0x203B,\n\t6265:  0x2192,\n\t6266:  0x2190,\n\t6267:  0x2191,\n\t6268:  0x2193,\n\t6269:  0x3013,\n\t6366:  0x2170,\n\t6367:  0x2171,\n\t6368:  0x2172,\n\t6369:  0x2173,\n\t6370:  0x2174,\n\t6371:  0x2175,\n\t6372:  0x2176,\n\t6373:  0x2177,\n\t6374:  0x2178,\n\t6375:  0x2179,\n\t6382:  0x2488,\n\t6383:  0x2489,\n\t6384:  0x248A,\n\t6385:  0x248B,\n\t6386:  0x248C,\n\t6387:  0x248D,\n\t6388:  0x248E,\n\t6389:  0x248F,\n\t6390:  0x2490,\n\t6391:  0x2491,\n\t6392:  0x2492,\n\t6393:  0x2493,\n\t6394:  0x2494,\n\t6395:  0x2495,\n\t6396:  0x2496,\n\t6397:  0x2497,\n\t6398:  0x2498,\n\t6399:  0x2499,\n\t6400:  0x249A,\n\t6401:  0x249B,\n\t6402:  0x2474,\n\t6403:  0x2475,\n\t6404:  0x2476,\n\t6405:  0x2477,\n\t6406:  0x2478,\n\t6407:  0x2479,\n\t6408:  0x247A,\n\t6409:  0x247B,\n\t6410:  0x247C,\n\t6411:  0x247D,\n\t6412:  0x247E,\n\t6413:  0x247F,\n\t6414:  0x2480,\n\t6415:  0x2481,\n\t6416:  0x2482,\n\t6417:  0x2483,\n\t6418:  0x2484,\n\t6419:  0x2485,\n\t6420:  0x2486,\n\t6421:  0x2487,\n\t6422:  0x2460,\n\t6423:  0x2461,\n\t6424:  0x2462,\n\t6425:  0x2463,\n\t6426:  0x2464,\n\t6427:  0x2465,\n\t6428:  0x2466,\n\t6429:  0x2467,\n\t6430:  0x2468,\n\t6431:  0x2469,\n\t6432:  0x20AC,\n\t6434:  0x3220,\n\t6435:  0x3221,\n\t6436:  0x3222,\n\t6437:  0x3223,\n\t6438:  0x3224,\n\t6439:  0x3225,\n\t6440:  0x3226,\n\t6441:  0x3227,\n\t6442:  0x3228,\n\t6443:  0x3229,\n\t6446:  0x2160,\n\t6447:  0x2161,\n\t6448:  0x2162,\n\t6449:  0x2163,\n\t6450:  0x2164,\n\t6451:  0x2165,\n\t6452:  0x2166,\n\t6453:  0x2167,\n\t6454:  0x2168,\n\t6455:  0x2169,\n\t6456:  0x216A,\n\t6457:  0x216B,\n\t6555:  0x3000,\n\t6556:  0xFF01,\n\t6557:  0xFF02,\n\t6558:  0xFF03,\n\t6559:  0xFFE5,\n\t6560:  0xFF05,\n\t6561:  0xFF06,\n\t6562:  0xFF07,\n\t6563:  0xFF08,\n\t6564:  0xFF09,\n\t6565:  0xFF0A,\n\t6566:  0xFF0B,\n\t6567:  0xFF0C,\n\t6568:  0xFF0D,\n\t6569:  0xFF0E,\n\t6570:  0xFF0F,\n\t6571:  0xFF10,\n\t6572:  0xFF11,\n\t6573:  0xFF12,\n\t6574:  0xFF13,\n\t6575:  0xFF14,\n\t6576:  0xFF15,\n\t6577:  0xFF16,\n\t6578:  0xFF17,\n\t6579:  0xFF18,\n\t6580:  0xFF19,\n\t6581:  0xFF1A,\n\t6582:  0xFF1B,\n\t6583:  0xFF1C,\n\t6584:  0xFF1D,\n\t6585:  0xFF1E,\n\t6586:  0xFF1F,\n\t6587:  0xFF20,\n\t6588:  0xFF21,\n\t6589:  0xFF22,\n\t6590:  0xFF23,\n\t6591:  0xFF24,\n\t6592:  0xFF25,\n\t6593:  0xFF26,\n\t6594:  0xFF27,\n\t6595:  0xFF28,\n\t6596:  0xFF29,\n\t6597:  0xFF2A,\n\t6598:  0xFF2B,\n\t6599:  0xFF2C,\n\t6600:  0xFF2D,\n\t6601:  0xFF2E,\n\t6602:  0xFF2F,\n\t6603:  0xFF30,\n\t6604:  0xFF31,\n\t6605:  0xFF32,\n\t6606:  0xFF33,\n\t6607:  0xFF34,\n\t6608:  0xFF35,\n\t6609:  0xFF36,\n\t6610:  0xFF37,\n\t6611:  0xFF38,\n\t6612:  0xFF39,\n\t6613:  0xFF3A,\n\t6614:  0xFF3B,\n\t6615:  0xFF3C,\n\t6616:  0xFF3D,\n\t6617:  0xFF3E,\n\t6618:  0xFF3F,\n\t6619:  0xFF40,\n\t6620:  0xFF41,\n\t6621:  0xFF42,\n\t6622:  0xFF43,\n\t6623:  0xFF44,\n\t6624:  0xFF45,\n\t6625:  0xFF46,\n\t6626:  0xFF47,\n\t6627:  0xFF48,\n\t6628:  0xFF49,\n\t6629:  0xFF4A,\n\t6630:  0xFF4B,\n\t6631:  0xFF4C,\n\t6632:  0xFF4D,\n\t6633:  0xFF4E,\n\t6634:  0xFF4F,\n\t6635:  0xFF50,\n\t6636:  0xFF51,\n\t6637:  0xFF52,\n\t6638:  0xFF53,\n\t6639:  0xFF54,\n\t6640:  0xFF55,\n\t6641:  0xFF56,\n\t6642:  0xFF57,\n\t6643:  0xFF58,\n\t6644:  0xFF59,\n\t6645:  0xFF5A,\n\t6646:  0xFF5B,\n\t6647:  0xFF5C,\n\t6648:  0xFF5D,\n\t6649:  0xFFE3,\n\t6746:  0x3041,\n\t6747:  0x3042,\n\t6748:  0x3043,\n\t6749:  0x3044,\n\t6750:  0x3045,\n\t6751:  0x3046,\n\t6752:  0x3047,\n\t6753:  0x3048,\n\t6754:  0x3049,\n\t6755:  0x304A,\n\t6756:  0x304B,\n\t6757:  0x304C,\n\t6758:  0x304D,\n\t6759:  0x304E,\n\t6760:  0x304F,\n\t6761:  0x3050,\n\t6762:  0x3051,\n\t6763:  0x3052,\n\t6764:  0x3053,\n\t6765:  0x3054,\n\t6766:  0x3055,\n\t6767:  0x3056,\n\t6768:  0x3057,\n\t6769:  0x3058,\n\t6770:  0x3059,\n\t6771:  0x305A,\n\t6772:  0x305B,\n\t6773:  0x305C,\n\t6774:  0x305D,\n\t6775:  0x305E,\n\t6776:  0x305F,\n\t6777:  0x3060,\n\t6778:  0x3061,\n\t6779:  0x3062,\n\t6780:  0x3063,\n\t6781:  0x3064,\n\t6782:  0x3065,\n\t6783:  0x3066,\n\t6784:  0x3067,\n\t6785:  0x3068,\n\t6786:  0x3069,\n\t6787:  0x306A,\n\t6788:  0x306B,\n\t6789:  0x306C,\n\t6790:  0x306D,\n\t6791:  0x306E,\n\t6792:  0x306F,\n\t6793:  0x3070,\n\t6794:  0x3071,\n\t6795:  0x3072,\n\t6796:  0x3073,\n\t6797:  0x3074,\n\t6798:  0x3075,\n\t6799:  0x3076,\n\t6800:  0x3077,\n\t6801:  0x3078,\n\t6802:  0x3079,\n\t6803:  0x307A,\n\t6804:  0x307B,\n\t6805:  0x307C,\n\t6806:  0x307D,\n\t6807:  0x307E,\n\t6808:  0x307F,\n\t6809:  0x3080,\n\t6810:  0x3081,\n\t6811:  0x3082,\n\t6812:  0x3083,\n\t6813:  0x3084,\n\t6814:  0x3085,\n\t6815:  0x3086,\n\t6816:  0x3087,\n\t6817:  0x3088,\n\t6818:  0x3089,\n\t6819:  0x308A,\n\t6820:  0x308B,\n\t6821:  0x308C,\n\t6822:  0x308D,\n\t6823:  0x308E,\n\t6824:  0x308F,\n\t6825:  0x3090,\n\t6826:  0x3091,\n\t6827:  0x3092,\n\t6828:  0x3093,\n\t6936:  0x30A1,\n\t6937:  0x30A2,\n\t6938:  0x30A3,\n\t6939:  0x30A4,\n\t6940:  0x30A5,\n\t6941:  0x30A6,\n\t6942:  0x30A7,\n\t6943:  0x30A8,\n\t6944:  0x30A9,\n\t6945:  0x30AA,\n\t6946:  0x30AB,\n\t6947:  0x30AC,\n\t6948:  0x30AD,\n\t6949:  0x30AE,\n\t6950:  0x30AF,\n\t6951:  0x30B0,\n\t6952:  0x30B1,\n\t6953:  0x30B2,\n\t6954:  0x30B3,\n\t6955:  0x30B4,\n\t6956:  0x30B5,\n\t6957:  0x30B6,\n\t6958:  0x30B7,\n\t6959:  0x30B8,\n\t6960:  0x30B9,\n\t6961:  0x30BA,\n\t6962:  0x30BB,\n\t6963:  0x30BC,\n\t6964:  0x30BD,\n\t6965:  0x30BE,\n\t6966:  0x30BF,\n\t6967:  0x30C0,\n\t6968:  0x30C1,\n\t6969:  0x30C2,\n\t6970:  0x30C3,\n\t6971:  0x30C4,\n\t6972:  0x30C5,\n\t6973:  0x30C6,\n\t6974:  0x30C7,\n\t6975:  0x30C8,\n\t6976:  0x30C9,\n\t6977:  0x30CA,\n\t6978:  0x30CB,\n\t6979:  0x30CC,\n\t6980:  0x30CD,\n\t6981:  0x30CE,\n\t6982:  0x30CF,\n\t6983:  0x30D0,\n\t6984:  0x30D1,\n\t6985:  0x30D2,\n\t6986:  0x30D3,\n\t6987:  0x30D4,\n\t6988:  0x30D5,\n\t6989:  0x30D6,\n\t6990:  0x30D7,\n\t6991:  0x30D8,\n\t6992:  0x30D9,\n\t6993:  0x30DA,\n\t6994:  0x30DB,\n\t6995:  0x30DC,\n\t6996:  0x30DD,\n\t6997:  0x30DE,\n\t6998:  0x30DF,\n\t6999:  0x30E0,\n\t7000:  0x30E1,\n\t7001:  0x30E2,\n\t7002:  0x30E3,\n\t7003:  0x30E4,\n\t7004:  0x30E5,\n\t7005:  0x30E6,\n\t7006:  0x30E7,\n\t7007:  0x30E8,\n\t7008:  0x30E9,\n\t7009:  0x30EA,\n\t7010:  0x30EB,\n\t7011:  0x30EC,\n\t7012:  0x30ED,\n\t7013:  0x30EE,\n\t7014:  0x30EF,\n\t7015:  0x30F0,\n\t7016:  0x30F1,\n\t7017:  0x30F2,\n\t7018:  0x30F3,\n\t7019:  0x30F4,\n\t7020:  0x30F5,\n\t7021:  0x30F6,\n\t7126:  0x0391,\n\t7127:  0x0392,\n\t7128:  0x0393,\n\t7129:  0x0394,\n\t7130:  0x0395,\n\t7131:  0x0396,\n\t7132:  0x0397,\n\t7133:  0x0398,\n\t7134:  0x0399,\n\t7135:  0x039A,\n\t7136:  0x039B,\n\t7137:  0x039C,\n\t7138:  0x039D,\n\t7139:  0x039E,\n\t7140:  0x039F,\n\t7141:  0x03A0,\n\t7142:  0x03A1,\n\t7143:  0x03A3,\n\t7144:  0x03A4,\n\t7145:  0x03A5,\n\t7146:  0x03A6,\n\t7147:  0x03A7,\n\t7148:  0x03A8,\n\t7149:  0x03A9,\n\t7158:  0x03B1,\n\t7159:  0x03B2,\n\t7160:  0x03B3,\n\t7161:  0x03B4,\n\t7162:  0x03B5,\n\t7163:  0x03B6,\n\t7164:  0x03B7,\n\t7165:  0x03B8,\n\t7166:  0x03B9,\n\t7167:  0x03BA,\n\t7168:  0x03BB,\n\t7169:  0x03BC,\n\t7170:  0x03BD,\n\t7171:  0x03BE,\n\t7172:  0x03BF,\n\t7173:  0x03C0,\n\t7174:  0x03C1,\n\t7175:  0x03C3,\n\t7176:  0x03C4,\n\t7177:  0x03C5,\n\t7178:  0x03C6,\n\t7179:  0x03C7,\n\t7180:  0x03C8,\n\t7181:  0x03C9,\n\t7189:  0xFE35,\n\t7190:  0xFE36,\n\t7191:  0xFE39,\n\t7192:  0xFE3A,\n\t7193:  0xFE3F,\n\t7194:  0xFE40,\n\t7195:  0xFE3D,\n\t7196:  0xFE3E,\n\t7197:  0xFE41,\n\t7198:  0xFE42,\n\t7199:  0xFE43,\n\t7200:  0xFE44,\n\t7203:  0xFE3B,\n\t7204:  0xFE3C,\n\t7205:  0xFE37,\n\t7206:  0xFE38,\n\t7207:  0xFE31,\n\t7209:  0xFE33,\n\t7210:  0xFE34,\n\t7316:  0x0410,\n\t7317:  0x0411,\n\t7318:  0x0412,\n\t7319:  0x0413,\n\t7320:  0x0414,\n\t7321:  0x0415,\n\t7322:  0x0401,\n\t7323:  0x0416,\n\t7324:  0x0417,\n\t7325:  0x0418,\n\t7326:  0x0419,\n\t7327:  0x041A,\n\t7328:  0x041B,\n\t7329:  0x041C,\n\t7330:  0x041D,\n\t7331:  0x041E,\n\t7332:  0x041F,\n\t7333:  0x0420,\n\t7334:  0x0421,\n\t7335:  0x0422,\n\t7336:  0x0423,\n\t7337:  0x0424,\n\t7338:  0x0425,\n\t7339:  0x0426,\n\t7340:  0x0427,\n\t7341:  0x0428,\n\t7342:  0x0429,\n\t7343:  0x042A,\n\t7344:  0x042B,\n\t7345:  0x042C,\n\t7346:  0x042D,\n\t7347:  0x042E,\n\t7348:  0x042F,\n\t7364:  0x0430,\n\t7365:  0x0431,\n\t7366:  0x0432,\n\t7367:  0x0433,\n\t7368:  0x0434,\n\t7369:  0x0435,\n\t7370:  0x0451,\n\t7371:  0x0436,\n\t7372:  0x0437,\n\t7373:  0x0438,\n\t7374:  0x0439,\n\t7375:  0x043A,\n\t7376:  0x043B,\n\t7377:  0x043C,\n\t7378:  0x043D,\n\t7379:  0x043E,\n\t7380:  0x043F,\n\t7381:  0x0440,\n\t7382:  0x0441,\n\t7383:  0x0442,\n\t7384:  0x0443,\n\t7385:  0x0444,\n\t7386:  0x0445,\n\t7387:  0x0446,\n\t7388:  0x0447,\n\t7389:  0x0448,\n\t7390:  0x0449,\n\t7391:  0x044A,\n\t7392:  0x044B,\n\t7393:  0x044C,\n\t7394:  0x044D,\n\t7395:  0x044E,\n\t7396:  0x044F,\n\t7410:  0x02CA,\n\t7411:  0x02CB,\n\t7412:  0x02D9,\n\t7413:  0x2013,\n\t7414:  0x2015,\n\t7415:  0x2025,\n\t7416:  0x2035,\n\t7417:  0x2105,\n\t7418:  0x2109,\n\t7419:  0x2196,\n\t7420:  0x2197,\n\t7421:  0x2198,\n\t7422:  0x2199,\n\t7423:  0x2215,\n\t7424:  0x221F,\n\t7425:  0x2223,\n\t7426:  0x2252,\n\t7427:  0x2266,\n\t7428:  0x2267,\n\t7429:  0x22BF,\n\t7430:  0x2550,\n\t7431:  0x2551,\n\t7432:  0x2552,\n\t7433:  0x2553,\n\t7434:  0x2554,\n\t7435:  0x2555,\n\t7436:  0x2556,\n\t7437:  0x2557,\n\t7438:  0x2558,\n\t7439:  0x2559,\n\t7440:  0x255A,\n\t7441:  0x255B,\n\t7442:  0x255C,\n\t7443:  0x255D,\n\t7444:  0x255E,\n\t7445:  0x255F,\n\t7446:  0x2560,\n\t7447:  0x2561,\n\t7448:  0x2562,\n\t7449:  0x2563,\n\t7450:  0x2564,\n\t7451:  0x2565,\n\t7452:  0x2566,\n\t7453:  0x2567,\n\t7454:  0x2568,\n\t7455:  0x2569,\n\t7456:  0x256A,\n\t7457:  0x256B,\n\t7458:  0x256C,\n\t7459:  0x256D,\n\t7460:  0x256E,\n\t7461:  0x256F,\n\t7462:  0x2570,\n\t7463:  0x2571,\n\t7464:  0x2572,\n\t7465:  0x2573,\n\t7466:  0x2581,\n\t7467:  0x2582,\n\t7468:  0x2583,\n\t7469:  0x2584,\n\t7470:  0x2585,\n\t7471:  0x2586,\n\t7472:  0x2587,\n\t7473:  0x2588,\n\t7474:  0x2589,\n\t7475:  0x258A,\n\t7476:  0x258B,\n\t7477:  0x258C,\n\t7478:  0x258D,\n\t7479:  0x258E,\n\t7480:  0x258F,\n\t7481:  0x2593,\n\t7482:  0x2594,\n\t7483:  0x2595,\n\t7484:  0x25BC,\n\t7485:  0x25BD,\n\t7486:  0x25E2,\n\t7487:  0x25E3,\n\t7488:  0x25E4,\n\t7489:  0x25E5,\n\t7490:  0x2609,\n\t7491:  0x2295,\n\t7492:  0x3012,\n\t7493:  0x301D,\n\t7494:  0x301E,\n\t7506:  0x0101,\n\t7507:  0x00E1,\n\t7508:  0x01CE,\n\t7509:  0x00E0,\n\t7510:  0x0113,\n\t7511:  0x00E9,\n\t7512:  0x011B,\n\t7513:  0x00E8,\n\t7514:  0x012B,\n\t7515:  0x00ED,\n\t7516:  0x01D0,\n\t7517:  0x00EC,\n\t7518:  0x014D,\n\t7519:  0x00F3,\n\t7520:  0x01D2,\n\t7521:  0x00F2,\n\t7522:  0x016B,\n\t7523:  0x00FA,\n\t7524:  0x01D4,\n\t7525:  0x00F9,\n\t7526:  0x01D6,\n\t7527:  0x01D8,\n\t7528:  0x01DA,\n\t7529:  0x01DC,\n\t7530:  0x00FC,\n\t7531:  0x00EA,\n\t7532:  0x0251,\n\t7534:  0x0144,\n\t7535:  0x0148,\n\t7536:  0x01F9,\n\t7537:  0x0261,\n\t7542:  0x3105,\n\t7543:  0x3106,\n\t7544:  0x3107,\n\t7545:  0x3108,\n\t7546:  0x3109,\n\t7547:  0x310A,\n\t7548:  0x310B,\n\t7549:  0x310C,\n\t7550:  0x310D,\n\t7551:  0x310E,\n\t7552:  0x310F,\n\t7553:  0x3110,\n\t7554:  0x3111,\n\t7555:  0x3112,\n\t7556:  0x3113,\n\t7557:  0x3114,\n\t7558:  0x3115,\n\t7559:  0x3116,\n\t7560:  0x3117,\n\t7561:  0x3118,\n\t7562:  0x3119,\n\t7563:  0x311A,\n\t7564:  0x311B,\n\t7565:  0x311C,\n\t7566:  0x311D,\n\t7567:  0x311E,\n\t7568:  0x311F,\n\t7569:  0x3120,\n\t7570:  0x3121,\n\t7571:  0x3122,\n\t7572:  0x3123,\n\t7573:  0x3124,\n\t7574:  0x3125,\n\t7575:  0x3126,\n\t7576:  0x3127,\n\t7577:  0x3128,\n\t7578:  0x3129,\n\t7600:  0x3021,\n\t7601:  0x3022,\n\t7602:  0x3023,\n\t7603:  0x3024,\n\t7604:  0x3025,\n\t7605:  0x3026,\n\t7606:  0x3027,\n\t7607:  0x3028,\n\t7608:  0x3029,\n\t7609:  0x32A3,\n\t7610:  0x338E,\n\t7611:  0x338F,\n\t7612:  0x339C,\n\t7613:  0x339D,\n\t7614:  0x339E,\n\t7615:  0x33A1,\n\t7616:  0x33C4,\n\t7617:  0x33CE,\n\t7618:  0x33D1,\n\t7619:  0x33D2,\n\t7620:  0x33D5,\n\t7621:  0xFE30,\n\t7622:  0xFFE2,\n\t7623:  0xFFE4,\n\t7625:  0x2121,\n\t7626:  0x3231,\n\t7628:  0x2010,\n\t7632:  0x30FC,\n\t7633:  0x309B,\n\t7634:  0x309C,\n\t7635:  0x30FD,\n\t7636:  0x30FE,\n\t7637:  0x3006,\n\t7638:  0x309D,\n\t7639:  0x309E,\n\t7640:  0xFE49,\n\t7641:  0xFE4A,\n\t7642:  0xFE4B,\n\t7643:  0xFE4C,\n\t7644:  0xFE4D,\n\t7645:  0xFE4E,\n\t7646:  0xFE4F,\n\t7647:  0xFE50,\n\t7648:  0xFE51,\n\t7649:  0xFE52,\n\t7650:  0xFE54,\n\t7651:  0xFE55,\n\t7652:  0xFE56,\n\t7653:  0xFE57,\n\t7654:  0xFE59,\n\t7655:  0xFE5A,\n\t7656:  0xFE5B,\n\t7657:  0xFE5C,\n\t7658:  0xFE5D,\n\t7659:  0xFE5E,\n\t7660:  0xFE5F,\n\t7661:  0xFE60,\n\t7662:  0xFE61,\n\t7663:  0xFE62,\n\t7664:  0xFE63,\n\t7665:  0xFE64,\n\t7666:  0xFE65,\n\t7667:  0xFE66,\n\t7668:  0xFE68,\n\t7669:  0xFE69,\n\t7670:  0xFE6A,\n\t7671:  0xFE6B,\n\t7672:  0x303E,\n\t7673:  0x2FF0,\n\t7674:  0x2FF1,\n\t7675:  0x2FF2,\n\t7676:  0x2FF3,\n\t7677:  0x2FF4,\n\t7678:  0x2FF5,\n\t7679:  0x2FF6,\n\t7680:  0x2FF7,\n\t7681:  0x2FF8,\n\t7682:  0x2FF9,\n\t7683:  0x2FFA,\n\t7684:  0x2FFB,\n\t7685:  0x3007,\n\t7699:  0x2500,\n\t7700:  0x2501,\n\t7701:  0x2502,\n\t7702:  0x2503,\n\t7703:  0x2504,\n\t7704:  0x2505,\n\t7705:  0x2506,\n\t7706:  0x2507,\n\t7707:  0x2508,\n\t7708:  0x2509,\n\t7709:  0x250A,\n\t7710:  0x250B,\n\t7711:  0x250C,\n\t7712:  0x250D,\n\t7713:  0x250E,\n\t7714:  0x250F,\n\t7715:  0x2510,\n\t7716:  0x2511,\n\t7717:  0x2512,\n\t7718:  0x2513,\n\t7719:  0x2514,\n\t7720:  0x2515,\n\t7721:  0x2516,\n\t7722:  0x2517,\n\t7723:  0x2518,\n\t7724:  0x2519,\n\t7725:  0x251A,\n\t7726:  0x251B,\n\t7727:  0x251C,\n\t7728:  0x251D,\n\t7729:  0x251E,\n\t7730:  0x251F,\n\t7731:  0x2520,\n\t7732:  0x2521,\n\t7733:  0x2522,\n\t7734:  0x2523,\n\t7735:  0x2524,\n\t7736:  0x2525,\n\t7737:  0x2526,\n\t7738:  0x2527,\n\t7739:  0x2528,\n\t7740:  0x2529,\n\t7741:  0x252A,\n\t7742:  0x252B,\n\t7743:  0x252C,\n\t7744:  0x252D,\n\t7745:  0x252E,\n\t7746:  0x252F,\n\t7747:  0x2530,\n\t7748:  0x2531,\n\t7749:  0x2532,\n\t7750:  0x2533,\n\t7751:  0x2534,\n\t7752:  0x2535,\n\t7753:  0x2536,\n\t7754:  0x2537,\n\t7755:  0x2538,\n\t7756:  0x2539,\n\t7757:  0x253A,\n\t7758:  0x253B,\n\t7759:  0x253C,\n\t7760:  0x253D,\n\t7761:  0x253E,\n\t7762:  0x253F,\n\t7763:  0x2540,\n\t7764:  0x2541,\n\t7765:  0x2542,\n\t7766:  0x2543,\n\t7767:  0x2544,\n\t7768:  0x2545,\n\t7769:  0x2546,\n\t7770:  0x2547,\n\t7771:  0x2548,\n\t7772:  0x2549,\n\t7773:  0x254A,\n\t7774:  0x254B,\n\t7790:  0x72DC,\n\t7791:  0x72DD,\n\t7792:  0x72DF,\n\t7793:  0x72E2,\n\t7794:  0x72E3,\n\t7795:  0x72E4,\n\t7796:  0x72E5,\n\t7797:  0x72E6,\n\t7798:  0x72E7,\n\t7799:  0x72EA,\n\t7800:  0x72EB,\n\t7801:  0x72F5,\n\t7802:  0x72F6,\n\t7803:  0x72F9,\n\t7804:  0x72FD,\n\t7805:  0x72FE,\n\t7806:  0x72FF,\n\t7807:  0x7300,\n\t7808:  0x7302,\n\t7809:  0x7304,\n\t7810:  0x7305,\n\t7811:  0x7306,\n\t7812:  0x7307,\n\t7813:  0x7308,\n\t7814:  0x7309,\n\t7815:  0x730B,\n\t7816:  0x730C,\n\t7817:  0x730D,\n\t7818:  0x730F,\n\t7819:  0x7310,\n\t7820:  0x7311,\n\t7821:  0x7312,\n\t7822:  0x7314,\n\t7823:  0x7318,\n\t7824:  0x7319,\n\t7825:  0x731A,\n\t7826:  0x731F,\n\t7827:  0x7320,\n\t7828:  0x7323,\n\t7829:  0x7324,\n\t7830:  0x7326,\n\t7831:  0x7327,\n\t7832:  0x7328,\n\t7833:  0x732D,\n\t7834:  0x732F,\n\t7835:  0x7330,\n\t7836:  0x7332,\n\t7837:  0x7333,\n\t7838:  0x7335,\n\t7839:  0x7336,\n\t7840:  0x733A,\n\t7841:  0x733B,\n\t7842:  0x733C,\n\t7843:  0x733D,\n\t7844:  0x7340,\n\t7845:  0x7341,\n\t7846:  0x7342,\n\t7847:  0x7343,\n\t7848:  0x7344,\n\t7849:  0x7345,\n\t7850:  0x7346,\n\t7851:  0x7347,\n\t7852:  0x7348,\n\t7853:  0x7349,\n\t7854:  0x734A,\n\t7855:  0x734B,\n\t7856:  0x734C,\n\t7857:  0x734E,\n\t7858:  0x734F,\n\t7859:  0x7351,\n\t7860:  0x7353,\n\t7861:  0x7354,\n\t7862:  0x7355,\n\t7863:  0x7356,\n\t7864:  0x7358,\n\t7865:  0x7359,\n\t7866:  0x735A,\n\t7867:  0x735B,\n\t7868:  0x735C,\n\t7869:  0x735D,\n\t7870:  0x735E,\n\t7871:  0x735F,\n\t7872:  0x7361,\n\t7873:  0x7362,\n\t7874:  0x7363,\n\t7875:  0x7364,\n\t7876:  0x7365,\n\t7877:  0x7366,\n\t7878:  0x7367,\n\t7879:  0x7368,\n\t7880:  0x7369,\n\t7881:  0x736A,\n\t7882:  0x736B,\n\t7883:  0x736E,\n\t7884:  0x7370,\n\t7885:  0x7371,\n\t7980:  0x7372,\n\t7981:  0x7373,\n\t7982:  0x7374,\n\t7983:  0x7375,\n\t7984:  0x7376,\n\t7985:  0x7377,\n\t7986:  0x7378,\n\t7987:  0x7379,\n\t7988:  0x737A,\n\t7989:  0x737B,\n\t7990:  0x737C,\n\t7991:  0x737D,\n\t7992:  0x737F,\n\t7993:  0x7380,\n\t7994:  0x7381,\n\t7995:  0x7382,\n\t7996:  0x7383,\n\t7997:  0x7385,\n\t7998:  0x7386,\n\t7999:  0x7388,\n\t8000:  0x738A,\n\t8001:  0x738C,\n\t8002:  0x738D,\n\t8003:  0x738F,\n\t8004:  0x7390,\n\t8005:  0x7392,\n\t8006:  0x7393,\n\t8007:  0x7394,\n\t8008:  0x7395,\n\t8009:  0x7397,\n\t8010:  0x7398,\n\t8011:  0x7399,\n\t8012:  0x739A,\n\t8013:  0x739C,\n\t8014:  0x739D,\n\t8015:  0x739E,\n\t8016:  0x73A0,\n\t8017:  0x73A1,\n\t8018:  0x73A3,\n\t8019:  0x73A4,\n\t8020:  0x73A5,\n\t8021:  0x73A6,\n\t8022:  0x73A7,\n\t8023:  0x73A8,\n\t8024:  0x73AA,\n\t8025:  0x73AC,\n\t8026:  0x73AD,\n\t8027:  0x73B1,\n\t8028:  0x73B4,\n\t8029:  0x73B5,\n\t8030:  0x73B6,\n\t8031:  0x73B8,\n\t8032:  0x73B9,\n\t8033:  0x73BC,\n\t8034:  0x73BD,\n\t8035:  0x73BE,\n\t8036:  0x73BF,\n\t8037:  0x73C1,\n\t8038:  0x73C3,\n\t8039:  0x73C4,\n\t8040:  0x73C5,\n\t8041:  0x73C6,\n\t8042:  0x73C7,\n\t8043:  0x73CB,\n\t8044:  0x73CC,\n\t8045:  0x73CE,\n\t8046:  0x73D2,\n\t8047:  0x73D3,\n\t8048:  0x73D4,\n\t8049:  0x73D5,\n\t8050:  0x73D6,\n\t8051:  0x73D7,\n\t8052:  0x73D8,\n\t8053:  0x73DA,\n\t8054:  0x73DB,\n\t8055:  0x73DC,\n\t8056:  0x73DD,\n\t8057:  0x73DF,\n\t8058:  0x73E1,\n\t8059:  0x73E2,\n\t8060:  0x73E3,\n\t8061:  0x73E4,\n\t8062:  0x73E6,\n\t8063:  0x73E8,\n\t8064:  0x73EA,\n\t8065:  0x73EB,\n\t8066:  0x73EC,\n\t8067:  0x73EE,\n\t8068:  0x73EF,\n\t8069:  0x73F0,\n\t8070:  0x73F1,\n\t8071:  0x73F3,\n\t8072:  0x73F4,\n\t8073:  0x73F5,\n\t8074:  0x73F6,\n\t8075:  0x73F7,\n\t8170:  0x73F8,\n\t8171:  0x73F9,\n\t8172:  0x73FA,\n\t8173:  0x73FB,\n\t8174:  0x73FC,\n\t8175:  0x73FD,\n\t8176:  0x73FE,\n\t8177:  0x73FF,\n\t8178:  0x7400,\n\t8179:  0x7401,\n\t8180:  0x7402,\n\t8181:  0x7404,\n\t8182:  0x7407,\n\t8183:  0x7408,\n\t8184:  0x740B,\n\t8185:  0x740C,\n\t8186:  0x740D,\n\t8187:  0x740E,\n\t8188:  0x7411,\n\t8189:  0x7412,\n\t8190:  0x7413,\n\t8191:  0x7414,\n\t8192:  0x7415,\n\t8193:  0x7416,\n\t8194:  0x7417,\n\t8195:  0x7418,\n\t8196:  0x7419,\n\t8197:  0x741C,\n\t8198:  0x741D,\n\t8199:  0x741E,\n\t8200:  0x741F,\n\t8201:  0x7420,\n\t8202:  0x7421,\n\t8203:  0x7423,\n\t8204:  0x7424,\n\t8205:  0x7427,\n\t8206:  0x7429,\n\t8207:  0x742B,\n\t8208:  0x742D,\n\t8209:  0x742F,\n\t8210:  0x7431,\n\t8211:  0x7432,\n\t8212:  0x7437,\n\t8213:  0x7438,\n\t8214:  0x7439,\n\t8215:  0x743A,\n\t8216:  0x743B,\n\t8217:  0x743D,\n\t8218:  0x743E,\n\t8219:  0x743F,\n\t8220:  0x7440,\n\t8221:  0x7442,\n\t8222:  0x7443,\n\t8223:  0x7444,\n\t8224:  0x7445,\n\t8225:  0x7446,\n\t8226:  0x7447,\n\t8227:  0x7448,\n\t8228:  0x7449,\n\t8229:  0x744A,\n\t8230:  0x744B,\n\t8231:  0x744C,\n\t8232:  0x744D,\n\t8233:  0x744E,\n\t8234:  0x744F,\n\t8235:  0x7450,\n\t8236:  0x7451,\n\t8237:  0x7452,\n\t8238:  0x7453,\n\t8239:  0x7454,\n\t8240:  0x7456,\n\t8241:  0x7458,\n\t8242:  0x745D,\n\t8243:  0x7460,\n\t8244:  0x7461,\n\t8245:  0x7462,\n\t8246:  0x7463,\n\t8247:  0x7464,\n\t8248:  0x7465,\n\t8249:  0x7466,\n\t8250:  0x7467,\n\t8251:  0x7468,\n\t8252:  0x7469,\n\t8253:  0x746A,\n\t8254:  0x746B,\n\t8255:  0x746C,\n\t8256:  0x746E,\n\t8257:  0x746F,\n\t8258:  0x7471,\n\t8259:  0x7472,\n\t8260:  0x7473,\n\t8261:  0x7474,\n\t8262:  0x7475,\n\t8263:  0x7478,\n\t8264:  0x7479,\n\t8265:  0x747A,\n\t8360:  0x747B,\n\t8361:  0x747C,\n\t8362:  0x747D,\n\t8363:  0x747F,\n\t8364:  0x7482,\n\t8365:  0x7484,\n\t8366:  0x7485,\n\t8367:  0x7486,\n\t8368:  0x7488,\n\t8369:  0x7489,\n\t8370:  0x748A,\n\t8371:  0x748C,\n\t8372:  0x748D,\n\t8373:  0x748F,\n\t8374:  0x7491,\n\t8375:  0x7492,\n\t8376:  0x7493,\n\t8377:  0x7494,\n\t8378:  0x7495,\n\t8379:  0x7496,\n\t8380:  0x7497,\n\t8381:  0x7498,\n\t8382:  0x7499,\n\t8383:  0x749A,\n\t8384:  0x749B,\n\t8385:  0x749D,\n\t8386:  0x749F,\n\t8387:  0x74A0,\n\t8388:  0x74A1,\n\t8389:  0x74A2,\n\t8390:  0x74A3,\n\t8391:  0x74A4,\n\t8392:  0x74A5,\n\t8393:  0x74A6,\n\t8394:  0x74AA,\n\t8395:  0x74AB,\n\t8396:  0x74AC,\n\t8397:  0x74AD,\n\t8398:  0x74AE,\n\t8399:  0x74AF,\n\t8400:  0x74B0,\n\t8401:  0x74B1,\n\t8402:  0x74B2,\n\t8403:  0x74B3,\n\t8404:  0x74B4,\n\t8405:  0x74B5,\n\t8406:  0x74B6,\n\t8407:  0x74B7,\n\t8408:  0x74B8,\n\t8409:  0x74B9,\n\t8410:  0x74BB,\n\t8411:  0x74BC,\n\t8412:  0x74BD,\n\t8413:  0x74BE,\n\t8414:  0x74BF,\n\t8415:  0x74C0,\n\t8416:  0x74C1,\n\t8417:  0x74C2,\n\t8418:  0x74C3,\n\t8419:  0x74C4,\n\t8420:  0x74C5,\n\t8421:  0x74C6,\n\t8422:  0x74C7,\n\t8423:  0x74C8,\n\t8424:  0x74C9,\n\t8425:  0x74CA,\n\t8426:  0x74CB,\n\t8427:  0x74CC,\n\t8428:  0x74CD,\n\t8429:  0x74CE,\n\t8430:  0x74CF,\n\t8431:  0x74D0,\n\t8432:  0x74D1,\n\t8433:  0x74D3,\n\t8434:  0x74D4,\n\t8435:  0x74D5,\n\t8436:  0x74D6,\n\t8437:  0x74D7,\n\t8438:  0x74D8,\n\t8439:  0x74D9,\n\t8440:  0x74DA,\n\t8441:  0x74DB,\n\t8442:  0x74DD,\n\t8443:  0x74DF,\n\t8444:  0x74E1,\n\t8445:  0x74E5,\n\t8446:  0x74E7,\n\t8447:  0x74E8,\n\t8448:  0x74E9,\n\t8449:  0x74EA,\n\t8450:  0x74EB,\n\t8451:  0x74EC,\n\t8452:  0x74ED,\n\t8453:  0x74F0,\n\t8454:  0x74F1,\n\t8455:  0x74F2,\n\t8550:  0x74F3,\n\t8551:  0x74F5,\n\t8552:  0x74F8,\n\t8553:  0x74F9,\n\t8554:  0x74FA,\n\t8555:  0x74FB,\n\t8556:  0x74FC,\n\t8557:  0x74FD,\n\t8558:  0x74FE,\n\t8559:  0x7500,\n\t8560:  0x7501,\n\t8561:  0x7502,\n\t8562:  0x7503,\n\t8563:  0x7505,\n\t8564:  0x7506,\n\t8565:  0x7507,\n\t8566:  0x7508,\n\t8567:  0x7509,\n\t8568:  0x750A,\n\t8569:  0x750B,\n\t8570:  0x750C,\n\t8571:  0x750E,\n\t8572:  0x7510,\n\t8573:  0x7512,\n\t8574:  0x7514,\n\t8575:  0x7515,\n\t8576:  0x7516,\n\t8577:  0x7517,\n\t8578:  0x751B,\n\t8579:  0x751D,\n\t8580:  0x751E,\n\t8581:  0x7520,\n\t8582:  0x7521,\n\t8583:  0x7522,\n\t8584:  0x7523,\n\t8585:  0x7524,\n\t8586:  0x7526,\n\t8587:  0x7527,\n\t8588:  0x752A,\n\t8589:  0x752E,\n\t8590:  0x7534,\n\t8591:  0x7536,\n\t8592:  0x7539,\n\t8593:  0x753C,\n\t8594:  0x753D,\n\t8595:  0x753F,\n\t8596:  0x7541,\n\t8597:  0x7542,\n\t8598:  0x7543,\n\t8599:  0x7544,\n\t8600:  0x7546,\n\t8601:  0x7547,\n\t8602:  0x7549,\n\t8603:  0x754A,\n\t8604:  0x754D,\n\t8605:  0x7550,\n\t8606:  0x7551,\n\t8607:  0x7552,\n\t8608:  0x7553,\n\t8609:  0x7555,\n\t8610:  0x7556,\n\t8611:  0x7557,\n\t8612:  0x7558,\n\t8613:  0x755D,\n\t8614:  0x755E,\n\t8615:  0x755F,\n\t8616:  0x7560,\n\t8617:  0x7561,\n\t8618:  0x7562,\n\t8619:  0x7563,\n\t8620:  0x7564,\n\t8621:  0x7567,\n\t8622:  0x7568,\n\t8623:  0x7569,\n\t8624:  0x756B,\n\t8625:  0x756C,\n\t8626:  0x756D,\n\t8627:  0x756E,\n\t8628:  0x756F,\n\t8629:  0x7570,\n\t8630:  0x7571,\n\t8631:  0x7573,\n\t8632:  0x7575,\n\t8633:  0x7576,\n\t8634:  0x7577,\n\t8635:  0x757A,\n\t8636:  0x757B,\n\t8637:  0x757C,\n\t8638:  0x757D,\n\t8639:  0x757E,\n\t8640:  0x7580,\n\t8641:  0x7581,\n\t8642:  0x7582,\n\t8643:  0x7584,\n\t8644:  0x7585,\n\t8645:  0x7587,\n\t8740:  0x7588,\n\t8741:  0x7589,\n\t8742:  0x758A,\n\t8743:  0x758C,\n\t8744:  0x758D,\n\t8745:  0x758E,\n\t8746:  0x7590,\n\t8747:  0x7593,\n\t8748:  0x7595,\n\t8749:  0x7598,\n\t8750:  0x759B,\n\t8751:  0x759C,\n\t8752:  0x759E,\n\t8753:  0x75A2,\n\t8754:  0x75A6,\n\t8755:  0x75A7,\n\t8756:  0x75A8,\n\t8757:  0x75A9,\n\t8758:  0x75AA,\n\t8759:  0x75AD,\n\t8760:  0x75B6,\n\t8761:  0x75B7,\n\t8762:  0x75BA,\n\t8763:  0x75BB,\n\t8764:  0x75BF,\n\t8765:  0x75C0,\n\t8766:  0x75C1,\n\t8767:  0x75C6,\n\t8768:  0x75CB,\n\t8769:  0x75CC,\n\t8770:  0x75CE,\n\t8771:  0x75CF,\n\t8772:  0x75D0,\n\t8773:  0x75D1,\n\t8774:  0x75D3,\n\t8775:  0x75D7,\n\t8776:  0x75D9,\n\t8777:  0x75DA,\n\t8778:  0x75DC,\n\t8779:  0x75DD,\n\t8780:  0x75DF,\n\t8781:  0x75E0,\n\t8782:  0x75E1,\n\t8783:  0x75E5,\n\t8784:  0x75E9,\n\t8785:  0x75EC,\n\t8786:  0x75ED,\n\t8787:  0x75EE,\n\t8788:  0x75EF,\n\t8789:  0x75F2,\n\t8790:  0x75F3,\n\t8791:  0x75F5,\n\t8792:  0x75F6,\n\t8793:  0x75F7,\n\t8794:  0x75F8,\n\t8795:  0x75FA,\n\t8796:  0x75FB,\n\t8797:  0x75FD,\n\t8798:  0x75FE,\n\t8799:  0x7602,\n\t8800:  0x7604,\n\t8801:  0x7606,\n\t8802:  0x7607,\n\t8803:  0x7608,\n\t8804:  0x7609,\n\t8805:  0x760B,\n\t8806:  0x760D,\n\t8807:  0x760E,\n\t8808:  0x760F,\n\t8809:  0x7611,\n\t8810:  0x7612,\n\t8811:  0x7613,\n\t8812:  0x7614,\n\t8813:  0x7616,\n\t8814:  0x761A,\n\t8815:  0x761C,\n\t8816:  0x761D,\n\t8817:  0x761E,\n\t8818:  0x7621,\n\t8819:  0x7623,\n\t8820:  0x7627,\n\t8821:  0x7628,\n\t8822:  0x762C,\n\t8823:  0x762E,\n\t8824:  0x762F,\n\t8825:  0x7631,\n\t8826:  0x7632,\n\t8827:  0x7636,\n\t8828:  0x7637,\n\t8829:  0x7639,\n\t8830:  0x763A,\n\t8831:  0x763B,\n\t8832:  0x763D,\n\t8833:  0x7641,\n\t8834:  0x7642,\n\t8835:  0x7644,\n\t8930:  0x7645,\n\t8931:  0x7646,\n\t8932:  0x7647,\n\t8933:  0x7648,\n\t8934:  0x7649,\n\t8935:  0x764A,\n\t8936:  0x764B,\n\t8937:  0x764E,\n\t8938:  0x764F,\n\t8939:  0x7650,\n\t8940:  0x7651,\n\t8941:  0x7652,\n\t8942:  0x7653,\n\t8943:  0x7655,\n\t8944:  0x7657,\n\t8945:  0x7658,\n\t8946:  0x7659,\n\t8947:  0x765A,\n\t8948:  0x765B,\n\t8949:  0x765D,\n\t8950:  0x765F,\n\t8951:  0x7660,\n\t8952:  0x7661,\n\t8953:  0x7662,\n\t8954:  0x7664,\n\t8955:  0x7665,\n\t8956:  0x7666,\n\t8957:  0x7667,\n\t8958:  0x7668,\n\t8959:  0x7669,\n\t8960:  0x766A,\n\t8961:  0x766C,\n\t8962:  0x766D,\n\t8963:  0x766E,\n\t8964:  0x7670,\n\t8965:  0x7671,\n\t8966:  0x7672,\n\t8967:  0x7673,\n\t8968:  0x7674,\n\t8969:  0x7675,\n\t8970:  0x7676,\n\t8971:  0x7677,\n\t8972:  0x7679,\n\t8973:  0x767A,\n\t8974:  0x767C,\n\t8975:  0x767F,\n\t8976:  0x7680,\n\t8977:  0x7681,\n\t8978:  0x7683,\n\t8979:  0x7685,\n\t8980:  0x7689,\n\t8981:  0x768A,\n\t8982:  0x768C,\n\t8983:  0x768D,\n\t8984:  0x768F,\n\t8985:  0x7690,\n\t8986:  0x7692,\n\t8987:  0x7694,\n\t8988:  0x7695,\n\t8989:  0x7697,\n\t8990:  0x7698,\n\t8991:  0x769A,\n\t8992:  0x769B,\n\t8993:  0x769C,\n\t8994:  0x769D,\n\t8995:  0x769E,\n\t8996:  0x769F,\n\t8997:  0x76A0,\n\t8998:  0x76A1,\n\t8999:  0x76A2,\n\t9000:  0x76A3,\n\t9001:  0x76A5,\n\t9002:  0x76A6,\n\t9003:  0x76A7,\n\t9004:  0x76A8,\n\t9005:  0x76A9,\n\t9006:  0x76AA,\n\t9007:  0x76AB,\n\t9008:  0x76AC,\n\t9009:  0x76AD,\n\t9010:  0x76AF,\n\t9011:  0x76B0,\n\t9012:  0x76B3,\n\t9013:  0x76B5,\n\t9014:  0x76B6,\n\t9015:  0x76B7,\n\t9016:  0x76B8,\n\t9017:  0x76B9,\n\t9018:  0x76BA,\n\t9019:  0x76BB,\n\t9020:  0x76BC,\n\t9021:  0x76BD,\n\t9022:  0x76BE,\n\t9023:  0x76C0,\n\t9024:  0x76C1,\n\t9025:  0x76C3,\n\t9026:  0x554A,\n\t9027:  0x963F,\n\t9028:  0x57C3,\n\t9029:  0x6328,\n\t9030:  0x54CE,\n\t9031:  0x5509,\n\t9032:  0x54C0,\n\t9033:  0x7691,\n\t9034:  0x764C,\n\t9035:  0x853C,\n\t9036:  0x77EE,\n\t9037:  0x827E,\n\t9038:  0x788D,\n\t9039:  0x7231,\n\t9040:  0x9698,\n\t9041:  0x978D,\n\t9042:  0x6C28,\n\t9043:  0x5B89,\n\t9044:  0x4FFA,\n\t9045:  0x6309,\n\t9046:  0x6697,\n\t9047:  0x5CB8,\n\t9048:  0x80FA,\n\t9049:  0x6848,\n\t9050:  0x80AE,\n\t9051:  0x6602,\n\t9052:  0x76CE,\n\t9053:  0x51F9,\n\t9054:  0x6556,\n\t9055:  0x71AC,\n\t9056:  0x7FF1,\n\t9057:  0x8884,\n\t9058:  0x50B2,\n\t9059:  0x5965,\n\t9060:  0x61CA,\n\t9061:  0x6FB3,\n\t9062:  0x82AD,\n\t9063:  0x634C,\n\t9064:  0x6252,\n\t9065:  0x53ED,\n\t9066:  0x5427,\n\t9067:  0x7B06,\n\t9068:  0x516B,\n\t9069:  0x75A4,\n\t9070:  0x5DF4,\n\t9071:  0x62D4,\n\t9072:  0x8DCB,\n\t9073:  0x9776,\n\t9074:  0x628A,\n\t9075:  0x8019,\n\t9076:  0x575D,\n\t9077:  0x9738,\n\t9078:  0x7F62,\n\t9079:  0x7238,\n\t9080:  0x767D,\n\t9081:  0x67CF,\n\t9082:  0x767E,\n\t9083:  0x6446,\n\t9084:  0x4F70,\n\t9085:  0x8D25,\n\t9086:  0x62DC,\n\t9087:  0x7A17,\n\t9088:  0x6591,\n\t9089:  0x73ED,\n\t9090:  0x642C,\n\t9091:  0x6273,\n\t9092:  0x822C,\n\t9093:  0x9881,\n\t9094:  0x677F,\n\t9095:  0x7248,\n\t9096:  0x626E,\n\t9097:  0x62CC,\n\t9098:  0x4F34,\n\t9099:  0x74E3,\n\t9100:  0x534A,\n\t9101:  0x529E,\n\t9102:  0x7ECA,\n\t9103:  0x90A6,\n\t9104:  0x5E2E,\n\t9105:  0x6886,\n\t9106:  0x699C,\n\t9107:  0x8180,\n\t9108:  0x7ED1,\n\t9109:  0x68D2,\n\t9110:  0x78C5,\n\t9111:  0x868C,\n\t9112:  0x9551,\n\t9113:  0x508D,\n\t9114:  0x8C24,\n\t9115:  0x82DE,\n\t9116:  0x80DE,\n\t9117:  0x5305,\n\t9118:  0x8912,\n\t9119:  0x5265,\n\t9120:  0x76C4,\n\t9121:  0x76C7,\n\t9122:  0x76C9,\n\t9123:  0x76CB,\n\t9124:  0x76CC,\n\t9125:  0x76D3,\n\t9126:  0x76D5,\n\t9127:  0x76D9,\n\t9128:  0x76DA,\n\t9129:  0x76DC,\n\t9130:  0x76DD,\n\t9131:  0x76DE,\n\t9132:  0x76E0,\n\t9133:  0x76E1,\n\t9134:  0x76E2,\n\t9135:  0x76E3,\n\t9136:  0x76E4,\n\t9137:  0x76E6,\n\t9138:  0x76E7,\n\t9139:  0x76E8,\n\t9140:  0x76E9,\n\t9141:  0x76EA,\n\t9142:  0x76EB,\n\t9143:  0x76EC,\n\t9144:  0x76ED,\n\t9145:  0x76F0,\n\t9146:  0x76F3,\n\t9147:  0x76F5,\n\t9148:  0x76F6,\n\t9149:  0x76F7,\n\t9150:  0x76FA,\n\t9151:  0x76FB,\n\t9152:  0x76FD,\n\t9153:  0x76FF,\n\t9154:  0x7700,\n\t9155:  0x7702,\n\t9156:  0x7703,\n\t9157:  0x7705,\n\t9158:  0x7706,\n\t9159:  0x770A,\n\t9160:  0x770C,\n\t9161:  0x770E,\n\t9162:  0x770F,\n\t9163:  0x7710,\n\t9164:  0x7711,\n\t9165:  0x7712,\n\t9166:  0x7713,\n\t9167:  0x7714,\n\t9168:  0x7715,\n\t9169:  0x7716,\n\t9170:  0x7717,\n\t9171:  0x7718,\n\t9172:  0x771B,\n\t9173:  0x771C,\n\t9174:  0x771D,\n\t9175:  0x771E,\n\t9176:  0x7721,\n\t9177:  0x7723,\n\t9178:  0x7724,\n\t9179:  0x7725,\n\t9180:  0x7727,\n\t9181:  0x772A,\n\t9182:  0x772B,\n\t9183:  0x772C,\n\t9184:  0x772E,\n\t9185:  0x7730,\n\t9186:  0x7731,\n\t9187:  0x7732,\n\t9188:  0x7733,\n\t9189:  0x7734,\n\t9190:  0x7739,\n\t9191:  0x773B,\n\t9192:  0x773D,\n\t9193:  0x773E,\n\t9194:  0x773F,\n\t9195:  0x7742,\n\t9196:  0x7744,\n\t9197:  0x7745,\n\t9198:  0x7746,\n\t9199:  0x7748,\n\t9200:  0x7749,\n\t9201:  0x774A,\n\t9202:  0x774B,\n\t9203:  0x774C,\n\t9204:  0x774D,\n\t9205:  0x774E,\n\t9206:  0x774F,\n\t9207:  0x7752,\n\t9208:  0x7753,\n\t9209:  0x7754,\n\t9210:  0x7755,\n\t9211:  0x7756,\n\t9212:  0x7757,\n\t9213:  0x7758,\n\t9214:  0x7759,\n\t9215:  0x775C,\n\t9216:  0x8584,\n\t9217:  0x96F9,\n\t9218:  0x4FDD,\n\t9219:  0x5821,\n\t9220:  0x9971,\n\t9221:  0x5B9D,\n\t9222:  0x62B1,\n\t9223:  0x62A5,\n\t9224:  0x66B4,\n\t9225:  0x8C79,\n\t9226:  0x9C8D,\n\t9227:  0x7206,\n\t9228:  0x676F,\n\t9229:  0x7891,\n\t9230:  0x60B2,\n\t9231:  0x5351,\n\t9232:  0x5317,\n\t9233:  0x8F88,\n\t9234:  0x80CC,\n\t9235:  0x8D1D,\n\t9236:  0x94A1,\n\t9237:  0x500D,\n\t9238:  0x72C8,\n\t9239:  0x5907,\n\t9240:  0x60EB,\n\t9241:  0x7119,\n\t9242:  0x88AB,\n\t9243:  0x5954,\n\t9244:  0x82EF,\n\t9245:  0x672C,\n\t9246:  0x7B28,\n\t9247:  0x5D29,\n\t9248:  0x7EF7,\n\t9249:  0x752D,\n\t9250:  0x6CF5,\n\t9251:  0x8E66,\n\t9252:  0x8FF8,\n\t9253:  0x903C,\n\t9254:  0x9F3B,\n\t9255:  0x6BD4,\n\t9256:  0x9119,\n\t9257:  0x7B14,\n\t9258:  0x5F7C,\n\t9259:  0x78A7,\n\t9260:  0x84D6,\n\t9261:  0x853D,\n\t9262:  0x6BD5,\n\t9263:  0x6BD9,\n\t9264:  0x6BD6,\n\t9265:  0x5E01,\n\t9266:  0x5E87,\n\t9267:  0x75F9,\n\t9268:  0x95ED,\n\t9269:  0x655D,\n\t9270:  0x5F0A,\n\t9271:  0x5FC5,\n\t9272:  0x8F9F,\n\t9273:  0x58C1,\n\t9274:  0x81C2,\n\t9275:  0x907F,\n\t9276:  0x965B,\n\t9277:  0x97AD,\n\t9278:  0x8FB9,\n\t9279:  0x7F16,\n\t9280:  0x8D2C,\n\t9281:  0x6241,\n\t9282:  0x4FBF,\n\t9283:  0x53D8,\n\t9284:  0x535E,\n\t9285:  0x8FA8,\n\t9286:  0x8FA9,\n\t9287:  0x8FAB,\n\t9288:  0x904D,\n\t9289:  0x6807,\n\t9290:  0x5F6A,\n\t9291:  0x8198,\n\t9292:  0x8868,\n\t9293:  0x9CD6,\n\t9294:  0x618B,\n\t9295:  0x522B,\n\t9296:  0x762A,\n\t9297:  0x5F6C,\n\t9298:  0x658C,\n\t9299:  0x6FD2,\n\t9300:  0x6EE8,\n\t9301:  0x5BBE,\n\t9302:  0x6448,\n\t9303:  0x5175,\n\t9304:  0x51B0,\n\t9305:  0x67C4,\n\t9306:  0x4E19,\n\t9307:  0x79C9,\n\t9308:  0x997C,\n\t9309:  0x70B3,\n\t9310:  0x775D,\n\t9311:  0x775E,\n\t9312:  0x775F,\n\t9313:  0x7760,\n\t9314:  0x7764,\n\t9315:  0x7767,\n\t9316:  0x7769,\n\t9317:  0x776A,\n\t9318:  0x776D,\n\t9319:  0x776E,\n\t9320:  0x776F,\n\t9321:  0x7770,\n\t9322:  0x7771,\n\t9323:  0x7772,\n\t9324:  0x7773,\n\t9325:  0x7774,\n\t9326:  0x7775,\n\t9327:  0x7776,\n\t9328:  0x7777,\n\t9329:  0x7778,\n\t9330:  0x777A,\n\t9331:  0x777B,\n\t9332:  0x777C,\n\t9333:  0x7781,\n\t9334:  0x7782,\n\t9335:  0x7783,\n\t9336:  0x7786,\n\t9337:  0x7787,\n\t9338:  0x7788,\n\t9339:  0x7789,\n\t9340:  0x778A,\n\t9341:  0x778B,\n\t9342:  0x778F,\n\t9343:  0x7790,\n\t9344:  0x7793,\n\t9345:  0x7794,\n\t9346:  0x7795,\n\t9347:  0x7796,\n\t9348:  0x7797,\n\t9349:  0x7798,\n\t9350:  0x7799,\n\t9351:  0x779A,\n\t9352:  0x779B,\n\t9353:  0x779C,\n\t9354:  0x779D,\n\t9355:  0x779E,\n\t9356:  0x77A1,\n\t9357:  0x77A3,\n\t9358:  0x77A4,\n\t9359:  0x77A6,\n\t9360:  0x77A8,\n\t9361:  0x77AB,\n\t9362:  0x77AD,\n\t9363:  0x77AE,\n\t9364:  0x77AF,\n\t9365:  0x77B1,\n\t9366:  0x77B2,\n\t9367:  0x77B4,\n\t9368:  0x77B6,\n\t9369:  0x77B7,\n\t9370:  0x77B8,\n\t9371:  0x77B9,\n\t9372:  0x77BA,\n\t9373:  0x77BC,\n\t9374:  0x77BE,\n\t9375:  0x77C0,\n\t9376:  0x77C1,\n\t9377:  0x77C2,\n\t9378:  0x77C3,\n\t9379:  0x77C4,\n\t9380:  0x77C5,\n\t9381:  0x77C6,\n\t9382:  0x77C7,\n\t9383:  0x77C8,\n\t9384:  0x77C9,\n\t9385:  0x77CA,\n\t9386:  0x77CB,\n\t9387:  0x77CC,\n\t9388:  0x77CE,\n\t9389:  0x77CF,\n\t9390:  0x77D0,\n\t9391:  0x77D1,\n\t9392:  0x77D2,\n\t9393:  0x77D3,\n\t9394:  0x77D4,\n\t9395:  0x77D5,\n\t9396:  0x77D6,\n\t9397:  0x77D8,\n\t9398:  0x77D9,\n\t9399:  0x77DA,\n\t9400:  0x77DD,\n\t9401:  0x77DE,\n\t9402:  0x77DF,\n\t9403:  0x77E0,\n\t9404:  0x77E1,\n\t9405:  0x77E4,\n\t9406:  0x75C5,\n\t9407:  0x5E76,\n\t9408:  0x73BB,\n\t9409:  0x83E0,\n\t9410:  0x64AD,\n\t9411:  0x62E8,\n\t9412:  0x94B5,\n\t9413:  0x6CE2,\n\t9414:  0x535A,\n\t9415:  0x52C3,\n\t9416:  0x640F,\n\t9417:  0x94C2,\n\t9418:  0x7B94,\n\t9419:  0x4F2F,\n\t9420:  0x5E1B,\n\t9421:  0x8236,\n\t9422:  0x8116,\n\t9423:  0x818A,\n\t9424:  0x6E24,\n\t9425:  0x6CCA,\n\t9426:  0x9A73,\n\t9427:  0x6355,\n\t9428:  0x535C,\n\t9429:  0x54FA,\n\t9430:  0x8865,\n\t9431:  0x57E0,\n\t9432:  0x4E0D,\n\t9433:  0x5E03,\n\t9434:  0x6B65,\n\t9435:  0x7C3F,\n\t9436:  0x90E8,\n\t9437:  0x6016,\n\t9438:  0x64E6,\n\t9439:  0x731C,\n\t9440:  0x88C1,\n\t9441:  0x6750,\n\t9442:  0x624D,\n\t9443:  0x8D22,\n\t9444:  0x776C,\n\t9445:  0x8E29,\n\t9446:  0x91C7,\n\t9447:  0x5F69,\n\t9448:  0x83DC,\n\t9449:  0x8521,\n\t9450:  0x9910,\n\t9451:  0x53C2,\n\t9452:  0x8695,\n\t9453:  0x6B8B,\n\t9454:  0x60ED,\n\t9455:  0x60E8,\n\t9456:  0x707F,\n\t9457:  0x82CD,\n\t9458:  0x8231,\n\t9459:  0x4ED3,\n\t9460:  0x6CA7,\n\t9461:  0x85CF,\n\t9462:  0x64CD,\n\t9463:  0x7CD9,\n\t9464:  0x69FD,\n\t9465:  0x66F9,\n\t9466:  0x8349,\n\t9467:  0x5395,\n\t9468:  0x7B56,\n\t9469:  0x4FA7,\n\t9470:  0x518C,\n\t9471:  0x6D4B,\n\t9472:  0x5C42,\n\t9473:  0x8E6D,\n\t9474:  0x63D2,\n\t9475:  0x53C9,\n\t9476:  0x832C,\n\t9477:  0x8336,\n\t9478:  0x67E5,\n\t9479:  0x78B4,\n\t9480:  0x643D,\n\t9481:  0x5BDF,\n\t9482:  0x5C94,\n\t9483:  0x5DEE,\n\t9484:  0x8BE7,\n\t9485:  0x62C6,\n\t9486:  0x67F4,\n\t9487:  0x8C7A,\n\t9488:  0x6400,\n\t9489:  0x63BA,\n\t9490:  0x8749,\n\t9491:  0x998B,\n\t9492:  0x8C17,\n\t9493:  0x7F20,\n\t9494:  0x94F2,\n\t9495:  0x4EA7,\n\t9496:  0x9610,\n\t9497:  0x98A4,\n\t9498:  0x660C,\n\t9499:  0x7316,\n\t9500:  0x77E6,\n\t9501:  0x77E8,\n\t9502:  0x77EA,\n\t9503:  0x77EF,\n\t9504:  0x77F0,\n\t9505:  0x77F1,\n\t9506:  0x77F2,\n\t9507:  0x77F4,\n\t9508:  0x77F5,\n\t9509:  0x77F7,\n\t9510:  0x77F9,\n\t9511:  0x77FA,\n\t9512:  0x77FB,\n\t9513:  0x77FC,\n\t9514:  0x7803,\n\t9515:  0x7804,\n\t9516:  0x7805,\n\t9517:  0x7806,\n\t9518:  0x7807,\n\t9519:  0x7808,\n\t9520:  0x780A,\n\t9521:  0x780B,\n\t9522:  0x780E,\n\t9523:  0x780F,\n\t9524:  0x7810,\n\t9525:  0x7813,\n\t9526:  0x7815,\n\t9527:  0x7819,\n\t9528:  0x781B,\n\t9529:  0x781E,\n\t9530:  0x7820,\n\t9531:  0x7821,\n\t9532:  0x7822,\n\t9533:  0x7824,\n\t9534:  0x7828,\n\t9535:  0x782A,\n\t9536:  0x782B,\n\t9537:  0x782E,\n\t9538:  0x782F,\n\t9539:  0x7831,\n\t9540:  0x7832,\n\t9541:  0x7833,\n\t9542:  0x7835,\n\t9543:  0x7836,\n\t9544:  0x783D,\n\t9545:  0x783F,\n\t9546:  0x7841,\n\t9547:  0x7842,\n\t9548:  0x7843,\n\t9549:  0x7844,\n\t9550:  0x7846,\n\t9551:  0x7848,\n\t9552:  0x7849,\n\t9553:  0x784A,\n\t9554:  0x784B,\n\t9555:  0x784D,\n\t9556:  0x784F,\n\t9557:  0x7851,\n\t9558:  0x7853,\n\t9559:  0x7854,\n\t9560:  0x7858,\n\t9561:  0x7859,\n\t9562:  0x785A,\n\t9563:  0x785B,\n\t9564:  0x785C,\n\t9565:  0x785E,\n\t9566:  0x785F,\n\t9567:  0x7860,\n\t9568:  0x7861,\n\t9569:  0x7862,\n\t9570:  0x7863,\n\t9571:  0x7864,\n\t9572:  0x7865,\n\t9573:  0x7866,\n\t9574:  0x7867,\n\t9575:  0x7868,\n\t9576:  0x7869,\n\t9577:  0x786F,\n\t9578:  0x7870,\n\t9579:  0x7871,\n\t9580:  0x7872,\n\t9581:  0x7873,\n\t9582:  0x7874,\n\t9583:  0x7875,\n\t9584:  0x7876,\n\t9585:  0x7878,\n\t9586:  0x7879,\n\t9587:  0x787A,\n\t9588:  0x787B,\n\t9589:  0x787D,\n\t9590:  0x787E,\n\t9591:  0x787F,\n\t9592:  0x7880,\n\t9593:  0x7881,\n\t9594:  0x7882,\n\t9595:  0x7883,\n\t9596:  0x573A,\n\t9597:  0x5C1D,\n\t9598:  0x5E38,\n\t9599:  0x957F,\n\t9600:  0x507F,\n\t9601:  0x80A0,\n\t9602:  0x5382,\n\t9603:  0x655E,\n\t9604:  0x7545,\n\t9605:  0x5531,\n\t9606:  0x5021,\n\t9607:  0x8D85,\n\t9608:  0x6284,\n\t9609:  0x949E,\n\t9610:  0x671D,\n\t9611:  0x5632,\n\t9612:  0x6F6E,\n\t9613:  0x5DE2,\n\t9614:  0x5435,\n\t9615:  0x7092,\n\t9616:  0x8F66,\n\t9617:  0x626F,\n\t9618:  0x64A4,\n\t9619:  0x63A3,\n\t9620:  0x5F7B,\n\t9621:  0x6F88,\n\t9622:  0x90F4,\n\t9623:  0x81E3,\n\t9624:  0x8FB0,\n\t9625:  0x5C18,\n\t9626:  0x6668,\n\t9627:  0x5FF1,\n\t9628:  0x6C89,\n\t9629:  0x9648,\n\t9630:  0x8D81,\n\t9631:  0x886C,\n\t9632:  0x6491,\n\t9633:  0x79F0,\n\t9634:  0x57CE,\n\t9635:  0x6A59,\n\t9636:  0x6210,\n\t9637:  0x5448,\n\t9638:  0x4E58,\n\t9639:  0x7A0B,\n\t9640:  0x60E9,\n\t9641:  0x6F84,\n\t9642:  0x8BDA,\n\t9643:  0x627F,\n\t9644:  0x901E,\n\t9645:  0x9A8B,\n\t9646:  0x79E4,\n\t9647:  0x5403,\n\t9648:  0x75F4,\n\t9649:  0x6301,\n\t9650:  0x5319,\n\t9651:  0x6C60,\n\t9652:  0x8FDF,\n\t9653:  0x5F1B,\n\t9654:  0x9A70,\n\t9655:  0x803B,\n\t9656:  0x9F7F,\n\t9657:  0x4F88,\n\t9658:  0x5C3A,\n\t9659:  0x8D64,\n\t9660:  0x7FC5,\n\t9661:  0x65A5,\n\t9662:  0x70BD,\n\t9663:  0x5145,\n\t9664:  0x51B2,\n\t9665:  0x866B,\n\t9666:  0x5D07,\n\t9667:  0x5BA0,\n\t9668:  0x62BD,\n\t9669:  0x916C,\n\t9670:  0x7574,\n\t9671:  0x8E0C,\n\t9672:  0x7A20,\n\t9673:  0x6101,\n\t9674:  0x7B79,\n\t9675:  0x4EC7,\n\t9676:  0x7EF8,\n\t9677:  0x7785,\n\t9678:  0x4E11,\n\t9679:  0x81ED,\n\t9680:  0x521D,\n\t9681:  0x51FA,\n\t9682:  0x6A71,\n\t9683:  0x53A8,\n\t9684:  0x8E87,\n\t9685:  0x9504,\n\t9686:  0x96CF,\n\t9687:  0x6EC1,\n\t9688:  0x9664,\n\t9689:  0x695A,\n\t9690:  0x7884,\n\t9691:  0x7885,\n\t9692:  0x7886,\n\t9693:  0x7888,\n\t9694:  0x788A,\n\t9695:  0x788B,\n\t9696:  0x788F,\n\t9697:  0x7890,\n\t9698:  0x7892,\n\t9699:  0x7894,\n\t9700:  0x7895,\n\t9701:  0x7896,\n\t9702:  0x7899,\n\t9703:  0x789D,\n\t9704:  0x789E,\n\t9705:  0x78A0,\n\t9706:  0x78A2,\n\t9707:  0x78A4,\n\t9708:  0x78A6,\n\t9709:  0x78A8,\n\t9710:  0x78A9,\n\t9711:  0x78AA,\n\t9712:  0x78AB,\n\t9713:  0x78AC,\n\t9714:  0x78AD,\n\t9715:  0x78AE,\n\t9716:  0x78AF,\n\t9717:  0x78B5,\n\t9718:  0x78B6,\n\t9719:  0x78B7,\n\t9720:  0x78B8,\n\t9721:  0x78BA,\n\t9722:  0x78BB,\n\t9723:  0x78BC,\n\t9724:  0x78BD,\n\t9725:  0x78BF,\n\t9726:  0x78C0,\n\t9727:  0x78C2,\n\t9728:  0x78C3,\n\t9729:  0x78C4,\n\t9730:  0x78C6,\n\t9731:  0x78C7,\n\t9732:  0x78C8,\n\t9733:  0x78CC,\n\t9734:  0x78CD,\n\t9735:  0x78CE,\n\t9736:  0x78CF,\n\t9737:  0x78D1,\n\t9738:  0x78D2,\n\t9739:  0x78D3,\n\t9740:  0x78D6,\n\t9741:  0x78D7,\n\t9742:  0x78D8,\n\t9743:  0x78DA,\n\t9744:  0x78DB,\n\t9745:  0x78DC,\n\t9746:  0x78DD,\n\t9747:  0x78DE,\n\t9748:  0x78DF,\n\t9749:  0x78E0,\n\t9750:  0x78E1,\n\t9751:  0x78E2,\n\t9752:  0x78E3,\n\t9753:  0x78E4,\n\t9754:  0x78E5,\n\t9755:  0x78E6,\n\t9756:  0x78E7,\n\t9757:  0x78E9,\n\t9758:  0x78EA,\n\t9759:  0x78EB,\n\t9760:  0x78ED,\n\t9761:  0x78EE,\n\t9762:  0x78EF,\n\t9763:  0x78F0,\n\t9764:  0x78F1,\n\t9765:  0x78F3,\n\t9766:  0x78F5,\n\t9767:  0x78F6,\n\t9768:  0x78F8,\n\t9769:  0x78F9,\n\t9770:  0x78FB,\n\t9771:  0x78FC,\n\t9772:  0x78FD,\n\t9773:  0x78FE,\n\t9774:  0x78FF,\n\t9775:  0x7900,\n\t9776:  0x7902,\n\t9777:  0x7903,\n\t9778:  0x7904,\n\t9779:  0x7906,\n\t9780:  0x7907,\n\t9781:  0x7908,\n\t9782:  0x7909,\n\t9783:  0x790A,\n\t9784:  0x790B,\n\t9785:  0x790C,\n\t9786:  0x7840,\n\t9787:  0x50A8,\n\t9788:  0x77D7,\n\t9789:  0x6410,\n\t9790:  0x89E6,\n\t9791:  0x5904,\n\t9792:  0x63E3,\n\t9793:  0x5DDD,\n\t9794:  0x7A7F,\n\t9795:  0x693D,\n\t9796:  0x4F20,\n\t9797:  0x8239,\n\t9798:  0x5598,\n\t9799:  0x4E32,\n\t9800:  0x75AE,\n\t9801:  0x7A97,\n\t9802:  0x5E62,\n\t9803:  0x5E8A,\n\t9804:  0x95EF,\n\t9805:  0x521B,\n\t9806:  0x5439,\n\t9807:  0x708A,\n\t9808:  0x6376,\n\t9809:  0x9524,\n\t9810:  0x5782,\n\t9811:  0x6625,\n\t9812:  0x693F,\n\t9813:  0x9187,\n\t9814:  0x5507,\n\t9815:  0x6DF3,\n\t9816:  0x7EAF,\n\t9817:  0x8822,\n\t9818:  0x6233,\n\t9819:  0x7EF0,\n\t9820:  0x75B5,\n\t9821:  0x8328,\n\t9822:  0x78C1,\n\t9823:  0x96CC,\n\t9824:  0x8F9E,\n\t9825:  0x6148,\n\t9826:  0x74F7,\n\t9827:  0x8BCD,\n\t9828:  0x6B64,\n\t9829:  0x523A,\n\t9830:  0x8D50,\n\t9831:  0x6B21,\n\t9832:  0x806A,\n\t9833:  0x8471,\n\t9834:  0x56F1,\n\t9835:  0x5306,\n\t9836:  0x4ECE,\n\t9837:  0x4E1B,\n\t9838:  0x51D1,\n\t9839:  0x7C97,\n\t9840:  0x918B,\n\t9841:  0x7C07,\n\t9842:  0x4FC3,\n\t9843:  0x8E7F,\n\t9844:  0x7BE1,\n\t9845:  0x7A9C,\n\t9846:  0x6467,\n\t9847:  0x5D14,\n\t9848:  0x50AC,\n\t9849:  0x8106,\n\t9850:  0x7601,\n\t9851:  0x7CB9,\n\t9852:  0x6DEC,\n\t9853:  0x7FE0,\n\t9854:  0x6751,\n\t9855:  0x5B58,\n\t9856:  0x5BF8,\n\t9857:  0x78CB,\n\t9858:  0x64AE,\n\t9859:  0x6413,\n\t9860:  0x63AA,\n\t9861:  0x632B,\n\t9862:  0x9519,\n\t9863:  0x642D,\n\t9864:  0x8FBE,\n\t9865:  0x7B54,\n\t9866:  0x7629,\n\t9867:  0x6253,\n\t9868:  0x5927,\n\t9869:  0x5446,\n\t9870:  0x6B79,\n\t9871:  0x50A3,\n\t9872:  0x6234,\n\t9873:  0x5E26,\n\t9874:  0x6B86,\n\t9875:  0x4EE3,\n\t9876:  0x8D37,\n\t9877:  0x888B,\n\t9878:  0x5F85,\n\t9879:  0x902E,\n\t9880:  0x790D,\n\t9881:  0x790E,\n\t9882:  0x790F,\n\t9883:  0x7910,\n\t9884:  0x7911,\n\t9885:  0x7912,\n\t9886:  0x7914,\n\t9887:  0x7915,\n\t9888:  0x7916,\n\t9889:  0x7917,\n\t9890:  0x7918,\n\t9891:  0x7919,\n\t9892:  0x791A,\n\t9893:  0x791B,\n\t9894:  0x791C,\n\t9895:  0x791D,\n\t9896:  0x791F,\n\t9897:  0x7920,\n\t9898:  0x7921,\n\t9899:  0x7922,\n\t9900:  0x7923,\n\t9901:  0x7925,\n\t9902:  0x7926,\n\t9903:  0x7927,\n\t9904:  0x7928,\n\t9905:  0x7929,\n\t9906:  0x792A,\n\t9907:  0x792B,\n\t9908:  0x792C,\n\t9909:  0x792D,\n\t9910:  0x792E,\n\t9911:  0x792F,\n\t9912:  0x7930,\n\t9913:  0x7931,\n\t9914:  0x7932,\n\t9915:  0x7933,\n\t9916:  0x7935,\n\t9917:  0x7936,\n\t9918:  0x7937,\n\t9919:  0x7938,\n\t9920:  0x7939,\n\t9921:  0x793D,\n\t9922:  0x793F,\n\t9923:  0x7942,\n\t9924:  0x7943,\n\t9925:  0x7944,\n\t9926:  0x7945,\n\t9927:  0x7947,\n\t9928:  0x794A,\n\t9929:  0x794B,\n\t9930:  0x794C,\n\t9931:  0x794D,\n\t9932:  0x794E,\n\t9933:  0x794F,\n\t9934:  0x7950,\n\t9935:  0x7951,\n\t9936:  0x7952,\n\t9937:  0x7954,\n\t9938:  0x7955,\n\t9939:  0x7958,\n\t9940:  0x7959,\n\t9941:  0x7961,\n\t9942:  0x7963,\n\t9943:  0x7964,\n\t9944:  0x7966,\n\t9945:  0x7969,\n\t9946:  0x796A,\n\t9947:  0x796B,\n\t9948:  0x796C,\n\t9949:  0x796E,\n\t9950:  0x7970,\n\t9951:  0x7971,\n\t9952:  0x7972,\n\t9953:  0x7973,\n\t9954:  0x7974,\n\t9955:  0x7975,\n\t9956:  0x7976,\n\t9957:  0x7979,\n\t9958:  0x797B,\n\t9959:  0x797C,\n\t9960:  0x797D,\n\t9961:  0x797E,\n\t9962:  0x797F,\n\t9963:  0x7982,\n\t9964:  0x7983,\n\t9965:  0x7986,\n\t9966:  0x7987,\n\t9967:  0x7988,\n\t9968:  0x7989,\n\t9969:  0x798B,\n\t9970:  0x798C,\n\t9971:  0x798D,\n\t9972:  0x798E,\n\t9973:  0x7990,\n\t9974:  0x7991,\n\t9975:  0x7992,\n\t9976:  0x6020,\n\t9977:  0x803D,\n\t9978:  0x62C5,\n\t9979:  0x4E39,\n\t9980:  0x5355,\n\t9981:  0x90F8,\n\t9982:  0x63B8,\n\t9983:  0x80C6,\n\t9984:  0x65E6,\n\t9985:  0x6C2E,\n\t9986:  0x4F46,\n\t9987:  0x60EE,\n\t9988:  0x6DE1,\n\t9989:  0x8BDE,\n\t9990:  0x5F39,\n\t9991:  0x86CB,\n\t9992:  0x5F53,\n\t9993:  0x6321,\n\t9994:  0x515A,\n\t9995:  0x8361,\n\t9996:  0x6863,\n\t9997:  0x5200,\n\t9998:  0x6363,\n\t9999:  0x8E48,\n\t10000: 0x5012,\n\t10001: 0x5C9B,\n\t10002: 0x7977,\n\t10003: 0x5BFC,\n\t10004: 0x5230,\n\t10005: 0x7A3B,\n\t10006: 0x60BC,\n\t10007: 0x9053,\n\t10008: 0x76D7,\n\t10009: 0x5FB7,\n\t10010: 0x5F97,\n\t10011: 0x7684,\n\t10012: 0x8E6C,\n\t10013: 0x706F,\n\t10014: 0x767B,\n\t10015: 0x7B49,\n\t10016: 0x77AA,\n\t10017: 0x51F3,\n\t10018: 0x9093,\n\t10019: 0x5824,\n\t10020: 0x4F4E,\n\t10021: 0x6EF4,\n\t10022: 0x8FEA,\n\t10023: 0x654C,\n\t10024: 0x7B1B,\n\t10025: 0x72C4,\n\t10026: 0x6DA4,\n\t10027: 0x7FDF,\n\t10028: 0x5AE1,\n\t10029: 0x62B5,\n\t10030: 0x5E95,\n\t10031: 0x5730,\n\t10032: 0x8482,\n\t10033: 0x7B2C,\n\t10034: 0x5E1D,\n\t10035: 0x5F1F,\n\t10036: 0x9012,\n\t10037: 0x7F14,\n\t10038: 0x98A0,\n\t10039: 0x6382,\n\t10040: 0x6EC7,\n\t10041: 0x7898,\n\t10042: 0x70B9,\n\t10043: 0x5178,\n\t10044: 0x975B,\n\t10045: 0x57AB,\n\t10046: 0x7535,\n\t10047: 0x4F43,\n\t10048: 0x7538,\n\t10049: 0x5E97,\n\t10050: 0x60E6,\n\t10051: 0x5960,\n\t10052: 0x6DC0,\n\t10053: 0x6BBF,\n\t10054: 0x7889,\n\t10055: 0x53FC,\n\t10056: 0x96D5,\n\t10057: 0x51CB,\n\t10058: 0x5201,\n\t10059: 0x6389,\n\t10060: 0x540A,\n\t10061: 0x9493,\n\t10062: 0x8C03,\n\t10063: 0x8DCC,\n\t10064: 0x7239,\n\t10065: 0x789F,\n\t10066: 0x8776,\n\t10067: 0x8FED,\n\t10068: 0x8C0D,\n\t10069: 0x53E0,\n\t10070: 0x7993,\n\t10071: 0x7994,\n\t10072: 0x7995,\n\t10073: 0x7996,\n\t10074: 0x7997,\n\t10075: 0x7998,\n\t10076: 0x7999,\n\t10077: 0x799B,\n\t10078: 0x799C,\n\t10079: 0x799D,\n\t10080: 0x799E,\n\t10081: 0x799F,\n\t10082: 0x79A0,\n\t10083: 0x79A1,\n\t10084: 0x79A2,\n\t10085: 0x79A3,\n\t10086: 0x79A4,\n\t10087: 0x79A5,\n\t10088: 0x79A6,\n\t10089: 0x79A8,\n\t10090: 0x79A9,\n\t10091: 0x79AA,\n\t10092: 0x79AB,\n\t10093: 0x79AC,\n\t10094: 0x79AD,\n\t10095: 0x79AE,\n\t10096: 0x79AF,\n\t10097: 0x79B0,\n\t10098: 0x79B1,\n\t10099: 0x79B2,\n\t10100: 0x79B4,\n\t10101: 0x79B5,\n\t10102: 0x79B6,\n\t10103: 0x79B7,\n\t10104: 0x79B8,\n\t10105: 0x79BC,\n\t10106: 0x79BF,\n\t10107: 0x79C2,\n\t10108: 0x79C4,\n\t10109: 0x79C5,\n\t10110: 0x79C7,\n\t10111: 0x79C8,\n\t10112: 0x79CA,\n\t10113: 0x79CC,\n\t10114: 0x79CE,\n\t10115: 0x79CF,\n\t10116: 0x79D0,\n\t10117: 0x79D3,\n\t10118: 0x79D4,\n\t10119: 0x79D6,\n\t10120: 0x79D7,\n\t10121: 0x79D9,\n\t10122: 0x79DA,\n\t10123: 0x79DB,\n\t10124: 0x79DC,\n\t10125: 0x79DD,\n\t10126: 0x79DE,\n\t10127: 0x79E0,\n\t10128: 0x79E1,\n\t10129: 0x79E2,\n\t10130: 0x79E5,\n\t10131: 0x79E8,\n\t10132: 0x79EA,\n\t10133: 0x79EC,\n\t10134: 0x79EE,\n\t10135: 0x79F1,\n\t10136: 0x79F2,\n\t10137: 0x79F3,\n\t10138: 0x79F4,\n\t10139: 0x79F5,\n\t10140: 0x79F6,\n\t10141: 0x79F7,\n\t10142: 0x79F9,\n\t10143: 0x79FA,\n\t10144: 0x79FC,\n\t10145: 0x79FE,\n\t10146: 0x79FF,\n\t10147: 0x7A01,\n\t10148: 0x7A04,\n\t10149: 0x7A05,\n\t10150: 0x7A07,\n\t10151: 0x7A08,\n\t10152: 0x7A09,\n\t10153: 0x7A0A,\n\t10154: 0x7A0C,\n\t10155: 0x7A0F,\n\t10156: 0x7A10,\n\t10157: 0x7A11,\n\t10158: 0x7A12,\n\t10159: 0x7A13,\n\t10160: 0x7A15,\n\t10161: 0x7A16,\n\t10162: 0x7A18,\n\t10163: 0x7A19,\n\t10164: 0x7A1B,\n\t10165: 0x7A1C,\n\t10166: 0x4E01,\n\t10167: 0x76EF,\n\t10168: 0x53EE,\n\t10169: 0x9489,\n\t10170: 0x9876,\n\t10171: 0x9F0E,\n\t10172: 0x952D,\n\t10173: 0x5B9A,\n\t10174: 0x8BA2,\n\t10175: 0x4E22,\n\t10176: 0x4E1C,\n\t10177: 0x51AC,\n\t10178: 0x8463,\n\t10179: 0x61C2,\n\t10180: 0x52A8,\n\t10181: 0x680B,\n\t10182: 0x4F97,\n\t10183: 0x606B,\n\t10184: 0x51BB,\n\t10185: 0x6D1E,\n\t10186: 0x515C,\n\t10187: 0x6296,\n\t10188: 0x6597,\n\t10189: 0x9661,\n\t10190: 0x8C46,\n\t10191: 0x9017,\n\t10192: 0x75D8,\n\t10193: 0x90FD,\n\t10194: 0x7763,\n\t10195: 0x6BD2,\n\t10196: 0x728A,\n\t10197: 0x72EC,\n\t10198: 0x8BFB,\n\t10199: 0x5835,\n\t10200: 0x7779,\n\t10201: 0x8D4C,\n\t10202: 0x675C,\n\t10203: 0x9540,\n\t10204: 0x809A,\n\t10205: 0x5EA6,\n\t10206: 0x6E21,\n\t10207: 0x5992,\n\t10208: 0x7AEF,\n\t10209: 0x77ED,\n\t10210: 0x953B,\n\t10211: 0x6BB5,\n\t10212: 0x65AD,\n\t10213: 0x7F0E,\n\t10214: 0x5806,\n\t10215: 0x5151,\n\t10216: 0x961F,\n\t10217: 0x5BF9,\n\t10218: 0x58A9,\n\t10219: 0x5428,\n\t10220: 0x8E72,\n\t10221: 0x6566,\n\t10222: 0x987F,\n\t10223: 0x56E4,\n\t10224: 0x949D,\n\t10225: 0x76FE,\n\t10226: 0x9041,\n\t10227: 0x6387,\n\t10228: 0x54C6,\n\t10229: 0x591A,\n\t10230: 0x593A,\n\t10231: 0x579B,\n\t10232: 0x8EB2,\n\t10233: 0x6735,\n\t10234: 0x8DFA,\n\t10235: 0x8235,\n\t10236: 0x5241,\n\t10237: 0x60F0,\n\t10238: 0x5815,\n\t10239: 0x86FE,\n\t10240: 0x5CE8,\n\t10241: 0x9E45,\n\t10242: 0x4FC4,\n\t10243: 0x989D,\n\t10244: 0x8BB9,\n\t10245: 0x5A25,\n\t10246: 0x6076,\n\t10247: 0x5384,\n\t10248: 0x627C,\n\t10249: 0x904F,\n\t10250: 0x9102,\n\t10251: 0x997F,\n\t10252: 0x6069,\n\t10253: 0x800C,\n\t10254: 0x513F,\n\t10255: 0x8033,\n\t10256: 0x5C14,\n\t10257: 0x9975,\n\t10258: 0x6D31,\n\t10259: 0x4E8C,\n\t10260: 0x7A1D,\n\t10261: 0x7A1F,\n\t10262: 0x7A21,\n\t10263: 0x7A22,\n\t10264: 0x7A24,\n\t10265: 0x7A25,\n\t10266: 0x7A26,\n\t10267: 0x7A27,\n\t10268: 0x7A28,\n\t10269: 0x7A29,\n\t10270: 0x7A2A,\n\t10271: 0x7A2B,\n\t10272: 0x7A2C,\n\t10273: 0x7A2D,\n\t10274: 0x7A2E,\n\t10275: 0x7A2F,\n\t10276: 0x7A30,\n\t10277: 0x7A31,\n\t10278: 0x7A32,\n\t10279: 0x7A34,\n\t10280: 0x7A35,\n\t10281: 0x7A36,\n\t10282: 0x7A38,\n\t10283: 0x7A3A,\n\t10284: 0x7A3E,\n\t10285: 0x7A40,\n\t10286: 0x7A41,\n\t10287: 0x7A42,\n\t10288: 0x7A43,\n\t10289: 0x7A44,\n\t10290: 0x7A45,\n\t10291: 0x7A47,\n\t10292: 0x7A48,\n\t10293: 0x7A49,\n\t10294: 0x7A4A,\n\t10295: 0x7A4B,\n\t10296: 0x7A4C,\n\t10297: 0x7A4D,\n\t10298: 0x7A4E,\n\t10299: 0x7A4F,\n\t10300: 0x7A50,\n\t10301: 0x7A52,\n\t10302: 0x7A53,\n\t10303: 0x7A54,\n\t10304: 0x7A55,\n\t10305: 0x7A56,\n\t10306: 0x7A58,\n\t10307: 0x7A59,\n\t10308: 0x7A5A,\n\t10309: 0x7A5B,\n\t10310: 0x7A5C,\n\t10311: 0x7A5D,\n\t10312: 0x7A5E,\n\t10313: 0x7A5F,\n\t10314: 0x7A60,\n\t10315: 0x7A61,\n\t10316: 0x7A62,\n\t10317: 0x7A63,\n\t10318: 0x7A64,\n\t10319: 0x7A65,\n\t10320: 0x7A66,\n\t10321: 0x7A67,\n\t10322: 0x7A68,\n\t10323: 0x7A69,\n\t10324: 0x7A6A,\n\t10325: 0x7A6B,\n\t10326: 0x7A6C,\n\t10327: 0x7A6D,\n\t10328: 0x7A6E,\n\t10329: 0x7A6F,\n\t10330: 0x7A71,\n\t10331: 0x7A72,\n\t10332: 0x7A73,\n\t10333: 0x7A75,\n\t10334: 0x7A7B,\n\t10335: 0x7A7C,\n\t10336: 0x7A7D,\n\t10337: 0x7A7E,\n\t10338: 0x7A82,\n\t10339: 0x7A85,\n\t10340: 0x7A87,\n\t10341: 0x7A89,\n\t10342: 0x7A8A,\n\t10343: 0x7A8B,\n\t10344: 0x7A8C,\n\t10345: 0x7A8E,\n\t10346: 0x7A8F,\n\t10347: 0x7A90,\n\t10348: 0x7A93,\n\t10349: 0x7A94,\n\t10350: 0x7A99,\n\t10351: 0x7A9A,\n\t10352: 0x7A9B,\n\t10353: 0x7A9E,\n\t10354: 0x7AA1,\n\t10355: 0x7AA2,\n\t10356: 0x8D30,\n\t10357: 0x53D1,\n\t10358: 0x7F5A,\n\t10359: 0x7B4F,\n\t10360: 0x4F10,\n\t10361: 0x4E4F,\n\t10362: 0x9600,\n\t10363: 0x6CD5,\n\t10364: 0x73D0,\n\t10365: 0x85E9,\n\t10366: 0x5E06,\n\t10367: 0x756A,\n\t10368: 0x7FFB,\n\t10369: 0x6A0A,\n\t10370: 0x77FE,\n\t10371: 0x9492,\n\t10372: 0x7E41,\n\t10373: 0x51E1,\n\t10374: 0x70E6,\n\t10375: 0x53CD,\n\t10376: 0x8FD4,\n\t10377: 0x8303,\n\t10378: 0x8D29,\n\t10379: 0x72AF,\n\t10380: 0x996D,\n\t10381: 0x6CDB,\n\t10382: 0x574A,\n\t10383: 0x82B3,\n\t10384: 0x65B9,\n\t10385: 0x80AA,\n\t10386: 0x623F,\n\t10387: 0x9632,\n\t10388: 0x59A8,\n\t10389: 0x4EFF,\n\t10390: 0x8BBF,\n\t10391: 0x7EBA,\n\t10392: 0x653E,\n\t10393: 0x83F2,\n\t10394: 0x975E,\n\t10395: 0x5561,\n\t10396: 0x98DE,\n\t10397: 0x80A5,\n\t10398: 0x532A,\n\t10399: 0x8BFD,\n\t10400: 0x5420,\n\t10401: 0x80BA,\n\t10402: 0x5E9F,\n\t10403: 0x6CB8,\n\t10404: 0x8D39,\n\t10405: 0x82AC,\n\t10406: 0x915A,\n\t10407: 0x5429,\n\t10408: 0x6C1B,\n\t10409: 0x5206,\n\t10410: 0x7EB7,\n\t10411: 0x575F,\n\t10412: 0x711A,\n\t10413: 0x6C7E,\n\t10414: 0x7C89,\n\t10415: 0x594B,\n\t10416: 0x4EFD,\n\t10417: 0x5FFF,\n\t10418: 0x6124,\n\t10419: 0x7CAA,\n\t10420: 0x4E30,\n\t10421: 0x5C01,\n\t10422: 0x67AB,\n\t10423: 0x8702,\n\t10424: 0x5CF0,\n\t10425: 0x950B,\n\t10426: 0x98CE,\n\t10427: 0x75AF,\n\t10428: 0x70FD,\n\t10429: 0x9022,\n\t10430: 0x51AF,\n\t10431: 0x7F1D,\n\t10432: 0x8BBD,\n\t10433: 0x5949,\n\t10434: 0x51E4,\n\t10435: 0x4F5B,\n\t10436: 0x5426,\n\t10437: 0x592B,\n\t10438: 0x6577,\n\t10439: 0x80A4,\n\t10440: 0x5B75,\n\t10441: 0x6276,\n\t10442: 0x62C2,\n\t10443: 0x8F90,\n\t10444: 0x5E45,\n\t10445: 0x6C1F,\n\t10446: 0x7B26,\n\t10447: 0x4F0F,\n\t10448: 0x4FD8,\n\t10449: 0x670D,\n\t10450: 0x7AA3,\n\t10451: 0x7AA4,\n\t10452: 0x7AA7,\n\t10453: 0x7AA9,\n\t10454: 0x7AAA,\n\t10455: 0x7AAB,\n\t10456: 0x7AAE,\n\t10457: 0x7AAF,\n\t10458: 0x7AB0,\n\t10459: 0x7AB1,\n\t10460: 0x7AB2,\n\t10461: 0x7AB4,\n\t10462: 0x7AB5,\n\t10463: 0x7AB6,\n\t10464: 0x7AB7,\n\t10465: 0x7AB8,\n\t10466: 0x7AB9,\n\t10467: 0x7ABA,\n\t10468: 0x7ABB,\n\t10469: 0x7ABC,\n\t10470: 0x7ABD,\n\t10471: 0x7ABE,\n\t10472: 0x7AC0,\n\t10473: 0x7AC1,\n\t10474: 0x7AC2,\n\t10475: 0x7AC3,\n\t10476: 0x7AC4,\n\t10477: 0x7AC5,\n\t10478: 0x7AC6,\n\t10479: 0x7AC7,\n\t10480: 0x7AC8,\n\t10481: 0x7AC9,\n\t10482: 0x7ACA,\n\t10483: 0x7ACC,\n\t10484: 0x7ACD,\n\t10485: 0x7ACE,\n\t10486: 0x7ACF,\n\t10487: 0x7AD0,\n\t10488: 0x7AD1,\n\t10489: 0x7AD2,\n\t10490: 0x7AD3,\n\t10491: 0x7AD4,\n\t10492: 0x7AD5,\n\t10493: 0x7AD7,\n\t10494: 0x7AD8,\n\t10495: 0x7ADA,\n\t10496: 0x7ADB,\n\t10497: 0x7ADC,\n\t10498: 0x7ADD,\n\t10499: 0x7AE1,\n\t10500: 0x7AE2,\n\t10501: 0x7AE4,\n\t10502: 0x7AE7,\n\t10503: 0x7AE8,\n\t10504: 0x7AE9,\n\t10505: 0x7AEA,\n\t10506: 0x7AEB,\n\t10507: 0x7AEC,\n\t10508: 0x7AEE,\n\t10509: 0x7AF0,\n\t10510: 0x7AF1,\n\t10511: 0x7AF2,\n\t10512: 0x7AF3,\n\t10513: 0x7AF4,\n\t10514: 0x7AF5,\n\t10515: 0x7AF6,\n\t10516: 0x7AF7,\n\t10517: 0x7AF8,\n\t10518: 0x7AFB,\n\t10519: 0x7AFC,\n\t10520: 0x7AFE,\n\t10521: 0x7B00,\n\t10522: 0x7B01,\n\t10523: 0x7B02,\n\t10524: 0x7B05,\n\t10525: 0x7B07,\n\t10526: 0x7B09,\n\t10527: 0x7B0C,\n\t10528: 0x7B0D,\n\t10529: 0x7B0E,\n\t10530: 0x7B10,\n\t10531: 0x7B12,\n\t10532: 0x7B13,\n\t10533: 0x7B16,\n\t10534: 0x7B17,\n\t10535: 0x7B18,\n\t10536: 0x7B1A,\n\t10537: 0x7B1C,\n\t10538: 0x7B1D,\n\t10539: 0x7B1F,\n\t10540: 0x7B21,\n\t10541: 0x7B22,\n\t10542: 0x7B23,\n\t10543: 0x7B27,\n\t10544: 0x7B29,\n\t10545: 0x7B2D,\n\t10546: 0x6D6E,\n\t10547: 0x6DAA,\n\t10548: 0x798F,\n\t10549: 0x88B1,\n\t10550: 0x5F17,\n\t10551: 0x752B,\n\t10552: 0x629A,\n\t10553: 0x8F85,\n\t10554: 0x4FEF,\n\t10555: 0x91DC,\n\t10556: 0x65A7,\n\t10557: 0x812F,\n\t10558: 0x8151,\n\t10559: 0x5E9C,\n\t10560: 0x8150,\n\t10561: 0x8D74,\n\t10562: 0x526F,\n\t10563: 0x8986,\n\t10564: 0x8D4B,\n\t10565: 0x590D,\n\t10566: 0x5085,\n\t10567: 0x4ED8,\n\t10568: 0x961C,\n\t10569: 0x7236,\n\t10570: 0x8179,\n\t10571: 0x8D1F,\n\t10572: 0x5BCC,\n\t10573: 0x8BA3,\n\t10574: 0x9644,\n\t10575: 0x5987,\n\t10576: 0x7F1A,\n\t10577: 0x5490,\n\t10578: 0x5676,\n\t10579: 0x560E,\n\t10580: 0x8BE5,\n\t10581: 0x6539,\n\t10582: 0x6982,\n\t10583: 0x9499,\n\t10584: 0x76D6,\n\t10585: 0x6E89,\n\t10586: 0x5E72,\n\t10587: 0x7518,\n\t10588: 0x6746,\n\t10589: 0x67D1,\n\t10590: 0x7AFF,\n\t10591: 0x809D,\n\t10592: 0x8D76,\n\t10593: 0x611F,\n\t10594: 0x79C6,\n\t10595: 0x6562,\n\t10596: 0x8D63,\n\t10597: 0x5188,\n\t10598: 0x521A,\n\t10599: 0x94A2,\n\t10600: 0x7F38,\n\t10601: 0x809B,\n\t10602: 0x7EB2,\n\t10603: 0x5C97,\n\t10604: 0x6E2F,\n\t10605: 0x6760,\n\t10606: 0x7BD9,\n\t10607: 0x768B,\n\t10608: 0x9AD8,\n\t10609: 0x818F,\n\t10610: 0x7F94,\n\t10611: 0x7CD5,\n\t10612: 0x641E,\n\t10613: 0x9550,\n\t10614: 0x7A3F,\n\t10615: 0x544A,\n\t10616: 0x54E5,\n\t10617: 0x6B4C,\n\t10618: 0x6401,\n\t10619: 0x6208,\n\t10620: 0x9E3D,\n\t10621: 0x80F3,\n\t10622: 0x7599,\n\t10623: 0x5272,\n\t10624: 0x9769,\n\t10625: 0x845B,\n\t10626: 0x683C,\n\t10627: 0x86E4,\n\t10628: 0x9601,\n\t10629: 0x9694,\n\t10630: 0x94EC,\n\t10631: 0x4E2A,\n\t10632: 0x5404,\n\t10633: 0x7ED9,\n\t10634: 0x6839,\n\t10635: 0x8DDF,\n\t10636: 0x8015,\n\t10637: 0x66F4,\n\t10638: 0x5E9A,\n\t10639: 0x7FB9,\n\t10640: 0x7B2F,\n\t10641: 0x7B30,\n\t10642: 0x7B32,\n\t10643: 0x7B34,\n\t10644: 0x7B35,\n\t10645: 0x7B36,\n\t10646: 0x7B37,\n\t10647: 0x7B39,\n\t10648: 0x7B3B,\n\t10649: 0x7B3D,\n\t10650: 0x7B3F,\n\t10651: 0x7B40,\n\t10652: 0x7B41,\n\t10653: 0x7B42,\n\t10654: 0x7B43,\n\t10655: 0x7B44,\n\t10656: 0x7B46,\n\t10657: 0x7B48,\n\t10658: 0x7B4A,\n\t10659: 0x7B4D,\n\t10660: 0x7B4E,\n\t10661: 0x7B53,\n\t10662: 0x7B55,\n\t10663: 0x7B57,\n\t10664: 0x7B59,\n\t10665: 0x7B5C,\n\t10666: 0x7B5E,\n\t10667: 0x7B5F,\n\t10668: 0x7B61,\n\t10669: 0x7B63,\n\t10670: 0x7B64,\n\t10671: 0x7B65,\n\t10672: 0x7B66,\n\t10673: 0x7B67,\n\t10674: 0x7B68,\n\t10675: 0x7B69,\n\t10676: 0x7B6A,\n\t10677: 0x7B6B,\n\t10678: 0x7B6C,\n\t10679: 0x7B6D,\n\t10680: 0x7B6F,\n\t10681: 0x7B70,\n\t10682: 0x7B73,\n\t10683: 0x7B74,\n\t10684: 0x7B76,\n\t10685: 0x7B78,\n\t10686: 0x7B7A,\n\t10687: 0x7B7C,\n\t10688: 0x7B7D,\n\t10689: 0x7B7F,\n\t10690: 0x7B81,\n\t10691: 0x7B82,\n\t10692: 0x7B83,\n\t10693: 0x7B84,\n\t10694: 0x7B86,\n\t10695: 0x7B87,\n\t10696: 0x7B88,\n\t10697: 0x7B89,\n\t10698: 0x7B8A,\n\t10699: 0x7B8B,\n\t10700: 0x7B8C,\n\t10701: 0x7B8E,\n\t10702: 0x7B8F,\n\t10703: 0x7B91,\n\t10704: 0x7B92,\n\t10705: 0x7B93,\n\t10706: 0x7B96,\n\t10707: 0x7B98,\n\t10708: 0x7B99,\n\t10709: 0x7B9A,\n\t10710: 0x7B9B,\n\t10711: 0x7B9E,\n\t10712: 0x7B9F,\n\t10713: 0x7BA0,\n\t10714: 0x7BA3,\n\t10715: 0x7BA4,\n\t10716: 0x7BA5,\n\t10717: 0x7BAE,\n\t10718: 0x7BAF,\n\t10719: 0x7BB0,\n\t10720: 0x7BB2,\n\t10721: 0x7BB3,\n\t10722: 0x7BB5,\n\t10723: 0x7BB6,\n\t10724: 0x7BB7,\n\t10725: 0x7BB9,\n\t10726: 0x7BBA,\n\t10727: 0x7BBB,\n\t10728: 0x7BBC,\n\t10729: 0x7BBD,\n\t10730: 0x7BBE,\n\t10731: 0x7BBF,\n\t10732: 0x7BC0,\n\t10733: 0x7BC2,\n\t10734: 0x7BC3,\n\t10735: 0x7BC4,\n\t10736: 0x57C2,\n\t10737: 0x803F,\n\t10738: 0x6897,\n\t10739: 0x5DE5,\n\t10740: 0x653B,\n\t10741: 0x529F,\n\t10742: 0x606D,\n\t10743: 0x9F9A,\n\t10744: 0x4F9B,\n\t10745: 0x8EAC,\n\t10746: 0x516C,\n\t10747: 0x5BAB,\n\t10748: 0x5F13,\n\t10749: 0x5DE9,\n\t10750: 0x6C5E,\n\t10751: 0x62F1,\n\t10752: 0x8D21,\n\t10753: 0x5171,\n\t10754: 0x94A9,\n\t10755: 0x52FE,\n\t10756: 0x6C9F,\n\t10757: 0x82DF,\n\t10758: 0x72D7,\n\t10759: 0x57A2,\n\t10760: 0x6784,\n\t10761: 0x8D2D,\n\t10762: 0x591F,\n\t10763: 0x8F9C,\n\t10764: 0x83C7,\n\t10765: 0x5495,\n\t10766: 0x7B8D,\n\t10767: 0x4F30,\n\t10768: 0x6CBD,\n\t10769: 0x5B64,\n\t10770: 0x59D1,\n\t10771: 0x9F13,\n\t10772: 0x53E4,\n\t10773: 0x86CA,\n\t10774: 0x9AA8,\n\t10775: 0x8C37,\n\t10776: 0x80A1,\n\t10777: 0x6545,\n\t10778: 0x987E,\n\t10779: 0x56FA,\n\t10780: 0x96C7,\n\t10781: 0x522E,\n\t10782: 0x74DC,\n\t10783: 0x5250,\n\t10784: 0x5BE1,\n\t10785: 0x6302,\n\t10786: 0x8902,\n\t10787: 0x4E56,\n\t10788: 0x62D0,\n\t10789: 0x602A,\n\t10790: 0x68FA,\n\t10791: 0x5173,\n\t10792: 0x5B98,\n\t10793: 0x51A0,\n\t10794: 0x89C2,\n\t10795: 0x7BA1,\n\t10796: 0x9986,\n\t10797: 0x7F50,\n\t10798: 0x60EF,\n\t10799: 0x704C,\n\t10800: 0x8D2F,\n\t10801: 0x5149,\n\t10802: 0x5E7F,\n\t10803: 0x901B,\n\t10804: 0x7470,\n\t10805: 0x89C4,\n\t10806: 0x572D,\n\t10807: 0x7845,\n\t10808: 0x5F52,\n\t10809: 0x9F9F,\n\t10810: 0x95FA,\n\t10811: 0x8F68,\n\t10812: 0x9B3C,\n\t10813: 0x8BE1,\n\t10814: 0x7678,\n\t10815: 0x6842,\n\t10816: 0x67DC,\n\t10817: 0x8DEA,\n\t10818: 0x8D35,\n\t10819: 0x523D,\n\t10820: 0x8F8A,\n\t10821: 0x6EDA,\n\t10822: 0x68CD,\n\t10823: 0x9505,\n\t10824: 0x90ED,\n\t10825: 0x56FD,\n\t10826: 0x679C,\n\t10827: 0x88F9,\n\t10828: 0x8FC7,\n\t10829: 0x54C8,\n\t10830: 0x7BC5,\n\t10831: 0x7BC8,\n\t10832: 0x7BC9,\n\t10833: 0x7BCA,\n\t10834: 0x7BCB,\n\t10835: 0x7BCD,\n\t10836: 0x7BCE,\n\t10837: 0x7BCF,\n\t10838: 0x7BD0,\n\t10839: 0x7BD2,\n\t10840: 0x7BD4,\n\t10841: 0x7BD5,\n\t10842: 0x7BD6,\n\t10843: 0x7BD7,\n\t10844: 0x7BD8,\n\t10845: 0x7BDB,\n\t10846: 0x7BDC,\n\t10847: 0x7BDE,\n\t10848: 0x7BDF,\n\t10849: 0x7BE0,\n\t10850: 0x7BE2,\n\t10851: 0x7BE3,\n\t10852: 0x7BE4,\n\t10853: 0x7BE7,\n\t10854: 0x7BE8,\n\t10855: 0x7BE9,\n\t10856: 0x7BEB,\n\t10857: 0x7BEC,\n\t10858: 0x7BED,\n\t10859: 0x7BEF,\n\t10860: 0x7BF0,\n\t10861: 0x7BF2,\n\t10862: 0x7BF3,\n\t10863: 0x7BF4,\n\t10864: 0x7BF5,\n\t10865: 0x7BF6,\n\t10866: 0x7BF8,\n\t10867: 0x7BF9,\n\t10868: 0x7BFA,\n\t10869: 0x7BFB,\n\t10870: 0x7BFD,\n\t10871: 0x7BFF,\n\t10872: 0x7C00,\n\t10873: 0x7C01,\n\t10874: 0x7C02,\n\t10875: 0x7C03,\n\t10876: 0x7C04,\n\t10877: 0x7C05,\n\t10878: 0x7C06,\n\t10879: 0x7C08,\n\t10880: 0x7C09,\n\t10881: 0x7C0A,\n\t10882: 0x7C0D,\n\t10883: 0x7C0E,\n\t10884: 0x7C10,\n\t10885: 0x7C11,\n\t10886: 0x7C12,\n\t10887: 0x7C13,\n\t10888: 0x7C14,\n\t10889: 0x7C15,\n\t10890: 0x7C17,\n\t10891: 0x7C18,\n\t10892: 0x7C19,\n\t10893: 0x7C1A,\n\t10894: 0x7C1B,\n\t10895: 0x7C1C,\n\t10896: 0x7C1D,\n\t10897: 0x7C1E,\n\t10898: 0x7C20,\n\t10899: 0x7C21,\n\t10900: 0x7C22,\n\t10901: 0x7C23,\n\t10902: 0x7C24,\n\t10903: 0x7C25,\n\t10904: 0x7C28,\n\t10905: 0x7C29,\n\t10906: 0x7C2B,\n\t10907: 0x7C2C,\n\t10908: 0x7C2D,\n\t10909: 0x7C2E,\n\t10910: 0x7C2F,\n\t10911: 0x7C30,\n\t10912: 0x7C31,\n\t10913: 0x7C32,\n\t10914: 0x7C33,\n\t10915: 0x7C34,\n\t10916: 0x7C35,\n\t10917: 0x7C36,\n\t10918: 0x7C37,\n\t10919: 0x7C39,\n\t10920: 0x7C3A,\n\t10921: 0x7C3B,\n\t10922: 0x7C3C,\n\t10923: 0x7C3D,\n\t10924: 0x7C3E,\n\t10925: 0x7C42,\n\t10926: 0x9AB8,\n\t10927: 0x5B69,\n\t10928: 0x6D77,\n\t10929: 0x6C26,\n\t10930: 0x4EA5,\n\t10931: 0x5BB3,\n\t10932: 0x9A87,\n\t10933: 0x9163,\n\t10934: 0x61A8,\n\t10935: 0x90AF,\n\t10936: 0x97E9,\n\t10937: 0x542B,\n\t10938: 0x6DB5,\n\t10939: 0x5BD2,\n\t10940: 0x51FD,\n\t10941: 0x558A,\n\t10942: 0x7F55,\n\t10943: 0x7FF0,\n\t10944: 0x64BC,\n\t10945: 0x634D,\n\t10946: 0x65F1,\n\t10947: 0x61BE,\n\t10948: 0x608D,\n\t10949: 0x710A,\n\t10950: 0x6C57,\n\t10951: 0x6C49,\n\t10952: 0x592F,\n\t10953: 0x676D,\n\t10954: 0x822A,\n\t10955: 0x58D5,\n\t10956: 0x568E,\n\t10957: 0x8C6A,\n\t10958: 0x6BEB,\n\t10959: 0x90DD,\n\t10960: 0x597D,\n\t10961: 0x8017,\n\t10962: 0x53F7,\n\t10963: 0x6D69,\n\t10964: 0x5475,\n\t10965: 0x559D,\n\t10966: 0x8377,\n\t10967: 0x83CF,\n\t10968: 0x6838,\n\t10969: 0x79BE,\n\t10970: 0x548C,\n\t10971: 0x4F55,\n\t10972: 0x5408,\n\t10973: 0x76D2,\n\t10974: 0x8C89,\n\t10975: 0x9602,\n\t10976: 0x6CB3,\n\t10977: 0x6DB8,\n\t10978: 0x8D6B,\n\t10979: 0x8910,\n\t10980: 0x9E64,\n\t10981: 0x8D3A,\n\t10982: 0x563F,\n\t10983: 0x9ED1,\n\t10984: 0x75D5,\n\t10985: 0x5F88,\n\t10986: 0x72E0,\n\t10987: 0x6068,\n\t10988: 0x54FC,\n\t10989: 0x4EA8,\n\t10990: 0x6A2A,\n\t10991: 0x8861,\n\t10992: 0x6052,\n\t10993: 0x8F70,\n\t10994: 0x54C4,\n\t10995: 0x70D8,\n\t10996: 0x8679,\n\t10997: 0x9E3F,\n\t10998: 0x6D2A,\n\t10999: 0x5B8F,\n\t11000: 0x5F18,\n\t11001: 0x7EA2,\n\t11002: 0x5589,\n\t11003: 0x4FAF,\n\t11004: 0x7334,\n\t11005: 0x543C,\n\t11006: 0x539A,\n\t11007: 0x5019,\n\t11008: 0x540E,\n\t11009: 0x547C,\n\t11010: 0x4E4E,\n\t11011: 0x5FFD,\n\t11012: 0x745A,\n\t11013: 0x58F6,\n\t11014: 0x846B,\n\t11015: 0x80E1,\n\t11016: 0x8774,\n\t11017: 0x72D0,\n\t11018: 0x7CCA,\n\t11019: 0x6E56,\n\t11020: 0x7C43,\n\t11021: 0x7C44,\n\t11022: 0x7C45,\n\t11023: 0x7C46,\n\t11024: 0x7C47,\n\t11025: 0x7C48,\n\t11026: 0x7C49,\n\t11027: 0x7C4A,\n\t11028: 0x7C4B,\n\t11029: 0x7C4C,\n\t11030: 0x7C4E,\n\t11031: 0x7C4F,\n\t11032: 0x7C50,\n\t11033: 0x7C51,\n\t11034: 0x7C52,\n\t11035: 0x7C53,\n\t11036: 0x7C54,\n\t11037: 0x7C55,\n\t11038: 0x7C56,\n\t11039: 0x7C57,\n\t11040: 0x7C58,\n\t11041: 0x7C59,\n\t11042: 0x7C5A,\n\t11043: 0x7C5B,\n\t11044: 0x7C5C,\n\t11045: 0x7C5D,\n\t11046: 0x7C5E,\n\t11047: 0x7C5F,\n\t11048: 0x7C60,\n\t11049: 0x7C61,\n\t11050: 0x7C62,\n\t11051: 0x7C63,\n\t11052: 0x7C64,\n\t11053: 0x7C65,\n\t11054: 0x7C66,\n\t11055: 0x7C67,\n\t11056: 0x7C68,\n\t11057: 0x7C69,\n\t11058: 0x7C6A,\n\t11059: 0x7C6B,\n\t11060: 0x7C6C,\n\t11061: 0x7C6D,\n\t11062: 0x7C6E,\n\t11063: 0x7C6F,\n\t11064: 0x7C70,\n\t11065: 0x7C71,\n\t11066: 0x7C72,\n\t11067: 0x7C75,\n\t11068: 0x7C76,\n\t11069: 0x7C77,\n\t11070: 0x7C78,\n\t11071: 0x7C79,\n\t11072: 0x7C7A,\n\t11073: 0x7C7E,\n\t11074: 0x7C7F,\n\t11075: 0x7C80,\n\t11076: 0x7C81,\n\t11077: 0x7C82,\n\t11078: 0x7C83,\n\t11079: 0x7C84,\n\t11080: 0x7C85,\n\t11081: 0x7C86,\n\t11082: 0x7C87,\n\t11083: 0x7C88,\n\t11084: 0x7C8A,\n\t11085: 0x7C8B,\n\t11086: 0x7C8C,\n\t11087: 0x7C8D,\n\t11088: 0x7C8E,\n\t11089: 0x7C8F,\n\t11090: 0x7C90,\n\t11091: 0x7C93,\n\t11092: 0x7C94,\n\t11093: 0x7C96,\n\t11094: 0x7C99,\n\t11095: 0x7C9A,\n\t11096: 0x7C9B,\n\t11097: 0x7CA0,\n\t11098: 0x7CA1,\n\t11099: 0x7CA3,\n\t11100: 0x7CA6,\n\t11101: 0x7CA7,\n\t11102: 0x7CA8,\n\t11103: 0x7CA9,\n\t11104: 0x7CAB,\n\t11105: 0x7CAC,\n\t11106: 0x7CAD,\n\t11107: 0x7CAF,\n\t11108: 0x7CB0,\n\t11109: 0x7CB4,\n\t11110: 0x7CB5,\n\t11111: 0x7CB6,\n\t11112: 0x7CB7,\n\t11113: 0x7CB8,\n\t11114: 0x7CBA,\n\t11115: 0x7CBB,\n\t11116: 0x5F27,\n\t11117: 0x864E,\n\t11118: 0x552C,\n\t11119: 0x62A4,\n\t11120: 0x4E92,\n\t11121: 0x6CAA,\n\t11122: 0x6237,\n\t11123: 0x82B1,\n\t11124: 0x54D7,\n\t11125: 0x534E,\n\t11126: 0x733E,\n\t11127: 0x6ED1,\n\t11128: 0x753B,\n\t11129: 0x5212,\n\t11130: 0x5316,\n\t11131: 0x8BDD,\n\t11132: 0x69D0,\n\t11133: 0x5F8A,\n\t11134: 0x6000,\n\t11135: 0x6DEE,\n\t11136: 0x574F,\n\t11137: 0x6B22,\n\t11138: 0x73AF,\n\t11139: 0x6853,\n\t11140: 0x8FD8,\n\t11141: 0x7F13,\n\t11142: 0x6362,\n\t11143: 0x60A3,\n\t11144: 0x5524,\n\t11145: 0x75EA,\n\t11146: 0x8C62,\n\t11147: 0x7115,\n\t11148: 0x6DA3,\n\t11149: 0x5BA6,\n\t11150: 0x5E7B,\n\t11151: 0x8352,\n\t11152: 0x614C,\n\t11153: 0x9EC4,\n\t11154: 0x78FA,\n\t11155: 0x8757,\n\t11156: 0x7C27,\n\t11157: 0x7687,\n\t11158: 0x51F0,\n\t11159: 0x60F6,\n\t11160: 0x714C,\n\t11161: 0x6643,\n\t11162: 0x5E4C,\n\t11163: 0x604D,\n\t11164: 0x8C0E,\n\t11165: 0x7070,\n\t11166: 0x6325,\n\t11167: 0x8F89,\n\t11168: 0x5FBD,\n\t11169: 0x6062,\n\t11170: 0x86D4,\n\t11171: 0x56DE,\n\t11172: 0x6BC1,\n\t11173: 0x6094,\n\t11174: 0x6167,\n\t11175: 0x5349,\n\t11176: 0x60E0,\n\t11177: 0x6666,\n\t11178: 0x8D3F,\n\t11179: 0x79FD,\n\t11180: 0x4F1A,\n\t11181: 0x70E9,\n\t11182: 0x6C47,\n\t11183: 0x8BB3,\n\t11184: 0x8BF2,\n\t11185: 0x7ED8,\n\t11186: 0x8364,\n\t11187: 0x660F,\n\t11188: 0x5A5A,\n\t11189: 0x9B42,\n\t11190: 0x6D51,\n\t11191: 0x6DF7,\n\t11192: 0x8C41,\n\t11193: 0x6D3B,\n\t11194: 0x4F19,\n\t11195: 0x706B,\n\t11196: 0x83B7,\n\t11197: 0x6216,\n\t11198: 0x60D1,\n\t11199: 0x970D,\n\t11200: 0x8D27,\n\t11201: 0x7978,\n\t11202: 0x51FB,\n\t11203: 0x573E,\n\t11204: 0x57FA,\n\t11205: 0x673A,\n\t11206: 0x7578,\n\t11207: 0x7A3D,\n\t11208: 0x79EF,\n\t11209: 0x7B95,\n\t11210: 0x7CBF,\n\t11211: 0x7CC0,\n\t11212: 0x7CC2,\n\t11213: 0x7CC3,\n\t11214: 0x7CC4,\n\t11215: 0x7CC6,\n\t11216: 0x7CC9,\n\t11217: 0x7CCB,\n\t11218: 0x7CCE,\n\t11219: 0x7CCF,\n\t11220: 0x7CD0,\n\t11221: 0x7CD1,\n\t11222: 0x7CD2,\n\t11223: 0x7CD3,\n\t11224: 0x7CD4,\n\t11225: 0x7CD8,\n\t11226: 0x7CDA,\n\t11227: 0x7CDB,\n\t11228: 0x7CDD,\n\t11229: 0x7CDE,\n\t11230: 0x7CE1,\n\t11231: 0x7CE2,\n\t11232: 0x7CE3,\n\t11233: 0x7CE4,\n\t11234: 0x7CE5,\n\t11235: 0x7CE6,\n\t11236: 0x7CE7,\n\t11237: 0x7CE9,\n\t11238: 0x7CEA,\n\t11239: 0x7CEB,\n\t11240: 0x7CEC,\n\t11241: 0x7CED,\n\t11242: 0x7CEE,\n\t11243: 0x7CF0,\n\t11244: 0x7CF1,\n\t11245: 0x7CF2,\n\t11246: 0x7CF3,\n\t11247: 0x7CF4,\n\t11248: 0x7CF5,\n\t11249: 0x7CF6,\n\t11250: 0x7CF7,\n\t11251: 0x7CF9,\n\t11252: 0x7CFA,\n\t11253: 0x7CFC,\n\t11254: 0x7CFD,\n\t11255: 0x7CFE,\n\t11256: 0x7CFF,\n\t11257: 0x7D00,\n\t11258: 0x7D01,\n\t11259: 0x7D02,\n\t11260: 0x7D03,\n\t11261: 0x7D04,\n\t11262: 0x7D05,\n\t11263: 0x7D06,\n\t11264: 0x7D07,\n\t11265: 0x7D08,\n\t11266: 0x7D09,\n\t11267: 0x7D0B,\n\t11268: 0x7D0C,\n\t11269: 0x7D0D,\n\t11270: 0x7D0E,\n\t11271: 0x7D0F,\n\t11272: 0x7D10,\n\t11273: 0x7D11,\n\t11274: 0x7D12,\n\t11275: 0x7D13,\n\t11276: 0x7D14,\n\t11277: 0x7D15,\n\t11278: 0x7D16,\n\t11279: 0x7D17,\n\t11280: 0x7D18,\n\t11281: 0x7D19,\n\t11282: 0x7D1A,\n\t11283: 0x7D1B,\n\t11284: 0x7D1C,\n\t11285: 0x7D1D,\n\t11286: 0x7D1E,\n\t11287: 0x7D1F,\n\t11288: 0x7D21,\n\t11289: 0x7D23,\n\t11290: 0x7D24,\n\t11291: 0x7D25,\n\t11292: 0x7D26,\n\t11293: 0x7D28,\n\t11294: 0x7D29,\n\t11295: 0x7D2A,\n\t11296: 0x7D2C,\n\t11297: 0x7D2D,\n\t11298: 0x7D2E,\n\t11299: 0x7D30,\n\t11300: 0x7D31,\n\t11301: 0x7D32,\n\t11302: 0x7D33,\n\t11303: 0x7D34,\n\t11304: 0x7D35,\n\t11305: 0x7D36,\n\t11306: 0x808C,\n\t11307: 0x9965,\n\t11308: 0x8FF9,\n\t11309: 0x6FC0,\n\t11310: 0x8BA5,\n\t11311: 0x9E21,\n\t11312: 0x59EC,\n\t11313: 0x7EE9,\n\t11314: 0x7F09,\n\t11315: 0x5409,\n\t11316: 0x6781,\n\t11317: 0x68D8,\n\t11318: 0x8F91,\n\t11319: 0x7C4D,\n\t11320: 0x96C6,\n\t11321: 0x53CA,\n\t11322: 0x6025,\n\t11323: 0x75BE,\n\t11324: 0x6C72,\n\t11325: 0x5373,\n\t11326: 0x5AC9,\n\t11327: 0x7EA7,\n\t11328: 0x6324,\n\t11329: 0x51E0,\n\t11330: 0x810A,\n\t11331: 0x5DF1,\n\t11332: 0x84DF,\n\t11333: 0x6280,\n\t11334: 0x5180,\n\t11335: 0x5B63,\n\t11336: 0x4F0E,\n\t11337: 0x796D,\n\t11338: 0x5242,\n\t11339: 0x60B8,\n\t11340: 0x6D4E,\n\t11341: 0x5BC4,\n\t11342: 0x5BC2,\n\t11343: 0x8BA1,\n\t11344: 0x8BB0,\n\t11345: 0x65E2,\n\t11346: 0x5FCC,\n\t11347: 0x9645,\n\t11348: 0x5993,\n\t11349: 0x7EE7,\n\t11350: 0x7EAA,\n\t11351: 0x5609,\n\t11352: 0x67B7,\n\t11353: 0x5939,\n\t11354: 0x4F73,\n\t11355: 0x5BB6,\n\t11356: 0x52A0,\n\t11357: 0x835A,\n\t11358: 0x988A,\n\t11359: 0x8D3E,\n\t11360: 0x7532,\n\t11361: 0x94BE,\n\t11362: 0x5047,\n\t11363: 0x7A3C,\n\t11364: 0x4EF7,\n\t11365: 0x67B6,\n\t11366: 0x9A7E,\n\t11367: 0x5AC1,\n\t11368: 0x6B7C,\n\t11369: 0x76D1,\n\t11370: 0x575A,\n\t11371: 0x5C16,\n\t11372: 0x7B3A,\n\t11373: 0x95F4,\n\t11374: 0x714E,\n\t11375: 0x517C,\n\t11376: 0x80A9,\n\t11377: 0x8270,\n\t11378: 0x5978,\n\t11379: 0x7F04,\n\t11380: 0x8327,\n\t11381: 0x68C0,\n\t11382: 0x67EC,\n\t11383: 0x78B1,\n\t11384: 0x7877,\n\t11385: 0x62E3,\n\t11386: 0x6361,\n\t11387: 0x7B80,\n\t11388: 0x4FED,\n\t11389: 0x526A,\n\t11390: 0x51CF,\n\t11391: 0x8350,\n\t11392: 0x69DB,\n\t11393: 0x9274,\n\t11394: 0x8DF5,\n\t11395: 0x8D31,\n\t11396: 0x89C1,\n\t11397: 0x952E,\n\t11398: 0x7BAD,\n\t11399: 0x4EF6,\n\t11400: 0x7D37,\n\t11401: 0x7D38,\n\t11402: 0x7D39,\n\t11403: 0x7D3A,\n\t11404: 0x7D3B,\n\t11405: 0x7D3C,\n\t11406: 0x7D3D,\n\t11407: 0x7D3E,\n\t11408: 0x7D3F,\n\t11409: 0x7D40,\n\t11410: 0x7D41,\n\t11411: 0x7D42,\n\t11412: 0x7D43,\n\t11413: 0x7D44,\n\t11414: 0x7D45,\n\t11415: 0x7D46,\n\t11416: 0x7D47,\n\t11417: 0x7D48,\n\t11418: 0x7D49,\n\t11419: 0x7D4A,\n\t11420: 0x7D4B,\n\t11421: 0x7D4C,\n\t11422: 0x7D4D,\n\t11423: 0x7D4E,\n\t11424: 0x7D4F,\n\t11425: 0x7D50,\n\t11426: 0x7D51,\n\t11427: 0x7D52,\n\t11428: 0x7D53,\n\t11429: 0x7D54,\n\t11430: 0x7D55,\n\t11431: 0x7D56,\n\t11432: 0x7D57,\n\t11433: 0x7D58,\n\t11434: 0x7D59,\n\t11435: 0x7D5A,\n\t11436: 0x7D5B,\n\t11437: 0x7D5C,\n\t11438: 0x7D5D,\n\t11439: 0x7D5E,\n\t11440: 0x7D5F,\n\t11441: 0x7D60,\n\t11442: 0x7D61,\n\t11443: 0x7D62,\n\t11444: 0x7D63,\n\t11445: 0x7D64,\n\t11446: 0x7D65,\n\t11447: 0x7D66,\n\t11448: 0x7D67,\n\t11449: 0x7D68,\n\t11450: 0x7D69,\n\t11451: 0x7D6A,\n\t11452: 0x7D6B,\n\t11453: 0x7D6C,\n\t11454: 0x7D6D,\n\t11455: 0x7D6F,\n\t11456: 0x7D70,\n\t11457: 0x7D71,\n\t11458: 0x7D72,\n\t11459: 0x7D73,\n\t11460: 0x7D74,\n\t11461: 0x7D75,\n\t11462: 0x7D76,\n\t11463: 0x7D78,\n\t11464: 0x7D79,\n\t11465: 0x7D7A,\n\t11466: 0x7D7B,\n\t11467: 0x7D7C,\n\t11468: 0x7D7D,\n\t11469: 0x7D7E,\n\t11470: 0x7D7F,\n\t11471: 0x7D80,\n\t11472: 0x7D81,\n\t11473: 0x7D82,\n\t11474: 0x7D83,\n\t11475: 0x7D84,\n\t11476: 0x7D85,\n\t11477: 0x7D86,\n\t11478: 0x7D87,\n\t11479: 0x7D88,\n\t11480: 0x7D89,\n\t11481: 0x7D8A,\n\t11482: 0x7D8B,\n\t11483: 0x7D8C,\n\t11484: 0x7D8D,\n\t11485: 0x7D8E,\n\t11486: 0x7D8F,\n\t11487: 0x7D90,\n\t11488: 0x7D91,\n\t11489: 0x7D92,\n\t11490: 0x7D93,\n\t11491: 0x7D94,\n\t11492: 0x7D95,\n\t11493: 0x7D96,\n\t11494: 0x7D97,\n\t11495: 0x7D98,\n\t11496: 0x5065,\n\t11497: 0x8230,\n\t11498: 0x5251,\n\t11499: 0x996F,\n\t11500: 0x6E10,\n\t11501: 0x6E85,\n\t11502: 0x6DA7,\n\t11503: 0x5EFA,\n\t11504: 0x50F5,\n\t11505: 0x59DC,\n\t11506: 0x5C06,\n\t11507: 0x6D46,\n\t11508: 0x6C5F,\n\t11509: 0x7586,\n\t11510: 0x848B,\n\t11511: 0x6868,\n\t11512: 0x5956,\n\t11513: 0x8BB2,\n\t11514: 0x5320,\n\t11515: 0x9171,\n\t11516: 0x964D,\n\t11517: 0x8549,\n\t11518: 0x6912,\n\t11519: 0x7901,\n\t11520: 0x7126,\n\t11521: 0x80F6,\n\t11522: 0x4EA4,\n\t11523: 0x90CA,\n\t11524: 0x6D47,\n\t11525: 0x9A84,\n\t11526: 0x5A07,\n\t11527: 0x56BC,\n\t11528: 0x6405,\n\t11529: 0x94F0,\n\t11530: 0x77EB,\n\t11531: 0x4FA5,\n\t11532: 0x811A,\n\t11533: 0x72E1,\n\t11534: 0x89D2,\n\t11535: 0x997A,\n\t11536: 0x7F34,\n\t11537: 0x7EDE,\n\t11538: 0x527F,\n\t11539: 0x6559,\n\t11540: 0x9175,\n\t11541: 0x8F7F,\n\t11542: 0x8F83,\n\t11543: 0x53EB,\n\t11544: 0x7A96,\n\t11545: 0x63ED,\n\t11546: 0x63A5,\n\t11547: 0x7686,\n\t11548: 0x79F8,\n\t11549: 0x8857,\n\t11550: 0x9636,\n\t11551: 0x622A,\n\t11552: 0x52AB,\n\t11553: 0x8282,\n\t11554: 0x6854,\n\t11555: 0x6770,\n\t11556: 0x6377,\n\t11557: 0x776B,\n\t11558: 0x7AED,\n\t11559: 0x6D01,\n\t11560: 0x7ED3,\n\t11561: 0x89E3,\n\t11562: 0x59D0,\n\t11563: 0x6212,\n\t11564: 0x85C9,\n\t11565: 0x82A5,\n\t11566: 0x754C,\n\t11567: 0x501F,\n\t11568: 0x4ECB,\n\t11569: 0x75A5,\n\t11570: 0x8BEB,\n\t11571: 0x5C4A,\n\t11572: 0x5DFE,\n\t11573: 0x7B4B,\n\t11574: 0x65A4,\n\t11575: 0x91D1,\n\t11576: 0x4ECA,\n\t11577: 0x6D25,\n\t11578: 0x895F,\n\t11579: 0x7D27,\n\t11580: 0x9526,\n\t11581: 0x4EC5,\n\t11582: 0x8C28,\n\t11583: 0x8FDB,\n\t11584: 0x9773,\n\t11585: 0x664B,\n\t11586: 0x7981,\n\t11587: 0x8FD1,\n\t11588: 0x70EC,\n\t11589: 0x6D78,\n\t11590: 0x7D99,\n\t11591: 0x7D9A,\n\t11592: 0x7D9B,\n\t11593: 0x7D9C,\n\t11594: 0x7D9D,\n\t11595: 0x7D9E,\n\t11596: 0x7D9F,\n\t11597: 0x7DA0,\n\t11598: 0x7DA1,\n\t11599: 0x7DA2,\n\t11600: 0x7DA3,\n\t11601: 0x7DA4,\n\t11602: 0x7DA5,\n\t11603: 0x7DA7,\n\t11604: 0x7DA8,\n\t11605: 0x7DA9,\n\t11606: 0x7DAA,\n\t11607: 0x7DAB,\n\t11608: 0x7DAC,\n\t11609: 0x7DAD,\n\t11610: 0x7DAF,\n\t11611: 0x7DB0,\n\t11612: 0x7DB1,\n\t11613: 0x7DB2,\n\t11614: 0x7DB3,\n\t11615: 0x7DB4,\n\t11616: 0x7DB5,\n\t11617: 0x7DB6,\n\t11618: 0x7DB7,\n\t11619: 0x7DB8,\n\t11620: 0x7DB9,\n\t11621: 0x7DBA,\n\t11622: 0x7DBB,\n\t11623: 0x7DBC,\n\t11624: 0x7DBD,\n\t11625: 0x7DBE,\n\t11626: 0x7DBF,\n\t11627: 0x7DC0,\n\t11628: 0x7DC1,\n\t11629: 0x7DC2,\n\t11630: 0x7DC3,\n\t11631: 0x7DC4,\n\t11632: 0x7DC5,\n\t11633: 0x7DC6,\n\t11634: 0x7DC7,\n\t11635: 0x7DC8,\n\t11636: 0x7DC9,\n\t11637: 0x7DCA,\n\t11638: 0x7DCB,\n\t11639: 0x7DCC,\n\t11640: 0x7DCD,\n\t11641: 0x7DCE,\n\t11642: 0x7DCF,\n\t11643: 0x7DD0,\n\t11644: 0x7DD1,\n\t11645: 0x7DD2,\n\t11646: 0x7DD3,\n\t11647: 0x7DD4,\n\t11648: 0x7DD5,\n\t11649: 0x7DD6,\n\t11650: 0x7DD7,\n\t11651: 0x7DD8,\n\t11652: 0x7DD9,\n\t11653: 0x7DDA,\n\t11654: 0x7DDB,\n\t11655: 0x7DDC,\n\t11656: 0x7DDD,\n\t11657: 0x7DDE,\n\t11658: 0x7DDF,\n\t11659: 0x7DE0,\n\t11660: 0x7DE1,\n\t11661: 0x7DE2,\n\t11662: 0x7DE3,\n\t11663: 0x7DE4,\n\t11664: 0x7DE5,\n\t11665: 0x7DE6,\n\t11666: 0x7DE7,\n\t11667: 0x7DE8,\n\t11668: 0x7DE9,\n\t11669: 0x7DEA,\n\t11670: 0x7DEB,\n\t11671: 0x7DEC,\n\t11672: 0x7DED,\n\t11673: 0x7DEE,\n\t11674: 0x7DEF,\n\t11675: 0x7DF0,\n\t11676: 0x7DF1,\n\t11677: 0x7DF2,\n\t11678: 0x7DF3,\n\t11679: 0x7DF4,\n\t11680: 0x7DF5,\n\t11681: 0x7DF6,\n\t11682: 0x7DF7,\n\t11683: 0x7DF8,\n\t11684: 0x7DF9,\n\t11685: 0x7DFA,\n\t11686: 0x5C3D,\n\t11687: 0x52B2,\n\t11688: 0x8346,\n\t11689: 0x5162,\n\t11690: 0x830E,\n\t11691: 0x775B,\n\t11692: 0x6676,\n\t11693: 0x9CB8,\n\t11694: 0x4EAC,\n\t11695: 0x60CA,\n\t11696: 0x7CBE,\n\t11697: 0x7CB3,\n\t11698: 0x7ECF,\n\t11699: 0x4E95,\n\t11700: 0x8B66,\n\t11701: 0x666F,\n\t11702: 0x9888,\n\t11703: 0x9759,\n\t11704: 0x5883,\n\t11705: 0x656C,\n\t11706: 0x955C,\n\t11707: 0x5F84,\n\t11708: 0x75C9,\n\t11709: 0x9756,\n\t11710: 0x7ADF,\n\t11711: 0x7ADE,\n\t11712: 0x51C0,\n\t11713: 0x70AF,\n\t11714: 0x7A98,\n\t11715: 0x63EA,\n\t11716: 0x7A76,\n\t11717: 0x7EA0,\n\t11718: 0x7396,\n\t11719: 0x97ED,\n\t11720: 0x4E45,\n\t11721: 0x7078,\n\t11722: 0x4E5D,\n\t11723: 0x9152,\n\t11724: 0x53A9,\n\t11725: 0x6551,\n\t11726: 0x65E7,\n\t11727: 0x81FC,\n\t11728: 0x8205,\n\t11729: 0x548E,\n\t11730: 0x5C31,\n\t11731: 0x759A,\n\t11732: 0x97A0,\n\t11733: 0x62D8,\n\t11734: 0x72D9,\n\t11735: 0x75BD,\n\t11736: 0x5C45,\n\t11737: 0x9A79,\n\t11738: 0x83CA,\n\t11739: 0x5C40,\n\t11740: 0x5480,\n\t11741: 0x77E9,\n\t11742: 0x4E3E,\n\t11743: 0x6CAE,\n\t11744: 0x805A,\n\t11745: 0x62D2,\n\t11746: 0x636E,\n\t11747: 0x5DE8,\n\t11748: 0x5177,\n\t11749: 0x8DDD,\n\t11750: 0x8E1E,\n\t11751: 0x952F,\n\t11752: 0x4FF1,\n\t11753: 0x53E5,\n\t11754: 0x60E7,\n\t11755: 0x70AC,\n\t11756: 0x5267,\n\t11757: 0x6350,\n\t11758: 0x9E43,\n\t11759: 0x5A1F,\n\t11760: 0x5026,\n\t11761: 0x7737,\n\t11762: 0x5377,\n\t11763: 0x7EE2,\n\t11764: 0x6485,\n\t11765: 0x652B,\n\t11766: 0x6289,\n\t11767: 0x6398,\n\t11768: 0x5014,\n\t11769: 0x7235,\n\t11770: 0x89C9,\n\t11771: 0x51B3,\n\t11772: 0x8BC0,\n\t11773: 0x7EDD,\n\t11774: 0x5747,\n\t11775: 0x83CC,\n\t11776: 0x94A7,\n\t11777: 0x519B,\n\t11778: 0x541B,\n\t11779: 0x5CFB,\n\t11780: 0x7DFB,\n\t11781: 0x7DFC,\n\t11782: 0x7DFD,\n\t11783: 0x7DFE,\n\t11784: 0x7DFF,\n\t11785: 0x7E00,\n\t11786: 0x7E01,\n\t11787: 0x7E02,\n\t11788: 0x7E03,\n\t11789: 0x7E04,\n\t11790: 0x7E05,\n\t11791: 0x7E06,\n\t11792: 0x7E07,\n\t11793: 0x7E08,\n\t11794: 0x7E09,\n\t11795: 0x7E0A,\n\t11796: 0x7E0B,\n\t11797: 0x7E0C,\n\t11798: 0x7E0D,\n\t11799: 0x7E0E,\n\t11800: 0x7E0F,\n\t11801: 0x7E10,\n\t11802: 0x7E11,\n\t11803: 0x7E12,\n\t11804: 0x7E13,\n\t11805: 0x7E14,\n\t11806: 0x7E15,\n\t11807: 0x7E16,\n\t11808: 0x7E17,\n\t11809: 0x7E18,\n\t11810: 0x7E19,\n\t11811: 0x7E1A,\n\t11812: 0x7E1B,\n\t11813: 0x7E1C,\n\t11814: 0x7E1D,\n\t11815: 0x7E1E,\n\t11816: 0x7E1F,\n\t11817: 0x7E20,\n\t11818: 0x7E21,\n\t11819: 0x7E22,\n\t11820: 0x7E23,\n\t11821: 0x7E24,\n\t11822: 0x7E25,\n\t11823: 0x7E26,\n\t11824: 0x7E27,\n\t11825: 0x7E28,\n\t11826: 0x7E29,\n\t11827: 0x7E2A,\n\t11828: 0x7E2B,\n\t11829: 0x7E2C,\n\t11830: 0x7E2D,\n\t11831: 0x7E2E,\n\t11832: 0x7E2F,\n\t11833: 0x7E30,\n\t11834: 0x7E31,\n\t11835: 0x7E32,\n\t11836: 0x7E33,\n\t11837: 0x7E34,\n\t11838: 0x7E35,\n\t11839: 0x7E36,\n\t11840: 0x7E37,\n\t11841: 0x7E38,\n\t11842: 0x7E39,\n\t11843: 0x7E3A,\n\t11844: 0x7E3C,\n\t11845: 0x7E3D,\n\t11846: 0x7E3E,\n\t11847: 0x7E3F,\n\t11848: 0x7E40,\n\t11849: 0x7E42,\n\t11850: 0x7E43,\n\t11851: 0x7E44,\n\t11852: 0x7E45,\n\t11853: 0x7E46,\n\t11854: 0x7E48,\n\t11855: 0x7E49,\n\t11856: 0x7E4A,\n\t11857: 0x7E4B,\n\t11858: 0x7E4C,\n\t11859: 0x7E4D,\n\t11860: 0x7E4E,\n\t11861: 0x7E4F,\n\t11862: 0x7E50,\n\t11863: 0x7E51,\n\t11864: 0x7E52,\n\t11865: 0x7E53,\n\t11866: 0x7E54,\n\t11867: 0x7E55,\n\t11868: 0x7E56,\n\t11869: 0x7E57,\n\t11870: 0x7E58,\n\t11871: 0x7E59,\n\t11872: 0x7E5A,\n\t11873: 0x7E5B,\n\t11874: 0x7E5C,\n\t11875: 0x7E5D,\n\t11876: 0x4FCA,\n\t11877: 0x7AE3,\n\t11878: 0x6D5A,\n\t11879: 0x90E1,\n\t11880: 0x9A8F,\n\t11881: 0x5580,\n\t11882: 0x5496,\n\t11883: 0x5361,\n\t11884: 0x54AF,\n\t11885: 0x5F00,\n\t11886: 0x63E9,\n\t11887: 0x6977,\n\t11888: 0x51EF,\n\t11889: 0x6168,\n\t11890: 0x520A,\n\t11891: 0x582A,\n\t11892: 0x52D8,\n\t11893: 0x574E,\n\t11894: 0x780D,\n\t11895: 0x770B,\n\t11896: 0x5EB7,\n\t11897: 0x6177,\n\t11898: 0x7CE0,\n\t11899: 0x625B,\n\t11900: 0x6297,\n\t11901: 0x4EA2,\n\t11902: 0x7095,\n\t11903: 0x8003,\n\t11904: 0x62F7,\n\t11905: 0x70E4,\n\t11906: 0x9760,\n\t11907: 0x5777,\n\t11908: 0x82DB,\n\t11909: 0x67EF,\n\t11910: 0x68F5,\n\t11911: 0x78D5,\n\t11912: 0x9897,\n\t11913: 0x79D1,\n\t11914: 0x58F3,\n\t11915: 0x54B3,\n\t11916: 0x53EF,\n\t11917: 0x6E34,\n\t11918: 0x514B,\n\t11919: 0x523B,\n\t11920: 0x5BA2,\n\t11921: 0x8BFE,\n\t11922: 0x80AF,\n\t11923: 0x5543,\n\t11924: 0x57A6,\n\t11925: 0x6073,\n\t11926: 0x5751,\n\t11927: 0x542D,\n\t11928: 0x7A7A,\n\t11929: 0x6050,\n\t11930: 0x5B54,\n\t11931: 0x63A7,\n\t11932: 0x62A0,\n\t11933: 0x53E3,\n\t11934: 0x6263,\n\t11935: 0x5BC7,\n\t11936: 0x67AF,\n\t11937: 0x54ED,\n\t11938: 0x7A9F,\n\t11939: 0x82E6,\n\t11940: 0x9177,\n\t11941: 0x5E93,\n\t11942: 0x88E4,\n\t11943: 0x5938,\n\t11944: 0x57AE,\n\t11945: 0x630E,\n\t11946: 0x8DE8,\n\t11947: 0x80EF,\n\t11948: 0x5757,\n\t11949: 0x7B77,\n\t11950: 0x4FA9,\n\t11951: 0x5FEB,\n\t11952: 0x5BBD,\n\t11953: 0x6B3E,\n\t11954: 0x5321,\n\t11955: 0x7B50,\n\t11956: 0x72C2,\n\t11957: 0x6846,\n\t11958: 0x77FF,\n\t11959: 0x7736,\n\t11960: 0x65F7,\n\t11961: 0x51B5,\n\t11962: 0x4E8F,\n\t11963: 0x76D4,\n\t11964: 0x5CBF,\n\t11965: 0x7AA5,\n\t11966: 0x8475,\n\t11967: 0x594E,\n\t11968: 0x9B41,\n\t11969: 0x5080,\n\t11970: 0x7E5E,\n\t11971: 0x7E5F,\n\t11972: 0x7E60,\n\t11973: 0x7E61,\n\t11974: 0x7E62,\n\t11975: 0x7E63,\n\t11976: 0x7E64,\n\t11977: 0x7E65,\n\t11978: 0x7E66,\n\t11979: 0x7E67,\n\t11980: 0x7E68,\n\t11981: 0x7E69,\n\t11982: 0x7E6A,\n\t11983: 0x7E6B,\n\t11984: 0x7E6C,\n\t11985: 0x7E6D,\n\t11986: 0x7E6E,\n\t11987: 0x7E6F,\n\t11988: 0x7E70,\n\t11989: 0x7E71,\n\t11990: 0x7E72,\n\t11991: 0x7E73,\n\t11992: 0x7E74,\n\t11993: 0x7E75,\n\t11994: 0x7E76,\n\t11995: 0x7E77,\n\t11996: 0x7E78,\n\t11997: 0x7E79,\n\t11998: 0x7E7A,\n\t11999: 0x7E7B,\n\t12000: 0x7E7C,\n\t12001: 0x7E7D,\n\t12002: 0x7E7E,\n\t12003: 0x7E7F,\n\t12004: 0x7E80,\n\t12005: 0x7E81,\n\t12006: 0x7E83,\n\t12007: 0x7E84,\n\t12008: 0x7E85,\n\t12009: 0x7E86,\n\t12010: 0x7E87,\n\t12011: 0x7E88,\n\t12012: 0x7E89,\n\t12013: 0x7E8A,\n\t12014: 0x7E8B,\n\t12015: 0x7E8C,\n\t12016: 0x7E8D,\n\t12017: 0x7E8E,\n\t12018: 0x7E8F,\n\t12019: 0x7E90,\n\t12020: 0x7E91,\n\t12021: 0x7E92,\n\t12022: 0x7E93,\n\t12023: 0x7E94,\n\t12024: 0x7E95,\n\t12025: 0x7E96,\n\t12026: 0x7E97,\n\t12027: 0x7E98,\n\t12028: 0x7E99,\n\t12029: 0x7E9A,\n\t12030: 0x7E9C,\n\t12031: 0x7E9D,\n\t12032: 0x7E9E,\n\t12033: 0x7EAE,\n\t12034: 0x7EB4,\n\t12035: 0x7EBB,\n\t12036: 0x7EBC,\n\t12037: 0x7ED6,\n\t12038: 0x7EE4,\n\t12039: 0x7EEC,\n\t12040: 0x7EF9,\n\t12041: 0x7F0A,\n\t12042: 0x7F10,\n\t12043: 0x7F1E,\n\t12044: 0x7F37,\n\t12045: 0x7F39,\n\t12046: 0x7F3B,\n\t12047: 0x7F3C,\n\t12048: 0x7F3D,\n\t12049: 0x7F3E,\n\t12050: 0x7F3F,\n\t12051: 0x7F40,\n\t12052: 0x7F41,\n\t12053: 0x7F43,\n\t12054: 0x7F46,\n\t12055: 0x7F47,\n\t12056: 0x7F48,\n\t12057: 0x7F49,\n\t12058: 0x7F4A,\n\t12059: 0x7F4B,\n\t12060: 0x7F4C,\n\t12061: 0x7F4D,\n\t12062: 0x7F4E,\n\t12063: 0x7F4F,\n\t12064: 0x7F52,\n\t12065: 0x7F53,\n\t12066: 0x9988,\n\t12067: 0x6127,\n\t12068: 0x6E83,\n\t12069: 0x5764,\n\t12070: 0x6606,\n\t12071: 0x6346,\n\t12072: 0x56F0,\n\t12073: 0x62EC,\n\t12074: 0x6269,\n\t12075: 0x5ED3,\n\t12076: 0x9614,\n\t12077: 0x5783,\n\t12078: 0x62C9,\n\t12079: 0x5587,\n\t12080: 0x8721,\n\t12081: 0x814A,\n\t12082: 0x8FA3,\n\t12083: 0x5566,\n\t12084: 0x83B1,\n\t12085: 0x6765,\n\t12086: 0x8D56,\n\t12087: 0x84DD,\n\t12088: 0x5A6A,\n\t12089: 0x680F,\n\t12090: 0x62E6,\n\t12091: 0x7BEE,\n\t12092: 0x9611,\n\t12093: 0x5170,\n\t12094: 0x6F9C,\n\t12095: 0x8C30,\n\t12096: 0x63FD,\n\t12097: 0x89C8,\n\t12098: 0x61D2,\n\t12099: 0x7F06,\n\t12100: 0x70C2,\n\t12101: 0x6EE5,\n\t12102: 0x7405,\n\t12103: 0x6994,\n\t12104: 0x72FC,\n\t12105: 0x5ECA,\n\t12106: 0x90CE,\n\t12107: 0x6717,\n\t12108: 0x6D6A,\n\t12109: 0x635E,\n\t12110: 0x52B3,\n\t12111: 0x7262,\n\t12112: 0x8001,\n\t12113: 0x4F6C,\n\t12114: 0x59E5,\n\t12115: 0x916A,\n\t12116: 0x70D9,\n\t12117: 0x6D9D,\n\t12118: 0x52D2,\n\t12119: 0x4E50,\n\t12120: 0x96F7,\n\t12121: 0x956D,\n\t12122: 0x857E,\n\t12123: 0x78CA,\n\t12124: 0x7D2F,\n\t12125: 0x5121,\n\t12126: 0x5792,\n\t12127: 0x64C2,\n\t12128: 0x808B,\n\t12129: 0x7C7B,\n\t12130: 0x6CEA,\n\t12131: 0x68F1,\n\t12132: 0x695E,\n\t12133: 0x51B7,\n\t12134: 0x5398,\n\t12135: 0x68A8,\n\t12136: 0x7281,\n\t12137: 0x9ECE,\n\t12138: 0x7BF1,\n\t12139: 0x72F8,\n\t12140: 0x79BB,\n\t12141: 0x6F13,\n\t12142: 0x7406,\n\t12143: 0x674E,\n\t12144: 0x91CC,\n\t12145: 0x9CA4,\n\t12146: 0x793C,\n\t12147: 0x8389,\n\t12148: 0x8354,\n\t12149: 0x540F,\n\t12150: 0x6817,\n\t12151: 0x4E3D,\n\t12152: 0x5389,\n\t12153: 0x52B1,\n\t12154: 0x783E,\n\t12155: 0x5386,\n\t12156: 0x5229,\n\t12157: 0x5088,\n\t12158: 0x4F8B,\n\t12159: 0x4FD0,\n\t12160: 0x7F56,\n\t12161: 0x7F59,\n\t12162: 0x7F5B,\n\t12163: 0x7F5C,\n\t12164: 0x7F5D,\n\t12165: 0x7F5E,\n\t12166: 0x7F60,\n\t12167: 0x7F63,\n\t12168: 0x7F64,\n\t12169: 0x7F65,\n\t12170: 0x7F66,\n\t12171: 0x7F67,\n\t12172: 0x7F6B,\n\t12173: 0x7F6C,\n\t12174: 0x7F6D,\n\t12175: 0x7F6F,\n\t12176: 0x7F70,\n\t12177: 0x7F73,\n\t12178: 0x7F75,\n\t12179: 0x7F76,\n\t12180: 0x7F77,\n\t12181: 0x7F78,\n\t12182: 0x7F7A,\n\t12183: 0x7F7B,\n\t12184: 0x7F7C,\n\t12185: 0x7F7D,\n\t12186: 0x7F7F,\n\t12187: 0x7F80,\n\t12188: 0x7F82,\n\t12189: 0x7F83,\n\t12190: 0x7F84,\n\t12191: 0x7F85,\n\t12192: 0x7F86,\n\t12193: 0x7F87,\n\t12194: 0x7F88,\n\t12195: 0x7F89,\n\t12196: 0x7F8B,\n\t12197: 0x7F8D,\n\t12198: 0x7F8F,\n\t12199: 0x7F90,\n\t12200: 0x7F91,\n\t12201: 0x7F92,\n\t12202: 0x7F93,\n\t12203: 0x7F95,\n\t12204: 0x7F96,\n\t12205: 0x7F97,\n\t12206: 0x7F98,\n\t12207: 0x7F99,\n\t12208: 0x7F9B,\n\t12209: 0x7F9C,\n\t12210: 0x7FA0,\n\t12211: 0x7FA2,\n\t12212: 0x7FA3,\n\t12213: 0x7FA5,\n\t12214: 0x7FA6,\n\t12215: 0x7FA8,\n\t12216: 0x7FA9,\n\t12217: 0x7FAA,\n\t12218: 0x7FAB,\n\t12219: 0x7FAC,\n\t12220: 0x7FAD,\n\t12221: 0x7FAE,\n\t12222: 0x7FB1,\n\t12223: 0x7FB3,\n\t12224: 0x7FB4,\n\t12225: 0x7FB5,\n\t12226: 0x7FB6,\n\t12227: 0x7FB7,\n\t12228: 0x7FBA,\n\t12229: 0x7FBB,\n\t12230: 0x7FBE,\n\t12231: 0x7FC0,\n\t12232: 0x7FC2,\n\t12233: 0x7FC3,\n\t12234: 0x7FC4,\n\t12235: 0x7FC6,\n\t12236: 0x7FC7,\n\t12237: 0x7FC8,\n\t12238: 0x7FC9,\n\t12239: 0x7FCB,\n\t12240: 0x7FCD,\n\t12241: 0x7FCF,\n\t12242: 0x7FD0,\n\t12243: 0x7FD1,\n\t12244: 0x7FD2,\n\t12245: 0x7FD3,\n\t12246: 0x7FD6,\n\t12247: 0x7FD7,\n\t12248: 0x7FD9,\n\t12249: 0x7FDA,\n\t12250: 0x7FDB,\n\t12251: 0x7FDC,\n\t12252: 0x7FDD,\n\t12253: 0x7FDE,\n\t12254: 0x7FE2,\n\t12255: 0x7FE3,\n\t12256: 0x75E2,\n\t12257: 0x7ACB,\n\t12258: 0x7C92,\n\t12259: 0x6CA5,\n\t12260: 0x96B6,\n\t12261: 0x529B,\n\t12262: 0x7483,\n\t12263: 0x54E9,\n\t12264: 0x4FE9,\n\t12265: 0x8054,\n\t12266: 0x83B2,\n\t12267: 0x8FDE,\n\t12268: 0x9570,\n\t12269: 0x5EC9,\n\t12270: 0x601C,\n\t12271: 0x6D9F,\n\t12272: 0x5E18,\n\t12273: 0x655B,\n\t12274: 0x8138,\n\t12275: 0x94FE,\n\t12276: 0x604B,\n\t12277: 0x70BC,\n\t12278: 0x7EC3,\n\t12279: 0x7CAE,\n\t12280: 0x51C9,\n\t12281: 0x6881,\n\t12282: 0x7CB1,\n\t12283: 0x826F,\n\t12284: 0x4E24,\n\t12285: 0x8F86,\n\t12286: 0x91CF,\n\t12287: 0x667E,\n\t12288: 0x4EAE,\n\t12289: 0x8C05,\n\t12290: 0x64A9,\n\t12291: 0x804A,\n\t12292: 0x50DA,\n\t12293: 0x7597,\n\t12294: 0x71CE,\n\t12295: 0x5BE5,\n\t12296: 0x8FBD,\n\t12297: 0x6F66,\n\t12298: 0x4E86,\n\t12299: 0x6482,\n\t12300: 0x9563,\n\t12301: 0x5ED6,\n\t12302: 0x6599,\n\t12303: 0x5217,\n\t12304: 0x88C2,\n\t12305: 0x70C8,\n\t12306: 0x52A3,\n\t12307: 0x730E,\n\t12308: 0x7433,\n\t12309: 0x6797,\n\t12310: 0x78F7,\n\t12311: 0x9716,\n\t12312: 0x4E34,\n\t12313: 0x90BB,\n\t12314: 0x9CDE,\n\t12315: 0x6DCB,\n\t12316: 0x51DB,\n\t12317: 0x8D41,\n\t12318: 0x541D,\n\t12319: 0x62CE,\n\t12320: 0x73B2,\n\t12321: 0x83F1,\n\t12322: 0x96F6,\n\t12323: 0x9F84,\n\t12324: 0x94C3,\n\t12325: 0x4F36,\n\t12326: 0x7F9A,\n\t12327: 0x51CC,\n\t12328: 0x7075,\n\t12329: 0x9675,\n\t12330: 0x5CAD,\n\t12331: 0x9886,\n\t12332: 0x53E6,\n\t12333: 0x4EE4,\n\t12334: 0x6E9C,\n\t12335: 0x7409,\n\t12336: 0x69B4,\n\t12337: 0x786B,\n\t12338: 0x998F,\n\t12339: 0x7559,\n\t12340: 0x5218,\n\t12341: 0x7624,\n\t12342: 0x6D41,\n\t12343: 0x67F3,\n\t12344: 0x516D,\n\t12345: 0x9F99,\n\t12346: 0x804B,\n\t12347: 0x5499,\n\t12348: 0x7B3C,\n\t12349: 0x7ABF,\n\t12350: 0x7FE4,\n\t12351: 0x7FE7,\n\t12352: 0x7FE8,\n\t12353: 0x7FEA,\n\t12354: 0x7FEB,\n\t12355: 0x7FEC,\n\t12356: 0x7FED,\n\t12357: 0x7FEF,\n\t12358: 0x7FF2,\n\t12359: 0x7FF4,\n\t12360: 0x7FF5,\n\t12361: 0x7FF6,\n\t12362: 0x7FF7,\n\t12363: 0x7FF8,\n\t12364: 0x7FF9,\n\t12365: 0x7FFA,\n\t12366: 0x7FFD,\n\t12367: 0x7FFE,\n\t12368: 0x7FFF,\n\t12369: 0x8002,\n\t12370: 0x8007,\n\t12371: 0x8008,\n\t12372: 0x8009,\n\t12373: 0x800A,\n\t12374: 0x800E,\n\t12375: 0x800F,\n\t12376: 0x8011,\n\t12377: 0x8013,\n\t12378: 0x801A,\n\t12379: 0x801B,\n\t12380: 0x801D,\n\t12381: 0x801E,\n\t12382: 0x801F,\n\t12383: 0x8021,\n\t12384: 0x8023,\n\t12385: 0x8024,\n\t12386: 0x802B,\n\t12387: 0x802C,\n\t12388: 0x802D,\n\t12389: 0x802E,\n\t12390: 0x802F,\n\t12391: 0x8030,\n\t12392: 0x8032,\n\t12393: 0x8034,\n\t12394: 0x8039,\n\t12395: 0x803A,\n\t12396: 0x803C,\n\t12397: 0x803E,\n\t12398: 0x8040,\n\t12399: 0x8041,\n\t12400: 0x8044,\n\t12401: 0x8045,\n\t12402: 0x8047,\n\t12403: 0x8048,\n\t12404: 0x8049,\n\t12405: 0x804E,\n\t12406: 0x804F,\n\t12407: 0x8050,\n\t12408: 0x8051,\n\t12409: 0x8053,\n\t12410: 0x8055,\n\t12411: 0x8056,\n\t12412: 0x8057,\n\t12413: 0x8059,\n\t12414: 0x805B,\n\t12415: 0x805C,\n\t12416: 0x805D,\n\t12417: 0x805E,\n\t12418: 0x805F,\n\t12419: 0x8060,\n\t12420: 0x8061,\n\t12421: 0x8062,\n\t12422: 0x8063,\n\t12423: 0x8064,\n\t12424: 0x8065,\n\t12425: 0x8066,\n\t12426: 0x8067,\n\t12427: 0x8068,\n\t12428: 0x806B,\n\t12429: 0x806C,\n\t12430: 0x806D,\n\t12431: 0x806E,\n\t12432: 0x806F,\n\t12433: 0x8070,\n\t12434: 0x8072,\n\t12435: 0x8073,\n\t12436: 0x8074,\n\t12437: 0x8075,\n\t12438: 0x8076,\n\t12439: 0x8077,\n\t12440: 0x8078,\n\t12441: 0x8079,\n\t12442: 0x807A,\n\t12443: 0x807B,\n\t12444: 0x807C,\n\t12445: 0x807D,\n\t12446: 0x9686,\n\t12447: 0x5784,\n\t12448: 0x62E2,\n\t12449: 0x9647,\n\t12450: 0x697C,\n\t12451: 0x5A04,\n\t12452: 0x6402,\n\t12453: 0x7BD3,\n\t12454: 0x6F0F,\n\t12455: 0x964B,\n\t12456: 0x82A6,\n\t12457: 0x5362,\n\t12458: 0x9885,\n\t12459: 0x5E90,\n\t12460: 0x7089,\n\t12461: 0x63B3,\n\t12462: 0x5364,\n\t12463: 0x864F,\n\t12464: 0x9C81,\n\t12465: 0x9E93,\n\t12466: 0x788C,\n\t12467: 0x9732,\n\t12468: 0x8DEF,\n\t12469: 0x8D42,\n\t12470: 0x9E7F,\n\t12471: 0x6F5E,\n\t12472: 0x7984,\n\t12473: 0x5F55,\n\t12474: 0x9646,\n\t12475: 0x622E,\n\t12476: 0x9A74,\n\t12477: 0x5415,\n\t12478: 0x94DD,\n\t12479: 0x4FA3,\n\t12480: 0x65C5,\n\t12481: 0x5C65,\n\t12482: 0x5C61,\n\t12483: 0x7F15,\n\t12484: 0x8651,\n\t12485: 0x6C2F,\n\t12486: 0x5F8B,\n\t12487: 0x7387,\n\t12488: 0x6EE4,\n\t12489: 0x7EFF,\n\t12490: 0x5CE6,\n\t12491: 0x631B,\n\t12492: 0x5B6A,\n\t12493: 0x6EE6,\n\t12494: 0x5375,\n\t12495: 0x4E71,\n\t12496: 0x63A0,\n\t12497: 0x7565,\n\t12498: 0x62A1,\n\t12499: 0x8F6E,\n\t12500: 0x4F26,\n\t12501: 0x4ED1,\n\t12502: 0x6CA6,\n\t12503: 0x7EB6,\n\t12504: 0x8BBA,\n\t12505: 0x841D,\n\t12506: 0x87BA,\n\t12507: 0x7F57,\n\t12508: 0x903B,\n\t12509: 0x9523,\n\t12510: 0x7BA9,\n\t12511: 0x9AA1,\n\t12512: 0x88F8,\n\t12513: 0x843D,\n\t12514: 0x6D1B,\n\t12515: 0x9A86,\n\t12516: 0x7EDC,\n\t12517: 0x5988,\n\t12518: 0x9EBB,\n\t12519: 0x739B,\n\t12520: 0x7801,\n\t12521: 0x8682,\n\t12522: 0x9A6C,\n\t12523: 0x9A82,\n\t12524: 0x561B,\n\t12525: 0x5417,\n\t12526: 0x57CB,\n\t12527: 0x4E70,\n\t12528: 0x9EA6,\n\t12529: 0x5356,\n\t12530: 0x8FC8,\n\t12531: 0x8109,\n\t12532: 0x7792,\n\t12533: 0x9992,\n\t12534: 0x86EE,\n\t12535: 0x6EE1,\n\t12536: 0x8513,\n\t12537: 0x66FC,\n\t12538: 0x6162,\n\t12539: 0x6F2B,\n\t12540: 0x807E,\n\t12541: 0x8081,\n\t12542: 0x8082,\n\t12543: 0x8085,\n\t12544: 0x8088,\n\t12545: 0x808A,\n\t12546: 0x808D,\n\t12547: 0x808E,\n\t12548: 0x808F,\n\t12549: 0x8090,\n\t12550: 0x8091,\n\t12551: 0x8092,\n\t12552: 0x8094,\n\t12553: 0x8095,\n\t12554: 0x8097,\n\t12555: 0x8099,\n\t12556: 0x809E,\n\t12557: 0x80A3,\n\t12558: 0x80A6,\n\t12559: 0x80A7,\n\t12560: 0x80A8,\n\t12561: 0x80AC,\n\t12562: 0x80B0,\n\t12563: 0x80B3,\n\t12564: 0x80B5,\n\t12565: 0x80B6,\n\t12566: 0x80B8,\n\t12567: 0x80B9,\n\t12568: 0x80BB,\n\t12569: 0x80C5,\n\t12570: 0x80C7,\n\t12571: 0x80C8,\n\t12572: 0x80C9,\n\t12573: 0x80CA,\n\t12574: 0x80CB,\n\t12575: 0x80CF,\n\t12576: 0x80D0,\n\t12577: 0x80D1,\n\t12578: 0x80D2,\n\t12579: 0x80D3,\n\t12580: 0x80D4,\n\t12581: 0x80D5,\n\t12582: 0x80D8,\n\t12583: 0x80DF,\n\t12584: 0x80E0,\n\t12585: 0x80E2,\n\t12586: 0x80E3,\n\t12587: 0x80E6,\n\t12588: 0x80EE,\n\t12589: 0x80F5,\n\t12590: 0x80F7,\n\t12591: 0x80F9,\n\t12592: 0x80FB,\n\t12593: 0x80FE,\n\t12594: 0x80FF,\n\t12595: 0x8100,\n\t12596: 0x8101,\n\t12597: 0x8103,\n\t12598: 0x8104,\n\t12599: 0x8105,\n\t12600: 0x8107,\n\t12601: 0x8108,\n\t12602: 0x810B,\n\t12603: 0x810C,\n\t12604: 0x8115,\n\t12605: 0x8117,\n\t12606: 0x8119,\n\t12607: 0x811B,\n\t12608: 0x811C,\n\t12609: 0x811D,\n\t12610: 0x811F,\n\t12611: 0x8120,\n\t12612: 0x8121,\n\t12613: 0x8122,\n\t12614: 0x8123,\n\t12615: 0x8124,\n\t12616: 0x8125,\n\t12617: 0x8126,\n\t12618: 0x8127,\n\t12619: 0x8128,\n\t12620: 0x8129,\n\t12621: 0x812A,\n\t12622: 0x812B,\n\t12623: 0x812D,\n\t12624: 0x812E,\n\t12625: 0x8130,\n\t12626: 0x8133,\n\t12627: 0x8134,\n\t12628: 0x8135,\n\t12629: 0x8137,\n\t12630: 0x8139,\n\t12631: 0x813A,\n\t12632: 0x813B,\n\t12633: 0x813C,\n\t12634: 0x813D,\n\t12635: 0x813F,\n\t12636: 0x8C29,\n\t12637: 0x8292,\n\t12638: 0x832B,\n\t12639: 0x76F2,\n\t12640: 0x6C13,\n\t12641: 0x5FD9,\n\t12642: 0x83BD,\n\t12643: 0x732B,\n\t12644: 0x8305,\n\t12645: 0x951A,\n\t12646: 0x6BDB,\n\t12647: 0x77DB,\n\t12648: 0x94C6,\n\t12649: 0x536F,\n\t12650: 0x8302,\n\t12651: 0x5192,\n\t12652: 0x5E3D,\n\t12653: 0x8C8C,\n\t12654: 0x8D38,\n\t12655: 0x4E48,\n\t12656: 0x73AB,\n\t12657: 0x679A,\n\t12658: 0x6885,\n\t12659: 0x9176,\n\t12660: 0x9709,\n\t12661: 0x7164,\n\t12662: 0x6CA1,\n\t12663: 0x7709,\n\t12664: 0x5A92,\n\t12665: 0x9541,\n\t12666: 0x6BCF,\n\t12667: 0x7F8E,\n\t12668: 0x6627,\n\t12669: 0x5BD0,\n\t12670: 0x59B9,\n\t12671: 0x5A9A,\n\t12672: 0x95E8,\n\t12673: 0x95F7,\n\t12674: 0x4EEC,\n\t12675: 0x840C,\n\t12676: 0x8499,\n\t12677: 0x6AAC,\n\t12678: 0x76DF,\n\t12679: 0x9530,\n\t12680: 0x731B,\n\t12681: 0x68A6,\n\t12682: 0x5B5F,\n\t12683: 0x772F,\n\t12684: 0x919A,\n\t12685: 0x9761,\n\t12686: 0x7CDC,\n\t12687: 0x8FF7,\n\t12688: 0x8C1C,\n\t12689: 0x5F25,\n\t12690: 0x7C73,\n\t12691: 0x79D8,\n\t12692: 0x89C5,\n\t12693: 0x6CCC,\n\t12694: 0x871C,\n\t12695: 0x5BC6,\n\t12696: 0x5E42,\n\t12697: 0x68C9,\n\t12698: 0x7720,\n\t12699: 0x7EF5,\n\t12700: 0x5195,\n\t12701: 0x514D,\n\t12702: 0x52C9,\n\t12703: 0x5A29,\n\t12704: 0x7F05,\n\t12705: 0x9762,\n\t12706: 0x82D7,\n\t12707: 0x63CF,\n\t12708: 0x7784,\n\t12709: 0x85D0,\n\t12710: 0x79D2,\n\t12711: 0x6E3A,\n\t12712: 0x5E99,\n\t12713: 0x5999,\n\t12714: 0x8511,\n\t12715: 0x706D,\n\t12716: 0x6C11,\n\t12717: 0x62BF,\n\t12718: 0x76BF,\n\t12719: 0x654F,\n\t12720: 0x60AF,\n\t12721: 0x95FD,\n\t12722: 0x660E,\n\t12723: 0x879F,\n\t12724: 0x9E23,\n\t12725: 0x94ED,\n\t12726: 0x540D,\n\t12727: 0x547D,\n\t12728: 0x8C2C,\n\t12729: 0x6478,\n\t12730: 0x8140,\n\t12731: 0x8141,\n\t12732: 0x8142,\n\t12733: 0x8143,\n\t12734: 0x8144,\n\t12735: 0x8145,\n\t12736: 0x8147,\n\t12737: 0x8149,\n\t12738: 0x814D,\n\t12739: 0x814E,\n\t12740: 0x814F,\n\t12741: 0x8152,\n\t12742: 0x8156,\n\t12743: 0x8157,\n\t12744: 0x8158,\n\t12745: 0x815B,\n\t12746: 0x815C,\n\t12747: 0x815D,\n\t12748: 0x815E,\n\t12749: 0x815F,\n\t12750: 0x8161,\n\t12751: 0x8162,\n\t12752: 0x8163,\n\t12753: 0x8164,\n\t12754: 0x8166,\n\t12755: 0x8168,\n\t12756: 0x816A,\n\t12757: 0x816B,\n\t12758: 0x816C,\n\t12759: 0x816F,\n\t12760: 0x8172,\n\t12761: 0x8173,\n\t12762: 0x8175,\n\t12763: 0x8176,\n\t12764: 0x8177,\n\t12765: 0x8178,\n\t12766: 0x8181,\n\t12767: 0x8183,\n\t12768: 0x8184,\n\t12769: 0x8185,\n\t12770: 0x8186,\n\t12771: 0x8187,\n\t12772: 0x8189,\n\t12773: 0x818B,\n\t12774: 0x818C,\n\t12775: 0x818D,\n\t12776: 0x818E,\n\t12777: 0x8190,\n\t12778: 0x8192,\n\t12779: 0x8193,\n\t12780: 0x8194,\n\t12781: 0x8195,\n\t12782: 0x8196,\n\t12783: 0x8197,\n\t12784: 0x8199,\n\t12785: 0x819A,\n\t12786: 0x819E,\n\t12787: 0x819F,\n\t12788: 0x81A0,\n\t12789: 0x81A1,\n\t12790: 0x81A2,\n\t12791: 0x81A4,\n\t12792: 0x81A5,\n\t12793: 0x81A7,\n\t12794: 0x81A9,\n\t12795: 0x81AB,\n\t12796: 0x81AC,\n\t12797: 0x81AD,\n\t12798: 0x81AE,\n\t12799: 0x81AF,\n\t12800: 0x81B0,\n\t12801: 0x81B1,\n\t12802: 0x81B2,\n\t12803: 0x81B4,\n\t12804: 0x81B5,\n\t12805: 0x81B6,\n\t12806: 0x81B7,\n\t12807: 0x81B8,\n\t12808: 0x81B9,\n\t12809: 0x81BC,\n\t12810: 0x81BD,\n\t12811: 0x81BE,\n\t12812: 0x81BF,\n\t12813: 0x81C4,\n\t12814: 0x81C5,\n\t12815: 0x81C7,\n\t12816: 0x81C8,\n\t12817: 0x81C9,\n\t12818: 0x81CB,\n\t12819: 0x81CD,\n\t12820: 0x81CE,\n\t12821: 0x81CF,\n\t12822: 0x81D0,\n\t12823: 0x81D1,\n\t12824: 0x81D2,\n\t12825: 0x81D3,\n\t12826: 0x6479,\n\t12827: 0x8611,\n\t12828: 0x6A21,\n\t12829: 0x819C,\n\t12830: 0x78E8,\n\t12831: 0x6469,\n\t12832: 0x9B54,\n\t12833: 0x62B9,\n\t12834: 0x672B,\n\t12835: 0x83AB,\n\t12836: 0x58A8,\n\t12837: 0x9ED8,\n\t12838: 0x6CAB,\n\t12839: 0x6F20,\n\t12840: 0x5BDE,\n\t12841: 0x964C,\n\t12842: 0x8C0B,\n\t12843: 0x725F,\n\t12844: 0x67D0,\n\t12845: 0x62C7,\n\t12846: 0x7261,\n\t12847: 0x4EA9,\n\t12848: 0x59C6,\n\t12849: 0x6BCD,\n\t12850: 0x5893,\n\t12851: 0x66AE,\n\t12852: 0x5E55,\n\t12853: 0x52DF,\n\t12854: 0x6155,\n\t12855: 0x6728,\n\t12856: 0x76EE,\n\t12857: 0x7766,\n\t12858: 0x7267,\n\t12859: 0x7A46,\n\t12860: 0x62FF,\n\t12861: 0x54EA,\n\t12862: 0x5450,\n\t12863: 0x94A0,\n\t12864: 0x90A3,\n\t12865: 0x5A1C,\n\t12866: 0x7EB3,\n\t12867: 0x6C16,\n\t12868: 0x4E43,\n\t12869: 0x5976,\n\t12870: 0x8010,\n\t12871: 0x5948,\n\t12872: 0x5357,\n\t12873: 0x7537,\n\t12874: 0x96BE,\n\t12875: 0x56CA,\n\t12876: 0x6320,\n\t12877: 0x8111,\n\t12878: 0x607C,\n\t12879: 0x95F9,\n\t12880: 0x6DD6,\n\t12881: 0x5462,\n\t12882: 0x9981,\n\t12883: 0x5185,\n\t12884: 0x5AE9,\n\t12885: 0x80FD,\n\t12886: 0x59AE,\n\t12887: 0x9713,\n\t12888: 0x502A,\n\t12889: 0x6CE5,\n\t12890: 0x5C3C,\n\t12891: 0x62DF,\n\t12892: 0x4F60,\n\t12893: 0x533F,\n\t12894: 0x817B,\n\t12895: 0x9006,\n\t12896: 0x6EBA,\n\t12897: 0x852B,\n\t12898: 0x62C8,\n\t12899: 0x5E74,\n\t12900: 0x78BE,\n\t12901: 0x64B5,\n\t12902: 0x637B,\n\t12903: 0x5FF5,\n\t12904: 0x5A18,\n\t12905: 0x917F,\n\t12906: 0x9E1F,\n\t12907: 0x5C3F,\n\t12908: 0x634F,\n\t12909: 0x8042,\n\t12910: 0x5B7D,\n\t12911: 0x556E,\n\t12912: 0x954A,\n\t12913: 0x954D,\n\t12914: 0x6D85,\n\t12915: 0x60A8,\n\t12916: 0x67E0,\n\t12917: 0x72DE,\n\t12918: 0x51DD,\n\t12919: 0x5B81,\n\t12920: 0x81D4,\n\t12921: 0x81D5,\n\t12922: 0x81D6,\n\t12923: 0x81D7,\n\t12924: 0x81D8,\n\t12925: 0x81D9,\n\t12926: 0x81DA,\n\t12927: 0x81DB,\n\t12928: 0x81DC,\n\t12929: 0x81DD,\n\t12930: 0x81DE,\n\t12931: 0x81DF,\n\t12932: 0x81E0,\n\t12933: 0x81E1,\n\t12934: 0x81E2,\n\t12935: 0x81E4,\n\t12936: 0x81E5,\n\t12937: 0x81E6,\n\t12938: 0x81E8,\n\t12939: 0x81E9,\n\t12940: 0x81EB,\n\t12941: 0x81EE,\n\t12942: 0x81EF,\n\t12943: 0x81F0,\n\t12944: 0x81F1,\n\t12945: 0x81F2,\n\t12946: 0x81F5,\n\t12947: 0x81F6,\n\t12948: 0x81F7,\n\t12949: 0x81F8,\n\t12950: 0x81F9,\n\t12951: 0x81FA,\n\t12952: 0x81FD,\n\t12953: 0x81FF,\n\t12954: 0x8203,\n\t12955: 0x8207,\n\t12956: 0x8208,\n\t12957: 0x8209,\n\t12958: 0x820A,\n\t12959: 0x820B,\n\t12960: 0x820E,\n\t12961: 0x820F,\n\t12962: 0x8211,\n\t12963: 0x8213,\n\t12964: 0x8215,\n\t12965: 0x8216,\n\t12966: 0x8217,\n\t12967: 0x8218,\n\t12968: 0x8219,\n\t12969: 0x821A,\n\t12970: 0x821D,\n\t12971: 0x8220,\n\t12972: 0x8224,\n\t12973: 0x8225,\n\t12974: 0x8226,\n\t12975: 0x8227,\n\t12976: 0x8229,\n\t12977: 0x822E,\n\t12978: 0x8232,\n\t12979: 0x823A,\n\t12980: 0x823C,\n\t12981: 0x823D,\n\t12982: 0x823F,\n\t12983: 0x8240,\n\t12984: 0x8241,\n\t12985: 0x8242,\n\t12986: 0x8243,\n\t12987: 0x8245,\n\t12988: 0x8246,\n\t12989: 0x8248,\n\t12990: 0x824A,\n\t12991: 0x824C,\n\t12992: 0x824D,\n\t12993: 0x824E,\n\t12994: 0x8250,\n\t12995: 0x8251,\n\t12996: 0x8252,\n\t12997: 0x8253,\n\t12998: 0x8254,\n\t12999: 0x8255,\n\t13000: 0x8256,\n\t13001: 0x8257,\n\t13002: 0x8259,\n\t13003: 0x825B,\n\t13004: 0x825C,\n\t13005: 0x825D,\n\t13006: 0x825E,\n\t13007: 0x8260,\n\t13008: 0x8261,\n\t13009: 0x8262,\n\t13010: 0x8263,\n\t13011: 0x8264,\n\t13012: 0x8265,\n\t13013: 0x8266,\n\t13014: 0x8267,\n\t13015: 0x8269,\n\t13016: 0x62E7,\n\t13017: 0x6CDE,\n\t13018: 0x725B,\n\t13019: 0x626D,\n\t13020: 0x94AE,\n\t13021: 0x7EBD,\n\t13022: 0x8113,\n\t13023: 0x6D53,\n\t13024: 0x519C,\n\t13025: 0x5F04,\n\t13026: 0x5974,\n\t13027: 0x52AA,\n\t13028: 0x6012,\n\t13029: 0x5973,\n\t13030: 0x6696,\n\t13031: 0x8650,\n\t13032: 0x759F,\n\t13033: 0x632A,\n\t13034: 0x61E6,\n\t13035: 0x7CEF,\n\t13036: 0x8BFA,\n\t13037: 0x54E6,\n\t13038: 0x6B27,\n\t13039: 0x9E25,\n\t13040: 0x6BB4,\n\t13041: 0x85D5,\n\t13042: 0x5455,\n\t13043: 0x5076,\n\t13044: 0x6CA4,\n\t13045: 0x556A,\n\t13046: 0x8DB4,\n\t13047: 0x722C,\n\t13048: 0x5E15,\n\t13049: 0x6015,\n\t13050: 0x7436,\n\t13051: 0x62CD,\n\t13052: 0x6392,\n\t13053: 0x724C,\n\t13054: 0x5F98,\n\t13055: 0x6E43,\n\t13056: 0x6D3E,\n\t13057: 0x6500,\n\t13058: 0x6F58,\n\t13059: 0x76D8,\n\t13060: 0x78D0,\n\t13061: 0x76FC,\n\t13062: 0x7554,\n\t13063: 0x5224,\n\t13064: 0x53DB,\n\t13065: 0x4E53,\n\t13066: 0x5E9E,\n\t13067: 0x65C1,\n\t13068: 0x802A,\n\t13069: 0x80D6,\n\t13070: 0x629B,\n\t13071: 0x5486,\n\t13072: 0x5228,\n\t13073: 0x70AE,\n\t13074: 0x888D,\n\t13075: 0x8DD1,\n\t13076: 0x6CE1,\n\t13077: 0x5478,\n\t13078: 0x80DA,\n\t13079: 0x57F9,\n\t13080: 0x88F4,\n\t13081: 0x8D54,\n\t13082: 0x966A,\n\t13083: 0x914D,\n\t13084: 0x4F69,\n\t13085: 0x6C9B,\n\t13086: 0x55B7,\n\t13087: 0x76C6,\n\t13088: 0x7830,\n\t13089: 0x62A8,\n\t13090: 0x70F9,\n\t13091: 0x6F8E,\n\t13092: 0x5F6D,\n\t13093: 0x84EC,\n\t13094: 0x68DA,\n\t13095: 0x787C,\n\t13096: 0x7BF7,\n\t13097: 0x81A8,\n\t13098: 0x670B,\n\t13099: 0x9E4F,\n\t13100: 0x6367,\n\t13101: 0x78B0,\n\t13102: 0x576F,\n\t13103: 0x7812,\n\t13104: 0x9739,\n\t13105: 0x6279,\n\t13106: 0x62AB,\n\t13107: 0x5288,\n\t13108: 0x7435,\n\t13109: 0x6BD7,\n\t13110: 0x826A,\n\t13111: 0x826B,\n\t13112: 0x826C,\n\t13113: 0x826D,\n\t13114: 0x8271,\n\t13115: 0x8275,\n\t13116: 0x8276,\n\t13117: 0x8277,\n\t13118: 0x8278,\n\t13119: 0x827B,\n\t13120: 0x827C,\n\t13121: 0x8280,\n\t13122: 0x8281,\n\t13123: 0x8283,\n\t13124: 0x8285,\n\t13125: 0x8286,\n\t13126: 0x8287,\n\t13127: 0x8289,\n\t13128: 0x828C,\n\t13129: 0x8290,\n\t13130: 0x8293,\n\t13131: 0x8294,\n\t13132: 0x8295,\n\t13133: 0x8296,\n\t13134: 0x829A,\n\t13135: 0x829B,\n\t13136: 0x829E,\n\t13137: 0x82A0,\n\t13138: 0x82A2,\n\t13139: 0x82A3,\n\t13140: 0x82A7,\n\t13141: 0x82B2,\n\t13142: 0x82B5,\n\t13143: 0x82B6,\n\t13144: 0x82BA,\n\t13145: 0x82BB,\n\t13146: 0x82BC,\n\t13147: 0x82BF,\n\t13148: 0x82C0,\n\t13149: 0x82C2,\n\t13150: 0x82C3,\n\t13151: 0x82C5,\n\t13152: 0x82C6,\n\t13153: 0x82C9,\n\t13154: 0x82D0,\n\t13155: 0x82D6,\n\t13156: 0x82D9,\n\t13157: 0x82DA,\n\t13158: 0x82DD,\n\t13159: 0x82E2,\n\t13160: 0x82E7,\n\t13161: 0x82E8,\n\t13162: 0x82E9,\n\t13163: 0x82EA,\n\t13164: 0x82EC,\n\t13165: 0x82ED,\n\t13166: 0x82EE,\n\t13167: 0x82F0,\n\t13168: 0x82F2,\n\t13169: 0x82F3,\n\t13170: 0x82F5,\n\t13171: 0x82F6,\n\t13172: 0x82F8,\n\t13173: 0x82FA,\n\t13174: 0x82FC,\n\t13175: 0x82FD,\n\t13176: 0x82FE,\n\t13177: 0x82FF,\n\t13178: 0x8300,\n\t13179: 0x830A,\n\t13180: 0x830B,\n\t13181: 0x830D,\n\t13182: 0x8310,\n\t13183: 0x8312,\n\t13184: 0x8313,\n\t13185: 0x8316,\n\t13186: 0x8318,\n\t13187: 0x8319,\n\t13188: 0x831D,\n\t13189: 0x831E,\n\t13190: 0x831F,\n\t13191: 0x8320,\n\t13192: 0x8321,\n\t13193: 0x8322,\n\t13194: 0x8323,\n\t13195: 0x8324,\n\t13196: 0x8325,\n\t13197: 0x8326,\n\t13198: 0x8329,\n\t13199: 0x832A,\n\t13200: 0x832E,\n\t13201: 0x8330,\n\t13202: 0x8332,\n\t13203: 0x8337,\n\t13204: 0x833B,\n\t13205: 0x833D,\n\t13206: 0x5564,\n\t13207: 0x813E,\n\t13208: 0x75B2,\n\t13209: 0x76AE,\n\t13210: 0x5339,\n\t13211: 0x75DE,\n\t13212: 0x50FB,\n\t13213: 0x5C41,\n\t13214: 0x8B6C,\n\t13215: 0x7BC7,\n\t13216: 0x504F,\n\t13217: 0x7247,\n\t13218: 0x9A97,\n\t13219: 0x98D8,\n\t13220: 0x6F02,\n\t13221: 0x74E2,\n\t13222: 0x7968,\n\t13223: 0x6487,\n\t13224: 0x77A5,\n\t13225: 0x62FC,\n\t13226: 0x9891,\n\t13227: 0x8D2B,\n\t13228: 0x54C1,\n\t13229: 0x8058,\n\t13230: 0x4E52,\n\t13231: 0x576A,\n\t13232: 0x82F9,\n\t13233: 0x840D,\n\t13234: 0x5E73,\n\t13235: 0x51ED,\n\t13236: 0x74F6,\n\t13237: 0x8BC4,\n\t13238: 0x5C4F,\n\t13239: 0x5761,\n\t13240: 0x6CFC,\n\t13241: 0x9887,\n\t13242: 0x5A46,\n\t13243: 0x7834,\n\t13244: 0x9B44,\n\t13245: 0x8FEB,\n\t13246: 0x7C95,\n\t13247: 0x5256,\n\t13248: 0x6251,\n\t13249: 0x94FA,\n\t13250: 0x4EC6,\n\t13251: 0x8386,\n\t13252: 0x8461,\n\t13253: 0x83E9,\n\t13254: 0x84B2,\n\t13255: 0x57D4,\n\t13256: 0x6734,\n\t13257: 0x5703,\n\t13258: 0x666E,\n\t13259: 0x6D66,\n\t13260: 0x8C31,\n\t13261: 0x66DD,\n\t13262: 0x7011,\n\t13263: 0x671F,\n\t13264: 0x6B3A,\n\t13265: 0x6816,\n\t13266: 0x621A,\n\t13267: 0x59BB,\n\t13268: 0x4E03,\n\t13269: 0x51C4,\n\t13270: 0x6F06,\n\t13271: 0x67D2,\n\t13272: 0x6C8F,\n\t13273: 0x5176,\n\t13274: 0x68CB,\n\t13275: 0x5947,\n\t13276: 0x6B67,\n\t13277: 0x7566,\n\t13278: 0x5D0E,\n\t13279: 0x8110,\n\t13280: 0x9F50,\n\t13281: 0x65D7,\n\t13282: 0x7948,\n\t13283: 0x7941,\n\t13284: 0x9A91,\n\t13285: 0x8D77,\n\t13286: 0x5C82,\n\t13287: 0x4E5E,\n\t13288: 0x4F01,\n\t13289: 0x542F,\n\t13290: 0x5951,\n\t13291: 0x780C,\n\t13292: 0x5668,\n\t13293: 0x6C14,\n\t13294: 0x8FC4,\n\t13295: 0x5F03,\n\t13296: 0x6C7D,\n\t13297: 0x6CE3,\n\t13298: 0x8BAB,\n\t13299: 0x6390,\n\t13300: 0x833E,\n\t13301: 0x833F,\n\t13302: 0x8341,\n\t13303: 0x8342,\n\t13304: 0x8344,\n\t13305: 0x8345,\n\t13306: 0x8348,\n\t13307: 0x834A,\n\t13308: 0x834B,\n\t13309: 0x834C,\n\t13310: 0x834D,\n\t13311: 0x834E,\n\t13312: 0x8353,\n\t13313: 0x8355,\n\t13314: 0x8356,\n\t13315: 0x8357,\n\t13316: 0x8358,\n\t13317: 0x8359,\n\t13318: 0x835D,\n\t13319: 0x8362,\n\t13320: 0x8370,\n\t13321: 0x8371,\n\t13322: 0x8372,\n\t13323: 0x8373,\n\t13324: 0x8374,\n\t13325: 0x8375,\n\t13326: 0x8376,\n\t13327: 0x8379,\n\t13328: 0x837A,\n\t13329: 0x837E,\n\t13330: 0x837F,\n\t13331: 0x8380,\n\t13332: 0x8381,\n\t13333: 0x8382,\n\t13334: 0x8383,\n\t13335: 0x8384,\n\t13336: 0x8387,\n\t13337: 0x8388,\n\t13338: 0x838A,\n\t13339: 0x838B,\n\t13340: 0x838C,\n\t13341: 0x838D,\n\t13342: 0x838F,\n\t13343: 0x8390,\n\t13344: 0x8391,\n\t13345: 0x8394,\n\t13346: 0x8395,\n\t13347: 0x8396,\n\t13348: 0x8397,\n\t13349: 0x8399,\n\t13350: 0x839A,\n\t13351: 0x839D,\n\t13352: 0x839F,\n\t13353: 0x83A1,\n\t13354: 0x83A2,\n\t13355: 0x83A3,\n\t13356: 0x83A4,\n\t13357: 0x83A5,\n\t13358: 0x83A6,\n\t13359: 0x83A7,\n\t13360: 0x83AC,\n\t13361: 0x83AD,\n\t13362: 0x83AE,\n\t13363: 0x83AF,\n\t13364: 0x83B5,\n\t13365: 0x83BB,\n\t13366: 0x83BE,\n\t13367: 0x83BF,\n\t13368: 0x83C2,\n\t13369: 0x83C3,\n\t13370: 0x83C4,\n\t13371: 0x83C6,\n\t13372: 0x83C8,\n\t13373: 0x83C9,\n\t13374: 0x83CB,\n\t13375: 0x83CD,\n\t13376: 0x83CE,\n\t13377: 0x83D0,\n\t13378: 0x83D1,\n\t13379: 0x83D2,\n\t13380: 0x83D3,\n\t13381: 0x83D5,\n\t13382: 0x83D7,\n\t13383: 0x83D9,\n\t13384: 0x83DA,\n\t13385: 0x83DB,\n\t13386: 0x83DE,\n\t13387: 0x83E2,\n\t13388: 0x83E3,\n\t13389: 0x83E4,\n\t13390: 0x83E6,\n\t13391: 0x83E7,\n\t13392: 0x83E8,\n\t13393: 0x83EB,\n\t13394: 0x83EC,\n\t13395: 0x83ED,\n\t13396: 0x6070,\n\t13397: 0x6D3D,\n\t13398: 0x7275,\n\t13399: 0x6266,\n\t13400: 0x948E,\n\t13401: 0x94C5,\n\t13402: 0x5343,\n\t13403: 0x8FC1,\n\t13404: 0x7B7E,\n\t13405: 0x4EDF,\n\t13406: 0x8C26,\n\t13407: 0x4E7E,\n\t13408: 0x9ED4,\n\t13409: 0x94B1,\n\t13410: 0x94B3,\n\t13411: 0x524D,\n\t13412: 0x6F5C,\n\t13413: 0x9063,\n\t13414: 0x6D45,\n\t13415: 0x8C34,\n\t13416: 0x5811,\n\t13417: 0x5D4C,\n\t13418: 0x6B20,\n\t13419: 0x6B49,\n\t13420: 0x67AA,\n\t13421: 0x545B,\n\t13422: 0x8154,\n\t13423: 0x7F8C,\n\t13424: 0x5899,\n\t13425: 0x8537,\n\t13426: 0x5F3A,\n\t13427: 0x62A2,\n\t13428: 0x6A47,\n\t13429: 0x9539,\n\t13430: 0x6572,\n\t13431: 0x6084,\n\t13432: 0x6865,\n\t13433: 0x77A7,\n\t13434: 0x4E54,\n\t13435: 0x4FA8,\n\t13436: 0x5DE7,\n\t13437: 0x9798,\n\t13438: 0x64AC,\n\t13439: 0x7FD8,\n\t13440: 0x5CED,\n\t13441: 0x4FCF,\n\t13442: 0x7A8D,\n\t13443: 0x5207,\n\t13444: 0x8304,\n\t13445: 0x4E14,\n\t13446: 0x602F,\n\t13447: 0x7A83,\n\t13448: 0x94A6,\n\t13449: 0x4FB5,\n\t13450: 0x4EB2,\n\t13451: 0x79E6,\n\t13452: 0x7434,\n\t13453: 0x52E4,\n\t13454: 0x82B9,\n\t13455: 0x64D2,\n\t13456: 0x79BD,\n\t13457: 0x5BDD,\n\t13458: 0x6C81,\n\t13459: 0x9752,\n\t13460: 0x8F7B,\n\t13461: 0x6C22,\n\t13462: 0x503E,\n\t13463: 0x537F,\n\t13464: 0x6E05,\n\t13465: 0x64CE,\n\t13466: 0x6674,\n\t13467: 0x6C30,\n\t13468: 0x60C5,\n\t13469: 0x9877,\n\t13470: 0x8BF7,\n\t13471: 0x5E86,\n\t13472: 0x743C,\n\t13473: 0x7A77,\n\t13474: 0x79CB,\n\t13475: 0x4E18,\n\t13476: 0x90B1,\n\t13477: 0x7403,\n\t13478: 0x6C42,\n\t13479: 0x56DA,\n\t13480: 0x914B,\n\t13481: 0x6CC5,\n\t13482: 0x8D8B,\n\t13483: 0x533A,\n\t13484: 0x86C6,\n\t13485: 0x66F2,\n\t13486: 0x8EAF,\n\t13487: 0x5C48,\n\t13488: 0x9A71,\n\t13489: 0x6E20,\n\t13490: 0x83EE,\n\t13491: 0x83EF,\n\t13492: 0x83F3,\n\t13493: 0x83F4,\n\t13494: 0x83F5,\n\t13495: 0x83F6,\n\t13496: 0x83F7,\n\t13497: 0x83FA,\n\t13498: 0x83FB,\n\t13499: 0x83FC,\n\t13500: 0x83FE,\n\t13501: 0x83FF,\n\t13502: 0x8400,\n\t13503: 0x8402,\n\t13504: 0x8405,\n\t13505: 0x8407,\n\t13506: 0x8408,\n\t13507: 0x8409,\n\t13508: 0x840A,\n\t13509: 0x8410,\n\t13510: 0x8412,\n\t13511: 0x8413,\n\t13512: 0x8414,\n\t13513: 0x8415,\n\t13514: 0x8416,\n\t13515: 0x8417,\n\t13516: 0x8419,\n\t13517: 0x841A,\n\t13518: 0x841B,\n\t13519: 0x841E,\n\t13520: 0x841F,\n\t13521: 0x8420,\n\t13522: 0x8421,\n\t13523: 0x8422,\n\t13524: 0x8423,\n\t13525: 0x8429,\n\t13526: 0x842A,\n\t13527: 0x842B,\n\t13528: 0x842C,\n\t13529: 0x842D,\n\t13530: 0x842E,\n\t13531: 0x842F,\n\t13532: 0x8430,\n\t13533: 0x8432,\n\t13534: 0x8433,\n\t13535: 0x8434,\n\t13536: 0x8435,\n\t13537: 0x8436,\n\t13538: 0x8437,\n\t13539: 0x8439,\n\t13540: 0x843A,\n\t13541: 0x843B,\n\t13542: 0x843E,\n\t13543: 0x843F,\n\t13544: 0x8440,\n\t13545: 0x8441,\n\t13546: 0x8442,\n\t13547: 0x8443,\n\t13548: 0x8444,\n\t13549: 0x8445,\n\t13550: 0x8447,\n\t13551: 0x8448,\n\t13552: 0x8449,\n\t13553: 0x844A,\n\t13554: 0x844B,\n\t13555: 0x844C,\n\t13556: 0x844D,\n\t13557: 0x844E,\n\t13558: 0x844F,\n\t13559: 0x8450,\n\t13560: 0x8452,\n\t13561: 0x8453,\n\t13562: 0x8454,\n\t13563: 0x8455,\n\t13564: 0x8456,\n\t13565: 0x8458,\n\t13566: 0x845D,\n\t13567: 0x845E,\n\t13568: 0x845F,\n\t13569: 0x8460,\n\t13570: 0x8462,\n\t13571: 0x8464,\n\t13572: 0x8465,\n\t13573: 0x8466,\n\t13574: 0x8467,\n\t13575: 0x8468,\n\t13576: 0x846A,\n\t13577: 0x846E,\n\t13578: 0x846F,\n\t13579: 0x8470,\n\t13580: 0x8472,\n\t13581: 0x8474,\n\t13582: 0x8477,\n\t13583: 0x8479,\n\t13584: 0x847B,\n\t13585: 0x847C,\n\t13586: 0x53D6,\n\t13587: 0x5A36,\n\t13588: 0x9F8B,\n\t13589: 0x8DA3,\n\t13590: 0x53BB,\n\t13591: 0x5708,\n\t13592: 0x98A7,\n\t13593: 0x6743,\n\t13594: 0x919B,\n\t13595: 0x6CC9,\n\t13596: 0x5168,\n\t13597: 0x75CA,\n\t13598: 0x62F3,\n\t13599: 0x72AC,\n\t13600: 0x5238,\n\t13601: 0x529D,\n\t13602: 0x7F3A,\n\t13603: 0x7094,\n\t13604: 0x7638,\n\t13605: 0x5374,\n\t13606: 0x9E4A,\n\t13607: 0x69B7,\n\t13608: 0x786E,\n\t13609: 0x96C0,\n\t13610: 0x88D9,\n\t13611: 0x7FA4,\n\t13612: 0x7136,\n\t13613: 0x71C3,\n\t13614: 0x5189,\n\t13615: 0x67D3,\n\t13616: 0x74E4,\n\t13617: 0x58E4,\n\t13618: 0x6518,\n\t13619: 0x56B7,\n\t13620: 0x8BA9,\n\t13621: 0x9976,\n\t13622: 0x6270,\n\t13623: 0x7ED5,\n\t13624: 0x60F9,\n\t13625: 0x70ED,\n\t13626: 0x58EC,\n\t13627: 0x4EC1,\n\t13628: 0x4EBA,\n\t13629: 0x5FCD,\n\t13630: 0x97E7,\n\t13631: 0x4EFB,\n\t13632: 0x8BA4,\n\t13633: 0x5203,\n\t13634: 0x598A,\n\t13635: 0x7EAB,\n\t13636: 0x6254,\n\t13637: 0x4ECD,\n\t13638: 0x65E5,\n\t13639: 0x620E,\n\t13640: 0x8338,\n\t13641: 0x84C9,\n\t13642: 0x8363,\n\t13643: 0x878D,\n\t13644: 0x7194,\n\t13645: 0x6EB6,\n\t13646: 0x5BB9,\n\t13647: 0x7ED2,\n\t13648: 0x5197,\n\t13649: 0x63C9,\n\t13650: 0x67D4,\n\t13651: 0x8089,\n\t13652: 0x8339,\n\t13653: 0x8815,\n\t13654: 0x5112,\n\t13655: 0x5B7A,\n\t13656: 0x5982,\n\t13657: 0x8FB1,\n\t13658: 0x4E73,\n\t13659: 0x6C5D,\n\t13660: 0x5165,\n\t13661: 0x8925,\n\t13662: 0x8F6F,\n\t13663: 0x962E,\n\t13664: 0x854A,\n\t13665: 0x745E,\n\t13666: 0x9510,\n\t13667: 0x95F0,\n\t13668: 0x6DA6,\n\t13669: 0x82E5,\n\t13670: 0x5F31,\n\t13671: 0x6492,\n\t13672: 0x6D12,\n\t13673: 0x8428,\n\t13674: 0x816E,\n\t13675: 0x9CC3,\n\t13676: 0x585E,\n\t13677: 0x8D5B,\n\t13678: 0x4E09,\n\t13679: 0x53C1,\n\t13680: 0x847D,\n\t13681: 0x847E,\n\t13682: 0x847F,\n\t13683: 0x8480,\n\t13684: 0x8481,\n\t13685: 0x8483,\n\t13686: 0x8484,\n\t13687: 0x8485,\n\t13688: 0x8486,\n\t13689: 0x848A,\n\t13690: 0x848D,\n\t13691: 0x848F,\n\t13692: 0x8490,\n\t13693: 0x8491,\n\t13694: 0x8492,\n\t13695: 0x8493,\n\t13696: 0x8494,\n\t13697: 0x8495,\n\t13698: 0x8496,\n\t13699: 0x8498,\n\t13700: 0x849A,\n\t13701: 0x849B,\n\t13702: 0x849D,\n\t13703: 0x849E,\n\t13704: 0x849F,\n\t13705: 0x84A0,\n\t13706: 0x84A2,\n\t13707: 0x84A3,\n\t13708: 0x84A4,\n\t13709: 0x84A5,\n\t13710: 0x84A6,\n\t13711: 0x84A7,\n\t13712: 0x84A8,\n\t13713: 0x84A9,\n\t13714: 0x84AA,\n\t13715: 0x84AB,\n\t13716: 0x84AC,\n\t13717: 0x84AD,\n\t13718: 0x84AE,\n\t13719: 0x84B0,\n\t13720: 0x84B1,\n\t13721: 0x84B3,\n\t13722: 0x84B5,\n\t13723: 0x84B6,\n\t13724: 0x84B7,\n\t13725: 0x84BB,\n\t13726: 0x84BC,\n\t13727: 0x84BE,\n\t13728: 0x84C0,\n\t13729: 0x84C2,\n\t13730: 0x84C3,\n\t13731: 0x84C5,\n\t13732: 0x84C6,\n\t13733: 0x84C7,\n\t13734: 0x84C8,\n\t13735: 0x84CB,\n\t13736: 0x84CC,\n\t13737: 0x84CE,\n\t13738: 0x84CF,\n\t13739: 0x84D2,\n\t13740: 0x84D4,\n\t13741: 0x84D5,\n\t13742: 0x84D7,\n\t13743: 0x84D8,\n\t13744: 0x84D9,\n\t13745: 0x84DA,\n\t13746: 0x84DB,\n\t13747: 0x84DC,\n\t13748: 0x84DE,\n\t13749: 0x84E1,\n\t13750: 0x84E2,\n\t13751: 0x84E4,\n\t13752: 0x84E7,\n\t13753: 0x84E8,\n\t13754: 0x84E9,\n\t13755: 0x84EA,\n\t13756: 0x84EB,\n\t13757: 0x84ED,\n\t13758: 0x84EE,\n\t13759: 0x84EF,\n\t13760: 0x84F1,\n\t13761: 0x84F2,\n\t13762: 0x84F3,\n\t13763: 0x84F4,\n\t13764: 0x84F5,\n\t13765: 0x84F6,\n\t13766: 0x84F7,\n\t13767: 0x84F8,\n\t13768: 0x84F9,\n\t13769: 0x84FA,\n\t13770: 0x84FB,\n\t13771: 0x84FD,\n\t13772: 0x84FE,\n\t13773: 0x8500,\n\t13774: 0x8501,\n\t13775: 0x8502,\n\t13776: 0x4F1E,\n\t13777: 0x6563,\n\t13778: 0x6851,\n\t13779: 0x55D3,\n\t13780: 0x4E27,\n\t13781: 0x6414,\n\t13782: 0x9A9A,\n\t13783: 0x626B,\n\t13784: 0x5AC2,\n\t13785: 0x745F,\n\t13786: 0x8272,\n\t13787: 0x6DA9,\n\t13788: 0x68EE,\n\t13789: 0x50E7,\n\t13790: 0x838E,\n\t13791: 0x7802,\n\t13792: 0x6740,\n\t13793: 0x5239,\n\t13794: 0x6C99,\n\t13795: 0x7EB1,\n\t13796: 0x50BB,\n\t13797: 0x5565,\n\t13798: 0x715E,\n\t13799: 0x7B5B,\n\t13800: 0x6652,\n\t13801: 0x73CA,\n\t13802: 0x82EB,\n\t13803: 0x6749,\n\t13804: 0x5C71,\n\t13805: 0x5220,\n\t13806: 0x717D,\n\t13807: 0x886B,\n\t13808: 0x95EA,\n\t13809: 0x9655,\n\t13810: 0x64C5,\n\t13811: 0x8D61,\n\t13812: 0x81B3,\n\t13813: 0x5584,\n\t13814: 0x6C55,\n\t13815: 0x6247,\n\t13816: 0x7F2E,\n\t13817: 0x5892,\n\t13818: 0x4F24,\n\t13819: 0x5546,\n\t13820: 0x8D4F,\n\t13821: 0x664C,\n\t13822: 0x4E0A,\n\t13823: 0x5C1A,\n\t13824: 0x88F3,\n\t13825: 0x68A2,\n\t13826: 0x634E,\n\t13827: 0x7A0D,\n\t13828: 0x70E7,\n\t13829: 0x828D,\n\t13830: 0x52FA,\n\t13831: 0x97F6,\n\t13832: 0x5C11,\n\t13833: 0x54E8,\n\t13834: 0x90B5,\n\t13835: 0x7ECD,\n\t13836: 0x5962,\n\t13837: 0x8D4A,\n\t13838: 0x86C7,\n\t13839: 0x820C,\n\t13840: 0x820D,\n\t13841: 0x8D66,\n\t13842: 0x6444,\n\t13843: 0x5C04,\n\t13844: 0x6151,\n\t13845: 0x6D89,\n\t13846: 0x793E,\n\t13847: 0x8BBE,\n\t13848: 0x7837,\n\t13849: 0x7533,\n\t13850: 0x547B,\n\t13851: 0x4F38,\n\t13852: 0x8EAB,\n\t13853: 0x6DF1,\n\t13854: 0x5A20,\n\t13855: 0x7EC5,\n\t13856: 0x795E,\n\t13857: 0x6C88,\n\t13858: 0x5BA1,\n\t13859: 0x5A76,\n\t13860: 0x751A,\n\t13861: 0x80BE,\n\t13862: 0x614E,\n\t13863: 0x6E17,\n\t13864: 0x58F0,\n\t13865: 0x751F,\n\t13866: 0x7525,\n\t13867: 0x7272,\n\t13868: 0x5347,\n\t13869: 0x7EF3,\n\t13870: 0x8503,\n\t13871: 0x8504,\n\t13872: 0x8505,\n\t13873: 0x8506,\n\t13874: 0x8507,\n\t13875: 0x8508,\n\t13876: 0x8509,\n\t13877: 0x850A,\n\t13878: 0x850B,\n\t13879: 0x850D,\n\t13880: 0x850E,\n\t13881: 0x850F,\n\t13882: 0x8510,\n\t13883: 0x8512,\n\t13884: 0x8514,\n\t13885: 0x8515,\n\t13886: 0x8516,\n\t13887: 0x8518,\n\t13888: 0x8519,\n\t13889: 0x851B,\n\t13890: 0x851C,\n\t13891: 0x851D,\n\t13892: 0x851E,\n\t13893: 0x8520,\n\t13894: 0x8522,\n\t13895: 0x8523,\n\t13896: 0x8524,\n\t13897: 0x8525,\n\t13898: 0x8526,\n\t13899: 0x8527,\n\t13900: 0x8528,\n\t13901: 0x8529,\n\t13902: 0x852A,\n\t13903: 0x852D,\n\t13904: 0x852E,\n\t13905: 0x852F,\n\t13906: 0x8530,\n\t13907: 0x8531,\n\t13908: 0x8532,\n\t13909: 0x8533,\n\t13910: 0x8534,\n\t13911: 0x8535,\n\t13912: 0x8536,\n\t13913: 0x853E,\n\t13914: 0x853F,\n\t13915: 0x8540,\n\t13916: 0x8541,\n\t13917: 0x8542,\n\t13918: 0x8544,\n\t13919: 0x8545,\n\t13920: 0x8546,\n\t13921: 0x8547,\n\t13922: 0x854B,\n\t13923: 0x854C,\n\t13924: 0x854D,\n\t13925: 0x854E,\n\t13926: 0x854F,\n\t13927: 0x8550,\n\t13928: 0x8551,\n\t13929: 0x8552,\n\t13930: 0x8553,\n\t13931: 0x8554,\n\t13932: 0x8555,\n\t13933: 0x8557,\n\t13934: 0x8558,\n\t13935: 0x855A,\n\t13936: 0x855B,\n\t13937: 0x855C,\n\t13938: 0x855D,\n\t13939: 0x855F,\n\t13940: 0x8560,\n\t13941: 0x8561,\n\t13942: 0x8562,\n\t13943: 0x8563,\n\t13944: 0x8565,\n\t13945: 0x8566,\n\t13946: 0x8567,\n\t13947: 0x8569,\n\t13948: 0x856A,\n\t13949: 0x856B,\n\t13950: 0x856C,\n\t13951: 0x856D,\n\t13952: 0x856E,\n\t13953: 0x856F,\n\t13954: 0x8570,\n\t13955: 0x8571,\n\t13956: 0x8573,\n\t13957: 0x8575,\n\t13958: 0x8576,\n\t13959: 0x8577,\n\t13960: 0x8578,\n\t13961: 0x857C,\n\t13962: 0x857D,\n\t13963: 0x857F,\n\t13964: 0x8580,\n\t13965: 0x8581,\n\t13966: 0x7701,\n\t13967: 0x76DB,\n\t13968: 0x5269,\n\t13969: 0x80DC,\n\t13970: 0x5723,\n\t13971: 0x5E08,\n\t13972: 0x5931,\n\t13973: 0x72EE,\n\t13974: 0x65BD,\n\t13975: 0x6E7F,\n\t13976: 0x8BD7,\n\t13977: 0x5C38,\n\t13978: 0x8671,\n\t13979: 0x5341,\n\t13980: 0x77F3,\n\t13981: 0x62FE,\n\t13982: 0x65F6,\n\t13983: 0x4EC0,\n\t13984: 0x98DF,\n\t13985: 0x8680,\n\t13986: 0x5B9E,\n\t13987: 0x8BC6,\n\t13988: 0x53F2,\n\t13989: 0x77E2,\n\t13990: 0x4F7F,\n\t13991: 0x5C4E,\n\t13992: 0x9A76,\n\t13993: 0x59CB,\n\t13994: 0x5F0F,\n\t13995: 0x793A,\n\t13996: 0x58EB,\n\t13997: 0x4E16,\n\t13998: 0x67FF,\n\t13999: 0x4E8B,\n\t14000: 0x62ED,\n\t14001: 0x8A93,\n\t14002: 0x901D,\n\t14003: 0x52BF,\n\t14004: 0x662F,\n\t14005: 0x55DC,\n\t14006: 0x566C,\n\t14007: 0x9002,\n\t14008: 0x4ED5,\n\t14009: 0x4F8D,\n\t14010: 0x91CA,\n\t14011: 0x9970,\n\t14012: 0x6C0F,\n\t14013: 0x5E02,\n\t14014: 0x6043,\n\t14015: 0x5BA4,\n\t14016: 0x89C6,\n\t14017: 0x8BD5,\n\t14018: 0x6536,\n\t14019: 0x624B,\n\t14020: 0x9996,\n\t14021: 0x5B88,\n\t14022: 0x5BFF,\n\t14023: 0x6388,\n\t14024: 0x552E,\n\t14025: 0x53D7,\n\t14026: 0x7626,\n\t14027: 0x517D,\n\t14028: 0x852C,\n\t14029: 0x67A2,\n\t14030: 0x68B3,\n\t14031: 0x6B8A,\n\t14032: 0x6292,\n\t14033: 0x8F93,\n\t14034: 0x53D4,\n\t14035: 0x8212,\n\t14036: 0x6DD1,\n\t14037: 0x758F,\n\t14038: 0x4E66,\n\t14039: 0x8D4E,\n\t14040: 0x5B70,\n\t14041: 0x719F,\n\t14042: 0x85AF,\n\t14043: 0x6691,\n\t14044: 0x66D9,\n\t14045: 0x7F72,\n\t14046: 0x8700,\n\t14047: 0x9ECD,\n\t14048: 0x9F20,\n\t14049: 0x5C5E,\n\t14050: 0x672F,\n\t14051: 0x8FF0,\n\t14052: 0x6811,\n\t14053: 0x675F,\n\t14054: 0x620D,\n\t14055: 0x7AD6,\n\t14056: 0x5885,\n\t14057: 0x5EB6,\n\t14058: 0x6570,\n\t14059: 0x6F31,\n\t14060: 0x8582,\n\t14061: 0x8583,\n\t14062: 0x8586,\n\t14063: 0x8588,\n\t14064: 0x8589,\n\t14065: 0x858A,\n\t14066: 0x858B,\n\t14067: 0x858C,\n\t14068: 0x858D,\n\t14069: 0x858E,\n\t14070: 0x8590,\n\t14071: 0x8591,\n\t14072: 0x8592,\n\t14073: 0x8593,\n\t14074: 0x8594,\n\t14075: 0x8595,\n\t14076: 0x8596,\n\t14077: 0x8597,\n\t14078: 0x8598,\n\t14079: 0x8599,\n\t14080: 0x859A,\n\t14081: 0x859D,\n\t14082: 0x859E,\n\t14083: 0x859F,\n\t14084: 0x85A0,\n\t14085: 0x85A1,\n\t14086: 0x85A2,\n\t14087: 0x85A3,\n\t14088: 0x85A5,\n\t14089: 0x85A6,\n\t14090: 0x85A7,\n\t14091: 0x85A9,\n\t14092: 0x85AB,\n\t14093: 0x85AC,\n\t14094: 0x85AD,\n\t14095: 0x85B1,\n\t14096: 0x85B2,\n\t14097: 0x85B3,\n\t14098: 0x85B4,\n\t14099: 0x85B5,\n\t14100: 0x85B6,\n\t14101: 0x85B8,\n\t14102: 0x85BA,\n\t14103: 0x85BB,\n\t14104: 0x85BC,\n\t14105: 0x85BD,\n\t14106: 0x85BE,\n\t14107: 0x85BF,\n\t14108: 0x85C0,\n\t14109: 0x85C2,\n\t14110: 0x85C3,\n\t14111: 0x85C4,\n\t14112: 0x85C5,\n\t14113: 0x85C6,\n\t14114: 0x85C7,\n\t14115: 0x85C8,\n\t14116: 0x85CA,\n\t14117: 0x85CB,\n\t14118: 0x85CC,\n\t14119: 0x85CD,\n\t14120: 0x85CE,\n\t14121: 0x85D1,\n\t14122: 0x85D2,\n\t14123: 0x85D4,\n\t14124: 0x85D6,\n\t14125: 0x85D7,\n\t14126: 0x85D8,\n\t14127: 0x85D9,\n\t14128: 0x85DA,\n\t14129: 0x85DB,\n\t14130: 0x85DD,\n\t14131: 0x85DE,\n\t14132: 0x85DF,\n\t14133: 0x85E0,\n\t14134: 0x85E1,\n\t14135: 0x85E2,\n\t14136: 0x85E3,\n\t14137: 0x85E5,\n\t14138: 0x85E6,\n\t14139: 0x85E7,\n\t14140: 0x85E8,\n\t14141: 0x85EA,\n\t14142: 0x85EB,\n\t14143: 0x85EC,\n\t14144: 0x85ED,\n\t14145: 0x85EE,\n\t14146: 0x85EF,\n\t14147: 0x85F0,\n\t14148: 0x85F1,\n\t14149: 0x85F2,\n\t14150: 0x85F3,\n\t14151: 0x85F4,\n\t14152: 0x85F5,\n\t14153: 0x85F6,\n\t14154: 0x85F7,\n\t14155: 0x85F8,\n\t14156: 0x6055,\n\t14157: 0x5237,\n\t14158: 0x800D,\n\t14159: 0x6454,\n\t14160: 0x8870,\n\t14161: 0x7529,\n\t14162: 0x5E05,\n\t14163: 0x6813,\n\t14164: 0x62F4,\n\t14165: 0x971C,\n\t14166: 0x53CC,\n\t14167: 0x723D,\n\t14168: 0x8C01,\n\t14169: 0x6C34,\n\t14170: 0x7761,\n\t14171: 0x7A0E,\n\t14172: 0x542E,\n\t14173: 0x77AC,\n\t14174: 0x987A,\n\t14175: 0x821C,\n\t14176: 0x8BF4,\n\t14177: 0x7855,\n\t14178: 0x6714,\n\t14179: 0x70C1,\n\t14180: 0x65AF,\n\t14181: 0x6495,\n\t14182: 0x5636,\n\t14183: 0x601D,\n\t14184: 0x79C1,\n\t14185: 0x53F8,\n\t14186: 0x4E1D,\n\t14187: 0x6B7B,\n\t14188: 0x8086,\n\t14189: 0x5BFA,\n\t14190: 0x55E3,\n\t14191: 0x56DB,\n\t14192: 0x4F3A,\n\t14193: 0x4F3C,\n\t14194: 0x9972,\n\t14195: 0x5DF3,\n\t14196: 0x677E,\n\t14197: 0x8038,\n\t14198: 0x6002,\n\t14199: 0x9882,\n\t14200: 0x9001,\n\t14201: 0x5B8B,\n\t14202: 0x8BBC,\n\t14203: 0x8BF5,\n\t14204: 0x641C,\n\t14205: 0x8258,\n\t14206: 0x64DE,\n\t14207: 0x55FD,\n\t14208: 0x82CF,\n\t14209: 0x9165,\n\t14210: 0x4FD7,\n\t14211: 0x7D20,\n\t14212: 0x901F,\n\t14213: 0x7C9F,\n\t14214: 0x50F3,\n\t14215: 0x5851,\n\t14216: 0x6EAF,\n\t14217: 0x5BBF,\n\t14218: 0x8BC9,\n\t14219: 0x8083,\n\t14220: 0x9178,\n\t14221: 0x849C,\n\t14222: 0x7B97,\n\t14223: 0x867D,\n\t14224: 0x968B,\n\t14225: 0x968F,\n\t14226: 0x7EE5,\n\t14227: 0x9AD3,\n\t14228: 0x788E,\n\t14229: 0x5C81,\n\t14230: 0x7A57,\n\t14231: 0x9042,\n\t14232: 0x96A7,\n\t14233: 0x795F,\n\t14234: 0x5B59,\n\t14235: 0x635F,\n\t14236: 0x7B0B,\n\t14237: 0x84D1,\n\t14238: 0x68AD,\n\t14239: 0x5506,\n\t14240: 0x7F29,\n\t14241: 0x7410,\n\t14242: 0x7D22,\n\t14243: 0x9501,\n\t14244: 0x6240,\n\t14245: 0x584C,\n\t14246: 0x4ED6,\n\t14247: 0x5B83,\n\t14248: 0x5979,\n\t14249: 0x5854,\n\t14250: 0x85F9,\n\t14251: 0x85FA,\n\t14252: 0x85FC,\n\t14253: 0x85FD,\n\t14254: 0x85FE,\n\t14255: 0x8600,\n\t14256: 0x8601,\n\t14257: 0x8602,\n\t14258: 0x8603,\n\t14259: 0x8604,\n\t14260: 0x8606,\n\t14261: 0x8607,\n\t14262: 0x8608,\n\t14263: 0x8609,\n\t14264: 0x860A,\n\t14265: 0x860B,\n\t14266: 0x860C,\n\t14267: 0x860D,\n\t14268: 0x860E,\n\t14269: 0x860F,\n\t14270: 0x8610,\n\t14271: 0x8612,\n\t14272: 0x8613,\n\t14273: 0x8614,\n\t14274: 0x8615,\n\t14275: 0x8617,\n\t14276: 0x8618,\n\t14277: 0x8619,\n\t14278: 0x861A,\n\t14279: 0x861B,\n\t14280: 0x861C,\n\t14281: 0x861D,\n\t14282: 0x861E,\n\t14283: 0x861F,\n\t14284: 0x8620,\n\t14285: 0x8621,\n\t14286: 0x8622,\n\t14287: 0x8623,\n\t14288: 0x8624,\n\t14289: 0x8625,\n\t14290: 0x8626,\n\t14291: 0x8628,\n\t14292: 0x862A,\n\t14293: 0x862B,\n\t14294: 0x862C,\n\t14295: 0x862D,\n\t14296: 0x862E,\n\t14297: 0x862F,\n\t14298: 0x8630,\n\t14299: 0x8631,\n\t14300: 0x8632,\n\t14301: 0x8633,\n\t14302: 0x8634,\n\t14303: 0x8635,\n\t14304: 0x8636,\n\t14305: 0x8637,\n\t14306: 0x8639,\n\t14307: 0x863A,\n\t14308: 0x863B,\n\t14309: 0x863D,\n\t14310: 0x863E,\n\t14311: 0x863F,\n\t14312: 0x8640,\n\t14313: 0x8641,\n\t14314: 0x8642,\n\t14315: 0x8643,\n\t14316: 0x8644,\n\t14317: 0x8645,\n\t14318: 0x8646,\n\t14319: 0x8647,\n\t14320: 0x8648,\n\t14321: 0x8649,\n\t14322: 0x864A,\n\t14323: 0x864B,\n\t14324: 0x864C,\n\t14325: 0x8652,\n\t14326: 0x8653,\n\t14327: 0x8655,\n\t14328: 0x8656,\n\t14329: 0x8657,\n\t14330: 0x8658,\n\t14331: 0x8659,\n\t14332: 0x865B,\n\t14333: 0x865C,\n\t14334: 0x865D,\n\t14335: 0x865F,\n\t14336: 0x8660,\n\t14337: 0x8661,\n\t14338: 0x8663,\n\t14339: 0x8664,\n\t14340: 0x8665,\n\t14341: 0x8666,\n\t14342: 0x8667,\n\t14343: 0x8668,\n\t14344: 0x8669,\n\t14345: 0x866A,\n\t14346: 0x736D,\n\t14347: 0x631E,\n\t14348: 0x8E4B,\n\t14349: 0x8E0F,\n\t14350: 0x80CE,\n\t14351: 0x82D4,\n\t14352: 0x62AC,\n\t14353: 0x53F0,\n\t14354: 0x6CF0,\n\t14355: 0x915E,\n\t14356: 0x592A,\n\t14357: 0x6001,\n\t14358: 0x6C70,\n\t14359: 0x574D,\n\t14360: 0x644A,\n\t14361: 0x8D2A,\n\t14362: 0x762B,\n\t14363: 0x6EE9,\n\t14364: 0x575B,\n\t14365: 0x6A80,\n\t14366: 0x75F0,\n\t14367: 0x6F6D,\n\t14368: 0x8C2D,\n\t14369: 0x8C08,\n\t14370: 0x5766,\n\t14371: 0x6BEF,\n\t14372: 0x8892,\n\t14373: 0x78B3,\n\t14374: 0x63A2,\n\t14375: 0x53F9,\n\t14376: 0x70AD,\n\t14377: 0x6C64,\n\t14378: 0x5858,\n\t14379: 0x642A,\n\t14380: 0x5802,\n\t14381: 0x68E0,\n\t14382: 0x819B,\n\t14383: 0x5510,\n\t14384: 0x7CD6,\n\t14385: 0x5018,\n\t14386: 0x8EBA,\n\t14387: 0x6DCC,\n\t14388: 0x8D9F,\n\t14389: 0x70EB,\n\t14390: 0x638F,\n\t14391: 0x6D9B,\n\t14392: 0x6ED4,\n\t14393: 0x7EE6,\n\t14394: 0x8404,\n\t14395: 0x6843,\n\t14396: 0x9003,\n\t14397: 0x6DD8,\n\t14398: 0x9676,\n\t14399: 0x8BA8,\n\t14400: 0x5957,\n\t14401: 0x7279,\n\t14402: 0x85E4,\n\t14403: 0x817E,\n\t14404: 0x75BC,\n\t14405: 0x8A8A,\n\t14406: 0x68AF,\n\t14407: 0x5254,\n\t14408: 0x8E22,\n\t14409: 0x9511,\n\t14410: 0x63D0,\n\t14411: 0x9898,\n\t14412: 0x8E44,\n\t14413: 0x557C,\n\t14414: 0x4F53,\n\t14415: 0x66FF,\n\t14416: 0x568F,\n\t14417: 0x60D5,\n\t14418: 0x6D95,\n\t14419: 0x5243,\n\t14420: 0x5C49,\n\t14421: 0x5929,\n\t14422: 0x6DFB,\n\t14423: 0x586B,\n\t14424: 0x7530,\n\t14425: 0x751C,\n\t14426: 0x606C,\n\t14427: 0x8214,\n\t14428: 0x8146,\n\t14429: 0x6311,\n\t14430: 0x6761,\n\t14431: 0x8FE2,\n\t14432: 0x773A,\n\t14433: 0x8DF3,\n\t14434: 0x8D34,\n\t14435: 0x94C1,\n\t14436: 0x5E16,\n\t14437: 0x5385,\n\t14438: 0x542C,\n\t14439: 0x70C3,\n\t14440: 0x866D,\n\t14441: 0x866F,\n\t14442: 0x8670,\n\t14443: 0x8672,\n\t14444: 0x8673,\n\t14445: 0x8674,\n\t14446: 0x8675,\n\t14447: 0x8676,\n\t14448: 0x8677,\n\t14449: 0x8678,\n\t14450: 0x8683,\n\t14451: 0x8684,\n\t14452: 0x8685,\n\t14453: 0x8686,\n\t14454: 0x8687,\n\t14455: 0x8688,\n\t14456: 0x8689,\n\t14457: 0x868E,\n\t14458: 0x868F,\n\t14459: 0x8690,\n\t14460: 0x8691,\n\t14461: 0x8692,\n\t14462: 0x8694,\n\t14463: 0x8696,\n\t14464: 0x8697,\n\t14465: 0x8698,\n\t14466: 0x8699,\n\t14467: 0x869A,\n\t14468: 0x869B,\n\t14469: 0x869E,\n\t14470: 0x869F,\n\t14471: 0x86A0,\n\t14472: 0x86A1,\n\t14473: 0x86A2,\n\t14474: 0x86A5,\n\t14475: 0x86A6,\n\t14476: 0x86AB,\n\t14477: 0x86AD,\n\t14478: 0x86AE,\n\t14479: 0x86B2,\n\t14480: 0x86B3,\n\t14481: 0x86B7,\n\t14482: 0x86B8,\n\t14483: 0x86B9,\n\t14484: 0x86BB,\n\t14485: 0x86BC,\n\t14486: 0x86BD,\n\t14487: 0x86BE,\n\t14488: 0x86BF,\n\t14489: 0x86C1,\n\t14490: 0x86C2,\n\t14491: 0x86C3,\n\t14492: 0x86C5,\n\t14493: 0x86C8,\n\t14494: 0x86CC,\n\t14495: 0x86CD,\n\t14496: 0x86D2,\n\t14497: 0x86D3,\n\t14498: 0x86D5,\n\t14499: 0x86D6,\n\t14500: 0x86D7,\n\t14501: 0x86DA,\n\t14502: 0x86DC,\n\t14503: 0x86DD,\n\t14504: 0x86E0,\n\t14505: 0x86E1,\n\t14506: 0x86E2,\n\t14507: 0x86E3,\n\t14508: 0x86E5,\n\t14509: 0x86E6,\n\t14510: 0x86E7,\n\t14511: 0x86E8,\n\t14512: 0x86EA,\n\t14513: 0x86EB,\n\t14514: 0x86EC,\n\t14515: 0x86EF,\n\t14516: 0x86F5,\n\t14517: 0x86F6,\n\t14518: 0x86F7,\n\t14519: 0x86FA,\n\t14520: 0x86FB,\n\t14521: 0x86FC,\n\t14522: 0x86FD,\n\t14523: 0x86FF,\n\t14524: 0x8701,\n\t14525: 0x8704,\n\t14526: 0x8705,\n\t14527: 0x8706,\n\t14528: 0x870B,\n\t14529: 0x870C,\n\t14530: 0x870E,\n\t14531: 0x870F,\n\t14532: 0x8710,\n\t14533: 0x8711,\n\t14534: 0x8714,\n\t14535: 0x8716,\n\t14536: 0x6C40,\n\t14537: 0x5EF7,\n\t14538: 0x505C,\n\t14539: 0x4EAD,\n\t14540: 0x5EAD,\n\t14541: 0x633A,\n\t14542: 0x8247,\n\t14543: 0x901A,\n\t14544: 0x6850,\n\t14545: 0x916E,\n\t14546: 0x77B3,\n\t14547: 0x540C,\n\t14548: 0x94DC,\n\t14549: 0x5F64,\n\t14550: 0x7AE5,\n\t14551: 0x6876,\n\t14552: 0x6345,\n\t14553: 0x7B52,\n\t14554: 0x7EDF,\n\t14555: 0x75DB,\n\t14556: 0x5077,\n\t14557: 0x6295,\n\t14558: 0x5934,\n\t14559: 0x900F,\n\t14560: 0x51F8,\n\t14561: 0x79C3,\n\t14562: 0x7A81,\n\t14563: 0x56FE,\n\t14564: 0x5F92,\n\t14565: 0x9014,\n\t14566: 0x6D82,\n\t14567: 0x5C60,\n\t14568: 0x571F,\n\t14569: 0x5410,\n\t14570: 0x5154,\n\t14571: 0x6E4D,\n\t14572: 0x56E2,\n\t14573: 0x63A8,\n\t14574: 0x9893,\n\t14575: 0x817F,\n\t14576: 0x8715,\n\t14577: 0x892A,\n\t14578: 0x9000,\n\t14579: 0x541E,\n\t14580: 0x5C6F,\n\t14581: 0x81C0,\n\t14582: 0x62D6,\n\t14583: 0x6258,\n\t14584: 0x8131,\n\t14585: 0x9E35,\n\t14586: 0x9640,\n\t14587: 0x9A6E,\n\t14588: 0x9A7C,\n\t14589: 0x692D,\n\t14590: 0x59A5,\n\t14591: 0x62D3,\n\t14592: 0x553E,\n\t14593: 0x6316,\n\t14594: 0x54C7,\n\t14595: 0x86D9,\n\t14596: 0x6D3C,\n\t14597: 0x5A03,\n\t14598: 0x74E6,\n\t14599: 0x889C,\n\t14600: 0x6B6A,\n\t14601: 0x5916,\n\t14602: 0x8C4C,\n\t14603: 0x5F2F,\n\t14604: 0x6E7E,\n\t14605: 0x73A9,\n\t14606: 0x987D,\n\t14607: 0x4E38,\n\t14608: 0x70F7,\n\t14609: 0x5B8C,\n\t14610: 0x7897,\n\t14611: 0x633D,\n\t14612: 0x665A,\n\t14613: 0x7696,\n\t14614: 0x60CB,\n\t14615: 0x5B9B,\n\t14616: 0x5A49,\n\t14617: 0x4E07,\n\t14618: 0x8155,\n\t14619: 0x6C6A,\n\t14620: 0x738B,\n\t14621: 0x4EA1,\n\t14622: 0x6789,\n\t14623: 0x7F51,\n\t14624: 0x5F80,\n\t14625: 0x65FA,\n\t14626: 0x671B,\n\t14627: 0x5FD8,\n\t14628: 0x5984,\n\t14629: 0x5A01,\n\t14630: 0x8719,\n\t14631: 0x871B,\n\t14632: 0x871D,\n\t14633: 0x871F,\n\t14634: 0x8720,\n\t14635: 0x8724,\n\t14636: 0x8726,\n\t14637: 0x8727,\n\t14638: 0x8728,\n\t14639: 0x872A,\n\t14640: 0x872B,\n\t14641: 0x872C,\n\t14642: 0x872D,\n\t14643: 0x872F,\n\t14644: 0x8730,\n\t14645: 0x8732,\n\t14646: 0x8733,\n\t14647: 0x8735,\n\t14648: 0x8736,\n\t14649: 0x8738,\n\t14650: 0x8739,\n\t14651: 0x873A,\n\t14652: 0x873C,\n\t14653: 0x873D,\n\t14654: 0x8740,\n\t14655: 0x8741,\n\t14656: 0x8742,\n\t14657: 0x8743,\n\t14658: 0x8744,\n\t14659: 0x8745,\n\t14660: 0x8746,\n\t14661: 0x874A,\n\t14662: 0x874B,\n\t14663: 0x874D,\n\t14664: 0x874F,\n\t14665: 0x8750,\n\t14666: 0x8751,\n\t14667: 0x8752,\n\t14668: 0x8754,\n\t14669: 0x8755,\n\t14670: 0x8756,\n\t14671: 0x8758,\n\t14672: 0x875A,\n\t14673: 0x875B,\n\t14674: 0x875C,\n\t14675: 0x875D,\n\t14676: 0x875E,\n\t14677: 0x875F,\n\t14678: 0x8761,\n\t14679: 0x8762,\n\t14680: 0x8766,\n\t14681: 0x8767,\n\t14682: 0x8768,\n\t14683: 0x8769,\n\t14684: 0x876A,\n\t14685: 0x876B,\n\t14686: 0x876C,\n\t14687: 0x876D,\n\t14688: 0x876F,\n\t14689: 0x8771,\n\t14690: 0x8772,\n\t14691: 0x8773,\n\t14692: 0x8775,\n\t14693: 0x8777,\n\t14694: 0x8778,\n\t14695: 0x8779,\n\t14696: 0x877A,\n\t14697: 0x877F,\n\t14698: 0x8780,\n\t14699: 0x8781,\n\t14700: 0x8784,\n\t14701: 0x8786,\n\t14702: 0x8787,\n\t14703: 0x8789,\n\t14704: 0x878A,\n\t14705: 0x878C,\n\t14706: 0x878E,\n\t14707: 0x878F,\n\t14708: 0x8790,\n\t14709: 0x8791,\n\t14710: 0x8792,\n\t14711: 0x8794,\n\t14712: 0x8795,\n\t14713: 0x8796,\n\t14714: 0x8798,\n\t14715: 0x8799,\n\t14716: 0x879A,\n\t14717: 0x879B,\n\t14718: 0x879C,\n\t14719: 0x879D,\n\t14720: 0x879E,\n\t14721: 0x87A0,\n\t14722: 0x87A1,\n\t14723: 0x87A2,\n\t14724: 0x87A3,\n\t14725: 0x87A4,\n\t14726: 0x5DCD,\n\t14727: 0x5FAE,\n\t14728: 0x5371,\n\t14729: 0x97E6,\n\t14730: 0x8FDD,\n\t14731: 0x6845,\n\t14732: 0x56F4,\n\t14733: 0x552F,\n\t14734: 0x60DF,\n\t14735: 0x4E3A,\n\t14736: 0x6F4D,\n\t14737: 0x7EF4,\n\t14738: 0x82C7,\n\t14739: 0x840E,\n\t14740: 0x59D4,\n\t14741: 0x4F1F,\n\t14742: 0x4F2A,\n\t14743: 0x5C3E,\n\t14744: 0x7EAC,\n\t14745: 0x672A,\n\t14746: 0x851A,\n\t14747: 0x5473,\n\t14748: 0x754F,\n\t14749: 0x80C3,\n\t14750: 0x5582,\n\t14751: 0x9B4F,\n\t14752: 0x4F4D,\n\t14753: 0x6E2D,\n\t14754: 0x8C13,\n\t14755: 0x5C09,\n\t14756: 0x6170,\n\t14757: 0x536B,\n\t14758: 0x761F,\n\t14759: 0x6E29,\n\t14760: 0x868A,\n\t14761: 0x6587,\n\t14762: 0x95FB,\n\t14763: 0x7EB9,\n\t14764: 0x543B,\n\t14765: 0x7A33,\n\t14766: 0x7D0A,\n\t14767: 0x95EE,\n\t14768: 0x55E1,\n\t14769: 0x7FC1,\n\t14770: 0x74EE,\n\t14771: 0x631D,\n\t14772: 0x8717,\n\t14773: 0x6DA1,\n\t14774: 0x7A9D,\n\t14775: 0x6211,\n\t14776: 0x65A1,\n\t14777: 0x5367,\n\t14778: 0x63E1,\n\t14779: 0x6C83,\n\t14780: 0x5DEB,\n\t14781: 0x545C,\n\t14782: 0x94A8,\n\t14783: 0x4E4C,\n\t14784: 0x6C61,\n\t14785: 0x8BEC,\n\t14786: 0x5C4B,\n\t14787: 0x65E0,\n\t14788: 0x829C,\n\t14789: 0x68A7,\n\t14790: 0x543E,\n\t14791: 0x5434,\n\t14792: 0x6BCB,\n\t14793: 0x6B66,\n\t14794: 0x4E94,\n\t14795: 0x6342,\n\t14796: 0x5348,\n\t14797: 0x821E,\n\t14798: 0x4F0D,\n\t14799: 0x4FAE,\n\t14800: 0x575E,\n\t14801: 0x620A,\n\t14802: 0x96FE,\n\t14803: 0x6664,\n\t14804: 0x7269,\n\t14805: 0x52FF,\n\t14806: 0x52A1,\n\t14807: 0x609F,\n\t14808: 0x8BEF,\n\t14809: 0x6614,\n\t14810: 0x7199,\n\t14811: 0x6790,\n\t14812: 0x897F,\n\t14813: 0x7852,\n\t14814: 0x77FD,\n\t14815: 0x6670,\n\t14816: 0x563B,\n\t14817: 0x5438,\n\t14818: 0x9521,\n\t14819: 0x727A,\n\t14820: 0x87A5,\n\t14821: 0x87A6,\n\t14822: 0x87A7,\n\t14823: 0x87A9,\n\t14824: 0x87AA,\n\t14825: 0x87AE,\n\t14826: 0x87B0,\n\t14827: 0x87B1,\n\t14828: 0x87B2,\n\t14829: 0x87B4,\n\t14830: 0x87B6,\n\t14831: 0x87B7,\n\t14832: 0x87B8,\n\t14833: 0x87B9,\n\t14834: 0x87BB,\n\t14835: 0x87BC,\n\t14836: 0x87BE,\n\t14837: 0x87BF,\n\t14838: 0x87C1,\n\t14839: 0x87C2,\n\t14840: 0x87C3,\n\t14841: 0x87C4,\n\t14842: 0x87C5,\n\t14843: 0x87C7,\n\t14844: 0x87C8,\n\t14845: 0x87C9,\n\t14846: 0x87CC,\n\t14847: 0x87CD,\n\t14848: 0x87CE,\n\t14849: 0x87CF,\n\t14850: 0x87D0,\n\t14851: 0x87D4,\n\t14852: 0x87D5,\n\t14853: 0x87D6,\n\t14854: 0x87D7,\n\t14855: 0x87D8,\n\t14856: 0x87D9,\n\t14857: 0x87DA,\n\t14858: 0x87DC,\n\t14859: 0x87DD,\n\t14860: 0x87DE,\n\t14861: 0x87DF,\n\t14862: 0x87E1,\n\t14863: 0x87E2,\n\t14864: 0x87E3,\n\t14865: 0x87E4,\n\t14866: 0x87E6,\n\t14867: 0x87E7,\n\t14868: 0x87E8,\n\t14869: 0x87E9,\n\t14870: 0x87EB,\n\t14871: 0x87EC,\n\t14872: 0x87ED,\n\t14873: 0x87EF,\n\t14874: 0x87F0,\n\t14875: 0x87F1,\n\t14876: 0x87F2,\n\t14877: 0x87F3,\n\t14878: 0x87F4,\n\t14879: 0x87F5,\n\t14880: 0x87F6,\n\t14881: 0x87F7,\n\t14882: 0x87F8,\n\t14883: 0x87FA,\n\t14884: 0x87FB,\n\t14885: 0x87FC,\n\t14886: 0x87FD,\n\t14887: 0x87FF,\n\t14888: 0x8800,\n\t14889: 0x8801,\n\t14890: 0x8802,\n\t14891: 0x8804,\n\t14892: 0x8805,\n\t14893: 0x8806,\n\t14894: 0x8807,\n\t14895: 0x8808,\n\t14896: 0x8809,\n\t14897: 0x880B,\n\t14898: 0x880C,\n\t14899: 0x880D,\n\t14900: 0x880E,\n\t14901: 0x880F,\n\t14902: 0x8810,\n\t14903: 0x8811,\n\t14904: 0x8812,\n\t14905: 0x8814,\n\t14906: 0x8817,\n\t14907: 0x8818,\n\t14908: 0x8819,\n\t14909: 0x881A,\n\t14910: 0x881C,\n\t14911: 0x881D,\n\t14912: 0x881E,\n\t14913: 0x881F,\n\t14914: 0x8820,\n\t14915: 0x8823,\n\t14916: 0x7A00,\n\t14917: 0x606F,\n\t14918: 0x5E0C,\n\t14919: 0x6089,\n\t14920: 0x819D,\n\t14921: 0x5915,\n\t14922: 0x60DC,\n\t14923: 0x7184,\n\t14924: 0x70EF,\n\t14925: 0x6EAA,\n\t14926: 0x6C50,\n\t14927: 0x7280,\n\t14928: 0x6A84,\n\t14929: 0x88AD,\n\t14930: 0x5E2D,\n\t14931: 0x4E60,\n\t14932: 0x5AB3,\n\t14933: 0x559C,\n\t14934: 0x94E3,\n\t14935: 0x6D17,\n\t14936: 0x7CFB,\n\t14937: 0x9699,\n\t14938: 0x620F,\n\t14939: 0x7EC6,\n\t14940: 0x778E,\n\t14941: 0x867E,\n\t14942: 0x5323,\n\t14943: 0x971E,\n\t14944: 0x8F96,\n\t14945: 0x6687,\n\t14946: 0x5CE1,\n\t14947: 0x4FA0,\n\t14948: 0x72ED,\n\t14949: 0x4E0B,\n\t14950: 0x53A6,\n\t14951: 0x590F,\n\t14952: 0x5413,\n\t14953: 0x6380,\n\t14954: 0x9528,\n\t14955: 0x5148,\n\t14956: 0x4ED9,\n\t14957: 0x9C9C,\n\t14958: 0x7EA4,\n\t14959: 0x54B8,\n\t14960: 0x8D24,\n\t14961: 0x8854,\n\t14962: 0x8237,\n\t14963: 0x95F2,\n\t14964: 0x6D8E,\n\t14965: 0x5F26,\n\t14966: 0x5ACC,\n\t14967: 0x663E,\n\t14968: 0x9669,\n\t14969: 0x73B0,\n\t14970: 0x732E,\n\t14971: 0x53BF,\n\t14972: 0x817A,\n\t14973: 0x9985,\n\t14974: 0x7FA1,\n\t14975: 0x5BAA,\n\t14976: 0x9677,\n\t14977: 0x9650,\n\t14978: 0x7EBF,\n\t14979: 0x76F8,\n\t14980: 0x53A2,\n\t14981: 0x9576,\n\t14982: 0x9999,\n\t14983: 0x7BB1,\n\t14984: 0x8944,\n\t14985: 0x6E58,\n\t14986: 0x4E61,\n\t14987: 0x7FD4,\n\t14988: 0x7965,\n\t14989: 0x8BE6,\n\t14990: 0x60F3,\n\t14991: 0x54CD,\n\t14992: 0x4EAB,\n\t14993: 0x9879,\n\t14994: 0x5DF7,\n\t14995: 0x6A61,\n\t14996: 0x50CF,\n\t14997: 0x5411,\n\t14998: 0x8C61,\n\t14999: 0x8427,\n\t15000: 0x785D,\n\t15001: 0x9704,\n\t15002: 0x524A,\n\t15003: 0x54EE,\n\t15004: 0x56A3,\n\t15005: 0x9500,\n\t15006: 0x6D88,\n\t15007: 0x5BB5,\n\t15008: 0x6DC6,\n\t15009: 0x6653,\n\t15010: 0x8824,\n\t15011: 0x8825,\n\t15012: 0x8826,\n\t15013: 0x8827,\n\t15014: 0x8828,\n\t15015: 0x8829,\n\t15016: 0x882A,\n\t15017: 0x882B,\n\t15018: 0x882C,\n\t15019: 0x882D,\n\t15020: 0x882E,\n\t15021: 0x882F,\n\t15022: 0x8830,\n\t15023: 0x8831,\n\t15024: 0x8833,\n\t15025: 0x8834,\n\t15026: 0x8835,\n\t15027: 0x8836,\n\t15028: 0x8837,\n\t15029: 0x8838,\n\t15030: 0x883A,\n\t15031: 0x883B,\n\t15032: 0x883D,\n\t15033: 0x883E,\n\t15034: 0x883F,\n\t15035: 0x8841,\n\t15036: 0x8842,\n\t15037: 0x8843,\n\t15038: 0x8846,\n\t15039: 0x8847,\n\t15040: 0x8848,\n\t15041: 0x8849,\n\t15042: 0x884A,\n\t15043: 0x884B,\n\t15044: 0x884E,\n\t15045: 0x884F,\n\t15046: 0x8850,\n\t15047: 0x8851,\n\t15048: 0x8852,\n\t15049: 0x8853,\n\t15050: 0x8855,\n\t15051: 0x8856,\n\t15052: 0x8858,\n\t15053: 0x885A,\n\t15054: 0x885B,\n\t15055: 0x885C,\n\t15056: 0x885D,\n\t15057: 0x885E,\n\t15058: 0x885F,\n\t15059: 0x8860,\n\t15060: 0x8866,\n\t15061: 0x8867,\n\t15062: 0x886A,\n\t15063: 0x886D,\n\t15064: 0x886F,\n\t15065: 0x8871,\n\t15066: 0x8873,\n\t15067: 0x8874,\n\t15068: 0x8875,\n\t15069: 0x8876,\n\t15070: 0x8878,\n\t15071: 0x8879,\n\t15072: 0x887A,\n\t15073: 0x887B,\n\t15074: 0x887C,\n\t15075: 0x8880,\n\t15076: 0x8883,\n\t15077: 0x8886,\n\t15078: 0x8887,\n\t15079: 0x8889,\n\t15080: 0x888A,\n\t15081: 0x888C,\n\t15082: 0x888E,\n\t15083: 0x888F,\n\t15084: 0x8890,\n\t15085: 0x8891,\n\t15086: 0x8893,\n\t15087: 0x8894,\n\t15088: 0x8895,\n\t15089: 0x8897,\n\t15090: 0x8898,\n\t15091: 0x8899,\n\t15092: 0x889A,\n\t15093: 0x889B,\n\t15094: 0x889D,\n\t15095: 0x889E,\n\t15096: 0x889F,\n\t15097: 0x88A0,\n\t15098: 0x88A1,\n\t15099: 0x88A3,\n\t15100: 0x88A5,\n\t15101: 0x88A6,\n\t15102: 0x88A7,\n\t15103: 0x88A8,\n\t15104: 0x88A9,\n\t15105: 0x88AA,\n\t15106: 0x5C0F,\n\t15107: 0x5B5D,\n\t15108: 0x6821,\n\t15109: 0x8096,\n\t15110: 0x5578,\n\t15111: 0x7B11,\n\t15112: 0x6548,\n\t15113: 0x6954,\n\t15114: 0x4E9B,\n\t15115: 0x6B47,\n\t15116: 0x874E,\n\t15117: 0x978B,\n\t15118: 0x534F,\n\t15119: 0x631F,\n\t15120: 0x643A,\n\t15121: 0x90AA,\n\t15122: 0x659C,\n\t15123: 0x80C1,\n\t15124: 0x8C10,\n\t15125: 0x5199,\n\t15126: 0x68B0,\n\t15127: 0x5378,\n\t15128: 0x87F9,\n\t15129: 0x61C8,\n\t15130: 0x6CC4,\n\t15131: 0x6CFB,\n\t15132: 0x8C22,\n\t15133: 0x5C51,\n\t15134: 0x85AA,\n\t15135: 0x82AF,\n\t15136: 0x950C,\n\t15137: 0x6B23,\n\t15138: 0x8F9B,\n\t15139: 0x65B0,\n\t15140: 0x5FFB,\n\t15141: 0x5FC3,\n\t15142: 0x4FE1,\n\t15143: 0x8845,\n\t15144: 0x661F,\n\t15145: 0x8165,\n\t15146: 0x7329,\n\t15147: 0x60FA,\n\t15148: 0x5174,\n\t15149: 0x5211,\n\t15150: 0x578B,\n\t15151: 0x5F62,\n\t15152: 0x90A2,\n\t15153: 0x884C,\n\t15154: 0x9192,\n\t15155: 0x5E78,\n\t15156: 0x674F,\n\t15157: 0x6027,\n\t15158: 0x59D3,\n\t15159: 0x5144,\n\t15160: 0x51F6,\n\t15161: 0x80F8,\n\t15162: 0x5308,\n\t15163: 0x6C79,\n\t15164: 0x96C4,\n\t15165: 0x718A,\n\t15166: 0x4F11,\n\t15167: 0x4FEE,\n\t15168: 0x7F9E,\n\t15169: 0x673D,\n\t15170: 0x55C5,\n\t15171: 0x9508,\n\t15172: 0x79C0,\n\t15173: 0x8896,\n\t15174: 0x7EE3,\n\t15175: 0x589F,\n\t15176: 0x620C,\n\t15177: 0x9700,\n\t15178: 0x865A,\n\t15179: 0x5618,\n\t15180: 0x987B,\n\t15181: 0x5F90,\n\t15182: 0x8BB8,\n\t15183: 0x84C4,\n\t15184: 0x9157,\n\t15185: 0x53D9,\n\t15186: 0x65ED,\n\t15187: 0x5E8F,\n\t15188: 0x755C,\n\t15189: 0x6064,\n\t15190: 0x7D6E,\n\t15191: 0x5A7F,\n\t15192: 0x7EEA,\n\t15193: 0x7EED,\n\t15194: 0x8F69,\n\t15195: 0x55A7,\n\t15196: 0x5BA3,\n\t15197: 0x60AC,\n\t15198: 0x65CB,\n\t15199: 0x7384,\n\t15200: 0x88AC,\n\t15201: 0x88AE,\n\t15202: 0x88AF,\n\t15203: 0x88B0,\n\t15204: 0x88B2,\n\t15205: 0x88B3,\n\t15206: 0x88B4,\n\t15207: 0x88B5,\n\t15208: 0x88B6,\n\t15209: 0x88B8,\n\t15210: 0x88B9,\n\t15211: 0x88BA,\n\t15212: 0x88BB,\n\t15213: 0x88BD,\n\t15214: 0x88BE,\n\t15215: 0x88BF,\n\t15216: 0x88C0,\n\t15217: 0x88C3,\n\t15218: 0x88C4,\n\t15219: 0x88C7,\n\t15220: 0x88C8,\n\t15221: 0x88CA,\n\t15222: 0x88CB,\n\t15223: 0x88CC,\n\t15224: 0x88CD,\n\t15225: 0x88CF,\n\t15226: 0x88D0,\n\t15227: 0x88D1,\n\t15228: 0x88D3,\n\t15229: 0x88D6,\n\t15230: 0x88D7,\n\t15231: 0x88DA,\n\t15232: 0x88DB,\n\t15233: 0x88DC,\n\t15234: 0x88DD,\n\t15235: 0x88DE,\n\t15236: 0x88E0,\n\t15237: 0x88E1,\n\t15238: 0x88E6,\n\t15239: 0x88E7,\n\t15240: 0x88E9,\n\t15241: 0x88EA,\n\t15242: 0x88EB,\n\t15243: 0x88EC,\n\t15244: 0x88ED,\n\t15245: 0x88EE,\n\t15246: 0x88EF,\n\t15247: 0x88F2,\n\t15248: 0x88F5,\n\t15249: 0x88F6,\n\t15250: 0x88F7,\n\t15251: 0x88FA,\n\t15252: 0x88FB,\n\t15253: 0x88FD,\n\t15254: 0x88FF,\n\t15255: 0x8900,\n\t15256: 0x8901,\n\t15257: 0x8903,\n\t15258: 0x8904,\n\t15259: 0x8905,\n\t15260: 0x8906,\n\t15261: 0x8907,\n\t15262: 0x8908,\n\t15263: 0x8909,\n\t15264: 0x890B,\n\t15265: 0x890C,\n\t15266: 0x890D,\n\t15267: 0x890E,\n\t15268: 0x890F,\n\t15269: 0x8911,\n\t15270: 0x8914,\n\t15271: 0x8915,\n\t15272: 0x8916,\n\t15273: 0x8917,\n\t15274: 0x8918,\n\t15275: 0x891C,\n\t15276: 0x891D,\n\t15277: 0x891E,\n\t15278: 0x891F,\n\t15279: 0x8920,\n\t15280: 0x8922,\n\t15281: 0x8923,\n\t15282: 0x8924,\n\t15283: 0x8926,\n\t15284: 0x8927,\n\t15285: 0x8928,\n\t15286: 0x8929,\n\t15287: 0x892C,\n\t15288: 0x892D,\n\t15289: 0x892E,\n\t15290: 0x892F,\n\t15291: 0x8931,\n\t15292: 0x8932,\n\t15293: 0x8933,\n\t15294: 0x8935,\n\t15295: 0x8937,\n\t15296: 0x9009,\n\t15297: 0x7663,\n\t15298: 0x7729,\n\t15299: 0x7EDA,\n\t15300: 0x9774,\n\t15301: 0x859B,\n\t15302: 0x5B66,\n\t15303: 0x7A74,\n\t15304: 0x96EA,\n\t15305: 0x8840,\n\t15306: 0x52CB,\n\t15307: 0x718F,\n\t15308: 0x5FAA,\n\t15309: 0x65EC,\n\t15310: 0x8BE2,\n\t15311: 0x5BFB,\n\t15312: 0x9A6F,\n\t15313: 0x5DE1,\n\t15314: 0x6B89,\n\t15315: 0x6C5B,\n\t15316: 0x8BAD,\n\t15317: 0x8BAF,\n\t15318: 0x900A,\n\t15319: 0x8FC5,\n\t15320: 0x538B,\n\t15321: 0x62BC,\n\t15322: 0x9E26,\n\t15323: 0x9E2D,\n\t15324: 0x5440,\n\t15325: 0x4E2B,\n\t15326: 0x82BD,\n\t15327: 0x7259,\n\t15328: 0x869C,\n\t15329: 0x5D16,\n\t15330: 0x8859,\n\t15331: 0x6DAF,\n\t15332: 0x96C5,\n\t15333: 0x54D1,\n\t15334: 0x4E9A,\n\t15335: 0x8BB6,\n\t15336: 0x7109,\n\t15337: 0x54BD,\n\t15338: 0x9609,\n\t15339: 0x70DF,\n\t15340: 0x6DF9,\n\t15341: 0x76D0,\n\t15342: 0x4E25,\n\t15343: 0x7814,\n\t15344: 0x8712,\n\t15345: 0x5CA9,\n\t15346: 0x5EF6,\n\t15347: 0x8A00,\n\t15348: 0x989C,\n\t15349: 0x960E,\n\t15350: 0x708E,\n\t15351: 0x6CBF,\n\t15352: 0x5944,\n\t15353: 0x63A9,\n\t15354: 0x773C,\n\t15355: 0x884D,\n\t15356: 0x6F14,\n\t15357: 0x8273,\n\t15358: 0x5830,\n\t15359: 0x71D5,\n\t15360: 0x538C,\n\t15361: 0x781A,\n\t15362: 0x96C1,\n\t15363: 0x5501,\n\t15364: 0x5F66,\n\t15365: 0x7130,\n\t15366: 0x5BB4,\n\t15367: 0x8C1A,\n\t15368: 0x9A8C,\n\t15369: 0x6B83,\n\t15370: 0x592E,\n\t15371: 0x9E2F,\n\t15372: 0x79E7,\n\t15373: 0x6768,\n\t15374: 0x626C,\n\t15375: 0x4F6F,\n\t15376: 0x75A1,\n\t15377: 0x7F8A,\n\t15378: 0x6D0B,\n\t15379: 0x9633,\n\t15380: 0x6C27,\n\t15381: 0x4EF0,\n\t15382: 0x75D2,\n\t15383: 0x517B,\n\t15384: 0x6837,\n\t15385: 0x6F3E,\n\t15386: 0x9080,\n\t15387: 0x8170,\n\t15388: 0x5996,\n\t15389: 0x7476,\n\t15390: 0x8938,\n\t15391: 0x8939,\n\t15392: 0x893A,\n\t15393: 0x893B,\n\t15394: 0x893C,\n\t15395: 0x893D,\n\t15396: 0x893E,\n\t15397: 0x893F,\n\t15398: 0x8940,\n\t15399: 0x8942,\n\t15400: 0x8943,\n\t15401: 0x8945,\n\t15402: 0x8946,\n\t15403: 0x8947,\n\t15404: 0x8948,\n\t15405: 0x8949,\n\t15406: 0x894A,\n\t15407: 0x894B,\n\t15408: 0x894C,\n\t15409: 0x894D,\n\t15410: 0x894E,\n\t15411: 0x894F,\n\t15412: 0x8950,\n\t15413: 0x8951,\n\t15414: 0x8952,\n\t15415: 0x8953,\n\t15416: 0x8954,\n\t15417: 0x8955,\n\t15418: 0x8956,\n\t15419: 0x8957,\n\t15420: 0x8958,\n\t15421: 0x8959,\n\t15422: 0x895A,\n\t15423: 0x895B,\n\t15424: 0x895C,\n\t15425: 0x895D,\n\t15426: 0x8960,\n\t15427: 0x8961,\n\t15428: 0x8962,\n\t15429: 0x8963,\n\t15430: 0x8964,\n\t15431: 0x8965,\n\t15432: 0x8967,\n\t15433: 0x8968,\n\t15434: 0x8969,\n\t15435: 0x896A,\n\t15436: 0x896B,\n\t15437: 0x896C,\n\t15438: 0x896D,\n\t15439: 0x896E,\n\t15440: 0x896F,\n\t15441: 0x8970,\n\t15442: 0x8971,\n\t15443: 0x8972,\n\t15444: 0x8973,\n\t15445: 0x8974,\n\t15446: 0x8975,\n\t15447: 0x8976,\n\t15448: 0x8977,\n\t15449: 0x8978,\n\t15450: 0x8979,\n\t15451: 0x897A,\n\t15452: 0x897C,\n\t15453: 0x897D,\n\t15454: 0x897E,\n\t15455: 0x8980,\n\t15456: 0x8982,\n\t15457: 0x8984,\n\t15458: 0x8985,\n\t15459: 0x8987,\n\t15460: 0x8988,\n\t15461: 0x8989,\n\t15462: 0x898A,\n\t15463: 0x898B,\n\t15464: 0x898C,\n\t15465: 0x898D,\n\t15466: 0x898E,\n\t15467: 0x898F,\n\t15468: 0x8990,\n\t15469: 0x8991,\n\t15470: 0x8992,\n\t15471: 0x8993,\n\t15472: 0x8994,\n\t15473: 0x8995,\n\t15474: 0x8996,\n\t15475: 0x8997,\n\t15476: 0x8998,\n\t15477: 0x8999,\n\t15478: 0x899A,\n\t15479: 0x899B,\n\t15480: 0x899C,\n\t15481: 0x899D,\n\t15482: 0x899E,\n\t15483: 0x899F,\n\t15484: 0x89A0,\n\t15485: 0x89A1,\n\t15486: 0x6447,\n\t15487: 0x5C27,\n\t15488: 0x9065,\n\t15489: 0x7A91,\n\t15490: 0x8C23,\n\t15491: 0x59DA,\n\t15492: 0x54AC,\n\t15493: 0x8200,\n\t15494: 0x836F,\n\t15495: 0x8981,\n\t15496: 0x8000,\n\t15497: 0x6930,\n\t15498: 0x564E,\n\t15499: 0x8036,\n\t15500: 0x7237,\n\t15501: 0x91CE,\n\t15502: 0x51B6,\n\t15503: 0x4E5F,\n\t15504: 0x9875,\n\t15505: 0x6396,\n\t15506: 0x4E1A,\n\t15507: 0x53F6,\n\t15508: 0x66F3,\n\t15509: 0x814B,\n\t15510: 0x591C,\n\t15511: 0x6DB2,\n\t15512: 0x4E00,\n\t15513: 0x58F9,\n\t15514: 0x533B,\n\t15515: 0x63D6,\n\t15516: 0x94F1,\n\t15517: 0x4F9D,\n\t15518: 0x4F0A,\n\t15519: 0x8863,\n\t15520: 0x9890,\n\t15521: 0x5937,\n\t15522: 0x9057,\n\t15523: 0x79FB,\n\t15524: 0x4EEA,\n\t15525: 0x80F0,\n\t15526: 0x7591,\n\t15527: 0x6C82,\n\t15528: 0x5B9C,\n\t15529: 0x59E8,\n\t15530: 0x5F5D,\n\t15531: 0x6905,\n\t15532: 0x8681,\n\t15533: 0x501A,\n\t15534: 0x5DF2,\n\t15535: 0x4E59,\n\t15536: 0x77E3,\n\t15537: 0x4EE5,\n\t15538: 0x827A,\n\t15539: 0x6291,\n\t15540: 0x6613,\n\t15541: 0x9091,\n\t15542: 0x5C79,\n\t15543: 0x4EBF,\n\t15544: 0x5F79,\n\t15545: 0x81C6,\n\t15546: 0x9038,\n\t15547: 0x8084,\n\t15548: 0x75AB,\n\t15549: 0x4EA6,\n\t15550: 0x88D4,\n\t15551: 0x610F,\n\t15552: 0x6BC5,\n\t15553: 0x5FC6,\n\t15554: 0x4E49,\n\t15555: 0x76CA,\n\t15556: 0x6EA2,\n\t15557: 0x8BE3,\n\t15558: 0x8BAE,\n\t15559: 0x8C0A,\n\t15560: 0x8BD1,\n\t15561: 0x5F02,\n\t15562: 0x7FFC,\n\t15563: 0x7FCC,\n\t15564: 0x7ECE,\n\t15565: 0x8335,\n\t15566: 0x836B,\n\t15567: 0x56E0,\n\t15568: 0x6BB7,\n\t15569: 0x97F3,\n\t15570: 0x9634,\n\t15571: 0x59FB,\n\t15572: 0x541F,\n\t15573: 0x94F6,\n\t15574: 0x6DEB,\n\t15575: 0x5BC5,\n\t15576: 0x996E,\n\t15577: 0x5C39,\n\t15578: 0x5F15,\n\t15579: 0x9690,\n\t15580: 0x89A2,\n\t15581: 0x89A3,\n\t15582: 0x89A4,\n\t15583: 0x89A5,\n\t15584: 0x89A6,\n\t15585: 0x89A7,\n\t15586: 0x89A8,\n\t15587: 0x89A9,\n\t15588: 0x89AA,\n\t15589: 0x89AB,\n\t15590: 0x89AC,\n\t15591: 0x89AD,\n\t15592: 0x89AE,\n\t15593: 0x89AF,\n\t15594: 0x89B0,\n\t15595: 0x89B1,\n\t15596: 0x89B2,\n\t15597: 0x89B3,\n\t15598: 0x89B4,\n\t15599: 0x89B5,\n\t15600: 0x89B6,\n\t15601: 0x89B7,\n\t15602: 0x89B8,\n\t15603: 0x89B9,\n\t15604: 0x89BA,\n\t15605: 0x89BB,\n\t15606: 0x89BC,\n\t15607: 0x89BD,\n\t15608: 0x89BE,\n\t15609: 0x89BF,\n\t15610: 0x89C0,\n\t15611: 0x89C3,\n\t15612: 0x89CD,\n\t15613: 0x89D3,\n\t15614: 0x89D4,\n\t15615: 0x89D5,\n\t15616: 0x89D7,\n\t15617: 0x89D8,\n\t15618: 0x89D9,\n\t15619: 0x89DB,\n\t15620: 0x89DD,\n\t15621: 0x89DF,\n\t15622: 0x89E0,\n\t15623: 0x89E1,\n\t15624: 0x89E2,\n\t15625: 0x89E4,\n\t15626: 0x89E7,\n\t15627: 0x89E8,\n\t15628: 0x89E9,\n\t15629: 0x89EA,\n\t15630: 0x89EC,\n\t15631: 0x89ED,\n\t15632: 0x89EE,\n\t15633: 0x89F0,\n\t15634: 0x89F1,\n\t15635: 0x89F2,\n\t15636: 0x89F4,\n\t15637: 0x89F5,\n\t15638: 0x89F6,\n\t15639: 0x89F7,\n\t15640: 0x89F8,\n\t15641: 0x89F9,\n\t15642: 0x89FA,\n\t15643: 0x89FB,\n\t15644: 0x89FC,\n\t15645: 0x89FD,\n\t15646: 0x89FE,\n\t15647: 0x89FF,\n\t15648: 0x8A01,\n\t15649: 0x8A02,\n\t15650: 0x8A03,\n\t15651: 0x8A04,\n\t15652: 0x8A05,\n\t15653: 0x8A06,\n\t15654: 0x8A08,\n\t15655: 0x8A09,\n\t15656: 0x8A0A,\n\t15657: 0x8A0B,\n\t15658: 0x8A0C,\n\t15659: 0x8A0D,\n\t15660: 0x8A0E,\n\t15661: 0x8A0F,\n\t15662: 0x8A10,\n\t15663: 0x8A11,\n\t15664: 0x8A12,\n\t15665: 0x8A13,\n\t15666: 0x8A14,\n\t15667: 0x8A15,\n\t15668: 0x8A16,\n\t15669: 0x8A17,\n\t15670: 0x8A18,\n\t15671: 0x8A19,\n\t15672: 0x8A1A,\n\t15673: 0x8A1B,\n\t15674: 0x8A1C,\n\t15675: 0x8A1D,\n\t15676: 0x5370,\n\t15677: 0x82F1,\n\t15678: 0x6A31,\n\t15679: 0x5A74,\n\t15680: 0x9E70,\n\t15681: 0x5E94,\n\t15682: 0x7F28,\n\t15683: 0x83B9,\n\t15684: 0x8424,\n\t15685: 0x8425,\n\t15686: 0x8367,\n\t15687: 0x8747,\n\t15688: 0x8FCE,\n\t15689: 0x8D62,\n\t15690: 0x76C8,\n\t15691: 0x5F71,\n\t15692: 0x9896,\n\t15693: 0x786C,\n\t15694: 0x6620,\n\t15695: 0x54DF,\n\t15696: 0x62E5,\n\t15697: 0x4F63,\n\t15698: 0x81C3,\n\t15699: 0x75C8,\n\t15700: 0x5EB8,\n\t15701: 0x96CD,\n\t15702: 0x8E0A,\n\t15703: 0x86F9,\n\t15704: 0x548F,\n\t15705: 0x6CF3,\n\t15706: 0x6D8C,\n\t15707: 0x6C38,\n\t15708: 0x607F,\n\t15709: 0x52C7,\n\t15710: 0x7528,\n\t15711: 0x5E7D,\n\t15712: 0x4F18,\n\t15713: 0x60A0,\n\t15714: 0x5FE7,\n\t15715: 0x5C24,\n\t15716: 0x7531,\n\t15717: 0x90AE,\n\t15718: 0x94C0,\n\t15719: 0x72B9,\n\t15720: 0x6CB9,\n\t15721: 0x6E38,\n\t15722: 0x9149,\n\t15723: 0x6709,\n\t15724: 0x53CB,\n\t15725: 0x53F3,\n\t15726: 0x4F51,\n\t15727: 0x91C9,\n\t15728: 0x8BF1,\n\t15729: 0x53C8,\n\t15730: 0x5E7C,\n\t15731: 0x8FC2,\n\t15732: 0x6DE4,\n\t15733: 0x4E8E,\n\t15734: 0x76C2,\n\t15735: 0x6986,\n\t15736: 0x865E,\n\t15737: 0x611A,\n\t15738: 0x8206,\n\t15739: 0x4F59,\n\t15740: 0x4FDE,\n\t15741: 0x903E,\n\t15742: 0x9C7C,\n\t15743: 0x6109,\n\t15744: 0x6E1D,\n\t15745: 0x6E14,\n\t15746: 0x9685,\n\t15747: 0x4E88,\n\t15748: 0x5A31,\n\t15749: 0x96E8,\n\t15750: 0x4E0E,\n\t15751: 0x5C7F,\n\t15752: 0x79B9,\n\t15753: 0x5B87,\n\t15754: 0x8BED,\n\t15755: 0x7FBD,\n\t15756: 0x7389,\n\t15757: 0x57DF,\n\t15758: 0x828B,\n\t15759: 0x90C1,\n\t15760: 0x5401,\n\t15761: 0x9047,\n\t15762: 0x55BB,\n\t15763: 0x5CEA,\n\t15764: 0x5FA1,\n\t15765: 0x6108,\n\t15766: 0x6B32,\n\t15767: 0x72F1,\n\t15768: 0x80B2,\n\t15769: 0x8A89,\n\t15770: 0x8A1E,\n\t15771: 0x8A1F,\n\t15772: 0x8A20,\n\t15773: 0x8A21,\n\t15774: 0x8A22,\n\t15775: 0x8A23,\n\t15776: 0x8A24,\n\t15777: 0x8A25,\n\t15778: 0x8A26,\n\t15779: 0x8A27,\n\t15780: 0x8A28,\n\t15781: 0x8A29,\n\t15782: 0x8A2A,\n\t15783: 0x8A2B,\n\t15784: 0x8A2C,\n\t15785: 0x8A2D,\n\t15786: 0x8A2E,\n\t15787: 0x8A2F,\n\t15788: 0x8A30,\n\t15789: 0x8A31,\n\t15790: 0x8A32,\n\t15791: 0x8A33,\n\t15792: 0x8A34,\n\t15793: 0x8A35,\n\t15794: 0x8A36,\n\t15795: 0x8A37,\n\t15796: 0x8A38,\n\t15797: 0x8A39,\n\t15798: 0x8A3A,\n\t15799: 0x8A3B,\n\t15800: 0x8A3C,\n\t15801: 0x8A3D,\n\t15802: 0x8A3F,\n\t15803: 0x8A40,\n\t15804: 0x8A41,\n\t15805: 0x8A42,\n\t15806: 0x8A43,\n\t15807: 0x8A44,\n\t15808: 0x8A45,\n\t15809: 0x8A46,\n\t15810: 0x8A47,\n\t15811: 0x8A49,\n\t15812: 0x8A4A,\n\t15813: 0x8A4B,\n\t15814: 0x8A4C,\n\t15815: 0x8A4D,\n\t15816: 0x8A4E,\n\t15817: 0x8A4F,\n\t15818: 0x8A50,\n\t15819: 0x8A51,\n\t15820: 0x8A52,\n\t15821: 0x8A53,\n\t15822: 0x8A54,\n\t15823: 0x8A55,\n\t15824: 0x8A56,\n\t15825: 0x8A57,\n\t15826: 0x8A58,\n\t15827: 0x8A59,\n\t15828: 0x8A5A,\n\t15829: 0x8A5B,\n\t15830: 0x8A5C,\n\t15831: 0x8A5D,\n\t15832: 0x8A5E,\n\t15833: 0x8A5F,\n\t15834: 0x8A60,\n\t15835: 0x8A61,\n\t15836: 0x8A62,\n\t15837: 0x8A63,\n\t15838: 0x8A64,\n\t15839: 0x8A65,\n\t15840: 0x8A66,\n\t15841: 0x8A67,\n\t15842: 0x8A68,\n\t15843: 0x8A69,\n\t15844: 0x8A6A,\n\t15845: 0x8A6B,\n\t15846: 0x8A6C,\n\t15847: 0x8A6D,\n\t15848: 0x8A6E,\n\t15849: 0x8A6F,\n\t15850: 0x8A70,\n\t15851: 0x8A71,\n\t15852: 0x8A72,\n\t15853: 0x8A73,\n\t15854: 0x8A74,\n\t15855: 0x8A75,\n\t15856: 0x8A76,\n\t15857: 0x8A77,\n\t15858: 0x8A78,\n\t15859: 0x8A7A,\n\t15860: 0x8A7B,\n\t15861: 0x8A7C,\n\t15862: 0x8A7D,\n\t15863: 0x8A7E,\n\t15864: 0x8A7F,\n\t15865: 0x8A80,\n\t15866: 0x6D74,\n\t15867: 0x5BD3,\n\t15868: 0x88D5,\n\t15869: 0x9884,\n\t15870: 0x8C6B,\n\t15871: 0x9A6D,\n\t15872: 0x9E33,\n\t15873: 0x6E0A,\n\t15874: 0x51A4,\n\t15875: 0x5143,\n\t15876: 0x57A3,\n\t15877: 0x8881,\n\t15878: 0x539F,\n\t15879: 0x63F4,\n\t15880: 0x8F95,\n\t15881: 0x56ED,\n\t15882: 0x5458,\n\t15883: 0x5706,\n\t15884: 0x733F,\n\t15885: 0x6E90,\n\t15886: 0x7F18,\n\t15887: 0x8FDC,\n\t15888: 0x82D1,\n\t15889: 0x613F,\n\t15890: 0x6028,\n\t15891: 0x9662,\n\t15892: 0x66F0,\n\t15893: 0x7EA6,\n\t15894: 0x8D8A,\n\t15895: 0x8DC3,\n\t15896: 0x94A5,\n\t15897: 0x5CB3,\n\t15898: 0x7CA4,\n\t15899: 0x6708,\n\t15900: 0x60A6,\n\t15901: 0x9605,\n\t15902: 0x8018,\n\t15903: 0x4E91,\n\t15904: 0x90E7,\n\t15905: 0x5300,\n\t15906: 0x9668,\n\t15907: 0x5141,\n\t15908: 0x8FD0,\n\t15909: 0x8574,\n\t15910: 0x915D,\n\t15911: 0x6655,\n\t15912: 0x97F5,\n\t15913: 0x5B55,\n\t15914: 0x531D,\n\t15915: 0x7838,\n\t15916: 0x6742,\n\t15917: 0x683D,\n\t15918: 0x54C9,\n\t15919: 0x707E,\n\t15920: 0x5BB0,\n\t15921: 0x8F7D,\n\t15922: 0x518D,\n\t15923: 0x5728,\n\t15924: 0x54B1,\n\t15925: 0x6512,\n\t15926: 0x6682,\n\t15927: 0x8D5E,\n\t15928: 0x8D43,\n\t15929: 0x810F,\n\t15930: 0x846C,\n\t15931: 0x906D,\n\t15932: 0x7CDF,\n\t15933: 0x51FF,\n\t15934: 0x85FB,\n\t15935: 0x67A3,\n\t15936: 0x65E9,\n\t15937: 0x6FA1,\n\t15938: 0x86A4,\n\t15939: 0x8E81,\n\t15940: 0x566A,\n\t15941: 0x9020,\n\t15942: 0x7682,\n\t15943: 0x7076,\n\t15944: 0x71E5,\n\t15945: 0x8D23,\n\t15946: 0x62E9,\n\t15947: 0x5219,\n\t15948: 0x6CFD,\n\t15949: 0x8D3C,\n\t15950: 0x600E,\n\t15951: 0x589E,\n\t15952: 0x618E,\n\t15953: 0x66FE,\n\t15954: 0x8D60,\n\t15955: 0x624E,\n\t15956: 0x55B3,\n\t15957: 0x6E23,\n\t15958: 0x672D,\n\t15959: 0x8F67,\n\t15960: 0x8A81,\n\t15961: 0x8A82,\n\t15962: 0x8A83,\n\t15963: 0x8A84,\n\t15964: 0x8A85,\n\t15965: 0x8A86,\n\t15966: 0x8A87,\n\t15967: 0x8A88,\n\t15968: 0x8A8B,\n\t15969: 0x8A8C,\n\t15970: 0x8A8D,\n\t15971: 0x8A8E,\n\t15972: 0x8A8F,\n\t15973: 0x8A90,\n\t15974: 0x8A91,\n\t15975: 0x8A92,\n\t15976: 0x8A94,\n\t15977: 0x8A95,\n\t15978: 0x8A96,\n\t15979: 0x8A97,\n\t15980: 0x8A98,\n\t15981: 0x8A99,\n\t15982: 0x8A9A,\n\t15983: 0x8A9B,\n\t15984: 0x8A9C,\n\t15985: 0x8A9D,\n\t15986: 0x8A9E,\n\t15987: 0x8A9F,\n\t15988: 0x8AA0,\n\t15989: 0x8AA1,\n\t15990: 0x8AA2,\n\t15991: 0x8AA3,\n\t15992: 0x8AA4,\n\t15993: 0x8AA5,\n\t15994: 0x8AA6,\n\t15995: 0x8AA7,\n\t15996: 0x8AA8,\n\t15997: 0x8AA9,\n\t15998: 0x8AAA,\n\t15999: 0x8AAB,\n\t16000: 0x8AAC,\n\t16001: 0x8AAD,\n\t16002: 0x8AAE,\n\t16003: 0x8AAF,\n\t16004: 0x8AB0,\n\t16005: 0x8AB1,\n\t16006: 0x8AB2,\n\t16007: 0x8AB3,\n\t16008: 0x8AB4,\n\t16009: 0x8AB5,\n\t16010: 0x8AB6,\n\t16011: 0x8AB7,\n\t16012: 0x8AB8,\n\t16013: 0x8AB9,\n\t16014: 0x8ABA,\n\t16015: 0x8ABB,\n\t16016: 0x8ABC,\n\t16017: 0x8ABD,\n\t16018: 0x8ABE,\n\t16019: 0x8ABF,\n\t16020: 0x8AC0,\n\t16021: 0x8AC1,\n\t16022: 0x8AC2,\n\t16023: 0x8AC3,\n\t16024: 0x8AC4,\n\t16025: 0x8AC5,\n\t16026: 0x8AC6,\n\t16027: 0x8AC7,\n\t16028: 0x8AC8,\n\t16029: 0x8AC9,\n\t16030: 0x8ACA,\n\t16031: 0x8ACB,\n\t16032: 0x8ACC,\n\t16033: 0x8ACD,\n\t16034: 0x8ACE,\n\t16035: 0x8ACF,\n\t16036: 0x8AD0,\n\t16037: 0x8AD1,\n\t16038: 0x8AD2,\n\t16039: 0x8AD3,\n\t16040: 0x8AD4,\n\t16041: 0x8AD5,\n\t16042: 0x8AD6,\n\t16043: 0x8AD7,\n\t16044: 0x8AD8,\n\t16045: 0x8AD9,\n\t16046: 0x8ADA,\n\t16047: 0x8ADB,\n\t16048: 0x8ADC,\n\t16049: 0x8ADD,\n\t16050: 0x8ADE,\n\t16051: 0x8ADF,\n\t16052: 0x8AE0,\n\t16053: 0x8AE1,\n\t16054: 0x8AE2,\n\t16055: 0x8AE3,\n\t16056: 0x94E1,\n\t16057: 0x95F8,\n\t16058: 0x7728,\n\t16059: 0x6805,\n\t16060: 0x69A8,\n\t16061: 0x548B,\n\t16062: 0x4E4D,\n\t16063: 0x70B8,\n\t16064: 0x8BC8,\n\t16065: 0x6458,\n\t16066: 0x658B,\n\t16067: 0x5B85,\n\t16068: 0x7A84,\n\t16069: 0x503A,\n\t16070: 0x5BE8,\n\t16071: 0x77BB,\n\t16072: 0x6BE1,\n\t16073: 0x8A79,\n\t16074: 0x7C98,\n\t16075: 0x6CBE,\n\t16076: 0x76CF,\n\t16077: 0x65A9,\n\t16078: 0x8F97,\n\t16079: 0x5D2D,\n\t16080: 0x5C55,\n\t16081: 0x8638,\n\t16082: 0x6808,\n\t16083: 0x5360,\n\t16084: 0x6218,\n\t16085: 0x7AD9,\n\t16086: 0x6E5B,\n\t16087: 0x7EFD,\n\t16088: 0x6A1F,\n\t16089: 0x7AE0,\n\t16090: 0x5F70,\n\t16091: 0x6F33,\n\t16092: 0x5F20,\n\t16093: 0x638C,\n\t16094: 0x6DA8,\n\t16095: 0x6756,\n\t16096: 0x4E08,\n\t16097: 0x5E10,\n\t16098: 0x8D26,\n\t16099: 0x4ED7,\n\t16100: 0x80C0,\n\t16101: 0x7634,\n\t16102: 0x969C,\n\t16103: 0x62DB,\n\t16104: 0x662D,\n\t16105: 0x627E,\n\t16106: 0x6CBC,\n\t16107: 0x8D75,\n\t16108: 0x7167,\n\t16109: 0x7F69,\n\t16110: 0x5146,\n\t16111: 0x8087,\n\t16112: 0x53EC,\n\t16113: 0x906E,\n\t16114: 0x6298,\n\t16115: 0x54F2,\n\t16116: 0x86F0,\n\t16117: 0x8F99,\n\t16118: 0x8005,\n\t16119: 0x9517,\n\t16120: 0x8517,\n\t16121: 0x8FD9,\n\t16122: 0x6D59,\n\t16123: 0x73CD,\n\t16124: 0x659F,\n\t16125: 0x771F,\n\t16126: 0x7504,\n\t16127: 0x7827,\n\t16128: 0x81FB,\n\t16129: 0x8D1E,\n\t16130: 0x9488,\n\t16131: 0x4FA6,\n\t16132: 0x6795,\n\t16133: 0x75B9,\n\t16134: 0x8BCA,\n\t16135: 0x9707,\n\t16136: 0x632F,\n\t16137: 0x9547,\n\t16138: 0x9635,\n\t16139: 0x84B8,\n\t16140: 0x6323,\n\t16141: 0x7741,\n\t16142: 0x5F81,\n\t16143: 0x72F0,\n\t16144: 0x4E89,\n\t16145: 0x6014,\n\t16146: 0x6574,\n\t16147: 0x62EF,\n\t16148: 0x6B63,\n\t16149: 0x653F,\n\t16150: 0x8AE4,\n\t16151: 0x8AE5,\n\t16152: 0x8AE6,\n\t16153: 0x8AE7,\n\t16154: 0x8AE8,\n\t16155: 0x8AE9,\n\t16156: 0x8AEA,\n\t16157: 0x8AEB,\n\t16158: 0x8AEC,\n\t16159: 0x8AED,\n\t16160: 0x8AEE,\n\t16161: 0x8AEF,\n\t16162: 0x8AF0,\n\t16163: 0x8AF1,\n\t16164: 0x8AF2,\n\t16165: 0x8AF3,\n\t16166: 0x8AF4,\n\t16167: 0x8AF5,\n\t16168: 0x8AF6,\n\t16169: 0x8AF7,\n\t16170: 0x8AF8,\n\t16171: 0x8AF9,\n\t16172: 0x8AFA,\n\t16173: 0x8AFB,\n\t16174: 0x8AFC,\n\t16175: 0x8AFD,\n\t16176: 0x8AFE,\n\t16177: 0x8AFF,\n\t16178: 0x8B00,\n\t16179: 0x8B01,\n\t16180: 0x8B02,\n\t16181: 0x8B03,\n\t16182: 0x8B04,\n\t16183: 0x8B05,\n\t16184: 0x8B06,\n\t16185: 0x8B08,\n\t16186: 0x8B09,\n\t16187: 0x8B0A,\n\t16188: 0x8B0B,\n\t16189: 0x8B0C,\n\t16190: 0x8B0D,\n\t16191: 0x8B0E,\n\t16192: 0x8B0F,\n\t16193: 0x8B10,\n\t16194: 0x8B11,\n\t16195: 0x8B12,\n\t16196: 0x8B13,\n\t16197: 0x8B14,\n\t16198: 0x8B15,\n\t16199: 0x8B16,\n\t16200: 0x8B17,\n\t16201: 0x8B18,\n\t16202: 0x8B19,\n\t16203: 0x8B1A,\n\t16204: 0x8B1B,\n\t16205: 0x8B1C,\n\t16206: 0x8B1D,\n\t16207: 0x8B1E,\n\t16208: 0x8B1F,\n\t16209: 0x8B20,\n\t16210: 0x8B21,\n\t16211: 0x8B22,\n\t16212: 0x8B23,\n\t16213: 0x8B24,\n\t16214: 0x8B25,\n\t16215: 0x8B27,\n\t16216: 0x8B28,\n\t16217: 0x8B29,\n\t16218: 0x8B2A,\n\t16219: 0x8B2B,\n\t16220: 0x8B2C,\n\t16221: 0x8B2D,\n\t16222: 0x8B2E,\n\t16223: 0x8B2F,\n\t16224: 0x8B30,\n\t16225: 0x8B31,\n\t16226: 0x8B32,\n\t16227: 0x8B33,\n\t16228: 0x8B34,\n\t16229: 0x8B35,\n\t16230: 0x8B36,\n\t16231: 0x8B37,\n\t16232: 0x8B38,\n\t16233: 0x8B39,\n\t16234: 0x8B3A,\n\t16235: 0x8B3B,\n\t16236: 0x8B3C,\n\t16237: 0x8B3D,\n\t16238: 0x8B3E,\n\t16239: 0x8B3F,\n\t16240: 0x8B40,\n\t16241: 0x8B41,\n\t16242: 0x8B42,\n\t16243: 0x8B43,\n\t16244: 0x8B44,\n\t16245: 0x8B45,\n\t16246: 0x5E27,\n\t16247: 0x75C7,\n\t16248: 0x90D1,\n\t16249: 0x8BC1,\n\t16250: 0x829D,\n\t16251: 0x679D,\n\t16252: 0x652F,\n\t16253: 0x5431,\n\t16254: 0x8718,\n\t16255: 0x77E5,\n\t16256: 0x80A2,\n\t16257: 0x8102,\n\t16258: 0x6C41,\n\t16259: 0x4E4B,\n\t16260: 0x7EC7,\n\t16261: 0x804C,\n\t16262: 0x76F4,\n\t16263: 0x690D,\n\t16264: 0x6B96,\n\t16265: 0x6267,\n\t16266: 0x503C,\n\t16267: 0x4F84,\n\t16268: 0x5740,\n\t16269: 0x6307,\n\t16270: 0x6B62,\n\t16271: 0x8DBE,\n\t16272: 0x53EA,\n\t16273: 0x65E8,\n\t16274: 0x7EB8,\n\t16275: 0x5FD7,\n\t16276: 0x631A,\n\t16277: 0x63B7,\n\t16278: 0x81F3,\n\t16279: 0x81F4,\n\t16280: 0x7F6E,\n\t16281: 0x5E1C,\n\t16282: 0x5CD9,\n\t16283: 0x5236,\n\t16284: 0x667A,\n\t16285: 0x79E9,\n\t16286: 0x7A1A,\n\t16287: 0x8D28,\n\t16288: 0x7099,\n\t16289: 0x75D4,\n\t16290: 0x6EDE,\n\t16291: 0x6CBB,\n\t16292: 0x7A92,\n\t16293: 0x4E2D,\n\t16294: 0x76C5,\n\t16295: 0x5FE0,\n\t16296: 0x949F,\n\t16297: 0x8877,\n\t16298: 0x7EC8,\n\t16299: 0x79CD,\n\t16300: 0x80BF,\n\t16301: 0x91CD,\n\t16302: 0x4EF2,\n\t16303: 0x4F17,\n\t16304: 0x821F,\n\t16305: 0x5468,\n\t16306: 0x5DDE,\n\t16307: 0x6D32,\n\t16308: 0x8BCC,\n\t16309: 0x7CA5,\n\t16310: 0x8F74,\n\t16311: 0x8098,\n\t16312: 0x5E1A,\n\t16313: 0x5492,\n\t16314: 0x76B1,\n\t16315: 0x5B99,\n\t16316: 0x663C,\n\t16317: 0x9AA4,\n\t16318: 0x73E0,\n\t16319: 0x682A,\n\t16320: 0x86DB,\n\t16321: 0x6731,\n\t16322: 0x732A,\n\t16323: 0x8BF8,\n\t16324: 0x8BDB,\n\t16325: 0x9010,\n\t16326: 0x7AF9,\n\t16327: 0x70DB,\n\t16328: 0x716E,\n\t16329: 0x62C4,\n\t16330: 0x77A9,\n\t16331: 0x5631,\n\t16332: 0x4E3B,\n\t16333: 0x8457,\n\t16334: 0x67F1,\n\t16335: 0x52A9,\n\t16336: 0x86C0,\n\t16337: 0x8D2E,\n\t16338: 0x94F8,\n\t16339: 0x7B51,\n\t16340: 0x8B46,\n\t16341: 0x8B47,\n\t16342: 0x8B48,\n\t16343: 0x8B49,\n\t16344: 0x8B4A,\n\t16345: 0x8B4B,\n\t16346: 0x8B4C,\n\t16347: 0x8B4D,\n\t16348: 0x8B4E,\n\t16349: 0x8B4F,\n\t16350: 0x8B50,\n\t16351: 0x8B51,\n\t16352: 0x8B52,\n\t16353: 0x8B53,\n\t16354: 0x8B54,\n\t16355: 0x8B55,\n\t16356: 0x8B56,\n\t16357: 0x8B57,\n\t16358: 0x8B58,\n\t16359: 0x8B59,\n\t16360: 0x8B5A,\n\t16361: 0x8B5B,\n\t16362: 0x8B5C,\n\t16363: 0x8B5D,\n\t16364: 0x8B5E,\n\t16365: 0x8B5F,\n\t16366: 0x8B60,\n\t16367: 0x8B61,\n\t16368: 0x8B62,\n\t16369: 0x8B63,\n\t16370: 0x8B64,\n\t16371: 0x8B65,\n\t16372: 0x8B67,\n\t16373: 0x8B68,\n\t16374: 0x8B69,\n\t16375: 0x8B6A,\n\t16376: 0x8B6B,\n\t16377: 0x8B6D,\n\t16378: 0x8B6E,\n\t16379: 0x8B6F,\n\t16380: 0x8B70,\n\t16381: 0x8B71,\n\t16382: 0x8B72,\n\t16383: 0x8B73,\n\t16384: 0x8B74,\n\t16385: 0x8B75,\n\t16386: 0x8B76,\n\t16387: 0x8B77,\n\t16388: 0x8B78,\n\t16389: 0x8B79,\n\t16390: 0x8B7A,\n\t16391: 0x8B7B,\n\t16392: 0x8B7C,\n\t16393: 0x8B7D,\n\t16394: 0x8B7E,\n\t16395: 0x8B7F,\n\t16396: 0x8B80,\n\t16397: 0x8B81,\n\t16398: 0x8B82,\n\t16399: 0x8B83,\n\t16400: 0x8B84,\n\t16401: 0x8B85,\n\t16402: 0x8B86,\n\t16403: 0x8B87,\n\t16404: 0x8B88,\n\t16405: 0x8B89,\n\t16406: 0x8B8A,\n\t16407: 0x8B8B,\n\t16408: 0x8B8C,\n\t16409: 0x8B8D,\n\t16410: 0x8B8E,\n\t16411: 0x8B8F,\n\t16412: 0x8B90,\n\t16413: 0x8B91,\n\t16414: 0x8B92,\n\t16415: 0x8B93,\n\t16416: 0x8B94,\n\t16417: 0x8B95,\n\t16418: 0x8B96,\n\t16419: 0x8B97,\n\t16420: 0x8B98,\n\t16421: 0x8B99,\n\t16422: 0x8B9A,\n\t16423: 0x8B9B,\n\t16424: 0x8B9C,\n\t16425: 0x8B9D,\n\t16426: 0x8B9E,\n\t16427: 0x8B9F,\n\t16428: 0x8BAC,\n\t16429: 0x8BB1,\n\t16430: 0x8BBB,\n\t16431: 0x8BC7,\n\t16432: 0x8BD0,\n\t16433: 0x8BEA,\n\t16434: 0x8C09,\n\t16435: 0x8C1E,\n\t16436: 0x4F4F,\n\t16437: 0x6CE8,\n\t16438: 0x795D,\n\t16439: 0x9A7B,\n\t16440: 0x6293,\n\t16441: 0x722A,\n\t16442: 0x62FD,\n\t16443: 0x4E13,\n\t16444: 0x7816,\n\t16445: 0x8F6C,\n\t16446: 0x64B0,\n\t16447: 0x8D5A,\n\t16448: 0x7BC6,\n\t16449: 0x6869,\n\t16450: 0x5E84,\n\t16451: 0x88C5,\n\t16452: 0x5986,\n\t16453: 0x649E,\n\t16454: 0x58EE,\n\t16455: 0x72B6,\n\t16456: 0x690E,\n\t16457: 0x9525,\n\t16458: 0x8FFD,\n\t16459: 0x8D58,\n\t16460: 0x5760,\n\t16461: 0x7F00,\n\t16462: 0x8C06,\n\t16463: 0x51C6,\n\t16464: 0x6349,\n\t16465: 0x62D9,\n\t16466: 0x5353,\n\t16467: 0x684C,\n\t16468: 0x7422,\n\t16469: 0x8301,\n\t16470: 0x914C,\n\t16471: 0x5544,\n\t16472: 0x7740,\n\t16473: 0x707C,\n\t16474: 0x6D4A,\n\t16475: 0x5179,\n\t16476: 0x54A8,\n\t16477: 0x8D44,\n\t16478: 0x59FF,\n\t16479: 0x6ECB,\n\t16480: 0x6DC4,\n\t16481: 0x5B5C,\n\t16482: 0x7D2B,\n\t16483: 0x4ED4,\n\t16484: 0x7C7D,\n\t16485: 0x6ED3,\n\t16486: 0x5B50,\n\t16487: 0x81EA,\n\t16488: 0x6E0D,\n\t16489: 0x5B57,\n\t16490: 0x9B03,\n\t16491: 0x68D5,\n\t16492: 0x8E2A,\n\t16493: 0x5B97,\n\t16494: 0x7EFC,\n\t16495: 0x603B,\n\t16496: 0x7EB5,\n\t16497: 0x90B9,\n\t16498: 0x8D70,\n\t16499: 0x594F,\n\t16500: 0x63CD,\n\t16501: 0x79DF,\n\t16502: 0x8DB3,\n\t16503: 0x5352,\n\t16504: 0x65CF,\n\t16505: 0x7956,\n\t16506: 0x8BC5,\n\t16507: 0x963B,\n\t16508: 0x7EC4,\n\t16509: 0x94BB,\n\t16510: 0x7E82,\n\t16511: 0x5634,\n\t16512: 0x9189,\n\t16513: 0x6700,\n\t16514: 0x7F6A,\n\t16515: 0x5C0A,\n\t16516: 0x9075,\n\t16517: 0x6628,\n\t16518: 0x5DE6,\n\t16519: 0x4F50,\n\t16520: 0x67DE,\n\t16521: 0x505A,\n\t16522: 0x4F5C,\n\t16523: 0x5750,\n\t16524: 0x5EA7,\n\t16530: 0x8C38,\n\t16531: 0x8C39,\n\t16532: 0x8C3A,\n\t16533: 0x8C3B,\n\t16534: 0x8C3C,\n\t16535: 0x8C3D,\n\t16536: 0x8C3E,\n\t16537: 0x8C3F,\n\t16538: 0x8C40,\n\t16539: 0x8C42,\n\t16540: 0x8C43,\n\t16541: 0x8C44,\n\t16542: 0x8C45,\n\t16543: 0x8C48,\n\t16544: 0x8C4A,\n\t16545: 0x8C4B,\n\t16546: 0x8C4D,\n\t16547: 0x8C4E,\n\t16548: 0x8C4F,\n\t16549: 0x8C50,\n\t16550: 0x8C51,\n\t16551: 0x8C52,\n\t16552: 0x8C53,\n\t16553: 0x8C54,\n\t16554: 0x8C56,\n\t16555: 0x8C57,\n\t16556: 0x8C58,\n\t16557: 0x8C59,\n\t16558: 0x8C5B,\n\t16559: 0x8C5C,\n\t16560: 0x8C5D,\n\t16561: 0x8C5E,\n\t16562: 0x8C5F,\n\t16563: 0x8C60,\n\t16564: 0x8C63,\n\t16565: 0x8C64,\n\t16566: 0x8C65,\n\t16567: 0x8C66,\n\t16568: 0x8C67,\n\t16569: 0x8C68,\n\t16570: 0x8C69,\n\t16571: 0x8C6C,\n\t16572: 0x8C6D,\n\t16573: 0x8C6E,\n\t16574: 0x8C6F,\n\t16575: 0x8C70,\n\t16576: 0x8C71,\n\t16577: 0x8C72,\n\t16578: 0x8C74,\n\t16579: 0x8C75,\n\t16580: 0x8C76,\n\t16581: 0x8C77,\n\t16582: 0x8C7B,\n\t16583: 0x8C7C,\n\t16584: 0x8C7D,\n\t16585: 0x8C7E,\n\t16586: 0x8C7F,\n\t16587: 0x8C80,\n\t16588: 0x8C81,\n\t16589: 0x8C83,\n\t16590: 0x8C84,\n\t16591: 0x8C86,\n\t16592: 0x8C87,\n\t16593: 0x8C88,\n\t16594: 0x8C8B,\n\t16595: 0x8C8D,\n\t16596: 0x8C8E,\n\t16597: 0x8C8F,\n\t16598: 0x8C90,\n\t16599: 0x8C91,\n\t16600: 0x8C92,\n\t16601: 0x8C93,\n\t16602: 0x8C95,\n\t16603: 0x8C96,\n\t16604: 0x8C97,\n\t16605: 0x8C99,\n\t16606: 0x8C9A,\n\t16607: 0x8C9B,\n\t16608: 0x8C9C,\n\t16609: 0x8C9D,\n\t16610: 0x8C9E,\n\t16611: 0x8C9F,\n\t16612: 0x8CA0,\n\t16613: 0x8CA1,\n\t16614: 0x8CA2,\n\t16615: 0x8CA3,\n\t16616: 0x8CA4,\n\t16617: 0x8CA5,\n\t16618: 0x8CA6,\n\t16619: 0x8CA7,\n\t16620: 0x8CA8,\n\t16621: 0x8CA9,\n\t16622: 0x8CAA,\n\t16623: 0x8CAB,\n\t16624: 0x8CAC,\n\t16625: 0x8CAD,\n\t16626: 0x4E8D,\n\t16627: 0x4E0C,\n\t16628: 0x5140,\n\t16629: 0x4E10,\n\t16630: 0x5EFF,\n\t16631: 0x5345,\n\t16632: 0x4E15,\n\t16633: 0x4E98,\n\t16634: 0x4E1E,\n\t16635: 0x9B32,\n\t16636: 0x5B6C,\n\t16637: 0x5669,\n\t16638: 0x4E28,\n\t16639: 0x79BA,\n\t16640: 0x4E3F,\n\t16641: 0x5315,\n\t16642: 0x4E47,\n\t16643: 0x592D,\n\t16644: 0x723B,\n\t16645: 0x536E,\n\t16646: 0x6C10,\n\t16647: 0x56DF,\n\t16648: 0x80E4,\n\t16649: 0x9997,\n\t16650: 0x6BD3,\n\t16651: 0x777E,\n\t16652: 0x9F17,\n\t16653: 0x4E36,\n\t16654: 0x4E9F,\n\t16655: 0x9F10,\n\t16656: 0x4E5C,\n\t16657: 0x4E69,\n\t16658: 0x4E93,\n\t16659: 0x8288,\n\t16660: 0x5B5B,\n\t16661: 0x556C,\n\t16662: 0x560F,\n\t16663: 0x4EC4,\n\t16664: 0x538D,\n\t16665: 0x539D,\n\t16666: 0x53A3,\n\t16667: 0x53A5,\n\t16668: 0x53AE,\n\t16669: 0x9765,\n\t16670: 0x8D5D,\n\t16671: 0x531A,\n\t16672: 0x53F5,\n\t16673: 0x5326,\n\t16674: 0x532E,\n\t16675: 0x533E,\n\t16676: 0x8D5C,\n\t16677: 0x5366,\n\t16678: 0x5363,\n\t16679: 0x5202,\n\t16680: 0x5208,\n\t16681: 0x520E,\n\t16682: 0x522D,\n\t16683: 0x5233,\n\t16684: 0x523F,\n\t16685: 0x5240,\n\t16686: 0x524C,\n\t16687: 0x525E,\n\t16688: 0x5261,\n\t16689: 0x525C,\n\t16690: 0x84AF,\n\t16691: 0x527D,\n\t16692: 0x5282,\n\t16693: 0x5281,\n\t16694: 0x5290,\n\t16695: 0x5293,\n\t16696: 0x5182,\n\t16697: 0x7F54,\n\t16698: 0x4EBB,\n\t16699: 0x4EC3,\n\t16700: 0x4EC9,\n\t16701: 0x4EC2,\n\t16702: 0x4EE8,\n\t16703: 0x4EE1,\n\t16704: 0x4EEB,\n\t16705: 0x4EDE,\n\t16706: 0x4F1B,\n\t16707: 0x4EF3,\n\t16708: 0x4F22,\n\t16709: 0x4F64,\n\t16710: 0x4EF5,\n\t16711: 0x4F25,\n\t16712: 0x4F27,\n\t16713: 0x4F09,\n\t16714: 0x4F2B,\n\t16715: 0x4F5E,\n\t16716: 0x4F67,\n\t16717: 0x6538,\n\t16718: 0x4F5A,\n\t16719: 0x4F5D,\n\t16720: 0x8CAE,\n\t16721: 0x8CAF,\n\t16722: 0x8CB0,\n\t16723: 0x8CB1,\n\t16724: 0x8CB2,\n\t16725: 0x8CB3,\n\t16726: 0x8CB4,\n\t16727: 0x8CB5,\n\t16728: 0x8CB6,\n\t16729: 0x8CB7,\n\t16730: 0x8CB8,\n\t16731: 0x8CB9,\n\t16732: 0x8CBA,\n\t16733: 0x8CBB,\n\t16734: 0x8CBC,\n\t16735: 0x8CBD,\n\t16736: 0x8CBE,\n\t16737: 0x8CBF,\n\t16738: 0x8CC0,\n\t16739: 0x8CC1,\n\t16740: 0x8CC2,\n\t16741: 0x8CC3,\n\t16742: 0x8CC4,\n\t16743: 0x8CC5,\n\t16744: 0x8CC6,\n\t16745: 0x8CC7,\n\t16746: 0x8CC8,\n\t16747: 0x8CC9,\n\t16748: 0x8CCA,\n\t16749: 0x8CCB,\n\t16750: 0x8CCC,\n\t16751: 0x8CCD,\n\t16752: 0x8CCE,\n\t16753: 0x8CCF,\n\t16754: 0x8CD0,\n\t16755: 0x8CD1,\n\t16756: 0x8CD2,\n\t16757: 0x8CD3,\n\t16758: 0x8CD4,\n\t16759: 0x8CD5,\n\t16760: 0x8CD6,\n\t16761: 0x8CD7,\n\t16762: 0x8CD8,\n\t16763: 0x8CD9,\n\t16764: 0x8CDA,\n\t16765: 0x8CDB,\n\t16766: 0x8CDC,\n\t16767: 0x8CDD,\n\t16768: 0x8CDE,\n\t16769: 0x8CDF,\n\t16770: 0x8CE0,\n\t16771: 0x8CE1,\n\t16772: 0x8CE2,\n\t16773: 0x8CE3,\n\t16774: 0x8CE4,\n\t16775: 0x8CE5,\n\t16776: 0x8CE6,\n\t16777: 0x8CE7,\n\t16778: 0x8CE8,\n\t16779: 0x8CE9,\n\t16780: 0x8CEA,\n\t16781: 0x8CEB,\n\t16782: 0x8CEC,\n\t16783: 0x8CED,\n\t16784: 0x8CEE,\n\t16785: 0x8CEF,\n\t16786: 0x8CF0,\n\t16787: 0x8CF1,\n\t16788: 0x8CF2,\n\t16789: 0x8CF3,\n\t16790: 0x8CF4,\n\t16791: 0x8CF5,\n\t16792: 0x8CF6,\n\t16793: 0x8CF7,\n\t16794: 0x8CF8,\n\t16795: 0x8CF9,\n\t16796: 0x8CFA,\n\t16797: 0x8CFB,\n\t16798: 0x8CFC,\n\t16799: 0x8CFD,\n\t16800: 0x8CFE,\n\t16801: 0x8CFF,\n\t16802: 0x8D00,\n\t16803: 0x8D01,\n\t16804: 0x8D02,\n\t16805: 0x8D03,\n\t16806: 0x8D04,\n\t16807: 0x8D05,\n\t16808: 0x8D06,\n\t16809: 0x8D07,\n\t16810: 0x8D08,\n\t16811: 0x8D09,\n\t16812: 0x8D0A,\n\t16813: 0x8D0B,\n\t16814: 0x8D0C,\n\t16815: 0x8D0D,\n\t16816: 0x4F5F,\n\t16817: 0x4F57,\n\t16818: 0x4F32,\n\t16819: 0x4F3D,\n\t16820: 0x4F76,\n\t16821: 0x4F74,\n\t16822: 0x4F91,\n\t16823: 0x4F89,\n\t16824: 0x4F83,\n\t16825: 0x4F8F,\n\t16826: 0x4F7E,\n\t16827: 0x4F7B,\n\t16828: 0x4FAA,\n\t16829: 0x4F7C,\n\t16830: 0x4FAC,\n\t16831: 0x4F94,\n\t16832: 0x4FE6,\n\t16833: 0x4FE8,\n\t16834: 0x4FEA,\n\t16835: 0x4FC5,\n\t16836: 0x4FDA,\n\t16837: 0x4FE3,\n\t16838: 0x4FDC,\n\t16839: 0x4FD1,\n\t16840: 0x4FDF,\n\t16841: 0x4FF8,\n\t16842: 0x5029,\n\t16843: 0x504C,\n\t16844: 0x4FF3,\n\t16845: 0x502C,\n\t16846: 0x500F,\n\t16847: 0x502E,\n\t16848: 0x502D,\n\t16849: 0x4FFE,\n\t16850: 0x501C,\n\t16851: 0x500C,\n\t16852: 0x5025,\n\t16853: 0x5028,\n\t16854: 0x507E,\n\t16855: 0x5043,\n\t16856: 0x5055,\n\t16857: 0x5048,\n\t16858: 0x504E,\n\t16859: 0x506C,\n\t16860: 0x507B,\n\t16861: 0x50A5,\n\t16862: 0x50A7,\n\t16863: 0x50A9,\n\t16864: 0x50BA,\n\t16865: 0x50D6,\n\t16866: 0x5106,\n\t16867: 0x50ED,\n\t16868: 0x50EC,\n\t16869: 0x50E6,\n\t16870: 0x50EE,\n\t16871: 0x5107,\n\t16872: 0x510B,\n\t16873: 0x4EDD,\n\t16874: 0x6C3D,\n\t16875: 0x4F58,\n\t16876: 0x4F65,\n\t16877: 0x4FCE,\n\t16878: 0x9FA0,\n\t16879: 0x6C46,\n\t16880: 0x7C74,\n\t16881: 0x516E,\n\t16882: 0x5DFD,\n\t16883: 0x9EC9,\n\t16884: 0x9998,\n\t16885: 0x5181,\n\t16886: 0x5914,\n\t16887: 0x52F9,\n\t16888: 0x530D,\n\t16889: 0x8A07,\n\t16890: 0x5310,\n\t16891: 0x51EB,\n\t16892: 0x5919,\n\t16893: 0x5155,\n\t16894: 0x4EA0,\n\t16895: 0x5156,\n\t16896: 0x4EB3,\n\t16897: 0x886E,\n\t16898: 0x88A4,\n\t16899: 0x4EB5,\n\t16900: 0x8114,\n\t16901: 0x88D2,\n\t16902: 0x7980,\n\t16903: 0x5B34,\n\t16904: 0x8803,\n\t16905: 0x7FB8,\n\t16906: 0x51AB,\n\t16907: 0x51B1,\n\t16908: 0x51BD,\n\t16909: 0x51BC,\n\t16910: 0x8D0E,\n\t16911: 0x8D0F,\n\t16912: 0x8D10,\n\t16913: 0x8D11,\n\t16914: 0x8D12,\n\t16915: 0x8D13,\n\t16916: 0x8D14,\n\t16917: 0x8D15,\n\t16918: 0x8D16,\n\t16919: 0x8D17,\n\t16920: 0x8D18,\n\t16921: 0x8D19,\n\t16922: 0x8D1A,\n\t16923: 0x8D1B,\n\t16924: 0x8D1C,\n\t16925: 0x8D20,\n\t16926: 0x8D51,\n\t16927: 0x8D52,\n\t16928: 0x8D57,\n\t16929: 0x8D5F,\n\t16930: 0x8D65,\n\t16931: 0x8D68,\n\t16932: 0x8D69,\n\t16933: 0x8D6A,\n\t16934: 0x8D6C,\n\t16935: 0x8D6E,\n\t16936: 0x8D6F,\n\t16937: 0x8D71,\n\t16938: 0x8D72,\n\t16939: 0x8D78,\n\t16940: 0x8D79,\n\t16941: 0x8D7A,\n\t16942: 0x8D7B,\n\t16943: 0x8D7C,\n\t16944: 0x8D7D,\n\t16945: 0x8D7E,\n\t16946: 0x8D7F,\n\t16947: 0x8D80,\n\t16948: 0x8D82,\n\t16949: 0x8D83,\n\t16950: 0x8D86,\n\t16951: 0x8D87,\n\t16952: 0x8D88,\n\t16953: 0x8D89,\n\t16954: 0x8D8C,\n\t16955: 0x8D8D,\n\t16956: 0x8D8E,\n\t16957: 0x8D8F,\n\t16958: 0x8D90,\n\t16959: 0x8D92,\n\t16960: 0x8D93,\n\t16961: 0x8D95,\n\t16962: 0x8D96,\n\t16963: 0x8D97,\n\t16964: 0x8D98,\n\t16965: 0x8D99,\n\t16966: 0x8D9A,\n\t16967: 0x8D9B,\n\t16968: 0x8D9C,\n\t16969: 0x8D9D,\n\t16970: 0x8D9E,\n\t16971: 0x8DA0,\n\t16972: 0x8DA1,\n\t16973: 0x8DA2,\n\t16974: 0x8DA4,\n\t16975: 0x8DA5,\n\t16976: 0x8DA6,\n\t16977: 0x8DA7,\n\t16978: 0x8DA8,\n\t16979: 0x8DA9,\n\t16980: 0x8DAA,\n\t16981: 0x8DAB,\n\t16982: 0x8DAC,\n\t16983: 0x8DAD,\n\t16984: 0x8DAE,\n\t16985: 0x8DAF,\n\t16986: 0x8DB0,\n\t16987: 0x8DB2,\n\t16988: 0x8DB6,\n\t16989: 0x8DB7,\n\t16990: 0x8DB9,\n\t16991: 0x8DBB,\n\t16992: 0x8DBD,\n\t16993: 0x8DC0,\n\t16994: 0x8DC1,\n\t16995: 0x8DC2,\n\t16996: 0x8DC5,\n\t16997: 0x8DC7,\n\t16998: 0x8DC8,\n\t16999: 0x8DC9,\n\t17000: 0x8DCA,\n\t17001: 0x8DCD,\n\t17002: 0x8DD0,\n\t17003: 0x8DD2,\n\t17004: 0x8DD3,\n\t17005: 0x8DD4,\n\t17006: 0x51C7,\n\t17007: 0x5196,\n\t17008: 0x51A2,\n\t17009: 0x51A5,\n\t17010: 0x8BA0,\n\t17011: 0x8BA6,\n\t17012: 0x8BA7,\n\t17013: 0x8BAA,\n\t17014: 0x8BB4,\n\t17015: 0x8BB5,\n\t17016: 0x8BB7,\n\t17017: 0x8BC2,\n\t17018: 0x8BC3,\n\t17019: 0x8BCB,\n\t17020: 0x8BCF,\n\t17021: 0x8BCE,\n\t17022: 0x8BD2,\n\t17023: 0x8BD3,\n\t17024: 0x8BD4,\n\t17025: 0x8BD6,\n\t17026: 0x8BD8,\n\t17027: 0x8BD9,\n\t17028: 0x8BDC,\n\t17029: 0x8BDF,\n\t17030: 0x8BE0,\n\t17031: 0x8BE4,\n\t17032: 0x8BE8,\n\t17033: 0x8BE9,\n\t17034: 0x8BEE,\n\t17035: 0x8BF0,\n\t17036: 0x8BF3,\n\t17037: 0x8BF6,\n\t17038: 0x8BF9,\n\t17039: 0x8BFC,\n\t17040: 0x8BFF,\n\t17041: 0x8C00,\n\t17042: 0x8C02,\n\t17043: 0x8C04,\n\t17044: 0x8C07,\n\t17045: 0x8C0C,\n\t17046: 0x8C0F,\n\t17047: 0x8C11,\n\t17048: 0x8C12,\n\t17049: 0x8C14,\n\t17050: 0x8C15,\n\t17051: 0x8C16,\n\t17052: 0x8C19,\n\t17053: 0x8C1B,\n\t17054: 0x8C18,\n\t17055: 0x8C1D,\n\t17056: 0x8C1F,\n\t17057: 0x8C20,\n\t17058: 0x8C21,\n\t17059: 0x8C25,\n\t17060: 0x8C27,\n\t17061: 0x8C2A,\n\t17062: 0x8C2B,\n\t17063: 0x8C2E,\n\t17064: 0x8C2F,\n\t17065: 0x8C32,\n\t17066: 0x8C33,\n\t17067: 0x8C35,\n\t17068: 0x8C36,\n\t17069: 0x5369,\n\t17070: 0x537A,\n\t17071: 0x961D,\n\t17072: 0x9622,\n\t17073: 0x9621,\n\t17074: 0x9631,\n\t17075: 0x962A,\n\t17076: 0x963D,\n\t17077: 0x963C,\n\t17078: 0x9642,\n\t17079: 0x9649,\n\t17080: 0x9654,\n\t17081: 0x965F,\n\t17082: 0x9667,\n\t17083: 0x966C,\n\t17084: 0x9672,\n\t17085: 0x9674,\n\t17086: 0x9688,\n\t17087: 0x968D,\n\t17088: 0x9697,\n\t17089: 0x96B0,\n\t17090: 0x9097,\n\t17091: 0x909B,\n\t17092: 0x909D,\n\t17093: 0x9099,\n\t17094: 0x90AC,\n\t17095: 0x90A1,\n\t17096: 0x90B4,\n\t17097: 0x90B3,\n\t17098: 0x90B6,\n\t17099: 0x90BA,\n\t17100: 0x8DD5,\n\t17101: 0x8DD8,\n\t17102: 0x8DD9,\n\t17103: 0x8DDC,\n\t17104: 0x8DE0,\n\t17105: 0x8DE1,\n\t17106: 0x8DE2,\n\t17107: 0x8DE5,\n\t17108: 0x8DE6,\n\t17109: 0x8DE7,\n\t17110: 0x8DE9,\n\t17111: 0x8DED,\n\t17112: 0x8DEE,\n\t17113: 0x8DF0,\n\t17114: 0x8DF1,\n\t17115: 0x8DF2,\n\t17116: 0x8DF4,\n\t17117: 0x8DF6,\n\t17118: 0x8DFC,\n\t17119: 0x8DFE,\n\t17120: 0x8DFF,\n\t17121: 0x8E00,\n\t17122: 0x8E01,\n\t17123: 0x8E02,\n\t17124: 0x8E03,\n\t17125: 0x8E04,\n\t17126: 0x8E06,\n\t17127: 0x8E07,\n\t17128: 0x8E08,\n\t17129: 0x8E0B,\n\t17130: 0x8E0D,\n\t17131: 0x8E0E,\n\t17132: 0x8E10,\n\t17133: 0x8E11,\n\t17134: 0x8E12,\n\t17135: 0x8E13,\n\t17136: 0x8E15,\n\t17137: 0x8E16,\n\t17138: 0x8E17,\n\t17139: 0x8E18,\n\t17140: 0x8E19,\n\t17141: 0x8E1A,\n\t17142: 0x8E1B,\n\t17143: 0x8E1C,\n\t17144: 0x8E20,\n\t17145: 0x8E21,\n\t17146: 0x8E24,\n\t17147: 0x8E25,\n\t17148: 0x8E26,\n\t17149: 0x8E27,\n\t17150: 0x8E28,\n\t17151: 0x8E2B,\n\t17152: 0x8E2D,\n\t17153: 0x8E30,\n\t17154: 0x8E32,\n\t17155: 0x8E33,\n\t17156: 0x8E34,\n\t17157: 0x8E36,\n\t17158: 0x8E37,\n\t17159: 0x8E38,\n\t17160: 0x8E3B,\n\t17161: 0x8E3C,\n\t17162: 0x8E3E,\n\t17163: 0x8E3F,\n\t17164: 0x8E43,\n\t17165: 0x8E45,\n\t17166: 0x8E46,\n\t17167: 0x8E4C,\n\t17168: 0x8E4D,\n\t17169: 0x8E4E,\n\t17170: 0x8E4F,\n\t17171: 0x8E50,\n\t17172: 0x8E53,\n\t17173: 0x8E54,\n\t17174: 0x8E55,\n\t17175: 0x8E56,\n\t17176: 0x8E57,\n\t17177: 0x8E58,\n\t17178: 0x8E5A,\n\t17179: 0x8E5B,\n\t17180: 0x8E5C,\n\t17181: 0x8E5D,\n\t17182: 0x8E5E,\n\t17183: 0x8E5F,\n\t17184: 0x8E60,\n\t17185: 0x8E61,\n\t17186: 0x8E62,\n\t17187: 0x8E63,\n\t17188: 0x8E64,\n\t17189: 0x8E65,\n\t17190: 0x8E67,\n\t17191: 0x8E68,\n\t17192: 0x8E6A,\n\t17193: 0x8E6B,\n\t17194: 0x8E6E,\n\t17195: 0x8E71,\n\t17196: 0x90B8,\n\t17197: 0x90B0,\n\t17198: 0x90CF,\n\t17199: 0x90C5,\n\t17200: 0x90BE,\n\t17201: 0x90D0,\n\t17202: 0x90C4,\n\t17203: 0x90C7,\n\t17204: 0x90D3,\n\t17205: 0x90E6,\n\t17206: 0x90E2,\n\t17207: 0x90DC,\n\t17208: 0x90D7,\n\t17209: 0x90DB,\n\t17210: 0x90EB,\n\t17211: 0x90EF,\n\t17212: 0x90FE,\n\t17213: 0x9104,\n\t17214: 0x9122,\n\t17215: 0x911E,\n\t17216: 0x9123,\n\t17217: 0x9131,\n\t17218: 0x912F,\n\t17219: 0x9139,\n\t17220: 0x9143,\n\t17221: 0x9146,\n\t17222: 0x520D,\n\t17223: 0x5942,\n\t17224: 0x52A2,\n\t17225: 0x52AC,\n\t17226: 0x52AD,\n\t17227: 0x52BE,\n\t17228: 0x54FF,\n\t17229: 0x52D0,\n\t17230: 0x52D6,\n\t17231: 0x52F0,\n\t17232: 0x53DF,\n\t17233: 0x71EE,\n\t17234: 0x77CD,\n\t17235: 0x5EF4,\n\t17236: 0x51F5,\n\t17237: 0x51FC,\n\t17238: 0x9B2F,\n\t17239: 0x53B6,\n\t17240: 0x5F01,\n\t17241: 0x755A,\n\t17242: 0x5DEF,\n\t17243: 0x574C,\n\t17244: 0x57A9,\n\t17245: 0x57A1,\n\t17246: 0x587E,\n\t17247: 0x58BC,\n\t17248: 0x58C5,\n\t17249: 0x58D1,\n\t17250: 0x5729,\n\t17251: 0x572C,\n\t17252: 0x572A,\n\t17253: 0x5733,\n\t17254: 0x5739,\n\t17255: 0x572E,\n\t17256: 0x572F,\n\t17257: 0x575C,\n\t17258: 0x573B,\n\t17259: 0x5742,\n\t17260: 0x5769,\n\t17261: 0x5785,\n\t17262: 0x576B,\n\t17263: 0x5786,\n\t17264: 0x577C,\n\t17265: 0x577B,\n\t17266: 0x5768,\n\t17267: 0x576D,\n\t17268: 0x5776,\n\t17269: 0x5773,\n\t17270: 0x57AD,\n\t17271: 0x57A4,\n\t17272: 0x578C,\n\t17273: 0x57B2,\n\t17274: 0x57CF,\n\t17275: 0x57A7,\n\t17276: 0x57B4,\n\t17277: 0x5793,\n\t17278: 0x57A0,\n\t17279: 0x57D5,\n\t17280: 0x57D8,\n\t17281: 0x57DA,\n\t17282: 0x57D9,\n\t17283: 0x57D2,\n\t17284: 0x57B8,\n\t17285: 0x57F4,\n\t17286: 0x57EF,\n\t17287: 0x57F8,\n\t17288: 0x57E4,\n\t17289: 0x57DD,\n\t17290: 0x8E73,\n\t17291: 0x8E75,\n\t17292: 0x8E77,\n\t17293: 0x8E78,\n\t17294: 0x8E79,\n\t17295: 0x8E7A,\n\t17296: 0x8E7B,\n\t17297: 0x8E7D,\n\t17298: 0x8E7E,\n\t17299: 0x8E80,\n\t17300: 0x8E82,\n\t17301: 0x8E83,\n\t17302: 0x8E84,\n\t17303: 0x8E86,\n\t17304: 0x8E88,\n\t17305: 0x8E89,\n\t17306: 0x8E8A,\n\t17307: 0x8E8B,\n\t17308: 0x8E8C,\n\t17309: 0x8E8D,\n\t17310: 0x8E8E,\n\t17311: 0x8E91,\n\t17312: 0x8E92,\n\t17313: 0x8E93,\n\t17314: 0x8E95,\n\t17315: 0x8E96,\n\t17316: 0x8E97,\n\t17317: 0x8E98,\n\t17318: 0x8E99,\n\t17319: 0x8E9A,\n\t17320: 0x8E9B,\n\t17321: 0x8E9D,\n\t17322: 0x8E9F,\n\t17323: 0x8EA0,\n\t17324: 0x8EA1,\n\t17325: 0x8EA2,\n\t17326: 0x8EA3,\n\t17327: 0x8EA4,\n\t17328: 0x8EA5,\n\t17329: 0x8EA6,\n\t17330: 0x8EA7,\n\t17331: 0x8EA8,\n\t17332: 0x8EA9,\n\t17333: 0x8EAA,\n\t17334: 0x8EAD,\n\t17335: 0x8EAE,\n\t17336: 0x8EB0,\n\t17337: 0x8EB1,\n\t17338: 0x8EB3,\n\t17339: 0x8EB4,\n\t17340: 0x8EB5,\n\t17341: 0x8EB6,\n\t17342: 0x8EB7,\n\t17343: 0x8EB8,\n\t17344: 0x8EB9,\n\t17345: 0x8EBB,\n\t17346: 0x8EBC,\n\t17347: 0x8EBD,\n\t17348: 0x8EBE,\n\t17349: 0x8EBF,\n\t17350: 0x8EC0,\n\t17351: 0x8EC1,\n\t17352: 0x8EC2,\n\t17353: 0x8EC3,\n\t17354: 0x8EC4,\n\t17355: 0x8EC5,\n\t17356: 0x8EC6,\n\t17357: 0x8EC7,\n\t17358: 0x8EC8,\n\t17359: 0x8EC9,\n\t17360: 0x8ECA,\n\t17361: 0x8ECB,\n\t17362: 0x8ECC,\n\t17363: 0x8ECD,\n\t17364: 0x8ECF,\n\t17365: 0x8ED0,\n\t17366: 0x8ED1,\n\t17367: 0x8ED2,\n\t17368: 0x8ED3,\n\t17369: 0x8ED4,\n\t17370: 0x8ED5,\n\t17371: 0x8ED6,\n\t17372: 0x8ED7,\n\t17373: 0x8ED8,\n\t17374: 0x8ED9,\n\t17375: 0x8EDA,\n\t17376: 0x8EDB,\n\t17377: 0x8EDC,\n\t17378: 0x8EDD,\n\t17379: 0x8EDE,\n\t17380: 0x8EDF,\n\t17381: 0x8EE0,\n\t17382: 0x8EE1,\n\t17383: 0x8EE2,\n\t17384: 0x8EE3,\n\t17385: 0x8EE4,\n\t17386: 0x580B,\n\t17387: 0x580D,\n\t17388: 0x57FD,\n\t17389: 0x57ED,\n\t17390: 0x5800,\n\t17391: 0x581E,\n\t17392: 0x5819,\n\t17393: 0x5844,\n\t17394: 0x5820,\n\t17395: 0x5865,\n\t17396: 0x586C,\n\t17397: 0x5881,\n\t17398: 0x5889,\n\t17399: 0x589A,\n\t17400: 0x5880,\n\t17401: 0x99A8,\n\t17402: 0x9F19,\n\t17403: 0x61FF,\n\t17404: 0x8279,\n\t17405: 0x827D,\n\t17406: 0x827F,\n\t17407: 0x828F,\n\t17408: 0x828A,\n\t17409: 0x82A8,\n\t17410: 0x8284,\n\t17411: 0x828E,\n\t17412: 0x8291,\n\t17413: 0x8297,\n\t17414: 0x8299,\n\t17415: 0x82AB,\n\t17416: 0x82B8,\n\t17417: 0x82BE,\n\t17418: 0x82B0,\n\t17419: 0x82C8,\n\t17420: 0x82CA,\n\t17421: 0x82E3,\n\t17422: 0x8298,\n\t17423: 0x82B7,\n\t17424: 0x82AE,\n\t17425: 0x82CB,\n\t17426: 0x82CC,\n\t17427: 0x82C1,\n\t17428: 0x82A9,\n\t17429: 0x82B4,\n\t17430: 0x82A1,\n\t17431: 0x82AA,\n\t17432: 0x829F,\n\t17433: 0x82C4,\n\t17434: 0x82CE,\n\t17435: 0x82A4,\n\t17436: 0x82E1,\n\t17437: 0x8309,\n\t17438: 0x82F7,\n\t17439: 0x82E4,\n\t17440: 0x830F,\n\t17441: 0x8307,\n\t17442: 0x82DC,\n\t17443: 0x82F4,\n\t17444: 0x82D2,\n\t17445: 0x82D8,\n\t17446: 0x830C,\n\t17447: 0x82FB,\n\t17448: 0x82D3,\n\t17449: 0x8311,\n\t17450: 0x831A,\n\t17451: 0x8306,\n\t17452: 0x8314,\n\t17453: 0x8315,\n\t17454: 0x82E0,\n\t17455: 0x82D5,\n\t17456: 0x831C,\n\t17457: 0x8351,\n\t17458: 0x835B,\n\t17459: 0x835C,\n\t17460: 0x8308,\n\t17461: 0x8392,\n\t17462: 0x833C,\n\t17463: 0x8334,\n\t17464: 0x8331,\n\t17465: 0x839B,\n\t17466: 0x835E,\n\t17467: 0x832F,\n\t17468: 0x834F,\n\t17469: 0x8347,\n\t17470: 0x8343,\n\t17471: 0x835F,\n\t17472: 0x8340,\n\t17473: 0x8317,\n\t17474: 0x8360,\n\t17475: 0x832D,\n\t17476: 0x833A,\n\t17477: 0x8333,\n\t17478: 0x8366,\n\t17479: 0x8365,\n\t17480: 0x8EE5,\n\t17481: 0x8EE6,\n\t17482: 0x8EE7,\n\t17483: 0x8EE8,\n\t17484: 0x8EE9,\n\t17485: 0x8EEA,\n\t17486: 0x8EEB,\n\t17487: 0x8EEC,\n\t17488: 0x8EED,\n\t17489: 0x8EEE,\n\t17490: 0x8EEF,\n\t17491: 0x8EF0,\n\t17492: 0x8EF1,\n\t17493: 0x8EF2,\n\t17494: 0x8EF3,\n\t17495: 0x8EF4,\n\t17496: 0x8EF5,\n\t17497: 0x8EF6,\n\t17498: 0x8EF7,\n\t17499: 0x8EF8,\n\t17500: 0x8EF9,\n\t17501: 0x8EFA,\n\t17502: 0x8EFB,\n\t17503: 0x8EFC,\n\t17504: 0x8EFD,\n\t17505: 0x8EFE,\n\t17506: 0x8EFF,\n\t17507: 0x8F00,\n\t17508: 0x8F01,\n\t17509: 0x8F02,\n\t17510: 0x8F03,\n\t17511: 0x8F04,\n\t17512: 0x8F05,\n\t17513: 0x8F06,\n\t17514: 0x8F07,\n\t17515: 0x8F08,\n\t17516: 0x8F09,\n\t17517: 0x8F0A,\n\t17518: 0x8F0B,\n\t17519: 0x8F0C,\n\t17520: 0x8F0D,\n\t17521: 0x8F0E,\n\t17522: 0x8F0F,\n\t17523: 0x8F10,\n\t17524: 0x8F11,\n\t17525: 0x8F12,\n\t17526: 0x8F13,\n\t17527: 0x8F14,\n\t17528: 0x8F15,\n\t17529: 0x8F16,\n\t17530: 0x8F17,\n\t17531: 0x8F18,\n\t17532: 0x8F19,\n\t17533: 0x8F1A,\n\t17534: 0x8F1B,\n\t17535: 0x8F1C,\n\t17536: 0x8F1D,\n\t17537: 0x8F1E,\n\t17538: 0x8F1F,\n\t17539: 0x8F20,\n\t17540: 0x8F21,\n\t17541: 0x8F22,\n\t17542: 0x8F23,\n\t17543: 0x8F24,\n\t17544: 0x8F25,\n\t17545: 0x8F26,\n\t17546: 0x8F27,\n\t17547: 0x8F28,\n\t17548: 0x8F29,\n\t17549: 0x8F2A,\n\t17550: 0x8F2B,\n\t17551: 0x8F2C,\n\t17552: 0x8F2D,\n\t17553: 0x8F2E,\n\t17554: 0x8F2F,\n\t17555: 0x8F30,\n\t17556: 0x8F31,\n\t17557: 0x8F32,\n\t17558: 0x8F33,\n\t17559: 0x8F34,\n\t17560: 0x8F35,\n\t17561: 0x8F36,\n\t17562: 0x8F37,\n\t17563: 0x8F38,\n\t17564: 0x8F39,\n\t17565: 0x8F3A,\n\t17566: 0x8F3B,\n\t17567: 0x8F3C,\n\t17568: 0x8F3D,\n\t17569: 0x8F3E,\n\t17570: 0x8F3F,\n\t17571: 0x8F40,\n\t17572: 0x8F41,\n\t17573: 0x8F42,\n\t17574: 0x8F43,\n\t17575: 0x8F44,\n\t17576: 0x8368,\n\t17577: 0x831B,\n\t17578: 0x8369,\n\t17579: 0x836C,\n\t17580: 0x836A,\n\t17581: 0x836D,\n\t17582: 0x836E,\n\t17583: 0x83B0,\n\t17584: 0x8378,\n\t17585: 0x83B3,\n\t17586: 0x83B4,\n\t17587: 0x83A0,\n\t17588: 0x83AA,\n\t17589: 0x8393,\n\t17590: 0x839C,\n\t17591: 0x8385,\n\t17592: 0x837C,\n\t17593: 0x83B6,\n\t17594: 0x83A9,\n\t17595: 0x837D,\n\t17596: 0x83B8,\n\t17597: 0x837B,\n\t17598: 0x8398,\n\t17599: 0x839E,\n\t17600: 0x83A8,\n\t17601: 0x83BA,\n\t17602: 0x83BC,\n\t17603: 0x83C1,\n\t17604: 0x8401,\n\t17605: 0x83E5,\n\t17606: 0x83D8,\n\t17607: 0x5807,\n\t17608: 0x8418,\n\t17609: 0x840B,\n\t17610: 0x83DD,\n\t17611: 0x83FD,\n\t17612: 0x83D6,\n\t17613: 0x841C,\n\t17614: 0x8438,\n\t17615: 0x8411,\n\t17616: 0x8406,\n\t17617: 0x83D4,\n\t17618: 0x83DF,\n\t17619: 0x840F,\n\t17620: 0x8403,\n\t17621: 0x83F8,\n\t17622: 0x83F9,\n\t17623: 0x83EA,\n\t17624: 0x83C5,\n\t17625: 0x83C0,\n\t17626: 0x8426,\n\t17627: 0x83F0,\n\t17628: 0x83E1,\n\t17629: 0x845C,\n\t17630: 0x8451,\n\t17631: 0x845A,\n\t17632: 0x8459,\n\t17633: 0x8473,\n\t17634: 0x8487,\n\t17635: 0x8488,\n\t17636: 0x847A,\n\t17637: 0x8489,\n\t17638: 0x8478,\n\t17639: 0x843C,\n\t17640: 0x8446,\n\t17641: 0x8469,\n\t17642: 0x8476,\n\t17643: 0x848C,\n\t17644: 0x848E,\n\t17645: 0x8431,\n\t17646: 0x846D,\n\t17647: 0x84C1,\n\t17648: 0x84CD,\n\t17649: 0x84D0,\n\t17650: 0x84E6,\n\t17651: 0x84BD,\n\t17652: 0x84D3,\n\t17653: 0x84CA,\n\t17654: 0x84BF,\n\t17655: 0x84BA,\n\t17656: 0x84E0,\n\t17657: 0x84A1,\n\t17658: 0x84B9,\n\t17659: 0x84B4,\n\t17660: 0x8497,\n\t17661: 0x84E5,\n\t17662: 0x84E3,\n\t17663: 0x850C,\n\t17664: 0x750D,\n\t17665: 0x8538,\n\t17666: 0x84F0,\n\t17667: 0x8539,\n\t17668: 0x851F,\n\t17669: 0x853A,\n\t17670: 0x8F45,\n\t17671: 0x8F46,\n\t17672: 0x8F47,\n\t17673: 0x8F48,\n\t17674: 0x8F49,\n\t17675: 0x8F4A,\n\t17676: 0x8F4B,\n\t17677: 0x8F4C,\n\t17678: 0x8F4D,\n\t17679: 0x8F4E,\n\t17680: 0x8F4F,\n\t17681: 0x8F50,\n\t17682: 0x8F51,\n\t17683: 0x8F52,\n\t17684: 0x8F53,\n\t17685: 0x8F54,\n\t17686: 0x8F55,\n\t17687: 0x8F56,\n\t17688: 0x8F57,\n\t17689: 0x8F58,\n\t17690: 0x8F59,\n\t17691: 0x8F5A,\n\t17692: 0x8F5B,\n\t17693: 0x8F5C,\n\t17694: 0x8F5D,\n\t17695: 0x8F5E,\n\t17696: 0x8F5F,\n\t17697: 0x8F60,\n\t17698: 0x8F61,\n\t17699: 0x8F62,\n\t17700: 0x8F63,\n\t17701: 0x8F64,\n\t17702: 0x8F65,\n\t17703: 0x8F6A,\n\t17704: 0x8F80,\n\t17705: 0x8F8C,\n\t17706: 0x8F92,\n\t17707: 0x8F9D,\n\t17708: 0x8FA0,\n\t17709: 0x8FA1,\n\t17710: 0x8FA2,\n\t17711: 0x8FA4,\n\t17712: 0x8FA5,\n\t17713: 0x8FA6,\n\t17714: 0x8FA7,\n\t17715: 0x8FAA,\n\t17716: 0x8FAC,\n\t17717: 0x8FAD,\n\t17718: 0x8FAE,\n\t17719: 0x8FAF,\n\t17720: 0x8FB2,\n\t17721: 0x8FB3,\n\t17722: 0x8FB4,\n\t17723: 0x8FB5,\n\t17724: 0x8FB7,\n\t17725: 0x8FB8,\n\t17726: 0x8FBA,\n\t17727: 0x8FBB,\n\t17728: 0x8FBC,\n\t17729: 0x8FBF,\n\t17730: 0x8FC0,\n\t17731: 0x8FC3,\n\t17732: 0x8FC6,\n\t17733: 0x8FC9,\n\t17734: 0x8FCA,\n\t17735: 0x8FCB,\n\t17736: 0x8FCC,\n\t17737: 0x8FCD,\n\t17738: 0x8FCF,\n\t17739: 0x8FD2,\n\t17740: 0x8FD6,\n\t17741: 0x8FD7,\n\t17742: 0x8FDA,\n\t17743: 0x8FE0,\n\t17744: 0x8FE1,\n\t17745: 0x8FE3,\n\t17746: 0x8FE7,\n\t17747: 0x8FEC,\n\t17748: 0x8FEF,\n\t17749: 0x8FF1,\n\t17750: 0x8FF2,\n\t17751: 0x8FF4,\n\t17752: 0x8FF5,\n\t17753: 0x8FF6,\n\t17754: 0x8FFA,\n\t17755: 0x8FFB,\n\t17756: 0x8FFC,\n\t17757: 0x8FFE,\n\t17758: 0x8FFF,\n\t17759: 0x9007,\n\t17760: 0x9008,\n\t17761: 0x900C,\n\t17762: 0x900E,\n\t17763: 0x9013,\n\t17764: 0x9015,\n\t17765: 0x9018,\n\t17766: 0x8556,\n\t17767: 0x853B,\n\t17768: 0x84FF,\n\t17769: 0x84FC,\n\t17770: 0x8559,\n\t17771: 0x8548,\n\t17772: 0x8568,\n\t17773: 0x8564,\n\t17774: 0x855E,\n\t17775: 0x857A,\n\t17776: 0x77A2,\n\t17777: 0x8543,\n\t17778: 0x8572,\n\t17779: 0x857B,\n\t17780: 0x85A4,\n\t17781: 0x85A8,\n\t17782: 0x8587,\n\t17783: 0x858F,\n\t17784: 0x8579,\n\t17785: 0x85AE,\n\t17786: 0x859C,\n\t17787: 0x8585,\n\t17788: 0x85B9,\n\t17789: 0x85B7,\n\t17790: 0x85B0,\n\t17791: 0x85D3,\n\t17792: 0x85C1,\n\t17793: 0x85DC,\n\t17794: 0x85FF,\n\t17795: 0x8627,\n\t17796: 0x8605,\n\t17797: 0x8629,\n\t17798: 0x8616,\n\t17799: 0x863C,\n\t17800: 0x5EFE,\n\t17801: 0x5F08,\n\t17802: 0x593C,\n\t17803: 0x5941,\n\t17804: 0x8037,\n\t17805: 0x5955,\n\t17806: 0x595A,\n\t17807: 0x5958,\n\t17808: 0x530F,\n\t17809: 0x5C22,\n\t17810: 0x5C25,\n\t17811: 0x5C2C,\n\t17812: 0x5C34,\n\t17813: 0x624C,\n\t17814: 0x626A,\n\t17815: 0x629F,\n\t17816: 0x62BB,\n\t17817: 0x62CA,\n\t17818: 0x62DA,\n\t17819: 0x62D7,\n\t17820: 0x62EE,\n\t17821: 0x6322,\n\t17822: 0x62F6,\n\t17823: 0x6339,\n\t17824: 0x634B,\n\t17825: 0x6343,\n\t17826: 0x63AD,\n\t17827: 0x63F6,\n\t17828: 0x6371,\n\t17829: 0x637A,\n\t17830: 0x638E,\n\t17831: 0x63B4,\n\t17832: 0x636D,\n\t17833: 0x63AC,\n\t17834: 0x638A,\n\t17835: 0x6369,\n\t17836: 0x63AE,\n\t17837: 0x63BC,\n\t17838: 0x63F2,\n\t17839: 0x63F8,\n\t17840: 0x63E0,\n\t17841: 0x63FF,\n\t17842: 0x63C4,\n\t17843: 0x63DE,\n\t17844: 0x63CE,\n\t17845: 0x6452,\n\t17846: 0x63C6,\n\t17847: 0x63BE,\n\t17848: 0x6445,\n\t17849: 0x6441,\n\t17850: 0x640B,\n\t17851: 0x641B,\n\t17852: 0x6420,\n\t17853: 0x640C,\n\t17854: 0x6426,\n\t17855: 0x6421,\n\t17856: 0x645E,\n\t17857: 0x6484,\n\t17858: 0x646D,\n\t17859: 0x6496,\n\t17860: 0x9019,\n\t17861: 0x901C,\n\t17862: 0x9023,\n\t17863: 0x9024,\n\t17864: 0x9025,\n\t17865: 0x9027,\n\t17866: 0x9028,\n\t17867: 0x9029,\n\t17868: 0x902A,\n\t17869: 0x902B,\n\t17870: 0x902C,\n\t17871: 0x9030,\n\t17872: 0x9031,\n\t17873: 0x9032,\n\t17874: 0x9033,\n\t17875: 0x9034,\n\t17876: 0x9037,\n\t17877: 0x9039,\n\t17878: 0x903A,\n\t17879: 0x903D,\n\t17880: 0x903F,\n\t17881: 0x9040,\n\t17882: 0x9043,\n\t17883: 0x9045,\n\t17884: 0x9046,\n\t17885: 0x9048,\n\t17886: 0x9049,\n\t17887: 0x904A,\n\t17888: 0x904B,\n\t17889: 0x904C,\n\t17890: 0x904E,\n\t17891: 0x9054,\n\t17892: 0x9055,\n\t17893: 0x9056,\n\t17894: 0x9059,\n\t17895: 0x905A,\n\t17896: 0x905C,\n\t17897: 0x905D,\n\t17898: 0x905E,\n\t17899: 0x905F,\n\t17900: 0x9060,\n\t17901: 0x9061,\n\t17902: 0x9064,\n\t17903: 0x9066,\n\t17904: 0x9067,\n\t17905: 0x9069,\n\t17906: 0x906A,\n\t17907: 0x906B,\n\t17908: 0x906C,\n\t17909: 0x906F,\n\t17910: 0x9070,\n\t17911: 0x9071,\n\t17912: 0x9072,\n\t17913: 0x9073,\n\t17914: 0x9076,\n\t17915: 0x9077,\n\t17916: 0x9078,\n\t17917: 0x9079,\n\t17918: 0x907A,\n\t17919: 0x907B,\n\t17920: 0x907C,\n\t17921: 0x907E,\n\t17922: 0x9081,\n\t17923: 0x9084,\n\t17924: 0x9085,\n\t17925: 0x9086,\n\t17926: 0x9087,\n\t17927: 0x9089,\n\t17928: 0x908A,\n\t17929: 0x908C,\n\t17930: 0x908D,\n\t17931: 0x908E,\n\t17932: 0x908F,\n\t17933: 0x9090,\n\t17934: 0x9092,\n\t17935: 0x9094,\n\t17936: 0x9096,\n\t17937: 0x9098,\n\t17938: 0x909A,\n\t17939: 0x909C,\n\t17940: 0x909E,\n\t17941: 0x909F,\n\t17942: 0x90A0,\n\t17943: 0x90A4,\n\t17944: 0x90A5,\n\t17945: 0x90A7,\n\t17946: 0x90A8,\n\t17947: 0x90A9,\n\t17948: 0x90AB,\n\t17949: 0x90AD,\n\t17950: 0x90B2,\n\t17951: 0x90B7,\n\t17952: 0x90BC,\n\t17953: 0x90BD,\n\t17954: 0x90BF,\n\t17955: 0x90C0,\n\t17956: 0x647A,\n\t17957: 0x64B7,\n\t17958: 0x64B8,\n\t17959: 0x6499,\n\t17960: 0x64BA,\n\t17961: 0x64C0,\n\t17962: 0x64D0,\n\t17963: 0x64D7,\n\t17964: 0x64E4,\n\t17965: 0x64E2,\n\t17966: 0x6509,\n\t17967: 0x6525,\n\t17968: 0x652E,\n\t17969: 0x5F0B,\n\t17970: 0x5FD2,\n\t17971: 0x7519,\n\t17972: 0x5F11,\n\t17973: 0x535F,\n\t17974: 0x53F1,\n\t17975: 0x53FD,\n\t17976: 0x53E9,\n\t17977: 0x53E8,\n\t17978: 0x53FB,\n\t17979: 0x5412,\n\t17980: 0x5416,\n\t17981: 0x5406,\n\t17982: 0x544B,\n\t17983: 0x5452,\n\t17984: 0x5453,\n\t17985: 0x5454,\n\t17986: 0x5456,\n\t17987: 0x5443,\n\t17988: 0x5421,\n\t17989: 0x5457,\n\t17990: 0x5459,\n\t17991: 0x5423,\n\t17992: 0x5432,\n\t17993: 0x5482,\n\t17994: 0x5494,\n\t17995: 0x5477,\n\t17996: 0x5471,\n\t17997: 0x5464,\n\t17998: 0x549A,\n\t17999: 0x549B,\n\t18000: 0x5484,\n\t18001: 0x5476,\n\t18002: 0x5466,\n\t18003: 0x549D,\n\t18004: 0x54D0,\n\t18005: 0x54AD,\n\t18006: 0x54C2,\n\t18007: 0x54B4,\n\t18008: 0x54D2,\n\t18009: 0x54A7,\n\t18010: 0x54A6,\n\t18011: 0x54D3,\n\t18012: 0x54D4,\n\t18013: 0x5472,\n\t18014: 0x54A3,\n\t18015: 0x54D5,\n\t18016: 0x54BB,\n\t18017: 0x54BF,\n\t18018: 0x54CC,\n\t18019: 0x54D9,\n\t18020: 0x54DA,\n\t18021: 0x54DC,\n\t18022: 0x54A9,\n\t18023: 0x54AA,\n\t18024: 0x54A4,\n\t18025: 0x54DD,\n\t18026: 0x54CF,\n\t18027: 0x54DE,\n\t18028: 0x551B,\n\t18029: 0x54E7,\n\t18030: 0x5520,\n\t18031: 0x54FD,\n\t18032: 0x5514,\n\t18033: 0x54F3,\n\t18034: 0x5522,\n\t18035: 0x5523,\n\t18036: 0x550F,\n\t18037: 0x5511,\n\t18038: 0x5527,\n\t18039: 0x552A,\n\t18040: 0x5567,\n\t18041: 0x558F,\n\t18042: 0x55B5,\n\t18043: 0x5549,\n\t18044: 0x556D,\n\t18045: 0x5541,\n\t18046: 0x5555,\n\t18047: 0x553F,\n\t18048: 0x5550,\n\t18049: 0x553C,\n\t18050: 0x90C2,\n\t18051: 0x90C3,\n\t18052: 0x90C6,\n\t18053: 0x90C8,\n\t18054: 0x90C9,\n\t18055: 0x90CB,\n\t18056: 0x90CC,\n\t18057: 0x90CD,\n\t18058: 0x90D2,\n\t18059: 0x90D4,\n\t18060: 0x90D5,\n\t18061: 0x90D6,\n\t18062: 0x90D8,\n\t18063: 0x90D9,\n\t18064: 0x90DA,\n\t18065: 0x90DE,\n\t18066: 0x90DF,\n\t18067: 0x90E0,\n\t18068: 0x90E3,\n\t18069: 0x90E4,\n\t18070: 0x90E5,\n\t18071: 0x90E9,\n\t18072: 0x90EA,\n\t18073: 0x90EC,\n\t18074: 0x90EE,\n\t18075: 0x90F0,\n\t18076: 0x90F1,\n\t18077: 0x90F2,\n\t18078: 0x90F3,\n\t18079: 0x90F5,\n\t18080: 0x90F6,\n\t18081: 0x90F7,\n\t18082: 0x90F9,\n\t18083: 0x90FA,\n\t18084: 0x90FB,\n\t18085: 0x90FC,\n\t18086: 0x90FF,\n\t18087: 0x9100,\n\t18088: 0x9101,\n\t18089: 0x9103,\n\t18090: 0x9105,\n\t18091: 0x9106,\n\t18092: 0x9107,\n\t18093: 0x9108,\n\t18094: 0x9109,\n\t18095: 0x910A,\n\t18096: 0x910B,\n\t18097: 0x910C,\n\t18098: 0x910D,\n\t18099: 0x910E,\n\t18100: 0x910F,\n\t18101: 0x9110,\n\t18102: 0x9111,\n\t18103: 0x9112,\n\t18104: 0x9113,\n\t18105: 0x9114,\n\t18106: 0x9115,\n\t18107: 0x9116,\n\t18108: 0x9117,\n\t18109: 0x9118,\n\t18110: 0x911A,\n\t18111: 0x911B,\n\t18112: 0x911C,\n\t18113: 0x911D,\n\t18114: 0x911F,\n\t18115: 0x9120,\n\t18116: 0x9121,\n\t18117: 0x9124,\n\t18118: 0x9125,\n\t18119: 0x9126,\n\t18120: 0x9127,\n\t18121: 0x9128,\n\t18122: 0x9129,\n\t18123: 0x912A,\n\t18124: 0x912B,\n\t18125: 0x912C,\n\t18126: 0x912D,\n\t18127: 0x912E,\n\t18128: 0x9130,\n\t18129: 0x9132,\n\t18130: 0x9133,\n\t18131: 0x9134,\n\t18132: 0x9135,\n\t18133: 0x9136,\n\t18134: 0x9137,\n\t18135: 0x9138,\n\t18136: 0x913A,\n\t18137: 0x913B,\n\t18138: 0x913C,\n\t18139: 0x913D,\n\t18140: 0x913E,\n\t18141: 0x913F,\n\t18142: 0x9140,\n\t18143: 0x9141,\n\t18144: 0x9142,\n\t18145: 0x9144,\n\t18146: 0x5537,\n\t18147: 0x5556,\n\t18148: 0x5575,\n\t18149: 0x5576,\n\t18150: 0x5577,\n\t18151: 0x5533,\n\t18152: 0x5530,\n\t18153: 0x555C,\n\t18154: 0x558B,\n\t18155: 0x55D2,\n\t18156: 0x5583,\n\t18157: 0x55B1,\n\t18158: 0x55B9,\n\t18159: 0x5588,\n\t18160: 0x5581,\n\t18161: 0x559F,\n\t18162: 0x557E,\n\t18163: 0x55D6,\n\t18164: 0x5591,\n\t18165: 0x557B,\n\t18166: 0x55DF,\n\t18167: 0x55BD,\n\t18168: 0x55BE,\n\t18169: 0x5594,\n\t18170: 0x5599,\n\t18171: 0x55EA,\n\t18172: 0x55F7,\n\t18173: 0x55C9,\n\t18174: 0x561F,\n\t18175: 0x55D1,\n\t18176: 0x55EB,\n\t18177: 0x55EC,\n\t18178: 0x55D4,\n\t18179: 0x55E6,\n\t18180: 0x55DD,\n\t18181: 0x55C4,\n\t18182: 0x55EF,\n\t18183: 0x55E5,\n\t18184: 0x55F2,\n\t18185: 0x55F3,\n\t18186: 0x55CC,\n\t18187: 0x55CD,\n\t18188: 0x55E8,\n\t18189: 0x55F5,\n\t18190: 0x55E4,\n\t18191: 0x8F94,\n\t18192: 0x561E,\n\t18193: 0x5608,\n\t18194: 0x560C,\n\t18195: 0x5601,\n\t18196: 0x5624,\n\t18197: 0x5623,\n\t18198: 0x55FE,\n\t18199: 0x5600,\n\t18200: 0x5627,\n\t18201: 0x562D,\n\t18202: 0x5658,\n\t18203: 0x5639,\n\t18204: 0x5657,\n\t18205: 0x562C,\n\t18206: 0x564D,\n\t18207: 0x5662,\n\t18208: 0x5659,\n\t18209: 0x565C,\n\t18210: 0x564C,\n\t18211: 0x5654,\n\t18212: 0x5686,\n\t18213: 0x5664,\n\t18214: 0x5671,\n\t18215: 0x566B,\n\t18216: 0x567B,\n\t18217: 0x567C,\n\t18218: 0x5685,\n\t18219: 0x5693,\n\t18220: 0x56AF,\n\t18221: 0x56D4,\n\t18222: 0x56D7,\n\t18223: 0x56DD,\n\t18224: 0x56E1,\n\t18225: 0x56F5,\n\t18226: 0x56EB,\n\t18227: 0x56F9,\n\t18228: 0x56FF,\n\t18229: 0x5704,\n\t18230: 0x570A,\n\t18231: 0x5709,\n\t18232: 0x571C,\n\t18233: 0x5E0F,\n\t18234: 0x5E19,\n\t18235: 0x5E14,\n\t18236: 0x5E11,\n\t18237: 0x5E31,\n\t18238: 0x5E3B,\n\t18239: 0x5E3C,\n\t18240: 0x9145,\n\t18241: 0x9147,\n\t18242: 0x9148,\n\t18243: 0x9151,\n\t18244: 0x9153,\n\t18245: 0x9154,\n\t18246: 0x9155,\n\t18247: 0x9156,\n\t18248: 0x9158,\n\t18249: 0x9159,\n\t18250: 0x915B,\n\t18251: 0x915C,\n\t18252: 0x915F,\n\t18253: 0x9160,\n\t18254: 0x9166,\n\t18255: 0x9167,\n\t18256: 0x9168,\n\t18257: 0x916B,\n\t18258: 0x916D,\n\t18259: 0x9173,\n\t18260: 0x917A,\n\t18261: 0x917B,\n\t18262: 0x917C,\n\t18263: 0x9180,\n\t18264: 0x9181,\n\t18265: 0x9182,\n\t18266: 0x9183,\n\t18267: 0x9184,\n\t18268: 0x9186,\n\t18269: 0x9188,\n\t18270: 0x918A,\n\t18271: 0x918E,\n\t18272: 0x918F,\n\t18273: 0x9193,\n\t18274: 0x9194,\n\t18275: 0x9195,\n\t18276: 0x9196,\n\t18277: 0x9197,\n\t18278: 0x9198,\n\t18279: 0x9199,\n\t18280: 0x919C,\n\t18281: 0x919D,\n\t18282: 0x919E,\n\t18283: 0x919F,\n\t18284: 0x91A0,\n\t18285: 0x91A1,\n\t18286: 0x91A4,\n\t18287: 0x91A5,\n\t18288: 0x91A6,\n\t18289: 0x91A7,\n\t18290: 0x91A8,\n\t18291: 0x91A9,\n\t18292: 0x91AB,\n\t18293: 0x91AC,\n\t18294: 0x91B0,\n\t18295: 0x91B1,\n\t18296: 0x91B2,\n\t18297: 0x91B3,\n\t18298: 0x91B6,\n\t18299: 0x91B7,\n\t18300: 0x91B8,\n\t18301: 0x91B9,\n\t18302: 0x91BB,\n\t18303: 0x91BC,\n\t18304: 0x91BD,\n\t18305: 0x91BE,\n\t18306: 0x91BF,\n\t18307: 0x91C0,\n\t18308: 0x91C1,\n\t18309: 0x91C2,\n\t18310: 0x91C3,\n\t18311: 0x91C4,\n\t18312: 0x91C5,\n\t18313: 0x91C6,\n\t18314: 0x91C8,\n\t18315: 0x91CB,\n\t18316: 0x91D0,\n\t18317: 0x91D2,\n\t18318: 0x91D3,\n\t18319: 0x91D4,\n\t18320: 0x91D5,\n\t18321: 0x91D6,\n\t18322: 0x91D7,\n\t18323: 0x91D8,\n\t18324: 0x91D9,\n\t18325: 0x91DA,\n\t18326: 0x91DB,\n\t18327: 0x91DD,\n\t18328: 0x91DE,\n\t18329: 0x91DF,\n\t18330: 0x91E0,\n\t18331: 0x91E1,\n\t18332: 0x91E2,\n\t18333: 0x91E3,\n\t18334: 0x91E4,\n\t18335: 0x91E5,\n\t18336: 0x5E37,\n\t18337: 0x5E44,\n\t18338: 0x5E54,\n\t18339: 0x5E5B,\n\t18340: 0x5E5E,\n\t18341: 0x5E61,\n\t18342: 0x5C8C,\n\t18343: 0x5C7A,\n\t18344: 0x5C8D,\n\t18345: 0x5C90,\n\t18346: 0x5C96,\n\t18347: 0x5C88,\n\t18348: 0x5C98,\n\t18349: 0x5C99,\n\t18350: 0x5C91,\n\t18351: 0x5C9A,\n\t18352: 0x5C9C,\n\t18353: 0x5CB5,\n\t18354: 0x5CA2,\n\t18355: 0x5CBD,\n\t18356: 0x5CAC,\n\t18357: 0x5CAB,\n\t18358: 0x5CB1,\n\t18359: 0x5CA3,\n\t18360: 0x5CC1,\n\t18361: 0x5CB7,\n\t18362: 0x5CC4,\n\t18363: 0x5CD2,\n\t18364: 0x5CE4,\n\t18365: 0x5CCB,\n\t18366: 0x5CE5,\n\t18367: 0x5D02,\n\t18368: 0x5D03,\n\t18369: 0x5D27,\n\t18370: 0x5D26,\n\t18371: 0x5D2E,\n\t18372: 0x5D24,\n\t18373: 0x5D1E,\n\t18374: 0x5D06,\n\t18375: 0x5D1B,\n\t18376: 0x5D58,\n\t18377: 0x5D3E,\n\t18378: 0x5D34,\n\t18379: 0x5D3D,\n\t18380: 0x5D6C,\n\t18381: 0x5D5B,\n\t18382: 0x5D6F,\n\t18383: 0x5D5D,\n\t18384: 0x5D6B,\n\t18385: 0x5D4B,\n\t18386: 0x5D4A,\n\t18387: 0x5D69,\n\t18388: 0x5D74,\n\t18389: 0x5D82,\n\t18390: 0x5D99,\n\t18391: 0x5D9D,\n\t18392: 0x8C73,\n\t18393: 0x5DB7,\n\t18394: 0x5DC5,\n\t18395: 0x5F73,\n\t18396: 0x5F77,\n\t18397: 0x5F82,\n\t18398: 0x5F87,\n\t18399: 0x5F89,\n\t18400: 0x5F8C,\n\t18401: 0x5F95,\n\t18402: 0x5F99,\n\t18403: 0x5F9C,\n\t18404: 0x5FA8,\n\t18405: 0x5FAD,\n\t18406: 0x5FB5,\n\t18407: 0x5FBC,\n\t18408: 0x8862,\n\t18409: 0x5F61,\n\t18410: 0x72AD,\n\t18411: 0x72B0,\n\t18412: 0x72B4,\n\t18413: 0x72B7,\n\t18414: 0x72B8,\n\t18415: 0x72C3,\n\t18416: 0x72C1,\n\t18417: 0x72CE,\n\t18418: 0x72CD,\n\t18419: 0x72D2,\n\t18420: 0x72E8,\n\t18421: 0x72EF,\n\t18422: 0x72E9,\n\t18423: 0x72F2,\n\t18424: 0x72F4,\n\t18425: 0x72F7,\n\t18426: 0x7301,\n\t18427: 0x72F3,\n\t18428: 0x7303,\n\t18429: 0x72FA,\n\t18430: 0x91E6,\n\t18431: 0x91E7,\n\t18432: 0x91E8,\n\t18433: 0x91E9,\n\t18434: 0x91EA,\n\t18435: 0x91EB,\n\t18436: 0x91EC,\n\t18437: 0x91ED,\n\t18438: 0x91EE,\n\t18439: 0x91EF,\n\t18440: 0x91F0,\n\t18441: 0x91F1,\n\t18442: 0x91F2,\n\t18443: 0x91F3,\n\t18444: 0x91F4,\n\t18445: 0x91F5,\n\t18446: 0x91F6,\n\t18447: 0x91F7,\n\t18448: 0x91F8,\n\t18449: 0x91F9,\n\t18450: 0x91FA,\n\t18451: 0x91FB,\n\t18452: 0x91FC,\n\t18453: 0x91FD,\n\t18454: 0x91FE,\n\t18455: 0x91FF,\n\t18456: 0x9200,\n\t18457: 0x9201,\n\t18458: 0x9202,\n\t18459: 0x9203,\n\t18460: 0x9204,\n\t18461: 0x9205,\n\t18462: 0x9206,\n\t18463: 0x9207,\n\t18464: 0x9208,\n\t18465: 0x9209,\n\t18466: 0x920A,\n\t18467: 0x920B,\n\t18468: 0x920C,\n\t18469: 0x920D,\n\t18470: 0x920E,\n\t18471: 0x920F,\n\t18472: 0x9210,\n\t18473: 0x9211,\n\t18474: 0x9212,\n\t18475: 0x9213,\n\t18476: 0x9214,\n\t18477: 0x9215,\n\t18478: 0x9216,\n\t18479: 0x9217,\n\t18480: 0x9218,\n\t18481: 0x9219,\n\t18482: 0x921A,\n\t18483: 0x921B,\n\t18484: 0x921C,\n\t18485: 0x921D,\n\t18486: 0x921E,\n\t18487: 0x921F,\n\t18488: 0x9220,\n\t18489: 0x9221,\n\t18490: 0x9222,\n\t18491: 0x9223,\n\t18492: 0x9224,\n\t18493: 0x9225,\n\t18494: 0x9226,\n\t18495: 0x9227,\n\t18496: 0x9228,\n\t18497: 0x9229,\n\t18498: 0x922A,\n\t18499: 0x922B,\n\t18500: 0x922C,\n\t18501: 0x922D,\n\t18502: 0x922E,\n\t18503: 0x922F,\n\t18504: 0x9230,\n\t18505: 0x9231,\n\t18506: 0x9232,\n\t18507: 0x9233,\n\t18508: 0x9234,\n\t18509: 0x9235,\n\t18510: 0x9236,\n\t18511: 0x9237,\n\t18512: 0x9238,\n\t18513: 0x9239,\n\t18514: 0x923A,\n\t18515: 0x923B,\n\t18516: 0x923C,\n\t18517: 0x923D,\n\t18518: 0x923E,\n\t18519: 0x923F,\n\t18520: 0x9240,\n\t18521: 0x9241,\n\t18522: 0x9242,\n\t18523: 0x9243,\n\t18524: 0x9244,\n\t18525: 0x9245,\n\t18526: 0x72FB,\n\t18527: 0x7317,\n\t18528: 0x7313,\n\t18529: 0x7321,\n\t18530: 0x730A,\n\t18531: 0x731E,\n\t18532: 0x731D,\n\t18533: 0x7315,\n\t18534: 0x7322,\n\t18535: 0x7339,\n\t18536: 0x7325,\n\t18537: 0x732C,\n\t18538: 0x7338,\n\t18539: 0x7331,\n\t18540: 0x7350,\n\t18541: 0x734D,\n\t18542: 0x7357,\n\t18543: 0x7360,\n\t18544: 0x736C,\n\t18545: 0x736F,\n\t18546: 0x737E,\n\t18547: 0x821B,\n\t18548: 0x5925,\n\t18549: 0x98E7,\n\t18550: 0x5924,\n\t18551: 0x5902,\n\t18552: 0x9963,\n\t18553: 0x9967,\n\t18554: 0x9968,\n\t18555: 0x9969,\n\t18556: 0x996A,\n\t18557: 0x996B,\n\t18558: 0x996C,\n\t18559: 0x9974,\n\t18560: 0x9977,\n\t18561: 0x997D,\n\t18562: 0x9980,\n\t18563: 0x9984,\n\t18564: 0x9987,\n\t18565: 0x998A,\n\t18566: 0x998D,\n\t18567: 0x9990,\n\t18568: 0x9991,\n\t18569: 0x9993,\n\t18570: 0x9994,\n\t18571: 0x9995,\n\t18572: 0x5E80,\n\t18573: 0x5E91,\n\t18574: 0x5E8B,\n\t18575: 0x5E96,\n\t18576: 0x5EA5,\n\t18577: 0x5EA0,\n\t18578: 0x5EB9,\n\t18579: 0x5EB5,\n\t18580: 0x5EBE,\n\t18581: 0x5EB3,\n\t18582: 0x8D53,\n\t18583: 0x5ED2,\n\t18584: 0x5ED1,\n\t18585: 0x5EDB,\n\t18586: 0x5EE8,\n\t18587: 0x5EEA,\n\t18588: 0x81BA,\n\t18589: 0x5FC4,\n\t18590: 0x5FC9,\n\t18591: 0x5FD6,\n\t18592: 0x5FCF,\n\t18593: 0x6003,\n\t18594: 0x5FEE,\n\t18595: 0x6004,\n\t18596: 0x5FE1,\n\t18597: 0x5FE4,\n\t18598: 0x5FFE,\n\t18599: 0x6005,\n\t18600: 0x6006,\n\t18601: 0x5FEA,\n\t18602: 0x5FED,\n\t18603: 0x5FF8,\n\t18604: 0x6019,\n\t18605: 0x6035,\n\t18606: 0x6026,\n\t18607: 0x601B,\n\t18608: 0x600F,\n\t18609: 0x600D,\n\t18610: 0x6029,\n\t18611: 0x602B,\n\t18612: 0x600A,\n\t18613: 0x603F,\n\t18614: 0x6021,\n\t18615: 0x6078,\n\t18616: 0x6079,\n\t18617: 0x607B,\n\t18618: 0x607A,\n\t18619: 0x6042,\n\t18620: 0x9246,\n\t18621: 0x9247,\n\t18622: 0x9248,\n\t18623: 0x9249,\n\t18624: 0x924A,\n\t18625: 0x924B,\n\t18626: 0x924C,\n\t18627: 0x924D,\n\t18628: 0x924E,\n\t18629: 0x924F,\n\t18630: 0x9250,\n\t18631: 0x9251,\n\t18632: 0x9252,\n\t18633: 0x9253,\n\t18634: 0x9254,\n\t18635: 0x9255,\n\t18636: 0x9256,\n\t18637: 0x9257,\n\t18638: 0x9258,\n\t18639: 0x9259,\n\t18640: 0x925A,\n\t18641: 0x925B,\n\t18642: 0x925C,\n\t18643: 0x925D,\n\t18644: 0x925E,\n\t18645: 0x925F,\n\t18646: 0x9260,\n\t18647: 0x9261,\n\t18648: 0x9262,\n\t18649: 0x9263,\n\t18650: 0x9264,\n\t18651: 0x9265,\n\t18652: 0x9266,\n\t18653: 0x9267,\n\t18654: 0x9268,\n\t18655: 0x9269,\n\t18656: 0x926A,\n\t18657: 0x926B,\n\t18658: 0x926C,\n\t18659: 0x926D,\n\t18660: 0x926E,\n\t18661: 0x926F,\n\t18662: 0x9270,\n\t18663: 0x9271,\n\t18664: 0x9272,\n\t18665: 0x9273,\n\t18666: 0x9275,\n\t18667: 0x9276,\n\t18668: 0x9277,\n\t18669: 0x9278,\n\t18670: 0x9279,\n\t18671: 0x927A,\n\t18672: 0x927B,\n\t18673: 0x927C,\n\t18674: 0x927D,\n\t18675: 0x927E,\n\t18676: 0x927F,\n\t18677: 0x9280,\n\t18678: 0x9281,\n\t18679: 0x9282,\n\t18680: 0x9283,\n\t18681: 0x9284,\n\t18682: 0x9285,\n\t18683: 0x9286,\n\t18684: 0x9287,\n\t18685: 0x9288,\n\t18686: 0x9289,\n\t18687: 0x928A,\n\t18688: 0x928B,\n\t18689: 0x928C,\n\t18690: 0x928D,\n\t18691: 0x928F,\n\t18692: 0x9290,\n\t18693: 0x9291,\n\t18694: 0x9292,\n\t18695: 0x9293,\n\t18696: 0x9294,\n\t18697: 0x9295,\n\t18698: 0x9296,\n\t18699: 0x9297,\n\t18700: 0x9298,\n\t18701: 0x9299,\n\t18702: 0x929A,\n\t18703: 0x929B,\n\t18704: 0x929C,\n\t18705: 0x929D,\n\t18706: 0x929E,\n\t18707: 0x929F,\n\t18708: 0x92A0,\n\t18709: 0x92A1,\n\t18710: 0x92A2,\n\t18711: 0x92A3,\n\t18712: 0x92A4,\n\t18713: 0x92A5,\n\t18714: 0x92A6,\n\t18715: 0x92A7,\n\t18716: 0x606A,\n\t18717: 0x607D,\n\t18718: 0x6096,\n\t18719: 0x609A,\n\t18720: 0x60AD,\n\t18721: 0x609D,\n\t18722: 0x6083,\n\t18723: 0x6092,\n\t18724: 0x608C,\n\t18725: 0x609B,\n\t18726: 0x60EC,\n\t18727: 0x60BB,\n\t18728: 0x60B1,\n\t18729: 0x60DD,\n\t18730: 0x60D8,\n\t18731: 0x60C6,\n\t18732: 0x60DA,\n\t18733: 0x60B4,\n\t18734: 0x6120,\n\t18735: 0x6126,\n\t18736: 0x6115,\n\t18737: 0x6123,\n\t18738: 0x60F4,\n\t18739: 0x6100,\n\t18740: 0x610E,\n\t18741: 0x612B,\n\t18742: 0x614A,\n\t18743: 0x6175,\n\t18744: 0x61AC,\n\t18745: 0x6194,\n\t18746: 0x61A7,\n\t18747: 0x61B7,\n\t18748: 0x61D4,\n\t18749: 0x61F5,\n\t18750: 0x5FDD,\n\t18751: 0x96B3,\n\t18752: 0x95E9,\n\t18753: 0x95EB,\n\t18754: 0x95F1,\n\t18755: 0x95F3,\n\t18756: 0x95F5,\n\t18757: 0x95F6,\n\t18758: 0x95FC,\n\t18759: 0x95FE,\n\t18760: 0x9603,\n\t18761: 0x9604,\n\t18762: 0x9606,\n\t18763: 0x9608,\n\t18764: 0x960A,\n\t18765: 0x960B,\n\t18766: 0x960C,\n\t18767: 0x960D,\n\t18768: 0x960F,\n\t18769: 0x9612,\n\t18770: 0x9615,\n\t18771: 0x9616,\n\t18772: 0x9617,\n\t18773: 0x9619,\n\t18774: 0x961A,\n\t18775: 0x4E2C,\n\t18776: 0x723F,\n\t18777: 0x6215,\n\t18778: 0x6C35,\n\t18779: 0x6C54,\n\t18780: 0x6C5C,\n\t18781: 0x6C4A,\n\t18782: 0x6CA3,\n\t18783: 0x6C85,\n\t18784: 0x6C90,\n\t18785: 0x6C94,\n\t18786: 0x6C8C,\n\t18787: 0x6C68,\n\t18788: 0x6C69,\n\t18789: 0x6C74,\n\t18790: 0x6C76,\n\t18791: 0x6C86,\n\t18792: 0x6CA9,\n\t18793: 0x6CD0,\n\t18794: 0x6CD4,\n\t18795: 0x6CAD,\n\t18796: 0x6CF7,\n\t18797: 0x6CF8,\n\t18798: 0x6CF1,\n\t18799: 0x6CD7,\n\t18800: 0x6CB2,\n\t18801: 0x6CE0,\n\t18802: 0x6CD6,\n\t18803: 0x6CFA,\n\t18804: 0x6CEB,\n\t18805: 0x6CEE,\n\t18806: 0x6CB1,\n\t18807: 0x6CD3,\n\t18808: 0x6CEF,\n\t18809: 0x6CFE,\n\t18810: 0x92A8,\n\t18811: 0x92A9,\n\t18812: 0x92AA,\n\t18813: 0x92AB,\n\t18814: 0x92AC,\n\t18815: 0x92AD,\n\t18816: 0x92AF,\n\t18817: 0x92B0,\n\t18818: 0x92B1,\n\t18819: 0x92B2,\n\t18820: 0x92B3,\n\t18821: 0x92B4,\n\t18822: 0x92B5,\n\t18823: 0x92B6,\n\t18824: 0x92B7,\n\t18825: 0x92B8,\n\t18826: 0x92B9,\n\t18827: 0x92BA,\n\t18828: 0x92BB,\n\t18829: 0x92BC,\n\t18830: 0x92BD,\n\t18831: 0x92BE,\n\t18832: 0x92BF,\n\t18833: 0x92C0,\n\t18834: 0x92C1,\n\t18835: 0x92C2,\n\t18836: 0x92C3,\n\t18837: 0x92C4,\n\t18838: 0x92C5,\n\t18839: 0x92C6,\n\t18840: 0x92C7,\n\t18841: 0x92C9,\n\t18842: 0x92CA,\n\t18843: 0x92CB,\n\t18844: 0x92CC,\n\t18845: 0x92CD,\n\t18846: 0x92CE,\n\t18847: 0x92CF,\n\t18848: 0x92D0,\n\t18849: 0x92D1,\n\t18850: 0x92D2,\n\t18851: 0x92D3,\n\t18852: 0x92D4,\n\t18853: 0x92D5,\n\t18854: 0x92D6,\n\t18855: 0x92D7,\n\t18856: 0x92D8,\n\t18857: 0x92D9,\n\t18858: 0x92DA,\n\t18859: 0x92DB,\n\t18860: 0x92DC,\n\t18861: 0x92DD,\n\t18862: 0x92DE,\n\t18863: 0x92DF,\n\t18864: 0x92E0,\n\t18865: 0x92E1,\n\t18866: 0x92E2,\n\t18867: 0x92E3,\n\t18868: 0x92E4,\n\t18869: 0x92E5,\n\t18870: 0x92E6,\n\t18871: 0x92E7,\n\t18872: 0x92E8,\n\t18873: 0x92E9,\n\t18874: 0x92EA,\n\t18875: 0x92EB,\n\t18876: 0x92EC,\n\t18877: 0x92ED,\n\t18878: 0x92EE,\n\t18879: 0x92EF,\n\t18880: 0x92F0,\n\t18881: 0x92F1,\n\t18882: 0x92F2,\n\t18883: 0x92F3,\n\t18884: 0x92F4,\n\t18885: 0x92F5,\n\t18886: 0x92F6,\n\t18887: 0x92F7,\n\t18888: 0x92F8,\n\t18889: 0x92F9,\n\t18890: 0x92FA,\n\t18891: 0x92FB,\n\t18892: 0x92FC,\n\t18893: 0x92FD,\n\t18894: 0x92FE,\n\t18895: 0x92FF,\n\t18896: 0x9300,\n\t18897: 0x9301,\n\t18898: 0x9302,\n\t18899: 0x9303,\n\t18900: 0x9304,\n\t18901: 0x9305,\n\t18902: 0x9306,\n\t18903: 0x9307,\n\t18904: 0x9308,\n\t18905: 0x9309,\n\t18906: 0x6D39,\n\t18907: 0x6D27,\n\t18908: 0x6D0C,\n\t18909: 0x6D43,\n\t18910: 0x6D48,\n\t18911: 0x6D07,\n\t18912: 0x6D04,\n\t18913: 0x6D19,\n\t18914: 0x6D0E,\n\t18915: 0x6D2B,\n\t18916: 0x6D4D,\n\t18917: 0x6D2E,\n\t18918: 0x6D35,\n\t18919: 0x6D1A,\n\t18920: 0x6D4F,\n\t18921: 0x6D52,\n\t18922: 0x6D54,\n\t18923: 0x6D33,\n\t18924: 0x6D91,\n\t18925: 0x6D6F,\n\t18926: 0x6D9E,\n\t18927: 0x6DA0,\n\t18928: 0x6D5E,\n\t18929: 0x6D93,\n\t18930: 0x6D94,\n\t18931: 0x6D5C,\n\t18932: 0x6D60,\n\t18933: 0x6D7C,\n\t18934: 0x6D63,\n\t18935: 0x6E1A,\n\t18936: 0x6DC7,\n\t18937: 0x6DC5,\n\t18938: 0x6DDE,\n\t18939: 0x6E0E,\n\t18940: 0x6DBF,\n\t18941: 0x6DE0,\n\t18942: 0x6E11,\n\t18943: 0x6DE6,\n\t18944: 0x6DDD,\n\t18945: 0x6DD9,\n\t18946: 0x6E16,\n\t18947: 0x6DAB,\n\t18948: 0x6E0C,\n\t18949: 0x6DAE,\n\t18950: 0x6E2B,\n\t18951: 0x6E6E,\n\t18952: 0x6E4E,\n\t18953: 0x6E6B,\n\t18954: 0x6EB2,\n\t18955: 0x6E5F,\n\t18956: 0x6E86,\n\t18957: 0x6E53,\n\t18958: 0x6E54,\n\t18959: 0x6E32,\n\t18960: 0x6E25,\n\t18961: 0x6E44,\n\t18962: 0x6EDF,\n\t18963: 0x6EB1,\n\t18964: 0x6E98,\n\t18965: 0x6EE0,\n\t18966: 0x6F2D,\n\t18967: 0x6EE2,\n\t18968: 0x6EA5,\n\t18969: 0x6EA7,\n\t18970: 0x6EBD,\n\t18971: 0x6EBB,\n\t18972: 0x6EB7,\n\t18973: 0x6ED7,\n\t18974: 0x6EB4,\n\t18975: 0x6ECF,\n\t18976: 0x6E8F,\n\t18977: 0x6EC2,\n\t18978: 0x6E9F,\n\t18979: 0x6F62,\n\t18980: 0x6F46,\n\t18981: 0x6F47,\n\t18982: 0x6F24,\n\t18983: 0x6F15,\n\t18984: 0x6EF9,\n\t18985: 0x6F2F,\n\t18986: 0x6F36,\n\t18987: 0x6F4B,\n\t18988: 0x6F74,\n\t18989: 0x6F2A,\n\t18990: 0x6F09,\n\t18991: 0x6F29,\n\t18992: 0x6F89,\n\t18993: 0x6F8D,\n\t18994: 0x6F8C,\n\t18995: 0x6F78,\n\t18996: 0x6F72,\n\t18997: 0x6F7C,\n\t18998: 0x6F7A,\n\t18999: 0x6FD1,\n\t19000: 0x930A,\n\t19001: 0x930B,\n\t19002: 0x930C,\n\t19003: 0x930D,\n\t19004: 0x930E,\n\t19005: 0x930F,\n\t19006: 0x9310,\n\t19007: 0x9311,\n\t19008: 0x9312,\n\t19009: 0x9313,\n\t19010: 0x9314,\n\t19011: 0x9315,\n\t19012: 0x9316,\n\t19013: 0x9317,\n\t19014: 0x9318,\n\t19015: 0x9319,\n\t19016: 0x931A,\n\t19017: 0x931B,\n\t19018: 0x931C,\n\t19019: 0x931D,\n\t19020: 0x931E,\n\t19021: 0x931F,\n\t19022: 0x9320,\n\t19023: 0x9321,\n\t19024: 0x9322,\n\t19025: 0x9323,\n\t19026: 0x9324,\n\t19027: 0x9325,\n\t19028: 0x9326,\n\t19029: 0x9327,\n\t19030: 0x9328,\n\t19031: 0x9329,\n\t19032: 0x932A,\n\t19033: 0x932B,\n\t19034: 0x932C,\n\t19035: 0x932D,\n\t19036: 0x932E,\n\t19037: 0x932F,\n\t19038: 0x9330,\n\t19039: 0x9331,\n\t19040: 0x9332,\n\t19041: 0x9333,\n\t19042: 0x9334,\n\t19043: 0x9335,\n\t19044: 0x9336,\n\t19045: 0x9337,\n\t19046: 0x9338,\n\t19047: 0x9339,\n\t19048: 0x933A,\n\t19049: 0x933B,\n\t19050: 0x933C,\n\t19051: 0x933D,\n\t19052: 0x933F,\n\t19053: 0x9340,\n\t19054: 0x9341,\n\t19055: 0x9342,\n\t19056: 0x9343,\n\t19057: 0x9344,\n\t19058: 0x9345,\n\t19059: 0x9346,\n\t19060: 0x9347,\n\t19061: 0x9348,\n\t19062: 0x9349,\n\t19063: 0x934A,\n\t19064: 0x934B,\n\t19065: 0x934C,\n\t19066: 0x934D,\n\t19067: 0x934E,\n\t19068: 0x934F,\n\t19069: 0x9350,\n\t19070: 0x9351,\n\t19071: 0x9352,\n\t19072: 0x9353,\n\t19073: 0x9354,\n\t19074: 0x9355,\n\t19075: 0x9356,\n\t19076: 0x9357,\n\t19077: 0x9358,\n\t19078: 0x9359,\n\t19079: 0x935A,\n\t19080: 0x935B,\n\t19081: 0x935C,\n\t19082: 0x935D,\n\t19083: 0x935E,\n\t19084: 0x935F,\n\t19085: 0x9360,\n\t19086: 0x9361,\n\t19087: 0x9362,\n\t19088: 0x9363,\n\t19089: 0x9364,\n\t19090: 0x9365,\n\t19091: 0x9366,\n\t19092: 0x9367,\n\t19093: 0x9368,\n\t19094: 0x9369,\n\t19095: 0x936B,\n\t19096: 0x6FC9,\n\t19097: 0x6FA7,\n\t19098: 0x6FB9,\n\t19099: 0x6FB6,\n\t19100: 0x6FC2,\n\t19101: 0x6FE1,\n\t19102: 0x6FEE,\n\t19103: 0x6FDE,\n\t19104: 0x6FE0,\n\t19105: 0x6FEF,\n\t19106: 0x701A,\n\t19107: 0x7023,\n\t19108: 0x701B,\n\t19109: 0x7039,\n\t19110: 0x7035,\n\t19111: 0x704F,\n\t19112: 0x705E,\n\t19113: 0x5B80,\n\t19114: 0x5B84,\n\t19115: 0x5B95,\n\t19116: 0x5B93,\n\t19117: 0x5BA5,\n\t19118: 0x5BB8,\n\t19119: 0x752F,\n\t19120: 0x9A9E,\n\t19121: 0x6434,\n\t19122: 0x5BE4,\n\t19123: 0x5BEE,\n\t19124: 0x8930,\n\t19125: 0x5BF0,\n\t19126: 0x8E47,\n\t19127: 0x8B07,\n\t19128: 0x8FB6,\n\t19129: 0x8FD3,\n\t19130: 0x8FD5,\n\t19131: 0x8FE5,\n\t19132: 0x8FEE,\n\t19133: 0x8FE4,\n\t19134: 0x8FE9,\n\t19135: 0x8FE6,\n\t19136: 0x8FF3,\n\t19137: 0x8FE8,\n\t19138: 0x9005,\n\t19139: 0x9004,\n\t19140: 0x900B,\n\t19141: 0x9026,\n\t19142: 0x9011,\n\t19143: 0x900D,\n\t19144: 0x9016,\n\t19145: 0x9021,\n\t19146: 0x9035,\n\t19147: 0x9036,\n\t19148: 0x902D,\n\t19149: 0x902F,\n\t19150: 0x9044,\n\t19151: 0x9051,\n\t19152: 0x9052,\n\t19153: 0x9050,\n\t19154: 0x9068,\n\t19155: 0x9058,\n\t19156: 0x9062,\n\t19157: 0x905B,\n\t19158: 0x66B9,\n\t19159: 0x9074,\n\t19160: 0x907D,\n\t19161: 0x9082,\n\t19162: 0x9088,\n\t19163: 0x9083,\n\t19164: 0x908B,\n\t19165: 0x5F50,\n\t19166: 0x5F57,\n\t19167: 0x5F56,\n\t19168: 0x5F58,\n\t19169: 0x5C3B,\n\t19170: 0x54AB,\n\t19171: 0x5C50,\n\t19172: 0x5C59,\n\t19173: 0x5B71,\n\t19174: 0x5C63,\n\t19175: 0x5C66,\n\t19176: 0x7FBC,\n\t19177: 0x5F2A,\n\t19178: 0x5F29,\n\t19179: 0x5F2D,\n\t19180: 0x8274,\n\t19181: 0x5F3C,\n\t19182: 0x9B3B,\n\t19183: 0x5C6E,\n\t19184: 0x5981,\n\t19185: 0x5983,\n\t19186: 0x598D,\n\t19187: 0x59A9,\n\t19188: 0x59AA,\n\t19189: 0x59A3,\n\t19190: 0x936C,\n\t19191: 0x936D,\n\t19192: 0x936E,\n\t19193: 0x936F,\n\t19194: 0x9370,\n\t19195: 0x9371,\n\t19196: 0x9372,\n\t19197: 0x9373,\n\t19198: 0x9374,\n\t19199: 0x9375,\n\t19200: 0x9376,\n\t19201: 0x9377,\n\t19202: 0x9378,\n\t19203: 0x9379,\n\t19204: 0x937A,\n\t19205: 0x937B,\n\t19206: 0x937C,\n\t19207: 0x937D,\n\t19208: 0x937E,\n\t19209: 0x937F,\n\t19210: 0x9380,\n\t19211: 0x9381,\n\t19212: 0x9382,\n\t19213: 0x9383,\n\t19214: 0x9384,\n\t19215: 0x9385,\n\t19216: 0x9386,\n\t19217: 0x9387,\n\t19218: 0x9388,\n\t19219: 0x9389,\n\t19220: 0x938A,\n\t19221: 0x938B,\n\t19222: 0x938C,\n\t19223: 0x938D,\n\t19224: 0x938E,\n\t19225: 0x9390,\n\t19226: 0x9391,\n\t19227: 0x9392,\n\t19228: 0x9393,\n\t19229: 0x9394,\n\t19230: 0x9395,\n\t19231: 0x9396,\n\t19232: 0x9397,\n\t19233: 0x9398,\n\t19234: 0x9399,\n\t19235: 0x939A,\n\t19236: 0x939B,\n\t19237: 0x939C,\n\t19238: 0x939D,\n\t19239: 0x939E,\n\t19240: 0x939F,\n\t19241: 0x93A0,\n\t19242: 0x93A1,\n\t19243: 0x93A2,\n\t19244: 0x93A3,\n\t19245: 0x93A4,\n\t19246: 0x93A5,\n\t19247: 0x93A6,\n\t19248: 0x93A7,\n\t19249: 0x93A8,\n\t19250: 0x93A9,\n\t19251: 0x93AA,\n\t19252: 0x93AB,\n\t19253: 0x93AC,\n\t19254: 0x93AD,\n\t19255: 0x93AE,\n\t19256: 0x93AF,\n\t19257: 0x93B0,\n\t19258: 0x93B1,\n\t19259: 0x93B2,\n\t19260: 0x93B3,\n\t19261: 0x93B4,\n\t19262: 0x93B5,\n\t19263: 0x93B6,\n\t19264: 0x93B7,\n\t19265: 0x93B8,\n\t19266: 0x93B9,\n\t19267: 0x93BA,\n\t19268: 0x93BB,\n\t19269: 0x93BC,\n\t19270: 0x93BD,\n\t19271: 0x93BE,\n\t19272: 0x93BF,\n\t19273: 0x93C0,\n\t19274: 0x93C1,\n\t19275: 0x93C2,\n\t19276: 0x93C3,\n\t19277: 0x93C4,\n\t19278: 0x93C5,\n\t19279: 0x93C6,\n\t19280: 0x93C7,\n\t19281: 0x93C8,\n\t19282: 0x93C9,\n\t19283: 0x93CB,\n\t19284: 0x93CC,\n\t19285: 0x93CD,\n\t19286: 0x5997,\n\t19287: 0x59CA,\n\t19288: 0x59AB,\n\t19289: 0x599E,\n\t19290: 0x59A4,\n\t19291: 0x59D2,\n\t19292: 0x59B2,\n\t19293: 0x59AF,\n\t19294: 0x59D7,\n\t19295: 0x59BE,\n\t19296: 0x5A05,\n\t19297: 0x5A06,\n\t19298: 0x59DD,\n\t19299: 0x5A08,\n\t19300: 0x59E3,\n\t19301: 0x59D8,\n\t19302: 0x59F9,\n\t19303: 0x5A0C,\n\t19304: 0x5A09,\n\t19305: 0x5A32,\n\t19306: 0x5A34,\n\t19307: 0x5A11,\n\t19308: 0x5A23,\n\t19309: 0x5A13,\n\t19310: 0x5A40,\n\t19311: 0x5A67,\n\t19312: 0x5A4A,\n\t19313: 0x5A55,\n\t19314: 0x5A3C,\n\t19315: 0x5A62,\n\t19316: 0x5A75,\n\t19317: 0x80EC,\n\t19318: 0x5AAA,\n\t19319: 0x5A9B,\n\t19320: 0x5A77,\n\t19321: 0x5A7A,\n\t19322: 0x5ABE,\n\t19323: 0x5AEB,\n\t19324: 0x5AB2,\n\t19325: 0x5AD2,\n\t19326: 0x5AD4,\n\t19327: 0x5AB8,\n\t19328: 0x5AE0,\n\t19329: 0x5AE3,\n\t19330: 0x5AF1,\n\t19331: 0x5AD6,\n\t19332: 0x5AE6,\n\t19333: 0x5AD8,\n\t19334: 0x5ADC,\n\t19335: 0x5B09,\n\t19336: 0x5B17,\n\t19337: 0x5B16,\n\t19338: 0x5B32,\n\t19339: 0x5B37,\n\t19340: 0x5B40,\n\t19341: 0x5C15,\n\t19342: 0x5C1C,\n\t19343: 0x5B5A,\n\t19344: 0x5B65,\n\t19345: 0x5B73,\n\t19346: 0x5B51,\n\t19347: 0x5B53,\n\t19348: 0x5B62,\n\t19349: 0x9A75,\n\t19350: 0x9A77,\n\t19351: 0x9A78,\n\t19352: 0x9A7A,\n\t19353: 0x9A7F,\n\t19354: 0x9A7D,\n\t19355: 0x9A80,\n\t19356: 0x9A81,\n\t19357: 0x9A85,\n\t19358: 0x9A88,\n\t19359: 0x9A8A,\n\t19360: 0x9A90,\n\t19361: 0x9A92,\n\t19362: 0x9A93,\n\t19363: 0x9A96,\n\t19364: 0x9A98,\n\t19365: 0x9A9B,\n\t19366: 0x9A9C,\n\t19367: 0x9A9D,\n\t19368: 0x9A9F,\n\t19369: 0x9AA0,\n\t19370: 0x9AA2,\n\t19371: 0x9AA3,\n\t19372: 0x9AA5,\n\t19373: 0x9AA7,\n\t19374: 0x7E9F,\n\t19375: 0x7EA1,\n\t19376: 0x7EA3,\n\t19377: 0x7EA5,\n\t19378: 0x7EA8,\n\t19379: 0x7EA9,\n\t19380: 0x93CE,\n\t19381: 0x93CF,\n\t19382: 0x93D0,\n\t19383: 0x93D1,\n\t19384: 0x93D2,\n\t19385: 0x93D3,\n\t19386: 0x93D4,\n\t19387: 0x93D5,\n\t19388: 0x93D7,\n\t19389: 0x93D8,\n\t19390: 0x93D9,\n\t19391: 0x93DA,\n\t19392: 0x93DB,\n\t19393: 0x93DC,\n\t19394: 0x93DD,\n\t19395: 0x93DE,\n\t19396: 0x93DF,\n\t19397: 0x93E0,\n\t19398: 0x93E1,\n\t19399: 0x93E2,\n\t19400: 0x93E3,\n\t19401: 0x93E4,\n\t19402: 0x93E5,\n\t19403: 0x93E6,\n\t19404: 0x93E7,\n\t19405: 0x93E8,\n\t19406: 0x93E9,\n\t19407: 0x93EA,\n\t19408: 0x93EB,\n\t19409: 0x93EC,\n\t19410: 0x93ED,\n\t19411: 0x93EE,\n\t19412: 0x93EF,\n\t19413: 0x93F0,\n\t19414: 0x93F1,\n\t19415: 0x93F2,\n\t19416: 0x93F3,\n\t19417: 0x93F4,\n\t19418: 0x93F5,\n\t19419: 0x93F6,\n\t19420: 0x93F7,\n\t19421: 0x93F8,\n\t19422: 0x93F9,\n\t19423: 0x93FA,\n\t19424: 0x93FB,\n\t19425: 0x93FC,\n\t19426: 0x93FD,\n\t19427: 0x93FE,\n\t19428: 0x93FF,\n\t19429: 0x9400,\n\t19430: 0x9401,\n\t19431: 0x9402,\n\t19432: 0x9403,\n\t19433: 0x9404,\n\t19434: 0x9405,\n\t19435: 0x9406,\n\t19436: 0x9407,\n\t19437: 0x9408,\n\t19438: 0x9409,\n\t19439: 0x940A,\n\t19440: 0x940B,\n\t19441: 0x940C,\n\t19442: 0x940D,\n\t19443: 0x940E,\n\t19444: 0x940F,\n\t19445: 0x9410,\n\t19446: 0x9411,\n\t19447: 0x9412,\n\t19448: 0x9413,\n\t19449: 0x9414,\n\t19450: 0x9415,\n\t19451: 0x9416,\n\t19452: 0x9417,\n\t19453: 0x9418,\n\t19454: 0x9419,\n\t19455: 0x941A,\n\t19456: 0x941B,\n\t19457: 0x941C,\n\t19458: 0x941D,\n\t19459: 0x941E,\n\t19460: 0x941F,\n\t19461: 0x9420,\n\t19462: 0x9421,\n\t19463: 0x9422,\n\t19464: 0x9423,\n\t19465: 0x9424,\n\t19466: 0x9425,\n\t19467: 0x9426,\n\t19468: 0x9427,\n\t19469: 0x9428,\n\t19470: 0x9429,\n\t19471: 0x942A,\n\t19472: 0x942B,\n\t19473: 0x942C,\n\t19474: 0x942D,\n\t19475: 0x942E,\n\t19476: 0x7EAD,\n\t19477: 0x7EB0,\n\t19478: 0x7EBE,\n\t19479: 0x7EC0,\n\t19480: 0x7EC1,\n\t19481: 0x7EC2,\n\t19482: 0x7EC9,\n\t19483: 0x7ECB,\n\t19484: 0x7ECC,\n\t19485: 0x7ED0,\n\t19486: 0x7ED4,\n\t19487: 0x7ED7,\n\t19488: 0x7EDB,\n\t19489: 0x7EE0,\n\t19490: 0x7EE1,\n\t19491: 0x7EE8,\n\t19492: 0x7EEB,\n\t19493: 0x7EEE,\n\t19494: 0x7EEF,\n\t19495: 0x7EF1,\n\t19496: 0x7EF2,\n\t19497: 0x7F0D,\n\t19498: 0x7EF6,\n\t19499: 0x7EFA,\n\t19500: 0x7EFB,\n\t19501: 0x7EFE,\n\t19502: 0x7F01,\n\t19503: 0x7F02,\n\t19504: 0x7F03,\n\t19505: 0x7F07,\n\t19506: 0x7F08,\n\t19507: 0x7F0B,\n\t19508: 0x7F0C,\n\t19509: 0x7F0F,\n\t19510: 0x7F11,\n\t19511: 0x7F12,\n\t19512: 0x7F17,\n\t19513: 0x7F19,\n\t19514: 0x7F1C,\n\t19515: 0x7F1B,\n\t19516: 0x7F1F,\n\t19517: 0x7F21,\n\t19518: 0x7F22,\n\t19519: 0x7F23,\n\t19520: 0x7F24,\n\t19521: 0x7F25,\n\t19522: 0x7F26,\n\t19523: 0x7F27,\n\t19524: 0x7F2A,\n\t19525: 0x7F2B,\n\t19526: 0x7F2C,\n\t19527: 0x7F2D,\n\t19528: 0x7F2F,\n\t19529: 0x7F30,\n\t19530: 0x7F31,\n\t19531: 0x7F32,\n\t19532: 0x7F33,\n\t19533: 0x7F35,\n\t19534: 0x5E7A,\n\t19535: 0x757F,\n\t19536: 0x5DDB,\n\t19537: 0x753E,\n\t19538: 0x9095,\n\t19539: 0x738E,\n\t19540: 0x7391,\n\t19541: 0x73AE,\n\t19542: 0x73A2,\n\t19543: 0x739F,\n\t19544: 0x73CF,\n\t19545: 0x73C2,\n\t19546: 0x73D1,\n\t19547: 0x73B7,\n\t19548: 0x73B3,\n\t19549: 0x73C0,\n\t19550: 0x73C9,\n\t19551: 0x73C8,\n\t19552: 0x73E5,\n\t19553: 0x73D9,\n\t19554: 0x987C,\n\t19555: 0x740A,\n\t19556: 0x73E9,\n\t19557: 0x73E7,\n\t19558: 0x73DE,\n\t19559: 0x73BA,\n\t19560: 0x73F2,\n\t19561: 0x740F,\n\t19562: 0x742A,\n\t19563: 0x745B,\n\t19564: 0x7426,\n\t19565: 0x7425,\n\t19566: 0x7428,\n\t19567: 0x7430,\n\t19568: 0x742E,\n\t19569: 0x742C,\n\t19570: 0x942F,\n\t19571: 0x9430,\n\t19572: 0x9431,\n\t19573: 0x9432,\n\t19574: 0x9433,\n\t19575: 0x9434,\n\t19576: 0x9435,\n\t19577: 0x9436,\n\t19578: 0x9437,\n\t19579: 0x9438,\n\t19580: 0x9439,\n\t19581: 0x943A,\n\t19582: 0x943B,\n\t19583: 0x943C,\n\t19584: 0x943D,\n\t19585: 0x943F,\n\t19586: 0x9440,\n\t19587: 0x9441,\n\t19588: 0x9442,\n\t19589: 0x9443,\n\t19590: 0x9444,\n\t19591: 0x9445,\n\t19592: 0x9446,\n\t19593: 0x9447,\n\t19594: 0x9448,\n\t19595: 0x9449,\n\t19596: 0x944A,\n\t19597: 0x944B,\n\t19598: 0x944C,\n\t19599: 0x944D,\n\t19600: 0x944E,\n\t19601: 0x944F,\n\t19602: 0x9450,\n\t19603: 0x9451,\n\t19604: 0x9452,\n\t19605: 0x9453,\n\t19606: 0x9454,\n\t19607: 0x9455,\n\t19608: 0x9456,\n\t19609: 0x9457,\n\t19610: 0x9458,\n\t19611: 0x9459,\n\t19612: 0x945A,\n\t19613: 0x945B,\n\t19614: 0x945C,\n\t19615: 0x945D,\n\t19616: 0x945E,\n\t19617: 0x945F,\n\t19618: 0x9460,\n\t19619: 0x9461,\n\t19620: 0x9462,\n\t19621: 0x9463,\n\t19622: 0x9464,\n\t19623: 0x9465,\n\t19624: 0x9466,\n\t19625: 0x9467,\n\t19626: 0x9468,\n\t19627: 0x9469,\n\t19628: 0x946A,\n\t19629: 0x946C,\n\t19630: 0x946D,\n\t19631: 0x946E,\n\t19632: 0x946F,\n\t19633: 0x9470,\n\t19634: 0x9471,\n\t19635: 0x9472,\n\t19636: 0x9473,\n\t19637: 0x9474,\n\t19638: 0x9475,\n\t19639: 0x9476,\n\t19640: 0x9477,\n\t19641: 0x9478,\n\t19642: 0x9479,\n\t19643: 0x947A,\n\t19644: 0x947B,\n\t19645: 0x947C,\n\t19646: 0x947D,\n\t19647: 0x947E,\n\t19648: 0x947F,\n\t19649: 0x9480,\n\t19650: 0x9481,\n\t19651: 0x9482,\n\t19652: 0x9483,\n\t19653: 0x9484,\n\t19654: 0x9491,\n\t19655: 0x9496,\n\t19656: 0x9498,\n\t19657: 0x94C7,\n\t19658: 0x94CF,\n\t19659: 0x94D3,\n\t19660: 0x94D4,\n\t19661: 0x94DA,\n\t19662: 0x94E6,\n\t19663: 0x94FB,\n\t19664: 0x951C,\n\t19665: 0x9520,\n\t19666: 0x741B,\n\t19667: 0x741A,\n\t19668: 0x7441,\n\t19669: 0x745C,\n\t19670: 0x7457,\n\t19671: 0x7455,\n\t19672: 0x7459,\n\t19673: 0x7477,\n\t19674: 0x746D,\n\t19675: 0x747E,\n\t19676: 0x749C,\n\t19677: 0x748E,\n\t19678: 0x7480,\n\t19679: 0x7481,\n\t19680: 0x7487,\n\t19681: 0x748B,\n\t19682: 0x749E,\n\t19683: 0x74A8,\n\t19684: 0x74A9,\n\t19685: 0x7490,\n\t19686: 0x74A7,\n\t19687: 0x74D2,\n\t19688: 0x74BA,\n\t19689: 0x97EA,\n\t19690: 0x97EB,\n\t19691: 0x97EC,\n\t19692: 0x674C,\n\t19693: 0x6753,\n\t19694: 0x675E,\n\t19695: 0x6748,\n\t19696: 0x6769,\n\t19697: 0x67A5,\n\t19698: 0x6787,\n\t19699: 0x676A,\n\t19700: 0x6773,\n\t19701: 0x6798,\n\t19702: 0x67A7,\n\t19703: 0x6775,\n\t19704: 0x67A8,\n\t19705: 0x679E,\n\t19706: 0x67AD,\n\t19707: 0x678B,\n\t19708: 0x6777,\n\t19709: 0x677C,\n\t19710: 0x67F0,\n\t19711: 0x6809,\n\t19712: 0x67D8,\n\t19713: 0x680A,\n\t19714: 0x67E9,\n\t19715: 0x67B0,\n\t19716: 0x680C,\n\t19717: 0x67D9,\n\t19718: 0x67B5,\n\t19719: 0x67DA,\n\t19720: 0x67B3,\n\t19721: 0x67DD,\n\t19722: 0x6800,\n\t19723: 0x67C3,\n\t19724: 0x67B8,\n\t19725: 0x67E2,\n\t19726: 0x680E,\n\t19727: 0x67C1,\n\t19728: 0x67FD,\n\t19729: 0x6832,\n\t19730: 0x6833,\n\t19731: 0x6860,\n\t19732: 0x6861,\n\t19733: 0x684E,\n\t19734: 0x6862,\n\t19735: 0x6844,\n\t19736: 0x6864,\n\t19737: 0x6883,\n\t19738: 0x681D,\n\t19739: 0x6855,\n\t19740: 0x6866,\n\t19741: 0x6841,\n\t19742: 0x6867,\n\t19743: 0x6840,\n\t19744: 0x683E,\n\t19745: 0x684A,\n\t19746: 0x6849,\n\t19747: 0x6829,\n\t19748: 0x68B5,\n\t19749: 0x688F,\n\t19750: 0x6874,\n\t19751: 0x6877,\n\t19752: 0x6893,\n\t19753: 0x686B,\n\t19754: 0x68C2,\n\t19755: 0x696E,\n\t19756: 0x68FC,\n\t19757: 0x691F,\n\t19758: 0x6920,\n\t19759: 0x68F9,\n\t19760: 0x9527,\n\t19761: 0x9533,\n\t19762: 0x953D,\n\t19763: 0x9543,\n\t19764: 0x9548,\n\t19765: 0x954B,\n\t19766: 0x9555,\n\t19767: 0x955A,\n\t19768: 0x9560,\n\t19769: 0x956E,\n\t19770: 0x9574,\n\t19771: 0x9575,\n\t19772: 0x9577,\n\t19773: 0x9578,\n\t19774: 0x9579,\n\t19775: 0x957A,\n\t19776: 0x957B,\n\t19777: 0x957C,\n\t19778: 0x957D,\n\t19779: 0x957E,\n\t19780: 0x9580,\n\t19781: 0x9581,\n\t19782: 0x9582,\n\t19783: 0x9583,\n\t19784: 0x9584,\n\t19785: 0x9585,\n\t19786: 0x9586,\n\t19787: 0x9587,\n\t19788: 0x9588,\n\t19789: 0x9589,\n\t19790: 0x958A,\n\t19791: 0x958B,\n\t19792: 0x958C,\n\t19793: 0x958D,\n\t19794: 0x958E,\n\t19795: 0x958F,\n\t19796: 0x9590,\n\t19797: 0x9591,\n\t19798: 0x9592,\n\t19799: 0x9593,\n\t19800: 0x9594,\n\t19801: 0x9595,\n\t19802: 0x9596,\n\t19803: 0x9597,\n\t19804: 0x9598,\n\t19805: 0x9599,\n\t19806: 0x959A,\n\t19807: 0x959B,\n\t19808: 0x959C,\n\t19809: 0x959D,\n\t19810: 0x959E,\n\t19811: 0x959F,\n\t19812: 0x95A0,\n\t19813: 0x95A1,\n\t19814: 0x95A2,\n\t19815: 0x95A3,\n\t19816: 0x95A4,\n\t19817: 0x95A5,\n\t19818: 0x95A6,\n\t19819: 0x95A7,\n\t19820: 0x95A8,\n\t19821: 0x95A9,\n\t19822: 0x95AA,\n\t19823: 0x95AB,\n\t19824: 0x95AC,\n\t19825: 0x95AD,\n\t19826: 0x95AE,\n\t19827: 0x95AF,\n\t19828: 0x95B0,\n\t19829: 0x95B1,\n\t19830: 0x95B2,\n\t19831: 0x95B3,\n\t19832: 0x95B4,\n\t19833: 0x95B5,\n\t19834: 0x95B6,\n\t19835: 0x95B7,\n\t19836: 0x95B8,\n\t19837: 0x95B9,\n\t19838: 0x95BA,\n\t19839: 0x95BB,\n\t19840: 0x95BC,\n\t19841: 0x95BD,\n\t19842: 0x95BE,\n\t19843: 0x95BF,\n\t19844: 0x95C0,\n\t19845: 0x95C1,\n\t19846: 0x95C2,\n\t19847: 0x95C3,\n\t19848: 0x95C4,\n\t19849: 0x95C5,\n\t19850: 0x95C6,\n\t19851: 0x95C7,\n\t19852: 0x95C8,\n\t19853: 0x95C9,\n\t19854: 0x95CA,\n\t19855: 0x95CB,\n\t19856: 0x6924,\n\t19857: 0x68F0,\n\t19858: 0x690B,\n\t19859: 0x6901,\n\t19860: 0x6957,\n\t19861: 0x68E3,\n\t19862: 0x6910,\n\t19863: 0x6971,\n\t19864: 0x6939,\n\t19865: 0x6960,\n\t19866: 0x6942,\n\t19867: 0x695D,\n\t19868: 0x6984,\n\t19869: 0x696B,\n\t19870: 0x6980,\n\t19871: 0x6998,\n\t19872: 0x6978,\n\t19873: 0x6934,\n\t19874: 0x69CC,\n\t19875: 0x6987,\n\t19876: 0x6988,\n\t19877: 0x69CE,\n\t19878: 0x6989,\n\t19879: 0x6966,\n\t19880: 0x6963,\n\t19881: 0x6979,\n\t19882: 0x699B,\n\t19883: 0x69A7,\n\t19884: 0x69BB,\n\t19885: 0x69AB,\n\t19886: 0x69AD,\n\t19887: 0x69D4,\n\t19888: 0x69B1,\n\t19889: 0x69C1,\n\t19890: 0x69CA,\n\t19891: 0x69DF,\n\t19892: 0x6995,\n\t19893: 0x69E0,\n\t19894: 0x698D,\n\t19895: 0x69FF,\n\t19896: 0x6A2F,\n\t19897: 0x69ED,\n\t19898: 0x6A17,\n\t19899: 0x6A18,\n\t19900: 0x6A65,\n\t19901: 0x69F2,\n\t19902: 0x6A44,\n\t19903: 0x6A3E,\n\t19904: 0x6AA0,\n\t19905: 0x6A50,\n\t19906: 0x6A5B,\n\t19907: 0x6A35,\n\t19908: 0x6A8E,\n\t19909: 0x6A79,\n\t19910: 0x6A3D,\n\t19911: 0x6A28,\n\t19912: 0x6A58,\n\t19913: 0x6A7C,\n\t19914: 0x6A91,\n\t19915: 0x6A90,\n\t19916: 0x6AA9,\n\t19917: 0x6A97,\n\t19918: 0x6AAB,\n\t19919: 0x7337,\n\t19920: 0x7352,\n\t19921: 0x6B81,\n\t19922: 0x6B82,\n\t19923: 0x6B87,\n\t19924: 0x6B84,\n\t19925: 0x6B92,\n\t19926: 0x6B93,\n\t19927: 0x6B8D,\n\t19928: 0x6B9A,\n\t19929: 0x6B9B,\n\t19930: 0x6BA1,\n\t19931: 0x6BAA,\n\t19932: 0x8F6B,\n\t19933: 0x8F6D,\n\t19934: 0x8F71,\n\t19935: 0x8F72,\n\t19936: 0x8F73,\n\t19937: 0x8F75,\n\t19938: 0x8F76,\n\t19939: 0x8F78,\n\t19940: 0x8F77,\n\t19941: 0x8F79,\n\t19942: 0x8F7A,\n\t19943: 0x8F7C,\n\t19944: 0x8F7E,\n\t19945: 0x8F81,\n\t19946: 0x8F82,\n\t19947: 0x8F84,\n\t19948: 0x8F87,\n\t19949: 0x8F8B,\n\t19950: 0x95CC,\n\t19951: 0x95CD,\n\t19952: 0x95CE,\n\t19953: 0x95CF,\n\t19954: 0x95D0,\n\t19955: 0x95D1,\n\t19956: 0x95D2,\n\t19957: 0x95D3,\n\t19958: 0x95D4,\n\t19959: 0x95D5,\n\t19960: 0x95D6,\n\t19961: 0x95D7,\n\t19962: 0x95D8,\n\t19963: 0x95D9,\n\t19964: 0x95DA,\n\t19965: 0x95DB,\n\t19966: 0x95DC,\n\t19967: 0x95DD,\n\t19968: 0x95DE,\n\t19969: 0x95DF,\n\t19970: 0x95E0,\n\t19971: 0x95E1,\n\t19972: 0x95E2,\n\t19973: 0x95E3,\n\t19974: 0x95E4,\n\t19975: 0x95E5,\n\t19976: 0x95E6,\n\t19977: 0x95E7,\n\t19978: 0x95EC,\n\t19979: 0x95FF,\n\t19980: 0x9607,\n\t19981: 0x9613,\n\t19982: 0x9618,\n\t19983: 0x961B,\n\t19984: 0x961E,\n\t19985: 0x9620,\n\t19986: 0x9623,\n\t19987: 0x9624,\n\t19988: 0x9625,\n\t19989: 0x9626,\n\t19990: 0x9627,\n\t19991: 0x9628,\n\t19992: 0x9629,\n\t19993: 0x962B,\n\t19994: 0x962C,\n\t19995: 0x962D,\n\t19996: 0x962F,\n\t19997: 0x9630,\n\t19998: 0x9637,\n\t19999: 0x9638,\n\t20000: 0x9639,\n\t20001: 0x963A,\n\t20002: 0x963E,\n\t20003: 0x9641,\n\t20004: 0x9643,\n\t20005: 0x964A,\n\t20006: 0x964E,\n\t20007: 0x964F,\n\t20008: 0x9651,\n\t20009: 0x9652,\n\t20010: 0x9653,\n\t20011: 0x9656,\n\t20012: 0x9657,\n\t20013: 0x9658,\n\t20014: 0x9659,\n\t20015: 0x965A,\n\t20016: 0x965C,\n\t20017: 0x965D,\n\t20018: 0x965E,\n\t20019: 0x9660,\n\t20020: 0x9663,\n\t20021: 0x9665,\n\t20022: 0x9666,\n\t20023: 0x966B,\n\t20024: 0x966D,\n\t20025: 0x966E,\n\t20026: 0x966F,\n\t20027: 0x9670,\n\t20028: 0x9671,\n\t20029: 0x9673,\n\t20030: 0x9678,\n\t20031: 0x9679,\n\t20032: 0x967A,\n\t20033: 0x967B,\n\t20034: 0x967C,\n\t20035: 0x967D,\n\t20036: 0x967E,\n\t20037: 0x967F,\n\t20038: 0x9680,\n\t20039: 0x9681,\n\t20040: 0x9682,\n\t20041: 0x9683,\n\t20042: 0x9684,\n\t20043: 0x9687,\n\t20044: 0x9689,\n\t20045: 0x968A,\n\t20046: 0x8F8D,\n\t20047: 0x8F8E,\n\t20048: 0x8F8F,\n\t20049: 0x8F98,\n\t20050: 0x8F9A,\n\t20051: 0x8ECE,\n\t20052: 0x620B,\n\t20053: 0x6217,\n\t20054: 0x621B,\n\t20055: 0x621F,\n\t20056: 0x6222,\n\t20057: 0x6221,\n\t20058: 0x6225,\n\t20059: 0x6224,\n\t20060: 0x622C,\n\t20061: 0x81E7,\n\t20062: 0x74EF,\n\t20063: 0x74F4,\n\t20064: 0x74FF,\n\t20065: 0x750F,\n\t20066: 0x7511,\n\t20067: 0x7513,\n\t20068: 0x6534,\n\t20069: 0x65EE,\n\t20070: 0x65EF,\n\t20071: 0x65F0,\n\t20072: 0x660A,\n\t20073: 0x6619,\n\t20074: 0x6772,\n\t20075: 0x6603,\n\t20076: 0x6615,\n\t20077: 0x6600,\n\t20078: 0x7085,\n\t20079: 0x66F7,\n\t20080: 0x661D,\n\t20081: 0x6634,\n\t20082: 0x6631,\n\t20083: 0x6636,\n\t20084: 0x6635,\n\t20085: 0x8006,\n\t20086: 0x665F,\n\t20087: 0x6654,\n\t20088: 0x6641,\n\t20089: 0x664F,\n\t20090: 0x6656,\n\t20091: 0x6661,\n\t20092: 0x6657,\n\t20093: 0x6677,\n\t20094: 0x6684,\n\t20095: 0x668C,\n\t20096: 0x66A7,\n\t20097: 0x669D,\n\t20098: 0x66BE,\n\t20099: 0x66DB,\n\t20100: 0x66DC,\n\t20101: 0x66E6,\n\t20102: 0x66E9,\n\t20103: 0x8D32,\n\t20104: 0x8D33,\n\t20105: 0x8D36,\n\t20106: 0x8D3B,\n\t20107: 0x8D3D,\n\t20108: 0x8D40,\n\t20109: 0x8D45,\n\t20110: 0x8D46,\n\t20111: 0x8D48,\n\t20112: 0x8D49,\n\t20113: 0x8D47,\n\t20114: 0x8D4D,\n\t20115: 0x8D55,\n\t20116: 0x8D59,\n\t20117: 0x89C7,\n\t20118: 0x89CA,\n\t20119: 0x89CB,\n\t20120: 0x89CC,\n\t20121: 0x89CE,\n\t20122: 0x89CF,\n\t20123: 0x89D0,\n\t20124: 0x89D1,\n\t20125: 0x726E,\n\t20126: 0x729F,\n\t20127: 0x725D,\n\t20128: 0x7266,\n\t20129: 0x726F,\n\t20130: 0x727E,\n\t20131: 0x727F,\n\t20132: 0x7284,\n\t20133: 0x728B,\n\t20134: 0x728D,\n\t20135: 0x728F,\n\t20136: 0x7292,\n\t20137: 0x6308,\n\t20138: 0x6332,\n\t20139: 0x63B0,\n\t20140: 0x968C,\n\t20141: 0x968E,\n\t20142: 0x9691,\n\t20143: 0x9692,\n\t20144: 0x9693,\n\t20145: 0x9695,\n\t20146: 0x9696,\n\t20147: 0x969A,\n\t20148: 0x969B,\n\t20149: 0x969D,\n\t20150: 0x969E,\n\t20151: 0x969F,\n\t20152: 0x96A0,\n\t20153: 0x96A1,\n\t20154: 0x96A2,\n\t20155: 0x96A3,\n\t20156: 0x96A4,\n\t20157: 0x96A5,\n\t20158: 0x96A6,\n\t20159: 0x96A8,\n\t20160: 0x96A9,\n\t20161: 0x96AA,\n\t20162: 0x96AB,\n\t20163: 0x96AC,\n\t20164: 0x96AD,\n\t20165: 0x96AE,\n\t20166: 0x96AF,\n\t20167: 0x96B1,\n\t20168: 0x96B2,\n\t20169: 0x96B4,\n\t20170: 0x96B5,\n\t20171: 0x96B7,\n\t20172: 0x96B8,\n\t20173: 0x96BA,\n\t20174: 0x96BB,\n\t20175: 0x96BF,\n\t20176: 0x96C2,\n\t20177: 0x96C3,\n\t20178: 0x96C8,\n\t20179: 0x96CA,\n\t20180: 0x96CB,\n\t20181: 0x96D0,\n\t20182: 0x96D1,\n\t20183: 0x96D3,\n\t20184: 0x96D4,\n\t20185: 0x96D6,\n\t20186: 0x96D7,\n\t20187: 0x96D8,\n\t20188: 0x96D9,\n\t20189: 0x96DA,\n\t20190: 0x96DB,\n\t20191: 0x96DC,\n\t20192: 0x96DD,\n\t20193: 0x96DE,\n\t20194: 0x96DF,\n\t20195: 0x96E1,\n\t20196: 0x96E2,\n\t20197: 0x96E3,\n\t20198: 0x96E4,\n\t20199: 0x96E5,\n\t20200: 0x96E6,\n\t20201: 0x96E7,\n\t20202: 0x96EB,\n\t20203: 0x96EC,\n\t20204: 0x96ED,\n\t20205: 0x96EE,\n\t20206: 0x96F0,\n\t20207: 0x96F1,\n\t20208: 0x96F2,\n\t20209: 0x96F4,\n\t20210: 0x96F5,\n\t20211: 0x96F8,\n\t20212: 0x96FA,\n\t20213: 0x96FB,\n\t20214: 0x96FC,\n\t20215: 0x96FD,\n\t20216: 0x96FF,\n\t20217: 0x9702,\n\t20218: 0x9703,\n\t20219: 0x9705,\n\t20220: 0x970A,\n\t20221: 0x970B,\n\t20222: 0x970C,\n\t20223: 0x9710,\n\t20224: 0x9711,\n\t20225: 0x9712,\n\t20226: 0x9714,\n\t20227: 0x9715,\n\t20228: 0x9717,\n\t20229: 0x9718,\n\t20230: 0x9719,\n\t20231: 0x971A,\n\t20232: 0x971B,\n\t20233: 0x971D,\n\t20234: 0x971F,\n\t20235: 0x9720,\n\t20236: 0x643F,\n\t20237: 0x64D8,\n\t20238: 0x8004,\n\t20239: 0x6BEA,\n\t20240: 0x6BF3,\n\t20241: 0x6BFD,\n\t20242: 0x6BF5,\n\t20243: 0x6BF9,\n\t20244: 0x6C05,\n\t20245: 0x6C07,\n\t20246: 0x6C06,\n\t20247: 0x6C0D,\n\t20248: 0x6C15,\n\t20249: 0x6C18,\n\t20250: 0x6C19,\n\t20251: 0x6C1A,\n\t20252: 0x6C21,\n\t20253: 0x6C29,\n\t20254: 0x6C24,\n\t20255: 0x6C2A,\n\t20256: 0x6C32,\n\t20257: 0x6535,\n\t20258: 0x6555,\n\t20259: 0x656B,\n\t20260: 0x724D,\n\t20261: 0x7252,\n\t20262: 0x7256,\n\t20263: 0x7230,\n\t20264: 0x8662,\n\t20265: 0x5216,\n\t20266: 0x809F,\n\t20267: 0x809C,\n\t20268: 0x8093,\n\t20269: 0x80BC,\n\t20270: 0x670A,\n\t20271: 0x80BD,\n\t20272: 0x80B1,\n\t20273: 0x80AB,\n\t20274: 0x80AD,\n\t20275: 0x80B4,\n\t20276: 0x80B7,\n\t20277: 0x80E7,\n\t20278: 0x80E8,\n\t20279: 0x80E9,\n\t20280: 0x80EA,\n\t20281: 0x80DB,\n\t20282: 0x80C2,\n\t20283: 0x80C4,\n\t20284: 0x80D9,\n\t20285: 0x80CD,\n\t20286: 0x80D7,\n\t20287: 0x6710,\n\t20288: 0x80DD,\n\t20289: 0x80EB,\n\t20290: 0x80F1,\n\t20291: 0x80F4,\n\t20292: 0x80ED,\n\t20293: 0x810D,\n\t20294: 0x810E,\n\t20295: 0x80F2,\n\t20296: 0x80FC,\n\t20297: 0x6715,\n\t20298: 0x8112,\n\t20299: 0x8C5A,\n\t20300: 0x8136,\n\t20301: 0x811E,\n\t20302: 0x812C,\n\t20303: 0x8118,\n\t20304: 0x8132,\n\t20305: 0x8148,\n\t20306: 0x814C,\n\t20307: 0x8153,\n\t20308: 0x8174,\n\t20309: 0x8159,\n\t20310: 0x815A,\n\t20311: 0x8171,\n\t20312: 0x8160,\n\t20313: 0x8169,\n\t20314: 0x817C,\n\t20315: 0x817D,\n\t20316: 0x816D,\n\t20317: 0x8167,\n\t20318: 0x584D,\n\t20319: 0x5AB5,\n\t20320: 0x8188,\n\t20321: 0x8182,\n\t20322: 0x8191,\n\t20323: 0x6ED5,\n\t20324: 0x81A3,\n\t20325: 0x81AA,\n\t20326: 0x81CC,\n\t20327: 0x6726,\n\t20328: 0x81CA,\n\t20329: 0x81BB,\n\t20330: 0x9721,\n\t20331: 0x9722,\n\t20332: 0x9723,\n\t20333: 0x9724,\n\t20334: 0x9725,\n\t20335: 0x9726,\n\t20336: 0x9727,\n\t20337: 0x9728,\n\t20338: 0x9729,\n\t20339: 0x972B,\n\t20340: 0x972C,\n\t20341: 0x972E,\n\t20342: 0x972F,\n\t20343: 0x9731,\n\t20344: 0x9733,\n\t20345: 0x9734,\n\t20346: 0x9735,\n\t20347: 0x9736,\n\t20348: 0x9737,\n\t20349: 0x973A,\n\t20350: 0x973B,\n\t20351: 0x973C,\n\t20352: 0x973D,\n\t20353: 0x973F,\n\t20354: 0x9740,\n\t20355: 0x9741,\n\t20356: 0x9742,\n\t20357: 0x9743,\n\t20358: 0x9744,\n\t20359: 0x9745,\n\t20360: 0x9746,\n\t20361: 0x9747,\n\t20362: 0x9748,\n\t20363: 0x9749,\n\t20364: 0x974A,\n\t20365: 0x974B,\n\t20366: 0x974C,\n\t20367: 0x974D,\n\t20368: 0x974E,\n\t20369: 0x974F,\n\t20370: 0x9750,\n\t20371: 0x9751,\n\t20372: 0x9754,\n\t20373: 0x9755,\n\t20374: 0x9757,\n\t20375: 0x9758,\n\t20376: 0x975A,\n\t20377: 0x975C,\n\t20378: 0x975D,\n\t20379: 0x975F,\n\t20380: 0x9763,\n\t20381: 0x9764,\n\t20382: 0x9766,\n\t20383: 0x9767,\n\t20384: 0x9768,\n\t20385: 0x976A,\n\t20386: 0x976B,\n\t20387: 0x976C,\n\t20388: 0x976D,\n\t20389: 0x976E,\n\t20390: 0x976F,\n\t20391: 0x9770,\n\t20392: 0x9771,\n\t20393: 0x9772,\n\t20394: 0x9775,\n\t20395: 0x9777,\n\t20396: 0x9778,\n\t20397: 0x9779,\n\t20398: 0x977A,\n\t20399: 0x977B,\n\t20400: 0x977D,\n\t20401: 0x977E,\n\t20402: 0x977F,\n\t20403: 0x9780,\n\t20404: 0x9781,\n\t20405: 0x9782,\n\t20406: 0x9783,\n\t20407: 0x9784,\n\t20408: 0x9786,\n\t20409: 0x9787,\n\t20410: 0x9788,\n\t20411: 0x9789,\n\t20412: 0x978A,\n\t20413: 0x978C,\n\t20414: 0x978E,\n\t20415: 0x978F,\n\t20416: 0x9790,\n\t20417: 0x9793,\n\t20418: 0x9795,\n\t20419: 0x9796,\n\t20420: 0x9797,\n\t20421: 0x9799,\n\t20422: 0x979A,\n\t20423: 0x979B,\n\t20424: 0x979C,\n\t20425: 0x979D,\n\t20426: 0x81C1,\n\t20427: 0x81A6,\n\t20428: 0x6B24,\n\t20429: 0x6B37,\n\t20430: 0x6B39,\n\t20431: 0x6B43,\n\t20432: 0x6B46,\n\t20433: 0x6B59,\n\t20434: 0x98D1,\n\t20435: 0x98D2,\n\t20436: 0x98D3,\n\t20437: 0x98D5,\n\t20438: 0x98D9,\n\t20439: 0x98DA,\n\t20440: 0x6BB3,\n\t20441: 0x5F40,\n\t20442: 0x6BC2,\n\t20443: 0x89F3,\n\t20444: 0x6590,\n\t20445: 0x9F51,\n\t20446: 0x6593,\n\t20447: 0x65BC,\n\t20448: 0x65C6,\n\t20449: 0x65C4,\n\t20450: 0x65C3,\n\t20451: 0x65CC,\n\t20452: 0x65CE,\n\t20453: 0x65D2,\n\t20454: 0x65D6,\n\t20455: 0x7080,\n\t20456: 0x709C,\n\t20457: 0x7096,\n\t20458: 0x709D,\n\t20459: 0x70BB,\n\t20460: 0x70C0,\n\t20461: 0x70B7,\n\t20462: 0x70AB,\n\t20463: 0x70B1,\n\t20464: 0x70E8,\n\t20465: 0x70CA,\n\t20466: 0x7110,\n\t20467: 0x7113,\n\t20468: 0x7116,\n\t20469: 0x712F,\n\t20470: 0x7131,\n\t20471: 0x7173,\n\t20472: 0x715C,\n\t20473: 0x7168,\n\t20474: 0x7145,\n\t20475: 0x7172,\n\t20476: 0x714A,\n\t20477: 0x7178,\n\t20478: 0x717A,\n\t20479: 0x7198,\n\t20480: 0x71B3,\n\t20481: 0x71B5,\n\t20482: 0x71A8,\n\t20483: 0x71A0,\n\t20484: 0x71E0,\n\t20485: 0x71D4,\n\t20486: 0x71E7,\n\t20487: 0x71F9,\n\t20488: 0x721D,\n\t20489: 0x7228,\n\t20490: 0x706C,\n\t20491: 0x7118,\n\t20492: 0x7166,\n\t20493: 0x71B9,\n\t20494: 0x623E,\n\t20495: 0x623D,\n\t20496: 0x6243,\n\t20497: 0x6248,\n\t20498: 0x6249,\n\t20499: 0x793B,\n\t20500: 0x7940,\n\t20501: 0x7946,\n\t20502: 0x7949,\n\t20503: 0x795B,\n\t20504: 0x795C,\n\t20505: 0x7953,\n\t20506: 0x795A,\n\t20507: 0x7962,\n\t20508: 0x7957,\n\t20509: 0x7960,\n\t20510: 0x796F,\n\t20511: 0x7967,\n\t20512: 0x797A,\n\t20513: 0x7985,\n\t20514: 0x798A,\n\t20515: 0x799A,\n\t20516: 0x79A7,\n\t20517: 0x79B3,\n\t20518: 0x5FD1,\n\t20519: 0x5FD0,\n\t20520: 0x979E,\n\t20521: 0x979F,\n\t20522: 0x97A1,\n\t20523: 0x97A2,\n\t20524: 0x97A4,\n\t20525: 0x97A5,\n\t20526: 0x97A6,\n\t20527: 0x97A7,\n\t20528: 0x97A8,\n\t20529: 0x97A9,\n\t20530: 0x97AA,\n\t20531: 0x97AC,\n\t20532: 0x97AE,\n\t20533: 0x97B0,\n\t20534: 0x97B1,\n\t20535: 0x97B3,\n\t20536: 0x97B5,\n\t20537: 0x97B6,\n\t20538: 0x97B7,\n\t20539: 0x97B8,\n\t20540: 0x97B9,\n\t20541: 0x97BA,\n\t20542: 0x97BB,\n\t20543: 0x97BC,\n\t20544: 0x97BD,\n\t20545: 0x97BE,\n\t20546: 0x97BF,\n\t20547: 0x97C0,\n\t20548: 0x97C1,\n\t20549: 0x97C2,\n\t20550: 0x97C3,\n\t20551: 0x97C4,\n\t20552: 0x97C5,\n\t20553: 0x97C6,\n\t20554: 0x97C7,\n\t20555: 0x97C8,\n\t20556: 0x97C9,\n\t20557: 0x97CA,\n\t20558: 0x97CB,\n\t20559: 0x97CC,\n\t20560: 0x97CD,\n\t20561: 0x97CE,\n\t20562: 0x97CF,\n\t20563: 0x97D0,\n\t20564: 0x97D1,\n\t20565: 0x97D2,\n\t20566: 0x97D3,\n\t20567: 0x97D4,\n\t20568: 0x97D5,\n\t20569: 0x97D6,\n\t20570: 0x97D7,\n\t20571: 0x97D8,\n\t20572: 0x97D9,\n\t20573: 0x97DA,\n\t20574: 0x97DB,\n\t20575: 0x97DC,\n\t20576: 0x97DD,\n\t20577: 0x97DE,\n\t20578: 0x97DF,\n\t20579: 0x97E0,\n\t20580: 0x97E1,\n\t20581: 0x97E2,\n\t20582: 0x97E3,\n\t20583: 0x97E4,\n\t20584: 0x97E5,\n\t20585: 0x97E8,\n\t20586: 0x97EE,\n\t20587: 0x97EF,\n\t20588: 0x97F0,\n\t20589: 0x97F1,\n\t20590: 0x97F2,\n\t20591: 0x97F4,\n\t20592: 0x97F7,\n\t20593: 0x97F8,\n\t20594: 0x97F9,\n\t20595: 0x97FA,\n\t20596: 0x97FB,\n\t20597: 0x97FC,\n\t20598: 0x97FD,\n\t20599: 0x97FE,\n\t20600: 0x97FF,\n\t20601: 0x9800,\n\t20602: 0x9801,\n\t20603: 0x9802,\n\t20604: 0x9803,\n\t20605: 0x9804,\n\t20606: 0x9805,\n\t20607: 0x9806,\n\t20608: 0x9807,\n\t20609: 0x9808,\n\t20610: 0x9809,\n\t20611: 0x980A,\n\t20612: 0x980B,\n\t20613: 0x980C,\n\t20614: 0x980D,\n\t20615: 0x980E,\n\t20616: 0x603C,\n\t20617: 0x605D,\n\t20618: 0x605A,\n\t20619: 0x6067,\n\t20620: 0x6041,\n\t20621: 0x6059,\n\t20622: 0x6063,\n\t20623: 0x60AB,\n\t20624: 0x6106,\n\t20625: 0x610D,\n\t20626: 0x615D,\n\t20627: 0x61A9,\n\t20628: 0x619D,\n\t20629: 0x61CB,\n\t20630: 0x61D1,\n\t20631: 0x6206,\n\t20632: 0x8080,\n\t20633: 0x807F,\n\t20634: 0x6C93,\n\t20635: 0x6CF6,\n\t20636: 0x6DFC,\n\t20637: 0x77F6,\n\t20638: 0x77F8,\n\t20639: 0x7800,\n\t20640: 0x7809,\n\t20641: 0x7817,\n\t20642: 0x7818,\n\t20643: 0x7811,\n\t20644: 0x65AB,\n\t20645: 0x782D,\n\t20646: 0x781C,\n\t20647: 0x781D,\n\t20648: 0x7839,\n\t20649: 0x783A,\n\t20650: 0x783B,\n\t20651: 0x781F,\n\t20652: 0x783C,\n\t20653: 0x7825,\n\t20654: 0x782C,\n\t20655: 0x7823,\n\t20656: 0x7829,\n\t20657: 0x784E,\n\t20658: 0x786D,\n\t20659: 0x7856,\n\t20660: 0x7857,\n\t20661: 0x7826,\n\t20662: 0x7850,\n\t20663: 0x7847,\n\t20664: 0x784C,\n\t20665: 0x786A,\n\t20666: 0x789B,\n\t20667: 0x7893,\n\t20668: 0x789A,\n\t20669: 0x7887,\n\t20670: 0x789C,\n\t20671: 0x78A1,\n\t20672: 0x78A3,\n\t20673: 0x78B2,\n\t20674: 0x78B9,\n\t20675: 0x78A5,\n\t20676: 0x78D4,\n\t20677: 0x78D9,\n\t20678: 0x78C9,\n\t20679: 0x78EC,\n\t20680: 0x78F2,\n\t20681: 0x7905,\n\t20682: 0x78F4,\n\t20683: 0x7913,\n\t20684: 0x7924,\n\t20685: 0x791E,\n\t20686: 0x7934,\n\t20687: 0x9F9B,\n\t20688: 0x9EF9,\n\t20689: 0x9EFB,\n\t20690: 0x9EFC,\n\t20691: 0x76F1,\n\t20692: 0x7704,\n\t20693: 0x770D,\n\t20694: 0x76F9,\n\t20695: 0x7707,\n\t20696: 0x7708,\n\t20697: 0x771A,\n\t20698: 0x7722,\n\t20699: 0x7719,\n\t20700: 0x772D,\n\t20701: 0x7726,\n\t20702: 0x7735,\n\t20703: 0x7738,\n\t20704: 0x7750,\n\t20705: 0x7751,\n\t20706: 0x7747,\n\t20707: 0x7743,\n\t20708: 0x775A,\n\t20709: 0x7768,\n\t20710: 0x980F,\n\t20711: 0x9810,\n\t20712: 0x9811,\n\t20713: 0x9812,\n\t20714: 0x9813,\n\t20715: 0x9814,\n\t20716: 0x9815,\n\t20717: 0x9816,\n\t20718: 0x9817,\n\t20719: 0x9818,\n\t20720: 0x9819,\n\t20721: 0x981A,\n\t20722: 0x981B,\n\t20723: 0x981C,\n\t20724: 0x981D,\n\t20725: 0x981E,\n\t20726: 0x981F,\n\t20727: 0x9820,\n\t20728: 0x9821,\n\t20729: 0x9822,\n\t20730: 0x9823,\n\t20731: 0x9824,\n\t20732: 0x9825,\n\t20733: 0x9826,\n\t20734: 0x9827,\n\t20735: 0x9828,\n\t20736: 0x9829,\n\t20737: 0x982A,\n\t20738: 0x982B,\n\t20739: 0x982C,\n\t20740: 0x982D,\n\t20741: 0x982E,\n\t20742: 0x982F,\n\t20743: 0x9830,\n\t20744: 0x9831,\n\t20745: 0x9832,\n\t20746: 0x9833,\n\t20747: 0x9834,\n\t20748: 0x9835,\n\t20749: 0x9836,\n\t20750: 0x9837,\n\t20751: 0x9838,\n\t20752: 0x9839,\n\t20753: 0x983A,\n\t20754: 0x983B,\n\t20755: 0x983C,\n\t20756: 0x983D,\n\t20757: 0x983E,\n\t20758: 0x983F,\n\t20759: 0x9840,\n\t20760: 0x9841,\n\t20761: 0x9842,\n\t20762: 0x9843,\n\t20763: 0x9844,\n\t20764: 0x9845,\n\t20765: 0x9846,\n\t20766: 0x9847,\n\t20767: 0x9848,\n\t20768: 0x9849,\n\t20769: 0x984A,\n\t20770: 0x984B,\n\t20771: 0x984C,\n\t20772: 0x984D,\n\t20773: 0x984E,\n\t20774: 0x984F,\n\t20775: 0x9850,\n\t20776: 0x9851,\n\t20777: 0x9852,\n\t20778: 0x9853,\n\t20779: 0x9854,\n\t20780: 0x9855,\n\t20781: 0x9856,\n\t20782: 0x9857,\n\t20783: 0x9858,\n\t20784: 0x9859,\n\t20785: 0x985A,\n\t20786: 0x985B,\n\t20787: 0x985C,\n\t20788: 0x985D,\n\t20789: 0x985E,\n\t20790: 0x985F,\n\t20791: 0x9860,\n\t20792: 0x9861,\n\t20793: 0x9862,\n\t20794: 0x9863,\n\t20795: 0x9864,\n\t20796: 0x9865,\n\t20797: 0x9866,\n\t20798: 0x9867,\n\t20799: 0x9868,\n\t20800: 0x9869,\n\t20801: 0x986A,\n\t20802: 0x986B,\n\t20803: 0x986C,\n\t20804: 0x986D,\n\t20805: 0x986E,\n\t20806: 0x7762,\n\t20807: 0x7765,\n\t20808: 0x777F,\n\t20809: 0x778D,\n\t20810: 0x777D,\n\t20811: 0x7780,\n\t20812: 0x778C,\n\t20813: 0x7791,\n\t20814: 0x779F,\n\t20815: 0x77A0,\n\t20816: 0x77B0,\n\t20817: 0x77B5,\n\t20818: 0x77BD,\n\t20819: 0x753A,\n\t20820: 0x7540,\n\t20821: 0x754E,\n\t20822: 0x754B,\n\t20823: 0x7548,\n\t20824: 0x755B,\n\t20825: 0x7572,\n\t20826: 0x7579,\n\t20827: 0x7583,\n\t20828: 0x7F58,\n\t20829: 0x7F61,\n\t20830: 0x7F5F,\n\t20831: 0x8A48,\n\t20832: 0x7F68,\n\t20833: 0x7F74,\n\t20834: 0x7F71,\n\t20835: 0x7F79,\n\t20836: 0x7F81,\n\t20837: 0x7F7E,\n\t20838: 0x76CD,\n\t20839: 0x76E5,\n\t20840: 0x8832,\n\t20841: 0x9485,\n\t20842: 0x9486,\n\t20843: 0x9487,\n\t20844: 0x948B,\n\t20845: 0x948A,\n\t20846: 0x948C,\n\t20847: 0x948D,\n\t20848: 0x948F,\n\t20849: 0x9490,\n\t20850: 0x9494,\n\t20851: 0x9497,\n\t20852: 0x9495,\n\t20853: 0x949A,\n\t20854: 0x949B,\n\t20855: 0x949C,\n\t20856: 0x94A3,\n\t20857: 0x94A4,\n\t20858: 0x94AB,\n\t20859: 0x94AA,\n\t20860: 0x94AD,\n\t20861: 0x94AC,\n\t20862: 0x94AF,\n\t20863: 0x94B0,\n\t20864: 0x94B2,\n\t20865: 0x94B4,\n\t20866: 0x94B6,\n\t20867: 0x94B7,\n\t20868: 0x94B8,\n\t20869: 0x94B9,\n\t20870: 0x94BA,\n\t20871: 0x94BC,\n\t20872: 0x94BD,\n\t20873: 0x94BF,\n\t20874: 0x94C4,\n\t20875: 0x94C8,\n\t20876: 0x94C9,\n\t20877: 0x94CA,\n\t20878: 0x94CB,\n\t20879: 0x94CC,\n\t20880: 0x94CD,\n\t20881: 0x94CE,\n\t20882: 0x94D0,\n\t20883: 0x94D1,\n\t20884: 0x94D2,\n\t20885: 0x94D5,\n\t20886: 0x94D6,\n\t20887: 0x94D7,\n\t20888: 0x94D9,\n\t20889: 0x94D8,\n\t20890: 0x94DB,\n\t20891: 0x94DE,\n\t20892: 0x94DF,\n\t20893: 0x94E0,\n\t20894: 0x94E2,\n\t20895: 0x94E4,\n\t20896: 0x94E5,\n\t20897: 0x94E7,\n\t20898: 0x94E8,\n\t20899: 0x94EA,\n\t20900: 0x986F,\n\t20901: 0x9870,\n\t20902: 0x9871,\n\t20903: 0x9872,\n\t20904: 0x9873,\n\t20905: 0x9874,\n\t20906: 0x988B,\n\t20907: 0x988E,\n\t20908: 0x9892,\n\t20909: 0x9895,\n\t20910: 0x9899,\n\t20911: 0x98A3,\n\t20912: 0x98A8,\n\t20913: 0x98A9,\n\t20914: 0x98AA,\n\t20915: 0x98AB,\n\t20916: 0x98AC,\n\t20917: 0x98AD,\n\t20918: 0x98AE,\n\t20919: 0x98AF,\n\t20920: 0x98B0,\n\t20921: 0x98B1,\n\t20922: 0x98B2,\n\t20923: 0x98B3,\n\t20924: 0x98B4,\n\t20925: 0x98B5,\n\t20926: 0x98B6,\n\t20927: 0x98B7,\n\t20928: 0x98B8,\n\t20929: 0x98B9,\n\t20930: 0x98BA,\n\t20931: 0x98BB,\n\t20932: 0x98BC,\n\t20933: 0x98BD,\n\t20934: 0x98BE,\n\t20935: 0x98BF,\n\t20936: 0x98C0,\n\t20937: 0x98C1,\n\t20938: 0x98C2,\n\t20939: 0x98C3,\n\t20940: 0x98C4,\n\t20941: 0x98C5,\n\t20942: 0x98C6,\n\t20943: 0x98C7,\n\t20944: 0x98C8,\n\t20945: 0x98C9,\n\t20946: 0x98CA,\n\t20947: 0x98CB,\n\t20948: 0x98CC,\n\t20949: 0x98CD,\n\t20950: 0x98CF,\n\t20951: 0x98D0,\n\t20952: 0x98D4,\n\t20953: 0x98D6,\n\t20954: 0x98D7,\n\t20955: 0x98DB,\n\t20956: 0x98DC,\n\t20957: 0x98DD,\n\t20958: 0x98E0,\n\t20959: 0x98E1,\n\t20960: 0x98E2,\n\t20961: 0x98E3,\n\t20962: 0x98E4,\n\t20963: 0x98E5,\n\t20964: 0x98E6,\n\t20965: 0x98E9,\n\t20966: 0x98EA,\n\t20967: 0x98EB,\n\t20968: 0x98EC,\n\t20969: 0x98ED,\n\t20970: 0x98EE,\n\t20971: 0x98EF,\n\t20972: 0x98F0,\n\t20973: 0x98F1,\n\t20974: 0x98F2,\n\t20975: 0x98F3,\n\t20976: 0x98F4,\n\t20977: 0x98F5,\n\t20978: 0x98F6,\n\t20979: 0x98F7,\n\t20980: 0x98F8,\n\t20981: 0x98F9,\n\t20982: 0x98FA,\n\t20983: 0x98FB,\n\t20984: 0x98FC,\n\t20985: 0x98FD,\n\t20986: 0x98FE,\n\t20987: 0x98FF,\n\t20988: 0x9900,\n\t20989: 0x9901,\n\t20990: 0x9902,\n\t20991: 0x9903,\n\t20992: 0x9904,\n\t20993: 0x9905,\n\t20994: 0x9906,\n\t20995: 0x9907,\n\t20996: 0x94E9,\n\t20997: 0x94EB,\n\t20998: 0x94EE,\n\t20999: 0x94EF,\n\t21000: 0x94F3,\n\t21001: 0x94F4,\n\t21002: 0x94F5,\n\t21003: 0x94F7,\n\t21004: 0x94F9,\n\t21005: 0x94FC,\n\t21006: 0x94FD,\n\t21007: 0x94FF,\n\t21008: 0x9503,\n\t21009: 0x9502,\n\t21010: 0x9506,\n\t21011: 0x9507,\n\t21012: 0x9509,\n\t21013: 0x950A,\n\t21014: 0x950D,\n\t21015: 0x950E,\n\t21016: 0x950F,\n\t21017: 0x9512,\n\t21018: 0x9513,\n\t21019: 0x9514,\n\t21020: 0x9515,\n\t21021: 0x9516,\n\t21022: 0x9518,\n\t21023: 0x951B,\n\t21024: 0x951D,\n\t21025: 0x951E,\n\t21026: 0x951F,\n\t21027: 0x9522,\n\t21028: 0x952A,\n\t21029: 0x952B,\n\t21030: 0x9529,\n\t21031: 0x952C,\n\t21032: 0x9531,\n\t21033: 0x9532,\n\t21034: 0x9534,\n\t21035: 0x9536,\n\t21036: 0x9537,\n\t21037: 0x9538,\n\t21038: 0x953C,\n\t21039: 0x953E,\n\t21040: 0x953F,\n\t21041: 0x9542,\n\t21042: 0x9535,\n\t21043: 0x9544,\n\t21044: 0x9545,\n\t21045: 0x9546,\n\t21046: 0x9549,\n\t21047: 0x954C,\n\t21048: 0x954E,\n\t21049: 0x954F,\n\t21050: 0x9552,\n\t21051: 0x9553,\n\t21052: 0x9554,\n\t21053: 0x9556,\n\t21054: 0x9557,\n\t21055: 0x9558,\n\t21056: 0x9559,\n\t21057: 0x955B,\n\t21058: 0x955E,\n\t21059: 0x955F,\n\t21060: 0x955D,\n\t21061: 0x9561,\n\t21062: 0x9562,\n\t21063: 0x9564,\n\t21064: 0x9565,\n\t21065: 0x9566,\n\t21066: 0x9567,\n\t21067: 0x9568,\n\t21068: 0x9569,\n\t21069: 0x956A,\n\t21070: 0x956B,\n\t21071: 0x956C,\n\t21072: 0x956F,\n\t21073: 0x9571,\n\t21074: 0x9572,\n\t21075: 0x9573,\n\t21076: 0x953A,\n\t21077: 0x77E7,\n\t21078: 0x77EC,\n\t21079: 0x96C9,\n\t21080: 0x79D5,\n\t21081: 0x79ED,\n\t21082: 0x79E3,\n\t21083: 0x79EB,\n\t21084: 0x7A06,\n\t21085: 0x5D47,\n\t21086: 0x7A03,\n\t21087: 0x7A02,\n\t21088: 0x7A1E,\n\t21089: 0x7A14,\n\t21090: 0x9908,\n\t21091: 0x9909,\n\t21092: 0x990A,\n\t21093: 0x990B,\n\t21094: 0x990C,\n\t21095: 0x990E,\n\t21096: 0x990F,\n\t21097: 0x9911,\n\t21098: 0x9912,\n\t21099: 0x9913,\n\t21100: 0x9914,\n\t21101: 0x9915,\n\t21102: 0x9916,\n\t21103: 0x9917,\n\t21104: 0x9918,\n\t21105: 0x9919,\n\t21106: 0x991A,\n\t21107: 0x991B,\n\t21108: 0x991C,\n\t21109: 0x991D,\n\t21110: 0x991E,\n\t21111: 0x991F,\n\t21112: 0x9920,\n\t21113: 0x9921,\n\t21114: 0x9922,\n\t21115: 0x9923,\n\t21116: 0x9924,\n\t21117: 0x9925,\n\t21118: 0x9926,\n\t21119: 0x9927,\n\t21120: 0x9928,\n\t21121: 0x9929,\n\t21122: 0x992A,\n\t21123: 0x992B,\n\t21124: 0x992C,\n\t21125: 0x992D,\n\t21126: 0x992F,\n\t21127: 0x9930,\n\t21128: 0x9931,\n\t21129: 0x9932,\n\t21130: 0x9933,\n\t21131: 0x9934,\n\t21132: 0x9935,\n\t21133: 0x9936,\n\t21134: 0x9937,\n\t21135: 0x9938,\n\t21136: 0x9939,\n\t21137: 0x993A,\n\t21138: 0x993B,\n\t21139: 0x993C,\n\t21140: 0x993D,\n\t21141: 0x993E,\n\t21142: 0x993F,\n\t21143: 0x9940,\n\t21144: 0x9941,\n\t21145: 0x9942,\n\t21146: 0x9943,\n\t21147: 0x9944,\n\t21148: 0x9945,\n\t21149: 0x9946,\n\t21150: 0x9947,\n\t21151: 0x9948,\n\t21152: 0x9949,\n\t21153: 0x994A,\n\t21154: 0x994B,\n\t21155: 0x994C,\n\t21156: 0x994D,\n\t21157: 0x994E,\n\t21158: 0x994F,\n\t21159: 0x9950,\n\t21160: 0x9951,\n\t21161: 0x9952,\n\t21162: 0x9953,\n\t21163: 0x9956,\n\t21164: 0x9957,\n\t21165: 0x9958,\n\t21166: 0x9959,\n\t21167: 0x995A,\n\t21168: 0x995B,\n\t21169: 0x995C,\n\t21170: 0x995D,\n\t21171: 0x995E,\n\t21172: 0x995F,\n\t21173: 0x9960,\n\t21174: 0x9961,\n\t21175: 0x9962,\n\t21176: 0x9964,\n\t21177: 0x9966,\n\t21178: 0x9973,\n\t21179: 0x9978,\n\t21180: 0x9979,\n\t21181: 0x997B,\n\t21182: 0x997E,\n\t21183: 0x9982,\n\t21184: 0x9983,\n\t21185: 0x9989,\n\t21186: 0x7A39,\n\t21187: 0x7A37,\n\t21188: 0x7A51,\n\t21189: 0x9ECF,\n\t21190: 0x99A5,\n\t21191: 0x7A70,\n\t21192: 0x7688,\n\t21193: 0x768E,\n\t21194: 0x7693,\n\t21195: 0x7699,\n\t21196: 0x76A4,\n\t21197: 0x74DE,\n\t21198: 0x74E0,\n\t21199: 0x752C,\n\t21200: 0x9E20,\n\t21201: 0x9E22,\n\t21202: 0x9E28,\n\t21203: 0x9E29,\n\t21204: 0x9E2A,\n\t21205: 0x9E2B,\n\t21206: 0x9E2C,\n\t21207: 0x9E32,\n\t21208: 0x9E31,\n\t21209: 0x9E36,\n\t21210: 0x9E38,\n\t21211: 0x9E37,\n\t21212: 0x9E39,\n\t21213: 0x9E3A,\n\t21214: 0x9E3E,\n\t21215: 0x9E41,\n\t21216: 0x9E42,\n\t21217: 0x9E44,\n\t21218: 0x9E46,\n\t21219: 0x9E47,\n\t21220: 0x9E48,\n\t21221: 0x9E49,\n\t21222: 0x9E4B,\n\t21223: 0x9E4C,\n\t21224: 0x9E4E,\n\t21225: 0x9E51,\n\t21226: 0x9E55,\n\t21227: 0x9E57,\n\t21228: 0x9E5A,\n\t21229: 0x9E5B,\n\t21230: 0x9E5C,\n\t21231: 0x9E5E,\n\t21232: 0x9E63,\n\t21233: 0x9E66,\n\t21234: 0x9E67,\n\t21235: 0x9E68,\n\t21236: 0x9E69,\n\t21237: 0x9E6A,\n\t21238: 0x9E6B,\n\t21239: 0x9E6C,\n\t21240: 0x9E71,\n\t21241: 0x9E6D,\n\t21242: 0x9E73,\n\t21243: 0x7592,\n\t21244: 0x7594,\n\t21245: 0x7596,\n\t21246: 0x75A0,\n\t21247: 0x759D,\n\t21248: 0x75AC,\n\t21249: 0x75A3,\n\t21250: 0x75B3,\n\t21251: 0x75B4,\n\t21252: 0x75B8,\n\t21253: 0x75C4,\n\t21254: 0x75B1,\n\t21255: 0x75B0,\n\t21256: 0x75C3,\n\t21257: 0x75C2,\n\t21258: 0x75D6,\n\t21259: 0x75CD,\n\t21260: 0x75E3,\n\t21261: 0x75E8,\n\t21262: 0x75E6,\n\t21263: 0x75E4,\n\t21264: 0x75EB,\n\t21265: 0x75E7,\n\t21266: 0x7603,\n\t21267: 0x75F1,\n\t21268: 0x75FC,\n\t21269: 0x75FF,\n\t21270: 0x7610,\n\t21271: 0x7600,\n\t21272: 0x7605,\n\t21273: 0x760C,\n\t21274: 0x7617,\n\t21275: 0x760A,\n\t21276: 0x7625,\n\t21277: 0x7618,\n\t21278: 0x7615,\n\t21279: 0x7619,\n\t21280: 0x998C,\n\t21281: 0x998E,\n\t21282: 0x999A,\n\t21283: 0x999B,\n\t21284: 0x999C,\n\t21285: 0x999D,\n\t21286: 0x999E,\n\t21287: 0x999F,\n\t21288: 0x99A0,\n\t21289: 0x99A1,\n\t21290: 0x99A2,\n\t21291: 0x99A3,\n\t21292: 0x99A4,\n\t21293: 0x99A6,\n\t21294: 0x99A7,\n\t21295: 0x99A9,\n\t21296: 0x99AA,\n\t21297: 0x99AB,\n\t21298: 0x99AC,\n\t21299: 0x99AD,\n\t21300: 0x99AE,\n\t21301: 0x99AF,\n\t21302: 0x99B0,\n\t21303: 0x99B1,\n\t21304: 0x99B2,\n\t21305: 0x99B3,\n\t21306: 0x99B4,\n\t21307: 0x99B5,\n\t21308: 0x99B6,\n\t21309: 0x99B7,\n\t21310: 0x99B8,\n\t21311: 0x99B9,\n\t21312: 0x99BA,\n\t21313: 0x99BB,\n\t21314: 0x99BC,\n\t21315: 0x99BD,\n\t21316: 0x99BE,\n\t21317: 0x99BF,\n\t21318: 0x99C0,\n\t21319: 0x99C1,\n\t21320: 0x99C2,\n\t21321: 0x99C3,\n\t21322: 0x99C4,\n\t21323: 0x99C5,\n\t21324: 0x99C6,\n\t21325: 0x99C7,\n\t21326: 0x99C8,\n\t21327: 0x99C9,\n\t21328: 0x99CA,\n\t21329: 0x99CB,\n\t21330: 0x99CC,\n\t21331: 0x99CD,\n\t21332: 0x99CE,\n\t21333: 0x99CF,\n\t21334: 0x99D0,\n\t21335: 0x99D1,\n\t21336: 0x99D2,\n\t21337: 0x99D3,\n\t21338: 0x99D4,\n\t21339: 0x99D5,\n\t21340: 0x99D6,\n\t21341: 0x99D7,\n\t21342: 0x99D8,\n\t21343: 0x99D9,\n\t21344: 0x99DA,\n\t21345: 0x99DB,\n\t21346: 0x99DC,\n\t21347: 0x99DD,\n\t21348: 0x99DE,\n\t21349: 0x99DF,\n\t21350: 0x99E0,\n\t21351: 0x99E1,\n\t21352: 0x99E2,\n\t21353: 0x99E3,\n\t21354: 0x99E4,\n\t21355: 0x99E5,\n\t21356: 0x99E6,\n\t21357: 0x99E7,\n\t21358: 0x99E8,\n\t21359: 0x99E9,\n\t21360: 0x99EA,\n\t21361: 0x99EB,\n\t21362: 0x99EC,\n\t21363: 0x99ED,\n\t21364: 0x99EE,\n\t21365: 0x99EF,\n\t21366: 0x99F0,\n\t21367: 0x99F1,\n\t21368: 0x99F2,\n\t21369: 0x99F3,\n\t21370: 0x99F4,\n\t21371: 0x99F5,\n\t21372: 0x99F6,\n\t21373: 0x99F7,\n\t21374: 0x99F8,\n\t21375: 0x99F9,\n\t21376: 0x761B,\n\t21377: 0x763C,\n\t21378: 0x7622,\n\t21379: 0x7620,\n\t21380: 0x7640,\n\t21381: 0x762D,\n\t21382: 0x7630,\n\t21383: 0x763F,\n\t21384: 0x7635,\n\t21385: 0x7643,\n\t21386: 0x763E,\n\t21387: 0x7633,\n\t21388: 0x764D,\n\t21389: 0x765E,\n\t21390: 0x7654,\n\t21391: 0x765C,\n\t21392: 0x7656,\n\t21393: 0x766B,\n\t21394: 0x766F,\n\t21395: 0x7FCA,\n\t21396: 0x7AE6,\n\t21397: 0x7A78,\n\t21398: 0x7A79,\n\t21399: 0x7A80,\n\t21400: 0x7A86,\n\t21401: 0x7A88,\n\t21402: 0x7A95,\n\t21403: 0x7AA6,\n\t21404: 0x7AA0,\n\t21405: 0x7AAC,\n\t21406: 0x7AA8,\n\t21407: 0x7AAD,\n\t21408: 0x7AB3,\n\t21409: 0x8864,\n\t21410: 0x8869,\n\t21411: 0x8872,\n\t21412: 0x887D,\n\t21413: 0x887F,\n\t21414: 0x8882,\n\t21415: 0x88A2,\n\t21416: 0x88C6,\n\t21417: 0x88B7,\n\t21418: 0x88BC,\n\t21419: 0x88C9,\n\t21420: 0x88E2,\n\t21421: 0x88CE,\n\t21422: 0x88E3,\n\t21423: 0x88E5,\n\t21424: 0x88F1,\n\t21425: 0x891A,\n\t21426: 0x88FC,\n\t21427: 0x88E8,\n\t21428: 0x88FE,\n\t21429: 0x88F0,\n\t21430: 0x8921,\n\t21431: 0x8919,\n\t21432: 0x8913,\n\t21433: 0x891B,\n\t21434: 0x890A,\n\t21435: 0x8934,\n\t21436: 0x892B,\n\t21437: 0x8936,\n\t21438: 0x8941,\n\t21439: 0x8966,\n\t21440: 0x897B,\n\t21441: 0x758B,\n\t21442: 0x80E5,\n\t21443: 0x76B2,\n\t21444: 0x76B4,\n\t21445: 0x77DC,\n\t21446: 0x8012,\n\t21447: 0x8014,\n\t21448: 0x8016,\n\t21449: 0x801C,\n\t21450: 0x8020,\n\t21451: 0x8022,\n\t21452: 0x8025,\n\t21453: 0x8026,\n\t21454: 0x8027,\n\t21455: 0x8029,\n\t21456: 0x8028,\n\t21457: 0x8031,\n\t21458: 0x800B,\n\t21459: 0x8035,\n\t21460: 0x8043,\n\t21461: 0x8046,\n\t21462: 0x804D,\n\t21463: 0x8052,\n\t21464: 0x8069,\n\t21465: 0x8071,\n\t21466: 0x8983,\n\t21467: 0x9878,\n\t21468: 0x9880,\n\t21469: 0x9883,\n\t21470: 0x99FA,\n\t21471: 0x99FB,\n\t21472: 0x99FC,\n\t21473: 0x99FD,\n\t21474: 0x99FE,\n\t21475: 0x99FF,\n\t21476: 0x9A00,\n\t21477: 0x9A01,\n\t21478: 0x9A02,\n\t21479: 0x9A03,\n\t21480: 0x9A04,\n\t21481: 0x9A05,\n\t21482: 0x9A06,\n\t21483: 0x9A07,\n\t21484: 0x9A08,\n\t21485: 0x9A09,\n\t21486: 0x9A0A,\n\t21487: 0x9A0B,\n\t21488: 0x9A0C,\n\t21489: 0x9A0D,\n\t21490: 0x9A0E,\n\t21491: 0x9A0F,\n\t21492: 0x9A10,\n\t21493: 0x9A11,\n\t21494: 0x9A12,\n\t21495: 0x9A13,\n\t21496: 0x9A14,\n\t21497: 0x9A15,\n\t21498: 0x9A16,\n\t21499: 0x9A17,\n\t21500: 0x9A18,\n\t21501: 0x9A19,\n\t21502: 0x9A1A,\n\t21503: 0x9A1B,\n\t21504: 0x9A1C,\n\t21505: 0x9A1D,\n\t21506: 0x9A1E,\n\t21507: 0x9A1F,\n\t21508: 0x9A20,\n\t21509: 0x9A21,\n\t21510: 0x9A22,\n\t21511: 0x9A23,\n\t21512: 0x9A24,\n\t21513: 0x9A25,\n\t21514: 0x9A26,\n\t21515: 0x9A27,\n\t21516: 0x9A28,\n\t21517: 0x9A29,\n\t21518: 0x9A2A,\n\t21519: 0x9A2B,\n\t21520: 0x9A2C,\n\t21521: 0x9A2D,\n\t21522: 0x9A2E,\n\t21523: 0x9A2F,\n\t21524: 0x9A30,\n\t21525: 0x9A31,\n\t21526: 0x9A32,\n\t21527: 0x9A33,\n\t21528: 0x9A34,\n\t21529: 0x9A35,\n\t21530: 0x9A36,\n\t21531: 0x9A37,\n\t21532: 0x9A38,\n\t21533: 0x9A39,\n\t21534: 0x9A3A,\n\t21535: 0x9A3B,\n\t21536: 0x9A3C,\n\t21537: 0x9A3D,\n\t21538: 0x9A3E,\n\t21539: 0x9A3F,\n\t21540: 0x9A40,\n\t21541: 0x9A41,\n\t21542: 0x9A42,\n\t21543: 0x9A43,\n\t21544: 0x9A44,\n\t21545: 0x9A45,\n\t21546: 0x9A46,\n\t21547: 0x9A47,\n\t21548: 0x9A48,\n\t21549: 0x9A49,\n\t21550: 0x9A4A,\n\t21551: 0x9A4B,\n\t21552: 0x9A4C,\n\t21553: 0x9A4D,\n\t21554: 0x9A4E,\n\t21555: 0x9A4F,\n\t21556: 0x9A50,\n\t21557: 0x9A51,\n\t21558: 0x9A52,\n\t21559: 0x9A53,\n\t21560: 0x9A54,\n\t21561: 0x9A55,\n\t21562: 0x9A56,\n\t21563: 0x9A57,\n\t21564: 0x9A58,\n\t21565: 0x9A59,\n\t21566: 0x9889,\n\t21567: 0x988C,\n\t21568: 0x988D,\n\t21569: 0x988F,\n\t21570: 0x9894,\n\t21571: 0x989A,\n\t21572: 0x989B,\n\t21573: 0x989E,\n\t21574: 0x989F,\n\t21575: 0x98A1,\n\t21576: 0x98A2,\n\t21577: 0x98A5,\n\t21578: 0x98A6,\n\t21579: 0x864D,\n\t21580: 0x8654,\n\t21581: 0x866C,\n\t21582: 0x866E,\n\t21583: 0x867F,\n\t21584: 0x867A,\n\t21585: 0x867C,\n\t21586: 0x867B,\n\t21587: 0x86A8,\n\t21588: 0x868D,\n\t21589: 0x868B,\n\t21590: 0x86AC,\n\t21591: 0x869D,\n\t21592: 0x86A7,\n\t21593: 0x86A3,\n\t21594: 0x86AA,\n\t21595: 0x8693,\n\t21596: 0x86A9,\n\t21597: 0x86B6,\n\t21598: 0x86C4,\n\t21599: 0x86B5,\n\t21600: 0x86CE,\n\t21601: 0x86B0,\n\t21602: 0x86BA,\n\t21603: 0x86B1,\n\t21604: 0x86AF,\n\t21605: 0x86C9,\n\t21606: 0x86CF,\n\t21607: 0x86B4,\n\t21608: 0x86E9,\n\t21609: 0x86F1,\n\t21610: 0x86F2,\n\t21611: 0x86ED,\n\t21612: 0x86F3,\n\t21613: 0x86D0,\n\t21614: 0x8713,\n\t21615: 0x86DE,\n\t21616: 0x86F4,\n\t21617: 0x86DF,\n\t21618: 0x86D8,\n\t21619: 0x86D1,\n\t21620: 0x8703,\n\t21621: 0x8707,\n\t21622: 0x86F8,\n\t21623: 0x8708,\n\t21624: 0x870A,\n\t21625: 0x870D,\n\t21626: 0x8709,\n\t21627: 0x8723,\n\t21628: 0x873B,\n\t21629: 0x871E,\n\t21630: 0x8725,\n\t21631: 0x872E,\n\t21632: 0x871A,\n\t21633: 0x873E,\n\t21634: 0x8748,\n\t21635: 0x8734,\n\t21636: 0x8731,\n\t21637: 0x8729,\n\t21638: 0x8737,\n\t21639: 0x873F,\n\t21640: 0x8782,\n\t21641: 0x8722,\n\t21642: 0x877D,\n\t21643: 0x877E,\n\t21644: 0x877B,\n\t21645: 0x8760,\n\t21646: 0x8770,\n\t21647: 0x874C,\n\t21648: 0x876E,\n\t21649: 0x878B,\n\t21650: 0x8753,\n\t21651: 0x8763,\n\t21652: 0x877C,\n\t21653: 0x8764,\n\t21654: 0x8759,\n\t21655: 0x8765,\n\t21656: 0x8793,\n\t21657: 0x87AF,\n\t21658: 0x87A8,\n\t21659: 0x87D2,\n\t21660: 0x9A5A,\n\t21661: 0x9A5B,\n\t21662: 0x9A5C,\n\t21663: 0x9A5D,\n\t21664: 0x9A5E,\n\t21665: 0x9A5F,\n\t21666: 0x9A60,\n\t21667: 0x9A61,\n\t21668: 0x9A62,\n\t21669: 0x9A63,\n\t21670: 0x9A64,\n\t21671: 0x9A65,\n\t21672: 0x9A66,\n\t21673: 0x9A67,\n\t21674: 0x9A68,\n\t21675: 0x9A69,\n\t21676: 0x9A6A,\n\t21677: 0x9A6B,\n\t21678: 0x9A72,\n\t21679: 0x9A83,\n\t21680: 0x9A89,\n\t21681: 0x9A8D,\n\t21682: 0x9A8E,\n\t21683: 0x9A94,\n\t21684: 0x9A95,\n\t21685: 0x9A99,\n\t21686: 0x9AA6,\n\t21687: 0x9AA9,\n\t21688: 0x9AAA,\n\t21689: 0x9AAB,\n\t21690: 0x9AAC,\n\t21691: 0x9AAD,\n\t21692: 0x9AAE,\n\t21693: 0x9AAF,\n\t21694: 0x9AB2,\n\t21695: 0x9AB3,\n\t21696: 0x9AB4,\n\t21697: 0x9AB5,\n\t21698: 0x9AB9,\n\t21699: 0x9ABB,\n\t21700: 0x9ABD,\n\t21701: 0x9ABE,\n\t21702: 0x9ABF,\n\t21703: 0x9AC3,\n\t21704: 0x9AC4,\n\t21705: 0x9AC6,\n\t21706: 0x9AC7,\n\t21707: 0x9AC8,\n\t21708: 0x9AC9,\n\t21709: 0x9ACA,\n\t21710: 0x9ACD,\n\t21711: 0x9ACE,\n\t21712: 0x9ACF,\n\t21713: 0x9AD0,\n\t21714: 0x9AD2,\n\t21715: 0x9AD4,\n\t21716: 0x9AD5,\n\t21717: 0x9AD6,\n\t21718: 0x9AD7,\n\t21719: 0x9AD9,\n\t21720: 0x9ADA,\n\t21721: 0x9ADB,\n\t21722: 0x9ADC,\n\t21723: 0x9ADD,\n\t21724: 0x9ADE,\n\t21725: 0x9AE0,\n\t21726: 0x9AE2,\n\t21727: 0x9AE3,\n\t21728: 0x9AE4,\n\t21729: 0x9AE5,\n\t21730: 0x9AE7,\n\t21731: 0x9AE8,\n\t21732: 0x9AE9,\n\t21733: 0x9AEA,\n\t21734: 0x9AEC,\n\t21735: 0x9AEE,\n\t21736: 0x9AF0,\n\t21737: 0x9AF1,\n\t21738: 0x9AF2,\n\t21739: 0x9AF3,\n\t21740: 0x9AF4,\n\t21741: 0x9AF5,\n\t21742: 0x9AF6,\n\t21743: 0x9AF7,\n\t21744: 0x9AF8,\n\t21745: 0x9AFA,\n\t21746: 0x9AFC,\n\t21747: 0x9AFD,\n\t21748: 0x9AFE,\n\t21749: 0x9AFF,\n\t21750: 0x9B00,\n\t21751: 0x9B01,\n\t21752: 0x9B02,\n\t21753: 0x9B04,\n\t21754: 0x9B05,\n\t21755: 0x9B06,\n\t21756: 0x87C6,\n\t21757: 0x8788,\n\t21758: 0x8785,\n\t21759: 0x87AD,\n\t21760: 0x8797,\n\t21761: 0x8783,\n\t21762: 0x87AB,\n\t21763: 0x87E5,\n\t21764: 0x87AC,\n\t21765: 0x87B5,\n\t21766: 0x87B3,\n\t21767: 0x87CB,\n\t21768: 0x87D3,\n\t21769: 0x87BD,\n\t21770: 0x87D1,\n\t21771: 0x87C0,\n\t21772: 0x87CA,\n\t21773: 0x87DB,\n\t21774: 0x87EA,\n\t21775: 0x87E0,\n\t21776: 0x87EE,\n\t21777: 0x8816,\n\t21778: 0x8813,\n\t21779: 0x87FE,\n\t21780: 0x880A,\n\t21781: 0x881B,\n\t21782: 0x8821,\n\t21783: 0x8839,\n\t21784: 0x883C,\n\t21785: 0x7F36,\n\t21786: 0x7F42,\n\t21787: 0x7F44,\n\t21788: 0x7F45,\n\t21789: 0x8210,\n\t21790: 0x7AFA,\n\t21791: 0x7AFD,\n\t21792: 0x7B08,\n\t21793: 0x7B03,\n\t21794: 0x7B04,\n\t21795: 0x7B15,\n\t21796: 0x7B0A,\n\t21797: 0x7B2B,\n\t21798: 0x7B0F,\n\t21799: 0x7B47,\n\t21800: 0x7B38,\n\t21801: 0x7B2A,\n\t21802: 0x7B19,\n\t21803: 0x7B2E,\n\t21804: 0x7B31,\n\t21805: 0x7B20,\n\t21806: 0x7B25,\n\t21807: 0x7B24,\n\t21808: 0x7B33,\n\t21809: 0x7B3E,\n\t21810: 0x7B1E,\n\t21811: 0x7B58,\n\t21812: 0x7B5A,\n\t21813: 0x7B45,\n\t21814: 0x7B75,\n\t21815: 0x7B4C,\n\t21816: 0x7B5D,\n\t21817: 0x7B60,\n\t21818: 0x7B6E,\n\t21819: 0x7B7B,\n\t21820: 0x7B62,\n\t21821: 0x7B72,\n\t21822: 0x7B71,\n\t21823: 0x7B90,\n\t21824: 0x7BA6,\n\t21825: 0x7BA7,\n\t21826: 0x7BB8,\n\t21827: 0x7BAC,\n\t21828: 0x7B9D,\n\t21829: 0x7BA8,\n\t21830: 0x7B85,\n\t21831: 0x7BAA,\n\t21832: 0x7B9C,\n\t21833: 0x7BA2,\n\t21834: 0x7BAB,\n\t21835: 0x7BB4,\n\t21836: 0x7BD1,\n\t21837: 0x7BC1,\n\t21838: 0x7BCC,\n\t21839: 0x7BDD,\n\t21840: 0x7BDA,\n\t21841: 0x7BE5,\n\t21842: 0x7BE6,\n\t21843: 0x7BEA,\n\t21844: 0x7C0C,\n\t21845: 0x7BFE,\n\t21846: 0x7BFC,\n\t21847: 0x7C0F,\n\t21848: 0x7C16,\n\t21849: 0x7C0B,\n\t21850: 0x9B07,\n\t21851: 0x9B09,\n\t21852: 0x9B0A,\n\t21853: 0x9B0B,\n\t21854: 0x9B0C,\n\t21855: 0x9B0D,\n\t21856: 0x9B0E,\n\t21857: 0x9B10,\n\t21858: 0x9B11,\n\t21859: 0x9B12,\n\t21860: 0x9B14,\n\t21861: 0x9B15,\n\t21862: 0x9B16,\n\t21863: 0x9B17,\n\t21864: 0x9B18,\n\t21865: 0x9B19,\n\t21866: 0x9B1A,\n\t21867: 0x9B1B,\n\t21868: 0x9B1C,\n\t21869: 0x9B1D,\n\t21870: 0x9B1E,\n\t21871: 0x9B20,\n\t21872: 0x9B21,\n\t21873: 0x9B22,\n\t21874: 0x9B24,\n\t21875: 0x9B25,\n\t21876: 0x9B26,\n\t21877: 0x9B27,\n\t21878: 0x9B28,\n\t21879: 0x9B29,\n\t21880: 0x9B2A,\n\t21881: 0x9B2B,\n\t21882: 0x9B2C,\n\t21883: 0x9B2D,\n\t21884: 0x9B2E,\n\t21885: 0x9B30,\n\t21886: 0x9B31,\n\t21887: 0x9B33,\n\t21888: 0x9B34,\n\t21889: 0x9B35,\n\t21890: 0x9B36,\n\t21891: 0x9B37,\n\t21892: 0x9B38,\n\t21893: 0x9B39,\n\t21894: 0x9B3A,\n\t21895: 0x9B3D,\n\t21896: 0x9B3E,\n\t21897: 0x9B3F,\n\t21898: 0x9B40,\n\t21899: 0x9B46,\n\t21900: 0x9B4A,\n\t21901: 0x9B4B,\n\t21902: 0x9B4C,\n\t21903: 0x9B4E,\n\t21904: 0x9B50,\n\t21905: 0x9B52,\n\t21906: 0x9B53,\n\t21907: 0x9B55,\n\t21908: 0x9B56,\n\t21909: 0x9B57,\n\t21910: 0x9B58,\n\t21911: 0x9B59,\n\t21912: 0x9B5A,\n\t21913: 0x9B5B,\n\t21914: 0x9B5C,\n\t21915: 0x9B5D,\n\t21916: 0x9B5E,\n\t21917: 0x9B5F,\n\t21918: 0x9B60,\n\t21919: 0x9B61,\n\t21920: 0x9B62,\n\t21921: 0x9B63,\n\t21922: 0x9B64,\n\t21923: 0x9B65,\n\t21924: 0x9B66,\n\t21925: 0x9B67,\n\t21926: 0x9B68,\n\t21927: 0x9B69,\n\t21928: 0x9B6A,\n\t21929: 0x9B6B,\n\t21930: 0x9B6C,\n\t21931: 0x9B6D,\n\t21932: 0x9B6E,\n\t21933: 0x9B6F,\n\t21934: 0x9B70,\n\t21935: 0x9B71,\n\t21936: 0x9B72,\n\t21937: 0x9B73,\n\t21938: 0x9B74,\n\t21939: 0x9B75,\n\t21940: 0x9B76,\n\t21941: 0x9B77,\n\t21942: 0x9B78,\n\t21943: 0x9B79,\n\t21944: 0x9B7A,\n\t21945: 0x9B7B,\n\t21946: 0x7C1F,\n\t21947: 0x7C2A,\n\t21948: 0x7C26,\n\t21949: 0x7C38,\n\t21950: 0x7C41,\n\t21951: 0x7C40,\n\t21952: 0x81FE,\n\t21953: 0x8201,\n\t21954: 0x8202,\n\t21955: 0x8204,\n\t21956: 0x81EC,\n\t21957: 0x8844,\n\t21958: 0x8221,\n\t21959: 0x8222,\n\t21960: 0x8223,\n\t21961: 0x822D,\n\t21962: 0x822F,\n\t21963: 0x8228,\n\t21964: 0x822B,\n\t21965: 0x8238,\n\t21966: 0x823B,\n\t21967: 0x8233,\n\t21968: 0x8234,\n\t21969: 0x823E,\n\t21970: 0x8244,\n\t21971: 0x8249,\n\t21972: 0x824B,\n\t21973: 0x824F,\n\t21974: 0x825A,\n\t21975: 0x825F,\n\t21976: 0x8268,\n\t21977: 0x887E,\n\t21978: 0x8885,\n\t21979: 0x8888,\n\t21980: 0x88D8,\n\t21981: 0x88DF,\n\t21982: 0x895E,\n\t21983: 0x7F9D,\n\t21984: 0x7F9F,\n\t21985: 0x7FA7,\n\t21986: 0x7FAF,\n\t21987: 0x7FB0,\n\t21988: 0x7FB2,\n\t21989: 0x7C7C,\n\t21990: 0x6549,\n\t21991: 0x7C91,\n\t21992: 0x7C9D,\n\t21993: 0x7C9C,\n\t21994: 0x7C9E,\n\t21995: 0x7CA2,\n\t21996: 0x7CB2,\n\t21997: 0x7CBC,\n\t21998: 0x7CBD,\n\t21999: 0x7CC1,\n\t22000: 0x7CC7,\n\t22001: 0x7CCC,\n\t22002: 0x7CCD,\n\t22003: 0x7CC8,\n\t22004: 0x7CC5,\n\t22005: 0x7CD7,\n\t22006: 0x7CE8,\n\t22007: 0x826E,\n\t22008: 0x66A8,\n\t22009: 0x7FBF,\n\t22010: 0x7FCE,\n\t22011: 0x7FD5,\n\t22012: 0x7FE5,\n\t22013: 0x7FE1,\n\t22014: 0x7FE6,\n\t22015: 0x7FE9,\n\t22016: 0x7FEE,\n\t22017: 0x7FF3,\n\t22018: 0x7CF8,\n\t22019: 0x7D77,\n\t22020: 0x7DA6,\n\t22021: 0x7DAE,\n\t22022: 0x7E47,\n\t22023: 0x7E9B,\n\t22024: 0x9EB8,\n\t22025: 0x9EB4,\n\t22026: 0x8D73,\n\t22027: 0x8D84,\n\t22028: 0x8D94,\n\t22029: 0x8D91,\n\t22030: 0x8DB1,\n\t22031: 0x8D67,\n\t22032: 0x8D6D,\n\t22033: 0x8C47,\n\t22034: 0x8C49,\n\t22035: 0x914A,\n\t22036: 0x9150,\n\t22037: 0x914E,\n\t22038: 0x914F,\n\t22039: 0x9164,\n\t22040: 0x9B7C,\n\t22041: 0x9B7D,\n\t22042: 0x9B7E,\n\t22043: 0x9B7F,\n\t22044: 0x9B80,\n\t22045: 0x9B81,\n\t22046: 0x9B82,\n\t22047: 0x9B83,\n\t22048: 0x9B84,\n\t22049: 0x9B85,\n\t22050: 0x9B86,\n\t22051: 0x9B87,\n\t22052: 0x9B88,\n\t22053: 0x9B89,\n\t22054: 0x9B8A,\n\t22055: 0x9B8B,\n\t22056: 0x9B8C,\n\t22057: 0x9B8D,\n\t22058: 0x9B8E,\n\t22059: 0x9B8F,\n\t22060: 0x9B90,\n\t22061: 0x9B91,\n\t22062: 0x9B92,\n\t22063: 0x9B93,\n\t22064: 0x9B94,\n\t22065: 0x9B95,\n\t22066: 0x9B96,\n\t22067: 0x9B97,\n\t22068: 0x9B98,\n\t22069: 0x9B99,\n\t22070: 0x9B9A,\n\t22071: 0x9B9B,\n\t22072: 0x9B9C,\n\t22073: 0x9B9D,\n\t22074: 0x9B9E,\n\t22075: 0x9B9F,\n\t22076: 0x9BA0,\n\t22077: 0x9BA1,\n\t22078: 0x9BA2,\n\t22079: 0x9BA3,\n\t22080: 0x9BA4,\n\t22081: 0x9BA5,\n\t22082: 0x9BA6,\n\t22083: 0x9BA7,\n\t22084: 0x9BA8,\n\t22085: 0x9BA9,\n\t22086: 0x9BAA,\n\t22087: 0x9BAB,\n\t22088: 0x9BAC,\n\t22089: 0x9BAD,\n\t22090: 0x9BAE,\n\t22091: 0x9BAF,\n\t22092: 0x9BB0,\n\t22093: 0x9BB1,\n\t22094: 0x9BB2,\n\t22095: 0x9BB3,\n\t22096: 0x9BB4,\n\t22097: 0x9BB5,\n\t22098: 0x9BB6,\n\t22099: 0x9BB7,\n\t22100: 0x9BB8,\n\t22101: 0x9BB9,\n\t22102: 0x9BBA,\n\t22103: 0x9BBB,\n\t22104: 0x9BBC,\n\t22105: 0x9BBD,\n\t22106: 0x9BBE,\n\t22107: 0x9BBF,\n\t22108: 0x9BC0,\n\t22109: 0x9BC1,\n\t22110: 0x9BC2,\n\t22111: 0x9BC3,\n\t22112: 0x9BC4,\n\t22113: 0x9BC5,\n\t22114: 0x9BC6,\n\t22115: 0x9BC7,\n\t22116: 0x9BC8,\n\t22117: 0x9BC9,\n\t22118: 0x9BCA,\n\t22119: 0x9BCB,\n\t22120: 0x9BCC,\n\t22121: 0x9BCD,\n\t22122: 0x9BCE,\n\t22123: 0x9BCF,\n\t22124: 0x9BD0,\n\t22125: 0x9BD1,\n\t22126: 0x9BD2,\n\t22127: 0x9BD3,\n\t22128: 0x9BD4,\n\t22129: 0x9BD5,\n\t22130: 0x9BD6,\n\t22131: 0x9BD7,\n\t22132: 0x9BD8,\n\t22133: 0x9BD9,\n\t22134: 0x9BDA,\n\t22135: 0x9BDB,\n\t22136: 0x9162,\n\t22137: 0x9161,\n\t22138: 0x9170,\n\t22139: 0x9169,\n\t22140: 0x916F,\n\t22141: 0x917D,\n\t22142: 0x917E,\n\t22143: 0x9172,\n\t22144: 0x9174,\n\t22145: 0x9179,\n\t22146: 0x918C,\n\t22147: 0x9185,\n\t22148: 0x9190,\n\t22149: 0x918D,\n\t22150: 0x9191,\n\t22151: 0x91A2,\n\t22152: 0x91A3,\n\t22153: 0x91AA,\n\t22154: 0x91AD,\n\t22155: 0x91AE,\n\t22156: 0x91AF,\n\t22157: 0x91B5,\n\t22158: 0x91B4,\n\t22159: 0x91BA,\n\t22160: 0x8C55,\n\t22161: 0x9E7E,\n\t22162: 0x8DB8,\n\t22163: 0x8DEB,\n\t22164: 0x8E05,\n\t22165: 0x8E59,\n\t22166: 0x8E69,\n\t22167: 0x8DB5,\n\t22168: 0x8DBF,\n\t22169: 0x8DBC,\n\t22170: 0x8DBA,\n\t22171: 0x8DC4,\n\t22172: 0x8DD6,\n\t22173: 0x8DD7,\n\t22174: 0x8DDA,\n\t22175: 0x8DDE,\n\t22176: 0x8DCE,\n\t22177: 0x8DCF,\n\t22178: 0x8DDB,\n\t22179: 0x8DC6,\n\t22180: 0x8DEC,\n\t22181: 0x8DF7,\n\t22182: 0x8DF8,\n\t22183: 0x8DE3,\n\t22184: 0x8DF9,\n\t22185: 0x8DFB,\n\t22186: 0x8DE4,\n\t22187: 0x8E09,\n\t22188: 0x8DFD,\n\t22189: 0x8E14,\n\t22190: 0x8E1D,\n\t22191: 0x8E1F,\n\t22192: 0x8E2C,\n\t22193: 0x8E2E,\n\t22194: 0x8E23,\n\t22195: 0x8E2F,\n\t22196: 0x8E3A,\n\t22197: 0x8E40,\n\t22198: 0x8E39,\n\t22199: 0x8E35,\n\t22200: 0x8E3D,\n\t22201: 0x8E31,\n\t22202: 0x8E49,\n\t22203: 0x8E41,\n\t22204: 0x8E42,\n\t22205: 0x8E51,\n\t22206: 0x8E52,\n\t22207: 0x8E4A,\n\t22208: 0x8E70,\n\t22209: 0x8E76,\n\t22210: 0x8E7C,\n\t22211: 0x8E6F,\n\t22212: 0x8E74,\n\t22213: 0x8E85,\n\t22214: 0x8E8F,\n\t22215: 0x8E94,\n\t22216: 0x8E90,\n\t22217: 0x8E9C,\n\t22218: 0x8E9E,\n\t22219: 0x8C78,\n\t22220: 0x8C82,\n\t22221: 0x8C8A,\n\t22222: 0x8C85,\n\t22223: 0x8C98,\n\t22224: 0x8C94,\n\t22225: 0x659B,\n\t22226: 0x89D6,\n\t22227: 0x89DE,\n\t22228: 0x89DA,\n\t22229: 0x89DC,\n\t22230: 0x9BDC,\n\t22231: 0x9BDD,\n\t22232: 0x9BDE,\n\t22233: 0x9BDF,\n\t22234: 0x9BE0,\n\t22235: 0x9BE1,\n\t22236: 0x9BE2,\n\t22237: 0x9BE3,\n\t22238: 0x9BE4,\n\t22239: 0x9BE5,\n\t22240: 0x9BE6,\n\t22241: 0x9BE7,\n\t22242: 0x9BE8,\n\t22243: 0x9BE9,\n\t22244: 0x9BEA,\n\t22245: 0x9BEB,\n\t22246: 0x9BEC,\n\t22247: 0x9BED,\n\t22248: 0x9BEE,\n\t22249: 0x9BEF,\n\t22250: 0x9BF0,\n\t22251: 0x9BF1,\n\t22252: 0x9BF2,\n\t22253: 0x9BF3,\n\t22254: 0x9BF4,\n\t22255: 0x9BF5,\n\t22256: 0x9BF6,\n\t22257: 0x9BF7,\n\t22258: 0x9BF8,\n\t22259: 0x9BF9,\n\t22260: 0x9BFA,\n\t22261: 0x9BFB,\n\t22262: 0x9BFC,\n\t22263: 0x9BFD,\n\t22264: 0x9BFE,\n\t22265: 0x9BFF,\n\t22266: 0x9C00,\n\t22267: 0x9C01,\n\t22268: 0x9C02,\n\t22269: 0x9C03,\n\t22270: 0x9C04,\n\t22271: 0x9C05,\n\t22272: 0x9C06,\n\t22273: 0x9C07,\n\t22274: 0x9C08,\n\t22275: 0x9C09,\n\t22276: 0x9C0A,\n\t22277: 0x9C0B,\n\t22278: 0x9C0C,\n\t22279: 0x9C0D,\n\t22280: 0x9C0E,\n\t22281: 0x9C0F,\n\t22282: 0x9C10,\n\t22283: 0x9C11,\n\t22284: 0x9C12,\n\t22285: 0x9C13,\n\t22286: 0x9C14,\n\t22287: 0x9C15,\n\t22288: 0x9C16,\n\t22289: 0x9C17,\n\t22290: 0x9C18,\n\t22291: 0x9C19,\n\t22292: 0x9C1A,\n\t22293: 0x9C1B,\n\t22294: 0x9C1C,\n\t22295: 0x9C1D,\n\t22296: 0x9C1E,\n\t22297: 0x9C1F,\n\t22298: 0x9C20,\n\t22299: 0x9C21,\n\t22300: 0x9C22,\n\t22301: 0x9C23,\n\t22302: 0x9C24,\n\t22303: 0x9C25,\n\t22304: 0x9C26,\n\t22305: 0x9C27,\n\t22306: 0x9C28,\n\t22307: 0x9C29,\n\t22308: 0x9C2A,\n\t22309: 0x9C2B,\n\t22310: 0x9C2C,\n\t22311: 0x9C2D,\n\t22312: 0x9C2E,\n\t22313: 0x9C2F,\n\t22314: 0x9C30,\n\t22315: 0x9C31,\n\t22316: 0x9C32,\n\t22317: 0x9C33,\n\t22318: 0x9C34,\n\t22319: 0x9C35,\n\t22320: 0x9C36,\n\t22321: 0x9C37,\n\t22322: 0x9C38,\n\t22323: 0x9C39,\n\t22324: 0x9C3A,\n\t22325: 0x9C3B,\n\t22326: 0x89E5,\n\t22327: 0x89EB,\n\t22328: 0x89EF,\n\t22329: 0x8A3E,\n\t22330: 0x8B26,\n\t22331: 0x9753,\n\t22332: 0x96E9,\n\t22333: 0x96F3,\n\t22334: 0x96EF,\n\t22335: 0x9706,\n\t22336: 0x9701,\n\t22337: 0x9708,\n\t22338: 0x970F,\n\t22339: 0x970E,\n\t22340: 0x972A,\n\t22341: 0x972D,\n\t22342: 0x9730,\n\t22343: 0x973E,\n\t22344: 0x9F80,\n\t22345: 0x9F83,\n\t22346: 0x9F85,\n\t22347: 0x9F86,\n\t22348: 0x9F87,\n\t22349: 0x9F88,\n\t22350: 0x9F89,\n\t22351: 0x9F8A,\n\t22352: 0x9F8C,\n\t22353: 0x9EFE,\n\t22354: 0x9F0B,\n\t22355: 0x9F0D,\n\t22356: 0x96B9,\n\t22357: 0x96BC,\n\t22358: 0x96BD,\n\t22359: 0x96CE,\n\t22360: 0x96D2,\n\t22361: 0x77BF,\n\t22362: 0x96E0,\n\t22363: 0x928E,\n\t22364: 0x92AE,\n\t22365: 0x92C8,\n\t22366: 0x933E,\n\t22367: 0x936A,\n\t22368: 0x93CA,\n\t22369: 0x938F,\n\t22370: 0x943E,\n\t22371: 0x946B,\n\t22372: 0x9C7F,\n\t22373: 0x9C82,\n\t22374: 0x9C85,\n\t22375: 0x9C86,\n\t22376: 0x9C87,\n\t22377: 0x9C88,\n\t22378: 0x7A23,\n\t22379: 0x9C8B,\n\t22380: 0x9C8E,\n\t22381: 0x9C90,\n\t22382: 0x9C91,\n\t22383: 0x9C92,\n\t22384: 0x9C94,\n\t22385: 0x9C95,\n\t22386: 0x9C9A,\n\t22387: 0x9C9B,\n\t22388: 0x9C9E,\n\t22389: 0x9C9F,\n\t22390: 0x9CA0,\n\t22391: 0x9CA1,\n\t22392: 0x9CA2,\n\t22393: 0x9CA3,\n\t22394: 0x9CA5,\n\t22395: 0x9CA6,\n\t22396: 0x9CA7,\n\t22397: 0x9CA8,\n\t22398: 0x9CA9,\n\t22399: 0x9CAB,\n\t22400: 0x9CAD,\n\t22401: 0x9CAE,\n\t22402: 0x9CB0,\n\t22403: 0x9CB1,\n\t22404: 0x9CB2,\n\t22405: 0x9CB3,\n\t22406: 0x9CB4,\n\t22407: 0x9CB5,\n\t22408: 0x9CB6,\n\t22409: 0x9CB7,\n\t22410: 0x9CBA,\n\t22411: 0x9CBB,\n\t22412: 0x9CBC,\n\t22413: 0x9CBD,\n\t22414: 0x9CC4,\n\t22415: 0x9CC5,\n\t22416: 0x9CC6,\n\t22417: 0x9CC7,\n\t22418: 0x9CCA,\n\t22419: 0x9CCB,\n\t22420: 0x9C3C,\n\t22421: 0x9C3D,\n\t22422: 0x9C3E,\n\t22423: 0x9C3F,\n\t22424: 0x9C40,\n\t22425: 0x9C41,\n\t22426: 0x9C42,\n\t22427: 0x9C43,\n\t22428: 0x9C44,\n\t22429: 0x9C45,\n\t22430: 0x9C46,\n\t22431: 0x9C47,\n\t22432: 0x9C48,\n\t22433: 0x9C49,\n\t22434: 0x9C4A,\n\t22435: 0x9C4B,\n\t22436: 0x9C4C,\n\t22437: 0x9C4D,\n\t22438: 0x9C4E,\n\t22439: 0x9C4F,\n\t22440: 0x9C50,\n\t22441: 0x9C51,\n\t22442: 0x9C52,\n\t22443: 0x9C53,\n\t22444: 0x9C54,\n\t22445: 0x9C55,\n\t22446: 0x9C56,\n\t22447: 0x9C57,\n\t22448: 0x9C58,\n\t22449: 0x9C59,\n\t22450: 0x9C5A,\n\t22451: 0x9C5B,\n\t22452: 0x9C5C,\n\t22453: 0x9C5D,\n\t22454: 0x9C5E,\n\t22455: 0x9C5F,\n\t22456: 0x9C60,\n\t22457: 0x9C61,\n\t22458: 0x9C62,\n\t22459: 0x9C63,\n\t22460: 0x9C64,\n\t22461: 0x9C65,\n\t22462: 0x9C66,\n\t22463: 0x9C67,\n\t22464: 0x9C68,\n\t22465: 0x9C69,\n\t22466: 0x9C6A,\n\t22467: 0x9C6B,\n\t22468: 0x9C6C,\n\t22469: 0x9C6D,\n\t22470: 0x9C6E,\n\t22471: 0x9C6F,\n\t22472: 0x9C70,\n\t22473: 0x9C71,\n\t22474: 0x9C72,\n\t22475: 0x9C73,\n\t22476: 0x9C74,\n\t22477: 0x9C75,\n\t22478: 0x9C76,\n\t22479: 0x9C77,\n\t22480: 0x9C78,\n\t22481: 0x9C79,\n\t22482: 0x9C7A,\n\t22483: 0x9C7B,\n\t22484: 0x9C7D,\n\t22485: 0x9C7E,\n\t22486: 0x9C80,\n\t22487: 0x9C83,\n\t22488: 0x9C84,\n\t22489: 0x9C89,\n\t22490: 0x9C8A,\n\t22491: 0x9C8C,\n\t22492: 0x9C8F,\n\t22493: 0x9C93,\n\t22494: 0x9C96,\n\t22495: 0x9C97,\n\t22496: 0x9C98,\n\t22497: 0x9C99,\n\t22498: 0x9C9D,\n\t22499: 0x9CAA,\n\t22500: 0x9CAC,\n\t22501: 0x9CAF,\n\t22502: 0x9CB9,\n\t22503: 0x9CBE,\n\t22504: 0x9CBF,\n\t22505: 0x9CC0,\n\t22506: 0x9CC1,\n\t22507: 0x9CC2,\n\t22508: 0x9CC8,\n\t22509: 0x9CC9,\n\t22510: 0x9CD1,\n\t22511: 0x9CD2,\n\t22512: 0x9CDA,\n\t22513: 0x9CDB,\n\t22514: 0x9CE0,\n\t22515: 0x9CE1,\n\t22516: 0x9CCC,\n\t22517: 0x9CCD,\n\t22518: 0x9CCE,\n\t22519: 0x9CCF,\n\t22520: 0x9CD0,\n\t22521: 0x9CD3,\n\t22522: 0x9CD4,\n\t22523: 0x9CD5,\n\t22524: 0x9CD7,\n\t22525: 0x9CD8,\n\t22526: 0x9CD9,\n\t22527: 0x9CDC,\n\t22528: 0x9CDD,\n\t22529: 0x9CDF,\n\t22530: 0x9CE2,\n\t22531: 0x977C,\n\t22532: 0x9785,\n\t22533: 0x9791,\n\t22534: 0x9792,\n\t22535: 0x9794,\n\t22536: 0x97AF,\n\t22537: 0x97AB,\n\t22538: 0x97A3,\n\t22539: 0x97B2,\n\t22540: 0x97B4,\n\t22541: 0x9AB1,\n\t22542: 0x9AB0,\n\t22543: 0x9AB7,\n\t22544: 0x9E58,\n\t22545: 0x9AB6,\n\t22546: 0x9ABA,\n\t22547: 0x9ABC,\n\t22548: 0x9AC1,\n\t22549: 0x9AC0,\n\t22550: 0x9AC5,\n\t22551: 0x9AC2,\n\t22552: 0x9ACB,\n\t22553: 0x9ACC,\n\t22554: 0x9AD1,\n\t22555: 0x9B45,\n\t22556: 0x9B43,\n\t22557: 0x9B47,\n\t22558: 0x9B49,\n\t22559: 0x9B48,\n\t22560: 0x9B4D,\n\t22561: 0x9B51,\n\t22562: 0x98E8,\n\t22563: 0x990D,\n\t22564: 0x992E,\n\t22565: 0x9955,\n\t22566: 0x9954,\n\t22567: 0x9ADF,\n\t22568: 0x9AE1,\n\t22569: 0x9AE6,\n\t22570: 0x9AEF,\n\t22571: 0x9AEB,\n\t22572: 0x9AFB,\n\t22573: 0x9AED,\n\t22574: 0x9AF9,\n\t22575: 0x9B08,\n\t22576: 0x9B0F,\n\t22577: 0x9B13,\n\t22578: 0x9B1F,\n\t22579: 0x9B23,\n\t22580: 0x9EBD,\n\t22581: 0x9EBE,\n\t22582: 0x7E3B,\n\t22583: 0x9E82,\n\t22584: 0x9E87,\n\t22585: 0x9E88,\n\t22586: 0x9E8B,\n\t22587: 0x9E92,\n\t22588: 0x93D6,\n\t22589: 0x9E9D,\n\t22590: 0x9E9F,\n\t22591: 0x9EDB,\n\t22592: 0x9EDC,\n\t22593: 0x9EDD,\n\t22594: 0x9EE0,\n\t22595: 0x9EDF,\n\t22596: 0x9EE2,\n\t22597: 0x9EE9,\n\t22598: 0x9EE7,\n\t22599: 0x9EE5,\n\t22600: 0x9EEA,\n\t22601: 0x9EEF,\n\t22602: 0x9F22,\n\t22603: 0x9F2C,\n\t22604: 0x9F2F,\n\t22605: 0x9F39,\n\t22606: 0x9F37,\n\t22607: 0x9F3D,\n\t22608: 0x9F3E,\n\t22609: 0x9F44,\n\t22610: 0x9CE3,\n\t22611: 0x9CE4,\n\t22612: 0x9CE5,\n\t22613: 0x9CE6,\n\t22614: 0x9CE7,\n\t22615: 0x9CE8,\n\t22616: 0x9CE9,\n\t22617: 0x9CEA,\n\t22618: 0x9CEB,\n\t22619: 0x9CEC,\n\t22620: 0x9CED,\n\t22621: 0x9CEE,\n\t22622: 0x9CEF,\n\t22623: 0x9CF0,\n\t22624: 0x9CF1,\n\t22625: 0x9CF2,\n\t22626: 0x9CF3,\n\t22627: 0x9CF4,\n\t22628: 0x9CF5,\n\t22629: 0x9CF6,\n\t22630: 0x9CF7,\n\t22631: 0x9CF8,\n\t22632: 0x9CF9,\n\t22633: 0x9CFA,\n\t22634: 0x9CFB,\n\t22635: 0x9CFC,\n\t22636: 0x9CFD,\n\t22637: 0x9CFE,\n\t22638: 0x9CFF,\n\t22639: 0x9D00,\n\t22640: 0x9D01,\n\t22641: 0x9D02,\n\t22642: 0x9D03,\n\t22643: 0x9D04,\n\t22644: 0x9D05,\n\t22645: 0x9D06,\n\t22646: 0x9D07,\n\t22647: 0x9D08,\n\t22648: 0x9D09,\n\t22649: 0x9D0A,\n\t22650: 0x9D0B,\n\t22651: 0x9D0C,\n\t22652: 0x9D0D,\n\t22653: 0x9D0E,\n\t22654: 0x9D0F,\n\t22655: 0x9D10,\n\t22656: 0x9D11,\n\t22657: 0x9D12,\n\t22658: 0x9D13,\n\t22659: 0x9D14,\n\t22660: 0x9D15,\n\t22661: 0x9D16,\n\t22662: 0x9D17,\n\t22663: 0x9D18,\n\t22664: 0x9D19,\n\t22665: 0x9D1A,\n\t22666: 0x9D1B,\n\t22667: 0x9D1C,\n\t22668: 0x9D1D,\n\t22669: 0x9D1E,\n\t22670: 0x9D1F,\n\t22671: 0x9D20,\n\t22672: 0x9D21,\n\t22673: 0x9D22,\n\t22674: 0x9D23,\n\t22675: 0x9D24,\n\t22676: 0x9D25,\n\t22677: 0x9D26,\n\t22678: 0x9D27,\n\t22679: 0x9D28,\n\t22680: 0x9D29,\n\t22681: 0x9D2A,\n\t22682: 0x9D2B,\n\t22683: 0x9D2C,\n\t22684: 0x9D2D,\n\t22685: 0x9D2E,\n\t22686: 0x9D2F,\n\t22687: 0x9D30,\n\t22688: 0x9D31,\n\t22689: 0x9D32,\n\t22690: 0x9D33,\n\t22691: 0x9D34,\n\t22692: 0x9D35,\n\t22693: 0x9D36,\n\t22694: 0x9D37,\n\t22695: 0x9D38,\n\t22696: 0x9D39,\n\t22697: 0x9D3A,\n\t22698: 0x9D3B,\n\t22699: 0x9D3C,\n\t22700: 0x9D3D,\n\t22701: 0x9D3E,\n\t22702: 0x9D3F,\n\t22703: 0x9D40,\n\t22704: 0x9D41,\n\t22705: 0x9D42,\n\t22800: 0x9D43,\n\t22801: 0x9D44,\n\t22802: 0x9D45,\n\t22803: 0x9D46,\n\t22804: 0x9D47,\n\t22805: 0x9D48,\n\t22806: 0x9D49,\n\t22807: 0x9D4A,\n\t22808: 0x9D4B,\n\t22809: 0x9D4C,\n\t22810: 0x9D4D,\n\t22811: 0x9D4E,\n\t22812: 0x9D4F,\n\t22813: 0x9D50,\n\t22814: 0x9D51,\n\t22815: 0x9D52,\n\t22816: 0x9D53,\n\t22817: 0x9D54,\n\t22818: 0x9D55,\n\t22819: 0x9D56,\n\t22820: 0x9D57,\n\t22821: 0x9D58,\n\t22822: 0x9D59,\n\t22823: 0x9D5A,\n\t22824: 0x9D5B,\n\t22825: 0x9D5C,\n\t22826: 0x9D5D,\n\t22827: 0x9D5E,\n\t22828: 0x9D5F,\n\t22829: 0x9D60,\n\t22830: 0x9D61,\n\t22831: 0x9D62,\n\t22832: 0x9D63,\n\t22833: 0x9D64,\n\t22834: 0x9D65,\n\t22835: 0x9D66,\n\t22836: 0x9D67,\n\t22837: 0x9D68,\n\t22838: 0x9D69,\n\t22839: 0x9D6A,\n\t22840: 0x9D6B,\n\t22841: 0x9D6C,\n\t22842: 0x9D6D,\n\t22843: 0x9D6E,\n\t22844: 0x9D6F,\n\t22845: 0x9D70,\n\t22846: 0x9D71,\n\t22847: 0x9D72,\n\t22848: 0x9D73,\n\t22849: 0x9D74,\n\t22850: 0x9D75,\n\t22851: 0x9D76,\n\t22852: 0x9D77,\n\t22853: 0x9D78,\n\t22854: 0x9D79,\n\t22855: 0x9D7A,\n\t22856: 0x9D7B,\n\t22857: 0x9D7C,\n\t22858: 0x9D7D,\n\t22859: 0x9D7E,\n\t22860: 0x9D7F,\n\t22861: 0x9D80,\n\t22862: 0x9D81,\n\t22863: 0x9D82,\n\t22864: 0x9D83,\n\t22865: 0x9D84,\n\t22866: 0x9D85,\n\t22867: 0x9D86,\n\t22868: 0x9D87,\n\t22869: 0x9D88,\n\t22870: 0x9D89,\n\t22871: 0x9D8A,\n\t22872: 0x9D8B,\n\t22873: 0x9D8C,\n\t22874: 0x9D8D,\n\t22875: 0x9D8E,\n\t22876: 0x9D8F,\n\t22877: 0x9D90,\n\t22878: 0x9D91,\n\t22879: 0x9D92,\n\t22880: 0x9D93,\n\t22881: 0x9D94,\n\t22882: 0x9D95,\n\t22883: 0x9D96,\n\t22884: 0x9D97,\n\t22885: 0x9D98,\n\t22886: 0x9D99,\n\t22887: 0x9D9A,\n\t22888: 0x9D9B,\n\t22889: 0x9D9C,\n\t22890: 0x9D9D,\n\t22891: 0x9D9E,\n\t22892: 0x9D9F,\n\t22893: 0x9DA0,\n\t22894: 0x9DA1,\n\t22895: 0x9DA2,\n\t22990: 0x9DA3,\n\t22991: 0x9DA4,\n\t22992: 0x9DA5,\n\t22993: 0x9DA6,\n\t22994: 0x9DA7,\n\t22995: 0x9DA8,\n\t22996: 0x9DA9,\n\t22997: 0x9DAA,\n\t22998: 0x9DAB,\n\t22999: 0x9DAC,\n\t23000: 0x9DAD,\n\t23001: 0x9DAE,\n\t23002: 0x9DAF,\n\t23003: 0x9DB0,\n\t23004: 0x9DB1,\n\t23005: 0x9DB2,\n\t23006: 0x9DB3,\n\t23007: 0x9DB4,\n\t23008: 0x9DB5,\n\t23009: 0x9DB6,\n\t23010: 0x9DB7,\n\t23011: 0x9DB8,\n\t23012: 0x9DB9,\n\t23013: 0x9DBA,\n\t23014: 0x9DBB,\n\t23015: 0x9DBC,\n\t23016: 0x9DBD,\n\t23017: 0x9DBE,\n\t23018: 0x9DBF,\n\t23019: 0x9DC0,\n\t23020: 0x9DC1,\n\t23021: 0x9DC2,\n\t23022: 0x9DC3,\n\t23023: 0x9DC4,\n\t23024: 0x9DC5,\n\t23025: 0x9DC6,\n\t23026: 0x9DC7,\n\t23027: 0x9DC8,\n\t23028: 0x9DC9,\n\t23029: 0x9DCA,\n\t23030: 0x9DCB,\n\t23031: 0x9DCC,\n\t23032: 0x9DCD,\n\t23033: 0x9DCE,\n\t23034: 0x9DCF,\n\t23035: 0x9DD0,\n\t23036: 0x9DD1,\n\t23037: 0x9DD2,\n\t23038: 0x9DD3,\n\t23039: 0x9DD4,\n\t23040: 0x9DD5,\n\t23041: 0x9DD6,\n\t23042: 0x9DD7,\n\t23043: 0x9DD8,\n\t23044: 0x9DD9,\n\t23045: 0x9DDA,\n\t23046: 0x9DDB,\n\t23047: 0x9DDC,\n\t23048: 0x9DDD,\n\t23049: 0x9DDE,\n\t23050: 0x9DDF,\n\t23051: 0x9DE0,\n\t23052: 0x9DE1,\n\t23053: 0x9DE2,\n\t23054: 0x9DE3,\n\t23055: 0x9DE4,\n\t23056: 0x9DE5,\n\t23057: 0x9DE6,\n\t23058: 0x9DE7,\n\t23059: 0x9DE8,\n\t23060: 0x9DE9,\n\t23061: 0x9DEA,\n\t23062: 0x9DEB,\n\t23063: 0x9DEC,\n\t23064: 0x9DED,\n\t23065: 0x9DEE,\n\t23066: 0x9DEF,\n\t23067: 0x9DF0,\n\t23068: 0x9DF1,\n\t23069: 0x9DF2,\n\t23070: 0x9DF3,\n\t23071: 0x9DF4,\n\t23072: 0x9DF5,\n\t23073: 0x9DF6,\n\t23074: 0x9DF7,\n\t23075: 0x9DF8,\n\t23076: 0x9DF9,\n\t23077: 0x9DFA,\n\t23078: 0x9DFB,\n\t23079: 0x9DFC,\n\t23080: 0x9DFD,\n\t23081: 0x9DFE,\n\t23082: 0x9DFF,\n\t23083: 0x9E00,\n\t23084: 0x9E01,\n\t23085: 0x9E02,\n\t23180: 0x9E03,\n\t23181: 0x9E04,\n\t23182: 0x9E05,\n\t23183: 0x9E06,\n\t23184: 0x9E07,\n\t23185: 0x9E08,\n\t23186: 0x9E09,\n\t23187: 0x9E0A,\n\t23188: 0x9E0B,\n\t23189: 0x9E0C,\n\t23190: 0x9E0D,\n\t23191: 0x9E0E,\n\t23192: 0x9E0F,\n\t23193: 0x9E10,\n\t23194: 0x9E11,\n\t23195: 0x9E12,\n\t23196: 0x9E13,\n\t23197: 0x9E14,\n\t23198: 0x9E15,\n\t23199: 0x9E16,\n\t23200: 0x9E17,\n\t23201: 0x9E18,\n\t23202: 0x9E19,\n\t23203: 0x9E1A,\n\t23204: 0x9E1B,\n\t23205: 0x9E1C,\n\t23206: 0x9E1D,\n\t23207: 0x9E1E,\n\t23208: 0x9E24,\n\t23209: 0x9E27,\n\t23210: 0x9E2E,\n\t23211: 0x9E30,\n\t23212: 0x9E34,\n\t23213: 0x9E3B,\n\t23214: 0x9E3C,\n\t23215: 0x9E40,\n\t23216: 0x9E4D,\n\t23217: 0x9E50,\n\t23218: 0x9E52,\n\t23219: 0x9E53,\n\t23220: 0x9E54,\n\t23221: 0x9E56,\n\t23222: 0x9E59,\n\t23223: 0x9E5D,\n\t23224: 0x9E5F,\n\t23225: 0x9E60,\n\t23226: 0x9E61,\n\t23227: 0x9E62,\n\t23228: 0x9E65,\n\t23229: 0x9E6E,\n\t23230: 0x9E6F,\n\t23231: 0x9E72,\n\t23232: 0x9E74,\n\t23233: 0x9E75,\n\t23234: 0x9E76,\n\t23235: 0x9E77,\n\t23236: 0x9E78,\n\t23237: 0x9E79,\n\t23238: 0x9E7A,\n\t23239: 0x9E7B,\n\t23240: 0x9E7C,\n\t23241: 0x9E7D,\n\t23242: 0x9E80,\n\t23243: 0x9E81,\n\t23244: 0x9E83,\n\t23245: 0x9E84,\n\t23246: 0x9E85,\n\t23247: 0x9E86,\n\t23248: 0x9E89,\n\t23249: 0x9E8A,\n\t23250: 0x9E8C,\n\t23251: 0x9E8D,\n\t23252: 0x9E8E,\n\t23253: 0x9E8F,\n\t23254: 0x9E90,\n\t23255: 0x9E91,\n\t23256: 0x9E94,\n\t23257: 0x9E95,\n\t23258: 0x9E96,\n\t23259: 0x9E97,\n\t23260: 0x9E98,\n\t23261: 0x9E99,\n\t23262: 0x9E9A,\n\t23263: 0x9E9B,\n\t23264: 0x9E9C,\n\t23265: 0x9E9E,\n\t23266: 0x9EA0,\n\t23267: 0x9EA1,\n\t23268: 0x9EA2,\n\t23269: 0x9EA3,\n\t23270: 0x9EA4,\n\t23271: 0x9EA5,\n\t23272: 0x9EA7,\n\t23273: 0x9EA8,\n\t23274: 0x9EA9,\n\t23275: 0x9EAA,\n\t23370: 0x9EAB,\n\t23371: 0x9EAC,\n\t23372: 0x9EAD,\n\t23373: 0x9EAE,\n\t23374: 0x9EAF,\n\t23375: 0x9EB0,\n\t23376: 0x9EB1,\n\t23377: 0x9EB2,\n\t23378: 0x9EB3,\n\t23379: 0x9EB5,\n\t23380: 0x9EB6,\n\t23381: 0x9EB7,\n\t23382: 0x9EB9,\n\t23383: 0x9EBA,\n\t23384: 0x9EBC,\n\t23385: 0x9EBF,\n\t23386: 0x9EC0,\n\t23387: 0x9EC1,\n\t23388: 0x9EC2,\n\t23389: 0x9EC3,\n\t23390: 0x9EC5,\n\t23391: 0x9EC6,\n\t23392: 0x9EC7,\n\t23393: 0x9EC8,\n\t23394: 0x9ECA,\n\t23395: 0x9ECB,\n\t23396: 0x9ECC,\n\t23397: 0x9ED0,\n\t23398: 0x9ED2,\n\t23399: 0x9ED3,\n\t23400: 0x9ED5,\n\t23401: 0x9ED6,\n\t23402: 0x9ED7,\n\t23403: 0x9ED9,\n\t23404: 0x9EDA,\n\t23405: 0x9EDE,\n\t23406: 0x9EE1,\n\t23407: 0x9EE3,\n\t23408: 0x9EE4,\n\t23409: 0x9EE6,\n\t23410: 0x9EE8,\n\t23411: 0x9EEB,\n\t23412: 0x9EEC,\n\t23413: 0x9EED,\n\t23414: 0x9EEE,\n\t23415: 0x9EF0,\n\t23416: 0x9EF1,\n\t23417: 0x9EF2,\n\t23418: 0x9EF3,\n\t23419: 0x9EF4,\n\t23420: 0x9EF5,\n\t23421: 0x9EF6,\n\t23422: 0x9EF7,\n\t23423: 0x9EF8,\n\t23424: 0x9EFA,\n\t23425: 0x9EFD,\n\t23426: 0x9EFF,\n\t23427: 0x9F00,\n\t23428: 0x9F01,\n\t23429: 0x9F02,\n\t23430: 0x9F03,\n\t23431: 0x9F04,\n\t23432: 0x9F05,\n\t23433: 0x9F06,\n\t23434: 0x9F07,\n\t23435: 0x9F08,\n\t23436: 0x9F09,\n\t23437: 0x9F0A,\n\t23438: 0x9F0C,\n\t23439: 0x9F0F,\n\t23440: 0x9F11,\n\t23441: 0x9F12,\n\t23442: 0x9F14,\n\t23443: 0x9F15,\n\t23444: 0x9F16,\n\t23445: 0x9F18,\n\t23446: 0x9F1A,\n\t23447: 0x9F1B,\n\t23448: 0x9F1C,\n\t23449: 0x9F1D,\n\t23450: 0x9F1E,\n\t23451: 0x9F1F,\n\t23452: 0x9F21,\n\t23453: 0x9F23,\n\t23454: 0x9F24,\n\t23455: 0x9F25,\n\t23456: 0x9F26,\n\t23457: 0x9F27,\n\t23458: 0x9F28,\n\t23459: 0x9F29,\n\t23460: 0x9F2A,\n\t23461: 0x9F2B,\n\t23462: 0x9F2D,\n\t23463: 0x9F2E,\n\t23464: 0x9F30,\n\t23465: 0x9F31,\n\t23560: 0x9F32,\n\t23561: 0x9F33,\n\t23562: 0x9F34,\n\t23563: 0x9F35,\n\t23564: 0x9F36,\n\t23565: 0x9F38,\n\t23566: 0x9F3A,\n\t23567: 0x9F3C,\n\t23568: 0x9F3F,\n\t23569: 0x9F40,\n\t23570: 0x9F41,\n\t23571: 0x9F42,\n\t23572: 0x9F43,\n\t23573: 0x9F45,\n\t23574: 0x9F46,\n\t23575: 0x9F47,\n\t23576: 0x9F48,\n\t23577: 0x9F49,\n\t23578: 0x9F4A,\n\t23579: 0x9F4B,\n\t23580: 0x9F4C,\n\t23581: 0x9F4D,\n\t23582: 0x9F4E,\n\t23583: 0x9F4F,\n\t23584: 0x9F52,\n\t23585: 0x9F53,\n\t23586: 0x9F54,\n\t23587: 0x9F55,\n\t23588: 0x9F56,\n\t23589: 0x9F57,\n\t23590: 0x9F58,\n\t23591: 0x9F59,\n\t23592: 0x9F5A,\n\t23593: 0x9F5B,\n\t23594: 0x9F5C,\n\t23595: 0x9F5D,\n\t23596: 0x9F5E,\n\t23597: 0x9F5F,\n\t23598: 0x9F60,\n\t23599: 0x9F61,\n\t23600: 0x9F62,\n\t23601: 0x9F63,\n\t23602: 0x9F64,\n\t23603: 0x9F65,\n\t23604: 0x9F66,\n\t23605: 0x9F67,\n\t23606: 0x9F68,\n\t23607: 0x9F69,\n\t23608: 0x9F6A,\n\t23609: 0x9F6B,\n\t23610: 0x9F6C,\n\t23611: 0x9F6D,\n\t23612: 0x9F6E,\n\t23613: 0x9F6F,\n\t23614: 0x9F70,\n\t23615: 0x9F71,\n\t23616: 0x9F72,\n\t23617: 0x9F73,\n\t23618: 0x9F74,\n\t23619: 0x9F75,\n\t23620: 0x9F76,\n\t23621: 0x9F77,\n\t23622: 0x9F78,\n\t23623: 0x9F79,\n\t23624: 0x9F7A,\n\t23625: 0x9F7B,\n\t23626: 0x9F7C,\n\t23627: 0x9F7D,\n\t23628: 0x9F7E,\n\t23629: 0x9F81,\n\t23630: 0x9F82,\n\t23631: 0x9F8D,\n\t23632: 0x9F8E,\n\t23633: 0x9F8F,\n\t23634: 0x9F90,\n\t23635: 0x9F91,\n\t23636: 0x9F92,\n\t23637: 0x9F93,\n\t23638: 0x9F94,\n\t23639: 0x9F95,\n\t23640: 0x9F96,\n\t23641: 0x9F97,\n\t23642: 0x9F98,\n\t23643: 0x9F9C,\n\t23644: 0x9F9D,\n\t23645: 0x9F9E,\n\t23646: 0x9FA1,\n\t23647: 0x9FA2,\n\t23648: 0x9FA3,\n\t23649: 0x9FA4,\n\t23650: 0x9FA5,\n\t23651: 0xF92C,\n\t23652: 0xF979,\n\t23653: 0xF995,\n\t23654: 0xF9E7,\n\t23655: 0xF9F1,\n\t23750: 0xFA0C,\n\t23751: 0xFA0D,\n\t23752: 0xFA0E,\n\t23753: 0xFA0F,\n\t23754: 0xFA11,\n\t23755: 0xFA13,\n\t23756: 0xFA14,\n\t23757: 0xFA18,\n\t23758: 0xFA1F,\n\t23759: 0xFA20,\n\t23760: 0xFA21,\n\t23761: 0xFA23,\n\t23762: 0xFA24,\n\t23763: 0xFA27,\n\t23764: 0xFA28,\n\t23765: 0xFA29,\n\t23766: 0x2E81,\n\t23770: 0x2E84,\n\t23771: 0x3473,\n\t23772: 0x3447,\n\t23773: 0x2E88,\n\t23774: 0x2E8B,\n\t23776: 0x359E,\n\t23777: 0x361A,\n\t23778: 0x360E,\n\t23779: 0x2E8C,\n\t23780: 0x2E97,\n\t23781: 0x396E,\n\t23782: 0x3918,\n\t23784: 0x39CF,\n\t23785: 0x39DF,\n\t23786: 0x3A73,\n\t23787: 0x39D0,\n\t23790: 0x3B4E,\n\t23791: 0x3C6E,\n\t23792: 0x3CE0,\n\t23793: 0x2EA7,\n\t23796: 0x2EAA,\n\t23797: 0x4056,\n\t23798: 0x415F,\n\t23799: 0x2EAE,\n\t23800: 0x4337,\n\t23801: 0x2EB3,\n\t23802: 0x2EB6,\n\t23803: 0x2EB7,\n\t23805: 0x43B1,\n\t23806: 0x43AC,\n\t23807: 0x2EBB,\n\t23808: 0x43DD,\n\t23809: 0x44D6,\n\t23810: 0x4661,\n\t23811: 0x464C,\n\t23813: 0x4723,\n\t23814: 0x4729,\n\t23815: 0x477C,\n\t23816: 0x478D,\n\t23817: 0x2ECA,\n\t23818: 0x4947,\n\t23819: 0x497A,\n\t23820: 0x497D,\n\t23821: 0x4982,\n\t23822: 0x4983,\n\t23823: 0x4985,\n\t23824: 0x4986,\n\t23825: 0x499F,\n\t23826: 0x499B,\n\t23827: 0x49B7,\n\t23828: 0x49B6,\n\t23831: 0x4CA3,\n\t23832: 0x4C9F,\n\t23833: 0x4CA0,\n\t23834: 0x4CA1,\n\t23835: 0x4C77,\n\t23836: 0x4CA2,\n\t23837: 0x4D13,\n\t23838: 0x4D14,\n\t23839: 0x4D15,\n\t23840: 0x4D16,\n\t23841: 0x4D17,\n\t23842: 0x4D18,\n\t23843: 0x4D19,\n\t23844: 0x4DAE,\n}\n\nconst numEncodeTables = 5\n\n// encodeX are the encoding tables from Unicode to GBK code,\n// sorted by decreasing length.\n// encode0: 28965 entries for runes in [11905, 40870).\n// encode1:  1587 entries for runes in [ 8208,  9795).\n// encode2:   942 entries for runes in [  164,  1106).\n// encode3:   438 entries for runes in [65072, 65510).\n// encode4:   254 entries for runes in [63788, 64042).\n\nconst encode0Low, encode0High = 11905, 40870\n\nvar encode0 = [...]uint16{\n\t11905 - 11905: 0xFE50,\n\t11908 - 11905: 0xFE54,\n\t11912 - 11905: 0xFE57,\n\t11915 - 11905: 0xFE58,\n\t11916 - 11905: 0xFE5D,\n\t11927 - 11905: 0xFE5E,\n\t11943 - 11905: 0xFE6B,\n\t11946 - 11905: 0xFE6E,\n\t11950 - 11905: 0xFE71,\n\t11955 - 11905: 0xFE73,\n\t11958 - 11905: 0xFE74,\n\t11959 - 11905: 0xFE75,\n\t11963 - 11905: 0xFE79,\n\t11978 - 11905: 0xFE84,\n\t12272 - 11905: 0xA98A,\n\t12273 - 11905: 0xA98B,\n\t12274 - 11905: 0xA98C,\n\t12275 - 11905: 0xA98D,\n\t12276 - 11905: 0xA98E,\n\t12277 - 11905: 0xA98F,\n\t12278 - 11905: 0xA990,\n\t12279 - 11905: 0xA991,\n\t12280 - 11905: 0xA992,\n\t12281 - 11905: 0xA993,\n\t12282 - 11905: 0xA994,\n\t12283 - 11905: 0xA995,\n\t12288 - 11905: 0xA1A1,\n\t12289 - 11905: 0xA1A2,\n\t12290 - 11905: 0xA1A3,\n\t12291 - 11905: 0xA1A8,\n\t12293 - 11905: 0xA1A9,\n\t12294 - 11905: 0xA965,\n\t12295 - 11905: 0xA996,\n\t12296 - 11905: 0xA1B4,\n\t12297 - 11905: 0xA1B5,\n\t12298 - 11905: 0xA1B6,\n\t12299 - 11905: 0xA1B7,\n\t12300 - 11905: 0xA1B8,\n\t12301 - 11905: 0xA1B9,\n\t12302 - 11905: 0xA1BA,\n\t12303 - 11905: 0xA1BB,\n\t12304 - 11905: 0xA1BE,\n\t12305 - 11905: 0xA1BF,\n\t12306 - 11905: 0xA893,\n\t12307 - 11905: 0xA1FE,\n\t12308 - 11905: 0xA1B2,\n\t12309 - 11905: 0xA1B3,\n\t12310 - 11905: 0xA1BC,\n\t12311 - 11905: 0xA1BD,\n\t12317 - 11905: 0xA894,\n\t12318 - 11905: 0xA895,\n\t12321 - 11905: 0xA940,\n\t12322 - 11905: 0xA941,\n\t12323 - 11905: 0xA942,\n\t12324 - 11905: 0xA943,\n\t12325 - 11905: 0xA944,\n\t12326 - 11905: 0xA945,\n\t12327 - 11905: 0xA946,\n\t12328 - 11905: 0xA947,\n\t12329 - 11905: 0xA948,\n\t12350 - 11905: 0xA989,\n\t12353 - 11905: 0xA4A1,\n\t12354 - 11905: 0xA4A2,\n\t12355 - 11905: 0xA4A3,\n\t12356 - 11905: 0xA4A4,\n\t12357 - 11905: 0xA4A5,\n\t12358 - 11905: 0xA4A6,\n\t12359 - 11905: 0xA4A7,\n\t12360 - 11905: 0xA4A8,\n\t12361 - 11905: 0xA4A9,\n\t12362 - 11905: 0xA4AA,\n\t12363 - 11905: 0xA4AB,\n\t12364 - 11905: 0xA4AC,\n\t12365 - 11905: 0xA4AD,\n\t12366 - 11905: 0xA4AE,\n\t12367 - 11905: 0xA4AF,\n\t12368 - 11905: 0xA4B0,\n\t12369 - 11905: 0xA4B1,\n\t12370 - 11905: 0xA4B2,\n\t12371 - 11905: 0xA4B3,\n\t12372 - 11905: 0xA4B4,\n\t12373 - 11905: 0xA4B5,\n\t12374 - 11905: 0xA4B6,\n\t12375 - 11905: 0xA4B7,\n\t12376 - 11905: 0xA4B8,\n\t12377 - 11905: 0xA4B9,\n\t12378 - 11905: 0xA4BA,\n\t12379 - 11905: 0xA4BB,\n\t12380 - 11905: 0xA4BC,\n\t12381 - 11905: 0xA4BD,\n\t12382 - 11905: 0xA4BE,\n\t12383 - 11905: 0xA4BF,\n\t12384 - 11905: 0xA4C0,\n\t12385 - 11905: 0xA4C1,\n\t12386 - 11905: 0xA4C2,\n\t12387 - 11905: 0xA4C3,\n\t12388 - 11905: 0xA4C4,\n\t12389 - 11905: 0xA4C5,\n\t12390 - 11905: 0xA4C6,\n\t12391 - 11905: 0xA4C7,\n\t12392 - 11905: 0xA4C8,\n\t12393 - 11905: 0xA4C9,\n\t12394 - 11905: 0xA4CA,\n\t12395 - 11905: 0xA4CB,\n\t12396 - 11905: 0xA4CC,\n\t12397 - 11905: 0xA4CD,\n\t12398 - 11905: 0xA4CE,\n\t12399 - 11905: 0xA4CF,\n\t12400 - 11905: 0xA4D0,\n\t12401 - 11905: 0xA4D1,\n\t12402 - 11905: 0xA4D2,\n\t12403 - 11905: 0xA4D3,\n\t12404 - 11905: 0xA4D4,\n\t12405 - 11905: 0xA4D5,\n\t12406 - 11905: 0xA4D6,\n\t12407 - 11905: 0xA4D7,\n\t12408 - 11905: 0xA4D8,\n\t12409 - 11905: 0xA4D9,\n\t12410 - 11905: 0xA4DA,\n\t12411 - 11905: 0xA4DB,\n\t12412 - 11905: 0xA4DC,\n\t12413 - 11905: 0xA4DD,\n\t12414 - 11905: 0xA4DE,\n\t12415 - 11905: 0xA4DF,\n\t12416 - 11905: 0xA4E0,\n\t12417 - 11905: 0xA4E1,\n\t12418 - 11905: 0xA4E2,\n\t12419 - 11905: 0xA4E3,\n\t12420 - 11905: 0xA4E4,\n\t12421 - 11905: 0xA4E5,\n\t12422 - 11905: 0xA4E6,\n\t12423 - 11905: 0xA4E7,\n\t12424 - 11905: 0xA4E8,\n\t12425 - 11905: 0xA4E9,\n\t12426 - 11905: 0xA4EA,\n\t12427 - 11905: 0xA4EB,\n\t12428 - 11905: 0xA4EC,\n\t12429 - 11905: 0xA4ED,\n\t12430 - 11905: 0xA4EE,\n\t12431 - 11905: 0xA4EF,\n\t12432 - 11905: 0xA4F0,\n\t12433 - 11905: 0xA4F1,\n\t12434 - 11905: 0xA4F2,\n\t12435 - 11905: 0xA4F3,\n\t12443 - 11905: 0xA961,\n\t12444 - 11905: 0xA962,\n\t12445 - 11905: 0xA966,\n\t12446 - 11905: 0xA967,\n\t12449 - 11905: 0xA5A1,\n\t12450 - 11905: 0xA5A2,\n\t12451 - 11905: 0xA5A3,\n\t12452 - 11905: 0xA5A4,\n\t12453 - 11905: 0xA5A5,\n\t12454 - 11905: 0xA5A6,\n\t12455 - 11905: 0xA5A7,\n\t12456 - 11905: 0xA5A8,\n\t12457 - 11905: 0xA5A9,\n\t12458 - 11905: 0xA5AA,\n\t12459 - 11905: 0xA5AB,\n\t12460 - 11905: 0xA5AC,\n\t12461 - 11905: 0xA5AD,\n\t12462 - 11905: 0xA5AE,\n\t12463 - 11905: 0xA5AF,\n\t12464 - 11905: 0xA5B0,\n\t12465 - 11905: 0xA5B1,\n\t12466 - 11905: 0xA5B2,\n\t12467 - 11905: 0xA5B3,\n\t12468 - 11905: 0xA5B4,\n\t12469 - 11905: 0xA5B5,\n\t12470 - 11905: 0xA5B6,\n\t12471 - 11905: 0xA5B7,\n\t12472 - 11905: 0xA5B8,\n\t12473 - 11905: 0xA5B9,\n\t12474 - 11905: 0xA5BA,\n\t12475 - 11905: 0xA5BB,\n\t12476 - 11905: 0xA5BC,\n\t12477 - 11905: 0xA5BD,\n\t12478 - 11905: 0xA5BE,\n\t12479 - 11905: 0xA5BF,\n\t12480 - 11905: 0xA5C0,\n\t12481 - 11905: 0xA5C1,\n\t12482 - 11905: 0xA5C2,\n\t12483 - 11905: 0xA5C3,\n\t12484 - 11905: 0xA5C4,\n\t12485 - 11905: 0xA5C5,\n\t12486 - 11905: 0xA5C6,\n\t12487 - 11905: 0xA5C7,\n\t12488 - 11905: 0xA5C8,\n\t12489 - 11905: 0xA5C9,\n\t12490 - 11905: 0xA5CA,\n\t12491 - 11905: 0xA5CB,\n\t12492 - 11905: 0xA5CC,\n\t12493 - 11905: 0xA5CD,\n\t12494 - 11905: 0xA5CE,\n\t12495 - 11905: 0xA5CF,\n\t12496 - 11905: 0xA5D0,\n\t12497 - 11905: 0xA5D1,\n\t12498 - 11905: 0xA5D2,\n\t12499 - 11905: 0xA5D3,\n\t12500 - 11905: 0xA5D4,\n\t12501 - 11905: 0xA5D5,\n\t12502 - 11905: 0xA5D6,\n\t12503 - 11905: 0xA5D7,\n\t12504 - 11905: 0xA5D8,\n\t12505 - 11905: 0xA5D9,\n\t12506 - 11905: 0xA5DA,\n\t12507 - 11905: 0xA5DB,\n\t12508 - 11905: 0xA5DC,\n\t12509 - 11905: 0xA5DD,\n\t12510 - 11905: 0xA5DE,\n\t12511 - 11905: 0xA5DF,\n\t12512 - 11905: 0xA5E0,\n\t12513 - 11905: 0xA5E1,\n\t12514 - 11905: 0xA5E2,\n\t12515 - 11905: 0xA5E3,\n\t12516 - 11905: 0xA5E4,\n\t12517 - 11905: 0xA5E5,\n\t12518 - 11905: 0xA5E6,\n\t12519 - 11905: 0xA5E7,\n\t12520 - 11905: 0xA5E8,\n\t12521 - 11905: 0xA5E9,\n\t12522 - 11905: 0xA5EA,\n\t12523 - 11905: 0xA5EB,\n\t12524 - 11905: 0xA5EC,\n\t12525 - 11905: 0xA5ED,\n\t12526 - 11905: 0xA5EE,\n\t12527 - 11905: 0xA5EF,\n\t12528 - 11905: 0xA5F0,\n\t12529 - 11905: 0xA5F1,\n\t12530 - 11905: 0xA5F2,\n\t12531 - 11905: 0xA5F3,\n\t12532 - 11905: 0xA5F4,\n\t12533 - 11905: 0xA5F5,\n\t12534 - 11905: 0xA5F6,\n\t12540 - 11905: 0xA960,\n\t12541 - 11905: 0xA963,\n\t12542 - 11905: 0xA964,\n\t12549 - 11905: 0xA8C5,\n\t12550 - 11905: 0xA8C6,\n\t12551 - 11905: 0xA8C7,\n\t12552 - 11905: 0xA8C8,\n\t12553 - 11905: 0xA8C9,\n\t12554 - 11905: 0xA8CA,\n\t12555 - 11905: 0xA8CB,\n\t12556 - 11905: 0xA8CC,\n\t12557 - 11905: 0xA8CD,\n\t12558 - 11905: 0xA8CE,\n\t12559 - 11905: 0xA8CF,\n\t12560 - 11905: 0xA8D0,\n\t12561 - 11905: 0xA8D1,\n\t12562 - 11905: 0xA8D2,\n\t12563 - 11905: 0xA8D3,\n\t12564 - 11905: 0xA8D4,\n\t12565 - 11905: 0xA8D5,\n\t12566 - 11905: 0xA8D6,\n\t12567 - 11905: 0xA8D7,\n\t12568 - 11905: 0xA8D8,\n\t12569 - 11905: 0xA8D9,\n\t12570 - 11905: 0xA8DA,\n\t12571 - 11905: 0xA8DB,\n\t12572 - 11905: 0xA8DC,\n\t12573 - 11905: 0xA8DD,\n\t12574 - 11905: 0xA8DE,\n\t12575 - 11905: 0xA8DF,\n\t12576 - 11905: 0xA8E0,\n\t12577 - 11905: 0xA8E1,\n\t12578 - 11905: 0xA8E2,\n\t12579 - 11905: 0xA8E3,\n\t12580 - 11905: 0xA8E4,\n\t12581 - 11905: 0xA8E5,\n\t12582 - 11905: 0xA8E6,\n\t12583 - 11905: 0xA8E7,\n\t12584 - 11905: 0xA8E8,\n\t12585 - 11905: 0xA8E9,\n\t12832 - 11905: 0xA2E5,\n\t12833 - 11905: 0xA2E6,\n\t12834 - 11905: 0xA2E7,\n\t12835 - 11905: 0xA2E8,\n\t12836 - 11905: 0xA2E9,\n\t12837 - 11905: 0xA2EA,\n\t12838 - 11905: 0xA2EB,\n\t12839 - 11905: 0xA2EC,\n\t12840 - 11905: 0xA2ED,\n\t12841 - 11905: 0xA2EE,\n\t12849 - 11905: 0xA95A,\n\t12963 - 11905: 0xA949,\n\t13198 - 11905: 0xA94A,\n\t13199 - 11905: 0xA94B,\n\t13212 - 11905: 0xA94C,\n\t13213 - 11905: 0xA94D,\n\t13214 - 11905: 0xA94E,\n\t13217 - 11905: 0xA94F,\n\t13252 - 11905: 0xA950,\n\t13262 - 11905: 0xA951,\n\t13265 - 11905: 0xA952,\n\t13266 - 11905: 0xA953,\n\t13269 - 11905: 0xA954,\n\t13383 - 11905: 0xFE56,\n\t13427 - 11905: 0xFE55,\n\t13726 - 11905: 0xFE5A,\n\t13838 - 11905: 0xFE5C,\n\t13850 - 11905: 0xFE5B,\n\t14616 - 11905: 0xFE60,\n\t14702 - 11905: 0xFE5F,\n\t14799 - 11905: 0xFE62,\n\t14800 - 11905: 0xFE65,\n\t14815 - 11905: 0xFE63,\n\t14963 - 11905: 0xFE64,\n\t15182 - 11905: 0xFE68,\n\t15470 - 11905: 0xFE69,\n\t15584 - 11905: 0xFE6A,\n\t16470 - 11905: 0xFE6F,\n\t16735 - 11905: 0xFE70,\n\t17207 - 11905: 0xFE72,\n\t17324 - 11905: 0xFE78,\n\t17329 - 11905: 0xFE77,\n\t17373 - 11905: 0xFE7A,\n\t17622 - 11905: 0xFE7B,\n\t17996 - 11905: 0xFE7D,\n\t18017 - 11905: 0xFE7C,\n\t18211 - 11905: 0xFE80,\n\t18217 - 11905: 0xFE81,\n\t18300 - 11905: 0xFE82,\n\t18317 - 11905: 0xFE83,\n\t18759 - 11905: 0xFE85,\n\t18810 - 11905: 0xFE86,\n\t18813 - 11905: 0xFE87,\n\t18818 - 11905: 0xFE88,\n\t18819 - 11905: 0xFE89,\n\t18821 - 11905: 0xFE8A,\n\t18822 - 11905: 0xFE8B,\n\t18843 - 11905: 0xFE8D,\n\t18847 - 11905: 0xFE8C,\n\t18870 - 11905: 0xFE8F,\n\t18871 - 11905: 0xFE8E,\n\t19575 - 11905: 0xFE96,\n\t19615 - 11905: 0xFE93,\n\t19616 - 11905: 0xFE94,\n\t19617 - 11905: 0xFE95,\n\t19618 - 11905: 0xFE97,\n\t19619 - 11905: 0xFE92,\n\t19731 - 11905: 0xFE98,\n\t19732 - 11905: 0xFE99,\n\t19733 - 11905: 0xFE9A,\n\t19734 - 11905: 0xFE9B,\n\t19735 - 11905: 0xFE9C,\n\t19736 - 11905: 0xFE9D,\n\t19737 - 11905: 0xFE9E,\n\t19886 - 11905: 0xFE9F,\n\t19968 - 11905: 0xD2BB,\n\t19969 - 11905: 0xB6A1,\n\t19970 - 11905: 0x8140,\n\t19971 - 11905: 0xC6DF,\n\t19972 - 11905: 0x8141,\n\t19973 - 11905: 0x8142,\n\t19974 - 11905: 0x8143,\n\t19975 - 11905: 0xCDF2,\n\t19976 - 11905: 0xD5C9,\n\t19977 - 11905: 0xC8FD,\n\t19978 - 11905: 0xC9CF,\n\t19979 - 11905: 0xCFC2,\n\t19980 - 11905: 0xD8A2,\n\t19981 - 11905: 0xB2BB,\n\t19982 - 11905: 0xD3EB,\n\t19983 - 11905: 0x8144,\n\t19984 - 11905: 0xD8A4,\n\t19985 - 11905: 0xB3F3,\n\t19986 - 11905: 0x8145,\n\t19987 - 11905: 0xD7A8,\n\t19988 - 11905: 0xC7D2,\n\t19989 - 11905: 0xD8A7,\n\t19990 - 11905: 0xCAC0,\n\t19991 - 11905: 0x8146,\n\t19992 - 11905: 0xC7F0,\n\t19993 - 11905: 0xB1FB,\n\t19994 - 11905: 0xD2B5,\n\t19995 - 11905: 0xB4D4,\n\t19996 - 11905: 0xB6AB,\n\t19997 - 11905: 0xCBBF,\n\t19998 - 11905: 0xD8A9,\n\t19999 - 11905: 0x8147,\n\t20000 - 11905: 0x8148,\n\t20001 - 11905: 0x8149,\n\t20002 - 11905: 0xB6AA,\n\t20003 - 11905: 0x814A,\n\t20004 - 11905: 0xC1BD,\n\t20005 - 11905: 0xD1CF,\n\t20006 - 11905: 0x814B,\n\t20007 - 11905: 0xC9A5,\n\t20008 - 11905: 0xD8AD,\n\t20009 - 11905: 0x814C,\n\t20010 - 11905: 0xB8F6,\n\t20011 - 11905: 0xD1BE,\n\t20012 - 11905: 0xE3DC,\n\t20013 - 11905: 0xD6D0,\n\t20014 - 11905: 0x814D,\n\t20015 - 11905: 0x814E,\n\t20016 - 11905: 0xB7E1,\n\t20017 - 11905: 0x814F,\n\t20018 - 11905: 0xB4AE,\n\t20019 - 11905: 0x8150,\n\t20020 - 11905: 0xC1D9,\n\t20021 - 11905: 0x8151,\n\t20022 - 11905: 0xD8BC,\n\t20023 - 11905: 0x8152,\n\t20024 - 11905: 0xCDE8,\n\t20025 - 11905: 0xB5A4,\n\t20026 - 11905: 0xCEAA,\n\t20027 - 11905: 0xD6F7,\n\t20028 - 11905: 0x8153,\n\t20029 - 11905: 0xC0F6,\n\t20030 - 11905: 0xBED9,\n\t20031 - 11905: 0xD8AF,\n\t20032 - 11905: 0x8154,\n\t20033 - 11905: 0x8155,\n\t20034 - 11905: 0x8156,\n\t20035 - 11905: 0xC4CB,\n\t20036 - 11905: 0x8157,\n\t20037 - 11905: 0xBEC3,\n\t20038 - 11905: 0x8158,\n\t20039 - 11905: 0xD8B1,\n\t20040 - 11905: 0xC3B4,\n\t20041 - 11905: 0xD2E5,\n\t20042 - 11905: 0x8159,\n\t20043 - 11905: 0xD6AE,\n\t20044 - 11905: 0xCEDA,\n\t20045 - 11905: 0xD5A7,\n\t20046 - 11905: 0xBAF5,\n\t20047 - 11905: 0xB7A6,\n\t20048 - 11905: 0xC0D6,\n\t20049 - 11905: 0x815A,\n\t20050 - 11905: 0xC6B9,\n\t20051 - 11905: 0xC5D2,\n\t20052 - 11905: 0xC7C7,\n\t20053 - 11905: 0x815B,\n\t20054 - 11905: 0xB9D4,\n\t20055 - 11905: 0x815C,\n\t20056 - 11905: 0xB3CB,\n\t20057 - 11905: 0xD2D2,\n\t20058 - 11905: 0x815D,\n\t20059 - 11905: 0x815E,\n\t20060 - 11905: 0xD8BF,\n\t20061 - 11905: 0xBEC5,\n\t20062 - 11905: 0xC6F2,\n\t20063 - 11905: 0xD2B2,\n\t20064 - 11905: 0xCFB0,\n\t20065 - 11905: 0xCFE7,\n\t20066 - 11905: 0x815F,\n\t20067 - 11905: 0x8160,\n\t20068 - 11905: 0x8161,\n\t20069 - 11905: 0x8162,\n\t20070 - 11905: 0xCAE9,\n\t20071 - 11905: 0x8163,\n\t20072 - 11905: 0x8164,\n\t20073 - 11905: 0xD8C0,\n\t20074 - 11905: 0x8165,\n\t20075 - 11905: 0x8166,\n\t20076 - 11905: 0x8167,\n\t20077 - 11905: 0x8168,\n\t20078 - 11905: 0x8169,\n\t20079 - 11905: 0x816A,\n\t20080 - 11905: 0xC2F2,\n\t20081 - 11905: 0xC2D2,\n\t20082 - 11905: 0x816B,\n\t20083 - 11905: 0xC8E9,\n\t20084 - 11905: 0x816C,\n\t20085 - 11905: 0x816D,\n\t20086 - 11905: 0x816E,\n\t20087 - 11905: 0x816F,\n\t20088 - 11905: 0x8170,\n\t20089 - 11905: 0x8171,\n\t20090 - 11905: 0x8172,\n\t20091 - 11905: 0x8173,\n\t20092 - 11905: 0x8174,\n\t20093 - 11905: 0x8175,\n\t20094 - 11905: 0xC7AC,\n\t20095 - 11905: 0x8176,\n\t20096 - 11905: 0x8177,\n\t20097 - 11905: 0x8178,\n\t20098 - 11905: 0x8179,\n\t20099 - 11905: 0x817A,\n\t20100 - 11905: 0x817B,\n\t20101 - 11905: 0x817C,\n\t20102 - 11905: 0xC1CB,\n\t20103 - 11905: 0x817D,\n\t20104 - 11905: 0xD3E8,\n\t20105 - 11905: 0xD5F9,\n\t20106 - 11905: 0x817E,\n\t20107 - 11905: 0xCAC2,\n\t20108 - 11905: 0xB6FE,\n\t20109 - 11905: 0xD8A1,\n\t20110 - 11905: 0xD3DA,\n\t20111 - 11905: 0xBFF7,\n\t20112 - 11905: 0x8180,\n\t20113 - 11905: 0xD4C6,\n\t20114 - 11905: 0xBBA5,\n\t20115 - 11905: 0xD8C1,\n\t20116 - 11905: 0xCEE5,\n\t20117 - 11905: 0xBEAE,\n\t20118 - 11905: 0x8181,\n\t20119 - 11905: 0x8182,\n\t20120 - 11905: 0xD8A8,\n\t20121 - 11905: 0x8183,\n\t20122 - 11905: 0xD1C7,\n\t20123 - 11905: 0xD0A9,\n\t20124 - 11905: 0x8184,\n\t20125 - 11905: 0x8185,\n\t20126 - 11905: 0x8186,\n\t20127 - 11905: 0xD8BD,\n\t20128 - 11905: 0xD9EF,\n\t20129 - 11905: 0xCDF6,\n\t20130 - 11905: 0xBFBA,\n\t20131 - 11905: 0x8187,\n\t20132 - 11905: 0xBDBB,\n\t20133 - 11905: 0xBAA5,\n\t20134 - 11905: 0xD2E0,\n\t20135 - 11905: 0xB2FA,\n\t20136 - 11905: 0xBAE0,\n\t20137 - 11905: 0xC4B6,\n\t20138 - 11905: 0x8188,\n\t20139 - 11905: 0xCFED,\n\t20140 - 11905: 0xBEA9,\n\t20141 - 11905: 0xCDA4,\n\t20142 - 11905: 0xC1C1,\n\t20143 - 11905: 0x8189,\n\t20144 - 11905: 0x818A,\n\t20145 - 11905: 0x818B,\n\t20146 - 11905: 0xC7D7,\n\t20147 - 11905: 0xD9F1,\n\t20148 - 11905: 0x818C,\n\t20149 - 11905: 0xD9F4,\n\t20150 - 11905: 0x818D,\n\t20151 - 11905: 0x818E,\n\t20152 - 11905: 0x818F,\n\t20153 - 11905: 0x8190,\n\t20154 - 11905: 0xC8CB,\n\t20155 - 11905: 0xD8E9,\n\t20156 - 11905: 0x8191,\n\t20157 - 11905: 0x8192,\n\t20158 - 11905: 0x8193,\n\t20159 - 11905: 0xD2DA,\n\t20160 - 11905: 0xCAB2,\n\t20161 - 11905: 0xC8CA,\n\t20162 - 11905: 0xD8EC,\n\t20163 - 11905: 0xD8EA,\n\t20164 - 11905: 0xD8C6,\n\t20165 - 11905: 0xBDF6,\n\t20166 - 11905: 0xC6CD,\n\t20167 - 11905: 0xB3F0,\n\t20168 - 11905: 0x8194,\n\t20169 - 11905: 0xD8EB,\n\t20170 - 11905: 0xBDF1,\n\t20171 - 11905: 0xBDE9,\n\t20172 - 11905: 0x8195,\n\t20173 - 11905: 0xC8D4,\n\t20174 - 11905: 0xB4D3,\n\t20175 - 11905: 0x8196,\n\t20176 - 11905: 0x8197,\n\t20177 - 11905: 0xC2D8,\n\t20178 - 11905: 0x8198,\n\t20179 - 11905: 0xB2D6,\n\t20180 - 11905: 0xD7D0,\n\t20181 - 11905: 0xCACB,\n\t20182 - 11905: 0xCBFB,\n\t20183 - 11905: 0xD5CC,\n\t20184 - 11905: 0xB8B6,\n\t20185 - 11905: 0xCFC9,\n\t20186 - 11905: 0x8199,\n\t20187 - 11905: 0x819A,\n\t20188 - 11905: 0x819B,\n\t20189 - 11905: 0xD9DA,\n\t20190 - 11905: 0xD8F0,\n\t20191 - 11905: 0xC7AA,\n\t20192 - 11905: 0x819C,\n\t20193 - 11905: 0xD8EE,\n\t20194 - 11905: 0x819D,\n\t20195 - 11905: 0xB4FA,\n\t20196 - 11905: 0xC1EE,\n\t20197 - 11905: 0xD2D4,\n\t20198 - 11905: 0x819E,\n\t20199 - 11905: 0x819F,\n\t20200 - 11905: 0xD8ED,\n\t20201 - 11905: 0x81A0,\n\t20202 - 11905: 0xD2C7,\n\t20203 - 11905: 0xD8EF,\n\t20204 - 11905: 0xC3C7,\n\t20205 - 11905: 0x81A1,\n\t20206 - 11905: 0x81A2,\n\t20207 - 11905: 0x81A3,\n\t20208 - 11905: 0xD1F6,\n\t20209 - 11905: 0x81A4,\n\t20210 - 11905: 0xD6D9,\n\t20211 - 11905: 0xD8F2,\n\t20212 - 11905: 0x81A5,\n\t20213 - 11905: 0xD8F5,\n\t20214 - 11905: 0xBCFE,\n\t20215 - 11905: 0xBCDB,\n\t20216 - 11905: 0x81A6,\n\t20217 - 11905: 0x81A7,\n\t20218 - 11905: 0x81A8,\n\t20219 - 11905: 0xC8CE,\n\t20220 - 11905: 0x81A9,\n\t20221 - 11905: 0xB7DD,\n\t20222 - 11905: 0x81AA,\n\t20223 - 11905: 0xB7C2,\n\t20224 - 11905: 0x81AB,\n\t20225 - 11905: 0xC6F3,\n\t20226 - 11905: 0x81AC,\n\t20227 - 11905: 0x81AD,\n\t20228 - 11905: 0x81AE,\n\t20229 - 11905: 0x81AF,\n\t20230 - 11905: 0x81B0,\n\t20231 - 11905: 0x81B1,\n\t20232 - 11905: 0x81B2,\n\t20233 - 11905: 0xD8F8,\n\t20234 - 11905: 0xD2C1,\n\t20235 - 11905: 0x81B3,\n\t20236 - 11905: 0x81B4,\n\t20237 - 11905: 0xCEE9,\n\t20238 - 11905: 0xBCBF,\n\t20239 - 11905: 0xB7FC,\n\t20240 - 11905: 0xB7A5,\n\t20241 - 11905: 0xD0DD,\n\t20242 - 11905: 0x81B5,\n\t20243 - 11905: 0x81B6,\n\t20244 - 11905: 0x81B7,\n\t20245 - 11905: 0x81B8,\n\t20246 - 11905: 0x81B9,\n\t20247 - 11905: 0xD6DA,\n\t20248 - 11905: 0xD3C5,\n\t20249 - 11905: 0xBBEF,\n\t20250 - 11905: 0xBBE1,\n\t20251 - 11905: 0xD8F1,\n\t20252 - 11905: 0x81BA,\n\t20253 - 11905: 0x81BB,\n\t20254 - 11905: 0xC9A1,\n\t20255 - 11905: 0xCEB0,\n\t20256 - 11905: 0xB4AB,\n\t20257 - 11905: 0x81BC,\n\t20258 - 11905: 0xD8F3,\n\t20259 - 11905: 0x81BD,\n\t20260 - 11905: 0xC9CB,\n\t20261 - 11905: 0xD8F6,\n\t20262 - 11905: 0xC2D7,\n\t20263 - 11905: 0xD8F7,\n\t20264 - 11905: 0x81BE,\n\t20265 - 11905: 0x81BF,\n\t20266 - 11905: 0xCEB1,\n\t20267 - 11905: 0xD8F9,\n\t20268 - 11905: 0x81C0,\n\t20269 - 11905: 0x81C1,\n\t20270 - 11905: 0x81C2,\n\t20271 - 11905: 0xB2AE,\n\t20272 - 11905: 0xB9C0,\n\t20273 - 11905: 0x81C3,\n\t20274 - 11905: 0xD9A3,\n\t20275 - 11905: 0x81C4,\n\t20276 - 11905: 0xB0E9,\n\t20277 - 11905: 0x81C5,\n\t20278 - 11905: 0xC1E6,\n\t20279 - 11905: 0x81C6,\n\t20280 - 11905: 0xC9EC,\n\t20281 - 11905: 0x81C7,\n\t20282 - 11905: 0xCBC5,\n\t20283 - 11905: 0x81C8,\n\t20284 - 11905: 0xCBC6,\n\t20285 - 11905: 0xD9A4,\n\t20286 - 11905: 0x81C9,\n\t20287 - 11905: 0x81CA,\n\t20288 - 11905: 0x81CB,\n\t20289 - 11905: 0x81CC,\n\t20290 - 11905: 0x81CD,\n\t20291 - 11905: 0xB5E8,\n\t20292 - 11905: 0x81CE,\n\t20293 - 11905: 0x81CF,\n\t20294 - 11905: 0xB5AB,\n\t20295 - 11905: 0x81D0,\n\t20296 - 11905: 0x81D1,\n\t20297 - 11905: 0x81D2,\n\t20298 - 11905: 0x81D3,\n\t20299 - 11905: 0x81D4,\n\t20300 - 11905: 0x81D5,\n\t20301 - 11905: 0xCEBB,\n\t20302 - 11905: 0xB5CD,\n\t20303 - 11905: 0xD7A1,\n\t20304 - 11905: 0xD7F4,\n\t20305 - 11905: 0xD3D3,\n\t20306 - 11905: 0x81D6,\n\t20307 - 11905: 0xCCE5,\n\t20308 - 11905: 0x81D7,\n\t20309 - 11905: 0xBACE,\n\t20310 - 11905: 0x81D8,\n\t20311 - 11905: 0xD9A2,\n\t20312 - 11905: 0xD9DC,\n\t20313 - 11905: 0xD3E0,\n\t20314 - 11905: 0xD8FD,\n\t20315 - 11905: 0xB7F0,\n\t20316 - 11905: 0xD7F7,\n\t20317 - 11905: 0xD8FE,\n\t20318 - 11905: 0xD8FA,\n\t20319 - 11905: 0xD9A1,\n\t20320 - 11905: 0xC4E3,\n\t20321 - 11905: 0x81D9,\n\t20322 - 11905: 0x81DA,\n\t20323 - 11905: 0xD3B6,\n\t20324 - 11905: 0xD8F4,\n\t20325 - 11905: 0xD9DD,\n\t20326 - 11905: 0x81DB,\n\t20327 - 11905: 0xD8FB,\n\t20328 - 11905: 0x81DC,\n\t20329 - 11905: 0xC5E5,\n\t20330 - 11905: 0x81DD,\n\t20331 - 11905: 0x81DE,\n\t20332 - 11905: 0xC0D0,\n\t20333 - 11905: 0x81DF,\n\t20334 - 11905: 0x81E0,\n\t20335 - 11905: 0xD1F0,\n\t20336 - 11905: 0xB0DB,\n\t20337 - 11905: 0x81E1,\n\t20338 - 11905: 0x81E2,\n\t20339 - 11905: 0xBCD1,\n\t20340 - 11905: 0xD9A6,\n\t20341 - 11905: 0x81E3,\n\t20342 - 11905: 0xD9A5,\n\t20343 - 11905: 0x81E4,\n\t20344 - 11905: 0x81E5,\n\t20345 - 11905: 0x81E6,\n\t20346 - 11905: 0x81E7,\n\t20347 - 11905: 0xD9AC,\n\t20348 - 11905: 0xD9AE,\n\t20349 - 11905: 0x81E8,\n\t20350 - 11905: 0xD9AB,\n\t20351 - 11905: 0xCAB9,\n\t20352 - 11905: 0x81E9,\n\t20353 - 11905: 0x81EA,\n\t20354 - 11905: 0x81EB,\n\t20355 - 11905: 0xD9A9,\n\t20356 - 11905: 0xD6B6,\n\t20357 - 11905: 0x81EC,\n\t20358 - 11905: 0x81ED,\n\t20359 - 11905: 0x81EE,\n\t20360 - 11905: 0xB3DE,\n\t20361 - 11905: 0xD9A8,\n\t20362 - 11905: 0x81EF,\n\t20363 - 11905: 0xC0FD,\n\t20364 - 11905: 0x81F0,\n\t20365 - 11905: 0xCACC,\n\t20366 - 11905: 0x81F1,\n\t20367 - 11905: 0xD9AA,\n\t20368 - 11905: 0x81F2,\n\t20369 - 11905: 0xD9A7,\n\t20370 - 11905: 0x81F3,\n\t20371 - 11905: 0x81F4,\n\t20372 - 11905: 0xD9B0,\n\t20373 - 11905: 0x81F5,\n\t20374 - 11905: 0x81F6,\n\t20375 - 11905: 0xB6B1,\n\t20376 - 11905: 0x81F7,\n\t20377 - 11905: 0x81F8,\n\t20378 - 11905: 0x81F9,\n\t20379 - 11905: 0xB9A9,\n\t20380 - 11905: 0x81FA,\n\t20381 - 11905: 0xD2C0,\n\t20382 - 11905: 0x81FB,\n\t20383 - 11905: 0x81FC,\n\t20384 - 11905: 0xCFC0,\n\t20385 - 11905: 0x81FD,\n\t20386 - 11905: 0x81FE,\n\t20387 - 11905: 0xC2C2,\n\t20388 - 11905: 0x8240,\n\t20389 - 11905: 0xBDC4,\n\t20390 - 11905: 0xD5EC,\n\t20391 - 11905: 0xB2E0,\n\t20392 - 11905: 0xC7C8,\n\t20393 - 11905: 0xBFEB,\n\t20394 - 11905: 0xD9AD,\n\t20395 - 11905: 0x8241,\n\t20396 - 11905: 0xD9AF,\n\t20397 - 11905: 0x8242,\n\t20398 - 11905: 0xCEEA,\n\t20399 - 11905: 0xBAEE,\n\t20400 - 11905: 0x8243,\n\t20401 - 11905: 0x8244,\n\t20402 - 11905: 0x8245,\n\t20403 - 11905: 0x8246,\n\t20404 - 11905: 0x8247,\n\t20405 - 11905: 0xC7D6,\n\t20406 - 11905: 0x8248,\n\t20407 - 11905: 0x8249,\n\t20408 - 11905: 0x824A,\n\t20409 - 11905: 0x824B,\n\t20410 - 11905: 0x824C,\n\t20411 - 11905: 0x824D,\n\t20412 - 11905: 0x824E,\n\t20413 - 11905: 0x824F,\n\t20414 - 11905: 0x8250,\n\t20415 - 11905: 0xB1E3,\n\t20416 - 11905: 0x8251,\n\t20417 - 11905: 0x8252,\n\t20418 - 11905: 0x8253,\n\t20419 - 11905: 0xB4D9,\n\t20420 - 11905: 0xB6ED,\n\t20421 - 11905: 0xD9B4,\n\t20422 - 11905: 0x8254,\n\t20423 - 11905: 0x8255,\n\t20424 - 11905: 0x8256,\n\t20425 - 11905: 0x8257,\n\t20426 - 11905: 0xBFA1,\n\t20427 - 11905: 0x8258,\n\t20428 - 11905: 0x8259,\n\t20429 - 11905: 0x825A,\n\t20430 - 11905: 0xD9DE,\n\t20431 - 11905: 0xC7CE,\n\t20432 - 11905: 0xC0FE,\n\t20433 - 11905: 0xD9B8,\n\t20434 - 11905: 0x825B,\n\t20435 - 11905: 0x825C,\n\t20436 - 11905: 0x825D,\n\t20437 - 11905: 0x825E,\n\t20438 - 11905: 0x825F,\n\t20439 - 11905: 0xCBD7,\n\t20440 - 11905: 0xB7FD,\n\t20441 - 11905: 0x8260,\n\t20442 - 11905: 0xD9B5,\n\t20443 - 11905: 0x8261,\n\t20444 - 11905: 0xD9B7,\n\t20445 - 11905: 0xB1A3,\n\t20446 - 11905: 0xD3E1,\n\t20447 - 11905: 0xD9B9,\n\t20448 - 11905: 0x8262,\n\t20449 - 11905: 0xD0C5,\n\t20450 - 11905: 0x8263,\n\t20451 - 11905: 0xD9B6,\n\t20452 - 11905: 0x8264,\n\t20453 - 11905: 0x8265,\n\t20454 - 11905: 0xD9B1,\n\t20455 - 11905: 0x8266,\n\t20456 - 11905: 0xD9B2,\n\t20457 - 11905: 0xC1A9,\n\t20458 - 11905: 0xD9B3,\n\t20459 - 11905: 0x8267,\n\t20460 - 11905: 0x8268,\n\t20461 - 11905: 0xBCF3,\n\t20462 - 11905: 0xD0DE,\n\t20463 - 11905: 0xB8A9,\n\t20464 - 11905: 0x8269,\n\t20465 - 11905: 0xBEE3,\n\t20466 - 11905: 0x826A,\n\t20467 - 11905: 0xD9BD,\n\t20468 - 11905: 0x826B,\n\t20469 - 11905: 0x826C,\n\t20470 - 11905: 0x826D,\n\t20471 - 11905: 0x826E,\n\t20472 - 11905: 0xD9BA,\n\t20473 - 11905: 0x826F,\n\t20474 - 11905: 0xB0B3,\n\t20475 - 11905: 0x8270,\n\t20476 - 11905: 0x8271,\n\t20477 - 11905: 0x8272,\n\t20478 - 11905: 0xD9C2,\n\t20479 - 11905: 0x8273,\n\t20480 - 11905: 0x8274,\n\t20481 - 11905: 0x8275,\n\t20482 - 11905: 0x8276,\n\t20483 - 11905: 0x8277,\n\t20484 - 11905: 0x8278,\n\t20485 - 11905: 0x8279,\n\t20486 - 11905: 0x827A,\n\t20487 - 11905: 0x827B,\n\t20488 - 11905: 0x827C,\n\t20489 - 11905: 0x827D,\n\t20490 - 11905: 0x827E,\n\t20491 - 11905: 0x8280,\n\t20492 - 11905: 0xD9C4,\n\t20493 - 11905: 0xB1B6,\n\t20494 - 11905: 0x8281,\n\t20495 - 11905: 0xD9BF,\n\t20496 - 11905: 0x8282,\n\t20497 - 11905: 0x8283,\n\t20498 - 11905: 0xB5B9,\n\t20499 - 11905: 0x8284,\n\t20500 - 11905: 0xBEF3,\n\t20501 - 11905: 0x8285,\n\t20502 - 11905: 0x8286,\n\t20503 - 11905: 0x8287,\n\t20504 - 11905: 0xCCC8,\n\t20505 - 11905: 0xBAF2,\n\t20506 - 11905: 0xD2D0,\n\t20507 - 11905: 0x8288,\n\t20508 - 11905: 0xD9C3,\n\t20509 - 11905: 0x8289,\n\t20510 - 11905: 0x828A,\n\t20511 - 11905: 0xBDE8,\n\t20512 - 11905: 0x828B,\n\t20513 - 11905: 0xB3AB,\n\t20514 - 11905: 0x828C,\n\t20515 - 11905: 0x828D,\n\t20516 - 11905: 0x828E,\n\t20517 - 11905: 0xD9C5,\n\t20518 - 11905: 0xBEEB,\n\t20519 - 11905: 0x828F,\n\t20520 - 11905: 0xD9C6,\n\t20521 - 11905: 0xD9BB,\n\t20522 - 11905: 0xC4DF,\n\t20523 - 11905: 0x8290,\n\t20524 - 11905: 0xD9BE,\n\t20525 - 11905: 0xD9C1,\n\t20526 - 11905: 0xD9C0,\n\t20527 - 11905: 0x8291,\n\t20528 - 11905: 0x8292,\n\t20529 - 11905: 0x8293,\n\t20530 - 11905: 0x8294,\n\t20531 - 11905: 0x8295,\n\t20532 - 11905: 0x8296,\n\t20533 - 11905: 0x8297,\n\t20534 - 11905: 0x8298,\n\t20535 - 11905: 0x8299,\n\t20536 - 11905: 0x829A,\n\t20537 - 11905: 0x829B,\n\t20538 - 11905: 0xD5AE,\n\t20539 - 11905: 0x829C,\n\t20540 - 11905: 0xD6B5,\n\t20541 - 11905: 0x829D,\n\t20542 - 11905: 0xC7E3,\n\t20543 - 11905: 0x829E,\n\t20544 - 11905: 0x829F,\n\t20545 - 11905: 0x82A0,\n\t20546 - 11905: 0x82A1,\n\t20547 - 11905: 0xD9C8,\n\t20548 - 11905: 0x82A2,\n\t20549 - 11905: 0x82A3,\n\t20550 - 11905: 0x82A4,\n\t20551 - 11905: 0xBCD9,\n\t20552 - 11905: 0xD9CA,\n\t20553 - 11905: 0x82A5,\n\t20554 - 11905: 0x82A6,\n\t20555 - 11905: 0x82A7,\n\t20556 - 11905: 0xD9BC,\n\t20557 - 11905: 0x82A8,\n\t20558 - 11905: 0xD9CB,\n\t20559 - 11905: 0xC6AB,\n\t20560 - 11905: 0x82A9,\n\t20561 - 11905: 0x82AA,\n\t20562 - 11905: 0x82AB,\n\t20563 - 11905: 0x82AC,\n\t20564 - 11905: 0x82AD,\n\t20565 - 11905: 0xD9C9,\n\t20566 - 11905: 0x82AE,\n\t20567 - 11905: 0x82AF,\n\t20568 - 11905: 0x82B0,\n\t20569 - 11905: 0x82B1,\n\t20570 - 11905: 0xD7F6,\n\t20571 - 11905: 0x82B2,\n\t20572 - 11905: 0xCDA3,\n\t20573 - 11905: 0x82B3,\n\t20574 - 11905: 0x82B4,\n\t20575 - 11905: 0x82B5,\n\t20576 - 11905: 0x82B6,\n\t20577 - 11905: 0x82B7,\n\t20578 - 11905: 0x82B8,\n\t20579 - 11905: 0x82B9,\n\t20580 - 11905: 0x82BA,\n\t20581 - 11905: 0xBDA1,\n\t20582 - 11905: 0x82BB,\n\t20583 - 11905: 0x82BC,\n\t20584 - 11905: 0x82BD,\n\t20585 - 11905: 0x82BE,\n\t20586 - 11905: 0x82BF,\n\t20587 - 11905: 0x82C0,\n\t20588 - 11905: 0xD9CC,\n\t20589 - 11905: 0x82C1,\n\t20590 - 11905: 0x82C2,\n\t20591 - 11905: 0x82C3,\n\t20592 - 11905: 0x82C4,\n\t20593 - 11905: 0x82C5,\n\t20594 - 11905: 0x82C6,\n\t20595 - 11905: 0x82C7,\n\t20596 - 11905: 0x82C8,\n\t20597 - 11905: 0x82C9,\n\t20598 - 11905: 0xC5BC,\n\t20599 - 11905: 0xCDB5,\n\t20600 - 11905: 0x82CA,\n\t20601 - 11905: 0x82CB,\n\t20602 - 11905: 0x82CC,\n\t20603 - 11905: 0xD9CD,\n\t20604 - 11905: 0x82CD,\n\t20605 - 11905: 0x82CE,\n\t20606 - 11905: 0xD9C7,\n\t20607 - 11905: 0xB3A5,\n\t20608 - 11905: 0xBFFE,\n\t20609 - 11905: 0x82CF,\n\t20610 - 11905: 0x82D0,\n\t20611 - 11905: 0x82D1,\n\t20612 - 11905: 0x82D2,\n\t20613 - 11905: 0xB8B5,\n\t20614 - 11905: 0x82D3,\n\t20615 - 11905: 0x82D4,\n\t20616 - 11905: 0xC0FC,\n\t20617 - 11905: 0x82D5,\n\t20618 - 11905: 0x82D6,\n\t20619 - 11905: 0x82D7,\n\t20620 - 11905: 0x82D8,\n\t20621 - 11905: 0xB0F8,\n\t20622 - 11905: 0x82D9,\n\t20623 - 11905: 0x82DA,\n\t20624 - 11905: 0x82DB,\n\t20625 - 11905: 0x82DC,\n\t20626 - 11905: 0x82DD,\n\t20627 - 11905: 0x82DE,\n\t20628 - 11905: 0x82DF,\n\t20629 - 11905: 0x82E0,\n\t20630 - 11905: 0x82E1,\n\t20631 - 11905: 0x82E2,\n\t20632 - 11905: 0x82E3,\n\t20633 - 11905: 0x82E4,\n\t20634 - 11905: 0x82E5,\n\t20635 - 11905: 0x82E6,\n\t20636 - 11905: 0x82E7,\n\t20637 - 11905: 0x82E8,\n\t20638 - 11905: 0x82E9,\n\t20639 - 11905: 0x82EA,\n\t20640 - 11905: 0x82EB,\n\t20641 - 11905: 0x82EC,\n\t20642 - 11905: 0x82ED,\n\t20643 - 11905: 0xB4F6,\n\t20644 - 11905: 0x82EE,\n\t20645 - 11905: 0xD9CE,\n\t20646 - 11905: 0x82EF,\n\t20647 - 11905: 0xD9CF,\n\t20648 - 11905: 0xB4A2,\n\t20649 - 11905: 0xD9D0,\n\t20650 - 11905: 0x82F0,\n\t20651 - 11905: 0x82F1,\n\t20652 - 11905: 0xB4DF,\n\t20653 - 11905: 0x82F2,\n\t20654 - 11905: 0x82F3,\n\t20655 - 11905: 0x82F4,\n\t20656 - 11905: 0x82F5,\n\t20657 - 11905: 0x82F6,\n\t20658 - 11905: 0xB0C1,\n\t20659 - 11905: 0x82F7,\n\t20660 - 11905: 0x82F8,\n\t20661 - 11905: 0x82F9,\n\t20662 - 11905: 0x82FA,\n\t20663 - 11905: 0x82FB,\n\t20664 - 11905: 0x82FC,\n\t20665 - 11905: 0x82FD,\n\t20666 - 11905: 0xD9D1,\n\t20667 - 11905: 0xC9B5,\n\t20668 - 11905: 0x82FE,\n\t20669 - 11905: 0x8340,\n\t20670 - 11905: 0x8341,\n\t20671 - 11905: 0x8342,\n\t20672 - 11905: 0x8343,\n\t20673 - 11905: 0x8344,\n\t20674 - 11905: 0x8345,\n\t20675 - 11905: 0x8346,\n\t20676 - 11905: 0x8347,\n\t20677 - 11905: 0x8348,\n\t20678 - 11905: 0x8349,\n\t20679 - 11905: 0x834A,\n\t20680 - 11905: 0x834B,\n\t20681 - 11905: 0x834C,\n\t20682 - 11905: 0x834D,\n\t20683 - 11905: 0x834E,\n\t20684 - 11905: 0x834F,\n\t20685 - 11905: 0x8350,\n\t20686 - 11905: 0x8351,\n\t20687 - 11905: 0xCFF1,\n\t20688 - 11905: 0x8352,\n\t20689 - 11905: 0x8353,\n\t20690 - 11905: 0x8354,\n\t20691 - 11905: 0x8355,\n\t20692 - 11905: 0x8356,\n\t20693 - 11905: 0x8357,\n\t20694 - 11905: 0xD9D2,\n\t20695 - 11905: 0x8358,\n\t20696 - 11905: 0x8359,\n\t20697 - 11905: 0x835A,\n\t20698 - 11905: 0xC1C5,\n\t20699 - 11905: 0x835B,\n\t20700 - 11905: 0x835C,\n\t20701 - 11905: 0x835D,\n\t20702 - 11905: 0x835E,\n\t20703 - 11905: 0x835F,\n\t20704 - 11905: 0x8360,\n\t20705 - 11905: 0x8361,\n\t20706 - 11905: 0x8362,\n\t20707 - 11905: 0x8363,\n\t20708 - 11905: 0x8364,\n\t20709 - 11905: 0x8365,\n\t20710 - 11905: 0xD9D6,\n\t20711 - 11905: 0xC9AE,\n\t20712 - 11905: 0x8366,\n\t20713 - 11905: 0x8367,\n\t20714 - 11905: 0x8368,\n\t20715 - 11905: 0x8369,\n\t20716 - 11905: 0xD9D5,\n\t20717 - 11905: 0xD9D4,\n\t20718 - 11905: 0xD9D7,\n\t20719 - 11905: 0x836A,\n\t20720 - 11905: 0x836B,\n\t20721 - 11905: 0x836C,\n\t20722 - 11905: 0x836D,\n\t20723 - 11905: 0xCBDB,\n\t20724 - 11905: 0x836E,\n\t20725 - 11905: 0xBDA9,\n\t20726 - 11905: 0x836F,\n\t20727 - 11905: 0x8370,\n\t20728 - 11905: 0x8371,\n\t20729 - 11905: 0x8372,\n\t20730 - 11905: 0x8373,\n\t20731 - 11905: 0xC6A7,\n\t20732 - 11905: 0x8374,\n\t20733 - 11905: 0x8375,\n\t20734 - 11905: 0x8376,\n\t20735 - 11905: 0x8377,\n\t20736 - 11905: 0x8378,\n\t20737 - 11905: 0x8379,\n\t20738 - 11905: 0x837A,\n\t20739 - 11905: 0x837B,\n\t20740 - 11905: 0x837C,\n\t20741 - 11905: 0x837D,\n\t20742 - 11905: 0xD9D3,\n\t20743 - 11905: 0xD9D8,\n\t20744 - 11905: 0x837E,\n\t20745 - 11905: 0x8380,\n\t20746 - 11905: 0x8381,\n\t20747 - 11905: 0xD9D9,\n\t20748 - 11905: 0x8382,\n\t20749 - 11905: 0x8383,\n\t20750 - 11905: 0x8384,\n\t20751 - 11905: 0x8385,\n\t20752 - 11905: 0x8386,\n\t20753 - 11905: 0x8387,\n\t20754 - 11905: 0xC8E5,\n\t20755 - 11905: 0x8388,\n\t20756 - 11905: 0x8389,\n\t20757 - 11905: 0x838A,\n\t20758 - 11905: 0x838B,\n\t20759 - 11905: 0x838C,\n\t20760 - 11905: 0x838D,\n\t20761 - 11905: 0x838E,\n\t20762 - 11905: 0x838F,\n\t20763 - 11905: 0x8390,\n\t20764 - 11905: 0x8391,\n\t20765 - 11905: 0x8392,\n\t20766 - 11905: 0x8393,\n\t20767 - 11905: 0x8394,\n\t20768 - 11905: 0x8395,\n\t20769 - 11905: 0xC0DC,\n\t20770 - 11905: 0x8396,\n\t20771 - 11905: 0x8397,\n\t20772 - 11905: 0x8398,\n\t20773 - 11905: 0x8399,\n\t20774 - 11905: 0x839A,\n\t20775 - 11905: 0x839B,\n\t20776 - 11905: 0x839C,\n\t20777 - 11905: 0x839D,\n\t20778 - 11905: 0x839E,\n\t20779 - 11905: 0x839F,\n\t20780 - 11905: 0x83A0,\n\t20781 - 11905: 0x83A1,\n\t20782 - 11905: 0x83A2,\n\t20783 - 11905: 0x83A3,\n\t20784 - 11905: 0x83A4,\n\t20785 - 11905: 0x83A5,\n\t20786 - 11905: 0x83A6,\n\t20787 - 11905: 0x83A7,\n\t20788 - 11905: 0x83A8,\n\t20789 - 11905: 0x83A9,\n\t20790 - 11905: 0x83AA,\n\t20791 - 11905: 0x83AB,\n\t20792 - 11905: 0x83AC,\n\t20793 - 11905: 0x83AD,\n\t20794 - 11905: 0x83AE,\n\t20795 - 11905: 0x83AF,\n\t20796 - 11905: 0x83B0,\n\t20797 - 11905: 0x83B1,\n\t20798 - 11905: 0x83B2,\n\t20799 - 11905: 0xB6F9,\n\t20800 - 11905: 0xD8A3,\n\t20801 - 11905: 0xD4CA,\n\t20802 - 11905: 0x83B3,\n\t20803 - 11905: 0xD4AA,\n\t20804 - 11905: 0xD0D6,\n\t20805 - 11905: 0xB3E4,\n\t20806 - 11905: 0xD5D7,\n\t20807 - 11905: 0x83B4,\n\t20808 - 11905: 0xCFC8,\n\t20809 - 11905: 0xB9E2,\n\t20810 - 11905: 0x83B5,\n\t20811 - 11905: 0xBFCB,\n\t20812 - 11905: 0x83B6,\n\t20813 - 11905: 0xC3E2,\n\t20814 - 11905: 0x83B7,\n\t20815 - 11905: 0x83B8,\n\t20816 - 11905: 0x83B9,\n\t20817 - 11905: 0xB6D2,\n\t20818 - 11905: 0x83BA,\n\t20819 - 11905: 0x83BB,\n\t20820 - 11905: 0xCDC3,\n\t20821 - 11905: 0xD9EE,\n\t20822 - 11905: 0xD9F0,\n\t20823 - 11905: 0x83BC,\n\t20824 - 11905: 0x83BD,\n\t20825 - 11905: 0x83BE,\n\t20826 - 11905: 0xB5B3,\n\t20827 - 11905: 0x83BF,\n\t20828 - 11905: 0xB6B5,\n\t20829 - 11905: 0x83C0,\n\t20830 - 11905: 0x83C1,\n\t20831 - 11905: 0x83C2,\n\t20832 - 11905: 0x83C3,\n\t20833 - 11905: 0x83C4,\n\t20834 - 11905: 0xBEA4,\n\t20835 - 11905: 0x83C5,\n\t20836 - 11905: 0x83C6,\n\t20837 - 11905: 0xC8EB,\n\t20838 - 11905: 0x83C7,\n\t20839 - 11905: 0x83C8,\n\t20840 - 11905: 0xC8AB,\n\t20841 - 11905: 0x83C9,\n\t20842 - 11905: 0x83CA,\n\t20843 - 11905: 0xB0CB,\n\t20844 - 11905: 0xB9AB,\n\t20845 - 11905: 0xC1F9,\n\t20846 - 11905: 0xD9E2,\n\t20847 - 11905: 0x83CB,\n\t20848 - 11905: 0xC0BC,\n\t20849 - 11905: 0xB9B2,\n\t20850 - 11905: 0x83CC,\n\t20851 - 11905: 0xB9D8,\n\t20852 - 11905: 0xD0CB,\n\t20853 - 11905: 0xB1F8,\n\t20854 - 11905: 0xC6E4,\n\t20855 - 11905: 0xBEDF,\n\t20856 - 11905: 0xB5E4,\n\t20857 - 11905: 0xD7C8,\n\t20858 - 11905: 0x83CD,\n\t20859 - 11905: 0xD1F8,\n\t20860 - 11905: 0xBCE6,\n\t20861 - 11905: 0xCADE,\n\t20862 - 11905: 0x83CE,\n\t20863 - 11905: 0x83CF,\n\t20864 - 11905: 0xBCBD,\n\t20865 - 11905: 0xD9E6,\n\t20866 - 11905: 0xD8E7,\n\t20867 - 11905: 0x83D0,\n\t20868 - 11905: 0x83D1,\n\t20869 - 11905: 0xC4DA,\n\t20870 - 11905: 0x83D2,\n\t20871 - 11905: 0x83D3,\n\t20872 - 11905: 0xB8D4,\n\t20873 - 11905: 0xC8BD,\n\t20874 - 11905: 0x83D4,\n\t20875 - 11905: 0x83D5,\n\t20876 - 11905: 0xB2E1,\n\t20877 - 11905: 0xD4D9,\n\t20878 - 11905: 0x83D6,\n\t20879 - 11905: 0x83D7,\n\t20880 - 11905: 0x83D8,\n\t20881 - 11905: 0x83D9,\n\t20882 - 11905: 0xC3B0,\n\t20883 - 11905: 0x83DA,\n\t20884 - 11905: 0x83DB,\n\t20885 - 11905: 0xC3E1,\n\t20886 - 11905: 0xDAA2,\n\t20887 - 11905: 0xC8DF,\n\t20888 - 11905: 0x83DC,\n\t20889 - 11905: 0xD0B4,\n\t20890 - 11905: 0x83DD,\n\t20891 - 11905: 0xBEFC,\n\t20892 - 11905: 0xC5A9,\n\t20893 - 11905: 0x83DE,\n\t20894 - 11905: 0x83DF,\n\t20895 - 11905: 0x83E0,\n\t20896 - 11905: 0xB9DA,\n\t20897 - 11905: 0x83E1,\n\t20898 - 11905: 0xDAA3,\n\t20899 - 11905: 0x83E2,\n\t20900 - 11905: 0xD4A9,\n\t20901 - 11905: 0xDAA4,\n\t20902 - 11905: 0x83E3,\n\t20903 - 11905: 0x83E4,\n\t20904 - 11905: 0x83E5,\n\t20905 - 11905: 0x83E6,\n\t20906 - 11905: 0x83E7,\n\t20907 - 11905: 0xD9FB,\n\t20908 - 11905: 0xB6AC,\n\t20909 - 11905: 0x83E8,\n\t20910 - 11905: 0x83E9,\n\t20911 - 11905: 0xB7EB,\n\t20912 - 11905: 0xB1F9,\n\t20913 - 11905: 0xD9FC,\n\t20914 - 11905: 0xB3E5,\n\t20915 - 11905: 0xBEF6,\n\t20916 - 11905: 0x83EA,\n\t20917 - 11905: 0xBFF6,\n\t20918 - 11905: 0xD2B1,\n\t20919 - 11905: 0xC0E4,\n\t20920 - 11905: 0x83EB,\n\t20921 - 11905: 0x83EC,\n\t20922 - 11905: 0x83ED,\n\t20923 - 11905: 0xB6B3,\n\t20924 - 11905: 0xD9FE,\n\t20925 - 11905: 0xD9FD,\n\t20926 - 11905: 0x83EE,\n\t20927 - 11905: 0x83EF,\n\t20928 - 11905: 0xBEBB,\n\t20929 - 11905: 0x83F0,\n\t20930 - 11905: 0x83F1,\n\t20931 - 11905: 0x83F2,\n\t20932 - 11905: 0xC6E0,\n\t20933 - 11905: 0x83F3,\n\t20934 - 11905: 0xD7BC,\n\t20935 - 11905: 0xDAA1,\n\t20936 - 11905: 0x83F4,\n\t20937 - 11905: 0xC1B9,\n\t20938 - 11905: 0x83F5,\n\t20939 - 11905: 0xB5F2,\n\t20940 - 11905: 0xC1E8,\n\t20941 - 11905: 0x83F6,\n\t20942 - 11905: 0x83F7,\n\t20943 - 11905: 0xBCF5,\n\t20944 - 11905: 0x83F8,\n\t20945 - 11905: 0xB4D5,\n\t20946 - 11905: 0x83F9,\n\t20947 - 11905: 0x83FA,\n\t20948 - 11905: 0x83FB,\n\t20949 - 11905: 0x83FC,\n\t20950 - 11905: 0x83FD,\n\t20951 - 11905: 0x83FE,\n\t20952 - 11905: 0x8440,\n\t20953 - 11905: 0x8441,\n\t20954 - 11905: 0x8442,\n\t20955 - 11905: 0xC1DD,\n\t20956 - 11905: 0x8443,\n\t20957 - 11905: 0xC4FD,\n\t20958 - 11905: 0x8444,\n\t20959 - 11905: 0x8445,\n\t20960 - 11905: 0xBCB8,\n\t20961 - 11905: 0xB7B2,\n\t20962 - 11905: 0x8446,\n\t20963 - 11905: 0x8447,\n\t20964 - 11905: 0xB7EF,\n\t20965 - 11905: 0x8448,\n\t20966 - 11905: 0x8449,\n\t20967 - 11905: 0x844A,\n\t20968 - 11905: 0x844B,\n\t20969 - 11905: 0x844C,\n\t20970 - 11905: 0x844D,\n\t20971 - 11905: 0xD9EC,\n\t20972 - 11905: 0x844E,\n\t20973 - 11905: 0xC6BE,\n\t20974 - 11905: 0x844F,\n\t20975 - 11905: 0xBFAD,\n\t20976 - 11905: 0xBBCB,\n\t20977 - 11905: 0x8450,\n\t20978 - 11905: 0x8451,\n\t20979 - 11905: 0xB5CA,\n\t20980 - 11905: 0x8452,\n\t20981 - 11905: 0xDBC9,\n\t20982 - 11905: 0xD0D7,\n\t20983 - 11905: 0x8453,\n\t20984 - 11905: 0xCDB9,\n\t20985 - 11905: 0xB0BC,\n\t20986 - 11905: 0xB3F6,\n\t20987 - 11905: 0xBBF7,\n\t20988 - 11905: 0xDBCA,\n\t20989 - 11905: 0xBAAF,\n\t20990 - 11905: 0x8454,\n\t20991 - 11905: 0xD4E4,\n\t20992 - 11905: 0xB5B6,\n\t20993 - 11905: 0xB5F3,\n\t20994 - 11905: 0xD8D6,\n\t20995 - 11905: 0xC8D0,\n\t20996 - 11905: 0x8455,\n\t20997 - 11905: 0x8456,\n\t20998 - 11905: 0xB7D6,\n\t20999 - 11905: 0xC7D0,\n\t21000 - 11905: 0xD8D7,\n\t21001 - 11905: 0x8457,\n\t21002 - 11905: 0xBFAF,\n\t21003 - 11905: 0x8458,\n\t21004 - 11905: 0x8459,\n\t21005 - 11905: 0xDBBB,\n\t21006 - 11905: 0xD8D8,\n\t21007 - 11905: 0x845A,\n\t21008 - 11905: 0x845B,\n\t21009 - 11905: 0xD0CC,\n\t21010 - 11905: 0xBBAE,\n\t21011 - 11905: 0x845C,\n\t21012 - 11905: 0x845D,\n\t21013 - 11905: 0x845E,\n\t21014 - 11905: 0xEBBE,\n\t21015 - 11905: 0xC1D0,\n\t21016 - 11905: 0xC1F5,\n\t21017 - 11905: 0xD4F2,\n\t21018 - 11905: 0xB8D5,\n\t21019 - 11905: 0xB4B4,\n\t21020 - 11905: 0x845F,\n\t21021 - 11905: 0xB3F5,\n\t21022 - 11905: 0x8460,\n\t21023 - 11905: 0x8461,\n\t21024 - 11905: 0xC9BE,\n\t21025 - 11905: 0x8462,\n\t21026 - 11905: 0x8463,\n\t21027 - 11905: 0x8464,\n\t21028 - 11905: 0xC5D0,\n\t21029 - 11905: 0x8465,\n\t21030 - 11905: 0x8466,\n\t21031 - 11905: 0x8467,\n\t21032 - 11905: 0xC5D9,\n\t21033 - 11905: 0xC0FB,\n\t21034 - 11905: 0x8468,\n\t21035 - 11905: 0xB1F0,\n\t21036 - 11905: 0x8469,\n\t21037 - 11905: 0xD8D9,\n\t21038 - 11905: 0xB9CE,\n\t21039 - 11905: 0x846A,\n\t21040 - 11905: 0xB5BD,\n\t21041 - 11905: 0x846B,\n\t21042 - 11905: 0x846C,\n\t21043 - 11905: 0xD8DA,\n\t21044 - 11905: 0x846D,\n\t21045 - 11905: 0x846E,\n\t21046 - 11905: 0xD6C6,\n\t21047 - 11905: 0xCBA2,\n\t21048 - 11905: 0xC8AF,\n\t21049 - 11905: 0xC9B2,\n\t21050 - 11905: 0xB4CC,\n\t21051 - 11905: 0xBFCC,\n\t21052 - 11905: 0x846F,\n\t21053 - 11905: 0xB9F4,\n\t21054 - 11905: 0x8470,\n\t21055 - 11905: 0xD8DB,\n\t21056 - 11905: 0xD8DC,\n\t21057 - 11905: 0xB6E7,\n\t21058 - 11905: 0xBCC1,\n\t21059 - 11905: 0xCCEA,\n\t21060 - 11905: 0x8471,\n\t21061 - 11905: 0x8472,\n\t21062 - 11905: 0x8473,\n\t21063 - 11905: 0x8474,\n\t21064 - 11905: 0x8475,\n\t21065 - 11905: 0x8476,\n\t21066 - 11905: 0xCFF7,\n\t21067 - 11905: 0x8477,\n\t21068 - 11905: 0xD8DD,\n\t21069 - 11905: 0xC7B0,\n\t21070 - 11905: 0x8478,\n\t21071 - 11905: 0x8479,\n\t21072 - 11905: 0xB9D0,\n\t21073 - 11905: 0xBDA3,\n\t21074 - 11905: 0x847A,\n\t21075 - 11905: 0x847B,\n\t21076 - 11905: 0xCCDE,\n\t21077 - 11905: 0x847C,\n\t21078 - 11905: 0xC6CA,\n\t21079 - 11905: 0x847D,\n\t21080 - 11905: 0x847E,\n\t21081 - 11905: 0x8480,\n\t21082 - 11905: 0x8481,\n\t21083 - 11905: 0x8482,\n\t21084 - 11905: 0xD8E0,\n\t21085 - 11905: 0x8483,\n\t21086 - 11905: 0xD8DE,\n\t21087 - 11905: 0x8484,\n\t21088 - 11905: 0x8485,\n\t21089 - 11905: 0xD8DF,\n\t21090 - 11905: 0x8486,\n\t21091 - 11905: 0x8487,\n\t21092 - 11905: 0x8488,\n\t21093 - 11905: 0xB0FE,\n\t21094 - 11905: 0x8489,\n\t21095 - 11905: 0xBEE7,\n\t21096 - 11905: 0x848A,\n\t21097 - 11905: 0xCAA3,\n\t21098 - 11905: 0xBCF4,\n\t21099 - 11905: 0x848B,\n\t21100 - 11905: 0x848C,\n\t21101 - 11905: 0x848D,\n\t21102 - 11905: 0x848E,\n\t21103 - 11905: 0xB8B1,\n\t21104 - 11905: 0x848F,\n\t21105 - 11905: 0x8490,\n\t21106 - 11905: 0xB8EE,\n\t21107 - 11905: 0x8491,\n\t21108 - 11905: 0x8492,\n\t21109 - 11905: 0x8493,\n\t21110 - 11905: 0x8494,\n\t21111 - 11905: 0x8495,\n\t21112 - 11905: 0x8496,\n\t21113 - 11905: 0x8497,\n\t21114 - 11905: 0x8498,\n\t21115 - 11905: 0x8499,\n\t21116 - 11905: 0x849A,\n\t21117 - 11905: 0xD8E2,\n\t21118 - 11905: 0x849B,\n\t21119 - 11905: 0xBDCB,\n\t21120 - 11905: 0x849C,\n\t21121 - 11905: 0xD8E4,\n\t21122 - 11905: 0xD8E3,\n\t21123 - 11905: 0x849D,\n\t21124 - 11905: 0x849E,\n\t21125 - 11905: 0x849F,\n\t21126 - 11905: 0x84A0,\n\t21127 - 11905: 0x84A1,\n\t21128 - 11905: 0xC5FC,\n\t21129 - 11905: 0x84A2,\n\t21130 - 11905: 0x84A3,\n\t21131 - 11905: 0x84A4,\n\t21132 - 11905: 0x84A5,\n\t21133 - 11905: 0x84A6,\n\t21134 - 11905: 0x84A7,\n\t21135 - 11905: 0x84A8,\n\t21136 - 11905: 0xD8E5,\n\t21137 - 11905: 0x84A9,\n\t21138 - 11905: 0x84AA,\n\t21139 - 11905: 0xD8E6,\n\t21140 - 11905: 0x84AB,\n\t21141 - 11905: 0x84AC,\n\t21142 - 11905: 0x84AD,\n\t21143 - 11905: 0x84AE,\n\t21144 - 11905: 0x84AF,\n\t21145 - 11905: 0x84B0,\n\t21146 - 11905: 0x84B1,\n\t21147 - 11905: 0xC1A6,\n\t21148 - 11905: 0x84B2,\n\t21149 - 11905: 0xC8B0,\n\t21150 - 11905: 0xB0EC,\n\t21151 - 11905: 0xB9A6,\n\t21152 - 11905: 0xBCD3,\n\t21153 - 11905: 0xCEF1,\n\t21154 - 11905: 0xDBBD,\n\t21155 - 11905: 0xC1D3,\n\t21156 - 11905: 0x84B3,\n\t21157 - 11905: 0x84B4,\n\t21158 - 11905: 0x84B5,\n\t21159 - 11905: 0x84B6,\n\t21160 - 11905: 0xB6AF,\n\t21161 - 11905: 0xD6FA,\n\t21162 - 11905: 0xC5AC,\n\t21163 - 11905: 0xBDD9,\n\t21164 - 11905: 0xDBBE,\n\t21165 - 11905: 0xDBBF,\n\t21166 - 11905: 0x84B7,\n\t21167 - 11905: 0x84B8,\n\t21168 - 11905: 0x84B9,\n\t21169 - 11905: 0xC0F8,\n\t21170 - 11905: 0xBEA2,\n\t21171 - 11905: 0xC0CD,\n\t21172 - 11905: 0x84BA,\n\t21173 - 11905: 0x84BB,\n\t21174 - 11905: 0x84BC,\n\t21175 - 11905: 0x84BD,\n\t21176 - 11905: 0x84BE,\n\t21177 - 11905: 0x84BF,\n\t21178 - 11905: 0x84C0,\n\t21179 - 11905: 0x84C1,\n\t21180 - 11905: 0x84C2,\n\t21181 - 11905: 0x84C3,\n\t21182 - 11905: 0xDBC0,\n\t21183 - 11905: 0xCAC6,\n\t21184 - 11905: 0x84C4,\n\t21185 - 11905: 0x84C5,\n\t21186 - 11905: 0x84C6,\n\t21187 - 11905: 0xB2AA,\n\t21188 - 11905: 0x84C7,\n\t21189 - 11905: 0x84C8,\n\t21190 - 11905: 0x84C9,\n\t21191 - 11905: 0xD3C2,\n\t21192 - 11905: 0x84CA,\n\t21193 - 11905: 0xC3E3,\n\t21194 - 11905: 0x84CB,\n\t21195 - 11905: 0xD1AB,\n\t21196 - 11905: 0x84CC,\n\t21197 - 11905: 0x84CD,\n\t21198 - 11905: 0x84CE,\n\t21199 - 11905: 0x84CF,\n\t21200 - 11905: 0xDBC2,\n\t21201 - 11905: 0x84D0,\n\t21202 - 11905: 0xC0D5,\n\t21203 - 11905: 0x84D1,\n\t21204 - 11905: 0x84D2,\n\t21205 - 11905: 0x84D3,\n\t21206 - 11905: 0xDBC3,\n\t21207 - 11905: 0x84D4,\n\t21208 - 11905: 0xBFB1,\n\t21209 - 11905: 0x84D5,\n\t21210 - 11905: 0x84D6,\n\t21211 - 11905: 0x84D7,\n\t21212 - 11905: 0x84D8,\n\t21213 - 11905: 0x84D9,\n\t21214 - 11905: 0x84DA,\n\t21215 - 11905: 0xC4BC,\n\t21216 - 11905: 0x84DB,\n\t21217 - 11905: 0x84DC,\n\t21218 - 11905: 0x84DD,\n\t21219 - 11905: 0x84DE,\n\t21220 - 11905: 0xC7DA,\n\t21221 - 11905: 0x84DF,\n\t21222 - 11905: 0x84E0,\n\t21223 - 11905: 0x84E1,\n\t21224 - 11905: 0x84E2,\n\t21225 - 11905: 0x84E3,\n\t21226 - 11905: 0x84E4,\n\t21227 - 11905: 0x84E5,\n\t21228 - 11905: 0x84E6,\n\t21229 - 11905: 0x84E7,\n\t21230 - 11905: 0x84E8,\n\t21231 - 11905: 0x84E9,\n\t21232 - 11905: 0xDBC4,\n\t21233 - 11905: 0x84EA,\n\t21234 - 11905: 0x84EB,\n\t21235 - 11905: 0x84EC,\n\t21236 - 11905: 0x84ED,\n\t21237 - 11905: 0x84EE,\n\t21238 - 11905: 0x84EF,\n\t21239 - 11905: 0x84F0,\n\t21240 - 11905: 0x84F1,\n\t21241 - 11905: 0xD9E8,\n\t21242 - 11905: 0xC9D7,\n\t21243 - 11905: 0x84F2,\n\t21244 - 11905: 0x84F3,\n\t21245 - 11905: 0x84F4,\n\t21246 - 11905: 0xB9B4,\n\t21247 - 11905: 0xCEF0,\n\t21248 - 11905: 0xD4C8,\n\t21249 - 11905: 0x84F5,\n\t21250 - 11905: 0x84F6,\n\t21251 - 11905: 0x84F7,\n\t21252 - 11905: 0x84F8,\n\t21253 - 11905: 0xB0FC,\n\t21254 - 11905: 0xB4D2,\n\t21255 - 11905: 0x84F9,\n\t21256 - 11905: 0xD0D9,\n\t21257 - 11905: 0x84FA,\n\t21258 - 11905: 0x84FB,\n\t21259 - 11905: 0x84FC,\n\t21260 - 11905: 0x84FD,\n\t21261 - 11905: 0xD9E9,\n\t21262 - 11905: 0x84FE,\n\t21263 - 11905: 0xDECB,\n\t21264 - 11905: 0xD9EB,\n\t21265 - 11905: 0x8540,\n\t21266 - 11905: 0x8541,\n\t21267 - 11905: 0x8542,\n\t21268 - 11905: 0x8543,\n\t21269 - 11905: 0xD8B0,\n\t21270 - 11905: 0xBBAF,\n\t21271 - 11905: 0xB1B1,\n\t21272 - 11905: 0x8544,\n\t21273 - 11905: 0xB3D7,\n\t21274 - 11905: 0xD8CE,\n\t21275 - 11905: 0x8545,\n\t21276 - 11905: 0x8546,\n\t21277 - 11905: 0xD4D1,\n\t21278 - 11905: 0x8547,\n\t21279 - 11905: 0x8548,\n\t21280 - 11905: 0xBDB3,\n\t21281 - 11905: 0xBFEF,\n\t21282 - 11905: 0x8549,\n\t21283 - 11905: 0xCFBB,\n\t21284 - 11905: 0x854A,\n\t21285 - 11905: 0x854B,\n\t21286 - 11905: 0xD8D0,\n\t21287 - 11905: 0x854C,\n\t21288 - 11905: 0x854D,\n\t21289 - 11905: 0x854E,\n\t21290 - 11905: 0xB7CB,\n\t21291 - 11905: 0x854F,\n\t21292 - 11905: 0x8550,\n\t21293 - 11905: 0x8551,\n\t21294 - 11905: 0xD8D1,\n\t21295 - 11905: 0x8552,\n\t21296 - 11905: 0x8553,\n\t21297 - 11905: 0x8554,\n\t21298 - 11905: 0x8555,\n\t21299 - 11905: 0x8556,\n\t21300 - 11905: 0x8557,\n\t21301 - 11905: 0x8558,\n\t21302 - 11905: 0x8559,\n\t21303 - 11905: 0x855A,\n\t21304 - 11905: 0x855B,\n\t21305 - 11905: 0xC6A5,\n\t21306 - 11905: 0xC7F8,\n\t21307 - 11905: 0xD2BD,\n\t21308 - 11905: 0x855C,\n\t21309 - 11905: 0x855D,\n\t21310 - 11905: 0xD8D2,\n\t21311 - 11905: 0xC4E4,\n\t21312 - 11905: 0x855E,\n\t21313 - 11905: 0xCAAE,\n\t21314 - 11905: 0x855F,\n\t21315 - 11905: 0xC7A7,\n\t21316 - 11905: 0x8560,\n\t21317 - 11905: 0xD8A6,\n\t21318 - 11905: 0x8561,\n\t21319 - 11905: 0xC9FD,\n\t21320 - 11905: 0xCEE7,\n\t21321 - 11905: 0xBBDC,\n\t21322 - 11905: 0xB0EB,\n\t21323 - 11905: 0x8562,\n\t21324 - 11905: 0x8563,\n\t21325 - 11905: 0x8564,\n\t21326 - 11905: 0xBBAA,\n\t21327 - 11905: 0xD0AD,\n\t21328 - 11905: 0x8565,\n\t21329 - 11905: 0xB1B0,\n\t21330 - 11905: 0xD7E4,\n\t21331 - 11905: 0xD7BF,\n\t21332 - 11905: 0x8566,\n\t21333 - 11905: 0xB5A5,\n\t21334 - 11905: 0xC2F4,\n\t21335 - 11905: 0xC4CF,\n\t21336 - 11905: 0x8567,\n\t21337 - 11905: 0x8568,\n\t21338 - 11905: 0xB2A9,\n\t21339 - 11905: 0x8569,\n\t21340 - 11905: 0xB2B7,\n\t21341 - 11905: 0x856A,\n\t21342 - 11905: 0xB1E5,\n\t21343 - 11905: 0xDFB2,\n\t21344 - 11905: 0xD5BC,\n\t21345 - 11905: 0xBFA8,\n\t21346 - 11905: 0xC2AC,\n\t21347 - 11905: 0xD8D5,\n\t21348 - 11905: 0xC2B1,\n\t21349 - 11905: 0x856B,\n\t21350 - 11905: 0xD8D4,\n\t21351 - 11905: 0xCED4,\n\t21352 - 11905: 0x856C,\n\t21353 - 11905: 0xDAE0,\n\t21354 - 11905: 0x856D,\n\t21355 - 11905: 0xCEC0,\n\t21356 - 11905: 0x856E,\n\t21357 - 11905: 0x856F,\n\t21358 - 11905: 0xD8B4,\n\t21359 - 11905: 0xC3AE,\n\t21360 - 11905: 0xD3A1,\n\t21361 - 11905: 0xCEA3,\n\t21362 - 11905: 0x8570,\n\t21363 - 11905: 0xBCB4,\n\t21364 - 11905: 0xC8B4,\n\t21365 - 11905: 0xC2D1,\n\t21366 - 11905: 0x8571,\n\t21367 - 11905: 0xBEED,\n\t21368 - 11905: 0xD0B6,\n\t21369 - 11905: 0x8572,\n\t21370 - 11905: 0xDAE1,\n\t21371 - 11905: 0x8573,\n\t21372 - 11905: 0x8574,\n\t21373 - 11905: 0x8575,\n\t21374 - 11905: 0x8576,\n\t21375 - 11905: 0xC7E4,\n\t21376 - 11905: 0x8577,\n\t21377 - 11905: 0x8578,\n\t21378 - 11905: 0xB3A7,\n\t21379 - 11905: 0x8579,\n\t21380 - 11905: 0xB6F2,\n\t21381 - 11905: 0xCCFC,\n\t21382 - 11905: 0xC0FA,\n\t21383 - 11905: 0x857A,\n\t21384 - 11905: 0x857B,\n\t21385 - 11905: 0xC0F7,\n\t21386 - 11905: 0x857C,\n\t21387 - 11905: 0xD1B9,\n\t21388 - 11905: 0xD1E1,\n\t21389 - 11905: 0xD8C7,\n\t21390 - 11905: 0x857D,\n\t21391 - 11905: 0x857E,\n\t21392 - 11905: 0x8580,\n\t21393 - 11905: 0x8581,\n\t21394 - 11905: 0x8582,\n\t21395 - 11905: 0x8583,\n\t21396 - 11905: 0x8584,\n\t21397 - 11905: 0xB2DE,\n\t21398 - 11905: 0x8585,\n\t21399 - 11905: 0x8586,\n\t21400 - 11905: 0xC0E5,\n\t21401 - 11905: 0x8587,\n\t21402 - 11905: 0xBAF1,\n\t21403 - 11905: 0x8588,\n\t21404 - 11905: 0x8589,\n\t21405 - 11905: 0xD8C8,\n\t21406 - 11905: 0x858A,\n\t21407 - 11905: 0xD4AD,\n\t21408 - 11905: 0x858B,\n\t21409 - 11905: 0x858C,\n\t21410 - 11905: 0xCFE1,\n\t21411 - 11905: 0xD8C9,\n\t21412 - 11905: 0x858D,\n\t21413 - 11905: 0xD8CA,\n\t21414 - 11905: 0xCFC3,\n\t21415 - 11905: 0x858E,\n\t21416 - 11905: 0xB3F8,\n\t21417 - 11905: 0xBEC7,\n\t21418 - 11905: 0x858F,\n\t21419 - 11905: 0x8590,\n\t21420 - 11905: 0x8591,\n\t21421 - 11905: 0x8592,\n\t21422 - 11905: 0xD8CB,\n\t21423 - 11905: 0x8593,\n\t21424 - 11905: 0x8594,\n\t21425 - 11905: 0x8595,\n\t21426 - 11905: 0x8596,\n\t21427 - 11905: 0x8597,\n\t21428 - 11905: 0x8598,\n\t21429 - 11905: 0x8599,\n\t21430 - 11905: 0xDBCC,\n\t21431 - 11905: 0x859A,\n\t21432 - 11905: 0x859B,\n\t21433 - 11905: 0x859C,\n\t21434 - 11905: 0x859D,\n\t21435 - 11905: 0xC8A5,\n\t21436 - 11905: 0x859E,\n\t21437 - 11905: 0x859F,\n\t21438 - 11905: 0x85A0,\n\t21439 - 11905: 0xCFD8,\n\t21440 - 11905: 0x85A1,\n\t21441 - 11905: 0xC8FE,\n\t21442 - 11905: 0xB2CE,\n\t21443 - 11905: 0x85A2,\n\t21444 - 11905: 0x85A3,\n\t21445 - 11905: 0x85A4,\n\t21446 - 11905: 0x85A5,\n\t21447 - 11905: 0x85A6,\n\t21448 - 11905: 0xD3D6,\n\t21449 - 11905: 0xB2E6,\n\t21450 - 11905: 0xBCB0,\n\t21451 - 11905: 0xD3D1,\n\t21452 - 11905: 0xCBAB,\n\t21453 - 11905: 0xB7B4,\n\t21454 - 11905: 0x85A7,\n\t21455 - 11905: 0x85A8,\n\t21456 - 11905: 0x85A9,\n\t21457 - 11905: 0xB7A2,\n\t21458 - 11905: 0x85AA,\n\t21459 - 11905: 0x85AB,\n\t21460 - 11905: 0xCAE5,\n\t21461 - 11905: 0x85AC,\n\t21462 - 11905: 0xC8A1,\n\t21463 - 11905: 0xCADC,\n\t21464 - 11905: 0xB1E4,\n\t21465 - 11905: 0xD0F0,\n\t21466 - 11905: 0x85AD,\n\t21467 - 11905: 0xC5D1,\n\t21468 - 11905: 0x85AE,\n\t21469 - 11905: 0x85AF,\n\t21470 - 11905: 0x85B0,\n\t21471 - 11905: 0xDBC5,\n\t21472 - 11905: 0xB5FE,\n\t21473 - 11905: 0x85B1,\n\t21474 - 11905: 0x85B2,\n\t21475 - 11905: 0xBFDA,\n\t21476 - 11905: 0xB9C5,\n\t21477 - 11905: 0xBEE4,\n\t21478 - 11905: 0xC1ED,\n\t21479 - 11905: 0x85B3,\n\t21480 - 11905: 0xDFB6,\n\t21481 - 11905: 0xDFB5,\n\t21482 - 11905: 0xD6BB,\n\t21483 - 11905: 0xBDD0,\n\t21484 - 11905: 0xD5D9,\n\t21485 - 11905: 0xB0C8,\n\t21486 - 11905: 0xB6A3,\n\t21487 - 11905: 0xBFC9,\n\t21488 - 11905: 0xCCA8,\n\t21489 - 11905: 0xDFB3,\n\t21490 - 11905: 0xCAB7,\n\t21491 - 11905: 0xD3D2,\n\t21492 - 11905: 0x85B4,\n\t21493 - 11905: 0xD8CF,\n\t21494 - 11905: 0xD2B6,\n\t21495 - 11905: 0xBAC5,\n\t21496 - 11905: 0xCBBE,\n\t21497 - 11905: 0xCCBE,\n\t21498 - 11905: 0x85B5,\n\t21499 - 11905: 0xDFB7,\n\t21500 - 11905: 0xB5F0,\n\t21501 - 11905: 0xDFB4,\n\t21502 - 11905: 0x85B6,\n\t21503 - 11905: 0x85B7,\n\t21504 - 11905: 0x85B8,\n\t21505 - 11905: 0xD3F5,\n\t21506 - 11905: 0x85B9,\n\t21507 - 11905: 0xB3D4,\n\t21508 - 11905: 0xB8F7,\n\t21509 - 11905: 0x85BA,\n\t21510 - 11905: 0xDFBA,\n\t21511 - 11905: 0x85BB,\n\t21512 - 11905: 0xBACF,\n\t21513 - 11905: 0xBCAA,\n\t21514 - 11905: 0xB5F5,\n\t21515 - 11905: 0x85BC,\n\t21516 - 11905: 0xCDAC,\n\t21517 - 11905: 0xC3FB,\n\t21518 - 11905: 0xBAF3,\n\t21519 - 11905: 0xC0F4,\n\t21520 - 11905: 0xCDC2,\n\t21521 - 11905: 0xCFF2,\n\t21522 - 11905: 0xDFB8,\n\t21523 - 11905: 0xCFC5,\n\t21524 - 11905: 0x85BD,\n\t21525 - 11905: 0xC2C0,\n\t21526 - 11905: 0xDFB9,\n\t21527 - 11905: 0xC2F0,\n\t21528 - 11905: 0x85BE,\n\t21529 - 11905: 0x85BF,\n\t21530 - 11905: 0x85C0,\n\t21531 - 11905: 0xBEFD,\n\t21532 - 11905: 0x85C1,\n\t21533 - 11905: 0xC1DF,\n\t21534 - 11905: 0xCDCC,\n\t21535 - 11905: 0xD2F7,\n\t21536 - 11905: 0xB7CD,\n\t21537 - 11905: 0xDFC1,\n\t21538 - 11905: 0x85C2,\n\t21539 - 11905: 0xDFC4,\n\t21540 - 11905: 0x85C3,\n\t21541 - 11905: 0x85C4,\n\t21542 - 11905: 0xB7F1,\n\t21543 - 11905: 0xB0C9,\n\t21544 - 11905: 0xB6D6,\n\t21545 - 11905: 0xB7D4,\n\t21546 - 11905: 0x85C5,\n\t21547 - 11905: 0xBAAC,\n\t21548 - 11905: 0xCCFD,\n\t21549 - 11905: 0xBFD4,\n\t21550 - 11905: 0xCBB1,\n\t21551 - 11905: 0xC6F4,\n\t21552 - 11905: 0x85C6,\n\t21553 - 11905: 0xD6A8,\n\t21554 - 11905: 0xDFC5,\n\t21555 - 11905: 0x85C7,\n\t21556 - 11905: 0xCEE2,\n\t21557 - 11905: 0xB3B3,\n\t21558 - 11905: 0x85C8,\n\t21559 - 11905: 0x85C9,\n\t21560 - 11905: 0xCEFC,\n\t21561 - 11905: 0xB4B5,\n\t21562 - 11905: 0x85CA,\n\t21563 - 11905: 0xCEC7,\n\t21564 - 11905: 0xBAF0,\n\t21565 - 11905: 0x85CB,\n\t21566 - 11905: 0xCEE1,\n\t21567 - 11905: 0x85CC,\n\t21568 - 11905: 0xD1BD,\n\t21569 - 11905: 0x85CD,\n\t21570 - 11905: 0x85CE,\n\t21571 - 11905: 0xDFC0,\n\t21572 - 11905: 0x85CF,\n\t21573 - 11905: 0x85D0,\n\t21574 - 11905: 0xB4F4,\n\t21575 - 11905: 0x85D1,\n\t21576 - 11905: 0xB3CA,\n\t21577 - 11905: 0x85D2,\n\t21578 - 11905: 0xB8E6,\n\t21579 - 11905: 0xDFBB,\n\t21580 - 11905: 0x85D3,\n\t21581 - 11905: 0x85D4,\n\t21582 - 11905: 0x85D5,\n\t21583 - 11905: 0x85D6,\n\t21584 - 11905: 0xC4C5,\n\t21585 - 11905: 0x85D7,\n\t21586 - 11905: 0xDFBC,\n\t21587 - 11905: 0xDFBD,\n\t21588 - 11905: 0xDFBE,\n\t21589 - 11905: 0xC5BB,\n\t21590 - 11905: 0xDFBF,\n\t21591 - 11905: 0xDFC2,\n\t21592 - 11905: 0xD4B1,\n\t21593 - 11905: 0xDFC3,\n\t21594 - 11905: 0x85D8,\n\t21595 - 11905: 0xC7BA,\n\t21596 - 11905: 0xCED8,\n\t21597 - 11905: 0x85D9,\n\t21598 - 11905: 0x85DA,\n\t21599 - 11905: 0x85DB,\n\t21600 - 11905: 0x85DC,\n\t21601 - 11905: 0x85DD,\n\t21602 - 11905: 0xC4D8,\n\t21603 - 11905: 0x85DE,\n\t21604 - 11905: 0xDFCA,\n\t21605 - 11905: 0x85DF,\n\t21606 - 11905: 0xDFCF,\n\t21607 - 11905: 0x85E0,\n\t21608 - 11905: 0xD6DC,\n\t21609 - 11905: 0x85E1,\n\t21610 - 11905: 0x85E2,\n\t21611 - 11905: 0x85E3,\n\t21612 - 11905: 0x85E4,\n\t21613 - 11905: 0x85E5,\n\t21614 - 11905: 0x85E6,\n\t21615 - 11905: 0x85E7,\n\t21616 - 11905: 0x85E8,\n\t21617 - 11905: 0xDFC9,\n\t21618 - 11905: 0xDFDA,\n\t21619 - 11905: 0xCEB6,\n\t21620 - 11905: 0x85E9,\n\t21621 - 11905: 0xBAC7,\n\t21622 - 11905: 0xDFCE,\n\t21623 - 11905: 0xDFC8,\n\t21624 - 11905: 0xC5DE,\n\t21625 - 11905: 0x85EA,\n\t21626 - 11905: 0x85EB,\n\t21627 - 11905: 0xC9EB,\n\t21628 - 11905: 0xBAF4,\n\t21629 - 11905: 0xC3FC,\n\t21630 - 11905: 0x85EC,\n\t21631 - 11905: 0x85ED,\n\t21632 - 11905: 0xBED7,\n\t21633 - 11905: 0x85EE,\n\t21634 - 11905: 0xDFC6,\n\t21635 - 11905: 0x85EF,\n\t21636 - 11905: 0xDFCD,\n\t21637 - 11905: 0x85F0,\n\t21638 - 11905: 0xC5D8,\n\t21639 - 11905: 0x85F1,\n\t21640 - 11905: 0x85F2,\n\t21641 - 11905: 0x85F3,\n\t21642 - 11905: 0x85F4,\n\t21643 - 11905: 0xD5A6,\n\t21644 - 11905: 0xBACD,\n\t21645 - 11905: 0x85F5,\n\t21646 - 11905: 0xBECC,\n\t21647 - 11905: 0xD3BD,\n\t21648 - 11905: 0xB8C0,\n\t21649 - 11905: 0x85F6,\n\t21650 - 11905: 0xD6E4,\n\t21651 - 11905: 0x85F7,\n\t21652 - 11905: 0xDFC7,\n\t21653 - 11905: 0xB9BE,\n\t21654 - 11905: 0xBFA7,\n\t21655 - 11905: 0x85F8,\n\t21656 - 11905: 0x85F9,\n\t21657 - 11905: 0xC1FC,\n\t21658 - 11905: 0xDFCB,\n\t21659 - 11905: 0xDFCC,\n\t21660 - 11905: 0x85FA,\n\t21661 - 11905: 0xDFD0,\n\t21662 - 11905: 0x85FB,\n\t21663 - 11905: 0x85FC,\n\t21664 - 11905: 0x85FD,\n\t21665 - 11905: 0x85FE,\n\t21666 - 11905: 0x8640,\n\t21667 - 11905: 0xDFDB,\n\t21668 - 11905: 0xDFE5,\n\t21669 - 11905: 0x8641,\n\t21670 - 11905: 0xDFD7,\n\t21671 - 11905: 0xDFD6,\n\t21672 - 11905: 0xD7C9,\n\t21673 - 11905: 0xDFE3,\n\t21674 - 11905: 0xDFE4,\n\t21675 - 11905: 0xE5EB,\n\t21676 - 11905: 0xD2A7,\n\t21677 - 11905: 0xDFD2,\n\t21678 - 11905: 0x8642,\n\t21679 - 11905: 0xBFA9,\n\t21680 - 11905: 0x8643,\n\t21681 - 11905: 0xD4DB,\n\t21682 - 11905: 0x8644,\n\t21683 - 11905: 0xBFC8,\n\t21684 - 11905: 0xDFD4,\n\t21685 - 11905: 0x8645,\n\t21686 - 11905: 0x8646,\n\t21687 - 11905: 0x8647,\n\t21688 - 11905: 0xCFCC,\n\t21689 - 11905: 0x8648,\n\t21690 - 11905: 0x8649,\n\t21691 - 11905: 0xDFDD,\n\t21692 - 11905: 0x864A,\n\t21693 - 11905: 0xD1CA,\n\t21694 - 11905: 0x864B,\n\t21695 - 11905: 0xDFDE,\n\t21696 - 11905: 0xB0A7,\n\t21697 - 11905: 0xC6B7,\n\t21698 - 11905: 0xDFD3,\n\t21699 - 11905: 0x864C,\n\t21700 - 11905: 0xBAE5,\n\t21701 - 11905: 0x864D,\n\t21702 - 11905: 0xB6DF,\n\t21703 - 11905: 0xCDDB,\n\t21704 - 11905: 0xB9FE,\n\t21705 - 11905: 0xD4D5,\n\t21706 - 11905: 0x864E,\n\t21707 - 11905: 0x864F,\n\t21708 - 11905: 0xDFDF,\n\t21709 - 11905: 0xCFEC,\n\t21710 - 11905: 0xB0A5,\n\t21711 - 11905: 0xDFE7,\n\t21712 - 11905: 0xDFD1,\n\t21713 - 11905: 0xD1C6,\n\t21714 - 11905: 0xDFD5,\n\t21715 - 11905: 0xDFD8,\n\t21716 - 11905: 0xDFD9,\n\t21717 - 11905: 0xDFDC,\n\t21718 - 11905: 0x8650,\n\t21719 - 11905: 0xBBA9,\n\t21720 - 11905: 0x8651,\n\t21721 - 11905: 0xDFE0,\n\t21722 - 11905: 0xDFE1,\n\t21723 - 11905: 0x8652,\n\t21724 - 11905: 0xDFE2,\n\t21725 - 11905: 0xDFE6,\n\t21726 - 11905: 0xDFE8,\n\t21727 - 11905: 0xD3B4,\n\t21728 - 11905: 0x8653,\n\t21729 - 11905: 0x8654,\n\t21730 - 11905: 0x8655,\n\t21731 - 11905: 0x8656,\n\t21732 - 11905: 0x8657,\n\t21733 - 11905: 0xB8E7,\n\t21734 - 11905: 0xC5B6,\n\t21735 - 11905: 0xDFEA,\n\t21736 - 11905: 0xC9DA,\n\t21737 - 11905: 0xC1A8,\n\t21738 - 11905: 0xC4C4,\n\t21739 - 11905: 0x8658,\n\t21740 - 11905: 0x8659,\n\t21741 - 11905: 0xBFDE,\n\t21742 - 11905: 0xCFF8,\n\t21743 - 11905: 0x865A,\n\t21744 - 11905: 0x865B,\n\t21745 - 11905: 0x865C,\n\t21746 - 11905: 0xD5DC,\n\t21747 - 11905: 0xDFEE,\n\t21748 - 11905: 0x865D,\n\t21749 - 11905: 0x865E,\n\t21750 - 11905: 0x865F,\n\t21751 - 11905: 0x8660,\n\t21752 - 11905: 0x8661,\n\t21753 - 11905: 0x8662,\n\t21754 - 11905: 0xB2B8,\n\t21755 - 11905: 0x8663,\n\t21756 - 11905: 0xBADF,\n\t21757 - 11905: 0xDFEC,\n\t21758 - 11905: 0x8664,\n\t21759 - 11905: 0xDBC1,\n\t21760 - 11905: 0x8665,\n\t21761 - 11905: 0xD1E4,\n\t21762 - 11905: 0x8666,\n\t21763 - 11905: 0x8667,\n\t21764 - 11905: 0x8668,\n\t21765 - 11905: 0x8669,\n\t21766 - 11905: 0xCBF4,\n\t21767 - 11905: 0xB4BD,\n\t21768 - 11905: 0x866A,\n\t21769 - 11905: 0xB0A6,\n\t21770 - 11905: 0x866B,\n\t21771 - 11905: 0x866C,\n\t21772 - 11905: 0x866D,\n\t21773 - 11905: 0x866E,\n\t21774 - 11905: 0x866F,\n\t21775 - 11905: 0xDFF1,\n\t21776 - 11905: 0xCCC6,\n\t21777 - 11905: 0xDFF2,\n\t21778 - 11905: 0x8670,\n\t21779 - 11905: 0x8671,\n\t21780 - 11905: 0xDFED,\n\t21781 - 11905: 0x8672,\n\t21782 - 11905: 0x8673,\n\t21783 - 11905: 0x8674,\n\t21784 - 11905: 0x8675,\n\t21785 - 11905: 0x8676,\n\t21786 - 11905: 0x8677,\n\t21787 - 11905: 0xDFE9,\n\t21788 - 11905: 0x8678,\n\t21789 - 11905: 0x8679,\n\t21790 - 11905: 0x867A,\n\t21791 - 11905: 0x867B,\n\t21792 - 11905: 0xDFEB,\n\t21793 - 11905: 0x867C,\n\t21794 - 11905: 0xDFEF,\n\t21795 - 11905: 0xDFF0,\n\t21796 - 11905: 0xBBBD,\n\t21797 - 11905: 0x867D,\n\t21798 - 11905: 0x867E,\n\t21799 - 11905: 0xDFF3,\n\t21800 - 11905: 0x8680,\n\t21801 - 11905: 0x8681,\n\t21802 - 11905: 0xDFF4,\n\t21803 - 11905: 0x8682,\n\t21804 - 11905: 0xBBA3,\n\t21805 - 11905: 0x8683,\n\t21806 - 11905: 0xCADB,\n\t21807 - 11905: 0xCEA8,\n\t21808 - 11905: 0xE0A7,\n\t21809 - 11905: 0xB3AA,\n\t21810 - 11905: 0x8684,\n\t21811 - 11905: 0xE0A6,\n\t21812 - 11905: 0x8685,\n\t21813 - 11905: 0x8686,\n\t21814 - 11905: 0x8687,\n\t21815 - 11905: 0xE0A1,\n\t21816 - 11905: 0x8688,\n\t21817 - 11905: 0x8689,\n\t21818 - 11905: 0x868A,\n\t21819 - 11905: 0x868B,\n\t21820 - 11905: 0xDFFE,\n\t21821 - 11905: 0x868C,\n\t21822 - 11905: 0xCDD9,\n\t21823 - 11905: 0xDFFC,\n\t21824 - 11905: 0x868D,\n\t21825 - 11905: 0xDFFA,\n\t21826 - 11905: 0x868E,\n\t21827 - 11905: 0xBFD0,\n\t21828 - 11905: 0xD7C4,\n\t21829 - 11905: 0x868F,\n\t21830 - 11905: 0xC9CC,\n\t21831 - 11905: 0x8690,\n\t21832 - 11905: 0x8691,\n\t21833 - 11905: 0xDFF8,\n\t21834 - 11905: 0xB0A1,\n\t21835 - 11905: 0x8692,\n\t21836 - 11905: 0x8693,\n\t21837 - 11905: 0x8694,\n\t21838 - 11905: 0x8695,\n\t21839 - 11905: 0x8696,\n\t21840 - 11905: 0xDFFD,\n\t21841 - 11905: 0x8697,\n\t21842 - 11905: 0x8698,\n\t21843 - 11905: 0x8699,\n\t21844 - 11905: 0x869A,\n\t21845 - 11905: 0xDFFB,\n\t21846 - 11905: 0xE0A2,\n\t21847 - 11905: 0x869B,\n\t21848 - 11905: 0x869C,\n\t21849 - 11905: 0x869D,\n\t21850 - 11905: 0x869E,\n\t21851 - 11905: 0x869F,\n\t21852 - 11905: 0xE0A8,\n\t21853 - 11905: 0x86A0,\n\t21854 - 11905: 0x86A1,\n\t21855 - 11905: 0x86A2,\n\t21856 - 11905: 0x86A3,\n\t21857 - 11905: 0xB7C8,\n\t21858 - 11905: 0x86A4,\n\t21859 - 11905: 0x86A5,\n\t21860 - 11905: 0xC6A1,\n\t21861 - 11905: 0xC9B6,\n\t21862 - 11905: 0xC0B2,\n\t21863 - 11905: 0xDFF5,\n\t21864 - 11905: 0x86A6,\n\t21865 - 11905: 0x86A7,\n\t21866 - 11905: 0xC5BE,\n\t21867 - 11905: 0x86A8,\n\t21868 - 11905: 0xD8C4,\n\t21869 - 11905: 0xDFF9,\n\t21870 - 11905: 0xC4F6,\n\t21871 - 11905: 0x86A9,\n\t21872 - 11905: 0x86AA,\n\t21873 - 11905: 0x86AB,\n\t21874 - 11905: 0x86AC,\n\t21875 - 11905: 0x86AD,\n\t21876 - 11905: 0x86AE,\n\t21877 - 11905: 0xE0A3,\n\t21878 - 11905: 0xE0A4,\n\t21879 - 11905: 0xE0A5,\n\t21880 - 11905: 0xD0A5,\n\t21881 - 11905: 0x86AF,\n\t21882 - 11905: 0x86B0,\n\t21883 - 11905: 0xE0B4,\n\t21884 - 11905: 0xCCE4,\n\t21885 - 11905: 0x86B1,\n\t21886 - 11905: 0xE0B1,\n\t21887 - 11905: 0x86B2,\n\t21888 - 11905: 0xBFA6,\n\t21889 - 11905: 0xE0AF,\n\t21890 - 11905: 0xCEB9,\n\t21891 - 11905: 0xE0AB,\n\t21892 - 11905: 0xC9C6,\n\t21893 - 11905: 0x86B3,\n\t21894 - 11905: 0x86B4,\n\t21895 - 11905: 0xC0AE,\n\t21896 - 11905: 0xE0AE,\n\t21897 - 11905: 0xBAED,\n\t21898 - 11905: 0xBAB0,\n\t21899 - 11905: 0xE0A9,\n\t21900 - 11905: 0x86B5,\n\t21901 - 11905: 0x86B6,\n\t21902 - 11905: 0x86B7,\n\t21903 - 11905: 0xDFF6,\n\t21904 - 11905: 0x86B8,\n\t21905 - 11905: 0xE0B3,\n\t21906 - 11905: 0x86B9,\n\t21907 - 11905: 0x86BA,\n\t21908 - 11905: 0xE0B8,\n\t21909 - 11905: 0x86BB,\n\t21910 - 11905: 0x86BC,\n\t21911 - 11905: 0x86BD,\n\t21912 - 11905: 0xB4AD,\n\t21913 - 11905: 0xE0B9,\n\t21914 - 11905: 0x86BE,\n\t21915 - 11905: 0x86BF,\n\t21916 - 11905: 0xCFB2,\n\t21917 - 11905: 0xBAC8,\n\t21918 - 11905: 0x86C0,\n\t21919 - 11905: 0xE0B0,\n\t21920 - 11905: 0x86C1,\n\t21921 - 11905: 0x86C2,\n\t21922 - 11905: 0x86C3,\n\t21923 - 11905: 0x86C4,\n\t21924 - 11905: 0x86C5,\n\t21925 - 11905: 0x86C6,\n\t21926 - 11905: 0x86C7,\n\t21927 - 11905: 0xD0FA,\n\t21928 - 11905: 0x86C8,\n\t21929 - 11905: 0x86C9,\n\t21930 - 11905: 0x86CA,\n\t21931 - 11905: 0x86CB,\n\t21932 - 11905: 0x86CC,\n\t21933 - 11905: 0x86CD,\n\t21934 - 11905: 0x86CE,\n\t21935 - 11905: 0x86CF,\n\t21936 - 11905: 0x86D0,\n\t21937 - 11905: 0xE0AC,\n\t21938 - 11905: 0x86D1,\n\t21939 - 11905: 0xD4FB,\n\t21940 - 11905: 0x86D2,\n\t21941 - 11905: 0xDFF7,\n\t21942 - 11905: 0x86D3,\n\t21943 - 11905: 0xC5E7,\n\t21944 - 11905: 0x86D4,\n\t21945 - 11905: 0xE0AD,\n\t21946 - 11905: 0x86D5,\n\t21947 - 11905: 0xD3F7,\n\t21948 - 11905: 0x86D6,\n\t21949 - 11905: 0xE0B6,\n\t21950 - 11905: 0xE0B7,\n\t21951 - 11905: 0x86D7,\n\t21952 - 11905: 0x86D8,\n\t21953 - 11905: 0x86D9,\n\t21954 - 11905: 0x86DA,\n\t21955 - 11905: 0x86DB,\n\t21956 - 11905: 0xE0C4,\n\t21957 - 11905: 0xD0E1,\n\t21958 - 11905: 0x86DC,\n\t21959 - 11905: 0x86DD,\n\t21960 - 11905: 0x86DE,\n\t21961 - 11905: 0xE0BC,\n\t21962 - 11905: 0x86DF,\n\t21963 - 11905: 0x86E0,\n\t21964 - 11905: 0xE0C9,\n\t21965 - 11905: 0xE0CA,\n\t21966 - 11905: 0x86E1,\n\t21967 - 11905: 0x86E2,\n\t21968 - 11905: 0x86E3,\n\t21969 - 11905: 0xE0BE,\n\t21970 - 11905: 0xE0AA,\n\t21971 - 11905: 0xC9A4,\n\t21972 - 11905: 0xE0C1,\n\t21973 - 11905: 0x86E4,\n\t21974 - 11905: 0xE0B2,\n\t21975 - 11905: 0x86E5,\n\t21976 - 11905: 0x86E6,\n\t21977 - 11905: 0x86E7,\n\t21978 - 11905: 0x86E8,\n\t21979 - 11905: 0x86E9,\n\t21980 - 11905: 0xCAC8,\n\t21981 - 11905: 0xE0C3,\n\t21982 - 11905: 0x86EA,\n\t21983 - 11905: 0xE0B5,\n\t21984 - 11905: 0x86EB,\n\t21985 - 11905: 0xCECB,\n\t21986 - 11905: 0x86EC,\n\t21987 - 11905: 0xCBC3,\n\t21988 - 11905: 0xE0CD,\n\t21989 - 11905: 0xE0C6,\n\t21990 - 11905: 0xE0C2,\n\t21991 - 11905: 0x86ED,\n\t21992 - 11905: 0xE0CB,\n\t21993 - 11905: 0x86EE,\n\t21994 - 11905: 0xE0BA,\n\t21995 - 11905: 0xE0BF,\n\t21996 - 11905: 0xE0C0,\n\t21997 - 11905: 0x86EF,\n\t21998 - 11905: 0x86F0,\n\t21999 - 11905: 0xE0C5,\n\t22000 - 11905: 0x86F1,\n\t22001 - 11905: 0x86F2,\n\t22002 - 11905: 0xE0C7,\n\t22003 - 11905: 0xE0C8,\n\t22004 - 11905: 0x86F3,\n\t22005 - 11905: 0xE0CC,\n\t22006 - 11905: 0x86F4,\n\t22007 - 11905: 0xE0BB,\n\t22008 - 11905: 0x86F5,\n\t22009 - 11905: 0x86F6,\n\t22010 - 11905: 0x86F7,\n\t22011 - 11905: 0x86F8,\n\t22012 - 11905: 0x86F9,\n\t22013 - 11905: 0xCBD4,\n\t22014 - 11905: 0xE0D5,\n\t22015 - 11905: 0x86FA,\n\t22016 - 11905: 0xE0D6,\n\t22017 - 11905: 0xE0D2,\n\t22018 - 11905: 0x86FB,\n\t22019 - 11905: 0x86FC,\n\t22020 - 11905: 0x86FD,\n\t22021 - 11905: 0x86FE,\n\t22022 - 11905: 0x8740,\n\t22023 - 11905: 0x8741,\n\t22024 - 11905: 0xE0D0,\n\t22025 - 11905: 0xBCCE,\n\t22026 - 11905: 0x8742,\n\t22027 - 11905: 0x8743,\n\t22028 - 11905: 0xE0D1,\n\t22029 - 11905: 0x8744,\n\t22030 - 11905: 0xB8C2,\n\t22031 - 11905: 0xD8C5,\n\t22032 - 11905: 0x8745,\n\t22033 - 11905: 0x8746,\n\t22034 - 11905: 0x8747,\n\t22035 - 11905: 0x8748,\n\t22036 - 11905: 0x8749,\n\t22037 - 11905: 0x874A,\n\t22038 - 11905: 0x874B,\n\t22039 - 11905: 0x874C,\n\t22040 - 11905: 0xD0EA,\n\t22041 - 11905: 0x874D,\n\t22042 - 11905: 0x874E,\n\t22043 - 11905: 0xC2EF,\n\t22044 - 11905: 0x874F,\n\t22045 - 11905: 0x8750,\n\t22046 - 11905: 0xE0CF,\n\t22047 - 11905: 0xE0BD,\n\t22048 - 11905: 0x8751,\n\t22049 - 11905: 0x8752,\n\t22050 - 11905: 0x8753,\n\t22051 - 11905: 0xE0D4,\n\t22052 - 11905: 0xE0D3,\n\t22053 - 11905: 0x8754,\n\t22054 - 11905: 0x8755,\n\t22055 - 11905: 0xE0D7,\n\t22056 - 11905: 0x8756,\n\t22057 - 11905: 0x8757,\n\t22058 - 11905: 0x8758,\n\t22059 - 11905: 0x8759,\n\t22060 - 11905: 0xE0DC,\n\t22061 - 11905: 0xE0D8,\n\t22062 - 11905: 0x875A,\n\t22063 - 11905: 0x875B,\n\t22064 - 11905: 0x875C,\n\t22065 - 11905: 0xD6F6,\n\t22066 - 11905: 0xB3B0,\n\t22067 - 11905: 0x875D,\n\t22068 - 11905: 0xD7EC,\n\t22069 - 11905: 0x875E,\n\t22070 - 11905: 0xCBBB,\n\t22071 - 11905: 0x875F,\n\t22072 - 11905: 0x8760,\n\t22073 - 11905: 0xE0DA,\n\t22074 - 11905: 0x8761,\n\t22075 - 11905: 0xCEFB,\n\t22076 - 11905: 0x8762,\n\t22077 - 11905: 0x8763,\n\t22078 - 11905: 0x8764,\n\t22079 - 11905: 0xBAD9,\n\t22080 - 11905: 0x8765,\n\t22081 - 11905: 0x8766,\n\t22082 - 11905: 0x8767,\n\t22083 - 11905: 0x8768,\n\t22084 - 11905: 0x8769,\n\t22085 - 11905: 0x876A,\n\t22086 - 11905: 0x876B,\n\t22087 - 11905: 0x876C,\n\t22088 - 11905: 0x876D,\n\t22089 - 11905: 0x876E,\n\t22090 - 11905: 0x876F,\n\t22091 - 11905: 0x8770,\n\t22092 - 11905: 0xE0E1,\n\t22093 - 11905: 0xE0DD,\n\t22094 - 11905: 0xD2AD,\n\t22095 - 11905: 0x8771,\n\t22096 - 11905: 0x8772,\n\t22097 - 11905: 0x8773,\n\t22098 - 11905: 0x8774,\n\t22099 - 11905: 0x8775,\n\t22100 - 11905: 0xE0E2,\n\t22101 - 11905: 0x8776,\n\t22102 - 11905: 0x8777,\n\t22103 - 11905: 0xE0DB,\n\t22104 - 11905: 0xE0D9,\n\t22105 - 11905: 0xE0DF,\n\t22106 - 11905: 0x8778,\n\t22107 - 11905: 0x8779,\n\t22108 - 11905: 0xE0E0,\n\t22109 - 11905: 0x877A,\n\t22110 - 11905: 0x877B,\n\t22111 - 11905: 0x877C,\n\t22112 - 11905: 0x877D,\n\t22113 - 11905: 0x877E,\n\t22114 - 11905: 0xE0DE,\n\t22115 - 11905: 0x8780,\n\t22116 - 11905: 0xE0E4,\n\t22117 - 11905: 0x8781,\n\t22118 - 11905: 0x8782,\n\t22119 - 11905: 0x8783,\n\t22120 - 11905: 0xC6F7,\n\t22121 - 11905: 0xD8AC,\n\t22122 - 11905: 0xD4EB,\n\t22123 - 11905: 0xE0E6,\n\t22124 - 11905: 0xCAC9,\n\t22125 - 11905: 0x8784,\n\t22126 - 11905: 0x8785,\n\t22127 - 11905: 0x8786,\n\t22128 - 11905: 0x8787,\n\t22129 - 11905: 0xE0E5,\n\t22130 - 11905: 0x8788,\n\t22131 - 11905: 0x8789,\n\t22132 - 11905: 0x878A,\n\t22133 - 11905: 0x878B,\n\t22134 - 11905: 0xB8C1,\n\t22135 - 11905: 0x878C,\n\t22136 - 11905: 0x878D,\n\t22137 - 11905: 0x878E,\n\t22138 - 11905: 0x878F,\n\t22139 - 11905: 0xE0E7,\n\t22140 - 11905: 0xE0E8,\n\t22141 - 11905: 0x8790,\n\t22142 - 11905: 0x8791,\n\t22143 - 11905: 0x8792,\n\t22144 - 11905: 0x8793,\n\t22145 - 11905: 0x8794,\n\t22146 - 11905: 0x8795,\n\t22147 - 11905: 0x8796,\n\t22148 - 11905: 0x8797,\n\t22149 - 11905: 0xE0E9,\n\t22150 - 11905: 0xE0E3,\n\t22151 - 11905: 0x8798,\n\t22152 - 11905: 0x8799,\n\t22153 - 11905: 0x879A,\n\t22154 - 11905: 0x879B,\n\t22155 - 11905: 0x879C,\n\t22156 - 11905: 0x879D,\n\t22157 - 11905: 0x879E,\n\t22158 - 11905: 0xBABF,\n\t22159 - 11905: 0xCCE7,\n\t22160 - 11905: 0x879F,\n\t22161 - 11905: 0x87A0,\n\t22162 - 11905: 0x87A1,\n\t22163 - 11905: 0xE0EA,\n\t22164 - 11905: 0x87A2,\n\t22165 - 11905: 0x87A3,\n\t22166 - 11905: 0x87A4,\n\t22167 - 11905: 0x87A5,\n\t22168 - 11905: 0x87A6,\n\t22169 - 11905: 0x87A7,\n\t22170 - 11905: 0x87A8,\n\t22171 - 11905: 0x87A9,\n\t22172 - 11905: 0x87AA,\n\t22173 - 11905: 0x87AB,\n\t22174 - 11905: 0x87AC,\n\t22175 - 11905: 0x87AD,\n\t22176 - 11905: 0x87AE,\n\t22177 - 11905: 0x87AF,\n\t22178 - 11905: 0x87B0,\n\t22179 - 11905: 0xCFF9,\n\t22180 - 11905: 0x87B1,\n\t22181 - 11905: 0x87B2,\n\t22182 - 11905: 0x87B3,\n\t22183 - 11905: 0x87B4,\n\t22184 - 11905: 0x87B5,\n\t22185 - 11905: 0x87B6,\n\t22186 - 11905: 0x87B7,\n\t22187 - 11905: 0x87B8,\n\t22188 - 11905: 0x87B9,\n\t22189 - 11905: 0x87BA,\n\t22190 - 11905: 0x87BB,\n\t22191 - 11905: 0xE0EB,\n\t22192 - 11905: 0x87BC,\n\t22193 - 11905: 0x87BD,\n\t22194 - 11905: 0x87BE,\n\t22195 - 11905: 0x87BF,\n\t22196 - 11905: 0x87C0,\n\t22197 - 11905: 0x87C1,\n\t22198 - 11905: 0x87C2,\n\t22199 - 11905: 0xC8C2,\n\t22200 - 11905: 0x87C3,\n\t22201 - 11905: 0x87C4,\n\t22202 - 11905: 0x87C5,\n\t22203 - 11905: 0x87C6,\n\t22204 - 11905: 0xBDC0,\n\t22205 - 11905: 0x87C7,\n\t22206 - 11905: 0x87C8,\n\t22207 - 11905: 0x87C9,\n\t22208 - 11905: 0x87CA,\n\t22209 - 11905: 0x87CB,\n\t22210 - 11905: 0x87CC,\n\t22211 - 11905: 0x87CD,\n\t22212 - 11905: 0x87CE,\n\t22213 - 11905: 0x87CF,\n\t22214 - 11905: 0x87D0,\n\t22215 - 11905: 0x87D1,\n\t22216 - 11905: 0x87D2,\n\t22217 - 11905: 0x87D3,\n\t22218 - 11905: 0xC4D2,\n\t22219 - 11905: 0x87D4,\n\t22220 - 11905: 0x87D5,\n\t22221 - 11905: 0x87D6,\n\t22222 - 11905: 0x87D7,\n\t22223 - 11905: 0x87D8,\n\t22224 - 11905: 0x87D9,\n\t22225 - 11905: 0x87DA,\n\t22226 - 11905: 0x87DB,\n\t22227 - 11905: 0x87DC,\n\t22228 - 11905: 0xE0EC,\n\t22229 - 11905: 0x87DD,\n\t22230 - 11905: 0x87DE,\n\t22231 - 11905: 0xE0ED,\n\t22232 - 11905: 0x87DF,\n\t22233 - 11905: 0x87E0,\n\t22234 - 11905: 0xC7F4,\n\t22235 - 11905: 0xCBC4,\n\t22236 - 11905: 0x87E1,\n\t22237 - 11905: 0xE0EE,\n\t22238 - 11905: 0xBBD8,\n\t22239 - 11905: 0xD8B6,\n\t22240 - 11905: 0xD2F2,\n\t22241 - 11905: 0xE0EF,\n\t22242 - 11905: 0xCDC5,\n\t22243 - 11905: 0x87E2,\n\t22244 - 11905: 0xB6DA,\n\t22245 - 11905: 0x87E3,\n\t22246 - 11905: 0x87E4,\n\t22247 - 11905: 0x87E5,\n\t22248 - 11905: 0x87E6,\n\t22249 - 11905: 0x87E7,\n\t22250 - 11905: 0x87E8,\n\t22251 - 11905: 0xE0F1,\n\t22252 - 11905: 0x87E9,\n\t22253 - 11905: 0xD4B0,\n\t22254 - 11905: 0x87EA,\n\t22255 - 11905: 0x87EB,\n\t22256 - 11905: 0xC0A7,\n\t22257 - 11905: 0xB4D1,\n\t22258 - 11905: 0x87EC,\n\t22259 - 11905: 0x87ED,\n\t22260 - 11905: 0xCEA7,\n\t22261 - 11905: 0xE0F0,\n\t22262 - 11905: 0x87EE,\n\t22263 - 11905: 0x87EF,\n\t22264 - 11905: 0x87F0,\n\t22265 - 11905: 0xE0F2,\n\t22266 - 11905: 0xB9CC,\n\t22267 - 11905: 0x87F1,\n\t22268 - 11905: 0x87F2,\n\t22269 - 11905: 0xB9FA,\n\t22270 - 11905: 0xCDBC,\n\t22271 - 11905: 0xE0F3,\n\t22272 - 11905: 0x87F3,\n\t22273 - 11905: 0x87F4,\n\t22274 - 11905: 0x87F5,\n\t22275 - 11905: 0xC6D4,\n\t22276 - 11905: 0xE0F4,\n\t22277 - 11905: 0x87F6,\n\t22278 - 11905: 0xD4B2,\n\t22279 - 11905: 0x87F7,\n\t22280 - 11905: 0xC8A6,\n\t22281 - 11905: 0xE0F6,\n\t22282 - 11905: 0xE0F5,\n\t22283 - 11905: 0x87F8,\n\t22284 - 11905: 0x87F9,\n\t22285 - 11905: 0x87FA,\n\t22286 - 11905: 0x87FB,\n\t22287 - 11905: 0x87FC,\n\t22288 - 11905: 0x87FD,\n\t22289 - 11905: 0x87FE,\n\t22290 - 11905: 0x8840,\n\t22291 - 11905: 0x8841,\n\t22292 - 11905: 0x8842,\n\t22293 - 11905: 0x8843,\n\t22294 - 11905: 0x8844,\n\t22295 - 11905: 0x8845,\n\t22296 - 11905: 0x8846,\n\t22297 - 11905: 0x8847,\n\t22298 - 11905: 0x8848,\n\t22299 - 11905: 0x8849,\n\t22300 - 11905: 0xE0F7,\n\t22301 - 11905: 0x884A,\n\t22302 - 11905: 0x884B,\n\t22303 - 11905: 0xCDC1,\n\t22304 - 11905: 0x884C,\n\t22305 - 11905: 0x884D,\n\t22306 - 11905: 0x884E,\n\t22307 - 11905: 0xCAA5,\n\t22308 - 11905: 0x884F,\n\t22309 - 11905: 0x8850,\n\t22310 - 11905: 0x8851,\n\t22311 - 11905: 0x8852,\n\t22312 - 11905: 0xD4DA,\n\t22313 - 11905: 0xDBD7,\n\t22314 - 11905: 0xDBD9,\n\t22315 - 11905: 0x8853,\n\t22316 - 11905: 0xDBD8,\n\t22317 - 11905: 0xB9E7,\n\t22318 - 11905: 0xDBDC,\n\t22319 - 11905: 0xDBDD,\n\t22320 - 11905: 0xB5D8,\n\t22321 - 11905: 0x8854,\n\t22322 - 11905: 0x8855,\n\t22323 - 11905: 0xDBDA,\n\t22324 - 11905: 0x8856,\n\t22325 - 11905: 0x8857,\n\t22326 - 11905: 0x8858,\n\t22327 - 11905: 0x8859,\n\t22328 - 11905: 0x885A,\n\t22329 - 11905: 0xDBDB,\n\t22330 - 11905: 0xB3A1,\n\t22331 - 11905: 0xDBDF,\n\t22332 - 11905: 0x885B,\n\t22333 - 11905: 0x885C,\n\t22334 - 11905: 0xBBF8,\n\t22335 - 11905: 0x885D,\n\t22336 - 11905: 0xD6B7,\n\t22337 - 11905: 0x885E,\n\t22338 - 11905: 0xDBE0,\n\t22339 - 11905: 0x885F,\n\t22340 - 11905: 0x8860,\n\t22341 - 11905: 0x8861,\n\t22342 - 11905: 0x8862,\n\t22343 - 11905: 0xBEF9,\n\t22344 - 11905: 0x8863,\n\t22345 - 11905: 0x8864,\n\t22346 - 11905: 0xB7BB,\n\t22347 - 11905: 0x8865,\n\t22348 - 11905: 0xDBD0,\n\t22349 - 11905: 0xCCAE,\n\t22350 - 11905: 0xBFB2,\n\t22351 - 11905: 0xBBB5,\n\t22352 - 11905: 0xD7F8,\n\t22353 - 11905: 0xBFD3,\n\t22354 - 11905: 0x8866,\n\t22355 - 11905: 0x8867,\n\t22356 - 11905: 0x8868,\n\t22357 - 11905: 0x8869,\n\t22358 - 11905: 0x886A,\n\t22359 - 11905: 0xBFE9,\n\t22360 - 11905: 0x886B,\n\t22361 - 11905: 0x886C,\n\t22362 - 11905: 0xBCE1,\n\t22363 - 11905: 0xCCB3,\n\t22364 - 11905: 0xDBDE,\n\t22365 - 11905: 0xB0D3,\n\t22366 - 11905: 0xCEEB,\n\t22367 - 11905: 0xB7D8,\n\t22368 - 11905: 0xD7B9,\n\t22369 - 11905: 0xC6C2,\n\t22370 - 11905: 0x886D,\n\t22371 - 11905: 0x886E,\n\t22372 - 11905: 0xC0A4,\n\t22373 - 11905: 0x886F,\n\t22374 - 11905: 0xCCB9,\n\t22375 - 11905: 0x8870,\n\t22376 - 11905: 0xDBE7,\n\t22377 - 11905: 0xDBE1,\n\t22378 - 11905: 0xC6BA,\n\t22379 - 11905: 0xDBE3,\n\t22380 - 11905: 0x8871,\n\t22381 - 11905: 0xDBE8,\n\t22382 - 11905: 0x8872,\n\t22383 - 11905: 0xC5F7,\n\t22384 - 11905: 0x8873,\n\t22385 - 11905: 0x8874,\n\t22386 - 11905: 0x8875,\n\t22387 - 11905: 0xDBEA,\n\t22388 - 11905: 0x8876,\n\t22389 - 11905: 0x8877,\n\t22390 - 11905: 0xDBE9,\n\t22391 - 11905: 0xBFC0,\n\t22392 - 11905: 0x8878,\n\t22393 - 11905: 0x8879,\n\t22394 - 11905: 0x887A,\n\t22395 - 11905: 0xDBE6,\n\t22396 - 11905: 0xDBE5,\n\t22397 - 11905: 0x887B,\n\t22398 - 11905: 0x887C,\n\t22399 - 11905: 0x887D,\n\t22400 - 11905: 0x887E,\n\t22401 - 11905: 0x8880,\n\t22402 - 11905: 0xB4B9,\n\t22403 - 11905: 0xC0AC,\n\t22404 - 11905: 0xC2A2,\n\t22405 - 11905: 0xDBE2,\n\t22406 - 11905: 0xDBE4,\n\t22407 - 11905: 0x8881,\n\t22408 - 11905: 0x8882,\n\t22409 - 11905: 0x8883,\n\t22410 - 11905: 0x8884,\n\t22411 - 11905: 0xD0CD,\n\t22412 - 11905: 0xDBED,\n\t22413 - 11905: 0x8885,\n\t22414 - 11905: 0x8886,\n\t22415 - 11905: 0x8887,\n\t22416 - 11905: 0x8888,\n\t22417 - 11905: 0x8889,\n\t22418 - 11905: 0xC0DD,\n\t22419 - 11905: 0xDBF2,\n\t22420 - 11905: 0x888A,\n\t22421 - 11905: 0x888B,\n\t22422 - 11905: 0x888C,\n\t22423 - 11905: 0x888D,\n\t22424 - 11905: 0x888E,\n\t22425 - 11905: 0x888F,\n\t22426 - 11905: 0x8890,\n\t22427 - 11905: 0xB6E2,\n\t22428 - 11905: 0x8891,\n\t22429 - 11905: 0x8892,\n\t22430 - 11905: 0x8893,\n\t22431 - 11905: 0x8894,\n\t22432 - 11905: 0xDBF3,\n\t22433 - 11905: 0xDBD2,\n\t22434 - 11905: 0xB9B8,\n\t22435 - 11905: 0xD4AB,\n\t22436 - 11905: 0xDBEC,\n\t22437 - 11905: 0x8895,\n\t22438 - 11905: 0xBFD1,\n\t22439 - 11905: 0xDBF0,\n\t22440 - 11905: 0x8896,\n\t22441 - 11905: 0xDBD1,\n\t22442 - 11905: 0x8897,\n\t22443 - 11905: 0xB5E6,\n\t22444 - 11905: 0x8898,\n\t22445 - 11905: 0xDBEB,\n\t22446 - 11905: 0xBFE5,\n\t22447 - 11905: 0x8899,\n\t22448 - 11905: 0x889A,\n\t22449 - 11905: 0x889B,\n\t22450 - 11905: 0xDBEE,\n\t22451 - 11905: 0x889C,\n\t22452 - 11905: 0xDBF1,\n\t22453 - 11905: 0x889D,\n\t22454 - 11905: 0x889E,\n\t22455 - 11905: 0x889F,\n\t22456 - 11905: 0xDBF9,\n\t22457 - 11905: 0x88A0,\n\t22458 - 11905: 0x88A1,\n\t22459 - 11905: 0x88A2,\n\t22460 - 11905: 0x88A3,\n\t22461 - 11905: 0x88A4,\n\t22462 - 11905: 0x88A5,\n\t22463 - 11905: 0x88A6,\n\t22464 - 11905: 0x88A7,\n\t22465 - 11905: 0x88A8,\n\t22466 - 11905: 0xB9A1,\n\t22467 - 11905: 0xB0A3,\n\t22468 - 11905: 0x88A9,\n\t22469 - 11905: 0x88AA,\n\t22470 - 11905: 0x88AB,\n\t22471 - 11905: 0x88AC,\n\t22472 - 11905: 0x88AD,\n\t22473 - 11905: 0x88AE,\n\t22474 - 11905: 0x88AF,\n\t22475 - 11905: 0xC2F1,\n\t22476 - 11905: 0x88B0,\n\t22477 - 11905: 0x88B1,\n\t22478 - 11905: 0xB3C7,\n\t22479 - 11905: 0xDBEF,\n\t22480 - 11905: 0x88B2,\n\t22481 - 11905: 0x88B3,\n\t22482 - 11905: 0xDBF8,\n\t22483 - 11905: 0x88B4,\n\t22484 - 11905: 0xC6D2,\n\t22485 - 11905: 0xDBF4,\n\t22486 - 11905: 0x88B5,\n\t22487 - 11905: 0x88B6,\n\t22488 - 11905: 0xDBF5,\n\t22489 - 11905: 0xDBF7,\n\t22490 - 11905: 0xDBF6,\n\t22491 - 11905: 0x88B7,\n\t22492 - 11905: 0x88B8,\n\t22493 - 11905: 0xDBFE,\n\t22494 - 11905: 0x88B9,\n\t22495 - 11905: 0xD3F2,\n\t22496 - 11905: 0xB2BA,\n\t22497 - 11905: 0x88BA,\n\t22498 - 11905: 0x88BB,\n\t22499 - 11905: 0x88BC,\n\t22500 - 11905: 0xDBFD,\n\t22501 - 11905: 0x88BD,\n\t22502 - 11905: 0x88BE,\n\t22503 - 11905: 0x88BF,\n\t22504 - 11905: 0x88C0,\n\t22505 - 11905: 0x88C1,\n\t22506 - 11905: 0x88C2,\n\t22507 - 11905: 0x88C3,\n\t22508 - 11905: 0x88C4,\n\t22509 - 11905: 0xDCA4,\n\t22510 - 11905: 0x88C5,\n\t22511 - 11905: 0xDBFB,\n\t22512 - 11905: 0x88C6,\n\t22513 - 11905: 0x88C7,\n\t22514 - 11905: 0x88C8,\n\t22515 - 11905: 0x88C9,\n\t22516 - 11905: 0xDBFA,\n\t22517 - 11905: 0x88CA,\n\t22518 - 11905: 0x88CB,\n\t22519 - 11905: 0x88CC,\n\t22520 - 11905: 0xDBFC,\n\t22521 - 11905: 0xC5E0,\n\t22522 - 11905: 0xBBF9,\n\t22523 - 11905: 0x88CD,\n\t22524 - 11905: 0x88CE,\n\t22525 - 11905: 0xDCA3,\n\t22526 - 11905: 0x88CF,\n\t22527 - 11905: 0x88D0,\n\t22528 - 11905: 0xDCA5,\n\t22529 - 11905: 0x88D1,\n\t22530 - 11905: 0xCCC3,\n\t22531 - 11905: 0x88D2,\n\t22532 - 11905: 0x88D3,\n\t22533 - 11905: 0x88D4,\n\t22534 - 11905: 0xB6D1,\n\t22535 - 11905: 0xDDC0,\n\t22536 - 11905: 0x88D5,\n\t22537 - 11905: 0x88D6,\n\t22538 - 11905: 0x88D7,\n\t22539 - 11905: 0xDCA1,\n\t22540 - 11905: 0x88D8,\n\t22541 - 11905: 0xDCA2,\n\t22542 - 11905: 0x88D9,\n\t22543 - 11905: 0x88DA,\n\t22544 - 11905: 0x88DB,\n\t22545 - 11905: 0xC7B5,\n\t22546 - 11905: 0x88DC,\n\t22547 - 11905: 0x88DD,\n\t22548 - 11905: 0x88DE,\n\t22549 - 11905: 0xB6E9,\n\t22550 - 11905: 0x88DF,\n\t22551 - 11905: 0x88E0,\n\t22552 - 11905: 0x88E1,\n\t22553 - 11905: 0xDCA7,\n\t22554 - 11905: 0x88E2,\n\t22555 - 11905: 0x88E3,\n\t22556 - 11905: 0x88E4,\n\t22557 - 11905: 0x88E5,\n\t22558 - 11905: 0xDCA6,\n\t22559 - 11905: 0x88E6,\n\t22560 - 11905: 0xDCA9,\n\t22561 - 11905: 0xB1A4,\n\t22562 - 11905: 0x88E7,\n\t22563 - 11905: 0x88E8,\n\t22564 - 11905: 0xB5CC,\n\t22565 - 11905: 0x88E9,\n\t22566 - 11905: 0x88EA,\n\t22567 - 11905: 0x88EB,\n\t22568 - 11905: 0x88EC,\n\t22569 - 11905: 0x88ED,\n\t22570 - 11905: 0xBFB0,\n\t22571 - 11905: 0x88EE,\n\t22572 - 11905: 0x88EF,\n\t22573 - 11905: 0x88F0,\n\t22574 - 11905: 0x88F1,\n\t22575 - 11905: 0x88F2,\n\t22576 - 11905: 0xD1DF,\n\t22577 - 11905: 0x88F3,\n\t22578 - 11905: 0x88F4,\n\t22579 - 11905: 0x88F5,\n\t22580 - 11905: 0x88F6,\n\t22581 - 11905: 0xB6C2,\n\t22582 - 11905: 0x88F7,\n\t22583 - 11905: 0x88F8,\n\t22584 - 11905: 0x88F9,\n\t22585 - 11905: 0x88FA,\n\t22586 - 11905: 0x88FB,\n\t22587 - 11905: 0x88FC,\n\t22588 - 11905: 0x88FD,\n\t22589 - 11905: 0x88FE,\n\t22590 - 11905: 0x8940,\n\t22591 - 11905: 0x8941,\n\t22592 - 11905: 0x8942,\n\t22593 - 11905: 0x8943,\n\t22594 - 11905: 0x8944,\n\t22595 - 11905: 0x8945,\n\t22596 - 11905: 0xDCA8,\n\t22597 - 11905: 0x8946,\n\t22598 - 11905: 0x8947,\n\t22599 - 11905: 0x8948,\n\t22600 - 11905: 0x8949,\n\t22601 - 11905: 0x894A,\n\t22602 - 11905: 0x894B,\n\t22603 - 11905: 0x894C,\n\t22604 - 11905: 0xCBFA,\n\t22605 - 11905: 0xEBF3,\n\t22606 - 11905: 0x894D,\n\t22607 - 11905: 0x894E,\n\t22608 - 11905: 0x894F,\n\t22609 - 11905: 0xCBDC,\n\t22610 - 11905: 0x8950,\n\t22611 - 11905: 0x8951,\n\t22612 - 11905: 0xCBFE,\n\t22613 - 11905: 0x8952,\n\t22614 - 11905: 0x8953,\n\t22615 - 11905: 0x8954,\n\t22616 - 11905: 0xCCC1,\n\t22617 - 11905: 0x8955,\n\t22618 - 11905: 0x8956,\n\t22619 - 11905: 0x8957,\n\t22620 - 11905: 0x8958,\n\t22621 - 11905: 0x8959,\n\t22622 - 11905: 0xC8FB,\n\t22623 - 11905: 0x895A,\n\t22624 - 11905: 0x895B,\n\t22625 - 11905: 0x895C,\n\t22626 - 11905: 0x895D,\n\t22627 - 11905: 0x895E,\n\t22628 - 11905: 0x895F,\n\t22629 - 11905: 0xDCAA,\n\t22630 - 11905: 0x8960,\n\t22631 - 11905: 0x8961,\n\t22632 - 11905: 0x8962,\n\t22633 - 11905: 0x8963,\n\t22634 - 11905: 0x8964,\n\t22635 - 11905: 0xCCEE,\n\t22636 - 11905: 0xDCAB,\n\t22637 - 11905: 0x8965,\n\t22638 - 11905: 0x8966,\n\t22639 - 11905: 0x8967,\n\t22640 - 11905: 0x8968,\n\t22641 - 11905: 0x8969,\n\t22642 - 11905: 0x896A,\n\t22643 - 11905: 0x896B,\n\t22644 - 11905: 0x896C,\n\t22645 - 11905: 0x896D,\n\t22646 - 11905: 0x896E,\n\t22647 - 11905: 0x896F,\n\t22648 - 11905: 0x8970,\n\t22649 - 11905: 0x8971,\n\t22650 - 11905: 0x8972,\n\t22651 - 11905: 0x8973,\n\t22652 - 11905: 0x8974,\n\t22653 - 11905: 0x8975,\n\t22654 - 11905: 0xDBD3,\n\t22655 - 11905: 0x8976,\n\t22656 - 11905: 0xDCAF,\n\t22657 - 11905: 0xDCAC,\n\t22658 - 11905: 0x8977,\n\t22659 - 11905: 0xBEB3,\n\t22660 - 11905: 0x8978,\n\t22661 - 11905: 0xCAFB,\n\t22662 - 11905: 0x8979,\n\t22663 - 11905: 0x897A,\n\t22664 - 11905: 0x897B,\n\t22665 - 11905: 0xDCAD,\n\t22666 - 11905: 0x897C,\n\t22667 - 11905: 0x897D,\n\t22668 - 11905: 0x897E,\n\t22669 - 11905: 0x8980,\n\t22670 - 11905: 0x8981,\n\t22671 - 11905: 0x8982,\n\t22672 - 11905: 0x8983,\n\t22673 - 11905: 0x8984,\n\t22674 - 11905: 0xC9CA,\n\t22675 - 11905: 0xC4B9,\n\t22676 - 11905: 0x8985,\n\t22677 - 11905: 0x8986,\n\t22678 - 11905: 0x8987,\n\t22679 - 11905: 0x8988,\n\t22680 - 11905: 0x8989,\n\t22681 - 11905: 0xC7BD,\n\t22682 - 11905: 0xDCAE,\n\t22683 - 11905: 0x898A,\n\t22684 - 11905: 0x898B,\n\t22685 - 11905: 0x898C,\n\t22686 - 11905: 0xD4F6,\n\t22687 - 11905: 0xD0E6,\n\t22688 - 11905: 0x898D,\n\t22689 - 11905: 0x898E,\n\t22690 - 11905: 0x898F,\n\t22691 - 11905: 0x8990,\n\t22692 - 11905: 0x8991,\n\t22693 - 11905: 0x8992,\n\t22694 - 11905: 0x8993,\n\t22695 - 11905: 0x8994,\n\t22696 - 11905: 0xC4AB,\n\t22697 - 11905: 0xB6D5,\n\t22698 - 11905: 0x8995,\n\t22699 - 11905: 0x8996,\n\t22700 - 11905: 0x8997,\n\t22701 - 11905: 0x8998,\n\t22702 - 11905: 0x8999,\n\t22703 - 11905: 0x899A,\n\t22704 - 11905: 0x899B,\n\t22705 - 11905: 0x899C,\n\t22706 - 11905: 0x899D,\n\t22707 - 11905: 0x899E,\n\t22708 - 11905: 0x899F,\n\t22709 - 11905: 0x89A0,\n\t22710 - 11905: 0x89A1,\n\t22711 - 11905: 0x89A2,\n\t22712 - 11905: 0x89A3,\n\t22713 - 11905: 0x89A4,\n\t22714 - 11905: 0x89A5,\n\t22715 - 11905: 0x89A6,\n\t22716 - 11905: 0xDBD4,\n\t22717 - 11905: 0x89A7,\n\t22718 - 11905: 0x89A8,\n\t22719 - 11905: 0x89A9,\n\t22720 - 11905: 0x89AA,\n\t22721 - 11905: 0xB1DA,\n\t22722 - 11905: 0x89AB,\n\t22723 - 11905: 0x89AC,\n\t22724 - 11905: 0x89AD,\n\t22725 - 11905: 0xDBD5,\n\t22726 - 11905: 0x89AE,\n\t22727 - 11905: 0x89AF,\n\t22728 - 11905: 0x89B0,\n\t22729 - 11905: 0x89B1,\n\t22730 - 11905: 0x89B2,\n\t22731 - 11905: 0x89B3,\n\t22732 - 11905: 0x89B4,\n\t22733 - 11905: 0x89B5,\n\t22734 - 11905: 0x89B6,\n\t22735 - 11905: 0x89B7,\n\t22736 - 11905: 0x89B8,\n\t22737 - 11905: 0xDBD6,\n\t22738 - 11905: 0x89B9,\n\t22739 - 11905: 0x89BA,\n\t22740 - 11905: 0x89BB,\n\t22741 - 11905: 0xBABE,\n\t22742 - 11905: 0x89BC,\n\t22743 - 11905: 0x89BD,\n\t22744 - 11905: 0x89BE,\n\t22745 - 11905: 0x89BF,\n\t22746 - 11905: 0x89C0,\n\t22747 - 11905: 0x89C1,\n\t22748 - 11905: 0x89C2,\n\t22749 - 11905: 0x89C3,\n\t22750 - 11905: 0x89C4,\n\t22751 - 11905: 0x89C5,\n\t22752 - 11905: 0x89C6,\n\t22753 - 11905: 0x89C7,\n\t22754 - 11905: 0x89C8,\n\t22755 - 11905: 0x89C9,\n\t22756 - 11905: 0xC8C0,\n\t22757 - 11905: 0x89CA,\n\t22758 - 11905: 0x89CB,\n\t22759 - 11905: 0x89CC,\n\t22760 - 11905: 0x89CD,\n\t22761 - 11905: 0x89CE,\n\t22762 - 11905: 0x89CF,\n\t22763 - 11905: 0xCABF,\n\t22764 - 11905: 0xC8C9,\n\t22765 - 11905: 0x89D0,\n\t22766 - 11905: 0xD7B3,\n\t22767 - 11905: 0x89D1,\n\t22768 - 11905: 0xC9F9,\n\t22769 - 11905: 0x89D2,\n\t22770 - 11905: 0x89D3,\n\t22771 - 11905: 0xBFC7,\n\t22772 - 11905: 0x89D4,\n\t22773 - 11905: 0x89D5,\n\t22774 - 11905: 0xBAF8,\n\t22775 - 11905: 0x89D6,\n\t22776 - 11905: 0x89D7,\n\t22777 - 11905: 0xD2BC,\n\t22778 - 11905: 0x89D8,\n\t22779 - 11905: 0x89D9,\n\t22780 - 11905: 0x89DA,\n\t22781 - 11905: 0x89DB,\n\t22782 - 11905: 0x89DC,\n\t22783 - 11905: 0x89DD,\n\t22784 - 11905: 0x89DE,\n\t22785 - 11905: 0x89DF,\n\t22786 - 11905: 0xE2BA,\n\t22787 - 11905: 0x89E0,\n\t22788 - 11905: 0xB4A6,\n\t22789 - 11905: 0x89E1,\n\t22790 - 11905: 0x89E2,\n\t22791 - 11905: 0xB1B8,\n\t22792 - 11905: 0x89E3,\n\t22793 - 11905: 0x89E4,\n\t22794 - 11905: 0x89E5,\n\t22795 - 11905: 0x89E6,\n\t22796 - 11905: 0x89E7,\n\t22797 - 11905: 0xB8B4,\n\t22798 - 11905: 0x89E8,\n\t22799 - 11905: 0xCFC4,\n\t22800 - 11905: 0x89E9,\n\t22801 - 11905: 0x89EA,\n\t22802 - 11905: 0x89EB,\n\t22803 - 11905: 0x89EC,\n\t22804 - 11905: 0xD9E7,\n\t22805 - 11905: 0xCFA6,\n\t22806 - 11905: 0xCDE2,\n\t22807 - 11905: 0x89ED,\n\t22808 - 11905: 0x89EE,\n\t22809 - 11905: 0xD9ED,\n\t22810 - 11905: 0xB6E0,\n\t22811 - 11905: 0x89EF,\n\t22812 - 11905: 0xD2B9,\n\t22813 - 11905: 0x89F0,\n\t22814 - 11905: 0x89F1,\n\t22815 - 11905: 0xB9BB,\n\t22816 - 11905: 0x89F2,\n\t22817 - 11905: 0x89F3,\n\t22818 - 11905: 0x89F4,\n\t22819 - 11905: 0x89F5,\n\t22820 - 11905: 0xE2B9,\n\t22821 - 11905: 0xE2B7,\n\t22822 - 11905: 0x89F6,\n\t22823 - 11905: 0xB4F3,\n\t22824 - 11905: 0x89F7,\n\t22825 - 11905: 0xCCEC,\n\t22826 - 11905: 0xCCAB,\n\t22827 - 11905: 0xB7F2,\n\t22828 - 11905: 0x89F8,\n\t22829 - 11905: 0xD8B2,\n\t22830 - 11905: 0xD1EB,\n\t22831 - 11905: 0xBABB,\n\t22832 - 11905: 0x89F9,\n\t22833 - 11905: 0xCAA7,\n\t22834 - 11905: 0x89FA,\n\t22835 - 11905: 0x89FB,\n\t22836 - 11905: 0xCDB7,\n\t22837 - 11905: 0x89FC,\n\t22838 - 11905: 0x89FD,\n\t22839 - 11905: 0xD2C4,\n\t22840 - 11905: 0xBFE4,\n\t22841 - 11905: 0xBCD0,\n\t22842 - 11905: 0xB6E1,\n\t22843 - 11905: 0x89FE,\n\t22844 - 11905: 0xDEC5,\n\t22845 - 11905: 0x8A40,\n\t22846 - 11905: 0x8A41,\n\t22847 - 11905: 0x8A42,\n\t22848 - 11905: 0x8A43,\n\t22849 - 11905: 0xDEC6,\n\t22850 - 11905: 0xDBBC,\n\t22851 - 11905: 0x8A44,\n\t22852 - 11905: 0xD1D9,\n\t22853 - 11905: 0x8A45,\n\t22854 - 11905: 0x8A46,\n\t22855 - 11905: 0xC6E6,\n\t22856 - 11905: 0xC4CE,\n\t22857 - 11905: 0xB7EE,\n\t22858 - 11905: 0x8A47,\n\t22859 - 11905: 0xB7DC,\n\t22860 - 11905: 0x8A48,\n\t22861 - 11905: 0x8A49,\n\t22862 - 11905: 0xBFFC,\n\t22863 - 11905: 0xD7E0,\n\t22864 - 11905: 0x8A4A,\n\t22865 - 11905: 0xC6F5,\n\t22866 - 11905: 0x8A4B,\n\t22867 - 11905: 0x8A4C,\n\t22868 - 11905: 0xB1BC,\n\t22869 - 11905: 0xDEC8,\n\t22870 - 11905: 0xBDB1,\n\t22871 - 11905: 0xCCD7,\n\t22872 - 11905: 0xDECA,\n\t22873 - 11905: 0x8A4D,\n\t22874 - 11905: 0xDEC9,\n\t22875 - 11905: 0x8A4E,\n\t22876 - 11905: 0x8A4F,\n\t22877 - 11905: 0x8A50,\n\t22878 - 11905: 0x8A51,\n\t22879 - 11905: 0x8A52,\n\t22880 - 11905: 0xB5EC,\n\t22881 - 11905: 0x8A53,\n\t22882 - 11905: 0xC9DD,\n\t22883 - 11905: 0x8A54,\n\t22884 - 11905: 0x8A55,\n\t22885 - 11905: 0xB0C2,\n\t22886 - 11905: 0x8A56,\n\t22887 - 11905: 0x8A57,\n\t22888 - 11905: 0x8A58,\n\t22889 - 11905: 0x8A59,\n\t22890 - 11905: 0x8A5A,\n\t22891 - 11905: 0x8A5B,\n\t22892 - 11905: 0x8A5C,\n\t22893 - 11905: 0x8A5D,\n\t22894 - 11905: 0x8A5E,\n\t22895 - 11905: 0x8A5F,\n\t22896 - 11905: 0x8A60,\n\t22897 - 11905: 0x8A61,\n\t22898 - 11905: 0x8A62,\n\t22899 - 11905: 0xC5AE,\n\t22900 - 11905: 0xC5AB,\n\t22901 - 11905: 0x8A63,\n\t22902 - 11905: 0xC4CC,\n\t22903 - 11905: 0x8A64,\n\t22904 - 11905: 0xBCE9,\n\t22905 - 11905: 0xCBFD,\n\t22906 - 11905: 0x8A65,\n\t22907 - 11905: 0x8A66,\n\t22908 - 11905: 0x8A67,\n\t22909 - 11905: 0xBAC3,\n\t22910 - 11905: 0x8A68,\n\t22911 - 11905: 0x8A69,\n\t22912 - 11905: 0x8A6A,\n\t22913 - 11905: 0xE5F9,\n\t22914 - 11905: 0xC8E7,\n\t22915 - 11905: 0xE5FA,\n\t22916 - 11905: 0xCDFD,\n\t22917 - 11905: 0x8A6B,\n\t22918 - 11905: 0xD7B1,\n\t22919 - 11905: 0xB8BE,\n\t22920 - 11905: 0xC2E8,\n\t22921 - 11905: 0x8A6C,\n\t22922 - 11905: 0xC8D1,\n\t22923 - 11905: 0x8A6D,\n\t22924 - 11905: 0x8A6E,\n\t22925 - 11905: 0xE5FB,\n\t22926 - 11905: 0x8A6F,\n\t22927 - 11905: 0x8A70,\n\t22928 - 11905: 0x8A71,\n\t22929 - 11905: 0x8A72,\n\t22930 - 11905: 0xB6CA,\n\t22931 - 11905: 0xBCCB,\n\t22932 - 11905: 0x8A73,\n\t22933 - 11905: 0x8A74,\n\t22934 - 11905: 0xD1FD,\n\t22935 - 11905: 0xE6A1,\n\t22936 - 11905: 0x8A75,\n\t22937 - 11905: 0xC3EE,\n\t22938 - 11905: 0x8A76,\n\t22939 - 11905: 0x8A77,\n\t22940 - 11905: 0x8A78,\n\t22941 - 11905: 0x8A79,\n\t22942 - 11905: 0xE6A4,\n\t22943 - 11905: 0x8A7A,\n\t22944 - 11905: 0x8A7B,\n\t22945 - 11905: 0x8A7C,\n\t22946 - 11905: 0x8A7D,\n\t22947 - 11905: 0xE5FE,\n\t22948 - 11905: 0xE6A5,\n\t22949 - 11905: 0xCDD7,\n\t22950 - 11905: 0x8A7E,\n\t22951 - 11905: 0x8A80,\n\t22952 - 11905: 0xB7C1,\n\t22953 - 11905: 0xE5FC,\n\t22954 - 11905: 0xE5FD,\n\t22955 - 11905: 0xE6A3,\n\t22956 - 11905: 0x8A81,\n\t22957 - 11905: 0x8A82,\n\t22958 - 11905: 0xC4DD,\n\t22959 - 11905: 0xE6A8,\n\t22960 - 11905: 0x8A83,\n\t22961 - 11905: 0x8A84,\n\t22962 - 11905: 0xE6A7,\n\t22963 - 11905: 0x8A85,\n\t22964 - 11905: 0x8A86,\n\t22965 - 11905: 0x8A87,\n\t22966 - 11905: 0x8A88,\n\t22967 - 11905: 0x8A89,\n\t22968 - 11905: 0x8A8A,\n\t22969 - 11905: 0xC3C3,\n\t22970 - 11905: 0x8A8B,\n\t22971 - 11905: 0xC6DE,\n\t22972 - 11905: 0x8A8C,\n\t22973 - 11905: 0x8A8D,\n\t22974 - 11905: 0xE6AA,\n\t22975 - 11905: 0x8A8E,\n\t22976 - 11905: 0x8A8F,\n\t22977 - 11905: 0x8A90,\n\t22978 - 11905: 0x8A91,\n\t22979 - 11905: 0x8A92,\n\t22980 - 11905: 0x8A93,\n\t22981 - 11905: 0x8A94,\n\t22982 - 11905: 0xC4B7,\n\t22983 - 11905: 0x8A95,\n\t22984 - 11905: 0x8A96,\n\t22985 - 11905: 0x8A97,\n\t22986 - 11905: 0xE6A2,\n\t22987 - 11905: 0xCABC,\n\t22988 - 11905: 0x8A98,\n\t22989 - 11905: 0x8A99,\n\t22990 - 11905: 0x8A9A,\n\t22991 - 11905: 0x8A9B,\n\t22992 - 11905: 0xBDE3,\n\t22993 - 11905: 0xB9C3,\n\t22994 - 11905: 0xE6A6,\n\t22995 - 11905: 0xD0D5,\n\t22996 - 11905: 0xCEAF,\n\t22997 - 11905: 0x8A9C,\n\t22998 - 11905: 0x8A9D,\n\t22999 - 11905: 0xE6A9,\n\t23000 - 11905: 0xE6B0,\n\t23001 - 11905: 0x8A9E,\n\t23002 - 11905: 0xD2A6,\n\t23003 - 11905: 0x8A9F,\n\t23004 - 11905: 0xBDAA,\n\t23005 - 11905: 0xE6AD,\n\t23006 - 11905: 0x8AA0,\n\t23007 - 11905: 0x8AA1,\n\t23008 - 11905: 0x8AA2,\n\t23009 - 11905: 0x8AA3,\n\t23010 - 11905: 0x8AA4,\n\t23011 - 11905: 0xE6AF,\n\t23012 - 11905: 0x8AA5,\n\t23013 - 11905: 0xC0D1,\n\t23014 - 11905: 0x8AA6,\n\t23015 - 11905: 0x8AA7,\n\t23016 - 11905: 0xD2CC,\n\t23017 - 11905: 0x8AA8,\n\t23018 - 11905: 0x8AA9,\n\t23019 - 11905: 0x8AAA,\n\t23020 - 11905: 0xBCA7,\n\t23021 - 11905: 0x8AAB,\n\t23022 - 11905: 0x8AAC,\n\t23023 - 11905: 0x8AAD,\n\t23024 - 11905: 0x8AAE,\n\t23025 - 11905: 0x8AAF,\n\t23026 - 11905: 0x8AB0,\n\t23027 - 11905: 0x8AB1,\n\t23028 - 11905: 0x8AB2,\n\t23029 - 11905: 0x8AB3,\n\t23030 - 11905: 0x8AB4,\n\t23031 - 11905: 0x8AB5,\n\t23032 - 11905: 0x8AB6,\n\t23033 - 11905: 0xE6B1,\n\t23034 - 11905: 0x8AB7,\n\t23035 - 11905: 0xD2F6,\n\t23036 - 11905: 0x8AB8,\n\t23037 - 11905: 0x8AB9,\n\t23038 - 11905: 0x8ABA,\n\t23039 - 11905: 0xD7CB,\n\t23040 - 11905: 0x8ABB,\n\t23041 - 11905: 0xCDFE,\n\t23042 - 11905: 0x8ABC,\n\t23043 - 11905: 0xCDDE,\n\t23044 - 11905: 0xC2A6,\n\t23045 - 11905: 0xE6AB,\n\t23046 - 11905: 0xE6AC,\n\t23047 - 11905: 0xBDBF,\n\t23048 - 11905: 0xE6AE,\n\t23049 - 11905: 0xE6B3,\n\t23050 - 11905: 0x8ABD,\n\t23051 - 11905: 0x8ABE,\n\t23052 - 11905: 0xE6B2,\n\t23053 - 11905: 0x8ABF,\n\t23054 - 11905: 0x8AC0,\n\t23055 - 11905: 0x8AC1,\n\t23056 - 11905: 0x8AC2,\n\t23057 - 11905: 0xE6B6,\n\t23058 - 11905: 0x8AC3,\n\t23059 - 11905: 0xE6B8,\n\t23060 - 11905: 0x8AC4,\n\t23061 - 11905: 0x8AC5,\n\t23062 - 11905: 0x8AC6,\n\t23063 - 11905: 0x8AC7,\n\t23064 - 11905: 0xC4EF,\n\t23065 - 11905: 0x8AC8,\n\t23066 - 11905: 0x8AC9,\n\t23067 - 11905: 0x8ACA,\n\t23068 - 11905: 0xC4C8,\n\t23069 - 11905: 0x8ACB,\n\t23070 - 11905: 0x8ACC,\n\t23071 - 11905: 0xBEEA,\n\t23072 - 11905: 0xC9EF,\n\t23073 - 11905: 0x8ACD,\n\t23074 - 11905: 0x8ACE,\n\t23075 - 11905: 0xE6B7,\n\t23076 - 11905: 0x8ACF,\n\t23077 - 11905: 0xB6F0,\n\t23078 - 11905: 0x8AD0,\n\t23079 - 11905: 0x8AD1,\n\t23080 - 11905: 0x8AD2,\n\t23081 - 11905: 0xC3E4,\n\t23082 - 11905: 0x8AD3,\n\t23083 - 11905: 0x8AD4,\n\t23084 - 11905: 0x8AD5,\n\t23085 - 11905: 0x8AD6,\n\t23086 - 11905: 0x8AD7,\n\t23087 - 11905: 0x8AD8,\n\t23088 - 11905: 0x8AD9,\n\t23089 - 11905: 0xD3E9,\n\t23090 - 11905: 0xE6B4,\n\t23091 - 11905: 0x8ADA,\n\t23092 - 11905: 0xE6B5,\n\t23093 - 11905: 0x8ADB,\n\t23094 - 11905: 0xC8A2,\n\t23095 - 11905: 0x8ADC,\n\t23096 - 11905: 0x8ADD,\n\t23097 - 11905: 0x8ADE,\n\t23098 - 11905: 0x8ADF,\n\t23099 - 11905: 0x8AE0,\n\t23100 - 11905: 0xE6BD,\n\t23101 - 11905: 0x8AE1,\n\t23102 - 11905: 0x8AE2,\n\t23103 - 11905: 0x8AE3,\n\t23104 - 11905: 0xE6B9,\n\t23105 - 11905: 0x8AE4,\n\t23106 - 11905: 0x8AE5,\n\t23107 - 11905: 0x8AE6,\n\t23108 - 11905: 0x8AE7,\n\t23109 - 11905: 0x8AE8,\n\t23110 - 11905: 0xC6C5,\n\t23111 - 11905: 0x8AE9,\n\t23112 - 11905: 0x8AEA,\n\t23113 - 11905: 0xCDF1,\n\t23114 - 11905: 0xE6BB,\n\t23115 - 11905: 0x8AEB,\n\t23116 - 11905: 0x8AEC,\n\t23117 - 11905: 0x8AED,\n\t23118 - 11905: 0x8AEE,\n\t23119 - 11905: 0x8AEF,\n\t23120 - 11905: 0x8AF0,\n\t23121 - 11905: 0x8AF1,\n\t23122 - 11905: 0x8AF2,\n\t23123 - 11905: 0x8AF3,\n\t23124 - 11905: 0x8AF4,\n\t23125 - 11905: 0xE6BC,\n\t23126 - 11905: 0x8AF5,\n\t23127 - 11905: 0x8AF6,\n\t23128 - 11905: 0x8AF7,\n\t23129 - 11905: 0x8AF8,\n\t23130 - 11905: 0xBBE9,\n\t23131 - 11905: 0x8AF9,\n\t23132 - 11905: 0x8AFA,\n\t23133 - 11905: 0x8AFB,\n\t23134 - 11905: 0x8AFC,\n\t23135 - 11905: 0x8AFD,\n\t23136 - 11905: 0x8AFE,\n\t23137 - 11905: 0x8B40,\n\t23138 - 11905: 0xE6BE,\n\t23139 - 11905: 0x8B41,\n\t23140 - 11905: 0x8B42,\n\t23141 - 11905: 0x8B43,\n\t23142 - 11905: 0x8B44,\n\t23143 - 11905: 0xE6BA,\n\t23144 - 11905: 0x8B45,\n\t23145 - 11905: 0x8B46,\n\t23146 - 11905: 0xC0B7,\n\t23147 - 11905: 0x8B47,\n\t23148 - 11905: 0x8B48,\n\t23149 - 11905: 0x8B49,\n\t23150 - 11905: 0x8B4A,\n\t23151 - 11905: 0x8B4B,\n\t23152 - 11905: 0x8B4C,\n\t23153 - 11905: 0x8B4D,\n\t23154 - 11905: 0x8B4E,\n\t23155 - 11905: 0x8B4F,\n\t23156 - 11905: 0xD3A4,\n\t23157 - 11905: 0xE6BF,\n\t23158 - 11905: 0xC9F4,\n\t23159 - 11905: 0xE6C3,\n\t23160 - 11905: 0x8B50,\n\t23161 - 11905: 0x8B51,\n\t23162 - 11905: 0xE6C4,\n\t23163 - 11905: 0x8B52,\n\t23164 - 11905: 0x8B53,\n\t23165 - 11905: 0x8B54,\n\t23166 - 11905: 0x8B55,\n\t23167 - 11905: 0xD0F6,\n\t23168 - 11905: 0x8B56,\n\t23169 - 11905: 0x8B57,\n\t23170 - 11905: 0x8B58,\n\t23171 - 11905: 0x8B59,\n\t23172 - 11905: 0x8B5A,\n\t23173 - 11905: 0x8B5B,\n\t23174 - 11905: 0x8B5C,\n\t23175 - 11905: 0x8B5D,\n\t23176 - 11905: 0x8B5E,\n\t23177 - 11905: 0x8B5F,\n\t23178 - 11905: 0x8B60,\n\t23179 - 11905: 0x8B61,\n\t23180 - 11905: 0x8B62,\n\t23181 - 11905: 0x8B63,\n\t23182 - 11905: 0x8B64,\n\t23183 - 11905: 0x8B65,\n\t23184 - 11905: 0x8B66,\n\t23185 - 11905: 0x8B67,\n\t23186 - 11905: 0xC3BD,\n\t23187 - 11905: 0x8B68,\n\t23188 - 11905: 0x8B69,\n\t23189 - 11905: 0x8B6A,\n\t23190 - 11905: 0x8B6B,\n\t23191 - 11905: 0x8B6C,\n\t23192 - 11905: 0x8B6D,\n\t23193 - 11905: 0x8B6E,\n\t23194 - 11905: 0xC3C4,\n\t23195 - 11905: 0xE6C2,\n\t23196 - 11905: 0x8B6F,\n\t23197 - 11905: 0x8B70,\n\t23198 - 11905: 0x8B71,\n\t23199 - 11905: 0x8B72,\n\t23200 - 11905: 0x8B73,\n\t23201 - 11905: 0x8B74,\n\t23202 - 11905: 0x8B75,\n\t23203 - 11905: 0x8B76,\n\t23204 - 11905: 0x8B77,\n\t23205 - 11905: 0x8B78,\n\t23206 - 11905: 0x8B79,\n\t23207 - 11905: 0x8B7A,\n\t23208 - 11905: 0x8B7B,\n\t23209 - 11905: 0x8B7C,\n\t23210 - 11905: 0xE6C1,\n\t23211 - 11905: 0x8B7D,\n\t23212 - 11905: 0x8B7E,\n\t23213 - 11905: 0x8B80,\n\t23214 - 11905: 0x8B81,\n\t23215 - 11905: 0x8B82,\n\t23216 - 11905: 0x8B83,\n\t23217 - 11905: 0x8B84,\n\t23218 - 11905: 0xE6C7,\n\t23219 - 11905: 0xCFB1,\n\t23220 - 11905: 0x8B85,\n\t23221 - 11905: 0xEBF4,\n\t23222 - 11905: 0x8B86,\n\t23223 - 11905: 0x8B87,\n\t23224 - 11905: 0xE6CA,\n\t23225 - 11905: 0x8B88,\n\t23226 - 11905: 0x8B89,\n\t23227 - 11905: 0x8B8A,\n\t23228 - 11905: 0x8B8B,\n\t23229 - 11905: 0x8B8C,\n\t23230 - 11905: 0xE6C5,\n\t23231 - 11905: 0x8B8D,\n\t23232 - 11905: 0x8B8E,\n\t23233 - 11905: 0xBCDE,\n\t23234 - 11905: 0xC9A9,\n\t23235 - 11905: 0x8B8F,\n\t23236 - 11905: 0x8B90,\n\t23237 - 11905: 0x8B91,\n\t23238 - 11905: 0x8B92,\n\t23239 - 11905: 0x8B93,\n\t23240 - 11905: 0x8B94,\n\t23241 - 11905: 0xBCB5,\n\t23242 - 11905: 0x8B95,\n\t23243 - 11905: 0x8B96,\n\t23244 - 11905: 0xCFD3,\n\t23245 - 11905: 0x8B97,\n\t23246 - 11905: 0x8B98,\n\t23247 - 11905: 0x8B99,\n\t23248 - 11905: 0x8B9A,\n\t23249 - 11905: 0x8B9B,\n\t23250 - 11905: 0xE6C8,\n\t23251 - 11905: 0x8B9C,\n\t23252 - 11905: 0xE6C9,\n\t23253 - 11905: 0x8B9D,\n\t23254 - 11905: 0xE6CE,\n\t23255 - 11905: 0x8B9E,\n\t23256 - 11905: 0xE6D0,\n\t23257 - 11905: 0x8B9F,\n\t23258 - 11905: 0x8BA0,\n\t23259 - 11905: 0x8BA1,\n\t23260 - 11905: 0xE6D1,\n\t23261 - 11905: 0x8BA2,\n\t23262 - 11905: 0x8BA3,\n\t23263 - 11905: 0x8BA4,\n\t23264 - 11905: 0xE6CB,\n\t23265 - 11905: 0xB5D5,\n\t23266 - 11905: 0x8BA5,\n\t23267 - 11905: 0xE6CC,\n\t23268 - 11905: 0x8BA6,\n\t23269 - 11905: 0x8BA7,\n\t23270 - 11905: 0xE6CF,\n\t23271 - 11905: 0x8BA8,\n\t23272 - 11905: 0x8BA9,\n\t23273 - 11905: 0xC4DB,\n\t23274 - 11905: 0x8BAA,\n\t23275 - 11905: 0xE6C6,\n\t23276 - 11905: 0x8BAB,\n\t23277 - 11905: 0x8BAC,\n\t23278 - 11905: 0x8BAD,\n\t23279 - 11905: 0x8BAE,\n\t23280 - 11905: 0x8BAF,\n\t23281 - 11905: 0xE6CD,\n\t23282 - 11905: 0x8BB0,\n\t23283 - 11905: 0x8BB1,\n\t23284 - 11905: 0x8BB2,\n\t23285 - 11905: 0x8BB3,\n\t23286 - 11905: 0x8BB4,\n\t23287 - 11905: 0x8BB5,\n\t23288 - 11905: 0x8BB6,\n\t23289 - 11905: 0x8BB7,\n\t23290 - 11905: 0x8BB8,\n\t23291 - 11905: 0x8BB9,\n\t23292 - 11905: 0x8BBA,\n\t23293 - 11905: 0x8BBB,\n\t23294 - 11905: 0x8BBC,\n\t23295 - 11905: 0x8BBD,\n\t23296 - 11905: 0x8BBE,\n\t23297 - 11905: 0x8BBF,\n\t23298 - 11905: 0x8BC0,\n\t23299 - 11905: 0x8BC1,\n\t23300 - 11905: 0x8BC2,\n\t23301 - 11905: 0x8BC3,\n\t23302 - 11905: 0x8BC4,\n\t23303 - 11905: 0x8BC5,\n\t23304 - 11905: 0x8BC6,\n\t23305 - 11905: 0xE6D2,\n\t23306 - 11905: 0x8BC7,\n\t23307 - 11905: 0x8BC8,\n\t23308 - 11905: 0x8BC9,\n\t23309 - 11905: 0x8BCA,\n\t23310 - 11905: 0x8BCB,\n\t23311 - 11905: 0x8BCC,\n\t23312 - 11905: 0x8BCD,\n\t23313 - 11905: 0x8BCE,\n\t23314 - 11905: 0x8BCF,\n\t23315 - 11905: 0x8BD0,\n\t23316 - 11905: 0x8BD1,\n\t23317 - 11905: 0x8BD2,\n\t23318 - 11905: 0xE6D4,\n\t23319 - 11905: 0xE6D3,\n\t23320 - 11905: 0x8BD3,\n\t23321 - 11905: 0x8BD4,\n\t23322 - 11905: 0x8BD5,\n\t23323 - 11905: 0x8BD6,\n\t23324 - 11905: 0x8BD7,\n\t23325 - 11905: 0x8BD8,\n\t23326 - 11905: 0x8BD9,\n\t23327 - 11905: 0x8BDA,\n\t23328 - 11905: 0x8BDB,\n\t23329 - 11905: 0x8BDC,\n\t23330 - 11905: 0x8BDD,\n\t23331 - 11905: 0x8BDE,\n\t23332 - 11905: 0x8BDF,\n\t23333 - 11905: 0x8BE0,\n\t23334 - 11905: 0x8BE1,\n\t23335 - 11905: 0x8BE2,\n\t23336 - 11905: 0x8BE3,\n\t23337 - 11905: 0x8BE4,\n\t23338 - 11905: 0x8BE5,\n\t23339 - 11905: 0x8BE6,\n\t23340 - 11905: 0x8BE7,\n\t23341 - 11905: 0x8BE8,\n\t23342 - 11905: 0x8BE9,\n\t23343 - 11905: 0x8BEA,\n\t23344 - 11905: 0x8BEB,\n\t23345 - 11905: 0x8BEC,\n\t23346 - 11905: 0xE6D5,\n\t23347 - 11905: 0x8BED,\n\t23348 - 11905: 0xD9F8,\n\t23349 - 11905: 0x8BEE,\n\t23350 - 11905: 0x8BEF,\n\t23351 - 11905: 0xE6D6,\n\t23352 - 11905: 0x8BF0,\n\t23353 - 11905: 0x8BF1,\n\t23354 - 11905: 0x8BF2,\n\t23355 - 11905: 0x8BF3,\n\t23356 - 11905: 0x8BF4,\n\t23357 - 11905: 0x8BF5,\n\t23358 - 11905: 0x8BF6,\n\t23359 - 11905: 0x8BF7,\n\t23360 - 11905: 0xE6D7,\n\t23361 - 11905: 0x8BF8,\n\t23362 - 11905: 0x8BF9,\n\t23363 - 11905: 0x8BFA,\n\t23364 - 11905: 0x8BFB,\n\t23365 - 11905: 0x8BFC,\n\t23366 - 11905: 0x8BFD,\n\t23367 - 11905: 0x8BFE,\n\t23368 - 11905: 0x8C40,\n\t23369 - 11905: 0x8C41,\n\t23370 - 11905: 0x8C42,\n\t23371 - 11905: 0x8C43,\n\t23372 - 11905: 0x8C44,\n\t23373 - 11905: 0x8C45,\n\t23374 - 11905: 0x8C46,\n\t23375 - 11905: 0x8C47,\n\t23376 - 11905: 0xD7D3,\n\t23377 - 11905: 0xE6DD,\n\t23378 - 11905: 0x8C48,\n\t23379 - 11905: 0xE6DE,\n\t23380 - 11905: 0xBFD7,\n\t23381 - 11905: 0xD4D0,\n\t23382 - 11905: 0x8C49,\n\t23383 - 11905: 0xD7D6,\n\t23384 - 11905: 0xB4E6,\n\t23385 - 11905: 0xCBEF,\n\t23386 - 11905: 0xE6DA,\n\t23387 - 11905: 0xD8C3,\n\t23388 - 11905: 0xD7CE,\n\t23389 - 11905: 0xD0A2,\n\t23390 - 11905: 0x8C4A,\n\t23391 - 11905: 0xC3CF,\n\t23392 - 11905: 0x8C4B,\n\t23393 - 11905: 0x8C4C,\n\t23394 - 11905: 0xE6DF,\n\t23395 - 11905: 0xBCBE,\n\t23396 - 11905: 0xB9C2,\n\t23397 - 11905: 0xE6DB,\n\t23398 - 11905: 0xD1A7,\n\t23399 - 11905: 0x8C4D,\n\t23400 - 11905: 0x8C4E,\n\t23401 - 11905: 0xBAA2,\n\t23402 - 11905: 0xC2CF,\n\t23403 - 11905: 0x8C4F,\n\t23404 - 11905: 0xD8AB,\n\t23405 - 11905: 0x8C50,\n\t23406 - 11905: 0x8C51,\n\t23407 - 11905: 0x8C52,\n\t23408 - 11905: 0xCAEB,\n\t23409 - 11905: 0xE5EE,\n\t23410 - 11905: 0x8C53,\n\t23411 - 11905: 0xE6DC,\n\t23412 - 11905: 0x8C54,\n\t23413 - 11905: 0xB7F5,\n\t23414 - 11905: 0x8C55,\n\t23415 - 11905: 0x8C56,\n\t23416 - 11905: 0x8C57,\n\t23417 - 11905: 0x8C58,\n\t23418 - 11905: 0xC8E6,\n\t23419 - 11905: 0x8C59,\n\t23420 - 11905: 0x8C5A,\n\t23421 - 11905: 0xC4F5,\n\t23422 - 11905: 0x8C5B,\n\t23423 - 11905: 0x8C5C,\n\t23424 - 11905: 0xE5B2,\n\t23425 - 11905: 0xC4FE,\n\t23426 - 11905: 0x8C5D,\n\t23427 - 11905: 0xCBFC,\n\t23428 - 11905: 0xE5B3,\n\t23429 - 11905: 0xD5AC,\n\t23430 - 11905: 0x8C5E,\n\t23431 - 11905: 0xD3EE,\n\t23432 - 11905: 0xCAD8,\n\t23433 - 11905: 0xB0B2,\n\t23434 - 11905: 0x8C5F,\n\t23435 - 11905: 0xCBCE,\n\t23436 - 11905: 0xCDEA,\n\t23437 - 11905: 0x8C60,\n\t23438 - 11905: 0x8C61,\n\t23439 - 11905: 0xBAEA,\n\t23440 - 11905: 0x8C62,\n\t23441 - 11905: 0x8C63,\n\t23442 - 11905: 0x8C64,\n\t23443 - 11905: 0xE5B5,\n\t23444 - 11905: 0x8C65,\n\t23445 - 11905: 0xE5B4,\n\t23446 - 11905: 0x8C66,\n\t23447 - 11905: 0xD7DA,\n\t23448 - 11905: 0xB9D9,\n\t23449 - 11905: 0xD6E6,\n\t23450 - 11905: 0xB6A8,\n\t23451 - 11905: 0xCDF0,\n\t23452 - 11905: 0xD2CB,\n\t23453 - 11905: 0xB1A6,\n\t23454 - 11905: 0xCAB5,\n\t23455 - 11905: 0x8C67,\n\t23456 - 11905: 0xB3E8,\n\t23457 - 11905: 0xC9F3,\n\t23458 - 11905: 0xBFCD,\n\t23459 - 11905: 0xD0FB,\n\t23460 - 11905: 0xCAD2,\n\t23461 - 11905: 0xE5B6,\n\t23462 - 11905: 0xBBC2,\n\t23463 - 11905: 0x8C68,\n\t23464 - 11905: 0x8C69,\n\t23465 - 11905: 0x8C6A,\n\t23466 - 11905: 0xCFDC,\n\t23467 - 11905: 0xB9AC,\n\t23468 - 11905: 0x8C6B,\n\t23469 - 11905: 0x8C6C,\n\t23470 - 11905: 0x8C6D,\n\t23471 - 11905: 0x8C6E,\n\t23472 - 11905: 0xD4D7,\n\t23473 - 11905: 0x8C6F,\n\t23474 - 11905: 0x8C70,\n\t23475 - 11905: 0xBAA6,\n\t23476 - 11905: 0xD1E7,\n\t23477 - 11905: 0xCFFC,\n\t23478 - 11905: 0xBCD2,\n\t23479 - 11905: 0x8C71,\n\t23480 - 11905: 0xE5B7,\n\t23481 - 11905: 0xC8DD,\n\t23482 - 11905: 0x8C72,\n\t23483 - 11905: 0x8C73,\n\t23484 - 11905: 0x8C74,\n\t23485 - 11905: 0xBFED,\n\t23486 - 11905: 0xB1F6,\n\t23487 - 11905: 0xCBDE,\n\t23488 - 11905: 0x8C75,\n\t23489 - 11905: 0x8C76,\n\t23490 - 11905: 0xBCC5,\n\t23491 - 11905: 0x8C77,\n\t23492 - 11905: 0xBCC4,\n\t23493 - 11905: 0xD2FA,\n\t23494 - 11905: 0xC3DC,\n\t23495 - 11905: 0xBFDC,\n\t23496 - 11905: 0x8C78,\n\t23497 - 11905: 0x8C79,\n\t23498 - 11905: 0x8C7A,\n\t23499 - 11905: 0x8C7B,\n\t23500 - 11905: 0xB8BB,\n\t23501 - 11905: 0x8C7C,\n\t23502 - 11905: 0x8C7D,\n\t23503 - 11905: 0x8C7E,\n\t23504 - 11905: 0xC3C2,\n\t23505 - 11905: 0x8C80,\n\t23506 - 11905: 0xBAAE,\n\t23507 - 11905: 0xD4A2,\n\t23508 - 11905: 0x8C81,\n\t23509 - 11905: 0x8C82,\n\t23510 - 11905: 0x8C83,\n\t23511 - 11905: 0x8C84,\n\t23512 - 11905: 0x8C85,\n\t23513 - 11905: 0x8C86,\n\t23514 - 11905: 0x8C87,\n\t23515 - 11905: 0x8C88,\n\t23516 - 11905: 0x8C89,\n\t23517 - 11905: 0xC7DE,\n\t23518 - 11905: 0xC4AF,\n\t23519 - 11905: 0xB2EC,\n\t23520 - 11905: 0x8C8A,\n\t23521 - 11905: 0xB9D1,\n\t23522 - 11905: 0x8C8B,\n\t23523 - 11905: 0x8C8C,\n\t23524 - 11905: 0xE5BB,\n\t23525 - 11905: 0xC1C8,\n\t23526 - 11905: 0x8C8D,\n\t23527 - 11905: 0x8C8E,\n\t23528 - 11905: 0xD5AF,\n\t23529 - 11905: 0x8C8F,\n\t23530 - 11905: 0x8C90,\n\t23531 - 11905: 0x8C91,\n\t23532 - 11905: 0x8C92,\n\t23533 - 11905: 0x8C93,\n\t23534 - 11905: 0xE5BC,\n\t23535 - 11905: 0x8C94,\n\t23536 - 11905: 0xE5BE,\n\t23537 - 11905: 0x8C95,\n\t23538 - 11905: 0x8C96,\n\t23539 - 11905: 0x8C97,\n\t23540 - 11905: 0x8C98,\n\t23541 - 11905: 0x8C99,\n\t23542 - 11905: 0x8C9A,\n\t23543 - 11905: 0x8C9B,\n\t23544 - 11905: 0xB4E7,\n\t23545 - 11905: 0xB6D4,\n\t23546 - 11905: 0xCBC2,\n\t23547 - 11905: 0xD1B0,\n\t23548 - 11905: 0xB5BC,\n\t23549 - 11905: 0x8C9C,\n\t23550 - 11905: 0x8C9D,\n\t23551 - 11905: 0xCAD9,\n\t23552 - 11905: 0x8C9E,\n\t23553 - 11905: 0xB7E2,\n\t23554 - 11905: 0x8C9F,\n\t23555 - 11905: 0x8CA0,\n\t23556 - 11905: 0xC9E4,\n\t23557 - 11905: 0x8CA1,\n\t23558 - 11905: 0xBDAB,\n\t23559 - 11905: 0x8CA2,\n\t23560 - 11905: 0x8CA3,\n\t23561 - 11905: 0xCEBE,\n\t23562 - 11905: 0xD7F0,\n\t23563 - 11905: 0x8CA4,\n\t23564 - 11905: 0x8CA5,\n\t23565 - 11905: 0x8CA6,\n\t23566 - 11905: 0x8CA7,\n\t23567 - 11905: 0xD0A1,\n\t23568 - 11905: 0x8CA8,\n\t23569 - 11905: 0xC9D9,\n\t23570 - 11905: 0x8CA9,\n\t23571 - 11905: 0x8CAA,\n\t23572 - 11905: 0xB6FB,\n\t23573 - 11905: 0xE6D8,\n\t23574 - 11905: 0xBCE2,\n\t23575 - 11905: 0x8CAB,\n\t23576 - 11905: 0xB3BE,\n\t23577 - 11905: 0x8CAC,\n\t23578 - 11905: 0xC9D0,\n\t23579 - 11905: 0x8CAD,\n\t23580 - 11905: 0xE6D9,\n\t23581 - 11905: 0xB3A2,\n\t23582 - 11905: 0x8CAE,\n\t23583 - 11905: 0x8CAF,\n\t23584 - 11905: 0x8CB0,\n\t23585 - 11905: 0x8CB1,\n\t23586 - 11905: 0xDECC,\n\t23587 - 11905: 0x8CB2,\n\t23588 - 11905: 0xD3C8,\n\t23589 - 11905: 0xDECD,\n\t23590 - 11905: 0x8CB3,\n\t23591 - 11905: 0xD2A2,\n\t23592 - 11905: 0x8CB4,\n\t23593 - 11905: 0x8CB5,\n\t23594 - 11905: 0x8CB6,\n\t23595 - 11905: 0x8CB7,\n\t23596 - 11905: 0xDECE,\n\t23597 - 11905: 0x8CB8,\n\t23598 - 11905: 0x8CB9,\n\t23599 - 11905: 0x8CBA,\n\t23600 - 11905: 0x8CBB,\n\t23601 - 11905: 0xBECD,\n\t23602 - 11905: 0x8CBC,\n\t23603 - 11905: 0x8CBD,\n\t23604 - 11905: 0xDECF,\n\t23605 - 11905: 0x8CBE,\n\t23606 - 11905: 0x8CBF,\n\t23607 - 11905: 0x8CC0,\n\t23608 - 11905: 0xCAAC,\n\t23609 - 11905: 0xD2FC,\n\t23610 - 11905: 0xB3DF,\n\t23611 - 11905: 0xE5EA,\n\t23612 - 11905: 0xC4E1,\n\t23613 - 11905: 0xBEA1,\n\t23614 - 11905: 0xCEB2,\n\t23615 - 11905: 0xC4F2,\n\t23616 - 11905: 0xBED6,\n\t23617 - 11905: 0xC6A8,\n\t23618 - 11905: 0xB2E3,\n\t23619 - 11905: 0x8CC1,\n\t23620 - 11905: 0x8CC2,\n\t23621 - 11905: 0xBED3,\n\t23622 - 11905: 0x8CC3,\n\t23623 - 11905: 0x8CC4,\n\t23624 - 11905: 0xC7FC,\n\t23625 - 11905: 0xCCEB,\n\t23626 - 11905: 0xBDEC,\n\t23627 - 11905: 0xCEDD,\n\t23628 - 11905: 0x8CC5,\n\t23629 - 11905: 0x8CC6,\n\t23630 - 11905: 0xCABA,\n\t23631 - 11905: 0xC6C1,\n\t23632 - 11905: 0xE5EC,\n\t23633 - 11905: 0xD0BC,\n\t23634 - 11905: 0x8CC7,\n\t23635 - 11905: 0x8CC8,\n\t23636 - 11905: 0x8CC9,\n\t23637 - 11905: 0xD5B9,\n\t23638 - 11905: 0x8CCA,\n\t23639 - 11905: 0x8CCB,\n\t23640 - 11905: 0x8CCC,\n\t23641 - 11905: 0xE5ED,\n\t23642 - 11905: 0x8CCD,\n\t23643 - 11905: 0x8CCE,\n\t23644 - 11905: 0x8CCF,\n\t23645 - 11905: 0x8CD0,\n\t23646 - 11905: 0xCAF4,\n\t23647 - 11905: 0x8CD1,\n\t23648 - 11905: 0xCDC0,\n\t23649 - 11905: 0xC2C5,\n\t23650 - 11905: 0x8CD2,\n\t23651 - 11905: 0xE5EF,\n\t23652 - 11905: 0x8CD3,\n\t23653 - 11905: 0xC2C4,\n\t23654 - 11905: 0xE5F0,\n\t23655 - 11905: 0x8CD4,\n\t23656 - 11905: 0x8CD5,\n\t23657 - 11905: 0x8CD6,\n\t23658 - 11905: 0x8CD7,\n\t23659 - 11905: 0x8CD8,\n\t23660 - 11905: 0x8CD9,\n\t23661 - 11905: 0x8CDA,\n\t23662 - 11905: 0xE5F8,\n\t23663 - 11905: 0xCDCD,\n\t23664 - 11905: 0x8CDB,\n\t23665 - 11905: 0xC9BD,\n\t23666 - 11905: 0x8CDC,\n\t23667 - 11905: 0x8CDD,\n\t23668 - 11905: 0x8CDE,\n\t23669 - 11905: 0x8CDF,\n\t23670 - 11905: 0x8CE0,\n\t23671 - 11905: 0x8CE1,\n\t23672 - 11905: 0x8CE2,\n\t23673 - 11905: 0xD2D9,\n\t23674 - 11905: 0xE1A8,\n\t23675 - 11905: 0x8CE3,\n\t23676 - 11905: 0x8CE4,\n\t23677 - 11905: 0x8CE5,\n\t23678 - 11905: 0x8CE6,\n\t23679 - 11905: 0xD3EC,\n\t23680 - 11905: 0x8CE7,\n\t23681 - 11905: 0xCBEA,\n\t23682 - 11905: 0xC6F1,\n\t23683 - 11905: 0x8CE8,\n\t23684 - 11905: 0x8CE9,\n\t23685 - 11905: 0x8CEA,\n\t23686 - 11905: 0x8CEB,\n\t23687 - 11905: 0x8CEC,\n\t23688 - 11905: 0xE1AC,\n\t23689 - 11905: 0x8CED,\n\t23690 - 11905: 0x8CEE,\n\t23691 - 11905: 0x8CEF,\n\t23692 - 11905: 0xE1A7,\n\t23693 - 11905: 0xE1A9,\n\t23694 - 11905: 0x8CF0,\n\t23695 - 11905: 0x8CF1,\n\t23696 - 11905: 0xE1AA,\n\t23697 - 11905: 0xE1AF,\n\t23698 - 11905: 0x8CF2,\n\t23699 - 11905: 0x8CF3,\n\t23700 - 11905: 0xB2ED,\n\t23701 - 11905: 0x8CF4,\n\t23702 - 11905: 0xE1AB,\n\t23703 - 11905: 0xB8DA,\n\t23704 - 11905: 0xE1AD,\n\t23705 - 11905: 0xE1AE,\n\t23706 - 11905: 0xE1B0,\n\t23707 - 11905: 0xB5BA,\n\t23708 - 11905: 0xE1B1,\n\t23709 - 11905: 0x8CF5,\n\t23710 - 11905: 0x8CF6,\n\t23711 - 11905: 0x8CF7,\n\t23712 - 11905: 0x8CF8,\n\t23713 - 11905: 0x8CF9,\n\t23714 - 11905: 0xE1B3,\n\t23715 - 11905: 0xE1B8,\n\t23716 - 11905: 0x8CFA,\n\t23717 - 11905: 0x8CFB,\n\t23718 - 11905: 0x8CFC,\n\t23719 - 11905: 0x8CFD,\n\t23720 - 11905: 0x8CFE,\n\t23721 - 11905: 0xD1D2,\n\t23722 - 11905: 0x8D40,\n\t23723 - 11905: 0xE1B6,\n\t23724 - 11905: 0xE1B5,\n\t23725 - 11905: 0xC1EB,\n\t23726 - 11905: 0x8D41,\n\t23727 - 11905: 0x8D42,\n\t23728 - 11905: 0x8D43,\n\t23729 - 11905: 0xE1B7,\n\t23730 - 11905: 0x8D44,\n\t23731 - 11905: 0xD4C0,\n\t23732 - 11905: 0x8D45,\n\t23733 - 11905: 0xE1B2,\n\t23734 - 11905: 0x8D46,\n\t23735 - 11905: 0xE1BA,\n\t23736 - 11905: 0xB0B6,\n\t23737 - 11905: 0x8D47,\n\t23738 - 11905: 0x8D48,\n\t23739 - 11905: 0x8D49,\n\t23740 - 11905: 0x8D4A,\n\t23741 - 11905: 0xE1B4,\n\t23742 - 11905: 0x8D4B,\n\t23743 - 11905: 0xBFF9,\n\t23744 - 11905: 0x8D4C,\n\t23745 - 11905: 0xE1B9,\n\t23746 - 11905: 0x8D4D,\n\t23747 - 11905: 0x8D4E,\n\t23748 - 11905: 0xE1BB,\n\t23749 - 11905: 0x8D4F,\n\t23750 - 11905: 0x8D50,\n\t23751 - 11905: 0x8D51,\n\t23752 - 11905: 0x8D52,\n\t23753 - 11905: 0x8D53,\n\t23754 - 11905: 0x8D54,\n\t23755 - 11905: 0xE1BE,\n\t23756 - 11905: 0x8D55,\n\t23757 - 11905: 0x8D56,\n\t23758 - 11905: 0x8D57,\n\t23759 - 11905: 0x8D58,\n\t23760 - 11905: 0x8D59,\n\t23761 - 11905: 0x8D5A,\n\t23762 - 11905: 0xE1BC,\n\t23763 - 11905: 0x8D5B,\n\t23764 - 11905: 0x8D5C,\n\t23765 - 11905: 0x8D5D,\n\t23766 - 11905: 0x8D5E,\n\t23767 - 11905: 0x8D5F,\n\t23768 - 11905: 0x8D60,\n\t23769 - 11905: 0xD6C5,\n\t23770 - 11905: 0x8D61,\n\t23771 - 11905: 0x8D62,\n\t23772 - 11905: 0x8D63,\n\t23773 - 11905: 0x8D64,\n\t23774 - 11905: 0x8D65,\n\t23775 - 11905: 0x8D66,\n\t23776 - 11905: 0x8D67,\n\t23777 - 11905: 0xCFBF,\n\t23778 - 11905: 0x8D68,\n\t23779 - 11905: 0x8D69,\n\t23780 - 11905: 0xE1BD,\n\t23781 - 11905: 0xE1BF,\n\t23782 - 11905: 0xC2CD,\n\t23783 - 11905: 0x8D6A,\n\t23784 - 11905: 0xB6EB,\n\t23785 - 11905: 0x8D6B,\n\t23786 - 11905: 0xD3F8,\n\t23787 - 11905: 0x8D6C,\n\t23788 - 11905: 0x8D6D,\n\t23789 - 11905: 0xC7CD,\n\t23790 - 11905: 0x8D6E,\n\t23791 - 11905: 0x8D6F,\n\t23792 - 11905: 0xB7E5,\n\t23793 - 11905: 0x8D70,\n\t23794 - 11905: 0x8D71,\n\t23795 - 11905: 0x8D72,\n\t23796 - 11905: 0x8D73,\n\t23797 - 11905: 0x8D74,\n\t23798 - 11905: 0x8D75,\n\t23799 - 11905: 0x8D76,\n\t23800 - 11905: 0x8D77,\n\t23801 - 11905: 0x8D78,\n\t23802 - 11905: 0x8D79,\n\t23803 - 11905: 0xBEFE,\n\t23804 - 11905: 0x8D7A,\n\t23805 - 11905: 0x8D7B,\n\t23806 - 11905: 0x8D7C,\n\t23807 - 11905: 0x8D7D,\n\t23808 - 11905: 0x8D7E,\n\t23809 - 11905: 0x8D80,\n\t23810 - 11905: 0xE1C0,\n\t23811 - 11905: 0xE1C1,\n\t23812 - 11905: 0x8D81,\n\t23813 - 11905: 0x8D82,\n\t23814 - 11905: 0xE1C7,\n\t23815 - 11905: 0xB3E7,\n\t23816 - 11905: 0x8D83,\n\t23817 - 11905: 0x8D84,\n\t23818 - 11905: 0x8D85,\n\t23819 - 11905: 0x8D86,\n\t23820 - 11905: 0x8D87,\n\t23821 - 11905: 0x8D88,\n\t23822 - 11905: 0xC6E9,\n\t23823 - 11905: 0x8D89,\n\t23824 - 11905: 0x8D8A,\n\t23825 - 11905: 0x8D8B,\n\t23826 - 11905: 0x8D8C,\n\t23827 - 11905: 0x8D8D,\n\t23828 - 11905: 0xB4DE,\n\t23829 - 11905: 0x8D8E,\n\t23830 - 11905: 0xD1C2,\n\t23831 - 11905: 0x8D8F,\n\t23832 - 11905: 0x8D90,\n\t23833 - 11905: 0x8D91,\n\t23834 - 11905: 0x8D92,\n\t23835 - 11905: 0xE1C8,\n\t23836 - 11905: 0x8D93,\n\t23837 - 11905: 0x8D94,\n\t23838 - 11905: 0xE1C6,\n\t23839 - 11905: 0x8D95,\n\t23840 - 11905: 0x8D96,\n\t23841 - 11905: 0x8D97,\n\t23842 - 11905: 0x8D98,\n\t23843 - 11905: 0x8D99,\n\t23844 - 11905: 0xE1C5,\n\t23845 - 11905: 0x8D9A,\n\t23846 - 11905: 0xE1C3,\n\t23847 - 11905: 0xE1C2,\n\t23848 - 11905: 0x8D9B,\n\t23849 - 11905: 0xB1C0,\n\t23850 - 11905: 0x8D9C,\n\t23851 - 11905: 0x8D9D,\n\t23852 - 11905: 0x8D9E,\n\t23853 - 11905: 0xD5B8,\n\t23854 - 11905: 0xE1C4,\n\t23855 - 11905: 0x8D9F,\n\t23856 - 11905: 0x8DA0,\n\t23857 - 11905: 0x8DA1,\n\t23858 - 11905: 0x8DA2,\n\t23859 - 11905: 0x8DA3,\n\t23860 - 11905: 0xE1CB,\n\t23861 - 11905: 0x8DA4,\n\t23862 - 11905: 0x8DA5,\n\t23863 - 11905: 0x8DA6,\n\t23864 - 11905: 0x8DA7,\n\t23865 - 11905: 0x8DA8,\n\t23866 - 11905: 0x8DA9,\n\t23867 - 11905: 0x8DAA,\n\t23868 - 11905: 0x8DAB,\n\t23869 - 11905: 0xE1CC,\n\t23870 - 11905: 0xE1CA,\n\t23871 - 11905: 0x8DAC,\n\t23872 - 11905: 0x8DAD,\n\t23873 - 11905: 0x8DAE,\n\t23874 - 11905: 0x8DAF,\n\t23875 - 11905: 0x8DB0,\n\t23876 - 11905: 0x8DB1,\n\t23877 - 11905: 0x8DB2,\n\t23878 - 11905: 0x8DB3,\n\t23879 - 11905: 0xEFFA,\n\t23880 - 11905: 0x8DB4,\n\t23881 - 11905: 0x8DB5,\n\t23882 - 11905: 0xE1D3,\n\t23883 - 11905: 0xE1D2,\n\t23884 - 11905: 0xC7B6,\n\t23885 - 11905: 0x8DB6,\n\t23886 - 11905: 0x8DB7,\n\t23887 - 11905: 0x8DB8,\n\t23888 - 11905: 0x8DB9,\n\t23889 - 11905: 0x8DBA,\n\t23890 - 11905: 0x8DBB,\n\t23891 - 11905: 0x8DBC,\n\t23892 - 11905: 0x8DBD,\n\t23893 - 11905: 0x8DBE,\n\t23894 - 11905: 0x8DBF,\n\t23895 - 11905: 0x8DC0,\n\t23896 - 11905: 0xE1C9,\n\t23897 - 11905: 0x8DC1,\n\t23898 - 11905: 0x8DC2,\n\t23899 - 11905: 0xE1CE,\n\t23900 - 11905: 0x8DC3,\n\t23901 - 11905: 0xE1D0,\n\t23902 - 11905: 0x8DC4,\n\t23903 - 11905: 0x8DC5,\n\t23904 - 11905: 0x8DC6,\n\t23905 - 11905: 0x8DC7,\n\t23906 - 11905: 0x8DC8,\n\t23907 - 11905: 0x8DC9,\n\t23908 - 11905: 0x8DCA,\n\t23909 - 11905: 0x8DCB,\n\t23910 - 11905: 0x8DCC,\n\t23911 - 11905: 0x8DCD,\n\t23912 - 11905: 0x8DCE,\n\t23913 - 11905: 0xE1D4,\n\t23914 - 11905: 0x8DCF,\n\t23915 - 11905: 0xE1D1,\n\t23916 - 11905: 0xE1CD,\n\t23917 - 11905: 0x8DD0,\n\t23918 - 11905: 0x8DD1,\n\t23919 - 11905: 0xE1CF,\n\t23920 - 11905: 0x8DD2,\n\t23921 - 11905: 0x8DD3,\n\t23922 - 11905: 0x8DD4,\n\t23923 - 11905: 0x8DD5,\n\t23924 - 11905: 0xE1D5,\n\t23925 - 11905: 0x8DD6,\n\t23926 - 11905: 0x8DD7,\n\t23927 - 11905: 0x8DD8,\n\t23928 - 11905: 0x8DD9,\n\t23929 - 11905: 0x8DDA,\n\t23930 - 11905: 0x8DDB,\n\t23931 - 11905: 0x8DDC,\n\t23932 - 11905: 0x8DDD,\n\t23933 - 11905: 0x8DDE,\n\t23934 - 11905: 0x8DDF,\n\t23935 - 11905: 0x8DE0,\n\t23936 - 11905: 0x8DE1,\n\t23937 - 11905: 0x8DE2,\n\t23938 - 11905: 0xE1D6,\n\t23939 - 11905: 0x8DE3,\n\t23940 - 11905: 0x8DE4,\n\t23941 - 11905: 0x8DE5,\n\t23942 - 11905: 0x8DE6,\n\t23943 - 11905: 0x8DE7,\n\t23944 - 11905: 0x8DE8,\n\t23945 - 11905: 0x8DE9,\n\t23946 - 11905: 0x8DEA,\n\t23947 - 11905: 0x8DEB,\n\t23948 - 11905: 0x8DEC,\n\t23949 - 11905: 0x8DED,\n\t23950 - 11905: 0x8DEE,\n\t23951 - 11905: 0x8DEF,\n\t23952 - 11905: 0x8DF0,\n\t23953 - 11905: 0x8DF1,\n\t23954 - 11905: 0x8DF2,\n\t23955 - 11905: 0x8DF3,\n\t23956 - 11905: 0x8DF4,\n\t23957 - 11905: 0x8DF5,\n\t23958 - 11905: 0x8DF6,\n\t23959 - 11905: 0x8DF7,\n\t23960 - 11905: 0x8DF8,\n\t23961 - 11905: 0xE1D7,\n\t23962 - 11905: 0x8DF9,\n\t23963 - 11905: 0x8DFA,\n\t23964 - 11905: 0x8DFB,\n\t23965 - 11905: 0xE1D8,\n\t23966 - 11905: 0x8DFC,\n\t23967 - 11905: 0x8DFD,\n\t23968 - 11905: 0x8DFE,\n\t23969 - 11905: 0x8E40,\n\t23970 - 11905: 0x8E41,\n\t23971 - 11905: 0x8E42,\n\t23972 - 11905: 0x8E43,\n\t23973 - 11905: 0x8E44,\n\t23974 - 11905: 0x8E45,\n\t23975 - 11905: 0x8E46,\n\t23976 - 11905: 0x8E47,\n\t23977 - 11905: 0x8E48,\n\t23978 - 11905: 0x8E49,\n\t23979 - 11905: 0x8E4A,\n\t23980 - 11905: 0x8E4B,\n\t23981 - 11905: 0x8E4C,\n\t23982 - 11905: 0x8E4D,\n\t23983 - 11905: 0x8E4E,\n\t23984 - 11905: 0x8E4F,\n\t23985 - 11905: 0x8E50,\n\t23986 - 11905: 0x8E51,\n\t23987 - 11905: 0x8E52,\n\t23988 - 11905: 0x8E53,\n\t23989 - 11905: 0x8E54,\n\t23990 - 11905: 0x8E55,\n\t23991 - 11905: 0xE1DA,\n\t23992 - 11905: 0x8E56,\n\t23993 - 11905: 0x8E57,\n\t23994 - 11905: 0x8E58,\n\t23995 - 11905: 0x8E59,\n\t23996 - 11905: 0x8E5A,\n\t23997 - 11905: 0x8E5B,\n\t23998 - 11905: 0x8E5C,\n\t23999 - 11905: 0x8E5D,\n\t24000 - 11905: 0x8E5E,\n\t24001 - 11905: 0x8E5F,\n\t24002 - 11905: 0x8E60,\n\t24003 - 11905: 0x8E61,\n\t24004 - 11905: 0x8E62,\n\t24005 - 11905: 0xE1DB,\n\t24006 - 11905: 0x8E63,\n\t24007 - 11905: 0x8E64,\n\t24008 - 11905: 0x8E65,\n\t24009 - 11905: 0x8E66,\n\t24010 - 11905: 0x8E67,\n\t24011 - 11905: 0x8E68,\n\t24012 - 11905: 0x8E69,\n\t24013 - 11905: 0xCEA1,\n\t24014 - 11905: 0x8E6A,\n\t24015 - 11905: 0x8E6B,\n\t24016 - 11905: 0x8E6C,\n\t24017 - 11905: 0x8E6D,\n\t24018 - 11905: 0x8E6E,\n\t24019 - 11905: 0x8E6F,\n\t24020 - 11905: 0x8E70,\n\t24021 - 11905: 0x8E71,\n\t24022 - 11905: 0x8E72,\n\t24023 - 11905: 0x8E73,\n\t24024 - 11905: 0x8E74,\n\t24025 - 11905: 0x8E75,\n\t24026 - 11905: 0x8E76,\n\t24027 - 11905: 0xE7DD,\n\t24028 - 11905: 0x8E77,\n\t24029 - 11905: 0xB4A8,\n\t24030 - 11905: 0xD6DD,\n\t24031 - 11905: 0x8E78,\n\t24032 - 11905: 0x8E79,\n\t24033 - 11905: 0xD1B2,\n\t24034 - 11905: 0xB3B2,\n\t24035 - 11905: 0x8E7A,\n\t24036 - 11905: 0x8E7B,\n\t24037 - 11905: 0xB9A4,\n\t24038 - 11905: 0xD7F3,\n\t24039 - 11905: 0xC7C9,\n\t24040 - 11905: 0xBEDE,\n\t24041 - 11905: 0xB9AE,\n\t24042 - 11905: 0x8E7C,\n\t24043 - 11905: 0xCED7,\n\t24044 - 11905: 0x8E7D,\n\t24045 - 11905: 0x8E7E,\n\t24046 - 11905: 0xB2EE,\n\t24047 - 11905: 0xDBCF,\n\t24048 - 11905: 0x8E80,\n\t24049 - 11905: 0xBCBA,\n\t24050 - 11905: 0xD2D1,\n\t24051 - 11905: 0xCBC8,\n\t24052 - 11905: 0xB0CD,\n\t24053 - 11905: 0x8E81,\n\t24054 - 11905: 0x8E82,\n\t24055 - 11905: 0xCFEF,\n\t24056 - 11905: 0x8E83,\n\t24057 - 11905: 0x8E84,\n\t24058 - 11905: 0x8E85,\n\t24059 - 11905: 0x8E86,\n\t24060 - 11905: 0x8E87,\n\t24061 - 11905: 0xD9E3,\n\t24062 - 11905: 0xBDED,\n\t24063 - 11905: 0x8E88,\n\t24064 - 11905: 0x8E89,\n\t24065 - 11905: 0xB1D2,\n\t24066 - 11905: 0xCAD0,\n\t24067 - 11905: 0xB2BC,\n\t24068 - 11905: 0x8E8A,\n\t24069 - 11905: 0xCBA7,\n\t24070 - 11905: 0xB7AB,\n\t24071 - 11905: 0x8E8B,\n\t24072 - 11905: 0xCAA6,\n\t24073 - 11905: 0x8E8C,\n\t24074 - 11905: 0x8E8D,\n\t24075 - 11905: 0x8E8E,\n\t24076 - 11905: 0xCFA3,\n\t24077 - 11905: 0x8E8F,\n\t24078 - 11905: 0x8E90,\n\t24079 - 11905: 0xE0F8,\n\t24080 - 11905: 0xD5CA,\n\t24081 - 11905: 0xE0FB,\n\t24082 - 11905: 0x8E91,\n\t24083 - 11905: 0x8E92,\n\t24084 - 11905: 0xE0FA,\n\t24085 - 11905: 0xC5C1,\n\t24086 - 11905: 0xCCFB,\n\t24087 - 11905: 0x8E93,\n\t24088 - 11905: 0xC1B1,\n\t24089 - 11905: 0xE0F9,\n\t24090 - 11905: 0xD6E3,\n\t24091 - 11905: 0xB2AF,\n\t24092 - 11905: 0xD6C4,\n\t24093 - 11905: 0xB5DB,\n\t24094 - 11905: 0x8E94,\n\t24095 - 11905: 0x8E95,\n\t24096 - 11905: 0x8E96,\n\t24097 - 11905: 0x8E97,\n\t24098 - 11905: 0x8E98,\n\t24099 - 11905: 0x8E99,\n\t24100 - 11905: 0x8E9A,\n\t24101 - 11905: 0x8E9B,\n\t24102 - 11905: 0xB4F8,\n\t24103 - 11905: 0xD6A1,\n\t24104 - 11905: 0x8E9C,\n\t24105 - 11905: 0x8E9D,\n\t24106 - 11905: 0x8E9E,\n\t24107 - 11905: 0x8E9F,\n\t24108 - 11905: 0x8EA0,\n\t24109 - 11905: 0xCFAF,\n\t24110 - 11905: 0xB0EF,\n\t24111 - 11905: 0x8EA1,\n\t24112 - 11905: 0x8EA2,\n\t24113 - 11905: 0xE0FC,\n\t24114 - 11905: 0x8EA3,\n\t24115 - 11905: 0x8EA4,\n\t24116 - 11905: 0x8EA5,\n\t24117 - 11905: 0x8EA6,\n\t24118 - 11905: 0x8EA7,\n\t24119 - 11905: 0xE1A1,\n\t24120 - 11905: 0xB3A3,\n\t24121 - 11905: 0x8EA8,\n\t24122 - 11905: 0x8EA9,\n\t24123 - 11905: 0xE0FD,\n\t24124 - 11905: 0xE0FE,\n\t24125 - 11905: 0xC3B1,\n\t24126 - 11905: 0x8EAA,\n\t24127 - 11905: 0x8EAB,\n\t24128 - 11905: 0x8EAC,\n\t24129 - 11905: 0x8EAD,\n\t24130 - 11905: 0xC3DD,\n\t24131 - 11905: 0x8EAE,\n\t24132 - 11905: 0xE1A2,\n\t24133 - 11905: 0xB7F9,\n\t24134 - 11905: 0x8EAF,\n\t24135 - 11905: 0x8EB0,\n\t24136 - 11905: 0x8EB1,\n\t24137 - 11905: 0x8EB2,\n\t24138 - 11905: 0x8EB3,\n\t24139 - 11905: 0x8EB4,\n\t24140 - 11905: 0xBBCF,\n\t24141 - 11905: 0x8EB5,\n\t24142 - 11905: 0x8EB6,\n\t24143 - 11905: 0x8EB7,\n\t24144 - 11905: 0x8EB8,\n\t24145 - 11905: 0x8EB9,\n\t24146 - 11905: 0x8EBA,\n\t24147 - 11905: 0x8EBB,\n\t24148 - 11905: 0xE1A3,\n\t24149 - 11905: 0xC4BB,\n\t24150 - 11905: 0x8EBC,\n\t24151 - 11905: 0x8EBD,\n\t24152 - 11905: 0x8EBE,\n\t24153 - 11905: 0x8EBF,\n\t24154 - 11905: 0x8EC0,\n\t24155 - 11905: 0xE1A4,\n\t24156 - 11905: 0x8EC1,\n\t24157 - 11905: 0x8EC2,\n\t24158 - 11905: 0xE1A5,\n\t24159 - 11905: 0x8EC3,\n\t24160 - 11905: 0x8EC4,\n\t24161 - 11905: 0xE1A6,\n\t24162 - 11905: 0xB4B1,\n\t24163 - 11905: 0x8EC5,\n\t24164 - 11905: 0x8EC6,\n\t24165 - 11905: 0x8EC7,\n\t24166 - 11905: 0x8EC8,\n\t24167 - 11905: 0x8EC9,\n\t24168 - 11905: 0x8ECA,\n\t24169 - 11905: 0x8ECB,\n\t24170 - 11905: 0x8ECC,\n\t24171 - 11905: 0x8ECD,\n\t24172 - 11905: 0x8ECE,\n\t24173 - 11905: 0x8ECF,\n\t24174 - 11905: 0x8ED0,\n\t24175 - 11905: 0x8ED1,\n\t24176 - 11905: 0x8ED2,\n\t24177 - 11905: 0x8ED3,\n\t24178 - 11905: 0xB8C9,\n\t24179 - 11905: 0xC6BD,\n\t24180 - 11905: 0xC4EA,\n\t24181 - 11905: 0x8ED4,\n\t24182 - 11905: 0xB2A2,\n\t24183 - 11905: 0x8ED5,\n\t24184 - 11905: 0xD0D2,\n\t24185 - 11905: 0x8ED6,\n\t24186 - 11905: 0xE7DB,\n\t24187 - 11905: 0xBBC3,\n\t24188 - 11905: 0xD3D7,\n\t24189 - 11905: 0xD3C4,\n\t24190 - 11905: 0x8ED7,\n\t24191 - 11905: 0xB9E3,\n\t24192 - 11905: 0xE2CF,\n\t24193 - 11905: 0x8ED8,\n\t24194 - 11905: 0x8ED9,\n\t24195 - 11905: 0x8EDA,\n\t24196 - 11905: 0xD7AF,\n\t24197 - 11905: 0x8EDB,\n\t24198 - 11905: 0xC7EC,\n\t24199 - 11905: 0xB1D3,\n\t24200 - 11905: 0x8EDC,\n\t24201 - 11905: 0x8EDD,\n\t24202 - 11905: 0xB4B2,\n\t24203 - 11905: 0xE2D1,\n\t24204 - 11905: 0x8EDE,\n\t24205 - 11905: 0x8EDF,\n\t24206 - 11905: 0x8EE0,\n\t24207 - 11905: 0xD0F2,\n\t24208 - 11905: 0xC2AE,\n\t24209 - 11905: 0xE2D0,\n\t24210 - 11905: 0x8EE1,\n\t24211 - 11905: 0xBFE2,\n\t24212 - 11905: 0xD3A6,\n\t24213 - 11905: 0xB5D7,\n\t24214 - 11905: 0xE2D2,\n\t24215 - 11905: 0xB5EA,\n\t24216 - 11905: 0x8EE2,\n\t24217 - 11905: 0xC3ED,\n\t24218 - 11905: 0xB8FD,\n\t24219 - 11905: 0x8EE3,\n\t24220 - 11905: 0xB8AE,\n\t24221 - 11905: 0x8EE4,\n\t24222 - 11905: 0xC5D3,\n\t24223 - 11905: 0xB7CF,\n\t24224 - 11905: 0xE2D4,\n\t24225 - 11905: 0x8EE5,\n\t24226 - 11905: 0x8EE6,\n\t24227 - 11905: 0x8EE7,\n\t24228 - 11905: 0x8EE8,\n\t24229 - 11905: 0xE2D3,\n\t24230 - 11905: 0xB6C8,\n\t24231 - 11905: 0xD7F9,\n\t24232 - 11905: 0x8EE9,\n\t24233 - 11905: 0x8EEA,\n\t24234 - 11905: 0x8EEB,\n\t24235 - 11905: 0x8EEC,\n\t24236 - 11905: 0x8EED,\n\t24237 - 11905: 0xCDA5,\n\t24238 - 11905: 0x8EEE,\n\t24239 - 11905: 0x8EEF,\n\t24240 - 11905: 0x8EF0,\n\t24241 - 11905: 0x8EF1,\n\t24242 - 11905: 0x8EF2,\n\t24243 - 11905: 0xE2D8,\n\t24244 - 11905: 0x8EF3,\n\t24245 - 11905: 0xE2D6,\n\t24246 - 11905: 0xCAFC,\n\t24247 - 11905: 0xBFB5,\n\t24248 - 11905: 0xD3B9,\n\t24249 - 11905: 0xE2D5,\n\t24250 - 11905: 0x8EF4,\n\t24251 - 11905: 0x8EF5,\n\t24252 - 11905: 0x8EF6,\n\t24253 - 11905: 0x8EF7,\n\t24254 - 11905: 0xE2D7,\n\t24255 - 11905: 0x8EF8,\n\t24256 - 11905: 0x8EF9,\n\t24257 - 11905: 0x8EFA,\n\t24258 - 11905: 0x8EFB,\n\t24259 - 11905: 0x8EFC,\n\t24260 - 11905: 0x8EFD,\n\t24261 - 11905: 0x8EFE,\n\t24262 - 11905: 0x8F40,\n\t24263 - 11905: 0x8F41,\n\t24264 - 11905: 0x8F42,\n\t24265 - 11905: 0xC1AE,\n\t24266 - 11905: 0xC0C8,\n\t24267 - 11905: 0x8F43,\n\t24268 - 11905: 0x8F44,\n\t24269 - 11905: 0x8F45,\n\t24270 - 11905: 0x8F46,\n\t24271 - 11905: 0x8F47,\n\t24272 - 11905: 0x8F48,\n\t24273 - 11905: 0xE2DB,\n\t24274 - 11905: 0xE2DA,\n\t24275 - 11905: 0xC0AA,\n\t24276 - 11905: 0x8F49,\n\t24277 - 11905: 0x8F4A,\n\t24278 - 11905: 0xC1CE,\n\t24279 - 11905: 0x8F4B,\n\t24280 - 11905: 0x8F4C,\n\t24281 - 11905: 0x8F4D,\n\t24282 - 11905: 0x8F4E,\n\t24283 - 11905: 0xE2DC,\n\t24284 - 11905: 0x8F4F,\n\t24285 - 11905: 0x8F50,\n\t24286 - 11905: 0x8F51,\n\t24287 - 11905: 0x8F52,\n\t24288 - 11905: 0x8F53,\n\t24289 - 11905: 0x8F54,\n\t24290 - 11905: 0x8F55,\n\t24291 - 11905: 0x8F56,\n\t24292 - 11905: 0x8F57,\n\t24293 - 11905: 0x8F58,\n\t24294 - 11905: 0x8F59,\n\t24295 - 11905: 0x8F5A,\n\t24296 - 11905: 0xE2DD,\n\t24297 - 11905: 0x8F5B,\n\t24298 - 11905: 0xE2DE,\n\t24299 - 11905: 0x8F5C,\n\t24300 - 11905: 0x8F5D,\n\t24301 - 11905: 0x8F5E,\n\t24302 - 11905: 0x8F5F,\n\t24303 - 11905: 0x8F60,\n\t24304 - 11905: 0x8F61,\n\t24305 - 11905: 0x8F62,\n\t24306 - 11905: 0x8F63,\n\t24307 - 11905: 0x8F64,\n\t24308 - 11905: 0xDBC8,\n\t24309 - 11905: 0x8F65,\n\t24310 - 11905: 0xD1D3,\n\t24311 - 11905: 0xCDA2,\n\t24312 - 11905: 0x8F66,\n\t24313 - 11905: 0x8F67,\n\t24314 - 11905: 0xBDA8,\n\t24315 - 11905: 0x8F68,\n\t24316 - 11905: 0x8F69,\n\t24317 - 11905: 0x8F6A,\n\t24318 - 11905: 0xDEC3,\n\t24319 - 11905: 0xD8A5,\n\t24320 - 11905: 0xBFAA,\n\t24321 - 11905: 0xDBCD,\n\t24322 - 11905: 0xD2EC,\n\t24323 - 11905: 0xC6FA,\n\t24324 - 11905: 0xC5AA,\n\t24325 - 11905: 0x8F6B,\n\t24326 - 11905: 0x8F6C,\n\t24327 - 11905: 0x8F6D,\n\t24328 - 11905: 0xDEC4,\n\t24329 - 11905: 0x8F6E,\n\t24330 - 11905: 0xB1D7,\n\t24331 - 11905: 0xDFAE,\n\t24332 - 11905: 0x8F6F,\n\t24333 - 11905: 0x8F70,\n\t24334 - 11905: 0x8F71,\n\t24335 - 11905: 0xCABD,\n\t24336 - 11905: 0x8F72,\n\t24337 - 11905: 0xDFB1,\n\t24338 - 11905: 0x8F73,\n\t24339 - 11905: 0xB9AD,\n\t24340 - 11905: 0x8F74,\n\t24341 - 11905: 0xD2FD,\n\t24342 - 11905: 0x8F75,\n\t24343 - 11905: 0xB8A5,\n\t24344 - 11905: 0xBAEB,\n\t24345 - 11905: 0x8F76,\n\t24346 - 11905: 0x8F77,\n\t24347 - 11905: 0xB3DA,\n\t24348 - 11905: 0x8F78,\n\t24349 - 11905: 0x8F79,\n\t24350 - 11905: 0x8F7A,\n\t24351 - 11905: 0xB5DC,\n\t24352 - 11905: 0xD5C5,\n\t24353 - 11905: 0x8F7B,\n\t24354 - 11905: 0x8F7C,\n\t24355 - 11905: 0x8F7D,\n\t24356 - 11905: 0x8F7E,\n\t24357 - 11905: 0xC3D6,\n\t24358 - 11905: 0xCFD2,\n\t24359 - 11905: 0xBBA1,\n\t24360 - 11905: 0x8F80,\n\t24361 - 11905: 0xE5F3,\n\t24362 - 11905: 0xE5F2,\n\t24363 - 11905: 0x8F81,\n\t24364 - 11905: 0x8F82,\n\t24365 - 11905: 0xE5F4,\n\t24366 - 11905: 0x8F83,\n\t24367 - 11905: 0xCDE4,\n\t24368 - 11905: 0x8F84,\n\t24369 - 11905: 0xC8F5,\n\t24370 - 11905: 0x8F85,\n\t24371 - 11905: 0x8F86,\n\t24372 - 11905: 0x8F87,\n\t24373 - 11905: 0x8F88,\n\t24374 - 11905: 0x8F89,\n\t24375 - 11905: 0x8F8A,\n\t24376 - 11905: 0x8F8B,\n\t24377 - 11905: 0xB5AF,\n\t24378 - 11905: 0xC7BF,\n\t24379 - 11905: 0x8F8C,\n\t24380 - 11905: 0xE5F6,\n\t24381 - 11905: 0x8F8D,\n\t24382 - 11905: 0x8F8E,\n\t24383 - 11905: 0x8F8F,\n\t24384 - 11905: 0xECB0,\n\t24385 - 11905: 0x8F90,\n\t24386 - 11905: 0x8F91,\n\t24387 - 11905: 0x8F92,\n\t24388 - 11905: 0x8F93,\n\t24389 - 11905: 0x8F94,\n\t24390 - 11905: 0x8F95,\n\t24391 - 11905: 0x8F96,\n\t24392 - 11905: 0x8F97,\n\t24393 - 11905: 0x8F98,\n\t24394 - 11905: 0x8F99,\n\t24395 - 11905: 0x8F9A,\n\t24396 - 11905: 0x8F9B,\n\t24397 - 11905: 0x8F9C,\n\t24398 - 11905: 0x8F9D,\n\t24399 - 11905: 0x8F9E,\n\t24400 - 11905: 0xE5E6,\n\t24401 - 11905: 0x8F9F,\n\t24402 - 11905: 0xB9E9,\n\t24403 - 11905: 0xB5B1,\n\t24404 - 11905: 0x8FA0,\n\t24405 - 11905: 0xC2BC,\n\t24406 - 11905: 0xE5E8,\n\t24407 - 11905: 0xE5E7,\n\t24408 - 11905: 0xE5E9,\n\t24409 - 11905: 0x8FA1,\n\t24410 - 11905: 0x8FA2,\n\t24411 - 11905: 0x8FA3,\n\t24412 - 11905: 0x8FA4,\n\t24413 - 11905: 0xD2CD,\n\t24414 - 11905: 0x8FA5,\n\t24415 - 11905: 0x8FA6,\n\t24416 - 11905: 0x8FA7,\n\t24417 - 11905: 0xE1EA,\n\t24418 - 11905: 0xD0CE,\n\t24419 - 11905: 0x8FA8,\n\t24420 - 11905: 0xCDAE,\n\t24421 - 11905: 0x8FA9,\n\t24422 - 11905: 0xD1E5,\n\t24423 - 11905: 0x8FAA,\n\t24424 - 11905: 0x8FAB,\n\t24425 - 11905: 0xB2CA,\n\t24426 - 11905: 0xB1EB,\n\t24427 - 11905: 0x8FAC,\n\t24428 - 11905: 0xB1F2,\n\t24429 - 11905: 0xC5ED,\n\t24430 - 11905: 0x8FAD,\n\t24431 - 11905: 0x8FAE,\n\t24432 - 11905: 0xD5C3,\n\t24433 - 11905: 0xD3B0,\n\t24434 - 11905: 0x8FAF,\n\t24435 - 11905: 0xE1DC,\n\t24436 - 11905: 0x8FB0,\n\t24437 - 11905: 0x8FB1,\n\t24438 - 11905: 0x8FB2,\n\t24439 - 11905: 0xE1DD,\n\t24440 - 11905: 0x8FB3,\n\t24441 - 11905: 0xD2DB,\n\t24442 - 11905: 0x8FB4,\n\t24443 - 11905: 0xB3B9,\n\t24444 - 11905: 0xB1CB,\n\t24445 - 11905: 0x8FB5,\n\t24446 - 11905: 0x8FB6,\n\t24447 - 11905: 0x8FB7,\n\t24448 - 11905: 0xCDF9,\n\t24449 - 11905: 0xD5F7,\n\t24450 - 11905: 0xE1DE,\n\t24451 - 11905: 0x8FB8,\n\t24452 - 11905: 0xBEB6,\n\t24453 - 11905: 0xB4FD,\n\t24454 - 11905: 0x8FB9,\n\t24455 - 11905: 0xE1DF,\n\t24456 - 11905: 0xBADC,\n\t24457 - 11905: 0xE1E0,\n\t24458 - 11905: 0xBBB2,\n\t24459 - 11905: 0xC2C9,\n\t24460 - 11905: 0xE1E1,\n\t24461 - 11905: 0x8FBA,\n\t24462 - 11905: 0x8FBB,\n\t24463 - 11905: 0x8FBC,\n\t24464 - 11905: 0xD0EC,\n\t24465 - 11905: 0x8FBD,\n\t24466 - 11905: 0xCDBD,\n\t24467 - 11905: 0x8FBE,\n\t24468 - 11905: 0x8FBF,\n\t24469 - 11905: 0xE1E2,\n\t24470 - 11905: 0x8FC0,\n\t24471 - 11905: 0xB5C3,\n\t24472 - 11905: 0xC5C7,\n\t24473 - 11905: 0xE1E3,\n\t24474 - 11905: 0x8FC1,\n\t24475 - 11905: 0x8FC2,\n\t24476 - 11905: 0xE1E4,\n\t24477 - 11905: 0x8FC3,\n\t24478 - 11905: 0x8FC4,\n\t24479 - 11905: 0x8FC5,\n\t24480 - 11905: 0x8FC6,\n\t24481 - 11905: 0xD3F9,\n\t24482 - 11905: 0x8FC7,\n\t24483 - 11905: 0x8FC8,\n\t24484 - 11905: 0x8FC9,\n\t24485 - 11905: 0x8FCA,\n\t24486 - 11905: 0x8FCB,\n\t24487 - 11905: 0x8FCC,\n\t24488 - 11905: 0xE1E5,\n\t24489 - 11905: 0x8FCD,\n\t24490 - 11905: 0xD1AD,\n\t24491 - 11905: 0x8FCE,\n\t24492 - 11905: 0x8FCF,\n\t24493 - 11905: 0xE1E6,\n\t24494 - 11905: 0xCEA2,\n\t24495 - 11905: 0x8FD0,\n\t24496 - 11905: 0x8FD1,\n\t24497 - 11905: 0x8FD2,\n\t24498 - 11905: 0x8FD3,\n\t24499 - 11905: 0x8FD4,\n\t24500 - 11905: 0x8FD5,\n\t24501 - 11905: 0xE1E7,\n\t24502 - 11905: 0x8FD6,\n\t24503 - 11905: 0xB5C2,\n\t24504 - 11905: 0x8FD7,\n\t24505 - 11905: 0x8FD8,\n\t24506 - 11905: 0x8FD9,\n\t24507 - 11905: 0x8FDA,\n\t24508 - 11905: 0xE1E8,\n\t24509 - 11905: 0xBBD5,\n\t24510 - 11905: 0x8FDB,\n\t24511 - 11905: 0x8FDC,\n\t24512 - 11905: 0x8FDD,\n\t24513 - 11905: 0x8FDE,\n\t24514 - 11905: 0x8FDF,\n\t24515 - 11905: 0xD0C4,\n\t24516 - 11905: 0xE2E0,\n\t24517 - 11905: 0xB1D8,\n\t24518 - 11905: 0xD2E4,\n\t24519 - 11905: 0x8FE0,\n\t24520 - 11905: 0x8FE1,\n\t24521 - 11905: 0xE2E1,\n\t24522 - 11905: 0x8FE2,\n\t24523 - 11905: 0x8FE3,\n\t24524 - 11905: 0xBCC9,\n\t24525 - 11905: 0xC8CC,\n\t24526 - 11905: 0x8FE4,\n\t24527 - 11905: 0xE2E3,\n\t24528 - 11905: 0xECFE,\n\t24529 - 11905: 0xECFD,\n\t24530 - 11905: 0xDFAF,\n\t24531 - 11905: 0x8FE5,\n\t24532 - 11905: 0x8FE6,\n\t24533 - 11905: 0x8FE7,\n\t24534 - 11905: 0xE2E2,\n\t24535 - 11905: 0xD6BE,\n\t24536 - 11905: 0xCDFC,\n\t24537 - 11905: 0xC3A6,\n\t24538 - 11905: 0x8FE8,\n\t24539 - 11905: 0x8FE9,\n\t24540 - 11905: 0x8FEA,\n\t24541 - 11905: 0xE3C3,\n\t24542 - 11905: 0x8FEB,\n\t24543 - 11905: 0x8FEC,\n\t24544 - 11905: 0xD6D2,\n\t24545 - 11905: 0xE2E7,\n\t24546 - 11905: 0x8FED,\n\t24547 - 11905: 0x8FEE,\n\t24548 - 11905: 0xE2E8,\n\t24549 - 11905: 0x8FEF,\n\t24550 - 11905: 0x8FF0,\n\t24551 - 11905: 0xD3C7,\n\t24552 - 11905: 0x8FF1,\n\t24553 - 11905: 0x8FF2,\n\t24554 - 11905: 0xE2EC,\n\t24555 - 11905: 0xBFEC,\n\t24556 - 11905: 0x8FF3,\n\t24557 - 11905: 0xE2ED,\n\t24558 - 11905: 0xE2E5,\n\t24559 - 11905: 0x8FF4,\n\t24560 - 11905: 0x8FF5,\n\t24561 - 11905: 0xB3C0,\n\t24562 - 11905: 0x8FF6,\n\t24563 - 11905: 0x8FF7,\n\t24564 - 11905: 0x8FF8,\n\t24565 - 11905: 0xC4EE,\n\t24566 - 11905: 0x8FF9,\n\t24567 - 11905: 0x8FFA,\n\t24568 - 11905: 0xE2EE,\n\t24569 - 11905: 0x8FFB,\n\t24570 - 11905: 0x8FFC,\n\t24571 - 11905: 0xD0C3,\n\t24572 - 11905: 0x8FFD,\n\t24573 - 11905: 0xBAF6,\n\t24574 - 11905: 0xE2E9,\n\t24575 - 11905: 0xB7DE,\n\t24576 - 11905: 0xBBB3,\n\t24577 - 11905: 0xCCAC,\n\t24578 - 11905: 0xCBCB,\n\t24579 - 11905: 0xE2E4,\n\t24580 - 11905: 0xE2E6,\n\t24581 - 11905: 0xE2EA,\n\t24582 - 11905: 0xE2EB,\n\t24583 - 11905: 0x8FFE,\n\t24584 - 11905: 0x9040,\n\t24585 - 11905: 0x9041,\n\t24586 - 11905: 0xE2F7,\n\t24587 - 11905: 0x9042,\n\t24588 - 11905: 0x9043,\n\t24589 - 11905: 0xE2F4,\n\t24590 - 11905: 0xD4F5,\n\t24591 - 11905: 0xE2F3,\n\t24592 - 11905: 0x9044,\n\t24593 - 11905: 0x9045,\n\t24594 - 11905: 0xC5AD,\n\t24595 - 11905: 0x9046,\n\t24596 - 11905: 0xD5FA,\n\t24597 - 11905: 0xC5C2,\n\t24598 - 11905: 0xB2C0,\n\t24599 - 11905: 0x9047,\n\t24600 - 11905: 0x9048,\n\t24601 - 11905: 0xE2EF,\n\t24602 - 11905: 0x9049,\n\t24603 - 11905: 0xE2F2,\n\t24604 - 11905: 0xC1AF,\n\t24605 - 11905: 0xCBBC,\n\t24606 - 11905: 0x904A,\n\t24607 - 11905: 0x904B,\n\t24608 - 11905: 0xB5A1,\n\t24609 - 11905: 0xE2F9,\n\t24610 - 11905: 0x904C,\n\t24611 - 11905: 0x904D,\n\t24612 - 11905: 0x904E,\n\t24613 - 11905: 0xBCB1,\n\t24614 - 11905: 0xE2F1,\n\t24615 - 11905: 0xD0D4,\n\t24616 - 11905: 0xD4B9,\n\t24617 - 11905: 0xE2F5,\n\t24618 - 11905: 0xB9D6,\n\t24619 - 11905: 0xE2F6,\n\t24620 - 11905: 0x904F,\n\t24621 - 11905: 0x9050,\n\t24622 - 11905: 0x9051,\n\t24623 - 11905: 0xC7D3,\n\t24624 - 11905: 0x9052,\n\t24625 - 11905: 0x9053,\n\t24626 - 11905: 0x9054,\n\t24627 - 11905: 0x9055,\n\t24628 - 11905: 0x9056,\n\t24629 - 11905: 0xE2F0,\n\t24630 - 11905: 0x9057,\n\t24631 - 11905: 0x9058,\n\t24632 - 11905: 0x9059,\n\t24633 - 11905: 0x905A,\n\t24634 - 11905: 0x905B,\n\t24635 - 11905: 0xD7DC,\n\t24636 - 11905: 0xEDA1,\n\t24637 - 11905: 0x905C,\n\t24638 - 11905: 0x905D,\n\t24639 - 11905: 0xE2F8,\n\t24640 - 11905: 0x905E,\n\t24641 - 11905: 0xEDA5,\n\t24642 - 11905: 0xE2FE,\n\t24643 - 11905: 0xCAD1,\n\t24644 - 11905: 0x905F,\n\t24645 - 11905: 0x9060,\n\t24646 - 11905: 0x9061,\n\t24647 - 11905: 0x9062,\n\t24648 - 11905: 0x9063,\n\t24649 - 11905: 0x9064,\n\t24650 - 11905: 0x9065,\n\t24651 - 11905: 0xC1B5,\n\t24652 - 11905: 0x9066,\n\t24653 - 11905: 0xBBD0,\n\t24654 - 11905: 0x9067,\n\t24655 - 11905: 0x9068,\n\t24656 - 11905: 0xBFD6,\n\t24657 - 11905: 0x9069,\n\t24658 - 11905: 0xBAE3,\n\t24659 - 11905: 0x906A,\n\t24660 - 11905: 0x906B,\n\t24661 - 11905: 0xCBA1,\n\t24662 - 11905: 0x906C,\n\t24663 - 11905: 0x906D,\n\t24664 - 11905: 0x906E,\n\t24665 - 11905: 0xEDA6,\n\t24666 - 11905: 0xEDA3,\n\t24667 - 11905: 0x906F,\n\t24668 - 11905: 0x9070,\n\t24669 - 11905: 0xEDA2,\n\t24670 - 11905: 0x9071,\n\t24671 - 11905: 0x9072,\n\t24672 - 11905: 0x9073,\n\t24673 - 11905: 0x9074,\n\t24674 - 11905: 0xBBD6,\n\t24675 - 11905: 0xEDA7,\n\t24676 - 11905: 0xD0F4,\n\t24677 - 11905: 0x9075,\n\t24678 - 11905: 0x9076,\n\t24679 - 11905: 0xEDA4,\n\t24680 - 11905: 0xBADE,\n\t24681 - 11905: 0xB6F7,\n\t24682 - 11905: 0xE3A1,\n\t24683 - 11905: 0xB6B2,\n\t24684 - 11905: 0xCCF1,\n\t24685 - 11905: 0xB9A7,\n\t24686 - 11905: 0x9077,\n\t24687 - 11905: 0xCFA2,\n\t24688 - 11905: 0xC7A1,\n\t24689 - 11905: 0x9078,\n\t24690 - 11905: 0x9079,\n\t24691 - 11905: 0xBFD2,\n\t24692 - 11905: 0x907A,\n\t24693 - 11905: 0x907B,\n\t24694 - 11905: 0xB6F1,\n\t24695 - 11905: 0x907C,\n\t24696 - 11905: 0xE2FA,\n\t24697 - 11905: 0xE2FB,\n\t24698 - 11905: 0xE2FD,\n\t24699 - 11905: 0xE2FC,\n\t24700 - 11905: 0xC4D5,\n\t24701 - 11905: 0xE3A2,\n\t24702 - 11905: 0x907D,\n\t24703 - 11905: 0xD3C1,\n\t24704 - 11905: 0x907E,\n\t24705 - 11905: 0x9080,\n\t24706 - 11905: 0x9081,\n\t24707 - 11905: 0xE3A7,\n\t24708 - 11905: 0xC7C4,\n\t24709 - 11905: 0x9082,\n\t24710 - 11905: 0x9083,\n\t24711 - 11905: 0x9084,\n\t24712 - 11905: 0x9085,\n\t24713 - 11905: 0xCFA4,\n\t24714 - 11905: 0x9086,\n\t24715 - 11905: 0x9087,\n\t24716 - 11905: 0xE3A9,\n\t24717 - 11905: 0xBAB7,\n\t24718 - 11905: 0x9088,\n\t24719 - 11905: 0x9089,\n\t24720 - 11905: 0x908A,\n\t24721 - 11905: 0x908B,\n\t24722 - 11905: 0xE3A8,\n\t24723 - 11905: 0x908C,\n\t24724 - 11905: 0xBBDA,\n\t24725 - 11905: 0x908D,\n\t24726 - 11905: 0xE3A3,\n\t24727 - 11905: 0x908E,\n\t24728 - 11905: 0x908F,\n\t24729 - 11905: 0x9090,\n\t24730 - 11905: 0xE3A4,\n\t24731 - 11905: 0xE3AA,\n\t24732 - 11905: 0x9091,\n\t24733 - 11905: 0xE3A6,\n\t24734 - 11905: 0x9092,\n\t24735 - 11905: 0xCEF2,\n\t24736 - 11905: 0xD3C6,\n\t24737 - 11905: 0x9093,\n\t24738 - 11905: 0x9094,\n\t24739 - 11905: 0xBBBC,\n\t24740 - 11905: 0x9095,\n\t24741 - 11905: 0x9096,\n\t24742 - 11905: 0xD4C3,\n\t24743 - 11905: 0x9097,\n\t24744 - 11905: 0xC4FA,\n\t24745 - 11905: 0x9098,\n\t24746 - 11905: 0x9099,\n\t24747 - 11905: 0xEDA8,\n\t24748 - 11905: 0xD0FC,\n\t24749 - 11905: 0xE3A5,\n\t24750 - 11905: 0x909A,\n\t24751 - 11905: 0xC3F5,\n\t24752 - 11905: 0x909B,\n\t24753 - 11905: 0xE3AD,\n\t24754 - 11905: 0xB1AF,\n\t24755 - 11905: 0x909C,\n\t24756 - 11905: 0xE3B2,\n\t24757 - 11905: 0x909D,\n\t24758 - 11905: 0x909E,\n\t24759 - 11905: 0x909F,\n\t24760 - 11905: 0xBCC2,\n\t24761 - 11905: 0x90A0,\n\t24762 - 11905: 0x90A1,\n\t24763 - 11905: 0xE3AC,\n\t24764 - 11905: 0xB5BF,\n\t24765 - 11905: 0x90A2,\n\t24766 - 11905: 0x90A3,\n\t24767 - 11905: 0x90A4,\n\t24768 - 11905: 0x90A5,\n\t24769 - 11905: 0x90A6,\n\t24770 - 11905: 0x90A7,\n\t24771 - 11905: 0x90A8,\n\t24772 - 11905: 0x90A9,\n\t24773 - 11905: 0xC7E9,\n\t24774 - 11905: 0xE3B0,\n\t24775 - 11905: 0x90AA,\n\t24776 - 11905: 0x90AB,\n\t24777 - 11905: 0x90AC,\n\t24778 - 11905: 0xBEAA,\n\t24779 - 11905: 0xCDEF,\n\t24780 - 11905: 0x90AD,\n\t24781 - 11905: 0x90AE,\n\t24782 - 11905: 0x90AF,\n\t24783 - 11905: 0x90B0,\n\t24784 - 11905: 0x90B1,\n\t24785 - 11905: 0xBBF3,\n\t24786 - 11905: 0x90B2,\n\t24787 - 11905: 0x90B3,\n\t24788 - 11905: 0x90B4,\n\t24789 - 11905: 0xCCE8,\n\t24790 - 11905: 0x90B5,\n\t24791 - 11905: 0x90B6,\n\t24792 - 11905: 0xE3AF,\n\t24793 - 11905: 0x90B7,\n\t24794 - 11905: 0xE3B1,\n\t24795 - 11905: 0x90B8,\n\t24796 - 11905: 0xCFA7,\n\t24797 - 11905: 0xE3AE,\n\t24798 - 11905: 0x90B9,\n\t24799 - 11905: 0xCEA9,\n\t24800 - 11905: 0xBBDD,\n\t24801 - 11905: 0x90BA,\n\t24802 - 11905: 0x90BB,\n\t24803 - 11905: 0x90BC,\n\t24804 - 11905: 0x90BD,\n\t24805 - 11905: 0x90BE,\n\t24806 - 11905: 0xB5EB,\n\t24807 - 11905: 0xBEE5,\n\t24808 - 11905: 0xB2D2,\n\t24809 - 11905: 0xB3CD,\n\t24810 - 11905: 0x90BF,\n\t24811 - 11905: 0xB1B9,\n\t24812 - 11905: 0xE3AB,\n\t24813 - 11905: 0xB2D1,\n\t24814 - 11905: 0xB5AC,\n\t24815 - 11905: 0xB9DF,\n\t24816 - 11905: 0xB6E8,\n\t24817 - 11905: 0x90C0,\n\t24818 - 11905: 0x90C1,\n\t24819 - 11905: 0xCFEB,\n\t24820 - 11905: 0xE3B7,\n\t24821 - 11905: 0x90C2,\n\t24822 - 11905: 0xBBCC,\n\t24823 - 11905: 0x90C3,\n\t24824 - 11905: 0x90C4,\n\t24825 - 11905: 0xC8C7,\n\t24826 - 11905: 0xD0CA,\n\t24827 - 11905: 0x90C5,\n\t24828 - 11905: 0x90C6,\n\t24829 - 11905: 0x90C7,\n\t24830 - 11905: 0x90C8,\n\t24831 - 11905: 0x90C9,\n\t24832 - 11905: 0xE3B8,\n\t24833 - 11905: 0xB3EE,\n\t24834 - 11905: 0x90CA,\n\t24835 - 11905: 0x90CB,\n\t24836 - 11905: 0x90CC,\n\t24837 - 11905: 0x90CD,\n\t24838 - 11905: 0xEDA9,\n\t24839 - 11905: 0x90CE,\n\t24840 - 11905: 0xD3FA,\n\t24841 - 11905: 0xD3E4,\n\t24842 - 11905: 0x90CF,\n\t24843 - 11905: 0x90D0,\n\t24844 - 11905: 0x90D1,\n\t24845 - 11905: 0xEDAA,\n\t24846 - 11905: 0xE3B9,\n\t24847 - 11905: 0xD2E2,\n\t24848 - 11905: 0x90D2,\n\t24849 - 11905: 0x90D3,\n\t24850 - 11905: 0x90D4,\n\t24851 - 11905: 0x90D5,\n\t24852 - 11905: 0x90D6,\n\t24853 - 11905: 0xE3B5,\n\t24854 - 11905: 0x90D7,\n\t24855 - 11905: 0x90D8,\n\t24856 - 11905: 0x90D9,\n\t24857 - 11905: 0x90DA,\n\t24858 - 11905: 0xD3DE,\n\t24859 - 11905: 0x90DB,\n\t24860 - 11905: 0x90DC,\n\t24861 - 11905: 0x90DD,\n\t24862 - 11905: 0x90DE,\n\t24863 - 11905: 0xB8D0,\n\t24864 - 11905: 0xE3B3,\n\t24865 - 11905: 0x90DF,\n\t24866 - 11905: 0x90E0,\n\t24867 - 11905: 0xE3B6,\n\t24868 - 11905: 0xB7DF,\n\t24869 - 11905: 0x90E1,\n\t24870 - 11905: 0xE3B4,\n\t24871 - 11905: 0xC0A2,\n\t24872 - 11905: 0x90E2,\n\t24873 - 11905: 0x90E3,\n\t24874 - 11905: 0x90E4,\n\t24875 - 11905: 0xE3BA,\n\t24876 - 11905: 0x90E5,\n\t24877 - 11905: 0x90E6,\n\t24878 - 11905: 0x90E7,\n\t24879 - 11905: 0x90E8,\n\t24880 - 11905: 0x90E9,\n\t24881 - 11905: 0x90EA,\n\t24882 - 11905: 0x90EB,\n\t24883 - 11905: 0x90EC,\n\t24884 - 11905: 0x90ED,\n\t24885 - 11905: 0x90EE,\n\t24886 - 11905: 0x90EF,\n\t24887 - 11905: 0x90F0,\n\t24888 - 11905: 0x90F1,\n\t24889 - 11905: 0x90F2,\n\t24890 - 11905: 0x90F3,\n\t24891 - 11905: 0x90F4,\n\t24892 - 11905: 0x90F5,\n\t24893 - 11905: 0x90F6,\n\t24894 - 11905: 0x90F7,\n\t24895 - 11905: 0xD4B8,\n\t24896 - 11905: 0x90F8,\n\t24897 - 11905: 0x90F9,\n\t24898 - 11905: 0x90FA,\n\t24899 - 11905: 0x90FB,\n\t24900 - 11905: 0x90FC,\n\t24901 - 11905: 0x90FD,\n\t24902 - 11905: 0x90FE,\n\t24903 - 11905: 0x9140,\n\t24904 - 11905: 0xB4C8,\n\t24905 - 11905: 0x9141,\n\t24906 - 11905: 0xE3BB,\n\t24907 - 11905: 0x9142,\n\t24908 - 11905: 0xBBC5,\n\t24909 - 11905: 0x9143,\n\t24910 - 11905: 0xC9F7,\n\t24911 - 11905: 0x9144,\n\t24912 - 11905: 0x9145,\n\t24913 - 11905: 0xC9E5,\n\t24914 - 11905: 0x9146,\n\t24915 - 11905: 0x9147,\n\t24916 - 11905: 0x9148,\n\t24917 - 11905: 0xC4BD,\n\t24918 - 11905: 0x9149,\n\t24919 - 11905: 0x914A,\n\t24920 - 11905: 0x914B,\n\t24921 - 11905: 0x914C,\n\t24922 - 11905: 0x914D,\n\t24923 - 11905: 0x914E,\n\t24924 - 11905: 0x914F,\n\t24925 - 11905: 0xEDAB,\n\t24926 - 11905: 0x9150,\n\t24927 - 11905: 0x9151,\n\t24928 - 11905: 0x9152,\n\t24929 - 11905: 0x9153,\n\t24930 - 11905: 0xC2FD,\n\t24931 - 11905: 0x9154,\n\t24932 - 11905: 0x9155,\n\t24933 - 11905: 0x9156,\n\t24934 - 11905: 0x9157,\n\t24935 - 11905: 0xBBDB,\n\t24936 - 11905: 0xBFAE,\n\t24937 - 11905: 0x9158,\n\t24938 - 11905: 0x9159,\n\t24939 - 11905: 0x915A,\n\t24940 - 11905: 0x915B,\n\t24941 - 11905: 0x915C,\n\t24942 - 11905: 0x915D,\n\t24943 - 11905: 0x915E,\n\t24944 - 11905: 0xCEBF,\n\t24945 - 11905: 0x915F,\n\t24946 - 11905: 0x9160,\n\t24947 - 11905: 0x9161,\n\t24948 - 11905: 0x9162,\n\t24949 - 11905: 0xE3BC,\n\t24950 - 11905: 0x9163,\n\t24951 - 11905: 0xBFB6,\n\t24952 - 11905: 0x9164,\n\t24953 - 11905: 0x9165,\n\t24954 - 11905: 0x9166,\n\t24955 - 11905: 0x9167,\n\t24956 - 11905: 0x9168,\n\t24957 - 11905: 0x9169,\n\t24958 - 11905: 0x916A,\n\t24959 - 11905: 0x916B,\n\t24960 - 11905: 0x916C,\n\t24961 - 11905: 0x916D,\n\t24962 - 11905: 0x916E,\n\t24963 - 11905: 0x916F,\n\t24964 - 11905: 0x9170,\n\t24965 - 11905: 0x9171,\n\t24966 - 11905: 0x9172,\n\t24967 - 11905: 0x9173,\n\t24968 - 11905: 0x9174,\n\t24969 - 11905: 0x9175,\n\t24970 - 11905: 0x9176,\n\t24971 - 11905: 0xB1EF,\n\t24972 - 11905: 0x9177,\n\t24973 - 11905: 0x9178,\n\t24974 - 11905: 0xD4F7,\n\t24975 - 11905: 0x9179,\n\t24976 - 11905: 0x917A,\n\t24977 - 11905: 0x917B,\n\t24978 - 11905: 0x917C,\n\t24979 - 11905: 0x917D,\n\t24980 - 11905: 0xE3BE,\n\t24981 - 11905: 0x917E,\n\t24982 - 11905: 0x9180,\n\t24983 - 11905: 0x9181,\n\t24984 - 11905: 0x9182,\n\t24985 - 11905: 0x9183,\n\t24986 - 11905: 0x9184,\n\t24987 - 11905: 0x9185,\n\t24988 - 11905: 0x9186,\n\t24989 - 11905: 0xEDAD,\n\t24990 - 11905: 0x9187,\n\t24991 - 11905: 0x9188,\n\t24992 - 11905: 0x9189,\n\t24993 - 11905: 0x918A,\n\t24994 - 11905: 0x918B,\n\t24995 - 11905: 0x918C,\n\t24996 - 11905: 0x918D,\n\t24997 - 11905: 0x918E,\n\t24998 - 11905: 0x918F,\n\t24999 - 11905: 0xE3BF,\n\t25000 - 11905: 0xBAA9,\n\t25001 - 11905: 0xEDAC,\n\t25002 - 11905: 0x9190,\n\t25003 - 11905: 0x9191,\n\t25004 - 11905: 0xE3BD,\n\t25005 - 11905: 0x9192,\n\t25006 - 11905: 0x9193,\n\t25007 - 11905: 0x9194,\n\t25008 - 11905: 0x9195,\n\t25009 - 11905: 0x9196,\n\t25010 - 11905: 0x9197,\n\t25011 - 11905: 0x9198,\n\t25012 - 11905: 0x9199,\n\t25013 - 11905: 0x919A,\n\t25014 - 11905: 0x919B,\n\t25015 - 11905: 0xE3C0,\n\t25016 - 11905: 0x919C,\n\t25017 - 11905: 0x919D,\n\t25018 - 11905: 0x919E,\n\t25019 - 11905: 0x919F,\n\t25020 - 11905: 0x91A0,\n\t25021 - 11905: 0x91A1,\n\t25022 - 11905: 0xBAB6,\n\t25023 - 11905: 0x91A2,\n\t25024 - 11905: 0x91A3,\n\t25025 - 11905: 0x91A4,\n\t25026 - 11905: 0xB6AE,\n\t25027 - 11905: 0x91A5,\n\t25028 - 11905: 0x91A6,\n\t25029 - 11905: 0x91A7,\n\t25030 - 11905: 0x91A8,\n\t25031 - 11905: 0x91A9,\n\t25032 - 11905: 0xD0B8,\n\t25033 - 11905: 0x91AA,\n\t25034 - 11905: 0xB0C3,\n\t25035 - 11905: 0xEDAE,\n\t25036 - 11905: 0x91AB,\n\t25037 - 11905: 0x91AC,\n\t25038 - 11905: 0x91AD,\n\t25039 - 11905: 0x91AE,\n\t25040 - 11905: 0x91AF,\n\t25041 - 11905: 0xEDAF,\n\t25042 - 11905: 0xC0C1,\n\t25043 - 11905: 0x91B0,\n\t25044 - 11905: 0xE3C1,\n\t25045 - 11905: 0x91B1,\n\t25046 - 11905: 0x91B2,\n\t25047 - 11905: 0x91B3,\n\t25048 - 11905: 0x91B4,\n\t25049 - 11905: 0x91B5,\n\t25050 - 11905: 0x91B6,\n\t25051 - 11905: 0x91B7,\n\t25052 - 11905: 0x91B8,\n\t25053 - 11905: 0x91B9,\n\t25054 - 11905: 0x91BA,\n\t25055 - 11905: 0x91BB,\n\t25056 - 11905: 0x91BC,\n\t25057 - 11905: 0x91BD,\n\t25058 - 11905: 0x91BE,\n\t25059 - 11905: 0x91BF,\n\t25060 - 11905: 0x91C0,\n\t25061 - 11905: 0x91C1,\n\t25062 - 11905: 0xC5B3,\n\t25063 - 11905: 0x91C2,\n\t25064 - 11905: 0x91C3,\n\t25065 - 11905: 0x91C4,\n\t25066 - 11905: 0x91C5,\n\t25067 - 11905: 0x91C6,\n\t25068 - 11905: 0x91C7,\n\t25069 - 11905: 0x91C8,\n\t25070 - 11905: 0x91C9,\n\t25071 - 11905: 0x91CA,\n\t25072 - 11905: 0x91CB,\n\t25073 - 11905: 0x91CC,\n\t25074 - 11905: 0x91CD,\n\t25075 - 11905: 0x91CE,\n\t25076 - 11905: 0x91CF,\n\t25077 - 11905: 0xE3C2,\n\t25078 - 11905: 0x91D0,\n\t25079 - 11905: 0x91D1,\n\t25080 - 11905: 0x91D2,\n\t25081 - 11905: 0x91D3,\n\t25082 - 11905: 0x91D4,\n\t25083 - 11905: 0x91D5,\n\t25084 - 11905: 0x91D6,\n\t25085 - 11905: 0x91D7,\n\t25086 - 11905: 0x91D8,\n\t25087 - 11905: 0xDCB2,\n\t25088 - 11905: 0x91D9,\n\t25089 - 11905: 0x91DA,\n\t25090 - 11905: 0x91DB,\n\t25091 - 11905: 0x91DC,\n\t25092 - 11905: 0x91DD,\n\t25093 - 11905: 0x91DE,\n\t25094 - 11905: 0xEDB0,\n\t25095 - 11905: 0x91DF,\n\t25096 - 11905: 0xB8EA,\n\t25097 - 11905: 0x91E0,\n\t25098 - 11905: 0xCEEC,\n\t25099 - 11905: 0xEAA7,\n\t25100 - 11905: 0xD0E7,\n\t25101 - 11905: 0xCAF9,\n\t25102 - 11905: 0xC8D6,\n\t25103 - 11905: 0xCFB7,\n\t25104 - 11905: 0xB3C9,\n\t25105 - 11905: 0xCED2,\n\t25106 - 11905: 0xBDE4,\n\t25107 - 11905: 0x91E1,\n\t25108 - 11905: 0x91E2,\n\t25109 - 11905: 0xE3DE,\n\t25110 - 11905: 0xBBF2,\n\t25111 - 11905: 0xEAA8,\n\t25112 - 11905: 0xD5BD,\n\t25113 - 11905: 0x91E3,\n\t25114 - 11905: 0xC6DD,\n\t25115 - 11905: 0xEAA9,\n\t25116 - 11905: 0x91E4,\n\t25117 - 11905: 0x91E5,\n\t25118 - 11905: 0x91E6,\n\t25119 - 11905: 0xEAAA,\n\t25120 - 11905: 0x91E7,\n\t25121 - 11905: 0xEAAC,\n\t25122 - 11905: 0xEAAB,\n\t25123 - 11905: 0x91E8,\n\t25124 - 11905: 0xEAAE,\n\t25125 - 11905: 0xEAAD,\n\t25126 - 11905: 0x91E9,\n\t25127 - 11905: 0x91EA,\n\t25128 - 11905: 0x91EB,\n\t25129 - 11905: 0x91EC,\n\t25130 - 11905: 0xBDD8,\n\t25131 - 11905: 0x91ED,\n\t25132 - 11905: 0xEAAF,\n\t25133 - 11905: 0x91EE,\n\t25134 - 11905: 0xC2BE,\n\t25135 - 11905: 0x91EF,\n\t25136 - 11905: 0x91F0,\n\t25137 - 11905: 0x91F1,\n\t25138 - 11905: 0x91F2,\n\t25139 - 11905: 0xB4C1,\n\t25140 - 11905: 0xB4F7,\n\t25141 - 11905: 0x91F3,\n\t25142 - 11905: 0x91F4,\n\t25143 - 11905: 0xBBA7,\n\t25144 - 11905: 0x91F5,\n\t25145 - 11905: 0x91F6,\n\t25146 - 11905: 0x91F7,\n\t25147 - 11905: 0x91F8,\n\t25148 - 11905: 0x91F9,\n\t25149 - 11905: 0xECE6,\n\t25150 - 11905: 0xECE5,\n\t25151 - 11905: 0xB7BF,\n\t25152 - 11905: 0xCBF9,\n\t25153 - 11905: 0xB1E2,\n\t25154 - 11905: 0x91FA,\n\t25155 - 11905: 0xECE7,\n\t25156 - 11905: 0x91FB,\n\t25157 - 11905: 0x91FC,\n\t25158 - 11905: 0x91FD,\n\t25159 - 11905: 0xC9C8,\n\t25160 - 11905: 0xECE8,\n\t25161 - 11905: 0xECE9,\n\t25162 - 11905: 0x91FE,\n\t25163 - 11905: 0xCAD6,\n\t25164 - 11905: 0xDED0,\n\t25165 - 11905: 0xB2C5,\n\t25166 - 11905: 0xD4FA,\n\t25167 - 11905: 0x9240,\n\t25168 - 11905: 0x9241,\n\t25169 - 11905: 0xC6CB,\n\t25170 - 11905: 0xB0C7,\n\t25171 - 11905: 0xB4F2,\n\t25172 - 11905: 0xC8D3,\n\t25173 - 11905: 0x9242,\n\t25174 - 11905: 0x9243,\n\t25175 - 11905: 0x9244,\n\t25176 - 11905: 0xCDD0,\n\t25177 - 11905: 0x9245,\n\t25178 - 11905: 0x9246,\n\t25179 - 11905: 0xBFB8,\n\t25180 - 11905: 0x9247,\n\t25181 - 11905: 0x9248,\n\t25182 - 11905: 0x9249,\n\t25183 - 11905: 0x924A,\n\t25184 - 11905: 0x924B,\n\t25185 - 11905: 0x924C,\n\t25186 - 11905: 0x924D,\n\t25187 - 11905: 0xBFDB,\n\t25188 - 11905: 0x924E,\n\t25189 - 11905: 0x924F,\n\t25190 - 11905: 0xC7A4,\n\t25191 - 11905: 0xD6B4,\n\t25192 - 11905: 0x9250,\n\t25193 - 11905: 0xC0A9,\n\t25194 - 11905: 0xDED1,\n\t25195 - 11905: 0xC9A8,\n\t25196 - 11905: 0xD1EF,\n\t25197 - 11905: 0xC5A4,\n\t25198 - 11905: 0xB0E7,\n\t25199 - 11905: 0xB3B6,\n\t25200 - 11905: 0xC8C5,\n\t25201 - 11905: 0x9251,\n\t25202 - 11905: 0x9252,\n\t25203 - 11905: 0xB0E2,\n\t25204 - 11905: 0x9253,\n\t25205 - 11905: 0x9254,\n\t25206 - 11905: 0xB7F6,\n\t25207 - 11905: 0x9255,\n\t25208 - 11905: 0x9256,\n\t25209 - 11905: 0xC5FA,\n\t25210 - 11905: 0x9257,\n\t25211 - 11905: 0x9258,\n\t25212 - 11905: 0xB6F3,\n\t25213 - 11905: 0x9259,\n\t25214 - 11905: 0xD5D2,\n\t25215 - 11905: 0xB3D0,\n\t25216 - 11905: 0xBCBC,\n\t25217 - 11905: 0x925A,\n\t25218 - 11905: 0x925B,\n\t25219 - 11905: 0x925C,\n\t25220 - 11905: 0xB3AD,\n\t25221 - 11905: 0x925D,\n\t25222 - 11905: 0x925E,\n\t25223 - 11905: 0x925F,\n\t25224 - 11905: 0x9260,\n\t25225 - 11905: 0xBEF1,\n\t25226 - 11905: 0xB0D1,\n\t25227 - 11905: 0x9261,\n\t25228 - 11905: 0x9262,\n\t25229 - 11905: 0x9263,\n\t25230 - 11905: 0x9264,\n\t25231 - 11905: 0x9265,\n\t25232 - 11905: 0x9266,\n\t25233 - 11905: 0xD2D6,\n\t25234 - 11905: 0xCAE3,\n\t25235 - 11905: 0xD7A5,\n\t25236 - 11905: 0x9267,\n\t25237 - 11905: 0xCDB6,\n\t25238 - 11905: 0xB6B6,\n\t25239 - 11905: 0xBFB9,\n\t25240 - 11905: 0xD5DB,\n\t25241 - 11905: 0x9268,\n\t25242 - 11905: 0xB8A7,\n\t25243 - 11905: 0xC5D7,\n\t25244 - 11905: 0x9269,\n\t25245 - 11905: 0x926A,\n\t25246 - 11905: 0x926B,\n\t25247 - 11905: 0xDED2,\n\t25248 - 11905: 0xBFD9,\n\t25249 - 11905: 0xC2D5,\n\t25250 - 11905: 0xC7C0,\n\t25251 - 11905: 0x926C,\n\t25252 - 11905: 0xBBA4,\n\t25253 - 11905: 0xB1A8,\n\t25254 - 11905: 0x926D,\n\t25255 - 11905: 0x926E,\n\t25256 - 11905: 0xC5EA,\n\t25257 - 11905: 0x926F,\n\t25258 - 11905: 0x9270,\n\t25259 - 11905: 0xC5FB,\n\t25260 - 11905: 0xCCA7,\n\t25261 - 11905: 0x9271,\n\t25262 - 11905: 0x9272,\n\t25263 - 11905: 0x9273,\n\t25264 - 11905: 0x9274,\n\t25265 - 11905: 0xB1A7,\n\t25266 - 11905: 0x9275,\n\t25267 - 11905: 0x9276,\n\t25268 - 11905: 0x9277,\n\t25269 - 11905: 0xB5D6,\n\t25270 - 11905: 0x9278,\n\t25271 - 11905: 0x9279,\n\t25272 - 11905: 0x927A,\n\t25273 - 11905: 0xC4A8,\n\t25274 - 11905: 0x927B,\n\t25275 - 11905: 0xDED3,\n\t25276 - 11905: 0xD1BA,\n\t25277 - 11905: 0xB3E9,\n\t25278 - 11905: 0x927C,\n\t25279 - 11905: 0xC3F2,\n\t25280 - 11905: 0x927D,\n\t25281 - 11905: 0x927E,\n\t25282 - 11905: 0xB7F7,\n\t25283 - 11905: 0x9280,\n\t25284 - 11905: 0xD6F4,\n\t25285 - 11905: 0xB5A3,\n\t25286 - 11905: 0xB2F0,\n\t25287 - 11905: 0xC4B4,\n\t25288 - 11905: 0xC4E9,\n\t25289 - 11905: 0xC0AD,\n\t25290 - 11905: 0xDED4,\n\t25291 - 11905: 0x9281,\n\t25292 - 11905: 0xB0E8,\n\t25293 - 11905: 0xC5C4,\n\t25294 - 11905: 0xC1E0,\n\t25295 - 11905: 0x9282,\n\t25296 - 11905: 0xB9D5,\n\t25297 - 11905: 0x9283,\n\t25298 - 11905: 0xBEDC,\n\t25299 - 11905: 0xCDD8,\n\t25300 - 11905: 0xB0CE,\n\t25301 - 11905: 0x9284,\n\t25302 - 11905: 0xCDCF,\n\t25303 - 11905: 0xDED6,\n\t25304 - 11905: 0xBED0,\n\t25305 - 11905: 0xD7BE,\n\t25306 - 11905: 0xDED5,\n\t25307 - 11905: 0xD5D0,\n\t25308 - 11905: 0xB0DD,\n\t25309 - 11905: 0x9285,\n\t25310 - 11905: 0x9286,\n\t25311 - 11905: 0xC4E2,\n\t25312 - 11905: 0x9287,\n\t25313 - 11905: 0x9288,\n\t25314 - 11905: 0xC2A3,\n\t25315 - 11905: 0xBCF0,\n\t25316 - 11905: 0x9289,\n\t25317 - 11905: 0xD3B5,\n\t25318 - 11905: 0xC0B9,\n\t25319 - 11905: 0xC5A1,\n\t25320 - 11905: 0xB2A6,\n\t25321 - 11905: 0xD4F1,\n\t25322 - 11905: 0x928A,\n\t25323 - 11905: 0x928B,\n\t25324 - 11905: 0xC0A8,\n\t25325 - 11905: 0xCAC3,\n\t25326 - 11905: 0xDED7,\n\t25327 - 11905: 0xD5FC,\n\t25328 - 11905: 0x928C,\n\t25329 - 11905: 0xB9B0,\n\t25330 - 11905: 0x928D,\n\t25331 - 11905: 0xC8AD,\n\t25332 - 11905: 0xCBA9,\n\t25333 - 11905: 0x928E,\n\t25334 - 11905: 0xDED9,\n\t25335 - 11905: 0xBFBD,\n\t25336 - 11905: 0x928F,\n\t25337 - 11905: 0x9290,\n\t25338 - 11905: 0x9291,\n\t25339 - 11905: 0x9292,\n\t25340 - 11905: 0xC6B4,\n\t25341 - 11905: 0xD7A7,\n\t25342 - 11905: 0xCAB0,\n\t25343 - 11905: 0xC4C3,\n\t25344 - 11905: 0x9293,\n\t25345 - 11905: 0xB3D6,\n\t25346 - 11905: 0xB9D2,\n\t25347 - 11905: 0x9294,\n\t25348 - 11905: 0x9295,\n\t25349 - 11905: 0x9296,\n\t25350 - 11905: 0x9297,\n\t25351 - 11905: 0xD6B8,\n\t25352 - 11905: 0xEAFC,\n\t25353 - 11905: 0xB0B4,\n\t25354 - 11905: 0x9298,\n\t25355 - 11905: 0x9299,\n\t25356 - 11905: 0x929A,\n\t25357 - 11905: 0x929B,\n\t25358 - 11905: 0xBFE6,\n\t25359 - 11905: 0x929C,\n\t25360 - 11905: 0x929D,\n\t25361 - 11905: 0xCCF4,\n\t25362 - 11905: 0x929E,\n\t25363 - 11905: 0x929F,\n\t25364 - 11905: 0x92A0,\n\t25365 - 11905: 0x92A1,\n\t25366 - 11905: 0xCDDA,\n\t25367 - 11905: 0x92A2,\n\t25368 - 11905: 0x92A3,\n\t25369 - 11905: 0x92A4,\n\t25370 - 11905: 0xD6BF,\n\t25371 - 11905: 0xC2CE,\n\t25372 - 11905: 0x92A5,\n\t25373 - 11905: 0xCECE,\n\t25374 - 11905: 0xCCA2,\n\t25375 - 11905: 0xD0AE,\n\t25376 - 11905: 0xC4D3,\n\t25377 - 11905: 0xB5B2,\n\t25378 - 11905: 0xDED8,\n\t25379 - 11905: 0xD5F5,\n\t25380 - 11905: 0xBCB7,\n\t25381 - 11905: 0xBBD3,\n\t25382 - 11905: 0x92A6,\n\t25383 - 11905: 0x92A7,\n\t25384 - 11905: 0xB0A4,\n\t25385 - 11905: 0x92A8,\n\t25386 - 11905: 0xC5B2,\n\t25387 - 11905: 0xB4EC,\n\t25388 - 11905: 0x92A9,\n\t25389 - 11905: 0x92AA,\n\t25390 - 11905: 0x92AB,\n\t25391 - 11905: 0xD5F1,\n\t25392 - 11905: 0x92AC,\n\t25393 - 11905: 0x92AD,\n\t25394 - 11905: 0xEAFD,\n\t25395 - 11905: 0x92AE,\n\t25396 - 11905: 0x92AF,\n\t25397 - 11905: 0x92B0,\n\t25398 - 11905: 0x92B1,\n\t25399 - 11905: 0x92B2,\n\t25400 - 11905: 0x92B3,\n\t25401 - 11905: 0xDEDA,\n\t25402 - 11905: 0xCDA6,\n\t25403 - 11905: 0x92B4,\n\t25404 - 11905: 0x92B5,\n\t25405 - 11905: 0xCDEC,\n\t25406 - 11905: 0x92B6,\n\t25407 - 11905: 0x92B7,\n\t25408 - 11905: 0x92B8,\n\t25409 - 11905: 0x92B9,\n\t25410 - 11905: 0xCEE6,\n\t25411 - 11905: 0xDEDC,\n\t25412 - 11905: 0x92BA,\n\t25413 - 11905: 0xCDB1,\n\t25414 - 11905: 0xC0A6,\n\t25415 - 11905: 0x92BB,\n\t25416 - 11905: 0x92BC,\n\t25417 - 11905: 0xD7BD,\n\t25418 - 11905: 0x92BD,\n\t25419 - 11905: 0xDEDB,\n\t25420 - 11905: 0xB0C6,\n\t25421 - 11905: 0xBAB4,\n\t25422 - 11905: 0xC9D3,\n\t25423 - 11905: 0xC4F3,\n\t25424 - 11905: 0xBEE8,\n\t25425 - 11905: 0x92BE,\n\t25426 - 11905: 0x92BF,\n\t25427 - 11905: 0x92C0,\n\t25428 - 11905: 0x92C1,\n\t25429 - 11905: 0xB2B6,\n\t25430 - 11905: 0x92C2,\n\t25431 - 11905: 0x92C3,\n\t25432 - 11905: 0x92C4,\n\t25433 - 11905: 0x92C5,\n\t25434 - 11905: 0x92C6,\n\t25435 - 11905: 0x92C7,\n\t25436 - 11905: 0x92C8,\n\t25437 - 11905: 0x92C9,\n\t25438 - 11905: 0xC0CC,\n\t25439 - 11905: 0xCBF0,\n\t25440 - 11905: 0x92CA,\n\t25441 - 11905: 0xBCF1,\n\t25442 - 11905: 0xBBBB,\n\t25443 - 11905: 0xB5B7,\n\t25444 - 11905: 0x92CB,\n\t25445 - 11905: 0x92CC,\n\t25446 - 11905: 0x92CD,\n\t25447 - 11905: 0xC5F5,\n\t25448 - 11905: 0x92CE,\n\t25449 - 11905: 0xDEE6,\n\t25450 - 11905: 0x92CF,\n\t25451 - 11905: 0x92D0,\n\t25452 - 11905: 0x92D1,\n\t25453 - 11905: 0xDEE3,\n\t25454 - 11905: 0xBEDD,\n\t25455 - 11905: 0x92D2,\n\t25456 - 11905: 0x92D3,\n\t25457 - 11905: 0xDEDF,\n\t25458 - 11905: 0x92D4,\n\t25459 - 11905: 0x92D5,\n\t25460 - 11905: 0x92D6,\n\t25461 - 11905: 0x92D7,\n\t25462 - 11905: 0xB4B7,\n\t25463 - 11905: 0xBDDD,\n\t25464 - 11905: 0x92D8,\n\t25465 - 11905: 0x92D9,\n\t25466 - 11905: 0xDEE0,\n\t25467 - 11905: 0xC4ED,\n\t25468 - 11905: 0x92DA,\n\t25469 - 11905: 0x92DB,\n\t25470 - 11905: 0x92DC,\n\t25471 - 11905: 0x92DD,\n\t25472 - 11905: 0xCFC6,\n\t25473 - 11905: 0x92DE,\n\t25474 - 11905: 0xB5E0,\n\t25475 - 11905: 0x92DF,\n\t25476 - 11905: 0x92E0,\n\t25477 - 11905: 0x92E1,\n\t25478 - 11905: 0x92E2,\n\t25479 - 11905: 0xB6DE,\n\t25480 - 11905: 0xCADA,\n\t25481 - 11905: 0xB5F4,\n\t25482 - 11905: 0xDEE5,\n\t25483 - 11905: 0x92E3,\n\t25484 - 11905: 0xD5C6,\n\t25485 - 11905: 0x92E4,\n\t25486 - 11905: 0xDEE1,\n\t25487 - 11905: 0xCCCD,\n\t25488 - 11905: 0xC6FE,\n\t25489 - 11905: 0x92E5,\n\t25490 - 11905: 0xC5C5,\n\t25491 - 11905: 0x92E6,\n\t25492 - 11905: 0x92E7,\n\t25493 - 11905: 0x92E8,\n\t25494 - 11905: 0xD2B4,\n\t25495 - 11905: 0x92E9,\n\t25496 - 11905: 0xBEF2,\n\t25497 - 11905: 0x92EA,\n\t25498 - 11905: 0x92EB,\n\t25499 - 11905: 0x92EC,\n\t25500 - 11905: 0x92ED,\n\t25501 - 11905: 0x92EE,\n\t25502 - 11905: 0x92EF,\n\t25503 - 11905: 0x92F0,\n\t25504 - 11905: 0xC2D3,\n\t25505 - 11905: 0x92F1,\n\t25506 - 11905: 0xCCBD,\n\t25507 - 11905: 0xB3B8,\n\t25508 - 11905: 0x92F2,\n\t25509 - 11905: 0xBDD3,\n\t25510 - 11905: 0x92F3,\n\t25511 - 11905: 0xBFD8,\n\t25512 - 11905: 0xCDC6,\n\t25513 - 11905: 0xD1DA,\n\t25514 - 11905: 0xB4EB,\n\t25515 - 11905: 0x92F4,\n\t25516 - 11905: 0xDEE4,\n\t25517 - 11905: 0xDEDD,\n\t25518 - 11905: 0xDEE7,\n\t25519 - 11905: 0x92F5,\n\t25520 - 11905: 0xEAFE,\n\t25521 - 11905: 0x92F6,\n\t25522 - 11905: 0x92F7,\n\t25523 - 11905: 0xC2B0,\n\t25524 - 11905: 0xDEE2,\n\t25525 - 11905: 0x92F8,\n\t25526 - 11905: 0x92F9,\n\t25527 - 11905: 0xD6C0,\n\t25528 - 11905: 0xB5A7,\n\t25529 - 11905: 0x92FA,\n\t25530 - 11905: 0xB2F4,\n\t25531 - 11905: 0x92FB,\n\t25532 - 11905: 0xDEE8,\n\t25533 - 11905: 0x92FC,\n\t25534 - 11905: 0xDEF2,\n\t25535 - 11905: 0x92FD,\n\t25536 - 11905: 0x92FE,\n\t25537 - 11905: 0x9340,\n\t25538 - 11905: 0x9341,\n\t25539 - 11905: 0x9342,\n\t25540 - 11905: 0xDEED,\n\t25541 - 11905: 0x9343,\n\t25542 - 11905: 0xDEF1,\n\t25543 - 11905: 0x9344,\n\t25544 - 11905: 0x9345,\n\t25545 - 11905: 0xC8E0,\n\t25546 - 11905: 0x9346,\n\t25547 - 11905: 0x9347,\n\t25548 - 11905: 0x9348,\n\t25549 - 11905: 0xD7E1,\n\t25550 - 11905: 0xDEEF,\n\t25551 - 11905: 0xC3E8,\n\t25552 - 11905: 0xCCE1,\n\t25553 - 11905: 0x9349,\n\t25554 - 11905: 0xB2E5,\n\t25555 - 11905: 0x934A,\n\t25556 - 11905: 0x934B,\n\t25557 - 11905: 0x934C,\n\t25558 - 11905: 0xD2BE,\n\t25559 - 11905: 0x934D,\n\t25560 - 11905: 0x934E,\n\t25561 - 11905: 0x934F,\n\t25562 - 11905: 0x9350,\n\t25563 - 11905: 0x9351,\n\t25564 - 11905: 0x9352,\n\t25565 - 11905: 0x9353,\n\t25566 - 11905: 0xDEEE,\n\t25567 - 11905: 0x9354,\n\t25568 - 11905: 0xDEEB,\n\t25569 - 11905: 0xCED5,\n\t25570 - 11905: 0x9355,\n\t25571 - 11905: 0xB4A7,\n\t25572 - 11905: 0x9356,\n\t25573 - 11905: 0x9357,\n\t25574 - 11905: 0x9358,\n\t25575 - 11905: 0x9359,\n\t25576 - 11905: 0x935A,\n\t25577 - 11905: 0xBFAB,\n\t25578 - 11905: 0xBEBE,\n\t25579 - 11905: 0x935B,\n\t25580 - 11905: 0x935C,\n\t25581 - 11905: 0xBDD2,\n\t25582 - 11905: 0x935D,\n\t25583 - 11905: 0x935E,\n\t25584 - 11905: 0x935F,\n\t25585 - 11905: 0x9360,\n\t25586 - 11905: 0xDEE9,\n\t25587 - 11905: 0x9361,\n\t25588 - 11905: 0xD4AE,\n\t25589 - 11905: 0x9362,\n\t25590 - 11905: 0xDEDE,\n\t25591 - 11905: 0x9363,\n\t25592 - 11905: 0xDEEA,\n\t25593 - 11905: 0x9364,\n\t25594 - 11905: 0x9365,\n\t25595 - 11905: 0x9366,\n\t25596 - 11905: 0x9367,\n\t25597 - 11905: 0xC0BF,\n\t25598 - 11905: 0x9368,\n\t25599 - 11905: 0xDEEC,\n\t25600 - 11905: 0xB2F3,\n\t25601 - 11905: 0xB8E9,\n\t25602 - 11905: 0xC2A7,\n\t25603 - 11905: 0x9369,\n\t25604 - 11905: 0x936A,\n\t25605 - 11905: 0xBDC1,\n\t25606 - 11905: 0x936B,\n\t25607 - 11905: 0x936C,\n\t25608 - 11905: 0x936D,\n\t25609 - 11905: 0x936E,\n\t25610 - 11905: 0x936F,\n\t25611 - 11905: 0xDEF5,\n\t25612 - 11905: 0xDEF8,\n\t25613 - 11905: 0x9370,\n\t25614 - 11905: 0x9371,\n\t25615 - 11905: 0xB2AB,\n\t25616 - 11905: 0xB4A4,\n\t25617 - 11905: 0x9372,\n\t25618 - 11905: 0x9373,\n\t25619 - 11905: 0xB4EA,\n\t25620 - 11905: 0xC9A6,\n\t25621 - 11905: 0x9374,\n\t25622 - 11905: 0x9375,\n\t25623 - 11905: 0x9376,\n\t25624 - 11905: 0x9377,\n\t25625 - 11905: 0x9378,\n\t25626 - 11905: 0x9379,\n\t25627 - 11905: 0xDEF6,\n\t25628 - 11905: 0xCBD1,\n\t25629 - 11905: 0x937A,\n\t25630 - 11905: 0xB8E3,\n\t25631 - 11905: 0x937B,\n\t25632 - 11905: 0xDEF7,\n\t25633 - 11905: 0xDEFA,\n\t25634 - 11905: 0x937C,\n\t25635 - 11905: 0x937D,\n\t25636 - 11905: 0x937E,\n\t25637 - 11905: 0x9380,\n\t25638 - 11905: 0xDEF9,\n\t25639 - 11905: 0x9381,\n\t25640 - 11905: 0x9382,\n\t25641 - 11905: 0x9383,\n\t25642 - 11905: 0xCCC2,\n\t25643 - 11905: 0x9384,\n\t25644 - 11905: 0xB0E1,\n\t25645 - 11905: 0xB4EE,\n\t25646 - 11905: 0x9385,\n\t25647 - 11905: 0x9386,\n\t25648 - 11905: 0x9387,\n\t25649 - 11905: 0x9388,\n\t25650 - 11905: 0x9389,\n\t25651 - 11905: 0x938A,\n\t25652 - 11905: 0xE5BA,\n\t25653 - 11905: 0x938B,\n\t25654 - 11905: 0x938C,\n\t25655 - 11905: 0x938D,\n\t25656 - 11905: 0x938E,\n\t25657 - 11905: 0x938F,\n\t25658 - 11905: 0xD0AF,\n\t25659 - 11905: 0x9390,\n\t25660 - 11905: 0x9391,\n\t25661 - 11905: 0xB2EB,\n\t25662 - 11905: 0x9392,\n\t25663 - 11905: 0xEBA1,\n\t25664 - 11905: 0x9393,\n\t25665 - 11905: 0xDEF4,\n\t25666 - 11905: 0x9394,\n\t25667 - 11905: 0x9395,\n\t25668 - 11905: 0xC9E3,\n\t25669 - 11905: 0xDEF3,\n\t25670 - 11905: 0xB0DA,\n\t25671 - 11905: 0xD2A1,\n\t25672 - 11905: 0xB1F7,\n\t25673 - 11905: 0x9396,\n\t25674 - 11905: 0xCCAF,\n\t25675 - 11905: 0x9397,\n\t25676 - 11905: 0x9398,\n\t25677 - 11905: 0x9399,\n\t25678 - 11905: 0x939A,\n\t25679 - 11905: 0x939B,\n\t25680 - 11905: 0x939C,\n\t25681 - 11905: 0x939D,\n\t25682 - 11905: 0xDEF0,\n\t25683 - 11905: 0x939E,\n\t25684 - 11905: 0xCBA4,\n\t25685 - 11905: 0x939F,\n\t25686 - 11905: 0x93A0,\n\t25687 - 11905: 0x93A1,\n\t25688 - 11905: 0xD5AA,\n\t25689 - 11905: 0x93A2,\n\t25690 - 11905: 0x93A3,\n\t25691 - 11905: 0x93A4,\n\t25692 - 11905: 0x93A5,\n\t25693 - 11905: 0x93A6,\n\t25694 - 11905: 0xDEFB,\n\t25695 - 11905: 0x93A7,\n\t25696 - 11905: 0x93A8,\n\t25697 - 11905: 0x93A9,\n\t25698 - 11905: 0x93AA,\n\t25699 - 11905: 0x93AB,\n\t25700 - 11905: 0x93AC,\n\t25701 - 11905: 0x93AD,\n\t25702 - 11905: 0x93AE,\n\t25703 - 11905: 0xB4DD,\n\t25704 - 11905: 0x93AF,\n\t25705 - 11905: 0xC4A6,\n\t25706 - 11905: 0x93B0,\n\t25707 - 11905: 0x93B1,\n\t25708 - 11905: 0x93B2,\n\t25709 - 11905: 0xDEFD,\n\t25710 - 11905: 0x93B3,\n\t25711 - 11905: 0x93B4,\n\t25712 - 11905: 0x93B5,\n\t25713 - 11905: 0x93B6,\n\t25714 - 11905: 0x93B7,\n\t25715 - 11905: 0x93B8,\n\t25716 - 11905: 0x93B9,\n\t25717 - 11905: 0x93BA,\n\t25718 - 11905: 0x93BB,\n\t25719 - 11905: 0x93BC,\n\t25720 - 11905: 0xC3FE,\n\t25721 - 11905: 0xC4A1,\n\t25722 - 11905: 0xDFA1,\n\t25723 - 11905: 0x93BD,\n\t25724 - 11905: 0x93BE,\n\t25725 - 11905: 0x93BF,\n\t25726 - 11905: 0x93C0,\n\t25727 - 11905: 0x93C1,\n\t25728 - 11905: 0x93C2,\n\t25729 - 11905: 0x93C3,\n\t25730 - 11905: 0xC1CC,\n\t25731 - 11905: 0x93C4,\n\t25732 - 11905: 0xDEFC,\n\t25733 - 11905: 0xBEEF,\n\t25734 - 11905: 0x93C5,\n\t25735 - 11905: 0xC6B2,\n\t25736 - 11905: 0x93C6,\n\t25737 - 11905: 0x93C7,\n\t25738 - 11905: 0x93C8,\n\t25739 - 11905: 0x93C9,\n\t25740 - 11905: 0x93CA,\n\t25741 - 11905: 0x93CB,\n\t25742 - 11905: 0x93CC,\n\t25743 - 11905: 0x93CD,\n\t25744 - 11905: 0x93CE,\n\t25745 - 11905: 0xB3C5,\n\t25746 - 11905: 0xC8F6,\n\t25747 - 11905: 0x93CF,\n\t25748 - 11905: 0x93D0,\n\t25749 - 11905: 0xCBBA,\n\t25750 - 11905: 0xDEFE,\n\t25751 - 11905: 0x93D1,\n\t25752 - 11905: 0x93D2,\n\t25753 - 11905: 0xDFA4,\n\t25754 - 11905: 0x93D3,\n\t25755 - 11905: 0x93D4,\n\t25756 - 11905: 0x93D5,\n\t25757 - 11905: 0x93D6,\n\t25758 - 11905: 0xD7B2,\n\t25759 - 11905: 0x93D7,\n\t25760 - 11905: 0x93D8,\n\t25761 - 11905: 0x93D9,\n\t25762 - 11905: 0x93DA,\n\t25763 - 11905: 0x93DB,\n\t25764 - 11905: 0xB3B7,\n\t25765 - 11905: 0x93DC,\n\t25766 - 11905: 0x93DD,\n\t25767 - 11905: 0x93DE,\n\t25768 - 11905: 0x93DF,\n\t25769 - 11905: 0xC1C3,\n\t25770 - 11905: 0x93E0,\n\t25771 - 11905: 0x93E1,\n\t25772 - 11905: 0xC7CB,\n\t25773 - 11905: 0xB2A5,\n\t25774 - 11905: 0xB4E9,\n\t25775 - 11905: 0x93E2,\n\t25776 - 11905: 0xD7AB,\n\t25777 - 11905: 0x93E3,\n\t25778 - 11905: 0x93E4,\n\t25779 - 11905: 0x93E5,\n\t25780 - 11905: 0x93E6,\n\t25781 - 11905: 0xC4EC,\n\t25782 - 11905: 0x93E7,\n\t25783 - 11905: 0xDFA2,\n\t25784 - 11905: 0xDFA3,\n\t25785 - 11905: 0x93E8,\n\t25786 - 11905: 0xDFA5,\n\t25787 - 11905: 0x93E9,\n\t25788 - 11905: 0xBAB3,\n\t25789 - 11905: 0x93EA,\n\t25790 - 11905: 0x93EB,\n\t25791 - 11905: 0x93EC,\n\t25792 - 11905: 0xDFA6,\n\t25793 - 11905: 0x93ED,\n\t25794 - 11905: 0xC0DE,\n\t25795 - 11905: 0x93EE,\n\t25796 - 11905: 0x93EF,\n\t25797 - 11905: 0xC9C3,\n\t25798 - 11905: 0x93F0,\n\t25799 - 11905: 0x93F1,\n\t25800 - 11905: 0x93F2,\n\t25801 - 11905: 0x93F3,\n\t25802 - 11905: 0x93F4,\n\t25803 - 11905: 0x93F5,\n\t25804 - 11905: 0x93F6,\n\t25805 - 11905: 0xB2D9,\n\t25806 - 11905: 0xC7E6,\n\t25807 - 11905: 0x93F7,\n\t25808 - 11905: 0xDFA7,\n\t25809 - 11905: 0x93F8,\n\t25810 - 11905: 0xC7DC,\n\t25811 - 11905: 0x93F9,\n\t25812 - 11905: 0x93FA,\n\t25813 - 11905: 0x93FB,\n\t25814 - 11905: 0x93FC,\n\t25815 - 11905: 0xDFA8,\n\t25816 - 11905: 0xEBA2,\n\t25817 - 11905: 0x93FD,\n\t25818 - 11905: 0x93FE,\n\t25819 - 11905: 0x9440,\n\t25820 - 11905: 0x9441,\n\t25821 - 11905: 0x9442,\n\t25822 - 11905: 0xCBD3,\n\t25823 - 11905: 0x9443,\n\t25824 - 11905: 0x9444,\n\t25825 - 11905: 0x9445,\n\t25826 - 11905: 0xDFAA,\n\t25827 - 11905: 0x9446,\n\t25828 - 11905: 0xDFA9,\n\t25829 - 11905: 0x9447,\n\t25830 - 11905: 0xB2C1,\n\t25831 - 11905: 0x9448,\n\t25832 - 11905: 0x9449,\n\t25833 - 11905: 0x944A,\n\t25834 - 11905: 0x944B,\n\t25835 - 11905: 0x944C,\n\t25836 - 11905: 0x944D,\n\t25837 - 11905: 0x944E,\n\t25838 - 11905: 0x944F,\n\t25839 - 11905: 0x9450,\n\t25840 - 11905: 0x9451,\n\t25841 - 11905: 0x9452,\n\t25842 - 11905: 0x9453,\n\t25843 - 11905: 0x9454,\n\t25844 - 11905: 0x9455,\n\t25845 - 11905: 0x9456,\n\t25846 - 11905: 0x9457,\n\t25847 - 11905: 0x9458,\n\t25848 - 11905: 0x9459,\n\t25849 - 11905: 0x945A,\n\t25850 - 11905: 0x945B,\n\t25851 - 11905: 0x945C,\n\t25852 - 11905: 0x945D,\n\t25853 - 11905: 0x945E,\n\t25854 - 11905: 0x945F,\n\t25855 - 11905: 0x9460,\n\t25856 - 11905: 0xC5CA,\n\t25857 - 11905: 0x9461,\n\t25858 - 11905: 0x9462,\n\t25859 - 11905: 0x9463,\n\t25860 - 11905: 0x9464,\n\t25861 - 11905: 0x9465,\n\t25862 - 11905: 0x9466,\n\t25863 - 11905: 0x9467,\n\t25864 - 11905: 0x9468,\n\t25865 - 11905: 0xDFAB,\n\t25866 - 11905: 0x9469,\n\t25867 - 11905: 0x946A,\n\t25868 - 11905: 0x946B,\n\t25869 - 11905: 0x946C,\n\t25870 - 11905: 0x946D,\n\t25871 - 11905: 0x946E,\n\t25872 - 11905: 0x946F,\n\t25873 - 11905: 0x9470,\n\t25874 - 11905: 0xD4DC,\n\t25875 - 11905: 0x9471,\n\t25876 - 11905: 0x9472,\n\t25877 - 11905: 0x9473,\n\t25878 - 11905: 0x9474,\n\t25879 - 11905: 0x9475,\n\t25880 - 11905: 0xC8C1,\n\t25881 - 11905: 0x9476,\n\t25882 - 11905: 0x9477,\n\t25883 - 11905: 0x9478,\n\t25884 - 11905: 0x9479,\n\t25885 - 11905: 0x947A,\n\t25886 - 11905: 0x947B,\n\t25887 - 11905: 0x947C,\n\t25888 - 11905: 0x947D,\n\t25889 - 11905: 0x947E,\n\t25890 - 11905: 0x9480,\n\t25891 - 11905: 0x9481,\n\t25892 - 11905: 0x9482,\n\t25893 - 11905: 0xDFAC,\n\t25894 - 11905: 0x9483,\n\t25895 - 11905: 0x9484,\n\t25896 - 11905: 0x9485,\n\t25897 - 11905: 0x9486,\n\t25898 - 11905: 0x9487,\n\t25899 - 11905: 0xBEF0,\n\t25900 - 11905: 0x9488,\n\t25901 - 11905: 0x9489,\n\t25902 - 11905: 0xDFAD,\n\t25903 - 11905: 0xD6A7,\n\t25904 - 11905: 0x948A,\n\t25905 - 11905: 0x948B,\n\t25906 - 11905: 0x948C,\n\t25907 - 11905: 0x948D,\n\t25908 - 11905: 0xEAB7,\n\t25909 - 11905: 0xEBB6,\n\t25910 - 11905: 0xCAD5,\n\t25911 - 11905: 0x948E,\n\t25912 - 11905: 0xD8FC,\n\t25913 - 11905: 0xB8C4,\n\t25914 - 11905: 0x948F,\n\t25915 - 11905: 0xB9A5,\n\t25916 - 11905: 0x9490,\n\t25917 - 11905: 0x9491,\n\t25918 - 11905: 0xB7C5,\n\t25919 - 11905: 0xD5FE,\n\t25920 - 11905: 0x9492,\n\t25921 - 11905: 0x9493,\n\t25922 - 11905: 0x9494,\n\t25923 - 11905: 0x9495,\n\t25924 - 11905: 0x9496,\n\t25925 - 11905: 0xB9CA,\n\t25926 - 11905: 0x9497,\n\t25927 - 11905: 0x9498,\n\t25928 - 11905: 0xD0A7,\n\t25929 - 11905: 0xF4CD,\n\t25930 - 11905: 0x9499,\n\t25931 - 11905: 0x949A,\n\t25932 - 11905: 0xB5D0,\n\t25933 - 11905: 0x949B,\n\t25934 - 11905: 0x949C,\n\t25935 - 11905: 0xC3F4,\n\t25936 - 11905: 0x949D,\n\t25937 - 11905: 0xBEC8,\n\t25938 - 11905: 0x949E,\n\t25939 - 11905: 0x949F,\n\t25940 - 11905: 0x94A0,\n\t25941 - 11905: 0xEBB7,\n\t25942 - 11905: 0xB0BD,\n\t25943 - 11905: 0x94A1,\n\t25944 - 11905: 0x94A2,\n\t25945 - 11905: 0xBDCC,\n\t25946 - 11905: 0x94A3,\n\t25947 - 11905: 0xC1B2,\n\t25948 - 11905: 0x94A4,\n\t25949 - 11905: 0xB1D6,\n\t25950 - 11905: 0xB3A8,\n\t25951 - 11905: 0x94A5,\n\t25952 - 11905: 0x94A6,\n\t25953 - 11905: 0x94A7,\n\t25954 - 11905: 0xB8D2,\n\t25955 - 11905: 0xC9A2,\n\t25956 - 11905: 0x94A8,\n\t25957 - 11905: 0x94A9,\n\t25958 - 11905: 0xB6D8,\n\t25959 - 11905: 0x94AA,\n\t25960 - 11905: 0x94AB,\n\t25961 - 11905: 0x94AC,\n\t25962 - 11905: 0x94AD,\n\t25963 - 11905: 0xEBB8,\n\t25964 - 11905: 0xBEB4,\n\t25965 - 11905: 0x94AE,\n\t25966 - 11905: 0x94AF,\n\t25967 - 11905: 0x94B0,\n\t25968 - 11905: 0xCAFD,\n\t25969 - 11905: 0x94B1,\n\t25970 - 11905: 0xC7C3,\n\t25971 - 11905: 0x94B2,\n\t25972 - 11905: 0xD5FB,\n\t25973 - 11905: 0x94B3,\n\t25974 - 11905: 0x94B4,\n\t25975 - 11905: 0xB7F3,\n\t25976 - 11905: 0x94B5,\n\t25977 - 11905: 0x94B6,\n\t25978 - 11905: 0x94B7,\n\t25979 - 11905: 0x94B8,\n\t25980 - 11905: 0x94B9,\n\t25981 - 11905: 0x94BA,\n\t25982 - 11905: 0x94BB,\n\t25983 - 11905: 0x94BC,\n\t25984 - 11905: 0x94BD,\n\t25985 - 11905: 0x94BE,\n\t25986 - 11905: 0x94BF,\n\t25987 - 11905: 0x94C0,\n\t25988 - 11905: 0x94C1,\n\t25989 - 11905: 0x94C2,\n\t25990 - 11905: 0x94C3,\n\t25991 - 11905: 0xCEC4,\n\t25992 - 11905: 0x94C4,\n\t25993 - 11905: 0x94C5,\n\t25994 - 11905: 0x94C6,\n\t25995 - 11905: 0xD5AB,\n\t25996 - 11905: 0xB1F3,\n\t25997 - 11905: 0x94C7,\n\t25998 - 11905: 0x94C8,\n\t25999 - 11905: 0x94C9,\n\t26000 - 11905: 0xECB3,\n\t26001 - 11905: 0xB0DF,\n\t26002 - 11905: 0x94CA,\n\t26003 - 11905: 0xECB5,\n\t26004 - 11905: 0x94CB,\n\t26005 - 11905: 0x94CC,\n\t26006 - 11905: 0x94CD,\n\t26007 - 11905: 0xB6B7,\n\t26008 - 11905: 0x94CE,\n\t26009 - 11905: 0xC1CF,\n\t26010 - 11905: 0x94CF,\n\t26011 - 11905: 0xF5FA,\n\t26012 - 11905: 0xD0B1,\n\t26013 - 11905: 0x94D0,\n\t26014 - 11905: 0x94D1,\n\t26015 - 11905: 0xD5E5,\n\t26016 - 11905: 0x94D2,\n\t26017 - 11905: 0xCED3,\n\t26018 - 11905: 0x94D3,\n\t26019 - 11905: 0x94D4,\n\t26020 - 11905: 0xBDEF,\n\t26021 - 11905: 0xB3E2,\n\t26022 - 11905: 0x94D5,\n\t26023 - 11905: 0xB8AB,\n\t26024 - 11905: 0x94D6,\n\t26025 - 11905: 0xD5B6,\n\t26026 - 11905: 0x94D7,\n\t26027 - 11905: 0xEDBD,\n\t26028 - 11905: 0x94D8,\n\t26029 - 11905: 0xB6CF,\n\t26030 - 11905: 0x94D9,\n\t26031 - 11905: 0xCBB9,\n\t26032 - 11905: 0xD0C2,\n\t26033 - 11905: 0x94DA,\n\t26034 - 11905: 0x94DB,\n\t26035 - 11905: 0x94DC,\n\t26036 - 11905: 0x94DD,\n\t26037 - 11905: 0x94DE,\n\t26038 - 11905: 0x94DF,\n\t26039 - 11905: 0x94E0,\n\t26040 - 11905: 0x94E1,\n\t26041 - 11905: 0xB7BD,\n\t26042 - 11905: 0x94E2,\n\t26043 - 11905: 0x94E3,\n\t26044 - 11905: 0xECB6,\n\t26045 - 11905: 0xCAA9,\n\t26046 - 11905: 0x94E4,\n\t26047 - 11905: 0x94E5,\n\t26048 - 11905: 0x94E6,\n\t26049 - 11905: 0xC5D4,\n\t26050 - 11905: 0x94E7,\n\t26051 - 11905: 0xECB9,\n\t26052 - 11905: 0xECB8,\n\t26053 - 11905: 0xC2C3,\n\t26054 - 11905: 0xECB7,\n\t26055 - 11905: 0x94E8,\n\t26056 - 11905: 0x94E9,\n\t26057 - 11905: 0x94EA,\n\t26058 - 11905: 0x94EB,\n\t26059 - 11905: 0xD0FD,\n\t26060 - 11905: 0xECBA,\n\t26061 - 11905: 0x94EC,\n\t26062 - 11905: 0xECBB,\n\t26063 - 11905: 0xD7E5,\n\t26064 - 11905: 0x94ED,\n\t26065 - 11905: 0x94EE,\n\t26066 - 11905: 0xECBC,\n\t26067 - 11905: 0x94EF,\n\t26068 - 11905: 0x94F0,\n\t26069 - 11905: 0x94F1,\n\t26070 - 11905: 0xECBD,\n\t26071 - 11905: 0xC6EC,\n\t26072 - 11905: 0x94F2,\n\t26073 - 11905: 0x94F3,\n\t26074 - 11905: 0x94F4,\n\t26075 - 11905: 0x94F5,\n\t26076 - 11905: 0x94F6,\n\t26077 - 11905: 0x94F7,\n\t26078 - 11905: 0x94F8,\n\t26079 - 11905: 0x94F9,\n\t26080 - 11905: 0xCEDE,\n\t26081 - 11905: 0x94FA,\n\t26082 - 11905: 0xBCC8,\n\t26083 - 11905: 0x94FB,\n\t26084 - 11905: 0x94FC,\n\t26085 - 11905: 0xC8D5,\n\t26086 - 11905: 0xB5A9,\n\t26087 - 11905: 0xBEC9,\n\t26088 - 11905: 0xD6BC,\n\t26089 - 11905: 0xD4E7,\n\t26090 - 11905: 0x94FD,\n\t26091 - 11905: 0x94FE,\n\t26092 - 11905: 0xD1AE,\n\t26093 - 11905: 0xD0F1,\n\t26094 - 11905: 0xEAB8,\n\t26095 - 11905: 0xEAB9,\n\t26096 - 11905: 0xEABA,\n\t26097 - 11905: 0xBAB5,\n\t26098 - 11905: 0x9540,\n\t26099 - 11905: 0x9541,\n\t26100 - 11905: 0x9542,\n\t26101 - 11905: 0x9543,\n\t26102 - 11905: 0xCAB1,\n\t26103 - 11905: 0xBFF5,\n\t26104 - 11905: 0x9544,\n\t26105 - 11905: 0x9545,\n\t26106 - 11905: 0xCDFA,\n\t26107 - 11905: 0x9546,\n\t26108 - 11905: 0x9547,\n\t26109 - 11905: 0x9548,\n\t26110 - 11905: 0x9549,\n\t26111 - 11905: 0x954A,\n\t26112 - 11905: 0xEAC0,\n\t26113 - 11905: 0x954B,\n\t26114 - 11905: 0xB0BA,\n\t26115 - 11905: 0xEABE,\n\t26116 - 11905: 0x954C,\n\t26117 - 11905: 0x954D,\n\t26118 - 11905: 0xC0A5,\n\t26119 - 11905: 0x954E,\n\t26120 - 11905: 0x954F,\n\t26121 - 11905: 0x9550,\n\t26122 - 11905: 0xEABB,\n\t26123 - 11905: 0x9551,\n\t26124 - 11905: 0xB2FD,\n\t26125 - 11905: 0x9552,\n\t26126 - 11905: 0xC3F7,\n\t26127 - 11905: 0xBBE8,\n\t26128 - 11905: 0x9553,\n\t26129 - 11905: 0x9554,\n\t26130 - 11905: 0x9555,\n\t26131 - 11905: 0xD2D7,\n\t26132 - 11905: 0xCEF4,\n\t26133 - 11905: 0xEABF,\n\t26134 - 11905: 0x9556,\n\t26135 - 11905: 0x9557,\n\t26136 - 11905: 0x9558,\n\t26137 - 11905: 0xEABC,\n\t26138 - 11905: 0x9559,\n\t26139 - 11905: 0x955A,\n\t26140 - 11905: 0x955B,\n\t26141 - 11905: 0xEAC3,\n\t26142 - 11905: 0x955C,\n\t26143 - 11905: 0xD0C7,\n\t26144 - 11905: 0xD3B3,\n\t26145 - 11905: 0x955D,\n\t26146 - 11905: 0x955E,\n\t26147 - 11905: 0x955F,\n\t26148 - 11905: 0x9560,\n\t26149 - 11905: 0xB4BA,\n\t26150 - 11905: 0x9561,\n\t26151 - 11905: 0xC3C1,\n\t26152 - 11905: 0xD7F2,\n\t26153 - 11905: 0x9562,\n\t26154 - 11905: 0x9563,\n\t26155 - 11905: 0x9564,\n\t26156 - 11905: 0x9565,\n\t26157 - 11905: 0xD5D1,\n\t26158 - 11905: 0x9566,\n\t26159 - 11905: 0xCAC7,\n\t26160 - 11905: 0x9567,\n\t26161 - 11905: 0xEAC5,\n\t26162 - 11905: 0x9568,\n\t26163 - 11905: 0x9569,\n\t26164 - 11905: 0xEAC4,\n\t26165 - 11905: 0xEAC7,\n\t26166 - 11905: 0xEAC6,\n\t26167 - 11905: 0x956A,\n\t26168 - 11905: 0x956B,\n\t26169 - 11905: 0x956C,\n\t26170 - 11905: 0x956D,\n\t26171 - 11905: 0x956E,\n\t26172 - 11905: 0xD6E7,\n\t26173 - 11905: 0x956F,\n\t26174 - 11905: 0xCFD4,\n\t26175 - 11905: 0x9570,\n\t26176 - 11905: 0x9571,\n\t26177 - 11905: 0xEACB,\n\t26178 - 11905: 0x9572,\n\t26179 - 11905: 0xBBCE,\n\t26180 - 11905: 0x9573,\n\t26181 - 11905: 0x9574,\n\t26182 - 11905: 0x9575,\n\t26183 - 11905: 0x9576,\n\t26184 - 11905: 0x9577,\n\t26185 - 11905: 0x9578,\n\t26186 - 11905: 0x9579,\n\t26187 - 11905: 0xBDFA,\n\t26188 - 11905: 0xC9CE,\n\t26189 - 11905: 0x957A,\n\t26190 - 11905: 0x957B,\n\t26191 - 11905: 0xEACC,\n\t26192 - 11905: 0x957C,\n\t26193 - 11905: 0x957D,\n\t26194 - 11905: 0xC9B9,\n\t26195 - 11905: 0xCFFE,\n\t26196 - 11905: 0xEACA,\n\t26197 - 11905: 0xD4CE,\n\t26198 - 11905: 0xEACD,\n\t26199 - 11905: 0xEACF,\n\t26200 - 11905: 0x957E,\n\t26201 - 11905: 0x9580,\n\t26202 - 11905: 0xCDED,\n\t26203 - 11905: 0x9581,\n\t26204 - 11905: 0x9582,\n\t26205 - 11905: 0x9583,\n\t26206 - 11905: 0x9584,\n\t26207 - 11905: 0xEAC9,\n\t26208 - 11905: 0x9585,\n\t26209 - 11905: 0xEACE,\n\t26210 - 11905: 0x9586,\n\t26211 - 11905: 0x9587,\n\t26212 - 11905: 0xCEEE,\n\t26213 - 11905: 0x9588,\n\t26214 - 11905: 0xBBDE,\n\t26215 - 11905: 0x9589,\n\t26216 - 11905: 0xB3BF,\n\t26217 - 11905: 0x958A,\n\t26218 - 11905: 0x958B,\n\t26219 - 11905: 0x958C,\n\t26220 - 11905: 0x958D,\n\t26221 - 11905: 0x958E,\n\t26222 - 11905: 0xC6D5,\n\t26223 - 11905: 0xBEB0,\n\t26224 - 11905: 0xCEFA,\n\t26225 - 11905: 0x958F,\n\t26226 - 11905: 0x9590,\n\t26227 - 11905: 0x9591,\n\t26228 - 11905: 0xC7E7,\n\t26229 - 11905: 0x9592,\n\t26230 - 11905: 0xBEA7,\n\t26231 - 11905: 0xEAD0,\n\t26232 - 11905: 0x9593,\n\t26233 - 11905: 0x9594,\n\t26234 - 11905: 0xD6C7,\n\t26235 - 11905: 0x9595,\n\t26236 - 11905: 0x9596,\n\t26237 - 11905: 0x9597,\n\t26238 - 11905: 0xC1C0,\n\t26239 - 11905: 0x9598,\n\t26240 - 11905: 0x9599,\n\t26241 - 11905: 0x959A,\n\t26242 - 11905: 0xD4DD,\n\t26243 - 11905: 0x959B,\n\t26244 - 11905: 0xEAD1,\n\t26245 - 11905: 0x959C,\n\t26246 - 11905: 0x959D,\n\t26247 - 11905: 0xCFBE,\n\t26248 - 11905: 0x959E,\n\t26249 - 11905: 0x959F,\n\t26250 - 11905: 0x95A0,\n\t26251 - 11905: 0x95A1,\n\t26252 - 11905: 0xEAD2,\n\t26253 - 11905: 0x95A2,\n\t26254 - 11905: 0x95A3,\n\t26255 - 11905: 0x95A4,\n\t26256 - 11905: 0x95A5,\n\t26257 - 11905: 0xCAEE,\n\t26258 - 11905: 0x95A6,\n\t26259 - 11905: 0x95A7,\n\t26260 - 11905: 0x95A8,\n\t26261 - 11905: 0x95A9,\n\t26262 - 11905: 0xC5AF,\n\t26263 - 11905: 0xB0B5,\n\t26264 - 11905: 0x95AA,\n\t26265 - 11905: 0x95AB,\n\t26266 - 11905: 0x95AC,\n\t26267 - 11905: 0x95AD,\n\t26268 - 11905: 0x95AE,\n\t26269 - 11905: 0xEAD4,\n\t26270 - 11905: 0x95AF,\n\t26271 - 11905: 0x95B0,\n\t26272 - 11905: 0x95B1,\n\t26273 - 11905: 0x95B2,\n\t26274 - 11905: 0x95B3,\n\t26275 - 11905: 0x95B4,\n\t26276 - 11905: 0x95B5,\n\t26277 - 11905: 0x95B6,\n\t26278 - 11905: 0x95B7,\n\t26279 - 11905: 0xEAD3,\n\t26280 - 11905: 0xF4DF,\n\t26281 - 11905: 0x95B8,\n\t26282 - 11905: 0x95B9,\n\t26283 - 11905: 0x95BA,\n\t26284 - 11905: 0x95BB,\n\t26285 - 11905: 0x95BC,\n\t26286 - 11905: 0xC4BA,\n\t26287 - 11905: 0x95BD,\n\t26288 - 11905: 0x95BE,\n\t26289 - 11905: 0x95BF,\n\t26290 - 11905: 0x95C0,\n\t26291 - 11905: 0x95C1,\n\t26292 - 11905: 0xB1A9,\n\t26293 - 11905: 0x95C2,\n\t26294 - 11905: 0x95C3,\n\t26295 - 11905: 0x95C4,\n\t26296 - 11905: 0x95C5,\n\t26297 - 11905: 0xE5DF,\n\t26298 - 11905: 0x95C6,\n\t26299 - 11905: 0x95C7,\n\t26300 - 11905: 0x95C8,\n\t26301 - 11905: 0x95C9,\n\t26302 - 11905: 0xEAD5,\n\t26303 - 11905: 0x95CA,\n\t26304 - 11905: 0x95CB,\n\t26305 - 11905: 0x95CC,\n\t26306 - 11905: 0x95CD,\n\t26307 - 11905: 0x95CE,\n\t26308 - 11905: 0x95CF,\n\t26309 - 11905: 0x95D0,\n\t26310 - 11905: 0x95D1,\n\t26311 - 11905: 0x95D2,\n\t26312 - 11905: 0x95D3,\n\t26313 - 11905: 0x95D4,\n\t26314 - 11905: 0x95D5,\n\t26315 - 11905: 0x95D6,\n\t26316 - 11905: 0x95D7,\n\t26317 - 11905: 0x95D8,\n\t26318 - 11905: 0x95D9,\n\t26319 - 11905: 0x95DA,\n\t26320 - 11905: 0x95DB,\n\t26321 - 11905: 0x95DC,\n\t26322 - 11905: 0x95DD,\n\t26323 - 11905: 0x95DE,\n\t26324 - 11905: 0x95DF,\n\t26325 - 11905: 0x95E0,\n\t26326 - 11905: 0x95E1,\n\t26327 - 11905: 0x95E2,\n\t26328 - 11905: 0x95E3,\n\t26329 - 11905: 0xCAEF,\n\t26330 - 11905: 0x95E4,\n\t26331 - 11905: 0xEAD6,\n\t26332 - 11905: 0xEAD7,\n\t26333 - 11905: 0xC6D8,\n\t26334 - 11905: 0x95E5,\n\t26335 - 11905: 0x95E6,\n\t26336 - 11905: 0x95E7,\n\t26337 - 11905: 0x95E8,\n\t26338 - 11905: 0x95E9,\n\t26339 - 11905: 0x95EA,\n\t26340 - 11905: 0x95EB,\n\t26341 - 11905: 0x95EC,\n\t26342 - 11905: 0xEAD8,\n\t26343 - 11905: 0x95ED,\n\t26344 - 11905: 0x95EE,\n\t26345 - 11905: 0xEAD9,\n\t26346 - 11905: 0x95EF,\n\t26347 - 11905: 0x95F0,\n\t26348 - 11905: 0x95F1,\n\t26349 - 11905: 0x95F2,\n\t26350 - 11905: 0x95F3,\n\t26351 - 11905: 0x95F4,\n\t26352 - 11905: 0xD4BB,\n\t26353 - 11905: 0x95F5,\n\t26354 - 11905: 0xC7FA,\n\t26355 - 11905: 0xD2B7,\n\t26356 - 11905: 0xB8FC,\n\t26357 - 11905: 0x95F6,\n\t26358 - 11905: 0x95F7,\n\t26359 - 11905: 0xEAC2,\n\t26360 - 11905: 0x95F8,\n\t26361 - 11905: 0xB2DC,\n\t26362 - 11905: 0x95F9,\n\t26363 - 11905: 0x95FA,\n\t26364 - 11905: 0xC2FC,\n\t26365 - 11905: 0x95FB,\n\t26366 - 11905: 0xD4F8,\n\t26367 - 11905: 0xCCE6,\n\t26368 - 11905: 0xD7EE,\n\t26369 - 11905: 0x95FC,\n\t26370 - 11905: 0x95FD,\n\t26371 - 11905: 0x95FE,\n\t26372 - 11905: 0x9640,\n\t26373 - 11905: 0x9641,\n\t26374 - 11905: 0x9642,\n\t26375 - 11905: 0x9643,\n\t26376 - 11905: 0xD4C2,\n\t26377 - 11905: 0xD3D0,\n\t26378 - 11905: 0xEBC3,\n\t26379 - 11905: 0xC5F3,\n\t26380 - 11905: 0x9644,\n\t26381 - 11905: 0xB7FE,\n\t26382 - 11905: 0x9645,\n\t26383 - 11905: 0x9646,\n\t26384 - 11905: 0xEBD4,\n\t26385 - 11905: 0x9647,\n\t26386 - 11905: 0x9648,\n\t26387 - 11905: 0x9649,\n\t26388 - 11905: 0xCBB7,\n\t26389 - 11905: 0xEBDE,\n\t26390 - 11905: 0x964A,\n\t26391 - 11905: 0xC0CA,\n\t26392 - 11905: 0x964B,\n\t26393 - 11905: 0x964C,\n\t26394 - 11905: 0x964D,\n\t26395 - 11905: 0xCDFB,\n\t26396 - 11905: 0x964E,\n\t26397 - 11905: 0xB3AF,\n\t26398 - 11905: 0x964F,\n\t26399 - 11905: 0xC6DA,\n\t26400 - 11905: 0x9650,\n\t26401 - 11905: 0x9651,\n\t26402 - 11905: 0x9652,\n\t26403 - 11905: 0x9653,\n\t26404 - 11905: 0x9654,\n\t26405 - 11905: 0x9655,\n\t26406 - 11905: 0xEBFC,\n\t26407 - 11905: 0x9656,\n\t26408 - 11905: 0xC4BE,\n\t26409 - 11905: 0x9657,\n\t26410 - 11905: 0xCEB4,\n\t26411 - 11905: 0xC4A9,\n\t26412 - 11905: 0xB1BE,\n\t26413 - 11905: 0xD4FD,\n\t26414 - 11905: 0x9658,\n\t26415 - 11905: 0xCAF5,\n\t26416 - 11905: 0x9659,\n\t26417 - 11905: 0xD6EC,\n\t26418 - 11905: 0x965A,\n\t26419 - 11905: 0x965B,\n\t26420 - 11905: 0xC6D3,\n\t26421 - 11905: 0xB6E4,\n\t26422 - 11905: 0x965C,\n\t26423 - 11905: 0x965D,\n\t26424 - 11905: 0x965E,\n\t26425 - 11905: 0x965F,\n\t26426 - 11905: 0xBBFA,\n\t26427 - 11905: 0x9660,\n\t26428 - 11905: 0x9661,\n\t26429 - 11905: 0xD0E0,\n\t26430 - 11905: 0x9662,\n\t26431 - 11905: 0x9663,\n\t26432 - 11905: 0xC9B1,\n\t26433 - 11905: 0x9664,\n\t26434 - 11905: 0xD4D3,\n\t26435 - 11905: 0xC8A8,\n\t26436 - 11905: 0x9665,\n\t26437 - 11905: 0x9666,\n\t26438 - 11905: 0xB8CB,\n\t26439 - 11905: 0x9667,\n\t26440 - 11905: 0xE8BE,\n\t26441 - 11905: 0xC9BC,\n\t26442 - 11905: 0x9668,\n\t26443 - 11905: 0x9669,\n\t26444 - 11905: 0xE8BB,\n\t26445 - 11905: 0x966A,\n\t26446 - 11905: 0xC0EE,\n\t26447 - 11905: 0xD0D3,\n\t26448 - 11905: 0xB2C4,\n\t26449 - 11905: 0xB4E5,\n\t26450 - 11905: 0x966B,\n\t26451 - 11905: 0xE8BC,\n\t26452 - 11905: 0x966C,\n\t26453 - 11905: 0x966D,\n\t26454 - 11905: 0xD5C8,\n\t26455 - 11905: 0x966E,\n\t26456 - 11905: 0x966F,\n\t26457 - 11905: 0x9670,\n\t26458 - 11905: 0x9671,\n\t26459 - 11905: 0x9672,\n\t26460 - 11905: 0xB6C5,\n\t26461 - 11905: 0x9673,\n\t26462 - 11905: 0xE8BD,\n\t26463 - 11905: 0xCAF8,\n\t26464 - 11905: 0xB8DC,\n\t26465 - 11905: 0xCCF5,\n\t26466 - 11905: 0x9674,\n\t26467 - 11905: 0x9675,\n\t26468 - 11905: 0x9676,\n\t26469 - 11905: 0xC0B4,\n\t26470 - 11905: 0x9677,\n\t26471 - 11905: 0x9678,\n\t26472 - 11905: 0xD1EE,\n\t26473 - 11905: 0xE8BF,\n\t26474 - 11905: 0xE8C2,\n\t26475 - 11905: 0x9679,\n\t26476 - 11905: 0x967A,\n\t26477 - 11905: 0xBABC,\n\t26478 - 11905: 0x967B,\n\t26479 - 11905: 0xB1AD,\n\t26480 - 11905: 0xBDDC,\n\t26481 - 11905: 0x967C,\n\t26482 - 11905: 0xEABD,\n\t26483 - 11905: 0xE8C3,\n\t26484 - 11905: 0x967D,\n\t26485 - 11905: 0xE8C6,\n\t26486 - 11905: 0x967E,\n\t26487 - 11905: 0xE8CB,\n\t26488 - 11905: 0x9680,\n\t26489 - 11905: 0x9681,\n\t26490 - 11905: 0x9682,\n\t26491 - 11905: 0x9683,\n\t26492 - 11905: 0xE8CC,\n\t26493 - 11905: 0x9684,\n\t26494 - 11905: 0xCBC9,\n\t26495 - 11905: 0xB0E5,\n\t26496 - 11905: 0x9685,\n\t26497 - 11905: 0xBCAB,\n\t26498 - 11905: 0x9686,\n\t26499 - 11905: 0x9687,\n\t26500 - 11905: 0xB9B9,\n\t26501 - 11905: 0x9688,\n\t26502 - 11905: 0x9689,\n\t26503 - 11905: 0xE8C1,\n\t26504 - 11905: 0x968A,\n\t26505 - 11905: 0xCDF7,\n\t26506 - 11905: 0x968B,\n\t26507 - 11905: 0xE8CA,\n\t26508 - 11905: 0x968C,\n\t26509 - 11905: 0x968D,\n\t26510 - 11905: 0x968E,\n\t26511 - 11905: 0x968F,\n\t26512 - 11905: 0xCEF6,\n\t26513 - 11905: 0x9690,\n\t26514 - 11905: 0x9691,\n\t26515 - 11905: 0x9692,\n\t26516 - 11905: 0x9693,\n\t26517 - 11905: 0xD5ED,\n\t26518 - 11905: 0x9694,\n\t26519 - 11905: 0xC1D6,\n\t26520 - 11905: 0xE8C4,\n\t26521 - 11905: 0x9695,\n\t26522 - 11905: 0xC3B6,\n\t26523 - 11905: 0x9696,\n\t26524 - 11905: 0xB9FB,\n\t26525 - 11905: 0xD6A6,\n\t26526 - 11905: 0xE8C8,\n\t26527 - 11905: 0x9697,\n\t26528 - 11905: 0x9698,\n\t26529 - 11905: 0x9699,\n\t26530 - 11905: 0xCAE0,\n\t26531 - 11905: 0xD4E6,\n\t26532 - 11905: 0x969A,\n\t26533 - 11905: 0xE8C0,\n\t26534 - 11905: 0x969B,\n\t26535 - 11905: 0xE8C5,\n\t26536 - 11905: 0xE8C7,\n\t26537 - 11905: 0x969C,\n\t26538 - 11905: 0xC7B9,\n\t26539 - 11905: 0xB7E3,\n\t26540 - 11905: 0x969D,\n\t26541 - 11905: 0xE8C9,\n\t26542 - 11905: 0x969E,\n\t26543 - 11905: 0xBFDD,\n\t26544 - 11905: 0xE8D2,\n\t26545 - 11905: 0x969F,\n\t26546 - 11905: 0x96A0,\n\t26547 - 11905: 0xE8D7,\n\t26548 - 11905: 0x96A1,\n\t26549 - 11905: 0xE8D5,\n\t26550 - 11905: 0xBCDC,\n\t26551 - 11905: 0xBCCF,\n\t26552 - 11905: 0xE8DB,\n\t26553 - 11905: 0x96A2,\n\t26554 - 11905: 0x96A3,\n\t26555 - 11905: 0x96A4,\n\t26556 - 11905: 0x96A5,\n\t26557 - 11905: 0x96A6,\n\t26558 - 11905: 0x96A7,\n\t26559 - 11905: 0x96A8,\n\t26560 - 11905: 0x96A9,\n\t26561 - 11905: 0xE8DE,\n\t26562 - 11905: 0x96AA,\n\t26563 - 11905: 0xE8DA,\n\t26564 - 11905: 0xB1FA,\n\t26565 - 11905: 0x96AB,\n\t26566 - 11905: 0x96AC,\n\t26567 - 11905: 0x96AD,\n\t26568 - 11905: 0x96AE,\n\t26569 - 11905: 0x96AF,\n\t26570 - 11905: 0x96B0,\n\t26571 - 11905: 0x96B1,\n\t26572 - 11905: 0x96B2,\n\t26573 - 11905: 0x96B3,\n\t26574 - 11905: 0x96B4,\n\t26575 - 11905: 0xB0D8,\n\t26576 - 11905: 0xC4B3,\n\t26577 - 11905: 0xB8CC,\n\t26578 - 11905: 0xC6E2,\n\t26579 - 11905: 0xC8BE,\n\t26580 - 11905: 0xC8E1,\n\t26581 - 11905: 0x96B5,\n\t26582 - 11905: 0x96B6,\n\t26583 - 11905: 0x96B7,\n\t26584 - 11905: 0xE8CF,\n\t26585 - 11905: 0xE8D4,\n\t26586 - 11905: 0xE8D6,\n\t26587 - 11905: 0x96B8,\n\t26588 - 11905: 0xB9F1,\n\t26589 - 11905: 0xE8D8,\n\t26590 - 11905: 0xD7F5,\n\t26591 - 11905: 0x96B9,\n\t26592 - 11905: 0xC4FB,\n\t26593 - 11905: 0x96BA,\n\t26594 - 11905: 0xE8DC,\n\t26595 - 11905: 0x96BB,\n\t26596 - 11905: 0x96BC,\n\t26597 - 11905: 0xB2E9,\n\t26598 - 11905: 0x96BD,\n\t26599 - 11905: 0x96BE,\n\t26600 - 11905: 0x96BF,\n\t26601 - 11905: 0xE8D1,\n\t26602 - 11905: 0x96C0,\n\t26603 - 11905: 0x96C1,\n\t26604 - 11905: 0xBCED,\n\t26605 - 11905: 0x96C2,\n\t26606 - 11905: 0x96C3,\n\t26607 - 11905: 0xBFC2,\n\t26608 - 11905: 0xE8CD,\n\t26609 - 11905: 0xD6F9,\n\t26610 - 11905: 0x96C4,\n\t26611 - 11905: 0xC1F8,\n\t26612 - 11905: 0xB2F1,\n\t26613 - 11905: 0x96C5,\n\t26614 - 11905: 0x96C6,\n\t26615 - 11905: 0x96C7,\n\t26616 - 11905: 0x96C8,\n\t26617 - 11905: 0x96C9,\n\t26618 - 11905: 0x96CA,\n\t26619 - 11905: 0x96CB,\n\t26620 - 11905: 0x96CC,\n\t26621 - 11905: 0xE8DF,\n\t26622 - 11905: 0x96CD,\n\t26623 - 11905: 0xCAC1,\n\t26624 - 11905: 0xE8D9,\n\t26625 - 11905: 0x96CE,\n\t26626 - 11905: 0x96CF,\n\t26627 - 11905: 0x96D0,\n\t26628 - 11905: 0x96D1,\n\t26629 - 11905: 0xD5A4,\n\t26630 - 11905: 0x96D2,\n\t26631 - 11905: 0xB1EA,\n\t26632 - 11905: 0xD5BB,\n\t26633 - 11905: 0xE8CE,\n\t26634 - 11905: 0xE8D0,\n\t26635 - 11905: 0xB6B0,\n\t26636 - 11905: 0xE8D3,\n\t26637 - 11905: 0x96D3,\n\t26638 - 11905: 0xE8DD,\n\t26639 - 11905: 0xC0B8,\n\t26640 - 11905: 0x96D4,\n\t26641 - 11905: 0xCAF7,\n\t26642 - 11905: 0x96D5,\n\t26643 - 11905: 0xCBA8,\n\t26644 - 11905: 0x96D6,\n\t26645 - 11905: 0x96D7,\n\t26646 - 11905: 0xC6DC,\n\t26647 - 11905: 0xC0F5,\n\t26648 - 11905: 0x96D8,\n\t26649 - 11905: 0x96D9,\n\t26650 - 11905: 0x96DA,\n\t26651 - 11905: 0x96DB,\n\t26652 - 11905: 0x96DC,\n\t26653 - 11905: 0xE8E9,\n\t26654 - 11905: 0x96DD,\n\t26655 - 11905: 0x96DE,\n\t26656 - 11905: 0x96DF,\n\t26657 - 11905: 0xD0A3,\n\t26658 - 11905: 0x96E0,\n\t26659 - 11905: 0x96E1,\n\t26660 - 11905: 0x96E2,\n\t26661 - 11905: 0x96E3,\n\t26662 - 11905: 0x96E4,\n\t26663 - 11905: 0x96E5,\n\t26664 - 11905: 0x96E6,\n\t26665 - 11905: 0xE8F2,\n\t26666 - 11905: 0xD6EA,\n\t26667 - 11905: 0x96E7,\n\t26668 - 11905: 0x96E8,\n\t26669 - 11905: 0x96E9,\n\t26670 - 11905: 0x96EA,\n\t26671 - 11905: 0x96EB,\n\t26672 - 11905: 0x96EC,\n\t26673 - 11905: 0x96ED,\n\t26674 - 11905: 0xE8E0,\n\t26675 - 11905: 0xE8E1,\n\t26676 - 11905: 0x96EE,\n\t26677 - 11905: 0x96EF,\n\t26678 - 11905: 0x96F0,\n\t26679 - 11905: 0xD1F9,\n\t26680 - 11905: 0xBACB,\n\t26681 - 11905: 0xB8F9,\n\t26682 - 11905: 0x96F1,\n\t26683 - 11905: 0x96F2,\n\t26684 - 11905: 0xB8F1,\n\t26685 - 11905: 0xD4D4,\n\t26686 - 11905: 0xE8EF,\n\t26687 - 11905: 0x96F3,\n\t26688 - 11905: 0xE8EE,\n\t26689 - 11905: 0xE8EC,\n\t26690 - 11905: 0xB9F0,\n\t26691 - 11905: 0xCCD2,\n\t26692 - 11905: 0xE8E6,\n\t26693 - 11905: 0xCEA6,\n\t26694 - 11905: 0xBFF2,\n\t26695 - 11905: 0x96F4,\n\t26696 - 11905: 0xB0B8,\n\t26697 - 11905: 0xE8F1,\n\t26698 - 11905: 0xE8F0,\n\t26699 - 11905: 0x96F5,\n\t26700 - 11905: 0xD7C0,\n\t26701 - 11905: 0x96F6,\n\t26702 - 11905: 0xE8E4,\n\t26703 - 11905: 0x96F7,\n\t26704 - 11905: 0xCDA9,\n\t26705 - 11905: 0xC9A3,\n\t26706 - 11905: 0x96F8,\n\t26707 - 11905: 0xBBB8,\n\t26708 - 11905: 0xBDDB,\n\t26709 - 11905: 0xE8EA,\n\t26710 - 11905: 0x96F9,\n\t26711 - 11905: 0x96FA,\n\t26712 - 11905: 0x96FB,\n\t26713 - 11905: 0x96FC,\n\t26714 - 11905: 0x96FD,\n\t26715 - 11905: 0x96FE,\n\t26716 - 11905: 0x9740,\n\t26717 - 11905: 0x9741,\n\t26718 - 11905: 0x9742,\n\t26719 - 11905: 0x9743,\n\t26720 - 11905: 0xE8E2,\n\t26721 - 11905: 0xE8E3,\n\t26722 - 11905: 0xE8E5,\n\t26723 - 11905: 0xB5B5,\n\t26724 - 11905: 0xE8E7,\n\t26725 - 11905: 0xC7C5,\n\t26726 - 11905: 0xE8EB,\n\t26727 - 11905: 0xE8ED,\n\t26728 - 11905: 0xBDB0,\n\t26729 - 11905: 0xD7AE,\n\t26730 - 11905: 0x9744,\n\t26731 - 11905: 0xE8F8,\n\t26732 - 11905: 0x9745,\n\t26733 - 11905: 0x9746,\n\t26734 - 11905: 0x9747,\n\t26735 - 11905: 0x9748,\n\t26736 - 11905: 0x9749,\n\t26737 - 11905: 0x974A,\n\t26738 - 11905: 0x974B,\n\t26739 - 11905: 0x974C,\n\t26740 - 11905: 0xE8F5,\n\t26741 - 11905: 0x974D,\n\t26742 - 11905: 0xCDB0,\n\t26743 - 11905: 0xE8F6,\n\t26744 - 11905: 0x974E,\n\t26745 - 11905: 0x974F,\n\t26746 - 11905: 0x9750,\n\t26747 - 11905: 0x9751,\n\t26748 - 11905: 0x9752,\n\t26749 - 11905: 0x9753,\n\t26750 - 11905: 0x9754,\n\t26751 - 11905: 0x9755,\n\t26752 - 11905: 0x9756,\n\t26753 - 11905: 0xC1BA,\n\t26754 - 11905: 0x9757,\n\t26755 - 11905: 0xE8E8,\n\t26756 - 11905: 0x9758,\n\t26757 - 11905: 0xC3B7,\n\t26758 - 11905: 0xB0F0,\n\t26759 - 11905: 0x9759,\n\t26760 - 11905: 0x975A,\n\t26761 - 11905: 0x975B,\n\t26762 - 11905: 0x975C,\n\t26763 - 11905: 0x975D,\n\t26764 - 11905: 0x975E,\n\t26765 - 11905: 0x975F,\n\t26766 - 11905: 0x9760,\n\t26767 - 11905: 0xE8F4,\n\t26768 - 11905: 0x9761,\n\t26769 - 11905: 0x9762,\n\t26770 - 11905: 0x9763,\n\t26771 - 11905: 0xE8F7,\n\t26772 - 11905: 0x9764,\n\t26773 - 11905: 0x9765,\n\t26774 - 11905: 0x9766,\n\t26775 - 11905: 0xB9A3,\n\t26776 - 11905: 0x9767,\n\t26777 - 11905: 0x9768,\n\t26778 - 11905: 0x9769,\n\t26779 - 11905: 0x976A,\n\t26780 - 11905: 0x976B,\n\t26781 - 11905: 0x976C,\n\t26782 - 11905: 0x976D,\n\t26783 - 11905: 0x976E,\n\t26784 - 11905: 0x976F,\n\t26785 - 11905: 0x9770,\n\t26786 - 11905: 0xC9D2,\n\t26787 - 11905: 0x9771,\n\t26788 - 11905: 0x9772,\n\t26789 - 11905: 0x9773,\n\t26790 - 11905: 0xC3CE,\n\t26791 - 11905: 0xCEE0,\n\t26792 - 11905: 0xC0E6,\n\t26793 - 11905: 0x9774,\n\t26794 - 11905: 0x9775,\n\t26795 - 11905: 0x9776,\n\t26796 - 11905: 0x9777,\n\t26797 - 11905: 0xCBF3,\n\t26798 - 11905: 0x9778,\n\t26799 - 11905: 0xCCDD,\n\t26800 - 11905: 0xD0B5,\n\t26801 - 11905: 0x9779,\n\t26802 - 11905: 0x977A,\n\t26803 - 11905: 0xCAE1,\n\t26804 - 11905: 0x977B,\n\t26805 - 11905: 0xE8F3,\n\t26806 - 11905: 0x977C,\n\t26807 - 11905: 0x977D,\n\t26808 - 11905: 0x977E,\n\t26809 - 11905: 0x9780,\n\t26810 - 11905: 0x9781,\n\t26811 - 11905: 0x9782,\n\t26812 - 11905: 0x9783,\n\t26813 - 11905: 0x9784,\n\t26814 - 11905: 0x9785,\n\t26815 - 11905: 0x9786,\n\t26816 - 11905: 0xBCEC,\n\t26817 - 11905: 0x9787,\n\t26818 - 11905: 0xE8F9,\n\t26819 - 11905: 0x9788,\n\t26820 - 11905: 0x9789,\n\t26821 - 11905: 0x978A,\n\t26822 - 11905: 0x978B,\n\t26823 - 11905: 0x978C,\n\t26824 - 11905: 0x978D,\n\t26825 - 11905: 0xC3DE,\n\t26826 - 11905: 0x978E,\n\t26827 - 11905: 0xC6E5,\n\t26828 - 11905: 0x978F,\n\t26829 - 11905: 0xB9F7,\n\t26830 - 11905: 0x9790,\n\t26831 - 11905: 0x9791,\n\t26832 - 11905: 0x9792,\n\t26833 - 11905: 0x9793,\n\t26834 - 11905: 0xB0F4,\n\t26835 - 11905: 0x9794,\n\t26836 - 11905: 0x9795,\n\t26837 - 11905: 0xD7D8,\n\t26838 - 11905: 0x9796,\n\t26839 - 11905: 0x9797,\n\t26840 - 11905: 0xBCAC,\n\t26841 - 11905: 0x9798,\n\t26842 - 11905: 0xC5EF,\n\t26843 - 11905: 0x9799,\n\t26844 - 11905: 0x979A,\n\t26845 - 11905: 0x979B,\n\t26846 - 11905: 0x979C,\n\t26847 - 11905: 0x979D,\n\t26848 - 11905: 0xCCC4,\n\t26849 - 11905: 0x979E,\n\t26850 - 11905: 0x979F,\n\t26851 - 11905: 0xE9A6,\n\t26852 - 11905: 0x97A0,\n\t26853 - 11905: 0x97A1,\n\t26854 - 11905: 0x97A2,\n\t26855 - 11905: 0x97A3,\n\t26856 - 11905: 0x97A4,\n\t26857 - 11905: 0x97A5,\n\t26858 - 11905: 0x97A6,\n\t26859 - 11905: 0x97A7,\n\t26860 - 11905: 0x97A8,\n\t26861 - 11905: 0x97A9,\n\t26862 - 11905: 0xC9AD,\n\t26863 - 11905: 0x97AA,\n\t26864 - 11905: 0xE9A2,\n\t26865 - 11905: 0xC0E2,\n\t26866 - 11905: 0x97AB,\n\t26867 - 11905: 0x97AC,\n\t26868 - 11905: 0x97AD,\n\t26869 - 11905: 0xBFC3,\n\t26870 - 11905: 0x97AE,\n\t26871 - 11905: 0x97AF,\n\t26872 - 11905: 0x97B0,\n\t26873 - 11905: 0xE8FE,\n\t26874 - 11905: 0xB9D7,\n\t26875 - 11905: 0x97B1,\n\t26876 - 11905: 0xE8FB,\n\t26877 - 11905: 0x97B2,\n\t26878 - 11905: 0x97B3,\n\t26879 - 11905: 0x97B4,\n\t26880 - 11905: 0x97B5,\n\t26881 - 11905: 0xE9A4,\n\t26882 - 11905: 0x97B6,\n\t26883 - 11905: 0x97B7,\n\t26884 - 11905: 0x97B8,\n\t26885 - 11905: 0xD2CE,\n\t26886 - 11905: 0x97B9,\n\t26887 - 11905: 0x97BA,\n\t26888 - 11905: 0x97BB,\n\t26889 - 11905: 0x97BC,\n\t26890 - 11905: 0x97BD,\n\t26891 - 11905: 0xE9A3,\n\t26892 - 11905: 0x97BE,\n\t26893 - 11905: 0xD6B2,\n\t26894 - 11905: 0xD7B5,\n\t26895 - 11905: 0x97BF,\n\t26896 - 11905: 0xE9A7,\n\t26897 - 11905: 0x97C0,\n\t26898 - 11905: 0xBDB7,\n\t26899 - 11905: 0x97C1,\n\t26900 - 11905: 0x97C2,\n\t26901 - 11905: 0x97C3,\n\t26902 - 11905: 0x97C4,\n\t26903 - 11905: 0x97C5,\n\t26904 - 11905: 0x97C6,\n\t26905 - 11905: 0x97C7,\n\t26906 - 11905: 0x97C8,\n\t26907 - 11905: 0x97C9,\n\t26908 - 11905: 0x97CA,\n\t26909 - 11905: 0x97CB,\n\t26910 - 11905: 0x97CC,\n\t26911 - 11905: 0xE8FC,\n\t26912 - 11905: 0xE8FD,\n\t26913 - 11905: 0x97CD,\n\t26914 - 11905: 0x97CE,\n\t26915 - 11905: 0x97CF,\n\t26916 - 11905: 0xE9A1,\n\t26917 - 11905: 0x97D0,\n\t26918 - 11905: 0x97D1,\n\t26919 - 11905: 0x97D2,\n\t26920 - 11905: 0x97D3,\n\t26921 - 11905: 0x97D4,\n\t26922 - 11905: 0x97D5,\n\t26923 - 11905: 0x97D6,\n\t26924 - 11905: 0x97D7,\n\t26925 - 11905: 0xCDD6,\n\t26926 - 11905: 0x97D8,\n\t26927 - 11905: 0x97D9,\n\t26928 - 11905: 0xD2AC,\n\t26929 - 11905: 0x97DA,\n\t26930 - 11905: 0x97DB,\n\t26931 - 11905: 0x97DC,\n\t26932 - 11905: 0xE9B2,\n\t26933 - 11905: 0x97DD,\n\t26934 - 11905: 0x97DE,\n\t26935 - 11905: 0x97DF,\n\t26936 - 11905: 0x97E0,\n\t26937 - 11905: 0xE9A9,\n\t26938 - 11905: 0x97E1,\n\t26939 - 11905: 0x97E2,\n\t26940 - 11905: 0x97E3,\n\t26941 - 11905: 0xB4AA,\n\t26942 - 11905: 0x97E4,\n\t26943 - 11905: 0xB4BB,\n\t26944 - 11905: 0x97E5,\n\t26945 - 11905: 0x97E6,\n\t26946 - 11905: 0xE9AB,\n\t26947 - 11905: 0x97E7,\n\t26948 - 11905: 0x97E8,\n\t26949 - 11905: 0x97E9,\n\t26950 - 11905: 0x97EA,\n\t26951 - 11905: 0x97EB,\n\t26952 - 11905: 0x97EC,\n\t26953 - 11905: 0x97ED,\n\t26954 - 11905: 0x97EE,\n\t26955 - 11905: 0x97EF,\n\t26956 - 11905: 0x97F0,\n\t26957 - 11905: 0x97F1,\n\t26958 - 11905: 0x97F2,\n\t26959 - 11905: 0x97F3,\n\t26960 - 11905: 0x97F4,\n\t26961 - 11905: 0x97F5,\n\t26962 - 11905: 0x97F6,\n\t26963 - 11905: 0x97F7,\n\t26964 - 11905: 0xD0A8,\n\t26965 - 11905: 0x97F8,\n\t26966 - 11905: 0x97F9,\n\t26967 - 11905: 0xE9A5,\n\t26968 - 11905: 0x97FA,\n\t26969 - 11905: 0x97FB,\n\t26970 - 11905: 0xB3FE,\n\t26971 - 11905: 0x97FC,\n\t26972 - 11905: 0x97FD,\n\t26973 - 11905: 0xE9AC,\n\t26974 - 11905: 0xC0E3,\n\t26975 - 11905: 0x97FE,\n\t26976 - 11905: 0xE9AA,\n\t26977 - 11905: 0x9840,\n\t26978 - 11905: 0x9841,\n\t26979 - 11905: 0xE9B9,\n\t26980 - 11905: 0x9842,\n\t26981 - 11905: 0x9843,\n\t26982 - 11905: 0xE9B8,\n\t26983 - 11905: 0x9844,\n\t26984 - 11905: 0x9845,\n\t26985 - 11905: 0x9846,\n\t26986 - 11905: 0x9847,\n\t26987 - 11905: 0xE9AE,\n\t26988 - 11905: 0x9848,\n\t26989 - 11905: 0x9849,\n\t26990 - 11905: 0xE8FA,\n\t26991 - 11905: 0x984A,\n\t26992 - 11905: 0x984B,\n\t26993 - 11905: 0xE9A8,\n\t26994 - 11905: 0x984C,\n\t26995 - 11905: 0x984D,\n\t26996 - 11905: 0x984E,\n\t26997 - 11905: 0x984F,\n\t26998 - 11905: 0x9850,\n\t26999 - 11905: 0xBFAC,\n\t27000 - 11905: 0xE9B1,\n\t27001 - 11905: 0xE9BA,\n\t27002 - 11905: 0x9851,\n\t27003 - 11905: 0x9852,\n\t27004 - 11905: 0xC2A5,\n\t27005 - 11905: 0x9853,\n\t27006 - 11905: 0x9854,\n\t27007 - 11905: 0x9855,\n\t27008 - 11905: 0xE9AF,\n\t27009 - 11905: 0x9856,\n\t27010 - 11905: 0xB8C5,\n\t27011 - 11905: 0x9857,\n\t27012 - 11905: 0xE9AD,\n\t27013 - 11905: 0x9858,\n\t27014 - 11905: 0xD3DC,\n\t27015 - 11905: 0xE9B4,\n\t27016 - 11905: 0xE9B5,\n\t27017 - 11905: 0xE9B7,\n\t27018 - 11905: 0x9859,\n\t27019 - 11905: 0x985A,\n\t27020 - 11905: 0x985B,\n\t27021 - 11905: 0xE9C7,\n\t27022 - 11905: 0x985C,\n\t27023 - 11905: 0x985D,\n\t27024 - 11905: 0x985E,\n\t27025 - 11905: 0x985F,\n\t27026 - 11905: 0x9860,\n\t27027 - 11905: 0x9861,\n\t27028 - 11905: 0xC0C6,\n\t27029 - 11905: 0xE9C5,\n\t27030 - 11905: 0x9862,\n\t27031 - 11905: 0x9863,\n\t27032 - 11905: 0xE9B0,\n\t27033 - 11905: 0x9864,\n\t27034 - 11905: 0x9865,\n\t27035 - 11905: 0xE9BB,\n\t27036 - 11905: 0xB0F1,\n\t27037 - 11905: 0x9866,\n\t27038 - 11905: 0x9867,\n\t27039 - 11905: 0x9868,\n\t27040 - 11905: 0x9869,\n\t27041 - 11905: 0x986A,\n\t27042 - 11905: 0x986B,\n\t27043 - 11905: 0x986C,\n\t27044 - 11905: 0x986D,\n\t27045 - 11905: 0x986E,\n\t27046 - 11905: 0x986F,\n\t27047 - 11905: 0xE9BC,\n\t27048 - 11905: 0xD5A5,\n\t27049 - 11905: 0x9870,\n\t27050 - 11905: 0x9871,\n\t27051 - 11905: 0xE9BE,\n\t27052 - 11905: 0x9872,\n\t27053 - 11905: 0xE9BF,\n\t27054 - 11905: 0x9873,\n\t27055 - 11905: 0x9874,\n\t27056 - 11905: 0x9875,\n\t27057 - 11905: 0xE9C1,\n\t27058 - 11905: 0x9876,\n\t27059 - 11905: 0x9877,\n\t27060 - 11905: 0xC1F1,\n\t27061 - 11905: 0x9878,\n\t27062 - 11905: 0x9879,\n\t27063 - 11905: 0xC8B6,\n\t27064 - 11905: 0x987A,\n\t27065 - 11905: 0x987B,\n\t27066 - 11905: 0x987C,\n\t27067 - 11905: 0xE9BD,\n\t27068 - 11905: 0x987D,\n\t27069 - 11905: 0x987E,\n\t27070 - 11905: 0x9880,\n\t27071 - 11905: 0x9881,\n\t27072 - 11905: 0x9882,\n\t27073 - 11905: 0xE9C2,\n\t27074 - 11905: 0x9883,\n\t27075 - 11905: 0x9884,\n\t27076 - 11905: 0x9885,\n\t27077 - 11905: 0x9886,\n\t27078 - 11905: 0x9887,\n\t27079 - 11905: 0x9888,\n\t27080 - 11905: 0x9889,\n\t27081 - 11905: 0x988A,\n\t27082 - 11905: 0xE9C3,\n\t27083 - 11905: 0x988B,\n\t27084 - 11905: 0xE9B3,\n\t27085 - 11905: 0x988C,\n\t27086 - 11905: 0xE9B6,\n\t27087 - 11905: 0x988D,\n\t27088 - 11905: 0xBBB1,\n\t27089 - 11905: 0x988E,\n\t27090 - 11905: 0x988F,\n\t27091 - 11905: 0x9890,\n\t27092 - 11905: 0xE9C0,\n\t27093 - 11905: 0x9891,\n\t27094 - 11905: 0x9892,\n\t27095 - 11905: 0x9893,\n\t27096 - 11905: 0x9894,\n\t27097 - 11905: 0x9895,\n\t27098 - 11905: 0x9896,\n\t27099 - 11905: 0xBCF7,\n\t27100 - 11905: 0x9897,\n\t27101 - 11905: 0x9898,\n\t27102 - 11905: 0x9899,\n\t27103 - 11905: 0xE9C4,\n\t27104 - 11905: 0xE9C6,\n\t27105 - 11905: 0x989A,\n\t27106 - 11905: 0x989B,\n\t27107 - 11905: 0x989C,\n\t27108 - 11905: 0x989D,\n\t27109 - 11905: 0x989E,\n\t27110 - 11905: 0x989F,\n\t27111 - 11905: 0x98A0,\n\t27112 - 11905: 0x98A1,\n\t27113 - 11905: 0x98A2,\n\t27114 - 11905: 0x98A3,\n\t27115 - 11905: 0x98A4,\n\t27116 - 11905: 0x98A5,\n\t27117 - 11905: 0xE9CA,\n\t27118 - 11905: 0x98A6,\n\t27119 - 11905: 0x98A7,\n\t27120 - 11905: 0x98A8,\n\t27121 - 11905: 0x98A9,\n\t27122 - 11905: 0xE9CE,\n\t27123 - 11905: 0x98AA,\n\t27124 - 11905: 0x98AB,\n\t27125 - 11905: 0x98AC,\n\t27126 - 11905: 0x98AD,\n\t27127 - 11905: 0x98AE,\n\t27128 - 11905: 0x98AF,\n\t27129 - 11905: 0x98B0,\n\t27130 - 11905: 0x98B1,\n\t27131 - 11905: 0x98B2,\n\t27132 - 11905: 0x98B3,\n\t27133 - 11905: 0xB2DB,\n\t27134 - 11905: 0x98B4,\n\t27135 - 11905: 0xE9C8,\n\t27136 - 11905: 0x98B5,\n\t27137 - 11905: 0x98B6,\n\t27138 - 11905: 0x98B7,\n\t27139 - 11905: 0x98B8,\n\t27140 - 11905: 0x98B9,\n\t27141 - 11905: 0x98BA,\n\t27142 - 11905: 0x98BB,\n\t27143 - 11905: 0x98BC,\n\t27144 - 11905: 0x98BD,\n\t27145 - 11905: 0x98BE,\n\t27146 - 11905: 0xB7AE,\n\t27147 - 11905: 0x98BF,\n\t27148 - 11905: 0x98C0,\n\t27149 - 11905: 0x98C1,\n\t27150 - 11905: 0x98C2,\n\t27151 - 11905: 0x98C3,\n\t27152 - 11905: 0x98C4,\n\t27153 - 11905: 0x98C5,\n\t27154 - 11905: 0x98C6,\n\t27155 - 11905: 0x98C7,\n\t27156 - 11905: 0x98C8,\n\t27157 - 11905: 0x98C9,\n\t27158 - 11905: 0x98CA,\n\t27159 - 11905: 0xE9CB,\n\t27160 - 11905: 0xE9CC,\n\t27161 - 11905: 0x98CB,\n\t27162 - 11905: 0x98CC,\n\t27163 - 11905: 0x98CD,\n\t27164 - 11905: 0x98CE,\n\t27165 - 11905: 0x98CF,\n\t27166 - 11905: 0x98D0,\n\t27167 - 11905: 0xD5C1,\n\t27168 - 11905: 0x98D1,\n\t27169 - 11905: 0xC4A3,\n\t27170 - 11905: 0x98D2,\n\t27171 - 11905: 0x98D3,\n\t27172 - 11905: 0x98D4,\n\t27173 - 11905: 0x98D5,\n\t27174 - 11905: 0x98D6,\n\t27175 - 11905: 0x98D7,\n\t27176 - 11905: 0xE9D8,\n\t27177 - 11905: 0x98D8,\n\t27178 - 11905: 0xBAE1,\n\t27179 - 11905: 0x98D9,\n\t27180 - 11905: 0x98DA,\n\t27181 - 11905: 0x98DB,\n\t27182 - 11905: 0x98DC,\n\t27183 - 11905: 0xE9C9,\n\t27184 - 11905: 0x98DD,\n\t27185 - 11905: 0xD3A3,\n\t27186 - 11905: 0x98DE,\n\t27187 - 11905: 0x98DF,\n\t27188 - 11905: 0x98E0,\n\t27189 - 11905: 0xE9D4,\n\t27190 - 11905: 0x98E1,\n\t27191 - 11905: 0x98E2,\n\t27192 - 11905: 0x98E3,\n\t27193 - 11905: 0x98E4,\n\t27194 - 11905: 0x98E5,\n\t27195 - 11905: 0x98E6,\n\t27196 - 11905: 0x98E7,\n\t27197 - 11905: 0xE9D7,\n\t27198 - 11905: 0xE9D0,\n\t27199 - 11905: 0x98E8,\n\t27200 - 11905: 0x98E9,\n\t27201 - 11905: 0x98EA,\n\t27202 - 11905: 0x98EB,\n\t27203 - 11905: 0x98EC,\n\t27204 - 11905: 0xE9CF,\n\t27205 - 11905: 0x98ED,\n\t27206 - 11905: 0x98EE,\n\t27207 - 11905: 0xC7C1,\n\t27208 - 11905: 0x98EF,\n\t27209 - 11905: 0x98F0,\n\t27210 - 11905: 0x98F1,\n\t27211 - 11905: 0x98F2,\n\t27212 - 11905: 0x98F3,\n\t27213 - 11905: 0x98F4,\n\t27214 - 11905: 0x98F5,\n\t27215 - 11905: 0x98F6,\n\t27216 - 11905: 0xE9D2,\n\t27217 - 11905: 0x98F7,\n\t27218 - 11905: 0x98F8,\n\t27219 - 11905: 0x98F9,\n\t27220 - 11905: 0x98FA,\n\t27221 - 11905: 0x98FB,\n\t27222 - 11905: 0x98FC,\n\t27223 - 11905: 0x98FD,\n\t27224 - 11905: 0xE9D9,\n\t27225 - 11905: 0xB3C8,\n\t27226 - 11905: 0x98FE,\n\t27227 - 11905: 0xE9D3,\n\t27228 - 11905: 0x9940,\n\t27229 - 11905: 0x9941,\n\t27230 - 11905: 0x9942,\n\t27231 - 11905: 0x9943,\n\t27232 - 11905: 0x9944,\n\t27233 - 11905: 0xCFF0,\n\t27234 - 11905: 0x9945,\n\t27235 - 11905: 0x9946,\n\t27236 - 11905: 0x9947,\n\t27237 - 11905: 0xE9CD,\n\t27238 - 11905: 0x9948,\n\t27239 - 11905: 0x9949,\n\t27240 - 11905: 0x994A,\n\t27241 - 11905: 0x994B,\n\t27242 - 11905: 0x994C,\n\t27243 - 11905: 0x994D,\n\t27244 - 11905: 0x994E,\n\t27245 - 11905: 0x994F,\n\t27246 - 11905: 0x9950,\n\t27247 - 11905: 0x9951,\n\t27248 - 11905: 0x9952,\n\t27249 - 11905: 0xB3F7,\n\t27250 - 11905: 0x9953,\n\t27251 - 11905: 0x9954,\n\t27252 - 11905: 0x9955,\n\t27253 - 11905: 0x9956,\n\t27254 - 11905: 0x9957,\n\t27255 - 11905: 0x9958,\n\t27256 - 11905: 0x9959,\n\t27257 - 11905: 0xE9D6,\n\t27258 - 11905: 0x995A,\n\t27259 - 11905: 0x995B,\n\t27260 - 11905: 0xE9DA,\n\t27261 - 11905: 0x995C,\n\t27262 - 11905: 0x995D,\n\t27263 - 11905: 0x995E,\n\t27264 - 11905: 0xCCB4,\n\t27265 - 11905: 0x995F,\n\t27266 - 11905: 0x9960,\n\t27267 - 11905: 0x9961,\n\t27268 - 11905: 0xCFAD,\n\t27269 - 11905: 0x9962,\n\t27270 - 11905: 0x9963,\n\t27271 - 11905: 0x9964,\n\t27272 - 11905: 0x9965,\n\t27273 - 11905: 0x9966,\n\t27274 - 11905: 0x9967,\n\t27275 - 11905: 0x9968,\n\t27276 - 11905: 0x9969,\n\t27277 - 11905: 0x996A,\n\t27278 - 11905: 0xE9D5,\n\t27279 - 11905: 0x996B,\n\t27280 - 11905: 0xE9DC,\n\t27281 - 11905: 0xE9DB,\n\t27282 - 11905: 0x996C,\n\t27283 - 11905: 0x996D,\n\t27284 - 11905: 0x996E,\n\t27285 - 11905: 0x996F,\n\t27286 - 11905: 0x9970,\n\t27287 - 11905: 0xE9DE,\n\t27288 - 11905: 0x9971,\n\t27289 - 11905: 0x9972,\n\t27290 - 11905: 0x9973,\n\t27291 - 11905: 0x9974,\n\t27292 - 11905: 0x9975,\n\t27293 - 11905: 0x9976,\n\t27294 - 11905: 0x9977,\n\t27295 - 11905: 0x9978,\n\t27296 - 11905: 0xE9D1,\n\t27297 - 11905: 0x9979,\n\t27298 - 11905: 0x997A,\n\t27299 - 11905: 0x997B,\n\t27300 - 11905: 0x997C,\n\t27301 - 11905: 0x997D,\n\t27302 - 11905: 0x997E,\n\t27303 - 11905: 0x9980,\n\t27304 - 11905: 0x9981,\n\t27305 - 11905: 0xE9DD,\n\t27306 - 11905: 0x9982,\n\t27307 - 11905: 0xE9DF,\n\t27308 - 11905: 0xC3CA,\n\t27309 - 11905: 0x9983,\n\t27310 - 11905: 0x9984,\n\t27311 - 11905: 0x9985,\n\t27312 - 11905: 0x9986,\n\t27313 - 11905: 0x9987,\n\t27314 - 11905: 0x9988,\n\t27315 - 11905: 0x9989,\n\t27316 - 11905: 0x998A,\n\t27317 - 11905: 0x998B,\n\t27318 - 11905: 0x998C,\n\t27319 - 11905: 0x998D,\n\t27320 - 11905: 0x998E,\n\t27321 - 11905: 0x998F,\n\t27322 - 11905: 0x9990,\n\t27323 - 11905: 0x9991,\n\t27324 - 11905: 0x9992,\n\t27325 - 11905: 0x9993,\n\t27326 - 11905: 0x9994,\n\t27327 - 11905: 0x9995,\n\t27328 - 11905: 0x9996,\n\t27329 - 11905: 0x9997,\n\t27330 - 11905: 0x9998,\n\t27331 - 11905: 0x9999,\n\t27332 - 11905: 0x999A,\n\t27333 - 11905: 0x999B,\n\t27334 - 11905: 0x999C,\n\t27335 - 11905: 0x999D,\n\t27336 - 11905: 0x999E,\n\t27337 - 11905: 0x999F,\n\t27338 - 11905: 0x99A0,\n\t27339 - 11905: 0x99A1,\n\t27340 - 11905: 0x99A2,\n\t27341 - 11905: 0x99A3,\n\t27342 - 11905: 0x99A4,\n\t27343 - 11905: 0x99A5,\n\t27344 - 11905: 0x99A6,\n\t27345 - 11905: 0x99A7,\n\t27346 - 11905: 0x99A8,\n\t27347 - 11905: 0x99A9,\n\t27348 - 11905: 0x99AA,\n\t27349 - 11905: 0x99AB,\n\t27350 - 11905: 0x99AC,\n\t27351 - 11905: 0x99AD,\n\t27352 - 11905: 0x99AE,\n\t27353 - 11905: 0x99AF,\n\t27354 - 11905: 0x99B0,\n\t27355 - 11905: 0x99B1,\n\t27356 - 11905: 0x99B2,\n\t27357 - 11905: 0x99B3,\n\t27358 - 11905: 0x99B4,\n\t27359 - 11905: 0x99B5,\n\t27360 - 11905: 0x99B6,\n\t27361 - 11905: 0x99B7,\n\t27362 - 11905: 0x99B8,\n\t27363 - 11905: 0x99B9,\n\t27364 - 11905: 0x99BA,\n\t27365 - 11905: 0x99BB,\n\t27366 - 11905: 0x99BC,\n\t27367 - 11905: 0x99BD,\n\t27368 - 11905: 0x99BE,\n\t27369 - 11905: 0x99BF,\n\t27370 - 11905: 0x99C0,\n\t27371 - 11905: 0x99C1,\n\t27372 - 11905: 0x99C2,\n\t27373 - 11905: 0x99C3,\n\t27374 - 11905: 0x99C4,\n\t27375 - 11905: 0x99C5,\n\t27376 - 11905: 0x99C6,\n\t27377 - 11905: 0x99C7,\n\t27378 - 11905: 0x99C8,\n\t27379 - 11905: 0x99C9,\n\t27380 - 11905: 0x99CA,\n\t27381 - 11905: 0x99CB,\n\t27382 - 11905: 0x99CC,\n\t27383 - 11905: 0x99CD,\n\t27384 - 11905: 0x99CE,\n\t27385 - 11905: 0x99CF,\n\t27386 - 11905: 0x99D0,\n\t27387 - 11905: 0x99D1,\n\t27388 - 11905: 0x99D2,\n\t27389 - 11905: 0x99D3,\n\t27390 - 11905: 0x99D4,\n\t27391 - 11905: 0x99D5,\n\t27392 - 11905: 0x99D6,\n\t27393 - 11905: 0x99D7,\n\t27394 - 11905: 0x99D8,\n\t27395 - 11905: 0x99D9,\n\t27396 - 11905: 0x99DA,\n\t27397 - 11905: 0x99DB,\n\t27398 - 11905: 0x99DC,\n\t27399 - 11905: 0x99DD,\n\t27400 - 11905: 0x99DE,\n\t27401 - 11905: 0x99DF,\n\t27402 - 11905: 0x99E0,\n\t27403 - 11905: 0x99E1,\n\t27404 - 11905: 0x99E2,\n\t27405 - 11905: 0x99E3,\n\t27406 - 11905: 0x99E4,\n\t27407 - 11905: 0x99E5,\n\t27408 - 11905: 0x99E6,\n\t27409 - 11905: 0x99E7,\n\t27410 - 11905: 0x99E8,\n\t27411 - 11905: 0x99E9,\n\t27412 - 11905: 0x99EA,\n\t27413 - 11905: 0x99EB,\n\t27414 - 11905: 0x99EC,\n\t27415 - 11905: 0x99ED,\n\t27416 - 11905: 0x99EE,\n\t27417 - 11905: 0x99EF,\n\t27418 - 11905: 0x99F0,\n\t27419 - 11905: 0x99F1,\n\t27420 - 11905: 0x99F2,\n\t27421 - 11905: 0x99F3,\n\t27422 - 11905: 0x99F4,\n\t27423 - 11905: 0x99F5,\n\t27424 - 11905: 0xC7B7,\n\t27425 - 11905: 0xB4CE,\n\t27426 - 11905: 0xBBB6,\n\t27427 - 11905: 0xD0C0,\n\t27428 - 11905: 0xECA3,\n\t27429 - 11905: 0x99F6,\n\t27430 - 11905: 0x99F7,\n\t27431 - 11905: 0xC5B7,\n\t27432 - 11905: 0x99F8,\n\t27433 - 11905: 0x99F9,\n\t27434 - 11905: 0x99FA,\n\t27435 - 11905: 0x99FB,\n\t27436 - 11905: 0x99FC,\n\t27437 - 11905: 0x99FD,\n\t27438 - 11905: 0x99FE,\n\t27439 - 11905: 0x9A40,\n\t27440 - 11905: 0x9A41,\n\t27441 - 11905: 0x9A42,\n\t27442 - 11905: 0xD3FB,\n\t27443 - 11905: 0x9A43,\n\t27444 - 11905: 0x9A44,\n\t27445 - 11905: 0x9A45,\n\t27446 - 11905: 0x9A46,\n\t27447 - 11905: 0xECA4,\n\t27448 - 11905: 0x9A47,\n\t27449 - 11905: 0xECA5,\n\t27450 - 11905: 0xC6DB,\n\t27451 - 11905: 0x9A48,\n\t27452 - 11905: 0x9A49,\n\t27453 - 11905: 0x9A4A,\n\t27454 - 11905: 0xBFEE,\n\t27455 - 11905: 0x9A4B,\n\t27456 - 11905: 0x9A4C,\n\t27457 - 11905: 0x9A4D,\n\t27458 - 11905: 0x9A4E,\n\t27459 - 11905: 0xECA6,\n\t27460 - 11905: 0x9A4F,\n\t27461 - 11905: 0x9A50,\n\t27462 - 11905: 0xECA7,\n\t27463 - 11905: 0xD0AA,\n\t27464 - 11905: 0x9A51,\n\t27465 - 11905: 0xC7B8,\n\t27466 - 11905: 0x9A52,\n\t27467 - 11905: 0x9A53,\n\t27468 - 11905: 0xB8E8,\n\t27469 - 11905: 0x9A54,\n\t27470 - 11905: 0x9A55,\n\t27471 - 11905: 0x9A56,\n\t27472 - 11905: 0x9A57,\n\t27473 - 11905: 0x9A58,\n\t27474 - 11905: 0x9A59,\n\t27475 - 11905: 0x9A5A,\n\t27476 - 11905: 0x9A5B,\n\t27477 - 11905: 0x9A5C,\n\t27478 - 11905: 0x9A5D,\n\t27479 - 11905: 0x9A5E,\n\t27480 - 11905: 0x9A5F,\n\t27481 - 11905: 0xECA8,\n\t27482 - 11905: 0x9A60,\n\t27483 - 11905: 0x9A61,\n\t27484 - 11905: 0x9A62,\n\t27485 - 11905: 0x9A63,\n\t27486 - 11905: 0x9A64,\n\t27487 - 11905: 0x9A65,\n\t27488 - 11905: 0x9A66,\n\t27489 - 11905: 0x9A67,\n\t27490 - 11905: 0xD6B9,\n\t27491 - 11905: 0xD5FD,\n\t27492 - 11905: 0xB4CB,\n\t27493 - 11905: 0xB2BD,\n\t27494 - 11905: 0xCEE4,\n\t27495 - 11905: 0xC6E7,\n\t27496 - 11905: 0x9A68,\n\t27497 - 11905: 0x9A69,\n\t27498 - 11905: 0xCDE1,\n\t27499 - 11905: 0x9A6A,\n\t27500 - 11905: 0x9A6B,\n\t27501 - 11905: 0x9A6C,\n\t27502 - 11905: 0x9A6D,\n\t27503 - 11905: 0x9A6E,\n\t27504 - 11905: 0x9A6F,\n\t27505 - 11905: 0x9A70,\n\t27506 - 11905: 0x9A71,\n\t27507 - 11905: 0x9A72,\n\t27508 - 11905: 0x9A73,\n\t27509 - 11905: 0x9A74,\n\t27510 - 11905: 0x9A75,\n\t27511 - 11905: 0x9A76,\n\t27512 - 11905: 0x9A77,\n\t27513 - 11905: 0xB4F5,\n\t27514 - 11905: 0x9A78,\n\t27515 - 11905: 0xCBC0,\n\t27516 - 11905: 0xBCDF,\n\t27517 - 11905: 0x9A79,\n\t27518 - 11905: 0x9A7A,\n\t27519 - 11905: 0x9A7B,\n\t27520 - 11905: 0x9A7C,\n\t27521 - 11905: 0xE9E2,\n\t27522 - 11905: 0xE9E3,\n\t27523 - 11905: 0xD1EA,\n\t27524 - 11905: 0xE9E5,\n\t27525 - 11905: 0x9A7D,\n\t27526 - 11905: 0xB4F9,\n\t27527 - 11905: 0xE9E4,\n\t27528 - 11905: 0x9A7E,\n\t27529 - 11905: 0xD1B3,\n\t27530 - 11905: 0xCAE2,\n\t27531 - 11905: 0xB2D0,\n\t27532 - 11905: 0x9A80,\n\t27533 - 11905: 0xE9E8,\n\t27534 - 11905: 0x9A81,\n\t27535 - 11905: 0x9A82,\n\t27536 - 11905: 0x9A83,\n\t27537 - 11905: 0x9A84,\n\t27538 - 11905: 0xE9E6,\n\t27539 - 11905: 0xE9E7,\n\t27540 - 11905: 0x9A85,\n\t27541 - 11905: 0x9A86,\n\t27542 - 11905: 0xD6B3,\n\t27543 - 11905: 0x9A87,\n\t27544 - 11905: 0x9A88,\n\t27545 - 11905: 0x9A89,\n\t27546 - 11905: 0xE9E9,\n\t27547 - 11905: 0xE9EA,\n\t27548 - 11905: 0x9A8A,\n\t27549 - 11905: 0x9A8B,\n\t27550 - 11905: 0x9A8C,\n\t27551 - 11905: 0x9A8D,\n\t27552 - 11905: 0x9A8E,\n\t27553 - 11905: 0xE9EB,\n\t27554 - 11905: 0x9A8F,\n\t27555 - 11905: 0x9A90,\n\t27556 - 11905: 0x9A91,\n\t27557 - 11905: 0x9A92,\n\t27558 - 11905: 0x9A93,\n\t27559 - 11905: 0x9A94,\n\t27560 - 11905: 0x9A95,\n\t27561 - 11905: 0x9A96,\n\t27562 - 11905: 0xE9EC,\n\t27563 - 11905: 0x9A97,\n\t27564 - 11905: 0x9A98,\n\t27565 - 11905: 0x9A99,\n\t27566 - 11905: 0x9A9A,\n\t27567 - 11905: 0x9A9B,\n\t27568 - 11905: 0x9A9C,\n\t27569 - 11905: 0x9A9D,\n\t27570 - 11905: 0x9A9E,\n\t27571 - 11905: 0xECAF,\n\t27572 - 11905: 0xC5B9,\n\t27573 - 11905: 0xB6CE,\n\t27574 - 11905: 0x9A9F,\n\t27575 - 11905: 0xD2F3,\n\t27576 - 11905: 0x9AA0,\n\t27577 - 11905: 0x9AA1,\n\t27578 - 11905: 0x9AA2,\n\t27579 - 11905: 0x9AA3,\n\t27580 - 11905: 0x9AA4,\n\t27581 - 11905: 0x9AA5,\n\t27582 - 11905: 0x9AA6,\n\t27583 - 11905: 0xB5EE,\n\t27584 - 11905: 0x9AA7,\n\t27585 - 11905: 0xBBD9,\n\t27586 - 11905: 0xECB1,\n\t27587 - 11905: 0x9AA8,\n\t27588 - 11905: 0x9AA9,\n\t27589 - 11905: 0xD2E3,\n\t27590 - 11905: 0x9AAA,\n\t27591 - 11905: 0x9AAB,\n\t27592 - 11905: 0x9AAC,\n\t27593 - 11905: 0x9AAD,\n\t27594 - 11905: 0x9AAE,\n\t27595 - 11905: 0xCEE3,\n\t27596 - 11905: 0x9AAF,\n\t27597 - 11905: 0xC4B8,\n\t27598 - 11905: 0x9AB0,\n\t27599 - 11905: 0xC3BF,\n\t27600 - 11905: 0x9AB1,\n\t27601 - 11905: 0x9AB2,\n\t27602 - 11905: 0xB6BE,\n\t27603 - 11905: 0xD8B9,\n\t27604 - 11905: 0xB1C8,\n\t27605 - 11905: 0xB1CF,\n\t27606 - 11905: 0xB1D1,\n\t27607 - 11905: 0xC5FE,\n\t27608 - 11905: 0x9AB3,\n\t27609 - 11905: 0xB1D0,\n\t27610 - 11905: 0x9AB4,\n\t27611 - 11905: 0xC3AB,\n\t27612 - 11905: 0x9AB5,\n\t27613 - 11905: 0x9AB6,\n\t27614 - 11905: 0x9AB7,\n\t27615 - 11905: 0x9AB8,\n\t27616 - 11905: 0x9AB9,\n\t27617 - 11905: 0xD5B1,\n\t27618 - 11905: 0x9ABA,\n\t27619 - 11905: 0x9ABB,\n\t27620 - 11905: 0x9ABC,\n\t27621 - 11905: 0x9ABD,\n\t27622 - 11905: 0x9ABE,\n\t27623 - 11905: 0x9ABF,\n\t27624 - 11905: 0x9AC0,\n\t27625 - 11905: 0x9AC1,\n\t27626 - 11905: 0xEBA4,\n\t27627 - 11905: 0xBAC1,\n\t27628 - 11905: 0x9AC2,\n\t27629 - 11905: 0x9AC3,\n\t27630 - 11905: 0x9AC4,\n\t27631 - 11905: 0xCCBA,\n\t27632 - 11905: 0x9AC5,\n\t27633 - 11905: 0x9AC6,\n\t27634 - 11905: 0x9AC7,\n\t27635 - 11905: 0xEBA5,\n\t27636 - 11905: 0x9AC8,\n\t27637 - 11905: 0xEBA7,\n\t27638 - 11905: 0x9AC9,\n\t27639 - 11905: 0x9ACA,\n\t27640 - 11905: 0x9ACB,\n\t27641 - 11905: 0xEBA8,\n\t27642 - 11905: 0x9ACC,\n\t27643 - 11905: 0x9ACD,\n\t27644 - 11905: 0x9ACE,\n\t27645 - 11905: 0xEBA6,\n\t27646 - 11905: 0x9ACF,\n\t27647 - 11905: 0x9AD0,\n\t27648 - 11905: 0x9AD1,\n\t27649 - 11905: 0x9AD2,\n\t27650 - 11905: 0x9AD3,\n\t27651 - 11905: 0x9AD4,\n\t27652 - 11905: 0x9AD5,\n\t27653 - 11905: 0xEBA9,\n\t27654 - 11905: 0xEBAB,\n\t27655 - 11905: 0xEBAA,\n\t27656 - 11905: 0x9AD6,\n\t27657 - 11905: 0x9AD7,\n\t27658 - 11905: 0x9AD8,\n\t27659 - 11905: 0x9AD9,\n\t27660 - 11905: 0x9ADA,\n\t27661 - 11905: 0xEBAC,\n\t27662 - 11905: 0x9ADB,\n\t27663 - 11905: 0xCACF,\n\t27664 - 11905: 0xD8B5,\n\t27665 - 11905: 0xC3F1,\n\t27666 - 11905: 0x9ADC,\n\t27667 - 11905: 0xC3A5,\n\t27668 - 11905: 0xC6F8,\n\t27669 - 11905: 0xEBAD,\n\t27670 - 11905: 0xC4CA,\n\t27671 - 11905: 0x9ADD,\n\t27672 - 11905: 0xEBAE,\n\t27673 - 11905: 0xEBAF,\n\t27674 - 11905: 0xEBB0,\n\t27675 - 11905: 0xB7D5,\n\t27676 - 11905: 0x9ADE,\n\t27677 - 11905: 0x9ADF,\n\t27678 - 11905: 0x9AE0,\n\t27679 - 11905: 0xB7FA,\n\t27680 - 11905: 0x9AE1,\n\t27681 - 11905: 0xEBB1,\n\t27682 - 11905: 0xC7E2,\n\t27683 - 11905: 0x9AE2,\n\t27684 - 11905: 0xEBB3,\n\t27685 - 11905: 0x9AE3,\n\t27686 - 11905: 0xBAA4,\n\t27687 - 11905: 0xD1F5,\n\t27688 - 11905: 0xB0B1,\n\t27689 - 11905: 0xEBB2,\n\t27690 - 11905: 0xEBB4,\n\t27691 - 11905: 0x9AE4,\n\t27692 - 11905: 0x9AE5,\n\t27693 - 11905: 0x9AE6,\n\t27694 - 11905: 0xB5AA,\n\t27695 - 11905: 0xC2C8,\n\t27696 - 11905: 0xC7E8,\n\t27697 - 11905: 0x9AE7,\n\t27698 - 11905: 0xEBB5,\n\t27699 - 11905: 0x9AE8,\n\t27700 - 11905: 0xCBAE,\n\t27701 - 11905: 0xE3DF,\n\t27702 - 11905: 0x9AE9,\n\t27703 - 11905: 0x9AEA,\n\t27704 - 11905: 0xD3C0,\n\t27705 - 11905: 0x9AEB,\n\t27706 - 11905: 0x9AEC,\n\t27707 - 11905: 0x9AED,\n\t27708 - 11905: 0x9AEE,\n\t27709 - 11905: 0xD9DB,\n\t27710 - 11905: 0x9AEF,\n\t27711 - 11905: 0x9AF0,\n\t27712 - 11905: 0xCDA1,\n\t27713 - 11905: 0xD6AD,\n\t27714 - 11905: 0xC7F3,\n\t27715 - 11905: 0x9AF1,\n\t27716 - 11905: 0x9AF2,\n\t27717 - 11905: 0x9AF3,\n\t27718 - 11905: 0xD9E0,\n\t27719 - 11905: 0xBBE3,\n\t27720 - 11905: 0x9AF4,\n\t27721 - 11905: 0xBABA,\n\t27722 - 11905: 0xE3E2,\n\t27723 - 11905: 0x9AF5,\n\t27724 - 11905: 0x9AF6,\n\t27725 - 11905: 0x9AF7,\n\t27726 - 11905: 0x9AF8,\n\t27727 - 11905: 0x9AF9,\n\t27728 - 11905: 0xCFAB,\n\t27729 - 11905: 0x9AFA,\n\t27730 - 11905: 0x9AFB,\n\t27731 - 11905: 0x9AFC,\n\t27732 - 11905: 0xE3E0,\n\t27733 - 11905: 0xC9C7,\n\t27734 - 11905: 0x9AFD,\n\t27735 - 11905: 0xBAB9,\n\t27736 - 11905: 0x9AFE,\n\t27737 - 11905: 0x9B40,\n\t27738 - 11905: 0x9B41,\n\t27739 - 11905: 0xD1B4,\n\t27740 - 11905: 0xE3E1,\n\t27741 - 11905: 0xC8EA,\n\t27742 - 11905: 0xB9AF,\n\t27743 - 11905: 0xBDAD,\n\t27744 - 11905: 0xB3D8,\n\t27745 - 11905: 0xCEDB,\n\t27746 - 11905: 0x9B42,\n\t27747 - 11905: 0x9B43,\n\t27748 - 11905: 0xCCC0,\n\t27749 - 11905: 0x9B44,\n\t27750 - 11905: 0x9B45,\n\t27751 - 11905: 0x9B46,\n\t27752 - 11905: 0xE3E8,\n\t27753 - 11905: 0xE3E9,\n\t27754 - 11905: 0xCDF4,\n\t27755 - 11905: 0x9B47,\n\t27756 - 11905: 0x9B48,\n\t27757 - 11905: 0x9B49,\n\t27758 - 11905: 0x9B4A,\n\t27759 - 11905: 0x9B4B,\n\t27760 - 11905: 0xCCAD,\n\t27761 - 11905: 0x9B4C,\n\t27762 - 11905: 0xBCB3,\n\t27763 - 11905: 0x9B4D,\n\t27764 - 11905: 0xE3EA,\n\t27765 - 11905: 0x9B4E,\n\t27766 - 11905: 0xE3EB,\n\t27767 - 11905: 0x9B4F,\n\t27768 - 11905: 0x9B50,\n\t27769 - 11905: 0xD0DA,\n\t27770 - 11905: 0x9B51,\n\t27771 - 11905: 0x9B52,\n\t27772 - 11905: 0x9B53,\n\t27773 - 11905: 0xC6FB,\n\t27774 - 11905: 0xB7DA,\n\t27775 - 11905: 0x9B54,\n\t27776 - 11905: 0x9B55,\n\t27777 - 11905: 0xC7DF,\n\t27778 - 11905: 0xD2CA,\n\t27779 - 11905: 0xCED6,\n\t27780 - 11905: 0x9B56,\n\t27781 - 11905: 0xE3E4,\n\t27782 - 11905: 0xE3EC,\n\t27783 - 11905: 0x9B57,\n\t27784 - 11905: 0xC9F2,\n\t27785 - 11905: 0xB3C1,\n\t27786 - 11905: 0x9B58,\n\t27787 - 11905: 0x9B59,\n\t27788 - 11905: 0xE3E7,\n\t27789 - 11905: 0x9B5A,\n\t27790 - 11905: 0x9B5B,\n\t27791 - 11905: 0xC6E3,\n\t27792 - 11905: 0xE3E5,\n\t27793 - 11905: 0x9B5C,\n\t27794 - 11905: 0x9B5D,\n\t27795 - 11905: 0xEDB3,\n\t27796 - 11905: 0xE3E6,\n\t27797 - 11905: 0x9B5E,\n\t27798 - 11905: 0x9B5F,\n\t27799 - 11905: 0x9B60,\n\t27800 - 11905: 0x9B61,\n\t27801 - 11905: 0xC9B3,\n\t27802 - 11905: 0x9B62,\n\t27803 - 11905: 0xC5E6,\n\t27804 - 11905: 0x9B63,\n\t27805 - 11905: 0x9B64,\n\t27806 - 11905: 0x9B65,\n\t27807 - 11905: 0xB9B5,\n\t27808 - 11905: 0x9B66,\n\t27809 - 11905: 0xC3BB,\n\t27810 - 11905: 0x9B67,\n\t27811 - 11905: 0xE3E3,\n\t27812 - 11905: 0xC5BD,\n\t27813 - 11905: 0xC1A4,\n\t27814 - 11905: 0xC2D9,\n\t27815 - 11905: 0xB2D7,\n\t27816 - 11905: 0x9B68,\n\t27817 - 11905: 0xE3ED,\n\t27818 - 11905: 0xBBA6,\n\t27819 - 11905: 0xC4AD,\n\t27820 - 11905: 0x9B69,\n\t27821 - 11905: 0xE3F0,\n\t27822 - 11905: 0xBEDA,\n\t27823 - 11905: 0x9B6A,\n\t27824 - 11905: 0x9B6B,\n\t27825 - 11905: 0xE3FB,\n\t27826 - 11905: 0xE3F5,\n\t27827 - 11905: 0xBAD3,\n\t27828 - 11905: 0x9B6C,\n\t27829 - 11905: 0x9B6D,\n\t27830 - 11905: 0x9B6E,\n\t27831 - 11905: 0x9B6F,\n\t27832 - 11905: 0xB7D0,\n\t27833 - 11905: 0xD3CD,\n\t27834 - 11905: 0x9B70,\n\t27835 - 11905: 0xD6CE,\n\t27836 - 11905: 0xD5D3,\n\t27837 - 11905: 0xB9C1,\n\t27838 - 11905: 0xD5B4,\n\t27839 - 11905: 0xD1D8,\n\t27840 - 11905: 0x9B71,\n\t27841 - 11905: 0x9B72,\n\t27842 - 11905: 0x9B73,\n\t27843 - 11905: 0x9B74,\n\t27844 - 11905: 0xD0B9,\n\t27845 - 11905: 0xC7F6,\n\t27846 - 11905: 0x9B75,\n\t27847 - 11905: 0x9B76,\n\t27848 - 11905: 0x9B77,\n\t27849 - 11905: 0xC8AA,\n\t27850 - 11905: 0xB2B4,\n\t27851 - 11905: 0x9B78,\n\t27852 - 11905: 0xC3DA,\n\t27853 - 11905: 0x9B79,\n\t27854 - 11905: 0x9B7A,\n\t27855 - 11905: 0x9B7B,\n\t27856 - 11905: 0xE3EE,\n\t27857 - 11905: 0x9B7C,\n\t27858 - 11905: 0x9B7D,\n\t27859 - 11905: 0xE3FC,\n\t27860 - 11905: 0xE3EF,\n\t27861 - 11905: 0xB7A8,\n\t27862 - 11905: 0xE3F7,\n\t27863 - 11905: 0xE3F4,\n\t27864 - 11905: 0x9B7E,\n\t27865 - 11905: 0x9B80,\n\t27866 - 11905: 0x9B81,\n\t27867 - 11905: 0xB7BA,\n\t27868 - 11905: 0x9B82,\n\t27869 - 11905: 0x9B83,\n\t27870 - 11905: 0xC5A2,\n\t27871 - 11905: 0x9B84,\n\t27872 - 11905: 0xE3F6,\n\t27873 - 11905: 0xC5DD,\n\t27874 - 11905: 0xB2A8,\n\t27875 - 11905: 0xC6FC,\n\t27876 - 11905: 0x9B85,\n\t27877 - 11905: 0xC4E0,\n\t27878 - 11905: 0x9B86,\n\t27879 - 11905: 0x9B87,\n\t27880 - 11905: 0xD7A2,\n\t27881 - 11905: 0x9B88,\n\t27882 - 11905: 0xC0E1,\n\t27883 - 11905: 0xE3F9,\n\t27884 - 11905: 0x9B89,\n\t27885 - 11905: 0x9B8A,\n\t27886 - 11905: 0xE3FA,\n\t27887 - 11905: 0xE3FD,\n\t27888 - 11905: 0xCCA9,\n\t27889 - 11905: 0xE3F3,\n\t27890 - 11905: 0x9B8B,\n\t27891 - 11905: 0xD3BE,\n\t27892 - 11905: 0x9B8C,\n\t27893 - 11905: 0xB1C3,\n\t27894 - 11905: 0xEDB4,\n\t27895 - 11905: 0xE3F1,\n\t27896 - 11905: 0xE3F2,\n\t27897 - 11905: 0x9B8D,\n\t27898 - 11905: 0xE3F8,\n\t27899 - 11905: 0xD0BA,\n\t27900 - 11905: 0xC6C3,\n\t27901 - 11905: 0xD4F3,\n\t27902 - 11905: 0xE3FE,\n\t27903 - 11905: 0x9B8E,\n\t27904 - 11905: 0x9B8F,\n\t27905 - 11905: 0xBDE0,\n\t27906 - 11905: 0x9B90,\n\t27907 - 11905: 0x9B91,\n\t27908 - 11905: 0xE4A7,\n\t27909 - 11905: 0x9B92,\n\t27910 - 11905: 0x9B93,\n\t27911 - 11905: 0xE4A6,\n\t27912 - 11905: 0x9B94,\n\t27913 - 11905: 0x9B95,\n\t27914 - 11905: 0x9B96,\n\t27915 - 11905: 0xD1F3,\n\t27916 - 11905: 0xE4A3,\n\t27917 - 11905: 0x9B97,\n\t27918 - 11905: 0xE4A9,\n\t27919 - 11905: 0x9B98,\n\t27920 - 11905: 0x9B99,\n\t27921 - 11905: 0x9B9A,\n\t27922 - 11905: 0xC8F7,\n\t27923 - 11905: 0x9B9B,\n\t27924 - 11905: 0x9B9C,\n\t27925 - 11905: 0x9B9D,\n\t27926 - 11905: 0x9B9E,\n\t27927 - 11905: 0xCFB4,\n\t27928 - 11905: 0x9B9F,\n\t27929 - 11905: 0xE4A8,\n\t27930 - 11905: 0xE4AE,\n\t27931 - 11905: 0xC2E5,\n\t27932 - 11905: 0x9BA0,\n\t27933 - 11905: 0x9BA1,\n\t27934 - 11905: 0xB6B4,\n\t27935 - 11905: 0x9BA2,\n\t27936 - 11905: 0x9BA3,\n\t27937 - 11905: 0x9BA4,\n\t27938 - 11905: 0x9BA5,\n\t27939 - 11905: 0x9BA6,\n\t27940 - 11905: 0x9BA7,\n\t27941 - 11905: 0xBDF2,\n\t27942 - 11905: 0x9BA8,\n\t27943 - 11905: 0xE4A2,\n\t27944 - 11905: 0x9BA9,\n\t27945 - 11905: 0x9BAA,\n\t27946 - 11905: 0xBAE9,\n\t27947 - 11905: 0xE4AA,\n\t27948 - 11905: 0x9BAB,\n\t27949 - 11905: 0x9BAC,\n\t27950 - 11905: 0xE4AC,\n\t27951 - 11905: 0x9BAD,\n\t27952 - 11905: 0x9BAE,\n\t27953 - 11905: 0xB6FD,\n\t27954 - 11905: 0xD6DE,\n\t27955 - 11905: 0xE4B2,\n\t27956 - 11905: 0x9BAF,\n\t27957 - 11905: 0xE4AD,\n\t27958 - 11905: 0x9BB0,\n\t27959 - 11905: 0x9BB1,\n\t27960 - 11905: 0x9BB2,\n\t27961 - 11905: 0xE4A1,\n\t27962 - 11905: 0x9BB3,\n\t27963 - 11905: 0xBBEE,\n\t27964 - 11905: 0xCDDD,\n\t27965 - 11905: 0xC7A2,\n\t27966 - 11905: 0xC5C9,\n\t27967 - 11905: 0x9BB4,\n\t27968 - 11905: 0x9BB5,\n\t27969 - 11905: 0xC1F7,\n\t27970 - 11905: 0x9BB6,\n\t27971 - 11905: 0xE4A4,\n\t27972 - 11905: 0x9BB7,\n\t27973 - 11905: 0xC7B3,\n\t27974 - 11905: 0xBDAC,\n\t27975 - 11905: 0xBDBD,\n\t27976 - 11905: 0xE4A5,\n\t27977 - 11905: 0x9BB8,\n\t27978 - 11905: 0xD7C7,\n\t27979 - 11905: 0xB2E2,\n\t27980 - 11905: 0x9BB9,\n\t27981 - 11905: 0xE4AB,\n\t27982 - 11905: 0xBCC3,\n\t27983 - 11905: 0xE4AF,\n\t27984 - 11905: 0x9BBA,\n\t27985 - 11905: 0xBBEB,\n\t27986 - 11905: 0xE4B0,\n\t27987 - 11905: 0xC5A8,\n\t27988 - 11905: 0xE4B1,\n\t27989 - 11905: 0x9BBB,\n\t27990 - 11905: 0x9BBC,\n\t27991 - 11905: 0x9BBD,\n\t27992 - 11905: 0x9BBE,\n\t27993 - 11905: 0xD5E3,\n\t27994 - 11905: 0xBFA3,\n\t27995 - 11905: 0x9BBF,\n\t27996 - 11905: 0xE4BA,\n\t27997 - 11905: 0x9BC0,\n\t27998 - 11905: 0xE4B7,\n\t27999 - 11905: 0x9BC1,\n\t28000 - 11905: 0xE4BB,\n\t28001 - 11905: 0x9BC2,\n\t28002 - 11905: 0x9BC3,\n\t28003 - 11905: 0xE4BD,\n\t28004 - 11905: 0x9BC4,\n\t28005 - 11905: 0x9BC5,\n\t28006 - 11905: 0xC6D6,\n\t28007 - 11905: 0x9BC6,\n\t28008 - 11905: 0x9BC7,\n\t28009 - 11905: 0xBAC6,\n\t28010 - 11905: 0xC0CB,\n\t28011 - 11905: 0x9BC8,\n\t28012 - 11905: 0x9BC9,\n\t28013 - 11905: 0x9BCA,\n\t28014 - 11905: 0xB8A1,\n\t28015 - 11905: 0xE4B4,\n\t28016 - 11905: 0x9BCB,\n\t28017 - 11905: 0x9BCC,\n\t28018 - 11905: 0x9BCD,\n\t28019 - 11905: 0x9BCE,\n\t28020 - 11905: 0xD4A1,\n\t28021 - 11905: 0x9BCF,\n\t28022 - 11905: 0x9BD0,\n\t28023 - 11905: 0xBAA3,\n\t28024 - 11905: 0xBDFE,\n\t28025 - 11905: 0x9BD1,\n\t28026 - 11905: 0x9BD2,\n\t28027 - 11905: 0x9BD3,\n\t28028 - 11905: 0xE4BC,\n\t28029 - 11905: 0x9BD4,\n\t28030 - 11905: 0x9BD5,\n\t28031 - 11905: 0x9BD6,\n\t28032 - 11905: 0x9BD7,\n\t28033 - 11905: 0x9BD8,\n\t28034 - 11905: 0xCDBF,\n\t28035 - 11905: 0x9BD9,\n\t28036 - 11905: 0x9BDA,\n\t28037 - 11905: 0xC4F9,\n\t28038 - 11905: 0x9BDB,\n\t28039 - 11905: 0x9BDC,\n\t28040 - 11905: 0xCFFB,\n\t28041 - 11905: 0xC9E6,\n\t28042 - 11905: 0x9BDD,\n\t28043 - 11905: 0x9BDE,\n\t28044 - 11905: 0xD3BF,\n\t28045 - 11905: 0x9BDF,\n\t28046 - 11905: 0xCFD1,\n\t28047 - 11905: 0x9BE0,\n\t28048 - 11905: 0x9BE1,\n\t28049 - 11905: 0xE4B3,\n\t28050 - 11905: 0x9BE2,\n\t28051 - 11905: 0xE4B8,\n\t28052 - 11905: 0xE4B9,\n\t28053 - 11905: 0xCCE9,\n\t28054 - 11905: 0x9BE3,\n\t28055 - 11905: 0x9BE4,\n\t28056 - 11905: 0x9BE5,\n\t28057 - 11905: 0x9BE6,\n\t28058 - 11905: 0x9BE7,\n\t28059 - 11905: 0xCCCE,\n\t28060 - 11905: 0x9BE8,\n\t28061 - 11905: 0xC0D4,\n\t28062 - 11905: 0xE4B5,\n\t28063 - 11905: 0xC1B0,\n\t28064 - 11905: 0xE4B6,\n\t28065 - 11905: 0xCED0,\n\t28066 - 11905: 0x9BE9,\n\t28067 - 11905: 0xBBC1,\n\t28068 - 11905: 0xB5D3,\n\t28069 - 11905: 0x9BEA,\n\t28070 - 11905: 0xC8F3,\n\t28071 - 11905: 0xBDA7,\n\t28072 - 11905: 0xD5C7,\n\t28073 - 11905: 0xC9AC,\n\t28074 - 11905: 0xB8A2,\n\t28075 - 11905: 0xE4CA,\n\t28076 - 11905: 0x9BEB,\n\t28077 - 11905: 0x9BEC,\n\t28078 - 11905: 0xE4CC,\n\t28079 - 11905: 0xD1C4,\n\t28080 - 11905: 0x9BED,\n\t28081 - 11905: 0x9BEE,\n\t28082 - 11905: 0xD2BA,\n\t28083 - 11905: 0x9BEF,\n\t28084 - 11905: 0x9BF0,\n\t28085 - 11905: 0xBAAD,\n\t28086 - 11905: 0x9BF1,\n\t28087 - 11905: 0x9BF2,\n\t28088 - 11905: 0xBAD4,\n\t28089 - 11905: 0x9BF3,\n\t28090 - 11905: 0x9BF4,\n\t28091 - 11905: 0x9BF5,\n\t28092 - 11905: 0x9BF6,\n\t28093 - 11905: 0x9BF7,\n\t28094 - 11905: 0x9BF8,\n\t28095 - 11905: 0xE4C3,\n\t28096 - 11905: 0xB5ED,\n\t28097 - 11905: 0x9BF9,\n\t28098 - 11905: 0x9BFA,\n\t28099 - 11905: 0x9BFB,\n\t28100 - 11905: 0xD7CD,\n\t28101 - 11905: 0xE4C0,\n\t28102 - 11905: 0xCFFD,\n\t28103 - 11905: 0xE4BF,\n\t28104 - 11905: 0x9BFC,\n\t28105 - 11905: 0x9BFD,\n\t28106 - 11905: 0x9BFE,\n\t28107 - 11905: 0xC1DC,\n\t28108 - 11905: 0xCCCA,\n\t28109 - 11905: 0x9C40,\n\t28110 - 11905: 0x9C41,\n\t28111 - 11905: 0x9C42,\n\t28112 - 11905: 0x9C43,\n\t28113 - 11905: 0xCAE7,\n\t28114 - 11905: 0x9C44,\n\t28115 - 11905: 0x9C45,\n\t28116 - 11905: 0x9C46,\n\t28117 - 11905: 0x9C47,\n\t28118 - 11905: 0xC4D7,\n\t28119 - 11905: 0x9C48,\n\t28120 - 11905: 0xCCD4,\n\t28121 - 11905: 0xE4C8,\n\t28122 - 11905: 0x9C49,\n\t28123 - 11905: 0x9C4A,\n\t28124 - 11905: 0x9C4B,\n\t28125 - 11905: 0xE4C7,\n\t28126 - 11905: 0xE4C1,\n\t28127 - 11905: 0x9C4C,\n\t28128 - 11905: 0xE4C4,\n\t28129 - 11905: 0xB5AD,\n\t28130 - 11905: 0x9C4D,\n\t28131 - 11905: 0x9C4E,\n\t28132 - 11905: 0xD3D9,\n\t28133 - 11905: 0x9C4F,\n\t28134 - 11905: 0xE4C6,\n\t28135 - 11905: 0x9C50,\n\t28136 - 11905: 0x9C51,\n\t28137 - 11905: 0x9C52,\n\t28138 - 11905: 0x9C53,\n\t28139 - 11905: 0xD2F9,\n\t28140 - 11905: 0xB4E3,\n\t28141 - 11905: 0x9C54,\n\t28142 - 11905: 0xBBB4,\n\t28143 - 11905: 0x9C55,\n\t28144 - 11905: 0x9C56,\n\t28145 - 11905: 0xC9EE,\n\t28146 - 11905: 0x9C57,\n\t28147 - 11905: 0xB4BE,\n\t28148 - 11905: 0x9C58,\n\t28149 - 11905: 0x9C59,\n\t28150 - 11905: 0x9C5A,\n\t28151 - 11905: 0xBBEC,\n\t28152 - 11905: 0x9C5B,\n\t28153 - 11905: 0xD1CD,\n\t28154 - 11905: 0x9C5C,\n\t28155 - 11905: 0xCCED,\n\t28156 - 11905: 0xEDB5,\n\t28157 - 11905: 0x9C5D,\n\t28158 - 11905: 0x9C5E,\n\t28159 - 11905: 0x9C5F,\n\t28160 - 11905: 0x9C60,\n\t28161 - 11905: 0x9C61,\n\t28162 - 11905: 0x9C62,\n\t28163 - 11905: 0x9C63,\n\t28164 - 11905: 0x9C64,\n\t28165 - 11905: 0xC7E5,\n\t28166 - 11905: 0x9C65,\n\t28167 - 11905: 0x9C66,\n\t28168 - 11905: 0x9C67,\n\t28169 - 11905: 0x9C68,\n\t28170 - 11905: 0xD4A8,\n\t28171 - 11905: 0x9C69,\n\t28172 - 11905: 0xE4CB,\n\t28173 - 11905: 0xD7D5,\n\t28174 - 11905: 0xE4C2,\n\t28175 - 11905: 0x9C6A,\n\t28176 - 11905: 0xBDA5,\n\t28177 - 11905: 0xE4C5,\n\t28178 - 11905: 0x9C6B,\n\t28179 - 11905: 0x9C6C,\n\t28180 - 11905: 0xD3E6,\n\t28181 - 11905: 0x9C6D,\n\t28182 - 11905: 0xE4C9,\n\t28183 - 11905: 0xC9F8,\n\t28184 - 11905: 0x9C6E,\n\t28185 - 11905: 0x9C6F,\n\t28186 - 11905: 0xE4BE,\n\t28187 - 11905: 0x9C70,\n\t28188 - 11905: 0x9C71,\n\t28189 - 11905: 0xD3E5,\n\t28190 - 11905: 0x9C72,\n\t28191 - 11905: 0x9C73,\n\t28192 - 11905: 0xC7FE,\n\t28193 - 11905: 0xB6C9,\n\t28194 - 11905: 0x9C74,\n\t28195 - 11905: 0xD4FC,\n\t28196 - 11905: 0xB2B3,\n\t28197 - 11905: 0xE4D7,\n\t28198 - 11905: 0x9C75,\n\t28199 - 11905: 0x9C76,\n\t28200 - 11905: 0x9C77,\n\t28201 - 11905: 0xCEC2,\n\t28202 - 11905: 0x9C78,\n\t28203 - 11905: 0xE4CD,\n\t28204 - 11905: 0x9C79,\n\t28205 - 11905: 0xCEBC,\n\t28206 - 11905: 0x9C7A,\n\t28207 - 11905: 0xB8DB,\n\t28208 - 11905: 0x9C7B,\n\t28209 - 11905: 0x9C7C,\n\t28210 - 11905: 0xE4D6,\n\t28211 - 11905: 0x9C7D,\n\t28212 - 11905: 0xBFCA,\n\t28213 - 11905: 0x9C7E,\n\t28214 - 11905: 0x9C80,\n\t28215 - 11905: 0x9C81,\n\t28216 - 11905: 0xD3CE,\n\t28217 - 11905: 0x9C82,\n\t28218 - 11905: 0xC3EC,\n\t28219 - 11905: 0x9C83,\n\t28220 - 11905: 0x9C84,\n\t28221 - 11905: 0x9C85,\n\t28222 - 11905: 0x9C86,\n\t28223 - 11905: 0x9C87,\n\t28224 - 11905: 0x9C88,\n\t28225 - 11905: 0x9C89,\n\t28226 - 11905: 0x9C8A,\n\t28227 - 11905: 0xC5C8,\n\t28228 - 11905: 0xE4D8,\n\t28229 - 11905: 0x9C8B,\n\t28230 - 11905: 0x9C8C,\n\t28231 - 11905: 0x9C8D,\n\t28232 - 11905: 0x9C8E,\n\t28233 - 11905: 0x9C8F,\n\t28234 - 11905: 0x9C90,\n\t28235 - 11905: 0x9C91,\n\t28236 - 11905: 0x9C92,\n\t28237 - 11905: 0xCDC4,\n\t28238 - 11905: 0xE4CF,\n\t28239 - 11905: 0x9C93,\n\t28240 - 11905: 0x9C94,\n\t28241 - 11905: 0x9C95,\n\t28242 - 11905: 0x9C96,\n\t28243 - 11905: 0xE4D4,\n\t28244 - 11905: 0xE4D5,\n\t28245 - 11905: 0x9C97,\n\t28246 - 11905: 0xBAFE,\n\t28247 - 11905: 0x9C98,\n\t28248 - 11905: 0xCFE6,\n\t28249 - 11905: 0x9C99,\n\t28250 - 11905: 0x9C9A,\n\t28251 - 11905: 0xD5BF,\n\t28252 - 11905: 0x9C9B,\n\t28253 - 11905: 0x9C9C,\n\t28254 - 11905: 0x9C9D,\n\t28255 - 11905: 0xE4D2,\n\t28256 - 11905: 0x9C9E,\n\t28257 - 11905: 0x9C9F,\n\t28258 - 11905: 0x9CA0,\n\t28259 - 11905: 0x9CA1,\n\t28260 - 11905: 0x9CA2,\n\t28261 - 11905: 0x9CA3,\n\t28262 - 11905: 0x9CA4,\n\t28263 - 11905: 0x9CA5,\n\t28264 - 11905: 0x9CA6,\n\t28265 - 11905: 0x9CA7,\n\t28266 - 11905: 0x9CA8,\n\t28267 - 11905: 0xE4D0,\n\t28268 - 11905: 0x9CA9,\n\t28269 - 11905: 0x9CAA,\n\t28270 - 11905: 0xE4CE,\n\t28271 - 11905: 0x9CAB,\n\t28272 - 11905: 0x9CAC,\n\t28273 - 11905: 0x9CAD,\n\t28274 - 11905: 0x9CAE,\n\t28275 - 11905: 0x9CAF,\n\t28276 - 11905: 0x9CB0,\n\t28277 - 11905: 0x9CB1,\n\t28278 - 11905: 0x9CB2,\n\t28279 - 11905: 0x9CB3,\n\t28280 - 11905: 0x9CB4,\n\t28281 - 11905: 0x9CB5,\n\t28282 - 11905: 0x9CB6,\n\t28283 - 11905: 0x9CB7,\n\t28284 - 11905: 0x9CB8,\n\t28285 - 11905: 0x9CB9,\n\t28286 - 11905: 0xCDE5,\n\t28287 - 11905: 0xCAAA,\n\t28288 - 11905: 0x9CBA,\n\t28289 - 11905: 0x9CBB,\n\t28290 - 11905: 0x9CBC,\n\t28291 - 11905: 0xC0A3,\n\t28292 - 11905: 0x9CBD,\n\t28293 - 11905: 0xBDA6,\n\t28294 - 11905: 0xE4D3,\n\t28295 - 11905: 0x9CBE,\n\t28296 - 11905: 0x9CBF,\n\t28297 - 11905: 0xB8C8,\n\t28298 - 11905: 0x9CC0,\n\t28299 - 11905: 0x9CC1,\n\t28300 - 11905: 0x9CC2,\n\t28301 - 11905: 0x9CC3,\n\t28302 - 11905: 0x9CC4,\n\t28303 - 11905: 0xE4E7,\n\t28304 - 11905: 0xD4B4,\n\t28305 - 11905: 0x9CC5,\n\t28306 - 11905: 0x9CC6,\n\t28307 - 11905: 0x9CC7,\n\t28308 - 11905: 0x9CC8,\n\t28309 - 11905: 0x9CC9,\n\t28310 - 11905: 0x9CCA,\n\t28311 - 11905: 0x9CCB,\n\t28312 - 11905: 0xE4DB,\n\t28313 - 11905: 0x9CCC,\n\t28314 - 11905: 0x9CCD,\n\t28315 - 11905: 0x9CCE,\n\t28316 - 11905: 0xC1EF,\n\t28317 - 11905: 0x9CCF,\n\t28318 - 11905: 0x9CD0,\n\t28319 - 11905: 0xE4E9,\n\t28320 - 11905: 0x9CD1,\n\t28321 - 11905: 0x9CD2,\n\t28322 - 11905: 0xD2E7,\n\t28323 - 11905: 0x9CD3,\n\t28324 - 11905: 0x9CD4,\n\t28325 - 11905: 0xE4DF,\n\t28326 - 11905: 0x9CD5,\n\t28327 - 11905: 0xE4E0,\n\t28328 - 11905: 0x9CD6,\n\t28329 - 11905: 0x9CD7,\n\t28330 - 11905: 0xCFAA,\n\t28331 - 11905: 0x9CD8,\n\t28332 - 11905: 0x9CD9,\n\t28333 - 11905: 0x9CDA,\n\t28334 - 11905: 0x9CDB,\n\t28335 - 11905: 0xCBDD,\n\t28336 - 11905: 0x9CDC,\n\t28337 - 11905: 0xE4DA,\n\t28338 - 11905: 0xE4D1,\n\t28339 - 11905: 0x9CDD,\n\t28340 - 11905: 0xE4E5,\n\t28341 - 11905: 0x9CDE,\n\t28342 - 11905: 0xC8DC,\n\t28343 - 11905: 0xE4E3,\n\t28344 - 11905: 0x9CDF,\n\t28345 - 11905: 0x9CE0,\n\t28346 - 11905: 0xC4E7,\n\t28347 - 11905: 0xE4E2,\n\t28348 - 11905: 0x9CE1,\n\t28349 - 11905: 0xE4E1,\n\t28350 - 11905: 0x9CE2,\n\t28351 - 11905: 0x9CE3,\n\t28352 - 11905: 0x9CE4,\n\t28353 - 11905: 0xB3FC,\n\t28354 - 11905: 0xE4E8,\n\t28355 - 11905: 0x9CE5,\n\t28356 - 11905: 0x9CE6,\n\t28357 - 11905: 0x9CE7,\n\t28358 - 11905: 0x9CE8,\n\t28359 - 11905: 0xB5E1,\n\t28360 - 11905: 0x9CE9,\n\t28361 - 11905: 0x9CEA,\n\t28362 - 11905: 0x9CEB,\n\t28363 - 11905: 0xD7CC,\n\t28364 - 11905: 0x9CEC,\n\t28365 - 11905: 0x9CED,\n\t28366 - 11905: 0x9CEE,\n\t28367 - 11905: 0xE4E6,\n\t28368 - 11905: 0x9CEF,\n\t28369 - 11905: 0xBBAC,\n\t28370 - 11905: 0x9CF0,\n\t28371 - 11905: 0xD7D2,\n\t28372 - 11905: 0xCCCF,\n\t28373 - 11905: 0xEBF8,\n\t28374 - 11905: 0x9CF1,\n\t28375 - 11905: 0xE4E4,\n\t28376 - 11905: 0x9CF2,\n\t28377 - 11905: 0x9CF3,\n\t28378 - 11905: 0xB9F6,\n\t28379 - 11905: 0x9CF4,\n\t28380 - 11905: 0x9CF5,\n\t28381 - 11905: 0x9CF6,\n\t28382 - 11905: 0xD6CD,\n\t28383 - 11905: 0xE4D9,\n\t28384 - 11905: 0xE4DC,\n\t28385 - 11905: 0xC2FA,\n\t28386 - 11905: 0xE4DE,\n\t28387 - 11905: 0x9CF7,\n\t28388 - 11905: 0xC2CB,\n\t28389 - 11905: 0xC0C4,\n\t28390 - 11905: 0xC2D0,\n\t28391 - 11905: 0x9CF8,\n\t28392 - 11905: 0xB1F5,\n\t28393 - 11905: 0xCCB2,\n\t28394 - 11905: 0x9CF9,\n\t28395 - 11905: 0x9CFA,\n\t28396 - 11905: 0x9CFB,\n\t28397 - 11905: 0x9CFC,\n\t28398 - 11905: 0x9CFD,\n\t28399 - 11905: 0x9CFE,\n\t28400 - 11905: 0x9D40,\n\t28401 - 11905: 0x9D41,\n\t28402 - 11905: 0x9D42,\n\t28403 - 11905: 0x9D43,\n\t28404 - 11905: 0xB5CE,\n\t28405 - 11905: 0x9D44,\n\t28406 - 11905: 0x9D45,\n\t28407 - 11905: 0x9D46,\n\t28408 - 11905: 0x9D47,\n\t28409 - 11905: 0xE4EF,\n\t28410 - 11905: 0x9D48,\n\t28411 - 11905: 0x9D49,\n\t28412 - 11905: 0x9D4A,\n\t28413 - 11905: 0x9D4B,\n\t28414 - 11905: 0x9D4C,\n\t28415 - 11905: 0x9D4D,\n\t28416 - 11905: 0x9D4E,\n\t28417 - 11905: 0x9D4F,\n\t28418 - 11905: 0xC6AF,\n\t28419 - 11905: 0x9D50,\n\t28420 - 11905: 0x9D51,\n\t28421 - 11905: 0x9D52,\n\t28422 - 11905: 0xC6E1,\n\t28423 - 11905: 0x9D53,\n\t28424 - 11905: 0x9D54,\n\t28425 - 11905: 0xE4F5,\n\t28426 - 11905: 0x9D55,\n\t28427 - 11905: 0x9D56,\n\t28428 - 11905: 0x9D57,\n\t28429 - 11905: 0x9D58,\n\t28430 - 11905: 0x9D59,\n\t28431 - 11905: 0xC2A9,\n\t28432 - 11905: 0x9D5A,\n\t28433 - 11905: 0x9D5B,\n\t28434 - 11905: 0x9D5C,\n\t28435 - 11905: 0xC0EC,\n\t28436 - 11905: 0xD1DD,\n\t28437 - 11905: 0xE4EE,\n\t28438 - 11905: 0x9D5D,\n\t28439 - 11905: 0x9D5E,\n\t28440 - 11905: 0x9D5F,\n\t28441 - 11905: 0x9D60,\n\t28442 - 11905: 0x9D61,\n\t28443 - 11905: 0x9D62,\n\t28444 - 11905: 0x9D63,\n\t28445 - 11905: 0x9D64,\n\t28446 - 11905: 0x9D65,\n\t28447 - 11905: 0x9D66,\n\t28448 - 11905: 0xC4AE,\n\t28449 - 11905: 0x9D67,\n\t28450 - 11905: 0x9D68,\n\t28451 - 11905: 0x9D69,\n\t28452 - 11905: 0xE4ED,\n\t28453 - 11905: 0x9D6A,\n\t28454 - 11905: 0x9D6B,\n\t28455 - 11905: 0x9D6C,\n\t28456 - 11905: 0x9D6D,\n\t28457 - 11905: 0xE4F6,\n\t28458 - 11905: 0xE4F4,\n\t28459 - 11905: 0xC2FE,\n\t28460 - 11905: 0x9D6E,\n\t28461 - 11905: 0xE4DD,\n\t28462 - 11905: 0x9D6F,\n\t28463 - 11905: 0xE4F0,\n\t28464 - 11905: 0x9D70,\n\t28465 - 11905: 0xCAFE,\n\t28466 - 11905: 0x9D71,\n\t28467 - 11905: 0xD5C4,\n\t28468 - 11905: 0x9D72,\n\t28469 - 11905: 0x9D73,\n\t28470 - 11905: 0xE4F1,\n\t28471 - 11905: 0x9D74,\n\t28472 - 11905: 0x9D75,\n\t28473 - 11905: 0x9D76,\n\t28474 - 11905: 0x9D77,\n\t28475 - 11905: 0x9D78,\n\t28476 - 11905: 0x9D79,\n\t28477 - 11905: 0x9D7A,\n\t28478 - 11905: 0xD1FA,\n\t28479 - 11905: 0x9D7B,\n\t28480 - 11905: 0x9D7C,\n\t28481 - 11905: 0x9D7D,\n\t28482 - 11905: 0x9D7E,\n\t28483 - 11905: 0x9D80,\n\t28484 - 11905: 0x9D81,\n\t28485 - 11905: 0x9D82,\n\t28486 - 11905: 0xE4EB,\n\t28487 - 11905: 0xE4EC,\n\t28488 - 11905: 0x9D83,\n\t28489 - 11905: 0x9D84,\n\t28490 - 11905: 0x9D85,\n\t28491 - 11905: 0xE4F2,\n\t28492 - 11905: 0x9D86,\n\t28493 - 11905: 0xCEAB,\n\t28494 - 11905: 0x9D87,\n\t28495 - 11905: 0x9D88,\n\t28496 - 11905: 0x9D89,\n\t28497 - 11905: 0x9D8A,\n\t28498 - 11905: 0x9D8B,\n\t28499 - 11905: 0x9D8C,\n\t28500 - 11905: 0x9D8D,\n\t28501 - 11905: 0x9D8E,\n\t28502 - 11905: 0x9D8F,\n\t28503 - 11905: 0x9D90,\n\t28504 - 11905: 0xC5CB,\n\t28505 - 11905: 0x9D91,\n\t28506 - 11905: 0x9D92,\n\t28507 - 11905: 0x9D93,\n\t28508 - 11905: 0xC7B1,\n\t28509 - 11905: 0x9D94,\n\t28510 - 11905: 0xC2BA,\n\t28511 - 11905: 0x9D95,\n\t28512 - 11905: 0x9D96,\n\t28513 - 11905: 0x9D97,\n\t28514 - 11905: 0xE4EA,\n\t28515 - 11905: 0x9D98,\n\t28516 - 11905: 0x9D99,\n\t28517 - 11905: 0x9D9A,\n\t28518 - 11905: 0xC1CA,\n\t28519 - 11905: 0x9D9B,\n\t28520 - 11905: 0x9D9C,\n\t28521 - 11905: 0x9D9D,\n\t28522 - 11905: 0x9D9E,\n\t28523 - 11905: 0x9D9F,\n\t28524 - 11905: 0x9DA0,\n\t28525 - 11905: 0xCCB6,\n\t28526 - 11905: 0xB3B1,\n\t28527 - 11905: 0x9DA1,\n\t28528 - 11905: 0x9DA2,\n\t28529 - 11905: 0x9DA3,\n\t28530 - 11905: 0xE4FB,\n\t28531 - 11905: 0x9DA4,\n\t28532 - 11905: 0xE4F3,\n\t28533 - 11905: 0x9DA5,\n\t28534 - 11905: 0x9DA6,\n\t28535 - 11905: 0x9DA7,\n\t28536 - 11905: 0xE4FA,\n\t28537 - 11905: 0x9DA8,\n\t28538 - 11905: 0xE4FD,\n\t28539 - 11905: 0x9DA9,\n\t28540 - 11905: 0xE4FC,\n\t28541 - 11905: 0x9DAA,\n\t28542 - 11905: 0x9DAB,\n\t28543 - 11905: 0x9DAC,\n\t28544 - 11905: 0x9DAD,\n\t28545 - 11905: 0x9DAE,\n\t28546 - 11905: 0x9DAF,\n\t28547 - 11905: 0x9DB0,\n\t28548 - 11905: 0xB3CE,\n\t28549 - 11905: 0x9DB1,\n\t28550 - 11905: 0x9DB2,\n\t28551 - 11905: 0x9DB3,\n\t28552 - 11905: 0xB3BA,\n\t28553 - 11905: 0xE4F7,\n\t28554 - 11905: 0x9DB4,\n\t28555 - 11905: 0x9DB5,\n\t28556 - 11905: 0xE4F9,\n\t28557 - 11905: 0xE4F8,\n\t28558 - 11905: 0xC5EC,\n\t28559 - 11905: 0x9DB6,\n\t28560 - 11905: 0x9DB7,\n\t28561 - 11905: 0x9DB8,\n\t28562 - 11905: 0x9DB9,\n\t28563 - 11905: 0x9DBA,\n\t28564 - 11905: 0x9DBB,\n\t28565 - 11905: 0x9DBC,\n\t28566 - 11905: 0x9DBD,\n\t28567 - 11905: 0x9DBE,\n\t28568 - 11905: 0x9DBF,\n\t28569 - 11905: 0x9DC0,\n\t28570 - 11905: 0x9DC1,\n\t28571 - 11905: 0x9DC2,\n\t28572 - 11905: 0xC0BD,\n\t28573 - 11905: 0x9DC3,\n\t28574 - 11905: 0x9DC4,\n\t28575 - 11905: 0x9DC5,\n\t28576 - 11905: 0x9DC6,\n\t28577 - 11905: 0xD4E8,\n\t28578 - 11905: 0x9DC7,\n\t28579 - 11905: 0x9DC8,\n\t28580 - 11905: 0x9DC9,\n\t28581 - 11905: 0x9DCA,\n\t28582 - 11905: 0x9DCB,\n\t28583 - 11905: 0xE5A2,\n\t28584 - 11905: 0x9DCC,\n\t28585 - 11905: 0x9DCD,\n\t28586 - 11905: 0x9DCE,\n\t28587 - 11905: 0x9DCF,\n\t28588 - 11905: 0x9DD0,\n\t28589 - 11905: 0x9DD1,\n\t28590 - 11905: 0x9DD2,\n\t28591 - 11905: 0x9DD3,\n\t28592 - 11905: 0x9DD4,\n\t28593 - 11905: 0x9DD5,\n\t28594 - 11905: 0x9DD6,\n\t28595 - 11905: 0xB0C4,\n\t28596 - 11905: 0x9DD7,\n\t28597 - 11905: 0x9DD8,\n\t28598 - 11905: 0xE5A4,\n\t28599 - 11905: 0x9DD9,\n\t28600 - 11905: 0x9DDA,\n\t28601 - 11905: 0xE5A3,\n\t28602 - 11905: 0x9DDB,\n\t28603 - 11905: 0x9DDC,\n\t28604 - 11905: 0x9DDD,\n\t28605 - 11905: 0x9DDE,\n\t28606 - 11905: 0x9DDF,\n\t28607 - 11905: 0x9DE0,\n\t28608 - 11905: 0xBCA4,\n\t28609 - 11905: 0x9DE1,\n\t28610 - 11905: 0xE5A5,\n\t28611 - 11905: 0x9DE2,\n\t28612 - 11905: 0x9DE3,\n\t28613 - 11905: 0x9DE4,\n\t28614 - 11905: 0x9DE5,\n\t28615 - 11905: 0x9DE6,\n\t28616 - 11905: 0x9DE7,\n\t28617 - 11905: 0xE5A1,\n\t28618 - 11905: 0x9DE8,\n\t28619 - 11905: 0x9DE9,\n\t28620 - 11905: 0x9DEA,\n\t28621 - 11905: 0x9DEB,\n\t28622 - 11905: 0x9DEC,\n\t28623 - 11905: 0x9DED,\n\t28624 - 11905: 0x9DEE,\n\t28625 - 11905: 0xE4FE,\n\t28626 - 11905: 0xB1F4,\n\t28627 - 11905: 0x9DEF,\n\t28628 - 11905: 0x9DF0,\n\t28629 - 11905: 0x9DF1,\n\t28630 - 11905: 0x9DF2,\n\t28631 - 11905: 0x9DF3,\n\t28632 - 11905: 0x9DF4,\n\t28633 - 11905: 0x9DF5,\n\t28634 - 11905: 0x9DF6,\n\t28635 - 11905: 0x9DF7,\n\t28636 - 11905: 0x9DF8,\n\t28637 - 11905: 0x9DF9,\n\t28638 - 11905: 0xE5A8,\n\t28639 - 11905: 0x9DFA,\n\t28640 - 11905: 0xE5A9,\n\t28641 - 11905: 0xE5A6,\n\t28642 - 11905: 0x9DFB,\n\t28643 - 11905: 0x9DFC,\n\t28644 - 11905: 0x9DFD,\n\t28645 - 11905: 0x9DFE,\n\t28646 - 11905: 0x9E40,\n\t28647 - 11905: 0x9E41,\n\t28648 - 11905: 0x9E42,\n\t28649 - 11905: 0x9E43,\n\t28650 - 11905: 0x9E44,\n\t28651 - 11905: 0x9E45,\n\t28652 - 11905: 0x9E46,\n\t28653 - 11905: 0x9E47,\n\t28654 - 11905: 0xE5A7,\n\t28655 - 11905: 0xE5AA,\n\t28656 - 11905: 0x9E48,\n\t28657 - 11905: 0x9E49,\n\t28658 - 11905: 0x9E4A,\n\t28659 - 11905: 0x9E4B,\n\t28660 - 11905: 0x9E4C,\n\t28661 - 11905: 0x9E4D,\n\t28662 - 11905: 0x9E4E,\n\t28663 - 11905: 0x9E4F,\n\t28664 - 11905: 0x9E50,\n\t28665 - 11905: 0x9E51,\n\t28666 - 11905: 0x9E52,\n\t28667 - 11905: 0x9E53,\n\t28668 - 11905: 0x9E54,\n\t28669 - 11905: 0x9E55,\n\t28670 - 11905: 0x9E56,\n\t28671 - 11905: 0x9E57,\n\t28672 - 11905: 0x9E58,\n\t28673 - 11905: 0x9E59,\n\t28674 - 11905: 0x9E5A,\n\t28675 - 11905: 0x9E5B,\n\t28676 - 11905: 0x9E5C,\n\t28677 - 11905: 0x9E5D,\n\t28678 - 11905: 0x9E5E,\n\t28679 - 11905: 0x9E5F,\n\t28680 - 11905: 0x9E60,\n\t28681 - 11905: 0x9E61,\n\t28682 - 11905: 0x9E62,\n\t28683 - 11905: 0x9E63,\n\t28684 - 11905: 0x9E64,\n\t28685 - 11905: 0x9E65,\n\t28686 - 11905: 0x9E66,\n\t28687 - 11905: 0x9E67,\n\t28688 - 11905: 0x9E68,\n\t28689 - 11905: 0xC6D9,\n\t28690 - 11905: 0x9E69,\n\t28691 - 11905: 0x9E6A,\n\t28692 - 11905: 0x9E6B,\n\t28693 - 11905: 0x9E6C,\n\t28694 - 11905: 0x9E6D,\n\t28695 - 11905: 0x9E6E,\n\t28696 - 11905: 0x9E6F,\n\t28697 - 11905: 0x9E70,\n\t28698 - 11905: 0xE5AB,\n\t28699 - 11905: 0xE5AD,\n\t28700 - 11905: 0x9E71,\n\t28701 - 11905: 0x9E72,\n\t28702 - 11905: 0x9E73,\n\t28703 - 11905: 0x9E74,\n\t28704 - 11905: 0x9E75,\n\t28705 - 11905: 0x9E76,\n\t28706 - 11905: 0x9E77,\n\t28707 - 11905: 0xE5AC,\n\t28708 - 11905: 0x9E78,\n\t28709 - 11905: 0x9E79,\n\t28710 - 11905: 0x9E7A,\n\t28711 - 11905: 0x9E7B,\n\t28712 - 11905: 0x9E7C,\n\t28713 - 11905: 0x9E7D,\n\t28714 - 11905: 0x9E7E,\n\t28715 - 11905: 0x9E80,\n\t28716 - 11905: 0x9E81,\n\t28717 - 11905: 0x9E82,\n\t28718 - 11905: 0x9E83,\n\t28719 - 11905: 0x9E84,\n\t28720 - 11905: 0x9E85,\n\t28721 - 11905: 0x9E86,\n\t28722 - 11905: 0x9E87,\n\t28723 - 11905: 0x9E88,\n\t28724 - 11905: 0x9E89,\n\t28725 - 11905: 0xE5AF,\n\t28726 - 11905: 0x9E8A,\n\t28727 - 11905: 0x9E8B,\n\t28728 - 11905: 0x9E8C,\n\t28729 - 11905: 0xE5AE,\n\t28730 - 11905: 0x9E8D,\n\t28731 - 11905: 0x9E8E,\n\t28732 - 11905: 0x9E8F,\n\t28733 - 11905: 0x9E90,\n\t28734 - 11905: 0x9E91,\n\t28735 - 11905: 0x9E92,\n\t28736 - 11905: 0x9E93,\n\t28737 - 11905: 0x9E94,\n\t28738 - 11905: 0x9E95,\n\t28739 - 11905: 0x9E96,\n\t28740 - 11905: 0x9E97,\n\t28741 - 11905: 0x9E98,\n\t28742 - 11905: 0x9E99,\n\t28743 - 11905: 0x9E9A,\n\t28744 - 11905: 0x9E9B,\n\t28745 - 11905: 0x9E9C,\n\t28746 - 11905: 0x9E9D,\n\t28747 - 11905: 0x9E9E,\n\t28748 - 11905: 0xB9E0,\n\t28749 - 11905: 0x9E9F,\n\t28750 - 11905: 0x9EA0,\n\t28751 - 11905: 0xE5B0,\n\t28752 - 11905: 0x9EA1,\n\t28753 - 11905: 0x9EA2,\n\t28754 - 11905: 0x9EA3,\n\t28755 - 11905: 0x9EA4,\n\t28756 - 11905: 0x9EA5,\n\t28757 - 11905: 0x9EA6,\n\t28758 - 11905: 0x9EA7,\n\t28759 - 11905: 0x9EA8,\n\t28760 - 11905: 0x9EA9,\n\t28761 - 11905: 0x9EAA,\n\t28762 - 11905: 0x9EAB,\n\t28763 - 11905: 0x9EAC,\n\t28764 - 11905: 0x9EAD,\n\t28765 - 11905: 0x9EAE,\n\t28766 - 11905: 0xE5B1,\n\t28767 - 11905: 0x9EAF,\n\t28768 - 11905: 0x9EB0,\n\t28769 - 11905: 0x9EB1,\n\t28770 - 11905: 0x9EB2,\n\t28771 - 11905: 0x9EB3,\n\t28772 - 11905: 0x9EB4,\n\t28773 - 11905: 0x9EB5,\n\t28774 - 11905: 0x9EB6,\n\t28775 - 11905: 0x9EB7,\n\t28776 - 11905: 0x9EB8,\n\t28777 - 11905: 0x9EB9,\n\t28778 - 11905: 0x9EBA,\n\t28779 - 11905: 0xBBF0,\n\t28780 - 11905: 0xECE1,\n\t28781 - 11905: 0xC3F0,\n\t28782 - 11905: 0x9EBB,\n\t28783 - 11905: 0xB5C6,\n\t28784 - 11905: 0xBBD2,\n\t28785 - 11905: 0x9EBC,\n\t28786 - 11905: 0x9EBD,\n\t28787 - 11905: 0x9EBE,\n\t28788 - 11905: 0x9EBF,\n\t28789 - 11905: 0xC1E9,\n\t28790 - 11905: 0xD4EE,\n\t28791 - 11905: 0x9EC0,\n\t28792 - 11905: 0xBEC4,\n\t28793 - 11905: 0x9EC1,\n\t28794 - 11905: 0x9EC2,\n\t28795 - 11905: 0x9EC3,\n\t28796 - 11905: 0xD7C6,\n\t28797 - 11905: 0x9EC4,\n\t28798 - 11905: 0xD4D6,\n\t28799 - 11905: 0xB2D3,\n\t28800 - 11905: 0xECBE,\n\t28801 - 11905: 0x9EC5,\n\t28802 - 11905: 0x9EC6,\n\t28803 - 11905: 0x9EC7,\n\t28804 - 11905: 0x9EC8,\n\t28805 - 11905: 0xEAC1,\n\t28806 - 11905: 0x9EC9,\n\t28807 - 11905: 0x9ECA,\n\t28808 - 11905: 0x9ECB,\n\t28809 - 11905: 0xC2AF,\n\t28810 - 11905: 0xB4B6,\n\t28811 - 11905: 0x9ECC,\n\t28812 - 11905: 0x9ECD,\n\t28813 - 11905: 0x9ECE,\n\t28814 - 11905: 0xD1D7,\n\t28815 - 11905: 0x9ECF,\n\t28816 - 11905: 0x9ED0,\n\t28817 - 11905: 0x9ED1,\n\t28818 - 11905: 0xB3B4,\n\t28819 - 11905: 0x9ED2,\n\t28820 - 11905: 0xC8B2,\n\t28821 - 11905: 0xBFBB,\n\t28822 - 11905: 0xECC0,\n\t28823 - 11905: 0x9ED3,\n\t28824 - 11905: 0x9ED4,\n\t28825 - 11905: 0xD6CB,\n\t28826 - 11905: 0x9ED5,\n\t28827 - 11905: 0x9ED6,\n\t28828 - 11905: 0xECBF,\n\t28829 - 11905: 0xECC1,\n\t28830 - 11905: 0x9ED7,\n\t28831 - 11905: 0x9ED8,\n\t28832 - 11905: 0x9ED9,\n\t28833 - 11905: 0x9EDA,\n\t28834 - 11905: 0x9EDB,\n\t28835 - 11905: 0x9EDC,\n\t28836 - 11905: 0x9EDD,\n\t28837 - 11905: 0x9EDE,\n\t28838 - 11905: 0x9EDF,\n\t28839 - 11905: 0x9EE0,\n\t28840 - 11905: 0x9EE1,\n\t28841 - 11905: 0x9EE2,\n\t28842 - 11905: 0x9EE3,\n\t28843 - 11905: 0xECC5,\n\t28844 - 11905: 0xBEE6,\n\t28845 - 11905: 0xCCBF,\n\t28846 - 11905: 0xC5DA,\n\t28847 - 11905: 0xBEBC,\n\t28848 - 11905: 0x9EE4,\n\t28849 - 11905: 0xECC6,\n\t28850 - 11905: 0x9EE5,\n\t28851 - 11905: 0xB1FE,\n\t28852 - 11905: 0x9EE6,\n\t28853 - 11905: 0x9EE7,\n\t28854 - 11905: 0x9EE8,\n\t28855 - 11905: 0xECC4,\n\t28856 - 11905: 0xD5A8,\n\t28857 - 11905: 0xB5E3,\n\t28858 - 11905: 0x9EE9,\n\t28859 - 11905: 0xECC2,\n\t28860 - 11905: 0xC1B6,\n\t28861 - 11905: 0xB3E3,\n\t28862 - 11905: 0x9EEA,\n\t28863 - 11905: 0x9EEB,\n\t28864 - 11905: 0xECC3,\n\t28865 - 11905: 0xCBB8,\n\t28866 - 11905: 0xC0C3,\n\t28867 - 11905: 0xCCFE,\n\t28868 - 11905: 0x9EEC,\n\t28869 - 11905: 0x9EED,\n\t28870 - 11905: 0x9EEE,\n\t28871 - 11905: 0x9EEF,\n\t28872 - 11905: 0xC1D2,\n\t28873 - 11905: 0x9EF0,\n\t28874 - 11905: 0xECC8,\n\t28875 - 11905: 0x9EF1,\n\t28876 - 11905: 0x9EF2,\n\t28877 - 11905: 0x9EF3,\n\t28878 - 11905: 0x9EF4,\n\t28879 - 11905: 0x9EF5,\n\t28880 - 11905: 0x9EF6,\n\t28881 - 11905: 0x9EF7,\n\t28882 - 11905: 0x9EF8,\n\t28883 - 11905: 0x9EF9,\n\t28884 - 11905: 0x9EFA,\n\t28885 - 11905: 0x9EFB,\n\t28886 - 11905: 0x9EFC,\n\t28887 - 11905: 0x9EFD,\n\t28888 - 11905: 0xBAE6,\n\t28889 - 11905: 0xC0D3,\n\t28890 - 11905: 0x9EFE,\n\t28891 - 11905: 0xD6F2,\n\t28892 - 11905: 0x9F40,\n\t28893 - 11905: 0x9F41,\n\t28894 - 11905: 0x9F42,\n\t28895 - 11905: 0xD1CC,\n\t28896 - 11905: 0x9F43,\n\t28897 - 11905: 0x9F44,\n\t28898 - 11905: 0x9F45,\n\t28899 - 11905: 0x9F46,\n\t28900 - 11905: 0xBFBE,\n\t28901 - 11905: 0x9F47,\n\t28902 - 11905: 0xB7B3,\n\t28903 - 11905: 0xC9D5,\n\t28904 - 11905: 0xECC7,\n\t28905 - 11905: 0xBBE2,\n\t28906 - 11905: 0x9F48,\n\t28907 - 11905: 0xCCCC,\n\t28908 - 11905: 0xBDFD,\n\t28909 - 11905: 0xC8C8,\n\t28910 - 11905: 0x9F49,\n\t28911 - 11905: 0xCFA9,\n\t28912 - 11905: 0x9F4A,\n\t28913 - 11905: 0x9F4B,\n\t28914 - 11905: 0x9F4C,\n\t28915 - 11905: 0x9F4D,\n\t28916 - 11905: 0x9F4E,\n\t28917 - 11905: 0x9F4F,\n\t28918 - 11905: 0x9F50,\n\t28919 - 11905: 0xCDE9,\n\t28920 - 11905: 0x9F51,\n\t28921 - 11905: 0xC5EB,\n\t28922 - 11905: 0x9F52,\n\t28923 - 11905: 0x9F53,\n\t28924 - 11905: 0x9F54,\n\t28925 - 11905: 0xB7E9,\n\t28926 - 11905: 0x9F55,\n\t28927 - 11905: 0x9F56,\n\t28928 - 11905: 0x9F57,\n\t28929 - 11905: 0x9F58,\n\t28930 - 11905: 0x9F59,\n\t28931 - 11905: 0x9F5A,\n\t28932 - 11905: 0x9F5B,\n\t28933 - 11905: 0x9F5C,\n\t28934 - 11905: 0x9F5D,\n\t28935 - 11905: 0x9F5E,\n\t28936 - 11905: 0x9F5F,\n\t28937 - 11905: 0xD1C9,\n\t28938 - 11905: 0xBAB8,\n\t28939 - 11905: 0x9F60,\n\t28940 - 11905: 0x9F61,\n\t28941 - 11905: 0x9F62,\n\t28942 - 11905: 0x9F63,\n\t28943 - 11905: 0x9F64,\n\t28944 - 11905: 0xECC9,\n\t28945 - 11905: 0x9F65,\n\t28946 - 11905: 0x9F66,\n\t28947 - 11905: 0xECCA,\n\t28948 - 11905: 0x9F67,\n\t28949 - 11905: 0xBBC0,\n\t28950 - 11905: 0xECCB,\n\t28951 - 11905: 0x9F68,\n\t28952 - 11905: 0xECE2,\n\t28953 - 11905: 0xB1BA,\n\t28954 - 11905: 0xB7D9,\n\t28955 - 11905: 0x9F69,\n\t28956 - 11905: 0x9F6A,\n\t28957 - 11905: 0x9F6B,\n\t28958 - 11905: 0x9F6C,\n\t28959 - 11905: 0x9F6D,\n\t28960 - 11905: 0x9F6E,\n\t28961 - 11905: 0x9F6F,\n\t28962 - 11905: 0x9F70,\n\t28963 - 11905: 0x9F71,\n\t28964 - 11905: 0x9F72,\n\t28965 - 11905: 0x9F73,\n\t28966 - 11905: 0xBDB9,\n\t28967 - 11905: 0x9F74,\n\t28968 - 11905: 0x9F75,\n\t28969 - 11905: 0x9F76,\n\t28970 - 11905: 0x9F77,\n\t28971 - 11905: 0x9F78,\n\t28972 - 11905: 0x9F79,\n\t28973 - 11905: 0x9F7A,\n\t28974 - 11905: 0x9F7B,\n\t28975 - 11905: 0xECCC,\n\t28976 - 11905: 0xD1E6,\n\t28977 - 11905: 0xECCD,\n\t28978 - 11905: 0x9F7C,\n\t28979 - 11905: 0x9F7D,\n\t28980 - 11905: 0x9F7E,\n\t28981 - 11905: 0x9F80,\n\t28982 - 11905: 0xC8BB,\n\t28983 - 11905: 0x9F81,\n\t28984 - 11905: 0x9F82,\n\t28985 - 11905: 0x9F83,\n\t28986 - 11905: 0x9F84,\n\t28987 - 11905: 0x9F85,\n\t28988 - 11905: 0x9F86,\n\t28989 - 11905: 0x9F87,\n\t28990 - 11905: 0x9F88,\n\t28991 - 11905: 0x9F89,\n\t28992 - 11905: 0x9F8A,\n\t28993 - 11905: 0x9F8B,\n\t28994 - 11905: 0x9F8C,\n\t28995 - 11905: 0x9F8D,\n\t28996 - 11905: 0x9F8E,\n\t28997 - 11905: 0xECD1,\n\t28998 - 11905: 0x9F8F,\n\t28999 - 11905: 0x9F90,\n\t29000 - 11905: 0x9F91,\n\t29001 - 11905: 0x9F92,\n\t29002 - 11905: 0xECD3,\n\t29003 - 11905: 0x9F93,\n\t29004 - 11905: 0xBBCD,\n\t29005 - 11905: 0x9F94,\n\t29006 - 11905: 0xBCE5,\n\t29007 - 11905: 0x9F95,\n\t29008 - 11905: 0x9F96,\n\t29009 - 11905: 0x9F97,\n\t29010 - 11905: 0x9F98,\n\t29011 - 11905: 0x9F99,\n\t29012 - 11905: 0x9F9A,\n\t29013 - 11905: 0x9F9B,\n\t29014 - 11905: 0x9F9C,\n\t29015 - 11905: 0x9F9D,\n\t29016 - 11905: 0x9F9E,\n\t29017 - 11905: 0x9F9F,\n\t29018 - 11905: 0x9FA0,\n\t29019 - 11905: 0x9FA1,\n\t29020 - 11905: 0xECCF,\n\t29021 - 11905: 0x9FA2,\n\t29022 - 11905: 0xC9B7,\n\t29023 - 11905: 0x9FA3,\n\t29024 - 11905: 0x9FA4,\n\t29025 - 11905: 0x9FA5,\n\t29026 - 11905: 0x9FA6,\n\t29027 - 11905: 0x9FA7,\n\t29028 - 11905: 0xC3BA,\n\t29029 - 11905: 0x9FA8,\n\t29030 - 11905: 0xECE3,\n\t29031 - 11905: 0xD5D5,\n\t29032 - 11905: 0xECD0,\n\t29033 - 11905: 0x9FA9,\n\t29034 - 11905: 0x9FAA,\n\t29035 - 11905: 0x9FAB,\n\t29036 - 11905: 0x9FAC,\n\t29037 - 11905: 0x9FAD,\n\t29038 - 11905: 0xD6F3,\n\t29039 - 11905: 0x9FAE,\n\t29040 - 11905: 0x9FAF,\n\t29041 - 11905: 0x9FB0,\n\t29042 - 11905: 0xECD2,\n\t29043 - 11905: 0xECCE,\n\t29044 - 11905: 0x9FB1,\n\t29045 - 11905: 0x9FB2,\n\t29046 - 11905: 0x9FB3,\n\t29047 - 11905: 0x9FB4,\n\t29048 - 11905: 0xECD4,\n\t29049 - 11905: 0x9FB5,\n\t29050 - 11905: 0xECD5,\n\t29051 - 11905: 0x9FB6,\n\t29052 - 11905: 0x9FB7,\n\t29053 - 11905: 0xC9BF,\n\t29054 - 11905: 0x9FB8,\n\t29055 - 11905: 0x9FB9,\n\t29056 - 11905: 0x9FBA,\n\t29057 - 11905: 0x9FBB,\n\t29058 - 11905: 0x9FBC,\n\t29059 - 11905: 0x9FBD,\n\t29060 - 11905: 0xCFA8,\n\t29061 - 11905: 0x9FBE,\n\t29062 - 11905: 0x9FBF,\n\t29063 - 11905: 0x9FC0,\n\t29064 - 11905: 0x9FC1,\n\t29065 - 11905: 0x9FC2,\n\t29066 - 11905: 0xD0DC,\n\t29067 - 11905: 0x9FC3,\n\t29068 - 11905: 0x9FC4,\n\t29069 - 11905: 0x9FC5,\n\t29070 - 11905: 0x9FC6,\n\t29071 - 11905: 0xD1AC,\n\t29072 - 11905: 0x9FC7,\n\t29073 - 11905: 0x9FC8,\n\t29074 - 11905: 0x9FC9,\n\t29075 - 11905: 0x9FCA,\n\t29076 - 11905: 0xC8DB,\n\t29077 - 11905: 0x9FCB,\n\t29078 - 11905: 0x9FCC,\n\t29079 - 11905: 0x9FCD,\n\t29080 - 11905: 0xECD6,\n\t29081 - 11905: 0xCEF5,\n\t29082 - 11905: 0x9FCE,\n\t29083 - 11905: 0x9FCF,\n\t29084 - 11905: 0x9FD0,\n\t29085 - 11905: 0x9FD1,\n\t29086 - 11905: 0x9FD2,\n\t29087 - 11905: 0xCAEC,\n\t29088 - 11905: 0xECDA,\n\t29089 - 11905: 0x9FD3,\n\t29090 - 11905: 0x9FD4,\n\t29091 - 11905: 0x9FD5,\n\t29092 - 11905: 0x9FD6,\n\t29093 - 11905: 0x9FD7,\n\t29094 - 11905: 0x9FD8,\n\t29095 - 11905: 0x9FD9,\n\t29096 - 11905: 0xECD9,\n\t29097 - 11905: 0x9FDA,\n\t29098 - 11905: 0x9FDB,\n\t29099 - 11905: 0x9FDC,\n\t29100 - 11905: 0xB0BE,\n\t29101 - 11905: 0x9FDD,\n\t29102 - 11905: 0x9FDE,\n\t29103 - 11905: 0x9FDF,\n\t29104 - 11905: 0x9FE0,\n\t29105 - 11905: 0x9FE1,\n\t29106 - 11905: 0x9FE2,\n\t29107 - 11905: 0xECD7,\n\t29108 - 11905: 0x9FE3,\n\t29109 - 11905: 0xECD8,\n\t29110 - 11905: 0x9FE4,\n\t29111 - 11905: 0x9FE5,\n\t29112 - 11905: 0x9FE6,\n\t29113 - 11905: 0xECE4,\n\t29114 - 11905: 0x9FE7,\n\t29115 - 11905: 0x9FE8,\n\t29116 - 11905: 0x9FE9,\n\t29117 - 11905: 0x9FEA,\n\t29118 - 11905: 0x9FEB,\n\t29119 - 11905: 0x9FEC,\n\t29120 - 11905: 0x9FED,\n\t29121 - 11905: 0x9FEE,\n\t29122 - 11905: 0x9FEF,\n\t29123 - 11905: 0xC8BC,\n\t29124 - 11905: 0x9FF0,\n\t29125 - 11905: 0x9FF1,\n\t29126 - 11905: 0x9FF2,\n\t29127 - 11905: 0x9FF3,\n\t29128 - 11905: 0x9FF4,\n\t29129 - 11905: 0x9FF5,\n\t29130 - 11905: 0x9FF6,\n\t29131 - 11905: 0x9FF7,\n\t29132 - 11905: 0x9FF8,\n\t29133 - 11905: 0x9FF9,\n\t29134 - 11905: 0xC1C7,\n\t29135 - 11905: 0x9FFA,\n\t29136 - 11905: 0x9FFB,\n\t29137 - 11905: 0x9FFC,\n\t29138 - 11905: 0x9FFD,\n\t29139 - 11905: 0x9FFE,\n\t29140 - 11905: 0xECDC,\n\t29141 - 11905: 0xD1E0,\n\t29142 - 11905: 0xA040,\n\t29143 - 11905: 0xA041,\n\t29144 - 11905: 0xA042,\n\t29145 - 11905: 0xA043,\n\t29146 - 11905: 0xA044,\n\t29147 - 11905: 0xA045,\n\t29148 - 11905: 0xA046,\n\t29149 - 11905: 0xA047,\n\t29150 - 11905: 0xA048,\n\t29151 - 11905: 0xA049,\n\t29152 - 11905: 0xECDB,\n\t29153 - 11905: 0xA04A,\n\t29154 - 11905: 0xA04B,\n\t29155 - 11905: 0xA04C,\n\t29156 - 11905: 0xA04D,\n\t29157 - 11905: 0xD4EF,\n\t29158 - 11905: 0xA04E,\n\t29159 - 11905: 0xECDD,\n\t29160 - 11905: 0xA04F,\n\t29161 - 11905: 0xA050,\n\t29162 - 11905: 0xA051,\n\t29163 - 11905: 0xA052,\n\t29164 - 11905: 0xA053,\n\t29165 - 11905: 0xA054,\n\t29166 - 11905: 0xDBC6,\n\t29167 - 11905: 0xA055,\n\t29168 - 11905: 0xA056,\n\t29169 - 11905: 0xA057,\n\t29170 - 11905: 0xA058,\n\t29171 - 11905: 0xA059,\n\t29172 - 11905: 0xA05A,\n\t29173 - 11905: 0xA05B,\n\t29174 - 11905: 0xA05C,\n\t29175 - 11905: 0xA05D,\n\t29176 - 11905: 0xA05E,\n\t29177 - 11905: 0xECDE,\n\t29178 - 11905: 0xA05F,\n\t29179 - 11905: 0xA060,\n\t29180 - 11905: 0xA061,\n\t29181 - 11905: 0xA062,\n\t29182 - 11905: 0xA063,\n\t29183 - 11905: 0xA064,\n\t29184 - 11905: 0xA065,\n\t29185 - 11905: 0xA066,\n\t29186 - 11905: 0xA067,\n\t29187 - 11905: 0xA068,\n\t29188 - 11905: 0xA069,\n\t29189 - 11905: 0xA06A,\n\t29190 - 11905: 0xB1AC,\n\t29191 - 11905: 0xA06B,\n\t29192 - 11905: 0xA06C,\n\t29193 - 11905: 0xA06D,\n\t29194 - 11905: 0xA06E,\n\t29195 - 11905: 0xA06F,\n\t29196 - 11905: 0xA070,\n\t29197 - 11905: 0xA071,\n\t29198 - 11905: 0xA072,\n\t29199 - 11905: 0xA073,\n\t29200 - 11905: 0xA074,\n\t29201 - 11905: 0xA075,\n\t29202 - 11905: 0xA076,\n\t29203 - 11905: 0xA077,\n\t29204 - 11905: 0xA078,\n\t29205 - 11905: 0xA079,\n\t29206 - 11905: 0xA07A,\n\t29207 - 11905: 0xA07B,\n\t29208 - 11905: 0xA07C,\n\t29209 - 11905: 0xA07D,\n\t29210 - 11905: 0xA07E,\n\t29211 - 11905: 0xA080,\n\t29212 - 11905: 0xA081,\n\t29213 - 11905: 0xECDF,\n\t29214 - 11905: 0xA082,\n\t29215 - 11905: 0xA083,\n\t29216 - 11905: 0xA084,\n\t29217 - 11905: 0xA085,\n\t29218 - 11905: 0xA086,\n\t29219 - 11905: 0xA087,\n\t29220 - 11905: 0xA088,\n\t29221 - 11905: 0xA089,\n\t29222 - 11905: 0xA08A,\n\t29223 - 11905: 0xA08B,\n\t29224 - 11905: 0xECE0,\n\t29225 - 11905: 0xA08C,\n\t29226 - 11905: 0xD7A6,\n\t29227 - 11905: 0xA08D,\n\t29228 - 11905: 0xC5C0,\n\t29229 - 11905: 0xA08E,\n\t29230 - 11905: 0xA08F,\n\t29231 - 11905: 0xA090,\n\t29232 - 11905: 0xEBBC,\n\t29233 - 11905: 0xB0AE,\n\t29234 - 11905: 0xA091,\n\t29235 - 11905: 0xA092,\n\t29236 - 11905: 0xA093,\n\t29237 - 11905: 0xBEF4,\n\t29238 - 11905: 0xB8B8,\n\t29239 - 11905: 0xD2AF,\n\t29240 - 11905: 0xB0D6,\n\t29241 - 11905: 0xB5F9,\n\t29242 - 11905: 0xA094,\n\t29243 - 11905: 0xD8B3,\n\t29244 - 11905: 0xA095,\n\t29245 - 11905: 0xCBAC,\n\t29246 - 11905: 0xA096,\n\t29247 - 11905: 0xE3DD,\n\t29248 - 11905: 0xA097,\n\t29249 - 11905: 0xA098,\n\t29250 - 11905: 0xA099,\n\t29251 - 11905: 0xA09A,\n\t29252 - 11905: 0xA09B,\n\t29253 - 11905: 0xA09C,\n\t29254 - 11905: 0xA09D,\n\t29255 - 11905: 0xC6AC,\n\t29256 - 11905: 0xB0E6,\n\t29257 - 11905: 0xA09E,\n\t29258 - 11905: 0xA09F,\n\t29259 - 11905: 0xA0A0,\n\t29260 - 11905: 0xC5C6,\n\t29261 - 11905: 0xEBB9,\n\t29262 - 11905: 0xA0A1,\n\t29263 - 11905: 0xA0A2,\n\t29264 - 11905: 0xA0A3,\n\t29265 - 11905: 0xA0A4,\n\t29266 - 11905: 0xEBBA,\n\t29267 - 11905: 0xA0A5,\n\t29268 - 11905: 0xA0A6,\n\t29269 - 11905: 0xA0A7,\n\t29270 - 11905: 0xEBBB,\n\t29271 - 11905: 0xA0A8,\n\t29272 - 11905: 0xA0A9,\n\t29273 - 11905: 0xD1C0,\n\t29274 - 11905: 0xA0AA,\n\t29275 - 11905: 0xC5A3,\n\t29276 - 11905: 0xA0AB,\n\t29277 - 11905: 0xEAF2,\n\t29278 - 11905: 0xA0AC,\n\t29279 - 11905: 0xC4B2,\n\t29280 - 11905: 0xA0AD,\n\t29281 - 11905: 0xC4B5,\n\t29282 - 11905: 0xC0CE,\n\t29283 - 11905: 0xA0AE,\n\t29284 - 11905: 0xA0AF,\n\t29285 - 11905: 0xA0B0,\n\t29286 - 11905: 0xEAF3,\n\t29287 - 11905: 0xC4C1,\n\t29288 - 11905: 0xA0B1,\n\t29289 - 11905: 0xCEEF,\n\t29290 - 11905: 0xA0B2,\n\t29291 - 11905: 0xA0B3,\n\t29292 - 11905: 0xA0B4,\n\t29293 - 11905: 0xA0B5,\n\t29294 - 11905: 0xEAF0,\n\t29295 - 11905: 0xEAF4,\n\t29296 - 11905: 0xA0B6,\n\t29297 - 11905: 0xA0B7,\n\t29298 - 11905: 0xC9FC,\n\t29299 - 11905: 0xA0B8,\n\t29300 - 11905: 0xA0B9,\n\t29301 - 11905: 0xC7A3,\n\t29302 - 11905: 0xA0BA,\n\t29303 - 11905: 0xA0BB,\n\t29304 - 11905: 0xA0BC,\n\t29305 - 11905: 0xCCD8,\n\t29306 - 11905: 0xCEFE,\n\t29307 - 11905: 0xA0BD,\n\t29308 - 11905: 0xA0BE,\n\t29309 - 11905: 0xA0BF,\n\t29310 - 11905: 0xEAF5,\n\t29311 - 11905: 0xEAF6,\n\t29312 - 11905: 0xCFAC,\n\t29313 - 11905: 0xC0E7,\n\t29314 - 11905: 0xA0C0,\n\t29315 - 11905: 0xA0C1,\n\t29316 - 11905: 0xEAF7,\n\t29317 - 11905: 0xA0C2,\n\t29318 - 11905: 0xA0C3,\n\t29319 - 11905: 0xA0C4,\n\t29320 - 11905: 0xA0C5,\n\t29321 - 11905: 0xA0C6,\n\t29322 - 11905: 0xB6BF,\n\t29323 - 11905: 0xEAF8,\n\t29324 - 11905: 0xA0C7,\n\t29325 - 11905: 0xEAF9,\n\t29326 - 11905: 0xA0C8,\n\t29327 - 11905: 0xEAFA,\n\t29328 - 11905: 0xA0C9,\n\t29329 - 11905: 0xA0CA,\n\t29330 - 11905: 0xEAFB,\n\t29331 - 11905: 0xA0CB,\n\t29332 - 11905: 0xA0CC,\n\t29333 - 11905: 0xA0CD,\n\t29334 - 11905: 0xA0CE,\n\t29335 - 11905: 0xA0CF,\n\t29336 - 11905: 0xA0D0,\n\t29337 - 11905: 0xA0D1,\n\t29338 - 11905: 0xA0D2,\n\t29339 - 11905: 0xA0D3,\n\t29340 - 11905: 0xA0D4,\n\t29341 - 11905: 0xA0D5,\n\t29342 - 11905: 0xA0D6,\n\t29343 - 11905: 0xEAF1,\n\t29344 - 11905: 0xA0D7,\n\t29345 - 11905: 0xA0D8,\n\t29346 - 11905: 0xA0D9,\n\t29347 - 11905: 0xA0DA,\n\t29348 - 11905: 0xA0DB,\n\t29349 - 11905: 0xA0DC,\n\t29350 - 11905: 0xA0DD,\n\t29351 - 11905: 0xA0DE,\n\t29352 - 11905: 0xA0DF,\n\t29353 - 11905: 0xA0E0,\n\t29354 - 11905: 0xA0E1,\n\t29355 - 11905: 0xA0E2,\n\t29356 - 11905: 0xC8AE,\n\t29357 - 11905: 0xE1EB,\n\t29358 - 11905: 0xA0E3,\n\t29359 - 11905: 0xB7B8,\n\t29360 - 11905: 0xE1EC,\n\t29361 - 11905: 0xA0E4,\n\t29362 - 11905: 0xA0E5,\n\t29363 - 11905: 0xA0E6,\n\t29364 - 11905: 0xE1ED,\n\t29365 - 11905: 0xA0E7,\n\t29366 - 11905: 0xD7B4,\n\t29367 - 11905: 0xE1EE,\n\t29368 - 11905: 0xE1EF,\n\t29369 - 11905: 0xD3CC,\n\t29370 - 11905: 0xA0E8,\n\t29371 - 11905: 0xA0E9,\n\t29372 - 11905: 0xA0EA,\n\t29373 - 11905: 0xA0EB,\n\t29374 - 11905: 0xA0EC,\n\t29375 - 11905: 0xA0ED,\n\t29376 - 11905: 0xA0EE,\n\t29377 - 11905: 0xE1F1,\n\t29378 - 11905: 0xBFF1,\n\t29379 - 11905: 0xE1F0,\n\t29380 - 11905: 0xB5D2,\n\t29381 - 11905: 0xA0EF,\n\t29382 - 11905: 0xA0F0,\n\t29383 - 11905: 0xA0F1,\n\t29384 - 11905: 0xB1B7,\n\t29385 - 11905: 0xA0F2,\n\t29386 - 11905: 0xA0F3,\n\t29387 - 11905: 0xA0F4,\n\t29388 - 11905: 0xA0F5,\n\t29389 - 11905: 0xE1F3,\n\t29390 - 11905: 0xE1F2,\n\t29391 - 11905: 0xA0F6,\n\t29392 - 11905: 0xBAFC,\n\t29393 - 11905: 0xA0F7,\n\t29394 - 11905: 0xE1F4,\n\t29395 - 11905: 0xA0F8,\n\t29396 - 11905: 0xA0F9,\n\t29397 - 11905: 0xA0FA,\n\t29398 - 11905: 0xA0FB,\n\t29399 - 11905: 0xB9B7,\n\t29400 - 11905: 0xA0FC,\n\t29401 - 11905: 0xBED1,\n\t29402 - 11905: 0xA0FD,\n\t29403 - 11905: 0xA0FE,\n\t29404 - 11905: 0xAA40,\n\t29405 - 11905: 0xAA41,\n\t29406 - 11905: 0xC4FC,\n\t29407 - 11905: 0xAA42,\n\t29408 - 11905: 0xBADD,\n\t29409 - 11905: 0xBDC6,\n\t29410 - 11905: 0xAA43,\n\t29411 - 11905: 0xAA44,\n\t29412 - 11905: 0xAA45,\n\t29413 - 11905: 0xAA46,\n\t29414 - 11905: 0xAA47,\n\t29415 - 11905: 0xAA48,\n\t29416 - 11905: 0xE1F5,\n\t29417 - 11905: 0xE1F7,\n\t29418 - 11905: 0xAA49,\n\t29419 - 11905: 0xAA4A,\n\t29420 - 11905: 0xB6C0,\n\t29421 - 11905: 0xCFC1,\n\t29422 - 11905: 0xCAA8,\n\t29423 - 11905: 0xE1F6,\n\t29424 - 11905: 0xD5F8,\n\t29425 - 11905: 0xD3FC,\n\t29426 - 11905: 0xE1F8,\n\t29427 - 11905: 0xE1FC,\n\t29428 - 11905: 0xE1F9,\n\t29429 - 11905: 0xAA4B,\n\t29430 - 11905: 0xAA4C,\n\t29431 - 11905: 0xE1FA,\n\t29432 - 11905: 0xC0EA,\n\t29433 - 11905: 0xAA4D,\n\t29434 - 11905: 0xE1FE,\n\t29435 - 11905: 0xE2A1,\n\t29436 - 11905: 0xC0C7,\n\t29437 - 11905: 0xAA4E,\n\t29438 - 11905: 0xAA4F,\n\t29439 - 11905: 0xAA50,\n\t29440 - 11905: 0xAA51,\n\t29441 - 11905: 0xE1FB,\n\t29442 - 11905: 0xAA52,\n\t29443 - 11905: 0xE1FD,\n\t29444 - 11905: 0xAA53,\n\t29445 - 11905: 0xAA54,\n\t29446 - 11905: 0xAA55,\n\t29447 - 11905: 0xAA56,\n\t29448 - 11905: 0xAA57,\n\t29449 - 11905: 0xAA58,\n\t29450 - 11905: 0xE2A5,\n\t29451 - 11905: 0xAA59,\n\t29452 - 11905: 0xAA5A,\n\t29453 - 11905: 0xAA5B,\n\t29454 - 11905: 0xC1D4,\n\t29455 - 11905: 0xAA5C,\n\t29456 - 11905: 0xAA5D,\n\t29457 - 11905: 0xAA5E,\n\t29458 - 11905: 0xAA5F,\n\t29459 - 11905: 0xE2A3,\n\t29460 - 11905: 0xAA60,\n\t29461 - 11905: 0xE2A8,\n\t29462 - 11905: 0xB2FE,\n\t29463 - 11905: 0xE2A2,\n\t29464 - 11905: 0xAA61,\n\t29465 - 11905: 0xAA62,\n\t29466 - 11905: 0xAA63,\n\t29467 - 11905: 0xC3CD,\n\t29468 - 11905: 0xB2C2,\n\t29469 - 11905: 0xE2A7,\n\t29470 - 11905: 0xE2A6,\n\t29471 - 11905: 0xAA64,\n\t29472 - 11905: 0xAA65,\n\t29473 - 11905: 0xE2A4,\n\t29474 - 11905: 0xE2A9,\n\t29475 - 11905: 0xAA66,\n\t29476 - 11905: 0xAA67,\n\t29477 - 11905: 0xE2AB,\n\t29478 - 11905: 0xAA68,\n\t29479 - 11905: 0xAA69,\n\t29480 - 11905: 0xAA6A,\n\t29481 - 11905: 0xD0C9,\n\t29482 - 11905: 0xD6ED,\n\t29483 - 11905: 0xC3A8,\n\t29484 - 11905: 0xE2AC,\n\t29485 - 11905: 0xAA6B,\n\t29486 - 11905: 0xCFD7,\n\t29487 - 11905: 0xAA6C,\n\t29488 - 11905: 0xAA6D,\n\t29489 - 11905: 0xE2AE,\n\t29490 - 11905: 0xAA6E,\n\t29491 - 11905: 0xAA6F,\n\t29492 - 11905: 0xBAEF,\n\t29493 - 11905: 0xAA70,\n\t29494 - 11905: 0xAA71,\n\t29495 - 11905: 0xE9E0,\n\t29496 - 11905: 0xE2AD,\n\t29497 - 11905: 0xE2AA,\n\t29498 - 11905: 0xAA72,\n\t29499 - 11905: 0xAA73,\n\t29500 - 11905: 0xAA74,\n\t29501 - 11905: 0xAA75,\n\t29502 - 11905: 0xBBAB,\n\t29503 - 11905: 0xD4B3,\n\t29504 - 11905: 0xAA76,\n\t29505 - 11905: 0xAA77,\n\t29506 - 11905: 0xAA78,\n\t29507 - 11905: 0xAA79,\n\t29508 - 11905: 0xAA7A,\n\t29509 - 11905: 0xAA7B,\n\t29510 - 11905: 0xAA7C,\n\t29511 - 11905: 0xAA7D,\n\t29512 - 11905: 0xAA7E,\n\t29513 - 11905: 0xAA80,\n\t29514 - 11905: 0xAA81,\n\t29515 - 11905: 0xAA82,\n\t29516 - 11905: 0xAA83,\n\t29517 - 11905: 0xE2B0,\n\t29518 - 11905: 0xAA84,\n\t29519 - 11905: 0xAA85,\n\t29520 - 11905: 0xE2AF,\n\t29521 - 11905: 0xAA86,\n\t29522 - 11905: 0xE9E1,\n\t29523 - 11905: 0xAA87,\n\t29524 - 11905: 0xAA88,\n\t29525 - 11905: 0xAA89,\n\t29526 - 11905: 0xAA8A,\n\t29527 - 11905: 0xE2B1,\n\t29528 - 11905: 0xAA8B,\n\t29529 - 11905: 0xAA8C,\n\t29530 - 11905: 0xAA8D,\n\t29531 - 11905: 0xAA8E,\n\t29532 - 11905: 0xAA8F,\n\t29533 - 11905: 0xAA90,\n\t29534 - 11905: 0xAA91,\n\t29535 - 11905: 0xAA92,\n\t29536 - 11905: 0xE2B2,\n\t29537 - 11905: 0xAA93,\n\t29538 - 11905: 0xAA94,\n\t29539 - 11905: 0xAA95,\n\t29540 - 11905: 0xAA96,\n\t29541 - 11905: 0xAA97,\n\t29542 - 11905: 0xAA98,\n\t29543 - 11905: 0xAA99,\n\t29544 - 11905: 0xAA9A,\n\t29545 - 11905: 0xAA9B,\n\t29546 - 11905: 0xAA9C,\n\t29547 - 11905: 0xAA9D,\n\t29548 - 11905: 0xE2B3,\n\t29549 - 11905: 0xCCA1,\n\t29550 - 11905: 0xAA9E,\n\t29551 - 11905: 0xE2B4,\n\t29552 - 11905: 0xAA9F,\n\t29553 - 11905: 0xAAA0,\n\t29554 - 11905: 0xAB40,\n\t29555 - 11905: 0xAB41,\n\t29556 - 11905: 0xAB42,\n\t29557 - 11905: 0xAB43,\n\t29558 - 11905: 0xAB44,\n\t29559 - 11905: 0xAB45,\n\t29560 - 11905: 0xAB46,\n\t29561 - 11905: 0xAB47,\n\t29562 - 11905: 0xAB48,\n\t29563 - 11905: 0xAB49,\n\t29564 - 11905: 0xAB4A,\n\t29565 - 11905: 0xAB4B,\n\t29566 - 11905: 0xE2B5,\n\t29567 - 11905: 0xAB4C,\n\t29568 - 11905: 0xAB4D,\n\t29569 - 11905: 0xAB4E,\n\t29570 - 11905: 0xAB4F,\n\t29571 - 11905: 0xAB50,\n\t29572 - 11905: 0xD0FE,\n\t29573 - 11905: 0xAB51,\n\t29574 - 11905: 0xAB52,\n\t29575 - 11905: 0xC2CA,\n\t29576 - 11905: 0xAB53,\n\t29577 - 11905: 0xD3F1,\n\t29578 - 11905: 0xAB54,\n\t29579 - 11905: 0xCDF5,\n\t29580 - 11905: 0xAB55,\n\t29581 - 11905: 0xAB56,\n\t29582 - 11905: 0xE7E0,\n\t29583 - 11905: 0xAB57,\n\t29584 - 11905: 0xAB58,\n\t29585 - 11905: 0xE7E1,\n\t29586 - 11905: 0xAB59,\n\t29587 - 11905: 0xAB5A,\n\t29588 - 11905: 0xAB5B,\n\t29589 - 11905: 0xAB5C,\n\t29590 - 11905: 0xBEC1,\n\t29591 - 11905: 0xAB5D,\n\t29592 - 11905: 0xAB5E,\n\t29593 - 11905: 0xAB5F,\n\t29594 - 11905: 0xAB60,\n\t29595 - 11905: 0xC2EA,\n\t29596 - 11905: 0xAB61,\n\t29597 - 11905: 0xAB62,\n\t29598 - 11905: 0xAB63,\n\t29599 - 11905: 0xE7E4,\n\t29600 - 11905: 0xAB64,\n\t29601 - 11905: 0xAB65,\n\t29602 - 11905: 0xE7E3,\n\t29603 - 11905: 0xAB66,\n\t29604 - 11905: 0xAB67,\n\t29605 - 11905: 0xAB68,\n\t29606 - 11905: 0xAB69,\n\t29607 - 11905: 0xAB6A,\n\t29608 - 11905: 0xAB6B,\n\t29609 - 11905: 0xCDE6,\n\t29610 - 11905: 0xAB6C,\n\t29611 - 11905: 0xC3B5,\n\t29612 - 11905: 0xAB6D,\n\t29613 - 11905: 0xAB6E,\n\t29614 - 11905: 0xE7E2,\n\t29615 - 11905: 0xBBB7,\n\t29616 - 11905: 0xCFD6,\n\t29617 - 11905: 0xAB6F,\n\t29618 - 11905: 0xC1E1,\n\t29619 - 11905: 0xE7E9,\n\t29620 - 11905: 0xAB70,\n\t29621 - 11905: 0xAB71,\n\t29622 - 11905: 0xAB72,\n\t29623 - 11905: 0xE7E8,\n\t29624 - 11905: 0xAB73,\n\t29625 - 11905: 0xAB74,\n\t29626 - 11905: 0xE7F4,\n\t29627 - 11905: 0xB2A3,\n\t29628 - 11905: 0xAB75,\n\t29629 - 11905: 0xAB76,\n\t29630 - 11905: 0xAB77,\n\t29631 - 11905: 0xAB78,\n\t29632 - 11905: 0xE7EA,\n\t29633 - 11905: 0xAB79,\n\t29634 - 11905: 0xE7E6,\n\t29635 - 11905: 0xAB7A,\n\t29636 - 11905: 0xAB7B,\n\t29637 - 11905: 0xAB7C,\n\t29638 - 11905: 0xAB7D,\n\t29639 - 11905: 0xAB7E,\n\t29640 - 11905: 0xE7EC,\n\t29641 - 11905: 0xE7EB,\n\t29642 - 11905: 0xC9BA,\n\t29643 - 11905: 0xAB80,\n\t29644 - 11905: 0xAB81,\n\t29645 - 11905: 0xD5E4,\n\t29646 - 11905: 0xAB82,\n\t29647 - 11905: 0xE7E5,\n\t29648 - 11905: 0xB7A9,\n\t29649 - 11905: 0xE7E7,\n\t29650 - 11905: 0xAB83,\n\t29651 - 11905: 0xAB84,\n\t29652 - 11905: 0xAB85,\n\t29653 - 11905: 0xAB86,\n\t29654 - 11905: 0xAB87,\n\t29655 - 11905: 0xAB88,\n\t29656 - 11905: 0xAB89,\n\t29657 - 11905: 0xE7EE,\n\t29658 - 11905: 0xAB8A,\n\t29659 - 11905: 0xAB8B,\n\t29660 - 11905: 0xAB8C,\n\t29661 - 11905: 0xAB8D,\n\t29662 - 11905: 0xE7F3,\n\t29663 - 11905: 0xAB8E,\n\t29664 - 11905: 0xD6E9,\n\t29665 - 11905: 0xAB8F,\n\t29666 - 11905: 0xAB90,\n\t29667 - 11905: 0xAB91,\n\t29668 - 11905: 0xAB92,\n\t29669 - 11905: 0xE7ED,\n\t29670 - 11905: 0xAB93,\n\t29671 - 11905: 0xE7F2,\n\t29672 - 11905: 0xAB94,\n\t29673 - 11905: 0xE7F1,\n\t29674 - 11905: 0xAB95,\n\t29675 - 11905: 0xAB96,\n\t29676 - 11905: 0xAB97,\n\t29677 - 11905: 0xB0E0,\n\t29678 - 11905: 0xAB98,\n\t29679 - 11905: 0xAB99,\n\t29680 - 11905: 0xAB9A,\n\t29681 - 11905: 0xAB9B,\n\t29682 - 11905: 0xE7F5,\n\t29683 - 11905: 0xAB9C,\n\t29684 - 11905: 0xAB9D,\n\t29685 - 11905: 0xAB9E,\n\t29686 - 11905: 0xAB9F,\n\t29687 - 11905: 0xABA0,\n\t29688 - 11905: 0xAC40,\n\t29689 - 11905: 0xAC41,\n\t29690 - 11905: 0xAC42,\n\t29691 - 11905: 0xAC43,\n\t29692 - 11905: 0xAC44,\n\t29693 - 11905: 0xAC45,\n\t29694 - 11905: 0xAC46,\n\t29695 - 11905: 0xAC47,\n\t29696 - 11905: 0xAC48,\n\t29697 - 11905: 0xAC49,\n\t29698 - 11905: 0xAC4A,\n\t29699 - 11905: 0xC7F2,\n\t29700 - 11905: 0xAC4B,\n\t29701 - 11905: 0xC0C5,\n\t29702 - 11905: 0xC0ED,\n\t29703 - 11905: 0xAC4C,\n\t29704 - 11905: 0xAC4D,\n\t29705 - 11905: 0xC1F0,\n\t29706 - 11905: 0xE7F0,\n\t29707 - 11905: 0xAC4E,\n\t29708 - 11905: 0xAC4F,\n\t29709 - 11905: 0xAC50,\n\t29710 - 11905: 0xAC51,\n\t29711 - 11905: 0xE7F6,\n\t29712 - 11905: 0xCBF6,\n\t29713 - 11905: 0xAC52,\n\t29714 - 11905: 0xAC53,\n\t29715 - 11905: 0xAC54,\n\t29716 - 11905: 0xAC55,\n\t29717 - 11905: 0xAC56,\n\t29718 - 11905: 0xAC57,\n\t29719 - 11905: 0xAC58,\n\t29720 - 11905: 0xAC59,\n\t29721 - 11905: 0xAC5A,\n\t29722 - 11905: 0xE8A2,\n\t29723 - 11905: 0xE8A1,\n\t29724 - 11905: 0xAC5B,\n\t29725 - 11905: 0xAC5C,\n\t29726 - 11905: 0xAC5D,\n\t29727 - 11905: 0xAC5E,\n\t29728 - 11905: 0xAC5F,\n\t29729 - 11905: 0xAC60,\n\t29730 - 11905: 0xD7C1,\n\t29731 - 11905: 0xAC61,\n\t29732 - 11905: 0xAC62,\n\t29733 - 11905: 0xE7FA,\n\t29734 - 11905: 0xE7F9,\n\t29735 - 11905: 0xAC63,\n\t29736 - 11905: 0xE7FB,\n\t29737 - 11905: 0xAC64,\n\t29738 - 11905: 0xE7F7,\n\t29739 - 11905: 0xAC65,\n\t29740 - 11905: 0xE7FE,\n\t29741 - 11905: 0xAC66,\n\t29742 - 11905: 0xE7FD,\n\t29743 - 11905: 0xAC67,\n\t29744 - 11905: 0xE7FC,\n\t29745 - 11905: 0xAC68,\n\t29746 - 11905: 0xAC69,\n\t29747 - 11905: 0xC1D5,\n\t29748 - 11905: 0xC7D9,\n\t29749 - 11905: 0xC5FD,\n\t29750 - 11905: 0xC5C3,\n\t29751 - 11905: 0xAC6A,\n\t29752 - 11905: 0xAC6B,\n\t29753 - 11905: 0xAC6C,\n\t29754 - 11905: 0xAC6D,\n\t29755 - 11905: 0xAC6E,\n\t29756 - 11905: 0xC7ED,\n\t29757 - 11905: 0xAC6F,\n\t29758 - 11905: 0xAC70,\n\t29759 - 11905: 0xAC71,\n\t29760 - 11905: 0xAC72,\n\t29761 - 11905: 0xE8A3,\n\t29762 - 11905: 0xAC73,\n\t29763 - 11905: 0xAC74,\n\t29764 - 11905: 0xAC75,\n\t29765 - 11905: 0xAC76,\n\t29766 - 11905: 0xAC77,\n\t29767 - 11905: 0xAC78,\n\t29768 - 11905: 0xAC79,\n\t29769 - 11905: 0xAC7A,\n\t29770 - 11905: 0xAC7B,\n\t29771 - 11905: 0xAC7C,\n\t29772 - 11905: 0xAC7D,\n\t29773 - 11905: 0xAC7E,\n\t29774 - 11905: 0xAC80,\n\t29775 - 11905: 0xAC81,\n\t29776 - 11905: 0xAC82,\n\t29777 - 11905: 0xAC83,\n\t29778 - 11905: 0xAC84,\n\t29779 - 11905: 0xAC85,\n\t29780 - 11905: 0xAC86,\n\t29781 - 11905: 0xE8A6,\n\t29782 - 11905: 0xAC87,\n\t29783 - 11905: 0xE8A5,\n\t29784 - 11905: 0xAC88,\n\t29785 - 11905: 0xE8A7,\n\t29786 - 11905: 0xBAF7,\n\t29787 - 11905: 0xE7F8,\n\t29788 - 11905: 0xE8A4,\n\t29789 - 11905: 0xAC89,\n\t29790 - 11905: 0xC8F0,\n\t29791 - 11905: 0xC9AA,\n\t29792 - 11905: 0xAC8A,\n\t29793 - 11905: 0xAC8B,\n\t29794 - 11905: 0xAC8C,\n\t29795 - 11905: 0xAC8D,\n\t29796 - 11905: 0xAC8E,\n\t29797 - 11905: 0xAC8F,\n\t29798 - 11905: 0xAC90,\n\t29799 - 11905: 0xAC91,\n\t29800 - 11905: 0xAC92,\n\t29801 - 11905: 0xAC93,\n\t29802 - 11905: 0xAC94,\n\t29803 - 11905: 0xAC95,\n\t29804 - 11905: 0xAC96,\n\t29805 - 11905: 0xE8A9,\n\t29806 - 11905: 0xAC97,\n\t29807 - 11905: 0xAC98,\n\t29808 - 11905: 0xB9E5,\n\t29809 - 11905: 0xAC99,\n\t29810 - 11905: 0xAC9A,\n\t29811 - 11905: 0xAC9B,\n\t29812 - 11905: 0xAC9C,\n\t29813 - 11905: 0xAC9D,\n\t29814 - 11905: 0xD1FE,\n\t29815 - 11905: 0xE8A8,\n\t29816 - 11905: 0xAC9E,\n\t29817 - 11905: 0xAC9F,\n\t29818 - 11905: 0xACA0,\n\t29819 - 11905: 0xAD40,\n\t29820 - 11905: 0xAD41,\n\t29821 - 11905: 0xAD42,\n\t29822 - 11905: 0xE8AA,\n\t29823 - 11905: 0xAD43,\n\t29824 - 11905: 0xE8AD,\n\t29825 - 11905: 0xE8AE,\n\t29826 - 11905: 0xAD44,\n\t29827 - 11905: 0xC1A7,\n\t29828 - 11905: 0xAD45,\n\t29829 - 11905: 0xAD46,\n\t29830 - 11905: 0xAD47,\n\t29831 - 11905: 0xE8AF,\n\t29832 - 11905: 0xAD48,\n\t29833 - 11905: 0xAD49,\n\t29834 - 11905: 0xAD4A,\n\t29835 - 11905: 0xE8B0,\n\t29836 - 11905: 0xAD4B,\n\t29837 - 11905: 0xAD4C,\n\t29838 - 11905: 0xE8AC,\n\t29839 - 11905: 0xAD4D,\n\t29840 - 11905: 0xE8B4,\n\t29841 - 11905: 0xAD4E,\n\t29842 - 11905: 0xAD4F,\n\t29843 - 11905: 0xAD50,\n\t29844 - 11905: 0xAD51,\n\t29845 - 11905: 0xAD52,\n\t29846 - 11905: 0xAD53,\n\t29847 - 11905: 0xAD54,\n\t29848 - 11905: 0xAD55,\n\t29849 - 11905: 0xAD56,\n\t29850 - 11905: 0xAD57,\n\t29851 - 11905: 0xAD58,\n\t29852 - 11905: 0xE8AB,\n\t29853 - 11905: 0xAD59,\n\t29854 - 11905: 0xE8B1,\n\t29855 - 11905: 0xAD5A,\n\t29856 - 11905: 0xAD5B,\n\t29857 - 11905: 0xAD5C,\n\t29858 - 11905: 0xAD5D,\n\t29859 - 11905: 0xAD5E,\n\t29860 - 11905: 0xAD5F,\n\t29861 - 11905: 0xAD60,\n\t29862 - 11905: 0xAD61,\n\t29863 - 11905: 0xE8B5,\n\t29864 - 11905: 0xE8B2,\n\t29865 - 11905: 0xE8B3,\n\t29866 - 11905: 0xAD62,\n\t29867 - 11905: 0xAD63,\n\t29868 - 11905: 0xAD64,\n\t29869 - 11905: 0xAD65,\n\t29870 - 11905: 0xAD66,\n\t29871 - 11905: 0xAD67,\n\t29872 - 11905: 0xAD68,\n\t29873 - 11905: 0xAD69,\n\t29874 - 11905: 0xAD6A,\n\t29875 - 11905: 0xAD6B,\n\t29876 - 11905: 0xAD6C,\n\t29877 - 11905: 0xAD6D,\n\t29878 - 11905: 0xAD6E,\n\t29879 - 11905: 0xAD6F,\n\t29880 - 11905: 0xAD70,\n\t29881 - 11905: 0xAD71,\n\t29882 - 11905: 0xE8B7,\n\t29883 - 11905: 0xAD72,\n\t29884 - 11905: 0xAD73,\n\t29885 - 11905: 0xAD74,\n\t29886 - 11905: 0xAD75,\n\t29887 - 11905: 0xAD76,\n\t29888 - 11905: 0xAD77,\n\t29889 - 11905: 0xAD78,\n\t29890 - 11905: 0xAD79,\n\t29891 - 11905: 0xAD7A,\n\t29892 - 11905: 0xAD7B,\n\t29893 - 11905: 0xAD7C,\n\t29894 - 11905: 0xAD7D,\n\t29895 - 11905: 0xAD7E,\n\t29896 - 11905: 0xAD80,\n\t29897 - 11905: 0xAD81,\n\t29898 - 11905: 0xAD82,\n\t29899 - 11905: 0xAD83,\n\t29900 - 11905: 0xAD84,\n\t29901 - 11905: 0xAD85,\n\t29902 - 11905: 0xAD86,\n\t29903 - 11905: 0xAD87,\n\t29904 - 11905: 0xAD88,\n\t29905 - 11905: 0xAD89,\n\t29906 - 11905: 0xE8B6,\n\t29907 - 11905: 0xAD8A,\n\t29908 - 11905: 0xAD8B,\n\t29909 - 11905: 0xAD8C,\n\t29910 - 11905: 0xAD8D,\n\t29911 - 11905: 0xAD8E,\n\t29912 - 11905: 0xAD8F,\n\t29913 - 11905: 0xAD90,\n\t29914 - 11905: 0xAD91,\n\t29915 - 11905: 0xAD92,\n\t29916 - 11905: 0xB9CF,\n\t29917 - 11905: 0xAD93,\n\t29918 - 11905: 0xF0AC,\n\t29919 - 11905: 0xAD94,\n\t29920 - 11905: 0xF0AD,\n\t29921 - 11905: 0xAD95,\n\t29922 - 11905: 0xC6B0,\n\t29923 - 11905: 0xB0EA,\n\t29924 - 11905: 0xC8BF,\n\t29925 - 11905: 0xAD96,\n\t29926 - 11905: 0xCDDF,\n\t29927 - 11905: 0xAD97,\n\t29928 - 11905: 0xAD98,\n\t29929 - 11905: 0xAD99,\n\t29930 - 11905: 0xAD9A,\n\t29931 - 11905: 0xAD9B,\n\t29932 - 11905: 0xAD9C,\n\t29933 - 11905: 0xAD9D,\n\t29934 - 11905: 0xCECD,\n\t29935 - 11905: 0xEAB1,\n\t29936 - 11905: 0xAD9E,\n\t29937 - 11905: 0xAD9F,\n\t29938 - 11905: 0xADA0,\n\t29939 - 11905: 0xAE40,\n\t29940 - 11905: 0xEAB2,\n\t29941 - 11905: 0xAE41,\n\t29942 - 11905: 0xC6BF,\n\t29943 - 11905: 0xB4C9,\n\t29944 - 11905: 0xAE42,\n\t29945 - 11905: 0xAE43,\n\t29946 - 11905: 0xAE44,\n\t29947 - 11905: 0xAE45,\n\t29948 - 11905: 0xAE46,\n\t29949 - 11905: 0xAE47,\n\t29950 - 11905: 0xAE48,\n\t29951 - 11905: 0xEAB3,\n\t29952 - 11905: 0xAE49,\n\t29953 - 11905: 0xAE4A,\n\t29954 - 11905: 0xAE4B,\n\t29955 - 11905: 0xAE4C,\n\t29956 - 11905: 0xD5E7,\n\t29957 - 11905: 0xAE4D,\n\t29958 - 11905: 0xAE4E,\n\t29959 - 11905: 0xAE4F,\n\t29960 - 11905: 0xAE50,\n\t29961 - 11905: 0xAE51,\n\t29962 - 11905: 0xAE52,\n\t29963 - 11905: 0xAE53,\n\t29964 - 11905: 0xAE54,\n\t29965 - 11905: 0xDDF9,\n\t29966 - 11905: 0xAE55,\n\t29967 - 11905: 0xEAB4,\n\t29968 - 11905: 0xAE56,\n\t29969 - 11905: 0xEAB5,\n\t29970 - 11905: 0xAE57,\n\t29971 - 11905: 0xEAB6,\n\t29972 - 11905: 0xAE58,\n\t29973 - 11905: 0xAE59,\n\t29974 - 11905: 0xAE5A,\n\t29975 - 11905: 0xAE5B,\n\t29976 - 11905: 0xB8CA,\n\t29977 - 11905: 0xDFB0,\n\t29978 - 11905: 0xC9F5,\n\t29979 - 11905: 0xAE5C,\n\t29980 - 11905: 0xCCF0,\n\t29981 - 11905: 0xAE5D,\n\t29982 - 11905: 0xAE5E,\n\t29983 - 11905: 0xC9FA,\n\t29984 - 11905: 0xAE5F,\n\t29985 - 11905: 0xAE60,\n\t29986 - 11905: 0xAE61,\n\t29987 - 11905: 0xAE62,\n\t29988 - 11905: 0xAE63,\n\t29989 - 11905: 0xC9FB,\n\t29990 - 11905: 0xAE64,\n\t29991 - 11905: 0xAE65,\n\t29992 - 11905: 0xD3C3,\n\t29993 - 11905: 0xCBA6,\n\t29994 - 11905: 0xAE66,\n\t29995 - 11905: 0xB8A6,\n\t29996 - 11905: 0xF0AE,\n\t29997 - 11905: 0xB1C2,\n\t29998 - 11905: 0xAE67,\n\t29999 - 11905: 0xE5B8,\n\t30000 - 11905: 0xCCEF,\n\t30001 - 11905: 0xD3C9,\n\t30002 - 11905: 0xBCD7,\n\t30003 - 11905: 0xC9EA,\n\t30004 - 11905: 0xAE68,\n\t30005 - 11905: 0xB5E7,\n\t30006 - 11905: 0xAE69,\n\t30007 - 11905: 0xC4D0,\n\t30008 - 11905: 0xB5E9,\n\t30009 - 11905: 0xAE6A,\n\t30010 - 11905: 0xEEAE,\n\t30011 - 11905: 0xBBAD,\n\t30012 - 11905: 0xAE6B,\n\t30013 - 11905: 0xAE6C,\n\t30014 - 11905: 0xE7DE,\n\t30015 - 11905: 0xAE6D,\n\t30016 - 11905: 0xEEAF,\n\t30017 - 11905: 0xAE6E,\n\t30018 - 11905: 0xAE6F,\n\t30019 - 11905: 0xAE70,\n\t30020 - 11905: 0xAE71,\n\t30021 - 11905: 0xB3A9,\n\t30022 - 11905: 0xAE72,\n\t30023 - 11905: 0xAE73,\n\t30024 - 11905: 0xEEB2,\n\t30025 - 11905: 0xAE74,\n\t30026 - 11905: 0xAE75,\n\t30027 - 11905: 0xEEB1,\n\t30028 - 11905: 0xBDE7,\n\t30029 - 11905: 0xAE76,\n\t30030 - 11905: 0xEEB0,\n\t30031 - 11905: 0xCEB7,\n\t30032 - 11905: 0xAE77,\n\t30033 - 11905: 0xAE78,\n\t30034 - 11905: 0xAE79,\n\t30035 - 11905: 0xAE7A,\n\t30036 - 11905: 0xC5CF,\n\t30037 - 11905: 0xAE7B,\n\t30038 - 11905: 0xAE7C,\n\t30039 - 11905: 0xAE7D,\n\t30040 - 11905: 0xAE7E,\n\t30041 - 11905: 0xC1F4,\n\t30042 - 11905: 0xDBCE,\n\t30043 - 11905: 0xEEB3,\n\t30044 - 11905: 0xD0F3,\n\t30045 - 11905: 0xAE80,\n\t30046 - 11905: 0xAE81,\n\t30047 - 11905: 0xAE82,\n\t30048 - 11905: 0xAE83,\n\t30049 - 11905: 0xAE84,\n\t30050 - 11905: 0xAE85,\n\t30051 - 11905: 0xAE86,\n\t30052 - 11905: 0xAE87,\n\t30053 - 11905: 0xC2D4,\n\t30054 - 11905: 0xC6E8,\n\t30055 - 11905: 0xAE88,\n\t30056 - 11905: 0xAE89,\n\t30057 - 11905: 0xAE8A,\n\t30058 - 11905: 0xB7AC,\n\t30059 - 11905: 0xAE8B,\n\t30060 - 11905: 0xAE8C,\n\t30061 - 11905: 0xAE8D,\n\t30062 - 11905: 0xAE8E,\n\t30063 - 11905: 0xAE8F,\n\t30064 - 11905: 0xAE90,\n\t30065 - 11905: 0xAE91,\n\t30066 - 11905: 0xEEB4,\n\t30067 - 11905: 0xAE92,\n\t30068 - 11905: 0xB3EB,\n\t30069 - 11905: 0xAE93,\n\t30070 - 11905: 0xAE94,\n\t30071 - 11905: 0xAE95,\n\t30072 - 11905: 0xBBFB,\n\t30073 - 11905: 0xEEB5,\n\t30074 - 11905: 0xAE96,\n\t30075 - 11905: 0xAE97,\n\t30076 - 11905: 0xAE98,\n\t30077 - 11905: 0xAE99,\n\t30078 - 11905: 0xAE9A,\n\t30079 - 11905: 0xE7DC,\n\t30080 - 11905: 0xAE9B,\n\t30081 - 11905: 0xAE9C,\n\t30082 - 11905: 0xAE9D,\n\t30083 - 11905: 0xEEB6,\n\t30084 - 11905: 0xAE9E,\n\t30085 - 11905: 0xAE9F,\n\t30086 - 11905: 0xBDAE,\n\t30087 - 11905: 0xAEA0,\n\t30088 - 11905: 0xAF40,\n\t30089 - 11905: 0xAF41,\n\t30090 - 11905: 0xAF42,\n\t30091 - 11905: 0xF1E2,\n\t30092 - 11905: 0xAF43,\n\t30093 - 11905: 0xAF44,\n\t30094 - 11905: 0xAF45,\n\t30095 - 11905: 0xCAE8,\n\t30096 - 11905: 0xAF46,\n\t30097 - 11905: 0xD2C9,\n\t30098 - 11905: 0xF0DA,\n\t30099 - 11905: 0xAF47,\n\t30100 - 11905: 0xF0DB,\n\t30101 - 11905: 0xAF48,\n\t30102 - 11905: 0xF0DC,\n\t30103 - 11905: 0xC1C6,\n\t30104 - 11905: 0xAF49,\n\t30105 - 11905: 0xB8ED,\n\t30106 - 11905: 0xBECE,\n\t30107 - 11905: 0xAF4A,\n\t30108 - 11905: 0xAF4B,\n\t30109 - 11905: 0xF0DE,\n\t30110 - 11905: 0xAF4C,\n\t30111 - 11905: 0xC5B1,\n\t30112 - 11905: 0xF0DD,\n\t30113 - 11905: 0xD1F1,\n\t30114 - 11905: 0xAF4D,\n\t30115 - 11905: 0xF0E0,\n\t30116 - 11905: 0xB0CC,\n\t30117 - 11905: 0xBDEA,\n\t30118 - 11905: 0xAF4E,\n\t30119 - 11905: 0xAF4F,\n\t30120 - 11905: 0xAF50,\n\t30121 - 11905: 0xAF51,\n\t30122 - 11905: 0xAF52,\n\t30123 - 11905: 0xD2DF,\n\t30124 - 11905: 0xF0DF,\n\t30125 - 11905: 0xAF53,\n\t30126 - 11905: 0xB4AF,\n\t30127 - 11905: 0xB7E8,\n\t30128 - 11905: 0xF0E6,\n\t30129 - 11905: 0xF0E5,\n\t30130 - 11905: 0xC6A3,\n\t30131 - 11905: 0xF0E1,\n\t30132 - 11905: 0xF0E2,\n\t30133 - 11905: 0xB4C3,\n\t30134 - 11905: 0xAF54,\n\t30135 - 11905: 0xAF55,\n\t30136 - 11905: 0xF0E3,\n\t30137 - 11905: 0xD5EE,\n\t30138 - 11905: 0xAF56,\n\t30139 - 11905: 0xAF57,\n\t30140 - 11905: 0xCCDB,\n\t30141 - 11905: 0xBED2,\n\t30142 - 11905: 0xBCB2,\n\t30143 - 11905: 0xAF58,\n\t30144 - 11905: 0xAF59,\n\t30145 - 11905: 0xAF5A,\n\t30146 - 11905: 0xF0E8,\n\t30147 - 11905: 0xF0E7,\n\t30148 - 11905: 0xF0E4,\n\t30149 - 11905: 0xB2A1,\n\t30150 - 11905: 0xAF5B,\n\t30151 - 11905: 0xD6A2,\n\t30152 - 11905: 0xD3B8,\n\t30153 - 11905: 0xBEB7,\n\t30154 - 11905: 0xC8AC,\n\t30155 - 11905: 0xAF5C,\n\t30156 - 11905: 0xAF5D,\n\t30157 - 11905: 0xF0EA,\n\t30158 - 11905: 0xAF5E,\n\t30159 - 11905: 0xAF5F,\n\t30160 - 11905: 0xAF60,\n\t30161 - 11905: 0xAF61,\n\t30162 - 11905: 0xD1F7,\n\t30163 - 11905: 0xAF62,\n\t30164 - 11905: 0xD6CC,\n\t30165 - 11905: 0xBADB,\n\t30166 - 11905: 0xF0E9,\n\t30167 - 11905: 0xAF63,\n\t30168 - 11905: 0xB6BB,\n\t30169 - 11905: 0xAF64,\n\t30170 - 11905: 0xAF65,\n\t30171 - 11905: 0xCDB4,\n\t30172 - 11905: 0xAF66,\n\t30173 - 11905: 0xAF67,\n\t30174 - 11905: 0xC6A6,\n\t30175 - 11905: 0xAF68,\n\t30176 - 11905: 0xAF69,\n\t30177 - 11905: 0xAF6A,\n\t30178 - 11905: 0xC1A1,\n\t30179 - 11905: 0xF0EB,\n\t30180 - 11905: 0xF0EE,\n\t30181 - 11905: 0xAF6B,\n\t30182 - 11905: 0xF0ED,\n\t30183 - 11905: 0xF0F0,\n\t30184 - 11905: 0xF0EC,\n\t30185 - 11905: 0xAF6C,\n\t30186 - 11905: 0xBBBE,\n\t30187 - 11905: 0xF0EF,\n\t30188 - 11905: 0xAF6D,\n\t30189 - 11905: 0xAF6E,\n\t30190 - 11905: 0xAF6F,\n\t30191 - 11905: 0xAF70,\n\t30192 - 11905: 0xCCB5,\n\t30193 - 11905: 0xF0F2,\n\t30194 - 11905: 0xAF71,\n\t30195 - 11905: 0xAF72,\n\t30196 - 11905: 0xB3D5,\n\t30197 - 11905: 0xAF73,\n\t30198 - 11905: 0xAF74,\n\t30199 - 11905: 0xAF75,\n\t30200 - 11905: 0xAF76,\n\t30201 - 11905: 0xB1D4,\n\t30202 - 11905: 0xAF77,\n\t30203 - 11905: 0xAF78,\n\t30204 - 11905: 0xF0F3,\n\t30205 - 11905: 0xAF79,\n\t30206 - 11905: 0xAF7A,\n\t30207 - 11905: 0xF0F4,\n\t30208 - 11905: 0xF0F6,\n\t30209 - 11905: 0xB4E1,\n\t30210 - 11905: 0xAF7B,\n\t30211 - 11905: 0xF0F1,\n\t30212 - 11905: 0xAF7C,\n\t30213 - 11905: 0xF0F7,\n\t30214 - 11905: 0xAF7D,\n\t30215 - 11905: 0xAF7E,\n\t30216 - 11905: 0xAF80,\n\t30217 - 11905: 0xAF81,\n\t30218 - 11905: 0xF0FA,\n\t30219 - 11905: 0xAF82,\n\t30220 - 11905: 0xF0F8,\n\t30221 - 11905: 0xAF83,\n\t30222 - 11905: 0xAF84,\n\t30223 - 11905: 0xAF85,\n\t30224 - 11905: 0xF0F5,\n\t30225 - 11905: 0xAF86,\n\t30226 - 11905: 0xAF87,\n\t30227 - 11905: 0xAF88,\n\t30228 - 11905: 0xAF89,\n\t30229 - 11905: 0xF0FD,\n\t30230 - 11905: 0xAF8A,\n\t30231 - 11905: 0xF0F9,\n\t30232 - 11905: 0xF0FC,\n\t30233 - 11905: 0xF0FE,\n\t30234 - 11905: 0xAF8B,\n\t30235 - 11905: 0xF1A1,\n\t30236 - 11905: 0xAF8C,\n\t30237 - 11905: 0xAF8D,\n\t30238 - 11905: 0xAF8E,\n\t30239 - 11905: 0xCEC1,\n\t30240 - 11905: 0xF1A4,\n\t30241 - 11905: 0xAF8F,\n\t30242 - 11905: 0xF1A3,\n\t30243 - 11905: 0xAF90,\n\t30244 - 11905: 0xC1F6,\n\t30245 - 11905: 0xF0FB,\n\t30246 - 11905: 0xCADD,\n\t30247 - 11905: 0xAF91,\n\t30248 - 11905: 0xAF92,\n\t30249 - 11905: 0xB4F1,\n\t30250 - 11905: 0xB1F1,\n\t30251 - 11905: 0xCCB1,\n\t30252 - 11905: 0xAF93,\n\t30253 - 11905: 0xF1A6,\n\t30254 - 11905: 0xAF94,\n\t30255 - 11905: 0xAF95,\n\t30256 - 11905: 0xF1A7,\n\t30257 - 11905: 0xAF96,\n\t30258 - 11905: 0xAF97,\n\t30259 - 11905: 0xF1AC,\n\t30260 - 11905: 0xD5CE,\n\t30261 - 11905: 0xF1A9,\n\t30262 - 11905: 0xAF98,\n\t30263 - 11905: 0xAF99,\n\t30264 - 11905: 0xC8B3,\n\t30265 - 11905: 0xAF9A,\n\t30266 - 11905: 0xAF9B,\n\t30267 - 11905: 0xAF9C,\n\t30268 - 11905: 0xF1A2,\n\t30269 - 11905: 0xAF9D,\n\t30270 - 11905: 0xF1AB,\n\t30271 - 11905: 0xF1A8,\n\t30272 - 11905: 0xF1A5,\n\t30273 - 11905: 0xAF9E,\n\t30274 - 11905: 0xAF9F,\n\t30275 - 11905: 0xF1AA,\n\t30276 - 11905: 0xAFA0,\n\t30277 - 11905: 0xB040,\n\t30278 - 11905: 0xB041,\n\t30279 - 11905: 0xB042,\n\t30280 - 11905: 0xB043,\n\t30281 - 11905: 0xB044,\n\t30282 - 11905: 0xB045,\n\t30283 - 11905: 0xB046,\n\t30284 - 11905: 0xB0A9,\n\t30285 - 11905: 0xF1AD,\n\t30286 - 11905: 0xB047,\n\t30287 - 11905: 0xB048,\n\t30288 - 11905: 0xB049,\n\t30289 - 11905: 0xB04A,\n\t30290 - 11905: 0xB04B,\n\t30291 - 11905: 0xB04C,\n\t30292 - 11905: 0xF1AF,\n\t30293 - 11905: 0xB04D,\n\t30294 - 11905: 0xF1B1,\n\t30295 - 11905: 0xB04E,\n\t30296 - 11905: 0xB04F,\n\t30297 - 11905: 0xB050,\n\t30298 - 11905: 0xB051,\n\t30299 - 11905: 0xB052,\n\t30300 - 11905: 0xF1B0,\n\t30301 - 11905: 0xB053,\n\t30302 - 11905: 0xF1AE,\n\t30303 - 11905: 0xB054,\n\t30304 - 11905: 0xB055,\n\t30305 - 11905: 0xB056,\n\t30306 - 11905: 0xB057,\n\t30307 - 11905: 0xD1A2,\n\t30308 - 11905: 0xB058,\n\t30309 - 11905: 0xB059,\n\t30310 - 11905: 0xB05A,\n\t30311 - 11905: 0xB05B,\n\t30312 - 11905: 0xB05C,\n\t30313 - 11905: 0xB05D,\n\t30314 - 11905: 0xB05E,\n\t30315 - 11905: 0xF1B2,\n\t30316 - 11905: 0xB05F,\n\t30317 - 11905: 0xB060,\n\t30318 - 11905: 0xB061,\n\t30319 - 11905: 0xF1B3,\n\t30320 - 11905: 0xB062,\n\t30321 - 11905: 0xB063,\n\t30322 - 11905: 0xB064,\n\t30323 - 11905: 0xB065,\n\t30324 - 11905: 0xB066,\n\t30325 - 11905: 0xB067,\n\t30326 - 11905: 0xB068,\n\t30327 - 11905: 0xB069,\n\t30328 - 11905: 0xB9EF,\n\t30329 - 11905: 0xB06A,\n\t30330 - 11905: 0xB06B,\n\t30331 - 11905: 0xB5C7,\n\t30332 - 11905: 0xB06C,\n\t30333 - 11905: 0xB0D7,\n\t30334 - 11905: 0xB0D9,\n\t30335 - 11905: 0xB06D,\n\t30336 - 11905: 0xB06E,\n\t30337 - 11905: 0xB06F,\n\t30338 - 11905: 0xD4ED,\n\t30339 - 11905: 0xB070,\n\t30340 - 11905: 0xB5C4,\n\t30341 - 11905: 0xB071,\n\t30342 - 11905: 0xBDD4,\n\t30343 - 11905: 0xBBCA,\n\t30344 - 11905: 0xF0A7,\n\t30345 - 11905: 0xB072,\n\t30346 - 11905: 0xB073,\n\t30347 - 11905: 0xB8DE,\n\t30348 - 11905: 0xB074,\n\t30349 - 11905: 0xB075,\n\t30350 - 11905: 0xF0A8,\n\t30351 - 11905: 0xB076,\n\t30352 - 11905: 0xB077,\n\t30353 - 11905: 0xB0A8,\n\t30354 - 11905: 0xB078,\n\t30355 - 11905: 0xF0A9,\n\t30356 - 11905: 0xB079,\n\t30357 - 11905: 0xB07A,\n\t30358 - 11905: 0xCDEE,\n\t30359 - 11905: 0xB07B,\n\t30360 - 11905: 0xB07C,\n\t30361 - 11905: 0xF0AA,\n\t30362 - 11905: 0xB07D,\n\t30363 - 11905: 0xB07E,\n\t30364 - 11905: 0xB080,\n\t30365 - 11905: 0xB081,\n\t30366 - 11905: 0xB082,\n\t30367 - 11905: 0xB083,\n\t30368 - 11905: 0xB084,\n\t30369 - 11905: 0xB085,\n\t30370 - 11905: 0xB086,\n\t30371 - 11905: 0xB087,\n\t30372 - 11905: 0xF0AB,\n\t30373 - 11905: 0xB088,\n\t30374 - 11905: 0xB089,\n\t30375 - 11905: 0xB08A,\n\t30376 - 11905: 0xB08B,\n\t30377 - 11905: 0xB08C,\n\t30378 - 11905: 0xB08D,\n\t30379 - 11905: 0xB08E,\n\t30380 - 11905: 0xB08F,\n\t30381 - 11905: 0xB090,\n\t30382 - 11905: 0xC6A4,\n\t30383 - 11905: 0xB091,\n\t30384 - 11905: 0xB092,\n\t30385 - 11905: 0xD6E5,\n\t30386 - 11905: 0xF1E4,\n\t30387 - 11905: 0xB093,\n\t30388 - 11905: 0xF1E5,\n\t30389 - 11905: 0xB094,\n\t30390 - 11905: 0xB095,\n\t30391 - 11905: 0xB096,\n\t30392 - 11905: 0xB097,\n\t30393 - 11905: 0xB098,\n\t30394 - 11905: 0xB099,\n\t30395 - 11905: 0xB09A,\n\t30396 - 11905: 0xB09B,\n\t30397 - 11905: 0xB09C,\n\t30398 - 11905: 0xB09D,\n\t30399 - 11905: 0xC3F3,\n\t30400 - 11905: 0xB09E,\n\t30401 - 11905: 0xB09F,\n\t30402 - 11905: 0xD3DB,\n\t30403 - 11905: 0xB0A0,\n\t30404 - 11905: 0xB140,\n\t30405 - 11905: 0xD6D1,\n\t30406 - 11905: 0xC5E8,\n\t30407 - 11905: 0xB141,\n\t30408 - 11905: 0xD3AF,\n\t30409 - 11905: 0xB142,\n\t30410 - 11905: 0xD2E6,\n\t30411 - 11905: 0xB143,\n\t30412 - 11905: 0xB144,\n\t30413 - 11905: 0xEEC1,\n\t30414 - 11905: 0xB0BB,\n\t30415 - 11905: 0xD5B5,\n\t30416 - 11905: 0xD1CE,\n\t30417 - 11905: 0xBCE0,\n\t30418 - 11905: 0xBAD0,\n\t30419 - 11905: 0xB145,\n\t30420 - 11905: 0xBFF8,\n\t30421 - 11905: 0xB146,\n\t30422 - 11905: 0xB8C7,\n\t30423 - 11905: 0xB5C1,\n\t30424 - 11905: 0xC5CC,\n\t30425 - 11905: 0xB147,\n\t30426 - 11905: 0xB148,\n\t30427 - 11905: 0xCAA2,\n\t30428 - 11905: 0xB149,\n\t30429 - 11905: 0xB14A,\n\t30430 - 11905: 0xB14B,\n\t30431 - 11905: 0xC3CB,\n\t30432 - 11905: 0xB14C,\n\t30433 - 11905: 0xB14D,\n\t30434 - 11905: 0xB14E,\n\t30435 - 11905: 0xB14F,\n\t30436 - 11905: 0xB150,\n\t30437 - 11905: 0xEEC2,\n\t30438 - 11905: 0xB151,\n\t30439 - 11905: 0xB152,\n\t30440 - 11905: 0xB153,\n\t30441 - 11905: 0xB154,\n\t30442 - 11905: 0xB155,\n\t30443 - 11905: 0xB156,\n\t30444 - 11905: 0xB157,\n\t30445 - 11905: 0xB158,\n\t30446 - 11905: 0xC4BF,\n\t30447 - 11905: 0xB6A2,\n\t30448 - 11905: 0xB159,\n\t30449 - 11905: 0xEDEC,\n\t30450 - 11905: 0xC3A4,\n\t30451 - 11905: 0xB15A,\n\t30452 - 11905: 0xD6B1,\n\t30453 - 11905: 0xB15B,\n\t30454 - 11905: 0xB15C,\n\t30455 - 11905: 0xB15D,\n\t30456 - 11905: 0xCFE0,\n\t30457 - 11905: 0xEDEF,\n\t30458 - 11905: 0xB15E,\n\t30459 - 11905: 0xB15F,\n\t30460 - 11905: 0xC5CE,\n\t30461 - 11905: 0xB160,\n\t30462 - 11905: 0xB6DC,\n\t30463 - 11905: 0xB161,\n\t30464 - 11905: 0xB162,\n\t30465 - 11905: 0xCAA1,\n\t30466 - 11905: 0xB163,\n\t30467 - 11905: 0xB164,\n\t30468 - 11905: 0xEDED,\n\t30469 - 11905: 0xB165,\n\t30470 - 11905: 0xB166,\n\t30471 - 11905: 0xEDF0,\n\t30472 - 11905: 0xEDF1,\n\t30473 - 11905: 0xC3BC,\n\t30474 - 11905: 0xB167,\n\t30475 - 11905: 0xBFB4,\n\t30476 - 11905: 0xB168,\n\t30477 - 11905: 0xEDEE,\n\t30478 - 11905: 0xB169,\n\t30479 - 11905: 0xB16A,\n\t30480 - 11905: 0xB16B,\n\t30481 - 11905: 0xB16C,\n\t30482 - 11905: 0xB16D,\n\t30483 - 11905: 0xB16E,\n\t30484 - 11905: 0xB16F,\n\t30485 - 11905: 0xB170,\n\t30486 - 11905: 0xB171,\n\t30487 - 11905: 0xB172,\n\t30488 - 11905: 0xB173,\n\t30489 - 11905: 0xEDF4,\n\t30490 - 11905: 0xEDF2,\n\t30491 - 11905: 0xB174,\n\t30492 - 11905: 0xB175,\n\t30493 - 11905: 0xB176,\n\t30494 - 11905: 0xB177,\n\t30495 - 11905: 0xD5E6,\n\t30496 - 11905: 0xC3DF,\n\t30497 - 11905: 0xB178,\n\t30498 - 11905: 0xEDF3,\n\t30499 - 11905: 0xB179,\n\t30500 - 11905: 0xB17A,\n\t30501 - 11905: 0xB17B,\n\t30502 - 11905: 0xEDF6,\n\t30503 - 11905: 0xB17C,\n\t30504 - 11905: 0xD5A3,\n\t30505 - 11905: 0xD1A3,\n\t30506 - 11905: 0xB17D,\n\t30507 - 11905: 0xB17E,\n\t30508 - 11905: 0xB180,\n\t30509 - 11905: 0xEDF5,\n\t30510 - 11905: 0xB181,\n\t30511 - 11905: 0xC3D0,\n\t30512 - 11905: 0xB182,\n\t30513 - 11905: 0xB183,\n\t30514 - 11905: 0xB184,\n\t30515 - 11905: 0xB185,\n\t30516 - 11905: 0xB186,\n\t30517 - 11905: 0xEDF7,\n\t30518 - 11905: 0xBFF4,\n\t30519 - 11905: 0xBEEC,\n\t30520 - 11905: 0xEDF8,\n\t30521 - 11905: 0xB187,\n\t30522 - 11905: 0xCCF7,\n\t30523 - 11905: 0xB188,\n\t30524 - 11905: 0xD1DB,\n\t30525 - 11905: 0xB189,\n\t30526 - 11905: 0xB18A,\n\t30527 - 11905: 0xB18B,\n\t30528 - 11905: 0xD7C5,\n\t30529 - 11905: 0xD5F6,\n\t30530 - 11905: 0xB18C,\n\t30531 - 11905: 0xEDFC,\n\t30532 - 11905: 0xB18D,\n\t30533 - 11905: 0xB18E,\n\t30534 - 11905: 0xB18F,\n\t30535 - 11905: 0xEDFB,\n\t30536 - 11905: 0xB190,\n\t30537 - 11905: 0xB191,\n\t30538 - 11905: 0xB192,\n\t30539 - 11905: 0xB193,\n\t30540 - 11905: 0xB194,\n\t30541 - 11905: 0xB195,\n\t30542 - 11905: 0xB196,\n\t30543 - 11905: 0xB197,\n\t30544 - 11905: 0xEDF9,\n\t30545 - 11905: 0xEDFA,\n\t30546 - 11905: 0xB198,\n\t30547 - 11905: 0xB199,\n\t30548 - 11905: 0xB19A,\n\t30549 - 11905: 0xB19B,\n\t30550 - 11905: 0xB19C,\n\t30551 - 11905: 0xB19D,\n\t30552 - 11905: 0xB19E,\n\t30553 - 11905: 0xB19F,\n\t30554 - 11905: 0xEDFD,\n\t30555 - 11905: 0xBEA6,\n\t30556 - 11905: 0xB1A0,\n\t30557 - 11905: 0xB240,\n\t30558 - 11905: 0xB241,\n\t30559 - 11905: 0xB242,\n\t30560 - 11905: 0xB243,\n\t30561 - 11905: 0xCBAF,\n\t30562 - 11905: 0xEEA1,\n\t30563 - 11905: 0xB6BD,\n\t30564 - 11905: 0xB244,\n\t30565 - 11905: 0xEEA2,\n\t30566 - 11905: 0xC4C0,\n\t30567 - 11905: 0xB245,\n\t30568 - 11905: 0xEDFE,\n\t30569 - 11905: 0xB246,\n\t30570 - 11905: 0xB247,\n\t30571 - 11905: 0xBDDE,\n\t30572 - 11905: 0xB2C7,\n\t30573 - 11905: 0xB248,\n\t30574 - 11905: 0xB249,\n\t30575 - 11905: 0xB24A,\n\t30576 - 11905: 0xB24B,\n\t30577 - 11905: 0xB24C,\n\t30578 - 11905: 0xB24D,\n\t30579 - 11905: 0xB24E,\n\t30580 - 11905: 0xB24F,\n\t30581 - 11905: 0xB250,\n\t30582 - 11905: 0xB251,\n\t30583 - 11905: 0xB252,\n\t30584 - 11905: 0xB253,\n\t30585 - 11905: 0xB6C3,\n\t30586 - 11905: 0xB254,\n\t30587 - 11905: 0xB255,\n\t30588 - 11905: 0xB256,\n\t30589 - 11905: 0xEEA5,\n\t30590 - 11905: 0xD8BA,\n\t30591 - 11905: 0xEEA3,\n\t30592 - 11905: 0xEEA6,\n\t30593 - 11905: 0xB257,\n\t30594 - 11905: 0xB258,\n\t30595 - 11905: 0xB259,\n\t30596 - 11905: 0xC3E9,\n\t30597 - 11905: 0xB3F2,\n\t30598 - 11905: 0xB25A,\n\t30599 - 11905: 0xB25B,\n\t30600 - 11905: 0xB25C,\n\t30601 - 11905: 0xB25D,\n\t30602 - 11905: 0xB25E,\n\t30603 - 11905: 0xB25F,\n\t30604 - 11905: 0xEEA7,\n\t30605 - 11905: 0xEEA4,\n\t30606 - 11905: 0xCFB9,\n\t30607 - 11905: 0xB260,\n\t30608 - 11905: 0xB261,\n\t30609 - 11905: 0xEEA8,\n\t30610 - 11905: 0xC2F7,\n\t30611 - 11905: 0xB262,\n\t30612 - 11905: 0xB263,\n\t30613 - 11905: 0xB264,\n\t30614 - 11905: 0xB265,\n\t30615 - 11905: 0xB266,\n\t30616 - 11905: 0xB267,\n\t30617 - 11905: 0xB268,\n\t30618 - 11905: 0xB269,\n\t30619 - 11905: 0xB26A,\n\t30620 - 11905: 0xB26B,\n\t30621 - 11905: 0xB26C,\n\t30622 - 11905: 0xB26D,\n\t30623 - 11905: 0xEEA9,\n\t30624 - 11905: 0xEEAA,\n\t30625 - 11905: 0xB26E,\n\t30626 - 11905: 0xDEAB,\n\t30627 - 11905: 0xB26F,\n\t30628 - 11905: 0xB270,\n\t30629 - 11905: 0xC6B3,\n\t30630 - 11905: 0xB271,\n\t30631 - 11905: 0xC7C6,\n\t30632 - 11905: 0xB272,\n\t30633 - 11905: 0xD6F5,\n\t30634 - 11905: 0xB5C9,\n\t30635 - 11905: 0xB273,\n\t30636 - 11905: 0xCBB2,\n\t30637 - 11905: 0xB274,\n\t30638 - 11905: 0xB275,\n\t30639 - 11905: 0xB276,\n\t30640 - 11905: 0xEEAB,\n\t30641 - 11905: 0xB277,\n\t30642 - 11905: 0xB278,\n\t30643 - 11905: 0xCDAB,\n\t30644 - 11905: 0xB279,\n\t30645 - 11905: 0xEEAC,\n\t30646 - 11905: 0xB27A,\n\t30647 - 11905: 0xB27B,\n\t30648 - 11905: 0xB27C,\n\t30649 - 11905: 0xB27D,\n\t30650 - 11905: 0xB27E,\n\t30651 - 11905: 0xD5B0,\n\t30652 - 11905: 0xB280,\n\t30653 - 11905: 0xEEAD,\n\t30654 - 11905: 0xB281,\n\t30655 - 11905: 0xF6C4,\n\t30656 - 11905: 0xB282,\n\t30657 - 11905: 0xB283,\n\t30658 - 11905: 0xB284,\n\t30659 - 11905: 0xB285,\n\t30660 - 11905: 0xB286,\n\t30661 - 11905: 0xB287,\n\t30662 - 11905: 0xB288,\n\t30663 - 11905: 0xB289,\n\t30664 - 11905: 0xB28A,\n\t30665 - 11905: 0xB28B,\n\t30666 - 11905: 0xB28C,\n\t30667 - 11905: 0xB28D,\n\t30668 - 11905: 0xB28E,\n\t30669 - 11905: 0xDBC7,\n\t30670 - 11905: 0xB28F,\n\t30671 - 11905: 0xB290,\n\t30672 - 11905: 0xB291,\n\t30673 - 11905: 0xB292,\n\t30674 - 11905: 0xB293,\n\t30675 - 11905: 0xB294,\n\t30676 - 11905: 0xB295,\n\t30677 - 11905: 0xB296,\n\t30678 - 11905: 0xB297,\n\t30679 - 11905: 0xB4A3,\n\t30680 - 11905: 0xB298,\n\t30681 - 11905: 0xB299,\n\t30682 - 11905: 0xB29A,\n\t30683 - 11905: 0xC3AC,\n\t30684 - 11905: 0xF1E6,\n\t30685 - 11905: 0xB29B,\n\t30686 - 11905: 0xB29C,\n\t30687 - 11905: 0xB29D,\n\t30688 - 11905: 0xB29E,\n\t30689 - 11905: 0xB29F,\n\t30690 - 11905: 0xCAB8,\n\t30691 - 11905: 0xD2D3,\n\t30692 - 11905: 0xB2A0,\n\t30693 - 11905: 0xD6AA,\n\t30694 - 11905: 0xB340,\n\t30695 - 11905: 0xEFF2,\n\t30696 - 11905: 0xB341,\n\t30697 - 11905: 0xBED8,\n\t30698 - 11905: 0xB342,\n\t30699 - 11905: 0xBDC3,\n\t30700 - 11905: 0xEFF3,\n\t30701 - 11905: 0xB6CC,\n\t30702 - 11905: 0xB0AB,\n\t30703 - 11905: 0xB343,\n\t30704 - 11905: 0xB344,\n\t30705 - 11905: 0xB345,\n\t30706 - 11905: 0xB346,\n\t30707 - 11905: 0xCAAF,\n\t30708 - 11905: 0xB347,\n\t30709 - 11905: 0xB348,\n\t30710 - 11905: 0xEDB6,\n\t30711 - 11905: 0xB349,\n\t30712 - 11905: 0xEDB7,\n\t30713 - 11905: 0xB34A,\n\t30714 - 11905: 0xB34B,\n\t30715 - 11905: 0xB34C,\n\t30716 - 11905: 0xB34D,\n\t30717 - 11905: 0xCEF9,\n\t30718 - 11905: 0xB7AF,\n\t30719 - 11905: 0xBFF3,\n\t30720 - 11905: 0xEDB8,\n\t30721 - 11905: 0xC2EB,\n\t30722 - 11905: 0xC9B0,\n\t30723 - 11905: 0xB34E,\n\t30724 - 11905: 0xB34F,\n\t30725 - 11905: 0xB350,\n\t30726 - 11905: 0xB351,\n\t30727 - 11905: 0xB352,\n\t30728 - 11905: 0xB353,\n\t30729 - 11905: 0xEDB9,\n\t30730 - 11905: 0xB354,\n\t30731 - 11905: 0xB355,\n\t30732 - 11905: 0xC6F6,\n\t30733 - 11905: 0xBFB3,\n\t30734 - 11905: 0xB356,\n\t30735 - 11905: 0xB357,\n\t30736 - 11905: 0xB358,\n\t30737 - 11905: 0xEDBC,\n\t30738 - 11905: 0xC5F8,\n\t30739 - 11905: 0xB359,\n\t30740 - 11905: 0xD1D0,\n\t30741 - 11905: 0xB35A,\n\t30742 - 11905: 0xD7A9,\n\t30743 - 11905: 0xEDBA,\n\t30744 - 11905: 0xEDBB,\n\t30745 - 11905: 0xB35B,\n\t30746 - 11905: 0xD1E2,\n\t30747 - 11905: 0xB35C,\n\t30748 - 11905: 0xEDBF,\n\t30749 - 11905: 0xEDC0,\n\t30750 - 11905: 0xB35D,\n\t30751 - 11905: 0xEDC4,\n\t30752 - 11905: 0xB35E,\n\t30753 - 11905: 0xB35F,\n\t30754 - 11905: 0xB360,\n\t30755 - 11905: 0xEDC8,\n\t30756 - 11905: 0xB361,\n\t30757 - 11905: 0xEDC6,\n\t30758 - 11905: 0xEDCE,\n\t30759 - 11905: 0xD5E8,\n\t30760 - 11905: 0xB362,\n\t30761 - 11905: 0xEDC9,\n\t30762 - 11905: 0xB363,\n\t30763 - 11905: 0xB364,\n\t30764 - 11905: 0xEDC7,\n\t30765 - 11905: 0xEDBE,\n\t30766 - 11905: 0xB365,\n\t30767 - 11905: 0xB366,\n\t30768 - 11905: 0xC5E9,\n\t30769 - 11905: 0xB367,\n\t30770 - 11905: 0xB368,\n\t30771 - 11905: 0xB369,\n\t30772 - 11905: 0xC6C6,\n\t30773 - 11905: 0xB36A,\n\t30774 - 11905: 0xB36B,\n\t30775 - 11905: 0xC9E9,\n\t30776 - 11905: 0xD4D2,\n\t30777 - 11905: 0xEDC1,\n\t30778 - 11905: 0xEDC2,\n\t30779 - 11905: 0xEDC3,\n\t30780 - 11905: 0xEDC5,\n\t30781 - 11905: 0xB36C,\n\t30782 - 11905: 0xC0F9,\n\t30783 - 11905: 0xB36D,\n\t30784 - 11905: 0xB4A1,\n\t30785 - 11905: 0xB36E,\n\t30786 - 11905: 0xB36F,\n\t30787 - 11905: 0xB370,\n\t30788 - 11905: 0xB371,\n\t30789 - 11905: 0xB9E8,\n\t30790 - 11905: 0xB372,\n\t30791 - 11905: 0xEDD0,\n\t30792 - 11905: 0xB373,\n\t30793 - 11905: 0xB374,\n\t30794 - 11905: 0xB375,\n\t30795 - 11905: 0xB376,\n\t30796 - 11905: 0xEDD1,\n\t30797 - 11905: 0xB377,\n\t30798 - 11905: 0xEDCA,\n\t30799 - 11905: 0xB378,\n\t30800 - 11905: 0xEDCF,\n\t30801 - 11905: 0xB379,\n\t30802 - 11905: 0xCEF8,\n\t30803 - 11905: 0xB37A,\n\t30804 - 11905: 0xB37B,\n\t30805 - 11905: 0xCBB6,\n\t30806 - 11905: 0xEDCC,\n\t30807 - 11905: 0xEDCD,\n\t30808 - 11905: 0xB37C,\n\t30809 - 11905: 0xB37D,\n\t30810 - 11905: 0xB37E,\n\t30811 - 11905: 0xB380,\n\t30812 - 11905: 0xB381,\n\t30813 - 11905: 0xCFF5,\n\t30814 - 11905: 0xB382,\n\t30815 - 11905: 0xB383,\n\t30816 - 11905: 0xB384,\n\t30817 - 11905: 0xB385,\n\t30818 - 11905: 0xB386,\n\t30819 - 11905: 0xB387,\n\t30820 - 11905: 0xB388,\n\t30821 - 11905: 0xB389,\n\t30822 - 11905: 0xB38A,\n\t30823 - 11905: 0xB38B,\n\t30824 - 11905: 0xB38C,\n\t30825 - 11905: 0xB38D,\n\t30826 - 11905: 0xEDD2,\n\t30827 - 11905: 0xC1F2,\n\t30828 - 11905: 0xD3B2,\n\t30829 - 11905: 0xEDCB,\n\t30830 - 11905: 0xC8B7,\n\t30831 - 11905: 0xB38E,\n\t30832 - 11905: 0xB38F,\n\t30833 - 11905: 0xB390,\n\t30834 - 11905: 0xB391,\n\t30835 - 11905: 0xB392,\n\t30836 - 11905: 0xB393,\n\t30837 - 11905: 0xB394,\n\t30838 - 11905: 0xB395,\n\t30839 - 11905: 0xBCEF,\n\t30840 - 11905: 0xB396,\n\t30841 - 11905: 0xB397,\n\t30842 - 11905: 0xB398,\n\t30843 - 11905: 0xB399,\n\t30844 - 11905: 0xC5F0,\n\t30845 - 11905: 0xB39A,\n\t30846 - 11905: 0xB39B,\n\t30847 - 11905: 0xB39C,\n\t30848 - 11905: 0xB39D,\n\t30849 - 11905: 0xB39E,\n\t30850 - 11905: 0xB39F,\n\t30851 - 11905: 0xB3A0,\n\t30852 - 11905: 0xB440,\n\t30853 - 11905: 0xB441,\n\t30854 - 11905: 0xB442,\n\t30855 - 11905: 0xEDD6,\n\t30856 - 11905: 0xB443,\n\t30857 - 11905: 0xB5EF,\n\t30858 - 11905: 0xB444,\n\t30859 - 11905: 0xB445,\n\t30860 - 11905: 0xC2B5,\n\t30861 - 11905: 0xB0AD,\n\t30862 - 11905: 0xCBE9,\n\t30863 - 11905: 0xB446,\n\t30864 - 11905: 0xB447,\n\t30865 - 11905: 0xB1AE,\n\t30866 - 11905: 0xB448,\n\t30867 - 11905: 0xEDD4,\n\t30868 - 11905: 0xB449,\n\t30869 - 11905: 0xB44A,\n\t30870 - 11905: 0xB44B,\n\t30871 - 11905: 0xCDEB,\n\t30872 - 11905: 0xB5E2,\n\t30873 - 11905: 0xB44C,\n\t30874 - 11905: 0xEDD5,\n\t30875 - 11905: 0xEDD3,\n\t30876 - 11905: 0xEDD7,\n\t30877 - 11905: 0xB44D,\n\t30878 - 11905: 0xB44E,\n\t30879 - 11905: 0xB5FA,\n\t30880 - 11905: 0xB44F,\n\t30881 - 11905: 0xEDD8,\n\t30882 - 11905: 0xB450,\n\t30883 - 11905: 0xEDD9,\n\t30884 - 11905: 0xB451,\n\t30885 - 11905: 0xEDDC,\n\t30886 - 11905: 0xB452,\n\t30887 - 11905: 0xB1CC,\n\t30888 - 11905: 0xB453,\n\t30889 - 11905: 0xB454,\n\t30890 - 11905: 0xB455,\n\t30891 - 11905: 0xB456,\n\t30892 - 11905: 0xB457,\n\t30893 - 11905: 0xB458,\n\t30894 - 11905: 0xB459,\n\t30895 - 11905: 0xB45A,\n\t30896 - 11905: 0xC5F6,\n\t30897 - 11905: 0xBCEE,\n\t30898 - 11905: 0xEDDA,\n\t30899 - 11905: 0xCCBC,\n\t30900 - 11905: 0xB2EA,\n\t30901 - 11905: 0xB45B,\n\t30902 - 11905: 0xB45C,\n\t30903 - 11905: 0xB45D,\n\t30904 - 11905: 0xB45E,\n\t30905 - 11905: 0xEDDB,\n\t30906 - 11905: 0xB45F,\n\t30907 - 11905: 0xB460,\n\t30908 - 11905: 0xB461,\n\t30909 - 11905: 0xB462,\n\t30910 - 11905: 0xC4EB,\n\t30911 - 11905: 0xB463,\n\t30912 - 11905: 0xB464,\n\t30913 - 11905: 0xB4C5,\n\t30914 - 11905: 0xB465,\n\t30915 - 11905: 0xB466,\n\t30916 - 11905: 0xB467,\n\t30917 - 11905: 0xB0F5,\n\t30918 - 11905: 0xB468,\n\t30919 - 11905: 0xB469,\n\t30920 - 11905: 0xB46A,\n\t30921 - 11905: 0xEDDF,\n\t30922 - 11905: 0xC0DA,\n\t30923 - 11905: 0xB4E8,\n\t30924 - 11905: 0xB46B,\n\t30925 - 11905: 0xB46C,\n\t30926 - 11905: 0xB46D,\n\t30927 - 11905: 0xB46E,\n\t30928 - 11905: 0xC5CD,\n\t30929 - 11905: 0xB46F,\n\t30930 - 11905: 0xB470,\n\t30931 - 11905: 0xB471,\n\t30932 - 11905: 0xEDDD,\n\t30933 - 11905: 0xBFC4,\n\t30934 - 11905: 0xB472,\n\t30935 - 11905: 0xB473,\n\t30936 - 11905: 0xB474,\n\t30937 - 11905: 0xEDDE,\n\t30938 - 11905: 0xB475,\n\t30939 - 11905: 0xB476,\n\t30940 - 11905: 0xB477,\n\t30941 - 11905: 0xB478,\n\t30942 - 11905: 0xB479,\n\t30943 - 11905: 0xB47A,\n\t30944 - 11905: 0xB47B,\n\t30945 - 11905: 0xB47C,\n\t30946 - 11905: 0xB47D,\n\t30947 - 11905: 0xB47E,\n\t30948 - 11905: 0xB480,\n\t30949 - 11905: 0xB481,\n\t30950 - 11905: 0xB482,\n\t30951 - 11905: 0xB483,\n\t30952 - 11905: 0xC4A5,\n\t30953 - 11905: 0xB484,\n\t30954 - 11905: 0xB485,\n\t30955 - 11905: 0xB486,\n\t30956 - 11905: 0xEDE0,\n\t30957 - 11905: 0xB487,\n\t30958 - 11905: 0xB488,\n\t30959 - 11905: 0xB489,\n\t30960 - 11905: 0xB48A,\n\t30961 - 11905: 0xB48B,\n\t30962 - 11905: 0xEDE1,\n\t30963 - 11905: 0xB48C,\n\t30964 - 11905: 0xEDE3,\n\t30965 - 11905: 0xB48D,\n\t30966 - 11905: 0xB48E,\n\t30967 - 11905: 0xC1D7,\n\t30968 - 11905: 0xB48F,\n\t30969 - 11905: 0xB490,\n\t30970 - 11905: 0xBBC7,\n\t30971 - 11905: 0xB491,\n\t30972 - 11905: 0xB492,\n\t30973 - 11905: 0xB493,\n\t30974 - 11905: 0xB494,\n\t30975 - 11905: 0xB495,\n\t30976 - 11905: 0xB496,\n\t30977 - 11905: 0xBDB8,\n\t30978 - 11905: 0xB497,\n\t30979 - 11905: 0xB498,\n\t30980 - 11905: 0xB499,\n\t30981 - 11905: 0xEDE2,\n\t30982 - 11905: 0xB49A,\n\t30983 - 11905: 0xB49B,\n\t30984 - 11905: 0xB49C,\n\t30985 - 11905: 0xB49D,\n\t30986 - 11905: 0xB49E,\n\t30987 - 11905: 0xB49F,\n\t30988 - 11905: 0xB4A0,\n\t30989 - 11905: 0xB540,\n\t30990 - 11905: 0xB541,\n\t30991 - 11905: 0xB542,\n\t30992 - 11905: 0xB543,\n\t30993 - 11905: 0xB544,\n\t30994 - 11905: 0xB545,\n\t30995 - 11905: 0xEDE4,\n\t30996 - 11905: 0xB546,\n\t30997 - 11905: 0xB547,\n\t30998 - 11905: 0xB548,\n\t30999 - 11905: 0xB549,\n\t31000 - 11905: 0xB54A,\n\t31001 - 11905: 0xB54B,\n\t31002 - 11905: 0xB54C,\n\t31003 - 11905: 0xB54D,\n\t31004 - 11905: 0xB54E,\n\t31005 - 11905: 0xB54F,\n\t31006 - 11905: 0xEDE6,\n\t31007 - 11905: 0xB550,\n\t31008 - 11905: 0xB551,\n\t31009 - 11905: 0xB552,\n\t31010 - 11905: 0xB553,\n\t31011 - 11905: 0xB554,\n\t31012 - 11905: 0xEDE5,\n\t31013 - 11905: 0xB555,\n\t31014 - 11905: 0xB556,\n\t31015 - 11905: 0xB557,\n\t31016 - 11905: 0xB558,\n\t31017 - 11905: 0xB559,\n\t31018 - 11905: 0xB55A,\n\t31019 - 11905: 0xB55B,\n\t31020 - 11905: 0xB55C,\n\t31021 - 11905: 0xB55D,\n\t31022 - 11905: 0xB55E,\n\t31023 - 11905: 0xB55F,\n\t31024 - 11905: 0xB560,\n\t31025 - 11905: 0xB561,\n\t31026 - 11905: 0xB562,\n\t31027 - 11905: 0xB563,\n\t31028 - 11905: 0xEDE7,\n\t31029 - 11905: 0xB564,\n\t31030 - 11905: 0xB565,\n\t31031 - 11905: 0xB566,\n\t31032 - 11905: 0xB567,\n\t31033 - 11905: 0xB568,\n\t31034 - 11905: 0xCABE,\n\t31035 - 11905: 0xECEA,\n\t31036 - 11905: 0xC0F1,\n\t31037 - 11905: 0xB569,\n\t31038 - 11905: 0xC9E7,\n\t31039 - 11905: 0xB56A,\n\t31040 - 11905: 0xECEB,\n\t31041 - 11905: 0xC6EE,\n\t31042 - 11905: 0xB56B,\n\t31043 - 11905: 0xB56C,\n\t31044 - 11905: 0xB56D,\n\t31045 - 11905: 0xB56E,\n\t31046 - 11905: 0xECEC,\n\t31047 - 11905: 0xB56F,\n\t31048 - 11905: 0xC6ED,\n\t31049 - 11905: 0xECED,\n\t31050 - 11905: 0xB570,\n\t31051 - 11905: 0xB571,\n\t31052 - 11905: 0xB572,\n\t31053 - 11905: 0xB573,\n\t31054 - 11905: 0xB574,\n\t31055 - 11905: 0xB575,\n\t31056 - 11905: 0xB576,\n\t31057 - 11905: 0xB577,\n\t31058 - 11905: 0xB578,\n\t31059 - 11905: 0xECF0,\n\t31060 - 11905: 0xB579,\n\t31061 - 11905: 0xB57A,\n\t31062 - 11905: 0xD7E6,\n\t31063 - 11905: 0xECF3,\n\t31064 - 11905: 0xB57B,\n\t31065 - 11905: 0xB57C,\n\t31066 - 11905: 0xECF1,\n\t31067 - 11905: 0xECEE,\n\t31068 - 11905: 0xECEF,\n\t31069 - 11905: 0xD7A3,\n\t31070 - 11905: 0xC9F1,\n\t31071 - 11905: 0xCBEE,\n\t31072 - 11905: 0xECF4,\n\t31073 - 11905: 0xB57D,\n\t31074 - 11905: 0xECF2,\n\t31075 - 11905: 0xB57E,\n\t31076 - 11905: 0xB580,\n\t31077 - 11905: 0xCFE9,\n\t31078 - 11905: 0xB581,\n\t31079 - 11905: 0xECF6,\n\t31080 - 11905: 0xC6B1,\n\t31081 - 11905: 0xB582,\n\t31082 - 11905: 0xB583,\n\t31083 - 11905: 0xB584,\n\t31084 - 11905: 0xB585,\n\t31085 - 11905: 0xBCC0,\n\t31086 - 11905: 0xB586,\n\t31087 - 11905: 0xECF5,\n\t31088 - 11905: 0xB587,\n\t31089 - 11905: 0xB588,\n\t31090 - 11905: 0xB589,\n\t31091 - 11905: 0xB58A,\n\t31092 - 11905: 0xB58B,\n\t31093 - 11905: 0xB58C,\n\t31094 - 11905: 0xB58D,\n\t31095 - 11905: 0xB5BB,\n\t31096 - 11905: 0xBBF6,\n\t31097 - 11905: 0xB58E,\n\t31098 - 11905: 0xECF7,\n\t31099 - 11905: 0xB58F,\n\t31100 - 11905: 0xB590,\n\t31101 - 11905: 0xB591,\n\t31102 - 11905: 0xB592,\n\t31103 - 11905: 0xB593,\n\t31104 - 11905: 0xD9F7,\n\t31105 - 11905: 0xBDFB,\n\t31106 - 11905: 0xB594,\n\t31107 - 11905: 0xB595,\n\t31108 - 11905: 0xC2BB,\n\t31109 - 11905: 0xECF8,\n\t31110 - 11905: 0xB596,\n\t31111 - 11905: 0xB597,\n\t31112 - 11905: 0xB598,\n\t31113 - 11905: 0xB599,\n\t31114 - 11905: 0xECF9,\n\t31115 - 11905: 0xB59A,\n\t31116 - 11905: 0xB59B,\n\t31117 - 11905: 0xB59C,\n\t31118 - 11905: 0xB59D,\n\t31119 - 11905: 0xB8A3,\n\t31120 - 11905: 0xB59E,\n\t31121 - 11905: 0xB59F,\n\t31122 - 11905: 0xB5A0,\n\t31123 - 11905: 0xB640,\n\t31124 - 11905: 0xB641,\n\t31125 - 11905: 0xB642,\n\t31126 - 11905: 0xB643,\n\t31127 - 11905: 0xB644,\n\t31128 - 11905: 0xB645,\n\t31129 - 11905: 0xB646,\n\t31130 - 11905: 0xECFA,\n\t31131 - 11905: 0xB647,\n\t31132 - 11905: 0xB648,\n\t31133 - 11905: 0xB649,\n\t31134 - 11905: 0xB64A,\n\t31135 - 11905: 0xB64B,\n\t31136 - 11905: 0xB64C,\n\t31137 - 11905: 0xB64D,\n\t31138 - 11905: 0xB64E,\n\t31139 - 11905: 0xB64F,\n\t31140 - 11905: 0xB650,\n\t31141 - 11905: 0xB651,\n\t31142 - 11905: 0xB652,\n\t31143 - 11905: 0xECFB,\n\t31144 - 11905: 0xB653,\n\t31145 - 11905: 0xB654,\n\t31146 - 11905: 0xB655,\n\t31147 - 11905: 0xB656,\n\t31148 - 11905: 0xB657,\n\t31149 - 11905: 0xB658,\n\t31150 - 11905: 0xB659,\n\t31151 - 11905: 0xB65A,\n\t31152 - 11905: 0xB65B,\n\t31153 - 11905: 0xB65C,\n\t31154 - 11905: 0xB65D,\n\t31155 - 11905: 0xECFC,\n\t31156 - 11905: 0xB65E,\n\t31157 - 11905: 0xB65F,\n\t31158 - 11905: 0xB660,\n\t31159 - 11905: 0xB661,\n\t31160 - 11905: 0xB662,\n\t31161 - 11905: 0xD3ED,\n\t31162 - 11905: 0xD8AE,\n\t31163 - 11905: 0xC0EB,\n\t31164 - 11905: 0xB663,\n\t31165 - 11905: 0xC7DD,\n\t31166 - 11905: 0xBACC,\n\t31167 - 11905: 0xB664,\n\t31168 - 11905: 0xD0E3,\n\t31169 - 11905: 0xCBBD,\n\t31170 - 11905: 0xB665,\n\t31171 - 11905: 0xCDBA,\n\t31172 - 11905: 0xB666,\n\t31173 - 11905: 0xB667,\n\t31174 - 11905: 0xB8D1,\n\t31175 - 11905: 0xB668,\n\t31176 - 11905: 0xB669,\n\t31177 - 11905: 0xB1FC,\n\t31178 - 11905: 0xB66A,\n\t31179 - 11905: 0xC7EF,\n\t31180 - 11905: 0xB66B,\n\t31181 - 11905: 0xD6D6,\n\t31182 - 11905: 0xB66C,\n\t31183 - 11905: 0xB66D,\n\t31184 - 11905: 0xB66E,\n\t31185 - 11905: 0xBFC6,\n\t31186 - 11905: 0xC3EB,\n\t31187 - 11905: 0xB66F,\n\t31188 - 11905: 0xB670,\n\t31189 - 11905: 0xEFF5,\n\t31190 - 11905: 0xB671,\n\t31191 - 11905: 0xB672,\n\t31192 - 11905: 0xC3D8,\n\t31193 - 11905: 0xB673,\n\t31194 - 11905: 0xB674,\n\t31195 - 11905: 0xB675,\n\t31196 - 11905: 0xB676,\n\t31197 - 11905: 0xB677,\n\t31198 - 11905: 0xB678,\n\t31199 - 11905: 0xD7E2,\n\t31200 - 11905: 0xB679,\n\t31201 - 11905: 0xB67A,\n\t31202 - 11905: 0xB67B,\n\t31203 - 11905: 0xEFF7,\n\t31204 - 11905: 0xB3D3,\n\t31205 - 11905: 0xB67C,\n\t31206 - 11905: 0xC7D8,\n\t31207 - 11905: 0xD1ED,\n\t31208 - 11905: 0xB67D,\n\t31209 - 11905: 0xD6C8,\n\t31210 - 11905: 0xB67E,\n\t31211 - 11905: 0xEFF8,\n\t31212 - 11905: 0xB680,\n\t31213 - 11905: 0xEFF6,\n\t31214 - 11905: 0xB681,\n\t31215 - 11905: 0xBBFD,\n\t31216 - 11905: 0xB3C6,\n\t31217 - 11905: 0xB682,\n\t31218 - 11905: 0xB683,\n\t31219 - 11905: 0xB684,\n\t31220 - 11905: 0xB685,\n\t31221 - 11905: 0xB686,\n\t31222 - 11905: 0xB687,\n\t31223 - 11905: 0xB688,\n\t31224 - 11905: 0xBDD5,\n\t31225 - 11905: 0xB689,\n\t31226 - 11905: 0xB68A,\n\t31227 - 11905: 0xD2C6,\n\t31228 - 11905: 0xB68B,\n\t31229 - 11905: 0xBBE0,\n\t31230 - 11905: 0xB68C,\n\t31231 - 11905: 0xB68D,\n\t31232 - 11905: 0xCFA1,\n\t31233 - 11905: 0xB68E,\n\t31234 - 11905: 0xEFFC,\n\t31235 - 11905: 0xEFFB,\n\t31236 - 11905: 0xB68F,\n\t31237 - 11905: 0xB690,\n\t31238 - 11905: 0xEFF9,\n\t31239 - 11905: 0xB691,\n\t31240 - 11905: 0xB692,\n\t31241 - 11905: 0xB693,\n\t31242 - 11905: 0xB694,\n\t31243 - 11905: 0xB3CC,\n\t31244 - 11905: 0xB695,\n\t31245 - 11905: 0xC9D4,\n\t31246 - 11905: 0xCBB0,\n\t31247 - 11905: 0xB696,\n\t31248 - 11905: 0xB697,\n\t31249 - 11905: 0xB698,\n\t31250 - 11905: 0xB699,\n\t31251 - 11905: 0xB69A,\n\t31252 - 11905: 0xEFFE,\n\t31253 - 11905: 0xB69B,\n\t31254 - 11905: 0xB69C,\n\t31255 - 11905: 0xB0DE,\n\t31256 - 11905: 0xB69D,\n\t31257 - 11905: 0xB69E,\n\t31258 - 11905: 0xD6C9,\n\t31259 - 11905: 0xB69F,\n\t31260 - 11905: 0xB6A0,\n\t31261 - 11905: 0xB740,\n\t31262 - 11905: 0xEFFD,\n\t31263 - 11905: 0xB741,\n\t31264 - 11905: 0xB3ED,\n\t31265 - 11905: 0xB742,\n\t31266 - 11905: 0xB743,\n\t31267 - 11905: 0xF6D5,\n\t31268 - 11905: 0xB744,\n\t31269 - 11905: 0xB745,\n\t31270 - 11905: 0xB746,\n\t31271 - 11905: 0xB747,\n\t31272 - 11905: 0xB748,\n\t31273 - 11905: 0xB749,\n\t31274 - 11905: 0xB74A,\n\t31275 - 11905: 0xB74B,\n\t31276 - 11905: 0xB74C,\n\t31277 - 11905: 0xB74D,\n\t31278 - 11905: 0xB74E,\n\t31279 - 11905: 0xB74F,\n\t31280 - 11905: 0xB750,\n\t31281 - 11905: 0xB751,\n\t31282 - 11905: 0xB752,\n\t31283 - 11905: 0xCEC8,\n\t31284 - 11905: 0xB753,\n\t31285 - 11905: 0xB754,\n\t31286 - 11905: 0xB755,\n\t31287 - 11905: 0xF0A2,\n\t31288 - 11905: 0xB756,\n\t31289 - 11905: 0xF0A1,\n\t31290 - 11905: 0xB757,\n\t31291 - 11905: 0xB5BE,\n\t31292 - 11905: 0xBCDA,\n\t31293 - 11905: 0xBBFC,\n\t31294 - 11905: 0xB758,\n\t31295 - 11905: 0xB8E5,\n\t31296 - 11905: 0xB759,\n\t31297 - 11905: 0xB75A,\n\t31298 - 11905: 0xB75B,\n\t31299 - 11905: 0xB75C,\n\t31300 - 11905: 0xB75D,\n\t31301 - 11905: 0xB75E,\n\t31302 - 11905: 0xC4C2,\n\t31303 - 11905: 0xB75F,\n\t31304 - 11905: 0xB760,\n\t31305 - 11905: 0xB761,\n\t31306 - 11905: 0xB762,\n\t31307 - 11905: 0xB763,\n\t31308 - 11905: 0xB764,\n\t31309 - 11905: 0xB765,\n\t31310 - 11905: 0xB766,\n\t31311 - 11905: 0xB767,\n\t31312 - 11905: 0xB768,\n\t31313 - 11905: 0xF0A3,\n\t31314 - 11905: 0xB769,\n\t31315 - 11905: 0xB76A,\n\t31316 - 11905: 0xB76B,\n\t31317 - 11905: 0xB76C,\n\t31318 - 11905: 0xB76D,\n\t31319 - 11905: 0xCBEB,\n\t31320 - 11905: 0xB76E,\n\t31321 - 11905: 0xB76F,\n\t31322 - 11905: 0xB770,\n\t31323 - 11905: 0xB771,\n\t31324 - 11905: 0xB772,\n\t31325 - 11905: 0xB773,\n\t31326 - 11905: 0xB774,\n\t31327 - 11905: 0xB775,\n\t31328 - 11905: 0xB776,\n\t31329 - 11905: 0xB777,\n\t31330 - 11905: 0xB778,\n\t31331 - 11905: 0xB779,\n\t31332 - 11905: 0xB77A,\n\t31333 - 11905: 0xB77B,\n\t31334 - 11905: 0xB77C,\n\t31335 - 11905: 0xB77D,\n\t31336 - 11905: 0xB77E,\n\t31337 - 11905: 0xB780,\n\t31338 - 11905: 0xB781,\n\t31339 - 11905: 0xB782,\n\t31340 - 11905: 0xB783,\n\t31341 - 11905: 0xB784,\n\t31342 - 11905: 0xB785,\n\t31343 - 11905: 0xB786,\n\t31344 - 11905: 0xF0A6,\n\t31345 - 11905: 0xB787,\n\t31346 - 11905: 0xB788,\n\t31347 - 11905: 0xB789,\n\t31348 - 11905: 0xD1A8,\n\t31349 - 11905: 0xB78A,\n\t31350 - 11905: 0xBEBF,\n\t31351 - 11905: 0xC7EE,\n\t31352 - 11905: 0xF1B6,\n\t31353 - 11905: 0xF1B7,\n\t31354 - 11905: 0xBFD5,\n\t31355 - 11905: 0xB78B,\n\t31356 - 11905: 0xB78C,\n\t31357 - 11905: 0xB78D,\n\t31358 - 11905: 0xB78E,\n\t31359 - 11905: 0xB4A9,\n\t31360 - 11905: 0xF1B8,\n\t31361 - 11905: 0xCDBB,\n\t31362 - 11905: 0xB78F,\n\t31363 - 11905: 0xC7D4,\n\t31364 - 11905: 0xD5AD,\n\t31365 - 11905: 0xB790,\n\t31366 - 11905: 0xF1B9,\n\t31367 - 11905: 0xB791,\n\t31368 - 11905: 0xF1BA,\n\t31369 - 11905: 0xB792,\n\t31370 - 11905: 0xB793,\n\t31371 - 11905: 0xB794,\n\t31372 - 11905: 0xB795,\n\t31373 - 11905: 0xC7CF,\n\t31374 - 11905: 0xB796,\n\t31375 - 11905: 0xB797,\n\t31376 - 11905: 0xB798,\n\t31377 - 11905: 0xD2A4,\n\t31378 - 11905: 0xD6CF,\n\t31379 - 11905: 0xB799,\n\t31380 - 11905: 0xB79A,\n\t31381 - 11905: 0xF1BB,\n\t31382 - 11905: 0xBDD1,\n\t31383 - 11905: 0xB4B0,\n\t31384 - 11905: 0xBEBD,\n\t31385 - 11905: 0xB79B,\n\t31386 - 11905: 0xB79C,\n\t31387 - 11905: 0xB79D,\n\t31388 - 11905: 0xB4DC,\n\t31389 - 11905: 0xCED1,\n\t31390 - 11905: 0xB79E,\n\t31391 - 11905: 0xBFDF,\n\t31392 - 11905: 0xF1BD,\n\t31393 - 11905: 0xB79F,\n\t31394 - 11905: 0xB7A0,\n\t31395 - 11905: 0xB840,\n\t31396 - 11905: 0xB841,\n\t31397 - 11905: 0xBFFA,\n\t31398 - 11905: 0xF1BC,\n\t31399 - 11905: 0xB842,\n\t31400 - 11905: 0xF1BF,\n\t31401 - 11905: 0xB843,\n\t31402 - 11905: 0xB844,\n\t31403 - 11905: 0xB845,\n\t31404 - 11905: 0xF1BE,\n\t31405 - 11905: 0xF1C0,\n\t31406 - 11905: 0xB846,\n\t31407 - 11905: 0xB847,\n\t31408 - 11905: 0xB848,\n\t31409 - 11905: 0xB849,\n\t31410 - 11905: 0xB84A,\n\t31411 - 11905: 0xF1C1,\n\t31412 - 11905: 0xB84B,\n\t31413 - 11905: 0xB84C,\n\t31414 - 11905: 0xB84D,\n\t31415 - 11905: 0xB84E,\n\t31416 - 11905: 0xB84F,\n\t31417 - 11905: 0xB850,\n\t31418 - 11905: 0xB851,\n\t31419 - 11905: 0xB852,\n\t31420 - 11905: 0xB853,\n\t31421 - 11905: 0xB854,\n\t31422 - 11905: 0xB855,\n\t31423 - 11905: 0xC1FE,\n\t31424 - 11905: 0xB856,\n\t31425 - 11905: 0xB857,\n\t31426 - 11905: 0xB858,\n\t31427 - 11905: 0xB859,\n\t31428 - 11905: 0xB85A,\n\t31429 - 11905: 0xB85B,\n\t31430 - 11905: 0xB85C,\n\t31431 - 11905: 0xB85D,\n\t31432 - 11905: 0xB85E,\n\t31433 - 11905: 0xB85F,\n\t31434 - 11905: 0xB860,\n\t31435 - 11905: 0xC1A2,\n\t31436 - 11905: 0xB861,\n\t31437 - 11905: 0xB862,\n\t31438 - 11905: 0xB863,\n\t31439 - 11905: 0xB864,\n\t31440 - 11905: 0xB865,\n\t31441 - 11905: 0xB866,\n\t31442 - 11905: 0xB867,\n\t31443 - 11905: 0xB868,\n\t31444 - 11905: 0xB869,\n\t31445 - 11905: 0xB86A,\n\t31446 - 11905: 0xCAFA,\n\t31447 - 11905: 0xB86B,\n\t31448 - 11905: 0xB86C,\n\t31449 - 11905: 0xD5BE,\n\t31450 - 11905: 0xB86D,\n\t31451 - 11905: 0xB86E,\n\t31452 - 11905: 0xB86F,\n\t31453 - 11905: 0xB870,\n\t31454 - 11905: 0xBEBA,\n\t31455 - 11905: 0xBEB9,\n\t31456 - 11905: 0xD5C2,\n\t31457 - 11905: 0xB871,\n\t31458 - 11905: 0xB872,\n\t31459 - 11905: 0xBFA2,\n\t31460 - 11905: 0xB873,\n\t31461 - 11905: 0xCDAF,\n\t31462 - 11905: 0xF1B5,\n\t31463 - 11905: 0xB874,\n\t31464 - 11905: 0xB875,\n\t31465 - 11905: 0xB876,\n\t31466 - 11905: 0xB877,\n\t31467 - 11905: 0xB878,\n\t31468 - 11905: 0xB879,\n\t31469 - 11905: 0xBDDF,\n\t31470 - 11905: 0xB87A,\n\t31471 - 11905: 0xB6CB,\n\t31472 - 11905: 0xB87B,\n\t31473 - 11905: 0xB87C,\n\t31474 - 11905: 0xB87D,\n\t31475 - 11905: 0xB87E,\n\t31476 - 11905: 0xB880,\n\t31477 - 11905: 0xB881,\n\t31478 - 11905: 0xB882,\n\t31479 - 11905: 0xB883,\n\t31480 - 11905: 0xB884,\n\t31481 - 11905: 0xD6F1,\n\t31482 - 11905: 0xF3C3,\n\t31483 - 11905: 0xB885,\n\t31484 - 11905: 0xB886,\n\t31485 - 11905: 0xF3C4,\n\t31486 - 11905: 0xB887,\n\t31487 - 11905: 0xB8CD,\n\t31488 - 11905: 0xB888,\n\t31489 - 11905: 0xB889,\n\t31490 - 11905: 0xB88A,\n\t31491 - 11905: 0xF3C6,\n\t31492 - 11905: 0xF3C7,\n\t31493 - 11905: 0xB88B,\n\t31494 - 11905: 0xB0CA,\n\t31495 - 11905: 0xB88C,\n\t31496 - 11905: 0xF3C5,\n\t31497 - 11905: 0xB88D,\n\t31498 - 11905: 0xF3C9,\n\t31499 - 11905: 0xCBF1,\n\t31500 - 11905: 0xB88E,\n\t31501 - 11905: 0xB88F,\n\t31502 - 11905: 0xB890,\n\t31503 - 11905: 0xF3CB,\n\t31504 - 11905: 0xB891,\n\t31505 - 11905: 0xD0A6,\n\t31506 - 11905: 0xB892,\n\t31507 - 11905: 0xB893,\n\t31508 - 11905: 0xB1CA,\n\t31509 - 11905: 0xF3C8,\n\t31510 - 11905: 0xB894,\n\t31511 - 11905: 0xB895,\n\t31512 - 11905: 0xB896,\n\t31513 - 11905: 0xF3CF,\n\t31514 - 11905: 0xB897,\n\t31515 - 11905: 0xB5D1,\n\t31516 - 11905: 0xB898,\n\t31517 - 11905: 0xB899,\n\t31518 - 11905: 0xF3D7,\n\t31519 - 11905: 0xB89A,\n\t31520 - 11905: 0xF3D2,\n\t31521 - 11905: 0xB89B,\n\t31522 - 11905: 0xB89C,\n\t31523 - 11905: 0xB89D,\n\t31524 - 11905: 0xF3D4,\n\t31525 - 11905: 0xF3D3,\n\t31526 - 11905: 0xB7FB,\n\t31527 - 11905: 0xB89E,\n\t31528 - 11905: 0xB1BF,\n\t31529 - 11905: 0xB89F,\n\t31530 - 11905: 0xF3CE,\n\t31531 - 11905: 0xF3CA,\n\t31532 - 11905: 0xB5DA,\n\t31533 - 11905: 0xB8A0,\n\t31534 - 11905: 0xF3D0,\n\t31535 - 11905: 0xB940,\n\t31536 - 11905: 0xB941,\n\t31537 - 11905: 0xF3D1,\n\t31538 - 11905: 0xB942,\n\t31539 - 11905: 0xF3D5,\n\t31540 - 11905: 0xB943,\n\t31541 - 11905: 0xB944,\n\t31542 - 11905: 0xB945,\n\t31543 - 11905: 0xB946,\n\t31544 - 11905: 0xF3CD,\n\t31545 - 11905: 0xB947,\n\t31546 - 11905: 0xBCE3,\n\t31547 - 11905: 0xB948,\n\t31548 - 11905: 0xC1FD,\n\t31549 - 11905: 0xB949,\n\t31550 - 11905: 0xF3D6,\n\t31551 - 11905: 0xB94A,\n\t31552 - 11905: 0xB94B,\n\t31553 - 11905: 0xB94C,\n\t31554 - 11905: 0xB94D,\n\t31555 - 11905: 0xB94E,\n\t31556 - 11905: 0xB94F,\n\t31557 - 11905: 0xF3DA,\n\t31558 - 11905: 0xB950,\n\t31559 - 11905: 0xF3CC,\n\t31560 - 11905: 0xB951,\n\t31561 - 11905: 0xB5C8,\n\t31562 - 11905: 0xB952,\n\t31563 - 11905: 0xBDEE,\n\t31564 - 11905: 0xF3DC,\n\t31565 - 11905: 0xB953,\n\t31566 - 11905: 0xB954,\n\t31567 - 11905: 0xB7A4,\n\t31568 - 11905: 0xBFF0,\n\t31569 - 11905: 0xD6FE,\n\t31570 - 11905: 0xCDB2,\n\t31571 - 11905: 0xB955,\n\t31572 - 11905: 0xB4F0,\n\t31573 - 11905: 0xB956,\n\t31574 - 11905: 0xB2DF,\n\t31575 - 11905: 0xB957,\n\t31576 - 11905: 0xF3D8,\n\t31577 - 11905: 0xB958,\n\t31578 - 11905: 0xF3D9,\n\t31579 - 11905: 0xC9B8,\n\t31580 - 11905: 0xB959,\n\t31581 - 11905: 0xF3DD,\n\t31582 - 11905: 0xB95A,\n\t31583 - 11905: 0xB95B,\n\t31584 - 11905: 0xF3DE,\n\t31585 - 11905: 0xB95C,\n\t31586 - 11905: 0xF3E1,\n\t31587 - 11905: 0xB95D,\n\t31588 - 11905: 0xB95E,\n\t31589 - 11905: 0xB95F,\n\t31590 - 11905: 0xB960,\n\t31591 - 11905: 0xB961,\n\t31592 - 11905: 0xB962,\n\t31593 - 11905: 0xB963,\n\t31594 - 11905: 0xB964,\n\t31595 - 11905: 0xB965,\n\t31596 - 11905: 0xB966,\n\t31597 - 11905: 0xB967,\n\t31598 - 11905: 0xF3DF,\n\t31599 - 11905: 0xB968,\n\t31600 - 11905: 0xB969,\n\t31601 - 11905: 0xF3E3,\n\t31602 - 11905: 0xF3E2,\n\t31603 - 11905: 0xB96A,\n\t31604 - 11905: 0xB96B,\n\t31605 - 11905: 0xF3DB,\n\t31606 - 11905: 0xB96C,\n\t31607 - 11905: 0xBFEA,\n\t31608 - 11905: 0xB96D,\n\t31609 - 11905: 0xB3EF,\n\t31610 - 11905: 0xB96E,\n\t31611 - 11905: 0xF3E0,\n\t31612 - 11905: 0xB96F,\n\t31613 - 11905: 0xB970,\n\t31614 - 11905: 0xC7A9,\n\t31615 - 11905: 0xB971,\n\t31616 - 11905: 0xBCF2,\n\t31617 - 11905: 0xB972,\n\t31618 - 11905: 0xB973,\n\t31619 - 11905: 0xB974,\n\t31620 - 11905: 0xB975,\n\t31621 - 11905: 0xF3EB,\n\t31622 - 11905: 0xB976,\n\t31623 - 11905: 0xB977,\n\t31624 - 11905: 0xB978,\n\t31625 - 11905: 0xB979,\n\t31626 - 11905: 0xB97A,\n\t31627 - 11905: 0xB97B,\n\t31628 - 11905: 0xB97C,\n\t31629 - 11905: 0xB9BF,\n\t31630 - 11905: 0xB97D,\n\t31631 - 11905: 0xB97E,\n\t31632 - 11905: 0xF3E4,\n\t31633 - 11905: 0xB980,\n\t31634 - 11905: 0xB981,\n\t31635 - 11905: 0xB982,\n\t31636 - 11905: 0xB2AD,\n\t31637 - 11905: 0xBBFE,\n\t31638 - 11905: 0xB983,\n\t31639 - 11905: 0xCBE3,\n\t31640 - 11905: 0xB984,\n\t31641 - 11905: 0xB985,\n\t31642 - 11905: 0xB986,\n\t31643 - 11905: 0xB987,\n\t31644 - 11905: 0xF3ED,\n\t31645 - 11905: 0xF3E9,\n\t31646 - 11905: 0xB988,\n\t31647 - 11905: 0xB989,\n\t31648 - 11905: 0xB98A,\n\t31649 - 11905: 0xB9DC,\n\t31650 - 11905: 0xF3EE,\n\t31651 - 11905: 0xB98B,\n\t31652 - 11905: 0xB98C,\n\t31653 - 11905: 0xB98D,\n\t31654 - 11905: 0xF3E5,\n\t31655 - 11905: 0xF3E6,\n\t31656 - 11905: 0xF3EA,\n\t31657 - 11905: 0xC2E1,\n\t31658 - 11905: 0xF3EC,\n\t31659 - 11905: 0xF3EF,\n\t31660 - 11905: 0xF3E8,\n\t31661 - 11905: 0xBCFD,\n\t31662 - 11905: 0xB98E,\n\t31663 - 11905: 0xB98F,\n\t31664 - 11905: 0xB990,\n\t31665 - 11905: 0xCFE4,\n\t31666 - 11905: 0xB991,\n\t31667 - 11905: 0xB992,\n\t31668 - 11905: 0xF3F0,\n\t31669 - 11905: 0xB993,\n\t31670 - 11905: 0xB994,\n\t31671 - 11905: 0xB995,\n\t31672 - 11905: 0xF3E7,\n\t31673 - 11905: 0xB996,\n\t31674 - 11905: 0xB997,\n\t31675 - 11905: 0xB998,\n\t31676 - 11905: 0xB999,\n\t31677 - 11905: 0xB99A,\n\t31678 - 11905: 0xB99B,\n\t31679 - 11905: 0xB99C,\n\t31680 - 11905: 0xB99D,\n\t31681 - 11905: 0xF3F2,\n\t31682 - 11905: 0xB99E,\n\t31683 - 11905: 0xB99F,\n\t31684 - 11905: 0xB9A0,\n\t31685 - 11905: 0xBA40,\n\t31686 - 11905: 0xD7AD,\n\t31687 - 11905: 0xC6AA,\n\t31688 - 11905: 0xBA41,\n\t31689 - 11905: 0xBA42,\n\t31690 - 11905: 0xBA43,\n\t31691 - 11905: 0xBA44,\n\t31692 - 11905: 0xF3F3,\n\t31693 - 11905: 0xBA45,\n\t31694 - 11905: 0xBA46,\n\t31695 - 11905: 0xBA47,\n\t31696 - 11905: 0xBA48,\n\t31697 - 11905: 0xF3F1,\n\t31698 - 11905: 0xBA49,\n\t31699 - 11905: 0xC2A8,\n\t31700 - 11905: 0xBA4A,\n\t31701 - 11905: 0xBA4B,\n\t31702 - 11905: 0xBA4C,\n\t31703 - 11905: 0xBA4D,\n\t31704 - 11905: 0xBA4E,\n\t31705 - 11905: 0xB8DD,\n\t31706 - 11905: 0xF3F5,\n\t31707 - 11905: 0xBA4F,\n\t31708 - 11905: 0xBA50,\n\t31709 - 11905: 0xF3F4,\n\t31710 - 11905: 0xBA51,\n\t31711 - 11905: 0xBA52,\n\t31712 - 11905: 0xBA53,\n\t31713 - 11905: 0xB4DB,\n\t31714 - 11905: 0xBA54,\n\t31715 - 11905: 0xBA55,\n\t31716 - 11905: 0xBA56,\n\t31717 - 11905: 0xF3F6,\n\t31718 - 11905: 0xF3F7,\n\t31719 - 11905: 0xBA57,\n\t31720 - 11905: 0xBA58,\n\t31721 - 11905: 0xBA59,\n\t31722 - 11905: 0xF3F8,\n\t31723 - 11905: 0xBA5A,\n\t31724 - 11905: 0xBA5B,\n\t31725 - 11905: 0xBA5C,\n\t31726 - 11905: 0xC0BA,\n\t31727 - 11905: 0xBA5D,\n\t31728 - 11905: 0xBA5E,\n\t31729 - 11905: 0xC0E9,\n\t31730 - 11905: 0xBA5F,\n\t31731 - 11905: 0xBA60,\n\t31732 - 11905: 0xBA61,\n\t31733 - 11905: 0xBA62,\n\t31734 - 11905: 0xBA63,\n\t31735 - 11905: 0xC5F1,\n\t31736 - 11905: 0xBA64,\n\t31737 - 11905: 0xBA65,\n\t31738 - 11905: 0xBA66,\n\t31739 - 11905: 0xBA67,\n\t31740 - 11905: 0xF3FB,\n\t31741 - 11905: 0xBA68,\n\t31742 - 11905: 0xF3FA,\n\t31743 - 11905: 0xBA69,\n\t31744 - 11905: 0xBA6A,\n\t31745 - 11905: 0xBA6B,\n\t31746 - 11905: 0xBA6C,\n\t31747 - 11905: 0xBA6D,\n\t31748 - 11905: 0xBA6E,\n\t31749 - 11905: 0xBA6F,\n\t31750 - 11905: 0xBA70,\n\t31751 - 11905: 0xB4D8,\n\t31752 - 11905: 0xBA71,\n\t31753 - 11905: 0xBA72,\n\t31754 - 11905: 0xBA73,\n\t31755 - 11905: 0xF3FE,\n\t31756 - 11905: 0xF3F9,\n\t31757 - 11905: 0xBA74,\n\t31758 - 11905: 0xBA75,\n\t31759 - 11905: 0xF3FC,\n\t31760 - 11905: 0xBA76,\n\t31761 - 11905: 0xBA77,\n\t31762 - 11905: 0xBA78,\n\t31763 - 11905: 0xBA79,\n\t31764 - 11905: 0xBA7A,\n\t31765 - 11905: 0xBA7B,\n\t31766 - 11905: 0xF3FD,\n\t31767 - 11905: 0xBA7C,\n\t31768 - 11905: 0xBA7D,\n\t31769 - 11905: 0xBA7E,\n\t31770 - 11905: 0xBA80,\n\t31771 - 11905: 0xBA81,\n\t31772 - 11905: 0xBA82,\n\t31773 - 11905: 0xBA83,\n\t31774 - 11905: 0xBA84,\n\t31775 - 11905: 0xF4A1,\n\t31776 - 11905: 0xBA85,\n\t31777 - 11905: 0xBA86,\n\t31778 - 11905: 0xBA87,\n\t31779 - 11905: 0xBA88,\n\t31780 - 11905: 0xBA89,\n\t31781 - 11905: 0xBA8A,\n\t31782 - 11905: 0xF4A3,\n\t31783 - 11905: 0xBBC9,\n\t31784 - 11905: 0xBA8B,\n\t31785 - 11905: 0xBA8C,\n\t31786 - 11905: 0xF4A2,\n\t31787 - 11905: 0xBA8D,\n\t31788 - 11905: 0xBA8E,\n\t31789 - 11905: 0xBA8F,\n\t31790 - 11905: 0xBA90,\n\t31791 - 11905: 0xBA91,\n\t31792 - 11905: 0xBA92,\n\t31793 - 11905: 0xBA93,\n\t31794 - 11905: 0xBA94,\n\t31795 - 11905: 0xBA95,\n\t31796 - 11905: 0xBA96,\n\t31797 - 11905: 0xBA97,\n\t31798 - 11905: 0xBA98,\n\t31799 - 11905: 0xBA99,\n\t31800 - 11905: 0xF4A4,\n\t31801 - 11905: 0xBA9A,\n\t31802 - 11905: 0xBA9B,\n\t31803 - 11905: 0xBA9C,\n\t31804 - 11905: 0xBA9D,\n\t31805 - 11905: 0xBA9E,\n\t31806 - 11905: 0xBA9F,\n\t31807 - 11905: 0xB2BE,\n\t31808 - 11905: 0xF4A6,\n\t31809 - 11905: 0xF4A5,\n\t31810 - 11905: 0xBAA0,\n\t31811 - 11905: 0xBB40,\n\t31812 - 11905: 0xBB41,\n\t31813 - 11905: 0xBB42,\n\t31814 - 11905: 0xBB43,\n\t31815 - 11905: 0xBB44,\n\t31816 - 11905: 0xBB45,\n\t31817 - 11905: 0xBB46,\n\t31818 - 11905: 0xBB47,\n\t31819 - 11905: 0xBB48,\n\t31820 - 11905: 0xBB49,\n\t31821 - 11905: 0xBCAE,\n\t31822 - 11905: 0xBB4A,\n\t31823 - 11905: 0xBB4B,\n\t31824 - 11905: 0xBB4C,\n\t31825 - 11905: 0xBB4D,\n\t31826 - 11905: 0xBB4E,\n\t31827 - 11905: 0xBB4F,\n\t31828 - 11905: 0xBB50,\n\t31829 - 11905: 0xBB51,\n\t31830 - 11905: 0xBB52,\n\t31831 - 11905: 0xBB53,\n\t31832 - 11905: 0xBB54,\n\t31833 - 11905: 0xBB55,\n\t31834 - 11905: 0xBB56,\n\t31835 - 11905: 0xBB57,\n\t31836 - 11905: 0xBB58,\n\t31837 - 11905: 0xBB59,\n\t31838 - 11905: 0xBB5A,\n\t31839 - 11905: 0xBB5B,\n\t31840 - 11905: 0xBB5C,\n\t31841 - 11905: 0xBB5D,\n\t31842 - 11905: 0xBB5E,\n\t31843 - 11905: 0xBB5F,\n\t31844 - 11905: 0xBB60,\n\t31845 - 11905: 0xBB61,\n\t31846 - 11905: 0xBB62,\n\t31847 - 11905: 0xBB63,\n\t31848 - 11905: 0xBB64,\n\t31849 - 11905: 0xBB65,\n\t31850 - 11905: 0xBB66,\n\t31851 - 11905: 0xBB67,\n\t31852 - 11905: 0xBB68,\n\t31853 - 11905: 0xBB69,\n\t31854 - 11905: 0xBB6A,\n\t31855 - 11905: 0xBB6B,\n\t31856 - 11905: 0xBB6C,\n\t31857 - 11905: 0xBB6D,\n\t31858 - 11905: 0xBB6E,\n\t31859 - 11905: 0xC3D7,\n\t31860 - 11905: 0xD9E1,\n\t31861 - 11905: 0xBB6F,\n\t31862 - 11905: 0xBB70,\n\t31863 - 11905: 0xBB71,\n\t31864 - 11905: 0xBB72,\n\t31865 - 11905: 0xBB73,\n\t31866 - 11905: 0xBB74,\n\t31867 - 11905: 0xC0E0,\n\t31868 - 11905: 0xF4CC,\n\t31869 - 11905: 0xD7D1,\n\t31870 - 11905: 0xBB75,\n\t31871 - 11905: 0xBB76,\n\t31872 - 11905: 0xBB77,\n\t31873 - 11905: 0xBB78,\n\t31874 - 11905: 0xBB79,\n\t31875 - 11905: 0xBB7A,\n\t31876 - 11905: 0xBB7B,\n\t31877 - 11905: 0xBB7C,\n\t31878 - 11905: 0xBB7D,\n\t31879 - 11905: 0xBB7E,\n\t31880 - 11905: 0xBB80,\n\t31881 - 11905: 0xB7DB,\n\t31882 - 11905: 0xBB81,\n\t31883 - 11905: 0xBB82,\n\t31884 - 11905: 0xBB83,\n\t31885 - 11905: 0xBB84,\n\t31886 - 11905: 0xBB85,\n\t31887 - 11905: 0xBB86,\n\t31888 - 11905: 0xBB87,\n\t31889 - 11905: 0xF4CE,\n\t31890 - 11905: 0xC1A3,\n\t31891 - 11905: 0xBB88,\n\t31892 - 11905: 0xBB89,\n\t31893 - 11905: 0xC6C9,\n\t31894 - 11905: 0xBB8A,\n\t31895 - 11905: 0xB4D6,\n\t31896 - 11905: 0xD5B3,\n\t31897 - 11905: 0xBB8B,\n\t31898 - 11905: 0xBB8C,\n\t31899 - 11905: 0xBB8D,\n\t31900 - 11905: 0xF4D0,\n\t31901 - 11905: 0xF4CF,\n\t31902 - 11905: 0xF4D1,\n\t31903 - 11905: 0xCBDA,\n\t31904 - 11905: 0xBB8E,\n\t31905 - 11905: 0xBB8F,\n\t31906 - 11905: 0xF4D2,\n\t31907 - 11905: 0xBB90,\n\t31908 - 11905: 0xD4C1,\n\t31909 - 11905: 0xD6E0,\n\t31910 - 11905: 0xBB91,\n\t31911 - 11905: 0xBB92,\n\t31912 - 11905: 0xBB93,\n\t31913 - 11905: 0xBB94,\n\t31914 - 11905: 0xB7E0,\n\t31915 - 11905: 0xBB95,\n\t31916 - 11905: 0xBB96,\n\t31917 - 11905: 0xBB97,\n\t31918 - 11905: 0xC1B8,\n\t31919 - 11905: 0xBB98,\n\t31920 - 11905: 0xBB99,\n\t31921 - 11905: 0xC1BB,\n\t31922 - 11905: 0xF4D3,\n\t31923 - 11905: 0xBEAC,\n\t31924 - 11905: 0xBB9A,\n\t31925 - 11905: 0xBB9B,\n\t31926 - 11905: 0xBB9C,\n\t31927 - 11905: 0xBB9D,\n\t31928 - 11905: 0xBB9E,\n\t31929 - 11905: 0xB4E2,\n\t31930 - 11905: 0xBB9F,\n\t31931 - 11905: 0xBBA0,\n\t31932 - 11905: 0xF4D4,\n\t31933 - 11905: 0xF4D5,\n\t31934 - 11905: 0xBEAB,\n\t31935 - 11905: 0xBC40,\n\t31936 - 11905: 0xBC41,\n\t31937 - 11905: 0xF4D6,\n\t31938 - 11905: 0xBC42,\n\t31939 - 11905: 0xBC43,\n\t31940 - 11905: 0xBC44,\n\t31941 - 11905: 0xF4DB,\n\t31942 - 11905: 0xBC45,\n\t31943 - 11905: 0xF4D7,\n\t31944 - 11905: 0xF4DA,\n\t31945 - 11905: 0xBC46,\n\t31946 - 11905: 0xBAFD,\n\t31947 - 11905: 0xBC47,\n\t31948 - 11905: 0xF4D8,\n\t31949 - 11905: 0xF4D9,\n\t31950 - 11905: 0xBC48,\n\t31951 - 11905: 0xBC49,\n\t31952 - 11905: 0xBC4A,\n\t31953 - 11905: 0xBC4B,\n\t31954 - 11905: 0xBC4C,\n\t31955 - 11905: 0xBC4D,\n\t31956 - 11905: 0xBC4E,\n\t31957 - 11905: 0xB8E2,\n\t31958 - 11905: 0xCCC7,\n\t31959 - 11905: 0xF4DC,\n\t31960 - 11905: 0xBC4F,\n\t31961 - 11905: 0xB2DA,\n\t31962 - 11905: 0xBC50,\n\t31963 - 11905: 0xBC51,\n\t31964 - 11905: 0xC3D3,\n\t31965 - 11905: 0xBC52,\n\t31966 - 11905: 0xBC53,\n\t31967 - 11905: 0xD4E3,\n\t31968 - 11905: 0xBFB7,\n\t31969 - 11905: 0xBC54,\n\t31970 - 11905: 0xBC55,\n\t31971 - 11905: 0xBC56,\n\t31972 - 11905: 0xBC57,\n\t31973 - 11905: 0xBC58,\n\t31974 - 11905: 0xBC59,\n\t31975 - 11905: 0xBC5A,\n\t31976 - 11905: 0xF4DD,\n\t31977 - 11905: 0xBC5B,\n\t31978 - 11905: 0xBC5C,\n\t31979 - 11905: 0xBC5D,\n\t31980 - 11905: 0xBC5E,\n\t31981 - 11905: 0xBC5F,\n\t31982 - 11905: 0xBC60,\n\t31983 - 11905: 0xC5B4,\n\t31984 - 11905: 0xBC61,\n\t31985 - 11905: 0xBC62,\n\t31986 - 11905: 0xBC63,\n\t31987 - 11905: 0xBC64,\n\t31988 - 11905: 0xBC65,\n\t31989 - 11905: 0xBC66,\n\t31990 - 11905: 0xBC67,\n\t31991 - 11905: 0xBC68,\n\t31992 - 11905: 0xF4E9,\n\t31993 - 11905: 0xBC69,\n\t31994 - 11905: 0xBC6A,\n\t31995 - 11905: 0xCFB5,\n\t31996 - 11905: 0xBC6B,\n\t31997 - 11905: 0xBC6C,\n\t31998 - 11905: 0xBC6D,\n\t31999 - 11905: 0xBC6E,\n\t32000 - 11905: 0xBC6F,\n\t32001 - 11905: 0xBC70,\n\t32002 - 11905: 0xBC71,\n\t32003 - 11905: 0xBC72,\n\t32004 - 11905: 0xBC73,\n\t32005 - 11905: 0xBC74,\n\t32006 - 11905: 0xBC75,\n\t32007 - 11905: 0xBC76,\n\t32008 - 11905: 0xBC77,\n\t32009 - 11905: 0xBC78,\n\t32010 - 11905: 0xCEC9,\n\t32011 - 11905: 0xBC79,\n\t32012 - 11905: 0xBC7A,\n\t32013 - 11905: 0xBC7B,\n\t32014 - 11905: 0xBC7C,\n\t32015 - 11905: 0xBC7D,\n\t32016 - 11905: 0xBC7E,\n\t32017 - 11905: 0xBC80,\n\t32018 - 11905: 0xBC81,\n\t32019 - 11905: 0xBC82,\n\t32020 - 11905: 0xBC83,\n\t32021 - 11905: 0xBC84,\n\t32022 - 11905: 0xBC85,\n\t32023 - 11905: 0xBC86,\n\t32024 - 11905: 0xBC87,\n\t32025 - 11905: 0xBC88,\n\t32026 - 11905: 0xBC89,\n\t32027 - 11905: 0xBC8A,\n\t32028 - 11905: 0xBC8B,\n\t32029 - 11905: 0xBC8C,\n\t32030 - 11905: 0xBC8D,\n\t32031 - 11905: 0xBC8E,\n\t32032 - 11905: 0xCBD8,\n\t32033 - 11905: 0xBC8F,\n\t32034 - 11905: 0xCBF7,\n\t32035 - 11905: 0xBC90,\n\t32036 - 11905: 0xBC91,\n\t32037 - 11905: 0xBC92,\n\t32038 - 11905: 0xBC93,\n\t32039 - 11905: 0xBDF4,\n\t32040 - 11905: 0xBC94,\n\t32041 - 11905: 0xBC95,\n\t32042 - 11905: 0xBC96,\n\t32043 - 11905: 0xD7CF,\n\t32044 - 11905: 0xBC97,\n\t32045 - 11905: 0xBC98,\n\t32046 - 11905: 0xBC99,\n\t32047 - 11905: 0xC0DB,\n\t32048 - 11905: 0xBC9A,\n\t32049 - 11905: 0xBC9B,\n\t32050 - 11905: 0xBC9C,\n\t32051 - 11905: 0xBC9D,\n\t32052 - 11905: 0xBC9E,\n\t32053 - 11905: 0xBC9F,\n\t32054 - 11905: 0xBCA0,\n\t32055 - 11905: 0xBD40,\n\t32056 - 11905: 0xBD41,\n\t32057 - 11905: 0xBD42,\n\t32058 - 11905: 0xBD43,\n\t32059 - 11905: 0xBD44,\n\t32060 - 11905: 0xBD45,\n\t32061 - 11905: 0xBD46,\n\t32062 - 11905: 0xBD47,\n\t32063 - 11905: 0xBD48,\n\t32064 - 11905: 0xBD49,\n\t32065 - 11905: 0xBD4A,\n\t32066 - 11905: 0xBD4B,\n\t32067 - 11905: 0xBD4C,\n\t32068 - 11905: 0xBD4D,\n\t32069 - 11905: 0xBD4E,\n\t32070 - 11905: 0xBD4F,\n\t32071 - 11905: 0xBD50,\n\t32072 - 11905: 0xBD51,\n\t32073 - 11905: 0xBD52,\n\t32074 - 11905: 0xBD53,\n\t32075 - 11905: 0xBD54,\n\t32076 - 11905: 0xBD55,\n\t32077 - 11905: 0xBD56,\n\t32078 - 11905: 0xBD57,\n\t32079 - 11905: 0xBD58,\n\t32080 - 11905: 0xBD59,\n\t32081 - 11905: 0xBD5A,\n\t32082 - 11905: 0xBD5B,\n\t32083 - 11905: 0xBD5C,\n\t32084 - 11905: 0xBD5D,\n\t32085 - 11905: 0xBD5E,\n\t32086 - 11905: 0xBD5F,\n\t32087 - 11905: 0xBD60,\n\t32088 - 11905: 0xBD61,\n\t32089 - 11905: 0xBD62,\n\t32090 - 11905: 0xBD63,\n\t32091 - 11905: 0xBD64,\n\t32092 - 11905: 0xBD65,\n\t32093 - 11905: 0xBD66,\n\t32094 - 11905: 0xBD67,\n\t32095 - 11905: 0xBD68,\n\t32096 - 11905: 0xBD69,\n\t32097 - 11905: 0xBD6A,\n\t32098 - 11905: 0xBD6B,\n\t32099 - 11905: 0xBD6C,\n\t32100 - 11905: 0xBD6D,\n\t32101 - 11905: 0xBD6E,\n\t32102 - 11905: 0xBD6F,\n\t32103 - 11905: 0xBD70,\n\t32104 - 11905: 0xBD71,\n\t32105 - 11905: 0xBD72,\n\t32106 - 11905: 0xBD73,\n\t32107 - 11905: 0xBD74,\n\t32108 - 11905: 0xBD75,\n\t32109 - 11905: 0xBD76,\n\t32110 - 11905: 0xD0F5,\n\t32111 - 11905: 0xBD77,\n\t32112 - 11905: 0xBD78,\n\t32113 - 11905: 0xBD79,\n\t32114 - 11905: 0xBD7A,\n\t32115 - 11905: 0xBD7B,\n\t32116 - 11905: 0xBD7C,\n\t32117 - 11905: 0xBD7D,\n\t32118 - 11905: 0xBD7E,\n\t32119 - 11905: 0xF4EA,\n\t32120 - 11905: 0xBD80,\n\t32121 - 11905: 0xBD81,\n\t32122 - 11905: 0xBD82,\n\t32123 - 11905: 0xBD83,\n\t32124 - 11905: 0xBD84,\n\t32125 - 11905: 0xBD85,\n\t32126 - 11905: 0xBD86,\n\t32127 - 11905: 0xBD87,\n\t32128 - 11905: 0xBD88,\n\t32129 - 11905: 0xBD89,\n\t32130 - 11905: 0xBD8A,\n\t32131 - 11905: 0xBD8B,\n\t32132 - 11905: 0xBD8C,\n\t32133 - 11905: 0xBD8D,\n\t32134 - 11905: 0xBD8E,\n\t32135 - 11905: 0xBD8F,\n\t32136 - 11905: 0xBD90,\n\t32137 - 11905: 0xBD91,\n\t32138 - 11905: 0xBD92,\n\t32139 - 11905: 0xBD93,\n\t32140 - 11905: 0xBD94,\n\t32141 - 11905: 0xBD95,\n\t32142 - 11905: 0xBD96,\n\t32143 - 11905: 0xBD97,\n\t32144 - 11905: 0xBD98,\n\t32145 - 11905: 0xBD99,\n\t32146 - 11905: 0xBD9A,\n\t32147 - 11905: 0xBD9B,\n\t32148 - 11905: 0xBD9C,\n\t32149 - 11905: 0xBD9D,\n\t32150 - 11905: 0xBD9E,\n\t32151 - 11905: 0xBD9F,\n\t32152 - 11905: 0xBDA0,\n\t32153 - 11905: 0xBE40,\n\t32154 - 11905: 0xBE41,\n\t32155 - 11905: 0xBE42,\n\t32156 - 11905: 0xBE43,\n\t32157 - 11905: 0xBE44,\n\t32158 - 11905: 0xBE45,\n\t32159 - 11905: 0xBE46,\n\t32160 - 11905: 0xBE47,\n\t32161 - 11905: 0xBE48,\n\t32162 - 11905: 0xBE49,\n\t32163 - 11905: 0xBE4A,\n\t32164 - 11905: 0xBE4B,\n\t32165 - 11905: 0xBE4C,\n\t32166 - 11905: 0xF4EB,\n\t32167 - 11905: 0xBE4D,\n\t32168 - 11905: 0xBE4E,\n\t32169 - 11905: 0xBE4F,\n\t32170 - 11905: 0xBE50,\n\t32171 - 11905: 0xBE51,\n\t32172 - 11905: 0xBE52,\n\t32173 - 11905: 0xBE53,\n\t32174 - 11905: 0xF4EC,\n\t32175 - 11905: 0xBE54,\n\t32176 - 11905: 0xBE55,\n\t32177 - 11905: 0xBE56,\n\t32178 - 11905: 0xBE57,\n\t32179 - 11905: 0xBE58,\n\t32180 - 11905: 0xBE59,\n\t32181 - 11905: 0xBE5A,\n\t32182 - 11905: 0xBE5B,\n\t32183 - 11905: 0xBE5C,\n\t32184 - 11905: 0xBE5D,\n\t32185 - 11905: 0xBE5E,\n\t32186 - 11905: 0xBE5F,\n\t32187 - 11905: 0xBE60,\n\t32188 - 11905: 0xBE61,\n\t32189 - 11905: 0xBE62,\n\t32190 - 11905: 0xBE63,\n\t32191 - 11905: 0xBE64,\n\t32192 - 11905: 0xBE65,\n\t32193 - 11905: 0xBE66,\n\t32194 - 11905: 0xBE67,\n\t32195 - 11905: 0xBE68,\n\t32196 - 11905: 0xBE69,\n\t32197 - 11905: 0xBE6A,\n\t32198 - 11905: 0xBE6B,\n\t32199 - 11905: 0xBE6C,\n\t32200 - 11905: 0xBE6D,\n\t32201 - 11905: 0xBE6E,\n\t32202 - 11905: 0xBE6F,\n\t32203 - 11905: 0xBE70,\n\t32204 - 11905: 0xBE71,\n\t32205 - 11905: 0xBE72,\n\t32206 - 11905: 0xBE73,\n\t32207 - 11905: 0xBE74,\n\t32208 - 11905: 0xBE75,\n\t32209 - 11905: 0xBE76,\n\t32210 - 11905: 0xBE77,\n\t32211 - 11905: 0xBE78,\n\t32212 - 11905: 0xBE79,\n\t32213 - 11905: 0xBE7A,\n\t32214 - 11905: 0xBE7B,\n\t32215 - 11905: 0xBE7C,\n\t32216 - 11905: 0xBE7D,\n\t32217 - 11905: 0xBE7E,\n\t32218 - 11905: 0xBE80,\n\t32219 - 11905: 0xBE81,\n\t32220 - 11905: 0xBE82,\n\t32221 - 11905: 0xBE83,\n\t32222 - 11905: 0xBE84,\n\t32223 - 11905: 0xBE85,\n\t32224 - 11905: 0xBE86,\n\t32225 - 11905: 0xBE87,\n\t32226 - 11905: 0xBE88,\n\t32227 - 11905: 0xBE89,\n\t32228 - 11905: 0xBE8A,\n\t32229 - 11905: 0xBE8B,\n\t32230 - 11905: 0xBE8C,\n\t32231 - 11905: 0xBE8D,\n\t32232 - 11905: 0xBE8E,\n\t32233 - 11905: 0xBE8F,\n\t32234 - 11905: 0xBE90,\n\t32235 - 11905: 0xBE91,\n\t32236 - 11905: 0xBE92,\n\t32237 - 11905: 0xBE93,\n\t32238 - 11905: 0xBE94,\n\t32239 - 11905: 0xBE95,\n\t32240 - 11905: 0xBE96,\n\t32241 - 11905: 0xBE97,\n\t32242 - 11905: 0xBE98,\n\t32243 - 11905: 0xBE99,\n\t32244 - 11905: 0xBE9A,\n\t32245 - 11905: 0xBE9B,\n\t32246 - 11905: 0xBE9C,\n\t32247 - 11905: 0xBE9D,\n\t32248 - 11905: 0xBE9E,\n\t32249 - 11905: 0xBE9F,\n\t32250 - 11905: 0xBEA0,\n\t32251 - 11905: 0xBF40,\n\t32252 - 11905: 0xBF41,\n\t32253 - 11905: 0xBF42,\n\t32254 - 11905: 0xBF43,\n\t32255 - 11905: 0xBF44,\n\t32256 - 11905: 0xBF45,\n\t32257 - 11905: 0xBF46,\n\t32258 - 11905: 0xBF47,\n\t32259 - 11905: 0xBF48,\n\t32260 - 11905: 0xBF49,\n\t32261 - 11905: 0xBF4A,\n\t32262 - 11905: 0xBF4B,\n\t32263 - 11905: 0xBF4C,\n\t32264 - 11905: 0xBF4D,\n\t32265 - 11905: 0xBF4E,\n\t32266 - 11905: 0xBF4F,\n\t32267 - 11905: 0xBF50,\n\t32268 - 11905: 0xBF51,\n\t32269 - 11905: 0xBF52,\n\t32270 - 11905: 0xBF53,\n\t32271 - 11905: 0xBF54,\n\t32272 - 11905: 0xBF55,\n\t32273 - 11905: 0xBF56,\n\t32274 - 11905: 0xBF57,\n\t32275 - 11905: 0xBF58,\n\t32276 - 11905: 0xBF59,\n\t32277 - 11905: 0xBF5A,\n\t32278 - 11905: 0xBF5B,\n\t32279 - 11905: 0xBF5C,\n\t32280 - 11905: 0xBF5D,\n\t32281 - 11905: 0xBF5E,\n\t32282 - 11905: 0xBF5F,\n\t32283 - 11905: 0xBF60,\n\t32284 - 11905: 0xBF61,\n\t32285 - 11905: 0xBF62,\n\t32286 - 11905: 0xBF63,\n\t32287 - 11905: 0xBF64,\n\t32288 - 11905: 0xBF65,\n\t32289 - 11905: 0xBF66,\n\t32290 - 11905: 0xBF67,\n\t32291 - 11905: 0xBF68,\n\t32292 - 11905: 0xBF69,\n\t32293 - 11905: 0xBF6A,\n\t32294 - 11905: 0xBF6B,\n\t32295 - 11905: 0xBF6C,\n\t32296 - 11905: 0xBF6D,\n\t32297 - 11905: 0xBF6E,\n\t32298 - 11905: 0xBF6F,\n\t32299 - 11905: 0xBF70,\n\t32300 - 11905: 0xBF71,\n\t32301 - 11905: 0xBF72,\n\t32302 - 11905: 0xBF73,\n\t32303 - 11905: 0xBF74,\n\t32304 - 11905: 0xBF75,\n\t32305 - 11905: 0xBF76,\n\t32306 - 11905: 0xBF77,\n\t32307 - 11905: 0xBF78,\n\t32308 - 11905: 0xBF79,\n\t32309 - 11905: 0xBF7A,\n\t32310 - 11905: 0xBF7B,\n\t32311 - 11905: 0xBF7C,\n\t32312 - 11905: 0xBF7D,\n\t32313 - 11905: 0xBF7E,\n\t32314 - 11905: 0xBF80,\n\t32315 - 11905: 0xF7E3,\n\t32316 - 11905: 0xBF81,\n\t32317 - 11905: 0xBF82,\n\t32318 - 11905: 0xBF83,\n\t32319 - 11905: 0xBF84,\n\t32320 - 11905: 0xBF85,\n\t32321 - 11905: 0xB7B1,\n\t32322 - 11905: 0xBF86,\n\t32323 - 11905: 0xBF87,\n\t32324 - 11905: 0xBF88,\n\t32325 - 11905: 0xBF89,\n\t32326 - 11905: 0xBF8A,\n\t32327 - 11905: 0xF4ED,\n\t32328 - 11905: 0xBF8B,\n\t32329 - 11905: 0xBF8C,\n\t32330 - 11905: 0xBF8D,\n\t32331 - 11905: 0xBF8E,\n\t32332 - 11905: 0xBF8F,\n\t32333 - 11905: 0xBF90,\n\t32334 - 11905: 0xBF91,\n\t32335 - 11905: 0xBF92,\n\t32336 - 11905: 0xBF93,\n\t32337 - 11905: 0xBF94,\n\t32338 - 11905: 0xBF95,\n\t32339 - 11905: 0xBF96,\n\t32340 - 11905: 0xBF97,\n\t32341 - 11905: 0xBF98,\n\t32342 - 11905: 0xBF99,\n\t32343 - 11905: 0xBF9A,\n\t32344 - 11905: 0xBF9B,\n\t32345 - 11905: 0xBF9C,\n\t32346 - 11905: 0xBF9D,\n\t32347 - 11905: 0xBF9E,\n\t32348 - 11905: 0xBF9F,\n\t32349 - 11905: 0xBFA0,\n\t32350 - 11905: 0xC040,\n\t32351 - 11905: 0xC041,\n\t32352 - 11905: 0xC042,\n\t32353 - 11905: 0xC043,\n\t32354 - 11905: 0xC044,\n\t32355 - 11905: 0xC045,\n\t32356 - 11905: 0xC046,\n\t32357 - 11905: 0xC047,\n\t32358 - 11905: 0xC048,\n\t32359 - 11905: 0xC049,\n\t32360 - 11905: 0xC04A,\n\t32361 - 11905: 0xC04B,\n\t32362 - 11905: 0xC04C,\n\t32363 - 11905: 0xC04D,\n\t32364 - 11905: 0xC04E,\n\t32365 - 11905: 0xC04F,\n\t32366 - 11905: 0xC050,\n\t32367 - 11905: 0xC051,\n\t32368 - 11905: 0xC052,\n\t32369 - 11905: 0xC053,\n\t32370 - 11905: 0xC054,\n\t32371 - 11905: 0xC055,\n\t32372 - 11905: 0xC056,\n\t32373 - 11905: 0xC057,\n\t32374 - 11905: 0xC058,\n\t32375 - 11905: 0xC059,\n\t32376 - 11905: 0xC05A,\n\t32377 - 11905: 0xC05B,\n\t32378 - 11905: 0xC05C,\n\t32379 - 11905: 0xC05D,\n\t32380 - 11905: 0xC05E,\n\t32381 - 11905: 0xC05F,\n\t32382 - 11905: 0xC060,\n\t32383 - 11905: 0xC061,\n\t32384 - 11905: 0xC062,\n\t32385 - 11905: 0xC063,\n\t32386 - 11905: 0xD7EB,\n\t32387 - 11905: 0xC064,\n\t32388 - 11905: 0xC065,\n\t32389 - 11905: 0xC066,\n\t32390 - 11905: 0xC067,\n\t32391 - 11905: 0xC068,\n\t32392 - 11905: 0xC069,\n\t32393 - 11905: 0xC06A,\n\t32394 - 11905: 0xC06B,\n\t32395 - 11905: 0xC06C,\n\t32396 - 11905: 0xC06D,\n\t32397 - 11905: 0xC06E,\n\t32398 - 11905: 0xC06F,\n\t32399 - 11905: 0xC070,\n\t32400 - 11905: 0xC071,\n\t32401 - 11905: 0xC072,\n\t32402 - 11905: 0xC073,\n\t32403 - 11905: 0xC074,\n\t32404 - 11905: 0xC075,\n\t32405 - 11905: 0xC076,\n\t32406 - 11905: 0xC077,\n\t32407 - 11905: 0xC078,\n\t32408 - 11905: 0xC079,\n\t32409 - 11905: 0xC07A,\n\t32410 - 11905: 0xC07B,\n\t32411 - 11905: 0xF4EE,\n\t32412 - 11905: 0xC07C,\n\t32413 - 11905: 0xC07D,\n\t32414 - 11905: 0xC07E,\n\t32415 - 11905: 0xE6F9,\n\t32416 - 11905: 0xBEC0,\n\t32417 - 11905: 0xE6FA,\n\t32418 - 11905: 0xBAEC,\n\t32419 - 11905: 0xE6FB,\n\t32420 - 11905: 0xCFCB,\n\t32421 - 11905: 0xE6FC,\n\t32422 - 11905: 0xD4BC,\n\t32423 - 11905: 0xBCB6,\n\t32424 - 11905: 0xE6FD,\n\t32425 - 11905: 0xE6FE,\n\t32426 - 11905: 0xBCCD,\n\t32427 - 11905: 0xC8D2,\n\t32428 - 11905: 0xCEB3,\n\t32429 - 11905: 0xE7A1,\n\t32430 - 11905: 0xC080,\n\t32431 - 11905: 0xB4BF,\n\t32432 - 11905: 0xE7A2,\n\t32433 - 11905: 0xC9B4,\n\t32434 - 11905: 0xB8D9,\n\t32435 - 11905: 0xC4C9,\n\t32436 - 11905: 0xC081,\n\t32437 - 11905: 0xD7DD,\n\t32438 - 11905: 0xC2DA,\n\t32439 - 11905: 0xB7D7,\n\t32440 - 11905: 0xD6BD,\n\t32441 - 11905: 0xCEC6,\n\t32442 - 11905: 0xB7C4,\n\t32443 - 11905: 0xC082,\n\t32444 - 11905: 0xC083,\n\t32445 - 11905: 0xC5A6,\n\t32446 - 11905: 0xE7A3,\n\t32447 - 11905: 0xCFDF,\n\t32448 - 11905: 0xE7A4,\n\t32449 - 11905: 0xE7A5,\n\t32450 - 11905: 0xE7A6,\n\t32451 - 11905: 0xC1B7,\n\t32452 - 11905: 0xD7E9,\n\t32453 - 11905: 0xC9F0,\n\t32454 - 11905: 0xCFB8,\n\t32455 - 11905: 0xD6AF,\n\t32456 - 11905: 0xD6D5,\n\t32457 - 11905: 0xE7A7,\n\t32458 - 11905: 0xB0ED,\n\t32459 - 11905: 0xE7A8,\n\t32460 - 11905: 0xE7A9,\n\t32461 - 11905: 0xC9DC,\n\t32462 - 11905: 0xD2EF,\n\t32463 - 11905: 0xBEAD,\n\t32464 - 11905: 0xE7AA,\n\t32465 - 11905: 0xB0F3,\n\t32466 - 11905: 0xC8DE,\n\t32467 - 11905: 0xBDE1,\n\t32468 - 11905: 0xE7AB,\n\t32469 - 11905: 0xC8C6,\n\t32470 - 11905: 0xC084,\n\t32471 - 11905: 0xE7AC,\n\t32472 - 11905: 0xBBE6,\n\t32473 - 11905: 0xB8F8,\n\t32474 - 11905: 0xD1A4,\n\t32475 - 11905: 0xE7AD,\n\t32476 - 11905: 0xC2E7,\n\t32477 - 11905: 0xBEF8,\n\t32478 - 11905: 0xBDCA,\n\t32479 - 11905: 0xCDB3,\n\t32480 - 11905: 0xE7AE,\n\t32481 - 11905: 0xE7AF,\n\t32482 - 11905: 0xBEEE,\n\t32483 - 11905: 0xD0E5,\n\t32484 - 11905: 0xC085,\n\t32485 - 11905: 0xCBE7,\n\t32486 - 11905: 0xCCD0,\n\t32487 - 11905: 0xBCCC,\n\t32488 - 11905: 0xE7B0,\n\t32489 - 11905: 0xBCA8,\n\t32490 - 11905: 0xD0F7,\n\t32491 - 11905: 0xE7B1,\n\t32492 - 11905: 0xC086,\n\t32493 - 11905: 0xD0F8,\n\t32494 - 11905: 0xE7B2,\n\t32495 - 11905: 0xE7B3,\n\t32496 - 11905: 0xB4C2,\n\t32497 - 11905: 0xE7B4,\n\t32498 - 11905: 0xE7B5,\n\t32499 - 11905: 0xC9FE,\n\t32500 - 11905: 0xCEAC,\n\t32501 - 11905: 0xC3E0,\n\t32502 - 11905: 0xE7B7,\n\t32503 - 11905: 0xB1C1,\n\t32504 - 11905: 0xB3F1,\n\t32505 - 11905: 0xC087,\n\t32506 - 11905: 0xE7B8,\n\t32507 - 11905: 0xE7B9,\n\t32508 - 11905: 0xD7DB,\n\t32509 - 11905: 0xD5C0,\n\t32510 - 11905: 0xE7BA,\n\t32511 - 11905: 0xC2CC,\n\t32512 - 11905: 0xD7BA,\n\t32513 - 11905: 0xE7BB,\n\t32514 - 11905: 0xE7BC,\n\t32515 - 11905: 0xE7BD,\n\t32516 - 11905: 0xBCEA,\n\t32517 - 11905: 0xC3E5,\n\t32518 - 11905: 0xC0C2,\n\t32519 - 11905: 0xE7BE,\n\t32520 - 11905: 0xE7BF,\n\t32521 - 11905: 0xBCA9,\n\t32522 - 11905: 0xC088,\n\t32523 - 11905: 0xE7C0,\n\t32524 - 11905: 0xE7C1,\n\t32525 - 11905: 0xE7B6,\n\t32526 - 11905: 0xB6D0,\n\t32527 - 11905: 0xE7C2,\n\t32528 - 11905: 0xC089,\n\t32529 - 11905: 0xE7C3,\n\t32530 - 11905: 0xE7C4,\n\t32531 - 11905: 0xBBBA,\n\t32532 - 11905: 0xB5DE,\n\t32533 - 11905: 0xC2C6,\n\t32534 - 11905: 0xB1E0,\n\t32535 - 11905: 0xE7C5,\n\t32536 - 11905: 0xD4B5,\n\t32537 - 11905: 0xE7C6,\n\t32538 - 11905: 0xB8BF,\n\t32539 - 11905: 0xE7C8,\n\t32540 - 11905: 0xE7C7,\n\t32541 - 11905: 0xB7EC,\n\t32542 - 11905: 0xC08A,\n\t32543 - 11905: 0xE7C9,\n\t32544 - 11905: 0xB2F8,\n\t32545 - 11905: 0xE7CA,\n\t32546 - 11905: 0xE7CB,\n\t32547 - 11905: 0xE7CC,\n\t32548 - 11905: 0xE7CD,\n\t32549 - 11905: 0xE7CE,\n\t32550 - 11905: 0xE7CF,\n\t32551 - 11905: 0xE7D0,\n\t32552 - 11905: 0xD3A7,\n\t32553 - 11905: 0xCBF5,\n\t32554 - 11905: 0xE7D1,\n\t32555 - 11905: 0xE7D2,\n\t32556 - 11905: 0xE7D3,\n\t32557 - 11905: 0xE7D4,\n\t32558 - 11905: 0xC9C9,\n\t32559 - 11905: 0xE7D5,\n\t32560 - 11905: 0xE7D6,\n\t32561 - 11905: 0xE7D7,\n\t32562 - 11905: 0xE7D8,\n\t32563 - 11905: 0xE7D9,\n\t32564 - 11905: 0xBDC9,\n\t32565 - 11905: 0xE7DA,\n\t32566 - 11905: 0xF3BE,\n\t32567 - 11905: 0xC08B,\n\t32568 - 11905: 0xB8D7,\n\t32569 - 11905: 0xC08C,\n\t32570 - 11905: 0xC8B1,\n\t32571 - 11905: 0xC08D,\n\t32572 - 11905: 0xC08E,\n\t32573 - 11905: 0xC08F,\n\t32574 - 11905: 0xC090,\n\t32575 - 11905: 0xC091,\n\t32576 - 11905: 0xC092,\n\t32577 - 11905: 0xC093,\n\t32578 - 11905: 0xF3BF,\n\t32579 - 11905: 0xC094,\n\t32580 - 11905: 0xF3C0,\n\t32581 - 11905: 0xF3C1,\n\t32582 - 11905: 0xC095,\n\t32583 - 11905: 0xC096,\n\t32584 - 11905: 0xC097,\n\t32585 - 11905: 0xC098,\n\t32586 - 11905: 0xC099,\n\t32587 - 11905: 0xC09A,\n\t32588 - 11905: 0xC09B,\n\t32589 - 11905: 0xC09C,\n\t32590 - 11905: 0xC09D,\n\t32591 - 11905: 0xC09E,\n\t32592 - 11905: 0xB9DE,\n\t32593 - 11905: 0xCDF8,\n\t32594 - 11905: 0xC09F,\n\t32595 - 11905: 0xC0A0,\n\t32596 - 11905: 0xD8E8,\n\t32597 - 11905: 0xBAB1,\n\t32598 - 11905: 0xC140,\n\t32599 - 11905: 0xC2DE,\n\t32600 - 11905: 0xEEB7,\n\t32601 - 11905: 0xC141,\n\t32602 - 11905: 0xB7A3,\n\t32603 - 11905: 0xC142,\n\t32604 - 11905: 0xC143,\n\t32605 - 11905: 0xC144,\n\t32606 - 11905: 0xC145,\n\t32607 - 11905: 0xEEB9,\n\t32608 - 11905: 0xC146,\n\t32609 - 11905: 0xEEB8,\n\t32610 - 11905: 0xB0D5,\n\t32611 - 11905: 0xC147,\n\t32612 - 11905: 0xC148,\n\t32613 - 11905: 0xC149,\n\t32614 - 11905: 0xC14A,\n\t32615 - 11905: 0xC14B,\n\t32616 - 11905: 0xEEBB,\n\t32617 - 11905: 0xD5D6,\n\t32618 - 11905: 0xD7EF,\n\t32619 - 11905: 0xC14C,\n\t32620 - 11905: 0xC14D,\n\t32621 - 11905: 0xC14E,\n\t32622 - 11905: 0xD6C3,\n\t32623 - 11905: 0xC14F,\n\t32624 - 11905: 0xC150,\n\t32625 - 11905: 0xEEBD,\n\t32626 - 11905: 0xCAF0,\n\t32627 - 11905: 0xC151,\n\t32628 - 11905: 0xEEBC,\n\t32629 - 11905: 0xC152,\n\t32630 - 11905: 0xC153,\n\t32631 - 11905: 0xC154,\n\t32632 - 11905: 0xC155,\n\t32633 - 11905: 0xEEBE,\n\t32634 - 11905: 0xC156,\n\t32635 - 11905: 0xC157,\n\t32636 - 11905: 0xC158,\n\t32637 - 11905: 0xC159,\n\t32638 - 11905: 0xEEC0,\n\t32639 - 11905: 0xC15A,\n\t32640 - 11905: 0xC15B,\n\t32641 - 11905: 0xEEBF,\n\t32642 - 11905: 0xC15C,\n\t32643 - 11905: 0xC15D,\n\t32644 - 11905: 0xC15E,\n\t32645 - 11905: 0xC15F,\n\t32646 - 11905: 0xC160,\n\t32647 - 11905: 0xC161,\n\t32648 - 11905: 0xC162,\n\t32649 - 11905: 0xC163,\n\t32650 - 11905: 0xD1F2,\n\t32651 - 11905: 0xC164,\n\t32652 - 11905: 0xC7BC,\n\t32653 - 11905: 0xC165,\n\t32654 - 11905: 0xC3C0,\n\t32655 - 11905: 0xC166,\n\t32656 - 11905: 0xC167,\n\t32657 - 11905: 0xC168,\n\t32658 - 11905: 0xC169,\n\t32659 - 11905: 0xC16A,\n\t32660 - 11905: 0xB8E1,\n\t32661 - 11905: 0xC16B,\n\t32662 - 11905: 0xC16C,\n\t32663 - 11905: 0xC16D,\n\t32664 - 11905: 0xC16E,\n\t32665 - 11905: 0xC16F,\n\t32666 - 11905: 0xC1E7,\n\t32667 - 11905: 0xC170,\n\t32668 - 11905: 0xC171,\n\t32669 - 11905: 0xF4C6,\n\t32670 - 11905: 0xD0DF,\n\t32671 - 11905: 0xF4C7,\n\t32672 - 11905: 0xC172,\n\t32673 - 11905: 0xCFDB,\n\t32674 - 11905: 0xC173,\n\t32675 - 11905: 0xC174,\n\t32676 - 11905: 0xC8BA,\n\t32677 - 11905: 0xC175,\n\t32678 - 11905: 0xC176,\n\t32679 - 11905: 0xF4C8,\n\t32680 - 11905: 0xC177,\n\t32681 - 11905: 0xC178,\n\t32682 - 11905: 0xC179,\n\t32683 - 11905: 0xC17A,\n\t32684 - 11905: 0xC17B,\n\t32685 - 11905: 0xC17C,\n\t32686 - 11905: 0xC17D,\n\t32687 - 11905: 0xF4C9,\n\t32688 - 11905: 0xF4CA,\n\t32689 - 11905: 0xC17E,\n\t32690 - 11905: 0xF4CB,\n\t32691 - 11905: 0xC180,\n\t32692 - 11905: 0xC181,\n\t32693 - 11905: 0xC182,\n\t32694 - 11905: 0xC183,\n\t32695 - 11905: 0xC184,\n\t32696 - 11905: 0xD9FA,\n\t32697 - 11905: 0xB8FE,\n\t32698 - 11905: 0xC185,\n\t32699 - 11905: 0xC186,\n\t32700 - 11905: 0xE5F1,\n\t32701 - 11905: 0xD3F0,\n\t32702 - 11905: 0xC187,\n\t32703 - 11905: 0xF4E0,\n\t32704 - 11905: 0xC188,\n\t32705 - 11905: 0xCECC,\n\t32706 - 11905: 0xC189,\n\t32707 - 11905: 0xC18A,\n\t32708 - 11905: 0xC18B,\n\t32709 - 11905: 0xB3E1,\n\t32710 - 11905: 0xC18C,\n\t32711 - 11905: 0xC18D,\n\t32712 - 11905: 0xC18E,\n\t32713 - 11905: 0xC18F,\n\t32714 - 11905: 0xF1B4,\n\t32715 - 11905: 0xC190,\n\t32716 - 11905: 0xD2EE,\n\t32717 - 11905: 0xC191,\n\t32718 - 11905: 0xF4E1,\n\t32719 - 11905: 0xC192,\n\t32720 - 11905: 0xC193,\n\t32721 - 11905: 0xC194,\n\t32722 - 11905: 0xC195,\n\t32723 - 11905: 0xC196,\n\t32724 - 11905: 0xCFE8,\n\t32725 - 11905: 0xF4E2,\n\t32726 - 11905: 0xC197,\n\t32727 - 11905: 0xC198,\n\t32728 - 11905: 0xC7CC,\n\t32729 - 11905: 0xC199,\n\t32730 - 11905: 0xC19A,\n\t32731 - 11905: 0xC19B,\n\t32732 - 11905: 0xC19C,\n\t32733 - 11905: 0xC19D,\n\t32734 - 11905: 0xC19E,\n\t32735 - 11905: 0xB5D4,\n\t32736 - 11905: 0xB4E4,\n\t32737 - 11905: 0xF4E4,\n\t32738 - 11905: 0xC19F,\n\t32739 - 11905: 0xC1A0,\n\t32740 - 11905: 0xC240,\n\t32741 - 11905: 0xF4E3,\n\t32742 - 11905: 0xF4E5,\n\t32743 - 11905: 0xC241,\n\t32744 - 11905: 0xC242,\n\t32745 - 11905: 0xF4E6,\n\t32746 - 11905: 0xC243,\n\t32747 - 11905: 0xC244,\n\t32748 - 11905: 0xC245,\n\t32749 - 11905: 0xC246,\n\t32750 - 11905: 0xF4E7,\n\t32751 - 11905: 0xC247,\n\t32752 - 11905: 0xBAB2,\n\t32753 - 11905: 0xB0BF,\n\t32754 - 11905: 0xC248,\n\t32755 - 11905: 0xF4E8,\n\t32756 - 11905: 0xC249,\n\t32757 - 11905: 0xC24A,\n\t32758 - 11905: 0xC24B,\n\t32759 - 11905: 0xC24C,\n\t32760 - 11905: 0xC24D,\n\t32761 - 11905: 0xC24E,\n\t32762 - 11905: 0xC24F,\n\t32763 - 11905: 0xB7AD,\n\t32764 - 11905: 0xD2ED,\n\t32765 - 11905: 0xC250,\n\t32766 - 11905: 0xC251,\n\t32767 - 11905: 0xC252,\n\t32768 - 11905: 0xD2AB,\n\t32769 - 11905: 0xC0CF,\n\t32770 - 11905: 0xC253,\n\t32771 - 11905: 0xBFBC,\n\t32772 - 11905: 0xEBA3,\n\t32773 - 11905: 0xD5DF,\n\t32774 - 11905: 0xEAC8,\n\t32775 - 11905: 0xC254,\n\t32776 - 11905: 0xC255,\n\t32777 - 11905: 0xC256,\n\t32778 - 11905: 0xC257,\n\t32779 - 11905: 0xF1F3,\n\t32780 - 11905: 0xB6F8,\n\t32781 - 11905: 0xCBA3,\n\t32782 - 11905: 0xC258,\n\t32783 - 11905: 0xC259,\n\t32784 - 11905: 0xC4CD,\n\t32785 - 11905: 0xC25A,\n\t32786 - 11905: 0xF1E7,\n\t32787 - 11905: 0xC25B,\n\t32788 - 11905: 0xF1E8,\n\t32789 - 11905: 0xB8FB,\n\t32790 - 11905: 0xF1E9,\n\t32791 - 11905: 0xBAC4,\n\t32792 - 11905: 0xD4C5,\n\t32793 - 11905: 0xB0D2,\n\t32794 - 11905: 0xC25C,\n\t32795 - 11905: 0xC25D,\n\t32796 - 11905: 0xF1EA,\n\t32797 - 11905: 0xC25E,\n\t32798 - 11905: 0xC25F,\n\t32799 - 11905: 0xC260,\n\t32800 - 11905: 0xF1EB,\n\t32801 - 11905: 0xC261,\n\t32802 - 11905: 0xF1EC,\n\t32803 - 11905: 0xC262,\n\t32804 - 11905: 0xC263,\n\t32805 - 11905: 0xF1ED,\n\t32806 - 11905: 0xF1EE,\n\t32807 - 11905: 0xF1EF,\n\t32808 - 11905: 0xF1F1,\n\t32809 - 11905: 0xF1F0,\n\t32810 - 11905: 0xC5D5,\n\t32811 - 11905: 0xC264,\n\t32812 - 11905: 0xC265,\n\t32813 - 11905: 0xC266,\n\t32814 - 11905: 0xC267,\n\t32815 - 11905: 0xC268,\n\t32816 - 11905: 0xC269,\n\t32817 - 11905: 0xF1F2,\n\t32818 - 11905: 0xC26A,\n\t32819 - 11905: 0xB6FA,\n\t32820 - 11905: 0xC26B,\n\t32821 - 11905: 0xF1F4,\n\t32822 - 11905: 0xD2AE,\n\t32823 - 11905: 0xDEC7,\n\t32824 - 11905: 0xCBCA,\n\t32825 - 11905: 0xC26C,\n\t32826 - 11905: 0xC26D,\n\t32827 - 11905: 0xB3DC,\n\t32828 - 11905: 0xC26E,\n\t32829 - 11905: 0xB5A2,\n\t32830 - 11905: 0xC26F,\n\t32831 - 11905: 0xB9A2,\n\t32832 - 11905: 0xC270,\n\t32833 - 11905: 0xC271,\n\t32834 - 11905: 0xC4F4,\n\t32835 - 11905: 0xF1F5,\n\t32836 - 11905: 0xC272,\n\t32837 - 11905: 0xC273,\n\t32838 - 11905: 0xF1F6,\n\t32839 - 11905: 0xC274,\n\t32840 - 11905: 0xC275,\n\t32841 - 11905: 0xC276,\n\t32842 - 11905: 0xC1C4,\n\t32843 - 11905: 0xC1FB,\n\t32844 - 11905: 0xD6B0,\n\t32845 - 11905: 0xF1F7,\n\t32846 - 11905: 0xC277,\n\t32847 - 11905: 0xC278,\n\t32848 - 11905: 0xC279,\n\t32849 - 11905: 0xC27A,\n\t32850 - 11905: 0xF1F8,\n\t32851 - 11905: 0xC27B,\n\t32852 - 11905: 0xC1AA,\n\t32853 - 11905: 0xC27C,\n\t32854 - 11905: 0xC27D,\n\t32855 - 11905: 0xC27E,\n\t32856 - 11905: 0xC6B8,\n\t32857 - 11905: 0xC280,\n\t32858 - 11905: 0xBEDB,\n\t32859 - 11905: 0xC281,\n\t32860 - 11905: 0xC282,\n\t32861 - 11905: 0xC283,\n\t32862 - 11905: 0xC284,\n\t32863 - 11905: 0xC285,\n\t32864 - 11905: 0xC286,\n\t32865 - 11905: 0xC287,\n\t32866 - 11905: 0xC288,\n\t32867 - 11905: 0xC289,\n\t32868 - 11905: 0xC28A,\n\t32869 - 11905: 0xC28B,\n\t32870 - 11905: 0xC28C,\n\t32871 - 11905: 0xC28D,\n\t32872 - 11905: 0xC28E,\n\t32873 - 11905: 0xF1F9,\n\t32874 - 11905: 0xB4CF,\n\t32875 - 11905: 0xC28F,\n\t32876 - 11905: 0xC290,\n\t32877 - 11905: 0xC291,\n\t32878 - 11905: 0xC292,\n\t32879 - 11905: 0xC293,\n\t32880 - 11905: 0xC294,\n\t32881 - 11905: 0xF1FA,\n\t32882 - 11905: 0xC295,\n\t32883 - 11905: 0xC296,\n\t32884 - 11905: 0xC297,\n\t32885 - 11905: 0xC298,\n\t32886 - 11905: 0xC299,\n\t32887 - 11905: 0xC29A,\n\t32888 - 11905: 0xC29B,\n\t32889 - 11905: 0xC29C,\n\t32890 - 11905: 0xC29D,\n\t32891 - 11905: 0xC29E,\n\t32892 - 11905: 0xC29F,\n\t32893 - 11905: 0xC2A0,\n\t32894 - 11905: 0xC340,\n\t32895 - 11905: 0xEDB2,\n\t32896 - 11905: 0xEDB1,\n\t32897 - 11905: 0xC341,\n\t32898 - 11905: 0xC342,\n\t32899 - 11905: 0xCBE0,\n\t32900 - 11905: 0xD2DE,\n\t32901 - 11905: 0xC343,\n\t32902 - 11905: 0xCBC1,\n\t32903 - 11905: 0xD5D8,\n\t32904 - 11905: 0xC344,\n\t32905 - 11905: 0xC8E2,\n\t32906 - 11905: 0xC345,\n\t32907 - 11905: 0xC0DF,\n\t32908 - 11905: 0xBCA1,\n\t32909 - 11905: 0xC346,\n\t32910 - 11905: 0xC347,\n\t32911 - 11905: 0xC348,\n\t32912 - 11905: 0xC349,\n\t32913 - 11905: 0xC34A,\n\t32914 - 11905: 0xC34B,\n\t32915 - 11905: 0xEBC1,\n\t32916 - 11905: 0xC34C,\n\t32917 - 11905: 0xC34D,\n\t32918 - 11905: 0xD0A4,\n\t32919 - 11905: 0xC34E,\n\t32920 - 11905: 0xD6E2,\n\t32921 - 11905: 0xC34F,\n\t32922 - 11905: 0xB6C7,\n\t32923 - 11905: 0xB8D8,\n\t32924 - 11905: 0xEBC0,\n\t32925 - 11905: 0xB8CE,\n\t32926 - 11905: 0xC350,\n\t32927 - 11905: 0xEBBF,\n\t32928 - 11905: 0xB3A6,\n\t32929 - 11905: 0xB9C9,\n\t32930 - 11905: 0xD6AB,\n\t32931 - 11905: 0xC351,\n\t32932 - 11905: 0xB7F4,\n\t32933 - 11905: 0xB7CA,\n\t32934 - 11905: 0xC352,\n\t32935 - 11905: 0xC353,\n\t32936 - 11905: 0xC354,\n\t32937 - 11905: 0xBCE7,\n\t32938 - 11905: 0xB7BE,\n\t32939 - 11905: 0xEBC6,\n\t32940 - 11905: 0xC355,\n\t32941 - 11905: 0xEBC7,\n\t32942 - 11905: 0xB0B9,\n\t32943 - 11905: 0xBFCF,\n\t32944 - 11905: 0xC356,\n\t32945 - 11905: 0xEBC5,\n\t32946 - 11905: 0xD3FD,\n\t32947 - 11905: 0xC357,\n\t32948 - 11905: 0xEBC8,\n\t32949 - 11905: 0xC358,\n\t32950 - 11905: 0xC359,\n\t32951 - 11905: 0xEBC9,\n\t32952 - 11905: 0xC35A,\n\t32953 - 11905: 0xC35B,\n\t32954 - 11905: 0xB7CE,\n\t32955 - 11905: 0xC35C,\n\t32956 - 11905: 0xEBC2,\n\t32957 - 11905: 0xEBC4,\n\t32958 - 11905: 0xC9F6,\n\t32959 - 11905: 0xD6D7,\n\t32960 - 11905: 0xD5CD,\n\t32961 - 11905: 0xD0B2,\n\t32962 - 11905: 0xEBCF,\n\t32963 - 11905: 0xCEB8,\n\t32964 - 11905: 0xEBD0,\n\t32965 - 11905: 0xC35D,\n\t32966 - 11905: 0xB5A8,\n\t32967 - 11905: 0xC35E,\n\t32968 - 11905: 0xC35F,\n\t32969 - 11905: 0xC360,\n\t32970 - 11905: 0xC361,\n\t32971 - 11905: 0xC362,\n\t32972 - 11905: 0xB1B3,\n\t32973 - 11905: 0xEBD2,\n\t32974 - 11905: 0xCCA5,\n\t32975 - 11905: 0xC363,\n\t32976 - 11905: 0xC364,\n\t32977 - 11905: 0xC365,\n\t32978 - 11905: 0xC366,\n\t32979 - 11905: 0xC367,\n\t32980 - 11905: 0xC368,\n\t32981 - 11905: 0xC369,\n\t32982 - 11905: 0xC5D6,\n\t32983 - 11905: 0xEBD3,\n\t32984 - 11905: 0xC36A,\n\t32985 - 11905: 0xEBD1,\n\t32986 - 11905: 0xC5DF,\n\t32987 - 11905: 0xEBCE,\n\t32988 - 11905: 0xCAA4,\n\t32989 - 11905: 0xEBD5,\n\t32990 - 11905: 0xB0FB,\n\t32991 - 11905: 0xC36B,\n\t32992 - 11905: 0xC36C,\n\t32993 - 11905: 0xBAFA,\n\t32994 - 11905: 0xC36D,\n\t32995 - 11905: 0xC36E,\n\t32996 - 11905: 0xD8B7,\n\t32997 - 11905: 0xF1E3,\n\t32998 - 11905: 0xC36F,\n\t32999 - 11905: 0xEBCA,\n\t33000 - 11905: 0xEBCB,\n\t33001 - 11905: 0xEBCC,\n\t33002 - 11905: 0xEBCD,\n\t33003 - 11905: 0xEBD6,\n\t33004 - 11905: 0xE6C0,\n\t33005 - 11905: 0xEBD9,\n\t33006 - 11905: 0xC370,\n\t33007 - 11905: 0xBFE8,\n\t33008 - 11905: 0xD2C8,\n\t33009 - 11905: 0xEBD7,\n\t33010 - 11905: 0xEBDC,\n\t33011 - 11905: 0xB8EC,\n\t33012 - 11905: 0xEBD8,\n\t33013 - 11905: 0xC371,\n\t33014 - 11905: 0xBDBA,\n\t33015 - 11905: 0xC372,\n\t33016 - 11905: 0xD0D8,\n\t33017 - 11905: 0xC373,\n\t33018 - 11905: 0xB0B7,\n\t33019 - 11905: 0xC374,\n\t33020 - 11905: 0xEBDD,\n\t33021 - 11905: 0xC4DC,\n\t33022 - 11905: 0xC375,\n\t33023 - 11905: 0xC376,\n\t33024 - 11905: 0xC377,\n\t33025 - 11905: 0xC378,\n\t33026 - 11905: 0xD6AC,\n\t33027 - 11905: 0xC379,\n\t33028 - 11905: 0xC37A,\n\t33029 - 11905: 0xC37B,\n\t33030 - 11905: 0xB4E0,\n\t33031 - 11905: 0xC37C,\n\t33032 - 11905: 0xC37D,\n\t33033 - 11905: 0xC2F6,\n\t33034 - 11905: 0xBCB9,\n\t33035 - 11905: 0xC37E,\n\t33036 - 11905: 0xC380,\n\t33037 - 11905: 0xEBDA,\n\t33038 - 11905: 0xEBDB,\n\t33039 - 11905: 0xD4E0,\n\t33040 - 11905: 0xC6EA,\n\t33041 - 11905: 0xC4D4,\n\t33042 - 11905: 0xEBDF,\n\t33043 - 11905: 0xC5A7,\n\t33044 - 11905: 0xD9F5,\n\t33045 - 11905: 0xC381,\n\t33046 - 11905: 0xB2B1,\n\t33047 - 11905: 0xC382,\n\t33048 - 11905: 0xEBE4,\n\t33049 - 11905: 0xC383,\n\t33050 - 11905: 0xBDC5,\n\t33051 - 11905: 0xC384,\n\t33052 - 11905: 0xC385,\n\t33053 - 11905: 0xC386,\n\t33054 - 11905: 0xEBE2,\n\t33055 - 11905: 0xC387,\n\t33056 - 11905: 0xC388,\n\t33057 - 11905: 0xC389,\n\t33058 - 11905: 0xC38A,\n\t33059 - 11905: 0xC38B,\n\t33060 - 11905: 0xC38C,\n\t33061 - 11905: 0xC38D,\n\t33062 - 11905: 0xC38E,\n\t33063 - 11905: 0xC38F,\n\t33064 - 11905: 0xC390,\n\t33065 - 11905: 0xC391,\n\t33066 - 11905: 0xC392,\n\t33067 - 11905: 0xC393,\n\t33068 - 11905: 0xEBE3,\n\t33069 - 11905: 0xC394,\n\t33070 - 11905: 0xC395,\n\t33071 - 11905: 0xB8AC,\n\t33072 - 11905: 0xC396,\n\t33073 - 11905: 0xCDD1,\n\t33074 - 11905: 0xEBE5,\n\t33075 - 11905: 0xC397,\n\t33076 - 11905: 0xC398,\n\t33077 - 11905: 0xC399,\n\t33078 - 11905: 0xEBE1,\n\t33079 - 11905: 0xC39A,\n\t33080 - 11905: 0xC1B3,\n\t33081 - 11905: 0xC39B,\n\t33082 - 11905: 0xC39C,\n\t33083 - 11905: 0xC39D,\n\t33084 - 11905: 0xC39E,\n\t33085 - 11905: 0xC39F,\n\t33086 - 11905: 0xC6A2,\n\t33087 - 11905: 0xC3A0,\n\t33088 - 11905: 0xC440,\n\t33089 - 11905: 0xC441,\n\t33090 - 11905: 0xC442,\n\t33091 - 11905: 0xC443,\n\t33092 - 11905: 0xC444,\n\t33093 - 11905: 0xC445,\n\t33094 - 11905: 0xCCF3,\n\t33095 - 11905: 0xC446,\n\t33096 - 11905: 0xEBE6,\n\t33097 - 11905: 0xC447,\n\t33098 - 11905: 0xC0B0,\n\t33099 - 11905: 0xD2B8,\n\t33100 - 11905: 0xEBE7,\n\t33101 - 11905: 0xC448,\n\t33102 - 11905: 0xC449,\n\t33103 - 11905: 0xC44A,\n\t33104 - 11905: 0xB8AF,\n\t33105 - 11905: 0xB8AD,\n\t33106 - 11905: 0xC44B,\n\t33107 - 11905: 0xEBE8,\n\t33108 - 11905: 0xC7BB,\n\t33109 - 11905: 0xCDF3,\n\t33110 - 11905: 0xC44C,\n\t33111 - 11905: 0xC44D,\n\t33112 - 11905: 0xC44E,\n\t33113 - 11905: 0xEBEA,\n\t33114 - 11905: 0xEBEB,\n\t33115 - 11905: 0xC44F,\n\t33116 - 11905: 0xC450,\n\t33117 - 11905: 0xC451,\n\t33118 - 11905: 0xC452,\n\t33119 - 11905: 0xC453,\n\t33120 - 11905: 0xEBED,\n\t33121 - 11905: 0xC454,\n\t33122 - 11905: 0xC455,\n\t33123 - 11905: 0xC456,\n\t33124 - 11905: 0xC457,\n\t33125 - 11905: 0xD0C8,\n\t33126 - 11905: 0xC458,\n\t33127 - 11905: 0xEBF2,\n\t33128 - 11905: 0xC459,\n\t33129 - 11905: 0xEBEE,\n\t33130 - 11905: 0xC45A,\n\t33131 - 11905: 0xC45B,\n\t33132 - 11905: 0xC45C,\n\t33133 - 11905: 0xEBF1,\n\t33134 - 11905: 0xC8F9,\n\t33135 - 11905: 0xC45D,\n\t33136 - 11905: 0xD1FC,\n\t33137 - 11905: 0xEBEC,\n\t33138 - 11905: 0xC45E,\n\t33139 - 11905: 0xC45F,\n\t33140 - 11905: 0xEBE9,\n\t33141 - 11905: 0xC460,\n\t33142 - 11905: 0xC461,\n\t33143 - 11905: 0xC462,\n\t33144 - 11905: 0xC463,\n\t33145 - 11905: 0xB8B9,\n\t33146 - 11905: 0xCFD9,\n\t33147 - 11905: 0xC4E5,\n\t33148 - 11905: 0xEBEF,\n\t33149 - 11905: 0xEBF0,\n\t33150 - 11905: 0xCCDA,\n\t33151 - 11905: 0xCDC8,\n\t33152 - 11905: 0xB0F2,\n\t33153 - 11905: 0xC464,\n\t33154 - 11905: 0xEBF6,\n\t33155 - 11905: 0xC465,\n\t33156 - 11905: 0xC466,\n\t33157 - 11905: 0xC467,\n\t33158 - 11905: 0xC468,\n\t33159 - 11905: 0xC469,\n\t33160 - 11905: 0xEBF5,\n\t33161 - 11905: 0xC46A,\n\t33162 - 11905: 0xB2B2,\n\t33163 - 11905: 0xC46B,\n\t33164 - 11905: 0xC46C,\n\t33165 - 11905: 0xC46D,\n\t33166 - 11905: 0xC46E,\n\t33167 - 11905: 0xB8E0,\n\t33168 - 11905: 0xC46F,\n\t33169 - 11905: 0xEBF7,\n\t33170 - 11905: 0xC470,\n\t33171 - 11905: 0xC471,\n\t33172 - 11905: 0xC472,\n\t33173 - 11905: 0xC473,\n\t33174 - 11905: 0xC474,\n\t33175 - 11905: 0xC475,\n\t33176 - 11905: 0xB1EC,\n\t33177 - 11905: 0xC476,\n\t33178 - 11905: 0xC477,\n\t33179 - 11905: 0xCCC5,\n\t33180 - 11905: 0xC4A4,\n\t33181 - 11905: 0xCFA5,\n\t33182 - 11905: 0xC478,\n\t33183 - 11905: 0xC479,\n\t33184 - 11905: 0xC47A,\n\t33185 - 11905: 0xC47B,\n\t33186 - 11905: 0xC47C,\n\t33187 - 11905: 0xEBF9,\n\t33188 - 11905: 0xC47D,\n\t33189 - 11905: 0xC47E,\n\t33190 - 11905: 0xECA2,\n\t33191 - 11905: 0xC480,\n\t33192 - 11905: 0xC5F2,\n\t33193 - 11905: 0xC481,\n\t33194 - 11905: 0xEBFA,\n\t33195 - 11905: 0xC482,\n\t33196 - 11905: 0xC483,\n\t33197 - 11905: 0xC484,\n\t33198 - 11905: 0xC485,\n\t33199 - 11905: 0xC486,\n\t33200 - 11905: 0xC487,\n\t33201 - 11905: 0xC488,\n\t33202 - 11905: 0xC489,\n\t33203 - 11905: 0xC9C5,\n\t33204 - 11905: 0xC48A,\n\t33205 - 11905: 0xC48B,\n\t33206 - 11905: 0xC48C,\n\t33207 - 11905: 0xC48D,\n\t33208 - 11905: 0xC48E,\n\t33209 - 11905: 0xC48F,\n\t33210 - 11905: 0xE2DF,\n\t33211 - 11905: 0xEBFE,\n\t33212 - 11905: 0xC490,\n\t33213 - 11905: 0xC491,\n\t33214 - 11905: 0xC492,\n\t33215 - 11905: 0xC493,\n\t33216 - 11905: 0xCDCE,\n\t33217 - 11905: 0xECA1,\n\t33218 - 11905: 0xB1DB,\n\t33219 - 11905: 0xD3B7,\n\t33220 - 11905: 0xC494,\n\t33221 - 11905: 0xC495,\n\t33222 - 11905: 0xD2DC,\n\t33223 - 11905: 0xC496,\n\t33224 - 11905: 0xC497,\n\t33225 - 11905: 0xC498,\n\t33226 - 11905: 0xEBFD,\n\t33227 - 11905: 0xC499,\n\t33228 - 11905: 0xEBFB,\n\t33229 - 11905: 0xC49A,\n\t33230 - 11905: 0xC49B,\n\t33231 - 11905: 0xC49C,\n\t33232 - 11905: 0xC49D,\n\t33233 - 11905: 0xC49E,\n\t33234 - 11905: 0xC49F,\n\t33235 - 11905: 0xC4A0,\n\t33236 - 11905: 0xC540,\n\t33237 - 11905: 0xC541,\n\t33238 - 11905: 0xC542,\n\t33239 - 11905: 0xC543,\n\t33240 - 11905: 0xC544,\n\t33241 - 11905: 0xC545,\n\t33242 - 11905: 0xC546,\n\t33243 - 11905: 0xC547,\n\t33244 - 11905: 0xC548,\n\t33245 - 11905: 0xC549,\n\t33246 - 11905: 0xC54A,\n\t33247 - 11905: 0xC54B,\n\t33248 - 11905: 0xC54C,\n\t33249 - 11905: 0xC54D,\n\t33250 - 11905: 0xC54E,\n\t33251 - 11905: 0xB3BC,\n\t33252 - 11905: 0xC54F,\n\t33253 - 11905: 0xC550,\n\t33254 - 11905: 0xC551,\n\t33255 - 11905: 0xEAB0,\n\t33256 - 11905: 0xC552,\n\t33257 - 11905: 0xC553,\n\t33258 - 11905: 0xD7D4,\n\t33259 - 11905: 0xC554,\n\t33260 - 11905: 0xF4AB,\n\t33261 - 11905: 0xB3F4,\n\t33262 - 11905: 0xC555,\n\t33263 - 11905: 0xC556,\n\t33264 - 11905: 0xC557,\n\t33265 - 11905: 0xC558,\n\t33266 - 11905: 0xC559,\n\t33267 - 11905: 0xD6C1,\n\t33268 - 11905: 0xD6C2,\n\t33269 - 11905: 0xC55A,\n\t33270 - 11905: 0xC55B,\n\t33271 - 11905: 0xC55C,\n\t33272 - 11905: 0xC55D,\n\t33273 - 11905: 0xC55E,\n\t33274 - 11905: 0xC55F,\n\t33275 - 11905: 0xD5E9,\n\t33276 - 11905: 0xBECA,\n\t33277 - 11905: 0xC560,\n\t33278 - 11905: 0xF4A7,\n\t33279 - 11905: 0xC561,\n\t33280 - 11905: 0xD2A8,\n\t33281 - 11905: 0xF4A8,\n\t33282 - 11905: 0xF4A9,\n\t33283 - 11905: 0xC562,\n\t33284 - 11905: 0xF4AA,\n\t33285 - 11905: 0xBECB,\n\t33286 - 11905: 0xD3DF,\n\t33287 - 11905: 0xC563,\n\t33288 - 11905: 0xC564,\n\t33289 - 11905: 0xC565,\n\t33290 - 11905: 0xC566,\n\t33291 - 11905: 0xC567,\n\t33292 - 11905: 0xC9E0,\n\t33293 - 11905: 0xC9E1,\n\t33294 - 11905: 0xC568,\n\t33295 - 11905: 0xC569,\n\t33296 - 11905: 0xF3C2,\n\t33297 - 11905: 0xC56A,\n\t33298 - 11905: 0xCAE6,\n\t33299 - 11905: 0xC56B,\n\t33300 - 11905: 0xCCF2,\n\t33301 - 11905: 0xC56C,\n\t33302 - 11905: 0xC56D,\n\t33303 - 11905: 0xC56E,\n\t33304 - 11905: 0xC56F,\n\t33305 - 11905: 0xC570,\n\t33306 - 11905: 0xC571,\n\t33307 - 11905: 0xE2B6,\n\t33308 - 11905: 0xCBB4,\n\t33309 - 11905: 0xC572,\n\t33310 - 11905: 0xCEE8,\n\t33311 - 11905: 0xD6DB,\n\t33312 - 11905: 0xC573,\n\t33313 - 11905: 0xF4AD,\n\t33314 - 11905: 0xF4AE,\n\t33315 - 11905: 0xF4AF,\n\t33316 - 11905: 0xC574,\n\t33317 - 11905: 0xC575,\n\t33318 - 11905: 0xC576,\n\t33319 - 11905: 0xC577,\n\t33320 - 11905: 0xF4B2,\n\t33321 - 11905: 0xC578,\n\t33322 - 11905: 0xBABD,\n\t33323 - 11905: 0xF4B3,\n\t33324 - 11905: 0xB0E3,\n\t33325 - 11905: 0xF4B0,\n\t33326 - 11905: 0xC579,\n\t33327 - 11905: 0xF4B1,\n\t33328 - 11905: 0xBDA2,\n\t33329 - 11905: 0xB2D5,\n\t33330 - 11905: 0xC57A,\n\t33331 - 11905: 0xF4B6,\n\t33332 - 11905: 0xF4B7,\n\t33333 - 11905: 0xB6E6,\n\t33334 - 11905: 0xB2B0,\n\t33335 - 11905: 0xCFCF,\n\t33336 - 11905: 0xF4B4,\n\t33337 - 11905: 0xB4AC,\n\t33338 - 11905: 0xC57B,\n\t33339 - 11905: 0xF4B5,\n\t33340 - 11905: 0xC57C,\n\t33341 - 11905: 0xC57D,\n\t33342 - 11905: 0xF4B8,\n\t33343 - 11905: 0xC57E,\n\t33344 - 11905: 0xC580,\n\t33345 - 11905: 0xC581,\n\t33346 - 11905: 0xC582,\n\t33347 - 11905: 0xC583,\n\t33348 - 11905: 0xF4B9,\n\t33349 - 11905: 0xC584,\n\t33350 - 11905: 0xC585,\n\t33351 - 11905: 0xCDA7,\n\t33352 - 11905: 0xC586,\n\t33353 - 11905: 0xF4BA,\n\t33354 - 11905: 0xC587,\n\t33355 - 11905: 0xF4BB,\n\t33356 - 11905: 0xC588,\n\t33357 - 11905: 0xC589,\n\t33358 - 11905: 0xC58A,\n\t33359 - 11905: 0xF4BC,\n\t33360 - 11905: 0xC58B,\n\t33361 - 11905: 0xC58C,\n\t33362 - 11905: 0xC58D,\n\t33363 - 11905: 0xC58E,\n\t33364 - 11905: 0xC58F,\n\t33365 - 11905: 0xC590,\n\t33366 - 11905: 0xC591,\n\t33367 - 11905: 0xC592,\n\t33368 - 11905: 0xCBD2,\n\t33369 - 11905: 0xC593,\n\t33370 - 11905: 0xF4BD,\n\t33371 - 11905: 0xC594,\n\t33372 - 11905: 0xC595,\n\t33373 - 11905: 0xC596,\n\t33374 - 11905: 0xC597,\n\t33375 - 11905: 0xF4BE,\n\t33376 - 11905: 0xC598,\n\t33377 - 11905: 0xC599,\n\t33378 - 11905: 0xC59A,\n\t33379 - 11905: 0xC59B,\n\t33380 - 11905: 0xC59C,\n\t33381 - 11905: 0xC59D,\n\t33382 - 11905: 0xC59E,\n\t33383 - 11905: 0xC59F,\n\t33384 - 11905: 0xF4BF,\n\t33385 - 11905: 0xC5A0,\n\t33386 - 11905: 0xC640,\n\t33387 - 11905: 0xC641,\n\t33388 - 11905: 0xC642,\n\t33389 - 11905: 0xC643,\n\t33390 - 11905: 0xF4DE,\n\t33391 - 11905: 0xC1BC,\n\t33392 - 11905: 0xBCE8,\n\t33393 - 11905: 0xC644,\n\t33394 - 11905: 0xC9AB,\n\t33395 - 11905: 0xD1DE,\n\t33396 - 11905: 0xE5F5,\n\t33397 - 11905: 0xC645,\n\t33398 - 11905: 0xC646,\n\t33399 - 11905: 0xC647,\n\t33400 - 11905: 0xC648,\n\t33401 - 11905: 0xDCB3,\n\t33402 - 11905: 0xD2D5,\n\t33403 - 11905: 0xC649,\n\t33404 - 11905: 0xC64A,\n\t33405 - 11905: 0xDCB4,\n\t33406 - 11905: 0xB0AC,\n\t33407 - 11905: 0xDCB5,\n\t33408 - 11905: 0xC64B,\n\t33409 - 11905: 0xC64C,\n\t33410 - 11905: 0xBDDA,\n\t33411 - 11905: 0xC64D,\n\t33412 - 11905: 0xDCB9,\n\t33413 - 11905: 0xC64E,\n\t33414 - 11905: 0xC64F,\n\t33415 - 11905: 0xC650,\n\t33416 - 11905: 0xD8C2,\n\t33417 - 11905: 0xC651,\n\t33418 - 11905: 0xDCB7,\n\t33419 - 11905: 0xD3F3,\n\t33420 - 11905: 0xC652,\n\t33421 - 11905: 0xC9D6,\n\t33422 - 11905: 0xDCBA,\n\t33423 - 11905: 0xDCB6,\n\t33424 - 11905: 0xC653,\n\t33425 - 11905: 0xDCBB,\n\t33426 - 11905: 0xC3A2,\n\t33427 - 11905: 0xC654,\n\t33428 - 11905: 0xC655,\n\t33429 - 11905: 0xC656,\n\t33430 - 11905: 0xC657,\n\t33431 - 11905: 0xDCBC,\n\t33432 - 11905: 0xDCC5,\n\t33433 - 11905: 0xDCBD,\n\t33434 - 11905: 0xC658,\n\t33435 - 11905: 0xC659,\n\t33436 - 11905: 0xCEDF,\n\t33437 - 11905: 0xD6A5,\n\t33438 - 11905: 0xC65A,\n\t33439 - 11905: 0xDCCF,\n\t33440 - 11905: 0xC65B,\n\t33441 - 11905: 0xDCCD,\n\t33442 - 11905: 0xC65C,\n\t33443 - 11905: 0xC65D,\n\t33444 - 11905: 0xDCD2,\n\t33445 - 11905: 0xBDE6,\n\t33446 - 11905: 0xC2AB,\n\t33447 - 11905: 0xC65E,\n\t33448 - 11905: 0xDCB8,\n\t33449 - 11905: 0xDCCB,\n\t33450 - 11905: 0xDCCE,\n\t33451 - 11905: 0xDCBE,\n\t33452 - 11905: 0xB7D2,\n\t33453 - 11905: 0xB0C5,\n\t33454 - 11905: 0xDCC7,\n\t33455 - 11905: 0xD0BE,\n\t33456 - 11905: 0xDCC1,\n\t33457 - 11905: 0xBBA8,\n\t33458 - 11905: 0xC65F,\n\t33459 - 11905: 0xB7BC,\n\t33460 - 11905: 0xDCCC,\n\t33461 - 11905: 0xC660,\n\t33462 - 11905: 0xC661,\n\t33463 - 11905: 0xDCC6,\n\t33464 - 11905: 0xDCBF,\n\t33465 - 11905: 0xC7DB,\n\t33466 - 11905: 0xC662,\n\t33467 - 11905: 0xC663,\n\t33468 - 11905: 0xC664,\n\t33469 - 11905: 0xD1BF,\n\t33470 - 11905: 0xDCC0,\n\t33471 - 11905: 0xC665,\n\t33472 - 11905: 0xC666,\n\t33473 - 11905: 0xDCCA,\n\t33474 - 11905: 0xC667,\n\t33475 - 11905: 0xC668,\n\t33476 - 11905: 0xDCD0,\n\t33477 - 11905: 0xC669,\n\t33478 - 11905: 0xC66A,\n\t33479 - 11905: 0xCEAD,\n\t33480 - 11905: 0xDCC2,\n\t33481 - 11905: 0xC66B,\n\t33482 - 11905: 0xDCC3,\n\t33483 - 11905: 0xDCC8,\n\t33484 - 11905: 0xDCC9,\n\t33485 - 11905: 0xB2D4,\n\t33486 - 11905: 0xDCD1,\n\t33487 - 11905: 0xCBD5,\n\t33488 - 11905: 0xC66C,\n\t33489 - 11905: 0xD4B7,\n\t33490 - 11905: 0xDCDB,\n\t33491 - 11905: 0xDCDF,\n\t33492 - 11905: 0xCCA6,\n\t33493 - 11905: 0xDCE6,\n\t33494 - 11905: 0xC66D,\n\t33495 - 11905: 0xC3E7,\n\t33496 - 11905: 0xDCDC,\n\t33497 - 11905: 0xC66E,\n\t33498 - 11905: 0xC66F,\n\t33499 - 11905: 0xBFC1,\n\t33500 - 11905: 0xDCD9,\n\t33501 - 11905: 0xC670,\n\t33502 - 11905: 0xB0FA,\n\t33503 - 11905: 0xB9B6,\n\t33504 - 11905: 0xDCE5,\n\t33505 - 11905: 0xDCD3,\n\t33506 - 11905: 0xC671,\n\t33507 - 11905: 0xDCC4,\n\t33508 - 11905: 0xDCD6,\n\t33509 - 11905: 0xC8F4,\n\t33510 - 11905: 0xBFE0,\n\t33511 - 11905: 0xC672,\n\t33512 - 11905: 0xC673,\n\t33513 - 11905: 0xC674,\n\t33514 - 11905: 0xC675,\n\t33515 - 11905: 0xC9BB,\n\t33516 - 11905: 0xC676,\n\t33517 - 11905: 0xC677,\n\t33518 - 11905: 0xC678,\n\t33519 - 11905: 0xB1BD,\n\t33520 - 11905: 0xC679,\n\t33521 - 11905: 0xD3A2,\n\t33522 - 11905: 0xC67A,\n\t33523 - 11905: 0xC67B,\n\t33524 - 11905: 0xDCDA,\n\t33525 - 11905: 0xC67C,\n\t33526 - 11905: 0xC67D,\n\t33527 - 11905: 0xDCD5,\n\t33528 - 11905: 0xC67E,\n\t33529 - 11905: 0xC6BB,\n\t33530 - 11905: 0xC680,\n\t33531 - 11905: 0xDCDE,\n\t33532 - 11905: 0xC681,\n\t33533 - 11905: 0xC682,\n\t33534 - 11905: 0xC683,\n\t33535 - 11905: 0xC684,\n\t33536 - 11905: 0xC685,\n\t33537 - 11905: 0xD7C2,\n\t33538 - 11905: 0xC3AF,\n\t33539 - 11905: 0xB7B6,\n\t33540 - 11905: 0xC7D1,\n\t33541 - 11905: 0xC3A9,\n\t33542 - 11905: 0xDCE2,\n\t33543 - 11905: 0xDCD8,\n\t33544 - 11905: 0xDCEB,\n\t33545 - 11905: 0xDCD4,\n\t33546 - 11905: 0xC686,\n\t33547 - 11905: 0xC687,\n\t33548 - 11905: 0xDCDD,\n\t33549 - 11905: 0xC688,\n\t33550 - 11905: 0xBEA5,\n\t33551 - 11905: 0xDCD7,\n\t33552 - 11905: 0xC689,\n\t33553 - 11905: 0xDCE0,\n\t33554 - 11905: 0xC68A,\n\t33555 - 11905: 0xC68B,\n\t33556 - 11905: 0xDCE3,\n\t33557 - 11905: 0xDCE4,\n\t33558 - 11905: 0xC68C,\n\t33559 - 11905: 0xDCF8,\n\t33560 - 11905: 0xC68D,\n\t33561 - 11905: 0xC68E,\n\t33562 - 11905: 0xDCE1,\n\t33563 - 11905: 0xDDA2,\n\t33564 - 11905: 0xDCE7,\n\t33565 - 11905: 0xC68F,\n\t33566 - 11905: 0xC690,\n\t33567 - 11905: 0xC691,\n\t33568 - 11905: 0xC692,\n\t33569 - 11905: 0xC693,\n\t33570 - 11905: 0xC694,\n\t33571 - 11905: 0xC695,\n\t33572 - 11905: 0xC696,\n\t33573 - 11905: 0xC697,\n\t33574 - 11905: 0xC698,\n\t33575 - 11905: 0xBCEB,\n\t33576 - 11905: 0xB4C4,\n\t33577 - 11905: 0xC699,\n\t33578 - 11905: 0xC69A,\n\t33579 - 11905: 0xC3A3,\n\t33580 - 11905: 0xB2E7,\n\t33581 - 11905: 0xDCFA,\n\t33582 - 11905: 0xC69B,\n\t33583 - 11905: 0xDCF2,\n\t33584 - 11905: 0xC69C,\n\t33585 - 11905: 0xDCEF,\n\t33586 - 11905: 0xC69D,\n\t33587 - 11905: 0xDCFC,\n\t33588 - 11905: 0xDCEE,\n\t33589 - 11905: 0xD2F0,\n\t33590 - 11905: 0xB2E8,\n\t33591 - 11905: 0xC69E,\n\t33592 - 11905: 0xC8D7,\n\t33593 - 11905: 0xC8E3,\n\t33594 - 11905: 0xDCFB,\n\t33595 - 11905: 0xC69F,\n\t33596 - 11905: 0xDCED,\n\t33597 - 11905: 0xC6A0,\n\t33598 - 11905: 0xC740,\n\t33599 - 11905: 0xC741,\n\t33600 - 11905: 0xDCF7,\n\t33601 - 11905: 0xC742,\n\t33602 - 11905: 0xC743,\n\t33603 - 11905: 0xDCF5,\n\t33604 - 11905: 0xC744,\n\t33605 - 11905: 0xC745,\n\t33606 - 11905: 0xBEA3,\n\t33607 - 11905: 0xDCF4,\n\t33608 - 11905: 0xC746,\n\t33609 - 11905: 0xB2DD,\n\t33610 - 11905: 0xC747,\n\t33611 - 11905: 0xC748,\n\t33612 - 11905: 0xC749,\n\t33613 - 11905: 0xC74A,\n\t33614 - 11905: 0xC74B,\n\t33615 - 11905: 0xDCF3,\n\t33616 - 11905: 0xBCF6,\n\t33617 - 11905: 0xDCE8,\n\t33618 - 11905: 0xBBC4,\n\t33619 - 11905: 0xC74C,\n\t33620 - 11905: 0xC0F3,\n\t33621 - 11905: 0xC74D,\n\t33622 - 11905: 0xC74E,\n\t33623 - 11905: 0xC74F,\n\t33624 - 11905: 0xC750,\n\t33625 - 11905: 0xC751,\n\t33626 - 11905: 0xBCD4,\n\t33627 - 11905: 0xDCE9,\n\t33628 - 11905: 0xDCEA,\n\t33629 - 11905: 0xC752,\n\t33630 - 11905: 0xDCF1,\n\t33631 - 11905: 0xDCF6,\n\t33632 - 11905: 0xDCF9,\n\t33633 - 11905: 0xB5B4,\n\t33634 - 11905: 0xC753,\n\t33635 - 11905: 0xC8D9,\n\t33636 - 11905: 0xBBE7,\n\t33637 - 11905: 0xDCFE,\n\t33638 - 11905: 0xDCFD,\n\t33639 - 11905: 0xD3AB,\n\t33640 - 11905: 0xDDA1,\n\t33641 - 11905: 0xDDA3,\n\t33642 - 11905: 0xDDA5,\n\t33643 - 11905: 0xD2F1,\n\t33644 - 11905: 0xDDA4,\n\t33645 - 11905: 0xDDA6,\n\t33646 - 11905: 0xDDA7,\n\t33647 - 11905: 0xD2A9,\n\t33648 - 11905: 0xC754,\n\t33649 - 11905: 0xC755,\n\t33650 - 11905: 0xC756,\n\t33651 - 11905: 0xC757,\n\t33652 - 11905: 0xC758,\n\t33653 - 11905: 0xC759,\n\t33654 - 11905: 0xC75A,\n\t33655 - 11905: 0xBAC9,\n\t33656 - 11905: 0xDDA9,\n\t33657 - 11905: 0xC75B,\n\t33658 - 11905: 0xC75C,\n\t33659 - 11905: 0xDDB6,\n\t33660 - 11905: 0xDDB1,\n\t33661 - 11905: 0xDDB4,\n\t33662 - 11905: 0xC75D,\n\t33663 - 11905: 0xC75E,\n\t33664 - 11905: 0xC75F,\n\t33665 - 11905: 0xC760,\n\t33666 - 11905: 0xC761,\n\t33667 - 11905: 0xC762,\n\t33668 - 11905: 0xC763,\n\t33669 - 11905: 0xDDB0,\n\t33670 - 11905: 0xC6CE,\n\t33671 - 11905: 0xC764,\n\t33672 - 11905: 0xC765,\n\t33673 - 11905: 0xC0F2,\n\t33674 - 11905: 0xC766,\n\t33675 - 11905: 0xC767,\n\t33676 - 11905: 0xC768,\n\t33677 - 11905: 0xC769,\n\t33678 - 11905: 0xC9AF,\n\t33679 - 11905: 0xC76A,\n\t33680 - 11905: 0xC76B,\n\t33681 - 11905: 0xC76C,\n\t33682 - 11905: 0xDCEC,\n\t33683 - 11905: 0xDDAE,\n\t33684 - 11905: 0xC76D,\n\t33685 - 11905: 0xC76E,\n\t33686 - 11905: 0xC76F,\n\t33687 - 11905: 0xC770,\n\t33688 - 11905: 0xDDB7,\n\t33689 - 11905: 0xC771,\n\t33690 - 11905: 0xC772,\n\t33691 - 11905: 0xDCF0,\n\t33692 - 11905: 0xDDAF,\n\t33693 - 11905: 0xC773,\n\t33694 - 11905: 0xDDB8,\n\t33695 - 11905: 0xC774,\n\t33696 - 11905: 0xDDAC,\n\t33697 - 11905: 0xC775,\n\t33698 - 11905: 0xC776,\n\t33699 - 11905: 0xC777,\n\t33700 - 11905: 0xC778,\n\t33701 - 11905: 0xC779,\n\t33702 - 11905: 0xC77A,\n\t33703 - 11905: 0xC77B,\n\t33704 - 11905: 0xDDB9,\n\t33705 - 11905: 0xDDB3,\n\t33706 - 11905: 0xDDAD,\n\t33707 - 11905: 0xC4AA,\n\t33708 - 11905: 0xC77C,\n\t33709 - 11905: 0xC77D,\n\t33710 - 11905: 0xC77E,\n\t33711 - 11905: 0xC780,\n\t33712 - 11905: 0xDDA8,\n\t33713 - 11905: 0xC0B3,\n\t33714 - 11905: 0xC1AB,\n\t33715 - 11905: 0xDDAA,\n\t33716 - 11905: 0xDDAB,\n\t33717 - 11905: 0xC781,\n\t33718 - 11905: 0xDDB2,\n\t33719 - 11905: 0xBBF1,\n\t33720 - 11905: 0xDDB5,\n\t33721 - 11905: 0xD3A8,\n\t33722 - 11905: 0xDDBA,\n\t33723 - 11905: 0xC782,\n\t33724 - 11905: 0xDDBB,\n\t33725 - 11905: 0xC3A7,\n\t33726 - 11905: 0xC783,\n\t33727 - 11905: 0xC784,\n\t33728 - 11905: 0xDDD2,\n\t33729 - 11905: 0xDDBC,\n\t33730 - 11905: 0xC785,\n\t33731 - 11905: 0xC786,\n\t33732 - 11905: 0xC787,\n\t33733 - 11905: 0xDDD1,\n\t33734 - 11905: 0xC788,\n\t33735 - 11905: 0xB9BD,\n\t33736 - 11905: 0xC789,\n\t33737 - 11905: 0xC78A,\n\t33738 - 11905: 0xBED5,\n\t33739 - 11905: 0xC78B,\n\t33740 - 11905: 0xBEFA,\n\t33741 - 11905: 0xC78C,\n\t33742 - 11905: 0xC78D,\n\t33743 - 11905: 0xBACA,\n\t33744 - 11905: 0xC78E,\n\t33745 - 11905: 0xC78F,\n\t33746 - 11905: 0xC790,\n\t33747 - 11905: 0xC791,\n\t33748 - 11905: 0xDDCA,\n\t33749 - 11905: 0xC792,\n\t33750 - 11905: 0xDDC5,\n\t33751 - 11905: 0xC793,\n\t33752 - 11905: 0xDDBF,\n\t33753 - 11905: 0xC794,\n\t33754 - 11905: 0xC795,\n\t33755 - 11905: 0xC796,\n\t33756 - 11905: 0xB2CB,\n\t33757 - 11905: 0xDDC3,\n\t33758 - 11905: 0xC797,\n\t33759 - 11905: 0xDDCB,\n\t33760 - 11905: 0xB2A4,\n\t33761 - 11905: 0xDDD5,\n\t33762 - 11905: 0xC798,\n\t33763 - 11905: 0xC799,\n\t33764 - 11905: 0xC79A,\n\t33765 - 11905: 0xDDBE,\n\t33766 - 11905: 0xC79B,\n\t33767 - 11905: 0xC79C,\n\t33768 - 11905: 0xC79D,\n\t33769 - 11905: 0xC6D0,\n\t33770 - 11905: 0xDDD0,\n\t33771 - 11905: 0xC79E,\n\t33772 - 11905: 0xC79F,\n\t33773 - 11905: 0xC7A0,\n\t33774 - 11905: 0xC840,\n\t33775 - 11905: 0xC841,\n\t33776 - 11905: 0xDDD4,\n\t33777 - 11905: 0xC1E2,\n\t33778 - 11905: 0xB7C6,\n\t33779 - 11905: 0xC842,\n\t33780 - 11905: 0xC843,\n\t33781 - 11905: 0xC844,\n\t33782 - 11905: 0xC845,\n\t33783 - 11905: 0xC846,\n\t33784 - 11905: 0xDDCE,\n\t33785 - 11905: 0xDDCF,\n\t33786 - 11905: 0xC847,\n\t33787 - 11905: 0xC848,\n\t33788 - 11905: 0xC849,\n\t33789 - 11905: 0xDDC4,\n\t33790 - 11905: 0xC84A,\n\t33791 - 11905: 0xC84B,\n\t33792 - 11905: 0xC84C,\n\t33793 - 11905: 0xDDBD,\n\t33794 - 11905: 0xC84D,\n\t33795 - 11905: 0xDDCD,\n\t33796 - 11905: 0xCCD1,\n\t33797 - 11905: 0xC84E,\n\t33798 - 11905: 0xDDC9,\n\t33799 - 11905: 0xC84F,\n\t33800 - 11905: 0xC850,\n\t33801 - 11905: 0xC851,\n\t33802 - 11905: 0xC852,\n\t33803 - 11905: 0xDDC2,\n\t33804 - 11905: 0xC3C8,\n\t33805 - 11905: 0xC6BC,\n\t33806 - 11905: 0xCEAE,\n\t33807 - 11905: 0xDDCC,\n\t33808 - 11905: 0xC853,\n\t33809 - 11905: 0xDDC8,\n\t33810 - 11905: 0xC854,\n\t33811 - 11905: 0xC855,\n\t33812 - 11905: 0xC856,\n\t33813 - 11905: 0xC857,\n\t33814 - 11905: 0xC858,\n\t33815 - 11905: 0xC859,\n\t33816 - 11905: 0xDDC1,\n\t33817 - 11905: 0xC85A,\n\t33818 - 11905: 0xC85B,\n\t33819 - 11905: 0xC85C,\n\t33820 - 11905: 0xDDC6,\n\t33821 - 11905: 0xC2DC,\n\t33822 - 11905: 0xC85D,\n\t33823 - 11905: 0xC85E,\n\t33824 - 11905: 0xC85F,\n\t33825 - 11905: 0xC860,\n\t33826 - 11905: 0xC861,\n\t33827 - 11905: 0xC862,\n\t33828 - 11905: 0xD3A9,\n\t33829 - 11905: 0xD3AA,\n\t33830 - 11905: 0xDDD3,\n\t33831 - 11905: 0xCFF4,\n\t33832 - 11905: 0xC8F8,\n\t33833 - 11905: 0xC863,\n\t33834 - 11905: 0xC864,\n\t33835 - 11905: 0xC865,\n\t33836 - 11905: 0xC866,\n\t33837 - 11905: 0xC867,\n\t33838 - 11905: 0xC868,\n\t33839 - 11905: 0xC869,\n\t33840 - 11905: 0xC86A,\n\t33841 - 11905: 0xDDE6,\n\t33842 - 11905: 0xC86B,\n\t33843 - 11905: 0xC86C,\n\t33844 - 11905: 0xC86D,\n\t33845 - 11905: 0xC86E,\n\t33846 - 11905: 0xC86F,\n\t33847 - 11905: 0xC870,\n\t33848 - 11905: 0xDDC7,\n\t33849 - 11905: 0xC871,\n\t33850 - 11905: 0xC872,\n\t33851 - 11905: 0xC873,\n\t33852 - 11905: 0xDDE0,\n\t33853 - 11905: 0xC2E4,\n\t33854 - 11905: 0xC874,\n\t33855 - 11905: 0xC875,\n\t33856 - 11905: 0xC876,\n\t33857 - 11905: 0xC877,\n\t33858 - 11905: 0xC878,\n\t33859 - 11905: 0xC879,\n\t33860 - 11905: 0xC87A,\n\t33861 - 11905: 0xC87B,\n\t33862 - 11905: 0xDDE1,\n\t33863 - 11905: 0xC87C,\n\t33864 - 11905: 0xC87D,\n\t33865 - 11905: 0xC87E,\n\t33866 - 11905: 0xC880,\n\t33867 - 11905: 0xC881,\n\t33868 - 11905: 0xC882,\n\t33869 - 11905: 0xC883,\n\t33870 - 11905: 0xC884,\n\t33871 - 11905: 0xC885,\n\t33872 - 11905: 0xC886,\n\t33873 - 11905: 0xDDD7,\n\t33874 - 11905: 0xC887,\n\t33875 - 11905: 0xC888,\n\t33876 - 11905: 0xC889,\n\t33877 - 11905: 0xC88A,\n\t33878 - 11905: 0xC88B,\n\t33879 - 11905: 0xD6F8,\n\t33880 - 11905: 0xC88C,\n\t33881 - 11905: 0xDDD9,\n\t33882 - 11905: 0xDDD8,\n\t33883 - 11905: 0xB8F0,\n\t33884 - 11905: 0xDDD6,\n\t33885 - 11905: 0xC88D,\n\t33886 - 11905: 0xC88E,\n\t33887 - 11905: 0xC88F,\n\t33888 - 11905: 0xC890,\n\t33889 - 11905: 0xC6CF,\n\t33890 - 11905: 0xC891,\n\t33891 - 11905: 0xB6AD,\n\t33892 - 11905: 0xC892,\n\t33893 - 11905: 0xC893,\n\t33894 - 11905: 0xC894,\n\t33895 - 11905: 0xC895,\n\t33896 - 11905: 0xC896,\n\t33897 - 11905: 0xDDE2,\n\t33898 - 11905: 0xC897,\n\t33899 - 11905: 0xBAF9,\n\t33900 - 11905: 0xD4E1,\n\t33901 - 11905: 0xDDE7,\n\t33902 - 11905: 0xC898,\n\t33903 - 11905: 0xC899,\n\t33904 - 11905: 0xC89A,\n\t33905 - 11905: 0xB4D0,\n\t33906 - 11905: 0xC89B,\n\t33907 - 11905: 0xDDDA,\n\t33908 - 11905: 0xC89C,\n\t33909 - 11905: 0xBFFB,\n\t33910 - 11905: 0xDDE3,\n\t33911 - 11905: 0xC89D,\n\t33912 - 11905: 0xDDDF,\n\t33913 - 11905: 0xC89E,\n\t33914 - 11905: 0xDDDD,\n\t33915 - 11905: 0xC89F,\n\t33916 - 11905: 0xC8A0,\n\t33917 - 11905: 0xC940,\n\t33918 - 11905: 0xC941,\n\t33919 - 11905: 0xC942,\n\t33920 - 11905: 0xC943,\n\t33921 - 11905: 0xC944,\n\t33922 - 11905: 0xB5D9,\n\t33923 - 11905: 0xC945,\n\t33924 - 11905: 0xC946,\n\t33925 - 11905: 0xC947,\n\t33926 - 11905: 0xC948,\n\t33927 - 11905: 0xDDDB,\n\t33928 - 11905: 0xDDDC,\n\t33929 - 11905: 0xDDDE,\n\t33930 - 11905: 0xC949,\n\t33931 - 11905: 0xBDAF,\n\t33932 - 11905: 0xDDE4,\n\t33933 - 11905: 0xC94A,\n\t33934 - 11905: 0xDDE5,\n\t33935 - 11905: 0xC94B,\n\t33936 - 11905: 0xC94C,\n\t33937 - 11905: 0xC94D,\n\t33938 - 11905: 0xC94E,\n\t33939 - 11905: 0xC94F,\n\t33940 - 11905: 0xC950,\n\t33941 - 11905: 0xC951,\n\t33942 - 11905: 0xC952,\n\t33943 - 11905: 0xDDF5,\n\t33944 - 11905: 0xC953,\n\t33945 - 11905: 0xC3C9,\n\t33946 - 11905: 0xC954,\n\t33947 - 11905: 0xC955,\n\t33948 - 11905: 0xCBE2,\n\t33949 - 11905: 0xC956,\n\t33950 - 11905: 0xC957,\n\t33951 - 11905: 0xC958,\n\t33952 - 11905: 0xC959,\n\t33953 - 11905: 0xDDF2,\n\t33954 - 11905: 0xC95A,\n\t33955 - 11905: 0xC95B,\n\t33956 - 11905: 0xC95C,\n\t33957 - 11905: 0xC95D,\n\t33958 - 11905: 0xC95E,\n\t33959 - 11905: 0xC95F,\n\t33960 - 11905: 0xC960,\n\t33961 - 11905: 0xC961,\n\t33962 - 11905: 0xC962,\n\t33963 - 11905: 0xC963,\n\t33964 - 11905: 0xC964,\n\t33965 - 11905: 0xC965,\n\t33966 - 11905: 0xC966,\n\t33967 - 11905: 0xD8E1,\n\t33968 - 11905: 0xC967,\n\t33969 - 11905: 0xC968,\n\t33970 - 11905: 0xC6D1,\n\t33971 - 11905: 0xC969,\n\t33972 - 11905: 0xDDF4,\n\t33973 - 11905: 0xC96A,\n\t33974 - 11905: 0xC96B,\n\t33975 - 11905: 0xC96C,\n\t33976 - 11905: 0xD5F4,\n\t33977 - 11905: 0xDDF3,\n\t33978 - 11905: 0xDDF0,\n\t33979 - 11905: 0xC96D,\n\t33980 - 11905: 0xC96E,\n\t33981 - 11905: 0xDDEC,\n\t33982 - 11905: 0xC96F,\n\t33983 - 11905: 0xDDEF,\n\t33984 - 11905: 0xC970,\n\t33985 - 11905: 0xDDE8,\n\t33986 - 11905: 0xC971,\n\t33987 - 11905: 0xC972,\n\t33988 - 11905: 0xD0EE,\n\t33989 - 11905: 0xC973,\n\t33990 - 11905: 0xC974,\n\t33991 - 11905: 0xC975,\n\t33992 - 11905: 0xC976,\n\t33993 - 11905: 0xC8D8,\n\t33994 - 11905: 0xDDEE,\n\t33995 - 11905: 0xC977,\n\t33996 - 11905: 0xC978,\n\t33997 - 11905: 0xDDE9,\n\t33998 - 11905: 0xC979,\n\t33999 - 11905: 0xC97A,\n\t34000 - 11905: 0xDDEA,\n\t34001 - 11905: 0xCBF2,\n\t34002 - 11905: 0xC97B,\n\t34003 - 11905: 0xDDED,\n\t34004 - 11905: 0xC97C,\n\t34005 - 11905: 0xC97D,\n\t34006 - 11905: 0xB1CD,\n\t34007 - 11905: 0xC97E,\n\t34008 - 11905: 0xC980,\n\t34009 - 11905: 0xC981,\n\t34010 - 11905: 0xC982,\n\t34011 - 11905: 0xC983,\n\t34012 - 11905: 0xC984,\n\t34013 - 11905: 0xC0B6,\n\t34014 - 11905: 0xC985,\n\t34015 - 11905: 0xBCBB,\n\t34016 - 11905: 0xDDF1,\n\t34017 - 11905: 0xC986,\n\t34018 - 11905: 0xC987,\n\t34019 - 11905: 0xDDF7,\n\t34020 - 11905: 0xC988,\n\t34021 - 11905: 0xDDF6,\n\t34022 - 11905: 0xDDEB,\n\t34023 - 11905: 0xC989,\n\t34024 - 11905: 0xC98A,\n\t34025 - 11905: 0xC98B,\n\t34026 - 11905: 0xC98C,\n\t34027 - 11905: 0xC98D,\n\t34028 - 11905: 0xC5EE,\n\t34029 - 11905: 0xC98E,\n\t34030 - 11905: 0xC98F,\n\t34031 - 11905: 0xC990,\n\t34032 - 11905: 0xDDFB,\n\t34033 - 11905: 0xC991,\n\t34034 - 11905: 0xC992,\n\t34035 - 11905: 0xC993,\n\t34036 - 11905: 0xC994,\n\t34037 - 11905: 0xC995,\n\t34038 - 11905: 0xC996,\n\t34039 - 11905: 0xC997,\n\t34040 - 11905: 0xC998,\n\t34041 - 11905: 0xC999,\n\t34042 - 11905: 0xC99A,\n\t34043 - 11905: 0xC99B,\n\t34044 - 11905: 0xDEA4,\n\t34045 - 11905: 0xC99C,\n\t34046 - 11905: 0xC99D,\n\t34047 - 11905: 0xDEA3,\n\t34048 - 11905: 0xC99E,\n\t34049 - 11905: 0xC99F,\n\t34050 - 11905: 0xC9A0,\n\t34051 - 11905: 0xCA40,\n\t34052 - 11905: 0xCA41,\n\t34053 - 11905: 0xCA42,\n\t34054 - 11905: 0xCA43,\n\t34055 - 11905: 0xCA44,\n\t34056 - 11905: 0xCA45,\n\t34057 - 11905: 0xCA46,\n\t34058 - 11905: 0xCA47,\n\t34059 - 11905: 0xCA48,\n\t34060 - 11905: 0xDDF8,\n\t34061 - 11905: 0xCA49,\n\t34062 - 11905: 0xCA4A,\n\t34063 - 11905: 0xCA4B,\n\t34064 - 11905: 0xCA4C,\n\t34065 - 11905: 0xC3EF,\n\t34066 - 11905: 0xCA4D,\n\t34067 - 11905: 0xC2FB,\n\t34068 - 11905: 0xCA4E,\n\t34069 - 11905: 0xCA4F,\n\t34070 - 11905: 0xCA50,\n\t34071 - 11905: 0xD5E1,\n\t34072 - 11905: 0xCA51,\n\t34073 - 11905: 0xCA52,\n\t34074 - 11905: 0xCEB5,\n\t34075 - 11905: 0xCA53,\n\t34076 - 11905: 0xCA54,\n\t34077 - 11905: 0xCA55,\n\t34078 - 11905: 0xCA56,\n\t34079 - 11905: 0xDDFD,\n\t34080 - 11905: 0xCA57,\n\t34081 - 11905: 0xB2CC,\n\t34082 - 11905: 0xCA58,\n\t34083 - 11905: 0xCA59,\n\t34084 - 11905: 0xCA5A,\n\t34085 - 11905: 0xCA5B,\n\t34086 - 11905: 0xCA5C,\n\t34087 - 11905: 0xCA5D,\n\t34088 - 11905: 0xCA5E,\n\t34089 - 11905: 0xCA5F,\n\t34090 - 11905: 0xCA60,\n\t34091 - 11905: 0xC4E8,\n\t34092 - 11905: 0xCADF,\n\t34093 - 11905: 0xCA61,\n\t34094 - 11905: 0xCA62,\n\t34095 - 11905: 0xCA63,\n\t34096 - 11905: 0xCA64,\n\t34097 - 11905: 0xCA65,\n\t34098 - 11905: 0xCA66,\n\t34099 - 11905: 0xCA67,\n\t34100 - 11905: 0xCA68,\n\t34101 - 11905: 0xCA69,\n\t34102 - 11905: 0xCA6A,\n\t34103 - 11905: 0xC7BE,\n\t34104 - 11905: 0xDDFA,\n\t34105 - 11905: 0xDDFC,\n\t34106 - 11905: 0xDDFE,\n\t34107 - 11905: 0xDEA2,\n\t34108 - 11905: 0xB0AA,\n\t34109 - 11905: 0xB1CE,\n\t34110 - 11905: 0xCA6B,\n\t34111 - 11905: 0xCA6C,\n\t34112 - 11905: 0xCA6D,\n\t34113 - 11905: 0xCA6E,\n\t34114 - 11905: 0xCA6F,\n\t34115 - 11905: 0xDEAC,\n\t34116 - 11905: 0xCA70,\n\t34117 - 11905: 0xCA71,\n\t34118 - 11905: 0xCA72,\n\t34119 - 11905: 0xCA73,\n\t34120 - 11905: 0xDEA6,\n\t34121 - 11905: 0xBDB6,\n\t34122 - 11905: 0xC8EF,\n\t34123 - 11905: 0xCA74,\n\t34124 - 11905: 0xCA75,\n\t34125 - 11905: 0xCA76,\n\t34126 - 11905: 0xCA77,\n\t34127 - 11905: 0xCA78,\n\t34128 - 11905: 0xCA79,\n\t34129 - 11905: 0xCA7A,\n\t34130 - 11905: 0xCA7B,\n\t34131 - 11905: 0xCA7C,\n\t34132 - 11905: 0xCA7D,\n\t34133 - 11905: 0xCA7E,\n\t34134 - 11905: 0xDEA1,\n\t34135 - 11905: 0xCA80,\n\t34136 - 11905: 0xCA81,\n\t34137 - 11905: 0xDEA5,\n\t34138 - 11905: 0xCA82,\n\t34139 - 11905: 0xCA83,\n\t34140 - 11905: 0xCA84,\n\t34141 - 11905: 0xCA85,\n\t34142 - 11905: 0xDEA9,\n\t34143 - 11905: 0xCA86,\n\t34144 - 11905: 0xCA87,\n\t34145 - 11905: 0xCA88,\n\t34146 - 11905: 0xCA89,\n\t34147 - 11905: 0xCA8A,\n\t34148 - 11905: 0xDEA8,\n\t34149 - 11905: 0xCA8B,\n\t34150 - 11905: 0xCA8C,\n\t34151 - 11905: 0xCA8D,\n\t34152 - 11905: 0xDEA7,\n\t34153 - 11905: 0xCA8E,\n\t34154 - 11905: 0xCA8F,\n\t34155 - 11905: 0xCA90,\n\t34156 - 11905: 0xCA91,\n\t34157 - 11905: 0xCA92,\n\t34158 - 11905: 0xCA93,\n\t34159 - 11905: 0xCA94,\n\t34160 - 11905: 0xCA95,\n\t34161 - 11905: 0xCA96,\n\t34162 - 11905: 0xDEAD,\n\t34163 - 11905: 0xCA97,\n\t34164 - 11905: 0xD4CC,\n\t34165 - 11905: 0xCA98,\n\t34166 - 11905: 0xCA99,\n\t34167 - 11905: 0xCA9A,\n\t34168 - 11905: 0xCA9B,\n\t34169 - 11905: 0xDEB3,\n\t34170 - 11905: 0xDEAA,\n\t34171 - 11905: 0xDEAE,\n\t34172 - 11905: 0xCA9C,\n\t34173 - 11905: 0xCA9D,\n\t34174 - 11905: 0xC0D9,\n\t34175 - 11905: 0xCA9E,\n\t34176 - 11905: 0xCA9F,\n\t34177 - 11905: 0xCAA0,\n\t34178 - 11905: 0xCB40,\n\t34179 - 11905: 0xCB41,\n\t34180 - 11905: 0xB1A1,\n\t34181 - 11905: 0xDEB6,\n\t34182 - 11905: 0xCB42,\n\t34183 - 11905: 0xDEB1,\n\t34184 - 11905: 0xCB43,\n\t34185 - 11905: 0xCB44,\n\t34186 - 11905: 0xCB45,\n\t34187 - 11905: 0xCB46,\n\t34188 - 11905: 0xCB47,\n\t34189 - 11905: 0xCB48,\n\t34190 - 11905: 0xCB49,\n\t34191 - 11905: 0xDEB2,\n\t34192 - 11905: 0xCB4A,\n\t34193 - 11905: 0xCB4B,\n\t34194 - 11905: 0xCB4C,\n\t34195 - 11905: 0xCB4D,\n\t34196 - 11905: 0xCB4E,\n\t34197 - 11905: 0xCB4F,\n\t34198 - 11905: 0xCB50,\n\t34199 - 11905: 0xCB51,\n\t34200 - 11905: 0xCB52,\n\t34201 - 11905: 0xCB53,\n\t34202 - 11905: 0xCB54,\n\t34203 - 11905: 0xD1A6,\n\t34204 - 11905: 0xDEB5,\n\t34205 - 11905: 0xCB55,\n\t34206 - 11905: 0xCB56,\n\t34207 - 11905: 0xCB57,\n\t34208 - 11905: 0xCB58,\n\t34209 - 11905: 0xCB59,\n\t34210 - 11905: 0xCB5A,\n\t34211 - 11905: 0xCB5B,\n\t34212 - 11905: 0xDEAF,\n\t34213 - 11905: 0xCB5C,\n\t34214 - 11905: 0xCB5D,\n\t34215 - 11905: 0xCB5E,\n\t34216 - 11905: 0xDEB0,\n\t34217 - 11905: 0xCB5F,\n\t34218 - 11905: 0xD0BD,\n\t34219 - 11905: 0xCB60,\n\t34220 - 11905: 0xCB61,\n\t34221 - 11905: 0xCB62,\n\t34222 - 11905: 0xDEB4,\n\t34223 - 11905: 0xCAED,\n\t34224 - 11905: 0xDEB9,\n\t34225 - 11905: 0xCB63,\n\t34226 - 11905: 0xCB64,\n\t34227 - 11905: 0xCB65,\n\t34228 - 11905: 0xCB66,\n\t34229 - 11905: 0xCB67,\n\t34230 - 11905: 0xCB68,\n\t34231 - 11905: 0xDEB8,\n\t34232 - 11905: 0xCB69,\n\t34233 - 11905: 0xDEB7,\n\t34234 - 11905: 0xCB6A,\n\t34235 - 11905: 0xCB6B,\n\t34236 - 11905: 0xCB6C,\n\t34237 - 11905: 0xCB6D,\n\t34238 - 11905: 0xCB6E,\n\t34239 - 11905: 0xCB6F,\n\t34240 - 11905: 0xCB70,\n\t34241 - 11905: 0xDEBB,\n\t34242 - 11905: 0xCB71,\n\t34243 - 11905: 0xCB72,\n\t34244 - 11905: 0xCB73,\n\t34245 - 11905: 0xCB74,\n\t34246 - 11905: 0xCB75,\n\t34247 - 11905: 0xCB76,\n\t34248 - 11905: 0xCB77,\n\t34249 - 11905: 0xBDE5,\n\t34250 - 11905: 0xCB78,\n\t34251 - 11905: 0xCB79,\n\t34252 - 11905: 0xCB7A,\n\t34253 - 11905: 0xCB7B,\n\t34254 - 11905: 0xCB7C,\n\t34255 - 11905: 0xB2D8,\n\t34256 - 11905: 0xC3EA,\n\t34257 - 11905: 0xCB7D,\n\t34258 - 11905: 0xCB7E,\n\t34259 - 11905: 0xDEBA,\n\t34260 - 11905: 0xCB80,\n\t34261 - 11905: 0xC5BA,\n\t34262 - 11905: 0xCB81,\n\t34263 - 11905: 0xCB82,\n\t34264 - 11905: 0xCB83,\n\t34265 - 11905: 0xCB84,\n\t34266 - 11905: 0xCB85,\n\t34267 - 11905: 0xCB86,\n\t34268 - 11905: 0xDEBC,\n\t34269 - 11905: 0xCB87,\n\t34270 - 11905: 0xCB88,\n\t34271 - 11905: 0xCB89,\n\t34272 - 11905: 0xCB8A,\n\t34273 - 11905: 0xCB8B,\n\t34274 - 11905: 0xCB8C,\n\t34275 - 11905: 0xCB8D,\n\t34276 - 11905: 0xCCD9,\n\t34277 - 11905: 0xCB8E,\n\t34278 - 11905: 0xCB8F,\n\t34279 - 11905: 0xCB90,\n\t34280 - 11905: 0xCB91,\n\t34281 - 11905: 0xB7AA,\n\t34282 - 11905: 0xCB92,\n\t34283 - 11905: 0xCB93,\n\t34284 - 11905: 0xCB94,\n\t34285 - 11905: 0xCB95,\n\t34286 - 11905: 0xCB96,\n\t34287 - 11905: 0xCB97,\n\t34288 - 11905: 0xCB98,\n\t34289 - 11905: 0xCB99,\n\t34290 - 11905: 0xCB9A,\n\t34291 - 11905: 0xCB9B,\n\t34292 - 11905: 0xCB9C,\n\t34293 - 11905: 0xCB9D,\n\t34294 - 11905: 0xCB9E,\n\t34295 - 11905: 0xCB9F,\n\t34296 - 11905: 0xCBA0,\n\t34297 - 11905: 0xCC40,\n\t34298 - 11905: 0xCC41,\n\t34299 - 11905: 0xD4E5,\n\t34300 - 11905: 0xCC42,\n\t34301 - 11905: 0xCC43,\n\t34302 - 11905: 0xCC44,\n\t34303 - 11905: 0xDEBD,\n\t34304 - 11905: 0xCC45,\n\t34305 - 11905: 0xCC46,\n\t34306 - 11905: 0xCC47,\n\t34307 - 11905: 0xCC48,\n\t34308 - 11905: 0xCC49,\n\t34309 - 11905: 0xDEBF,\n\t34310 - 11905: 0xCC4A,\n\t34311 - 11905: 0xCC4B,\n\t34312 - 11905: 0xCC4C,\n\t34313 - 11905: 0xCC4D,\n\t34314 - 11905: 0xCC4E,\n\t34315 - 11905: 0xCC4F,\n\t34316 - 11905: 0xCC50,\n\t34317 - 11905: 0xCC51,\n\t34318 - 11905: 0xCC52,\n\t34319 - 11905: 0xCC53,\n\t34320 - 11905: 0xCC54,\n\t34321 - 11905: 0xC4A2,\n\t34322 - 11905: 0xCC55,\n\t34323 - 11905: 0xCC56,\n\t34324 - 11905: 0xCC57,\n\t34325 - 11905: 0xCC58,\n\t34326 - 11905: 0xDEC1,\n\t34327 - 11905: 0xCC59,\n\t34328 - 11905: 0xCC5A,\n\t34329 - 11905: 0xCC5B,\n\t34330 - 11905: 0xCC5C,\n\t34331 - 11905: 0xCC5D,\n\t34332 - 11905: 0xCC5E,\n\t34333 - 11905: 0xCC5F,\n\t34334 - 11905: 0xCC60,\n\t34335 - 11905: 0xCC61,\n\t34336 - 11905: 0xCC62,\n\t34337 - 11905: 0xCC63,\n\t34338 - 11905: 0xCC64,\n\t34339 - 11905: 0xCC65,\n\t34340 - 11905: 0xCC66,\n\t34341 - 11905: 0xCC67,\n\t34342 - 11905: 0xCC68,\n\t34343 - 11905: 0xDEBE,\n\t34344 - 11905: 0xCC69,\n\t34345 - 11905: 0xDEC0,\n\t34346 - 11905: 0xCC6A,\n\t34347 - 11905: 0xCC6B,\n\t34348 - 11905: 0xCC6C,\n\t34349 - 11905: 0xCC6D,\n\t34350 - 11905: 0xCC6E,\n\t34351 - 11905: 0xCC6F,\n\t34352 - 11905: 0xCC70,\n\t34353 - 11905: 0xCC71,\n\t34354 - 11905: 0xCC72,\n\t34355 - 11905: 0xCC73,\n\t34356 - 11905: 0xCC74,\n\t34357 - 11905: 0xCC75,\n\t34358 - 11905: 0xCC76,\n\t34359 - 11905: 0xCC77,\n\t34360 - 11905: 0xD5BA,\n\t34361 - 11905: 0xCC78,\n\t34362 - 11905: 0xCC79,\n\t34363 - 11905: 0xCC7A,\n\t34364 - 11905: 0xDEC2,\n\t34365 - 11905: 0xCC7B,\n\t34366 - 11905: 0xCC7C,\n\t34367 - 11905: 0xCC7D,\n\t34368 - 11905: 0xCC7E,\n\t34369 - 11905: 0xCC80,\n\t34370 - 11905: 0xCC81,\n\t34371 - 11905: 0xCC82,\n\t34372 - 11905: 0xCC83,\n\t34373 - 11905: 0xCC84,\n\t34374 - 11905: 0xCC85,\n\t34375 - 11905: 0xCC86,\n\t34376 - 11905: 0xCC87,\n\t34377 - 11905: 0xCC88,\n\t34378 - 11905: 0xCC89,\n\t34379 - 11905: 0xCC8A,\n\t34380 - 11905: 0xCC8B,\n\t34381 - 11905: 0xF2AE,\n\t34382 - 11905: 0xBBA2,\n\t34383 - 11905: 0xC2B2,\n\t34384 - 11905: 0xC5B0,\n\t34385 - 11905: 0xC2C7,\n\t34386 - 11905: 0xCC8C,\n\t34387 - 11905: 0xCC8D,\n\t34388 - 11905: 0xF2AF,\n\t34389 - 11905: 0xCC8E,\n\t34390 - 11905: 0xCC8F,\n\t34391 - 11905: 0xCC90,\n\t34392 - 11905: 0xCC91,\n\t34393 - 11905: 0xCC92,\n\t34394 - 11905: 0xD0E9,\n\t34395 - 11905: 0xCC93,\n\t34396 - 11905: 0xCC94,\n\t34397 - 11905: 0xCC95,\n\t34398 - 11905: 0xD3DD,\n\t34399 - 11905: 0xCC96,\n\t34400 - 11905: 0xCC97,\n\t34401 - 11905: 0xCC98,\n\t34402 - 11905: 0xEBBD,\n\t34403 - 11905: 0xCC99,\n\t34404 - 11905: 0xCC9A,\n\t34405 - 11905: 0xCC9B,\n\t34406 - 11905: 0xCC9C,\n\t34407 - 11905: 0xCC9D,\n\t34408 - 11905: 0xCC9E,\n\t34409 - 11905: 0xCC9F,\n\t34410 - 11905: 0xCCA0,\n\t34411 - 11905: 0xB3E6,\n\t34412 - 11905: 0xF2B0,\n\t34413 - 11905: 0xCD40,\n\t34414 - 11905: 0xF2B1,\n\t34415 - 11905: 0xCD41,\n\t34416 - 11905: 0xCD42,\n\t34417 - 11905: 0xCAAD,\n\t34418 - 11905: 0xCD43,\n\t34419 - 11905: 0xCD44,\n\t34420 - 11905: 0xCD45,\n\t34421 - 11905: 0xCD46,\n\t34422 - 11905: 0xCD47,\n\t34423 - 11905: 0xCD48,\n\t34424 - 11905: 0xCD49,\n\t34425 - 11905: 0xBAE7,\n\t34426 - 11905: 0xF2B3,\n\t34427 - 11905: 0xF2B5,\n\t34428 - 11905: 0xF2B4,\n\t34429 - 11905: 0xCBE4,\n\t34430 - 11905: 0xCFBA,\n\t34431 - 11905: 0xF2B2,\n\t34432 - 11905: 0xCAB4,\n\t34433 - 11905: 0xD2CF,\n\t34434 - 11905: 0xC2EC,\n\t34435 - 11905: 0xCD4A,\n\t34436 - 11905: 0xCD4B,\n\t34437 - 11905: 0xCD4C,\n\t34438 - 11905: 0xCD4D,\n\t34439 - 11905: 0xCD4E,\n\t34440 - 11905: 0xCD4F,\n\t34441 - 11905: 0xCD50,\n\t34442 - 11905: 0xCEC3,\n\t34443 - 11905: 0xF2B8,\n\t34444 - 11905: 0xB0F6,\n\t34445 - 11905: 0xF2B7,\n\t34446 - 11905: 0xCD51,\n\t34447 - 11905: 0xCD52,\n\t34448 - 11905: 0xCD53,\n\t34449 - 11905: 0xCD54,\n\t34450 - 11905: 0xCD55,\n\t34451 - 11905: 0xF2BE,\n\t34452 - 11905: 0xCD56,\n\t34453 - 11905: 0xB2CF,\n\t34454 - 11905: 0xCD57,\n\t34455 - 11905: 0xCD58,\n\t34456 - 11905: 0xCD59,\n\t34457 - 11905: 0xCD5A,\n\t34458 - 11905: 0xCD5B,\n\t34459 - 11905: 0xCD5C,\n\t34460 - 11905: 0xD1C1,\n\t34461 - 11905: 0xF2BA,\n\t34462 - 11905: 0xCD5D,\n\t34463 - 11905: 0xCD5E,\n\t34464 - 11905: 0xCD5F,\n\t34465 - 11905: 0xCD60,\n\t34466 - 11905: 0xCD61,\n\t34467 - 11905: 0xF2BC,\n\t34468 - 11905: 0xD4E9,\n\t34469 - 11905: 0xCD62,\n\t34470 - 11905: 0xCD63,\n\t34471 - 11905: 0xF2BB,\n\t34472 - 11905: 0xF2B6,\n\t34473 - 11905: 0xF2BF,\n\t34474 - 11905: 0xF2BD,\n\t34475 - 11905: 0xCD64,\n\t34476 - 11905: 0xF2B9,\n\t34477 - 11905: 0xCD65,\n\t34478 - 11905: 0xCD66,\n\t34479 - 11905: 0xF2C7,\n\t34480 - 11905: 0xF2C4,\n\t34481 - 11905: 0xF2C6,\n\t34482 - 11905: 0xCD67,\n\t34483 - 11905: 0xCD68,\n\t34484 - 11905: 0xF2CA,\n\t34485 - 11905: 0xF2C2,\n\t34486 - 11905: 0xF2C0,\n\t34487 - 11905: 0xCD69,\n\t34488 - 11905: 0xCD6A,\n\t34489 - 11905: 0xCD6B,\n\t34490 - 11905: 0xF2C5,\n\t34491 - 11905: 0xCD6C,\n\t34492 - 11905: 0xCD6D,\n\t34493 - 11905: 0xCD6E,\n\t34494 - 11905: 0xCD6F,\n\t34495 - 11905: 0xCD70,\n\t34496 - 11905: 0xD6FB,\n\t34497 - 11905: 0xCD71,\n\t34498 - 11905: 0xCD72,\n\t34499 - 11905: 0xCD73,\n\t34500 - 11905: 0xF2C1,\n\t34501 - 11905: 0xCD74,\n\t34502 - 11905: 0xC7F9,\n\t34503 - 11905: 0xC9DF,\n\t34504 - 11905: 0xCD75,\n\t34505 - 11905: 0xF2C8,\n\t34506 - 11905: 0xB9C6,\n\t34507 - 11905: 0xB5B0,\n\t34508 - 11905: 0xCD76,\n\t34509 - 11905: 0xCD77,\n\t34510 - 11905: 0xF2C3,\n\t34511 - 11905: 0xF2C9,\n\t34512 - 11905: 0xF2D0,\n\t34513 - 11905: 0xF2D6,\n\t34514 - 11905: 0xCD78,\n\t34515 - 11905: 0xCD79,\n\t34516 - 11905: 0xBBD7,\n\t34517 - 11905: 0xCD7A,\n\t34518 - 11905: 0xCD7B,\n\t34519 - 11905: 0xCD7C,\n\t34520 - 11905: 0xF2D5,\n\t34521 - 11905: 0xCDDC,\n\t34522 - 11905: 0xCD7D,\n\t34523 - 11905: 0xD6EB,\n\t34524 - 11905: 0xCD7E,\n\t34525 - 11905: 0xCD80,\n\t34526 - 11905: 0xF2D2,\n\t34527 - 11905: 0xF2D4,\n\t34528 - 11905: 0xCD81,\n\t34529 - 11905: 0xCD82,\n\t34530 - 11905: 0xCD83,\n\t34531 - 11905: 0xCD84,\n\t34532 - 11905: 0xB8F2,\n\t34533 - 11905: 0xCD85,\n\t34534 - 11905: 0xCD86,\n\t34535 - 11905: 0xCD87,\n\t34536 - 11905: 0xCD88,\n\t34537 - 11905: 0xF2CB,\n\t34538 - 11905: 0xCD89,\n\t34539 - 11905: 0xCD8A,\n\t34540 - 11905: 0xCD8B,\n\t34541 - 11905: 0xF2CE,\n\t34542 - 11905: 0xC2F9,\n\t34543 - 11905: 0xCD8C,\n\t34544 - 11905: 0xD5DD,\n\t34545 - 11905: 0xF2CC,\n\t34546 - 11905: 0xF2CD,\n\t34547 - 11905: 0xF2CF,\n\t34548 - 11905: 0xF2D3,\n\t34549 - 11905: 0xCD8D,\n\t34550 - 11905: 0xCD8E,\n\t34551 - 11905: 0xCD8F,\n\t34552 - 11905: 0xF2D9,\n\t34553 - 11905: 0xD3BC,\n\t34554 - 11905: 0xCD90,\n\t34555 - 11905: 0xCD91,\n\t34556 - 11905: 0xCD92,\n\t34557 - 11905: 0xCD93,\n\t34558 - 11905: 0xB6EA,\n\t34559 - 11905: 0xCD94,\n\t34560 - 11905: 0xCAF1,\n\t34561 - 11905: 0xCD95,\n\t34562 - 11905: 0xB7E4,\n\t34563 - 11905: 0xF2D7,\n\t34564 - 11905: 0xCD96,\n\t34565 - 11905: 0xCD97,\n\t34566 - 11905: 0xCD98,\n\t34567 - 11905: 0xF2D8,\n\t34568 - 11905: 0xF2DA,\n\t34569 - 11905: 0xF2DD,\n\t34570 - 11905: 0xF2DB,\n\t34571 - 11905: 0xCD99,\n\t34572 - 11905: 0xCD9A,\n\t34573 - 11905: 0xF2DC,\n\t34574 - 11905: 0xCD9B,\n\t34575 - 11905: 0xCD9C,\n\t34576 - 11905: 0xCD9D,\n\t34577 - 11905: 0xCD9E,\n\t34578 - 11905: 0xD1D1,\n\t34579 - 11905: 0xF2D1,\n\t34580 - 11905: 0xCD9F,\n\t34581 - 11905: 0xCDC9,\n\t34582 - 11905: 0xCDA0,\n\t34583 - 11905: 0xCECF,\n\t34584 - 11905: 0xD6A9,\n\t34585 - 11905: 0xCE40,\n\t34586 - 11905: 0xF2E3,\n\t34587 - 11905: 0xCE41,\n\t34588 - 11905: 0xC3DB,\n\t34589 - 11905: 0xCE42,\n\t34590 - 11905: 0xF2E0,\n\t34591 - 11905: 0xCE43,\n\t34592 - 11905: 0xCE44,\n\t34593 - 11905: 0xC0AF,\n\t34594 - 11905: 0xF2EC,\n\t34595 - 11905: 0xF2DE,\n\t34596 - 11905: 0xCE45,\n\t34597 - 11905: 0xF2E1,\n\t34598 - 11905: 0xCE46,\n\t34599 - 11905: 0xCE47,\n\t34600 - 11905: 0xCE48,\n\t34601 - 11905: 0xF2E8,\n\t34602 - 11905: 0xCE49,\n\t34603 - 11905: 0xCE4A,\n\t34604 - 11905: 0xCE4B,\n\t34605 - 11905: 0xCE4C,\n\t34606 - 11905: 0xF2E2,\n\t34607 - 11905: 0xCE4D,\n\t34608 - 11905: 0xCE4E,\n\t34609 - 11905: 0xF2E7,\n\t34610 - 11905: 0xCE4F,\n\t34611 - 11905: 0xCE50,\n\t34612 - 11905: 0xF2E6,\n\t34613 - 11905: 0xCE51,\n\t34614 - 11905: 0xCE52,\n\t34615 - 11905: 0xF2E9,\n\t34616 - 11905: 0xCE53,\n\t34617 - 11905: 0xCE54,\n\t34618 - 11905: 0xCE55,\n\t34619 - 11905: 0xF2DF,\n\t34620 - 11905: 0xCE56,\n\t34621 - 11905: 0xCE57,\n\t34622 - 11905: 0xF2E4,\n\t34623 - 11905: 0xF2EA,\n\t34624 - 11905: 0xCE58,\n\t34625 - 11905: 0xCE59,\n\t34626 - 11905: 0xCE5A,\n\t34627 - 11905: 0xCE5B,\n\t34628 - 11905: 0xCE5C,\n\t34629 - 11905: 0xCE5D,\n\t34630 - 11905: 0xCE5E,\n\t34631 - 11905: 0xD3AC,\n\t34632 - 11905: 0xF2E5,\n\t34633 - 11905: 0xB2F5,\n\t34634 - 11905: 0xCE5F,\n\t34635 - 11905: 0xCE60,\n\t34636 - 11905: 0xF2F2,\n\t34637 - 11905: 0xCE61,\n\t34638 - 11905: 0xD0AB,\n\t34639 - 11905: 0xCE62,\n\t34640 - 11905: 0xCE63,\n\t34641 - 11905: 0xCE64,\n\t34642 - 11905: 0xCE65,\n\t34643 - 11905: 0xF2F5,\n\t34644 - 11905: 0xCE66,\n\t34645 - 11905: 0xCE67,\n\t34646 - 11905: 0xCE68,\n\t34647 - 11905: 0xBBC8,\n\t34648 - 11905: 0xCE69,\n\t34649 - 11905: 0xF2F9,\n\t34650 - 11905: 0xCE6A,\n\t34651 - 11905: 0xCE6B,\n\t34652 - 11905: 0xCE6C,\n\t34653 - 11905: 0xCE6D,\n\t34654 - 11905: 0xCE6E,\n\t34655 - 11905: 0xCE6F,\n\t34656 - 11905: 0xF2F0,\n\t34657 - 11905: 0xCE70,\n\t34658 - 11905: 0xCE71,\n\t34659 - 11905: 0xF2F6,\n\t34660 - 11905: 0xF2F8,\n\t34661 - 11905: 0xF2FA,\n\t34662 - 11905: 0xCE72,\n\t34663 - 11905: 0xCE73,\n\t34664 - 11905: 0xCE74,\n\t34665 - 11905: 0xCE75,\n\t34666 - 11905: 0xCE76,\n\t34667 - 11905: 0xCE77,\n\t34668 - 11905: 0xCE78,\n\t34669 - 11905: 0xCE79,\n\t34670 - 11905: 0xF2F3,\n\t34671 - 11905: 0xCE7A,\n\t34672 - 11905: 0xF2F1,\n\t34673 - 11905: 0xCE7B,\n\t34674 - 11905: 0xCE7C,\n\t34675 - 11905: 0xCE7D,\n\t34676 - 11905: 0xBAFB,\n\t34677 - 11905: 0xCE7E,\n\t34678 - 11905: 0xB5FB,\n\t34679 - 11905: 0xCE80,\n\t34680 - 11905: 0xCE81,\n\t34681 - 11905: 0xCE82,\n\t34682 - 11905: 0xCE83,\n\t34683 - 11905: 0xF2EF,\n\t34684 - 11905: 0xF2F7,\n\t34685 - 11905: 0xF2ED,\n\t34686 - 11905: 0xF2EE,\n\t34687 - 11905: 0xCE84,\n\t34688 - 11905: 0xCE85,\n\t34689 - 11905: 0xCE86,\n\t34690 - 11905: 0xF2EB,\n\t34691 - 11905: 0xF3A6,\n\t34692 - 11905: 0xCE87,\n\t34693 - 11905: 0xF3A3,\n\t34694 - 11905: 0xCE88,\n\t34695 - 11905: 0xCE89,\n\t34696 - 11905: 0xF3A2,\n\t34697 - 11905: 0xCE8A,\n\t34698 - 11905: 0xCE8B,\n\t34699 - 11905: 0xF2F4,\n\t34700 - 11905: 0xCE8C,\n\t34701 - 11905: 0xC8DA,\n\t34702 - 11905: 0xCE8D,\n\t34703 - 11905: 0xCE8E,\n\t34704 - 11905: 0xCE8F,\n\t34705 - 11905: 0xCE90,\n\t34706 - 11905: 0xCE91,\n\t34707 - 11905: 0xF2FB,\n\t34708 - 11905: 0xCE92,\n\t34709 - 11905: 0xCE93,\n\t34710 - 11905: 0xCE94,\n\t34711 - 11905: 0xF3A5,\n\t34712 - 11905: 0xCE95,\n\t34713 - 11905: 0xCE96,\n\t34714 - 11905: 0xCE97,\n\t34715 - 11905: 0xCE98,\n\t34716 - 11905: 0xCE99,\n\t34717 - 11905: 0xCE9A,\n\t34718 - 11905: 0xCE9B,\n\t34719 - 11905: 0xC3F8,\n\t34720 - 11905: 0xCE9C,\n\t34721 - 11905: 0xCE9D,\n\t34722 - 11905: 0xCE9E,\n\t34723 - 11905: 0xCE9F,\n\t34724 - 11905: 0xCEA0,\n\t34725 - 11905: 0xCF40,\n\t34726 - 11905: 0xCF41,\n\t34727 - 11905: 0xCF42,\n\t34728 - 11905: 0xF2FD,\n\t34729 - 11905: 0xCF43,\n\t34730 - 11905: 0xCF44,\n\t34731 - 11905: 0xF3A7,\n\t34732 - 11905: 0xF3A9,\n\t34733 - 11905: 0xF3A4,\n\t34734 - 11905: 0xCF45,\n\t34735 - 11905: 0xF2FC,\n\t34736 - 11905: 0xCF46,\n\t34737 - 11905: 0xCF47,\n\t34738 - 11905: 0xCF48,\n\t34739 - 11905: 0xF3AB,\n\t34740 - 11905: 0xCF49,\n\t34741 - 11905: 0xF3AA,\n\t34742 - 11905: 0xCF4A,\n\t34743 - 11905: 0xCF4B,\n\t34744 - 11905: 0xCF4C,\n\t34745 - 11905: 0xCF4D,\n\t34746 - 11905: 0xC2DD,\n\t34747 - 11905: 0xCF4E,\n\t34748 - 11905: 0xCF4F,\n\t34749 - 11905: 0xF3AE,\n\t34750 - 11905: 0xCF50,\n\t34751 - 11905: 0xCF51,\n\t34752 - 11905: 0xF3B0,\n\t34753 - 11905: 0xCF52,\n\t34754 - 11905: 0xCF53,\n\t34755 - 11905: 0xCF54,\n\t34756 - 11905: 0xCF55,\n\t34757 - 11905: 0xCF56,\n\t34758 - 11905: 0xF3A1,\n\t34759 - 11905: 0xCF57,\n\t34760 - 11905: 0xCF58,\n\t34761 - 11905: 0xCF59,\n\t34762 - 11905: 0xF3B1,\n\t34763 - 11905: 0xF3AC,\n\t34764 - 11905: 0xCF5A,\n\t34765 - 11905: 0xCF5B,\n\t34766 - 11905: 0xCF5C,\n\t34767 - 11905: 0xCF5D,\n\t34768 - 11905: 0xCF5E,\n\t34769 - 11905: 0xF3AF,\n\t34770 - 11905: 0xF2FE,\n\t34771 - 11905: 0xF3AD,\n\t34772 - 11905: 0xCF5F,\n\t34773 - 11905: 0xCF60,\n\t34774 - 11905: 0xCF61,\n\t34775 - 11905: 0xCF62,\n\t34776 - 11905: 0xCF63,\n\t34777 - 11905: 0xCF64,\n\t34778 - 11905: 0xCF65,\n\t34779 - 11905: 0xF3B2,\n\t34780 - 11905: 0xCF66,\n\t34781 - 11905: 0xCF67,\n\t34782 - 11905: 0xCF68,\n\t34783 - 11905: 0xCF69,\n\t34784 - 11905: 0xF3B4,\n\t34785 - 11905: 0xCF6A,\n\t34786 - 11905: 0xCF6B,\n\t34787 - 11905: 0xCF6C,\n\t34788 - 11905: 0xCF6D,\n\t34789 - 11905: 0xF3A8,\n\t34790 - 11905: 0xCF6E,\n\t34791 - 11905: 0xCF6F,\n\t34792 - 11905: 0xCF70,\n\t34793 - 11905: 0xCF71,\n\t34794 - 11905: 0xF3B3,\n\t34795 - 11905: 0xCF72,\n\t34796 - 11905: 0xCF73,\n\t34797 - 11905: 0xCF74,\n\t34798 - 11905: 0xF3B5,\n\t34799 - 11905: 0xCF75,\n\t34800 - 11905: 0xCF76,\n\t34801 - 11905: 0xCF77,\n\t34802 - 11905: 0xCF78,\n\t34803 - 11905: 0xCF79,\n\t34804 - 11905: 0xCF7A,\n\t34805 - 11905: 0xCF7B,\n\t34806 - 11905: 0xCF7C,\n\t34807 - 11905: 0xCF7D,\n\t34808 - 11905: 0xCF7E,\n\t34809 - 11905: 0xD0B7,\n\t34810 - 11905: 0xCF80,\n\t34811 - 11905: 0xCF81,\n\t34812 - 11905: 0xCF82,\n\t34813 - 11905: 0xCF83,\n\t34814 - 11905: 0xF3B8,\n\t34815 - 11905: 0xCF84,\n\t34816 - 11905: 0xCF85,\n\t34817 - 11905: 0xCF86,\n\t34818 - 11905: 0xCF87,\n\t34819 - 11905: 0xD9F9,\n\t34820 - 11905: 0xCF88,\n\t34821 - 11905: 0xCF89,\n\t34822 - 11905: 0xCF8A,\n\t34823 - 11905: 0xCF8B,\n\t34824 - 11905: 0xCF8C,\n\t34825 - 11905: 0xCF8D,\n\t34826 - 11905: 0xF3B9,\n\t34827 - 11905: 0xCF8E,\n\t34828 - 11905: 0xCF8F,\n\t34829 - 11905: 0xCF90,\n\t34830 - 11905: 0xCF91,\n\t34831 - 11905: 0xCF92,\n\t34832 - 11905: 0xCF93,\n\t34833 - 11905: 0xCF94,\n\t34834 - 11905: 0xCF95,\n\t34835 - 11905: 0xF3B7,\n\t34836 - 11905: 0xCF96,\n\t34837 - 11905: 0xC8E4,\n\t34838 - 11905: 0xF3B6,\n\t34839 - 11905: 0xCF97,\n\t34840 - 11905: 0xCF98,\n\t34841 - 11905: 0xCF99,\n\t34842 - 11905: 0xCF9A,\n\t34843 - 11905: 0xF3BA,\n\t34844 - 11905: 0xCF9B,\n\t34845 - 11905: 0xCF9C,\n\t34846 - 11905: 0xCF9D,\n\t34847 - 11905: 0xCF9E,\n\t34848 - 11905: 0xCF9F,\n\t34849 - 11905: 0xF3BB,\n\t34850 - 11905: 0xB4C0,\n\t34851 - 11905: 0xCFA0,\n\t34852 - 11905: 0xD040,\n\t34853 - 11905: 0xD041,\n\t34854 - 11905: 0xD042,\n\t34855 - 11905: 0xD043,\n\t34856 - 11905: 0xD044,\n\t34857 - 11905: 0xD045,\n\t34858 - 11905: 0xD046,\n\t34859 - 11905: 0xD047,\n\t34860 - 11905: 0xD048,\n\t34861 - 11905: 0xD049,\n\t34862 - 11905: 0xD04A,\n\t34863 - 11905: 0xD04B,\n\t34864 - 11905: 0xD04C,\n\t34865 - 11905: 0xD04D,\n\t34866 - 11905: 0xEEC3,\n\t34867 - 11905: 0xD04E,\n\t34868 - 11905: 0xD04F,\n\t34869 - 11905: 0xD050,\n\t34870 - 11905: 0xD051,\n\t34871 - 11905: 0xD052,\n\t34872 - 11905: 0xD053,\n\t34873 - 11905: 0xF3BC,\n\t34874 - 11905: 0xD054,\n\t34875 - 11905: 0xD055,\n\t34876 - 11905: 0xF3BD,\n\t34877 - 11905: 0xD056,\n\t34878 - 11905: 0xD057,\n\t34879 - 11905: 0xD058,\n\t34880 - 11905: 0xD1AA,\n\t34881 - 11905: 0xD059,\n\t34882 - 11905: 0xD05A,\n\t34883 - 11905: 0xD05B,\n\t34884 - 11905: 0xF4AC,\n\t34885 - 11905: 0xD0C6,\n\t34886 - 11905: 0xD05C,\n\t34887 - 11905: 0xD05D,\n\t34888 - 11905: 0xD05E,\n\t34889 - 11905: 0xD05F,\n\t34890 - 11905: 0xD060,\n\t34891 - 11905: 0xD061,\n\t34892 - 11905: 0xD0D0,\n\t34893 - 11905: 0xD1DC,\n\t34894 - 11905: 0xD062,\n\t34895 - 11905: 0xD063,\n\t34896 - 11905: 0xD064,\n\t34897 - 11905: 0xD065,\n\t34898 - 11905: 0xD066,\n\t34899 - 11905: 0xD067,\n\t34900 - 11905: 0xCFCE,\n\t34901 - 11905: 0xD068,\n\t34902 - 11905: 0xD069,\n\t34903 - 11905: 0xBDD6,\n\t34904 - 11905: 0xD06A,\n\t34905 - 11905: 0xD1C3,\n\t34906 - 11905: 0xD06B,\n\t34907 - 11905: 0xD06C,\n\t34908 - 11905: 0xD06D,\n\t34909 - 11905: 0xD06E,\n\t34910 - 11905: 0xD06F,\n\t34911 - 11905: 0xD070,\n\t34912 - 11905: 0xD071,\n\t34913 - 11905: 0xBAE2,\n\t34914 - 11905: 0xE1E9,\n\t34915 - 11905: 0xD2C2,\n\t34916 - 11905: 0xF1C2,\n\t34917 - 11905: 0xB2B9,\n\t34918 - 11905: 0xD072,\n\t34919 - 11905: 0xD073,\n\t34920 - 11905: 0xB1ED,\n\t34921 - 11905: 0xF1C3,\n\t34922 - 11905: 0xD074,\n\t34923 - 11905: 0xC9C0,\n\t34924 - 11905: 0xB3C4,\n\t34925 - 11905: 0xD075,\n\t34926 - 11905: 0xD9F2,\n\t34927 - 11905: 0xD076,\n\t34928 - 11905: 0xCBA5,\n\t34929 - 11905: 0xD077,\n\t34930 - 11905: 0xF1C4,\n\t34931 - 11905: 0xD078,\n\t34932 - 11905: 0xD079,\n\t34933 - 11905: 0xD07A,\n\t34934 - 11905: 0xD07B,\n\t34935 - 11905: 0xD6D4,\n\t34936 - 11905: 0xD07C,\n\t34937 - 11905: 0xD07D,\n\t34938 - 11905: 0xD07E,\n\t34939 - 11905: 0xD080,\n\t34940 - 11905: 0xD081,\n\t34941 - 11905: 0xF1C5,\n\t34942 - 11905: 0xF4C0,\n\t34943 - 11905: 0xF1C6,\n\t34944 - 11905: 0xD082,\n\t34945 - 11905: 0xD4AC,\n\t34946 - 11905: 0xF1C7,\n\t34947 - 11905: 0xD083,\n\t34948 - 11905: 0xB0C0,\n\t34949 - 11905: 0xF4C1,\n\t34950 - 11905: 0xD084,\n\t34951 - 11905: 0xD085,\n\t34952 - 11905: 0xF4C2,\n\t34953 - 11905: 0xD086,\n\t34954 - 11905: 0xD087,\n\t34955 - 11905: 0xB4FC,\n\t34956 - 11905: 0xD088,\n\t34957 - 11905: 0xC5DB,\n\t34958 - 11905: 0xD089,\n\t34959 - 11905: 0xD08A,\n\t34960 - 11905: 0xD08B,\n\t34961 - 11905: 0xD08C,\n\t34962 - 11905: 0xCCBB,\n\t34963 - 11905: 0xD08D,\n\t34964 - 11905: 0xD08E,\n\t34965 - 11905: 0xD08F,\n\t34966 - 11905: 0xD0E4,\n\t34967 - 11905: 0xD090,\n\t34968 - 11905: 0xD091,\n\t34969 - 11905: 0xD092,\n\t34970 - 11905: 0xD093,\n\t34971 - 11905: 0xD094,\n\t34972 - 11905: 0xCDE0,\n\t34973 - 11905: 0xD095,\n\t34974 - 11905: 0xD096,\n\t34975 - 11905: 0xD097,\n\t34976 - 11905: 0xD098,\n\t34977 - 11905: 0xD099,\n\t34978 - 11905: 0xF1C8,\n\t34979 - 11905: 0xD09A,\n\t34980 - 11905: 0xD9F3,\n\t34981 - 11905: 0xD09B,\n\t34982 - 11905: 0xD09C,\n\t34983 - 11905: 0xD09D,\n\t34984 - 11905: 0xD09E,\n\t34985 - 11905: 0xD09F,\n\t34986 - 11905: 0xD0A0,\n\t34987 - 11905: 0xB1BB,\n\t34988 - 11905: 0xD140,\n\t34989 - 11905: 0xCFAE,\n\t34990 - 11905: 0xD141,\n\t34991 - 11905: 0xD142,\n\t34992 - 11905: 0xD143,\n\t34993 - 11905: 0xB8A4,\n\t34994 - 11905: 0xD144,\n\t34995 - 11905: 0xD145,\n\t34996 - 11905: 0xD146,\n\t34997 - 11905: 0xD147,\n\t34998 - 11905: 0xD148,\n\t34999 - 11905: 0xF1CA,\n\t35000 - 11905: 0xD149,\n\t35001 - 11905: 0xD14A,\n\t35002 - 11905: 0xD14B,\n\t35003 - 11905: 0xD14C,\n\t35004 - 11905: 0xF1CB,\n\t35005 - 11905: 0xD14D,\n\t35006 - 11905: 0xD14E,\n\t35007 - 11905: 0xD14F,\n\t35008 - 11905: 0xD150,\n\t35009 - 11905: 0xB2C3,\n\t35010 - 11905: 0xC1D1,\n\t35011 - 11905: 0xD151,\n\t35012 - 11905: 0xD152,\n\t35013 - 11905: 0xD7B0,\n\t35014 - 11905: 0xF1C9,\n\t35015 - 11905: 0xD153,\n\t35016 - 11905: 0xD154,\n\t35017 - 11905: 0xF1CC,\n\t35018 - 11905: 0xD155,\n\t35019 - 11905: 0xD156,\n\t35020 - 11905: 0xD157,\n\t35021 - 11905: 0xD158,\n\t35022 - 11905: 0xF1CE,\n\t35023 - 11905: 0xD159,\n\t35024 - 11905: 0xD15A,\n\t35025 - 11905: 0xD15B,\n\t35026 - 11905: 0xD9F6,\n\t35027 - 11905: 0xD15C,\n\t35028 - 11905: 0xD2E1,\n\t35029 - 11905: 0xD4A3,\n\t35030 - 11905: 0xD15D,\n\t35031 - 11905: 0xD15E,\n\t35032 - 11905: 0xF4C3,\n\t35033 - 11905: 0xC8B9,\n\t35034 - 11905: 0xD15F,\n\t35035 - 11905: 0xD160,\n\t35036 - 11905: 0xD161,\n\t35037 - 11905: 0xD162,\n\t35038 - 11905: 0xD163,\n\t35039 - 11905: 0xF4C4,\n\t35040 - 11905: 0xD164,\n\t35041 - 11905: 0xD165,\n\t35042 - 11905: 0xF1CD,\n\t35043 - 11905: 0xF1CF,\n\t35044 - 11905: 0xBFE3,\n\t35045 - 11905: 0xF1D0,\n\t35046 - 11905: 0xD166,\n\t35047 - 11905: 0xD167,\n\t35048 - 11905: 0xF1D4,\n\t35049 - 11905: 0xD168,\n\t35050 - 11905: 0xD169,\n\t35051 - 11905: 0xD16A,\n\t35052 - 11905: 0xD16B,\n\t35053 - 11905: 0xD16C,\n\t35054 - 11905: 0xD16D,\n\t35055 - 11905: 0xD16E,\n\t35056 - 11905: 0xF1D6,\n\t35057 - 11905: 0xF1D1,\n\t35058 - 11905: 0xD16F,\n\t35059 - 11905: 0xC9D1,\n\t35060 - 11905: 0xC5E1,\n\t35061 - 11905: 0xD170,\n\t35062 - 11905: 0xD171,\n\t35063 - 11905: 0xD172,\n\t35064 - 11905: 0xC2E3,\n\t35065 - 11905: 0xB9FC,\n\t35066 - 11905: 0xD173,\n\t35067 - 11905: 0xD174,\n\t35068 - 11905: 0xF1D3,\n\t35069 - 11905: 0xD175,\n\t35070 - 11905: 0xF1D5,\n\t35071 - 11905: 0xD176,\n\t35072 - 11905: 0xD177,\n\t35073 - 11905: 0xD178,\n\t35074 - 11905: 0xB9D3,\n\t35075 - 11905: 0xD179,\n\t35076 - 11905: 0xD17A,\n\t35077 - 11905: 0xD17B,\n\t35078 - 11905: 0xD17C,\n\t35079 - 11905: 0xD17D,\n\t35080 - 11905: 0xD17E,\n\t35081 - 11905: 0xD180,\n\t35082 - 11905: 0xF1DB,\n\t35083 - 11905: 0xD181,\n\t35084 - 11905: 0xD182,\n\t35085 - 11905: 0xD183,\n\t35086 - 11905: 0xD184,\n\t35087 - 11905: 0xD185,\n\t35088 - 11905: 0xBAD6,\n\t35089 - 11905: 0xD186,\n\t35090 - 11905: 0xB0FD,\n\t35091 - 11905: 0xF1D9,\n\t35092 - 11905: 0xD187,\n\t35093 - 11905: 0xD188,\n\t35094 - 11905: 0xD189,\n\t35095 - 11905: 0xD18A,\n\t35096 - 11905: 0xD18B,\n\t35097 - 11905: 0xF1D8,\n\t35098 - 11905: 0xF1D2,\n\t35099 - 11905: 0xF1DA,\n\t35100 - 11905: 0xD18C,\n\t35101 - 11905: 0xD18D,\n\t35102 - 11905: 0xD18E,\n\t35103 - 11905: 0xD18F,\n\t35104 - 11905: 0xD190,\n\t35105 - 11905: 0xF1D7,\n\t35106 - 11905: 0xD191,\n\t35107 - 11905: 0xD192,\n\t35108 - 11905: 0xD193,\n\t35109 - 11905: 0xC8EC,\n\t35110 - 11905: 0xD194,\n\t35111 - 11905: 0xD195,\n\t35112 - 11905: 0xD196,\n\t35113 - 11905: 0xD197,\n\t35114 - 11905: 0xCDCA,\n\t35115 - 11905: 0xF1DD,\n\t35116 - 11905: 0xD198,\n\t35117 - 11905: 0xD199,\n\t35118 - 11905: 0xD19A,\n\t35119 - 11905: 0xD19B,\n\t35120 - 11905: 0xE5BD,\n\t35121 - 11905: 0xD19C,\n\t35122 - 11905: 0xD19D,\n\t35123 - 11905: 0xD19E,\n\t35124 - 11905: 0xF1DC,\n\t35125 - 11905: 0xD19F,\n\t35126 - 11905: 0xF1DE,\n\t35127 - 11905: 0xD1A0,\n\t35128 - 11905: 0xD240,\n\t35129 - 11905: 0xD241,\n\t35130 - 11905: 0xD242,\n\t35131 - 11905: 0xD243,\n\t35132 - 11905: 0xD244,\n\t35133 - 11905: 0xD245,\n\t35134 - 11905: 0xD246,\n\t35135 - 11905: 0xD247,\n\t35136 - 11905: 0xD248,\n\t35137 - 11905: 0xF1DF,\n\t35138 - 11905: 0xD249,\n\t35139 - 11905: 0xD24A,\n\t35140 - 11905: 0xCFE5,\n\t35141 - 11905: 0xD24B,\n\t35142 - 11905: 0xD24C,\n\t35143 - 11905: 0xD24D,\n\t35144 - 11905: 0xD24E,\n\t35145 - 11905: 0xD24F,\n\t35146 - 11905: 0xD250,\n\t35147 - 11905: 0xD251,\n\t35148 - 11905: 0xD252,\n\t35149 - 11905: 0xD253,\n\t35150 - 11905: 0xD254,\n\t35151 - 11905: 0xD255,\n\t35152 - 11905: 0xD256,\n\t35153 - 11905: 0xD257,\n\t35154 - 11905: 0xD258,\n\t35155 - 11905: 0xD259,\n\t35156 - 11905: 0xD25A,\n\t35157 - 11905: 0xD25B,\n\t35158 - 11905: 0xD25C,\n\t35159 - 11905: 0xD25D,\n\t35160 - 11905: 0xD25E,\n\t35161 - 11905: 0xD25F,\n\t35162 - 11905: 0xD260,\n\t35163 - 11905: 0xD261,\n\t35164 - 11905: 0xD262,\n\t35165 - 11905: 0xD263,\n\t35166 - 11905: 0xF4C5,\n\t35167 - 11905: 0xBDF3,\n\t35168 - 11905: 0xD264,\n\t35169 - 11905: 0xD265,\n\t35170 - 11905: 0xD266,\n\t35171 - 11905: 0xD267,\n\t35172 - 11905: 0xD268,\n\t35173 - 11905: 0xD269,\n\t35174 - 11905: 0xF1E0,\n\t35175 - 11905: 0xD26A,\n\t35176 - 11905: 0xD26B,\n\t35177 - 11905: 0xD26C,\n\t35178 - 11905: 0xD26D,\n\t35179 - 11905: 0xD26E,\n\t35180 - 11905: 0xD26F,\n\t35181 - 11905: 0xD270,\n\t35182 - 11905: 0xD271,\n\t35183 - 11905: 0xD272,\n\t35184 - 11905: 0xD273,\n\t35185 - 11905: 0xD274,\n\t35186 - 11905: 0xD275,\n\t35187 - 11905: 0xD276,\n\t35188 - 11905: 0xD277,\n\t35189 - 11905: 0xD278,\n\t35190 - 11905: 0xD279,\n\t35191 - 11905: 0xD27A,\n\t35192 - 11905: 0xD27B,\n\t35193 - 11905: 0xD27C,\n\t35194 - 11905: 0xD27D,\n\t35195 - 11905: 0xF1E1,\n\t35196 - 11905: 0xD27E,\n\t35197 - 11905: 0xD280,\n\t35198 - 11905: 0xD281,\n\t35199 - 11905: 0xCEF7,\n\t35200 - 11905: 0xD282,\n\t35201 - 11905: 0xD2AA,\n\t35202 - 11905: 0xD283,\n\t35203 - 11905: 0xF1FB,\n\t35204 - 11905: 0xD284,\n\t35205 - 11905: 0xD285,\n\t35206 - 11905: 0xB8B2,\n\t35207 - 11905: 0xD286,\n\t35208 - 11905: 0xD287,\n\t35209 - 11905: 0xD288,\n\t35210 - 11905: 0xD289,\n\t35211 - 11905: 0xD28A,\n\t35212 - 11905: 0xD28B,\n\t35213 - 11905: 0xD28C,\n\t35214 - 11905: 0xD28D,\n\t35215 - 11905: 0xD28E,\n\t35216 - 11905: 0xD28F,\n\t35217 - 11905: 0xD290,\n\t35218 - 11905: 0xD291,\n\t35219 - 11905: 0xD292,\n\t35220 - 11905: 0xD293,\n\t35221 - 11905: 0xD294,\n\t35222 - 11905: 0xD295,\n\t35223 - 11905: 0xD296,\n\t35224 - 11905: 0xD297,\n\t35225 - 11905: 0xD298,\n\t35226 - 11905: 0xD299,\n\t35227 - 11905: 0xD29A,\n\t35228 - 11905: 0xD29B,\n\t35229 - 11905: 0xD29C,\n\t35230 - 11905: 0xD29D,\n\t35231 - 11905: 0xD29E,\n\t35232 - 11905: 0xD29F,\n\t35233 - 11905: 0xD2A0,\n\t35234 - 11905: 0xD340,\n\t35235 - 11905: 0xD341,\n\t35236 - 11905: 0xD342,\n\t35237 - 11905: 0xD343,\n\t35238 - 11905: 0xD344,\n\t35239 - 11905: 0xD345,\n\t35240 - 11905: 0xD346,\n\t35241 - 11905: 0xD347,\n\t35242 - 11905: 0xD348,\n\t35243 - 11905: 0xD349,\n\t35244 - 11905: 0xD34A,\n\t35245 - 11905: 0xD34B,\n\t35246 - 11905: 0xD34C,\n\t35247 - 11905: 0xD34D,\n\t35248 - 11905: 0xD34E,\n\t35249 - 11905: 0xD34F,\n\t35250 - 11905: 0xD350,\n\t35251 - 11905: 0xD351,\n\t35252 - 11905: 0xD352,\n\t35253 - 11905: 0xD353,\n\t35254 - 11905: 0xD354,\n\t35255 - 11905: 0xD355,\n\t35256 - 11905: 0xD356,\n\t35257 - 11905: 0xD357,\n\t35258 - 11905: 0xD358,\n\t35259 - 11905: 0xD359,\n\t35260 - 11905: 0xD35A,\n\t35261 - 11905: 0xD35B,\n\t35262 - 11905: 0xD35C,\n\t35263 - 11905: 0xD35D,\n\t35264 - 11905: 0xD35E,\n\t35265 - 11905: 0xBCFB,\n\t35266 - 11905: 0xB9DB,\n\t35267 - 11905: 0xD35F,\n\t35268 - 11905: 0xB9E6,\n\t35269 - 11905: 0xC3D9,\n\t35270 - 11905: 0xCAD3,\n\t35271 - 11905: 0xEAE8,\n\t35272 - 11905: 0xC0C0,\n\t35273 - 11905: 0xBEF5,\n\t35274 - 11905: 0xEAE9,\n\t35275 - 11905: 0xEAEA,\n\t35276 - 11905: 0xEAEB,\n\t35277 - 11905: 0xD360,\n\t35278 - 11905: 0xEAEC,\n\t35279 - 11905: 0xEAED,\n\t35280 - 11905: 0xEAEE,\n\t35281 - 11905: 0xEAEF,\n\t35282 - 11905: 0xBDC7,\n\t35283 - 11905: 0xD361,\n\t35284 - 11905: 0xD362,\n\t35285 - 11905: 0xD363,\n\t35286 - 11905: 0xF5FB,\n\t35287 - 11905: 0xD364,\n\t35288 - 11905: 0xD365,\n\t35289 - 11905: 0xD366,\n\t35290 - 11905: 0xF5FD,\n\t35291 - 11905: 0xD367,\n\t35292 - 11905: 0xF5FE,\n\t35293 - 11905: 0xD368,\n\t35294 - 11905: 0xF5FC,\n\t35295 - 11905: 0xD369,\n\t35296 - 11905: 0xD36A,\n\t35297 - 11905: 0xD36B,\n\t35298 - 11905: 0xD36C,\n\t35299 - 11905: 0xBDE2,\n\t35300 - 11905: 0xD36D,\n\t35301 - 11905: 0xF6A1,\n\t35302 - 11905: 0xB4A5,\n\t35303 - 11905: 0xD36E,\n\t35304 - 11905: 0xD36F,\n\t35305 - 11905: 0xD370,\n\t35306 - 11905: 0xD371,\n\t35307 - 11905: 0xF6A2,\n\t35308 - 11905: 0xD372,\n\t35309 - 11905: 0xD373,\n\t35310 - 11905: 0xD374,\n\t35311 - 11905: 0xF6A3,\n\t35312 - 11905: 0xD375,\n\t35313 - 11905: 0xD376,\n\t35314 - 11905: 0xD377,\n\t35315 - 11905: 0xECB2,\n\t35316 - 11905: 0xD378,\n\t35317 - 11905: 0xD379,\n\t35318 - 11905: 0xD37A,\n\t35319 - 11905: 0xD37B,\n\t35320 - 11905: 0xD37C,\n\t35321 - 11905: 0xD37D,\n\t35322 - 11905: 0xD37E,\n\t35323 - 11905: 0xD380,\n\t35324 - 11905: 0xD381,\n\t35325 - 11905: 0xD382,\n\t35326 - 11905: 0xD383,\n\t35327 - 11905: 0xD384,\n\t35328 - 11905: 0xD1D4,\n\t35329 - 11905: 0xD385,\n\t35330 - 11905: 0xD386,\n\t35331 - 11905: 0xD387,\n\t35332 - 11905: 0xD388,\n\t35333 - 11905: 0xD389,\n\t35334 - 11905: 0xD38A,\n\t35335 - 11905: 0xD9EA,\n\t35336 - 11905: 0xD38B,\n\t35337 - 11905: 0xD38C,\n\t35338 - 11905: 0xD38D,\n\t35339 - 11905: 0xD38E,\n\t35340 - 11905: 0xD38F,\n\t35341 - 11905: 0xD390,\n\t35342 - 11905: 0xD391,\n\t35343 - 11905: 0xD392,\n\t35344 - 11905: 0xD393,\n\t35345 - 11905: 0xD394,\n\t35346 - 11905: 0xD395,\n\t35347 - 11905: 0xD396,\n\t35348 - 11905: 0xD397,\n\t35349 - 11905: 0xD398,\n\t35350 - 11905: 0xD399,\n\t35351 - 11905: 0xD39A,\n\t35352 - 11905: 0xD39B,\n\t35353 - 11905: 0xD39C,\n\t35354 - 11905: 0xD39D,\n\t35355 - 11905: 0xD39E,\n\t35356 - 11905: 0xD39F,\n\t35357 - 11905: 0xD3A0,\n\t35358 - 11905: 0xD440,\n\t35359 - 11905: 0xD441,\n\t35360 - 11905: 0xD442,\n\t35361 - 11905: 0xD443,\n\t35362 - 11905: 0xD444,\n\t35363 - 11905: 0xD445,\n\t35364 - 11905: 0xD446,\n\t35365 - 11905: 0xD447,\n\t35366 - 11905: 0xD448,\n\t35367 - 11905: 0xD449,\n\t35368 - 11905: 0xD44A,\n\t35369 - 11905: 0xD44B,\n\t35370 - 11905: 0xD44C,\n\t35371 - 11905: 0xD44D,\n\t35372 - 11905: 0xD44E,\n\t35373 - 11905: 0xD44F,\n\t35374 - 11905: 0xD450,\n\t35375 - 11905: 0xD451,\n\t35376 - 11905: 0xD452,\n\t35377 - 11905: 0xD453,\n\t35378 - 11905: 0xD454,\n\t35379 - 11905: 0xD455,\n\t35380 - 11905: 0xD456,\n\t35381 - 11905: 0xD457,\n\t35382 - 11905: 0xD458,\n\t35383 - 11905: 0xD459,\n\t35384 - 11905: 0xD45A,\n\t35385 - 11905: 0xD45B,\n\t35386 - 11905: 0xD45C,\n\t35387 - 11905: 0xD45D,\n\t35388 - 11905: 0xD45E,\n\t35389 - 11905: 0xD45F,\n\t35390 - 11905: 0xF6A4,\n\t35391 - 11905: 0xD460,\n\t35392 - 11905: 0xD461,\n\t35393 - 11905: 0xD462,\n\t35394 - 11905: 0xD463,\n\t35395 - 11905: 0xD464,\n\t35396 - 11905: 0xD465,\n\t35397 - 11905: 0xD466,\n\t35398 - 11905: 0xD467,\n\t35399 - 11905: 0xD468,\n\t35400 - 11905: 0xEEBA,\n\t35401 - 11905: 0xD469,\n\t35402 - 11905: 0xD46A,\n\t35403 - 11905: 0xD46B,\n\t35404 - 11905: 0xD46C,\n\t35405 - 11905: 0xD46D,\n\t35406 - 11905: 0xD46E,\n\t35407 - 11905: 0xD46F,\n\t35408 - 11905: 0xD470,\n\t35409 - 11905: 0xD471,\n\t35410 - 11905: 0xD472,\n\t35411 - 11905: 0xD473,\n\t35412 - 11905: 0xD474,\n\t35413 - 11905: 0xD475,\n\t35414 - 11905: 0xD476,\n\t35415 - 11905: 0xD477,\n\t35416 - 11905: 0xD478,\n\t35417 - 11905: 0xD479,\n\t35418 - 11905: 0xD47A,\n\t35419 - 11905: 0xD47B,\n\t35420 - 11905: 0xD47C,\n\t35421 - 11905: 0xD47D,\n\t35422 - 11905: 0xD47E,\n\t35423 - 11905: 0xD480,\n\t35424 - 11905: 0xD481,\n\t35425 - 11905: 0xD482,\n\t35426 - 11905: 0xD483,\n\t35427 - 11905: 0xD484,\n\t35428 - 11905: 0xD485,\n\t35429 - 11905: 0xD486,\n\t35430 - 11905: 0xD487,\n\t35431 - 11905: 0xD488,\n\t35432 - 11905: 0xD489,\n\t35433 - 11905: 0xD48A,\n\t35434 - 11905: 0xD48B,\n\t35435 - 11905: 0xD48C,\n\t35436 - 11905: 0xD48D,\n\t35437 - 11905: 0xD48E,\n\t35438 - 11905: 0xD48F,\n\t35439 - 11905: 0xD490,\n\t35440 - 11905: 0xD491,\n\t35441 - 11905: 0xD492,\n\t35442 - 11905: 0xD493,\n\t35443 - 11905: 0xD494,\n\t35444 - 11905: 0xD495,\n\t35445 - 11905: 0xD496,\n\t35446 - 11905: 0xD497,\n\t35447 - 11905: 0xD498,\n\t35448 - 11905: 0xD499,\n\t35449 - 11905: 0xD5B2,\n\t35450 - 11905: 0xD49A,\n\t35451 - 11905: 0xD49B,\n\t35452 - 11905: 0xD49C,\n\t35453 - 11905: 0xD49D,\n\t35454 - 11905: 0xD49E,\n\t35455 - 11905: 0xD49F,\n\t35456 - 11905: 0xD4A0,\n\t35457 - 11905: 0xD540,\n\t35458 - 11905: 0xD541,\n\t35459 - 11905: 0xD542,\n\t35460 - 11905: 0xD543,\n\t35461 - 11905: 0xD544,\n\t35462 - 11905: 0xD545,\n\t35463 - 11905: 0xD546,\n\t35464 - 11905: 0xD547,\n\t35465 - 11905: 0xD3FE,\n\t35466 - 11905: 0xCCDC,\n\t35467 - 11905: 0xD548,\n\t35468 - 11905: 0xD549,\n\t35469 - 11905: 0xD54A,\n\t35470 - 11905: 0xD54B,\n\t35471 - 11905: 0xD54C,\n\t35472 - 11905: 0xD54D,\n\t35473 - 11905: 0xD54E,\n\t35474 - 11905: 0xD54F,\n\t35475 - 11905: 0xCAC4,\n\t35476 - 11905: 0xD550,\n\t35477 - 11905: 0xD551,\n\t35478 - 11905: 0xD552,\n\t35479 - 11905: 0xD553,\n\t35480 - 11905: 0xD554,\n\t35481 - 11905: 0xD555,\n\t35482 - 11905: 0xD556,\n\t35483 - 11905: 0xD557,\n\t35484 - 11905: 0xD558,\n\t35485 - 11905: 0xD559,\n\t35486 - 11905: 0xD55A,\n\t35487 - 11905: 0xD55B,\n\t35488 - 11905: 0xD55C,\n\t35489 - 11905: 0xD55D,\n\t35490 - 11905: 0xD55E,\n\t35491 - 11905: 0xD55F,\n\t35492 - 11905: 0xD560,\n\t35493 - 11905: 0xD561,\n\t35494 - 11905: 0xD562,\n\t35495 - 11905: 0xD563,\n\t35496 - 11905: 0xD564,\n\t35497 - 11905: 0xD565,\n\t35498 - 11905: 0xD566,\n\t35499 - 11905: 0xD567,\n\t35500 - 11905: 0xD568,\n\t35501 - 11905: 0xD569,\n\t35502 - 11905: 0xD56A,\n\t35503 - 11905: 0xD56B,\n\t35504 - 11905: 0xD56C,\n\t35505 - 11905: 0xD56D,\n\t35506 - 11905: 0xD56E,\n\t35507 - 11905: 0xD56F,\n\t35508 - 11905: 0xD570,\n\t35509 - 11905: 0xD571,\n\t35510 - 11905: 0xD572,\n\t35511 - 11905: 0xD573,\n\t35512 - 11905: 0xD574,\n\t35513 - 11905: 0xD575,\n\t35514 - 11905: 0xD576,\n\t35515 - 11905: 0xD577,\n\t35516 - 11905: 0xD578,\n\t35517 - 11905: 0xD579,\n\t35518 - 11905: 0xD57A,\n\t35519 - 11905: 0xD57B,\n\t35520 - 11905: 0xD57C,\n\t35521 - 11905: 0xD57D,\n\t35522 - 11905: 0xD57E,\n\t35523 - 11905: 0xD580,\n\t35524 - 11905: 0xD581,\n\t35525 - 11905: 0xD582,\n\t35526 - 11905: 0xD583,\n\t35527 - 11905: 0xD584,\n\t35528 - 11905: 0xD585,\n\t35529 - 11905: 0xD586,\n\t35530 - 11905: 0xD587,\n\t35531 - 11905: 0xD588,\n\t35532 - 11905: 0xD589,\n\t35533 - 11905: 0xD58A,\n\t35534 - 11905: 0xD58B,\n\t35535 - 11905: 0xD58C,\n\t35536 - 11905: 0xD58D,\n\t35537 - 11905: 0xD58E,\n\t35538 - 11905: 0xD58F,\n\t35539 - 11905: 0xD590,\n\t35540 - 11905: 0xD591,\n\t35541 - 11905: 0xD592,\n\t35542 - 11905: 0xD593,\n\t35543 - 11905: 0xD594,\n\t35544 - 11905: 0xD595,\n\t35545 - 11905: 0xD596,\n\t35546 - 11905: 0xD597,\n\t35547 - 11905: 0xD598,\n\t35548 - 11905: 0xD599,\n\t35549 - 11905: 0xD59A,\n\t35550 - 11905: 0xD59B,\n\t35551 - 11905: 0xD59C,\n\t35552 - 11905: 0xD59D,\n\t35553 - 11905: 0xD59E,\n\t35554 - 11905: 0xD59F,\n\t35555 - 11905: 0xD5A0,\n\t35556 - 11905: 0xD640,\n\t35557 - 11905: 0xD641,\n\t35558 - 11905: 0xD642,\n\t35559 - 11905: 0xD643,\n\t35560 - 11905: 0xD644,\n\t35561 - 11905: 0xD645,\n\t35562 - 11905: 0xD646,\n\t35563 - 11905: 0xD647,\n\t35564 - 11905: 0xD648,\n\t35565 - 11905: 0xD649,\n\t35566 - 11905: 0xD64A,\n\t35567 - 11905: 0xD64B,\n\t35568 - 11905: 0xD64C,\n\t35569 - 11905: 0xD64D,\n\t35570 - 11905: 0xD64E,\n\t35571 - 11905: 0xD64F,\n\t35572 - 11905: 0xD650,\n\t35573 - 11905: 0xD651,\n\t35574 - 11905: 0xD652,\n\t35575 - 11905: 0xD653,\n\t35576 - 11905: 0xD654,\n\t35577 - 11905: 0xD655,\n\t35578 - 11905: 0xD656,\n\t35579 - 11905: 0xD657,\n\t35580 - 11905: 0xD658,\n\t35581 - 11905: 0xD659,\n\t35582 - 11905: 0xD65A,\n\t35583 - 11905: 0xD65B,\n\t35584 - 11905: 0xD65C,\n\t35585 - 11905: 0xD65D,\n\t35586 - 11905: 0xD65E,\n\t35587 - 11905: 0xD65F,\n\t35588 - 11905: 0xD660,\n\t35589 - 11905: 0xD661,\n\t35590 - 11905: 0xD662,\n\t35591 - 11905: 0xE5C0,\n\t35592 - 11905: 0xD663,\n\t35593 - 11905: 0xD664,\n\t35594 - 11905: 0xD665,\n\t35595 - 11905: 0xD666,\n\t35596 - 11905: 0xD667,\n\t35597 - 11905: 0xD668,\n\t35598 - 11905: 0xD669,\n\t35599 - 11905: 0xD66A,\n\t35600 - 11905: 0xD66B,\n\t35601 - 11905: 0xD66C,\n\t35602 - 11905: 0xD66D,\n\t35603 - 11905: 0xD66E,\n\t35604 - 11905: 0xD66F,\n\t35605 - 11905: 0xD670,\n\t35606 - 11905: 0xD671,\n\t35607 - 11905: 0xD672,\n\t35608 - 11905: 0xD673,\n\t35609 - 11905: 0xD674,\n\t35610 - 11905: 0xD675,\n\t35611 - 11905: 0xD676,\n\t35612 - 11905: 0xD677,\n\t35613 - 11905: 0xD678,\n\t35614 - 11905: 0xD679,\n\t35615 - 11905: 0xD67A,\n\t35616 - 11905: 0xD67B,\n\t35617 - 11905: 0xD67C,\n\t35618 - 11905: 0xD67D,\n\t35619 - 11905: 0xD67E,\n\t35620 - 11905: 0xD680,\n\t35621 - 11905: 0xD681,\n\t35622 - 11905: 0xF6A5,\n\t35623 - 11905: 0xD682,\n\t35624 - 11905: 0xD683,\n\t35625 - 11905: 0xD684,\n\t35626 - 11905: 0xD685,\n\t35627 - 11905: 0xD686,\n\t35628 - 11905: 0xD687,\n\t35629 - 11905: 0xD688,\n\t35630 - 11905: 0xD689,\n\t35631 - 11905: 0xD68A,\n\t35632 - 11905: 0xD68B,\n\t35633 - 11905: 0xD68C,\n\t35634 - 11905: 0xD68D,\n\t35635 - 11905: 0xD68E,\n\t35636 - 11905: 0xD68F,\n\t35637 - 11905: 0xD690,\n\t35638 - 11905: 0xD691,\n\t35639 - 11905: 0xD692,\n\t35640 - 11905: 0xD693,\n\t35641 - 11905: 0xD694,\n\t35642 - 11905: 0xD695,\n\t35643 - 11905: 0xD696,\n\t35644 - 11905: 0xD697,\n\t35645 - 11905: 0xD698,\n\t35646 - 11905: 0xD699,\n\t35647 - 11905: 0xD69A,\n\t35648 - 11905: 0xD69B,\n\t35649 - 11905: 0xD69C,\n\t35650 - 11905: 0xD69D,\n\t35651 - 11905: 0xD69E,\n\t35652 - 11905: 0xD69F,\n\t35653 - 11905: 0xD6A0,\n\t35654 - 11905: 0xD740,\n\t35655 - 11905: 0xD741,\n\t35656 - 11905: 0xD742,\n\t35657 - 11905: 0xD743,\n\t35658 - 11905: 0xD744,\n\t35659 - 11905: 0xD745,\n\t35660 - 11905: 0xD746,\n\t35661 - 11905: 0xD747,\n\t35662 - 11905: 0xD748,\n\t35663 - 11905: 0xD749,\n\t35664 - 11905: 0xD74A,\n\t35665 - 11905: 0xD74B,\n\t35666 - 11905: 0xD74C,\n\t35667 - 11905: 0xD74D,\n\t35668 - 11905: 0xD74E,\n\t35669 - 11905: 0xD74F,\n\t35670 - 11905: 0xD750,\n\t35671 - 11905: 0xD751,\n\t35672 - 11905: 0xD752,\n\t35673 - 11905: 0xD753,\n\t35674 - 11905: 0xD754,\n\t35675 - 11905: 0xD755,\n\t35676 - 11905: 0xD756,\n\t35677 - 11905: 0xD757,\n\t35678 - 11905: 0xD758,\n\t35679 - 11905: 0xD759,\n\t35680 - 11905: 0xD75A,\n\t35681 - 11905: 0xD75B,\n\t35682 - 11905: 0xD75C,\n\t35683 - 11905: 0xD75D,\n\t35684 - 11905: 0xD75E,\n\t35685 - 11905: 0xD75F,\n\t35686 - 11905: 0xBEAF,\n\t35687 - 11905: 0xD760,\n\t35688 - 11905: 0xD761,\n\t35689 - 11905: 0xD762,\n\t35690 - 11905: 0xD763,\n\t35691 - 11905: 0xD764,\n\t35692 - 11905: 0xC6A9,\n\t35693 - 11905: 0xD765,\n\t35694 - 11905: 0xD766,\n\t35695 - 11905: 0xD767,\n\t35696 - 11905: 0xD768,\n\t35697 - 11905: 0xD769,\n\t35698 - 11905: 0xD76A,\n\t35699 - 11905: 0xD76B,\n\t35700 - 11905: 0xD76C,\n\t35701 - 11905: 0xD76D,\n\t35702 - 11905: 0xD76E,\n\t35703 - 11905: 0xD76F,\n\t35704 - 11905: 0xD770,\n\t35705 - 11905: 0xD771,\n\t35706 - 11905: 0xD772,\n\t35707 - 11905: 0xD773,\n\t35708 - 11905: 0xD774,\n\t35709 - 11905: 0xD775,\n\t35710 - 11905: 0xD776,\n\t35711 - 11905: 0xD777,\n\t35712 - 11905: 0xD778,\n\t35713 - 11905: 0xD779,\n\t35714 - 11905: 0xD77A,\n\t35715 - 11905: 0xD77B,\n\t35716 - 11905: 0xD77C,\n\t35717 - 11905: 0xD77D,\n\t35718 - 11905: 0xD77E,\n\t35719 - 11905: 0xD780,\n\t35720 - 11905: 0xD781,\n\t35721 - 11905: 0xD782,\n\t35722 - 11905: 0xD783,\n\t35723 - 11905: 0xD784,\n\t35724 - 11905: 0xD785,\n\t35725 - 11905: 0xD786,\n\t35726 - 11905: 0xD787,\n\t35727 - 11905: 0xD788,\n\t35728 - 11905: 0xD789,\n\t35729 - 11905: 0xD78A,\n\t35730 - 11905: 0xD78B,\n\t35731 - 11905: 0xD78C,\n\t35732 - 11905: 0xD78D,\n\t35733 - 11905: 0xD78E,\n\t35734 - 11905: 0xD78F,\n\t35735 - 11905: 0xD790,\n\t35736 - 11905: 0xD791,\n\t35737 - 11905: 0xD792,\n\t35738 - 11905: 0xD793,\n\t35739 - 11905: 0xD794,\n\t35740 - 11905: 0xD795,\n\t35741 - 11905: 0xD796,\n\t35742 - 11905: 0xD797,\n\t35743 - 11905: 0xD798,\n\t35744 - 11905: 0xDAA5,\n\t35745 - 11905: 0xBCC6,\n\t35746 - 11905: 0xB6A9,\n\t35747 - 11905: 0xB8BC,\n\t35748 - 11905: 0xC8CF,\n\t35749 - 11905: 0xBCA5,\n\t35750 - 11905: 0xDAA6,\n\t35751 - 11905: 0xDAA7,\n\t35752 - 11905: 0xCCD6,\n\t35753 - 11905: 0xC8C3,\n\t35754 - 11905: 0xDAA8,\n\t35755 - 11905: 0xC6FD,\n\t35756 - 11905: 0xD799,\n\t35757 - 11905: 0xD1B5,\n\t35758 - 11905: 0xD2E9,\n\t35759 - 11905: 0xD1B6,\n\t35760 - 11905: 0xBCC7,\n\t35761 - 11905: 0xD79A,\n\t35762 - 11905: 0xBDB2,\n\t35763 - 11905: 0xBBE4,\n\t35764 - 11905: 0xDAA9,\n\t35765 - 11905: 0xDAAA,\n\t35766 - 11905: 0xD1C8,\n\t35767 - 11905: 0xDAAB,\n\t35768 - 11905: 0xD0ED,\n\t35769 - 11905: 0xB6EF,\n\t35770 - 11905: 0xC2DB,\n\t35771 - 11905: 0xD79B,\n\t35772 - 11905: 0xCBCF,\n\t35773 - 11905: 0xB7ED,\n\t35774 - 11905: 0xC9E8,\n\t35775 - 11905: 0xB7C3,\n\t35776 - 11905: 0xBEF7,\n\t35777 - 11905: 0xD6A4,\n\t35778 - 11905: 0xDAAC,\n\t35779 - 11905: 0xDAAD,\n\t35780 - 11905: 0xC6C0,\n\t35781 - 11905: 0xD7E7,\n\t35782 - 11905: 0xCAB6,\n\t35783 - 11905: 0xD79C,\n\t35784 - 11905: 0xD5A9,\n\t35785 - 11905: 0xCBDF,\n\t35786 - 11905: 0xD5EF,\n\t35787 - 11905: 0xDAAE,\n\t35788 - 11905: 0xD6DF,\n\t35789 - 11905: 0xB4CA,\n\t35790 - 11905: 0xDAB0,\n\t35791 - 11905: 0xDAAF,\n\t35792 - 11905: 0xD79D,\n\t35793 - 11905: 0xD2EB,\n\t35794 - 11905: 0xDAB1,\n\t35795 - 11905: 0xDAB2,\n\t35796 - 11905: 0xDAB3,\n\t35797 - 11905: 0xCAD4,\n\t35798 - 11905: 0xDAB4,\n\t35799 - 11905: 0xCAAB,\n\t35800 - 11905: 0xDAB5,\n\t35801 - 11905: 0xDAB6,\n\t35802 - 11905: 0xB3CF,\n\t35803 - 11905: 0xD6EF,\n\t35804 - 11905: 0xDAB7,\n\t35805 - 11905: 0xBBB0,\n\t35806 - 11905: 0xB5AE,\n\t35807 - 11905: 0xDAB8,\n\t35808 - 11905: 0xDAB9,\n\t35809 - 11905: 0xB9EE,\n\t35810 - 11905: 0xD1AF,\n\t35811 - 11905: 0xD2E8,\n\t35812 - 11905: 0xDABA,\n\t35813 - 11905: 0xB8C3,\n\t35814 - 11905: 0xCFEA,\n\t35815 - 11905: 0xB2EF,\n\t35816 - 11905: 0xDABB,\n\t35817 - 11905: 0xDABC,\n\t35818 - 11905: 0xD79E,\n\t35819 - 11905: 0xBDEB,\n\t35820 - 11905: 0xCEDC,\n\t35821 - 11905: 0xD3EF,\n\t35822 - 11905: 0xDABD,\n\t35823 - 11905: 0xCEF3,\n\t35824 - 11905: 0xDABE,\n\t35825 - 11905: 0xD3D5,\n\t35826 - 11905: 0xBBE5,\n\t35827 - 11905: 0xDABF,\n\t35828 - 11905: 0xCBB5,\n\t35829 - 11905: 0xCBD0,\n\t35830 - 11905: 0xDAC0,\n\t35831 - 11905: 0xC7EB,\n\t35832 - 11905: 0xD6EE,\n\t35833 - 11905: 0xDAC1,\n\t35834 - 11905: 0xC5B5,\n\t35835 - 11905: 0xB6C1,\n\t35836 - 11905: 0xDAC2,\n\t35837 - 11905: 0xB7CC,\n\t35838 - 11905: 0xBFCE,\n\t35839 - 11905: 0xDAC3,\n\t35840 - 11905: 0xDAC4,\n\t35841 - 11905: 0xCBAD,\n\t35842 - 11905: 0xDAC5,\n\t35843 - 11905: 0xB5F7,\n\t35844 - 11905: 0xDAC6,\n\t35845 - 11905: 0xC1C2,\n\t35846 - 11905: 0xD7BB,\n\t35847 - 11905: 0xDAC7,\n\t35848 - 11905: 0xCCB8,\n\t35849 - 11905: 0xD79F,\n\t35850 - 11905: 0xD2EA,\n\t35851 - 11905: 0xC4B1,\n\t35852 - 11905: 0xDAC8,\n\t35853 - 11905: 0xB5FD,\n\t35854 - 11905: 0xBBD1,\n\t35855 - 11905: 0xDAC9,\n\t35856 - 11905: 0xD0B3,\n\t35857 - 11905: 0xDACA,\n\t35858 - 11905: 0xDACB,\n\t35859 - 11905: 0xCEBD,\n\t35860 - 11905: 0xDACC,\n\t35861 - 11905: 0xDACD,\n\t35862 - 11905: 0xDACE,\n\t35863 - 11905: 0xB2F7,\n\t35864 - 11905: 0xDAD1,\n\t35865 - 11905: 0xDACF,\n\t35866 - 11905: 0xD1E8,\n\t35867 - 11905: 0xDAD0,\n\t35868 - 11905: 0xC3D5,\n\t35869 - 11905: 0xDAD2,\n\t35870 - 11905: 0xD7A0,\n\t35871 - 11905: 0xDAD3,\n\t35872 - 11905: 0xDAD4,\n\t35873 - 11905: 0xDAD5,\n\t35874 - 11905: 0xD0BB,\n\t35875 - 11905: 0xD2A5,\n\t35876 - 11905: 0xB0F9,\n\t35877 - 11905: 0xDAD6,\n\t35878 - 11905: 0xC7AB,\n\t35879 - 11905: 0xDAD7,\n\t35880 - 11905: 0xBDF7,\n\t35881 - 11905: 0xC3A1,\n\t35882 - 11905: 0xDAD8,\n\t35883 - 11905: 0xDAD9,\n\t35884 - 11905: 0xC3FD,\n\t35885 - 11905: 0xCCB7,\n\t35886 - 11905: 0xDADA,\n\t35887 - 11905: 0xDADB,\n\t35888 - 11905: 0xC0BE,\n\t35889 - 11905: 0xC6D7,\n\t35890 - 11905: 0xDADC,\n\t35891 - 11905: 0xDADD,\n\t35892 - 11905: 0xC7B4,\n\t35893 - 11905: 0xDADE,\n\t35894 - 11905: 0xDADF,\n\t35895 - 11905: 0xB9C8,\n\t35896 - 11905: 0xD840,\n\t35897 - 11905: 0xD841,\n\t35898 - 11905: 0xD842,\n\t35899 - 11905: 0xD843,\n\t35900 - 11905: 0xD844,\n\t35901 - 11905: 0xD845,\n\t35902 - 11905: 0xD846,\n\t35903 - 11905: 0xD847,\n\t35904 - 11905: 0xD848,\n\t35905 - 11905: 0xBBED,\n\t35906 - 11905: 0xD849,\n\t35907 - 11905: 0xD84A,\n\t35908 - 11905: 0xD84B,\n\t35909 - 11905: 0xD84C,\n\t35910 - 11905: 0xB6B9,\n\t35911 - 11905: 0xF4F8,\n\t35912 - 11905: 0xD84D,\n\t35913 - 11905: 0xF4F9,\n\t35914 - 11905: 0xD84E,\n\t35915 - 11905: 0xD84F,\n\t35916 - 11905: 0xCDE3,\n\t35917 - 11905: 0xD850,\n\t35918 - 11905: 0xD851,\n\t35919 - 11905: 0xD852,\n\t35920 - 11905: 0xD853,\n\t35921 - 11905: 0xD854,\n\t35922 - 11905: 0xD855,\n\t35923 - 11905: 0xD856,\n\t35924 - 11905: 0xD857,\n\t35925 - 11905: 0xF5B9,\n\t35926 - 11905: 0xD858,\n\t35927 - 11905: 0xD859,\n\t35928 - 11905: 0xD85A,\n\t35929 - 11905: 0xD85B,\n\t35930 - 11905: 0xEBE0,\n\t35931 - 11905: 0xD85C,\n\t35932 - 11905: 0xD85D,\n\t35933 - 11905: 0xD85E,\n\t35934 - 11905: 0xD85F,\n\t35935 - 11905: 0xD860,\n\t35936 - 11905: 0xD861,\n\t35937 - 11905: 0xCFF3,\n\t35938 - 11905: 0xBBBF,\n\t35939 - 11905: 0xD862,\n\t35940 - 11905: 0xD863,\n\t35941 - 11905: 0xD864,\n\t35942 - 11905: 0xD865,\n\t35943 - 11905: 0xD866,\n\t35944 - 11905: 0xD867,\n\t35945 - 11905: 0xD868,\n\t35946 - 11905: 0xBAC0,\n\t35947 - 11905: 0xD4A5,\n\t35948 - 11905: 0xD869,\n\t35949 - 11905: 0xD86A,\n\t35950 - 11905: 0xD86B,\n\t35951 - 11905: 0xD86C,\n\t35952 - 11905: 0xD86D,\n\t35953 - 11905: 0xD86E,\n\t35954 - 11905: 0xD86F,\n\t35955 - 11905: 0xE1D9,\n\t35956 - 11905: 0xD870,\n\t35957 - 11905: 0xD871,\n\t35958 - 11905: 0xD872,\n\t35959 - 11905: 0xD873,\n\t35960 - 11905: 0xF5F4,\n\t35961 - 11905: 0xB1AA,\n\t35962 - 11905: 0xB2F2,\n\t35963 - 11905: 0xD874,\n\t35964 - 11905: 0xD875,\n\t35965 - 11905: 0xD876,\n\t35966 - 11905: 0xD877,\n\t35967 - 11905: 0xD878,\n\t35968 - 11905: 0xD879,\n\t35969 - 11905: 0xD87A,\n\t35970 - 11905: 0xF5F5,\n\t35971 - 11905: 0xD87B,\n\t35972 - 11905: 0xD87C,\n\t35973 - 11905: 0xF5F7,\n\t35974 - 11905: 0xD87D,\n\t35975 - 11905: 0xD87E,\n\t35976 - 11905: 0xD880,\n\t35977 - 11905: 0xBAD1,\n\t35978 - 11905: 0xF5F6,\n\t35979 - 11905: 0xD881,\n\t35980 - 11905: 0xC3B2,\n\t35981 - 11905: 0xD882,\n\t35982 - 11905: 0xD883,\n\t35983 - 11905: 0xD884,\n\t35984 - 11905: 0xD885,\n\t35985 - 11905: 0xD886,\n\t35986 - 11905: 0xD887,\n\t35987 - 11905: 0xD888,\n\t35988 - 11905: 0xF5F9,\n\t35989 - 11905: 0xD889,\n\t35990 - 11905: 0xD88A,\n\t35991 - 11905: 0xD88B,\n\t35992 - 11905: 0xF5F8,\n\t35993 - 11905: 0xD88C,\n\t35994 - 11905: 0xD88D,\n\t35995 - 11905: 0xD88E,\n\t35996 - 11905: 0xD88F,\n\t35997 - 11905: 0xD890,\n\t35998 - 11905: 0xD891,\n\t35999 - 11905: 0xD892,\n\t36000 - 11905: 0xD893,\n\t36001 - 11905: 0xD894,\n\t36002 - 11905: 0xD895,\n\t36003 - 11905: 0xD896,\n\t36004 - 11905: 0xD897,\n\t36005 - 11905: 0xD898,\n\t36006 - 11905: 0xD899,\n\t36007 - 11905: 0xD89A,\n\t36008 - 11905: 0xD89B,\n\t36009 - 11905: 0xD89C,\n\t36010 - 11905: 0xD89D,\n\t36011 - 11905: 0xD89E,\n\t36012 - 11905: 0xD89F,\n\t36013 - 11905: 0xD8A0,\n\t36014 - 11905: 0xD940,\n\t36015 - 11905: 0xD941,\n\t36016 - 11905: 0xD942,\n\t36017 - 11905: 0xD943,\n\t36018 - 11905: 0xD944,\n\t36019 - 11905: 0xD945,\n\t36020 - 11905: 0xD946,\n\t36021 - 11905: 0xD947,\n\t36022 - 11905: 0xD948,\n\t36023 - 11905: 0xD949,\n\t36024 - 11905: 0xD94A,\n\t36025 - 11905: 0xD94B,\n\t36026 - 11905: 0xD94C,\n\t36027 - 11905: 0xD94D,\n\t36028 - 11905: 0xD94E,\n\t36029 - 11905: 0xD94F,\n\t36030 - 11905: 0xD950,\n\t36031 - 11905: 0xD951,\n\t36032 - 11905: 0xD952,\n\t36033 - 11905: 0xD953,\n\t36034 - 11905: 0xD954,\n\t36035 - 11905: 0xD955,\n\t36036 - 11905: 0xD956,\n\t36037 - 11905: 0xD957,\n\t36038 - 11905: 0xD958,\n\t36039 - 11905: 0xD959,\n\t36040 - 11905: 0xD95A,\n\t36041 - 11905: 0xD95B,\n\t36042 - 11905: 0xD95C,\n\t36043 - 11905: 0xD95D,\n\t36044 - 11905: 0xD95E,\n\t36045 - 11905: 0xD95F,\n\t36046 - 11905: 0xD960,\n\t36047 - 11905: 0xD961,\n\t36048 - 11905: 0xD962,\n\t36049 - 11905: 0xD963,\n\t36050 - 11905: 0xD964,\n\t36051 - 11905: 0xD965,\n\t36052 - 11905: 0xD966,\n\t36053 - 11905: 0xD967,\n\t36054 - 11905: 0xD968,\n\t36055 - 11905: 0xD969,\n\t36056 - 11905: 0xD96A,\n\t36057 - 11905: 0xD96B,\n\t36058 - 11905: 0xD96C,\n\t36059 - 11905: 0xD96D,\n\t36060 - 11905: 0xD96E,\n\t36061 - 11905: 0xD96F,\n\t36062 - 11905: 0xD970,\n\t36063 - 11905: 0xD971,\n\t36064 - 11905: 0xD972,\n\t36065 - 11905: 0xD973,\n\t36066 - 11905: 0xD974,\n\t36067 - 11905: 0xD975,\n\t36068 - 11905: 0xD976,\n\t36069 - 11905: 0xD977,\n\t36070 - 11905: 0xD978,\n\t36071 - 11905: 0xD979,\n\t36072 - 11905: 0xD97A,\n\t36073 - 11905: 0xD97B,\n\t36074 - 11905: 0xD97C,\n\t36075 - 11905: 0xD97D,\n\t36076 - 11905: 0xD97E,\n\t36077 - 11905: 0xD980,\n\t36078 - 11905: 0xD981,\n\t36079 - 11905: 0xD982,\n\t36080 - 11905: 0xD983,\n\t36081 - 11905: 0xD984,\n\t36082 - 11905: 0xD985,\n\t36083 - 11905: 0xD986,\n\t36084 - 11905: 0xD987,\n\t36085 - 11905: 0xD988,\n\t36086 - 11905: 0xD989,\n\t36087 - 11905: 0xD98A,\n\t36088 - 11905: 0xD98B,\n\t36089 - 11905: 0xD98C,\n\t36090 - 11905: 0xD98D,\n\t36091 - 11905: 0xD98E,\n\t36092 - 11905: 0xD98F,\n\t36093 - 11905: 0xD990,\n\t36094 - 11905: 0xD991,\n\t36095 - 11905: 0xD992,\n\t36096 - 11905: 0xD993,\n\t36097 - 11905: 0xD994,\n\t36098 - 11905: 0xD995,\n\t36099 - 11905: 0xD996,\n\t36100 - 11905: 0xD997,\n\t36101 - 11905: 0xD998,\n\t36102 - 11905: 0xD999,\n\t36103 - 11905: 0xD99A,\n\t36104 - 11905: 0xD99B,\n\t36105 - 11905: 0xD99C,\n\t36106 - 11905: 0xD99D,\n\t36107 - 11905: 0xD99E,\n\t36108 - 11905: 0xD99F,\n\t36109 - 11905: 0xD9A0,\n\t36110 - 11905: 0xDA40,\n\t36111 - 11905: 0xDA41,\n\t36112 - 11905: 0xDA42,\n\t36113 - 11905: 0xDA43,\n\t36114 - 11905: 0xDA44,\n\t36115 - 11905: 0xDA45,\n\t36116 - 11905: 0xDA46,\n\t36117 - 11905: 0xDA47,\n\t36118 - 11905: 0xDA48,\n\t36119 - 11905: 0xDA49,\n\t36120 - 11905: 0xDA4A,\n\t36121 - 11905: 0xDA4B,\n\t36122 - 11905: 0xDA4C,\n\t36123 - 11905: 0xDA4D,\n\t36124 - 11905: 0xDA4E,\n\t36125 - 11905: 0xB1B4,\n\t36126 - 11905: 0xD5EA,\n\t36127 - 11905: 0xB8BA,\n\t36128 - 11905: 0xDA4F,\n\t36129 - 11905: 0xB9B1,\n\t36130 - 11905: 0xB2C6,\n\t36131 - 11905: 0xD4F0,\n\t36132 - 11905: 0xCFCD,\n\t36133 - 11905: 0xB0DC,\n\t36134 - 11905: 0xD5CB,\n\t36135 - 11905: 0xBBF5,\n\t36136 - 11905: 0xD6CA,\n\t36137 - 11905: 0xB7B7,\n\t36138 - 11905: 0xCCB0,\n\t36139 - 11905: 0xC6B6,\n\t36140 - 11905: 0xB1E1,\n\t36141 - 11905: 0xB9BA,\n\t36142 - 11905: 0xD6FC,\n\t36143 - 11905: 0xB9E1,\n\t36144 - 11905: 0xB7A1,\n\t36145 - 11905: 0xBCFA,\n\t36146 - 11905: 0xEADA,\n\t36147 - 11905: 0xEADB,\n\t36148 - 11905: 0xCCF9,\n\t36149 - 11905: 0xB9F3,\n\t36150 - 11905: 0xEADC,\n\t36151 - 11905: 0xB4FB,\n\t36152 - 11905: 0xC3B3,\n\t36153 - 11905: 0xB7D1,\n\t36154 - 11905: 0xBAD8,\n\t36155 - 11905: 0xEADD,\n\t36156 - 11905: 0xD4F4,\n\t36157 - 11905: 0xEADE,\n\t36158 - 11905: 0xBCD6,\n\t36159 - 11905: 0xBBDF,\n\t36160 - 11905: 0xEADF,\n\t36161 - 11905: 0xC1DE,\n\t36162 - 11905: 0xC2B8,\n\t36163 - 11905: 0xD4DF,\n\t36164 - 11905: 0xD7CA,\n\t36165 - 11905: 0xEAE0,\n\t36166 - 11905: 0xEAE1,\n\t36167 - 11905: 0xEAE4,\n\t36168 - 11905: 0xEAE2,\n\t36169 - 11905: 0xEAE3,\n\t36170 - 11905: 0xC9DE,\n\t36171 - 11905: 0xB8B3,\n\t36172 - 11905: 0xB6C4,\n\t36173 - 11905: 0xEAE5,\n\t36174 - 11905: 0xCAEA,\n\t36175 - 11905: 0xC9CD,\n\t36176 - 11905: 0xB4CD,\n\t36177 - 11905: 0xDA50,\n\t36178 - 11905: 0xDA51,\n\t36179 - 11905: 0xE2D9,\n\t36180 - 11905: 0xC5E2,\n\t36181 - 11905: 0xEAE6,\n\t36182 - 11905: 0xC0B5,\n\t36183 - 11905: 0xDA52,\n\t36184 - 11905: 0xD7B8,\n\t36185 - 11905: 0xEAE7,\n\t36186 - 11905: 0xD7AC,\n\t36187 - 11905: 0xC8FC,\n\t36188 - 11905: 0xD8D3,\n\t36189 - 11905: 0xD8CD,\n\t36190 - 11905: 0xD4DE,\n\t36191 - 11905: 0xDA53,\n\t36192 - 11905: 0xD4F9,\n\t36193 - 11905: 0xC9C4,\n\t36194 - 11905: 0xD3AE,\n\t36195 - 11905: 0xB8D3,\n\t36196 - 11905: 0xB3E0,\n\t36197 - 11905: 0xDA54,\n\t36198 - 11905: 0xC9E2,\n\t36199 - 11905: 0xF4F6,\n\t36200 - 11905: 0xDA55,\n\t36201 - 11905: 0xDA56,\n\t36202 - 11905: 0xDA57,\n\t36203 - 11905: 0xBAD5,\n\t36204 - 11905: 0xDA58,\n\t36205 - 11905: 0xF4F7,\n\t36206 - 11905: 0xDA59,\n\t36207 - 11905: 0xDA5A,\n\t36208 - 11905: 0xD7DF,\n\t36209 - 11905: 0xDA5B,\n\t36210 - 11905: 0xDA5C,\n\t36211 - 11905: 0xF4F1,\n\t36212 - 11905: 0xB8B0,\n\t36213 - 11905: 0xD5D4,\n\t36214 - 11905: 0xB8CF,\n\t36215 - 11905: 0xC6F0,\n\t36216 - 11905: 0xDA5D,\n\t36217 - 11905: 0xDA5E,\n\t36218 - 11905: 0xDA5F,\n\t36219 - 11905: 0xDA60,\n\t36220 - 11905: 0xDA61,\n\t36221 - 11905: 0xDA62,\n\t36222 - 11905: 0xDA63,\n\t36223 - 11905: 0xDA64,\n\t36224 - 11905: 0xDA65,\n\t36225 - 11905: 0xB3C3,\n\t36226 - 11905: 0xDA66,\n\t36227 - 11905: 0xDA67,\n\t36228 - 11905: 0xF4F2,\n\t36229 - 11905: 0xB3AC,\n\t36230 - 11905: 0xDA68,\n\t36231 - 11905: 0xDA69,\n\t36232 - 11905: 0xDA6A,\n\t36233 - 11905: 0xDA6B,\n\t36234 - 11905: 0xD4BD,\n\t36235 - 11905: 0xC7F7,\n\t36236 - 11905: 0xDA6C,\n\t36237 - 11905: 0xDA6D,\n\t36238 - 11905: 0xDA6E,\n\t36239 - 11905: 0xDA6F,\n\t36240 - 11905: 0xDA70,\n\t36241 - 11905: 0xF4F4,\n\t36242 - 11905: 0xDA71,\n\t36243 - 11905: 0xDA72,\n\t36244 - 11905: 0xF4F3,\n\t36245 - 11905: 0xDA73,\n\t36246 - 11905: 0xDA74,\n\t36247 - 11905: 0xDA75,\n\t36248 - 11905: 0xDA76,\n\t36249 - 11905: 0xDA77,\n\t36250 - 11905: 0xDA78,\n\t36251 - 11905: 0xDA79,\n\t36252 - 11905: 0xDA7A,\n\t36253 - 11905: 0xDA7B,\n\t36254 - 11905: 0xDA7C,\n\t36255 - 11905: 0xCCCB,\n\t36256 - 11905: 0xDA7D,\n\t36257 - 11905: 0xDA7E,\n\t36258 - 11905: 0xDA80,\n\t36259 - 11905: 0xC8A4,\n\t36260 - 11905: 0xDA81,\n\t36261 - 11905: 0xDA82,\n\t36262 - 11905: 0xDA83,\n\t36263 - 11905: 0xDA84,\n\t36264 - 11905: 0xDA85,\n\t36265 - 11905: 0xDA86,\n\t36266 - 11905: 0xDA87,\n\t36267 - 11905: 0xDA88,\n\t36268 - 11905: 0xDA89,\n\t36269 - 11905: 0xDA8A,\n\t36270 - 11905: 0xDA8B,\n\t36271 - 11905: 0xDA8C,\n\t36272 - 11905: 0xDA8D,\n\t36273 - 11905: 0xF4F5,\n\t36274 - 11905: 0xDA8E,\n\t36275 - 11905: 0xD7E3,\n\t36276 - 11905: 0xC5BF,\n\t36277 - 11905: 0xF5C0,\n\t36278 - 11905: 0xDA8F,\n\t36279 - 11905: 0xDA90,\n\t36280 - 11905: 0xF5BB,\n\t36281 - 11905: 0xDA91,\n\t36282 - 11905: 0xF5C3,\n\t36283 - 11905: 0xDA92,\n\t36284 - 11905: 0xF5C2,\n\t36285 - 11905: 0xDA93,\n\t36286 - 11905: 0xD6BA,\n\t36287 - 11905: 0xF5C1,\n\t36288 - 11905: 0xDA94,\n\t36289 - 11905: 0xDA95,\n\t36290 - 11905: 0xDA96,\n\t36291 - 11905: 0xD4BE,\n\t36292 - 11905: 0xF5C4,\n\t36293 - 11905: 0xDA97,\n\t36294 - 11905: 0xF5CC,\n\t36295 - 11905: 0xDA98,\n\t36296 - 11905: 0xDA99,\n\t36297 - 11905: 0xDA9A,\n\t36298 - 11905: 0xDA9B,\n\t36299 - 11905: 0xB0CF,\n\t36300 - 11905: 0xB5F8,\n\t36301 - 11905: 0xDA9C,\n\t36302 - 11905: 0xF5C9,\n\t36303 - 11905: 0xF5CA,\n\t36304 - 11905: 0xDA9D,\n\t36305 - 11905: 0xC5DC,\n\t36306 - 11905: 0xDA9E,\n\t36307 - 11905: 0xDA9F,\n\t36308 - 11905: 0xDAA0,\n\t36309 - 11905: 0xDB40,\n\t36310 - 11905: 0xF5C5,\n\t36311 - 11905: 0xF5C6,\n\t36312 - 11905: 0xDB41,\n\t36313 - 11905: 0xDB42,\n\t36314 - 11905: 0xF5C7,\n\t36315 - 11905: 0xF5CB,\n\t36316 - 11905: 0xDB43,\n\t36317 - 11905: 0xBEE0,\n\t36318 - 11905: 0xF5C8,\n\t36319 - 11905: 0xB8FA,\n\t36320 - 11905: 0xDB44,\n\t36321 - 11905: 0xDB45,\n\t36322 - 11905: 0xDB46,\n\t36323 - 11905: 0xF5D0,\n\t36324 - 11905: 0xF5D3,\n\t36325 - 11905: 0xDB47,\n\t36326 - 11905: 0xDB48,\n\t36327 - 11905: 0xDB49,\n\t36328 - 11905: 0xBFE7,\n\t36329 - 11905: 0xDB4A,\n\t36330 - 11905: 0xB9F2,\n\t36331 - 11905: 0xF5BC,\n\t36332 - 11905: 0xF5CD,\n\t36333 - 11905: 0xDB4B,\n\t36334 - 11905: 0xDB4C,\n\t36335 - 11905: 0xC2B7,\n\t36336 - 11905: 0xDB4D,\n\t36337 - 11905: 0xDB4E,\n\t36338 - 11905: 0xDB4F,\n\t36339 - 11905: 0xCCF8,\n\t36340 - 11905: 0xDB50,\n\t36341 - 11905: 0xBCF9,\n\t36342 - 11905: 0xDB51,\n\t36343 - 11905: 0xF5CE,\n\t36344 - 11905: 0xF5CF,\n\t36345 - 11905: 0xF5D1,\n\t36346 - 11905: 0xB6E5,\n\t36347 - 11905: 0xF5D2,\n\t36348 - 11905: 0xDB52,\n\t36349 - 11905: 0xF5D5,\n\t36350 - 11905: 0xDB53,\n\t36351 - 11905: 0xDB54,\n\t36352 - 11905: 0xDB55,\n\t36353 - 11905: 0xDB56,\n\t36354 - 11905: 0xDB57,\n\t36355 - 11905: 0xDB58,\n\t36356 - 11905: 0xDB59,\n\t36357 - 11905: 0xF5BD,\n\t36358 - 11905: 0xDB5A,\n\t36359 - 11905: 0xDB5B,\n\t36360 - 11905: 0xDB5C,\n\t36361 - 11905: 0xF5D4,\n\t36362 - 11905: 0xD3BB,\n\t36363 - 11905: 0xDB5D,\n\t36364 - 11905: 0xB3EC,\n\t36365 - 11905: 0xDB5E,\n\t36366 - 11905: 0xDB5F,\n\t36367 - 11905: 0xCCA4,\n\t36368 - 11905: 0xDB60,\n\t36369 - 11905: 0xDB61,\n\t36370 - 11905: 0xDB62,\n\t36371 - 11905: 0xDB63,\n\t36372 - 11905: 0xF5D6,\n\t36373 - 11905: 0xDB64,\n\t36374 - 11905: 0xDB65,\n\t36375 - 11905: 0xDB66,\n\t36376 - 11905: 0xDB67,\n\t36377 - 11905: 0xDB68,\n\t36378 - 11905: 0xDB69,\n\t36379 - 11905: 0xDB6A,\n\t36380 - 11905: 0xDB6B,\n\t36381 - 11905: 0xF5D7,\n\t36382 - 11905: 0xBEE1,\n\t36383 - 11905: 0xF5D8,\n\t36384 - 11905: 0xDB6C,\n\t36385 - 11905: 0xDB6D,\n\t36386 - 11905: 0xCCDF,\n\t36387 - 11905: 0xF5DB,\n\t36388 - 11905: 0xDB6E,\n\t36389 - 11905: 0xDB6F,\n\t36390 - 11905: 0xDB70,\n\t36391 - 11905: 0xDB71,\n\t36392 - 11905: 0xDB72,\n\t36393 - 11905: 0xB2C8,\n\t36394 - 11905: 0xD7D9,\n\t36395 - 11905: 0xDB73,\n\t36396 - 11905: 0xF5D9,\n\t36397 - 11905: 0xDB74,\n\t36398 - 11905: 0xF5DA,\n\t36399 - 11905: 0xF5DC,\n\t36400 - 11905: 0xDB75,\n\t36401 - 11905: 0xF5E2,\n\t36402 - 11905: 0xDB76,\n\t36403 - 11905: 0xDB77,\n\t36404 - 11905: 0xDB78,\n\t36405 - 11905: 0xF5E0,\n\t36406 - 11905: 0xDB79,\n\t36407 - 11905: 0xDB7A,\n\t36408 - 11905: 0xDB7B,\n\t36409 - 11905: 0xF5DF,\n\t36410 - 11905: 0xF5DD,\n\t36411 - 11905: 0xDB7C,\n\t36412 - 11905: 0xDB7D,\n\t36413 - 11905: 0xF5E1,\n\t36414 - 11905: 0xDB7E,\n\t36415 - 11905: 0xDB80,\n\t36416 - 11905: 0xF5DE,\n\t36417 - 11905: 0xF5E4,\n\t36418 - 11905: 0xF5E5,\n\t36419 - 11905: 0xDB81,\n\t36420 - 11905: 0xCCE3,\n\t36421 - 11905: 0xDB82,\n\t36422 - 11905: 0xDB83,\n\t36423 - 11905: 0xE5BF,\n\t36424 - 11905: 0xB5B8,\n\t36425 - 11905: 0xF5E3,\n\t36426 - 11905: 0xF5E8,\n\t36427 - 11905: 0xCCA3,\n\t36428 - 11905: 0xDB84,\n\t36429 - 11905: 0xDB85,\n\t36430 - 11905: 0xDB86,\n\t36431 - 11905: 0xDB87,\n\t36432 - 11905: 0xDB88,\n\t36433 - 11905: 0xF5E6,\n\t36434 - 11905: 0xF5E7,\n\t36435 - 11905: 0xDB89,\n\t36436 - 11905: 0xDB8A,\n\t36437 - 11905: 0xDB8B,\n\t36438 - 11905: 0xDB8C,\n\t36439 - 11905: 0xDB8D,\n\t36440 - 11905: 0xDB8E,\n\t36441 - 11905: 0xF5BE,\n\t36442 - 11905: 0xDB8F,\n\t36443 - 11905: 0xDB90,\n\t36444 - 11905: 0xDB91,\n\t36445 - 11905: 0xDB92,\n\t36446 - 11905: 0xDB93,\n\t36447 - 11905: 0xDB94,\n\t36448 - 11905: 0xDB95,\n\t36449 - 11905: 0xDB96,\n\t36450 - 11905: 0xDB97,\n\t36451 - 11905: 0xDB98,\n\t36452 - 11905: 0xDB99,\n\t36453 - 11905: 0xDB9A,\n\t36454 - 11905: 0xB1C4,\n\t36455 - 11905: 0xDB9B,\n\t36456 - 11905: 0xDB9C,\n\t36457 - 11905: 0xF5BF,\n\t36458 - 11905: 0xDB9D,\n\t36459 - 11905: 0xDB9E,\n\t36460 - 11905: 0xB5C5,\n\t36461 - 11905: 0xB2E4,\n\t36462 - 11905: 0xDB9F,\n\t36463 - 11905: 0xF5EC,\n\t36464 - 11905: 0xF5E9,\n\t36465 - 11905: 0xDBA0,\n\t36466 - 11905: 0xB6D7,\n\t36467 - 11905: 0xDC40,\n\t36468 - 11905: 0xF5ED,\n\t36469 - 11905: 0xDC41,\n\t36470 - 11905: 0xF5EA,\n\t36471 - 11905: 0xDC42,\n\t36472 - 11905: 0xDC43,\n\t36473 - 11905: 0xDC44,\n\t36474 - 11905: 0xDC45,\n\t36475 - 11905: 0xDC46,\n\t36476 - 11905: 0xF5EB,\n\t36477 - 11905: 0xDC47,\n\t36478 - 11905: 0xDC48,\n\t36479 - 11905: 0xB4DA,\n\t36480 - 11905: 0xDC49,\n\t36481 - 11905: 0xD4EA,\n\t36482 - 11905: 0xDC4A,\n\t36483 - 11905: 0xDC4B,\n\t36484 - 11905: 0xDC4C,\n\t36485 - 11905: 0xF5EE,\n\t36486 - 11905: 0xDC4D,\n\t36487 - 11905: 0xB3F9,\n\t36488 - 11905: 0xDC4E,\n\t36489 - 11905: 0xDC4F,\n\t36490 - 11905: 0xDC50,\n\t36491 - 11905: 0xDC51,\n\t36492 - 11905: 0xDC52,\n\t36493 - 11905: 0xDC53,\n\t36494 - 11905: 0xDC54,\n\t36495 - 11905: 0xF5EF,\n\t36496 - 11905: 0xF5F1,\n\t36497 - 11905: 0xDC55,\n\t36498 - 11905: 0xDC56,\n\t36499 - 11905: 0xDC57,\n\t36500 - 11905: 0xF5F0,\n\t36501 - 11905: 0xDC58,\n\t36502 - 11905: 0xDC59,\n\t36503 - 11905: 0xDC5A,\n\t36504 - 11905: 0xDC5B,\n\t36505 - 11905: 0xDC5C,\n\t36506 - 11905: 0xDC5D,\n\t36507 - 11905: 0xDC5E,\n\t36508 - 11905: 0xF5F2,\n\t36509 - 11905: 0xDC5F,\n\t36510 - 11905: 0xF5F3,\n\t36511 - 11905: 0xDC60,\n\t36512 - 11905: 0xDC61,\n\t36513 - 11905: 0xDC62,\n\t36514 - 11905: 0xDC63,\n\t36515 - 11905: 0xDC64,\n\t36516 - 11905: 0xDC65,\n\t36517 - 11905: 0xDC66,\n\t36518 - 11905: 0xDC67,\n\t36519 - 11905: 0xDC68,\n\t36520 - 11905: 0xDC69,\n\t36521 - 11905: 0xDC6A,\n\t36522 - 11905: 0xDC6B,\n\t36523 - 11905: 0xC9ED,\n\t36524 - 11905: 0xB9AA,\n\t36525 - 11905: 0xDC6C,\n\t36526 - 11905: 0xDC6D,\n\t36527 - 11905: 0xC7FB,\n\t36528 - 11905: 0xDC6E,\n\t36529 - 11905: 0xDC6F,\n\t36530 - 11905: 0xB6E3,\n\t36531 - 11905: 0xDC70,\n\t36532 - 11905: 0xDC71,\n\t36533 - 11905: 0xDC72,\n\t36534 - 11905: 0xDC73,\n\t36535 - 11905: 0xDC74,\n\t36536 - 11905: 0xDC75,\n\t36537 - 11905: 0xDC76,\n\t36538 - 11905: 0xCCC9,\n\t36539 - 11905: 0xDC77,\n\t36540 - 11905: 0xDC78,\n\t36541 - 11905: 0xDC79,\n\t36542 - 11905: 0xDC7A,\n\t36543 - 11905: 0xDC7B,\n\t36544 - 11905: 0xDC7C,\n\t36545 - 11905: 0xDC7D,\n\t36546 - 11905: 0xDC7E,\n\t36547 - 11905: 0xDC80,\n\t36548 - 11905: 0xDC81,\n\t36549 - 11905: 0xDC82,\n\t36550 - 11905: 0xDC83,\n\t36551 - 11905: 0xDC84,\n\t36552 - 11905: 0xDC85,\n\t36553 - 11905: 0xDC86,\n\t36554 - 11905: 0xDC87,\n\t36555 - 11905: 0xDC88,\n\t36556 - 11905: 0xDC89,\n\t36557 - 11905: 0xDC8A,\n\t36558 - 11905: 0xEAA6,\n\t36559 - 11905: 0xDC8B,\n\t36560 - 11905: 0xDC8C,\n\t36561 - 11905: 0xDC8D,\n\t36562 - 11905: 0xDC8E,\n\t36563 - 11905: 0xDC8F,\n\t36564 - 11905: 0xDC90,\n\t36565 - 11905: 0xDC91,\n\t36566 - 11905: 0xDC92,\n\t36567 - 11905: 0xDC93,\n\t36568 - 11905: 0xDC94,\n\t36569 - 11905: 0xDC95,\n\t36570 - 11905: 0xDC96,\n\t36571 - 11905: 0xDC97,\n\t36572 - 11905: 0xDC98,\n\t36573 - 11905: 0xDC99,\n\t36574 - 11905: 0xDC9A,\n\t36575 - 11905: 0xDC9B,\n\t36576 - 11905: 0xDC9C,\n\t36577 - 11905: 0xDC9D,\n\t36578 - 11905: 0xDC9E,\n\t36579 - 11905: 0xDC9F,\n\t36580 - 11905: 0xDCA0,\n\t36581 - 11905: 0xDD40,\n\t36582 - 11905: 0xDD41,\n\t36583 - 11905: 0xDD42,\n\t36584 - 11905: 0xDD43,\n\t36585 - 11905: 0xDD44,\n\t36586 - 11905: 0xDD45,\n\t36587 - 11905: 0xDD46,\n\t36588 - 11905: 0xDD47,\n\t36589 - 11905: 0xDD48,\n\t36590 - 11905: 0xDD49,\n\t36591 - 11905: 0xDD4A,\n\t36592 - 11905: 0xDD4B,\n\t36593 - 11905: 0xDD4C,\n\t36594 - 11905: 0xDD4D,\n\t36595 - 11905: 0xDD4E,\n\t36596 - 11905: 0xDD4F,\n\t36597 - 11905: 0xDD50,\n\t36598 - 11905: 0xDD51,\n\t36599 - 11905: 0xDD52,\n\t36600 - 11905: 0xDD53,\n\t36601 - 11905: 0xDD54,\n\t36602 - 11905: 0xDD55,\n\t36603 - 11905: 0xDD56,\n\t36604 - 11905: 0xDD57,\n\t36605 - 11905: 0xDD58,\n\t36606 - 11905: 0xDD59,\n\t36607 - 11905: 0xDD5A,\n\t36608 - 11905: 0xDD5B,\n\t36609 - 11905: 0xDD5C,\n\t36610 - 11905: 0xDD5D,\n\t36611 - 11905: 0xDD5E,\n\t36612 - 11905: 0xDD5F,\n\t36613 - 11905: 0xDD60,\n\t36614 - 11905: 0xDD61,\n\t36615 - 11905: 0xDD62,\n\t36616 - 11905: 0xDD63,\n\t36617 - 11905: 0xDD64,\n\t36618 - 11905: 0xDD65,\n\t36619 - 11905: 0xDD66,\n\t36620 - 11905: 0xDD67,\n\t36621 - 11905: 0xDD68,\n\t36622 - 11905: 0xDD69,\n\t36623 - 11905: 0xDD6A,\n\t36624 - 11905: 0xDD6B,\n\t36625 - 11905: 0xDD6C,\n\t36626 - 11905: 0xDD6D,\n\t36627 - 11905: 0xDD6E,\n\t36628 - 11905: 0xDD6F,\n\t36629 - 11905: 0xDD70,\n\t36630 - 11905: 0xDD71,\n\t36631 - 11905: 0xDD72,\n\t36632 - 11905: 0xDD73,\n\t36633 - 11905: 0xDD74,\n\t36634 - 11905: 0xDD75,\n\t36635 - 11905: 0xDD76,\n\t36636 - 11905: 0xDD77,\n\t36637 - 11905: 0xDD78,\n\t36638 - 11905: 0xDD79,\n\t36639 - 11905: 0xDD7A,\n\t36640 - 11905: 0xDD7B,\n\t36641 - 11905: 0xDD7C,\n\t36642 - 11905: 0xDD7D,\n\t36643 - 11905: 0xDD7E,\n\t36644 - 11905: 0xDD80,\n\t36645 - 11905: 0xDD81,\n\t36646 - 11905: 0xDD82,\n\t36647 - 11905: 0xDD83,\n\t36648 - 11905: 0xDD84,\n\t36649 - 11905: 0xDD85,\n\t36650 - 11905: 0xDD86,\n\t36651 - 11905: 0xDD87,\n\t36652 - 11905: 0xDD88,\n\t36653 - 11905: 0xDD89,\n\t36654 - 11905: 0xDD8A,\n\t36655 - 11905: 0xDD8B,\n\t36656 - 11905: 0xDD8C,\n\t36657 - 11905: 0xDD8D,\n\t36658 - 11905: 0xDD8E,\n\t36659 - 11905: 0xDD8F,\n\t36660 - 11905: 0xDD90,\n\t36661 - 11905: 0xDD91,\n\t36662 - 11905: 0xDD92,\n\t36663 - 11905: 0xDD93,\n\t36664 - 11905: 0xDD94,\n\t36665 - 11905: 0xDD95,\n\t36666 - 11905: 0xDD96,\n\t36667 - 11905: 0xDD97,\n\t36668 - 11905: 0xDD98,\n\t36669 - 11905: 0xDD99,\n\t36670 - 11905: 0xDD9A,\n\t36671 - 11905: 0xDD9B,\n\t36672 - 11905: 0xDD9C,\n\t36673 - 11905: 0xDD9D,\n\t36674 - 11905: 0xDD9E,\n\t36675 - 11905: 0xDD9F,\n\t36676 - 11905: 0xDDA0,\n\t36677 - 11905: 0xDE40,\n\t36678 - 11905: 0xDE41,\n\t36679 - 11905: 0xDE42,\n\t36680 - 11905: 0xDE43,\n\t36681 - 11905: 0xDE44,\n\t36682 - 11905: 0xDE45,\n\t36683 - 11905: 0xDE46,\n\t36684 - 11905: 0xDE47,\n\t36685 - 11905: 0xDE48,\n\t36686 - 11905: 0xDE49,\n\t36687 - 11905: 0xDE4A,\n\t36688 - 11905: 0xDE4B,\n\t36689 - 11905: 0xDE4C,\n\t36690 - 11905: 0xDE4D,\n\t36691 - 11905: 0xDE4E,\n\t36692 - 11905: 0xDE4F,\n\t36693 - 11905: 0xDE50,\n\t36694 - 11905: 0xDE51,\n\t36695 - 11905: 0xDE52,\n\t36696 - 11905: 0xDE53,\n\t36697 - 11905: 0xDE54,\n\t36698 - 11905: 0xDE55,\n\t36699 - 11905: 0xDE56,\n\t36700 - 11905: 0xDE57,\n\t36701 - 11905: 0xDE58,\n\t36702 - 11905: 0xDE59,\n\t36703 - 11905: 0xDE5A,\n\t36704 - 11905: 0xDE5B,\n\t36705 - 11905: 0xDE5C,\n\t36706 - 11905: 0xDE5D,\n\t36707 - 11905: 0xDE5E,\n\t36708 - 11905: 0xDE5F,\n\t36709 - 11905: 0xDE60,\n\t36710 - 11905: 0xB3B5,\n\t36711 - 11905: 0xD4FE,\n\t36712 - 11905: 0xB9EC,\n\t36713 - 11905: 0xD0F9,\n\t36714 - 11905: 0xDE61,\n\t36715 - 11905: 0xE9ED,\n\t36716 - 11905: 0xD7AA,\n\t36717 - 11905: 0xE9EE,\n\t36718 - 11905: 0xC2D6,\n\t36719 - 11905: 0xC8ED,\n\t36720 - 11905: 0xBAE4,\n\t36721 - 11905: 0xE9EF,\n\t36722 - 11905: 0xE9F0,\n\t36723 - 11905: 0xE9F1,\n\t36724 - 11905: 0xD6E1,\n\t36725 - 11905: 0xE9F2,\n\t36726 - 11905: 0xE9F3,\n\t36727 - 11905: 0xE9F5,\n\t36728 - 11905: 0xE9F4,\n\t36729 - 11905: 0xE9F6,\n\t36730 - 11905: 0xE9F7,\n\t36731 - 11905: 0xC7E1,\n\t36732 - 11905: 0xE9F8,\n\t36733 - 11905: 0xD4D8,\n\t36734 - 11905: 0xE9F9,\n\t36735 - 11905: 0xBDCE,\n\t36736 - 11905: 0xDE62,\n\t36737 - 11905: 0xE9FA,\n\t36738 - 11905: 0xE9FB,\n\t36739 - 11905: 0xBDCF,\n\t36740 - 11905: 0xE9FC,\n\t36741 - 11905: 0xB8A8,\n\t36742 - 11905: 0xC1BE,\n\t36743 - 11905: 0xE9FD,\n\t36744 - 11905: 0xB1B2,\n\t36745 - 11905: 0xBBD4,\n\t36746 - 11905: 0xB9F5,\n\t36747 - 11905: 0xE9FE,\n\t36748 - 11905: 0xDE63,\n\t36749 - 11905: 0xEAA1,\n\t36750 - 11905: 0xEAA2,\n\t36751 - 11905: 0xEAA3,\n\t36752 - 11905: 0xB7F8,\n\t36753 - 11905: 0xBCAD,\n\t36754 - 11905: 0xDE64,\n\t36755 - 11905: 0xCAE4,\n\t36756 - 11905: 0xE0CE,\n\t36757 - 11905: 0xD4AF,\n\t36758 - 11905: 0xCFBD,\n\t36759 - 11905: 0xD5B7,\n\t36760 - 11905: 0xEAA4,\n\t36761 - 11905: 0xD5DE,\n\t36762 - 11905: 0xEAA5,\n\t36763 - 11905: 0xD0C1,\n\t36764 - 11905: 0xB9BC,\n\t36765 - 11905: 0xDE65,\n\t36766 - 11905: 0xB4C7,\n\t36767 - 11905: 0xB1D9,\n\t36768 - 11905: 0xDE66,\n\t36769 - 11905: 0xDE67,\n\t36770 - 11905: 0xDE68,\n\t36771 - 11905: 0xC0B1,\n\t36772 - 11905: 0xDE69,\n\t36773 - 11905: 0xDE6A,\n\t36774 - 11905: 0xDE6B,\n\t36775 - 11905: 0xDE6C,\n\t36776 - 11905: 0xB1E6,\n\t36777 - 11905: 0xB1E7,\n\t36778 - 11905: 0xDE6D,\n\t36779 - 11905: 0xB1E8,\n\t36780 - 11905: 0xDE6E,\n\t36781 - 11905: 0xDE6F,\n\t36782 - 11905: 0xDE70,\n\t36783 - 11905: 0xDE71,\n\t36784 - 11905: 0xB3BD,\n\t36785 - 11905: 0xC8E8,\n\t36786 - 11905: 0xDE72,\n\t36787 - 11905: 0xDE73,\n\t36788 - 11905: 0xDE74,\n\t36789 - 11905: 0xDE75,\n\t36790 - 11905: 0xE5C1,\n\t36791 - 11905: 0xDE76,\n\t36792 - 11905: 0xDE77,\n\t36793 - 11905: 0xB1DF,\n\t36794 - 11905: 0xDE78,\n\t36795 - 11905: 0xDE79,\n\t36796 - 11905: 0xDE7A,\n\t36797 - 11905: 0xC1C9,\n\t36798 - 11905: 0xB4EF,\n\t36799 - 11905: 0xDE7B,\n\t36800 - 11905: 0xDE7C,\n\t36801 - 11905: 0xC7A8,\n\t36802 - 11905: 0xD3D8,\n\t36803 - 11905: 0xDE7D,\n\t36804 - 11905: 0xC6F9,\n\t36805 - 11905: 0xD1B8,\n\t36806 - 11905: 0xDE7E,\n\t36807 - 11905: 0xB9FD,\n\t36808 - 11905: 0xC2F5,\n\t36809 - 11905: 0xDE80,\n\t36810 - 11905: 0xDE81,\n\t36811 - 11905: 0xDE82,\n\t36812 - 11905: 0xDE83,\n\t36813 - 11905: 0xDE84,\n\t36814 - 11905: 0xD3AD,\n\t36815 - 11905: 0xDE85,\n\t36816 - 11905: 0xD4CB,\n\t36817 - 11905: 0xBDFC,\n\t36818 - 11905: 0xDE86,\n\t36819 - 11905: 0xE5C2,\n\t36820 - 11905: 0xB7B5,\n\t36821 - 11905: 0xE5C3,\n\t36822 - 11905: 0xDE87,\n\t36823 - 11905: 0xDE88,\n\t36824 - 11905: 0xBBB9,\n\t36825 - 11905: 0xD5E2,\n\t36826 - 11905: 0xDE89,\n\t36827 - 11905: 0xBDF8,\n\t36828 - 11905: 0xD4B6,\n\t36829 - 11905: 0xCEA5,\n\t36830 - 11905: 0xC1AC,\n\t36831 - 11905: 0xB3D9,\n\t36832 - 11905: 0xDE8A,\n\t36833 - 11905: 0xDE8B,\n\t36834 - 11905: 0xCCF6,\n\t36835 - 11905: 0xDE8C,\n\t36836 - 11905: 0xE5C6,\n\t36837 - 11905: 0xE5C4,\n\t36838 - 11905: 0xE5C8,\n\t36839 - 11905: 0xDE8D,\n\t36840 - 11905: 0xE5CA,\n\t36841 - 11905: 0xE5C7,\n\t36842 - 11905: 0xB5CF,\n\t36843 - 11905: 0xC6C8,\n\t36844 - 11905: 0xDE8E,\n\t36845 - 11905: 0xB5FC,\n\t36846 - 11905: 0xE5C5,\n\t36847 - 11905: 0xDE8F,\n\t36848 - 11905: 0xCAF6,\n\t36849 - 11905: 0xDE90,\n\t36850 - 11905: 0xDE91,\n\t36851 - 11905: 0xE5C9,\n\t36852 - 11905: 0xDE92,\n\t36853 - 11905: 0xDE93,\n\t36854 - 11905: 0xDE94,\n\t36855 - 11905: 0xC3D4,\n\t36856 - 11905: 0xB1C5,\n\t36857 - 11905: 0xBCA3,\n\t36858 - 11905: 0xDE95,\n\t36859 - 11905: 0xDE96,\n\t36860 - 11905: 0xDE97,\n\t36861 - 11905: 0xD7B7,\n\t36862 - 11905: 0xDE98,\n\t36863 - 11905: 0xDE99,\n\t36864 - 11905: 0xCDCB,\n\t36865 - 11905: 0xCBCD,\n\t36866 - 11905: 0xCACA,\n\t36867 - 11905: 0xCCD3,\n\t36868 - 11905: 0xE5CC,\n\t36869 - 11905: 0xE5CB,\n\t36870 - 11905: 0xC4E6,\n\t36871 - 11905: 0xDE9A,\n\t36872 - 11905: 0xDE9B,\n\t36873 - 11905: 0xD1A1,\n\t36874 - 11905: 0xD1B7,\n\t36875 - 11905: 0xE5CD,\n\t36876 - 11905: 0xDE9C,\n\t36877 - 11905: 0xE5D0,\n\t36878 - 11905: 0xDE9D,\n\t36879 - 11905: 0xCDB8,\n\t36880 - 11905: 0xD6F0,\n\t36881 - 11905: 0xE5CF,\n\t36882 - 11905: 0xB5DD,\n\t36883 - 11905: 0xDE9E,\n\t36884 - 11905: 0xCDBE,\n\t36885 - 11905: 0xDE9F,\n\t36886 - 11905: 0xE5D1,\n\t36887 - 11905: 0xB6BA,\n\t36888 - 11905: 0xDEA0,\n\t36889 - 11905: 0xDF40,\n\t36890 - 11905: 0xCDA8,\n\t36891 - 11905: 0xB9E4,\n\t36892 - 11905: 0xDF41,\n\t36893 - 11905: 0xCAC5,\n\t36894 - 11905: 0xB3D1,\n\t36895 - 11905: 0xCBD9,\n\t36896 - 11905: 0xD4EC,\n\t36897 - 11905: 0xE5D2,\n\t36898 - 11905: 0xB7EA,\n\t36899 - 11905: 0xDF42,\n\t36900 - 11905: 0xDF43,\n\t36901 - 11905: 0xDF44,\n\t36902 - 11905: 0xE5CE,\n\t36903 - 11905: 0xDF45,\n\t36904 - 11905: 0xDF46,\n\t36905 - 11905: 0xDF47,\n\t36906 - 11905: 0xDF48,\n\t36907 - 11905: 0xDF49,\n\t36908 - 11905: 0xDF4A,\n\t36909 - 11905: 0xE5D5,\n\t36910 - 11905: 0xB4FE,\n\t36911 - 11905: 0xE5D6,\n\t36912 - 11905: 0xDF4B,\n\t36913 - 11905: 0xDF4C,\n\t36914 - 11905: 0xDF4D,\n\t36915 - 11905: 0xDF4E,\n\t36916 - 11905: 0xDF4F,\n\t36917 - 11905: 0xE5D3,\n\t36918 - 11905: 0xE5D4,\n\t36919 - 11905: 0xDF50,\n\t36920 - 11905: 0xD2DD,\n\t36921 - 11905: 0xDF51,\n\t36922 - 11905: 0xDF52,\n\t36923 - 11905: 0xC2DF,\n\t36924 - 11905: 0xB1C6,\n\t36925 - 11905: 0xDF53,\n\t36926 - 11905: 0xD3E2,\n\t36927 - 11905: 0xDF54,\n\t36928 - 11905: 0xDF55,\n\t36929 - 11905: 0xB6DD,\n\t36930 - 11905: 0xCBEC,\n\t36931 - 11905: 0xDF56,\n\t36932 - 11905: 0xE5D7,\n\t36933 - 11905: 0xDF57,\n\t36934 - 11905: 0xDF58,\n\t36935 - 11905: 0xD3F6,\n\t36936 - 11905: 0xDF59,\n\t36937 - 11905: 0xDF5A,\n\t36938 - 11905: 0xDF5B,\n\t36939 - 11905: 0xDF5C,\n\t36940 - 11905: 0xDF5D,\n\t36941 - 11905: 0xB1E9,\n\t36942 - 11905: 0xDF5E,\n\t36943 - 11905: 0xB6F4,\n\t36944 - 11905: 0xE5DA,\n\t36945 - 11905: 0xE5D8,\n\t36946 - 11905: 0xE5D9,\n\t36947 - 11905: 0xB5C0,\n\t36948 - 11905: 0xDF5F,\n\t36949 - 11905: 0xDF60,\n\t36950 - 11905: 0xDF61,\n\t36951 - 11905: 0xD2C5,\n\t36952 - 11905: 0xE5DC,\n\t36953 - 11905: 0xDF62,\n\t36954 - 11905: 0xDF63,\n\t36955 - 11905: 0xE5DE,\n\t36956 - 11905: 0xDF64,\n\t36957 - 11905: 0xDF65,\n\t36958 - 11905: 0xDF66,\n\t36959 - 11905: 0xDF67,\n\t36960 - 11905: 0xDF68,\n\t36961 - 11905: 0xDF69,\n\t36962 - 11905: 0xE5DD,\n\t36963 - 11905: 0xC7B2,\n\t36964 - 11905: 0xDF6A,\n\t36965 - 11905: 0xD2A3,\n\t36966 - 11905: 0xDF6B,\n\t36967 - 11905: 0xDF6C,\n\t36968 - 11905: 0xE5DB,\n\t36969 - 11905: 0xDF6D,\n\t36970 - 11905: 0xDF6E,\n\t36971 - 11905: 0xDF6F,\n\t36972 - 11905: 0xDF70,\n\t36973 - 11905: 0xD4E2,\n\t36974 - 11905: 0xD5DA,\n\t36975 - 11905: 0xDF71,\n\t36976 - 11905: 0xDF72,\n\t36977 - 11905: 0xDF73,\n\t36978 - 11905: 0xDF74,\n\t36979 - 11905: 0xDF75,\n\t36980 - 11905: 0xE5E0,\n\t36981 - 11905: 0xD7F1,\n\t36982 - 11905: 0xDF76,\n\t36983 - 11905: 0xDF77,\n\t36984 - 11905: 0xDF78,\n\t36985 - 11905: 0xDF79,\n\t36986 - 11905: 0xDF7A,\n\t36987 - 11905: 0xDF7B,\n\t36988 - 11905: 0xDF7C,\n\t36989 - 11905: 0xE5E1,\n\t36990 - 11905: 0xDF7D,\n\t36991 - 11905: 0xB1DC,\n\t36992 - 11905: 0xD1FB,\n\t36993 - 11905: 0xDF7E,\n\t36994 - 11905: 0xE5E2,\n\t36995 - 11905: 0xE5E4,\n\t36996 - 11905: 0xDF80,\n\t36997 - 11905: 0xDF81,\n\t36998 - 11905: 0xDF82,\n\t36999 - 11905: 0xDF83,\n\t37000 - 11905: 0xE5E3,\n\t37001 - 11905: 0xDF84,\n\t37002 - 11905: 0xDF85,\n\t37003 - 11905: 0xE5E5,\n\t37004 - 11905: 0xDF86,\n\t37005 - 11905: 0xDF87,\n\t37006 - 11905: 0xDF88,\n\t37007 - 11905: 0xDF89,\n\t37008 - 11905: 0xDF8A,\n\t37009 - 11905: 0xD2D8,\n\t37010 - 11905: 0xDF8B,\n\t37011 - 11905: 0xB5CB,\n\t37012 - 11905: 0xDF8C,\n\t37013 - 11905: 0xE7DF,\n\t37014 - 11905: 0xDF8D,\n\t37015 - 11905: 0xDAF5,\n\t37016 - 11905: 0xDF8E,\n\t37017 - 11905: 0xDAF8,\n\t37018 - 11905: 0xDF8F,\n\t37019 - 11905: 0xDAF6,\n\t37020 - 11905: 0xDF90,\n\t37021 - 11905: 0xDAF7,\n\t37022 - 11905: 0xDF91,\n\t37023 - 11905: 0xDF92,\n\t37024 - 11905: 0xDF93,\n\t37025 - 11905: 0xDAFA,\n\t37026 - 11905: 0xD0CF,\n\t37027 - 11905: 0xC4C7,\n\t37028 - 11905: 0xDF94,\n\t37029 - 11905: 0xDF95,\n\t37030 - 11905: 0xB0EE,\n\t37031 - 11905: 0xDF96,\n\t37032 - 11905: 0xDF97,\n\t37033 - 11905: 0xDF98,\n\t37034 - 11905: 0xD0B0,\n\t37035 - 11905: 0xDF99,\n\t37036 - 11905: 0xDAF9,\n\t37037 - 11905: 0xDF9A,\n\t37038 - 11905: 0xD3CA,\n\t37039 - 11905: 0xBAAA,\n\t37040 - 11905: 0xDBA2,\n\t37041 - 11905: 0xC7F1,\n\t37042 - 11905: 0xDF9B,\n\t37043 - 11905: 0xDAFC,\n\t37044 - 11905: 0xDAFB,\n\t37045 - 11905: 0xC9DB,\n\t37046 - 11905: 0xDAFD,\n\t37047 - 11905: 0xDF9C,\n\t37048 - 11905: 0xDBA1,\n\t37049 - 11905: 0xD7DE,\n\t37050 - 11905: 0xDAFE,\n\t37051 - 11905: 0xC1DA,\n\t37052 - 11905: 0xDF9D,\n\t37053 - 11905: 0xDF9E,\n\t37054 - 11905: 0xDBA5,\n\t37055 - 11905: 0xDF9F,\n\t37056 - 11905: 0xDFA0,\n\t37057 - 11905: 0xD3F4,\n\t37058 - 11905: 0xE040,\n\t37059 - 11905: 0xE041,\n\t37060 - 11905: 0xDBA7,\n\t37061 - 11905: 0xDBA4,\n\t37062 - 11905: 0xE042,\n\t37063 - 11905: 0xDBA8,\n\t37064 - 11905: 0xE043,\n\t37065 - 11905: 0xE044,\n\t37066 - 11905: 0xBDBC,\n\t37067 - 11905: 0xE045,\n\t37068 - 11905: 0xE046,\n\t37069 - 11905: 0xE047,\n\t37070 - 11905: 0xC0C9,\n\t37071 - 11905: 0xDBA3,\n\t37072 - 11905: 0xDBA6,\n\t37073 - 11905: 0xD6A3,\n\t37074 - 11905: 0xE048,\n\t37075 - 11905: 0xDBA9,\n\t37076 - 11905: 0xE049,\n\t37077 - 11905: 0xE04A,\n\t37078 - 11905: 0xE04B,\n\t37079 - 11905: 0xDBAD,\n\t37080 - 11905: 0xE04C,\n\t37081 - 11905: 0xE04D,\n\t37082 - 11905: 0xE04E,\n\t37083 - 11905: 0xDBAE,\n\t37084 - 11905: 0xDBAC,\n\t37085 - 11905: 0xBAC2,\n\t37086 - 11905: 0xE04F,\n\t37087 - 11905: 0xE050,\n\t37088 - 11905: 0xE051,\n\t37089 - 11905: 0xBFA4,\n\t37090 - 11905: 0xDBAB,\n\t37091 - 11905: 0xE052,\n\t37092 - 11905: 0xE053,\n\t37093 - 11905: 0xE054,\n\t37094 - 11905: 0xDBAA,\n\t37095 - 11905: 0xD4C7,\n\t37096 - 11905: 0xB2BF,\n\t37097 - 11905: 0xE055,\n\t37098 - 11905: 0xE056,\n\t37099 - 11905: 0xDBAF,\n\t37100 - 11905: 0xE057,\n\t37101 - 11905: 0xB9F9,\n\t37102 - 11905: 0xE058,\n\t37103 - 11905: 0xDBB0,\n\t37104 - 11905: 0xE059,\n\t37105 - 11905: 0xE05A,\n\t37106 - 11905: 0xE05B,\n\t37107 - 11905: 0xE05C,\n\t37108 - 11905: 0xB3BB,\n\t37109 - 11905: 0xE05D,\n\t37110 - 11905: 0xE05E,\n\t37111 - 11905: 0xE05F,\n\t37112 - 11905: 0xB5A6,\n\t37113 - 11905: 0xE060,\n\t37114 - 11905: 0xE061,\n\t37115 - 11905: 0xE062,\n\t37116 - 11905: 0xE063,\n\t37117 - 11905: 0xB6BC,\n\t37118 - 11905: 0xDBB1,\n\t37119 - 11905: 0xE064,\n\t37120 - 11905: 0xE065,\n\t37121 - 11905: 0xE066,\n\t37122 - 11905: 0xB6F5,\n\t37123 - 11905: 0xE067,\n\t37124 - 11905: 0xDBB2,\n\t37125 - 11905: 0xE068,\n\t37126 - 11905: 0xE069,\n\t37127 - 11905: 0xE06A,\n\t37128 - 11905: 0xE06B,\n\t37129 - 11905: 0xE06C,\n\t37130 - 11905: 0xE06D,\n\t37131 - 11905: 0xE06E,\n\t37132 - 11905: 0xE06F,\n\t37133 - 11905: 0xE070,\n\t37134 - 11905: 0xE071,\n\t37135 - 11905: 0xE072,\n\t37136 - 11905: 0xE073,\n\t37137 - 11905: 0xE074,\n\t37138 - 11905: 0xE075,\n\t37139 - 11905: 0xE076,\n\t37140 - 11905: 0xE077,\n\t37141 - 11905: 0xE078,\n\t37142 - 11905: 0xE079,\n\t37143 - 11905: 0xE07A,\n\t37144 - 11905: 0xE07B,\n\t37145 - 11905: 0xB1C9,\n\t37146 - 11905: 0xE07C,\n\t37147 - 11905: 0xE07D,\n\t37148 - 11905: 0xE07E,\n\t37149 - 11905: 0xE080,\n\t37150 - 11905: 0xDBB4,\n\t37151 - 11905: 0xE081,\n\t37152 - 11905: 0xE082,\n\t37153 - 11905: 0xE083,\n\t37154 - 11905: 0xDBB3,\n\t37155 - 11905: 0xDBB5,\n\t37156 - 11905: 0xE084,\n\t37157 - 11905: 0xE085,\n\t37158 - 11905: 0xE086,\n\t37159 - 11905: 0xE087,\n\t37160 - 11905: 0xE088,\n\t37161 - 11905: 0xE089,\n\t37162 - 11905: 0xE08A,\n\t37163 - 11905: 0xE08B,\n\t37164 - 11905: 0xE08C,\n\t37165 - 11905: 0xE08D,\n\t37166 - 11905: 0xE08E,\n\t37167 - 11905: 0xDBB7,\n\t37168 - 11905: 0xE08F,\n\t37169 - 11905: 0xDBB6,\n\t37170 - 11905: 0xE090,\n\t37171 - 11905: 0xE091,\n\t37172 - 11905: 0xE092,\n\t37173 - 11905: 0xE093,\n\t37174 - 11905: 0xE094,\n\t37175 - 11905: 0xE095,\n\t37176 - 11905: 0xE096,\n\t37177 - 11905: 0xDBB8,\n\t37178 - 11905: 0xE097,\n\t37179 - 11905: 0xE098,\n\t37180 - 11905: 0xE099,\n\t37181 - 11905: 0xE09A,\n\t37182 - 11905: 0xE09B,\n\t37183 - 11905: 0xE09C,\n\t37184 - 11905: 0xE09D,\n\t37185 - 11905: 0xE09E,\n\t37186 - 11905: 0xE09F,\n\t37187 - 11905: 0xDBB9,\n\t37188 - 11905: 0xE0A0,\n\t37189 - 11905: 0xE140,\n\t37190 - 11905: 0xDBBA,\n\t37191 - 11905: 0xE141,\n\t37192 - 11905: 0xE142,\n\t37193 - 11905: 0xD3CF,\n\t37194 - 11905: 0xF4FA,\n\t37195 - 11905: 0xC7F5,\n\t37196 - 11905: 0xD7C3,\n\t37197 - 11905: 0xC5E4,\n\t37198 - 11905: 0xF4FC,\n\t37199 - 11905: 0xF4FD,\n\t37200 - 11905: 0xF4FB,\n\t37201 - 11905: 0xE143,\n\t37202 - 11905: 0xBEC6,\n\t37203 - 11905: 0xE144,\n\t37204 - 11905: 0xE145,\n\t37205 - 11905: 0xE146,\n\t37206 - 11905: 0xE147,\n\t37207 - 11905: 0xD0EF,\n\t37208 - 11905: 0xE148,\n\t37209 - 11905: 0xE149,\n\t37210 - 11905: 0xB7D3,\n\t37211 - 11905: 0xE14A,\n\t37212 - 11905: 0xE14B,\n\t37213 - 11905: 0xD4CD,\n\t37214 - 11905: 0xCCAA,\n\t37215 - 11905: 0xE14C,\n\t37216 - 11905: 0xE14D,\n\t37217 - 11905: 0xF5A2,\n\t37218 - 11905: 0xF5A1,\n\t37219 - 11905: 0xBAA8,\n\t37220 - 11905: 0xF4FE,\n\t37221 - 11905: 0xCBD6,\n\t37222 - 11905: 0xE14E,\n\t37223 - 11905: 0xE14F,\n\t37224 - 11905: 0xE150,\n\t37225 - 11905: 0xF5A4,\n\t37226 - 11905: 0xC0D2,\n\t37227 - 11905: 0xE151,\n\t37228 - 11905: 0xB3EA,\n\t37229 - 11905: 0xE152,\n\t37230 - 11905: 0xCDAA,\n\t37231 - 11905: 0xF5A5,\n\t37232 - 11905: 0xF5A3,\n\t37233 - 11905: 0xBDB4,\n\t37234 - 11905: 0xF5A8,\n\t37235 - 11905: 0xE153,\n\t37236 - 11905: 0xF5A9,\n\t37237 - 11905: 0xBDCD,\n\t37238 - 11905: 0xC3B8,\n\t37239 - 11905: 0xBFE1,\n\t37240 - 11905: 0xCBE1,\n\t37241 - 11905: 0xF5AA,\n\t37242 - 11905: 0xE154,\n\t37243 - 11905: 0xE155,\n\t37244 - 11905: 0xE156,\n\t37245 - 11905: 0xF5A6,\n\t37246 - 11905: 0xF5A7,\n\t37247 - 11905: 0xC4F0,\n\t37248 - 11905: 0xE157,\n\t37249 - 11905: 0xE158,\n\t37250 - 11905: 0xE159,\n\t37251 - 11905: 0xE15A,\n\t37252 - 11905: 0xE15B,\n\t37253 - 11905: 0xF5AC,\n\t37254 - 11905: 0xE15C,\n\t37255 - 11905: 0xB4BC,\n\t37256 - 11905: 0xE15D,\n\t37257 - 11905: 0xD7ED,\n\t37258 - 11905: 0xE15E,\n\t37259 - 11905: 0xB4D7,\n\t37260 - 11905: 0xF5AB,\n\t37261 - 11905: 0xF5AE,\n\t37262 - 11905: 0xE15F,\n\t37263 - 11905: 0xE160,\n\t37264 - 11905: 0xF5AD,\n\t37265 - 11905: 0xF5AF,\n\t37266 - 11905: 0xD0D1,\n\t37267 - 11905: 0xE161,\n\t37268 - 11905: 0xE162,\n\t37269 - 11905: 0xE163,\n\t37270 - 11905: 0xE164,\n\t37271 - 11905: 0xE165,\n\t37272 - 11905: 0xE166,\n\t37273 - 11905: 0xE167,\n\t37274 - 11905: 0xC3D1,\n\t37275 - 11905: 0xC8A9,\n\t37276 - 11905: 0xE168,\n\t37277 - 11905: 0xE169,\n\t37278 - 11905: 0xE16A,\n\t37279 - 11905: 0xE16B,\n\t37280 - 11905: 0xE16C,\n\t37281 - 11905: 0xE16D,\n\t37282 - 11905: 0xF5B0,\n\t37283 - 11905: 0xF5B1,\n\t37284 - 11905: 0xE16E,\n\t37285 - 11905: 0xE16F,\n\t37286 - 11905: 0xE170,\n\t37287 - 11905: 0xE171,\n\t37288 - 11905: 0xE172,\n\t37289 - 11905: 0xE173,\n\t37290 - 11905: 0xF5B2,\n\t37291 - 11905: 0xE174,\n\t37292 - 11905: 0xE175,\n\t37293 - 11905: 0xF5B3,\n\t37294 - 11905: 0xF5B4,\n\t37295 - 11905: 0xF5B5,\n\t37296 - 11905: 0xE176,\n\t37297 - 11905: 0xE177,\n\t37298 - 11905: 0xE178,\n\t37299 - 11905: 0xE179,\n\t37300 - 11905: 0xF5B7,\n\t37301 - 11905: 0xF5B6,\n\t37302 - 11905: 0xE17A,\n\t37303 - 11905: 0xE17B,\n\t37304 - 11905: 0xE17C,\n\t37305 - 11905: 0xE17D,\n\t37306 - 11905: 0xF5B8,\n\t37307 - 11905: 0xE17E,\n\t37308 - 11905: 0xE180,\n\t37309 - 11905: 0xE181,\n\t37310 - 11905: 0xE182,\n\t37311 - 11905: 0xE183,\n\t37312 - 11905: 0xE184,\n\t37313 - 11905: 0xE185,\n\t37314 - 11905: 0xE186,\n\t37315 - 11905: 0xE187,\n\t37316 - 11905: 0xE188,\n\t37317 - 11905: 0xE189,\n\t37318 - 11905: 0xE18A,\n\t37319 - 11905: 0xB2C9,\n\t37320 - 11905: 0xE18B,\n\t37321 - 11905: 0xD3D4,\n\t37322 - 11905: 0xCACD,\n\t37323 - 11905: 0xE18C,\n\t37324 - 11905: 0xC0EF,\n\t37325 - 11905: 0xD6D8,\n\t37326 - 11905: 0xD2B0,\n\t37327 - 11905: 0xC1BF,\n\t37328 - 11905: 0xE18D,\n\t37329 - 11905: 0xBDF0,\n\t37330 - 11905: 0xE18E,\n\t37331 - 11905: 0xE18F,\n\t37332 - 11905: 0xE190,\n\t37333 - 11905: 0xE191,\n\t37334 - 11905: 0xE192,\n\t37335 - 11905: 0xE193,\n\t37336 - 11905: 0xE194,\n\t37337 - 11905: 0xE195,\n\t37338 - 11905: 0xE196,\n\t37339 - 11905: 0xE197,\n\t37340 - 11905: 0xB8AA,\n\t37341 - 11905: 0xE198,\n\t37342 - 11905: 0xE199,\n\t37343 - 11905: 0xE19A,\n\t37344 - 11905: 0xE19B,\n\t37345 - 11905: 0xE19C,\n\t37346 - 11905: 0xE19D,\n\t37347 - 11905: 0xE19E,\n\t37348 - 11905: 0xE19F,\n\t37349 - 11905: 0xE1A0,\n\t37350 - 11905: 0xE240,\n\t37351 - 11905: 0xE241,\n\t37352 - 11905: 0xE242,\n\t37353 - 11905: 0xE243,\n\t37354 - 11905: 0xE244,\n\t37355 - 11905: 0xE245,\n\t37356 - 11905: 0xE246,\n\t37357 - 11905: 0xE247,\n\t37358 - 11905: 0xE248,\n\t37359 - 11905: 0xE249,\n\t37360 - 11905: 0xE24A,\n\t37361 - 11905: 0xE24B,\n\t37362 - 11905: 0xE24C,\n\t37363 - 11905: 0xE24D,\n\t37364 - 11905: 0xE24E,\n\t37365 - 11905: 0xE24F,\n\t37366 - 11905: 0xE250,\n\t37367 - 11905: 0xE251,\n\t37368 - 11905: 0xE252,\n\t37369 - 11905: 0xE253,\n\t37370 - 11905: 0xE254,\n\t37371 - 11905: 0xE255,\n\t37372 - 11905: 0xE256,\n\t37373 - 11905: 0xE257,\n\t37374 - 11905: 0xE258,\n\t37375 - 11905: 0xE259,\n\t37376 - 11905: 0xE25A,\n\t37377 - 11905: 0xE25B,\n\t37378 - 11905: 0xE25C,\n\t37379 - 11905: 0xE25D,\n\t37380 - 11905: 0xE25E,\n\t37381 - 11905: 0xE25F,\n\t37382 - 11905: 0xE260,\n\t37383 - 11905: 0xE261,\n\t37384 - 11905: 0xE262,\n\t37385 - 11905: 0xE263,\n\t37386 - 11905: 0xE264,\n\t37387 - 11905: 0xE265,\n\t37388 - 11905: 0xE266,\n\t37389 - 11905: 0xE267,\n\t37390 - 11905: 0xE268,\n\t37391 - 11905: 0xE269,\n\t37392 - 11905: 0xE26A,\n\t37393 - 11905: 0xE26B,\n\t37394 - 11905: 0xE26C,\n\t37395 - 11905: 0xE26D,\n\t37396 - 11905: 0xE26E,\n\t37397 - 11905: 0xE26F,\n\t37398 - 11905: 0xE270,\n\t37399 - 11905: 0xE271,\n\t37400 - 11905: 0xE272,\n\t37401 - 11905: 0xE273,\n\t37402 - 11905: 0xE274,\n\t37403 - 11905: 0xE275,\n\t37404 - 11905: 0xE276,\n\t37405 - 11905: 0xE277,\n\t37406 - 11905: 0xE278,\n\t37407 - 11905: 0xE279,\n\t37408 - 11905: 0xE27A,\n\t37409 - 11905: 0xE27B,\n\t37410 - 11905: 0xE27C,\n\t37411 - 11905: 0xE27D,\n\t37412 - 11905: 0xE27E,\n\t37413 - 11905: 0xE280,\n\t37414 - 11905: 0xE281,\n\t37415 - 11905: 0xE282,\n\t37416 - 11905: 0xE283,\n\t37417 - 11905: 0xE284,\n\t37418 - 11905: 0xE285,\n\t37419 - 11905: 0xE286,\n\t37420 - 11905: 0xE287,\n\t37421 - 11905: 0xE288,\n\t37422 - 11905: 0xE289,\n\t37423 - 11905: 0xE28A,\n\t37424 - 11905: 0xE28B,\n\t37425 - 11905: 0xE28C,\n\t37426 - 11905: 0xE28D,\n\t37427 - 11905: 0xE28E,\n\t37428 - 11905: 0xE28F,\n\t37429 - 11905: 0xE290,\n\t37430 - 11905: 0xE291,\n\t37431 - 11905: 0xE292,\n\t37432 - 11905: 0xE293,\n\t37433 - 11905: 0xE294,\n\t37434 - 11905: 0xE295,\n\t37435 - 11905: 0xE296,\n\t37436 - 11905: 0xE297,\n\t37437 - 11905: 0xE298,\n\t37438 - 11905: 0xE299,\n\t37439 - 11905: 0xE29A,\n\t37440 - 11905: 0xE29B,\n\t37441 - 11905: 0xE29C,\n\t37442 - 11905: 0xE29D,\n\t37443 - 11905: 0xE29E,\n\t37444 - 11905: 0xE29F,\n\t37445 - 11905: 0xE2A0,\n\t37446 - 11905: 0xE340,\n\t37447 - 11905: 0xE341,\n\t37448 - 11905: 0xE342,\n\t37449 - 11905: 0xE343,\n\t37450 - 11905: 0xE344,\n\t37451 - 11905: 0xE345,\n\t37452 - 11905: 0xE346,\n\t37453 - 11905: 0xE347,\n\t37454 - 11905: 0xE348,\n\t37455 - 11905: 0xE349,\n\t37456 - 11905: 0xE34A,\n\t37457 - 11905: 0xE34B,\n\t37458 - 11905: 0xE34C,\n\t37459 - 11905: 0xE34D,\n\t37460 - 11905: 0xE34E,\n\t37461 - 11905: 0xE34F,\n\t37462 - 11905: 0xE350,\n\t37463 - 11905: 0xE351,\n\t37464 - 11905: 0xE352,\n\t37465 - 11905: 0xE353,\n\t37466 - 11905: 0xE354,\n\t37467 - 11905: 0xE355,\n\t37468 - 11905: 0xE356,\n\t37469 - 11905: 0xE357,\n\t37470 - 11905: 0xE358,\n\t37471 - 11905: 0xE359,\n\t37472 - 11905: 0xE35A,\n\t37473 - 11905: 0xE35B,\n\t37474 - 11905: 0xE35C,\n\t37475 - 11905: 0xE35D,\n\t37476 - 11905: 0xE35E,\n\t37477 - 11905: 0xE35F,\n\t37478 - 11905: 0xE360,\n\t37479 - 11905: 0xE361,\n\t37480 - 11905: 0xE362,\n\t37481 - 11905: 0xE363,\n\t37482 - 11905: 0xE364,\n\t37483 - 11905: 0xE365,\n\t37484 - 11905: 0xE366,\n\t37485 - 11905: 0xE367,\n\t37486 - 11905: 0xE368,\n\t37487 - 11905: 0xE369,\n\t37488 - 11905: 0xE36A,\n\t37489 - 11905: 0xE36B,\n\t37490 - 11905: 0xE36C,\n\t37491 - 11905: 0xE36D,\n\t37492 - 11905: 0xBCF8,\n\t37493 - 11905: 0xE36E,\n\t37494 - 11905: 0xE36F,\n\t37495 - 11905: 0xE370,\n\t37496 - 11905: 0xE371,\n\t37497 - 11905: 0xE372,\n\t37498 - 11905: 0xE373,\n\t37499 - 11905: 0xE374,\n\t37500 - 11905: 0xE375,\n\t37501 - 11905: 0xE376,\n\t37502 - 11905: 0xE377,\n\t37503 - 11905: 0xE378,\n\t37504 - 11905: 0xE379,\n\t37505 - 11905: 0xE37A,\n\t37506 - 11905: 0xE37B,\n\t37507 - 11905: 0xE37C,\n\t37508 - 11905: 0xE37D,\n\t37509 - 11905: 0xE37E,\n\t37510 - 11905: 0xE380,\n\t37511 - 11905: 0xE381,\n\t37512 - 11905: 0xE382,\n\t37513 - 11905: 0xE383,\n\t37514 - 11905: 0xE384,\n\t37515 - 11905: 0xE385,\n\t37516 - 11905: 0xE386,\n\t37517 - 11905: 0xE387,\n\t37518 - 11905: 0xF6C6,\n\t37519 - 11905: 0xE388,\n\t37520 - 11905: 0xE389,\n\t37521 - 11905: 0xE38A,\n\t37522 - 11905: 0xE38B,\n\t37523 - 11905: 0xE38C,\n\t37524 - 11905: 0xE38D,\n\t37525 - 11905: 0xE38E,\n\t37526 - 11905: 0xE38F,\n\t37527 - 11905: 0xE390,\n\t37528 - 11905: 0xE391,\n\t37529 - 11905: 0xE392,\n\t37530 - 11905: 0xE393,\n\t37531 - 11905: 0xE394,\n\t37532 - 11905: 0xE395,\n\t37533 - 11905: 0xE396,\n\t37534 - 11905: 0xE397,\n\t37535 - 11905: 0xE398,\n\t37536 - 11905: 0xE399,\n\t37537 - 11905: 0xE39A,\n\t37538 - 11905: 0xE39B,\n\t37539 - 11905: 0xE39C,\n\t37540 - 11905: 0xE39D,\n\t37541 - 11905: 0xE39E,\n\t37542 - 11905: 0xE39F,\n\t37543 - 11905: 0xE3A0,\n\t37544 - 11905: 0xE440,\n\t37545 - 11905: 0xE441,\n\t37546 - 11905: 0xE442,\n\t37547 - 11905: 0xE443,\n\t37548 - 11905: 0xE444,\n\t37549 - 11905: 0xE445,\n\t37550 - 11905: 0xF6C7,\n\t37551 - 11905: 0xE446,\n\t37552 - 11905: 0xE447,\n\t37553 - 11905: 0xE448,\n\t37554 - 11905: 0xE449,\n\t37555 - 11905: 0xE44A,\n\t37556 - 11905: 0xE44B,\n\t37557 - 11905: 0xE44C,\n\t37558 - 11905: 0xE44D,\n\t37559 - 11905: 0xE44E,\n\t37560 - 11905: 0xE44F,\n\t37561 - 11905: 0xE450,\n\t37562 - 11905: 0xE451,\n\t37563 - 11905: 0xE452,\n\t37564 - 11905: 0xE453,\n\t37565 - 11905: 0xE454,\n\t37566 - 11905: 0xE455,\n\t37567 - 11905: 0xE456,\n\t37568 - 11905: 0xE457,\n\t37569 - 11905: 0xE458,\n\t37570 - 11905: 0xE459,\n\t37571 - 11905: 0xE45A,\n\t37572 - 11905: 0xE45B,\n\t37573 - 11905: 0xE45C,\n\t37574 - 11905: 0xE45D,\n\t37575 - 11905: 0xE45E,\n\t37576 - 11905: 0xF6C8,\n\t37577 - 11905: 0xE45F,\n\t37578 - 11905: 0xE460,\n\t37579 - 11905: 0xE461,\n\t37580 - 11905: 0xE462,\n\t37581 - 11905: 0xE463,\n\t37582 - 11905: 0xE464,\n\t37583 - 11905: 0xE465,\n\t37584 - 11905: 0xE466,\n\t37585 - 11905: 0xE467,\n\t37586 - 11905: 0xE468,\n\t37587 - 11905: 0xE469,\n\t37588 - 11905: 0xE46A,\n\t37589 - 11905: 0xE46B,\n\t37590 - 11905: 0xE46C,\n\t37591 - 11905: 0xE46D,\n\t37592 - 11905: 0xE46E,\n\t37593 - 11905: 0xE46F,\n\t37594 - 11905: 0xE470,\n\t37595 - 11905: 0xE471,\n\t37596 - 11905: 0xE472,\n\t37597 - 11905: 0xE473,\n\t37598 - 11905: 0xE474,\n\t37599 - 11905: 0xE475,\n\t37600 - 11905: 0xE476,\n\t37601 - 11905: 0xE477,\n\t37602 - 11905: 0xE478,\n\t37603 - 11905: 0xE479,\n\t37604 - 11905: 0xE47A,\n\t37605 - 11905: 0xE47B,\n\t37606 - 11905: 0xE47C,\n\t37607 - 11905: 0xE47D,\n\t37608 - 11905: 0xE47E,\n\t37609 - 11905: 0xE480,\n\t37610 - 11905: 0xE481,\n\t37611 - 11905: 0xE482,\n\t37612 - 11905: 0xE483,\n\t37613 - 11905: 0xE484,\n\t37614 - 11905: 0xE485,\n\t37615 - 11905: 0xE486,\n\t37616 - 11905: 0xE487,\n\t37617 - 11905: 0xE488,\n\t37618 - 11905: 0xE489,\n\t37619 - 11905: 0xE48A,\n\t37620 - 11905: 0xE48B,\n\t37621 - 11905: 0xE48C,\n\t37622 - 11905: 0xE48D,\n\t37623 - 11905: 0xE48E,\n\t37624 - 11905: 0xE48F,\n\t37625 - 11905: 0xE490,\n\t37626 - 11905: 0xE491,\n\t37627 - 11905: 0xE492,\n\t37628 - 11905: 0xE493,\n\t37629 - 11905: 0xE494,\n\t37630 - 11905: 0xE495,\n\t37631 - 11905: 0xE496,\n\t37632 - 11905: 0xE497,\n\t37633 - 11905: 0xE498,\n\t37634 - 11905: 0xE499,\n\t37635 - 11905: 0xE49A,\n\t37636 - 11905: 0xE49B,\n\t37637 - 11905: 0xE49C,\n\t37638 - 11905: 0xE49D,\n\t37639 - 11905: 0xE49E,\n\t37640 - 11905: 0xE49F,\n\t37641 - 11905: 0xE4A0,\n\t37642 - 11905: 0xE540,\n\t37643 - 11905: 0xE541,\n\t37644 - 11905: 0xE542,\n\t37645 - 11905: 0xE543,\n\t37646 - 11905: 0xE544,\n\t37647 - 11905: 0xE545,\n\t37648 - 11905: 0xE546,\n\t37649 - 11905: 0xE547,\n\t37650 - 11905: 0xE548,\n\t37651 - 11905: 0xE549,\n\t37652 - 11905: 0xE54A,\n\t37653 - 11905: 0xE54B,\n\t37654 - 11905: 0xE54C,\n\t37655 - 11905: 0xE54D,\n\t37656 - 11905: 0xE54E,\n\t37657 - 11905: 0xE54F,\n\t37658 - 11905: 0xE550,\n\t37659 - 11905: 0xE551,\n\t37660 - 11905: 0xE552,\n\t37661 - 11905: 0xE553,\n\t37662 - 11905: 0xE554,\n\t37663 - 11905: 0xE555,\n\t37664 - 11905: 0xE556,\n\t37665 - 11905: 0xE557,\n\t37666 - 11905: 0xE558,\n\t37667 - 11905: 0xE559,\n\t37668 - 11905: 0xE55A,\n\t37669 - 11905: 0xE55B,\n\t37670 - 11905: 0xE55C,\n\t37671 - 11905: 0xE55D,\n\t37672 - 11905: 0xE55E,\n\t37673 - 11905: 0xE55F,\n\t37674 - 11905: 0xE560,\n\t37675 - 11905: 0xE561,\n\t37676 - 11905: 0xE562,\n\t37677 - 11905: 0xE563,\n\t37678 - 11905: 0xE564,\n\t37679 - 11905: 0xE565,\n\t37680 - 11905: 0xE566,\n\t37681 - 11905: 0xE567,\n\t37682 - 11905: 0xE568,\n\t37683 - 11905: 0xE569,\n\t37684 - 11905: 0xE56A,\n\t37685 - 11905: 0xE56B,\n\t37686 - 11905: 0xE56C,\n\t37687 - 11905: 0xE56D,\n\t37688 - 11905: 0xE56E,\n\t37689 - 11905: 0xE56F,\n\t37690 - 11905: 0xE570,\n\t37691 - 11905: 0xE571,\n\t37692 - 11905: 0xE572,\n\t37693 - 11905: 0xE573,\n\t37694 - 11905: 0xF6C9,\n\t37695 - 11905: 0xE574,\n\t37696 - 11905: 0xE575,\n\t37697 - 11905: 0xE576,\n\t37698 - 11905: 0xE577,\n\t37699 - 11905: 0xE578,\n\t37700 - 11905: 0xE579,\n\t37701 - 11905: 0xE57A,\n\t37702 - 11905: 0xE57B,\n\t37703 - 11905: 0xE57C,\n\t37704 - 11905: 0xE57D,\n\t37705 - 11905: 0xE57E,\n\t37706 - 11905: 0xE580,\n\t37707 - 11905: 0xE581,\n\t37708 - 11905: 0xE582,\n\t37709 - 11905: 0xE583,\n\t37710 - 11905: 0xE584,\n\t37711 - 11905: 0xE585,\n\t37712 - 11905: 0xE586,\n\t37713 - 11905: 0xE587,\n\t37714 - 11905: 0xE588,\n\t37715 - 11905: 0xE589,\n\t37716 - 11905: 0xE58A,\n\t37717 - 11905: 0xE58B,\n\t37718 - 11905: 0xE58C,\n\t37719 - 11905: 0xE58D,\n\t37720 - 11905: 0xE58E,\n\t37721 - 11905: 0xE58F,\n\t37722 - 11905: 0xE590,\n\t37723 - 11905: 0xE591,\n\t37724 - 11905: 0xE592,\n\t37725 - 11905: 0xE593,\n\t37726 - 11905: 0xE594,\n\t37727 - 11905: 0xE595,\n\t37728 - 11905: 0xE596,\n\t37729 - 11905: 0xE597,\n\t37730 - 11905: 0xE598,\n\t37731 - 11905: 0xE599,\n\t37732 - 11905: 0xE59A,\n\t37733 - 11905: 0xE59B,\n\t37734 - 11905: 0xE59C,\n\t37735 - 11905: 0xE59D,\n\t37736 - 11905: 0xE59E,\n\t37737 - 11905: 0xE59F,\n\t37738 - 11905: 0xF6CA,\n\t37739 - 11905: 0xE5A0,\n\t37740 - 11905: 0xE640,\n\t37741 - 11905: 0xE641,\n\t37742 - 11905: 0xE642,\n\t37743 - 11905: 0xE643,\n\t37744 - 11905: 0xE644,\n\t37745 - 11905: 0xE645,\n\t37746 - 11905: 0xE646,\n\t37747 - 11905: 0xE647,\n\t37748 - 11905: 0xE648,\n\t37749 - 11905: 0xE649,\n\t37750 - 11905: 0xE64A,\n\t37751 - 11905: 0xE64B,\n\t37752 - 11905: 0xE64C,\n\t37753 - 11905: 0xE64D,\n\t37754 - 11905: 0xE64E,\n\t37755 - 11905: 0xE64F,\n\t37756 - 11905: 0xE650,\n\t37757 - 11905: 0xE651,\n\t37758 - 11905: 0xE652,\n\t37759 - 11905: 0xE653,\n\t37760 - 11905: 0xE654,\n\t37761 - 11905: 0xE655,\n\t37762 - 11905: 0xE656,\n\t37763 - 11905: 0xE657,\n\t37764 - 11905: 0xE658,\n\t37765 - 11905: 0xE659,\n\t37766 - 11905: 0xE65A,\n\t37767 - 11905: 0xE65B,\n\t37768 - 11905: 0xE65C,\n\t37769 - 11905: 0xE65D,\n\t37770 - 11905: 0xE65E,\n\t37771 - 11905: 0xE65F,\n\t37772 - 11905: 0xE660,\n\t37773 - 11905: 0xE661,\n\t37774 - 11905: 0xE662,\n\t37775 - 11905: 0xF6CC,\n\t37776 - 11905: 0xE663,\n\t37777 - 11905: 0xE664,\n\t37778 - 11905: 0xE665,\n\t37779 - 11905: 0xE666,\n\t37780 - 11905: 0xE667,\n\t37781 - 11905: 0xE668,\n\t37782 - 11905: 0xE669,\n\t37783 - 11905: 0xE66A,\n\t37784 - 11905: 0xE66B,\n\t37785 - 11905: 0xE66C,\n\t37786 - 11905: 0xE66D,\n\t37787 - 11905: 0xE66E,\n\t37788 - 11905: 0xE66F,\n\t37789 - 11905: 0xE670,\n\t37790 - 11905: 0xE671,\n\t37791 - 11905: 0xE672,\n\t37792 - 11905: 0xE673,\n\t37793 - 11905: 0xE674,\n\t37794 - 11905: 0xE675,\n\t37795 - 11905: 0xE676,\n\t37796 - 11905: 0xE677,\n\t37797 - 11905: 0xE678,\n\t37798 - 11905: 0xE679,\n\t37799 - 11905: 0xE67A,\n\t37800 - 11905: 0xE67B,\n\t37801 - 11905: 0xE67C,\n\t37802 - 11905: 0xE67D,\n\t37803 - 11905: 0xE67E,\n\t37804 - 11905: 0xE680,\n\t37805 - 11905: 0xE681,\n\t37806 - 11905: 0xE682,\n\t37807 - 11905: 0xE683,\n\t37808 - 11905: 0xE684,\n\t37809 - 11905: 0xE685,\n\t37810 - 11905: 0xE686,\n\t37811 - 11905: 0xE687,\n\t37812 - 11905: 0xE688,\n\t37813 - 11905: 0xE689,\n\t37814 - 11905: 0xE68A,\n\t37815 - 11905: 0xE68B,\n\t37816 - 11905: 0xE68C,\n\t37817 - 11905: 0xE68D,\n\t37818 - 11905: 0xE68E,\n\t37819 - 11905: 0xE68F,\n\t37820 - 11905: 0xE690,\n\t37821 - 11905: 0xE691,\n\t37822 - 11905: 0xE692,\n\t37823 - 11905: 0xE693,\n\t37824 - 11905: 0xE694,\n\t37825 - 11905: 0xE695,\n\t37826 - 11905: 0xE696,\n\t37827 - 11905: 0xE697,\n\t37828 - 11905: 0xE698,\n\t37829 - 11905: 0xE699,\n\t37830 - 11905: 0xE69A,\n\t37831 - 11905: 0xE69B,\n\t37832 - 11905: 0xE69C,\n\t37833 - 11905: 0xE69D,\n\t37834 - 11905: 0xF6CB,\n\t37835 - 11905: 0xE69E,\n\t37836 - 11905: 0xE69F,\n\t37837 - 11905: 0xE6A0,\n\t37838 - 11905: 0xE740,\n\t37839 - 11905: 0xE741,\n\t37840 - 11905: 0xE742,\n\t37841 - 11905: 0xE743,\n\t37842 - 11905: 0xE744,\n\t37843 - 11905: 0xE745,\n\t37844 - 11905: 0xE746,\n\t37845 - 11905: 0xE747,\n\t37846 - 11905: 0xF7E9,\n\t37847 - 11905: 0xE748,\n\t37848 - 11905: 0xE749,\n\t37849 - 11905: 0xE74A,\n\t37850 - 11905: 0xE74B,\n\t37851 - 11905: 0xE74C,\n\t37852 - 11905: 0xE74D,\n\t37853 - 11905: 0xE74E,\n\t37854 - 11905: 0xE74F,\n\t37855 - 11905: 0xE750,\n\t37856 - 11905: 0xE751,\n\t37857 - 11905: 0xE752,\n\t37858 - 11905: 0xE753,\n\t37859 - 11905: 0xE754,\n\t37860 - 11905: 0xE755,\n\t37861 - 11905: 0xE756,\n\t37862 - 11905: 0xE757,\n\t37863 - 11905: 0xE758,\n\t37864 - 11905: 0xE759,\n\t37865 - 11905: 0xE75A,\n\t37866 - 11905: 0xE75B,\n\t37867 - 11905: 0xE75C,\n\t37868 - 11905: 0xE75D,\n\t37869 - 11905: 0xE75E,\n\t37870 - 11905: 0xE75F,\n\t37871 - 11905: 0xE760,\n\t37872 - 11905: 0xE761,\n\t37873 - 11905: 0xE762,\n\t37874 - 11905: 0xE763,\n\t37875 - 11905: 0xE764,\n\t37876 - 11905: 0xE765,\n\t37877 - 11905: 0xE766,\n\t37878 - 11905: 0xE767,\n\t37879 - 11905: 0xE768,\n\t37880 - 11905: 0xE769,\n\t37881 - 11905: 0xE76A,\n\t37882 - 11905: 0xE76B,\n\t37883 - 11905: 0xE76C,\n\t37884 - 11905: 0xE76D,\n\t37885 - 11905: 0xE76E,\n\t37886 - 11905: 0xE76F,\n\t37887 - 11905: 0xE770,\n\t37888 - 11905: 0xE771,\n\t37889 - 11905: 0xE772,\n\t37890 - 11905: 0xE773,\n\t37891 - 11905: 0xE774,\n\t37892 - 11905: 0xE775,\n\t37893 - 11905: 0xE776,\n\t37894 - 11905: 0xE777,\n\t37895 - 11905: 0xE778,\n\t37896 - 11905: 0xE779,\n\t37897 - 11905: 0xE77A,\n\t37898 - 11905: 0xE77B,\n\t37899 - 11905: 0xE77C,\n\t37900 - 11905: 0xE77D,\n\t37901 - 11905: 0xE77E,\n\t37902 - 11905: 0xE780,\n\t37903 - 11905: 0xE781,\n\t37904 - 11905: 0xE782,\n\t37905 - 11905: 0xE783,\n\t37906 - 11905: 0xE784,\n\t37907 - 11905: 0xE785,\n\t37908 - 11905: 0xE786,\n\t37909 - 11905: 0xE787,\n\t37910 - 11905: 0xE788,\n\t37911 - 11905: 0xE789,\n\t37912 - 11905: 0xE78A,\n\t37913 - 11905: 0xE78B,\n\t37914 - 11905: 0xE78C,\n\t37915 - 11905: 0xE78D,\n\t37916 - 11905: 0xE78E,\n\t37917 - 11905: 0xE78F,\n\t37918 - 11905: 0xE790,\n\t37919 - 11905: 0xE791,\n\t37920 - 11905: 0xE792,\n\t37921 - 11905: 0xE793,\n\t37922 - 11905: 0xE794,\n\t37923 - 11905: 0xE795,\n\t37924 - 11905: 0xE796,\n\t37925 - 11905: 0xE797,\n\t37926 - 11905: 0xE798,\n\t37927 - 11905: 0xE799,\n\t37928 - 11905: 0xE79A,\n\t37929 - 11905: 0xE79B,\n\t37930 - 11905: 0xE79C,\n\t37931 - 11905: 0xE79D,\n\t37932 - 11905: 0xE79E,\n\t37933 - 11905: 0xE79F,\n\t37934 - 11905: 0xE7A0,\n\t37935 - 11905: 0xE840,\n\t37936 - 11905: 0xE841,\n\t37937 - 11905: 0xE842,\n\t37938 - 11905: 0xE843,\n\t37939 - 11905: 0xE844,\n\t37940 - 11905: 0xE845,\n\t37941 - 11905: 0xE846,\n\t37942 - 11905: 0xE847,\n\t37943 - 11905: 0xE848,\n\t37944 - 11905: 0xE849,\n\t37945 - 11905: 0xE84A,\n\t37946 - 11905: 0xE84B,\n\t37947 - 11905: 0xE84C,\n\t37948 - 11905: 0xE84D,\n\t37949 - 11905: 0xE84E,\n\t37950 - 11905: 0xF6CD,\n\t37951 - 11905: 0xE84F,\n\t37952 - 11905: 0xE850,\n\t37953 - 11905: 0xE851,\n\t37954 - 11905: 0xE852,\n\t37955 - 11905: 0xE853,\n\t37956 - 11905: 0xE854,\n\t37957 - 11905: 0xE855,\n\t37958 - 11905: 0xE856,\n\t37959 - 11905: 0xE857,\n\t37960 - 11905: 0xE858,\n\t37961 - 11905: 0xE859,\n\t37962 - 11905: 0xE85A,\n\t37963 - 11905: 0xE85B,\n\t37964 - 11905: 0xE85C,\n\t37965 - 11905: 0xE85D,\n\t37966 - 11905: 0xE85E,\n\t37967 - 11905: 0xE85F,\n\t37968 - 11905: 0xE860,\n\t37969 - 11905: 0xE861,\n\t37970 - 11905: 0xE862,\n\t37971 - 11905: 0xE863,\n\t37972 - 11905: 0xE864,\n\t37973 - 11905: 0xE865,\n\t37974 - 11905: 0xE866,\n\t37975 - 11905: 0xE867,\n\t37976 - 11905: 0xE868,\n\t37977 - 11905: 0xE869,\n\t37978 - 11905: 0xE86A,\n\t37979 - 11905: 0xE86B,\n\t37980 - 11905: 0xE86C,\n\t37981 - 11905: 0xE86D,\n\t37982 - 11905: 0xE86E,\n\t37983 - 11905: 0xE86F,\n\t37984 - 11905: 0xE870,\n\t37985 - 11905: 0xE871,\n\t37986 - 11905: 0xE872,\n\t37987 - 11905: 0xE873,\n\t37988 - 11905: 0xE874,\n\t37989 - 11905: 0xE875,\n\t37990 - 11905: 0xE876,\n\t37991 - 11905: 0xE877,\n\t37992 - 11905: 0xE878,\n\t37993 - 11905: 0xE879,\n\t37994 - 11905: 0xE87A,\n\t37995 - 11905: 0xF6CE,\n\t37996 - 11905: 0xE87B,\n\t37997 - 11905: 0xE87C,\n\t37998 - 11905: 0xE87D,\n\t37999 - 11905: 0xE87E,\n\t38000 - 11905: 0xE880,\n\t38001 - 11905: 0xE881,\n\t38002 - 11905: 0xE882,\n\t38003 - 11905: 0xE883,\n\t38004 - 11905: 0xE884,\n\t38005 - 11905: 0xE885,\n\t38006 - 11905: 0xE886,\n\t38007 - 11905: 0xE887,\n\t38008 - 11905: 0xE888,\n\t38009 - 11905: 0xE889,\n\t38010 - 11905: 0xE88A,\n\t38011 - 11905: 0xE88B,\n\t38012 - 11905: 0xE88C,\n\t38013 - 11905: 0xE88D,\n\t38014 - 11905: 0xE88E,\n\t38015 - 11905: 0xE88F,\n\t38016 - 11905: 0xE890,\n\t38017 - 11905: 0xE891,\n\t38018 - 11905: 0xE892,\n\t38019 - 11905: 0xE893,\n\t38020 - 11905: 0xE894,\n\t38021 - 11905: 0xEEC4,\n\t38022 - 11905: 0xEEC5,\n\t38023 - 11905: 0xEEC6,\n\t38024 - 11905: 0xD5EB,\n\t38025 - 11905: 0xB6A4,\n\t38026 - 11905: 0xEEC8,\n\t38027 - 11905: 0xEEC7,\n\t38028 - 11905: 0xEEC9,\n\t38029 - 11905: 0xEECA,\n\t38030 - 11905: 0xC7A5,\n\t38031 - 11905: 0xEECB,\n\t38032 - 11905: 0xEECC,\n\t38033 - 11905: 0xE895,\n\t38034 - 11905: 0xB7B0,\n\t38035 - 11905: 0xB5F6,\n\t38036 - 11905: 0xEECD,\n\t38037 - 11905: 0xEECF,\n\t38038 - 11905: 0xE896,\n\t38039 - 11905: 0xEECE,\n\t38040 - 11905: 0xE897,\n\t38041 - 11905: 0xB8C6,\n\t38042 - 11905: 0xEED0,\n\t38043 - 11905: 0xEED1,\n\t38044 - 11905: 0xEED2,\n\t38045 - 11905: 0xB6DB,\n\t38046 - 11905: 0xB3AE,\n\t38047 - 11905: 0xD6D3,\n\t38048 - 11905: 0xC4C6,\n\t38049 - 11905: 0xB1B5,\n\t38050 - 11905: 0xB8D6,\n\t38051 - 11905: 0xEED3,\n\t38052 - 11905: 0xEED4,\n\t38053 - 11905: 0xD4BF,\n\t38054 - 11905: 0xC7D5,\n\t38055 - 11905: 0xBEFB,\n\t38056 - 11905: 0xCED9,\n\t38057 - 11905: 0xB9B3,\n\t38058 - 11905: 0xEED6,\n\t38059 - 11905: 0xEED5,\n\t38060 - 11905: 0xEED8,\n\t38061 - 11905: 0xEED7,\n\t38062 - 11905: 0xC5A5,\n\t38063 - 11905: 0xEED9,\n\t38064 - 11905: 0xEEDA,\n\t38065 - 11905: 0xC7AE,\n\t38066 - 11905: 0xEEDB,\n\t38067 - 11905: 0xC7AF,\n\t38068 - 11905: 0xEEDC,\n\t38069 - 11905: 0xB2A7,\n\t38070 - 11905: 0xEEDD,\n\t38071 - 11905: 0xEEDE,\n\t38072 - 11905: 0xEEDF,\n\t38073 - 11905: 0xEEE0,\n\t38074 - 11905: 0xEEE1,\n\t38075 - 11905: 0xD7EA,\n\t38076 - 11905: 0xEEE2,\n\t38077 - 11905: 0xEEE3,\n\t38078 - 11905: 0xBCD8,\n\t38079 - 11905: 0xEEE4,\n\t38080 - 11905: 0xD3CB,\n\t38081 - 11905: 0xCCFA,\n\t38082 - 11905: 0xB2AC,\n\t38083 - 11905: 0xC1E5,\n\t38084 - 11905: 0xEEE5,\n\t38085 - 11905: 0xC7A6,\n\t38086 - 11905: 0xC3AD,\n\t38087 - 11905: 0xE898,\n\t38088 - 11905: 0xEEE6,\n\t38089 - 11905: 0xEEE7,\n\t38090 - 11905: 0xEEE8,\n\t38091 - 11905: 0xEEE9,\n\t38092 - 11905: 0xEEEA,\n\t38093 - 11905: 0xEEEB,\n\t38094 - 11905: 0xEEEC,\n\t38095 - 11905: 0xE899,\n\t38096 - 11905: 0xEEED,\n\t38097 - 11905: 0xEEEE,\n\t38098 - 11905: 0xEEEF,\n\t38099 - 11905: 0xE89A,\n\t38100 - 11905: 0xE89B,\n\t38101 - 11905: 0xEEF0,\n\t38102 - 11905: 0xEEF1,\n\t38103 - 11905: 0xEEF2,\n\t38104 - 11905: 0xEEF4,\n\t38105 - 11905: 0xEEF3,\n\t38106 - 11905: 0xE89C,\n\t38107 - 11905: 0xEEF5,\n\t38108 - 11905: 0xCDAD,\n\t38109 - 11905: 0xC2C1,\n\t38110 - 11905: 0xEEF6,\n\t38111 - 11905: 0xEEF7,\n\t38112 - 11905: 0xEEF8,\n\t38113 - 11905: 0xD5A1,\n\t38114 - 11905: 0xEEF9,\n\t38115 - 11905: 0xCFB3,\n\t38116 - 11905: 0xEEFA,\n\t38117 - 11905: 0xEEFB,\n\t38118 - 11905: 0xE89D,\n\t38119 - 11905: 0xEEFC,\n\t38120 - 11905: 0xEEFD,\n\t38121 - 11905: 0xEFA1,\n\t38122 - 11905: 0xEEFE,\n\t38123 - 11905: 0xEFA2,\n\t38124 - 11905: 0xB8F5,\n\t38125 - 11905: 0xC3FA,\n\t38126 - 11905: 0xEFA3,\n\t38127 - 11905: 0xEFA4,\n\t38128 - 11905: 0xBDC2,\n\t38129 - 11905: 0xD2BF,\n\t38130 - 11905: 0xB2F9,\n\t38131 - 11905: 0xEFA5,\n\t38132 - 11905: 0xEFA6,\n\t38133 - 11905: 0xEFA7,\n\t38134 - 11905: 0xD2F8,\n\t38135 - 11905: 0xEFA8,\n\t38136 - 11905: 0xD6FD,\n\t38137 - 11905: 0xEFA9,\n\t38138 - 11905: 0xC6CC,\n\t38139 - 11905: 0xE89E,\n\t38140 - 11905: 0xEFAA,\n\t38141 - 11905: 0xEFAB,\n\t38142 - 11905: 0xC1B4,\n\t38143 - 11905: 0xEFAC,\n\t38144 - 11905: 0xCFFA,\n\t38145 - 11905: 0xCBF8,\n\t38146 - 11905: 0xEFAE,\n\t38147 - 11905: 0xEFAD,\n\t38148 - 11905: 0xB3FA,\n\t38149 - 11905: 0xB9F8,\n\t38150 - 11905: 0xEFAF,\n\t38151 - 11905: 0xEFB0,\n\t38152 - 11905: 0xD0E2,\n\t38153 - 11905: 0xEFB1,\n\t38154 - 11905: 0xEFB2,\n\t38155 - 11905: 0xB7E6,\n\t38156 - 11905: 0xD0BF,\n\t38157 - 11905: 0xEFB3,\n\t38158 - 11905: 0xEFB4,\n\t38159 - 11905: 0xEFB5,\n\t38160 - 11905: 0xC8F1,\n\t38161 - 11905: 0xCCE0,\n\t38162 - 11905: 0xEFB6,\n\t38163 - 11905: 0xEFB7,\n\t38164 - 11905: 0xEFB8,\n\t38165 - 11905: 0xEFB9,\n\t38166 - 11905: 0xEFBA,\n\t38167 - 11905: 0xD5E0,\n\t38168 - 11905: 0xEFBB,\n\t38169 - 11905: 0xB4ED,\n\t38170 - 11905: 0xC3AA,\n\t38171 - 11905: 0xEFBC,\n\t38172 - 11905: 0xE89F,\n\t38173 - 11905: 0xEFBD,\n\t38174 - 11905: 0xEFBE,\n\t38175 - 11905: 0xEFBF,\n\t38176 - 11905: 0xE8A0,\n\t38177 - 11905: 0xCEFD,\n\t38178 - 11905: 0xEFC0,\n\t38179 - 11905: 0xC2E0,\n\t38180 - 11905: 0xB4B8,\n\t38181 - 11905: 0xD7B6,\n\t38182 - 11905: 0xBDF5,\n\t38183 - 11905: 0xE940,\n\t38184 - 11905: 0xCFC7,\n\t38185 - 11905: 0xEFC3,\n\t38186 - 11905: 0xEFC1,\n\t38187 - 11905: 0xEFC2,\n\t38188 - 11905: 0xEFC4,\n\t38189 - 11905: 0xB6A7,\n\t38190 - 11905: 0xBCFC,\n\t38191 - 11905: 0xBEE2,\n\t38192 - 11905: 0xC3CC,\n\t38193 - 11905: 0xEFC5,\n\t38194 - 11905: 0xEFC6,\n\t38195 - 11905: 0xE941,\n\t38196 - 11905: 0xEFC7,\n\t38197 - 11905: 0xEFCF,\n\t38198 - 11905: 0xEFC8,\n\t38199 - 11905: 0xEFC9,\n\t38200 - 11905: 0xEFCA,\n\t38201 - 11905: 0xC7C2,\n\t38202 - 11905: 0xEFF1,\n\t38203 - 11905: 0xB6CD,\n\t38204 - 11905: 0xEFCB,\n\t38205 - 11905: 0xE942,\n\t38206 - 11905: 0xEFCC,\n\t38207 - 11905: 0xEFCD,\n\t38208 - 11905: 0xB6C6,\n\t38209 - 11905: 0xC3BE,\n\t38210 - 11905: 0xEFCE,\n\t38211 - 11905: 0xE943,\n\t38212 - 11905: 0xEFD0,\n\t38213 - 11905: 0xEFD1,\n\t38214 - 11905: 0xEFD2,\n\t38215 - 11905: 0xD5F2,\n\t38216 - 11905: 0xE944,\n\t38217 - 11905: 0xEFD3,\n\t38218 - 11905: 0xC4F7,\n\t38219 - 11905: 0xE945,\n\t38220 - 11905: 0xEFD4,\n\t38221 - 11905: 0xC4F8,\n\t38222 - 11905: 0xEFD5,\n\t38223 - 11905: 0xEFD6,\n\t38224 - 11905: 0xB8E4,\n\t38225 - 11905: 0xB0F7,\n\t38226 - 11905: 0xEFD7,\n\t38227 - 11905: 0xEFD8,\n\t38228 - 11905: 0xEFD9,\n\t38229 - 11905: 0xE946,\n\t38230 - 11905: 0xEFDA,\n\t38231 - 11905: 0xEFDB,\n\t38232 - 11905: 0xEFDC,\n\t38233 - 11905: 0xEFDD,\n\t38234 - 11905: 0xE947,\n\t38235 - 11905: 0xEFDE,\n\t38236 - 11905: 0xBEB5,\n\t38237 - 11905: 0xEFE1,\n\t38238 - 11905: 0xEFDF,\n\t38239 - 11905: 0xEFE0,\n\t38240 - 11905: 0xE948,\n\t38241 - 11905: 0xEFE2,\n\t38242 - 11905: 0xEFE3,\n\t38243 - 11905: 0xC1CD,\n\t38244 - 11905: 0xEFE4,\n\t38245 - 11905: 0xEFE5,\n\t38246 - 11905: 0xEFE6,\n\t38247 - 11905: 0xEFE7,\n\t38248 - 11905: 0xEFE8,\n\t38249 - 11905: 0xEFE9,\n\t38250 - 11905: 0xEFEA,\n\t38251 - 11905: 0xEFEB,\n\t38252 - 11905: 0xEFEC,\n\t38253 - 11905: 0xC0D8,\n\t38254 - 11905: 0xE949,\n\t38255 - 11905: 0xEFED,\n\t38256 - 11905: 0xC1AD,\n\t38257 - 11905: 0xEFEE,\n\t38258 - 11905: 0xEFEF,\n\t38259 - 11905: 0xEFF0,\n\t38260 - 11905: 0xE94A,\n\t38261 - 11905: 0xE94B,\n\t38262 - 11905: 0xCFE2,\n\t38263 - 11905: 0xE94C,\n\t38264 - 11905: 0xE94D,\n\t38265 - 11905: 0xE94E,\n\t38266 - 11905: 0xE94F,\n\t38267 - 11905: 0xE950,\n\t38268 - 11905: 0xE951,\n\t38269 - 11905: 0xE952,\n\t38270 - 11905: 0xE953,\n\t38271 - 11905: 0xB3A4,\n\t38272 - 11905: 0xE954,\n\t38273 - 11905: 0xE955,\n\t38274 - 11905: 0xE956,\n\t38275 - 11905: 0xE957,\n\t38276 - 11905: 0xE958,\n\t38277 - 11905: 0xE959,\n\t38278 - 11905: 0xE95A,\n\t38279 - 11905: 0xE95B,\n\t38280 - 11905: 0xE95C,\n\t38281 - 11905: 0xE95D,\n\t38282 - 11905: 0xE95E,\n\t38283 - 11905: 0xE95F,\n\t38284 - 11905: 0xE960,\n\t38285 - 11905: 0xE961,\n\t38286 - 11905: 0xE962,\n\t38287 - 11905: 0xE963,\n\t38288 - 11905: 0xE964,\n\t38289 - 11905: 0xE965,\n\t38290 - 11905: 0xE966,\n\t38291 - 11905: 0xE967,\n\t38292 - 11905: 0xE968,\n\t38293 - 11905: 0xE969,\n\t38294 - 11905: 0xE96A,\n\t38295 - 11905: 0xE96B,\n\t38296 - 11905: 0xE96C,\n\t38297 - 11905: 0xE96D,\n\t38298 - 11905: 0xE96E,\n\t38299 - 11905: 0xE96F,\n\t38300 - 11905: 0xE970,\n\t38301 - 11905: 0xE971,\n\t38302 - 11905: 0xE972,\n\t38303 - 11905: 0xE973,\n\t38304 - 11905: 0xE974,\n\t38305 - 11905: 0xE975,\n\t38306 - 11905: 0xE976,\n\t38307 - 11905: 0xE977,\n\t38308 - 11905: 0xE978,\n\t38309 - 11905: 0xE979,\n\t38310 - 11905: 0xE97A,\n\t38311 - 11905: 0xE97B,\n\t38312 - 11905: 0xE97C,\n\t38313 - 11905: 0xE97D,\n\t38314 - 11905: 0xE97E,\n\t38315 - 11905: 0xE980,\n\t38316 - 11905: 0xE981,\n\t38317 - 11905: 0xE982,\n\t38318 - 11905: 0xE983,\n\t38319 - 11905: 0xE984,\n\t38320 - 11905: 0xE985,\n\t38321 - 11905: 0xE986,\n\t38322 - 11905: 0xE987,\n\t38323 - 11905: 0xE988,\n\t38324 - 11905: 0xE989,\n\t38325 - 11905: 0xE98A,\n\t38326 - 11905: 0xE98B,\n\t38327 - 11905: 0xE98C,\n\t38328 - 11905: 0xE98D,\n\t38329 - 11905: 0xE98E,\n\t38330 - 11905: 0xE98F,\n\t38331 - 11905: 0xE990,\n\t38332 - 11905: 0xE991,\n\t38333 - 11905: 0xE992,\n\t38334 - 11905: 0xE993,\n\t38335 - 11905: 0xE994,\n\t38336 - 11905: 0xE995,\n\t38337 - 11905: 0xE996,\n\t38338 - 11905: 0xE997,\n\t38339 - 11905: 0xE998,\n\t38340 - 11905: 0xE999,\n\t38341 - 11905: 0xE99A,\n\t38342 - 11905: 0xE99B,\n\t38343 - 11905: 0xE99C,\n\t38344 - 11905: 0xE99D,\n\t38345 - 11905: 0xE99E,\n\t38346 - 11905: 0xE99F,\n\t38347 - 11905: 0xE9A0,\n\t38348 - 11905: 0xEA40,\n\t38349 - 11905: 0xEA41,\n\t38350 - 11905: 0xEA42,\n\t38351 - 11905: 0xEA43,\n\t38352 - 11905: 0xEA44,\n\t38353 - 11905: 0xEA45,\n\t38354 - 11905: 0xEA46,\n\t38355 - 11905: 0xEA47,\n\t38356 - 11905: 0xEA48,\n\t38357 - 11905: 0xEA49,\n\t38358 - 11905: 0xEA4A,\n\t38359 - 11905: 0xEA4B,\n\t38360 - 11905: 0xEA4C,\n\t38361 - 11905: 0xEA4D,\n\t38362 - 11905: 0xEA4E,\n\t38363 - 11905: 0xEA4F,\n\t38364 - 11905: 0xEA50,\n\t38365 - 11905: 0xEA51,\n\t38366 - 11905: 0xEA52,\n\t38367 - 11905: 0xEA53,\n\t38368 - 11905: 0xEA54,\n\t38369 - 11905: 0xEA55,\n\t38370 - 11905: 0xEA56,\n\t38371 - 11905: 0xEA57,\n\t38372 - 11905: 0xEA58,\n\t38373 - 11905: 0xEA59,\n\t38374 - 11905: 0xEA5A,\n\t38375 - 11905: 0xEA5B,\n\t38376 - 11905: 0xC3C5,\n\t38377 - 11905: 0xE3C5,\n\t38378 - 11905: 0xC9C1,\n\t38379 - 11905: 0xE3C6,\n\t38380 - 11905: 0xEA5C,\n\t38381 - 11905: 0xB1D5,\n\t38382 - 11905: 0xCECA,\n\t38383 - 11905: 0xB4B3,\n\t38384 - 11905: 0xC8F2,\n\t38385 - 11905: 0xE3C7,\n\t38386 - 11905: 0xCFD0,\n\t38387 - 11905: 0xE3C8,\n\t38388 - 11905: 0xBCE4,\n\t38389 - 11905: 0xE3C9,\n\t38390 - 11905: 0xE3CA,\n\t38391 - 11905: 0xC3C6,\n\t38392 - 11905: 0xD5A2,\n\t38393 - 11905: 0xC4D6,\n\t38394 - 11905: 0xB9EB,\n\t38395 - 11905: 0xCEC5,\n\t38396 - 11905: 0xE3CB,\n\t38397 - 11905: 0xC3F6,\n\t38398 - 11905: 0xE3CC,\n\t38399 - 11905: 0xEA5D,\n\t38400 - 11905: 0xB7A7,\n\t38401 - 11905: 0xB8F3,\n\t38402 - 11905: 0xBAD2,\n\t38403 - 11905: 0xE3CD,\n\t38404 - 11905: 0xE3CE,\n\t38405 - 11905: 0xD4C4,\n\t38406 - 11905: 0xE3CF,\n\t38407 - 11905: 0xEA5E,\n\t38408 - 11905: 0xE3D0,\n\t38409 - 11905: 0xD1CB,\n\t38410 - 11905: 0xE3D1,\n\t38411 - 11905: 0xE3D2,\n\t38412 - 11905: 0xE3D3,\n\t38413 - 11905: 0xE3D4,\n\t38414 - 11905: 0xD1D6,\n\t38415 - 11905: 0xE3D5,\n\t38416 - 11905: 0xB2FB,\n\t38417 - 11905: 0xC0BB,\n\t38418 - 11905: 0xE3D6,\n\t38419 - 11905: 0xEA5F,\n\t38420 - 11905: 0xC0AB,\n\t38421 - 11905: 0xE3D7,\n\t38422 - 11905: 0xE3D8,\n\t38423 - 11905: 0xE3D9,\n\t38424 - 11905: 0xEA60,\n\t38425 - 11905: 0xE3DA,\n\t38426 - 11905: 0xE3DB,\n\t38427 - 11905: 0xEA61,\n\t38428 - 11905: 0xB8B7,\n\t38429 - 11905: 0xDAE2,\n\t38430 - 11905: 0xEA62,\n\t38431 - 11905: 0xB6D3,\n\t38432 - 11905: 0xEA63,\n\t38433 - 11905: 0xDAE4,\n\t38434 - 11905: 0xDAE3,\n\t38435 - 11905: 0xEA64,\n\t38436 - 11905: 0xEA65,\n\t38437 - 11905: 0xEA66,\n\t38438 - 11905: 0xEA67,\n\t38439 - 11905: 0xEA68,\n\t38440 - 11905: 0xEA69,\n\t38441 - 11905: 0xEA6A,\n\t38442 - 11905: 0xDAE6,\n\t38443 - 11905: 0xEA6B,\n\t38444 - 11905: 0xEA6C,\n\t38445 - 11905: 0xEA6D,\n\t38446 - 11905: 0xC8EE,\n\t38447 - 11905: 0xEA6E,\n\t38448 - 11905: 0xEA6F,\n\t38449 - 11905: 0xDAE5,\n\t38450 - 11905: 0xB7C0,\n\t38451 - 11905: 0xD1F4,\n\t38452 - 11905: 0xD2F5,\n\t38453 - 11905: 0xD5F3,\n\t38454 - 11905: 0xBDD7,\n\t38455 - 11905: 0xEA70,\n\t38456 - 11905: 0xEA71,\n\t38457 - 11905: 0xEA72,\n\t38458 - 11905: 0xEA73,\n\t38459 - 11905: 0xD7E8,\n\t38460 - 11905: 0xDAE8,\n\t38461 - 11905: 0xDAE7,\n\t38462 - 11905: 0xEA74,\n\t38463 - 11905: 0xB0A2,\n\t38464 - 11905: 0xCDD3,\n\t38465 - 11905: 0xEA75,\n\t38466 - 11905: 0xDAE9,\n\t38467 - 11905: 0xEA76,\n\t38468 - 11905: 0xB8BD,\n\t38469 - 11905: 0xBCCA,\n\t38470 - 11905: 0xC2BD,\n\t38471 - 11905: 0xC2A4,\n\t38472 - 11905: 0xB3C2,\n\t38473 - 11905: 0xDAEA,\n\t38474 - 11905: 0xEA77,\n\t38475 - 11905: 0xC2AA,\n\t38476 - 11905: 0xC4B0,\n\t38477 - 11905: 0xBDB5,\n\t38478 - 11905: 0xEA78,\n\t38479 - 11905: 0xEA79,\n\t38480 - 11905: 0xCFDE,\n\t38481 - 11905: 0xEA7A,\n\t38482 - 11905: 0xEA7B,\n\t38483 - 11905: 0xEA7C,\n\t38484 - 11905: 0xDAEB,\n\t38485 - 11905: 0xC9C2,\n\t38486 - 11905: 0xEA7D,\n\t38487 - 11905: 0xEA7E,\n\t38488 - 11905: 0xEA80,\n\t38489 - 11905: 0xEA81,\n\t38490 - 11905: 0xEA82,\n\t38491 - 11905: 0xB1DD,\n\t38492 - 11905: 0xEA83,\n\t38493 - 11905: 0xEA84,\n\t38494 - 11905: 0xEA85,\n\t38495 - 11905: 0xDAEC,\n\t38496 - 11905: 0xEA86,\n\t38497 - 11905: 0xB6B8,\n\t38498 - 11905: 0xD4BA,\n\t38499 - 11905: 0xEA87,\n\t38500 - 11905: 0xB3FD,\n\t38501 - 11905: 0xEA88,\n\t38502 - 11905: 0xEA89,\n\t38503 - 11905: 0xDAED,\n\t38504 - 11905: 0xD4C9,\n\t38505 - 11905: 0xCFD5,\n\t38506 - 11905: 0xC5E3,\n\t38507 - 11905: 0xEA8A,\n\t38508 - 11905: 0xDAEE,\n\t38509 - 11905: 0xEA8B,\n\t38510 - 11905: 0xEA8C,\n\t38511 - 11905: 0xEA8D,\n\t38512 - 11905: 0xEA8E,\n\t38513 - 11905: 0xEA8F,\n\t38514 - 11905: 0xDAEF,\n\t38515 - 11905: 0xEA90,\n\t38516 - 11905: 0xDAF0,\n\t38517 - 11905: 0xC1EA,\n\t38518 - 11905: 0xCCD5,\n\t38519 - 11905: 0xCFDD,\n\t38520 - 11905: 0xEA91,\n\t38521 - 11905: 0xEA92,\n\t38522 - 11905: 0xEA93,\n\t38523 - 11905: 0xEA94,\n\t38524 - 11905: 0xEA95,\n\t38525 - 11905: 0xEA96,\n\t38526 - 11905: 0xEA97,\n\t38527 - 11905: 0xEA98,\n\t38528 - 11905: 0xEA99,\n\t38529 - 11905: 0xEA9A,\n\t38530 - 11905: 0xEA9B,\n\t38531 - 11905: 0xEA9C,\n\t38532 - 11905: 0xEA9D,\n\t38533 - 11905: 0xD3E7,\n\t38534 - 11905: 0xC2A1,\n\t38535 - 11905: 0xEA9E,\n\t38536 - 11905: 0xDAF1,\n\t38537 - 11905: 0xEA9F,\n\t38538 - 11905: 0xEAA0,\n\t38539 - 11905: 0xCBE5,\n\t38540 - 11905: 0xEB40,\n\t38541 - 11905: 0xDAF2,\n\t38542 - 11905: 0xEB41,\n\t38543 - 11905: 0xCBE6,\n\t38544 - 11905: 0xD2FE,\n\t38545 - 11905: 0xEB42,\n\t38546 - 11905: 0xEB43,\n\t38547 - 11905: 0xEB44,\n\t38548 - 11905: 0xB8F4,\n\t38549 - 11905: 0xEB45,\n\t38550 - 11905: 0xEB46,\n\t38551 - 11905: 0xDAF3,\n\t38552 - 11905: 0xB0AF,\n\t38553 - 11905: 0xCFB6,\n\t38554 - 11905: 0xEB47,\n\t38555 - 11905: 0xEB48,\n\t38556 - 11905: 0xD5CF,\n\t38557 - 11905: 0xEB49,\n\t38558 - 11905: 0xEB4A,\n\t38559 - 11905: 0xEB4B,\n\t38560 - 11905: 0xEB4C,\n\t38561 - 11905: 0xEB4D,\n\t38562 - 11905: 0xEB4E,\n\t38563 - 11905: 0xEB4F,\n\t38564 - 11905: 0xEB50,\n\t38565 - 11905: 0xEB51,\n\t38566 - 11905: 0xEB52,\n\t38567 - 11905: 0xCBED,\n\t38568 - 11905: 0xEB53,\n\t38569 - 11905: 0xEB54,\n\t38570 - 11905: 0xEB55,\n\t38571 - 11905: 0xEB56,\n\t38572 - 11905: 0xEB57,\n\t38573 - 11905: 0xEB58,\n\t38574 - 11905: 0xEB59,\n\t38575 - 11905: 0xEB5A,\n\t38576 - 11905: 0xDAF4,\n\t38577 - 11905: 0xEB5B,\n\t38578 - 11905: 0xEB5C,\n\t38579 - 11905: 0xE3C4,\n\t38580 - 11905: 0xEB5D,\n\t38581 - 11905: 0xEB5E,\n\t38582 - 11905: 0xC1A5,\n\t38583 - 11905: 0xEB5F,\n\t38584 - 11905: 0xEB60,\n\t38585 - 11905: 0xF6BF,\n\t38586 - 11905: 0xEB61,\n\t38587 - 11905: 0xEB62,\n\t38588 - 11905: 0xF6C0,\n\t38589 - 11905: 0xF6C1,\n\t38590 - 11905: 0xC4D1,\n\t38591 - 11905: 0xEB63,\n\t38592 - 11905: 0xC8B8,\n\t38593 - 11905: 0xD1E3,\n\t38594 - 11905: 0xEB64,\n\t38595 - 11905: 0xEB65,\n\t38596 - 11905: 0xD0DB,\n\t38597 - 11905: 0xD1C5,\n\t38598 - 11905: 0xBCAF,\n\t38599 - 11905: 0xB9CD,\n\t38600 - 11905: 0xEB66,\n\t38601 - 11905: 0xEFF4,\n\t38602 - 11905: 0xEB67,\n\t38603 - 11905: 0xEB68,\n\t38604 - 11905: 0xB4C6,\n\t38605 - 11905: 0xD3BA,\n\t38606 - 11905: 0xF6C2,\n\t38607 - 11905: 0xB3FB,\n\t38608 - 11905: 0xEB69,\n\t38609 - 11905: 0xEB6A,\n\t38610 - 11905: 0xF6C3,\n\t38611 - 11905: 0xEB6B,\n\t38612 - 11905: 0xEB6C,\n\t38613 - 11905: 0xB5F1,\n\t38614 - 11905: 0xEB6D,\n\t38615 - 11905: 0xEB6E,\n\t38616 - 11905: 0xEB6F,\n\t38617 - 11905: 0xEB70,\n\t38618 - 11905: 0xEB71,\n\t38619 - 11905: 0xEB72,\n\t38620 - 11905: 0xEB73,\n\t38621 - 11905: 0xEB74,\n\t38622 - 11905: 0xEB75,\n\t38623 - 11905: 0xEB76,\n\t38624 - 11905: 0xF6C5,\n\t38625 - 11905: 0xEB77,\n\t38626 - 11905: 0xEB78,\n\t38627 - 11905: 0xEB79,\n\t38628 - 11905: 0xEB7A,\n\t38629 - 11905: 0xEB7B,\n\t38630 - 11905: 0xEB7C,\n\t38631 - 11905: 0xEB7D,\n\t38632 - 11905: 0xD3EA,\n\t38633 - 11905: 0xF6A7,\n\t38634 - 11905: 0xD1A9,\n\t38635 - 11905: 0xEB7E,\n\t38636 - 11905: 0xEB80,\n\t38637 - 11905: 0xEB81,\n\t38638 - 11905: 0xEB82,\n\t38639 - 11905: 0xF6A9,\n\t38640 - 11905: 0xEB83,\n\t38641 - 11905: 0xEB84,\n\t38642 - 11905: 0xEB85,\n\t38643 - 11905: 0xF6A8,\n\t38644 - 11905: 0xEB86,\n\t38645 - 11905: 0xEB87,\n\t38646 - 11905: 0xC1E3,\n\t38647 - 11905: 0xC0D7,\n\t38648 - 11905: 0xEB88,\n\t38649 - 11905: 0xB1A2,\n\t38650 - 11905: 0xEB89,\n\t38651 - 11905: 0xEB8A,\n\t38652 - 11905: 0xEB8B,\n\t38653 - 11905: 0xEB8C,\n\t38654 - 11905: 0xCEED,\n\t38655 - 11905: 0xEB8D,\n\t38656 - 11905: 0xD0E8,\n\t38657 - 11905: 0xF6AB,\n\t38658 - 11905: 0xEB8E,\n\t38659 - 11905: 0xEB8F,\n\t38660 - 11905: 0xCFF6,\n\t38661 - 11905: 0xEB90,\n\t38662 - 11905: 0xF6AA,\n\t38663 - 11905: 0xD5F0,\n\t38664 - 11905: 0xF6AC,\n\t38665 - 11905: 0xC3B9,\n\t38666 - 11905: 0xEB91,\n\t38667 - 11905: 0xEB92,\n\t38668 - 11905: 0xEB93,\n\t38669 - 11905: 0xBBF4,\n\t38670 - 11905: 0xF6AE,\n\t38671 - 11905: 0xF6AD,\n\t38672 - 11905: 0xEB94,\n\t38673 - 11905: 0xEB95,\n\t38674 - 11905: 0xEB96,\n\t38675 - 11905: 0xC4DE,\n\t38676 - 11905: 0xEB97,\n\t38677 - 11905: 0xEB98,\n\t38678 - 11905: 0xC1D8,\n\t38679 - 11905: 0xEB99,\n\t38680 - 11905: 0xEB9A,\n\t38681 - 11905: 0xEB9B,\n\t38682 - 11905: 0xEB9C,\n\t38683 - 11905: 0xEB9D,\n\t38684 - 11905: 0xCBAA,\n\t38685 - 11905: 0xEB9E,\n\t38686 - 11905: 0xCFBC,\n\t38687 - 11905: 0xEB9F,\n\t38688 - 11905: 0xEBA0,\n\t38689 - 11905: 0xEC40,\n\t38690 - 11905: 0xEC41,\n\t38691 - 11905: 0xEC42,\n\t38692 - 11905: 0xEC43,\n\t38693 - 11905: 0xEC44,\n\t38694 - 11905: 0xEC45,\n\t38695 - 11905: 0xEC46,\n\t38696 - 11905: 0xEC47,\n\t38697 - 11905: 0xEC48,\n\t38698 - 11905: 0xF6AF,\n\t38699 - 11905: 0xEC49,\n\t38700 - 11905: 0xEC4A,\n\t38701 - 11905: 0xF6B0,\n\t38702 - 11905: 0xEC4B,\n\t38703 - 11905: 0xEC4C,\n\t38704 - 11905: 0xF6B1,\n\t38705 - 11905: 0xEC4D,\n\t38706 - 11905: 0xC2B6,\n\t38707 - 11905: 0xEC4E,\n\t38708 - 11905: 0xEC4F,\n\t38709 - 11905: 0xEC50,\n\t38710 - 11905: 0xEC51,\n\t38711 - 11905: 0xEC52,\n\t38712 - 11905: 0xB0D4,\n\t38713 - 11905: 0xC5F9,\n\t38714 - 11905: 0xEC53,\n\t38715 - 11905: 0xEC54,\n\t38716 - 11905: 0xEC55,\n\t38717 - 11905: 0xEC56,\n\t38718 - 11905: 0xF6B2,\n\t38719 - 11905: 0xEC57,\n\t38720 - 11905: 0xEC58,\n\t38721 - 11905: 0xEC59,\n\t38722 - 11905: 0xEC5A,\n\t38723 - 11905: 0xEC5B,\n\t38724 - 11905: 0xEC5C,\n\t38725 - 11905: 0xEC5D,\n\t38726 - 11905: 0xEC5E,\n\t38727 - 11905: 0xEC5F,\n\t38728 - 11905: 0xEC60,\n\t38729 - 11905: 0xEC61,\n\t38730 - 11905: 0xEC62,\n\t38731 - 11905: 0xEC63,\n\t38732 - 11905: 0xEC64,\n\t38733 - 11905: 0xEC65,\n\t38734 - 11905: 0xEC66,\n\t38735 - 11905: 0xEC67,\n\t38736 - 11905: 0xEC68,\n\t38737 - 11905: 0xEC69,\n\t38738 - 11905: 0xC7E0,\n\t38739 - 11905: 0xF6A6,\n\t38740 - 11905: 0xEC6A,\n\t38741 - 11905: 0xEC6B,\n\t38742 - 11905: 0xBEB8,\n\t38743 - 11905: 0xEC6C,\n\t38744 - 11905: 0xEC6D,\n\t38745 - 11905: 0xBEB2,\n\t38746 - 11905: 0xEC6E,\n\t38747 - 11905: 0xB5E5,\n\t38748 - 11905: 0xEC6F,\n\t38749 - 11905: 0xEC70,\n\t38750 - 11905: 0xB7C7,\n\t38751 - 11905: 0xEC71,\n\t38752 - 11905: 0xBFBF,\n\t38753 - 11905: 0xC3D2,\n\t38754 - 11905: 0xC3E6,\n\t38755 - 11905: 0xEC72,\n\t38756 - 11905: 0xEC73,\n\t38757 - 11905: 0xD8CC,\n\t38758 - 11905: 0xEC74,\n\t38759 - 11905: 0xEC75,\n\t38760 - 11905: 0xEC76,\n\t38761 - 11905: 0xB8EF,\n\t38762 - 11905: 0xEC77,\n\t38763 - 11905: 0xEC78,\n\t38764 - 11905: 0xEC79,\n\t38765 - 11905: 0xEC7A,\n\t38766 - 11905: 0xEC7B,\n\t38767 - 11905: 0xEC7C,\n\t38768 - 11905: 0xEC7D,\n\t38769 - 11905: 0xEC7E,\n\t38770 - 11905: 0xEC80,\n\t38771 - 11905: 0xBDF9,\n\t38772 - 11905: 0xD1A5,\n\t38773 - 11905: 0xEC81,\n\t38774 - 11905: 0xB0D0,\n\t38775 - 11905: 0xEC82,\n\t38776 - 11905: 0xEC83,\n\t38777 - 11905: 0xEC84,\n\t38778 - 11905: 0xEC85,\n\t38779 - 11905: 0xEC86,\n\t38780 - 11905: 0xF7B0,\n\t38781 - 11905: 0xEC87,\n\t38782 - 11905: 0xEC88,\n\t38783 - 11905: 0xEC89,\n\t38784 - 11905: 0xEC8A,\n\t38785 - 11905: 0xEC8B,\n\t38786 - 11905: 0xEC8C,\n\t38787 - 11905: 0xEC8D,\n\t38788 - 11905: 0xEC8E,\n\t38789 - 11905: 0xF7B1,\n\t38790 - 11905: 0xEC8F,\n\t38791 - 11905: 0xEC90,\n\t38792 - 11905: 0xEC91,\n\t38793 - 11905: 0xEC92,\n\t38794 - 11905: 0xEC93,\n\t38795 - 11905: 0xD0AC,\n\t38796 - 11905: 0xEC94,\n\t38797 - 11905: 0xB0B0,\n\t38798 - 11905: 0xEC95,\n\t38799 - 11905: 0xEC96,\n\t38800 - 11905: 0xEC97,\n\t38801 - 11905: 0xF7B2,\n\t38802 - 11905: 0xF7B3,\n\t38803 - 11905: 0xEC98,\n\t38804 - 11905: 0xF7B4,\n\t38805 - 11905: 0xEC99,\n\t38806 - 11905: 0xEC9A,\n\t38807 - 11905: 0xEC9B,\n\t38808 - 11905: 0xC7CA,\n\t38809 - 11905: 0xEC9C,\n\t38810 - 11905: 0xEC9D,\n\t38811 - 11905: 0xEC9E,\n\t38812 - 11905: 0xEC9F,\n\t38813 - 11905: 0xECA0,\n\t38814 - 11905: 0xED40,\n\t38815 - 11905: 0xED41,\n\t38816 - 11905: 0xBECF,\n\t38817 - 11905: 0xED42,\n\t38818 - 11905: 0xED43,\n\t38819 - 11905: 0xF7B7,\n\t38820 - 11905: 0xED44,\n\t38821 - 11905: 0xED45,\n\t38822 - 11905: 0xED46,\n\t38823 - 11905: 0xED47,\n\t38824 - 11905: 0xED48,\n\t38825 - 11905: 0xED49,\n\t38826 - 11905: 0xED4A,\n\t38827 - 11905: 0xF7B6,\n\t38828 - 11905: 0xED4B,\n\t38829 - 11905: 0xB1DE,\n\t38830 - 11905: 0xED4C,\n\t38831 - 11905: 0xF7B5,\n\t38832 - 11905: 0xED4D,\n\t38833 - 11905: 0xED4E,\n\t38834 - 11905: 0xF7B8,\n\t38835 - 11905: 0xED4F,\n\t38836 - 11905: 0xF7B9,\n\t38837 - 11905: 0xED50,\n\t38838 - 11905: 0xED51,\n\t38839 - 11905: 0xED52,\n\t38840 - 11905: 0xED53,\n\t38841 - 11905: 0xED54,\n\t38842 - 11905: 0xED55,\n\t38843 - 11905: 0xED56,\n\t38844 - 11905: 0xED57,\n\t38845 - 11905: 0xED58,\n\t38846 - 11905: 0xED59,\n\t38847 - 11905: 0xED5A,\n\t38848 - 11905: 0xED5B,\n\t38849 - 11905: 0xED5C,\n\t38850 - 11905: 0xED5D,\n\t38851 - 11905: 0xED5E,\n\t38852 - 11905: 0xED5F,\n\t38853 - 11905: 0xED60,\n\t38854 - 11905: 0xED61,\n\t38855 - 11905: 0xED62,\n\t38856 - 11905: 0xED63,\n\t38857 - 11905: 0xED64,\n\t38858 - 11905: 0xED65,\n\t38859 - 11905: 0xED66,\n\t38860 - 11905: 0xED67,\n\t38861 - 11905: 0xED68,\n\t38862 - 11905: 0xED69,\n\t38863 - 11905: 0xED6A,\n\t38864 - 11905: 0xED6B,\n\t38865 - 11905: 0xED6C,\n\t38866 - 11905: 0xED6D,\n\t38867 - 11905: 0xED6E,\n\t38868 - 11905: 0xED6F,\n\t38869 - 11905: 0xED70,\n\t38870 - 11905: 0xED71,\n\t38871 - 11905: 0xED72,\n\t38872 - 11905: 0xED73,\n\t38873 - 11905: 0xED74,\n\t38874 - 11905: 0xED75,\n\t38875 - 11905: 0xED76,\n\t38876 - 11905: 0xED77,\n\t38877 - 11905: 0xED78,\n\t38878 - 11905: 0xED79,\n\t38879 - 11905: 0xED7A,\n\t38880 - 11905: 0xED7B,\n\t38881 - 11905: 0xED7C,\n\t38882 - 11905: 0xED7D,\n\t38883 - 11905: 0xED7E,\n\t38884 - 11905: 0xED80,\n\t38885 - 11905: 0xED81,\n\t38886 - 11905: 0xCEA4,\n\t38887 - 11905: 0xC8CD,\n\t38888 - 11905: 0xED82,\n\t38889 - 11905: 0xBAAB,\n\t38890 - 11905: 0xE8B8,\n\t38891 - 11905: 0xE8B9,\n\t38892 - 11905: 0xE8BA,\n\t38893 - 11905: 0xBEC2,\n\t38894 - 11905: 0xED83,\n\t38895 - 11905: 0xED84,\n\t38896 - 11905: 0xED85,\n\t38897 - 11905: 0xED86,\n\t38898 - 11905: 0xED87,\n\t38899 - 11905: 0xD2F4,\n\t38900 - 11905: 0xED88,\n\t38901 - 11905: 0xD4CF,\n\t38902 - 11905: 0xC9D8,\n\t38903 - 11905: 0xED89,\n\t38904 - 11905: 0xED8A,\n\t38905 - 11905: 0xED8B,\n\t38906 - 11905: 0xED8C,\n\t38907 - 11905: 0xED8D,\n\t38908 - 11905: 0xED8E,\n\t38909 - 11905: 0xED8F,\n\t38910 - 11905: 0xED90,\n\t38911 - 11905: 0xED91,\n\t38912 - 11905: 0xED92,\n\t38913 - 11905: 0xED93,\n\t38914 - 11905: 0xED94,\n\t38915 - 11905: 0xED95,\n\t38916 - 11905: 0xED96,\n\t38917 - 11905: 0xED97,\n\t38918 - 11905: 0xED98,\n\t38919 - 11905: 0xED99,\n\t38920 - 11905: 0xED9A,\n\t38921 - 11905: 0xED9B,\n\t38922 - 11905: 0xED9C,\n\t38923 - 11905: 0xED9D,\n\t38924 - 11905: 0xED9E,\n\t38925 - 11905: 0xED9F,\n\t38926 - 11905: 0xEDA0,\n\t38927 - 11905: 0xEE40,\n\t38928 - 11905: 0xEE41,\n\t38929 - 11905: 0xEE42,\n\t38930 - 11905: 0xEE43,\n\t38931 - 11905: 0xEE44,\n\t38932 - 11905: 0xEE45,\n\t38933 - 11905: 0xEE46,\n\t38934 - 11905: 0xEE47,\n\t38935 - 11905: 0xEE48,\n\t38936 - 11905: 0xEE49,\n\t38937 - 11905: 0xEE4A,\n\t38938 - 11905: 0xEE4B,\n\t38939 - 11905: 0xEE4C,\n\t38940 - 11905: 0xEE4D,\n\t38941 - 11905: 0xEE4E,\n\t38942 - 11905: 0xEE4F,\n\t38943 - 11905: 0xEE50,\n\t38944 - 11905: 0xEE51,\n\t38945 - 11905: 0xEE52,\n\t38946 - 11905: 0xEE53,\n\t38947 - 11905: 0xEE54,\n\t38948 - 11905: 0xEE55,\n\t38949 - 11905: 0xEE56,\n\t38950 - 11905: 0xEE57,\n\t38951 - 11905: 0xEE58,\n\t38952 - 11905: 0xEE59,\n\t38953 - 11905: 0xEE5A,\n\t38954 - 11905: 0xEE5B,\n\t38955 - 11905: 0xEE5C,\n\t38956 - 11905: 0xEE5D,\n\t38957 - 11905: 0xEE5E,\n\t38958 - 11905: 0xEE5F,\n\t38959 - 11905: 0xEE60,\n\t38960 - 11905: 0xEE61,\n\t38961 - 11905: 0xEE62,\n\t38962 - 11905: 0xEE63,\n\t38963 - 11905: 0xEE64,\n\t38964 - 11905: 0xEE65,\n\t38965 - 11905: 0xEE66,\n\t38966 - 11905: 0xEE67,\n\t38967 - 11905: 0xEE68,\n\t38968 - 11905: 0xEE69,\n\t38969 - 11905: 0xEE6A,\n\t38970 - 11905: 0xEE6B,\n\t38971 - 11905: 0xEE6C,\n\t38972 - 11905: 0xEE6D,\n\t38973 - 11905: 0xEE6E,\n\t38974 - 11905: 0xEE6F,\n\t38975 - 11905: 0xEE70,\n\t38976 - 11905: 0xEE71,\n\t38977 - 11905: 0xEE72,\n\t38978 - 11905: 0xEE73,\n\t38979 - 11905: 0xEE74,\n\t38980 - 11905: 0xEE75,\n\t38981 - 11905: 0xEE76,\n\t38982 - 11905: 0xEE77,\n\t38983 - 11905: 0xEE78,\n\t38984 - 11905: 0xEE79,\n\t38985 - 11905: 0xEE7A,\n\t38986 - 11905: 0xEE7B,\n\t38987 - 11905: 0xEE7C,\n\t38988 - 11905: 0xEE7D,\n\t38989 - 11905: 0xEE7E,\n\t38990 - 11905: 0xEE80,\n\t38991 - 11905: 0xEE81,\n\t38992 - 11905: 0xEE82,\n\t38993 - 11905: 0xEE83,\n\t38994 - 11905: 0xEE84,\n\t38995 - 11905: 0xEE85,\n\t38996 - 11905: 0xEE86,\n\t38997 - 11905: 0xEE87,\n\t38998 - 11905: 0xEE88,\n\t38999 - 11905: 0xEE89,\n\t39000 - 11905: 0xEE8A,\n\t39001 - 11905: 0xEE8B,\n\t39002 - 11905: 0xEE8C,\n\t39003 - 11905: 0xEE8D,\n\t39004 - 11905: 0xEE8E,\n\t39005 - 11905: 0xEE8F,\n\t39006 - 11905: 0xEE90,\n\t39007 - 11905: 0xEE91,\n\t39008 - 11905: 0xEE92,\n\t39009 - 11905: 0xEE93,\n\t39010 - 11905: 0xEE94,\n\t39011 - 11905: 0xEE95,\n\t39012 - 11905: 0xEE96,\n\t39013 - 11905: 0xEE97,\n\t39014 - 11905: 0xEE98,\n\t39015 - 11905: 0xEE99,\n\t39016 - 11905: 0xEE9A,\n\t39017 - 11905: 0xEE9B,\n\t39018 - 11905: 0xEE9C,\n\t39019 - 11905: 0xEE9D,\n\t39020 - 11905: 0xEE9E,\n\t39021 - 11905: 0xEE9F,\n\t39022 - 11905: 0xEEA0,\n\t39023 - 11905: 0xEF40,\n\t39024 - 11905: 0xEF41,\n\t39025 - 11905: 0xEF42,\n\t39026 - 11905: 0xEF43,\n\t39027 - 11905: 0xEF44,\n\t39028 - 11905: 0xEF45,\n\t39029 - 11905: 0xD2B3,\n\t39030 - 11905: 0xB6A5,\n\t39031 - 11905: 0xC7EA,\n\t39032 - 11905: 0xF1FC,\n\t39033 - 11905: 0xCFEE,\n\t39034 - 11905: 0xCBB3,\n\t39035 - 11905: 0xD0EB,\n\t39036 - 11905: 0xE7EF,\n\t39037 - 11905: 0xCDE7,\n\t39038 - 11905: 0xB9CB,\n\t39039 - 11905: 0xB6D9,\n\t39040 - 11905: 0xF1FD,\n\t39041 - 11905: 0xB0E4,\n\t39042 - 11905: 0xCBCC,\n\t39043 - 11905: 0xF1FE,\n\t39044 - 11905: 0xD4A4,\n\t39045 - 11905: 0xC2AD,\n\t39046 - 11905: 0xC1EC,\n\t39047 - 11905: 0xC6C4,\n\t39048 - 11905: 0xBEB1,\n\t39049 - 11905: 0xF2A1,\n\t39050 - 11905: 0xBCD5,\n\t39051 - 11905: 0xEF46,\n\t39052 - 11905: 0xF2A2,\n\t39053 - 11905: 0xF2A3,\n\t39054 - 11905: 0xEF47,\n\t39055 - 11905: 0xF2A4,\n\t39056 - 11905: 0xD2C3,\n\t39057 - 11905: 0xC6B5,\n\t39058 - 11905: 0xEF48,\n\t39059 - 11905: 0xCDC7,\n\t39060 - 11905: 0xF2A5,\n\t39061 - 11905: 0xEF49,\n\t39062 - 11905: 0xD3B1,\n\t39063 - 11905: 0xBFC5,\n\t39064 - 11905: 0xCCE2,\n\t39065 - 11905: 0xEF4A,\n\t39066 - 11905: 0xF2A6,\n\t39067 - 11905: 0xF2A7,\n\t39068 - 11905: 0xD1D5,\n\t39069 - 11905: 0xB6EE,\n\t39070 - 11905: 0xF2A8,\n\t39071 - 11905: 0xF2A9,\n\t39072 - 11905: 0xB5DF,\n\t39073 - 11905: 0xF2AA,\n\t39074 - 11905: 0xF2AB,\n\t39075 - 11905: 0xEF4B,\n\t39076 - 11905: 0xB2FC,\n\t39077 - 11905: 0xF2AC,\n\t39078 - 11905: 0xF2AD,\n\t39079 - 11905: 0xC8A7,\n\t39080 - 11905: 0xEF4C,\n\t39081 - 11905: 0xEF4D,\n\t39082 - 11905: 0xEF4E,\n\t39083 - 11905: 0xEF4F,\n\t39084 - 11905: 0xEF50,\n\t39085 - 11905: 0xEF51,\n\t39086 - 11905: 0xEF52,\n\t39087 - 11905: 0xEF53,\n\t39088 - 11905: 0xEF54,\n\t39089 - 11905: 0xEF55,\n\t39090 - 11905: 0xEF56,\n\t39091 - 11905: 0xEF57,\n\t39092 - 11905: 0xEF58,\n\t39093 - 11905: 0xEF59,\n\t39094 - 11905: 0xEF5A,\n\t39095 - 11905: 0xEF5B,\n\t39096 - 11905: 0xEF5C,\n\t39097 - 11905: 0xEF5D,\n\t39098 - 11905: 0xEF5E,\n\t39099 - 11905: 0xEF5F,\n\t39100 - 11905: 0xEF60,\n\t39101 - 11905: 0xEF61,\n\t39102 - 11905: 0xEF62,\n\t39103 - 11905: 0xEF63,\n\t39104 - 11905: 0xEF64,\n\t39105 - 11905: 0xEF65,\n\t39106 - 11905: 0xEF66,\n\t39107 - 11905: 0xEF67,\n\t39108 - 11905: 0xEF68,\n\t39109 - 11905: 0xEF69,\n\t39110 - 11905: 0xEF6A,\n\t39111 - 11905: 0xEF6B,\n\t39112 - 11905: 0xEF6C,\n\t39113 - 11905: 0xEF6D,\n\t39114 - 11905: 0xEF6E,\n\t39115 - 11905: 0xEF6F,\n\t39116 - 11905: 0xEF70,\n\t39117 - 11905: 0xEF71,\n\t39118 - 11905: 0xB7E7,\n\t39119 - 11905: 0xEF72,\n\t39120 - 11905: 0xEF73,\n\t39121 - 11905: 0xECA9,\n\t39122 - 11905: 0xECAA,\n\t39123 - 11905: 0xECAB,\n\t39124 - 11905: 0xEF74,\n\t39125 - 11905: 0xECAC,\n\t39126 - 11905: 0xEF75,\n\t39127 - 11905: 0xEF76,\n\t39128 - 11905: 0xC6AE,\n\t39129 - 11905: 0xECAD,\n\t39130 - 11905: 0xECAE,\n\t39131 - 11905: 0xEF77,\n\t39132 - 11905: 0xEF78,\n\t39133 - 11905: 0xEF79,\n\t39134 - 11905: 0xB7C9,\n\t39135 - 11905: 0xCAB3,\n\t39136 - 11905: 0xEF7A,\n\t39137 - 11905: 0xEF7B,\n\t39138 - 11905: 0xEF7C,\n\t39139 - 11905: 0xEF7D,\n\t39140 - 11905: 0xEF7E,\n\t39141 - 11905: 0xEF80,\n\t39142 - 11905: 0xEF81,\n\t39143 - 11905: 0xE2B8,\n\t39144 - 11905: 0xF7CF,\n\t39145 - 11905: 0xEF82,\n\t39146 - 11905: 0xEF83,\n\t39147 - 11905: 0xEF84,\n\t39148 - 11905: 0xEF85,\n\t39149 - 11905: 0xEF86,\n\t39150 - 11905: 0xEF87,\n\t39151 - 11905: 0xEF88,\n\t39152 - 11905: 0xEF89,\n\t39153 - 11905: 0xEF8A,\n\t39154 - 11905: 0xEF8B,\n\t39155 - 11905: 0xEF8C,\n\t39156 - 11905: 0xEF8D,\n\t39157 - 11905: 0xEF8E,\n\t39158 - 11905: 0xEF8F,\n\t39159 - 11905: 0xEF90,\n\t39160 - 11905: 0xEF91,\n\t39161 - 11905: 0xEF92,\n\t39162 - 11905: 0xEF93,\n\t39163 - 11905: 0xEF94,\n\t39164 - 11905: 0xEF95,\n\t39165 - 11905: 0xEF96,\n\t39166 - 11905: 0xEF97,\n\t39167 - 11905: 0xEF98,\n\t39168 - 11905: 0xEF99,\n\t39169 - 11905: 0xEF9A,\n\t39170 - 11905: 0xEF9B,\n\t39171 - 11905: 0xEF9C,\n\t39172 - 11905: 0xEF9D,\n\t39173 - 11905: 0xEF9E,\n\t39174 - 11905: 0xEF9F,\n\t39175 - 11905: 0xEFA0,\n\t39176 - 11905: 0xF040,\n\t39177 - 11905: 0xF041,\n\t39178 - 11905: 0xF042,\n\t39179 - 11905: 0xF043,\n\t39180 - 11905: 0xF044,\n\t39181 - 11905: 0xF7D0,\n\t39182 - 11905: 0xF045,\n\t39183 - 11905: 0xF046,\n\t39184 - 11905: 0xB2CD,\n\t39185 - 11905: 0xF047,\n\t39186 - 11905: 0xF048,\n\t39187 - 11905: 0xF049,\n\t39188 - 11905: 0xF04A,\n\t39189 - 11905: 0xF04B,\n\t39190 - 11905: 0xF04C,\n\t39191 - 11905: 0xF04D,\n\t39192 - 11905: 0xF04E,\n\t39193 - 11905: 0xF04F,\n\t39194 - 11905: 0xF050,\n\t39195 - 11905: 0xF051,\n\t39196 - 11905: 0xF052,\n\t39197 - 11905: 0xF053,\n\t39198 - 11905: 0xF054,\n\t39199 - 11905: 0xF055,\n\t39200 - 11905: 0xF056,\n\t39201 - 11905: 0xF057,\n\t39202 - 11905: 0xF058,\n\t39203 - 11905: 0xF059,\n\t39204 - 11905: 0xF05A,\n\t39205 - 11905: 0xF05B,\n\t39206 - 11905: 0xF05C,\n\t39207 - 11905: 0xF05D,\n\t39208 - 11905: 0xF05E,\n\t39209 - 11905: 0xF05F,\n\t39210 - 11905: 0xF060,\n\t39211 - 11905: 0xF061,\n\t39212 - 11905: 0xF062,\n\t39213 - 11905: 0xF063,\n\t39214 - 11905: 0xF7D1,\n\t39215 - 11905: 0xF064,\n\t39216 - 11905: 0xF065,\n\t39217 - 11905: 0xF066,\n\t39218 - 11905: 0xF067,\n\t39219 - 11905: 0xF068,\n\t39220 - 11905: 0xF069,\n\t39221 - 11905: 0xF06A,\n\t39222 - 11905: 0xF06B,\n\t39223 - 11905: 0xF06C,\n\t39224 - 11905: 0xF06D,\n\t39225 - 11905: 0xF06E,\n\t39226 - 11905: 0xF06F,\n\t39227 - 11905: 0xF070,\n\t39228 - 11905: 0xF071,\n\t39229 - 11905: 0xF072,\n\t39230 - 11905: 0xF073,\n\t39231 - 11905: 0xF074,\n\t39232 - 11905: 0xF075,\n\t39233 - 11905: 0xF076,\n\t39234 - 11905: 0xF077,\n\t39235 - 11905: 0xF078,\n\t39236 - 11905: 0xF079,\n\t39237 - 11905: 0xF07A,\n\t39238 - 11905: 0xF07B,\n\t39239 - 11905: 0xF07C,\n\t39240 - 11905: 0xF07D,\n\t39241 - 11905: 0xF07E,\n\t39242 - 11905: 0xF080,\n\t39243 - 11905: 0xF081,\n\t39244 - 11905: 0xF082,\n\t39245 - 11905: 0xF083,\n\t39246 - 11905: 0xF084,\n\t39247 - 11905: 0xF085,\n\t39248 - 11905: 0xF086,\n\t39249 - 11905: 0xF087,\n\t39250 - 11905: 0xF088,\n\t39251 - 11905: 0xF089,\n\t39252 - 11905: 0xF7D3,\n\t39253 - 11905: 0xF7D2,\n\t39254 - 11905: 0xF08A,\n\t39255 - 11905: 0xF08B,\n\t39256 - 11905: 0xF08C,\n\t39257 - 11905: 0xF08D,\n\t39258 - 11905: 0xF08E,\n\t39259 - 11905: 0xF08F,\n\t39260 - 11905: 0xF090,\n\t39261 - 11905: 0xF091,\n\t39262 - 11905: 0xF092,\n\t39263 - 11905: 0xF093,\n\t39264 - 11905: 0xF094,\n\t39265 - 11905: 0xF095,\n\t39266 - 11905: 0xF096,\n\t39267 - 11905: 0xE2BB,\n\t39268 - 11905: 0xF097,\n\t39269 - 11905: 0xBCA2,\n\t39270 - 11905: 0xF098,\n\t39271 - 11905: 0xE2BC,\n\t39272 - 11905: 0xE2BD,\n\t39273 - 11905: 0xE2BE,\n\t39274 - 11905: 0xE2BF,\n\t39275 - 11905: 0xE2C0,\n\t39276 - 11905: 0xE2C1,\n\t39277 - 11905: 0xB7B9,\n\t39278 - 11905: 0xD2FB,\n\t39279 - 11905: 0xBDA4,\n\t39280 - 11905: 0xCACE,\n\t39281 - 11905: 0xB1A5,\n\t39282 - 11905: 0xCBC7,\n\t39283 - 11905: 0xF099,\n\t39284 - 11905: 0xE2C2,\n\t39285 - 11905: 0xB6FC,\n\t39286 - 11905: 0xC8C4,\n\t39287 - 11905: 0xE2C3,\n\t39288 - 11905: 0xF09A,\n\t39289 - 11905: 0xF09B,\n\t39290 - 11905: 0xBDC8,\n\t39291 - 11905: 0xF09C,\n\t39292 - 11905: 0xB1FD,\n\t39293 - 11905: 0xE2C4,\n\t39294 - 11905: 0xF09D,\n\t39295 - 11905: 0xB6F6,\n\t39296 - 11905: 0xE2C5,\n\t39297 - 11905: 0xC4D9,\n\t39298 - 11905: 0xF09E,\n\t39299 - 11905: 0xF09F,\n\t39300 - 11905: 0xE2C6,\n\t39301 - 11905: 0xCFDA,\n\t39302 - 11905: 0xB9DD,\n\t39303 - 11905: 0xE2C7,\n\t39304 - 11905: 0xC0A1,\n\t39305 - 11905: 0xF0A0,\n\t39306 - 11905: 0xE2C8,\n\t39307 - 11905: 0xB2F6,\n\t39308 - 11905: 0xF140,\n\t39309 - 11905: 0xE2C9,\n\t39310 - 11905: 0xF141,\n\t39311 - 11905: 0xC1F3,\n\t39312 - 11905: 0xE2CA,\n\t39313 - 11905: 0xE2CB,\n\t39314 - 11905: 0xC2F8,\n\t39315 - 11905: 0xE2CC,\n\t39316 - 11905: 0xE2CD,\n\t39317 - 11905: 0xE2CE,\n\t39318 - 11905: 0xCAD7,\n\t39319 - 11905: 0xD8B8,\n\t39320 - 11905: 0xD9E5,\n\t39321 - 11905: 0xCFE3,\n\t39322 - 11905: 0xF142,\n\t39323 - 11905: 0xF143,\n\t39324 - 11905: 0xF144,\n\t39325 - 11905: 0xF145,\n\t39326 - 11905: 0xF146,\n\t39327 - 11905: 0xF147,\n\t39328 - 11905: 0xF148,\n\t39329 - 11905: 0xF149,\n\t39330 - 11905: 0xF14A,\n\t39331 - 11905: 0xF14B,\n\t39332 - 11905: 0xF14C,\n\t39333 - 11905: 0xF0A5,\n\t39334 - 11905: 0xF14D,\n\t39335 - 11905: 0xF14E,\n\t39336 - 11905: 0xDCB0,\n\t39337 - 11905: 0xF14F,\n\t39338 - 11905: 0xF150,\n\t39339 - 11905: 0xF151,\n\t39340 - 11905: 0xF152,\n\t39341 - 11905: 0xF153,\n\t39342 - 11905: 0xF154,\n\t39343 - 11905: 0xF155,\n\t39344 - 11905: 0xF156,\n\t39345 - 11905: 0xF157,\n\t39346 - 11905: 0xF158,\n\t39347 - 11905: 0xF159,\n\t39348 - 11905: 0xF15A,\n\t39349 - 11905: 0xF15B,\n\t39350 - 11905: 0xF15C,\n\t39351 - 11905: 0xF15D,\n\t39352 - 11905: 0xF15E,\n\t39353 - 11905: 0xF15F,\n\t39354 - 11905: 0xF160,\n\t39355 - 11905: 0xF161,\n\t39356 - 11905: 0xF162,\n\t39357 - 11905: 0xF163,\n\t39358 - 11905: 0xF164,\n\t39359 - 11905: 0xF165,\n\t39360 - 11905: 0xF166,\n\t39361 - 11905: 0xF167,\n\t39362 - 11905: 0xF168,\n\t39363 - 11905: 0xF169,\n\t39364 - 11905: 0xF16A,\n\t39365 - 11905: 0xF16B,\n\t39366 - 11905: 0xF16C,\n\t39367 - 11905: 0xF16D,\n\t39368 - 11905: 0xF16E,\n\t39369 - 11905: 0xF16F,\n\t39370 - 11905: 0xF170,\n\t39371 - 11905: 0xF171,\n\t39372 - 11905: 0xF172,\n\t39373 - 11905: 0xF173,\n\t39374 - 11905: 0xF174,\n\t39375 - 11905: 0xF175,\n\t39376 - 11905: 0xF176,\n\t39377 - 11905: 0xF177,\n\t39378 - 11905: 0xF178,\n\t39379 - 11905: 0xF179,\n\t39380 - 11905: 0xF17A,\n\t39381 - 11905: 0xF17B,\n\t39382 - 11905: 0xF17C,\n\t39383 - 11905: 0xF17D,\n\t39384 - 11905: 0xF17E,\n\t39385 - 11905: 0xF180,\n\t39386 - 11905: 0xF181,\n\t39387 - 11905: 0xF182,\n\t39388 - 11905: 0xF183,\n\t39389 - 11905: 0xF184,\n\t39390 - 11905: 0xF185,\n\t39391 - 11905: 0xF186,\n\t39392 - 11905: 0xF187,\n\t39393 - 11905: 0xF188,\n\t39394 - 11905: 0xF189,\n\t39395 - 11905: 0xF18A,\n\t39396 - 11905: 0xF18B,\n\t39397 - 11905: 0xF18C,\n\t39398 - 11905: 0xF18D,\n\t39399 - 11905: 0xF18E,\n\t39400 - 11905: 0xF18F,\n\t39401 - 11905: 0xF190,\n\t39402 - 11905: 0xF191,\n\t39403 - 11905: 0xF192,\n\t39404 - 11905: 0xF193,\n\t39405 - 11905: 0xF194,\n\t39406 - 11905: 0xF195,\n\t39407 - 11905: 0xF196,\n\t39408 - 11905: 0xF197,\n\t39409 - 11905: 0xF198,\n\t39410 - 11905: 0xF199,\n\t39411 - 11905: 0xF19A,\n\t39412 - 11905: 0xF19B,\n\t39413 - 11905: 0xF19C,\n\t39414 - 11905: 0xF19D,\n\t39415 - 11905: 0xF19E,\n\t39416 - 11905: 0xF19F,\n\t39417 - 11905: 0xF1A0,\n\t39418 - 11905: 0xF240,\n\t39419 - 11905: 0xF241,\n\t39420 - 11905: 0xF242,\n\t39421 - 11905: 0xF243,\n\t39422 - 11905: 0xF244,\n\t39423 - 11905: 0xF245,\n\t39424 - 11905: 0xF246,\n\t39425 - 11905: 0xF247,\n\t39426 - 11905: 0xF248,\n\t39427 - 11905: 0xF249,\n\t39428 - 11905: 0xF24A,\n\t39429 - 11905: 0xF24B,\n\t39430 - 11905: 0xF24C,\n\t39431 - 11905: 0xF24D,\n\t39432 - 11905: 0xF24E,\n\t39433 - 11905: 0xF24F,\n\t39434 - 11905: 0xF250,\n\t39435 - 11905: 0xF251,\n\t39436 - 11905: 0xF252,\n\t39437 - 11905: 0xF253,\n\t39438 - 11905: 0xF254,\n\t39439 - 11905: 0xF255,\n\t39440 - 11905: 0xF256,\n\t39441 - 11905: 0xF257,\n\t39442 - 11905: 0xF258,\n\t39443 - 11905: 0xF259,\n\t39444 - 11905: 0xF25A,\n\t39445 - 11905: 0xF25B,\n\t39446 - 11905: 0xF25C,\n\t39447 - 11905: 0xF25D,\n\t39448 - 11905: 0xF25E,\n\t39449 - 11905: 0xF25F,\n\t39450 - 11905: 0xF260,\n\t39451 - 11905: 0xF261,\n\t39452 - 11905: 0xF262,\n\t39453 - 11905: 0xF263,\n\t39454 - 11905: 0xF264,\n\t39455 - 11905: 0xF265,\n\t39456 - 11905: 0xF266,\n\t39457 - 11905: 0xF267,\n\t39458 - 11905: 0xF268,\n\t39459 - 11905: 0xF269,\n\t39460 - 11905: 0xF26A,\n\t39461 - 11905: 0xF26B,\n\t39462 - 11905: 0xF26C,\n\t39463 - 11905: 0xF26D,\n\t39464 - 11905: 0xF26E,\n\t39465 - 11905: 0xF26F,\n\t39466 - 11905: 0xF270,\n\t39467 - 11905: 0xF271,\n\t39468 - 11905: 0xF272,\n\t39469 - 11905: 0xF273,\n\t39470 - 11905: 0xF274,\n\t39471 - 11905: 0xF275,\n\t39472 - 11905: 0xF276,\n\t39473 - 11905: 0xF277,\n\t39474 - 11905: 0xF278,\n\t39475 - 11905: 0xF279,\n\t39476 - 11905: 0xF27A,\n\t39477 - 11905: 0xF27B,\n\t39478 - 11905: 0xF27C,\n\t39479 - 11905: 0xF27D,\n\t39480 - 11905: 0xF27E,\n\t39481 - 11905: 0xF280,\n\t39482 - 11905: 0xF281,\n\t39483 - 11905: 0xF282,\n\t39484 - 11905: 0xF283,\n\t39485 - 11905: 0xF284,\n\t39486 - 11905: 0xF285,\n\t39487 - 11905: 0xF286,\n\t39488 - 11905: 0xF287,\n\t39489 - 11905: 0xF288,\n\t39490 - 11905: 0xF289,\n\t39491 - 11905: 0xF28A,\n\t39492 - 11905: 0xF28B,\n\t39493 - 11905: 0xF28C,\n\t39494 - 11905: 0xF28D,\n\t39495 - 11905: 0xF28E,\n\t39496 - 11905: 0xF28F,\n\t39497 - 11905: 0xF290,\n\t39498 - 11905: 0xF291,\n\t39499 - 11905: 0xF292,\n\t39500 - 11905: 0xF293,\n\t39501 - 11905: 0xF294,\n\t39502 - 11905: 0xF295,\n\t39503 - 11905: 0xF296,\n\t39504 - 11905: 0xF297,\n\t39505 - 11905: 0xF298,\n\t39506 - 11905: 0xF299,\n\t39507 - 11905: 0xF29A,\n\t39508 - 11905: 0xF29B,\n\t39509 - 11905: 0xF29C,\n\t39510 - 11905: 0xF29D,\n\t39511 - 11905: 0xF29E,\n\t39512 - 11905: 0xF29F,\n\t39513 - 11905: 0xF2A0,\n\t39514 - 11905: 0xF340,\n\t39515 - 11905: 0xF341,\n\t39516 - 11905: 0xF342,\n\t39517 - 11905: 0xF343,\n\t39518 - 11905: 0xF344,\n\t39519 - 11905: 0xF345,\n\t39520 - 11905: 0xF346,\n\t39521 - 11905: 0xF347,\n\t39522 - 11905: 0xF348,\n\t39523 - 11905: 0xF349,\n\t39524 - 11905: 0xF34A,\n\t39525 - 11905: 0xF34B,\n\t39526 - 11905: 0xF34C,\n\t39527 - 11905: 0xF34D,\n\t39528 - 11905: 0xF34E,\n\t39529 - 11905: 0xF34F,\n\t39530 - 11905: 0xF350,\n\t39531 - 11905: 0xF351,\n\t39532 - 11905: 0xC2ED,\n\t39533 - 11905: 0xD4A6,\n\t39534 - 11905: 0xCDD4,\n\t39535 - 11905: 0xD1B1,\n\t39536 - 11905: 0xB3DB,\n\t39537 - 11905: 0xC7FD,\n\t39538 - 11905: 0xF352,\n\t39539 - 11905: 0xB2B5,\n\t39540 - 11905: 0xC2BF,\n\t39541 - 11905: 0xE6E0,\n\t39542 - 11905: 0xCABB,\n\t39543 - 11905: 0xE6E1,\n\t39544 - 11905: 0xE6E2,\n\t39545 - 11905: 0xBED4,\n\t39546 - 11905: 0xE6E3,\n\t39547 - 11905: 0xD7A4,\n\t39548 - 11905: 0xCDD5,\n\t39549 - 11905: 0xE6E5,\n\t39550 - 11905: 0xBCDD,\n\t39551 - 11905: 0xE6E4,\n\t39552 - 11905: 0xE6E6,\n\t39553 - 11905: 0xE6E7,\n\t39554 - 11905: 0xC2EE,\n\t39555 - 11905: 0xF353,\n\t39556 - 11905: 0xBDBE,\n\t39557 - 11905: 0xE6E8,\n\t39558 - 11905: 0xC2E6,\n\t39559 - 11905: 0xBAA7,\n\t39560 - 11905: 0xE6E9,\n\t39561 - 11905: 0xF354,\n\t39562 - 11905: 0xE6EA,\n\t39563 - 11905: 0xB3D2,\n\t39564 - 11905: 0xD1E9,\n\t39565 - 11905: 0xF355,\n\t39566 - 11905: 0xF356,\n\t39567 - 11905: 0xBFA5,\n\t39568 - 11905: 0xE6EB,\n\t39569 - 11905: 0xC6EF,\n\t39570 - 11905: 0xE6EC,\n\t39571 - 11905: 0xE6ED,\n\t39572 - 11905: 0xF357,\n\t39573 - 11905: 0xF358,\n\t39574 - 11905: 0xE6EE,\n\t39575 - 11905: 0xC6AD,\n\t39576 - 11905: 0xE6EF,\n\t39577 - 11905: 0xF359,\n\t39578 - 11905: 0xC9A7,\n\t39579 - 11905: 0xE6F0,\n\t39580 - 11905: 0xE6F1,\n\t39581 - 11905: 0xE6F2,\n\t39582 - 11905: 0xE5B9,\n\t39583 - 11905: 0xE6F3,\n\t39584 - 11905: 0xE6F4,\n\t39585 - 11905: 0xC2E2,\n\t39586 - 11905: 0xE6F5,\n\t39587 - 11905: 0xE6F6,\n\t39588 - 11905: 0xD6E8,\n\t39589 - 11905: 0xE6F7,\n\t39590 - 11905: 0xF35A,\n\t39591 - 11905: 0xE6F8,\n\t39592 - 11905: 0xB9C7,\n\t39593 - 11905: 0xF35B,\n\t39594 - 11905: 0xF35C,\n\t39595 - 11905: 0xF35D,\n\t39596 - 11905: 0xF35E,\n\t39597 - 11905: 0xF35F,\n\t39598 - 11905: 0xF360,\n\t39599 - 11905: 0xF361,\n\t39600 - 11905: 0xF7BB,\n\t39601 - 11905: 0xF7BA,\n\t39602 - 11905: 0xF362,\n\t39603 - 11905: 0xF363,\n\t39604 - 11905: 0xF364,\n\t39605 - 11905: 0xF365,\n\t39606 - 11905: 0xF7BE,\n\t39607 - 11905: 0xF7BC,\n\t39608 - 11905: 0xBAA1,\n\t39609 - 11905: 0xF366,\n\t39610 - 11905: 0xF7BF,\n\t39611 - 11905: 0xF367,\n\t39612 - 11905: 0xF7C0,\n\t39613 - 11905: 0xF368,\n\t39614 - 11905: 0xF369,\n\t39615 - 11905: 0xF36A,\n\t39616 - 11905: 0xF7C2,\n\t39617 - 11905: 0xF7C1,\n\t39618 - 11905: 0xF7C4,\n\t39619 - 11905: 0xF36B,\n\t39620 - 11905: 0xF36C,\n\t39621 - 11905: 0xF7C3,\n\t39622 - 11905: 0xF36D,\n\t39623 - 11905: 0xF36E,\n\t39624 - 11905: 0xF36F,\n\t39625 - 11905: 0xF370,\n\t39626 - 11905: 0xF371,\n\t39627 - 11905: 0xF7C5,\n\t39628 - 11905: 0xF7C6,\n\t39629 - 11905: 0xF372,\n\t39630 - 11905: 0xF373,\n\t39631 - 11905: 0xF374,\n\t39632 - 11905: 0xF375,\n\t39633 - 11905: 0xF7C7,\n\t39634 - 11905: 0xF376,\n\t39635 - 11905: 0xCBE8,\n\t39636 - 11905: 0xF377,\n\t39637 - 11905: 0xF378,\n\t39638 - 11905: 0xF379,\n\t39639 - 11905: 0xF37A,\n\t39640 - 11905: 0xB8DF,\n\t39641 - 11905: 0xF37B,\n\t39642 - 11905: 0xF37C,\n\t39643 - 11905: 0xF37D,\n\t39644 - 11905: 0xF37E,\n\t39645 - 11905: 0xF380,\n\t39646 - 11905: 0xF381,\n\t39647 - 11905: 0xF7D4,\n\t39648 - 11905: 0xF382,\n\t39649 - 11905: 0xF7D5,\n\t39650 - 11905: 0xF383,\n\t39651 - 11905: 0xF384,\n\t39652 - 11905: 0xF385,\n\t39653 - 11905: 0xF386,\n\t39654 - 11905: 0xF7D6,\n\t39655 - 11905: 0xF387,\n\t39656 - 11905: 0xF388,\n\t39657 - 11905: 0xF389,\n\t39658 - 11905: 0xF38A,\n\t39659 - 11905: 0xF7D8,\n\t39660 - 11905: 0xF38B,\n\t39661 - 11905: 0xF7DA,\n\t39662 - 11905: 0xF38C,\n\t39663 - 11905: 0xF7D7,\n\t39664 - 11905: 0xF38D,\n\t39665 - 11905: 0xF38E,\n\t39666 - 11905: 0xF38F,\n\t39667 - 11905: 0xF390,\n\t39668 - 11905: 0xF391,\n\t39669 - 11905: 0xF392,\n\t39670 - 11905: 0xF393,\n\t39671 - 11905: 0xF394,\n\t39672 - 11905: 0xF395,\n\t39673 - 11905: 0xF7DB,\n\t39674 - 11905: 0xF396,\n\t39675 - 11905: 0xF7D9,\n\t39676 - 11905: 0xF397,\n\t39677 - 11905: 0xF398,\n\t39678 - 11905: 0xF399,\n\t39679 - 11905: 0xF39A,\n\t39680 - 11905: 0xF39B,\n\t39681 - 11905: 0xF39C,\n\t39682 - 11905: 0xF39D,\n\t39683 - 11905: 0xD7D7,\n\t39684 - 11905: 0xF39E,\n\t39685 - 11905: 0xF39F,\n\t39686 - 11905: 0xF3A0,\n\t39687 - 11905: 0xF440,\n\t39688 - 11905: 0xF7DC,\n\t39689 - 11905: 0xF441,\n\t39690 - 11905: 0xF442,\n\t39691 - 11905: 0xF443,\n\t39692 - 11905: 0xF444,\n\t39693 - 11905: 0xF445,\n\t39694 - 11905: 0xF446,\n\t39695 - 11905: 0xF7DD,\n\t39696 - 11905: 0xF447,\n\t39697 - 11905: 0xF448,\n\t39698 - 11905: 0xF449,\n\t39699 - 11905: 0xF7DE,\n\t39700 - 11905: 0xF44A,\n\t39701 - 11905: 0xF44B,\n\t39702 - 11905: 0xF44C,\n\t39703 - 11905: 0xF44D,\n\t39704 - 11905: 0xF44E,\n\t39705 - 11905: 0xF44F,\n\t39706 - 11905: 0xF450,\n\t39707 - 11905: 0xF451,\n\t39708 - 11905: 0xF452,\n\t39709 - 11905: 0xF453,\n\t39710 - 11905: 0xF454,\n\t39711 - 11905: 0xF7DF,\n\t39712 - 11905: 0xF455,\n\t39713 - 11905: 0xF456,\n\t39714 - 11905: 0xF457,\n\t39715 - 11905: 0xF7E0,\n\t39716 - 11905: 0xF458,\n\t39717 - 11905: 0xF459,\n\t39718 - 11905: 0xF45A,\n\t39719 - 11905: 0xF45B,\n\t39720 - 11905: 0xF45C,\n\t39721 - 11905: 0xF45D,\n\t39722 - 11905: 0xF45E,\n\t39723 - 11905: 0xF45F,\n\t39724 - 11905: 0xF460,\n\t39725 - 11905: 0xF461,\n\t39726 - 11905: 0xF462,\n\t39727 - 11905: 0xDBCB,\n\t39728 - 11905: 0xF463,\n\t39729 - 11905: 0xF464,\n\t39730 - 11905: 0xD8AA,\n\t39731 - 11905: 0xF465,\n\t39732 - 11905: 0xF466,\n\t39733 - 11905: 0xF467,\n\t39734 - 11905: 0xF468,\n\t39735 - 11905: 0xF469,\n\t39736 - 11905: 0xF46A,\n\t39737 - 11905: 0xF46B,\n\t39738 - 11905: 0xF46C,\n\t39739 - 11905: 0xE5F7,\n\t39740 - 11905: 0xB9ED,\n\t39741 - 11905: 0xF46D,\n\t39742 - 11905: 0xF46E,\n\t39743 - 11905: 0xF46F,\n\t39744 - 11905: 0xF470,\n\t39745 - 11905: 0xBFFD,\n\t39746 - 11905: 0xBBEA,\n\t39747 - 11905: 0xF7C9,\n\t39748 - 11905: 0xC6C7,\n\t39749 - 11905: 0xF7C8,\n\t39750 - 11905: 0xF471,\n\t39751 - 11905: 0xF7CA,\n\t39752 - 11905: 0xF7CC,\n\t39753 - 11905: 0xF7CB,\n\t39754 - 11905: 0xF472,\n\t39755 - 11905: 0xF473,\n\t39756 - 11905: 0xF474,\n\t39757 - 11905: 0xF7CD,\n\t39758 - 11905: 0xF475,\n\t39759 - 11905: 0xCEBA,\n\t39760 - 11905: 0xF476,\n\t39761 - 11905: 0xF7CE,\n\t39762 - 11905: 0xF477,\n\t39763 - 11905: 0xF478,\n\t39764 - 11905: 0xC4A7,\n\t39765 - 11905: 0xF479,\n\t39766 - 11905: 0xF47A,\n\t39767 - 11905: 0xF47B,\n\t39768 - 11905: 0xF47C,\n\t39769 - 11905: 0xF47D,\n\t39770 - 11905: 0xF47E,\n\t39771 - 11905: 0xF480,\n\t39772 - 11905: 0xF481,\n\t39773 - 11905: 0xF482,\n\t39774 - 11905: 0xF483,\n\t39775 - 11905: 0xF484,\n\t39776 - 11905: 0xF485,\n\t39777 - 11905: 0xF486,\n\t39778 - 11905: 0xF487,\n\t39779 - 11905: 0xF488,\n\t39780 - 11905: 0xF489,\n\t39781 - 11905: 0xF48A,\n\t39782 - 11905: 0xF48B,\n\t39783 - 11905: 0xF48C,\n\t39784 - 11905: 0xF48D,\n\t39785 - 11905: 0xF48E,\n\t39786 - 11905: 0xF48F,\n\t39787 - 11905: 0xF490,\n\t39788 - 11905: 0xF491,\n\t39789 - 11905: 0xF492,\n\t39790 - 11905: 0xF493,\n\t39791 - 11905: 0xF494,\n\t39792 - 11905: 0xF495,\n\t39793 - 11905: 0xF496,\n\t39794 - 11905: 0xF497,\n\t39795 - 11905: 0xF498,\n\t39796 - 11905: 0xF499,\n\t39797 - 11905: 0xF49A,\n\t39798 - 11905: 0xF49B,\n\t39799 - 11905: 0xF49C,\n\t39800 - 11905: 0xF49D,\n\t39801 - 11905: 0xF49E,\n\t39802 - 11905: 0xF49F,\n\t39803 - 11905: 0xF4A0,\n\t39804 - 11905: 0xF540,\n\t39805 - 11905: 0xF541,\n\t39806 - 11905: 0xF542,\n\t39807 - 11905: 0xF543,\n\t39808 - 11905: 0xF544,\n\t39809 - 11905: 0xF545,\n\t39810 - 11905: 0xF546,\n\t39811 - 11905: 0xF547,\n\t39812 - 11905: 0xF548,\n\t39813 - 11905: 0xF549,\n\t39814 - 11905: 0xF54A,\n\t39815 - 11905: 0xF54B,\n\t39816 - 11905: 0xF54C,\n\t39817 - 11905: 0xF54D,\n\t39818 - 11905: 0xF54E,\n\t39819 - 11905: 0xF54F,\n\t39820 - 11905: 0xF550,\n\t39821 - 11905: 0xF551,\n\t39822 - 11905: 0xF552,\n\t39823 - 11905: 0xF553,\n\t39824 - 11905: 0xF554,\n\t39825 - 11905: 0xF555,\n\t39826 - 11905: 0xF556,\n\t39827 - 11905: 0xF557,\n\t39828 - 11905: 0xF558,\n\t39829 - 11905: 0xF559,\n\t39830 - 11905: 0xF55A,\n\t39831 - 11905: 0xF55B,\n\t39832 - 11905: 0xF55C,\n\t39833 - 11905: 0xF55D,\n\t39834 - 11905: 0xF55E,\n\t39835 - 11905: 0xF55F,\n\t39836 - 11905: 0xF560,\n\t39837 - 11905: 0xF561,\n\t39838 - 11905: 0xF562,\n\t39839 - 11905: 0xF563,\n\t39840 - 11905: 0xF564,\n\t39841 - 11905: 0xF565,\n\t39842 - 11905: 0xF566,\n\t39843 - 11905: 0xF567,\n\t39844 - 11905: 0xF568,\n\t39845 - 11905: 0xF569,\n\t39846 - 11905: 0xF56A,\n\t39847 - 11905: 0xF56B,\n\t39848 - 11905: 0xF56C,\n\t39849 - 11905: 0xF56D,\n\t39850 - 11905: 0xF56E,\n\t39851 - 11905: 0xF56F,\n\t39852 - 11905: 0xF570,\n\t39853 - 11905: 0xF571,\n\t39854 - 11905: 0xF572,\n\t39855 - 11905: 0xF573,\n\t39856 - 11905: 0xF574,\n\t39857 - 11905: 0xF575,\n\t39858 - 11905: 0xF576,\n\t39859 - 11905: 0xF577,\n\t39860 - 11905: 0xF578,\n\t39861 - 11905: 0xF579,\n\t39862 - 11905: 0xF57A,\n\t39863 - 11905: 0xF57B,\n\t39864 - 11905: 0xF57C,\n\t39865 - 11905: 0xF57D,\n\t39866 - 11905: 0xF57E,\n\t39867 - 11905: 0xF580,\n\t39868 - 11905: 0xF581,\n\t39869 - 11905: 0xF582,\n\t39870 - 11905: 0xF583,\n\t39871 - 11905: 0xF584,\n\t39872 - 11905: 0xF585,\n\t39873 - 11905: 0xF586,\n\t39874 - 11905: 0xF587,\n\t39875 - 11905: 0xF588,\n\t39876 - 11905: 0xF589,\n\t39877 - 11905: 0xF58A,\n\t39878 - 11905: 0xF58B,\n\t39879 - 11905: 0xF58C,\n\t39880 - 11905: 0xF58D,\n\t39881 - 11905: 0xF58E,\n\t39882 - 11905: 0xF58F,\n\t39883 - 11905: 0xF590,\n\t39884 - 11905: 0xF591,\n\t39885 - 11905: 0xF592,\n\t39886 - 11905: 0xF593,\n\t39887 - 11905: 0xF594,\n\t39888 - 11905: 0xF595,\n\t39889 - 11905: 0xF596,\n\t39890 - 11905: 0xF597,\n\t39891 - 11905: 0xF598,\n\t39892 - 11905: 0xF599,\n\t39893 - 11905: 0xF59A,\n\t39894 - 11905: 0xF59B,\n\t39895 - 11905: 0xF59C,\n\t39896 - 11905: 0xF59D,\n\t39897 - 11905: 0xF59E,\n\t39898 - 11905: 0xF59F,\n\t39899 - 11905: 0xF5A0,\n\t39900 - 11905: 0xF640,\n\t39901 - 11905: 0xF641,\n\t39902 - 11905: 0xF642,\n\t39903 - 11905: 0xF643,\n\t39904 - 11905: 0xF644,\n\t39905 - 11905: 0xF645,\n\t39906 - 11905: 0xF646,\n\t39907 - 11905: 0xF647,\n\t39908 - 11905: 0xF648,\n\t39909 - 11905: 0xF649,\n\t39910 - 11905: 0xF64A,\n\t39911 - 11905: 0xF64B,\n\t39912 - 11905: 0xF64C,\n\t39913 - 11905: 0xF64D,\n\t39914 - 11905: 0xF64E,\n\t39915 - 11905: 0xF64F,\n\t39916 - 11905: 0xF650,\n\t39917 - 11905: 0xF651,\n\t39918 - 11905: 0xF652,\n\t39919 - 11905: 0xF653,\n\t39920 - 11905: 0xF654,\n\t39921 - 11905: 0xF655,\n\t39922 - 11905: 0xF656,\n\t39923 - 11905: 0xF657,\n\t39924 - 11905: 0xF658,\n\t39925 - 11905: 0xF659,\n\t39926 - 11905: 0xF65A,\n\t39927 - 11905: 0xF65B,\n\t39928 - 11905: 0xF65C,\n\t39929 - 11905: 0xF65D,\n\t39930 - 11905: 0xF65E,\n\t39931 - 11905: 0xF65F,\n\t39932 - 11905: 0xF660,\n\t39933 - 11905: 0xF661,\n\t39934 - 11905: 0xF662,\n\t39935 - 11905: 0xF663,\n\t39936 - 11905: 0xF664,\n\t39937 - 11905: 0xF665,\n\t39938 - 11905: 0xF666,\n\t39939 - 11905: 0xF667,\n\t39940 - 11905: 0xF668,\n\t39941 - 11905: 0xF669,\n\t39942 - 11905: 0xF66A,\n\t39943 - 11905: 0xF66B,\n\t39944 - 11905: 0xF66C,\n\t39945 - 11905: 0xF66D,\n\t39946 - 11905: 0xF66E,\n\t39947 - 11905: 0xF66F,\n\t39948 - 11905: 0xF670,\n\t39949 - 11905: 0xF671,\n\t39950 - 11905: 0xF672,\n\t39951 - 11905: 0xF673,\n\t39952 - 11905: 0xF674,\n\t39953 - 11905: 0xF675,\n\t39954 - 11905: 0xF676,\n\t39955 - 11905: 0xF677,\n\t39956 - 11905: 0xF678,\n\t39957 - 11905: 0xF679,\n\t39958 - 11905: 0xF67A,\n\t39959 - 11905: 0xF67B,\n\t39960 - 11905: 0xF67C,\n\t39961 - 11905: 0xF67D,\n\t39962 - 11905: 0xF67E,\n\t39963 - 11905: 0xF680,\n\t39964 - 11905: 0xF681,\n\t39965 - 11905: 0xF682,\n\t39966 - 11905: 0xF683,\n\t39967 - 11905: 0xF684,\n\t39968 - 11905: 0xF685,\n\t39969 - 11905: 0xF686,\n\t39970 - 11905: 0xF687,\n\t39971 - 11905: 0xF688,\n\t39972 - 11905: 0xF689,\n\t39973 - 11905: 0xF68A,\n\t39974 - 11905: 0xF68B,\n\t39975 - 11905: 0xF68C,\n\t39976 - 11905: 0xF68D,\n\t39977 - 11905: 0xF68E,\n\t39978 - 11905: 0xF68F,\n\t39979 - 11905: 0xF690,\n\t39980 - 11905: 0xF691,\n\t39981 - 11905: 0xF692,\n\t39982 - 11905: 0xF693,\n\t39983 - 11905: 0xF694,\n\t39984 - 11905: 0xF695,\n\t39985 - 11905: 0xF696,\n\t39986 - 11905: 0xF697,\n\t39987 - 11905: 0xF698,\n\t39988 - 11905: 0xF699,\n\t39989 - 11905: 0xF69A,\n\t39990 - 11905: 0xF69B,\n\t39991 - 11905: 0xF69C,\n\t39992 - 11905: 0xF69D,\n\t39993 - 11905: 0xF69E,\n\t39994 - 11905: 0xF69F,\n\t39995 - 11905: 0xF6A0,\n\t39996 - 11905: 0xF740,\n\t39997 - 11905: 0xF741,\n\t39998 - 11905: 0xF742,\n\t39999 - 11905: 0xF743,\n\t40000 - 11905: 0xF744,\n\t40001 - 11905: 0xF745,\n\t40002 - 11905: 0xF746,\n\t40003 - 11905: 0xF747,\n\t40004 - 11905: 0xF748,\n\t40005 - 11905: 0xF749,\n\t40006 - 11905: 0xF74A,\n\t40007 - 11905: 0xF74B,\n\t40008 - 11905: 0xF74C,\n\t40009 - 11905: 0xF74D,\n\t40010 - 11905: 0xF74E,\n\t40011 - 11905: 0xF74F,\n\t40012 - 11905: 0xF750,\n\t40013 - 11905: 0xF751,\n\t40014 - 11905: 0xF752,\n\t40015 - 11905: 0xF753,\n\t40016 - 11905: 0xF754,\n\t40017 - 11905: 0xF755,\n\t40018 - 11905: 0xF756,\n\t40019 - 11905: 0xF757,\n\t40020 - 11905: 0xF758,\n\t40021 - 11905: 0xF759,\n\t40022 - 11905: 0xF75A,\n\t40023 - 11905: 0xF75B,\n\t40024 - 11905: 0xF75C,\n\t40025 - 11905: 0xF75D,\n\t40026 - 11905: 0xF75E,\n\t40027 - 11905: 0xF75F,\n\t40028 - 11905: 0xF760,\n\t40029 - 11905: 0xF761,\n\t40030 - 11905: 0xF762,\n\t40031 - 11905: 0xF763,\n\t40032 - 11905: 0xF764,\n\t40033 - 11905: 0xF765,\n\t40034 - 11905: 0xF766,\n\t40035 - 11905: 0xF767,\n\t40036 - 11905: 0xF768,\n\t40037 - 11905: 0xF769,\n\t40038 - 11905: 0xF76A,\n\t40039 - 11905: 0xF76B,\n\t40040 - 11905: 0xF76C,\n\t40041 - 11905: 0xF76D,\n\t40042 - 11905: 0xF76E,\n\t40043 - 11905: 0xF76F,\n\t40044 - 11905: 0xF770,\n\t40045 - 11905: 0xF771,\n\t40046 - 11905: 0xF772,\n\t40047 - 11905: 0xF773,\n\t40048 - 11905: 0xF774,\n\t40049 - 11905: 0xF775,\n\t40050 - 11905: 0xF776,\n\t40051 - 11905: 0xF777,\n\t40052 - 11905: 0xF778,\n\t40053 - 11905: 0xF779,\n\t40054 - 11905: 0xF77A,\n\t40055 - 11905: 0xF77B,\n\t40056 - 11905: 0xF77C,\n\t40057 - 11905: 0xF77D,\n\t40058 - 11905: 0xF77E,\n\t40059 - 11905: 0xF780,\n\t40060 - 11905: 0xD3E3,\n\t40061 - 11905: 0xF781,\n\t40062 - 11905: 0xF782,\n\t40063 - 11905: 0xF6CF,\n\t40064 - 11905: 0xF783,\n\t40065 - 11905: 0xC2B3,\n\t40066 - 11905: 0xF6D0,\n\t40067 - 11905: 0xF784,\n\t40068 - 11905: 0xF785,\n\t40069 - 11905: 0xF6D1,\n\t40070 - 11905: 0xF6D2,\n\t40071 - 11905: 0xF6D3,\n\t40072 - 11905: 0xF6D4,\n\t40073 - 11905: 0xF786,\n\t40074 - 11905: 0xF787,\n\t40075 - 11905: 0xF6D6,\n\t40076 - 11905: 0xF788,\n\t40077 - 11905: 0xB1AB,\n\t40078 - 11905: 0xF6D7,\n\t40079 - 11905: 0xF789,\n\t40080 - 11905: 0xF6D8,\n\t40081 - 11905: 0xF6D9,\n\t40082 - 11905: 0xF6DA,\n\t40083 - 11905: 0xF78A,\n\t40084 - 11905: 0xF6DB,\n\t40085 - 11905: 0xF6DC,\n\t40086 - 11905: 0xF78B,\n\t40087 - 11905: 0xF78C,\n\t40088 - 11905: 0xF78D,\n\t40089 - 11905: 0xF78E,\n\t40090 - 11905: 0xF6DD,\n\t40091 - 11905: 0xF6DE,\n\t40092 - 11905: 0xCFCA,\n\t40093 - 11905: 0xF78F,\n\t40094 - 11905: 0xF6DF,\n\t40095 - 11905: 0xF6E0,\n\t40096 - 11905: 0xF6E1,\n\t40097 - 11905: 0xF6E2,\n\t40098 - 11905: 0xF6E3,\n\t40099 - 11905: 0xF6E4,\n\t40100 - 11905: 0xC0F0,\n\t40101 - 11905: 0xF6E5,\n\t40102 - 11905: 0xF6E6,\n\t40103 - 11905: 0xF6E7,\n\t40104 - 11905: 0xF6E8,\n\t40105 - 11905: 0xF6E9,\n\t40106 - 11905: 0xF790,\n\t40107 - 11905: 0xF6EA,\n\t40108 - 11905: 0xF791,\n\t40109 - 11905: 0xF6EB,\n\t40110 - 11905: 0xF6EC,\n\t40111 - 11905: 0xF792,\n\t40112 - 11905: 0xF6ED,\n\t40113 - 11905: 0xF6EE,\n\t40114 - 11905: 0xF6EF,\n\t40115 - 11905: 0xF6F0,\n\t40116 - 11905: 0xF6F1,\n\t40117 - 11905: 0xF6F2,\n\t40118 - 11905: 0xF6F3,\n\t40119 - 11905: 0xF6F4,\n\t40120 - 11905: 0xBEA8,\n\t40121 - 11905: 0xF793,\n\t40122 - 11905: 0xF6F5,\n\t40123 - 11905: 0xF6F6,\n\t40124 - 11905: 0xF6F7,\n\t40125 - 11905: 0xF6F8,\n\t40126 - 11905: 0xF794,\n\t40127 - 11905: 0xF795,\n\t40128 - 11905: 0xF796,\n\t40129 - 11905: 0xF797,\n\t40130 - 11905: 0xF798,\n\t40131 - 11905: 0xC8FA,\n\t40132 - 11905: 0xF6F9,\n\t40133 - 11905: 0xF6FA,\n\t40134 - 11905: 0xF6FB,\n\t40135 - 11905: 0xF6FC,\n\t40136 - 11905: 0xF799,\n\t40137 - 11905: 0xF79A,\n\t40138 - 11905: 0xF6FD,\n\t40139 - 11905: 0xF6FE,\n\t40140 - 11905: 0xF7A1,\n\t40141 - 11905: 0xF7A2,\n\t40142 - 11905: 0xF7A3,\n\t40143 - 11905: 0xF7A4,\n\t40144 - 11905: 0xF7A5,\n\t40145 - 11905: 0xF79B,\n\t40146 - 11905: 0xF79C,\n\t40147 - 11905: 0xF7A6,\n\t40148 - 11905: 0xF7A7,\n\t40149 - 11905: 0xF7A8,\n\t40150 - 11905: 0xB1EE,\n\t40151 - 11905: 0xF7A9,\n\t40152 - 11905: 0xF7AA,\n\t40153 - 11905: 0xF7AB,\n\t40154 - 11905: 0xF79D,\n\t40155 - 11905: 0xF79E,\n\t40156 - 11905: 0xF7AC,\n\t40157 - 11905: 0xF7AD,\n\t40158 - 11905: 0xC1DB,\n\t40159 - 11905: 0xF7AE,\n\t40160 - 11905: 0xF79F,\n\t40161 - 11905: 0xF7A0,\n\t40162 - 11905: 0xF7AF,\n\t40163 - 11905: 0xF840,\n\t40164 - 11905: 0xF841,\n\t40165 - 11905: 0xF842,\n\t40166 - 11905: 0xF843,\n\t40167 - 11905: 0xF844,\n\t40168 - 11905: 0xF845,\n\t40169 - 11905: 0xF846,\n\t40170 - 11905: 0xF847,\n\t40171 - 11905: 0xF848,\n\t40172 - 11905: 0xF849,\n\t40173 - 11905: 0xF84A,\n\t40174 - 11905: 0xF84B,\n\t40175 - 11905: 0xF84C,\n\t40176 - 11905: 0xF84D,\n\t40177 - 11905: 0xF84E,\n\t40178 - 11905: 0xF84F,\n\t40179 - 11905: 0xF850,\n\t40180 - 11905: 0xF851,\n\t40181 - 11905: 0xF852,\n\t40182 - 11905: 0xF853,\n\t40183 - 11905: 0xF854,\n\t40184 - 11905: 0xF855,\n\t40185 - 11905: 0xF856,\n\t40186 - 11905: 0xF857,\n\t40187 - 11905: 0xF858,\n\t40188 - 11905: 0xF859,\n\t40189 - 11905: 0xF85A,\n\t40190 - 11905: 0xF85B,\n\t40191 - 11905: 0xF85C,\n\t40192 - 11905: 0xF85D,\n\t40193 - 11905: 0xF85E,\n\t40194 - 11905: 0xF85F,\n\t40195 - 11905: 0xF860,\n\t40196 - 11905: 0xF861,\n\t40197 - 11905: 0xF862,\n\t40198 - 11905: 0xF863,\n\t40199 - 11905: 0xF864,\n\t40200 - 11905: 0xF865,\n\t40201 - 11905: 0xF866,\n\t40202 - 11905: 0xF867,\n\t40203 - 11905: 0xF868,\n\t40204 - 11905: 0xF869,\n\t40205 - 11905: 0xF86A,\n\t40206 - 11905: 0xF86B,\n\t40207 - 11905: 0xF86C,\n\t40208 - 11905: 0xF86D,\n\t40209 - 11905: 0xF86E,\n\t40210 - 11905: 0xF86F,\n\t40211 - 11905: 0xF870,\n\t40212 - 11905: 0xF871,\n\t40213 - 11905: 0xF872,\n\t40214 - 11905: 0xF873,\n\t40215 - 11905: 0xF874,\n\t40216 - 11905: 0xF875,\n\t40217 - 11905: 0xF876,\n\t40218 - 11905: 0xF877,\n\t40219 - 11905: 0xF878,\n\t40220 - 11905: 0xF879,\n\t40221 - 11905: 0xF87A,\n\t40222 - 11905: 0xF87B,\n\t40223 - 11905: 0xF87C,\n\t40224 - 11905: 0xF87D,\n\t40225 - 11905: 0xF87E,\n\t40226 - 11905: 0xF880,\n\t40227 - 11905: 0xF881,\n\t40228 - 11905: 0xF882,\n\t40229 - 11905: 0xF883,\n\t40230 - 11905: 0xF884,\n\t40231 - 11905: 0xF885,\n\t40232 - 11905: 0xF886,\n\t40233 - 11905: 0xF887,\n\t40234 - 11905: 0xF888,\n\t40235 - 11905: 0xF889,\n\t40236 - 11905: 0xF88A,\n\t40237 - 11905: 0xF88B,\n\t40238 - 11905: 0xF88C,\n\t40239 - 11905: 0xF88D,\n\t40240 - 11905: 0xF88E,\n\t40241 - 11905: 0xF88F,\n\t40242 - 11905: 0xF890,\n\t40243 - 11905: 0xF891,\n\t40244 - 11905: 0xF892,\n\t40245 - 11905: 0xF893,\n\t40246 - 11905: 0xF894,\n\t40247 - 11905: 0xF895,\n\t40248 - 11905: 0xF896,\n\t40249 - 11905: 0xF897,\n\t40250 - 11905: 0xF898,\n\t40251 - 11905: 0xF899,\n\t40252 - 11905: 0xF89A,\n\t40253 - 11905: 0xF89B,\n\t40254 - 11905: 0xF89C,\n\t40255 - 11905: 0xF89D,\n\t40256 - 11905: 0xF89E,\n\t40257 - 11905: 0xF89F,\n\t40258 - 11905: 0xF8A0,\n\t40259 - 11905: 0xF940,\n\t40260 - 11905: 0xF941,\n\t40261 - 11905: 0xF942,\n\t40262 - 11905: 0xF943,\n\t40263 - 11905: 0xF944,\n\t40264 - 11905: 0xF945,\n\t40265 - 11905: 0xF946,\n\t40266 - 11905: 0xF947,\n\t40267 - 11905: 0xF948,\n\t40268 - 11905: 0xF949,\n\t40269 - 11905: 0xF94A,\n\t40270 - 11905: 0xF94B,\n\t40271 - 11905: 0xF94C,\n\t40272 - 11905: 0xF94D,\n\t40273 - 11905: 0xF94E,\n\t40274 - 11905: 0xF94F,\n\t40275 - 11905: 0xF950,\n\t40276 - 11905: 0xF951,\n\t40277 - 11905: 0xF952,\n\t40278 - 11905: 0xF953,\n\t40279 - 11905: 0xF954,\n\t40280 - 11905: 0xF955,\n\t40281 - 11905: 0xF956,\n\t40282 - 11905: 0xF957,\n\t40283 - 11905: 0xF958,\n\t40284 - 11905: 0xF959,\n\t40285 - 11905: 0xF95A,\n\t40286 - 11905: 0xF95B,\n\t40287 - 11905: 0xF95C,\n\t40288 - 11905: 0xF95D,\n\t40289 - 11905: 0xF95E,\n\t40290 - 11905: 0xF95F,\n\t40291 - 11905: 0xF960,\n\t40292 - 11905: 0xF961,\n\t40293 - 11905: 0xF962,\n\t40294 - 11905: 0xF963,\n\t40295 - 11905: 0xF964,\n\t40296 - 11905: 0xF965,\n\t40297 - 11905: 0xF966,\n\t40298 - 11905: 0xF967,\n\t40299 - 11905: 0xF968,\n\t40300 - 11905: 0xF969,\n\t40301 - 11905: 0xF96A,\n\t40302 - 11905: 0xF96B,\n\t40303 - 11905: 0xF96C,\n\t40304 - 11905: 0xF96D,\n\t40305 - 11905: 0xF96E,\n\t40306 - 11905: 0xF96F,\n\t40307 - 11905: 0xF970,\n\t40308 - 11905: 0xF971,\n\t40309 - 11905: 0xF972,\n\t40310 - 11905: 0xF973,\n\t40311 - 11905: 0xF974,\n\t40312 - 11905: 0xF975,\n\t40313 - 11905: 0xF976,\n\t40314 - 11905: 0xF977,\n\t40315 - 11905: 0xF978,\n\t40316 - 11905: 0xF979,\n\t40317 - 11905: 0xF97A,\n\t40318 - 11905: 0xF97B,\n\t40319 - 11905: 0xF97C,\n\t40320 - 11905: 0xF97D,\n\t40321 - 11905: 0xF97E,\n\t40322 - 11905: 0xF980,\n\t40323 - 11905: 0xF981,\n\t40324 - 11905: 0xF982,\n\t40325 - 11905: 0xF983,\n\t40326 - 11905: 0xF984,\n\t40327 - 11905: 0xF985,\n\t40328 - 11905: 0xF986,\n\t40329 - 11905: 0xF987,\n\t40330 - 11905: 0xF988,\n\t40331 - 11905: 0xF989,\n\t40332 - 11905: 0xF98A,\n\t40333 - 11905: 0xF98B,\n\t40334 - 11905: 0xF98C,\n\t40335 - 11905: 0xF98D,\n\t40336 - 11905: 0xF98E,\n\t40337 - 11905: 0xF98F,\n\t40338 - 11905: 0xF990,\n\t40339 - 11905: 0xF991,\n\t40340 - 11905: 0xF992,\n\t40341 - 11905: 0xF993,\n\t40342 - 11905: 0xF994,\n\t40343 - 11905: 0xF995,\n\t40344 - 11905: 0xF996,\n\t40345 - 11905: 0xF997,\n\t40346 - 11905: 0xF998,\n\t40347 - 11905: 0xF999,\n\t40348 - 11905: 0xF99A,\n\t40349 - 11905: 0xF99B,\n\t40350 - 11905: 0xF99C,\n\t40351 - 11905: 0xF99D,\n\t40352 - 11905: 0xF99E,\n\t40353 - 11905: 0xF99F,\n\t40354 - 11905: 0xF9A0,\n\t40355 - 11905: 0xFA40,\n\t40356 - 11905: 0xFA41,\n\t40357 - 11905: 0xFA42,\n\t40358 - 11905: 0xFA43,\n\t40359 - 11905: 0xFA44,\n\t40360 - 11905: 0xFA45,\n\t40361 - 11905: 0xFA46,\n\t40362 - 11905: 0xFA47,\n\t40363 - 11905: 0xFA48,\n\t40364 - 11905: 0xFA49,\n\t40365 - 11905: 0xFA4A,\n\t40366 - 11905: 0xFA4B,\n\t40367 - 11905: 0xFA4C,\n\t40368 - 11905: 0xFA4D,\n\t40369 - 11905: 0xFA4E,\n\t40370 - 11905: 0xFA4F,\n\t40371 - 11905: 0xFA50,\n\t40372 - 11905: 0xFA51,\n\t40373 - 11905: 0xFA52,\n\t40374 - 11905: 0xFA53,\n\t40375 - 11905: 0xFA54,\n\t40376 - 11905: 0xFA55,\n\t40377 - 11905: 0xFA56,\n\t40378 - 11905: 0xFA57,\n\t40379 - 11905: 0xFA58,\n\t40380 - 11905: 0xFA59,\n\t40381 - 11905: 0xFA5A,\n\t40382 - 11905: 0xFA5B,\n\t40383 - 11905: 0xFA5C,\n\t40384 - 11905: 0xFA5D,\n\t40385 - 11905: 0xFA5E,\n\t40386 - 11905: 0xFA5F,\n\t40387 - 11905: 0xFA60,\n\t40388 - 11905: 0xFA61,\n\t40389 - 11905: 0xFA62,\n\t40390 - 11905: 0xFA63,\n\t40391 - 11905: 0xFA64,\n\t40392 - 11905: 0xFA65,\n\t40393 - 11905: 0xFA66,\n\t40394 - 11905: 0xFA67,\n\t40395 - 11905: 0xFA68,\n\t40396 - 11905: 0xFA69,\n\t40397 - 11905: 0xFA6A,\n\t40398 - 11905: 0xFA6B,\n\t40399 - 11905: 0xFA6C,\n\t40400 - 11905: 0xFA6D,\n\t40401 - 11905: 0xFA6E,\n\t40402 - 11905: 0xFA6F,\n\t40403 - 11905: 0xFA70,\n\t40404 - 11905: 0xFA71,\n\t40405 - 11905: 0xFA72,\n\t40406 - 11905: 0xFA73,\n\t40407 - 11905: 0xFA74,\n\t40408 - 11905: 0xFA75,\n\t40409 - 11905: 0xFA76,\n\t40410 - 11905: 0xFA77,\n\t40411 - 11905: 0xFA78,\n\t40412 - 11905: 0xFA79,\n\t40413 - 11905: 0xFA7A,\n\t40414 - 11905: 0xFA7B,\n\t40415 - 11905: 0xFA7C,\n\t40416 - 11905: 0xFA7D,\n\t40417 - 11905: 0xFA7E,\n\t40418 - 11905: 0xFA80,\n\t40419 - 11905: 0xFA81,\n\t40420 - 11905: 0xFA82,\n\t40421 - 11905: 0xFA83,\n\t40422 - 11905: 0xFA84,\n\t40423 - 11905: 0xFA85,\n\t40424 - 11905: 0xFA86,\n\t40425 - 11905: 0xFA87,\n\t40426 - 11905: 0xFA88,\n\t40427 - 11905: 0xFA89,\n\t40428 - 11905: 0xFA8A,\n\t40429 - 11905: 0xFA8B,\n\t40430 - 11905: 0xFA8C,\n\t40431 - 11905: 0xFA8D,\n\t40432 - 11905: 0xFA8E,\n\t40433 - 11905: 0xFA8F,\n\t40434 - 11905: 0xFA90,\n\t40435 - 11905: 0xFA91,\n\t40436 - 11905: 0xFA92,\n\t40437 - 11905: 0xFA93,\n\t40438 - 11905: 0xFA94,\n\t40439 - 11905: 0xFA95,\n\t40440 - 11905: 0xFA96,\n\t40441 - 11905: 0xFA97,\n\t40442 - 11905: 0xFA98,\n\t40443 - 11905: 0xFA99,\n\t40444 - 11905: 0xFA9A,\n\t40445 - 11905: 0xFA9B,\n\t40446 - 11905: 0xFA9C,\n\t40447 - 11905: 0xFA9D,\n\t40448 - 11905: 0xFA9E,\n\t40449 - 11905: 0xFA9F,\n\t40450 - 11905: 0xFAA0,\n\t40451 - 11905: 0xFB40,\n\t40452 - 11905: 0xFB41,\n\t40453 - 11905: 0xFB42,\n\t40454 - 11905: 0xFB43,\n\t40455 - 11905: 0xFB44,\n\t40456 - 11905: 0xFB45,\n\t40457 - 11905: 0xFB46,\n\t40458 - 11905: 0xFB47,\n\t40459 - 11905: 0xFB48,\n\t40460 - 11905: 0xFB49,\n\t40461 - 11905: 0xFB4A,\n\t40462 - 11905: 0xFB4B,\n\t40463 - 11905: 0xFB4C,\n\t40464 - 11905: 0xFB4D,\n\t40465 - 11905: 0xFB4E,\n\t40466 - 11905: 0xFB4F,\n\t40467 - 11905: 0xFB50,\n\t40468 - 11905: 0xFB51,\n\t40469 - 11905: 0xFB52,\n\t40470 - 11905: 0xFB53,\n\t40471 - 11905: 0xFB54,\n\t40472 - 11905: 0xFB55,\n\t40473 - 11905: 0xFB56,\n\t40474 - 11905: 0xFB57,\n\t40475 - 11905: 0xFB58,\n\t40476 - 11905: 0xFB59,\n\t40477 - 11905: 0xFB5A,\n\t40478 - 11905: 0xFB5B,\n\t40479 - 11905: 0xC4F1,\n\t40480 - 11905: 0xF0AF,\n\t40481 - 11905: 0xBCA6,\n\t40482 - 11905: 0xF0B0,\n\t40483 - 11905: 0xC3F9,\n\t40484 - 11905: 0xFB5C,\n\t40485 - 11905: 0xC5B8,\n\t40486 - 11905: 0xD1BB,\n\t40487 - 11905: 0xFB5D,\n\t40488 - 11905: 0xF0B1,\n\t40489 - 11905: 0xF0B2,\n\t40490 - 11905: 0xF0B3,\n\t40491 - 11905: 0xF0B4,\n\t40492 - 11905: 0xF0B5,\n\t40493 - 11905: 0xD1BC,\n\t40494 - 11905: 0xFB5E,\n\t40495 - 11905: 0xD1EC,\n\t40496 - 11905: 0xFB5F,\n\t40497 - 11905: 0xF0B7,\n\t40498 - 11905: 0xF0B6,\n\t40499 - 11905: 0xD4A7,\n\t40500 - 11905: 0xFB60,\n\t40501 - 11905: 0xCDD2,\n\t40502 - 11905: 0xF0B8,\n\t40503 - 11905: 0xF0BA,\n\t40504 - 11905: 0xF0B9,\n\t40505 - 11905: 0xF0BB,\n\t40506 - 11905: 0xF0BC,\n\t40507 - 11905: 0xFB61,\n\t40508 - 11905: 0xFB62,\n\t40509 - 11905: 0xB8EB,\n\t40510 - 11905: 0xF0BD,\n\t40511 - 11905: 0xBAE8,\n\t40512 - 11905: 0xFB63,\n\t40513 - 11905: 0xF0BE,\n\t40514 - 11905: 0xF0BF,\n\t40515 - 11905: 0xBEE9,\n\t40516 - 11905: 0xF0C0,\n\t40517 - 11905: 0xB6EC,\n\t40518 - 11905: 0xF0C1,\n\t40519 - 11905: 0xF0C2,\n\t40520 - 11905: 0xF0C3,\n\t40521 - 11905: 0xF0C4,\n\t40522 - 11905: 0xC8B5,\n\t40523 - 11905: 0xF0C5,\n\t40524 - 11905: 0xF0C6,\n\t40525 - 11905: 0xFB64,\n\t40526 - 11905: 0xF0C7,\n\t40527 - 11905: 0xC5F4,\n\t40528 - 11905: 0xFB65,\n\t40529 - 11905: 0xF0C8,\n\t40530 - 11905: 0xFB66,\n\t40531 - 11905: 0xFB67,\n\t40532 - 11905: 0xFB68,\n\t40533 - 11905: 0xF0C9,\n\t40534 - 11905: 0xFB69,\n\t40535 - 11905: 0xF0CA,\n\t40536 - 11905: 0xF7BD,\n\t40537 - 11905: 0xFB6A,\n\t40538 - 11905: 0xF0CB,\n\t40539 - 11905: 0xF0CC,\n\t40540 - 11905: 0xF0CD,\n\t40541 - 11905: 0xFB6B,\n\t40542 - 11905: 0xF0CE,\n\t40543 - 11905: 0xFB6C,\n\t40544 - 11905: 0xFB6D,\n\t40545 - 11905: 0xFB6E,\n\t40546 - 11905: 0xFB6F,\n\t40547 - 11905: 0xF0CF,\n\t40548 - 11905: 0xBAD7,\n\t40549 - 11905: 0xFB70,\n\t40550 - 11905: 0xF0D0,\n\t40551 - 11905: 0xF0D1,\n\t40552 - 11905: 0xF0D2,\n\t40553 - 11905: 0xF0D3,\n\t40554 - 11905: 0xF0D4,\n\t40555 - 11905: 0xF0D5,\n\t40556 - 11905: 0xF0D6,\n\t40557 - 11905: 0xF0D8,\n\t40558 - 11905: 0xFB71,\n\t40559 - 11905: 0xFB72,\n\t40560 - 11905: 0xD3A5,\n\t40561 - 11905: 0xF0D7,\n\t40562 - 11905: 0xFB73,\n\t40563 - 11905: 0xF0D9,\n\t40564 - 11905: 0xFB74,\n\t40565 - 11905: 0xFB75,\n\t40566 - 11905: 0xFB76,\n\t40567 - 11905: 0xFB77,\n\t40568 - 11905: 0xFB78,\n\t40569 - 11905: 0xFB79,\n\t40570 - 11905: 0xFB7A,\n\t40571 - 11905: 0xFB7B,\n\t40572 - 11905: 0xFB7C,\n\t40573 - 11905: 0xFB7D,\n\t40574 - 11905: 0xF5BA,\n\t40575 - 11905: 0xC2B9,\n\t40576 - 11905: 0xFB7E,\n\t40577 - 11905: 0xFB80,\n\t40578 - 11905: 0xF7E4,\n\t40579 - 11905: 0xFB81,\n\t40580 - 11905: 0xFB82,\n\t40581 - 11905: 0xFB83,\n\t40582 - 11905: 0xFB84,\n\t40583 - 11905: 0xF7E5,\n\t40584 - 11905: 0xF7E6,\n\t40585 - 11905: 0xFB85,\n\t40586 - 11905: 0xFB86,\n\t40587 - 11905: 0xF7E7,\n\t40588 - 11905: 0xFB87,\n\t40589 - 11905: 0xFB88,\n\t40590 - 11905: 0xFB89,\n\t40591 - 11905: 0xFB8A,\n\t40592 - 11905: 0xFB8B,\n\t40593 - 11905: 0xFB8C,\n\t40594 - 11905: 0xF7E8,\n\t40595 - 11905: 0xC2B4,\n\t40596 - 11905: 0xFB8D,\n\t40597 - 11905: 0xFB8E,\n\t40598 - 11905: 0xFB8F,\n\t40599 - 11905: 0xFB90,\n\t40600 - 11905: 0xFB91,\n\t40601 - 11905: 0xFB92,\n\t40602 - 11905: 0xFB93,\n\t40603 - 11905: 0xFB94,\n\t40604 - 11905: 0xFB95,\n\t40605 - 11905: 0xF7EA,\n\t40606 - 11905: 0xFB96,\n\t40607 - 11905: 0xF7EB,\n\t40608 - 11905: 0xFB97,\n\t40609 - 11905: 0xFB98,\n\t40610 - 11905: 0xFB99,\n\t40611 - 11905: 0xFB9A,\n\t40612 - 11905: 0xFB9B,\n\t40613 - 11905: 0xFB9C,\n\t40614 - 11905: 0xC2F3,\n\t40615 - 11905: 0xFB9D,\n\t40616 - 11905: 0xFB9E,\n\t40617 - 11905: 0xFB9F,\n\t40618 - 11905: 0xFBA0,\n\t40619 - 11905: 0xFC40,\n\t40620 - 11905: 0xFC41,\n\t40621 - 11905: 0xFC42,\n\t40622 - 11905: 0xFC43,\n\t40623 - 11905: 0xFC44,\n\t40624 - 11905: 0xFC45,\n\t40625 - 11905: 0xFC46,\n\t40626 - 11905: 0xFC47,\n\t40627 - 11905: 0xFC48,\n\t40628 - 11905: 0xF4F0,\n\t40629 - 11905: 0xFC49,\n\t40630 - 11905: 0xFC4A,\n\t40631 - 11905: 0xFC4B,\n\t40632 - 11905: 0xF4EF,\n\t40633 - 11905: 0xFC4C,\n\t40634 - 11905: 0xFC4D,\n\t40635 - 11905: 0xC2E9,\n\t40636 - 11905: 0xFC4E,\n\t40637 - 11905: 0xF7E1,\n\t40638 - 11905: 0xF7E2,\n\t40639 - 11905: 0xFC4F,\n\t40640 - 11905: 0xFC50,\n\t40641 - 11905: 0xFC51,\n\t40642 - 11905: 0xFC52,\n\t40643 - 11905: 0xFC53,\n\t40644 - 11905: 0xBBC6,\n\t40645 - 11905: 0xFC54,\n\t40646 - 11905: 0xFC55,\n\t40647 - 11905: 0xFC56,\n\t40648 - 11905: 0xFC57,\n\t40649 - 11905: 0xD9E4,\n\t40650 - 11905: 0xFC58,\n\t40651 - 11905: 0xFC59,\n\t40652 - 11905: 0xFC5A,\n\t40653 - 11905: 0xCAF2,\n\t40654 - 11905: 0xC0E8,\n\t40655 - 11905: 0xF0A4,\n\t40656 - 11905: 0xFC5B,\n\t40657 - 11905: 0xBADA,\n\t40658 - 11905: 0xFC5C,\n\t40659 - 11905: 0xFC5D,\n\t40660 - 11905: 0xC7AD,\n\t40661 - 11905: 0xFC5E,\n\t40662 - 11905: 0xFC5F,\n\t40663 - 11905: 0xFC60,\n\t40664 - 11905: 0xC4AC,\n\t40665 - 11905: 0xFC61,\n\t40666 - 11905: 0xFC62,\n\t40667 - 11905: 0xF7EC,\n\t40668 - 11905: 0xF7ED,\n\t40669 - 11905: 0xF7EE,\n\t40670 - 11905: 0xFC63,\n\t40671 - 11905: 0xF7F0,\n\t40672 - 11905: 0xF7EF,\n\t40673 - 11905: 0xFC64,\n\t40674 - 11905: 0xF7F1,\n\t40675 - 11905: 0xFC65,\n\t40676 - 11905: 0xFC66,\n\t40677 - 11905: 0xF7F4,\n\t40678 - 11905: 0xFC67,\n\t40679 - 11905: 0xF7F3,\n\t40680 - 11905: 0xFC68,\n\t40681 - 11905: 0xF7F2,\n\t40682 - 11905: 0xF7F5,\n\t40683 - 11905: 0xFC69,\n\t40684 - 11905: 0xFC6A,\n\t40685 - 11905: 0xFC6B,\n\t40686 - 11905: 0xFC6C,\n\t40687 - 11905: 0xF7F6,\n\t40688 - 11905: 0xFC6D,\n\t40689 - 11905: 0xFC6E,\n\t40690 - 11905: 0xFC6F,\n\t40691 - 11905: 0xFC70,\n\t40692 - 11905: 0xFC71,\n\t40693 - 11905: 0xFC72,\n\t40694 - 11905: 0xFC73,\n\t40695 - 11905: 0xFC74,\n\t40696 - 11905: 0xFC75,\n\t40697 - 11905: 0xEDE9,\n\t40698 - 11905: 0xFC76,\n\t40699 - 11905: 0xEDEA,\n\t40700 - 11905: 0xEDEB,\n\t40701 - 11905: 0xFC77,\n\t40702 - 11905: 0xF6BC,\n\t40703 - 11905: 0xFC78,\n\t40704 - 11905: 0xFC79,\n\t40705 - 11905: 0xFC7A,\n\t40706 - 11905: 0xFC7B,\n\t40707 - 11905: 0xFC7C,\n\t40708 - 11905: 0xFC7D,\n\t40709 - 11905: 0xFC7E,\n\t40710 - 11905: 0xFC80,\n\t40711 - 11905: 0xFC81,\n\t40712 - 11905: 0xFC82,\n\t40713 - 11905: 0xFC83,\n\t40714 - 11905: 0xFC84,\n\t40715 - 11905: 0xF6BD,\n\t40716 - 11905: 0xFC85,\n\t40717 - 11905: 0xF6BE,\n\t40718 - 11905: 0xB6A6,\n\t40719 - 11905: 0xFC86,\n\t40720 - 11905: 0xD8BE,\n\t40721 - 11905: 0xFC87,\n\t40722 - 11905: 0xFC88,\n\t40723 - 11905: 0xB9C4,\n\t40724 - 11905: 0xFC89,\n\t40725 - 11905: 0xFC8A,\n\t40726 - 11905: 0xFC8B,\n\t40727 - 11905: 0xD8BB,\n\t40728 - 11905: 0xFC8C,\n\t40729 - 11905: 0xDCB1,\n\t40730 - 11905: 0xFC8D,\n\t40731 - 11905: 0xFC8E,\n\t40732 - 11905: 0xFC8F,\n\t40733 - 11905: 0xFC90,\n\t40734 - 11905: 0xFC91,\n\t40735 - 11905: 0xFC92,\n\t40736 - 11905: 0xCAF3,\n\t40737 - 11905: 0xFC93,\n\t40738 - 11905: 0xF7F7,\n\t40739 - 11905: 0xFC94,\n\t40740 - 11905: 0xFC95,\n\t40741 - 11905: 0xFC96,\n\t40742 - 11905: 0xFC97,\n\t40743 - 11905: 0xFC98,\n\t40744 - 11905: 0xFC99,\n\t40745 - 11905: 0xFC9A,\n\t40746 - 11905: 0xFC9B,\n\t40747 - 11905: 0xFC9C,\n\t40748 - 11905: 0xF7F8,\n\t40749 - 11905: 0xFC9D,\n\t40750 - 11905: 0xFC9E,\n\t40751 - 11905: 0xF7F9,\n\t40752 - 11905: 0xFC9F,\n\t40753 - 11905: 0xFCA0,\n\t40754 - 11905: 0xFD40,\n\t40755 - 11905: 0xFD41,\n\t40756 - 11905: 0xFD42,\n\t40757 - 11905: 0xFD43,\n\t40758 - 11905: 0xFD44,\n\t40759 - 11905: 0xF7FB,\n\t40760 - 11905: 0xFD45,\n\t40761 - 11905: 0xF7FA,\n\t40762 - 11905: 0xFD46,\n\t40763 - 11905: 0xB1C7,\n\t40764 - 11905: 0xFD47,\n\t40765 - 11905: 0xF7FC,\n\t40766 - 11905: 0xF7FD,\n\t40767 - 11905: 0xFD48,\n\t40768 - 11905: 0xFD49,\n\t40769 - 11905: 0xFD4A,\n\t40770 - 11905: 0xFD4B,\n\t40771 - 11905: 0xFD4C,\n\t40772 - 11905: 0xF7FE,\n\t40773 - 11905: 0xFD4D,\n\t40774 - 11905: 0xFD4E,\n\t40775 - 11905: 0xFD4F,\n\t40776 - 11905: 0xFD50,\n\t40777 - 11905: 0xFD51,\n\t40778 - 11905: 0xFD52,\n\t40779 - 11905: 0xFD53,\n\t40780 - 11905: 0xFD54,\n\t40781 - 11905: 0xFD55,\n\t40782 - 11905: 0xFD56,\n\t40783 - 11905: 0xFD57,\n\t40784 - 11905: 0xC6EB,\n\t40785 - 11905: 0xECB4,\n\t40786 - 11905: 0xFD58,\n\t40787 - 11905: 0xFD59,\n\t40788 - 11905: 0xFD5A,\n\t40789 - 11905: 0xFD5B,\n\t40790 - 11905: 0xFD5C,\n\t40791 - 11905: 0xFD5D,\n\t40792 - 11905: 0xFD5E,\n\t40793 - 11905: 0xFD5F,\n\t40794 - 11905: 0xFD60,\n\t40795 - 11905: 0xFD61,\n\t40796 - 11905: 0xFD62,\n\t40797 - 11905: 0xFD63,\n\t40798 - 11905: 0xFD64,\n\t40799 - 11905: 0xFD65,\n\t40800 - 11905: 0xFD66,\n\t40801 - 11905: 0xFD67,\n\t40802 - 11905: 0xFD68,\n\t40803 - 11905: 0xFD69,\n\t40804 - 11905: 0xFD6A,\n\t40805 - 11905: 0xFD6B,\n\t40806 - 11905: 0xFD6C,\n\t40807 - 11905: 0xFD6D,\n\t40808 - 11905: 0xFD6E,\n\t40809 - 11905: 0xFD6F,\n\t40810 - 11905: 0xFD70,\n\t40811 - 11905: 0xFD71,\n\t40812 - 11905: 0xFD72,\n\t40813 - 11905: 0xFD73,\n\t40814 - 11905: 0xFD74,\n\t40815 - 11905: 0xFD75,\n\t40816 - 11905: 0xFD76,\n\t40817 - 11905: 0xFD77,\n\t40818 - 11905: 0xFD78,\n\t40819 - 11905: 0xFD79,\n\t40820 - 11905: 0xFD7A,\n\t40821 - 11905: 0xFD7B,\n\t40822 - 11905: 0xFD7C,\n\t40823 - 11905: 0xFD7D,\n\t40824 - 11905: 0xFD7E,\n\t40825 - 11905: 0xFD80,\n\t40826 - 11905: 0xFD81,\n\t40827 - 11905: 0xFD82,\n\t40828 - 11905: 0xFD83,\n\t40829 - 11905: 0xFD84,\n\t40830 - 11905: 0xFD85,\n\t40831 - 11905: 0xB3DD,\n\t40832 - 11905: 0xF6B3,\n\t40833 - 11905: 0xFD86,\n\t40834 - 11905: 0xFD87,\n\t40835 - 11905: 0xF6B4,\n\t40836 - 11905: 0xC1E4,\n\t40837 - 11905: 0xF6B5,\n\t40838 - 11905: 0xF6B6,\n\t40839 - 11905: 0xF6B7,\n\t40840 - 11905: 0xF6B8,\n\t40841 - 11905: 0xF6B9,\n\t40842 - 11905: 0xF6BA,\n\t40843 - 11905: 0xC8A3,\n\t40844 - 11905: 0xF6BB,\n\t40845 - 11905: 0xFD88,\n\t40846 - 11905: 0xFD89,\n\t40847 - 11905: 0xFD8A,\n\t40848 - 11905: 0xFD8B,\n\t40849 - 11905: 0xFD8C,\n\t40850 - 11905: 0xFD8D,\n\t40851 - 11905: 0xFD8E,\n\t40852 - 11905: 0xFD8F,\n\t40853 - 11905: 0xFD90,\n\t40854 - 11905: 0xFD91,\n\t40855 - 11905: 0xFD92,\n\t40856 - 11905: 0xFD93,\n\t40857 - 11905: 0xC1FA,\n\t40858 - 11905: 0xB9A8,\n\t40859 - 11905: 0xEDE8,\n\t40860 - 11905: 0xFD94,\n\t40861 - 11905: 0xFD95,\n\t40862 - 11905: 0xFD96,\n\t40863 - 11905: 0xB9EA,\n\t40864 - 11905: 0xD9DF,\n\t40865 - 11905: 0xFD97,\n\t40866 - 11905: 0xFD98,\n\t40867 - 11905: 0xFD99,\n\t40868 - 11905: 0xFD9A,\n\t40869 - 11905: 0xFD9B,\n}\n\nconst encode1Low, encode1High = 8208, 9795\n\nvar encode1 = [...]uint16{\n\t8208 - 8208: 0xA95C,\n\t8211 - 8208: 0xA843,\n\t8212 - 8208: 0xA1AA,\n\t8213 - 8208: 0xA844,\n\t8214 - 8208: 0xA1AC,\n\t8216 - 8208: 0xA1AE,\n\t8217 - 8208: 0xA1AF,\n\t8220 - 8208: 0xA1B0,\n\t8221 - 8208: 0xA1B1,\n\t8229 - 8208: 0xA845,\n\t8230 - 8208: 0xA1AD,\n\t8240 - 8208: 0xA1EB,\n\t8242 - 8208: 0xA1E4,\n\t8243 - 8208: 0xA1E5,\n\t8245 - 8208: 0xA846,\n\t8251 - 8208: 0xA1F9,\n\t8364 - 8208: 0xA2E3,\n\t8451 - 8208: 0xA1E6,\n\t8453 - 8208: 0xA847,\n\t8457 - 8208: 0xA848,\n\t8470 - 8208: 0xA1ED,\n\t8481 - 8208: 0xA959,\n\t8544 - 8208: 0xA2F1,\n\t8545 - 8208: 0xA2F2,\n\t8546 - 8208: 0xA2F3,\n\t8547 - 8208: 0xA2F4,\n\t8548 - 8208: 0xA2F5,\n\t8549 - 8208: 0xA2F6,\n\t8550 - 8208: 0xA2F7,\n\t8551 - 8208: 0xA2F8,\n\t8552 - 8208: 0xA2F9,\n\t8553 - 8208: 0xA2FA,\n\t8554 - 8208: 0xA2FB,\n\t8555 - 8208: 0xA2FC,\n\t8560 - 8208: 0xA2A1,\n\t8561 - 8208: 0xA2A2,\n\t8562 - 8208: 0xA2A3,\n\t8563 - 8208: 0xA2A4,\n\t8564 - 8208: 0xA2A5,\n\t8565 - 8208: 0xA2A6,\n\t8566 - 8208: 0xA2A7,\n\t8567 - 8208: 0xA2A8,\n\t8568 - 8208: 0xA2A9,\n\t8569 - 8208: 0xA2AA,\n\t8592 - 8208: 0xA1FB,\n\t8593 - 8208: 0xA1FC,\n\t8594 - 8208: 0xA1FA,\n\t8595 - 8208: 0xA1FD,\n\t8598 - 8208: 0xA849,\n\t8599 - 8208: 0xA84A,\n\t8600 - 8208: 0xA84B,\n\t8601 - 8208: 0xA84C,\n\t8712 - 8208: 0xA1CA,\n\t8719 - 8208: 0xA1C7,\n\t8721 - 8208: 0xA1C6,\n\t8725 - 8208: 0xA84D,\n\t8730 - 8208: 0xA1CC,\n\t8733 - 8208: 0xA1D8,\n\t8734 - 8208: 0xA1DE,\n\t8735 - 8208: 0xA84E,\n\t8736 - 8208: 0xA1CF,\n\t8739 - 8208: 0xA84F,\n\t8741 - 8208: 0xA1CE,\n\t8743 - 8208: 0xA1C4,\n\t8744 - 8208: 0xA1C5,\n\t8745 - 8208: 0xA1C9,\n\t8746 - 8208: 0xA1C8,\n\t8747 - 8208: 0xA1D2,\n\t8750 - 8208: 0xA1D3,\n\t8756 - 8208: 0xA1E0,\n\t8757 - 8208: 0xA1DF,\n\t8758 - 8208: 0xA1C3,\n\t8759 - 8208: 0xA1CB,\n\t8765 - 8208: 0xA1D7,\n\t8776 - 8208: 0xA1D6,\n\t8780 - 8208: 0xA1D5,\n\t8786 - 8208: 0xA850,\n\t8800 - 8208: 0xA1D9,\n\t8801 - 8208: 0xA1D4,\n\t8804 - 8208: 0xA1DC,\n\t8805 - 8208: 0xA1DD,\n\t8806 - 8208: 0xA851,\n\t8807 - 8208: 0xA852,\n\t8814 - 8208: 0xA1DA,\n\t8815 - 8208: 0xA1DB,\n\t8853 - 8208: 0xA892,\n\t8857 - 8208: 0xA1D1,\n\t8869 - 8208: 0xA1CD,\n\t8895 - 8208: 0xA853,\n\t8978 - 8208: 0xA1D0,\n\t9312 - 8208: 0xA2D9,\n\t9313 - 8208: 0xA2DA,\n\t9314 - 8208: 0xA2DB,\n\t9315 - 8208: 0xA2DC,\n\t9316 - 8208: 0xA2DD,\n\t9317 - 8208: 0xA2DE,\n\t9318 - 8208: 0xA2DF,\n\t9319 - 8208: 0xA2E0,\n\t9320 - 8208: 0xA2E1,\n\t9321 - 8208: 0xA2E2,\n\t9332 - 8208: 0xA2C5,\n\t9333 - 8208: 0xA2C6,\n\t9334 - 8208: 0xA2C7,\n\t9335 - 8208: 0xA2C8,\n\t9336 - 8208: 0xA2C9,\n\t9337 - 8208: 0xA2CA,\n\t9338 - 8208: 0xA2CB,\n\t9339 - 8208: 0xA2CC,\n\t9340 - 8208: 0xA2CD,\n\t9341 - 8208: 0xA2CE,\n\t9342 - 8208: 0xA2CF,\n\t9343 - 8208: 0xA2D0,\n\t9344 - 8208: 0xA2D1,\n\t9345 - 8208: 0xA2D2,\n\t9346 - 8208: 0xA2D3,\n\t9347 - 8208: 0xA2D4,\n\t9348 - 8208: 0xA2D5,\n\t9349 - 8208: 0xA2D6,\n\t9350 - 8208: 0xA2D7,\n\t9351 - 8208: 0xA2D8,\n\t9352 - 8208: 0xA2B1,\n\t9353 - 8208: 0xA2B2,\n\t9354 - 8208: 0xA2B3,\n\t9355 - 8208: 0xA2B4,\n\t9356 - 8208: 0xA2B5,\n\t9357 - 8208: 0xA2B6,\n\t9358 - 8208: 0xA2B7,\n\t9359 - 8208: 0xA2B8,\n\t9360 - 8208: 0xA2B9,\n\t9361 - 8208: 0xA2BA,\n\t9362 - 8208: 0xA2BB,\n\t9363 - 8208: 0xA2BC,\n\t9364 - 8208: 0xA2BD,\n\t9365 - 8208: 0xA2BE,\n\t9366 - 8208: 0xA2BF,\n\t9367 - 8208: 0xA2C0,\n\t9368 - 8208: 0xA2C1,\n\t9369 - 8208: 0xA2C2,\n\t9370 - 8208: 0xA2C3,\n\t9371 - 8208: 0xA2C4,\n\t9472 - 8208: 0xA9A4,\n\t9473 - 8208: 0xA9A5,\n\t9474 - 8208: 0xA9A6,\n\t9475 - 8208: 0xA9A7,\n\t9476 - 8208: 0xA9A8,\n\t9477 - 8208: 0xA9A9,\n\t9478 - 8208: 0xA9AA,\n\t9479 - 8208: 0xA9AB,\n\t9480 - 8208: 0xA9AC,\n\t9481 - 8208: 0xA9AD,\n\t9482 - 8208: 0xA9AE,\n\t9483 - 8208: 0xA9AF,\n\t9484 - 8208: 0xA9B0,\n\t9485 - 8208: 0xA9B1,\n\t9486 - 8208: 0xA9B2,\n\t9487 - 8208: 0xA9B3,\n\t9488 - 8208: 0xA9B4,\n\t9489 - 8208: 0xA9B5,\n\t9490 - 8208: 0xA9B6,\n\t9491 - 8208: 0xA9B7,\n\t9492 - 8208: 0xA9B8,\n\t9493 - 8208: 0xA9B9,\n\t9494 - 8208: 0xA9BA,\n\t9495 - 8208: 0xA9BB,\n\t9496 - 8208: 0xA9BC,\n\t9497 - 8208: 0xA9BD,\n\t9498 - 8208: 0xA9BE,\n\t9499 - 8208: 0xA9BF,\n\t9500 - 8208: 0xA9C0,\n\t9501 - 8208: 0xA9C1,\n\t9502 - 8208: 0xA9C2,\n\t9503 - 8208: 0xA9C3,\n\t9504 - 8208: 0xA9C4,\n\t9505 - 8208: 0xA9C5,\n\t9506 - 8208: 0xA9C6,\n\t9507 - 8208: 0xA9C7,\n\t9508 - 8208: 0xA9C8,\n\t9509 - 8208: 0xA9C9,\n\t9510 - 8208: 0xA9CA,\n\t9511 - 8208: 0xA9CB,\n\t9512 - 8208: 0xA9CC,\n\t9513 - 8208: 0xA9CD,\n\t9514 - 8208: 0xA9CE,\n\t9515 - 8208: 0xA9CF,\n\t9516 - 8208: 0xA9D0,\n\t9517 - 8208: 0xA9D1,\n\t9518 - 8208: 0xA9D2,\n\t9519 - 8208: 0xA9D3,\n\t9520 - 8208: 0xA9D4,\n\t9521 - 8208: 0xA9D5,\n\t9522 - 8208: 0xA9D6,\n\t9523 - 8208: 0xA9D7,\n\t9524 - 8208: 0xA9D8,\n\t9525 - 8208: 0xA9D9,\n\t9526 - 8208: 0xA9DA,\n\t9527 - 8208: 0xA9DB,\n\t9528 - 8208: 0xA9DC,\n\t9529 - 8208: 0xA9DD,\n\t9530 - 8208: 0xA9DE,\n\t9531 - 8208: 0xA9DF,\n\t9532 - 8208: 0xA9E0,\n\t9533 - 8208: 0xA9E1,\n\t9534 - 8208: 0xA9E2,\n\t9535 - 8208: 0xA9E3,\n\t9536 - 8208: 0xA9E4,\n\t9537 - 8208: 0xA9E5,\n\t9538 - 8208: 0xA9E6,\n\t9539 - 8208: 0xA9E7,\n\t9540 - 8208: 0xA9E8,\n\t9541 - 8208: 0xA9E9,\n\t9542 - 8208: 0xA9EA,\n\t9543 - 8208: 0xA9EB,\n\t9544 - 8208: 0xA9EC,\n\t9545 - 8208: 0xA9ED,\n\t9546 - 8208: 0xA9EE,\n\t9547 - 8208: 0xA9EF,\n\t9552 - 8208: 0xA854,\n\t9553 - 8208: 0xA855,\n\t9554 - 8208: 0xA856,\n\t9555 - 8208: 0xA857,\n\t9556 - 8208: 0xA858,\n\t9557 - 8208: 0xA859,\n\t9558 - 8208: 0xA85A,\n\t9559 - 8208: 0xA85B,\n\t9560 - 8208: 0xA85C,\n\t9561 - 8208: 0xA85D,\n\t9562 - 8208: 0xA85E,\n\t9563 - 8208: 0xA85F,\n\t9564 - 8208: 0xA860,\n\t9565 - 8208: 0xA861,\n\t9566 - 8208: 0xA862,\n\t9567 - 8208: 0xA863,\n\t9568 - 8208: 0xA864,\n\t9569 - 8208: 0xA865,\n\t9570 - 8208: 0xA866,\n\t9571 - 8208: 0xA867,\n\t9572 - 8208: 0xA868,\n\t9573 - 8208: 0xA869,\n\t9574 - 8208: 0xA86A,\n\t9575 - 8208: 0xA86B,\n\t9576 - 8208: 0xA86C,\n\t9577 - 8208: 0xA86D,\n\t9578 - 8208: 0xA86E,\n\t9579 - 8208: 0xA86F,\n\t9580 - 8208: 0xA870,\n\t9581 - 8208: 0xA871,\n\t9582 - 8208: 0xA872,\n\t9583 - 8208: 0xA873,\n\t9584 - 8208: 0xA874,\n\t9585 - 8208: 0xA875,\n\t9586 - 8208: 0xA876,\n\t9587 - 8208: 0xA877,\n\t9601 - 8208: 0xA878,\n\t9602 - 8208: 0xA879,\n\t9603 - 8208: 0xA87A,\n\t9604 - 8208: 0xA87B,\n\t9605 - 8208: 0xA87C,\n\t9606 - 8208: 0xA87D,\n\t9607 - 8208: 0xA87E,\n\t9608 - 8208: 0xA880,\n\t9609 - 8208: 0xA881,\n\t9610 - 8208: 0xA882,\n\t9611 - 8208: 0xA883,\n\t9612 - 8208: 0xA884,\n\t9613 - 8208: 0xA885,\n\t9614 - 8208: 0xA886,\n\t9615 - 8208: 0xA887,\n\t9619 - 8208: 0xA888,\n\t9620 - 8208: 0xA889,\n\t9621 - 8208: 0xA88A,\n\t9632 - 8208: 0xA1F6,\n\t9633 - 8208: 0xA1F5,\n\t9650 - 8208: 0xA1F8,\n\t9651 - 8208: 0xA1F7,\n\t9660 - 8208: 0xA88B,\n\t9661 - 8208: 0xA88C,\n\t9670 - 8208: 0xA1F4,\n\t9671 - 8208: 0xA1F3,\n\t9675 - 8208: 0xA1F0,\n\t9678 - 8208: 0xA1F2,\n\t9679 - 8208: 0xA1F1,\n\t9698 - 8208: 0xA88D,\n\t9699 - 8208: 0xA88E,\n\t9700 - 8208: 0xA88F,\n\t9701 - 8208: 0xA890,\n\t9733 - 8208: 0xA1EF,\n\t9734 - 8208: 0xA1EE,\n\t9737 - 8208: 0xA891,\n\t9792 - 8208: 0xA1E2,\n\t9794 - 8208: 0xA1E1,\n}\n\nconst encode2Low, encode2High = 164, 1106\n\nvar encode2 = [...]uint16{\n\t164 - 164:  0xA1E8,\n\t167 - 164:  0xA1EC,\n\t168 - 164:  0xA1A7,\n\t176 - 164:  0xA1E3,\n\t177 - 164:  0xA1C0,\n\t183 - 164:  0xA1A4,\n\t215 - 164:  0xA1C1,\n\t224 - 164:  0xA8A4,\n\t225 - 164:  0xA8A2,\n\t232 - 164:  0xA8A8,\n\t233 - 164:  0xA8A6,\n\t234 - 164:  0xA8BA,\n\t236 - 164:  0xA8AC,\n\t237 - 164:  0xA8AA,\n\t242 - 164:  0xA8B0,\n\t243 - 164:  0xA8AE,\n\t247 - 164:  0xA1C2,\n\t249 - 164:  0xA8B4,\n\t250 - 164:  0xA8B2,\n\t252 - 164:  0xA8B9,\n\t257 - 164:  0xA8A1,\n\t275 - 164:  0xA8A5,\n\t283 - 164:  0xA8A7,\n\t299 - 164:  0xA8A9,\n\t324 - 164:  0xA8BD,\n\t328 - 164:  0xA8BE,\n\t333 - 164:  0xA8AD,\n\t363 - 164:  0xA8B1,\n\t462 - 164:  0xA8A3,\n\t464 - 164:  0xA8AB,\n\t466 - 164:  0xA8AF,\n\t468 - 164:  0xA8B3,\n\t470 - 164:  0xA8B5,\n\t472 - 164:  0xA8B6,\n\t474 - 164:  0xA8B7,\n\t476 - 164:  0xA8B8,\n\t505 - 164:  0xA8BF,\n\t593 - 164:  0xA8BB,\n\t609 - 164:  0xA8C0,\n\t711 - 164:  0xA1A6,\n\t713 - 164:  0xA1A5,\n\t714 - 164:  0xA840,\n\t715 - 164:  0xA841,\n\t729 - 164:  0xA842,\n\t913 - 164:  0xA6A1,\n\t914 - 164:  0xA6A2,\n\t915 - 164:  0xA6A3,\n\t916 - 164:  0xA6A4,\n\t917 - 164:  0xA6A5,\n\t918 - 164:  0xA6A6,\n\t919 - 164:  0xA6A7,\n\t920 - 164:  0xA6A8,\n\t921 - 164:  0xA6A9,\n\t922 - 164:  0xA6AA,\n\t923 - 164:  0xA6AB,\n\t924 - 164:  0xA6AC,\n\t925 - 164:  0xA6AD,\n\t926 - 164:  0xA6AE,\n\t927 - 164:  0xA6AF,\n\t928 - 164:  0xA6B0,\n\t929 - 164:  0xA6B1,\n\t931 - 164:  0xA6B2,\n\t932 - 164:  0xA6B3,\n\t933 - 164:  0xA6B4,\n\t934 - 164:  0xA6B5,\n\t935 - 164:  0xA6B6,\n\t936 - 164:  0xA6B7,\n\t937 - 164:  0xA6B8,\n\t945 - 164:  0xA6C1,\n\t946 - 164:  0xA6C2,\n\t947 - 164:  0xA6C3,\n\t948 - 164:  0xA6C4,\n\t949 - 164:  0xA6C5,\n\t950 - 164:  0xA6C6,\n\t951 - 164:  0xA6C7,\n\t952 - 164:  0xA6C8,\n\t953 - 164:  0xA6C9,\n\t954 - 164:  0xA6CA,\n\t955 - 164:  0xA6CB,\n\t956 - 164:  0xA6CC,\n\t957 - 164:  0xA6CD,\n\t958 - 164:  0xA6CE,\n\t959 - 164:  0xA6CF,\n\t960 - 164:  0xA6D0,\n\t961 - 164:  0xA6D1,\n\t963 - 164:  0xA6D2,\n\t964 - 164:  0xA6D3,\n\t965 - 164:  0xA6D4,\n\t966 - 164:  0xA6D5,\n\t967 - 164:  0xA6D6,\n\t968 - 164:  0xA6D7,\n\t969 - 164:  0xA6D8,\n\t1025 - 164: 0xA7A7,\n\t1040 - 164: 0xA7A1,\n\t1041 - 164: 0xA7A2,\n\t1042 - 164: 0xA7A3,\n\t1043 - 164: 0xA7A4,\n\t1044 - 164: 0xA7A5,\n\t1045 - 164: 0xA7A6,\n\t1046 - 164: 0xA7A8,\n\t1047 - 164: 0xA7A9,\n\t1048 - 164: 0xA7AA,\n\t1049 - 164: 0xA7AB,\n\t1050 - 164: 0xA7AC,\n\t1051 - 164: 0xA7AD,\n\t1052 - 164: 0xA7AE,\n\t1053 - 164: 0xA7AF,\n\t1054 - 164: 0xA7B0,\n\t1055 - 164: 0xA7B1,\n\t1056 - 164: 0xA7B2,\n\t1057 - 164: 0xA7B3,\n\t1058 - 164: 0xA7B4,\n\t1059 - 164: 0xA7B5,\n\t1060 - 164: 0xA7B6,\n\t1061 - 164: 0xA7B7,\n\t1062 - 164: 0xA7B8,\n\t1063 - 164: 0xA7B9,\n\t1064 - 164: 0xA7BA,\n\t1065 - 164: 0xA7BB,\n\t1066 - 164: 0xA7BC,\n\t1067 - 164: 0xA7BD,\n\t1068 - 164: 0xA7BE,\n\t1069 - 164: 0xA7BF,\n\t1070 - 164: 0xA7C0,\n\t1071 - 164: 0xA7C1,\n\t1072 - 164: 0xA7D1,\n\t1073 - 164: 0xA7D2,\n\t1074 - 164: 0xA7D3,\n\t1075 - 164: 0xA7D4,\n\t1076 - 164: 0xA7D5,\n\t1077 - 164: 0xA7D6,\n\t1078 - 164: 0xA7D8,\n\t1079 - 164: 0xA7D9,\n\t1080 - 164: 0xA7DA,\n\t1081 - 164: 0xA7DB,\n\t1082 - 164: 0xA7DC,\n\t1083 - 164: 0xA7DD,\n\t1084 - 164: 0xA7DE,\n\t1085 - 164: 0xA7DF,\n\t1086 - 164: 0xA7E0,\n\t1087 - 164: 0xA7E1,\n\t1088 - 164: 0xA7E2,\n\t1089 - 164: 0xA7E3,\n\t1090 - 164: 0xA7E4,\n\t1091 - 164: 0xA7E5,\n\t1092 - 164: 0xA7E6,\n\t1093 - 164: 0xA7E7,\n\t1094 - 164: 0xA7E8,\n\t1095 - 164: 0xA7E9,\n\t1096 - 164: 0xA7EA,\n\t1097 - 164: 0xA7EB,\n\t1098 - 164: 0xA7EC,\n\t1099 - 164: 0xA7ED,\n\t1100 - 164: 0xA7EE,\n\t1101 - 164: 0xA7EF,\n\t1102 - 164: 0xA7F0,\n\t1103 - 164: 0xA7F1,\n\t1105 - 164: 0xA7D7,\n}\n\nconst encode3Low, encode3High = 65072, 65510\n\nvar encode3 = [...]uint16{\n\t65072 - 65072: 0xA955,\n\t65073 - 65072: 0xA6F2,\n\t65075 - 65072: 0xA6F4,\n\t65076 - 65072: 0xA6F5,\n\t65077 - 65072: 0xA6E0,\n\t65078 - 65072: 0xA6E1,\n\t65079 - 65072: 0xA6F0,\n\t65080 - 65072: 0xA6F1,\n\t65081 - 65072: 0xA6E2,\n\t65082 - 65072: 0xA6E3,\n\t65083 - 65072: 0xA6EE,\n\t65084 - 65072: 0xA6EF,\n\t65085 - 65072: 0xA6E6,\n\t65086 - 65072: 0xA6E7,\n\t65087 - 65072: 0xA6E4,\n\t65088 - 65072: 0xA6E5,\n\t65089 - 65072: 0xA6E8,\n\t65090 - 65072: 0xA6E9,\n\t65091 - 65072: 0xA6EA,\n\t65092 - 65072: 0xA6EB,\n\t65097 - 65072: 0xA968,\n\t65098 - 65072: 0xA969,\n\t65099 - 65072: 0xA96A,\n\t65100 - 65072: 0xA96B,\n\t65101 - 65072: 0xA96C,\n\t65102 - 65072: 0xA96D,\n\t65103 - 65072: 0xA96E,\n\t65104 - 65072: 0xA96F,\n\t65105 - 65072: 0xA970,\n\t65106 - 65072: 0xA971,\n\t65108 - 65072: 0xA972,\n\t65109 - 65072: 0xA973,\n\t65110 - 65072: 0xA974,\n\t65111 - 65072: 0xA975,\n\t65113 - 65072: 0xA976,\n\t65114 - 65072: 0xA977,\n\t65115 - 65072: 0xA978,\n\t65116 - 65072: 0xA979,\n\t65117 - 65072: 0xA97A,\n\t65118 - 65072: 0xA97B,\n\t65119 - 65072: 0xA97C,\n\t65120 - 65072: 0xA97D,\n\t65121 - 65072: 0xA97E,\n\t65122 - 65072: 0xA980,\n\t65123 - 65072: 0xA981,\n\t65124 - 65072: 0xA982,\n\t65125 - 65072: 0xA983,\n\t65126 - 65072: 0xA984,\n\t65128 - 65072: 0xA985,\n\t65129 - 65072: 0xA986,\n\t65130 - 65072: 0xA987,\n\t65131 - 65072: 0xA988,\n\t65281 - 65072: 0xA3A1,\n\t65282 - 65072: 0xA3A2,\n\t65283 - 65072: 0xA3A3,\n\t65284 - 65072: 0xA1E7,\n\t65285 - 65072: 0xA3A5,\n\t65286 - 65072: 0xA3A6,\n\t65287 - 65072: 0xA3A7,\n\t65288 - 65072: 0xA3A8,\n\t65289 - 65072: 0xA3A9,\n\t65290 - 65072: 0xA3AA,\n\t65291 - 65072: 0xA3AB,\n\t65292 - 65072: 0xA3AC,\n\t65293 - 65072: 0xA3AD,\n\t65294 - 65072: 0xA3AE,\n\t65295 - 65072: 0xA3AF,\n\t65296 - 65072: 0xA3B0,\n\t65297 - 65072: 0xA3B1,\n\t65298 - 65072: 0xA3B2,\n\t65299 - 65072: 0xA3B3,\n\t65300 - 65072: 0xA3B4,\n\t65301 - 65072: 0xA3B5,\n\t65302 - 65072: 0xA3B6,\n\t65303 - 65072: 0xA3B7,\n\t65304 - 65072: 0xA3B8,\n\t65305 - 65072: 0xA3B9,\n\t65306 - 65072: 0xA3BA,\n\t65307 - 65072: 0xA3BB,\n\t65308 - 65072: 0xA3BC,\n\t65309 - 65072: 0xA3BD,\n\t65310 - 65072: 0xA3BE,\n\t65311 - 65072: 0xA3BF,\n\t65312 - 65072: 0xA3C0,\n\t65313 - 65072: 0xA3C1,\n\t65314 - 65072: 0xA3C2,\n\t65315 - 65072: 0xA3C3,\n\t65316 - 65072: 0xA3C4,\n\t65317 - 65072: 0xA3C5,\n\t65318 - 65072: 0xA3C6,\n\t65319 - 65072: 0xA3C7,\n\t65320 - 65072: 0xA3C8,\n\t65321 - 65072: 0xA3C9,\n\t65322 - 65072: 0xA3CA,\n\t65323 - 65072: 0xA3CB,\n\t65324 - 65072: 0xA3CC,\n\t65325 - 65072: 0xA3CD,\n\t65326 - 65072: 0xA3CE,\n\t65327 - 65072: 0xA3CF,\n\t65328 - 65072: 0xA3D0,\n\t65329 - 65072: 0xA3D1,\n\t65330 - 65072: 0xA3D2,\n\t65331 - 65072: 0xA3D3,\n\t65332 - 65072: 0xA3D4,\n\t65333 - 65072: 0xA3D5,\n\t65334 - 65072: 0xA3D6,\n\t65335 - 65072: 0xA3D7,\n\t65336 - 65072: 0xA3D8,\n\t65337 - 65072: 0xA3D9,\n\t65338 - 65072: 0xA3DA,\n\t65339 - 65072: 0xA3DB,\n\t65340 - 65072: 0xA3DC,\n\t65341 - 65072: 0xA3DD,\n\t65342 - 65072: 0xA3DE,\n\t65343 - 65072: 0xA3DF,\n\t65344 - 65072: 0xA3E0,\n\t65345 - 65072: 0xA3E1,\n\t65346 - 65072: 0xA3E2,\n\t65347 - 65072: 0xA3E3,\n\t65348 - 65072: 0xA3E4,\n\t65349 - 65072: 0xA3E5,\n\t65350 - 65072: 0xA3E6,\n\t65351 - 65072: 0xA3E7,\n\t65352 - 65072: 0xA3E8,\n\t65353 - 65072: 0xA3E9,\n\t65354 - 65072: 0xA3EA,\n\t65355 - 65072: 0xA3EB,\n\t65356 - 65072: 0xA3EC,\n\t65357 - 65072: 0xA3ED,\n\t65358 - 65072: 0xA3EE,\n\t65359 - 65072: 0xA3EF,\n\t65360 - 65072: 0xA3F0,\n\t65361 - 65072: 0xA3F1,\n\t65362 - 65072: 0xA3F2,\n\t65363 - 65072: 0xA3F3,\n\t65364 - 65072: 0xA3F4,\n\t65365 - 65072: 0xA3F5,\n\t65366 - 65072: 0xA3F6,\n\t65367 - 65072: 0xA3F7,\n\t65368 - 65072: 0xA3F8,\n\t65369 - 65072: 0xA3F9,\n\t65370 - 65072: 0xA3FA,\n\t65371 - 65072: 0xA3FB,\n\t65372 - 65072: 0xA3FC,\n\t65373 - 65072: 0xA3FD,\n\t65374 - 65072: 0xA1AB,\n\t65504 - 65072: 0xA1E9,\n\t65505 - 65072: 0xA1EA,\n\t65506 - 65072: 0xA956,\n\t65507 - 65072: 0xA3FE,\n\t65508 - 65072: 0xA957,\n\t65509 - 65072: 0xA3A4,\n}\n\nconst encode4Low, encode4High = 63788, 64042\n\nvar encode4 = [...]uint16{\n\t63788 - 63788: 0xFD9C,\n\t63865 - 63788: 0xFD9D,\n\t63893 - 63788: 0xFD9E,\n\t63975 - 63788: 0xFD9F,\n\t63985 - 63788: 0xFDA0,\n\t64012 - 63788: 0xFE40,\n\t64013 - 63788: 0xFE41,\n\t64014 - 63788: 0xFE42,\n\t64015 - 63788: 0xFE43,\n\t64017 - 63788: 0xFE44,\n\t64019 - 63788: 0xFE45,\n\t64020 - 63788: 0xFE46,\n\t64024 - 63788: 0xFE47,\n\t64031 - 63788: 0xFE48,\n\t64032 - 63788: 0xFE49,\n\t64033 - 63788: 0xFE4A,\n\t64035 - 63788: 0xFE4B,\n\t64036 - 63788: 0xFE4C,\n\t64039 - 63788: 0xFE4D,\n\t64040 - 63788: 0xFE4E,\n\t64041 - 63788: 0xFE4F,\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/text/encoding/traditionalchinese/big5.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage traditionalchinese\n\nimport (\n\t\"unicode/utf8\"\n\n\t\"golang.org/x/text/encoding\"\n\t\"golang.org/x/text/encoding/internal\"\n\t\"golang.org/x/text/encoding/internal/identifier\"\n\t\"golang.org/x/text/transform\"\n)\n\n// All is a list of all defined encodings in this package.\nvar All = []encoding.Encoding{Big5}\n\n// Big5 is the Big5 encoding, also known as Code Page 950.\nvar Big5 encoding.Encoding = &big5\n\nvar big5 = internal.Encoding{\n\tEncoding: &internal.SimpleEncoding{Decoder: big5Decoder{}, Encoder: big5Encoder{}},\n\tName:     \"Big5\",\n\tMIB:      identifier.Big5,\n}\n\ntype big5Decoder struct{ transform.NopResetter }\n\nfunc (big5Decoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {\n\tr, size, s := rune(0), 0, \"\"\nloop:\n\tfor ; nSrc < len(src); nSrc += size {\n\t\tswitch c0 := src[nSrc]; {\n\t\tcase c0 < utf8.RuneSelf:\n\t\t\tr, size = rune(c0), 1\n\n\t\tcase 0x81 <= c0 && c0 < 0xff:\n\t\t\tif nSrc+1 >= len(src) {\n\t\t\t\tif !atEOF {\n\t\t\t\t\terr = transform.ErrShortSrc\n\t\t\t\t\tbreak loop\n\t\t\t\t}\n\t\t\t\tr, size = utf8.RuneError, 1\n\t\t\t\tgoto write\n\t\t\t}\n\t\t\tc1 := src[nSrc+1]\n\t\t\tswitch {\n\t\t\tcase 0x40 <= c1 && c1 < 0x7f:\n\t\t\t\tc1 -= 0x40\n\t\t\tcase 0xa1 <= c1 && c1 < 0xff:\n\t\t\t\tc1 -= 0x62\n\t\t\tcase c1 < 0x40:\n\t\t\t\tr, size = utf8.RuneError, 1\n\t\t\t\tgoto write\n\t\t\tdefault:\n\t\t\t\tr, size = utf8.RuneError, 2\n\t\t\t\tgoto write\n\t\t\t}\n\t\t\tr, size = '\\ufffd', 2\n\t\t\tif i := int(c0-0x81)*157 + int(c1); i < len(decode) {\n\t\t\t\tif 1133 <= i && i < 1167 {\n\t\t\t\t\t// The two-rune special cases for LATIN CAPITAL / SMALL E WITH CIRCUMFLEX\n\t\t\t\t\t// AND MACRON / CARON are from http://encoding.spec.whatwg.org/#big5\n\t\t\t\t\tswitch i {\n\t\t\t\t\tcase 1133:\n\t\t\t\t\t\ts = \"\\u00CA\\u0304\"\n\t\t\t\t\t\tgoto writeStr\n\t\t\t\t\tcase 1135:\n\t\t\t\t\t\ts = \"\\u00CA\\u030C\"\n\t\t\t\t\t\tgoto writeStr\n\t\t\t\t\tcase 1164:\n\t\t\t\t\t\ts = \"\\u00EA\\u0304\"\n\t\t\t\t\t\tgoto writeStr\n\t\t\t\t\tcase 1166:\n\t\t\t\t\t\ts = \"\\u00EA\\u030C\"\n\t\t\t\t\t\tgoto writeStr\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tr = rune(decode[i])\n\t\t\t\tif r == 0 {\n\t\t\t\t\tr = '\\ufffd'\n\t\t\t\t}\n\t\t\t}\n\n\t\tdefault:\n\t\t\tr, size = utf8.RuneError, 1\n\t\t}\n\n\twrite:\n\t\tif nDst+utf8.RuneLen(r) > len(dst) {\n\t\t\terr = transform.ErrShortDst\n\t\t\tbreak loop\n\t\t}\n\t\tnDst += utf8.EncodeRune(dst[nDst:], r)\n\t\tcontinue loop\n\n\twriteStr:\n\t\tif nDst+len(s) > len(dst) {\n\t\t\terr = transform.ErrShortDst\n\t\t\tbreak loop\n\t\t}\n\t\tnDst += copy(dst[nDst:], s)\n\t\tcontinue loop\n\t}\n\treturn nDst, nSrc, err\n}\n\ntype big5Encoder struct{ transform.NopResetter }\n\nfunc (big5Encoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {\n\tr, size := rune(0), 0\n\tfor ; nSrc < len(src); nSrc += size {\n\t\tr = rune(src[nSrc])\n\n\t\t// Decode a 1-byte rune.\n\t\tif r < utf8.RuneSelf {\n\t\t\tsize = 1\n\t\t\tif nDst >= len(dst) {\n\t\t\t\terr = transform.ErrShortDst\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tdst[nDst] = uint8(r)\n\t\t\tnDst++\n\t\t\tcontinue\n\n\t\t} else {\n\t\t\t// Decode a multi-byte rune.\n\t\t\tr, size = utf8.DecodeRune(src[nSrc:])\n\t\t\tif size == 1 {\n\t\t\t\t// All valid runes of size 1 (those below utf8.RuneSelf) were\n\t\t\t\t// handled above. We have invalid UTF-8 or we haven't seen the\n\t\t\t\t// full character yet.\n\t\t\t\tif !atEOF && !utf8.FullRune(src[nSrc:]) {\n\t\t\t\t\terr = transform.ErrShortSrc\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif r >= utf8.RuneSelf {\n\t\t\t// func init checks that the switch covers all tables.\n\t\t\tswitch {\n\t\t\tcase encode0Low <= r && r < encode0High:\n\t\t\t\tif r = rune(encode0[r-encode0Low]); r != 0 {\n\t\t\t\t\tgoto write2\n\t\t\t\t}\n\t\t\tcase encode1Low <= r && r < encode1High:\n\t\t\t\tif r = rune(encode1[r-encode1Low]); r != 0 {\n\t\t\t\t\tgoto write2\n\t\t\t\t}\n\t\t\tcase encode2Low <= r && r < encode2High:\n\t\t\t\tif r = rune(encode2[r-encode2Low]); r != 0 {\n\t\t\t\t\tgoto write2\n\t\t\t\t}\n\t\t\tcase encode3Low <= r && r < encode3High:\n\t\t\t\tif r = rune(encode3[r-encode3Low]); r != 0 {\n\t\t\t\t\tgoto write2\n\t\t\t\t}\n\t\t\tcase encode4Low <= r && r < encode4High:\n\t\t\t\tif r = rune(encode4[r-encode4Low]); r != 0 {\n\t\t\t\t\tgoto write2\n\t\t\t\t}\n\t\t\tcase encode5Low <= r && r < encode5High:\n\t\t\t\tif r = rune(encode5[r-encode5Low]); r != 0 {\n\t\t\t\t\tgoto write2\n\t\t\t\t}\n\t\t\tcase encode6Low <= r && r < encode6High:\n\t\t\t\tif r = rune(encode6[r-encode6Low]); r != 0 {\n\t\t\t\t\tgoto write2\n\t\t\t\t}\n\t\t\tcase encode7Low <= r && r < encode7High:\n\t\t\t\tif r = rune(encode7[r-encode7Low]); r != 0 {\n\t\t\t\t\tgoto write2\n\t\t\t\t}\n\t\t\t}\n\t\t\terr = internal.ErrASCIIReplacement\n\t\t\tbreak\n\t\t}\n\n\twrite2:\n\t\tif nDst+2 > len(dst) {\n\t\t\terr = transform.ErrShortDst\n\t\t\tbreak\n\t\t}\n\t\tdst[nDst+0] = uint8(r >> 8)\n\t\tdst[nDst+1] = uint8(r)\n\t\tnDst += 2\n\t\tcontinue\n\t}\n\treturn nDst, nSrc, err\n}\n\nfunc init() {\n\t// Check that the hard-coded encode switch covers all tables.\n\tif numEncodeTables != 8 {\n\t\tpanic(\"bad numEncodeTables\")\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/text/encoding/traditionalchinese/tables.go",
    "content": "// generated by go run maketables.go; DO NOT EDIT\n\n// Package traditionalchinese provides Traditional Chinese encodings such as Big5.\npackage traditionalchinese // import \"golang.org/x/text/encoding/traditionalchinese\"\n\n// decode is the decoding table from Big5 code to Unicode.\n// It is defined at http://encoding.spec.whatwg.org/index-big5.txt\nvar decode = [...]uint32{\n\t942:   0x000043F0,\n\t943:   0x00004C32,\n\t944:   0x00004603,\n\t945:   0x000045A6,\n\t946:   0x00004578,\n\t947:   0x00027267,\n\t948:   0x00004D77,\n\t949:   0x000045B3,\n\t950:   0x00027CB1,\n\t951:   0x00004CE2,\n\t952:   0x00027CC5,\n\t953:   0x00003B95,\n\t954:   0x00004736,\n\t955:   0x00004744,\n\t956:   0x00004C47,\n\t957:   0x00004C40,\n\t958:   0x000242BF,\n\t959:   0x00023617,\n\t960:   0x00027352,\n\t961:   0x00026E8B,\n\t962:   0x000270D2,\n\t963:   0x00004C57,\n\t964:   0x0002A351,\n\t965:   0x0000474F,\n\t966:   0x000045DA,\n\t967:   0x00004C85,\n\t968:   0x00027C6C,\n\t969:   0x00004D07,\n\t970:   0x00004AA4,\n\t971:   0x000046A1,\n\t972:   0x00026B23,\n\t973:   0x00007225,\n\t974:   0x00025A54,\n\t975:   0x00021A63,\n\t976:   0x00023E06,\n\t977:   0x00023F61,\n\t978:   0x0000664D,\n\t979:   0x000056FB,\n\t981:   0x00007D95,\n\t982:   0x0000591D,\n\t983:   0x00028BB9,\n\t984:   0x00003DF4,\n\t985:   0x00009734,\n\t986:   0x00027BEF,\n\t987:   0x00005BDB,\n\t988:   0x00021D5E,\n\t989:   0x00005AA4,\n\t990:   0x00003625,\n\t991:   0x00029EB0,\n\t992:   0x00005AD1,\n\t993:   0x00005BB7,\n\t994:   0x00005CFC,\n\t995:   0x0000676E,\n\t996:   0x00008593,\n\t997:   0x00029945,\n\t998:   0x00007461,\n\t999:   0x0000749D,\n\t1000:  0x00003875,\n\t1001:  0x00021D53,\n\t1002:  0x0002369E,\n\t1003:  0x00026021,\n\t1004:  0x00003EEC,\n\t1005:  0x000258DE,\n\t1006:  0x00003AF5,\n\t1007:  0x00007AFC,\n\t1008:  0x00009F97,\n\t1009:  0x00024161,\n\t1010:  0x0002890D,\n\t1011:  0x000231EA,\n\t1012:  0x00020A8A,\n\t1013:  0x0002325E,\n\t1014:  0x0000430A,\n\t1015:  0x00008484,\n\t1016:  0x00009F96,\n\t1017:  0x0000942F,\n\t1018:  0x00004930,\n\t1019:  0x00008613,\n\t1020:  0x00005896,\n\t1021:  0x0000974A,\n\t1022:  0x00009218,\n\t1023:  0x000079D0,\n\t1024:  0x00007A32,\n\t1025:  0x00006660,\n\t1026:  0x00006A29,\n\t1027:  0x0000889D,\n\t1028:  0x0000744C,\n\t1029:  0x00007BC5,\n\t1030:  0x00006782,\n\t1031:  0x00007A2C,\n\t1032:  0x0000524F,\n\t1033:  0x00009046,\n\t1034:  0x000034E6,\n\t1035:  0x000073C4,\n\t1036:  0x00025DB9,\n\t1037:  0x000074C6,\n\t1038:  0x00009FC7,\n\t1039:  0x000057B3,\n\t1040:  0x0000492F,\n\t1041:  0x0000544C,\n\t1042:  0x00004131,\n\t1043:  0x0002368E,\n\t1044:  0x00005818,\n\t1045:  0x00007A72,\n\t1046:  0x00027B65,\n\t1047:  0x00008B8F,\n\t1048:  0x000046AE,\n\t1049:  0x00026E88,\n\t1050:  0x00004181,\n\t1051:  0x00025D99,\n\t1052:  0x00007BAE,\n\t1053:  0x000224BC,\n\t1054:  0x00009FC8,\n\t1055:  0x000224C1,\n\t1056:  0x000224C9,\n\t1057:  0x000224CC,\n\t1058:  0x00009FC9,\n\t1059:  0x00008504,\n\t1060:  0x000235BB,\n\t1061:  0x000040B4,\n\t1062:  0x00009FCA,\n\t1063:  0x000044E1,\n\t1064:  0x0002ADFF,\n\t1065:  0x000062C1,\n\t1066:  0x0000706E,\n\t1067:  0x00009FCB,\n\t1099:  0x000031C0,\n\t1100:  0x000031C1,\n\t1101:  0x000031C2,\n\t1102:  0x000031C3,\n\t1103:  0x000031C4,\n\t1104:  0x0002010C,\n\t1105:  0x000031C5,\n\t1106:  0x000200D1,\n\t1107:  0x000200CD,\n\t1108:  0x000031C6,\n\t1109:  0x000031C7,\n\t1110:  0x000200CB,\n\t1111:  0x00021FE8,\n\t1112:  0x000031C8,\n\t1113:  0x000200CA,\n\t1114:  0x000031C9,\n\t1115:  0x000031CA,\n\t1116:  0x000031CB,\n\t1117:  0x000031CC,\n\t1118:  0x0002010E,\n\t1119:  0x000031CD,\n\t1120:  0x000031CE,\n\t1121:  0x00000100,\n\t1122:  0x000000C1,\n\t1123:  0x000001CD,\n\t1124:  0x000000C0,\n\t1125:  0x00000112,\n\t1126:  0x000000C9,\n\t1127:  0x0000011A,\n\t1128:  0x000000C8,\n\t1129:  0x0000014C,\n\t1130:  0x000000D3,\n\t1131:  0x000001D1,\n\t1132:  0x000000D2,\n\t1134:  0x00001EBE,\n\t1136:  0x00001EC0,\n\t1137:  0x000000CA,\n\t1138:  0x00000101,\n\t1139:  0x000000E1,\n\t1140:  0x000001CE,\n\t1141:  0x000000E0,\n\t1142:  0x00000251,\n\t1143:  0x00000113,\n\t1144:  0x000000E9,\n\t1145:  0x0000011B,\n\t1146:  0x000000E8,\n\t1147:  0x0000012B,\n\t1148:  0x000000ED,\n\t1149:  0x000001D0,\n\t1150:  0x000000EC,\n\t1151:  0x0000014D,\n\t1152:  0x000000F3,\n\t1153:  0x000001D2,\n\t1154:  0x000000F2,\n\t1155:  0x0000016B,\n\t1156:  0x000000FA,\n\t1157:  0x000001D4,\n\t1158:  0x000000F9,\n\t1159:  0x000001D6,\n\t1160:  0x000001D8,\n\t1161:  0x000001DA,\n\t1162:  0x000001DC,\n\t1163:  0x000000FC,\n\t1165:  0x00001EBF,\n\t1167:  0x00001EC1,\n\t1168:  0x000000EA,\n\t1169:  0x00000261,\n\t1170:  0x000023DA,\n\t1171:  0x000023DB,\n\t1256:  0x0002A3A9,\n\t1257:  0x00021145,\n\t1259:  0x0000650A,\n\t1262:  0x00004E3D,\n\t1263:  0x00006EDD,\n\t1264:  0x00009D4E,\n\t1265:  0x000091DF,\n\t1268:  0x00027735,\n\t1269:  0x00006491,\n\t1270:  0x00004F1A,\n\t1271:  0x00004F28,\n\t1272:  0x00004FA8,\n\t1273:  0x00005156,\n\t1274:  0x00005174,\n\t1275:  0x0000519C,\n\t1276:  0x000051E4,\n\t1277:  0x000052A1,\n\t1278:  0x000052A8,\n\t1279:  0x0000533B,\n\t1280:  0x0000534E,\n\t1281:  0x000053D1,\n\t1282:  0x000053D8,\n\t1283:  0x000056E2,\n\t1284:  0x000058F0,\n\t1285:  0x00005904,\n\t1286:  0x00005907,\n\t1287:  0x00005932,\n\t1288:  0x00005934,\n\t1289:  0x00005B66,\n\t1290:  0x00005B9E,\n\t1291:  0x00005B9F,\n\t1292:  0x00005C9A,\n\t1293:  0x00005E86,\n\t1294:  0x0000603B,\n\t1295:  0x00006589,\n\t1296:  0x000067FE,\n\t1297:  0x00006804,\n\t1298:  0x00006865,\n\t1299:  0x00006D4E,\n\t1300:  0x000070BC,\n\t1301:  0x00007535,\n\t1302:  0x00007EA4,\n\t1303:  0x00007EAC,\n\t1304:  0x00007EBA,\n\t1305:  0x00007EC7,\n\t1306:  0x00007ECF,\n\t1307:  0x00007EDF,\n\t1308:  0x00007F06,\n\t1309:  0x00007F37,\n\t1310:  0x0000827A,\n\t1311:  0x000082CF,\n\t1312:  0x0000836F,\n\t1313:  0x000089C6,\n\t1314:  0x00008BBE,\n\t1315:  0x00008BE2,\n\t1316:  0x00008F66,\n\t1317:  0x00008F67,\n\t1318:  0x00008F6E,\n\t1319:  0x00007411,\n\t1320:  0x00007CFC,\n\t1321:  0x00007DCD,\n\t1322:  0x00006946,\n\t1323:  0x00007AC9,\n\t1324:  0x00005227,\n\t1329:  0x0000918C,\n\t1330:  0x000078B8,\n\t1331:  0x0000915E,\n\t1332:  0x000080BC,\n\t1334:  0x00008D0B,\n\t1335:  0x000080F6,\n\t1336:  0x000209E7,\n\t1339:  0x0000809F,\n\t1340:  0x00009EC7,\n\t1341:  0x00004CCD,\n\t1342:  0x00009DC9,\n\t1343:  0x00009E0C,\n\t1344:  0x00004C3E,\n\t1345:  0x00029DF6,\n\t1346:  0x0002700E,\n\t1347:  0x00009E0A,\n\t1348:  0x0002A133,\n\t1349:  0x000035C1,\n\t1351:  0x00006E9A,\n\t1352:  0x0000823E,\n\t1353:  0x00007519,\n\t1355:  0x00004911,\n\t1356:  0x00009A6C,\n\t1357:  0x00009A8F,\n\t1358:  0x00009F99,\n\t1359:  0x00007987,\n\t1360:  0x0002846C,\n\t1361:  0x00021DCA,\n\t1362:  0x000205D0,\n\t1363:  0x00022AE6,\n\t1364:  0x00004E24,\n\t1365:  0x00004E81,\n\t1366:  0x00004E80,\n\t1367:  0x00004E87,\n\t1368:  0x00004EBF,\n\t1369:  0x00004EEB,\n\t1370:  0x00004F37,\n\t1371:  0x0000344C,\n\t1372:  0x00004FBD,\n\t1373:  0x00003E48,\n\t1374:  0x00005003,\n\t1375:  0x00005088,\n\t1376:  0x0000347D,\n\t1377:  0x00003493,\n\t1378:  0x000034A5,\n\t1379:  0x00005186,\n\t1380:  0x00005905,\n\t1381:  0x000051DB,\n\t1382:  0x000051FC,\n\t1383:  0x00005205,\n\t1384:  0x00004E89,\n\t1385:  0x00005279,\n\t1386:  0x00005290,\n\t1387:  0x00005327,\n\t1388:  0x000035C7,\n\t1389:  0x000053A9,\n\t1390:  0x00003551,\n\t1391:  0x000053B0,\n\t1392:  0x00003553,\n\t1393:  0x000053C2,\n\t1394:  0x00005423,\n\t1395:  0x0000356D,\n\t1396:  0x00003572,\n\t1397:  0x00003681,\n\t1398:  0x00005493,\n\t1399:  0x000054A3,\n\t1400:  0x000054B4,\n\t1401:  0x000054B9,\n\t1402:  0x000054D0,\n\t1403:  0x000054EF,\n\t1404:  0x00005518,\n\t1405:  0x00005523,\n\t1406:  0x00005528,\n\t1407:  0x00003598,\n\t1408:  0x0000553F,\n\t1409:  0x000035A5,\n\t1410:  0x000035BF,\n\t1411:  0x000055D7,\n\t1412:  0x000035C5,\n\t1413:  0x00027D84,\n\t1414:  0x00005525,\n\t1416:  0x00020C42,\n\t1417:  0x00020D15,\n\t1418:  0x0002512B,\n\t1419:  0x00005590,\n\t1420:  0x00022CC6,\n\t1421:  0x000039EC,\n\t1422:  0x00020341,\n\t1423:  0x00008E46,\n\t1424:  0x00024DB8,\n\t1425:  0x000294E5,\n\t1426:  0x00004053,\n\t1427:  0x000280BE,\n\t1428:  0x0000777A,\n\t1429:  0x00022C38,\n\t1430:  0x00003A34,\n\t1431:  0x000047D5,\n\t1432:  0x0002815D,\n\t1433:  0x000269F2,\n\t1434:  0x00024DEA,\n\t1435:  0x000064DD,\n\t1436:  0x00020D7C,\n\t1437:  0x00020FB4,\n\t1438:  0x00020CD5,\n\t1439:  0x000210F4,\n\t1440:  0x0000648D,\n\t1441:  0x00008E7E,\n\t1442:  0x00020E96,\n\t1443:  0x00020C0B,\n\t1444:  0x00020F64,\n\t1445:  0x00022CA9,\n\t1446:  0x00028256,\n\t1447:  0x000244D3,\n\t1449:  0x00020D46,\n\t1450:  0x00029A4D,\n\t1451:  0x000280E9,\n\t1452:  0x000047F4,\n\t1453:  0x00024EA7,\n\t1454:  0x00022CC2,\n\t1455:  0x00009AB2,\n\t1456:  0x00003A67,\n\t1457:  0x000295F4,\n\t1458:  0x00003FED,\n\t1459:  0x00003506,\n\t1460:  0x000252C7,\n\t1461:  0x000297D4,\n\t1462:  0x000278C8,\n\t1463:  0x00022D44,\n\t1464:  0x00009D6E,\n\t1465:  0x00009815,\n\t1467:  0x000043D9,\n\t1468:  0x000260A5,\n\t1469:  0x000064B4,\n\t1470:  0x000054E3,\n\t1471:  0x00022D4C,\n\t1472:  0x00022BCA,\n\t1473:  0x00021077,\n\t1474:  0x000039FB,\n\t1475:  0x0002106F,\n\t1476:  0x000266DA,\n\t1477:  0x00026716,\n\t1478:  0x000279A0,\n\t1479:  0x000064EA,\n\t1480:  0x00025052,\n\t1481:  0x00020C43,\n\t1482:  0x00008E68,\n\t1483:  0x000221A1,\n\t1484:  0x00028B4C,\n\t1485:  0x00020731,\n\t1487:  0x0000480B,\n\t1488:  0x000201A9,\n\t1489:  0x00003FFA,\n\t1490:  0x00005873,\n\t1491:  0x00022D8D,\n\t1493:  0x000245C8,\n\t1494:  0x000204FC,\n\t1495:  0x00026097,\n\t1496:  0x00020F4C,\n\t1497:  0x00020D96,\n\t1498:  0x00005579,\n\t1499:  0x000040BB,\n\t1500:  0x000043BA,\n\t1502:  0x00004AB4,\n\t1503:  0x00022A66,\n\t1504:  0x0002109D,\n\t1505:  0x000081AA,\n\t1506:  0x000098F5,\n\t1507:  0x00020D9C,\n\t1508:  0x00006379,\n\t1509:  0x000039FE,\n\t1510:  0x00022775,\n\t1511:  0x00008DC0,\n\t1512:  0x000056A1,\n\t1513:  0x0000647C,\n\t1514:  0x00003E43,\n\t1516:  0x0002A601,\n\t1517:  0x00020E09,\n\t1518:  0x00022ACF,\n\t1519:  0x00022CC9,\n\t1521:  0x000210C8,\n\t1522:  0x000239C2,\n\t1523:  0x00003992,\n\t1524:  0x00003A06,\n\t1525:  0x0002829B,\n\t1526:  0x00003578,\n\t1527:  0x00025E49,\n\t1528:  0x000220C7,\n\t1529:  0x00005652,\n\t1530:  0x00020F31,\n\t1531:  0x00022CB2,\n\t1532:  0x00029720,\n\t1533:  0x000034BC,\n\t1534:  0x00006C3D,\n\t1535:  0x00024E3B,\n\t1538:  0x00027574,\n\t1539:  0x00022E8B,\n\t1540:  0x00022208,\n\t1541:  0x0002A65B,\n\t1542:  0x00028CCD,\n\t1543:  0x00020E7A,\n\t1544:  0x00020C34,\n\t1545:  0x0002681C,\n\t1546:  0x00007F93,\n\t1547:  0x000210CF,\n\t1548:  0x00022803,\n\t1549:  0x00022939,\n\t1550:  0x000035FB,\n\t1551:  0x000251E3,\n\t1552:  0x00020E8C,\n\t1553:  0x00020F8D,\n\t1554:  0x00020EAA,\n\t1555:  0x00003F93,\n\t1556:  0x00020F30,\n\t1557:  0x00020D47,\n\t1558:  0x0002114F,\n\t1559:  0x00020E4C,\n\t1561:  0x00020EAB,\n\t1562:  0x00020BA9,\n\t1563:  0x00020D48,\n\t1564:  0x000210C0,\n\t1565:  0x0002113D,\n\t1566:  0x00003FF9,\n\t1567:  0x00022696,\n\t1568:  0x00006432,\n\t1569:  0x00020FAD,\n\t1570:  0x000233F4,\n\t1571:  0x00027639,\n\t1572:  0x00022BCE,\n\t1573:  0x00020D7E,\n\t1574:  0x00020D7F,\n\t1575:  0x00022C51,\n\t1576:  0x00022C55,\n\t1577:  0x00003A18,\n\t1578:  0x00020E98,\n\t1579:  0x000210C7,\n\t1580:  0x00020F2E,\n\t1581:  0x0002A632,\n\t1582:  0x00026B50,\n\t1583:  0x00028CD2,\n\t1584:  0x00028D99,\n\t1585:  0x00028CCA,\n\t1586:  0x000095AA,\n\t1587:  0x000054CC,\n\t1588:  0x000082C4,\n\t1589:  0x000055B9,\n\t1591:  0x00029EC3,\n\t1592:  0x00009C26,\n\t1593:  0x00009AB6,\n\t1594:  0x0002775E,\n\t1595:  0x00022DEE,\n\t1596:  0x00007140,\n\t1597:  0x0000816D,\n\t1598:  0x000080EC,\n\t1599:  0x00005C1C,\n\t1600:  0x00026572,\n\t1601:  0x00008134,\n\t1602:  0x00003797,\n\t1603:  0x0000535F,\n\t1604:  0x000280BD,\n\t1605:  0x000091B6,\n\t1606:  0x00020EFA,\n\t1607:  0x00020E0F,\n\t1608:  0x00020E77,\n\t1609:  0x00020EFB,\n\t1610:  0x000035DD,\n\t1611:  0x00024DEB,\n\t1612:  0x00003609,\n\t1613:  0x00020CD6,\n\t1614:  0x000056AF,\n\t1615:  0x000227B5,\n\t1616:  0x000210C9,\n\t1617:  0x00020E10,\n\t1618:  0x00020E78,\n\t1619:  0x00021078,\n\t1620:  0x00021148,\n\t1621:  0x00028207,\n\t1622:  0x00021455,\n\t1623:  0x00020E79,\n\t1624:  0x00024E50,\n\t1625:  0x00022DA4,\n\t1626:  0x00005A54,\n\t1627:  0x0002101D,\n\t1628:  0x0002101E,\n\t1629:  0x000210F5,\n\t1630:  0x000210F6,\n\t1631:  0x0000579C,\n\t1632:  0x00020E11,\n\t1633:  0x00027694,\n\t1634:  0x000282CD,\n\t1635:  0x00020FB5,\n\t1636:  0x00020E7B,\n\t1637:  0x0002517E,\n\t1638:  0x00003703,\n\t1639:  0x00020FB6,\n\t1640:  0x00021180,\n\t1641:  0x000252D8,\n\t1642:  0x0002A2BD,\n\t1643:  0x000249DA,\n\t1644:  0x0002183A,\n\t1645:  0x00024177,\n\t1646:  0x0002827C,\n\t1647:  0x00005899,\n\t1648:  0x00005268,\n\t1649:  0x0000361A,\n\t1650:  0x0002573D,\n\t1651:  0x00007BB2,\n\t1652:  0x00005B68,\n\t1653:  0x00004800,\n\t1654:  0x00004B2C,\n\t1655:  0x00009F27,\n\t1656:  0x000049E7,\n\t1657:  0x00009C1F,\n\t1658:  0x00009B8D,\n\t1659:  0x00025B74,\n\t1660:  0x0002313D,\n\t1661:  0x000055FB,\n\t1662:  0x000035F2,\n\t1663:  0x00005689,\n\t1664:  0x00004E28,\n\t1665:  0x00005902,\n\t1666:  0x00021BC1,\n\t1667:  0x0002F878,\n\t1668:  0x00009751,\n\t1669:  0x00020086,\n\t1670:  0x00004E5B,\n\t1671:  0x00004EBB,\n\t1672:  0x0000353E,\n\t1673:  0x00005C23,\n\t1674:  0x00005F51,\n\t1675:  0x00005FC4,\n\t1676:  0x000038FA,\n\t1677:  0x0000624C,\n\t1678:  0x00006535,\n\t1679:  0x00006B7A,\n\t1680:  0x00006C35,\n\t1681:  0x00006C3A,\n\t1682:  0x0000706C,\n\t1683:  0x0000722B,\n\t1684:  0x00004E2C,\n\t1685:  0x000072AD,\n\t1686:  0x000248E9,\n\t1687:  0x00007F52,\n\t1688:  0x0000793B,\n\t1689:  0x00007CF9,\n\t1690:  0x00007F53,\n\t1691:  0x0002626A,\n\t1692:  0x000034C1,\n\t1694:  0x0002634B,\n\t1695:  0x00008002,\n\t1696:  0x00008080,\n\t1697:  0x00026612,\n\t1698:  0x00026951,\n\t1699:  0x0000535D,\n\t1700:  0x00008864,\n\t1701:  0x000089C1,\n\t1702:  0x000278B2,\n\t1703:  0x00008BA0,\n\t1704:  0x00008D1D,\n\t1705:  0x00009485,\n\t1706:  0x00009578,\n\t1707:  0x0000957F,\n\t1708:  0x000095E8,\n\t1709:  0x00028E0F,\n\t1710:  0x000097E6,\n\t1711:  0x00009875,\n\t1712:  0x000098CE,\n\t1713:  0x000098DE,\n\t1714:  0x00009963,\n\t1715:  0x00029810,\n\t1716:  0x00009C7C,\n\t1717:  0x00009E1F,\n\t1718:  0x00009EC4,\n\t1719:  0x00006B6F,\n\t1720:  0x0000F907,\n\t1721:  0x00004E37,\n\t1722:  0x00020087,\n\t1723:  0x0000961D,\n\t1724:  0x00006237,\n\t1725:  0x000094A2,\n\t1727:  0x0000503B,\n\t1728:  0x00006DFE,\n\t1729:  0x00029C73,\n\t1730:  0x00009FA6,\n\t1731:  0x00003DC9,\n\t1732:  0x0000888F,\n\t1733:  0x0002414E,\n\t1734:  0x00007077,\n\t1735:  0x00005CF5,\n\t1736:  0x00004B20,\n\t1737:  0x000251CD,\n\t1738:  0x00003559,\n\t1739:  0x00025D30,\n\t1740:  0x00006122,\n\t1741:  0x00028A32,\n\t1742:  0x00008FA7,\n\t1743:  0x000091F6,\n\t1744:  0x00007191,\n\t1745:  0x00006719,\n\t1746:  0x000073BA,\n\t1747:  0x00023281,\n\t1748:  0x0002A107,\n\t1749:  0x00003C8B,\n\t1750:  0x00021980,\n\t1751:  0x00004B10,\n\t1752:  0x000078E4,\n\t1753:  0x00007402,\n\t1754:  0x000051AE,\n\t1755:  0x0002870F,\n\t1756:  0x00004009,\n\t1757:  0x00006A63,\n\t1758:  0x0002A2BA,\n\t1759:  0x00004223,\n\t1760:  0x0000860F,\n\t1761:  0x00020A6F,\n\t1762:  0x00007A2A,\n\t1763:  0x00029947,\n\t1764:  0x00028AEA,\n\t1765:  0x00009755,\n\t1766:  0x0000704D,\n\t1767:  0x00005324,\n\t1768:  0x0002207E,\n\t1769:  0x000093F4,\n\t1770:  0x000076D9,\n\t1771:  0x000289E3,\n\t1772:  0x00009FA7,\n\t1773:  0x000077DD,\n\t1774:  0x00004EA3,\n\t1775:  0x00004FF0,\n\t1776:  0x000050BC,\n\t1777:  0x00004E2F,\n\t1778:  0x00004F17,\n\t1779:  0x00009FA8,\n\t1780:  0x00005434,\n\t1781:  0x00007D8B,\n\t1782:  0x00005892,\n\t1783:  0x000058D0,\n\t1784:  0x00021DB6,\n\t1785:  0x00005E92,\n\t1786:  0x00005E99,\n\t1787:  0x00005FC2,\n\t1788:  0x00022712,\n\t1789:  0x0000658B,\n\t1790:  0x000233F9,\n\t1791:  0x00006919,\n\t1792:  0x00006A43,\n\t1793:  0x00023C63,\n\t1794:  0x00006CFF,\n\t1796:  0x00007200,\n\t1797:  0x00024505,\n\t1798:  0x0000738C,\n\t1799:  0x00003EDB,\n\t1800:  0x00024A13,\n\t1801:  0x00005B15,\n\t1802:  0x000074B9,\n\t1803:  0x00008B83,\n\t1804:  0x00025CA4,\n\t1805:  0x00025695,\n\t1806:  0x00007A93,\n\t1807:  0x00007BEC,\n\t1808:  0x00007CC3,\n\t1809:  0x00007E6C,\n\t1810:  0x000082F8,\n\t1811:  0x00008597,\n\t1812:  0x00009FA9,\n\t1813:  0x00008890,\n\t1814:  0x00009FAA,\n\t1815:  0x00008EB9,\n\t1816:  0x00009FAB,\n\t1817:  0x00008FCF,\n\t1818:  0x0000855F,\n\t1819:  0x000099E0,\n\t1820:  0x00009221,\n\t1821:  0x00009FAC,\n\t1822:  0x00028DB9,\n\t1823:  0x0002143F,\n\t1824:  0x00004071,\n\t1825:  0x000042A2,\n\t1826:  0x00005A1A,\n\t1830:  0x00009868,\n\t1831:  0x0000676B,\n\t1832:  0x00004276,\n\t1833:  0x0000573D,\n\t1835:  0x000085D6,\n\t1836:  0x0002497B,\n\t1837:  0x000082BF,\n\t1838:  0x0002710D,\n\t1839:  0x00004C81,\n\t1840:  0x00026D74,\n\t1841:  0x00005D7B,\n\t1842:  0x00026B15,\n\t1843:  0x00026FBE,\n\t1844:  0x00009FAD,\n\t1845:  0x00009FAE,\n\t1846:  0x00005B96,\n\t1847:  0x00009FAF,\n\t1848:  0x000066E7,\n\t1849:  0x00007E5B,\n\t1850:  0x00006E57,\n\t1851:  0x000079CA,\n\t1852:  0x00003D88,\n\t1853:  0x000044C3,\n\t1854:  0x00023256,\n\t1855:  0x00022796,\n\t1856:  0x0000439A,\n\t1857:  0x00004536,\n\t1859:  0x00005CD5,\n\t1860:  0x00023B1A,\n\t1861:  0x00008AF9,\n\t1862:  0x00005C78,\n\t1863:  0x00003D12,\n\t1864:  0x00023551,\n\t1865:  0x00005D78,\n\t1866:  0x00009FB2,\n\t1867:  0x00007157,\n\t1868:  0x00004558,\n\t1869:  0x000240EC,\n\t1870:  0x00021E23,\n\t1871:  0x00004C77,\n\t1872:  0x00003978,\n\t1873:  0x0000344A,\n\t1874:  0x000201A4,\n\t1875:  0x00026C41,\n\t1876:  0x00008ACC,\n\t1877:  0x00004FB4,\n\t1878:  0x00020239,\n\t1879:  0x000059BF,\n\t1880:  0x0000816C,\n\t1881:  0x00009856,\n\t1882:  0x000298FA,\n\t1883:  0x00005F3B,\n\t1884:  0x00020B9F,\n\t1886:  0x000221C1,\n\t1887:  0x0002896D,\n\t1888:  0x00004102,\n\t1889:  0x000046BB,\n\t1890:  0x00029079,\n\t1891:  0x00003F07,\n\t1892:  0x00009FB3,\n\t1893:  0x0002A1B5,\n\t1894:  0x000040F8,\n\t1895:  0x000037D6,\n\t1896:  0x000046F7,\n\t1897:  0x00026C46,\n\t1898:  0x0000417C,\n\t1899:  0x000286B2,\n\t1900:  0x000273FF,\n\t1901:  0x0000456D,\n\t1902:  0x000038D4,\n\t1903:  0x0002549A,\n\t1904:  0x00004561,\n\t1905:  0x0000451B,\n\t1906:  0x00004D89,\n\t1907:  0x00004C7B,\n\t1908:  0x00004D76,\n\t1909:  0x000045EA,\n\t1910:  0x00003FC8,\n\t1911:  0x00024B0F,\n\t1912:  0x00003661,\n\t1913:  0x000044DE,\n\t1914:  0x000044BD,\n\t1915:  0x000041ED,\n\t1916:  0x00005D3E,\n\t1917:  0x00005D48,\n\t1918:  0x00005D56,\n\t1919:  0x00003DFC,\n\t1920:  0x0000380F,\n\t1921:  0x00005DA4,\n\t1922:  0x00005DB9,\n\t1923:  0x00003820,\n\t1924:  0x00003838,\n\t1925:  0x00005E42,\n\t1926:  0x00005EBD,\n\t1927:  0x00005F25,\n\t1928:  0x00005F83,\n\t1929:  0x00003908,\n\t1930:  0x00003914,\n\t1931:  0x0000393F,\n\t1932:  0x0000394D,\n\t1933:  0x000060D7,\n\t1934:  0x0000613D,\n\t1935:  0x00005CE5,\n\t1936:  0x00003989,\n\t1937:  0x000061B7,\n\t1938:  0x000061B9,\n\t1939:  0x000061CF,\n\t1940:  0x000039B8,\n\t1941:  0x0000622C,\n\t1942:  0x00006290,\n\t1943:  0x000062E5,\n\t1944:  0x00006318,\n\t1945:  0x000039F8,\n\t1946:  0x000056B1,\n\t1947:  0x00003A03,\n\t1948:  0x000063E2,\n\t1949:  0x000063FB,\n\t1950:  0x00006407,\n\t1951:  0x0000645A,\n\t1952:  0x00003A4B,\n\t1953:  0x000064C0,\n\t1954:  0x00005D15,\n\t1955:  0x00005621,\n\t1956:  0x00009F9F,\n\t1957:  0x00003A97,\n\t1958:  0x00006586,\n\t1959:  0x00003ABD,\n\t1960:  0x000065FF,\n\t1961:  0x00006653,\n\t1962:  0x00003AF2,\n\t1963:  0x00006692,\n\t1964:  0x00003B22,\n\t1965:  0x00006716,\n\t1966:  0x00003B42,\n\t1967:  0x000067A4,\n\t1968:  0x00006800,\n\t1969:  0x00003B58,\n\t1970:  0x0000684A,\n\t1971:  0x00006884,\n\t1972:  0x00003B72,\n\t1973:  0x00003B71,\n\t1974:  0x00003B7B,\n\t1975:  0x00006909,\n\t1976:  0x00006943,\n\t1977:  0x0000725C,\n\t1978:  0x00006964,\n\t1979:  0x0000699F,\n\t1980:  0x00006985,\n\t1981:  0x00003BBC,\n\t1982:  0x000069D6,\n\t1983:  0x00003BDD,\n\t1984:  0x00006A65,\n\t1985:  0x00006A74,\n\t1986:  0x00006A71,\n\t1987:  0x00006A82,\n\t1988:  0x00003BEC,\n\t1989:  0x00006A99,\n\t1990:  0x00003BF2,\n\t1991:  0x00006AAB,\n\t1992:  0x00006AB5,\n\t1993:  0x00006AD4,\n\t1994:  0x00006AF6,\n\t1995:  0x00006B81,\n\t1996:  0x00006BC1,\n\t1997:  0x00006BEA,\n\t1998:  0x00006C75,\n\t1999:  0x00006CAA,\n\t2000:  0x00003CCB,\n\t2001:  0x00006D02,\n\t2002:  0x00006D06,\n\t2003:  0x00006D26,\n\t2004:  0x00006D81,\n\t2005:  0x00003CEF,\n\t2006:  0x00006DA4,\n\t2007:  0x00006DB1,\n\t2008:  0x00006E15,\n\t2009:  0x00006E18,\n\t2010:  0x00006E29,\n\t2011:  0x00006E86,\n\t2012:  0x000289C0,\n\t2013:  0x00006EBB,\n\t2014:  0x00006EE2,\n\t2015:  0x00006EDA,\n\t2016:  0x00009F7F,\n\t2017:  0x00006EE8,\n\t2018:  0x00006EE9,\n\t2019:  0x00006F24,\n\t2020:  0x00006F34,\n\t2021:  0x00003D46,\n\t2022:  0x00023F41,\n\t2023:  0x00006F81,\n\t2024:  0x00006FBE,\n\t2025:  0x00003D6A,\n\t2026:  0x00003D75,\n\t2027:  0x000071B7,\n\t2028:  0x00005C99,\n\t2029:  0x00003D8A,\n\t2030:  0x0000702C,\n\t2031:  0x00003D91,\n\t2032:  0x00007050,\n\t2033:  0x00007054,\n\t2034:  0x0000706F,\n\t2035:  0x0000707F,\n\t2036:  0x00007089,\n\t2037:  0x00020325,\n\t2038:  0x000043C1,\n\t2039:  0x000035F1,\n\t2040:  0x00020ED8,\n\t2041:  0x00023ED7,\n\t2042:  0x000057BE,\n\t2043:  0x00026ED3,\n\t2044:  0x0000713E,\n\t2045:  0x000257E0,\n\t2046:  0x0000364E,\n\t2047:  0x000069A2,\n\t2048:  0x00028BE9,\n\t2049:  0x00005B74,\n\t2050:  0x00007A49,\n\t2051:  0x000258E1,\n\t2052:  0x000294D9,\n\t2053:  0x00007A65,\n\t2054:  0x00007A7D,\n\t2055:  0x000259AC,\n\t2056:  0x00007ABB,\n\t2057:  0x00007AB0,\n\t2058:  0x00007AC2,\n\t2059:  0x00007AC3,\n\t2060:  0x000071D1,\n\t2061:  0x0002648D,\n\t2062:  0x000041CA,\n\t2063:  0x00007ADA,\n\t2064:  0x00007ADD,\n\t2065:  0x00007AEA,\n\t2066:  0x000041EF,\n\t2067:  0x000054B2,\n\t2068:  0x00025C01,\n\t2069:  0x00007B0B,\n\t2070:  0x00007B55,\n\t2071:  0x00007B29,\n\t2072:  0x0002530E,\n\t2073:  0x00025CFE,\n\t2074:  0x00007BA2,\n\t2075:  0x00007B6F,\n\t2076:  0x0000839C,\n\t2077:  0x00025BB4,\n\t2078:  0x00026C7F,\n\t2079:  0x00007BD0,\n\t2080:  0x00008421,\n\t2081:  0x00007B92,\n\t2082:  0x00007BB8,\n\t2083:  0x00025D20,\n\t2084:  0x00003DAD,\n\t2085:  0x00025C65,\n\t2086:  0x00008492,\n\t2087:  0x00007BFA,\n\t2088:  0x00007C06,\n\t2089:  0x00007C35,\n\t2090:  0x00025CC1,\n\t2091:  0x00007C44,\n\t2092:  0x00007C83,\n\t2093:  0x00024882,\n\t2094:  0x00007CA6,\n\t2095:  0x0000667D,\n\t2096:  0x00024578,\n\t2097:  0x00007CC9,\n\t2098:  0x00007CC7,\n\t2099:  0x00007CE6,\n\t2100:  0x00007C74,\n\t2101:  0x00007CF3,\n\t2102:  0x00007CF5,\n\t2103:  0x00007CCE,\n\t2104:  0x00007E67,\n\t2105:  0x0000451D,\n\t2106:  0x00026E44,\n\t2107:  0x00007D5D,\n\t2108:  0x00026ED6,\n\t2109:  0x0000748D,\n\t2110:  0x00007D89,\n\t2111:  0x00007DAB,\n\t2112:  0x00007135,\n\t2113:  0x00007DB3,\n\t2114:  0x00007DD2,\n\t2115:  0x00024057,\n\t2116:  0x00026029,\n\t2117:  0x00007DE4,\n\t2118:  0x00003D13,\n\t2119:  0x00007DF5,\n\t2120:  0x000217F9,\n\t2121:  0x00007DE5,\n\t2122:  0x0002836D,\n\t2123:  0x00007E1D,\n\t2124:  0x00026121,\n\t2125:  0x0002615A,\n\t2126:  0x00007E6E,\n\t2127:  0x00007E92,\n\t2128:  0x0000432B,\n\t2129:  0x0000946C,\n\t2130:  0x00007E27,\n\t2131:  0x00007F40,\n\t2132:  0x00007F41,\n\t2133:  0x00007F47,\n\t2134:  0x00007936,\n\t2135:  0x000262D0,\n\t2136:  0x000099E1,\n\t2137:  0x00007F97,\n\t2138:  0x00026351,\n\t2139:  0x00007FA3,\n\t2140:  0x00021661,\n\t2141:  0x00020068,\n\t2142:  0x0000455C,\n\t2143:  0x00023766,\n\t2144:  0x00004503,\n\t2145:  0x0002833A,\n\t2146:  0x00007FFA,\n\t2147:  0x00026489,\n\t2148:  0x00008005,\n\t2149:  0x00008008,\n\t2150:  0x0000801D,\n\t2151:  0x00008028,\n\t2152:  0x0000802F,\n\t2153:  0x0002A087,\n\t2154:  0x00026CC3,\n\t2155:  0x0000803B,\n\t2156:  0x0000803C,\n\t2157:  0x00008061,\n\t2158:  0x00022714,\n\t2159:  0x00004989,\n\t2160:  0x00026626,\n\t2161:  0x00023DE3,\n\t2162:  0x000266E8,\n\t2163:  0x00006725,\n\t2164:  0x000080A7,\n\t2165:  0x00028A48,\n\t2166:  0x00008107,\n\t2167:  0x0000811A,\n\t2168:  0x000058B0,\n\t2169:  0x000226F6,\n\t2170:  0x00006C7F,\n\t2171:  0x00026498,\n\t2172:  0x00024FB8,\n\t2173:  0x000064E7,\n\t2174:  0x0002148A,\n\t2175:  0x00008218,\n\t2176:  0x0002185E,\n\t2177:  0x00006A53,\n\t2178:  0x00024A65,\n\t2179:  0x00024A95,\n\t2180:  0x0000447A,\n\t2181:  0x00008229,\n\t2182:  0x00020B0D,\n\t2183:  0x00026A52,\n\t2184:  0x00023D7E,\n\t2185:  0x00004FF9,\n\t2186:  0x000214FD,\n\t2187:  0x000084E2,\n\t2188:  0x00008362,\n\t2189:  0x00026B0A,\n\t2190:  0x000249A7,\n\t2191:  0x00023530,\n\t2192:  0x00021773,\n\t2193:  0x00023DF8,\n\t2194:  0x000082AA,\n\t2195:  0x0000691B,\n\t2196:  0x0002F994,\n\t2197:  0x000041DB,\n\t2198:  0x0000854B,\n\t2199:  0x000082D0,\n\t2200:  0x0000831A,\n\t2201:  0x00020E16,\n\t2202:  0x000217B4,\n\t2203:  0x000036C1,\n\t2204:  0x0002317D,\n\t2205:  0x0002355A,\n\t2206:  0x0000827B,\n\t2207:  0x000082E2,\n\t2208:  0x00008318,\n\t2209:  0x00023E8B,\n\t2210:  0x00026DA3,\n\t2211:  0x00026B05,\n\t2212:  0x00026B97,\n\t2213:  0x000235CE,\n\t2214:  0x00003DBF,\n\t2215:  0x0000831D,\n\t2216:  0x000055EC,\n\t2217:  0x00008385,\n\t2218:  0x0000450B,\n\t2219:  0x00026DA5,\n\t2220:  0x000083AC,\n\t2221:  0x000083C1,\n\t2222:  0x000083D3,\n\t2223:  0x0000347E,\n\t2224:  0x00026ED4,\n\t2225:  0x00006A57,\n\t2226:  0x0000855A,\n\t2227:  0x00003496,\n\t2228:  0x00026E42,\n\t2229:  0x00022EEF,\n\t2230:  0x00008458,\n\t2231:  0x00025BE4,\n\t2232:  0x00008471,\n\t2233:  0x00003DD3,\n\t2234:  0x000044E4,\n\t2235:  0x00006AA7,\n\t2236:  0x0000844A,\n\t2237:  0x00023CB5,\n\t2238:  0x00007958,\n\t2239:  0x000084A8,\n\t2240:  0x00026B96,\n\t2241:  0x00026E77,\n\t2242:  0x00026E43,\n\t2243:  0x000084DE,\n\t2244:  0x0000840F,\n\t2245:  0x00008391,\n\t2246:  0x000044A0,\n\t2247:  0x00008493,\n\t2248:  0x000084E4,\n\t2249:  0x00025C91,\n\t2250:  0x00004240,\n\t2251:  0x00025CC0,\n\t2252:  0x00004543,\n\t2253:  0x00008534,\n\t2254:  0x00005AF2,\n\t2255:  0x00026E99,\n\t2256:  0x00004527,\n\t2257:  0x00008573,\n\t2258:  0x00004516,\n\t2259:  0x000067BF,\n\t2260:  0x00008616,\n\t2261:  0x00028625,\n\t2262:  0x0002863B,\n\t2263:  0x000085C1,\n\t2264:  0x00027088,\n\t2265:  0x00008602,\n\t2266:  0x00021582,\n\t2267:  0x000270CD,\n\t2268:  0x0002F9B2,\n\t2269:  0x0000456A,\n\t2270:  0x00008628,\n\t2271:  0x00003648,\n\t2272:  0x000218A2,\n\t2273:  0x000053F7,\n\t2274:  0x0002739A,\n\t2275:  0x0000867E,\n\t2276:  0x00008771,\n\t2277:  0x0002A0F8,\n\t2278:  0x000087EE,\n\t2279:  0x00022C27,\n\t2280:  0x000087B1,\n\t2281:  0x000087DA,\n\t2282:  0x0000880F,\n\t2283:  0x00005661,\n\t2284:  0x0000866C,\n\t2285:  0x00006856,\n\t2286:  0x0000460F,\n\t2287:  0x00008845,\n\t2288:  0x00008846,\n\t2289:  0x000275E0,\n\t2290:  0x00023DB9,\n\t2291:  0x000275E4,\n\t2292:  0x0000885E,\n\t2293:  0x0000889C,\n\t2294:  0x0000465B,\n\t2295:  0x000088B4,\n\t2296:  0x000088B5,\n\t2297:  0x000063C1,\n\t2298:  0x000088C5,\n\t2299:  0x00007777,\n\t2300:  0x0002770F,\n\t2301:  0x00008987,\n\t2302:  0x0000898A,\n\t2303:  0x000089A6,\n\t2304:  0x000089A9,\n\t2305:  0x000089A7,\n\t2306:  0x000089BC,\n\t2307:  0x00028A25,\n\t2308:  0x000089E7,\n\t2309:  0x00027924,\n\t2310:  0x00027ABD,\n\t2311:  0x00008A9C,\n\t2312:  0x00007793,\n\t2313:  0x000091FE,\n\t2314:  0x00008A90,\n\t2315:  0x00027A59,\n\t2316:  0x00007AE9,\n\t2317:  0x00027B3A,\n\t2318:  0x00023F8F,\n\t2319:  0x00004713,\n\t2320:  0x00027B38,\n\t2321:  0x0000717C,\n\t2322:  0x00008B0C,\n\t2323:  0x00008B1F,\n\t2324:  0x00025430,\n\t2325:  0x00025565,\n\t2326:  0x00008B3F,\n\t2327:  0x00008B4C,\n\t2328:  0x00008B4D,\n\t2329:  0x00008AA9,\n\t2330:  0x00024A7A,\n\t2331:  0x00008B90,\n\t2332:  0x00008B9B,\n\t2333:  0x00008AAF,\n\t2334:  0x000216DF,\n\t2335:  0x00004615,\n\t2336:  0x0000884F,\n\t2337:  0x00008C9B,\n\t2338:  0x00027D54,\n\t2339:  0x00027D8F,\n\t2340:  0x0002F9D4,\n\t2341:  0x00003725,\n\t2342:  0x00027D53,\n\t2343:  0x00008CD6,\n\t2344:  0x00027D98,\n\t2345:  0x00027DBD,\n\t2346:  0x00008D12,\n\t2347:  0x00008D03,\n\t2348:  0x00021910,\n\t2349:  0x00008CDB,\n\t2350:  0x0000705C,\n\t2351:  0x00008D11,\n\t2352:  0x00024CC9,\n\t2353:  0x00003ED0,\n\t2354:  0x00008D77,\n\t2355:  0x00008DA9,\n\t2356:  0x00028002,\n\t2357:  0x00021014,\n\t2358:  0x0002498A,\n\t2359:  0x00003B7C,\n\t2360:  0x000281BC,\n\t2361:  0x0002710C,\n\t2362:  0x00007AE7,\n\t2363:  0x00008EAD,\n\t2364:  0x00008EB6,\n\t2365:  0x00008EC3,\n\t2366:  0x000092D4,\n\t2367:  0x00008F19,\n\t2368:  0x00008F2D,\n\t2369:  0x00028365,\n\t2370:  0x00028412,\n\t2371:  0x00008FA5,\n\t2372:  0x00009303,\n\t2373:  0x0002A29F,\n\t2374:  0x00020A50,\n\t2375:  0x00008FB3,\n\t2376:  0x0000492A,\n\t2377:  0x000289DE,\n\t2378:  0x0002853D,\n\t2379:  0x00023DBB,\n\t2380:  0x00005EF8,\n\t2381:  0x00023262,\n\t2382:  0x00008FF9,\n\t2383:  0x0002A014,\n\t2384:  0x000286BC,\n\t2385:  0x00028501,\n\t2386:  0x00022325,\n\t2387:  0x00003980,\n\t2388:  0x00026ED7,\n\t2389:  0x00009037,\n\t2390:  0x0002853C,\n\t2391:  0x00027ABE,\n\t2392:  0x00009061,\n\t2393:  0x0002856C,\n\t2394:  0x0002860B,\n\t2395:  0x000090A8,\n\t2396:  0x00028713,\n\t2397:  0x000090C4,\n\t2398:  0x000286E6,\n\t2399:  0x000090AE,\n\t2400:  0x000090FD,\n\t2401:  0x00009167,\n\t2402:  0x00003AF0,\n\t2403:  0x000091A9,\n\t2404:  0x000091C4,\n\t2405:  0x00007CAC,\n\t2406:  0x00028933,\n\t2407:  0x00021E89,\n\t2408:  0x0000920E,\n\t2409:  0x00006C9F,\n\t2410:  0x00009241,\n\t2411:  0x00009262,\n\t2412:  0x000255B9,\n\t2413:  0x000092B9,\n\t2414:  0x00028AC6,\n\t2415:  0x00023C9B,\n\t2416:  0x00028B0C,\n\t2417:  0x000255DB,\n\t2418:  0x00020D31,\n\t2419:  0x0000932C,\n\t2420:  0x0000936B,\n\t2421:  0x00028AE1,\n\t2422:  0x00028BEB,\n\t2423:  0x0000708F,\n\t2424:  0x00005AC3,\n\t2425:  0x00028AE2,\n\t2426:  0x00028AE5,\n\t2427:  0x00004965,\n\t2428:  0x00009244,\n\t2429:  0x00028BEC,\n\t2430:  0x00028C39,\n\t2431:  0x00028BFF,\n\t2432:  0x00009373,\n\t2433:  0x0000945B,\n\t2434:  0x00008EBC,\n\t2435:  0x00009585,\n\t2436:  0x000095A6,\n\t2437:  0x00009426,\n\t2438:  0x000095A0,\n\t2439:  0x00006FF6,\n\t2440:  0x000042B9,\n\t2441:  0x0002267A,\n\t2442:  0x000286D8,\n\t2443:  0x0002127C,\n\t2444:  0x00023E2E,\n\t2445:  0x000049DF,\n\t2446:  0x00006C1C,\n\t2447:  0x0000967B,\n\t2448:  0x00009696,\n\t2449:  0x0000416C,\n\t2450:  0x000096A3,\n\t2451:  0x00026ED5,\n\t2452:  0x000061DA,\n\t2453:  0x000096B6,\n\t2454:  0x000078F5,\n\t2455:  0x00028AE0,\n\t2456:  0x000096BD,\n\t2457:  0x000053CC,\n\t2458:  0x000049A1,\n\t2459:  0x00026CB8,\n\t2460:  0x00020274,\n\t2461:  0x00026410,\n\t2462:  0x000290AF,\n\t2463:  0x000290E5,\n\t2464:  0x00024AD1,\n\t2465:  0x00021915,\n\t2466:  0x0002330A,\n\t2467:  0x00009731,\n\t2468:  0x00008642,\n\t2469:  0x00009736,\n\t2470:  0x00004A0F,\n\t2471:  0x0000453D,\n\t2472:  0x00004585,\n\t2473:  0x00024AE9,\n\t2474:  0x00007075,\n\t2475:  0x00005B41,\n\t2476:  0x0000971B,\n\t2477:  0x0000975C,\n\t2478:  0x000291D5,\n\t2479:  0x00009757,\n\t2480:  0x00005B4A,\n\t2481:  0x000291EB,\n\t2482:  0x0000975F,\n\t2483:  0x00009425,\n\t2484:  0x000050D0,\n\t2485:  0x000230B7,\n\t2486:  0x000230BC,\n\t2487:  0x00009789,\n\t2488:  0x0000979F,\n\t2489:  0x000097B1,\n\t2490:  0x000097BE,\n\t2491:  0x000097C0,\n\t2492:  0x000097D2,\n\t2493:  0x000097E0,\n\t2494:  0x0002546C,\n\t2495:  0x000097EE,\n\t2496:  0x0000741C,\n\t2497:  0x00029433,\n\t2498:  0x000097FF,\n\t2499:  0x000097F5,\n\t2500:  0x0002941D,\n\t2501:  0x0002797A,\n\t2502:  0x00004AD1,\n\t2503:  0x00009834,\n\t2504:  0x00009833,\n\t2505:  0x0000984B,\n\t2506:  0x00009866,\n\t2507:  0x00003B0E,\n\t2508:  0x00027175,\n\t2509:  0x00003D51,\n\t2510:  0x00020630,\n\t2511:  0x0002415C,\n\t2512:  0x00025706,\n\t2513:  0x000098CA,\n\t2514:  0x000098B7,\n\t2515:  0x000098C8,\n\t2516:  0x000098C7,\n\t2517:  0x00004AFF,\n\t2518:  0x00026D27,\n\t2519:  0x000216D3,\n\t2520:  0x000055B0,\n\t2521:  0x000098E1,\n\t2522:  0x000098E6,\n\t2523:  0x000098EC,\n\t2524:  0x00009378,\n\t2525:  0x00009939,\n\t2526:  0x00024A29,\n\t2527:  0x00004B72,\n\t2528:  0x00029857,\n\t2529:  0x00029905,\n\t2530:  0x000099F5,\n\t2531:  0x00009A0C,\n\t2532:  0x00009A3B,\n\t2533:  0x00009A10,\n\t2534:  0x00009A58,\n\t2535:  0x00025725,\n\t2536:  0x000036C4,\n\t2537:  0x000290B1,\n\t2538:  0x00029BD5,\n\t2539:  0x00009AE0,\n\t2540:  0x00009AE2,\n\t2541:  0x00029B05,\n\t2542:  0x00009AF4,\n\t2543:  0x00004C0E,\n\t2544:  0x00009B14,\n\t2545:  0x00009B2D,\n\t2546:  0x00028600,\n\t2547:  0x00005034,\n\t2548:  0x00009B34,\n\t2549:  0x000269A8,\n\t2550:  0x000038C3,\n\t2551:  0x0002307D,\n\t2552:  0x00009B50,\n\t2553:  0x00009B40,\n\t2554:  0x00029D3E,\n\t2555:  0x00005A45,\n\t2556:  0x00021863,\n\t2557:  0x00009B8E,\n\t2558:  0x0002424B,\n\t2559:  0x00009C02,\n\t2560:  0x00009BFF,\n\t2561:  0x00009C0C,\n\t2562:  0x00029E68,\n\t2563:  0x00009DD4,\n\t2564:  0x00029FB7,\n\t2565:  0x0002A192,\n\t2566:  0x0002A1AB,\n\t2567:  0x0002A0E1,\n\t2568:  0x0002A123,\n\t2569:  0x0002A1DF,\n\t2570:  0x00009D7E,\n\t2571:  0x00009D83,\n\t2572:  0x0002A134,\n\t2573:  0x00009E0E,\n\t2574:  0x00006888,\n\t2575:  0x00009DC4,\n\t2576:  0x0002215B,\n\t2577:  0x0002A193,\n\t2578:  0x0002A220,\n\t2579:  0x0002193B,\n\t2580:  0x0002A233,\n\t2581:  0x00009D39,\n\t2582:  0x0002A0B9,\n\t2583:  0x0002A2B4,\n\t2584:  0x00009E90,\n\t2585:  0x00009E95,\n\t2586:  0x00009E9E,\n\t2587:  0x00009EA2,\n\t2588:  0x00004D34,\n\t2589:  0x00009EAA,\n\t2590:  0x00009EAF,\n\t2591:  0x00024364,\n\t2592:  0x00009EC1,\n\t2593:  0x00003B60,\n\t2594:  0x000039E5,\n\t2595:  0x00003D1D,\n\t2596:  0x00004F32,\n\t2597:  0x000037BE,\n\t2598:  0x00028C2B,\n\t2599:  0x00009F02,\n\t2600:  0x00009F08,\n\t2601:  0x00004B96,\n\t2602:  0x00009424,\n\t2603:  0x00026DA2,\n\t2604:  0x00009F17,\n\t2605:  0x00009F16,\n\t2606:  0x00009F39,\n\t2607:  0x0000569F,\n\t2608:  0x0000568A,\n\t2609:  0x00009F45,\n\t2610:  0x000099B8,\n\t2611:  0x0002908B,\n\t2612:  0x000097F2,\n\t2613:  0x0000847F,\n\t2614:  0x00009F62,\n\t2615:  0x00009F69,\n\t2616:  0x00007ADC,\n\t2617:  0x00009F8E,\n\t2618:  0x00007216,\n\t2619:  0x00004BBE,\n\t2620:  0x00024975,\n\t2621:  0x000249BB,\n\t2622:  0x00007177,\n\t2623:  0x000249F8,\n\t2624:  0x00024348,\n\t2625:  0x00024A51,\n\t2626:  0x0000739E,\n\t2627:  0x00028BDA,\n\t2628:  0x000218FA,\n\t2629:  0x0000799F,\n\t2630:  0x0002897E,\n\t2631:  0x00028E36,\n\t2632:  0x00009369,\n\t2633:  0x000093F3,\n\t2634:  0x00028A44,\n\t2635:  0x000092EC,\n\t2636:  0x00009381,\n\t2637:  0x000093CB,\n\t2638:  0x0002896C,\n\t2639:  0x000244B9,\n\t2640:  0x00007217,\n\t2641:  0x00003EEB,\n\t2642:  0x00007772,\n\t2643:  0x00007A43,\n\t2644:  0x000070D0,\n\t2645:  0x00024473,\n\t2646:  0x000243F8,\n\t2647:  0x0000717E,\n\t2648:  0x000217EF,\n\t2649:  0x000070A3,\n\t2650:  0x000218BE,\n\t2651:  0x00023599,\n\t2652:  0x00003EC7,\n\t2653:  0x00021885,\n\t2654:  0x0002542F,\n\t2655:  0x000217F8,\n\t2656:  0x00003722,\n\t2657:  0x000216FB,\n\t2658:  0x00021839,\n\t2659:  0x000036E1,\n\t2660:  0x00021774,\n\t2661:  0x000218D1,\n\t2662:  0x00025F4B,\n\t2663:  0x00003723,\n\t2664:  0x000216C0,\n\t2665:  0x0000575B,\n\t2666:  0x00024A25,\n\t2667:  0x000213FE,\n\t2668:  0x000212A8,\n\t2669:  0x000213C6,\n\t2670:  0x000214B6,\n\t2671:  0x00008503,\n\t2672:  0x000236A6,\n\t2673:  0x00008503,\n\t2674:  0x00008455,\n\t2675:  0x00024994,\n\t2676:  0x00027165,\n\t2677:  0x00023E31,\n\t2678:  0x0002555C,\n\t2679:  0x00023EFB,\n\t2680:  0x00027052,\n\t2681:  0x000044F4,\n\t2682:  0x000236EE,\n\t2683:  0x0002999D,\n\t2684:  0x00026F26,\n\t2685:  0x000067F9,\n\t2686:  0x00003733,\n\t2687:  0x00003C15,\n\t2688:  0x00003DE7,\n\t2689:  0x0000586C,\n\t2690:  0x00021922,\n\t2691:  0x00006810,\n\t2692:  0x00004057,\n\t2693:  0x0002373F,\n\t2694:  0x000240E1,\n\t2695:  0x0002408B,\n\t2696:  0x0002410F,\n\t2697:  0x00026C21,\n\t2698:  0x000054CB,\n\t2699:  0x0000569E,\n\t2700:  0x000266B1,\n\t2701:  0x00005692,\n\t2702:  0x00020FDF,\n\t2703:  0x00020BA8,\n\t2704:  0x00020E0D,\n\t2705:  0x000093C6,\n\t2706:  0x00028B13,\n\t2707:  0x0000939C,\n\t2708:  0x00004EF8,\n\t2709:  0x0000512B,\n\t2710:  0x00003819,\n\t2711:  0x00024436,\n\t2712:  0x00004EBC,\n\t2713:  0x00020465,\n\t2714:  0x0002037F,\n\t2715:  0x00004F4B,\n\t2716:  0x00004F8A,\n\t2717:  0x00025651,\n\t2718:  0x00005A68,\n\t2719:  0x000201AB,\n\t2720:  0x000203CB,\n\t2721:  0x00003999,\n\t2722:  0x0002030A,\n\t2723:  0x00020414,\n\t2724:  0x00003435,\n\t2725:  0x00004F29,\n\t2726:  0x000202C0,\n\t2727:  0x00028EB3,\n\t2728:  0x00020275,\n\t2729:  0x00008ADA,\n\t2730:  0x0002020C,\n\t2731:  0x00004E98,\n\t2732:  0x000050CD,\n\t2733:  0x0000510D,\n\t2734:  0x00004FA2,\n\t2735:  0x00004F03,\n\t2736:  0x00024A0E,\n\t2737:  0x00023E8A,\n\t2738:  0x00004F42,\n\t2739:  0x0000502E,\n\t2740:  0x0000506C,\n\t2741:  0x00005081,\n\t2742:  0x00004FCC,\n\t2743:  0x00004FE5,\n\t2744:  0x00005058,\n\t2745:  0x000050FC,\n\t2746:  0x00005159,\n\t2747:  0x0000515B,\n\t2748:  0x0000515D,\n\t2749:  0x0000515E,\n\t2750:  0x00006E76,\n\t2751:  0x00023595,\n\t2752:  0x00023E39,\n\t2753:  0x00023EBF,\n\t2754:  0x00006D72,\n\t2755:  0x00021884,\n\t2756:  0x00023E89,\n\t2757:  0x000051A8,\n\t2758:  0x000051C3,\n\t2759:  0x000205E0,\n\t2760:  0x000044DD,\n\t2761:  0x000204A3,\n\t2762:  0x00020492,\n\t2763:  0x00020491,\n\t2764:  0x00008D7A,\n\t2765:  0x00028A9C,\n\t2766:  0x0002070E,\n\t2767:  0x00005259,\n\t2768:  0x000052A4,\n\t2769:  0x00020873,\n\t2770:  0x000052E1,\n\t2771:  0x0000936E,\n\t2772:  0x0000467A,\n\t2773:  0x0000718C,\n\t2774:  0x0002438C,\n\t2775:  0x00020C20,\n\t2776:  0x000249AC,\n\t2777:  0x000210E4,\n\t2778:  0x000069D1,\n\t2779:  0x00020E1D,\n\t2780:  0x00007479,\n\t2781:  0x00003EDE,\n\t2782:  0x00007499,\n\t2783:  0x00007414,\n\t2784:  0x00007456,\n\t2785:  0x00007398,\n\t2786:  0x00004B8E,\n\t2787:  0x00024ABC,\n\t2788:  0x0002408D,\n\t2789:  0x000053D0,\n\t2790:  0x00003584,\n\t2791:  0x0000720F,\n\t2792:  0x000240C9,\n\t2793:  0x000055B4,\n\t2794:  0x00020345,\n\t2795:  0x000054CD,\n\t2796:  0x00020BC6,\n\t2797:  0x0000571D,\n\t2798:  0x0000925D,\n\t2799:  0x000096F4,\n\t2800:  0x00009366,\n\t2801:  0x000057DD,\n\t2802:  0x0000578D,\n\t2803:  0x0000577F,\n\t2804:  0x0000363E,\n\t2805:  0x000058CB,\n\t2806:  0x00005A99,\n\t2807:  0x00028A46,\n\t2808:  0x000216FA,\n\t2809:  0x0002176F,\n\t2810:  0x00021710,\n\t2811:  0x00005A2C,\n\t2812:  0x000059B8,\n\t2813:  0x0000928F,\n\t2814:  0x00005A7E,\n\t2815:  0x00005ACF,\n\t2816:  0x00005A12,\n\t2817:  0x00025946,\n\t2818:  0x000219F3,\n\t2819:  0x00021861,\n\t2820:  0x00024295,\n\t2821:  0x000036F5,\n\t2822:  0x00006D05,\n\t2823:  0x00007443,\n\t2824:  0x00005A21,\n\t2825:  0x00025E83,\n\t2826:  0x00005A81,\n\t2827:  0x00028BD7,\n\t2828:  0x00020413,\n\t2829:  0x000093E0,\n\t2830:  0x0000748C,\n\t2831:  0x00021303,\n\t2832:  0x00007105,\n\t2833:  0x00004972,\n\t2834:  0x00009408,\n\t2835:  0x000289FB,\n\t2836:  0x000093BD,\n\t2837:  0x000037A0,\n\t2838:  0x00005C1E,\n\t2839:  0x00005C9E,\n\t2840:  0x00005E5E,\n\t2841:  0x00005E48,\n\t2842:  0x00021996,\n\t2843:  0x0002197C,\n\t2844:  0x00023AEE,\n\t2845:  0x00005ECD,\n\t2846:  0x00005B4F,\n\t2847:  0x00021903,\n\t2848:  0x00021904,\n\t2849:  0x00003701,\n\t2850:  0x000218A0,\n\t2851:  0x000036DD,\n\t2852:  0x000216FE,\n\t2853:  0x000036D3,\n\t2854:  0x0000812A,\n\t2855:  0x00028A47,\n\t2856:  0x00021DBA,\n\t2857:  0x00023472,\n\t2858:  0x000289A8,\n\t2859:  0x00005F0C,\n\t2860:  0x00005F0E,\n\t2861:  0x00021927,\n\t2862:  0x000217AB,\n\t2863:  0x00005A6B,\n\t2864:  0x0002173B,\n\t2865:  0x00005B44,\n\t2866:  0x00008614,\n\t2867:  0x000275FD,\n\t2868:  0x00008860,\n\t2869:  0x0000607E,\n\t2870:  0x00022860,\n\t2871:  0x0002262B,\n\t2872:  0x00005FDB,\n\t2873:  0x00003EB8,\n\t2874:  0x000225AF,\n\t2875:  0x000225BE,\n\t2876:  0x00029088,\n\t2877:  0x00026F73,\n\t2878:  0x000061C0,\n\t2879:  0x0002003E,\n\t2880:  0x00020046,\n\t2881:  0x0002261B,\n\t2882:  0x00006199,\n\t2883:  0x00006198,\n\t2884:  0x00006075,\n\t2885:  0x00022C9B,\n\t2886:  0x00022D07,\n\t2887:  0x000246D4,\n\t2888:  0x0002914D,\n\t2889:  0x00006471,\n\t2890:  0x00024665,\n\t2891:  0x00022B6A,\n\t2892:  0x00003A29,\n\t2893:  0x00022B22,\n\t2894:  0x00023450,\n\t2895:  0x000298EA,\n\t2896:  0x00022E78,\n\t2897:  0x00006337,\n\t2898:  0x0002A45B,\n\t2899:  0x000064B6,\n\t2900:  0x00006331,\n\t2901:  0x000063D1,\n\t2902:  0x000249E3,\n\t2903:  0x00022D67,\n\t2904:  0x000062A4,\n\t2905:  0x00022CA1,\n\t2906:  0x0000643B,\n\t2907:  0x0000656B,\n\t2908:  0x00006972,\n\t2909:  0x00003BF4,\n\t2910:  0x0002308E,\n\t2911:  0x000232AD,\n\t2912:  0x00024989,\n\t2913:  0x000232AB,\n\t2914:  0x0000550D,\n\t2915:  0x000232E0,\n\t2916:  0x000218D9,\n\t2917:  0x0002943F,\n\t2918:  0x000066CE,\n\t2919:  0x00023289,\n\t2920:  0x000231B3,\n\t2921:  0x00003AE0,\n\t2922:  0x00004190,\n\t2923:  0x00025584,\n\t2924:  0x00028B22,\n\t2925:  0x0002558F,\n\t2926:  0x000216FC,\n\t2927:  0x0002555B,\n\t2928:  0x00025425,\n\t2929:  0x000078EE,\n\t2930:  0x00023103,\n\t2931:  0x0002182A,\n\t2932:  0x00023234,\n\t2933:  0x00003464,\n\t2934:  0x0002320F,\n\t2935:  0x00023182,\n\t2936:  0x000242C9,\n\t2937:  0x0000668E,\n\t2938:  0x00026D24,\n\t2939:  0x0000666B,\n\t2940:  0x00004B93,\n\t2941:  0x00006630,\n\t2942:  0x00027870,\n\t2943:  0x00021DEB,\n\t2944:  0x00006663,\n\t2945:  0x000232D2,\n\t2946:  0x000232E1,\n\t2947:  0x0000661E,\n\t2948:  0x00025872,\n\t2949:  0x000038D1,\n\t2950:  0x0002383A,\n\t2951:  0x000237BC,\n\t2952:  0x00003B99,\n\t2953:  0x000237A2,\n\t2954:  0x000233FE,\n\t2955:  0x000074D0,\n\t2956:  0x00003B96,\n\t2957:  0x0000678F,\n\t2958:  0x0002462A,\n\t2959:  0x000068B6,\n\t2960:  0x0000681E,\n\t2961:  0x00003BC4,\n\t2962:  0x00006ABE,\n\t2963:  0x00003863,\n\t2964:  0x000237D5,\n\t2965:  0x00024487,\n\t2966:  0x00006A33,\n\t2967:  0x00006A52,\n\t2968:  0x00006AC9,\n\t2969:  0x00006B05,\n\t2970:  0x00021912,\n\t2971:  0x00006511,\n\t2972:  0x00006898,\n\t2973:  0x00006A4C,\n\t2974:  0x00003BD7,\n\t2975:  0x00006A7A,\n\t2976:  0x00006B57,\n\t2977:  0x00023FC0,\n\t2978:  0x00023C9A,\n\t2979:  0x000093A0,\n\t2980:  0x000092F2,\n\t2981:  0x00028BEA,\n\t2982:  0x00028ACB,\n\t2983:  0x00009289,\n\t2984:  0x0002801E,\n\t2985:  0x000289DC,\n\t2986:  0x00009467,\n\t2987:  0x00006DA5,\n\t2988:  0x00006F0B,\n\t2989:  0x000249EC,\n\t2990:  0x00006D67,\n\t2991:  0x00023F7F,\n\t2992:  0x00003D8F,\n\t2993:  0x00006E04,\n\t2994:  0x0002403C,\n\t2995:  0x00005A3D,\n\t2996:  0x00006E0A,\n\t2997:  0x00005847,\n\t2998:  0x00006D24,\n\t2999:  0x00007842,\n\t3000:  0x0000713B,\n\t3001:  0x0002431A,\n\t3002:  0x00024276,\n\t3003:  0x000070F1,\n\t3004:  0x00007250,\n\t3005:  0x00007287,\n\t3006:  0x00007294,\n\t3007:  0x0002478F,\n\t3008:  0x00024725,\n\t3009:  0x00005179,\n\t3010:  0x00024AA4,\n\t3011:  0x000205EB,\n\t3012:  0x0000747A,\n\t3013:  0x00023EF8,\n\t3014:  0x0002365F,\n\t3015:  0x00024A4A,\n\t3016:  0x00024917,\n\t3017:  0x00025FE1,\n\t3018:  0x00003F06,\n\t3019:  0x00003EB1,\n\t3020:  0x00024ADF,\n\t3021:  0x00028C23,\n\t3022:  0x00023F35,\n\t3023:  0x000060A7,\n\t3024:  0x00003EF3,\n\t3025:  0x000074CC,\n\t3026:  0x0000743C,\n\t3027:  0x00009387,\n\t3028:  0x00007437,\n\t3029:  0x0000449F,\n\t3030:  0x00026DEA,\n\t3031:  0x00004551,\n\t3032:  0x00007583,\n\t3033:  0x00003F63,\n\t3034:  0x00024CD9,\n\t3035:  0x00024D06,\n\t3036:  0x00003F58,\n\t3037:  0x00007555,\n\t3038:  0x00007673,\n\t3039:  0x0002A5C6,\n\t3040:  0x00003B19,\n\t3041:  0x00007468,\n\t3042:  0x00028ACC,\n\t3043:  0x000249AB,\n\t3044:  0x0002498E,\n\t3045:  0x00003AFB,\n\t3046:  0x00003DCD,\n\t3047:  0x00024A4E,\n\t3048:  0x00003EFF,\n\t3049:  0x000249C5,\n\t3050:  0x000248F3,\n\t3051:  0x000091FA,\n\t3052:  0x00005732,\n\t3053:  0x00009342,\n\t3054:  0x00028AE3,\n\t3055:  0x00021864,\n\t3056:  0x000050DF,\n\t3057:  0x00025221,\n\t3058:  0x000251E7,\n\t3059:  0x00007778,\n\t3060:  0x00023232,\n\t3061:  0x0000770E,\n\t3062:  0x0000770F,\n\t3063:  0x0000777B,\n\t3064:  0x00024697,\n\t3065:  0x00023781,\n\t3066:  0x00003A5E,\n\t3067:  0x000248F0,\n\t3068:  0x00007438,\n\t3069:  0x0000749B,\n\t3070:  0x00003EBF,\n\t3071:  0x00024ABA,\n\t3072:  0x00024AC7,\n\t3073:  0x000040C8,\n\t3074:  0x00024A96,\n\t3075:  0x000261AE,\n\t3076:  0x00009307,\n\t3077:  0x00025581,\n\t3078:  0x0000781E,\n\t3079:  0x0000788D,\n\t3080:  0x00007888,\n\t3081:  0x000078D2,\n\t3082:  0x000073D0,\n\t3083:  0x00007959,\n\t3084:  0x00027741,\n\t3085:  0x000256E3,\n\t3086:  0x0000410E,\n\t3087:  0x0000799B,\n\t3088:  0x00008496,\n\t3089:  0x000079A5,\n\t3090:  0x00006A2D,\n\t3091:  0x00023EFA,\n\t3092:  0x00007A3A,\n\t3093:  0x000079F4,\n\t3094:  0x0000416E,\n\t3095:  0x000216E6,\n\t3096:  0x00004132,\n\t3097:  0x00009235,\n\t3098:  0x000079F1,\n\t3099:  0x00020D4C,\n\t3100:  0x0002498C,\n\t3101:  0x00020299,\n\t3102:  0x00023DBA,\n\t3103:  0x0002176E,\n\t3104:  0x00003597,\n\t3105:  0x0000556B,\n\t3106:  0x00003570,\n\t3107:  0x000036AA,\n\t3108:  0x000201D4,\n\t3109:  0x00020C0D,\n\t3110:  0x00007AE2,\n\t3111:  0x00005A59,\n\t3112:  0x000226F5,\n\t3113:  0x00025AAF,\n\t3114:  0x00025A9C,\n\t3115:  0x00005A0D,\n\t3116:  0x0002025B,\n\t3117:  0x000078F0,\n\t3118:  0x00005A2A,\n\t3119:  0x00025BC6,\n\t3120:  0x00007AFE,\n\t3121:  0x000041F9,\n\t3122:  0x00007C5D,\n\t3123:  0x00007C6D,\n\t3124:  0x00004211,\n\t3125:  0x00025BB3,\n\t3126:  0x00025EBC,\n\t3127:  0x00025EA6,\n\t3128:  0x00007CCD,\n\t3129:  0x000249F9,\n\t3130:  0x000217B0,\n\t3131:  0x00007C8E,\n\t3132:  0x00007C7C,\n\t3133:  0x00007CAE,\n\t3134:  0x00006AB2,\n\t3135:  0x00007DDC,\n\t3136:  0x00007E07,\n\t3137:  0x00007DD3,\n\t3138:  0x00007F4E,\n\t3139:  0x00026261,\n\t3140:  0x0002615C,\n\t3141:  0x00027B48,\n\t3142:  0x00007D97,\n\t3143:  0x00025E82,\n\t3144:  0x0000426A,\n\t3145:  0x00026B75,\n\t3146:  0x00020916,\n\t3147:  0x000067D6,\n\t3148:  0x0002004E,\n\t3149:  0x000235CF,\n\t3150:  0x000057C4,\n\t3151:  0x00026412,\n\t3152:  0x000263F8,\n\t3153:  0x00024962,\n\t3154:  0x00007FDD,\n\t3155:  0x00007B27,\n\t3156:  0x0002082C,\n\t3157:  0x00025AE9,\n\t3158:  0x00025D43,\n\t3159:  0x00007B0C,\n\t3160:  0x00025E0E,\n\t3161:  0x000099E6,\n\t3162:  0x00008645,\n\t3163:  0x00009A63,\n\t3164:  0x00006A1C,\n\t3165:  0x0002343F,\n\t3166:  0x000039E2,\n\t3167:  0x000249F7,\n\t3168:  0x000265AD,\n\t3169:  0x00009A1F,\n\t3170:  0x000265A0,\n\t3171:  0x00008480,\n\t3172:  0x00027127,\n\t3173:  0x00026CD1,\n\t3174:  0x000044EA,\n\t3175:  0x00008137,\n\t3176:  0x00004402,\n\t3177:  0x000080C6,\n\t3178:  0x00008109,\n\t3179:  0x00008142,\n\t3180:  0x000267B4,\n\t3181:  0x000098C3,\n\t3182:  0x00026A42,\n\t3183:  0x00008262,\n\t3184:  0x00008265,\n\t3185:  0x00026A51,\n\t3186:  0x00008453,\n\t3187:  0x00026DA7,\n\t3188:  0x00008610,\n\t3189:  0x0002721B,\n\t3190:  0x00005A86,\n\t3191:  0x0000417F,\n\t3192:  0x00021840,\n\t3193:  0x00005B2B,\n\t3194:  0x000218A1,\n\t3195:  0x00005AE4,\n\t3196:  0x000218D8,\n\t3197:  0x000086A0,\n\t3198:  0x0002F9BC,\n\t3199:  0x00023D8F,\n\t3200:  0x0000882D,\n\t3201:  0x00027422,\n\t3202:  0x00005A02,\n\t3203:  0x0000886E,\n\t3204:  0x00004F45,\n\t3205:  0x00008887,\n\t3206:  0x000088BF,\n\t3207:  0x000088E6,\n\t3208:  0x00008965,\n\t3209:  0x0000894D,\n\t3210:  0x00025683,\n\t3211:  0x00008954,\n\t3212:  0x00027785,\n\t3213:  0x00027784,\n\t3214:  0x00028BF5,\n\t3215:  0x00028BD9,\n\t3216:  0x00028B9C,\n\t3217:  0x000289F9,\n\t3218:  0x00003EAD,\n\t3219:  0x000084A3,\n\t3220:  0x000046F5,\n\t3221:  0x000046CF,\n\t3222:  0x000037F2,\n\t3223:  0x00008A3D,\n\t3224:  0x00008A1C,\n\t3225:  0x00029448,\n\t3226:  0x00005F4D,\n\t3227:  0x0000922B,\n\t3228:  0x00024284,\n\t3229:  0x000065D4,\n\t3230:  0x00007129,\n\t3231:  0x000070C4,\n\t3232:  0x00021845,\n\t3233:  0x00009D6D,\n\t3234:  0x00008C9F,\n\t3235:  0x00008CE9,\n\t3236:  0x00027DDC,\n\t3237:  0x0000599A,\n\t3238:  0x000077C3,\n\t3239:  0x000059F0,\n\t3240:  0x0000436E,\n\t3241:  0x000036D4,\n\t3242:  0x00008E2A,\n\t3243:  0x00008EA7,\n\t3244:  0x00024C09,\n\t3245:  0x00008F30,\n\t3246:  0x00008F4A,\n\t3247:  0x000042F4,\n\t3248:  0x00006C58,\n\t3249:  0x00006FBB,\n\t3250:  0x00022321,\n\t3251:  0x0000489B,\n\t3252:  0x00006F79,\n\t3253:  0x00006E8B,\n\t3254:  0x000217DA,\n\t3255:  0x00009BE9,\n\t3256:  0x000036B5,\n\t3257:  0x0002492F,\n\t3258:  0x000090BB,\n\t3259:  0x00009097,\n\t3260:  0x00005571,\n\t3261:  0x00004906,\n\t3262:  0x000091BB,\n\t3263:  0x00009404,\n\t3264:  0x00028A4B,\n\t3265:  0x00004062,\n\t3266:  0x00028AFC,\n\t3267:  0x00009427,\n\t3268:  0x00028C1D,\n\t3269:  0x00028C3B,\n\t3270:  0x000084E5,\n\t3271:  0x00008A2B,\n\t3272:  0x00009599,\n\t3273:  0x000095A7,\n\t3274:  0x00009597,\n\t3275:  0x00009596,\n\t3276:  0x00028D34,\n\t3277:  0x00007445,\n\t3278:  0x00003EC2,\n\t3279:  0x000248FF,\n\t3280:  0x00024A42,\n\t3281:  0x000243EA,\n\t3282:  0x00003EE7,\n\t3283:  0x00023225,\n\t3284:  0x0000968F,\n\t3285:  0x00028EE7,\n\t3286:  0x00028E66,\n\t3287:  0x00028E65,\n\t3288:  0x00003ECC,\n\t3289:  0x000249ED,\n\t3290:  0x00024A78,\n\t3291:  0x00023FEE,\n\t3292:  0x00007412,\n\t3293:  0x0000746B,\n\t3294:  0x00003EFC,\n\t3295:  0x00009741,\n\t3296:  0x000290B0,\n\t3297:  0x00006847,\n\t3298:  0x00004A1D,\n\t3299:  0x00029093,\n\t3300:  0x000257DF,\n\t3301:  0x0000975D,\n\t3302:  0x00009368,\n\t3303:  0x00028989,\n\t3304:  0x00028C26,\n\t3305:  0x00028B2F,\n\t3306:  0x000263BE,\n\t3307:  0x000092BA,\n\t3308:  0x00005B11,\n\t3309:  0x00008B69,\n\t3310:  0x0000493C,\n\t3311:  0x000073F9,\n\t3312:  0x0002421B,\n\t3313:  0x0000979B,\n\t3314:  0x00009771,\n\t3315:  0x00009938,\n\t3316:  0x00020F26,\n\t3317:  0x00005DC1,\n\t3318:  0x00028BC5,\n\t3319:  0x00024AB2,\n\t3320:  0x0000981F,\n\t3321:  0x000294DA,\n\t3322:  0x000092F6,\n\t3323:  0x000295D7,\n\t3324:  0x000091E5,\n\t3325:  0x000044C0,\n\t3326:  0x00028B50,\n\t3327:  0x00024A67,\n\t3328:  0x00028B64,\n\t3329:  0x000098DC,\n\t3330:  0x00028A45,\n\t3331:  0x00003F00,\n\t3332:  0x0000922A,\n\t3333:  0x00004925,\n\t3334:  0x00008414,\n\t3335:  0x0000993B,\n\t3336:  0x0000994D,\n\t3337:  0x00027B06,\n\t3338:  0x00003DFD,\n\t3339:  0x0000999B,\n\t3340:  0x00004B6F,\n\t3341:  0x000099AA,\n\t3342:  0x00009A5C,\n\t3343:  0x00028B65,\n\t3344:  0x000258C8,\n\t3345:  0x00006A8F,\n\t3346:  0x00009A21,\n\t3347:  0x00005AFE,\n\t3348:  0x00009A2F,\n\t3349:  0x000298F1,\n\t3350:  0x00004B90,\n\t3351:  0x00029948,\n\t3352:  0x000099BC,\n\t3353:  0x00004BBD,\n\t3354:  0x00004B97,\n\t3355:  0x0000937D,\n\t3356:  0x00005872,\n\t3357:  0x00021302,\n\t3358:  0x00005822,\n\t3359:  0x000249B8,\n\t3360:  0x000214E8,\n\t3361:  0x00007844,\n\t3362:  0x0002271F,\n\t3363:  0x00023DB8,\n\t3364:  0x000068C5,\n\t3365:  0x00003D7D,\n\t3366:  0x00009458,\n\t3367:  0x00003927,\n\t3368:  0x00006150,\n\t3369:  0x00022781,\n\t3370:  0x0002296B,\n\t3371:  0x00006107,\n\t3372:  0x00009C4F,\n\t3373:  0x00009C53,\n\t3374:  0x00009C7B,\n\t3375:  0x00009C35,\n\t3376:  0x00009C10,\n\t3377:  0x00009B7F,\n\t3378:  0x00009BCF,\n\t3379:  0x00029E2D,\n\t3380:  0x00009B9F,\n\t3381:  0x0002A1F5,\n\t3382:  0x0002A0FE,\n\t3383:  0x00009D21,\n\t3384:  0x00004CAE,\n\t3385:  0x00024104,\n\t3386:  0x00009E18,\n\t3387:  0x00004CB0,\n\t3388:  0x00009D0C,\n\t3389:  0x0002A1B4,\n\t3390:  0x0002A0ED,\n\t3391:  0x0002A0F3,\n\t3392:  0x0002992F,\n\t3393:  0x00009DA5,\n\t3394:  0x000084BD,\n\t3395:  0x00026E12,\n\t3396:  0x00026FDF,\n\t3397:  0x00026B82,\n\t3398:  0x000085FC,\n\t3399:  0x00004533,\n\t3400:  0x00026DA4,\n\t3401:  0x00026E84,\n\t3402:  0x00026DF0,\n\t3403:  0x00008420,\n\t3404:  0x000085EE,\n\t3405:  0x00026E00,\n\t3406:  0x000237D7,\n\t3407:  0x00026064,\n\t3408:  0x000079E2,\n\t3409:  0x0002359C,\n\t3410:  0x00023640,\n\t3411:  0x0000492D,\n\t3412:  0x000249DE,\n\t3413:  0x00003D62,\n\t3414:  0x000093DB,\n\t3415:  0x000092BE,\n\t3416:  0x00009348,\n\t3417:  0x000202BF,\n\t3418:  0x000078B9,\n\t3419:  0x00009277,\n\t3420:  0x0000944D,\n\t3421:  0x00004FE4,\n\t3422:  0x00003440,\n\t3423:  0x00009064,\n\t3424:  0x0002555D,\n\t3425:  0x0000783D,\n\t3426:  0x00007854,\n\t3427:  0x000078B6,\n\t3428:  0x0000784B,\n\t3429:  0x00021757,\n\t3430:  0x000231C9,\n\t3431:  0x00024941,\n\t3432:  0x0000369A,\n\t3433:  0x00004F72,\n\t3434:  0x00006FDA,\n\t3435:  0x00006FD9,\n\t3436:  0x0000701E,\n\t3437:  0x0000701E,\n\t3438:  0x00005414,\n\t3439:  0x000241B5,\n\t3440:  0x000057BB,\n\t3441:  0x000058F3,\n\t3442:  0x0000578A,\n\t3443:  0x00009D16,\n\t3444:  0x000057D7,\n\t3445:  0x00007134,\n\t3446:  0x000034AF,\n\t3447:  0x000241AC,\n\t3448:  0x000071EB,\n\t3449:  0x00026C40,\n\t3450:  0x00024F97,\n\t3451:  0x00005B28,\n\t3452:  0x000217B5,\n\t3453:  0x00028A49,\n\t3454:  0x0000610C,\n\t3455:  0x00005ACE,\n\t3456:  0x00005A0B,\n\t3457:  0x000042BC,\n\t3458:  0x00024488,\n\t3459:  0x0000372C,\n\t3460:  0x00004B7B,\n\t3461:  0x000289FC,\n\t3462:  0x000093BB,\n\t3463:  0x000093B8,\n\t3464:  0x000218D6,\n\t3465:  0x00020F1D,\n\t3466:  0x00008472,\n\t3467:  0x00026CC0,\n\t3468:  0x00021413,\n\t3469:  0x000242FA,\n\t3470:  0x00022C26,\n\t3471:  0x000243C1,\n\t3472:  0x00005994,\n\t3473:  0x00023DB7,\n\t3474:  0x00026741,\n\t3475:  0x00007DA8,\n\t3476:  0x0002615B,\n\t3477:  0x000260A4,\n\t3478:  0x000249B9,\n\t3479:  0x0002498B,\n\t3480:  0x000289FA,\n\t3481:  0x000092E5,\n\t3482:  0x000073E2,\n\t3483:  0x00003EE9,\n\t3484:  0x000074B4,\n\t3485:  0x00028B63,\n\t3486:  0x0002189F,\n\t3487:  0x00003EE1,\n\t3488:  0x00024AB3,\n\t3489:  0x00006AD8,\n\t3490:  0x000073F3,\n\t3491:  0x000073FB,\n\t3492:  0x00003ED6,\n\t3493:  0x00024A3E,\n\t3494:  0x00024A94,\n\t3495:  0x000217D9,\n\t3496:  0x00024A66,\n\t3497:  0x000203A7,\n\t3498:  0x00021424,\n\t3499:  0x000249E5,\n\t3500:  0x00007448,\n\t3501:  0x00024916,\n\t3502:  0x000070A5,\n\t3503:  0x00024976,\n\t3504:  0x00009284,\n\t3505:  0x000073E6,\n\t3506:  0x0000935F,\n\t3507:  0x000204FE,\n\t3508:  0x00009331,\n\t3509:  0x00028ACE,\n\t3510:  0x00028A16,\n\t3511:  0x00009386,\n\t3512:  0x00028BE7,\n\t3513:  0x000255D5,\n\t3514:  0x00004935,\n\t3515:  0x00028A82,\n\t3516:  0x0000716B,\n\t3517:  0x00024943,\n\t3518:  0x00020CFF,\n\t3519:  0x000056A4,\n\t3520:  0x0002061A,\n\t3521:  0x00020BEB,\n\t3522:  0x00020CB8,\n\t3523:  0x00005502,\n\t3524:  0x000079C4,\n\t3525:  0x000217FA,\n\t3526:  0x00007DFE,\n\t3527:  0x000216C2,\n\t3528:  0x00024A50,\n\t3529:  0x00021852,\n\t3530:  0x0000452E,\n\t3531:  0x00009401,\n\t3532:  0x0000370A,\n\t3533:  0x00028AC0,\n\t3534:  0x000249AD,\n\t3535:  0x000059B0,\n\t3536:  0x000218BF,\n\t3537:  0x00021883,\n\t3538:  0x00027484,\n\t3539:  0x00005AA1,\n\t3540:  0x000036E2,\n\t3541:  0x00023D5B,\n\t3542:  0x000036B0,\n\t3543:  0x0000925F,\n\t3544:  0x00005A79,\n\t3545:  0x00028A81,\n\t3546:  0x00021862,\n\t3547:  0x00009374,\n\t3548:  0x00003CCD,\n\t3549:  0x00020AB4,\n\t3550:  0x00004A96,\n\t3551:  0x0000398A,\n\t3552:  0x000050F4,\n\t3553:  0x00003D69,\n\t3554:  0x00003D4C,\n\t3555:  0x0002139C,\n\t3556:  0x00007175,\n\t3557:  0x000042FB,\n\t3558:  0x00028218,\n\t3559:  0x00006E0F,\n\t3560:  0x000290E4,\n\t3561:  0x000044EB,\n\t3562:  0x00006D57,\n\t3563:  0x00027E4F,\n\t3564:  0x00007067,\n\t3565:  0x00006CAF,\n\t3566:  0x00003CD6,\n\t3567:  0x00023FED,\n\t3568:  0x00023E2D,\n\t3569:  0x00006E02,\n\t3570:  0x00006F0C,\n\t3571:  0x00003D6F,\n\t3572:  0x000203F5,\n\t3573:  0x00007551,\n\t3574:  0x000036BC,\n\t3575:  0x000034C8,\n\t3576:  0x00004680,\n\t3577:  0x00003EDA,\n\t3578:  0x00004871,\n\t3579:  0x000059C4,\n\t3580:  0x0000926E,\n\t3581:  0x0000493E,\n\t3582:  0x00008F41,\n\t3583:  0x00028C1C,\n\t3584:  0x00026BC0,\n\t3585:  0x00005812,\n\t3586:  0x000057C8,\n\t3587:  0x000036D6,\n\t3588:  0x00021452,\n\t3589:  0x000070FE,\n\t3590:  0x00024362,\n\t3591:  0x00024A71,\n\t3592:  0x00022FE3,\n\t3593:  0x000212B0,\n\t3594:  0x000223BD,\n\t3595:  0x000068B9,\n\t3596:  0x00006967,\n\t3597:  0x00021398,\n\t3598:  0x000234E5,\n\t3599:  0x00027BF4,\n\t3600:  0x000236DF,\n\t3601:  0x00028A83,\n\t3602:  0x000237D6,\n\t3603:  0x000233FA,\n\t3604:  0x00024C9F,\n\t3605:  0x00006A1A,\n\t3606:  0x000236AD,\n\t3607:  0x00026CB7,\n\t3608:  0x0000843E,\n\t3609:  0x000044DF,\n\t3610:  0x000044CE,\n\t3611:  0x00026D26,\n\t3612:  0x00026D51,\n\t3613:  0x00026C82,\n\t3614:  0x00026FDE,\n\t3615:  0x00006F17,\n\t3616:  0x00027109,\n\t3617:  0x0000833D,\n\t3618:  0x0002173A,\n\t3619:  0x000083ED,\n\t3620:  0x00026C80,\n\t3621:  0x00027053,\n\t3622:  0x000217DB,\n\t3623:  0x00005989,\n\t3624:  0x00005A82,\n\t3625:  0x000217B3,\n\t3626:  0x00005A61,\n\t3627:  0x00005A71,\n\t3628:  0x00021905,\n\t3629:  0x000241FC,\n\t3630:  0x0000372D,\n\t3631:  0x000059EF,\n\t3632:  0x0002173C,\n\t3633:  0x000036C7,\n\t3634:  0x0000718E,\n\t3635:  0x00009390,\n\t3636:  0x0000669A,\n\t3637:  0x000242A5,\n\t3638:  0x00005A6E,\n\t3639:  0x00005A2B,\n\t3640:  0x00024293,\n\t3641:  0x00006A2B,\n\t3642:  0x00023EF9,\n\t3643:  0x00027736,\n\t3644:  0x0002445B,\n\t3645:  0x000242CA,\n\t3646:  0x0000711D,\n\t3647:  0x00024259,\n\t3648:  0x000289E1,\n\t3649:  0x00004FB0,\n\t3650:  0x00026D28,\n\t3651:  0x00005CC2,\n\t3652:  0x000244CE,\n\t3653:  0x00027E4D,\n\t3654:  0x000243BD,\n\t3655:  0x00006A0C,\n\t3656:  0x00024256,\n\t3657:  0x00021304,\n\t3658:  0x000070A6,\n\t3659:  0x00007133,\n\t3660:  0x000243E9,\n\t3661:  0x00003DA5,\n\t3662:  0x00006CDF,\n\t3663:  0x0002F825,\n\t3664:  0x00024A4F,\n\t3665:  0x00007E65,\n\t3666:  0x000059EB,\n\t3667:  0x00005D2F,\n\t3668:  0x00003DF3,\n\t3669:  0x00005F5C,\n\t3670:  0x00024A5D,\n\t3671:  0x000217DF,\n\t3672:  0x00007DA4,\n\t3673:  0x00008426,\n\t3674:  0x00005485,\n\t3675:  0x00023AFA,\n\t3676:  0x00023300,\n\t3677:  0x00020214,\n\t3678:  0x0000577E,\n\t3679:  0x000208D5,\n\t3680:  0x00020619,\n\t3681:  0x00003FE5,\n\t3682:  0x00021F9E,\n\t3683:  0x0002A2B6,\n\t3684:  0x00007003,\n\t3685:  0x0002915B,\n\t3686:  0x00005D70,\n\t3687:  0x0000738F,\n\t3688:  0x00007CD3,\n\t3689:  0x00028A59,\n\t3690:  0x00029420,\n\t3691:  0x00004FC8,\n\t3692:  0x00007FE7,\n\t3693:  0x000072CD,\n\t3694:  0x00007310,\n\t3695:  0x00027AF4,\n\t3696:  0x00007338,\n\t3697:  0x00007339,\n\t3698:  0x000256F6,\n\t3699:  0x00007341,\n\t3700:  0x00007348,\n\t3701:  0x00003EA9,\n\t3702:  0x00027B18,\n\t3703:  0x0000906C,\n\t3704:  0x000071F5,\n\t3705:  0x000248F2,\n\t3706:  0x000073E1,\n\t3707:  0x000081F6,\n\t3708:  0x00003ECA,\n\t3709:  0x0000770C,\n\t3710:  0x00003ED1,\n\t3711:  0x00006CA2,\n\t3712:  0x000056FD,\n\t3713:  0x00007419,\n\t3714:  0x0000741E,\n\t3715:  0x0000741F,\n\t3716:  0x00003EE2,\n\t3717:  0x00003EF0,\n\t3718:  0x00003EF4,\n\t3719:  0x00003EFA,\n\t3720:  0x000074D3,\n\t3721:  0x00003F0E,\n\t3722:  0x00003F53,\n\t3723:  0x00007542,\n\t3724:  0x0000756D,\n\t3725:  0x00007572,\n\t3726:  0x0000758D,\n\t3727:  0x00003F7C,\n\t3728:  0x000075C8,\n\t3729:  0x000075DC,\n\t3730:  0x00003FC0,\n\t3731:  0x0000764D,\n\t3732:  0x00003FD7,\n\t3733:  0x00007674,\n\t3734:  0x00003FDC,\n\t3735:  0x0000767A,\n\t3736:  0x00024F5C,\n\t3737:  0x00007188,\n\t3738:  0x00005623,\n\t3739:  0x00008980,\n\t3740:  0x00005869,\n\t3741:  0x0000401D,\n\t3742:  0x00007743,\n\t3743:  0x00004039,\n\t3744:  0x00006761,\n\t3745:  0x00004045,\n\t3746:  0x000035DB,\n\t3747:  0x00007798,\n\t3748:  0x0000406A,\n\t3749:  0x0000406F,\n\t3750:  0x00005C5E,\n\t3751:  0x000077BE,\n\t3752:  0x000077CB,\n\t3753:  0x000058F2,\n\t3754:  0x00007818,\n\t3755:  0x000070B9,\n\t3756:  0x0000781C,\n\t3757:  0x000040A8,\n\t3758:  0x00007839,\n\t3759:  0x00007847,\n\t3760:  0x00007851,\n\t3761:  0x00007866,\n\t3762:  0x00008448,\n\t3763:  0x00025535,\n\t3764:  0x00007933,\n\t3765:  0x00006803,\n\t3766:  0x00007932,\n\t3767:  0x00004103,\n\t3768:  0x00004109,\n\t3769:  0x00007991,\n\t3770:  0x00007999,\n\t3771:  0x00008FBB,\n\t3772:  0x00007A06,\n\t3773:  0x00008FBC,\n\t3774:  0x00004167,\n\t3775:  0x00007A91,\n\t3776:  0x000041B2,\n\t3777:  0x00007ABC,\n\t3778:  0x00008279,\n\t3779:  0x000041C4,\n\t3780:  0x00007ACF,\n\t3781:  0x00007ADB,\n\t3782:  0x000041CF,\n\t3783:  0x00004E21,\n\t3784:  0x00007B62,\n\t3785:  0x00007B6C,\n\t3786:  0x00007B7B,\n\t3787:  0x00007C12,\n\t3788:  0x00007C1B,\n\t3789:  0x00004260,\n\t3790:  0x0000427A,\n\t3791:  0x00007C7B,\n\t3792:  0x00007C9C,\n\t3793:  0x0000428C,\n\t3794:  0x00007CB8,\n\t3795:  0x00004294,\n\t3796:  0x00007CED,\n\t3797:  0x00008F93,\n\t3798:  0x000070C0,\n\t3799:  0x00020CCF,\n\t3800:  0x00007DCF,\n\t3801:  0x00007DD4,\n\t3802:  0x00007DD0,\n\t3803:  0x00007DFD,\n\t3804:  0x00007FAE,\n\t3805:  0x00007FB4,\n\t3806:  0x0000729F,\n\t3807:  0x00004397,\n\t3808:  0x00008020,\n\t3809:  0x00008025,\n\t3810:  0x00007B39,\n\t3811:  0x0000802E,\n\t3812:  0x00008031,\n\t3813:  0x00008054,\n\t3814:  0x00003DCC,\n\t3815:  0x000057B4,\n\t3816:  0x000070A0,\n\t3817:  0x000080B7,\n\t3818:  0x000080E9,\n\t3819:  0x000043ED,\n\t3820:  0x0000810C,\n\t3821:  0x0000732A,\n\t3822:  0x0000810E,\n\t3823:  0x00008112,\n\t3824:  0x00007560,\n\t3825:  0x00008114,\n\t3826:  0x00004401,\n\t3827:  0x00003B39,\n\t3828:  0x00008156,\n\t3829:  0x00008159,\n\t3830:  0x0000815A,\n\t3831:  0x00004413,\n\t3832:  0x0000583A,\n\t3833:  0x0000817C,\n\t3834:  0x00008184,\n\t3835:  0x00004425,\n\t3836:  0x00008193,\n\t3837:  0x0000442D,\n\t3838:  0x000081A5,\n\t3839:  0x000057EF,\n\t3840:  0x000081C1,\n\t3841:  0x000081E4,\n\t3842:  0x00008254,\n\t3843:  0x0000448F,\n\t3844:  0x000082A6,\n\t3845:  0x00008276,\n\t3846:  0x000082CA,\n\t3847:  0x000082D8,\n\t3848:  0x000082FF,\n\t3849:  0x000044B0,\n\t3850:  0x00008357,\n\t3851:  0x00009669,\n\t3852:  0x0000698A,\n\t3853:  0x00008405,\n\t3854:  0x000070F5,\n\t3855:  0x00008464,\n\t3856:  0x000060E3,\n\t3857:  0x00008488,\n\t3858:  0x00004504,\n\t3859:  0x000084BE,\n\t3860:  0x000084E1,\n\t3861:  0x000084F8,\n\t3862:  0x00008510,\n\t3863:  0x00008538,\n\t3864:  0x00008552,\n\t3865:  0x0000453B,\n\t3866:  0x0000856F,\n\t3867:  0x00008570,\n\t3868:  0x000085E0,\n\t3869:  0x00004577,\n\t3870:  0x00008672,\n\t3871:  0x00008692,\n\t3872:  0x000086B2,\n\t3873:  0x000086EF,\n\t3874:  0x00009645,\n\t3875:  0x0000878B,\n\t3876:  0x00004606,\n\t3877:  0x00004617,\n\t3878:  0x000088AE,\n\t3879:  0x000088FF,\n\t3880:  0x00008924,\n\t3881:  0x00008947,\n\t3882:  0x00008991,\n\t3883:  0x00027967,\n\t3884:  0x00008A29,\n\t3885:  0x00008A38,\n\t3886:  0x00008A94,\n\t3887:  0x00008AB4,\n\t3888:  0x00008C51,\n\t3889:  0x00008CD4,\n\t3890:  0x00008CF2,\n\t3891:  0x00008D1C,\n\t3892:  0x00004798,\n\t3893:  0x0000585F,\n\t3894:  0x00008DC3,\n\t3895:  0x000047ED,\n\t3896:  0x00004EEE,\n\t3897:  0x00008E3A,\n\t3898:  0x000055D8,\n\t3899:  0x00005754,\n\t3900:  0x00008E71,\n\t3901:  0x000055F5,\n\t3902:  0x00008EB0,\n\t3903:  0x00004837,\n\t3904:  0x00008ECE,\n\t3905:  0x00008EE2,\n\t3906:  0x00008EE4,\n\t3907:  0x00008EED,\n\t3908:  0x00008EF2,\n\t3909:  0x00008FB7,\n\t3910:  0x00008FC1,\n\t3911:  0x00008FCA,\n\t3912:  0x00008FCC,\n\t3913:  0x00009033,\n\t3914:  0x000099C4,\n\t3915:  0x000048AD,\n\t3916:  0x000098E0,\n\t3917:  0x00009213,\n\t3918:  0x0000491E,\n\t3919:  0x00009228,\n\t3920:  0x00009258,\n\t3921:  0x0000926B,\n\t3922:  0x000092B1,\n\t3923:  0x000092AE,\n\t3924:  0x000092BF,\n\t3925:  0x000092E3,\n\t3926:  0x000092EB,\n\t3927:  0x000092F3,\n\t3928:  0x000092F4,\n\t3929:  0x000092FD,\n\t3930:  0x00009343,\n\t3931:  0x00009384,\n\t3932:  0x000093AD,\n\t3933:  0x00004945,\n\t3934:  0x00004951,\n\t3935:  0x00009EBF,\n\t3936:  0x00009417,\n\t3937:  0x00005301,\n\t3938:  0x0000941D,\n\t3939:  0x0000942D,\n\t3940:  0x0000943E,\n\t3941:  0x0000496A,\n\t3942:  0x00009454,\n\t3943:  0x00009479,\n\t3944:  0x0000952D,\n\t3945:  0x000095A2,\n\t3946:  0x000049A7,\n\t3947:  0x000095F4,\n\t3948:  0x00009633,\n\t3949:  0x000049E5,\n\t3950:  0x000067A0,\n\t3951:  0x00004A24,\n\t3952:  0x00009740,\n\t3953:  0x00004A35,\n\t3954:  0x000097B2,\n\t3955:  0x000097C2,\n\t3956:  0x00005654,\n\t3957:  0x00004AE4,\n\t3958:  0x000060E8,\n\t3959:  0x000098B9,\n\t3960:  0x00004B19,\n\t3961:  0x000098F1,\n\t3962:  0x00005844,\n\t3963:  0x0000990E,\n\t3964:  0x00009919,\n\t3965:  0x000051B4,\n\t3966:  0x0000991C,\n\t3967:  0x00009937,\n\t3968:  0x00009942,\n\t3969:  0x0000995D,\n\t3970:  0x00009962,\n\t3971:  0x00004B70,\n\t3972:  0x000099C5,\n\t3973:  0x00004B9D,\n\t3974:  0x00009A3C,\n\t3975:  0x00009B0F,\n\t3976:  0x00007A83,\n\t3977:  0x00009B69,\n\t3978:  0x00009B81,\n\t3979:  0x00009BDD,\n\t3980:  0x00009BF1,\n\t3981:  0x00009BF4,\n\t3982:  0x00004C6D,\n\t3983:  0x00009C20,\n\t3984:  0x0000376F,\n\t3985:  0x00021BC2,\n\t3986:  0x00009D49,\n\t3987:  0x00009C3A,\n\t3988:  0x00009EFE,\n\t3989:  0x00005650,\n\t3990:  0x00009D93,\n\t3991:  0x00009DBD,\n\t3992:  0x00009DC0,\n\t3993:  0x00009DFC,\n\t3994:  0x000094F6,\n\t3995:  0x00008FB6,\n\t3996:  0x00009E7B,\n\t3997:  0x00009EAC,\n\t3998:  0x00009EB1,\n\t3999:  0x00009EBD,\n\t4000:  0x00009EC6,\n\t4001:  0x000094DC,\n\t4002:  0x00009EE2,\n\t4003:  0x00009EF1,\n\t4004:  0x00009EF8,\n\t4005:  0x00007AC8,\n\t4006:  0x00009F44,\n\t4007:  0x00020094,\n\t4008:  0x000202B7,\n\t4009:  0x000203A0,\n\t4010:  0x0000691A,\n\t4011:  0x000094C3,\n\t4012:  0x000059AC,\n\t4013:  0x000204D7,\n\t4014:  0x00005840,\n\t4015:  0x000094C1,\n\t4016:  0x000037B9,\n\t4017:  0x000205D5,\n\t4018:  0x00020615,\n\t4019:  0x00020676,\n\t4020:  0x000216BA,\n\t4021:  0x00005757,\n\t4022:  0x00007173,\n\t4023:  0x00020AC2,\n\t4024:  0x00020ACD,\n\t4025:  0x00020BBF,\n\t4026:  0x0000546A,\n\t4027:  0x0002F83B,\n\t4028:  0x00020BCB,\n\t4029:  0x0000549E,\n\t4030:  0x00020BFB,\n\t4031:  0x00020C3B,\n\t4032:  0x00020C53,\n\t4033:  0x00020C65,\n\t4034:  0x00020C7C,\n\t4035:  0x000060E7,\n\t4036:  0x00020C8D,\n\t4037:  0x0000567A,\n\t4038:  0x00020CB5,\n\t4039:  0x00020CDD,\n\t4040:  0x00020CED,\n\t4041:  0x00020D6F,\n\t4042:  0x00020DB2,\n\t4043:  0x00020DC8,\n\t4044:  0x00006955,\n\t4045:  0x00009C2F,\n\t4046:  0x000087A5,\n\t4047:  0x00020E04,\n\t4048:  0x00020E0E,\n\t4049:  0x00020ED7,\n\t4050:  0x00020F90,\n\t4051:  0x00020F2D,\n\t4052:  0x00020E73,\n\t4053:  0x00005C20,\n\t4054:  0x00020FBC,\n\t4055:  0x00005E0B,\n\t4056:  0x0002105C,\n\t4057:  0x0002104F,\n\t4058:  0x00021076,\n\t4059:  0x0000671E,\n\t4060:  0x0002107B,\n\t4061:  0x00021088,\n\t4062:  0x00021096,\n\t4063:  0x00003647,\n\t4064:  0x000210BF,\n\t4065:  0x000210D3,\n\t4066:  0x0002112F,\n\t4067:  0x0002113B,\n\t4068:  0x00005364,\n\t4069:  0x000084AD,\n\t4070:  0x000212E3,\n\t4071:  0x00021375,\n\t4072:  0x00021336,\n\t4073:  0x00008B81,\n\t4074:  0x00021577,\n\t4075:  0x00021619,\n\t4076:  0x000217C3,\n\t4077:  0x000217C7,\n\t4078:  0x00004E78,\n\t4079:  0x000070BB,\n\t4080:  0x0002182D,\n\t4081:  0x0002196A,\n\t4082:  0x00021A2D,\n\t4083:  0x00021A45,\n\t4084:  0x00021C2A,\n\t4085:  0x00021C70,\n\t4086:  0x00021CAC,\n\t4087:  0x00021EC8,\n\t4088:  0x000062C3,\n\t4089:  0x00021ED5,\n\t4090:  0x00021F15,\n\t4091:  0x00007198,\n\t4092:  0x00006855,\n\t4093:  0x00022045,\n\t4094:  0x000069E9,\n\t4095:  0x000036C8,\n\t4096:  0x0002227C,\n\t4097:  0x000223D7,\n\t4098:  0x000223FA,\n\t4099:  0x0002272A,\n\t4100:  0x00022871,\n\t4101:  0x0002294F,\n\t4102:  0x000082FD,\n\t4103:  0x00022967,\n\t4104:  0x00022993,\n\t4105:  0x00022AD5,\n\t4106:  0x000089A5,\n\t4107:  0x00022AE8,\n\t4108:  0x00008FA0,\n\t4109:  0x00022B0E,\n\t4110:  0x000097B8,\n\t4111:  0x00022B3F,\n\t4112:  0x00009847,\n\t4113:  0x00009ABD,\n\t4114:  0x00022C4C,\n\t4116:  0x00022C88,\n\t4117:  0x00022CB7,\n\t4118:  0x00025BE8,\n\t4119:  0x00022D08,\n\t4120:  0x00022D12,\n\t4121:  0x00022DB7,\n\t4122:  0x00022D95,\n\t4123:  0x00022E42,\n\t4124:  0x00022F74,\n\t4125:  0x00022FCC,\n\t4126:  0x00023033,\n\t4127:  0x00023066,\n\t4128:  0x0002331F,\n\t4129:  0x000233DE,\n\t4130:  0x00005FB1,\n\t4131:  0x00006648,\n\t4132:  0x000066BF,\n\t4133:  0x00027A79,\n\t4134:  0x00023567,\n\t4135:  0x000235F3,\n\t4136:  0x00007201,\n\t4137:  0x000249BA,\n\t4138:  0x000077D7,\n\t4139:  0x0002361A,\n\t4140:  0x00023716,\n\t4141:  0x00007E87,\n\t4142:  0x00020346,\n\t4143:  0x000058B5,\n\t4144:  0x0000670E,\n\t4145:  0x00006918,\n\t4146:  0x00023AA7,\n\t4147:  0x00027657,\n\t4148:  0x00025FE2,\n\t4149:  0x00023E11,\n\t4150:  0x00023EB9,\n\t4151:  0x000275FE,\n\t4152:  0x0002209A,\n\t4153:  0x000048D0,\n\t4154:  0x00004AB8,\n\t4155:  0x00024119,\n\t4156:  0x00028A9A,\n\t4157:  0x000242EE,\n\t4158:  0x0002430D,\n\t4159:  0x0002403B,\n\t4160:  0x00024334,\n\t4161:  0x00024396,\n\t4162:  0x00024A45,\n\t4163:  0x000205CA,\n\t4164:  0x000051D2,\n\t4165:  0x00020611,\n\t4166:  0x0000599F,\n\t4167:  0x00021EA8,\n\t4168:  0x00003BBE,\n\t4169:  0x00023CFF,\n\t4170:  0x00024404,\n\t4171:  0x000244D6,\n\t4172:  0x00005788,\n\t4173:  0x00024674,\n\t4174:  0x0000399B,\n\t4175:  0x0002472F,\n\t4176:  0x000285E8,\n\t4177:  0x000299C9,\n\t4178:  0x00003762,\n\t4179:  0x000221C3,\n\t4180:  0x00008B5E,\n\t4181:  0x00028B4E,\n\t4182:  0x000099D6,\n\t4183:  0x00024812,\n\t4184:  0x000248FB,\n\t4185:  0x00024A15,\n\t4186:  0x00007209,\n\t4187:  0x00024AC0,\n\t4188:  0x00020C78,\n\t4189:  0x00005965,\n\t4190:  0x00024EA5,\n\t4191:  0x00024F86,\n\t4192:  0x00020779,\n\t4193:  0x00008EDA,\n\t4194:  0x0002502C,\n\t4195:  0x0000528F,\n\t4196:  0x0000573F,\n\t4197:  0x00007171,\n\t4198:  0x00025299,\n\t4199:  0x00025419,\n\t4200:  0x00023F4A,\n\t4201:  0x00024AA7,\n\t4202:  0x000055BC,\n\t4203:  0x00025446,\n\t4204:  0x0002546E,\n\t4205:  0x00026B52,\n\t4206:  0x000091D4,\n\t4207:  0x00003473,\n\t4208:  0x0002553F,\n\t4209:  0x00027632,\n\t4210:  0x0002555E,\n\t4211:  0x00004718,\n\t4212:  0x00025562,\n\t4213:  0x00025566,\n\t4214:  0x000257C7,\n\t4215:  0x0002493F,\n\t4216:  0x0002585D,\n\t4217:  0x00005066,\n\t4218:  0x000034FB,\n\t4219:  0x000233CC,\n\t4220:  0x000060DE,\n\t4221:  0x00025903,\n\t4222:  0x0000477C,\n\t4223:  0x00028948,\n\t4224:  0x00025AAE,\n\t4225:  0x00025B89,\n\t4226:  0x00025C06,\n\t4227:  0x00021D90,\n\t4228:  0x000057A1,\n\t4229:  0x00007151,\n\t4230:  0x00006FB6,\n\t4231:  0x00026102,\n\t4232:  0x00027C12,\n\t4233:  0x00009056,\n\t4234:  0x000261B2,\n\t4235:  0x00024F9A,\n\t4236:  0x00008B62,\n\t4237:  0x00026402,\n\t4238:  0x0002644A,\n\t4239:  0x00005D5B,\n\t4240:  0x00026BF7,\n\t4241:  0x00008F36,\n\t4242:  0x00026484,\n\t4243:  0x0002191C,\n\t4244:  0x00008AEA,\n\t4245:  0x000249F6,\n\t4246:  0x00026488,\n\t4247:  0x00023FEF,\n\t4248:  0x00026512,\n\t4249:  0x00004BC0,\n\t4250:  0x000265BF,\n\t4251:  0x000266B5,\n\t4252:  0x0002271B,\n\t4253:  0x00009465,\n\t4254:  0x000257E1,\n\t4255:  0x00006195,\n\t4256:  0x00005A27,\n\t4257:  0x0002F8CD,\n\t4258:  0x00004FBB,\n\t4259:  0x000056B9,\n\t4260:  0x00024521,\n\t4261:  0x000266FC,\n\t4262:  0x00004E6A,\n\t4263:  0x00024934,\n\t4264:  0x00009656,\n\t4265:  0x00006D8F,\n\t4266:  0x00026CBD,\n\t4267:  0x00003618,\n\t4268:  0x00008977,\n\t4269:  0x00026799,\n\t4270:  0x0002686E,\n\t4271:  0x00026411,\n\t4272:  0x0002685E,\n\t4273:  0x000071DF,\n\t4274:  0x000268C7,\n\t4275:  0x00007B42,\n\t4276:  0x000290C0,\n\t4277:  0x00020A11,\n\t4278:  0x00026926,\n\t4279:  0x00009104,\n\t4280:  0x00026939,\n\t4281:  0x00007A45,\n\t4282:  0x00009DF0,\n\t4283:  0x000269FA,\n\t4284:  0x00009A26,\n\t4285:  0x00026A2D,\n\t4286:  0x0000365F,\n\t4287:  0x00026469,\n\t4288:  0x00020021,\n\t4289:  0x00007983,\n\t4290:  0x00026A34,\n\t4291:  0x00026B5B,\n\t4292:  0x00005D2C,\n\t4293:  0x00023519,\n\t4294:  0x000083CF,\n\t4295:  0x00026B9D,\n\t4296:  0x000046D0,\n\t4297:  0x00026CA4,\n\t4298:  0x0000753B,\n\t4299:  0x00008865,\n\t4300:  0x00026DAE,\n\t4301:  0x000058B6,\n\t4302:  0x0000371C,\n\t4303:  0x0002258D,\n\t4304:  0x0002704B,\n\t4305:  0x000271CD,\n\t4306:  0x00003C54,\n\t4307:  0x00027280,\n\t4308:  0x00027285,\n\t4309:  0x00009281,\n\t4310:  0x0002217A,\n\t4311:  0x0002728B,\n\t4312:  0x00009330,\n\t4313:  0x000272E6,\n\t4314:  0x000249D0,\n\t4315:  0x00006C39,\n\t4316:  0x0000949F,\n\t4317:  0x00027450,\n\t4318:  0x00020EF8,\n\t4319:  0x00008827,\n\t4320:  0x000088F5,\n\t4321:  0x00022926,\n\t4322:  0x00028473,\n\t4323:  0x000217B1,\n\t4324:  0x00006EB8,\n\t4325:  0x00024A2A,\n\t4326:  0x00021820,\n\t4327:  0x000039A4,\n\t4328:  0x000036B9,\n\t4329:  0x00005C10,\n\t4330:  0x000079E3,\n\t4331:  0x0000453F,\n\t4332:  0x000066B6,\n\t4333:  0x00029CAD,\n\t4334:  0x000298A4,\n\t4335:  0x00008943,\n\t4336:  0x000277CC,\n\t4337:  0x00027858,\n\t4338:  0x000056D6,\n\t4339:  0x000040DF,\n\t4340:  0x0002160A,\n\t4341:  0x000039A1,\n\t4342:  0x0002372F,\n\t4343:  0x000280E8,\n\t4344:  0x000213C5,\n\t4345:  0x000071AD,\n\t4346:  0x00008366,\n\t4347:  0x000279DD,\n\t4348:  0x000291A8,\n\t4349:  0x00005A67,\n\t4350:  0x00004CB7,\n\t4351:  0x000270AF,\n\t4352:  0x000289AB,\n\t4353:  0x000279FD,\n\t4354:  0x00027A0A,\n\t4355:  0x00027B0B,\n\t4356:  0x00027D66,\n\t4357:  0x0002417A,\n\t4358:  0x00007B43,\n\t4359:  0x0000797E,\n\t4360:  0x00028009,\n\t4361:  0x00006FB5,\n\t4362:  0x0002A2DF,\n\t4363:  0x00006A03,\n\t4364:  0x00028318,\n\t4365:  0x000053A2,\n\t4366:  0x00026E07,\n\t4367:  0x000093BF,\n\t4368:  0x00006836,\n\t4369:  0x0000975D,\n\t4370:  0x0002816F,\n\t4371:  0x00028023,\n\t4372:  0x000269B5,\n\t4373:  0x000213ED,\n\t4374:  0x0002322F,\n\t4375:  0x00028048,\n\t4376:  0x00005D85,\n\t4377:  0x00028C30,\n\t4378:  0x00028083,\n\t4379:  0x00005715,\n\t4380:  0x00009823,\n\t4381:  0x00028949,\n\t4382:  0x00005DAB,\n\t4383:  0x00024988,\n\t4384:  0x000065BE,\n\t4385:  0x000069D5,\n\t4386:  0x000053D2,\n\t4387:  0x00024AA5,\n\t4388:  0x00023F81,\n\t4389:  0x00003C11,\n\t4390:  0x00006736,\n\t4391:  0x00028090,\n\t4392:  0x000280F4,\n\t4393:  0x0002812E,\n\t4394:  0x00021FA1,\n\t4395:  0x0002814F,\n\t4396:  0x00028189,\n\t4397:  0x000281AF,\n\t4398:  0x0002821A,\n\t4399:  0x00028306,\n\t4400:  0x0002832F,\n\t4401:  0x0002838A,\n\t4402:  0x000035CA,\n\t4403:  0x00028468,\n\t4404:  0x000286AA,\n\t4405:  0x000048FA,\n\t4406:  0x000063E6,\n\t4407:  0x00028956,\n\t4408:  0x00007808,\n\t4409:  0x00009255,\n\t4410:  0x000289B8,\n\t4411:  0x000043F2,\n\t4412:  0x000289E7,\n\t4413:  0x000043DF,\n\t4414:  0x000289E8,\n\t4415:  0x00028B46,\n\t4416:  0x00028BD4,\n\t4417:  0x000059F8,\n\t4418:  0x00028C09,\n\t4419:  0x00008F0B,\n\t4420:  0x00028FC5,\n\t4421:  0x000290EC,\n\t4422:  0x00007B51,\n\t4423:  0x00029110,\n\t4424:  0x0002913C,\n\t4425:  0x00003DF7,\n\t4426:  0x0002915E,\n\t4427:  0x00024ACA,\n\t4428:  0x00008FD0,\n\t4429:  0x0000728F,\n\t4430:  0x0000568B,\n\t4431:  0x000294E7,\n\t4432:  0x000295E9,\n\t4433:  0x000295B0,\n\t4434:  0x000295B8,\n\t4435:  0x00029732,\n\t4436:  0x000298D1,\n\t4437:  0x00029949,\n\t4438:  0x0002996A,\n\t4439:  0x000299C3,\n\t4440:  0x00029A28,\n\t4441:  0x00029B0E,\n\t4442:  0x00029D5A,\n\t4443:  0x00029D9B,\n\t4444:  0x00007E9F,\n\t4445:  0x00029EF8,\n\t4446:  0x00029F23,\n\t4447:  0x00004CA4,\n\t4448:  0x00009547,\n\t4449:  0x0002A293,\n\t4450:  0x000071A2,\n\t4451:  0x0002A2FF,\n\t4452:  0x00004D91,\n\t4453:  0x00009012,\n\t4454:  0x0002A5CB,\n\t4455:  0x00004D9C,\n\t4456:  0x00020C9C,\n\t4457:  0x00008FBE,\n\t4458:  0x000055C1,\n\t4459:  0x00008FBA,\n\t4460:  0x000224B0,\n\t4461:  0x00008FB9,\n\t4462:  0x00024A93,\n\t4463:  0x00004509,\n\t4464:  0x00007E7F,\n\t4465:  0x00006F56,\n\t4466:  0x00006AB1,\n\t4467:  0x00004EEA,\n\t4468:  0x000034E4,\n\t4469:  0x00028B2C,\n\t4470:  0x0002789D,\n\t4471:  0x0000373A,\n\t4472:  0x00008E80,\n\t4473:  0x000217F5,\n\t4474:  0x00028024,\n\t4475:  0x00028B6C,\n\t4476:  0x00028B99,\n\t4477:  0x00027A3E,\n\t4478:  0x000266AF,\n\t4479:  0x00003DEB,\n\t4480:  0x00027655,\n\t4481:  0x00023CB7,\n\t4482:  0x00025635,\n\t4483:  0x00025956,\n\t4484:  0x00004E9A,\n\t4485:  0x00025E81,\n\t4486:  0x00026258,\n\t4487:  0x000056BF,\n\t4488:  0x00020E6D,\n\t4489:  0x00008E0E,\n\t4490:  0x00005B6D,\n\t4491:  0x00023E88,\n\t4492:  0x00024C9E,\n\t4493:  0x000063DE,\n\t4494:  0x000062D0,\n\t4495:  0x000217F6,\n\t4496:  0x0002187B,\n\t4497:  0x00006530,\n\t4498:  0x0000562D,\n\t4499:  0x00025C4A,\n\t4500:  0x0000541A,\n\t4501:  0x00025311,\n\t4502:  0x00003DC6,\n\t4503:  0x00029D98,\n\t4504:  0x00004C7D,\n\t4505:  0x00005622,\n\t4506:  0x0000561E,\n\t4507:  0x00007F49,\n\t4508:  0x00025ED8,\n\t4509:  0x00005975,\n\t4510:  0x00023D40,\n\t4511:  0x00008770,\n\t4512:  0x00004E1C,\n\t4513:  0x00020FEA,\n\t4514:  0x00020D49,\n\t4515:  0x000236BA,\n\t4516:  0x00008117,\n\t4517:  0x00009D5E,\n\t4518:  0x00008D18,\n\t4519:  0x0000763B,\n\t4520:  0x00009C45,\n\t4521:  0x0000764E,\n\t4522:  0x000077B9,\n\t4523:  0x00009345,\n\t4524:  0x00005432,\n\t4525:  0x00008148,\n\t4526:  0x000082F7,\n\t4527:  0x00005625,\n\t4528:  0x00008132,\n\t4529:  0x00008418,\n\t4530:  0x000080BD,\n\t4531:  0x000055EA,\n\t4532:  0x00007962,\n\t4533:  0x00005643,\n\t4534:  0x00005416,\n\t4535:  0x00020E9D,\n\t4536:  0x000035CE,\n\t4537:  0x00005605,\n\t4538:  0x000055F1,\n\t4539:  0x000066F1,\n\t4540:  0x000282E2,\n\t4541:  0x0000362D,\n\t4542:  0x00007534,\n\t4543:  0x000055F0,\n\t4544:  0x000055BA,\n\t4545:  0x00005497,\n\t4546:  0x00005572,\n\t4547:  0x00020C41,\n\t4548:  0x00020C96,\n\t4549:  0x00005ED0,\n\t4550:  0x00025148,\n\t4551:  0x00020E76,\n\t4552:  0x00022C62,\n\t4553:  0x00020EA2,\n\t4554:  0x00009EAB,\n\t4555:  0x00007D5A,\n\t4556:  0x000055DE,\n\t4557:  0x00021075,\n\t4558:  0x0000629D,\n\t4559:  0x0000976D,\n\t4560:  0x00005494,\n\t4561:  0x00008CCD,\n\t4562:  0x000071F6,\n\t4563:  0x00009176,\n\t4564:  0x000063FC,\n\t4565:  0x000063B9,\n\t4566:  0x000063FE,\n\t4567:  0x00005569,\n\t4568:  0x00022B43,\n\t4569:  0x00009C72,\n\t4570:  0x00022EB3,\n\t4571:  0x0000519A,\n\t4572:  0x000034DF,\n\t4573:  0x00020DA7,\n\t4574:  0x000051A7,\n\t4575:  0x0000544D,\n\t4576:  0x0000551E,\n\t4577:  0x00005513,\n\t4578:  0x00007666,\n\t4579:  0x00008E2D,\n\t4580:  0x0002688A,\n\t4581:  0x000075B1,\n\t4582:  0x000080B6,\n\t4583:  0x00008804,\n\t4584:  0x00008786,\n\t4585:  0x000088C7,\n\t4586:  0x000081B6,\n\t4587:  0x0000841C,\n\t4588:  0x000210C1,\n\t4589:  0x000044EC,\n\t4590:  0x00007304,\n\t4591:  0x00024706,\n\t4592:  0x00005B90,\n\t4593:  0x0000830B,\n\t4594:  0x00026893,\n\t4595:  0x0000567B,\n\t4596:  0x000226F4,\n\t4597:  0x00027D2F,\n\t4598:  0x000241A3,\n\t4599:  0x00027D73,\n\t4600:  0x00026ED0,\n\t4601:  0x000272B6,\n\t4602:  0x00009170,\n\t4603:  0x000211D9,\n\t4604:  0x00009208,\n\t4605:  0x00023CFC,\n\t4606:  0x0002A6A9,\n\t4607:  0x00020EAC,\n\t4608:  0x00020EF9,\n\t4609:  0x00007266,\n\t4610:  0x00021CA2,\n\t4611:  0x0000474E,\n\t4612:  0x00024FC2,\n\t4613:  0x00027FF9,\n\t4614:  0x00020FEB,\n\t4615:  0x000040FA,\n\t4616:  0x00009C5D,\n\t4617:  0x0000651F,\n\t4618:  0x00022DA0,\n\t4619:  0x000048F3,\n\t4620:  0x000247E0,\n\t4621:  0x00029D7C,\n\t4622:  0x00020FEC,\n\t4623:  0x00020E0A,\n\t4624:  0x00006062,\n\t4625:  0x000275A3,\n\t4626:  0x00020FED,\n\t4628:  0x00026048,\n\t4629:  0x00021187,\n\t4630:  0x000071A3,\n\t4631:  0x00007E8E,\n\t4632:  0x00009D50,\n\t4633:  0x00004E1A,\n\t4634:  0x00004E04,\n\t4635:  0x00003577,\n\t4636:  0x00005B0D,\n\t4637:  0x00006CB2,\n\t4638:  0x00005367,\n\t4639:  0x000036AC,\n\t4640:  0x000039DC,\n\t4641:  0x0000537D,\n\t4642:  0x000036A5,\n\t4643:  0x00024618,\n\t4644:  0x0000589A,\n\t4645:  0x00024B6E,\n\t4646:  0x0000822D,\n\t4647:  0x0000544B,\n\t4648:  0x000057AA,\n\t4649:  0x00025A95,\n\t4650:  0x00020979,\n\t4652:  0x00003A52,\n\t4653:  0x00022465,\n\t4654:  0x00007374,\n\t4655:  0x00029EAC,\n\t4656:  0x00004D09,\n\t4657:  0x00009BED,\n\t4658:  0x00023CFE,\n\t4659:  0x00029F30,\n\t4660:  0x00004C5B,\n\t4661:  0x00024FA9,\n\t4662:  0x0002959E,\n\t4663:  0x00029FDE,\n\t4664:  0x0000845C,\n\t4665:  0x00023DB6,\n\t4666:  0x000272B2,\n\t4667:  0x000267B3,\n\t4668:  0x00023720,\n\t4669:  0x0000632E,\n\t4670:  0x00007D25,\n\t4671:  0x00023EF7,\n\t4672:  0x00023E2C,\n\t4673:  0x00003A2A,\n\t4674:  0x00009008,\n\t4675:  0x000052CC,\n\t4676:  0x00003E74,\n\t4677:  0x0000367A,\n\t4678:  0x000045E9,\n\t4679:  0x0002048E,\n\t4680:  0x00007640,\n\t4681:  0x00005AF0,\n\t4682:  0x00020EB6,\n\t4683:  0x0000787A,\n\t4684:  0x00027F2E,\n\t4685:  0x000058A7,\n\t4686:  0x000040BF,\n\t4687:  0x0000567C,\n\t4688:  0x00009B8B,\n\t4689:  0x00005D74,\n\t4690:  0x00007654,\n\t4691:  0x0002A434,\n\t4692:  0x00009E85,\n\t4693:  0x00004CE1,\n\t4694:  0x000075F9,\n\t4695:  0x000037FB,\n\t4696:  0x00006119,\n\t4697:  0x000230DA,\n\t4698:  0x000243F2,\n\t4700:  0x0000565D,\n\t4701:  0x000212A9,\n\t4702:  0x000057A7,\n\t4703:  0x00024963,\n\t4704:  0x00029E06,\n\t4705:  0x00005234,\n\t4706:  0x000270AE,\n\t4707:  0x000035AD,\n\t4708:  0x00006C4A,\n\t4709:  0x00009D7C,\n\t4710:  0x00007C56,\n\t4711:  0x00009B39,\n\t4712:  0x000057DE,\n\t4713:  0x0002176C,\n\t4714:  0x00005C53,\n\t4715:  0x000064D3,\n\t4716:  0x000294D0,\n\t4717:  0x00026335,\n\t4718:  0x00027164,\n\t4719:  0x000086AD,\n\t4720:  0x00020D28,\n\t4721:  0x00026D22,\n\t4722:  0x00024AE2,\n\t4723:  0x00020D71,\n\t4725:  0x000051FE,\n\t4726:  0x00021F0F,\n\t4727:  0x00005D8E,\n\t4728:  0x00009703,\n\t4729:  0x00021DD1,\n\t4730:  0x00009E81,\n\t4731:  0x0000904C,\n\t4732:  0x00007B1F,\n\t4733:  0x00009B02,\n\t4734:  0x00005CD1,\n\t4735:  0x00007BA3,\n\t4736:  0x00006268,\n\t4737:  0x00006335,\n\t4738:  0x00009AFF,\n\t4739:  0x00007BCF,\n\t4740:  0x00009B2A,\n\t4741:  0x00007C7E,\n\t4742:  0x00009B2E,\n\t4743:  0x00007C42,\n\t4744:  0x00007C86,\n\t4745:  0x00009C15,\n\t4746:  0x00007BFC,\n\t4747:  0x00009B09,\n\t4748:  0x00009F17,\n\t4749:  0x00009C1B,\n\t4750:  0x0002493E,\n\t4751:  0x00009F5A,\n\t4752:  0x00005573,\n\t4753:  0x00005BC3,\n\t4754:  0x00004FFD,\n\t4755:  0x00009E98,\n\t4756:  0x00004FF2,\n\t4757:  0x00005260,\n\t4758:  0x00003E06,\n\t4759:  0x000052D1,\n\t4760:  0x00005767,\n\t4761:  0x00005056,\n\t4762:  0x000059B7,\n\t4763:  0x00005E12,\n\t4764:  0x000097C8,\n\t4765:  0x00009DAB,\n\t4766:  0x00008F5C,\n\t4767:  0x00005469,\n\t4768:  0x000097B4,\n\t4769:  0x00009940,\n\t4770:  0x000097BA,\n\t4771:  0x0000532C,\n\t4772:  0x00006130,\n\t4773:  0x0000692C,\n\t4774:  0x000053DA,\n\t4775:  0x00009C0A,\n\t4776:  0x00009D02,\n\t4777:  0x00004C3B,\n\t4778:  0x00009641,\n\t4779:  0x00006980,\n\t4780:  0x000050A6,\n\t4781:  0x00007546,\n\t4782:  0x0002176D,\n\t4783:  0x000099DA,\n\t4784:  0x00005273,\n\t4786:  0x00009159,\n\t4787:  0x00009681,\n\t4788:  0x0000915C,\n\t4790:  0x00009151,\n\t4791:  0x00028E97,\n\t4792:  0x0000637F,\n\t4793:  0x00026D23,\n\t4794:  0x00006ACA,\n\t4795:  0x00005611,\n\t4796:  0x0000918E,\n\t4797:  0x0000757A,\n\t4798:  0x00006285,\n\t4799:  0x000203FC,\n\t4800:  0x0000734F,\n\t4801:  0x00007C70,\n\t4802:  0x00025C21,\n\t4803:  0x00023CFD,\n\t4805:  0x00024919,\n\t4806:  0x000076D6,\n\t4807:  0x00009B9D,\n\t4808:  0x00004E2A,\n\t4809:  0x00020CD4,\n\t4810:  0x000083BE,\n\t4811:  0x00008842,\n\t4813:  0x00005C4A,\n\t4814:  0x000069C0,\n\t4815:  0x000050ED,\n\t4816:  0x0000577A,\n\t4817:  0x0000521F,\n\t4818:  0x00005DF5,\n\t4819:  0x00004ECE,\n\t4820:  0x00006C31,\n\t4821:  0x000201F2,\n\t4822:  0x00004F39,\n\t4823:  0x0000549C,\n\t4824:  0x000054DA,\n\t4825:  0x0000529A,\n\t4826:  0x00008D82,\n\t4827:  0x000035FE,\n\t4828:  0x00005F0C,\n\t4829:  0x000035F3,\n\t4831:  0x00006B52,\n\t4832:  0x0000917C,\n\t4833:  0x00009FA5,\n\t4834:  0x00009B97,\n\t4835:  0x0000982E,\n\t4836:  0x000098B4,\n\t4837:  0x00009ABA,\n\t4838:  0x00009EA8,\n\t4839:  0x00009E84,\n\t4840:  0x0000717A,\n\t4841:  0x00007B14,\n\t4843:  0x00006BFA,\n\t4844:  0x00008818,\n\t4845:  0x00007F78,\n\t4847:  0x00005620,\n\t4848:  0x0002A64A,\n\t4849:  0x00008E77,\n\t4850:  0x00009F53,\n\t4852:  0x00008DD4,\n\t4853:  0x00008E4F,\n\t4854:  0x00009E1C,\n\t4855:  0x00008E01,\n\t4856:  0x00006282,\n\t4857:  0x0002837D,\n\t4858:  0x00008E28,\n\t4859:  0x00008E75,\n\t4860:  0x00007AD3,\n\t4861:  0x00024A77,\n\t4862:  0x00007A3E,\n\t4863:  0x000078D8,\n\t4864:  0x00006CEA,\n\t4865:  0x00008A67,\n\t4866:  0x00007607,\n\t4867:  0x00028A5A,\n\t4868:  0x00009F26,\n\t4869:  0x00006CCE,\n\t4870:  0x000087D6,\n\t4871:  0x000075C3,\n\t4872:  0x0002A2B2,\n\t4873:  0x00007853,\n\t4874:  0x0002F840,\n\t4875:  0x00008D0C,\n\t4876:  0x000072E2,\n\t4877:  0x00007371,\n\t4878:  0x00008B2D,\n\t4879:  0x00007302,\n\t4880:  0x000074F1,\n\t4881:  0x00008CEB,\n\t4882:  0x00024ABB,\n\t4883:  0x0000862F,\n\t4884:  0x00005FBA,\n\t4885:  0x000088A0,\n\t4886:  0x000044B7,\n\t4888:  0x0002183B,\n\t4889:  0x00026E05,\n\t4891:  0x00008A7E,\n\t4892:  0x0002251B,\n\t4894:  0x000060FD,\n\t4895:  0x00007667,\n\t4896:  0x00009AD7,\n\t4897:  0x00009D44,\n\t4898:  0x0000936E,\n\t4899:  0x00009B8F,\n\t4900:  0x000087F5,\n\t4902:  0x0000880F,\n\t4903:  0x00008CF7,\n\t4904:  0x0000732C,\n\t4905:  0x00009721,\n\t4906:  0x00009BB0,\n\t4907:  0x000035D6,\n\t4908:  0x000072B2,\n\t4909:  0x00004C07,\n\t4910:  0x00007C51,\n\t4911:  0x0000994A,\n\t4912:  0x00026159,\n\t4913:  0x00006159,\n\t4914:  0x00004C04,\n\t4915:  0x00009E96,\n\t4916:  0x0000617D,\n\t4918:  0x0000575F,\n\t4919:  0x0000616F,\n\t4920:  0x000062A6,\n\t4921:  0x00006239,\n\t4922:  0x000062CE,\n\t4923:  0x00003A5C,\n\t4924:  0x000061E2,\n\t4925:  0x000053AA,\n\t4926:  0x000233F5,\n\t4927:  0x00006364,\n\t4928:  0x00006802,\n\t4929:  0x000035D2,\n\t4930:  0x00005D57,\n\t4931:  0x00028BC2,\n\t4932:  0x00008FDA,\n\t4933:  0x00028E39,\n\t4935:  0x000050D9,\n\t4936:  0x00021D46,\n\t4937:  0x00007906,\n\t4938:  0x00005332,\n\t4939:  0x00009638,\n\t4940:  0x00020F3B,\n\t4941:  0x00004065,\n\t4943:  0x000077FE,\n\t4945:  0x00007CC2,\n\t4946:  0x00025F1A,\n\t4947:  0x00007CDA,\n\t4948:  0x00007A2D,\n\t4949:  0x00008066,\n\t4950:  0x00008063,\n\t4951:  0x00007D4D,\n\t4952:  0x00007505,\n\t4953:  0x000074F2,\n\t4954:  0x00008994,\n\t4955:  0x0000821A,\n\t4956:  0x0000670C,\n\t4957:  0x00008062,\n\t4958:  0x00027486,\n\t4959:  0x0000805B,\n\t4960:  0x000074F0,\n\t4961:  0x00008103,\n\t4962:  0x00007724,\n\t4963:  0x00008989,\n\t4964:  0x000267CC,\n\t4965:  0x00007553,\n\t4966:  0x00026ED1,\n\t4967:  0x000087A9,\n\t4968:  0x000087CE,\n\t4969:  0x000081C8,\n\t4970:  0x0000878C,\n\t4971:  0x00008A49,\n\t4972:  0x00008CAD,\n\t4973:  0x00008B43,\n\t4974:  0x0000772B,\n\t4975:  0x000074F8,\n\t4976:  0x000084DA,\n\t4977:  0x00003635,\n\t4978:  0x000069B2,\n\t4979:  0x00008DA6,\n\t4981:  0x000089A9,\n\t4982:  0x00007468,\n\t4983:  0x00006DB9,\n\t4984:  0x000087C1,\n\t4985:  0x00024011,\n\t4986:  0x000074E7,\n\t4987:  0x00003DDB,\n\t4988:  0x00007176,\n\t4989:  0x000060A4,\n\t4990:  0x0000619C,\n\t4991:  0x00003CD1,\n\t4992:  0x00007162,\n\t4993:  0x00006077,\n\t4995:  0x00007F71,\n\t4996:  0x00028B2D,\n\t4997:  0x00007250,\n\t4998:  0x000060E9,\n\t4999:  0x00004B7E,\n\t5000:  0x00005220,\n\t5001:  0x00003C18,\n\t5002:  0x00023CC7,\n\t5003:  0x00025ED7,\n\t5004:  0x00027656,\n\t5005:  0x00025531,\n\t5006:  0x00021944,\n\t5007:  0x000212FE,\n\t5008:  0x00029903,\n\t5009:  0x00026DDC,\n\t5010:  0x000270AD,\n\t5011:  0x00005CC1,\n\t5012:  0x000261AD,\n\t5013:  0x00028A0F,\n\t5014:  0x00023677,\n\t5015:  0x000200EE,\n\t5016:  0x00026846,\n\t5017:  0x00024F0E,\n\t5018:  0x00004562,\n\t5019:  0x00005B1F,\n\t5020:  0x0002634C,\n\t5021:  0x00009F50,\n\t5022:  0x00009EA6,\n\t5023:  0x0002626B,\n\t5024:  0x00003000,\n\t5025:  0x0000FF0C,\n\t5026:  0x00003001,\n\t5027:  0x00003002,\n\t5028:  0x0000FF0E,\n\t5029:  0x00002027,\n\t5030:  0x0000FF1B,\n\t5031:  0x0000FF1A,\n\t5032:  0x0000FF1F,\n\t5033:  0x0000FF01,\n\t5034:  0x0000FE30,\n\t5035:  0x00002026,\n\t5036:  0x00002025,\n\t5037:  0x0000FE50,\n\t5038:  0x0000FE51,\n\t5039:  0x0000FE52,\n\t5040:  0x000000B7,\n\t5041:  0x0000FE54,\n\t5042:  0x0000FE55,\n\t5043:  0x0000FE56,\n\t5044:  0x0000FE57,\n\t5045:  0x0000FF5C,\n\t5046:  0x00002013,\n\t5047:  0x0000FE31,\n\t5048:  0x00002014,\n\t5049:  0x0000FE33,\n\t5050:  0x00002574,\n\t5051:  0x0000FE34,\n\t5052:  0x0000FE4F,\n\t5053:  0x0000FF08,\n\t5054:  0x0000FF09,\n\t5055:  0x0000FE35,\n\t5056:  0x0000FE36,\n\t5057:  0x0000FF5B,\n\t5058:  0x0000FF5D,\n\t5059:  0x0000FE37,\n\t5060:  0x0000FE38,\n\t5061:  0x00003014,\n\t5062:  0x00003015,\n\t5063:  0x0000FE39,\n\t5064:  0x0000FE3A,\n\t5065:  0x00003010,\n\t5066:  0x00003011,\n\t5067:  0x0000FE3B,\n\t5068:  0x0000FE3C,\n\t5069:  0x0000300A,\n\t5070:  0x0000300B,\n\t5071:  0x0000FE3D,\n\t5072:  0x0000FE3E,\n\t5073:  0x00003008,\n\t5074:  0x00003009,\n\t5075:  0x0000FE3F,\n\t5076:  0x0000FE40,\n\t5077:  0x0000300C,\n\t5078:  0x0000300D,\n\t5079:  0x0000FE41,\n\t5080:  0x0000FE42,\n\t5081:  0x0000300E,\n\t5082:  0x0000300F,\n\t5083:  0x0000FE43,\n\t5084:  0x0000FE44,\n\t5085:  0x0000FE59,\n\t5086:  0x0000FE5A,\n\t5087:  0x0000FE5B,\n\t5088:  0x0000FE5C,\n\t5089:  0x0000FE5D,\n\t5090:  0x0000FE5E,\n\t5091:  0x00002018,\n\t5092:  0x00002019,\n\t5093:  0x0000201C,\n\t5094:  0x0000201D,\n\t5095:  0x0000301D,\n\t5096:  0x0000301E,\n\t5097:  0x00002035,\n\t5098:  0x00002032,\n\t5099:  0x0000FF03,\n\t5100:  0x0000FF06,\n\t5101:  0x0000FF0A,\n\t5102:  0x0000203B,\n\t5103:  0x000000A7,\n\t5104:  0x00003003,\n\t5105:  0x000025CB,\n\t5106:  0x000025CF,\n\t5107:  0x000025B3,\n\t5108:  0x000025B2,\n\t5109:  0x000025CE,\n\t5110:  0x00002606,\n\t5111:  0x00002605,\n\t5112:  0x000025C7,\n\t5113:  0x000025C6,\n\t5114:  0x000025A1,\n\t5115:  0x000025A0,\n\t5116:  0x000025BD,\n\t5117:  0x000025BC,\n\t5118:  0x000032A3,\n\t5119:  0x00002105,\n\t5120:  0x000000AF,\n\t5121:  0x0000FFE3,\n\t5122:  0x0000FF3F,\n\t5123:  0x000002CD,\n\t5124:  0x0000FE49,\n\t5125:  0x0000FE4A,\n\t5126:  0x0000FE4D,\n\t5127:  0x0000FE4E,\n\t5128:  0x0000FE4B,\n\t5129:  0x0000FE4C,\n\t5130:  0x0000FE5F,\n\t5131:  0x0000FE60,\n\t5132:  0x0000FE61,\n\t5133:  0x0000FF0B,\n\t5134:  0x0000FF0D,\n\t5135:  0x000000D7,\n\t5136:  0x000000F7,\n\t5137:  0x000000B1,\n\t5138:  0x0000221A,\n\t5139:  0x0000FF1C,\n\t5140:  0x0000FF1E,\n\t5141:  0x0000FF1D,\n\t5142:  0x00002266,\n\t5143:  0x00002267,\n\t5144:  0x00002260,\n\t5145:  0x0000221E,\n\t5146:  0x00002252,\n\t5147:  0x00002261,\n\t5148:  0x0000FE62,\n\t5149:  0x0000FE63,\n\t5150:  0x0000FE64,\n\t5151:  0x0000FE65,\n\t5152:  0x0000FE66,\n\t5153:  0x0000FF5E,\n\t5154:  0x00002229,\n\t5155:  0x0000222A,\n\t5156:  0x000022A5,\n\t5157:  0x00002220,\n\t5158:  0x0000221F,\n\t5159:  0x000022BF,\n\t5160:  0x000033D2,\n\t5161:  0x000033D1,\n\t5162:  0x0000222B,\n\t5163:  0x0000222E,\n\t5164:  0x00002235,\n\t5165:  0x00002234,\n\t5166:  0x00002640,\n\t5167:  0x00002642,\n\t5168:  0x00002295,\n\t5169:  0x00002299,\n\t5170:  0x00002191,\n\t5171:  0x00002193,\n\t5172:  0x00002190,\n\t5173:  0x00002192,\n\t5174:  0x00002196,\n\t5175:  0x00002197,\n\t5176:  0x00002199,\n\t5177:  0x00002198,\n\t5178:  0x00002225,\n\t5179:  0x00002223,\n\t5180:  0x0000FF0F,\n\t5181:  0x0000FF3C,\n\t5182:  0x00002215,\n\t5183:  0x0000FE68,\n\t5184:  0x0000FF04,\n\t5185:  0x0000FFE5,\n\t5186:  0x00003012,\n\t5187:  0x0000FFE0,\n\t5188:  0x0000FFE1,\n\t5189:  0x0000FF05,\n\t5190:  0x0000FF20,\n\t5191:  0x00002103,\n\t5192:  0x00002109,\n\t5193:  0x0000FE69,\n\t5194:  0x0000FE6A,\n\t5195:  0x0000FE6B,\n\t5196:  0x000033D5,\n\t5197:  0x0000339C,\n\t5198:  0x0000339D,\n\t5199:  0x0000339E,\n\t5200:  0x000033CE,\n\t5201:  0x000033A1,\n\t5202:  0x0000338E,\n\t5203:  0x0000338F,\n\t5204:  0x000033C4,\n\t5205:  0x000000B0,\n\t5206:  0x00005159,\n\t5207:  0x0000515B,\n\t5208:  0x0000515E,\n\t5209:  0x0000515D,\n\t5210:  0x00005161,\n\t5211:  0x00005163,\n\t5212:  0x000055E7,\n\t5213:  0x000074E9,\n\t5214:  0x00007CCE,\n\t5215:  0x00002581,\n\t5216:  0x00002582,\n\t5217:  0x00002583,\n\t5218:  0x00002584,\n\t5219:  0x00002585,\n\t5220:  0x00002586,\n\t5221:  0x00002587,\n\t5222:  0x00002588,\n\t5223:  0x0000258F,\n\t5224:  0x0000258E,\n\t5225:  0x0000258D,\n\t5226:  0x0000258C,\n\t5227:  0x0000258B,\n\t5228:  0x0000258A,\n\t5229:  0x00002589,\n\t5230:  0x0000253C,\n\t5231:  0x00002534,\n\t5232:  0x0000252C,\n\t5233:  0x00002524,\n\t5234:  0x0000251C,\n\t5235:  0x00002594,\n\t5236:  0x00002500,\n\t5237:  0x00002502,\n\t5238:  0x00002595,\n\t5239:  0x0000250C,\n\t5240:  0x00002510,\n\t5241:  0x00002514,\n\t5242:  0x00002518,\n\t5243:  0x0000256D,\n\t5244:  0x0000256E,\n\t5245:  0x00002570,\n\t5246:  0x0000256F,\n\t5247:  0x00002550,\n\t5248:  0x0000255E,\n\t5249:  0x0000256A,\n\t5250:  0x00002561,\n\t5251:  0x000025E2,\n\t5252:  0x000025E3,\n\t5253:  0x000025E5,\n\t5254:  0x000025E4,\n\t5255:  0x00002571,\n\t5256:  0x00002572,\n\t5257:  0x00002573,\n\t5258:  0x0000FF10,\n\t5259:  0x0000FF11,\n\t5260:  0x0000FF12,\n\t5261:  0x0000FF13,\n\t5262:  0x0000FF14,\n\t5263:  0x0000FF15,\n\t5264:  0x0000FF16,\n\t5265:  0x0000FF17,\n\t5266:  0x0000FF18,\n\t5267:  0x0000FF19,\n\t5268:  0x00002160,\n\t5269:  0x00002161,\n\t5270:  0x00002162,\n\t5271:  0x00002163,\n\t5272:  0x00002164,\n\t5273:  0x00002165,\n\t5274:  0x00002166,\n\t5275:  0x00002167,\n\t5276:  0x00002168,\n\t5277:  0x00002169,\n\t5278:  0x00003021,\n\t5279:  0x00003022,\n\t5280:  0x00003023,\n\t5281:  0x00003024,\n\t5282:  0x00003025,\n\t5283:  0x00003026,\n\t5284:  0x00003027,\n\t5285:  0x00003028,\n\t5286:  0x00003029,\n\t5287:  0x00005341,\n\t5288:  0x00005344,\n\t5289:  0x00005345,\n\t5290:  0x0000FF21,\n\t5291:  0x0000FF22,\n\t5292:  0x0000FF23,\n\t5293:  0x0000FF24,\n\t5294:  0x0000FF25,\n\t5295:  0x0000FF26,\n\t5296:  0x0000FF27,\n\t5297:  0x0000FF28,\n\t5298:  0x0000FF29,\n\t5299:  0x0000FF2A,\n\t5300:  0x0000FF2B,\n\t5301:  0x0000FF2C,\n\t5302:  0x0000FF2D,\n\t5303:  0x0000FF2E,\n\t5304:  0x0000FF2F,\n\t5305:  0x0000FF30,\n\t5306:  0x0000FF31,\n\t5307:  0x0000FF32,\n\t5308:  0x0000FF33,\n\t5309:  0x0000FF34,\n\t5310:  0x0000FF35,\n\t5311:  0x0000FF36,\n\t5312:  0x0000FF37,\n\t5313:  0x0000FF38,\n\t5314:  0x0000FF39,\n\t5315:  0x0000FF3A,\n\t5316:  0x0000FF41,\n\t5317:  0x0000FF42,\n\t5318:  0x0000FF43,\n\t5319:  0x0000FF44,\n\t5320:  0x0000FF45,\n\t5321:  0x0000FF46,\n\t5322:  0x0000FF47,\n\t5323:  0x0000FF48,\n\t5324:  0x0000FF49,\n\t5325:  0x0000FF4A,\n\t5326:  0x0000FF4B,\n\t5327:  0x0000FF4C,\n\t5328:  0x0000FF4D,\n\t5329:  0x0000FF4E,\n\t5330:  0x0000FF4F,\n\t5331:  0x0000FF50,\n\t5332:  0x0000FF51,\n\t5333:  0x0000FF52,\n\t5334:  0x0000FF53,\n\t5335:  0x0000FF54,\n\t5336:  0x0000FF55,\n\t5337:  0x0000FF56,\n\t5338:  0x0000FF57,\n\t5339:  0x0000FF58,\n\t5340:  0x0000FF59,\n\t5341:  0x0000FF5A,\n\t5342:  0x00000391,\n\t5343:  0x00000392,\n\t5344:  0x00000393,\n\t5345:  0x00000394,\n\t5346:  0x00000395,\n\t5347:  0x00000396,\n\t5348:  0x00000397,\n\t5349:  0x00000398,\n\t5350:  0x00000399,\n\t5351:  0x0000039A,\n\t5352:  0x0000039B,\n\t5353:  0x0000039C,\n\t5354:  0x0000039D,\n\t5355:  0x0000039E,\n\t5356:  0x0000039F,\n\t5357:  0x000003A0,\n\t5358:  0x000003A1,\n\t5359:  0x000003A3,\n\t5360:  0x000003A4,\n\t5361:  0x000003A5,\n\t5362:  0x000003A6,\n\t5363:  0x000003A7,\n\t5364:  0x000003A8,\n\t5365:  0x000003A9,\n\t5366:  0x000003B1,\n\t5367:  0x000003B2,\n\t5368:  0x000003B3,\n\t5369:  0x000003B4,\n\t5370:  0x000003B5,\n\t5371:  0x000003B6,\n\t5372:  0x000003B7,\n\t5373:  0x000003B8,\n\t5374:  0x000003B9,\n\t5375:  0x000003BA,\n\t5376:  0x000003BB,\n\t5377:  0x000003BC,\n\t5378:  0x000003BD,\n\t5379:  0x000003BE,\n\t5380:  0x000003BF,\n\t5381:  0x000003C0,\n\t5382:  0x000003C1,\n\t5383:  0x000003C3,\n\t5384:  0x000003C4,\n\t5385:  0x000003C5,\n\t5386:  0x000003C6,\n\t5387:  0x000003C7,\n\t5388:  0x000003C8,\n\t5389:  0x000003C9,\n\t5390:  0x00003105,\n\t5391:  0x00003106,\n\t5392:  0x00003107,\n\t5393:  0x00003108,\n\t5394:  0x00003109,\n\t5395:  0x0000310A,\n\t5396:  0x0000310B,\n\t5397:  0x0000310C,\n\t5398:  0x0000310D,\n\t5399:  0x0000310E,\n\t5400:  0x0000310F,\n\t5401:  0x00003110,\n\t5402:  0x00003111,\n\t5403:  0x00003112,\n\t5404:  0x00003113,\n\t5405:  0x00003114,\n\t5406:  0x00003115,\n\t5407:  0x00003116,\n\t5408:  0x00003117,\n\t5409:  0x00003118,\n\t5410:  0x00003119,\n\t5411:  0x0000311A,\n\t5412:  0x0000311B,\n\t5413:  0x0000311C,\n\t5414:  0x0000311D,\n\t5415:  0x0000311E,\n\t5416:  0x0000311F,\n\t5417:  0x00003120,\n\t5418:  0x00003121,\n\t5419:  0x00003122,\n\t5420:  0x00003123,\n\t5421:  0x00003124,\n\t5422:  0x00003125,\n\t5423:  0x00003126,\n\t5424:  0x00003127,\n\t5425:  0x00003128,\n\t5426:  0x00003129,\n\t5427:  0x000002D9,\n\t5428:  0x000002C9,\n\t5429:  0x000002CA,\n\t5430:  0x000002C7,\n\t5431:  0x000002CB,\n\t5432:  0x00002400,\n\t5433:  0x00002401,\n\t5434:  0x00002402,\n\t5435:  0x00002403,\n\t5436:  0x00002404,\n\t5437:  0x00002405,\n\t5438:  0x00002406,\n\t5439:  0x00002407,\n\t5440:  0x00002408,\n\t5441:  0x00002409,\n\t5442:  0x0000240A,\n\t5443:  0x0000240B,\n\t5444:  0x0000240C,\n\t5445:  0x0000240D,\n\t5446:  0x0000240E,\n\t5447:  0x0000240F,\n\t5448:  0x00002410,\n\t5449:  0x00002411,\n\t5450:  0x00002412,\n\t5451:  0x00002413,\n\t5452:  0x00002414,\n\t5453:  0x00002415,\n\t5454:  0x00002416,\n\t5455:  0x00002417,\n\t5456:  0x00002418,\n\t5457:  0x00002419,\n\t5458:  0x0000241A,\n\t5459:  0x0000241B,\n\t5460:  0x0000241C,\n\t5461:  0x0000241D,\n\t5462:  0x0000241E,\n\t5463:  0x0000241F,\n\t5464:  0x00002421,\n\t5465:  0x000020AC,\n\t5495:  0x00004E00,\n\t5496:  0x00004E59,\n\t5497:  0x00004E01,\n\t5498:  0x00004E03,\n\t5499:  0x00004E43,\n\t5500:  0x00004E5D,\n\t5501:  0x00004E86,\n\t5502:  0x00004E8C,\n\t5503:  0x00004EBA,\n\t5504:  0x0000513F,\n\t5505:  0x00005165,\n\t5506:  0x0000516B,\n\t5507:  0x000051E0,\n\t5508:  0x00005200,\n\t5509:  0x00005201,\n\t5510:  0x0000529B,\n\t5511:  0x00005315,\n\t5512:  0x00005341,\n\t5513:  0x0000535C,\n\t5514:  0x000053C8,\n\t5515:  0x00004E09,\n\t5516:  0x00004E0B,\n\t5517:  0x00004E08,\n\t5518:  0x00004E0A,\n\t5519:  0x00004E2B,\n\t5520:  0x00004E38,\n\t5521:  0x000051E1,\n\t5522:  0x00004E45,\n\t5523:  0x00004E48,\n\t5524:  0x00004E5F,\n\t5525:  0x00004E5E,\n\t5526:  0x00004E8E,\n\t5527:  0x00004EA1,\n\t5528:  0x00005140,\n\t5529:  0x00005203,\n\t5530:  0x000052FA,\n\t5531:  0x00005343,\n\t5532:  0x000053C9,\n\t5533:  0x000053E3,\n\t5534:  0x0000571F,\n\t5535:  0x000058EB,\n\t5536:  0x00005915,\n\t5537:  0x00005927,\n\t5538:  0x00005973,\n\t5539:  0x00005B50,\n\t5540:  0x00005B51,\n\t5541:  0x00005B53,\n\t5542:  0x00005BF8,\n\t5543:  0x00005C0F,\n\t5544:  0x00005C22,\n\t5545:  0x00005C38,\n\t5546:  0x00005C71,\n\t5547:  0x00005DDD,\n\t5548:  0x00005DE5,\n\t5549:  0x00005DF1,\n\t5550:  0x00005DF2,\n\t5551:  0x00005DF3,\n\t5552:  0x00005DFE,\n\t5553:  0x00005E72,\n\t5554:  0x00005EFE,\n\t5555:  0x00005F0B,\n\t5556:  0x00005F13,\n\t5557:  0x0000624D,\n\t5558:  0x00004E11,\n\t5559:  0x00004E10,\n\t5560:  0x00004E0D,\n\t5561:  0x00004E2D,\n\t5562:  0x00004E30,\n\t5563:  0x00004E39,\n\t5564:  0x00004E4B,\n\t5565:  0x00005C39,\n\t5566:  0x00004E88,\n\t5567:  0x00004E91,\n\t5568:  0x00004E95,\n\t5569:  0x00004E92,\n\t5570:  0x00004E94,\n\t5571:  0x00004EA2,\n\t5572:  0x00004EC1,\n\t5573:  0x00004EC0,\n\t5574:  0x00004EC3,\n\t5575:  0x00004EC6,\n\t5576:  0x00004EC7,\n\t5577:  0x00004ECD,\n\t5578:  0x00004ECA,\n\t5579:  0x00004ECB,\n\t5580:  0x00004EC4,\n\t5581:  0x00005143,\n\t5582:  0x00005141,\n\t5583:  0x00005167,\n\t5584:  0x0000516D,\n\t5585:  0x0000516E,\n\t5586:  0x0000516C,\n\t5587:  0x00005197,\n\t5588:  0x000051F6,\n\t5589:  0x00005206,\n\t5590:  0x00005207,\n\t5591:  0x00005208,\n\t5592:  0x000052FB,\n\t5593:  0x000052FE,\n\t5594:  0x000052FF,\n\t5595:  0x00005316,\n\t5596:  0x00005339,\n\t5597:  0x00005348,\n\t5598:  0x00005347,\n\t5599:  0x00005345,\n\t5600:  0x0000535E,\n\t5601:  0x00005384,\n\t5602:  0x000053CB,\n\t5603:  0x000053CA,\n\t5604:  0x000053CD,\n\t5605:  0x000058EC,\n\t5606:  0x00005929,\n\t5607:  0x0000592B,\n\t5608:  0x0000592A,\n\t5609:  0x0000592D,\n\t5610:  0x00005B54,\n\t5611:  0x00005C11,\n\t5612:  0x00005C24,\n\t5613:  0x00005C3A,\n\t5614:  0x00005C6F,\n\t5615:  0x00005DF4,\n\t5616:  0x00005E7B,\n\t5617:  0x00005EFF,\n\t5618:  0x00005F14,\n\t5619:  0x00005F15,\n\t5620:  0x00005FC3,\n\t5621:  0x00006208,\n\t5622:  0x00006236,\n\t5623:  0x0000624B,\n\t5624:  0x0000624E,\n\t5625:  0x0000652F,\n\t5626:  0x00006587,\n\t5627:  0x00006597,\n\t5628:  0x000065A4,\n\t5629:  0x000065B9,\n\t5630:  0x000065E5,\n\t5631:  0x000066F0,\n\t5632:  0x00006708,\n\t5633:  0x00006728,\n\t5634:  0x00006B20,\n\t5635:  0x00006B62,\n\t5636:  0x00006B79,\n\t5637:  0x00006BCB,\n\t5638:  0x00006BD4,\n\t5639:  0x00006BDB,\n\t5640:  0x00006C0F,\n\t5641:  0x00006C34,\n\t5642:  0x0000706B,\n\t5643:  0x0000722A,\n\t5644:  0x00007236,\n\t5645:  0x0000723B,\n\t5646:  0x00007247,\n\t5647:  0x00007259,\n\t5648:  0x0000725B,\n\t5649:  0x000072AC,\n\t5650:  0x0000738B,\n\t5651:  0x00004E19,\n\t5652:  0x00004E16,\n\t5653:  0x00004E15,\n\t5654:  0x00004E14,\n\t5655:  0x00004E18,\n\t5656:  0x00004E3B,\n\t5657:  0x00004E4D,\n\t5658:  0x00004E4F,\n\t5659:  0x00004E4E,\n\t5660:  0x00004EE5,\n\t5661:  0x00004ED8,\n\t5662:  0x00004ED4,\n\t5663:  0x00004ED5,\n\t5664:  0x00004ED6,\n\t5665:  0x00004ED7,\n\t5666:  0x00004EE3,\n\t5667:  0x00004EE4,\n\t5668:  0x00004ED9,\n\t5669:  0x00004EDE,\n\t5670:  0x00005145,\n\t5671:  0x00005144,\n\t5672:  0x00005189,\n\t5673:  0x0000518A,\n\t5674:  0x000051AC,\n\t5675:  0x000051F9,\n\t5676:  0x000051FA,\n\t5677:  0x000051F8,\n\t5678:  0x0000520A,\n\t5679:  0x000052A0,\n\t5680:  0x0000529F,\n\t5681:  0x00005305,\n\t5682:  0x00005306,\n\t5683:  0x00005317,\n\t5684:  0x0000531D,\n\t5685:  0x00004EDF,\n\t5686:  0x0000534A,\n\t5687:  0x00005349,\n\t5688:  0x00005361,\n\t5689:  0x00005360,\n\t5690:  0x0000536F,\n\t5691:  0x0000536E,\n\t5692:  0x000053BB,\n\t5693:  0x000053EF,\n\t5694:  0x000053E4,\n\t5695:  0x000053F3,\n\t5696:  0x000053EC,\n\t5697:  0x000053EE,\n\t5698:  0x000053E9,\n\t5699:  0x000053E8,\n\t5700:  0x000053FC,\n\t5701:  0x000053F8,\n\t5702:  0x000053F5,\n\t5703:  0x000053EB,\n\t5704:  0x000053E6,\n\t5705:  0x000053EA,\n\t5706:  0x000053F2,\n\t5707:  0x000053F1,\n\t5708:  0x000053F0,\n\t5709:  0x000053E5,\n\t5710:  0x000053ED,\n\t5711:  0x000053FB,\n\t5712:  0x000056DB,\n\t5713:  0x000056DA,\n\t5714:  0x00005916,\n\t5715:  0x0000592E,\n\t5716:  0x00005931,\n\t5717:  0x00005974,\n\t5718:  0x00005976,\n\t5719:  0x00005B55,\n\t5720:  0x00005B83,\n\t5721:  0x00005C3C,\n\t5722:  0x00005DE8,\n\t5723:  0x00005DE7,\n\t5724:  0x00005DE6,\n\t5725:  0x00005E02,\n\t5726:  0x00005E03,\n\t5727:  0x00005E73,\n\t5728:  0x00005E7C,\n\t5729:  0x00005F01,\n\t5730:  0x00005F18,\n\t5731:  0x00005F17,\n\t5732:  0x00005FC5,\n\t5733:  0x0000620A,\n\t5734:  0x00006253,\n\t5735:  0x00006254,\n\t5736:  0x00006252,\n\t5737:  0x00006251,\n\t5738:  0x000065A5,\n\t5739:  0x000065E6,\n\t5740:  0x0000672E,\n\t5741:  0x0000672C,\n\t5742:  0x0000672A,\n\t5743:  0x0000672B,\n\t5744:  0x0000672D,\n\t5745:  0x00006B63,\n\t5746:  0x00006BCD,\n\t5747:  0x00006C11,\n\t5748:  0x00006C10,\n\t5749:  0x00006C38,\n\t5750:  0x00006C41,\n\t5751:  0x00006C40,\n\t5752:  0x00006C3E,\n\t5753:  0x000072AF,\n\t5754:  0x00007384,\n\t5755:  0x00007389,\n\t5756:  0x000074DC,\n\t5757:  0x000074E6,\n\t5758:  0x00007518,\n\t5759:  0x0000751F,\n\t5760:  0x00007528,\n\t5761:  0x00007529,\n\t5762:  0x00007530,\n\t5763:  0x00007531,\n\t5764:  0x00007532,\n\t5765:  0x00007533,\n\t5766:  0x0000758B,\n\t5767:  0x0000767D,\n\t5768:  0x000076AE,\n\t5769:  0x000076BF,\n\t5770:  0x000076EE,\n\t5771:  0x000077DB,\n\t5772:  0x000077E2,\n\t5773:  0x000077F3,\n\t5774:  0x0000793A,\n\t5775:  0x000079BE,\n\t5776:  0x00007A74,\n\t5777:  0x00007ACB,\n\t5778:  0x00004E1E,\n\t5779:  0x00004E1F,\n\t5780:  0x00004E52,\n\t5781:  0x00004E53,\n\t5782:  0x00004E69,\n\t5783:  0x00004E99,\n\t5784:  0x00004EA4,\n\t5785:  0x00004EA6,\n\t5786:  0x00004EA5,\n\t5787:  0x00004EFF,\n\t5788:  0x00004F09,\n\t5789:  0x00004F19,\n\t5790:  0x00004F0A,\n\t5791:  0x00004F15,\n\t5792:  0x00004F0D,\n\t5793:  0x00004F10,\n\t5794:  0x00004F11,\n\t5795:  0x00004F0F,\n\t5796:  0x00004EF2,\n\t5797:  0x00004EF6,\n\t5798:  0x00004EFB,\n\t5799:  0x00004EF0,\n\t5800:  0x00004EF3,\n\t5801:  0x00004EFD,\n\t5802:  0x00004F01,\n\t5803:  0x00004F0B,\n\t5804:  0x00005149,\n\t5805:  0x00005147,\n\t5806:  0x00005146,\n\t5807:  0x00005148,\n\t5808:  0x00005168,\n\t5809:  0x00005171,\n\t5810:  0x0000518D,\n\t5811:  0x000051B0,\n\t5812:  0x00005217,\n\t5813:  0x00005211,\n\t5814:  0x00005212,\n\t5815:  0x0000520E,\n\t5816:  0x00005216,\n\t5817:  0x000052A3,\n\t5818:  0x00005308,\n\t5819:  0x00005321,\n\t5820:  0x00005320,\n\t5821:  0x00005370,\n\t5822:  0x00005371,\n\t5823:  0x00005409,\n\t5824:  0x0000540F,\n\t5825:  0x0000540C,\n\t5826:  0x0000540A,\n\t5827:  0x00005410,\n\t5828:  0x00005401,\n\t5829:  0x0000540B,\n\t5830:  0x00005404,\n\t5831:  0x00005411,\n\t5832:  0x0000540D,\n\t5833:  0x00005408,\n\t5834:  0x00005403,\n\t5835:  0x0000540E,\n\t5836:  0x00005406,\n\t5837:  0x00005412,\n\t5838:  0x000056E0,\n\t5839:  0x000056DE,\n\t5840:  0x000056DD,\n\t5841:  0x00005733,\n\t5842:  0x00005730,\n\t5843:  0x00005728,\n\t5844:  0x0000572D,\n\t5845:  0x0000572C,\n\t5846:  0x0000572F,\n\t5847:  0x00005729,\n\t5848:  0x00005919,\n\t5849:  0x0000591A,\n\t5850:  0x00005937,\n\t5851:  0x00005938,\n\t5852:  0x00005984,\n\t5853:  0x00005978,\n\t5854:  0x00005983,\n\t5855:  0x0000597D,\n\t5856:  0x00005979,\n\t5857:  0x00005982,\n\t5858:  0x00005981,\n\t5859:  0x00005B57,\n\t5860:  0x00005B58,\n\t5861:  0x00005B87,\n\t5862:  0x00005B88,\n\t5863:  0x00005B85,\n\t5864:  0x00005B89,\n\t5865:  0x00005BFA,\n\t5866:  0x00005C16,\n\t5867:  0x00005C79,\n\t5868:  0x00005DDE,\n\t5869:  0x00005E06,\n\t5870:  0x00005E76,\n\t5871:  0x00005E74,\n\t5872:  0x00005F0F,\n\t5873:  0x00005F1B,\n\t5874:  0x00005FD9,\n\t5875:  0x00005FD6,\n\t5876:  0x0000620E,\n\t5877:  0x0000620C,\n\t5878:  0x0000620D,\n\t5879:  0x00006210,\n\t5880:  0x00006263,\n\t5881:  0x0000625B,\n\t5882:  0x00006258,\n\t5883:  0x00006536,\n\t5884:  0x000065E9,\n\t5885:  0x000065E8,\n\t5886:  0x000065EC,\n\t5887:  0x000065ED,\n\t5888:  0x000066F2,\n\t5889:  0x000066F3,\n\t5890:  0x00006709,\n\t5891:  0x0000673D,\n\t5892:  0x00006734,\n\t5893:  0x00006731,\n\t5894:  0x00006735,\n\t5895:  0x00006B21,\n\t5896:  0x00006B64,\n\t5897:  0x00006B7B,\n\t5898:  0x00006C16,\n\t5899:  0x00006C5D,\n\t5900:  0x00006C57,\n\t5901:  0x00006C59,\n\t5902:  0x00006C5F,\n\t5903:  0x00006C60,\n\t5904:  0x00006C50,\n\t5905:  0x00006C55,\n\t5906:  0x00006C61,\n\t5907:  0x00006C5B,\n\t5908:  0x00006C4D,\n\t5909:  0x00006C4E,\n\t5910:  0x00007070,\n\t5911:  0x0000725F,\n\t5912:  0x0000725D,\n\t5913:  0x0000767E,\n\t5914:  0x00007AF9,\n\t5915:  0x00007C73,\n\t5916:  0x00007CF8,\n\t5917:  0x00007F36,\n\t5918:  0x00007F8A,\n\t5919:  0x00007FBD,\n\t5920:  0x00008001,\n\t5921:  0x00008003,\n\t5922:  0x0000800C,\n\t5923:  0x00008012,\n\t5924:  0x00008033,\n\t5925:  0x0000807F,\n\t5926:  0x00008089,\n\t5927:  0x0000808B,\n\t5928:  0x0000808C,\n\t5929:  0x000081E3,\n\t5930:  0x000081EA,\n\t5931:  0x000081F3,\n\t5932:  0x000081FC,\n\t5933:  0x0000820C,\n\t5934:  0x0000821B,\n\t5935:  0x0000821F,\n\t5936:  0x0000826E,\n\t5937:  0x00008272,\n\t5938:  0x0000827E,\n\t5939:  0x0000866B,\n\t5940:  0x00008840,\n\t5941:  0x0000884C,\n\t5942:  0x00008863,\n\t5943:  0x0000897F,\n\t5944:  0x00009621,\n\t5945:  0x00004E32,\n\t5946:  0x00004EA8,\n\t5947:  0x00004F4D,\n\t5948:  0x00004F4F,\n\t5949:  0x00004F47,\n\t5950:  0x00004F57,\n\t5951:  0x00004F5E,\n\t5952:  0x00004F34,\n\t5953:  0x00004F5B,\n\t5954:  0x00004F55,\n\t5955:  0x00004F30,\n\t5956:  0x00004F50,\n\t5957:  0x00004F51,\n\t5958:  0x00004F3D,\n\t5959:  0x00004F3A,\n\t5960:  0x00004F38,\n\t5961:  0x00004F43,\n\t5962:  0x00004F54,\n\t5963:  0x00004F3C,\n\t5964:  0x00004F46,\n\t5965:  0x00004F63,\n\t5966:  0x00004F5C,\n\t5967:  0x00004F60,\n\t5968:  0x00004F2F,\n\t5969:  0x00004F4E,\n\t5970:  0x00004F36,\n\t5971:  0x00004F59,\n\t5972:  0x00004F5D,\n\t5973:  0x00004F48,\n\t5974:  0x00004F5A,\n\t5975:  0x0000514C,\n\t5976:  0x0000514B,\n\t5977:  0x0000514D,\n\t5978:  0x00005175,\n\t5979:  0x000051B6,\n\t5980:  0x000051B7,\n\t5981:  0x00005225,\n\t5982:  0x00005224,\n\t5983:  0x00005229,\n\t5984:  0x0000522A,\n\t5985:  0x00005228,\n\t5986:  0x000052AB,\n\t5987:  0x000052A9,\n\t5988:  0x000052AA,\n\t5989:  0x000052AC,\n\t5990:  0x00005323,\n\t5991:  0x00005373,\n\t5992:  0x00005375,\n\t5993:  0x0000541D,\n\t5994:  0x0000542D,\n\t5995:  0x0000541E,\n\t5996:  0x0000543E,\n\t5997:  0x00005426,\n\t5998:  0x0000544E,\n\t5999:  0x00005427,\n\t6000:  0x00005446,\n\t6001:  0x00005443,\n\t6002:  0x00005433,\n\t6003:  0x00005448,\n\t6004:  0x00005442,\n\t6005:  0x0000541B,\n\t6006:  0x00005429,\n\t6007:  0x0000544A,\n\t6008:  0x00005439,\n\t6009:  0x0000543B,\n\t6010:  0x00005438,\n\t6011:  0x0000542E,\n\t6012:  0x00005435,\n\t6013:  0x00005436,\n\t6014:  0x00005420,\n\t6015:  0x0000543C,\n\t6016:  0x00005440,\n\t6017:  0x00005431,\n\t6018:  0x0000542B,\n\t6019:  0x0000541F,\n\t6020:  0x0000542C,\n\t6021:  0x000056EA,\n\t6022:  0x000056F0,\n\t6023:  0x000056E4,\n\t6024:  0x000056EB,\n\t6025:  0x0000574A,\n\t6026:  0x00005751,\n\t6027:  0x00005740,\n\t6028:  0x0000574D,\n\t6029:  0x00005747,\n\t6030:  0x0000574E,\n\t6031:  0x0000573E,\n\t6032:  0x00005750,\n\t6033:  0x0000574F,\n\t6034:  0x0000573B,\n\t6035:  0x000058EF,\n\t6036:  0x0000593E,\n\t6037:  0x0000599D,\n\t6038:  0x00005992,\n\t6039:  0x000059A8,\n\t6040:  0x0000599E,\n\t6041:  0x000059A3,\n\t6042:  0x00005999,\n\t6043:  0x00005996,\n\t6044:  0x0000598D,\n\t6045:  0x000059A4,\n\t6046:  0x00005993,\n\t6047:  0x0000598A,\n\t6048:  0x000059A5,\n\t6049:  0x00005B5D,\n\t6050:  0x00005B5C,\n\t6051:  0x00005B5A,\n\t6052:  0x00005B5B,\n\t6053:  0x00005B8C,\n\t6054:  0x00005B8B,\n\t6055:  0x00005B8F,\n\t6056:  0x00005C2C,\n\t6057:  0x00005C40,\n\t6058:  0x00005C41,\n\t6059:  0x00005C3F,\n\t6060:  0x00005C3E,\n\t6061:  0x00005C90,\n\t6062:  0x00005C91,\n\t6063:  0x00005C94,\n\t6064:  0x00005C8C,\n\t6065:  0x00005DEB,\n\t6066:  0x00005E0C,\n\t6067:  0x00005E8F,\n\t6068:  0x00005E87,\n\t6069:  0x00005E8A,\n\t6070:  0x00005EF7,\n\t6071:  0x00005F04,\n\t6072:  0x00005F1F,\n\t6073:  0x00005F64,\n\t6074:  0x00005F62,\n\t6075:  0x00005F77,\n\t6076:  0x00005F79,\n\t6077:  0x00005FD8,\n\t6078:  0x00005FCC,\n\t6079:  0x00005FD7,\n\t6080:  0x00005FCD,\n\t6081:  0x00005FF1,\n\t6082:  0x00005FEB,\n\t6083:  0x00005FF8,\n\t6084:  0x00005FEA,\n\t6085:  0x00006212,\n\t6086:  0x00006211,\n\t6087:  0x00006284,\n\t6088:  0x00006297,\n\t6089:  0x00006296,\n\t6090:  0x00006280,\n\t6091:  0x00006276,\n\t6092:  0x00006289,\n\t6093:  0x0000626D,\n\t6094:  0x0000628A,\n\t6095:  0x0000627C,\n\t6096:  0x0000627E,\n\t6097:  0x00006279,\n\t6098:  0x00006273,\n\t6099:  0x00006292,\n\t6100:  0x0000626F,\n\t6101:  0x00006298,\n\t6102:  0x0000626E,\n\t6103:  0x00006295,\n\t6104:  0x00006293,\n\t6105:  0x00006291,\n\t6106:  0x00006286,\n\t6107:  0x00006539,\n\t6108:  0x0000653B,\n\t6109:  0x00006538,\n\t6110:  0x000065F1,\n\t6111:  0x000066F4,\n\t6112:  0x0000675F,\n\t6113:  0x0000674E,\n\t6114:  0x0000674F,\n\t6115:  0x00006750,\n\t6116:  0x00006751,\n\t6117:  0x0000675C,\n\t6118:  0x00006756,\n\t6119:  0x0000675E,\n\t6120:  0x00006749,\n\t6121:  0x00006746,\n\t6122:  0x00006760,\n\t6123:  0x00006753,\n\t6124:  0x00006757,\n\t6125:  0x00006B65,\n\t6126:  0x00006BCF,\n\t6127:  0x00006C42,\n\t6128:  0x00006C5E,\n\t6129:  0x00006C99,\n\t6130:  0x00006C81,\n\t6131:  0x00006C88,\n\t6132:  0x00006C89,\n\t6133:  0x00006C85,\n\t6134:  0x00006C9B,\n\t6135:  0x00006C6A,\n\t6136:  0x00006C7A,\n\t6137:  0x00006C90,\n\t6138:  0x00006C70,\n\t6139:  0x00006C8C,\n\t6140:  0x00006C68,\n\t6141:  0x00006C96,\n\t6142:  0x00006C92,\n\t6143:  0x00006C7D,\n\t6144:  0x00006C83,\n\t6145:  0x00006C72,\n\t6146:  0x00006C7E,\n\t6147:  0x00006C74,\n\t6148:  0x00006C86,\n\t6149:  0x00006C76,\n\t6150:  0x00006C8D,\n\t6151:  0x00006C94,\n\t6152:  0x00006C98,\n\t6153:  0x00006C82,\n\t6154:  0x00007076,\n\t6155:  0x0000707C,\n\t6156:  0x0000707D,\n\t6157:  0x00007078,\n\t6158:  0x00007262,\n\t6159:  0x00007261,\n\t6160:  0x00007260,\n\t6161:  0x000072C4,\n\t6162:  0x000072C2,\n\t6163:  0x00007396,\n\t6164:  0x0000752C,\n\t6165:  0x0000752B,\n\t6166:  0x00007537,\n\t6167:  0x00007538,\n\t6168:  0x00007682,\n\t6169:  0x000076EF,\n\t6170:  0x000077E3,\n\t6171:  0x000079C1,\n\t6172:  0x000079C0,\n\t6173:  0x000079BF,\n\t6174:  0x00007A76,\n\t6175:  0x00007CFB,\n\t6176:  0x00007F55,\n\t6177:  0x00008096,\n\t6178:  0x00008093,\n\t6179:  0x0000809D,\n\t6180:  0x00008098,\n\t6181:  0x0000809B,\n\t6182:  0x0000809A,\n\t6183:  0x000080B2,\n\t6184:  0x0000826F,\n\t6185:  0x00008292,\n\t6186:  0x0000828B,\n\t6187:  0x0000828D,\n\t6188:  0x0000898B,\n\t6189:  0x000089D2,\n\t6190:  0x00008A00,\n\t6191:  0x00008C37,\n\t6192:  0x00008C46,\n\t6193:  0x00008C55,\n\t6194:  0x00008C9D,\n\t6195:  0x00008D64,\n\t6196:  0x00008D70,\n\t6197:  0x00008DB3,\n\t6198:  0x00008EAB,\n\t6199:  0x00008ECA,\n\t6200:  0x00008F9B,\n\t6201:  0x00008FB0,\n\t6202:  0x00008FC2,\n\t6203:  0x00008FC6,\n\t6204:  0x00008FC5,\n\t6205:  0x00008FC4,\n\t6206:  0x00005DE1,\n\t6207:  0x00009091,\n\t6208:  0x000090A2,\n\t6209:  0x000090AA,\n\t6210:  0x000090A6,\n\t6211:  0x000090A3,\n\t6212:  0x00009149,\n\t6213:  0x000091C6,\n\t6214:  0x000091CC,\n\t6215:  0x00009632,\n\t6216:  0x0000962E,\n\t6217:  0x00009631,\n\t6218:  0x0000962A,\n\t6219:  0x0000962C,\n\t6220:  0x00004E26,\n\t6221:  0x00004E56,\n\t6222:  0x00004E73,\n\t6223:  0x00004E8B,\n\t6224:  0x00004E9B,\n\t6225:  0x00004E9E,\n\t6226:  0x00004EAB,\n\t6227:  0x00004EAC,\n\t6228:  0x00004F6F,\n\t6229:  0x00004F9D,\n\t6230:  0x00004F8D,\n\t6231:  0x00004F73,\n\t6232:  0x00004F7F,\n\t6233:  0x00004F6C,\n\t6234:  0x00004F9B,\n\t6235:  0x00004F8B,\n\t6236:  0x00004F86,\n\t6237:  0x00004F83,\n\t6238:  0x00004F70,\n\t6239:  0x00004F75,\n\t6240:  0x00004F88,\n\t6241:  0x00004F69,\n\t6242:  0x00004F7B,\n\t6243:  0x00004F96,\n\t6244:  0x00004F7E,\n\t6245:  0x00004F8F,\n\t6246:  0x00004F91,\n\t6247:  0x00004F7A,\n\t6248:  0x00005154,\n\t6249:  0x00005152,\n\t6250:  0x00005155,\n\t6251:  0x00005169,\n\t6252:  0x00005177,\n\t6253:  0x00005176,\n\t6254:  0x00005178,\n\t6255:  0x000051BD,\n\t6256:  0x000051FD,\n\t6257:  0x0000523B,\n\t6258:  0x00005238,\n\t6259:  0x00005237,\n\t6260:  0x0000523A,\n\t6261:  0x00005230,\n\t6262:  0x0000522E,\n\t6263:  0x00005236,\n\t6264:  0x00005241,\n\t6265:  0x000052BE,\n\t6266:  0x000052BB,\n\t6267:  0x00005352,\n\t6268:  0x00005354,\n\t6269:  0x00005353,\n\t6270:  0x00005351,\n\t6271:  0x00005366,\n\t6272:  0x00005377,\n\t6273:  0x00005378,\n\t6274:  0x00005379,\n\t6275:  0x000053D6,\n\t6276:  0x000053D4,\n\t6277:  0x000053D7,\n\t6278:  0x00005473,\n\t6279:  0x00005475,\n\t6280:  0x00005496,\n\t6281:  0x00005478,\n\t6282:  0x00005495,\n\t6283:  0x00005480,\n\t6284:  0x0000547B,\n\t6285:  0x00005477,\n\t6286:  0x00005484,\n\t6287:  0x00005492,\n\t6288:  0x00005486,\n\t6289:  0x0000547C,\n\t6290:  0x00005490,\n\t6291:  0x00005471,\n\t6292:  0x00005476,\n\t6293:  0x0000548C,\n\t6294:  0x0000549A,\n\t6295:  0x00005462,\n\t6296:  0x00005468,\n\t6297:  0x0000548B,\n\t6298:  0x0000547D,\n\t6299:  0x0000548E,\n\t6300:  0x000056FA,\n\t6301:  0x00005783,\n\t6302:  0x00005777,\n\t6303:  0x0000576A,\n\t6304:  0x00005769,\n\t6305:  0x00005761,\n\t6306:  0x00005766,\n\t6307:  0x00005764,\n\t6308:  0x0000577C,\n\t6309:  0x0000591C,\n\t6310:  0x00005949,\n\t6311:  0x00005947,\n\t6312:  0x00005948,\n\t6313:  0x00005944,\n\t6314:  0x00005954,\n\t6315:  0x000059BE,\n\t6316:  0x000059BB,\n\t6317:  0x000059D4,\n\t6318:  0x000059B9,\n\t6319:  0x000059AE,\n\t6320:  0x000059D1,\n\t6321:  0x000059C6,\n\t6322:  0x000059D0,\n\t6323:  0x000059CD,\n\t6324:  0x000059CB,\n\t6325:  0x000059D3,\n\t6326:  0x000059CA,\n\t6327:  0x000059AF,\n\t6328:  0x000059B3,\n\t6329:  0x000059D2,\n\t6330:  0x000059C5,\n\t6331:  0x00005B5F,\n\t6332:  0x00005B64,\n\t6333:  0x00005B63,\n\t6334:  0x00005B97,\n\t6335:  0x00005B9A,\n\t6336:  0x00005B98,\n\t6337:  0x00005B9C,\n\t6338:  0x00005B99,\n\t6339:  0x00005B9B,\n\t6340:  0x00005C1A,\n\t6341:  0x00005C48,\n\t6342:  0x00005C45,\n\t6343:  0x00005C46,\n\t6344:  0x00005CB7,\n\t6345:  0x00005CA1,\n\t6346:  0x00005CB8,\n\t6347:  0x00005CA9,\n\t6348:  0x00005CAB,\n\t6349:  0x00005CB1,\n\t6350:  0x00005CB3,\n\t6351:  0x00005E18,\n\t6352:  0x00005E1A,\n\t6353:  0x00005E16,\n\t6354:  0x00005E15,\n\t6355:  0x00005E1B,\n\t6356:  0x00005E11,\n\t6357:  0x00005E78,\n\t6358:  0x00005E9A,\n\t6359:  0x00005E97,\n\t6360:  0x00005E9C,\n\t6361:  0x00005E95,\n\t6362:  0x00005E96,\n\t6363:  0x00005EF6,\n\t6364:  0x00005F26,\n\t6365:  0x00005F27,\n\t6366:  0x00005F29,\n\t6367:  0x00005F80,\n\t6368:  0x00005F81,\n\t6369:  0x00005F7F,\n\t6370:  0x00005F7C,\n\t6371:  0x00005FDD,\n\t6372:  0x00005FE0,\n\t6373:  0x00005FFD,\n\t6374:  0x00005FF5,\n\t6375:  0x00005FFF,\n\t6376:  0x0000600F,\n\t6377:  0x00006014,\n\t6378:  0x0000602F,\n\t6379:  0x00006035,\n\t6380:  0x00006016,\n\t6381:  0x0000602A,\n\t6382:  0x00006015,\n\t6383:  0x00006021,\n\t6384:  0x00006027,\n\t6385:  0x00006029,\n\t6386:  0x0000602B,\n\t6387:  0x0000601B,\n\t6388:  0x00006216,\n\t6389:  0x00006215,\n\t6390:  0x0000623F,\n\t6391:  0x0000623E,\n\t6392:  0x00006240,\n\t6393:  0x0000627F,\n\t6394:  0x000062C9,\n\t6395:  0x000062CC,\n\t6396:  0x000062C4,\n\t6397:  0x000062BF,\n\t6398:  0x000062C2,\n\t6399:  0x000062B9,\n\t6400:  0x000062D2,\n\t6401:  0x000062DB,\n\t6402:  0x000062AB,\n\t6403:  0x000062D3,\n\t6404:  0x000062D4,\n\t6405:  0x000062CB,\n\t6406:  0x000062C8,\n\t6407:  0x000062A8,\n\t6408:  0x000062BD,\n\t6409:  0x000062BC,\n\t6410:  0x000062D0,\n\t6411:  0x000062D9,\n\t6412:  0x000062C7,\n\t6413:  0x000062CD,\n\t6414:  0x000062B5,\n\t6415:  0x000062DA,\n\t6416:  0x000062B1,\n\t6417:  0x000062D8,\n\t6418:  0x000062D6,\n\t6419:  0x000062D7,\n\t6420:  0x000062C6,\n\t6421:  0x000062AC,\n\t6422:  0x000062CE,\n\t6423:  0x0000653E,\n\t6424:  0x000065A7,\n\t6425:  0x000065BC,\n\t6426:  0x000065FA,\n\t6427:  0x00006614,\n\t6428:  0x00006613,\n\t6429:  0x0000660C,\n\t6430:  0x00006606,\n\t6431:  0x00006602,\n\t6432:  0x0000660E,\n\t6433:  0x00006600,\n\t6434:  0x0000660F,\n\t6435:  0x00006615,\n\t6436:  0x0000660A,\n\t6437:  0x00006607,\n\t6438:  0x0000670D,\n\t6439:  0x0000670B,\n\t6440:  0x0000676D,\n\t6441:  0x0000678B,\n\t6442:  0x00006795,\n\t6443:  0x00006771,\n\t6444:  0x0000679C,\n\t6445:  0x00006773,\n\t6446:  0x00006777,\n\t6447:  0x00006787,\n\t6448:  0x0000679D,\n\t6449:  0x00006797,\n\t6450:  0x0000676F,\n\t6451:  0x00006770,\n\t6452:  0x0000677F,\n\t6453:  0x00006789,\n\t6454:  0x0000677E,\n\t6455:  0x00006790,\n\t6456:  0x00006775,\n\t6457:  0x0000679A,\n\t6458:  0x00006793,\n\t6459:  0x0000677C,\n\t6460:  0x0000676A,\n\t6461:  0x00006772,\n\t6462:  0x00006B23,\n\t6463:  0x00006B66,\n\t6464:  0x00006B67,\n\t6465:  0x00006B7F,\n\t6466:  0x00006C13,\n\t6467:  0x00006C1B,\n\t6468:  0x00006CE3,\n\t6469:  0x00006CE8,\n\t6470:  0x00006CF3,\n\t6471:  0x00006CB1,\n\t6472:  0x00006CCC,\n\t6473:  0x00006CE5,\n\t6474:  0x00006CB3,\n\t6475:  0x00006CBD,\n\t6476:  0x00006CBE,\n\t6477:  0x00006CBC,\n\t6478:  0x00006CE2,\n\t6479:  0x00006CAB,\n\t6480:  0x00006CD5,\n\t6481:  0x00006CD3,\n\t6482:  0x00006CB8,\n\t6483:  0x00006CC4,\n\t6484:  0x00006CB9,\n\t6485:  0x00006CC1,\n\t6486:  0x00006CAE,\n\t6487:  0x00006CD7,\n\t6488:  0x00006CC5,\n\t6489:  0x00006CF1,\n\t6490:  0x00006CBF,\n\t6491:  0x00006CBB,\n\t6492:  0x00006CE1,\n\t6493:  0x00006CDB,\n\t6494:  0x00006CCA,\n\t6495:  0x00006CAC,\n\t6496:  0x00006CEF,\n\t6497:  0x00006CDC,\n\t6498:  0x00006CD6,\n\t6499:  0x00006CE0,\n\t6500:  0x00007095,\n\t6501:  0x0000708E,\n\t6502:  0x00007092,\n\t6503:  0x0000708A,\n\t6504:  0x00007099,\n\t6505:  0x0000722C,\n\t6506:  0x0000722D,\n\t6507:  0x00007238,\n\t6508:  0x00007248,\n\t6509:  0x00007267,\n\t6510:  0x00007269,\n\t6511:  0x000072C0,\n\t6512:  0x000072CE,\n\t6513:  0x000072D9,\n\t6514:  0x000072D7,\n\t6515:  0x000072D0,\n\t6516:  0x000073A9,\n\t6517:  0x000073A8,\n\t6518:  0x0000739F,\n\t6519:  0x000073AB,\n\t6520:  0x000073A5,\n\t6521:  0x0000753D,\n\t6522:  0x0000759D,\n\t6523:  0x00007599,\n\t6524:  0x0000759A,\n\t6525:  0x00007684,\n\t6526:  0x000076C2,\n\t6527:  0x000076F2,\n\t6528:  0x000076F4,\n\t6529:  0x000077E5,\n\t6530:  0x000077FD,\n\t6531:  0x0000793E,\n\t6532:  0x00007940,\n\t6533:  0x00007941,\n\t6534:  0x000079C9,\n\t6535:  0x000079C8,\n\t6536:  0x00007A7A,\n\t6537:  0x00007A79,\n\t6538:  0x00007AFA,\n\t6539:  0x00007CFE,\n\t6540:  0x00007F54,\n\t6541:  0x00007F8C,\n\t6542:  0x00007F8B,\n\t6543:  0x00008005,\n\t6544:  0x000080BA,\n\t6545:  0x000080A5,\n\t6546:  0x000080A2,\n\t6547:  0x000080B1,\n\t6548:  0x000080A1,\n\t6549:  0x000080AB,\n\t6550:  0x000080A9,\n\t6551:  0x000080B4,\n\t6552:  0x000080AA,\n\t6553:  0x000080AF,\n\t6554:  0x000081E5,\n\t6555:  0x000081FE,\n\t6556:  0x0000820D,\n\t6557:  0x000082B3,\n\t6558:  0x0000829D,\n\t6559:  0x00008299,\n\t6560:  0x000082AD,\n\t6561:  0x000082BD,\n\t6562:  0x0000829F,\n\t6563:  0x000082B9,\n\t6564:  0x000082B1,\n\t6565:  0x000082AC,\n\t6566:  0x000082A5,\n\t6567:  0x000082AF,\n\t6568:  0x000082B8,\n\t6569:  0x000082A3,\n\t6570:  0x000082B0,\n\t6571:  0x000082BE,\n\t6572:  0x000082B7,\n\t6573:  0x0000864E,\n\t6574:  0x00008671,\n\t6575:  0x0000521D,\n\t6576:  0x00008868,\n\t6577:  0x00008ECB,\n\t6578:  0x00008FCE,\n\t6579:  0x00008FD4,\n\t6580:  0x00008FD1,\n\t6581:  0x000090B5,\n\t6582:  0x000090B8,\n\t6583:  0x000090B1,\n\t6584:  0x000090B6,\n\t6585:  0x000091C7,\n\t6586:  0x000091D1,\n\t6587:  0x00009577,\n\t6588:  0x00009580,\n\t6589:  0x0000961C,\n\t6590:  0x00009640,\n\t6591:  0x0000963F,\n\t6592:  0x0000963B,\n\t6593:  0x00009644,\n\t6594:  0x00009642,\n\t6595:  0x000096B9,\n\t6596:  0x000096E8,\n\t6597:  0x00009752,\n\t6598:  0x0000975E,\n\t6599:  0x00004E9F,\n\t6600:  0x00004EAD,\n\t6601:  0x00004EAE,\n\t6602:  0x00004FE1,\n\t6603:  0x00004FB5,\n\t6604:  0x00004FAF,\n\t6605:  0x00004FBF,\n\t6606:  0x00004FE0,\n\t6607:  0x00004FD1,\n\t6608:  0x00004FCF,\n\t6609:  0x00004FDD,\n\t6610:  0x00004FC3,\n\t6611:  0x00004FB6,\n\t6612:  0x00004FD8,\n\t6613:  0x00004FDF,\n\t6614:  0x00004FCA,\n\t6615:  0x00004FD7,\n\t6616:  0x00004FAE,\n\t6617:  0x00004FD0,\n\t6618:  0x00004FC4,\n\t6619:  0x00004FC2,\n\t6620:  0x00004FDA,\n\t6621:  0x00004FCE,\n\t6622:  0x00004FDE,\n\t6623:  0x00004FB7,\n\t6624:  0x00005157,\n\t6625:  0x00005192,\n\t6626:  0x00005191,\n\t6627:  0x000051A0,\n\t6628:  0x0000524E,\n\t6629:  0x00005243,\n\t6630:  0x0000524A,\n\t6631:  0x0000524D,\n\t6632:  0x0000524C,\n\t6633:  0x0000524B,\n\t6634:  0x00005247,\n\t6635:  0x000052C7,\n\t6636:  0x000052C9,\n\t6637:  0x000052C3,\n\t6638:  0x000052C1,\n\t6639:  0x0000530D,\n\t6640:  0x00005357,\n\t6641:  0x0000537B,\n\t6642:  0x0000539A,\n\t6643:  0x000053DB,\n\t6644:  0x000054AC,\n\t6645:  0x000054C0,\n\t6646:  0x000054A8,\n\t6647:  0x000054CE,\n\t6648:  0x000054C9,\n\t6649:  0x000054B8,\n\t6650:  0x000054A6,\n\t6651:  0x000054B3,\n\t6652:  0x000054C7,\n\t6653:  0x000054C2,\n\t6654:  0x000054BD,\n\t6655:  0x000054AA,\n\t6656:  0x000054C1,\n\t6657:  0x000054C4,\n\t6658:  0x000054C8,\n\t6659:  0x000054AF,\n\t6660:  0x000054AB,\n\t6661:  0x000054B1,\n\t6662:  0x000054BB,\n\t6663:  0x000054A9,\n\t6664:  0x000054A7,\n\t6665:  0x000054BF,\n\t6666:  0x000056FF,\n\t6667:  0x00005782,\n\t6668:  0x0000578B,\n\t6669:  0x000057A0,\n\t6670:  0x000057A3,\n\t6671:  0x000057A2,\n\t6672:  0x000057CE,\n\t6673:  0x000057AE,\n\t6674:  0x00005793,\n\t6675:  0x00005955,\n\t6676:  0x00005951,\n\t6677:  0x0000594F,\n\t6678:  0x0000594E,\n\t6679:  0x00005950,\n\t6680:  0x000059DC,\n\t6681:  0x000059D8,\n\t6682:  0x000059FF,\n\t6683:  0x000059E3,\n\t6684:  0x000059E8,\n\t6685:  0x00005A03,\n\t6686:  0x000059E5,\n\t6687:  0x000059EA,\n\t6688:  0x000059DA,\n\t6689:  0x000059E6,\n\t6690:  0x00005A01,\n\t6691:  0x000059FB,\n\t6692:  0x00005B69,\n\t6693:  0x00005BA3,\n\t6694:  0x00005BA6,\n\t6695:  0x00005BA4,\n\t6696:  0x00005BA2,\n\t6697:  0x00005BA5,\n\t6698:  0x00005C01,\n\t6699:  0x00005C4E,\n\t6700:  0x00005C4F,\n\t6701:  0x00005C4D,\n\t6702:  0x00005C4B,\n\t6703:  0x00005CD9,\n\t6704:  0x00005CD2,\n\t6705:  0x00005DF7,\n\t6706:  0x00005E1D,\n\t6707:  0x00005E25,\n\t6708:  0x00005E1F,\n\t6709:  0x00005E7D,\n\t6710:  0x00005EA0,\n\t6711:  0x00005EA6,\n\t6712:  0x00005EFA,\n\t6713:  0x00005F08,\n\t6714:  0x00005F2D,\n\t6715:  0x00005F65,\n\t6716:  0x00005F88,\n\t6717:  0x00005F85,\n\t6718:  0x00005F8A,\n\t6719:  0x00005F8B,\n\t6720:  0x00005F87,\n\t6721:  0x00005F8C,\n\t6722:  0x00005F89,\n\t6723:  0x00006012,\n\t6724:  0x0000601D,\n\t6725:  0x00006020,\n\t6726:  0x00006025,\n\t6727:  0x0000600E,\n\t6728:  0x00006028,\n\t6729:  0x0000604D,\n\t6730:  0x00006070,\n\t6731:  0x00006068,\n\t6732:  0x00006062,\n\t6733:  0x00006046,\n\t6734:  0x00006043,\n\t6735:  0x0000606C,\n\t6736:  0x0000606B,\n\t6737:  0x0000606A,\n\t6738:  0x00006064,\n\t6739:  0x00006241,\n\t6740:  0x000062DC,\n\t6741:  0x00006316,\n\t6742:  0x00006309,\n\t6743:  0x000062FC,\n\t6744:  0x000062ED,\n\t6745:  0x00006301,\n\t6746:  0x000062EE,\n\t6747:  0x000062FD,\n\t6748:  0x00006307,\n\t6749:  0x000062F1,\n\t6750:  0x000062F7,\n\t6751:  0x000062EF,\n\t6752:  0x000062EC,\n\t6753:  0x000062FE,\n\t6754:  0x000062F4,\n\t6755:  0x00006311,\n\t6756:  0x00006302,\n\t6757:  0x0000653F,\n\t6758:  0x00006545,\n\t6759:  0x000065AB,\n\t6760:  0x000065BD,\n\t6761:  0x000065E2,\n\t6762:  0x00006625,\n\t6763:  0x0000662D,\n\t6764:  0x00006620,\n\t6765:  0x00006627,\n\t6766:  0x0000662F,\n\t6767:  0x0000661F,\n\t6768:  0x00006628,\n\t6769:  0x00006631,\n\t6770:  0x00006624,\n\t6771:  0x000066F7,\n\t6772:  0x000067FF,\n\t6773:  0x000067D3,\n\t6774:  0x000067F1,\n\t6775:  0x000067D4,\n\t6776:  0x000067D0,\n\t6777:  0x000067EC,\n\t6778:  0x000067B6,\n\t6779:  0x000067AF,\n\t6780:  0x000067F5,\n\t6781:  0x000067E9,\n\t6782:  0x000067EF,\n\t6783:  0x000067C4,\n\t6784:  0x000067D1,\n\t6785:  0x000067B4,\n\t6786:  0x000067DA,\n\t6787:  0x000067E5,\n\t6788:  0x000067B8,\n\t6789:  0x000067CF,\n\t6790:  0x000067DE,\n\t6791:  0x000067F3,\n\t6792:  0x000067B0,\n\t6793:  0x000067D9,\n\t6794:  0x000067E2,\n\t6795:  0x000067DD,\n\t6796:  0x000067D2,\n\t6797:  0x00006B6A,\n\t6798:  0x00006B83,\n\t6799:  0x00006B86,\n\t6800:  0x00006BB5,\n\t6801:  0x00006BD2,\n\t6802:  0x00006BD7,\n\t6803:  0x00006C1F,\n\t6804:  0x00006CC9,\n\t6805:  0x00006D0B,\n\t6806:  0x00006D32,\n\t6807:  0x00006D2A,\n\t6808:  0x00006D41,\n\t6809:  0x00006D25,\n\t6810:  0x00006D0C,\n\t6811:  0x00006D31,\n\t6812:  0x00006D1E,\n\t6813:  0x00006D17,\n\t6814:  0x00006D3B,\n\t6815:  0x00006D3D,\n\t6816:  0x00006D3E,\n\t6817:  0x00006D36,\n\t6818:  0x00006D1B,\n\t6819:  0x00006CF5,\n\t6820:  0x00006D39,\n\t6821:  0x00006D27,\n\t6822:  0x00006D38,\n\t6823:  0x00006D29,\n\t6824:  0x00006D2E,\n\t6825:  0x00006D35,\n\t6826:  0x00006D0E,\n\t6827:  0x00006D2B,\n\t6828:  0x000070AB,\n\t6829:  0x000070BA,\n\t6830:  0x000070B3,\n\t6831:  0x000070AC,\n\t6832:  0x000070AF,\n\t6833:  0x000070AD,\n\t6834:  0x000070B8,\n\t6835:  0x000070AE,\n\t6836:  0x000070A4,\n\t6837:  0x00007230,\n\t6838:  0x00007272,\n\t6839:  0x0000726F,\n\t6840:  0x00007274,\n\t6841:  0x000072E9,\n\t6842:  0x000072E0,\n\t6843:  0x000072E1,\n\t6844:  0x000073B7,\n\t6845:  0x000073CA,\n\t6846:  0x000073BB,\n\t6847:  0x000073B2,\n\t6848:  0x000073CD,\n\t6849:  0x000073C0,\n\t6850:  0x000073B3,\n\t6851:  0x0000751A,\n\t6852:  0x0000752D,\n\t6853:  0x0000754F,\n\t6854:  0x0000754C,\n\t6855:  0x0000754E,\n\t6856:  0x0000754B,\n\t6857:  0x000075AB,\n\t6858:  0x000075A4,\n\t6859:  0x000075A5,\n\t6860:  0x000075A2,\n\t6861:  0x000075A3,\n\t6862:  0x00007678,\n\t6863:  0x00007686,\n\t6864:  0x00007687,\n\t6865:  0x00007688,\n\t6866:  0x000076C8,\n\t6867:  0x000076C6,\n\t6868:  0x000076C3,\n\t6869:  0x000076C5,\n\t6870:  0x00007701,\n\t6871:  0x000076F9,\n\t6872:  0x000076F8,\n\t6873:  0x00007709,\n\t6874:  0x0000770B,\n\t6875:  0x000076FE,\n\t6876:  0x000076FC,\n\t6877:  0x00007707,\n\t6878:  0x000077DC,\n\t6879:  0x00007802,\n\t6880:  0x00007814,\n\t6881:  0x0000780C,\n\t6882:  0x0000780D,\n\t6883:  0x00007946,\n\t6884:  0x00007949,\n\t6885:  0x00007948,\n\t6886:  0x00007947,\n\t6887:  0x000079B9,\n\t6888:  0x000079BA,\n\t6889:  0x000079D1,\n\t6890:  0x000079D2,\n\t6891:  0x000079CB,\n\t6892:  0x00007A7F,\n\t6893:  0x00007A81,\n\t6894:  0x00007AFF,\n\t6895:  0x00007AFD,\n\t6896:  0x00007C7D,\n\t6897:  0x00007D02,\n\t6898:  0x00007D05,\n\t6899:  0x00007D00,\n\t6900:  0x00007D09,\n\t6901:  0x00007D07,\n\t6902:  0x00007D04,\n\t6903:  0x00007D06,\n\t6904:  0x00007F38,\n\t6905:  0x00007F8E,\n\t6906:  0x00007FBF,\n\t6907:  0x00008004,\n\t6908:  0x00008010,\n\t6909:  0x0000800D,\n\t6910:  0x00008011,\n\t6911:  0x00008036,\n\t6912:  0x000080D6,\n\t6913:  0x000080E5,\n\t6914:  0x000080DA,\n\t6915:  0x000080C3,\n\t6916:  0x000080C4,\n\t6917:  0x000080CC,\n\t6918:  0x000080E1,\n\t6919:  0x000080DB,\n\t6920:  0x000080CE,\n\t6921:  0x000080DE,\n\t6922:  0x000080E4,\n\t6923:  0x000080DD,\n\t6924:  0x000081F4,\n\t6925:  0x00008222,\n\t6926:  0x000082E7,\n\t6927:  0x00008303,\n\t6928:  0x00008305,\n\t6929:  0x000082E3,\n\t6930:  0x000082DB,\n\t6931:  0x000082E6,\n\t6932:  0x00008304,\n\t6933:  0x000082E5,\n\t6934:  0x00008302,\n\t6935:  0x00008309,\n\t6936:  0x000082D2,\n\t6937:  0x000082D7,\n\t6938:  0x000082F1,\n\t6939:  0x00008301,\n\t6940:  0x000082DC,\n\t6941:  0x000082D4,\n\t6942:  0x000082D1,\n\t6943:  0x000082DE,\n\t6944:  0x000082D3,\n\t6945:  0x000082DF,\n\t6946:  0x000082EF,\n\t6947:  0x00008306,\n\t6948:  0x00008650,\n\t6949:  0x00008679,\n\t6950:  0x0000867B,\n\t6951:  0x0000867A,\n\t6952:  0x0000884D,\n\t6953:  0x0000886B,\n\t6954:  0x00008981,\n\t6955:  0x000089D4,\n\t6956:  0x00008A08,\n\t6957:  0x00008A02,\n\t6958:  0x00008A03,\n\t6959:  0x00008C9E,\n\t6960:  0x00008CA0,\n\t6961:  0x00008D74,\n\t6962:  0x00008D73,\n\t6963:  0x00008DB4,\n\t6964:  0x00008ECD,\n\t6965:  0x00008ECC,\n\t6966:  0x00008FF0,\n\t6967:  0x00008FE6,\n\t6968:  0x00008FE2,\n\t6969:  0x00008FEA,\n\t6970:  0x00008FE5,\n\t6971:  0x00008FED,\n\t6972:  0x00008FEB,\n\t6973:  0x00008FE4,\n\t6974:  0x00008FE8,\n\t6975:  0x000090CA,\n\t6976:  0x000090CE,\n\t6977:  0x000090C1,\n\t6978:  0x000090C3,\n\t6979:  0x0000914B,\n\t6980:  0x0000914A,\n\t6981:  0x000091CD,\n\t6982:  0x00009582,\n\t6983:  0x00009650,\n\t6984:  0x0000964B,\n\t6985:  0x0000964C,\n\t6986:  0x0000964D,\n\t6987:  0x00009762,\n\t6988:  0x00009769,\n\t6989:  0x000097CB,\n\t6990:  0x000097ED,\n\t6991:  0x000097F3,\n\t6992:  0x00009801,\n\t6993:  0x000098A8,\n\t6994:  0x000098DB,\n\t6995:  0x000098DF,\n\t6996:  0x00009996,\n\t6997:  0x00009999,\n\t6998:  0x00004E58,\n\t6999:  0x00004EB3,\n\t7000:  0x0000500C,\n\t7001:  0x0000500D,\n\t7002:  0x00005023,\n\t7003:  0x00004FEF,\n\t7004:  0x00005026,\n\t7005:  0x00005025,\n\t7006:  0x00004FF8,\n\t7007:  0x00005029,\n\t7008:  0x00005016,\n\t7009:  0x00005006,\n\t7010:  0x0000503C,\n\t7011:  0x0000501F,\n\t7012:  0x0000501A,\n\t7013:  0x00005012,\n\t7014:  0x00005011,\n\t7015:  0x00004FFA,\n\t7016:  0x00005000,\n\t7017:  0x00005014,\n\t7018:  0x00005028,\n\t7019:  0x00004FF1,\n\t7020:  0x00005021,\n\t7021:  0x0000500B,\n\t7022:  0x00005019,\n\t7023:  0x00005018,\n\t7024:  0x00004FF3,\n\t7025:  0x00004FEE,\n\t7026:  0x0000502D,\n\t7027:  0x0000502A,\n\t7028:  0x00004FFE,\n\t7029:  0x0000502B,\n\t7030:  0x00005009,\n\t7031:  0x0000517C,\n\t7032:  0x000051A4,\n\t7033:  0x000051A5,\n\t7034:  0x000051A2,\n\t7035:  0x000051CD,\n\t7036:  0x000051CC,\n\t7037:  0x000051C6,\n\t7038:  0x000051CB,\n\t7039:  0x00005256,\n\t7040:  0x0000525C,\n\t7041:  0x00005254,\n\t7042:  0x0000525B,\n\t7043:  0x0000525D,\n\t7044:  0x0000532A,\n\t7045:  0x0000537F,\n\t7046:  0x0000539F,\n\t7047:  0x0000539D,\n\t7048:  0x000053DF,\n\t7049:  0x000054E8,\n\t7050:  0x00005510,\n\t7051:  0x00005501,\n\t7052:  0x00005537,\n\t7053:  0x000054FC,\n\t7054:  0x000054E5,\n\t7055:  0x000054F2,\n\t7056:  0x00005506,\n\t7057:  0x000054FA,\n\t7058:  0x00005514,\n\t7059:  0x000054E9,\n\t7060:  0x000054ED,\n\t7061:  0x000054E1,\n\t7062:  0x00005509,\n\t7063:  0x000054EE,\n\t7064:  0x000054EA,\n\t7065:  0x000054E6,\n\t7066:  0x00005527,\n\t7067:  0x00005507,\n\t7068:  0x000054FD,\n\t7069:  0x0000550F,\n\t7070:  0x00005703,\n\t7071:  0x00005704,\n\t7072:  0x000057C2,\n\t7073:  0x000057D4,\n\t7074:  0x000057CB,\n\t7075:  0x000057C3,\n\t7076:  0x00005809,\n\t7077:  0x0000590F,\n\t7078:  0x00005957,\n\t7079:  0x00005958,\n\t7080:  0x0000595A,\n\t7081:  0x00005A11,\n\t7082:  0x00005A18,\n\t7083:  0x00005A1C,\n\t7084:  0x00005A1F,\n\t7085:  0x00005A1B,\n\t7086:  0x00005A13,\n\t7087:  0x000059EC,\n\t7088:  0x00005A20,\n\t7089:  0x00005A23,\n\t7090:  0x00005A29,\n\t7091:  0x00005A25,\n\t7092:  0x00005A0C,\n\t7093:  0x00005A09,\n\t7094:  0x00005B6B,\n\t7095:  0x00005C58,\n\t7096:  0x00005BB0,\n\t7097:  0x00005BB3,\n\t7098:  0x00005BB6,\n\t7099:  0x00005BB4,\n\t7100:  0x00005BAE,\n\t7101:  0x00005BB5,\n\t7102:  0x00005BB9,\n\t7103:  0x00005BB8,\n\t7104:  0x00005C04,\n\t7105:  0x00005C51,\n\t7106:  0x00005C55,\n\t7107:  0x00005C50,\n\t7108:  0x00005CED,\n\t7109:  0x00005CFD,\n\t7110:  0x00005CFB,\n\t7111:  0x00005CEA,\n\t7112:  0x00005CE8,\n\t7113:  0x00005CF0,\n\t7114:  0x00005CF6,\n\t7115:  0x00005D01,\n\t7116:  0x00005CF4,\n\t7117:  0x00005DEE,\n\t7118:  0x00005E2D,\n\t7119:  0x00005E2B,\n\t7120:  0x00005EAB,\n\t7121:  0x00005EAD,\n\t7122:  0x00005EA7,\n\t7123:  0x00005F31,\n\t7124:  0x00005F92,\n\t7125:  0x00005F91,\n\t7126:  0x00005F90,\n\t7127:  0x00006059,\n\t7128:  0x00006063,\n\t7129:  0x00006065,\n\t7130:  0x00006050,\n\t7131:  0x00006055,\n\t7132:  0x0000606D,\n\t7133:  0x00006069,\n\t7134:  0x0000606F,\n\t7135:  0x00006084,\n\t7136:  0x0000609F,\n\t7137:  0x0000609A,\n\t7138:  0x0000608D,\n\t7139:  0x00006094,\n\t7140:  0x0000608C,\n\t7141:  0x00006085,\n\t7142:  0x00006096,\n\t7143:  0x00006247,\n\t7144:  0x000062F3,\n\t7145:  0x00006308,\n\t7146:  0x000062FF,\n\t7147:  0x0000634E,\n\t7148:  0x0000633E,\n\t7149:  0x0000632F,\n\t7150:  0x00006355,\n\t7151:  0x00006342,\n\t7152:  0x00006346,\n\t7153:  0x0000634F,\n\t7154:  0x00006349,\n\t7155:  0x0000633A,\n\t7156:  0x00006350,\n\t7157:  0x0000633D,\n\t7158:  0x0000632A,\n\t7159:  0x0000632B,\n\t7160:  0x00006328,\n\t7161:  0x0000634D,\n\t7162:  0x0000634C,\n\t7163:  0x00006548,\n\t7164:  0x00006549,\n\t7165:  0x00006599,\n\t7166:  0x000065C1,\n\t7167:  0x000065C5,\n\t7168:  0x00006642,\n\t7169:  0x00006649,\n\t7170:  0x0000664F,\n\t7171:  0x00006643,\n\t7172:  0x00006652,\n\t7173:  0x0000664C,\n\t7174:  0x00006645,\n\t7175:  0x00006641,\n\t7176:  0x000066F8,\n\t7177:  0x00006714,\n\t7178:  0x00006715,\n\t7179:  0x00006717,\n\t7180:  0x00006821,\n\t7181:  0x00006838,\n\t7182:  0x00006848,\n\t7183:  0x00006846,\n\t7184:  0x00006853,\n\t7185:  0x00006839,\n\t7186:  0x00006842,\n\t7187:  0x00006854,\n\t7188:  0x00006829,\n\t7189:  0x000068B3,\n\t7190:  0x00006817,\n\t7191:  0x0000684C,\n\t7192:  0x00006851,\n\t7193:  0x0000683D,\n\t7194:  0x000067F4,\n\t7195:  0x00006850,\n\t7196:  0x00006840,\n\t7197:  0x0000683C,\n\t7198:  0x00006843,\n\t7199:  0x0000682A,\n\t7200:  0x00006845,\n\t7201:  0x00006813,\n\t7202:  0x00006818,\n\t7203:  0x00006841,\n\t7204:  0x00006B8A,\n\t7205:  0x00006B89,\n\t7206:  0x00006BB7,\n\t7207:  0x00006C23,\n\t7208:  0x00006C27,\n\t7209:  0x00006C28,\n\t7210:  0x00006C26,\n\t7211:  0x00006C24,\n\t7212:  0x00006CF0,\n\t7213:  0x00006D6A,\n\t7214:  0x00006D95,\n\t7215:  0x00006D88,\n\t7216:  0x00006D87,\n\t7217:  0x00006D66,\n\t7218:  0x00006D78,\n\t7219:  0x00006D77,\n\t7220:  0x00006D59,\n\t7221:  0x00006D93,\n\t7222:  0x00006D6C,\n\t7223:  0x00006D89,\n\t7224:  0x00006D6E,\n\t7225:  0x00006D5A,\n\t7226:  0x00006D74,\n\t7227:  0x00006D69,\n\t7228:  0x00006D8C,\n\t7229:  0x00006D8A,\n\t7230:  0x00006D79,\n\t7231:  0x00006D85,\n\t7232:  0x00006D65,\n\t7233:  0x00006D94,\n\t7234:  0x000070CA,\n\t7235:  0x000070D8,\n\t7236:  0x000070E4,\n\t7237:  0x000070D9,\n\t7238:  0x000070C8,\n\t7239:  0x000070CF,\n\t7240:  0x00007239,\n\t7241:  0x00007279,\n\t7242:  0x000072FC,\n\t7243:  0x000072F9,\n\t7244:  0x000072FD,\n\t7245:  0x000072F8,\n\t7246:  0x000072F7,\n\t7247:  0x00007386,\n\t7248:  0x000073ED,\n\t7249:  0x00007409,\n\t7250:  0x000073EE,\n\t7251:  0x000073E0,\n\t7252:  0x000073EA,\n\t7253:  0x000073DE,\n\t7254:  0x00007554,\n\t7255:  0x0000755D,\n\t7256:  0x0000755C,\n\t7257:  0x0000755A,\n\t7258:  0x00007559,\n\t7259:  0x000075BE,\n\t7260:  0x000075C5,\n\t7261:  0x000075C7,\n\t7262:  0x000075B2,\n\t7263:  0x000075B3,\n\t7264:  0x000075BD,\n\t7265:  0x000075BC,\n\t7266:  0x000075B9,\n\t7267:  0x000075C2,\n\t7268:  0x000075B8,\n\t7269:  0x0000768B,\n\t7270:  0x000076B0,\n\t7271:  0x000076CA,\n\t7272:  0x000076CD,\n\t7273:  0x000076CE,\n\t7274:  0x00007729,\n\t7275:  0x0000771F,\n\t7276:  0x00007720,\n\t7277:  0x00007728,\n\t7278:  0x000077E9,\n\t7279:  0x00007830,\n\t7280:  0x00007827,\n\t7281:  0x00007838,\n\t7282:  0x0000781D,\n\t7283:  0x00007834,\n\t7284:  0x00007837,\n\t7285:  0x00007825,\n\t7286:  0x0000782D,\n\t7287:  0x00007820,\n\t7288:  0x0000781F,\n\t7289:  0x00007832,\n\t7290:  0x00007955,\n\t7291:  0x00007950,\n\t7292:  0x00007960,\n\t7293:  0x0000795F,\n\t7294:  0x00007956,\n\t7295:  0x0000795E,\n\t7296:  0x0000795D,\n\t7297:  0x00007957,\n\t7298:  0x0000795A,\n\t7299:  0x000079E4,\n\t7300:  0x000079E3,\n\t7301:  0x000079E7,\n\t7302:  0x000079DF,\n\t7303:  0x000079E6,\n\t7304:  0x000079E9,\n\t7305:  0x000079D8,\n\t7306:  0x00007A84,\n\t7307:  0x00007A88,\n\t7308:  0x00007AD9,\n\t7309:  0x00007B06,\n\t7310:  0x00007B11,\n\t7311:  0x00007C89,\n\t7312:  0x00007D21,\n\t7313:  0x00007D17,\n\t7314:  0x00007D0B,\n\t7315:  0x00007D0A,\n\t7316:  0x00007D20,\n\t7317:  0x00007D22,\n\t7318:  0x00007D14,\n\t7319:  0x00007D10,\n\t7320:  0x00007D15,\n\t7321:  0x00007D1A,\n\t7322:  0x00007D1C,\n\t7323:  0x00007D0D,\n\t7324:  0x00007D19,\n\t7325:  0x00007D1B,\n\t7326:  0x00007F3A,\n\t7327:  0x00007F5F,\n\t7328:  0x00007F94,\n\t7329:  0x00007FC5,\n\t7330:  0x00007FC1,\n\t7331:  0x00008006,\n\t7332:  0x00008018,\n\t7333:  0x00008015,\n\t7334:  0x00008019,\n\t7335:  0x00008017,\n\t7336:  0x0000803D,\n\t7337:  0x0000803F,\n\t7338:  0x000080F1,\n\t7339:  0x00008102,\n\t7340:  0x000080F0,\n\t7341:  0x00008105,\n\t7342:  0x000080ED,\n\t7343:  0x000080F4,\n\t7344:  0x00008106,\n\t7345:  0x000080F8,\n\t7346:  0x000080F3,\n\t7347:  0x00008108,\n\t7348:  0x000080FD,\n\t7349:  0x0000810A,\n\t7350:  0x000080FC,\n\t7351:  0x000080EF,\n\t7352:  0x000081ED,\n\t7353:  0x000081EC,\n\t7354:  0x00008200,\n\t7355:  0x00008210,\n\t7356:  0x0000822A,\n\t7357:  0x0000822B,\n\t7358:  0x00008228,\n\t7359:  0x0000822C,\n\t7360:  0x000082BB,\n\t7361:  0x0000832B,\n\t7362:  0x00008352,\n\t7363:  0x00008354,\n\t7364:  0x0000834A,\n\t7365:  0x00008338,\n\t7366:  0x00008350,\n\t7367:  0x00008349,\n\t7368:  0x00008335,\n\t7369:  0x00008334,\n\t7370:  0x0000834F,\n\t7371:  0x00008332,\n\t7372:  0x00008339,\n\t7373:  0x00008336,\n\t7374:  0x00008317,\n\t7375:  0x00008340,\n\t7376:  0x00008331,\n\t7377:  0x00008328,\n\t7378:  0x00008343,\n\t7379:  0x00008654,\n\t7380:  0x0000868A,\n\t7381:  0x000086AA,\n\t7382:  0x00008693,\n\t7383:  0x000086A4,\n\t7384:  0x000086A9,\n\t7385:  0x0000868C,\n\t7386:  0x000086A3,\n\t7387:  0x0000869C,\n\t7388:  0x00008870,\n\t7389:  0x00008877,\n\t7390:  0x00008881,\n\t7391:  0x00008882,\n\t7392:  0x0000887D,\n\t7393:  0x00008879,\n\t7394:  0x00008A18,\n\t7395:  0x00008A10,\n\t7396:  0x00008A0E,\n\t7397:  0x00008A0C,\n\t7398:  0x00008A15,\n\t7399:  0x00008A0A,\n\t7400:  0x00008A17,\n\t7401:  0x00008A13,\n\t7402:  0x00008A16,\n\t7403:  0x00008A0F,\n\t7404:  0x00008A11,\n\t7405:  0x00008C48,\n\t7406:  0x00008C7A,\n\t7407:  0x00008C79,\n\t7408:  0x00008CA1,\n\t7409:  0x00008CA2,\n\t7410:  0x00008D77,\n\t7411:  0x00008EAC,\n\t7412:  0x00008ED2,\n\t7413:  0x00008ED4,\n\t7414:  0x00008ECF,\n\t7415:  0x00008FB1,\n\t7416:  0x00009001,\n\t7417:  0x00009006,\n\t7418:  0x00008FF7,\n\t7419:  0x00009000,\n\t7420:  0x00008FFA,\n\t7421:  0x00008FF4,\n\t7422:  0x00009003,\n\t7423:  0x00008FFD,\n\t7424:  0x00009005,\n\t7425:  0x00008FF8,\n\t7426:  0x00009095,\n\t7427:  0x000090E1,\n\t7428:  0x000090DD,\n\t7429:  0x000090E2,\n\t7430:  0x00009152,\n\t7431:  0x0000914D,\n\t7432:  0x0000914C,\n\t7433:  0x000091D8,\n\t7434:  0x000091DD,\n\t7435:  0x000091D7,\n\t7436:  0x000091DC,\n\t7437:  0x000091D9,\n\t7438:  0x00009583,\n\t7439:  0x00009662,\n\t7440:  0x00009663,\n\t7441:  0x00009661,\n\t7442:  0x0000965B,\n\t7443:  0x0000965D,\n\t7444:  0x00009664,\n\t7445:  0x00009658,\n\t7446:  0x0000965E,\n\t7447:  0x000096BB,\n\t7448:  0x000098E2,\n\t7449:  0x000099AC,\n\t7450:  0x00009AA8,\n\t7451:  0x00009AD8,\n\t7452:  0x00009B25,\n\t7453:  0x00009B32,\n\t7454:  0x00009B3C,\n\t7455:  0x00004E7E,\n\t7456:  0x0000507A,\n\t7457:  0x0000507D,\n\t7458:  0x0000505C,\n\t7459:  0x00005047,\n\t7460:  0x00005043,\n\t7461:  0x0000504C,\n\t7462:  0x0000505A,\n\t7463:  0x00005049,\n\t7464:  0x00005065,\n\t7465:  0x00005076,\n\t7466:  0x0000504E,\n\t7467:  0x00005055,\n\t7468:  0x00005075,\n\t7469:  0x00005074,\n\t7470:  0x00005077,\n\t7471:  0x0000504F,\n\t7472:  0x0000500F,\n\t7473:  0x0000506F,\n\t7474:  0x0000506D,\n\t7475:  0x0000515C,\n\t7476:  0x00005195,\n\t7477:  0x000051F0,\n\t7478:  0x0000526A,\n\t7479:  0x0000526F,\n\t7480:  0x000052D2,\n\t7481:  0x000052D9,\n\t7482:  0x000052D8,\n\t7483:  0x000052D5,\n\t7484:  0x00005310,\n\t7485:  0x0000530F,\n\t7486:  0x00005319,\n\t7487:  0x0000533F,\n\t7488:  0x00005340,\n\t7489:  0x0000533E,\n\t7490:  0x000053C3,\n\t7491:  0x000066FC,\n\t7492:  0x00005546,\n\t7493:  0x0000556A,\n\t7494:  0x00005566,\n\t7495:  0x00005544,\n\t7496:  0x0000555E,\n\t7497:  0x00005561,\n\t7498:  0x00005543,\n\t7499:  0x0000554A,\n\t7500:  0x00005531,\n\t7501:  0x00005556,\n\t7502:  0x0000554F,\n\t7503:  0x00005555,\n\t7504:  0x0000552F,\n\t7505:  0x00005564,\n\t7506:  0x00005538,\n\t7507:  0x0000552E,\n\t7508:  0x0000555C,\n\t7509:  0x0000552C,\n\t7510:  0x00005563,\n\t7511:  0x00005533,\n\t7512:  0x00005541,\n\t7513:  0x00005557,\n\t7514:  0x00005708,\n\t7515:  0x0000570B,\n\t7516:  0x00005709,\n\t7517:  0x000057DF,\n\t7518:  0x00005805,\n\t7519:  0x0000580A,\n\t7520:  0x00005806,\n\t7521:  0x000057E0,\n\t7522:  0x000057E4,\n\t7523:  0x000057FA,\n\t7524:  0x00005802,\n\t7525:  0x00005835,\n\t7526:  0x000057F7,\n\t7527:  0x000057F9,\n\t7528:  0x00005920,\n\t7529:  0x00005962,\n\t7530:  0x00005A36,\n\t7531:  0x00005A41,\n\t7532:  0x00005A49,\n\t7533:  0x00005A66,\n\t7534:  0x00005A6A,\n\t7535:  0x00005A40,\n\t7536:  0x00005A3C,\n\t7537:  0x00005A62,\n\t7538:  0x00005A5A,\n\t7539:  0x00005A46,\n\t7540:  0x00005A4A,\n\t7541:  0x00005B70,\n\t7542:  0x00005BC7,\n\t7543:  0x00005BC5,\n\t7544:  0x00005BC4,\n\t7545:  0x00005BC2,\n\t7546:  0x00005BBF,\n\t7547:  0x00005BC6,\n\t7548:  0x00005C09,\n\t7549:  0x00005C08,\n\t7550:  0x00005C07,\n\t7551:  0x00005C60,\n\t7552:  0x00005C5C,\n\t7553:  0x00005C5D,\n\t7554:  0x00005D07,\n\t7555:  0x00005D06,\n\t7556:  0x00005D0E,\n\t7557:  0x00005D1B,\n\t7558:  0x00005D16,\n\t7559:  0x00005D22,\n\t7560:  0x00005D11,\n\t7561:  0x00005D29,\n\t7562:  0x00005D14,\n\t7563:  0x00005D19,\n\t7564:  0x00005D24,\n\t7565:  0x00005D27,\n\t7566:  0x00005D17,\n\t7567:  0x00005DE2,\n\t7568:  0x00005E38,\n\t7569:  0x00005E36,\n\t7570:  0x00005E33,\n\t7571:  0x00005E37,\n\t7572:  0x00005EB7,\n\t7573:  0x00005EB8,\n\t7574:  0x00005EB6,\n\t7575:  0x00005EB5,\n\t7576:  0x00005EBE,\n\t7577:  0x00005F35,\n\t7578:  0x00005F37,\n\t7579:  0x00005F57,\n\t7580:  0x00005F6C,\n\t7581:  0x00005F69,\n\t7582:  0x00005F6B,\n\t7583:  0x00005F97,\n\t7584:  0x00005F99,\n\t7585:  0x00005F9E,\n\t7586:  0x00005F98,\n\t7587:  0x00005FA1,\n\t7588:  0x00005FA0,\n\t7589:  0x00005F9C,\n\t7590:  0x0000607F,\n\t7591:  0x000060A3,\n\t7592:  0x00006089,\n\t7593:  0x000060A0,\n\t7594:  0x000060A8,\n\t7595:  0x000060CB,\n\t7596:  0x000060B4,\n\t7597:  0x000060E6,\n\t7598:  0x000060BD,\n\t7599:  0x000060C5,\n\t7600:  0x000060BB,\n\t7601:  0x000060B5,\n\t7602:  0x000060DC,\n\t7603:  0x000060BC,\n\t7604:  0x000060D8,\n\t7605:  0x000060D5,\n\t7606:  0x000060C6,\n\t7607:  0x000060DF,\n\t7608:  0x000060B8,\n\t7609:  0x000060DA,\n\t7610:  0x000060C7,\n\t7611:  0x0000621A,\n\t7612:  0x0000621B,\n\t7613:  0x00006248,\n\t7614:  0x000063A0,\n\t7615:  0x000063A7,\n\t7616:  0x00006372,\n\t7617:  0x00006396,\n\t7618:  0x000063A2,\n\t7619:  0x000063A5,\n\t7620:  0x00006377,\n\t7621:  0x00006367,\n\t7622:  0x00006398,\n\t7623:  0x000063AA,\n\t7624:  0x00006371,\n\t7625:  0x000063A9,\n\t7626:  0x00006389,\n\t7627:  0x00006383,\n\t7628:  0x0000639B,\n\t7629:  0x0000636B,\n\t7630:  0x000063A8,\n\t7631:  0x00006384,\n\t7632:  0x00006388,\n\t7633:  0x00006399,\n\t7634:  0x000063A1,\n\t7635:  0x000063AC,\n\t7636:  0x00006392,\n\t7637:  0x0000638F,\n\t7638:  0x00006380,\n\t7639:  0x0000637B,\n\t7640:  0x00006369,\n\t7641:  0x00006368,\n\t7642:  0x0000637A,\n\t7643:  0x0000655D,\n\t7644:  0x00006556,\n\t7645:  0x00006551,\n\t7646:  0x00006559,\n\t7647:  0x00006557,\n\t7648:  0x0000555F,\n\t7649:  0x0000654F,\n\t7650:  0x00006558,\n\t7651:  0x00006555,\n\t7652:  0x00006554,\n\t7653:  0x0000659C,\n\t7654:  0x0000659B,\n\t7655:  0x000065AC,\n\t7656:  0x000065CF,\n\t7657:  0x000065CB,\n\t7658:  0x000065CC,\n\t7659:  0x000065CE,\n\t7660:  0x0000665D,\n\t7661:  0x0000665A,\n\t7662:  0x00006664,\n\t7663:  0x00006668,\n\t7664:  0x00006666,\n\t7665:  0x0000665E,\n\t7666:  0x000066F9,\n\t7667:  0x000052D7,\n\t7668:  0x0000671B,\n\t7669:  0x00006881,\n\t7670:  0x000068AF,\n\t7671:  0x000068A2,\n\t7672:  0x00006893,\n\t7673:  0x000068B5,\n\t7674:  0x0000687F,\n\t7675:  0x00006876,\n\t7676:  0x000068B1,\n\t7677:  0x000068A7,\n\t7678:  0x00006897,\n\t7679:  0x000068B0,\n\t7680:  0x00006883,\n\t7681:  0x000068C4,\n\t7682:  0x000068AD,\n\t7683:  0x00006886,\n\t7684:  0x00006885,\n\t7685:  0x00006894,\n\t7686:  0x0000689D,\n\t7687:  0x000068A8,\n\t7688:  0x0000689F,\n\t7689:  0x000068A1,\n\t7690:  0x00006882,\n\t7691:  0x00006B32,\n\t7692:  0x00006BBA,\n\t7693:  0x00006BEB,\n\t7694:  0x00006BEC,\n\t7695:  0x00006C2B,\n\t7696:  0x00006D8E,\n\t7697:  0x00006DBC,\n\t7698:  0x00006DF3,\n\t7699:  0x00006DD9,\n\t7700:  0x00006DB2,\n\t7701:  0x00006DE1,\n\t7702:  0x00006DCC,\n\t7703:  0x00006DE4,\n\t7704:  0x00006DFB,\n\t7705:  0x00006DFA,\n\t7706:  0x00006E05,\n\t7707:  0x00006DC7,\n\t7708:  0x00006DCB,\n\t7709:  0x00006DAF,\n\t7710:  0x00006DD1,\n\t7711:  0x00006DAE,\n\t7712:  0x00006DDE,\n\t7713:  0x00006DF9,\n\t7714:  0x00006DB8,\n\t7715:  0x00006DF7,\n\t7716:  0x00006DF5,\n\t7717:  0x00006DC5,\n\t7718:  0x00006DD2,\n\t7719:  0x00006E1A,\n\t7720:  0x00006DB5,\n\t7721:  0x00006DDA,\n\t7722:  0x00006DEB,\n\t7723:  0x00006DD8,\n\t7724:  0x00006DEA,\n\t7725:  0x00006DF1,\n\t7726:  0x00006DEE,\n\t7727:  0x00006DE8,\n\t7728:  0x00006DC6,\n\t7729:  0x00006DC4,\n\t7730:  0x00006DAA,\n\t7731:  0x00006DEC,\n\t7732:  0x00006DBF,\n\t7733:  0x00006DE6,\n\t7734:  0x000070F9,\n\t7735:  0x00007109,\n\t7736:  0x0000710A,\n\t7737:  0x000070FD,\n\t7738:  0x000070EF,\n\t7739:  0x0000723D,\n\t7740:  0x0000727D,\n\t7741:  0x00007281,\n\t7742:  0x0000731C,\n\t7743:  0x0000731B,\n\t7744:  0x00007316,\n\t7745:  0x00007313,\n\t7746:  0x00007319,\n\t7747:  0x00007387,\n\t7748:  0x00007405,\n\t7749:  0x0000740A,\n\t7750:  0x00007403,\n\t7751:  0x00007406,\n\t7752:  0x000073FE,\n\t7753:  0x0000740D,\n\t7754:  0x000074E0,\n\t7755:  0x000074F6,\n\t7756:  0x000074F7,\n\t7757:  0x0000751C,\n\t7758:  0x00007522,\n\t7759:  0x00007565,\n\t7760:  0x00007566,\n\t7761:  0x00007562,\n\t7762:  0x00007570,\n\t7763:  0x0000758F,\n\t7764:  0x000075D4,\n\t7765:  0x000075D5,\n\t7766:  0x000075B5,\n\t7767:  0x000075CA,\n\t7768:  0x000075CD,\n\t7769:  0x0000768E,\n\t7770:  0x000076D4,\n\t7771:  0x000076D2,\n\t7772:  0x000076DB,\n\t7773:  0x00007737,\n\t7774:  0x0000773E,\n\t7775:  0x0000773C,\n\t7776:  0x00007736,\n\t7777:  0x00007738,\n\t7778:  0x0000773A,\n\t7779:  0x0000786B,\n\t7780:  0x00007843,\n\t7781:  0x0000784E,\n\t7782:  0x00007965,\n\t7783:  0x00007968,\n\t7784:  0x0000796D,\n\t7785:  0x000079FB,\n\t7786:  0x00007A92,\n\t7787:  0x00007A95,\n\t7788:  0x00007B20,\n\t7789:  0x00007B28,\n\t7790:  0x00007B1B,\n\t7791:  0x00007B2C,\n\t7792:  0x00007B26,\n\t7793:  0x00007B19,\n\t7794:  0x00007B1E,\n\t7795:  0x00007B2E,\n\t7796:  0x00007C92,\n\t7797:  0x00007C97,\n\t7798:  0x00007C95,\n\t7799:  0x00007D46,\n\t7800:  0x00007D43,\n\t7801:  0x00007D71,\n\t7802:  0x00007D2E,\n\t7803:  0x00007D39,\n\t7804:  0x00007D3C,\n\t7805:  0x00007D40,\n\t7806:  0x00007D30,\n\t7807:  0x00007D33,\n\t7808:  0x00007D44,\n\t7809:  0x00007D2F,\n\t7810:  0x00007D42,\n\t7811:  0x00007D32,\n\t7812:  0x00007D31,\n\t7813:  0x00007F3D,\n\t7814:  0x00007F9E,\n\t7815:  0x00007F9A,\n\t7816:  0x00007FCC,\n\t7817:  0x00007FCE,\n\t7818:  0x00007FD2,\n\t7819:  0x0000801C,\n\t7820:  0x0000804A,\n\t7821:  0x00008046,\n\t7822:  0x0000812F,\n\t7823:  0x00008116,\n\t7824:  0x00008123,\n\t7825:  0x0000812B,\n\t7826:  0x00008129,\n\t7827:  0x00008130,\n\t7828:  0x00008124,\n\t7829:  0x00008202,\n\t7830:  0x00008235,\n\t7831:  0x00008237,\n\t7832:  0x00008236,\n\t7833:  0x00008239,\n\t7834:  0x0000838E,\n\t7835:  0x0000839E,\n\t7836:  0x00008398,\n\t7837:  0x00008378,\n\t7838:  0x000083A2,\n\t7839:  0x00008396,\n\t7840:  0x000083BD,\n\t7841:  0x000083AB,\n\t7842:  0x00008392,\n\t7843:  0x0000838A,\n\t7844:  0x00008393,\n\t7845:  0x00008389,\n\t7846:  0x000083A0,\n\t7847:  0x00008377,\n\t7848:  0x0000837B,\n\t7849:  0x0000837C,\n\t7850:  0x00008386,\n\t7851:  0x000083A7,\n\t7852:  0x00008655,\n\t7853:  0x00005F6A,\n\t7854:  0x000086C7,\n\t7855:  0x000086C0,\n\t7856:  0x000086B6,\n\t7857:  0x000086C4,\n\t7858:  0x000086B5,\n\t7859:  0x000086C6,\n\t7860:  0x000086CB,\n\t7861:  0x000086B1,\n\t7862:  0x000086AF,\n\t7863:  0x000086C9,\n\t7864:  0x00008853,\n\t7865:  0x0000889E,\n\t7866:  0x00008888,\n\t7867:  0x000088AB,\n\t7868:  0x00008892,\n\t7869:  0x00008896,\n\t7870:  0x0000888D,\n\t7871:  0x0000888B,\n\t7872:  0x00008993,\n\t7873:  0x0000898F,\n\t7874:  0x00008A2A,\n\t7875:  0x00008A1D,\n\t7876:  0x00008A23,\n\t7877:  0x00008A25,\n\t7878:  0x00008A31,\n\t7879:  0x00008A2D,\n\t7880:  0x00008A1F,\n\t7881:  0x00008A1B,\n\t7882:  0x00008A22,\n\t7883:  0x00008C49,\n\t7884:  0x00008C5A,\n\t7885:  0x00008CA9,\n\t7886:  0x00008CAC,\n\t7887:  0x00008CAB,\n\t7888:  0x00008CA8,\n\t7889:  0x00008CAA,\n\t7890:  0x00008CA7,\n\t7891:  0x00008D67,\n\t7892:  0x00008D66,\n\t7893:  0x00008DBE,\n\t7894:  0x00008DBA,\n\t7895:  0x00008EDB,\n\t7896:  0x00008EDF,\n\t7897:  0x00009019,\n\t7898:  0x0000900D,\n\t7899:  0x0000901A,\n\t7900:  0x00009017,\n\t7901:  0x00009023,\n\t7902:  0x0000901F,\n\t7903:  0x0000901D,\n\t7904:  0x00009010,\n\t7905:  0x00009015,\n\t7906:  0x0000901E,\n\t7907:  0x00009020,\n\t7908:  0x0000900F,\n\t7909:  0x00009022,\n\t7910:  0x00009016,\n\t7911:  0x0000901B,\n\t7912:  0x00009014,\n\t7913:  0x000090E8,\n\t7914:  0x000090ED,\n\t7915:  0x000090FD,\n\t7916:  0x00009157,\n\t7917:  0x000091CE,\n\t7918:  0x000091F5,\n\t7919:  0x000091E6,\n\t7920:  0x000091E3,\n\t7921:  0x000091E7,\n\t7922:  0x000091ED,\n\t7923:  0x000091E9,\n\t7924:  0x00009589,\n\t7925:  0x0000966A,\n\t7926:  0x00009675,\n\t7927:  0x00009673,\n\t7928:  0x00009678,\n\t7929:  0x00009670,\n\t7930:  0x00009674,\n\t7931:  0x00009676,\n\t7932:  0x00009677,\n\t7933:  0x0000966C,\n\t7934:  0x000096C0,\n\t7935:  0x000096EA,\n\t7936:  0x000096E9,\n\t7937:  0x00007AE0,\n\t7938:  0x00007ADF,\n\t7939:  0x00009802,\n\t7940:  0x00009803,\n\t7941:  0x00009B5A,\n\t7942:  0x00009CE5,\n\t7943:  0x00009E75,\n\t7944:  0x00009E7F,\n\t7945:  0x00009EA5,\n\t7946:  0x00009EBB,\n\t7947:  0x000050A2,\n\t7948:  0x0000508D,\n\t7949:  0x00005085,\n\t7950:  0x00005099,\n\t7951:  0x00005091,\n\t7952:  0x00005080,\n\t7953:  0x00005096,\n\t7954:  0x00005098,\n\t7955:  0x0000509A,\n\t7956:  0x00006700,\n\t7957:  0x000051F1,\n\t7958:  0x00005272,\n\t7959:  0x00005274,\n\t7960:  0x00005275,\n\t7961:  0x00005269,\n\t7962:  0x000052DE,\n\t7963:  0x000052DD,\n\t7964:  0x000052DB,\n\t7965:  0x0000535A,\n\t7966:  0x000053A5,\n\t7967:  0x0000557B,\n\t7968:  0x00005580,\n\t7969:  0x000055A7,\n\t7970:  0x0000557C,\n\t7971:  0x0000558A,\n\t7972:  0x0000559D,\n\t7973:  0x00005598,\n\t7974:  0x00005582,\n\t7975:  0x0000559C,\n\t7976:  0x000055AA,\n\t7977:  0x00005594,\n\t7978:  0x00005587,\n\t7979:  0x0000558B,\n\t7980:  0x00005583,\n\t7981:  0x000055B3,\n\t7982:  0x000055AE,\n\t7983:  0x0000559F,\n\t7984:  0x0000553E,\n\t7985:  0x000055B2,\n\t7986:  0x0000559A,\n\t7987:  0x000055BB,\n\t7988:  0x000055AC,\n\t7989:  0x000055B1,\n\t7990:  0x0000557E,\n\t7991:  0x00005589,\n\t7992:  0x000055AB,\n\t7993:  0x00005599,\n\t7994:  0x0000570D,\n\t7995:  0x0000582F,\n\t7996:  0x0000582A,\n\t7997:  0x00005834,\n\t7998:  0x00005824,\n\t7999:  0x00005830,\n\t8000:  0x00005831,\n\t8001:  0x00005821,\n\t8002:  0x0000581D,\n\t8003:  0x00005820,\n\t8004:  0x000058F9,\n\t8005:  0x000058FA,\n\t8006:  0x00005960,\n\t8007:  0x00005A77,\n\t8008:  0x00005A9A,\n\t8009:  0x00005A7F,\n\t8010:  0x00005A92,\n\t8011:  0x00005A9B,\n\t8012:  0x00005AA7,\n\t8013:  0x00005B73,\n\t8014:  0x00005B71,\n\t8015:  0x00005BD2,\n\t8016:  0x00005BCC,\n\t8017:  0x00005BD3,\n\t8018:  0x00005BD0,\n\t8019:  0x00005C0A,\n\t8020:  0x00005C0B,\n\t8021:  0x00005C31,\n\t8022:  0x00005D4C,\n\t8023:  0x00005D50,\n\t8024:  0x00005D34,\n\t8025:  0x00005D47,\n\t8026:  0x00005DFD,\n\t8027:  0x00005E45,\n\t8028:  0x00005E3D,\n\t8029:  0x00005E40,\n\t8030:  0x00005E43,\n\t8031:  0x00005E7E,\n\t8032:  0x00005ECA,\n\t8033:  0x00005EC1,\n\t8034:  0x00005EC2,\n\t8035:  0x00005EC4,\n\t8036:  0x00005F3C,\n\t8037:  0x00005F6D,\n\t8038:  0x00005FA9,\n\t8039:  0x00005FAA,\n\t8040:  0x00005FA8,\n\t8041:  0x000060D1,\n\t8042:  0x000060E1,\n\t8043:  0x000060B2,\n\t8044:  0x000060B6,\n\t8045:  0x000060E0,\n\t8046:  0x0000611C,\n\t8047:  0x00006123,\n\t8048:  0x000060FA,\n\t8049:  0x00006115,\n\t8050:  0x000060F0,\n\t8051:  0x000060FB,\n\t8052:  0x000060F4,\n\t8053:  0x00006168,\n\t8054:  0x000060F1,\n\t8055:  0x0000610E,\n\t8056:  0x000060F6,\n\t8057:  0x00006109,\n\t8058:  0x00006100,\n\t8059:  0x00006112,\n\t8060:  0x0000621F,\n\t8061:  0x00006249,\n\t8062:  0x000063A3,\n\t8063:  0x0000638C,\n\t8064:  0x000063CF,\n\t8065:  0x000063C0,\n\t8066:  0x000063E9,\n\t8067:  0x000063C9,\n\t8068:  0x000063C6,\n\t8069:  0x000063CD,\n\t8070:  0x000063D2,\n\t8071:  0x000063E3,\n\t8072:  0x000063D0,\n\t8073:  0x000063E1,\n\t8074:  0x000063D6,\n\t8075:  0x000063ED,\n\t8076:  0x000063EE,\n\t8077:  0x00006376,\n\t8078:  0x000063F4,\n\t8079:  0x000063EA,\n\t8080:  0x000063DB,\n\t8081:  0x00006452,\n\t8082:  0x000063DA,\n\t8083:  0x000063F9,\n\t8084:  0x0000655E,\n\t8085:  0x00006566,\n\t8086:  0x00006562,\n\t8087:  0x00006563,\n\t8088:  0x00006591,\n\t8089:  0x00006590,\n\t8090:  0x000065AF,\n\t8091:  0x0000666E,\n\t8092:  0x00006670,\n\t8093:  0x00006674,\n\t8094:  0x00006676,\n\t8095:  0x0000666F,\n\t8096:  0x00006691,\n\t8097:  0x0000667A,\n\t8098:  0x0000667E,\n\t8099:  0x00006677,\n\t8100:  0x000066FE,\n\t8101:  0x000066FF,\n\t8102:  0x0000671F,\n\t8103:  0x0000671D,\n\t8104:  0x000068FA,\n\t8105:  0x000068D5,\n\t8106:  0x000068E0,\n\t8107:  0x000068D8,\n\t8108:  0x000068D7,\n\t8109:  0x00006905,\n\t8110:  0x000068DF,\n\t8111:  0x000068F5,\n\t8112:  0x000068EE,\n\t8113:  0x000068E7,\n\t8114:  0x000068F9,\n\t8115:  0x000068D2,\n\t8116:  0x000068F2,\n\t8117:  0x000068E3,\n\t8118:  0x000068CB,\n\t8119:  0x000068CD,\n\t8120:  0x0000690D,\n\t8121:  0x00006912,\n\t8122:  0x0000690E,\n\t8123:  0x000068C9,\n\t8124:  0x000068DA,\n\t8125:  0x0000696E,\n\t8126:  0x000068FB,\n\t8127:  0x00006B3E,\n\t8128:  0x00006B3A,\n\t8129:  0x00006B3D,\n\t8130:  0x00006B98,\n\t8131:  0x00006B96,\n\t8132:  0x00006BBC,\n\t8133:  0x00006BEF,\n\t8134:  0x00006C2E,\n\t8135:  0x00006C2F,\n\t8136:  0x00006C2C,\n\t8137:  0x00006E2F,\n\t8138:  0x00006E38,\n\t8139:  0x00006E54,\n\t8140:  0x00006E21,\n\t8141:  0x00006E32,\n\t8142:  0x00006E67,\n\t8143:  0x00006E4A,\n\t8144:  0x00006E20,\n\t8145:  0x00006E25,\n\t8146:  0x00006E23,\n\t8147:  0x00006E1B,\n\t8148:  0x00006E5B,\n\t8149:  0x00006E58,\n\t8150:  0x00006E24,\n\t8151:  0x00006E56,\n\t8152:  0x00006E6E,\n\t8153:  0x00006E2D,\n\t8154:  0x00006E26,\n\t8155:  0x00006E6F,\n\t8156:  0x00006E34,\n\t8157:  0x00006E4D,\n\t8158:  0x00006E3A,\n\t8159:  0x00006E2C,\n\t8160:  0x00006E43,\n\t8161:  0x00006E1D,\n\t8162:  0x00006E3E,\n\t8163:  0x00006ECB,\n\t8164:  0x00006E89,\n\t8165:  0x00006E19,\n\t8166:  0x00006E4E,\n\t8167:  0x00006E63,\n\t8168:  0x00006E44,\n\t8169:  0x00006E72,\n\t8170:  0x00006E69,\n\t8171:  0x00006E5F,\n\t8172:  0x00007119,\n\t8173:  0x0000711A,\n\t8174:  0x00007126,\n\t8175:  0x00007130,\n\t8176:  0x00007121,\n\t8177:  0x00007136,\n\t8178:  0x0000716E,\n\t8179:  0x0000711C,\n\t8180:  0x0000724C,\n\t8181:  0x00007284,\n\t8182:  0x00007280,\n\t8183:  0x00007336,\n\t8184:  0x00007325,\n\t8185:  0x00007334,\n\t8186:  0x00007329,\n\t8187:  0x0000743A,\n\t8188:  0x0000742A,\n\t8189:  0x00007433,\n\t8190:  0x00007422,\n\t8191:  0x00007425,\n\t8192:  0x00007435,\n\t8193:  0x00007436,\n\t8194:  0x00007434,\n\t8195:  0x0000742F,\n\t8196:  0x0000741B,\n\t8197:  0x00007426,\n\t8198:  0x00007428,\n\t8199:  0x00007525,\n\t8200:  0x00007526,\n\t8201:  0x0000756B,\n\t8202:  0x0000756A,\n\t8203:  0x000075E2,\n\t8204:  0x000075DB,\n\t8205:  0x000075E3,\n\t8206:  0x000075D9,\n\t8207:  0x000075D8,\n\t8208:  0x000075DE,\n\t8209:  0x000075E0,\n\t8210:  0x0000767B,\n\t8211:  0x0000767C,\n\t8212:  0x00007696,\n\t8213:  0x00007693,\n\t8214:  0x000076B4,\n\t8215:  0x000076DC,\n\t8216:  0x0000774F,\n\t8217:  0x000077ED,\n\t8218:  0x0000785D,\n\t8219:  0x0000786C,\n\t8220:  0x0000786F,\n\t8221:  0x00007A0D,\n\t8222:  0x00007A08,\n\t8223:  0x00007A0B,\n\t8224:  0x00007A05,\n\t8225:  0x00007A00,\n\t8226:  0x00007A98,\n\t8227:  0x00007A97,\n\t8228:  0x00007A96,\n\t8229:  0x00007AE5,\n\t8230:  0x00007AE3,\n\t8231:  0x00007B49,\n\t8232:  0x00007B56,\n\t8233:  0x00007B46,\n\t8234:  0x00007B50,\n\t8235:  0x00007B52,\n\t8236:  0x00007B54,\n\t8237:  0x00007B4D,\n\t8238:  0x00007B4B,\n\t8239:  0x00007B4F,\n\t8240:  0x00007B51,\n\t8241:  0x00007C9F,\n\t8242:  0x00007CA5,\n\t8243:  0x00007D5E,\n\t8244:  0x00007D50,\n\t8245:  0x00007D68,\n\t8246:  0x00007D55,\n\t8247:  0x00007D2B,\n\t8248:  0x00007D6E,\n\t8249:  0x00007D72,\n\t8250:  0x00007D61,\n\t8251:  0x00007D66,\n\t8252:  0x00007D62,\n\t8253:  0x00007D70,\n\t8254:  0x00007D73,\n\t8255:  0x00005584,\n\t8256:  0x00007FD4,\n\t8257:  0x00007FD5,\n\t8258:  0x0000800B,\n\t8259:  0x00008052,\n\t8260:  0x00008085,\n\t8261:  0x00008155,\n\t8262:  0x00008154,\n\t8263:  0x0000814B,\n\t8264:  0x00008151,\n\t8265:  0x0000814E,\n\t8266:  0x00008139,\n\t8267:  0x00008146,\n\t8268:  0x0000813E,\n\t8269:  0x0000814C,\n\t8270:  0x00008153,\n\t8271:  0x00008174,\n\t8272:  0x00008212,\n\t8273:  0x0000821C,\n\t8274:  0x000083E9,\n\t8275:  0x00008403,\n\t8276:  0x000083F8,\n\t8277:  0x0000840D,\n\t8278:  0x000083E0,\n\t8279:  0x000083C5,\n\t8280:  0x0000840B,\n\t8281:  0x000083C1,\n\t8282:  0x000083EF,\n\t8283:  0x000083F1,\n\t8284:  0x000083F4,\n\t8285:  0x00008457,\n\t8286:  0x0000840A,\n\t8287:  0x000083F0,\n\t8288:  0x0000840C,\n\t8289:  0x000083CC,\n\t8290:  0x000083FD,\n\t8291:  0x000083F2,\n\t8292:  0x000083CA,\n\t8293:  0x00008438,\n\t8294:  0x0000840E,\n\t8295:  0x00008404,\n\t8296:  0x000083DC,\n\t8297:  0x00008407,\n\t8298:  0x000083D4,\n\t8299:  0x000083DF,\n\t8300:  0x0000865B,\n\t8301:  0x000086DF,\n\t8302:  0x000086D9,\n\t8303:  0x000086ED,\n\t8304:  0x000086D4,\n\t8305:  0x000086DB,\n\t8306:  0x000086E4,\n\t8307:  0x000086D0,\n\t8308:  0x000086DE,\n\t8309:  0x00008857,\n\t8310:  0x000088C1,\n\t8311:  0x000088C2,\n\t8312:  0x000088B1,\n\t8313:  0x00008983,\n\t8314:  0x00008996,\n\t8315:  0x00008A3B,\n\t8316:  0x00008A60,\n\t8317:  0x00008A55,\n\t8318:  0x00008A5E,\n\t8319:  0x00008A3C,\n\t8320:  0x00008A41,\n\t8321:  0x00008A54,\n\t8322:  0x00008A5B,\n\t8323:  0x00008A50,\n\t8324:  0x00008A46,\n\t8325:  0x00008A34,\n\t8326:  0x00008A3A,\n\t8327:  0x00008A36,\n\t8328:  0x00008A56,\n\t8329:  0x00008C61,\n\t8330:  0x00008C82,\n\t8331:  0x00008CAF,\n\t8332:  0x00008CBC,\n\t8333:  0x00008CB3,\n\t8334:  0x00008CBD,\n\t8335:  0x00008CC1,\n\t8336:  0x00008CBB,\n\t8337:  0x00008CC0,\n\t8338:  0x00008CB4,\n\t8339:  0x00008CB7,\n\t8340:  0x00008CB6,\n\t8341:  0x00008CBF,\n\t8342:  0x00008CB8,\n\t8343:  0x00008D8A,\n\t8344:  0x00008D85,\n\t8345:  0x00008D81,\n\t8346:  0x00008DCE,\n\t8347:  0x00008DDD,\n\t8348:  0x00008DCB,\n\t8349:  0x00008DDA,\n\t8350:  0x00008DD1,\n\t8351:  0x00008DCC,\n\t8352:  0x00008DDB,\n\t8353:  0x00008DC6,\n\t8354:  0x00008EFB,\n\t8355:  0x00008EF8,\n\t8356:  0x00008EFC,\n\t8357:  0x00008F9C,\n\t8358:  0x0000902E,\n\t8359:  0x00009035,\n\t8360:  0x00009031,\n\t8361:  0x00009038,\n\t8362:  0x00009032,\n\t8363:  0x00009036,\n\t8364:  0x00009102,\n\t8365:  0x000090F5,\n\t8366:  0x00009109,\n\t8367:  0x000090FE,\n\t8368:  0x00009163,\n\t8369:  0x00009165,\n\t8370:  0x000091CF,\n\t8371:  0x00009214,\n\t8372:  0x00009215,\n\t8373:  0x00009223,\n\t8374:  0x00009209,\n\t8375:  0x0000921E,\n\t8376:  0x0000920D,\n\t8377:  0x00009210,\n\t8378:  0x00009207,\n\t8379:  0x00009211,\n\t8380:  0x00009594,\n\t8381:  0x0000958F,\n\t8382:  0x0000958B,\n\t8383:  0x00009591,\n\t8384:  0x00009593,\n\t8385:  0x00009592,\n\t8386:  0x0000958E,\n\t8387:  0x0000968A,\n\t8388:  0x0000968E,\n\t8389:  0x0000968B,\n\t8390:  0x0000967D,\n\t8391:  0x00009685,\n\t8392:  0x00009686,\n\t8393:  0x0000968D,\n\t8394:  0x00009672,\n\t8395:  0x00009684,\n\t8396:  0x000096C1,\n\t8397:  0x000096C5,\n\t8398:  0x000096C4,\n\t8399:  0x000096C6,\n\t8400:  0x000096C7,\n\t8401:  0x000096EF,\n\t8402:  0x000096F2,\n\t8403:  0x000097CC,\n\t8404:  0x00009805,\n\t8405:  0x00009806,\n\t8406:  0x00009808,\n\t8407:  0x000098E7,\n\t8408:  0x000098EA,\n\t8409:  0x000098EF,\n\t8410:  0x000098E9,\n\t8411:  0x000098F2,\n\t8412:  0x000098ED,\n\t8413:  0x000099AE,\n\t8414:  0x000099AD,\n\t8415:  0x00009EC3,\n\t8416:  0x00009ECD,\n\t8417:  0x00009ED1,\n\t8418:  0x00004E82,\n\t8419:  0x000050AD,\n\t8420:  0x000050B5,\n\t8421:  0x000050B2,\n\t8422:  0x000050B3,\n\t8423:  0x000050C5,\n\t8424:  0x000050BE,\n\t8425:  0x000050AC,\n\t8426:  0x000050B7,\n\t8427:  0x000050BB,\n\t8428:  0x000050AF,\n\t8429:  0x000050C7,\n\t8430:  0x0000527F,\n\t8431:  0x00005277,\n\t8432:  0x0000527D,\n\t8433:  0x000052DF,\n\t8434:  0x000052E6,\n\t8435:  0x000052E4,\n\t8436:  0x000052E2,\n\t8437:  0x000052E3,\n\t8438:  0x0000532F,\n\t8439:  0x000055DF,\n\t8440:  0x000055E8,\n\t8441:  0x000055D3,\n\t8442:  0x000055E6,\n\t8443:  0x000055CE,\n\t8444:  0x000055DC,\n\t8445:  0x000055C7,\n\t8446:  0x000055D1,\n\t8447:  0x000055E3,\n\t8448:  0x000055E4,\n\t8449:  0x000055EF,\n\t8450:  0x000055DA,\n\t8451:  0x000055E1,\n\t8452:  0x000055C5,\n\t8453:  0x000055C6,\n\t8454:  0x000055E5,\n\t8455:  0x000055C9,\n\t8456:  0x00005712,\n\t8457:  0x00005713,\n\t8458:  0x0000585E,\n\t8459:  0x00005851,\n\t8460:  0x00005858,\n\t8461:  0x00005857,\n\t8462:  0x0000585A,\n\t8463:  0x00005854,\n\t8464:  0x0000586B,\n\t8465:  0x0000584C,\n\t8466:  0x0000586D,\n\t8467:  0x0000584A,\n\t8468:  0x00005862,\n\t8469:  0x00005852,\n\t8470:  0x0000584B,\n\t8471:  0x00005967,\n\t8472:  0x00005AC1,\n\t8473:  0x00005AC9,\n\t8474:  0x00005ACC,\n\t8475:  0x00005ABE,\n\t8476:  0x00005ABD,\n\t8477:  0x00005ABC,\n\t8478:  0x00005AB3,\n\t8479:  0x00005AC2,\n\t8480:  0x00005AB2,\n\t8481:  0x00005D69,\n\t8482:  0x00005D6F,\n\t8483:  0x00005E4C,\n\t8484:  0x00005E79,\n\t8485:  0x00005EC9,\n\t8486:  0x00005EC8,\n\t8487:  0x00005F12,\n\t8488:  0x00005F59,\n\t8489:  0x00005FAC,\n\t8490:  0x00005FAE,\n\t8491:  0x0000611A,\n\t8492:  0x0000610F,\n\t8493:  0x00006148,\n\t8494:  0x0000611F,\n\t8495:  0x000060F3,\n\t8496:  0x0000611B,\n\t8497:  0x000060F9,\n\t8498:  0x00006101,\n\t8499:  0x00006108,\n\t8500:  0x0000614E,\n\t8501:  0x0000614C,\n\t8502:  0x00006144,\n\t8503:  0x0000614D,\n\t8504:  0x0000613E,\n\t8505:  0x00006134,\n\t8506:  0x00006127,\n\t8507:  0x0000610D,\n\t8508:  0x00006106,\n\t8509:  0x00006137,\n\t8510:  0x00006221,\n\t8511:  0x00006222,\n\t8512:  0x00006413,\n\t8513:  0x0000643E,\n\t8514:  0x0000641E,\n\t8515:  0x0000642A,\n\t8516:  0x0000642D,\n\t8517:  0x0000643D,\n\t8518:  0x0000642C,\n\t8519:  0x0000640F,\n\t8520:  0x0000641C,\n\t8521:  0x00006414,\n\t8522:  0x0000640D,\n\t8523:  0x00006436,\n\t8524:  0x00006416,\n\t8525:  0x00006417,\n\t8526:  0x00006406,\n\t8527:  0x0000656C,\n\t8528:  0x0000659F,\n\t8529:  0x000065B0,\n\t8530:  0x00006697,\n\t8531:  0x00006689,\n\t8532:  0x00006687,\n\t8533:  0x00006688,\n\t8534:  0x00006696,\n\t8535:  0x00006684,\n\t8536:  0x00006698,\n\t8537:  0x0000668D,\n\t8538:  0x00006703,\n\t8539:  0x00006994,\n\t8540:  0x0000696D,\n\t8541:  0x0000695A,\n\t8542:  0x00006977,\n\t8543:  0x00006960,\n\t8544:  0x00006954,\n\t8545:  0x00006975,\n\t8546:  0x00006930,\n\t8547:  0x00006982,\n\t8548:  0x0000694A,\n\t8549:  0x00006968,\n\t8550:  0x0000696B,\n\t8551:  0x0000695E,\n\t8552:  0x00006953,\n\t8553:  0x00006979,\n\t8554:  0x00006986,\n\t8555:  0x0000695D,\n\t8556:  0x00006963,\n\t8557:  0x0000695B,\n\t8558:  0x00006B47,\n\t8559:  0x00006B72,\n\t8560:  0x00006BC0,\n\t8561:  0x00006BBF,\n\t8562:  0x00006BD3,\n\t8563:  0x00006BFD,\n\t8564:  0x00006EA2,\n\t8565:  0x00006EAF,\n\t8566:  0x00006ED3,\n\t8567:  0x00006EB6,\n\t8568:  0x00006EC2,\n\t8569:  0x00006E90,\n\t8570:  0x00006E9D,\n\t8571:  0x00006EC7,\n\t8572:  0x00006EC5,\n\t8573:  0x00006EA5,\n\t8574:  0x00006E98,\n\t8575:  0x00006EBC,\n\t8576:  0x00006EBA,\n\t8577:  0x00006EAB,\n\t8578:  0x00006ED1,\n\t8579:  0x00006E96,\n\t8580:  0x00006E9C,\n\t8581:  0x00006EC4,\n\t8582:  0x00006ED4,\n\t8583:  0x00006EAA,\n\t8584:  0x00006EA7,\n\t8585:  0x00006EB4,\n\t8586:  0x0000714E,\n\t8587:  0x00007159,\n\t8588:  0x00007169,\n\t8589:  0x00007164,\n\t8590:  0x00007149,\n\t8591:  0x00007167,\n\t8592:  0x0000715C,\n\t8593:  0x0000716C,\n\t8594:  0x00007166,\n\t8595:  0x0000714C,\n\t8596:  0x00007165,\n\t8597:  0x0000715E,\n\t8598:  0x00007146,\n\t8599:  0x00007168,\n\t8600:  0x00007156,\n\t8601:  0x0000723A,\n\t8602:  0x00007252,\n\t8603:  0x00007337,\n\t8604:  0x00007345,\n\t8605:  0x0000733F,\n\t8606:  0x0000733E,\n\t8607:  0x0000746F,\n\t8608:  0x0000745A,\n\t8609:  0x00007455,\n\t8610:  0x0000745F,\n\t8611:  0x0000745E,\n\t8612:  0x00007441,\n\t8613:  0x0000743F,\n\t8614:  0x00007459,\n\t8615:  0x0000745B,\n\t8616:  0x0000745C,\n\t8617:  0x00007576,\n\t8618:  0x00007578,\n\t8619:  0x00007600,\n\t8620:  0x000075F0,\n\t8621:  0x00007601,\n\t8622:  0x000075F2,\n\t8623:  0x000075F1,\n\t8624:  0x000075FA,\n\t8625:  0x000075FF,\n\t8626:  0x000075F4,\n\t8627:  0x000075F3,\n\t8628:  0x000076DE,\n\t8629:  0x000076DF,\n\t8630:  0x0000775B,\n\t8631:  0x0000776B,\n\t8632:  0x00007766,\n\t8633:  0x0000775E,\n\t8634:  0x00007763,\n\t8635:  0x00007779,\n\t8636:  0x0000776A,\n\t8637:  0x0000776C,\n\t8638:  0x0000775C,\n\t8639:  0x00007765,\n\t8640:  0x00007768,\n\t8641:  0x00007762,\n\t8642:  0x000077EE,\n\t8643:  0x0000788E,\n\t8644:  0x000078B0,\n\t8645:  0x00007897,\n\t8646:  0x00007898,\n\t8647:  0x0000788C,\n\t8648:  0x00007889,\n\t8649:  0x0000787C,\n\t8650:  0x00007891,\n\t8651:  0x00007893,\n\t8652:  0x0000787F,\n\t8653:  0x0000797A,\n\t8654:  0x0000797F,\n\t8655:  0x00007981,\n\t8656:  0x0000842C,\n\t8657:  0x000079BD,\n\t8658:  0x00007A1C,\n\t8659:  0x00007A1A,\n\t8660:  0x00007A20,\n\t8661:  0x00007A14,\n\t8662:  0x00007A1F,\n\t8663:  0x00007A1E,\n\t8664:  0x00007A9F,\n\t8665:  0x00007AA0,\n\t8666:  0x00007B77,\n\t8667:  0x00007BC0,\n\t8668:  0x00007B60,\n\t8669:  0x00007B6E,\n\t8670:  0x00007B67,\n\t8671:  0x00007CB1,\n\t8672:  0x00007CB3,\n\t8673:  0x00007CB5,\n\t8674:  0x00007D93,\n\t8675:  0x00007D79,\n\t8676:  0x00007D91,\n\t8677:  0x00007D81,\n\t8678:  0x00007D8F,\n\t8679:  0x00007D5B,\n\t8680:  0x00007F6E,\n\t8681:  0x00007F69,\n\t8682:  0x00007F6A,\n\t8683:  0x00007F72,\n\t8684:  0x00007FA9,\n\t8685:  0x00007FA8,\n\t8686:  0x00007FA4,\n\t8687:  0x00008056,\n\t8688:  0x00008058,\n\t8689:  0x00008086,\n\t8690:  0x00008084,\n\t8691:  0x00008171,\n\t8692:  0x00008170,\n\t8693:  0x00008178,\n\t8694:  0x00008165,\n\t8695:  0x0000816E,\n\t8696:  0x00008173,\n\t8697:  0x0000816B,\n\t8698:  0x00008179,\n\t8699:  0x0000817A,\n\t8700:  0x00008166,\n\t8701:  0x00008205,\n\t8702:  0x00008247,\n\t8703:  0x00008482,\n\t8704:  0x00008477,\n\t8705:  0x0000843D,\n\t8706:  0x00008431,\n\t8707:  0x00008475,\n\t8708:  0x00008466,\n\t8709:  0x0000846B,\n\t8710:  0x00008449,\n\t8711:  0x0000846C,\n\t8712:  0x0000845B,\n\t8713:  0x0000843C,\n\t8714:  0x00008435,\n\t8715:  0x00008461,\n\t8716:  0x00008463,\n\t8717:  0x00008469,\n\t8718:  0x0000846D,\n\t8719:  0x00008446,\n\t8720:  0x0000865E,\n\t8721:  0x0000865C,\n\t8722:  0x0000865F,\n\t8723:  0x000086F9,\n\t8724:  0x00008713,\n\t8725:  0x00008708,\n\t8726:  0x00008707,\n\t8727:  0x00008700,\n\t8728:  0x000086FE,\n\t8729:  0x000086FB,\n\t8730:  0x00008702,\n\t8731:  0x00008703,\n\t8732:  0x00008706,\n\t8733:  0x0000870A,\n\t8734:  0x00008859,\n\t8735:  0x000088DF,\n\t8736:  0x000088D4,\n\t8737:  0x000088D9,\n\t8738:  0x000088DC,\n\t8739:  0x000088D8,\n\t8740:  0x000088DD,\n\t8741:  0x000088E1,\n\t8742:  0x000088CA,\n\t8743:  0x000088D5,\n\t8744:  0x000088D2,\n\t8745:  0x0000899C,\n\t8746:  0x000089E3,\n\t8747:  0x00008A6B,\n\t8748:  0x00008A72,\n\t8749:  0x00008A73,\n\t8750:  0x00008A66,\n\t8751:  0x00008A69,\n\t8752:  0x00008A70,\n\t8753:  0x00008A87,\n\t8754:  0x00008A7C,\n\t8755:  0x00008A63,\n\t8756:  0x00008AA0,\n\t8757:  0x00008A71,\n\t8758:  0x00008A85,\n\t8759:  0x00008A6D,\n\t8760:  0x00008A62,\n\t8761:  0x00008A6E,\n\t8762:  0x00008A6C,\n\t8763:  0x00008A79,\n\t8764:  0x00008A7B,\n\t8765:  0x00008A3E,\n\t8766:  0x00008A68,\n\t8767:  0x00008C62,\n\t8768:  0x00008C8A,\n\t8769:  0x00008C89,\n\t8770:  0x00008CCA,\n\t8771:  0x00008CC7,\n\t8772:  0x00008CC8,\n\t8773:  0x00008CC4,\n\t8774:  0x00008CB2,\n\t8775:  0x00008CC3,\n\t8776:  0x00008CC2,\n\t8777:  0x00008CC5,\n\t8778:  0x00008DE1,\n\t8779:  0x00008DDF,\n\t8780:  0x00008DE8,\n\t8781:  0x00008DEF,\n\t8782:  0x00008DF3,\n\t8783:  0x00008DFA,\n\t8784:  0x00008DEA,\n\t8785:  0x00008DE4,\n\t8786:  0x00008DE6,\n\t8787:  0x00008EB2,\n\t8788:  0x00008F03,\n\t8789:  0x00008F09,\n\t8790:  0x00008EFE,\n\t8791:  0x00008F0A,\n\t8792:  0x00008F9F,\n\t8793:  0x00008FB2,\n\t8794:  0x0000904B,\n\t8795:  0x0000904A,\n\t8796:  0x00009053,\n\t8797:  0x00009042,\n\t8798:  0x00009054,\n\t8799:  0x0000903C,\n\t8800:  0x00009055,\n\t8801:  0x00009050,\n\t8802:  0x00009047,\n\t8803:  0x0000904F,\n\t8804:  0x0000904E,\n\t8805:  0x0000904D,\n\t8806:  0x00009051,\n\t8807:  0x0000903E,\n\t8808:  0x00009041,\n\t8809:  0x00009112,\n\t8810:  0x00009117,\n\t8811:  0x0000916C,\n\t8812:  0x0000916A,\n\t8813:  0x00009169,\n\t8814:  0x000091C9,\n\t8815:  0x00009237,\n\t8816:  0x00009257,\n\t8817:  0x00009238,\n\t8818:  0x0000923D,\n\t8819:  0x00009240,\n\t8820:  0x0000923E,\n\t8821:  0x0000925B,\n\t8822:  0x0000924B,\n\t8823:  0x00009264,\n\t8824:  0x00009251,\n\t8825:  0x00009234,\n\t8826:  0x00009249,\n\t8827:  0x0000924D,\n\t8828:  0x00009245,\n\t8829:  0x00009239,\n\t8830:  0x0000923F,\n\t8831:  0x0000925A,\n\t8832:  0x00009598,\n\t8833:  0x00009698,\n\t8834:  0x00009694,\n\t8835:  0x00009695,\n\t8836:  0x000096CD,\n\t8837:  0x000096CB,\n\t8838:  0x000096C9,\n\t8839:  0x000096CA,\n\t8840:  0x000096F7,\n\t8841:  0x000096FB,\n\t8842:  0x000096F9,\n\t8843:  0x000096F6,\n\t8844:  0x00009756,\n\t8845:  0x00009774,\n\t8846:  0x00009776,\n\t8847:  0x00009810,\n\t8848:  0x00009811,\n\t8849:  0x00009813,\n\t8850:  0x0000980A,\n\t8851:  0x00009812,\n\t8852:  0x0000980C,\n\t8853:  0x000098FC,\n\t8854:  0x000098F4,\n\t8855:  0x000098FD,\n\t8856:  0x000098FE,\n\t8857:  0x000099B3,\n\t8858:  0x000099B1,\n\t8859:  0x000099B4,\n\t8860:  0x00009AE1,\n\t8861:  0x00009CE9,\n\t8862:  0x00009E82,\n\t8863:  0x00009F0E,\n\t8864:  0x00009F13,\n\t8865:  0x00009F20,\n\t8866:  0x000050E7,\n\t8867:  0x000050EE,\n\t8868:  0x000050E5,\n\t8869:  0x000050D6,\n\t8870:  0x000050ED,\n\t8871:  0x000050DA,\n\t8872:  0x000050D5,\n\t8873:  0x000050CF,\n\t8874:  0x000050D1,\n\t8875:  0x000050F1,\n\t8876:  0x000050CE,\n\t8877:  0x000050E9,\n\t8878:  0x00005162,\n\t8879:  0x000051F3,\n\t8880:  0x00005283,\n\t8881:  0x00005282,\n\t8882:  0x00005331,\n\t8883:  0x000053AD,\n\t8884:  0x000055FE,\n\t8885:  0x00005600,\n\t8886:  0x0000561B,\n\t8887:  0x00005617,\n\t8888:  0x000055FD,\n\t8889:  0x00005614,\n\t8890:  0x00005606,\n\t8891:  0x00005609,\n\t8892:  0x0000560D,\n\t8893:  0x0000560E,\n\t8894:  0x000055F7,\n\t8895:  0x00005616,\n\t8896:  0x0000561F,\n\t8897:  0x00005608,\n\t8898:  0x00005610,\n\t8899:  0x000055F6,\n\t8900:  0x00005718,\n\t8901:  0x00005716,\n\t8902:  0x00005875,\n\t8903:  0x0000587E,\n\t8904:  0x00005883,\n\t8905:  0x00005893,\n\t8906:  0x0000588A,\n\t8907:  0x00005879,\n\t8908:  0x00005885,\n\t8909:  0x0000587D,\n\t8910:  0x000058FD,\n\t8911:  0x00005925,\n\t8912:  0x00005922,\n\t8913:  0x00005924,\n\t8914:  0x0000596A,\n\t8915:  0x00005969,\n\t8916:  0x00005AE1,\n\t8917:  0x00005AE6,\n\t8918:  0x00005AE9,\n\t8919:  0x00005AD7,\n\t8920:  0x00005AD6,\n\t8921:  0x00005AD8,\n\t8922:  0x00005AE3,\n\t8923:  0x00005B75,\n\t8924:  0x00005BDE,\n\t8925:  0x00005BE7,\n\t8926:  0x00005BE1,\n\t8927:  0x00005BE5,\n\t8928:  0x00005BE6,\n\t8929:  0x00005BE8,\n\t8930:  0x00005BE2,\n\t8931:  0x00005BE4,\n\t8932:  0x00005BDF,\n\t8933:  0x00005C0D,\n\t8934:  0x00005C62,\n\t8935:  0x00005D84,\n\t8936:  0x00005D87,\n\t8937:  0x00005E5B,\n\t8938:  0x00005E63,\n\t8939:  0x00005E55,\n\t8940:  0x00005E57,\n\t8941:  0x00005E54,\n\t8942:  0x00005ED3,\n\t8943:  0x00005ED6,\n\t8944:  0x00005F0A,\n\t8945:  0x00005F46,\n\t8946:  0x00005F70,\n\t8947:  0x00005FB9,\n\t8948:  0x00006147,\n\t8949:  0x0000613F,\n\t8950:  0x0000614B,\n\t8951:  0x00006177,\n\t8952:  0x00006162,\n\t8953:  0x00006163,\n\t8954:  0x0000615F,\n\t8955:  0x0000615A,\n\t8956:  0x00006158,\n\t8957:  0x00006175,\n\t8958:  0x0000622A,\n\t8959:  0x00006487,\n\t8960:  0x00006458,\n\t8961:  0x00006454,\n\t8962:  0x000064A4,\n\t8963:  0x00006478,\n\t8964:  0x0000645F,\n\t8965:  0x0000647A,\n\t8966:  0x00006451,\n\t8967:  0x00006467,\n\t8968:  0x00006434,\n\t8969:  0x0000646D,\n\t8970:  0x0000647B,\n\t8971:  0x00006572,\n\t8972:  0x000065A1,\n\t8973:  0x000065D7,\n\t8974:  0x000065D6,\n\t8975:  0x000066A2,\n\t8976:  0x000066A8,\n\t8977:  0x0000669D,\n\t8978:  0x0000699C,\n\t8979:  0x000069A8,\n\t8980:  0x00006995,\n\t8981:  0x000069C1,\n\t8982:  0x000069AE,\n\t8983:  0x000069D3,\n\t8984:  0x000069CB,\n\t8985:  0x0000699B,\n\t8986:  0x000069B7,\n\t8987:  0x000069BB,\n\t8988:  0x000069AB,\n\t8989:  0x000069B4,\n\t8990:  0x000069D0,\n\t8991:  0x000069CD,\n\t8992:  0x000069AD,\n\t8993:  0x000069CC,\n\t8994:  0x000069A6,\n\t8995:  0x000069C3,\n\t8996:  0x000069A3,\n\t8997:  0x00006B49,\n\t8998:  0x00006B4C,\n\t8999:  0x00006C33,\n\t9000:  0x00006F33,\n\t9001:  0x00006F14,\n\t9002:  0x00006EFE,\n\t9003:  0x00006F13,\n\t9004:  0x00006EF4,\n\t9005:  0x00006F29,\n\t9006:  0x00006F3E,\n\t9007:  0x00006F20,\n\t9008:  0x00006F2C,\n\t9009:  0x00006F0F,\n\t9010:  0x00006F02,\n\t9011:  0x00006F22,\n\t9012:  0x00006EFF,\n\t9013:  0x00006EEF,\n\t9014:  0x00006F06,\n\t9015:  0x00006F31,\n\t9016:  0x00006F38,\n\t9017:  0x00006F32,\n\t9018:  0x00006F23,\n\t9019:  0x00006F15,\n\t9020:  0x00006F2B,\n\t9021:  0x00006F2F,\n\t9022:  0x00006F88,\n\t9023:  0x00006F2A,\n\t9024:  0x00006EEC,\n\t9025:  0x00006F01,\n\t9026:  0x00006EF2,\n\t9027:  0x00006ECC,\n\t9028:  0x00006EF7,\n\t9029:  0x00007194,\n\t9030:  0x00007199,\n\t9031:  0x0000717D,\n\t9032:  0x0000718A,\n\t9033:  0x00007184,\n\t9034:  0x00007192,\n\t9035:  0x0000723E,\n\t9036:  0x00007292,\n\t9037:  0x00007296,\n\t9038:  0x00007344,\n\t9039:  0x00007350,\n\t9040:  0x00007464,\n\t9041:  0x00007463,\n\t9042:  0x0000746A,\n\t9043:  0x00007470,\n\t9044:  0x0000746D,\n\t9045:  0x00007504,\n\t9046:  0x00007591,\n\t9047:  0x00007627,\n\t9048:  0x0000760D,\n\t9049:  0x0000760B,\n\t9050:  0x00007609,\n\t9051:  0x00007613,\n\t9052:  0x000076E1,\n\t9053:  0x000076E3,\n\t9054:  0x00007784,\n\t9055:  0x0000777D,\n\t9056:  0x0000777F,\n\t9057:  0x00007761,\n\t9058:  0x000078C1,\n\t9059:  0x0000789F,\n\t9060:  0x000078A7,\n\t9061:  0x000078B3,\n\t9062:  0x000078A9,\n\t9063:  0x000078A3,\n\t9064:  0x0000798E,\n\t9065:  0x0000798F,\n\t9066:  0x0000798D,\n\t9067:  0x00007A2E,\n\t9068:  0x00007A31,\n\t9069:  0x00007AAA,\n\t9070:  0x00007AA9,\n\t9071:  0x00007AED,\n\t9072:  0x00007AEF,\n\t9073:  0x00007BA1,\n\t9074:  0x00007B95,\n\t9075:  0x00007B8B,\n\t9076:  0x00007B75,\n\t9077:  0x00007B97,\n\t9078:  0x00007B9D,\n\t9079:  0x00007B94,\n\t9080:  0x00007B8F,\n\t9081:  0x00007BB8,\n\t9082:  0x00007B87,\n\t9083:  0x00007B84,\n\t9084:  0x00007CB9,\n\t9085:  0x00007CBD,\n\t9086:  0x00007CBE,\n\t9087:  0x00007DBB,\n\t9088:  0x00007DB0,\n\t9089:  0x00007D9C,\n\t9090:  0x00007DBD,\n\t9091:  0x00007DBE,\n\t9092:  0x00007DA0,\n\t9093:  0x00007DCA,\n\t9094:  0x00007DB4,\n\t9095:  0x00007DB2,\n\t9096:  0x00007DB1,\n\t9097:  0x00007DBA,\n\t9098:  0x00007DA2,\n\t9099:  0x00007DBF,\n\t9100:  0x00007DB5,\n\t9101:  0x00007DB8,\n\t9102:  0x00007DAD,\n\t9103:  0x00007DD2,\n\t9104:  0x00007DC7,\n\t9105:  0x00007DAC,\n\t9106:  0x00007F70,\n\t9107:  0x00007FE0,\n\t9108:  0x00007FE1,\n\t9109:  0x00007FDF,\n\t9110:  0x0000805E,\n\t9111:  0x0000805A,\n\t9112:  0x00008087,\n\t9113:  0x00008150,\n\t9114:  0x00008180,\n\t9115:  0x0000818F,\n\t9116:  0x00008188,\n\t9117:  0x0000818A,\n\t9118:  0x0000817F,\n\t9119:  0x00008182,\n\t9120:  0x000081E7,\n\t9121:  0x000081FA,\n\t9122:  0x00008207,\n\t9123:  0x00008214,\n\t9124:  0x0000821E,\n\t9125:  0x0000824B,\n\t9126:  0x000084C9,\n\t9127:  0x000084BF,\n\t9128:  0x000084C6,\n\t9129:  0x000084C4,\n\t9130:  0x00008499,\n\t9131:  0x0000849E,\n\t9132:  0x000084B2,\n\t9133:  0x0000849C,\n\t9134:  0x000084CB,\n\t9135:  0x000084B8,\n\t9136:  0x000084C0,\n\t9137:  0x000084D3,\n\t9138:  0x00008490,\n\t9139:  0x000084BC,\n\t9140:  0x000084D1,\n\t9141:  0x000084CA,\n\t9142:  0x0000873F,\n\t9143:  0x0000871C,\n\t9144:  0x0000873B,\n\t9145:  0x00008722,\n\t9146:  0x00008725,\n\t9147:  0x00008734,\n\t9148:  0x00008718,\n\t9149:  0x00008755,\n\t9150:  0x00008737,\n\t9151:  0x00008729,\n\t9152:  0x000088F3,\n\t9153:  0x00008902,\n\t9154:  0x000088F4,\n\t9155:  0x000088F9,\n\t9156:  0x000088F8,\n\t9157:  0x000088FD,\n\t9158:  0x000088E8,\n\t9159:  0x0000891A,\n\t9160:  0x000088EF,\n\t9161:  0x00008AA6,\n\t9162:  0x00008A8C,\n\t9163:  0x00008A9E,\n\t9164:  0x00008AA3,\n\t9165:  0x00008A8D,\n\t9166:  0x00008AA1,\n\t9167:  0x00008A93,\n\t9168:  0x00008AA4,\n\t9169:  0x00008AAA,\n\t9170:  0x00008AA5,\n\t9171:  0x00008AA8,\n\t9172:  0x00008A98,\n\t9173:  0x00008A91,\n\t9174:  0x00008A9A,\n\t9175:  0x00008AA7,\n\t9176:  0x00008C6A,\n\t9177:  0x00008C8D,\n\t9178:  0x00008C8C,\n\t9179:  0x00008CD3,\n\t9180:  0x00008CD1,\n\t9181:  0x00008CD2,\n\t9182:  0x00008D6B,\n\t9183:  0x00008D99,\n\t9184:  0x00008D95,\n\t9185:  0x00008DFC,\n\t9186:  0x00008F14,\n\t9187:  0x00008F12,\n\t9188:  0x00008F15,\n\t9189:  0x00008F13,\n\t9190:  0x00008FA3,\n\t9191:  0x00009060,\n\t9192:  0x00009058,\n\t9193:  0x0000905C,\n\t9194:  0x00009063,\n\t9195:  0x00009059,\n\t9196:  0x0000905E,\n\t9197:  0x00009062,\n\t9198:  0x0000905D,\n\t9199:  0x0000905B,\n\t9200:  0x00009119,\n\t9201:  0x00009118,\n\t9202:  0x0000911E,\n\t9203:  0x00009175,\n\t9204:  0x00009178,\n\t9205:  0x00009177,\n\t9206:  0x00009174,\n\t9207:  0x00009278,\n\t9208:  0x00009280,\n\t9209:  0x00009285,\n\t9210:  0x00009298,\n\t9211:  0x00009296,\n\t9212:  0x0000927B,\n\t9213:  0x00009293,\n\t9214:  0x0000929C,\n\t9215:  0x000092A8,\n\t9216:  0x0000927C,\n\t9217:  0x00009291,\n\t9218:  0x000095A1,\n\t9219:  0x000095A8,\n\t9220:  0x000095A9,\n\t9221:  0x000095A3,\n\t9222:  0x000095A5,\n\t9223:  0x000095A4,\n\t9224:  0x00009699,\n\t9225:  0x0000969C,\n\t9226:  0x0000969B,\n\t9227:  0x000096CC,\n\t9228:  0x000096D2,\n\t9229:  0x00009700,\n\t9230:  0x0000977C,\n\t9231:  0x00009785,\n\t9232:  0x000097F6,\n\t9233:  0x00009817,\n\t9234:  0x00009818,\n\t9235:  0x000098AF,\n\t9236:  0x000098B1,\n\t9237:  0x00009903,\n\t9238:  0x00009905,\n\t9239:  0x0000990C,\n\t9240:  0x00009909,\n\t9241:  0x000099C1,\n\t9242:  0x00009AAF,\n\t9243:  0x00009AB0,\n\t9244:  0x00009AE6,\n\t9245:  0x00009B41,\n\t9246:  0x00009B42,\n\t9247:  0x00009CF4,\n\t9248:  0x00009CF6,\n\t9249:  0x00009CF3,\n\t9250:  0x00009EBC,\n\t9251:  0x00009F3B,\n\t9252:  0x00009F4A,\n\t9253:  0x00005104,\n\t9254:  0x00005100,\n\t9255:  0x000050FB,\n\t9256:  0x000050F5,\n\t9257:  0x000050F9,\n\t9258:  0x00005102,\n\t9259:  0x00005108,\n\t9260:  0x00005109,\n\t9261:  0x00005105,\n\t9262:  0x000051DC,\n\t9263:  0x00005287,\n\t9264:  0x00005288,\n\t9265:  0x00005289,\n\t9266:  0x0000528D,\n\t9267:  0x0000528A,\n\t9268:  0x000052F0,\n\t9269:  0x000053B2,\n\t9270:  0x0000562E,\n\t9271:  0x0000563B,\n\t9272:  0x00005639,\n\t9273:  0x00005632,\n\t9274:  0x0000563F,\n\t9275:  0x00005634,\n\t9276:  0x00005629,\n\t9277:  0x00005653,\n\t9278:  0x0000564E,\n\t9279:  0x00005657,\n\t9280:  0x00005674,\n\t9281:  0x00005636,\n\t9282:  0x0000562F,\n\t9283:  0x00005630,\n\t9284:  0x00005880,\n\t9285:  0x0000589F,\n\t9286:  0x0000589E,\n\t9287:  0x000058B3,\n\t9288:  0x0000589C,\n\t9289:  0x000058AE,\n\t9290:  0x000058A9,\n\t9291:  0x000058A6,\n\t9292:  0x0000596D,\n\t9293:  0x00005B09,\n\t9294:  0x00005AFB,\n\t9295:  0x00005B0B,\n\t9296:  0x00005AF5,\n\t9297:  0x00005B0C,\n\t9298:  0x00005B08,\n\t9299:  0x00005BEE,\n\t9300:  0x00005BEC,\n\t9301:  0x00005BE9,\n\t9302:  0x00005BEB,\n\t9303:  0x00005C64,\n\t9304:  0x00005C65,\n\t9305:  0x00005D9D,\n\t9306:  0x00005D94,\n\t9307:  0x00005E62,\n\t9308:  0x00005E5F,\n\t9309:  0x00005E61,\n\t9310:  0x00005EE2,\n\t9311:  0x00005EDA,\n\t9312:  0x00005EDF,\n\t9313:  0x00005EDD,\n\t9314:  0x00005EE3,\n\t9315:  0x00005EE0,\n\t9316:  0x00005F48,\n\t9317:  0x00005F71,\n\t9318:  0x00005FB7,\n\t9319:  0x00005FB5,\n\t9320:  0x00006176,\n\t9321:  0x00006167,\n\t9322:  0x0000616E,\n\t9323:  0x0000615D,\n\t9324:  0x00006155,\n\t9325:  0x00006182,\n\t9326:  0x0000617C,\n\t9327:  0x00006170,\n\t9328:  0x0000616B,\n\t9329:  0x0000617E,\n\t9330:  0x000061A7,\n\t9331:  0x00006190,\n\t9332:  0x000061AB,\n\t9333:  0x0000618E,\n\t9334:  0x000061AC,\n\t9335:  0x0000619A,\n\t9336:  0x000061A4,\n\t9337:  0x00006194,\n\t9338:  0x000061AE,\n\t9339:  0x0000622E,\n\t9340:  0x00006469,\n\t9341:  0x0000646F,\n\t9342:  0x00006479,\n\t9343:  0x0000649E,\n\t9344:  0x000064B2,\n\t9345:  0x00006488,\n\t9346:  0x00006490,\n\t9347:  0x000064B0,\n\t9348:  0x000064A5,\n\t9349:  0x00006493,\n\t9350:  0x00006495,\n\t9351:  0x000064A9,\n\t9352:  0x00006492,\n\t9353:  0x000064AE,\n\t9354:  0x000064AD,\n\t9355:  0x000064AB,\n\t9356:  0x0000649A,\n\t9357:  0x000064AC,\n\t9358:  0x00006499,\n\t9359:  0x000064A2,\n\t9360:  0x000064B3,\n\t9361:  0x00006575,\n\t9362:  0x00006577,\n\t9363:  0x00006578,\n\t9364:  0x000066AE,\n\t9365:  0x000066AB,\n\t9366:  0x000066B4,\n\t9367:  0x000066B1,\n\t9368:  0x00006A23,\n\t9369:  0x00006A1F,\n\t9370:  0x000069E8,\n\t9371:  0x00006A01,\n\t9372:  0x00006A1E,\n\t9373:  0x00006A19,\n\t9374:  0x000069FD,\n\t9375:  0x00006A21,\n\t9376:  0x00006A13,\n\t9377:  0x00006A0A,\n\t9378:  0x000069F3,\n\t9379:  0x00006A02,\n\t9380:  0x00006A05,\n\t9381:  0x000069ED,\n\t9382:  0x00006A11,\n\t9383:  0x00006B50,\n\t9384:  0x00006B4E,\n\t9385:  0x00006BA4,\n\t9386:  0x00006BC5,\n\t9387:  0x00006BC6,\n\t9388:  0x00006F3F,\n\t9389:  0x00006F7C,\n\t9390:  0x00006F84,\n\t9391:  0x00006F51,\n\t9392:  0x00006F66,\n\t9393:  0x00006F54,\n\t9394:  0x00006F86,\n\t9395:  0x00006F6D,\n\t9396:  0x00006F5B,\n\t9397:  0x00006F78,\n\t9398:  0x00006F6E,\n\t9399:  0x00006F8E,\n\t9400:  0x00006F7A,\n\t9401:  0x00006F70,\n\t9402:  0x00006F64,\n\t9403:  0x00006F97,\n\t9404:  0x00006F58,\n\t9405:  0x00006ED5,\n\t9406:  0x00006F6F,\n\t9407:  0x00006F60,\n\t9408:  0x00006F5F,\n\t9409:  0x0000719F,\n\t9410:  0x000071AC,\n\t9411:  0x000071B1,\n\t9412:  0x000071A8,\n\t9413:  0x00007256,\n\t9414:  0x0000729B,\n\t9415:  0x0000734E,\n\t9416:  0x00007357,\n\t9417:  0x00007469,\n\t9418:  0x0000748B,\n\t9419:  0x00007483,\n\t9420:  0x0000747E,\n\t9421:  0x00007480,\n\t9422:  0x0000757F,\n\t9423:  0x00007620,\n\t9424:  0x00007629,\n\t9425:  0x0000761F,\n\t9426:  0x00007624,\n\t9427:  0x00007626,\n\t9428:  0x00007621,\n\t9429:  0x00007622,\n\t9430:  0x0000769A,\n\t9431:  0x000076BA,\n\t9432:  0x000076E4,\n\t9433:  0x0000778E,\n\t9434:  0x00007787,\n\t9435:  0x0000778C,\n\t9436:  0x00007791,\n\t9437:  0x0000778B,\n\t9438:  0x000078CB,\n\t9439:  0x000078C5,\n\t9440:  0x000078BA,\n\t9441:  0x000078CA,\n\t9442:  0x000078BE,\n\t9443:  0x000078D5,\n\t9444:  0x000078BC,\n\t9445:  0x000078D0,\n\t9446:  0x00007A3F,\n\t9447:  0x00007A3C,\n\t9448:  0x00007A40,\n\t9449:  0x00007A3D,\n\t9450:  0x00007A37,\n\t9451:  0x00007A3B,\n\t9452:  0x00007AAF,\n\t9453:  0x00007AAE,\n\t9454:  0x00007BAD,\n\t9455:  0x00007BB1,\n\t9456:  0x00007BC4,\n\t9457:  0x00007BB4,\n\t9458:  0x00007BC6,\n\t9459:  0x00007BC7,\n\t9460:  0x00007BC1,\n\t9461:  0x00007BA0,\n\t9462:  0x00007BCC,\n\t9463:  0x00007CCA,\n\t9464:  0x00007DE0,\n\t9465:  0x00007DF4,\n\t9466:  0x00007DEF,\n\t9467:  0x00007DFB,\n\t9468:  0x00007DD8,\n\t9469:  0x00007DEC,\n\t9470:  0x00007DDD,\n\t9471:  0x00007DE8,\n\t9472:  0x00007DE3,\n\t9473:  0x00007DDA,\n\t9474:  0x00007DDE,\n\t9475:  0x00007DE9,\n\t9476:  0x00007D9E,\n\t9477:  0x00007DD9,\n\t9478:  0x00007DF2,\n\t9479:  0x00007DF9,\n\t9480:  0x00007F75,\n\t9481:  0x00007F77,\n\t9482:  0x00007FAF,\n\t9483:  0x00007FE9,\n\t9484:  0x00008026,\n\t9485:  0x0000819B,\n\t9486:  0x0000819C,\n\t9487:  0x0000819D,\n\t9488:  0x000081A0,\n\t9489:  0x0000819A,\n\t9490:  0x00008198,\n\t9491:  0x00008517,\n\t9492:  0x0000853D,\n\t9493:  0x0000851A,\n\t9494:  0x000084EE,\n\t9495:  0x0000852C,\n\t9496:  0x0000852D,\n\t9497:  0x00008513,\n\t9498:  0x00008511,\n\t9499:  0x00008523,\n\t9500:  0x00008521,\n\t9501:  0x00008514,\n\t9502:  0x000084EC,\n\t9503:  0x00008525,\n\t9504:  0x000084FF,\n\t9505:  0x00008506,\n\t9506:  0x00008782,\n\t9507:  0x00008774,\n\t9508:  0x00008776,\n\t9509:  0x00008760,\n\t9510:  0x00008766,\n\t9511:  0x00008778,\n\t9512:  0x00008768,\n\t9513:  0x00008759,\n\t9514:  0x00008757,\n\t9515:  0x0000874C,\n\t9516:  0x00008753,\n\t9517:  0x0000885B,\n\t9518:  0x0000885D,\n\t9519:  0x00008910,\n\t9520:  0x00008907,\n\t9521:  0x00008912,\n\t9522:  0x00008913,\n\t9523:  0x00008915,\n\t9524:  0x0000890A,\n\t9525:  0x00008ABC,\n\t9526:  0x00008AD2,\n\t9527:  0x00008AC7,\n\t9528:  0x00008AC4,\n\t9529:  0x00008A95,\n\t9530:  0x00008ACB,\n\t9531:  0x00008AF8,\n\t9532:  0x00008AB2,\n\t9533:  0x00008AC9,\n\t9534:  0x00008AC2,\n\t9535:  0x00008ABF,\n\t9536:  0x00008AB0,\n\t9537:  0x00008AD6,\n\t9538:  0x00008ACD,\n\t9539:  0x00008AB6,\n\t9540:  0x00008AB9,\n\t9541:  0x00008ADB,\n\t9542:  0x00008C4C,\n\t9543:  0x00008C4E,\n\t9544:  0x00008C6C,\n\t9545:  0x00008CE0,\n\t9546:  0x00008CDE,\n\t9547:  0x00008CE6,\n\t9548:  0x00008CE4,\n\t9549:  0x00008CEC,\n\t9550:  0x00008CED,\n\t9551:  0x00008CE2,\n\t9552:  0x00008CE3,\n\t9553:  0x00008CDC,\n\t9554:  0x00008CEA,\n\t9555:  0x00008CE1,\n\t9556:  0x00008D6D,\n\t9557:  0x00008D9F,\n\t9558:  0x00008DA3,\n\t9559:  0x00008E2B,\n\t9560:  0x00008E10,\n\t9561:  0x00008E1D,\n\t9562:  0x00008E22,\n\t9563:  0x00008E0F,\n\t9564:  0x00008E29,\n\t9565:  0x00008E1F,\n\t9566:  0x00008E21,\n\t9567:  0x00008E1E,\n\t9568:  0x00008EBA,\n\t9569:  0x00008F1D,\n\t9570:  0x00008F1B,\n\t9571:  0x00008F1F,\n\t9572:  0x00008F29,\n\t9573:  0x00008F26,\n\t9574:  0x00008F2A,\n\t9575:  0x00008F1C,\n\t9576:  0x00008F1E,\n\t9577:  0x00008F25,\n\t9578:  0x00009069,\n\t9579:  0x0000906E,\n\t9580:  0x00009068,\n\t9581:  0x0000906D,\n\t9582:  0x00009077,\n\t9583:  0x00009130,\n\t9584:  0x0000912D,\n\t9585:  0x00009127,\n\t9586:  0x00009131,\n\t9587:  0x00009187,\n\t9588:  0x00009189,\n\t9589:  0x0000918B,\n\t9590:  0x00009183,\n\t9591:  0x000092C5,\n\t9592:  0x000092BB,\n\t9593:  0x000092B7,\n\t9594:  0x000092EA,\n\t9595:  0x000092AC,\n\t9596:  0x000092E4,\n\t9597:  0x000092C1,\n\t9598:  0x000092B3,\n\t9599:  0x000092BC,\n\t9600:  0x000092D2,\n\t9601:  0x000092C7,\n\t9602:  0x000092F0,\n\t9603:  0x000092B2,\n\t9604:  0x000095AD,\n\t9605:  0x000095B1,\n\t9606:  0x00009704,\n\t9607:  0x00009706,\n\t9608:  0x00009707,\n\t9609:  0x00009709,\n\t9610:  0x00009760,\n\t9611:  0x0000978D,\n\t9612:  0x0000978B,\n\t9613:  0x0000978F,\n\t9614:  0x00009821,\n\t9615:  0x0000982B,\n\t9616:  0x0000981C,\n\t9617:  0x000098B3,\n\t9618:  0x0000990A,\n\t9619:  0x00009913,\n\t9620:  0x00009912,\n\t9621:  0x00009918,\n\t9622:  0x000099DD,\n\t9623:  0x000099D0,\n\t9624:  0x000099DF,\n\t9625:  0x000099DB,\n\t9626:  0x000099D1,\n\t9627:  0x000099D5,\n\t9628:  0x000099D2,\n\t9629:  0x000099D9,\n\t9630:  0x00009AB7,\n\t9631:  0x00009AEE,\n\t9632:  0x00009AEF,\n\t9633:  0x00009B27,\n\t9634:  0x00009B45,\n\t9635:  0x00009B44,\n\t9636:  0x00009B77,\n\t9637:  0x00009B6F,\n\t9638:  0x00009D06,\n\t9639:  0x00009D09,\n\t9640:  0x00009D03,\n\t9641:  0x00009EA9,\n\t9642:  0x00009EBE,\n\t9643:  0x00009ECE,\n\t9644:  0x000058A8,\n\t9645:  0x00009F52,\n\t9646:  0x00005112,\n\t9647:  0x00005118,\n\t9648:  0x00005114,\n\t9649:  0x00005110,\n\t9650:  0x00005115,\n\t9651:  0x00005180,\n\t9652:  0x000051AA,\n\t9653:  0x000051DD,\n\t9654:  0x00005291,\n\t9655:  0x00005293,\n\t9656:  0x000052F3,\n\t9657:  0x00005659,\n\t9658:  0x0000566B,\n\t9659:  0x00005679,\n\t9660:  0x00005669,\n\t9661:  0x00005664,\n\t9662:  0x00005678,\n\t9663:  0x0000566A,\n\t9664:  0x00005668,\n\t9665:  0x00005665,\n\t9666:  0x00005671,\n\t9667:  0x0000566F,\n\t9668:  0x0000566C,\n\t9669:  0x00005662,\n\t9670:  0x00005676,\n\t9671:  0x000058C1,\n\t9672:  0x000058BE,\n\t9673:  0x000058C7,\n\t9674:  0x000058C5,\n\t9675:  0x0000596E,\n\t9676:  0x00005B1D,\n\t9677:  0x00005B34,\n\t9678:  0x00005B78,\n\t9679:  0x00005BF0,\n\t9680:  0x00005C0E,\n\t9681:  0x00005F4A,\n\t9682:  0x000061B2,\n\t9683:  0x00006191,\n\t9684:  0x000061A9,\n\t9685:  0x0000618A,\n\t9686:  0x000061CD,\n\t9687:  0x000061B6,\n\t9688:  0x000061BE,\n\t9689:  0x000061CA,\n\t9690:  0x000061C8,\n\t9691:  0x00006230,\n\t9692:  0x000064C5,\n\t9693:  0x000064C1,\n\t9694:  0x000064CB,\n\t9695:  0x000064BB,\n\t9696:  0x000064BC,\n\t9697:  0x000064DA,\n\t9698:  0x000064C4,\n\t9699:  0x000064C7,\n\t9700:  0x000064C2,\n\t9701:  0x000064CD,\n\t9702:  0x000064BF,\n\t9703:  0x000064D2,\n\t9704:  0x000064D4,\n\t9705:  0x000064BE,\n\t9706:  0x00006574,\n\t9707:  0x000066C6,\n\t9708:  0x000066C9,\n\t9709:  0x000066B9,\n\t9710:  0x000066C4,\n\t9711:  0x000066C7,\n\t9712:  0x000066B8,\n\t9713:  0x00006A3D,\n\t9714:  0x00006A38,\n\t9715:  0x00006A3A,\n\t9716:  0x00006A59,\n\t9717:  0x00006A6B,\n\t9718:  0x00006A58,\n\t9719:  0x00006A39,\n\t9720:  0x00006A44,\n\t9721:  0x00006A62,\n\t9722:  0x00006A61,\n\t9723:  0x00006A4B,\n\t9724:  0x00006A47,\n\t9725:  0x00006A35,\n\t9726:  0x00006A5F,\n\t9727:  0x00006A48,\n\t9728:  0x00006B59,\n\t9729:  0x00006B77,\n\t9730:  0x00006C05,\n\t9731:  0x00006FC2,\n\t9732:  0x00006FB1,\n\t9733:  0x00006FA1,\n\t9734:  0x00006FC3,\n\t9735:  0x00006FA4,\n\t9736:  0x00006FC1,\n\t9737:  0x00006FA7,\n\t9738:  0x00006FB3,\n\t9739:  0x00006FC0,\n\t9740:  0x00006FB9,\n\t9741:  0x00006FB6,\n\t9742:  0x00006FA6,\n\t9743:  0x00006FA0,\n\t9744:  0x00006FB4,\n\t9745:  0x000071BE,\n\t9746:  0x000071C9,\n\t9747:  0x000071D0,\n\t9748:  0x000071D2,\n\t9749:  0x000071C8,\n\t9750:  0x000071D5,\n\t9751:  0x000071B9,\n\t9752:  0x000071CE,\n\t9753:  0x000071D9,\n\t9754:  0x000071DC,\n\t9755:  0x000071C3,\n\t9756:  0x000071C4,\n\t9757:  0x00007368,\n\t9758:  0x0000749C,\n\t9759:  0x000074A3,\n\t9760:  0x00007498,\n\t9761:  0x0000749F,\n\t9762:  0x0000749E,\n\t9763:  0x000074E2,\n\t9764:  0x0000750C,\n\t9765:  0x0000750D,\n\t9766:  0x00007634,\n\t9767:  0x00007638,\n\t9768:  0x0000763A,\n\t9769:  0x000076E7,\n\t9770:  0x000076E5,\n\t9771:  0x000077A0,\n\t9772:  0x0000779E,\n\t9773:  0x0000779F,\n\t9774:  0x000077A5,\n\t9775:  0x000078E8,\n\t9776:  0x000078DA,\n\t9777:  0x000078EC,\n\t9778:  0x000078E7,\n\t9779:  0x000079A6,\n\t9780:  0x00007A4D,\n\t9781:  0x00007A4E,\n\t9782:  0x00007A46,\n\t9783:  0x00007A4C,\n\t9784:  0x00007A4B,\n\t9785:  0x00007ABA,\n\t9786:  0x00007BD9,\n\t9787:  0x00007C11,\n\t9788:  0x00007BC9,\n\t9789:  0x00007BE4,\n\t9790:  0x00007BDB,\n\t9791:  0x00007BE1,\n\t9792:  0x00007BE9,\n\t9793:  0x00007BE6,\n\t9794:  0x00007CD5,\n\t9795:  0x00007CD6,\n\t9796:  0x00007E0A,\n\t9797:  0x00007E11,\n\t9798:  0x00007E08,\n\t9799:  0x00007E1B,\n\t9800:  0x00007E23,\n\t9801:  0x00007E1E,\n\t9802:  0x00007E1D,\n\t9803:  0x00007E09,\n\t9804:  0x00007E10,\n\t9805:  0x00007F79,\n\t9806:  0x00007FB2,\n\t9807:  0x00007FF0,\n\t9808:  0x00007FF1,\n\t9809:  0x00007FEE,\n\t9810:  0x00008028,\n\t9811:  0x000081B3,\n\t9812:  0x000081A9,\n\t9813:  0x000081A8,\n\t9814:  0x000081FB,\n\t9815:  0x00008208,\n\t9816:  0x00008258,\n\t9817:  0x00008259,\n\t9818:  0x0000854A,\n\t9819:  0x00008559,\n\t9820:  0x00008548,\n\t9821:  0x00008568,\n\t9822:  0x00008569,\n\t9823:  0x00008543,\n\t9824:  0x00008549,\n\t9825:  0x0000856D,\n\t9826:  0x0000856A,\n\t9827:  0x0000855E,\n\t9828:  0x00008783,\n\t9829:  0x0000879F,\n\t9830:  0x0000879E,\n\t9831:  0x000087A2,\n\t9832:  0x0000878D,\n\t9833:  0x00008861,\n\t9834:  0x0000892A,\n\t9835:  0x00008932,\n\t9836:  0x00008925,\n\t9837:  0x0000892B,\n\t9838:  0x00008921,\n\t9839:  0x000089AA,\n\t9840:  0x000089A6,\n\t9841:  0x00008AE6,\n\t9842:  0x00008AFA,\n\t9843:  0x00008AEB,\n\t9844:  0x00008AF1,\n\t9845:  0x00008B00,\n\t9846:  0x00008ADC,\n\t9847:  0x00008AE7,\n\t9848:  0x00008AEE,\n\t9849:  0x00008AFE,\n\t9850:  0x00008B01,\n\t9851:  0x00008B02,\n\t9852:  0x00008AF7,\n\t9853:  0x00008AED,\n\t9854:  0x00008AF3,\n\t9855:  0x00008AF6,\n\t9856:  0x00008AFC,\n\t9857:  0x00008C6B,\n\t9858:  0x00008C6D,\n\t9859:  0x00008C93,\n\t9860:  0x00008CF4,\n\t9861:  0x00008E44,\n\t9862:  0x00008E31,\n\t9863:  0x00008E34,\n\t9864:  0x00008E42,\n\t9865:  0x00008E39,\n\t9866:  0x00008E35,\n\t9867:  0x00008F3B,\n\t9868:  0x00008F2F,\n\t9869:  0x00008F38,\n\t9870:  0x00008F33,\n\t9871:  0x00008FA8,\n\t9872:  0x00008FA6,\n\t9873:  0x00009075,\n\t9874:  0x00009074,\n\t9875:  0x00009078,\n\t9876:  0x00009072,\n\t9877:  0x0000907C,\n\t9878:  0x0000907A,\n\t9879:  0x00009134,\n\t9880:  0x00009192,\n\t9881:  0x00009320,\n\t9882:  0x00009336,\n\t9883:  0x000092F8,\n\t9884:  0x00009333,\n\t9885:  0x0000932F,\n\t9886:  0x00009322,\n\t9887:  0x000092FC,\n\t9888:  0x0000932B,\n\t9889:  0x00009304,\n\t9890:  0x0000931A,\n\t9891:  0x00009310,\n\t9892:  0x00009326,\n\t9893:  0x00009321,\n\t9894:  0x00009315,\n\t9895:  0x0000932E,\n\t9896:  0x00009319,\n\t9897:  0x000095BB,\n\t9898:  0x000096A7,\n\t9899:  0x000096A8,\n\t9900:  0x000096AA,\n\t9901:  0x000096D5,\n\t9902:  0x0000970E,\n\t9903:  0x00009711,\n\t9904:  0x00009716,\n\t9905:  0x0000970D,\n\t9906:  0x00009713,\n\t9907:  0x0000970F,\n\t9908:  0x0000975B,\n\t9909:  0x0000975C,\n\t9910:  0x00009766,\n\t9911:  0x00009798,\n\t9912:  0x00009830,\n\t9913:  0x00009838,\n\t9914:  0x0000983B,\n\t9915:  0x00009837,\n\t9916:  0x0000982D,\n\t9917:  0x00009839,\n\t9918:  0x00009824,\n\t9919:  0x00009910,\n\t9920:  0x00009928,\n\t9921:  0x0000991E,\n\t9922:  0x0000991B,\n\t9923:  0x00009921,\n\t9924:  0x0000991A,\n\t9925:  0x000099ED,\n\t9926:  0x000099E2,\n\t9927:  0x000099F1,\n\t9928:  0x00009AB8,\n\t9929:  0x00009ABC,\n\t9930:  0x00009AFB,\n\t9931:  0x00009AED,\n\t9932:  0x00009B28,\n\t9933:  0x00009B91,\n\t9934:  0x00009D15,\n\t9935:  0x00009D23,\n\t9936:  0x00009D26,\n\t9937:  0x00009D28,\n\t9938:  0x00009D12,\n\t9939:  0x00009D1B,\n\t9940:  0x00009ED8,\n\t9941:  0x00009ED4,\n\t9942:  0x00009F8D,\n\t9943:  0x00009F9C,\n\t9944:  0x0000512A,\n\t9945:  0x0000511F,\n\t9946:  0x00005121,\n\t9947:  0x00005132,\n\t9948:  0x000052F5,\n\t9949:  0x0000568E,\n\t9950:  0x00005680,\n\t9951:  0x00005690,\n\t9952:  0x00005685,\n\t9953:  0x00005687,\n\t9954:  0x0000568F,\n\t9955:  0x000058D5,\n\t9956:  0x000058D3,\n\t9957:  0x000058D1,\n\t9958:  0x000058CE,\n\t9959:  0x00005B30,\n\t9960:  0x00005B2A,\n\t9961:  0x00005B24,\n\t9962:  0x00005B7A,\n\t9963:  0x00005C37,\n\t9964:  0x00005C68,\n\t9965:  0x00005DBC,\n\t9966:  0x00005DBA,\n\t9967:  0x00005DBD,\n\t9968:  0x00005DB8,\n\t9969:  0x00005E6B,\n\t9970:  0x00005F4C,\n\t9971:  0x00005FBD,\n\t9972:  0x000061C9,\n\t9973:  0x000061C2,\n\t9974:  0x000061C7,\n\t9975:  0x000061E6,\n\t9976:  0x000061CB,\n\t9977:  0x00006232,\n\t9978:  0x00006234,\n\t9979:  0x000064CE,\n\t9980:  0x000064CA,\n\t9981:  0x000064D8,\n\t9982:  0x000064E0,\n\t9983:  0x000064F0,\n\t9984:  0x000064E6,\n\t9985:  0x000064EC,\n\t9986:  0x000064F1,\n\t9987:  0x000064E2,\n\t9988:  0x000064ED,\n\t9989:  0x00006582,\n\t9990:  0x00006583,\n\t9991:  0x000066D9,\n\t9992:  0x000066D6,\n\t9993:  0x00006A80,\n\t9994:  0x00006A94,\n\t9995:  0x00006A84,\n\t9996:  0x00006AA2,\n\t9997:  0x00006A9C,\n\t9998:  0x00006ADB,\n\t9999:  0x00006AA3,\n\t10000: 0x00006A7E,\n\t10001: 0x00006A97,\n\t10002: 0x00006A90,\n\t10003: 0x00006AA0,\n\t10004: 0x00006B5C,\n\t10005: 0x00006BAE,\n\t10006: 0x00006BDA,\n\t10007: 0x00006C08,\n\t10008: 0x00006FD8,\n\t10009: 0x00006FF1,\n\t10010: 0x00006FDF,\n\t10011: 0x00006FE0,\n\t10012: 0x00006FDB,\n\t10013: 0x00006FE4,\n\t10014: 0x00006FEB,\n\t10015: 0x00006FEF,\n\t10016: 0x00006F80,\n\t10017: 0x00006FEC,\n\t10018: 0x00006FE1,\n\t10019: 0x00006FE9,\n\t10020: 0x00006FD5,\n\t10021: 0x00006FEE,\n\t10022: 0x00006FF0,\n\t10023: 0x000071E7,\n\t10024: 0x000071DF,\n\t10025: 0x000071EE,\n\t10026: 0x000071E6,\n\t10027: 0x000071E5,\n\t10028: 0x000071ED,\n\t10029: 0x000071EC,\n\t10030: 0x000071F4,\n\t10031: 0x000071E0,\n\t10032: 0x00007235,\n\t10033: 0x00007246,\n\t10034: 0x00007370,\n\t10035: 0x00007372,\n\t10036: 0x000074A9,\n\t10037: 0x000074B0,\n\t10038: 0x000074A6,\n\t10039: 0x000074A8,\n\t10040: 0x00007646,\n\t10041: 0x00007642,\n\t10042: 0x0000764C,\n\t10043: 0x000076EA,\n\t10044: 0x000077B3,\n\t10045: 0x000077AA,\n\t10046: 0x000077B0,\n\t10047: 0x000077AC,\n\t10048: 0x000077A7,\n\t10049: 0x000077AD,\n\t10050: 0x000077EF,\n\t10051: 0x000078F7,\n\t10052: 0x000078FA,\n\t10053: 0x000078F4,\n\t10054: 0x000078EF,\n\t10055: 0x00007901,\n\t10056: 0x000079A7,\n\t10057: 0x000079AA,\n\t10058: 0x00007A57,\n\t10059: 0x00007ABF,\n\t10060: 0x00007C07,\n\t10061: 0x00007C0D,\n\t10062: 0x00007BFE,\n\t10063: 0x00007BF7,\n\t10064: 0x00007C0C,\n\t10065: 0x00007BE0,\n\t10066: 0x00007CE0,\n\t10067: 0x00007CDC,\n\t10068: 0x00007CDE,\n\t10069: 0x00007CE2,\n\t10070: 0x00007CDF,\n\t10071: 0x00007CD9,\n\t10072: 0x00007CDD,\n\t10073: 0x00007E2E,\n\t10074: 0x00007E3E,\n\t10075: 0x00007E46,\n\t10076: 0x00007E37,\n\t10077: 0x00007E32,\n\t10078: 0x00007E43,\n\t10079: 0x00007E2B,\n\t10080: 0x00007E3D,\n\t10081: 0x00007E31,\n\t10082: 0x00007E45,\n\t10083: 0x00007E41,\n\t10084: 0x00007E34,\n\t10085: 0x00007E39,\n\t10086: 0x00007E48,\n\t10087: 0x00007E35,\n\t10088: 0x00007E3F,\n\t10089: 0x00007E2F,\n\t10090: 0x00007F44,\n\t10091: 0x00007FF3,\n\t10092: 0x00007FFC,\n\t10093: 0x00008071,\n\t10094: 0x00008072,\n\t10095: 0x00008070,\n\t10096: 0x0000806F,\n\t10097: 0x00008073,\n\t10098: 0x000081C6,\n\t10099: 0x000081C3,\n\t10100: 0x000081BA,\n\t10101: 0x000081C2,\n\t10102: 0x000081C0,\n\t10103: 0x000081BF,\n\t10104: 0x000081BD,\n\t10105: 0x000081C9,\n\t10106: 0x000081BE,\n\t10107: 0x000081E8,\n\t10108: 0x00008209,\n\t10109: 0x00008271,\n\t10110: 0x000085AA,\n\t10111: 0x00008584,\n\t10112: 0x0000857E,\n\t10113: 0x0000859C,\n\t10114: 0x00008591,\n\t10115: 0x00008594,\n\t10116: 0x000085AF,\n\t10117: 0x0000859B,\n\t10118: 0x00008587,\n\t10119: 0x000085A8,\n\t10120: 0x0000858A,\n\t10121: 0x00008667,\n\t10122: 0x000087C0,\n\t10123: 0x000087D1,\n\t10124: 0x000087B3,\n\t10125: 0x000087D2,\n\t10126: 0x000087C6,\n\t10127: 0x000087AB,\n\t10128: 0x000087BB,\n\t10129: 0x000087BA,\n\t10130: 0x000087C8,\n\t10131: 0x000087CB,\n\t10132: 0x0000893B,\n\t10133: 0x00008936,\n\t10134: 0x00008944,\n\t10135: 0x00008938,\n\t10136: 0x0000893D,\n\t10137: 0x000089AC,\n\t10138: 0x00008B0E,\n\t10139: 0x00008B17,\n\t10140: 0x00008B19,\n\t10141: 0x00008B1B,\n\t10142: 0x00008B0A,\n\t10143: 0x00008B20,\n\t10144: 0x00008B1D,\n\t10145: 0x00008B04,\n\t10146: 0x00008B10,\n\t10147: 0x00008C41,\n\t10148: 0x00008C3F,\n\t10149: 0x00008C73,\n\t10150: 0x00008CFA,\n\t10151: 0x00008CFD,\n\t10152: 0x00008CFC,\n\t10153: 0x00008CF8,\n\t10154: 0x00008CFB,\n\t10155: 0x00008DA8,\n\t10156: 0x00008E49,\n\t10157: 0x00008E4B,\n\t10158: 0x00008E48,\n\t10159: 0x00008E4A,\n\t10160: 0x00008F44,\n\t10161: 0x00008F3E,\n\t10162: 0x00008F42,\n\t10163: 0x00008F45,\n\t10164: 0x00008F3F,\n\t10165: 0x0000907F,\n\t10166: 0x0000907D,\n\t10167: 0x00009084,\n\t10168: 0x00009081,\n\t10169: 0x00009082,\n\t10170: 0x00009080,\n\t10171: 0x00009139,\n\t10172: 0x000091A3,\n\t10173: 0x0000919E,\n\t10174: 0x0000919C,\n\t10175: 0x0000934D,\n\t10176: 0x00009382,\n\t10177: 0x00009328,\n\t10178: 0x00009375,\n\t10179: 0x0000934A,\n\t10180: 0x00009365,\n\t10181: 0x0000934B,\n\t10182: 0x00009318,\n\t10183: 0x0000937E,\n\t10184: 0x0000936C,\n\t10185: 0x0000935B,\n\t10186: 0x00009370,\n\t10187: 0x0000935A,\n\t10188: 0x00009354,\n\t10189: 0x000095CA,\n\t10190: 0x000095CB,\n\t10191: 0x000095CC,\n\t10192: 0x000095C8,\n\t10193: 0x000095C6,\n\t10194: 0x000096B1,\n\t10195: 0x000096B8,\n\t10196: 0x000096D6,\n\t10197: 0x0000971C,\n\t10198: 0x0000971E,\n\t10199: 0x000097A0,\n\t10200: 0x000097D3,\n\t10201: 0x00009846,\n\t10202: 0x000098B6,\n\t10203: 0x00009935,\n\t10204: 0x00009A01,\n\t10205: 0x000099FF,\n\t10206: 0x00009BAE,\n\t10207: 0x00009BAB,\n\t10208: 0x00009BAA,\n\t10209: 0x00009BAD,\n\t10210: 0x00009D3B,\n\t10211: 0x00009D3F,\n\t10212: 0x00009E8B,\n\t10213: 0x00009ECF,\n\t10214: 0x00009EDE,\n\t10215: 0x00009EDC,\n\t10216: 0x00009EDD,\n\t10217: 0x00009EDB,\n\t10218: 0x00009F3E,\n\t10219: 0x00009F4B,\n\t10220: 0x000053E2,\n\t10221: 0x00005695,\n\t10222: 0x000056AE,\n\t10223: 0x000058D9,\n\t10224: 0x000058D8,\n\t10225: 0x00005B38,\n\t10226: 0x00005F5D,\n\t10227: 0x000061E3,\n\t10228: 0x00006233,\n\t10229: 0x000064F4,\n\t10230: 0x000064F2,\n\t10231: 0x000064FE,\n\t10232: 0x00006506,\n\t10233: 0x000064FA,\n\t10234: 0x000064FB,\n\t10235: 0x000064F7,\n\t10236: 0x000065B7,\n\t10237: 0x000066DC,\n\t10238: 0x00006726,\n\t10239: 0x00006AB3,\n\t10240: 0x00006AAC,\n\t10241: 0x00006AC3,\n\t10242: 0x00006ABB,\n\t10243: 0x00006AB8,\n\t10244: 0x00006AC2,\n\t10245: 0x00006AAE,\n\t10246: 0x00006AAF,\n\t10247: 0x00006B5F,\n\t10248: 0x00006B78,\n\t10249: 0x00006BAF,\n\t10250: 0x00007009,\n\t10251: 0x0000700B,\n\t10252: 0x00006FFE,\n\t10253: 0x00007006,\n\t10254: 0x00006FFA,\n\t10255: 0x00007011,\n\t10256: 0x0000700F,\n\t10257: 0x000071FB,\n\t10258: 0x000071FC,\n\t10259: 0x000071FE,\n\t10260: 0x000071F8,\n\t10261: 0x00007377,\n\t10262: 0x00007375,\n\t10263: 0x000074A7,\n\t10264: 0x000074BF,\n\t10265: 0x00007515,\n\t10266: 0x00007656,\n\t10267: 0x00007658,\n\t10268: 0x00007652,\n\t10269: 0x000077BD,\n\t10270: 0x000077BF,\n\t10271: 0x000077BB,\n\t10272: 0x000077BC,\n\t10273: 0x0000790E,\n\t10274: 0x000079AE,\n\t10275: 0x00007A61,\n\t10276: 0x00007A62,\n\t10277: 0x00007A60,\n\t10278: 0x00007AC4,\n\t10279: 0x00007AC5,\n\t10280: 0x00007C2B,\n\t10281: 0x00007C27,\n\t10282: 0x00007C2A,\n\t10283: 0x00007C1E,\n\t10284: 0x00007C23,\n\t10285: 0x00007C21,\n\t10286: 0x00007CE7,\n\t10287: 0x00007E54,\n\t10288: 0x00007E55,\n\t10289: 0x00007E5E,\n\t10290: 0x00007E5A,\n\t10291: 0x00007E61,\n\t10292: 0x00007E52,\n\t10293: 0x00007E59,\n\t10294: 0x00007F48,\n\t10295: 0x00007FF9,\n\t10296: 0x00007FFB,\n\t10297: 0x00008077,\n\t10298: 0x00008076,\n\t10299: 0x000081CD,\n\t10300: 0x000081CF,\n\t10301: 0x0000820A,\n\t10302: 0x000085CF,\n\t10303: 0x000085A9,\n\t10304: 0x000085CD,\n\t10305: 0x000085D0,\n\t10306: 0x000085C9,\n\t10307: 0x000085B0,\n\t10308: 0x000085BA,\n\t10309: 0x000085B9,\n\t10310: 0x000085A6,\n\t10311: 0x000087EF,\n\t10312: 0x000087EC,\n\t10313: 0x000087F2,\n\t10314: 0x000087E0,\n\t10315: 0x00008986,\n\t10316: 0x000089B2,\n\t10317: 0x000089F4,\n\t10318: 0x00008B28,\n\t10319: 0x00008B39,\n\t10320: 0x00008B2C,\n\t10321: 0x00008B2B,\n\t10322: 0x00008C50,\n\t10323: 0x00008D05,\n\t10324: 0x00008E59,\n\t10325: 0x00008E63,\n\t10326: 0x00008E66,\n\t10327: 0x00008E64,\n\t10328: 0x00008E5F,\n\t10329: 0x00008E55,\n\t10330: 0x00008EC0,\n\t10331: 0x00008F49,\n\t10332: 0x00008F4D,\n\t10333: 0x00009087,\n\t10334: 0x00009083,\n\t10335: 0x00009088,\n\t10336: 0x000091AB,\n\t10337: 0x000091AC,\n\t10338: 0x000091D0,\n\t10339: 0x00009394,\n\t10340: 0x0000938A,\n\t10341: 0x00009396,\n\t10342: 0x000093A2,\n\t10343: 0x000093B3,\n\t10344: 0x000093AE,\n\t10345: 0x000093AC,\n\t10346: 0x000093B0,\n\t10347: 0x00009398,\n\t10348: 0x0000939A,\n\t10349: 0x00009397,\n\t10350: 0x000095D4,\n\t10351: 0x000095D6,\n\t10352: 0x000095D0,\n\t10353: 0x000095D5,\n\t10354: 0x000096E2,\n\t10355: 0x000096DC,\n\t10356: 0x000096D9,\n\t10357: 0x000096DB,\n\t10358: 0x000096DE,\n\t10359: 0x00009724,\n\t10360: 0x000097A3,\n\t10361: 0x000097A6,\n\t10362: 0x000097AD,\n\t10363: 0x000097F9,\n\t10364: 0x0000984D,\n\t10365: 0x0000984F,\n\t10366: 0x0000984C,\n\t10367: 0x0000984E,\n\t10368: 0x00009853,\n\t10369: 0x000098BA,\n\t10370: 0x0000993E,\n\t10371: 0x0000993F,\n\t10372: 0x0000993D,\n\t10373: 0x0000992E,\n\t10374: 0x000099A5,\n\t10375: 0x00009A0E,\n\t10376: 0x00009AC1,\n\t10377: 0x00009B03,\n\t10378: 0x00009B06,\n\t10379: 0x00009B4F,\n\t10380: 0x00009B4E,\n\t10381: 0x00009B4D,\n\t10382: 0x00009BCA,\n\t10383: 0x00009BC9,\n\t10384: 0x00009BFD,\n\t10385: 0x00009BC8,\n\t10386: 0x00009BC0,\n\t10387: 0x00009D51,\n\t10388: 0x00009D5D,\n\t10389: 0x00009D60,\n\t10390: 0x00009EE0,\n\t10391: 0x00009F15,\n\t10392: 0x00009F2C,\n\t10393: 0x00005133,\n\t10394: 0x000056A5,\n\t10395: 0x000058DE,\n\t10396: 0x000058DF,\n\t10397: 0x000058E2,\n\t10398: 0x00005BF5,\n\t10399: 0x00009F90,\n\t10400: 0x00005EEC,\n\t10401: 0x000061F2,\n\t10402: 0x000061F7,\n\t10403: 0x000061F6,\n\t10404: 0x000061F5,\n\t10405: 0x00006500,\n\t10406: 0x0000650F,\n\t10407: 0x000066E0,\n\t10408: 0x000066DD,\n\t10409: 0x00006AE5,\n\t10410: 0x00006ADD,\n\t10411: 0x00006ADA,\n\t10412: 0x00006AD3,\n\t10413: 0x0000701B,\n\t10414: 0x0000701F,\n\t10415: 0x00007028,\n\t10416: 0x0000701A,\n\t10417: 0x0000701D,\n\t10418: 0x00007015,\n\t10419: 0x00007018,\n\t10420: 0x00007206,\n\t10421: 0x0000720D,\n\t10422: 0x00007258,\n\t10423: 0x000072A2,\n\t10424: 0x00007378,\n\t10425: 0x0000737A,\n\t10426: 0x000074BD,\n\t10427: 0x000074CA,\n\t10428: 0x000074E3,\n\t10429: 0x00007587,\n\t10430: 0x00007586,\n\t10431: 0x0000765F,\n\t10432: 0x00007661,\n\t10433: 0x000077C7,\n\t10434: 0x00007919,\n\t10435: 0x000079B1,\n\t10436: 0x00007A6B,\n\t10437: 0x00007A69,\n\t10438: 0x00007C3E,\n\t10439: 0x00007C3F,\n\t10440: 0x00007C38,\n\t10441: 0x00007C3D,\n\t10442: 0x00007C37,\n\t10443: 0x00007C40,\n\t10444: 0x00007E6B,\n\t10445: 0x00007E6D,\n\t10446: 0x00007E79,\n\t10447: 0x00007E69,\n\t10448: 0x00007E6A,\n\t10449: 0x00007F85,\n\t10450: 0x00007E73,\n\t10451: 0x00007FB6,\n\t10452: 0x00007FB9,\n\t10453: 0x00007FB8,\n\t10454: 0x000081D8,\n\t10455: 0x000085E9,\n\t10456: 0x000085DD,\n\t10457: 0x000085EA,\n\t10458: 0x000085D5,\n\t10459: 0x000085E4,\n\t10460: 0x000085E5,\n\t10461: 0x000085F7,\n\t10462: 0x000087FB,\n\t10463: 0x00008805,\n\t10464: 0x0000880D,\n\t10465: 0x000087F9,\n\t10466: 0x000087FE,\n\t10467: 0x00008960,\n\t10468: 0x0000895F,\n\t10469: 0x00008956,\n\t10470: 0x0000895E,\n\t10471: 0x00008B41,\n\t10472: 0x00008B5C,\n\t10473: 0x00008B58,\n\t10474: 0x00008B49,\n\t10475: 0x00008B5A,\n\t10476: 0x00008B4E,\n\t10477: 0x00008B4F,\n\t10478: 0x00008B46,\n\t10479: 0x00008B59,\n\t10480: 0x00008D08,\n\t10481: 0x00008D0A,\n\t10482: 0x00008E7C,\n\t10483: 0x00008E72,\n\t10484: 0x00008E87,\n\t10485: 0x00008E76,\n\t10486: 0x00008E6C,\n\t10487: 0x00008E7A,\n\t10488: 0x00008E74,\n\t10489: 0x00008F54,\n\t10490: 0x00008F4E,\n\t10491: 0x00008FAD,\n\t10492: 0x0000908A,\n\t10493: 0x0000908B,\n\t10494: 0x000091B1,\n\t10495: 0x000091AE,\n\t10496: 0x000093E1,\n\t10497: 0x000093D1,\n\t10498: 0x000093DF,\n\t10499: 0x000093C3,\n\t10500: 0x000093C8,\n\t10501: 0x000093DC,\n\t10502: 0x000093DD,\n\t10503: 0x000093D6,\n\t10504: 0x000093E2,\n\t10505: 0x000093CD,\n\t10506: 0x000093D8,\n\t10507: 0x000093E4,\n\t10508: 0x000093D7,\n\t10509: 0x000093E8,\n\t10510: 0x000095DC,\n\t10511: 0x000096B4,\n\t10512: 0x000096E3,\n\t10513: 0x0000972A,\n\t10514: 0x00009727,\n\t10515: 0x00009761,\n\t10516: 0x000097DC,\n\t10517: 0x000097FB,\n\t10518: 0x0000985E,\n\t10519: 0x00009858,\n\t10520: 0x0000985B,\n\t10521: 0x000098BC,\n\t10522: 0x00009945,\n\t10523: 0x00009949,\n\t10524: 0x00009A16,\n\t10525: 0x00009A19,\n\t10526: 0x00009B0D,\n\t10527: 0x00009BE8,\n\t10528: 0x00009BE7,\n\t10529: 0x00009BD6,\n\t10530: 0x00009BDB,\n\t10531: 0x00009D89,\n\t10532: 0x00009D61,\n\t10533: 0x00009D72,\n\t10534: 0x00009D6A,\n\t10535: 0x00009D6C,\n\t10536: 0x00009E92,\n\t10537: 0x00009E97,\n\t10538: 0x00009E93,\n\t10539: 0x00009EB4,\n\t10540: 0x000052F8,\n\t10541: 0x000056A8,\n\t10542: 0x000056B7,\n\t10543: 0x000056B6,\n\t10544: 0x000056B4,\n\t10545: 0x000056BC,\n\t10546: 0x000058E4,\n\t10547: 0x00005B40,\n\t10548: 0x00005B43,\n\t10549: 0x00005B7D,\n\t10550: 0x00005BF6,\n\t10551: 0x00005DC9,\n\t10552: 0x000061F8,\n\t10553: 0x000061FA,\n\t10554: 0x00006518,\n\t10555: 0x00006514,\n\t10556: 0x00006519,\n\t10557: 0x000066E6,\n\t10558: 0x00006727,\n\t10559: 0x00006AEC,\n\t10560: 0x0000703E,\n\t10561: 0x00007030,\n\t10562: 0x00007032,\n\t10563: 0x00007210,\n\t10564: 0x0000737B,\n\t10565: 0x000074CF,\n\t10566: 0x00007662,\n\t10567: 0x00007665,\n\t10568: 0x00007926,\n\t10569: 0x0000792A,\n\t10570: 0x0000792C,\n\t10571: 0x0000792B,\n\t10572: 0x00007AC7,\n\t10573: 0x00007AF6,\n\t10574: 0x00007C4C,\n\t10575: 0x00007C43,\n\t10576: 0x00007C4D,\n\t10577: 0x00007CEF,\n\t10578: 0x00007CF0,\n\t10579: 0x00008FAE,\n\t10580: 0x00007E7D,\n\t10581: 0x00007E7C,\n\t10582: 0x00007E82,\n\t10583: 0x00007F4C,\n\t10584: 0x00008000,\n\t10585: 0x000081DA,\n\t10586: 0x00008266,\n\t10587: 0x000085FB,\n\t10588: 0x000085F9,\n\t10589: 0x00008611,\n\t10590: 0x000085FA,\n\t10591: 0x00008606,\n\t10592: 0x0000860B,\n\t10593: 0x00008607,\n\t10594: 0x0000860A,\n\t10595: 0x00008814,\n\t10596: 0x00008815,\n\t10597: 0x00008964,\n\t10598: 0x000089BA,\n\t10599: 0x000089F8,\n\t10600: 0x00008B70,\n\t10601: 0x00008B6C,\n\t10602: 0x00008B66,\n\t10603: 0x00008B6F,\n\t10604: 0x00008B5F,\n\t10605: 0x00008B6B,\n\t10606: 0x00008D0F,\n\t10607: 0x00008D0D,\n\t10608: 0x00008E89,\n\t10609: 0x00008E81,\n\t10610: 0x00008E85,\n\t10611: 0x00008E82,\n\t10612: 0x000091B4,\n\t10613: 0x000091CB,\n\t10614: 0x00009418,\n\t10615: 0x00009403,\n\t10616: 0x000093FD,\n\t10617: 0x000095E1,\n\t10618: 0x00009730,\n\t10619: 0x000098C4,\n\t10620: 0x00009952,\n\t10621: 0x00009951,\n\t10622: 0x000099A8,\n\t10623: 0x00009A2B,\n\t10624: 0x00009A30,\n\t10625: 0x00009A37,\n\t10626: 0x00009A35,\n\t10627: 0x00009C13,\n\t10628: 0x00009C0D,\n\t10629: 0x00009E79,\n\t10630: 0x00009EB5,\n\t10631: 0x00009EE8,\n\t10632: 0x00009F2F,\n\t10633: 0x00009F5F,\n\t10634: 0x00009F63,\n\t10635: 0x00009F61,\n\t10636: 0x00005137,\n\t10637: 0x00005138,\n\t10638: 0x000056C1,\n\t10639: 0x000056C0,\n\t10640: 0x000056C2,\n\t10641: 0x00005914,\n\t10642: 0x00005C6C,\n\t10643: 0x00005DCD,\n\t10644: 0x000061FC,\n\t10645: 0x000061FE,\n\t10646: 0x0000651D,\n\t10647: 0x0000651C,\n\t10648: 0x00006595,\n\t10649: 0x000066E9,\n\t10650: 0x00006AFB,\n\t10651: 0x00006B04,\n\t10652: 0x00006AFA,\n\t10653: 0x00006BB2,\n\t10654: 0x0000704C,\n\t10655: 0x0000721B,\n\t10656: 0x000072A7,\n\t10657: 0x000074D6,\n\t10658: 0x000074D4,\n\t10659: 0x00007669,\n\t10660: 0x000077D3,\n\t10661: 0x00007C50,\n\t10662: 0x00007E8F,\n\t10663: 0x00007E8C,\n\t10664: 0x00007FBC,\n\t10665: 0x00008617,\n\t10666: 0x0000862D,\n\t10667: 0x0000861A,\n\t10668: 0x00008823,\n\t10669: 0x00008822,\n\t10670: 0x00008821,\n\t10671: 0x0000881F,\n\t10672: 0x0000896A,\n\t10673: 0x0000896C,\n\t10674: 0x000089BD,\n\t10675: 0x00008B74,\n\t10676: 0x00008B77,\n\t10677: 0x00008B7D,\n\t10678: 0x00008D13,\n\t10679: 0x00008E8A,\n\t10680: 0x00008E8D,\n\t10681: 0x00008E8B,\n\t10682: 0x00008F5F,\n\t10683: 0x00008FAF,\n\t10684: 0x000091BA,\n\t10685: 0x0000942E,\n\t10686: 0x00009433,\n\t10687: 0x00009435,\n\t10688: 0x0000943A,\n\t10689: 0x00009438,\n\t10690: 0x00009432,\n\t10691: 0x0000942B,\n\t10692: 0x000095E2,\n\t10693: 0x00009738,\n\t10694: 0x00009739,\n\t10695: 0x00009732,\n\t10696: 0x000097FF,\n\t10697: 0x00009867,\n\t10698: 0x00009865,\n\t10699: 0x00009957,\n\t10700: 0x00009A45,\n\t10701: 0x00009A43,\n\t10702: 0x00009A40,\n\t10703: 0x00009A3E,\n\t10704: 0x00009ACF,\n\t10705: 0x00009B54,\n\t10706: 0x00009B51,\n\t10707: 0x00009C2D,\n\t10708: 0x00009C25,\n\t10709: 0x00009DAF,\n\t10710: 0x00009DB4,\n\t10711: 0x00009DC2,\n\t10712: 0x00009DB8,\n\t10713: 0x00009E9D,\n\t10714: 0x00009EEF,\n\t10715: 0x00009F19,\n\t10716: 0x00009F5C,\n\t10717: 0x00009F66,\n\t10718: 0x00009F67,\n\t10719: 0x0000513C,\n\t10720: 0x0000513B,\n\t10721: 0x000056C8,\n\t10722: 0x000056CA,\n\t10723: 0x000056C9,\n\t10724: 0x00005B7F,\n\t10725: 0x00005DD4,\n\t10726: 0x00005DD2,\n\t10727: 0x00005F4E,\n\t10728: 0x000061FF,\n\t10729: 0x00006524,\n\t10730: 0x00006B0A,\n\t10731: 0x00006B61,\n\t10732: 0x00007051,\n\t10733: 0x00007058,\n\t10734: 0x00007380,\n\t10735: 0x000074E4,\n\t10736: 0x0000758A,\n\t10737: 0x0000766E,\n\t10738: 0x0000766C,\n\t10739: 0x000079B3,\n\t10740: 0x00007C60,\n\t10741: 0x00007C5F,\n\t10742: 0x0000807E,\n\t10743: 0x0000807D,\n\t10744: 0x000081DF,\n\t10745: 0x00008972,\n\t10746: 0x0000896F,\n\t10747: 0x000089FC,\n\t10748: 0x00008B80,\n\t10749: 0x00008D16,\n\t10750: 0x00008D17,\n\t10751: 0x00008E91,\n\t10752: 0x00008E93,\n\t10753: 0x00008F61,\n\t10754: 0x00009148,\n\t10755: 0x00009444,\n\t10756: 0x00009451,\n\t10757: 0x00009452,\n\t10758: 0x0000973D,\n\t10759: 0x0000973E,\n\t10760: 0x000097C3,\n\t10761: 0x000097C1,\n\t10762: 0x0000986B,\n\t10763: 0x00009955,\n\t10764: 0x00009A55,\n\t10765: 0x00009A4D,\n\t10766: 0x00009AD2,\n\t10767: 0x00009B1A,\n\t10768: 0x00009C49,\n\t10769: 0x00009C31,\n\t10770: 0x00009C3E,\n\t10771: 0x00009C3B,\n\t10772: 0x00009DD3,\n\t10773: 0x00009DD7,\n\t10774: 0x00009F34,\n\t10775: 0x00009F6C,\n\t10776: 0x00009F6A,\n\t10777: 0x00009F94,\n\t10778: 0x000056CC,\n\t10779: 0x00005DD6,\n\t10780: 0x00006200,\n\t10781: 0x00006523,\n\t10782: 0x0000652B,\n\t10783: 0x0000652A,\n\t10784: 0x000066EC,\n\t10785: 0x00006B10,\n\t10786: 0x000074DA,\n\t10787: 0x00007ACA,\n\t10788: 0x00007C64,\n\t10789: 0x00007C63,\n\t10790: 0x00007C65,\n\t10791: 0x00007E93,\n\t10792: 0x00007E96,\n\t10793: 0x00007E94,\n\t10794: 0x000081E2,\n\t10795: 0x00008638,\n\t10796: 0x0000863F,\n\t10797: 0x00008831,\n\t10798: 0x00008B8A,\n\t10799: 0x00009090,\n\t10800: 0x0000908F,\n\t10801: 0x00009463,\n\t10802: 0x00009460,\n\t10803: 0x00009464,\n\t10804: 0x00009768,\n\t10805: 0x0000986F,\n\t10806: 0x0000995C,\n\t10807: 0x00009A5A,\n\t10808: 0x00009A5B,\n\t10809: 0x00009A57,\n\t10810: 0x00009AD3,\n\t10811: 0x00009AD4,\n\t10812: 0x00009AD1,\n\t10813: 0x00009C54,\n\t10814: 0x00009C57,\n\t10815: 0x00009C56,\n\t10816: 0x00009DE5,\n\t10817: 0x00009E9F,\n\t10818: 0x00009EF4,\n\t10819: 0x000056D1,\n\t10820: 0x000058E9,\n\t10821: 0x0000652C,\n\t10822: 0x0000705E,\n\t10823: 0x00007671,\n\t10824: 0x00007672,\n\t10825: 0x000077D7,\n\t10826: 0x00007F50,\n\t10827: 0x00007F88,\n\t10828: 0x00008836,\n\t10829: 0x00008839,\n\t10830: 0x00008862,\n\t10831: 0x00008B93,\n\t10832: 0x00008B92,\n\t10833: 0x00008B96,\n\t10834: 0x00008277,\n\t10835: 0x00008D1B,\n\t10836: 0x000091C0,\n\t10837: 0x0000946A,\n\t10838: 0x00009742,\n\t10839: 0x00009748,\n\t10840: 0x00009744,\n\t10841: 0x000097C6,\n\t10842: 0x00009870,\n\t10843: 0x00009A5F,\n\t10844: 0x00009B22,\n\t10845: 0x00009B58,\n\t10846: 0x00009C5F,\n\t10847: 0x00009DF9,\n\t10848: 0x00009DFA,\n\t10849: 0x00009E7C,\n\t10850: 0x00009E7D,\n\t10851: 0x00009F07,\n\t10852: 0x00009F77,\n\t10853: 0x00009F72,\n\t10854: 0x00005EF3,\n\t10855: 0x00006B16,\n\t10856: 0x00007063,\n\t10857: 0x00007C6C,\n\t10858: 0x00007C6E,\n\t10859: 0x0000883B,\n\t10860: 0x000089C0,\n\t10861: 0x00008EA1,\n\t10862: 0x000091C1,\n\t10863: 0x00009472,\n\t10864: 0x00009470,\n\t10865: 0x00009871,\n\t10866: 0x0000995E,\n\t10867: 0x00009AD6,\n\t10868: 0x00009B23,\n\t10869: 0x00009ECC,\n\t10870: 0x00007064,\n\t10871: 0x000077DA,\n\t10872: 0x00008B9A,\n\t10873: 0x00009477,\n\t10874: 0x000097C9,\n\t10875: 0x00009A62,\n\t10876: 0x00009A65,\n\t10877: 0x00007E9C,\n\t10878: 0x00008B9C,\n\t10879: 0x00008EAA,\n\t10880: 0x000091C5,\n\t10881: 0x0000947D,\n\t10882: 0x0000947E,\n\t10883: 0x0000947C,\n\t10884: 0x00009C77,\n\t10885: 0x00009C78,\n\t10886: 0x00009EF7,\n\t10887: 0x00008C54,\n\t10888: 0x0000947F,\n\t10889: 0x00009E1A,\n\t10890: 0x00007228,\n\t10891: 0x00009A6A,\n\t10892: 0x00009B31,\n\t10893: 0x00009E1B,\n\t10894: 0x00009E1E,\n\t10895: 0x00007C72,\n\t10896: 0x00002460,\n\t10897: 0x00002461,\n\t10898: 0x00002462,\n\t10899: 0x00002463,\n\t10900: 0x00002464,\n\t10901: 0x00002465,\n\t10902: 0x00002466,\n\t10903: 0x00002467,\n\t10904: 0x00002468,\n\t10905: 0x00002469,\n\t10906: 0x00002474,\n\t10907: 0x00002475,\n\t10908: 0x00002476,\n\t10909: 0x00002477,\n\t10910: 0x00002478,\n\t10911: 0x00002479,\n\t10912: 0x0000247A,\n\t10913: 0x0000247B,\n\t10914: 0x0000247C,\n\t10915: 0x0000247D,\n\t10916: 0x00002170,\n\t10917: 0x00002171,\n\t10918: 0x00002172,\n\t10919: 0x00002173,\n\t10920: 0x00002174,\n\t10921: 0x00002175,\n\t10922: 0x00002176,\n\t10923: 0x00002177,\n\t10924: 0x00002178,\n\t10925: 0x00002179,\n\t10926: 0x00004E36,\n\t10927: 0x00004E3F,\n\t10928: 0x00004E85,\n\t10929: 0x00004EA0,\n\t10930: 0x00005182,\n\t10931: 0x00005196,\n\t10932: 0x000051AB,\n\t10933: 0x000052F9,\n\t10934: 0x00005338,\n\t10935: 0x00005369,\n\t10936: 0x000053B6,\n\t10937: 0x0000590A,\n\t10938: 0x00005B80,\n\t10939: 0x00005DDB,\n\t10940: 0x00002F33,\n\t10941: 0x00005E7F,\n\t10942: 0x00005EF4,\n\t10943: 0x00005F50,\n\t10944: 0x00005F61,\n\t10945: 0x00006534,\n\t10946: 0x000065E0,\n\t10947: 0x00007592,\n\t10948: 0x00007676,\n\t10949: 0x00008FB5,\n\t10950: 0x000096B6,\n\t10951: 0x000000A8,\n\t10952: 0x000002C6,\n\t10953: 0x000030FD,\n\t10954: 0x000030FE,\n\t10955: 0x0000309D,\n\t10956: 0x0000309E,\n\t10957: 0x00003003,\n\t10958: 0x00004EDD,\n\t10959: 0x00003005,\n\t10960: 0x00003006,\n\t10961: 0x00003007,\n\t10962: 0x000030FC,\n\t10963: 0x0000FF3B,\n\t10964: 0x0000FF3D,\n\t10965: 0x0000273D,\n\t10966: 0x00003041,\n\t10967: 0x00003042,\n\t10968: 0x00003043,\n\t10969: 0x00003044,\n\t10970: 0x00003045,\n\t10971: 0x00003046,\n\t10972: 0x00003047,\n\t10973: 0x00003048,\n\t10974: 0x00003049,\n\t10975: 0x0000304A,\n\t10976: 0x0000304B,\n\t10977: 0x0000304C,\n\t10978: 0x0000304D,\n\t10979: 0x0000304E,\n\t10980: 0x0000304F,\n\t10981: 0x00003050,\n\t10982: 0x00003051,\n\t10983: 0x00003052,\n\t10984: 0x00003053,\n\t10985: 0x00003054,\n\t10986: 0x00003055,\n\t10987: 0x00003056,\n\t10988: 0x00003057,\n\t10989: 0x00003058,\n\t10990: 0x00003059,\n\t10991: 0x0000305A,\n\t10992: 0x0000305B,\n\t10993: 0x0000305C,\n\t10994: 0x0000305D,\n\t10995: 0x0000305E,\n\t10996: 0x0000305F,\n\t10997: 0x00003060,\n\t10998: 0x00003061,\n\t10999: 0x00003062,\n\t11000: 0x00003063,\n\t11001: 0x00003064,\n\t11002: 0x00003065,\n\t11003: 0x00003066,\n\t11004: 0x00003067,\n\t11005: 0x00003068,\n\t11006: 0x00003069,\n\t11007: 0x0000306A,\n\t11008: 0x0000306B,\n\t11009: 0x0000306C,\n\t11010: 0x0000306D,\n\t11011: 0x0000306E,\n\t11012: 0x0000306F,\n\t11013: 0x00003070,\n\t11014: 0x00003071,\n\t11015: 0x00003072,\n\t11016: 0x00003073,\n\t11017: 0x00003074,\n\t11018: 0x00003075,\n\t11019: 0x00003076,\n\t11020: 0x00003077,\n\t11021: 0x00003078,\n\t11022: 0x00003079,\n\t11023: 0x0000307A,\n\t11024: 0x0000307B,\n\t11025: 0x0000307C,\n\t11026: 0x0000307D,\n\t11027: 0x0000307E,\n\t11028: 0x0000307F,\n\t11029: 0x00003080,\n\t11030: 0x00003081,\n\t11031: 0x00003082,\n\t11032: 0x00003083,\n\t11033: 0x00003084,\n\t11034: 0x00003085,\n\t11035: 0x00003086,\n\t11036: 0x00003087,\n\t11037: 0x00003088,\n\t11038: 0x00003089,\n\t11039: 0x0000308A,\n\t11040: 0x0000308B,\n\t11041: 0x0000308C,\n\t11042: 0x0000308D,\n\t11043: 0x0000308E,\n\t11044: 0x0000308F,\n\t11045: 0x00003090,\n\t11046: 0x00003091,\n\t11047: 0x00003092,\n\t11048: 0x00003093,\n\t11049: 0x000030A1,\n\t11050: 0x000030A2,\n\t11051: 0x000030A3,\n\t11052: 0x000030A4,\n\t11053: 0x000030A5,\n\t11054: 0x000030A6,\n\t11055: 0x000030A7,\n\t11056: 0x000030A8,\n\t11057: 0x000030A9,\n\t11058: 0x000030AA,\n\t11059: 0x000030AB,\n\t11060: 0x000030AC,\n\t11061: 0x000030AD,\n\t11062: 0x000030AE,\n\t11063: 0x000030AF,\n\t11064: 0x000030B0,\n\t11065: 0x000030B1,\n\t11066: 0x000030B2,\n\t11067: 0x000030B3,\n\t11068: 0x000030B4,\n\t11069: 0x000030B5,\n\t11070: 0x000030B6,\n\t11071: 0x000030B7,\n\t11072: 0x000030B8,\n\t11073: 0x000030B9,\n\t11074: 0x000030BA,\n\t11075: 0x000030BB,\n\t11076: 0x000030BC,\n\t11077: 0x000030BD,\n\t11078: 0x000030BE,\n\t11079: 0x000030BF,\n\t11080: 0x000030C0,\n\t11081: 0x000030C1,\n\t11082: 0x000030C2,\n\t11083: 0x000030C3,\n\t11084: 0x000030C4,\n\t11085: 0x000030C5,\n\t11086: 0x000030C6,\n\t11087: 0x000030C7,\n\t11088: 0x000030C8,\n\t11089: 0x000030C9,\n\t11090: 0x000030CA,\n\t11091: 0x000030CB,\n\t11092: 0x000030CC,\n\t11093: 0x000030CD,\n\t11094: 0x000030CE,\n\t11095: 0x000030CF,\n\t11096: 0x000030D0,\n\t11097: 0x000030D1,\n\t11098: 0x000030D2,\n\t11099: 0x000030D3,\n\t11100: 0x000030D4,\n\t11101: 0x000030D5,\n\t11102: 0x000030D6,\n\t11103: 0x000030D7,\n\t11104: 0x000030D8,\n\t11105: 0x000030D9,\n\t11106: 0x000030DA,\n\t11107: 0x000030DB,\n\t11108: 0x000030DC,\n\t11109: 0x000030DD,\n\t11110: 0x000030DE,\n\t11111: 0x000030DF,\n\t11112: 0x000030E0,\n\t11113: 0x000030E1,\n\t11114: 0x000030E2,\n\t11115: 0x000030E3,\n\t11116: 0x000030E4,\n\t11117: 0x000030E5,\n\t11118: 0x000030E6,\n\t11119: 0x000030E7,\n\t11120: 0x000030E8,\n\t11121: 0x000030E9,\n\t11122: 0x000030EA,\n\t11123: 0x000030EB,\n\t11124: 0x000030EC,\n\t11125: 0x000030ED,\n\t11126: 0x000030EE,\n\t11127: 0x000030EF,\n\t11128: 0x000030F0,\n\t11129: 0x000030F1,\n\t11130: 0x000030F2,\n\t11131: 0x000030F3,\n\t11132: 0x000030F4,\n\t11133: 0x000030F5,\n\t11134: 0x000030F6,\n\t11135: 0x00000410,\n\t11136: 0x00000411,\n\t11137: 0x00000412,\n\t11138: 0x00000413,\n\t11139: 0x00000414,\n\t11140: 0x00000415,\n\t11141: 0x00000401,\n\t11142: 0x00000416,\n\t11143: 0x00000417,\n\t11144: 0x00000418,\n\t11145: 0x00000419,\n\t11146: 0x0000041A,\n\t11147: 0x0000041B,\n\t11148: 0x0000041C,\n\t11149: 0x0000041D,\n\t11150: 0x0000041E,\n\t11151: 0x0000041F,\n\t11152: 0x00000420,\n\t11153: 0x00000421,\n\t11154: 0x00000422,\n\t11155: 0x00000423,\n\t11156: 0x00000424,\n\t11157: 0x00000425,\n\t11158: 0x00000426,\n\t11159: 0x00000427,\n\t11160: 0x00000428,\n\t11161: 0x00000429,\n\t11162: 0x0000042A,\n\t11163: 0x0000042B,\n\t11164: 0x0000042C,\n\t11165: 0x0000042D,\n\t11166: 0x0000042E,\n\t11167: 0x0000042F,\n\t11168: 0x00000430,\n\t11169: 0x00000431,\n\t11170: 0x00000432,\n\t11171: 0x00000433,\n\t11172: 0x00000434,\n\t11173: 0x00000435,\n\t11174: 0x00000451,\n\t11175: 0x00000436,\n\t11176: 0x00000437,\n\t11177: 0x00000438,\n\t11178: 0x00000439,\n\t11179: 0x0000043A,\n\t11180: 0x0000043B,\n\t11181: 0x0000043C,\n\t11182: 0x0000043D,\n\t11183: 0x0000043E,\n\t11184: 0x0000043F,\n\t11185: 0x00000440,\n\t11186: 0x00000441,\n\t11187: 0x00000442,\n\t11188: 0x00000443,\n\t11189: 0x00000444,\n\t11190: 0x00000445,\n\t11191: 0x00000446,\n\t11192: 0x00000447,\n\t11193: 0x00000448,\n\t11194: 0x00000449,\n\t11195: 0x0000044A,\n\t11196: 0x0000044B,\n\t11197: 0x0000044C,\n\t11198: 0x0000044D,\n\t11199: 0x0000044E,\n\t11200: 0x0000044F,\n\t11201: 0x000021E7,\n\t11202: 0x000021B8,\n\t11203: 0x000021B9,\n\t11204: 0x000031CF,\n\t11205: 0x000200CC,\n\t11206: 0x00004E5A,\n\t11207: 0x0002008A,\n\t11208: 0x00005202,\n\t11209: 0x00004491,\n\t11210: 0x00009FB0,\n\t11211: 0x00005188,\n\t11212: 0x00009FB1,\n\t11213: 0x00027607,\n\t11254: 0x0000FFE2,\n\t11255: 0x0000FFE4,\n\t11256: 0x0000FF07,\n\t11257: 0x0000FF02,\n\t11258: 0x00003231,\n\t11259: 0x00002116,\n\t11260: 0x00002121,\n\t11261: 0x0000309B,\n\t11262: 0x0000309C,\n\t11263: 0x00002E80,\n\t11264: 0x00002E84,\n\t11265: 0x00002E86,\n\t11266: 0x00002E87,\n\t11267: 0x00002E88,\n\t11268: 0x00002E8A,\n\t11269: 0x00002E8C,\n\t11270: 0x00002E8D,\n\t11271: 0x00002E95,\n\t11272: 0x00002E9C,\n\t11273: 0x00002E9D,\n\t11274: 0x00002EA5,\n\t11275: 0x00002EA7,\n\t11276: 0x00002EAA,\n\t11277: 0x00002EAC,\n\t11278: 0x00002EAE,\n\t11279: 0x00002EB6,\n\t11280: 0x00002EBC,\n\t11281: 0x00002EBE,\n\t11282: 0x00002EC6,\n\t11283: 0x00002ECA,\n\t11284: 0x00002ECC,\n\t11285: 0x00002ECD,\n\t11286: 0x00002ECF,\n\t11287: 0x00002ED6,\n\t11288: 0x00002ED7,\n\t11289: 0x00002EDE,\n\t11290: 0x00002EE3,\n\t11294: 0x00000283,\n\t11295: 0x00000250,\n\t11296: 0x0000025B,\n\t11297: 0x00000254,\n\t11298: 0x00000275,\n\t11299: 0x00000153,\n\t11300: 0x000000F8,\n\t11301: 0x0000014B,\n\t11302: 0x0000028A,\n\t11303: 0x0000026A,\n\t11304: 0x00004E42,\n\t11305: 0x00004E5C,\n\t11306: 0x000051F5,\n\t11307: 0x0000531A,\n\t11308: 0x00005382,\n\t11309: 0x00004E07,\n\t11310: 0x00004E0C,\n\t11311: 0x00004E47,\n\t11312: 0x00004E8D,\n\t11313: 0x000056D7,\n\t11314: 0x0000FA0C,\n\t11315: 0x00005C6E,\n\t11316: 0x00005F73,\n\t11317: 0x00004E0F,\n\t11318: 0x00005187,\n\t11319: 0x00004E0E,\n\t11320: 0x00004E2E,\n\t11321: 0x00004E93,\n\t11322: 0x00004EC2,\n\t11323: 0x00004EC9,\n\t11324: 0x00004EC8,\n\t11325: 0x00005198,\n\t11326: 0x000052FC,\n\t11327: 0x0000536C,\n\t11328: 0x000053B9,\n\t11329: 0x00005720,\n\t11330: 0x00005903,\n\t11331: 0x0000592C,\n\t11332: 0x00005C10,\n\t11333: 0x00005DFF,\n\t11334: 0x000065E1,\n\t11335: 0x00006BB3,\n\t11336: 0x00006BCC,\n\t11337: 0x00006C14,\n\t11338: 0x0000723F,\n\t11339: 0x00004E31,\n\t11340: 0x00004E3C,\n\t11341: 0x00004EE8,\n\t11342: 0x00004EDC,\n\t11343: 0x00004EE9,\n\t11344: 0x00004EE1,\n\t11345: 0x00004EDD,\n\t11346: 0x00004EDA,\n\t11347: 0x0000520C,\n\t11348: 0x0000531C,\n\t11349: 0x0000534C,\n\t11350: 0x00005722,\n\t11351: 0x00005723,\n\t11352: 0x00005917,\n\t11353: 0x0000592F,\n\t11354: 0x00005B81,\n\t11355: 0x00005B84,\n\t11356: 0x00005C12,\n\t11357: 0x00005C3B,\n\t11358: 0x00005C74,\n\t11359: 0x00005C73,\n\t11360: 0x00005E04,\n\t11361: 0x00005E80,\n\t11362: 0x00005E82,\n\t11363: 0x00005FC9,\n\t11364: 0x00006209,\n\t11365: 0x00006250,\n\t11366: 0x00006C15,\n\t11367: 0x00006C36,\n\t11368: 0x00006C43,\n\t11369: 0x00006C3F,\n\t11370: 0x00006C3B,\n\t11371: 0x000072AE,\n\t11372: 0x000072B0,\n\t11373: 0x0000738A,\n\t11374: 0x000079B8,\n\t11375: 0x0000808A,\n\t11376: 0x0000961E,\n\t11377: 0x00004F0E,\n\t11378: 0x00004F18,\n\t11379: 0x00004F2C,\n\t11380: 0x00004EF5,\n\t11381: 0x00004F14,\n\t11382: 0x00004EF1,\n\t11383: 0x00004F00,\n\t11384: 0x00004EF7,\n\t11385: 0x00004F08,\n\t11386: 0x00004F1D,\n\t11387: 0x00004F02,\n\t11388: 0x00004F05,\n\t11389: 0x00004F22,\n\t11390: 0x00004F13,\n\t11391: 0x00004F04,\n\t11392: 0x00004EF4,\n\t11393: 0x00004F12,\n\t11394: 0x000051B1,\n\t11395: 0x00005213,\n\t11396: 0x00005209,\n\t11397: 0x00005210,\n\t11398: 0x000052A6,\n\t11399: 0x00005322,\n\t11400: 0x0000531F,\n\t11401: 0x0000534D,\n\t11402: 0x0000538A,\n\t11403: 0x00005407,\n\t11404: 0x000056E1,\n\t11405: 0x000056DF,\n\t11406: 0x0000572E,\n\t11407: 0x0000572A,\n\t11408: 0x00005734,\n\t11409: 0x0000593C,\n\t11410: 0x00005980,\n\t11411: 0x0000597C,\n\t11412: 0x00005985,\n\t11413: 0x0000597B,\n\t11414: 0x0000597E,\n\t11415: 0x00005977,\n\t11416: 0x0000597F,\n\t11417: 0x00005B56,\n\t11418: 0x00005C15,\n\t11419: 0x00005C25,\n\t11420: 0x00005C7C,\n\t11421: 0x00005C7A,\n\t11422: 0x00005C7B,\n\t11423: 0x00005C7E,\n\t11424: 0x00005DDF,\n\t11425: 0x00005E75,\n\t11426: 0x00005E84,\n\t11427: 0x00005F02,\n\t11428: 0x00005F1A,\n\t11429: 0x00005F74,\n\t11430: 0x00005FD5,\n\t11431: 0x00005FD4,\n\t11432: 0x00005FCF,\n\t11433: 0x0000625C,\n\t11434: 0x0000625E,\n\t11435: 0x00006264,\n\t11436: 0x00006261,\n\t11437: 0x00006266,\n\t11438: 0x00006262,\n\t11439: 0x00006259,\n\t11440: 0x00006260,\n\t11441: 0x0000625A,\n\t11442: 0x00006265,\n\t11443: 0x000065EF,\n\t11444: 0x000065EE,\n\t11445: 0x0000673E,\n\t11446: 0x00006739,\n\t11447: 0x00006738,\n\t11448: 0x0000673B,\n\t11449: 0x0000673A,\n\t11450: 0x0000673F,\n\t11451: 0x0000673C,\n\t11452: 0x00006733,\n\t11453: 0x00006C18,\n\t11454: 0x00006C46,\n\t11455: 0x00006C52,\n\t11456: 0x00006C5C,\n\t11457: 0x00006C4F,\n\t11458: 0x00006C4A,\n\t11459: 0x00006C54,\n\t11460: 0x00006C4B,\n\t11461: 0x00006C4C,\n\t11462: 0x00007071,\n\t11463: 0x0000725E,\n\t11464: 0x000072B4,\n\t11465: 0x000072B5,\n\t11466: 0x0000738E,\n\t11467: 0x0000752A,\n\t11468: 0x0000767F,\n\t11469: 0x00007A75,\n\t11470: 0x00007F51,\n\t11471: 0x00008278,\n\t11472: 0x0000827C,\n\t11473: 0x00008280,\n\t11474: 0x0000827D,\n\t11475: 0x0000827F,\n\t11476: 0x0000864D,\n\t11477: 0x0000897E,\n\t11478: 0x00009099,\n\t11479: 0x00009097,\n\t11480: 0x00009098,\n\t11481: 0x0000909B,\n\t11482: 0x00009094,\n\t11483: 0x00009622,\n\t11484: 0x00009624,\n\t11485: 0x00009620,\n\t11486: 0x00009623,\n\t11487: 0x00004F56,\n\t11488: 0x00004F3B,\n\t11489: 0x00004F62,\n\t11490: 0x00004F49,\n\t11491: 0x00004F53,\n\t11492: 0x00004F64,\n\t11493: 0x00004F3E,\n\t11494: 0x00004F67,\n\t11495: 0x00004F52,\n\t11496: 0x00004F5F,\n\t11497: 0x00004F41,\n\t11498: 0x00004F58,\n\t11499: 0x00004F2D,\n\t11500: 0x00004F33,\n\t11501: 0x00004F3F,\n\t11502: 0x00004F61,\n\t11503: 0x0000518F,\n\t11504: 0x000051B9,\n\t11505: 0x0000521C,\n\t11506: 0x0000521E,\n\t11507: 0x00005221,\n\t11508: 0x000052AD,\n\t11509: 0x000052AE,\n\t11510: 0x00005309,\n\t11511: 0x00005363,\n\t11512: 0x00005372,\n\t11513: 0x0000538E,\n\t11514: 0x0000538F,\n\t11515: 0x00005430,\n\t11516: 0x00005437,\n\t11517: 0x0000542A,\n\t11518: 0x00005454,\n\t11519: 0x00005445,\n\t11520: 0x00005419,\n\t11521: 0x0000541C,\n\t11522: 0x00005425,\n\t11523: 0x00005418,\n\t11524: 0x0000543D,\n\t11525: 0x0000544F,\n\t11526: 0x00005441,\n\t11527: 0x00005428,\n\t11528: 0x00005424,\n\t11529: 0x00005447,\n\t11530: 0x000056EE,\n\t11531: 0x000056E7,\n\t11532: 0x000056E5,\n\t11533: 0x00005741,\n\t11534: 0x00005745,\n\t11535: 0x0000574C,\n\t11536: 0x00005749,\n\t11537: 0x0000574B,\n\t11538: 0x00005752,\n\t11539: 0x00005906,\n\t11540: 0x00005940,\n\t11541: 0x000059A6,\n\t11542: 0x00005998,\n\t11543: 0x000059A0,\n\t11544: 0x00005997,\n\t11545: 0x0000598E,\n\t11546: 0x000059A2,\n\t11547: 0x00005990,\n\t11548: 0x0000598F,\n\t11549: 0x000059A7,\n\t11550: 0x000059A1,\n\t11551: 0x00005B8E,\n\t11552: 0x00005B92,\n\t11553: 0x00005C28,\n\t11554: 0x00005C2A,\n\t11555: 0x00005C8D,\n\t11556: 0x00005C8F,\n\t11557: 0x00005C88,\n\t11558: 0x00005C8B,\n\t11559: 0x00005C89,\n\t11560: 0x00005C92,\n\t11561: 0x00005C8A,\n\t11562: 0x00005C86,\n\t11563: 0x00005C93,\n\t11564: 0x00005C95,\n\t11565: 0x00005DE0,\n\t11566: 0x00005E0A,\n\t11567: 0x00005E0E,\n\t11568: 0x00005E8B,\n\t11569: 0x00005E89,\n\t11570: 0x00005E8C,\n\t11571: 0x00005E88,\n\t11572: 0x00005E8D,\n\t11573: 0x00005F05,\n\t11574: 0x00005F1D,\n\t11575: 0x00005F78,\n\t11576: 0x00005F76,\n\t11577: 0x00005FD2,\n\t11578: 0x00005FD1,\n\t11579: 0x00005FD0,\n\t11580: 0x00005FED,\n\t11581: 0x00005FE8,\n\t11582: 0x00005FEE,\n\t11583: 0x00005FF3,\n\t11584: 0x00005FE1,\n\t11585: 0x00005FE4,\n\t11586: 0x00005FE3,\n\t11587: 0x00005FFA,\n\t11588: 0x00005FEF,\n\t11589: 0x00005FF7,\n\t11590: 0x00005FFB,\n\t11591: 0x00006000,\n\t11592: 0x00005FF4,\n\t11593: 0x0000623A,\n\t11594: 0x00006283,\n\t11595: 0x0000628C,\n\t11596: 0x0000628E,\n\t11597: 0x0000628F,\n\t11598: 0x00006294,\n\t11599: 0x00006287,\n\t11600: 0x00006271,\n\t11601: 0x0000627B,\n\t11602: 0x0000627A,\n\t11603: 0x00006270,\n\t11604: 0x00006281,\n\t11605: 0x00006288,\n\t11606: 0x00006277,\n\t11607: 0x0000627D,\n\t11608: 0x00006272,\n\t11609: 0x00006274,\n\t11610: 0x00006537,\n\t11611: 0x000065F0,\n\t11612: 0x000065F4,\n\t11613: 0x000065F3,\n\t11614: 0x000065F2,\n\t11615: 0x000065F5,\n\t11616: 0x00006745,\n\t11617: 0x00006747,\n\t11618: 0x00006759,\n\t11619: 0x00006755,\n\t11620: 0x0000674C,\n\t11621: 0x00006748,\n\t11622: 0x0000675D,\n\t11623: 0x0000674D,\n\t11624: 0x0000675A,\n\t11625: 0x0000674B,\n\t11626: 0x00006BD0,\n\t11627: 0x00006C19,\n\t11628: 0x00006C1A,\n\t11629: 0x00006C78,\n\t11630: 0x00006C67,\n\t11631: 0x00006C6B,\n\t11632: 0x00006C84,\n\t11633: 0x00006C8B,\n\t11634: 0x00006C8F,\n\t11635: 0x00006C71,\n\t11636: 0x00006C6F,\n\t11637: 0x00006C69,\n\t11638: 0x00006C9A,\n\t11639: 0x00006C6D,\n\t11640: 0x00006C87,\n\t11641: 0x00006C95,\n\t11642: 0x00006C9C,\n\t11643: 0x00006C66,\n\t11644: 0x00006C73,\n\t11645: 0x00006C65,\n\t11646: 0x00006C7B,\n\t11647: 0x00006C8E,\n\t11648: 0x00007074,\n\t11649: 0x0000707A,\n\t11650: 0x00007263,\n\t11651: 0x000072BF,\n\t11652: 0x000072BD,\n\t11653: 0x000072C3,\n\t11654: 0x000072C6,\n\t11655: 0x000072C1,\n\t11656: 0x000072BA,\n\t11657: 0x000072C5,\n\t11658: 0x00007395,\n\t11659: 0x00007397,\n\t11660: 0x00007393,\n\t11661: 0x00007394,\n\t11662: 0x00007392,\n\t11663: 0x0000753A,\n\t11664: 0x00007539,\n\t11665: 0x00007594,\n\t11666: 0x00007595,\n\t11667: 0x00007681,\n\t11668: 0x0000793D,\n\t11669: 0x00008034,\n\t11670: 0x00008095,\n\t11671: 0x00008099,\n\t11672: 0x00008090,\n\t11673: 0x00008092,\n\t11674: 0x0000809C,\n\t11675: 0x00008290,\n\t11676: 0x0000828F,\n\t11677: 0x00008285,\n\t11678: 0x0000828E,\n\t11679: 0x00008291,\n\t11680: 0x00008293,\n\t11681: 0x0000828A,\n\t11682: 0x00008283,\n\t11683: 0x00008284,\n\t11684: 0x00008C78,\n\t11685: 0x00008FC9,\n\t11686: 0x00008FBF,\n\t11687: 0x0000909F,\n\t11688: 0x000090A1,\n\t11689: 0x000090A5,\n\t11690: 0x0000909E,\n\t11691: 0x000090A7,\n\t11692: 0x000090A0,\n\t11693: 0x00009630,\n\t11694: 0x00009628,\n\t11695: 0x0000962F,\n\t11696: 0x0000962D,\n\t11697: 0x00004E33,\n\t11698: 0x00004F98,\n\t11699: 0x00004F7C,\n\t11700: 0x00004F85,\n\t11701: 0x00004F7D,\n\t11702: 0x00004F80,\n\t11703: 0x00004F87,\n\t11704: 0x00004F76,\n\t11705: 0x00004F74,\n\t11706: 0x00004F89,\n\t11707: 0x00004F84,\n\t11708: 0x00004F77,\n\t11709: 0x00004F4C,\n\t11710: 0x00004F97,\n\t11711: 0x00004F6A,\n\t11712: 0x00004F9A,\n\t11713: 0x00004F79,\n\t11714: 0x00004F81,\n\t11715: 0x00004F78,\n\t11716: 0x00004F90,\n\t11717: 0x00004F9C,\n\t11718: 0x00004F94,\n\t11719: 0x00004F9E,\n\t11720: 0x00004F92,\n\t11721: 0x00004F82,\n\t11722: 0x00004F95,\n\t11723: 0x00004F6B,\n\t11724: 0x00004F6E,\n\t11725: 0x0000519E,\n\t11726: 0x000051BC,\n\t11727: 0x000051BE,\n\t11728: 0x00005235,\n\t11729: 0x00005232,\n\t11730: 0x00005233,\n\t11731: 0x00005246,\n\t11732: 0x00005231,\n\t11733: 0x000052BC,\n\t11734: 0x0000530A,\n\t11735: 0x0000530B,\n\t11736: 0x0000533C,\n\t11737: 0x00005392,\n\t11738: 0x00005394,\n\t11739: 0x00005487,\n\t11740: 0x0000547F,\n\t11741: 0x00005481,\n\t11742: 0x00005491,\n\t11743: 0x00005482,\n\t11744: 0x00005488,\n\t11745: 0x0000546B,\n\t11746: 0x0000547A,\n\t11747: 0x0000547E,\n\t11748: 0x00005465,\n\t11749: 0x0000546C,\n\t11750: 0x00005474,\n\t11751: 0x00005466,\n\t11752: 0x0000548D,\n\t11753: 0x0000546F,\n\t11754: 0x00005461,\n\t11755: 0x00005460,\n\t11756: 0x00005498,\n\t11757: 0x00005463,\n\t11758: 0x00005467,\n\t11759: 0x00005464,\n\t11760: 0x000056F7,\n\t11761: 0x000056F9,\n\t11762: 0x0000576F,\n\t11763: 0x00005772,\n\t11764: 0x0000576D,\n\t11765: 0x0000576B,\n\t11766: 0x00005771,\n\t11767: 0x00005770,\n\t11768: 0x00005776,\n\t11769: 0x00005780,\n\t11770: 0x00005775,\n\t11771: 0x0000577B,\n\t11772: 0x00005773,\n\t11773: 0x00005774,\n\t11774: 0x00005762,\n\t11775: 0x00005768,\n\t11776: 0x0000577D,\n\t11777: 0x0000590C,\n\t11778: 0x00005945,\n\t11779: 0x000059B5,\n\t11780: 0x000059BA,\n\t11781: 0x000059CF,\n\t11782: 0x000059CE,\n\t11783: 0x000059B2,\n\t11784: 0x000059CC,\n\t11785: 0x000059C1,\n\t11786: 0x000059B6,\n\t11787: 0x000059BC,\n\t11788: 0x000059C3,\n\t11789: 0x000059D6,\n\t11790: 0x000059B1,\n\t11791: 0x000059BD,\n\t11792: 0x000059C0,\n\t11793: 0x000059C8,\n\t11794: 0x000059B4,\n\t11795: 0x000059C7,\n\t11796: 0x00005B62,\n\t11797: 0x00005B65,\n\t11798: 0x00005B93,\n\t11799: 0x00005B95,\n\t11800: 0x00005C44,\n\t11801: 0x00005C47,\n\t11802: 0x00005CAE,\n\t11803: 0x00005CA4,\n\t11804: 0x00005CA0,\n\t11805: 0x00005CB5,\n\t11806: 0x00005CAF,\n\t11807: 0x00005CA8,\n\t11808: 0x00005CAC,\n\t11809: 0x00005C9F,\n\t11810: 0x00005CA3,\n\t11811: 0x00005CAD,\n\t11812: 0x00005CA2,\n\t11813: 0x00005CAA,\n\t11814: 0x00005CA7,\n\t11815: 0x00005C9D,\n\t11816: 0x00005CA5,\n\t11817: 0x00005CB6,\n\t11818: 0x00005CB0,\n\t11819: 0x00005CA6,\n\t11820: 0x00005E17,\n\t11821: 0x00005E14,\n\t11822: 0x00005E19,\n\t11823: 0x00005F28,\n\t11824: 0x00005F22,\n\t11825: 0x00005F23,\n\t11826: 0x00005F24,\n\t11827: 0x00005F54,\n\t11828: 0x00005F82,\n\t11829: 0x00005F7E,\n\t11830: 0x00005F7D,\n\t11831: 0x00005FDE,\n\t11832: 0x00005FE5,\n\t11833: 0x0000602D,\n\t11834: 0x00006026,\n\t11835: 0x00006019,\n\t11836: 0x00006032,\n\t11837: 0x0000600B,\n\t11838: 0x00006034,\n\t11839: 0x0000600A,\n\t11840: 0x00006017,\n\t11841: 0x00006033,\n\t11842: 0x0000601A,\n\t11843: 0x0000601E,\n\t11844: 0x0000602C,\n\t11845: 0x00006022,\n\t11846: 0x0000600D,\n\t11847: 0x00006010,\n\t11848: 0x0000602E,\n\t11849: 0x00006013,\n\t11850: 0x00006011,\n\t11851: 0x0000600C,\n\t11852: 0x00006009,\n\t11853: 0x0000601C,\n\t11854: 0x00006214,\n\t11855: 0x0000623D,\n\t11856: 0x000062AD,\n\t11857: 0x000062B4,\n\t11858: 0x000062D1,\n\t11859: 0x000062BE,\n\t11860: 0x000062AA,\n\t11861: 0x000062B6,\n\t11862: 0x000062CA,\n\t11863: 0x000062AE,\n\t11864: 0x000062B3,\n\t11865: 0x000062AF,\n\t11866: 0x000062BB,\n\t11867: 0x000062A9,\n\t11868: 0x000062B0,\n\t11869: 0x000062B8,\n\t11870: 0x0000653D,\n\t11871: 0x000065A8,\n\t11872: 0x000065BB,\n\t11873: 0x00006609,\n\t11874: 0x000065FC,\n\t11875: 0x00006604,\n\t11876: 0x00006612,\n\t11877: 0x00006608,\n\t11878: 0x000065FB,\n\t11879: 0x00006603,\n\t11880: 0x0000660B,\n\t11881: 0x0000660D,\n\t11882: 0x00006605,\n\t11883: 0x000065FD,\n\t11884: 0x00006611,\n\t11885: 0x00006610,\n\t11886: 0x000066F6,\n\t11887: 0x0000670A,\n\t11888: 0x00006785,\n\t11889: 0x0000676C,\n\t11890: 0x0000678E,\n\t11891: 0x00006792,\n\t11892: 0x00006776,\n\t11893: 0x0000677B,\n\t11894: 0x00006798,\n\t11895: 0x00006786,\n\t11896: 0x00006784,\n\t11897: 0x00006774,\n\t11898: 0x0000678D,\n\t11899: 0x0000678C,\n\t11900: 0x0000677A,\n\t11901: 0x0000679F,\n\t11902: 0x00006791,\n\t11903: 0x00006799,\n\t11904: 0x00006783,\n\t11905: 0x0000677D,\n\t11906: 0x00006781,\n\t11907: 0x00006778,\n\t11908: 0x00006779,\n\t11909: 0x00006794,\n\t11910: 0x00006B25,\n\t11911: 0x00006B80,\n\t11912: 0x00006B7E,\n\t11913: 0x00006BDE,\n\t11914: 0x00006C1D,\n\t11915: 0x00006C93,\n\t11916: 0x00006CEC,\n\t11917: 0x00006CEB,\n\t11918: 0x00006CEE,\n\t11919: 0x00006CD9,\n\t11920: 0x00006CB6,\n\t11921: 0x00006CD4,\n\t11922: 0x00006CAD,\n\t11923: 0x00006CE7,\n\t11924: 0x00006CB7,\n\t11925: 0x00006CD0,\n\t11926: 0x00006CC2,\n\t11927: 0x00006CBA,\n\t11928: 0x00006CC3,\n\t11929: 0x00006CC6,\n\t11930: 0x00006CED,\n\t11931: 0x00006CF2,\n\t11932: 0x00006CD2,\n\t11933: 0x00006CDD,\n\t11934: 0x00006CB4,\n\t11935: 0x00006C8A,\n\t11936: 0x00006C9D,\n\t11937: 0x00006C80,\n\t11938: 0x00006CDE,\n\t11939: 0x00006CC0,\n\t11940: 0x00006D30,\n\t11941: 0x00006CCD,\n\t11942: 0x00006CC7,\n\t11943: 0x00006CB0,\n\t11944: 0x00006CF9,\n\t11945: 0x00006CCF,\n\t11946: 0x00006CE9,\n\t11947: 0x00006CD1,\n\t11948: 0x00007094,\n\t11949: 0x00007098,\n\t11950: 0x00007085,\n\t11951: 0x00007093,\n\t11952: 0x00007086,\n\t11953: 0x00007084,\n\t11954: 0x00007091,\n\t11955: 0x00007096,\n\t11956: 0x00007082,\n\t11957: 0x0000709A,\n\t11958: 0x00007083,\n\t11959: 0x0000726A,\n\t11960: 0x000072D6,\n\t11961: 0x000072CB,\n\t11962: 0x000072D8,\n\t11963: 0x000072C9,\n\t11964: 0x000072DC,\n\t11965: 0x000072D2,\n\t11966: 0x000072D4,\n\t11967: 0x000072DA,\n\t11968: 0x000072CC,\n\t11969: 0x000072D1,\n\t11970: 0x000073A4,\n\t11971: 0x000073A1,\n\t11972: 0x000073AD,\n\t11973: 0x000073A6,\n\t11974: 0x000073A2,\n\t11975: 0x000073A0,\n\t11976: 0x000073AC,\n\t11977: 0x0000739D,\n\t11978: 0x000074DD,\n\t11979: 0x000074E8,\n\t11980: 0x0000753F,\n\t11981: 0x00007540,\n\t11982: 0x0000753E,\n\t11983: 0x0000758C,\n\t11984: 0x00007598,\n\t11985: 0x000076AF,\n\t11986: 0x000076F3,\n\t11987: 0x000076F1,\n\t11988: 0x000076F0,\n\t11989: 0x000076F5,\n\t11990: 0x000077F8,\n\t11991: 0x000077FC,\n\t11992: 0x000077F9,\n\t11993: 0x000077FB,\n\t11994: 0x000077FA,\n\t11995: 0x000077F7,\n\t11996: 0x00007942,\n\t11997: 0x0000793F,\n\t11998: 0x000079C5,\n\t11999: 0x00007A78,\n\t12000: 0x00007A7B,\n\t12001: 0x00007AFB,\n\t12002: 0x00007C75,\n\t12003: 0x00007CFD,\n\t12004: 0x00008035,\n\t12005: 0x0000808F,\n\t12006: 0x000080AE,\n\t12007: 0x000080A3,\n\t12008: 0x000080B8,\n\t12009: 0x000080B5,\n\t12010: 0x000080AD,\n\t12011: 0x00008220,\n\t12012: 0x000082A0,\n\t12013: 0x000082C0,\n\t12014: 0x000082AB,\n\t12015: 0x0000829A,\n\t12016: 0x00008298,\n\t12017: 0x0000829B,\n\t12018: 0x000082B5,\n\t12019: 0x000082A7,\n\t12020: 0x000082AE,\n\t12021: 0x000082BC,\n\t12022: 0x0000829E,\n\t12023: 0x000082BA,\n\t12024: 0x000082B4,\n\t12025: 0x000082A8,\n\t12026: 0x000082A1,\n\t12027: 0x000082A9,\n\t12028: 0x000082C2,\n\t12029: 0x000082A4,\n\t12030: 0x000082C3,\n\t12031: 0x000082B6,\n\t12032: 0x000082A2,\n\t12033: 0x00008670,\n\t12034: 0x0000866F,\n\t12035: 0x0000866D,\n\t12036: 0x0000866E,\n\t12037: 0x00008C56,\n\t12038: 0x00008FD2,\n\t12039: 0x00008FCB,\n\t12040: 0x00008FD3,\n\t12041: 0x00008FCD,\n\t12042: 0x00008FD6,\n\t12043: 0x00008FD5,\n\t12044: 0x00008FD7,\n\t12045: 0x000090B2,\n\t12046: 0x000090B4,\n\t12047: 0x000090AF,\n\t12048: 0x000090B3,\n\t12049: 0x000090B0,\n\t12050: 0x00009639,\n\t12051: 0x0000963D,\n\t12052: 0x0000963C,\n\t12053: 0x0000963A,\n\t12054: 0x00009643,\n\t12055: 0x00004FCD,\n\t12056: 0x00004FC5,\n\t12057: 0x00004FD3,\n\t12058: 0x00004FB2,\n\t12059: 0x00004FC9,\n\t12060: 0x00004FCB,\n\t12061: 0x00004FC1,\n\t12062: 0x00004FD4,\n\t12063: 0x00004FDC,\n\t12064: 0x00004FD9,\n\t12065: 0x00004FBB,\n\t12066: 0x00004FB3,\n\t12067: 0x00004FDB,\n\t12068: 0x00004FC7,\n\t12069: 0x00004FD6,\n\t12070: 0x00004FBA,\n\t12071: 0x00004FC0,\n\t12072: 0x00004FB9,\n\t12073: 0x00004FEC,\n\t12074: 0x00005244,\n\t12075: 0x00005249,\n\t12076: 0x000052C0,\n\t12077: 0x000052C2,\n\t12078: 0x0000533D,\n\t12079: 0x0000537C,\n\t12080: 0x00005397,\n\t12081: 0x00005396,\n\t12082: 0x00005399,\n\t12083: 0x00005398,\n\t12084: 0x000054BA,\n\t12085: 0x000054A1,\n\t12086: 0x000054AD,\n\t12087: 0x000054A5,\n\t12088: 0x000054CF,\n\t12089: 0x000054C3,\n\t12090: 0x0000830D,\n\t12091: 0x000054B7,\n\t12092: 0x000054AE,\n\t12093: 0x000054D6,\n\t12094: 0x000054B6,\n\t12095: 0x000054C5,\n\t12096: 0x000054C6,\n\t12097: 0x000054A0,\n\t12098: 0x00005470,\n\t12099: 0x000054BC,\n\t12100: 0x000054A2,\n\t12101: 0x000054BE,\n\t12102: 0x00005472,\n\t12103: 0x000054DE,\n\t12104: 0x000054B0,\n\t12105: 0x000057B5,\n\t12106: 0x0000579E,\n\t12107: 0x0000579F,\n\t12108: 0x000057A4,\n\t12109: 0x0000578C,\n\t12110: 0x00005797,\n\t12111: 0x0000579D,\n\t12112: 0x0000579B,\n\t12113: 0x00005794,\n\t12114: 0x00005798,\n\t12115: 0x0000578F,\n\t12116: 0x00005799,\n\t12117: 0x000057A5,\n\t12118: 0x0000579A,\n\t12119: 0x00005795,\n\t12120: 0x000058F4,\n\t12121: 0x0000590D,\n\t12122: 0x00005953,\n\t12123: 0x000059E1,\n\t12124: 0x000059DE,\n\t12125: 0x000059EE,\n\t12126: 0x00005A00,\n\t12127: 0x000059F1,\n\t12128: 0x000059DD,\n\t12129: 0x000059FA,\n\t12130: 0x000059FD,\n\t12131: 0x000059FC,\n\t12132: 0x000059F6,\n\t12133: 0x000059E4,\n\t12134: 0x000059F2,\n\t12135: 0x000059F7,\n\t12136: 0x000059DB,\n\t12137: 0x000059E9,\n\t12138: 0x000059F3,\n\t12139: 0x000059F5,\n\t12140: 0x000059E0,\n\t12141: 0x000059FE,\n\t12142: 0x000059F4,\n\t12143: 0x000059ED,\n\t12144: 0x00005BA8,\n\t12145: 0x00005C4C,\n\t12146: 0x00005CD0,\n\t12147: 0x00005CD8,\n\t12148: 0x00005CCC,\n\t12149: 0x00005CD7,\n\t12150: 0x00005CCB,\n\t12151: 0x00005CDB,\n\t12152: 0x00005CDE,\n\t12153: 0x00005CDA,\n\t12154: 0x00005CC9,\n\t12155: 0x00005CC7,\n\t12156: 0x00005CCA,\n\t12157: 0x00005CD6,\n\t12158: 0x00005CD3,\n\t12159: 0x00005CD4,\n\t12160: 0x00005CCF,\n\t12161: 0x00005CC8,\n\t12162: 0x00005CC6,\n\t12163: 0x00005CCE,\n\t12164: 0x00005CDF,\n\t12165: 0x00005CF8,\n\t12166: 0x00005DF9,\n\t12167: 0x00005E21,\n\t12168: 0x00005E22,\n\t12169: 0x00005E23,\n\t12170: 0x00005E20,\n\t12171: 0x00005E24,\n\t12172: 0x00005EB0,\n\t12173: 0x00005EA4,\n\t12174: 0x00005EA2,\n\t12175: 0x00005E9B,\n\t12176: 0x00005EA3,\n\t12177: 0x00005EA5,\n\t12178: 0x00005F07,\n\t12179: 0x00005F2E,\n\t12180: 0x00005F56,\n\t12181: 0x00005F86,\n\t12182: 0x00006037,\n\t12183: 0x00006039,\n\t12184: 0x00006054,\n\t12185: 0x00006072,\n\t12186: 0x0000605E,\n\t12187: 0x00006045,\n\t12188: 0x00006053,\n\t12189: 0x00006047,\n\t12190: 0x00006049,\n\t12191: 0x0000605B,\n\t12192: 0x0000604C,\n\t12193: 0x00006040,\n\t12194: 0x00006042,\n\t12195: 0x0000605F,\n\t12196: 0x00006024,\n\t12197: 0x00006044,\n\t12198: 0x00006058,\n\t12199: 0x00006066,\n\t12200: 0x0000606E,\n\t12201: 0x00006242,\n\t12202: 0x00006243,\n\t12203: 0x000062CF,\n\t12204: 0x0000630D,\n\t12205: 0x0000630B,\n\t12206: 0x000062F5,\n\t12207: 0x0000630E,\n\t12208: 0x00006303,\n\t12209: 0x000062EB,\n\t12210: 0x000062F9,\n\t12211: 0x0000630F,\n\t12212: 0x0000630C,\n\t12213: 0x000062F8,\n\t12214: 0x000062F6,\n\t12215: 0x00006300,\n\t12216: 0x00006313,\n\t12217: 0x00006314,\n\t12218: 0x000062FA,\n\t12219: 0x00006315,\n\t12220: 0x000062FB,\n\t12221: 0x000062F0,\n\t12222: 0x00006541,\n\t12223: 0x00006543,\n\t12224: 0x000065AA,\n\t12225: 0x000065BF,\n\t12226: 0x00006636,\n\t12227: 0x00006621,\n\t12228: 0x00006632,\n\t12229: 0x00006635,\n\t12230: 0x0000661C,\n\t12231: 0x00006626,\n\t12232: 0x00006622,\n\t12233: 0x00006633,\n\t12234: 0x0000662B,\n\t12235: 0x0000663A,\n\t12236: 0x0000661D,\n\t12237: 0x00006634,\n\t12238: 0x00006639,\n\t12239: 0x0000662E,\n\t12240: 0x0000670F,\n\t12241: 0x00006710,\n\t12242: 0x000067C1,\n\t12243: 0x000067F2,\n\t12244: 0x000067C8,\n\t12245: 0x000067BA,\n\t12246: 0x000067DC,\n\t12247: 0x000067BB,\n\t12248: 0x000067F8,\n\t12249: 0x000067D8,\n\t12250: 0x000067C0,\n\t12251: 0x000067B7,\n\t12252: 0x000067C5,\n\t12253: 0x000067EB,\n\t12254: 0x000067E4,\n\t12255: 0x000067DF,\n\t12256: 0x000067B5,\n\t12257: 0x000067CD,\n\t12258: 0x000067B3,\n\t12259: 0x000067F7,\n\t12260: 0x000067F6,\n\t12261: 0x000067EE,\n\t12262: 0x000067E3,\n\t12263: 0x000067C2,\n\t12264: 0x000067B9,\n\t12265: 0x000067CE,\n\t12266: 0x000067E7,\n\t12267: 0x000067F0,\n\t12268: 0x000067B2,\n\t12269: 0x000067FC,\n\t12270: 0x000067C6,\n\t12271: 0x000067ED,\n\t12272: 0x000067CC,\n\t12273: 0x000067AE,\n\t12274: 0x000067E6,\n\t12275: 0x000067DB,\n\t12276: 0x000067FA,\n\t12277: 0x000067C9,\n\t12278: 0x000067CA,\n\t12279: 0x000067C3,\n\t12280: 0x000067EA,\n\t12281: 0x000067CB,\n\t12282: 0x00006B28,\n\t12283: 0x00006B82,\n\t12284: 0x00006B84,\n\t12285: 0x00006BB6,\n\t12286: 0x00006BD6,\n\t12287: 0x00006BD8,\n\t12288: 0x00006BE0,\n\t12289: 0x00006C20,\n\t12290: 0x00006C21,\n\t12291: 0x00006D28,\n\t12292: 0x00006D34,\n\t12293: 0x00006D2D,\n\t12294: 0x00006D1F,\n\t12295: 0x00006D3C,\n\t12296: 0x00006D3F,\n\t12297: 0x00006D12,\n\t12298: 0x00006D0A,\n\t12299: 0x00006CDA,\n\t12300: 0x00006D33,\n\t12301: 0x00006D04,\n\t12302: 0x00006D19,\n\t12303: 0x00006D3A,\n\t12304: 0x00006D1A,\n\t12305: 0x00006D11,\n\t12306: 0x00006D00,\n\t12307: 0x00006D1D,\n\t12308: 0x00006D42,\n\t12309: 0x00006D01,\n\t12310: 0x00006D18,\n\t12311: 0x00006D37,\n\t12312: 0x00006D03,\n\t12313: 0x00006D0F,\n\t12314: 0x00006D40,\n\t12315: 0x00006D07,\n\t12316: 0x00006D20,\n\t12317: 0x00006D2C,\n\t12318: 0x00006D08,\n\t12319: 0x00006D22,\n\t12320: 0x00006D09,\n\t12321: 0x00006D10,\n\t12322: 0x000070B7,\n\t12323: 0x0000709F,\n\t12324: 0x000070BE,\n\t12325: 0x000070B1,\n\t12326: 0x000070B0,\n\t12327: 0x000070A1,\n\t12328: 0x000070B4,\n\t12329: 0x000070B5,\n\t12330: 0x000070A9,\n\t12331: 0x00007241,\n\t12332: 0x00007249,\n\t12333: 0x0000724A,\n\t12334: 0x0000726C,\n\t12335: 0x00007270,\n\t12336: 0x00007273,\n\t12337: 0x0000726E,\n\t12338: 0x000072CA,\n\t12339: 0x000072E4,\n\t12340: 0x000072E8,\n\t12341: 0x000072EB,\n\t12342: 0x000072DF,\n\t12343: 0x000072EA,\n\t12344: 0x000072E6,\n\t12345: 0x000072E3,\n\t12346: 0x00007385,\n\t12347: 0x000073CC,\n\t12348: 0x000073C2,\n\t12349: 0x000073C8,\n\t12350: 0x000073C5,\n\t12351: 0x000073B9,\n\t12352: 0x000073B6,\n\t12353: 0x000073B5,\n\t12354: 0x000073B4,\n\t12355: 0x000073EB,\n\t12356: 0x000073BF,\n\t12357: 0x000073C7,\n\t12358: 0x000073BE,\n\t12359: 0x000073C3,\n\t12360: 0x000073C6,\n\t12361: 0x000073B8,\n\t12362: 0x000073CB,\n\t12363: 0x000074EC,\n\t12364: 0x000074EE,\n\t12365: 0x0000752E,\n\t12366: 0x00007547,\n\t12367: 0x00007548,\n\t12368: 0x000075A7,\n\t12369: 0x000075AA,\n\t12370: 0x00007679,\n\t12371: 0x000076C4,\n\t12372: 0x00007708,\n\t12373: 0x00007703,\n\t12374: 0x00007704,\n\t12375: 0x00007705,\n\t12376: 0x0000770A,\n\t12377: 0x000076F7,\n\t12378: 0x000076FB,\n\t12379: 0x000076FA,\n\t12380: 0x000077E7,\n\t12381: 0x000077E8,\n\t12382: 0x00007806,\n\t12383: 0x00007811,\n\t12384: 0x00007812,\n\t12385: 0x00007805,\n\t12386: 0x00007810,\n\t12387: 0x0000780F,\n\t12388: 0x0000780E,\n\t12389: 0x00007809,\n\t12390: 0x00007803,\n\t12391: 0x00007813,\n\t12392: 0x0000794A,\n\t12393: 0x0000794C,\n\t12394: 0x0000794B,\n\t12395: 0x00007945,\n\t12396: 0x00007944,\n\t12397: 0x000079D5,\n\t12398: 0x000079CD,\n\t12399: 0x000079CF,\n\t12400: 0x000079D6,\n\t12401: 0x000079CE,\n\t12402: 0x00007A80,\n\t12403: 0x00007A7E,\n\t12404: 0x00007AD1,\n\t12405: 0x00007B00,\n\t12406: 0x00007B01,\n\t12407: 0x00007C7A,\n\t12408: 0x00007C78,\n\t12409: 0x00007C79,\n\t12410: 0x00007C7F,\n\t12411: 0x00007C80,\n\t12412: 0x00007C81,\n\t12413: 0x00007D03,\n\t12414: 0x00007D08,\n\t12415: 0x00007D01,\n\t12416: 0x00007F58,\n\t12417: 0x00007F91,\n\t12418: 0x00007F8D,\n\t12419: 0x00007FBE,\n\t12420: 0x00008007,\n\t12421: 0x0000800E,\n\t12422: 0x0000800F,\n\t12423: 0x00008014,\n\t12424: 0x00008037,\n\t12425: 0x000080D8,\n\t12426: 0x000080C7,\n\t12427: 0x000080E0,\n\t12428: 0x000080D1,\n\t12429: 0x000080C8,\n\t12430: 0x000080C2,\n\t12431: 0x000080D0,\n\t12432: 0x000080C5,\n\t12433: 0x000080E3,\n\t12434: 0x000080D9,\n\t12435: 0x000080DC,\n\t12436: 0x000080CA,\n\t12437: 0x000080D5,\n\t12438: 0x000080C9,\n\t12439: 0x000080CF,\n\t12440: 0x000080D7,\n\t12441: 0x000080E6,\n\t12442: 0x000080CD,\n\t12443: 0x000081FF,\n\t12444: 0x00008221,\n\t12445: 0x00008294,\n\t12446: 0x000082D9,\n\t12447: 0x000082FE,\n\t12448: 0x000082F9,\n\t12449: 0x00008307,\n\t12450: 0x000082E8,\n\t12451: 0x00008300,\n\t12452: 0x000082D5,\n\t12453: 0x0000833A,\n\t12454: 0x000082EB,\n\t12455: 0x000082D6,\n\t12456: 0x000082F4,\n\t12457: 0x000082EC,\n\t12458: 0x000082E1,\n\t12459: 0x000082F2,\n\t12460: 0x000082F5,\n\t12461: 0x0000830C,\n\t12462: 0x000082FB,\n\t12463: 0x000082F6,\n\t12464: 0x000082F0,\n\t12465: 0x000082EA,\n\t12466: 0x000082E4,\n\t12467: 0x000082E0,\n\t12468: 0x000082FA,\n\t12469: 0x000082F3,\n\t12470: 0x000082ED,\n\t12471: 0x00008677,\n\t12472: 0x00008674,\n\t12473: 0x0000867C,\n\t12474: 0x00008673,\n\t12475: 0x00008841,\n\t12476: 0x0000884E,\n\t12477: 0x00008867,\n\t12478: 0x0000886A,\n\t12479: 0x00008869,\n\t12480: 0x000089D3,\n\t12481: 0x00008A04,\n\t12482: 0x00008A07,\n\t12483: 0x00008D72,\n\t12484: 0x00008FE3,\n\t12485: 0x00008FE1,\n\t12486: 0x00008FEE,\n\t12487: 0x00008FE0,\n\t12488: 0x000090F1,\n\t12489: 0x000090BD,\n\t12490: 0x000090BF,\n\t12491: 0x000090D5,\n\t12492: 0x000090C5,\n\t12493: 0x000090BE,\n\t12494: 0x000090C7,\n\t12495: 0x000090CB,\n\t12496: 0x000090C8,\n\t12497: 0x000091D4,\n\t12498: 0x000091D3,\n\t12499: 0x00009654,\n\t12500: 0x0000964F,\n\t12501: 0x00009651,\n\t12502: 0x00009653,\n\t12503: 0x0000964A,\n\t12504: 0x0000964E,\n\t12505: 0x0000501E,\n\t12506: 0x00005005,\n\t12507: 0x00005007,\n\t12508: 0x00005013,\n\t12509: 0x00005022,\n\t12510: 0x00005030,\n\t12511: 0x0000501B,\n\t12512: 0x00004FF5,\n\t12513: 0x00004FF4,\n\t12514: 0x00005033,\n\t12515: 0x00005037,\n\t12516: 0x0000502C,\n\t12517: 0x00004FF6,\n\t12518: 0x00004FF7,\n\t12519: 0x00005017,\n\t12520: 0x0000501C,\n\t12521: 0x00005020,\n\t12522: 0x00005027,\n\t12523: 0x00005035,\n\t12524: 0x0000502F,\n\t12525: 0x00005031,\n\t12526: 0x0000500E,\n\t12527: 0x0000515A,\n\t12528: 0x00005194,\n\t12529: 0x00005193,\n\t12530: 0x000051CA,\n\t12531: 0x000051C4,\n\t12532: 0x000051C5,\n\t12533: 0x000051C8,\n\t12534: 0x000051CE,\n\t12535: 0x00005261,\n\t12536: 0x0000525A,\n\t12537: 0x00005252,\n\t12538: 0x0000525E,\n\t12539: 0x0000525F,\n\t12540: 0x00005255,\n\t12541: 0x00005262,\n\t12542: 0x000052CD,\n\t12543: 0x0000530E,\n\t12544: 0x0000539E,\n\t12545: 0x00005526,\n\t12546: 0x000054E2,\n\t12547: 0x00005517,\n\t12548: 0x00005512,\n\t12549: 0x000054E7,\n\t12550: 0x000054F3,\n\t12551: 0x000054E4,\n\t12552: 0x0000551A,\n\t12553: 0x000054FF,\n\t12554: 0x00005504,\n\t12555: 0x00005508,\n\t12556: 0x000054EB,\n\t12557: 0x00005511,\n\t12558: 0x00005505,\n\t12559: 0x000054F1,\n\t12560: 0x0000550A,\n\t12561: 0x000054FB,\n\t12562: 0x000054F7,\n\t12563: 0x000054F8,\n\t12564: 0x000054E0,\n\t12565: 0x0000550E,\n\t12566: 0x00005503,\n\t12567: 0x0000550B,\n\t12568: 0x00005701,\n\t12569: 0x00005702,\n\t12570: 0x000057CC,\n\t12571: 0x00005832,\n\t12572: 0x000057D5,\n\t12573: 0x000057D2,\n\t12574: 0x000057BA,\n\t12575: 0x000057C6,\n\t12576: 0x000057BD,\n\t12577: 0x000057BC,\n\t12578: 0x000057B8,\n\t12579: 0x000057B6,\n\t12580: 0x000057BF,\n\t12581: 0x000057C7,\n\t12582: 0x000057D0,\n\t12583: 0x000057B9,\n\t12584: 0x000057C1,\n\t12585: 0x0000590E,\n\t12586: 0x0000594A,\n\t12587: 0x00005A19,\n\t12588: 0x00005A16,\n\t12589: 0x00005A2D,\n\t12590: 0x00005A2E,\n\t12591: 0x00005A15,\n\t12592: 0x00005A0F,\n\t12593: 0x00005A17,\n\t12594: 0x00005A0A,\n\t12595: 0x00005A1E,\n\t12596: 0x00005A33,\n\t12597: 0x00005B6C,\n\t12598: 0x00005BA7,\n\t12599: 0x00005BAD,\n\t12600: 0x00005BAC,\n\t12601: 0x00005C03,\n\t12602: 0x00005C56,\n\t12603: 0x00005C54,\n\t12604: 0x00005CEC,\n\t12605: 0x00005CFF,\n\t12606: 0x00005CEE,\n\t12607: 0x00005CF1,\n\t12608: 0x00005CF7,\n\t12609: 0x00005D00,\n\t12610: 0x00005CF9,\n\t12611: 0x00005E29,\n\t12612: 0x00005E28,\n\t12613: 0x00005EA8,\n\t12614: 0x00005EAE,\n\t12615: 0x00005EAA,\n\t12616: 0x00005EAC,\n\t12617: 0x00005F33,\n\t12618: 0x00005F30,\n\t12619: 0x00005F67,\n\t12620: 0x0000605D,\n\t12621: 0x0000605A,\n\t12622: 0x00006067,\n\t12623: 0x00006041,\n\t12624: 0x000060A2,\n\t12625: 0x00006088,\n\t12626: 0x00006080,\n\t12627: 0x00006092,\n\t12628: 0x00006081,\n\t12629: 0x0000609D,\n\t12630: 0x00006083,\n\t12631: 0x00006095,\n\t12632: 0x0000609B,\n\t12633: 0x00006097,\n\t12634: 0x00006087,\n\t12635: 0x0000609C,\n\t12636: 0x0000608E,\n\t12637: 0x00006219,\n\t12638: 0x00006246,\n\t12639: 0x000062F2,\n\t12640: 0x00006310,\n\t12641: 0x00006356,\n\t12642: 0x0000632C,\n\t12643: 0x00006344,\n\t12644: 0x00006345,\n\t12645: 0x00006336,\n\t12646: 0x00006343,\n\t12647: 0x000063E4,\n\t12648: 0x00006339,\n\t12649: 0x0000634B,\n\t12650: 0x0000634A,\n\t12651: 0x0000633C,\n\t12652: 0x00006329,\n\t12653: 0x00006341,\n\t12654: 0x00006334,\n\t12655: 0x00006358,\n\t12656: 0x00006354,\n\t12657: 0x00006359,\n\t12658: 0x0000632D,\n\t12659: 0x00006347,\n\t12660: 0x00006333,\n\t12661: 0x0000635A,\n\t12662: 0x00006351,\n\t12663: 0x00006338,\n\t12664: 0x00006357,\n\t12665: 0x00006340,\n\t12666: 0x00006348,\n\t12667: 0x0000654A,\n\t12668: 0x00006546,\n\t12669: 0x000065C6,\n\t12670: 0x000065C3,\n\t12671: 0x000065C4,\n\t12672: 0x000065C2,\n\t12673: 0x0000664A,\n\t12674: 0x0000665F,\n\t12675: 0x00006647,\n\t12676: 0x00006651,\n\t12677: 0x00006712,\n\t12678: 0x00006713,\n\t12679: 0x0000681F,\n\t12680: 0x0000681A,\n\t12681: 0x00006849,\n\t12682: 0x00006832,\n\t12683: 0x00006833,\n\t12684: 0x0000683B,\n\t12685: 0x0000684B,\n\t12686: 0x0000684F,\n\t12687: 0x00006816,\n\t12688: 0x00006831,\n\t12689: 0x0000681C,\n\t12690: 0x00006835,\n\t12691: 0x0000682B,\n\t12692: 0x0000682D,\n\t12693: 0x0000682F,\n\t12694: 0x0000684E,\n\t12695: 0x00006844,\n\t12696: 0x00006834,\n\t12697: 0x0000681D,\n\t12698: 0x00006812,\n\t12699: 0x00006814,\n\t12700: 0x00006826,\n\t12701: 0x00006828,\n\t12702: 0x0000682E,\n\t12703: 0x0000684D,\n\t12704: 0x0000683A,\n\t12705: 0x00006825,\n\t12706: 0x00006820,\n\t12707: 0x00006B2C,\n\t12708: 0x00006B2F,\n\t12709: 0x00006B2D,\n\t12710: 0x00006B31,\n\t12711: 0x00006B34,\n\t12712: 0x00006B6D,\n\t12713: 0x00008082,\n\t12714: 0x00006B88,\n\t12715: 0x00006BE6,\n\t12716: 0x00006BE4,\n\t12717: 0x00006BE8,\n\t12718: 0x00006BE3,\n\t12719: 0x00006BE2,\n\t12720: 0x00006BE7,\n\t12721: 0x00006C25,\n\t12722: 0x00006D7A,\n\t12723: 0x00006D63,\n\t12724: 0x00006D64,\n\t12725: 0x00006D76,\n\t12726: 0x00006D0D,\n\t12727: 0x00006D61,\n\t12728: 0x00006D92,\n\t12729: 0x00006D58,\n\t12730: 0x00006D62,\n\t12731: 0x00006D6D,\n\t12732: 0x00006D6F,\n\t12733: 0x00006D91,\n\t12734: 0x00006D8D,\n\t12735: 0x00006DEF,\n\t12736: 0x00006D7F,\n\t12737: 0x00006D86,\n\t12738: 0x00006D5E,\n\t12739: 0x00006D67,\n\t12740: 0x00006D60,\n\t12741: 0x00006D97,\n\t12742: 0x00006D70,\n\t12743: 0x00006D7C,\n\t12744: 0x00006D5F,\n\t12745: 0x00006D82,\n\t12746: 0x00006D98,\n\t12747: 0x00006D2F,\n\t12748: 0x00006D68,\n\t12749: 0x00006D8B,\n\t12750: 0x00006D7E,\n\t12751: 0x00006D80,\n\t12752: 0x00006D84,\n\t12753: 0x00006D16,\n\t12754: 0x00006D83,\n\t12755: 0x00006D7B,\n\t12756: 0x00006D7D,\n\t12757: 0x00006D75,\n\t12758: 0x00006D90,\n\t12759: 0x000070DC,\n\t12760: 0x000070D3,\n\t12761: 0x000070D1,\n\t12762: 0x000070DD,\n\t12763: 0x000070CB,\n\t12764: 0x00007F39,\n\t12765: 0x000070E2,\n\t12766: 0x000070D7,\n\t12767: 0x000070D2,\n\t12768: 0x000070DE,\n\t12769: 0x000070E0,\n\t12770: 0x000070D4,\n\t12771: 0x000070CD,\n\t12772: 0x000070C5,\n\t12773: 0x000070C6,\n\t12774: 0x000070C7,\n\t12775: 0x000070DA,\n\t12776: 0x000070CE,\n\t12777: 0x000070E1,\n\t12778: 0x00007242,\n\t12779: 0x00007278,\n\t12780: 0x00007277,\n\t12781: 0x00007276,\n\t12782: 0x00007300,\n\t12783: 0x000072FA,\n\t12784: 0x000072F4,\n\t12785: 0x000072FE,\n\t12786: 0x000072F6,\n\t12787: 0x000072F3,\n\t12788: 0x000072FB,\n\t12789: 0x00007301,\n\t12790: 0x000073D3,\n\t12791: 0x000073D9,\n\t12792: 0x000073E5,\n\t12793: 0x000073D6,\n\t12794: 0x000073BC,\n\t12795: 0x000073E7,\n\t12796: 0x000073E3,\n\t12797: 0x000073E9,\n\t12798: 0x000073DC,\n\t12799: 0x000073D2,\n\t12800: 0x000073DB,\n\t12801: 0x000073D4,\n\t12802: 0x000073DD,\n\t12803: 0x000073DA,\n\t12804: 0x000073D7,\n\t12805: 0x000073D8,\n\t12806: 0x000073E8,\n\t12807: 0x000074DE,\n\t12808: 0x000074DF,\n\t12809: 0x000074F4,\n\t12810: 0x000074F5,\n\t12811: 0x00007521,\n\t12812: 0x0000755B,\n\t12813: 0x0000755F,\n\t12814: 0x000075B0,\n\t12815: 0x000075C1,\n\t12816: 0x000075BB,\n\t12817: 0x000075C4,\n\t12818: 0x000075C0,\n\t12819: 0x000075BF,\n\t12820: 0x000075B6,\n\t12821: 0x000075BA,\n\t12822: 0x0000768A,\n\t12823: 0x000076C9,\n\t12824: 0x0000771D,\n\t12825: 0x0000771B,\n\t12826: 0x00007710,\n\t12827: 0x00007713,\n\t12828: 0x00007712,\n\t12829: 0x00007723,\n\t12830: 0x00007711,\n\t12831: 0x00007715,\n\t12832: 0x00007719,\n\t12833: 0x0000771A,\n\t12834: 0x00007722,\n\t12835: 0x00007727,\n\t12836: 0x00007823,\n\t12837: 0x0000782C,\n\t12838: 0x00007822,\n\t12839: 0x00007835,\n\t12840: 0x0000782F,\n\t12841: 0x00007828,\n\t12842: 0x0000782E,\n\t12843: 0x0000782B,\n\t12844: 0x00007821,\n\t12845: 0x00007829,\n\t12846: 0x00007833,\n\t12847: 0x0000782A,\n\t12848: 0x00007831,\n\t12849: 0x00007954,\n\t12850: 0x0000795B,\n\t12851: 0x0000794F,\n\t12852: 0x0000795C,\n\t12853: 0x00007953,\n\t12854: 0x00007952,\n\t12855: 0x00007951,\n\t12856: 0x000079EB,\n\t12857: 0x000079EC,\n\t12858: 0x000079E0,\n\t12859: 0x000079EE,\n\t12860: 0x000079ED,\n\t12861: 0x000079EA,\n\t12862: 0x000079DC,\n\t12863: 0x000079DE,\n\t12864: 0x000079DD,\n\t12865: 0x00007A86,\n\t12866: 0x00007A89,\n\t12867: 0x00007A85,\n\t12868: 0x00007A8B,\n\t12869: 0x00007A8C,\n\t12870: 0x00007A8A,\n\t12871: 0x00007A87,\n\t12872: 0x00007AD8,\n\t12873: 0x00007B10,\n\t12874: 0x00007B04,\n\t12875: 0x00007B13,\n\t12876: 0x00007B05,\n\t12877: 0x00007B0F,\n\t12878: 0x00007B08,\n\t12879: 0x00007B0A,\n\t12880: 0x00007B0E,\n\t12881: 0x00007B09,\n\t12882: 0x00007B12,\n\t12883: 0x00007C84,\n\t12884: 0x00007C91,\n\t12885: 0x00007C8A,\n\t12886: 0x00007C8C,\n\t12887: 0x00007C88,\n\t12888: 0x00007C8D,\n\t12889: 0x00007C85,\n\t12890: 0x00007D1E,\n\t12891: 0x00007D1D,\n\t12892: 0x00007D11,\n\t12893: 0x00007D0E,\n\t12894: 0x00007D18,\n\t12895: 0x00007D16,\n\t12896: 0x00007D13,\n\t12897: 0x00007D1F,\n\t12898: 0x00007D12,\n\t12899: 0x00007D0F,\n\t12900: 0x00007D0C,\n\t12901: 0x00007F5C,\n\t12902: 0x00007F61,\n\t12903: 0x00007F5E,\n\t12904: 0x00007F60,\n\t12905: 0x00007F5D,\n\t12906: 0x00007F5B,\n\t12907: 0x00007F96,\n\t12908: 0x00007F92,\n\t12909: 0x00007FC3,\n\t12910: 0x00007FC2,\n\t12911: 0x00007FC0,\n\t12912: 0x00008016,\n\t12913: 0x0000803E,\n\t12914: 0x00008039,\n\t12915: 0x000080FA,\n\t12916: 0x000080F2,\n\t12917: 0x000080F9,\n\t12918: 0x000080F5,\n\t12919: 0x00008101,\n\t12920: 0x000080FB,\n\t12921: 0x00008100,\n\t12922: 0x00008201,\n\t12923: 0x0000822F,\n\t12924: 0x00008225,\n\t12925: 0x00008333,\n\t12926: 0x0000832D,\n\t12927: 0x00008344,\n\t12928: 0x00008319,\n\t12929: 0x00008351,\n\t12930: 0x00008325,\n\t12931: 0x00008356,\n\t12932: 0x0000833F,\n\t12933: 0x00008341,\n\t12934: 0x00008326,\n\t12935: 0x0000831C,\n\t12936: 0x00008322,\n\t12937: 0x00008342,\n\t12938: 0x0000834E,\n\t12939: 0x0000831B,\n\t12940: 0x0000832A,\n\t12941: 0x00008308,\n\t12942: 0x0000833C,\n\t12943: 0x0000834D,\n\t12944: 0x00008316,\n\t12945: 0x00008324,\n\t12946: 0x00008320,\n\t12947: 0x00008337,\n\t12948: 0x0000832F,\n\t12949: 0x00008329,\n\t12950: 0x00008347,\n\t12951: 0x00008345,\n\t12952: 0x0000834C,\n\t12953: 0x00008353,\n\t12954: 0x0000831E,\n\t12955: 0x0000832C,\n\t12956: 0x0000834B,\n\t12957: 0x00008327,\n\t12958: 0x00008348,\n\t12959: 0x00008653,\n\t12960: 0x00008652,\n\t12961: 0x000086A2,\n\t12962: 0x000086A8,\n\t12963: 0x00008696,\n\t12964: 0x0000868D,\n\t12965: 0x00008691,\n\t12966: 0x0000869E,\n\t12967: 0x00008687,\n\t12968: 0x00008697,\n\t12969: 0x00008686,\n\t12970: 0x0000868B,\n\t12971: 0x0000869A,\n\t12972: 0x00008685,\n\t12973: 0x000086A5,\n\t12974: 0x00008699,\n\t12975: 0x000086A1,\n\t12976: 0x000086A7,\n\t12977: 0x00008695,\n\t12978: 0x00008698,\n\t12979: 0x0000868E,\n\t12980: 0x0000869D,\n\t12981: 0x00008690,\n\t12982: 0x00008694,\n\t12983: 0x00008843,\n\t12984: 0x00008844,\n\t12985: 0x0000886D,\n\t12986: 0x00008875,\n\t12987: 0x00008876,\n\t12988: 0x00008872,\n\t12989: 0x00008880,\n\t12990: 0x00008871,\n\t12991: 0x0000887F,\n\t12992: 0x0000886F,\n\t12993: 0x00008883,\n\t12994: 0x0000887E,\n\t12995: 0x00008874,\n\t12996: 0x0000887C,\n\t12997: 0x00008A12,\n\t12998: 0x00008C47,\n\t12999: 0x00008C57,\n\t13000: 0x00008C7B,\n\t13001: 0x00008CA4,\n\t13002: 0x00008CA3,\n\t13003: 0x00008D76,\n\t13004: 0x00008D78,\n\t13005: 0x00008DB5,\n\t13006: 0x00008DB7,\n\t13007: 0x00008DB6,\n\t13008: 0x00008ED1,\n\t13009: 0x00008ED3,\n\t13010: 0x00008FFE,\n\t13011: 0x00008FF5,\n\t13012: 0x00009002,\n\t13013: 0x00008FFF,\n\t13014: 0x00008FFB,\n\t13015: 0x00009004,\n\t13016: 0x00008FFC,\n\t13017: 0x00008FF6,\n\t13018: 0x000090D6,\n\t13019: 0x000090E0,\n\t13020: 0x000090D9,\n\t13021: 0x000090DA,\n\t13022: 0x000090E3,\n\t13023: 0x000090DF,\n\t13024: 0x000090E5,\n\t13025: 0x000090D8,\n\t13026: 0x000090DB,\n\t13027: 0x000090D7,\n\t13028: 0x000090DC,\n\t13029: 0x000090E4,\n\t13030: 0x00009150,\n\t13031: 0x0000914E,\n\t13032: 0x0000914F,\n\t13033: 0x000091D5,\n\t13034: 0x000091E2,\n\t13035: 0x000091DA,\n\t13036: 0x0000965C,\n\t13037: 0x0000965F,\n\t13038: 0x000096BC,\n\t13039: 0x000098E3,\n\t13040: 0x00009ADF,\n\t13041: 0x00009B2F,\n\t13042: 0x00004E7F,\n\t13043: 0x00005070,\n\t13044: 0x0000506A,\n\t13045: 0x00005061,\n\t13046: 0x0000505E,\n\t13047: 0x00005060,\n\t13048: 0x00005053,\n\t13049: 0x0000504B,\n\t13050: 0x0000505D,\n\t13051: 0x00005072,\n\t13052: 0x00005048,\n\t13053: 0x0000504D,\n\t13054: 0x00005041,\n\t13055: 0x0000505B,\n\t13056: 0x0000504A,\n\t13057: 0x00005062,\n\t13058: 0x00005015,\n\t13059: 0x00005045,\n\t13060: 0x0000505F,\n\t13061: 0x00005069,\n\t13062: 0x0000506B,\n\t13063: 0x00005063,\n\t13064: 0x00005064,\n\t13065: 0x00005046,\n\t13066: 0x00005040,\n\t13067: 0x0000506E,\n\t13068: 0x00005073,\n\t13069: 0x00005057,\n\t13070: 0x00005051,\n\t13071: 0x000051D0,\n\t13072: 0x0000526B,\n\t13073: 0x0000526D,\n\t13074: 0x0000526C,\n\t13075: 0x0000526E,\n\t13076: 0x000052D6,\n\t13077: 0x000052D3,\n\t13078: 0x0000532D,\n\t13079: 0x0000539C,\n\t13080: 0x00005575,\n\t13081: 0x00005576,\n\t13082: 0x0000553C,\n\t13083: 0x0000554D,\n\t13084: 0x00005550,\n\t13085: 0x00005534,\n\t13086: 0x0000552A,\n\t13087: 0x00005551,\n\t13088: 0x00005562,\n\t13089: 0x00005536,\n\t13090: 0x00005535,\n\t13091: 0x00005530,\n\t13092: 0x00005552,\n\t13093: 0x00005545,\n\t13094: 0x0000550C,\n\t13095: 0x00005532,\n\t13096: 0x00005565,\n\t13097: 0x0000554E,\n\t13098: 0x00005539,\n\t13099: 0x00005548,\n\t13100: 0x0000552D,\n\t13101: 0x0000553B,\n\t13102: 0x00005540,\n\t13103: 0x0000554B,\n\t13104: 0x0000570A,\n\t13105: 0x00005707,\n\t13106: 0x000057FB,\n\t13107: 0x00005814,\n\t13108: 0x000057E2,\n\t13109: 0x000057F6,\n\t13110: 0x000057DC,\n\t13111: 0x000057F4,\n\t13112: 0x00005800,\n\t13113: 0x000057ED,\n\t13114: 0x000057FD,\n\t13115: 0x00005808,\n\t13116: 0x000057F8,\n\t13117: 0x0000580B,\n\t13118: 0x000057F3,\n\t13119: 0x000057CF,\n\t13120: 0x00005807,\n\t13121: 0x000057EE,\n\t13122: 0x000057E3,\n\t13123: 0x000057F2,\n\t13124: 0x000057E5,\n\t13125: 0x000057EC,\n\t13126: 0x000057E1,\n\t13127: 0x0000580E,\n\t13128: 0x000057FC,\n\t13129: 0x00005810,\n\t13130: 0x000057E7,\n\t13131: 0x00005801,\n\t13132: 0x0000580C,\n\t13133: 0x000057F1,\n\t13134: 0x000057E9,\n\t13135: 0x000057F0,\n\t13136: 0x0000580D,\n\t13137: 0x00005804,\n\t13138: 0x0000595C,\n\t13139: 0x00005A60,\n\t13140: 0x00005A58,\n\t13141: 0x00005A55,\n\t13142: 0x00005A67,\n\t13143: 0x00005A5E,\n\t13144: 0x00005A38,\n\t13145: 0x00005A35,\n\t13146: 0x00005A6D,\n\t13147: 0x00005A50,\n\t13148: 0x00005A5F,\n\t13149: 0x00005A65,\n\t13150: 0x00005A6C,\n\t13151: 0x00005A53,\n\t13152: 0x00005A64,\n\t13153: 0x00005A57,\n\t13154: 0x00005A43,\n\t13155: 0x00005A5D,\n\t13156: 0x00005A52,\n\t13157: 0x00005A44,\n\t13158: 0x00005A5B,\n\t13159: 0x00005A48,\n\t13160: 0x00005A8E,\n\t13161: 0x00005A3E,\n\t13162: 0x00005A4D,\n\t13163: 0x00005A39,\n\t13164: 0x00005A4C,\n\t13165: 0x00005A70,\n\t13166: 0x00005A69,\n\t13167: 0x00005A47,\n\t13168: 0x00005A51,\n\t13169: 0x00005A56,\n\t13170: 0x00005A42,\n\t13171: 0x00005A5C,\n\t13172: 0x00005B72,\n\t13173: 0x00005B6E,\n\t13174: 0x00005BC1,\n\t13175: 0x00005BC0,\n\t13176: 0x00005C59,\n\t13177: 0x00005D1E,\n\t13178: 0x00005D0B,\n\t13179: 0x00005D1D,\n\t13180: 0x00005D1A,\n\t13181: 0x00005D20,\n\t13182: 0x00005D0C,\n\t13183: 0x00005D28,\n\t13184: 0x00005D0D,\n\t13185: 0x00005D26,\n\t13186: 0x00005D25,\n\t13187: 0x00005D0F,\n\t13188: 0x00005D30,\n\t13189: 0x00005D12,\n\t13190: 0x00005D23,\n\t13191: 0x00005D1F,\n\t13192: 0x00005D2E,\n\t13193: 0x00005E3E,\n\t13194: 0x00005E34,\n\t13195: 0x00005EB1,\n\t13196: 0x00005EB4,\n\t13197: 0x00005EB9,\n\t13198: 0x00005EB2,\n\t13199: 0x00005EB3,\n\t13200: 0x00005F36,\n\t13201: 0x00005F38,\n\t13202: 0x00005F9B,\n\t13203: 0x00005F96,\n\t13204: 0x00005F9F,\n\t13205: 0x0000608A,\n\t13206: 0x00006090,\n\t13207: 0x00006086,\n\t13208: 0x000060BE,\n\t13209: 0x000060B0,\n\t13210: 0x000060BA,\n\t13211: 0x000060D3,\n\t13212: 0x000060D4,\n\t13213: 0x000060CF,\n\t13214: 0x000060E4,\n\t13215: 0x000060D9,\n\t13216: 0x000060DD,\n\t13217: 0x000060C8,\n\t13218: 0x000060B1,\n\t13219: 0x000060DB,\n\t13220: 0x000060B7,\n\t13221: 0x000060CA,\n\t13222: 0x000060BF,\n\t13223: 0x000060C3,\n\t13224: 0x000060CD,\n\t13225: 0x000060C0,\n\t13226: 0x00006332,\n\t13227: 0x00006365,\n\t13228: 0x0000638A,\n\t13229: 0x00006382,\n\t13230: 0x0000637D,\n\t13231: 0x000063BD,\n\t13232: 0x0000639E,\n\t13233: 0x000063AD,\n\t13234: 0x0000639D,\n\t13235: 0x00006397,\n\t13236: 0x000063AB,\n\t13237: 0x0000638E,\n\t13238: 0x0000636F,\n\t13239: 0x00006387,\n\t13240: 0x00006390,\n\t13241: 0x0000636E,\n\t13242: 0x000063AF,\n\t13243: 0x00006375,\n\t13244: 0x0000639C,\n\t13245: 0x0000636D,\n\t13246: 0x000063AE,\n\t13247: 0x0000637C,\n\t13248: 0x000063A4,\n\t13249: 0x0000633B,\n\t13250: 0x0000639F,\n\t13251: 0x00006378,\n\t13252: 0x00006385,\n\t13253: 0x00006381,\n\t13254: 0x00006391,\n\t13255: 0x0000638D,\n\t13256: 0x00006370,\n\t13257: 0x00006553,\n\t13258: 0x000065CD,\n\t13259: 0x00006665,\n\t13260: 0x00006661,\n\t13261: 0x0000665B,\n\t13262: 0x00006659,\n\t13263: 0x0000665C,\n\t13264: 0x00006662,\n\t13265: 0x00006718,\n\t13266: 0x00006879,\n\t13267: 0x00006887,\n\t13268: 0x00006890,\n\t13269: 0x0000689C,\n\t13270: 0x0000686D,\n\t13271: 0x0000686E,\n\t13272: 0x000068AE,\n\t13273: 0x000068AB,\n\t13274: 0x00006956,\n\t13275: 0x0000686F,\n\t13276: 0x000068A3,\n\t13277: 0x000068AC,\n\t13278: 0x000068A9,\n\t13279: 0x00006875,\n\t13280: 0x00006874,\n\t13281: 0x000068B2,\n\t13282: 0x0000688F,\n\t13283: 0x00006877,\n\t13284: 0x00006892,\n\t13285: 0x0000687C,\n\t13286: 0x0000686B,\n\t13287: 0x00006872,\n\t13288: 0x000068AA,\n\t13289: 0x00006880,\n\t13290: 0x00006871,\n\t13291: 0x0000687E,\n\t13292: 0x0000689B,\n\t13293: 0x00006896,\n\t13294: 0x0000688B,\n\t13295: 0x000068A0,\n\t13296: 0x00006889,\n\t13297: 0x000068A4,\n\t13298: 0x00006878,\n\t13299: 0x0000687B,\n\t13300: 0x00006891,\n\t13301: 0x0000688C,\n\t13302: 0x0000688A,\n\t13303: 0x0000687D,\n\t13304: 0x00006B36,\n\t13305: 0x00006B33,\n\t13306: 0x00006B37,\n\t13307: 0x00006B38,\n\t13308: 0x00006B91,\n\t13309: 0x00006B8F,\n\t13310: 0x00006B8D,\n\t13311: 0x00006B8E,\n\t13312: 0x00006B8C,\n\t13313: 0x00006C2A,\n\t13314: 0x00006DC0,\n\t13315: 0x00006DAB,\n\t13316: 0x00006DB4,\n\t13317: 0x00006DB3,\n\t13318: 0x00006E74,\n\t13319: 0x00006DAC,\n\t13320: 0x00006DE9,\n\t13321: 0x00006DE2,\n\t13322: 0x00006DB7,\n\t13323: 0x00006DF6,\n\t13324: 0x00006DD4,\n\t13325: 0x00006E00,\n\t13326: 0x00006DC8,\n\t13327: 0x00006DE0,\n\t13328: 0x00006DDF,\n\t13329: 0x00006DD6,\n\t13330: 0x00006DBE,\n\t13331: 0x00006DE5,\n\t13332: 0x00006DDC,\n\t13333: 0x00006DDD,\n\t13334: 0x00006DDB,\n\t13335: 0x00006DF4,\n\t13336: 0x00006DCA,\n\t13337: 0x00006DBD,\n\t13338: 0x00006DED,\n\t13339: 0x00006DF0,\n\t13340: 0x00006DBA,\n\t13341: 0x00006DD5,\n\t13342: 0x00006DC2,\n\t13343: 0x00006DCF,\n\t13344: 0x00006DC9,\n\t13345: 0x00006DD0,\n\t13346: 0x00006DF2,\n\t13347: 0x00006DD3,\n\t13348: 0x00006DFD,\n\t13349: 0x00006DD7,\n\t13350: 0x00006DCD,\n\t13351: 0x00006DE3,\n\t13352: 0x00006DBB,\n\t13353: 0x000070FA,\n\t13354: 0x0000710D,\n\t13355: 0x000070F7,\n\t13356: 0x00007117,\n\t13357: 0x000070F4,\n\t13358: 0x0000710C,\n\t13359: 0x000070F0,\n\t13360: 0x00007104,\n\t13361: 0x000070F3,\n\t13362: 0x00007110,\n\t13363: 0x000070FC,\n\t13364: 0x000070FF,\n\t13365: 0x00007106,\n\t13366: 0x00007113,\n\t13367: 0x00007100,\n\t13368: 0x000070F8,\n\t13369: 0x000070F6,\n\t13370: 0x0000710B,\n\t13371: 0x00007102,\n\t13372: 0x0000710E,\n\t13373: 0x0000727E,\n\t13374: 0x0000727B,\n\t13375: 0x0000727C,\n\t13376: 0x0000727F,\n\t13377: 0x0000731D,\n\t13378: 0x00007317,\n\t13379: 0x00007307,\n\t13380: 0x00007311,\n\t13381: 0x00007318,\n\t13382: 0x0000730A,\n\t13383: 0x00007308,\n\t13384: 0x000072FF,\n\t13385: 0x0000730F,\n\t13386: 0x0000731E,\n\t13387: 0x00007388,\n\t13388: 0x000073F6,\n\t13389: 0x000073F8,\n\t13390: 0x000073F5,\n\t13391: 0x00007404,\n\t13392: 0x00007401,\n\t13393: 0x000073FD,\n\t13394: 0x00007407,\n\t13395: 0x00007400,\n\t13396: 0x000073FA,\n\t13397: 0x000073FC,\n\t13398: 0x000073FF,\n\t13399: 0x0000740C,\n\t13400: 0x0000740B,\n\t13401: 0x000073F4,\n\t13402: 0x00007408,\n\t13403: 0x00007564,\n\t13404: 0x00007563,\n\t13405: 0x000075CE,\n\t13406: 0x000075D2,\n\t13407: 0x000075CF,\n\t13408: 0x000075CB,\n\t13409: 0x000075CC,\n\t13410: 0x000075D1,\n\t13411: 0x000075D0,\n\t13412: 0x0000768F,\n\t13413: 0x00007689,\n\t13414: 0x000076D3,\n\t13415: 0x00007739,\n\t13416: 0x0000772F,\n\t13417: 0x0000772D,\n\t13418: 0x00007731,\n\t13419: 0x00007732,\n\t13420: 0x00007734,\n\t13421: 0x00007733,\n\t13422: 0x0000773D,\n\t13423: 0x00007725,\n\t13424: 0x0000773B,\n\t13425: 0x00007735,\n\t13426: 0x00007848,\n\t13427: 0x00007852,\n\t13428: 0x00007849,\n\t13429: 0x0000784D,\n\t13430: 0x0000784A,\n\t13431: 0x0000784C,\n\t13432: 0x00007826,\n\t13433: 0x00007845,\n\t13434: 0x00007850,\n\t13435: 0x00007964,\n\t13436: 0x00007967,\n\t13437: 0x00007969,\n\t13438: 0x0000796A,\n\t13439: 0x00007963,\n\t13440: 0x0000796B,\n\t13441: 0x00007961,\n\t13442: 0x000079BB,\n\t13443: 0x000079FA,\n\t13444: 0x000079F8,\n\t13445: 0x000079F6,\n\t13446: 0x000079F7,\n\t13447: 0x00007A8F,\n\t13448: 0x00007A94,\n\t13449: 0x00007A90,\n\t13450: 0x00007B35,\n\t13451: 0x00007B47,\n\t13452: 0x00007B34,\n\t13453: 0x00007B25,\n\t13454: 0x00007B30,\n\t13455: 0x00007B22,\n\t13456: 0x00007B24,\n\t13457: 0x00007B33,\n\t13458: 0x00007B18,\n\t13459: 0x00007B2A,\n\t13460: 0x00007B1D,\n\t13461: 0x00007B31,\n\t13462: 0x00007B2B,\n\t13463: 0x00007B2D,\n\t13464: 0x00007B2F,\n\t13465: 0x00007B32,\n\t13466: 0x00007B38,\n\t13467: 0x00007B1A,\n\t13468: 0x00007B23,\n\t13469: 0x00007C94,\n\t13470: 0x00007C98,\n\t13471: 0x00007C96,\n\t13472: 0x00007CA3,\n\t13473: 0x00007D35,\n\t13474: 0x00007D3D,\n\t13475: 0x00007D38,\n\t13476: 0x00007D36,\n\t13477: 0x00007D3A,\n\t13478: 0x00007D45,\n\t13479: 0x00007D2C,\n\t13480: 0x00007D29,\n\t13481: 0x00007D41,\n\t13482: 0x00007D47,\n\t13483: 0x00007D3E,\n\t13484: 0x00007D3F,\n\t13485: 0x00007D4A,\n\t13486: 0x00007D3B,\n\t13487: 0x00007D28,\n\t13488: 0x00007F63,\n\t13489: 0x00007F95,\n\t13490: 0x00007F9C,\n\t13491: 0x00007F9D,\n\t13492: 0x00007F9B,\n\t13493: 0x00007FCA,\n\t13494: 0x00007FCB,\n\t13495: 0x00007FCD,\n\t13496: 0x00007FD0,\n\t13497: 0x00007FD1,\n\t13498: 0x00007FC7,\n\t13499: 0x00007FCF,\n\t13500: 0x00007FC9,\n\t13501: 0x0000801F,\n\t13502: 0x0000801E,\n\t13503: 0x0000801B,\n\t13504: 0x00008047,\n\t13505: 0x00008043,\n\t13506: 0x00008048,\n\t13507: 0x00008118,\n\t13508: 0x00008125,\n\t13509: 0x00008119,\n\t13510: 0x0000811B,\n\t13511: 0x0000812D,\n\t13512: 0x0000811F,\n\t13513: 0x0000812C,\n\t13514: 0x0000811E,\n\t13515: 0x00008121,\n\t13516: 0x00008115,\n\t13517: 0x00008127,\n\t13518: 0x0000811D,\n\t13519: 0x00008122,\n\t13520: 0x00008211,\n\t13521: 0x00008238,\n\t13522: 0x00008233,\n\t13523: 0x0000823A,\n\t13524: 0x00008234,\n\t13525: 0x00008232,\n\t13526: 0x00008274,\n\t13527: 0x00008390,\n\t13528: 0x000083A3,\n\t13529: 0x000083A8,\n\t13530: 0x0000838D,\n\t13531: 0x0000837A,\n\t13532: 0x00008373,\n\t13533: 0x000083A4,\n\t13534: 0x00008374,\n\t13535: 0x0000838F,\n\t13536: 0x00008381,\n\t13537: 0x00008395,\n\t13538: 0x00008399,\n\t13539: 0x00008375,\n\t13540: 0x00008394,\n\t13541: 0x000083A9,\n\t13542: 0x0000837D,\n\t13543: 0x00008383,\n\t13544: 0x0000838C,\n\t13545: 0x0000839D,\n\t13546: 0x0000839B,\n\t13547: 0x000083AA,\n\t13548: 0x0000838B,\n\t13549: 0x0000837E,\n\t13550: 0x000083A5,\n\t13551: 0x000083AF,\n\t13552: 0x00008388,\n\t13553: 0x00008397,\n\t13554: 0x000083B0,\n\t13555: 0x0000837F,\n\t13556: 0x000083A6,\n\t13557: 0x00008387,\n\t13558: 0x000083AE,\n\t13559: 0x00008376,\n\t13560: 0x0000839A,\n\t13561: 0x00008659,\n\t13562: 0x00008656,\n\t13563: 0x000086BF,\n\t13564: 0x000086B7,\n\t13565: 0x000086C2,\n\t13566: 0x000086C1,\n\t13567: 0x000086C5,\n\t13568: 0x000086BA,\n\t13569: 0x000086B0,\n\t13570: 0x000086C8,\n\t13571: 0x000086B9,\n\t13572: 0x000086B3,\n\t13573: 0x000086B8,\n\t13574: 0x000086CC,\n\t13575: 0x000086B4,\n\t13576: 0x000086BB,\n\t13577: 0x000086BC,\n\t13578: 0x000086C3,\n\t13579: 0x000086BD,\n\t13580: 0x000086BE,\n\t13581: 0x00008852,\n\t13582: 0x00008889,\n\t13583: 0x00008895,\n\t13584: 0x000088A8,\n\t13585: 0x000088A2,\n\t13586: 0x000088AA,\n\t13587: 0x0000889A,\n\t13588: 0x00008891,\n\t13589: 0x000088A1,\n\t13590: 0x0000889F,\n\t13591: 0x00008898,\n\t13592: 0x000088A7,\n\t13593: 0x00008899,\n\t13594: 0x0000889B,\n\t13595: 0x00008897,\n\t13596: 0x000088A4,\n\t13597: 0x000088AC,\n\t13598: 0x0000888C,\n\t13599: 0x00008893,\n\t13600: 0x0000888E,\n\t13601: 0x00008982,\n\t13602: 0x000089D6,\n\t13603: 0x000089D9,\n\t13604: 0x000089D5,\n\t13605: 0x00008A30,\n\t13606: 0x00008A27,\n\t13607: 0x00008A2C,\n\t13608: 0x00008A1E,\n\t13609: 0x00008C39,\n\t13610: 0x00008C3B,\n\t13611: 0x00008C5C,\n\t13612: 0x00008C5D,\n\t13613: 0x00008C7D,\n\t13614: 0x00008CA5,\n\t13615: 0x00008D7D,\n\t13616: 0x00008D7B,\n\t13617: 0x00008D79,\n\t13618: 0x00008DBC,\n\t13619: 0x00008DC2,\n\t13620: 0x00008DB9,\n\t13621: 0x00008DBF,\n\t13622: 0x00008DC1,\n\t13623: 0x00008ED8,\n\t13624: 0x00008EDE,\n\t13625: 0x00008EDD,\n\t13626: 0x00008EDC,\n\t13627: 0x00008ED7,\n\t13628: 0x00008EE0,\n\t13629: 0x00008EE1,\n\t13630: 0x00009024,\n\t13631: 0x0000900B,\n\t13632: 0x00009011,\n\t13633: 0x0000901C,\n\t13634: 0x0000900C,\n\t13635: 0x00009021,\n\t13636: 0x000090EF,\n\t13637: 0x000090EA,\n\t13638: 0x000090F0,\n\t13639: 0x000090F4,\n\t13640: 0x000090F2,\n\t13641: 0x000090F3,\n\t13642: 0x000090D4,\n\t13643: 0x000090EB,\n\t13644: 0x000090EC,\n\t13645: 0x000090E9,\n\t13646: 0x00009156,\n\t13647: 0x00009158,\n\t13648: 0x0000915A,\n\t13649: 0x00009153,\n\t13650: 0x00009155,\n\t13651: 0x000091EC,\n\t13652: 0x000091F4,\n\t13653: 0x000091F1,\n\t13654: 0x000091F3,\n\t13655: 0x000091F8,\n\t13656: 0x000091E4,\n\t13657: 0x000091F9,\n\t13658: 0x000091EA,\n\t13659: 0x000091EB,\n\t13660: 0x000091F7,\n\t13661: 0x000091E8,\n\t13662: 0x000091EE,\n\t13663: 0x0000957A,\n\t13664: 0x00009586,\n\t13665: 0x00009588,\n\t13666: 0x0000967C,\n\t13667: 0x0000966D,\n\t13668: 0x0000966B,\n\t13669: 0x00009671,\n\t13670: 0x0000966F,\n\t13671: 0x000096BF,\n\t13672: 0x0000976A,\n\t13673: 0x00009804,\n\t13674: 0x000098E5,\n\t13675: 0x00009997,\n\t13676: 0x0000509B,\n\t13677: 0x00005095,\n\t13678: 0x00005094,\n\t13679: 0x0000509E,\n\t13680: 0x0000508B,\n\t13681: 0x000050A3,\n\t13682: 0x00005083,\n\t13683: 0x0000508C,\n\t13684: 0x0000508E,\n\t13685: 0x0000509D,\n\t13686: 0x00005068,\n\t13687: 0x0000509C,\n\t13688: 0x00005092,\n\t13689: 0x00005082,\n\t13690: 0x00005087,\n\t13691: 0x0000515F,\n\t13692: 0x000051D4,\n\t13693: 0x00005312,\n\t13694: 0x00005311,\n\t13695: 0x000053A4,\n\t13696: 0x000053A7,\n\t13697: 0x00005591,\n\t13698: 0x000055A8,\n\t13699: 0x000055A5,\n\t13700: 0x000055AD,\n\t13701: 0x00005577,\n\t13702: 0x00005645,\n\t13703: 0x000055A2,\n\t13704: 0x00005593,\n\t13705: 0x00005588,\n\t13706: 0x0000558F,\n\t13707: 0x000055B5,\n\t13708: 0x00005581,\n\t13709: 0x000055A3,\n\t13710: 0x00005592,\n\t13711: 0x000055A4,\n\t13712: 0x0000557D,\n\t13713: 0x0000558C,\n\t13714: 0x000055A6,\n\t13715: 0x0000557F,\n\t13716: 0x00005595,\n\t13717: 0x000055A1,\n\t13718: 0x0000558E,\n\t13719: 0x0000570C,\n\t13720: 0x00005829,\n\t13721: 0x00005837,\n\t13722: 0x00005819,\n\t13723: 0x0000581E,\n\t13724: 0x00005827,\n\t13725: 0x00005823,\n\t13726: 0x00005828,\n\t13727: 0x000057F5,\n\t13728: 0x00005848,\n\t13729: 0x00005825,\n\t13730: 0x0000581C,\n\t13731: 0x0000581B,\n\t13732: 0x00005833,\n\t13733: 0x0000583F,\n\t13734: 0x00005836,\n\t13735: 0x0000582E,\n\t13736: 0x00005839,\n\t13737: 0x00005838,\n\t13738: 0x0000582D,\n\t13739: 0x0000582C,\n\t13740: 0x0000583B,\n\t13741: 0x00005961,\n\t13742: 0x00005AAF,\n\t13743: 0x00005A94,\n\t13744: 0x00005A9F,\n\t13745: 0x00005A7A,\n\t13746: 0x00005AA2,\n\t13747: 0x00005A9E,\n\t13748: 0x00005A78,\n\t13749: 0x00005AA6,\n\t13750: 0x00005A7C,\n\t13751: 0x00005AA5,\n\t13752: 0x00005AAC,\n\t13753: 0x00005A95,\n\t13754: 0x00005AAE,\n\t13755: 0x00005A37,\n\t13756: 0x00005A84,\n\t13757: 0x00005A8A,\n\t13758: 0x00005A97,\n\t13759: 0x00005A83,\n\t13760: 0x00005A8B,\n\t13761: 0x00005AA9,\n\t13762: 0x00005A7B,\n\t13763: 0x00005A7D,\n\t13764: 0x00005A8C,\n\t13765: 0x00005A9C,\n\t13766: 0x00005A8F,\n\t13767: 0x00005A93,\n\t13768: 0x00005A9D,\n\t13769: 0x00005BEA,\n\t13770: 0x00005BCD,\n\t13771: 0x00005BCB,\n\t13772: 0x00005BD4,\n\t13773: 0x00005BD1,\n\t13774: 0x00005BCA,\n\t13775: 0x00005BCE,\n\t13776: 0x00005C0C,\n\t13777: 0x00005C30,\n\t13778: 0x00005D37,\n\t13779: 0x00005D43,\n\t13780: 0x00005D6B,\n\t13781: 0x00005D41,\n\t13782: 0x00005D4B,\n\t13783: 0x00005D3F,\n\t13784: 0x00005D35,\n\t13785: 0x00005D51,\n\t13786: 0x00005D4E,\n\t13787: 0x00005D55,\n\t13788: 0x00005D33,\n\t13789: 0x00005D3A,\n\t13790: 0x00005D52,\n\t13791: 0x00005D3D,\n\t13792: 0x00005D31,\n\t13793: 0x00005D59,\n\t13794: 0x00005D42,\n\t13795: 0x00005D39,\n\t13796: 0x00005D49,\n\t13797: 0x00005D38,\n\t13798: 0x00005D3C,\n\t13799: 0x00005D32,\n\t13800: 0x00005D36,\n\t13801: 0x00005D40,\n\t13802: 0x00005D45,\n\t13803: 0x00005E44,\n\t13804: 0x00005E41,\n\t13805: 0x00005F58,\n\t13806: 0x00005FA6,\n\t13807: 0x00005FA5,\n\t13808: 0x00005FAB,\n\t13809: 0x000060C9,\n\t13810: 0x000060B9,\n\t13811: 0x000060CC,\n\t13812: 0x000060E2,\n\t13813: 0x000060CE,\n\t13814: 0x000060C4,\n\t13815: 0x00006114,\n\t13816: 0x000060F2,\n\t13817: 0x0000610A,\n\t13818: 0x00006116,\n\t13819: 0x00006105,\n\t13820: 0x000060F5,\n\t13821: 0x00006113,\n\t13822: 0x000060F8,\n\t13823: 0x000060FC,\n\t13824: 0x000060FE,\n\t13825: 0x000060C1,\n\t13826: 0x00006103,\n\t13827: 0x00006118,\n\t13828: 0x0000611D,\n\t13829: 0x00006110,\n\t13830: 0x000060FF,\n\t13831: 0x00006104,\n\t13832: 0x0000610B,\n\t13833: 0x0000624A,\n\t13834: 0x00006394,\n\t13835: 0x000063B1,\n\t13836: 0x000063B0,\n\t13837: 0x000063CE,\n\t13838: 0x000063E5,\n\t13839: 0x000063E8,\n\t13840: 0x000063EF,\n\t13841: 0x000063C3,\n\t13842: 0x0000649D,\n\t13843: 0x000063F3,\n\t13844: 0x000063CA,\n\t13845: 0x000063E0,\n\t13846: 0x000063F6,\n\t13847: 0x000063D5,\n\t13848: 0x000063F2,\n\t13849: 0x000063F5,\n\t13850: 0x00006461,\n\t13851: 0x000063DF,\n\t13852: 0x000063BE,\n\t13853: 0x000063DD,\n\t13854: 0x000063DC,\n\t13855: 0x000063C4,\n\t13856: 0x000063D8,\n\t13857: 0x000063D3,\n\t13858: 0x000063C2,\n\t13859: 0x000063C7,\n\t13860: 0x000063CC,\n\t13861: 0x000063CB,\n\t13862: 0x000063C8,\n\t13863: 0x000063F0,\n\t13864: 0x000063D7,\n\t13865: 0x000063D9,\n\t13866: 0x00006532,\n\t13867: 0x00006567,\n\t13868: 0x0000656A,\n\t13869: 0x00006564,\n\t13870: 0x0000655C,\n\t13871: 0x00006568,\n\t13872: 0x00006565,\n\t13873: 0x0000658C,\n\t13874: 0x0000659D,\n\t13875: 0x0000659E,\n\t13876: 0x000065AE,\n\t13877: 0x000065D0,\n\t13878: 0x000065D2,\n\t13879: 0x0000667C,\n\t13880: 0x0000666C,\n\t13881: 0x0000667B,\n\t13882: 0x00006680,\n\t13883: 0x00006671,\n\t13884: 0x00006679,\n\t13885: 0x0000666A,\n\t13886: 0x00006672,\n\t13887: 0x00006701,\n\t13888: 0x0000690C,\n\t13889: 0x000068D3,\n\t13890: 0x00006904,\n\t13891: 0x000068DC,\n\t13892: 0x0000692A,\n\t13893: 0x000068EC,\n\t13894: 0x000068EA,\n\t13895: 0x000068F1,\n\t13896: 0x0000690F,\n\t13897: 0x000068D6,\n\t13898: 0x000068F7,\n\t13899: 0x000068EB,\n\t13900: 0x000068E4,\n\t13901: 0x000068F6,\n\t13902: 0x00006913,\n\t13903: 0x00006910,\n\t13904: 0x000068F3,\n\t13905: 0x000068E1,\n\t13906: 0x00006907,\n\t13907: 0x000068CC,\n\t13908: 0x00006908,\n\t13909: 0x00006970,\n\t13910: 0x000068B4,\n\t13911: 0x00006911,\n\t13912: 0x000068EF,\n\t13913: 0x000068C6,\n\t13914: 0x00006914,\n\t13915: 0x000068F8,\n\t13916: 0x000068D0,\n\t13917: 0x000068FD,\n\t13918: 0x000068FC,\n\t13919: 0x000068E8,\n\t13920: 0x0000690B,\n\t13921: 0x0000690A,\n\t13922: 0x00006917,\n\t13923: 0x000068CE,\n\t13924: 0x000068C8,\n\t13925: 0x000068DD,\n\t13926: 0x000068DE,\n\t13927: 0x000068E6,\n\t13928: 0x000068F4,\n\t13929: 0x000068D1,\n\t13930: 0x00006906,\n\t13931: 0x000068D4,\n\t13932: 0x000068E9,\n\t13933: 0x00006915,\n\t13934: 0x00006925,\n\t13935: 0x000068C7,\n\t13936: 0x00006B39,\n\t13937: 0x00006B3B,\n\t13938: 0x00006B3F,\n\t13939: 0x00006B3C,\n\t13940: 0x00006B94,\n\t13941: 0x00006B97,\n\t13942: 0x00006B99,\n\t13943: 0x00006B95,\n\t13944: 0x00006BBD,\n\t13945: 0x00006BF0,\n\t13946: 0x00006BF2,\n\t13947: 0x00006BF3,\n\t13948: 0x00006C30,\n\t13949: 0x00006DFC,\n\t13950: 0x00006E46,\n\t13951: 0x00006E47,\n\t13952: 0x00006E1F,\n\t13953: 0x00006E49,\n\t13954: 0x00006E88,\n\t13955: 0x00006E3C,\n\t13956: 0x00006E3D,\n\t13957: 0x00006E45,\n\t13958: 0x00006E62,\n\t13959: 0x00006E2B,\n\t13960: 0x00006E3F,\n\t13961: 0x00006E41,\n\t13962: 0x00006E5D,\n\t13963: 0x00006E73,\n\t13964: 0x00006E1C,\n\t13965: 0x00006E33,\n\t13966: 0x00006E4B,\n\t13967: 0x00006E40,\n\t13968: 0x00006E51,\n\t13969: 0x00006E3B,\n\t13970: 0x00006E03,\n\t13971: 0x00006E2E,\n\t13972: 0x00006E5E,\n\t13973: 0x00006E68,\n\t13974: 0x00006E5C,\n\t13975: 0x00006E61,\n\t13976: 0x00006E31,\n\t13977: 0x00006E28,\n\t13978: 0x00006E60,\n\t13979: 0x00006E71,\n\t13980: 0x00006E6B,\n\t13981: 0x00006E39,\n\t13982: 0x00006E22,\n\t13983: 0x00006E30,\n\t13984: 0x00006E53,\n\t13985: 0x00006E65,\n\t13986: 0x00006E27,\n\t13987: 0x00006E78,\n\t13988: 0x00006E64,\n\t13989: 0x00006E77,\n\t13990: 0x00006E55,\n\t13991: 0x00006E79,\n\t13992: 0x00006E52,\n\t13993: 0x00006E66,\n\t13994: 0x00006E35,\n\t13995: 0x00006E36,\n\t13996: 0x00006E5A,\n\t13997: 0x00007120,\n\t13998: 0x0000711E,\n\t13999: 0x0000712F,\n\t14000: 0x000070FB,\n\t14001: 0x0000712E,\n\t14002: 0x00007131,\n\t14003: 0x00007123,\n\t14004: 0x00007125,\n\t14005: 0x00007122,\n\t14006: 0x00007132,\n\t14007: 0x0000711F,\n\t14008: 0x00007128,\n\t14009: 0x0000713A,\n\t14010: 0x0000711B,\n\t14011: 0x0000724B,\n\t14012: 0x0000725A,\n\t14013: 0x00007288,\n\t14014: 0x00007289,\n\t14015: 0x00007286,\n\t14016: 0x00007285,\n\t14017: 0x0000728B,\n\t14018: 0x00007312,\n\t14019: 0x0000730B,\n\t14020: 0x00007330,\n\t14021: 0x00007322,\n\t14022: 0x00007331,\n\t14023: 0x00007333,\n\t14024: 0x00007327,\n\t14025: 0x00007332,\n\t14026: 0x0000732D,\n\t14027: 0x00007326,\n\t14028: 0x00007323,\n\t14029: 0x00007335,\n\t14030: 0x0000730C,\n\t14031: 0x0000742E,\n\t14032: 0x0000742C,\n\t14033: 0x00007430,\n\t14034: 0x0000742B,\n\t14035: 0x00007416,\n\t14036: 0x0000741A,\n\t14037: 0x00007421,\n\t14038: 0x0000742D,\n\t14039: 0x00007431,\n\t14040: 0x00007424,\n\t14041: 0x00007423,\n\t14042: 0x0000741D,\n\t14043: 0x00007429,\n\t14044: 0x00007420,\n\t14045: 0x00007432,\n\t14046: 0x000074FB,\n\t14047: 0x0000752F,\n\t14048: 0x0000756F,\n\t14049: 0x0000756C,\n\t14050: 0x000075E7,\n\t14051: 0x000075DA,\n\t14052: 0x000075E1,\n\t14053: 0x000075E6,\n\t14054: 0x000075DD,\n\t14055: 0x000075DF,\n\t14056: 0x000075E4,\n\t14057: 0x000075D7,\n\t14058: 0x00007695,\n\t14059: 0x00007692,\n\t14060: 0x000076DA,\n\t14061: 0x00007746,\n\t14062: 0x00007747,\n\t14063: 0x00007744,\n\t14064: 0x0000774D,\n\t14065: 0x00007745,\n\t14066: 0x0000774A,\n\t14067: 0x0000774E,\n\t14068: 0x0000774B,\n\t14069: 0x0000774C,\n\t14070: 0x000077DE,\n\t14071: 0x000077EC,\n\t14072: 0x00007860,\n\t14073: 0x00007864,\n\t14074: 0x00007865,\n\t14075: 0x0000785C,\n\t14076: 0x0000786D,\n\t14077: 0x00007871,\n\t14078: 0x0000786A,\n\t14079: 0x0000786E,\n\t14080: 0x00007870,\n\t14081: 0x00007869,\n\t14082: 0x00007868,\n\t14083: 0x0000785E,\n\t14084: 0x00007862,\n\t14085: 0x00007974,\n\t14086: 0x00007973,\n\t14087: 0x00007972,\n\t14088: 0x00007970,\n\t14089: 0x00007A02,\n\t14090: 0x00007A0A,\n\t14091: 0x00007A03,\n\t14092: 0x00007A0C,\n\t14093: 0x00007A04,\n\t14094: 0x00007A99,\n\t14095: 0x00007AE6,\n\t14096: 0x00007AE4,\n\t14097: 0x00007B4A,\n\t14098: 0x00007B3B,\n\t14099: 0x00007B44,\n\t14100: 0x00007B48,\n\t14101: 0x00007B4C,\n\t14102: 0x00007B4E,\n\t14103: 0x00007B40,\n\t14104: 0x00007B58,\n\t14105: 0x00007B45,\n\t14106: 0x00007CA2,\n\t14107: 0x00007C9E,\n\t14108: 0x00007CA8,\n\t14109: 0x00007CA1,\n\t14110: 0x00007D58,\n\t14111: 0x00007D6F,\n\t14112: 0x00007D63,\n\t14113: 0x00007D53,\n\t14114: 0x00007D56,\n\t14115: 0x00007D67,\n\t14116: 0x00007D6A,\n\t14117: 0x00007D4F,\n\t14118: 0x00007D6D,\n\t14119: 0x00007D5C,\n\t14120: 0x00007D6B,\n\t14121: 0x00007D52,\n\t14122: 0x00007D54,\n\t14123: 0x00007D69,\n\t14124: 0x00007D51,\n\t14125: 0x00007D5F,\n\t14126: 0x00007D4E,\n\t14127: 0x00007F3E,\n\t14128: 0x00007F3F,\n\t14129: 0x00007F65,\n\t14130: 0x00007F66,\n\t14131: 0x00007FA2,\n\t14132: 0x00007FA0,\n\t14133: 0x00007FA1,\n\t14134: 0x00007FD7,\n\t14135: 0x00008051,\n\t14136: 0x0000804F,\n\t14137: 0x00008050,\n\t14138: 0x000080FE,\n\t14139: 0x000080D4,\n\t14140: 0x00008143,\n\t14141: 0x0000814A,\n\t14142: 0x00008152,\n\t14143: 0x0000814F,\n\t14144: 0x00008147,\n\t14145: 0x0000813D,\n\t14146: 0x0000814D,\n\t14147: 0x0000813A,\n\t14148: 0x000081E6,\n\t14149: 0x000081EE,\n\t14150: 0x000081F7,\n\t14151: 0x000081F8,\n\t14152: 0x000081F9,\n\t14153: 0x00008204,\n\t14154: 0x0000823C,\n\t14155: 0x0000823D,\n\t14156: 0x0000823F,\n\t14157: 0x00008275,\n\t14158: 0x0000833B,\n\t14159: 0x000083CF,\n\t14160: 0x000083F9,\n\t14161: 0x00008423,\n\t14162: 0x000083C0,\n\t14163: 0x000083E8,\n\t14164: 0x00008412,\n\t14165: 0x000083E7,\n\t14166: 0x000083E4,\n\t14167: 0x000083FC,\n\t14168: 0x000083F6,\n\t14169: 0x00008410,\n\t14170: 0x000083C6,\n\t14171: 0x000083C8,\n\t14172: 0x000083EB,\n\t14173: 0x000083E3,\n\t14174: 0x000083BF,\n\t14175: 0x00008401,\n\t14176: 0x000083DD,\n\t14177: 0x000083E5,\n\t14178: 0x000083D8,\n\t14179: 0x000083FF,\n\t14180: 0x000083E1,\n\t14181: 0x000083CB,\n\t14182: 0x000083CE,\n\t14183: 0x000083D6,\n\t14184: 0x000083F5,\n\t14185: 0x000083C9,\n\t14186: 0x00008409,\n\t14187: 0x0000840F,\n\t14188: 0x000083DE,\n\t14189: 0x00008411,\n\t14190: 0x00008406,\n\t14191: 0x000083C2,\n\t14192: 0x000083F3,\n\t14193: 0x000083D5,\n\t14194: 0x000083FA,\n\t14195: 0x000083C7,\n\t14196: 0x000083D1,\n\t14197: 0x000083EA,\n\t14198: 0x00008413,\n\t14199: 0x000083C3,\n\t14200: 0x000083EC,\n\t14201: 0x000083EE,\n\t14202: 0x000083C4,\n\t14203: 0x000083FB,\n\t14204: 0x000083D7,\n\t14205: 0x000083E2,\n\t14206: 0x0000841B,\n\t14207: 0x000083DB,\n\t14208: 0x000083FE,\n\t14209: 0x000086D8,\n\t14210: 0x000086E2,\n\t14211: 0x000086E6,\n\t14212: 0x000086D3,\n\t14213: 0x000086E3,\n\t14214: 0x000086DA,\n\t14215: 0x000086EA,\n\t14216: 0x000086DD,\n\t14217: 0x000086EB,\n\t14218: 0x000086DC,\n\t14219: 0x000086EC,\n\t14220: 0x000086E9,\n\t14221: 0x000086D7,\n\t14222: 0x000086E8,\n\t14223: 0x000086D1,\n\t14224: 0x00008848,\n\t14225: 0x00008856,\n\t14226: 0x00008855,\n\t14227: 0x000088BA,\n\t14228: 0x000088D7,\n\t14229: 0x000088B9,\n\t14230: 0x000088B8,\n\t14231: 0x000088C0,\n\t14232: 0x000088BE,\n\t14233: 0x000088B6,\n\t14234: 0x000088BC,\n\t14235: 0x000088B7,\n\t14236: 0x000088BD,\n\t14237: 0x000088B2,\n\t14238: 0x00008901,\n\t14239: 0x000088C9,\n\t14240: 0x00008995,\n\t14241: 0x00008998,\n\t14242: 0x00008997,\n\t14243: 0x000089DD,\n\t14244: 0x000089DA,\n\t14245: 0x000089DB,\n\t14246: 0x00008A4E,\n\t14247: 0x00008A4D,\n\t14248: 0x00008A39,\n\t14249: 0x00008A59,\n\t14250: 0x00008A40,\n\t14251: 0x00008A57,\n\t14252: 0x00008A58,\n\t14253: 0x00008A44,\n\t14254: 0x00008A45,\n\t14255: 0x00008A52,\n\t14256: 0x00008A48,\n\t14257: 0x00008A51,\n\t14258: 0x00008A4A,\n\t14259: 0x00008A4C,\n\t14260: 0x00008A4F,\n\t14261: 0x00008C5F,\n\t14262: 0x00008C81,\n\t14263: 0x00008C80,\n\t14264: 0x00008CBA,\n\t14265: 0x00008CBE,\n\t14266: 0x00008CB0,\n\t14267: 0x00008CB9,\n\t14268: 0x00008CB5,\n\t14269: 0x00008D84,\n\t14270: 0x00008D80,\n\t14271: 0x00008D89,\n\t14272: 0x00008DD8,\n\t14273: 0x00008DD3,\n\t14274: 0x00008DCD,\n\t14275: 0x00008DC7,\n\t14276: 0x00008DD6,\n\t14277: 0x00008DDC,\n\t14278: 0x00008DCF,\n\t14279: 0x00008DD5,\n\t14280: 0x00008DD9,\n\t14281: 0x00008DC8,\n\t14282: 0x00008DD7,\n\t14283: 0x00008DC5,\n\t14284: 0x00008EEF,\n\t14285: 0x00008EF7,\n\t14286: 0x00008EFA,\n\t14287: 0x00008EF9,\n\t14288: 0x00008EE6,\n\t14289: 0x00008EEE,\n\t14290: 0x00008EE5,\n\t14291: 0x00008EF5,\n\t14292: 0x00008EE7,\n\t14293: 0x00008EE8,\n\t14294: 0x00008EF6,\n\t14295: 0x00008EEB,\n\t14296: 0x00008EF1,\n\t14297: 0x00008EEC,\n\t14298: 0x00008EF4,\n\t14299: 0x00008EE9,\n\t14300: 0x0000902D,\n\t14301: 0x00009034,\n\t14302: 0x0000902F,\n\t14303: 0x00009106,\n\t14304: 0x0000912C,\n\t14305: 0x00009104,\n\t14306: 0x000090FF,\n\t14307: 0x000090FC,\n\t14308: 0x00009108,\n\t14309: 0x000090F9,\n\t14310: 0x000090FB,\n\t14311: 0x00009101,\n\t14312: 0x00009100,\n\t14313: 0x00009107,\n\t14314: 0x00009105,\n\t14315: 0x00009103,\n\t14316: 0x00009161,\n\t14317: 0x00009164,\n\t14318: 0x0000915F,\n\t14319: 0x00009162,\n\t14320: 0x00009160,\n\t14321: 0x00009201,\n\t14322: 0x0000920A,\n\t14323: 0x00009225,\n\t14324: 0x00009203,\n\t14325: 0x0000921A,\n\t14326: 0x00009226,\n\t14327: 0x0000920F,\n\t14328: 0x0000920C,\n\t14329: 0x00009200,\n\t14330: 0x00009212,\n\t14331: 0x000091FF,\n\t14332: 0x000091FD,\n\t14333: 0x00009206,\n\t14334: 0x00009204,\n\t14335: 0x00009227,\n\t14336: 0x00009202,\n\t14337: 0x0000921C,\n\t14338: 0x00009224,\n\t14339: 0x00009219,\n\t14340: 0x00009217,\n\t14341: 0x00009205,\n\t14342: 0x00009216,\n\t14343: 0x0000957B,\n\t14344: 0x0000958D,\n\t14345: 0x0000958C,\n\t14346: 0x00009590,\n\t14347: 0x00009687,\n\t14348: 0x0000967E,\n\t14349: 0x00009688,\n\t14350: 0x00009689,\n\t14351: 0x00009683,\n\t14352: 0x00009680,\n\t14353: 0x000096C2,\n\t14354: 0x000096C8,\n\t14355: 0x000096C3,\n\t14356: 0x000096F1,\n\t14357: 0x000096F0,\n\t14358: 0x0000976C,\n\t14359: 0x00009770,\n\t14360: 0x0000976E,\n\t14361: 0x00009807,\n\t14362: 0x000098A9,\n\t14363: 0x000098EB,\n\t14364: 0x00009CE6,\n\t14365: 0x00009EF9,\n\t14366: 0x00004E83,\n\t14367: 0x00004E84,\n\t14368: 0x00004EB6,\n\t14369: 0x000050BD,\n\t14370: 0x000050BF,\n\t14371: 0x000050C6,\n\t14372: 0x000050AE,\n\t14373: 0x000050C4,\n\t14374: 0x000050CA,\n\t14375: 0x000050B4,\n\t14376: 0x000050C8,\n\t14377: 0x000050C2,\n\t14378: 0x000050B0,\n\t14379: 0x000050C1,\n\t14380: 0x000050BA,\n\t14381: 0x000050B1,\n\t14382: 0x000050CB,\n\t14383: 0x000050C9,\n\t14384: 0x000050B6,\n\t14385: 0x000050B8,\n\t14386: 0x000051D7,\n\t14387: 0x0000527A,\n\t14388: 0x00005278,\n\t14389: 0x0000527B,\n\t14390: 0x0000527C,\n\t14391: 0x000055C3,\n\t14392: 0x000055DB,\n\t14393: 0x000055CC,\n\t14394: 0x000055D0,\n\t14395: 0x000055CB,\n\t14396: 0x000055CA,\n\t14397: 0x000055DD,\n\t14398: 0x000055C0,\n\t14399: 0x000055D4,\n\t14400: 0x000055C4,\n\t14401: 0x000055E9,\n\t14402: 0x000055BF,\n\t14403: 0x000055D2,\n\t14404: 0x0000558D,\n\t14405: 0x000055CF,\n\t14406: 0x000055D5,\n\t14407: 0x000055E2,\n\t14408: 0x000055D6,\n\t14409: 0x000055C8,\n\t14410: 0x000055F2,\n\t14411: 0x000055CD,\n\t14412: 0x000055D9,\n\t14413: 0x000055C2,\n\t14414: 0x00005714,\n\t14415: 0x00005853,\n\t14416: 0x00005868,\n\t14417: 0x00005864,\n\t14418: 0x0000584F,\n\t14419: 0x0000584D,\n\t14420: 0x00005849,\n\t14421: 0x0000586F,\n\t14422: 0x00005855,\n\t14423: 0x0000584E,\n\t14424: 0x0000585D,\n\t14425: 0x00005859,\n\t14426: 0x00005865,\n\t14427: 0x0000585B,\n\t14428: 0x0000583D,\n\t14429: 0x00005863,\n\t14430: 0x00005871,\n\t14431: 0x000058FC,\n\t14432: 0x00005AC7,\n\t14433: 0x00005AC4,\n\t14434: 0x00005ACB,\n\t14435: 0x00005ABA,\n\t14436: 0x00005AB8,\n\t14437: 0x00005AB1,\n\t14438: 0x00005AB5,\n\t14439: 0x00005AB0,\n\t14440: 0x00005ABF,\n\t14441: 0x00005AC8,\n\t14442: 0x00005ABB,\n\t14443: 0x00005AC6,\n\t14444: 0x00005AB7,\n\t14445: 0x00005AC0,\n\t14446: 0x00005ACA,\n\t14447: 0x00005AB4,\n\t14448: 0x00005AB6,\n\t14449: 0x00005ACD,\n\t14450: 0x00005AB9,\n\t14451: 0x00005A90,\n\t14452: 0x00005BD6,\n\t14453: 0x00005BD8,\n\t14454: 0x00005BD9,\n\t14455: 0x00005C1F,\n\t14456: 0x00005C33,\n\t14457: 0x00005D71,\n\t14458: 0x00005D63,\n\t14459: 0x00005D4A,\n\t14460: 0x00005D65,\n\t14461: 0x00005D72,\n\t14462: 0x00005D6C,\n\t14463: 0x00005D5E,\n\t14464: 0x00005D68,\n\t14465: 0x00005D67,\n\t14466: 0x00005D62,\n\t14467: 0x00005DF0,\n\t14468: 0x00005E4F,\n\t14469: 0x00005E4E,\n\t14470: 0x00005E4A,\n\t14471: 0x00005E4D,\n\t14472: 0x00005E4B,\n\t14473: 0x00005EC5,\n\t14474: 0x00005ECC,\n\t14475: 0x00005EC6,\n\t14476: 0x00005ECB,\n\t14477: 0x00005EC7,\n\t14478: 0x00005F40,\n\t14479: 0x00005FAF,\n\t14480: 0x00005FAD,\n\t14481: 0x000060F7,\n\t14482: 0x00006149,\n\t14483: 0x0000614A,\n\t14484: 0x0000612B,\n\t14485: 0x00006145,\n\t14486: 0x00006136,\n\t14487: 0x00006132,\n\t14488: 0x0000612E,\n\t14489: 0x00006146,\n\t14490: 0x0000612F,\n\t14491: 0x0000614F,\n\t14492: 0x00006129,\n\t14493: 0x00006140,\n\t14494: 0x00006220,\n\t14495: 0x00009168,\n\t14496: 0x00006223,\n\t14497: 0x00006225,\n\t14498: 0x00006224,\n\t14499: 0x000063C5,\n\t14500: 0x000063F1,\n\t14501: 0x000063EB,\n\t14502: 0x00006410,\n\t14503: 0x00006412,\n\t14504: 0x00006409,\n\t14505: 0x00006420,\n\t14506: 0x00006424,\n\t14507: 0x00006433,\n\t14508: 0x00006443,\n\t14509: 0x0000641F,\n\t14510: 0x00006415,\n\t14511: 0x00006418,\n\t14512: 0x00006439,\n\t14513: 0x00006437,\n\t14514: 0x00006422,\n\t14515: 0x00006423,\n\t14516: 0x0000640C,\n\t14517: 0x00006426,\n\t14518: 0x00006430,\n\t14519: 0x00006428,\n\t14520: 0x00006441,\n\t14521: 0x00006435,\n\t14522: 0x0000642F,\n\t14523: 0x0000640A,\n\t14524: 0x0000641A,\n\t14525: 0x00006440,\n\t14526: 0x00006425,\n\t14527: 0x00006427,\n\t14528: 0x0000640B,\n\t14529: 0x000063E7,\n\t14530: 0x0000641B,\n\t14531: 0x0000642E,\n\t14532: 0x00006421,\n\t14533: 0x0000640E,\n\t14534: 0x0000656F,\n\t14535: 0x00006592,\n\t14536: 0x000065D3,\n\t14537: 0x00006686,\n\t14538: 0x0000668C,\n\t14539: 0x00006695,\n\t14540: 0x00006690,\n\t14541: 0x0000668B,\n\t14542: 0x0000668A,\n\t14543: 0x00006699,\n\t14544: 0x00006694,\n\t14545: 0x00006678,\n\t14546: 0x00006720,\n\t14547: 0x00006966,\n\t14548: 0x0000695F,\n\t14549: 0x00006938,\n\t14550: 0x0000694E,\n\t14551: 0x00006962,\n\t14552: 0x00006971,\n\t14553: 0x0000693F,\n\t14554: 0x00006945,\n\t14555: 0x0000696A,\n\t14556: 0x00006939,\n\t14557: 0x00006942,\n\t14558: 0x00006957,\n\t14559: 0x00006959,\n\t14560: 0x0000697A,\n\t14561: 0x00006948,\n\t14562: 0x00006949,\n\t14563: 0x00006935,\n\t14564: 0x0000696C,\n\t14565: 0x00006933,\n\t14566: 0x0000693D,\n\t14567: 0x00006965,\n\t14568: 0x000068F0,\n\t14569: 0x00006978,\n\t14570: 0x00006934,\n\t14571: 0x00006969,\n\t14572: 0x00006940,\n\t14573: 0x0000696F,\n\t14574: 0x00006944,\n\t14575: 0x00006976,\n\t14576: 0x00006958,\n\t14577: 0x00006941,\n\t14578: 0x00006974,\n\t14579: 0x0000694C,\n\t14580: 0x0000693B,\n\t14581: 0x0000694B,\n\t14582: 0x00006937,\n\t14583: 0x0000695C,\n\t14584: 0x0000694F,\n\t14585: 0x00006951,\n\t14586: 0x00006932,\n\t14587: 0x00006952,\n\t14588: 0x0000692F,\n\t14589: 0x0000697B,\n\t14590: 0x0000693C,\n\t14591: 0x00006B46,\n\t14592: 0x00006B45,\n\t14593: 0x00006B43,\n\t14594: 0x00006B42,\n\t14595: 0x00006B48,\n\t14596: 0x00006B41,\n\t14597: 0x00006B9B,\n\t14598: 0x0000FA0D,\n\t14599: 0x00006BFB,\n\t14600: 0x00006BFC,\n\t14601: 0x00006BF9,\n\t14602: 0x00006BF7,\n\t14603: 0x00006BF8,\n\t14604: 0x00006E9B,\n\t14605: 0x00006ED6,\n\t14606: 0x00006EC8,\n\t14607: 0x00006E8F,\n\t14608: 0x00006EC0,\n\t14609: 0x00006E9F,\n\t14610: 0x00006E93,\n\t14611: 0x00006E94,\n\t14612: 0x00006EA0,\n\t14613: 0x00006EB1,\n\t14614: 0x00006EB9,\n\t14615: 0x00006EC6,\n\t14616: 0x00006ED2,\n\t14617: 0x00006EBD,\n\t14618: 0x00006EC1,\n\t14619: 0x00006E9E,\n\t14620: 0x00006EC9,\n\t14621: 0x00006EB7,\n\t14622: 0x00006EB0,\n\t14623: 0x00006ECD,\n\t14624: 0x00006EA6,\n\t14625: 0x00006ECF,\n\t14626: 0x00006EB2,\n\t14627: 0x00006EBE,\n\t14628: 0x00006EC3,\n\t14629: 0x00006EDC,\n\t14630: 0x00006ED8,\n\t14631: 0x00006E99,\n\t14632: 0x00006E92,\n\t14633: 0x00006E8E,\n\t14634: 0x00006E8D,\n\t14635: 0x00006EA4,\n\t14636: 0x00006EA1,\n\t14637: 0x00006EBF,\n\t14638: 0x00006EB3,\n\t14639: 0x00006ED0,\n\t14640: 0x00006ECA,\n\t14641: 0x00006E97,\n\t14642: 0x00006EAE,\n\t14643: 0x00006EA3,\n\t14644: 0x00007147,\n\t14645: 0x00007154,\n\t14646: 0x00007152,\n\t14647: 0x00007163,\n\t14648: 0x00007160,\n\t14649: 0x00007141,\n\t14650: 0x0000715D,\n\t14651: 0x00007162,\n\t14652: 0x00007172,\n\t14653: 0x00007178,\n\t14654: 0x0000716A,\n\t14655: 0x00007161,\n\t14656: 0x00007142,\n\t14657: 0x00007158,\n\t14658: 0x00007143,\n\t14659: 0x0000714B,\n\t14660: 0x00007170,\n\t14661: 0x0000715F,\n\t14662: 0x00007150,\n\t14663: 0x00007153,\n\t14664: 0x00007144,\n\t14665: 0x0000714D,\n\t14666: 0x0000715A,\n\t14667: 0x0000724F,\n\t14668: 0x0000728D,\n\t14669: 0x0000728C,\n\t14670: 0x00007291,\n\t14671: 0x00007290,\n\t14672: 0x0000728E,\n\t14673: 0x0000733C,\n\t14674: 0x00007342,\n\t14675: 0x0000733B,\n\t14676: 0x0000733A,\n\t14677: 0x00007340,\n\t14678: 0x0000734A,\n\t14679: 0x00007349,\n\t14680: 0x00007444,\n\t14681: 0x0000744A,\n\t14682: 0x0000744B,\n\t14683: 0x00007452,\n\t14684: 0x00007451,\n\t14685: 0x00007457,\n\t14686: 0x00007440,\n\t14687: 0x0000744F,\n\t14688: 0x00007450,\n\t14689: 0x0000744E,\n\t14690: 0x00007442,\n\t14691: 0x00007446,\n\t14692: 0x0000744D,\n\t14693: 0x00007454,\n\t14694: 0x000074E1,\n\t14695: 0x000074FF,\n\t14696: 0x000074FE,\n\t14697: 0x000074FD,\n\t14698: 0x0000751D,\n\t14699: 0x00007579,\n\t14700: 0x00007577,\n\t14701: 0x00006983,\n\t14702: 0x000075EF,\n\t14703: 0x0000760F,\n\t14704: 0x00007603,\n\t14705: 0x000075F7,\n\t14706: 0x000075FE,\n\t14707: 0x000075FC,\n\t14708: 0x000075F9,\n\t14709: 0x000075F8,\n\t14710: 0x00007610,\n\t14711: 0x000075FB,\n\t14712: 0x000075F6,\n\t14713: 0x000075ED,\n\t14714: 0x000075F5,\n\t14715: 0x000075FD,\n\t14716: 0x00007699,\n\t14717: 0x000076B5,\n\t14718: 0x000076DD,\n\t14719: 0x00007755,\n\t14720: 0x0000775F,\n\t14721: 0x00007760,\n\t14722: 0x00007752,\n\t14723: 0x00007756,\n\t14724: 0x0000775A,\n\t14725: 0x00007769,\n\t14726: 0x00007767,\n\t14727: 0x00007754,\n\t14728: 0x00007759,\n\t14729: 0x0000776D,\n\t14730: 0x000077E0,\n\t14731: 0x00007887,\n\t14732: 0x0000789A,\n\t14733: 0x00007894,\n\t14734: 0x0000788F,\n\t14735: 0x00007884,\n\t14736: 0x00007895,\n\t14737: 0x00007885,\n\t14738: 0x00007886,\n\t14739: 0x000078A1,\n\t14740: 0x00007883,\n\t14741: 0x00007879,\n\t14742: 0x00007899,\n\t14743: 0x00007880,\n\t14744: 0x00007896,\n\t14745: 0x0000787B,\n\t14746: 0x0000797C,\n\t14747: 0x00007982,\n\t14748: 0x0000797D,\n\t14749: 0x00007979,\n\t14750: 0x00007A11,\n\t14751: 0x00007A18,\n\t14752: 0x00007A19,\n\t14753: 0x00007A12,\n\t14754: 0x00007A17,\n\t14755: 0x00007A15,\n\t14756: 0x00007A22,\n\t14757: 0x00007A13,\n\t14758: 0x00007A1B,\n\t14759: 0x00007A10,\n\t14760: 0x00007AA3,\n\t14761: 0x00007AA2,\n\t14762: 0x00007A9E,\n\t14763: 0x00007AEB,\n\t14764: 0x00007B66,\n\t14765: 0x00007B64,\n\t14766: 0x00007B6D,\n\t14767: 0x00007B74,\n\t14768: 0x00007B69,\n\t14769: 0x00007B72,\n\t14770: 0x00007B65,\n\t14771: 0x00007B73,\n\t14772: 0x00007B71,\n\t14773: 0x00007B70,\n\t14774: 0x00007B61,\n\t14775: 0x00007B78,\n\t14776: 0x00007B76,\n\t14777: 0x00007B63,\n\t14778: 0x00007CB2,\n\t14779: 0x00007CB4,\n\t14780: 0x00007CAF,\n\t14781: 0x00007D88,\n\t14782: 0x00007D86,\n\t14783: 0x00007D80,\n\t14784: 0x00007D8D,\n\t14785: 0x00007D7F,\n\t14786: 0x00007D85,\n\t14787: 0x00007D7A,\n\t14788: 0x00007D8E,\n\t14789: 0x00007D7B,\n\t14790: 0x00007D83,\n\t14791: 0x00007D7C,\n\t14792: 0x00007D8C,\n\t14793: 0x00007D94,\n\t14794: 0x00007D84,\n\t14795: 0x00007D7D,\n\t14796: 0x00007D92,\n\t14797: 0x00007F6D,\n\t14798: 0x00007F6B,\n\t14799: 0x00007F67,\n\t14800: 0x00007F68,\n\t14801: 0x00007F6C,\n\t14802: 0x00007FA6,\n\t14803: 0x00007FA5,\n\t14804: 0x00007FA7,\n\t14805: 0x00007FDB,\n\t14806: 0x00007FDC,\n\t14807: 0x00008021,\n\t14808: 0x00008164,\n\t14809: 0x00008160,\n\t14810: 0x00008177,\n\t14811: 0x0000815C,\n\t14812: 0x00008169,\n\t14813: 0x0000815B,\n\t14814: 0x00008162,\n\t14815: 0x00008172,\n\t14816: 0x00006721,\n\t14817: 0x0000815E,\n\t14818: 0x00008176,\n\t14819: 0x00008167,\n\t14820: 0x0000816F,\n\t14821: 0x00008144,\n\t14822: 0x00008161,\n\t14823: 0x0000821D,\n\t14824: 0x00008249,\n\t14825: 0x00008244,\n\t14826: 0x00008240,\n\t14827: 0x00008242,\n\t14828: 0x00008245,\n\t14829: 0x000084F1,\n\t14830: 0x0000843F,\n\t14831: 0x00008456,\n\t14832: 0x00008476,\n\t14833: 0x00008479,\n\t14834: 0x0000848F,\n\t14835: 0x0000848D,\n\t14836: 0x00008465,\n\t14837: 0x00008451,\n\t14838: 0x00008440,\n\t14839: 0x00008486,\n\t14840: 0x00008467,\n\t14841: 0x00008430,\n\t14842: 0x0000844D,\n\t14843: 0x0000847D,\n\t14844: 0x0000845A,\n\t14845: 0x00008459,\n\t14846: 0x00008474,\n\t14847: 0x00008473,\n\t14848: 0x0000845D,\n\t14849: 0x00008507,\n\t14850: 0x0000845E,\n\t14851: 0x00008437,\n\t14852: 0x0000843A,\n\t14853: 0x00008434,\n\t14854: 0x0000847A,\n\t14855: 0x00008443,\n\t14856: 0x00008478,\n\t14857: 0x00008432,\n\t14858: 0x00008445,\n\t14859: 0x00008429,\n\t14860: 0x000083D9,\n\t14861: 0x0000844B,\n\t14862: 0x0000842F,\n\t14863: 0x00008442,\n\t14864: 0x0000842D,\n\t14865: 0x0000845F,\n\t14866: 0x00008470,\n\t14867: 0x00008439,\n\t14868: 0x0000844E,\n\t14869: 0x0000844C,\n\t14870: 0x00008452,\n\t14871: 0x0000846F,\n\t14872: 0x000084C5,\n\t14873: 0x0000848E,\n\t14874: 0x0000843B,\n\t14875: 0x00008447,\n\t14876: 0x00008436,\n\t14877: 0x00008433,\n\t14878: 0x00008468,\n\t14879: 0x0000847E,\n\t14880: 0x00008444,\n\t14881: 0x0000842B,\n\t14882: 0x00008460,\n\t14883: 0x00008454,\n\t14884: 0x0000846E,\n\t14885: 0x00008450,\n\t14886: 0x0000870B,\n\t14887: 0x00008704,\n\t14888: 0x000086F7,\n\t14889: 0x0000870C,\n\t14890: 0x000086FA,\n\t14891: 0x000086D6,\n\t14892: 0x000086F5,\n\t14893: 0x0000874D,\n\t14894: 0x000086F8,\n\t14895: 0x0000870E,\n\t14896: 0x00008709,\n\t14897: 0x00008701,\n\t14898: 0x000086F6,\n\t14899: 0x0000870D,\n\t14900: 0x00008705,\n\t14901: 0x000088D6,\n\t14902: 0x000088CB,\n\t14903: 0x000088CD,\n\t14904: 0x000088CE,\n\t14905: 0x000088DE,\n\t14906: 0x000088DB,\n\t14907: 0x000088DA,\n\t14908: 0x000088CC,\n\t14909: 0x000088D0,\n\t14910: 0x00008985,\n\t14911: 0x0000899B,\n\t14912: 0x000089DF,\n\t14913: 0x000089E5,\n\t14914: 0x000089E4,\n\t14915: 0x000089E1,\n\t14916: 0x000089E0,\n\t14917: 0x000089E2,\n\t14918: 0x000089DC,\n\t14919: 0x000089E6,\n\t14920: 0x00008A76,\n\t14921: 0x00008A86,\n\t14922: 0x00008A7F,\n\t14923: 0x00008A61,\n\t14924: 0x00008A3F,\n\t14925: 0x00008A77,\n\t14926: 0x00008A82,\n\t14927: 0x00008A84,\n\t14928: 0x00008A75,\n\t14929: 0x00008A83,\n\t14930: 0x00008A81,\n\t14931: 0x00008A74,\n\t14932: 0x00008A7A,\n\t14933: 0x00008C3C,\n\t14934: 0x00008C4B,\n\t14935: 0x00008C4A,\n\t14936: 0x00008C65,\n\t14937: 0x00008C64,\n\t14938: 0x00008C66,\n\t14939: 0x00008C86,\n\t14940: 0x00008C84,\n\t14941: 0x00008C85,\n\t14942: 0x00008CCC,\n\t14943: 0x00008D68,\n\t14944: 0x00008D69,\n\t14945: 0x00008D91,\n\t14946: 0x00008D8C,\n\t14947: 0x00008D8E,\n\t14948: 0x00008D8F,\n\t14949: 0x00008D8D,\n\t14950: 0x00008D93,\n\t14951: 0x00008D94,\n\t14952: 0x00008D90,\n\t14953: 0x00008D92,\n\t14954: 0x00008DF0,\n\t14955: 0x00008DE0,\n\t14956: 0x00008DEC,\n\t14957: 0x00008DF1,\n\t14958: 0x00008DEE,\n\t14959: 0x00008DD0,\n\t14960: 0x00008DE9,\n\t14961: 0x00008DE3,\n\t14962: 0x00008DE2,\n\t14963: 0x00008DE7,\n\t14964: 0x00008DF2,\n\t14965: 0x00008DEB,\n\t14966: 0x00008DF4,\n\t14967: 0x00008F06,\n\t14968: 0x00008EFF,\n\t14969: 0x00008F01,\n\t14970: 0x00008F00,\n\t14971: 0x00008F05,\n\t14972: 0x00008F07,\n\t14973: 0x00008F08,\n\t14974: 0x00008F02,\n\t14975: 0x00008F0B,\n\t14976: 0x00009052,\n\t14977: 0x0000903F,\n\t14978: 0x00009044,\n\t14979: 0x00009049,\n\t14980: 0x0000903D,\n\t14981: 0x00009110,\n\t14982: 0x0000910D,\n\t14983: 0x0000910F,\n\t14984: 0x00009111,\n\t14985: 0x00009116,\n\t14986: 0x00009114,\n\t14987: 0x0000910B,\n\t14988: 0x0000910E,\n\t14989: 0x0000916E,\n\t14990: 0x0000916F,\n\t14991: 0x00009248,\n\t14992: 0x00009252,\n\t14993: 0x00009230,\n\t14994: 0x0000923A,\n\t14995: 0x00009266,\n\t14996: 0x00009233,\n\t14997: 0x00009265,\n\t14998: 0x0000925E,\n\t14999: 0x00009283,\n\t15000: 0x0000922E,\n\t15001: 0x0000924A,\n\t15002: 0x00009246,\n\t15003: 0x0000926D,\n\t15004: 0x0000926C,\n\t15005: 0x0000924F,\n\t15006: 0x00009260,\n\t15007: 0x00009267,\n\t15008: 0x0000926F,\n\t15009: 0x00009236,\n\t15010: 0x00009261,\n\t15011: 0x00009270,\n\t15012: 0x00009231,\n\t15013: 0x00009254,\n\t15014: 0x00009263,\n\t15015: 0x00009250,\n\t15016: 0x00009272,\n\t15017: 0x0000924E,\n\t15018: 0x00009253,\n\t15019: 0x0000924C,\n\t15020: 0x00009256,\n\t15021: 0x00009232,\n\t15022: 0x0000959F,\n\t15023: 0x0000959C,\n\t15024: 0x0000959E,\n\t15025: 0x0000959B,\n\t15026: 0x00009692,\n\t15027: 0x00009693,\n\t15028: 0x00009691,\n\t15029: 0x00009697,\n\t15030: 0x000096CE,\n\t15031: 0x000096FA,\n\t15032: 0x000096FD,\n\t15033: 0x000096F8,\n\t15034: 0x000096F5,\n\t15035: 0x00009773,\n\t15036: 0x00009777,\n\t15037: 0x00009778,\n\t15038: 0x00009772,\n\t15039: 0x0000980F,\n\t15040: 0x0000980D,\n\t15041: 0x0000980E,\n\t15042: 0x000098AC,\n\t15043: 0x000098F6,\n\t15044: 0x000098F9,\n\t15045: 0x000099AF,\n\t15046: 0x000099B2,\n\t15047: 0x000099B0,\n\t15048: 0x000099B5,\n\t15049: 0x00009AAD,\n\t15050: 0x00009AAB,\n\t15051: 0x00009B5B,\n\t15052: 0x00009CEA,\n\t15053: 0x00009CED,\n\t15054: 0x00009CE7,\n\t15055: 0x00009E80,\n\t15056: 0x00009EFD,\n\t15057: 0x000050E6,\n\t15058: 0x000050D4,\n\t15059: 0x000050D7,\n\t15060: 0x000050E8,\n\t15061: 0x000050F3,\n\t15062: 0x000050DB,\n\t15063: 0x000050EA,\n\t15064: 0x000050DD,\n\t15065: 0x000050E4,\n\t15066: 0x000050D3,\n\t15067: 0x000050EC,\n\t15068: 0x000050F0,\n\t15069: 0x000050EF,\n\t15070: 0x000050E3,\n\t15071: 0x000050E0,\n\t15072: 0x000051D8,\n\t15073: 0x00005280,\n\t15074: 0x00005281,\n\t15075: 0x000052E9,\n\t15076: 0x000052EB,\n\t15077: 0x00005330,\n\t15078: 0x000053AC,\n\t15079: 0x00005627,\n\t15080: 0x00005615,\n\t15081: 0x0000560C,\n\t15082: 0x00005612,\n\t15083: 0x000055FC,\n\t15084: 0x0000560F,\n\t15085: 0x0000561C,\n\t15086: 0x00005601,\n\t15087: 0x00005613,\n\t15088: 0x00005602,\n\t15089: 0x000055FA,\n\t15090: 0x0000561D,\n\t15091: 0x00005604,\n\t15092: 0x000055FF,\n\t15093: 0x000055F9,\n\t15094: 0x00005889,\n\t15095: 0x0000587C,\n\t15096: 0x00005890,\n\t15097: 0x00005898,\n\t15098: 0x00005886,\n\t15099: 0x00005881,\n\t15100: 0x0000587F,\n\t15101: 0x00005874,\n\t15102: 0x0000588B,\n\t15103: 0x0000587A,\n\t15104: 0x00005887,\n\t15105: 0x00005891,\n\t15106: 0x0000588E,\n\t15107: 0x00005876,\n\t15108: 0x00005882,\n\t15109: 0x00005888,\n\t15110: 0x0000587B,\n\t15111: 0x00005894,\n\t15112: 0x0000588F,\n\t15113: 0x000058FE,\n\t15114: 0x0000596B,\n\t15115: 0x00005ADC,\n\t15116: 0x00005AEE,\n\t15117: 0x00005AE5,\n\t15118: 0x00005AD5,\n\t15119: 0x00005AEA,\n\t15120: 0x00005ADA,\n\t15121: 0x00005AED,\n\t15122: 0x00005AEB,\n\t15123: 0x00005AF3,\n\t15124: 0x00005AE2,\n\t15125: 0x00005AE0,\n\t15126: 0x00005ADB,\n\t15127: 0x00005AEC,\n\t15128: 0x00005ADE,\n\t15129: 0x00005ADD,\n\t15130: 0x00005AD9,\n\t15131: 0x00005AE8,\n\t15132: 0x00005ADF,\n\t15133: 0x00005B77,\n\t15134: 0x00005BE0,\n\t15135: 0x00005BE3,\n\t15136: 0x00005C63,\n\t15137: 0x00005D82,\n\t15138: 0x00005D80,\n\t15139: 0x00005D7D,\n\t15140: 0x00005D86,\n\t15141: 0x00005D7A,\n\t15142: 0x00005D81,\n\t15143: 0x00005D77,\n\t15144: 0x00005D8A,\n\t15145: 0x00005D89,\n\t15146: 0x00005D88,\n\t15147: 0x00005D7E,\n\t15148: 0x00005D7C,\n\t15149: 0x00005D8D,\n\t15150: 0x00005D79,\n\t15151: 0x00005D7F,\n\t15152: 0x00005E58,\n\t15153: 0x00005E59,\n\t15154: 0x00005E53,\n\t15155: 0x00005ED8,\n\t15156: 0x00005ED1,\n\t15157: 0x00005ED7,\n\t15158: 0x00005ECE,\n\t15159: 0x00005EDC,\n\t15160: 0x00005ED5,\n\t15161: 0x00005ED9,\n\t15162: 0x00005ED2,\n\t15163: 0x00005ED4,\n\t15164: 0x00005F44,\n\t15165: 0x00005F43,\n\t15166: 0x00005F6F,\n\t15167: 0x00005FB6,\n\t15168: 0x0000612C,\n\t15169: 0x00006128,\n\t15170: 0x00006141,\n\t15171: 0x0000615E,\n\t15172: 0x00006171,\n\t15173: 0x00006173,\n\t15174: 0x00006152,\n\t15175: 0x00006153,\n\t15176: 0x00006172,\n\t15177: 0x0000616C,\n\t15178: 0x00006180,\n\t15179: 0x00006174,\n\t15180: 0x00006154,\n\t15181: 0x0000617A,\n\t15182: 0x0000615B,\n\t15183: 0x00006165,\n\t15184: 0x0000613B,\n\t15185: 0x0000616A,\n\t15186: 0x00006161,\n\t15187: 0x00006156,\n\t15188: 0x00006229,\n\t15189: 0x00006227,\n\t15190: 0x0000622B,\n\t15191: 0x0000642B,\n\t15192: 0x0000644D,\n\t15193: 0x0000645B,\n\t15194: 0x0000645D,\n\t15195: 0x00006474,\n\t15196: 0x00006476,\n\t15197: 0x00006472,\n\t15198: 0x00006473,\n\t15199: 0x0000647D,\n\t15200: 0x00006475,\n\t15201: 0x00006466,\n\t15202: 0x000064A6,\n\t15203: 0x0000644E,\n\t15204: 0x00006482,\n\t15205: 0x0000645E,\n\t15206: 0x0000645C,\n\t15207: 0x0000644B,\n\t15208: 0x00006453,\n\t15209: 0x00006460,\n\t15210: 0x00006450,\n\t15211: 0x0000647F,\n\t15212: 0x0000643F,\n\t15213: 0x0000646C,\n\t15214: 0x0000646B,\n\t15215: 0x00006459,\n\t15216: 0x00006465,\n\t15217: 0x00006477,\n\t15218: 0x00006573,\n\t15219: 0x000065A0,\n\t15220: 0x000066A1,\n\t15221: 0x000066A0,\n\t15222: 0x0000669F,\n\t15223: 0x00006705,\n\t15224: 0x00006704,\n\t15225: 0x00006722,\n\t15226: 0x000069B1,\n\t15227: 0x000069B6,\n\t15228: 0x000069C9,\n\t15229: 0x000069A0,\n\t15230: 0x000069CE,\n\t15231: 0x00006996,\n\t15232: 0x000069B0,\n\t15233: 0x000069AC,\n\t15234: 0x000069BC,\n\t15235: 0x00006991,\n\t15236: 0x00006999,\n\t15237: 0x0000698E,\n\t15238: 0x000069A7,\n\t15239: 0x0000698D,\n\t15240: 0x000069A9,\n\t15241: 0x000069BE,\n\t15242: 0x000069AF,\n\t15243: 0x000069BF,\n\t15244: 0x000069C4,\n\t15245: 0x000069BD,\n\t15246: 0x000069A4,\n\t15247: 0x000069D4,\n\t15248: 0x000069B9,\n\t15249: 0x000069CA,\n\t15250: 0x0000699A,\n\t15251: 0x000069CF,\n\t15252: 0x000069B3,\n\t15253: 0x00006993,\n\t15254: 0x000069AA,\n\t15255: 0x000069A1,\n\t15256: 0x0000699E,\n\t15257: 0x000069D9,\n\t15258: 0x00006997,\n\t15259: 0x00006990,\n\t15260: 0x000069C2,\n\t15261: 0x000069B5,\n\t15262: 0x000069A5,\n\t15263: 0x000069C6,\n\t15264: 0x00006B4A,\n\t15265: 0x00006B4D,\n\t15266: 0x00006B4B,\n\t15267: 0x00006B9E,\n\t15268: 0x00006B9F,\n\t15269: 0x00006BA0,\n\t15270: 0x00006BC3,\n\t15271: 0x00006BC4,\n\t15272: 0x00006BFE,\n\t15273: 0x00006ECE,\n\t15274: 0x00006EF5,\n\t15275: 0x00006EF1,\n\t15276: 0x00006F03,\n\t15277: 0x00006F25,\n\t15278: 0x00006EF8,\n\t15279: 0x00006F37,\n\t15280: 0x00006EFB,\n\t15281: 0x00006F2E,\n\t15282: 0x00006F09,\n\t15283: 0x00006F4E,\n\t15284: 0x00006F19,\n\t15285: 0x00006F1A,\n\t15286: 0x00006F27,\n\t15287: 0x00006F18,\n\t15288: 0x00006F3B,\n\t15289: 0x00006F12,\n\t15290: 0x00006EED,\n\t15291: 0x00006F0A,\n\t15292: 0x00006F36,\n\t15293: 0x00006F73,\n\t15294: 0x00006EF9,\n\t15295: 0x00006EEE,\n\t15296: 0x00006F2D,\n\t15297: 0x00006F40,\n\t15298: 0x00006F30,\n\t15299: 0x00006F3C,\n\t15300: 0x00006F35,\n\t15301: 0x00006EEB,\n\t15302: 0x00006F07,\n\t15303: 0x00006F0E,\n\t15304: 0x00006F43,\n\t15305: 0x00006F05,\n\t15306: 0x00006EFD,\n\t15307: 0x00006EF6,\n\t15308: 0x00006F39,\n\t15309: 0x00006F1C,\n\t15310: 0x00006EFC,\n\t15311: 0x00006F3A,\n\t15312: 0x00006F1F,\n\t15313: 0x00006F0D,\n\t15314: 0x00006F1E,\n\t15315: 0x00006F08,\n\t15316: 0x00006F21,\n\t15317: 0x00007187,\n\t15318: 0x00007190,\n\t15319: 0x00007189,\n\t15320: 0x00007180,\n\t15321: 0x00007185,\n\t15322: 0x00007182,\n\t15323: 0x0000718F,\n\t15324: 0x0000717B,\n\t15325: 0x00007186,\n\t15326: 0x00007181,\n\t15327: 0x00007197,\n\t15328: 0x00007244,\n\t15329: 0x00007253,\n\t15330: 0x00007297,\n\t15331: 0x00007295,\n\t15332: 0x00007293,\n\t15333: 0x00007343,\n\t15334: 0x0000734D,\n\t15335: 0x00007351,\n\t15336: 0x0000734C,\n\t15337: 0x00007462,\n\t15338: 0x00007473,\n\t15339: 0x00007471,\n\t15340: 0x00007475,\n\t15341: 0x00007472,\n\t15342: 0x00007467,\n\t15343: 0x0000746E,\n\t15344: 0x00007500,\n\t15345: 0x00007502,\n\t15346: 0x00007503,\n\t15347: 0x0000757D,\n\t15348: 0x00007590,\n\t15349: 0x00007616,\n\t15350: 0x00007608,\n\t15351: 0x0000760C,\n\t15352: 0x00007615,\n\t15353: 0x00007611,\n\t15354: 0x0000760A,\n\t15355: 0x00007614,\n\t15356: 0x000076B8,\n\t15357: 0x00007781,\n\t15358: 0x0000777C,\n\t15359: 0x00007785,\n\t15360: 0x00007782,\n\t15361: 0x0000776E,\n\t15362: 0x00007780,\n\t15363: 0x0000776F,\n\t15364: 0x0000777E,\n\t15365: 0x00007783,\n\t15366: 0x000078B2,\n\t15367: 0x000078AA,\n\t15368: 0x000078B4,\n\t15369: 0x000078AD,\n\t15370: 0x000078A8,\n\t15371: 0x0000787E,\n\t15372: 0x000078AB,\n\t15373: 0x0000789E,\n\t15374: 0x000078A5,\n\t15375: 0x000078A0,\n\t15376: 0x000078AC,\n\t15377: 0x000078A2,\n\t15378: 0x000078A4,\n\t15379: 0x00007998,\n\t15380: 0x0000798A,\n\t15381: 0x0000798B,\n\t15382: 0x00007996,\n\t15383: 0x00007995,\n\t15384: 0x00007994,\n\t15385: 0x00007993,\n\t15386: 0x00007997,\n\t15387: 0x00007988,\n\t15388: 0x00007992,\n\t15389: 0x00007990,\n\t15390: 0x00007A2B,\n\t15391: 0x00007A4A,\n\t15392: 0x00007A30,\n\t15393: 0x00007A2F,\n\t15394: 0x00007A28,\n\t15395: 0x00007A26,\n\t15396: 0x00007AA8,\n\t15397: 0x00007AAB,\n\t15398: 0x00007AAC,\n\t15399: 0x00007AEE,\n\t15400: 0x00007B88,\n\t15401: 0x00007B9C,\n\t15402: 0x00007B8A,\n\t15403: 0x00007B91,\n\t15404: 0x00007B90,\n\t15405: 0x00007B96,\n\t15406: 0x00007B8D,\n\t15407: 0x00007B8C,\n\t15408: 0x00007B9B,\n\t15409: 0x00007B8E,\n\t15410: 0x00007B85,\n\t15411: 0x00007B98,\n\t15412: 0x00005284,\n\t15413: 0x00007B99,\n\t15414: 0x00007BA4,\n\t15415: 0x00007B82,\n\t15416: 0x00007CBB,\n\t15417: 0x00007CBF,\n\t15418: 0x00007CBC,\n\t15419: 0x00007CBA,\n\t15420: 0x00007DA7,\n\t15421: 0x00007DB7,\n\t15422: 0x00007DC2,\n\t15423: 0x00007DA3,\n\t15424: 0x00007DAA,\n\t15425: 0x00007DC1,\n\t15426: 0x00007DC0,\n\t15427: 0x00007DC5,\n\t15428: 0x00007D9D,\n\t15429: 0x00007DCE,\n\t15430: 0x00007DC4,\n\t15431: 0x00007DC6,\n\t15432: 0x00007DCB,\n\t15433: 0x00007DCC,\n\t15434: 0x00007DAF,\n\t15435: 0x00007DB9,\n\t15436: 0x00007D96,\n\t15437: 0x00007DBC,\n\t15438: 0x00007D9F,\n\t15439: 0x00007DA6,\n\t15440: 0x00007DAE,\n\t15441: 0x00007DA9,\n\t15442: 0x00007DA1,\n\t15443: 0x00007DC9,\n\t15444: 0x00007F73,\n\t15445: 0x00007FE2,\n\t15446: 0x00007FE3,\n\t15447: 0x00007FE5,\n\t15448: 0x00007FDE,\n\t15449: 0x00008024,\n\t15450: 0x0000805D,\n\t15451: 0x0000805C,\n\t15452: 0x00008189,\n\t15453: 0x00008186,\n\t15454: 0x00008183,\n\t15455: 0x00008187,\n\t15456: 0x0000818D,\n\t15457: 0x0000818C,\n\t15458: 0x0000818B,\n\t15459: 0x00008215,\n\t15460: 0x00008497,\n\t15461: 0x000084A4,\n\t15462: 0x000084A1,\n\t15463: 0x0000849F,\n\t15464: 0x000084BA,\n\t15465: 0x000084CE,\n\t15466: 0x000084C2,\n\t15467: 0x000084AC,\n\t15468: 0x000084AE,\n\t15469: 0x000084AB,\n\t15470: 0x000084B9,\n\t15471: 0x000084B4,\n\t15472: 0x000084C1,\n\t15473: 0x000084CD,\n\t15474: 0x000084AA,\n\t15475: 0x0000849A,\n\t15476: 0x000084B1,\n\t15477: 0x000084D0,\n\t15478: 0x0000849D,\n\t15479: 0x000084A7,\n\t15480: 0x000084BB,\n\t15481: 0x000084A2,\n\t15482: 0x00008494,\n\t15483: 0x000084C7,\n\t15484: 0x000084CC,\n\t15485: 0x0000849B,\n\t15486: 0x000084A9,\n\t15487: 0x000084AF,\n\t15488: 0x000084A8,\n\t15489: 0x000084D6,\n\t15490: 0x00008498,\n\t15491: 0x000084B6,\n\t15492: 0x000084CF,\n\t15493: 0x000084A0,\n\t15494: 0x000084D7,\n\t15495: 0x000084D4,\n\t15496: 0x000084D2,\n\t15497: 0x000084DB,\n\t15498: 0x000084B0,\n\t15499: 0x00008491,\n\t15500: 0x00008661,\n\t15501: 0x00008733,\n\t15502: 0x00008723,\n\t15503: 0x00008728,\n\t15504: 0x0000876B,\n\t15505: 0x00008740,\n\t15506: 0x0000872E,\n\t15507: 0x0000871E,\n\t15508: 0x00008721,\n\t15509: 0x00008719,\n\t15510: 0x0000871B,\n\t15511: 0x00008743,\n\t15512: 0x0000872C,\n\t15513: 0x00008741,\n\t15514: 0x0000873E,\n\t15515: 0x00008746,\n\t15516: 0x00008720,\n\t15517: 0x00008732,\n\t15518: 0x0000872A,\n\t15519: 0x0000872D,\n\t15520: 0x0000873C,\n\t15521: 0x00008712,\n\t15522: 0x0000873A,\n\t15523: 0x00008731,\n\t15524: 0x00008735,\n\t15525: 0x00008742,\n\t15526: 0x00008726,\n\t15527: 0x00008727,\n\t15528: 0x00008738,\n\t15529: 0x00008724,\n\t15530: 0x0000871A,\n\t15531: 0x00008730,\n\t15532: 0x00008711,\n\t15533: 0x000088F7,\n\t15534: 0x000088E7,\n\t15535: 0x000088F1,\n\t15536: 0x000088F2,\n\t15537: 0x000088FA,\n\t15538: 0x000088FE,\n\t15539: 0x000088EE,\n\t15540: 0x000088FC,\n\t15541: 0x000088F6,\n\t15542: 0x000088FB,\n\t15543: 0x000088F0,\n\t15544: 0x000088EC,\n\t15545: 0x000088EB,\n\t15546: 0x0000899D,\n\t15547: 0x000089A1,\n\t15548: 0x0000899F,\n\t15549: 0x0000899E,\n\t15550: 0x000089E9,\n\t15551: 0x000089EB,\n\t15552: 0x000089E8,\n\t15553: 0x00008AAB,\n\t15554: 0x00008A99,\n\t15555: 0x00008A8B,\n\t15556: 0x00008A92,\n\t15557: 0x00008A8F,\n\t15558: 0x00008A96,\n\t15559: 0x00008C3D,\n\t15560: 0x00008C68,\n\t15561: 0x00008C69,\n\t15562: 0x00008CD5,\n\t15563: 0x00008CCF,\n\t15564: 0x00008CD7,\n\t15565: 0x00008D96,\n\t15566: 0x00008E09,\n\t15567: 0x00008E02,\n\t15568: 0x00008DFF,\n\t15569: 0x00008E0D,\n\t15570: 0x00008DFD,\n\t15571: 0x00008E0A,\n\t15572: 0x00008E03,\n\t15573: 0x00008E07,\n\t15574: 0x00008E06,\n\t15575: 0x00008E05,\n\t15576: 0x00008DFE,\n\t15577: 0x00008E00,\n\t15578: 0x00008E04,\n\t15579: 0x00008F10,\n\t15580: 0x00008F11,\n\t15581: 0x00008F0E,\n\t15582: 0x00008F0D,\n\t15583: 0x00009123,\n\t15584: 0x0000911C,\n\t15585: 0x00009120,\n\t15586: 0x00009122,\n\t15587: 0x0000911F,\n\t15588: 0x0000911D,\n\t15589: 0x0000911A,\n\t15590: 0x00009124,\n\t15591: 0x00009121,\n\t15592: 0x0000911B,\n\t15593: 0x0000917A,\n\t15594: 0x00009172,\n\t15595: 0x00009179,\n\t15596: 0x00009173,\n\t15597: 0x000092A5,\n\t15598: 0x000092A4,\n\t15599: 0x00009276,\n\t15600: 0x0000929B,\n\t15601: 0x0000927A,\n\t15602: 0x000092A0,\n\t15603: 0x00009294,\n\t15604: 0x000092AA,\n\t15605: 0x0000928D,\n\t15606: 0x000092A6,\n\t15607: 0x0000929A,\n\t15608: 0x000092AB,\n\t15609: 0x00009279,\n\t15610: 0x00009297,\n\t15611: 0x0000927F,\n\t15612: 0x000092A3,\n\t15613: 0x000092EE,\n\t15614: 0x0000928E,\n\t15615: 0x00009282,\n\t15616: 0x00009295,\n\t15617: 0x000092A2,\n\t15618: 0x0000927D,\n\t15619: 0x00009288,\n\t15620: 0x000092A1,\n\t15621: 0x0000928A,\n\t15622: 0x00009286,\n\t15623: 0x0000928C,\n\t15624: 0x00009299,\n\t15625: 0x000092A7,\n\t15626: 0x0000927E,\n\t15627: 0x00009287,\n\t15628: 0x000092A9,\n\t15629: 0x0000929D,\n\t15630: 0x0000928B,\n\t15631: 0x0000922D,\n\t15632: 0x0000969E,\n\t15633: 0x000096A1,\n\t15634: 0x000096FF,\n\t15635: 0x00009758,\n\t15636: 0x0000977D,\n\t15637: 0x0000977A,\n\t15638: 0x0000977E,\n\t15639: 0x00009783,\n\t15640: 0x00009780,\n\t15641: 0x00009782,\n\t15642: 0x0000977B,\n\t15643: 0x00009784,\n\t15644: 0x00009781,\n\t15645: 0x0000977F,\n\t15646: 0x000097CE,\n\t15647: 0x000097CD,\n\t15648: 0x00009816,\n\t15649: 0x000098AD,\n\t15650: 0x000098AE,\n\t15651: 0x00009902,\n\t15652: 0x00009900,\n\t15653: 0x00009907,\n\t15654: 0x0000999D,\n\t15655: 0x0000999C,\n\t15656: 0x000099C3,\n\t15657: 0x000099B9,\n\t15658: 0x000099BB,\n\t15659: 0x000099BA,\n\t15660: 0x000099C2,\n\t15661: 0x000099BD,\n\t15662: 0x000099C7,\n\t15663: 0x00009AB1,\n\t15664: 0x00009AE3,\n\t15665: 0x00009AE7,\n\t15666: 0x00009B3E,\n\t15667: 0x00009B3F,\n\t15668: 0x00009B60,\n\t15669: 0x00009B61,\n\t15670: 0x00009B5F,\n\t15671: 0x00009CF1,\n\t15672: 0x00009CF2,\n\t15673: 0x00009CF5,\n\t15674: 0x00009EA7,\n\t15675: 0x000050FF,\n\t15676: 0x00005103,\n\t15677: 0x00005130,\n\t15678: 0x000050F8,\n\t15679: 0x00005106,\n\t15680: 0x00005107,\n\t15681: 0x000050F6,\n\t15682: 0x000050FE,\n\t15683: 0x0000510B,\n\t15684: 0x0000510C,\n\t15685: 0x000050FD,\n\t15686: 0x0000510A,\n\t15687: 0x0000528B,\n\t15688: 0x0000528C,\n\t15689: 0x000052F1,\n\t15690: 0x000052EF,\n\t15691: 0x00005648,\n\t15692: 0x00005642,\n\t15693: 0x0000564C,\n\t15694: 0x00005635,\n\t15695: 0x00005641,\n\t15696: 0x0000564A,\n\t15697: 0x00005649,\n\t15698: 0x00005646,\n\t15699: 0x00005658,\n\t15700: 0x0000565A,\n\t15701: 0x00005640,\n\t15702: 0x00005633,\n\t15703: 0x0000563D,\n\t15704: 0x0000562C,\n\t15705: 0x0000563E,\n\t15706: 0x00005638,\n\t15707: 0x0000562A,\n\t15708: 0x0000563A,\n\t15709: 0x0000571A,\n\t15710: 0x000058AB,\n\t15711: 0x0000589D,\n\t15712: 0x000058B1,\n\t15713: 0x000058A0,\n\t15714: 0x000058A3,\n\t15715: 0x000058AF,\n\t15716: 0x000058AC,\n\t15717: 0x000058A5,\n\t15718: 0x000058A1,\n\t15719: 0x000058FF,\n\t15720: 0x00005AFF,\n\t15721: 0x00005AF4,\n\t15722: 0x00005AFD,\n\t15723: 0x00005AF7,\n\t15724: 0x00005AF6,\n\t15725: 0x00005B03,\n\t15726: 0x00005AF8,\n\t15727: 0x00005B02,\n\t15728: 0x00005AF9,\n\t15729: 0x00005B01,\n\t15730: 0x00005B07,\n\t15731: 0x00005B05,\n\t15732: 0x00005B0F,\n\t15733: 0x00005C67,\n\t15734: 0x00005D99,\n\t15735: 0x00005D97,\n\t15736: 0x00005D9F,\n\t15737: 0x00005D92,\n\t15738: 0x00005DA2,\n\t15739: 0x00005D93,\n\t15740: 0x00005D95,\n\t15741: 0x00005DA0,\n\t15742: 0x00005D9C,\n\t15743: 0x00005DA1,\n\t15744: 0x00005D9A,\n\t15745: 0x00005D9E,\n\t15746: 0x00005E69,\n\t15747: 0x00005E5D,\n\t15748: 0x00005E60,\n\t15749: 0x00005E5C,\n\t15750: 0x00007DF3,\n\t15751: 0x00005EDB,\n\t15752: 0x00005EDE,\n\t15753: 0x00005EE1,\n\t15754: 0x00005F49,\n\t15755: 0x00005FB2,\n\t15756: 0x0000618B,\n\t15757: 0x00006183,\n\t15758: 0x00006179,\n\t15759: 0x000061B1,\n\t15760: 0x000061B0,\n\t15761: 0x000061A2,\n\t15762: 0x00006189,\n\t15763: 0x0000619B,\n\t15764: 0x00006193,\n\t15765: 0x000061AF,\n\t15766: 0x000061AD,\n\t15767: 0x0000619F,\n\t15768: 0x00006192,\n\t15769: 0x000061AA,\n\t15770: 0x000061A1,\n\t15771: 0x0000618D,\n\t15772: 0x00006166,\n\t15773: 0x000061B3,\n\t15774: 0x0000622D,\n\t15775: 0x0000646E,\n\t15776: 0x00006470,\n\t15777: 0x00006496,\n\t15778: 0x000064A0,\n\t15779: 0x00006485,\n\t15780: 0x00006497,\n\t15781: 0x0000649C,\n\t15782: 0x0000648F,\n\t15783: 0x0000648B,\n\t15784: 0x0000648A,\n\t15785: 0x0000648C,\n\t15786: 0x000064A3,\n\t15787: 0x0000649F,\n\t15788: 0x00006468,\n\t15789: 0x000064B1,\n\t15790: 0x00006498,\n\t15791: 0x00006576,\n\t15792: 0x0000657A,\n\t15793: 0x00006579,\n\t15794: 0x0000657B,\n\t15795: 0x000065B2,\n\t15796: 0x000065B3,\n\t15797: 0x000066B5,\n\t15798: 0x000066B0,\n\t15799: 0x000066A9,\n\t15800: 0x000066B2,\n\t15801: 0x000066B7,\n\t15802: 0x000066AA,\n\t15803: 0x000066AF,\n\t15804: 0x00006A00,\n\t15805: 0x00006A06,\n\t15806: 0x00006A17,\n\t15807: 0x000069E5,\n\t15808: 0x000069F8,\n\t15809: 0x00006A15,\n\t15810: 0x000069F1,\n\t15811: 0x000069E4,\n\t15812: 0x00006A20,\n\t15813: 0x000069FF,\n\t15814: 0x000069EC,\n\t15815: 0x000069E2,\n\t15816: 0x00006A1B,\n\t15817: 0x00006A1D,\n\t15818: 0x000069FE,\n\t15819: 0x00006A27,\n\t15820: 0x000069F2,\n\t15821: 0x000069EE,\n\t15822: 0x00006A14,\n\t15823: 0x000069F7,\n\t15824: 0x000069E7,\n\t15825: 0x00006A40,\n\t15826: 0x00006A08,\n\t15827: 0x000069E6,\n\t15828: 0x000069FB,\n\t15829: 0x00006A0D,\n\t15830: 0x000069FC,\n\t15831: 0x000069EB,\n\t15832: 0x00006A09,\n\t15833: 0x00006A04,\n\t15834: 0x00006A18,\n\t15835: 0x00006A25,\n\t15836: 0x00006A0F,\n\t15837: 0x000069F6,\n\t15838: 0x00006A26,\n\t15839: 0x00006A07,\n\t15840: 0x000069F4,\n\t15841: 0x00006A16,\n\t15842: 0x00006B51,\n\t15843: 0x00006BA5,\n\t15844: 0x00006BA3,\n\t15845: 0x00006BA2,\n\t15846: 0x00006BA6,\n\t15847: 0x00006C01,\n\t15848: 0x00006C00,\n\t15849: 0x00006BFF,\n\t15850: 0x00006C02,\n\t15851: 0x00006F41,\n\t15852: 0x00006F26,\n\t15853: 0x00006F7E,\n\t15854: 0x00006F87,\n\t15855: 0x00006FC6,\n\t15856: 0x00006F92,\n\t15857: 0x00006F8D,\n\t15858: 0x00006F89,\n\t15859: 0x00006F8C,\n\t15860: 0x00006F62,\n\t15861: 0x00006F4F,\n\t15862: 0x00006F85,\n\t15863: 0x00006F5A,\n\t15864: 0x00006F96,\n\t15865: 0x00006F76,\n\t15866: 0x00006F6C,\n\t15867: 0x00006F82,\n\t15868: 0x00006F55,\n\t15869: 0x00006F72,\n\t15870: 0x00006F52,\n\t15871: 0x00006F50,\n\t15872: 0x00006F57,\n\t15873: 0x00006F94,\n\t15874: 0x00006F93,\n\t15875: 0x00006F5D,\n\t15876: 0x00006F00,\n\t15877: 0x00006F61,\n\t15878: 0x00006F6B,\n\t15879: 0x00006F7D,\n\t15880: 0x00006F67,\n\t15881: 0x00006F90,\n\t15882: 0x00006F53,\n\t15883: 0x00006F8B,\n\t15884: 0x00006F69,\n\t15885: 0x00006F7F,\n\t15886: 0x00006F95,\n\t15887: 0x00006F63,\n\t15888: 0x00006F77,\n\t15889: 0x00006F6A,\n\t15890: 0x00006F7B,\n\t15891: 0x000071B2,\n\t15892: 0x000071AF,\n\t15893: 0x0000719B,\n\t15894: 0x000071B0,\n\t15895: 0x000071A0,\n\t15896: 0x0000719A,\n\t15897: 0x000071A9,\n\t15898: 0x000071B5,\n\t15899: 0x0000719D,\n\t15900: 0x000071A5,\n\t15901: 0x0000719E,\n\t15902: 0x000071A4,\n\t15903: 0x000071A1,\n\t15904: 0x000071AA,\n\t15905: 0x0000719C,\n\t15906: 0x000071A7,\n\t15907: 0x000071B3,\n\t15908: 0x00007298,\n\t15909: 0x0000729A,\n\t15910: 0x00007358,\n\t15911: 0x00007352,\n\t15912: 0x0000735E,\n\t15913: 0x0000735F,\n\t15914: 0x00007360,\n\t15915: 0x0000735D,\n\t15916: 0x0000735B,\n\t15917: 0x00007361,\n\t15918: 0x0000735A,\n\t15919: 0x00007359,\n\t15920: 0x00007362,\n\t15921: 0x00007487,\n\t15922: 0x00007489,\n\t15923: 0x0000748A,\n\t15924: 0x00007486,\n\t15925: 0x00007481,\n\t15926: 0x0000747D,\n\t15927: 0x00007485,\n\t15928: 0x00007488,\n\t15929: 0x0000747C,\n\t15930: 0x00007479,\n\t15931: 0x00007508,\n\t15932: 0x00007507,\n\t15933: 0x0000757E,\n\t15934: 0x00007625,\n\t15935: 0x0000761E,\n\t15936: 0x00007619,\n\t15937: 0x0000761D,\n\t15938: 0x0000761C,\n\t15939: 0x00007623,\n\t15940: 0x0000761A,\n\t15941: 0x00007628,\n\t15942: 0x0000761B,\n\t15943: 0x0000769C,\n\t15944: 0x0000769D,\n\t15945: 0x0000769E,\n\t15946: 0x0000769B,\n\t15947: 0x0000778D,\n\t15948: 0x0000778F,\n\t15949: 0x00007789,\n\t15950: 0x00007788,\n\t15951: 0x000078CD,\n\t15952: 0x000078BB,\n\t15953: 0x000078CF,\n\t15954: 0x000078CC,\n\t15955: 0x000078D1,\n\t15956: 0x000078CE,\n\t15957: 0x000078D4,\n\t15958: 0x000078C8,\n\t15959: 0x000078C3,\n\t15960: 0x000078C4,\n\t15961: 0x000078C9,\n\t15962: 0x0000799A,\n\t15963: 0x000079A1,\n\t15964: 0x000079A0,\n\t15965: 0x0000799C,\n\t15966: 0x000079A2,\n\t15967: 0x0000799B,\n\t15968: 0x00006B76,\n\t15969: 0x00007A39,\n\t15970: 0x00007AB2,\n\t15971: 0x00007AB4,\n\t15972: 0x00007AB3,\n\t15973: 0x00007BB7,\n\t15974: 0x00007BCB,\n\t15975: 0x00007BBE,\n\t15976: 0x00007BAC,\n\t15977: 0x00007BCE,\n\t15978: 0x00007BAF,\n\t15979: 0x00007BB9,\n\t15980: 0x00007BCA,\n\t15981: 0x00007BB5,\n\t15982: 0x00007CC5,\n\t15983: 0x00007CC8,\n\t15984: 0x00007CCC,\n\t15985: 0x00007CCB,\n\t15986: 0x00007DF7,\n\t15987: 0x00007DDB,\n\t15988: 0x00007DEA,\n\t15989: 0x00007DE7,\n\t15990: 0x00007DD7,\n\t15991: 0x00007DE1,\n\t15992: 0x00007E03,\n\t15993: 0x00007DFA,\n\t15994: 0x00007DE6,\n\t15995: 0x00007DF6,\n\t15996: 0x00007DF1,\n\t15997: 0x00007DF0,\n\t15998: 0x00007DEE,\n\t15999: 0x00007DDF,\n\t16000: 0x00007F76,\n\t16001: 0x00007FAC,\n\t16002: 0x00007FB0,\n\t16003: 0x00007FAD,\n\t16004: 0x00007FED,\n\t16005: 0x00007FEB,\n\t16006: 0x00007FEA,\n\t16007: 0x00007FEC,\n\t16008: 0x00007FE6,\n\t16009: 0x00007FE8,\n\t16010: 0x00008064,\n\t16011: 0x00008067,\n\t16012: 0x000081A3,\n\t16013: 0x0000819F,\n\t16014: 0x0000819E,\n\t16015: 0x00008195,\n\t16016: 0x000081A2,\n\t16017: 0x00008199,\n\t16018: 0x00008197,\n\t16019: 0x00008216,\n\t16020: 0x0000824F,\n\t16021: 0x00008253,\n\t16022: 0x00008252,\n\t16023: 0x00008250,\n\t16024: 0x0000824E,\n\t16025: 0x00008251,\n\t16026: 0x00008524,\n\t16027: 0x0000853B,\n\t16028: 0x0000850F,\n\t16029: 0x00008500,\n\t16030: 0x00008529,\n\t16031: 0x0000850E,\n\t16032: 0x00008509,\n\t16033: 0x0000850D,\n\t16034: 0x0000851F,\n\t16035: 0x0000850A,\n\t16036: 0x00008527,\n\t16037: 0x0000851C,\n\t16038: 0x000084FB,\n\t16039: 0x0000852B,\n\t16040: 0x000084FA,\n\t16041: 0x00008508,\n\t16042: 0x0000850C,\n\t16043: 0x000084F4,\n\t16044: 0x0000852A,\n\t16045: 0x000084F2,\n\t16046: 0x00008515,\n\t16047: 0x000084F7,\n\t16048: 0x000084EB,\n\t16049: 0x000084F3,\n\t16050: 0x000084FC,\n\t16051: 0x00008512,\n\t16052: 0x000084EA,\n\t16053: 0x000084E9,\n\t16054: 0x00008516,\n\t16055: 0x000084FE,\n\t16056: 0x00008528,\n\t16057: 0x0000851D,\n\t16058: 0x0000852E,\n\t16059: 0x00008502,\n\t16060: 0x000084FD,\n\t16061: 0x0000851E,\n\t16062: 0x000084F6,\n\t16063: 0x00008531,\n\t16064: 0x00008526,\n\t16065: 0x000084E7,\n\t16066: 0x000084E8,\n\t16067: 0x000084F0,\n\t16068: 0x000084EF,\n\t16069: 0x000084F9,\n\t16070: 0x00008518,\n\t16071: 0x00008520,\n\t16072: 0x00008530,\n\t16073: 0x0000850B,\n\t16074: 0x00008519,\n\t16075: 0x0000852F,\n\t16076: 0x00008662,\n\t16077: 0x00008756,\n\t16078: 0x00008763,\n\t16079: 0x00008764,\n\t16080: 0x00008777,\n\t16081: 0x000087E1,\n\t16082: 0x00008773,\n\t16083: 0x00008758,\n\t16084: 0x00008754,\n\t16085: 0x0000875B,\n\t16086: 0x00008752,\n\t16087: 0x00008761,\n\t16088: 0x0000875A,\n\t16089: 0x00008751,\n\t16090: 0x0000875E,\n\t16091: 0x0000876D,\n\t16092: 0x0000876A,\n\t16093: 0x00008750,\n\t16094: 0x0000874E,\n\t16095: 0x0000875F,\n\t16096: 0x0000875D,\n\t16097: 0x0000876F,\n\t16098: 0x0000876C,\n\t16099: 0x0000877A,\n\t16100: 0x0000876E,\n\t16101: 0x0000875C,\n\t16102: 0x00008765,\n\t16103: 0x0000874F,\n\t16104: 0x0000877B,\n\t16105: 0x00008775,\n\t16106: 0x00008762,\n\t16107: 0x00008767,\n\t16108: 0x00008769,\n\t16109: 0x0000885A,\n\t16110: 0x00008905,\n\t16111: 0x0000890C,\n\t16112: 0x00008914,\n\t16113: 0x0000890B,\n\t16114: 0x00008917,\n\t16115: 0x00008918,\n\t16116: 0x00008919,\n\t16117: 0x00008906,\n\t16118: 0x00008916,\n\t16119: 0x00008911,\n\t16120: 0x0000890E,\n\t16121: 0x00008909,\n\t16122: 0x000089A2,\n\t16123: 0x000089A4,\n\t16124: 0x000089A3,\n\t16125: 0x000089ED,\n\t16126: 0x000089F0,\n\t16127: 0x000089EC,\n\t16128: 0x00008ACF,\n\t16129: 0x00008AC6,\n\t16130: 0x00008AB8,\n\t16131: 0x00008AD3,\n\t16132: 0x00008AD1,\n\t16133: 0x00008AD4,\n\t16134: 0x00008AD5,\n\t16135: 0x00008ABB,\n\t16136: 0x00008AD7,\n\t16137: 0x00008ABE,\n\t16138: 0x00008AC0,\n\t16139: 0x00008AC5,\n\t16140: 0x00008AD8,\n\t16141: 0x00008AC3,\n\t16142: 0x00008ABA,\n\t16143: 0x00008ABD,\n\t16144: 0x00008AD9,\n\t16145: 0x00008C3E,\n\t16146: 0x00008C4D,\n\t16147: 0x00008C8F,\n\t16148: 0x00008CE5,\n\t16149: 0x00008CDF,\n\t16150: 0x00008CD9,\n\t16151: 0x00008CE8,\n\t16152: 0x00008CDA,\n\t16153: 0x00008CDD,\n\t16154: 0x00008CE7,\n\t16155: 0x00008DA0,\n\t16156: 0x00008D9C,\n\t16157: 0x00008DA1,\n\t16158: 0x00008D9B,\n\t16159: 0x00008E20,\n\t16160: 0x00008E23,\n\t16161: 0x00008E25,\n\t16162: 0x00008E24,\n\t16163: 0x00008E2E,\n\t16164: 0x00008E15,\n\t16165: 0x00008E1B,\n\t16166: 0x00008E16,\n\t16167: 0x00008E11,\n\t16168: 0x00008E19,\n\t16169: 0x00008E26,\n\t16170: 0x00008E27,\n\t16171: 0x00008E14,\n\t16172: 0x00008E12,\n\t16173: 0x00008E18,\n\t16174: 0x00008E13,\n\t16175: 0x00008E1C,\n\t16176: 0x00008E17,\n\t16177: 0x00008E1A,\n\t16178: 0x00008F2C,\n\t16179: 0x00008F24,\n\t16180: 0x00008F18,\n\t16181: 0x00008F1A,\n\t16182: 0x00008F20,\n\t16183: 0x00008F23,\n\t16184: 0x00008F16,\n\t16185: 0x00008F17,\n\t16186: 0x00009073,\n\t16187: 0x00009070,\n\t16188: 0x0000906F,\n\t16189: 0x00009067,\n\t16190: 0x0000906B,\n\t16191: 0x0000912F,\n\t16192: 0x0000912B,\n\t16193: 0x00009129,\n\t16194: 0x0000912A,\n\t16195: 0x00009132,\n\t16196: 0x00009126,\n\t16197: 0x0000912E,\n\t16198: 0x00009185,\n\t16199: 0x00009186,\n\t16200: 0x0000918A,\n\t16201: 0x00009181,\n\t16202: 0x00009182,\n\t16203: 0x00009184,\n\t16204: 0x00009180,\n\t16205: 0x000092D0,\n\t16206: 0x000092C3,\n\t16207: 0x000092C4,\n\t16208: 0x000092C0,\n\t16209: 0x000092D9,\n\t16210: 0x000092B6,\n\t16211: 0x000092CF,\n\t16212: 0x000092F1,\n\t16213: 0x000092DF,\n\t16214: 0x000092D8,\n\t16215: 0x000092E9,\n\t16216: 0x000092D7,\n\t16217: 0x000092DD,\n\t16218: 0x000092CC,\n\t16219: 0x000092EF,\n\t16220: 0x000092C2,\n\t16221: 0x000092E8,\n\t16222: 0x000092CA,\n\t16223: 0x000092C8,\n\t16224: 0x000092CE,\n\t16225: 0x000092E6,\n\t16226: 0x000092CD,\n\t16227: 0x000092D5,\n\t16228: 0x000092C9,\n\t16229: 0x000092E0,\n\t16230: 0x000092DE,\n\t16231: 0x000092E7,\n\t16232: 0x000092D1,\n\t16233: 0x000092D3,\n\t16234: 0x000092B5,\n\t16235: 0x000092E1,\n\t16236: 0x000092C6,\n\t16237: 0x000092B4,\n\t16238: 0x0000957C,\n\t16239: 0x000095AC,\n\t16240: 0x000095AB,\n\t16241: 0x000095AE,\n\t16242: 0x000095B0,\n\t16243: 0x000096A4,\n\t16244: 0x000096A2,\n\t16245: 0x000096D3,\n\t16246: 0x00009705,\n\t16247: 0x00009708,\n\t16248: 0x00009702,\n\t16249: 0x0000975A,\n\t16250: 0x0000978A,\n\t16251: 0x0000978E,\n\t16252: 0x00009788,\n\t16253: 0x000097D0,\n\t16254: 0x000097CF,\n\t16255: 0x0000981E,\n\t16256: 0x0000981D,\n\t16257: 0x00009826,\n\t16258: 0x00009829,\n\t16259: 0x00009828,\n\t16260: 0x00009820,\n\t16261: 0x0000981B,\n\t16262: 0x00009827,\n\t16263: 0x000098B2,\n\t16264: 0x00009908,\n\t16265: 0x000098FA,\n\t16266: 0x00009911,\n\t16267: 0x00009914,\n\t16268: 0x00009916,\n\t16269: 0x00009917,\n\t16270: 0x00009915,\n\t16271: 0x000099DC,\n\t16272: 0x000099CD,\n\t16273: 0x000099CF,\n\t16274: 0x000099D3,\n\t16275: 0x000099D4,\n\t16276: 0x000099CE,\n\t16277: 0x000099C9,\n\t16278: 0x000099D6,\n\t16279: 0x000099D8,\n\t16280: 0x000099CB,\n\t16281: 0x000099D7,\n\t16282: 0x000099CC,\n\t16283: 0x00009AB3,\n\t16284: 0x00009AEC,\n\t16285: 0x00009AEB,\n\t16286: 0x00009AF3,\n\t16287: 0x00009AF2,\n\t16288: 0x00009AF1,\n\t16289: 0x00009B46,\n\t16290: 0x00009B43,\n\t16291: 0x00009B67,\n\t16292: 0x00009B74,\n\t16293: 0x00009B71,\n\t16294: 0x00009B66,\n\t16295: 0x00009B76,\n\t16296: 0x00009B75,\n\t16297: 0x00009B70,\n\t16298: 0x00009B68,\n\t16299: 0x00009B64,\n\t16300: 0x00009B6C,\n\t16301: 0x00009CFC,\n\t16302: 0x00009CFA,\n\t16303: 0x00009CFD,\n\t16304: 0x00009CFF,\n\t16305: 0x00009CF7,\n\t16306: 0x00009D07,\n\t16307: 0x00009D00,\n\t16308: 0x00009CF9,\n\t16309: 0x00009CFB,\n\t16310: 0x00009D08,\n\t16311: 0x00009D05,\n\t16312: 0x00009D04,\n\t16313: 0x00009E83,\n\t16314: 0x00009ED3,\n\t16315: 0x00009F0F,\n\t16316: 0x00009F10,\n\t16317: 0x0000511C,\n\t16318: 0x00005113,\n\t16319: 0x00005117,\n\t16320: 0x0000511A,\n\t16321: 0x00005111,\n\t16322: 0x000051DE,\n\t16323: 0x00005334,\n\t16324: 0x000053E1,\n\t16325: 0x00005670,\n\t16326: 0x00005660,\n\t16327: 0x0000566E,\n\t16328: 0x00005673,\n\t16329: 0x00005666,\n\t16330: 0x00005663,\n\t16331: 0x0000566D,\n\t16332: 0x00005672,\n\t16333: 0x0000565E,\n\t16334: 0x00005677,\n\t16335: 0x0000571C,\n\t16336: 0x0000571B,\n\t16337: 0x000058C8,\n\t16338: 0x000058BD,\n\t16339: 0x000058C9,\n\t16340: 0x000058BF,\n\t16341: 0x000058BA,\n\t16342: 0x000058C2,\n\t16343: 0x000058BC,\n\t16344: 0x000058C6,\n\t16345: 0x00005B17,\n\t16346: 0x00005B19,\n\t16347: 0x00005B1B,\n\t16348: 0x00005B21,\n\t16349: 0x00005B14,\n\t16350: 0x00005B13,\n\t16351: 0x00005B10,\n\t16352: 0x00005B16,\n\t16353: 0x00005B28,\n\t16354: 0x00005B1A,\n\t16355: 0x00005B20,\n\t16356: 0x00005B1E,\n\t16357: 0x00005BEF,\n\t16358: 0x00005DAC,\n\t16359: 0x00005DB1,\n\t16360: 0x00005DA9,\n\t16361: 0x00005DA7,\n\t16362: 0x00005DB5,\n\t16363: 0x00005DB0,\n\t16364: 0x00005DAE,\n\t16365: 0x00005DAA,\n\t16366: 0x00005DA8,\n\t16367: 0x00005DB2,\n\t16368: 0x00005DAD,\n\t16369: 0x00005DAF,\n\t16370: 0x00005DB4,\n\t16371: 0x00005E67,\n\t16372: 0x00005E68,\n\t16373: 0x00005E66,\n\t16374: 0x00005E6F,\n\t16375: 0x00005EE9,\n\t16376: 0x00005EE7,\n\t16377: 0x00005EE6,\n\t16378: 0x00005EE8,\n\t16379: 0x00005EE5,\n\t16380: 0x00005F4B,\n\t16381: 0x00005FBC,\n\t16382: 0x0000619D,\n\t16383: 0x000061A8,\n\t16384: 0x00006196,\n\t16385: 0x000061C5,\n\t16386: 0x000061B4,\n\t16387: 0x000061C6,\n\t16388: 0x000061C1,\n\t16389: 0x000061CC,\n\t16390: 0x000061BA,\n\t16391: 0x000061BF,\n\t16392: 0x000061B8,\n\t16393: 0x0000618C,\n\t16394: 0x000064D7,\n\t16395: 0x000064D6,\n\t16396: 0x000064D0,\n\t16397: 0x000064CF,\n\t16398: 0x000064C9,\n\t16399: 0x000064BD,\n\t16400: 0x00006489,\n\t16401: 0x000064C3,\n\t16402: 0x000064DB,\n\t16403: 0x000064F3,\n\t16404: 0x000064D9,\n\t16405: 0x00006533,\n\t16406: 0x0000657F,\n\t16407: 0x0000657C,\n\t16408: 0x000065A2,\n\t16409: 0x000066C8,\n\t16410: 0x000066BE,\n\t16411: 0x000066C0,\n\t16412: 0x000066CA,\n\t16413: 0x000066CB,\n\t16414: 0x000066CF,\n\t16415: 0x000066BD,\n\t16416: 0x000066BB,\n\t16417: 0x000066BA,\n\t16418: 0x000066CC,\n\t16419: 0x00006723,\n\t16420: 0x00006A34,\n\t16421: 0x00006A66,\n\t16422: 0x00006A49,\n\t16423: 0x00006A67,\n\t16424: 0x00006A32,\n\t16425: 0x00006A68,\n\t16426: 0x00006A3E,\n\t16427: 0x00006A5D,\n\t16428: 0x00006A6D,\n\t16429: 0x00006A76,\n\t16430: 0x00006A5B,\n\t16431: 0x00006A51,\n\t16432: 0x00006A28,\n\t16433: 0x00006A5A,\n\t16434: 0x00006A3B,\n\t16435: 0x00006A3F,\n\t16436: 0x00006A41,\n\t16437: 0x00006A6A,\n\t16438: 0x00006A64,\n\t16439: 0x00006A50,\n\t16440: 0x00006A4F,\n\t16441: 0x00006A54,\n\t16442: 0x00006A6F,\n\t16443: 0x00006A69,\n\t16444: 0x00006A60,\n\t16445: 0x00006A3C,\n\t16446: 0x00006A5E,\n\t16447: 0x00006A56,\n\t16448: 0x00006A55,\n\t16449: 0x00006A4D,\n\t16450: 0x00006A4E,\n\t16451: 0x00006A46,\n\t16452: 0x00006B55,\n\t16453: 0x00006B54,\n\t16454: 0x00006B56,\n\t16455: 0x00006BA7,\n\t16456: 0x00006BAA,\n\t16457: 0x00006BAB,\n\t16458: 0x00006BC8,\n\t16459: 0x00006BC7,\n\t16460: 0x00006C04,\n\t16461: 0x00006C03,\n\t16462: 0x00006C06,\n\t16463: 0x00006FAD,\n\t16464: 0x00006FCB,\n\t16465: 0x00006FA3,\n\t16466: 0x00006FC7,\n\t16467: 0x00006FBC,\n\t16468: 0x00006FCE,\n\t16469: 0x00006FC8,\n\t16470: 0x00006F5E,\n\t16471: 0x00006FC4,\n\t16472: 0x00006FBD,\n\t16473: 0x00006F9E,\n\t16474: 0x00006FCA,\n\t16475: 0x00006FA8,\n\t16476: 0x00007004,\n\t16477: 0x00006FA5,\n\t16478: 0x00006FAE,\n\t16479: 0x00006FBA,\n\t16480: 0x00006FAC,\n\t16481: 0x00006FAA,\n\t16482: 0x00006FCF,\n\t16483: 0x00006FBF,\n\t16484: 0x00006FB8,\n\t16485: 0x00006FA2,\n\t16486: 0x00006FC9,\n\t16487: 0x00006FAB,\n\t16488: 0x00006FCD,\n\t16489: 0x00006FAF,\n\t16490: 0x00006FB2,\n\t16491: 0x00006FB0,\n\t16492: 0x000071C5,\n\t16493: 0x000071C2,\n\t16494: 0x000071BF,\n\t16495: 0x000071B8,\n\t16496: 0x000071D6,\n\t16497: 0x000071C0,\n\t16498: 0x000071C1,\n\t16499: 0x000071CB,\n\t16500: 0x000071D4,\n\t16501: 0x000071CA,\n\t16502: 0x000071C7,\n\t16503: 0x000071CF,\n\t16504: 0x000071BD,\n\t16505: 0x000071D8,\n\t16506: 0x000071BC,\n\t16507: 0x000071C6,\n\t16508: 0x000071DA,\n\t16509: 0x000071DB,\n\t16510: 0x0000729D,\n\t16511: 0x0000729E,\n\t16512: 0x00007369,\n\t16513: 0x00007366,\n\t16514: 0x00007367,\n\t16515: 0x0000736C,\n\t16516: 0x00007365,\n\t16517: 0x0000736B,\n\t16518: 0x0000736A,\n\t16519: 0x0000747F,\n\t16520: 0x0000749A,\n\t16521: 0x000074A0,\n\t16522: 0x00007494,\n\t16523: 0x00007492,\n\t16524: 0x00007495,\n\t16525: 0x000074A1,\n\t16526: 0x0000750B,\n\t16527: 0x00007580,\n\t16528: 0x0000762F,\n\t16529: 0x0000762D,\n\t16530: 0x00007631,\n\t16531: 0x0000763D,\n\t16532: 0x00007633,\n\t16533: 0x0000763C,\n\t16534: 0x00007635,\n\t16535: 0x00007632,\n\t16536: 0x00007630,\n\t16537: 0x000076BB,\n\t16538: 0x000076E6,\n\t16539: 0x0000779A,\n\t16540: 0x0000779D,\n\t16541: 0x000077A1,\n\t16542: 0x0000779C,\n\t16543: 0x0000779B,\n\t16544: 0x000077A2,\n\t16545: 0x000077A3,\n\t16546: 0x00007795,\n\t16547: 0x00007799,\n\t16548: 0x00007797,\n\t16549: 0x000078DD,\n\t16550: 0x000078E9,\n\t16551: 0x000078E5,\n\t16552: 0x000078EA,\n\t16553: 0x000078DE,\n\t16554: 0x000078E3,\n\t16555: 0x000078DB,\n\t16556: 0x000078E1,\n\t16557: 0x000078E2,\n\t16558: 0x000078ED,\n\t16559: 0x000078DF,\n\t16560: 0x000078E0,\n\t16561: 0x000079A4,\n\t16562: 0x00007A44,\n\t16563: 0x00007A48,\n\t16564: 0x00007A47,\n\t16565: 0x00007AB6,\n\t16566: 0x00007AB8,\n\t16567: 0x00007AB5,\n\t16568: 0x00007AB1,\n\t16569: 0x00007AB7,\n\t16570: 0x00007BDE,\n\t16571: 0x00007BE3,\n\t16572: 0x00007BE7,\n\t16573: 0x00007BDD,\n\t16574: 0x00007BD5,\n\t16575: 0x00007BE5,\n\t16576: 0x00007BDA,\n\t16577: 0x00007BE8,\n\t16578: 0x00007BF9,\n\t16579: 0x00007BD4,\n\t16580: 0x00007BEA,\n\t16581: 0x00007BE2,\n\t16582: 0x00007BDC,\n\t16583: 0x00007BEB,\n\t16584: 0x00007BD8,\n\t16585: 0x00007BDF,\n\t16586: 0x00007CD2,\n\t16587: 0x00007CD4,\n\t16588: 0x00007CD7,\n\t16589: 0x00007CD0,\n\t16590: 0x00007CD1,\n\t16591: 0x00007E12,\n\t16592: 0x00007E21,\n\t16593: 0x00007E17,\n\t16594: 0x00007E0C,\n\t16595: 0x00007E1F,\n\t16596: 0x00007E20,\n\t16597: 0x00007E13,\n\t16598: 0x00007E0E,\n\t16599: 0x00007E1C,\n\t16600: 0x00007E15,\n\t16601: 0x00007E1A,\n\t16602: 0x00007E22,\n\t16603: 0x00007E0B,\n\t16604: 0x00007E0F,\n\t16605: 0x00007E16,\n\t16606: 0x00007E0D,\n\t16607: 0x00007E14,\n\t16608: 0x00007E25,\n\t16609: 0x00007E24,\n\t16610: 0x00007F43,\n\t16611: 0x00007F7B,\n\t16612: 0x00007F7C,\n\t16613: 0x00007F7A,\n\t16614: 0x00007FB1,\n\t16615: 0x00007FEF,\n\t16616: 0x0000802A,\n\t16617: 0x00008029,\n\t16618: 0x0000806C,\n\t16619: 0x000081B1,\n\t16620: 0x000081A6,\n\t16621: 0x000081AE,\n\t16622: 0x000081B9,\n\t16623: 0x000081B5,\n\t16624: 0x000081AB,\n\t16625: 0x000081B0,\n\t16626: 0x000081AC,\n\t16627: 0x000081B4,\n\t16628: 0x000081B2,\n\t16629: 0x000081B7,\n\t16630: 0x000081A7,\n\t16631: 0x000081F2,\n\t16632: 0x00008255,\n\t16633: 0x00008256,\n\t16634: 0x00008257,\n\t16635: 0x00008556,\n\t16636: 0x00008545,\n\t16637: 0x0000856B,\n\t16638: 0x0000854D,\n\t16639: 0x00008553,\n\t16640: 0x00008561,\n\t16641: 0x00008558,\n\t16642: 0x00008540,\n\t16643: 0x00008546,\n\t16644: 0x00008564,\n\t16645: 0x00008541,\n\t16646: 0x00008562,\n\t16647: 0x00008544,\n\t16648: 0x00008551,\n\t16649: 0x00008547,\n\t16650: 0x00008563,\n\t16651: 0x0000853E,\n\t16652: 0x0000855B,\n\t16653: 0x00008571,\n\t16654: 0x0000854E,\n\t16655: 0x0000856E,\n\t16656: 0x00008575,\n\t16657: 0x00008555,\n\t16658: 0x00008567,\n\t16659: 0x00008560,\n\t16660: 0x0000858C,\n\t16661: 0x00008566,\n\t16662: 0x0000855D,\n\t16663: 0x00008554,\n\t16664: 0x00008565,\n\t16665: 0x0000856C,\n\t16666: 0x00008663,\n\t16667: 0x00008665,\n\t16668: 0x00008664,\n\t16669: 0x0000879B,\n\t16670: 0x0000878F,\n\t16671: 0x00008797,\n\t16672: 0x00008793,\n\t16673: 0x00008792,\n\t16674: 0x00008788,\n\t16675: 0x00008781,\n\t16676: 0x00008796,\n\t16677: 0x00008798,\n\t16678: 0x00008779,\n\t16679: 0x00008787,\n\t16680: 0x000087A3,\n\t16681: 0x00008785,\n\t16682: 0x00008790,\n\t16683: 0x00008791,\n\t16684: 0x0000879D,\n\t16685: 0x00008784,\n\t16686: 0x00008794,\n\t16687: 0x0000879C,\n\t16688: 0x0000879A,\n\t16689: 0x00008789,\n\t16690: 0x0000891E,\n\t16691: 0x00008926,\n\t16692: 0x00008930,\n\t16693: 0x0000892D,\n\t16694: 0x0000892E,\n\t16695: 0x00008927,\n\t16696: 0x00008931,\n\t16697: 0x00008922,\n\t16698: 0x00008929,\n\t16699: 0x00008923,\n\t16700: 0x0000892F,\n\t16701: 0x0000892C,\n\t16702: 0x0000891F,\n\t16703: 0x000089F1,\n\t16704: 0x00008AE0,\n\t16705: 0x00008AE2,\n\t16706: 0x00008AF2,\n\t16707: 0x00008AF4,\n\t16708: 0x00008AF5,\n\t16709: 0x00008ADD,\n\t16710: 0x00008B14,\n\t16711: 0x00008AE4,\n\t16712: 0x00008ADF,\n\t16713: 0x00008AF0,\n\t16714: 0x00008AC8,\n\t16715: 0x00008ADE,\n\t16716: 0x00008AE1,\n\t16717: 0x00008AE8,\n\t16718: 0x00008AFF,\n\t16719: 0x00008AEF,\n\t16720: 0x00008AFB,\n\t16721: 0x00008C91,\n\t16722: 0x00008C92,\n\t16723: 0x00008C90,\n\t16724: 0x00008CF5,\n\t16725: 0x00008CEE,\n\t16726: 0x00008CF1,\n\t16727: 0x00008CF0,\n\t16728: 0x00008CF3,\n\t16729: 0x00008D6C,\n\t16730: 0x00008D6E,\n\t16731: 0x00008DA5,\n\t16732: 0x00008DA7,\n\t16733: 0x00008E33,\n\t16734: 0x00008E3E,\n\t16735: 0x00008E38,\n\t16736: 0x00008E40,\n\t16737: 0x00008E45,\n\t16738: 0x00008E36,\n\t16739: 0x00008E3C,\n\t16740: 0x00008E3D,\n\t16741: 0x00008E41,\n\t16742: 0x00008E30,\n\t16743: 0x00008E3F,\n\t16744: 0x00008EBD,\n\t16745: 0x00008F36,\n\t16746: 0x00008F2E,\n\t16747: 0x00008F35,\n\t16748: 0x00008F32,\n\t16749: 0x00008F39,\n\t16750: 0x00008F37,\n\t16751: 0x00008F34,\n\t16752: 0x00009076,\n\t16753: 0x00009079,\n\t16754: 0x0000907B,\n\t16755: 0x00009086,\n\t16756: 0x000090FA,\n\t16757: 0x00009133,\n\t16758: 0x00009135,\n\t16759: 0x00009136,\n\t16760: 0x00009193,\n\t16761: 0x00009190,\n\t16762: 0x00009191,\n\t16763: 0x0000918D,\n\t16764: 0x0000918F,\n\t16765: 0x00009327,\n\t16766: 0x0000931E,\n\t16767: 0x00009308,\n\t16768: 0x0000931F,\n\t16769: 0x00009306,\n\t16770: 0x0000930F,\n\t16771: 0x0000937A,\n\t16772: 0x00009338,\n\t16773: 0x0000933C,\n\t16774: 0x0000931B,\n\t16775: 0x00009323,\n\t16776: 0x00009312,\n\t16777: 0x00009301,\n\t16778: 0x00009346,\n\t16779: 0x0000932D,\n\t16780: 0x0000930E,\n\t16781: 0x0000930D,\n\t16782: 0x000092CB,\n\t16783: 0x0000931D,\n\t16784: 0x000092FA,\n\t16785: 0x00009325,\n\t16786: 0x00009313,\n\t16787: 0x000092F9,\n\t16788: 0x000092F7,\n\t16789: 0x00009334,\n\t16790: 0x00009302,\n\t16791: 0x00009324,\n\t16792: 0x000092FF,\n\t16793: 0x00009329,\n\t16794: 0x00009339,\n\t16795: 0x00009335,\n\t16796: 0x0000932A,\n\t16797: 0x00009314,\n\t16798: 0x0000930C,\n\t16799: 0x0000930B,\n\t16800: 0x000092FE,\n\t16801: 0x00009309,\n\t16802: 0x00009300,\n\t16803: 0x000092FB,\n\t16804: 0x00009316,\n\t16805: 0x000095BC,\n\t16806: 0x000095CD,\n\t16807: 0x000095BE,\n\t16808: 0x000095B9,\n\t16809: 0x000095BA,\n\t16810: 0x000095B6,\n\t16811: 0x000095BF,\n\t16812: 0x000095B5,\n\t16813: 0x000095BD,\n\t16814: 0x000096A9,\n\t16815: 0x000096D4,\n\t16816: 0x0000970B,\n\t16817: 0x00009712,\n\t16818: 0x00009710,\n\t16819: 0x00009799,\n\t16820: 0x00009797,\n\t16821: 0x00009794,\n\t16822: 0x000097F0,\n\t16823: 0x000097F8,\n\t16824: 0x00009835,\n\t16825: 0x0000982F,\n\t16826: 0x00009832,\n\t16827: 0x00009924,\n\t16828: 0x0000991F,\n\t16829: 0x00009927,\n\t16830: 0x00009929,\n\t16831: 0x0000999E,\n\t16832: 0x000099EE,\n\t16833: 0x000099EC,\n\t16834: 0x000099E5,\n\t16835: 0x000099E4,\n\t16836: 0x000099F0,\n\t16837: 0x000099E3,\n\t16838: 0x000099EA,\n\t16839: 0x000099E9,\n\t16840: 0x000099E7,\n\t16841: 0x00009AB9,\n\t16842: 0x00009ABF,\n\t16843: 0x00009AB4,\n\t16844: 0x00009ABB,\n\t16845: 0x00009AF6,\n\t16846: 0x00009AFA,\n\t16847: 0x00009AF9,\n\t16848: 0x00009AF7,\n\t16849: 0x00009B33,\n\t16850: 0x00009B80,\n\t16851: 0x00009B85,\n\t16852: 0x00009B87,\n\t16853: 0x00009B7C,\n\t16854: 0x00009B7E,\n\t16855: 0x00009B7B,\n\t16856: 0x00009B82,\n\t16857: 0x00009B93,\n\t16858: 0x00009B92,\n\t16859: 0x00009B90,\n\t16860: 0x00009B7A,\n\t16861: 0x00009B95,\n\t16862: 0x00009B7D,\n\t16863: 0x00009B88,\n\t16864: 0x00009D25,\n\t16865: 0x00009D17,\n\t16866: 0x00009D20,\n\t16867: 0x00009D1E,\n\t16868: 0x00009D14,\n\t16869: 0x00009D29,\n\t16870: 0x00009D1D,\n\t16871: 0x00009D18,\n\t16872: 0x00009D22,\n\t16873: 0x00009D10,\n\t16874: 0x00009D19,\n\t16875: 0x00009D1F,\n\t16876: 0x00009E88,\n\t16877: 0x00009E86,\n\t16878: 0x00009E87,\n\t16879: 0x00009EAE,\n\t16880: 0x00009EAD,\n\t16881: 0x00009ED5,\n\t16882: 0x00009ED6,\n\t16883: 0x00009EFA,\n\t16884: 0x00009F12,\n\t16885: 0x00009F3D,\n\t16886: 0x00005126,\n\t16887: 0x00005125,\n\t16888: 0x00005122,\n\t16889: 0x00005124,\n\t16890: 0x00005120,\n\t16891: 0x00005129,\n\t16892: 0x000052F4,\n\t16893: 0x00005693,\n\t16894: 0x0000568C,\n\t16895: 0x0000568D,\n\t16896: 0x00005686,\n\t16897: 0x00005684,\n\t16898: 0x00005683,\n\t16899: 0x0000567E,\n\t16900: 0x00005682,\n\t16901: 0x0000567F,\n\t16902: 0x00005681,\n\t16903: 0x000058D6,\n\t16904: 0x000058D4,\n\t16905: 0x000058CF,\n\t16906: 0x000058D2,\n\t16907: 0x00005B2D,\n\t16908: 0x00005B25,\n\t16909: 0x00005B32,\n\t16910: 0x00005B23,\n\t16911: 0x00005B2C,\n\t16912: 0x00005B27,\n\t16913: 0x00005B26,\n\t16914: 0x00005B2F,\n\t16915: 0x00005B2E,\n\t16916: 0x00005B7B,\n\t16917: 0x00005BF1,\n\t16918: 0x00005BF2,\n\t16919: 0x00005DB7,\n\t16920: 0x00005E6C,\n\t16921: 0x00005E6A,\n\t16922: 0x00005FBE,\n\t16923: 0x00005FBB,\n\t16924: 0x000061C3,\n\t16925: 0x000061B5,\n\t16926: 0x000061BC,\n\t16927: 0x000061E7,\n\t16928: 0x000061E0,\n\t16929: 0x000061E5,\n\t16930: 0x000061E4,\n\t16931: 0x000061E8,\n\t16932: 0x000061DE,\n\t16933: 0x000064EF,\n\t16934: 0x000064E9,\n\t16935: 0x000064E3,\n\t16936: 0x000064EB,\n\t16937: 0x000064E4,\n\t16938: 0x000064E8,\n\t16939: 0x00006581,\n\t16940: 0x00006580,\n\t16941: 0x000065B6,\n\t16942: 0x000065DA,\n\t16943: 0x000066D2,\n\t16944: 0x00006A8D,\n\t16945: 0x00006A96,\n\t16946: 0x00006A81,\n\t16947: 0x00006AA5,\n\t16948: 0x00006A89,\n\t16949: 0x00006A9F,\n\t16950: 0x00006A9B,\n\t16951: 0x00006AA1,\n\t16952: 0x00006A9E,\n\t16953: 0x00006A87,\n\t16954: 0x00006A93,\n\t16955: 0x00006A8E,\n\t16956: 0x00006A95,\n\t16957: 0x00006A83,\n\t16958: 0x00006AA8,\n\t16959: 0x00006AA4,\n\t16960: 0x00006A91,\n\t16961: 0x00006A7F,\n\t16962: 0x00006AA6,\n\t16963: 0x00006A9A,\n\t16964: 0x00006A85,\n\t16965: 0x00006A8C,\n\t16966: 0x00006A92,\n\t16967: 0x00006B5B,\n\t16968: 0x00006BAD,\n\t16969: 0x00006C09,\n\t16970: 0x00006FCC,\n\t16971: 0x00006FA9,\n\t16972: 0x00006FF4,\n\t16973: 0x00006FD4,\n\t16974: 0x00006FE3,\n\t16975: 0x00006FDC,\n\t16976: 0x00006FED,\n\t16977: 0x00006FE7,\n\t16978: 0x00006FE6,\n\t16979: 0x00006FDE,\n\t16980: 0x00006FF2,\n\t16981: 0x00006FDD,\n\t16982: 0x00006FE2,\n\t16983: 0x00006FE8,\n\t16984: 0x000071E1,\n\t16985: 0x000071F1,\n\t16986: 0x000071E8,\n\t16987: 0x000071F2,\n\t16988: 0x000071E4,\n\t16989: 0x000071F0,\n\t16990: 0x000071E2,\n\t16991: 0x00007373,\n\t16992: 0x0000736E,\n\t16993: 0x0000736F,\n\t16994: 0x00007497,\n\t16995: 0x000074B2,\n\t16996: 0x000074AB,\n\t16997: 0x00007490,\n\t16998: 0x000074AA,\n\t16999: 0x000074AD,\n\t17000: 0x000074B1,\n\t17001: 0x000074A5,\n\t17002: 0x000074AF,\n\t17003: 0x00007510,\n\t17004: 0x00007511,\n\t17005: 0x00007512,\n\t17006: 0x0000750F,\n\t17007: 0x00007584,\n\t17008: 0x00007643,\n\t17009: 0x00007648,\n\t17010: 0x00007649,\n\t17011: 0x00007647,\n\t17012: 0x000076A4,\n\t17013: 0x000076E9,\n\t17014: 0x000077B5,\n\t17015: 0x000077AB,\n\t17016: 0x000077B2,\n\t17017: 0x000077B7,\n\t17018: 0x000077B6,\n\t17019: 0x000077B4,\n\t17020: 0x000077B1,\n\t17021: 0x000077A8,\n\t17022: 0x000077F0,\n\t17023: 0x000078F3,\n\t17024: 0x000078FD,\n\t17025: 0x00007902,\n\t17026: 0x000078FB,\n\t17027: 0x000078FC,\n\t17028: 0x000078F2,\n\t17029: 0x00007905,\n\t17030: 0x000078F9,\n\t17031: 0x000078FE,\n\t17032: 0x00007904,\n\t17033: 0x000079AB,\n\t17034: 0x000079A8,\n\t17035: 0x00007A5C,\n\t17036: 0x00007A5B,\n\t17037: 0x00007A56,\n\t17038: 0x00007A58,\n\t17039: 0x00007A54,\n\t17040: 0x00007A5A,\n\t17041: 0x00007ABE,\n\t17042: 0x00007AC0,\n\t17043: 0x00007AC1,\n\t17044: 0x00007C05,\n\t17045: 0x00007C0F,\n\t17046: 0x00007BF2,\n\t17047: 0x00007C00,\n\t17048: 0x00007BFF,\n\t17049: 0x00007BFB,\n\t17050: 0x00007C0E,\n\t17051: 0x00007BF4,\n\t17052: 0x00007C0B,\n\t17053: 0x00007BF3,\n\t17054: 0x00007C02,\n\t17055: 0x00007C09,\n\t17056: 0x00007C03,\n\t17057: 0x00007C01,\n\t17058: 0x00007BF8,\n\t17059: 0x00007BFD,\n\t17060: 0x00007C06,\n\t17061: 0x00007BF0,\n\t17062: 0x00007BF1,\n\t17063: 0x00007C10,\n\t17064: 0x00007C0A,\n\t17065: 0x00007CE8,\n\t17066: 0x00007E2D,\n\t17067: 0x00007E3C,\n\t17068: 0x00007E42,\n\t17069: 0x00007E33,\n\t17070: 0x00009848,\n\t17071: 0x00007E38,\n\t17072: 0x00007E2A,\n\t17073: 0x00007E49,\n\t17074: 0x00007E40,\n\t17075: 0x00007E47,\n\t17076: 0x00007E29,\n\t17077: 0x00007E4C,\n\t17078: 0x00007E30,\n\t17079: 0x00007E3B,\n\t17080: 0x00007E36,\n\t17081: 0x00007E44,\n\t17082: 0x00007E3A,\n\t17083: 0x00007F45,\n\t17084: 0x00007F7F,\n\t17085: 0x00007F7E,\n\t17086: 0x00007F7D,\n\t17087: 0x00007FF4,\n\t17088: 0x00007FF2,\n\t17089: 0x0000802C,\n\t17090: 0x000081BB,\n\t17091: 0x000081C4,\n\t17092: 0x000081CC,\n\t17093: 0x000081CA,\n\t17094: 0x000081C5,\n\t17095: 0x000081C7,\n\t17096: 0x000081BC,\n\t17097: 0x000081E9,\n\t17098: 0x0000825B,\n\t17099: 0x0000825A,\n\t17100: 0x0000825C,\n\t17101: 0x00008583,\n\t17102: 0x00008580,\n\t17103: 0x0000858F,\n\t17104: 0x000085A7,\n\t17105: 0x00008595,\n\t17106: 0x000085A0,\n\t17107: 0x0000858B,\n\t17108: 0x000085A3,\n\t17109: 0x0000857B,\n\t17110: 0x000085A4,\n\t17111: 0x0000859A,\n\t17112: 0x0000859E,\n\t17113: 0x00008577,\n\t17114: 0x0000857C,\n\t17115: 0x00008589,\n\t17116: 0x000085A1,\n\t17117: 0x0000857A,\n\t17118: 0x00008578,\n\t17119: 0x00008557,\n\t17120: 0x0000858E,\n\t17121: 0x00008596,\n\t17122: 0x00008586,\n\t17123: 0x0000858D,\n\t17124: 0x00008599,\n\t17125: 0x0000859D,\n\t17126: 0x00008581,\n\t17127: 0x000085A2,\n\t17128: 0x00008582,\n\t17129: 0x00008588,\n\t17130: 0x00008585,\n\t17131: 0x00008579,\n\t17132: 0x00008576,\n\t17133: 0x00008598,\n\t17134: 0x00008590,\n\t17135: 0x0000859F,\n\t17136: 0x00008668,\n\t17137: 0x000087BE,\n\t17138: 0x000087AA,\n\t17139: 0x000087AD,\n\t17140: 0x000087C5,\n\t17141: 0x000087B0,\n\t17142: 0x000087AC,\n\t17143: 0x000087B9,\n\t17144: 0x000087B5,\n\t17145: 0x000087BC,\n\t17146: 0x000087AE,\n\t17147: 0x000087C9,\n\t17148: 0x000087C3,\n\t17149: 0x000087C2,\n\t17150: 0x000087CC,\n\t17151: 0x000087B7,\n\t17152: 0x000087AF,\n\t17153: 0x000087C4,\n\t17154: 0x000087CA,\n\t17155: 0x000087B4,\n\t17156: 0x000087B6,\n\t17157: 0x000087BF,\n\t17158: 0x000087B8,\n\t17159: 0x000087BD,\n\t17160: 0x000087DE,\n\t17161: 0x000087B2,\n\t17162: 0x00008935,\n\t17163: 0x00008933,\n\t17164: 0x0000893C,\n\t17165: 0x0000893E,\n\t17166: 0x00008941,\n\t17167: 0x00008952,\n\t17168: 0x00008937,\n\t17169: 0x00008942,\n\t17170: 0x000089AD,\n\t17171: 0x000089AF,\n\t17172: 0x000089AE,\n\t17173: 0x000089F2,\n\t17174: 0x000089F3,\n\t17175: 0x00008B1E,\n\t17176: 0x00008B18,\n\t17177: 0x00008B16,\n\t17178: 0x00008B11,\n\t17179: 0x00008B05,\n\t17180: 0x00008B0B,\n\t17181: 0x00008B22,\n\t17182: 0x00008B0F,\n\t17183: 0x00008B12,\n\t17184: 0x00008B15,\n\t17185: 0x00008B07,\n\t17186: 0x00008B0D,\n\t17187: 0x00008B08,\n\t17188: 0x00008B06,\n\t17189: 0x00008B1C,\n\t17190: 0x00008B13,\n\t17191: 0x00008B1A,\n\t17192: 0x00008C4F,\n\t17193: 0x00008C70,\n\t17194: 0x00008C72,\n\t17195: 0x00008C71,\n\t17196: 0x00008C6F,\n\t17197: 0x00008C95,\n\t17198: 0x00008C94,\n\t17199: 0x00008CF9,\n\t17200: 0x00008D6F,\n\t17201: 0x00008E4E,\n\t17202: 0x00008E4D,\n\t17203: 0x00008E53,\n\t17204: 0x00008E50,\n\t17205: 0x00008E4C,\n\t17206: 0x00008E47,\n\t17207: 0x00008F43,\n\t17208: 0x00008F40,\n\t17209: 0x00009085,\n\t17210: 0x0000907E,\n\t17211: 0x00009138,\n\t17212: 0x0000919A,\n\t17213: 0x000091A2,\n\t17214: 0x0000919B,\n\t17215: 0x00009199,\n\t17216: 0x0000919F,\n\t17217: 0x000091A1,\n\t17218: 0x0000919D,\n\t17219: 0x000091A0,\n\t17220: 0x000093A1,\n\t17221: 0x00009383,\n\t17222: 0x000093AF,\n\t17223: 0x00009364,\n\t17224: 0x00009356,\n\t17225: 0x00009347,\n\t17226: 0x0000937C,\n\t17227: 0x00009358,\n\t17228: 0x0000935C,\n\t17229: 0x00009376,\n\t17230: 0x00009349,\n\t17231: 0x00009350,\n\t17232: 0x00009351,\n\t17233: 0x00009360,\n\t17234: 0x0000936D,\n\t17235: 0x0000938F,\n\t17236: 0x0000934C,\n\t17237: 0x0000936A,\n\t17238: 0x00009379,\n\t17239: 0x00009357,\n\t17240: 0x00009355,\n\t17241: 0x00009352,\n\t17242: 0x0000934F,\n\t17243: 0x00009371,\n\t17244: 0x00009377,\n\t17245: 0x0000937B,\n\t17246: 0x00009361,\n\t17247: 0x0000935E,\n\t17248: 0x00009363,\n\t17249: 0x00009367,\n\t17250: 0x00009380,\n\t17251: 0x0000934E,\n\t17252: 0x00009359,\n\t17253: 0x000095C7,\n\t17254: 0x000095C0,\n\t17255: 0x000095C9,\n\t17256: 0x000095C3,\n\t17257: 0x000095C5,\n\t17258: 0x000095B7,\n\t17259: 0x000096AE,\n\t17260: 0x000096B0,\n\t17261: 0x000096AC,\n\t17262: 0x00009720,\n\t17263: 0x0000971F,\n\t17264: 0x00009718,\n\t17265: 0x0000971D,\n\t17266: 0x00009719,\n\t17267: 0x0000979A,\n\t17268: 0x000097A1,\n\t17269: 0x0000979C,\n\t17270: 0x0000979E,\n\t17271: 0x0000979D,\n\t17272: 0x000097D5,\n\t17273: 0x000097D4,\n\t17274: 0x000097F1,\n\t17275: 0x00009841,\n\t17276: 0x00009844,\n\t17277: 0x0000984A,\n\t17278: 0x00009849,\n\t17279: 0x00009845,\n\t17280: 0x00009843,\n\t17281: 0x00009925,\n\t17282: 0x0000992B,\n\t17283: 0x0000992C,\n\t17284: 0x0000992A,\n\t17285: 0x00009933,\n\t17286: 0x00009932,\n\t17287: 0x0000992F,\n\t17288: 0x0000992D,\n\t17289: 0x00009931,\n\t17290: 0x00009930,\n\t17291: 0x00009998,\n\t17292: 0x000099A3,\n\t17293: 0x000099A1,\n\t17294: 0x00009A02,\n\t17295: 0x000099FA,\n\t17296: 0x000099F4,\n\t17297: 0x000099F7,\n\t17298: 0x000099F9,\n\t17299: 0x000099F8,\n\t17300: 0x000099F6,\n\t17301: 0x000099FB,\n\t17302: 0x000099FD,\n\t17303: 0x000099FE,\n\t17304: 0x000099FC,\n\t17305: 0x00009A03,\n\t17306: 0x00009ABE,\n\t17307: 0x00009AFE,\n\t17308: 0x00009AFD,\n\t17309: 0x00009B01,\n\t17310: 0x00009AFC,\n\t17311: 0x00009B48,\n\t17312: 0x00009B9A,\n\t17313: 0x00009BA8,\n\t17314: 0x00009B9E,\n\t17315: 0x00009B9B,\n\t17316: 0x00009BA6,\n\t17317: 0x00009BA1,\n\t17318: 0x00009BA5,\n\t17319: 0x00009BA4,\n\t17320: 0x00009B86,\n\t17321: 0x00009BA2,\n\t17322: 0x00009BA0,\n\t17323: 0x00009BAF,\n\t17324: 0x00009D33,\n\t17325: 0x00009D41,\n\t17326: 0x00009D67,\n\t17327: 0x00009D36,\n\t17328: 0x00009D2E,\n\t17329: 0x00009D2F,\n\t17330: 0x00009D31,\n\t17331: 0x00009D38,\n\t17332: 0x00009D30,\n\t17333: 0x00009D45,\n\t17334: 0x00009D42,\n\t17335: 0x00009D43,\n\t17336: 0x00009D3E,\n\t17337: 0x00009D37,\n\t17338: 0x00009D40,\n\t17339: 0x00009D3D,\n\t17340: 0x00007FF5,\n\t17341: 0x00009D2D,\n\t17342: 0x00009E8A,\n\t17343: 0x00009E89,\n\t17344: 0x00009E8D,\n\t17345: 0x00009EB0,\n\t17346: 0x00009EC8,\n\t17347: 0x00009EDA,\n\t17348: 0x00009EFB,\n\t17349: 0x00009EFF,\n\t17350: 0x00009F24,\n\t17351: 0x00009F23,\n\t17352: 0x00009F22,\n\t17353: 0x00009F54,\n\t17354: 0x00009FA0,\n\t17355: 0x00005131,\n\t17356: 0x0000512D,\n\t17357: 0x0000512E,\n\t17358: 0x00005698,\n\t17359: 0x0000569C,\n\t17360: 0x00005697,\n\t17361: 0x0000569A,\n\t17362: 0x0000569D,\n\t17363: 0x00005699,\n\t17364: 0x00005970,\n\t17365: 0x00005B3C,\n\t17366: 0x00005C69,\n\t17367: 0x00005C6A,\n\t17368: 0x00005DC0,\n\t17369: 0x00005E6D,\n\t17370: 0x00005E6E,\n\t17371: 0x000061D8,\n\t17372: 0x000061DF,\n\t17373: 0x000061ED,\n\t17374: 0x000061EE,\n\t17375: 0x000061F1,\n\t17376: 0x000061EA,\n\t17377: 0x000061F0,\n\t17378: 0x000061EB,\n\t17379: 0x000061D6,\n\t17380: 0x000061E9,\n\t17381: 0x000064FF,\n\t17382: 0x00006504,\n\t17383: 0x000064FD,\n\t17384: 0x000064F8,\n\t17385: 0x00006501,\n\t17386: 0x00006503,\n\t17387: 0x000064FC,\n\t17388: 0x00006594,\n\t17389: 0x000065DB,\n\t17390: 0x000066DA,\n\t17391: 0x000066DB,\n\t17392: 0x000066D8,\n\t17393: 0x00006AC5,\n\t17394: 0x00006AB9,\n\t17395: 0x00006ABD,\n\t17396: 0x00006AE1,\n\t17397: 0x00006AC6,\n\t17398: 0x00006ABA,\n\t17399: 0x00006AB6,\n\t17400: 0x00006AB7,\n\t17401: 0x00006AC7,\n\t17402: 0x00006AB4,\n\t17403: 0x00006AAD,\n\t17404: 0x00006B5E,\n\t17405: 0x00006BC9,\n\t17406: 0x00006C0B,\n\t17407: 0x00007007,\n\t17408: 0x0000700C,\n\t17409: 0x0000700D,\n\t17410: 0x00007001,\n\t17411: 0x00007005,\n\t17412: 0x00007014,\n\t17413: 0x0000700E,\n\t17414: 0x00006FFF,\n\t17415: 0x00007000,\n\t17416: 0x00006FFB,\n\t17417: 0x00007026,\n\t17418: 0x00006FFC,\n\t17419: 0x00006FF7,\n\t17420: 0x0000700A,\n\t17421: 0x00007201,\n\t17422: 0x000071FF,\n\t17423: 0x000071F9,\n\t17424: 0x00007203,\n\t17425: 0x000071FD,\n\t17426: 0x00007376,\n\t17427: 0x000074B8,\n\t17428: 0x000074C0,\n\t17429: 0x000074B5,\n\t17430: 0x000074C1,\n\t17431: 0x000074BE,\n\t17432: 0x000074B6,\n\t17433: 0x000074BB,\n\t17434: 0x000074C2,\n\t17435: 0x00007514,\n\t17436: 0x00007513,\n\t17437: 0x0000765C,\n\t17438: 0x00007664,\n\t17439: 0x00007659,\n\t17440: 0x00007650,\n\t17441: 0x00007653,\n\t17442: 0x00007657,\n\t17443: 0x0000765A,\n\t17444: 0x000076A6,\n\t17445: 0x000076BD,\n\t17446: 0x000076EC,\n\t17447: 0x000077C2,\n\t17448: 0x000077BA,\n\t17449: 0x000078FF,\n\t17450: 0x0000790C,\n\t17451: 0x00007913,\n\t17452: 0x00007914,\n\t17453: 0x00007909,\n\t17454: 0x00007910,\n\t17455: 0x00007912,\n\t17456: 0x00007911,\n\t17457: 0x000079AD,\n\t17458: 0x000079AC,\n\t17459: 0x00007A5F,\n\t17460: 0x00007C1C,\n\t17461: 0x00007C29,\n\t17462: 0x00007C19,\n\t17463: 0x00007C20,\n\t17464: 0x00007C1F,\n\t17465: 0x00007C2D,\n\t17466: 0x00007C1D,\n\t17467: 0x00007C26,\n\t17468: 0x00007C28,\n\t17469: 0x00007C22,\n\t17470: 0x00007C25,\n\t17471: 0x00007C30,\n\t17472: 0x00007E5C,\n\t17473: 0x00007E50,\n\t17474: 0x00007E56,\n\t17475: 0x00007E63,\n\t17476: 0x00007E58,\n\t17477: 0x00007E62,\n\t17478: 0x00007E5F,\n\t17479: 0x00007E51,\n\t17480: 0x00007E60,\n\t17481: 0x00007E57,\n\t17482: 0x00007E53,\n\t17483: 0x00007FB5,\n\t17484: 0x00007FB3,\n\t17485: 0x00007FF7,\n\t17486: 0x00007FF8,\n\t17487: 0x00008075,\n\t17488: 0x000081D1,\n\t17489: 0x000081D2,\n\t17490: 0x000081D0,\n\t17491: 0x0000825F,\n\t17492: 0x0000825E,\n\t17493: 0x000085B4,\n\t17494: 0x000085C6,\n\t17495: 0x000085C0,\n\t17496: 0x000085C3,\n\t17497: 0x000085C2,\n\t17498: 0x000085B3,\n\t17499: 0x000085B5,\n\t17500: 0x000085BD,\n\t17501: 0x000085C7,\n\t17502: 0x000085C4,\n\t17503: 0x000085BF,\n\t17504: 0x000085CB,\n\t17505: 0x000085CE,\n\t17506: 0x000085C8,\n\t17507: 0x000085C5,\n\t17508: 0x000085B1,\n\t17509: 0x000085B6,\n\t17510: 0x000085D2,\n\t17511: 0x00008624,\n\t17512: 0x000085B8,\n\t17513: 0x000085B7,\n\t17514: 0x000085BE,\n\t17515: 0x00008669,\n\t17516: 0x000087E7,\n\t17517: 0x000087E6,\n\t17518: 0x000087E2,\n\t17519: 0x000087DB,\n\t17520: 0x000087EB,\n\t17521: 0x000087EA,\n\t17522: 0x000087E5,\n\t17523: 0x000087DF,\n\t17524: 0x000087F3,\n\t17525: 0x000087E4,\n\t17526: 0x000087D4,\n\t17527: 0x000087DC,\n\t17528: 0x000087D3,\n\t17529: 0x000087ED,\n\t17530: 0x000087D8,\n\t17531: 0x000087E3,\n\t17532: 0x000087A4,\n\t17533: 0x000087D7,\n\t17534: 0x000087D9,\n\t17535: 0x00008801,\n\t17536: 0x000087F4,\n\t17537: 0x000087E8,\n\t17538: 0x000087DD,\n\t17539: 0x00008953,\n\t17540: 0x0000894B,\n\t17541: 0x0000894F,\n\t17542: 0x0000894C,\n\t17543: 0x00008946,\n\t17544: 0x00008950,\n\t17545: 0x00008951,\n\t17546: 0x00008949,\n\t17547: 0x00008B2A,\n\t17548: 0x00008B27,\n\t17549: 0x00008B23,\n\t17550: 0x00008B33,\n\t17551: 0x00008B30,\n\t17552: 0x00008B35,\n\t17553: 0x00008B47,\n\t17554: 0x00008B2F,\n\t17555: 0x00008B3C,\n\t17556: 0x00008B3E,\n\t17557: 0x00008B31,\n\t17558: 0x00008B25,\n\t17559: 0x00008B37,\n\t17560: 0x00008B26,\n\t17561: 0x00008B36,\n\t17562: 0x00008B2E,\n\t17563: 0x00008B24,\n\t17564: 0x00008B3B,\n\t17565: 0x00008B3D,\n\t17566: 0x00008B3A,\n\t17567: 0x00008C42,\n\t17568: 0x00008C75,\n\t17569: 0x00008C99,\n\t17570: 0x00008C98,\n\t17571: 0x00008C97,\n\t17572: 0x00008CFE,\n\t17573: 0x00008D04,\n\t17574: 0x00008D02,\n\t17575: 0x00008D00,\n\t17576: 0x00008E5C,\n\t17577: 0x00008E62,\n\t17578: 0x00008E60,\n\t17579: 0x00008E57,\n\t17580: 0x00008E56,\n\t17581: 0x00008E5E,\n\t17582: 0x00008E65,\n\t17583: 0x00008E67,\n\t17584: 0x00008E5B,\n\t17585: 0x00008E5A,\n\t17586: 0x00008E61,\n\t17587: 0x00008E5D,\n\t17588: 0x00008E69,\n\t17589: 0x00008E54,\n\t17590: 0x00008F46,\n\t17591: 0x00008F47,\n\t17592: 0x00008F48,\n\t17593: 0x00008F4B,\n\t17594: 0x00009128,\n\t17595: 0x0000913A,\n\t17596: 0x0000913B,\n\t17597: 0x0000913E,\n\t17598: 0x000091A8,\n\t17599: 0x000091A5,\n\t17600: 0x000091A7,\n\t17601: 0x000091AF,\n\t17602: 0x000091AA,\n\t17603: 0x000093B5,\n\t17604: 0x0000938C,\n\t17605: 0x00009392,\n\t17606: 0x000093B7,\n\t17607: 0x0000939B,\n\t17608: 0x0000939D,\n\t17609: 0x00009389,\n\t17610: 0x000093A7,\n\t17611: 0x0000938E,\n\t17612: 0x000093AA,\n\t17613: 0x0000939E,\n\t17614: 0x000093A6,\n\t17615: 0x00009395,\n\t17616: 0x00009388,\n\t17617: 0x00009399,\n\t17618: 0x0000939F,\n\t17619: 0x0000938D,\n\t17620: 0x000093B1,\n\t17621: 0x00009391,\n\t17622: 0x000093B2,\n\t17623: 0x000093A4,\n\t17624: 0x000093A8,\n\t17625: 0x000093B4,\n\t17626: 0x000093A3,\n\t17627: 0x000093A5,\n\t17628: 0x000095D2,\n\t17629: 0x000095D3,\n\t17630: 0x000095D1,\n\t17631: 0x000096B3,\n\t17632: 0x000096D7,\n\t17633: 0x000096DA,\n\t17634: 0x00005DC2,\n\t17635: 0x000096DF,\n\t17636: 0x000096D8,\n\t17637: 0x000096DD,\n\t17638: 0x00009723,\n\t17639: 0x00009722,\n\t17640: 0x00009725,\n\t17641: 0x000097AC,\n\t17642: 0x000097AE,\n\t17643: 0x000097A8,\n\t17644: 0x000097AB,\n\t17645: 0x000097A4,\n\t17646: 0x000097AA,\n\t17647: 0x000097A2,\n\t17648: 0x000097A5,\n\t17649: 0x000097D7,\n\t17650: 0x000097D9,\n\t17651: 0x000097D6,\n\t17652: 0x000097D8,\n\t17653: 0x000097FA,\n\t17654: 0x00009850,\n\t17655: 0x00009851,\n\t17656: 0x00009852,\n\t17657: 0x000098B8,\n\t17658: 0x00009941,\n\t17659: 0x0000993C,\n\t17660: 0x0000993A,\n\t17661: 0x00009A0F,\n\t17662: 0x00009A0B,\n\t17663: 0x00009A09,\n\t17664: 0x00009A0D,\n\t17665: 0x00009A04,\n\t17666: 0x00009A11,\n\t17667: 0x00009A0A,\n\t17668: 0x00009A05,\n\t17669: 0x00009A07,\n\t17670: 0x00009A06,\n\t17671: 0x00009AC0,\n\t17672: 0x00009ADC,\n\t17673: 0x00009B08,\n\t17674: 0x00009B04,\n\t17675: 0x00009B05,\n\t17676: 0x00009B29,\n\t17677: 0x00009B35,\n\t17678: 0x00009B4A,\n\t17679: 0x00009B4C,\n\t17680: 0x00009B4B,\n\t17681: 0x00009BC7,\n\t17682: 0x00009BC6,\n\t17683: 0x00009BC3,\n\t17684: 0x00009BBF,\n\t17685: 0x00009BC1,\n\t17686: 0x00009BB5,\n\t17687: 0x00009BB8,\n\t17688: 0x00009BD3,\n\t17689: 0x00009BB6,\n\t17690: 0x00009BC4,\n\t17691: 0x00009BB9,\n\t17692: 0x00009BBD,\n\t17693: 0x00009D5C,\n\t17694: 0x00009D53,\n\t17695: 0x00009D4F,\n\t17696: 0x00009D4A,\n\t17697: 0x00009D5B,\n\t17698: 0x00009D4B,\n\t17699: 0x00009D59,\n\t17700: 0x00009D56,\n\t17701: 0x00009D4C,\n\t17702: 0x00009D57,\n\t17703: 0x00009D52,\n\t17704: 0x00009D54,\n\t17705: 0x00009D5F,\n\t17706: 0x00009D58,\n\t17707: 0x00009D5A,\n\t17708: 0x00009E8E,\n\t17709: 0x00009E8C,\n\t17710: 0x00009EDF,\n\t17711: 0x00009F01,\n\t17712: 0x00009F00,\n\t17713: 0x00009F16,\n\t17714: 0x00009F25,\n\t17715: 0x00009F2B,\n\t17716: 0x00009F2A,\n\t17717: 0x00009F29,\n\t17718: 0x00009F28,\n\t17719: 0x00009F4C,\n\t17720: 0x00009F55,\n\t17721: 0x00005134,\n\t17722: 0x00005135,\n\t17723: 0x00005296,\n\t17724: 0x000052F7,\n\t17725: 0x000053B4,\n\t17726: 0x000056AB,\n\t17727: 0x000056AD,\n\t17728: 0x000056A6,\n\t17729: 0x000056A7,\n\t17730: 0x000056AA,\n\t17731: 0x000056AC,\n\t17732: 0x000058DA,\n\t17733: 0x000058DD,\n\t17734: 0x000058DB,\n\t17735: 0x00005912,\n\t17736: 0x00005B3D,\n\t17737: 0x00005B3E,\n\t17738: 0x00005B3F,\n\t17739: 0x00005DC3,\n\t17740: 0x00005E70,\n\t17741: 0x00005FBF,\n\t17742: 0x000061FB,\n\t17743: 0x00006507,\n\t17744: 0x00006510,\n\t17745: 0x0000650D,\n\t17746: 0x00006509,\n\t17747: 0x0000650C,\n\t17748: 0x0000650E,\n\t17749: 0x00006584,\n\t17750: 0x000065DE,\n\t17751: 0x000065DD,\n\t17752: 0x000066DE,\n\t17753: 0x00006AE7,\n\t17754: 0x00006AE0,\n\t17755: 0x00006ACC,\n\t17756: 0x00006AD1,\n\t17757: 0x00006AD9,\n\t17758: 0x00006ACB,\n\t17759: 0x00006ADF,\n\t17760: 0x00006ADC,\n\t17761: 0x00006AD0,\n\t17762: 0x00006AEB,\n\t17763: 0x00006ACF,\n\t17764: 0x00006ACD,\n\t17765: 0x00006ADE,\n\t17766: 0x00006B60,\n\t17767: 0x00006BB0,\n\t17768: 0x00006C0C,\n\t17769: 0x00007019,\n\t17770: 0x00007027,\n\t17771: 0x00007020,\n\t17772: 0x00007016,\n\t17773: 0x0000702B,\n\t17774: 0x00007021,\n\t17775: 0x00007022,\n\t17776: 0x00007023,\n\t17777: 0x00007029,\n\t17778: 0x00007017,\n\t17779: 0x00007024,\n\t17780: 0x0000701C,\n\t17781: 0x0000702A,\n\t17782: 0x0000720C,\n\t17783: 0x0000720A,\n\t17784: 0x00007207,\n\t17785: 0x00007202,\n\t17786: 0x00007205,\n\t17787: 0x000072A5,\n\t17788: 0x000072A6,\n\t17789: 0x000072A4,\n\t17790: 0x000072A3,\n\t17791: 0x000072A1,\n\t17792: 0x000074CB,\n\t17793: 0x000074C5,\n\t17794: 0x000074B7,\n\t17795: 0x000074C3,\n\t17796: 0x00007516,\n\t17797: 0x00007660,\n\t17798: 0x000077C9,\n\t17799: 0x000077CA,\n\t17800: 0x000077C4,\n\t17801: 0x000077F1,\n\t17802: 0x0000791D,\n\t17803: 0x0000791B,\n\t17804: 0x00007921,\n\t17805: 0x0000791C,\n\t17806: 0x00007917,\n\t17807: 0x0000791E,\n\t17808: 0x000079B0,\n\t17809: 0x00007A67,\n\t17810: 0x00007A68,\n\t17811: 0x00007C33,\n\t17812: 0x00007C3C,\n\t17813: 0x00007C39,\n\t17814: 0x00007C2C,\n\t17815: 0x00007C3B,\n\t17816: 0x00007CEC,\n\t17817: 0x00007CEA,\n\t17818: 0x00007E76,\n\t17819: 0x00007E75,\n\t17820: 0x00007E78,\n\t17821: 0x00007E70,\n\t17822: 0x00007E77,\n\t17823: 0x00007E6F,\n\t17824: 0x00007E7A,\n\t17825: 0x00007E72,\n\t17826: 0x00007E74,\n\t17827: 0x00007E68,\n\t17828: 0x00007F4B,\n\t17829: 0x00007F4A,\n\t17830: 0x00007F83,\n\t17831: 0x00007F86,\n\t17832: 0x00007FB7,\n\t17833: 0x00007FFD,\n\t17834: 0x00007FFE,\n\t17835: 0x00008078,\n\t17836: 0x000081D7,\n\t17837: 0x000081D5,\n\t17838: 0x00008264,\n\t17839: 0x00008261,\n\t17840: 0x00008263,\n\t17841: 0x000085EB,\n\t17842: 0x000085F1,\n\t17843: 0x000085ED,\n\t17844: 0x000085D9,\n\t17845: 0x000085E1,\n\t17846: 0x000085E8,\n\t17847: 0x000085DA,\n\t17848: 0x000085D7,\n\t17849: 0x000085EC,\n\t17850: 0x000085F2,\n\t17851: 0x000085F8,\n\t17852: 0x000085D8,\n\t17853: 0x000085DF,\n\t17854: 0x000085E3,\n\t17855: 0x000085DC,\n\t17856: 0x000085D1,\n\t17857: 0x000085F0,\n\t17858: 0x000085E6,\n\t17859: 0x000085EF,\n\t17860: 0x000085DE,\n\t17861: 0x000085E2,\n\t17862: 0x00008800,\n\t17863: 0x000087FA,\n\t17864: 0x00008803,\n\t17865: 0x000087F6,\n\t17866: 0x000087F7,\n\t17867: 0x00008809,\n\t17868: 0x0000880C,\n\t17869: 0x0000880B,\n\t17870: 0x00008806,\n\t17871: 0x000087FC,\n\t17872: 0x00008808,\n\t17873: 0x000087FF,\n\t17874: 0x0000880A,\n\t17875: 0x00008802,\n\t17876: 0x00008962,\n\t17877: 0x0000895A,\n\t17878: 0x0000895B,\n\t17879: 0x00008957,\n\t17880: 0x00008961,\n\t17881: 0x0000895C,\n\t17882: 0x00008958,\n\t17883: 0x0000895D,\n\t17884: 0x00008959,\n\t17885: 0x00008988,\n\t17886: 0x000089B7,\n\t17887: 0x000089B6,\n\t17888: 0x000089F6,\n\t17889: 0x00008B50,\n\t17890: 0x00008B48,\n\t17891: 0x00008B4A,\n\t17892: 0x00008B40,\n\t17893: 0x00008B53,\n\t17894: 0x00008B56,\n\t17895: 0x00008B54,\n\t17896: 0x00008B4B,\n\t17897: 0x00008B55,\n\t17898: 0x00008B51,\n\t17899: 0x00008B42,\n\t17900: 0x00008B52,\n\t17901: 0x00008B57,\n\t17902: 0x00008C43,\n\t17903: 0x00008C77,\n\t17904: 0x00008C76,\n\t17905: 0x00008C9A,\n\t17906: 0x00008D06,\n\t17907: 0x00008D07,\n\t17908: 0x00008D09,\n\t17909: 0x00008DAC,\n\t17910: 0x00008DAA,\n\t17911: 0x00008DAD,\n\t17912: 0x00008DAB,\n\t17913: 0x00008E6D,\n\t17914: 0x00008E78,\n\t17915: 0x00008E73,\n\t17916: 0x00008E6A,\n\t17917: 0x00008E6F,\n\t17918: 0x00008E7B,\n\t17919: 0x00008EC2,\n\t17920: 0x00008F52,\n\t17921: 0x00008F51,\n\t17922: 0x00008F4F,\n\t17923: 0x00008F50,\n\t17924: 0x00008F53,\n\t17925: 0x00008FB4,\n\t17926: 0x00009140,\n\t17927: 0x0000913F,\n\t17928: 0x000091B0,\n\t17929: 0x000091AD,\n\t17930: 0x000093DE,\n\t17931: 0x000093C7,\n\t17932: 0x000093CF,\n\t17933: 0x000093C2,\n\t17934: 0x000093DA,\n\t17935: 0x000093D0,\n\t17936: 0x000093F9,\n\t17937: 0x000093EC,\n\t17938: 0x000093CC,\n\t17939: 0x000093D9,\n\t17940: 0x000093A9,\n\t17941: 0x000093E6,\n\t17942: 0x000093CA,\n\t17943: 0x000093D4,\n\t17944: 0x000093EE,\n\t17945: 0x000093E3,\n\t17946: 0x000093D5,\n\t17947: 0x000093C4,\n\t17948: 0x000093CE,\n\t17949: 0x000093C0,\n\t17950: 0x000093D2,\n\t17951: 0x000093E7,\n\t17952: 0x0000957D,\n\t17953: 0x000095DA,\n\t17954: 0x000095DB,\n\t17955: 0x000096E1,\n\t17956: 0x00009729,\n\t17957: 0x0000972B,\n\t17958: 0x0000972C,\n\t17959: 0x00009728,\n\t17960: 0x00009726,\n\t17961: 0x000097B3,\n\t17962: 0x000097B7,\n\t17963: 0x000097B6,\n\t17964: 0x000097DD,\n\t17965: 0x000097DE,\n\t17966: 0x000097DF,\n\t17967: 0x0000985C,\n\t17968: 0x00009859,\n\t17969: 0x0000985D,\n\t17970: 0x00009857,\n\t17971: 0x000098BF,\n\t17972: 0x000098BD,\n\t17973: 0x000098BB,\n\t17974: 0x000098BE,\n\t17975: 0x00009948,\n\t17976: 0x00009947,\n\t17977: 0x00009943,\n\t17978: 0x000099A6,\n\t17979: 0x000099A7,\n\t17980: 0x00009A1A,\n\t17981: 0x00009A15,\n\t17982: 0x00009A25,\n\t17983: 0x00009A1D,\n\t17984: 0x00009A24,\n\t17985: 0x00009A1B,\n\t17986: 0x00009A22,\n\t17987: 0x00009A20,\n\t17988: 0x00009A27,\n\t17989: 0x00009A23,\n\t17990: 0x00009A1E,\n\t17991: 0x00009A1C,\n\t17992: 0x00009A14,\n\t17993: 0x00009AC2,\n\t17994: 0x00009B0B,\n\t17995: 0x00009B0A,\n\t17996: 0x00009B0E,\n\t17997: 0x00009B0C,\n\t17998: 0x00009B37,\n\t17999: 0x00009BEA,\n\t18000: 0x00009BEB,\n\t18001: 0x00009BE0,\n\t18002: 0x00009BDE,\n\t18003: 0x00009BE4,\n\t18004: 0x00009BE6,\n\t18005: 0x00009BE2,\n\t18006: 0x00009BF0,\n\t18007: 0x00009BD4,\n\t18008: 0x00009BD7,\n\t18009: 0x00009BEC,\n\t18010: 0x00009BDC,\n\t18011: 0x00009BD9,\n\t18012: 0x00009BE5,\n\t18013: 0x00009BD5,\n\t18014: 0x00009BE1,\n\t18015: 0x00009BDA,\n\t18016: 0x00009D77,\n\t18017: 0x00009D81,\n\t18018: 0x00009D8A,\n\t18019: 0x00009D84,\n\t18020: 0x00009D88,\n\t18021: 0x00009D71,\n\t18022: 0x00009D80,\n\t18023: 0x00009D78,\n\t18024: 0x00009D86,\n\t18025: 0x00009D8B,\n\t18026: 0x00009D8C,\n\t18027: 0x00009D7D,\n\t18028: 0x00009D6B,\n\t18029: 0x00009D74,\n\t18030: 0x00009D75,\n\t18031: 0x00009D70,\n\t18032: 0x00009D69,\n\t18033: 0x00009D85,\n\t18034: 0x00009D73,\n\t18035: 0x00009D7B,\n\t18036: 0x00009D82,\n\t18037: 0x00009D6F,\n\t18038: 0x00009D79,\n\t18039: 0x00009D7F,\n\t18040: 0x00009D87,\n\t18041: 0x00009D68,\n\t18042: 0x00009E94,\n\t18043: 0x00009E91,\n\t18044: 0x00009EC0,\n\t18045: 0x00009EFC,\n\t18046: 0x00009F2D,\n\t18047: 0x00009F40,\n\t18048: 0x00009F41,\n\t18049: 0x00009F4D,\n\t18050: 0x00009F56,\n\t18051: 0x00009F57,\n\t18052: 0x00009F58,\n\t18053: 0x00005337,\n\t18054: 0x000056B2,\n\t18055: 0x000056B5,\n\t18056: 0x000056B3,\n\t18057: 0x000058E3,\n\t18058: 0x00005B45,\n\t18059: 0x00005DC6,\n\t18060: 0x00005DC7,\n\t18061: 0x00005EEE,\n\t18062: 0x00005EEF,\n\t18063: 0x00005FC0,\n\t18064: 0x00005FC1,\n\t18065: 0x000061F9,\n\t18066: 0x00006517,\n\t18067: 0x00006516,\n\t18068: 0x00006515,\n\t18069: 0x00006513,\n\t18070: 0x000065DF,\n\t18071: 0x000066E8,\n\t18072: 0x000066E3,\n\t18073: 0x000066E4,\n\t18074: 0x00006AF3,\n\t18075: 0x00006AF0,\n\t18076: 0x00006AEA,\n\t18077: 0x00006AE8,\n\t18078: 0x00006AF9,\n\t18079: 0x00006AF1,\n\t18080: 0x00006AEE,\n\t18081: 0x00006AEF,\n\t18082: 0x0000703C,\n\t18083: 0x00007035,\n\t18084: 0x0000702F,\n\t18085: 0x00007037,\n\t18086: 0x00007034,\n\t18087: 0x00007031,\n\t18088: 0x00007042,\n\t18089: 0x00007038,\n\t18090: 0x0000703F,\n\t18091: 0x0000703A,\n\t18092: 0x00007039,\n\t18093: 0x00007040,\n\t18094: 0x0000703B,\n\t18095: 0x00007033,\n\t18096: 0x00007041,\n\t18097: 0x00007213,\n\t18098: 0x00007214,\n\t18099: 0x000072A8,\n\t18100: 0x0000737D,\n\t18101: 0x0000737C,\n\t18102: 0x000074BA,\n\t18103: 0x000076AB,\n\t18104: 0x000076AA,\n\t18105: 0x000076BE,\n\t18106: 0x000076ED,\n\t18107: 0x000077CC,\n\t18108: 0x000077CE,\n\t18109: 0x000077CF,\n\t18110: 0x000077CD,\n\t18111: 0x000077F2,\n\t18112: 0x00007925,\n\t18113: 0x00007923,\n\t18114: 0x00007927,\n\t18115: 0x00007928,\n\t18116: 0x00007924,\n\t18117: 0x00007929,\n\t18118: 0x000079B2,\n\t18119: 0x00007A6E,\n\t18120: 0x00007A6C,\n\t18121: 0x00007A6D,\n\t18122: 0x00007AF7,\n\t18123: 0x00007C49,\n\t18124: 0x00007C48,\n\t18125: 0x00007C4A,\n\t18126: 0x00007C47,\n\t18127: 0x00007C45,\n\t18128: 0x00007CEE,\n\t18129: 0x00007E7B,\n\t18130: 0x00007E7E,\n\t18131: 0x00007E81,\n\t18132: 0x00007E80,\n\t18133: 0x00007FBA,\n\t18134: 0x00007FFF,\n\t18135: 0x00008079,\n\t18136: 0x000081DB,\n\t18137: 0x000081D9,\n\t18138: 0x0000820B,\n\t18139: 0x00008268,\n\t18140: 0x00008269,\n\t18141: 0x00008622,\n\t18142: 0x000085FF,\n\t18143: 0x00008601,\n\t18144: 0x000085FE,\n\t18145: 0x0000861B,\n\t18146: 0x00008600,\n\t18147: 0x000085F6,\n\t18148: 0x00008604,\n\t18149: 0x00008609,\n\t18150: 0x00008605,\n\t18151: 0x0000860C,\n\t18152: 0x000085FD,\n\t18153: 0x00008819,\n\t18154: 0x00008810,\n\t18155: 0x00008811,\n\t18156: 0x00008817,\n\t18157: 0x00008813,\n\t18158: 0x00008816,\n\t18159: 0x00008963,\n\t18160: 0x00008966,\n\t18161: 0x000089B9,\n\t18162: 0x000089F7,\n\t18163: 0x00008B60,\n\t18164: 0x00008B6A,\n\t18165: 0x00008B5D,\n\t18166: 0x00008B68,\n\t18167: 0x00008B63,\n\t18168: 0x00008B65,\n\t18169: 0x00008B67,\n\t18170: 0x00008B6D,\n\t18171: 0x00008DAE,\n\t18172: 0x00008E86,\n\t18173: 0x00008E88,\n\t18174: 0x00008E84,\n\t18175: 0x00008F59,\n\t18176: 0x00008F56,\n\t18177: 0x00008F57,\n\t18178: 0x00008F55,\n\t18179: 0x00008F58,\n\t18180: 0x00008F5A,\n\t18181: 0x0000908D,\n\t18182: 0x00009143,\n\t18183: 0x00009141,\n\t18184: 0x000091B7,\n\t18185: 0x000091B5,\n\t18186: 0x000091B2,\n\t18187: 0x000091B3,\n\t18188: 0x0000940B,\n\t18189: 0x00009413,\n\t18190: 0x000093FB,\n\t18191: 0x00009420,\n\t18192: 0x0000940F,\n\t18193: 0x00009414,\n\t18194: 0x000093FE,\n\t18195: 0x00009415,\n\t18196: 0x00009410,\n\t18197: 0x00009428,\n\t18198: 0x00009419,\n\t18199: 0x0000940D,\n\t18200: 0x000093F5,\n\t18201: 0x00009400,\n\t18202: 0x000093F7,\n\t18203: 0x00009407,\n\t18204: 0x0000940E,\n\t18205: 0x00009416,\n\t18206: 0x00009412,\n\t18207: 0x000093FA,\n\t18208: 0x00009409,\n\t18209: 0x000093F8,\n\t18210: 0x0000940A,\n\t18211: 0x000093FF,\n\t18212: 0x000093FC,\n\t18213: 0x0000940C,\n\t18214: 0x000093F6,\n\t18215: 0x00009411,\n\t18216: 0x00009406,\n\t18217: 0x000095DE,\n\t18218: 0x000095E0,\n\t18219: 0x000095DF,\n\t18220: 0x0000972E,\n\t18221: 0x0000972F,\n\t18222: 0x000097B9,\n\t18223: 0x000097BB,\n\t18224: 0x000097FD,\n\t18225: 0x000097FE,\n\t18226: 0x00009860,\n\t18227: 0x00009862,\n\t18228: 0x00009863,\n\t18229: 0x0000985F,\n\t18230: 0x000098C1,\n\t18231: 0x000098C2,\n\t18232: 0x00009950,\n\t18233: 0x0000994E,\n\t18234: 0x00009959,\n\t18235: 0x0000994C,\n\t18236: 0x0000994B,\n\t18237: 0x00009953,\n\t18238: 0x00009A32,\n\t18239: 0x00009A34,\n\t18240: 0x00009A31,\n\t18241: 0x00009A2C,\n\t18242: 0x00009A2A,\n\t18243: 0x00009A36,\n\t18244: 0x00009A29,\n\t18245: 0x00009A2E,\n\t18246: 0x00009A38,\n\t18247: 0x00009A2D,\n\t18248: 0x00009AC7,\n\t18249: 0x00009ACA,\n\t18250: 0x00009AC6,\n\t18251: 0x00009B10,\n\t18252: 0x00009B12,\n\t18253: 0x00009B11,\n\t18254: 0x00009C0B,\n\t18255: 0x00009C08,\n\t18256: 0x00009BF7,\n\t18257: 0x00009C05,\n\t18258: 0x00009C12,\n\t18259: 0x00009BF8,\n\t18260: 0x00009C40,\n\t18261: 0x00009C07,\n\t18262: 0x00009C0E,\n\t18263: 0x00009C06,\n\t18264: 0x00009C17,\n\t18265: 0x00009C14,\n\t18266: 0x00009C09,\n\t18267: 0x00009D9F,\n\t18268: 0x00009D99,\n\t18269: 0x00009DA4,\n\t18270: 0x00009D9D,\n\t18271: 0x00009D92,\n\t18272: 0x00009D98,\n\t18273: 0x00009D90,\n\t18274: 0x00009D9B,\n\t18275: 0x00009DA0,\n\t18276: 0x00009D94,\n\t18277: 0x00009D9C,\n\t18278: 0x00009DAA,\n\t18279: 0x00009D97,\n\t18280: 0x00009DA1,\n\t18281: 0x00009D9A,\n\t18282: 0x00009DA2,\n\t18283: 0x00009DA8,\n\t18284: 0x00009D9E,\n\t18285: 0x00009DA3,\n\t18286: 0x00009DBF,\n\t18287: 0x00009DA9,\n\t18288: 0x00009D96,\n\t18289: 0x00009DA6,\n\t18290: 0x00009DA7,\n\t18291: 0x00009E99,\n\t18292: 0x00009E9B,\n\t18293: 0x00009E9A,\n\t18294: 0x00009EE5,\n\t18295: 0x00009EE4,\n\t18296: 0x00009EE7,\n\t18297: 0x00009EE6,\n\t18298: 0x00009F30,\n\t18299: 0x00009F2E,\n\t18300: 0x00009F5B,\n\t18301: 0x00009F60,\n\t18302: 0x00009F5E,\n\t18303: 0x00009F5D,\n\t18304: 0x00009F59,\n\t18305: 0x00009F91,\n\t18306: 0x0000513A,\n\t18307: 0x00005139,\n\t18308: 0x00005298,\n\t18309: 0x00005297,\n\t18310: 0x000056C3,\n\t18311: 0x000056BD,\n\t18312: 0x000056BE,\n\t18313: 0x00005B48,\n\t18314: 0x00005B47,\n\t18315: 0x00005DCB,\n\t18316: 0x00005DCF,\n\t18317: 0x00005EF1,\n\t18318: 0x000061FD,\n\t18319: 0x0000651B,\n\t18320: 0x00006B02,\n\t18321: 0x00006AFC,\n\t18322: 0x00006B03,\n\t18323: 0x00006AF8,\n\t18324: 0x00006B00,\n\t18325: 0x00007043,\n\t18326: 0x00007044,\n\t18327: 0x0000704A,\n\t18328: 0x00007048,\n\t18329: 0x00007049,\n\t18330: 0x00007045,\n\t18331: 0x00007046,\n\t18332: 0x0000721D,\n\t18333: 0x0000721A,\n\t18334: 0x00007219,\n\t18335: 0x0000737E,\n\t18336: 0x00007517,\n\t18337: 0x0000766A,\n\t18338: 0x000077D0,\n\t18339: 0x0000792D,\n\t18340: 0x00007931,\n\t18341: 0x0000792F,\n\t18342: 0x00007C54,\n\t18343: 0x00007C53,\n\t18344: 0x00007CF2,\n\t18345: 0x00007E8A,\n\t18346: 0x00007E87,\n\t18347: 0x00007E88,\n\t18348: 0x00007E8B,\n\t18349: 0x00007E86,\n\t18350: 0x00007E8D,\n\t18351: 0x00007F4D,\n\t18352: 0x00007FBB,\n\t18353: 0x00008030,\n\t18354: 0x000081DD,\n\t18355: 0x00008618,\n\t18356: 0x0000862A,\n\t18357: 0x00008626,\n\t18358: 0x0000861F,\n\t18359: 0x00008623,\n\t18360: 0x0000861C,\n\t18361: 0x00008619,\n\t18362: 0x00008627,\n\t18363: 0x0000862E,\n\t18364: 0x00008621,\n\t18365: 0x00008620,\n\t18366: 0x00008629,\n\t18367: 0x0000861E,\n\t18368: 0x00008625,\n\t18369: 0x00008829,\n\t18370: 0x0000881D,\n\t18371: 0x0000881B,\n\t18372: 0x00008820,\n\t18373: 0x00008824,\n\t18374: 0x0000881C,\n\t18375: 0x0000882B,\n\t18376: 0x0000884A,\n\t18377: 0x0000896D,\n\t18378: 0x00008969,\n\t18379: 0x0000896E,\n\t18380: 0x0000896B,\n\t18381: 0x000089FA,\n\t18382: 0x00008B79,\n\t18383: 0x00008B78,\n\t18384: 0x00008B45,\n\t18385: 0x00008B7A,\n\t18386: 0x00008B7B,\n\t18387: 0x00008D10,\n\t18388: 0x00008D14,\n\t18389: 0x00008DAF,\n\t18390: 0x00008E8E,\n\t18391: 0x00008E8C,\n\t18392: 0x00008F5E,\n\t18393: 0x00008F5B,\n\t18394: 0x00008F5D,\n\t18395: 0x00009146,\n\t18396: 0x00009144,\n\t18397: 0x00009145,\n\t18398: 0x000091B9,\n\t18399: 0x0000943F,\n\t18400: 0x0000943B,\n\t18401: 0x00009436,\n\t18402: 0x00009429,\n\t18403: 0x0000943D,\n\t18404: 0x0000943C,\n\t18405: 0x00009430,\n\t18406: 0x00009439,\n\t18407: 0x0000942A,\n\t18408: 0x00009437,\n\t18409: 0x0000942C,\n\t18410: 0x00009440,\n\t18411: 0x00009431,\n\t18412: 0x000095E5,\n\t18413: 0x000095E4,\n\t18414: 0x000095E3,\n\t18415: 0x00009735,\n\t18416: 0x0000973A,\n\t18417: 0x000097BF,\n\t18418: 0x000097E1,\n\t18419: 0x00009864,\n\t18420: 0x000098C9,\n\t18421: 0x000098C6,\n\t18422: 0x000098C0,\n\t18423: 0x00009958,\n\t18424: 0x00009956,\n\t18425: 0x00009A39,\n\t18426: 0x00009A3D,\n\t18427: 0x00009A46,\n\t18428: 0x00009A44,\n\t18429: 0x00009A42,\n\t18430: 0x00009A41,\n\t18431: 0x00009A3A,\n\t18432: 0x00009A3F,\n\t18433: 0x00009ACD,\n\t18434: 0x00009B15,\n\t18435: 0x00009B17,\n\t18436: 0x00009B18,\n\t18437: 0x00009B16,\n\t18438: 0x00009B3A,\n\t18439: 0x00009B52,\n\t18440: 0x00009C2B,\n\t18441: 0x00009C1D,\n\t18442: 0x00009C1C,\n\t18443: 0x00009C2C,\n\t18444: 0x00009C23,\n\t18445: 0x00009C28,\n\t18446: 0x00009C29,\n\t18447: 0x00009C24,\n\t18448: 0x00009C21,\n\t18449: 0x00009DB7,\n\t18450: 0x00009DB6,\n\t18451: 0x00009DBC,\n\t18452: 0x00009DC1,\n\t18453: 0x00009DC7,\n\t18454: 0x00009DCA,\n\t18455: 0x00009DCF,\n\t18456: 0x00009DBE,\n\t18457: 0x00009DC5,\n\t18458: 0x00009DC3,\n\t18459: 0x00009DBB,\n\t18460: 0x00009DB5,\n\t18461: 0x00009DCE,\n\t18462: 0x00009DB9,\n\t18463: 0x00009DBA,\n\t18464: 0x00009DAC,\n\t18465: 0x00009DC8,\n\t18466: 0x00009DB1,\n\t18467: 0x00009DAD,\n\t18468: 0x00009DCC,\n\t18469: 0x00009DB3,\n\t18470: 0x00009DCD,\n\t18471: 0x00009DB2,\n\t18472: 0x00009E7A,\n\t18473: 0x00009E9C,\n\t18474: 0x00009EEB,\n\t18475: 0x00009EEE,\n\t18476: 0x00009EED,\n\t18477: 0x00009F1B,\n\t18478: 0x00009F18,\n\t18479: 0x00009F1A,\n\t18480: 0x00009F31,\n\t18481: 0x00009F4E,\n\t18482: 0x00009F65,\n\t18483: 0x00009F64,\n\t18484: 0x00009F92,\n\t18485: 0x00004EB9,\n\t18486: 0x000056C6,\n\t18487: 0x000056C5,\n\t18488: 0x000056CB,\n\t18489: 0x00005971,\n\t18490: 0x00005B4B,\n\t18491: 0x00005B4C,\n\t18492: 0x00005DD5,\n\t18493: 0x00005DD1,\n\t18494: 0x00005EF2,\n\t18495: 0x00006521,\n\t18496: 0x00006520,\n\t18497: 0x00006526,\n\t18498: 0x00006522,\n\t18499: 0x00006B0B,\n\t18500: 0x00006B08,\n\t18501: 0x00006B09,\n\t18502: 0x00006C0D,\n\t18503: 0x00007055,\n\t18504: 0x00007056,\n\t18505: 0x00007057,\n\t18506: 0x00007052,\n\t18507: 0x0000721E,\n\t18508: 0x0000721F,\n\t18509: 0x000072A9,\n\t18510: 0x0000737F,\n\t18511: 0x000074D8,\n\t18512: 0x000074D5,\n\t18513: 0x000074D9,\n\t18514: 0x000074D7,\n\t18515: 0x0000766D,\n\t18516: 0x000076AD,\n\t18517: 0x00007935,\n\t18518: 0x000079B4,\n\t18519: 0x00007A70,\n\t18520: 0x00007A71,\n\t18521: 0x00007C57,\n\t18522: 0x00007C5C,\n\t18523: 0x00007C59,\n\t18524: 0x00007C5B,\n\t18525: 0x00007C5A,\n\t18526: 0x00007CF4,\n\t18527: 0x00007CF1,\n\t18528: 0x00007E91,\n\t18529: 0x00007F4F,\n\t18530: 0x00007F87,\n\t18531: 0x000081DE,\n\t18532: 0x0000826B,\n\t18533: 0x00008634,\n\t18534: 0x00008635,\n\t18535: 0x00008633,\n\t18536: 0x0000862C,\n\t18537: 0x00008632,\n\t18538: 0x00008636,\n\t18539: 0x0000882C,\n\t18540: 0x00008828,\n\t18541: 0x00008826,\n\t18542: 0x0000882A,\n\t18543: 0x00008825,\n\t18544: 0x00008971,\n\t18545: 0x000089BF,\n\t18546: 0x000089BE,\n\t18547: 0x000089FB,\n\t18548: 0x00008B7E,\n\t18549: 0x00008B84,\n\t18550: 0x00008B82,\n\t18551: 0x00008B86,\n\t18552: 0x00008B85,\n\t18553: 0x00008B7F,\n\t18554: 0x00008D15,\n\t18555: 0x00008E95,\n\t18556: 0x00008E94,\n\t18557: 0x00008E9A,\n\t18558: 0x00008E92,\n\t18559: 0x00008E90,\n\t18560: 0x00008E96,\n\t18561: 0x00008E97,\n\t18562: 0x00008F60,\n\t18563: 0x00008F62,\n\t18564: 0x00009147,\n\t18565: 0x0000944C,\n\t18566: 0x00009450,\n\t18567: 0x0000944A,\n\t18568: 0x0000944B,\n\t18569: 0x0000944F,\n\t18570: 0x00009447,\n\t18571: 0x00009445,\n\t18572: 0x00009448,\n\t18573: 0x00009449,\n\t18574: 0x00009446,\n\t18575: 0x0000973F,\n\t18576: 0x000097E3,\n\t18577: 0x0000986A,\n\t18578: 0x00009869,\n\t18579: 0x000098CB,\n\t18580: 0x00009954,\n\t18581: 0x0000995B,\n\t18582: 0x00009A4E,\n\t18583: 0x00009A53,\n\t18584: 0x00009A54,\n\t18585: 0x00009A4C,\n\t18586: 0x00009A4F,\n\t18587: 0x00009A48,\n\t18588: 0x00009A4A,\n\t18589: 0x00009A49,\n\t18590: 0x00009A52,\n\t18591: 0x00009A50,\n\t18592: 0x00009AD0,\n\t18593: 0x00009B19,\n\t18594: 0x00009B2B,\n\t18595: 0x00009B3B,\n\t18596: 0x00009B56,\n\t18597: 0x00009B55,\n\t18598: 0x00009C46,\n\t18599: 0x00009C48,\n\t18600: 0x00009C3F,\n\t18601: 0x00009C44,\n\t18602: 0x00009C39,\n\t18603: 0x00009C33,\n\t18604: 0x00009C41,\n\t18605: 0x00009C3C,\n\t18606: 0x00009C37,\n\t18607: 0x00009C34,\n\t18608: 0x00009C32,\n\t18609: 0x00009C3D,\n\t18610: 0x00009C36,\n\t18611: 0x00009DDB,\n\t18612: 0x00009DD2,\n\t18613: 0x00009DDE,\n\t18614: 0x00009DDA,\n\t18615: 0x00009DCB,\n\t18616: 0x00009DD0,\n\t18617: 0x00009DDC,\n\t18618: 0x00009DD1,\n\t18619: 0x00009DDF,\n\t18620: 0x00009DE9,\n\t18621: 0x00009DD9,\n\t18622: 0x00009DD8,\n\t18623: 0x00009DD6,\n\t18624: 0x00009DF5,\n\t18625: 0x00009DD5,\n\t18626: 0x00009DDD,\n\t18627: 0x00009EB6,\n\t18628: 0x00009EF0,\n\t18629: 0x00009F35,\n\t18630: 0x00009F33,\n\t18631: 0x00009F32,\n\t18632: 0x00009F42,\n\t18633: 0x00009F6B,\n\t18634: 0x00009F95,\n\t18635: 0x00009FA2,\n\t18636: 0x0000513D,\n\t18637: 0x00005299,\n\t18638: 0x000058E8,\n\t18639: 0x000058E7,\n\t18640: 0x00005972,\n\t18641: 0x00005B4D,\n\t18642: 0x00005DD8,\n\t18643: 0x0000882F,\n\t18644: 0x00005F4F,\n\t18645: 0x00006201,\n\t18646: 0x00006203,\n\t18647: 0x00006204,\n\t18648: 0x00006529,\n\t18649: 0x00006525,\n\t18650: 0x00006596,\n\t18651: 0x000066EB,\n\t18652: 0x00006B11,\n\t18653: 0x00006B12,\n\t18654: 0x00006B0F,\n\t18655: 0x00006BCA,\n\t18656: 0x0000705B,\n\t18657: 0x0000705A,\n\t18658: 0x00007222,\n\t18659: 0x00007382,\n\t18660: 0x00007381,\n\t18661: 0x00007383,\n\t18662: 0x00007670,\n\t18663: 0x000077D4,\n\t18664: 0x00007C67,\n\t18665: 0x00007C66,\n\t18666: 0x00007E95,\n\t18667: 0x0000826C,\n\t18668: 0x0000863A,\n\t18669: 0x00008640,\n\t18670: 0x00008639,\n\t18671: 0x0000863C,\n\t18672: 0x00008631,\n\t18673: 0x0000863B,\n\t18674: 0x0000863E,\n\t18675: 0x00008830,\n\t18676: 0x00008832,\n\t18677: 0x0000882E,\n\t18678: 0x00008833,\n\t18679: 0x00008976,\n\t18680: 0x00008974,\n\t18681: 0x00008973,\n\t18682: 0x000089FE,\n\t18683: 0x00008B8C,\n\t18684: 0x00008B8E,\n\t18685: 0x00008B8B,\n\t18686: 0x00008B88,\n\t18687: 0x00008C45,\n\t18688: 0x00008D19,\n\t18689: 0x00008E98,\n\t18690: 0x00008F64,\n\t18691: 0x00008F63,\n\t18692: 0x000091BC,\n\t18693: 0x00009462,\n\t18694: 0x00009455,\n\t18695: 0x0000945D,\n\t18696: 0x00009457,\n\t18697: 0x0000945E,\n\t18698: 0x000097C4,\n\t18699: 0x000097C5,\n\t18700: 0x00009800,\n\t18701: 0x00009A56,\n\t18702: 0x00009A59,\n\t18703: 0x00009B1E,\n\t18704: 0x00009B1F,\n\t18705: 0x00009B20,\n\t18706: 0x00009C52,\n\t18707: 0x00009C58,\n\t18708: 0x00009C50,\n\t18709: 0x00009C4A,\n\t18710: 0x00009C4D,\n\t18711: 0x00009C4B,\n\t18712: 0x00009C55,\n\t18713: 0x00009C59,\n\t18714: 0x00009C4C,\n\t18715: 0x00009C4E,\n\t18716: 0x00009DFB,\n\t18717: 0x00009DF7,\n\t18718: 0x00009DEF,\n\t18719: 0x00009DE3,\n\t18720: 0x00009DEB,\n\t18721: 0x00009DF8,\n\t18722: 0x00009DE4,\n\t18723: 0x00009DF6,\n\t18724: 0x00009DE1,\n\t18725: 0x00009DEE,\n\t18726: 0x00009DE6,\n\t18727: 0x00009DF2,\n\t18728: 0x00009DF0,\n\t18729: 0x00009DE2,\n\t18730: 0x00009DEC,\n\t18731: 0x00009DF4,\n\t18732: 0x00009DF3,\n\t18733: 0x00009DE8,\n\t18734: 0x00009DED,\n\t18735: 0x00009EC2,\n\t18736: 0x00009ED0,\n\t18737: 0x00009EF2,\n\t18738: 0x00009EF3,\n\t18739: 0x00009F06,\n\t18740: 0x00009F1C,\n\t18741: 0x00009F38,\n\t18742: 0x00009F37,\n\t18743: 0x00009F36,\n\t18744: 0x00009F43,\n\t18745: 0x00009F4F,\n\t18746: 0x00009F71,\n\t18747: 0x00009F70,\n\t18748: 0x00009F6E,\n\t18749: 0x00009F6F,\n\t18750: 0x000056D3,\n\t18751: 0x000056CD,\n\t18752: 0x00005B4E,\n\t18753: 0x00005C6D,\n\t18754: 0x0000652D,\n\t18755: 0x000066ED,\n\t18756: 0x000066EE,\n\t18757: 0x00006B13,\n\t18758: 0x0000705F,\n\t18759: 0x00007061,\n\t18760: 0x0000705D,\n\t18761: 0x00007060,\n\t18762: 0x00007223,\n\t18763: 0x000074DB,\n\t18764: 0x000074E5,\n\t18765: 0x000077D5,\n\t18766: 0x00007938,\n\t18767: 0x000079B7,\n\t18768: 0x000079B6,\n\t18769: 0x00007C6A,\n\t18770: 0x00007E97,\n\t18771: 0x00007F89,\n\t18772: 0x0000826D,\n\t18773: 0x00008643,\n\t18774: 0x00008838,\n\t18775: 0x00008837,\n\t18776: 0x00008835,\n\t18777: 0x0000884B,\n\t18778: 0x00008B94,\n\t18779: 0x00008B95,\n\t18780: 0x00008E9E,\n\t18781: 0x00008E9F,\n\t18782: 0x00008EA0,\n\t18783: 0x00008E9D,\n\t18784: 0x000091BE,\n\t18785: 0x000091BD,\n\t18786: 0x000091C2,\n\t18787: 0x0000946B,\n\t18788: 0x00009468,\n\t18789: 0x00009469,\n\t18790: 0x000096E5,\n\t18791: 0x00009746,\n\t18792: 0x00009743,\n\t18793: 0x00009747,\n\t18794: 0x000097C7,\n\t18795: 0x000097E5,\n\t18796: 0x00009A5E,\n\t18797: 0x00009AD5,\n\t18798: 0x00009B59,\n\t18799: 0x00009C63,\n\t18800: 0x00009C67,\n\t18801: 0x00009C66,\n\t18802: 0x00009C62,\n\t18803: 0x00009C5E,\n\t18804: 0x00009C60,\n\t18805: 0x00009E02,\n\t18806: 0x00009DFE,\n\t18807: 0x00009E07,\n\t18808: 0x00009E03,\n\t18809: 0x00009E06,\n\t18810: 0x00009E05,\n\t18811: 0x00009E00,\n\t18812: 0x00009E01,\n\t18813: 0x00009E09,\n\t18814: 0x00009DFF,\n\t18815: 0x00009DFD,\n\t18816: 0x00009E04,\n\t18817: 0x00009EA0,\n\t18818: 0x00009F1E,\n\t18819: 0x00009F46,\n\t18820: 0x00009F74,\n\t18821: 0x00009F75,\n\t18822: 0x00009F76,\n\t18823: 0x000056D4,\n\t18824: 0x0000652E,\n\t18825: 0x000065B8,\n\t18826: 0x00006B18,\n\t18827: 0x00006B19,\n\t18828: 0x00006B17,\n\t18829: 0x00006B1A,\n\t18830: 0x00007062,\n\t18831: 0x00007226,\n\t18832: 0x000072AA,\n\t18833: 0x000077D8,\n\t18834: 0x000077D9,\n\t18835: 0x00007939,\n\t18836: 0x00007C69,\n\t18837: 0x00007C6B,\n\t18838: 0x00007CF6,\n\t18839: 0x00007E9A,\n\t18840: 0x00007E98,\n\t18841: 0x00007E9B,\n\t18842: 0x00007E99,\n\t18843: 0x000081E0,\n\t18844: 0x000081E1,\n\t18845: 0x00008646,\n\t18846: 0x00008647,\n\t18847: 0x00008648,\n\t18848: 0x00008979,\n\t18849: 0x0000897A,\n\t18850: 0x0000897C,\n\t18851: 0x0000897B,\n\t18852: 0x000089FF,\n\t18853: 0x00008B98,\n\t18854: 0x00008B99,\n\t18855: 0x00008EA5,\n\t18856: 0x00008EA4,\n\t18857: 0x00008EA3,\n\t18858: 0x0000946E,\n\t18859: 0x0000946D,\n\t18860: 0x0000946F,\n\t18861: 0x00009471,\n\t18862: 0x00009473,\n\t18863: 0x00009749,\n\t18864: 0x00009872,\n\t18865: 0x0000995F,\n\t18866: 0x00009C68,\n\t18867: 0x00009C6E,\n\t18868: 0x00009C6D,\n\t18869: 0x00009E0B,\n\t18870: 0x00009E0D,\n\t18871: 0x00009E10,\n\t18872: 0x00009E0F,\n\t18873: 0x00009E12,\n\t18874: 0x00009E11,\n\t18875: 0x00009EA1,\n\t18876: 0x00009EF5,\n\t18877: 0x00009F09,\n\t18878: 0x00009F47,\n\t18879: 0x00009F78,\n\t18880: 0x00009F7B,\n\t18881: 0x00009F7A,\n\t18882: 0x00009F79,\n\t18883: 0x0000571E,\n\t18884: 0x00007066,\n\t18885: 0x00007C6F,\n\t18886: 0x0000883C,\n\t18887: 0x00008DB2,\n\t18888: 0x00008EA6,\n\t18889: 0x000091C3,\n\t18890: 0x00009474,\n\t18891: 0x00009478,\n\t18892: 0x00009476,\n\t18893: 0x00009475,\n\t18894: 0x00009A60,\n\t18895: 0x00009C74,\n\t18896: 0x00009C73,\n\t18897: 0x00009C71,\n\t18898: 0x00009C75,\n\t18899: 0x00009E14,\n\t18900: 0x00009E13,\n\t18901: 0x00009EF6,\n\t18902: 0x00009F0A,\n\t18903: 0x00009FA4,\n\t18904: 0x00007068,\n\t18905: 0x00007065,\n\t18906: 0x00007CF7,\n\t18907: 0x0000866A,\n\t18908: 0x0000883E,\n\t18909: 0x0000883D,\n\t18910: 0x0000883F,\n\t18911: 0x00008B9E,\n\t18912: 0x00008C9C,\n\t18913: 0x00008EA9,\n\t18914: 0x00008EC9,\n\t18915: 0x0000974B,\n\t18916: 0x00009873,\n\t18917: 0x00009874,\n\t18918: 0x000098CC,\n\t18919: 0x00009961,\n\t18920: 0x000099AB,\n\t18921: 0x00009A64,\n\t18922: 0x00009A66,\n\t18923: 0x00009A67,\n\t18924: 0x00009B24,\n\t18925: 0x00009E15,\n\t18926: 0x00009E17,\n\t18927: 0x00009F48,\n\t18928: 0x00006207,\n\t18929: 0x00006B1E,\n\t18930: 0x00007227,\n\t18931: 0x0000864C,\n\t18932: 0x00008EA8,\n\t18933: 0x00009482,\n\t18934: 0x00009480,\n\t18935: 0x00009481,\n\t18936: 0x00009A69,\n\t18937: 0x00009A68,\n\t18938: 0x00009B2E,\n\t18939: 0x00009E19,\n\t18940: 0x00007229,\n\t18941: 0x0000864B,\n\t18942: 0x00008B9F,\n\t18943: 0x00009483,\n\t18944: 0x00009C79,\n\t18945: 0x00009EB7,\n\t18946: 0x00007675,\n\t18947: 0x00009A6B,\n\t18948: 0x00009C7A,\n\t18949: 0x00009E1D,\n\t18950: 0x00007069,\n\t18951: 0x0000706A,\n\t18952: 0x00009EA4,\n\t18953: 0x00009F7E,\n\t18954: 0x00009F49,\n\t18955: 0x00009F98,\n\t18956: 0x00007881,\n\t18957: 0x000092B9,\n\t18958: 0x000088CF,\n\t18959: 0x000058BB,\n\t18960: 0x00006052,\n\t18961: 0x00007CA7,\n\t18962: 0x00005AFA,\n\t18963: 0x00002554,\n\t18964: 0x00002566,\n\t18965: 0x00002557,\n\t18966: 0x00002560,\n\t18967: 0x0000256C,\n\t18968: 0x00002563,\n\t18969: 0x0000255A,\n\t18970: 0x00002569,\n\t18971: 0x0000255D,\n\t18972: 0x00002552,\n\t18973: 0x00002564,\n\t18974: 0x00002555,\n\t18975: 0x0000255E,\n\t18976: 0x0000256A,\n\t18977: 0x00002561,\n\t18978: 0x00002558,\n\t18979: 0x00002567,\n\t18980: 0x0000255B,\n\t18981: 0x00002553,\n\t18982: 0x00002565,\n\t18983: 0x00002556,\n\t18984: 0x0000255F,\n\t18985: 0x0000256B,\n\t18986: 0x00002562,\n\t18987: 0x00002559,\n\t18988: 0x00002568,\n\t18989: 0x0000255C,\n\t18990: 0x00002551,\n\t18991: 0x00002550,\n\t18992: 0x0000256D,\n\t18993: 0x0000256E,\n\t18994: 0x00002570,\n\t18995: 0x0000256F,\n\t18996: 0x0000FFED,\n\t18997: 0x00020547,\n\t18998: 0x000092DB,\n\t18999: 0x000205DF,\n\t19000: 0x00023FC5,\n\t19001: 0x0000854C,\n\t19002: 0x000042B5,\n\t19003: 0x000073EF,\n\t19004: 0x000051B5,\n\t19005: 0x00003649,\n\t19006: 0x00024942,\n\t19007: 0x000289E4,\n\t19008: 0x00009344,\n\t19009: 0x000219DB,\n\t19010: 0x000082EE,\n\t19011: 0x00023CC8,\n\t19012: 0x0000783C,\n\t19013: 0x00006744,\n\t19014: 0x000062DF,\n\t19015: 0x00024933,\n\t19016: 0x000289AA,\n\t19017: 0x000202A0,\n\t19018: 0x00026BB3,\n\t19019: 0x00021305,\n\t19020: 0x00004FAB,\n\t19021: 0x000224ED,\n\t19022: 0x00005008,\n\t19023: 0x00026D29,\n\t19024: 0x00027A84,\n\t19025: 0x00023600,\n\t19026: 0x00024AB1,\n\t19027: 0x00022513,\n\t19028: 0x00005029,\n\t19029: 0x0002037E,\n\t19030: 0x00005FA4,\n\t19031: 0x00020380,\n\t19032: 0x00020347,\n\t19033: 0x00006EDB,\n\t19034: 0x0002041F,\n\t19035: 0x0000507D,\n\t19036: 0x00005101,\n\t19037: 0x0000347A,\n\t19038: 0x0000510E,\n\t19039: 0x0000986C,\n\t19040: 0x00003743,\n\t19041: 0x00008416,\n\t19042: 0x000249A4,\n\t19043: 0x00020487,\n\t19044: 0x00005160,\n\t19045: 0x000233B4,\n\t19046: 0x0000516A,\n\t19047: 0x00020BFF,\n\t19048: 0x000220FC,\n\t19049: 0x000202E5,\n\t19050: 0x00022530,\n\t19051: 0x0002058E,\n\t19052: 0x00023233,\n\t19053: 0x00021983,\n\t19054: 0x00005B82,\n\t19055: 0x0000877D,\n\t19056: 0x000205B3,\n\t19057: 0x00023C99,\n\t19058: 0x000051B2,\n\t19059: 0x000051B8,\n\t19060: 0x00009D34,\n\t19061: 0x000051C9,\n\t19062: 0x000051CF,\n\t19063: 0x000051D1,\n\t19064: 0x00003CDC,\n\t19065: 0x000051D3,\n\t19066: 0x00024AA6,\n\t19067: 0x000051B3,\n\t19068: 0x000051E2,\n\t19069: 0x00005342,\n\t19070: 0x000051ED,\n\t19071: 0x000083CD,\n\t19072: 0x0000693E,\n\t19073: 0x0002372D,\n\t19074: 0x00005F7B,\n\t19075: 0x0000520B,\n\t19076: 0x00005226,\n\t19077: 0x0000523C,\n\t19078: 0x000052B5,\n\t19079: 0x00005257,\n\t19080: 0x00005294,\n\t19081: 0x000052B9,\n\t19082: 0x000052C5,\n\t19083: 0x00007C15,\n\t19084: 0x00008542,\n\t19085: 0x000052E0,\n\t19086: 0x0000860D,\n\t19087: 0x00026B13,\n\t19088: 0x00005305,\n\t19089: 0x00028ADE,\n\t19090: 0x00005549,\n\t19091: 0x00006ED9,\n\t19092: 0x00023F80,\n\t19093: 0x00020954,\n\t19094: 0x00023FEC,\n\t19095: 0x00005333,\n\t19096: 0x00005344,\n\t19097: 0x00020BE2,\n\t19098: 0x00006CCB,\n\t19099: 0x00021726,\n\t19100: 0x0000681B,\n\t19101: 0x000073D5,\n\t19102: 0x0000604A,\n\t19103: 0x00003EAA,\n\t19104: 0x000038CC,\n\t19105: 0x000216E8,\n\t19106: 0x000071DD,\n\t19107: 0x000044A2,\n\t19108: 0x0000536D,\n\t19109: 0x00005374,\n\t19110: 0x000286AB,\n\t19111: 0x0000537E,\n\t19112: 0x0000537F,\n\t19113: 0x00021596,\n\t19114: 0x00021613,\n\t19115: 0x000077E6,\n\t19116: 0x00005393,\n\t19117: 0x00028A9B,\n\t19118: 0x000053A0,\n\t19119: 0x000053AB,\n\t19120: 0x000053AE,\n\t19121: 0x000073A7,\n\t19122: 0x00025772,\n\t19123: 0x00003F59,\n\t19124: 0x0000739C,\n\t19125: 0x000053C1,\n\t19126: 0x000053C5,\n\t19127: 0x00006C49,\n\t19128: 0x00004E49,\n\t19129: 0x000057FE,\n\t19130: 0x000053D9,\n\t19131: 0x00003AAB,\n\t19132: 0x00020B8F,\n\t19133: 0x000053E0,\n\t19134: 0x00023FEB,\n\t19135: 0x00022DA3,\n\t19136: 0x000053F6,\n\t19137: 0x00020C77,\n\t19138: 0x00005413,\n\t19139: 0x00007079,\n\t19140: 0x0000552B,\n\t19141: 0x00006657,\n\t19142: 0x00006D5B,\n\t19143: 0x0000546D,\n\t19144: 0x00026B53,\n\t19145: 0x00020D74,\n\t19146: 0x0000555D,\n\t19147: 0x0000548F,\n\t19148: 0x000054A4,\n\t19149: 0x000047A6,\n\t19150: 0x0002170D,\n\t19151: 0x00020EDD,\n\t19152: 0x00003DB4,\n\t19153: 0x00020D4D,\n\t19154: 0x000289BC,\n\t19155: 0x00022698,\n\t19156: 0x00005547,\n\t19157: 0x00004CED,\n\t19158: 0x0000542F,\n\t19159: 0x00007417,\n\t19160: 0x00005586,\n\t19161: 0x000055A9,\n\t19162: 0x00005605,\n\t19163: 0x000218D7,\n\t19164: 0x0002403A,\n\t19165: 0x00004552,\n\t19166: 0x00024435,\n\t19167: 0x000066B3,\n\t19168: 0x000210B4,\n\t19169: 0x00005637,\n\t19170: 0x000066CD,\n\t19171: 0x0002328A,\n\t19172: 0x000066A4,\n\t19173: 0x000066AD,\n\t19174: 0x0000564D,\n\t19175: 0x0000564F,\n\t19176: 0x000078F1,\n\t19177: 0x000056F1,\n\t19178: 0x00009787,\n\t19179: 0x000053FE,\n\t19180: 0x00005700,\n\t19181: 0x000056EF,\n\t19182: 0x000056ED,\n\t19183: 0x00028B66,\n\t19184: 0x00003623,\n\t19185: 0x0002124F,\n\t19186: 0x00005746,\n\t19187: 0x000241A5,\n\t19188: 0x00006C6E,\n\t19189: 0x0000708B,\n\t19190: 0x00005742,\n\t19191: 0x000036B1,\n\t19192: 0x00026C7E,\n\t19193: 0x000057E6,\n\t19194: 0x00021416,\n\t19195: 0x00005803,\n\t19196: 0x00021454,\n\t19197: 0x00024363,\n\t19198: 0x00005826,\n\t19199: 0x00024BF5,\n\t19200: 0x0000585C,\n\t19201: 0x000058AA,\n\t19202: 0x00003561,\n\t19203: 0x000058E0,\n\t19204: 0x000058DC,\n\t19205: 0x0002123C,\n\t19206: 0x000058FB,\n\t19207: 0x00005BFF,\n\t19208: 0x00005743,\n\t19209: 0x0002A150,\n\t19210: 0x00024278,\n\t19211: 0x000093D3,\n\t19212: 0x000035A1,\n\t19213: 0x0000591F,\n\t19214: 0x000068A6,\n\t19215: 0x000036C3,\n\t19216: 0x00006E59,\n\t19217: 0x0002163E,\n\t19218: 0x00005A24,\n\t19219: 0x00005553,\n\t19220: 0x00021692,\n\t19221: 0x00008505,\n\t19222: 0x000059C9,\n\t19223: 0x00020D4E,\n\t19224: 0x00026C81,\n\t19225: 0x00026D2A,\n\t19226: 0x000217DC,\n\t19227: 0x000059D9,\n\t19228: 0x000217FB,\n\t19229: 0x000217B2,\n\t19230: 0x00026DA6,\n\t19231: 0x00006D71,\n\t19232: 0x00021828,\n\t19233: 0x000216D5,\n\t19234: 0x000059F9,\n\t19235: 0x00026E45,\n\t19236: 0x00005AAB,\n\t19237: 0x00005A63,\n\t19238: 0x000036E6,\n\t19239: 0x000249A9,\n\t19240: 0x00005A77,\n\t19241: 0x00003708,\n\t19242: 0x00005A96,\n\t19243: 0x00007465,\n\t19244: 0x00005AD3,\n\t19245: 0x00026FA1,\n\t19246: 0x00022554,\n\t19247: 0x00003D85,\n\t19248: 0x00021911,\n\t19249: 0x00003732,\n\t19250: 0x000216B8,\n\t19251: 0x00005E83,\n\t19252: 0x000052D0,\n\t19253: 0x00005B76,\n\t19254: 0x00006588,\n\t19255: 0x00005B7C,\n\t19256: 0x00027A0E,\n\t19257: 0x00004004,\n\t19258: 0x0000485D,\n\t19259: 0x00020204,\n\t19260: 0x00005BD5,\n\t19261: 0x00006160,\n\t19262: 0x00021A34,\n\t19263: 0x000259CC,\n\t19264: 0x000205A5,\n\t19265: 0x00005BF3,\n\t19266: 0x00005B9D,\n\t19267: 0x00004D10,\n\t19268: 0x00005C05,\n\t19269: 0x00021B44,\n\t19270: 0x00005C13,\n\t19271: 0x000073CE,\n\t19272: 0x00005C14,\n\t19273: 0x00021CA5,\n\t19274: 0x00026B28,\n\t19275: 0x00005C49,\n\t19276: 0x000048DD,\n\t19277: 0x00005C85,\n\t19278: 0x00005CE9,\n\t19279: 0x00005CEF,\n\t19280: 0x00005D8B,\n\t19281: 0x00021DF9,\n\t19282: 0x00021E37,\n\t19283: 0x00005D10,\n\t19284: 0x00005D18,\n\t19285: 0x00005D46,\n\t19286: 0x00021EA4,\n\t19287: 0x00005CBA,\n\t19288: 0x00005DD7,\n\t19289: 0x000082FC,\n\t19290: 0x0000382D,\n\t19291: 0x00024901,\n\t19292: 0x00022049,\n\t19293: 0x00022173,\n\t19294: 0x00008287,\n\t19295: 0x00003836,\n\t19296: 0x00003BC2,\n\t19297: 0x00005E2E,\n\t19298: 0x00006A8A,\n\t19299: 0x00005E75,\n\t19300: 0x00005E7A,\n\t19301: 0x000244BC,\n\t19302: 0x00020CD3,\n\t19303: 0x000053A6,\n\t19304: 0x00004EB7,\n\t19305: 0x00005ED0,\n\t19306: 0x000053A8,\n\t19307: 0x00021771,\n\t19308: 0x00005E09,\n\t19309: 0x00005EF4,\n\t19310: 0x00028482,\n\t19311: 0x00005EF9,\n\t19312: 0x00005EFB,\n\t19313: 0x000038A0,\n\t19314: 0x00005EFC,\n\t19315: 0x0000683E,\n\t19316: 0x0000941B,\n\t19317: 0x00005F0D,\n\t19318: 0x000201C1,\n\t19319: 0x0002F894,\n\t19320: 0x00003ADE,\n\t19321: 0x000048AE,\n\t19322: 0x0002133A,\n\t19323: 0x00005F3A,\n\t19324: 0x00026888,\n\t19325: 0x000223D0,\n\t19326: 0x00005F58,\n\t19327: 0x00022471,\n\t19328: 0x00005F63,\n\t19329: 0x000097BD,\n\t19330: 0x00026E6E,\n\t19331: 0x00005F72,\n\t19332: 0x00009340,\n\t19333: 0x00028A36,\n\t19334: 0x00005FA7,\n\t19335: 0x00005DB6,\n\t19336: 0x00003D5F,\n\t19337: 0x00025250,\n\t19338: 0x00021F6A,\n\t19339: 0x000270F8,\n\t19340: 0x00022668,\n\t19341: 0x000091D6,\n\t19342: 0x0002029E,\n\t19343: 0x00028A29,\n\t19344: 0x00006031,\n\t19345: 0x00006685,\n\t19346: 0x00021877,\n\t19347: 0x00003963,\n\t19348: 0x00003DC7,\n\t19349: 0x00003639,\n\t19350: 0x00005790,\n\t19351: 0x000227B4,\n\t19352: 0x00007971,\n\t19353: 0x00003E40,\n\t19354: 0x0000609E,\n\t19355: 0x000060A4,\n\t19356: 0x000060B3,\n\t19357: 0x00024982,\n\t19358: 0x0002498F,\n\t19359: 0x00027A53,\n\t19360: 0x000074A4,\n\t19361: 0x000050E1,\n\t19362: 0x00005AA0,\n\t19363: 0x00006164,\n\t19364: 0x00008424,\n\t19365: 0x00006142,\n\t19366: 0x0002F8A6,\n\t19367: 0x00026ED2,\n\t19368: 0x00006181,\n\t19369: 0x000051F4,\n\t19370: 0x00020656,\n\t19371: 0x00006187,\n\t19372: 0x00005BAA,\n\t19373: 0x00023FB7,\n\t19374: 0x0002285F,\n\t19375: 0x000061D3,\n\t19376: 0x00028B9D,\n\t19377: 0x0002995D,\n\t19378: 0x000061D0,\n\t19379: 0x00003932,\n\t19380: 0x00022980,\n\t19381: 0x000228C1,\n\t19382: 0x00006023,\n\t19383: 0x0000615C,\n\t19384: 0x0000651E,\n\t19385: 0x0000638B,\n\t19386: 0x00020118,\n\t19387: 0x000062C5,\n\t19388: 0x00021770,\n\t19389: 0x000062D5,\n\t19390: 0x00022E0D,\n\t19391: 0x0000636C,\n\t19392: 0x000249DF,\n\t19393: 0x00003A17,\n\t19394: 0x00006438,\n\t19395: 0x000063F8,\n\t19396: 0x0002138E,\n\t19397: 0x000217FC,\n\t19398: 0x00006490,\n\t19399: 0x00006F8A,\n\t19400: 0x00022E36,\n\t19401: 0x00009814,\n\t19402: 0x0002408C,\n\t19403: 0x0002571D,\n\t19404: 0x000064E1,\n\t19405: 0x000064E5,\n\t19406: 0x0000947B,\n\t19407: 0x00003A66,\n\t19408: 0x0000643A,\n\t19409: 0x00003A57,\n\t19410: 0x0000654D,\n\t19411: 0x00006F16,\n\t19412: 0x00024A28,\n\t19413: 0x00024A23,\n\t19414: 0x00006585,\n\t19415: 0x0000656D,\n\t19416: 0x0000655F,\n\t19417: 0x0002307E,\n\t19418: 0x000065B5,\n\t19419: 0x00024940,\n\t19420: 0x00004B37,\n\t19421: 0x000065D1,\n\t19422: 0x000040D8,\n\t19423: 0x00021829,\n\t19424: 0x000065E0,\n\t19425: 0x000065E3,\n\t19426: 0x00005FDF,\n\t19427: 0x00023400,\n\t19428: 0x00006618,\n\t19429: 0x000231F7,\n\t19430: 0x000231F8,\n\t19431: 0x00006644,\n\t19432: 0x000231A4,\n\t19433: 0x000231A5,\n\t19434: 0x0000664B,\n\t19435: 0x00020E75,\n\t19436: 0x00006667,\n\t19437: 0x000251E6,\n\t19438: 0x00006673,\n\t19439: 0x00006674,\n\t19440: 0x00021E3D,\n\t19441: 0x00023231,\n\t19442: 0x000285F4,\n\t19443: 0x000231C8,\n\t19444: 0x00025313,\n\t19445: 0x000077C5,\n\t19446: 0x000228F7,\n\t19447: 0x000099A4,\n\t19448: 0x00006702,\n\t19449: 0x0002439C,\n\t19450: 0x00024A21,\n\t19451: 0x00003B2B,\n\t19452: 0x000069FA,\n\t19453: 0x000237C2,\n\t19454: 0x0000675E,\n\t19455: 0x00006767,\n\t19456: 0x00006762,\n\t19457: 0x000241CD,\n\t19458: 0x000290ED,\n\t19459: 0x000067D7,\n\t19460: 0x000044E9,\n\t19461: 0x00006822,\n\t19462: 0x00006E50,\n\t19463: 0x0000923C,\n\t19464: 0x00006801,\n\t19465: 0x000233E6,\n\t19466: 0x00026DA0,\n\t19467: 0x0000685D,\n\t19468: 0x0002346F,\n\t19469: 0x000069E1,\n\t19470: 0x00006A0B,\n\t19471: 0x00028ADF,\n\t19472: 0x00006973,\n\t19473: 0x000068C3,\n\t19474: 0x000235CD,\n\t19475: 0x00006901,\n\t19476: 0x00006900,\n\t19477: 0x00003D32,\n\t19478: 0x00003A01,\n\t19479: 0x0002363C,\n\t19480: 0x00003B80,\n\t19481: 0x000067AC,\n\t19482: 0x00006961,\n\t19483: 0x00028A4A,\n\t19484: 0x000042FC,\n\t19485: 0x00006936,\n\t19486: 0x00006998,\n\t19487: 0x00003BA1,\n\t19488: 0x000203C9,\n\t19489: 0x00008363,\n\t19490: 0x00005090,\n\t19491: 0x000069F9,\n\t19492: 0x00023659,\n\t19493: 0x0002212A,\n\t19494: 0x00006A45,\n\t19495: 0x00023703,\n\t19496: 0x00006A9D,\n\t19497: 0x00003BF3,\n\t19498: 0x000067B1,\n\t19499: 0x00006AC8,\n\t19500: 0x0002919C,\n\t19501: 0x00003C0D,\n\t19502: 0x00006B1D,\n\t19503: 0x00020923,\n\t19504: 0x000060DE,\n\t19505: 0x00006B35,\n\t19506: 0x00006B74,\n\t19507: 0x000227CD,\n\t19508: 0x00006EB5,\n\t19509: 0x00023ADB,\n\t19510: 0x000203B5,\n\t19511: 0x00021958,\n\t19512: 0x00003740,\n\t19513: 0x00005421,\n\t19514: 0x00023B5A,\n\t19515: 0x00006BE1,\n\t19516: 0x00023EFC,\n\t19517: 0x00006BDC,\n\t19518: 0x00006C37,\n\t19519: 0x0002248B,\n\t19520: 0x000248F1,\n\t19521: 0x00026B51,\n\t19522: 0x00006C5A,\n\t19523: 0x00008226,\n\t19524: 0x00006C79,\n\t19525: 0x00023DBC,\n\t19526: 0x000044C5,\n\t19527: 0x00023DBD,\n\t19528: 0x000241A4,\n\t19529: 0x0002490C,\n\t19530: 0x00024900,\n\t19531: 0x00023CC9,\n\t19532: 0x000036E5,\n\t19533: 0x00003CEB,\n\t19534: 0x00020D32,\n\t19535: 0x00009B83,\n\t19536: 0x000231F9,\n\t19537: 0x00022491,\n\t19538: 0x00007F8F,\n\t19539: 0x00006837,\n\t19540: 0x00026D25,\n\t19541: 0x00026DA1,\n\t19542: 0x00026DEB,\n\t19543: 0x00006D96,\n\t19544: 0x00006D5C,\n\t19545: 0x00006E7C,\n\t19546: 0x00006F04,\n\t19547: 0x0002497F,\n\t19548: 0x00024085,\n\t19549: 0x00026E72,\n\t19550: 0x00008533,\n\t19551: 0x00026F74,\n\t19552: 0x000051C7,\n\t19553: 0x00006C9C,\n\t19554: 0x00006E1D,\n\t19555: 0x0000842E,\n\t19556: 0x00028B21,\n\t19557: 0x00006E2F,\n\t19558: 0x00023E2F,\n\t19559: 0x00007453,\n\t19560: 0x00023F82,\n\t19561: 0x000079CC,\n\t19562: 0x00006E4F,\n\t19563: 0x00005A91,\n\t19564: 0x0002304B,\n\t19565: 0x00006FF8,\n\t19566: 0x0000370D,\n\t19567: 0x00006F9D,\n\t19568: 0x00023E30,\n\t19569: 0x00006EFA,\n\t19570: 0x00021497,\n\t19571: 0x0002403D,\n\t19572: 0x00004555,\n\t19573: 0x000093F0,\n\t19574: 0x00006F44,\n\t19575: 0x00006F5C,\n\t19576: 0x00003D4E,\n\t19577: 0x00006F74,\n\t19578: 0x00029170,\n\t19579: 0x00003D3B,\n\t19580: 0x00006F9F,\n\t19581: 0x00024144,\n\t19582: 0x00006FD3,\n\t19583: 0x00024091,\n\t19584: 0x00024155,\n\t19585: 0x00024039,\n\t19586: 0x00023FF0,\n\t19587: 0x00023FB4,\n\t19588: 0x0002413F,\n\t19589: 0x000051DF,\n\t19590: 0x00024156,\n\t19591: 0x00024157,\n\t19592: 0x00024140,\n\t19593: 0x000261DD,\n\t19594: 0x0000704B,\n\t19595: 0x0000707E,\n\t19596: 0x000070A7,\n\t19597: 0x00007081,\n\t19598: 0x000070CC,\n\t19599: 0x000070D5,\n\t19600: 0x000070D6,\n\t19601: 0x000070DF,\n\t19602: 0x00004104,\n\t19603: 0x00003DE8,\n\t19604: 0x000071B4,\n\t19605: 0x00007196,\n\t19606: 0x00024277,\n\t19607: 0x0000712B,\n\t19608: 0x00007145,\n\t19609: 0x00005A88,\n\t19610: 0x0000714A,\n\t19611: 0x0000716E,\n\t19612: 0x00005C9C,\n\t19613: 0x00024365,\n\t19614: 0x0000714F,\n\t19615: 0x00009362,\n\t19616: 0x000242C1,\n\t19617: 0x0000712C,\n\t19618: 0x0002445A,\n\t19619: 0x00024A27,\n\t19620: 0x00024A22,\n\t19621: 0x000071BA,\n\t19622: 0x00028BE8,\n\t19623: 0x000070BD,\n\t19624: 0x0000720E,\n\t19625: 0x00009442,\n\t19626: 0x00007215,\n\t19627: 0x00005911,\n\t19628: 0x00009443,\n\t19629: 0x00007224,\n\t19630: 0x00009341,\n\t19631: 0x00025605,\n\t19632: 0x0000722E,\n\t19633: 0x00007240,\n\t19634: 0x00024974,\n\t19635: 0x000068BD,\n\t19636: 0x00007255,\n\t19637: 0x00007257,\n\t19638: 0x00003E55,\n\t19639: 0x00023044,\n\t19640: 0x0000680D,\n\t19641: 0x00006F3D,\n\t19642: 0x00007282,\n\t19643: 0x0000732A,\n\t19644: 0x0000732B,\n\t19645: 0x00024823,\n\t19646: 0x0002882B,\n\t19647: 0x000048ED,\n\t19648: 0x00028804,\n\t19649: 0x00007328,\n\t19650: 0x0000732E,\n\t19651: 0x000073CF,\n\t19652: 0x000073AA,\n\t19653: 0x00020C3A,\n\t19654: 0x00026A2E,\n\t19655: 0x000073C9,\n\t19656: 0x00007449,\n\t19657: 0x000241E2,\n\t19658: 0x000216E7,\n\t19659: 0x00024A24,\n\t19660: 0x00006623,\n\t19661: 0x000036C5,\n\t19662: 0x000249B7,\n\t19663: 0x0002498D,\n\t19664: 0x000249FB,\n\t19665: 0x000073F7,\n\t19666: 0x00007415,\n\t19667: 0x00006903,\n\t19668: 0x00024A26,\n\t19669: 0x00007439,\n\t19670: 0x000205C3,\n\t19671: 0x00003ED7,\n\t19672: 0x0000745C,\n\t19673: 0x000228AD,\n\t19674: 0x00007460,\n\t19675: 0x00028EB2,\n\t19676: 0x00007447,\n\t19677: 0x000073E4,\n\t19678: 0x00007476,\n\t19679: 0x000083B9,\n\t19680: 0x0000746C,\n\t19681: 0x00003730,\n\t19682: 0x00007474,\n\t19683: 0x000093F1,\n\t19684: 0x00006A2C,\n\t19685: 0x00007482,\n\t19686: 0x00004953,\n\t19687: 0x00024A8C,\n\t19688: 0x0002415F,\n\t19689: 0x00024A79,\n\t19690: 0x00028B8F,\n\t19691: 0x00005B46,\n\t19692: 0x00028C03,\n\t19693: 0x0002189E,\n\t19694: 0x000074C8,\n\t19695: 0x00021988,\n\t19696: 0x0000750E,\n\t19697: 0x000074E9,\n\t19698: 0x0000751E,\n\t19699: 0x00028ED9,\n\t19700: 0x00021A4B,\n\t19701: 0x00005BD7,\n\t19702: 0x00028EAC,\n\t19703: 0x00009385,\n\t19704: 0x0000754D,\n\t19705: 0x0000754A,\n\t19706: 0x00007567,\n\t19707: 0x0000756E,\n\t19708: 0x00024F82,\n\t19709: 0x00003F04,\n\t19710: 0x00024D13,\n\t19711: 0x0000758E,\n\t19712: 0x0000745D,\n\t19713: 0x0000759E,\n\t19714: 0x000075B4,\n\t19715: 0x00007602,\n\t19716: 0x0000762C,\n\t19717: 0x00007651,\n\t19718: 0x0000764F,\n\t19719: 0x0000766F,\n\t19720: 0x00007676,\n\t19721: 0x000263F5,\n\t19722: 0x00007690,\n\t19723: 0x000081EF,\n\t19724: 0x000037F8,\n\t19725: 0x00026911,\n\t19726: 0x0002690E,\n\t19727: 0x000076A1,\n\t19728: 0x000076A5,\n\t19729: 0x000076B7,\n\t19730: 0x000076CC,\n\t19731: 0x00026F9F,\n\t19732: 0x00008462,\n\t19733: 0x0002509D,\n\t19734: 0x0002517D,\n\t19735: 0x00021E1C,\n\t19736: 0x0000771E,\n\t19737: 0x00007726,\n\t19738: 0x00007740,\n\t19739: 0x000064AF,\n\t19740: 0x00025220,\n\t19741: 0x00007758,\n\t19742: 0x000232AC,\n\t19743: 0x000077AF,\n\t19744: 0x00028964,\n\t19745: 0x00028968,\n\t19746: 0x000216C1,\n\t19747: 0x000077F4,\n\t19748: 0x00007809,\n\t19749: 0x00021376,\n\t19750: 0x00024A12,\n\t19751: 0x000068CA,\n\t19752: 0x000078AF,\n\t19753: 0x000078C7,\n\t19754: 0x000078D3,\n\t19755: 0x000096A5,\n\t19756: 0x0000792E,\n\t19757: 0x000255E0,\n\t19758: 0x000078D7,\n\t19759: 0x00007934,\n\t19760: 0x000078B1,\n\t19761: 0x0002760C,\n\t19762: 0x00008FB8,\n\t19763: 0x00008884,\n\t19764: 0x00028B2B,\n\t19765: 0x00026083,\n\t19766: 0x0002261C,\n\t19767: 0x00007986,\n\t19768: 0x00008900,\n\t19769: 0x00006902,\n\t19770: 0x00007980,\n\t19771: 0x00025857,\n\t19772: 0x0000799D,\n\t19773: 0x00027B39,\n\t19774: 0x0000793C,\n\t19775: 0x000079A9,\n\t19776: 0x00006E2A,\n\t19777: 0x00027126,\n\t19778: 0x00003EA8,\n\t19779: 0x000079C6,\n\t19780: 0x0002910D,\n\t19781: 0x000079D4,\n}\n\nconst numEncodeTables = 8\n\n// encodeX are the encoding tables from Unicode to Big5 code,\n// sorted by decreasing length.\n// encode0: 42633 entries for runes in [131105, 173738).\n// encode1: 29004 entries for runes in [ 11904,  40908).\n// encode2:  2176 entries for runes in [  7870,  10046).\n// encode3:   939 entries for runes in [   167,   1106).\n// encode4:   446 entries for runes in [ 65072,  65518).\n// encode5:   432 entries for runes in [194597, 195029).\n// encode6:   263 entries for runes in [ 63751,  64014).\n// encode7:     1 entries for runes in [175615, 175616).\n\nconst encode0Low, encode0High = 131105, 173738\n\nvar encode0 = [...]uint16{\n\t131105 - 131105: 0x9C71,\n\t131134 - 131105: 0x9375,\n\t131142 - 131105: 0x9376,\n\t131150 - 131105: 0x9548,\n\t131176 - 131105: 0x8EC6,\n\t131206 - 131105: 0x8BC5,\n\t131207 - 131105: 0x8BFA,\n\t131210 - 131105: 0xC87C,\n\t131220 - 131105: 0x9AB4,\n\t131274 - 131105: 0x884E,\n\t131275 - 131105: 0x884B,\n\t131276 - 131105: 0xC87A,\n\t131277 - 131105: 0x8848,\n\t131281 - 131105: 0x8847,\n\t131310 - 131105: 0xA0F6,\n\t131340 - 131105: 0x8845,\n\t131342 - 131105: 0x8853,\n\t131352 - 131105: 0xFCAD,\n\t131492 - 131105: 0x8CF5,\n\t131497 - 131105: 0x8AAD,\n\t131499 - 131105: 0x9272,\n\t131521 - 131105: 0xFC47,\n\t131540 - 131105: 0x94DF,\n\t131570 - 131105: 0x9FD1,\n\t131588 - 131105: 0xFBCB,\n\t131596 - 131105: 0x927D,\n\t131604 - 131105: 0x98A4,\n\t131641 - 131105: 0x8CF9,\n\t131675 - 131105: 0x94E7,\n\t131700 - 131105: 0x90CB,\n\t131701 - 131105: 0x927B,\n\t131737 - 131105: 0x94D8,\n\t131742 - 131105: 0xFC5F,\n\t131744 - 131105: 0xFA54,\n\t131767 - 131105: 0x9AB5,\n\t131775 - 131105: 0x96DA,\n\t131776 - 131105: 0x9279,\n\t131813 - 131105: 0xFA74,\n\t131850 - 131105: 0x9275,\n\t131877 - 131105: 0x8DFB,\n\t131905 - 131105: 0x8A49,\n\t131909 - 131105: 0x92DF,\n\t131910 - 131105: 0x9B7C,\n\t131911 - 131105: 0xFA63,\n\t131966 - 131105: 0xFA60,\n\t131967 - 131105: 0x926D,\n\t131968 - 131105: 0xFA62,\n\t132000 - 131105: 0x9AB6,\n\t132007 - 131105: 0x976B,\n\t132021 - 131105: 0xFD6A,\n\t132041 - 131105: 0xFD54,\n\t132043 - 131105: 0x9273,\n\t132085 - 131105: 0x97D8,\n\t132092 - 131105: 0x9FBB,\n\t132115 - 131105: 0x9342,\n\t132116 - 131105: 0x9276,\n\t132127 - 131105: 0xFA65,\n\t132197 - 131105: 0x926C,\n\t132231 - 131105: 0xFA6E,\n\t132238 - 131105: 0x9EE0,\n\t132241 - 131105: 0x92C0,\n\t132242 - 131105: 0x92BF,\n\t132259 - 131105: 0x92BE,\n\t132311 - 131105: 0x9ABA,\n\t132348 - 131105: 0x8AB3,\n\t132350 - 131105: 0x9775,\n\t132423 - 131105: 0xFA40,\n\t132494 - 131105: 0xFA76,\n\t132517 - 131105: 0xFBD0,\n\t132531 - 131105: 0xFA7B,\n\t132547 - 131105: 0xFE6D,\n\t132554 - 131105: 0x9BB3,\n\t132560 - 131105: 0x89CC,\n\t132565 - 131105: 0x9ABE,\n\t132575 - 131105: 0xFA42,\n\t132576 - 131105: 0x92BC,\n\t132587 - 131105: 0x945C,\n\t132625 - 131105: 0x9BB5,\n\t132629 - 131105: 0x9ABF,\n\t132633 - 131105: 0x98A7,\n\t132634 - 131105: 0x97A4,\n\t132656 - 131105: 0x90FD,\n\t132694 - 131105: 0xFC7B,\n\t132726 - 131105: 0x9AC0,\n\t132878 - 131105: 0x92C3,\n\t132913 - 131105: 0x8AAA,\n\t132985 - 131105: 0x9BD0,\n\t133164 - 131105: 0x9550,\n\t133235 - 131105: 0x92C6,\n\t133333 - 131105: 0x98A6,\n\t133398 - 131105: 0x9546,\n\t133411 - 131105: 0xFD63,\n\t133460 - 131105: 0xFAC2,\n\t133497 - 131105: 0x9EC3,\n\t133607 - 131105: 0x89B2,\n\t133649 - 131105: 0x9C66,\n\t133712 - 131105: 0x9053,\n\t133743 - 131105: 0x8C62,\n\t133770 - 131105: 0x87A8,\n\t133812 - 131105: 0x97C1,\n\t133826 - 131105: 0x9AC4,\n\t133837 - 131105: 0x9AC5,\n\t133901 - 131105: 0x8EEF,\n\t134031 - 131105: 0xFAE9,\n\t134047 - 131105: 0x8D40,\n\t134056 - 131105: 0x9262,\n\t134057 - 131105: 0x8AF7,\n\t134079 - 131105: 0x9AC6,\n\t134086 - 131105: 0x92E1,\n\t134091 - 131105: 0x9AC9,\n\t134114 - 131105: 0xFAC6,\n\t134123 - 131105: 0x97A5,\n\t134139 - 131105: 0x9ACB,\n\t134143 - 131105: 0xFA72,\n\t134155 - 131105: 0x8A5E,\n\t134157 - 131105: 0x94E0,\n\t134176 - 131105: 0x92CC,\n\t134196 - 131105: 0x8AE5,\n\t134202 - 131105: 0xFE5C,\n\t134203 - 131105: 0x9ACC,\n\t134209 - 131105: 0x9DF9,\n\t134210 - 131105: 0x8A43,\n\t134211 - 131105: 0x8AA6,\n\t134227 - 131105: 0x9ACD,\n\t134245 - 131105: 0x9ACE,\n\t134263 - 131105: 0xFAEE,\n\t134264 - 131105: 0x9BCC,\n\t134268 - 131105: 0x9ACF,\n\t134285 - 131105: 0x9AD1,\n\t134294 - 131105: 0x9DFA,\n\t134300 - 131105: 0x9D7C,\n\t134325 - 131105: 0x9AD3,\n\t134328 - 131105: 0x97A6,\n\t134351 - 131105: 0x995F,\n\t134355 - 131105: 0xFBF6,\n\t134356 - 131105: 0x9FC5,\n\t134357 - 131105: 0x8A59,\n\t134358 - 131105: 0x8B6B,\n\t134365 - 131105: 0x9AD4,\n\t134381 - 131105: 0x9AD5,\n\t134399 - 131105: 0x97A2,\n\t134421 - 131105: 0x8A44,\n\t134440 - 131105: 0x9F4A,\n\t134449 - 131105: 0x90A1,\n\t134450 - 131105: 0xFDA4,\n\t134470 - 131105: 0x8A64,\n\t134471 - 131105: 0x8AF2,\n\t134472 - 131105: 0x8AF8,\n\t134473 - 131105: 0x9DD8,\n\t134476 - 131105: 0x94D6,\n\t134477 - 131105: 0xFAFE,\n\t134478 - 131105: 0xFBA7,\n\t134511 - 131105: 0x9AD6,\n\t134513 - 131105: 0x9F4D,\n\t134516 - 131105: 0xFAF6,\n\t134524 - 131105: 0x8A57,\n\t134526 - 131105: 0x8B43,\n\t134527 - 131105: 0x8B44,\n\t134550 - 131105: 0x8AB6,\n\t134556 - 131105: 0x8AC0,\n\t134567 - 131105: 0x9E54,\n\t134578 - 131105: 0x9AD7,\n\t134600 - 131105: 0x9AD8,\n\t134660 - 131105: 0x9ADC,\n\t134665 - 131105: 0x8ACA,\n\t134666 - 131105: 0x9EA8,\n\t134669 - 131105: 0x9263,\n\t134670 - 131105: 0x9ADD,\n\t134671 - 131105: 0x8B65,\n\t134672 - 131105: 0x8B6F,\n\t134673 - 131105: 0x8B7E,\n\t134678 - 131105: 0x8F43,\n\t134685 - 131105: 0x92D0,\n\t134732 - 131105: 0x8AF4,\n\t134765 - 131105: 0x9DBE,\n\t134771 - 131105: 0x9AE1,\n\t134773 - 131105: 0xFCDE,\n\t134774 - 131105: 0x9DFD,\n\t134775 - 131105: 0x8B66,\n\t134776 - 131105: 0x8B70,\n\t134777 - 131105: 0x8B75,\n\t134778 - 131105: 0x8AE4,\n\t134779 - 131105: 0x8BA4,\n\t134796 - 131105: 0x8AED,\n\t134806 - 131105: 0x8A5D,\n\t134808 - 131105: 0x8B48,\n\t134813 - 131105: 0x9DED,\n\t134818 - 131105: 0x9E40,\n\t134826 - 131105: 0x8AEF,\n\t134827 - 131105: 0x8AF6,\n\t134828 - 131105: 0x9E76,\n\t134838 - 131105: 0x9EE3,\n\t134871 - 131105: 0x9ADE,\n\t134872 - 131105: 0x8DFE,\n\t134877 - 131105: 0xFAFC,\n\t134904 - 131105: 0x9CB1,\n\t134905 - 131105: 0x9E77,\n\t134906 - 131105: 0x8B64,\n\t134907 - 131105: 0x8B67,\n\t134941 - 131105: 0x974B,\n\t134950 - 131105: 0x9653,\n\t134957 - 131105: 0x9AE0,\n\t134958 - 131105: 0x8B4A,\n\t134960 - 131105: 0x8AF1,\n\t134961 - 131105: 0x8AD7,\n\t134971 - 131105: 0xA0AB,\n\t134988 - 131105: 0x8AB5,\n\t135012 - 131105: 0x8A5F,\n\t135053 - 131105: 0x8AEE,\n\t135056 - 131105: 0x9ADF,\n\t135085 - 131105: 0x8AFE,\n\t135092 - 131105: 0x8A58,\n\t135093 - 131105: 0x8BA3,\n\t135094 - 131105: 0x8BA7,\n\t135100 - 131105: 0x9AE3,\n\t135135 - 131105: 0x9261,\n\t135146 - 131105: 0x9DD7,\n\t135147 - 131105: 0x9E7D,\n\t135148 - 131105: 0x9EA7,\n\t135149 - 131105: 0x9EAB,\n\t135188 - 131105: 0x9042,\n\t135197 - 131105: 0x8B79,\n\t135198 - 131105: 0x8B7A,\n\t135247 - 131105: 0x9AE6,\n\t135260 - 131105: 0x9AE5,\n\t135279 - 131105: 0x8A7E,\n\t135285 - 131105: 0x9E44,\n\t135286 - 131105: 0x9AE7,\n\t135287 - 131105: 0x8A7C,\n\t135288 - 131105: 0x8B71,\n\t135291 - 131105: 0x9AE9,\n\t135304 - 131105: 0x9AEA,\n\t135318 - 131105: 0x9AEB,\n\t135325 - 131105: 0x8ABD,\n\t135348 - 131105: 0xFB4E,\n\t135359 - 131105: 0x9AED,\n\t135360 - 131105: 0x8AF9,\n\t135361 - 131105: 0x9E63,\n\t135367 - 131105: 0x8B49,\n\t135368 - 131105: 0x8ACE,\n\t135369 - 131105: 0x8B6E,\n\t135375 - 131105: 0x8AE8,\n\t135379 - 131105: 0x9AEE,\n\t135396 - 131105: 0x92CE,\n\t135412 - 131105: 0x8A5A,\n\t135413 - 131105: 0x8B7B,\n\t135414 - 131105: 0x8B7C,\n\t135471 - 131105: 0x9AEF,\n\t135483 - 131105: 0x9AF0,\n\t135485 - 131105: 0x8AFA,\n\t135493 - 131105: 0x8941,\n\t135496 - 131105: 0x8B72,\n\t135503 - 131105: 0x8AF3,\n\t135552 - 131105: 0x8BA8,\n\t135559 - 131105: 0x9EAE,\n\t135641 - 131105: 0x9E72,\n\t135740 - 131105: 0xFB73,\n\t135759 - 131105: 0xFB5F,\n\t135804 - 131105: 0x90BA,\n\t135848 - 131105: 0x91FE,\n\t135849 - 131105: 0x9EF6,\n\t135856 - 131105: 0x97ED,\n\t135907 - 131105: 0x9AF3,\n\t135934 - 131105: 0xA0EE,\n\t135938 - 131105: 0x967C,\n\t135939 - 131105: 0x9345,\n\t135940 - 131105: 0x986E,\n\t135941 - 131105: 0xFA56,\n\t135990 - 131105: 0x9AF5,\n\t135994 - 131105: 0xFC4B,\n\t136053 - 131105: 0x9AF4,\n\t136054 - 131105: 0xFEDE,\n\t136078 - 131105: 0xFCB7,\n\t136088 - 131105: 0x97F1,\n\t136092 - 131105: 0x97C7,\n\t136133 - 131105: 0x9CCB,\n\t136134 - 131105: 0x9240,\n\t136173 - 131105: 0x9CE8,\n\t136190 - 131105: 0x91FD,\n\t136211 - 131105: 0x974E,\n\t136214 - 131105: 0xFB68,\n\t136228 - 131105: 0x976C,\n\t136255 - 131105: 0x8CC2,\n\t136274 - 131105: 0x97E8,\n\t136276 - 131105: 0xFB6A,\n\t136277 - 131105: 0x8B74,\n\t136330 - 131105: 0x8EE7,\n\t136343 - 131105: 0xFDC8,\n\t136374 - 131105: 0x9241,\n\t136424 - 131105: 0x96A1,\n\t136445 - 131105: 0x8EF3,\n\t136567 - 131105: 0x9AF7,\n\t136578 - 131105: 0x8FA6,\n\t136598 - 131105: 0xFAD6,\n\t136714 - 131105: 0x9CC7,\n\t136723 - 131105: 0xFAD7,\n\t136729 - 131105: 0x9AF8,\n\t136766 - 131105: 0xFBA1,\n\t136801 - 131105: 0x8EC5,\n\t136850 - 131105: 0xFBA4,\n\t136888 - 131105: 0xFBC2,\n\t136890 - 131105: 0x9AC1,\n\t136896 - 131105: 0x91FA,\n\t136897 - 131105: 0xFEDB,\n\t136898 - 131105: 0x97AB,\n\t136915 - 131105: 0x9147,\n\t136917 - 131105: 0xFBB1,\n\t136927 - 131105: 0x8FEA,\n\t136934 - 131105: 0x94D2,\n\t136935 - 131105: 0xFE61,\n\t136936 - 131105: 0xFACE,\n\t136954 - 131105: 0x92ED,\n\t136955 - 131105: 0x91F3,\n\t136956 - 131105: 0x93C6,\n\t136958 - 131105: 0x935A,\n\t136973 - 131105: 0xFAFB,\n\t136976 - 131105: 0x92EF,\n\t136998 - 131105: 0xFAC8,\n\t137018 - 131105: 0x9847,\n\t137019 - 131105: 0x9366,\n\t137020 - 131105: 0x9855,\n\t137047 - 131105: 0x96E6,\n\t137068 - 131105: 0x9F43,\n\t137069 - 131105: 0x9FAA,\n\t137070 - 131105: 0x94DA,\n\t137071 - 131105: 0x92EE,\n\t137072 - 131105: 0xFCAF,\n\t137073 - 131105: 0xFBFB,\n\t137075 - 131105: 0x8EF9,\n\t137076 - 131105: 0x91F6,\n\t137131 - 131105: 0x9364,\n\t137136 - 131105: 0x94F5,\n\t137137 - 131105: 0x9CB6,\n\t137138 - 131105: 0xFBAD,\n\t137139 - 131105: 0x984E,\n\t137140 - 131105: 0x8F44,\n\t137141 - 131105: 0x96FD,\n\t137155 - 131105: 0x9AF9,\n\t137159 - 131105: 0x9AFA,\n\t137177 - 131105: 0x9769,\n\t137178 - 131105: 0x95D4,\n\t137179 - 131105: 0x984B,\n\t137180 - 131105: 0xFBAA,\n\t137183 - 131105: 0x987C,\n\t137199 - 131105: 0x91EA,\n\t137205 - 131105: 0x9DAF,\n\t137206 - 131105: 0x9DC5,\n\t137208 - 131105: 0x91F1,\n\t137209 - 131105: 0x8EB1,\n\t137210 - 131105: 0x97A9,\n\t137211 - 131105: 0xFBAC,\n\t137212 - 131105: 0xFCB8,\n\t137248 - 131105: 0x9CB9,\n\t137256 - 131105: 0xFBB0,\n\t137257 - 131105: 0xFCD2,\n\t137258 - 131105: 0x93CB,\n\t137261 - 131105: 0x9AFD,\n\t137273 - 131105: 0x91F4,\n\t137274 - 131105: 0x8BAC,\n\t137275 - 131105: 0xA055,\n\t137280 - 131105: 0x9574,\n\t137285 - 131105: 0x95BE,\n\t137298 - 131105: 0x97AD,\n\t137310 - 131105: 0x8EE9,\n\t137313 - 131105: 0x92F8,\n\t137314 - 131105: 0x97BE,\n\t137315 - 131105: 0x916C,\n\t137316 - 131105: 0x94AA,\n\t137335 - 131105: 0xFC63,\n\t137339 - 131105: 0x9DC6,\n\t137347 - 131105: 0x97B5,\n\t137348 - 131105: 0x92B8,\n\t137349 - 131105: 0x91EF,\n\t137374 - 131105: 0xFEA6,\n\t137375 - 131105: 0x9760,\n\t137376 - 131105: 0x9358,\n\t137377 - 131105: 0x9576,\n\t137378 - 131105: 0x8FAC,\n\t137406 - 131105: 0x91EC,\n\t137407 - 131105: 0x97B4,\n\t137425 - 131105: 0x91F7,\n\t137430 - 131105: 0x974A,\n\t137431 - 131105: 0xFB49,\n\t137432 - 131105: 0x9578,\n\t137433 - 131105: 0x93BC,\n\t137466 - 131105: 0x91D6,\n\t137475 - 131105: 0x9355,\n\t137476 - 131105: 0x9356,\n\t137477 - 131105: 0x9851,\n\t137488 - 131105: 0x8FF8,\n\t137489 - 131105: 0xFBC0,\n\t137490 - 131105: 0x93F2,\n\t137493 - 131105: 0x90D0,\n\t137500 - 131105: 0x9C44,\n\t137506 - 131105: 0x9255,\n\t137511 - 131105: 0x9363,\n\t137531 - 131105: 0x91A5,\n\t137540 - 131105: 0xA0ED,\n\t137560 - 131105: 0xFD6B,\n\t137578 - 131105: 0x9AFE,\n\t137596 - 131105: 0x9351,\n\t137600 - 131105: 0x8C57,\n\t137603 - 131105: 0xFA78,\n\t137608 - 131105: 0xFEA8,\n\t137622 - 131105: 0x9350,\n\t137691 - 131105: 0xFA4C,\n\t137715 - 131105: 0x92F7,\n\t137773 - 131105: 0x9B40,\n\t137780 - 131105: 0xFBCE,\n\t137797 - 131105: 0x9B41,\n\t137803 - 131105: 0xFEAD,\n\t137827 - 131105: 0x8761,\n\t138052 - 131105: 0xFBD5,\n\t138177 - 131105: 0x8BC2,\n\t138178 - 131105: 0x9A7C,\n\t138282 - 131105: 0x9B42,\n\t138352 - 131105: 0x9B43,\n\t138402 - 131105: 0x9E79,\n\t138405 - 131105: 0xFBD9,\n\t138412 - 131105: 0x9B44,\n\t138566 - 131105: 0xA0A7,\n\t138579 - 131105: 0x877B,\n\t138590 - 131105: 0x876E,\n\t138640 - 131105: 0x9BF3,\n\t138678 - 131105: 0x8C79,\n\t138682 - 131105: 0x935E,\n\t138698 - 131105: 0x89CB,\n\t138705 - 131105: 0x9F53,\n\t138731 - 131105: 0x93D7,\n\t138745 - 131105: 0xFBE1,\n\t138780 - 131105: 0xFED0,\n\t138787 - 131105: 0x8CF1,\n\t138807 - 131105: 0xFBE2,\n\t138813 - 131105: 0xFCE3,\n\t138889 - 131105: 0x9074,\n\t138916 - 131105: 0xFBE6,\n\t138920 - 131105: 0x9BB7,\n\t138952 - 131105: 0x9B45,\n\t138965 - 131105: 0x9B47,\n\t139023 - 131105: 0x9F50,\n\t139029 - 131105: 0x9B48,\n\t139114 - 131105: 0xFC5B,\n\t139166 - 131105: 0x98A9,\n\t139169 - 131105: 0x9CFD,\n\t139240 - 131105: 0x884C,\n\t139333 - 131105: 0x9B4B,\n\t139337 - 131105: 0xFBEC,\n\t139390 - 131105: 0x8C69,\n\t139418 - 131105: 0x9BA8,\n\t139463 - 131105: 0x8AD5,\n\t139516 - 131105: 0xFA73,\n\t139562 - 131105: 0xFD59,\n\t139611 - 131105: 0x91A2,\n\t139635 - 131105: 0xFBED,\n\t139642 - 131105: 0x9CA9,\n\t139681 - 131105: 0x8AA8,\n\t139713 - 131105: 0x8D42,\n\t139715 - 131105: 0x9BC3,\n\t139784 - 131105: 0x8AE1,\n\t139900 - 131105: 0x9B4E,\n\t140065 - 131105: 0x95D0,\n\t140069 - 131105: 0x905F,\n\t140221 - 131105: 0x97EE,\n\t140240 - 131105: 0xFC4E,\n\t140247 - 131105: 0x9B4F,\n\t140282 - 131105: 0x9B50,\n\t140389 - 131105: 0x9EC6,\n\t140401 - 131105: 0xFC50,\n\t140427 - 131105: 0xFD73,\n\t140433 - 131105: 0xFDA7,\n\t140464 - 131105: 0x9DA2,\n\t140476 - 131105: 0x87D1,\n\t140481 - 131105: 0x87D3,\n\t140489 - 131105: 0x87D4,\n\t140492 - 131105: 0x87D5,\n\t140525 - 131105: 0xFA58,\n\t140563 - 131105: 0xFA5E,\n\t140571 - 131105: 0xA059,\n\t140592 - 131105: 0xFA75,\n\t140628 - 131105: 0xFBBE,\n\t140685 - 131105: 0x9CA2,\n\t140719 - 131105: 0x9370,\n\t140734 - 131105: 0x9371,\n\t140827 - 131105: 0x9377,\n\t140828 - 131105: 0xFEEF,\n\t140843 - 131105: 0x936D,\n\t140904 - 131105: 0xFC5D,\n\t140922 - 131105: 0x90B8,\n\t140950 - 131105: 0x8AFC,\n\t140952 - 131105: 0xFB41,\n\t141044 - 131105: 0x9E6B,\n\t141045 - 131105: 0x94E3,\n\t141046 - 131105: 0x8EE2,\n\t141074 - 131105: 0x8C7D,\n\t141076 - 131105: 0x8ED7,\n\t141083 - 131105: 0x9C4D,\n\t141087 - 131105: 0x96A3,\n\t141098 - 131105: 0x9B51,\n\t141173 - 131105: 0x8AC3,\n\t141185 - 131105: 0x96AA,\n\t141206 - 131105: 0x8CE2,\n\t141236 - 131105: 0xFC68,\n\t141237 - 131105: 0x8B6D,\n\t141261 - 131105: 0xFD67,\n\t141315 - 131105: 0x8AE9,\n\t141407 - 131105: 0xFCA1,\n\t141408 - 131105: 0x936C,\n\t141425 - 131105: 0x9B52,\n\t141485 - 131105: 0xFE70,\n\t141505 - 131105: 0xFCA8,\n\t141559 - 131105: 0xFCE9,\n\t141606 - 131105: 0x9CB4,\n\t141625 - 131105: 0x8AEA,\n\t141647 - 131105: 0x9B53,\n\t141671 - 131105: 0x9B55,\n\t141675 - 131105: 0x96AB,\n\t141696 - 131105: 0xFCA7,\n\t141715 - 131105: 0x9B56,\n\t141926 - 131105: 0x8ABC,\n\t142031 - 131105: 0x8ACB,\n\t142037 - 131105: 0x9B57,\n\t142054 - 131105: 0x89CD,\n\t142056 - 131105: 0x9B59,\n\t142094 - 131105: 0x9B5B,\n\t142114 - 131105: 0x93A5,\n\t142143 - 131105: 0x9B5D,\n\t142147 - 131105: 0x9E4F,\n\t142186 - 131105: 0x93A3,\n\t142282 - 131105: 0x8A7B,\n\t142286 - 131105: 0x8B42,\n\t142374 - 131105: 0x9750,\n\t142375 - 131105: 0x8FB3,\n\t142392 - 131105: 0x8A50,\n\t142412 - 131105: 0x9B60,\n\t142417 - 131105: 0x8B45,\n\t142421 - 131105: 0x8B46,\n\t142434 - 131105: 0x9DFE,\n\t142472 - 131105: 0x9B62,\n\t142491 - 131105: 0x937B,\n\t142497 - 131105: 0x93B1,\n\t142505 - 131105: 0x8A60,\n\t142514 - 131105: 0x8AD8,\n\t142519 - 131105: 0x9B63,\n\t142530 - 131105: 0x8A69,\n\t142534 - 131105: 0x8A47,\n\t142537 - 131105: 0x8ACC,\n\t142599 - 131105: 0x937C,\n\t142600 - 131105: 0x9B65,\n\t142610 - 131105: 0x9B66,\n\t142660 - 131105: 0x8A72,\n\t142668 - 131105: 0x8A7A,\n\t142695 - 131105: 0x93AF,\n\t142733 - 131105: 0x8AB0,\n\t142741 - 131105: 0x9B68,\n\t142752 - 131105: 0x9EA3,\n\t142755 - 131105: 0xFAEC,\n\t142756 - 131105: 0x8B77,\n\t142775 - 131105: 0x9B67,\n\t142830 - 131105: 0x8B59,\n\t142861 - 131105: 0xFCB1,\n\t142902 - 131105: 0xFCBB,\n\t142914 - 131105: 0x9B69,\n\t142968 - 131105: 0x93A8,\n\t142987 - 131105: 0x8AE0,\n\t143027 - 131105: 0x9E51,\n\t143087 - 131105: 0x8F5F,\n\t143220 - 131105: 0x9B6A,\n\t143308 - 131105: 0x9B6B,\n\t143331 - 131105: 0x97EC,\n\t143411 - 131105: 0x9B6C,\n\t143428 - 131105: 0xFE4E,\n\t143435 - 131105: 0xFDC2,\n\t143462 - 131105: 0x9B6D,\n\t143485 - 131105: 0x9167,\n\t143486 - 131105: 0xFCCC,\n\t143502 - 131105: 0x93B6,\n\t143543 - 131105: 0x90E4,\n\t143548 - 131105: 0x90E5,\n\t143578 - 131105: 0x9EF2,\n\t143619 - 131105: 0x93CA,\n\t143677 - 131105: 0x8BBC,\n\t143741 - 131105: 0x8F46,\n\t143746 - 131105: 0x93CF,\n\t143780 - 131105: 0xFCDB,\n\t143781 - 131105: 0xFCDC,\n\t143795 - 131105: 0x93C0,\n\t143816 - 131105: 0xFCE6,\n\t143817 - 131105: 0x96E7,\n\t143850 - 131105: 0x87A7,\n\t143863 - 131105: 0xFCD8,\n\t143864 - 131105: 0xFCD9,\n\t143865 - 131105: 0xFDA6,\n\t143887 - 131105: 0x93CE,\n\t143909 - 131105: 0x95F1,\n\t143919 - 131105: 0x9CE9,\n\t143921 - 131105: 0xFCE4,\n\t143922 - 131105: 0x94AF,\n\t143923 - 131105: 0xFA77,\n\t143924 - 131105: 0x93CC,\n\t143958 - 131105: 0x8CE1,\n\t143966 - 131105: 0x87A9,\n\t143970 - 131105: 0x905A,\n\t144001 - 131105: 0x8C54,\n\t144009 - 131105: 0x93BF,\n\t144010 - 131105: 0xFB51,\n\t144043 - 131105: 0x93B9,\n\t144044 - 131105: 0xFED7,\n\t144045 - 131105: 0x93B7,\n\t144082 - 131105: 0x93D9,\n\t144096 - 131105: 0x93BB,\n\t144097 - 131105: 0x93DA,\n\t144128 - 131105: 0x98A3,\n\t144138 - 131105: 0x90D1,\n\t144159 - 131105: 0x9B6E,\n\t144308 - 131105: 0xFA70,\n\t144332 - 131105: 0x9BEB,\n\t144350 - 131105: 0x9B6F,\n\t144358 - 131105: 0xFCFC,\n\t144372 - 131105: 0x8B40,\n\t144373 - 131105: 0xA07B,\n\t144377 - 131105: 0x8CA1,\n\t144378 - 131105: 0x97F7,\n\t144382 - 131105: 0x93E2,\n\t144384 - 131105: 0xFCD6,\n\t144447 - 131105: 0x9559,\n\t144464 - 131105: 0x93A6,\n\t144495 - 131105: 0xFD40,\n\t144498 - 131105: 0x935F,\n\t144613 - 131105: 0x97F2,\n\t144665 - 131105: 0x9C76,\n\t144688 - 131105: 0x8EF8,\n\t144721 - 131105: 0x8CEB,\n\t144730 - 131105: 0x8F47,\n\t144743 - 131105: 0x9B74,\n\t144789 - 131105: 0x92B4,\n\t144793 - 131105: 0x91ED,\n\t144796 - 131105: 0x96D2,\n\t144827 - 131105: 0x87D8,\n\t144845 - 131105: 0xFD46,\n\t144846 - 131105: 0x8F4F,\n\t144847 - 131105: 0x9549,\n\t144883 - 131105: 0x9B75,\n\t144896 - 131105: 0xFA5C,\n\t144919 - 131105: 0x8751,\n\t144922 - 131105: 0x9B79,\n\t144956 - 131105: 0xFD4B,\n\t144960 - 131105: 0x96D3,\n\t144985 - 131105: 0xFD58,\n\t144991 - 131105: 0x945F,\n\t145015 - 131105: 0xA0F5,\n\t145038 - 131105: 0x87C7,\n\t145054 - 131105: 0x877C,\n\t145062 - 131105: 0x9243,\n\t145069 - 131105: 0x97FA,\n\t145082 - 131105: 0x9DD9,\n\t145119 - 131105: 0x97F4,\n\t145134 - 131105: 0x924D,\n\t145155 - 131105: 0xFD5B,\n\t145174 - 131105: 0x9B7A,\n\t145184 - 131105: 0x9ED5,\n\t145197 - 131105: 0xFAAE,\n\t145199 - 131105: 0x9CC9,\n\t145215 - 131105: 0x9258,\n\t145254 - 131105: 0x8EC8,\n\t145281 - 131105: 0x94B4,\n\t145314 - 131105: 0x93E1,\n\t145340 - 131105: 0x93DF,\n\t145346 - 131105: 0xFCF0,\n\t145365 - 131105: 0x93EC,\n\t145366 - 131105: 0x97F6,\n\t145367 - 131105: 0x96CF,\n\t145466 - 131105: 0x93DE,\n\t145858 - 131105: 0x8ACF,\n\t146087 - 131105: 0x9BA2,\n\t146139 - 131105: 0xFD69,\n\t146158 - 131105: 0x9352,\n\t146170 - 131105: 0x98A2,\n\t146202 - 131105: 0x8CE7,\n\t146266 - 131105: 0xFD6E,\n\t146531 - 131105: 0x8CA4,\n\t146585 - 131105: 0xFA7C,\n\t146586 - 131105: 0x93FA,\n\t146587 - 131105: 0x907C,\n\t146613 - 131105: 0x8F67,\n\t146615 - 131105: 0x9DB7,\n\t146631 - 131105: 0xA0E9,\n\t146632 - 131105: 0xFA4E,\n\t146633 - 131105: 0xFDA1,\n\t146684 - 131105: 0x9E74,\n\t146685 - 131105: 0x9FBF,\n\t146686 - 131105: 0x9ECB,\n\t146687 - 131105: 0x9BB9,\n\t146752 - 131105: 0x9DD4,\n\t146779 - 131105: 0x97B9,\n\t146814 - 131105: 0x8EF1,\n\t146831 - 131105: 0x957B,\n\t146870 - 131105: 0x9ED2,\n\t146871 - 131105: 0x9753,\n\t146872 - 131105: 0x96A4,\n\t146873 - 131105: 0x8FBE,\n\t146874 - 131105: 0x94D9,\n\t146875 - 131105: 0x9058,\n\t146876 - 131105: 0xFD79,\n\t146877 - 131105: 0xFD7B,\n\t146915 - 131105: 0x8EDA,\n\t146936 - 131105: 0x8EFA,\n\t146950 - 131105: 0x8762,\n\t146961 - 131105: 0x9BA5,\n\t146988 - 131105: 0x9ED9,\n\t146989 - 131105: 0x97D4,\n\t146990 - 131105: 0x90BB,\n\t146991 - 131105: 0xFDBC,\n\t146992 - 131105: 0xFDC6,\n\t146993 - 131105: 0x9248,\n\t147001 - 131105: 0x92B5,\n\t147080 - 131105: 0x9DC1,\n\t147081 - 131105: 0x92B9,\n\t147082 - 131105: 0x92A6,\n\t147083 - 131105: 0x8F4B,\n\t147129 - 131105: 0x9BA6,\n\t147135 - 131105: 0x92B6,\n\t147159 - 131105: 0x8E40,\n\t147191 - 131105: 0x9ED8,\n\t147192 - 131105: 0x945E,\n\t147193 - 131105: 0x985F,\n\t147194 - 131105: 0x94CE,\n\t147195 - 131105: 0x924A,\n\t147196 - 131105: 0xFD70,\n\t147253 - 131105: 0x9467,\n\t147265 - 131105: 0x8DEC,\n\t147274 - 131105: 0x9BD8,\n\t147297 - 131105: 0x8763,\n\t147327 - 131105: 0x9448,\n\t147328 - 131105: 0xFAC1,\n\t147329 - 131105: 0x9CF7,\n\t147330 - 131105: 0xFDBE,\n\t147343 - 131105: 0x8FDA,\n\t147380 - 131105: 0xFDD9,\n\t147383 - 131105: 0xFC7E,\n\t147392 - 131105: 0x93F9,\n\t147397 - 131105: 0xFA43,\n\t147435 - 131105: 0xFAEB,\n\t147436 - 131105: 0xFAC3,\n\t147437 - 131105: 0x97D3,\n\t147438 - 131105: 0x95F9,\n\t147439 - 131105: 0x9C48,\n\t147440 - 131105: 0xFDD8,\n\t147473 - 131105: 0xA0D8,\n\t147513 - 131105: 0xFDD7,\n\t147514 - 131105: 0xFB4A,\n\t147515 - 131105: 0x9BAF,\n\t147516 - 131105: 0x944B,\n\t147517 - 131105: 0xFDC9,\n\t147543 - 131105: 0x8EAC,\n\t147589 - 131105: 0xFDB2,\n\t147595 - 131105: 0x925A,\n\t147596 - 131105: 0xFCBD,\n\t147597 - 131105: 0x92D9,\n\t147601 - 131105: 0xFDD5,\n\t147657 - 131105: 0x92DD,\n\t147681 - 131105: 0x9259,\n\t147692 - 131105: 0x8CF0,\n\t147716 - 131105: 0x96BA,\n\t147727 - 131105: 0x925B,\n\t147737 - 131105: 0x9BAB,\n\t147775 - 131105: 0xFDDA,\n\t147776 - 131105: 0xFDDE,\n\t147780 - 131105: 0xFDD3,\n\t147790 - 131105: 0x8C46,\n\t147797 - 131105: 0xFDD6,\n\t147798 - 131105: 0xFDDC,\n\t147799 - 131105: 0xFDDD,\n\t147804 - 131105: 0x90FE,\n\t147807 - 131105: 0xFEA1,\n\t147809 - 131105: 0x87A5,\n\t147831 - 131105: 0x8BAD,\n\t147834 - 131105: 0x9CD8,\n\t147875 - 131105: 0x9E6D,\n\t147876 - 131105: 0xFD7C,\n\t147877 - 131105: 0xFB61,\n\t147884 - 131105: 0x96F8,\n\t147893 - 131105: 0x96F0,\n\t147917 - 131105: 0xFCF4,\n\t147938 - 131105: 0xFE60,\n\t147964 - 131105: 0x9852,\n\t147995 - 131105: 0x964F,\n\t148043 - 131105: 0x916E,\n\t148054 - 131105: 0x986D,\n\t148057 - 131105: 0x9864,\n\t148086 - 131105: 0x9453,\n\t148087 - 131105: 0xFDEC,\n\t148088 - 131105: 0xFB78,\n\t148100 - 131105: 0x95BA,\n\t148115 - 131105: 0x985D,\n\t148117 - 131105: 0x92F9,\n\t148133 - 131105: 0x985A,\n\t148159 - 131105: 0x8750,\n\t148161 - 131105: 0xFDF6,\n\t148169 - 131105: 0x93D0,\n\t148170 - 131105: 0x9862,\n\t148206 - 131105: 0x9BAD,\n\t148218 - 131105: 0x974F,\n\t148237 - 131105: 0x9BAE,\n\t148250 - 131105: 0x9452,\n\t148276 - 131105: 0x9BB0,\n\t148296 - 131105: 0x91D2,\n\t148322 - 131105: 0x97EA,\n\t148323 - 131105: 0xFB6B,\n\t148324 - 131105: 0x91B1,\n\t148325 - 131105: 0xFDF3,\n\t148364 - 131105: 0x92CB,\n\t148374 - 131105: 0x9BB1,\n\t148380 - 131105: 0xFCEC,\n\t148413 - 131105: 0x986B,\n\t148417 - 131105: 0x9751,\n\t148457 - 131105: 0x9871,\n\t148458 - 131105: 0x95EF,\n\t148466 - 131105: 0x9EF3,\n\t148472 - 131105: 0x91E8,\n\t148484 - 131105: 0x9BBA,\n\t148533 - 131105: 0xFB4C,\n\t148534 - 131105: 0x926A,\n\t148570 - 131105: 0xFDF8,\n\t148571 - 131105: 0x9861,\n\t148595 - 131105: 0x91E7,\n\t148615 - 131105: 0x93ED,\n\t148616 - 131105: 0x9744,\n\t148665 - 131105: 0x91E1,\n\t148668 - 131105: 0xFBF5,\n\t148686 - 131105: 0x9869,\n\t148691 - 131105: 0x8A62,\n\t148694 - 131105: 0x9BBB,\n\t148741 - 131105: 0x8CA8,\n\t148769 - 131105: 0x9C55,\n\t148856 - 131105: 0x8E77,\n\t148936 - 131105: 0x8AB2,\n\t149016 - 131105: 0x9EBC,\n\t149034 - 131105: 0x93E6,\n\t149093 - 131105: 0x93A2,\n\t149108 - 131105: 0x9BBD,\n\t149143 - 131105: 0x94B3,\n\t149204 - 131105: 0x937D,\n\t149254 - 131105: 0x9E66,\n\t149285 - 131105: 0x9459,\n\t149295 - 131105: 0x9BBF,\n\t149391 - 131105: 0x9458,\n\t149472 - 131105: 0x9EA5,\n\t149522 - 131105: 0x9BC7,\n\t149539 - 131105: 0xFE54,\n\t149634 - 131105: 0x8E74,\n\t149737 - 131105: 0x8BD6,\n\t149744 - 131105: 0x94B6,\n\t149745 - 131105: 0xFD74,\n\t149746 - 131105: 0x98C0,\n\t149747 - 131105: 0x94A5,\n\t149755 - 131105: 0x9BC8,\n\t149759 - 131105: 0x95ED,\n\t149760 - 131105: 0xFD7E,\n\t149761 - 131105: 0xFBEB,\n\t149772 - 131105: 0xFD7D,\n\t149782 - 131105: 0x976F,\n\t149783 - 131105: 0x9461,\n\t149785 - 131105: 0x9FC1,\n\t149807 - 131105: 0x95D7,\n\t149811 - 131105: 0xFA52,\n\t149812 - 131105: 0x9C58,\n\t149822 - 131105: 0x9F68,\n\t149823 - 131105: 0x9BE7,\n\t149824 - 131105: 0xFCCE,\n\t149825 - 131105: 0x96E8,\n\t149826 - 131105: 0xFA49,\n\t149827 - 131105: 0x97A1,\n\t149858 - 131105: 0x954D,\n\t149859 - 131105: 0x9EF8,\n\t149876 - 131105: 0xFE49,\n\t149877 - 131105: 0x91CE,\n\t149878 - 131105: 0x9771,\n\t149883 - 131105: 0x8CCF,\n\t149887 - 131105: 0xFDB1,\n\t149890 - 131105: 0xFC6E,\n\t149896 - 131105: 0x9CF2,\n\t149897 - 131105: 0x93B8,\n\t149898 - 131105: 0x9043,\n\t149899 - 131105: 0x9759,\n\t149900 - 131105: 0x94D7,\n\t149901 - 131105: 0xFE66,\n\t149902 - 131105: 0x947D,\n\t149903 - 131105: 0xFC6F,\n\t149908 - 131105: 0x9246,\n\t149924 - 131105: 0xFA6D,\n\t149927 - 131105: 0x8EF7,\n\t149929 - 131105: 0xFBB7,\n\t149931 - 131105: 0x947C,\n\t149932 - 131105: 0x92CD,\n\t149933 - 131105: 0x97B2,\n\t149943 - 131105: 0xFE65,\n\t149944 - 131105: 0x967E,\n\t149945 - 131105: 0x9758,\n\t149946 - 131105: 0x9B77,\n\t149947 - 131105: 0x91CF,\n\t149957 - 131105: 0x94A4,\n\t149968 - 131105: 0x9CAD,\n\t149978 - 131105: 0x8BAB,\n\t149982 - 131105: 0x96D5,\n\t149983 - 131105: 0xFCB3,\n\t149987 - 131105: 0x93AE,\n\t149989 - 131105: 0x976D,\n\t149996 - 131105: 0x9446,\n\t149997 - 131105: 0x95F7,\n\t150006 - 131105: 0x9C46,\n\t150007 - 131105: 0x955B,\n\t150008 - 131105: 0x91D1,\n\t150009 - 131105: 0x94F4,\n\t150011 - 131105: 0xFE67,\n\t150030 - 131105: 0x92A5,\n\t150034 - 131105: 0xFEDF,\n\t150035 - 131105: 0x8CAB,\n\t150037 - 131105: 0x9BC9,\n\t150049 - 131105: 0xFCED,\n\t150050 - 131105: 0xFDFA,\n\t150051 - 131105: 0xFCC8,\n\t150052 - 131105: 0xFE62,\n\t150053 - 131105: 0x91FC,\n\t150054 - 131105: 0xFE6B,\n\t150055 - 131105: 0xFDF9,\n\t150056 - 131105: 0xFCC7,\n\t150057 - 131105: 0x914E,\n\t150058 - 131105: 0x9CB8,\n\t150078 - 131105: 0x9767,\n\t150082 - 131105: 0x95EE,\n\t150085 - 131105: 0x9BB2,\n\t150090 - 131105: 0x9460,\n\t150094 - 131105: 0x94A2,\n\t150095 - 131105: 0x9875,\n\t150096 - 131105: 0x97AC,\n\t150097 - 131105: 0x91D3,\n\t150109 - 131105: 0x987B,\n\t150117 - 131105: 0x8EEB,\n\t150118 - 131105: 0x976A,\n\t150119 - 131105: 0x965E,\n\t150129 - 131105: 0x97EB,\n\t150135 - 131105: 0x9FF9,\n\t150136 - 131105: 0x95F8,\n\t150137 - 131105: 0xFEA2,\n\t150138 - 131105: 0x8FE6,\n\t150156 - 131105: 0xFE7E,\n\t150163 - 131105: 0x9DA4,\n\t150164 - 131105: 0x9768,\n\t150165 - 131105: 0x8EEC,\n\t150166 - 131105: 0x94BD,\n\t150180 - 131105: 0x945B,\n\t150181 - 131105: 0x9CF6,\n\t150182 - 131105: 0xFAA7,\n\t150183 - 131105: 0x9BD9,\n\t150193 - 131105: 0xFA5D,\n\t150194 - 131105: 0x9656,\n\t150195 - 131105: 0x9762,\n\t150202 - 131105: 0x94BA,\n\t150203 - 131105: 0xA04F,\n\t150204 - 131105: 0x92D8,\n\t150208 - 131105: 0x9BCB,\n\t150215 - 131105: 0x94BB,\n\t150218 - 131105: 0x9D5F,\n\t150225 - 131105: 0x90CF,\n\t150239 - 131105: 0x9465,\n\t150242 - 131105: 0x9F4C,\n\t150249 - 131105: 0x90D8,\n\t150287 - 131105: 0x8D5B,\n\t150382 - 131105: 0x9EBE,\n\t150517 - 131105: 0xFB6D,\n\t150537 - 131105: 0x95CA,\n\t150686 - 131105: 0x9DC2,\n\t150687 - 131105: 0x97F8,\n\t150729 - 131105: 0x8FFC,\n\t150745 - 131105: 0x9473,\n\t150790 - 131105: 0x9474,\n\t150803 - 131105: 0xFEB7,\n\t150968 - 131105: 0x8A4B,\n\t151018 - 131105: 0x8A55,\n\t151019 - 131105: 0x8B69,\n\t151099 - 131105: 0x8ADC,\n\t151120 - 131105: 0x8B76,\n\t151205 - 131105: 0x9BCE,\n\t151207 - 131105: 0x8A68,\n\t151310 - 131105: 0xA0F8,\n\t151388 - 131105: 0x98DF,\n\t151426 - 131105: 0xFEB5,\n\t151430 - 131105: 0x9BCF,\n\t151447 - 131105: 0x96FB,\n\t151450 - 131105: 0x9BFB,\n\t151465 - 131105: 0x9ECE,\n\t151480 - 131105: 0x8EE5,\n\t151490 - 131105: 0x9E7B,\n\t151596 - 131105: 0x9BD2,\n\t151634 - 131105: 0x8AA5,\n\t151709 - 131105: 0xFECE,\n\t151851 - 131105: 0x8A45,\n\t151880 - 131105: 0x9DFC,\n\t151933 - 131105: 0xFECF,\n\t151934 - 131105: 0x8BA5,\n\t152013 - 131105: 0x8C4A,\n\t152035 - 131105: 0x8AEC,\n\t152038 - 131105: 0xFCE0,\n\t152039 - 131105: 0x94AD,\n\t152096 - 131105: 0xFED5,\n\t152097 - 131105: 0x94AC,\n\t152144 - 131105: 0xFC5A,\n\t152217 - 131105: 0x9BD6,\n\t152263 - 131105: 0x8A6F,\n\t152280 - 131105: 0x8BA9,\n\t152334 - 131105: 0x8E5F,\n\t152337 - 131105: 0x9DCB,\n\t152339 - 131105: 0xFCE7,\n\t152601 - 131105: 0x9BD7,\n\t152613 - 131105: 0x93C8,\n\t152623 - 131105: 0x91F0,\n\t152624 - 131105: 0x8FE0,\n\t152646 - 131105: 0x9BDB,\n\t152684 - 131105: 0x90ED,\n\t152686 - 131105: 0x9BDC,\n\t152730 - 131105: 0x8D53,\n\t152881 - 131105: 0xA0EC,\n\t152885 - 131105: 0x98FA,\n\t152895 - 131105: 0x9BE0,\n\t152923 - 131105: 0x93C7,\n\t152924 - 131105: 0x9249,\n\t152925 - 131105: 0x96E1,\n\t152926 - 131105: 0x9BE2,\n\t152930 - 131105: 0x9BE4,\n\t152933 - 131105: 0x8FE1,\n\t152934 - 131105: 0x9BE5,\n\t152961 - 131105: 0x94C0,\n\t152964 - 131105: 0x93C3,\n\t152975 - 131105: 0x93C5,\n\t153017 - 131105: 0x9079,\n\t153045 - 131105: 0x977B,\n\t153051 - 131105: 0x907E,\n\t153056 - 131105: 0xFEE6,\n\t153093 - 131105: 0xFE46,\n\t153141 - 131105: 0x9DB8,\n\t153169 - 131105: 0x9270,\n\t153219 - 131105: 0x95A8,\n\t153237 - 131105: 0x8CB0,\n\t153315 - 131105: 0x94C8,\n\t153334 - 131105: 0x98B9,\n\t153350 - 131105: 0x9140,\n\t153373 - 131105: 0xFCBE,\n\t153381 - 131105: 0x9157,\n\t153405 - 131105: 0x8BB2,\n\t153458 - 131105: 0xFADF,\n\t153543 - 131105: 0x9BE6,\n\t153567 - 131105: 0x9643,\n\t153568 - 131105: 0x8E44,\n\t153569 - 131105: 0x9C4F,\n\t153687 - 131105: 0xFEF4,\n\t153693 - 131105: 0x9BE8,\n\t153714 - 131105: 0x93DC,\n\t153800 - 131105: 0x966F,\n\t153822 - 131105: 0x87A1,\n\t153825 - 131105: 0x8E4A,\n\t153859 - 131105: 0x9BED,\n\t153926 - 131105: 0x92F6,\n\t153942 - 131105: 0x9DB9,\n\t154028 - 131105: 0x8E4E,\n\t154060 - 131105: 0xFBCF,\n\t154196 - 131105: 0x8760,\n\t154261 - 131105: 0x9EC2,\n\t154268 - 131105: 0x94E5,\n\t154286 - 131105: 0x9BF0,\n\t154287 - 131105: 0x94E4,\n\t154345 - 131105: 0x9551,\n\t154484 - 131105: 0x8BBB,\n\t154505 - 131105: 0x9BF1,\n\t154547 - 131105: 0x94F0,\n\t154548 - 131105: 0x8E64,\n\t154566 - 131105: 0x94EA,\n\t154596 - 131105: 0x8F61,\n\t154600 - 131105: 0x9B64,\n\t154625 - 131105: 0x8E5B,\n\t154630 - 131105: 0x9BF2,\n\t154657 - 131105: 0x9FBE,\n\t154698 - 131105: 0x9DC9,\n\t154725 - 131105: 0x8E6C,\n\t154769 - 131105: 0x8F73,\n\t154788 - 131105: 0x8CAF,\n\t154816 - 131105: 0x8F75,\n\t154817 - 131105: 0x8E71,\n\t154878 - 131105: 0x8E60,\n\t154912 - 131105: 0x8E6A,\n\t154928 - 131105: 0x8C4C,\n\t154947 - 131105: 0x9552,\n\t155033 - 131105: 0x87CF,\n\t155065 - 131105: 0x87C0,\n\t155150 - 131105: 0x9554,\n\t155209 - 131105: 0x8AD4,\n\t155265 - 131105: 0x9DBB,\n\t155266 - 131105: 0x9543,\n\t155267 - 131105: 0x92FE,\n\t155302 - 131105: 0x94F2,\n\t155324 - 131105: 0x94F1,\n\t155351 - 131105: 0xA0EA,\n\t155352 - 131105: 0x9DD2,\n\t155418 - 131105: 0xA0B1,\n\t155467 - 131105: 0x91F8,\n\t155617 - 131105: 0x9462,\n\t155618 - 131105: 0x9BA4,\n\t155681 - 131105: 0x877D,\n\t155689 - 131105: 0x8EAD,\n\t155720 - 131105: 0x9EAD,\n\t155748 - 131105: 0x96D0,\n\t155779 - 131105: 0xFEEE,\n\t155799 - 131105: 0x8AB4,\n\t155812 - 131105: 0x9757,\n\t155813 - 131105: 0x8A77,\n\t155906 - 131105: 0x9BF7,\n\t155937 - 131105: 0x8EB5,\n\t155993 - 131105: 0xA06D,\n\t155994 - 131105: 0x8EB6,\n\t155995 - 131105: 0x9756,\n\t155996 - 131105: 0x9540,\n\t156077 - 131105: 0xA0F3,\n\t156078 - 131105: 0x94BE,\n\t156082 - 131105: 0x9BFA,\n\t156125 - 131105: 0xFDDF,\n\t156248 - 131105: 0x9DBC,\n\t156257 - 131105: 0x94FE,\n\t156266 - 131105: 0x8BDB,\n\t156267 - 131105: 0xA0FE,\n\t156368 - 131105: 0x8EC0,\n\t156469 - 131105: 0x9F47,\n\t156491 - 131105: 0x8BDE,\n\t156492 - 131105: 0xA0FB,\n\t156497 - 131105: 0x8EC3,\n\t156606 - 131105: 0x9649,\n\t156661 - 131105: 0xFEC2,\n\t156664 - 131105: 0x954C,\n\t156674 - 131105: 0x9BFD,\n\t156688 - 131105: 0x90CC,\n\t156689 - 131105: 0x9C60,\n\t156690 - 131105: 0x954B,\n\t156746 - 131105: 0x9BFE,\n\t156777 - 131105: 0x9C70,\n\t156804 - 131105: 0x9C43,\n\t156808 - 131105: 0x9C47,\n\t156809 - 131105: 0x8ECC,\n\t156813 - 131105: 0x8E54,\n\t156824 - 131105: 0x8EE4,\n\t156946 - 131105: 0x9C49,\n\t157042 - 131105: 0x8B5E,\n\t157088 - 131105: 0x955E,\n\t157101 - 131105: 0x955C,\n\t157119 - 131105: 0x9C4B,\n\t157202 - 131105: 0x8BE1,\n\t157222 - 131105: 0x8ED9,\n\t157359 - 131105: 0x9DB4,\n\t157361 - 131105: 0x925F,\n\t157365 - 131105: 0x9C4C,\n\t157402 - 131105: 0x8AA1,\n\t157416 - 131105: 0x8EDB,\n\t157436 - 131105: 0x9C56,\n\t157462 - 131105: 0x8AA2,\n\t157505 - 131105: 0x9754,\n\t157593 - 131105: 0x9C5E,\n\t157619 - 131105: 0x9ED4,\n\t157620 - 131105: 0x9568,\n\t157644 - 131105: 0xA0C3,\n\t157724 - 131105: 0x8AE6,\n\t157766 - 131105: 0xA0F7,\n\t157790 - 131105: 0x9C61,\n\t157806 - 131105: 0x9C5F,\n\t157832 - 131105: 0xFC4D,\n\t157834 - 131105: 0x9E5B,\n\t157843 - 131105: 0x9E69,\n\t157895 - 131105: 0x9C63,\n\t157966 - 131105: 0xFEC7,\n\t157969 - 131105: 0xFEC6,\n\t157990 - 131105: 0x9C67,\n\t158009 - 131105: 0x9C69,\n\t158033 - 131105: 0x8BE2,\n\t158120 - 131105: 0x9165,\n\t158133 - 131105: 0x9CE7,\n\t158194 - 131105: 0x8A54,\n\t158202 - 131105: 0x9C6C,\n\t158253 - 131105: 0x9C6E,\n\t158254 - 131105: 0xFE5D,\n\t158260 - 131105: 0x9C73,\n\t158274 - 131105: 0x956A,\n\t158289 - 131105: 0x956D,\n\t158290 - 131105: 0x8EF0,\n\t158469 - 131105: 0x8F4D,\n\t158474 - 131105: 0x8EF6,\n\t158483 - 131105: 0xFABC,\n\t158485 - 131105: 0x8CD5,\n\t158499 - 131105: 0x875E,\n\t158504 - 131105: 0xFBDA,\n\t158544 - 131105: 0x8B4C,\n\t158545 - 131105: 0xFD75,\n\t158546 - 131105: 0x9BDD,\n\t158547 - 131105: 0xFAF5,\n\t158555 - 131105: 0x9C74,\n\t158581 - 131105: 0x9545,\n\t158594 - 131105: 0x96C6,\n\t158614 - 131105: 0x8F6A,\n\t158615 - 131105: 0x8F4E,\n\t158621 - 131105: 0x9C78,\n\t158643 - 131105: 0xFA55,\n\t158656 - 131105: 0x97E4,\n\t158711 - 131105: 0x9C41,\n\t158753 - 131105: 0x925C,\n\t158784 - 131105: 0x96FA,\n\t158785 - 131105: 0x8CF6,\n\t158790 - 131105: 0x8D4D,\n\t158846 - 131105: 0xFB66,\n\t158847 - 131105: 0x8E65,\n\t158848 - 131105: 0x9849,\n\t158849 - 131105: 0xFBA8,\n\t158850 - 131105: 0x9842,\n\t158884 - 131105: 0x9C7A,\n\t158903 - 131105: 0x97FB,\n\t158904 - 131105: 0x90CA,\n\t158909 - 131105: 0x9C5B,\n\t158912 - 131105: 0x974D,\n\t158915 - 131105: 0x8ED3,\n\t158929 - 131105: 0x9561,\n\t159010 - 131105: 0x9F4B,\n\t159011 - 131105: 0x9FB5,\n\t159012 - 131105: 0x93D2,\n\t159013 - 131105: 0xFDAA,\n\t159014 - 131105: 0x9840,\n\t159015 - 131105: 0x9146,\n\t159016 - 131105: 0x9867,\n\t159017 - 131105: 0xFA5A,\n\t159018 - 131105: 0xFBA9,\n\t159057 - 131105: 0x9841,\n\t159092 - 131105: 0x8CD3,\n\t159136 - 131105: 0xFCFD,\n\t159137 - 131105: 0xFDAB,\n\t159138 - 131105: 0x91BD,\n\t159139 - 131105: 0x8F4C,\n\t159140 - 131105: 0x96C9,\n\t159141 - 131105: 0x8F55,\n\t159142 - 131105: 0xFBAE,\n\t159143 - 131105: 0x956F,\n\t159150 - 131105: 0x9C7D,\n\t159196 - 131105: 0xA0F0,\n\t159210 - 131105: 0x946F,\n\t159211 - 131105: 0xFDAC,\n\t159216 - 131105: 0x96CB,\n\t159232 - 131105: 0x96CE,\n\t159237 - 131105: 0xA056,\n\t159239 - 131105: 0x9CE1,\n\t159250 - 131105: 0x96C4,\n\t159298 - 131105: 0x8F5E,\n\t159299 - 131105: 0x8F6C,\n\t159300 - 131105: 0x8EA3,\n\t159301 - 131105: 0xFBB3,\n\t159342 - 131105: 0xFC53,\n\t159346 - 131105: 0xFDB3,\n\t159351 - 131105: 0x8F6B,\n\t159364 - 131105: 0x96CA,\n\t159368 - 131105: 0x87CD,\n\t159371 - 131105: 0x8753,\n\t159385 - 131105: 0x8F79,\n\t159440 - 131105: 0x9E6F,\n\t159441 - 131105: 0xA0C5,\n\t159442 - 131105: 0xFC78,\n\t159443 - 131105: 0x8E42,\n\t159444 - 131105: 0x8F5A,\n\t159445 - 131105: 0x90C2,\n\t159446 - 131105: 0x8EA5,\n\t159447 - 131105: 0x9061,\n\t159526 - 131105: 0x924F,\n\t159603 - 131105: 0x9373,\n\t159604 - 131105: 0xFDB5,\n\t159647 - 131105: 0xFECC,\n\t159649 - 131105: 0xFBBD,\n\t159678 - 131105: 0x8CD6,\n\t159710 - 131105: 0x9843,\n\t159711 - 131105: 0x96C5,\n\t159758 - 131105: 0x89BC,\n\t159819 - 131105: 0x9CA3,\n\t159826 - 131105: 0x924B,\n\t159827 - 131105: 0x984A,\n\t159880 - 131105: 0x8FA4,\n\t159917 - 131105: 0xA0F1,\n\t159918 - 131105: 0x9EFB,\n\t159919 - 131105: 0x9CD2,\n\t159949 - 131105: 0x8FA7,\n\t159954 - 131105: 0x8754,\n\t159992 - 131105: 0xFC5C,\n\t160009 - 131105: 0x9845,\n\t160012 - 131105: 0x9046,\n\t160013 - 131105: 0x8CD1,\n\t160038 - 131105: 0xFEFA,\n\t160039 - 131105: 0x9560,\n\t160100 - 131105: 0x9F48,\n\t160101 - 131105: 0x9247,\n\t160117 - 131105: 0x90FB,\n\t160205 - 131105: 0x9CA4,\n\t160283 - 131105: 0x9571,\n\t160359 - 131105: 0x8745,\n\t160384 - 131105: 0x9CA6,\n\t160389 - 131105: 0x9CA7,\n\t160395 - 131105: 0x9CAA,\n\t160434 - 131105: 0x9ED3,\n\t160438 - 131105: 0x9E70,\n\t160486 - 131105: 0x9CAC,\n\t160594 - 131105: 0x8752,\n\t160666 - 131105: 0x8FAE,\n\t160767 - 131105: 0x8D50,\n\t160802 - 131105: 0x957D,\n\t160848 - 131105: 0x9CB0,\n\t160900 - 131105: 0x97B6,\n\t160902 - 131105: 0xA0BD,\n\t161140 - 131105: 0x8ADF,\n\t161187 - 131105: 0x9EAA,\n\t161248 - 131105: 0x8FBD,\n\t161252 - 131105: 0x8FBF,\n\t161277 - 131105: 0x9369,\n\t161278 - 131105: 0x9BA7,\n\t161287 - 131105: 0xC8A4,\n\t161292 - 131105: 0xFEEA,\n\t161330 - 131105: 0x9BE1,\n\t161337 - 131105: 0x8B41,\n\t161365 - 131105: 0x9DB6,\n\t161366 - 131105: 0xA0EB,\n\t161367 - 131105: 0x9BA3,\n\t161428 - 131105: 0x8BA1,\n\t161551 - 131105: 0x8FC8,\n\t161589 - 131105: 0x894C,\n\t161590 - 131105: 0x9860,\n\t161601 - 131105: 0x94C7,\n\t161630 - 131105: 0x8B58,\n\t161668 - 131105: 0x95AB,\n\t161669 - 131105: 0x95AA,\n\t161740 - 131105: 0x9CC3,\n\t161880 - 131105: 0x9CC4,\n\t161904 - 131105: 0x93D6,\n\t161949 - 131105: 0x9DAC,\n\t161970 - 131105: 0x8BE6,\n\t161992 - 131105: 0x8A71,\n\t162084 - 131105: 0x8FD1,\n\t162151 - 131105: 0x99D5,\n\t162170 - 131105: 0x90F4,\n\t162208 - 131105: 0x8AA3,\n\t162269 - 131105: 0x9CCE,\n\t162301 - 131105: 0x9CD4,\n\t162314 - 131105: 0x9CD5,\n\t162318 - 131105: 0xFBC8,\n\t162366 - 131105: 0x9DB3,\n\t162387 - 131105: 0xFC70,\n\t162393 - 131105: 0x8FD7,\n\t162425 - 131105: 0x9B73,\n\t162436 - 131105: 0xFA5B,\n\t162493 - 131105: 0x8FD2,\n\t162494 - 131105: 0x9064,\n\t162548 - 131105: 0x98B6,\n\t162566 - 131105: 0x9668,\n\t162571 - 131105: 0x9CD6,\n\t162584 - 131105: 0x98BD,\n\t162616 - 131105: 0x8FDC,\n\t162617 - 131105: 0xFEF6,\n\t162618 - 131105: 0x8FD9,\n\t162632 - 131105: 0x9541,\n\t162661 - 131105: 0x87CA,\n\t162799 - 131105: 0x876C,\n\t162804 - 131105: 0x97F3,\n\t162834 - 131105: 0x9BF8,\n\t162924 - 131105: 0x875A,\n\t162993 - 131105: 0x8748,\n\t163013 - 131105: 0x874A,\n\t163119 - 131105: 0x9E6C,\n\t163155 - 131105: 0x8FF2,\n\t163156 - 131105: 0x8FEE,\n\t163174 - 131105: 0x9CD7,\n\t163187 - 131105: 0x9E6E,\n\t163204 - 131105: 0x8A40,\n\t163215 - 131105: 0x8FEF,\n\t163224 - 131105: 0x8FF4,\n\t163261 - 131105: 0x8FF5,\n\t163292 - 131105: 0x95C2,\n\t163405 - 131105: 0x986A,\n\t163407 - 131105: 0x97CF,\n\t163630 - 131105: 0x9EE5,\n\t163833 - 131105: 0x9E7C,\n\t163842 - 131105: 0x9041,\n\t163849 - 131105: 0x9CDB,\n\t163870 - 131105: 0x9441,\n\t163875 - 131105: 0x9CE6,\n\t163876 - 131105: 0x9DB0,\n\t163912 - 131105: 0x9CEA,\n\t163971 - 131105: 0x9CED,\n\t163984 - 131105: 0x9CFA,\n\t164029 - 131105: 0x8B62,\n\t164030 - 131105: 0x8A4E,\n\t164072 - 131105: 0x9CCA,\n\t164073 - 131105: 0x8A66,\n\t164084 - 131105: 0x9CFB,\n\t164142 - 131105: 0x9CFC,\n\t164175 - 131105: 0x9CFE,\n\t164189 - 131105: 0x8A53,\n\t164207 - 131105: 0x9CE5,\n\t164233 - 131105: 0x9D40,\n\t164271 - 131105: 0x9D41,\n\t164284 - 131105: 0x9045,\n\t164359 - 131105: 0x8B73,\n\t164376 - 131105: 0x97CA,\n\t164378 - 131105: 0x9D42,\n\t164438 - 131105: 0x8A61,\n\t164476 - 131105: 0x8BAE,\n\t164507 - 131105: 0x8AD2,\n\t164557 - 131105: 0x8BA2,\n\t164578 - 131105: 0x9DF2,\n\t164614 - 131105: 0x9D43,\n\t164632 - 131105: 0x9CDF,\n\t164655 - 131105: 0x9D44,\n\t164666 - 131105: 0x8ECA,\n\t164709 - 131105: 0x904E,\n\t164717 - 131105: 0x8EB3,\n\t164733 - 131105: 0x9FF5,\n\t164746 - 131105: 0x9D45,\n\t164882 - 131105: 0x904F,\n\t164968 - 131105: 0x9D47,\n\t164972 - 131105: 0x89CA,\n\t164979 - 131105: 0x9CB5,\n\t164994 - 131105: 0xFBFE,\n\t165121 - 131105: 0x905E,\n\t165180 - 131105: 0x9063,\n\t165181 - 131105: 0x9057,\n\t165228 - 131105: 0x9066,\n\t165352 - 131105: 0x9BC0,\n\t165364 - 131105: 0xFCE5,\n\t165376 - 131105: 0x9162,\n\t165387 - 131105: 0x9067,\n\t165413 - 131105: 0x8FA1,\n\t165435 - 131105: 0x8FA2,\n\t165546 - 131105: 0x9D48,\n\t165547 - 131105: 0xFAD3,\n\t165554 - 131105: 0x8D4F,\n\t165564 - 131105: 0x905D,\n\t165592 - 131105: 0x90B9,\n\t165606 - 131105: 0x906B,\n\t165647 - 131105: 0x8C5C,\n\t165651 - 131105: 0x9069,\n\t165892 - 131105: 0xFE57,\n\t165931 - 131105: 0xFE55,\n\t166157 - 131105: 0x87A6,\n\t166195 - 131105: 0x9073,\n\t166216 - 131105: 0x9BEF,\n\t166217 - 131105: 0x9CF0,\n\t166230 - 131105: 0x9D4B,\n\t166244 - 131105: 0xFED9,\n\t166248 - 131105: 0xFEDA,\n\t166252 - 131105: 0x91E0,\n\t166253 - 131105: 0x8D43,\n\t166270 - 131105: 0x91D8,\n\t166281 - 131105: 0x9646,\n\t166312 - 131105: 0x9360,\n\t166314 - 131105: 0xFA53,\n\t166315 - 131105: 0x9CD3,\n\t166328 - 131105: 0x9D4E,\n\t166332 - 131105: 0xFB40,\n\t166336 - 131105: 0x8DE2,\n\t166364 - 131105: 0x9442,\n\t166366 - 131105: 0x9056,\n\t166369 - 131105: 0x9865,\n\t166371 - 131105: 0x8C6C,\n\t166372 - 131105: 0xFA4A,\n\t166375 - 131105: 0x9D50,\n\t166376 - 131105: 0x9D52,\n\t166393 - 131105: 0x95AF,\n\t166394 - 131105: 0x975A,\n\t166395 - 131105: 0x9349,\n\t166396 - 131105: 0x9747,\n\t166415 - 131105: 0xA0F4,\n\t166422 - 131105: 0x9778,\n\t166437 - 131105: 0x8FCF,\n\t166441 - 131105: 0xFC60,\n\t166450 - 131105: 0x8C4E,\n\t166454 - 131105: 0xFC56,\n\t166468 - 131105: 0x91DC,\n\t166469 - 131105: 0x9661,\n\t166470 - 131105: 0x92EC,\n\t166471 - 131105: 0x935D,\n\t166472 - 131105: 0x8EDE,\n\t166473 - 131105: 0x96FE,\n\t166474 - 131105: 0xFD4F,\n\t166475 - 131105: 0x95DE,\n\t166489 - 131105: 0x98B0,\n\t166490 - 131105: 0xA040,\n\t166529 - 131105: 0x97BD,\n\t166530 - 131105: 0x977D,\n\t166531 - 131105: 0x97F5,\n\t166554 - 131105: 0x9BAC,\n\t166555 - 131105: 0xFADA,\n\t166556 - 131105: 0x92C2,\n\t166592 - 131105: 0x97B1,\n\t166598 - 131105: 0x907B,\n\t166603 - 131105: 0x93FE,\n\t166604 - 131105: 0x947B,\n\t166606 - 131105: 0x9777,\n\t166622 - 131105: 0xFABE,\n\t166623 - 131105: 0xFD43,\n\t166624 - 131105: 0x90C6,\n\t166625 - 131105: 0x90A4,\n\t166626 - 131105: 0x90A8,\n\t166627 - 131105: 0x94A9,\n\t166629 - 131105: 0x90A9,\n\t166634 - 131105: 0x8C65,\n\t166652 - 131105: 0x95E0,\n\t166668 - 131105: 0x907D,\n\t166675 - 131105: 0x9265,\n\t166689 - 131105: 0xFDBA,\n\t166690 - 131105: 0x93C4,\n\t166699 - 131105: 0xFEED,\n\t166700 - 131105: 0x9DAB,\n\t166701 - 131105: 0xA0E3,\n\t166703 - 131105: 0x9648,\n\t166726 - 131105: 0x9D53,\n\t166732 - 131105: 0x8AA9,\n\t166734 - 131105: 0x9BC5,\n\t166736 - 131105: 0x965D,\n\t166755 - 131105: 0x975F,\n\t166756 - 131105: 0x965F,\n\t166757 - 131105: 0x966E,\n\t166758 - 131105: 0xFB5D,\n\t166764 - 131105: 0x9DB1,\n\t166799 - 131105: 0xFEA3,\n\t166809 - 131105: 0x9DB2,\n\t166812 - 131105: 0x95AE,\n\t166813 - 131105: 0xFCA3,\n\t166841 - 131105: 0x8769,\n\t166850 - 131105: 0xA0A2,\n\t166853 - 131105: 0x9655,\n\t166868 - 131105: 0x9D54,\n\t166871 - 131105: 0x9341,\n\t166873 - 131105: 0x95AD,\n\t166874 - 131105: 0x91D5,\n\t166887 - 131105: 0x977A,\n\t166888 - 131105: 0xFDFC,\n\t166889 - 131105: 0x8E47,\n\t166890 - 131105: 0x93FD,\n\t166891 - 131105: 0x90A5,\n\t166892 - 131105: 0x90AC,\n\t166901 - 131105: 0x95AC,\n\t166911 - 131105: 0x90AE,\n\t166915 - 131105: 0xFEA5,\n\t166921 - 131105: 0x9D56,\n\t166940 - 131105: 0x97E3,\n\t166941 - 131105: 0x95E2,\n\t166947 - 131105: 0x9466,\n\t166950 - 131105: 0x9647,\n\t166955 - 131105: 0x91B8,\n\t166960 - 131105: 0x9CEC,\n\t166969 - 131105: 0x90AD,\n\t166971 - 131105: 0x95E3,\n\t167114 - 131105: 0x8B4F,\n\t167117 - 131105: 0x8AE3,\n\t167122 - 131105: 0x8B4D,\n\t167220 - 131105: 0x95EA,\n\t167321 - 131105: 0x8B4E,\n\t167353 - 131105: 0x8CC1,\n\t167439 - 131105: 0x8BED,\n\t167478 - 131105: 0x91D9,\n\t167481 - 131105: 0xA0A4,\n\t167525 - 131105: 0x95F5,\n\t167526 - 131105: 0x95F4,\n\t167575 - 131105: 0x9FB3,\n\t167596 - 131105: 0xFEAF,\n\t167602 - 131105: 0xFE72,\n\t167603 - 131105: 0x927A,\n\t167641 - 131105: 0xFEAC,\n\t167655 - 131105: 0x95F3,\n\t167877 - 131105: 0x9D58,\n\t168057 - 131105: 0x8D46,\n\t168072 - 131105: 0x9372,\n\t168075 - 131105: 0x91C5,\n\t168083 - 131105: 0x9642,\n\t168111 - 131105: 0x90CD,\n\t168112 - 131105: 0x95FE,\n\t168113 - 131105: 0x9159,\n\t168128 - 131105: 0x9C65,\n\t168164 - 131105: 0x97CC,\n\t168165 - 131105: 0x90CE,\n\t168172 - 131105: 0x9D59,\n\t168173 - 131105: 0xFCF5,\n\t168205 - 131105: 0xFEFD,\n\t168208 - 131105: 0x9D5B,\n\t168252 - 131105: 0x9D5C,\n\t168269 - 131105: 0x937E,\n\t168283 - 131105: 0x98AC,\n\t168286 - 131105: 0x9D5E,\n\t168304 - 131105: 0xFDD0,\n\t168348 - 131105: 0xFD60,\n\t168360 - 131105: 0x9CCF,\n\t168405 - 131105: 0x90DD,\n\t168427 - 131105: 0x90E0,\n\t168989 - 131105: 0x90F3,\n\t168992 - 131105: 0x98B1,\n\t169011 - 131105: 0x90F0,\n\t169023 - 131105: 0x93BD,\n\t169032 - 131105: 0x95B7,\n\t169168 - 131105: 0x9F46,\n\t169177 - 131105: 0x8E4B,\n\t169178 - 131105: 0x9658,\n\t169189 - 131105: 0x8A4C,\n\t169191 - 131105: 0x9D63,\n\t169374 - 131105: 0x9ECF,\n\t169392 - 131105: 0x9D65,\n\t169400 - 131105: 0x9D66,\n\t169431 - 131105: 0x965A,\n\t169449 - 131105: 0x9D64,\n\t169460 - 131105: 0x8A6C,\n\t169760 - 131105: 0x8AD9,\n\t169778 - 131105: 0x9D67,\n\t169940 - 131105: 0x8A70,\n\t170000 - 131105: 0x8BF3,\n\t170071 - 131105: 0x9150,\n\t170148 - 131105: 0x9CC1,\n\t170193 - 131105: 0x9D68,\n\t170218 - 131105: 0x93A7,\n\t170225 - 131105: 0x9674,\n\t170234 - 131105: 0x8CFD,\n\t170243 - 131105: 0xA0EF,\n\t170245 - 131105: 0x9151,\n\t170287 - 131105: 0x96C1,\n\t170309 - 131105: 0x8777,\n\t170311 - 131105: 0x8C64,\n\t170312 - 131105: 0x9676,\n\t170313 - 131105: 0x9D69,\n\t170333 - 131105: 0xFCA4,\n\t170346 - 131105: 0x9D6A,\n\t170397 - 131105: 0x924E,\n\t170435 - 131105: 0x9D6B,\n\t170441 - 131105: 0x9BC1,\n\t170536 - 131105: 0x9D6C,\n\t170573 - 131105: 0x8A65,\n\t170757 - 131105: 0x915D,\n\t170766 - 131105: 0x9D6D,\n\t170965 - 131105: 0x915A,\n\t171123 - 131105: 0x8C42,\n\t171181 - 131105: 0x9CC0,\n\t171326 - 131105: 0x916A,\n\t171354 - 131105: 0x9D6E,\n\t171388 - 131105: 0x9EA6,\n\t171416 - 131105: 0x9DCD,\n\t171419 - 131105: 0x9D6F,\n\t171510 - 131105: 0x89BB,\n\t171526 - 131105: 0x9EF9,\n\t171565 - 131105: 0x96B4,\n\t171624 - 131105: 0x9172,\n\t171692 - 131105: 0x9EC8,\n\t171696 - 131105: 0x8771,\n\t171715 - 131105: 0x8B55,\n\t171768 - 131105: 0x9D71,\n\t171811 - 131105: 0x9D72,\n\t171824 - 131105: 0x9ECC,\n\t171959 - 131105: 0x9174,\n\t171998 - 131105: 0x9ED0,\n\t172052 - 131105: 0x905C,\n\t172167 - 131105: 0x8ED2,\n\t172217 - 131105: 0x91A8,\n\t172257 - 131105: 0x9177,\n\t172269 - 131105: 0x96BF,\n\t172275 - 131105: 0x96C0,\n\t172280 - 131105: 0x8FB1,\n\t172286 - 131105: 0x96B7,\n\t172295 - 131105: 0x8C55,\n\t172323 - 131105: 0x9178,\n\t172339 - 131105: 0x89BE,\n\t172340 - 131105: 0x917C,\n\t172368 - 131105: 0xFB77,\n\t172434 - 131105: 0x9175,\n\t172435 - 131105: 0x91A3,\n\t172459 - 131105: 0x9176,\n\t172468 - 131105: 0x96BE,\n\t172469 - 131105: 0x8D49,\n\t172511 - 131105: 0x9179,\n\t172533 - 131105: 0x96B6,\n\t172576 - 131105: 0x91A4,\n\t172595 - 131105: 0x91A6,\n\t172691 - 131105: 0x9D75,\n\t172703 - 131105: 0x9052,\n\t172722 - 131105: 0xA045,\n\t172724 - 131105: 0x91A9,\n\t172726 - 131105: 0x98AA,\n\t172730 - 131105: 0x8C5F,\n\t172733 - 131105: 0x8BAA,\n\t172767 - 131105: 0x9CDD,\n\t172799 - 131105: 0x9D77,\n\t172881 - 131105: 0x8756,\n\t172969 - 131105: 0x8940,\n\t173108 - 131105: 0x9EEC,\n\t173147 - 131105: 0x93AA,\n\t173510 - 131105: 0x9478,\n\t173515 - 131105: 0x9D7A,\n\t173569 - 131105: 0x8AC9,\n\t173618 - 131105: 0x8B4B,\n\t173642 - 131105: 0x9FEC,\n\t173659 - 131105: 0x8AE2,\n\t173737 - 131105: 0x9E75,\n}\n\nconst encode1Low, encode1High = 11904, 40908\n\nvar encode1 = [...]uint16{\n\t11904 - 11904: 0xC8D6,\n\t11908 - 11904: 0xC8D7,\n\t11910 - 11904: 0xC8D8,\n\t11911 - 11904: 0xC8D9,\n\t11912 - 11904: 0xC8DA,\n\t11914 - 11904: 0xC8DB,\n\t11916 - 11904: 0xC8DC,\n\t11917 - 11904: 0xC8DD,\n\t11925 - 11904: 0xC8DE,\n\t11932 - 11904: 0xC8DF,\n\t11933 - 11904: 0xC8E0,\n\t11941 - 11904: 0xC8E1,\n\t11943 - 11904: 0xC8E2,\n\t11946 - 11904: 0xC8E3,\n\t11948 - 11904: 0xC8E4,\n\t11950 - 11904: 0xC8E5,\n\t11958 - 11904: 0xC8E6,\n\t11964 - 11904: 0xC8E7,\n\t11966 - 11904: 0xC8E8,\n\t11974 - 11904: 0xC8E9,\n\t11978 - 11904: 0xC8EA,\n\t11980 - 11904: 0xC8EB,\n\t11981 - 11904: 0xC8EC,\n\t11983 - 11904: 0xC8ED,\n\t11990 - 11904: 0xC8EE,\n\t11991 - 11904: 0xC8EF,\n\t11998 - 11904: 0xC8F0,\n\t12003 - 11904: 0xC8F1,\n\t12083 - 11904: 0xC6CD,\n\t12288 - 11904: 0xA140,\n\t12289 - 11904: 0xA142,\n\t12290 - 11904: 0xA143,\n\t12291 - 11904: 0xC6DE,\n\t12293 - 11904: 0xC6E0,\n\t12294 - 11904: 0xC6E1,\n\t12295 - 11904: 0xC6E2,\n\t12296 - 11904: 0xA171,\n\t12297 - 11904: 0xA172,\n\t12298 - 11904: 0xA16D,\n\t12299 - 11904: 0xA16E,\n\t12300 - 11904: 0xA175,\n\t12301 - 11904: 0xA176,\n\t12302 - 11904: 0xA179,\n\t12303 - 11904: 0xA17A,\n\t12304 - 11904: 0xA169,\n\t12305 - 11904: 0xA16A,\n\t12306 - 11904: 0xA245,\n\t12308 - 11904: 0xA165,\n\t12309 - 11904: 0xA166,\n\t12317 - 11904: 0xA1A9,\n\t12318 - 11904: 0xA1AA,\n\t12321 - 11904: 0xA2C3,\n\t12322 - 11904: 0xA2C4,\n\t12323 - 11904: 0xA2C5,\n\t12324 - 11904: 0xA2C6,\n\t12325 - 11904: 0xA2C7,\n\t12326 - 11904: 0xA2C8,\n\t12327 - 11904: 0xA2C9,\n\t12328 - 11904: 0xA2CA,\n\t12329 - 11904: 0xA2CB,\n\t12353 - 11904: 0xC6E7,\n\t12354 - 11904: 0xC6E8,\n\t12355 - 11904: 0xC6E9,\n\t12356 - 11904: 0xC6EA,\n\t12357 - 11904: 0xC6EB,\n\t12358 - 11904: 0xC6EC,\n\t12359 - 11904: 0xC6ED,\n\t12360 - 11904: 0xC6EE,\n\t12361 - 11904: 0xC6EF,\n\t12362 - 11904: 0xC6F0,\n\t12363 - 11904: 0xC6F1,\n\t12364 - 11904: 0xC6F2,\n\t12365 - 11904: 0xC6F3,\n\t12366 - 11904: 0xC6F4,\n\t12367 - 11904: 0xC6F5,\n\t12368 - 11904: 0xC6F6,\n\t12369 - 11904: 0xC6F7,\n\t12370 - 11904: 0xC6F8,\n\t12371 - 11904: 0xC6F9,\n\t12372 - 11904: 0xC6FA,\n\t12373 - 11904: 0xC6FB,\n\t12374 - 11904: 0xC6FC,\n\t12375 - 11904: 0xC6FD,\n\t12376 - 11904: 0xC6FE,\n\t12377 - 11904: 0xC740,\n\t12378 - 11904: 0xC741,\n\t12379 - 11904: 0xC742,\n\t12380 - 11904: 0xC743,\n\t12381 - 11904: 0xC744,\n\t12382 - 11904: 0xC745,\n\t12383 - 11904: 0xC746,\n\t12384 - 11904: 0xC747,\n\t12385 - 11904: 0xC748,\n\t12386 - 11904: 0xC749,\n\t12387 - 11904: 0xC74A,\n\t12388 - 11904: 0xC74B,\n\t12389 - 11904: 0xC74C,\n\t12390 - 11904: 0xC74D,\n\t12391 - 11904: 0xC74E,\n\t12392 - 11904: 0xC74F,\n\t12393 - 11904: 0xC750,\n\t12394 - 11904: 0xC751,\n\t12395 - 11904: 0xC752,\n\t12396 - 11904: 0xC753,\n\t12397 - 11904: 0xC754,\n\t12398 - 11904: 0xC755,\n\t12399 - 11904: 0xC756,\n\t12400 - 11904: 0xC757,\n\t12401 - 11904: 0xC758,\n\t12402 - 11904: 0xC759,\n\t12403 - 11904: 0xC75A,\n\t12404 - 11904: 0xC75B,\n\t12405 - 11904: 0xC75C,\n\t12406 - 11904: 0xC75D,\n\t12407 - 11904: 0xC75E,\n\t12408 - 11904: 0xC75F,\n\t12409 - 11904: 0xC760,\n\t12410 - 11904: 0xC761,\n\t12411 - 11904: 0xC762,\n\t12412 - 11904: 0xC763,\n\t12413 - 11904: 0xC764,\n\t12414 - 11904: 0xC765,\n\t12415 - 11904: 0xC766,\n\t12416 - 11904: 0xC767,\n\t12417 - 11904: 0xC768,\n\t12418 - 11904: 0xC769,\n\t12419 - 11904: 0xC76A,\n\t12420 - 11904: 0xC76B,\n\t12421 - 11904: 0xC76C,\n\t12422 - 11904: 0xC76D,\n\t12423 - 11904: 0xC76E,\n\t12424 - 11904: 0xC76F,\n\t12425 - 11904: 0xC770,\n\t12426 - 11904: 0xC771,\n\t12427 - 11904: 0xC772,\n\t12428 - 11904: 0xC773,\n\t12429 - 11904: 0xC774,\n\t12430 - 11904: 0xC775,\n\t12431 - 11904: 0xC776,\n\t12432 - 11904: 0xC777,\n\t12433 - 11904: 0xC778,\n\t12434 - 11904: 0xC779,\n\t12435 - 11904: 0xC77A,\n\t12443 - 11904: 0xC8D4,\n\t12444 - 11904: 0xC8D5,\n\t12445 - 11904: 0xC6DC,\n\t12446 - 11904: 0xC6DD,\n\t12449 - 11904: 0xC77B,\n\t12450 - 11904: 0xC77C,\n\t12451 - 11904: 0xC77D,\n\t12452 - 11904: 0xC77E,\n\t12453 - 11904: 0xC7A1,\n\t12454 - 11904: 0xC7A2,\n\t12455 - 11904: 0xC7A3,\n\t12456 - 11904: 0xC7A4,\n\t12457 - 11904: 0xC7A5,\n\t12458 - 11904: 0xC7A6,\n\t12459 - 11904: 0xC7A7,\n\t12460 - 11904: 0xC7A8,\n\t12461 - 11904: 0xC7A9,\n\t12462 - 11904: 0xC7AA,\n\t12463 - 11904: 0xC7AB,\n\t12464 - 11904: 0xC7AC,\n\t12465 - 11904: 0xC7AD,\n\t12466 - 11904: 0xC7AE,\n\t12467 - 11904: 0xC7AF,\n\t12468 - 11904: 0xC7B0,\n\t12469 - 11904: 0xC7B1,\n\t12470 - 11904: 0xC7B2,\n\t12471 - 11904: 0xC7B3,\n\t12472 - 11904: 0xC7B4,\n\t12473 - 11904: 0xC7B5,\n\t12474 - 11904: 0xC7B6,\n\t12475 - 11904: 0xC7B7,\n\t12476 - 11904: 0xC7B8,\n\t12477 - 11904: 0xC7B9,\n\t12478 - 11904: 0xC7BA,\n\t12479 - 11904: 0xC7BB,\n\t12480 - 11904: 0xC7BC,\n\t12481 - 11904: 0xC7BD,\n\t12482 - 11904: 0xC7BE,\n\t12483 - 11904: 0xC7BF,\n\t12484 - 11904: 0xC7C0,\n\t12485 - 11904: 0xC7C1,\n\t12486 - 11904: 0xC7C2,\n\t12487 - 11904: 0xC7C3,\n\t12488 - 11904: 0xC7C4,\n\t12489 - 11904: 0xC7C5,\n\t12490 - 11904: 0xC7C6,\n\t12491 - 11904: 0xC7C7,\n\t12492 - 11904: 0xC7C8,\n\t12493 - 11904: 0xC7C9,\n\t12494 - 11904: 0xC7CA,\n\t12495 - 11904: 0xC7CB,\n\t12496 - 11904: 0xC7CC,\n\t12497 - 11904: 0xC7CD,\n\t12498 - 11904: 0xC7CE,\n\t12499 - 11904: 0xC7CF,\n\t12500 - 11904: 0xC7D0,\n\t12501 - 11904: 0xC7D1,\n\t12502 - 11904: 0xC7D2,\n\t12503 - 11904: 0xC7D3,\n\t12504 - 11904: 0xC7D4,\n\t12505 - 11904: 0xC7D5,\n\t12506 - 11904: 0xC7D6,\n\t12507 - 11904: 0xC7D7,\n\t12508 - 11904: 0xC7D8,\n\t12509 - 11904: 0xC7D9,\n\t12510 - 11904: 0xC7DA,\n\t12511 - 11904: 0xC7DB,\n\t12512 - 11904: 0xC7DC,\n\t12513 - 11904: 0xC7DD,\n\t12514 - 11904: 0xC7DE,\n\t12515 - 11904: 0xC7DF,\n\t12516 - 11904: 0xC7E0,\n\t12517 - 11904: 0xC7E1,\n\t12518 - 11904: 0xC7E2,\n\t12519 - 11904: 0xC7E3,\n\t12520 - 11904: 0xC7E4,\n\t12521 - 11904: 0xC7E5,\n\t12522 - 11904: 0xC7E6,\n\t12523 - 11904: 0xC7E7,\n\t12524 - 11904: 0xC7E8,\n\t12525 - 11904: 0xC7E9,\n\t12526 - 11904: 0xC7EA,\n\t12527 - 11904: 0xC7EB,\n\t12528 - 11904: 0xC7EC,\n\t12529 - 11904: 0xC7ED,\n\t12530 - 11904: 0xC7EE,\n\t12531 - 11904: 0xC7EF,\n\t12532 - 11904: 0xC7F0,\n\t12533 - 11904: 0xC7F1,\n\t12534 - 11904: 0xC7F2,\n\t12540 - 11904: 0xC6E3,\n\t12541 - 11904: 0xC6DA,\n\t12542 - 11904: 0xC6DB,\n\t12549 - 11904: 0xA374,\n\t12550 - 11904: 0xA375,\n\t12551 - 11904: 0xA376,\n\t12552 - 11904: 0xA377,\n\t12553 - 11904: 0xA378,\n\t12554 - 11904: 0xA379,\n\t12555 - 11904: 0xA37A,\n\t12556 - 11904: 0xA37B,\n\t12557 - 11904: 0xA37C,\n\t12558 - 11904: 0xA37D,\n\t12559 - 11904: 0xA37E,\n\t12560 - 11904: 0xA3A1,\n\t12561 - 11904: 0xA3A2,\n\t12562 - 11904: 0xA3A3,\n\t12563 - 11904: 0xA3A4,\n\t12564 - 11904: 0xA3A5,\n\t12565 - 11904: 0xA3A6,\n\t12566 - 11904: 0xA3A7,\n\t12567 - 11904: 0xA3A8,\n\t12568 - 11904: 0xA3A9,\n\t12569 - 11904: 0xA3AA,\n\t12570 - 11904: 0xA3AB,\n\t12571 - 11904: 0xA3AC,\n\t12572 - 11904: 0xA3AD,\n\t12573 - 11904: 0xA3AE,\n\t12574 - 11904: 0xA3AF,\n\t12575 - 11904: 0xA3B0,\n\t12576 - 11904: 0xA3B1,\n\t12577 - 11904: 0xA3B2,\n\t12578 - 11904: 0xA3B3,\n\t12579 - 11904: 0xA3B4,\n\t12580 - 11904: 0xA3B5,\n\t12581 - 11904: 0xA3B6,\n\t12582 - 11904: 0xA3B7,\n\t12583 - 11904: 0xA3B8,\n\t12584 - 11904: 0xA3B9,\n\t12585 - 11904: 0xA3BA,\n\t12736 - 11904: 0x8840,\n\t12737 - 11904: 0x8841,\n\t12738 - 11904: 0x8842,\n\t12739 - 11904: 0x8843,\n\t12740 - 11904: 0x8844,\n\t12741 - 11904: 0x8846,\n\t12742 - 11904: 0x8849,\n\t12743 - 11904: 0x884A,\n\t12744 - 11904: 0x884D,\n\t12745 - 11904: 0x884F,\n\t12746 - 11904: 0x8850,\n\t12747 - 11904: 0x8851,\n\t12748 - 11904: 0x8852,\n\t12749 - 11904: 0x8854,\n\t12750 - 11904: 0x8855,\n\t12751 - 11904: 0xC879,\n\t12849 - 11904: 0xC8D1,\n\t12963 - 11904: 0xA1C0,\n\t13198 - 11904: 0xA255,\n\t13199 - 11904: 0xA256,\n\t13212 - 11904: 0xA250,\n\t13213 - 11904: 0xA251,\n\t13214 - 11904: 0xA252,\n\t13217 - 11904: 0xA254,\n\t13252 - 11904: 0xA257,\n\t13262 - 11904: 0xA253,\n\t13265 - 11904: 0xA1EB,\n\t13266 - 11904: 0xA1EA,\n\t13269 - 11904: 0xA24F,\n\t13365 - 11904: 0x9277,\n\t13376 - 11904: 0x96DF,\n\t13386 - 11904: 0x8CF4,\n\t13388 - 11904: 0x89D5,\n\t13412 - 11904: 0x93CD,\n\t13427 - 11904: 0x9BDF,\n\t13434 - 11904: 0xFA68,\n\t13437 - 11904: 0x89DA,\n\t13438 - 11904: 0x8F59,\n\t13459 - 11904: 0x89DB,\n\t13462 - 11904: 0x8F5D,\n\t13477 - 11904: 0x89DC,\n\t13487 - 11904: 0x96F7,\n\t13500 - 11904: 0x8ADA,\n\t13505 - 11904: 0x8BDC,\n\t13512 - 11904: 0x97DB,\n\t13535 - 11904: 0x9E53,\n\t13540 - 11904: 0x9DAA,\n\t13542 - 11904: 0x87BE,\n\t13563 - 11904: 0x9BEA,\n\t13574 - 11904: 0x8A6E,\n\t13630 - 11904: 0x8BC8,\n\t13649 - 11904: 0x89E8,\n\t13651 - 11904: 0x89EA,\n\t13657 - 11904: 0x8C4B,\n\t13665 - 11904: 0xFB70,\n\t13677 - 11904: 0x89ED,\n\t13680 - 11904: 0x94DD,\n\t13682 - 11904: 0x89EE,\n\t13687 - 11904: 0x9EB4,\n\t13688 - 11904: 0x8AD3,\n\t13700 - 11904: 0x92DB,\n\t13719 - 11904: 0x94DB,\n\t13720 - 11904: 0x89F9,\n\t13729 - 11904: 0xFB7A,\n\t13733 - 11904: 0x89FB,\n\t13741 - 11904: 0x9EFC,\n\t13759 - 11904: 0x89FC,\n\t13761 - 11904: 0x89BF,\n\t13765 - 11904: 0x89FE,\n\t13767 - 11904: 0x89E6,\n\t13770 - 11904: 0x9D46,\n\t13774 - 11904: 0x9DEE,\n\t13778 - 11904: 0xA07E,\n\t13782 - 11904: 0xA068,\n\t13787 - 11904: 0x98E9,\n\t13789 - 11904: 0x8B68,\n\t13809 - 11904: 0x8DFD,\n\t13810 - 11904: 0x8BBE,\n\t13811 - 11904: 0x9FD9,\n\t13819 - 11904: 0x8AEB,\n\t13822 - 11904: 0x9FD7,\n\t13833 - 11904: 0x8B6A,\n\t13848 - 11904: 0x9C5C,\n\t13850 - 11904: 0x8BB1,\n\t13859 - 11904: 0xFB5E,\n\t13861 - 11904: 0x8770,\n\t13869 - 11904: 0x9DF3,\n\t13877 - 11904: 0xA0D0,\n\t13881 - 11904: 0xFC66,\n\t13886 - 11904: 0x92E9,\n\t13895 - 11904: 0x9AEC,\n\t13896 - 11904: 0x8FAB,\n\t13897 - 11904: 0xFA48,\n\t13902 - 11904: 0x8E45,\n\t13919 - 11904: 0x9C6F,\n\t13921 - 11904: 0x8D5C,\n\t13946 - 11904: 0x9EDE,\n\t13953 - 11904: 0x89EF,\n\t13978 - 11904: 0x96E9,\n\t13989 - 11904: 0x9EBB,\n\t13994 - 11904: 0x94DE,\n\t13996 - 11904: 0x9EB8,\n\t14000 - 11904: 0x97BA,\n\t14001 - 11904: 0xFB65,\n\t14005 - 11904: 0x95D6,\n\t14009 - 11904: 0x9CBB,\n\t14012 - 11904: 0x97DA,\n\t14017 - 11904: 0x8F45,\n\t14019 - 11904: 0xFB7D,\n\t14020 - 11904: 0x9158,\n\t14021 - 11904: 0xFE64,\n\t14023 - 11904: 0x9856,\n\t14024 - 11904: 0x9B4D,\n\t14035 - 11904: 0x935B,\n\t14036 - 11904: 0x95C7,\n\t14038 - 11904: 0x97E7,\n\t14045 - 11904: 0x9359,\n\t14049 - 11904: 0x91F5,\n\t14050 - 11904: 0x97B8,\n\t14053 - 11904: 0xFDA2,\n\t14054 - 11904: 0xFBB6,\n\t14069 - 11904: 0x92FA,\n\t14081 - 11904: 0x9357,\n\t14083 - 11904: 0x8BA6,\n\t14088 - 11904: 0xFBB9,\n\t14090 - 11904: 0x97B0,\n\t14093 - 11904: 0xFDC4,\n\t14108 - 11904: 0x9CA1,\n\t14114 - 11904: 0x91F2,\n\t14115 - 11904: 0x91F9,\n\t14117 - 11904: 0x8FF1,\n\t14124 - 11904: 0x9745,\n\t14125 - 11904: 0x9853,\n\t14128 - 11904: 0xFE78,\n\t14130 - 11904: 0xFBC1,\n\t14131 - 11904: 0x9251,\n\t14138 - 11904: 0x9DAD,\n\t14144 - 11904: 0xFD6C,\n\t14147 - 11904: 0xFA6B,\n\t14178 - 11904: 0x9BC2,\n\t14191 - 11904: 0x9A7B,\n\t14231 - 11904: 0x8B60,\n\t14240 - 11904: 0x934B,\n\t14265 - 11904: 0x9ABD,\n\t14270 - 11904: 0x91B7,\n\t14294 - 11904: 0x8D4B,\n\t14322 - 11904: 0x95B4,\n\t14328 - 11904: 0xFEC5,\n\t14331 - 11904: 0x9EF0,\n\t14351 - 11904: 0x8D64,\n\t14361 - 11904: 0x9269,\n\t14368 - 11904: 0x8D67,\n\t14381 - 11904: 0xFBEA,\n\t14390 - 11904: 0xFBEF,\n\t14392 - 11904: 0x8D68,\n\t14435 - 11904: 0x93EB,\n\t14453 - 11904: 0x877A,\n\t14496 - 11904: 0xFC42,\n\t14531 - 11904: 0x9166,\n\t14540 - 11904: 0xFACD,\n\t14545 - 11904: 0x93DD,\n\t14548 - 11904: 0x8D52,\n\t14586 - 11904: 0x8BCC,\n\t14600 - 11904: 0x8D6D,\n\t14612 - 11904: 0x8D6E,\n\t14631 - 11904: 0x96A8,\n\t14642 - 11904: 0xFCA6,\n\t14655 - 11904: 0x8D6F,\n\t14669 - 11904: 0x8D70,\n\t14691 - 11904: 0xFC64,\n\t14712 - 11904: 0x8CF3,\n\t14720 - 11904: 0x9060,\n\t14729 - 11904: 0x8D74,\n\t14730 - 11904: 0x97C3,\n\t14738 - 11904: 0x8AD0,\n\t14745 - 11904: 0x9274,\n\t14747 - 11904: 0x9BBE,\n\t14753 - 11904: 0x9CC8,\n\t14756 - 11904: 0x9CBA,\n\t14776 - 11904: 0x8D78,\n\t14812 - 11904: 0x9EB9,\n\t14818 - 11904: 0x955A,\n\t14821 - 11904: 0x91B4,\n\t14828 - 11904: 0x8A48,\n\t14840 - 11904: 0x8D7D,\n\t14843 - 11904: 0x8A7D,\n\t14846 - 11904: 0x8AC2,\n\t14849 - 11904: 0xFD4A,\n\t14851 - 11904: 0x8DA1,\n\t14854 - 11904: 0x8AD1,\n\t14871 - 11904: 0xFCB4,\n\t14872 - 11904: 0x8B47,\n\t14889 - 11904: 0x93A4,\n\t14890 - 11904: 0x9EDA,\n\t14900 - 11904: 0x8A51,\n\t14923 - 11904: 0x8DA6,\n\t14930 - 11904: 0x9EC5,\n\t14935 - 11904: 0xFCC4,\n\t14940 - 11904: 0xA078,\n\t14942 - 11904: 0x94B5,\n\t14950 - 11904: 0xFCC2,\n\t14951 - 11904: 0x8A6B,\n\t14999 - 11904: 0x8DAB,\n\t15019 - 11904: 0xFAE8,\n\t15037 - 11904: 0x8DAD,\n\t15070 - 11904: 0xFC49,\n\t15072 - 11904: 0x93C1,\n\t15088 - 11904: 0x906F,\n\t15090 - 11904: 0x8DB0,\n\t15093 - 11904: 0x87A2,\n\t15099 - 11904: 0x947E,\n\t15118 - 11904: 0x90FA,\n\t15129 - 11904: 0x9479,\n\t15138 - 11904: 0x8DB2,\n\t15147 - 11904: 0xFCEE,\n\t15161 - 11904: 0x997B,\n\t15170 - 11904: 0x8DB4,\n\t15192 - 11904: 0x8DB7,\n\t15200 - 11904: 0x91B3,\n\t15217 - 11904: 0x8DBB,\n\t15218 - 11904: 0x8DBA,\n\t15227 - 11904: 0x8DBC,\n\t15228 - 11904: 0x9044,\n\t15232 - 11904: 0xFD4C,\n\t15253 - 11904: 0x874B,\n\t15254 - 11904: 0x93E4,\n\t15257 - 11904: 0x93E0,\n\t15265 - 11904: 0xFD53,\n\t15292 - 11904: 0x8DC3,\n\t15294 - 11904: 0x9BB8,\n\t15298 - 11904: 0xFBF0,\n\t15300 - 11904: 0x93E9,\n\t15319 - 11904: 0x93F6,\n\t15325 - 11904: 0x8DC5,\n\t15340 - 11904: 0x8DCA,\n\t15346 - 11904: 0x8DCC,\n\t15347 - 11904: 0xFD5D,\n\t15348 - 11904: 0x93B5,\n\t15373 - 11904: 0xFD61,\n\t15377 - 11904: 0x9CF8,\n\t15381 - 11904: 0x9252,\n\t15384 - 11904: 0xA0E8,\n\t15444 - 11904: 0x9CA5,\n\t15499 - 11904: 0x8C56,\n\t15563 - 11904: 0x8DD6,\n\t15565 - 11904: 0x97C0,\n\t15569 - 11904: 0xA0DE,\n\t15574 - 11904: 0x97D2,\n\t15580 - 11904: 0xFAA5,\n\t15595 - 11904: 0xFDA3,\n\t15599 - 11904: 0x8DDB,\n\t15634 - 11904: 0x8CEA,\n\t15635 - 11904: 0x8EAF,\n\t15645 - 11904: 0x91B5,\n\t15666 - 11904: 0xFD49,\n\t15675 - 11904: 0xFDD1,\n\t15686 - 11904: 0x8DEB,\n\t15692 - 11904: 0x97C6,\n\t15694 - 11904: 0xFDCE,\n\t15697 - 11904: 0x90FC,\n\t15711 - 11904: 0xFC59,\n\t15714 - 11904: 0x96D6,\n\t15721 - 11904: 0x97C5,\n\t15722 - 11904: 0x8DEF,\n\t15727 - 11904: 0x97D7,\n\t15733 - 11904: 0x8DF0,\n\t15741 - 11904: 0x96A6,\n\t15749 - 11904: 0xFBBF,\n\t15752 - 11904: 0x8CDF,\n\t15754 - 11904: 0x8DF3,\n\t15759 - 11904: 0x9449,\n\t15761 - 11904: 0x8DF5,\n\t15781 - 11904: 0x9872,\n\t15789 - 11904: 0x8E6B,\n\t15796 - 11904: 0xFAFD,\n\t15807 - 11904: 0x8F50,\n\t15814 - 11904: 0x9DCC,\n\t15815 - 11904: 0xFC65,\n\t15817 - 11904: 0x8C44,\n\t15820 - 11904: 0x996E,\n\t15821 - 11904: 0x94A1,\n\t15827 - 11904: 0x8F63,\n\t15835 - 11904: 0xA0DA,\n\t15847 - 11904: 0x9253,\n\t15848 - 11904: 0xFDE9,\n\t15851 - 11904: 0x9DB5,\n\t15859 - 11904: 0x9879,\n\t15860 - 11904: 0x876A,\n\t15863 - 11904: 0x9D5D,\n\t15868 - 11904: 0x8D63,\n\t15869 - 11904: 0x9669,\n\t15878 - 11904: 0x9F70,\n\t15936 - 11904: 0xFC6A,\n\t15939 - 11904: 0x8AC7,\n\t15944 - 11904: 0x89D7,\n\t15957 - 11904: 0xFE4D,\n\t15988 - 11904: 0x9EDD,\n\t16040 - 11904: 0xFEFB,\n\t16041 - 11904: 0x98BC,\n\t16042 - 11904: 0xFACC,\n\t16045 - 11904: 0x95B0,\n\t16049 - 11904: 0x9464,\n\t16056 - 11904: 0x936F,\n\t16063 - 11904: 0x94B9,\n\t16066 - 11904: 0x95EC,\n\t16071 - 11904: 0x91EE,\n\t16074 - 11904: 0x98C3,\n\t16076 - 11904: 0x95F6,\n\t16080 - 11904: 0x8FFD,\n\t16081 - 11904: 0x98C5,\n\t16086 - 11904: 0x9766,\n\t16087 - 11904: 0xFE6E,\n\t16090 - 11904: 0x97DD,\n\t16091 - 11904: 0x8CAA,\n\t16094 - 11904: 0x92D2,\n\t16097 - 11904: 0x9761,\n\t16098 - 11904: 0x98CB,\n\t16103 - 11904: 0x95F0,\n\t16105 - 11904: 0x975D,\n\t16107 - 11904: 0x91E3,\n\t16108 - 11904: 0x877E,\n\t16112 - 11904: 0x98CC,\n\t16115 - 11904: 0x9469,\n\t16116 - 11904: 0x98CD,\n\t16122 - 11904: 0x98CE,\n\t16124 - 11904: 0x95FC,\n\t16127 - 11904: 0x94A3,\n\t16128 - 11904: 0x9662,\n\t16132 - 11904: 0xFEB6,\n\t16134 - 11904: 0x9463,\n\t16135 - 11904: 0x8D47,\n\t16142 - 11904: 0x98D0,\n\t16211 - 11904: 0x98D1,\n\t16216 - 11904: 0x9475,\n\t16217 - 11904: 0xFAE0,\n\t16227 - 11904: 0x9472,\n\t16252 - 11904: 0x98D6,\n\t16275 - 11904: 0x8AF0,\n\t16320 - 11904: 0x98D9,\n\t16328 - 11904: 0x8D5A,\n\t16343 - 11904: 0x98DB,\n\t16348 - 11904: 0x98DD,\n\t16357 - 11904: 0x98A8,\n\t16365 - 11904: 0x8A6D,\n\t16377 - 11904: 0x8AFB,\n\t16378 - 11904: 0x8AAE,\n\t16388 - 11904: 0xFBC9,\n\t16393 - 11904: 0x8C5D,\n\t16413 - 11904: 0x98E4,\n\t16441 - 11904: 0x98E6,\n\t16453 - 11904: 0x98E8,\n\t16467 - 11904: 0x8A4D,\n\t16471 - 11904: 0x9257,\n\t16482 - 11904: 0x95DF,\n\t16485 - 11904: 0xA0AC,\n\t16490 - 11904: 0x98EB,\n\t16495 - 11904: 0x98EC,\n\t16497 - 11904: 0x8CC3,\n\t16552 - 11904: 0x98F4,\n\t16564 - 11904: 0x87D9,\n\t16571 - 11904: 0x8AB8,\n\t16575 - 11904: 0x9EE7,\n\t16584 - 11904: 0x94BC,\n\t16600 - 11904: 0xFCD1,\n\t16607 - 11904: 0x9CC6,\n\t16632 - 11904: 0x8D4A,\n\t16634 - 11904: 0x9E7E,\n\t16642 - 11904: 0x8D44,\n\t16643 - 11904: 0x98FE,\n\t16644 - 11904: 0xFDE8,\n\t16649 - 11904: 0x9940,\n\t16654 - 11904: 0x94C9,\n\t16689 - 11904: 0x87C6,\n\t16690 - 11904: 0x94D3,\n\t16743 - 11904: 0x9946,\n\t16748 - 11904: 0x90C0,\n\t16750 - 11904: 0x94D1,\n\t16764 - 11904: 0x8D4E,\n\t16767 - 11904: 0x9573,\n\t16769 - 11904: 0x87CE,\n\t16784 - 11904: 0x93C2,\n\t16818 - 11904: 0x9948,\n\t16836 - 11904: 0x994B,\n\t16842 - 11904: 0x8E55,\n\t16847 - 11904: 0x994E,\n\t16859 - 11904: 0x8EFE,\n\t16877 - 11904: 0x8D5F,\n\t16879 - 11904: 0x8E59,\n\t16889 - 11904: 0x94EC,\n\t16913 - 11904: 0x94EF,\n\t16931 - 11904: 0x8C60,\n\t16960 - 11904: 0x8F74,\n\t16992 - 11904: 0x9955,\n\t17002 - 11904: 0x9544,\n\t17014 - 11904: 0x8CCB,\n\t17018 - 11904: 0x9956,\n\t17036 - 11904: 0x9959,\n\t17044 - 11904: 0x995B,\n\t17058 - 11904: 0x8CC4,\n\t17077 - 11904: 0xFA45,\n\t17081 - 11904: 0x90B7,\n\t17084 - 11904: 0x9743,\n\t17140 - 11904: 0x95CD,\n\t17147 - 11904: 0x97C9,\n\t17148 - 11904: 0xFD50,\n\t17162 - 11904: 0x87AA,\n\t17195 - 11904: 0x8EB9,\n\t17262 - 11904: 0x95C6,\n\t17303 - 11904: 0x9967,\n\t17306 - 11904: 0x8CE3,\n\t17338 - 11904: 0x8AB9,\n\t17345 - 11904: 0x8DFC,\n\t17369 - 11904: 0x8A76,\n\t17375 - 11904: 0x9D51,\n\t17389 - 11904: 0x9973,\n\t17392 - 11904: 0x8740,\n\t17394 - 11904: 0x9D4F,\n\t17409 - 11904: 0x997A,\n\t17410 - 11904: 0x9564,\n\t17427 - 11904: 0x99A1,\n\t17445 - 11904: 0x99A5,\n\t17453 - 11904: 0x99A7,\n\t17530 - 11904: 0x8EED,\n\t17551 - 11904: 0x99AD,\n\t17553 - 11904: 0xC87E,\n\t17567 - 11904: 0x946E,\n\t17568 - 11904: 0x8F70,\n\t17570 - 11904: 0xFAD0,\n\t17584 - 11904: 0x99B3,\n\t17591 - 11904: 0xA053,\n\t17597 - 11904: 0x8D5E,\n\t17600 - 11904: 0x965C,\n\t17603 - 11904: 0x8CE0,\n\t17605 - 11904: 0xFD7A,\n\t17614 - 11904: 0x97FE,\n\t17629 - 11904: 0x92BD,\n\t17630 - 11904: 0x8D5D,\n\t17631 - 11904: 0x97FD,\n\t17633 - 11904: 0x87DB,\n\t17636 - 11904: 0x8F64,\n\t17641 - 11904: 0xFCF7,\n\t17642 - 11904: 0x9562,\n\t17643 - 11904: 0x97CD,\n\t17644 - 11904: 0x9E64,\n\t17652 - 11904: 0x924C,\n\t17667 - 11904: 0x8EC9,\n\t17668 - 11904: 0x99BC,\n\t17673 - 11904: 0x9DA5,\n\t17675 - 11904: 0x8F54,\n\t17686 - 11904: 0x8F7C,\n\t17691 - 11904: 0x8D55,\n\t17693 - 11904: 0x8EA2,\n\t17703 - 11904: 0x8F7A,\n\t17710 - 11904: 0x97AE,\n\t17715 - 11904: 0x96C8,\n\t17718 - 11904: 0x8CE4,\n\t17723 - 11904: 0x99C3,\n\t17725 - 11904: 0x90D6,\n\t17727 - 11904: 0x9CBE,\n\t17731 - 11904: 0x8F76,\n\t17745 - 11904: 0x9470,\n\t17746 - 11904: 0xFB4B,\n\t17749 - 11904: 0xFDCA,\n\t17752 - 11904: 0x8CEF,\n\t17756 - 11904: 0x8EC7,\n\t17761 - 11904: 0x8D54,\n\t17762 - 11904: 0xA0F9,\n\t17770 - 11904: 0x8FA9,\n\t17773 - 11904: 0x8D51,\n\t17783 - 11904: 0x99C7,\n\t17784 - 11904: 0x8744,\n\t17797 - 11904: 0x90D7,\n\t17830 - 11904: 0x8743,\n\t17843 - 11904: 0x8747,\n\t17882 - 11904: 0x8758,\n\t17897 - 11904: 0x9EDF,\n\t17898 - 11904: 0x8D59,\n\t17923 - 11904: 0x8742,\n\t17926 - 11904: 0x99CE,\n\t17935 - 11904: 0x8FBA,\n\t17941 - 11904: 0x8FEB,\n\t17943 - 11904: 0x99CF,\n\t18011 - 11904: 0x8FC2,\n\t18042 - 11904: 0x92C9,\n\t18048 - 11904: 0x97DC,\n\t18081 - 11904: 0x875D,\n\t18094 - 11904: 0x87CC,\n\t18107 - 11904: 0x8D45,\n\t18127 - 11904: 0x95B3,\n\t18128 - 11904: 0x9C79,\n\t18165 - 11904: 0x95B2,\n\t18167 - 11904: 0x8D4C,\n\t18195 - 11904: 0x8FDB,\n\t18200 - 11904: 0x9BE3,\n\t18230 - 11904: 0x874C,\n\t18244 - 11904: 0x874D,\n\t18254 - 11904: 0x9E7A,\n\t18255 - 11904: 0x8757,\n\t18300 - 11904: 0x9BEE,\n\t18328 - 11904: 0x99DE,\n\t18342 - 11904: 0xFAFA,\n\t18389 - 11904: 0x8A52,\n\t18413 - 11904: 0x99E1,\n\t18420 - 11904: 0x8A67,\n\t18432 - 11904: 0x8BB5,\n\t18443 - 11904: 0x8AAC,\n\t18487 - 11904: 0x99E9,\n\t18525 - 11904: 0xFBCA,\n\t18545 - 11904: 0x97DE,\n\t18587 - 11904: 0x95D1,\n\t18605 - 11904: 0x99F5,\n\t18606 - 11904: 0xFC4A,\n\t18640 - 11904: 0x9BA9,\n\t18653 - 11904: 0xFBDC,\n\t18669 - 11904: 0xFE56,\n\t18675 - 11904: 0x9EA4,\n\t18682 - 11904: 0x9D49,\n\t18694 - 11904: 0x95DB,\n\t18705 - 11904: 0x89C5,\n\t18718 - 11904: 0x99F8,\n\t18725 - 11904: 0x9664,\n\t18730 - 11904: 0x9055,\n\t18733 - 11904: 0x96D4,\n\t18735 - 11904: 0x87C4,\n\t18736 - 11904: 0x87AE,\n\t18741 - 11904: 0x977C,\n\t18748 - 11904: 0x964D,\n\t18750 - 11904: 0x97E1,\n\t18757 - 11904: 0x9A48,\n\t18769 - 11904: 0x9A49,\n\t18771 - 11904: 0xFE7D,\n\t18789 - 11904: 0x90AA,\n\t18794 - 11904: 0x9A50,\n\t18802 - 11904: 0x9347,\n\t18825 - 11904: 0x8ED8,\n\t18849 - 11904: 0x90C9,\n\t18855 - 11904: 0x9A55,\n\t18911 - 11904: 0x90BC,\n\t18917 - 11904: 0x9A58,\n\t18919 - 11904: 0x8BB8,\n\t18959 - 11904: 0x90D5,\n\t18973 - 11904: 0x9641,\n\t18980 - 11904: 0x9A5A,\n\t18997 - 11904: 0x9A5C,\n\t19094 - 11904: 0x97C2,\n\t19108 - 11904: 0x875C,\n\t19124 - 11904: 0x8ABB,\n\t19128 - 11904: 0x9BAA,\n\t19153 - 11904: 0x90F5,\n\t19172 - 11904: 0x9A60,\n\t19199 - 11904: 0x9145,\n\t19216 - 11904: 0x8C58,\n\t19225 - 11904: 0x9A63,\n\t19232 - 11904: 0x8C49,\n\t19244 - 11904: 0x8BB6,\n\t19255 - 11904: 0xFCCF,\n\t19311 - 11904: 0x966B,\n\t19312 - 11904: 0x9A6E,\n\t19314 - 11904: 0x914F,\n\t19323 - 11904: 0x9746,\n\t19326 - 11904: 0xA0E6,\n\t19342 - 11904: 0x92D7,\n\t19344 - 11904: 0x9675,\n\t19347 - 11904: 0x93D4,\n\t19350 - 11904: 0x91BB,\n\t19351 - 11904: 0x9679,\n\t19357 - 11904: 0x9A70,\n\t19389 - 11904: 0x9678,\n\t19390 - 11904: 0x91CD,\n\t19392 - 11904: 0x9C4A,\n\t19460 - 11904: 0xA06F,\n\t19463 - 11904: 0xA06A,\n\t19470 - 11904: 0x915F,\n\t19506 - 11904: 0x8741,\n\t19515 - 11904: 0x9FA5,\n\t19518 - 11904: 0x89BA,\n\t19520 - 11904: 0x874F,\n\t19527 - 11904: 0x874E,\n\t19543 - 11904: 0x8755,\n\t19547 - 11904: 0x9ECD,\n\t19565 - 11904: 0x9A79,\n\t19575 - 11904: 0x8CF2,\n\t19579 - 11904: 0x8D57,\n\t19581 - 11904: 0x9DCE,\n\t19585 - 11904: 0x8CD2,\n\t19589 - 11904: 0x8759,\n\t19620 - 11904: 0x9D73,\n\t19630 - 11904: 0x96B9,\n\t19632 - 11904: 0x96BC,\n\t19639 - 11904: 0x9CD1,\n\t19661 - 11904: 0x89B7,\n\t19681 - 11904: 0x9EEE,\n\t19682 - 11904: 0x8749,\n\t19693 - 11904: 0xFB43,\n\t19719 - 11904: 0x875B,\n\t19721 - 11904: 0x9EC9,\n\t19728 - 11904: 0xFBD3,\n\t19764 - 11904: 0x91AE,\n\t19830 - 11904: 0x8D58,\n\t19831 - 11904: 0x8746,\n\t19849 - 11904: 0x8D56,\n\t19857 - 11904: 0x9D78,\n\t19868 - 11904: 0x9D7B,\n\t19968 - 11904: 0xA440,\n\t19969 - 11904: 0xA442,\n\t19971 - 11904: 0xA443,\n\t19972 - 11904: 0x9EB3,\n\t19975 - 11904: 0xC945,\n\t19976 - 11904: 0xA456,\n\t19977 - 11904: 0xA454,\n\t19978 - 11904: 0xA457,\n\t19979 - 11904: 0xA455,\n\t19980 - 11904: 0xC946,\n\t19981 - 11904: 0xA4A3,\n\t19982 - 11904: 0xC94F,\n\t19983 - 11904: 0xC94D,\n\t19984 - 11904: 0xA4A2,\n\t19985 - 11904: 0xA4A1,\n\t19988 - 11904: 0xA542,\n\t19989 - 11904: 0xA541,\n\t19990 - 11904: 0xA540,\n\t19992 - 11904: 0xA543,\n\t19993 - 11904: 0xA4FE,\n\t19994 - 11904: 0x9EB2,\n\t19996 - 11904: 0x9DD6,\n\t19998 - 11904: 0xA5E0,\n\t19999 - 11904: 0xA5E1,\n\t20001 - 11904: 0x994F,\n\t20004 - 11904: 0x89CE,\n\t20006 - 11904: 0xA8C3,\n\t20008 - 11904: 0x8BC0,\n\t20010 - 11904: 0x9FC4,\n\t20011 - 11904: 0xA458,\n\t20012 - 11904: 0x8BD4,\n\t20013 - 11904: 0xA4A4,\n\t20014 - 11904: 0xC950,\n\t20015 - 11904: 0x8C72,\n\t20016 - 11904: 0xA4A5,\n\t20017 - 11904: 0xC963,\n\t20018 - 11904: 0xA6EA,\n\t20019 - 11904: 0xCBB1,\n\t20022 - 11904: 0xC6BF,\n\t20023 - 11904: 0x8BF9,\n\t20024 - 11904: 0xA459,\n\t20025 - 11904: 0xA4A6,\n\t20027 - 11904: 0xA544,\n\t20028 - 11904: 0xC964,\n\t20029 - 11904: 0x8946,\n\t20031 - 11904: 0xC6C0,\n\t20034 - 11904: 0xC940,\n\t20035 - 11904: 0xA444,\n\t20037 - 11904: 0xA45B,\n\t20039 - 11904: 0xC947,\n\t20040 - 11904: 0xA45C,\n\t20041 - 11904: 0xFAE5,\n\t20043 - 11904: 0xA4A7,\n\t20045 - 11904: 0xA545,\n\t20046 - 11904: 0xA547,\n\t20047 - 11904: 0xA546,\n\t20050 - 11904: 0xA5E2,\n\t20051 - 11904: 0xA5E3,\n\t20054 - 11904: 0xA8C4,\n\t20056 - 11904: 0xADBC,\n\t20057 - 11904: 0xA441,\n\t20058 - 11904: 0xC87B,\n\t20059 - 11904: 0x8BC6,\n\t20060 - 11904: 0xC941,\n\t20061 - 11904: 0xA445,\n\t20062 - 11904: 0xA45E,\n\t20063 - 11904: 0xA45D,\n\t20073 - 11904: 0xA5E4,\n\t20074 - 11904: 0x9C57,\n\t20083 - 11904: 0xA8C5,\n\t20088 - 11904: 0x9AFB,\n\t20094 - 11904: 0xB0AE,\n\t20095 - 11904: 0xD44B,\n\t20096 - 11904: 0x89D0,\n\t20097 - 11904: 0x89CF,\n\t20098 - 11904: 0xB6C3,\n\t20099 - 11904: 0xDCB1,\n\t20100 - 11904: 0xDCB2,\n\t20101 - 11904: 0xC6C1,\n\t20102 - 11904: 0xA446,\n\t20103 - 11904: 0x89D1,\n\t20104 - 11904: 0xA4A9,\n\t20105 - 11904: 0x89E2,\n\t20107 - 11904: 0xA8C6,\n\t20108 - 11904: 0xA447,\n\t20109 - 11904: 0xC948,\n\t20110 - 11904: 0xA45F,\n\t20113 - 11904: 0xA4AA,\n\t20114 - 11904: 0xA4AC,\n\t20115 - 11904: 0xC951,\n\t20116 - 11904: 0xA4AD,\n\t20117 - 11904: 0xA4AB,\n\t20120 - 11904: 0x927E,\n\t20121 - 11904: 0xA5E5,\n\t20122 - 11904: 0x9DBA,\n\t20123 - 11904: 0xA8C7,\n\t20126 - 11904: 0xA8C8,\n\t20127 - 11904: 0xAB45,\n\t20128 - 11904: 0xC6C2,\n\t20129 - 11904: 0xA460,\n\t20130 - 11904: 0xA4AE,\n\t20131 - 11904: 0x8C6F,\n\t20132 - 11904: 0xA5E6,\n\t20133 - 11904: 0xA5E8,\n\t20134 - 11904: 0xA5E7,\n\t20136 - 11904: 0xA6EB,\n\t20139 - 11904: 0xA8C9,\n\t20140 - 11904: 0xA8CA,\n\t20141 - 11904: 0xAB46,\n\t20142 - 11904: 0xAB47,\n\t20147 - 11904: 0xADBD,\n\t20150 - 11904: 0xDCB3,\n\t20151 - 11904: 0xFBF8,\n\t20153 - 11904: 0xF6D6,\n\t20154 - 11904: 0xA448,\n\t20155 - 11904: 0x8BC7,\n\t20156 - 11904: 0x926B,\n\t20159 - 11904: 0x89D2,\n\t20160 - 11904: 0xA4B0,\n\t20161 - 11904: 0xA4AF,\n\t20162 - 11904: 0xC952,\n\t20163 - 11904: 0xA4B1,\n\t20164 - 11904: 0xA4B7,\n\t20166 - 11904: 0xA4B2,\n\t20167 - 11904: 0xA4B3,\n\t20168 - 11904: 0xC954,\n\t20169 - 11904: 0xC953,\n\t20170 - 11904: 0xA4B5,\n\t20171 - 11904: 0xA4B6,\n\t20173 - 11904: 0xA4B4,\n\t20174 - 11904: 0x9FCF,\n\t20180 - 11904: 0xA54A,\n\t20181 - 11904: 0xA54B,\n\t20182 - 11904: 0xA54C,\n\t20183 - 11904: 0xA54D,\n\t20184 - 11904: 0xA549,\n\t20185 - 11904: 0xA550,\n\t20186 - 11904: 0xC96A,\n\t20188 - 11904: 0xC966,\n\t20189 - 11904: 0xC969,\n\t20190 - 11904: 0xA551,\n\t20191 - 11904: 0xA561,\n\t20193 - 11904: 0xC968,\n\t20195 - 11904: 0xA54E,\n\t20196 - 11904: 0xA54F,\n\t20197 - 11904: 0xA548,\n\t20200 - 11904: 0xC965,\n\t20201 - 11904: 0xC967,\n\t20202 - 11904: 0x9DA9,\n\t20203 - 11904: 0x89D3,\n\t20206 - 11904: 0x99E2,\n\t20208 - 11904: 0xA5F5,\n\t20209 - 11904: 0xC9B0,\n\t20210 - 11904: 0xA5F2,\n\t20211 - 11904: 0xA5F6,\n\t20212 - 11904: 0xC9BA,\n\t20213 - 11904: 0xC9AE,\n\t20214 - 11904: 0xA5F3,\n\t20215 - 11904: 0xC9B2,\n\t20216 - 11904: 0x9267,\n\t20219 - 11904: 0xA5F4,\n\t20221 - 11904: 0xA5F7,\n\t20223 - 11904: 0xA5E9,\n\t20224 - 11904: 0xC9B1,\n\t20225 - 11904: 0xA5F8,\n\t20226 - 11904: 0xC9B5,\n\t20227 - 11904: 0x92A4,\n\t20228 - 11904: 0xC9B9,\n\t20229 - 11904: 0xC9B6,\n\t20232 - 11904: 0xC9B3,\n\t20233 - 11904: 0xA5EA,\n\t20234 - 11904: 0xA5EC,\n\t20235 - 11904: 0xA5F9,\n\t20237 - 11904: 0xA5EE,\n\t20238 - 11904: 0xC9AB,\n\t20239 - 11904: 0xA5F1,\n\t20240 - 11904: 0xA5EF,\n\t20241 - 11904: 0xA5F0,\n\t20242 - 11904: 0xC9BB,\n\t20243 - 11904: 0xC9B8,\n\t20244 - 11904: 0xC9AF,\n\t20245 - 11904: 0xA5ED,\n\t20247 - 11904: 0x8C73,\n\t20248 - 11904: 0xC9AC,\n\t20249 - 11904: 0xA5EB,\n\t20250 - 11904: 0x894E,\n\t20253 - 11904: 0xC9B4,\n\t20258 - 11904: 0xC9B7,\n\t20264 - 11904: 0x894F,\n\t20265 - 11904: 0x9278,\n\t20268 - 11904: 0xC9AD,\n\t20269 - 11904: 0xCA66,\n\t20271 - 11904: 0xA742,\n\t20272 - 11904: 0xA6F4,\n\t20274 - 11904: 0x91B6,\n\t20275 - 11904: 0xCA67,\n\t20276 - 11904: 0xA6F1,\n\t20278 - 11904: 0xA744,\n\t20279 - 11904: 0x89D4,\n\t20280 - 11904: 0xA6F9,\n\t20281 - 11904: 0x9FD2,\n\t20282 - 11904: 0xA6F8,\n\t20283 - 11904: 0xCA5B,\n\t20284 - 11904: 0xA6FC,\n\t20285 - 11904: 0xA6F7,\n\t20286 - 11904: 0xCA60,\n\t20287 - 11904: 0xCA68,\n\t20289 - 11904: 0xCA64,\n\t20290 - 11904: 0x92A7,\n\t20291 - 11904: 0xA6FA,\n\t20293 - 11904: 0x95A2,\n\t20294 - 11904: 0xA6FD,\n\t20295 - 11904: 0xA6EE,\n\t20296 - 11904: 0xA747,\n\t20297 - 11904: 0xCA5D,\n\t20299 - 11904: 0x926E,\n\t20300 - 11904: 0xCBBD,\n\t20301 - 11904: 0xA6EC,\n\t20302 - 11904: 0xA743,\n\t20303 - 11904: 0xA6ED,\n\t20304 - 11904: 0xA6F5,\n\t20305 - 11904: 0xA6F6,\n\t20306 - 11904: 0xCA62,\n\t20307 - 11904: 0xCA5E,\n\t20308 - 11904: 0xA6FB,\n\t20309 - 11904: 0xA6F3,\n\t20310 - 11904: 0xCA5A,\n\t20311 - 11904: 0xA6EF,\n\t20312 - 11904: 0xCA65,\n\t20313 - 11904: 0xA745,\n\t20314 - 11904: 0xA748,\n\t20315 - 11904: 0xA6F2,\n\t20316 - 11904: 0xA740,\n\t20317 - 11904: 0xA746,\n\t20318 - 11904: 0xA6F0,\n\t20319 - 11904: 0xCA63,\n\t20320 - 11904: 0xA741,\n\t20321 - 11904: 0xCA69,\n\t20322 - 11904: 0xCA5C,\n\t20323 - 11904: 0xA6FE,\n\t20324 - 11904: 0xCA5F,\n\t20327 - 11904: 0xCA61,\n\t20329 - 11904: 0xA8D8,\n\t20330 - 11904: 0xCBBF,\n\t20331 - 11904: 0xCBCB,\n\t20332 - 11904: 0xA8D0,\n\t20334 - 11904: 0xCBCC,\n\t20335 - 11904: 0xA8CB,\n\t20336 - 11904: 0xA8D5,\n\t20338 - 11904: 0x96EA,\n\t20339 - 11904: 0xA8CE,\n\t20340 - 11904: 0xCBB9,\n\t20341 - 11904: 0xA8D6,\n\t20342 - 11904: 0xCBB8,\n\t20343 - 11904: 0xCBBC,\n\t20344 - 11904: 0xCBC3,\n\t20345 - 11904: 0xCBC1,\n\t20346 - 11904: 0xA8DE,\n\t20347 - 11904: 0xA8D9,\n\t20348 - 11904: 0xCBB3,\n\t20349 - 11904: 0xCBB5,\n\t20350 - 11904: 0xA8DB,\n\t20351 - 11904: 0xA8CF,\n\t20352 - 11904: 0xCBB6,\n\t20353 - 11904: 0xCBC2,\n\t20354 - 11904: 0xCBC9,\n\t20355 - 11904: 0xA8D4,\n\t20356 - 11904: 0xCBBB,\n\t20357 - 11904: 0xCBB4,\n\t20358 - 11904: 0xA8D3,\n\t20359 - 11904: 0xCBB7,\n\t20360 - 11904: 0xA8D7,\n\t20361 - 11904: 0xCBBA,\n\t20362 - 11904: 0x926F,\n\t20363 - 11904: 0xA8D2,\n\t20365 - 11904: 0xA8CD,\n\t20367 - 11904: 0xA8DC,\n\t20368 - 11904: 0xCBC4,\n\t20369 - 11904: 0xA8DD,\n\t20370 - 11904: 0xCBC8,\n\t20372 - 11904: 0xCBC6,\n\t20373 - 11904: 0xCBCA,\n\t20374 - 11904: 0xA8DA,\n\t20375 - 11904: 0xCBBE,\n\t20376 - 11904: 0xCBB2,\n\t20378 - 11904: 0xCBC0,\n\t20379 - 11904: 0xA8D1,\n\t20380 - 11904: 0xCBC5,\n\t20381 - 11904: 0xA8CC,\n\t20382 - 11904: 0xCBC7,\n\t20386 - 11904: 0x92A3,\n\t20392 - 11904: 0x8950,\n\t20395 - 11904: 0xFA57,\n\t20398 - 11904: 0xAB56,\n\t20399 - 11904: 0xAB4A,\n\t20400 - 11904: 0x9866,\n\t20402 - 11904: 0xCDE0,\n\t20403 - 11904: 0xCDE8,\n\t20404 - 11904: 0x8CF8,\n\t20405 - 11904: 0xAB49,\n\t20406 - 11904: 0xAB51,\n\t20407 - 11904: 0xAB5D,\n\t20409 - 11904: 0xCDEE,\n\t20410 - 11904: 0xCDEC,\n\t20411 - 11904: 0xCDE7,\n\t20413 - 11904: 0x89D6,\n\t20415 - 11904: 0xAB4B,\n\t20416 - 11904: 0xCDED,\n\t20417 - 11904: 0xCDE3,\n\t20418 - 11904: 0xAB59,\n\t20419 - 11904: 0xAB50,\n\t20420 - 11904: 0xAB58,\n\t20421 - 11904: 0xCDDE,\n\t20423 - 11904: 0xCDEA,\n\t20424 - 11904: 0x98B2,\n\t20425 - 11904: 0xCDE1,\n\t20426 - 11904: 0xAB54,\n\t20427 - 11904: 0xCDE2,\n\t20428 - 11904: 0x92AB,\n\t20429 - 11904: 0xCDDD,\n\t20430 - 11904: 0xAB5B,\n\t20431 - 11904: 0xAB4E,\n\t20432 - 11904: 0xAB57,\n\t20433 - 11904: 0xAB4D,\n\t20435 - 11904: 0xCDDF,\n\t20436 - 11904: 0xCDE4,\n\t20438 - 11904: 0xCDEB,\n\t20439 - 11904: 0xAB55,\n\t20440 - 11904: 0xAB52,\n\t20441 - 11904: 0xCDE6,\n\t20442 - 11904: 0xAB5A,\n\t20443 - 11904: 0xCDE9,\n\t20444 - 11904: 0xCDE5,\n\t20445 - 11904: 0xAB4F,\n\t20446 - 11904: 0xAB5C,\n\t20447 - 11904: 0xAB53,\n\t20448 - 11904: 0xAB4C,\n\t20449 - 11904: 0xAB48,\n\t20452 - 11904: 0x96DE,\n\t20453 - 11904: 0x92AC,\n\t20460 - 11904: 0xCDEF,\n\t20462 - 11904: 0xADD7,\n\t20463 - 11904: 0xADC1,\n\t20464 - 11904: 0x8C70,\n\t20465 - 11904: 0xADD1,\n\t20466 - 11904: 0x9F6E,\n\t20467 - 11904: 0xADD6,\n\t20468 - 11904: 0xD0D0,\n\t20469 - 11904: 0xD0CF,\n\t20470 - 11904: 0xD0D4,\n\t20471 - 11904: 0xD0D5,\n\t20472 - 11904: 0xADC4,\n\t20473 - 11904: 0x8EF2,\n\t20474 - 11904: 0xADCD,\n\t20477 - 11904: 0x9F6C,\n\t20478 - 11904: 0xADDA,\n\t20480 - 11904: 0xADCE,\n\t20483 - 11904: 0x89D8,\n\t20485 - 11904: 0xD0C9,\n\t20486 - 11904: 0xADC7,\n\t20487 - 11904: 0xD0CA,\n\t20488 - 11904: 0xFA59,\n\t20489 - 11904: 0xADDC,\n\t20491 - 11904: 0xADD3,\n\t20492 - 11904: 0xADBE,\n\t20493 - 11904: 0xADBF,\n\t20494 - 11904: 0xD0DD,\n\t20495 - 11904: 0xB0BF,\n\t20497 - 11904: 0xADCC,\n\t20498 - 11904: 0xADCB,\n\t20499 - 11904: 0xD0CB,\n\t20500 - 11904: 0xADCF,\n\t20501 - 11904: 0xD45B,\n\t20502 - 11904: 0xADC6,\n\t20503 - 11904: 0xD0D6,\n\t20504 - 11904: 0xADD5,\n\t20505 - 11904: 0xADD4,\n\t20506 - 11904: 0xADCA,\n\t20507 - 11904: 0xD0CE,\n\t20508 - 11904: 0xD0D7,\n\t20510 - 11904: 0xD0C8,\n\t20511 - 11904: 0xADC9,\n\t20512 - 11904: 0xD0D8,\n\t20513 - 11904: 0xADD2,\n\t20514 - 11904: 0xD0CC,\n\t20515 - 11904: 0xADC0,\n\t20517 - 11904: 0xADC3,\n\t20518 - 11904: 0xADC2,\n\t20519 - 11904: 0xD0D9,\n\t20520 - 11904: 0xADD0,\n\t20521 - 11904: 0xFA5F,\n\t20522 - 11904: 0xADD9,\n\t20523 - 11904: 0xADDB,\n\t20524 - 11904: 0xD0D3,\n\t20525 - 11904: 0xADD8,\n\t20526 - 11904: 0x92A8,\n\t20527 - 11904: 0xD0DB,\n\t20528 - 11904: 0xD0CD,\n\t20529 - 11904: 0xD0DC,\n\t20531 - 11904: 0xD0D1,\n\t20532 - 11904: 0x9163,\n\t20533 - 11904: 0xD0DA,\n\t20535 - 11904: 0xD0D2,\n\t20539 - 11904: 0x8C40,\n\t20540 - 11904: 0xADC8,\n\t20544 - 11904: 0xD463,\n\t20545 - 11904: 0xD457,\n\t20547 - 11904: 0xB0B3,\n\t20549 - 11904: 0xD45C,\n\t20550 - 11904: 0xD462,\n\t20551 - 11904: 0xB0B2,\n\t20552 - 11904: 0xD455,\n\t20553 - 11904: 0xB0B6,\n\t20554 - 11904: 0xD459,\n\t20555 - 11904: 0xD452,\n\t20556 - 11904: 0xB0B4,\n\t20557 - 11904: 0xD456,\n\t20558 - 11904: 0xB0B9,\n\t20559 - 11904: 0xB0BE,\n\t20561 - 11904: 0xD467,\n\t20563 - 11904: 0xD451,\n\t20565 - 11904: 0xB0BA,\n\t20566 - 11904: 0x9F73,\n\t20567 - 11904: 0xD466,\n\t20568 - 11904: 0x92AD,\n\t20570 - 11904: 0xB0B5,\n\t20571 - 11904: 0xD458,\n\t20572 - 11904: 0xB0B1,\n\t20573 - 11904: 0xD453,\n\t20574 - 11904: 0xD44F,\n\t20575 - 11904: 0xD45D,\n\t20576 - 11904: 0xD450,\n\t20577 - 11904: 0xD44E,\n\t20578 - 11904: 0xD45A,\n\t20579 - 11904: 0xD460,\n\t20580 - 11904: 0xD461,\n\t20581 - 11904: 0xB0B7,\n\t20582 - 11904: 0x9BE9,\n\t20584 - 11904: 0xD85B,\n\t20585 - 11904: 0xD45E,\n\t20586 - 11904: 0xD44D,\n\t20587 - 11904: 0xD45F,\n\t20588 - 11904: 0x92A9,\n\t20589 - 11904: 0xB0C1,\n\t20590 - 11904: 0xD464,\n\t20591 - 11904: 0xB0C0,\n\t20592 - 11904: 0xD44C,\n\t20594 - 11904: 0xD454,\n\t20595 - 11904: 0xD465,\n\t20596 - 11904: 0xB0BC,\n\t20597 - 11904: 0xB0BB,\n\t20598 - 11904: 0xB0B8,\n\t20599 - 11904: 0xB0BD,\n\t20602 - 11904: 0xB0AF,\n\t20605 - 11904: 0xFA66,\n\t20608 - 11904: 0xB3C8,\n\t20609 - 11904: 0x92AA,\n\t20610 - 11904: 0xD85E,\n\t20611 - 11904: 0xD857,\n\t20613 - 11904: 0xB3C5,\n\t20615 - 11904: 0xD85F,\n\t20616 - 11904: 0x89D9,\n\t20619 - 11904: 0xD855,\n\t20620 - 11904: 0xD858,\n\t20621 - 11904: 0xB3C4,\n\t20622 - 11904: 0xD859,\n\t20624 - 11904: 0xFD56,\n\t20625 - 11904: 0xB3C7,\n\t20626 - 11904: 0xD85D,\n\t20628 - 11904: 0xD853,\n\t20629 - 11904: 0xD852,\n\t20630 - 11904: 0xB3C9,\n\t20632 - 11904: 0xB3CA,\n\t20633 - 11904: 0xB3C6,\n\t20634 - 11904: 0xB3CB,\n\t20635 - 11904: 0xD851,\n\t20636 - 11904: 0xD85C,\n\t20637 - 11904: 0xD85A,\n\t20638 - 11904: 0xD854,\n\t20642 - 11904: 0xB3C3,\n\t20643 - 11904: 0xD856,\n\t20646 - 11904: 0x9FA8,\n\t20652 - 11904: 0xB6CA,\n\t20653 - 11904: 0xB6C4,\n\t20654 - 11904: 0xDCB7,\n\t20655 - 11904: 0xB6CD,\n\t20656 - 11904: 0xDCBD,\n\t20657 - 11904: 0xDCC0,\n\t20658 - 11904: 0xB6C6,\n\t20659 - 11904: 0xB6C7,\n\t20660 - 11904: 0xDCBA,\n\t20661 - 11904: 0xB6C5,\n\t20662 - 11904: 0xDCC3,\n\t20663 - 11904: 0xB6CB,\n\t20664 - 11904: 0xDCC4,\n\t20666 - 11904: 0xDCBF,\n\t20667 - 11904: 0xB6CC,\n\t20668 - 11904: 0x8C71,\n\t20669 - 11904: 0xDCB4,\n\t20670 - 11904: 0xB6C9,\n\t20671 - 11904: 0xDCB5,\n\t20673 - 11904: 0xDCBE,\n\t20674 - 11904: 0xDCBC,\n\t20676 - 11904: 0xDCB8,\n\t20677 - 11904: 0xB6C8,\n\t20678 - 11904: 0xDCB6,\n\t20679 - 11904: 0xB6CE,\n\t20680 - 11904: 0xDCBB,\n\t20681 - 11904: 0xDCC2,\n\t20682 - 11904: 0xDCB9,\n\t20683 - 11904: 0xDCC1,\n\t20685 - 11904: 0x92A1,\n\t20686 - 11904: 0xB9B6,\n\t20687 - 11904: 0xB9B3,\n\t20688 - 11904: 0x90E3,\n\t20689 - 11904: 0xB9B4,\n\t20691 - 11904: 0xE0F9,\n\t20692 - 11904: 0xE0F1,\n\t20693 - 11904: 0xB9B2,\n\t20694 - 11904: 0xB9AF,\n\t20695 - 11904: 0xE0F2,\n\t20697 - 11904: 0xA0A6,\n\t20698 - 11904: 0xB9B1,\n\t20699 - 11904: 0xE0F5,\n\t20701 - 11904: 0xE0F7,\n\t20703 - 11904: 0x94AB,\n\t20704 - 11904: 0xE0FE,\n\t20705 - 11904: 0xFC72,\n\t20707 - 11904: 0xE0FD,\n\t20708 - 11904: 0xE0F8,\n\t20709 - 11904: 0xB9AE,\n\t20710 - 11904: 0xE0F0,\n\t20711 - 11904: 0xB9AC,\n\t20712 - 11904: 0xE0F3,\n\t20713 - 11904: 0xB9B7,\n\t20714 - 11904: 0xE0F6,\n\t20716 - 11904: 0xE0FA,\n\t20717 - 11904: 0xB9B0,\n\t20718 - 11904: 0xB9AD,\n\t20719 - 11904: 0xE0FC,\n\t20720 - 11904: 0xE0FB,\n\t20721 - 11904: 0xB9B5,\n\t20723 - 11904: 0xE0F4,\n\t20724 - 11904: 0x97C4,\n\t20725 - 11904: 0xBBF8,\n\t20726 - 11904: 0xE4EC,\n\t20728 - 11904: 0xE4E9,\n\t20729 - 11904: 0xBBF9,\n\t20731 - 11904: 0xBBF7,\n\t20732 - 11904: 0x92AE,\n\t20733 - 11904: 0xE4F0,\n\t20734 - 11904: 0xE4ED,\n\t20735 - 11904: 0xE4E6,\n\t20736 - 11904: 0xBBF6,\n\t20737 - 11904: 0xFA67,\n\t20738 - 11904: 0xBBFA,\n\t20739 - 11904: 0xE4E7,\n\t20740 - 11904: 0xBBF5,\n\t20741 - 11904: 0xBBFD,\n\t20742 - 11904: 0xE4EA,\n\t20743 - 11904: 0xE4EB,\n\t20744 - 11904: 0xBBFB,\n\t20745 - 11904: 0xBBFC,\n\t20746 - 11904: 0xE4F1,\n\t20747 - 11904: 0xE4EE,\n\t20748 - 11904: 0xE4EF,\n\t20749 - 11904: 0x92A2,\n\t20750 - 11904: 0xFA69,\n\t20752 - 11904: 0xBEAA,\n\t20753 - 11904: 0xE8F8,\n\t20754 - 11904: 0xBEA7,\n\t20755 - 11904: 0xE8F5,\n\t20756 - 11904: 0xBEA9,\n\t20757 - 11904: 0xBEAB,\n\t20759 - 11904: 0xE8F6,\n\t20760 - 11904: 0xBEA8,\n\t20762 - 11904: 0xE8F7,\n\t20764 - 11904: 0xE8F4,\n\t20767 - 11904: 0xC076,\n\t20768 - 11904: 0xECBD,\n\t20769 - 11904: 0xC077,\n\t20770 - 11904: 0xECBB,\n\t20772 - 11904: 0xECBC,\n\t20773 - 11904: 0xECBA,\n\t20774 - 11904: 0xECB9,\n\t20777 - 11904: 0xECBE,\n\t20778 - 11904: 0xC075,\n\t20779 - 11904: 0x9268,\n\t20781 - 11904: 0xEFB8,\n\t20782 - 11904: 0xEFB9,\n\t20784 - 11904: 0xE4E8,\n\t20785 - 11904: 0xEFB7,\n\t20786 - 11904: 0xC078,\n\t20787 - 11904: 0xC35F,\n\t20788 - 11904: 0xF1EB,\n\t20789 - 11904: 0xF1EC,\n\t20791 - 11904: 0xC4D7,\n\t20792 - 11904: 0xC4D8,\n\t20793 - 11904: 0xF5C1,\n\t20794 - 11904: 0xF5C0,\n\t20795 - 11904: 0xC56C,\n\t20796 - 11904: 0xC56B,\n\t20797 - 11904: 0xF7D0,\n\t20799 - 11904: 0xA449,\n\t20800 - 11904: 0xA461,\n\t20801 - 11904: 0xA4B9,\n\t20803 - 11904: 0xA4B8,\n\t20804 - 11904: 0xA553,\n\t20805 - 11904: 0xA552,\n\t20806 - 11904: 0xA5FC,\n\t20807 - 11904: 0xA5FB,\n\t20808 - 11904: 0xA5FD,\n\t20809 - 11904: 0xA5FA,\n\t20811 - 11904: 0xA74A,\n\t20812 - 11904: 0xA749,\n\t20813 - 11904: 0xA74B,\n\t20818 - 11904: 0xA8E0,\n\t20820 - 11904: 0xA8DF,\n\t20821 - 11904: 0xA8E1,\n\t20822 - 11904: 0x8951,\n\t20823 - 11904: 0xAB5E,\n\t20825 - 11904: 0xA259,\n\t20826 - 11904: 0xD0DE,\n\t20827 - 11904: 0xA25A,\n\t20828 - 11904: 0xB0C2,\n\t20829 - 11904: 0xA25C,\n\t20830 - 11904: 0xA25B,\n\t20831 - 11904: 0xD860,\n\t20832 - 11904: 0xFA6F,\n\t20833 - 11904: 0xA25D,\n\t20834 - 11904: 0xB9B8,\n\t20835 - 11904: 0xA25E,\n\t20837 - 11904: 0xA44A,\n\t20839 - 11904: 0xA4BA,\n\t20840 - 11904: 0xA5FE,\n\t20841 - 11904: 0xA8E2,\n\t20842 - 11904: 0xFA71,\n\t20843 - 11904: 0xA44B,\n\t20844 - 11904: 0xA4BD,\n\t20845 - 11904: 0xA4BB,\n\t20846 - 11904: 0xA4BC,\n\t20849 - 11904: 0xA640,\n\t20852 - 11904: 0x8952,\n\t20853 - 11904: 0xA74C,\n\t20854 - 11904: 0xA8E4,\n\t20855 - 11904: 0xA8E3,\n\t20856 - 11904: 0xA8E5,\n\t20857 - 11904: 0x945A,\n\t20860 - 11904: 0xADDD,\n\t20864 - 11904: 0xBEAC,\n\t20866 - 11904: 0xC6C3,\n\t20870 - 11904: 0x89DD,\n\t20871 - 11904: 0xC94E,\n\t20872 - 11904: 0xC8A2,\n\t20873 - 11904: 0xA554,\n\t20874 - 11904: 0xA555,\n\t20877 - 11904: 0xA641,\n\t20879 - 11904: 0xCA6A,\n\t20881 - 11904: 0xAB60,\n\t20882 - 11904: 0xAB5F,\n\t20883 - 11904: 0xD0E0,\n\t20884 - 11904: 0xD0DF,\n\t20885 - 11904: 0xB0C3,\n\t20886 - 11904: 0xC6C4,\n\t20887 - 11904: 0xA4BE,\n\t20888 - 11904: 0xC955,\n\t20890 - 11904: 0x9E52,\n\t20892 - 11904: 0x8953,\n\t20894 - 11904: 0xCBCD,\n\t20896 - 11904: 0xAB61,\n\t20898 - 11904: 0xADE0,\n\t20900 - 11904: 0xADDE,\n\t20901 - 11904: 0xADDF,\n\t20903 - 11904: 0x9E55,\n\t20904 - 11904: 0x92BA,\n\t20906 - 11904: 0xBEAD,\n\t20907 - 11904: 0xC6C5,\n\t20908 - 11904: 0xA556,\n\t20910 - 11904: 0x8C5B,\n\t20912 - 11904: 0xA642,\n\t20913 - 11904: 0xC9BC,\n\t20914 - 11904: 0xFA7D,\n\t20915 - 11904: 0xFAA8,\n\t20916 - 11904: 0x9A68,\n\t20917 - 11904: 0xFA47,\n\t20918 - 11904: 0xA74D,\n\t20919 - 11904: 0xA74E,\n\t20920 - 11904: 0xFA7E,\n\t20921 - 11904: 0xCA6B,\n\t20924 - 11904: 0xCBCE,\n\t20925 - 11904: 0xA8E6,\n\t20926 - 11904: 0xCBCF,\n\t20931 - 11904: 0x92BB,\n\t20932 - 11904: 0xD0E2,\n\t20933 - 11904: 0xD0E3,\n\t20934 - 11904: 0xADE3,\n\t20935 - 11904: 0xFDB6,\n\t20936 - 11904: 0xD0E4,\n\t20937 - 11904: 0xFAA2,\n\t20938 - 11904: 0xD0E1,\n\t20939 - 11904: 0xADE4,\n\t20940 - 11904: 0xADE2,\n\t20941 - 11904: 0xADE1,\n\t20942 - 11904: 0xD0E5,\n\t20943 - 11904: 0xFAA3,\n\t20944 - 11904: 0xD468,\n\t20945 - 11904: 0xFAA4,\n\t20946 - 11904: 0x9BB4,\n\t20947 - 11904: 0xFAA6,\n\t20948 - 11904: 0xD861,\n\t20951 - 11904: 0xDCC5,\n\t20952 - 11904: 0xE140,\n\t20955 - 11904: 0x89DF,\n\t20956 - 11904: 0xBBFE,\n\t20957 - 11904: 0xBEAE,\n\t20958 - 11904: 0xE8F9,\n\t20959 - 11904: 0xFDDB,\n\t20960 - 11904: 0xA44C,\n\t20961 - 11904: 0xA45A,\n\t20962 - 11904: 0xFAA9,\n\t20964 - 11904: 0x8954,\n\t20973 - 11904: 0xFAAB,\n\t20976 - 11904: 0xB0C4,\n\t20977 - 11904: 0xB3CD,\n\t20979 - 11904: 0xB9B9,\n\t20980 - 11904: 0xFC7A,\n\t20981 - 11904: 0xC942,\n\t20982 - 11904: 0xA4BF,\n\t20984 - 11904: 0xA559,\n\t20985 - 11904: 0xA557,\n\t20986 - 11904: 0xA558,\n\t20988 - 11904: 0x89E0,\n\t20989 - 11904: 0xA8E7,\n\t20990 - 11904: 0x9F4F,\n\t20992 - 11904: 0xA44D,\n\t20993 - 11904: 0xA44E,\n\t20994 - 11904: 0xC87D,\n\t20995 - 11904: 0xA462,\n\t20997 - 11904: 0x89E1,\n\t20998 - 11904: 0xA4C0,\n\t20999 - 11904: 0xA4C1,\n\t21000 - 11904: 0xA4C2,\n\t21001 - 11904: 0xC9BE,\n\t21002 - 11904: 0xA55A,\n\t21003 - 11904: 0xFAB0,\n\t21004 - 11904: 0xC96B,\n\t21006 - 11904: 0xA646,\n\t21008 - 11904: 0xC9BF,\n\t21009 - 11904: 0xA644,\n\t21010 - 11904: 0xA645,\n\t21011 - 11904: 0xC9BD,\n\t21014 - 11904: 0xA647,\n\t21015 - 11904: 0xA643,\n\t21020 - 11904: 0xCA6C,\n\t21021 - 11904: 0xAAEC,\n\t21022 - 11904: 0xCA6D,\n\t21023 - 11904: 0x9FCD,\n\t21024 - 11904: 0xA0E7,\n\t21025 - 11904: 0xCA6E,\n\t21028 - 11904: 0xA750,\n\t21029 - 11904: 0xA74F,\n\t21030 - 11904: 0xFAB1,\n\t21031 - 11904: 0x89A6,\n\t21032 - 11904: 0xA753,\n\t21033 - 11904: 0xA751,\n\t21034 - 11904: 0xA752,\n\t21038 - 11904: 0xA8ED,\n\t21040 - 11904: 0xA8EC,\n\t21041 - 11904: 0xCBD4,\n\t21042 - 11904: 0xCBD1,\n\t21043 - 11904: 0xCBD2,\n\t21044 - 11904: 0x9EFA,\n\t21045 - 11904: 0xCBD0,\n\t21046 - 11904: 0xA8EE,\n\t21047 - 11904: 0xA8EA,\n\t21048 - 11904: 0xA8E9,\n\t21050 - 11904: 0xA8EB,\n\t21051 - 11904: 0xA8E8,\n\t21052 - 11904: 0xFAB2,\n\t21057 - 11904: 0xA8EF,\n\t21059 - 11904: 0xAB63,\n\t21060 - 11904: 0xCDF0,\n\t21062 - 11904: 0xCBD3,\n\t21063 - 11904: 0xAB68,\n\t21065 - 11904: 0xCDF1,\n\t21066 - 11904: 0xAB64,\n\t21067 - 11904: 0xAB67,\n\t21068 - 11904: 0xAB66,\n\t21069 - 11904: 0xAB65,\n\t21070 - 11904: 0xAB62,\n\t21071 - 11904: 0x87BC,\n\t21074 - 11904: 0xD0E8,\n\t21076 - 11904: 0xADE7,\n\t21077 - 11904: 0xD0EB,\n\t21078 - 11904: 0xADE5,\n\t21079 - 11904: 0xFAB4,\n\t21081 - 11904: 0x92C4,\n\t21082 - 11904: 0xD0E7,\n\t21083 - 11904: 0xADE8,\n\t21084 - 11904: 0xADE6,\n\t21085 - 11904: 0xADE9,\n\t21086 - 11904: 0xD0E9,\n\t21087 - 11904: 0xD0EA,\n\t21088 - 11904: 0x9F6F,\n\t21089 - 11904: 0xD0E6,\n\t21090 - 11904: 0xD0EC,\n\t21096 - 11904: 0x8BB0,\n\t21097 - 11904: 0xB3D1,\n\t21098 - 11904: 0xB0C5,\n\t21099 - 11904: 0xD469,\n\t21100 - 11904: 0xD46B,\n\t21101 - 11904: 0xD46A,\n\t21102 - 11904: 0xD46C,\n\t21103 - 11904: 0xB0C6,\n\t21106 - 11904: 0xB3CE,\n\t21107 - 11904: 0x9FAC,\n\t21108 - 11904: 0xB3CF,\n\t21109 - 11904: 0xB3D0,\n\t21111 - 11904: 0xB6D0,\n\t21112 - 11904: 0xDCC7,\n\t21113 - 11904: 0x89E3,\n\t21114 - 11904: 0xDCC6,\n\t21115 - 11904: 0xDCC8,\n\t21116 - 11904: 0xDCC9,\n\t21117 - 11904: 0xB6D1,\n\t21119 - 11904: 0xB6CF,\n\t21120 - 11904: 0xE141,\n\t21121 - 11904: 0xE142,\n\t21122 - 11904: 0xB9BB,\n\t21123 - 11904: 0xB9BA,\n\t21124 - 11904: 0xE35A,\n\t21127 - 11904: 0xBC40,\n\t21128 - 11904: 0xBC41,\n\t21129 - 11904: 0xBC42,\n\t21130 - 11904: 0xBC44,\n\t21131 - 11904: 0xE4F2,\n\t21132 - 11904: 0xE4F3,\n\t21133 - 11904: 0xBC43,\n\t21135 - 11904: 0x9BD3,\n\t21136 - 11904: 0x89E4,\n\t21137 - 11904: 0xBEAF,\n\t21139 - 11904: 0xBEB0,\n\t21140 - 11904: 0xFAB5,\n\t21142 - 11904: 0xF1ED,\n\t21143 - 11904: 0xF5C3,\n\t21144 - 11904: 0xF5C2,\n\t21145 - 11904: 0xF7D1,\n\t21146 - 11904: 0x9FD5,\n\t21147 - 11904: 0xA44F,\n\t21151 - 11904: 0xA55C,\n\t21152 - 11904: 0xA55B,\n\t21153 - 11904: 0x8955,\n\t21155 - 11904: 0xA648,\n\t21156 - 11904: 0x92C5,\n\t21158 - 11904: 0xC9C0,\n\t21160 - 11904: 0x8956,\n\t21161 - 11904: 0xA755,\n\t21162 - 11904: 0xA756,\n\t21163 - 11904: 0xA754,\n\t21164 - 11904: 0xA757,\n\t21165 - 11904: 0xCA6F,\n\t21166 - 11904: 0xCA70,\n\t21173 - 11904: 0xFAB3,\n\t21177 - 11904: 0xFAB6,\n\t21179 - 11904: 0xA8F1,\n\t21180 - 11904: 0xCBD5,\n\t21182 - 11904: 0xA8F0,\n\t21184 - 11904: 0xCDF2,\n\t21185 - 11904: 0xAB6C,\n\t21186 - 11904: 0xCDF3,\n\t21187 - 11904: 0xAB6B,\n\t21189 - 11904: 0xFAB7,\n\t21191 - 11904: 0xAB69,\n\t21193 - 11904: 0xAB6A,\n\t21196 - 11904: 0x9EDC,\n\t21197 - 11904: 0xD0ED,\n\t21200 - 11904: 0xFBC4,\n\t21201 - 11904: 0x9F71,\n\t21202 - 11904: 0xB0C7,\n\t21203 - 11904: 0xD46E,\n\t21205 - 11904: 0xB0CA,\n\t21206 - 11904: 0xD46D,\n\t21207 - 11904: 0xB1E5,\n\t21208 - 11904: 0xB0C9,\n\t21209 - 11904: 0xB0C8,\n\t21211 - 11904: 0xB3D4,\n\t21213 - 11904: 0xB3D3,\n\t21214 - 11904: 0xB3D2,\n\t21215 - 11904: 0xB6D2,\n\t21216 - 11904: 0xFABA,\n\t21217 - 11904: 0x92C7,\n\t21218 - 11904: 0xB6D5,\n\t21219 - 11904: 0xB6D6,\n\t21220 - 11904: 0xB6D4,\n\t21222 - 11904: 0xB6D3,\n\t21225 - 11904: 0xE143,\n\t21227 - 11904: 0xE144,\n\t21231 - 11904: 0xE4F5,\n\t21232 - 11904: 0xBC45,\n\t21233 - 11904: 0xE4F4,\n\t21235 - 11904: 0xBEB1,\n\t21236 - 11904: 0xECBF,\n\t21237 - 11904: 0xC079,\n\t21239 - 11904: 0xF1EE,\n\t21240 - 11904: 0xC455,\n\t21241 - 11904: 0xC6C6,\n\t21242 - 11904: 0xA463,\n\t21243 - 11904: 0xA4C3,\n\t21244 - 11904: 0xC956,\n\t21246 - 11904: 0xA4C4,\n\t21247 - 11904: 0xA4C5,\n\t21249 - 11904: 0x9A4C,\n\t21253 - 11904: 0xFABD,\n\t21254 - 11904: 0xA55E,\n\t21256 - 11904: 0xA649,\n\t21257 - 11904: 0xCA71,\n\t21258 - 11904: 0xCBD6,\n\t21259 - 11904: 0xCBD7,\n\t21261 - 11904: 0xAB6D,\n\t21262 - 11904: 0xD0EE,\n\t21263 - 11904: 0xB0CC,\n\t21264 - 11904: 0xB0CB,\n\t21265 - 11904: 0xD863,\n\t21266 - 11904: 0xD862,\n\t21269 - 11904: 0xA450,\n\t21270 - 11904: 0xA4C6,\n\t21271 - 11904: 0xA55F,\n\t21273 - 11904: 0xB0CD,\n\t21274 - 11904: 0xC943,\n\t21276 - 11904: 0xC96C,\n\t21277 - 11904: 0xA560,\n\t21279 - 11904: 0xC9C2,\n\t21280 - 11904: 0xA64B,\n\t21281 - 11904: 0xA64A,\n\t21282 - 11904: 0xC9C1,\n\t21283 - 11904: 0xA758,\n\t21284 - 11904: 0x8C68,\n\t21287 - 11904: 0x89E5,\n\t21290 - 11904: 0xADEA,\n\t21292 - 11904: 0x9F7D,\n\t21293 - 11904: 0xD46F,\n\t21295 - 11904: 0xB6D7,\n\t21296 - 11904: 0xE145,\n\t21297 - 11904: 0xB9BC,\n\t21298 - 11904: 0xA0A9,\n\t21299 - 11904: 0xFAC4,\n\t21300 - 11904: 0xE8FA,\n\t21303 - 11904: 0xF3FD,\n\t21304 - 11904: 0xC6C7,\n\t21305 - 11904: 0xA4C7,\n\t21307 - 11904: 0x8957,\n\t21308 - 11904: 0xCBD8,\n\t21309 - 11904: 0xCDF4,\n\t21310 - 11904: 0xB0D0,\n\t21311 - 11904: 0xB0CE,\n\t21312 - 11904: 0xB0CF,\n\t21313 - 11904: 0xA451,\n\t21314 - 11904: 0xFAAA,\n\t21315 - 11904: 0xA464,\n\t21316 - 11904: 0xFAC5,\n\t21317 - 11904: 0xA4CA,\n\t21319 - 11904: 0xA4C9,\n\t21320 - 11904: 0xA4C8,\n\t21321 - 11904: 0xA563,\n\t21322 - 11904: 0xA562,\n\t21324 - 11904: 0xC96D,\n\t21325 - 11904: 0xC9C3,\n\t21326 - 11904: 0x8958,\n\t21329 - 11904: 0xA8F5,\n\t21330 - 11904: 0xA8F2,\n\t21331 - 11904: 0xA8F4,\n\t21332 - 11904: 0xA8F3,\n\t21335 - 11904: 0xAB6E,\n\t21338 - 11904: 0xB3D5,\n\t21340 - 11904: 0xA452,\n\t21341 - 11904: 0x8BE3,\n\t21342 - 11904: 0xA4CB,\n\t21343 - 11904: 0x8B61,\n\t21344 - 11904: 0xA565,\n\t21345 - 11904: 0xA564,\n\t21347 - 11904: 0xCA72,\n\t21348 - 11904: 0x9AF1,\n\t21350 - 11904: 0xA8F6,\n\t21351 - 11904: 0x9EB7,\n\t21353 - 11904: 0xC6C8,\n\t21356 - 11904: 0xC957,\n\t21357 - 11904: 0xFAD1,\n\t21358 - 11904: 0xA567,\n\t21359 - 11904: 0xA566,\n\t21360 - 11904: 0xA64C,\n\t21361 - 11904: 0xA64D,\n\t21362 - 11904: 0xCA73,\n\t21363 - 11904: 0xA759,\n\t21364 - 11904: 0xFAD2,\n\t21365 - 11904: 0xA75A,\n\t21367 - 11904: 0xA8F7,\n\t21368 - 11904: 0xA8F8,\n\t21369 - 11904: 0xA8F9,\n\t21371 - 11904: 0xAB6F,\n\t21372 - 11904: 0xCDF5,\n\t21373 - 11904: 0x9EBA,\n\t21374 - 11904: 0xFAD4,\n\t21375 - 11904: 0xFAD5,\n\t21378 - 11904: 0xC944,\n\t21380 - 11904: 0xA4CC,\n\t21386 - 11904: 0xC9C4,\n\t21390 - 11904: 0xCA74,\n\t21391 - 11904: 0xCA75,\n\t21394 - 11904: 0xCBD9,\n\t21395 - 11904: 0xFAD9,\n\t21396 - 11904: 0xCBDA,\n\t21398 - 11904: 0xCDF7,\n\t21399 - 11904: 0xCDF6,\n\t21400 - 11904: 0xCDF9,\n\t21401 - 11904: 0xCDF8,\n\t21402 - 11904: 0xAB70,\n\t21404 - 11904: 0xD470,\n\t21405 - 11904: 0xADED,\n\t21406 - 11904: 0xD0EF,\n\t21407 - 11904: 0xADEC,\n\t21408 - 11904: 0xFADB,\n\t21410 - 11904: 0x9CE0,\n\t21412 - 11904: 0xD864,\n\t21413 - 11904: 0xB3D6,\n\t21414 - 11904: 0xFBF7,\n\t21415 - 11904: 0xD865,\n\t21416 - 11904: 0xFBFA,\n\t21417 - 11904: 0x89E7,\n\t21418 - 11904: 0xA07A,\n\t21419 - 11904: 0xFADC,\n\t21420 - 11904: 0xE146,\n\t21421 - 11904: 0xB9BD,\n\t21422 - 11904: 0xFADD,\n\t21424 - 11904: 0x89E9,\n\t21426 - 11904: 0xBC46,\n\t21428 - 11904: 0xF1EF,\n\t21430 - 11904: 0xC6C9,\n\t21433 - 11904: 0xC958,\n\t21435 - 11904: 0xA568,\n\t21441 - 11904: 0xFAE2,\n\t21442 - 11904: 0x89EB,\n\t21443 - 11904: 0xB0D1,\n\t21445 - 11904: 0xFAE3,\n\t21448 - 11904: 0xA453,\n\t21449 - 11904: 0xA465,\n\t21450 - 11904: 0xA4CE,\n\t21451 - 11904: 0xA4CD,\n\t21452 - 11904: 0x90C8,\n\t21453 - 11904: 0xA4CF,\n\t21456 - 11904: 0x92DA,\n\t21457 - 11904: 0x8959,\n\t21458 - 11904: 0x9CF5,\n\t21460 - 11904: 0xA8FB,\n\t21462 - 11904: 0xA8FA,\n\t21463 - 11904: 0xA8FC,\n\t21464 - 11904: 0x895A,\n\t21465 - 11904: 0xFAE7,\n\t21466 - 11904: 0x9FA2,\n\t21467 - 11904: 0xAB71,\n\t21471 - 11904: 0xADEE,\n\t21472 - 11904: 0xFAEA,\n\t21473 - 11904: 0xE8FB,\n\t21474 - 11904: 0xC24F,\n\t21475 - 11904: 0xA466,\n\t21476 - 11904: 0xA56A,\n\t21477 - 11904: 0xA579,\n\t21478 - 11904: 0xA574,\n\t21480 - 11904: 0xA56F,\n\t21481 - 11904: 0xA56E,\n\t21482 - 11904: 0xA575,\n\t21483 - 11904: 0xA573,\n\t21484 - 11904: 0xA56C,\n\t21485 - 11904: 0xA57A,\n\t21486 - 11904: 0xA56D,\n\t21487 - 11904: 0xA569,\n\t21488 - 11904: 0xA578,\n\t21489 - 11904: 0xA577,\n\t21490 - 11904: 0xA576,\n\t21491 - 11904: 0xA56B,\n\t21493 - 11904: 0xA572,\n\t21494 - 11904: 0xFAED,\n\t21495 - 11904: 0x8FAD,\n\t21496 - 11904: 0xA571,\n\t21499 - 11904: 0xA57B,\n\t21500 - 11904: 0xA570,\n\t21502 - 11904: 0xFB59,\n\t21505 - 11904: 0xA653,\n\t21507 - 11904: 0xA659,\n\t21508 - 11904: 0xA655,\n\t21510 - 11904: 0xA65B,\n\t21511 - 11904: 0xC9C5,\n\t21512 - 11904: 0xA658,\n\t21513 - 11904: 0xA64E,\n\t21514 - 11904: 0xA651,\n\t21515 - 11904: 0xA654,\n\t21516 - 11904: 0xA650,\n\t21517 - 11904: 0xA657,\n\t21518 - 11904: 0xA65A,\n\t21519 - 11904: 0xA64F,\n\t21520 - 11904: 0xA652,\n\t21521 - 11904: 0xA656,\n\t21522 - 11904: 0xA65C,\n\t21523 - 11904: 0xFAEF,\n\t21524 - 11904: 0x96EF,\n\t21526 - 11904: 0x9DEC,\n\t21528 - 11904: 0xCA7E,\n\t21529 - 11904: 0xCA7B,\n\t21530 - 11904: 0x9DCA,\n\t21531 - 11904: 0xA767,\n\t21532 - 11904: 0xCA7C,\n\t21533 - 11904: 0xA75B,\n\t21534 - 11904: 0xA75D,\n\t21535 - 11904: 0xA775,\n\t21536 - 11904: 0xA770,\n\t21537 - 11904: 0xFD6D,\n\t21539 - 11904: 0x89EC,\n\t21540 - 11904: 0xCAA5,\n\t21541 - 11904: 0xCA7D,\n\t21542 - 11904: 0xA75F,\n\t21543 - 11904: 0xA761,\n\t21544 - 11904: 0xCAA4,\n\t21545 - 11904: 0xA768,\n\t21546 - 11904: 0xCA78,\n\t21547 - 11904: 0xA774,\n\t21548 - 11904: 0xA776,\n\t21549 - 11904: 0xA75C,\n\t21550 - 11904: 0xA76D,\n\t21551 - 11904: 0xFB44,\n\t21552 - 11904: 0xCA76,\n\t21553 - 11904: 0xA773,\n\t21554 - 11904: 0x9DE2,\n\t21555 - 11904: 0xA764,\n\t21556 - 11904: 0x8C75,\n\t21557 - 11904: 0xA76E,\n\t21558 - 11904: 0xA76F,\n\t21559 - 11904: 0xCA77,\n\t21560 - 11904: 0xA76C,\n\t21561 - 11904: 0xA76A,\n\t21563 - 11904: 0xA76B,\n\t21564 - 11904: 0xA771,\n\t21565 - 11904: 0xCAA1,\n\t21566 - 11904: 0xA75E,\n\t21568 - 11904: 0xA772,\n\t21569 - 11904: 0xCAA3,\n\t21570 - 11904: 0xA766,\n\t21571 - 11904: 0xA763,\n\t21573 - 11904: 0xCA7A,\n\t21574 - 11904: 0xA762,\n\t21575 - 11904: 0xCAA6,\n\t21576 - 11904: 0xA765,\n\t21578 - 11904: 0xA769,\n\t21579 - 11904: 0x9EC0,\n\t21580 - 11904: 0x87C5,\n\t21581 - 11904: 0x9E56,\n\t21582 - 11904: 0xA760,\n\t21583 - 11904: 0xCAA2,\n\t21588 - 11904: 0xCA79,\n\t21600 - 11904: 0xCBEB,\n\t21601 - 11904: 0xCBEA,\n\t21602 - 11904: 0xA94F,\n\t21603 - 11904: 0xCBED,\n\t21604 - 11904: 0xCBEF,\n\t21605 - 11904: 0xCBE4,\n\t21606 - 11904: 0xCBE7,\n\t21607 - 11904: 0xCBEE,\n\t21608 - 11904: 0xA950,\n\t21609 - 11904: 0x9F79,\n\t21610 - 11904: 0x9AC7,\n\t21611 - 11904: 0xCBE1,\n\t21612 - 11904: 0xCBE5,\n\t21613 - 11904: 0xFAF4,\n\t21615 - 11904: 0xCBE9,\n\t21616 - 11904: 0xCE49,\n\t21617 - 11904: 0xA94B,\n\t21618 - 11904: 0xCE4D,\n\t21619 - 11904: 0xA8FD,\n\t21620 - 11904: 0xCBE6,\n\t21621 - 11904: 0xA8FE,\n\t21622 - 11904: 0xA94C,\n\t21623 - 11904: 0xA945,\n\t21624 - 11904: 0xA941,\n\t21626 - 11904: 0xCBE2,\n\t21627 - 11904: 0xA944,\n\t21628 - 11904: 0xA949,\n\t21629 - 11904: 0xA952,\n\t21630 - 11904: 0xCBE3,\n\t21631 - 11904: 0xCBDC,\n\t21632 - 11904: 0xA943,\n\t21633 - 11904: 0xCBDD,\n\t21634 - 11904: 0xCBDF,\n\t21636 - 11904: 0xA946,\n\t21637 - 11904: 0x98A1,\n\t21638 - 11904: 0xA948,\n\t21639 - 11904: 0xCBDB,\n\t21640 - 11904: 0xCBE0,\n\t21643 - 11904: 0xA951,\n\t21644 - 11904: 0xA94D,\n\t21645 - 11904: 0xCBE8,\n\t21646 - 11904: 0xA953,\n\t21647 - 11904: 0xFAF8,\n\t21648 - 11904: 0xA94A,\n\t21649 - 11904: 0xCBDE,\n\t21650 - 11904: 0xA947,\n\t21651 - 11904: 0x89F0,\n\t21652 - 11904: 0x9E47,\n\t21653 - 11904: 0xA942,\n\t21654 - 11904: 0xA940,\n\t21655 - 11904: 0x9DF7,\n\t21656 - 11904: 0xCBEC,\n\t21658 - 11904: 0xA94E,\n\t21660 - 11904: 0x9FD3,\n\t21662 - 11904: 0x9ACA,\n\t21664 - 11904: 0xCE48,\n\t21665 - 11904: 0xCDFB,\n\t21666 - 11904: 0xCE4B,\n\t21667 - 11904: 0x89F1,\n\t21668 - 11904: 0xFAF9,\n\t21669 - 11904: 0xCDFD,\n\t21670 - 11904: 0xAB78,\n\t21671 - 11904: 0xABA8,\n\t21672 - 11904: 0xAB74,\n\t21673 - 11904: 0xABA7,\n\t21674 - 11904: 0xAB7D,\n\t21675 - 11904: 0xABA4,\n\t21676 - 11904: 0xAB72,\n\t21677 - 11904: 0xCDFC,\n\t21678 - 11904: 0xCE43,\n\t21679 - 11904: 0xABA3,\n\t21680 - 11904: 0xCE4F,\n\t21681 - 11904: 0xABA5,\n\t21682 - 11904: 0x8E5A,\n\t21683 - 11904: 0xAB79,\n\t21684 - 11904: 0x89F2,\n\t21686 - 11904: 0xCE45,\n\t21687 - 11904: 0xCE42,\n\t21688 - 11904: 0xAB77,\n\t21689 - 11904: 0x89F3,\n\t21690 - 11904: 0xCDFA,\n\t21691 - 11904: 0xABA6,\n\t21692 - 11904: 0xCE4A,\n\t21693 - 11904: 0xAB7C,\n\t21694 - 11904: 0xCE4C,\n\t21695 - 11904: 0xABA9,\n\t21696 - 11904: 0xAB73,\n\t21697 - 11904: 0xAB7E,\n\t21698 - 11904: 0xAB7B,\n\t21699 - 11904: 0xCE40,\n\t21700 - 11904: 0xABA1,\n\t21701 - 11904: 0xCE46,\n\t21702 - 11904: 0xCE47,\n\t21703 - 11904: 0xAB7A,\n\t21704 - 11904: 0xABA2,\n\t21705 - 11904: 0xAB76,\n\t21707 - 11904: 0x925D,\n\t21708 - 11904: 0x8B51,\n\t21709 - 11904: 0x92E0,\n\t21710 - 11904: 0xAB75,\n\t21711 - 11904: 0xCDFE,\n\t21712 - 11904: 0x89F4,\n\t21718 - 11904: 0xCE44,\n\t21722 - 11904: 0x9FD4,\n\t21726 - 11904: 0xCE4E,\n\t21728 - 11904: 0xD144,\n\t21729 - 11904: 0xADFB,\n\t21730 - 11904: 0xD0F1,\n\t21731 - 11904: 0x8A79,\n\t21732 - 11904: 0xD0F6,\n\t21733 - 11904: 0xADF4,\n\t21734 - 11904: 0xAE40,\n\t21735 - 11904: 0xD0F4,\n\t21736 - 11904: 0xADEF,\n\t21737 - 11904: 0xADF9,\n\t21738 - 11904: 0xADFE,\n\t21739 - 11904: 0xD0FB,\n\t21741 - 11904: 0xADFA,\n\t21742 - 11904: 0xADFD,\n\t21743 - 11904: 0x89F5,\n\t21745 - 11904: 0xD0FE,\n\t21746 - 11904: 0xADF5,\n\t21747 - 11904: 0xD0F5,\n\t21751 - 11904: 0xD142,\n\t21752 - 11904: 0xD143,\n\t21754 - 11904: 0xADF7,\n\t21755 - 11904: 0xD141,\n\t21756 - 11904: 0xADF3,\n\t21757 - 11904: 0xAE43,\n\t21759 - 11904: 0xD0F8,\n\t21761 - 11904: 0xADF1,\n\t21762 - 11904: 0x97A7,\n\t21763 - 11904: 0xD146,\n\t21764 - 11904: 0xD0F9,\n\t21765 - 11904: 0xD0FD,\n\t21766 - 11904: 0xADF6,\n\t21767 - 11904: 0xAE42,\n\t21768 - 11904: 0xD0FA,\n\t21769 - 11904: 0xADFC,\n\t21770 - 11904: 0xD140,\n\t21771 - 11904: 0xD147,\n\t21772 - 11904: 0xD4A1,\n\t21773 - 11904: 0x93BA,\n\t21774 - 11904: 0xD145,\n\t21775 - 11904: 0xAE44,\n\t21776 - 11904: 0xADF0,\n\t21777 - 11904: 0xD0FC,\n\t21778 - 11904: 0xD0F3,\n\t21779 - 11904: 0x9E58,\n\t21780 - 11904: 0xADF8,\n\t21783 - 11904: 0xD0F2,\n\t21784 - 11904: 0x89F6,\n\t21786 - 11904: 0xD0F7,\n\t21790 - 11904: 0x9E57,\n\t21795 - 11904: 0x89F7,\n\t21797 - 11904: 0x8A41,\n\t21798 - 11904: 0xD0F0,\n\t21799 - 11904: 0xAE41,\n\t21800 - 11904: 0x89F8,\n\t21802 - 11904: 0xD477,\n\t21803 - 11904: 0xFAF1,\n\t21804 - 11904: 0xB0E4,\n\t21805 - 11904: 0xD4A7,\n\t21806 - 11904: 0xB0E2,\n\t21807 - 11904: 0xB0DF,\n\t21808 - 11904: 0xD47C,\n\t21809 - 11904: 0xB0DB,\n\t21810 - 11904: 0xD4A2,\n\t21811 - 11904: 0xB0E6,\n\t21812 - 11904: 0xD476,\n\t21813 - 11904: 0xD47B,\n\t21814 - 11904: 0xD47A,\n\t21815 - 11904: 0xADF2,\n\t21816 - 11904: 0xB0E1,\n\t21817 - 11904: 0xD4A5,\n\t21819 - 11904: 0xD4A8,\n\t21820 - 11904: 0xD473,\n\t21822 - 11904: 0xB3E8,\n\t21823 - 11904: 0x89FA,\n\t21824 - 11904: 0xD4A9,\n\t21825 - 11904: 0xB0E7,\n\t21827 - 11904: 0xB0D9,\n\t21828 - 11904: 0xB0D6,\n\t21829 - 11904: 0xD47E,\n\t21830 - 11904: 0xB0D3,\n\t21831 - 11904: 0xFB42,\n\t21832 - 11904: 0xD4A6,\n\t21833 - 11904: 0xFABF,\n\t21834 - 11904: 0xB0DA,\n\t21835 - 11904: 0xD4AA,\n\t21837 - 11904: 0xD474,\n\t21838 - 11904: 0xD4A4,\n\t21839 - 11904: 0xB0DD,\n\t21840 - 11904: 0xD475,\n\t21841 - 11904: 0xD478,\n\t21842 - 11904: 0xD47D,\n\t21843 - 11904: 0xFBA3,\n\t21845 - 11904: 0xB0DE,\n\t21846 - 11904: 0xB0DC,\n\t21847 - 11904: 0xB0E8,\n\t21852 - 11904: 0xB0E3,\n\t21853 - 11904: 0xFAF7,\n\t21854 - 11904: 0xB0D7,\n\t21855 - 11904: 0xB1D2,\n\t21857 - 11904: 0xB0D8,\n\t21858 - 11904: 0xD479,\n\t21859 - 11904: 0xB0E5,\n\t21860 - 11904: 0xB0E0,\n\t21861 - 11904: 0xD4A3,\n\t21862 - 11904: 0xB0D5,\n\t21865 - 11904: 0x9E4E,\n\t21866 - 11904: 0xB0D4,\n\t21867 - 11904: 0x94DC,\n\t21873 - 11904: 0x95DA,\n\t21874 - 11904: 0x9DF8,\n\t21875 - 11904: 0x9F6A,\n\t21877 - 11904: 0xD471,\n\t21878 - 11904: 0xD472,\n\t21879 - 11904: 0xD86A,\n\t21881 - 11904: 0x8AB7,\n\t21883 - 11904: 0xB3D7,\n\t21884 - 11904: 0xB3DA,\n\t21885 - 11904: 0xD875,\n\t21886 - 11904: 0xB3EE,\n\t21887 - 11904: 0xD878,\n\t21888 - 11904: 0xB3D8,\n\t21889 - 11904: 0xD871,\n\t21890 - 11904: 0xB3DE,\n\t21891 - 11904: 0xB3E4,\n\t21892 - 11904: 0xB5BD,\n\t21894 - 11904: 0xFB46,\n\t21895 - 11904: 0xB3E2,\n\t21896 - 11904: 0xD86E,\n\t21897 - 11904: 0xB3EF,\n\t21898 - 11904: 0xB3DB,\n\t21899 - 11904: 0xB3E3,\n\t21900 - 11904: 0xD876,\n\t21901 - 11904: 0xDCD7,\n\t21902 - 11904: 0xD87B,\n\t21903 - 11904: 0xD86F,\n\t21904 - 11904: 0x8A46,\n\t21905 - 11904: 0xD866,\n\t21906 - 11904: 0xD873,\n\t21907 - 11904: 0xD86D,\n\t21908 - 11904: 0xB3E1,\n\t21909 - 11904: 0xD879,\n\t21912 - 11904: 0xB3DD,\n\t21913 - 11904: 0xB3F1,\n\t21914 - 11904: 0xB3EA,\n\t21916 - 11904: 0xB3DF,\n\t21917 - 11904: 0xB3DC,\n\t21919 - 11904: 0xB3E7,\n\t21921 - 11904: 0xD87A,\n\t21922 - 11904: 0xD86C,\n\t21923 - 11904: 0xD872,\n\t21924 - 11904: 0xD874,\n\t21925 - 11904: 0xD868,\n\t21926 - 11904: 0xD877,\n\t21927 - 11904: 0xB3D9,\n\t21928 - 11904: 0xD867,\n\t21929 - 11904: 0xFB47,\n\t21930 - 11904: 0xB3E0,\n\t21931 - 11904: 0xB3F0,\n\t21932 - 11904: 0xB3EC,\n\t21933 - 11904: 0xD869,\n\t21934 - 11904: 0xB3E6,\n\t21936 - 11904: 0x9148,\n\t21937 - 11904: 0xB3ED,\n\t21938 - 11904: 0xB3E9,\n\t21939 - 11904: 0xB3E5,\n\t21940 - 11904: 0x92DE,\n\t21941 - 11904: 0xD870,\n\t21945 - 11904: 0x8B53,\n\t21946 - 11904: 0x9DF6,\n\t21947 - 11904: 0xB3EB,\n\t21948 - 11904: 0x9BDA,\n\t21951 - 11904: 0xDCD5,\n\t21952 - 11904: 0xDCD1,\n\t21953 - 11904: 0x9D7E,\n\t21954 - 11904: 0xDCE0,\n\t21955 - 11904: 0xDCCA,\n\t21956 - 11904: 0xDCD3,\n\t21957 - 11904: 0xB6E5,\n\t21958 - 11904: 0xB6E6,\n\t21959 - 11904: 0xB6DE,\n\t21960 - 11904: 0xDCDC,\n\t21961 - 11904: 0xB6E8,\n\t21962 - 11904: 0xDCCF,\n\t21963 - 11904: 0xDCCE,\n\t21964 - 11904: 0xDCCC,\n\t21965 - 11904: 0xDCDE,\n\t21966 - 11904: 0xB6DC,\n\t21967 - 11904: 0xDCD8,\n\t21968 - 11904: 0xDCCD,\n\t21969 - 11904: 0xB6DF,\n\t21970 - 11904: 0xDCD6,\n\t21971 - 11904: 0xB6DA,\n\t21972 - 11904: 0xDCD2,\n\t21973 - 11904: 0xDCD9,\n\t21974 - 11904: 0xDCDB,\n\t21975 - 11904: 0x89FD,\n\t21976 - 11904: 0x99E4,\n\t21977 - 11904: 0xDCDF,\n\t21978 - 11904: 0xB6E3,\n\t21979 - 11904: 0xDCCB,\n\t21980 - 11904: 0xB6DD,\n\t21981 - 11904: 0xDCD0,\n\t21982 - 11904: 0x9E43,\n\t21983 - 11904: 0xB6D8,\n\t21985 - 11904: 0xB6E4,\n\t21986 - 11904: 0xDCDA,\n\t21987 - 11904: 0xB6E0,\n\t21988 - 11904: 0xB6E1,\n\t21989 - 11904: 0xB6E7,\n\t21990 - 11904: 0xB6DB,\n\t21991 - 11904: 0xA25F,\n\t21992 - 11904: 0xB6D9,\n\t21993 - 11904: 0xDCD4,\n\t21994 - 11904: 0x9DE9,\n\t21996 - 11904: 0x8F52,\n\t21999 - 11904: 0xB6E2,\n\t22000 - 11904: 0x9DF5,\n\t22001 - 11904: 0x9DF0,\n\t22002 - 11904: 0xDCDD,\n\t22005 - 11904: 0x99E7,\n\t22006 - 11904: 0xB9CD,\n\t22007 - 11904: 0xB9C8,\n\t22009 - 11904: 0xE155,\n\t22010 - 11904: 0xE151,\n\t22011 - 11904: 0x8BBD,\n\t22012 - 11904: 0xE14B,\n\t22013 - 11904: 0xB9C2,\n\t22014 - 11904: 0xB9BE,\n\t22015 - 11904: 0xE154,\n\t22016 - 11904: 0xB9BF,\n\t22017 - 11904: 0xE14E,\n\t22018 - 11904: 0xE150,\n\t22020 - 11904: 0xE153,\n\t22021 - 11904: 0xFB48,\n\t22022 - 11904: 0xB9C4,\n\t22024 - 11904: 0xB9CB,\n\t22025 - 11904: 0xB9C5,\n\t22028 - 11904: 0xE149,\n\t22029 - 11904: 0xB9C6,\n\t22030 - 11904: 0xB9C7,\n\t22031 - 11904: 0xE14C,\n\t22032 - 11904: 0xB9CC,\n\t22033 - 11904: 0x9FB7,\n\t22034 - 11904: 0xE14A,\n\t22035 - 11904: 0xE14F,\n\t22036 - 11904: 0xB9C3,\n\t22037 - 11904: 0xE148,\n\t22038 - 11904: 0xB9C9,\n\t22039 - 11904: 0xB9C1,\n\t22043 - 11904: 0xB9C0,\n\t22044 - 11904: 0xE14D,\n\t22045 - 11904: 0xE152,\n\t22046 - 11904: 0x9DD0,\n\t22047 - 11904: 0xB9CA,\n\t22048 - 11904: 0x9FEB,\n\t22049 - 11904: 0x8DA9,\n\t22050 - 11904: 0x9DCF,\n\t22051 - 11904: 0x98E1,\n\t22053 - 11904: 0x9DE5,\n\t22055 - 11904: 0xE147,\n\t22057 - 11904: 0xBC4D,\n\t22058 - 11904: 0xE547,\n\t22060 - 11904: 0xE544,\n\t22061 - 11904: 0x9DC8,\n\t22062 - 11904: 0xBC47,\n\t22063 - 11904: 0xBC53,\n\t22064 - 11904: 0xBC54,\n\t22066 - 11904: 0xBC4A,\n\t22067 - 11904: 0xE542,\n\t22068 - 11904: 0xBC4C,\n\t22069 - 11904: 0xE4F9,\n\t22070 - 11904: 0xBC52,\n\t22071 - 11904: 0xFB4F,\n\t22072 - 11904: 0xE546,\n\t22073 - 11904: 0xBC49,\n\t22074 - 11904: 0xE548,\n\t22075 - 11904: 0xBC48,\n\t22077 - 11904: 0xE543,\n\t22078 - 11904: 0xE545,\n\t22079 - 11904: 0xBC4B,\n\t22080 - 11904: 0xE541,\n\t22081 - 11904: 0xE4FA,\n\t22082 - 11904: 0xE4F7,\n\t22083 - 11904: 0x9DEB,\n\t22085 - 11904: 0xD86B,\n\t22086 - 11904: 0xE4FD,\n\t22088 - 11904: 0xE4F6,\n\t22089 - 11904: 0xE4FC,\n\t22090 - 11904: 0xE4FB,\n\t22092 - 11904: 0xE4F8,\n\t22093 - 11904: 0xFB54,\n\t22094 - 11904: 0xBC4F,\n\t22095 - 11904: 0xFB55,\n\t22096 - 11904: 0x9AA2,\n\t22098 - 11904: 0x8AD6,\n\t22099 - 11904: 0xBC4E,\n\t22100 - 11904: 0x9A5F,\n\t22103 - 11904: 0xBC50,\n\t22104 - 11904: 0xE4FE,\n\t22105 - 11904: 0xBEB2,\n\t22106 - 11904: 0xE540,\n\t22109 - 11904: 0x9EF5,\n\t22110 - 11904: 0xE945,\n\t22112 - 11904: 0xE8FD,\n\t22113 - 11904: 0x8FB7,\n\t22114 - 11904: 0xBEBE,\n\t22115 - 11904: 0xE942,\n\t22116 - 11904: 0xBEB6,\n\t22117 - 11904: 0xBEBA,\n\t22118 - 11904: 0xE941,\n\t22120 - 11904: 0xBEB9,\n\t22121 - 11904: 0xBEB5,\n\t22122 - 11904: 0xBEB8,\n\t22123 - 11904: 0xBEB3,\n\t22124 - 11904: 0xBEBD,\n\t22125 - 11904: 0xE943,\n\t22126 - 11904: 0xE8FE,\n\t22127 - 11904: 0xBEBC,\n\t22128 - 11904: 0xE8FC,\n\t22129 - 11904: 0xBEBB,\n\t22130 - 11904: 0xE944,\n\t22131 - 11904: 0xE940,\n\t22132 - 11904: 0xBC51,\n\t22134 - 11904: 0xBEBF,\n\t22135 - 11904: 0xE946,\n\t22136 - 11904: 0xBEB7,\n\t22137 - 11904: 0xBEB4,\n\t22138 - 11904: 0x9AD2,\n\t22139 - 11904: 0x9E6A,\n\t22140 - 11904: 0x9EE8,\n\t22142 - 11904: 0xECC6,\n\t22143 - 11904: 0xECC8,\n\t22144 - 11904: 0xC07B,\n\t22145 - 11904: 0xECC9,\n\t22146 - 11904: 0xECC7,\n\t22147 - 11904: 0xECC5,\n\t22148 - 11904: 0xECC4,\n\t22149 - 11904: 0xC07D,\n\t22150 - 11904: 0xECC3,\n\t22151 - 11904: 0xC07E,\n\t22153 - 11904: 0x8BBF,\n\t22154 - 11904: 0x91C2,\n\t22155 - 11904: 0x9D62,\n\t22156 - 11904: 0xECC1,\n\t22157 - 11904: 0xECC2,\n\t22158 - 11904: 0xC07A,\n\t22159 - 11904: 0xC0A1,\n\t22160 - 11904: 0xC07C,\n\t22162 - 11904: 0x9260,\n\t22163 - 11904: 0xECC0,\n\t22165 - 11904: 0xC250,\n\t22167 - 11904: 0xEFBC,\n\t22168 - 11904: 0xEFBA,\n\t22169 - 11904: 0xEFBF,\n\t22170 - 11904: 0xEFBD,\n\t22172 - 11904: 0xEFBB,\n\t22173 - 11904: 0xEFBE,\n\t22174 - 11904: 0x925E,\n\t22175 - 11904: 0x91C1,\n\t22177 - 11904: 0x8AC5,\n\t22180 - 11904: 0x97A3,\n\t22181 - 11904: 0xC360,\n\t22182 - 11904: 0xF1F2,\n\t22183 - 11904: 0xF1F3,\n\t22184 - 11904: 0xC456,\n\t22186 - 11904: 0xF1F4,\n\t22187 - 11904: 0xF1F0,\n\t22188 - 11904: 0xF1F5,\n\t22189 - 11904: 0xF1F1,\n\t22190 - 11904: 0xC251,\n\t22191 - 11904: 0x8B6C,\n\t22193 - 11904: 0x8D7E,\n\t22194 - 11904: 0xF3FE,\n\t22195 - 11904: 0xF441,\n\t22196 - 11904: 0xC459,\n\t22197 - 11904: 0xF440,\n\t22198 - 11904: 0xC458,\n\t22199 - 11904: 0xC457,\n\t22201 - 11904: 0x9C54,\n\t22204 - 11904: 0xC45A,\n\t22205 - 11904: 0xF5C5,\n\t22206 - 11904: 0xF5C6,\n\t22207 - 11904: 0x9DBD,\n\t22208 - 11904: 0xC4DA,\n\t22209 - 11904: 0xC4D9,\n\t22210 - 11904: 0xC4DB,\n\t22211 - 11904: 0xF5C4,\n\t22213 - 11904: 0xF6D8,\n\t22214 - 11904: 0xF6D7,\n\t22216 - 11904: 0xC56D,\n\t22217 - 11904: 0xC56F,\n\t22218 - 11904: 0xC56E,\n\t22219 - 11904: 0xF6D9,\n\t22220 - 11904: 0xC5C8,\n\t22221 - 11904: 0xF8A6,\n\t22225 - 11904: 0xC5F1,\n\t22227 - 11904: 0xF8A5,\n\t22228 - 11904: 0xF8EE,\n\t22230 - 11904: 0x9CC5,\n\t22231 - 11904: 0xC949,\n\t22234 - 11904: 0xA57D,\n\t22235 - 11904: 0xA57C,\n\t22237 - 11904: 0xA65F,\n\t22238 - 11904: 0xA65E,\n\t22239 - 11904: 0xC9C7,\n\t22240 - 11904: 0xA65D,\n\t22241 - 11904: 0xC9C6,\n\t22242 - 11904: 0x895B,\n\t22244 - 11904: 0xA779,\n\t22245 - 11904: 0xCAA9,\n\t22247 - 11904: 0xCAA8,\n\t22250 - 11904: 0xA777,\n\t22251 - 11904: 0xA77A,\n\t22253 - 11904: 0xFB5C,\n\t22254 - 11904: 0xCAA7,\n\t22255 - 11904: 0xFB5B,\n\t22256 - 11904: 0xA778,\n\t22257 - 11904: 0xFB57,\n\t22263 - 11904: 0xCBF0,\n\t22265 - 11904: 0xCBF1,\n\t22266 - 11904: 0xA954,\n\t22267 - 11904: 0x8765,\n\t22269 - 11904: 0x98C7,\n\t22271 - 11904: 0xABAA,\n\t22272 - 11904: 0xFB5A,\n\t22273 - 11904: 0xD148,\n\t22274 - 11904: 0xD149,\n\t22275 - 11904: 0xAE45,\n\t22276 - 11904: 0xAE46,\n\t22279 - 11904: 0xD4AC,\n\t22280 - 11904: 0xB0E9,\n\t22281 - 11904: 0xB0EB,\n\t22282 - 11904: 0xD4AB,\n\t22283 - 11904: 0xB0EA,\n\t22284 - 11904: 0xD87C,\n\t22285 - 11904: 0xB3F2,\n\t22290 - 11904: 0xB6E9,\n\t22291 - 11904: 0xB6EA,\n\t22292 - 11904: 0xDCE1,\n\t22293 - 11904: 0x9CEE,\n\t22294 - 11904: 0xB9CF,\n\t22296 - 11904: 0xB9CE,\n\t22298 - 11904: 0xE549,\n\t22299 - 11904: 0xE948,\n\t22300 - 11904: 0xE947,\n\t22301 - 11904: 0x92E2,\n\t22302 - 11904: 0xF96B,\n\t22303 - 11904: 0xA467,\n\t22304 - 11904: 0xC959,\n\t22306 - 11904: 0xC96E,\n\t22307 - 11904: 0xC96F,\n\t22312 - 11904: 0xA662,\n\t22313 - 11904: 0xA666,\n\t22314 - 11904: 0xC9C9,\n\t22316 - 11904: 0xA664,\n\t22317 - 11904: 0xA663,\n\t22318 - 11904: 0xC9C8,\n\t22319 - 11904: 0xA665,\n\t22320 - 11904: 0xA661,\n\t22322 - 11904: 0x94A7,\n\t22323 - 11904: 0xA660,\n\t22324 - 11904: 0xC9CA,\n\t22331 - 11904: 0xA7A6,\n\t22333 - 11904: 0x8CCC,\n\t22334 - 11904: 0xA7A3,\n\t22335 - 11904: 0x9BD4,\n\t22336 - 11904: 0xA77D,\n\t22337 - 11904: 0xCAAA,\n\t22338 - 11904: 0xFB64,\n\t22339 - 11904: 0xFB76,\n\t22341 - 11904: 0xCAAB,\n\t22342 - 11904: 0xFB60,\n\t22343 - 11904: 0xA7A1,\n\t22345 - 11904: 0xCAAD,\n\t22346 - 11904: 0xA77B,\n\t22347 - 11904: 0xCAAE,\n\t22348 - 11904: 0xCAAC,\n\t22349 - 11904: 0xA77E,\n\t22350 - 11904: 0xA7A2,\n\t22351 - 11904: 0xA7A5,\n\t22352 - 11904: 0xA7A4,\n\t22353 - 11904: 0xA77C,\n\t22354 - 11904: 0xCAAF,\n\t22356 - 11904: 0x99E5,\n\t22359 - 11904: 0x9AC2,\n\t22363 - 11904: 0x91FB,\n\t22367 - 11904: 0xA073,\n\t22369 - 11904: 0xA959,\n\t22370 - 11904: 0xCBFE,\n\t22372 - 11904: 0xA95B,\n\t22374 - 11904: 0xA95A,\n\t22375 - 11904: 0x9F72,\n\t22376 - 11904: 0xCC40,\n\t22377 - 11904: 0xA958,\n\t22378 - 11904: 0xA957,\n\t22379 - 11904: 0xCBF5,\n\t22381 - 11904: 0xCBF4,\n\t22383 - 11904: 0xCBF2,\n\t22384 - 11904: 0xCBF7,\n\t22385 - 11904: 0xCBF6,\n\t22386 - 11904: 0xCBF3,\n\t22387 - 11904: 0xCBFC,\n\t22388 - 11904: 0xCBFD,\n\t22389 - 11904: 0xCBFA,\n\t22390 - 11904: 0xCBF8,\n\t22391 - 11904: 0xA956,\n\t22394 - 11904: 0x9FCC,\n\t22395 - 11904: 0xCBFB,\n\t22396 - 11904: 0xA95C,\n\t22397 - 11904: 0xCC41,\n\t22398 - 11904: 0x98A5,\n\t22399 - 11904: 0x92E8,\n\t22400 - 11904: 0xCBF9,\n\t22402 - 11904: 0xABAB,\n\t22403 - 11904: 0xA955,\n\t22408 - 11904: 0x9BBC,\n\t22410 - 11904: 0x96F3,\n\t22411 - 11904: 0xABAC,\n\t22412 - 11904: 0xCE54,\n\t22413 - 11904: 0x92E7,\n\t22415 - 11904: 0xCE5A,\n\t22416 - 11904: 0xFC67,\n\t22419 - 11904: 0xABB2,\n\t22420 - 11904: 0xCE58,\n\t22421 - 11904: 0xCE5E,\n\t22423 - 11904: 0xCE55,\n\t22424 - 11904: 0xCE59,\n\t22425 - 11904: 0xCE5B,\n\t22426 - 11904: 0xCE5D,\n\t22427 - 11904: 0xCE57,\n\t22428 - 11904: 0x8B7D,\n\t22429 - 11904: 0xCE56,\n\t22430 - 11904: 0xCE51,\n\t22431 - 11904: 0xCE52,\n\t22432 - 11904: 0xABAD,\n\t22433 - 11904: 0x9BF4,\n\t22434 - 11904: 0xABAF,\n\t22435 - 11904: 0xABAE,\n\t22436 - 11904: 0xCE53,\n\t22437 - 11904: 0xCE5C,\n\t22439 - 11904: 0x9EF7,\n\t22442 - 11904: 0x9EC1,\n\t22446 - 11904: 0xABB1,\n\t22451 - 11904: 0x87C3,\n\t22452 - 11904: 0x996F,\n\t22453 - 11904: 0xCE50,\n\t22454 - 11904: 0xD153,\n\t22456 - 11904: 0xD152,\n\t22457 - 11904: 0xD157,\n\t22458 - 11904: 0xD14E,\n\t22459 - 11904: 0x96F1,\n\t22460 - 11904: 0xD151,\n\t22461 - 11904: 0xD150,\n\t22462 - 11904: 0x8E41,\n\t22463 - 11904: 0xD154,\n\t22465 - 11904: 0xD158,\n\t22466 - 11904: 0xAE47,\n\t22467 - 11904: 0xAE4A,\n\t22468 - 11904: 0x954A,\n\t22470 - 11904: 0xD14F,\n\t22471 - 11904: 0xD155,\n\t22472 - 11904: 0x97E6,\n\t22475 - 11904: 0xAE49,\n\t22476 - 11904: 0xD14A,\n\t22478 - 11904: 0xABB0,\n\t22479 - 11904: 0xD4BA,\n\t22480 - 11904: 0xD156,\n\t22482 - 11904: 0xD14D,\n\t22484 - 11904: 0xAE48,\n\t22485 - 11904: 0xD14C,\n\t22487 - 11904: 0x96F5,\n\t22492 - 11904: 0xD4B1,\n\t22493 - 11904: 0x92E6,\n\t22494 - 11904: 0x9F42,\n\t22495 - 11904: 0xB0EC,\n\t22496 - 11904: 0xB0F0,\n\t22497 - 11904: 0xD4C1,\n\t22498 - 11904: 0xD4AF,\n\t22499 - 11904: 0xD4BD,\n\t22500 - 11904: 0xB0F1,\n\t22501 - 11904: 0xD4BF,\n\t22502 - 11904: 0xFB67,\n\t22503 - 11904: 0xD4C5,\n\t22505 - 11904: 0xD4C9,\n\t22508 - 11904: 0xD4C0,\n\t22509 - 11904: 0xD4B4,\n\t22510 - 11904: 0xD4BC,\n\t22511 - 11904: 0x99A9,\n\t22512 - 11904: 0xD4CA,\n\t22513 - 11904: 0xD4C8,\n\t22514 - 11904: 0xD4BE,\n\t22515 - 11904: 0xD4B9,\n\t22516 - 11904: 0xD4B2,\n\t22517 - 11904: 0xD8A6,\n\t22518 - 11904: 0xD4B0,\n\t22519 - 11904: 0xB0F5,\n\t22520 - 11904: 0xD4B7,\n\t22521 - 11904: 0xB0F6,\n\t22522 - 11904: 0xB0F2,\n\t22523 - 11904: 0xD4AD,\n\t22524 - 11904: 0xD4C3,\n\t22525 - 11904: 0xD4B5,\n\t22526 - 11904: 0xFAE6,\n\t22528 - 11904: 0xD4B3,\n\t22529 - 11904: 0xD4C6,\n\t22530 - 11904: 0xB0F3,\n\t22531 - 11904: 0xFB69,\n\t22532 - 11904: 0xD4CC,\n\t22533 - 11904: 0xB0ED,\n\t22534 - 11904: 0xB0EF,\n\t22535 - 11904: 0xD4BB,\n\t22536 - 11904: 0xD4B6,\n\t22537 - 11904: 0xAE4B,\n\t22538 - 11904: 0xB0EE,\n\t22539 - 11904: 0xD4B8,\n\t22540 - 11904: 0xD4C7,\n\t22541 - 11904: 0xD4CB,\n\t22542 - 11904: 0xD4C2,\n\t22544 - 11904: 0xD4C4,\n\t22546 - 11904: 0x97E5,\n\t22548 - 11904: 0xD4AE,\n\t22552 - 11904: 0x87C8,\n\t22553 - 11904: 0xD8A1,\n\t22555 - 11904: 0xD8AA,\n\t22556 - 11904: 0xD8A9,\n\t22557 - 11904: 0xB3FA,\n\t22558 - 11904: 0xD8A2,\n\t22560 - 11904: 0xB3FB,\n\t22561 - 11904: 0xB3F9,\n\t22562 - 11904: 0x967D,\n\t22563 - 11904: 0xD8A4,\n\t22564 - 11904: 0xB3F6,\n\t22565 - 11904: 0xD8A8,\n\t22566 - 11904: 0xFB6C,\n\t22567 - 11904: 0xD8A3,\n\t22568 - 11904: 0xD8A5,\n\t22569 - 11904: 0xD87D,\n\t22570 - 11904: 0xB3F4,\n\t22572 - 11904: 0xD8B2,\n\t22573 - 11904: 0xD8B1,\n\t22574 - 11904: 0xD8AE,\n\t22575 - 11904: 0xB3F3,\n\t22576 - 11904: 0xB3F7,\n\t22577 - 11904: 0xB3F8,\n\t22578 - 11904: 0xD14B,\n\t22579 - 11904: 0xD8AB,\n\t22580 - 11904: 0xB3F5,\n\t22581 - 11904: 0xB0F4,\n\t22582 - 11904: 0xD8AD,\n\t22583 - 11904: 0xD87E,\n\t22584 - 11904: 0xD8B0,\n\t22585 - 11904: 0xD8AF,\n\t22586 - 11904: 0x99A2,\n\t22587 - 11904: 0xD8B3,\n\t22589 - 11904: 0xDCEF,\n\t22591 - 11904: 0xD8AC,\n\t22592 - 11904: 0x9ABB,\n\t22596 - 11904: 0x9A65,\n\t22599 - 11904: 0x944E,\n\t22600 - 11904: 0xD8A7,\n\t22601 - 11904: 0xDCE7,\n\t22602 - 11904: 0xB6F4,\n\t22603 - 11904: 0xB6F7,\n\t22604 - 11904: 0xB6F2,\n\t22605 - 11904: 0xDCE6,\n\t22606 - 11904: 0xDCEA,\n\t22607 - 11904: 0xDCE5,\n\t22609 - 11904: 0xB6EC,\n\t22610 - 11904: 0xB6F6,\n\t22611 - 11904: 0xDCE2,\n\t22612 - 11904: 0xB6F0,\n\t22613 - 11904: 0xDCE9,\n\t22615 - 11904: 0xB6EE,\n\t22616 - 11904: 0xB6ED,\n\t22617 - 11904: 0xDCEC,\n\t22618 - 11904: 0xB6EF,\n\t22619 - 11904: 0xDCEE,\n\t22620 - 11904: 0xFB6E,\n\t22621 - 11904: 0xDCEB,\n\t22622 - 11904: 0xB6EB,\n\t22623 - 11904: 0x99DF,\n\t22626 - 11904: 0xB6F5,\n\t22627 - 11904: 0xDCF0,\n\t22628 - 11904: 0xDCE4,\n\t22629 - 11904: 0xDCED,\n\t22632 - 11904: 0xDCE3,\n\t22633 - 11904: 0x98E3,\n\t22635 - 11904: 0xB6F1,\n\t22636 - 11904: 0x9254,\n\t22637 - 11904: 0xB6F3,\n\t22639 - 11904: 0xDCE8,\n\t22641 - 11904: 0xDCF1,\n\t22642 - 11904: 0x967B,\n\t22643 - 11904: 0x8AAF,\n\t22644 - 11904: 0xE15D,\n\t22645 - 11904: 0xB9D0,\n\t22646 - 11904: 0xE163,\n\t22649 - 11904: 0xB9D5,\n\t22650 - 11904: 0xE15F,\n\t22651 - 11904: 0xE166,\n\t22652 - 11904: 0xE157,\n\t22653 - 11904: 0xB9D7,\n\t22654 - 11904: 0xB9D1,\n\t22655 - 11904: 0xE15C,\n\t22656 - 11904: 0xBC55,\n\t22657 - 11904: 0xE15B,\n\t22658 - 11904: 0xE164,\n\t22659 - 11904: 0xB9D2,\n\t22661 - 11904: 0xB9D6,\n\t22662 - 11904: 0xE15A,\n\t22663 - 11904: 0xE160,\n\t22664 - 11904: 0xE165,\n\t22665 - 11904: 0xE156,\n\t22666 - 11904: 0xB9D4,\n\t22667 - 11904: 0xE15E,\n\t22670 - 11904: 0xE162,\n\t22671 - 11904: 0xE168,\n\t22672 - 11904: 0xE158,\n\t22673 - 11904: 0xE161,\n\t22674 - 11904: 0x8C77,\n\t22675 - 11904: 0xB9D3,\n\t22676 - 11904: 0xE167,\n\t22678 - 11904: 0x87B0,\n\t22680 - 11904: 0xE159,\n\t22681 - 11904: 0x8BAF,\n\t22682 - 11904: 0x9EBD,\n\t22684 - 11904: 0xBC59,\n\t22685 - 11904: 0xE54B,\n\t22686 - 11904: 0xBC57,\n\t22687 - 11904: 0xBC56,\n\t22688 - 11904: 0xE54D,\n\t22689 - 11904: 0xE552,\n\t22691 - 11904: 0xE54E,\n\t22693 - 11904: 0xE551,\n\t22694 - 11904: 0xBC5C,\n\t22695 - 11904: 0x9EE6,\n\t22696 - 11904: 0xBEA5,\n\t22697 - 11904: 0xBC5B,\n\t22698 - 11904: 0xFB6F,\n\t22699 - 11904: 0xE54A,\n\t22700 - 11904: 0xE550,\n\t22702 - 11904: 0xBC5A,\n\t22703 - 11904: 0xE54F,\n\t22704 - 11904: 0x8EE1,\n\t22705 - 11904: 0xE54C,\n\t22707 - 11904: 0xBC58,\n\t22709 - 11904: 0x9B7D,\n\t22710 - 11904: 0x9C7E,\n\t22714 - 11904: 0xE94D,\n\t22715 - 11904: 0xF9D9,\n\t22716 - 11904: 0xE94F,\n\t22717 - 11904: 0xE94A,\n\t22718 - 11904: 0xBEC1,\n\t22719 - 11904: 0xE94C,\n\t22721 - 11904: 0xBEC0,\n\t22722 - 11904: 0xE94E,\n\t22725 - 11904: 0xBEC3,\n\t22726 - 11904: 0xE950,\n\t22727 - 11904: 0xBEC2,\n\t22728 - 11904: 0xE949,\n\t22729 - 11904: 0xE94B,\n\t22731 - 11904: 0x92EA,\n\t22734 - 11904: 0xC0A5,\n\t22735 - 11904: 0xECCC,\n\t22736 - 11904: 0x8C78,\n\t22737 - 11904: 0xC0A4,\n\t22738 - 11904: 0xECCD,\n\t22739 - 11904: 0xC0A3,\n\t22740 - 11904: 0xECCB,\n\t22741 - 11904: 0xC0A2,\n\t22742 - 11904: 0xECCA,\n\t22744 - 11904: 0xC253,\n\t22745 - 11904: 0xC252,\n\t22746 - 11904: 0xF1F6,\n\t22747 - 11904: 0xF1F8,\n\t22748 - 11904: 0xFB72,\n\t22749 - 11904: 0xF1F7,\n\t22750 - 11904: 0xC361,\n\t22751 - 11904: 0xC362,\n\t22752 - 11904: 0xFB71,\n\t22754 - 11904: 0xC363,\n\t22755 - 11904: 0xF442,\n\t22756 - 11904: 0xC45B,\n\t22759 - 11904: 0xF7D3,\n\t22760 - 11904: 0xF7D2,\n\t22761 - 11904: 0xC5F2,\n\t22763 - 11904: 0xA468,\n\t22764 - 11904: 0xA4D0,\n\t22767 - 11904: 0xA7A7,\n\t22768 - 11904: 0x895C,\n\t22770 - 11904: 0x98F0,\n\t22771 - 11904: 0x96F2,\n\t22772 - 11904: 0xCE5F,\n\t22777 - 11904: 0xB3FC,\n\t22778 - 11904: 0xB3FD,\n\t22779 - 11904: 0xFB74,\n\t22780 - 11904: 0xDCF2,\n\t22781 - 11904: 0xB9D8,\n\t22782 - 11904: 0xE169,\n\t22783 - 11904: 0xE553,\n\t22786 - 11904: 0x8BC1,\n\t22787 - 11904: 0xC95A,\n\t22788 - 11904: 0x895D,\n\t22789 - 11904: 0x89DE,\n\t22790 - 11904: 0xCAB0,\n\t22791 - 11904: 0x895E,\n\t22794 - 11904: 0xC6CA,\n\t22796 - 11904: 0xCC42,\n\t22797 - 11904: 0xCE60,\n\t22798 - 11904: 0xD159,\n\t22799 - 11904: 0xAE4C,\n\t22801 - 11904: 0xFE42,\n\t22802 - 11904: 0xF1F9,\n\t22804 - 11904: 0xC4DC,\n\t22805 - 11904: 0xA469,\n\t22806 - 11904: 0xA57E,\n\t22807 - 11904: 0xC970,\n\t22809 - 11904: 0xA667,\n\t22810 - 11904: 0xA668,\n\t22812 - 11904: 0xA95D,\n\t22813 - 11904: 0x8768,\n\t22815 - 11904: 0xFB7B,\n\t22816 - 11904: 0xB0F7,\n\t22818 - 11904: 0xB9DA,\n\t22820 - 11904: 0xB9DB,\n\t22821 - 11904: 0xB9D9,\n\t22823 - 11904: 0xA46A,\n\t22825 - 11904: 0xA4D1,\n\t22826 - 11904: 0xA4D3,\n\t22827 - 11904: 0xA4D2,\n\t22828 - 11904: 0xC95B,\n\t22829 - 11904: 0xA4D4,\n\t22830 - 11904: 0xA5A1,\n\t22831 - 11904: 0xC971,\n\t22833 - 11904: 0xA5A2,\n\t22834 - 11904: 0x895F,\n\t22836 - 11904: 0x8960,\n\t22839 - 11904: 0xA669,\n\t22840 - 11904: 0xA66A,\n\t22844 - 11904: 0xC9CB,\n\t22846 - 11904: 0xA7A8,\n\t22848 - 11904: 0xCAB1,\n\t22852 - 11904: 0xA961,\n\t22853 - 11904: 0xCC43,\n\t22855 - 11904: 0xA95F,\n\t22856 - 11904: 0xA960,\n\t22857 - 11904: 0xA95E,\n\t22858 - 11904: 0xD15A,\n\t22862 - 11904: 0xABB6,\n\t22863 - 11904: 0xABB5,\n\t22864 - 11904: 0xABB7,\n\t22865 - 11904: 0xABB4,\n\t22867 - 11904: 0xCE61,\n\t22868 - 11904: 0xA962,\n\t22869 - 11904: 0xABB3,\n\t22871 - 11904: 0xAE4D,\n\t22872 - 11904: 0xAE4E,\n\t22874 - 11904: 0xAE4F,\n\t22876 - 11904: 0xD4CD,\n\t22880 - 11904: 0xB3FE,\n\t22881 - 11904: 0xD8B4,\n\t22882 - 11904: 0xB0F8,\n\t22885 - 11904: 0x9BCD,\n\t22887 - 11904: 0xB6F8,\n\t22889 - 11904: 0xB9DD,\n\t22890 - 11904: 0xB9DC,\n\t22891 - 11904: 0xE16A,\n\t22893 - 11904: 0xBC5D,\n\t22894 - 11904: 0xBEC4,\n\t22896 - 11904: 0xEFC0,\n\t22897 - 11904: 0xF6DA,\n\t22898 - 11904: 0xF7D4,\n\t22899 - 11904: 0xA46B,\n\t22900 - 11904: 0xA5A3,\n\t22901 - 11904: 0x9DD3,\n\t22902 - 11904: 0xA5A4,\n\t22903 - 11904: 0xC9D1,\n\t22904 - 11904: 0xA66C,\n\t22905 - 11904: 0xA66F,\n\t22907 - 11904: 0xC9CF,\n\t22908 - 11904: 0xC9CD,\n\t22909 - 11904: 0xA66E,\n\t22910 - 11904: 0xC9D0,\n\t22911 - 11904: 0xC9D2,\n\t22912 - 11904: 0xC9CC,\n\t22913 - 11904: 0xA671,\n\t22914 - 11904: 0xA670,\n\t22915 - 11904: 0xA66D,\n\t22916 - 11904: 0xA66B,\n\t22917 - 11904: 0xC9CE,\n\t22921 - 11904: 0x984C,\n\t22922 - 11904: 0xA7B3,\n\t22925 - 11904: 0xA7B0,\n\t22926 - 11904: 0xCAB6,\n\t22927 - 11904: 0xCAB9,\n\t22928 - 11904: 0xCAB8,\n\t22930 - 11904: 0xA7AA,\n\t22931 - 11904: 0xA7B2,\n\t22932 - 11904: 0x9752,\n\t22934 - 11904: 0xA7AF,\n\t22935 - 11904: 0xCAB5,\n\t22936 - 11904: 0xCAB3,\n\t22937 - 11904: 0xA7AE,\n\t22938 - 11904: 0x95C3,\n\t22941 - 11904: 0xA7A9,\n\t22942 - 11904: 0xA7AC,\n\t22943 - 11904: 0x9BB6,\n\t22944 - 11904: 0xCAB4,\n\t22945 - 11904: 0xCABB,\n\t22946 - 11904: 0xCAB7,\n\t22947 - 11904: 0xA7AD,\n\t22948 - 11904: 0xA7B1,\n\t22949 - 11904: 0xA7B4,\n\t22950 - 11904: 0xCAB2,\n\t22951 - 11904: 0xCABA,\n\t22952 - 11904: 0xA7AB,\n\t22956 - 11904: 0x9AB9,\n\t22958 - 11904: 0xA967,\n\t22959 - 11904: 0xA96F,\n\t22960 - 11904: 0x97B3,\n\t22961 - 11904: 0xCC4F,\n\t22962 - 11904: 0xCC48,\n\t22963 - 11904: 0xA970,\n\t22964 - 11904: 0xCC53,\n\t22965 - 11904: 0xCC44,\n\t22966 - 11904: 0xCC4B,\n\t22967 - 11904: 0x9F74,\n\t22968 - 11904: 0x92F1,\n\t22969 - 11904: 0xA966,\n\t22970 - 11904: 0xCC45,\n\t22971 - 11904: 0xA964,\n\t22972 - 11904: 0xCC4C,\n\t22973 - 11904: 0xCC50,\n\t22974 - 11904: 0xA963,\n\t22975 - 11904: 0x8CFA,\n\t22976 - 11904: 0xCC51,\n\t22977 - 11904: 0xCC4A,\n\t22979 - 11904: 0xCC4D,\n\t22980 - 11904: 0x97DF,\n\t22981 - 11904: 0xA972,\n\t22982 - 11904: 0xA969,\n\t22983 - 11904: 0xCC54,\n\t22984 - 11904: 0xCC52,\n\t22985 - 11904: 0xFBA6,\n\t22986 - 11904: 0xA96E,\n\t22987 - 11904: 0xA96C,\n\t22988 - 11904: 0xCC49,\n\t22989 - 11904: 0xA96B,\n\t22990 - 11904: 0xCC47,\n\t22991 - 11904: 0xCC46,\n\t22992 - 11904: 0xA96A,\n\t22993 - 11904: 0xA968,\n\t22994 - 11904: 0xA971,\n\t22995 - 11904: 0xA96D,\n\t22996 - 11904: 0xA965,\n\t22998 - 11904: 0xCC4E,\n\t23000 - 11904: 0xABB9,\n\t23001 - 11904: 0xFBAB,\n\t23002 - 11904: 0xABC0,\n\t23003 - 11904: 0xCE6F,\n\t23004 - 11904: 0xABB8,\n\t23005 - 11904: 0xCE67,\n\t23006 - 11904: 0xCE63,\n\t23008 - 11904: 0xCE73,\n\t23009 - 11904: 0xCE62,\n\t23011 - 11904: 0xABBB,\n\t23012 - 11904: 0xCE6C,\n\t23013 - 11904: 0xABBE,\n\t23014 - 11904: 0xABC1,\n\t23016 - 11904: 0xABBC,\n\t23017 - 11904: 0xCE70,\n\t23018 - 11904: 0xABBF,\n\t23019 - 11904: 0x9877,\n\t23020 - 11904: 0xAE56,\n\t23021 - 11904: 0xCE76,\n\t23022 - 11904: 0xCE64,\n\t23023 - 11904: 0x9854,\n\t23024 - 11904: 0x95C5,\n\t23025 - 11904: 0xCE66,\n\t23026 - 11904: 0xCE6D,\n\t23027 - 11904: 0xCE71,\n\t23028 - 11904: 0xCE75,\n\t23029 - 11904: 0xCE72,\n\t23030 - 11904: 0xCE6B,\n\t23031 - 11904: 0xCE6E,\n\t23032 - 11904: 0x9D55,\n\t23033 - 11904: 0xFBB2,\n\t23034 - 11904: 0xCE68,\n\t23035 - 11904: 0xABC3,\n\t23036 - 11904: 0xCE6A,\n\t23037 - 11904: 0xCE69,\n\t23038 - 11904: 0xCE74,\n\t23039 - 11904: 0xABBA,\n\t23040 - 11904: 0xCE65,\n\t23041 - 11904: 0xABC2,\n\t23042 - 11904: 0x957E,\n\t23043 - 11904: 0xABBD,\n\t23049 - 11904: 0xAE5C,\n\t23050 - 11904: 0xD162,\n\t23051 - 11904: 0x9742,\n\t23052 - 11904: 0xAE5B,\n\t23053 - 11904: 0x94E6,\n\t23055 - 11904: 0xD160,\n\t23057 - 11904: 0xAE50,\n\t23058 - 11904: 0x92F5,\n\t23059 - 11904: 0xAE55,\n\t23061 - 11904: 0xD15F,\n\t23062 - 11904: 0xD15C,\n\t23063 - 11904: 0xD161,\n\t23064 - 11904: 0xAE51,\n\t23065 - 11904: 0xD15B,\n\t23066 - 11904: 0x8CC5,\n\t23067 - 11904: 0xAE54,\n\t23068 - 11904: 0xAE52,\n\t23070 - 11904: 0xD163,\n\t23071 - 11904: 0xAE53,\n\t23072 - 11904: 0xAE57,\n\t23073 - 11904: 0x92FD,\n\t23075 - 11904: 0xAE58,\n\t23076 - 11904: 0xFBA2,\n\t23077 - 11904: 0xAE5A,\n\t23079 - 11904: 0x9C51,\n\t23081 - 11904: 0xAE59,\n\t23082 - 11904: 0x94E9,\n\t23083 - 11904: 0x985C,\n\t23084 - 11904: 0x92F0,\n\t23085 - 11904: 0xD15D,\n\t23086 - 11904: 0xD15E,\n\t23091 - 11904: 0xD164,\n\t23093 - 11904: 0xD4D4,\n\t23094 - 11904: 0xB0F9,\n\t23095 - 11904: 0xD8C2,\n\t23096 - 11904: 0xD4D3,\n\t23097 - 11904: 0xD4E6,\n\t23100 - 11904: 0xB140,\n\t23101 - 11904: 0x944C,\n\t23102 - 11904: 0xD4E4,\n\t23104 - 11904: 0xB0FE,\n\t23105 - 11904: 0xB0FA,\n\t23106 - 11904: 0xD4ED,\n\t23107 - 11904: 0xD4DD,\n\t23108 - 11904: 0xD4E0,\n\t23109 - 11904: 0x916B,\n\t23110 - 11904: 0xB143,\n\t23111 - 11904: 0xD4EA,\n\t23112 - 11904: 0xD4E2,\n\t23113 - 11904: 0xB0FB,\n\t23114 - 11904: 0xB144,\n\t23116 - 11904: 0xD4E7,\n\t23117 - 11904: 0xD4E5,\n\t23120 - 11904: 0xD4D6,\n\t23121 - 11904: 0xD4EB,\n\t23122 - 11904: 0xD4DF,\n\t23123 - 11904: 0xD4DA,\n\t23124 - 11904: 0x8B78,\n\t23125 - 11904: 0xD4D0,\n\t23126 - 11904: 0xD4EC,\n\t23127 - 11904: 0xD4DC,\n\t23128 - 11904: 0xD4CF,\n\t23129 - 11904: 0x94E2,\n\t23130 - 11904: 0xB142,\n\t23131 - 11904: 0xD4E1,\n\t23132 - 11904: 0xD4EE,\n\t23133 - 11904: 0xD4DE,\n\t23134 - 11904: 0xD4D2,\n\t23135 - 11904: 0xD4D7,\n\t23136 - 11904: 0xD4CE,\n\t23137 - 11904: 0x984F,\n\t23138 - 11904: 0xB141,\n\t23139 - 11904: 0xFBB5,\n\t23140 - 11904: 0xD4DB,\n\t23141 - 11904: 0xD4D8,\n\t23142 - 11904: 0xB0FC,\n\t23143 - 11904: 0xD4D1,\n\t23144 - 11904: 0x9271,\n\t23145 - 11904: 0xD4E9,\n\t23146 - 11904: 0xB0FD,\n\t23147 - 11904: 0x9365,\n\t23148 - 11904: 0xD4D9,\n\t23149 - 11904: 0xD4D5,\n\t23150 - 11904: 0x985B,\n\t23152 - 11904: 0xD4E8,\n\t23153 - 11904: 0x9850,\n\t23159 - 11904: 0xFBB8,\n\t23160 - 11904: 0xD8BB,\n\t23161 - 11904: 0x97BC,\n\t23162 - 11904: 0xD8B8,\n\t23163 - 11904: 0xD8C9,\n\t23164 - 11904: 0xD8BD,\n\t23165 - 11904: 0xD8CA,\n\t23166 - 11904: 0x92F3,\n\t23167 - 11904: 0xB442,\n\t23169 - 11904: 0x9340,\n\t23170 - 11904: 0x984D,\n\t23171 - 11904: 0xD8C6,\n\t23172 - 11904: 0xD8C3,\n\t23174 - 11904: 0x9572,\n\t23176 - 11904: 0xFDEF,\n\t23178 - 11904: 0xD8C4,\n\t23179 - 11904: 0xD8C7,\n\t23180 - 11904: 0xD8CB,\n\t23182 - 11904: 0xD4E3,\n\t23183 - 11904: 0xD8CD,\n\t23184 - 11904: 0xDD47,\n\t23185 - 11904: 0xFDC1,\n\t23186 - 11904: 0xB443,\n\t23187 - 11904: 0xD8CE,\n\t23188 - 11904: 0xD8B6,\n\t23189 - 11904: 0xD8C0,\n\t23190 - 11904: 0xFBBA,\n\t23191 - 11904: 0xD8C5,\n\t23193 - 11904: 0x92EB,\n\t23194 - 11904: 0xB441,\n\t23195 - 11904: 0xB444,\n\t23196 - 11904: 0xD8CC,\n\t23197 - 11904: 0xD8CF,\n\t23198 - 11904: 0xD8BA,\n\t23199 - 11904: 0xD8B7,\n\t23200 - 11904: 0xFC73,\n\t23201 - 11904: 0x97B7,\n\t23202 - 11904: 0xD8B9,\n\t23204 - 11904: 0x876F,\n\t23205 - 11904: 0xD8BE,\n\t23206 - 11904: 0xD8BC,\n\t23207 - 11904: 0xB445,\n\t23209 - 11904: 0xD8C8,\n\t23211 - 11904: 0xFBB4,\n\t23212 - 11904: 0xD8BF,\n\t23214 - 11904: 0xD8C1,\n\t23215 - 11904: 0xD8B5,\n\t23216 - 11904: 0xDCFA,\n\t23217 - 11904: 0xDCF8,\n\t23218 - 11904: 0xB742,\n\t23219 - 11904: 0xB740,\n\t23220 - 11904: 0xDD43,\n\t23221 - 11904: 0xDCF9,\n\t23222 - 11904: 0xDD44,\n\t23223 - 11904: 0xDD40,\n\t23224 - 11904: 0xDCF7,\n\t23225 - 11904: 0xDD46,\n\t23226 - 11904: 0xDCF6,\n\t23227 - 11904: 0xDCFD,\n\t23228 - 11904: 0xB6FE,\n\t23229 - 11904: 0xB6FD,\n\t23230 - 11904: 0xB6FC,\n\t23231 - 11904: 0xDCFB,\n\t23232 - 11904: 0xDD41,\n\t23233 - 11904: 0xB6F9,\n\t23234 - 11904: 0xB741,\n\t23235 - 11904: 0x90A7,\n\t23236 - 11904: 0xDCF4,\n\t23238 - 11904: 0xDCFE,\n\t23239 - 11904: 0xDCF3,\n\t23240 - 11904: 0xDCFC,\n\t23241 - 11904: 0xB6FA,\n\t23242 - 11904: 0xDD42,\n\t23243 - 11904: 0xDCF5,\n\t23244 - 11904: 0xB6FB,\n\t23245 - 11904: 0xDD45,\n\t23246 - 11904: 0x9741,\n\t23247 - 11904: 0x92F4,\n\t23249 - 11904: 0x8772,\n\t23251 - 11904: 0xFBBC,\n\t23253 - 11904: 0xE16E,\n\t23254 - 11904: 0xB9E2,\n\t23255 - 11904: 0xB9E1,\n\t23256 - 11904: 0xB9E3,\n\t23257 - 11904: 0xE17A,\n\t23258 - 11904: 0xE170,\n\t23259 - 11904: 0xE176,\n\t23260 - 11904: 0xE16B,\n\t23261 - 11904: 0xE179,\n\t23262 - 11904: 0xE178,\n\t23263 - 11904: 0xE17C,\n\t23264 - 11904: 0xE175,\n\t23265 - 11904: 0xB9DE,\n\t23266 - 11904: 0xE174,\n\t23267 - 11904: 0xB9E4,\n\t23268 - 11904: 0x9577,\n\t23269 - 11904: 0xE16D,\n\t23270 - 11904: 0xB9DF,\n\t23272 - 11904: 0xE17B,\n\t23273 - 11904: 0xB9E0,\n\t23274 - 11904: 0xE16F,\n\t23275 - 11904: 0xE172,\n\t23276 - 11904: 0xE177,\n\t23277 - 11904: 0xE171,\n\t23278 - 11904: 0xE16C,\n\t23280 - 11904: 0x9EE2,\n\t23282 - 11904: 0x8F78,\n\t23283 - 11904: 0xE173,\n\t23284 - 11904: 0xE555,\n\t23285 - 11904: 0xBC61,\n\t23286 - 11904: 0xE558,\n\t23287 - 11904: 0xE557,\n\t23288 - 11904: 0xE55A,\n\t23289 - 11904: 0xE55C,\n\t23290 - 11904: 0xF9DC,\n\t23291 - 11904: 0xBC5F,\n\t23293 - 11904: 0xE556,\n\t23294 - 11904: 0x9672,\n\t23295 - 11904: 0xE554,\n\t23297 - 11904: 0xE55D,\n\t23298 - 11904: 0xE55B,\n\t23299 - 11904: 0xE559,\n\t23301 - 11904: 0xE55F,\n\t23303 - 11904: 0xE55E,\n\t23304 - 11904: 0xBC63,\n\t23305 - 11904: 0xBC5E,\n\t23307 - 11904: 0xBC60,\n\t23308 - 11904: 0xBC62,\n\t23309 - 11904: 0x9EB5,\n\t23311 - 11904: 0xE560,\n\t23312 - 11904: 0xE957,\n\t23313 - 11904: 0x964B,\n\t23315 - 11904: 0xE956,\n\t23316 - 11904: 0xE955,\n\t23317 - 11904: 0x8CAC,\n\t23318 - 11904: 0xE958,\n\t23319 - 11904: 0xE951,\n\t23321 - 11904: 0xE952,\n\t23322 - 11904: 0xE95A,\n\t23323 - 11904: 0xE953,\n\t23325 - 11904: 0xBEC5,\n\t23326 - 11904: 0xE95C,\n\t23327 - 11904: 0xA0FA,\n\t23328 - 11904: 0xE95B,\n\t23329 - 11904: 0xE954,\n\t23331 - 11904: 0xECD1,\n\t23332 - 11904: 0xC0A8,\n\t23333 - 11904: 0xECCF,\n\t23334 - 11904: 0xECD4,\n\t23335 - 11904: 0xECD3,\n\t23336 - 11904: 0xE959,\n\t23338 - 11904: 0xC0A7,\n\t23339 - 11904: 0x9575,\n\t23340 - 11904: 0xECD2,\n\t23341 - 11904: 0xECCE,\n\t23342 - 11904: 0xECD6,\n\t23343 - 11904: 0xECD5,\n\t23344 - 11904: 0xC0A6,\n\t23346 - 11904: 0xECD0,\n\t23348 - 11904: 0xBEC6,\n\t23352 - 11904: 0xC254,\n\t23356 - 11904: 0xEFC1,\n\t23357 - 11904: 0xF1FA,\n\t23358 - 11904: 0xF1FB,\n\t23359 - 11904: 0xF1FC,\n\t23360 - 11904: 0xC45C,\n\t23361 - 11904: 0x90DA,\n\t23363 - 11904: 0xC45D,\n\t23364 - 11904: 0x9367,\n\t23365 - 11904: 0xF443,\n\t23366 - 11904: 0xFEA4,\n\t23367 - 11904: 0xF5C8,\n\t23368 - 11904: 0xF5C7,\n\t23370 - 11904: 0x90DF,\n\t23371 - 11904: 0xF6DB,\n\t23372 - 11904: 0xF6DC,\n\t23373 - 11904: 0xF7D5,\n\t23374 - 11904: 0xF8A7,\n\t23375 - 11904: 0x9354,\n\t23376 - 11904: 0xA46C,\n\t23377 - 11904: 0xA46D,\n\t23379 - 11904: 0xA46E,\n\t23380 - 11904: 0xA4D5,\n\t23381 - 11904: 0xA5A5,\n\t23382 - 11904: 0xC9D3,\n\t23383 - 11904: 0xA672,\n\t23384 - 11904: 0xA673,\n\t23386 - 11904: 0xA7B7,\n\t23387 - 11904: 0xA7B8,\n\t23388 - 11904: 0xA7B6,\n\t23389 - 11904: 0xA7B5,\n\t23391 - 11904: 0xA973,\n\t23394 - 11904: 0xCC55,\n\t23395 - 11904: 0xA975,\n\t23396 - 11904: 0xA974,\n\t23397 - 11904: 0xCC56,\n\t23398 - 11904: 0x8961,\n\t23400 - 11904: 0x8BB4,\n\t23401 - 11904: 0xABC4,\n\t23403 - 11904: 0xAE5D,\n\t23404 - 11904: 0xD165,\n\t23405 - 11904: 0x9DC0,\n\t23406 - 11904: 0xD4F0,\n\t23408 - 11904: 0xB145,\n\t23409 - 11904: 0xB447,\n\t23410 - 11904: 0xD4EF,\n\t23411 - 11904: 0xB446,\n\t23412 - 11904: 0x8E48,\n\t23413 - 11904: 0xB9E5,\n\t23414 - 11904: 0xFBC5,\n\t23415 - 11904: 0xE17D,\n\t23416 - 11904: 0xBEC7,\n\t23418 - 11904: 0xC0A9,\n\t23419 - 11904: 0xECD7,\n\t23420 - 11904: 0xFBC7,\n\t23421 - 11904: 0xC45E,\n\t23423 - 11904: 0xC570,\n\t23424 - 11904: 0xC6CB,\n\t23425 - 11904: 0xC972,\n\t23426 - 11904: 0xFA79,\n\t23427 - 11904: 0xA5A6,\n\t23428 - 11904: 0xC973,\n\t23429 - 11904: 0xA676,\n\t23431 - 11904: 0xA674,\n\t23432 - 11904: 0xA675,\n\t23433 - 11904: 0xA677,\n\t23435 - 11904: 0xA7BA,\n\t23436 - 11904: 0xA7B9,\n\t23438 - 11904: 0xCABC,\n\t23439 - 11904: 0xA7BB,\n\t23440 - 11904: 0x9E67,\n\t23442 - 11904: 0xCABD,\n\t23443 - 11904: 0xCC57,\n\t23445 - 11904: 0xCC58,\n\t23446 - 11904: 0x8CD9,\n\t23447 - 11904: 0xA976,\n\t23448 - 11904: 0xA978,\n\t23449 - 11904: 0xA97A,\n\t23450 - 11904: 0xA977,\n\t23451 - 11904: 0xA97B,\n\t23452 - 11904: 0xA979,\n\t23453 - 11904: 0xFBD2,\n\t23454 - 11904: 0x8962,\n\t23455 - 11904: 0x8963,\n\t23458 - 11904: 0xABC8,\n\t23459 - 11904: 0xABC5,\n\t23460 - 11904: 0xABC7,\n\t23461 - 11904: 0xABC9,\n\t23462 - 11904: 0xABC6,\n\t23463 - 11904: 0xD166,\n\t23464 - 11904: 0xCE77,\n\t23466 - 11904: 0xFC7D,\n\t23468 - 11904: 0xD168,\n\t23469 - 11904: 0xD167,\n\t23470 - 11904: 0xAE63,\n\t23472 - 11904: 0xAE5F,\n\t23475 - 11904: 0xAE60,\n\t23476 - 11904: 0xAE62,\n\t23477 - 11904: 0xAE64,\n\t23478 - 11904: 0xAE61,\n\t23479 - 11904: 0x8773,\n\t23480 - 11904: 0xAE66,\n\t23481 - 11904: 0xAE65,\n\t23487 - 11904: 0xB14A,\n\t23488 - 11904: 0xD4F2,\n\t23489 - 11904: 0xD4F1,\n\t23490 - 11904: 0xB149,\n\t23491 - 11904: 0x9F6B,\n\t23492 - 11904: 0xB148,\n\t23493 - 11904: 0xB147,\n\t23494 - 11904: 0xB14B,\n\t23495 - 11904: 0xB146,\n\t23498 - 11904: 0xD8D5,\n\t23499 - 11904: 0xD8D2,\n\t23500 - 11904: 0xB449,\n\t23501 - 11904: 0xD8D1,\n\t23502 - 11904: 0xD8D6,\n\t23504 - 11904: 0xB44B,\n\t23505 - 11904: 0xD8D4,\n\t23506 - 11904: 0xB448,\n\t23507 - 11904: 0xB44A,\n\t23508 - 11904: 0xD8D3,\n\t23509 - 11904: 0xFBCC,\n\t23510 - 11904: 0xDD48,\n\t23511 - 11904: 0xFEAE,\n\t23512 - 11904: 0xDD49,\n\t23513 - 11904: 0xDD4A,\n\t23515 - 11904: 0x876D,\n\t23518 - 11904: 0xB9E6,\n\t23519 - 11904: 0xB9EE,\n\t23520 - 11904: 0xE17E,\n\t23521 - 11904: 0xB9E8,\n\t23522 - 11904: 0xB9EC,\n\t23523 - 11904: 0xE1A1,\n\t23524 - 11904: 0xB9ED,\n\t23525 - 11904: 0xB9E9,\n\t23526 - 11904: 0xB9EA,\n\t23527 - 11904: 0xB9E7,\n\t23528 - 11904: 0xB9EB,\n\t23529 - 11904: 0xBC66,\n\t23530 - 11904: 0xD8D0,\n\t23531 - 11904: 0xBC67,\n\t23532 - 11904: 0xBC65,\n\t23534 - 11904: 0xBC64,\n\t23535 - 11904: 0xE95D,\n\t23536 - 11904: 0xBEC8,\n\t23537 - 11904: 0xECD8,\n\t23538 - 11904: 0xECD9,\n\t23539 - 11904: 0xFBD1,\n\t23541 - 11904: 0xC364,\n\t23542 - 11904: 0xC45F,\n\t23544 - 11904: 0xA46F,\n\t23546 - 11904: 0xA678,\n\t23551 - 11904: 0xFB75,\n\t23553 - 11904: 0xABCA,\n\t23555 - 11904: 0xD169,\n\t23556 - 11904: 0xAE67,\n\t23557 - 11904: 0xFBD4,\n\t23559 - 11904: 0xB14E,\n\t23560 - 11904: 0xB14D,\n\t23561 - 11904: 0xB14C,\n\t23562 - 11904: 0xB44C,\n\t23563 - 11904: 0xB44D,\n\t23564 - 11904: 0xD8D7,\n\t23565 - 11904: 0xB9EF,\n\t23566 - 11904: 0xBEC9,\n\t23567 - 11904: 0xA470,\n\t23568 - 11904: 0xC95C,\n\t23569 - 11904: 0xA4D6,\n\t23570 - 11904: 0xC974,\n\t23571 - 11904: 0xFBD6,\n\t23572 - 11904: 0xFBD8,\n\t23573 - 11904: 0xC9D4,\n\t23574 - 11904: 0xA679,\n\t23578 - 11904: 0xA97C,\n\t23580 - 11904: 0x8B5D,\n\t23582 - 11904: 0x934C,\n\t23583 - 11904: 0xDD4B,\n\t23584 - 11904: 0x9AE2,\n\t23586 - 11904: 0xA471,\n\t23587 - 11904: 0x8BC9,\n\t23588 - 11904: 0xA4D7,\n\t23589 - 11904: 0xC9D5,\n\t23592 - 11904: 0xCABE,\n\t23594 - 11904: 0xCABF,\n\t23596 - 11904: 0xA7BC,\n\t23600 - 11904: 0xD8D8,\n\t23601 - 11904: 0xB44E,\n\t23603 - 11904: 0xDD4C,\n\t23607 - 11904: 0xC0AA,\n\t23608 - 11904: 0xA472,\n\t23609 - 11904: 0xA4A8,\n\t23610 - 11904: 0xA4D8,\n\t23611 - 11904: 0xC975,\n\t23612 - 11904: 0xA5A7,\n\t23614 - 11904: 0xA7C0,\n\t23615 - 11904: 0xA7BF,\n\t23616 - 11904: 0xA7BD,\n\t23617 - 11904: 0xA7BE,\n\t23620 - 11904: 0xCC59,\n\t23621 - 11904: 0xA97E,\n\t23622 - 11904: 0xA9A1,\n\t23623 - 11904: 0xCC5A,\n\t23624 - 11904: 0xA97D,\n\t23625 - 11904: 0xFBDB,\n\t23626 - 11904: 0x9FC9,\n\t23627 - 11904: 0xABCE,\n\t23628 - 11904: 0xCE78,\n\t23629 - 11904: 0xABCD,\n\t23630 - 11904: 0xABCB,\n\t23631 - 11904: 0xABCC,\n\t23632 - 11904: 0xAE6A,\n\t23633 - 11904: 0xAE68,\n\t23635 - 11904: 0x9F44,\n\t23636 - 11904: 0xD16B,\n\t23637 - 11904: 0xAE69,\n\t23638 - 11904: 0xD16A,\n\t23640 - 11904: 0xAE5E,\n\t23641 - 11904: 0xD4F3,\n\t23644 - 11904: 0xB150,\n\t23645 - 11904: 0xB151,\n\t23646 - 11904: 0x98ED,\n\t23648 - 11904: 0xB14F,\n\t23650 - 11904: 0xB9F0,\n\t23651 - 11904: 0xE1A2,\n\t23652 - 11904: 0xBC68,\n\t23653 - 11904: 0xBC69,\n\t23655 - 11904: 0xE561,\n\t23656 - 11904: 0xC0AB,\n\t23657 - 11904: 0xEFC2,\n\t23658 - 11904: 0xEFC3,\n\t23660 - 11904: 0xC4DD,\n\t23661 - 11904: 0xF8A8,\n\t23662 - 11904: 0xC94B,\n\t23663 - 11904: 0xA4D9,\n\t23665 - 11904: 0xA473,\n\t23667 - 11904: 0xC977,\n\t23668 - 11904: 0xC976,\n\t23672 - 11904: 0x8CE9,\n\t23673 - 11904: 0xA67A,\n\t23674 - 11904: 0xC9D7,\n\t23675 - 11904: 0xC9D8,\n\t23676 - 11904: 0xC9D6,\n\t23678 - 11904: 0xC9D9,\n\t23685 - 11904: 0xFBDD,\n\t23686 - 11904: 0xCAC7,\n\t23688 - 11904: 0xCAC2,\n\t23689 - 11904: 0xCAC4,\n\t23690 - 11904: 0xCAC6,\n\t23691 - 11904: 0xCAC3,\n\t23692 - 11904: 0xA7C4,\n\t23693 - 11904: 0xCAC0,\n\t23695 - 11904: 0xCAC1,\n\t23696 - 11904: 0xA7C1,\n\t23697 - 11904: 0xA7C2,\n\t23698 - 11904: 0xCAC5,\n\t23699 - 11904: 0xCAC8,\n\t23700 - 11904: 0xA7C3,\n\t23701 - 11904: 0xCAC9,\n\t23705 - 11904: 0x8DF2,\n\t23706 - 11904: 0x8964,\n\t23708 - 11904: 0xFDF2,\n\t23709 - 11904: 0xCC68,\n\t23710 - 11904: 0x934D,\n\t23711 - 11904: 0xCC62,\n\t23712 - 11904: 0xCC5D,\n\t23713 - 11904: 0xA9A3,\n\t23714 - 11904: 0xCC65,\n\t23715 - 11904: 0xCC63,\n\t23716 - 11904: 0xCC5C,\n\t23717 - 11904: 0xCC69,\n\t23718 - 11904: 0xCC6C,\n\t23719 - 11904: 0xCC67,\n\t23720 - 11904: 0xCC60,\n\t23721 - 11904: 0xA9A5,\n\t23722 - 11904: 0xCC66,\n\t23723 - 11904: 0xA9A6,\n\t23724 - 11904: 0xCC61,\n\t23725 - 11904: 0xCC64,\n\t23726 - 11904: 0xCC5B,\n\t23727 - 11904: 0xCC5F,\n\t23728 - 11904: 0xCC6B,\n\t23729 - 11904: 0xA9A7,\n\t23731 - 11904: 0xA9A8,\n\t23733 - 11904: 0xCC5E,\n\t23734 - 11904: 0xCC6A,\n\t23735 - 11904: 0xA9A2,\n\t23736 - 11904: 0xA9A4,\n\t23738 - 11904: 0xFBE7,\n\t23745 - 11904: 0xA0F2,\n\t23746 - 11904: 0x9868,\n\t23750 - 11904: 0xCEAB,\n\t23751 - 11904: 0xCEA4,\n\t23752 - 11904: 0xCEAA,\n\t23753 - 11904: 0xCEA3,\n\t23754 - 11904: 0xCEA5,\n\t23755 - 11904: 0xCE7D,\n\t23756 - 11904: 0xCE7B,\n\t23758 - 11904: 0xCEAC,\n\t23759 - 11904: 0xCEA9,\n\t23760 - 11904: 0xCE79,\n\t23761 - 11904: 0x9F58,\n\t23762 - 11904: 0xABD0,\n\t23763 - 11904: 0xCEA7,\n\t23764 - 11904: 0xCEA8,\n\t23765 - 11904: 0x8CE6,\n\t23766 - 11904: 0xCEA6,\n\t23767 - 11904: 0xCE7C,\n\t23768 - 11904: 0xCE7A,\n\t23769 - 11904: 0xABCF,\n\t23770 - 11904: 0xCEA2,\n\t23771 - 11904: 0xCE7E,\n\t23774 - 11904: 0xCEA1,\n\t23775 - 11904: 0xCEAD,\n\t23781 - 11904: 0x8D73,\n\t23784 - 11904: 0xAE6F,\n\t23785 - 11904: 0xFBDE,\n\t23786 - 11904: 0xAE6E,\n\t23788 - 11904: 0xD16C,\n\t23789 - 11904: 0xAE6B,\n\t23790 - 11904: 0xD16E,\n\t23791 - 11904: 0xFBDF,\n\t23792 - 11904: 0xAE70,\n\t23793 - 11904: 0xD16F,\n\t23796 - 11904: 0xAE73,\n\t23797 - 11904: 0x8C48,\n\t23798 - 11904: 0xAE71,\n\t23799 - 11904: 0xD170,\n\t23800 - 11904: 0xCEAE,\n\t23801 - 11904: 0xD172,\n\t23803 - 11904: 0xAE6D,\n\t23804 - 11904: 0x8774,\n\t23805 - 11904: 0xAE6C,\n\t23807 - 11904: 0xD16D,\n\t23808 - 11904: 0xD171,\n\t23809 - 11904: 0xAE72,\n\t23814 - 11904: 0xB153,\n\t23815 - 11904: 0xB152,\n\t23819 - 11904: 0xD4F5,\n\t23820 - 11904: 0xD4F9,\n\t23821 - 11904: 0xD4FB,\n\t23822 - 11904: 0xB154,\n\t23823 - 11904: 0xD4FE,\n\t23824 - 11904: 0xFBE3,\n\t23825 - 11904: 0xB158,\n\t23826 - 11904: 0xD541,\n\t23828 - 11904: 0xB15A,\n\t23829 - 11904: 0x8DA8,\n\t23830 - 11904: 0xB156,\n\t23831 - 11904: 0xB15E,\n\t23832 - 11904: 0xFBE4,\n\t23833 - 11904: 0xB15B,\n\t23834 - 11904: 0xD4F7,\n\t23835 - 11904: 0xB155,\n\t23837 - 11904: 0xD4F6,\n\t23838 - 11904: 0xD4F4,\n\t23839 - 11904: 0xD543,\n\t23840 - 11904: 0xD4F8,\n\t23842 - 11904: 0xB157,\n\t23843 - 11904: 0xD542,\n\t23844 - 11904: 0xB15C,\n\t23845 - 11904: 0xD4FD,\n\t23846 - 11904: 0xD4FC,\n\t23847 - 11904: 0xB15D,\n\t23848 - 11904: 0xD4FA,\n\t23849 - 11904: 0xB159,\n\t23852 - 11904: 0x9C75,\n\t23854 - 11904: 0xD544,\n\t23855 - 11904: 0x9878,\n\t23856 - 11904: 0xD540,\n\t23857 - 11904: 0xD8E7,\n\t23858 - 11904: 0xD8EE,\n\t23859 - 11904: 0xD8E3,\n\t23860 - 11904: 0xB451,\n\t23861 - 11904: 0xD8DF,\n\t23862 - 11904: 0xD8EF,\n\t23863 - 11904: 0xD8D9,\n\t23864 - 11904: 0xD8EC,\n\t23865 - 11904: 0xD8EA,\n\t23866 - 11904: 0xD8E4,\n\t23868 - 11904: 0xD8ED,\n\t23869 - 11904: 0xD8E6,\n\t23870 - 11904: 0x8D60,\n\t23871 - 11904: 0xD8DE,\n\t23872 - 11904: 0xD8F0,\n\t23873 - 11904: 0xD8DC,\n\t23874 - 11904: 0xD8E9,\n\t23875 - 11904: 0xD8DA,\n\t23877 - 11904: 0xD8F1,\n\t23878 - 11904: 0xFBE5,\n\t23879 - 11904: 0xB452,\n\t23880 - 11904: 0x8D61,\n\t23881 - 11904: 0xD8EB,\n\t23882 - 11904: 0xDD4F,\n\t23883 - 11904: 0xD8DD,\n\t23884 - 11904: 0xB44F,\n\t23886 - 11904: 0xD8E1,\n\t23888 - 11904: 0xB450,\n\t23889 - 11904: 0xD8E0,\n\t23890 - 11904: 0xD8E5,\n\t23893 - 11904: 0xD8E2,\n\t23894 - 11904: 0x8D62,\n\t23895 - 11904: 0xA0A1,\n\t23897 - 11904: 0xD8E8,\n\t23899 - 11904: 0x9C40,\n\t23902 - 11904: 0xDD53,\n\t23906 - 11904: 0xDD56,\n\t23907 - 11904: 0xDD4E,\n\t23909 - 11904: 0xDD50,\n\t23911 - 11904: 0xDD55,\n\t23912 - 11904: 0xDD54,\n\t23913 - 11904: 0xB743,\n\t23915 - 11904: 0xD8DB,\n\t23916 - 11904: 0xDD52,\n\t23919 - 11904: 0xB744,\n\t23920 - 11904: 0x98AD,\n\t23921 - 11904: 0xDD4D,\n\t23922 - 11904: 0xDD51,\n\t23924 - 11904: 0x9EEA,\n\t23927 - 11904: 0xE1A9,\n\t23928 - 11904: 0x8CEC,\n\t23929 - 11904: 0xE1B0,\n\t23930 - 11904: 0xE1A7,\n\t23931 - 11904: 0x8CD4,\n\t23932 - 11904: 0xE1AE,\n\t23933 - 11904: 0xE1A5,\n\t23934 - 11904: 0xE1AD,\n\t23935 - 11904: 0xE1B1,\n\t23936 - 11904: 0xE1A4,\n\t23937 - 11904: 0xE1A8,\n\t23938 - 11904: 0xE1A3,\n\t23940 - 11904: 0xB9F1,\n\t23941 - 11904: 0x9CEB,\n\t23942 - 11904: 0xE1A6,\n\t23943 - 11904: 0xB9F2,\n\t23944 - 11904: 0xE1AC,\n\t23945 - 11904: 0xE1AB,\n\t23946 - 11904: 0xE1AA,\n\t23947 - 11904: 0xFBE0,\n\t23949 - 11904: 0xE1AF,\n\t23950 - 11904: 0x9F51,\n\t23954 - 11904: 0xE565,\n\t23955 - 11904: 0xE567,\n\t23956 - 11904: 0xBC6B,\n\t23957 - 11904: 0xE568,\n\t23959 - 11904: 0xE563,\n\t23961 - 11904: 0xE562,\n\t23962 - 11904: 0xE56C,\n\t23964 - 11904: 0xE56A,\n\t23965 - 11904: 0xBC6A,\n\t23966 - 11904: 0xE56D,\n\t23967 - 11904: 0xE564,\n\t23968 - 11904: 0xE569,\n\t23969 - 11904: 0xE56B,\n\t23970 - 11904: 0xE566,\n\t23972 - 11904: 0x8D65,\n\t23975 - 11904: 0xE961,\n\t23976 - 11904: 0xE966,\n\t23977 - 11904: 0xE960,\n\t23978 - 11904: 0xE965,\n\t23979 - 11904: 0x9CF1,\n\t23980 - 11904: 0xE95E,\n\t23981 - 11904: 0xE968,\n\t23982 - 11904: 0xE964,\n\t23983 - 11904: 0xE969,\n\t23984 - 11904: 0xE963,\n\t23985 - 11904: 0xE95F,\n\t23986 - 11904: 0xE967,\n\t23988 - 11904: 0xE96A,\n\t23989 - 11904: 0xE962,\n\t23990 - 11904: 0xFC58,\n\t23991 - 11904: 0xECDA,\n\t23992 - 11904: 0xC0AF,\n\t23993 - 11904: 0x8D66,\n\t23994 - 11904: 0xC0AD,\n\t23996 - 11904: 0xC0AC,\n\t23997 - 11904: 0xC0AE,\n\t24000 - 11904: 0xEFC4,\n\t24001 - 11904: 0x9654,\n\t24002 - 11904: 0xF172,\n\t24003 - 11904: 0xF1FD,\n\t24006 - 11904: 0xF444,\n\t24007 - 11904: 0xF445,\n\t24009 - 11904: 0xC460,\n\t24011 - 11904: 0xF5C9,\n\t24013 - 11904: 0xC4DE,\n\t24015 - 11904: 0xF5CA,\n\t24017 - 11904: 0xF6DE,\n\t24018 - 11904: 0xC572,\n\t24020 - 11904: 0xC571,\n\t24021 - 11904: 0xF6DD,\n\t24022 - 11904: 0xC5C9,\n\t24023 - 11904: 0xFBE8,\n\t24024 - 11904: 0xF7D6,\n\t24027 - 11904: 0xC6CC,\n\t24029 - 11904: 0xA474,\n\t24030 - 11904: 0xA67B,\n\t24031 - 11904: 0xC9DA,\n\t24032 - 11904: 0xCACA,\n\t24033 - 11904: 0xA8B5,\n\t24034 - 11904: 0xB15F,\n\t24037 - 11904: 0xA475,\n\t24038 - 11904: 0xA5AA,\n\t24039 - 11904: 0xA5A9,\n\t24040 - 11904: 0xA5A8,\n\t24043 - 11904: 0xA7C5,\n\t24046 - 11904: 0xAE74,\n\t24048 - 11904: 0xDD57,\n\t24049 - 11904: 0xA476,\n\t24050 - 11904: 0xA477,\n\t24051 - 11904: 0xA478,\n\t24052 - 11904: 0xA4DA,\n\t24053 - 11904: 0x9FCE,\n\t24055 - 11904: 0xABD1,\n\t24057 - 11904: 0xCEAF,\n\t24061 - 11904: 0xB453,\n\t24062 - 11904: 0xA479,\n\t24063 - 11904: 0xC95D,\n\t24066 - 11904: 0xA5AB,\n\t24067 - 11904: 0xA5AC,\n\t24068 - 11904: 0xC978,\n\t24070 - 11904: 0xA67C,\n\t24073 - 11904: 0xFBFC,\n\t24074 - 11904: 0xCACB,\n\t24075 - 11904: 0x9AE4,\n\t24076 - 11904: 0xA7C6,\n\t24078 - 11904: 0xCACC,\n\t24081 - 11904: 0xA9AE,\n\t24082 - 11904: 0x9F75,\n\t24084 - 11904: 0xCC6E,\n\t24085 - 11904: 0xA9AC,\n\t24086 - 11904: 0xA9AB,\n\t24087 - 11904: 0xCC6D,\n\t24088 - 11904: 0xA9A9,\n\t24089 - 11904: 0xCC6F,\n\t24090 - 11904: 0xA9AA,\n\t24091 - 11904: 0xA9AD,\n\t24093 - 11904: 0xABD2,\n\t24095 - 11904: 0xABD4,\n\t24096 - 11904: 0xCEB3,\n\t24097 - 11904: 0xCEB0,\n\t24098 - 11904: 0xCEB1,\n\t24099 - 11904: 0xCEB2,\n\t24100 - 11904: 0xCEB4,\n\t24101 - 11904: 0xABD3,\n\t24104 - 11904: 0xD174,\n\t24105 - 11904: 0xD173,\n\t24107 - 11904: 0xAE76,\n\t24109 - 11904: 0xAE75,\n\t24110 - 11904: 0xFBF1,\n\t24115 - 11904: 0xB162,\n\t24116 - 11904: 0xD546,\n\t24118 - 11904: 0xB161,\n\t24119 - 11904: 0xB163,\n\t24120 - 11904: 0xB160,\n\t24125 - 11904: 0xB455,\n\t24126 - 11904: 0xD545,\n\t24128 - 11904: 0xB456,\n\t24129 - 11904: 0xD8F3,\n\t24130 - 11904: 0x8D69,\n\t24131 - 11904: 0xB457,\n\t24132 - 11904: 0xD8F2,\n\t24133 - 11904: 0xB454,\n\t24136 - 11904: 0x934F,\n\t24138 - 11904: 0xDD5A,\n\t24139 - 11904: 0xDD5C,\n\t24140 - 11904: 0xB745,\n\t24141 - 11904: 0xDD5B,\n\t24142 - 11904: 0xDD59,\n\t24143 - 11904: 0xDD58,\n\t24147 - 11904: 0xE1B4,\n\t24148 - 11904: 0xB9F7,\n\t24149 - 11904: 0xB9F5,\n\t24151 - 11904: 0xB9F6,\n\t24152 - 11904: 0xE1B2,\n\t24153 - 11904: 0xE1B3,\n\t24155 - 11904: 0xB9F3,\n\t24156 - 11904: 0xE571,\n\t24157 - 11904: 0xE56F,\n\t24158 - 11904: 0x934E,\n\t24159 - 11904: 0xBC6D,\n\t24160 - 11904: 0xE570,\n\t24161 - 11904: 0xBC6E,\n\t24162 - 11904: 0xBC6C,\n\t24163 - 11904: 0xB9F4,\n\t24166 - 11904: 0xE96D,\n\t24167 - 11904: 0xE96B,\n\t24168 - 11904: 0xE96C,\n\t24169 - 11904: 0xE56E,\n\t24170 - 11904: 0xECDC,\n\t24171 - 11904: 0xC0B0,\n\t24172 - 11904: 0xECDB,\n\t24173 - 11904: 0xEFC5,\n\t24174 - 11904: 0xEFC6,\n\t24175 - 11904: 0xE96E,\n\t24176 - 11904: 0xF1FE,\n\t24178 - 11904: 0xA47A,\n\t24179 - 11904: 0xA5AD,\n\t24180 - 11904: 0xA67E,\n\t24181 - 11904: 0xFBF3,\n\t24182 - 11904: 0xA67D,\n\t24184 - 11904: 0xA9AF,\n\t24185 - 11904: 0xB746,\n\t24186 - 11904: 0xFBF4,\n\t24187 - 11904: 0xA4DB,\n\t24188 - 11904: 0xA5AE,\n\t24189 - 11904: 0xABD5,\n\t24190 - 11904: 0xB458,\n\t24191 - 11904: 0xC6CE,\n\t24192 - 11904: 0xC979,\n\t24194 - 11904: 0xC97A,\n\t24195 - 11904: 0xFBC3,\n\t24196 - 11904: 0xC9DC,\n\t24198 - 11904: 0x8965,\n\t24199 - 11904: 0xA7C8,\n\t24200 - 11904: 0xCAD0,\n\t24201 - 11904: 0xCACE,\n\t24202 - 11904: 0xA7C9,\n\t24203 - 11904: 0xCACD,\n\t24204 - 11904: 0xCACF,\n\t24205 - 11904: 0xCAD1,\n\t24207 - 11904: 0xA7C7,\n\t24210 - 11904: 0x8C7A,\n\t24213 - 11904: 0xA9B3,\n\t24214 - 11904: 0xA9B4,\n\t24215 - 11904: 0xA9B1,\n\t24217 - 11904: 0x8C7B,\n\t24218 - 11904: 0xA9B0,\n\t24219 - 11904: 0xCEB8,\n\t24220 - 11904: 0xA9B2,\n\t24224 - 11904: 0xABD6,\n\t24226 - 11904: 0xCEB7,\n\t24227 - 11904: 0xCEB9,\n\t24228 - 11904: 0xCEB6,\n\t24229 - 11904: 0xCEBA,\n\t24230 - 11904: 0xABD7,\n\t24231 - 11904: 0xAE79,\n\t24232 - 11904: 0xD175,\n\t24234 - 11904: 0xD177,\n\t24235 - 11904: 0xAE77,\n\t24236 - 11904: 0xD178,\n\t24237 - 11904: 0xAE78,\n\t24238 - 11904: 0xD176,\n\t24240 - 11904: 0xCEB5,\n\t24241 - 11904: 0xD547,\n\t24242 - 11904: 0xD54A,\n\t24243 - 11904: 0xD54B,\n\t24244 - 11904: 0xD548,\n\t24245 - 11904: 0xB167,\n\t24246 - 11904: 0xB166,\n\t24247 - 11904: 0xB164,\n\t24248 - 11904: 0xB165,\n\t24249 - 11904: 0xD549,\n\t24253 - 11904: 0x8D6A,\n\t24254 - 11904: 0xB168,\n\t24257 - 11904: 0xB45A,\n\t24258 - 11904: 0xB45B,\n\t24260 - 11904: 0xB45C,\n\t24261 - 11904: 0xDD5D,\n\t24262 - 11904: 0xDD5F,\n\t24263 - 11904: 0xDD61,\n\t24264 - 11904: 0xB748,\n\t24265 - 11904: 0xB747,\n\t24266 - 11904: 0xB459,\n\t24267 - 11904: 0xDD60,\n\t24268 - 11904: 0xDD5E,\n\t24269 - 11904: 0x9353,\n\t24270 - 11904: 0xE1B8,\n\t24272 - 11904: 0xFBF9,\n\t24273 - 11904: 0xE1B6,\n\t24274 - 11904: 0xE1BC,\n\t24275 - 11904: 0xB9F8,\n\t24276 - 11904: 0xE1BD,\n\t24277 - 11904: 0xE1BA,\n\t24278 - 11904: 0xB9F9,\n\t24279 - 11904: 0xE1B7,\n\t24280 - 11904: 0xE1B5,\n\t24281 - 11904: 0xE1BB,\n\t24282 - 11904: 0xBC70,\n\t24283 - 11904: 0xE573,\n\t24284 - 11904: 0xE1B9,\n\t24285 - 11904: 0xBC72,\n\t24286 - 11904: 0xE574,\n\t24287 - 11904: 0xBC71,\n\t24288 - 11904: 0xBC74,\n\t24289 - 11904: 0xE575,\n\t24290 - 11904: 0xBC6F,\n\t24291 - 11904: 0xBC73,\n\t24293 - 11904: 0xE973,\n\t24294 - 11904: 0xE971,\n\t24295 - 11904: 0xE970,\n\t24296 - 11904: 0xE972,\n\t24297 - 11904: 0xE96F,\n\t24300 - 11904: 0xC366,\n\t24302 - 11904: 0xF446,\n\t24303 - 11904: 0xF447,\n\t24305 - 11904: 0xF5CB,\n\t24306 - 11904: 0xF6DF,\n\t24307 - 11904: 0xC655,\n\t24308 - 11904: 0xFBFD,\n\t24310 - 11904: 0xA9B5,\n\t24311 - 11904: 0xA7CA,\n\t24312 - 11904: 0x9059,\n\t24313 - 11904: 0xFC40,\n\t24314 - 11904: 0xABD8,\n\t24315 - 11904: 0xFC41,\n\t24316 - 11904: 0xFC43,\n\t24318 - 11904: 0xA47B,\n\t24319 - 11904: 0xA4DC,\n\t24321 - 11904: 0xA5AF,\n\t24322 - 11904: 0xC9DD,\n\t24324 - 11904: 0xA7CB,\n\t24325 - 11904: 0xCAD2,\n\t24327 - 11904: 0xCEBB,\n\t24328 - 11904: 0xABD9,\n\t24330 - 11904: 0xB9FA,\n\t24331 - 11904: 0xA47C,\n\t24332 - 11904: 0x9FD8,\n\t24333 - 11904: 0xFC46,\n\t24334 - 11904: 0x9362,\n\t24335 - 11904: 0xA6A1,\n\t24338 - 11904: 0xB749,\n\t24339 - 11904: 0xA47D,\n\t24340 - 11904: 0xA4DD,\n\t24341 - 11904: 0xA4DE,\n\t24343 - 11904: 0xA5B1,\n\t24344 - 11904: 0xA5B0,\n\t24346 - 11904: 0xC9DE,\n\t24347 - 11904: 0xA6A2,\n\t24349 - 11904: 0xCAD3,\n\t24351 - 11904: 0xA7CC,\n\t24354 - 11904: 0xCC71,\n\t24355 - 11904: 0xCC72,\n\t24356 - 11904: 0xCC73,\n\t24357 - 11904: 0x8D6B,\n\t24358 - 11904: 0xA9B6,\n\t24359 - 11904: 0xA9B7,\n\t24360 - 11904: 0xCC70,\n\t24361 - 11904: 0xA9B8,\n\t24365 - 11904: 0xABDA,\n\t24366 - 11904: 0xCEBC,\n\t24368 - 11904: 0xD17A,\n\t24369 - 11904: 0xAE7A,\n\t24371 - 11904: 0xD179,\n\t24373 - 11904: 0xB169,\n\t24374 - 11904: 0xD54C,\n\t24375 - 11904: 0xB16A,\n\t24376 - 11904: 0xD54D,\n\t24378 - 11904: 0xFC4C,\n\t24379 - 11904: 0x8CFE,\n\t24380 - 11904: 0xB45D,\n\t24384 - 11904: 0xDD62,\n\t24387 - 11904: 0xE1BF,\n\t24388 - 11904: 0xE1BE,\n\t24390 - 11904: 0xB9FB,\n\t24392 - 11904: 0xBC75,\n\t24393 - 11904: 0xE576,\n\t24394 - 11904: 0xBECA,\n\t24395 - 11904: 0xE974,\n\t24396 - 11904: 0xC0B1,\n\t24397 - 11904: 0x95B8,\n\t24398 - 11904: 0xC573,\n\t24399 - 11904: 0xF7D8,\n\t24400 - 11904: 0xC6D0,\n\t24401 - 11904: 0x8BCA,\n\t24404 - 11904: 0xCC74,\n\t24406 - 11904: 0xCEBD,\n\t24407 - 11904: 0xB16B,\n\t24408 - 11904: 0xFC4F,\n\t24409 - 11904: 0xB74A,\n\t24412 - 11904: 0x987A,\n\t24413 - 11904: 0xC255,\n\t24417 - 11904: 0xC6D1,\n\t24418 - 11904: 0xA7CE,\n\t24419 - 11904: 0xFC51,\n\t24420 - 11904: 0xA7CD,\n\t24421 - 11904: 0xABDB,\n\t24423 - 11904: 0xD17B,\n\t24425 - 11904: 0xB16D,\n\t24426 - 11904: 0xB343,\n\t24427 - 11904: 0xB16E,\n\t24428 - 11904: 0xB16C,\n\t24429 - 11904: 0xB45E,\n\t24431 - 11904: 0xE1C0,\n\t24432 - 11904: 0xB9FC,\n\t24433 - 11904: 0xBC76,\n\t24434 - 11904: 0xFC54,\n\t24435 - 11904: 0xC94C,\n\t24436 - 11904: 0xC9DF,\n\t24438 - 11904: 0xCAD5,\n\t24439 - 11904: 0xA7CF,\n\t24440 - 11904: 0xCAD4,\n\t24441 - 11904: 0xA7D0,\n\t24443 - 11904: 0xFAAF,\n\t24444 - 11904: 0xA9BC,\n\t24445 - 11904: 0xCC77,\n\t24446 - 11904: 0xCC76,\n\t24447 - 11904: 0xA9BB,\n\t24448 - 11904: 0xA9B9,\n\t24449 - 11904: 0xA9BA,\n\t24450 - 11904: 0xCC75,\n\t24451 - 11904: 0x8D6C,\n\t24453 - 11904: 0xABDD,\n\t24454 - 11904: 0xCEBE,\n\t24455 - 11904: 0xABE0,\n\t24456 - 11904: 0xABDC,\n\t24457 - 11904: 0xABE2,\n\t24458 - 11904: 0xABDE,\n\t24459 - 11904: 0xABDF,\n\t24460 - 11904: 0xABE1,\n\t24464 - 11904: 0xAE7D,\n\t24465 - 11904: 0xAE7C,\n\t24466 - 11904: 0xAE7B,\n\t24470 - 11904: 0xD54F,\n\t24471 - 11904: 0xB16F,\n\t24472 - 11904: 0xB172,\n\t24473 - 11904: 0xB170,\n\t24475 - 11904: 0xD54E,\n\t24476 - 11904: 0xB175,\n\t24478 - 11904: 0xB171,\n\t24479 - 11904: 0xD550,\n\t24480 - 11904: 0xB174,\n\t24481 - 11904: 0xB173,\n\t24484 - 11904: 0xFA61,\n\t24485 - 11904: 0xD8F6,\n\t24486 - 11904: 0xD8F5,\n\t24487 - 11904: 0xFC57,\n\t24488 - 11904: 0xB461,\n\t24489 - 11904: 0xB45F,\n\t24490 - 11904: 0xB460,\n\t24491 - 11904: 0xD8F7,\n\t24492 - 11904: 0xB74B,\n\t24493 - 11904: 0xDD64,\n\t24494 - 11904: 0xB74C,\n\t24495 - 11904: 0xDD63,\n\t24497 - 11904: 0x9B70,\n\t24498 - 11904: 0xE577,\n\t24501 - 11904: 0xBC78,\n\t24502 - 11904: 0xE1C1,\n\t24503 - 11904: 0xBC77,\n\t24505 - 11904: 0xB9FD,\n\t24506 - 11904: 0xA051,\n\t24507 - 11904: 0xECDE,\n\t24508 - 11904: 0xE975,\n\t24509 - 11904: 0xC0B2,\n\t24510 - 11904: 0xECDD,\n\t24511 - 11904: 0xF240,\n\t24512 - 11904: 0xF448,\n\t24513 - 11904: 0xF449,\n\t24514 - 11904: 0x8C7C,\n\t24515 - 11904: 0xA4DF,\n\t24516 - 11904: 0x8BCB,\n\t24517 - 11904: 0xA5B2,\n\t24521 - 11904: 0xC97B,\n\t24524 - 11904: 0xA7D2,\n\t24525 - 11904: 0xA7D4,\n\t24527 - 11904: 0xC9E2,\n\t24528 - 11904: 0xCAD8,\n\t24529 - 11904: 0xCAD7,\n\t24530 - 11904: 0xCAD6,\n\t24532 - 11904: 0xC9E1,\n\t24533 - 11904: 0xC9E0,\n\t24534 - 11904: 0xA6A4,\n\t24535 - 11904: 0xA7D3,\n\t24536 - 11904: 0xA7D1,\n\t24537 - 11904: 0xA6A3,\n\t24539 - 11904: 0x936E,\n\t24541 - 11904: 0xA9BD,\n\t24542 - 11904: 0xCC78,\n\t24543 - 11904: 0xFCD5,\n\t24544 - 11904: 0xA9BE,\n\t24545 - 11904: 0xCADD,\n\t24547 - 11904: 0xCADF,\n\t24548 - 11904: 0xCADE,\n\t24549 - 11904: 0xCC79,\n\t24552 - 11904: 0xCADA,\n\t24554 - 11904: 0xA7D8,\n\t24555 - 11904: 0xA7D6,\n\t24557 - 11904: 0xCAD9,\n\t24558 - 11904: 0xCADB,\n\t24559 - 11904: 0xCAE1,\n\t24561 - 11904: 0xA7D5,\n\t24563 - 11904: 0xCADC,\n\t24564 - 11904: 0xCAE5,\n\t24565 - 11904: 0xA9C0,\n\t24567 - 11904: 0xCAE2,\n\t24568 - 11904: 0xA7D7,\n\t24570 - 11904: 0xCAE0,\n\t24571 - 11904: 0xCAE3,\n\t24573 - 11904: 0xA9BF,\n\t24575 - 11904: 0xA9C1,\n\t24576 - 11904: 0xCAE4,\n\t24585 - 11904: 0xCCAF,\n\t24586 - 11904: 0xCCA2,\n\t24587 - 11904: 0xCC7E,\n\t24588 - 11904: 0xCCAE,\n\t24589 - 11904: 0xCCA9,\n\t24590 - 11904: 0xABE7,\n\t24591 - 11904: 0xA9C2,\n\t24592 - 11904: 0xCCAA,\n\t24593 - 11904: 0xCCAD,\n\t24594 - 11904: 0xABE3,\n\t24595 - 11904: 0xCCAC,\n\t24596 - 11904: 0xA9C3,\n\t24597 - 11904: 0xA9C8,\n\t24598 - 11904: 0xA9C6,\n\t24599 - 11904: 0xCCA3,\n\t24601 - 11904: 0xCC7C,\n\t24602 - 11904: 0xCCA5,\n\t24603 - 11904: 0xA9CD,\n\t24604 - 11904: 0xCCB0,\n\t24605 - 11904: 0xABE4,\n\t24606 - 11904: 0xCCA6,\n\t24608 - 11904: 0xABE5,\n\t24609 - 11904: 0xA9C9,\n\t24610 - 11904: 0xCCA8,\n\t24611 - 11904: 0xFCA9,\n\t24612 - 11904: 0xCECD,\n\t24613 - 11904: 0xABE6,\n\t24614 - 11904: 0xCC7B,\n\t24615 - 11904: 0xA9CA,\n\t24616 - 11904: 0xABE8,\n\t24617 - 11904: 0xA9CB,\n\t24618 - 11904: 0xA9C7,\n\t24619 - 11904: 0xA9CC,\n\t24620 - 11904: 0xCCA7,\n\t24621 - 11904: 0xCC7A,\n\t24622 - 11904: 0xCCAB,\n\t24623 - 11904: 0xA9C4,\n\t24625 - 11904: 0xFC61,\n\t24626 - 11904: 0xCC7D,\n\t24627 - 11904: 0xCCA4,\n\t24628 - 11904: 0xCCA1,\n\t24629 - 11904: 0xA9C5,\n\t24631 - 11904: 0xCEBF,\n\t24633 - 11904: 0xCEC0,\n\t24635 - 11904: 0x8966,\n\t24640 - 11904: 0xCECA,\n\t24641 - 11904: 0xD1A1,\n\t24642 - 11904: 0xCECB,\n\t24643 - 11904: 0xABEE,\n\t24644 - 11904: 0xCECE,\n\t24645 - 11904: 0xCEC4,\n\t24646 - 11904: 0xABED,\n\t24647 - 11904: 0xCEC6,\n\t24649 - 11904: 0xCEC7,\n\t24650 - 11904: 0xFACB,\n\t24652 - 11904: 0xCEC9,\n\t24653 - 11904: 0xABE9,\n\t24656 - 11904: 0xAEA3,\n\t24658 - 11904: 0xF9DA,\n\t24659 - 11904: 0xCEC5,\n\t24660 - 11904: 0xCEC1,\n\t24661 - 11904: 0xAEA4,\n\t24664 - 11904: 0xCECF,\n\t24665 - 11904: 0xAE7E,\n\t24666 - 11904: 0xD17D,\n\t24667 - 11904: 0xCEC8,\n\t24669 - 11904: 0xD17C,\n\t24670 - 11904: 0xCEC3,\n\t24671 - 11904: 0xCECC,\n\t24674 - 11904: 0xABEC,\n\t24675 - 11904: 0xAEA1,\n\t24676 - 11904: 0xABF2,\n\t24677 - 11904: 0xAEA2,\n\t24678 - 11904: 0xCED0,\n\t24679 - 11904: 0xD17E,\n\t24680 - 11904: 0xABEB,\n\t24681 - 11904: 0xAEA6,\n\t24682 - 11904: 0xABF1,\n\t24683 - 11904: 0xABF0,\n\t24684 - 11904: 0xABEF,\n\t24685 - 11904: 0xAEA5,\n\t24686 - 11904: 0xCED1,\n\t24687 - 11904: 0xAEA7,\n\t24688 - 11904: 0xABEA,\n\t24690 - 11904: 0xCEC2,\n\t24693 - 11904: 0x937A,\n\t24695 - 11904: 0xA0E0,\n\t24702 - 11904: 0x936B,\n\t24703 - 11904: 0xB176,\n\t24704 - 11904: 0xD1A4,\n\t24705 - 11904: 0xD1A6,\n\t24707 - 11904: 0xD1A8,\n\t24708 - 11904: 0xAEA8,\n\t24709 - 11904: 0xAEAE,\n\t24710 - 11904: 0xD553,\n\t24711 - 11904: 0xD1AC,\n\t24712 - 11904: 0xD1A3,\n\t24713 - 11904: 0xB178,\n\t24714 - 11904: 0xD551,\n\t24716 - 11904: 0xAEAD,\n\t24717 - 11904: 0xAEAB,\n\t24718 - 11904: 0xD1AE,\n\t24720 - 11904: 0xD552,\n\t24722 - 11904: 0xD1A5,\n\t24724 - 11904: 0xAEAC,\n\t24725 - 11904: 0xD1A9,\n\t24726 - 11904: 0xAEAF,\n\t24727 - 11904: 0xD1AB,\n\t24730 - 11904: 0xAEAA,\n\t24731 - 11904: 0xD1AA,\n\t24732 - 11904: 0xD1AD,\n\t24733 - 11904: 0xD1A7,\n\t24734 - 11904: 0xFC6B,\n\t24735 - 11904: 0xAEA9,\n\t24736 - 11904: 0xB179,\n\t24738 - 11904: 0xD1A2,\n\t24739 - 11904: 0xB177,\n\t24740 - 11904: 0xFC6C,\n\t24743 - 11904: 0x9468,\n\t24744 - 11904: 0xB17A,\n\t24752 - 11904: 0xD555,\n\t24753 - 11904: 0xD55E,\n\t24754 - 11904: 0xB464,\n\t24755 - 11904: 0xFC6D,\n\t24756 - 11904: 0xB17C,\n\t24757 - 11904: 0xB1A3,\n\t24758 - 11904: 0xB465,\n\t24759 - 11904: 0xD560,\n\t24760 - 11904: 0xB1AA,\n\t24761 - 11904: 0xD8F9,\n\t24762 - 11904: 0xD556,\n\t24763 - 11904: 0xB1A2,\n\t24764 - 11904: 0xB1A5,\n\t24765 - 11904: 0xB17E,\n\t24766 - 11904: 0xD554,\n\t24767 - 11904: 0xD562,\n\t24768 - 11904: 0xD565,\n\t24769 - 11904: 0xD949,\n\t24771 - 11904: 0xD563,\n\t24772 - 11904: 0xD8FD,\n\t24773 - 11904: 0xB1A1,\n\t24774 - 11904: 0xB1A8,\n\t24775 - 11904: 0xB1AC,\n\t24776 - 11904: 0xD55D,\n\t24777 - 11904: 0xD8F8,\n\t24778 - 11904: 0xD561,\n\t24779 - 11904: 0xB17B,\n\t24780 - 11904: 0xD8FA,\n\t24781 - 11904: 0xD564,\n\t24782 - 11904: 0xD8FC,\n\t24783 - 11904: 0xD559,\n\t24785 - 11904: 0xB462,\n\t24787 - 11904: 0xD557,\n\t24788 - 11904: 0xD558,\n\t24789 - 11904: 0xB1A7,\n\t24791 - 11904: 0x8D71,\n\t24792 - 11904: 0xB1A6,\n\t24793 - 11904: 0xD55B,\n\t24794 - 11904: 0xB1AB,\n\t24795 - 11904: 0xD55F,\n\t24796 - 11904: 0xB1A4,\n\t24797 - 11904: 0xD55C,\n\t24798 - 11904: 0xFD64,\n\t24799 - 11904: 0xB1A9,\n\t24800 - 11904: 0xB466,\n\t24801 - 11904: 0xB463,\n\t24802 - 11904: 0xD8FB,\n\t24803 - 11904: 0x99BA,\n\t24804 - 11904: 0xD55A,\n\t24806 - 11904: 0xB17D,\n\t24807 - 11904: 0x9AD0,\n\t24808 - 11904: 0x9A61,\n\t24809 - 11904: 0xA0E5,\n\t24816 - 11904: 0xB46B,\n\t24817 - 11904: 0xB46F,\n\t24818 - 11904: 0xD940,\n\t24819 - 11904: 0xB751,\n\t24820 - 11904: 0xB46D,\n\t24821 - 11904: 0xD944,\n\t24822 - 11904: 0xB471,\n\t24823 - 11904: 0xDD65,\n\t24824 - 11904: 0xD946,\n\t24825 - 11904: 0xB753,\n\t24826 - 11904: 0xB469,\n\t24827 - 11904: 0xB46C,\n\t24828 - 11904: 0xD947,\n\t24829 - 11904: 0xA05B,\n\t24830 - 11904: 0xD948,\n\t24831 - 11904: 0xD94E,\n\t24832 - 11904: 0xB473,\n\t24833 - 11904: 0xB754,\n\t24835 - 11904: 0xD94A,\n\t24836 - 11904: 0xD94F,\n\t24837 - 11904: 0xD943,\n\t24838 - 11904: 0xB75E,\n\t24839 - 11904: 0x96AC,\n\t24840 - 11904: 0xB755,\n\t24841 - 11904: 0xB472,\n\t24842 - 11904: 0xD941,\n\t24843 - 11904: 0xD950,\n\t24844 - 11904: 0x9740,\n\t24845 - 11904: 0xB75D,\n\t24846 - 11904: 0xB470,\n\t24847 - 11904: 0xB74E,\n\t24848 - 11904: 0xD94D,\n\t24850 - 11904: 0xB474,\n\t24851 - 11904: 0xD945,\n\t24852 - 11904: 0xD8FE,\n\t24853 - 11904: 0xB46A,\n\t24854 - 11904: 0xD942,\n\t24856 - 11904: 0xD94B,\n\t24857 - 11904: 0x9EF1,\n\t24858 - 11904: 0xB74D,\n\t24859 - 11904: 0xB752,\n\t24860 - 11904: 0xB467,\n\t24861 - 11904: 0xD94C,\n\t24863 - 11904: 0xB750,\n\t24866 - 11904: 0x8C4D,\n\t24867 - 11904: 0xB468,\n\t24871 - 11904: 0xB75C,\n\t24872 - 11904: 0xE1C3,\n\t24873 - 11904: 0xDD70,\n\t24875 - 11904: 0xDD68,\n\t24876 - 11904: 0xE1C2,\n\t24878 - 11904: 0xDD6C,\n\t24879 - 11904: 0xDD6E,\n\t24880 - 11904: 0x9F7E,\n\t24882 - 11904: 0xDD6B,\n\t24884 - 11904: 0xB75B,\n\t24886 - 11904: 0xDD6A,\n\t24887 - 11904: 0xB75F,\n\t24891 - 11904: 0xE1D2,\n\t24893 - 11904: 0x8D72,\n\t24894 - 11904: 0xB75A,\n\t24895 - 11904: 0xBA40,\n\t24896 - 11904: 0xDD71,\n\t24897 - 11904: 0xE1C4,\n\t24898 - 11904: 0xFC76,\n\t24900 - 11904: 0xB758,\n\t24901 - 11904: 0xDD69,\n\t24902 - 11904: 0xDD6D,\n\t24903 - 11904: 0xB9FE,\n\t24904 - 11904: 0xB74F,\n\t24905 - 11904: 0xDD66,\n\t24906 - 11904: 0xDD67,\n\t24907 - 11904: 0xBA41,\n\t24908 - 11904: 0xB757,\n\t24909 - 11904: 0xB759,\n\t24910 - 11904: 0xB756,\n\t24911 - 11904: 0xDD6F,\n\t24912 - 11904: 0x96A9,\n\t24914 - 11904: 0xE1C8,\n\t24915 - 11904: 0xE1C9,\n\t24916 - 11904: 0xE1CE,\n\t24917 - 11904: 0xBC7D,\n\t24918 - 11904: 0xE1D5,\n\t24920 - 11904: 0xBA47,\n\t24921 - 11904: 0xA06E,\n\t24922 - 11904: 0xBA46,\n\t24923 - 11904: 0xE1D0,\n\t24924 - 11904: 0xFCAA,\n\t24925 - 11904: 0xBC7C,\n\t24926 - 11904: 0xE1C5,\n\t24927 - 11904: 0xBA45,\n\t24928 - 11904: 0xFBCD,\n\t24929 - 11904: 0xE1D4,\n\t24930 - 11904: 0xBA43,\n\t24931 - 11904: 0xBA44,\n\t24932 - 11904: 0xFC74,\n\t24933 - 11904: 0xE1D1,\n\t24934 - 11904: 0xE5AA,\n\t24935 - 11904: 0xBC7A,\n\t24936 - 11904: 0xB46E,\n\t24938 - 11904: 0xE1D3,\n\t24939 - 11904: 0xBCA3,\n\t24940 - 11904: 0xE1CB,\n\t24942 - 11904: 0xBC7B,\n\t24943 - 11904: 0xA074,\n\t24944 - 11904: 0xBCA2,\n\t24945 - 11904: 0xE1C6,\n\t24946 - 11904: 0xE1CA,\n\t24947 - 11904: 0xE1C7,\n\t24948 - 11904: 0xE1CD,\n\t24949 - 11904: 0xBA48,\n\t24950 - 11904: 0xBC79,\n\t24951 - 11904: 0xBA42,\n\t24953 - 11904: 0xE57A,\n\t24954 - 11904: 0xE1CF,\n\t24956 - 11904: 0xBCA1,\n\t24957 - 11904: 0xA071,\n\t24958 - 11904: 0xBCA4,\n\t24960 - 11904: 0xE1CC,\n\t24961 - 11904: 0xFC79,\n\t24962 - 11904: 0xBC7E,\n\t24963 - 11904: 0xE579,\n\t24967 - 11904: 0xFC7C,\n\t24969 - 11904: 0xE57E,\n\t24970 - 11904: 0xBECE,\n\t24971 - 11904: 0xE578,\n\t24972 - 11904: 0xE9A3,\n\t24973 - 11904: 0xE5A9,\n\t24974 - 11904: 0xBCA8,\n\t24976 - 11904: 0xBCA6,\n\t24977 - 11904: 0xBECC,\n\t24978 - 11904: 0xE5A6,\n\t24979 - 11904: 0xE5A2,\n\t24980 - 11904: 0xBCAC,\n\t24981 - 11904: 0x9C50,\n\t24982 - 11904: 0xE978,\n\t24984 - 11904: 0x9379,\n\t24985 - 11904: 0x9378,\n\t24986 - 11904: 0xBCAA,\n\t24987 - 11904: 0xE5A1,\n\t24988 - 11904: 0xA0DD,\n\t24989 - 11904: 0xE976,\n\t24991 - 11904: 0xE5A5,\n\t24993 - 11904: 0xE5A8,\n\t24994 - 11904: 0xE57D,\n\t24996 - 11904: 0xBCAB,\n\t24999 - 11904: 0xBCA5,\n\t25000 - 11904: 0xE977,\n\t25001 - 11904: 0xBECD,\n\t25002 - 11904: 0xE5A7,\n\t25003 - 11904: 0xBCA7,\n\t25004 - 11904: 0xBCA9,\n\t25005 - 11904: 0xE5A4,\n\t25006 - 11904: 0xBCAD,\n\t25007 - 11904: 0xE5A3,\n\t25008 - 11904: 0xE57C,\n\t25009 - 11904: 0xE57B,\n\t25010 - 11904: 0xBECB,\n\t25011 - 11904: 0xE5AB,\n\t25012 - 11904: 0xE97A,\n\t25013 - 11904: 0xECE0,\n\t25014 - 11904: 0xBED0,\n\t25015 - 11904: 0x8D75,\n\t25016 - 11904: 0xE9A2,\n\t25017 - 11904: 0x8D76,\n\t25018 - 11904: 0xE97E,\n\t25020 - 11904: 0xECE1,\n\t25022 - 11904: 0xBED1,\n\t25023 - 11904: 0xE9A1,\n\t25024 - 11904: 0x9374,\n\t25025 - 11904: 0xE97C,\n\t25026 - 11904: 0xC0B4,\n\t25027 - 11904: 0xECDF,\n\t25029 - 11904: 0xE979,\n\t25030 - 11904: 0xE97B,\n\t25031 - 11904: 0xC0B5,\n\t25032 - 11904: 0xBED3,\n\t25033 - 11904: 0xC0B3,\n\t25034 - 11904: 0xBED2,\n\t25035 - 11904: 0xC0B7,\n\t25036 - 11904: 0xE97D,\n\t25037 - 11904: 0xBECF,\n\t25039 - 11904: 0x8D77,\n\t25040 - 11904: 0xFCA5,\n\t25043 - 11904: 0xFCA2,\n\t25046 - 11904: 0xEFCF,\n\t25048 - 11904: 0xEFC7,\n\t25050 - 11904: 0x90C3,\n\t25054 - 11904: 0xECE7,\n\t25055 - 11904: 0xEFC8,\n\t25056 - 11904: 0xECE3,\n\t25058 - 11904: 0xA079,\n\t25059 - 11904: 0xC256,\n\t25060 - 11904: 0xECE5,\n\t25061 - 11904: 0xECE4,\n\t25062 - 11904: 0xC0B6,\n\t25063 - 11904: 0xECE2,\n\t25064 - 11904: 0xECE6,\n\t25065 - 11904: 0xEFD0,\n\t25066 - 11904: 0xEFCC,\n\t25067 - 11904: 0xEFCE,\n\t25069 - 11904: 0xEFC9,\n\t25070 - 11904: 0xEFCA,\n\t25072 - 11904: 0xEFCD,\n\t25073 - 11904: 0xEFCB,\n\t25074 - 11904: 0xC367,\n\t25077 - 11904: 0xC36A,\n\t25078 - 11904: 0xC369,\n\t25079 - 11904: 0xC368,\n\t25080 - 11904: 0xC461,\n\t25081 - 11904: 0xF44A,\n\t25082 - 11904: 0xC462,\n\t25083 - 11904: 0xF241,\n\t25084 - 11904: 0xC4DF,\n\t25085 - 11904: 0xF5CC,\n\t25086 - 11904: 0xC4E0,\n\t25087 - 11904: 0xC574,\n\t25088 - 11904: 0xC5CA,\n\t25089 - 11904: 0xF7D9,\n\t25091 - 11904: 0xF7DA,\n\t25092 - 11904: 0xF7DB,\n\t25095 - 11904: 0xF9BA,\n\t25096 - 11904: 0xA4E0,\n\t25097 - 11904: 0xC97C,\n\t25098 - 11904: 0xA5B3,\n\t25100 - 11904: 0xA6A6,\n\t25101 - 11904: 0xA6A7,\n\t25102 - 11904: 0xA6A5,\n\t25104 - 11904: 0xA6A8,\n\t25105 - 11904: 0xA7DA,\n\t25106 - 11904: 0xA7D9,\n\t25108 - 11904: 0xCCB1,\n\t25109 - 11904: 0xA9CF,\n\t25110 - 11904: 0xA9CE,\n\t25113 - 11904: 0xD1AF,\n\t25114 - 11904: 0xB1AD,\n\t25115 - 11904: 0xB1AE,\n\t25119 - 11904: 0xB475,\n\t25120 - 11904: 0xDD72,\n\t25121 - 11904: 0xB760,\n\t25122 - 11904: 0xB761,\n\t25123 - 11904: 0xDD74,\n\t25124 - 11904: 0xDD76,\n\t25125 - 11904: 0xDD75,\n\t25127 - 11904: 0xE1D7,\n\t25129 - 11904: 0xE1D6,\n\t25130 - 11904: 0xBA49,\n\t25131 - 11904: 0xE1D8,\n\t25132 - 11904: 0x8D79,\n\t25133 - 11904: 0xE5AC,\n\t25134 - 11904: 0xBCAE,\n\t25136 - 11904: 0xBED4,\n\t25138 - 11904: 0xC0B8,\n\t25139 - 11904: 0xC257,\n\t25140 - 11904: 0xC0B9,\n\t25142 - 11904: 0xA4E1,\n\t25143 - 11904: 0x8BFC,\n\t25145 - 11904: 0xA076,\n\t25146 - 11904: 0xCAE6,\n\t25149 - 11904: 0xCCB2,\n\t25150 - 11904: 0xA9D1,\n\t25151 - 11904: 0xA9D0,\n\t25152 - 11904: 0xA9D2,\n\t25153 - 11904: 0xABF3,\n\t25154 - 11904: 0xCED2,\n\t25155 - 11904: 0xCED3,\n\t25158 - 11904: 0xD1B0,\n\t25159 - 11904: 0xAEB0,\n\t25160 - 11904: 0xB1AF,\n\t25161 - 11904: 0xB476,\n\t25162 - 11904: 0xD951,\n\t25163 - 11904: 0xA4E2,\n\t25164 - 11904: 0x8BCD,\n\t25165 - 11904: 0xA47E,\n\t25166 - 11904: 0xA4E3,\n\t25168 - 11904: 0xC97D,\n\t25169 - 11904: 0xA5B7,\n\t25170 - 11904: 0xA5B6,\n\t25171 - 11904: 0xA5B4,\n\t25172 - 11904: 0xA5B5,\n\t25176 - 11904: 0xA6AB,\n\t25177 - 11904: 0xC9E9,\n\t25178 - 11904: 0xC9EB,\n\t25179 - 11904: 0xA6AA,\n\t25180 - 11904: 0xC9E3,\n\t25182 - 11904: 0xC9E4,\n\t25184 - 11904: 0xC9EA,\n\t25185 - 11904: 0xC9E6,\n\t25186 - 11904: 0xC9E8,\n\t25187 - 11904: 0xA6A9,\n\t25188 - 11904: 0xC9E5,\n\t25189 - 11904: 0xC9EC,\n\t25190 - 11904: 0xC9E7,\n\t25192 - 11904: 0x9F5A,\n\t25197 - 11904: 0xA7E1,\n\t25198 - 11904: 0xA7EA,\n\t25199 - 11904: 0xA7E8,\n\t25200 - 11904: 0xCAF0,\n\t25201 - 11904: 0xCAED,\n\t25202 - 11904: 0xCAF5,\n\t25203 - 11904: 0xA7E6,\n\t25204 - 11904: 0xCAF6,\n\t25206 - 11904: 0xA7DF,\n\t25207 - 11904: 0xCAF3,\n\t25209 - 11904: 0xA7E5,\n\t25210 - 11904: 0xCAEF,\n\t25211 - 11904: 0xCAEE,\n\t25212 - 11904: 0xA7E3,\n\t25213 - 11904: 0xCAF4,\n\t25214 - 11904: 0xA7E4,\n\t25215 - 11904: 0xA9D3,\n\t25216 - 11904: 0xA7DE,\n\t25217 - 11904: 0xCAF1,\n\t25218 - 11904: 0x9FF4,\n\t25219 - 11904: 0xCAE7,\n\t25220 - 11904: 0xA7DB,\n\t25221 - 11904: 0x9FBA,\n\t25222 - 11904: 0xA7EE,\n\t25223 - 11904: 0xCAEC,\n\t25224 - 11904: 0xCAF2,\n\t25225 - 11904: 0xA7E0,\n\t25226 - 11904: 0xA7E2,\n\t25228 - 11904: 0xCAE8,\n\t25230 - 11904: 0xCAE9,\n\t25231 - 11904: 0xCAEA,\n\t25232 - 11904: 0x8D7A,\n\t25233 - 11904: 0xA7ED,\n\t25234 - 11904: 0xA7E7,\n\t25235 - 11904: 0xA7EC,\n\t25236 - 11904: 0xCAEB,\n\t25237 - 11904: 0xA7EB,\n\t25238 - 11904: 0xA7DD,\n\t25239 - 11904: 0xA7DC,\n\t25240 - 11904: 0xA7E9,\n\t25245 - 11904: 0x9E45,\n\t25252 - 11904: 0x93B0,\n\t25254 - 11904: 0xA075,\n\t25256 - 11904: 0xA9E1,\n\t25257 - 11904: 0xCCBE,\n\t25258 - 11904: 0xCCB7,\n\t25259 - 11904: 0xA9DC,\n\t25260 - 11904: 0xA9EF,\n\t25261 - 11904: 0xCCB3,\n\t25262 - 11904: 0xCCBA,\n\t25263 - 11904: 0xCCBC,\n\t25264 - 11904: 0xCCBF,\n\t25265 - 11904: 0xA9EA,\n\t25267 - 11904: 0xCCBB,\n\t25268 - 11904: 0xCCB4,\n\t25269 - 11904: 0xA9E8,\n\t25270 - 11904: 0xCCB8,\n\t25272 - 11904: 0xCCC0,\n\t25273 - 11904: 0xA9D9,\n\t25275 - 11904: 0xCCBD,\n\t25276 - 11904: 0xA9E3,\n\t25277 - 11904: 0xA9E2,\n\t25278 - 11904: 0xCCB6,\n\t25279 - 11904: 0xA9D7,\n\t25281 - 11904: 0x87DD,\n\t25282 - 11904: 0xA9D8,\n\t25283 - 11904: 0x9B46,\n\t25284 - 11904: 0xA9D6,\n\t25285 - 11904: 0xFCAE,\n\t25286 - 11904: 0xA9EE,\n\t25287 - 11904: 0xA9E6,\n\t25288 - 11904: 0xA9E0,\n\t25289 - 11904: 0xA9D4,\n\t25290 - 11904: 0xCCB9,\n\t25291 - 11904: 0xA9DF,\n\t25292 - 11904: 0xA9D5,\n\t25293 - 11904: 0xA9E7,\n\t25294 - 11904: 0xA9F0,\n\t25295 - 11904: 0xCED4,\n\t25296 - 11904: 0xA9E4,\n\t25297 - 11904: 0xCCB5,\n\t25298 - 11904: 0xA9DA,\n\t25299 - 11904: 0xA9DD,\n\t25300 - 11904: 0xA9DE,\n\t25301 - 11904: 0xFCB0,\n\t25302 - 11904: 0xA9EC,\n\t25303 - 11904: 0xA9ED,\n\t25304 - 11904: 0xA9EB,\n\t25305 - 11904: 0xA9E5,\n\t25306 - 11904: 0xA9E9,\n\t25307 - 11904: 0xA9DB,\n\t25308 - 11904: 0xABF4,\n\t25311 - 11904: 0xFA51,\n\t25317 - 11904: 0x8D7B,\n\t25323 - 11904: 0xCEDA,\n\t25324 - 11904: 0xAC41,\n\t25325 - 11904: 0xABF8,\n\t25326 - 11904: 0xABFA,\n\t25327 - 11904: 0xAC40,\n\t25328 - 11904: 0xCEE6,\n\t25329 - 11904: 0xABFD,\n\t25330 - 11904: 0xD1B1,\n\t25331 - 11904: 0xAEB1,\n\t25332 - 11904: 0xAC43,\n\t25333 - 11904: 0xCED7,\n\t25334 - 11904: 0xCEDF,\n\t25335 - 11904: 0xABFE,\n\t25336 - 11904: 0xCEDE,\n\t25337 - 11904: 0xCEDB,\n\t25338 - 11904: 0xCEE3,\n\t25339 - 11904: 0xCEE5,\n\t25340 - 11904: 0xABF7,\n\t25341 - 11904: 0xABFB,\n\t25342 - 11904: 0xAC42,\n\t25343 - 11904: 0xAEB3,\n\t25344 - 11904: 0xCEE0,\n\t25345 - 11904: 0xABF9,\n\t25346 - 11904: 0xAC45,\n\t25347 - 11904: 0xCED9,\n\t25351 - 11904: 0xABFC,\n\t25352 - 11904: 0xAEB2,\n\t25353 - 11904: 0xABF6,\n\t25355 - 11904: 0xCED6,\n\t25356 - 11904: 0xCEDD,\n\t25357 - 11904: 0xCED5,\n\t25358 - 11904: 0xCED8,\n\t25359 - 11904: 0xCEDC,\n\t25360 - 11904: 0xD1B2,\n\t25361 - 11904: 0xAC44,\n\t25363 - 11904: 0xCEE1,\n\t25364 - 11904: 0xCEE2,\n\t25365 - 11904: 0xCEE4,\n\t25366 - 11904: 0xABF5,\n\t25368 - 11904: 0x8D7C,\n\t25384 - 11904: 0xAEC1,\n\t25385 - 11904: 0xD1BE,\n\t25386 - 11904: 0xAEBF,\n\t25387 - 11904: 0xAEC0,\n\t25388 - 11904: 0xD1B4,\n\t25389 - 11904: 0xD1C4,\n\t25390 - 11904: 0x9ED6,\n\t25391 - 11904: 0xAEB6,\n\t25393 - 11904: 0x93AC,\n\t25394 - 11904: 0xD566,\n\t25395 - 11904: 0xD1C6,\n\t25396 - 11904: 0xD1C0,\n\t25397 - 11904: 0x9F5B,\n\t25398 - 11904: 0xD1B7,\n\t25399 - 11904: 0x93A9,\n\t25400 - 11904: 0xD1C9,\n\t25401 - 11904: 0xD1BA,\n\t25402 - 11904: 0xAEBC,\n\t25403 - 11904: 0xD57D,\n\t25404 - 11904: 0xD1BD,\n\t25405 - 11904: 0xAEBE,\n\t25406 - 11904: 0xAEB5,\n\t25408 - 11904: 0xD1CB,\n\t25409 - 11904: 0xD1BF,\n\t25410 - 11904: 0xAEB8,\n\t25411 - 11904: 0xD1B8,\n\t25412 - 11904: 0xD1B5,\n\t25413 - 11904: 0xD1B6,\n\t25414 - 11904: 0xAEB9,\n\t25415 - 11904: 0xD1C5,\n\t25416 - 11904: 0xD1CC,\n\t25417 - 11904: 0xAEBB,\n\t25418 - 11904: 0xD1BC,\n\t25419 - 11904: 0xD1BB,\n\t25420 - 11904: 0xAEC3,\n\t25421 - 11904: 0xAEC2,\n\t25422 - 11904: 0xAEB4,\n\t25423 - 11904: 0xAEBA,\n\t25424 - 11904: 0xAEBD,\n\t25425 - 11904: 0xD1C8,\n\t25428 - 11904: 0xD1C2,\n\t25429 - 11904: 0xAEB7,\n\t25430 - 11904: 0xD1B3,\n\t25431 - 11904: 0xD1CA,\n\t25432 - 11904: 0xD1C1,\n\t25433 - 11904: 0xD1C3,\n\t25434 - 11904: 0xD1C7,\n\t25444 - 11904: 0xA07C,\n\t25445 - 11904: 0xD567,\n\t25447 - 11904: 0xB1B7,\n\t25448 - 11904: 0xB1CB,\n\t25449 - 11904: 0xB1CA,\n\t25451 - 11904: 0xB1BF,\n\t25452 - 11904: 0xFCB2,\n\t25453 - 11904: 0xD579,\n\t25454 - 11904: 0xD575,\n\t25455 - 11904: 0xD572,\n\t25456 - 11904: 0xD5A6,\n\t25457 - 11904: 0xB1BA,\n\t25458 - 11904: 0xB1B2,\n\t25461 - 11904: 0xD577,\n\t25462 - 11904: 0xB4A8,\n\t25463 - 11904: 0xB1B6,\n\t25464 - 11904: 0xD5A1,\n\t25465 - 11904: 0x8AC1,\n\t25466 - 11904: 0xB1CC,\n\t25467 - 11904: 0xB1C9,\n\t25468 - 11904: 0xD57B,\n\t25469 - 11904: 0xD56A,\n\t25471 - 11904: 0x9FB4,\n\t25472 - 11904: 0xB1C8,\n\t25473 - 11904: 0xD5A3,\n\t25474 - 11904: 0xD569,\n\t25475 - 11904: 0xB1BD,\n\t25476 - 11904: 0xB1C1,\n\t25477 - 11904: 0xD5A2,\n\t25479 - 11904: 0xD573,\n\t25480 - 11904: 0xB1C2,\n\t25481 - 11904: 0xB1BC,\n\t25482 - 11904: 0xD568,\n\t25483 - 11904: 0xFCAC,\n\t25484 - 11904: 0xB478,\n\t25485 - 11904: 0xD5A5,\n\t25486 - 11904: 0xD571,\n\t25487 - 11904: 0xB1C7,\n\t25488 - 11904: 0xD574,\n\t25489 - 11904: 0xD5A4,\n\t25490 - 11904: 0xB1C6,\n\t25492 - 11904: 0xD952,\n\t25494 - 11904: 0xB1B3,\n\t25495 - 11904: 0xD56F,\n\t25496 - 11904: 0xB1B8,\n\t25497 - 11904: 0xB1C3,\n\t25499 - 11904: 0xB1BE,\n\t25500 - 11904: 0xD578,\n\t25501 - 11904: 0xD56E,\n\t25502 - 11904: 0xD56C,\n\t25503 - 11904: 0xD57E,\n\t25504 - 11904: 0xB1B0,\n\t25505 - 11904: 0xB1C4,\n\t25506 - 11904: 0xB1B4,\n\t25507 - 11904: 0xB477,\n\t25508 - 11904: 0xD57C,\n\t25509 - 11904: 0xB1B5,\n\t25511 - 11904: 0xB1B1,\n\t25512 - 11904: 0xB1C0,\n\t25513 - 11904: 0xB1BB,\n\t25514 - 11904: 0xB1B9,\n\t25515 - 11904: 0xD570,\n\t25516 - 11904: 0xB1C5,\n\t25517 - 11904: 0xD56D,\n\t25518 - 11904: 0xD57A,\n\t25519 - 11904: 0xD576,\n\t25520 - 11904: 0xD954,\n\t25521 - 11904: 0xD953,\n\t25529 - 11904: 0x9E4C,\n\t25533 - 11904: 0xD56B,\n\t25534 - 11904: 0xD964,\n\t25536 - 11904: 0xB47A,\n\t25537 - 11904: 0x8FC5,\n\t25538 - 11904: 0xD96A,\n\t25539 - 11904: 0xD959,\n\t25540 - 11904: 0xD967,\n\t25541 - 11904: 0xDD77,\n\t25542 - 11904: 0xB47D,\n\t25543 - 11904: 0xD96B,\n\t25544 - 11904: 0xD96E,\n\t25545 - 11904: 0xB47C,\n\t25546 - 11904: 0xD95C,\n\t25547 - 11904: 0xD96D,\n\t25548 - 11904: 0xD96C,\n\t25549 - 11904: 0xB47E,\n\t25550 - 11904: 0xD955,\n\t25551 - 11904: 0xB479,\n\t25552 - 11904: 0xB4A3,\n\t25553 - 11904: 0x93AD,\n\t25554 - 11904: 0xB4A1,\n\t25555 - 11904: 0xD969,\n\t25557 - 11904: 0xD95F,\n\t25558 - 11904: 0xB4A5,\n\t25559 - 11904: 0xD970,\n\t25560 - 11904: 0xD968,\n\t25561 - 11904: 0xD971,\n\t25562 - 11904: 0xB4AD,\n\t25563 - 11904: 0xB4AB,\n\t25564 - 11904: 0xD966,\n\t25565 - 11904: 0xD965,\n\t25566 - 11904: 0x9DC3,\n\t25567 - 11904: 0xD963,\n\t25568 - 11904: 0xD95D,\n\t25569 - 11904: 0xB4A4,\n\t25570 - 11904: 0x8DA2,\n\t25571 - 11904: 0xB4A2,\n\t25572 - 11904: 0xD1B9,\n\t25573 - 11904: 0xD956,\n\t25574 - 11904: 0x9D4A,\n\t25575 - 11904: 0xDDB7,\n\t25576 - 11904: 0xD957,\n\t25577 - 11904: 0xB47B,\n\t25578 - 11904: 0xB4AA,\n\t25579 - 11904: 0xDD79,\n\t25581 - 11904: 0xB4A6,\n\t25582 - 11904: 0xB4A7,\n\t25583 - 11904: 0xD958,\n\t25584 - 11904: 0xD96F,\n\t25585 - 11904: 0xDD78,\n\t25586 - 11904: 0xD960,\n\t25587 - 11904: 0xD95B,\n\t25588 - 11904: 0xB4A9,\n\t25589 - 11904: 0xD961,\n\t25590 - 11904: 0xD95E,\n\t25592 - 11904: 0xFCB6,\n\t25593 - 11904: 0xB4AE,\n\t25595 - 11904: 0x8DA3,\n\t25596 - 11904: 0x9E4B,\n\t25598 - 11904: 0x9E4D,\n\t25606 - 11904: 0xB770,\n\t25607 - 11904: 0x8DA4,\n\t25609 - 11904: 0xDD7C,\n\t25610 - 11904: 0xDDB1,\n\t25611 - 11904: 0xDDB6,\n\t25612 - 11904: 0xDDAA,\n\t25613 - 11904: 0xB76C,\n\t25614 - 11904: 0xDDBB,\n\t25615 - 11904: 0xB769,\n\t25616 - 11904: 0xDD7A,\n\t25618 - 11904: 0xDD7B,\n\t25619 - 11904: 0xB762,\n\t25620 - 11904: 0xB76B,\n\t25621 - 11904: 0xDDA4,\n\t25622 - 11904: 0xB76E,\n\t25623 - 11904: 0xB76F,\n\t25624 - 11904: 0xDDA5,\n\t25626 - 11904: 0xDDB2,\n\t25627 - 11904: 0xDDB8,\n\t25628 - 11904: 0xB76A,\n\t25630 - 11904: 0xB764,\n\t25631 - 11904: 0xDDA3,\n\t25632 - 11904: 0xDD7D,\n\t25633 - 11904: 0xDDBA,\n\t25634 - 11904: 0xDDA8,\n\t25635 - 11904: 0xDDA9,\n\t25636 - 11904: 0xDD7E,\n\t25637 - 11904: 0xDDB4,\n\t25638 - 11904: 0xDDAB,\n\t25639 - 11904: 0xDDB5,\n\t25640 - 11904: 0xDDAD,\n\t25642 - 11904: 0xB765,\n\t25643 - 11904: 0xE1D9,\n\t25644 - 11904: 0xB768,\n\t25645 - 11904: 0xB766,\n\t25646 - 11904: 0xDDB9,\n\t25647 - 11904: 0xDDB0,\n\t25648 - 11904: 0xDDAC,\n\t25650 - 11904: 0x8AFD,\n\t25651 - 11904: 0xDDA1,\n\t25652 - 11904: 0xBA53,\n\t25653 - 11904: 0xDDAF,\n\t25654 - 11904: 0xB76D,\n\t25655 - 11904: 0xDDA7,\n\t25656 - 11904: 0xFCB5,\n\t25657 - 11904: 0xDDA6,\n\t25658 - 11904: 0xFCC3,\n\t25659 - 11904: 0x93B2,\n\t25661 - 11904: 0xB767,\n\t25662 - 11904: 0xB763,\n\t25663 - 11904: 0xE1EE,\n\t25664 - 11904: 0xDDB3,\n\t25665 - 11904: 0xDDAE,\n\t25667 - 11904: 0xDDA2,\n\t25675 - 11904: 0xE1E9,\n\t25677 - 11904: 0xE1DA,\n\t25678 - 11904: 0xE1E5,\n\t25680 - 11904: 0xE1EC,\n\t25681 - 11904: 0xBA51,\n\t25682 - 11904: 0xB4AC,\n\t25683 - 11904: 0xE1EA,\n\t25684 - 11904: 0xBA4C,\n\t25688 - 11904: 0xBA4B,\n\t25689 - 11904: 0xE1F1,\n\t25690 - 11904: 0x8DA5,\n\t25691 - 11904: 0xE1DB,\n\t25692 - 11904: 0xE1E8,\n\t25693 - 11904: 0xE1DC,\n\t25694 - 11904: 0xE1E7,\n\t25695 - 11904: 0xBA4F,\n\t25696 - 11904: 0xE1EB,\n\t25697 - 11904: 0xD962,\n\t25701 - 11904: 0xE1F2,\n\t25702 - 11904: 0xE1E3,\n\t25703 - 11904: 0xBA52,\n\t25704 - 11904: 0xE5BA,\n\t25705 - 11904: 0xBCAF,\n\t25707 - 11904: 0xE1F0,\n\t25708 - 11904: 0xE1EF,\n\t25709 - 11904: 0xBA54,\n\t25710 - 11904: 0xE5AD,\n\t25711 - 11904: 0xBCB0,\n\t25712 - 11904: 0xE5AE,\n\t25713 - 11904: 0x93A1,\n\t25714 - 11904: 0xE1DF,\n\t25715 - 11904: 0xE1E0,\n\t25716 - 11904: 0xE1DD,\n\t25717 - 11904: 0xE1E2,\n\t25718 - 11904: 0xE1DE,\n\t25719 - 11904: 0xE1F3,\n\t25720 - 11904: 0xBA4E,\n\t25721 - 11904: 0xBCB1,\n\t25722 - 11904: 0xBA50,\n\t25723 - 11904: 0xBA55,\n\t25724 - 11904: 0x8AC6,\n\t25725 - 11904: 0xE1E1,\n\t25727 - 11904: 0xE1ED,\n\t25730 - 11904: 0xE1E6,\n\t25733 - 11904: 0xE5B1,\n\t25735 - 11904: 0xBA4A,\n\t25736 - 11904: 0xBCB4,\n\t25737 - 11904: 0xE9AA,\n\t25738 - 11904: 0xE5B6,\n\t25739 - 11904: 0xE5B5,\n\t25740 - 11904: 0xE5B7,\n\t25741 - 11904: 0x8A5B,\n\t25743 - 11904: 0xE5B4,\n\t25744 - 11904: 0xFCB9,\n\t25745 - 11904: 0x894D,\n\t25746 - 11904: 0xBCBB,\n\t25747 - 11904: 0xBCB8,\n\t25749 - 11904: 0xBCB9,\n\t25750 - 11904: 0xE5AF,\n\t25751 - 11904: 0xE5B2,\n\t25752 - 11904: 0xE5BC,\n\t25753 - 11904: 0xBCC1,\n\t25754 - 11904: 0xBCBF,\n\t25756 - 11904: 0xE5B3,\n\t25757 - 11904: 0xD95A,\n\t25758 - 11904: 0xBCB2,\n\t25759 - 11904: 0xE5B9,\n\t25760 - 11904: 0xE5B0,\n\t25762 - 11904: 0xBCC2,\n\t25763 - 11904: 0xE5B8,\n\t25764 - 11904: 0xBA4D,\n\t25765 - 11904: 0xBCB7,\n\t25766 - 11904: 0xE1E4,\n\t25769 - 11904: 0xBCBA,\n\t25771 - 11904: 0xBCBE,\n\t25772 - 11904: 0xBCC0,\n\t25773 - 11904: 0xBCBD,\n\t25774 - 11904: 0xBCBC,\n\t25775 - 11904: 0xFED4,\n\t25776 - 11904: 0xBCB6,\n\t25777 - 11904: 0xE5BB,\n\t25778 - 11904: 0xBCB3,\n\t25779 - 11904: 0xBCC3,\n\t25780 - 11904: 0x8A78,\n\t25782 - 11904: 0x93AB,\n\t25787 - 11904: 0xBED8,\n\t25788 - 11904: 0xBED9,\n\t25789 - 11904: 0xE9A9,\n\t25790 - 11904: 0xBEE2,\n\t25791 - 11904: 0xBEDF,\n\t25792 - 11904: 0x8DA7,\n\t25793 - 11904: 0xBED6,\n\t25794 - 11904: 0xBEDD,\n\t25795 - 11904: 0xE9AB,\n\t25796 - 11904: 0xBEDB,\n\t25797 - 11904: 0xBED5,\n\t25799 - 11904: 0xBEDC,\n\t25801 - 11904: 0xE9A8,\n\t25802 - 11904: 0xC0BB,\n\t25803 - 11904: 0xBED7,\n\t25805 - 11904: 0xBEDE,\n\t25806 - 11904: 0xC0BA,\n\t25807 - 11904: 0xE9A7,\n\t25808 - 11904: 0xE9A6,\n\t25810 - 11904: 0xBEE0,\n\t25811 - 11904: 0x9F45,\n\t25812 - 11904: 0xBEE1,\n\t25814 - 11904: 0xE9A5,\n\t25815 - 11904: 0xE9A4,\n\t25816 - 11904: 0xC0BC,\n\t25817 - 11904: 0xE9AE,\n\t25818 - 11904: 0xBEDA,\n\t25819 - 11904: 0xE9AC,\n\t25821 - 11904: 0x8A56,\n\t25824 - 11904: 0xC0BD,\n\t25825 - 11904: 0xFCBF,\n\t25826 - 11904: 0xC0C2,\n\t25827 - 11904: 0xECEA,\n\t25828 - 11904: 0xECEC,\n\t25829 - 11904: 0xFCC0,\n\t25830 - 11904: 0xC0BF,\n\t25831 - 11904: 0x8EE6,\n\t25832 - 11904: 0xECED,\n\t25833 - 11904: 0xECE9,\n\t25834 - 11904: 0x8AA4,\n\t25835 - 11904: 0xECEB,\n\t25836 - 11904: 0xC0C0,\n\t25837 - 11904: 0xC0C3,\n\t25839 - 11904: 0xECE8,\n\t25840 - 11904: 0xC0BE,\n\t25841 - 11904: 0xC0C1,\n\t25842 - 11904: 0xC259,\n\t25843 - 11904: 0xE9AD,\n\t25844 - 11904: 0xC258,\n\t25847 - 11904: 0xC25E,\n\t25848 - 11904: 0xEFD4,\n\t25850 - 11904: 0xC25C,\n\t25851 - 11904: 0xC25D,\n\t25852 - 11904: 0xEFD7,\n\t25853 - 11904: 0xEFD3,\n\t25854 - 11904: 0xC25A,\n\t25855 - 11904: 0xEFD1,\n\t25856 - 11904: 0xC36B,\n\t25857 - 11904: 0xEFD5,\n\t25859 - 11904: 0xEFD6,\n\t25860 - 11904: 0xEFD2,\n\t25862 - 11904: 0xC25B,\n\t25863 - 11904: 0xF242,\n\t25865 - 11904: 0xF245,\n\t25866 - 11904: 0x8943,\n\t25868 - 11904: 0xF246,\n\t25869 - 11904: 0xF244,\n\t25870 - 11904: 0xF247,\n\t25871 - 11904: 0xC36C,\n\t25872 - 11904: 0xF243,\n\t25873 - 11904: 0x93F3,\n\t25875 - 11904: 0xF44E,\n\t25876 - 11904: 0xC464,\n\t25877 - 11904: 0xF44D,\n\t25878 - 11904: 0xF44C,\n\t25879 - 11904: 0xF44B,\n\t25880 - 11904: 0xC463,\n\t25881 - 11904: 0xC465,\n\t25883 - 11904: 0xF5CD,\n\t25884 - 11904: 0xC4E2,\n\t25885 - 11904: 0xC4E1,\n\t25886 - 11904: 0xFCAB,\n\t25887 - 11904: 0x9EA2,\n\t25888 - 11904: 0xF6E1,\n\t25889 - 11904: 0xF6E0,\n\t25890 - 11904: 0xF6E3,\n\t25891 - 11904: 0xC5CB,\n\t25892 - 11904: 0xC575,\n\t25893 - 11904: 0xF7DD,\n\t25894 - 11904: 0xF6E2,\n\t25897 - 11904: 0xF7DC,\n\t25898 - 11904: 0xC5CD,\n\t25899 - 11904: 0xC5CC,\n\t25900 - 11904: 0xC5F3,\n\t25901 - 11904: 0xF8A9,\n\t25902 - 11904: 0xF8EF,\n\t25903 - 11904: 0xA4E4,\n\t25904 - 11904: 0x9DC7,\n\t25906 - 11904: 0xD972,\n\t25907 - 11904: 0xE9AF,\n\t25908 - 11904: 0xC6D2,\n\t25909 - 11904: 0x8BCE,\n\t25910 - 11904: 0xA6AC,\n\t25911 - 11904: 0xCAF7,\n\t25912 - 11904: 0xA7F1,\n\t25913 - 11904: 0xA7EF,\n\t25915 - 11904: 0xA7F0,\n\t25917 - 11904: 0xCCC1,\n\t25918 - 11904: 0xA9F1,\n\t25919 - 11904: 0xAC46,\n\t25921 - 11904: 0xCEE7,\n\t25923 - 11904: 0xCEE8,\n\t25925 - 11904: 0xAC47,\n\t25926 - 11904: 0xD1CE,\n\t25928 - 11904: 0xAEC4,\n\t25929 - 11904: 0xAEC5,\n\t25930 - 11904: 0xD1CD,\n\t25933 - 11904: 0xFCC5,\n\t25935 - 11904: 0xB1D3,\n\t25937 - 11904: 0xB1CF,\n\t25939 - 11904: 0xD5A7,\n\t25940 - 11904: 0xB1D6,\n\t25941 - 11904: 0xB1D5,\n\t25942 - 11904: 0xB1CE,\n\t25943 - 11904: 0xB1D1,\n\t25944 - 11904: 0xB1D4,\n\t25945 - 11904: 0xB1D0,\n\t25948 - 11904: 0xD976,\n\t25949 - 11904: 0xB1CD,\n\t25950 - 11904: 0xB4AF,\n\t25951 - 11904: 0xFCCB,\n\t25954 - 11904: 0xB4B1,\n\t25955 - 11904: 0xB4B2,\n\t25956 - 11904: 0xD975,\n\t25957 - 11904: 0xD978,\n\t25958 - 11904: 0xB4B0,\n\t25959 - 11904: 0xD973,\n\t25960 - 11904: 0xD977,\n\t25962 - 11904: 0xD974,\n\t25963 - 11904: 0x93B3,\n\t25964 - 11904: 0xB771,\n\t25965 - 11904: 0xFCCA,\n\t25967 - 11904: 0xDDBC,\n\t25970 - 11904: 0xBA56,\n\t25971 - 11904: 0xE1F4,\n\t25972 - 11904: 0xBEE3,\n\t25973 - 11904: 0xBCC4,\n\t25974 - 11904: 0xE5BD,\n\t25975 - 11904: 0xBCC5,\n\t25976 - 11904: 0xBCC6,\n\t25977 - 11904: 0xE5BF,\n\t25978 - 11904: 0xE5BE,\n\t25979 - 11904: 0xE5C0,\n\t25980 - 11904: 0xE9B1,\n\t25983 - 11904: 0xE9B0,\n\t25984 - 11904: 0xECEF,\n\t25985 - 11904: 0xECEE,\n\t25986 - 11904: 0xC0C4,\n\t25987 - 11904: 0xC0C5,\n\t25988 - 11904: 0xF248,\n\t25989 - 11904: 0xFCC9,\n\t25990 - 11904: 0x8DAC,\n\t25991 - 11904: 0xA4E5,\n\t25992 - 11904: 0xFBC6,\n\t25993 - 11904: 0x8967,\n\t25995 - 11904: 0x8C7E,\n\t25996 - 11904: 0xD979,\n\t26000 - 11904: 0xB4B4,\n\t26001 - 11904: 0xB4B3,\n\t26002 - 11904: 0xDDBD,\n\t26004 - 11904: 0xEFD8,\n\t26005 - 11904: 0xC4E3,\n\t26006 - 11904: 0xF7DE,\n\t26007 - 11904: 0xA4E6,\n\t26009 - 11904: 0xAEC6,\n\t26011 - 11904: 0xB1D8,\n\t26012 - 11904: 0xB1D7,\n\t26013 - 11904: 0xD97A,\n\t26014 - 11904: 0xD97B,\n\t26015 - 11904: 0xB772,\n\t26016 - 11904: 0xE1F5,\n\t26017 - 11904: 0xBA57,\n\t26018 - 11904: 0xE9B2,\n\t26020 - 11904: 0xA4E7,\n\t26021 - 11904: 0xA5B8,\n\t26023 - 11904: 0xA9F2,\n\t26024 - 11904: 0xCCC2,\n\t26026 - 11904: 0xCEE9,\n\t26027 - 11904: 0xAC48,\n\t26028 - 11904: 0xB1D9,\n\t26030 - 11904: 0xD97C,\n\t26031 - 11904: 0xB4B5,\n\t26032 - 11904: 0xB773,\n\t26034 - 11904: 0xE5C1,\n\t26035 - 11904: 0xE5C2,\n\t26037 - 11904: 0xFCCD,\n\t26038 - 11904: 0xECF0,\n\t26039 - 11904: 0xC25F,\n\t26040 - 11904: 0xF8F0,\n\t26041 - 11904: 0xA4E8,\n\t26043 - 11904: 0xCCC3,\n\t26044 - 11904: 0xA9F3,\n\t26045 - 11904: 0xAC49,\n\t26046 - 11904: 0x9CF3,\n\t26047 - 11904: 0xCEEA,\n\t26049 - 11904: 0xAEC7,\n\t26050 - 11904: 0xD1D2,\n\t26051 - 11904: 0xD1D0,\n\t26052 - 11904: 0xD1D1,\n\t26053 - 11904: 0xAEC8,\n\t26054 - 11904: 0xD1CF,\n\t26059 - 11904: 0xB1DB,\n\t26060 - 11904: 0xB1DC,\n\t26061 - 11904: 0xD5A8,\n\t26062 - 11904: 0xB1DD,\n\t26063 - 11904: 0xB1DA,\n\t26064 - 11904: 0xD97D,\n\t26065 - 11904: 0xFCD0,\n\t26066 - 11904: 0xD97E,\n\t26067 - 11904: 0xDDBE,\n\t26068 - 11904: 0x95BB,\n\t26070 - 11904: 0xBA59,\n\t26071 - 11904: 0xBA58,\n\t26074 - 11904: 0xECF1,\n\t26075 - 11904: 0xEFD9,\n\t26077 - 11904: 0xF24A,\n\t26078 - 11904: 0xF249,\n\t26079 - 11904: 0xF44F,\n\t26080 - 11904: 0xFCD3,\n\t26081 - 11904: 0xC95E,\n\t26082 - 11904: 0xAC4A,\n\t26083 - 11904: 0xFCD4,\n\t26085 - 11904: 0xA4E9,\n\t26086 - 11904: 0xA5B9,\n\t26088 - 11904: 0xA6AE,\n\t26089 - 11904: 0xA6AD,\n\t26092 - 11904: 0xA6AF,\n\t26093 - 11904: 0xA6B0,\n\t26094 - 11904: 0xC9EE,\n\t26095 - 11904: 0xC9ED,\n\t26096 - 11904: 0xCAF8,\n\t26097 - 11904: 0xA7F2,\n\t26098 - 11904: 0xCAFB,\n\t26099 - 11904: 0xCAFA,\n\t26100 - 11904: 0xCAF9,\n\t26101 - 11904: 0xCAFC,\n\t26106 - 11904: 0xA9F4,\n\t26107 - 11904: 0xCCC9,\n\t26108 - 11904: 0xCCC5,\n\t26109 - 11904: 0xCCCE,\n\t26111 - 11904: 0x8DAE,\n\t26112 - 11904: 0xA9FB,\n\t26114 - 11904: 0xA9F9,\n\t26115 - 11904: 0xCCCA,\n\t26116 - 11904: 0xCCC6,\n\t26117 - 11904: 0xCCCD,\n\t26118 - 11904: 0xA9F8,\n\t26119 - 11904: 0xAA40,\n\t26120 - 11904: 0xCCC8,\n\t26121 - 11904: 0xCCC4,\n\t26122 - 11904: 0xA9FE,\n\t26123 - 11904: 0xCCCB,\n\t26124 - 11904: 0xA9F7,\n\t26125 - 11904: 0xCCCC,\n\t26126 - 11904: 0xA9FA,\n\t26127 - 11904: 0xA9FC,\n\t26128 - 11904: 0xCCD0,\n\t26129 - 11904: 0xCCCF,\n\t26130 - 11904: 0xCCC7,\n\t26131 - 11904: 0xA9F6,\n\t26132 - 11904: 0xA9F5,\n\t26133 - 11904: 0xA9FD,\n\t26136 - 11904: 0xFCD7,\n\t26140 - 11904: 0xCEEF,\n\t26141 - 11904: 0xCEF5,\n\t26142 - 11904: 0x93DB,\n\t26143 - 11904: 0xAC50,\n\t26144 - 11904: 0xAC4D,\n\t26145 - 11904: 0xCEEC,\n\t26146 - 11904: 0xCEF1,\n\t26147 - 11904: 0xFE63,\n\t26148 - 11904: 0xAC53,\n\t26149 - 11904: 0xAC4B,\n\t26150 - 11904: 0xCEF0,\n\t26151 - 11904: 0xAC4E,\n\t26152 - 11904: 0xAC51,\n\t26155 - 11904: 0xCEF3,\n\t26157 - 11904: 0xAC4C,\n\t26158 - 11904: 0xCEF8,\n\t26159 - 11904: 0xAC4F,\n\t26160 - 11904: 0x93D5,\n\t26161 - 11904: 0xAC52,\n\t26162 - 11904: 0xCEED,\n\t26163 - 11904: 0xCEF2,\n\t26164 - 11904: 0xCEF6,\n\t26165 - 11904: 0xCEEE,\n\t26166 - 11904: 0xCEEB,\n\t26169 - 11904: 0xCEF7,\n\t26170 - 11904: 0xCEF4,\n\t26177 - 11904: 0xAED0,\n\t26178 - 11904: 0xAEC9,\n\t26179 - 11904: 0xAECC,\n\t26180 - 11904: 0xFCDA,\n\t26181 - 11904: 0xAECF,\n\t26183 - 11904: 0xD1D5,\n\t26184 - 11904: 0x9B71,\n\t26185 - 11904: 0xAECA,\n\t26186 - 11904: 0xD1D3,\n\t26187 - 11904: 0xFCDD,\n\t26188 - 11904: 0xAECE,\n\t26189 - 11904: 0x8764,\n\t26191 - 11904: 0xAECB,\n\t26193 - 11904: 0xD1D6,\n\t26194 - 11904: 0xAECD,\n\t26195 - 11904: 0x8DAF,\n\t26199 - 11904: 0xFAF2,\n\t26201 - 11904: 0xD5AC,\n\t26202 - 11904: 0xB1DF,\n\t26203 - 11904: 0xD5AB,\n\t26204 - 11904: 0xD5AD,\n\t26205 - 11904: 0xB1DE,\n\t26206 - 11904: 0xB1E3,\n\t26207 - 11904: 0xD1D4,\n\t26208 - 11904: 0x87B5,\n\t26209 - 11904: 0xD5AA,\n\t26210 - 11904: 0xD5AE,\n\t26211 - 11904: 0x93D8,\n\t26212 - 11904: 0xB1E0,\n\t26213 - 11904: 0xD5A9,\n\t26214 - 11904: 0xB1E2,\n\t26215 - 11904: 0xFCDF,\n\t26216 - 11904: 0xB1E1,\n\t26218 - 11904: 0xD9A7,\n\t26219 - 11904: 0x93D3,\n\t26220 - 11904: 0xD9A2,\n\t26222 - 11904: 0xB4B6,\n\t26223 - 11904: 0xB4BA,\n\t26224 - 11904: 0xB4B7,\n\t26225 - 11904: 0xD9A5,\n\t26226 - 11904: 0xD9A8,\n\t26227 - 11904: 0xFCE1,\n\t26228 - 11904: 0xFCE2,\n\t26230 - 11904: 0xB4B9,\n\t26231 - 11904: 0xB4BE,\n\t26232 - 11904: 0xDDC7,\n\t26233 - 11904: 0xD9A6,\n\t26234 - 11904: 0xB4BC,\n\t26235 - 11904: 0xD9A3,\n\t26236 - 11904: 0xD9A1,\n\t26237 - 11904: 0x8E76,\n\t26238 - 11904: 0xB4BD,\n\t26240 - 11904: 0xD9A4,\n\t26244 - 11904: 0xB779,\n\t26245 - 11904: 0xFC62,\n\t26246 - 11904: 0xDDBF,\n\t26247 - 11904: 0xB776,\n\t26248 - 11904: 0xB777,\n\t26249 - 11904: 0xB775,\n\t26250 - 11904: 0xDDC4,\n\t26251 - 11904: 0xDDC3,\n\t26252 - 11904: 0xDDC0,\n\t26253 - 11904: 0xB77B,\n\t26254 - 11904: 0x93D1,\n\t26256 - 11904: 0xDDC2,\n\t26257 - 11904: 0xB4BB,\n\t26258 - 11904: 0x8DB1,\n\t26260 - 11904: 0xDDC6,\n\t26261 - 11904: 0xDDC1,\n\t26262 - 11904: 0xB778,\n\t26263 - 11904: 0xB774,\n\t26264 - 11904: 0xB77A,\n\t26265 - 11904: 0xDDC5,\n\t26266 - 11904: 0x9859,\n\t26269 - 11904: 0xBA5C,\n\t26271 - 11904: 0xE1F8,\n\t26272 - 11904: 0xE1F7,\n\t26273 - 11904: 0xE1F6,\n\t26274 - 11904: 0xBA5A,\n\t26276 - 11904: 0xFB52,\n\t26280 - 11904: 0xBA5B,\n\t26281 - 11904: 0xE5C5,\n\t26282 - 11904: 0xE5C8,\n\t26283 - 11904: 0xBCC8,\n\t26285 - 11904: 0xFB53,\n\t26286 - 11904: 0xBCC7,\n\t26287 - 11904: 0xE5C9,\n\t26288 - 11904: 0xE5C4,\n\t26289 - 11904: 0xBCCA,\n\t26290 - 11904: 0xE5C6,\n\t26291 - 11904: 0xFB4D,\n\t26292 - 11904: 0xBCC9,\n\t26293 - 11904: 0xE5C3,\n\t26294 - 11904: 0x9CBF,\n\t26295 - 11904: 0xE5C7,\n\t26296 - 11904: 0xBEE9,\n\t26297 - 11904: 0xBEE6,\n\t26298 - 11904: 0xE9BB,\n\t26299 - 11904: 0xE9BA,\n\t26301 - 11904: 0xE9B9,\n\t26302 - 11904: 0xE9B4,\n\t26303 - 11904: 0x9B72,\n\t26304 - 11904: 0xE9B5,\n\t26308 - 11904: 0xBEE7,\n\t26310 - 11904: 0xBEE4,\n\t26311 - 11904: 0xBEE8,\n\t26312 - 11904: 0xE9B3,\n\t26313 - 11904: 0xBEE5,\n\t26314 - 11904: 0xE9B6,\n\t26315 - 11904: 0xE9B7,\n\t26316 - 11904: 0xE9BC,\n\t26317 - 11904: 0xFB50,\n\t26318 - 11904: 0x93BE,\n\t26319 - 11904: 0xE9B8,\n\t26322 - 11904: 0xECF2,\n\t26326 - 11904: 0xC0C7,\n\t26328 - 11904: 0xEFDC,\n\t26329 - 11904: 0xC0C6,\n\t26330 - 11904: 0xEFDA,\n\t26331 - 11904: 0xEFDB,\n\t26332 - 11904: 0xC260,\n\t26333 - 11904: 0xC36E,\n\t26334 - 11904: 0xF24B,\n\t26336 - 11904: 0xC36D,\n\t26339 - 11904: 0xF451,\n\t26340 - 11904: 0xF452,\n\t26342 - 11904: 0xC466,\n\t26343 - 11904: 0x8CDB,\n\t26344 - 11904: 0xF450,\n\t26345 - 11904: 0xC4E4,\n\t26347 - 11904: 0xF7DF,\n\t26348 - 11904: 0xC5CE,\n\t26349 - 11904: 0xF8AA,\n\t26350 - 11904: 0xF8AB,\n\t26352 - 11904: 0xA4EA,\n\t26353 - 11904: 0x9DF1,\n\t26354 - 11904: 0xA6B1,\n\t26355 - 11904: 0xA6B2,\n\t26356 - 11904: 0xA7F3,\n\t26358 - 11904: 0xCCD1,\n\t26359 - 11904: 0xAC54,\n\t26360 - 11904: 0xAED1,\n\t26361 - 11904: 0xB1E4,\n\t26364 - 11904: 0xB0D2,\n\t26366 - 11904: 0xB4BF,\n\t26367 - 11904: 0xB4C0,\n\t26368 - 11904: 0xB3CC,\n\t26369 - 11904: 0xD9A9,\n\t26370 - 11904: 0xFCEB,\n\t26371 - 11904: 0xB77C,\n\t26372 - 11904: 0xE1FA,\n\t26373 - 11904: 0xE1F9,\n\t26376 - 11904: 0xA4EB,\n\t26377 - 11904: 0xA6B3,\n\t26378 - 11904: 0xCCD2,\n\t26379 - 11904: 0xAA42,\n\t26380 - 11904: 0xA0BB,\n\t26381 - 11904: 0xAA41,\n\t26382 - 11904: 0x9B7E,\n\t26383 - 11904: 0xCEF9,\n\t26384 - 11904: 0xCEFA,\n\t26386 - 11904: 0xD1D7,\n\t26387 - 11904: 0xD1D8,\n\t26388 - 11904: 0xAED2,\n\t26389 - 11904: 0xAED3,\n\t26390 - 11904: 0x8DB3,\n\t26391 - 11904: 0xAED4,\n\t26392 - 11904: 0xD5AF,\n\t26393 - 11904: 0x8C52,\n\t26395 - 11904: 0xB1E6,\n\t26397 - 11904: 0xB4C2,\n\t26398 - 11904: 0x9AE8,\n\t26399 - 11904: 0xB4C1,\n\t26400 - 11904: 0xDDC8,\n\t26401 - 11904: 0xDF7A,\n\t26402 - 11904: 0xE1FB,\n\t26403 - 11904: 0xE9BD,\n\t26405 - 11904: 0x8EDC,\n\t26406 - 11904: 0xC261,\n\t26407 - 11904: 0xC467,\n\t26408 - 11904: 0xA4EC,\n\t26410 - 11904: 0xA5BC,\n\t26411 - 11904: 0xA5BD,\n\t26412 - 11904: 0xA5BB,\n\t26413 - 11904: 0xA5BE,\n\t26414 - 11904: 0xA5BA,\n\t26417 - 11904: 0xA6B6,\n\t26419 - 11904: 0xC9F6,\n\t26420 - 11904: 0xA6B5,\n\t26421 - 11904: 0xA6B7,\n\t26422 - 11904: 0x9CF9,\n\t26424 - 11904: 0xC9F1,\n\t26425 - 11904: 0xC9F0,\n\t26426 - 11904: 0xC9F3,\n\t26427 - 11904: 0xC9F2,\n\t26428 - 11904: 0xC9F5,\n\t26429 - 11904: 0xA6B4,\n\t26430 - 11904: 0xC9EF,\n\t26431 - 11904: 0xC9F4,\n\t26436 - 11904: 0xFA50,\n\t26437 - 11904: 0xCAFD,\n\t26438 - 11904: 0xA7FD,\n\t26439 - 11904: 0xCAFE,\n\t26440 - 11904: 0xCB43,\n\t26441 - 11904: 0xA7FC,\n\t26443 - 11904: 0xCB47,\n\t26444 - 11904: 0xCB42,\n\t26445 - 11904: 0xCB45,\n\t26446 - 11904: 0xA7F5,\n\t26447 - 11904: 0xA7F6,\n\t26448 - 11904: 0xA7F7,\n\t26449 - 11904: 0xA7F8,\n\t26451 - 11904: 0xA840,\n\t26453 - 11904: 0xCB41,\n\t26454 - 11904: 0xA7FA,\n\t26455 - 11904: 0xA841,\n\t26457 - 11904: 0xCB40,\n\t26458 - 11904: 0xCB46,\n\t26460 - 11904: 0xA7F9,\n\t26461 - 11904: 0xCB44,\n\t26462 - 11904: 0xFCF1,\n\t26463 - 11904: 0xA7F4,\n\t26464 - 11904: 0xA7FE,\n\t26465 - 11904: 0x98E7,\n\t26466 - 11904: 0xFCF3,\n\t26471 - 11904: 0xFCF2,\n\t26474 - 11904: 0xAA57,\n\t26475 - 11904: 0x8CCA,\n\t26476 - 11904: 0xCCD4,\n\t26477 - 11904: 0xAA43,\n\t26478 - 11904: 0x8775,\n\t26479 - 11904: 0xAA4D,\n\t26480 - 11904: 0xAA4E,\n\t26481 - 11904: 0xAA46,\n\t26482 - 11904: 0xAA58,\n\t26483 - 11904: 0xAA48,\n\t26484 - 11904: 0xCCDC,\n\t26485 - 11904: 0xAA53,\n\t26486 - 11904: 0xCCD7,\n\t26487 - 11904: 0xAA49,\n\t26488 - 11904: 0xCCE6,\n\t26489 - 11904: 0xCCE7,\n\t26490 - 11904: 0xCCDF,\n\t26491 - 11904: 0xCCD8,\n\t26492 - 11904: 0xAA56,\n\t26493 - 11904: 0xCCE4,\n\t26494 - 11904: 0xAA51,\n\t26495 - 11904: 0xAA4F,\n\t26497 - 11904: 0xCCE5,\n\t26498 - 11904: 0x87BA,\n\t26499 - 11904: 0xCCE3,\n\t26500 - 11904: 0xCCDB,\n\t26501 - 11904: 0xCCD3,\n\t26502 - 11904: 0xCCDA,\n\t26503 - 11904: 0xAA4A,\n\t26505 - 11904: 0xAA50,\n\t26507 - 11904: 0xAA44,\n\t26508 - 11904: 0xCCDE,\n\t26509 - 11904: 0xCCDD,\n\t26510 - 11904: 0xCCD5,\n\t26511 - 11904: 0x93E5,\n\t26512 - 11904: 0xAA52,\n\t26513 - 11904: 0xCCE1,\n\t26514 - 11904: 0xCCD6,\n\t26515 - 11904: 0xAA55,\n\t26516 - 11904: 0xCCE8,\n\t26517 - 11904: 0xAA45,\n\t26519 - 11904: 0xAA4C,\n\t26520 - 11904: 0xCCD9,\n\t26521 - 11904: 0xCCE2,\n\t26522 - 11904: 0xAA54,\n\t26524 - 11904: 0xAA47,\n\t26525 - 11904: 0xAA4B,\n\t26527 - 11904: 0xCCE0,\n\t26528 - 11904: 0x9A59,\n\t26532 - 11904: 0x8DB5,\n\t26540 - 11904: 0xFD4D,\n\t26542 - 11904: 0xCF5B,\n\t26543 - 11904: 0xAC5C,\n\t26544 - 11904: 0xAC69,\n\t26545 - 11904: 0xFD5E,\n\t26546 - 11904: 0xCF56,\n\t26547 - 11904: 0xCF4C,\n\t26548 - 11904: 0xAC62,\n\t26549 - 11904: 0xCF4A,\n\t26550 - 11904: 0xAC5B,\n\t26551 - 11904: 0xCF45,\n\t26552 - 11904: 0xAC65,\n\t26553 - 11904: 0xCF52,\n\t26554 - 11904: 0xCEFE,\n\t26555 - 11904: 0xCF41,\n\t26559 - 11904: 0x8F7D,\n\t26560 - 11904: 0xCF44,\n\t26561 - 11904: 0xCEFB,\n\t26562 - 11904: 0xCF51,\n\t26563 - 11904: 0xCF61,\n\t26564 - 11904: 0xAC60,\n\t26565 - 11904: 0xCF46,\n\t26566 - 11904: 0xCF58,\n\t26568 - 11904: 0xCEFD,\n\t26569 - 11904: 0xCF5F,\n\t26570 - 11904: 0xCF60,\n\t26571 - 11904: 0xCF63,\n\t26572 - 11904: 0xCF5A,\n\t26573 - 11904: 0xCF4B,\n\t26574 - 11904: 0xCF53,\n\t26575 - 11904: 0xAC66,\n\t26576 - 11904: 0xAC59,\n\t26577 - 11904: 0xAC61,\n\t26578 - 11904: 0xAC6D,\n\t26579 - 11904: 0xAC56,\n\t26580 - 11904: 0xAC58,\n\t26582 - 11904: 0x9547,\n\t26583 - 11904: 0xFCF6,\n\t26584 - 11904: 0xCF43,\n\t26585 - 11904: 0xAC6A,\n\t26586 - 11904: 0xAC63,\n\t26587 - 11904: 0xCF5D,\n\t26588 - 11904: 0xCF40,\n\t26589 - 11904: 0xAC6C,\n\t26590 - 11904: 0xAC67,\n\t26591 - 11904: 0xCF49,\n\t26594 - 11904: 0xAC6B,\n\t26595 - 11904: 0xCF50,\n\t26596 - 11904: 0xCF48,\n\t26597 - 11904: 0xAC64,\n\t26598 - 11904: 0xCF5C,\n\t26599 - 11904: 0xCF54,\n\t26601 - 11904: 0xAC5E,\n\t26602 - 11904: 0xCF62,\n\t26603 - 11904: 0xCF47,\n\t26604 - 11904: 0xAC5A,\n\t26605 - 11904: 0xCF59,\n\t26606 - 11904: 0xCF4F,\n\t26607 - 11904: 0xAC5F,\n\t26608 - 11904: 0xCF55,\n\t26609 - 11904: 0xAC57,\n\t26610 - 11904: 0xCEFC,\n\t26611 - 11904: 0xAC68,\n\t26612 - 11904: 0xAEE3,\n\t26613 - 11904: 0xAC5D,\n\t26614 - 11904: 0xCF4E,\n\t26615 - 11904: 0xCF4D,\n\t26616 - 11904: 0xCF42,\n\t26617 - 11904: 0x9250,\n\t26618 - 11904: 0xCF5E,\n\t26620 - 11904: 0xCF57,\n\t26622 - 11904: 0x8968,\n\t26623 - 11904: 0xAC55,\n\t26624 - 11904: 0x8DB6,\n\t26625 - 11904: 0xFCFB,\n\t26626 - 11904: 0xA07D,\n\t26627 - 11904: 0x98FC,\n\t26628 - 11904: 0x8969,\n\t26637 - 11904: 0xFE4F,\n\t26640 - 11904: 0x9256,\n\t26642 - 11904: 0xD1EC,\n\t26643 - 11904: 0xAEEA,\n\t26644 - 11904: 0xD1ED,\n\t26646 - 11904: 0xD1E1,\n\t26647 - 11904: 0xAEDF,\n\t26648 - 11904: 0xAEEB,\n\t26650 - 11904: 0xD1DA,\n\t26651 - 11904: 0xFAC9,\n\t26652 - 11904: 0xD1E3,\n\t26653 - 11904: 0xD1EB,\n\t26654 - 11904: 0x93E8,\n\t26655 - 11904: 0xD1D9,\n\t26656 - 11904: 0xD1F4,\n\t26657 - 11904: 0xAED5,\n\t26658 - 11904: 0xFCF8,\n\t26661 - 11904: 0xD1F3,\n\t26662 - 11904: 0xD1EE,\n\t26664 - 11904: 0xD1EF,\n\t26665 - 11904: 0xAEDD,\n\t26666 - 11904: 0xAEE8,\n\t26667 - 11904: 0xD1E5,\n\t26669 - 11904: 0xD1E6,\n\t26670 - 11904: 0xD1F0,\n\t26671 - 11904: 0xD1E7,\n\t26673 - 11904: 0xD1E2,\n\t26674 - 11904: 0xD1DC,\n\t26675 - 11904: 0xD1DD,\n\t26676 - 11904: 0xD1EA,\n\t26677 - 11904: 0xD1E4,\n\t26678 - 11904: 0x9CE3,\n\t26679 - 11904: 0xFDA9,\n\t26680 - 11904: 0xAED6,\n\t26681 - 11904: 0xAEDA,\n\t26682 - 11904: 0xD1F2,\n\t26683 - 11904: 0xD1DE,\n\t26684 - 11904: 0xAEE6,\n\t26685 - 11904: 0xAEE2,\n\t26686 - 11904: 0xFC44,\n\t26688 - 11904: 0xAEE5,\n\t26689 - 11904: 0xAEEC,\n\t26690 - 11904: 0xAEDB,\n\t26691 - 11904: 0xAEE7,\n\t26692 - 11904: 0xD1E9,\n\t26693 - 11904: 0xAEE9,\n\t26694 - 11904: 0xAED8,\n\t26695 - 11904: 0x9640,\n\t26696 - 11904: 0xAED7,\n\t26697 - 11904: 0xD1DB,\n\t26698 - 11904: 0x8DB8,\n\t26699 - 11904: 0xD1DF,\n\t26700 - 11904: 0xAEE0,\n\t26701 - 11904: 0xD1F1,\n\t26702 - 11904: 0xD1E8,\n\t26703 - 11904: 0xD1E0,\n\t26704 - 11904: 0xAEE4,\n\t26705 - 11904: 0xAEE1,\n\t26707 - 11904: 0xAED9,\n\t26708 - 11904: 0xAEDC,\n\t26709 - 11904: 0x9B4A,\n\t26710 - 11904: 0x8FB9,\n\t26717 - 11904: 0xFCFE,\n\t26725 - 11904: 0x896A,\n\t26731 - 11904: 0xD5C4,\n\t26733 - 11904: 0xD5B4,\n\t26734 - 11904: 0xD5B5,\n\t26735 - 11904: 0xD5B9,\n\t26737 - 11904: 0xD5C8,\n\t26738 - 11904: 0xD5C5,\n\t26740 - 11904: 0xD5BE,\n\t26741 - 11904: 0xD5BD,\n\t26742 - 11904: 0xB1ED,\n\t26743 - 11904: 0xD5C1,\n\t26744 - 11904: 0xD5D0,\n\t26745 - 11904: 0xD5B0,\n\t26747 - 11904: 0xD5D1,\n\t26748 - 11904: 0xD5C3,\n\t26749 - 11904: 0xD5D5,\n\t26750 - 11904: 0xD5C9,\n\t26751 - 11904: 0xB1EC,\n\t26752 - 11904: 0xD5C7,\n\t26753 - 11904: 0xB1E7,\n\t26754 - 11904: 0xB1FC,\n\t26755 - 11904: 0xB1F2,\n\t26756 - 11904: 0x8DB9,\n\t26757 - 11904: 0xB1F6,\n\t26758 - 11904: 0xB1F5,\n\t26759 - 11904: 0xD5B1,\n\t26760 - 11904: 0x917E,\n\t26761 - 11904: 0xD5CE,\n\t26762 - 11904: 0xD5D4,\n\t26763 - 11904: 0xD5CC,\n\t26764 - 11904: 0xD5D3,\n\t26767 - 11904: 0xD5C0,\n\t26768 - 11904: 0xD5B2,\n\t26769 - 11904: 0xD5D2,\n\t26770 - 11904: 0xD5C2,\n\t26771 - 11904: 0xB1EA,\n\t26772 - 11904: 0xB1F7,\n\t26774 - 11904: 0xD5CB,\n\t26775 - 11904: 0xB1F0,\n\t26776 - 11904: 0x93F4,\n\t26779 - 11904: 0xD5CA,\n\t26780 - 11904: 0xD5B3,\n\t26781 - 11904: 0xB1F8,\n\t26783 - 11904: 0xB1FA,\n\t26784 - 11904: 0xD5CD,\n\t26785 - 11904: 0xB1FB,\n\t26786 - 11904: 0xB1E9,\n\t26787 - 11904: 0xD5BA,\n\t26788 - 11904: 0xD5CF,\n\t26790 - 11904: 0xFB7C,\n\t26791 - 11904: 0xB1EF,\n\t26792 - 11904: 0xB1F9,\n\t26793 - 11904: 0xD5BC,\n\t26794 - 11904: 0xD5C6,\n\t26795 - 11904: 0xD5B7,\n\t26796 - 11904: 0xD5BB,\n\t26797 - 11904: 0xB1F4,\n\t26798 - 11904: 0xD5B6,\n\t26799 - 11904: 0xB1E8,\n\t26800 - 11904: 0xB1F1,\n\t26801 - 11904: 0xB1EE,\n\t26802 - 11904: 0xD5BF,\n\t26803 - 11904: 0xAEDE,\n\t26804 - 11904: 0xD9C0,\n\t26805 - 11904: 0xB1EB,\n\t26806 - 11904: 0x93E7,\n\t26809 - 11904: 0x97EF,\n\t26813 - 11904: 0xFE4A,\n\t26819 - 11904: 0xFD45,\n\t26820 - 11904: 0xB1F3,\n\t26821 - 11904: 0x96A5,\n\t26822 - 11904: 0xD9C3,\n\t26823 - 11904: 0xD9D9,\n\t26824 - 11904: 0xD9CE,\n\t26825 - 11904: 0xB4D6,\n\t26826 - 11904: 0xFEE0,\n\t26827 - 11904: 0xB4D1,\n\t26828 - 11904: 0xD9BD,\n\t26829 - 11904: 0xB4D2,\n\t26830 - 11904: 0xD9CD,\n\t26832 - 11904: 0xD9C6,\n\t26833 - 11904: 0xD9D3,\n\t26834 - 11904: 0xB4CE,\n\t26835 - 11904: 0xD9AB,\n\t26836 - 11904: 0xD9D5,\n\t26837 - 11904: 0xB4C4,\n\t26838 - 11904: 0xD9B3,\n\t26839 - 11904: 0xB4C7,\n\t26840 - 11904: 0xB4C6,\n\t26842 - 11904: 0xB4D7,\n\t26844 - 11904: 0xD9AD,\n\t26845 - 11904: 0xD9CF,\n\t26846 - 11904: 0xD9D0,\n\t26847 - 11904: 0xB4C9,\n\t26848 - 11904: 0xB4C5,\n\t26849 - 11904: 0xD9BB,\n\t26851 - 11904: 0xB4D0,\n\t26852 - 11904: 0xD9B6,\n\t26854 - 11904: 0xD9D1,\n\t26855 - 11904: 0xB4CC,\n\t26856 - 11904: 0xD9C9,\n\t26857 - 11904: 0xD9D6,\n\t26858 - 11904: 0xD9B0,\n\t26859 - 11904: 0xD9B5,\n\t26860 - 11904: 0xD9AF,\n\t26862 - 11904: 0xB4CB,\n\t26863 - 11904: 0xD9C2,\n\t26864 - 11904: 0xDDDE,\n\t26865 - 11904: 0xD9B1,\n\t26866 - 11904: 0xB4CF,\n\t26867 - 11904: 0xD9BA,\n\t26868 - 11904: 0xD9D2,\n\t26869 - 11904: 0xB4CA,\n\t26870 - 11904: 0xD9B7,\n\t26871 - 11904: 0xD9B4,\n\t26872 - 11904: 0xD9C5,\n\t26873 - 11904: 0xB4CD,\n\t26874 - 11904: 0xB4C3,\n\t26875 - 11904: 0xB4D9,\n\t26876 - 11904: 0xD9C8,\n\t26877 - 11904: 0xD9C7,\n\t26880 - 11904: 0xFD48,\n\t26881 - 11904: 0xFD47,\n\t26882 - 11904: 0xFEF2,\n\t26883 - 11904: 0xFE6A,\n\t26884 - 11904: 0xD9AC,\n\t26885 - 11904: 0xB4C8,\n\t26886 - 11904: 0xD9D4,\n\t26887 - 11904: 0xD9BC,\n\t26888 - 11904: 0xD9BE,\n\t26889 - 11904: 0x8DBD,\n\t26890 - 11904: 0xD9CB,\n\t26891 - 11904: 0xD9CA,\n\t26892 - 11904: 0xD9AA,\n\t26893 - 11904: 0xB4D3,\n\t26894 - 11904: 0xB4D5,\n\t26895 - 11904: 0xD9B2,\n\t26896 - 11904: 0xD9B9,\n\t26897 - 11904: 0xD9C1,\n\t26898 - 11904: 0xB4D4,\n\t26899 - 11904: 0xD9B8,\n\t26900 - 11904: 0xD9C4,\n\t26901 - 11904: 0xD9D7,\n\t26903 - 11904: 0xD9CC,\n\t26904 - 11904: 0x9BA1,\n\t26905 - 11904: 0x8CA2,\n\t26906 - 11904: 0x9AB7,\n\t26907 - 11904: 0x8EFC,\n\t26917 - 11904: 0xD9D8,\n\t26922 - 11904: 0xD9AE,\n\t26924 - 11904: 0x9FA1,\n\t26927 - 11904: 0xDDF2,\n\t26928 - 11904: 0xB7A6,\n\t26930 - 11904: 0xDDF0,\n\t26931 - 11904: 0xDDDB,\n\t26932 - 11904: 0xDDE0,\n\t26933 - 11904: 0xDDD9,\n\t26934 - 11904: 0xFD51,\n\t26935 - 11904: 0xDDEC,\n\t26936 - 11904: 0xDDCB,\n\t26937 - 11904: 0xDDD2,\n\t26939 - 11904: 0xDDEA,\n\t26940 - 11904: 0xDDF4,\n\t26941 - 11904: 0xDDDC,\n\t26942 - 11904: 0xFAAD,\n\t26943 - 11904: 0xDDCF,\n\t26944 - 11904: 0xDDE2,\n\t26945 - 11904: 0xDDE7,\n\t26946 - 11904: 0xDDD3,\n\t26947 - 11904: 0x8DBE,\n\t26948 - 11904: 0xDDE4,\n\t26949 - 11904: 0xDDD0,\n\t26950 - 11904: 0x89A4,\n\t26952 - 11904: 0xDDD7,\n\t26953 - 11904: 0xDDD8,\n\t26954 - 11904: 0xB7A8,\n\t26955 - 11904: 0xDDEB,\n\t26956 - 11904: 0xDDE9,\n\t26958 - 11904: 0xDDCC,\n\t26959 - 11904: 0xDDEE,\n\t26961 - 11904: 0xDDEF,\n\t26962 - 11904: 0xDDF1,\n\t26963 - 11904: 0xB7AC,\n\t26964 - 11904: 0xB7A4,\n\t26965 - 11904: 0x9AD9,\n\t26966 - 11904: 0xD5B8,\n\t26967 - 11904: 0xDDD4,\n\t26968 - 11904: 0xDDE6,\n\t26969 - 11904: 0xDDD5,\n\t26970 - 11904: 0xB7A1,\n\t26971 - 11904: 0xB7B1,\n\t26972 - 11904: 0xDDED,\n\t26973 - 11904: 0xB7AF,\n\t26974 - 11904: 0xB7AB,\n\t26975 - 11904: 0xDDCA,\n\t26976 - 11904: 0xB7A3,\n\t26977 - 11904: 0xFD4E,\n\t26978 - 11904: 0xDDCD,\n\t26979 - 11904: 0xB7B0,\n\t26980 - 11904: 0x8DC0,\n\t26981 - 11904: 0xDDDD,\n\t26982 - 11904: 0xDDC9,\n\t26983 - 11904: 0x97F0,\n\t26984 - 11904: 0xB7A9,\n\t26985 - 11904: 0xDDE1,\n\t26986 - 11904: 0xDDD1,\n\t26987 - 11904: 0xB7AA,\n\t26988 - 11904: 0xDDDA,\n\t26989 - 11904: 0xB77E,\n\t26990 - 11904: 0xB4D8,\n\t26991 - 11904: 0xDDE3,\n\t26992 - 11904: 0xD9BF,\n\t26993 - 11904: 0xDDCE,\n\t26994 - 11904: 0x93B4,\n\t26995 - 11904: 0xFD44,\n\t26996 - 11904: 0xDDE8,\n\t26997 - 11904: 0xB7A5,\n\t26998 - 11904: 0xDDE5,\n\t26999 - 11904: 0xB7A2,\n\t27000 - 11904: 0xDDDF,\n\t27001 - 11904: 0xB7AD,\n\t27002 - 11904: 0xDDD6,\n\t27003 - 11904: 0xDDF3,\n\t27008 - 11904: 0x9FA7,\n\t27010 - 11904: 0xB7A7,\n\t27011 - 11904: 0xDEC6,\n\t27013 - 11904: 0x8DC2,\n\t27014 - 11904: 0xB7AE,\n\t27018 - 11904: 0x99B6,\n\t27021 - 11904: 0xE24A,\n\t27022 - 11904: 0xE248,\n\t27024 - 11904: 0xE25E,\n\t27025 - 11904: 0xE246,\n\t27027 - 11904: 0xE258,\n\t27028 - 11904: 0xB77D,\n\t27029 - 11904: 0xBA5F,\n\t27030 - 11904: 0xE242,\n\t27031 - 11904: 0xE25D,\n\t27032 - 11904: 0xFD52,\n\t27033 - 11904: 0xE247,\n\t27034 - 11904: 0xE255,\n\t27035 - 11904: 0xBA64,\n\t27036 - 11904: 0xBA5D,\n\t27038 - 11904: 0xE25B,\n\t27039 - 11904: 0x8DC1,\n\t27040 - 11904: 0xE240,\n\t27041 - 11904: 0xE25A,\n\t27042 - 11904: 0x8E46,\n\t27043 - 11904: 0xBA6F,\n\t27044 - 11904: 0xE251,\n\t27045 - 11904: 0xE261,\n\t27046 - 11904: 0xBA6D,\n\t27047 - 11904: 0xE249,\n\t27048 - 11904: 0xBA5E,\n\t27049 - 11904: 0xE24B,\n\t27050 - 11904: 0xE259,\n\t27051 - 11904: 0xBA67,\n\t27052 - 11904: 0xE244,\n\t27053 - 11904: 0xBA6B,\n\t27054 - 11904: 0xBA61,\n\t27055 - 11904: 0xE24D,\n\t27056 - 11904: 0xE243,\n\t27057 - 11904: 0xE1FC,\n\t27058 - 11904: 0xA0D1,\n\t27059 - 11904: 0xE257,\n\t27060 - 11904: 0xBA68,\n\t27061 - 11904: 0xE260,\n\t27062 - 11904: 0xE1FD,\n\t27063 - 11904: 0xBA65,\n\t27065 - 11904: 0xE253,\n\t27067 - 11904: 0xBA66,\n\t27068 - 11904: 0xE245,\n\t27069 - 11904: 0xE250,\n\t27070 - 11904: 0xE24C,\n\t27071 - 11904: 0xE24E,\n\t27072 - 11904: 0x9FCA,\n\t27073 - 11904: 0xBA60,\n\t27074 - 11904: 0xE25F,\n\t27075 - 11904: 0xBA6E,\n\t27076 - 11904: 0xE24F,\n\t27078 - 11904: 0xE262,\n\t27081 - 11904: 0xE1FE,\n\t27082 - 11904: 0xE254,\n\t27083 - 11904: 0xBA63,\n\t27084 - 11904: 0xBA6C,\n\t27085 - 11904: 0xBA6A,\n\t27086 - 11904: 0xE241,\n\t27087 - 11904: 0xE256,\n\t27088 - 11904: 0xBA69,\n\t27089 - 11904: 0x92CF,\n\t27091 - 11904: 0xBA62,\n\t27092 - 11904: 0xE252,\n\t27093 - 11904: 0x9CF4,\n\t27094 - 11904: 0x8DC4,\n\t27097 - 11904: 0xE25C,\n\t27105 - 11904: 0xFD41,\n\t27106 - 11904: 0xE5D5,\n\t27108 - 11904: 0xE5D1,\n\t27109 - 11904: 0xE5CD,\n\t27110 - 11904: 0xE5E1,\n\t27111 - 11904: 0xE5DE,\n\t27112 - 11904: 0xBCCD,\n\t27113 - 11904: 0x9B4C,\n\t27115 - 11904: 0xE5E5,\n\t27116 - 11904: 0xE5D4,\n\t27117 - 11904: 0xBCD8,\n\t27118 - 11904: 0xE5DB,\n\t27121 - 11904: 0xE5D0,\n\t27122 - 11904: 0xE5DA,\n\t27123 - 11904: 0xBCD5,\n\t27124 - 11904: 0xE5EE,\n\t27126 - 11904: 0xE5EB,\n\t27127 - 11904: 0xE5DD,\n\t27128 - 11904: 0xE5CE,\n\t27129 - 11904: 0xFD57,\n\t27130 - 11904: 0xFCEF,\n\t27131 - 11904: 0xE5E2,\n\t27132 - 11904: 0xE5E4,\n\t27133 - 11904: 0xBCD1,\n\t27134 - 11904: 0xE5D8,\n\t27135 - 11904: 0xE5D3,\n\t27136 - 11904: 0xE5CA,\n\t27137 - 11904: 0xBCCE,\n\t27138 - 11904: 0xBCD6,\n\t27139 - 11904: 0x9CDE,\n\t27140 - 11904: 0xE5E7,\n\t27141 - 11904: 0xBCD7,\n\t27142 - 11904: 0xE5CB,\n\t27143 - 11904: 0xE5ED,\n\t27144 - 11904: 0xE5E0,\n\t27145 - 11904: 0xE5E6,\n\t27146 - 11904: 0xBCD4,\n\t27147 - 11904: 0xFD42,\n\t27148 - 11904: 0x986C,\n\t27149 - 11904: 0xE5E3,\n\t27151 - 11904: 0xE5EA,\n\t27153 - 11904: 0xBCD9,\n\t27155 - 11904: 0xBCD3,\n\t27156 - 11904: 0xE5DC,\n\t27157 - 11904: 0xE5CF,\n\t27158 - 11904: 0xE5EF,\n\t27159 - 11904: 0xE5CC,\n\t27160 - 11904: 0xE5E8,\n\t27161 - 11904: 0xBCD0,\n\t27162 - 11904: 0x97F9,\n\t27163 - 11904: 0xE5D6,\n\t27164 - 11904: 0x9558,\n\t27165 - 11904: 0xE5D7,\n\t27166 - 11904: 0xBCCF,\n\t27167 - 11904: 0xBCCC,\n\t27168 - 11904: 0xE5D2,\n\t27169 - 11904: 0xBCD2,\n\t27171 - 11904: 0xBCCB,\n\t27173 - 11904: 0xE5E9,\n\t27174 - 11904: 0xE5EC,\n\t27175 - 11904: 0xE5D9,\n\t27176 - 11904: 0xE9CA,\n\t27177 - 11904: 0x87B6,\n\t27179 - 11904: 0x985E,\n\t27180 - 11904: 0xFE7B,\n\t27181 - 11904: 0x94CD,\n\t27186 - 11904: 0xE9C2,\n\t27187 - 11904: 0x93EE,\n\t27188 - 11904: 0xE9BE,\n\t27189 - 11904: 0xBEF6,\n\t27192 - 11904: 0xBEEB,\n\t27193 - 11904: 0xBEF0,\n\t27194 - 11904: 0xBEEC,\n\t27195 - 11904: 0xE9CC,\n\t27196 - 11904: 0xE9D7,\n\t27197 - 11904: 0xBEEA,\n\t27198 - 11904: 0xE9C4,\n\t27199 - 11904: 0xE9CD,\n\t27200 - 11904: 0xE5DF,\n\t27201 - 11904: 0xE9CE,\n\t27203 - 11904: 0x8CA3,\n\t27204 - 11904: 0xBEF1,\n\t27205 - 11904: 0xFD5A,\n\t27206 - 11904: 0xE9DD,\n\t27207 - 11904: 0xBEF5,\n\t27208 - 11904: 0xBEF8,\n\t27209 - 11904: 0xE9C0,\n\t27211 - 11904: 0xBEF4,\n\t27212 - 11904: 0x93F5,\n\t27213 - 11904: 0xE9DB,\n\t27214 - 11904: 0xE9DC,\n\t27215 - 11904: 0xE9D2,\n\t27216 - 11904: 0xE9D1,\n\t27217 - 11904: 0xE9C9,\n\t27218 - 11904: 0x93EF,\n\t27219 - 11904: 0x8EEA,\n\t27220 - 11904: 0xE9D3,\n\t27221 - 11904: 0xE9DA,\n\t27222 - 11904: 0xE9D9,\n\t27223 - 11904: 0x8F5B,\n\t27224 - 11904: 0xBEEF,\n\t27225 - 11904: 0xBEED,\n\t27226 - 11904: 0xE9CB,\n\t27227 - 11904: 0xE9C8,\n\t27229 - 11904: 0xE9C5,\n\t27230 - 11904: 0xE9D8,\n\t27231 - 11904: 0xBEF7,\n\t27232 - 11904: 0xE9D6,\n\t27233 - 11904: 0xBEF3,\n\t27234 - 11904: 0xBEF2,\n\t27235 - 11904: 0x8C5E,\n\t27236 - 11904: 0xE9D0,\n\t27237 - 11904: 0x8DC6,\n\t27238 - 11904: 0xE9BF,\n\t27239 - 11904: 0xE9C1,\n\t27240 - 11904: 0xE9C3,\n\t27241 - 11904: 0xE9D5,\n\t27242 - 11904: 0xE9CF,\n\t27243 - 11904: 0xBEEE,\n\t27245 - 11904: 0xE9C6,\n\t27247 - 11904: 0xE9D4,\n\t27249 - 11904: 0x8DC8,\n\t27252 - 11904: 0x8DC7,\n\t27254 - 11904: 0xE9C7,\n\t27258 - 11904: 0x93F7,\n\t27262 - 11904: 0xC0CF,\n\t27263 - 11904: 0xED45,\n\t27264 - 11904: 0xC0C8,\n\t27265 - 11904: 0xECF5,\n\t27266 - 11904: 0x8DC9,\n\t27267 - 11904: 0xED41,\n\t27268 - 11904: 0xC0CA,\n\t27269 - 11904: 0xED48,\n\t27271 - 11904: 0xECFC,\n\t27273 - 11904: 0xECF7,\n\t27274 - 11904: 0xFBF2,\n\t27276 - 11904: 0xED49,\n\t27277 - 11904: 0xECF3,\n\t27278 - 11904: 0xECFE,\n\t27279 - 11904: 0x9670,\n\t27280 - 11904: 0xC0D1,\n\t27281 - 11904: 0xED44,\n\t27282 - 11904: 0xED4A,\n\t27283 - 11904: 0xECFD,\n\t27284 - 11904: 0xC0C9,\n\t27285 - 11904: 0xED40,\n\t27286 - 11904: 0xECF4,\n\t27287 - 11904: 0xC0D0,\n\t27289 - 11904: 0x8DCB,\n\t27290 - 11904: 0xED47,\n\t27291 - 11904: 0xECF9,\n\t27292 - 11904: 0xC0CC,\n\t27293 - 11904: 0xFD5C,\n\t27294 - 11904: 0xECFB,\n\t27295 - 11904: 0xECF8,\n\t27296 - 11904: 0xC0D2,\n\t27297 - 11904: 0xECFA,\n\t27298 - 11904: 0xC0CB,\n\t27299 - 11904: 0xC0CE,\n\t27300 - 11904: 0xED43,\n\t27301 - 11904: 0xECF6,\n\t27302 - 11904: 0xED46,\n\t27303 - 11904: 0x8F65,\n\t27304 - 11904: 0xED42,\n\t27307 - 11904: 0x8DCD,\n\t27308 - 11904: 0xC263,\n\t27309 - 11904: 0xEFE7,\n\t27310 - 11904: 0xC268,\n\t27311 - 11904: 0xC269,\n\t27313 - 11904: 0x9DA8,\n\t27314 - 11904: 0x94F9,\n\t27315 - 11904: 0xC262,\n\t27316 - 11904: 0xEFE6,\n\t27317 - 11904: 0x8DCE,\n\t27318 - 11904: 0xEFE3,\n\t27319 - 11904: 0xEFE4,\n\t27320 - 11904: 0xC266,\n\t27321 - 11904: 0xEFDE,\n\t27322 - 11904: 0xEFE2,\n\t27323 - 11904: 0xC265,\n\t27325 - 11904: 0xEFDF,\n\t27326 - 11904: 0x93EA,\n\t27330 - 11904: 0xC267,\n\t27331 - 11904: 0xC264,\n\t27333 - 11904: 0xEFDD,\n\t27334 - 11904: 0xEFE1,\n\t27335 - 11904: 0xEFE5,\n\t27336 - 11904: 0xFD5F,\n\t27337 - 11904: 0x93F0,\n\t27338 - 11904: 0x9FB6,\n\t27339 - 11904: 0xF251,\n\t27340 - 11904: 0xF24E,\n\t27341 - 11904: 0xF257,\n\t27343 - 11904: 0xF256,\n\t27344 - 11904: 0xF254,\n\t27345 - 11904: 0xF24F,\n\t27347 - 11904: 0xC372,\n\t27348 - 11904: 0x8DCF,\n\t27352 - 11904: 0x9763,\n\t27353 - 11904: 0xF250,\n\t27354 - 11904: 0xC371,\n\t27355 - 11904: 0xC0CD,\n\t27356 - 11904: 0xF253,\n\t27357 - 11904: 0xC370,\n\t27358 - 11904: 0xF258,\n\t27359 - 11904: 0xF252,\n\t27360 - 11904: 0xF24D,\n\t27361 - 11904: 0xEFE0,\n\t27365 - 11904: 0xC36F,\n\t27367 - 11904: 0xF24C,\n\t27368 - 11904: 0xF456,\n\t27370 - 11904: 0xF455,\n\t27371 - 11904: 0xF255,\n\t27372 - 11904: 0xC468,\n\t27374 - 11904: 0xF459,\n\t27375 - 11904: 0xF45A,\n\t27376 - 11904: 0xF454,\n\t27377 - 11904: 0xF458,\n\t27379 - 11904: 0xF453,\n\t27382 - 11904: 0x8DD0,\n\t27384 - 11904: 0xF5D1,\n\t27385 - 11904: 0xF457,\n\t27386 - 11904: 0xC4E7,\n\t27387 - 11904: 0xC4E5,\n\t27388 - 11904: 0xF5CF,\n\t27392 - 11904: 0xF5D2,\n\t27394 - 11904: 0xF5CE,\n\t27395 - 11904: 0xF5D0,\n\t27396 - 11904: 0xC4E6,\n\t27397 - 11904: 0x93F1,\n\t27400 - 11904: 0xF6E5,\n\t27401 - 11904: 0xF6E6,\n\t27402 - 11904: 0xC576,\n\t27403 - 11904: 0xF6E4,\n\t27407 - 11904: 0xF7E2,\n\t27408 - 11904: 0xC5CF,\n\t27409 - 11904: 0xF7E0,\n\t27410 - 11904: 0xF7E1,\n\t27411 - 11904: 0xF8AC,\n\t27414 - 11904: 0xC656,\n\t27415 - 11904: 0xF8F3,\n\t27416 - 11904: 0xF8F1,\n\t27417 - 11904: 0xF8F2,\n\t27418 - 11904: 0xF8F4,\n\t27421 - 11904: 0xFD62,\n\t27422 - 11904: 0xF9BB,\n\t27424 - 11904: 0xA4ED,\n\t27425 - 11904: 0xA6B8,\n\t27427 - 11904: 0xAA59,\n\t27429 - 11904: 0xCCE9,\n\t27432 - 11904: 0xCF64,\n\t27436 - 11904: 0xD1F5,\n\t27437 - 11904: 0xD1F7,\n\t27439 - 11904: 0xD1F6,\n\t27441 - 11904: 0xD1F8,\n\t27442 - 11904: 0xB1FD,\n\t27443 - 11904: 0xD5D7,\n\t27444 - 11904: 0xD1F9,\n\t27445 - 11904: 0xFD65,\n\t27446 - 11904: 0xD5D6,\n\t27447 - 11904: 0xD5D8,\n\t27448 - 11904: 0xD5D9,\n\t27449 - 11904: 0xD9DA,\n\t27450 - 11904: 0xB4DB,\n\t27451 - 11904: 0xD9DB,\n\t27452 - 11904: 0xD9DD,\n\t27453 - 11904: 0xB4DC,\n\t27454 - 11904: 0xB4DA,\n\t27455 - 11904: 0xD9DC,\n\t27457 - 11904: 0xDDFA,\n\t27458 - 11904: 0xDDF8,\n\t27459 - 11904: 0xDDF7,\n\t27461 - 11904: 0xDDF6,\n\t27462 - 11904: 0xDDF5,\n\t27463 - 11904: 0xB7B2,\n\t27464 - 11904: 0xDDF9,\n\t27465 - 11904: 0xBA70,\n\t27466 - 11904: 0xE263,\n\t27467 - 11904: 0xE265,\n\t27468 - 11904: 0xBA71,\n\t27469 - 11904: 0xE264,\n\t27470 - 11904: 0xBCDB,\n\t27472 - 11904: 0xBCDA,\n\t27473 - 11904: 0xE5F0,\n\t27474 - 11904: 0x9FDB,\n\t27476 - 11904: 0xE9DF,\n\t27477 - 11904: 0xE9DE,\n\t27478 - 11904: 0xE9E0,\n\t27479 - 11904: 0x93F8,\n\t27481 - 11904: 0xBEF9,\n\t27483 - 11904: 0xED4B,\n\t27484 - 11904: 0xC0D3,\n\t27486 - 11904: 0xEFE8,\n\t27487 - 11904: 0xC26A,\n\t27488 - 11904: 0xF259,\n\t27489 - 11904: 0xC577,\n\t27490 - 11904: 0xA4EE,\n\t27491 - 11904: 0xA5BF,\n\t27492 - 11904: 0xA6B9,\n\t27493 - 11904: 0xA842,\n\t27494 - 11904: 0xAA5A,\n\t27495 - 11904: 0xAA5B,\n\t27498 - 11904: 0xAC6E,\n\t27501 - 11904: 0xD1FA,\n\t27503 - 11904: 0x8BF7,\n\t27506 - 11904: 0xB7B3,\n\t27508 - 11904: 0xFD66,\n\t27510 - 11904: 0xE6D1,\n\t27511 - 11904: 0xBEFA,\n\t27512 - 11904: 0xC26B,\n\t27513 - 11904: 0xA4EF,\n\t27514 - 11904: 0x8BCF,\n\t27515 - 11904: 0xA6BA,\n\t27518 - 11904: 0xCCEB,\n\t27519 - 11904: 0xAA5C,\n\t27520 - 11904: 0xCCEA,\n\t27521 - 11904: 0x8DD1,\n\t27522 - 11904: 0xCF65,\n\t27523 - 11904: 0xAC6F,\n\t27524 - 11904: 0xCF66,\n\t27526 - 11904: 0xAC70,\n\t27528 - 11904: 0xD1FC,\n\t27529 - 11904: 0xAEEE,\n\t27530 - 11904: 0xAEED,\n\t27532 - 11904: 0xD5DE,\n\t27533 - 11904: 0xD5DC,\n\t27534 - 11904: 0xD5DD,\n\t27535 - 11904: 0xD5DB,\n\t27537 - 11904: 0xD5DA,\n\t27540 - 11904: 0xD9DE,\n\t27541 - 11904: 0xD9E1,\n\t27542 - 11904: 0xB4DE,\n\t27543 - 11904: 0xD9DF,\n\t27544 - 11904: 0xB4DD,\n\t27545 - 11904: 0xD9E0,\n\t27547 - 11904: 0xDDFB,\n\t27550 - 11904: 0xE266,\n\t27551 - 11904: 0xE267,\n\t27552 - 11904: 0xE268,\n\t27554 - 11904: 0xE5F3,\n\t27555 - 11904: 0xE5F2,\n\t27556 - 11904: 0xBCDC,\n\t27557 - 11904: 0xE5F1,\n\t27558 - 11904: 0xE5F4,\n\t27559 - 11904: 0xE9E1,\n\t27562 - 11904: 0xE9E2,\n\t27563 - 11904: 0xE9E3,\n\t27565 - 11904: 0xED4C,\n\t27566 - 11904: 0xC0D4,\n\t27567 - 11904: 0xC26C,\n\t27568 - 11904: 0xF25A,\n\t27570 - 11904: 0xC4E8,\n\t27571 - 11904: 0xC95F,\n\t27573 - 11904: 0xAC71,\n\t27574 - 11904: 0xCF67,\n\t27575 - 11904: 0xAEEF,\n\t27578 - 11904: 0xB1FE,\n\t27580 - 11904: 0xB4DF,\n\t27581 - 11904: 0xD9E2,\n\t27583 - 11904: 0xB7B5,\n\t27584 - 11904: 0xB7B4,\n\t27585 - 11904: 0x8DD2,\n\t27587 - 11904: 0xE269,\n\t27588 - 11904: 0xE26A,\n\t27589 - 11904: 0xBCDD,\n\t27590 - 11904: 0xBCDE,\n\t27591 - 11904: 0xE9E5,\n\t27592 - 11904: 0xE9E4,\n\t27593 - 11904: 0xEFE9,\n\t27594 - 11904: 0xF7E3,\n\t27595 - 11904: 0xA4F0,\n\t27596 - 11904: 0xC960,\n\t27597 - 11904: 0xA5C0,\n\t27599 - 11904: 0xA843,\n\t27600 - 11904: 0xCB48,\n\t27602 - 11904: 0xAC72,\n\t27603 - 11904: 0xB7B6,\n\t27604 - 11904: 0xA4F1,\n\t27606 - 11904: 0xCF68,\n\t27607 - 11904: 0xAC73,\n\t27608 - 11904: 0xCF69,\n\t27610 - 11904: 0xC0D5,\n\t27611 - 11904: 0xA4F2,\n\t27612 - 11904: 0xFD71,\n\t27614 - 11904: 0xCCEC,\n\t27616 - 11904: 0xCF6A,\n\t27617 - 11904: 0xFD6F,\n\t27618 - 11904: 0xD242,\n\t27619 - 11904: 0xD241,\n\t27620 - 11904: 0xD1FE,\n\t27622 - 11904: 0xD1FD,\n\t27623 - 11904: 0xD243,\n\t27624 - 11904: 0xD240,\n\t27626 - 11904: 0x8DD3,\n\t27627 - 11904: 0xB240,\n\t27628 - 11904: 0xB241,\n\t27631 - 11904: 0xB4E0,\n\t27632 - 11904: 0xD9E3,\n\t27634 - 11904: 0xD9E4,\n\t27635 - 11904: 0xD9E5,\n\t27639 - 11904: 0xDE41,\n\t27640 - 11904: 0xDE42,\n\t27641 - 11904: 0xDE40,\n\t27642 - 11904: 0x9FE7,\n\t27643 - 11904: 0xDDFD,\n\t27644 - 11904: 0xDDFE,\n\t27645 - 11904: 0xB7B7,\n\t27646 - 11904: 0xE26B,\n\t27647 - 11904: 0xE5F7,\n\t27648 - 11904: 0xE5F6,\n\t27649 - 11904: 0xE5F5,\n\t27650 - 11904: 0xE5F8,\n\t27651 - 11904: 0xE9E7,\n\t27652 - 11904: 0xE9E6,\n\t27653 - 11904: 0xBEFB,\n\t27654 - 11904: 0xE9E8,\n\t27656 - 11904: 0xC0D6,\n\t27657 - 11904: 0xED4D,\n\t27659 - 11904: 0xEFEA,\n\t27660 - 11904: 0xF25B,\n\t27661 - 11904: 0xF6E7,\n\t27663 - 11904: 0xA4F3,\n\t27664 - 11904: 0xA5C2,\n\t27665 - 11904: 0xA5C1,\n\t27667 - 11904: 0xAA5D,\n\t27668 - 11904: 0xC961,\n\t27669 - 11904: 0xC97E,\n\t27670 - 11904: 0xA6BB,\n\t27672 - 11904: 0xC9F7,\n\t27673 - 11904: 0xCB49,\n\t27674 - 11904: 0xCB4A,\n\t27675 - 11904: 0xAA5E,\n\t27676 - 11904: 0x90BD,\n\t27677 - 11904: 0xCCED,\n\t27679 - 11904: 0xAC74,\n\t27680 - 11904: 0xCF6B,\n\t27681 - 11904: 0xCF6C,\n\t27683 - 11904: 0xAEF0,\n\t27684 - 11904: 0xAEF4,\n\t27685 - 11904: 0xD244,\n\t27686 - 11904: 0xAEF3,\n\t27687 - 11904: 0xAEF1,\n\t27688 - 11904: 0xAEF2,\n\t27690 - 11904: 0xD5DF,\n\t27691 - 11904: 0xB242,\n\t27692 - 11904: 0xB4E3,\n\t27694 - 11904: 0xB4E1,\n\t27695 - 11904: 0xB4E2,\n\t27696 - 11904: 0xD9E6,\n\t27697 - 11904: 0x9FD0,\n\t27699 - 11904: 0xBA72,\n\t27700 - 11904: 0xA4F4,\n\t27701 - 11904: 0x8BD0,\n\t27702 - 11904: 0xC9A1,\n\t27703 - 11904: 0xFD72,\n\t27704 - 11904: 0xA5C3,\n\t27705 - 11904: 0x9CAE,\n\t27706 - 11904: 0x8BD1,\n\t27707 - 11904: 0xC9A4,\n\t27709 - 11904: 0x8ADB,\n\t27710 - 11904: 0xA5C6,\n\t27711 - 11904: 0xC9A3,\n\t27712 - 11904: 0xA5C5,\n\t27713 - 11904: 0xA5C4,\n\t27714 - 11904: 0xA844,\n\t27715 - 11904: 0xC9A2,\n\t27718 - 11904: 0xC9F8,\n\t27721 - 11904: 0xFAE4,\n\t27722 - 11904: 0xC9FC,\n\t27723 - 11904: 0xC9FE,\n\t27724 - 11904: 0xCA40,\n\t27725 - 11904: 0xA6C5,\n\t27726 - 11904: 0xA6C6,\n\t27727 - 11904: 0xC9FB,\n\t27728 - 11904: 0xA6C1,\n\t27730 - 11904: 0xC9F9,\n\t27732 - 11904: 0xC9FD,\n\t27733 - 11904: 0xA6C2,\n\t27735 - 11904: 0xA6BD,\n\t27736 - 11904: 0x95CE,\n\t27737 - 11904: 0xA6BE,\n\t27738 - 11904: 0xFD76,\n\t27739 - 11904: 0xA6C4,\n\t27740 - 11904: 0xC9FA,\n\t27741 - 11904: 0xA6BC,\n\t27742 - 11904: 0xA845,\n\t27743 - 11904: 0xA6BF,\n\t27744 - 11904: 0xA6C0,\n\t27745 - 11904: 0xA6C3,\n\t27749 - 11904: 0xCB5B,\n\t27750 - 11904: 0xCB59,\n\t27751 - 11904: 0xCB4C,\n\t27752 - 11904: 0xA851,\n\t27753 - 11904: 0xCB53,\n\t27754 - 11904: 0xA84C,\n\t27755 - 11904: 0xCB4D,\n\t27757 - 11904: 0xCB55,\n\t27758 - 11904: 0xFB62,\n\t27759 - 11904: 0xCB52,\n\t27760 - 11904: 0xA84F,\n\t27761 - 11904: 0xCB51,\n\t27762 - 11904: 0xA856,\n\t27763 - 11904: 0xCB5A,\n\t27764 - 11904: 0xA858,\n\t27765 - 11904: 0x8DD4,\n\t27766 - 11904: 0xA85A,\n\t27768 - 11904: 0xCB4B,\n\t27769 - 11904: 0xFD78,\n\t27770 - 11904: 0xA84D,\n\t27771 - 11904: 0xCB5C,\n\t27773 - 11904: 0xA854,\n\t27774 - 11904: 0xA857,\n\t27775 - 11904: 0x8EE3,\n\t27776 - 11904: 0xCD45,\n\t27777 - 11904: 0xA847,\n\t27778 - 11904: 0xA85E,\n\t27779 - 11904: 0xA855,\n\t27780 - 11904: 0xCB4E,\n\t27781 - 11904: 0xA84A,\n\t27782 - 11904: 0xA859,\n\t27783 - 11904: 0xCB56,\n\t27784 - 11904: 0xA848,\n\t27785 - 11904: 0xA849,\n\t27786 - 11904: 0xCD43,\n\t27787 - 11904: 0xCB4F,\n\t27788 - 11904: 0xA850,\n\t27789 - 11904: 0xA85B,\n\t27790 - 11904: 0xCB5D,\n\t27791 - 11904: 0xCB50,\n\t27792 - 11904: 0xA84E,\n\t27794 - 11904: 0xA853,\n\t27795 - 11904: 0xCCEE,\n\t27796 - 11904: 0xA85C,\n\t27797 - 11904: 0xCB57,\n\t27798 - 11904: 0xA852,\n\t27800 - 11904: 0xA85D,\n\t27801 - 11904: 0xA846,\n\t27802 - 11904: 0xCB54,\n\t27803 - 11904: 0xA84B,\n\t27804 - 11904: 0xFDB7,\n\t27805 - 11904: 0xCD44,\n\t27807 - 11904: 0x9076,\n\t27810 - 11904: 0x98C6,\n\t27818 - 11904: 0x8DD5,\n\t27819 - 11904: 0xAA6A,\n\t27820 - 11904: 0xAA7A,\n\t27821 - 11904: 0xCCF5,\n\t27822 - 11904: 0xAA71,\n\t27823 - 11904: 0x97D1,\n\t27824 - 11904: 0xCD4B,\n\t27825 - 11904: 0xAA62,\n\t27826 - 11904: 0x9EB6,\n\t27827 - 11904: 0xAA65,\n\t27828 - 11904: 0xCD42,\n\t27830 - 11904: 0xCCF3,\n\t27831 - 11904: 0xCCF7,\n\t27832 - 11904: 0xAA6D,\n\t27833 - 11904: 0xAA6F,\n\t27834 - 11904: 0xCCFA,\n\t27835 - 11904: 0xAA76,\n\t27836 - 11904: 0xAA68,\n\t27837 - 11904: 0xAA66,\n\t27838 - 11904: 0xAA67,\n\t27839 - 11904: 0xAA75,\n\t27840 - 11904: 0xCD47,\n\t27841 - 11904: 0xAA70,\n\t27842 - 11904: 0xCCF9,\n\t27843 - 11904: 0xCCFB,\n\t27844 - 11904: 0xAA6E,\n\t27845 - 11904: 0xAA73,\n\t27846 - 11904: 0xCCFC,\n\t27847 - 11904: 0xCD4A,\n\t27849 - 11904: 0xAC75,\n\t27850 - 11904: 0xAA79,\n\t27851 - 11904: 0xFAC7,\n\t27852 - 11904: 0xAA63,\n\t27853 - 11904: 0xCD49,\n\t27854 - 11904: 0xA042,\n\t27855 - 11904: 0xCD4D,\n\t27856 - 11904: 0xCCF8,\n\t27857 - 11904: 0xCD4F,\n\t27858 - 11904: 0xCD40,\n\t27859 - 11904: 0xAA6C,\n\t27860 - 11904: 0xCCF4,\n\t27861 - 11904: 0xAA6B,\n\t27862 - 11904: 0xAA7D,\n\t27863 - 11904: 0xAA72,\n\t27865 - 11904: 0xCCF2,\n\t27866 - 11904: 0xCF75,\n\t27867 - 11904: 0xAA78,\n\t27868 - 11904: 0xAA7C,\n\t27869 - 11904: 0xCD41,\n\t27870 - 11904: 0xCD46,\n\t27871 - 11904: 0x9873,\n\t27872 - 11904: 0xAA7E,\n\t27873 - 11904: 0xAA77,\n\t27874 - 11904: 0xAA69,\n\t27875 - 11904: 0xAA5F,\n\t27877 - 11904: 0xAA64,\n\t27879 - 11904: 0xCCF6,\n\t27880 - 11904: 0xAA60,\n\t27881 - 11904: 0xCD4E,\n\t27882 - 11904: 0x9FFC,\n\t27883 - 11904: 0xCCF0,\n\t27884 - 11904: 0xCCEF,\n\t27885 - 11904: 0xCCFD,\n\t27886 - 11904: 0xCCF1,\n\t27887 - 11904: 0xAA7B,\n\t27888 - 11904: 0xAEF5,\n\t27889 - 11904: 0xAA74,\n\t27890 - 11904: 0xCCFE,\n\t27891 - 11904: 0xAA61,\n\t27893 - 11904: 0xACA6,\n\t27897 - 11904: 0xCD4C,\n\t27903 - 11904: 0x8CA5,\n\t27904 - 11904: 0xCF7C,\n\t27905 - 11904: 0xCFA1,\n\t27906 - 11904: 0x8DD7,\n\t27907 - 11904: 0xCFA4,\n\t27908 - 11904: 0xCF77,\n\t27909 - 11904: 0x92FB,\n\t27910 - 11904: 0x8DD8,\n\t27911 - 11904: 0xCFA7,\n\t27912 - 11904: 0xCFAA,\n\t27913 - 11904: 0xCFAC,\n\t27914 - 11904: 0xCF74,\n\t27915 - 11904: 0xAC76,\n\t27916 - 11904: 0xAC7B,\n\t27917 - 11904: 0xD249,\n\t27918 - 11904: 0xACAD,\n\t27919 - 11904: 0xCFA5,\n\t27920 - 11904: 0xCFAD,\n\t27921 - 11904: 0xCF7B,\n\t27922 - 11904: 0xCF73,\n\t27926 - 11904: 0xD264,\n\t27927 - 11904: 0xAC7E,\n\t27928 - 11904: 0xCFA2,\n\t27929 - 11904: 0xCF78,\n\t27930 - 11904: 0xCF7A,\n\t27931 - 11904: 0xACA5,\n\t27933 - 11904: 0xCF7D,\n\t27934 - 11904: 0xAC7D,\n\t27935 - 11904: 0xCF70,\n\t27936 - 11904: 0xCFA8,\n\t27938 - 11904: 0xCFAB,\n\t27940 - 11904: 0x944F,\n\t27941 - 11904: 0xAC7A,\n\t27942 - 11904: 0x8DD9,\n\t27943 - 11904: 0xACA8,\n\t27944 - 11904: 0xCF6D,\n\t27945 - 11904: 0xACAA,\n\t27946 - 11904: 0xAC78,\n\t27947 - 11904: 0xACAE,\n\t27948 - 11904: 0xCFA9,\n\t27949 - 11904: 0xCF6F,\n\t27950 - 11904: 0xACAB,\n\t27951 - 11904: 0xD25E,\n\t27952 - 11904: 0xCD48,\n\t27953 - 11904: 0xAC7C,\n\t27954 - 11904: 0xAC77,\n\t27955 - 11904: 0xCF76,\n\t27956 - 11904: 0xCF6E,\n\t27957 - 11904: 0xACAC,\n\t27958 - 11904: 0xACA4,\n\t27959 - 11904: 0xCFA3,\n\t27960 - 11904: 0xACA9,\n\t27961 - 11904: 0xACA7,\n\t27962 - 11904: 0xCF79,\n\t27963 - 11904: 0xACA1,\n\t27964 - 11904: 0xCF71,\n\t27965 - 11904: 0xACA2,\n\t27966 - 11904: 0xACA3,\n\t27967 - 11904: 0xCF72,\n\t27968 - 11904: 0xCFA6,\n\t27969 - 11904: 0xAC79,\n\t27970 - 11904: 0xCF7E,\n\t27982 - 11904: 0x896B,\n\t27991 - 11904: 0x97CE,\n\t27992 - 11904: 0xD24C,\n\t27993 - 11904: 0xAEFD,\n\t27994 - 11904: 0xAF43,\n\t27995 - 11904: 0xFAF3,\n\t27996 - 11904: 0xFDAE,\n\t27998 - 11904: 0xD255,\n\t27999 - 11904: 0xD25B,\n\t28000 - 11904: 0xD257,\n\t28001 - 11904: 0xD24A,\n\t28002 - 11904: 0xD24D,\n\t28003 - 11904: 0xD246,\n\t28004 - 11904: 0xD247,\n\t28005 - 11904: 0xAF4A,\n\t28006 - 11904: 0xAEFA,\n\t28007 - 11904: 0xD256,\n\t28008 - 11904: 0xD25F,\n\t28009 - 11904: 0xAF45,\n\t28010 - 11904: 0xAEF6,\n\t28012 - 11904: 0xAF40,\n\t28013 - 11904: 0xD24E,\n\t28014 - 11904: 0xAF42,\n\t28015 - 11904: 0xD24F,\n\t28016 - 11904: 0xD259,\n\t28017 - 11904: 0xFBAF,\n\t28018 - 11904: 0x92B7,\n\t28020 - 11904: 0xAF44,\n\t28021 - 11904: 0xD268,\n\t28022 - 11904: 0xD248,\n\t28023 - 11904: 0xAEFC,\n\t28024 - 11904: 0xAEFB,\n\t28025 - 11904: 0xAF48,\n\t28026 - 11904: 0xD245,\n\t28027 - 11904: 0xD266,\n\t28028 - 11904: 0xD25A,\n\t28029 - 11904: 0xD267,\n\t28030 - 11904: 0xD261,\n\t28031 - 11904: 0xD253,\n\t28032 - 11904: 0xD262,\n\t28033 - 11904: 0x8DDA,\n\t28034 - 11904: 0xD25C,\n\t28035 - 11904: 0xD265,\n\t28036 - 11904: 0xD263,\n\t28037 - 11904: 0xAF49,\n\t28038 - 11904: 0xD254,\n\t28039 - 11904: 0xAEF9,\n\t28040 - 11904: 0xAEF8,\n\t28041 - 11904: 0xAF41,\n\t28042 - 11904: 0xAF47,\n\t28043 - 11904: 0xD260,\n\t28044 - 11904: 0xAF46,\n\t28045 - 11904: 0xD251,\n\t28046 - 11904: 0xB243,\n\t28047 - 11904: 0x9C5A,\n\t28048 - 11904: 0xD269,\n\t28049 - 11904: 0xD250,\n\t28050 - 11904: 0xD24B,\n\t28051 - 11904: 0xAEFE,\n\t28052 - 11904: 0xAF4B,\n\t28053 - 11904: 0xAEF7,\n\t28054 - 11904: 0xFDAD,\n\t28055 - 11904: 0xD258,\n\t28056 - 11904: 0xD25D,\n\t28068 - 11904: 0x8DDC,\n\t28069 - 11904: 0x9444,\n\t28074 - 11904: 0xB265,\n\t28075 - 11904: 0xD5E1,\n\t28076 - 11904: 0xD5E5,\n\t28078 - 11904: 0xB252,\n\t28079 - 11904: 0xB250,\n\t28081 - 11904: 0x8DDD,\n\t28082 - 11904: 0xB247,\n\t28083 - 11904: 0xD5E3,\n\t28084 - 11904: 0xD5E2,\n\t28085 - 11904: 0xB25B,\n\t28087 - 11904: 0xD5E8,\n\t28088 - 11904: 0xB255,\n\t28089 - 11904: 0xA0D6,\n\t28090 - 11904: 0xD5FA,\n\t28091 - 11904: 0xD647,\n\t28092 - 11904: 0xB244,\n\t28093 - 11904: 0xD5F7,\n\t28094 - 11904: 0xD5F0,\n\t28095 - 11904: 0xB267,\n\t28096 - 11904: 0xD5E0,\n\t28098 - 11904: 0xD5FC,\n\t28100 - 11904: 0xB264,\n\t28101 - 11904: 0xB258,\n\t28102 - 11904: 0xB263,\n\t28103 - 11904: 0xB24E,\n\t28104 - 11904: 0xD5EC,\n\t28105 - 11904: 0xD5FE,\n\t28106 - 11904: 0xD5F6,\n\t28107 - 11904: 0xB24F,\n\t28108 - 11904: 0xB249,\n\t28109 - 11904: 0xD645,\n\t28111 - 11904: 0xD5FD,\n\t28112 - 11904: 0xD640,\n\t28113 - 11904: 0xB251,\n\t28114 - 11904: 0xB259,\n\t28115 - 11904: 0xD642,\n\t28116 - 11904: 0xD5EA,\n\t28117 - 11904: 0xD5FB,\n\t28118 - 11904: 0xD5EF,\n\t28119 - 11904: 0xD644,\n\t28120 - 11904: 0xB25E,\n\t28121 - 11904: 0xB246,\n\t28122 - 11904: 0xB25C,\n\t28123 - 11904: 0xD5F4,\n\t28124 - 11904: 0xD5F2,\n\t28125 - 11904: 0xD5F3,\n\t28126 - 11904: 0xB253,\n\t28127 - 11904: 0xD5EE,\n\t28128 - 11904: 0xD5ED,\n\t28129 - 11904: 0xB248,\n\t28130 - 11904: 0xD5E7,\n\t28131 - 11904: 0xD646,\n\t28132 - 11904: 0xB24A,\n\t28133 - 11904: 0xD5F1,\n\t28134 - 11904: 0xB268,\n\t28136 - 11904: 0xB262,\n\t28137 - 11904: 0xD5E6,\n\t28138 - 11904: 0xB25F,\n\t28139 - 11904: 0xB25D,\n\t28140 - 11904: 0xB266,\n\t28141 - 11904: 0xD5F8,\n\t28142 - 11904: 0xB261,\n\t28143 - 11904: 0xD252,\n\t28144 - 11904: 0xD5F9,\n\t28145 - 11904: 0xB260,\n\t28146 - 11904: 0xD641,\n\t28147 - 11904: 0xB245,\n\t28148 - 11904: 0xD5F5,\n\t28149 - 11904: 0xB257,\n\t28150 - 11904: 0xD5E9,\n\t28151 - 11904: 0xB256,\n\t28153 - 11904: 0xB254,\n\t28154 - 11904: 0xB24C,\n\t28155 - 11904: 0xB24B,\n\t28156 - 11904: 0xD9E7,\n\t28157 - 11904: 0xD643,\n\t28158 - 11904: 0x8C41,\n\t28160 - 11904: 0xD5EB,\n\t28162 - 11904: 0x97D5,\n\t28163 - 11904: 0xD9FC,\n\t28164 - 11904: 0x944A,\n\t28165 - 11904: 0xB24D,\n\t28170 - 11904: 0x944D,\n\t28175 - 11904: 0x97CB,\n\t28181 - 11904: 0x8DDE,\n\t28184 - 11904: 0x8DDF,\n\t28185 - 11904: 0xB541,\n\t28186 - 11904: 0xB25A,\n\t28187 - 11904: 0xB4EE,\n\t28188 - 11904: 0xD9F6,\n\t28189 - 11904: 0xFDB8,\n\t28191 - 11904: 0xD9EA,\n\t28192 - 11904: 0xB4EB,\n\t28193 - 11904: 0xB4E7,\n\t28194 - 11904: 0xDA49,\n\t28195 - 11904: 0xB4ED,\n\t28196 - 11904: 0xB4F1,\n\t28197 - 11904: 0xB4EC,\n\t28198 - 11904: 0xB4F5,\n\t28199 - 11904: 0xDA4D,\n\t28200 - 11904: 0xDA44,\n\t28201 - 11904: 0x8DE0,\n\t28202 - 11904: 0xFEF9,\n\t28203 - 11904: 0xD9F1,\n\t28204 - 11904: 0xB4FA,\n\t28205 - 11904: 0xB4F4,\n\t28206 - 11904: 0xD9FD,\n\t28207 - 11904: 0xFDBB,\n\t28208 - 11904: 0xDA4A,\n\t28209 - 11904: 0xDA43,\n\t28210 - 11904: 0xB4E8,\n\t28211 - 11904: 0xD9F7,\n\t28212 - 11904: 0xB4F7,\n\t28213 - 11904: 0xDA55,\n\t28214 - 11904: 0xDA56,\n\t28216 - 11904: 0xB4E5,\n\t28217 - 11904: 0xDA48,\n\t28218 - 11904: 0xB4F9,\n\t28219 - 11904: 0xD9FB,\n\t28220 - 11904: 0xD9ED,\n\t28221 - 11904: 0xD9EE,\n\t28222 - 11904: 0xB4FD,\n\t28223 - 11904: 0xD9F2,\n\t28224 - 11904: 0xD9F9,\n\t28225 - 11904: 0xD9F3,\n\t28227 - 11904: 0xB4FB,\n\t28228 - 11904: 0xB544,\n\t28229 - 11904: 0xD9EF,\n\t28230 - 11904: 0xD9E8,\n\t28231 - 11904: 0xD9E9,\n\t28233 - 11904: 0xD9EB,\n\t28234 - 11904: 0xB4EA,\n\t28235 - 11904: 0xD9F8,\n\t28237 - 11904: 0xB4F8,\n\t28238 - 11904: 0xB542,\n\t28239 - 11904: 0xFDC0,\n\t28240 - 11904: 0xFCF9,\n\t28241 - 11904: 0xD9FA,\n\t28242 - 11904: 0xDA53,\n\t28243 - 11904: 0xDA4B,\n\t28244 - 11904: 0xB4E6,\n\t28245 - 11904: 0xDA51,\n\t28246 - 11904: 0xB4F2,\n\t28247 - 11904: 0x8CDD,\n\t28248 - 11904: 0xB4F0,\n\t28249 - 11904: 0xFB7E,\n\t28250 - 11904: 0xDA57,\n\t28251 - 11904: 0xB4EF,\n\t28252 - 11904: 0xDA41,\n\t28253 - 11904: 0xD9F4,\n\t28254 - 11904: 0xD9FE,\n\t28255 - 11904: 0xB547,\n\t28256 - 11904: 0xDA45,\n\t28257 - 11904: 0xDA42,\n\t28258 - 11904: 0xD9F0,\n\t28259 - 11904: 0xB543,\n\t28260 - 11904: 0xDA4F,\n\t28261 - 11904: 0xDA4C,\n\t28262 - 11904: 0xDA54,\n\t28263 - 11904: 0xB4E9,\n\t28264 - 11904: 0xDA40,\n\t28265 - 11904: 0xB546,\n\t28267 - 11904: 0xDA47,\n\t28270 - 11904: 0xB4F3,\n\t28271 - 11904: 0xB4F6,\n\t28273 - 11904: 0xDA46,\n\t28274 - 11904: 0xB545,\n\t28275 - 11904: 0xD9F5,\n\t28276 - 11904: 0xD5E4,\n\t28278 - 11904: 0x92B3,\n\t28279 - 11904: 0xDA50,\n\t28280 - 11904: 0xDA4E,\n\t28281 - 11904: 0xDA52,\n\t28284 - 11904: 0xFDAF,\n\t28294 - 11904: 0x8DE1,\n\t28296 - 11904: 0xD9EC,\n\t28297 - 11904: 0xB540,\n\t28299 - 11904: 0x95D3,\n\t28301 - 11904: 0xDE61,\n\t28302 - 11904: 0xDE60,\n\t28303 - 11904: 0xDE46,\n\t28304 - 11904: 0xB7BD,\n\t28306 - 11904: 0xDE5F,\n\t28307 - 11904: 0xDE49,\n\t28308 - 11904: 0xDE4A,\n\t28310 - 11904: 0xB7C7,\n\t28311 - 11904: 0xDE68,\n\t28312 - 11904: 0xB7C2,\n\t28313 - 11904: 0xDE5E,\n\t28314 - 11904: 0x89C1,\n\t28315 - 11904: 0xDE43,\n\t28316 - 11904: 0xB7C8,\n\t28317 - 11904: 0xB7BE,\n\t28318 - 11904: 0xDE52,\n\t28319 - 11904: 0xDE48,\n\t28320 - 11904: 0xDE4B,\n\t28321 - 11904: 0xDE63,\n\t28322 - 11904: 0xB7B8,\n\t28323 - 11904: 0xDE6A,\n\t28324 - 11904: 0xDE62,\n\t28325 - 11904: 0xB7C1,\n\t28326 - 11904: 0xDE57,\n\t28327 - 11904: 0xB7CC,\n\t28330 - 11904: 0xB7CB,\n\t28331 - 11904: 0xB7C5,\n\t28334 - 11904: 0xDE69,\n\t28335 - 11904: 0xB7B9,\n\t28336 - 11904: 0xDE55,\n\t28337 - 11904: 0xDE4C,\n\t28338 - 11904: 0xDE59,\n\t28339 - 11904: 0xDE65,\n\t28340 - 11904: 0xB7CD,\n\t28341 - 11904: 0xFD68,\n\t28342 - 11904: 0xB7BB,\n\t28343 - 11904: 0xDE54,\n\t28344 - 11904: 0x9CB7,\n\t28345 - 11904: 0xDE4D,\n\t28346 - 11904: 0xB7C4,\n\t28347 - 11904: 0x8DE3,\n\t28348 - 11904: 0xB7C3,\n\t28349 - 11904: 0xDE50,\n\t28350 - 11904: 0xDE5A,\n\t28351 - 11904: 0xDE64,\n\t28352 - 11904: 0xDE47,\n\t28353 - 11904: 0xDE51,\n\t28354 - 11904: 0xB7BC,\n\t28355 - 11904: 0xDE5B,\n\t28356 - 11904: 0xB7C9,\n\t28357 - 11904: 0xB7C0,\n\t28358 - 11904: 0xDE4E,\n\t28359 - 11904: 0xB7BF,\n\t28360 - 11904: 0xDE45,\n\t28361 - 11904: 0xDE53,\n\t28362 - 11904: 0xDE67,\n\t28363 - 11904: 0xB4FE,\n\t28364 - 11904: 0xBAB0,\n\t28365 - 11904: 0xDE56,\n\t28366 - 11904: 0xE26C,\n\t28367 - 11904: 0xDE58,\n\t28368 - 11904: 0xDE66,\n\t28369 - 11904: 0xB7C6,\n\t28370 - 11904: 0xDE4F,\n\t28371 - 11904: 0xB7BA,\n\t28372 - 11904: 0xB7CA,\n\t28373 - 11904: 0xBCF0,\n\t28374 - 11904: 0xDE44,\n\t28376 - 11904: 0xDE5D,\n\t28377 - 11904: 0xFAC0,\n\t28378 - 11904: 0x8DE5,\n\t28379 - 11904: 0xFA64,\n\t28380 - 11904: 0xDE5C,\n\t28381 - 11904: 0x8947,\n\t28386 - 11904: 0x8DE4,\n\t28392 - 11904: 0x8DE7,\n\t28393 - 11904: 0x8DE8,\n\t28395 - 11904: 0xE2AA,\n\t28396 - 11904: 0xBAAD,\n\t28397 - 11904: 0xE27D,\n\t28398 - 11904: 0xE2A4,\n\t28399 - 11904: 0xBAA2,\n\t28401 - 11904: 0xE26E,\n\t28402 - 11904: 0xBAAF,\n\t28404 - 11904: 0xBA77,\n\t28405 - 11904: 0xE26D,\n\t28406 - 11904: 0xE2B0,\n\t28407 - 11904: 0xBAB1,\n\t28408 - 11904: 0xE271,\n\t28409 - 11904: 0xE2A3,\n\t28410 - 11904: 0xFDC7,\n\t28411 - 11904: 0xE273,\n\t28412 - 11904: 0xE2B3,\n\t28413 - 11904: 0xE2AF,\n\t28414 - 11904: 0xBA75,\n\t28415 - 11904: 0xBAA1,\n\t28416 - 11904: 0xE653,\n\t28417 - 11904: 0xBAAE,\n\t28418 - 11904: 0xBA7D,\n\t28419 - 11904: 0xE26F,\n\t28420 - 11904: 0xFDB0,\n\t28421 - 11904: 0xE2AE,\n\t28422 - 11904: 0xBAA3,\n\t28423 - 11904: 0xE2AB,\n\t28424 - 11904: 0xE2B8,\n\t28425 - 11904: 0xE275,\n\t28426 - 11904: 0xE27E,\n\t28427 - 11904: 0x9445,\n\t28428 - 11904: 0x97D6,\n\t28429 - 11904: 0xE2B6,\n\t28430 - 11904: 0xE2AC,\n\t28431 - 11904: 0xBA7C,\n\t28434 - 11904: 0xE27C,\n\t28435 - 11904: 0xBA76,\n\t28436 - 11904: 0xBA74,\n\t28437 - 11904: 0xBAA8,\n\t28438 - 11904: 0xFCC6,\n\t28439 - 11904: 0x9844,\n\t28440 - 11904: 0xE27A,\n\t28441 - 11904: 0xE277,\n\t28442 - 11904: 0xE278,\n\t28444 - 11904: 0xE2B2,\n\t28446 - 11904: 0xE2B7,\n\t28447 - 11904: 0xE2B5,\n\t28448 - 11904: 0xBA7A,\n\t28449 - 11904: 0xE2B9,\n\t28450 - 11904: 0xBA7E,\n\t28451 - 11904: 0xBAA7,\n\t28452 - 11904: 0x8DE9,\n\t28453 - 11904: 0xE270,\n\t28454 - 11904: 0xE5FA,\n\t28455 - 11904: 0xE279,\n\t28457 - 11904: 0xBA78,\n\t28458 - 11904: 0xBAAC,\n\t28459 - 11904: 0xBAA9,\n\t28460 - 11904: 0xBA7B,\n\t28461 - 11904: 0xE2A5,\n\t28462 - 11904: 0xE274,\n\t28463 - 11904: 0xBAAA,\n\t28464 - 11904: 0xE2A7,\n\t28465 - 11904: 0xBAA4,\n\t28466 - 11904: 0xBAA6,\n\t28467 - 11904: 0xBA73,\n\t28468 - 11904: 0x8DEA,\n\t28469 - 11904: 0xE2A9,\n\t28470 - 11904: 0xE2A1,\n\t28471 - 11904: 0xE272,\n\t28472 - 11904: 0xBAA5,\n\t28473 - 11904: 0xE2B1,\n\t28474 - 11904: 0xE2B4,\n\t28475 - 11904: 0xE27B,\n\t28476 - 11904: 0xE2A8,\n\t28477 - 11904: 0xFE50,\n\t28478 - 11904: 0xBA79,\n\t28479 - 11904: 0xBCDF,\n\t28480 - 11904: 0xE2A6,\n\t28481 - 11904: 0xE5F9,\n\t28483 - 11904: 0xE2AD,\n\t28484 - 11904: 0xFDCC,\n\t28494 - 11904: 0xE276,\n\t28495 - 11904: 0xE644,\n\t28496 - 11904: 0xE64E,\n\t28497 - 11904: 0xBCE2,\n\t28498 - 11904: 0xE64D,\n\t28499 - 11904: 0xE659,\n\t28500 - 11904: 0xBCE4,\n\t28501 - 11904: 0xE64B,\n\t28502 - 11904: 0x9DA7,\n\t28503 - 11904: 0xE64F,\n\t28504 - 11904: 0xBCEF,\n\t28506 - 11904: 0xE646,\n\t28507 - 11904: 0xBCE7,\n\t28508 - 11904: 0xFDCD,\n\t28509 - 11904: 0xE652,\n\t28510 - 11904: 0xE9F0,\n\t28511 - 11904: 0xBCF3,\n\t28512 - 11904: 0xBCF2,\n\t28513 - 11904: 0xE654,\n\t28514 - 11904: 0xE643,\n\t28515 - 11904: 0xE65E,\n\t28516 - 11904: 0xBCED,\n\t28518 - 11904: 0xBCE3,\n\t28519 - 11904: 0xE657,\n\t28521 - 11904: 0xE65B,\n\t28522 - 11904: 0xE660,\n\t28523 - 11904: 0xE655,\n\t28524 - 11904: 0xE649,\n\t28525 - 11904: 0xBCE6,\n\t28526 - 11904: 0xBCE9,\n\t28527 - 11904: 0xBCF1,\n\t28528 - 11904: 0xBCEC,\n\t28530 - 11904: 0xE64C,\n\t28531 - 11904: 0xE2A2,\n\t28532 - 11904: 0xFDCF,\n\t28534 - 11904: 0xE648,\n\t28535 - 11904: 0xE65F,\n\t28536 - 11904: 0xBCE8,\n\t28537 - 11904: 0x95D2,\n\t28538 - 11904: 0xBCEB,\n\t28539 - 11904: 0xE661,\n\t28540 - 11904: 0xBCE0,\n\t28541 - 11904: 0xE656,\n\t28542 - 11904: 0xE5FB,\n\t28543 - 11904: 0xE65C,\n\t28544 - 11904: 0xC0DF,\n\t28545 - 11904: 0x8DED,\n\t28546 - 11904: 0xE64A,\n\t28548 - 11904: 0xBCE1,\n\t28549 - 11904: 0xE645,\n\t28550 - 11904: 0xBCE5,\n\t28551 - 11904: 0xE5FC,\n\t28552 - 11904: 0xBAAB,\n\t28553 - 11904: 0xE641,\n\t28554 - 11904: 0xFCBA,\n\t28555 - 11904: 0xE65A,\n\t28556 - 11904: 0xE642,\n\t28557 - 11904: 0xE640,\n\t28558 - 11904: 0xBCEA,\n\t28560 - 11904: 0xE658,\n\t28562 - 11904: 0xE5FE,\n\t28563 - 11904: 0xE651,\n\t28564 - 11904: 0xE650,\n\t28565 - 11904: 0xE65D,\n\t28566 - 11904: 0xE647,\n\t28567 - 11904: 0xBCEE,\n\t28573 - 11904: 0xFDC5,\n\t28574 - 11904: 0xE9F3,\n\t28575 - 11904: 0xFDD2,\n\t28576 - 11904: 0xBF49,\n\t28577 - 11904: 0xBEFE,\n\t28578 - 11904: 0xEA40,\n\t28579 - 11904: 0xE9EB,\n\t28580 - 11904: 0xBF41,\n\t28581 - 11904: 0xE9F7,\n\t28582 - 11904: 0xBF48,\n\t28583 - 11904: 0xBF43,\n\t28584 - 11904: 0xE9F5,\n\t28585 - 11904: 0xED4F,\n\t28586 - 11904: 0xE9FB,\n\t28587 - 11904: 0xEA42,\n\t28588 - 11904: 0xE9FA,\n\t28589 - 11904: 0xE9E9,\n\t28590 - 11904: 0xE9F8,\n\t28591 - 11904: 0xEA44,\n\t28592 - 11904: 0xEA46,\n\t28593 - 11904: 0xBEFD,\n\t28594 - 11904: 0xEA45,\n\t28595 - 11904: 0xBF44,\n\t28596 - 11904: 0xBF4A,\n\t28597 - 11904: 0x9CDC,\n\t28598 - 11904: 0xBF47,\n\t28600 - 11904: 0xE9FE,\n\t28601 - 11904: 0xBF46,\n\t28602 - 11904: 0xE9F9,\n\t28603 - 11904: 0x95CF,\n\t28604 - 11904: 0xE9ED,\n\t28605 - 11904: 0xE9F2,\n\t28606 - 11904: 0x8DEE,\n\t28607 - 11904: 0xE9FD,\n\t28608 - 11904: 0xBF45,\n\t28609 - 11904: 0xBF42,\n\t28610 - 11904: 0xBEFC,\n\t28611 - 11904: 0xBF40,\n\t28612 - 11904: 0xE9F1,\n\t28614 - 11904: 0xE5FD,\n\t28615 - 11904: 0xE9EC,\n\t28616 - 11904: 0xE9EF,\n\t28617 - 11904: 0xEA41,\n\t28618 - 11904: 0xE9F4,\n\t28619 - 11904: 0xE9EA,\n\t28620 - 11904: 0xED4E,\n\t28621 - 11904: 0xEA43,\n\t28622 - 11904: 0xE9EE,\n\t28623 - 11904: 0xE9FC,\n\t28627 - 11904: 0xFDD4,\n\t28628 - 11904: 0xED51,\n\t28629 - 11904: 0xC0E3,\n\t28632 - 11904: 0xC0D7,\n\t28633 - 11904: 0x96EC,\n\t28634 - 11904: 0x96EB,\n\t28635 - 11904: 0xC0DB,\n\t28636 - 11904: 0xED53,\n\t28637 - 11904: 0xED59,\n\t28638 - 11904: 0xED57,\n\t28639 - 11904: 0xC0D9,\n\t28640 - 11904: 0xC0DA,\n\t28641 - 11904: 0xC0E1,\n\t28642 - 11904: 0xED5A,\n\t28643 - 11904: 0xED52,\n\t28644 - 11904: 0xC0DC,\n\t28646 - 11904: 0xED56,\n\t28647 - 11904: 0xED55,\n\t28648 - 11904: 0xED5B,\n\t28649 - 11904: 0xC0E2,\n\t28651 - 11904: 0xC0DD,\n\t28652 - 11904: 0xC0E0,\n\t28653 - 11904: 0xED54,\n\t28654 - 11904: 0xC0E4,\n\t28655 - 11904: 0xC0DE,\n\t28656 - 11904: 0xC0E5,\n\t28657 - 11904: 0xC0D8,\n\t28658 - 11904: 0xED58,\n\t28660 - 11904: 0xED50,\n\t28662 - 11904: 0x90B6,\n\t28663 - 11904: 0xEFF7,\n\t28664 - 11904: 0xFDC3,\n\t28666 - 11904: 0xC271,\n\t28667 - 11904: 0xEFF4,\n\t28668 - 11904: 0xEFF6,\n\t28670 - 11904: 0xC26F,\n\t28671 - 11904: 0xEFF2,\n\t28672 - 11904: 0xEFF3,\n\t28673 - 11904: 0xEFEE,\n\t28675 - 11904: 0x98AB,\n\t28676 - 11904: 0xE9F6,\n\t28677 - 11904: 0xEFEF,\n\t28678 - 11904: 0xC270,\n\t28679 - 11904: 0xEFEB,\n\t28681 - 11904: 0xC26D,\n\t28682 - 11904: 0xEFF8,\n\t28683 - 11904: 0xC26E,\n\t28684 - 11904: 0xEFEC,\n\t28685 - 11904: 0xEFED,\n\t28686 - 11904: 0xEFF1,\n\t28687 - 11904: 0xC273,\n\t28689 - 11904: 0xC272,\n\t28692 - 11904: 0xEFF0,\n\t28693 - 11904: 0xC378,\n\t28694 - 11904: 0xF25F,\n\t28695 - 11904: 0xF265,\n\t28696 - 11904: 0xC379,\n\t28697 - 11904: 0xF25C,\n\t28698 - 11904: 0xC376,\n\t28699 - 11904: 0xC373,\n\t28700 - 11904: 0xF267,\n\t28701 - 11904: 0xC377,\n\t28702 - 11904: 0x96EE,\n\t28703 - 11904: 0xC374,\n\t28704 - 11904: 0xF25E,\n\t28705 - 11904: 0xF261,\n\t28706 - 11904: 0xF262,\n\t28707 - 11904: 0xF263,\n\t28708 - 11904: 0xF266,\n\t28710 - 11904: 0xEFF5,\n\t28711 - 11904: 0xF25D,\n\t28712 - 11904: 0xC375,\n\t28713 - 11904: 0xF264,\n\t28714 - 11904: 0xF268,\n\t28715 - 11904: 0xF260,\n\t28716 - 11904: 0x8DF4,\n\t28719 - 11904: 0xF45D,\n\t28720 - 11904: 0xC46A,\n\t28721 - 11904: 0xF460,\n\t28722 - 11904: 0xC46B,\n\t28723 - 11904: 0xF468,\n\t28724 - 11904: 0xF45F,\n\t28725 - 11904: 0xF45C,\n\t28727 - 11904: 0xF45E,\n\t28728 - 11904: 0xF462,\n\t28729 - 11904: 0xF465,\n\t28730 - 11904: 0xF464,\n\t28731 - 11904: 0xF467,\n\t28732 - 11904: 0xF45B,\n\t28734 - 11904: 0xC469,\n\t28735 - 11904: 0xF463,\n\t28736 - 11904: 0xF466,\n\t28737 - 11904: 0xF469,\n\t28738 - 11904: 0xF461,\n\t28739 - 11904: 0xF5D3,\n\t28740 - 11904: 0xF5D4,\n\t28741 - 11904: 0xF5D8,\n\t28742 - 11904: 0xF5D9,\n\t28744 - 11904: 0xF5D6,\n\t28745 - 11904: 0xF5D7,\n\t28746 - 11904: 0xF5D5,\n\t28747 - 11904: 0xFDE0,\n\t28748 - 11904: 0xC4E9,\n\t28749 - 11904: 0x8C67,\n\t28752 - 11904: 0x8DF6,\n\t28753 - 11904: 0xC578,\n\t28754 - 11904: 0xF6EB,\n\t28756 - 11904: 0x8DF7,\n\t28757 - 11904: 0xF6E8,\n\t28758 - 11904: 0xF6E9,\n\t28759 - 11904: 0xF6EA,\n\t28760 - 11904: 0xC579,\n\t28762 - 11904: 0xF7E5,\n\t28763 - 11904: 0xF7E4,\n\t28764 - 11904: 0x8FFA,\n\t28765 - 11904: 0xF8AF,\n\t28766 - 11904: 0xC5F4,\n\t28767 - 11904: 0xF8AD,\n\t28768 - 11904: 0xF8B0,\n\t28769 - 11904: 0xF8AE,\n\t28770 - 11904: 0xF8F5,\n\t28771 - 11904: 0xC657,\n\t28772 - 11904: 0xC665,\n\t28773 - 11904: 0xF9A3,\n\t28774 - 11904: 0xF96C,\n\t28775 - 11904: 0x97D0,\n\t28776 - 11904: 0xF9A2,\n\t28777 - 11904: 0xF9D0,\n\t28778 - 11904: 0xF9D1,\n\t28779 - 11904: 0xA4F5,\n\t28780 - 11904: 0x8BD2,\n\t28782 - 11904: 0x87DE,\n\t28783 - 11904: 0x8DF8,\n\t28784 - 11904: 0xA6C7,\n\t28785 - 11904: 0xCA41,\n\t28788 - 11904: 0xCB5E,\n\t28789 - 11904: 0x90D9,\n\t28790 - 11904: 0xA85F,\n\t28791 - 11904: 0x8C47,\n\t28792 - 11904: 0xA862,\n\t28793 - 11904: 0xFAF0,\n\t28794 - 11904: 0xCB5F,\n\t28796 - 11904: 0xA860,\n\t28797 - 11904: 0xA861,\n\t28798 - 11904: 0xFDE1,\n\t28799 - 11904: 0x8DF9,\n\t28801 - 11904: 0xFDE3,\n\t28802 - 11904: 0xCD58,\n\t28803 - 11904: 0xCD5A,\n\t28804 - 11904: 0xCD55,\n\t28805 - 11904: 0xCD52,\n\t28806 - 11904: 0xCD54,\n\t28809 - 11904: 0x8DFA,\n\t28810 - 11904: 0xAAA4,\n\t28811 - 11904: 0xFB63,\n\t28814 - 11904: 0xAAA2,\n\t28815 - 11904: 0x90A6,\n\t28817 - 11904: 0xCD56,\n\t28818 - 11904: 0xAAA3,\n\t28819 - 11904: 0xCD53,\n\t28820 - 11904: 0xCD50,\n\t28821 - 11904: 0xAAA1,\n\t28822 - 11904: 0xCD57,\n\t28824 - 11904: 0xCD51,\n\t28825 - 11904: 0xAAA5,\n\t28826 - 11904: 0xCD59,\n\t28831 - 11904: 0xCFAF,\n\t28832 - 11904: 0x9970,\n\t28833 - 11904: 0xCFB3,\n\t28835 - 11904: 0x91EB,\n\t28836 - 11904: 0xACB7,\n\t28837 - 11904: 0x9770,\n\t28838 - 11904: 0x986F,\n\t28839 - 11904: 0xFDE2,\n\t28841 - 11904: 0xCFB6,\n\t28843 - 11904: 0xACAF,\n\t28844 - 11904: 0xACB2,\n\t28845 - 11904: 0xACB4,\n\t28846 - 11904: 0xACB6,\n\t28847 - 11904: 0xACB3,\n\t28848 - 11904: 0xCFB2,\n\t28849 - 11904: 0xCFB1,\n\t28851 - 11904: 0xACB1,\n\t28852 - 11904: 0xCFB4,\n\t28853 - 11904: 0xCFB5,\n\t28855 - 11904: 0xCFAE,\n\t28856 - 11904: 0xACB5,\n\t28857 - 11904: 0x98F2,\n\t28858 - 11904: 0xACB0,\n\t28859 - 11904: 0x9AFC,\n\t28860 - 11904: 0x896C,\n\t28861 - 11904: 0xFDFD,\n\t28862 - 11904: 0xCFB0,\n\t28864 - 11904: 0x995E,\n\t28868 - 11904: 0x95BD,\n\t28869 - 11904: 0xD277,\n\t28870 - 11904: 0xD278,\n\t28871 - 11904: 0xD279,\n\t28872 - 11904: 0xAF50,\n\t28874 - 11904: 0xAF4C,\n\t28875 - 11904: 0xD26E,\n\t28876 - 11904: 0xFDE4,\n\t28877 - 11904: 0xD276,\n\t28878 - 11904: 0xD27B,\n\t28879 - 11904: 0xAF51,\n\t28880 - 11904: 0x91E6,\n\t28881 - 11904: 0xD26C,\n\t28882 - 11904: 0xD272,\n\t28883 - 11904: 0xD26B,\n\t28884 - 11904: 0xD275,\n\t28885 - 11904: 0xFDE5,\n\t28886 - 11904: 0xFDE6,\n\t28887 - 11904: 0xD271,\n\t28888 - 11904: 0xAF4D,\n\t28889 - 11904: 0xAF4F,\n\t28890 - 11904: 0xD27A,\n\t28892 - 11904: 0xD26A,\n\t28893 - 11904: 0xD26D,\n\t28894 - 11904: 0xD273,\n\t28895 - 11904: 0xFDE7,\n\t28896 - 11904: 0xD274,\n\t28897 - 11904: 0xD27C,\n\t28898 - 11904: 0xD270,\n\t28900 - 11904: 0xAF4E,\n\t28911 - 11904: 0xB26D,\n\t28912 - 11904: 0xD64E,\n\t28913 - 11904: 0x9454,\n\t28915 - 11904: 0xD650,\n\t28916 - 11904: 0xD64C,\n\t28917 - 11904: 0x99B8,\n\t28918 - 11904: 0xD658,\n\t28919 - 11904: 0xD64A,\n\t28920 - 11904: 0xD657,\n\t28921 - 11904: 0xB269,\n\t28922 - 11904: 0xD648,\n\t28923 - 11904: 0xDA5B,\n\t28924 - 11904: 0xD652,\n\t28925 - 11904: 0xB26C,\n\t28926 - 11904: 0x97E9,\n\t28927 - 11904: 0xD653,\n\t28928 - 11904: 0xD656,\n\t28930 - 11904: 0xD65A,\n\t28932 - 11904: 0xD64F,\n\t28933 - 11904: 0x9346,\n\t28934 - 11904: 0xD654,\n\t28937 - 11904: 0xB26A,\n\t28938 - 11904: 0xB26B,\n\t28939 - 11904: 0xD659,\n\t28940 - 11904: 0xD64D,\n\t28941 - 11904: 0xD649,\n\t28942 - 11904: 0xD65B,\n\t28944 - 11904: 0xD651,\n\t28947 - 11904: 0xD655,\n\t28951 - 11904: 0xD64B,\n\t28953 - 11904: 0xB548,\n\t28954 - 11904: 0xB549,\n\t28955 - 11904: 0xDA65,\n\t28956 - 11904: 0xB54F,\n\t28957 - 11904: 0x9863,\n\t28958 - 11904: 0xDA59,\n\t28959 - 11904: 0xDA62,\n\t28960 - 11904: 0xDA58,\n\t28961 - 11904: 0xB54C,\n\t28962 - 11904: 0xDA60,\n\t28963 - 11904: 0xDA5E,\n\t28965 - 11904: 0xDA5F,\n\t28966 - 11904: 0xB54A,\n\t28968 - 11904: 0xDA63,\n\t28969 - 11904: 0x95BC,\n\t28971 - 11904: 0xFDED,\n\t28972 - 11904: 0xFDF7,\n\t28974 - 11904: 0xDA5C,\n\t28975 - 11904: 0xDA5A,\n\t28976 - 11904: 0xB54B,\n\t28977 - 11904: 0xDA5D,\n\t28978 - 11904: 0xDA61,\n\t28979 - 11904: 0x9870,\n\t28980 - 11904: 0x96F6,\n\t28981 - 11904: 0x8EA9,\n\t28982 - 11904: 0xB54D,\n\t28986 - 11904: 0xDA64,\n\t28987 - 11904: 0x9451,\n\t28990 - 11904: 0x8E43,\n\t28992 - 11904: 0x8B5A,\n\t28993 - 11904: 0xDE70,\n\t28994 - 11904: 0xDE77,\n\t28995 - 11904: 0xDE79,\n\t28996 - 11904: 0xDEA1,\n\t28997 - 11904: 0xFDEE,\n\t28998 - 11904: 0xB7DA,\n\t28999 - 11904: 0xDE6B,\n\t29001 - 11904: 0xB7D2,\n\t29002 - 11904: 0xFDF0,\n\t29003 - 11904: 0xDE7A,\n\t29004 - 11904: 0xB7D7,\n\t29005 - 11904: 0xDEA2,\n\t29006 - 11904: 0xB7CE,\n\t29007 - 11904: 0xFDF4,\n\t29008 - 11904: 0xDE7D,\n\t29009 - 11904: 0x9BF5,\n\t29010 - 11904: 0xDE6D,\n\t29011 - 11904: 0xDE7E,\n\t29012 - 11904: 0xDE6C,\n\t29014 - 11904: 0xB7DC,\n\t29015 - 11904: 0x8CEE,\n\t29016 - 11904: 0xDE78,\n\t29017 - 11904: 0xB7CF,\n\t29018 - 11904: 0xDEA3,\n\t29020 - 11904: 0xB7D4,\n\t29021 - 11904: 0xDE71,\n\t29022 - 11904: 0xB7D9,\n\t29023 - 11904: 0xDE7C,\n\t29024 - 11904: 0xDE6F,\n\t29025 - 11904: 0xDE76,\n\t29026 - 11904: 0xDE72,\n\t29027 - 11904: 0xDE6E,\n\t29028 - 11904: 0xB7D1,\n\t29029 - 11904: 0xB7D8,\n\t29030 - 11904: 0xB7D6,\n\t29031 - 11904: 0xB7D3,\n\t29032 - 11904: 0xB7DB,\n\t29033 - 11904: 0xB7D0,\n\t29034 - 11904: 0xDE75,\n\t29035 - 11904: 0x977E,\n\t29036 - 11904: 0xB7D5,\n\t29038 - 11904: 0xFDF1,\n\t29040 - 11904: 0xDE7B,\n\t29041 - 11904: 0x9BD5,\n\t29042 - 11904: 0xDE73,\n\t29043 - 11904: 0x9AC3,\n\t29045 - 11904: 0x97C8,\n\t29046 - 11904: 0xA0DB,\n\t29047 - 11904: 0x91D0,\n\t29048 - 11904: 0xDE74,\n\t29050 - 11904: 0x9FE4,\n\t29051 - 11904: 0xE2C1,\n\t29052 - 11904: 0x8FDD,\n\t29053 - 11904: 0xBAB4,\n\t29054 - 11904: 0x91E9,\n\t29056 - 11904: 0xE2BD,\n\t29057 - 11904: 0xE2C3,\n\t29058 - 11904: 0xE2BF,\n\t29060 - 11904: 0xBAB6,\n\t29061 - 11904: 0xE2BE,\n\t29062 - 11904: 0xE2C2,\n\t29063 - 11904: 0xE2BA,\n\t29064 - 11904: 0x98E0,\n\t29065 - 11904: 0xE2BC,\n\t29066 - 11904: 0xBAB5,\n\t29068 - 11904: 0x92CA,\n\t29070 - 11904: 0x9857,\n\t29071 - 11904: 0xE2C0,\n\t29072 - 11904: 0xE2BB,\n\t29073 - 11904: 0x8C51,\n\t29074 - 11904: 0xBAB7,\n\t29076 - 11904: 0xBAB2,\n\t29078 - 11904: 0xFDEB,\n\t29079 - 11904: 0xE2C4,\n\t29080 - 11904: 0x9B49,\n\t29081 - 11904: 0xBAB3,\n\t29082 - 11904: 0xE667,\n\t29083 - 11904: 0xE664,\n\t29084 - 11904: 0xE670,\n\t29085 - 11904: 0xE66A,\n\t29086 - 11904: 0xE66C,\n\t29087 - 11904: 0xBCF4,\n\t29088 - 11904: 0xE666,\n\t29089 - 11904: 0xE66E,\n\t29090 - 11904: 0x9D76,\n\t29091 - 11904: 0x9EAF,\n\t29092 - 11904: 0xE66D,\n\t29093 - 11904: 0xE66B,\n\t29095 - 11904: 0xE671,\n\t29096 - 11904: 0xBCF7,\n\t29097 - 11904: 0xE668,\n\t29098 - 11904: 0xE66F,\n\t29100 - 11904: 0xBCF5,\n\t29101 - 11904: 0x9CCC,\n\t29103 - 11904: 0xE663,\n\t29104 - 11904: 0xE665,\n\t29105 - 11904: 0xBCF6,\n\t29106 - 11904: 0xE662,\n\t29107 - 11904: 0xE672,\n\t29108 - 11904: 0xFDEA,\n\t29109 - 11904: 0xE669,\n\t29111 - 11904: 0x8DF1,\n\t29112 - 11904: 0xEA4A,\n\t29113 - 11904: 0xBF51,\n\t29114 - 11904: 0xFDFB,\n\t29116 - 11904: 0xEA55,\n\t29117 - 11904: 0xEA53,\n\t29118 - 11904: 0xBF4B,\n\t29119 - 11904: 0xEA49,\n\t29120 - 11904: 0xEA4C,\n\t29121 - 11904: 0xEA4D,\n\t29122 - 11904: 0xEA48,\n\t29123 - 11904: 0xBF55,\n\t29124 - 11904: 0xBF56,\n\t29125 - 11904: 0xEA47,\n\t29126 - 11904: 0xEA56,\n\t29127 - 11904: 0xEA51,\n\t29128 - 11904: 0xBF4F,\n\t29129 - 11904: 0xBF4C,\n\t29130 - 11904: 0xEA50,\n\t29131 - 11904: 0xEA4E,\n\t29134 - 11904: 0xBF52,\n\t29135 - 11904: 0xEA52,\n\t29136 - 11904: 0xBF4D,\n\t29137 - 11904: 0x8E53,\n\t29138 - 11904: 0xBF4E,\n\t29140 - 11904: 0xEA4F,\n\t29141 - 11904: 0xBF50,\n\t29142 - 11904: 0xEA4B,\n\t29144 - 11904: 0xEA54,\n\t29145 - 11904: 0xBF53,\n\t29146 - 11904: 0xEA57,\n\t29147 - 11904: 0xEA58,\n\t29148 - 11904: 0xBF54,\n\t29149 - 11904: 0xFACF,\n\t29151 - 11904: 0xC0E7,\n\t29152 - 11904: 0xC0EE,\n\t29153 - 11904: 0xED5C,\n\t29154 - 11904: 0xED62,\n\t29156 - 11904: 0xED60,\n\t29157 - 11904: 0xC0EA,\n\t29158 - 11904: 0xC0E9,\n\t29159 - 11904: 0xC0E6,\n\t29160 - 11904: 0xED5E,\n\t29163 - 11904: 0x96F9,\n\t29164 - 11904: 0xC0EC,\n\t29165 - 11904: 0xC0EB,\n\t29166 - 11904: 0xC0E8,\n\t29168 - 11904: 0xED61,\n\t29169 - 11904: 0xED5D,\n\t29170 - 11904: 0xED5F,\n\t29172 - 11904: 0xC0ED,\n\t29173 - 11904: 0x98BF,\n\t29174 - 11904: 0x9E49,\n\t29176 - 11904: 0xC277,\n\t29177 - 11904: 0xEFFB,\n\t29179 - 11904: 0xC274,\n\t29180 - 11904: 0xC275,\n\t29181 - 11904: 0xEFFD,\n\t29182 - 11904: 0xC276,\n\t29183 - 11904: 0xEFFA,\n\t29184 - 11904: 0x8CA7,\n\t29185 - 11904: 0xEFF9,\n\t29186 - 11904: 0xF26C,\n\t29187 - 11904: 0xEFFC,\n\t29189 - 11904: 0xF26D,\n\t29190 - 11904: 0xC37A,\n\t29191 - 11904: 0xF26B,\n\t29193 - 11904: 0x9BCA,\n\t29194 - 11904: 0xF26A,\n\t29196 - 11904: 0xF269,\n\t29197 - 11904: 0xC37B,\n\t29198 - 11904: 0xFDFE,\n\t29199 - 11904: 0x92DC,\n\t29200 - 11904: 0xC46C,\n\t29203 - 11904: 0xF46A,\n\t29204 - 11904: 0xF46B,\n\t29205 - 11904: 0xFE41,\n\t29206 - 11904: 0x91CC,\n\t29207 - 11904: 0x91E2,\n\t29209 - 11904: 0xF5DC,\n\t29210 - 11904: 0xF5DB,\n\t29211 - 11904: 0xC4EA,\n\t29213 - 11904: 0xF5DA,\n\t29214 - 11904: 0xF6EC,\n\t29215 - 11904: 0xF6ED,\n\t29218 - 11904: 0xF7E6,\n\t29219 - 11904: 0xF8B1,\n\t29220 - 11904: 0xFE44,\n\t29221 - 11904: 0x875F,\n\t29222 - 11904: 0xF8F6,\n\t29223 - 11904: 0xF9BC,\n\t29224 - 11904: 0xC679,\n\t29225 - 11904: 0xF9C6,\n\t29226 - 11904: 0xA4F6,\n\t29227 - 11904: 0x8BD3,\n\t29228 - 11904: 0xAAA6,\n\t29229 - 11904: 0xAAA7,\n\t29230 - 11904: 0xFE47,\n\t29232 - 11904: 0xACB8,\n\t29237 - 11904: 0xC0EF,\n\t29238 - 11904: 0xA4F7,\n\t29240 - 11904: 0xAAA8,\n\t29241 - 11904: 0xAF52,\n\t29242 - 11904: 0xB7DD,\n\t29243 - 11904: 0xA4F8,\n\t29245 - 11904: 0xB26E,\n\t29246 - 11904: 0xBAB8,\n\t29247 - 11904: 0xC962,\n\t29248 - 11904: 0xFE48,\n\t29249 - 11904: 0xCFB7,\n\t29250 - 11904: 0xD27D,\n\t29252 - 11904: 0xE2C5,\n\t29254 - 11904: 0xC0F0,\n\t29255 - 11904: 0xA4F9,\n\t29256 - 11904: 0xAAA9,\n\t29257 - 11904: 0xCFB8,\n\t29258 - 11904: 0xCFB9,\n\t29259 - 11904: 0xDA66,\n\t29260 - 11904: 0xB550,\n\t29263 - 11904: 0xDEA4,\n\t29264 - 11904: 0xA0E4,\n\t29266 - 11904: 0xB7DE,\n\t29267 - 11904: 0xE2C6,\n\t29269 - 11904: 0xFE4B,\n\t29270 - 11904: 0xBCF8,\n\t29271 - 11904: 0xFE4C,\n\t29272 - 11904: 0xC37C,\n\t29273 - 11904: 0xA4FA,\n\t29274 - 11904: 0xDA67,\n\t29275 - 11904: 0xA4FB,\n\t29276 - 11904: 0x8DBF,\n\t29277 - 11904: 0xA6C9,\n\t29278 - 11904: 0xCA42,\n\t29279 - 11904: 0xA6C8,\n\t29280 - 11904: 0xA865,\n\t29281 - 11904: 0xA864,\n\t29282 - 11904: 0xA863,\n\t29283 - 11904: 0xCB60,\n\t29286 - 11904: 0x9E78,\n\t29287 - 11904: 0xAAAA,\n\t29289 - 11904: 0xAAAB,\n\t29290 - 11904: 0xCD5B,\n\t29292 - 11904: 0xCFBA,\n\t29294 - 11904: 0xCFBD,\n\t29295 - 11904: 0xACBA,\n\t29296 - 11904: 0xCFBB,\n\t29298 - 11904: 0xACB9,\n\t29299 - 11904: 0xCFBC,\n\t29300 - 11904: 0xACBB,\n\t29302 - 11904: 0xD2A2,\n\t29303 - 11904: 0xD2A1,\n\t29304 - 11904: 0xD27E,\n\t29305 - 11904: 0xAF53,\n\t29307 - 11904: 0xD65D,\n\t29308 - 11904: 0xD65E,\n\t29309 - 11904: 0xB26F,\n\t29310 - 11904: 0xD65C,\n\t29311 - 11904: 0xD65F,\n\t29312 - 11904: 0xB552,\n\t29313 - 11904: 0xB270,\n\t29314 - 11904: 0xFE51,\n\t29316 - 11904: 0xB551,\n\t29317 - 11904: 0xDA6B,\n\t29318 - 11904: 0xDA6A,\n\t29319 - 11904: 0x9456,\n\t29320 - 11904: 0xDA68,\n\t29321 - 11904: 0xDA69,\n\t29323 - 11904: 0xDA6C,\n\t29324 - 11904: 0xDEA6,\n\t29325 - 11904: 0xDEA5,\n\t29326 - 11904: 0xDEA9,\n\t29327 - 11904: 0x9D61,\n\t29328 - 11904: 0xDEA8,\n\t29329 - 11904: 0xDEA7,\n\t29330 - 11904: 0xBAB9,\n\t29331 - 11904: 0xE2C9,\n\t29332 - 11904: 0x9457,\n\t29333 - 11904: 0xE2C8,\n\t29334 - 11904: 0xBABA,\n\t29335 - 11904: 0xE2C7,\n\t29336 - 11904: 0xE673,\n\t29338 - 11904: 0xE674,\n\t29339 - 11904: 0xBCF9,\n\t29341 - 11904: 0xEA59,\n\t29342 - 11904: 0xEA5A,\n\t29343 - 11904: 0x9966,\n\t29345 - 11904: 0xF272,\n\t29346 - 11904: 0xC37D,\n\t29347 - 11904: 0xF271,\n\t29348 - 11904: 0xF270,\n\t29349 - 11904: 0xF26E,\n\t29350 - 11904: 0xF26F,\n\t29351 - 11904: 0xC4EB,\n\t29352 - 11904: 0xF46C,\n\t29353 - 11904: 0xF6EE,\n\t29354 - 11904: 0xF8F7,\n\t29356 - 11904: 0xA4FC,\n\t29357 - 11904: 0x8BD5,\n\t29358 - 11904: 0xC9A5,\n\t29359 - 11904: 0xA5C7,\n\t29360 - 11904: 0xC9A6,\n\t29362 - 11904: 0xA069,\n\t29364 - 11904: 0xCA43,\n\t29365 - 11904: 0xCA44,\n\t29370 - 11904: 0xCB66,\n\t29373 - 11904: 0xCB62,\n\t29375 - 11904: 0xCB61,\n\t29376 - 11904: 0xAAAC,\n\t29377 - 11904: 0xCB65,\n\t29378 - 11904: 0xA867,\n\t29379 - 11904: 0xCB63,\n\t29380 - 11904: 0xA866,\n\t29381 - 11904: 0xCB67,\n\t29382 - 11904: 0xCB64,\n\t29385 - 11904: 0xCD5F,\n\t29386 - 11904: 0xCFBE,\n\t29387 - 11904: 0xCD5D,\n\t29388 - 11904: 0xCD64,\n\t29389 - 11904: 0x98B4,\n\t29390 - 11904: 0xAAAD,\n\t29392 - 11904: 0xAAB0,\n\t29393 - 11904: 0xCD65,\n\t29394 - 11904: 0xCD61,\n\t29396 - 11904: 0xCD62,\n\t29398 - 11904: 0xCD5C,\n\t29399 - 11904: 0xAAAF,\n\t29400 - 11904: 0xCD5E,\n\t29401 - 11904: 0xAAAE,\n\t29402 - 11904: 0xCD63,\n\t29404 - 11904: 0xCD60,\n\t29407 - 11904: 0xCFC2,\n\t29408 - 11904: 0xACBD,\n\t29409 - 11904: 0xACBE,\n\t29410 - 11904: 0xA049,\n\t29411 - 11904: 0xCFC5,\n\t29412 - 11904: 0xCFBF,\n\t29414 - 11904: 0xCFC4,\n\t29416 - 11904: 0xCFC0,\n\t29417 - 11904: 0xACBC,\n\t29418 - 11904: 0xCFC3,\n\t29419 - 11904: 0xCFC1,\n\t29427 - 11904: 0xD2A8,\n\t29428 - 11904: 0xD2A5,\n\t29430 - 11904: 0xD2A7,\n\t29431 - 11904: 0xAF58,\n\t29432 - 11904: 0xAF57,\n\t29433 - 11904: 0xAF55,\n\t29434 - 11904: 0xD2A4,\n\t29435 - 11904: 0xD2A9,\n\t29436 - 11904: 0xAF54,\n\t29437 - 11904: 0xAF56,\n\t29438 - 11904: 0xD2A6,\n\t29439 - 11904: 0xD667,\n\t29440 - 11904: 0xD2A3,\n\t29441 - 11904: 0xD2AA,\n\t29442 - 11904: 0xA04C,\n\t29444 - 11904: 0x9E65,\n\t29447 - 11904: 0xD662,\n\t29448 - 11904: 0xD666,\n\t29450 - 11904: 0xD665,\n\t29451 - 11904: 0xDA6E,\n\t29452 - 11904: 0xDA79,\n\t29455 - 11904: 0xD668,\n\t29456 - 11904: 0x98B5,\n\t29457 - 11904: 0xD663,\n\t29458 - 11904: 0xDA6D,\n\t29459 - 11904: 0xB274,\n\t29462 - 11904: 0xB273,\n\t29463 - 11904: 0xD661,\n\t29464 - 11904: 0xD664,\n\t29465 - 11904: 0xB275,\n\t29467 - 11904: 0xB272,\n\t29468 - 11904: 0xB271,\n\t29469 - 11904: 0xD660,\n\t29470 - 11904: 0xD669,\n\t29474 - 11904: 0xDA70,\n\t29475 - 11904: 0xDA77,\n\t29477 - 11904: 0xB554,\n\t29478 - 11904: 0xDA76,\n\t29479 - 11904: 0xDA73,\n\t29480 - 11904: 0xFE58,\n\t29481 - 11904: 0xB556,\n\t29482 - 11904: 0xFE52,\n\t29483 - 11904: 0xFE53,\n\t29484 - 11904: 0xA065,\n\t29485 - 11904: 0xDA75,\n\t29486 - 11904: 0xFE59,\n\t29488 - 11904: 0xDA6F,\n\t29489 - 11904: 0xDA71,\n\t29490 - 11904: 0xDA74,\n\t29491 - 11904: 0xDA72,\n\t29492 - 11904: 0xB555,\n\t29493 - 11904: 0xDA78,\n\t29494 - 11904: 0xB553,\n\t29495 - 11904: 0xB7DF,\n\t29496 - 11904: 0x98B7,\n\t29497 - 11904: 0x98B8,\n\t29498 - 11904: 0xDEAD,\n\t29499 - 11904: 0xDEAC,\n\t29500 - 11904: 0xDEAA,\n\t29502 - 11904: 0xB7E2,\n\t29503 - 11904: 0xB7E1,\n\t29504 - 11904: 0xDEAE,\n\t29505 - 11904: 0x98BA,\n\t29506 - 11904: 0xDEAB,\n\t29507 - 11904: 0xE2CA,\n\t29508 - 11904: 0xBABB,\n\t29509 - 11904: 0xB7E0,\n\t29512 - 11904: 0x98BB,\n\t29513 - 11904: 0xDEB0,\n\t29514 - 11904: 0xDEAF,\n\t29516 - 11904: 0xE2CD,\n\t29517 - 11904: 0xE2CB,\n\t29518 - 11904: 0xBCFA,\n\t29519 - 11904: 0x9FBC,\n\t29520 - 11904: 0xBABC,\n\t29521 - 11904: 0xE2CC,\n\t29522 - 11904: 0xE676,\n\t29527 - 11904: 0xBCFB,\n\t29528 - 11904: 0xE675,\n\t29529 - 11904: 0xE67E,\n\t29530 - 11904: 0xE67D,\n\t29531 - 11904: 0xE67B,\n\t29533 - 11904: 0xE67A,\n\t29534 - 11904: 0xE677,\n\t29535 - 11904: 0xE678,\n\t29536 - 11904: 0xE679,\n\t29537 - 11904: 0xE67C,\n\t29538 - 11904: 0xE6A1,\n\t29541 - 11904: 0xEA5F,\n\t29542 - 11904: 0xEA5C,\n\t29543 - 11904: 0xEA5D,\n\t29544 - 11904: 0xBF57,\n\t29545 - 11904: 0xEA5B,\n\t29546 - 11904: 0xEA61,\n\t29547 - 11904: 0xEA60,\n\t29548 - 11904: 0xEA5E,\n\t29550 - 11904: 0xED64,\n\t29551 - 11904: 0xED65,\n\t29552 - 11904: 0xC0F1,\n\t29553 - 11904: 0xA04A,\n\t29554 - 11904: 0xC0F2,\n\t29555 - 11904: 0xED63,\n\t29556 - 11904: 0x9EC7,\n\t29557 - 11904: 0xC279,\n\t29558 - 11904: 0xEFFE,\n\t29559 - 11904: 0xC278,\n\t29560 - 11904: 0xC37E,\n\t29562 - 11904: 0xC3A1,\n\t29563 - 11904: 0xC46D,\n\t29564 - 11904: 0xF46E,\n\t29565 - 11904: 0xF46D,\n\t29566 - 11904: 0xF5DD,\n\t29567 - 11904: 0xF6EF,\n\t29568 - 11904: 0xC57A,\n\t29569 - 11904: 0xF7E8,\n\t29570 - 11904: 0xF7E7,\n\t29571 - 11904: 0xF7E9,\n\t29572 - 11904: 0xA5C8,\n\t29573 - 11904: 0xCFC6,\n\t29574 - 11904: 0xAF59,\n\t29575 - 11904: 0xB276,\n\t29576 - 11904: 0xD66A,\n\t29577 - 11904: 0xA5C9,\n\t29578 - 11904: 0xC9A7,\n\t29579 - 11904: 0xA4FD,\n\t29580 - 11904: 0x8CA9,\n\t29582 - 11904: 0xCA45,\n\t29583 - 11904: 0x98AE,\n\t29586 - 11904: 0xCB6C,\n\t29587 - 11904: 0xCB6A,\n\t29588 - 11904: 0xCB6B,\n\t29589 - 11904: 0xCB68,\n\t29590 - 11904: 0xA868,\n\t29591 - 11904: 0xCB69,\n\t29592 - 11904: 0x92D6,\n\t29596 - 11904: 0xFAE1,\n\t29597 - 11904: 0xCD6D,\n\t29598 - 11904: 0x91D4,\n\t29599 - 11904: 0xAAB3,\n\t29600 - 11904: 0xCD6B,\n\t29601 - 11904: 0xCD67,\n\t29602 - 11904: 0xCD6A,\n\t29604 - 11904: 0xCD66,\n\t29605 - 11904: 0xAAB5,\n\t29606 - 11904: 0xCD69,\n\t29607 - 11904: 0xFADE,\n\t29608 - 11904: 0xAAB2,\n\t29609 - 11904: 0xAAB1,\n\t29610 - 11904: 0xFE5B,\n\t29611 - 11904: 0xAAB4,\n\t29612 - 11904: 0xCD6C,\n\t29613 - 11904: 0xCD68,\n\t29618 - 11904: 0xACC2,\n\t29619 - 11904: 0xACC5,\n\t29620 - 11904: 0xCFCE,\n\t29621 - 11904: 0xCFCD,\n\t29622 - 11904: 0xCFCC,\n\t29623 - 11904: 0xACBF,\n\t29624 - 11904: 0xCFD5,\n\t29625 - 11904: 0xCFCB,\n\t29626 - 11904: 0x8C53,\n\t29627 - 11904: 0xACC1,\n\t29628 - 11904: 0xD2AF,\n\t29630 - 11904: 0xCFD2,\n\t29631 - 11904: 0xCFD0,\n\t29632 - 11904: 0xACC4,\n\t29634 - 11904: 0xCFC8,\n\t29635 - 11904: 0xCFD3,\n\t29636 - 11904: 0x87BF,\n\t29637 - 11904: 0xCFCA,\n\t29638 - 11904: 0xCFD4,\n\t29639 - 11904: 0xCFD1,\n\t29640 - 11904: 0xCFC9,\n\t29641 - 11904: 0xFE5E,\n\t29642 - 11904: 0xACC0,\n\t29643 - 11904: 0xCFD6,\n\t29644 - 11904: 0xCFC7,\n\t29645 - 11904: 0xACC3,\n\t29646 - 11904: 0xFBD7,\n\t29647 - 11904: 0xFE5A,\n\t29648 - 11904: 0x94C5,\n\t29650 - 11904: 0xD2B4,\n\t29651 - 11904: 0xD2AB,\n\t29652 - 11904: 0xD2B6,\n\t29653 - 11904: 0xFACA,\n\t29654 - 11904: 0xD2AE,\n\t29655 - 11904: 0xD2B9,\n\t29656 - 11904: 0xD2BA,\n\t29657 - 11904: 0xD2AC,\n\t29658 - 11904: 0xD2B8,\n\t29659 - 11904: 0xD2B5,\n\t29660 - 11904: 0xD2B3,\n\t29661 - 11904: 0xD2B7,\n\t29662 - 11904: 0xAF5F,\n\t29664 - 11904: 0xAF5D,\n\t29665 - 11904: 0x98C1,\n\t29666 - 11904: 0x975C,\n\t29667 - 11904: 0xD2B1,\n\t29668 - 11904: 0xFE74,\n\t29669 - 11904: 0xD2AD,\n\t29670 - 11904: 0x9773,\n\t29671 - 11904: 0xD2B0,\n\t29672 - 11904: 0xD2BB,\n\t29673 - 11904: 0xD2B2,\n\t29674 - 11904: 0xAF5E,\n\t29675 - 11904: 0xCFCF,\n\t29677 - 11904: 0xAF5A,\n\t29678 - 11904: 0xAF5C,\n\t29679 - 11904: 0xFA46,\n\t29683 - 11904: 0x9764,\n\t29684 - 11904: 0xD678,\n\t29685 - 11904: 0xD66D,\n\t29686 - 11904: 0xD66B,\n\t29687 - 11904: 0xFE68,\n\t29688 - 11904: 0xD66C,\n\t29689 - 11904: 0x964E,\n\t29690 - 11904: 0xD673,\n\t29691 - 11904: 0x9765,\n\t29692 - 11904: 0xD674,\n\t29693 - 11904: 0xD670,\n\t29694 - 11904: 0xB27B,\n\t29695 - 11904: 0xD675,\n\t29696 - 11904: 0xD672,\n\t29697 - 11904: 0xD66F,\n\t29698 - 11904: 0x8C5A,\n\t29699 - 11904: 0xB279,\n\t29700 - 11904: 0xD66E,\n\t29701 - 11904: 0xB277,\n\t29702 - 11904: 0xB27A,\n\t29703 - 11904: 0xD671,\n\t29704 - 11904: 0xD679,\n\t29705 - 11904: 0xAF5B,\n\t29706 - 11904: 0xB278,\n\t29707 - 11904: 0xD677,\n\t29708 - 11904: 0xD676,\n\t29709 - 11904: 0xB27C,\n\t29713 - 11904: 0x89A1,\n\t29714 - 11904: 0x95FA,\n\t29716 - 11904: 0x92D4,\n\t29717 - 11904: 0xFE69,\n\t29718 - 11904: 0xDA7E,\n\t29719 - 11904: 0xFB45,\n\t29721 - 11904: 0x98C8,\n\t29722 - 11904: 0xDAA1,\n\t29723 - 11904: 0xB560,\n\t29724 - 11904: 0x90EF,\n\t29725 - 11904: 0xDAA7,\n\t29726 - 11904: 0x98C9,\n\t29727 - 11904: 0x98CA,\n\t29728 - 11904: 0xDAA9,\n\t29729 - 11904: 0xDAA2,\n\t29730 - 11904: 0xB55A,\n\t29731 - 11904: 0xDAA6,\n\t29732 - 11904: 0xDAA5,\n\t29733 - 11904: 0xB55B,\n\t29734 - 11904: 0xB561,\n\t29736 - 11904: 0xB562,\n\t29737 - 11904: 0xDAA8,\n\t29738 - 11904: 0xB558,\n\t29739 - 11904: 0xDA7D,\n\t29740 - 11904: 0xDA7B,\n\t29741 - 11904: 0xDAA3,\n\t29742 - 11904: 0xDA7A,\n\t29743 - 11904: 0xB55F,\n\t29744 - 11904: 0xDA7C,\n\t29745 - 11904: 0xDAA4,\n\t29746 - 11904: 0xDAAA,\n\t29747 - 11904: 0xB559,\n\t29748 - 11904: 0xB55E,\n\t29749 - 11904: 0xB55C,\n\t29750 - 11904: 0xB55D,\n\t29751 - 11904: 0x946D,\n\t29752 - 11904: 0x94B7,\n\t29753 - 11904: 0xFE6C,\n\t29754 - 11904: 0xB557,\n\t29756 - 11904: 0x946B,\n\t29759 - 11904: 0xB7E9,\n\t29760 - 11904: 0xDEB7,\n\t29761 - 11904: 0xB7E8,\n\t29762 - 11904: 0xDEBB,\n\t29763 - 11904: 0x92FC,\n\t29764 - 11904: 0xDEB1,\n\t29765 - 11904: 0x95EB,\n\t29766 - 11904: 0xDEBC,\n\t29767 - 11904: 0xFE73,\n\t29768 - 11904: 0x976E,\n\t29769 - 11904: 0xFE5F,\n\t29770 - 11904: 0xDEB2,\n\t29771 - 11904: 0xDEB3,\n\t29772 - 11904: 0x87B8,\n\t29773 - 11904: 0xDEBD,\n\t29774 - 11904: 0xDEBA,\n\t29775 - 11904: 0xDEB8,\n\t29776 - 11904: 0xDEB9,\n\t29777 - 11904: 0xDEB5,\n\t29778 - 11904: 0xDEB4,\n\t29779 - 11904: 0xFDBD,\n\t29780 - 11904: 0xDEBE,\n\t29781 - 11904: 0xB7E5,\n\t29782 - 11904: 0x92D5,\n\t29783 - 11904: 0xDEB6,\n\t29785 - 11904: 0xB7EA,\n\t29786 - 11904: 0xB7E4,\n\t29787 - 11904: 0xB7EB,\n\t29788 - 11904: 0xFE6F,\n\t29789 - 11904: 0xFEB9,\n\t29790 - 11904: 0xB7E7,\n\t29791 - 11904: 0xB7E6,\n\t29792 - 11904: 0xFE71,\n\t29793 - 11904: 0x8778,\n\t29794 - 11904: 0xE2CE,\n\t29795 - 11904: 0xBABE,\n\t29796 - 11904: 0xBABD,\n\t29797 - 11904: 0xFBBB,\n\t29799 - 11904: 0xE2D3,\n\t29800 - 11904: 0xA0D5,\n\t29801 - 11904: 0xBCFC,\n\t29802 - 11904: 0xBABF,\n\t29803 - 11904: 0x95FB,\n\t29804 - 11904: 0xFE77,\n\t29805 - 11904: 0xBAC1,\n\t29806 - 11904: 0xE2D4,\n\t29807 - 11904: 0xB7E3,\n\t29808 - 11904: 0xBAC0,\n\t29809 - 11904: 0xE2D0,\n\t29810 - 11904: 0xE2D2,\n\t29811 - 11904: 0xE2CF,\n\t29812 - 11904: 0xFE79,\n\t29813 - 11904: 0xE2D1,\n\t29814 - 11904: 0xFE75,\n\t29817 - 11904: 0xE6AB,\n\t29818 - 11904: 0x945D,\n\t29820 - 11904: 0xE6AA,\n\t29821 - 11904: 0xE6A7,\n\t29822 - 11904: 0xBD40,\n\t29823 - 11904: 0xEA62,\n\t29824 - 11904: 0xBD41,\n\t29825 - 11904: 0xE6A6,\n\t29826 - 11904: 0xFE7C,\n\t29827 - 11904: 0xBCFE,\n\t29829 - 11904: 0xE6A8,\n\t29830 - 11904: 0xE6A5,\n\t29831 - 11904: 0xE6A2,\n\t29832 - 11904: 0xE6A9,\n\t29833 - 11904: 0xE6A3,\n\t29834 - 11904: 0xE6A4,\n\t29835 - 11904: 0xBCFD,\n\t29836 - 11904: 0x9344,\n\t29837 - 11904: 0x8EA6,\n\t29840 - 11904: 0xED69,\n\t29842 - 11904: 0xEA66,\n\t29844 - 11904: 0xEA65,\n\t29845 - 11904: 0xEA67,\n\t29847 - 11904: 0xED66,\n\t29848 - 11904: 0xBF5A,\n\t29849 - 11904: 0x92D3,\n\t29850 - 11904: 0xEA63,\n\t29851 - 11904: 0x94B8,\n\t29852 - 11904: 0xBF58,\n\t29853 - 11904: 0x8779,\n\t29854 - 11904: 0xBF5C,\n\t29855 - 11904: 0xBF5B,\n\t29856 - 11904: 0xEA64,\n\t29857 - 11904: 0xEA68,\n\t29859 - 11904: 0xBF59,\n\t29860 - 11904: 0xFC71,\n\t29861 - 11904: 0xED6D,\n\t29862 - 11904: 0xC0F5,\n\t29863 - 11904: 0xC27A,\n\t29864 - 11904: 0xC0F6,\n\t29865 - 11904: 0xC0F3,\n\t29866 - 11904: 0xED6A,\n\t29867 - 11904: 0xED68,\n\t29869 - 11904: 0xED6B,\n\t29871 - 11904: 0xED6E,\n\t29872 - 11904: 0xC0F4,\n\t29873 - 11904: 0xED6C,\n\t29874 - 11904: 0xED67,\n\t29876 - 11904: 0x975E,\n\t29877 - 11904: 0xF042,\n\t29878 - 11904: 0xF045,\n\t29879 - 11904: 0xF275,\n\t29880 - 11904: 0xF040,\n\t29881 - 11904: 0x8CAD,\n\t29882 - 11904: 0xF46F,\n\t29883 - 11904: 0xF046,\n\t29885 - 11904: 0xC3A2,\n\t29886 - 11904: 0xF044,\n\t29887 - 11904: 0xC27B,\n\t29888 - 11904: 0xF041,\n\t29889 - 11904: 0xF043,\n\t29890 - 11904: 0xF047,\n\t29891 - 11904: 0xF276,\n\t29893 - 11904: 0xF274,\n\t29894 - 11904: 0x87C1,\n\t29896 - 11904: 0xFEA7,\n\t29898 - 11904: 0xC3A3,\n\t29899 - 11904: 0xF273,\n\t29900 - 11904: 0x946A,\n\t29903 - 11904: 0xC46E,\n\t29904 - 11904: 0x93E3,\n\t29907 - 11904: 0x98CF,\n\t29908 - 11904: 0xC4ED,\n\t29909 - 11904: 0xF6F1,\n\t29910 - 11904: 0xC4EC,\n\t29911 - 11904: 0xF6F3,\n\t29912 - 11904: 0xF6F0,\n\t29913 - 11904: 0xF6F2,\n\t29914 - 11904: 0xC5D0,\n\t29915 - 11904: 0xF8B2,\n\t29916 - 11904: 0xA5CA,\n\t29917 - 11904: 0xCD6E,\n\t29918 - 11904: 0xD2BC,\n\t29919 - 11904: 0xD2BD,\n\t29920 - 11904: 0xB27D,\n\t29921 - 11904: 0xDEBF,\n\t29922 - 11904: 0xBF5D,\n\t29923 - 11904: 0xC3A4,\n\t29924 - 11904: 0xC57B,\n\t29925 - 11904: 0xF8B3,\n\t29926 - 11904: 0xA5CB,\n\t29927 - 11904: 0xA0D9,\n\t29928 - 11904: 0xCD6F,\n\t29929 - 11904: 0xFEAA,\n\t29932 - 11904: 0xCFD7,\n\t29934 - 11904: 0xCFD8,\n\t29936 - 11904: 0xA0BF,\n\t29937 - 11904: 0xA04D,\n\t29938 - 11904: 0xA0B8,\n\t29940 - 11904: 0xD2BE,\n\t29941 - 11904: 0xD2BF,\n\t29942 - 11904: 0xB27E,\n\t29943 - 11904: 0xB2A1,\n\t29944 - 11904: 0xA0CE,\n\t29947 - 11904: 0xDAAB,\n\t29949 - 11904: 0xDEC2,\n\t29950 - 11904: 0xDEC1,\n\t29951 - 11904: 0xDEC0,\n\t29952 - 11904: 0xE2D5,\n\t29954 - 11904: 0xE2D6,\n\t29955 - 11904: 0xE2D7,\n\t29956 - 11904: 0xBAC2,\n\t29957 - 11904: 0xA0B7,\n\t29959 - 11904: 0xE6AD,\n\t29960 - 11904: 0xE6AC,\n\t29963 - 11904: 0xEA69,\n\t29964 - 11904: 0xBF5E,\n\t29965 - 11904: 0xBF5F,\n\t29966 - 11904: 0xFEA9,\n\t29967 - 11904: 0xED72,\n\t29968 - 11904: 0xED6F,\n\t29969 - 11904: 0xED70,\n\t29970 - 11904: 0xED71,\n\t29971 - 11904: 0xF049,\n\t29972 - 11904: 0xF048,\n\t29973 - 11904: 0xC27C,\n\t29974 - 11904: 0xF277,\n\t29975 - 11904: 0xF5DE,\n\t29976 - 11904: 0xA5CC,\n\t29977 - 11904: 0x89C3,\n\t29978 - 11904: 0xACC6,\n\t29980 - 11904: 0xB2A2,\n\t29981 - 11904: 0xDEC3,\n\t29982 - 11904: 0xFEAB,\n\t29983 - 11904: 0xA5CD,\n\t29985 - 11904: 0xD2C0,\n\t29986 - 11904: 0xB2A3,\n\t29989 - 11904: 0xB563,\n\t29990 - 11904: 0xB564,\n\t29992 - 11904: 0xA5CE,\n\t29993 - 11904: 0xA5CF,\n\t29994 - 11904: 0xCA46,\n\t29995 - 11904: 0xA86A,\n\t29996 - 11904: 0xA869,\n\t29997 - 11904: 0xACC7,\n\t29998 - 11904: 0xCFD9,\n\t29999 - 11904: 0xDAAC,\n\t30000 - 11904: 0xA5D0,\n\t30001 - 11904: 0xA5D1,\n\t30002 - 11904: 0xA5D2,\n\t30003 - 11904: 0xA5D3,\n\t30004 - 11904: 0x9DF4,\n\t30005 - 11904: 0x896D,\n\t30007 - 11904: 0xA86B,\n\t30008 - 11904: 0xA86C,\n\t30009 - 11904: 0xCB6E,\n\t30010 - 11904: 0xCB6D,\n\t30011 - 11904: 0x9C7B,\n\t30013 - 11904: 0xAAB6,\n\t30014 - 11904: 0xCD72,\n\t30015 - 11904: 0xCD70,\n\t30016 - 11904: 0xCD71,\n\t30018 - 11904: 0x98D2,\n\t30022 - 11904: 0x9FA9,\n\t30023 - 11904: 0xCFDA,\n\t30024 - 11904: 0xCFDB,\n\t30026 - 11904: 0xFEB2,\n\t30027 - 11904: 0xACCB,\n\t30028 - 11904: 0xACC9,\n\t30029 - 11904: 0xFEB1,\n\t30030 - 11904: 0xACCA,\n\t30031 - 11904: 0xACC8,\n\t30033 - 11904: 0x97D9,\n\t30035 - 11904: 0xA0C4,\n\t30036 - 11904: 0xAF60,\n\t30037 - 11904: 0x9476,\n\t30041 - 11904: 0xAF64,\n\t30042 - 11904: 0xAF63,\n\t30043 - 11904: 0xD2C1,\n\t30044 - 11904: 0xAF62,\n\t30045 - 11904: 0xAF61,\n\t30047 - 11904: 0xD2C2,\n\t30048 - 11904: 0x9978,\n\t30050 - 11904: 0xB2A6,\n\t30051 - 11904: 0xD67B,\n\t30052 - 11904: 0xD67A,\n\t30053 - 11904: 0xB2A4,\n\t30054 - 11904: 0xB2A5,\n\t30055 - 11904: 0xFEB3,\n\t30058 - 11904: 0xB566,\n\t30059 - 11904: 0xB565,\n\t30060 - 11904: 0xDAAE,\n\t30061 - 11904: 0x98D3,\n\t30062 - 11904: 0xFEB4,\n\t30063 - 11904: 0xDAAD,\n\t30064 - 11904: 0xB2A7,\n\t30066 - 11904: 0x98D4,\n\t30070 - 11904: 0xB7ED,\n\t30071 - 11904: 0xDEC5,\n\t30072 - 11904: 0xB7EE,\n\t30073 - 11904: 0xDEC4,\n\t30074 - 11904: 0x9FB9,\n\t30077 - 11904: 0xE2D8,\n\t30078 - 11904: 0xE6AE,\n\t30079 - 11904: 0xBD42,\n\t30080 - 11904: 0xEA6A,\n\t30083 - 11904: 0x9471,\n\t30084 - 11904: 0xED73,\n\t30086 - 11904: 0xC3A6,\n\t30087 - 11904: 0xC3A5,\n\t30090 - 11904: 0xC57C,\n\t30091 - 11904: 0xA5D4,\n\t30092 - 11904: 0xCD73,\n\t30093 - 11904: 0x98D5,\n\t30094 - 11904: 0xFEB8,\n\t30095 - 11904: 0xB2A8,\n\t30096 - 11904: 0xE2D9,\n\t30097 - 11904: 0xBAC3,\n\t30098 - 11904: 0xC6D4,\n\t30100 - 11904: 0xCB6F,\n\t30101 - 11904: 0xCB70,\n\t30104 - 11904: 0xCD74,\n\t30105 - 11904: 0xAAB8,\n\t30106 - 11904: 0xAAB9,\n\t30109 - 11904: 0xAAB7,\n\t30110 - 11904: 0xFEBA,\n\t30114 - 11904: 0xACCF,\n\t30115 - 11904: 0xACD0,\n\t30116 - 11904: 0xACCD,\n\t30117 - 11904: 0xACCE,\n\t30119 - 11904: 0xCFDC,\n\t30122 - 11904: 0xCFDD,\n\t30123 - 11904: 0xACCC,\n\t30128 - 11904: 0xD2C3,\n\t30129 - 11904: 0x9E5C,\n\t30130 - 11904: 0xAF68,\n\t30131 - 11904: 0xAF69,\n\t30132 - 11904: 0xFEBB,\n\t30133 - 11904: 0xB2AB,\n\t30134 - 11904: 0xD2C9,\n\t30136 - 11904: 0xAF6E,\n\t30137 - 11904: 0xAF6C,\n\t30138 - 11904: 0xD2CA,\n\t30139 - 11904: 0xD2C5,\n\t30140 - 11904: 0xAF6B,\n\t30141 - 11904: 0xAF6A,\n\t30142 - 11904: 0xAF65,\n\t30143 - 11904: 0xD2C8,\n\t30144 - 11904: 0xD2C7,\n\t30145 - 11904: 0xD2C4,\n\t30146 - 11904: 0xAF6D,\n\t30147 - 11904: 0xA044,\n\t30148 - 11904: 0xD2C6,\n\t30149 - 11904: 0xAF66,\n\t30151 - 11904: 0xAF67,\n\t30152 - 11904: 0x98D7,\n\t30154 - 11904: 0xB2AC,\n\t30155 - 11904: 0xD6A1,\n\t30156 - 11904: 0xD6A2,\n\t30157 - 11904: 0xB2AD,\n\t30158 - 11904: 0xD67C,\n\t30159 - 11904: 0xD67E,\n\t30160 - 11904: 0xD6A4,\n\t30161 - 11904: 0xD6A3,\n\t30162 - 11904: 0xD67D,\n\t30164 - 11904: 0xB2A9,\n\t30165 - 11904: 0xB2AA,\n\t30167 - 11904: 0xDAB6,\n\t30168 - 11904: 0xB56B,\n\t30169 - 11904: 0xB56A,\n\t30170 - 11904: 0xDAB0,\n\t30171 - 11904: 0xB568,\n\t30172 - 11904: 0x98D8,\n\t30173 - 11904: 0xDAB3,\n\t30174 - 11904: 0xB56C,\n\t30175 - 11904: 0xDAB4,\n\t30176 - 11904: 0xB56D,\n\t30177 - 11904: 0xDAB1,\n\t30178 - 11904: 0xB567,\n\t30179 - 11904: 0xB569,\n\t30180 - 11904: 0xDAB5,\n\t30182 - 11904: 0xDAB2,\n\t30183 - 11904: 0xDAAF,\n\t30189 - 11904: 0xDED2,\n\t30191 - 11904: 0xDEC7,\n\t30192 - 11904: 0xB7F0,\n\t30193 - 11904: 0xB7F3,\n\t30194 - 11904: 0xB7F2,\n\t30195 - 11904: 0xB7F7,\n\t30196 - 11904: 0xB7F6,\n\t30197 - 11904: 0xDED3,\n\t30198 - 11904: 0xDED1,\n\t30199 - 11904: 0xDECA,\n\t30200 - 11904: 0xDECE,\n\t30201 - 11904: 0xDECD,\n\t30202 - 11904: 0xB7F4,\n\t30203 - 11904: 0xDED0,\n\t30204 - 11904: 0xDECC,\n\t30205 - 11904: 0xDED4,\n\t30206 - 11904: 0xDECB,\n\t30207 - 11904: 0xB7F5,\n\t30208 - 11904: 0xB7EF,\n\t30209 - 11904: 0xB7F1,\n\t30210 - 11904: 0xFEBC,\n\t30211 - 11904: 0xDEC9,\n\t30215 - 11904: 0x9FFE,\n\t30216 - 11904: 0xE2DB,\n\t30217 - 11904: 0xBAC7,\n\t30218 - 11904: 0xE2DF,\n\t30219 - 11904: 0xBAC6,\n\t30220 - 11904: 0xE2DC,\n\t30221 - 11904: 0xBAC5,\n\t30223 - 11904: 0xDEC8,\n\t30224 - 11904: 0xDECF,\n\t30225 - 11904: 0xE2DE,\n\t30227 - 11904: 0xBAC8,\n\t30228 - 11904: 0xE2E0,\n\t30229 - 11904: 0xE2DD,\n\t30230 - 11904: 0xE2DA,\n\t30233 - 11904: 0xE6B1,\n\t30234 - 11904: 0xE6B5,\n\t30235 - 11904: 0xE6B7,\n\t30236 - 11904: 0xE6B3,\n\t30237 - 11904: 0xE6B2,\n\t30238 - 11904: 0xE6B0,\n\t30239 - 11904: 0xBD45,\n\t30240 - 11904: 0xBD43,\n\t30241 - 11904: 0xBD48,\n\t30242 - 11904: 0xBD49,\n\t30243 - 11904: 0xE6B4,\n\t30244 - 11904: 0xBD46,\n\t30245 - 11904: 0xE6AF,\n\t30246 - 11904: 0xBD47,\n\t30247 - 11904: 0xBAC4,\n\t30248 - 11904: 0xE6B6,\n\t30249 - 11904: 0xBD44,\n\t30252 - 11904: 0xFEBD,\n\t30253 - 11904: 0xEA6C,\n\t30255 - 11904: 0xEA6B,\n\t30256 - 11904: 0xEA73,\n\t30257 - 11904: 0xEA6D,\n\t30258 - 11904: 0xEA72,\n\t30259 - 11904: 0xEA6F,\n\t30260 - 11904: 0xBF60,\n\t30261 - 11904: 0xEA71,\n\t30264 - 11904: 0xBF61,\n\t30266 - 11904: 0xBF62,\n\t30267 - 11904: 0x9DDD,\n\t30268 - 11904: 0xEA70,\n\t30269 - 11904: 0xEA6E,\n\t30272 - 11904: 0x9EE1,\n\t30274 - 11904: 0xC0F8,\n\t30275 - 11904: 0xED74,\n\t30278 - 11904: 0xC0F7,\n\t30279 - 11904: 0xED77,\n\t30280 - 11904: 0xED75,\n\t30281 - 11904: 0xED76,\n\t30284 - 11904: 0xC0F9,\n\t30285 - 11904: 0x98DA,\n\t30286 - 11904: 0x9DDF,\n\t30287 - 11904: 0xFEBF,\n\t30288 - 11904: 0xF04D,\n\t30289 - 11904: 0xFEBE,\n\t30290 - 11904: 0xC2A1,\n\t30291 - 11904: 0xF04E,\n\t30292 - 11904: 0x9EEB,\n\t30294 - 11904: 0xC27D,\n\t30295 - 11904: 0xF04F,\n\t30296 - 11904: 0xC27E,\n\t30297 - 11904: 0xF04C,\n\t30298 - 11904: 0xF050,\n\t30300 - 11904: 0xF04A,\n\t30303 - 11904: 0xC3A7,\n\t30304 - 11904: 0xF278,\n\t30305 - 11904: 0xC3A8,\n\t30306 - 11904: 0xC46F,\n\t30308 - 11904: 0xF04B,\n\t30309 - 11904: 0xC470,\n\t30310 - 11904: 0x9E59,\n\t30311 - 11904: 0xA05C,\n\t30313 - 11904: 0xC4EE,\n\t30314 - 11904: 0xF5DF,\n\t30316 - 11904: 0xC57E,\n\t30317 - 11904: 0xF6F4,\n\t30318 - 11904: 0xC57D,\n\t30319 - 11904: 0xFEC0,\n\t30320 - 11904: 0xF7EA,\n\t30321 - 11904: 0xC5F5,\n\t30322 - 11904: 0xC5F6,\n\t30323 - 11904: 0x9477,\n\t30324 - 11904: 0x98DC,\n\t30325 - 11904: 0xF9CC,\n\t30326 - 11904: 0xFEC1,\n\t30328 - 11904: 0xACD1,\n\t30329 - 11904: 0xCFDE,\n\t30330 - 11904: 0x98DE,\n\t30331 - 11904: 0xB56E,\n\t30332 - 11904: 0xB56F,\n\t30333 - 11904: 0xA5D5,\n\t30334 - 11904: 0xA6CA,\n\t30335 - 11904: 0xCA47,\n\t30337 - 11904: 0xCB71,\n\t30338 - 11904: 0xA86D,\n\t30340 - 11904: 0xAABA,\n\t30342 - 11904: 0xACD2,\n\t30343 - 11904: 0xACD3,\n\t30344 - 11904: 0xACD4,\n\t30345 - 11904: 0xD6A6,\n\t30346 - 11904: 0xD2CB,\n\t30347 - 11904: 0xAF6F,\n\t30350 - 11904: 0xB2AE,\n\t30351 - 11904: 0xD6A5,\n\t30352 - 11904: 0xFEC3,\n\t30354 - 11904: 0xDAB8,\n\t30355 - 11904: 0xB571,\n\t30357 - 11904: 0xDAB7,\n\t30358 - 11904: 0xB570,\n\t30361 - 11904: 0xDED5,\n\t30362 - 11904: 0xBD4A,\n\t30363 - 11904: 0xE6BB,\n\t30364 - 11904: 0xE6B8,\n\t30365 - 11904: 0xE6B9,\n\t30366 - 11904: 0xE6BA,\n\t30369 - 11904: 0xFEC8,\n\t30372 - 11904: 0xED78,\n\t30373 - 11904: 0xFEC9,\n\t30374 - 11904: 0xF051,\n\t30378 - 11904: 0xF471,\n\t30379 - 11904: 0xF470,\n\t30381 - 11904: 0xF6F5,\n\t30382 - 11904: 0xA5D6,\n\t30383 - 11904: 0xCD75,\n\t30384 - 11904: 0xAF70,\n\t30388 - 11904: 0xB572,\n\t30389 - 11904: 0xDED6,\n\t30391 - 11904: 0xFECA,\n\t30392 - 11904: 0xE2E1,\n\t30394 - 11904: 0xBD4B,\n\t30395 - 11904: 0xEA74,\n\t30397 - 11904: 0xF052,\n\t30398 - 11904: 0xF472,\n\t30399 - 11904: 0xA5D7,\n\t30402 - 11904: 0xAABB,\n\t30403 - 11904: 0xACD7,\n\t30404 - 11904: 0xCFDF,\n\t30405 - 11904: 0xACD8,\n\t30406 - 11904: 0xACD6,\n\t30408 - 11904: 0xACD5,\n\t30409 - 11904: 0xD2CC,\n\t30410 - 11904: 0xAF71,\n\t30412 - 11904: 0xFECB,\n\t30413 - 11904: 0xAF72,\n\t30414 - 11904: 0xAF73,\n\t30418 - 11904: 0xB2B0,\n\t30419 - 11904: 0xD6A7,\n\t30420 - 11904: 0xB2AF,\n\t30422 - 11904: 0x9FC2,\n\t30425 - 11904: 0x8C6B,\n\t30426 - 11904: 0xDAB9,\n\t30427 - 11904: 0xB2B1,\n\t30428 - 11904: 0xB573,\n\t30429 - 11904: 0xDED7,\n\t30430 - 11904: 0xB7F8,\n\t30431 - 11904: 0xB7F9,\n\t30433 - 11904: 0xBAC9,\n\t30435 - 11904: 0xBACA,\n\t30436 - 11904: 0xBD4C,\n\t30437 - 11904: 0xBF64,\n\t30438 - 11904: 0xEA75,\n\t30439 - 11904: 0xBF63,\n\t30441 - 11904: 0xED79,\n\t30442 - 11904: 0xC0FA,\n\t30444 - 11904: 0xF053,\n\t30445 - 11904: 0xF473,\n\t30446 - 11904: 0xA5D8,\n\t30447 - 11904: 0xA86E,\n\t30448 - 11904: 0xCD78,\n\t30449 - 11904: 0xCD77,\n\t30450 - 11904: 0xAABC,\n\t30451 - 11904: 0xCD76,\n\t30452 - 11904: 0xAABD,\n\t30453 - 11904: 0xCD79,\n\t30455 - 11904: 0xCFE5,\n\t30456 - 11904: 0xACDB,\n\t30457 - 11904: 0xACDA,\n\t30458 - 11904: 0xCFE7,\n\t30459 - 11904: 0xCFE6,\n\t30460 - 11904: 0xACDF,\n\t30462 - 11904: 0xACDE,\n\t30465 - 11904: 0xACD9,\n\t30467 - 11904: 0xCFE1,\n\t30468 - 11904: 0xCFE2,\n\t30469 - 11904: 0xCFE3,\n\t30471 - 11904: 0xACE0,\n\t30472 - 11904: 0xCFE0,\n\t30473 - 11904: 0xACDC,\n\t30474 - 11904: 0xCFE4,\n\t30475 - 11904: 0xACDD,\n\t30476 - 11904: 0x98C4,\n\t30478 - 11904: 0x94B0,\n\t30479 - 11904: 0x94B1,\n\t30480 - 11904: 0xD2CF,\n\t30481 - 11904: 0xD2D3,\n\t30482 - 11904: 0xD2D1,\n\t30483 - 11904: 0xD2D0,\n\t30485 - 11904: 0xD2D4,\n\t30489 - 11904: 0xD2D5,\n\t30490 - 11904: 0xD2D6,\n\t30491 - 11904: 0xD2CE,\n\t30493 - 11904: 0xD2CD,\n\t30494 - 11904: 0xFED1,\n\t30495 - 11904: 0xAF75,\n\t30496 - 11904: 0xAF76,\n\t30498 - 11904: 0xD2D7,\n\t30499 - 11904: 0xD2D2,\n\t30500 - 11904: 0xA0C1,\n\t30501 - 11904: 0xD6B0,\n\t30502 - 11904: 0xFED2,\n\t30503 - 11904: 0xD2D8,\n\t30504 - 11904: 0xAF77,\n\t30505 - 11904: 0xAF74,\n\t30507 - 11904: 0xA0CD,\n\t30509 - 11904: 0xD6AA,\n\t30511 - 11904: 0xD6A9,\n\t30513 - 11904: 0xD6AB,\n\t30514 - 11904: 0xD6AC,\n\t30515 - 11904: 0xD6AE,\n\t30516 - 11904: 0xD6AD,\n\t30517 - 11904: 0xD6B2,\n\t30518 - 11904: 0xB2B5,\n\t30519 - 11904: 0xB2B2,\n\t30520 - 11904: 0xB2B6,\n\t30521 - 11904: 0xD6A8,\n\t30522 - 11904: 0xB2B7,\n\t30523 - 11904: 0xD6B1,\n\t30524 - 11904: 0xB2B4,\n\t30525 - 11904: 0xD6AF,\n\t30526 - 11904: 0xB2B3,\n\t30528 - 11904: 0xFED3,\n\t30531 - 11904: 0x98E5,\n\t30532 - 11904: 0xDABC,\n\t30533 - 11904: 0xDABE,\n\t30534 - 11904: 0xDABA,\n\t30535 - 11904: 0xDABB,\n\t30538 - 11904: 0xDABF,\n\t30539 - 11904: 0xDAC1,\n\t30540 - 11904: 0xDAC2,\n\t30541 - 11904: 0xDABD,\n\t30542 - 11904: 0xDAC0,\n\t30543 - 11904: 0xB574,\n\t30546 - 11904: 0xDEDB,\n\t30548 - 11904: 0xDEE0,\n\t30549 - 11904: 0xDED8,\n\t30550 - 11904: 0xDEDC,\n\t30552 - 11904: 0xFED6,\n\t30553 - 11904: 0xDEE1,\n\t30554 - 11904: 0xDEDD,\n\t30555 - 11904: 0xB7FA,\n\t30556 - 11904: 0xB843,\n\t30558 - 11904: 0xB7FD,\n\t30559 - 11904: 0xDED9,\n\t30560 - 11904: 0xDEDA,\n\t30561 - 11904: 0xBACE,\n\t30562 - 11904: 0xB846,\n\t30563 - 11904: 0xB7FE,\n\t30565 - 11904: 0xB844,\n\t30566 - 11904: 0xB7FC,\n\t30567 - 11904: 0xDEDF,\n\t30568 - 11904: 0xB845,\n\t30569 - 11904: 0xDEDE,\n\t30570 - 11904: 0xB841,\n\t30571 - 11904: 0xB7FB,\n\t30572 - 11904: 0xB842,\n\t30573 - 11904: 0xDEE2,\n\t30574 - 11904: 0xE2E6,\n\t30575 - 11904: 0xE2E8,\n\t30578 - 11904: 0x91E4,\n\t30583 - 11904: 0x8FC7,\n\t30584 - 11904: 0x94AE,\n\t30585 - 11904: 0xB840,\n\t30586 - 11904: 0x8A4F,\n\t30587 - 11904: 0x94B2,\n\t30588 - 11904: 0xE2E3,\n\t30589 - 11904: 0xBACC,\n\t30590 - 11904: 0xE2E9,\n\t30591 - 11904: 0xBACD,\n\t30592 - 11904: 0xE2E7,\n\t30593 - 11904: 0xE2E2,\n\t30594 - 11904: 0xE2E5,\n\t30595 - 11904: 0xE2EA,\n\t30596 - 11904: 0xBACB,\n\t30597 - 11904: 0xE2E4,\n\t30599 - 11904: 0xBD4E,\n\t30600 - 11904: 0xE6BF,\n\t30601 - 11904: 0xE6BE,\n\t30603 - 11904: 0xBD51,\n\t30604 - 11904: 0xBD4F,\n\t30605 - 11904: 0xE6BC,\n\t30606 - 11904: 0xBD4D,\n\t30607 - 11904: 0xE6BD,\n\t30609 - 11904: 0xBD50,\n\t30611 - 11904: 0x8FD4,\n\t30613 - 11904: 0xEA7D,\n\t30615 - 11904: 0xEAA1,\n\t30616 - 11904: 0x98EA,\n\t30617 - 11904: 0xEA7E,\n\t30618 - 11904: 0xEA76,\n\t30619 - 11904: 0xEA7A,\n\t30620 - 11904: 0xEA79,\n\t30621 - 11904: 0xEA77,\n\t30622 - 11904: 0xBF66,\n\t30623 - 11904: 0xBF67,\n\t30624 - 11904: 0xBF65,\n\t30625 - 11904: 0xEA78,\n\t30626 - 11904: 0xEA7B,\n\t30627 - 11904: 0xEA7C,\n\t30629 - 11904: 0xBF68,\n\t30631 - 11904: 0xC140,\n\t30632 - 11904: 0xEDA3,\n\t30634 - 11904: 0xC0FC,\n\t30635 - 11904: 0xED7B,\n\t30636 - 11904: 0xC0FE,\n\t30637 - 11904: 0xC141,\n\t30639 - 11904: 0xFED8,\n\t30640 - 11904: 0xC0FD,\n\t30641 - 11904: 0xEDA2,\n\t30642 - 11904: 0xED7C,\n\t30643 - 11904: 0xC0FB,\n\t30644 - 11904: 0xEDA1,\n\t30645 - 11904: 0xED7A,\n\t30646 - 11904: 0xED7E,\n\t30647 - 11904: 0xED7D,\n\t30649 - 11904: 0x9DE0,\n\t30650 - 11904: 0xF055,\n\t30651 - 11904: 0xC2A4,\n\t30652 - 11904: 0xC2A5,\n\t30653 - 11904: 0xC2A2,\n\t30654 - 11904: 0x98EE,\n\t30655 - 11904: 0xC2A3,\n\t30658 - 11904: 0xF054,\n\t30659 - 11904: 0x95C4,\n\t30660 - 11904: 0xF27B,\n\t30661 - 11904: 0xFCE8,\n\t30663 - 11904: 0xC3A9,\n\t30665 - 11904: 0xF279,\n\t30666 - 11904: 0xF27A,\n\t30667 - 11904: 0x98EF,\n\t30668 - 11904: 0xF474,\n\t30669 - 11904: 0xF477,\n\t30670 - 11904: 0xF475,\n\t30671 - 11904: 0xF476,\n\t30672 - 11904: 0xF5E0,\n\t30675 - 11904: 0xC4EF,\n\t30676 - 11904: 0xF7EB,\n\t30677 - 11904: 0xF8B4,\n\t30679 - 11904: 0xC5F7,\n\t30680 - 11904: 0xF8F8,\n\t30681 - 11904: 0xF8F9,\n\t30682 - 11904: 0xC666,\n\t30683 - 11904: 0xA5D9,\n\t30684 - 11904: 0xACE1,\n\t30685 - 11904: 0x8C6E,\n\t30686 - 11904: 0xDAC3,\n\t30688 - 11904: 0xDEE3,\n\t30690 - 11904: 0xA5DA,\n\t30691 - 11904: 0xA86F,\n\t30693 - 11904: 0xAABE,\n\t30694 - 11904: 0xFAD8,\n\t30695 - 11904: 0xCFE8,\n\t30696 - 11904: 0xCFE9,\n\t30697 - 11904: 0xAF78,\n\t30700 - 11904: 0xDAC4,\n\t30701 - 11904: 0xB575,\n\t30702 - 11904: 0xB847,\n\t30703 - 11904: 0xC142,\n\t30704 - 11904: 0xEDA4,\n\t30705 - 11904: 0xF27C,\n\t30706 - 11904: 0xF478,\n\t30707 - 11904: 0xA5DB,\n\t30708 - 11904: 0xFEDC,\n\t30711 - 11904: 0xCDA1,\n\t30712 - 11904: 0xCD7A,\n\t30713 - 11904: 0xCD7C,\n\t30714 - 11904: 0xCD7E,\n\t30715 - 11904: 0xCD7D,\n\t30716 - 11904: 0xCD7B,\n\t30717 - 11904: 0xAABF,\n\t30718 - 11904: 0xA0AE,\n\t30722 - 11904: 0xACE2,\n\t30723 - 11904: 0xCFF2,\n\t30725 - 11904: 0xCFED,\n\t30726 - 11904: 0xCFEA,\n\t30728 - 11904: 0x9D4C,\n\t30729 - 11904: 0xFEDD,\n\t30732 - 11904: 0xACE4,\n\t30733 - 11904: 0xACE5,\n\t30734 - 11904: 0xCFF0,\n\t30735 - 11904: 0xCFEF,\n\t30736 - 11904: 0xCFEE,\n\t30737 - 11904: 0xCFEB,\n\t30738 - 11904: 0xCFEC,\n\t30739 - 11904: 0xCFF3,\n\t30740 - 11904: 0xACE3,\n\t30744 - 11904: 0x98F1,\n\t30748 - 11904: 0x98F3,\n\t30749 - 11904: 0xAF7C,\n\t30750 - 11904: 0x94C1,\n\t30751 - 11904: 0xAFA4,\n\t30752 - 11904: 0xAFA3,\n\t30753 - 11904: 0xD2E1,\n\t30754 - 11904: 0xD2DB,\n\t30755 - 11904: 0xD2D9,\n\t30757 - 11904: 0xAFA1,\n\t30758 - 11904: 0xD6B9,\n\t30759 - 11904: 0xAF7A,\n\t30760 - 11904: 0xD2DE,\n\t30761 - 11904: 0xD2E2,\n\t30762 - 11904: 0xD2E4,\n\t30763 - 11904: 0xD2E0,\n\t30764 - 11904: 0xD2DA,\n\t30765 - 11904: 0xAFA2,\n\t30766 - 11904: 0xD2DF,\n\t30767 - 11904: 0xD2DD,\n\t30768 - 11904: 0xAF79,\n\t30769 - 11904: 0xD2E5,\n\t30770 - 11904: 0xAFA5,\n\t30771 - 11904: 0xD2E3,\n\t30772 - 11904: 0xAF7D,\n\t30773 - 11904: 0xD2DC,\n\t30775 - 11904: 0xAF7E,\n\t30776 - 11904: 0xAF7B,\n\t30777 - 11904: 0x98F5,\n\t30780 - 11904: 0xFA4F,\n\t30781 - 11904: 0x96E2,\n\t30786 - 11904: 0x9450,\n\t30787 - 11904: 0xB2B9,\n\t30788 - 11904: 0x96A2,\n\t30789 - 11904: 0xD6BA,\n\t30791 - 11904: 0x98F6,\n\t30792 - 11904: 0xD6B3,\n\t30793 - 11904: 0xD6B5,\n\t30794 - 11904: 0xD6B7,\n\t30795 - 11904: 0x96E5,\n\t30796 - 11904: 0xD6B8,\n\t30797 - 11904: 0xD6B6,\n\t30798 - 11904: 0xB2BA,\n\t30800 - 11904: 0xD6BB,\n\t30801 - 11904: 0x98F7,\n\t30802 - 11904: 0xD6B4,\n\t30803 - 11904: 0xA046,\n\t30804 - 11904: 0x96E3,\n\t30812 - 11904: 0xDAC8,\n\t30813 - 11904: 0xB576,\n\t30814 - 11904: 0xDAD0,\n\t30816 - 11904: 0xDAC5,\n\t30818 - 11904: 0xDAD1,\n\t30820 - 11904: 0xDAC6,\n\t30821 - 11904: 0xDAC7,\n\t30822 - 11904: 0x98F8,\n\t30824 - 11904: 0xDACF,\n\t30825 - 11904: 0xDACE,\n\t30826 - 11904: 0xDACB,\n\t30827 - 11904: 0xB2B8,\n\t30828 - 11904: 0xB577,\n\t30829 - 11904: 0xDAC9,\n\t30830 - 11904: 0xDACC,\n\t30831 - 11904: 0xB578,\n\t30832 - 11904: 0xDACD,\n\t30833 - 11904: 0xDACA,\n\t30841 - 11904: 0xDEEE,\n\t30842 - 11904: 0x9EE4,\n\t30843 - 11904: 0xDEF2,\n\t30844 - 11904: 0xB84E,\n\t30846 - 11904: 0xE2F0,\n\t30847 - 11904: 0xB851,\n\t30848 - 11904: 0xDEF0,\n\t30849 - 11904: 0xF9D6,\n\t30851 - 11904: 0xDEED,\n\t30852 - 11904: 0xDEE8,\n\t30853 - 11904: 0xDEEA,\n\t30854 - 11904: 0xDEEB,\n\t30855 - 11904: 0xDEE4,\n\t30856 - 11904: 0x94C3,\n\t30857 - 11904: 0xB84D,\n\t30860 - 11904: 0xB84C,\n\t30861 - 11904: 0x94C2,\n\t30862 - 11904: 0xB848,\n\t30863 - 11904: 0xDEE7,\n\t30865 - 11904: 0xB84F,\n\t30867 - 11904: 0xB850,\n\t30868 - 11904: 0xDEE6,\n\t30869 - 11904: 0xDEE9,\n\t30870 - 11904: 0xDEF1,\n\t30871 - 11904: 0xB84A,\n\t30872 - 11904: 0xB84B,\n\t30873 - 11904: 0xDEEF,\n\t30874 - 11904: 0xDEE5,\n\t30878 - 11904: 0xE2F2,\n\t30879 - 11904: 0xBAD0,\n\t30880 - 11904: 0xE2F4,\n\t30881 - 11904: 0xDEEC,\n\t30882 - 11904: 0xE2F6,\n\t30883 - 11904: 0xBAD4,\n\t30884 - 11904: 0xE2F7,\n\t30885 - 11904: 0xE2F3,\n\t30887 - 11904: 0xBAD1,\n\t30888 - 11904: 0xE2EF,\n\t30889 - 11904: 0xBAD3,\n\t30890 - 11904: 0xE2EC,\n\t30891 - 11904: 0xE2F1,\n\t30892 - 11904: 0xE2F5,\n\t30893 - 11904: 0xE2EE,\n\t30895 - 11904: 0xFEE1,\n\t30896 - 11904: 0xB849,\n\t30897 - 11904: 0xFEE9,\n\t30898 - 11904: 0xE2EB,\n\t30899 - 11904: 0xBAD2,\n\t30900 - 11904: 0xE2ED,\n\t30902 - 11904: 0x96E4,\n\t30904 - 11904: 0x89AC,\n\t30905 - 11904: 0x96DB,\n\t30906 - 11904: 0xBD54,\n\t30907 - 11904: 0xE6C1,\n\t30908 - 11904: 0xBD58,\n\t30910 - 11904: 0xBD56,\n\t30913 - 11904: 0xBACF,\n\t30915 - 11904: 0xE6C8,\n\t30916 - 11904: 0xE6C9,\n\t30917 - 11904: 0xBD53,\n\t30919 - 11904: 0xFEE2,\n\t30920 - 11904: 0xE6C7,\n\t30921 - 11904: 0xE6CA,\n\t30922 - 11904: 0xBD55,\n\t30923 - 11904: 0xBD52,\n\t30924 - 11904: 0xE6C3,\n\t30925 - 11904: 0xE6C0,\n\t30926 - 11904: 0xE6C5,\n\t30927 - 11904: 0xE6C2,\n\t30928 - 11904: 0xBD59,\n\t30929 - 11904: 0xE6C4,\n\t30930 - 11904: 0x94C4,\n\t30931 - 11904: 0xFEE3,\n\t30932 - 11904: 0xE6C6,\n\t30933 - 11904: 0xBD57,\n\t30935 - 11904: 0xFEE7,\n\t30936 - 11904: 0x9FFB,\n\t30938 - 11904: 0xBF6A,\n\t30939 - 11904: 0xEAA8,\n\t30941 - 11904: 0xEAA2,\n\t30942 - 11904: 0xEAA6,\n\t30943 - 11904: 0xEAAC,\n\t30944 - 11904: 0xEAAD,\n\t30945 - 11904: 0xEAA9,\n\t30946 - 11904: 0xEAAA,\n\t30947 - 11904: 0xEAA7,\n\t30948 - 11904: 0x8C59,\n\t30949 - 11904: 0xEAA4,\n\t30951 - 11904: 0xBF6C,\n\t30952 - 11904: 0xBF69,\n\t30953 - 11904: 0xEAA3,\n\t30954 - 11904: 0xEAA5,\n\t30956 - 11904: 0xBF6B,\n\t30957 - 11904: 0xEAAB,\n\t30958 - 11904: 0x93C9,\n\t30959 - 11904: 0xC146,\n\t30960 - 11904: 0x94E8,\n\t30961 - 11904: 0xFB56,\n\t30962 - 11904: 0xEDAA,\n\t30963 - 11904: 0xEDA5,\n\t30964 - 11904: 0xC145,\n\t30965 - 11904: 0x90C5,\n\t30967 - 11904: 0xC143,\n\t30969 - 11904: 0xEDAC,\n\t30970 - 11904: 0xC144,\n\t30971 - 11904: 0xEDA8,\n\t30972 - 11904: 0xEDA9,\n\t30973 - 11904: 0xEDA6,\n\t30974 - 11904: 0xEDAD,\n\t30975 - 11904: 0xF056,\n\t30977 - 11904: 0xC147,\n\t30978 - 11904: 0xEDA7,\n\t30980 - 11904: 0xEDAE,\n\t30981 - 11904: 0xEDAB,\n\t30982 - 11904: 0xA0A8,\n\t30985 - 11904: 0xF05A,\n\t30988 - 11904: 0xF057,\n\t30990 - 11904: 0xC2A6,\n\t30992 - 11904: 0xF05B,\n\t30993 - 11904: 0xF05D,\n\t30994 - 11904: 0xF05C,\n\t30995 - 11904: 0xF058,\n\t30996 - 11904: 0xF059,\n\t30999 - 11904: 0xF2A3,\n\t31001 - 11904: 0xC3AA,\n\t31003 - 11904: 0xF27E,\n\t31004 - 11904: 0xF2A2,\n\t31005 - 11904: 0xF27D,\n\t31006 - 11904: 0xF2A4,\n\t31009 - 11904: 0xF2A1,\n\t31011 - 11904: 0xF47A,\n\t31012 - 11904: 0xF47D,\n\t31013 - 11904: 0xF479,\n\t31014 - 11904: 0xC471,\n\t31015 - 11904: 0xF47B,\n\t31016 - 11904: 0xF47C,\n\t31017 - 11904: 0xF47E,\n\t31018 - 11904: 0xC472,\n\t31019 - 11904: 0xC474,\n\t31020 - 11904: 0xC473,\n\t31021 - 11904: 0xF5E1,\n\t31022 - 11904: 0xFEE5,\n\t31023 - 11904: 0xF5E3,\n\t31025 - 11904: 0xF5E2,\n\t31026 - 11904: 0x98FD,\n\t31027 - 11904: 0x98FB,\n\t31028 - 11904: 0xFEE8,\n\t31029 - 11904: 0xF6F6,\n\t31030 - 11904: 0x8EBF,\n\t31032 - 11904: 0xF8B5,\n\t31033 - 11904: 0xF8FA,\n\t31034 - 11904: 0xA5DC,\n\t31035 - 11904: 0x8BD8,\n\t31036 - 11904: 0xFEF7,\n\t31037 - 11904: 0xCB72,\n\t31038 - 11904: 0xAAC0,\n\t31039 - 11904: 0xCDA3,\n\t31040 - 11904: 0xAAC1,\n\t31041 - 11904: 0xAAC2,\n\t31042 - 11904: 0xCDA2,\n\t31044 - 11904: 0xCFF8,\n\t31045 - 11904: 0xCFF7,\n\t31046 - 11904: 0xACE6,\n\t31047 - 11904: 0xACE9,\n\t31048 - 11904: 0xACE8,\n\t31049 - 11904: 0xACE7,\n\t31050 - 11904: 0xCFF4,\n\t31051 - 11904: 0xCFF6,\n\t31052 - 11904: 0xCFF5,\n\t31055 - 11904: 0xD2E8,\n\t31056 - 11904: 0xAFA7,\n\t31057 - 11904: 0xD2EC,\n\t31058 - 11904: 0xD2EB,\n\t31059 - 11904: 0xD2EA,\n\t31060 - 11904: 0xD2E6,\n\t31061 - 11904: 0xAFA6,\n\t31062 - 11904: 0xAFAA,\n\t31063 - 11904: 0xAFAD,\n\t31064 - 11904: 0x8F68,\n\t31065 - 11904: 0x94C6,\n\t31066 - 11904: 0xAFAE,\n\t31067 - 11904: 0xD2E7,\n\t31068 - 11904: 0xD2E9,\n\t31069 - 11904: 0xAFAC,\n\t31070 - 11904: 0xAFAB,\n\t31071 - 11904: 0xAFA9,\n\t31072 - 11904: 0xAFA8,\n\t31073 - 11904: 0xD6C2,\n\t31074 - 11904: 0x9DEA,\n\t31075 - 11904: 0xD6C0,\n\t31076 - 11904: 0xD6BC,\n\t31077 - 11904: 0xB2BB,\n\t31079 - 11904: 0xD6BD,\n\t31080 - 11904: 0xB2BC,\n\t31081 - 11904: 0xD6BE,\n\t31082 - 11904: 0xD6BF,\n\t31083 - 11904: 0xD6C1,\n\t31085 - 11904: 0xB2BD,\n\t31088 - 11904: 0xDAD5,\n\t31089 - 11904: 0xFC69,\n\t31090 - 11904: 0xDAD4,\n\t31091 - 11904: 0xDAD3,\n\t31092 - 11904: 0xDAD2,\n\t31097 - 11904: 0xDEF6,\n\t31098 - 11904: 0xB852,\n\t31100 - 11904: 0xDEF3,\n\t31101 - 11904: 0xDEF5,\n\t31102 - 11904: 0x9CDA,\n\t31103 - 11904: 0xB853,\n\t31104 - 11904: 0xFEF3,\n\t31105 - 11904: 0xB854,\n\t31106 - 11904: 0xDEF4,\n\t31107 - 11904: 0x9C72,\n\t31110 - 11904: 0xFEF0,\n\t31111 - 11904: 0x89C9,\n\t31112 - 11904: 0xE341,\n\t31114 - 11904: 0xE2F9,\n\t31115 - 11904: 0xE2FA,\n\t31117 - 11904: 0xBAD7,\n\t31118 - 11904: 0xBAD5,\n\t31119 - 11904: 0xBAD6,\n\t31120 - 11904: 0xE343,\n\t31121 - 11904: 0x9941,\n\t31122 - 11904: 0xE342,\n\t31123 - 11904: 0xE2FE,\n\t31124 - 11904: 0xE2FD,\n\t31125 - 11904: 0xE2FC,\n\t31126 - 11904: 0xE2FB,\n\t31127 - 11904: 0xE340,\n\t31128 - 11904: 0xE2F8,\n\t31129 - 11904: 0x9942,\n\t31130 - 11904: 0xE6CB,\n\t31131 - 11904: 0xE6D0,\n\t31132 - 11904: 0xE6CE,\n\t31133 - 11904: 0xFEF5,\n\t31135 - 11904: 0x91D7,\n\t31136 - 11904: 0xE6CD,\n\t31137 - 11904: 0xE6CC,\n\t31138 - 11904: 0xE6CF,\n\t31140 - 11904: 0xEAAE,\n\t31141 - 11904: 0x94CC,\n\t31142 - 11904: 0xBF6D,\n\t31143 - 11904: 0xC148,\n\t31144 - 11904: 0xEDB0,\n\t31145 - 11904: 0xFEF8,\n\t31146 - 11904: 0xC149,\n\t31147 - 11904: 0xEDAF,\n\t31148 - 11904: 0xF05F,\n\t31149 - 11904: 0xF05E,\n\t31150 - 11904: 0xC2A7,\n\t31152 - 11904: 0xF2A5,\n\t31153 - 11904: 0xC3AB,\n\t31154 - 11904: 0xF4A1,\n\t31155 - 11904: 0xC5A1,\n\t31156 - 11904: 0xF6F7,\n\t31158 - 11904: 0xF8B7,\n\t31159 - 11904: 0xF8B6,\n\t31160 - 11904: 0xC9A8,\n\t31161 - 11904: 0xACEA,\n\t31162 - 11904: 0xACEB,\n\t31163 - 11904: 0xD6C3,\n\t31165 - 11904: 0xB856,\n\t31166 - 11904: 0xA5DD,\n\t31167 - 11904: 0xA872,\n\t31168 - 11904: 0xA871,\n\t31169 - 11904: 0xA870,\n\t31172 - 11904: 0x97A8,\n\t31173 - 11904: 0xCDA4,\n\t31174 - 11904: 0xFEFC,\n\t31176 - 11904: 0xAAC4,\n\t31177 - 11904: 0xAAC3,\n\t31178 - 11904: 0x8CDE,\n\t31179 - 11904: 0xACEE,\n\t31180 - 11904: 0xFDBF,\n\t31181 - 11904: 0xCFFA,\n\t31182 - 11904: 0xCFFD,\n\t31183 - 11904: 0xCFFB,\n\t31184 - 11904: 0x87B3,\n\t31185 - 11904: 0xACEC,\n\t31186 - 11904: 0xACED,\n\t31188 - 11904: 0xFEFE,\n\t31189 - 11904: 0xCFF9,\n\t31190 - 11904: 0xCFFC,\n\t31192 - 11904: 0xAFB5,\n\t31196 - 11904: 0xD2F3,\n\t31197 - 11904: 0xD2F5,\n\t31198 - 11904: 0xD2F4,\n\t31199 - 11904: 0xAFB2,\n\t31200 - 11904: 0xD2EF,\n\t31202 - 11904: 0x96D1,\n\t31203 - 11904: 0xAFB0,\n\t31204 - 11904: 0xAFAF,\n\t31206 - 11904: 0xAFB3,\n\t31207 - 11904: 0xAFB1,\n\t31209 - 11904: 0xAFB4,\n\t31210 - 11904: 0xD2F2,\n\t31211 - 11904: 0xD2ED,\n\t31212 - 11904: 0xD2EE,\n\t31213 - 11904: 0xD2F1,\n\t31214 - 11904: 0xD2F0,\n\t31217 - 11904: 0x94D5,\n\t31220 - 11904: 0x94D0,\n\t31222 - 11904: 0xD6C6,\n\t31223 - 11904: 0xD6C7,\n\t31224 - 11904: 0xD6C5,\n\t31226 - 11904: 0xD6C4,\n\t31227 - 11904: 0xB2BE,\n\t31232 - 11904: 0xB57D,\n\t31234 - 11904: 0xDAD6,\n\t31235 - 11904: 0xDAD8,\n\t31236 - 11904: 0xDADA,\n\t31237 - 11904: 0xB57C,\n\t31238 - 11904: 0x9944,\n\t31240 - 11904: 0xB57A,\n\t31242 - 11904: 0xDAD7,\n\t31243 - 11904: 0xB57B,\n\t31244 - 11904: 0xDAD9,\n\t31245 - 11904: 0xB579,\n\t31248 - 11904: 0xDF41,\n\t31249 - 11904: 0xDEF7,\n\t31250 - 11904: 0xDEFA,\n\t31251 - 11904: 0xDEFE,\n\t31252 - 11904: 0xB85A,\n\t31253 - 11904: 0xDEFC,\n\t31255 - 11904: 0xDEFB,\n\t31256 - 11904: 0xDEF8,\n\t31257 - 11904: 0xDEF9,\n\t31258 - 11904: 0xB858,\n\t31259 - 11904: 0xDF40,\n\t31260 - 11904: 0xB857,\n\t31262 - 11904: 0xB85C,\n\t31263 - 11904: 0xB85B,\n\t31264 - 11904: 0xB859,\n\t31266 - 11904: 0xDEFD,\n\t31270 - 11904: 0xE349,\n\t31272 - 11904: 0xE348,\n\t31274 - 11904: 0x8C63,\n\t31275 - 11904: 0xE344,\n\t31276 - 11904: 0x87BB,\n\t31277 - 11904: 0xA0B3,\n\t31278 - 11904: 0xBAD8,\n\t31279 - 11904: 0xE347,\n\t31280 - 11904: 0xE346,\n\t31281 - 11904: 0xBAD9,\n\t31282 - 11904: 0x87B4,\n\t31287 - 11904: 0xBD5E,\n\t31289 - 11904: 0xE6D2,\n\t31290 - 11904: 0x94CF,\n\t31291 - 11904: 0xBD5F,\n\t31292 - 11904: 0xBD5B,\n\t31293 - 11904: 0xBD5D,\n\t31294 - 11904: 0x9FFA,\n\t31295 - 11904: 0xBD5A,\n\t31296 - 11904: 0xBD5C,\n\t31299 - 11904: 0x91E5,\n\t31300 - 11904: 0xEAAF,\n\t31301 - 11904: 0x9C6A,\n\t31302 - 11904: 0xBF70,\n\t31303 - 11904: 0xEAB1,\n\t31304 - 11904: 0xEAB0,\n\t31305 - 11904: 0x8E49,\n\t31306 - 11904: 0xE345,\n\t31307 - 11904: 0xBF72,\n\t31308 - 11904: 0xBF71,\n\t31309 - 11904: 0xBF6E,\n\t31310 - 11904: 0xBF6F,\n\t31316 - 11904: 0xEDB5,\n\t31318 - 11904: 0xEDB3,\n\t31319 - 11904: 0xC14A,\n\t31320 - 11904: 0xEDB4,\n\t31322 - 11904: 0xEDB6,\n\t31323 - 11904: 0xEDB2,\n\t31324 - 11904: 0xEDB1,\n\t31327 - 11904: 0xF060,\n\t31328 - 11904: 0xC2AA,\n\t31329 - 11904: 0xC2A8,\n\t31330 - 11904: 0xC2A9,\n\t31333 - 11904: 0x8E4C,\n\t31335 - 11904: 0xF2A6,\n\t31336 - 11904: 0xF2A7,\n\t31337 - 11904: 0xC3AD,\n\t31339 - 11904: 0xC3AC,\n\t31340 - 11904: 0xF4A3,\n\t31341 - 11904: 0xF4A4,\n\t31342 - 11904: 0xF4A2,\n\t31344 - 11904: 0xF6F8,\n\t31345 - 11904: 0xF6F9,\n\t31346 - 11904: 0x87C9,\n\t31348 - 11904: 0xA5DE,\n\t31349 - 11904: 0xCA48,\n\t31350 - 11904: 0xA873,\n\t31352 - 11904: 0xCDA5,\n\t31353 - 11904: 0xAAC6,\n\t31354 - 11904: 0xAAC5,\n\t31355 - 11904: 0xCDA6,\n\t31357 - 11904: 0x8E4D,\n\t31358 - 11904: 0xD040,\n\t31359 - 11904: 0xACEF,\n\t31360 - 11904: 0xCFFE,\n\t31361 - 11904: 0xACF0,\n\t31363 - 11904: 0x9A73,\n\t31364 - 11904: 0xAFB6,\n\t31365 - 11904: 0xD2F8,\n\t31366 - 11904: 0xD2F6,\n\t31367 - 11904: 0xD2FC,\n\t31368 - 11904: 0xAFB7,\n\t31369 - 11904: 0xD2F7,\n\t31370 - 11904: 0xD2FB,\n\t31371 - 11904: 0xD2F9,\n\t31372 - 11904: 0xD2FA,\n\t31375 - 11904: 0xD6C8,\n\t31376 - 11904: 0xD6CA,\n\t31377 - 11904: 0x9947,\n\t31378 - 11904: 0xB2BF,\n\t31379 - 11904: 0x8CB1,\n\t31380 - 11904: 0xD6C9,\n\t31381 - 11904: 0xB2C0,\n\t31382 - 11904: 0xB5A2,\n\t31383 - 11904: 0xB5A1,\n\t31384 - 11904: 0xB57E,\n\t31385 - 11904: 0xDADB,\n\t31390 - 11904: 0xDF44,\n\t31391 - 11904: 0xB85D,\n\t31392 - 11904: 0xB85E,\n\t31394 - 11904: 0xDF43,\n\t31395 - 11904: 0xDF42,\n\t31400 - 11904: 0xE34A,\n\t31401 - 11904: 0xBADB,\n\t31402 - 11904: 0xBADA,\n\t31403 - 11904: 0xE34B,\n\t31404 - 11904: 0xE34C,\n\t31406 - 11904: 0xBD61,\n\t31407 - 11904: 0xBD60,\n\t31408 - 11904: 0x8E50,\n\t31409 - 11904: 0xEAB5,\n\t31410 - 11904: 0xE6D3,\n\t31411 - 11904: 0xE6D5,\n\t31412 - 11904: 0xE6D4,\n\t31413 - 11904: 0xEAB4,\n\t31414 - 11904: 0xEAB2,\n\t31415 - 11904: 0xEAB6,\n\t31416 - 11904: 0xEAB3,\n\t31418 - 11904: 0xBF73,\n\t31419 - 11904: 0x8E4F,\n\t31420 - 11904: 0x9949,\n\t31422 - 11904: 0xEDB7,\n\t31423 - 11904: 0xC14B,\n\t31424 - 11904: 0xEDB8,\n\t31425 - 11904: 0xEDB9,\n\t31426 - 11904: 0x8E51,\n\t31427 - 11904: 0x8E52,\n\t31428 - 11904: 0xC2AB,\n\t31429 - 11904: 0xC2AC,\n\t31431 - 11904: 0xC475,\n\t31432 - 11904: 0x9AB2,\n\t31433 - 11904: 0x89A5,\n\t31434 - 11904: 0xC5D1,\n\t31435 - 11904: 0xA5DF,\n\t31439 - 11904: 0x994C,\n\t31441 - 11904: 0xD041,\n\t31443 - 11904: 0x9FF8,\n\t31448 - 11904: 0xD2FD,\n\t31449 - 11904: 0xAFB8,\n\t31450 - 11904: 0x8E56,\n\t31451 - 11904: 0x994D,\n\t31452 - 11904: 0x91CA,\n\t31453 - 11904: 0x8E57,\n\t31455 - 11904: 0xB3BA,\n\t31456 - 11904: 0xB3B9,\n\t31458 - 11904: 0x94E1,\n\t31459 - 11904: 0xB5A4,\n\t31460 - 11904: 0xDADD,\n\t31461 - 11904: 0xB5A3,\n\t31462 - 11904: 0xDADC,\n\t31463 - 11904: 0x9047,\n\t31465 - 11904: 0x8FD8,\n\t31466 - 11904: 0x8E58,\n\t31467 - 11904: 0xDF45,\n\t31469 - 11904: 0xBADC,\n\t31470 - 11904: 0xE34D,\n\t31471 - 11904: 0xBADD,\n\t31478 - 11904: 0xC476,\n\t31479 - 11904: 0xF4A5,\n\t31481 - 11904: 0xA6CB,\n\t31482 - 11904: 0xAAC7,\n\t31483 - 11904: 0xCDA7,\n\t31484 - 11904: 0x87A3,\n\t31485 - 11904: 0xACF2,\n\t31486 - 11904: 0x94EB,\n\t31487 - 11904: 0xACF1,\n\t31488 - 11904: 0xD042,\n\t31489 - 11904: 0xD043,\n\t31492 - 11904: 0xD340,\n\t31493 - 11904: 0xD342,\n\t31494 - 11904: 0xAFB9,\n\t31496 - 11904: 0xD344,\n\t31497 - 11904: 0xD347,\n\t31498 - 11904: 0xD345,\n\t31499 - 11904: 0x8E5C,\n\t31500 - 11904: 0x9553,\n\t31502 - 11904: 0xD346,\n\t31503 - 11904: 0xD343,\n\t31504 - 11904: 0xD2FE,\n\t31505 - 11904: 0xAFBA,\n\t31506 - 11904: 0xD348,\n\t31507 - 11904: 0xD341,\n\t31508 - 11904: 0x9FE5,\n\t31512 - 11904: 0xD6D3,\n\t31513 - 11904: 0xB2C6,\n\t31514 - 11904: 0xD6DC,\n\t31515 - 11904: 0xB2C3,\n\t31517 - 11904: 0xD6D5,\n\t31518 - 11904: 0xB2C7,\n\t31519 - 11904: 0x9F56,\n\t31520 - 11904: 0xB2C1,\n\t31522 - 11904: 0xD6D0,\n\t31523 - 11904: 0xD6DD,\n\t31524 - 11904: 0xD6D1,\n\t31525 - 11904: 0xD6CE,\n\t31526 - 11904: 0xB2C5,\n\t31527 - 11904: 0x954F,\n\t31528 - 11904: 0xB2C2,\n\t31529 - 11904: 0x8E5E,\n\t31530 - 11904: 0xD6D4,\n\t31531 - 11904: 0xD6D7,\n\t31532 - 11904: 0xB2C4,\n\t31533 - 11904: 0xD6D8,\n\t31534 - 11904: 0xB2C8,\n\t31535 - 11904: 0xD6D9,\n\t31536 - 11904: 0xD6CF,\n\t31537 - 11904: 0xD6D6,\n\t31538 - 11904: 0xD6DA,\n\t31539 - 11904: 0xD6D2,\n\t31540 - 11904: 0xD6CD,\n\t31541 - 11904: 0xD6CB,\n\t31544 - 11904: 0xD6DB,\n\t31545 - 11904: 0x996A,\n\t31547 - 11904: 0xDADF,\n\t31552 - 11904: 0xDAE4,\n\t31554 - 11904: 0x9C64,\n\t31555 - 11904: 0x9CD9,\n\t31556 - 11904: 0xDAE0,\n\t31557 - 11904: 0xDAE6,\n\t31558 - 11904: 0xB5A7,\n\t31559 - 11904: 0xD6CC,\n\t31560 - 11904: 0xDAE1,\n\t31561 - 11904: 0xB5A5,\n\t31562 - 11904: 0xDADE,\n\t31563 - 11904: 0xB5AC,\n\t31564 - 11904: 0xDAE2,\n\t31565 - 11904: 0xB5AB,\n\t31566 - 11904: 0xDAE3,\n\t31567 - 11904: 0xB5AD,\n\t31568 - 11904: 0xB5A8,\n\t31569 - 11904: 0xB5AE,\n\t31570 - 11904: 0xB5A9,\n\t31572 - 11904: 0xB5AA,\n\t31573 - 11904: 0x8E5D,\n\t31574 - 11904: 0xB5A6,\n\t31576 - 11904: 0xDAE5,\n\t31584 - 11904: 0xB861,\n\t31585 - 11904: 0xDF50,\n\t31586 - 11904: 0x9950,\n\t31587 - 11904: 0xDF53,\n\t31588 - 11904: 0xDF47,\n\t31589 - 11904: 0xDF4C,\n\t31590 - 11904: 0xDF46,\n\t31591 - 11904: 0xB863,\n\t31593 - 11904: 0xDF4A,\n\t31596 - 11904: 0x9951,\n\t31597 - 11904: 0xDF48,\n\t31598 - 11904: 0xB862,\n\t31599 - 11904: 0x8E62,\n\t31600 - 11904: 0xDF4F,\n\t31601 - 11904: 0xDF4E,\n\t31602 - 11904: 0xDF4B,\n\t31603 - 11904: 0xDF4D,\n\t31604 - 11904: 0xDF49,\n\t31605 - 11904: 0xBAE1,\n\t31606 - 11904: 0xDF52,\n\t31607 - 11904: 0xB85F,\n\t31608 - 11904: 0xDF51,\n\t31611 - 11904: 0x9952,\n\t31618 - 11904: 0xE35D,\n\t31620 - 11904: 0xBAE8,\n\t31621 - 11904: 0xE358,\n\t31623 - 11904: 0xBAE7,\n\t31624 - 11904: 0xE34E,\n\t31626 - 11904: 0xE350,\n\t31627 - 11904: 0xBAE0,\n\t31628 - 11904: 0xE355,\n\t31629 - 11904: 0xE354,\n\t31630 - 11904: 0xE357,\n\t31631 - 11904: 0xBAE5,\n\t31632 - 11904: 0xE352,\n\t31633 - 11904: 0xE351,\n\t31634 - 11904: 0x8E68,\n\t31636 - 11904: 0xBAE4,\n\t31637 - 11904: 0xBADF,\n\t31638 - 11904: 0xE353,\n\t31639 - 11904: 0xBAE2,\n\t31640 - 11904: 0xE359,\n\t31641 - 11904: 0xE35B,\n\t31643 - 11904: 0xE356,\n\t31644 - 11904: 0xE34F,\n\t31645 - 11904: 0xBAE3,\n\t31648 - 11904: 0xBD69,\n\t31649 - 11904: 0xBADE,\n\t31650 - 11904: 0x8E61,\n\t31651 - 11904: 0x9F59,\n\t31652 - 11904: 0xE35C,\n\t31660 - 11904: 0xE6D9,\n\t31661 - 11904: 0xBD62,\n\t31662 - 11904: 0x87D0,\n\t31663 - 11904: 0xE6DB,\n\t31665 - 11904: 0xBD63,\n\t31666 - 11904: 0x8BB3,\n\t31668 - 11904: 0xBD65,\n\t31669 - 11904: 0xE6DE,\n\t31671 - 11904: 0xE6D6,\n\t31672 - 11904: 0xBAE6,\n\t31673 - 11904: 0xE6DC,\n\t31678 - 11904: 0xE6D8,\n\t31680 - 11904: 0xB860,\n\t31681 - 11904: 0xBD68,\n\t31684 - 11904: 0xBD64,\n\t31685 - 11904: 0x87B9,\n\t31686 - 11904: 0xBD66,\n\t31687 - 11904: 0xBD67,\n\t31689 - 11904: 0xBF76,\n\t31690 - 11904: 0xE6DD,\n\t31691 - 11904: 0xE6D7,\n\t31692 - 11904: 0xBD6A,\n\t31694 - 11904: 0xE6DA,\n\t31695 - 11904: 0x9F5D,\n\t31696 - 11904: 0x8E66,\n\t31700 - 11904: 0xEAC0,\n\t31701 - 11904: 0xEABB,\n\t31704 - 11904: 0xEAC5,\n\t31705 - 11904: 0xBF74,\n\t31706 - 11904: 0xEABD,\n\t31707 - 11904: 0xBF78,\n\t31708 - 11904: 0xEAC3,\n\t31709 - 11904: 0xEABA,\n\t31710 - 11904: 0xEAB7,\n\t31711 - 11904: 0xEAC6,\n\t31712 - 11904: 0xC151,\n\t31713 - 11904: 0xBF79,\n\t31714 - 11904: 0xEAC2,\n\t31715 - 11904: 0xEAB8,\n\t31716 - 11904: 0xBF77,\n\t31717 - 11904: 0xEABC,\n\t31718 - 11904: 0xBF7B,\n\t31719 - 11904: 0xEAB9,\n\t31720 - 11904: 0xEABE,\n\t31721 - 11904: 0xBF7A,\n\t31722 - 11904: 0xEAC1,\n\t31723 - 11904: 0xEAC4,\n\t31724 - 11904: 0x8CB2,\n\t31728 - 11904: 0xEDCB,\n\t31729 - 11904: 0xEDCC,\n\t31730 - 11904: 0xEDBC,\n\t31731 - 11904: 0xEDC3,\n\t31732 - 11904: 0xEDC1,\n\t31735 - 11904: 0xC14F,\n\t31736 - 11904: 0xEDC8,\n\t31737 - 11904: 0xEABF,\n\t31738 - 11904: 0x8E6E,\n\t31739 - 11904: 0xEDBF,\n\t31740 - 11904: 0x9F64,\n\t31741 - 11904: 0xEDC9,\n\t31742 - 11904: 0xC14E,\n\t31743 - 11904: 0xEDBE,\n\t31744 - 11904: 0xEDBD,\n\t31745 - 11904: 0xEDC7,\n\t31746 - 11904: 0xEDC4,\n\t31747 - 11904: 0xEDC6,\n\t31749 - 11904: 0xEDBA,\n\t31750 - 11904: 0xEDCA,\n\t31751 - 11904: 0xC14C,\n\t31753 - 11904: 0xEDC5,\n\t31754 - 11904: 0xEDCE,\n\t31755 - 11904: 0xEDC2,\n\t31756 - 11904: 0xC150,\n\t31757 - 11904: 0xC14D,\n\t31758 - 11904: 0xEDC0,\n\t31759 - 11904: 0xEDBB,\n\t31760 - 11904: 0xEDCD,\n\t31761 - 11904: 0xBF75,\n\t31762 - 11904: 0x9953,\n\t31765 - 11904: 0xFAB8,\n\t31769 - 11904: 0xF063,\n\t31771 - 11904: 0x9954,\n\t31772 - 11904: 0xF061,\n\t31773 - 11904: 0xF067,\n\t31774 - 11904: 0xC2B0,\n\t31775 - 11904: 0xF065,\n\t31776 - 11904: 0xF064,\n\t31777 - 11904: 0xC2B2,\n\t31778 - 11904: 0xF06A,\n\t31779 - 11904: 0xC2B1,\n\t31781 - 11904: 0xF06B,\n\t31782 - 11904: 0xF068,\n\t31783 - 11904: 0xC2AE,\n\t31784 - 11904: 0xF069,\n\t31785 - 11904: 0xF062,\n\t31786 - 11904: 0xC2AF,\n\t31787 - 11904: 0xC2AD,\n\t31788 - 11904: 0xF2AB,\n\t31789 - 11904: 0xF066,\n\t31792 - 11904: 0xF06C,\n\t31795 - 11904: 0xF2A8,\n\t31797 - 11904: 0x8E70,\n\t31799 - 11904: 0xC3B2,\n\t31800 - 11904: 0xC3B0,\n\t31801 - 11904: 0xF2AA,\n\t31803 - 11904: 0xF2AC,\n\t31804 - 11904: 0xF2A9,\n\t31805 - 11904: 0xC3B1,\n\t31806 - 11904: 0xC3AE,\n\t31807 - 11904: 0xC3AF,\n\t31808 - 11904: 0xC3B3,\n\t31810 - 11904: 0x9F61,\n\t31811 - 11904: 0xC478,\n\t31812 - 11904: 0x8E72,\n\t31813 - 11904: 0xF4AA,\n\t31815 - 11904: 0xF4A9,\n\t31816 - 11904: 0xF4A7,\n\t31817 - 11904: 0xF4A6,\n\t31818 - 11904: 0xF4A8,\n\t31820 - 11904: 0xC477,\n\t31821 - 11904: 0xC479,\n\t31824 - 11904: 0xC4F0,\n\t31825 - 11904: 0xA06B,\n\t31827 - 11904: 0xF5E5,\n\t31828 - 11904: 0xF5E4,\n\t31830 - 11904: 0x9F40,\n\t31831 - 11904: 0xF6FA,\n\t31833 - 11904: 0xF6FC,\n\t31834 - 11904: 0xF6FE,\n\t31835 - 11904: 0xF6FD,\n\t31836 - 11904: 0xF6FB,\n\t31837 - 11904: 0x94ED,\n\t31839 - 11904: 0xC5A3,\n\t31840 - 11904: 0xC5A2,\n\t31843 - 11904: 0xC5D3,\n\t31844 - 11904: 0xC5D2,\n\t31845 - 11904: 0xC5D4,\n\t31846 - 11904: 0xF7ED,\n\t31847 - 11904: 0xF7EC,\n\t31849 - 11904: 0xF8FB,\n\t31850 - 11904: 0xF8B8,\n\t31851 - 11904: 0xF8FC,\n\t31852 - 11904: 0xC658,\n\t31853 - 11904: 0x94EE,\n\t31854 - 11904: 0xC659,\n\t31855 - 11904: 0xF96D,\n\t31856 - 11904: 0x9FBD,\n\t31858 - 11904: 0xC67E,\n\t31859 - 11904: 0xA6CC,\n\t31860 - 11904: 0x8E7B,\n\t31861 - 11904: 0xCDA8,\n\t31864 - 11904: 0xD045,\n\t31865 - 11904: 0xD046,\n\t31866 - 11904: 0xD044,\n\t31867 - 11904: 0x9957,\n\t31868 - 11904: 0x94F7,\n\t31869 - 11904: 0xACF3,\n\t31870 - 11904: 0x9F5F,\n\t31871 - 11904: 0xD047,\n\t31872 - 11904: 0xD048,\n\t31873 - 11904: 0xD049,\n\t31875 - 11904: 0x8E73,\n\t31876 - 11904: 0xD349,\n\t31877 - 11904: 0xD34F,\n\t31878 - 11904: 0x9F62,\n\t31880 - 11904: 0xD34D,\n\t31881 - 11904: 0xAFBB,\n\t31882 - 11904: 0xD34B,\n\t31884 - 11904: 0xD34C,\n\t31885 - 11904: 0xD34E,\n\t31886 - 11904: 0x94F6,\n\t31889 - 11904: 0xD34A,\n\t31890 - 11904: 0xB2C9,\n\t31892 - 11904: 0xD6DE,\n\t31893 - 11904: 0xB2CB,\n\t31894 - 11904: 0xD6E0,\n\t31895 - 11904: 0xB2CA,\n\t31896 - 11904: 0xD6DF,\n\t31900 - 11904: 0x9958,\n\t31902 - 11904: 0xDAE8,\n\t31903 - 11904: 0xB5AF,\n\t31905 - 11904: 0xDAEA,\n\t31906 - 11904: 0xDAE7,\n\t31907 - 11904: 0xD6E1,\n\t31909 - 11904: 0xB5B0,\n\t31910 - 11904: 0x8E75,\n\t31911 - 11904: 0xF9DB,\n\t31912 - 11904: 0xDAE9,\n\t31916 - 11904: 0x9072,\n\t31918 - 11904: 0x94F8,\n\t31919 - 11904: 0xDF56,\n\t31921 - 11904: 0xB864,\n\t31922 - 11904: 0xDF54,\n\t31923 - 11904: 0xB865,\n\t31924 - 11904: 0xDF55,\n\t31925 - 11904: 0xB866,\n\t31928 - 11904: 0x995A,\n\t31929 - 11904: 0xBAE9,\n\t31930 - 11904: 0xE361,\n\t31931 - 11904: 0xE35E,\n\t31932 - 11904: 0xE360,\n\t31933 - 11904: 0xBAEA,\n\t31934 - 11904: 0xBAEB,\n\t31935 - 11904: 0xE35F,\n\t31938 - 11904: 0xA0B0,\n\t31939 - 11904: 0x8CB3,\n\t31941 - 11904: 0xE6DF,\n\t31943 - 11904: 0x8E79,\n\t31944 - 11904: 0xE6E0,\n\t31945 - 11904: 0x8E78,\n\t31946 - 11904: 0xBD6B,\n\t31947 - 11904: 0xE6E2,\n\t31948 - 11904: 0xE6E1,\n\t31949 - 11904: 0x94F3,\n\t31950 - 11904: 0xA261,\n\t31952 - 11904: 0xEACA,\n\t31953 - 11904: 0xEACB,\n\t31954 - 11904: 0xEAC7,\n\t31955 - 11904: 0x98AF,\n\t31956 - 11904: 0xEAC8,\n\t31957 - 11904: 0xBF7C,\n\t31958 - 11904: 0xBF7D,\n\t31959 - 11904: 0xEAC9,\n\t31961 - 11904: 0xC157,\n\t31962 - 11904: 0xA0B2,\n\t31964 - 11904: 0xC153,\n\t31965 - 11904: 0xC158,\n\t31966 - 11904: 0xC154,\n\t31967 - 11904: 0xC156,\n\t31968 - 11904: 0xC152,\n\t31970 - 11904: 0xC155,\n\t31974 - 11904: 0x8E7A,\n\t31975 - 11904: 0xC2B3,\n\t31976 - 11904: 0xEDCF,\n\t31978 - 11904: 0xF2AE,\n\t31980 - 11904: 0xF2AD,\n\t31981 - 11904: 0x995C,\n\t31982 - 11904: 0xF4AB,\n\t31983 - 11904: 0xC47A,\n\t31984 - 11904: 0xC47B,\n\t31985 - 11904: 0xF741,\n\t31986 - 11904: 0xF5E6,\n\t31987 - 11904: 0x8E7C,\n\t31988 - 11904: 0xF740,\n\t31989 - 11904: 0x8E7D,\n\t31990 - 11904: 0xF8FD,\n\t31991 - 11904: 0xF9A4,\n\t31992 - 11904: 0xA6CD,\n\t31993 - 11904: 0x8BD9,\n\t31995 - 11904: 0xA874,\n\t31996 - 11904: 0x89A2,\n\t31997 - 11904: 0xCDA9,\n\t31998 - 11904: 0xAAC8,\n\t32000 - 11904: 0xACF6,\n\t32001 - 11904: 0xD04C,\n\t32002 - 11904: 0xACF4,\n\t32003 - 11904: 0xD04A,\n\t32004 - 11904: 0xACF9,\n\t32005 - 11904: 0xACF5,\n\t32006 - 11904: 0xACFA,\n\t32007 - 11904: 0xACF8,\n\t32008 - 11904: 0xD04B,\n\t32009 - 11904: 0xACF7,\n\t32010 - 11904: 0xAFBF,\n\t32011 - 11904: 0xAFBE,\n\t32012 - 11904: 0xD35A,\n\t32013 - 11904: 0xAFC7,\n\t32014 - 11904: 0xD353,\n\t32015 - 11904: 0xD359,\n\t32016 - 11904: 0xAFC3,\n\t32017 - 11904: 0xD352,\n\t32018 - 11904: 0xD358,\n\t32019 - 11904: 0xD356,\n\t32020 - 11904: 0xAFC2,\n\t32021 - 11904: 0xAFC4,\n\t32022 - 11904: 0xD355,\n\t32023 - 11904: 0xAFBD,\n\t32024 - 11904: 0xD354,\n\t32025 - 11904: 0xAFC8,\n\t32026 - 11904: 0xAFC5,\n\t32027 - 11904: 0xAFC9,\n\t32028 - 11904: 0xAFC6,\n\t32029 - 11904: 0xD351,\n\t32030 - 11904: 0xD350,\n\t32031 - 11904: 0xD357,\n\t32032 - 11904: 0xAFC0,\n\t32033 - 11904: 0xAFBC,\n\t32034 - 11904: 0xAFC1,\n\t32037 - 11904: 0x9ED7,\n\t32040 - 11904: 0xD6F0,\n\t32041 - 11904: 0xD6E9,\n\t32043 - 11904: 0xB5B5,\n\t32044 - 11904: 0xD6E8,\n\t32046 - 11904: 0xB2CF,\n\t32047 - 11904: 0xB2D6,\n\t32048 - 11904: 0xB2D3,\n\t32049 - 11904: 0xB2D9,\n\t32050 - 11904: 0xB2D8,\n\t32051 - 11904: 0xB2D4,\n\t32053 - 11904: 0xD6E2,\n\t32054 - 11904: 0xD6E5,\n\t32056 - 11904: 0xD6E4,\n\t32057 - 11904: 0xB2D0,\n\t32058 - 11904: 0xD6E6,\n\t32059 - 11904: 0xD6EF,\n\t32060 - 11904: 0xB2D1,\n\t32061 - 11904: 0xD6E3,\n\t32062 - 11904: 0xD6EC,\n\t32063 - 11904: 0xD6ED,\n\t32064 - 11904: 0xB2D2,\n\t32065 - 11904: 0xD6EA,\n\t32066 - 11904: 0xB2D7,\n\t32067 - 11904: 0xB2CD,\n\t32068 - 11904: 0xB2D5,\n\t32069 - 11904: 0xD6E7,\n\t32070 - 11904: 0xB2CC,\n\t32071 - 11904: 0xD6EB,\n\t32074 - 11904: 0xD6EE,\n\t32077 - 11904: 0xA0B6,\n\t32078 - 11904: 0xDAFB,\n\t32079 - 11904: 0xDAF2,\n\t32080 - 11904: 0xB5B2,\n\t32081 - 11904: 0xDAF9,\n\t32082 - 11904: 0xDAF6,\n\t32083 - 11904: 0xDAEE,\n\t32084 - 11904: 0xDAF7,\n\t32085 - 11904: 0xB5B4,\n\t32086 - 11904: 0xDAEF,\n\t32088 - 11904: 0xDAEB,\n\t32090 - 11904: 0x9E42,\n\t32091 - 11904: 0xB86C,\n\t32092 - 11904: 0xDAF4,\n\t32093 - 11904: 0x8EA4,\n\t32094 - 11904: 0xB5B1,\n\t32095 - 11904: 0xDAFA,\n\t32097 - 11904: 0xB5B8,\n\t32098 - 11904: 0xB5BA,\n\t32099 - 11904: 0xDAED,\n\t32102 - 11904: 0xB5B9,\n\t32103 - 11904: 0xDAF0,\n\t32104 - 11904: 0xB5B3,\n\t32105 - 11904: 0xDAF8,\n\t32106 - 11904: 0xDAF1,\n\t32107 - 11904: 0xDAF5,\n\t32109 - 11904: 0xDAF3,\n\t32110 - 11904: 0xB5B6,\n\t32111 - 11904: 0xDAEC,\n\t32112 - 11904: 0xB5BB,\n\t32113 - 11904: 0xB2CE,\n\t32114 - 11904: 0xB5B7,\n\t32115 - 11904: 0xB5BC,\n\t32121 - 11904: 0xB868,\n\t32122 - 11904: 0xDF5D,\n\t32123 - 11904: 0xDF5F,\n\t32124 - 11904: 0xDF61,\n\t32125 - 11904: 0xDF65,\n\t32127 - 11904: 0xDF5B,\n\t32128 - 11904: 0xDF59,\n\t32129 - 11904: 0xB86A,\n\t32131 - 11904: 0xDF60,\n\t32132 - 11904: 0xDF64,\n\t32133 - 11904: 0xDF5C,\n\t32134 - 11904: 0xDF58,\n\t32136 - 11904: 0xDF57,\n\t32137 - 11904: 0x8EA7,\n\t32139 - 11904: 0x8C76,\n\t32140 - 11904: 0xDF62,\n\t32141 - 11904: 0xDF5A,\n\t32142 - 11904: 0xDF5E,\n\t32143 - 11904: 0xB86B,\n\t32145 - 11904: 0xB869,\n\t32146 - 11904: 0xDF66,\n\t32147 - 11904: 0xB867,\n\t32148 - 11904: 0xDF63,\n\t32149 - 11904: 0x8767,\n\t32150 - 11904: 0xE372,\n\t32151 - 11904: 0x9542,\n\t32156 - 11904: 0xBAEE,\n\t32157 - 11904: 0xE36A,\n\t32158 - 11904: 0xBD78,\n\t32159 - 11904: 0xE374,\n\t32160 - 11904: 0xBAF1,\n\t32161 - 11904: 0xE378,\n\t32162 - 11904: 0xBAF7,\n\t32163 - 11904: 0xE365,\n\t32164 - 11904: 0x987D,\n\t32166 - 11904: 0xE375,\n\t32167 - 11904: 0xE362,\n\t32168 - 11904: 0x9755,\n\t32169 - 11904: 0xE377,\n\t32170 - 11904: 0xE366,\n\t32171 - 11904: 0x8EA8,\n\t32172 - 11904: 0xBAFE,\n\t32173 - 11904: 0xBAFB,\n\t32174 - 11904: 0xE376,\n\t32175 - 11904: 0xE370,\n\t32176 - 11904: 0xBAED,\n\t32177 - 11904: 0xBAF5,\n\t32178 - 11904: 0xBAF4,\n\t32179 - 11904: 0x8EAA,\n\t32180 - 11904: 0xBAF3,\n\t32181 - 11904: 0xBAF9,\n\t32183 - 11904: 0xE363,\n\t32184 - 11904: 0xBAFA,\n\t32185 - 11904: 0xE371,\n\t32186 - 11904: 0xBAF6,\n\t32187 - 11904: 0xBAEC,\n\t32188 - 11904: 0xE373,\n\t32189 - 11904: 0xBAEF,\n\t32190 - 11904: 0xBAF0,\n\t32191 - 11904: 0xBAF8,\n\t32192 - 11904: 0xE368,\n\t32193 - 11904: 0xE367,\n\t32194 - 11904: 0xE364,\n\t32196 - 11904: 0xE36C,\n\t32197 - 11904: 0xE369,\n\t32198 - 11904: 0xE36D,\n\t32199 - 11904: 0xBAFD,\n\t32201 - 11904: 0xE379,\n\t32202 - 11904: 0xBAF2,\n\t32203 - 11904: 0xE36E,\n\t32204 - 11904: 0xE36F,\n\t32205 - 11904: 0x89A3,\n\t32206 - 11904: 0xE36B,\n\t32207 - 11904: 0x9960,\n\t32208 - 11904: 0x9962,\n\t32210 - 11904: 0xBAFC,\n\t32211 - 11904: 0x94FC,\n\t32212 - 11904: 0x9961,\n\t32215 - 11904: 0xE6E7,\n\t32216 - 11904: 0xBD70,\n\t32217 - 11904: 0xBD79,\n\t32218 - 11904: 0xBD75,\n\t32219 - 11904: 0xE6E4,\n\t32220 - 11904: 0x94FA,\n\t32221 - 11904: 0xBD72,\n\t32222 - 11904: 0xBD76,\n\t32223 - 11904: 0xE6F0,\n\t32224 - 11904: 0xBD6C,\n\t32225 - 11904: 0xE6E8,\n\t32227 - 11904: 0xBD74,\n\t32228 - 11904: 0x8EAE,\n\t32229 - 11904: 0x8EB2,\n\t32230 - 11904: 0xE6EB,\n\t32231 - 11904: 0xE6E6,\n\t32232 - 11904: 0xBD73,\n\t32233 - 11904: 0xBD77,\n\t32234 - 11904: 0xE6E5,\n\t32236 - 11904: 0xBD71,\n\t32238 - 11904: 0xE6EF,\n\t32239 - 11904: 0xBD6E,\n\t32240 - 11904: 0xE6EE,\n\t32241 - 11904: 0xE6ED,\n\t32242 - 11904: 0xBD7A,\n\t32243 - 11904: 0xE572,\n\t32244 - 11904: 0xBD6D,\n\t32245 - 11904: 0x8EB0,\n\t32246 - 11904: 0xE6EC,\n\t32247 - 11904: 0xE6E3,\n\t32249 - 11904: 0xBD7B,\n\t32250 - 11904: 0xE6EA,\n\t32251 - 11904: 0xBD6F,\n\t32253 - 11904: 0x9963,\n\t32254 - 11904: 0x97AA,\n\t32259 - 11904: 0xE6E9,\n\t32263 - 11904: 0x94FB,\n\t32264 - 11904: 0xBFA2,\n\t32265 - 11904: 0xBFA7,\n\t32266 - 11904: 0xBF7E,\n\t32267 - 11904: 0xEAD8,\n\t32268 - 11904: 0xEACF,\n\t32269 - 11904: 0xEADB,\n\t32270 - 11904: 0xEAD3,\n\t32271 - 11904: 0xEAD9,\n\t32272 - 11904: 0xBFA8,\n\t32273 - 11904: 0xBFA1,\n\t32274 - 11904: 0xEACC,\n\t32275 - 11904: 0xEAD2,\n\t32276 - 11904: 0xEADC,\n\t32277 - 11904: 0xEAD5,\n\t32278 - 11904: 0xEADA,\n\t32279 - 11904: 0xEACE,\n\t32282 - 11904: 0xEAD6,\n\t32283 - 11904: 0xBFA3,\n\t32284 - 11904: 0xEAD4,\n\t32285 - 11904: 0xBFA6,\n\t32286 - 11904: 0xBFA5,\n\t32287 - 11904: 0xEAD0,\n\t32288 - 11904: 0xEAD1,\n\t32289 - 11904: 0xEACD,\n\t32290 - 11904: 0xEAD7,\n\t32291 - 11904: 0xBFA4,\n\t32292 - 11904: 0xEADE,\n\t32293 - 11904: 0xEADD,\n\t32295 - 11904: 0x8EBB,\n\t32297 - 11904: 0xEDDA,\n\t32298 - 11904: 0xEDD6,\n\t32299 - 11904: 0xC15F,\n\t32301 - 11904: 0xEDD0,\n\t32302 - 11904: 0xC159,\n\t32303 - 11904: 0xC169,\n\t32304 - 11904: 0xEDDC,\n\t32305 - 11904: 0xC161,\n\t32306 - 11904: 0xC15D,\n\t32307 - 11904: 0xEDD3,\n\t32308 - 11904: 0xC164,\n\t32309 - 11904: 0xC167,\n\t32310 - 11904: 0xEDDE,\n\t32311 - 11904: 0xC15C,\n\t32312 - 11904: 0xEDD5,\n\t32313 - 11904: 0xC165,\n\t32314 - 11904: 0xEDE0,\n\t32315 - 11904: 0xEDDD,\n\t32316 - 11904: 0xEDD1,\n\t32317 - 11904: 0xC160,\n\t32318 - 11904: 0xC15A,\n\t32319 - 11904: 0xC168,\n\t32320 - 11904: 0xEDD8,\n\t32321 - 11904: 0xC163,\n\t32322 - 11904: 0xEDD2,\n\t32323 - 11904: 0xC15E,\n\t32324 - 11904: 0xEDDF,\n\t32325 - 11904: 0xC162,\n\t32326 - 11904: 0xC15B,\n\t32327 - 11904: 0xEDD9,\n\t32328 - 11904: 0xC166,\n\t32329 - 11904: 0xEDD7,\n\t32332 - 11904: 0xEDDB,\n\t32336 - 11904: 0xF06E,\n\t32337 - 11904: 0xF074,\n\t32338 - 11904: 0xC2B9,\n\t32339 - 11904: 0xF077,\n\t32340 - 11904: 0xC2B4,\n\t32341 - 11904: 0xC2B5,\n\t32342 - 11904: 0xF06F,\n\t32343 - 11904: 0xF076,\n\t32344 - 11904: 0xF071,\n\t32345 - 11904: 0xC2BA,\n\t32346 - 11904: 0xC2B7,\n\t32347 - 11904: 0x8CDC,\n\t32348 - 11904: 0xF06D,\n\t32350 - 11904: 0xC2B6,\n\t32351 - 11904: 0xF073,\n\t32352 - 11904: 0xF075,\n\t32353 - 11904: 0xC2B8,\n\t32354 - 11904: 0xF072,\n\t32355 - 11904: 0xF070,\n\t32357 - 11904: 0x9876,\n\t32359 - 11904: 0x8EA1,\n\t32360 - 11904: 0xF2B8,\n\t32361 - 11904: 0xC3B7,\n\t32362 - 11904: 0xC3B8,\n\t32363 - 11904: 0xC3B4,\n\t32364 - 11904: 0x8CB4,\n\t32365 - 11904: 0xC3B5,\n\t32366 - 11904: 0x8EB7,\n\t32367 - 11904: 0xF2B4,\n\t32368 - 11904: 0xF2B2,\n\t32370 - 11904: 0xF2B6,\n\t32371 - 11904: 0xC3BA,\n\t32372 - 11904: 0xF2B7,\n\t32373 - 11904: 0xF2B0,\n\t32374 - 11904: 0xF2AF,\n\t32375 - 11904: 0xF2B3,\n\t32376 - 11904: 0xF2B1,\n\t32377 - 11904: 0xC3B6,\n\t32378 - 11904: 0xF2B5,\n\t32379 - 11904: 0xF4AC,\n\t32380 - 11904: 0xC47E,\n\t32381 - 11904: 0xC47D,\n\t32382 - 11904: 0xF4AD,\n\t32383 - 11904: 0x9DA6,\n\t32384 - 11904: 0xF4AF,\n\t32385 - 11904: 0xF4AE,\n\t32386 - 11904: 0xC4A1,\n\t32390 - 11904: 0xF5EB,\n\t32391 - 11904: 0xF5E8,\n\t32392 - 11904: 0xF5E9,\n\t32394 - 11904: 0xF5E7,\n\t32395 - 11904: 0xF5EA,\n\t32396 - 11904: 0xC4F2,\n\t32397 - 11904: 0xF5EC,\n\t32398 - 11904: 0x9EB0,\n\t32399 - 11904: 0xC4F1,\n\t32401 - 11904: 0xF742,\n\t32402 - 11904: 0x8EB8,\n\t32403 - 11904: 0xC5D5,\n\t32404 - 11904: 0xC5D7,\n\t32405 - 11904: 0xF7EE,\n\t32406 - 11904: 0xC5D6,\n\t32407 - 11904: 0xF8B9,\n\t32408 - 11904: 0xF940,\n\t32409 - 11904: 0xF942,\n\t32410 - 11904: 0xF8FE,\n\t32411 - 11904: 0xF941,\n\t32412 - 11904: 0xC66C,\n\t32415 - 11904: 0x9D70,\n\t32420 - 11904: 0x896E,\n\t32428 - 11904: 0x896F,\n\t32442 - 11904: 0x8970,\n\t32455 - 11904: 0x8971,\n\t32463 - 11904: 0x8972,\n\t32479 - 11904: 0x8973,\n\t32518 - 11904: 0x8974,\n\t32566 - 11904: 0xA6CE,\n\t32567 - 11904: 0x8975,\n\t32568 - 11904: 0xACFB,\n\t32569 - 11904: 0xD26F,\n\t32570 - 11904: 0xAFCA,\n\t32573 - 11904: 0xB2DA,\n\t32574 - 11904: 0xDAFC,\n\t32575 - 11904: 0xDAFD,\n\t32576 - 11904: 0x8EBC,\n\t32577 - 11904: 0x8EBD,\n\t32579 - 11904: 0xEADF,\n\t32580 - 11904: 0xC16A,\n\t32581 - 11904: 0xEDE1,\n\t32583 - 11904: 0x8EBE,\n\t32584 - 11904: 0xC2BB,\n\t32585 - 11904: 0x9DD1,\n\t32586 - 11904: 0xF2BA,\n\t32587 - 11904: 0xF2B9,\n\t32588 - 11904: 0xC4A2,\n\t32589 - 11904: 0xF5ED,\n\t32590 - 11904: 0x94FD,\n\t32591 - 11904: 0xF743,\n\t32592 - 11904: 0xC5F8,\n\t32593 - 11904: 0xCA49,\n\t32594 - 11904: 0x8BD7,\n\t32595 - 11904: 0x8BDA,\n\t32596 - 11904: 0xAAC9,\n\t32597 - 11904: 0xA875,\n\t32600 - 11904: 0xD04D,\n\t32603 - 11904: 0xD360,\n\t32604 - 11904: 0xD35B,\n\t32605 - 11904: 0xD35F,\n\t32606 - 11904: 0xD35D,\n\t32607 - 11904: 0xAFCB,\n\t32608 - 11904: 0xD35E,\n\t32609 - 11904: 0xD35C,\n\t32611 - 11904: 0xD6F1,\n\t32613 - 11904: 0xDAFE,\n\t32614 - 11904: 0xDB40,\n\t32615 - 11904: 0xDF69,\n\t32616 - 11904: 0xDF6A,\n\t32617 - 11904: 0xB86E,\n\t32618 - 11904: 0xB86F,\n\t32619 - 11904: 0xDF68,\n\t32620 - 11904: 0xDF6B,\n\t32621 - 11904: 0xDF67,\n\t32622 - 11904: 0xB86D,\n\t32624 - 11904: 0xBB40,\n\t32625 - 11904: 0xA0E2,\n\t32626 - 11904: 0xB870,\n\t32627 - 11904: 0xE37A,\n\t32629 - 11904: 0xBD7C,\n\t32630 - 11904: 0xE6F1,\n\t32631 - 11904: 0xBD7D,\n\t32632 - 11904: 0x9FE9,\n\t32633 - 11904: 0xBFA9,\n\t32634 - 11904: 0xEAE2,\n\t32635 - 11904: 0xEAE0,\n\t32636 - 11904: 0xEAE1,\n\t32637 - 11904: 0xEDE4,\n\t32638 - 11904: 0xEDE3,\n\t32639 - 11904: 0xEDE2,\n\t32643 - 11904: 0xF2BB,\n\t32645 - 11904: 0xC3B9,\n\t32646 - 11904: 0xF2BC,\n\t32647 - 11904: 0xF744,\n\t32648 - 11904: 0xC5F9,\n\t32649 - 11904: 0xF8BA,\n\t32650 - 11904: 0xA6CF,\n\t32651 - 11904: 0xAACB,\n\t32652 - 11904: 0xAACA,\n\t32653 - 11904: 0xD04F,\n\t32654 - 11904: 0xACFC,\n\t32655 - 11904: 0xFDA8,\n\t32657 - 11904: 0xD04E,\n\t32658 - 11904: 0xD362,\n\t32659 - 11904: 0x8AE7,\n\t32660 - 11904: 0xAFCC,\n\t32661 - 11904: 0xD6F2,\n\t32662 - 11904: 0xD361,\n\t32663 - 11904: 0x8EC2,\n\t32666 - 11904: 0xB2DC,\n\t32667 - 11904: 0xD6F5,\n\t32668 - 11904: 0xD6F3,\n\t32669 - 11904: 0xD6F4,\n\t32670 - 11904: 0xB2DB,\n\t32672 - 11904: 0xDB42,\n\t32673 - 11904: 0xDB43,\n\t32674 - 11904: 0xDB41,\n\t32675 - 11904: 0x8EC4,\n\t32676 - 11904: 0xB873,\n\t32677 - 11904: 0xDF6D,\n\t32678 - 11904: 0xDF6C,\n\t32679 - 11904: 0xDF6E,\n\t32680 - 11904: 0xB872,\n\t32681 - 11904: 0xB871,\n\t32684 - 11904: 0xE6F2,\n\t32685 - 11904: 0xE6F4,\n\t32686 - 11904: 0x9964,\n\t32687 - 11904: 0xBD7E,\n\t32688 - 11904: 0xE6F3,\n\t32689 - 11904: 0xEAE3,\n\t32690 - 11904: 0xBFAA,\n\t32691 - 11904: 0xF079,\n\t32692 - 11904: 0x9965,\n\t32693 - 11904: 0xF078,\n\t32694 - 11904: 0xC3BB,\n\t32695 - 11904: 0xF2BD,\n\t32696 - 11904: 0xC3BD,\n\t32697 - 11904: 0xC3BC,\n\t32698 - 11904: 0xF4B0,\n\t32699 - 11904: 0xF5EE,\n\t32700 - 11904: 0xC4F3,\n\t32701 - 11904: 0xA6D0,\n\t32702 - 11904: 0xD050,\n\t32703 - 11904: 0xACFD,\n\t32704 - 11904: 0xD365,\n\t32705 - 11904: 0xAFCE,\n\t32706 - 11904: 0xD364,\n\t32707 - 11904: 0xD363,\n\t32709 - 11904: 0xAFCD,\n\t32711 - 11904: 0xD6FB,\n\t32713 - 11904: 0xD6FD,\n\t32714 - 11904: 0xD6F6,\n\t32715 - 11904: 0xD6F7,\n\t32716 - 11904: 0xB2DD,\n\t32717 - 11904: 0xD6F8,\n\t32718 - 11904: 0xB2DE,\n\t32719 - 11904: 0xD6FC,\n\t32720 - 11904: 0xD6F9,\n\t32721 - 11904: 0xD6FA,\n\t32722 - 11904: 0xB2DF,\n\t32724 - 11904: 0xB5BE,\n\t32725 - 11904: 0xB5BF,\n\t32727 - 11904: 0xDB44,\n\t32731 - 11904: 0xDF6F,\n\t32732 - 11904: 0xDF70,\n\t32733 - 11904: 0x954E,\n\t32734 - 11904: 0xE37E,\n\t32735 - 11904: 0xBB43,\n\t32736 - 11904: 0xBB41,\n\t32737 - 11904: 0xBB42,\n\t32738 - 11904: 0xE37B,\n\t32739 - 11904: 0xE37C,\n\t32741 - 11904: 0xE37D,\n\t32742 - 11904: 0xE6F9,\n\t32743 - 11904: 0x98B3,\n\t32744 - 11904: 0xE6FA,\n\t32745 - 11904: 0xBDA1,\n\t32746 - 11904: 0xE6F7,\n\t32747 - 11904: 0xE6F6,\n\t32748 - 11904: 0xE6F8,\n\t32749 - 11904: 0xE6F5,\n\t32750 - 11904: 0xBFAD,\n\t32751 - 11904: 0xEAE4,\n\t32752 - 11904: 0xBFAB,\n\t32753 - 11904: 0xBFAC,\n\t32754 - 11904: 0xEDE6,\n\t32755 - 11904: 0xC16B,\n\t32756 - 11904: 0xEDE5,\n\t32757 - 11904: 0xEFA8,\n\t32759 - 11904: 0xF07A,\n\t32760 - 11904: 0xF07B,\n\t32761 - 11904: 0xC2BC,\n\t32762 - 11904: 0x8ECB,\n\t32763 - 11904: 0xC2BD,\n\t32764 - 11904: 0xC16C,\n\t32765 - 11904: 0xF2BE,\n\t32766 - 11904: 0xF2BF,\n\t32767 - 11904: 0xF4B1,\n\t32768 - 11904: 0xC4A3,\n\t32769 - 11904: 0xA6D1,\n\t32770 - 11904: 0x8BDF,\n\t32771 - 11904: 0xA6D2,\n\t32772 - 11904: 0xACFE,\n\t32773 - 11904: 0xAACC,\n\t32774 - 11904: 0xAFCF,\n\t32775 - 11904: 0xD051,\n\t32776 - 11904: 0x8ECE,\n\t32779 - 11904: 0xB5C0,\n\t32780 - 11904: 0xA6D3,\n\t32781 - 11904: 0xAD41,\n\t32782 - 11904: 0xD052,\n\t32783 - 11904: 0xD053,\n\t32784 - 11904: 0xAD40,\n\t32785 - 11904: 0xAD42,\n\t32786 - 11904: 0xA6D4,\n\t32788 - 11904: 0xD054,\n\t32789 - 11904: 0xAFD1,\n\t32790 - 11904: 0xD366,\n\t32791 - 11904: 0xAFD3,\n\t32792 - 11904: 0xAFD0,\n\t32793 - 11904: 0xAFD2,\n\t32795 - 11904: 0xD741,\n\t32796 - 11904: 0xB2E0,\n\t32797 - 11904: 0x8ECF,\n\t32798 - 11904: 0xD740,\n\t32799 - 11904: 0xD6FE,\n\t32800 - 11904: 0x9968,\n\t32801 - 11904: 0xDF71,\n\t32804 - 11904: 0xE3A1,\n\t32805 - 11904: 0x9969,\n\t32806 - 11904: 0xBDA2,\n\t32808 - 11904: 0xBFAE,\n\t32809 - 11904: 0xEAE6,\n\t32810 - 11904: 0xEAE5,\n\t32812 - 11904: 0xEDE7,\n\t32814 - 11904: 0x996B,\n\t32815 - 11904: 0x8ED1,\n\t32816 - 11904: 0xF5EF,\n\t32817 - 11904: 0x996C,\n\t32819 - 11904: 0xA6D5,\n\t32820 - 11904: 0xCB73,\n\t32821 - 11904: 0xCDAA,\n\t32822 - 11904: 0xAD43,\n\t32823 - 11904: 0xD055,\n\t32825 - 11904: 0xD368,\n\t32827 - 11904: 0x8ED4,\n\t32828 - 11904: 0x8ED5,\n\t32829 - 11904: 0xAFD4,\n\t32830 - 11904: 0xD367,\n\t32831 - 11904: 0xAFD5,\n\t32835 - 11904: 0xD743,\n\t32838 - 11904: 0xB2E2,\n\t32839 - 11904: 0xD742,\n\t32840 - 11904: 0xD744,\n\t32842 - 11904: 0xB2E1,\n\t32847 - 11904: 0xDB46,\n\t32848 - 11904: 0xDB47,\n\t32849 - 11904: 0xDB45,\n\t32850 - 11904: 0xB5C1,\n\t32852 - 11904: 0x996D,\n\t32854 - 11904: 0xB874,\n\t32856 - 11904: 0xB875,\n\t32858 - 11904: 0xBB45,\n\t32859 - 11904: 0xA0BE,\n\t32860 - 11904: 0xE3A3,\n\t32861 - 11904: 0xE3A2,\n\t32862 - 11904: 0xBB44,\n\t32865 - 11904: 0x8ED6,\n\t32866 - 11904: 0xA0BC,\n\t32867 - 11904: 0xA0B5,\n\t32868 - 11904: 0xE6FB,\n\t32870 - 11904: 0xA0B4,\n\t32871 - 11904: 0xE6FC,\n\t32876 - 11904: 0xEAE7,\n\t32879 - 11904: 0xC170,\n\t32880 - 11904: 0xC16F,\n\t32881 - 11904: 0xC16D,\n\t32882 - 11904: 0xC16E,\n\t32883 - 11904: 0xC171,\n\t32885 - 11904: 0xF07C,\n\t32886 - 11904: 0xC2BF,\n\t32887 - 11904: 0xC2BE,\n\t32888 - 11904: 0xF2C0,\n\t32889 - 11904: 0xF4B2,\n\t32893 - 11904: 0xC5A5,\n\t32894 - 11904: 0xC5A4,\n\t32895 - 11904: 0xA6D6,\n\t32896 - 11904: 0x8BE0,\n\t32898 - 11904: 0xD1FB,\n\t32900 - 11904: 0xB877,\n\t32901 - 11904: 0xB5C2,\n\t32902 - 11904: 0xB876,\n\t32903 - 11904: 0xBB46,\n\t32905 - 11904: 0xA6D7,\n\t32906 - 11904: 0xC9A9,\n\t32907 - 11904: 0xA6D8,\n\t32908 - 11904: 0xA6D9,\n\t32911 - 11904: 0xCDAB,\n\t32912 - 11904: 0xCB76,\n\t32914 - 11904: 0xCB77,\n\t32915 - 11904: 0xA877,\n\t32917 - 11904: 0xCB74,\n\t32918 - 11904: 0xA876,\n\t32920 - 11904: 0xA879,\n\t32921 - 11904: 0xCB75,\n\t32922 - 11904: 0xA87B,\n\t32923 - 11904: 0xA87A,\n\t32924 - 11904: 0xCB78,\n\t32925 - 11904: 0xA878,\n\t32927 - 11904: 0x89B5,\n\t32929 - 11904: 0xAAD1,\n\t32930 - 11904: 0xAACF,\n\t32931 - 11904: 0xCDAD,\n\t32933 - 11904: 0xAACE,\n\t32935 - 11904: 0x8EDD,\n\t32937 - 11904: 0xAAD3,\n\t32938 - 11904: 0xAAD5,\n\t32939 - 11904: 0xAAD2,\n\t32941 - 11904: 0xCDB0,\n\t32942 - 11904: 0xCDAC,\n\t32943 - 11904: 0xAAD6,\n\t32945 - 11904: 0xAAD0,\n\t32946 - 11904: 0xA87C,\n\t32948 - 11904: 0xAAD4,\n\t32949 - 11904: 0xCDAF,\n\t32950 - 11904: 0x9E5D,\n\t32951 - 11904: 0x9971,\n\t32952 - 11904: 0xCDAE,\n\t32954 - 11904: 0xAACD,\n\t32956 - 11904: 0x89AE,\n\t32957 - 11904: 0x9DE8,\n\t32962 - 11904: 0xD05B,\n\t32963 - 11904: 0xAD47,\n\t32964 - 11904: 0xAD48,\n\t32965 - 11904: 0xD05D,\n\t32966 - 11904: 0x9565,\n\t32967 - 11904: 0xD057,\n\t32968 - 11904: 0xD05A,\n\t32969 - 11904: 0xD063,\n\t32970 - 11904: 0xD061,\n\t32972 - 11904: 0xAD49,\n\t32973 - 11904: 0xD067,\n\t32974 - 11904: 0xAD4C,\n\t32975 - 11904: 0xD064,\n\t32976 - 11904: 0xD05C,\n\t32977 - 11904: 0xD059,\n\t32980 - 11904: 0xDB49,\n\t32981 - 11904: 0xD062,\n\t32982 - 11904: 0xAD44,\n\t32983 - 11904: 0xD065,\n\t32984 - 11904: 0xD056,\n\t32985 - 11904: 0xD05F,\n\t32986 - 11904: 0xAD46,\n\t32987 - 11904: 0xAD4B,\n\t32988 - 11904: 0xD060,\n\t32989 - 11904: 0xAD4F,\n\t32990 - 11904: 0xAD4D,\n\t32992 - 11904: 0xD058,\n\t32993 - 11904: 0xAD4A,\n\t32995 - 11904: 0xD05E,\n\t32996 - 11904: 0xAD4E,\n\t32997 - 11904: 0xAD45,\n\t32998 - 11904: 0xD066,\n\t33001 - 11904: 0x9972,\n\t33004 - 11904: 0x8B5C,\n\t33005 - 11904: 0xAFDA,\n\t33007 - 11904: 0xAFE3,\n\t33008 - 11904: 0xAFD8,\n\t33009 - 11904: 0xAFD6,\n\t33010 - 11904: 0xD36A,\n\t33011 - 11904: 0xAFDE,\n\t33012 - 11904: 0xAFDB,\n\t33013 - 11904: 0xD36C,\n\t33014 - 11904: 0x89B1,\n\t33016 - 11904: 0xAFDD,\n\t33017 - 11904: 0xD36B,\n\t33018 - 11904: 0xD369,\n\t33019 - 11904: 0xD36E,\n\t33020 - 11904: 0xAFE2,\n\t33021 - 11904: 0xAFE0,\n\t33022 - 11904: 0xDB48,\n\t33024 - 11904: 0xD36F,\n\t33025 - 11904: 0xD36D,\n\t33026 - 11904: 0xAFD7,\n\t33027 - 11904: 0xA0C0,\n\t33029 - 11904: 0xAFD9,\n\t33030 - 11904: 0xAFDC,\n\t33031 - 11904: 0x8EDF,\n\t33032 - 11904: 0xAFDF,\n\t33033 - 11904: 0x9566,\n\t33034 - 11904: 0xAFE1,\n\t33036 - 11904: 0x9974,\n\t33038 - 11904: 0x9976,\n\t33042 - 11904: 0x9977,\n\t33044 - 11904: 0x9979,\n\t33045 - 11904: 0xD74E,\n\t33046 - 11904: 0xB2E4,\n\t33047 - 11904: 0x9DDA,\n\t33048 - 11904: 0xD745,\n\t33049 - 11904: 0xD747,\n\t33050 - 11904: 0x8EE0,\n\t33051 - 11904: 0xD748,\n\t33053 - 11904: 0xD750,\n\t33054 - 11904: 0xD74C,\n\t33055 - 11904: 0xD74A,\n\t33057 - 11904: 0xD74D,\n\t33058 - 11904: 0xD751,\n\t33059 - 11904: 0xB2E5,\n\t33060 - 11904: 0xB2E9,\n\t33061 - 11904: 0xD746,\n\t33063 - 11904: 0xD74F,\n\t33065 - 11904: 0xB2E7,\n\t33066 - 11904: 0x935C,\n\t33067 - 11904: 0xB2E6,\n\t33068 - 11904: 0xD74B,\n\t33069 - 11904: 0xD749,\n\t33071 - 11904: 0xB2E3,\n\t33072 - 11904: 0xB2E8,\n\t33074 - 11904: 0x9DE6,\n\t33076 - 11904: 0x8B5F,\n\t33079 - 11904: 0x9563,\n\t33081 - 11904: 0xB5C8,\n\t33082 - 11904: 0xDB51,\n\t33085 - 11904: 0xDB4F,\n\t33086 - 11904: 0xB5CA,\n\t33090 - 11904: 0x9567,\n\t33091 - 11904: 0xDB4A,\n\t33092 - 11904: 0xDFA1,\n\t33094 - 11904: 0xB5C9,\n\t33095 - 11904: 0xDB4E,\n\t33096 - 11904: 0x9DE3,\n\t33098 - 11904: 0xDB4B,\n\t33099 - 11904: 0xB5C5,\n\t33100 - 11904: 0xB5CB,\n\t33101 - 11904: 0xDB50,\n\t33102 - 11904: 0xB5C7,\n\t33103 - 11904: 0xDB4D,\n\t33104 - 11904: 0xBB47,\n\t33105 - 11904: 0xB5C6,\n\t33106 - 11904: 0xDB4C,\n\t33107 - 11904: 0xB5CC,\n\t33108 - 11904: 0xB5C4,\n\t33109 - 11904: 0xB5C3,\n\t33110 - 11904: 0x997C,\n\t33113 - 11904: 0x997D,\n\t33114 - 11904: 0x997E,\n\t33115 - 11904: 0xDF77,\n\t33116 - 11904: 0xDF75,\n\t33118 - 11904: 0xDF7B,\n\t33120 - 11904: 0xDF73,\n\t33121 - 11904: 0xDFA2,\n\t33122 - 11904: 0xDF78,\n\t33124 - 11904: 0xDF72,\n\t33125 - 11904: 0xB87B,\n\t33126 - 11904: 0xB8A3,\n\t33127 - 11904: 0xDF7D,\n\t33129 - 11904: 0xDF76,\n\t33131 - 11904: 0xB87E,\n\t33132 - 11904: 0x8CFB,\n\t33133 - 11904: 0x8B5B,\n\t33134 - 11904: 0xB87C,\n\t33135 - 11904: 0xDF7E,\n\t33136 - 11904: 0xB879,\n\t33137 - 11904: 0xB878,\n\t33138 - 11904: 0xDF79,\n\t33139 - 11904: 0xB87D,\n\t33140 - 11904: 0xB5CD,\n\t33142 - 11904: 0xDF7C,\n\t33143 - 11904: 0xDF74,\n\t33144 - 11904: 0xB87A,\n\t33145 - 11904: 0xB8A1,\n\t33146 - 11904: 0xB8A2,\n\t33148 - 11904: 0x99A3,\n\t33151 - 11904: 0xBB4C,\n\t33152 - 11904: 0xBB48,\n\t33154 - 11904: 0xBB4D,\n\t33155 - 11904: 0xE3A6,\n\t33156 - 11904: 0x99A4,\n\t33158 - 11904: 0xE3A5,\n\t33159 - 11904: 0xE3A7,\n\t33160 - 11904: 0xBB4A,\n\t33161 - 11904: 0xE3A4,\n\t33162 - 11904: 0xBB4B,\n\t33163 - 11904: 0xE3AA,\n\t33164 - 11904: 0xE3A9,\n\t33165 - 11904: 0xE3A8,\n\t33167 - 11904: 0xBB49,\n\t33171 - 11904: 0x99A6,\n\t33173 - 11904: 0xE741,\n\t33175 - 11904: 0xE744,\n\t33176 - 11904: 0xBDA8,\n\t33177 - 11904: 0xE743,\n\t33178 - 11904: 0xBDA7,\n\t33179 - 11904: 0xBDA3,\n\t33180 - 11904: 0xBDA4,\n\t33181 - 11904: 0xBDA5,\n\t33182 - 11904: 0xE740,\n\t33183 - 11904: 0xE6FE,\n\t33184 - 11904: 0xBDA6,\n\t33186 - 11904: 0xE742,\n\t33187 - 11904: 0xE6FD,\n\t33189 - 11904: 0x99A8,\n\t33190 - 11904: 0xEAE9,\n\t33191 - 11904: 0xEAF3,\n\t33192 - 11904: 0xBFB1,\n\t33193 - 11904: 0xBFB0,\n\t33194 - 11904: 0x8ABE,\n\t33195 - 11904: 0xEAED,\n\t33196 - 11904: 0xEAEF,\n\t33198 - 11904: 0xEAEA,\n\t33200 - 11904: 0xEAEE,\n\t33201 - 11904: 0xEAE8,\n\t33202 - 11904: 0xEAF1,\n\t33203 - 11904: 0xBFAF,\n\t33204 - 11904: 0xEAF0,\n\t33205 - 11904: 0xEAEC,\n\t33206 - 11904: 0x9E61,\n\t33207 - 11904: 0xEAF2,\n\t33209 - 11904: 0xEAEB,\n\t33210 - 11904: 0xC174,\n\t33211 - 11904: 0xEDE8,\n\t33212 - 11904: 0xEDEE,\n\t33213 - 11904: 0xC178,\n\t33214 - 11904: 0xC17A,\n\t33215 - 11904: 0xC177,\n\t33216 - 11904: 0xC176,\n\t33217 - 11904: 0x99AA,\n\t33218 - 11904: 0xC175,\n\t33219 - 11904: 0xC173,\n\t33220 - 11904: 0xEDE9,\n\t33221 - 11904: 0xEDEC,\n\t33222 - 11904: 0xC172,\n\t33223 - 11904: 0xEDED,\n\t33224 - 11904: 0xA0C8,\n\t33225 - 11904: 0xC179,\n\t33226 - 11904: 0xEDEB,\n\t33228 - 11904: 0xEDEA,\n\t33229 - 11904: 0xC2C0,\n\t33231 - 11904: 0xC2C1,\n\t33232 - 11904: 0xF0A1,\n\t33233 - 11904: 0xF07D,\n\t33234 - 11904: 0xF07E,\n\t33237 - 11904: 0xF2C2,\n\t33239 - 11904: 0xF2C1,\n\t33240 - 11904: 0xC3BE,\n\t33241 - 11904: 0xF4B4,\n\t33242 - 11904: 0xC4A4,\n\t33243 - 11904: 0xF4B3,\n\t33245 - 11904: 0xF5F0,\n\t33246 - 11904: 0xF745,\n\t33247 - 11904: 0xC5A6,\n\t33248 - 11904: 0xF943,\n\t33249 - 11904: 0xF944,\n\t33250 - 11904: 0xC5D8,\n\t33251 - 11904: 0xA6DA,\n\t33252 - 11904: 0x99AB,\n\t33253 - 11904: 0xAAD7,\n\t33254 - 11904: 0xDB52,\n\t33255 - 11904: 0xBB4E,\n\t33256 - 11904: 0xC17B,\n\t33257 - 11904: 0xEDEF,\n\t33258 - 11904: 0xA6DB,\n\t33260 - 11904: 0xAFE5,\n\t33261 - 11904: 0xAFE4,\n\t33262 - 11904: 0xDB53,\n\t33263 - 11904: 0xFEC4,\n\t33266 - 11904: 0xEAF4,\n\t33267 - 11904: 0xA6DC,\n\t33268 - 11904: 0xAD50,\n\t33270 - 11904: 0x98C2,\n\t33271 - 11904: 0xDB54,\n\t33272 - 11904: 0xDB55,\n\t33273 - 11904: 0xDB56,\n\t33274 - 11904: 0xBB4F,\n\t33275 - 11904: 0xBFB2,\n\t33276 - 11904: 0xA6DD,\n\t33278 - 11904: 0xAAD8,\n\t33279 - 11904: 0xD068,\n\t33280 - 11904: 0xAFE6,\n\t33281 - 11904: 0xD370,\n\t33282 - 11904: 0xB2EA,\n\t33284 - 11904: 0xDB57,\n\t33285 - 11904: 0xB8A4,\n\t33287 - 11904: 0xBB50,\n\t33288 - 11904: 0xBFB3,\n\t33289 - 11904: 0xC17C,\n\t33290 - 11904: 0xC2C2,\n\t33291 - 11904: 0xF4B5,\n\t33292 - 11904: 0xA6DE,\n\t33293 - 11904: 0xAAD9,\n\t33296 - 11904: 0xAFE7,\n\t33297 - 11904: 0xD752,\n\t33298 - 11904: 0xB5CE,\n\t33300 - 11904: 0xBB51,\n\t33301 - 11904: 0xE3AB,\n\t33302 - 11904: 0xE745,\n\t33304 - 11904: 0x8EE8,\n\t33306 - 11904: 0xA0BA,\n\t33307 - 11904: 0xA6DF,\n\t33308 - 11904: 0xB5CF,\n\t33309 - 11904: 0xDFA3,\n\t33310 - 11904: 0xBB52,\n\t33311 - 11904: 0xA6E0,\n\t33312 - 11904: 0xCDB1,\n\t33313 - 11904: 0xD069,\n\t33314 - 11904: 0xAD51,\n\t33317 - 11904: 0xD372,\n\t33318 - 11904: 0xFD77,\n\t33320 - 11904: 0xAFEA,\n\t33321 - 11904: 0x8EEE,\n\t33322 - 11904: 0xAFE8,\n\t33323 - 11904: 0xAFE9,\n\t33324 - 11904: 0xAFEB,\n\t33325 - 11904: 0x9EBF,\n\t33327 - 11904: 0xD371,\n\t33330 - 11904: 0xD757,\n\t33331 - 11904: 0xD754,\n\t33332 - 11904: 0xD756,\n\t33333 - 11904: 0xB2EB,\n\t33334 - 11904: 0xB2ED,\n\t33335 - 11904: 0xB2EC,\n\t33336 - 11904: 0xD753,\n\t33337 - 11904: 0xB2EE,\n\t33338 - 11904: 0xD755,\n\t33340 - 11904: 0xDB58,\n\t33341 - 11904: 0xDB59,\n\t33342 - 11904: 0x89C2,\n\t33343 - 11904: 0xDB5A,\n\t33344 - 11904: 0xDFA6,\n\t33346 - 11904: 0xDFA7,\n\t33348 - 11904: 0xDFA5,\n\t33349 - 11904: 0xDFA8,\n\t33351 - 11904: 0xB8A5,\n\t33353 - 11904: 0xDFA4,\n\t33355 - 11904: 0xBB53,\n\t33358 - 11904: 0xE74A,\n\t33359 - 11904: 0xE746,\n\t33360 - 11904: 0xE749,\n\t33361 - 11904: 0xE74B,\n\t33362 - 11904: 0xE748,\n\t33363 - 11904: 0xE747,\n\t33364 - 11904: 0x99AC,\n\t33365 - 11904: 0xEAF5,\n\t33366 - 11904: 0xEAF6,\n\t33367 - 11904: 0xEAF7,\n\t33368 - 11904: 0xBFB4,\n\t33369 - 11904: 0xBFB5,\n\t33370 - 11904: 0xEDF1,\n\t33371 - 11904: 0xEDF0,\n\t33372 - 11904: 0xEDF2,\n\t33374 - 11904: 0xF0A3,\n\t33375 - 11904: 0xF0A2,\n\t33377 - 11904: 0xF2C4,\n\t33378 - 11904: 0x956B,\n\t33379 - 11904: 0xF2C5,\n\t33380 - 11904: 0xF2C3,\n\t33381 - 11904: 0x956C,\n\t33382 - 11904: 0xC4A5,\n\t33384 - 11904: 0xF4B6,\n\t33385 - 11904: 0xF4B7,\n\t33387 - 11904: 0xF746,\n\t33388 - 11904: 0xF7EF,\n\t33389 - 11904: 0xF8BB,\n\t33390 - 11904: 0xA6E1,\n\t33391 - 11904: 0xA87D,\n\t33393 - 11904: 0xC17D,\n\t33394 - 11904: 0xA6E2,\n\t33396 - 11904: 0xD758,\n\t33397 - 11904: 0xDB5B,\n\t33398 - 11904: 0x99AF,\n\t33399 - 11904: 0xC641,\n\t33400 - 11904: 0xCA4A,\n\t33401 - 11904: 0x994A,\n\t33402 - 11904: 0x8976,\n\t33403 - 11904: 0x8F48,\n\t33404 - 11904: 0xCA4B,\n\t33405 - 11904: 0xCA4D,\n\t33406 - 11904: 0xA6E3,\n\t33407 - 11904: 0xCA4E,\n\t33408 - 11904: 0xCA4C,\n\t33411 - 11904: 0xCBA2,\n\t33412 - 11904: 0xCBA3,\n\t33413 - 11904: 0xCB7B,\n\t33415 - 11904: 0xFBEE,\n\t33418 - 11904: 0xCBA1,\n\t33419 - 11904: 0xA8A1,\n\t33421 - 11904: 0xA8A2,\n\t33422 - 11904: 0xCB7C,\n\t33423 - 11904: 0xCB7A,\n\t33424 - 11904: 0xCB79,\n\t33425 - 11904: 0xCB7D,\n\t33426 - 11904: 0xA87E,\n\t33427 - 11904: 0xCB7E,\n\t33428 - 11904: 0xD06A,\n\t33432 - 11904: 0xCDB6,\n\t33433 - 11904: 0xAADC,\n\t33434 - 11904: 0xCDB5,\n\t33435 - 11904: 0xCDB7,\n\t33437 - 11904: 0xAADB,\n\t33438 - 11904: 0xCDBC,\n\t33439 - 11904: 0xAADF,\n\t33440 - 11904: 0xCDB2,\n\t33441 - 11904: 0xCDC0,\n\t33442 - 11904: 0xCDC6,\n\t33443 - 11904: 0xAAE6,\n\t33444 - 11904: 0xCDC3,\n\t33445 - 11904: 0xAAE3,\n\t33446 - 11904: 0x99AE,\n\t33447 - 11904: 0xCDB9,\n\t33448 - 11904: 0xCDBF,\n\t33449 - 11904: 0xCDC1,\n\t33450 - 11904: 0x8EFB,\n\t33451 - 11904: 0xCDB4,\n\t33452 - 11904: 0xAAE2,\n\t33453 - 11904: 0xAADD,\n\t33454 - 11904: 0xCDBA,\n\t33455 - 11904: 0xAAE4,\n\t33456 - 11904: 0xAAE7,\n\t33457 - 11904: 0xAAE1,\n\t33459 - 11904: 0xAADA,\n\t33460 - 11904: 0xCDBE,\n\t33461 - 11904: 0xCDB8,\n\t33462 - 11904: 0xCDC5,\n\t33463 - 11904: 0xAAE9,\n\t33464 - 11904: 0xAAE5,\n\t33465 - 11904: 0xAAE0,\n\t33466 - 11904: 0xCDBD,\n\t33467 - 11904: 0xAFEC,\n\t33468 - 11904: 0xCDBB,\n\t33469 - 11904: 0xAADE,\n\t33470 - 11904: 0xAAE8,\n\t33471 - 11904: 0x8CD0,\n\t33472 - 11904: 0xCDB3,\n\t33474 - 11904: 0xCDC2,\n\t33475 - 11904: 0xCDC4,\n\t33476 - 11904: 0x8B52,\n\t33482 - 11904: 0x99B0,\n\t33487 - 11904: 0x8977,\n\t33488 - 11904: 0x8F41,\n\t33489 - 11904: 0xAD62,\n\t33490 - 11904: 0xAD5C,\n\t33491 - 11904: 0xAD64,\n\t33492 - 11904: 0xAD61,\n\t33493 - 11904: 0xD071,\n\t33494 - 11904: 0xD074,\n\t33495 - 11904: 0xAD5D,\n\t33496 - 11904: 0x99B1,\n\t33497 - 11904: 0xD06B,\n\t33499 - 11904: 0xAD56,\n\t33500 - 11904: 0xAD60,\n\t33502 - 11904: 0xAD63,\n\t33503 - 11904: 0xAD65,\n\t33504 - 11904: 0xD0A2,\n\t33505 - 11904: 0xD077,\n\t33506 - 11904: 0x8F49,\n\t33507 - 11904: 0xAD55,\n\t33508 - 11904: 0xD0A1,\n\t33509 - 11904: 0xAD59,\n\t33510 - 11904: 0xAD57,\n\t33511 - 11904: 0xAD52,\n\t33512 - 11904: 0xD06F,\n\t33514 - 11904: 0xD07E,\n\t33515 - 11904: 0xD073,\n\t33516 - 11904: 0xD076,\n\t33517 - 11904: 0xD0A5,\n\t33518 - 11904: 0xFA4D,\n\t33519 - 11904: 0xAD66,\n\t33520 - 11904: 0xD07D,\n\t33521 - 11904: 0xAD5E,\n\t33522 - 11904: 0xD078,\n\t33523 - 11904: 0xD0A4,\n\t33524 - 11904: 0xD075,\n\t33525 - 11904: 0xD079,\n\t33526 - 11904: 0xD07C,\n\t33527 - 11904: 0x9DE4,\n\t33528 - 11904: 0x8CB5,\n\t33529 - 11904: 0xD06D,\n\t33530 - 11904: 0xD0A3,\n\t33531 - 11904: 0xD07B,\n\t33532 - 11904: 0xFBE9,\n\t33533 - 11904: 0x9B54,\n\t33534 - 11904: 0xD06C,\n\t33535 - 11904: 0x99B2,\n\t33536 - 11904: 0xD070,\n\t33537 - 11904: 0xAD5F,\n\t33538 - 11904: 0xAD5A,\n\t33539 - 11904: 0xAD53,\n\t33540 - 11904: 0xAD58,\n\t33541 - 11904: 0xAD54,\n\t33542 - 11904: 0xAD67,\n\t33543 - 11904: 0xD06E,\n\t33544 - 11904: 0xD3A5,\n\t33545 - 11904: 0xAD5B,\n\t33547 - 11904: 0x9E68,\n\t33548 - 11904: 0xD07A,\n\t33549 - 11904: 0xCE41,\n\t33558 - 11904: 0xD3A8,\n\t33559 - 11904: 0xAFFA,\n\t33560 - 11904: 0x8F4A,\n\t33561 - 11904: 0xD376,\n\t33562 - 11904: 0x8F42,\n\t33563 - 11904: 0xD3A3,\n\t33564 - 11904: 0xD37D,\n\t33565 - 11904: 0x8F51,\n\t33566 - 11904: 0xD3B2,\n\t33568 - 11904: 0xD3AA,\n\t33570 - 11904: 0xD37E,\n\t33572 - 11904: 0xD3A9,\n\t33573 - 11904: 0xD378,\n\t33574 - 11904: 0xD37C,\n\t33575 - 11904: 0xD3B5,\n\t33576 - 11904: 0xAFFD,\n\t33577 - 11904: 0xD3AD,\n\t33578 - 11904: 0xD3A4,\n\t33579 - 11904: 0xAFED,\n\t33580 - 11904: 0xD3B3,\n\t33581 - 11904: 0xD374,\n\t33583 - 11904: 0xD3AC,\n\t33585 - 11904: 0xAFFC,\n\t33586 - 11904: 0xAFF7,\n\t33587 - 11904: 0xD373,\n\t33588 - 11904: 0xAFF5,\n\t33589 - 11904: 0xAFF4,\n\t33590 - 11904: 0xAFF9,\n\t33591 - 11904: 0xD3AB,\n\t33592 - 11904: 0xAFF1,\n\t33593 - 11904: 0xAFF8,\n\t33594 - 11904: 0xD072,\n\t33595 - 11904: 0xDB5C,\n\t33596 - 11904: 0xD3A6,\n\t33597 - 11904: 0x9846,\n\t33599 - 11904: 0xD37A,\n\t33600 - 11904: 0xAFFB,\n\t33601 - 11904: 0xD37B,\n\t33602 - 11904: 0xD3A1,\n\t33603 - 11904: 0xAFFE,\n\t33604 - 11904: 0xD375,\n\t33605 - 11904: 0xD3AF,\n\t33607 - 11904: 0xD3AE,\n\t33608 - 11904: 0xD3B6,\n\t33609 - 11904: 0xAFF3,\n\t33610 - 11904: 0xAFF0,\n\t33611 - 11904: 0xD3B4,\n\t33612 - 11904: 0xD3B0,\n\t33613 - 11904: 0xD3A7,\n\t33614 - 11904: 0xD3A2,\n\t33615 - 11904: 0xAFF6,\n\t33616 - 11904: 0xAFF2,\n\t33617 - 11904: 0xD377,\n\t33618 - 11904: 0xAFEE,\n\t33619 - 11904: 0xD3B1,\n\t33620 - 11904: 0xAFEF,\n\t33622 - 11904: 0xD379,\n\t33623 - 11904: 0x99B4,\n\t33634 - 11904: 0x8EF5,\n\t33635 - 11904: 0xFD55,\n\t33638 - 11904: 0x9CCD,\n\t33647 - 11904: 0x8978,\n\t33651 - 11904: 0xD75E,\n\t33652 - 11904: 0xD760,\n\t33653 - 11904: 0xD765,\n\t33654 - 11904: 0xD779,\n\t33655 - 11904: 0xB2FC,\n\t33656 - 11904: 0xB2F2,\n\t33658 - 11904: 0xD75D,\n\t33659 - 11904: 0xB2FD,\n\t33660 - 11904: 0xB2FE,\n\t33661 - 11904: 0xD768,\n\t33662 - 11904: 0xD76F,\n\t33663 - 11904: 0xD775,\n\t33665 - 11904: 0xD762,\n\t33667 - 11904: 0xD769,\n\t33669 - 11904: 0x8F53,\n\t33670 - 11904: 0xB340,\n\t33671 - 11904: 0xD777,\n\t33672 - 11904: 0xD772,\n\t33673 - 11904: 0xB2FA,\n\t33674 - 11904: 0xB2F8,\n\t33675 - 11904: 0xD76E,\n\t33676 - 11904: 0xD76A,\n\t33677 - 11904: 0xD75C,\n\t33678 - 11904: 0xB2EF,\n\t33679 - 11904: 0xD761,\n\t33680 - 11904: 0xD759,\n\t33681 - 11904: 0x8F6F,\n\t33682 - 11904: 0xB2F7,\n\t33683 - 11904: 0xB2F9,\n\t33684 - 11904: 0xD766,\n\t33685 - 11904: 0xD763,\n\t33686 - 11904: 0xB2F4,\n\t33687 - 11904: 0xD773,\n\t33688 - 11904: 0xB2F1,\n\t33689 - 11904: 0xD764,\n\t33690 - 11904: 0xD77A,\n\t33691 - 11904: 0xD76C,\n\t33692 - 11904: 0x8E63,\n\t33693 - 11904: 0xD76B,\n\t33694 - 11904: 0xB2F0,\n\t33696 - 11904: 0xB2FB,\n\t33698 - 11904: 0xB2F3,\n\t33699 - 11904: 0xD75A,\n\t33700 - 11904: 0xD75F,\n\t33701 - 11904: 0xD770,\n\t33702 - 11904: 0xD776,\n\t33703 - 11904: 0xB341,\n\t33704 - 11904: 0xD75B,\n\t33705 - 11904: 0xD767,\n\t33706 - 11904: 0xD76D,\n\t33707 - 11904: 0xB2F6,\n\t33708 - 11904: 0x8F56,\n\t33710 - 11904: 0xD778,\n\t33711 - 11904: 0xD771,\n\t33712 - 11904: 0xD774,\n\t33721 - 11904: 0xFE76,\n\t33725 - 11904: 0xB2F5,\n\t33726 - 11904: 0x9FC6,\n\t33727 - 11904: 0xDB6C,\n\t33728 - 11904: 0xDB60,\n\t33729 - 11904: 0xB5D7,\n\t33730 - 11904: 0xDB7D,\n\t33731 - 11904: 0xDBA7,\n\t33732 - 11904: 0xDBAA,\n\t33733 - 11904: 0xB5D5,\n\t33734 - 11904: 0xDB68,\n\t33735 - 11904: 0xDBA3,\n\t33736 - 11904: 0xDB69,\n\t33737 - 11904: 0xDB77,\n\t33738 - 11904: 0xB5E2,\n\t33739 - 11904: 0xDB73,\n\t33740 - 11904: 0xB5DF,\n\t33741 - 11904: 0xFAAC,\n\t33742 - 11904: 0xDB74,\n\t33743 - 11904: 0xDB5D,\n\t33745 - 11904: 0xDBA4,\n\t33747 - 11904: 0x8F58,\n\t33748 - 11904: 0xB5E8,\n\t33749 - 11904: 0xDBA1,\n\t33750 - 11904: 0xDB75,\n\t33751 - 11904: 0xDBAC,\n\t33752 - 11904: 0xDB70,\n\t33753 - 11904: 0xDFC8,\n\t33755 - 11904: 0xDBAF,\n\t33756 - 11904: 0xB5E6,\n\t33757 - 11904: 0xDB6E,\n\t33758 - 11904: 0xDB7A,\n\t33759 - 11904: 0xB5E9,\n\t33760 - 11904: 0xB5D4,\n\t33761 - 11904: 0xDB72,\n\t33762 - 11904: 0xDBAD,\n\t33763 - 11904: 0xDB6B,\n\t33764 - 11904: 0xDB64,\n\t33765 - 11904: 0xDB6F,\n\t33767 - 11904: 0xDB63,\n\t33768 - 11904: 0xDB61,\n\t33769 - 11904: 0xB5D0,\n\t33770 - 11904: 0xDBA5,\n\t33771 - 11904: 0xDB6A,\n\t33772 - 11904: 0xDBA8,\n\t33773 - 11904: 0x9848,\n\t33774 - 11904: 0xDBA9,\n\t33775 - 11904: 0xB5D8,\n\t33776 - 11904: 0xB5DD,\n\t33777 - 11904: 0xB5D9,\n\t33778 - 11904: 0xB5E1,\n\t33779 - 11904: 0xDB7E,\n\t33780 - 11904: 0xB5DA,\n\t33781 - 11904: 0xDB76,\n\t33782 - 11904: 0xDB66,\n\t33784 - 11904: 0xB5D2,\n\t33785 - 11904: 0xDB5E,\n\t33786 - 11904: 0xDBA2,\n\t33787 - 11904: 0xDBAB,\n\t33788 - 11904: 0xDB65,\n\t33789 - 11904: 0xB5E0,\n\t33790 - 11904: 0xDBB0,\n\t33791 - 11904: 0xDB71,\n\t33793 - 11904: 0xDB6D,\n\t33795 - 11904: 0xB5D1,\n\t33796 - 11904: 0xB5E5,\n\t33797 - 11904: 0x99B7,\n\t33798 - 11904: 0xDB7C,\n\t33799 - 11904: 0xB5E7,\n\t33801 - 11904: 0xDB78,\n\t33802 - 11904: 0xB5DC,\n\t33803 - 11904: 0xB5D6,\n\t33804 - 11904: 0xB5DE,\n\t33805 - 11904: 0xB5D3,\n\t33806 - 11904: 0xB5E4,\n\t33807 - 11904: 0xDB79,\n\t33808 - 11904: 0xDB67,\n\t33809 - 11904: 0xDB7B,\n\t33810 - 11904: 0xDB62,\n\t33811 - 11904: 0xDBA6,\n\t33812 - 11904: 0x9665,\n\t33814 - 11904: 0xFA6C,\n\t33816 - 11904: 0x9DE7,\n\t33819 - 11904: 0xDBAE,\n\t33820 - 11904: 0x9E62,\n\t33824 - 11904: 0x96CC,\n\t33825 - 11904: 0x8E67,\n\t33827 - 11904: 0xDB5F,\n\t33828 - 11904: 0xFC75,\n\t33830 - 11904: 0x987E,\n\t33833 - 11904: 0xDFC7,\n\t33835 - 11904: 0xDFDD,\n\t33836 - 11904: 0xB855,\n\t33837 - 11904: 0xDFCC,\n\t33838 - 11904: 0xFDB9,\n\t33839 - 11904: 0xDFCA,\n\t33840 - 11904: 0xDFB5,\n\t33841 - 11904: 0xB8A9,\n\t33842 - 11904: 0xDFC5,\n\t33843 - 11904: 0xDFD9,\n\t33844 - 11904: 0xDFC1,\n\t33845 - 11904: 0xB8B1,\n\t33846 - 11904: 0xDFD8,\n\t33847 - 11904: 0xDFBF,\n\t33848 - 11904: 0xB5E3,\n\t33849 - 11904: 0xDFCF,\n\t33850 - 11904: 0xDFC0,\n\t33851 - 11904: 0xDFD6,\n\t33852 - 11904: 0xB8B0,\n\t33853 - 11904: 0xB8A8,\n\t33854 - 11904: 0x97FC,\n\t33855 - 11904: 0xDFAA,\n\t33856 - 11904: 0xDFB2,\n\t33858 - 11904: 0xDFCB,\n\t33859 - 11904: 0xDFC3,\n\t33860 - 11904: 0xDFDC,\n\t33861 - 11904: 0xDFC6,\n\t33862 - 11904: 0xB8B6,\n\t33863 - 11904: 0xDFD7,\n\t33864 - 11904: 0x98F9,\n\t33865 - 11904: 0xB8AD,\n\t33866 - 11904: 0x8F66,\n\t33867 - 11904: 0xDFC9,\n\t33868 - 11904: 0xDFD1,\n\t33869 - 11904: 0xDFB6,\n\t33870 - 11904: 0xDFD0,\n\t33872 - 11904: 0xDFE1,\n\t33873 - 11904: 0xDFB1,\n\t33874 - 11904: 0xDFD2,\n\t33875 - 11904: 0x956E,\n\t33876 - 11904: 0xDFDF,\n\t33877 - 11904: 0x9245,\n\t33878 - 11904: 0xDFAB,\n\t33879 - 11904: 0xB5DB,\n\t33880 - 11904: 0x8F60,\n\t33881 - 11904: 0xDFB9,\n\t33882 - 11904: 0xDFB8,\n\t33883 - 11904: 0xB8AF,\n\t33884 - 11904: 0x9ED1,\n\t33885 - 11904: 0xDFBC,\n\t33886 - 11904: 0xDFBE,\n\t33887 - 11904: 0xDFCD,\n\t33888 - 11904: 0xDFDE,\n\t33889 - 11904: 0xB8B2,\n\t33890 - 11904: 0xFECD,\n\t33891 - 11904: 0xB8B3,\n\t33892 - 11904: 0x99B9,\n\t33893 - 11904: 0xDFB0,\n\t33894 - 11904: 0xB8AB,\n\t33895 - 11904: 0xDFB4,\n\t33896 - 11904: 0xDFDA,\n\t33897 - 11904: 0xB8B4,\n\t33899 - 11904: 0xB8AC,\n\t33900 - 11904: 0xB8AE,\n\t33901 - 11904: 0xB8B5,\n\t33902 - 11904: 0xDFE0,\n\t33903 - 11904: 0xDFD3,\n\t33904 - 11904: 0xDFCE,\n\t33905 - 11904: 0x8F62,\n\t33906 - 11904: 0x974C,\n\t33907 - 11904: 0xDFBB,\n\t33908 - 11904: 0xDFBA,\n\t33909 - 11904: 0xB8AA,\n\t33910 - 11904: 0xDFAC,\n\t33911 - 11904: 0xB8A7,\n\t33912 - 11904: 0xDFC4,\n\t33913 - 11904: 0xDFAD,\n\t33914 - 11904: 0xDFC2,\n\t33917 - 11904: 0xDFB7,\n\t33918 - 11904: 0xDFDB,\n\t33919 - 11904: 0x91C7,\n\t33920 - 11904: 0x955F,\n\t33922 - 11904: 0xB8A6,\n\t33924 - 11904: 0x87AB,\n\t33926 - 11904: 0xDFB3,\n\t33928 - 11904: 0x99BB,\n\t33933 - 11904: 0xDFAF,\n\t33934 - 11904: 0xDFD5,\n\t33935 - 11904: 0xDFAE,\n\t33936 - 11904: 0xBB60,\n\t33937 - 11904: 0xE3D3,\n\t33938 - 11904: 0x8E6D,\n\t33939 - 11904: 0x8F71,\n\t33940 - 11904: 0xE3C2,\n\t33942 - 11904: 0x94CB,\n\t33943 - 11904: 0xE3AC,\n\t33944 - 11904: 0xE3CA,\n\t33945 - 11904: 0xBB58,\n\t33946 - 11904: 0xE3BB,\n\t33947 - 11904: 0xE3C5,\n\t33948 - 11904: 0xBB5B,\n\t33949 - 11904: 0xE3BE,\n\t33950 - 11904: 0xBB59,\n\t33951 - 11904: 0xE3AF,\n\t33952 - 11904: 0xE3CD,\n\t33953 - 11904: 0xE3AE,\n\t33954 - 11904: 0xE3C1,\n\t33955 - 11904: 0x95B1,\n\t33956 - 11904: 0xE3AD,\n\t33959 - 11904: 0xE3BF,\n\t33960 - 11904: 0xE3C8,\n\t33961 - 11904: 0xE3C6,\n\t33962 - 11904: 0xE3BA,\n\t33963 - 11904: 0xE3B5,\n\t33964 - 11904: 0xE3B3,\n\t33965 - 11904: 0x9AF2,\n\t33966 - 11904: 0xE3B4,\n\t33967 - 11904: 0xE3C7,\n\t33968 - 11904: 0xE3D2,\n\t33969 - 11904: 0xE3BC,\n\t33970 - 11904: 0xBB5A,\n\t33972 - 11904: 0xE3B7,\n\t33974 - 11904: 0xE3CB,\n\t33976 - 11904: 0xBB5D,\n\t33977 - 11904: 0xE3B6,\n\t33978 - 11904: 0xE3B0,\n\t33979 - 11904: 0xE3C0,\n\t33980 - 11904: 0xBB61,\n\t33981 - 11904: 0x96C3,\n\t33982 - 11904: 0x99BD,\n\t33983 - 11904: 0xBB55,\n\t33984 - 11904: 0xBB5E,\n\t33985 - 11904: 0xE3B8,\n\t33986 - 11904: 0xE3B2,\n\t33988 - 11904: 0xBB57,\n\t33989 - 11904: 0xDFD4,\n\t33990 - 11904: 0xBB56,\n\t33991 - 11904: 0xE3C3,\n\t33993 - 11904: 0xBB54,\n\t33994 - 11904: 0xBB63,\n\t33995 - 11904: 0xBB5C,\n\t33996 - 11904: 0xE3C4,\n\t33997 - 11904: 0xE3B9,\n\t33998 - 11904: 0xE3B1,\n\t33999 - 11904: 0xE3CC,\n\t34000 - 11904: 0xE3BD,\n\t34001 - 11904: 0xBB62,\n\t34002 - 11904: 0xE3D0,\n\t34003 - 11904: 0xBB5F,\n\t34004 - 11904: 0xE3CF,\n\t34006 - 11904: 0xE3C9,\n\t34007 - 11904: 0xE3CE,\n\t34010 - 11904: 0xA0CF,\n\t34011 - 11904: 0xE3D1,\n\t34014 - 11904: 0x8F6D,\n\t34017 - 11904: 0x99BE,\n\t34018 - 11904: 0x8EF4,\n\t34020 - 11904: 0x8F72,\n\t34021 - 11904: 0x95E4,\n\t34023 - 11904: 0xE773,\n\t34024 - 11904: 0xE774,\n\t34025 - 11904: 0xE767,\n\t34026 - 11904: 0xE766,\n\t34027 - 11904: 0xE762,\n\t34028 - 11904: 0xBDB4,\n\t34030 - 11904: 0xBDAC,\n\t34031 - 11904: 0xE776,\n\t34032 - 11904: 0xE775,\n\t34033 - 11904: 0xDFA9,\n\t34034 - 11904: 0xE75F,\n\t34035 - 11904: 0xE763,\n\t34036 - 11904: 0xE75D,\n\t34038 - 11904: 0xE770,\n\t34039 - 11904: 0xE761,\n\t34040 - 11904: 0x99BF,\n\t34041 - 11904: 0xE777,\n\t34042 - 11904: 0xE75A,\n\t34043 - 11904: 0xE758,\n\t34044 - 11904: 0xE764,\n\t34045 - 11904: 0xE76E,\n\t34046 - 11904: 0xE769,\n\t34047 - 11904: 0xBDB6,\n\t34048 - 11904: 0xE74F,\n\t34050 - 11904: 0xE76D,\n\t34051 - 11904: 0x9244,\n\t34052 - 11904: 0x87D7,\n\t34053 - 11904: 0xFBA5,\n\t34054 - 11904: 0xBDB7,\n\t34055 - 11904: 0xDFBD,\n\t34056 - 11904: 0xE75B,\n\t34057 - 11904: 0xE752,\n\t34058 - 11904: 0xE755,\n\t34059 - 11904: 0xE77B,\n\t34060 - 11904: 0xE75C,\n\t34061 - 11904: 0xE753,\n\t34062 - 11904: 0xE751,\n\t34063 - 11904: 0xE74E,\n\t34064 - 11904: 0x99C0,\n\t34065 - 11904: 0xBDB0,\n\t34066 - 11904: 0xE765,\n\t34067 - 11904: 0xBDAF,\n\t34068 - 11904: 0xBDB3,\n\t34069 - 11904: 0xE760,\n\t34070 - 11904: 0xE768,\n\t34071 - 11904: 0xBDA9,\n\t34072 - 11904: 0xE778,\n\t34073 - 11904: 0xE77C,\n\t34074 - 11904: 0xBDAB,\n\t34076 - 11904: 0xE757,\n\t34077 - 11904: 0xE76B,\n\t34078 - 11904: 0xE76F,\n\t34079 - 11904: 0xE754,\n\t34080 - 11904: 0xE779,\n\t34081 - 11904: 0xBDB2,\n\t34083 - 11904: 0xBDB1,\n\t34084 - 11904: 0xE74C,\n\t34085 - 11904: 0xBDB5,\n\t34086 - 11904: 0xE772,\n\t34087 - 11904: 0xE756,\n\t34088 - 11904: 0xE76A,\n\t34089 - 11904: 0xE750,\n\t34090 - 11904: 0xE75E,\n\t34091 - 11904: 0xE759,\n\t34092 - 11904: 0xBDAD,\n\t34093 - 11904: 0xBDAE,\n\t34094 - 11904: 0xE76C,\n\t34095 - 11904: 0xE77D,\n\t34096 - 11904: 0xE77A,\n\t34097 - 11904: 0xE771,\n\t34099 - 11904: 0xFDB4,\n\t34100 - 11904: 0x8F77,\n\t34104 - 11904: 0x99C1,\n\t34107 - 11904: 0xE74D,\n\t34109 - 11904: 0xBDAA,\n\t34110 - 11904: 0xEB49,\n\t34112 - 11904: 0xEB40,\n\t34113 - 11904: 0xEB43,\n\t34114 - 11904: 0xFAB9,\n\t34115 - 11904: 0xBFBB,\n\t34116 - 11904: 0xEB45,\n\t34117 - 11904: 0xEAF9,\n\t34118 - 11904: 0xEB41,\n\t34119 - 11904: 0xEB47,\n\t34120 - 11904: 0xBFB8,\n\t34121 - 11904: 0xBFBC,\n\t34122 - 11904: 0xBFB6,\n\t34123 - 11904: 0x8F40,\n\t34124 - 11904: 0xFA44,\n\t34125 - 11904: 0xEAFB,\n\t34126 - 11904: 0xEB4C,\n\t34129 - 11904: 0xEB46,\n\t34130 - 11904: 0x99C2,\n\t34131 - 11904: 0xEAFC,\n\t34132 - 11904: 0xEB55,\n\t34133 - 11904: 0xEB4F,\n\t34134 - 11904: 0xEAF8,\n\t34135 - 11904: 0xEE46,\n\t34136 - 11904: 0xEAFE,\n\t34137 - 11904: 0xBFB7,\n\t34138 - 11904: 0x8F5C,\n\t34139 - 11904: 0xEB4A,\n\t34141 - 11904: 0xEB54,\n\t34142 - 11904: 0xBFBF,\n\t34143 - 11904: 0x8CBD,\n\t34144 - 11904: 0xEB51,\n\t34145 - 11904: 0xEAFD,\n\t34146 - 11904: 0xEB44,\n\t34147 - 11904: 0xEB48,\n\t34148 - 11904: 0xEB42,\n\t34149 - 11904: 0xEB56,\n\t34150 - 11904: 0xEB53,\n\t34151 - 11904: 0xEB50,\n\t34152 - 11904: 0xBFB9,\n\t34153 - 11904: 0xBFBA,\n\t34154 - 11904: 0xBFBE,\n\t34155 - 11904: 0xEAFA,\n\t34156 - 11904: 0xEB57,\n\t34157 - 11904: 0xBFBD,\n\t34158 - 11904: 0xEB4D,\n\t34159 - 11904: 0x99C4,\n\t34160 - 11904: 0x99C5,\n\t34161 - 11904: 0xEB4B,\n\t34163 - 11904: 0x8F7B,\n\t34165 - 11904: 0xEB4E,\n\t34166 - 11904: 0xEE53,\n\t34167 - 11904: 0xEE40,\n\t34168 - 11904: 0xEE45,\n\t34169 - 11904: 0xEE52,\n\t34170 - 11904: 0xEE44,\n\t34171 - 11904: 0xEDFB,\n\t34172 - 11904: 0xEE41,\n\t34174 - 11904: 0xC1A2,\n\t34176 - 11904: 0xEDF4,\n\t34177 - 11904: 0xEE4D,\n\t34178 - 11904: 0xEE4F,\n\t34179 - 11904: 0xEDF3,\n\t34180 - 11904: 0xC1A1,\n\t34181 - 11904: 0xEE51,\n\t34182 - 11904: 0xEE49,\n\t34183 - 11904: 0xC1A8,\n\t34184 - 11904: 0xEE50,\n\t34185 - 11904: 0xEE42,\n\t34186 - 11904: 0xC1AA,\n\t34187 - 11904: 0xEDF9,\n\t34188 - 11904: 0xEB52,\n\t34189 - 11904: 0xEE4A,\n\t34190 - 11904: 0xEE47,\n\t34191 - 11904: 0xEDF5,\n\t34192 - 11904: 0xEE55,\n\t34193 - 11904: 0xC1A4,\n\t34195 - 11904: 0x8776,\n\t34196 - 11904: 0xC1A5,\n\t34197 - 11904: 0xEDF7,\n\t34198 - 11904: 0xEE48,\n\t34199 - 11904: 0x8CB6,\n\t34200 - 11904: 0xEE54,\n\t34201 - 11904: 0xEE4B,\n\t34202 - 11904: 0xEDFD,\n\t34203 - 11904: 0xC1A7,\n\t34204 - 11904: 0xC1A3,\n\t34205 - 11904: 0xEE4C,\n\t34206 - 11904: 0xEDFE,\n\t34207 - 11904: 0xEE56,\n\t34208 - 11904: 0xEDF8,\n\t34209 - 11904: 0xEE43,\n\t34210 - 11904: 0xEE4E,\n\t34211 - 11904: 0xEDFA,\n\t34212 - 11904: 0xEDFC,\n\t34214 - 11904: 0xC2CB,\n\t34215 - 11904: 0xEDF6,\n\t34216 - 11904: 0xC1A9,\n\t34217 - 11904: 0xC2C4,\n\t34218 - 11904: 0xC17E,\n\t34223 - 11904: 0xC1A6,\n\t34224 - 11904: 0xC2C8,\n\t34225 - 11904: 0xF0B3,\n\t34227 - 11904: 0xF0A9,\n\t34228 - 11904: 0xF0A4,\n\t34229 - 11904: 0xF0AA,\n\t34230 - 11904: 0xF0B4,\n\t34231 - 11904: 0xF0B8,\n\t34232 - 11904: 0xF0B7,\n\t34233 - 11904: 0xC2CA,\n\t34234 - 11904: 0xC2C9,\n\t34237 - 11904: 0xF0AB,\n\t34238 - 11904: 0xF0B9,\n\t34239 - 11904: 0xF0AE,\n\t34240 - 11904: 0xF0A6,\n\t34241 - 11904: 0x8FA3,\n\t34242 - 11904: 0xF0A8,\n\t34243 - 11904: 0xF0A7,\n\t34244 - 11904: 0xF0AD,\n\t34245 - 11904: 0xF0B2,\n\t34246 - 11904: 0xF0A5,\n\t34247 - 11904: 0xF0AC,\n\t34248 - 11904: 0xF0B1,\n\t34249 - 11904: 0xC2C7,\n\t34251 - 11904: 0xF0AF,\n\t34253 - 11904: 0xC2C5,\n\t34254 - 11904: 0xF0B0,\n\t34255 - 11904: 0xC2C3,\n\t34256 - 11904: 0xC2C6,\n\t34257 - 11904: 0xF2D5,\n\t34258 - 11904: 0xF0B5,\n\t34261 - 11904: 0xC3C2,\n\t34262 - 11904: 0x8CCE,\n\t34263 - 11904: 0xF2CD,\n\t34264 - 11904: 0xF2D1,\n\t34265 - 11904: 0xF2C9,\n\t34266 - 11904: 0xF2CC,\n\t34268 - 11904: 0xF2D4,\n\t34269 - 11904: 0xC3C0,\n\t34270 - 11904: 0xF2D9,\n\t34271 - 11904: 0xF2D2,\n\t34272 - 11904: 0x99C6,\n\t34273 - 11904: 0xF2CA,\n\t34274 - 11904: 0xF2DA,\n\t34275 - 11904: 0xF2D3,\n\t34276 - 11904: 0xC3C3,\n\t34277 - 11904: 0xC3C4,\n\t34278 - 11904: 0xF2D7,\n\t34280 - 11904: 0xF2CB,\n\t34281 - 11904: 0xC3BF,\n\t34282 - 11904: 0xC3C1,\n\t34283 - 11904: 0xF2C6,\n\t34284 - 11904: 0xF2CE,\n\t34285 - 11904: 0xF2C8,\n\t34286 - 11904: 0x96CD,\n\t34287 - 11904: 0xF2D8,\n\t34288 - 11904: 0xF2D6,\n\t34289 - 11904: 0xF2C7,\n\t34290 - 11904: 0xF2CF,\n\t34294 - 11904: 0xF4BE,\n\t34295 - 11904: 0xC3C5,\n\t34296 - 11904: 0xF2D0,\n\t34297 - 11904: 0xC4A7,\n\t34298 - 11904: 0xC4A9,\n\t34299 - 11904: 0xC4A6,\n\t34300 - 11904: 0x96C7,\n\t34301 - 11904: 0xF4C3,\n\t34302 - 11904: 0xF4BB,\n\t34303 - 11904: 0xF4B9,\n\t34304 - 11904: 0xF4BD,\n\t34305 - 11904: 0xF4BA,\n\t34306 - 11904: 0x8FA5,\n\t34308 - 11904: 0xF4BF,\n\t34309 - 11904: 0xF4C1,\n\t34310 - 11904: 0xC4AA,\n\t34311 - 11904: 0xC4AC,\n\t34313 - 11904: 0xF4C0,\n\t34314 - 11904: 0xC4AD,\n\t34315 - 11904: 0xC4AB,\n\t34316 - 11904: 0xF4C2,\n\t34317 - 11904: 0xFABB,\n\t34319 - 11904: 0x8C61,\n\t34320 - 11904: 0x9570,\n\t34321 - 11904: 0xC4A8,\n\t34323 - 11904: 0x87AF,\n\t34324 - 11904: 0x9368,\n\t34326 - 11904: 0x8F7E,\n\t34327 - 11904: 0xC4F4,\n\t34328 - 11904: 0xF5F1,\n\t34329 - 11904: 0xF5F7,\n\t34330 - 11904: 0xC4F6,\n\t34331 - 11904: 0xF4BC,\n\t34332 - 11904: 0xF5F6,\n\t34334 - 11904: 0xF5FD,\n\t34335 - 11904: 0xF5F4,\n\t34336 - 11904: 0xF5FB,\n\t34337 - 11904: 0xF5FA,\n\t34338 - 11904: 0xF4B8,\n\t34339 - 11904: 0xF5F5,\n\t34340 - 11904: 0xF0B6,\n\t34341 - 11904: 0xF5FE,\n\t34342 - 11904: 0xF5F3,\n\t34343 - 11904: 0xF5F8,\n\t34344 - 11904: 0x8FAA,\n\t34345 - 11904: 0xF5FC,\n\t34346 - 11904: 0xF5F2,\n\t34348 - 11904: 0xF74A,\n\t34349 - 11904: 0xC4F5,\n\t34350 - 11904: 0xF5F9,\n\t34351 - 11904: 0xA050,\n\t34353 - 11904: 0xF7F4,\n\t34354 - 11904: 0xF74B,\n\t34355 - 11904: 0xF749,\n\t34356 - 11904: 0xF747,\n\t34357 - 11904: 0xF748,\n\t34358 - 11904: 0xF74C,\n\t34360 - 11904: 0xC5D9,\n\t34361 - 11904: 0xF7F2,\n\t34362 - 11904: 0xF7F0,\n\t34363 - 11904: 0xF7F5,\n\t34364 - 11904: 0xF7F3,\n\t34366 - 11904: 0xF7F6,\n\t34367 - 11904: 0xC5DA,\n\t34368 - 11904: 0xF7F1,\n\t34370 - 11904: 0x90D3,\n\t34371 - 11904: 0xF8BC,\n\t34373 - 11904: 0x9556,\n\t34374 - 11904: 0xF945,\n\t34375 - 11904: 0xF946,\n\t34376 - 11904: 0xF947,\n\t34379 - 11904: 0xF9C7,\n\t34380 - 11904: 0xF9BD,\n\t34381 - 11904: 0xCA4F,\n\t34382 - 11904: 0xAAEA,\n\t34384 - 11904: 0xAD68,\n\t34386 - 11904: 0xD3B8,\n\t34387 - 11904: 0xD3B7,\n\t34388 - 11904: 0xB040,\n\t34389 - 11904: 0xB342,\n\t34390 - 11904: 0xD77C,\n\t34393 - 11904: 0xD77B,\n\t34395 - 11904: 0xB5EA,\n\t34396 - 11904: 0xB8B8,\n\t34398 - 11904: 0xB8B7,\n\t34399 - 11904: 0xB8B9,\n\t34401 - 11904: 0xE3D4,\n\t34402 - 11904: 0xE77E,\n\t34403 - 11904: 0xEB58,\n\t34404 - 11904: 0xEB5A,\n\t34405 - 11904: 0xEB59,\n\t34407 - 11904: 0xC1AB,\n\t34408 - 11904: 0xEE57,\n\t34409 - 11904: 0xF0BA,\n\t34410 - 11904: 0xF9A5,\n\t34411 - 11904: 0xA6E4,\n\t34412 - 11904: 0x8FB8,\n\t34413 - 11904: 0xCDC9,\n\t34414 - 11904: 0xCDCA,\n\t34415 - 11904: 0xCDC8,\n\t34416 - 11904: 0xCDC7,\n\t34417 - 11904: 0xAAEB,\n\t34418 - 11904: 0x99C8,\n\t34419 - 11904: 0xD0A9,\n\t34420 - 11904: 0xD0A7,\n\t34423 - 11904: 0xD0A6,\n\t34425 - 11904: 0xAD69,\n\t34426 - 11904: 0xAD6B,\n\t34427 - 11904: 0xAD6A,\n\t34428 - 11904: 0xD0A8,\n\t34430 - 11904: 0x8FAF,\n\t34437 - 11904: 0xD3C4,\n\t34438 - 11904: 0xD3C1,\n\t34439 - 11904: 0xD3BF,\n\t34442 - 11904: 0xB041,\n\t34443 - 11904: 0xD3C2,\n\t34444 - 11904: 0xB046,\n\t34445 - 11904: 0xD3BC,\n\t34446 - 11904: 0xD3CB,\n\t34448 - 11904: 0xD3CD,\n\t34449 - 11904: 0xD3BD,\n\t34450 - 11904: 0x99C9,\n\t34451 - 11904: 0xB043,\n\t34452 - 11904: 0xD3CE,\n\t34453 - 11904: 0xD3C9,\n\t34454 - 11904: 0xD3BB,\n\t34455 - 11904: 0xD3C0,\n\t34456 - 11904: 0xD3CA,\n\t34457 - 11904: 0xD3C6,\n\t34458 - 11904: 0xD3C3,\n\t34460 - 11904: 0xB048,\n\t34461 - 11904: 0xD3CC,\n\t34462 - 11904: 0xD3BE,\n\t34464 - 11904: 0x9579,\n\t34465 - 11904: 0xD3C7,\n\t34466 - 11904: 0xD3B9,\n\t34467 - 11904: 0xB047,\n\t34468 - 11904: 0xB044,\n\t34469 - 11904: 0xD3C5,\n\t34471 - 11904: 0xD3C8,\n\t34472 - 11904: 0xD3BA,\n\t34473 - 11904: 0xB045,\n\t34474 - 11904: 0xB042,\n\t34477 - 11904: 0x9F49,\n\t34479 - 11904: 0xB34C,\n\t34480 - 11904: 0xD7A5,\n\t34481 - 11904: 0xB34B,\n\t34482 - 11904: 0x99CA,\n\t34483 - 11904: 0xD7A8,\n\t34484 - 11904: 0xD7AB,\n\t34485 - 11904: 0xB348,\n\t34486 - 11904: 0xB346,\n\t34487 - 11904: 0xD77E,\n\t34488 - 11904: 0xD7A9,\n\t34489 - 11904: 0xD7A7,\n\t34490 - 11904: 0xD7A4,\n\t34491 - 11904: 0xD7AC,\n\t34492 - 11904: 0xD7AD,\n\t34493 - 11904: 0xD7AF,\n\t34494 - 11904: 0xD7B0,\n\t34495 - 11904: 0xD77D,\n\t34496 - 11904: 0xB345,\n\t34497 - 11904: 0xD7A2,\n\t34498 - 11904: 0xD7A1,\n\t34499 - 11904: 0xD7AE,\n\t34500 - 11904: 0xB347,\n\t34501 - 11904: 0xD7A3,\n\t34502 - 11904: 0xB349,\n\t34503 - 11904: 0xB344,\n\t34504 - 11904: 0xD7A6,\n\t34505 - 11904: 0xB34D,\n\t34507 - 11904: 0xB34A,\n\t34508 - 11904: 0xD7AA,\n\t34512 - 11904: 0xB5F1,\n\t34513 - 11904: 0xDBBF,\n\t34515 - 11904: 0xDBB4,\n\t34516 - 11904: 0xB5EE,\n\t34518 - 11904: 0xDFE7,\n\t34519 - 11904: 0xDBBD,\n\t34520 - 11904: 0xDBB1,\n\t34521 - 11904: 0xB5EC,\n\t34522 - 11904: 0xDBB6,\n\t34523 - 11904: 0xB5EF,\n\t34524 - 11904: 0xDBBA,\n\t34525 - 11904: 0xDBB8,\n\t34526 - 11904: 0xB5F2,\n\t34527 - 11904: 0xB5EB,\n\t34530 - 11904: 0xDBB2,\n\t34531 - 11904: 0xDBB5,\n\t34532 - 11904: 0xB5F0,\n\t34534 - 11904: 0xDBB3,\n\t34536 - 11904: 0xDBBE,\n\t34537 - 11904: 0xDBBC,\n\t34538 - 11904: 0xDBB7,\n\t34539 - 11904: 0xDBB9,\n\t34540 - 11904: 0xDBBB,\n\t34541 - 11904: 0xB5ED,\n\t34543 - 11904: 0x99CB,\n\t34549 - 11904: 0xDFE8,\n\t34550 - 11904: 0xDFEE,\n\t34551 - 11904: 0xDFE4,\n\t34552 - 11904: 0xDFEA,\n\t34553 - 11904: 0xB8BA,\n\t34554 - 11904: 0xDFE6,\n\t34555 - 11904: 0xB8C0,\n\t34558 - 11904: 0xB8BF,\n\t34560 - 11904: 0xB8BE,\n\t34561 - 11904: 0xDFED,\n\t34562 - 11904: 0xB8C1,\n\t34563 - 11904: 0xB8C2,\n\t34564 - 11904: 0xDFE3,\n\t34565 - 11904: 0xDFF0,\n\t34566 - 11904: 0xB8C3,\n\t34567 - 11904: 0xB8BD,\n\t34568 - 11904: 0xB8BC,\n\t34569 - 11904: 0xDFEC,\n\t34570 - 11904: 0xB8C4,\n\t34571 - 11904: 0xDFE2,\n\t34572 - 11904: 0xDFE5,\n\t34573 - 11904: 0xDFEF,\n\t34574 - 11904: 0xDFEB,\n\t34577 - 11904: 0xE3F4,\n\t34578 - 11904: 0xE3E9,\n\t34579 - 11904: 0xB8BB,\n\t34584 - 11904: 0xBB6A,\n\t34585 - 11904: 0xE3DD,\n\t34586 - 11904: 0xE3F2,\n\t34587 - 11904: 0xE3DE,\n\t34588 - 11904: 0xBB65,\n\t34590 - 11904: 0xE3DB,\n\t34592 - 11904: 0xE3E4,\n\t34593 - 11904: 0xE3DC,\n\t34594 - 11904: 0xBB67,\n\t34595 - 11904: 0xE3D6,\n\t34596 - 11904: 0xE3F1,\n\t34597 - 11904: 0xBB68,\n\t34598 - 11904: 0xE3EE,\n\t34599 - 11904: 0xE3EF,\n\t34600 - 11904: 0xE3D7,\n\t34601 - 11904: 0xBB6D,\n\t34602 - 11904: 0xE3E6,\n\t34604 - 11904: 0xE3E0,\n\t34605 - 11904: 0xE3E7,\n\t34606 - 11904: 0xE3DA,\n\t34608 - 11904: 0xE3F3,\n\t34609 - 11904: 0xE3EB,\n\t34610 - 11904: 0xE3E5,\n\t34611 - 11904: 0xE3D5,\n\t34612 - 11904: 0xBB69,\n\t34613 - 11904: 0xE3EC,\n\t34615 - 11904: 0xBB6C,\n\t34616 - 11904: 0xE3F0,\n\t34618 - 11904: 0xE3EA,\n\t34619 - 11904: 0xBB66,\n\t34620 - 11904: 0xE3E8,\n\t34622 - 11904: 0xE3E2,\n\t34623 - 11904: 0xBB64,\n\t34624 - 11904: 0xE3D9,\n\t34625 - 11904: 0xE3E1,\n\t34626 - 11904: 0xE3ED,\n\t34627 - 11904: 0xE3DF,\n\t34630 - 11904: 0xE3E3,\n\t34636 - 11904: 0xBDC1,\n\t34637 - 11904: 0xDFE9,\n\t34638 - 11904: 0xE7B2,\n\t34639 - 11904: 0xE7BB,\n\t34640 - 11904: 0xE7B1,\n\t34641 - 11904: 0xE7AD,\n\t34642 - 11904: 0xE7AA,\n\t34643 - 11904: 0xBDC2,\n\t34644 - 11904: 0xE7A8,\n\t34645 - 11904: 0xBB6B,\n\t34646 - 11904: 0xE7A1,\n\t34647 - 11904: 0xBDC0,\n\t34648 - 11904: 0xE7A7,\n\t34649 - 11904: 0xBDBF,\n\t34650 - 11904: 0xE7AC,\n\t34651 - 11904: 0xE7A9,\n\t34652 - 11904: 0xE7B9,\n\t34653 - 11904: 0xE7B4,\n\t34654 - 11904: 0xE7AE,\n\t34655 - 11904: 0xE7B3,\n\t34656 - 11904: 0xBDBB,\n\t34657 - 11904: 0xE7AB,\n\t34658 - 11904: 0xE7BE,\n\t34659 - 11904: 0xE7A2,\n\t34660 - 11904: 0xE7A3,\n\t34661 - 11904: 0xE7BA,\n\t34662 - 11904: 0xBDBC,\n\t34663 - 11904: 0xE7BF,\n\t34664 - 11904: 0xBDBE,\n\t34665 - 11904: 0xE7C0,\n\t34666 - 11904: 0xE7B0,\n\t34667 - 11904: 0xE3D8,\n\t34668 - 11904: 0xE7B6,\n\t34669 - 11904: 0xE7AF,\n\t34670 - 11904: 0xE7B8,\n\t34671 - 11904: 0xE7B5,\n\t34672 - 11904: 0x9DD5,\n\t34673 - 11904: 0x8FB0,\n\t34675 - 11904: 0xE7A6,\n\t34676 - 11904: 0xBDB9,\n\t34677 - 11904: 0xE7BD,\n\t34678 - 11904: 0xBDBA,\n\t34679 - 11904: 0xE7A4,\n\t34680 - 11904: 0xBDBD,\n\t34681 - 11904: 0xEB64,\n\t34682 - 11904: 0xE7B7,\n\t34683 - 11904: 0xE7BC,\n\t34685 - 11904: 0xFA7A,\n\t34689 - 11904: 0xEB61,\n\t34690 - 11904: 0xBDB8,\n\t34691 - 11904: 0xBFC0,\n\t34692 - 11904: 0xEB6B,\n\t34693 - 11904: 0xEB67,\n\t34694 - 11904: 0x9E5F,\n\t34695 - 11904: 0xEB65,\n\t34696 - 11904: 0xEB60,\n\t34697 - 11904: 0xEB6F,\n\t34699 - 11904: 0x99CD,\n\t34700 - 11904: 0xA0C9,\n\t34701 - 11904: 0xBFC4,\n\t34703 - 11904: 0xEB5C,\n\t34704 - 11904: 0xEB68,\n\t34705 - 11904: 0xEB69,\n\t34706 - 11904: 0xEB5F,\n\t34707 - 11904: 0xEB5E,\n\t34708 - 11904: 0xEB6C,\n\t34710 - 11904: 0xEB62,\n\t34711 - 11904: 0xEB5D,\n\t34712 - 11904: 0xEB63,\n\t34714 - 11904: 0xEB6E,\n\t34715 - 11904: 0xEB5B,\n\t34716 - 11904: 0xEB6D,\n\t34717 - 11904: 0xEB6A,\n\t34718 - 11904: 0xBFC2,\n\t34719 - 11904: 0xBFC1,\n\t34722 - 11904: 0xBFC3,\n\t34723 - 11904: 0xEB66,\n\t34724 - 11904: 0xF0CB,\n\t34725 - 11904: 0x9ADB,\n\t34729 - 11904: 0xA0C6,\n\t34730 - 11904: 0xEE59,\n\t34731 - 11904: 0xC1B1,\n\t34732 - 11904: 0xEE5D,\n\t34733 - 11904: 0xEE5A,\n\t34734 - 11904: 0xEE61,\n\t34735 - 11904: 0xEE67,\n\t34736 - 11904: 0xEE5C,\n\t34737 - 11904: 0x8FB4,\n\t34738 - 11904: 0xEE70,\n\t34739 - 11904: 0xC1AE,\n\t34740 - 11904: 0xEE6A,\n\t34741 - 11904: 0xEE5F,\n\t34742 - 11904: 0xEE6B,\n\t34743 - 11904: 0xEE66,\n\t34744 - 11904: 0xEE6D,\n\t34745 - 11904: 0xEE5E,\n\t34746 - 11904: 0xC1B3,\n\t34747 - 11904: 0xC1B2,\n\t34748 - 11904: 0xEE60,\n\t34749 - 11904: 0xEE6E,\n\t34750 - 11904: 0xEE58,\n\t34751 - 11904: 0xEE6C,\n\t34752 - 11904: 0xC1AC,\n\t34753 - 11904: 0xA0D7,\n\t34754 - 11904: 0xEE64,\n\t34755 - 11904: 0xEE63,\n\t34756 - 11904: 0xEE68,\n\t34757 - 11904: 0xEE5B,\n\t34758 - 11904: 0xC1B0,\n\t34760 - 11904: 0xC1B4,\n\t34761 - 11904: 0xEE62,\n\t34762 - 11904: 0xEE69,\n\t34763 - 11904: 0xC1B5,\n\t34764 - 11904: 0xEE65,\n\t34766 - 11904: 0xA0C7,\n\t34769 - 11904: 0xC1AD,\n\t34770 - 11904: 0xC1AF,\n\t34771 - 11904: 0xF0C7,\n\t34772 - 11904: 0xF0C5,\n\t34774 - 11904: 0xA043,\n\t34775 - 11904: 0xF0CC,\n\t34776 - 11904: 0xF0C9,\n\t34777 - 11904: 0xF0CD,\n\t34778 - 11904: 0x8FB5,\n\t34779 - 11904: 0xF0BE,\n\t34780 - 11904: 0xF0C6,\n\t34781 - 11904: 0xF0D1,\n\t34782 - 11904: 0xEE6F,\n\t34783 - 11904: 0xF0C2,\n\t34784 - 11904: 0xC2CF,\n\t34785 - 11904: 0xE7A5,\n\t34786 - 11904: 0xF0BD,\n\t34787 - 11904: 0xF0CA,\n\t34788 - 11904: 0xF0C4,\n\t34789 - 11904: 0xF0C1,\n\t34790 - 11904: 0xF0BC,\n\t34791 - 11904: 0xF0BB,\n\t34792 - 11904: 0xF0D0,\n\t34794 - 11904: 0xF0C0,\n\t34795 - 11904: 0xF0BF,\n\t34796 - 11904: 0xC2CD,\n\t34797 - 11904: 0xF0C8,\n\t34798 - 11904: 0x8FB2,\n\t34799 - 11904: 0xC2CC,\n\t34802 - 11904: 0xC2CE,\n\t34803 - 11904: 0xF0C3,\n\t34804 - 11904: 0xF0CF,\n\t34805 - 11904: 0xA061,\n\t34806 - 11904: 0xF2DE,\n\t34807 - 11904: 0xF2DF,\n\t34809 - 11904: 0xC3C9,\n\t34810 - 11904: 0xF2DC,\n\t34811 - 11904: 0xC3C6,\n\t34812 - 11904: 0xF2E4,\n\t34814 - 11904: 0xC3CA,\n\t34815 - 11904: 0xF2E6,\n\t34816 - 11904: 0xF2DB,\n\t34817 - 11904: 0xF0CE,\n\t34818 - 11904: 0xF2E8,\n\t34819 - 11904: 0xF2DD,\n\t34820 - 11904: 0x9E5E,\n\t34821 - 11904: 0xC3C7,\n\t34822 - 11904: 0xF2E3,\n\t34824 - 11904: 0xF2E5,\n\t34825 - 11904: 0xF2E0,\n\t34826 - 11904: 0xF2E7,\n\t34827 - 11904: 0xF2E2,\n\t34828 - 11904: 0xF2E1,\n\t34829 - 11904: 0xC3C8,\n\t34831 - 11904: 0xA063,\n\t34832 - 11904: 0xF4C5,\n\t34833 - 11904: 0xF4C6,\n\t34835 - 11904: 0xF4C8,\n\t34836 - 11904: 0xC4AE,\n\t34837 - 11904: 0xC4AF,\n\t34838 - 11904: 0xF4C9,\n\t34839 - 11904: 0xF4C7,\n\t34840 - 11904: 0x9FE8,\n\t34841 - 11904: 0xF4C4,\n\t34843 - 11904: 0xF642,\n\t34844 - 11904: 0xF645,\n\t34845 - 11904: 0xF641,\n\t34847 - 11904: 0xC4FA,\n\t34848 - 11904: 0xF643,\n\t34849 - 11904: 0xC4F9,\n\t34850 - 11904: 0xC4F8,\n\t34851 - 11904: 0xC4F7,\n\t34852 - 11904: 0xF644,\n\t34853 - 11904: 0xF751,\n\t34854 - 11904: 0xF74F,\n\t34855 - 11904: 0x9CB2,\n\t34856 - 11904: 0xF74E,\n\t34857 - 11904: 0xF640,\n\t34858 - 11904: 0xF750,\n\t34859 - 11904: 0xF646,\n\t34860 - 11904: 0xF74D,\n\t34861 - 11904: 0x957C,\n\t34862 - 11904: 0xF7F9,\n\t34863 - 11904: 0xF7D7,\n\t34864 - 11904: 0xF7F7,\n\t34865 - 11904: 0xC5DB,\n\t34866 - 11904: 0xF7F8,\n\t34867 - 11904: 0xF7FA,\n\t34869 - 11904: 0xF8BF,\n\t34870 - 11904: 0xC5FA,\n\t34871 - 11904: 0xF8BE,\n\t34872 - 11904: 0xF8BD,\n\t34873 - 11904: 0xC5FB,\n\t34875 - 11904: 0xC65A,\n\t34876 - 11904: 0xF96E,\n\t34877 - 11904: 0xF9A7,\n\t34878 - 11904: 0xF9A6,\n\t34879 - 11904: 0xF9A8,\n\t34880 - 11904: 0xA6E5,\n\t34881 - 11904: 0xD0AA,\n\t34882 - 11904: 0x9FC7,\n\t34883 - 11904: 0xD3CF,\n\t34884 - 11904: 0xD3D0,\n\t34885 - 11904: 0x8FBB,\n\t34886 - 11904: 0x8FBC,\n\t34888 - 11904: 0xDBC0,\n\t34890 - 11904: 0xF647,\n\t34891 - 11904: 0xF8C0,\n\t34892 - 11904: 0xA6E6,\n\t34893 - 11904: 0xAD6C,\n\t34894 - 11904: 0xD0AB,\n\t34895 - 11904: 0x8FEC,\n\t34898 - 11904: 0xD7B1,\n\t34899 - 11904: 0xB34E,\n\t34901 - 11904: 0xDBC2,\n\t34902 - 11904: 0xDBC1,\n\t34903 - 11904: 0xB5F3,\n\t34905 - 11904: 0xB8C5,\n\t34906 - 11904: 0xE7C1,\n\t34907 - 11904: 0xBDC3,\n\t34909 - 11904: 0xBDC4,\n\t34910 - 11904: 0x8FC0,\n\t34912 - 11904: 0x936A,\n\t34913 - 11904: 0xBFC5,\n\t34914 - 11904: 0xC5FC,\n\t34915 - 11904: 0xA6E7,\n\t34916 - 11904: 0x8BE4,\n\t34917 - 11904: 0x9C7C,\n\t34919 - 11904: 0xD0AC,\n\t34920 - 11904: 0xAAED,\n\t34921 - 11904: 0xD0AE,\n\t34922 - 11904: 0xD0AD,\n\t34923 - 11904: 0xAD6D,\n\t34925 - 11904: 0xD3D1,\n\t34926 - 11904: 0x95A1,\n\t34927 - 11904: 0xD3D8,\n\t34928 - 11904: 0xB049,\n\t34929 - 11904: 0xD3D6,\n\t34930 - 11904: 0xD3D4,\n\t34932 - 11904: 0xD3DB,\n\t34933 - 11904: 0xD3D2,\n\t34934 - 11904: 0xD3D3,\n\t34935 - 11904: 0xB04A,\n\t34937 - 11904: 0xB04E,\n\t34940 - 11904: 0xD3DC,\n\t34941 - 11904: 0xB04D,\n\t34942 - 11904: 0xD3DA,\n\t34943 - 11904: 0xD3D7,\n\t34944 - 11904: 0xD3D5,\n\t34945 - 11904: 0xB04B,\n\t34946 - 11904: 0xB04C,\n\t34947 - 11904: 0xD3D9,\n\t34948 - 11904: 0xFEEC,\n\t34951 - 11904: 0x95A3,\n\t34952 - 11904: 0xB350,\n\t34953 - 11904: 0xD7B2,\n\t34955 - 11904: 0xB355,\n\t34956 - 11904: 0xD7C2,\n\t34957 - 11904: 0xB354,\n\t34958 - 11904: 0xD7C4,\n\t34959 - 11904: 0x8C45,\n\t34960 - 11904: 0x8CB8,\n\t34961 - 11904: 0xD7B8,\n\t34962 - 11904: 0xB352,\n\t34963 - 11904: 0xD7C3,\n\t34965 - 11904: 0xD7B3,\n\t34966 - 11904: 0xB353,\n\t34967 - 11904: 0xD7BF,\n\t34968 - 11904: 0xD7BB,\n\t34969 - 11904: 0xD7BD,\n\t34970 - 11904: 0xD7B7,\n\t34971 - 11904: 0xD7BE,\n\t34972 - 11904: 0x8FC1,\n\t34973 - 11904: 0x87B7,\n\t34974 - 11904: 0xB34F,\n\t34975 - 11904: 0xD7BA,\n\t34976 - 11904: 0xA052,\n\t34977 - 11904: 0xD7B9,\n\t34978 - 11904: 0xD7B5,\n\t34980 - 11904: 0xD7C0,\n\t34983 - 11904: 0xD7BC,\n\t34984 - 11904: 0xD7B4,\n\t34986 - 11904: 0xD7B6,\n\t34987 - 11904: 0xB351,\n\t34988 - 11904: 0xD7C1,\n\t34990 - 11904: 0x99D0,\n\t34993 - 11904: 0xB5F6,\n\t34994 - 11904: 0xDBCD,\n\t34996 - 11904: 0x8FC3,\n\t34997 - 11904: 0x8FC4,\n\t34998 - 11904: 0xDBC9,\n\t34999 - 11904: 0xDBCB,\n\t35000 - 11904: 0xDBC6,\n\t35001 - 11904: 0xDBC5,\n\t35002 - 11904: 0xDBC3,\n\t35004 - 11904: 0xDBCA,\n\t35005 - 11904: 0xDBCC,\n\t35006 - 11904: 0xDBC8,\n\t35007 - 11904: 0x95A4,\n\t35008 - 11904: 0xDBC7,\n\t35009 - 11904: 0xB5F4,\n\t35010 - 11904: 0xB5F5,\n\t35013 - 11904: 0x8FC6,\n\t35015 - 11904: 0x9E60,\n\t35017 - 11904: 0xDBCF,\n\t35018 - 11904: 0xB8CD,\n\t35019 - 11904: 0xDFF2,\n\t35020 - 11904: 0xDFF8,\n\t35021 - 11904: 0xDFF3,\n\t35022 - 11904: 0xDFF4,\n\t35023 - 11904: 0xF9D8,\n\t35024 - 11904: 0xDFF9,\n\t35026 - 11904: 0xB8CF,\n\t35028 - 11904: 0xB8C7,\n\t35029 - 11904: 0xB8CE,\n\t35030 - 11904: 0xDFF1,\n\t35031 - 11904: 0xDBC4,\n\t35032 - 11904: 0xB8CA,\n\t35033 - 11904: 0xB8C8,\n\t35034 - 11904: 0xDFF7,\n\t35035 - 11904: 0xDFF6,\n\t35036 - 11904: 0xB8C9,\n\t35037 - 11904: 0xB8CB,\n\t35038 - 11904: 0xDFF5,\n\t35039 - 11904: 0xB8C6,\n\t35041 - 11904: 0xB8CC,\n\t35046 - 11904: 0x95A5,\n\t35047 - 11904: 0xE3F6,\n\t35048 - 11904: 0xBB74,\n\t35051 - 11904: 0xE442,\n\t35052 - 11904: 0xE441,\n\t35054 - 11904: 0xE3FB,\n\t35055 - 11904: 0xBB76,\n\t35056 - 11904: 0xE440,\n\t35057 - 11904: 0xE3F7,\n\t35058 - 11904: 0xE3F8,\n\t35059 - 11904: 0xBB6E,\n\t35060 - 11904: 0xBB70,\n\t35061 - 11904: 0x9CB3,\n\t35062 - 11904: 0xE3FD,\n\t35063 - 11904: 0xE3F5,\n\t35064 - 11904: 0xBB72,\n\t35065 - 11904: 0xBB71,\n\t35066 - 11904: 0xE3F9,\n\t35067 - 11904: 0xE3FE,\n\t35068 - 11904: 0xE3FC,\n\t35069 - 11904: 0xBB73,\n\t35070 - 11904: 0xE3FA,\n\t35071 - 11904: 0x99D1,\n\t35072 - 11904: 0xFEF1,\n\t35073 - 11904: 0xDBCE,\n\t35074 - 11904: 0xBB6F,\n\t35077 - 11904: 0xE7C2,\n\t35078 - 11904: 0xE7C9,\n\t35079 - 11904: 0xBDC6,\n\t35081 - 11904: 0xE7CD,\n\t35082 - 11904: 0xBDCA,\n\t35083 - 11904: 0xE7C5,\n\t35084 - 11904: 0xE7C3,\n\t35086 - 11904: 0xE7CC,\n\t35088 - 11904: 0xBDC5,\n\t35089 - 11904: 0xE7CB,\n\t35090 - 11904: 0xBDC7,\n\t35091 - 11904: 0xBDC8,\n\t35092 - 11904: 0xE7C4,\n\t35093 - 11904: 0xBDC9,\n\t35094 - 11904: 0xE7CA,\n\t35095 - 11904: 0xE7C6,\n\t35096 - 11904: 0xE7C7,\n\t35097 - 11904: 0xE7C8,\n\t35098 - 11904: 0xBB75,\n\t35102 - 11904: 0xEB70,\n\t35103 - 11904: 0xEB7C,\n\t35105 - 11904: 0xBFCA,\n\t35106 - 11904: 0xEB77,\n\t35107 - 11904: 0xEB79,\n\t35108 - 11904: 0x99D2,\n\t35109 - 11904: 0xBFC8,\n\t35110 - 11904: 0xEB71,\n\t35111 - 11904: 0xEB75,\n\t35113 - 11904: 0xEB78,\n\t35114 - 11904: 0xBFC6,\n\t35115 - 11904: 0xBFC9,\n\t35116 - 11904: 0xEB7B,\n\t35117 - 11904: 0xEB73,\n\t35118 - 11904: 0xEB74,\n\t35119 - 11904: 0xEB7A,\n\t35120 - 11904: 0xEB72,\n\t35121 - 11904: 0xEB76,\n\t35122 - 11904: 0xBFC7,\n\t35123 - 11904: 0xEE72,\n\t35125 - 11904: 0xEE71,\n\t35126 - 11904: 0xC1B7,\n\t35127 - 11904: 0xEE77,\n\t35128 - 11904: 0xC1B9,\n\t35131 - 11904: 0xC1B6,\n\t35132 - 11904: 0xEE73,\n\t35133 - 11904: 0xC1BA,\n\t35134 - 11904: 0xEE74,\n\t35137 - 11904: 0xEE75,\n\t35138 - 11904: 0xEE78,\n\t35139 - 11904: 0x9CC2,\n\t35140 - 11904: 0xC1B8,\n\t35142 - 11904: 0xF0D6,\n\t35143 - 11904: 0x99D3,\n\t35145 - 11904: 0xF0D9,\n\t35147 - 11904: 0xF0D3,\n\t35148 - 11904: 0xF0D5,\n\t35149 - 11904: 0x95A7,\n\t35151 - 11904: 0xF0D4,\n\t35152 - 11904: 0xF0D7,\n\t35153 - 11904: 0xF0D8,\n\t35154 - 11904: 0xEE76,\n\t35155 - 11904: 0xF0D2,\n\t35156 - 11904: 0x95A9,\n\t35158 - 11904: 0xC3CD,\n\t35159 - 11904: 0xF2EC,\n\t35160 - 11904: 0xF2EF,\n\t35161 - 11904: 0xF2F1,\n\t35162 - 11904: 0xF2EA,\n\t35163 - 11904: 0xF2EB,\n\t35164 - 11904: 0xF2EE,\n\t35165 - 11904: 0xF2F0,\n\t35166 - 11904: 0xC3CE,\n\t35167 - 11904: 0xC3CC,\n\t35168 - 11904: 0xC3CB,\n\t35169 - 11904: 0xF2ED,\n\t35170 - 11904: 0xF2E9,\n\t35171 - 11904: 0xF4CA,\n\t35172 - 11904: 0xC4B0,\n\t35173 - 11904: 0x95A6,\n\t35174 - 11904: 0xF4CB,\n\t35177 - 11904: 0xF649,\n\t35178 - 11904: 0xC4FB,\n\t35179 - 11904: 0xF64B,\n\t35180 - 11904: 0xC4FC,\n\t35181 - 11904: 0xF648,\n\t35182 - 11904: 0xF64A,\n\t35183 - 11904: 0xC5A8,\n\t35185 - 11904: 0xF752,\n\t35186 - 11904: 0xC5A7,\n\t35187 - 11904: 0xF7FD,\n\t35188 - 11904: 0xF7FC,\n\t35190 - 11904: 0xF7FB,\n\t35191 - 11904: 0x9C5D,\n\t35193 - 11904: 0xF948,\n\t35194 - 11904: 0xF949,\n\t35195 - 11904: 0xF94B,\n\t35196 - 11904: 0xF94A,\n\t35198 - 11904: 0xCA50,\n\t35199 - 11904: 0xA6E8,\n\t35200 - 11904: 0x98E2,\n\t35201 - 11904: 0xAD6E,\n\t35202 - 11904: 0xD7C5,\n\t35203 - 11904: 0xB5F7,\n\t35205 - 11904: 0xDFFA,\n\t35206 - 11904: 0xC2D0,\n\t35207 - 11904: 0x8FC9,\n\t35208 - 11904: 0xF2F2,\n\t35209 - 11904: 0xA0C2,\n\t35210 - 11904: 0x8FCA,\n\t35211 - 11904: 0xA8A3,\n\t35215 - 11904: 0xB357,\n\t35217 - 11904: 0x99D4,\n\t35219 - 11904: 0xB356,\n\t35220 - 11904: 0xA0B9,\n\t35221 - 11904: 0xDBD0,\n\t35222 - 11904: 0xB5F8,\n\t35223 - 11904: 0xDBD2,\n\t35224 - 11904: 0xDBD1,\n\t35227 - 11904: 0xDFFB,\n\t35228 - 11904: 0xB8D0,\n\t35229 - 11904: 0xE443,\n\t35230 - 11904: 0xE446,\n\t35231 - 11904: 0xE445,\n\t35233 - 11904: 0xE444,\n\t35234 - 11904: 0xE7CE,\n\t35235 - 11904: 0xE7D0,\n\t35236 - 11904: 0xE7CF,\n\t35237 - 11904: 0x9B58,\n\t35238 - 11904: 0xBFCC,\n\t35239 - 11904: 0x8FCD,\n\t35241 - 11904: 0xA0D4,\n\t35242 - 11904: 0xBFCB,\n\t35244 - 11904: 0xC1BB,\n\t35245 - 11904: 0xEE79,\n\t35246 - 11904: 0xEE7B,\n\t35247 - 11904: 0xEE7A,\n\t35250 - 11904: 0xC2D1,\n\t35254 - 11904: 0xF2F4,\n\t35255 - 11904: 0xF2F3,\n\t35257 - 11904: 0xF4CC,\n\t35258 - 11904: 0xC4B1,\n\t35260 - 11904: 0x8FCE,\n\t35261 - 11904: 0xC4FD,\n\t35262 - 11904: 0xF754,\n\t35263 - 11904: 0xF753,\n\t35264 - 11904: 0xC65B,\n\t35265 - 11904: 0x8BE5,\n\t35270 - 11904: 0x8979,\n\t35282 - 11904: 0xA8A4,\n\t35283 - 11904: 0xD0AF,\n\t35284 - 11904: 0xAD6F,\n\t35285 - 11904: 0xD7C8,\n\t35286 - 11904: 0xD7C6,\n\t35289 - 11904: 0xD7C7,\n\t35290 - 11904: 0xDBD4,\n\t35291 - 11904: 0xDBD5,\n\t35292 - 11904: 0xE043,\n\t35293 - 11904: 0xDBD3,\n\t35295 - 11904: 0xDFFC,\n\t35296 - 11904: 0xE041,\n\t35297 - 11904: 0xE040,\n\t35298 - 11904: 0xE042,\n\t35299 - 11904: 0xB8D1,\n\t35300 - 11904: 0xDFFE,\n\t35301 - 11904: 0xDFFD,\n\t35302 - 11904: 0xE044,\n\t35303 - 11904: 0x8FD0,\n\t35304 - 11904: 0xE449,\n\t35305 - 11904: 0xE447,\n\t35307 - 11904: 0xE448,\n\t35308 - 11904: 0xE7D3,\n\t35309 - 11904: 0xE7D1,\n\t35312 - 11904: 0xE7D2,\n\t35313 - 11904: 0xEB7D,\n\t35314 - 11904: 0xEE7C,\n\t35315 - 11904: 0xEE7D,\n\t35316 - 11904: 0xC2D2,\n\t35318 - 11904: 0xF2F5,\n\t35319 - 11904: 0xF4CD,\n\t35320 - 11904: 0xC4B2,\n\t35322 - 11904: 0xF64C,\n\t35323 - 11904: 0xF755,\n\t35324 - 11904: 0xC5A9,\n\t35326 - 11904: 0xF7FE,\n\t35327 - 11904: 0xF94C,\n\t35328 - 11904: 0xA8A5,\n\t35330 - 11904: 0xAD71,\n\t35331 - 11904: 0xAD72,\n\t35332 - 11904: 0xD0B0,\n\t35335 - 11904: 0xD0B1,\n\t35336 - 11904: 0xAD70,\n\t35338 - 11904: 0xB054,\n\t35340 - 11904: 0xB052,\n\t35342 - 11904: 0xB051,\n\t35343 - 11904: 0xB058,\n\t35344 - 11904: 0xB050,\n\t35345 - 11904: 0xB059,\n\t35346 - 11904: 0xD3DD,\n\t35347 - 11904: 0xB056,\n\t35349 - 11904: 0xB053,\n\t35350 - 11904: 0xB057,\n\t35351 - 11904: 0xB055,\n\t35352 - 11904: 0xB04F,\n\t35355 - 11904: 0xB35F,\n\t35356 - 11904: 0x95B6,\n\t35357 - 11904: 0xB359,\n\t35358 - 11904: 0xD7CC,\n\t35359 - 11904: 0xB35E,\n\t35362 - 11904: 0xB360,\n\t35363 - 11904: 0xB35A,\n\t35365 - 11904: 0xB35B,\n\t35367 - 11904: 0xD7CA,\n\t35369 - 11904: 0x99D6,\n\t35370 - 11904: 0xB358,\n\t35371 - 11904: 0x95E5,\n\t35372 - 11904: 0xD7CB,\n\t35373 - 11904: 0xB35D,\n\t35376 - 11904: 0xD7C9,\n\t35377 - 11904: 0xB35C,\n\t35380 - 11904: 0xB644,\n\t35382 - 11904: 0xB646,\n\t35384 - 11904: 0x99D7,\n\t35385 - 11904: 0xDBD8,\n\t35386 - 11904: 0xB645,\n\t35387 - 11904: 0xB5F9,\n\t35388 - 11904: 0xB5FD,\n\t35389 - 11904: 0x95B5,\n\t35390 - 11904: 0xB8E4,\n\t35391 - 11904: 0xE049,\n\t35392 - 11904: 0xDBDA,\n\t35393 - 11904: 0xB5FE,\n\t35396 - 11904: 0xDBDD,\n\t35397 - 11904: 0xDBDE,\n\t35398 - 11904: 0xB643,\n\t35400 - 11904: 0xDBE0,\n\t35401 - 11904: 0xA0CA,\n\t35402 - 11904: 0xDBE2,\n\t35404 - 11904: 0xDBE3,\n\t35405 - 11904: 0xDBD7,\n\t35406 - 11904: 0xDBD6,\n\t35407 - 11904: 0xDBE4,\n\t35408 - 11904: 0xB642,\n\t35409 - 11904: 0xDBE1,\n\t35410 - 11904: 0xDBDF,\n\t35412 - 11904: 0xB640,\n\t35413 - 11904: 0xB5FB,\n\t35414 - 11904: 0xB647,\n\t35415 - 11904: 0xDBDB,\n\t35416 - 11904: 0xDBDC,\n\t35417 - 11904: 0xDBD9,\n\t35419 - 11904: 0xB641,\n\t35422 - 11904: 0xB5FC,\n\t35424 - 11904: 0xB5FA,\n\t35425 - 11904: 0xE048,\n\t35426 - 11904: 0xB8DF,\n\t35427 - 11904: 0xB8DA,\n\t35430 - 11904: 0xB8D5,\n\t35431 - 11904: 0x9FFD,\n\t35432 - 11904: 0xB8E5,\n\t35433 - 11904: 0xB8D6,\n\t35435 - 11904: 0xB8D2,\n\t35436 - 11904: 0xB8E1,\n\t35437 - 11904: 0xB8DE,\n\t35438 - 11904: 0xB8E0,\n\t35440 - 11904: 0xB8D7,\n\t35441 - 11904: 0xB8DC,\n\t35442 - 11904: 0xB8D3,\n\t35443 - 11904: 0xB8D4,\n\t35444 - 11904: 0xE050,\n\t35445 - 11904: 0xE04D,\n\t35446 - 11904: 0xE045,\n\t35447 - 11904: 0xE04A,\n\t35449 - 11904: 0xB8E2,\n\t35450 - 11904: 0xE051,\n\t35451 - 11904: 0xB8E3,\n\t35452 - 11904: 0xB8D9,\n\t35454 - 11904: 0xA058,\n\t35455 - 11904: 0xE047,\n\t35457 - 11904: 0xE04F,\n\t35458 - 11904: 0xE04B,\n\t35459 - 11904: 0xE04E,\n\t35460 - 11904: 0xE04C,\n\t35461 - 11904: 0xB8DD,\n\t35462 - 11904: 0xE046,\n\t35463 - 11904: 0xB8D8,\n\t35467 - 11904: 0xE44C,\n\t35468 - 11904: 0xBB78,\n\t35469 - 11904: 0xBB7B,\n\t35471 - 11904: 0xE44E,\n\t35472 - 11904: 0x8FD6,\n\t35473 - 11904: 0xBBA5,\n\t35474 - 11904: 0xE44D,\n\t35475 - 11904: 0xBB7D,\n\t35476 - 11904: 0x99D8,\n\t35477 - 11904: 0xBDCF,\n\t35478 - 11904: 0xE44F,\n\t35480 - 11904: 0xBBA4,\n\t35481 - 11904: 0xE44B,\n\t35482 - 11904: 0xBBA6,\n\t35484 - 11904: 0x8FD3,\n\t35486 - 11904: 0xBB79,\n\t35488 - 11904: 0xB8DB,\n\t35489 - 11904: 0xBB7C,\n\t35491 - 11904: 0xBB7A,\n\t35492 - 11904: 0xBB7E,\n\t35493 - 11904: 0xBBA2,\n\t35494 - 11904: 0xBB77,\n\t35495 - 11904: 0xBBA7,\n\t35496 - 11904: 0xBBA3,\n\t35497 - 11904: 0x8FE5,\n\t35498 - 11904: 0xBBA1,\n\t35499 - 11904: 0xE44A,\n\t35503 - 11904: 0x8FE9,\n\t35504 - 11904: 0xBDD6,\n\t35506 - 11904: 0xBDD2,\n\t35508 - 11904: 0x99D9,\n\t35510 - 11904: 0xBDD9,\n\t35512 - 11904: 0xE7D6,\n\t35513 - 11904: 0xBDDA,\n\t35514 - 11904: 0xE7E2,\n\t35515 - 11904: 0xE7DB,\n\t35516 - 11904: 0xBDCB,\n\t35517 - 11904: 0xE7E3,\n\t35518 - 11904: 0xE7DD,\n\t35519 - 11904: 0xBDD5,\n\t35520 - 11904: 0xE7DE,\n\t35522 - 11904: 0xBDD4,\n\t35523 - 11904: 0xE7E1,\n\t35524 - 11904: 0xBDCE,\n\t35525 - 11904: 0xE7DF,\n\t35526 - 11904: 0xE7D5,\n\t35527 - 11904: 0xBDCD,\n\t35528 - 11904: 0xEBAA,\n\t35529 - 11904: 0xBDD3,\n\t35531 - 11904: 0xBDD0,\n\t35532 - 11904: 0x8CF7,\n\t35533 - 11904: 0xBDD8,\n\t35535 - 11904: 0xE7D4,\n\t35537 - 11904: 0xE7D8,\n\t35538 - 11904: 0xBDCC,\n\t35539 - 11904: 0xE7D7,\n\t35540 - 11904: 0xE7D9,\n\t35541 - 11904: 0xE7DA,\n\t35542 - 11904: 0xBDD7,\n\t35543 - 11904: 0xE7DC,\n\t35544 - 11904: 0xE7E0,\n\t35545 - 11904: 0xE7E4,\n\t35546 - 11904: 0x927C,\n\t35547 - 11904: 0xBDDB,\n\t35548 - 11904: 0xBFD2,\n\t35549 - 11904: 0xEBA5,\n\t35550 - 11904: 0xEBAB,\n\t35551 - 11904: 0xEBA8,\n\t35552 - 11904: 0xEB7E,\n\t35553 - 11904: 0xEBAC,\n\t35554 - 11904: 0xEBA1,\n\t35556 - 11904: 0xEBA7,\n\t35558 - 11904: 0xBFCD,\n\t35559 - 11904: 0xBFD3,\n\t35560 - 11904: 0xEBAD,\n\t35562 - 11904: 0x9C45,\n\t35563 - 11904: 0xBFCF,\n\t35565 - 11904: 0xBFD9,\n\t35566 - 11904: 0xBFD4,\n\t35567 - 11904: 0xEBAF,\n\t35568 - 11904: 0xEBA9,\n\t35569 - 11904: 0xBFD0,\n\t35570 - 11904: 0xEBA2,\n\t35571 - 11904: 0xBFDA,\n\t35572 - 11904: 0xEBA3,\n\t35573 - 11904: 0xEBA4,\n\t35574 - 11904: 0xBFDB,\n\t35575 - 11904: 0xBFD8,\n\t35576 - 11904: 0xBDD1,\n\t35577 - 11904: 0x8CE8,\n\t35578 - 11904: 0xBFCE,\n\t35579 - 11904: 0xEBB0,\n\t35580 - 11904: 0xBFDC,\n\t35582 - 11904: 0xBFD5,\n\t35583 - 11904: 0xEBAE,\n\t35584 - 11904: 0xBFD1,\n\t35585 - 11904: 0xBFD6,\n\t35586 - 11904: 0xBFD7,\n\t35588 - 11904: 0xC1C3,\n\t35589 - 11904: 0xEEA4,\n\t35590 - 11904: 0xEEAD,\n\t35591 - 11904: 0xEEAA,\n\t35592 - 11904: 0xEEAC,\n\t35594 - 11904: 0xC1C0,\n\t35595 - 11904: 0xEEA5,\n\t35596 - 11904: 0x8FDE,\n\t35597 - 11904: 0xEEAB,\n\t35598 - 11904: 0xC1BC,\n\t35599 - 11904: 0xEEA7,\n\t35600 - 11904: 0xC1C4,\n\t35601 - 11904: 0xEEA3,\n\t35602 - 11904: 0xEEA8,\n\t35603 - 11904: 0xEEAF,\n\t35604 - 11904: 0xEBA6,\n\t35605 - 11904: 0xEEA9,\n\t35606 - 11904: 0xEEA2,\n\t35607 - 11904: 0xC1BD,\n\t35608 - 11904: 0xEEA1,\n\t35609 - 11904: 0xC1BE,\n\t35610 - 11904: 0xEEB0,\n\t35611 - 11904: 0xC1BF,\n\t35612 - 11904: 0xEEAE,\n\t35613 - 11904: 0xC1C2,\n\t35614 - 11904: 0xEE7E,\n\t35615 - 11904: 0x8FDF,\n\t35616 - 11904: 0xC1C1,\n\t35618 - 11904: 0xEEA6,\n\t35619 - 11904: 0xF0DC,\n\t35620 - 11904: 0xF0EA,\n\t35621 - 11904: 0xF0E5,\n\t35622 - 11904: 0xF0E7,\n\t35623 - 11904: 0xF0DB,\n\t35624 - 11904: 0xC2D3,\n\t35626 - 11904: 0xF0DA,\n\t35627 - 11904: 0xC2D6,\n\t35628 - 11904: 0xC2D5,\n\t35629 - 11904: 0xA04B,\n\t35630 - 11904: 0xF0E9,\n\t35631 - 11904: 0xF0E1,\n\t35632 - 11904: 0xF0DE,\n\t35633 - 11904: 0xF0E4,\n\t35635 - 11904: 0xF0DD,\n\t35637 - 11904: 0xF0DF,\n\t35638 - 11904: 0xF0E8,\n\t35639 - 11904: 0xF0E6,\n\t35641 - 11904: 0xC2D4,\n\t35642 - 11904: 0xF0ED,\n\t35643 - 11904: 0xF0EB,\n\t35644 - 11904: 0xF0E2,\n\t35645 - 11904: 0xF0EC,\n\t35646 - 11904: 0xF0E3,\n\t35647 - 11904: 0x8FE2,\n\t35648 - 11904: 0xF2F9,\n\t35649 - 11904: 0xC3CF,\n\t35650 - 11904: 0xF341,\n\t35651 - 11904: 0xA0CC,\n\t35653 - 11904: 0xF64F,\n\t35654 - 11904: 0xC3D6,\n\t35655 - 11904: 0xF0E0,\n\t35656 - 11904: 0xF2F7,\n\t35657 - 11904: 0xC3D2,\n\t35658 - 11904: 0xF2F8,\n\t35659 - 11904: 0xF2FD,\n\t35660 - 11904: 0x8FE3,\n\t35661 - 11904: 0x8FE4,\n\t35662 - 11904: 0xC3D4,\n\t35663 - 11904: 0xC3D5,\n\t35664 - 11904: 0xF2F6,\n\t35665 - 11904: 0xF340,\n\t35666 - 11904: 0xF342,\n\t35667 - 11904: 0xF2FA,\n\t35668 - 11904: 0xF2FC,\n\t35669 - 11904: 0xF2FE,\n\t35670 - 11904: 0xF2FB,\n\t35671 - 11904: 0xF343,\n\t35672 - 11904: 0xC3D1,\n\t35673 - 11904: 0xC3D7,\n\t35674 - 11904: 0xC3D3,\n\t35676 - 11904: 0xC3D0,\n\t35677 - 11904: 0xF4D0,\n\t35678 - 11904: 0x9BC4,\n\t35679 - 11904: 0xC4B7,\n\t35680 - 11904: 0xF4CE,\n\t35682 - 11904: 0x9BFC,\n\t35683 - 11904: 0xF4D2,\n\t35685 - 11904: 0xF4D3,\n\t35686 - 11904: 0xC4B5,\n\t35687 - 11904: 0xF4D4,\n\t35688 - 11904: 0xF4D1,\n\t35689 - 11904: 0x964C,\n\t35690 - 11904: 0xF4CF,\n\t35691 - 11904: 0xC4B8,\n\t35692 - 11904: 0xC4B4,\n\t35693 - 11904: 0xF4D5,\n\t35695 - 11904: 0xC4B6,\n\t35696 - 11904: 0xC4B3,\n\t35700 - 11904: 0xC4FE,\n\t35703 - 11904: 0xC540,\n\t35704 - 11904: 0xF64E,\n\t35705 - 11904: 0xF64D,\n\t35706 - 11904: 0xF650,\n\t35707 - 11904: 0xF651,\n\t35709 - 11904: 0xC541,\n\t35710 - 11904: 0xF756,\n\t35711 - 11904: 0xF75B,\n\t35712 - 11904: 0xC5AA,\n\t35713 - 11904: 0x9AF6,\n\t35714 - 11904: 0xF758,\n\t35715 - 11904: 0x8CAE,\n\t35716 - 11904: 0xF757,\n\t35717 - 11904: 0xF75A,\n\t35718 - 11904: 0xF759,\n\t35720 - 11904: 0xF843,\n\t35722 - 11904: 0xC5DC,\n\t35723 - 11904: 0xF842,\n\t35724 - 11904: 0xF840,\n\t35726 - 11904: 0xF841,\n\t35727 - 11904: 0x87CB,\n\t35728 - 11904: 0x8FE7,\n\t35730 - 11904: 0xC5FE,\n\t35731 - 11904: 0xC5FD,\n\t35732 - 11904: 0xF8C1,\n\t35733 - 11904: 0xF8C2,\n\t35734 - 11904: 0xC640,\n\t35736 - 11904: 0xF94D,\n\t35737 - 11904: 0xF94E,\n\t35738 - 11904: 0xC667,\n\t35739 - 11904: 0x8FE8,\n\t35740 - 11904: 0xC66D,\n\t35742 - 11904: 0xF9A9,\n\t35743 - 11904: 0xF9C8,\n\t35744 - 11904: 0x8BE7,\n\t35774 - 11904: 0x897A,\n\t35810 - 11904: 0x897B,\n\t35895 - 11904: 0xA8A6,\n\t35897 - 11904: 0xD7CD,\n\t35899 - 11904: 0xD7CE,\n\t35900 - 11904: 0xE052,\n\t35901 - 11904: 0xE450,\n\t35902 - 11904: 0xE7E5,\n\t35903 - 11904: 0xC1C6,\n\t35905 - 11904: 0xC1C5,\n\t35906 - 11904: 0xF0EE,\n\t35907 - 11904: 0xF344,\n\t35909 - 11904: 0xF844,\n\t35910 - 11904: 0xA8A7,\n\t35911 - 11904: 0xD3DE,\n\t35912 - 11904: 0xB05A,\n\t35913 - 11904: 0xB361,\n\t35914 - 11904: 0xE054,\n\t35915 - 11904: 0xE053,\n\t35916 - 11904: 0xBDDC,\n\t35917 - 11904: 0xE7E6,\n\t35918 - 11904: 0xBDDD,\n\t35919 - 11904: 0xEEB1,\n\t35920 - 11904: 0xC2D7,\n\t35921 - 11904: 0x99DA,\n\t35924 - 11904: 0xC676,\n\t35925 - 11904: 0xA8A8,\n\t35926 - 11904: 0xCDCB,\n\t35927 - 11904: 0xD3DF,\n\t35930 - 11904: 0xB362,\n\t35932 - 11904: 0xD7CF,\n\t35933 - 11904: 0xD7D0,\n\t35935 - 11904: 0xDBE5,\n\t35937 - 11904: 0xB648,\n\t35938 - 11904: 0xB8E6,\n\t35940 - 11904: 0xE056,\n\t35941 - 11904: 0xE055,\n\t35942 - 11904: 0xE057,\n\t35944 - 11904: 0xE451,\n\t35945 - 11904: 0xE452,\n\t35946 - 11904: 0xBBA8,\n\t35947 - 11904: 0xBFDD,\n\t35948 - 11904: 0xBDDE,\n\t35949 - 11904: 0xBFDE,\n\t35951 - 11904: 0xEEB5,\n\t35952 - 11904: 0xEEB2,\n\t35953 - 11904: 0xEEB4,\n\t35954 - 11904: 0xEEB3,\n\t35955 - 11904: 0xC1C7,\n\t35957 - 11904: 0xF0EF,\n\t35958 - 11904: 0xF346,\n\t35959 - 11904: 0xF345,\n\t35960 - 11904: 0xCBA4,\n\t35961 - 11904: 0xB05C,\n\t35962 - 11904: 0xB05B,\n\t35963 - 11904: 0xD3E0,\n\t35965 - 11904: 0xD7D1,\n\t35968 - 11904: 0xDBE7,\n\t35969 - 11904: 0xDBE6,\n\t35970 - 11904: 0xB649,\n\t35972 - 11904: 0xE059,\n\t35973 - 11904: 0xE05A,\n\t35974 - 11904: 0xE058,\n\t35977 - 11904: 0xB8E8,\n\t35978 - 11904: 0xB8E7,\n\t35980 - 11904: 0xBBAA,\n\t35981 - 11904: 0xBBA9,\n\t35983 - 11904: 0xE7E7,\n\t35984 - 11904: 0xEBB3,\n\t35985 - 11904: 0xEBB1,\n\t35986 - 11904: 0xEBB2,\n\t35987 - 11904: 0xBFDF,\n\t35988 - 11904: 0xEEB7,\n\t35989 - 11904: 0xEEB6,\n\t35991 - 11904: 0xF0F2,\n\t35992 - 11904: 0xF0F1,\n\t35993 - 11904: 0xF0F0,\n\t35994 - 11904: 0xF347,\n\t35995 - 11904: 0x8FED,\n\t35996 - 11904: 0xF9AA,\n\t35997 - 11904: 0xA8A9,\n\t35998 - 11904: 0xAD73,\n\t35999 - 11904: 0x95C0,\n\t36000 - 11904: 0xAD74,\n\t36001 - 11904: 0xB05D,\n\t36002 - 11904: 0xB05E,\n\t36003 - 11904: 0xD3E2,\n\t36004 - 11904: 0xD3E1,\n\t36005 - 11904: 0xD7D2,\n\t36007 - 11904: 0xB368,\n\t36008 - 11904: 0xB366,\n\t36009 - 11904: 0xB363,\n\t36010 - 11904: 0xB367,\n\t36011 - 11904: 0xB365,\n\t36012 - 11904: 0xB364,\n\t36013 - 11904: 0xA0CB,\n\t36015 - 11904: 0xB64A,\n\t36016 - 11904: 0xDBEA,\n\t36018 - 11904: 0xB8ED,\n\t36019 - 11904: 0xB64C,\n\t36020 - 11904: 0xB651,\n\t36021 - 11904: 0xDBEC,\n\t36022 - 11904: 0xB653,\n\t36023 - 11904: 0xB652,\n\t36024 - 11904: 0xB655,\n\t36025 - 11904: 0xDBEB,\n\t36026 - 11904: 0xDBE8,\n\t36027 - 11904: 0xB64F,\n\t36028 - 11904: 0xB64B,\n\t36029 - 11904: 0xB64D,\n\t36030 - 11904: 0xDBE9,\n\t36031 - 11904: 0xB654,\n\t36032 - 11904: 0xB650,\n\t36033 - 11904: 0xB64E,\n\t36034 - 11904: 0xB8EF,\n\t36035 - 11904: 0xB8EE,\n\t36036 - 11904: 0xB8EC,\n\t36037 - 11904: 0xB8F0,\n\t36039 - 11904: 0xB8EA,\n\t36040 - 11904: 0xB8EB,\n\t36042 - 11904: 0xB8E9,\n\t36044 - 11904: 0xE05B,\n\t36045 - 11904: 0x9E48,\n\t36047 - 11904: 0xE454,\n\t36049 - 11904: 0xBBAC,\n\t36050 - 11904: 0xBBAD,\n\t36051 - 11904: 0xBBAB,\n\t36052 - 11904: 0x99DB,\n\t36053 - 11904: 0xE453,\n\t36054 - 11904: 0x8FF3,\n\t36055 - 11904: 0xE455,\n\t36057 - 11904: 0xE7EA,\n\t36058 - 11904: 0xE7EC,\n\t36059 - 11904: 0x8FF9,\n\t36060 - 11904: 0xBDE7,\n\t36061 - 11904: 0xE7ED,\n\t36062 - 11904: 0xBDE0,\n\t36063 - 11904: 0xE7E9,\n\t36064 - 11904: 0xBDDF,\n\t36065 - 11904: 0xBDE9,\n\t36066 - 11904: 0xBDE5,\n\t36067 - 11904: 0xBDE6,\n\t36068 - 11904: 0xBDE2,\n\t36069 - 11904: 0xE7E8,\n\t36070 - 11904: 0xBDE1,\n\t36071 - 11904: 0xE7EE,\n\t36072 - 11904: 0xE7EB,\n\t36073 - 11904: 0x95C1,\n\t36074 - 11904: 0xBDE8,\n\t36075 - 11904: 0xA04E,\n\t36076 - 11904: 0xBDE3,\n\t36077 - 11904: 0xBDE4,\n\t36078 - 11904: 0xEBB5,\n\t36080 - 11904: 0xEBB7,\n\t36081 - 11904: 0xEBB6,\n\t36082 - 11904: 0x99DC,\n\t36083 - 11904: 0xEBB8,\n\t36084 - 11904: 0xBFE0,\n\t36085 - 11904: 0xEBB4,\n\t36087 - 11904: 0xA064,\n\t36088 - 11904: 0xC1CB,\n\t36089 - 11904: 0xEEB8,\n\t36090 - 11904: 0xC1C8,\n\t36091 - 11904: 0xC1CC,\n\t36092 - 11904: 0xC1CA,\n\t36093 - 11904: 0xC1C9,\n\t36094 - 11904: 0xF0F3,\n\t36096 - 11904: 0xF0F6,\n\t36098 - 11904: 0xF0F5,\n\t36099 - 11904: 0x8FF7,\n\t36100 - 11904: 0xF0F4,\n\t36101 - 11904: 0xC2D8,\n\t36102 - 11904: 0xF348,\n\t36103 - 11904: 0xF349,\n\t36104 - 11904: 0xC3D8,\n\t36105 - 11904: 0xF34A,\n\t36106 - 11904: 0xC3D9,\n\t36107 - 11904: 0x89B0,\n\t36108 - 11904: 0xA048,\n\t36109 - 11904: 0xC4BA,\n\t36111 - 11904: 0xC4B9,\n\t36112 - 11904: 0xF652,\n\t36113 - 11904: 0x8FFB,\n\t36114 - 11904: 0x8FF6,\n\t36115 - 11904: 0xC542,\n\t36116 - 11904: 0xF653,\n\t36117 - 11904: 0xF75C,\n\t36118 - 11904: 0xC5AB,\n\t36119 - 11904: 0xC5AC,\n\t36120 - 11904: 0x9DDC,\n\t36121 - 11904: 0xF845,\n\t36123 - 11904: 0xC642,\n\t36124 - 11904: 0x99DD,\n\t36125 - 11904: 0x8BE8,\n\t36196 - 11904: 0xA8AA,\n\t36198 - 11904: 0xB36A,\n\t36199 - 11904: 0xB369,\n\t36200 - 11904: 0xE05C,\n\t36201 - 11904: 0xE05D,\n\t36203 - 11904: 0xBBAE,\n\t36204 - 11904: 0xEBB9,\n\t36205 - 11904: 0xBDEA,\n\t36206 - 11904: 0xEBBA,\n\t36207 - 11904: 0xEEB9,\n\t36208 - 11904: 0xA8AB,\n\t36210 - 11904: 0xD0B2,\n\t36211 - 11904: 0xAD76,\n\t36212 - 11904: 0xAD75,\n\t36214 - 11904: 0xD3E3,\n\t36215 - 11904: 0xB05F,\n\t36216 - 11904: 0xD3E4,\n\t36217 - 11904: 0xD7D5,\n\t36218 - 11904: 0x92C1,\n\t36219 - 11904: 0xD7D4,\n\t36221 - 11904: 0xD7D3,\n\t36224 - 11904: 0xDBEE,\n\t36225 - 11904: 0xB658,\n\t36226 - 11904: 0x9FD6,\n\t36228 - 11904: 0xDBED,\n\t36229 - 11904: 0xB657,\n\t36233 - 11904: 0xDBEF,\n\t36234 - 11904: 0xB656,\n\t36236 - 11904: 0xE05F,\n\t36237 - 11904: 0xE062,\n\t36238 - 11904: 0xE060,\n\t36239 - 11904: 0xE061,\n\t36240 - 11904: 0xE065,\n\t36241 - 11904: 0xE05E,\n\t36242 - 11904: 0xE066,\n\t36243 - 11904: 0xE063,\n\t36244 - 11904: 0xE064,\n\t36245 - 11904: 0xBBB0,\n\t36246 - 11904: 0xE456,\n\t36249 - 11904: 0xBBAF,\n\t36251 - 11904: 0xE7F2,\n\t36252 - 11904: 0xE7F0,\n\t36255 - 11904: 0xBDEB,\n\t36256 - 11904: 0xE7EF,\n\t36257 - 11904: 0xE7F1,\n\t36259 - 11904: 0xBDEC,\n\t36261 - 11904: 0xEBBB,\n\t36262 - 11904: 0xA0D2,\n\t36263 - 11904: 0xEBBC,\n\t36264 - 11904: 0xC1CD,\n\t36265 - 11904: 0x9040,\n\t36266 - 11904: 0xF34C,\n\t36267 - 11904: 0xF34E,\n\t36268 - 11904: 0xF34B,\n\t36269 - 11904: 0xF34D,\n\t36270 - 11904: 0xF4D6,\n\t36271 - 11904: 0xF654,\n\t36274 - 11904: 0xF96F,\n\t36275 - 11904: 0xA8AC,\n\t36276 - 11904: 0xAD77,\n\t36277 - 11904: 0xD3E5,\n\t36278 - 11904: 0xD3E7,\n\t36279 - 11904: 0xD3E6,\n\t36281 - 11904: 0xD7D8,\n\t36282 - 11904: 0xB36C,\n\t36284 - 11904: 0xD7D6,\n\t36286 - 11904: 0xB36B,\n\t36287 - 11904: 0xD7D9,\n\t36288 - 11904: 0x8AC4,\n\t36289 - 11904: 0xD7DA,\n\t36290 - 11904: 0xD7D7,\n\t36291 - 11904: 0x99E0,\n\t36293 - 11904: 0xDBFB,\n\t36294 - 11904: 0xB660,\n\t36295 - 11904: 0xDBF3,\n\t36296 - 11904: 0xDBF9,\n\t36299 - 11904: 0xB65B,\n\t36300 - 11904: 0xB65E,\n\t36301 - 11904: 0xDBF2,\n\t36302 - 11904: 0xB659,\n\t36303 - 11904: 0xDBF6,\n\t36304 - 11904: 0xE06C,\n\t36305 - 11904: 0xB65D,\n\t36307 - 11904: 0xDBF1,\n\t36308 - 11904: 0x9FF0,\n\t36309 - 11904: 0xDBF7,\n\t36310 - 11904: 0xDBF4,\n\t36311 - 11904: 0xDBFA,\n\t36312 - 11904: 0xDBF0,\n\t36313 - 11904: 0xDBF8,\n\t36314 - 11904: 0xB65C,\n\t36315 - 11904: 0xB65F,\n\t36316 - 11904: 0xDBF5,\n\t36317 - 11904: 0xB65A,\n\t36319 - 11904: 0xB8F2,\n\t36320 - 11904: 0xE068,\n\t36321 - 11904: 0xB8F1,\n\t36322 - 11904: 0xE06F,\n\t36323 - 11904: 0xE06E,\n\t36324 - 11904: 0xB8F8,\n\t36326 - 11904: 0xB8F9,\n\t36327 - 11904: 0xE070,\n\t36328 - 11904: 0xB8F3,\n\t36329 - 11904: 0xE06D,\n\t36330 - 11904: 0xB8F7,\n\t36331 - 11904: 0xE072,\n\t36332 - 11904: 0xE069,\n\t36334 - 11904: 0xE06B,\n\t36335 - 11904: 0xB8F4,\n\t36336 - 11904: 0xE067,\n\t36337 - 11904: 0xE06A,\n\t36338 - 11904: 0xE071,\n\t36339 - 11904: 0xB8F5,\n\t36340 - 11904: 0xE073,\n\t36346 - 11904: 0xB8F6,\n\t36348 - 11904: 0xBBB1,\n\t36349 - 11904: 0xE45B,\n\t36350 - 11904: 0xE461,\n\t36351 - 11904: 0xE459,\n\t36352 - 11904: 0xE462,\n\t36353 - 11904: 0x9FF3,\n\t36354 - 11904: 0xE458,\n\t36355 - 11904: 0xE45D,\n\t36356 - 11904: 0xE463,\n\t36357 - 11904: 0xE460,\n\t36358 - 11904: 0xE45F,\n\t36359 - 11904: 0xE45E,\n\t36361 - 11904: 0xE457,\n\t36362 - 11904: 0xE45C,\n\t36365 - 11904: 0xE45A,\n\t36366 - 11904: 0x9DBF,\n\t36367 - 11904: 0xBDF1,\n\t36368 - 11904: 0xBDEE,\n\t36369 - 11904: 0xE7FB,\n\t36370 - 11904: 0xE841,\n\t36371 - 11904: 0xE843,\n\t36372 - 11904: 0xE840,\n\t36373 - 11904: 0xE7F8,\n\t36374 - 11904: 0xE7FA,\n\t36375 - 11904: 0xE845,\n\t36376 - 11904: 0xE842,\n\t36377 - 11904: 0xE7FC,\n\t36378 - 11904: 0xE846,\n\t36379 - 11904: 0xE7F9,\n\t36380 - 11904: 0xE844,\n\t36381 - 11904: 0xBDEF,\n\t36382 - 11904: 0xBDF5,\n\t36383 - 11904: 0xBDF3,\n\t36384 - 11904: 0xE7F3,\n\t36385 - 11904: 0xBDF4,\n\t36386 - 11904: 0xBDF0,\n\t36387 - 11904: 0xE7F4,\n\t36388 - 11904: 0xE7F6,\n\t36389 - 11904: 0xE7F5,\n\t36390 - 11904: 0xE7FD,\n\t36391 - 11904: 0xE7FE,\n\t36392 - 11904: 0x9FF6,\n\t36393 - 11904: 0xBDF2,\n\t36394 - 11904: 0x95C8,\n\t36395 - 11904: 0xBDED,\n\t36397 - 11904: 0x9E5A,\n\t36398 - 11904: 0xE7F7,\n\t36400 - 11904: 0xEBC6,\n\t36401 - 11904: 0xBFE2,\n\t36403 - 11904: 0xEBBD,\n\t36404 - 11904: 0xBFE3,\n\t36405 - 11904: 0xBFE6,\n\t36406 - 11904: 0xEBC2,\n\t36408 - 11904: 0xEBBF,\n\t36409 - 11904: 0xBFE5,\n\t36410 - 11904: 0x99E3,\n\t36412 - 11904: 0xEBC3,\n\t36413 - 11904: 0xEBC4,\n\t36414 - 11904: 0xEBBE,\n\t36415 - 11904: 0xEBC7,\n\t36416 - 11904: 0xEBC0,\n\t36417 - 11904: 0xEBC5,\n\t36418 - 11904: 0xBFE4,\n\t36420 - 11904: 0xBFE1,\n\t36421 - 11904: 0xEBC1,\n\t36422 - 11904: 0x8A4A,\n\t36423 - 11904: 0xEEBF,\n\t36424 - 11904: 0xC1D0,\n\t36425 - 11904: 0xC1CE,\n\t36426 - 11904: 0xC1D1,\n\t36427 - 11904: 0xC1CF,\n\t36428 - 11904: 0xEEBE,\n\t36429 - 11904: 0xEEBB,\n\t36430 - 11904: 0xEEBA,\n\t36431 - 11904: 0x9FF1,\n\t36432 - 11904: 0xEEBD,\n\t36435 - 11904: 0xEEBC,\n\t36436 - 11904: 0xF145,\n\t36437 - 11904: 0xC2DE,\n\t36438 - 11904: 0xF0FB,\n\t36439 - 11904: 0xF0FA,\n\t36441 - 11904: 0xC2D9,\n\t36442 - 11904: 0xF141,\n\t36443 - 11904: 0xF140,\n\t36444 - 11904: 0xF0F7,\n\t36445 - 11904: 0xF143,\n\t36446 - 11904: 0xF0FC,\n\t36447 - 11904: 0xC2DD,\n\t36448 - 11904: 0xF0F9,\n\t36449 - 11904: 0xF142,\n\t36450 - 11904: 0xF0F8,\n\t36451 - 11904: 0xC2DA,\n\t36452 - 11904: 0xC2DC,\n\t36453 - 11904: 0xF0FD,\n\t36454 - 11904: 0xC2DB,\n\t36455 - 11904: 0xF0FE,\n\t36456 - 11904: 0x8AA7,\n\t36457 - 11904: 0xF144,\n\t36458 - 11904: 0xF352,\n\t36460 - 11904: 0xC3DE,\n\t36461 - 11904: 0xF34F,\n\t36463 - 11904: 0xF353,\n\t36465 - 11904: 0x99E6,\n\t36466 - 11904: 0xC3DB,\n\t36467 - 11904: 0xF351,\n\t36468 - 11904: 0xC3E0,\n\t36469 - 11904: 0x9FF7,\n\t36470 - 11904: 0xC3DD,\n\t36471 - 11904: 0x9FED,\n\t36472 - 11904: 0xF350,\n\t36474 - 11904: 0xC3DF,\n\t36475 - 11904: 0xF354,\n\t36476 - 11904: 0xC3DA,\n\t36478 - 11904: 0x8A5C,\n\t36480 - 11904: 0x9DAE,\n\t36481 - 11904: 0xC4BC,\n\t36482 - 11904: 0xC4BE,\n\t36484 - 11904: 0xF4D9,\n\t36485 - 11904: 0xC4BD,\n\t36486 - 11904: 0xF4D7,\n\t36487 - 11904: 0xC3DC,\n\t36488 - 11904: 0xF4D8,\n\t36489 - 11904: 0xC4BB,\n\t36490 - 11904: 0xC543,\n\t36491 - 11904: 0xC545,\n\t36492 - 11904: 0xF656,\n\t36493 - 11904: 0xC544,\n\t36494 - 11904: 0xF655,\n\t36496 - 11904: 0xF761,\n\t36497 - 11904: 0xC5AD,\n\t36498 - 11904: 0xF760,\n\t36499 - 11904: 0xC5AE,\n\t36500 - 11904: 0xF75E,\n\t36501 - 11904: 0xF75D,\n\t36502 - 11904: 0xF762,\n\t36503 - 11904: 0xF763,\n\t36504 - 11904: 0xF846,\n\t36506 - 11904: 0xF75F,\n\t36509 - 11904: 0xF8C6,\n\t36510 - 11904: 0xF8C3,\n\t36511 - 11904: 0xF8C4,\n\t36512 - 11904: 0xF8C5,\n\t36513 - 11904: 0xC65C,\n\t36515 - 11904: 0xF951,\n\t36516 - 11904: 0xF950,\n\t36517 - 11904: 0xF94F,\n\t36518 - 11904: 0xF970,\n\t36519 - 11904: 0x95C9,\n\t36520 - 11904: 0xF9BE,\n\t36521 - 11904: 0xF9AB,\n\t36522 - 11904: 0xC66E,\n\t36523 - 11904: 0xA8AD,\n\t36524 - 11904: 0xB060,\n\t36525 - 11904: 0x9048,\n\t36528 - 11904: 0x99E8,\n\t36530 - 11904: 0xB8FA,\n\t36534 - 11904: 0x9049,\n\t36537 - 11904: 0x8CBA,\n\t36538 - 11904: 0xBDF6,\n\t36540 - 11904: 0x90B1,\n\t36541 - 11904: 0xEBC8,\n\t36544 - 11904: 0xC2DF,\n\t36546 - 11904: 0xF355,\n\t36547 - 11904: 0x904A,\n\t36553 - 11904: 0xF9AC,\n\t36554 - 11904: 0xA8AE,\n\t36555 - 11904: 0xAAEE,\n\t36556 - 11904: 0xAD79,\n\t36557 - 11904: 0xAD78,\n\t36558 - 11904: 0x99EA,\n\t36559 - 11904: 0xB063,\n\t36561 - 11904: 0xD3E8,\n\t36562 - 11904: 0xB061,\n\t36563 - 11904: 0xD3E9,\n\t36564 - 11904: 0xB062,\n\t36567 - 11904: 0xD7DF,\n\t36568 - 11904: 0xD7DB,\n\t36570 - 11904: 0x9BD1,\n\t36571 - 11904: 0xB36D,\n\t36572 - 11904: 0xD7DE,\n\t36573 - 11904: 0xD7DD,\n\t36574 - 11904: 0xD7DC,\n\t36575 - 11904: 0xB36E,\n\t36576 - 11904: 0xD7E0,\n\t36577 - 11904: 0xD7E1,\n\t36578 - 11904: 0x99EB,\n\t36580 - 11904: 0x99EC,\n\t36581 - 11904: 0xDC43,\n\t36582 - 11904: 0xDC41,\n\t36583 - 11904: 0xDC45,\n\t36584 - 11904: 0xDC46,\n\t36585 - 11904: 0xDC4C,\n\t36587 - 11904: 0xDC48,\n\t36588 - 11904: 0xDC4A,\n\t36589 - 11904: 0x99ED,\n\t36590 - 11904: 0xDC42,\n\t36591 - 11904: 0xDBFC,\n\t36593 - 11904: 0xDC49,\n\t36594 - 11904: 0x99EE,\n\t36596 - 11904: 0xDC4B,\n\t36597 - 11904: 0xDC44,\n\t36598 - 11904: 0xDC47,\n\t36599 - 11904: 0xDBFD,\n\t36600 - 11904: 0xB662,\n\t36601 - 11904: 0xDC40,\n\t36602 - 11904: 0xDBFE,\n\t36603 - 11904: 0xB661,\n\t36604 - 11904: 0xB663,\n\t36606 - 11904: 0xB8FD,\n\t36607 - 11904: 0xE075,\n\t36608 - 11904: 0xE077,\n\t36609 - 11904: 0xE076,\n\t36610 - 11904: 0xE07B,\n\t36611 - 11904: 0xB8FB,\n\t36613 - 11904: 0xE078,\n\t36614 - 11904: 0xE074,\n\t36615 - 11904: 0xE079,\n\t36616 - 11904: 0xE07A,\n\t36617 - 11904: 0xB8FC,\n\t36618 - 11904: 0xB8FE,\n\t36619 - 11904: 0xE07C,\n\t36621 - 11904: 0xE467,\n\t36622 - 11904: 0xE466,\n\t36624 - 11904: 0xE464,\n\t36625 - 11904: 0xE465,\n\t36626 - 11904: 0xBBB3,\n\t36627 - 11904: 0xBBB5,\n\t36628 - 11904: 0xBBB2,\n\t36629 - 11904: 0xBBB4,\n\t36630 - 11904: 0xE84D,\n\t36631 - 11904: 0xE84E,\n\t36632 - 11904: 0xE849,\n\t36633 - 11904: 0x904C,\n\t36634 - 11904: 0xE84A,\n\t36635 - 11904: 0xBDF8,\n\t36636 - 11904: 0xBDFD,\n\t36637 - 11904: 0xBDF7,\n\t36638 - 11904: 0xBDFE,\n\t36639 - 11904: 0xBDF9,\n\t36640 - 11904: 0xE84B,\n\t36643 - 11904: 0xE84C,\n\t36644 - 11904: 0xE848,\n\t36645 - 11904: 0xBE40,\n\t36646 - 11904: 0xBDFB,\n\t36649 - 11904: 0xBDFA,\n\t36650 - 11904: 0xBDFC,\n\t36652 - 11904: 0xE847,\n\t36653 - 11904: 0x904D,\n\t36654 - 11904: 0xEBCA,\n\t36655 - 11904: 0xBFE8,\n\t36656 - 11904: 0x95CB,\n\t36658 - 11904: 0xEBCC,\n\t36659 - 11904: 0xBFEA,\n\t36660 - 11904: 0xEBCF,\n\t36661 - 11904: 0xEBCB,\n\t36662 - 11904: 0xEBC9,\n\t36663 - 11904: 0xEBCE,\n\t36664 - 11904: 0xBFE9,\n\t36665 - 11904: 0xEBCD,\n\t36667 - 11904: 0xBFE7,\n\t36670 - 11904: 0xC1D3,\n\t36671 - 11904: 0xC1D6,\n\t36672 - 11904: 0xEEC1,\n\t36673 - 11904: 0x97E2,\n\t36674 - 11904: 0xC1D4,\n\t36675 - 11904: 0xEEC0,\n\t36676 - 11904: 0xC1D2,\n\t36677 - 11904: 0xC1D5,\n\t36678 - 11904: 0xF146,\n\t36679 - 11904: 0xF147,\n\t36680 - 11904: 0xF148,\n\t36681 - 11904: 0xC2E0,\n\t36682 - 11904: 0x95CC,\n\t36683 - 11904: 0xF149,\n\t36685 - 11904: 0xC2E1,\n\t36686 - 11904: 0xC3E2,\n\t36687 - 11904: 0xF358,\n\t36688 - 11904: 0xF359,\n\t36689 - 11904: 0xF357,\n\t36690 - 11904: 0xF356,\n\t36691 - 11904: 0xF35A,\n\t36692 - 11904: 0xC3E1,\n\t36693 - 11904: 0xF4DD,\n\t36694 - 11904: 0xF4DB,\n\t36695 - 11904: 0xF4DC,\n\t36696 - 11904: 0xF4DE,\n\t36697 - 11904: 0xF4DA,\n\t36698 - 11904: 0xF4DF,\n\t36699 - 11904: 0xF658,\n\t36700 - 11904: 0x9F78,\n\t36701 - 11904: 0xF659,\n\t36702 - 11904: 0xF657,\n\t36703 - 11904: 0xC546,\n\t36704 - 11904: 0xF764,\n\t36705 - 11904: 0xC5AF,\n\t36706 - 11904: 0xF765,\n\t36707 - 11904: 0xF848,\n\t36708 - 11904: 0xF847,\n\t36710 - 11904: 0x897C,\n\t36711 - 11904: 0x897D,\n\t36718 - 11904: 0x897E,\n\t36755 - 11904: 0x995D,\n\t36763 - 11904: 0xA8AF,\n\t36764 - 11904: 0xB664,\n\t36767 - 11904: 0xB940,\n\t36768 - 11904: 0x9B5A,\n\t36771 - 11904: 0xBBB6,\n\t36773 - 11904: 0x9050,\n\t36774 - 11904: 0xBFEC,\n\t36775 - 11904: 0x8C4F,\n\t36776 - 11904: 0xBFEB,\n\t36781 - 11904: 0xC3E3,\n\t36782 - 11904: 0xC47C,\n\t36783 - 11904: 0xC547,\n\t36784 - 11904: 0xA8B0,\n\t36785 - 11904: 0xB064,\n\t36786 - 11904: 0xB941,\n\t36787 - 11904: 0x9054,\n\t36788 - 11904: 0xF35B,\n\t36789 - 11904: 0xC6D6,\n\t36790 - 11904: 0x9AA8,\n\t36791 - 11904: 0x99EF,\n\t36792 - 11904: 0xFEEB,\n\t36793 - 11904: 0x9DA3,\n\t36794 - 11904: 0x9DA1,\n\t36795 - 11904: 0x9943,\n\t36796 - 11904: 0x9945,\n\t36798 - 11904: 0x9D7D,\n\t36799 - 11904: 0xCBA6,\n\t36801 - 11904: 0x99F0,\n\t36802 - 11904: 0xA8B1,\n\t36804 - 11904: 0xA8B4,\n\t36805 - 11904: 0xA8B3,\n\t36806 - 11904: 0xA8B2,\n\t36809 - 11904: 0xCBA5,\n\t36810 - 11904: 0x99F1,\n\t36811 - 11904: 0xCDCD,\n\t36812 - 11904: 0x99F2,\n\t36813 - 11904: 0xCDCF,\n\t36814 - 11904: 0xAAEF,\n\t36815 - 11904: 0x8CBC,\n\t36816 - 11904: 0x9D60,\n\t36817 - 11904: 0xAAF1,\n\t36818 - 11904: 0xCDCC,\n\t36819 - 11904: 0xCDCE,\n\t36820 - 11904: 0xAAF0,\n\t36821 - 11904: 0xCDD1,\n\t36822 - 11904: 0xCDD0,\n\t36823 - 11904: 0xCDD2,\n\t36826 - 11904: 0xA0A3,\n\t36832 - 11904: 0xD0B6,\n\t36833 - 11904: 0xD0B4,\n\t36834 - 11904: 0xAD7C,\n\t36835 - 11904: 0xD0B3,\n\t36836 - 11904: 0xADA3,\n\t36837 - 11904: 0xAD7E,\n\t36838 - 11904: 0xAD7B,\n\t36840 - 11904: 0xADA4,\n\t36842 - 11904: 0xAD7D,\n\t36843 - 11904: 0xADA2,\n\t36845 - 11904: 0xADA1,\n\t36846 - 11904: 0xD0B5,\n\t36848 - 11904: 0xAD7A,\n\t36852 - 11904: 0xB06A,\n\t36853 - 11904: 0xD3EB,\n\t36854 - 11904: 0xD3F1,\n\t36855 - 11904: 0xB067,\n\t36856 - 11904: 0xB06E,\n\t36857 - 11904: 0x905B,\n\t36858 - 11904: 0xB069,\n\t36859 - 11904: 0xD3EE,\n\t36860 - 11904: 0xD3F0,\n\t36861 - 11904: 0xB06C,\n\t36862 - 11904: 0xD3EA,\n\t36863 - 11904: 0xD3ED,\n\t36864 - 11904: 0xB068,\n\t36865 - 11904: 0xB065,\n\t36866 - 11904: 0xD3EC,\n\t36867 - 11904: 0xB06B,\n\t36868 - 11904: 0xD3EF,\n\t36869 - 11904: 0xB06D,\n\t36870 - 11904: 0xB066,\n\t36872 - 11904: 0x9EDB,\n\t36875 - 11904: 0xD7E3,\n\t36876 - 11904: 0xD7E6,\n\t36877 - 11904: 0xB370,\n\t36879 - 11904: 0xB37A,\n\t36880 - 11904: 0xB376,\n\t36881 - 11904: 0xD7E4,\n\t36882 - 11904: 0x9D79,\n\t36884 - 11904: 0xB37E,\n\t36885 - 11904: 0xB377,\n\t36886 - 11904: 0xB37C,\n\t36887 - 11904: 0xB372,\n\t36889 - 11904: 0xB36F,\n\t36890 - 11904: 0xB371,\n\t36891 - 11904: 0xB37D,\n\t36892 - 11904: 0xD7E5,\n\t36893 - 11904: 0xB375,\n\t36894 - 11904: 0xB378,\n\t36895 - 11904: 0xB374,\n\t36896 - 11904: 0xB379,\n\t36897 - 11904: 0xD7E7,\n\t36898 - 11904: 0xB37B,\n\t36899 - 11904: 0xB373,\n\t36900 - 11904: 0xD7E2,\n\t36909 - 11904: 0xDC4D,\n\t36910 - 11904: 0xB665,\n\t36911 - 11904: 0xDC4F,\n\t36913 - 11904: 0xB667,\n\t36914 - 11904: 0xB669,\n\t36915 - 11904: 0x99F3,\n\t36916 - 11904: 0xDC4E,\n\t36917 - 11904: 0xB666,\n\t36918 - 11904: 0xB66A,\n\t36919 - 11904: 0x9062,\n\t36920 - 11904: 0xB668,\n\t36924 - 11904: 0xB947,\n\t36925 - 11904: 0xE0A3,\n\t36926 - 11904: 0xB94F,\n\t36927 - 11904: 0xE07E,\n\t36929 - 11904: 0xB950,\n\t36930 - 11904: 0xB945,\n\t36932 - 11904: 0xE0A1,\n\t36934 - 11904: 0x87BD,\n\t36935 - 11904: 0xB94A,\n\t36937 - 11904: 0xE0A2,\n\t36938 - 11904: 0xB943,\n\t36939 - 11904: 0xB942,\n\t36940 - 11904: 0x9F55,\n\t36941 - 11904: 0xB94D,\n\t36942 - 11904: 0xB94C,\n\t36943 - 11904: 0xB94B,\n\t36944 - 11904: 0xB949,\n\t36945 - 11904: 0xB94E,\n\t36946 - 11904: 0xE07D,\n\t36947 - 11904: 0xB944,\n\t36948 - 11904: 0xB946,\n\t36949 - 11904: 0xB948,\n\t36950 - 11904: 0x9BF9,\n\t36952 - 11904: 0xBBB8,\n\t36953 - 11904: 0xBBBB,\n\t36955 - 11904: 0xBBBF,\n\t36956 - 11904: 0xBBB9,\n\t36957 - 11904: 0xBBBE,\n\t36958 - 11904: 0xBBBC,\n\t36960 - 11904: 0xBBB7,\n\t36961 - 11904: 0x9065,\n\t36962 - 11904: 0xBBBD,\n\t36963 - 11904: 0xBBBA,\n\t36964 - 11904: 0x96E0,\n\t36967 - 11904: 0xE852,\n\t36968 - 11904: 0xBE43,\n\t36969 - 11904: 0xBE41,\n\t36971 - 11904: 0xE853,\n\t36972 - 11904: 0x98BE,\n\t36973 - 11904: 0xBE44,\n\t36974 - 11904: 0xBE42,\n\t36975 - 11904: 0xE851,\n\t36976 - 11904: 0xE850,\n\t36978 - 11904: 0xBFF0,\n\t36979 - 11904: 0xE84F,\n\t36980 - 11904: 0xBFEE,\n\t36981 - 11904: 0xBFED,\n\t36982 - 11904: 0xEBD0,\n\t36983 - 11904: 0xBE45,\n\t36984 - 11904: 0xBFEF,\n\t36985 - 11904: 0xEBD1,\n\t36986 - 11904: 0xBFF2,\n\t36987 - 11904: 0xEBD2,\n\t36988 - 11904: 0xBFF1,\n\t36989 - 11904: 0xC1D8,\n\t36990 - 11904: 0xEEC3,\n\t36991 - 11904: 0xC1D7,\n\t36992 - 11904: 0xC1DC,\n\t36993 - 11904: 0xC1DA,\n\t36994 - 11904: 0xC1DB,\n\t36995 - 11904: 0xC2E3,\n\t36996 - 11904: 0xC1D9,\n\t36997 - 11904: 0xEEC2,\n\t36998 - 11904: 0xEBD3,\n\t36999 - 11904: 0xC2E2,\n\t37000 - 11904: 0xC2E4,\n\t37002 - 11904: 0xC3E4,\n\t37003 - 11904: 0xC3E5,\n\t37005 - 11904: 0xF4E0,\n\t37007 - 11904: 0xC5DE,\n\t37008 - 11904: 0xC5DD,\n\t37009 - 11904: 0xA8B6,\n\t37012 - 11904: 0xCA55,\n\t37013 - 11904: 0xB06F,\n\t37015 - 11904: 0xCA52,\n\t37016 - 11904: 0xCA53,\n\t37017 - 11904: 0xCA51,\n\t37019 - 11904: 0xCA54,\n\t37022 - 11904: 0xCBAA,\n\t37023 - 11904: 0xCBA7,\n\t37024 - 11904: 0xCBAC,\n\t37025 - 11904: 0xCBA8,\n\t37026 - 11904: 0xA8B7,\n\t37027 - 11904: 0xA8BA,\n\t37029 - 11904: 0xCBA9,\n\t37030 - 11904: 0xA8B9,\n\t37031 - 11904: 0xCBAB,\n\t37032 - 11904: 0x9068,\n\t37034 - 11904: 0xA8B8,\n\t37038 - 11904: 0x906C,\n\t37039 - 11904: 0xCDD5,\n\t37040 - 11904: 0xCDD7,\n\t37041 - 11904: 0xAAF4,\n\t37042 - 11904: 0xCDD3,\n\t37043 - 11904: 0xCDD6,\n\t37044 - 11904: 0xCDD4,\n\t37045 - 11904: 0xAAF2,\n\t37046 - 11904: 0xAAF5,\n\t37048 - 11904: 0xAAF3,\n\t37051 - 11904: 0x95D8,\n\t37053 - 11904: 0xD0B8,\n\t37054 - 11904: 0xD0BC,\n\t37055 - 11904: 0xD0B9,\n\t37057 - 11904: 0xADA7,\n\t37059 - 11904: 0xADA8,\n\t37060 - 11904: 0x906A,\n\t37061 - 11904: 0xD0BB,\n\t37063 - 11904: 0xD0BD,\n\t37064 - 11904: 0xD0BF,\n\t37066 - 11904: 0xADA5,\n\t37067 - 11904: 0xD0BE,\n\t37070 - 11904: 0xADA6,\n\t37076 - 11904: 0xD7EE,\n\t37077 - 11904: 0xD0BA,\n\t37078 - 11904: 0xD3F2,\n\t37079 - 11904: 0xD3FB,\n\t37080 - 11904: 0xD3F9,\n\t37081 - 11904: 0xD3F4,\n\t37082 - 11904: 0xD3F5,\n\t37083 - 11904: 0xD3FA,\n\t37084 - 11904: 0xD3FC,\n\t37085 - 11904: 0xB071,\n\t37087 - 11904: 0xD3F7,\n\t37088 - 11904: 0xD3F3,\n\t37089 - 11904: 0xB070,\n\t37090 - 11904: 0xB072,\n\t37091 - 11904: 0xD3F6,\n\t37092 - 11904: 0xD3FD,\n\t37093 - 11904: 0xD3F8,\n\t37096 - 11904: 0xB3A1,\n\t37097 - 11904: 0xD7F1,\n\t37098 - 11904: 0xD7E9,\n\t37099 - 11904: 0xD7EF,\n\t37100 - 11904: 0xD7F0,\n\t37101 - 11904: 0xB3A2,\n\t37103 - 11904: 0xD7E8,\n\t37104 - 11904: 0xD7EA,\n\t37105 - 11904: 0xD0B7,\n\t37106 - 11904: 0xD7EC,\n\t37107 - 11904: 0xD7ED,\n\t37108 - 11904: 0xD7EB,\n\t37109 - 11904: 0xB66C,\n\t37113 - 11904: 0xDC56,\n\t37114 - 11904: 0xEBD4,\n\t37115 - 11904: 0xDC57,\n\t37116 - 11904: 0xDC54,\n\t37117 - 11904: 0xB3A3,\n\t37118 - 11904: 0xB66E,\n\t37119 - 11904: 0xDC53,\n\t37120 - 11904: 0xDC59,\n\t37121 - 11904: 0xDC58,\n\t37122 - 11904: 0xB66B,\n\t37123 - 11904: 0xDC5C,\n\t37124 - 11904: 0xDC52,\n\t37125 - 11904: 0xDC5B,\n\t37126 - 11904: 0xDC50,\n\t37127 - 11904: 0xDC5A,\n\t37128 - 11904: 0xDC55,\n\t37129 - 11904: 0xB66D,\n\t37131 - 11904: 0xE0AA,\n\t37133 - 11904: 0xE0A5,\n\t37134 - 11904: 0xE0AB,\n\t37135 - 11904: 0xE0A6,\n\t37136 - 11904: 0xE0A4,\n\t37137 - 11904: 0xE0A7,\n\t37138 - 11904: 0xB951,\n\t37140 - 11904: 0xE0A9,\n\t37142 - 11904: 0xE0A8,\n\t37143 - 11904: 0xB952,\n\t37144 - 11904: 0xBBC1,\n\t37145 - 11904: 0xBBC0,\n\t37146 - 11904: 0xE46E,\n\t37147 - 11904: 0xE471,\n\t37148 - 11904: 0xE469,\n\t37149 - 11904: 0xE46D,\n\t37150 - 11904: 0xBBC2,\n\t37151 - 11904: 0xE46C,\n\t37152 - 11904: 0xE46A,\n\t37153 - 11904: 0xE470,\n\t37154 - 11904: 0xE46B,\n\t37155 - 11904: 0xE468,\n\t37156 - 11904: 0xE46F,\n\t37158 - 11904: 0xE859,\n\t37159 - 11904: 0xBE48,\n\t37160 - 11904: 0xF14A,\n\t37161 - 11904: 0xE856,\n\t37162 - 11904: 0xE857,\n\t37163 - 11904: 0xE855,\n\t37164 - 11904: 0xDC51,\n\t37165 - 11904: 0xBE47,\n\t37166 - 11904: 0xE85A,\n\t37167 - 11904: 0xE854,\n\t37168 - 11904: 0xBE46,\n\t37169 - 11904: 0xBE49,\n\t37170 - 11904: 0xE858,\n\t37171 - 11904: 0xEBD5,\n\t37172 - 11904: 0xBFF3,\n\t37173 - 11904: 0xEBD6,\n\t37174 - 11904: 0xEBD7,\n\t37176 - 11904: 0xEEC4,\n\t37177 - 11904: 0xC1DD,\n\t37178 - 11904: 0xF14B,\n\t37179 - 11904: 0xF14C,\n\t37182 - 11904: 0xF14D,\n\t37183 - 11904: 0xF35D,\n\t37184 - 11904: 0xF35C,\n\t37185 - 11904: 0xF4E2,\n\t37187 - 11904: 0xF4E1,\n\t37188 - 11904: 0xF65B,\n\t37189 - 11904: 0xF65C,\n\t37190 - 11904: 0xF65A,\n\t37191 - 11904: 0xF766,\n\t37192 - 11904: 0xC5B0,\n\t37193 - 11904: 0xA8BB,\n\t37194 - 11904: 0xADAA,\n\t37195 - 11904: 0xADA9,\n\t37196 - 11904: 0xB075,\n\t37197 - 11904: 0xB074,\n\t37198 - 11904: 0xD440,\n\t37199 - 11904: 0xD441,\n\t37200 - 11904: 0xD3FE,\n\t37201 - 11904: 0x9FB2,\n\t37202 - 11904: 0xB073,\n\t37203 - 11904: 0xD7F5,\n\t37205 - 11904: 0xD7F6,\n\t37206 - 11904: 0xD7F2,\n\t37207 - 11904: 0xB3A4,\n\t37208 - 11904: 0xD7F3,\n\t37209 - 11904: 0x9FAE,\n\t37210 - 11904: 0xD7F4,\n\t37212 - 11904: 0x9FB0,\n\t37214 - 11904: 0x89AD,\n\t37215 - 11904: 0xDC5F,\n\t37216 - 11904: 0xDC61,\n\t37217 - 11904: 0xDC5D,\n\t37218 - 11904: 0xDC60,\n\t37219 - 11904: 0xB66F,\n\t37220 - 11904: 0xDC5E,\n\t37221 - 11904: 0xB670,\n\t37223 - 11904: 0x906E,\n\t37224 - 11904: 0xDD73,\n\t37225 - 11904: 0xB955,\n\t37226 - 11904: 0xB954,\n\t37228 - 11904: 0xB953,\n\t37230 - 11904: 0xE0AC,\n\t37231 - 11904: 0xE0AD,\n\t37232 - 11904: 0x9E71,\n\t37234 - 11904: 0xE473,\n\t37235 - 11904: 0xE475,\n\t37236 - 11904: 0xBBC6,\n\t37237 - 11904: 0xBBC3,\n\t37238 - 11904: 0x9E4A,\n\t37239 - 11904: 0xBBC5,\n\t37240 - 11904: 0xBBC4,\n\t37241 - 11904: 0xE474,\n\t37242 - 11904: 0xE472,\n\t37244 - 11904: 0x9FDC,\n\t37248 - 11904: 0xE861,\n\t37249 - 11904: 0xE85E,\n\t37250 - 11904: 0xE85F,\n\t37251 - 11904: 0xBE4D,\n\t37252 - 11904: 0xE860,\n\t37253 - 11904: 0xE85B,\n\t37254 - 11904: 0xE85C,\n\t37255 - 11904: 0xBE4A,\n\t37257 - 11904: 0xBE4B,\n\t37258 - 11904: 0xE85D,\n\t37259 - 11904: 0xBE4C,\n\t37260 - 11904: 0x89AB,\n\t37261 - 11904: 0xEBDB,\n\t37262 - 11904: 0x9FB8,\n\t37263 - 11904: 0xEBDC,\n\t37264 - 11904: 0xEBD9,\n\t37265 - 11904: 0xEBDA,\n\t37266 - 11904: 0xBFF4,\n\t37267 - 11904: 0xEBD8,\n\t37273 - 11904: 0xEEC8,\n\t37274 - 11904: 0xEEC5,\n\t37275 - 11904: 0xEEC7,\n\t37276 - 11904: 0xC1E0,\n\t37277 - 11904: 0xEECB,\n\t37278 - 11904: 0xC1DF,\n\t37279 - 11904: 0xEEC9,\n\t37280 - 11904: 0xEECC,\n\t37281 - 11904: 0xEECA,\n\t37282 - 11904: 0xEEC6,\n\t37283 - 11904: 0xC1DE,\n\t37285 - 11904: 0xF14F,\n\t37287 - 11904: 0xF150,\n\t37288 - 11904: 0xF14E,\n\t37289 - 11904: 0x9070,\n\t37290 - 11904: 0xF152,\n\t37291 - 11904: 0xC2E5,\n\t37292 - 11904: 0xC2E6,\n\t37293 - 11904: 0xF35F,\n\t37294 - 11904: 0xC3E7,\n\t37295 - 11904: 0xF151,\n\t37296 - 11904: 0xF35E,\n\t37297 - 11904: 0xC3E6,\n\t37298 - 11904: 0xF4E5,\n\t37299 - 11904: 0xF4E6,\n\t37300 - 11904: 0xC4BF,\n\t37301 - 11904: 0xF4E4,\n\t37302 - 11904: 0x8B63,\n\t37303 - 11904: 0xF4E3,\n\t37305 - 11904: 0xF65D,\n\t37306 - 11904: 0xC548,\n\t37307 - 11904: 0x95DC,\n\t37308 - 11904: 0xF849,\n\t37309 - 11904: 0xF8C8,\n\t37310 - 11904: 0xF8C7,\n\t37312 - 11904: 0xC643,\n\t37313 - 11904: 0xC65D,\n\t37314 - 11904: 0xF8C9,\n\t37315 - 11904: 0xF971,\n\t37316 - 11904: 0x9071,\n\t37317 - 11904: 0xC66F,\n\t37318 - 11904: 0xA8BC,\n\t37319 - 11904: 0xAAF6,\n\t37321 - 11904: 0xB956,\n\t37323 - 11904: 0xC4C0,\n\t37324 - 11904: 0xA8BD,\n\t37325 - 11904: 0xADAB,\n\t37326 - 11904: 0xB3A5,\n\t37327 - 11904: 0xB671,\n\t37328 - 11904: 0xC2E7,\n\t37329 - 11904: 0xAAF7,\n\t37331 - 11904: 0xD0C1,\n\t37332 - 11904: 0xD0C0,\n\t37333 - 11904: 0xD442,\n\t37334 - 11904: 0xFC5E,\n\t37335 - 11904: 0xB078,\n\t37336 - 11904: 0xB076,\n\t37337 - 11904: 0xB07A,\n\t37338 - 11904: 0xD444,\n\t37340 - 11904: 0xB079,\n\t37341 - 11904: 0xB077,\n\t37343 - 11904: 0x8949,\n\t37346 - 11904: 0xD443,\n\t37347 - 11904: 0xB3A8,\n\t37348 - 11904: 0xD7FC,\n\t37349 - 11904: 0x965B,\n\t37350 - 11904: 0xB3A7,\n\t37351 - 11904: 0xB3A9,\n\t37352 - 11904: 0xD842,\n\t37353 - 11904: 0xB3AB,\n\t37354 - 11904: 0xD7FE,\n\t37355 - 11904: 0xD840,\n\t37356 - 11904: 0xD7F7,\n\t37357 - 11904: 0xB3AA,\n\t37358 - 11904: 0xD843,\n\t37361 - 11904: 0xD7F9,\n\t37363 - 11904: 0xD7FA,\n\t37364 - 11904: 0xD7F8,\n\t37365 - 11904: 0xB3A6,\n\t37366 - 11904: 0x8C50,\n\t37367 - 11904: 0xD841,\n\t37368 - 11904: 0xD7FB,\n\t37369 - 11904: 0xD7FD,\n\t37370 - 11904: 0x94A6,\n\t37373 - 11904: 0xDC6D,\n\t37374 - 11904: 0x8FD5,\n\t37375 - 11904: 0xDC6C,\n\t37376 - 11904: 0xDC6A,\n\t37377 - 11904: 0xDC62,\n\t37378 - 11904: 0xDC71,\n\t37379 - 11904: 0xDC65,\n\t37380 - 11904: 0xDC6F,\n\t37381 - 11904: 0xDC76,\n\t37382 - 11904: 0xDC6E,\n\t37383 - 11904: 0xB679,\n\t37384 - 11904: 0x9E73,\n\t37385 - 11904: 0xB675,\n\t37386 - 11904: 0xDC63,\n\t37388 - 11904: 0xDC69,\n\t37389 - 11904: 0xB677,\n\t37390 - 11904: 0x9075,\n\t37391 - 11904: 0xDC68,\n\t37392 - 11904: 0xB678,\n\t37393 - 11904: 0xB67A,\n\t37394 - 11904: 0xDC6B,\n\t37395 - 11904: 0x99F7,\n\t37396 - 11904: 0xB672,\n\t37397 - 11904: 0xB673,\n\t37398 - 11904: 0xDC77,\n\t37399 - 11904: 0xDC75,\n\t37400 - 11904: 0x87B2,\n\t37401 - 11904: 0xDC74,\n\t37402 - 11904: 0xDC66,\n\t37404 - 11904: 0xDC72,\n\t37406 - 11904: 0xB676,\n\t37409 - 11904: 0x8CBF,\n\t37411 - 11904: 0xB674,\n\t37412 - 11904: 0xDC73,\n\t37413 - 11904: 0xDC64,\n\t37414 - 11904: 0xDC67,\n\t37415 - 11904: 0xDC70,\n\t37416 - 11904: 0x99F9,\n\t37418 - 11904: 0x9663,\n\t37419 - 11904: 0x95B9,\n\t37421 - 11904: 0xE4BA,\n\t37422 - 11904: 0xE0B7,\n\t37424 - 11904: 0xE0B0,\n\t37425 - 11904: 0xE0C3,\n\t37426 - 11904: 0xE0CC,\n\t37427 - 11904: 0xE0B3,\n\t37428 - 11904: 0xB961,\n\t37429 - 11904: 0x94D4,\n\t37430 - 11904: 0xE0C0,\n\t37431 - 11904: 0xB957,\n\t37432 - 11904: 0xB959,\n\t37433 - 11904: 0xB965,\n\t37434 - 11904: 0xE0B1,\n\t37436 - 11904: 0xFCFA,\n\t37437 - 11904: 0xB95A,\n\t37438 - 11904: 0xB95C,\n\t37439 - 11904: 0xB966,\n\t37440 - 11904: 0xB95B,\n\t37441 - 11904: 0x9077,\n\t37444 - 11904: 0x90AB,\n\t37445 - 11904: 0xB964,\n\t37446 - 11904: 0xE0B9,\n\t37448 - 11904: 0xE0AE,\n\t37449 - 11904: 0xB962,\n\t37450 - 11904: 0xE0B8,\n\t37451 - 11904: 0xB95E,\n\t37452 - 11904: 0xE0CA,\n\t37453 - 11904: 0xB963,\n\t37454 - 11904: 0xE0C8,\n\t37455 - 11904: 0xE0BC,\n\t37456 - 11904: 0xE0C6,\n\t37457 - 11904: 0xB960,\n\t37458 - 11904: 0xE0AF,\n\t37459 - 11904: 0xE0C9,\n\t37460 - 11904: 0xE0C4,\n\t37461 - 11904: 0x9D4D,\n\t37462 - 11904: 0xE0CB,\n\t37463 - 11904: 0xB958,\n\t37464 - 11904: 0x99FA,\n\t37466 - 11904: 0xB967,\n\t37467 - 11904: 0xB95D,\n\t37469 - 11904: 0x92E3,\n\t37470 - 11904: 0xE0B5,\n\t37471 - 11904: 0x97BB,\n\t37472 - 11904: 0xE0BD,\n\t37473 - 11904: 0xE0C1,\n\t37474 - 11904: 0x9078,\n\t37475 - 11904: 0xE0C5,\n\t37476 - 11904: 0xB95F,\n\t37477 - 11904: 0xE0B4,\n\t37478 - 11904: 0xE0B2,\n\t37479 - 11904: 0xE0BE,\n\t37483 - 11904: 0x99FB,\n\t37484 - 11904: 0xE0BB,\n\t37485 - 11904: 0xE0BA,\n\t37486 - 11904: 0x97E0,\n\t37487 - 11904: 0xE0BF,\n\t37488 - 11904: 0xE0C2,\n\t37490 - 11904: 0xE0C7,\n\t37494 - 11904: 0xE478,\n\t37495 - 11904: 0x96DC,\n\t37496 - 11904: 0xBBC7,\n\t37497 - 11904: 0xE4A4,\n\t37498 - 11904: 0xE47A,\n\t37499 - 11904: 0xBBCC,\n\t37500 - 11904: 0xBBD0,\n\t37501 - 11904: 0xE4AD,\n\t37502 - 11904: 0xE4B5,\n\t37503 - 11904: 0xE4A6,\n\t37504 - 11904: 0xBBC8,\n\t37505 - 11904: 0x9CA8,\n\t37506 - 11904: 0xE4AA,\n\t37507 - 11904: 0xE0B6,\n\t37508 - 11904: 0x9772,\n\t37509 - 11904: 0xBBC9,\n\t37510 - 11904: 0xE4B1,\n\t37511 - 11904: 0xE4B6,\n\t37512 - 11904: 0xE4AE,\n\t37513 - 11904: 0x9440,\n\t37514 - 11904: 0xE4B0,\n\t37515 - 11904: 0xE4B9,\n\t37516 - 11904: 0xE4B2,\n\t37517 - 11904: 0xE47E,\n\t37518 - 11904: 0xE4A9,\n\t37519 - 11904: 0x92F2,\n\t37521 - 11904: 0xBBD1,\n\t37523 - 11904: 0xBBCD,\n\t37524 - 11904: 0xE47C,\n\t37525 - 11904: 0xE4AB,\n\t37526 - 11904: 0xBBCB,\n\t37527 - 11904: 0xE4A5,\n\t37528 - 11904: 0xBBCA,\n\t37529 - 11904: 0xE4B3,\n\t37530 - 11904: 0xE4A2,\n\t37531 - 11904: 0xE479,\n\t37532 - 11904: 0xBBCE,\n\t37533 - 11904: 0xE4B8,\n\t37536 - 11904: 0xE47B,\n\t37537 - 11904: 0xE4AF,\n\t37538 - 11904: 0xE4AC,\n\t37539 - 11904: 0xE4A7,\n\t37540 - 11904: 0xE477,\n\t37541 - 11904: 0xE476,\n\t37542 - 11904: 0xE4A1,\n\t37543 - 11904: 0xE4B4,\n\t37544 - 11904: 0xBBCF,\n\t37545 - 11904: 0xE4B7,\n\t37546 - 11904: 0xE47D,\n\t37547 - 11904: 0xE4A3,\n\t37548 - 11904: 0xBE52,\n\t37550 - 11904: 0x99FD,\n\t37553 - 11904: 0x99FC,\n\t37554 - 11904: 0xBE5A,\n\t37555 - 11904: 0xBE55,\n\t37556 - 11904: 0xE8A4,\n\t37557 - 11904: 0xE8A1,\n\t37558 - 11904: 0xE867,\n\t37559 - 11904: 0xBE50,\n\t37561 - 11904: 0xF9D7,\n\t37562 - 11904: 0x964A,\n\t37563 - 11904: 0xBE4F,\n\t37564 - 11904: 0xBE56,\n\t37566 - 11904: 0x96D8,\n\t37567 - 11904: 0x99FE,\n\t37568 - 11904: 0xE865,\n\t37569 - 11904: 0xBE54,\n\t37570 - 11904: 0xE871,\n\t37571 - 11904: 0xE863,\n\t37572 - 11904: 0xE864,\n\t37573 - 11904: 0xBE4E,\n\t37574 - 11904: 0xE8A3,\n\t37575 - 11904: 0xBE58,\n\t37576 - 11904: 0xE874,\n\t37577 - 11904: 0xE879,\n\t37578 - 11904: 0xE873,\n\t37579 - 11904: 0xEBEE,\n\t37580 - 11904: 0xE86F,\n\t37581 - 11904: 0xE877,\n\t37582 - 11904: 0xE875,\n\t37583 - 11904: 0xE868,\n\t37584 - 11904: 0xE862,\n\t37585 - 11904: 0xE87D,\n\t37586 - 11904: 0xBE57,\n\t37587 - 11904: 0xE87E,\n\t37588 - 11904: 0x904B,\n\t37589 - 11904: 0xE878,\n\t37591 - 11904: 0xE86D,\n\t37592 - 11904: 0xE86B,\n\t37593 - 11904: 0xE866,\n\t37595 - 11904: 0xFA41,\n\t37597 - 11904: 0xE86E,\n\t37598 - 11904: 0xE87B,\n\t37599 - 11904: 0xE86A,\n\t37600 - 11904: 0xE87A,\n\t37601 - 11904: 0xE8A2,\n\t37603 - 11904: 0x9A40,\n\t37604 - 11904: 0xBE53,\n\t37605 - 11904: 0x975B,\n\t37606 - 11904: 0xE876,\n\t37607 - 11904: 0xE87C,\n\t37608 - 11904: 0xE872,\n\t37609 - 11904: 0xE86C,\n\t37610 - 11904: 0xBE51,\n\t37611 - 11904: 0x9A41,\n\t37612 - 11904: 0x91DD,\n\t37614 - 11904: 0xE4A8,\n\t37615 - 11904: 0xE870,\n\t37616 - 11904: 0xBE59,\n\t37617 - 11904: 0xE869,\n\t37618 - 11904: 0x93FC,\n\t37619 - 11904: 0x9A42,\n\t37620 - 11904: 0x9A43,\n\t37622 - 11904: 0x9659,\n\t37623 - 11904: 0xEBF4,\n\t37624 - 11904: 0xBFF7,\n\t37625 - 11904: 0xEBF3,\n\t37626 - 11904: 0xEBF0,\n\t37627 - 11904: 0xEC44,\n\t37628 - 11904: 0xBFFB,\n\t37629 - 11904: 0x9A44,\n\t37630 - 11904: 0xEC41,\n\t37631 - 11904: 0xEBF8,\n\t37632 - 11904: 0xEC43,\n\t37633 - 11904: 0xEBE9,\n\t37634 - 11904: 0xEBF6,\n\t37635 - 11904: 0x9051,\n\t37636 - 11904: 0xBFFD,\n\t37638 - 11904: 0xEBE1,\n\t37639 - 11904: 0x94BF,\n\t37640 - 11904: 0xEBDF,\n\t37641 - 11904: 0xEC42,\n\t37643 - 11904: 0xEC40,\n\t37644 - 11904: 0xEBFE,\n\t37645 - 11904: 0xEBED,\n\t37646 - 11904: 0xEBEC,\n\t37647 - 11904: 0xEBE2,\n\t37648 - 11904: 0xC040,\n\t37650 - 11904: 0xEBE8,\n\t37651 - 11904: 0xEBF2,\n\t37652 - 11904: 0xEBFD,\n\t37653 - 11904: 0xC043,\n\t37654 - 11904: 0xEC45,\n\t37656 - 11904: 0xC1E8,\n\t37657 - 11904: 0xC045,\n\t37658 - 11904: 0xBFFE,\n\t37659 - 11904: 0xEBE6,\n\t37661 - 11904: 0xEBEF,\n\t37662 - 11904: 0xEBDE,\n\t37663 - 11904: 0xEBE0,\n\t37664 - 11904: 0xBFF5,\n\t37665 - 11904: 0xC042,\n\t37666 - 11904: 0xBFFA,\n\t37667 - 11904: 0xEBE7,\n\t37668 - 11904: 0xEBF7,\n\t37669 - 11904: 0xEBF1,\n\t37670 - 11904: 0xC041,\n\t37671 - 11904: 0xEBDD,\n\t37672 - 11904: 0xC1E3,\n\t37673 - 11904: 0xEBF9,\n\t37674 - 11904: 0xEBFC,\n\t37675 - 11904: 0xBFFC,\n\t37676 - 11904: 0x90A2,\n\t37677 - 11904: 0xEBEB,\n\t37678 - 11904: 0xC044,\n\t37679 - 11904: 0xBFF9,\n\t37680 - 11904: 0x9CAB,\n\t37681 - 11904: 0x9776,\n\t37683 - 11904: 0xBFF8,\n\t37684 - 11904: 0xEBF5,\n\t37685 - 11904: 0xEBFB,\n\t37686 - 11904: 0xBFF6,\n\t37688 - 11904: 0xEBE4,\n\t37689 - 11904: 0xEBFA,\n\t37692 - 11904: 0xEBE5,\n\t37696 - 11904: 0xFC55,\n\t37697 - 11904: 0xFE45,\n\t37698 - 11904: 0x94A8,\n\t37699 - 11904: 0x9A45,\n\t37700 - 11904: 0xFA4B,\n\t37701 - 11904: 0x9DE1,\n\t37702 - 11904: 0xEBEA,\n\t37703 - 11904: 0xEED2,\n\t37704 - 11904: 0x96D9,\n\t37705 - 11904: 0xEED7,\n\t37706 - 11904: 0xC1E5,\n\t37707 - 11904: 0xC1E7,\n\t37708 - 11904: 0xEEDD,\n\t37709 - 11904: 0xC1E1,\n\t37710 - 11904: 0xEEEC,\n\t37711 - 11904: 0xEEE3,\n\t37712 - 11904: 0xEED8,\n\t37713 - 11904: 0xEED9,\n\t37714 - 11904: 0xEEE2,\n\t37716 - 11904: 0xC1EE,\n\t37717 - 11904: 0xEEE1,\n\t37718 - 11904: 0xEED1,\n\t37719 - 11904: 0xEEE0,\n\t37720 - 11904: 0xEED4,\n\t37721 - 11904: 0xEEED,\n\t37722 - 11904: 0xC1ED,\n\t37723 - 11904: 0xC1EB,\n\t37724 - 11904: 0xEED5,\n\t37726 - 11904: 0xEEE8,\n\t37727 - 11904: 0x9774,\n\t37728 - 11904: 0xEEDA,\n\t37729 - 11904: 0xEEE7,\n\t37730 - 11904: 0xFDF5,\n\t37731 - 11904: 0xEEE9,\n\t37732 - 11904: 0xEED0,\n\t37733 - 11904: 0xC1E6,\n\t37734 - 11904: 0x92E5,\n\t37735 - 11904: 0xEEEA,\n\t37736 - 11904: 0x9645,\n\t37737 - 11904: 0x91DA,\n\t37738 - 11904: 0xEEDE,\n\t37739 - 11904: 0x90A3,\n\t37740 - 11904: 0xC1EA,\n\t37741 - 11904: 0xEEDB,\n\t37742 - 11904: 0xA05F,\n\t37744 - 11904: 0xC1EC,\n\t37745 - 11904: 0xEEE4,\n\t37747 - 11904: 0x90AF,\n\t37748 - 11904: 0x97BF,\n\t37749 - 11904: 0xC1E4,\n\t37750 - 11904: 0xEED6,\n\t37751 - 11904: 0xEEE5,\n\t37752 - 11904: 0x914C,\n\t37753 - 11904: 0xEEDF,\n\t37754 - 11904: 0xEBE3,\n\t37755 - 11904: 0xEEE6,\n\t37756 - 11904: 0xEED3,\n\t37757 - 11904: 0x967A,\n\t37758 - 11904: 0xC1E9,\n\t37760 - 11904: 0xEEEB,\n\t37761 - 11904: 0x91DE,\n\t37762 - 11904: 0xC1E2,\n\t37763 - 11904: 0xEECE,\n\t37764 - 11904: 0x9A46,\n\t37765 - 11904: 0xFEB0,\n\t37766 - 11904: 0x9779,\n\t37767 - 11904: 0x946C,\n\t37768 - 11904: 0xF160,\n\t37769 - 11904: 0xF159,\n\t37770 - 11904: 0xC2E9,\n\t37772 - 11904: 0xF154,\n\t37773 - 11904: 0xF163,\n\t37774 - 11904: 0xF15B,\n\t37775 - 11904: 0xEEDC,\n\t37776 - 11904: 0x9858,\n\t37777 - 11904: 0xF165,\n\t37778 - 11904: 0xF155,\n\t37780 - 11904: 0xC2E8,\n\t37781 - 11904: 0xF15F,\n\t37782 - 11904: 0xC2EA,\n\t37783 - 11904: 0xC2F2,\n\t37784 - 11904: 0xC2F0,\n\t37785 - 11904: 0xF161,\n\t37786 - 11904: 0xC2F1,\n\t37787 - 11904: 0xF157,\n\t37788 - 11904: 0x9266,\n\t37789 - 11904: 0xF158,\n\t37790 - 11904: 0xF15D,\n\t37791 - 11904: 0xF162,\n\t37792 - 11904: 0x93FB,\n\t37793 - 11904: 0xEECD,\n\t37794 - 11904: 0xC2EB,\n\t37795 - 11904: 0xF16A,\n\t37796 - 11904: 0xF167,\n\t37797 - 11904: 0xF16B,\n\t37798 - 11904: 0xF15E,\n\t37799 - 11904: 0xF15A,\n\t37800 - 11904: 0xF168,\n\t37801 - 11904: 0xF36A,\n\t37802 - 11904: 0xF15C,\n\t37804 - 11904: 0xC2EE,\n\t37805 - 11904: 0x9A47,\n\t37806 - 11904: 0xC2ED,\n\t37807 - 11904: 0xEECF,\n\t37808 - 11904: 0xC2EF,\n\t37809 - 11904: 0xF164,\n\t37810 - 11904: 0xF166,\n\t37811 - 11904: 0xC2EC,\n\t37812 - 11904: 0xF169,\n\t37813 - 11904: 0xF153,\n\t37815 - 11904: 0xF156,\n\t37816 - 11904: 0x9749,\n\t37819 - 11904: 0x9748,\n\t37821 - 11904: 0x934A,\n\t37823 - 11904: 0x9CE2,\n\t37824 - 11904: 0xF373,\n\t37826 - 11904: 0xF363,\n\t37827 - 11904: 0xC3EB,\n\t37828 - 11904: 0xF371,\n\t37830 - 11904: 0x9264,\n\t37831 - 11904: 0xF361,\n\t37832 - 11904: 0xC3EC,\n\t37834 - 11904: 0xF36C,\n\t37835 - 11904: 0x91DF,\n\t37836 - 11904: 0xF368,\n\t37837 - 11904: 0xC3F1,\n\t37838 - 11904: 0xF372,\n\t37839 - 11904: 0xF362,\n\t37840 - 11904: 0xF365,\n\t37841 - 11904: 0xC3E9,\n\t37842 - 11904: 0xF374,\n\t37843 - 11904: 0xFB79,\n\t37844 - 11904: 0xF36D,\n\t37845 - 11904: 0xF370,\n\t37846 - 11904: 0xC3EF,\n\t37847 - 11904: 0xC3F4,\n\t37848 - 11904: 0xC3F2,\n\t37849 - 11904: 0xF369,\n\t37850 - 11904: 0xF364,\n\t37851 - 11904: 0x96D7,\n\t37852 - 11904: 0xC3ED,\n\t37853 - 11904: 0xC3EE,\n\t37854 - 11904: 0xF360,\n\t37855 - 11904: 0xC3EA,\n\t37856 - 11904: 0x9343,\n\t37857 - 11904: 0xC3E8,\n\t37858 - 11904: 0xC3F0,\n\t37859 - 11904: 0xF36F,\n\t37860 - 11904: 0xC3F3,\n\t37862 - 11904: 0xF36B,\n\t37863 - 11904: 0xF375,\n\t37864 - 11904: 0xC3F5,\n\t37868 - 11904: 0xF367,\n\t37870 - 11904: 0xF36E,\n\t37872 - 11904: 0xFDCB,\n\t37873 - 11904: 0xFE7A,\n\t37875 - 11904: 0x91DB,\n\t37876 - 11904: 0x8C6A,\n\t37877 - 11904: 0xF4F3,\n\t37878 - 11904: 0xF542,\n\t37879 - 11904: 0xF4F5,\n\t37880 - 11904: 0xF4FC,\n\t37881 - 11904: 0xF366,\n\t37882 - 11904: 0xF4FA,\n\t37883 - 11904: 0xF4E9,\n\t37884 - 11904: 0xF540,\n\t37885 - 11904: 0xC4C3,\n\t37886 - 11904: 0xF4ED,\n\t37887 - 11904: 0xF4FE,\n\t37888 - 11904: 0xF4F4,\n\t37889 - 11904: 0x97AF,\n\t37891 - 11904: 0xC4C2,\n\t37892 - 11904: 0x95DD,\n\t37894 - 11904: 0xF544,\n\t37895 - 11904: 0xF4F6,\n\t37896 - 11904: 0x9348,\n\t37897 - 11904: 0xF4FB,\n\t37898 - 11904: 0xF4FD,\n\t37899 - 11904: 0xF4E7,\n\t37900 - 11904: 0xF541,\n\t37901 - 11904: 0xF4F2,\n\t37902 - 11904: 0xF4F7,\n\t37903 - 11904: 0xF4EB,\n\t37904 - 11904: 0xF4EF,\n\t37905 - 11904: 0xF543,\n\t37906 - 11904: 0xF4F9,\n\t37907 - 11904: 0xF4E8,\n\t37908 - 11904: 0xF4EC,\n\t37909 - 11904: 0xF4EE,\n\t37910 - 11904: 0xF4F8,\n\t37911 - 11904: 0x9A4B,\n\t37912 - 11904: 0xC4C1,\n\t37913 - 11904: 0xF4F1,\n\t37915 - 11904: 0xFC45,\n\t37917 - 11904: 0x9A4D,\n\t37920 - 11904: 0xF4EA,\n\t37924 - 11904: 0x91BC,\n\t37925 - 11904: 0x90E2,\n\t37926 - 11904: 0x90B4,\n\t37927 - 11904: 0x95E1,\n\t37928 - 11904: 0xF4F0,\n\t37929 - 11904: 0xF661,\n\t37930 - 11904: 0xF666,\n\t37931 - 11904: 0xC54F,\n\t37932 - 11904: 0xF668,\n\t37933 - 11904: 0x9A4E,\n\t37934 - 11904: 0xC549,\n\t37935 - 11904: 0x87AD,\n\t37936 - 11904: 0xF664,\n\t37937 - 11904: 0xF66A,\n\t37938 - 11904: 0xC54E,\n\t37939 - 11904: 0xC54A,\n\t37941 - 11904: 0xC54B,\n\t37942 - 11904: 0xF660,\n\t37943 - 11904: 0xF667,\n\t37944 - 11904: 0xC54D,\n\t37945 - 11904: 0xF665,\n\t37946 - 11904: 0xC54C,\n\t37947 - 11904: 0xF65F,\n\t37948 - 11904: 0xF663,\n\t37949 - 11904: 0xF662,\n\t37950 - 11904: 0x9A4F,\n\t37951 - 11904: 0xF65E,\n\t37952 - 11904: 0xF669,\n\t37954 - 11904: 0xFE40,\n\t37955 - 11904: 0xFE43,\n\t37956 - 11904: 0xC5B1,\n\t37957 - 11904: 0xF76D,\n\t37958 - 11904: 0xF770,\n\t37959 - 11904: 0xF76C,\n\t37960 - 11904: 0xF76E,\n\t37961 - 11904: 0xF76F,\n\t37962 - 11904: 0xF769,\n\t37963 - 11904: 0xF76A,\n\t37964 - 11904: 0xF767,\n\t37965 - 11904: 0x96DD,\n\t37967 - 11904: 0xF76B,\n\t37968 - 11904: 0xF768,\n\t37969 - 11904: 0xC5B2,\n\t37970 - 11904: 0xC5B3,\n\t37972 - 11904: 0x9A51,\n\t37973 - 11904: 0xF84B,\n\t37975 - 11904: 0xF84D,\n\t37976 - 11904: 0x96A7,\n\t37979 - 11904: 0x90B0,\n\t37981 - 11904: 0xF84C,\n\t37982 - 11904: 0xF84E,\n\t37984 - 11904: 0xC5E0,\n\t37986 - 11904: 0xF84A,\n\t37987 - 11904: 0xC5DF,\n\t37988 - 11904: 0xC5E1,\n\t37989 - 11904: 0x9C4E,\n\t37991 - 11904: 0x9443,\n\t37992 - 11904: 0xF8CB,\n\t37993 - 11904: 0xF8CC,\n\t37994 - 11904: 0xC644,\n\t37995 - 11904: 0xF8CA,\n\t37996 - 11904: 0x8EBA,\n\t37997 - 11904: 0xF953,\n\t37998 - 11904: 0xF952,\n\t37999 - 11904: 0xF954,\n\t38000 - 11904: 0xC65F,\n\t38001 - 11904: 0xF955,\n\t38002 - 11904: 0xC65E,\n\t38003 - 11904: 0xF956,\n\t38004 - 11904: 0xF972,\n\t38005 - 11904: 0xF975,\n\t38006 - 11904: 0xF974,\n\t38007 - 11904: 0xC668,\n\t38008 - 11904: 0xF973,\n\t38009 - 11904: 0x9A52,\n\t38011 - 11904: 0xFCC1,\n\t38012 - 11904: 0xC672,\n\t38013 - 11904: 0xC670,\n\t38014 - 11904: 0xC671,\n\t38015 - 11904: 0xC677,\n\t38016 - 11904: 0xF9C0,\n\t38017 - 11904: 0xF9C1,\n\t38018 - 11904: 0xF9BF,\n\t38019 - 11904: 0xF9C9,\n\t38021 - 11904: 0x8BE9,\n\t38047 - 11904: 0x9CAF,\n\t38050 - 11904: 0x8BFD,\n\t38081 - 11904: 0x9ABC,\n\t38083 - 11904: 0x9AB8,\n\t38108 - 11904: 0x9AAE,\n\t38134 - 11904: 0x9AA7,\n\t38189 - 11904: 0x9A53,\n\t38215 - 11904: 0x9D74,\n\t38263 - 11904: 0xAAF8,\n\t38264 - 11904: 0x8BEA,\n\t38266 - 11904: 0xD844,\n\t38267 - 11904: 0xDC78,\n\t38268 - 11904: 0xE8A5,\n\t38269 - 11904: 0xF376,\n\t38271 - 11904: 0x8BEB,\n\t38272 - 11904: 0xAAF9,\n\t38274 - 11904: 0xADAC,\n\t38275 - 11904: 0xB07B,\n\t38277 - 11904: 0x90B2,\n\t38278 - 11904: 0xD845,\n\t38280 - 11904: 0xD846,\n\t38281 - 11904: 0xB3AC,\n\t38283 - 11904: 0xB67D,\n\t38284 - 11904: 0xDC7A,\n\t38285 - 11904: 0xDC79,\n\t38286 - 11904: 0xB6A3,\n\t38287 - 11904: 0xB67C,\n\t38288 - 11904: 0xDC7B,\n\t38289 - 11904: 0xB67E,\n\t38290 - 11904: 0xB6A2,\n\t38291 - 11904: 0xB6A1,\n\t38292 - 11904: 0xB67B,\n\t38294 - 11904: 0x95E9,\n\t38295 - 11904: 0x95E8,\n\t38296 - 11904: 0xB968,\n\t38297 - 11904: 0x95E6,\n\t38299 - 11904: 0xE0D0,\n\t38300 - 11904: 0xE0CE,\n\t38302 - 11904: 0xE0CF,\n\t38303 - 11904: 0xE0CD,\n\t38304 - 11904: 0x90B5,\n\t38305 - 11904: 0xBBD2,\n\t38306 - 11904: 0x9A54,\n\t38307 - 11904: 0xBBD5,\n\t38308 - 11904: 0xBBD7,\n\t38309 - 11904: 0xBBD6,\n\t38310 - 11904: 0x90B3,\n\t38311 - 11904: 0x95E7,\n\t38312 - 11904: 0xBBD3,\n\t38313 - 11904: 0xBBD4,\n\t38314 - 11904: 0x8B50,\n\t38315 - 11904: 0xE8A7,\n\t38316 - 11904: 0xE8A6,\n\t38317 - 11904: 0xBE5B,\n\t38318 - 11904: 0xE8A8,\n\t38320 - 11904: 0xE8A9,\n\t38321 - 11904: 0xBE5C,\n\t38325 - 11904: 0xEC4D,\n\t38326 - 11904: 0xEC4B,\n\t38327 - 11904: 0xEEF3,\n\t38329 - 11904: 0xEC49,\n\t38330 - 11904: 0xEC4A,\n\t38331 - 11904: 0xC046,\n\t38332 - 11904: 0xEC46,\n\t38333 - 11904: 0xEC4E,\n\t38334 - 11904: 0xEC48,\n\t38335 - 11904: 0xEC4C,\n\t38336 - 11904: 0xEEEF,\n\t38339 - 11904: 0xEEF1,\n\t38341 - 11904: 0xEEF2,\n\t38342 - 11904: 0xC1F3,\n\t38343 - 11904: 0xEEEE,\n\t38344 - 11904: 0xC1F2,\n\t38345 - 11904: 0xEEF0,\n\t38346 - 11904: 0xC1EF,\n\t38347 - 11904: 0xC1F0,\n\t38348 - 11904: 0xC1F1,\n\t38349 - 11904: 0xEC47,\n\t38352 - 11904: 0xC2F5,\n\t38353 - 11904: 0xF16E,\n\t38354 - 11904: 0xF16C,\n\t38355 - 11904: 0xF16D,\n\t38356 - 11904: 0xC2F3,\n\t38357 - 11904: 0xC2F6,\n\t38358 - 11904: 0xC2F4,\n\t38362 - 11904: 0xF377,\n\t38363 - 11904: 0xF378,\n\t38364 - 11904: 0xC3F6,\n\t38366 - 11904: 0xF545,\n\t38367 - 11904: 0xF547,\n\t38368 - 11904: 0xF546,\n\t38369 - 11904: 0xC4C4,\n\t38370 - 11904: 0xC550,\n\t38371 - 11904: 0xF66D,\n\t38372 - 11904: 0xF66C,\n\t38373 - 11904: 0xF66B,\n\t38376 - 11904: 0x8BEC,\n\t38388 - 11904: 0x9A56,\n\t38428 - 11904: 0xAAFA,\n\t38429 - 11904: 0x8BFB,\n\t38430 - 11904: 0xC9AA,\n\t38432 - 11904: 0xCA58,\n\t38433 - 11904: 0xA6E9,\n\t38434 - 11904: 0xCA56,\n\t38435 - 11904: 0xCA59,\n\t38436 - 11904: 0xCA57,\n\t38440 - 11904: 0xCBAE,\n\t38442 - 11904: 0xA8C1,\n\t38444 - 11904: 0xA8C2,\n\t38445 - 11904: 0xCBB0,\n\t38446 - 11904: 0xA8BF,\n\t38447 - 11904: 0xCBAF,\n\t38448 - 11904: 0xCBAD,\n\t38449 - 11904: 0xA8C0,\n\t38450 - 11904: 0xA8BE,\n\t38451 - 11904: 0x9A57,\n\t38456 - 11904: 0xA0AA,\n\t38457 - 11904: 0xCDD8,\n\t38458 - 11904: 0xCDDB,\n\t38459 - 11904: 0xAAFD,\n\t38460 - 11904: 0xCDDA,\n\t38461 - 11904: 0xCDD9,\n\t38463 - 11904: 0xAAFC,\n\t38464 - 11904: 0xAAFB,\n\t38465 - 11904: 0x9FA6,\n\t38466 - 11904: 0xAB40,\n\t38467 - 11904: 0xCDDC,\n\t38468 - 11904: 0xAAFE,\n\t38469 - 11904: 0x99CC,\n\t38474 - 11904: 0xD0C6,\n\t38475 - 11904: 0xADAE,\n\t38476 - 11904: 0xADAF,\n\t38477 - 11904: 0xADB0,\n\t38478 - 11904: 0xD0C7,\n\t38479 - 11904: 0xD0C3,\n\t38480 - 11904: 0xADAD,\n\t38481 - 11904: 0xD0C4,\n\t38483 - 11904: 0xD0C5,\n\t38484 - 11904: 0xD0C2,\n\t38486 - 11904: 0x9C59,\n\t38488 - 11904: 0xB0A4,\n\t38491 - 11904: 0xB0A1,\n\t38492 - 11904: 0xD445,\n\t38493 - 11904: 0xB0A2,\n\t38494 - 11904: 0xB0A5,\n\t38495 - 11904: 0xD446,\n\t38497 - 11904: 0xB07E,\n\t38498 - 11904: 0xB07C,\n\t38499 - 11904: 0xB07D,\n\t38500 - 11904: 0xB0A3,\n\t38505 - 11904: 0x99B5,\n\t38506 - 11904: 0xB3AD,\n\t38507 - 11904: 0xD849,\n\t38508 - 11904: 0xB3B5,\n\t38509 - 11904: 0xD848,\n\t38511 - 11904: 0xD84B,\n\t38512 - 11904: 0xB3B1,\n\t38513 - 11904: 0xD84A,\n\t38514 - 11904: 0xB6AB,\n\t38515 - 11904: 0xB3AF,\n\t38516 - 11904: 0xB3B2,\n\t38517 - 11904: 0xB3AE,\n\t38518 - 11904: 0xB3B3,\n\t38519 - 11904: 0xB3B4,\n\t38520 - 11904: 0xB3B0,\n\t38523 - 11904: 0x90BE,\n\t38524 - 11904: 0xD847,\n\t38525 - 11904: 0xB6A7,\n\t38526 - 11904: 0xDC7D,\n\t38528 - 11904: 0xDCA3,\n\t38529 - 11904: 0x9FAF,\n\t38531 - 11904: 0xDCA2,\n\t38532 - 11904: 0xB6AC,\n\t38533 - 11904: 0xB6A8,\n\t38534 - 11904: 0xB6A9,\n\t38535 - 11904: 0xDC7C,\n\t38536 - 11904: 0xDC7E,\n\t38537 - 11904: 0xDCA1,\n\t38538 - 11904: 0xB6A4,\n\t38539 - 11904: 0xB6A6,\n\t38541 - 11904: 0xB6AA,\n\t38542 - 11904: 0xB6A5,\n\t38543 - 11904: 0x95F2,\n\t38545 - 11904: 0xE0D3,\n\t38546 - 11904: 0xE0D1,\n\t38547 - 11904: 0xE0D2,\n\t38548 - 11904: 0xB96A,\n\t38549 - 11904: 0xB96B,\n\t38550 - 11904: 0x90BF,\n\t38551 - 11904: 0xE0D4,\n\t38552 - 11904: 0xB969,\n\t38553 - 11904: 0xBBD8,\n\t38555 - 11904: 0xBBDA,\n\t38556 - 11904: 0xBBD9,\n\t38558 - 11904: 0xE4BB,\n\t38561 - 11904: 0xE4BC,\n\t38562 - 11904: 0xE8AB,\n\t38563 - 11904: 0x90C1,\n\t38564 - 11904: 0xE8AA,\n\t38565 - 11904: 0xFEE4,\n\t38567 - 11904: 0xC047,\n\t38568 - 11904: 0xC048,\n\t38569 - 11904: 0xEC4F,\n\t38570 - 11904: 0xC049,\n\t38572 - 11904: 0xEEF6,\n\t38574 - 11904: 0xEEF4,\n\t38576 - 11904: 0xEEF5,\n\t38577 - 11904: 0xC1F4,\n\t38579 - 11904: 0xF16F,\n\t38580 - 11904: 0xC3F7,\n\t38582 - 11904: 0xC6D7,\n\t38584 - 11904: 0xC1F5,\n\t38585 - 11904: 0xAB41,\n\t38587 - 11904: 0xB0A6,\n\t38588 - 11904: 0xD447,\n\t38589 - 11904: 0x90C7,\n\t38591 - 11904: 0xD84C,\n\t38592 - 11904: 0xB3B6,\n\t38593 - 11904: 0xB6AD,\n\t38594 - 11904: 0xDCA4,\n\t38595 - 11904: 0xDCA6,\n\t38596 - 11904: 0xB6AF,\n\t38597 - 11904: 0xB6AE,\n\t38598 - 11904: 0xB6B0,\n\t38599 - 11904: 0xB6B1,\n\t38600 - 11904: 0xDCA5,\n\t38601 - 11904: 0xB96E,\n\t38602 - 11904: 0xB96F,\n\t38603 - 11904: 0xB96D,\n\t38604 - 11904: 0xBBDB,\n\t38605 - 11904: 0xB96C,\n\t38606 - 11904: 0xE0D5,\n\t38610 - 11904: 0xBBDC,\n\t38611 - 11904: 0xE8AC,\n\t38612 - 11904: 0xEC50,\n\t38613 - 11904: 0xC04A,\n\t38614 - 11904: 0xC1F6,\n\t38615 - 11904: 0xF170,\n\t38616 - 11904: 0xF174,\n\t38617 - 11904: 0xC2F9,\n\t38618 - 11904: 0xF171,\n\t38619 - 11904: 0xC2FA,\n\t38620 - 11904: 0xC2F8,\n\t38621 - 11904: 0xF175,\n\t38622 - 11904: 0xC2FB,\n\t38623 - 11904: 0xF173,\n\t38625 - 11904: 0xF379,\n\t38626 - 11904: 0xC2F7,\n\t38627 - 11904: 0xC3F8,\n\t38629 - 11904: 0xF8CD,\n\t38632 - 11904: 0xAB42,\n\t38633 - 11904: 0xB3B8,\n\t38634 - 11904: 0xB3B7,\n\t38639 - 11904: 0xB6B2,\n\t38640 - 11904: 0xDCA8,\n\t38641 - 11904: 0xDCA7,\n\t38642 - 11904: 0xB6B3,\n\t38644 - 11904: 0x92E4,\n\t38645 - 11904: 0xE0D9,\n\t38646 - 11904: 0xB973,\n\t38647 - 11904: 0xB970,\n\t38648 - 11904: 0xE0D8,\n\t38649 - 11904: 0xB972,\n\t38650 - 11904: 0xE0D6,\n\t38651 - 11904: 0xB971,\n\t38653 - 11904: 0xE0D7,\n\t38655 - 11904: 0xE4BD,\n\t38656 - 11904: 0xBBDD,\n\t38658 - 11904: 0xE8AF,\n\t38659 - 11904: 0x9F52,\n\t38660 - 11904: 0xBE5D,\n\t38661 - 11904: 0xE8AD,\n\t38662 - 11904: 0xBE5E,\n\t38663 - 11904: 0xBE5F,\n\t38664 - 11904: 0xE8AE,\n\t38665 - 11904: 0xBE60,\n\t38667 - 11904: 0xEC51,\n\t38669 - 11904: 0xC04E,\n\t38670 - 11904: 0xC04B,\n\t38671 - 11904: 0xC050,\n\t38672 - 11904: 0xEC53,\n\t38673 - 11904: 0xC04C,\n\t38674 - 11904: 0xEC52,\n\t38675 - 11904: 0xC04F,\n\t38678 - 11904: 0xC04D,\n\t38680 - 11904: 0xEEF9,\n\t38681 - 11904: 0xEEFB,\n\t38683 - 11904: 0x90DB,\n\t38684 - 11904: 0xC1F7,\n\t38685 - 11904: 0xEEFA,\n\t38686 - 11904: 0xC1F8,\n\t38687 - 11904: 0xEEF8,\n\t38688 - 11904: 0xEEF7,\n\t38689 - 11904: 0xA066,\n\t38690 - 11904: 0xF177,\n\t38691 - 11904: 0xF176,\n\t38692 - 11904: 0xC2FC,\n\t38693 - 11904: 0xF178,\n\t38694 - 11904: 0xF37E,\n\t38695 - 11904: 0xC3FA,\n\t38696 - 11904: 0xF37D,\n\t38697 - 11904: 0xF37A,\n\t38698 - 11904: 0xC3F9,\n\t38699 - 11904: 0xF37B,\n\t38700 - 11904: 0xF37C,\n\t38702 - 11904: 0xF548,\n\t38703 - 11904: 0xF549,\n\t38704 - 11904: 0xC4C5,\n\t38705 - 11904: 0x90D2,\n\t38706 - 11904: 0xC553,\n\t38708 - 11904: 0x876B,\n\t38709 - 11904: 0xF66E,\n\t38710 - 11904: 0x90D4,\n\t38712 - 11904: 0xC551,\n\t38713 - 11904: 0xC552,\n\t38714 - 11904: 0xF66F,\n\t38717 - 11904: 0xC5B4,\n\t38718 - 11904: 0xC5B5,\n\t38719 - 11904: 0xF771,\n\t38720 - 11904: 0x9A5B,\n\t38721 - 11904: 0x95FD,\n\t38722 - 11904: 0xC645,\n\t38723 - 11904: 0xF8CF,\n\t38724 - 11904: 0xC647,\n\t38726 - 11904: 0xF8CE,\n\t38727 - 11904: 0xF8D0,\n\t38728 - 11904: 0xC646,\n\t38729 - 11904: 0xF957,\n\t38730 - 11904: 0x87B1,\n\t38731 - 11904: 0xF9AD,\n\t38737 - 11904: 0x8BC4,\n\t38738 - 11904: 0xAB43,\n\t38741 - 11904: 0x8C66,\n\t38742 - 11904: 0xB974,\n\t38743 - 11904: 0x90DE,\n\t38744 - 11904: 0xE4BE,\n\t38746 - 11904: 0xE8B0,\n\t38747 - 11904: 0xC051,\n\t38748 - 11904: 0xC052,\n\t38749 - 11904: 0x9CE4,\n\t38750 - 11904: 0xAB44,\n\t38751 - 11904: 0x90E1,\n\t38752 - 11904: 0xBE61,\n\t38753 - 11904: 0xC3FB,\n\t38754 - 11904: 0xADB1,\n\t38758 - 11904: 0xC053,\n\t38760 - 11904: 0xC5E2,\n\t38761 - 11904: 0xADB2,\n\t38762 - 11904: 0xD84D,\n\t38764 - 11904: 0xDCA9,\n\t38765 - 11904: 0x9E46,\n\t38766 - 11904: 0xDCAB,\n\t38768 - 11904: 0xDCAA,\n\t38769 - 11904: 0x9651,\n\t38770 - 11904: 0xE0DD,\n\t38771 - 11904: 0xE0DA,\n\t38772 - 11904: 0xB975,\n\t38774 - 11904: 0xB976,\n\t38775 - 11904: 0xE0DB,\n\t38776 - 11904: 0xE0DC,\n\t38778 - 11904: 0xE4C0,\n\t38779 - 11904: 0xE4C5,\n\t38780 - 11904: 0xBBDE,\n\t38781 - 11904: 0xE4BF,\n\t38782 - 11904: 0xE4C1,\n\t38783 - 11904: 0xE4C8,\n\t38784 - 11904: 0xE4C3,\n\t38785 - 11904: 0xE4C7,\n\t38786 - 11904: 0xE4C4,\n\t38787 - 11904: 0xE4C2,\n\t38788 - 11904: 0xE4C6,\n\t38789 - 11904: 0xBBDF,\n\t38791 - 11904: 0xFB58,\n\t38792 - 11904: 0xE8B3,\n\t38793 - 11904: 0x90E6,\n\t38794 - 11904: 0xE8B1,\n\t38795 - 11904: 0xBE63,\n\t38797 - 11904: 0xBE62,\n\t38798 - 11904: 0xE8B2,\n\t38799 - 11904: 0xBE64,\n\t38804 - 11904: 0xEC56,\n\t38807 - 11904: 0xEC55,\n\t38808 - 11904: 0xC054,\n\t38809 - 11904: 0xEC54,\n\t38810 - 11904: 0xEEFC,\n\t38811 - 11904: 0x9650,\n\t38812 - 11904: 0xEEFE,\n\t38813 - 11904: 0xEF41,\n\t38814 - 11904: 0xEF40,\n\t38815 - 11904: 0x90E7,\n\t38816 - 11904: 0xC1F9,\n\t38817 - 11904: 0xEEFD,\n\t38818 - 11904: 0xF1A1,\n\t38819 - 11904: 0xC2FD,\n\t38820 - 11904: 0xF17D,\n\t38821 - 11904: 0xF1A2,\n\t38822 - 11904: 0xC2FE,\n\t38824 - 11904: 0xF17B,\n\t38826 - 11904: 0xF17E,\n\t38827 - 11904: 0xF17C,\n\t38828 - 11904: 0xF179,\n\t38829 - 11904: 0xC340,\n\t38830 - 11904: 0xF17A,\n\t38833 - 11904: 0x90E8,\n\t38834 - 11904: 0x9A5D,\n\t38835 - 11904: 0xF3A1,\n\t38836 - 11904: 0x9F7A,\n\t38838 - 11904: 0xF3A3,\n\t38839 - 11904: 0xF3A2,\n\t38840 - 11904: 0x9B5C,\n\t38841 - 11904: 0xF54A,\n\t38842 - 11904: 0x9F7C,\n\t38843 - 11904: 0xF54B,\n\t38845 - 11904: 0xFC52,\n\t38846 - 11904: 0x90E9,\n\t38847 - 11904: 0xF670,\n\t38848 - 11904: 0x90EA,\n\t38849 - 11904: 0xC5B7,\n\t38850 - 11904: 0x9A5E,\n\t38851 - 11904: 0xC5B6,\n\t38852 - 11904: 0xF84F,\n\t38853 - 11904: 0xF850,\n\t38854 - 11904: 0xC648,\n\t38855 - 11904: 0xF8D1,\n\t38856 - 11904: 0x9F76,\n\t38857 - 11904: 0xC669,\n\t38859 - 11904: 0xADB3,\n\t38860 - 11904: 0xB6B4,\n\t38861 - 11904: 0xE4CA,\n\t38862 - 11904: 0xE4C9,\n\t38863 - 11904: 0xE8B5,\n\t38864 - 11904: 0xE8B4,\n\t38866 - 11904: 0x90EB,\n\t38867 - 11904: 0xC1FA,\n\t38868 - 11904: 0xEF43,\n\t38869 - 11904: 0xEF42,\n\t38870 - 11904: 0xF1A5,\n\t38871 - 11904: 0xF1A3,\n\t38872 - 11904: 0xF1A6,\n\t38873 - 11904: 0xF1A4,\n\t38876 - 11904: 0xC3FC,\n\t38877 - 11904: 0xF3A4,\n\t38878 - 11904: 0xF3A5,\n\t38879 - 11904: 0xF3A6,\n\t38880 - 11904: 0x90EC,\n\t38881 - 11904: 0xF671,\n\t38883 - 11904: 0xF772,\n\t38885 - 11904: 0xF8D2,\n\t38886 - 11904: 0x8BEE,\n\t38893 - 11904: 0xADB4,\n\t38894 - 11904: 0x90EE,\n\t38896 - 11904: 0xEC57,\n\t38897 - 11904: 0xEF44,\n\t38898 - 11904: 0x91C6,\n\t38899 - 11904: 0xADB5,\n\t38901 - 11904: 0x90F2,\n\t38902 - 11904: 0xBBE0,\n\t38904 - 11904: 0xEC58,\n\t38905 - 11904: 0xC341,\n\t38906 - 11904: 0xF1A7,\n\t38907 - 11904: 0xC3FD,\n\t38909 - 11904: 0xF54C,\n\t38910 - 11904: 0xF54D,\n\t38911 - 11904: 0xC554,\n\t38912 - 11904: 0xF851,\n\t38913 - 11904: 0xADB6,\n\t38914 - 11904: 0xB3BB,\n\t38915 - 11904: 0xB3BC,\n\t38916 - 11904: 0xD84E,\n\t38917 - 11904: 0xB6B5,\n\t38918 - 11904: 0xB6B6,\n\t38919 - 11904: 0xDCAC,\n\t38920 - 11904: 0xB6B7,\n\t38922 - 11904: 0xB97A,\n\t38924 - 11904: 0xB97C,\n\t38925 - 11904: 0xE0DF,\n\t38926 - 11904: 0xE0E0,\n\t38927 - 11904: 0xE0DE,\n\t38928 - 11904: 0xB977,\n\t38929 - 11904: 0xB978,\n\t38930 - 11904: 0xB97B,\n\t38931 - 11904: 0xB979,\n\t38932 - 11904: 0xFCBC,\n\t38933 - 11904: 0x8A74,\n\t38934 - 11904: 0xE4CB,\n\t38935 - 11904: 0xBBE1,\n\t38936 - 11904: 0xBBE2,\n\t38939 - 11904: 0xE8BC,\n\t38940 - 11904: 0xBE67,\n\t38941 - 11904: 0xE8B7,\n\t38942 - 11904: 0xE8B6,\n\t38943 - 11904: 0x9657,\n\t38944 - 11904: 0xE8BB,\n\t38945 - 11904: 0xBE65,\n\t38947 - 11904: 0x9CEF,\n\t38948 - 11904: 0xC05B,\n\t38950 - 11904: 0xE8B8,\n\t38951 - 11904: 0xE8BD,\n\t38952 - 11904: 0xE8BA,\n\t38953 - 11904: 0xE8B9,\n\t38955 - 11904: 0xBE66,\n\t38957 - 11904: 0xC059,\n\t38958 - 11904: 0x9FDF,\n\t38959 - 11904: 0xEC5A,\n\t38960 - 11904: 0xC055,\n\t38962 - 11904: 0xEC5B,\n\t38963 - 11904: 0x90F7,\n\t38964 - 11904: 0x90F6,\n\t38965 - 11904: 0xEC59,\n\t38967 - 11904: 0xC058,\n\t38968 - 11904: 0xC056,\n\t38969 - 11904: 0xC05A,\n\t38971 - 11904: 0xC057,\n\t38977 - 11904: 0xEF45,\n\t38979 - 11904: 0xEF4A,\n\t38980 - 11904: 0xEF46,\n\t38981 - 11904: 0xEF49,\n\t38982 - 11904: 0xC1FB,\n\t38983 - 11904: 0x9B5E,\n\t38984 - 11904: 0xEDD4,\n\t38985 - 11904: 0xEF48,\n\t38986 - 11904: 0xEF47,\n\t38987 - 11904: 0x90F8,\n\t38988 - 11904: 0xC344,\n\t38989 - 11904: 0xC342,\n\t38990 - 11904: 0xC345,\n\t38991 - 11904: 0xC343,\n\t38992 - 11904: 0xF1A8,\n\t38993 - 11904: 0xF1A9,\n\t38994 - 11904: 0xF1AA,\n\t38995 - 11904: 0xC346,\n\t38998 - 11904: 0x8CFC,\n\t38999 - 11904: 0xF3AA,\n\t39000 - 11904: 0xC440,\n\t39001 - 11904: 0xF3A8,\n\t39003 - 11904: 0xC441,\n\t39004 - 11904: 0xF3A7,\n\t39005 - 11904: 0xF3A9,\n\t39006 - 11904: 0xC3FE,\n\t39007 - 11904: 0xF551,\n\t39008 - 11904: 0xF54E,\n\t39010 - 11904: 0xF54F,\n\t39011 - 11904: 0xF550,\n\t39012 - 11904: 0xF672,\n\t39013 - 11904: 0xC556,\n\t39014 - 11904: 0x90F9,\n\t39015 - 11904: 0xC555,\n\t39016 - 11904: 0x8CC9,\n\t39017 - 11904: 0xF774,\n\t39018 - 11904: 0xF773,\n\t39019 - 11904: 0xC5B8,\n\t39020 - 11904: 0xFA6A,\n\t39023 - 11904: 0xC5E3,\n\t39024 - 11904: 0xC649,\n\t39025 - 11904: 0xC660,\n\t39026 - 11904: 0xF958,\n\t39027 - 11904: 0xF9AE,\n\t39028 - 11904: 0xF9AF,\n\t39029 - 11904: 0x8BEF,\n\t39080 - 11904: 0xADB7,\n\t39081 - 11904: 0xDCAD,\n\t39084 - 11904: 0xE0E1,\n\t39085 - 11904: 0xE4CC,\n\t39086 - 11904: 0xE4CD,\n\t39087 - 11904: 0xBBE3,\n\t39089 - 11904: 0xBBE4,\n\t39090 - 11904: 0xE8BE,\n\t39091 - 11904: 0xBE68,\n\t39092 - 11904: 0x9FE0,\n\t39094 - 11904: 0xC1FC,\n\t39095 - 11904: 0x9142,\n\t39096 - 11904: 0xF1AB,\n\t39097 - 11904: 0x9A62,\n\t39098 - 11904: 0xC347,\n\t39099 - 11904: 0xF3AD,\n\t39100 - 11904: 0xC442,\n\t39101 - 11904: 0xF3AC,\n\t39102 - 11904: 0xF3AE,\n\t39103 - 11904: 0xF3AB,\n\t39104 - 11904: 0xF675,\n\t39105 - 11904: 0xF552,\n\t39106 - 11904: 0xF553,\n\t39107 - 11904: 0x9569,\n\t39108 - 11904: 0xC4C6,\n\t39110 - 11904: 0xF674,\n\t39111 - 11904: 0x9144,\n\t39112 - 11904: 0x9143,\n\t39113 - 11904: 0xF673,\n\t39114 - 11904: 0x9141,\n\t39115 - 11904: 0xF775,\n\t39116 - 11904: 0xF9B0,\n\t39118 - 11904: 0x8BF0,\n\t39131 - 11904: 0xADB8,\n\t39132 - 11904: 0x9660,\n\t39134 - 11904: 0x8BF1,\n\t39135 - 11904: 0xADB9,\n\t39136 - 11904: 0x99F6,\n\t39137 - 11904: 0x9149,\n\t39138 - 11904: 0xB0A7,\n\t39139 - 11904: 0xD448,\n\t39141 - 11904: 0xD84F,\n\t39142 - 11904: 0x914A,\n\t39143 - 11904: 0xB6B8,\n\t39145 - 11904: 0xB6BB,\n\t39146 - 11904: 0xB6B9,\n\t39147 - 11904: 0xDCAE,\n\t39148 - 11904: 0x914B,\n\t39149 - 11904: 0xB6BD,\n\t39151 - 11904: 0xB6BA,\n\t39153 - 11904: 0x9A64,\n\t39154 - 11904: 0xB6BC,\n\t39156 - 11904: 0xB97E,\n\t39157 - 11904: 0x8ABF,\n\t39158 - 11904: 0xE0E2,\n\t39161 - 11904: 0xE0E3,\n\t39162 - 11904: 0xE8C0,\n\t39164 - 11904: 0xB97D,\n\t39165 - 11904: 0xB9A1,\n\t39166 - 11904: 0xB9A2,\n\t39168 - 11904: 0xE4CF,\n\t39170 - 11904: 0xE4CE,\n\t39171 - 11904: 0xBBE5,\n\t39173 - 11904: 0xBBE6,\n\t39175 - 11904: 0xE4D0,\n\t39176 - 11904: 0xE8BF,\n\t39177 - 11904: 0xBBE8,\n\t39178 - 11904: 0xBE69,\n\t39180 - 11904: 0xBBE7,\n\t39182 - 11904: 0x9A66,\n\t39184 - 11904: 0xC05C,\n\t39185 - 11904: 0xE8C1,\n\t39186 - 11904: 0xBE6B,\n\t39187 - 11904: 0xBE6A,\n\t39188 - 11904: 0xE8C2,\n\t39189 - 11904: 0xE8C5,\n\t39190 - 11904: 0xE8C3,\n\t39191 - 11904: 0xE8C4,\n\t39192 - 11904: 0xBE6C,\n\t39193 - 11904: 0x9A67,\n\t39194 - 11904: 0xC061,\n\t39195 - 11904: 0xC05F,\n\t39196 - 11904: 0x9A69,\n\t39198 - 11904: 0xC05E,\n\t39199 - 11904: 0xEC5D,\n\t39201 - 11904: 0xC060,\n\t39204 - 11904: 0xEC5C,\n\t39205 - 11904: 0xEF4B,\n\t39207 - 11904: 0xEC5E,\n\t39208 - 11904: 0xC05D,\n\t39209 - 11904: 0xEC5F,\n\t39210 - 11904: 0xEF4E,\n\t39211 - 11904: 0xEF4C,\n\t39212 - 11904: 0xEF4D,\n\t39213 - 11904: 0xEF52,\n\t39214 - 11904: 0xC34B,\n\t39215 - 11904: 0xEF51,\n\t39216 - 11904: 0xEF54,\n\t39217 - 11904: 0xEF53,\n\t39218 - 11904: 0xEF50,\n\t39219 - 11904: 0xEF4F,\n\t39221 - 11904: 0xC1FD,\n\t39223 - 11904: 0x9A6A,\n\t39224 - 11904: 0x9652,\n\t39225 - 11904: 0x914D,\n\t39226 - 11904: 0xF1AE,\n\t39227 - 11904: 0x9666,\n\t39228 - 11904: 0xF1AD,\n\t39229 - 11904: 0xC34A,\n\t39230 - 11904: 0xC348,\n\t39231 - 11904: 0xC349,\n\t39232 - 11904: 0x9F7B,\n\t39233 - 11904: 0xF1AC,\n\t39234 - 11904: 0x9A6B,\n\t39235 - 11904: 0xF3B1,\n\t39237 - 11904: 0xC443,\n\t39239 - 11904: 0xF3B0,\n\t39240 - 11904: 0xF3AF,\n\t39241 - 11904: 0xC444,\n\t39242 - 11904: 0xA06C,\n\t39243 - 11904: 0xF558,\n\t39244 - 11904: 0xF557,\n\t39245 - 11904: 0x9667,\n\t39246 - 11904: 0xF555,\n\t39248 - 11904: 0xF554,\n\t39249 - 11904: 0xC4C8,\n\t39250 - 11904: 0xC4C7,\n\t39251 - 11904: 0xF559,\n\t39252 - 11904: 0xF776,\n\t39253 - 11904: 0xC5B9,\n\t39254 - 11904: 0xF677,\n\t39255 - 11904: 0xC557,\n\t39256 - 11904: 0xF676,\n\t39257 - 11904: 0xF556,\n\t39259 - 11904: 0xF777,\n\t39260 - 11904: 0xC5E4,\n\t39261 - 11904: 0x9A6C,\n\t39262 - 11904: 0xC661,\n\t39263 - 11904: 0xF959,\n\t39265 - 11904: 0xF9B1,\n\t39266 - 11904: 0x9A6D,\n\t39267 - 11904: 0x8BF2,\n\t39318 - 11904: 0xADBA,\n\t39319 - 11904: 0xD850,\n\t39320 - 11904: 0xEF55,\n\t39321 - 11904: 0xADBB,\n\t39323 - 11904: 0x966A,\n\t39324 - 11904: 0xE4D2,\n\t39325 - 11904: 0xE4D1,\n\t39326 - 11904: 0xEC60,\n\t39329 - 11904: 0xEF57,\n\t39331 - 11904: 0xEF56,\n\t39332 - 11904: 0xFCEA,\n\t39333 - 11904: 0xC34C,\n\t39334 - 11904: 0xF3B2,\n\t39335 - 11904: 0xF3B3,\n\t39336 - 11904: 0xC4C9,\n\t39338 - 11904: 0x966C,\n\t39339 - 11904: 0xF9B2,\n\t39340 - 11904: 0xB0A8,\n\t39341 - 11904: 0xB6BF,\n\t39342 - 11904: 0xB6BE,\n\t39343 - 11904: 0xE0E4,\n\t39344 - 11904: 0xE0E6,\n\t39345 - 11904: 0xB9A4,\n\t39346 - 11904: 0xE0E5,\n\t39347 - 11904: 0xB9A3,\n\t39348 - 11904: 0xB9A5,\n\t39349 - 11904: 0xE0E7,\n\t39352 - 11904: 0x91C4,\n\t39353 - 11904: 0xE4D4,\n\t39354 - 11904: 0xE4D6,\n\t39355 - 11904: 0xE4D5,\n\t39356 - 11904: 0x9677,\n\t39357 - 11904: 0xE4D8,\n\t39361 - 11904: 0xBBE9,\n\t39362 - 11904: 0xE4D7,\n\t39363 - 11904: 0xE4D3,\n\t39364 - 11904: 0x99F4,\n\t39365 - 11904: 0x9A6F,\n\t39367 - 11904: 0xE4D9,\n\t39369 - 11904: 0xE8CC,\n\t39371 - 11904: 0xE8CF,\n\t39372 - 11904: 0xE8D1,\n\t39373 - 11904: 0xE8C7,\n\t39374 - 11904: 0xE8CB,\n\t39375 - 11904: 0xE8C8,\n\t39376 - 11904: 0xBE6E,\n\t39377 - 11904: 0xBE71,\n\t39378 - 11904: 0xBE73,\n\t39379 - 11904: 0xE8C9,\n\t39380 - 11904: 0xE8CA,\n\t39381 - 11904: 0xBE72,\n\t39382 - 11904: 0xE8CD,\n\t39383 - 11904: 0xE8D0,\n\t39384 - 11904: 0xE8CE,\n\t39385 - 11904: 0xBE74,\n\t39386 - 11904: 0x9FAB,\n\t39387 - 11904: 0xBE70,\n\t39388 - 11904: 0xE8C6,\n\t39389 - 11904: 0xBE6D,\n\t39391 - 11904: 0xBE6F,\n\t39392 - 11904: 0x8CBE,\n\t39393 - 11904: 0x8EC1,\n\t39394 - 11904: 0xC063,\n\t39395 - 11904: 0xEC66,\n\t39396 - 11904: 0xEC64,\n\t39397 - 11904: 0xEC63,\n\t39398 - 11904: 0x9555,\n\t39399 - 11904: 0xEC69,\n\t39401 - 11904: 0xEC68,\n\t39402 - 11904: 0xEC67,\n\t39404 - 11904: 0xEC62,\n\t39405 - 11904: 0xC062,\n\t39406 - 11904: 0xEC61,\n\t39408 - 11904: 0xEC65,\n\t39409 - 11904: 0xC064,\n\t39412 - 11904: 0xEF5A,\n\t39413 - 11904: 0x9152,\n\t39414 - 11904: 0xEF5E,\n\t39415 - 11904: 0xEF5B,\n\t39416 - 11904: 0xEF5D,\n\t39417 - 11904: 0xEF5C,\n\t39418 - 11904: 0xEF59,\n\t39419 - 11904: 0xEF5F,\n\t39420 - 11904: 0xEF62,\n\t39421 - 11904: 0xEF60,\n\t39422 - 11904: 0xEF61,\n\t39423 - 11904: 0xC240,\n\t39425 - 11904: 0xC1FE,\n\t39426 - 11904: 0xEF58,\n\t39427 - 11904: 0xEF63,\n\t39428 - 11904: 0xF1B3,\n\t39429 - 11904: 0xF1B6,\n\t39430 - 11904: 0xF1B8,\n\t39431 - 11904: 0xF1B7,\n\t39433 - 11904: 0xF1B1,\n\t39434 - 11904: 0xF1B5,\n\t39435 - 11904: 0xF1B0,\n\t39436 - 11904: 0x9153,\n\t39437 - 11904: 0xF1B2,\n\t39438 - 11904: 0xC34D,\n\t39439 - 11904: 0xF1AF,\n\t39440 - 11904: 0x9155,\n\t39441 - 11904: 0xF1B4,\n\t39444 - 11904: 0xF3C0,\n\t39445 - 11904: 0xF3B5,\n\t39446 - 11904: 0xC445,\n\t39449 - 11904: 0xC446,\n\t39450 - 11904: 0xF3B4,\n\t39451 - 11904: 0xF3B9,\n\t39452 - 11904: 0xF3BF,\n\t39453 - 11904: 0xF3B7,\n\t39454 - 11904: 0xF3BE,\n\t39455 - 11904: 0x955D,\n\t39456 - 11904: 0xF3BB,\n\t39457 - 11904: 0x9671,\n\t39458 - 11904: 0xF3BA,\n\t39459 - 11904: 0xF3BD,\n\t39460 - 11904: 0xF3B8,\n\t39461 - 11904: 0xF3B6,\n\t39462 - 11904: 0x9C6D,\n\t39463 - 11904: 0xF3BC,\n\t39465 - 11904: 0xF560,\n\t39466 - 11904: 0xF55E,\n\t39467 - 11904: 0xC4CA,\n\t39468 - 11904: 0xF55D,\n\t39469 - 11904: 0xF563,\n\t39470 - 11904: 0xF561,\n\t39471 - 11904: 0x9673,\n\t39472 - 11904: 0xC4CB,\n\t39473 - 11904: 0xF55C,\n\t39474 - 11904: 0xF55A,\n\t39476 - 11904: 0xF55B,\n\t39477 - 11904: 0xC4CD,\n\t39478 - 11904: 0xF55F,\n\t39479 - 11904: 0xC4CC,\n\t39480 - 11904: 0xF562,\n\t39481 - 11904: 0xF678,\n\t39482 - 11904: 0xF67E,\n\t39483 - 11904: 0x9154,\n\t39484 - 11904: 0x9A71,\n\t39485 - 11904: 0xF679,\n\t39486 - 11904: 0xC55B,\n\t39487 - 11904: 0xF6A1,\n\t39488 - 11904: 0xC55A,\n\t39489 - 11904: 0xF67D,\n\t39490 - 11904: 0xF67C,\n\t39491 - 11904: 0xC559,\n\t39492 - 11904: 0xF67B,\n\t39493 - 11904: 0xC558,\n\t39494 - 11904: 0xF67A,\n\t39496 - 11904: 0xF77D,\n\t39497 - 11904: 0xF7A1,\n\t39498 - 11904: 0xF77E,\n\t39500 - 11904: 0xF77B,\n\t39501 - 11904: 0xC5BB,\n\t39502 - 11904: 0xF778,\n\t39503 - 11904: 0xF77C,\n\t39504 - 11904: 0xF7A3,\n\t39506 - 11904: 0xF7A2,\n\t39507 - 11904: 0xF779,\n\t39508 - 11904: 0xF77A,\n\t39509 - 11904: 0xC5BA,\n\t39510 - 11904: 0xF852,\n\t39511 - 11904: 0xC5E7,\n\t39512 - 11904: 0x9156,\n\t39513 - 11904: 0xF853,\n\t39514 - 11904: 0xC5E5,\n\t39515 - 11904: 0xC5E6,\n\t39516 - 11904: 0x966D,\n\t39518 - 11904: 0xF8D3,\n\t39519 - 11904: 0xC64A,\n\t39520 - 11904: 0xF976,\n\t39522 - 11904: 0xC66A,\n\t39523 - 11904: 0x9557,\n\t39524 - 11904: 0xF9B3,\n\t39525 - 11904: 0xC66B,\n\t39526 - 11904: 0xF9B4,\n\t39527 - 11904: 0xF9B5,\n\t39528 - 11904: 0xF9C3,\n\t39529 - 11904: 0xF9C2,\n\t39530 - 11904: 0xC67A,\n\t39531 - 11904: 0xF9CD,\n\t39532 - 11904: 0x89C6,\n\t39567 - 11904: 0x89C7,\n\t39592 - 11904: 0xB0A9,\n\t39595 - 11904: 0xE0E9,\n\t39597 - 11904: 0xE0E8,\n\t39599 - 11904: 0xBBEA,\n\t39600 - 11904: 0xBBEB,\n\t39601 - 11904: 0xE4DA,\n\t39602 - 11904: 0x8A6A,\n\t39603 - 11904: 0xE8D2,\n\t39604 - 11904: 0xEC6C,\n\t39606 - 11904: 0x8B57,\n\t39607 - 11904: 0xBE75,\n\t39608 - 11904: 0xC065,\n\t39609 - 11904: 0xEC6A,\n\t39610 - 11904: 0x9FE1,\n\t39611 - 11904: 0xEC6D,\n\t39612 - 11904: 0xC066,\n\t39613 - 11904: 0x9B5F,\n\t39614 - 11904: 0xEF64,\n\t39615 - 11904: 0xEC6B,\n\t39616 - 11904: 0xF1B9,\n\t39617 - 11904: 0xC34E,\n\t39618 - 11904: 0xF3C1,\n\t39622 - 11904: 0xF566,\n\t39623 - 11904: 0xF564,\n\t39626 - 11904: 0xF565,\n\t39629 - 11904: 0xF6A2,\n\t39631 - 11904: 0xC55C,\n\t39632 - 11904: 0xF7A4,\n\t39633 - 11904: 0xC5EA,\n\t39634 - 11904: 0xC5BC,\n\t39635 - 11904: 0xC5E8,\n\t39636 - 11904: 0xC5E9,\n\t39637 - 11904: 0xF8D4,\n\t39638 - 11904: 0xC662,\n\t39639 - 11904: 0xA05D,\n\t39640 - 11904: 0xB0AA,\n\t39644 - 11904: 0xF1BA,\n\t39647 - 11904: 0xD449,\n\t39648 - 11904: 0x915B,\n\t39649 - 11904: 0xB9A6,\n\t39650 - 11904: 0x915C,\n\t39651 - 11904: 0xE4DB,\n\t39654 - 11904: 0xBBEC,\n\t39655 - 11904: 0xE4DC,\n\t39659 - 11904: 0xE8D4,\n\t39660 - 11904: 0xE8D3,\n\t39661 - 11904: 0xC068,\n\t39662 - 11904: 0xBE76,\n\t39663 - 11904: 0xBE77,\n\t39665 - 11904: 0xE8D7,\n\t39666 - 11904: 0xE8D6,\n\t39667 - 11904: 0xE8D5,\n\t39668 - 11904: 0x915E,\n\t39670 - 11904: 0xEC6E,\n\t39671 - 11904: 0xEC71,\n\t39673 - 11904: 0xEC70,\n\t39674 - 11904: 0xEC6F,\n\t39675 - 11904: 0xC067,\n\t39676 - 11904: 0xEF68,\n\t39677 - 11904: 0xEF66,\n\t39678 - 11904: 0xEF65,\n\t39679 - 11904: 0x9F5C,\n\t39681 - 11904: 0xEF67,\n\t39682 - 11904: 0x9F57,\n\t39683 - 11904: 0xC34F,\n\t39684 - 11904: 0xF1BC,\n\t39685 - 11904: 0xF1BD,\n\t39686 - 11904: 0xC350,\n\t39688 - 11904: 0xF1BB,\n\t39689 - 11904: 0x9F65,\n\t39690 - 11904: 0xF3C3,\n\t39691 - 11904: 0xF3C2,\n\t39692 - 11904: 0xF3C5,\n\t39693 - 11904: 0xC447,\n\t39694 - 11904: 0xF3C4,\n\t39695 - 11904: 0x9A72,\n\t39696 - 11904: 0xF567,\n\t39697 - 11904: 0xF569,\n\t39698 - 11904: 0xF568,\n\t39700 - 11904: 0x9160,\n\t39701 - 11904: 0xF6A3,\n\t39702 - 11904: 0xF6A6,\n\t39703 - 11904: 0xF6A4,\n\t39704 - 11904: 0xF6A5,\n\t39705 - 11904: 0xF7A5,\n\t39706 - 11904: 0xC5BD,\n\t39710 - 11904: 0xF854,\n\t39711 - 11904: 0xF855,\n\t39712 - 11904: 0xF856,\n\t39714 - 11904: 0xC64B,\n\t39715 - 11904: 0xC663,\n\t39716 - 11904: 0xF9B6,\n\t39717 - 11904: 0xB0AB,\n\t39719 - 11904: 0xBE78,\n\t39720 - 11904: 0xC069,\n\t39721 - 11904: 0xF1BE,\n\t39722 - 11904: 0x9F5E,\n\t39723 - 11904: 0xF7A6,\n\t39725 - 11904: 0x9161,\n\t39726 - 11904: 0xF9C4,\n\t39727 - 11904: 0xD44A,\n\t39729 - 11904: 0xC67B,\n\t39730 - 11904: 0xB0AC,\n\t39731 - 11904: 0xEC72,\n\t39732 - 11904: 0x9164,\n\t39733 - 11904: 0xF1BF,\n\t39735 - 11904: 0xF3C6,\n\t39737 - 11904: 0x9F41,\n\t39738 - 11904: 0xF6A7,\n\t39739 - 11904: 0xF7A7,\n\t39740 - 11904: 0xB0AD,\n\t39742 - 11904: 0xE4DD,\n\t39743 - 11904: 0xE4DE,\n\t39744 - 11904: 0x9169,\n\t39745 - 11904: 0xBBED,\n\t39746 - 11904: 0xBBEE,\n\t39747 - 11904: 0xE8D9,\n\t39748 - 11904: 0xBE7A,\n\t39749 - 11904: 0xBE79,\n\t39750 - 11904: 0xE8D8,\n\t39752 - 11904: 0xEF69,\n\t39754 - 11904: 0xF1C0,\n\t39755 - 11904: 0xF1C2,\n\t39756 - 11904: 0xF1C1,\n\t39757 - 11904: 0xC353,\n\t39758 - 11904: 0xC352,\n\t39759 - 11904: 0xC351,\n\t39760 - 11904: 0x9168,\n\t39761 - 11904: 0xC55E,\n\t39762 - 11904: 0xF6A8,\n\t39764 - 11904: 0xC55D,\n\t39765 - 11904: 0xF7A9,\n\t39766 - 11904: 0xF7A8,\n\t39768 - 11904: 0xC64C,\n\t39769 - 11904: 0xF8D5,\n\t39770 - 11904: 0xB3BD,\n\t39771 - 11904: 0xE0EA,\n\t39775 - 11904: 0xE4E1,\n\t39776 - 11904: 0xE4DF,\n\t39777 - 11904: 0xE4E0,\n\t39780 - 11904: 0xE8E2,\n\t39782 - 11904: 0xE8DD,\n\t39783 - 11904: 0xE8DA,\n\t39784 - 11904: 0xE8E1,\n\t39785 - 11904: 0x9A74,\n\t39788 - 11904: 0xE8E3,\n\t39791 - 11904: 0xBE7C,\n\t39792 - 11904: 0xE8E0,\n\t39793 - 11904: 0xE8DC,\n\t39796 - 11904: 0xE8DB,\n\t39797 - 11904: 0xE8DF,\n\t39798 - 11904: 0xE8DE,\n\t39799 - 11904: 0xBE7B,\n\t39802 - 11904: 0xEC7D,\n\t39803 - 11904: 0xEC78,\n\t39804 - 11904: 0xEC76,\n\t39805 - 11904: 0xECA1,\n\t39806 - 11904: 0xEC77,\n\t39807 - 11904: 0x96B2,\n\t39808 - 11904: 0xEC73,\n\t39809 - 11904: 0x9A75,\n\t39810 - 11904: 0xEC79,\n\t39811 - 11904: 0xFDA5,\n\t39813 - 11904: 0xEC74,\n\t39814 - 11904: 0xEF72,\n\t39815 - 11904: 0xEC75,\n\t39816 - 11904: 0xECA2,\n\t39819 - 11904: 0x9EE9,\n\t39821 - 11904: 0x8BBA,\n\t39822 - 11904: 0x916D,\n\t39823 - 11904: 0xA060,\n\t39824 - 11904: 0xEC7C,\n\t39825 - 11904: 0xC06A,\n\t39826 - 11904: 0xEC7B,\n\t39827 - 11904: 0xEC7A,\n\t39829 - 11904: 0xEC7E,\n\t39831 - 11904: 0x9FDE,\n\t39834 - 11904: 0xEF6A,\n\t39835 - 11904: 0xEF6D,\n\t39837 - 11904: 0x9FC3,\n\t39838 - 11904: 0xEF6C,\n\t39839 - 11904: 0x96B5,\n\t39840 - 11904: 0xEF74,\n\t39841 - 11904: 0xEF6F,\n\t39842 - 11904: 0xEF73,\n\t39844 - 11904: 0xEF71,\n\t39845 - 11904: 0xEF70,\n\t39846 - 11904: 0xEF6E,\n\t39848 - 11904: 0xEF6B,\n\t39850 - 11904: 0xC243,\n\t39851 - 11904: 0xC242,\n\t39853 - 11904: 0xC244,\n\t39854 - 11904: 0xC241,\n\t39855 - 11904: 0xEF75,\n\t39856 - 11904: 0xA067,\n\t39861 - 11904: 0xF1C8,\n\t39862 - 11904: 0xF1CB,\n\t39864 - 11904: 0xF1C9,\n\t39865 - 11904: 0xF1CD,\n\t39869 - 11904: 0xF1CE,\n\t39871 - 11904: 0xF1C6,\n\t39872 - 11904: 0xC358,\n\t39873 - 11904: 0xF1C7,\n\t39875 - 11904: 0xF1C5,\n\t39876 - 11904: 0xF1CC,\n\t39878 - 11904: 0xF1C4,\n\t39879 - 11904: 0xF1C3,\n\t39880 - 11904: 0xC357,\n\t39881 - 11904: 0xC355,\n\t39882 - 11904: 0xC354,\n\t39887 - 11904: 0x96B3,\n\t39891 - 11904: 0xF1CA,\n\t39892 - 11904: 0xF3CF,\n\t39893 - 11904: 0xF3D5,\n\t39894 - 11904: 0xC44A,\n\t39895 - 11904: 0xF3D0,\n\t39897 - 11904: 0xF3D3,\n\t39898 - 11904: 0xF3D7,\n\t39899 - 11904: 0xC44B,\n\t39900 - 11904: 0xF3D2,\n\t39901 - 11904: 0x9A76,\n\t39902 - 11904: 0xF3CA,\n\t39904 - 11904: 0xF3C9,\n\t39905 - 11904: 0xF3D6,\n\t39906 - 11904: 0xF3CD,\n\t39908 - 11904: 0xF3CB,\n\t39909 - 11904: 0xF3D4,\n\t39910 - 11904: 0xF3CC,\n\t39911 - 11904: 0xC449,\n\t39912 - 11904: 0xC448,\n\t39913 - 11904: 0x95D5,\n\t39914 - 11904: 0xF3C7,\n\t39915 - 11904: 0xF3C8,\n\t39916 - 11904: 0xF3D1,\n\t39917 - 11904: 0x9ECA,\n\t39920 - 11904: 0xF3CE,\n\t39921 - 11904: 0x9A77,\n\t39924 - 11904: 0x9A78,\n\t39927 - 11904: 0xF56C,\n\t39928 - 11904: 0xF56F,\n\t39933 - 11904: 0xC356,\n\t39935 - 11904: 0x9170,\n\t39938 - 11904: 0x916F,\n\t39941 - 11904: 0xF56D,\n\t39942 - 11904: 0xF573,\n\t39943 - 11904: 0xF571,\n\t39944 - 11904: 0xF56B,\n\t39945 - 11904: 0xF576,\n\t39946 - 11904: 0x9FA3,\n\t39947 - 11904: 0xF56A,\n\t39948 - 11904: 0x9171,\n\t39949 - 11904: 0xC4CF,\n\t39950 - 11904: 0xF572,\n\t39952 - 11904: 0x96B1,\n\t39954 - 11904: 0xF56E,\n\t39955 - 11904: 0xC4CE,\n\t39956 - 11904: 0xF575,\n\t39957 - 11904: 0x9F63,\n\t39959 - 11904: 0xF574,\n\t39963 - 11904: 0x9F67,\n\t39964 - 11904: 0xF6AB,\n\t39965 - 11904: 0xF6AA,\n\t39967 - 11904: 0x8BB9,\n\t39968 - 11904: 0x9A7A,\n\t39969 - 11904: 0xF6B1,\n\t39971 - 11904: 0xF6AD,\n\t39972 - 11904: 0xF6B0,\n\t39973 - 11904: 0xC560,\n\t39974 - 11904: 0x8B56,\n\t39976 - 11904: 0xF6AE,\n\t39977 - 11904: 0xF6AF,\n\t39979 - 11904: 0xF6A9,\n\t39980 - 11904: 0xF6AC,\n\t39981 - 11904: 0xC55F,\n\t39983 - 11904: 0x9ADA,\n\t39985 - 11904: 0xC5BF,\n\t39986 - 11904: 0xF7B4,\n\t39987 - 11904: 0xF7AF,\n\t39988 - 11904: 0xF7B3,\n\t39989 - 11904: 0x96B0,\n\t39990 - 11904: 0xF7B6,\n\t39991 - 11904: 0xF7B2,\n\t39993 - 11904: 0xF7AE,\n\t39994 - 11904: 0x9A7E,\n\t39995 - 11904: 0xC5C1,\n\t39996 - 11904: 0xF7B1,\n\t39997 - 11904: 0xF7B5,\n\t39998 - 11904: 0xC5C0,\n\t39999 - 11904: 0xF7AC,\n\t40000 - 11904: 0xF570,\n\t40001 - 11904: 0xF7B0,\n\t40004 - 11904: 0xF7AD,\n\t40005 - 11904: 0x9DDE,\n\t40006 - 11904: 0xF7AA,\n\t40008 - 11904: 0xF7AB,\n\t40009 - 11904: 0xC5BE,\n\t40010 - 11904: 0xF85A,\n\t40011 - 11904: 0xF85C,\n\t40012 - 11904: 0xF85F,\n\t40013 - 11904: 0xF85B,\n\t40014 - 11904: 0xF860,\n\t40015 - 11904: 0x96AD,\n\t40016 - 11904: 0xF859,\n\t40018 - 11904: 0xF857,\n\t40019 - 11904: 0x96AE,\n\t40020 - 11904: 0xC5EB,\n\t40021 - 11904: 0xF85D,\n\t40022 - 11904: 0xC5ED,\n\t40023 - 11904: 0xC5EC,\n\t40024 - 11904: 0xF858,\n\t40025 - 11904: 0xF85E,\n\t40029 - 11904: 0x9EA1,\n\t40030 - 11904: 0xF8DA,\n\t40031 - 11904: 0xC64D,\n\t40032 - 11904: 0xF8DB,\n\t40034 - 11904: 0xF8D9,\n\t40035 - 11904: 0xF8D6,\n\t40038 - 11904: 0xF8D8,\n\t40039 - 11904: 0xF8D7,\n\t40040 - 11904: 0xF95A,\n\t40045 - 11904: 0xF95C,\n\t40046 - 11904: 0xF95B,\n\t40049 - 11904: 0xF979,\n\t40050 - 11904: 0x9E50,\n\t40051 - 11904: 0xF978,\n\t40052 - 11904: 0xF977,\n\t40053 - 11904: 0xF97A,\n\t40055 - 11904: 0xC673,\n\t40056 - 11904: 0xC674,\n\t40057 - 11904: 0xF9CA,\n\t40058 - 11904: 0xF9CE,\n\t40059 - 11904: 0x96AF,\n\t40060 - 11904: 0x8BF4,\n\t40165 - 11904: 0xB3BE,\n\t40166 - 11904: 0xDCAF,\n\t40167 - 11904: 0xE0ED,\n\t40169 - 11904: 0xB9A7,\n\t40170 - 11904: 0xE0EB,\n\t40173 - 11904: 0xE0EC,\n\t40177 - 11904: 0xE4E2,\n\t40178 - 11904: 0xE4E3,\n\t40179 - 11904: 0xBBF1,\n\t40180 - 11904: 0xBBEF,\n\t40181 - 11904: 0xE4E4,\n\t40182 - 11904: 0xBBF0,\n\t40183 - 11904: 0xE8E8,\n\t40185 - 11904: 0xE8EB,\n\t40186 - 11904: 0xE8E5,\n\t40187 - 11904: 0xE8EC,\n\t40188 - 11904: 0xE8E4,\n\t40189 - 11904: 0xE8E6,\n\t40191 - 11904: 0xE8E7,\n\t40192 - 11904: 0xE8EA,\n\t40194 - 11904: 0x9FA4,\n\t40195 - 11904: 0xBEA1,\n\t40196 - 11904: 0xE8EF,\n\t40197 - 11904: 0xE8EE,\n\t40198 - 11904: 0xBE7D,\n\t40199 - 11904: 0xE8E9,\n\t40200 - 11904: 0xE8ED,\n\t40201 - 11904: 0xBE7E,\n\t40204 - 11904: 0x96BD,\n\t40208 - 11904: 0xECAC,\n\t40210 - 11904: 0xC06F,\n\t40212 - 11904: 0xECA7,\n\t40213 - 11904: 0xC06B,\n\t40214 - 11904: 0x96F4,\n\t40215 - 11904: 0xECA4,\n\t40216 - 11904: 0xECAA,\n\t40217 - 11904: 0xECAD,\n\t40219 - 11904: 0xC070,\n\t40221 - 11904: 0xECA9,\n\t40222 - 11904: 0xECA6,\n\t40223 - 11904: 0xECAE,\n\t40224 - 11904: 0xECA5,\n\t40225 - 11904: 0x96B8,\n\t40226 - 11904: 0xECAB,\n\t40227 - 11904: 0xC06C,\n\t40229 - 11904: 0xECA3,\n\t40230 - 11904: 0xC06D,\n\t40232 - 11904: 0xC06E,\n\t40233 - 11904: 0xECA8,\n\t40237 - 11904: 0xEFA9,\n\t40238 - 11904: 0xEF7A,\n\t40239 - 11904: 0xEF7B,\n\t40240 - 11904: 0xEF7E,\n\t40241 - 11904: 0xEF7C,\n\t40243 - 11904: 0xEF76,\n\t40244 - 11904: 0xFAA1,\n\t40246 - 11904: 0xEF79,\n\t40247 - 11904: 0xEFA5,\n\t40248 - 11904: 0xEF7D,\n\t40249 - 11904: 0x91A7,\n\t40251 - 11904: 0xC245,\n\t40253 - 11904: 0xEFA7,\n\t40254 - 11904: 0xEFA4,\n\t40255 - 11904: 0xC246,\n\t40256 - 11904: 0xEFA6,\n\t40257 - 11904: 0xEF77,\n\t40258 - 11904: 0xEFA2,\n\t40259 - 11904: 0xEFA3,\n\t40260 - 11904: 0xA05E,\n\t40261 - 11904: 0xEFA1,\n\t40265 - 11904: 0x9A7D,\n\t40266 - 11904: 0xF1D2,\n\t40267 - 11904: 0xF1D4,\n\t40268 - 11904: 0xF1D7,\n\t40270 - 11904: 0x8948,\n\t40271 - 11904: 0xF1D1,\n\t40272 - 11904: 0x9EB1,\n\t40273 - 11904: 0xC359,\n\t40274 - 11904: 0xF1D9,\n\t40275 - 11904: 0xF1D0,\n\t40276 - 11904: 0xF1DA,\n\t40278 - 11904: 0xF1D6,\n\t40279 - 11904: 0xF1D8,\n\t40280 - 11904: 0xF1DC,\n\t40281 - 11904: 0xF1D5,\n\t40282 - 11904: 0xF1DD,\n\t40283 - 11904: 0xF1D3,\n\t40284 - 11904: 0xF1CF,\n\t40285 - 11904: 0xC35A,\n\t40286 - 11904: 0x9DDB,\n\t40287 - 11904: 0xF1DB,\n\t40288 - 11904: 0xC35B,\n\t40289 - 11904: 0xC44D,\n\t40295 - 11904: 0xEF78,\n\t40296 - 11904: 0xF3F1,\n\t40297 - 11904: 0xF3E8,\n\t40298 - 11904: 0xC44F,\n\t40299 - 11904: 0xF3E4,\n\t40300 - 11904: 0xC450,\n\t40301 - 11904: 0x95BF,\n\t40302 - 11904: 0x8A73,\n\t40303 - 11904: 0xF3ED,\n\t40304 - 11904: 0xF3E7,\n\t40305 - 11904: 0xF3DD,\n\t40306 - 11904: 0xC44E,\n\t40307 - 11904: 0xF3EA,\n\t40308 - 11904: 0xF3E5,\n\t40309 - 11904: 0xF3E6,\n\t40311 - 11904: 0xF3D8,\n\t40312 - 11904: 0xF3DF,\n\t40313 - 11904: 0xF3EE,\n\t40315 - 11904: 0xF3EB,\n\t40316 - 11904: 0x9EFE,\n\t40317 - 11904: 0xF3E3,\n\t40318 - 11904: 0x917A,\n\t40319 - 11904: 0xF3EF,\n\t40320 - 11904: 0xF3DE,\n\t40321 - 11904: 0xF3D9,\n\t40322 - 11904: 0xF3EC,\n\t40323 - 11904: 0x917B,\n\t40324 - 11904: 0xF3DB,\n\t40325 - 11904: 0xF3E9,\n\t40326 - 11904: 0xF3E0,\n\t40327 - 11904: 0xF3F0,\n\t40328 - 11904: 0xF3DC,\n\t40329 - 11904: 0xC44C,\n\t40330 - 11904: 0xF3DA,\n\t40331 - 11904: 0xF3E1,\n\t40332 - 11904: 0xF3E2,\n\t40336 - 11904: 0xF57D,\n\t40338 - 11904: 0xF57B,\n\t40339 - 11904: 0x9AA3,\n\t40340 - 11904: 0xF5A2,\n\t40342 - 11904: 0xF5AE,\n\t40343 - 11904: 0xF5A5,\n\t40344 - 11904: 0xF57C,\n\t40345 - 11904: 0xF578,\n\t40346 - 11904: 0xF5A7,\n\t40347 - 11904: 0xF57E,\n\t40348 - 11904: 0xF5A3,\n\t40349 - 11904: 0xF57A,\n\t40350 - 11904: 0xF5AA,\n\t40351 - 11904: 0xF577,\n\t40352 - 11904: 0xF5A1,\n\t40353 - 11904: 0xF5A6,\n\t40354 - 11904: 0xF5A8,\n\t40355 - 11904: 0xF5AB,\n\t40356 - 11904: 0xF579,\n\t40357 - 11904: 0x96C2,\n\t40358 - 11904: 0xF5AF,\n\t40359 - 11904: 0xF5B0,\n\t40360 - 11904: 0xF5A9,\n\t40361 - 11904: 0xF5AD,\n\t40362 - 11904: 0xF5A4,\n\t40363 - 11904: 0x9F77,\n\t40364 - 11904: 0xF6C1,\n\t40365 - 11904: 0xF6C4,\n\t40367 - 11904: 0xC561,\n\t40369 - 11904: 0xF6C3,\n\t40370 - 11904: 0xF6C8,\n\t40371 - 11904: 0xF6C6,\n\t40372 - 11904: 0xC562,\n\t40373 - 11904: 0xF6BD,\n\t40374 - 11904: 0xF6B3,\n\t40375 - 11904: 0xF6B2,\n\t40376 - 11904: 0xC564,\n\t40377 - 11904: 0xF6BF,\n\t40378 - 11904: 0xF6C0,\n\t40379 - 11904: 0xF6BC,\n\t40380 - 11904: 0xF6B4,\n\t40381 - 11904: 0x9AA4,\n\t40382 - 11904: 0xF6B9,\n\t40383 - 11904: 0xF5AC,\n\t40384 - 11904: 0x9AA5,\n\t40385 - 11904: 0xF6B5,\n\t40386 - 11904: 0xC563,\n\t40387 - 11904: 0xF6BB,\n\t40388 - 11904: 0x91A1,\n\t40389 - 11904: 0xF6BA,\n\t40391 - 11904: 0xF6B6,\n\t40392 - 11904: 0xF6C2,\n\t40393 - 11904: 0x89B8,\n\t40394 - 11904: 0xF6B7,\n\t40395 - 11904: 0xF7BB,\n\t40396 - 11904: 0xF6C5,\n\t40397 - 11904: 0xF6C7,\n\t40398 - 11904: 0xF6BE,\n\t40399 - 11904: 0xF6B8,\n\t40400 - 11904: 0xF7BC,\n\t40401 - 11904: 0xF7BE,\n\t40402 - 11904: 0xF7B8,\n\t40403 - 11904: 0xC5C2,\n\t40404 - 11904: 0x9173,\n\t40405 - 11904: 0xF7C5,\n\t40406 - 11904: 0xF7C3,\n\t40407 - 11904: 0xC5C3,\n\t40408 - 11904: 0xF7C2,\n\t40409 - 11904: 0xF7C1,\n\t40410 - 11904: 0xF7BA,\n\t40411 - 11904: 0xF7B7,\n\t40412 - 11904: 0xF7BD,\n\t40413 - 11904: 0xF7C6,\n\t40414 - 11904: 0xF7B9,\n\t40415 - 11904: 0xF7BF,\n\t40417 - 11904: 0xF869,\n\t40418 - 11904: 0xF86E,\n\t40419 - 11904: 0xF864,\n\t40420 - 11904: 0xF867,\n\t40421 - 11904: 0xC5EE,\n\t40422 - 11904: 0xF86B,\n\t40424 - 11904: 0xF872,\n\t40425 - 11904: 0xF7C0,\n\t40427 - 11904: 0xF865,\n\t40428 - 11904: 0xF86F,\n\t40429 - 11904: 0xF873,\n\t40430 - 11904: 0xF86A,\n\t40431 - 11904: 0xF863,\n\t40432 - 11904: 0xF86D,\n\t40434 - 11904: 0xF86C,\n\t40435 - 11904: 0xF871,\n\t40436 - 11904: 0xF870,\n\t40437 - 11904: 0xF7C4,\n\t40438 - 11904: 0xF868,\n\t40439 - 11904: 0xF862,\n\t40440 - 11904: 0xF866,\n\t40441 - 11904: 0xC64E,\n\t40442 - 11904: 0xC64F,\n\t40443 - 11904: 0xF861,\n\t40444 - 11904: 0x9AA6,\n\t40445 - 11904: 0xF8E6,\n\t40446 - 11904: 0xF8DD,\n\t40447 - 11904: 0xF8E5,\n\t40448 - 11904: 0xF8E2,\n\t40449 - 11904: 0xF8E3,\n\t40450 - 11904: 0xF8DC,\n\t40451 - 11904: 0xF8DF,\n\t40452 - 11904: 0xF8E7,\n\t40453 - 11904: 0xF8E1,\n\t40454 - 11904: 0xF8E0,\n\t40455 - 11904: 0xF8DE,\n\t40457 - 11904: 0xF8E4,\n\t40458 - 11904: 0x89BD,\n\t40459 - 11904: 0xF95D,\n\t40460 - 11904: 0x89B9,\n\t40461 - 11904: 0xF95E,\n\t40462 - 11904: 0x917D,\n\t40463 - 11904: 0xF960,\n\t40464 - 11904: 0xF95F,\n\t40465 - 11904: 0xF962,\n\t40466 - 11904: 0xF961,\n\t40467 - 11904: 0xF97C,\n\t40468 - 11904: 0xF97B,\n\t40469 - 11904: 0xF9B7,\n\t40471 - 11904: 0xF9B8,\n\t40472 - 11904: 0x96BB,\n\t40473 - 11904: 0xF9C5,\n\t40474 - 11904: 0xC678,\n\t40475 - 11904: 0xC67C,\n\t40476 - 11904: 0x9FF2,\n\t40477 - 11904: 0xF9CF,\n\t40478 - 11904: 0xC67D,\n\t40479 - 11904: 0x8BF5,\n\t40565 - 11904: 0xB3BF,\n\t40569 - 11904: 0xC4D0,\n\t40570 - 11904: 0xF6C9,\n\t40571 - 11904: 0x9AA9,\n\t40572 - 11904: 0xC650,\n\t40573 - 11904: 0xC651,\n\t40575 - 11904: 0xB3C0,\n\t40576 - 11904: 0xE0EE,\n\t40577 - 11904: 0x9F54,\n\t40578 - 11904: 0xB9A8,\n\t40579 - 11904: 0xE8F0,\n\t40580 - 11904: 0x9FE3,\n\t40581 - 11904: 0x9EED,\n\t40582 - 11904: 0xECB0,\n\t40583 - 11904: 0xECB1,\n\t40584 - 11904: 0xECAF,\n\t40585 - 11904: 0xEFAB,\n\t40586 - 11904: 0xEFAA,\n\t40587 - 11904: 0xC247,\n\t40588 - 11904: 0xF1DF,\n\t40589 - 11904: 0xEFAC,\n\t40590 - 11904: 0xF1DE,\n\t40592 - 11904: 0x91AA,\n\t40593 - 11904: 0xF3F3,\n\t40594 - 11904: 0xC451,\n\t40595 - 11904: 0xC453,\n\t40596 - 11904: 0xF3F2,\n\t40597 - 11904: 0x91AB,\n\t40598 - 11904: 0xA070,\n\t40599 - 11904: 0xC452,\n\t40600 - 11904: 0x9F6D,\n\t40601 - 11904: 0xF5B1,\n\t40602 - 11904: 0xF5B3,\n\t40603 - 11904: 0xF5B2,\n\t40604 - 11904: 0xF6CA,\n\t40605 - 11904: 0xC565,\n\t40606 - 11904: 0x91AC,\n\t40607 - 11904: 0xC5EF,\n\t40608 - 11904: 0xF8E8,\n\t40609 - 11904: 0xF963,\n\t40610 - 11904: 0x91AD,\n\t40612 - 11904: 0xF9D2,\n\t40613 - 11904: 0xB3C1,\n\t40614 - 11904: 0xA0FD,\n\t40615 - 11904: 0xE4E5,\n\t40616 - 11904: 0x9FE2,\n\t40617 - 11904: 0xBEA2,\n\t40618 - 11904: 0x91AF,\n\t40619 - 11904: 0x9E41,\n\t40620 - 11904: 0x9AAA,\n\t40621 - 11904: 0xECB3,\n\t40622 - 11904: 0xECB2,\n\t40623 - 11904: 0x91B0,\n\t40624 - 11904: 0xEFAD,\n\t40625 - 11904: 0x9AAB,\n\t40628 - 11904: 0xC454,\n\t40629 - 11904: 0xC4D1,\n\t40630 - 11904: 0xF7C7,\n\t40631 - 11904: 0xF9CB,\n\t40635 - 11904: 0xB3C2,\n\t40636 - 11904: 0xBBF2,\n\t40637 - 11904: 0x9AAC,\n\t40638 - 11904: 0xBEA3,\n\t40639 - 11904: 0x9A4A,\n\t40640 - 11904: 0xF3F4,\n\t40641 - 11904: 0x91B2,\n\t40642 - 11904: 0xF874,\n\t40643 - 11904: 0xB6C0,\n\t40644 - 11904: 0x8BF6,\n\t40646 - 11904: 0x9AAD,\n\t40647 - 11904: 0x89B6,\n\t40648 - 11904: 0xEFAE,\n\t40652 - 11904: 0xC664,\n\t40653 - 11904: 0xB6C1,\n\t40654 - 11904: 0xBEA4,\n\t40655 - 11904: 0xC248,\n\t40656 - 11904: 0xF875,\n\t40657 - 11904: 0xB6C2,\n\t40659 - 11904: 0xE8F1,\n\t40660 - 11904: 0xC072,\n\t40661 - 11904: 0xECB4,\n\t40662 - 11904: 0xECB5,\n\t40664 - 11904: 0xC071,\n\t40666 - 11904: 0xEFAF,\n\t40667 - 11904: 0xC24C,\n\t40668 - 11904: 0xC24A,\n\t40669 - 11904: 0xC24B,\n\t40670 - 11904: 0xC249,\n\t40671 - 11904: 0xF1E0,\n\t40672 - 11904: 0xC35C,\n\t40674 - 11904: 0x9AAF,\n\t40676 - 11904: 0xF5B5,\n\t40677 - 11904: 0xF5B4,\n\t40678 - 11904: 0xF5B7,\n\t40679 - 11904: 0xF5B6,\n\t40680 - 11904: 0xC4D2,\n\t40683 - 11904: 0xF6CB,\n\t40685 - 11904: 0xF6CD,\n\t40686 - 11904: 0xF6CC,\n\t40687 - 11904: 0xC566,\n\t40688 - 11904: 0xF7C8,\n\t40689 - 11904: 0x9AB0,\n\t40690 - 11904: 0xF876,\n\t40691 - 11904: 0xF877,\n\t40692 - 11904: 0xC5F0,\n\t40693 - 11904: 0xF964,\n\t40694 - 11904: 0xF97D,\n\t40695 - 11904: 0xC675,\n\t40696 - 11904: 0x9AB1,\n\t40697 - 11904: 0xDCB0,\n\t40698 - 11904: 0xECB6,\n\t40699 - 11904: 0xEFB0,\n\t40700 - 11904: 0xF3F5,\n\t40701 - 11904: 0xE0EF,\n\t40702 - 11904: 0x9AA1,\n\t40703 - 11904: 0xEFB1,\n\t40704 - 11904: 0xF1E2,\n\t40705 - 11904: 0xF1E1,\n\t40706 - 11904: 0x91B9,\n\t40710 - 11904: 0xF878,\n\t40711 - 11904: 0xC652,\n\t40712 - 11904: 0x91BA,\n\t40713 - 11904: 0xF965,\n\t40714 - 11904: 0xF97E,\n\t40718 - 11904: 0xB9A9,\n\t40719 - 11904: 0xE8F2,\n\t40720 - 11904: 0xE8F3,\n\t40722 - 11904: 0xECB7,\n\t40723 - 11904: 0xB9AA,\n\t40725 - 11904: 0xC35D,\n\t40726 - 11904: 0xF1E3,\n\t40727 - 11904: 0x9F66,\n\t40728 - 11904: 0xF6CF,\n\t40729 - 11904: 0xC567,\n\t40730 - 11904: 0xF6D0,\n\t40731 - 11904: 0xF6CE,\n\t40732 - 11904: 0xF879,\n\t40734 - 11904: 0xF8E9,\n\t40736 - 11904: 0xB9AB,\n\t40738 - 11904: 0xEFB4,\n\t40739 - 11904: 0xEFB3,\n\t40740 - 11904: 0xEFB2,\n\t40741 - 11904: 0xF1E4,\n\t40742 - 11904: 0xA041,\n\t40743 - 11904: 0x8BB7,\n\t40744 - 11904: 0xF1E8,\n\t40745 - 11904: 0xF1E7,\n\t40746 - 11904: 0xF1E6,\n\t40747 - 11904: 0xF1E5,\n\t40748 - 11904: 0xC35E,\n\t40749 - 11904: 0xF3F6,\n\t40750 - 11904: 0xF5B9,\n\t40751 - 11904: 0xC4D3,\n\t40752 - 11904: 0xF5B8,\n\t40753 - 11904: 0xF6D1,\n\t40754 - 11904: 0xF7CB,\n\t40755 - 11904: 0xF7CA,\n\t40756 - 11904: 0xC5C4,\n\t40757 - 11904: 0xF7C9,\n\t40758 - 11904: 0xF87C,\n\t40759 - 11904: 0xF87B,\n\t40760 - 11904: 0xF87A,\n\t40761 - 11904: 0x91C0,\n\t40763 - 11904: 0xBBF3,\n\t40765 - 11904: 0xECB8,\n\t40766 - 11904: 0xC24D,\n\t40768 - 11904: 0xF3F7,\n\t40769 - 11904: 0xF3F8,\n\t40770 - 11904: 0xF7CC,\n\t40771 - 11904: 0xF87D,\n\t40772 - 11904: 0x9AB3,\n\t40773 - 11904: 0x91C3,\n\t40774 - 11904: 0xF8EA,\n\t40775 - 11904: 0xF966,\n\t40776 - 11904: 0xF9B9,\n\t40777 - 11904: 0xF9D4,\n\t40778 - 11904: 0xBBF4,\n\t40779 - 11904: 0xC24E,\n\t40780 - 11904: 0xF1E9,\n\t40781 - 11904: 0xF3F9,\n\t40782 - 11904: 0xF6D2,\n\t40783 - 11904: 0xF87E,\n\t40784 - 11904: 0xA0FC,\n\t40786 - 11904: 0xBEA6,\n\t40787 - 11904: 0x9FEE,\n\t40788 - 11904: 0xEFB5,\n\t40789 - 11904: 0xF1EA,\n\t40790 - 11904: 0xF3FA,\n\t40791 - 11904: 0xF3FB,\n\t40792 - 11904: 0xF3FC,\n\t40793 - 11904: 0xF5BE,\n\t40794 - 11904: 0x9F69,\n\t40795 - 11904: 0xF5BA,\n\t40796 - 11904: 0xC568,\n\t40797 - 11904: 0xF5BD,\n\t40798 - 11904: 0xF5BC,\n\t40799 - 11904: 0xC4D4,\n\t40800 - 11904: 0xF5BB,\n\t40801 - 11904: 0xC4D6,\n\t40802 - 11904: 0x91C8,\n\t40803 - 11904: 0xC4D5,\n\t40804 - 11904: 0xF6D4,\n\t40805 - 11904: 0xF6D3,\n\t40806 - 11904: 0xC569,\n\t40807 - 11904: 0xC56A,\n\t40809 - 11904: 0x91C9,\n\t40810 - 11904: 0xC5C6,\n\t40811 - 11904: 0xF7CD,\n\t40812 - 11904: 0xC5C5,\n\t40814 - 11904: 0xF8A3,\n\t40815 - 11904: 0xF8A4,\n\t40816 - 11904: 0xF8A2,\n\t40817 - 11904: 0xF8A1,\n\t40818 - 11904: 0xC654,\n\t40820 - 11904: 0xF8EB,\n\t40821 - 11904: 0xF8EC,\n\t40822 - 11904: 0xF8ED,\n\t40823 - 11904: 0xC653,\n\t40824 - 11904: 0xF967,\n\t40825 - 11904: 0xF96A,\n\t40826 - 11904: 0xF969,\n\t40827 - 11904: 0xF968,\n\t40830 - 11904: 0xF9D3,\n\t40831 - 11904: 0x8DE6,\n\t40845 - 11904: 0xC073,\n\t40846 - 11904: 0x91CB,\n\t40848 - 11904: 0xC365,\n\t40849 - 11904: 0xF5BF,\n\t40850 - 11904: 0xF6D5,\n\t40852 - 11904: 0xC5C7,\n\t40853 - 11904: 0xF7CE,\n\t40854 - 11904: 0x87AC,\n\t40855 - 11904: 0x87A4,\n\t40856 - 11904: 0xF9D5,\n\t40857 - 11904: 0x89C8,\n\t40860 - 11904: 0xC074,\n\t40863 - 11904: 0x8DAA,\n\t40864 - 11904: 0xEFB6,\n\t40866 - 11904: 0xF7CF,\n\t40868 - 11904: 0xF9A1,\n\t40869 - 11904: 0x9FDD,\n\t40870 - 11904: 0x8C43,\n\t40871 - 11904: 0x8C6D,\n\t40872 - 11904: 0x8C74,\n\t40873 - 11904: 0x8CB7,\n\t40874 - 11904: 0x8CB9,\n\t40875 - 11904: 0x8CBB,\n\t40876 - 11904: 0x8CC0,\n\t40877 - 11904: 0x8CD7,\n\t40878 - 11904: 0x8CD8,\n\t40879 - 11904: 0x8CDA,\n\t40880 - 11904: 0xC8A1,\n\t40881 - 11904: 0xC8A3,\n\t40882 - 11904: 0x8CED,\n\t40883 - 11904: 0x8D48,\n\t40903 - 11904: 0x87C2,\n\t40904 - 11904: 0x87D2,\n\t40905 - 11904: 0x87D6,\n\t40906 - 11904: 0x87DA,\n\t40907 - 11904: 0x87DF,\n}\n\nconst encode2Low, encode2High = 7870, 10046\n\nvar encode2 = [...]uint16{\n\t7870 - 7870:  0x8863,\n\t7871 - 7870:  0x88A4,\n\t7872 - 7870:  0x8865,\n\t7873 - 7870:  0x88A6,\n\t8211 - 7870:  0xA156,\n\t8212 - 7870:  0xA158,\n\t8216 - 7870:  0xA1A5,\n\t8217 - 7870:  0xA1A6,\n\t8220 - 7870:  0xA1A7,\n\t8221 - 7870:  0xA1A8,\n\t8229 - 7870:  0xA14C,\n\t8230 - 7870:  0xA14B,\n\t8231 - 7870:  0xA145,\n\t8242 - 7870:  0xA1AC,\n\t8245 - 7870:  0xA1AB,\n\t8251 - 7870:  0xA1B0,\n\t8364 - 7870:  0xA3E1,\n\t8451 - 7870:  0xA24A,\n\t8453 - 7870:  0xA1C1,\n\t8457 - 7870:  0xA24B,\n\t8470 - 7870:  0xC8D2,\n\t8481 - 7870:  0xC8D3,\n\t8544 - 7870:  0xA2B9,\n\t8545 - 7870:  0xA2BA,\n\t8546 - 7870:  0xA2BB,\n\t8547 - 7870:  0xA2BC,\n\t8548 - 7870:  0xA2BD,\n\t8549 - 7870:  0xA2BE,\n\t8550 - 7870:  0xA2BF,\n\t8551 - 7870:  0xA2C0,\n\t8552 - 7870:  0xA2C1,\n\t8553 - 7870:  0xA2C2,\n\t8560 - 7870:  0xC6B5,\n\t8561 - 7870:  0xC6B6,\n\t8562 - 7870:  0xC6B7,\n\t8563 - 7870:  0xC6B8,\n\t8564 - 7870:  0xC6B9,\n\t8565 - 7870:  0xC6BA,\n\t8566 - 7870:  0xC6BB,\n\t8567 - 7870:  0xC6BC,\n\t8568 - 7870:  0xC6BD,\n\t8569 - 7870:  0xC6BE,\n\t8592 - 7870:  0xA1F6,\n\t8593 - 7870:  0xA1F4,\n\t8594 - 7870:  0xA1F7,\n\t8595 - 7870:  0xA1F5,\n\t8598 - 7870:  0xA1F8,\n\t8599 - 7870:  0xA1F9,\n\t8600 - 7870:  0xA1FB,\n\t8601 - 7870:  0xA1FA,\n\t8632 - 7870:  0xC877,\n\t8633 - 7870:  0xC878,\n\t8679 - 7870:  0xC876,\n\t8725 - 7870:  0xA241,\n\t8730 - 7870:  0xA1D4,\n\t8734 - 7870:  0xA1DB,\n\t8735 - 7870:  0xA1E8,\n\t8736 - 7870:  0xA1E7,\n\t8739 - 7870:  0xA1FD,\n\t8741 - 7870:  0xA1FC,\n\t8745 - 7870:  0xA1E4,\n\t8746 - 7870:  0xA1E5,\n\t8747 - 7870:  0xA1EC,\n\t8750 - 7870:  0xA1ED,\n\t8756 - 7870:  0xA1EF,\n\t8757 - 7870:  0xA1EE,\n\t8786 - 7870:  0xA1DC,\n\t8800 - 7870:  0xA1DA,\n\t8801 - 7870:  0xA1DD,\n\t8806 - 7870:  0xA1D8,\n\t8807 - 7870:  0xA1D9,\n\t8853 - 7870:  0xA1F2,\n\t8857 - 7870:  0xA1F3,\n\t8869 - 7870:  0xA1E6,\n\t8895 - 7870:  0xA1E9,\n\t9178 - 7870:  0x88A9,\n\t9179 - 7870:  0x88AA,\n\t9216 - 7870:  0xA3C0,\n\t9217 - 7870:  0xA3C1,\n\t9218 - 7870:  0xA3C2,\n\t9219 - 7870:  0xA3C3,\n\t9220 - 7870:  0xA3C4,\n\t9221 - 7870:  0xA3C5,\n\t9222 - 7870:  0xA3C6,\n\t9223 - 7870:  0xA3C7,\n\t9224 - 7870:  0xA3C8,\n\t9225 - 7870:  0xA3C9,\n\t9226 - 7870:  0xA3CA,\n\t9227 - 7870:  0xA3CB,\n\t9228 - 7870:  0xA3CC,\n\t9229 - 7870:  0xA3CD,\n\t9230 - 7870:  0xA3CE,\n\t9231 - 7870:  0xA3CF,\n\t9232 - 7870:  0xA3D0,\n\t9233 - 7870:  0xA3D1,\n\t9234 - 7870:  0xA3D2,\n\t9235 - 7870:  0xA3D3,\n\t9236 - 7870:  0xA3D4,\n\t9237 - 7870:  0xA3D5,\n\t9238 - 7870:  0xA3D6,\n\t9239 - 7870:  0xA3D7,\n\t9240 - 7870:  0xA3D8,\n\t9241 - 7870:  0xA3D9,\n\t9242 - 7870:  0xA3DA,\n\t9243 - 7870:  0xA3DB,\n\t9244 - 7870:  0xA3DC,\n\t9245 - 7870:  0xA3DD,\n\t9246 - 7870:  0xA3DE,\n\t9247 - 7870:  0xA3DF,\n\t9249 - 7870:  0xA3E0,\n\t9312 - 7870:  0xC6A1,\n\t9313 - 7870:  0xC6A2,\n\t9314 - 7870:  0xC6A3,\n\t9315 - 7870:  0xC6A4,\n\t9316 - 7870:  0xC6A5,\n\t9317 - 7870:  0xC6A6,\n\t9318 - 7870:  0xC6A7,\n\t9319 - 7870:  0xC6A8,\n\t9320 - 7870:  0xC6A9,\n\t9321 - 7870:  0xC6AA,\n\t9332 - 7870:  0xC6AB,\n\t9333 - 7870:  0xC6AC,\n\t9334 - 7870:  0xC6AD,\n\t9335 - 7870:  0xC6AE,\n\t9336 - 7870:  0xC6AF,\n\t9337 - 7870:  0xC6B0,\n\t9338 - 7870:  0xC6B1,\n\t9339 - 7870:  0xC6B2,\n\t9340 - 7870:  0xC6B3,\n\t9341 - 7870:  0xC6B4,\n\t9472 - 7870:  0xA277,\n\t9474 - 7870:  0xA278,\n\t9484 - 7870:  0xA27A,\n\t9488 - 7870:  0xA27B,\n\t9492 - 7870:  0xA27C,\n\t9496 - 7870:  0xA27D,\n\t9500 - 7870:  0xA275,\n\t9508 - 7870:  0xA274,\n\t9516 - 7870:  0xA273,\n\t9524 - 7870:  0xA272,\n\t9532 - 7870:  0xA271,\n\t9552 - 7870:  0xF9F9,\n\t9553 - 7870:  0xF9F8,\n\t9554 - 7870:  0xF9E6,\n\t9555 - 7870:  0xF9EF,\n\t9556 - 7870:  0xF9DD,\n\t9557 - 7870:  0xF9E8,\n\t9558 - 7870:  0xF9F1,\n\t9559 - 7870:  0xF9DF,\n\t9560 - 7870:  0xF9EC,\n\t9561 - 7870:  0xF9F5,\n\t9562 - 7870:  0xF9E3,\n\t9563 - 7870:  0xF9EE,\n\t9564 - 7870:  0xF9F7,\n\t9565 - 7870:  0xF9E5,\n\t9566 - 7870:  0xF9E9,\n\t9567 - 7870:  0xF9F2,\n\t9568 - 7870:  0xF9E0,\n\t9569 - 7870:  0xF9EB,\n\t9570 - 7870:  0xF9F4,\n\t9571 - 7870:  0xF9E2,\n\t9572 - 7870:  0xF9E7,\n\t9573 - 7870:  0xF9F0,\n\t9574 - 7870:  0xF9DE,\n\t9575 - 7870:  0xF9ED,\n\t9576 - 7870:  0xF9F6,\n\t9577 - 7870:  0xF9E4,\n\t9578 - 7870:  0xF9EA,\n\t9579 - 7870:  0xF9F3,\n\t9580 - 7870:  0xF9E1,\n\t9581 - 7870:  0xF9FA,\n\t9582 - 7870:  0xF9FB,\n\t9583 - 7870:  0xF9FD,\n\t9584 - 7870:  0xF9FC,\n\t9585 - 7870:  0xA2AC,\n\t9586 - 7870:  0xA2AD,\n\t9587 - 7870:  0xA2AE,\n\t9588 - 7870:  0xA15A,\n\t9601 - 7870:  0xA262,\n\t9602 - 7870:  0xA263,\n\t9603 - 7870:  0xA264,\n\t9604 - 7870:  0xA265,\n\t9605 - 7870:  0xA266,\n\t9606 - 7870:  0xA267,\n\t9607 - 7870:  0xA268,\n\t9608 - 7870:  0xA269,\n\t9609 - 7870:  0xA270,\n\t9610 - 7870:  0xA26F,\n\t9611 - 7870:  0xA26E,\n\t9612 - 7870:  0xA26D,\n\t9613 - 7870:  0xA26C,\n\t9614 - 7870:  0xA26B,\n\t9615 - 7870:  0xA26A,\n\t9620 - 7870:  0xA276,\n\t9621 - 7870:  0xA279,\n\t9632 - 7870:  0xA1BD,\n\t9633 - 7870:  0xA1BC,\n\t9650 - 7870:  0xA1B6,\n\t9651 - 7870:  0xA1B5,\n\t9660 - 7870:  0xA1BF,\n\t9661 - 7870:  0xA1BE,\n\t9670 - 7870:  0xA1BB,\n\t9671 - 7870:  0xA1BA,\n\t9675 - 7870:  0xA1B3,\n\t9678 - 7870:  0xA1B7,\n\t9679 - 7870:  0xA1B4,\n\t9698 - 7870:  0xA2A8,\n\t9699 - 7870:  0xA2A9,\n\t9700 - 7870:  0xA2AB,\n\t9701 - 7870:  0xA2AA,\n\t9733 - 7870:  0xA1B9,\n\t9734 - 7870:  0xA1B8,\n\t9792 - 7870:  0xA1F0,\n\t9794 - 7870:  0xA1F1,\n\t10045 - 7870: 0xC6E6,\n}\n\nconst encode3Low, encode3High = 167, 1106\n\nvar encode3 = [...]uint16{\n\t167 - 167:  0xA1B1,\n\t168 - 167:  0xC6D8,\n\t175 - 167:  0xA1C2,\n\t176 - 167:  0xA258,\n\t177 - 167:  0xA1D3,\n\t183 - 167:  0xA150,\n\t192 - 167:  0x8859,\n\t193 - 167:  0x8857,\n\t200 - 167:  0x885D,\n\t201 - 167:  0x885B,\n\t202 - 167:  0x8866,\n\t210 - 167:  0x8861,\n\t211 - 167:  0x885F,\n\t215 - 167:  0xA1D1,\n\t224 - 167:  0x886A,\n\t225 - 167:  0x8868,\n\t232 - 167:  0x886F,\n\t233 - 167:  0x886D,\n\t234 - 167:  0x88A7,\n\t236 - 167:  0x8873,\n\t237 - 167:  0x8871,\n\t242 - 167:  0x8877,\n\t243 - 167:  0x8875,\n\t247 - 167:  0xA1D2,\n\t248 - 167:  0xC8FB,\n\t249 - 167:  0x887B,\n\t250 - 167:  0x8879,\n\t252 - 167:  0x88A2,\n\t256 - 167:  0x8856,\n\t257 - 167:  0x8867,\n\t274 - 167:  0x885A,\n\t275 - 167:  0x886C,\n\t282 - 167:  0x885C,\n\t283 - 167:  0x886E,\n\t299 - 167:  0x8870,\n\t331 - 167:  0xC8FC,\n\t332 - 167:  0x885E,\n\t333 - 167:  0x8874,\n\t339 - 167:  0xC8FA,\n\t363 - 167:  0x8878,\n\t461 - 167:  0x8858,\n\t462 - 167:  0x8869,\n\t464 - 167:  0x8872,\n\t465 - 167:  0x8860,\n\t466 - 167:  0x8876,\n\t468 - 167:  0x887A,\n\t470 - 167:  0x887C,\n\t472 - 167:  0x887D,\n\t474 - 167:  0x887E,\n\t476 - 167:  0x88A1,\n\t592 - 167:  0xC8F6,\n\t593 - 167:  0x886B,\n\t596 - 167:  0xC8F8,\n\t603 - 167:  0xC8F7,\n\t609 - 167:  0x88A8,\n\t618 - 167:  0xC8FE,\n\t629 - 167:  0xC8F9,\n\t643 - 167:  0xC8F5,\n\t650 - 167:  0xC8FD,\n\t710 - 167:  0xC6D9,\n\t711 - 167:  0xA3BE,\n\t713 - 167:  0xA3BC,\n\t714 - 167:  0xA3BD,\n\t715 - 167:  0xA3BF,\n\t717 - 167:  0xA1C5,\n\t729 - 167:  0xA3BB,\n\t913 - 167:  0xA344,\n\t914 - 167:  0xA345,\n\t915 - 167:  0xA346,\n\t916 - 167:  0xA347,\n\t917 - 167:  0xA348,\n\t918 - 167:  0xA349,\n\t919 - 167:  0xA34A,\n\t920 - 167:  0xA34B,\n\t921 - 167:  0xA34C,\n\t922 - 167:  0xA34D,\n\t923 - 167:  0xA34E,\n\t924 - 167:  0xA34F,\n\t925 - 167:  0xA350,\n\t926 - 167:  0xA351,\n\t927 - 167:  0xA352,\n\t928 - 167:  0xA353,\n\t929 - 167:  0xA354,\n\t931 - 167:  0xA355,\n\t932 - 167:  0xA356,\n\t933 - 167:  0xA357,\n\t934 - 167:  0xA358,\n\t935 - 167:  0xA359,\n\t936 - 167:  0xA35A,\n\t937 - 167:  0xA35B,\n\t945 - 167:  0xA35C,\n\t946 - 167:  0xA35D,\n\t947 - 167:  0xA35E,\n\t948 - 167:  0xA35F,\n\t949 - 167:  0xA360,\n\t950 - 167:  0xA361,\n\t951 - 167:  0xA362,\n\t952 - 167:  0xA363,\n\t953 - 167:  0xA364,\n\t954 - 167:  0xA365,\n\t955 - 167:  0xA366,\n\t956 - 167:  0xA367,\n\t957 - 167:  0xA368,\n\t958 - 167:  0xA369,\n\t959 - 167:  0xA36A,\n\t960 - 167:  0xA36B,\n\t961 - 167:  0xA36C,\n\t963 - 167:  0xA36D,\n\t964 - 167:  0xA36E,\n\t965 - 167:  0xA36F,\n\t966 - 167:  0xA370,\n\t967 - 167:  0xA371,\n\t968 - 167:  0xA372,\n\t969 - 167:  0xA373,\n\t1025 - 167: 0xC7F9,\n\t1040 - 167: 0xC7F3,\n\t1041 - 167: 0xC7F4,\n\t1042 - 167: 0xC7F5,\n\t1043 - 167: 0xC7F6,\n\t1044 - 167: 0xC7F7,\n\t1045 - 167: 0xC7F8,\n\t1046 - 167: 0xC7FA,\n\t1047 - 167: 0xC7FB,\n\t1048 - 167: 0xC7FC,\n\t1049 - 167: 0xC7FD,\n\t1050 - 167: 0xC7FE,\n\t1051 - 167: 0xC840,\n\t1052 - 167: 0xC841,\n\t1053 - 167: 0xC842,\n\t1054 - 167: 0xC843,\n\t1055 - 167: 0xC844,\n\t1056 - 167: 0xC845,\n\t1057 - 167: 0xC846,\n\t1058 - 167: 0xC847,\n\t1059 - 167: 0xC848,\n\t1060 - 167: 0xC849,\n\t1061 - 167: 0xC84A,\n\t1062 - 167: 0xC84B,\n\t1063 - 167: 0xC84C,\n\t1064 - 167: 0xC84D,\n\t1065 - 167: 0xC84E,\n\t1066 - 167: 0xC84F,\n\t1067 - 167: 0xC850,\n\t1068 - 167: 0xC851,\n\t1069 - 167: 0xC852,\n\t1070 - 167: 0xC853,\n\t1071 - 167: 0xC854,\n\t1072 - 167: 0xC855,\n\t1073 - 167: 0xC856,\n\t1074 - 167: 0xC857,\n\t1075 - 167: 0xC858,\n\t1076 - 167: 0xC859,\n\t1077 - 167: 0xC85A,\n\t1078 - 167: 0xC85C,\n\t1079 - 167: 0xC85D,\n\t1080 - 167: 0xC85E,\n\t1081 - 167: 0xC85F,\n\t1082 - 167: 0xC860,\n\t1083 - 167: 0xC861,\n\t1084 - 167: 0xC862,\n\t1085 - 167: 0xC863,\n\t1086 - 167: 0xC864,\n\t1087 - 167: 0xC865,\n\t1088 - 167: 0xC866,\n\t1089 - 167: 0xC867,\n\t1090 - 167: 0xC868,\n\t1091 - 167: 0xC869,\n\t1092 - 167: 0xC86A,\n\t1093 - 167: 0xC86B,\n\t1094 - 167: 0xC86C,\n\t1095 - 167: 0xC86D,\n\t1096 - 167: 0xC86E,\n\t1097 - 167: 0xC86F,\n\t1098 - 167: 0xC870,\n\t1099 - 167: 0xC871,\n\t1100 - 167: 0xC872,\n\t1101 - 167: 0xC873,\n\t1102 - 167: 0xC874,\n\t1103 - 167: 0xC875,\n\t1105 - 167: 0xC85B,\n}\n\nconst encode4Low, encode4High = 65072, 65518\n\nvar encode4 = [...]uint16{\n\t65072 - 65072: 0xA14A,\n\t65073 - 65072: 0xA157,\n\t65075 - 65072: 0xA159,\n\t65076 - 65072: 0xA15B,\n\t65077 - 65072: 0xA15F,\n\t65078 - 65072: 0xA160,\n\t65079 - 65072: 0xA163,\n\t65080 - 65072: 0xA164,\n\t65081 - 65072: 0xA167,\n\t65082 - 65072: 0xA168,\n\t65083 - 65072: 0xA16B,\n\t65084 - 65072: 0xA16C,\n\t65085 - 65072: 0xA16F,\n\t65086 - 65072: 0xA170,\n\t65087 - 65072: 0xA173,\n\t65088 - 65072: 0xA174,\n\t65089 - 65072: 0xA177,\n\t65090 - 65072: 0xA178,\n\t65091 - 65072: 0xA17B,\n\t65092 - 65072: 0xA17C,\n\t65097 - 65072: 0xA1C6,\n\t65098 - 65072: 0xA1C7,\n\t65099 - 65072: 0xA1CA,\n\t65100 - 65072: 0xA1CB,\n\t65101 - 65072: 0xA1C8,\n\t65102 - 65072: 0xA1C9,\n\t65103 - 65072: 0xA15C,\n\t65104 - 65072: 0xA14D,\n\t65105 - 65072: 0xA14E,\n\t65106 - 65072: 0xA14F,\n\t65108 - 65072: 0xA151,\n\t65109 - 65072: 0xA152,\n\t65110 - 65072: 0xA153,\n\t65111 - 65072: 0xA154,\n\t65113 - 65072: 0xA17D,\n\t65114 - 65072: 0xA17E,\n\t65115 - 65072: 0xA1A1,\n\t65116 - 65072: 0xA1A2,\n\t65117 - 65072: 0xA1A3,\n\t65118 - 65072: 0xA1A4,\n\t65119 - 65072: 0xA1CC,\n\t65120 - 65072: 0xA1CD,\n\t65121 - 65072: 0xA1CE,\n\t65122 - 65072: 0xA1DE,\n\t65123 - 65072: 0xA1DF,\n\t65124 - 65072: 0xA1E0,\n\t65125 - 65072: 0xA1E1,\n\t65126 - 65072: 0xA1E2,\n\t65128 - 65072: 0xA242,\n\t65129 - 65072: 0xA24C,\n\t65130 - 65072: 0xA24D,\n\t65131 - 65072: 0xA24E,\n\t65281 - 65072: 0xA149,\n\t65282 - 65072: 0xC8D0,\n\t65283 - 65072: 0xA1AD,\n\t65284 - 65072: 0xA243,\n\t65285 - 65072: 0xA248,\n\t65286 - 65072: 0xA1AE,\n\t65287 - 65072: 0xC8CF,\n\t65288 - 65072: 0xA15D,\n\t65289 - 65072: 0xA15E,\n\t65290 - 65072: 0xA1AF,\n\t65291 - 65072: 0xA1CF,\n\t65292 - 65072: 0xA141,\n\t65293 - 65072: 0xA1D0,\n\t65294 - 65072: 0xA144,\n\t65295 - 65072: 0xA1FE,\n\t65296 - 65072: 0xA2AF,\n\t65297 - 65072: 0xA2B0,\n\t65298 - 65072: 0xA2B1,\n\t65299 - 65072: 0xA2B2,\n\t65300 - 65072: 0xA2B3,\n\t65301 - 65072: 0xA2B4,\n\t65302 - 65072: 0xA2B5,\n\t65303 - 65072: 0xA2B6,\n\t65304 - 65072: 0xA2B7,\n\t65305 - 65072: 0xA2B8,\n\t65306 - 65072: 0xA147,\n\t65307 - 65072: 0xA146,\n\t65308 - 65072: 0xA1D5,\n\t65309 - 65072: 0xA1D7,\n\t65310 - 65072: 0xA1D6,\n\t65311 - 65072: 0xA148,\n\t65312 - 65072: 0xA249,\n\t65313 - 65072: 0xA2CF,\n\t65314 - 65072: 0xA2D0,\n\t65315 - 65072: 0xA2D1,\n\t65316 - 65072: 0xA2D2,\n\t65317 - 65072: 0xA2D3,\n\t65318 - 65072: 0xA2D4,\n\t65319 - 65072: 0xA2D5,\n\t65320 - 65072: 0xA2D6,\n\t65321 - 65072: 0xA2D7,\n\t65322 - 65072: 0xA2D8,\n\t65323 - 65072: 0xA2D9,\n\t65324 - 65072: 0xA2DA,\n\t65325 - 65072: 0xA2DB,\n\t65326 - 65072: 0xA2DC,\n\t65327 - 65072: 0xA2DD,\n\t65328 - 65072: 0xA2DE,\n\t65329 - 65072: 0xA2DF,\n\t65330 - 65072: 0xA2E0,\n\t65331 - 65072: 0xA2E1,\n\t65332 - 65072: 0xA2E2,\n\t65333 - 65072: 0xA2E3,\n\t65334 - 65072: 0xA2E4,\n\t65335 - 65072: 0xA2E5,\n\t65336 - 65072: 0xA2E6,\n\t65337 - 65072: 0xA2E7,\n\t65338 - 65072: 0xA2E8,\n\t65339 - 65072: 0xC6E4,\n\t65340 - 65072: 0xA240,\n\t65341 - 65072: 0xC6E5,\n\t65343 - 65072: 0xA1C4,\n\t65345 - 65072: 0xA2E9,\n\t65346 - 65072: 0xA2EA,\n\t65347 - 65072: 0xA2EB,\n\t65348 - 65072: 0xA2EC,\n\t65349 - 65072: 0xA2ED,\n\t65350 - 65072: 0xA2EE,\n\t65351 - 65072: 0xA2EF,\n\t65352 - 65072: 0xA2F0,\n\t65353 - 65072: 0xA2F1,\n\t65354 - 65072: 0xA2F2,\n\t65355 - 65072: 0xA2F3,\n\t65356 - 65072: 0xA2F4,\n\t65357 - 65072: 0xA2F5,\n\t65358 - 65072: 0xA2F6,\n\t65359 - 65072: 0xA2F7,\n\t65360 - 65072: 0xA2F8,\n\t65361 - 65072: 0xA2F9,\n\t65362 - 65072: 0xA2FA,\n\t65363 - 65072: 0xA2FB,\n\t65364 - 65072: 0xA2FC,\n\t65365 - 65072: 0xA2FD,\n\t65366 - 65072: 0xA2FE,\n\t65367 - 65072: 0xA340,\n\t65368 - 65072: 0xA341,\n\t65369 - 65072: 0xA342,\n\t65370 - 65072: 0xA343,\n\t65371 - 65072: 0xA161,\n\t65372 - 65072: 0xA155,\n\t65373 - 65072: 0xA162,\n\t65374 - 65072: 0xA1E3,\n\t65504 - 65072: 0xA246,\n\t65505 - 65072: 0xA247,\n\t65506 - 65072: 0xC8CD,\n\t65507 - 65072: 0xA1C3,\n\t65508 - 65072: 0xC8CE,\n\t65509 - 65072: 0xA244,\n\t65517 - 65072: 0xF9FE,\n}\n\nconst encode5Low, encode5High = 194597, 195029\n\nvar encode5 = [...]uint16{\n\t194597 - 194597: 0x9874,\n\t194619 - 194597: 0x9AC8,\n\t194624 - 194597: 0xA047,\n\t194680 - 194597: 0x8BC3,\n\t194708 - 194597: 0xFC48,\n\t194726 - 194597: 0xFC77,\n\t194765 - 194597: 0x9C52,\n\t194964 - 194597: 0x8EFD,\n\t194994 - 194597: 0x8FA8,\n\t195004 - 194597: 0x957A,\n\t195028 - 194597: 0x8FF0,\n}\n\nconst encode6Low, encode6High = 63751, 64014\n\nvar encode6 = [...]uint16{\n\t63751 - 63751: 0x8BF8,\n\t64012 - 63751: 0xC94A,\n\t64013 - 63751: 0xDDFC,\n}\n\nconst encode7Low, encode7High = 175615, 175616\n\nvar encode7 = [...]uint16{\n\t175615 - 175615: 0x87DC,\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/text/encoding/unicode/override.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage unicode\n\nimport (\n\t\"golang.org/x/text/transform\"\n)\n\n// BOMOverride returns a new decoder transformer that is identical to fallback,\n// except that the presence of a Byte Order Mark at the start of the input\n// causes it to switch to the corresponding Unicode decoding. It will only\n// consider BOMs for UTF-8, UTF-16BE, and UTF-16LE.\n//\n// This differs from using ExpectBOM by allowing a BOM to switch to UTF-8, not\n// just UTF-16 variants, and allowing falling back to any encoding scheme.\n//\n// This technique is recommended by the W3C for use in HTML 5: \"For\n// compatibility with deployed content, the byte order mark (also known as BOM)\n// is considered more authoritative than anything else.\"\n// http://www.w3.org/TR/encoding/#specification-hooks\n//\n// Using BOMOverride is mostly intended for use cases where the first characters\n// of a fallback encoding are known to not be a BOM, for example, for valid HTML\n// and most encodings.\nfunc BOMOverride(fallback transform.Transformer) transform.Transformer {\n\t// TODO: possibly allow a variadic argument of unicode encodings to allow\n\t// specifying details of which fallbacks are supported as well as\n\t// specifying the details of the implementations. This would also allow for\n\t// support for UTF-32, which should not be supported by default.\n\treturn &bomOverride{fallback: fallback}\n}\n\ntype bomOverride struct {\n\tfallback transform.Transformer\n\tcurrent  transform.Transformer\n}\n\nfunc (d *bomOverride) Reset() {\n\td.current = nil\n\td.fallback.Reset()\n}\n\nvar (\n\t// TODO: we could use decode functions here, instead of allocating a new\n\t// decoder on every NewDecoder as IgnoreBOM decoders can be stateless.\n\tutf16le = UTF16(LittleEndian, IgnoreBOM)\n\tutf16be = UTF16(BigEndian, IgnoreBOM)\n)\n\nconst utf8BOM = \"\\ufeff\"\n\nfunc (d *bomOverride) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {\n\tif d.current != nil {\n\t\treturn d.current.Transform(dst, src, atEOF)\n\t}\n\tif len(src) < 3 && !atEOF {\n\t\treturn 0, 0, transform.ErrShortSrc\n\t}\n\td.current = d.fallback\n\tbomSize := 0\n\tif len(src) >= 2 {\n\t\tif src[0] == 0xFF && src[1] == 0xFE {\n\t\t\td.current = utf16le.NewDecoder()\n\t\t\tbomSize = 2\n\t\t} else if src[0] == 0xFE && src[1] == 0xFF {\n\t\t\td.current = utf16be.NewDecoder()\n\t\t\tbomSize = 2\n\t\t} else if len(src) >= 3 &&\n\t\t\tsrc[0] == utf8BOM[0] &&\n\t\t\tsrc[1] == utf8BOM[1] &&\n\t\t\tsrc[2] == utf8BOM[2] {\n\t\t\td.current = transform.Nop\n\t\t\tbomSize = 3\n\t\t}\n\t}\n\tif bomSize < len(src) {\n\t\tnDst, nSrc, err = d.current.Transform(dst, src[bomSize:], atEOF)\n\t}\n\treturn nDst, nSrc + bomSize, err\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/text/encoding/unicode/unicode.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package unicode provides Unicode encodings such as UTF-16.\npackage unicode // import \"golang.org/x/text/encoding/unicode\"\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"unicode/utf16\"\n\t\"unicode/utf8\"\n\n\t\"golang.org/x/text/encoding\"\n\t\"golang.org/x/text/encoding/internal\"\n\t\"golang.org/x/text/encoding/internal/identifier\"\n\t\"golang.org/x/text/internal/utf8internal\"\n\t\"golang.org/x/text/runes\"\n\t\"golang.org/x/text/transform\"\n)\n\n// TODO: I think the Transformers really should return errors on unmatched\n// surrogate pairs and odd numbers of bytes. This is not required by RFC 2781,\n// which leaves it open, but is suggested by WhatWG. It will allow for all error\n// modes as defined by WhatWG: fatal, HTML and Replacement. This would require\n// the introduction of some kind of error type for conveying the erroneous code\n// point.\n\n// UTF8 is the UTF-8 encoding. It neither removes nor adds byte order marks.\nvar UTF8 encoding.Encoding = utf8enc\n\n// UTF8BOM is an UTF-8 encoding where the decoder strips a leading byte order\n// mark while the encoder adds one.\n//\n// Some editors add a byte order mark as a signature to UTF-8 files. Although\n// the byte order mark is not useful for detecting byte order in UTF-8, it is\n// sometimes used as a convention to mark UTF-8-encoded files. This relies on\n// the observation that the UTF-8 byte order mark is either an illegal or at\n// least very unlikely sequence in any other character encoding.\nvar UTF8BOM encoding.Encoding = utf8bomEncoding{}\n\ntype utf8bomEncoding struct{}\n\nfunc (utf8bomEncoding) String() string {\n\treturn \"UTF-8-BOM\"\n}\n\nfunc (utf8bomEncoding) ID() (identifier.MIB, string) {\n\treturn identifier.Unofficial, \"x-utf8bom\"\n}\n\nfunc (utf8bomEncoding) NewEncoder() *encoding.Encoder {\n\treturn &encoding.Encoder{\n\t\tTransformer: &utf8bomEncoder{t: runes.ReplaceIllFormed()},\n\t}\n}\n\nfunc (utf8bomEncoding) NewDecoder() *encoding.Decoder {\n\treturn &encoding.Decoder{Transformer: &utf8bomDecoder{}}\n}\n\nvar utf8enc = &internal.Encoding{\n\tEncoding: &internal.SimpleEncoding{Decoder: utf8Decoder{}, Encoder: runes.ReplaceIllFormed()},\n\tName:     \"UTF-8\",\n\tMIB:      identifier.UTF8,\n}\n\ntype utf8bomDecoder struct {\n\tchecked bool\n}\n\nfunc (t *utf8bomDecoder) Reset() {\n\tt.checked = false\n}\n\nfunc (t *utf8bomDecoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {\n\tif !t.checked {\n\t\tif !atEOF && len(src) < len(utf8BOM) {\n\t\t\tif len(src) == 0 {\n\t\t\t\treturn 0, 0, nil\n\t\t\t}\n\t\t\treturn 0, 0, transform.ErrShortSrc\n\t\t}\n\t\tif bytes.HasPrefix(src, []byte(utf8BOM)) {\n\t\t\tnSrc += len(utf8BOM)\n\t\t\tsrc = src[len(utf8BOM):]\n\t\t}\n\t\tt.checked = true\n\t}\n\tnDst, n, err := utf8Decoder.Transform(utf8Decoder{}, dst[nDst:], src, atEOF)\n\tnSrc += n\n\treturn nDst, nSrc, err\n}\n\ntype utf8bomEncoder struct {\n\twritten bool\n\tt       transform.Transformer\n}\n\nfunc (t *utf8bomEncoder) Reset() {\n\tt.written = false\n\tt.t.Reset()\n}\n\nfunc (t *utf8bomEncoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {\n\tif !t.written {\n\t\tif len(dst) < len(utf8BOM) {\n\t\t\treturn nDst, 0, transform.ErrShortDst\n\t\t}\n\t\tnDst = copy(dst, utf8BOM)\n\t\tt.written = true\n\t}\n\tn, nSrc, err := utf8Decoder.Transform(utf8Decoder{}, dst[nDst:], src, atEOF)\n\tnDst += n\n\treturn nDst, nSrc, err\n}\n\ntype utf8Decoder struct{ transform.NopResetter }\n\nfunc (utf8Decoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {\n\tvar pSrc int // point from which to start copy in src\n\tvar accept utf8internal.AcceptRange\n\n\t// The decoder can only make the input larger, not smaller.\n\tn := len(src)\n\tif len(dst) < n {\n\t\terr = transform.ErrShortDst\n\t\tn = len(dst)\n\t\tatEOF = false\n\t}\n\tfor nSrc < n {\n\t\tc := src[nSrc]\n\t\tif c < utf8.RuneSelf {\n\t\t\tnSrc++\n\t\t\tcontinue\n\t\t}\n\t\tfirst := utf8internal.First[c]\n\t\tsize := int(first & utf8internal.SizeMask)\n\t\tif first == utf8internal.FirstInvalid {\n\t\t\tgoto handleInvalid // invalid starter byte\n\t\t}\n\t\taccept = utf8internal.AcceptRanges[first>>utf8internal.AcceptShift]\n\t\tif nSrc+size > n {\n\t\t\tif !atEOF {\n\t\t\t\t// We may stop earlier than necessary here if the short sequence\n\t\t\t\t// has invalid bytes. Not checking for this simplifies the code\n\t\t\t\t// and may avoid duplicate computations in certain conditions.\n\t\t\t\tif err == nil {\n\t\t\t\t\terr = transform.ErrShortSrc\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// Determine the maximal subpart of an ill-formed subsequence.\n\t\t\tswitch {\n\t\t\tcase nSrc+1 >= n || src[nSrc+1] < accept.Lo || accept.Hi < src[nSrc+1]:\n\t\t\t\tsize = 1\n\t\t\tcase nSrc+2 >= n || src[nSrc+2] < utf8internal.LoCB || utf8internal.HiCB < src[nSrc+2]:\n\t\t\t\tsize = 2\n\t\t\tdefault:\n\t\t\t\tsize = 3 // As we are short, the maximum is 3.\n\t\t\t}\n\t\t\tgoto handleInvalid\n\t\t}\n\t\tif c = src[nSrc+1]; c < accept.Lo || accept.Hi < c {\n\t\t\tsize = 1\n\t\t\tgoto handleInvalid // invalid continuation byte\n\t\t} else if size == 2 {\n\t\t} else if c = src[nSrc+2]; c < utf8internal.LoCB || utf8internal.HiCB < c {\n\t\t\tsize = 2\n\t\t\tgoto handleInvalid // invalid continuation byte\n\t\t} else if size == 3 {\n\t\t} else if c = src[nSrc+3]; c < utf8internal.LoCB || utf8internal.HiCB < c {\n\t\t\tsize = 3\n\t\t\tgoto handleInvalid // invalid continuation byte\n\t\t}\n\t\tnSrc += size\n\t\tcontinue\n\n\thandleInvalid:\n\t\t// Copy the scanned input so far.\n\t\tnDst += copy(dst[nDst:], src[pSrc:nSrc])\n\n\t\t// Append RuneError to the destination.\n\t\tconst runeError = \"\\ufffd\"\n\t\tif nDst+len(runeError) > len(dst) {\n\t\t\treturn nDst, nSrc, transform.ErrShortDst\n\t\t}\n\t\tnDst += copy(dst[nDst:], runeError)\n\n\t\t// Skip the maximal subpart of an ill-formed subsequence according to\n\t\t// the W3C standard way instead of the Go way. This Transform is\n\t\t// probably the only place in the text repo where it is warranted.\n\t\tnSrc += size\n\t\tpSrc = nSrc\n\n\t\t// Recompute the maximum source length.\n\t\tif sz := len(dst) - nDst; sz < len(src)-nSrc {\n\t\t\terr = transform.ErrShortDst\n\t\t\tn = nSrc + sz\n\t\t\tatEOF = false\n\t\t}\n\t}\n\treturn nDst + copy(dst[nDst:], src[pSrc:nSrc]), nSrc, err\n}\n\n// UTF16 returns a UTF-16 Encoding for the given default endianness and byte\n// order mark (BOM) policy.\n//\n// When decoding from UTF-16 to UTF-8, if the BOMPolicy is IgnoreBOM then\n// neither BOMs U+FEFF nor noncharacters U+FFFE in the input stream will affect\n// the endianness used for decoding, and will instead be output as their\n// standard UTF-8 encodings: \"\\xef\\xbb\\xbf\" and \"\\xef\\xbf\\xbe\". If the BOMPolicy\n// is UseBOM or ExpectBOM a staring BOM is not written to the UTF-8 output.\n// Instead, it overrides the default endianness e for the remainder of the\n// transformation. Any subsequent BOMs U+FEFF or noncharacters U+FFFE will not\n// affect the endianness used, and will instead be output as their standard\n// UTF-8 encodings. For UseBOM, if there is no starting BOM, it will proceed\n// with the default Endianness. For ExpectBOM, in that case, the transformation\n// will return early with an ErrMissingBOM error.\n//\n// When encoding from UTF-8 to UTF-16, a BOM will be inserted at the start of\n// the output if the BOMPolicy is UseBOM or ExpectBOM. Otherwise, a BOM will not\n// be inserted. The UTF-8 input does not need to contain a BOM.\n//\n// There is no concept of a 'native' endianness. If the UTF-16 data is produced\n// and consumed in a greater context that implies a certain endianness, use\n// IgnoreBOM. Otherwise, use ExpectBOM and always produce and consume a BOM.\n//\n// In the language of https://www.unicode.org/faq/utf_bom.html#bom10, IgnoreBOM\n// corresponds to \"Where the precise type of the data stream is known... the\n// BOM should not be used\" and ExpectBOM corresponds to \"A particular\n// protocol... may require use of the BOM\".\nfunc UTF16(e Endianness, b BOMPolicy) encoding.Encoding {\n\treturn utf16Encoding{config{e, b}, mibValue[e][b&bomMask]}\n}\n\n// mibValue maps Endianness and BOMPolicy settings to MIB constants. Note that\n// some configurations map to the same MIB identifier. RFC 2781 has requirements\n// and recommendations. Some of the \"configurations\" are merely recommendations,\n// so multiple configurations could match.\nvar mibValue = map[Endianness][numBOMValues]identifier.MIB{\n\tBigEndian: [numBOMValues]identifier.MIB{\n\t\tIgnoreBOM: identifier.UTF16BE,\n\t\tUseBOM:    identifier.UTF16, // BigEnding default is preferred by RFC 2781.\n\t\t// TODO: acceptBOM | strictBOM would map to UTF16BE as well.\n\t},\n\tLittleEndian: [numBOMValues]identifier.MIB{\n\t\tIgnoreBOM: identifier.UTF16LE,\n\t\tUseBOM:    identifier.UTF16, // LittleEndian default is allowed and preferred on Windows.\n\t\t// TODO: acceptBOM | strictBOM would map to UTF16LE as well.\n\t},\n\t// ExpectBOM is not widely used and has no valid MIB identifier.\n}\n\n// All lists a configuration for each IANA-defined UTF-16 variant.\nvar All = []encoding.Encoding{\n\tUTF8,\n\tUTF16(BigEndian, UseBOM),\n\tUTF16(BigEndian, IgnoreBOM),\n\tUTF16(LittleEndian, IgnoreBOM),\n}\n\n// BOMPolicy is a UTF-16 encoding's byte order mark policy.\ntype BOMPolicy uint8\n\nconst (\n\twriteBOM   BOMPolicy = 0x01\n\tacceptBOM  BOMPolicy = 0x02\n\trequireBOM BOMPolicy = 0x04\n\tbomMask    BOMPolicy = 0x07\n\n\t// HACK: numBOMValues == 8 triggers a bug in the 1.4 compiler (cannot have a\n\t// map of an array of length 8 of a type that is also used as a key or value\n\t// in another map). See golang.org/issue/11354.\n\t// TODO: consider changing this value back to 8 if the use of 1.4.* has\n\t// been minimized.\n\tnumBOMValues = 8 + 1\n\n\t// IgnoreBOM means to ignore any byte order marks.\n\tIgnoreBOM BOMPolicy = 0\n\t// Common and RFC 2781-compliant interpretation for UTF-16BE/LE.\n\n\t// UseBOM means that the UTF-16 form may start with a byte order mark, which\n\t// will be used to override the default encoding.\n\tUseBOM BOMPolicy = writeBOM | acceptBOM\n\t// Common and RFC 2781-compliant interpretation for UTF-16.\n\n\t// ExpectBOM means that the UTF-16 form must start with a byte order mark,\n\t// which will be used to override the default encoding.\n\tExpectBOM BOMPolicy = writeBOM | acceptBOM | requireBOM\n\t// Used in Java as Unicode (not to be confused with Java's UTF-16) and\n\t// ICU's UTF-16,version=1. Not compliant with RFC 2781.\n\n\t// TODO (maybe): strictBOM: BOM must match Endianness. This would allow:\n\t// - UTF-16(B|L)E,version=1: writeBOM | acceptBOM | requireBOM | strictBOM\n\t//    (UnicodeBig and UnicodeLittle in Java)\n\t// - RFC 2781-compliant, but less common interpretation for UTF-16(B|L)E:\n\t//    acceptBOM | strictBOM (e.g. assigned to CheckBOM).\n\t// This addition would be consistent with supporting ExpectBOM.\n)\n\n// Endianness is a UTF-16 encoding's default endianness.\ntype Endianness bool\n\nconst (\n\t// BigEndian is UTF-16BE.\n\tBigEndian Endianness = false\n\t// LittleEndian is UTF-16LE.\n\tLittleEndian Endianness = true\n)\n\n// ErrMissingBOM means that decoding UTF-16 input with ExpectBOM did not find a\n// starting byte order mark.\nvar ErrMissingBOM = errors.New(\"encoding: missing byte order mark\")\n\ntype utf16Encoding struct {\n\tconfig\n\tmib identifier.MIB\n}\n\ntype config struct {\n\tendianness Endianness\n\tbomPolicy  BOMPolicy\n}\n\nfunc (u utf16Encoding) NewDecoder() *encoding.Decoder {\n\treturn &encoding.Decoder{Transformer: &utf16Decoder{\n\t\tinitial: u.config,\n\t\tcurrent: u.config,\n\t}}\n}\n\nfunc (u utf16Encoding) NewEncoder() *encoding.Encoder {\n\treturn &encoding.Encoder{Transformer: &utf16Encoder{\n\t\tendianness:       u.endianness,\n\t\tinitialBOMPolicy: u.bomPolicy,\n\t\tcurrentBOMPolicy: u.bomPolicy,\n\t}}\n}\n\nfunc (u utf16Encoding) ID() (mib identifier.MIB, other string) {\n\treturn u.mib, \"\"\n}\n\nfunc (u utf16Encoding) String() string {\n\te, b := \"B\", \"\"\n\tif u.endianness == LittleEndian {\n\t\te = \"L\"\n\t}\n\tswitch u.bomPolicy {\n\tcase ExpectBOM:\n\t\tb = \"Expect\"\n\tcase UseBOM:\n\t\tb = \"Use\"\n\tcase IgnoreBOM:\n\t\tb = \"Ignore\"\n\t}\n\treturn \"UTF-16\" + e + \"E (\" + b + \" BOM)\"\n}\n\ntype utf16Decoder struct {\n\tinitial config\n\tcurrent config\n}\n\nfunc (u *utf16Decoder) Reset() {\n\tu.current = u.initial\n}\n\nfunc (u *utf16Decoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {\n\tif len(src) < 2 && atEOF && u.current.bomPolicy&requireBOM != 0 {\n\t\treturn 0, 0, ErrMissingBOM\n\t}\n\tif len(src) == 0 {\n\t\treturn 0, 0, nil\n\t}\n\tif len(src) >= 2 && u.current.bomPolicy&acceptBOM != 0 {\n\t\tswitch {\n\t\tcase src[0] == 0xfe && src[1] == 0xff:\n\t\t\tu.current.endianness = BigEndian\n\t\t\tnSrc = 2\n\t\tcase src[0] == 0xff && src[1] == 0xfe:\n\t\t\tu.current.endianness = LittleEndian\n\t\t\tnSrc = 2\n\t\tdefault:\n\t\t\tif u.current.bomPolicy&requireBOM != 0 {\n\t\t\t\treturn 0, 0, ErrMissingBOM\n\t\t\t}\n\t\t}\n\t\tu.current.bomPolicy = IgnoreBOM\n\t}\n\n\tvar r rune\n\tvar dSize, sSize int\n\tfor nSrc < len(src) {\n\t\tif nSrc+1 < len(src) {\n\t\t\tx := uint16(src[nSrc+0])<<8 | uint16(src[nSrc+1])\n\t\t\tif u.current.endianness == LittleEndian {\n\t\t\t\tx = x>>8 | x<<8\n\t\t\t}\n\t\t\tr, sSize = rune(x), 2\n\t\t\tif utf16.IsSurrogate(r) {\n\t\t\t\tif nSrc+3 < len(src) {\n\t\t\t\t\tx = uint16(src[nSrc+2])<<8 | uint16(src[nSrc+3])\n\t\t\t\t\tif u.current.endianness == LittleEndian {\n\t\t\t\t\t\tx = x>>8 | x<<8\n\t\t\t\t\t}\n\t\t\t\t\t// Save for next iteration if it is not a high surrogate.\n\t\t\t\t\tif isHighSurrogate(rune(x)) {\n\t\t\t\t\t\tr, sSize = utf16.DecodeRune(r, rune(x)), 4\n\t\t\t\t\t}\n\t\t\t\t} else if !atEOF {\n\t\t\t\t\terr = transform.ErrShortSrc\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif dSize = utf8.RuneLen(r); dSize < 0 {\n\t\t\t\tr, dSize = utf8.RuneError, 3\n\t\t\t}\n\t\t} else if atEOF {\n\t\t\t// Single trailing byte.\n\t\t\tr, dSize, sSize = utf8.RuneError, 3, 1\n\t\t} else {\n\t\t\terr = transform.ErrShortSrc\n\t\t\tbreak\n\t\t}\n\t\tif nDst+dSize > len(dst) {\n\t\t\terr = transform.ErrShortDst\n\t\t\tbreak\n\t\t}\n\t\tnDst += utf8.EncodeRune(dst[nDst:], r)\n\t\tnSrc += sSize\n\t}\n\treturn nDst, nSrc, err\n}\n\nfunc isHighSurrogate(r rune) bool {\n\treturn 0xDC00 <= r && r <= 0xDFFF\n}\n\ntype utf16Encoder struct {\n\tendianness       Endianness\n\tinitialBOMPolicy BOMPolicy\n\tcurrentBOMPolicy BOMPolicy\n}\n\nfunc (u *utf16Encoder) Reset() {\n\tu.currentBOMPolicy = u.initialBOMPolicy\n}\n\nfunc (u *utf16Encoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {\n\tif u.currentBOMPolicy&writeBOM != 0 {\n\t\tif len(dst) < 2 {\n\t\t\treturn 0, 0, transform.ErrShortDst\n\t\t}\n\t\tdst[0], dst[1] = 0xfe, 0xff\n\t\tu.currentBOMPolicy = IgnoreBOM\n\t\tnDst = 2\n\t}\n\n\tr, size := rune(0), 0\n\tfor nSrc < len(src) {\n\t\tr = rune(src[nSrc])\n\n\t\t// Decode a 1-byte rune.\n\t\tif r < utf8.RuneSelf {\n\t\t\tsize = 1\n\n\t\t} else {\n\t\t\t// Decode a multi-byte rune.\n\t\t\tr, size = utf8.DecodeRune(src[nSrc:])\n\t\t\tif size == 1 {\n\t\t\t\t// All valid runes of size 1 (those below utf8.RuneSelf) were\n\t\t\t\t// handled above. We have invalid UTF-8 or we haven't seen the\n\t\t\t\t// full character yet.\n\t\t\t\tif !atEOF && !utf8.FullRune(src[nSrc:]) {\n\t\t\t\t\terr = transform.ErrShortSrc\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif r <= 0xffff {\n\t\t\tif nDst+2 > len(dst) {\n\t\t\t\terr = transform.ErrShortDst\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tdst[nDst+0] = uint8(r >> 8)\n\t\t\tdst[nDst+1] = uint8(r)\n\t\t\tnDst += 2\n\t\t} else {\n\t\t\tif nDst+4 > len(dst) {\n\t\t\t\terr = transform.ErrShortDst\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tr1, r2 := utf16.EncodeRune(r)\n\t\t\tdst[nDst+0] = uint8(r1 >> 8)\n\t\t\tdst[nDst+1] = uint8(r1)\n\t\t\tdst[nDst+2] = uint8(r2 >> 8)\n\t\t\tdst[nDst+3] = uint8(r2)\n\t\t\tnDst += 4\n\t\t}\n\t\tnSrc += size\n\t}\n\n\tif u.endianness == LittleEndian {\n\t\tfor i := 0; i < nDst; i += 2 {\n\t\t\tdst[i], dst[i+1] = dst[i+1], dst[i]\n\t\t}\n\t}\n\treturn nDst, nSrc, err\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/text/internal/language/common.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\npackage language\n\n// This file contains code common to the maketables.go and the package code.\n\n// AliasType is the type of an alias in AliasMap.\ntype AliasType int8\n\nconst (\n\tDeprecated AliasType = iota\n\tMacro\n\tLegacy\n\n\tAliasTypeUnknown AliasType = -1\n)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/text/internal/language/compact/compact.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package compact defines a compact representation of language tags.\n//\n// Common language tags (at least all for which locale information is defined\n// in CLDR) are assigned a unique index. Each Tag is associated with such an\n// ID for selecting language-related resources (such as translations) as well\n// as one for selecting regional defaults (currency, number formatting, etc.)\n//\n// It may want to export this functionality at some point, but at this point\n// this is only available for use within x/text.\npackage compact // import \"golang.org/x/text/internal/language/compact\"\n\nimport (\n\t\"sort\"\n\t\"strings\"\n\n\t\"golang.org/x/text/internal/language\"\n)\n\n// ID is an integer identifying a single tag.\ntype ID uint16\n\nfunc getCoreIndex(t language.Tag) (id ID, ok bool) {\n\tcci, ok := language.GetCompactCore(t)\n\tif !ok {\n\t\treturn 0, false\n\t}\n\ti := sort.Search(len(coreTags), func(i int) bool {\n\t\treturn cci <= coreTags[i]\n\t})\n\tif i == len(coreTags) || coreTags[i] != cci {\n\t\treturn 0, false\n\t}\n\treturn ID(i), true\n}\n\n// Parent returns the ID of the parent or the root ID if id is already the root.\nfunc (id ID) Parent() ID {\n\treturn parents[id]\n}\n\n// Tag converts id to an internal language Tag.\nfunc (id ID) Tag() language.Tag {\n\tif int(id) >= len(coreTags) {\n\t\treturn specialTags[int(id)-len(coreTags)]\n\t}\n\treturn coreTags[id].Tag()\n}\n\nvar specialTags []language.Tag\n\nfunc init() {\n\ttags := strings.Split(specialTagsStr, \" \")\n\tspecialTags = make([]language.Tag, len(tags))\n\tfor i, t := range tags {\n\t\tspecialTags[i] = language.MustParse(t)\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/text/internal/language/compact/language.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:generate go run gen.go gen_index.go -output tables.go\n//go:generate go run gen_parents.go\n\npackage compact\n\n// TODO: Remove above NOTE after:\n// - verifying that tables are dropped correctly (most notably matcher tables).\n\nimport (\n\t\"strings\"\n\n\t\"golang.org/x/text/internal/language\"\n)\n\n// Tag represents a BCP 47 language tag. It is used to specify an instance of a\n// specific language or locale. All language tag values are guaranteed to be\n// well-formed.\ntype Tag struct {\n\t// NOTE: exported tags will become part of the public API.\n\tlanguage ID\n\tlocale   ID\n\tfull     fullTag // always a language.Tag for now.\n}\n\nconst _und = 0\n\ntype fullTag interface {\n\tIsRoot() bool\n\tParent() language.Tag\n}\n\n// Make a compact Tag from a fully specified internal language Tag.\nfunc Make(t language.Tag) (tag Tag) {\n\tif region := t.TypeForKey(\"rg\"); len(region) == 6 && region[2:] == \"zzzz\" {\n\t\tif r, err := language.ParseRegion(region[:2]); err == nil {\n\t\t\ttFull := t\n\t\t\tt, _ = t.SetTypeForKey(\"rg\", \"\")\n\t\t\t// TODO: should we not consider \"va\" for the language tag?\n\t\t\tvar exact1, exact2 bool\n\t\t\ttag.language, exact1 = FromTag(t)\n\t\t\tt.RegionID = r\n\t\t\ttag.locale, exact2 = FromTag(t)\n\t\t\tif !exact1 || !exact2 {\n\t\t\t\ttag.full = tFull\n\t\t\t}\n\t\t\treturn tag\n\t\t}\n\t}\n\tlang, ok := FromTag(t)\n\ttag.language = lang\n\ttag.locale = lang\n\tif !ok {\n\t\ttag.full = t\n\t}\n\treturn tag\n}\n\n// Tag returns an internal language Tag version of this tag.\nfunc (t Tag) Tag() language.Tag {\n\tif t.full != nil {\n\t\treturn t.full.(language.Tag)\n\t}\n\ttag := t.language.Tag()\n\tif t.language != t.locale {\n\t\tloc := t.locale.Tag()\n\t\ttag, _ = tag.SetTypeForKey(\"rg\", strings.ToLower(loc.RegionID.String())+\"zzzz\")\n\t}\n\treturn tag\n}\n\n// IsCompact reports whether this tag is fully defined in terms of ID.\nfunc (t *Tag) IsCompact() bool {\n\treturn t.full == nil\n}\n\n// MayHaveVariants reports whether a tag may have variants. If it returns false\n// it is guaranteed the tag does not have variants.\nfunc (t Tag) MayHaveVariants() bool {\n\treturn t.full != nil || int(t.language) >= len(coreTags)\n}\n\n// MayHaveExtensions reports whether a tag may have extensions. If it returns\n// false it is guaranteed the tag does not have them.\nfunc (t Tag) MayHaveExtensions() bool {\n\treturn t.full != nil ||\n\t\tint(t.language) >= len(coreTags) ||\n\t\tt.language != t.locale\n}\n\n// IsRoot returns true if t is equal to language \"und\".\nfunc (t Tag) IsRoot() bool {\n\tif t.full != nil {\n\t\treturn t.full.IsRoot()\n\t}\n\treturn t.language == _und\n}\n\n// Parent returns the CLDR parent of t. In CLDR, missing fields in data for a\n// specific language are substituted with fields from the parent language.\n// The parent for a language may change for newer versions of CLDR.\nfunc (t Tag) Parent() Tag {\n\tif t.full != nil {\n\t\treturn Make(t.full.Parent())\n\t}\n\tif t.language != t.locale {\n\t\t// Simulate stripping -u-rg-xxxxxx\n\t\treturn Tag{language: t.language, locale: t.language}\n\t}\n\t// TODO: use parent lookup table once cycle from internal package is\n\t// removed. Probably by internalizing the table and declaring this fast\n\t// enough.\n\t// lang := compactID(internal.Parent(uint16(t.language)))\n\tlang, _ := FromTag(t.language.Tag().Parent())\n\treturn Tag{language: lang, locale: lang}\n}\n\n// nextToken returns token t and the rest of the string.\nfunc nextToken(s string) (t, tail string) {\n\tp := strings.Index(s[1:], \"-\")\n\tif p == -1 {\n\t\treturn s[1:], \"\"\n\t}\n\tp++\n\treturn s[1:p], s[p:]\n}\n\n// LanguageID returns an index, where 0 <= index < NumCompactTags, for tags\n// for which data exists in the text repository.The index will change over time\n// and should not be stored in persistent storage. If t does not match a compact\n// index, exact will be false and the compact index will be returned for the\n// first match after repeatedly taking the Parent of t.\nfunc LanguageID(t Tag) (id ID, exact bool) {\n\treturn t.language, t.full == nil\n}\n\n// RegionalID returns the ID for the regional variant of this tag. This index is\n// used to indicate region-specific overrides, such as default currency, default\n// calendar and week data, default time cycle, and default measurement system\n// and unit preferences.\n//\n// For instance, the tag en-GB-u-rg-uszzzz specifies British English with US\n// settings for currency, number formatting, etc. The CompactIndex for this tag\n// will be that for en-GB, while the RegionalID will be the one corresponding to\n// en-US.\nfunc RegionalID(t Tag) (id ID, exact bool) {\n\treturn t.locale, t.full == nil\n}\n\n// LanguageTag returns t stripped of regional variant indicators.\n//\n// At the moment this means it is stripped of a regional and variant subtag \"rg\"\n// and \"va\" in the \"u\" extension.\nfunc (t Tag) LanguageTag() Tag {\n\tif t.full == nil {\n\t\treturn Tag{language: t.language, locale: t.language}\n\t}\n\ttt := t.Tag()\n\ttt.SetTypeForKey(\"rg\", \"\")\n\ttt.SetTypeForKey(\"va\", \"\")\n\treturn Make(tt)\n}\n\n// RegionalTag returns the regional variant of the tag.\n//\n// At the moment this means that the region is set from the regional subtag\n// \"rg\" in the \"u\" extension.\nfunc (t Tag) RegionalTag() Tag {\n\trt := Tag{language: t.locale, locale: t.locale}\n\tif t.full == nil {\n\t\treturn rt\n\t}\n\tb := language.Builder{}\n\ttag := t.Tag()\n\t// tag, _ = tag.SetTypeForKey(\"rg\", \"\")\n\tb.SetTag(t.locale.Tag())\n\tif v := tag.Variants(); v != \"\" {\n\t\tfor _, v := range strings.Split(v, \"-\") {\n\t\t\tb.AddVariant(v)\n\t\t}\n\t}\n\tfor _, e := range tag.Extensions() {\n\t\tb.AddExt(e)\n\t}\n\treturn t\n}\n\n// FromTag reports closest matching ID for an internal language Tag.\nfunc FromTag(t language.Tag) (id ID, exact bool) {\n\t// TODO: perhaps give more frequent tags a lower index.\n\t// TODO: we could make the indexes stable. This will excluded some\n\t//       possibilities for optimization, so don't do this quite yet.\n\texact = true\n\n\tb, s, r := t.Raw()\n\tif t.HasString() {\n\t\tif t.IsPrivateUse() {\n\t\t\t// We have no entries for user-defined tags.\n\t\t\treturn 0, false\n\t\t}\n\t\thasExtra := false\n\t\tif t.HasVariants() {\n\t\t\tif t.HasExtensions() {\n\t\t\t\tbuild := language.Builder{}\n\t\t\t\tbuild.SetTag(language.Tag{LangID: b, ScriptID: s, RegionID: r})\n\t\t\t\tbuild.AddVariant(t.Variants())\n\t\t\t\texact = false\n\t\t\t\tt = build.Make()\n\t\t\t}\n\t\t\thasExtra = true\n\t\t} else if _, ok := t.Extension('u'); ok {\n\t\t\t// TODO: va may mean something else. Consider not considering it.\n\t\t\t// Strip all but the 'va' entry.\n\t\t\told := t\n\t\t\tvariant := t.TypeForKey(\"va\")\n\t\t\tt = language.Tag{LangID: b, ScriptID: s, RegionID: r}\n\t\t\tif variant != \"\" {\n\t\t\t\tt, _ = t.SetTypeForKey(\"va\", variant)\n\t\t\t\thasExtra = true\n\t\t\t}\n\t\t\texact = old == t\n\t\t} else {\n\t\t\texact = false\n\t\t}\n\t\tif hasExtra {\n\t\t\t// We have some variants.\n\t\t\tfor i, s := range specialTags {\n\t\t\t\tif s == t {\n\t\t\t\t\treturn ID(i + len(coreTags)), exact\n\t\t\t\t}\n\t\t\t}\n\t\t\texact = false\n\t\t}\n\t}\n\tif x, ok := getCoreIndex(t); ok {\n\t\treturn x, exact\n\t}\n\texact = false\n\tif r != 0 && s == 0 {\n\t\t// Deal with cases where an extra script is inserted for the region.\n\t\tt, _ := t.Maximize()\n\t\tif x, ok := getCoreIndex(t); ok {\n\t\t\treturn x, exact\n\t\t}\n\t}\n\tfor t = t.Parent(); t != root; t = t.Parent() {\n\t\t// No variants specified: just compare core components.\n\t\t// The key has the form lllssrrr, where l, s, and r are nibbles for\n\t\t// respectively the langID, scriptID, and regionID.\n\t\tif x, ok := getCoreIndex(t); ok {\n\t\t\treturn x, exact\n\t\t}\n\t}\n\treturn 0, exact\n}\n\nvar root = language.Tag{}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/text/internal/language/compact/parents.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\npackage compact\n\n// parents maps a compact index of a tag to the compact index of the parent of\n// this tag.\nvar parents = []ID{ // 775 elements\n\t// Entry 0 - 3F\n\t0x0000, 0x0000, 0x0001, 0x0001, 0x0000, 0x0004, 0x0000, 0x0006,\n\t0x0000, 0x0008, 0x0000, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,\n\t0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,\n\t0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,\n\t0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0000,\n\t0x0000, 0x0028, 0x0000, 0x002a, 0x0000, 0x002c, 0x0000, 0x0000,\n\t0x002f, 0x002e, 0x002e, 0x0000, 0x0033, 0x0000, 0x0035, 0x0000,\n\t0x0037, 0x0000, 0x0039, 0x0000, 0x003b, 0x0000, 0x0000, 0x003e,\n\t// Entry 40 - 7F\n\t0x0000, 0x0040, 0x0040, 0x0000, 0x0043, 0x0043, 0x0000, 0x0046,\n\t0x0000, 0x0048, 0x0000, 0x0000, 0x004b, 0x004a, 0x004a, 0x0000,\n\t0x004f, 0x004f, 0x004f, 0x004f, 0x0000, 0x0054, 0x0054, 0x0000,\n\t0x0057, 0x0000, 0x0059, 0x0000, 0x005b, 0x0000, 0x005d, 0x005d,\n\t0x0000, 0x0060, 0x0000, 0x0062, 0x0000, 0x0064, 0x0000, 0x0066,\n\t0x0066, 0x0000, 0x0069, 0x0000, 0x006b, 0x006b, 0x006b, 0x006b,\n\t0x006b, 0x006b, 0x006b, 0x0000, 0x0073, 0x0000, 0x0075, 0x0000,\n\t0x0077, 0x0000, 0x0000, 0x007a, 0x0000, 0x007c, 0x0000, 0x007e,\n\t// Entry 80 - BF\n\t0x0000, 0x0080, 0x0080, 0x0000, 0x0083, 0x0083, 0x0000, 0x0086,\n\t0x0087, 0x0087, 0x0087, 0x0086, 0x0088, 0x0087, 0x0087, 0x0087,\n\t0x0086, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0088,\n\t0x0087, 0x0087, 0x0087, 0x0087, 0x0088, 0x0087, 0x0088, 0x0087,\n\t0x0087, 0x0088, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087,\n\t0x0087, 0x0087, 0x0087, 0x0086, 0x0087, 0x0087, 0x0087, 0x0087,\n\t0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087,\n\t0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0086, 0x0087, 0x0086,\n\t// Entry C0 - FF\n\t0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087,\n\t0x0088, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087,\n\t0x0086, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0088, 0x0087,\n\t0x0087, 0x0088, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087,\n\t0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0086, 0x0086, 0x0087,\n\t0x0087, 0x0086, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0000,\n\t0x00ef, 0x0000, 0x00f1, 0x00f2, 0x00f2, 0x00f2, 0x00f2, 0x00f2,\n\t0x00f2, 0x00f2, 0x00f2, 0x00f2, 0x00f1, 0x00f2, 0x00f1, 0x00f1,\n\t// Entry 100 - 13F\n\t0x00f2, 0x00f2, 0x00f1, 0x00f2, 0x00f2, 0x00f2, 0x00f2, 0x00f1,\n\t0x00f2, 0x00f2, 0x00f2, 0x00f2, 0x00f2, 0x00f2, 0x0000, 0x010e,\n\t0x0000, 0x0110, 0x0000, 0x0112, 0x0000, 0x0114, 0x0114, 0x0000,\n\t0x0117, 0x0117, 0x0117, 0x0117, 0x0000, 0x011c, 0x0000, 0x011e,\n\t0x0000, 0x0120, 0x0120, 0x0000, 0x0123, 0x0123, 0x0123, 0x0123,\n\t0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123,\n\t0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123,\n\t0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123,\n\t// Entry 140 - 17F\n\t0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123,\n\t0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123,\n\t0x0123, 0x0123, 0x0000, 0x0152, 0x0000, 0x0154, 0x0000, 0x0156,\n\t0x0000, 0x0158, 0x0000, 0x015a, 0x0000, 0x015c, 0x015c, 0x015c,\n\t0x0000, 0x0160, 0x0000, 0x0000, 0x0163, 0x0000, 0x0165, 0x0000,\n\t0x0167, 0x0167, 0x0167, 0x0000, 0x016b, 0x0000, 0x016d, 0x0000,\n\t0x016f, 0x0000, 0x0171, 0x0171, 0x0000, 0x0174, 0x0000, 0x0176,\n\t0x0000, 0x0178, 0x0000, 0x017a, 0x0000, 0x017c, 0x0000, 0x017e,\n\t// Entry 180 - 1BF\n\t0x0000, 0x0000, 0x0000, 0x0182, 0x0000, 0x0184, 0x0184, 0x0184,\n\t0x0184, 0x0000, 0x0000, 0x0000, 0x018b, 0x0000, 0x0000, 0x018e,\n\t0x0000, 0x0000, 0x0191, 0x0000, 0x0000, 0x0000, 0x0195, 0x0000,\n\t0x0197, 0x0000, 0x0000, 0x019a, 0x0000, 0x0000, 0x019d, 0x0000,\n\t0x019f, 0x0000, 0x01a1, 0x0000, 0x01a3, 0x0000, 0x01a5, 0x0000,\n\t0x01a7, 0x0000, 0x01a9, 0x0000, 0x01ab, 0x0000, 0x01ad, 0x0000,\n\t0x01af, 0x0000, 0x01b1, 0x01b1, 0x0000, 0x01b4, 0x0000, 0x01b6,\n\t0x0000, 0x01b8, 0x0000, 0x01ba, 0x0000, 0x01bc, 0x0000, 0x0000,\n\t// Entry 1C0 - 1FF\n\t0x01bf, 0x0000, 0x01c1, 0x0000, 0x01c3, 0x0000, 0x01c5, 0x0000,\n\t0x01c7, 0x0000, 0x01c9, 0x0000, 0x01cb, 0x01cb, 0x01cb, 0x01cb,\n\t0x0000, 0x01d0, 0x0000, 0x01d2, 0x01d2, 0x0000, 0x01d5, 0x0000,\n\t0x01d7, 0x0000, 0x01d9, 0x0000, 0x01db, 0x0000, 0x01dd, 0x0000,\n\t0x01df, 0x01df, 0x0000, 0x01e2, 0x0000, 0x01e4, 0x0000, 0x01e6,\n\t0x0000, 0x01e8, 0x0000, 0x01ea, 0x0000, 0x01ec, 0x0000, 0x01ee,\n\t0x0000, 0x01f0, 0x0000, 0x0000, 0x01f3, 0x0000, 0x01f5, 0x01f5,\n\t0x01f5, 0x0000, 0x01f9, 0x0000, 0x01fb, 0x0000, 0x01fd, 0x0000,\n\t// Entry 200 - 23F\n\t0x01ff, 0x0000, 0x0000, 0x0202, 0x0000, 0x0204, 0x0204, 0x0000,\n\t0x0207, 0x0000, 0x0209, 0x0209, 0x0000, 0x020c, 0x020c, 0x0000,\n\t0x020f, 0x020f, 0x020f, 0x020f, 0x020f, 0x020f, 0x020f, 0x0000,\n\t0x0217, 0x0000, 0x0219, 0x0000, 0x021b, 0x0000, 0x0000, 0x0000,\n\t0x0000, 0x0000, 0x0221, 0x0000, 0x0000, 0x0224, 0x0000, 0x0226,\n\t0x0226, 0x0000, 0x0229, 0x0000, 0x022b, 0x022b, 0x0000, 0x0000,\n\t0x022f, 0x022e, 0x022e, 0x0000, 0x0000, 0x0234, 0x0000, 0x0236,\n\t0x0000, 0x0238, 0x0000, 0x0244, 0x023a, 0x0244, 0x0244, 0x0244,\n\t// Entry 240 - 27F\n\t0x0244, 0x0244, 0x0244, 0x0244, 0x023a, 0x0244, 0x0244, 0x0000,\n\t0x0247, 0x0247, 0x0247, 0x0000, 0x024b, 0x0000, 0x024d, 0x0000,\n\t0x024f, 0x024f, 0x0000, 0x0252, 0x0000, 0x0254, 0x0254, 0x0254,\n\t0x0254, 0x0254, 0x0254, 0x0000, 0x025b, 0x0000, 0x025d, 0x0000,\n\t0x025f, 0x0000, 0x0261, 0x0000, 0x0263, 0x0000, 0x0265, 0x0000,\n\t0x0000, 0x0268, 0x0268, 0x0268, 0x0000, 0x026c, 0x0000, 0x026e,\n\t0x0000, 0x0270, 0x0000, 0x0000, 0x0000, 0x0274, 0x0273, 0x0273,\n\t0x0000, 0x0278, 0x0000, 0x027a, 0x0000, 0x027c, 0x0000, 0x0000,\n\t// Entry 280 - 2BF\n\t0x0000, 0x0000, 0x0281, 0x0000, 0x0000, 0x0284, 0x0000, 0x0286,\n\t0x0286, 0x0286, 0x0286, 0x0000, 0x028b, 0x028b, 0x028b, 0x0000,\n\t0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x0000, 0x0295, 0x0295,\n\t0x0295, 0x0295, 0x0000, 0x0000, 0x0000, 0x0000, 0x029d, 0x029d,\n\t0x029d, 0x0000, 0x02a1, 0x02a1, 0x02a1, 0x02a1, 0x0000, 0x0000,\n\t0x02a7, 0x02a7, 0x02a7, 0x02a7, 0x0000, 0x02ac, 0x0000, 0x02ae,\n\t0x02ae, 0x0000, 0x02b1, 0x0000, 0x02b3, 0x0000, 0x02b5, 0x02b5,\n\t0x0000, 0x0000, 0x02b9, 0x0000, 0x0000, 0x0000, 0x02bd, 0x0000,\n\t// Entry 2C0 - 2FF\n\t0x02bf, 0x02bf, 0x0000, 0x0000, 0x02c3, 0x0000, 0x02c5, 0x0000,\n\t0x02c7, 0x0000, 0x02c9, 0x0000, 0x02cb, 0x0000, 0x02cd, 0x02cd,\n\t0x0000, 0x0000, 0x02d1, 0x0000, 0x02d3, 0x02d0, 0x02d0, 0x0000,\n\t0x0000, 0x02d8, 0x02d7, 0x02d7, 0x0000, 0x0000, 0x02dd, 0x0000,\n\t0x02df, 0x0000, 0x02e1, 0x0000, 0x0000, 0x02e4, 0x0000, 0x02e6,\n\t0x0000, 0x0000, 0x02e9, 0x0000, 0x02eb, 0x0000, 0x02ed, 0x0000,\n\t0x02ef, 0x02ef, 0x0000, 0x0000, 0x02f3, 0x02f2, 0x02f2, 0x0000,\n\t0x02f7, 0x0000, 0x02f9, 0x02f9, 0x02f9, 0x02f9, 0x02f9, 0x0000,\n\t// Entry 300 - 33F\n\t0x02ff, 0x0300, 0x02ff, 0x0000, 0x0303, 0x0051, 0x00e6,\n} // Size: 1574 bytes\n\n// Total table size 1574 bytes (1KiB); checksum: 895AAF0B\n"
  },
  {
    "path": "tests/vendor/golang.org/x/text/internal/language/compact/tables.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\npackage compact\n\nimport \"golang.org/x/text/internal/language\"\n\n// CLDRVersion is the CLDR version from which the tables in this package are derived.\nconst CLDRVersion = \"32\"\n\n// NumCompactTags is the number of common tags. The maximum tag is\n// NumCompactTags-1.\nconst NumCompactTags = 775\nconst (\n\tundIndex          ID = 0\n\tafIndex           ID = 1\n\tafNAIndex         ID = 2\n\tafZAIndex         ID = 3\n\tagqIndex          ID = 4\n\tagqCMIndex        ID = 5\n\takIndex           ID = 6\n\takGHIndex         ID = 7\n\tamIndex           ID = 8\n\tamETIndex         ID = 9\n\tarIndex           ID = 10\n\tar001Index        ID = 11\n\tarAEIndex         ID = 12\n\tarBHIndex         ID = 13\n\tarDJIndex         ID = 14\n\tarDZIndex         ID = 15\n\tarEGIndex         ID = 16\n\tarEHIndex         ID = 17\n\tarERIndex         ID = 18\n\tarILIndex         ID = 19\n\tarIQIndex         ID = 20\n\tarJOIndex         ID = 21\n\tarKMIndex         ID = 22\n\tarKWIndex         ID = 23\n\tarLBIndex         ID = 24\n\tarLYIndex         ID = 25\n\tarMAIndex         ID = 26\n\tarMRIndex         ID = 27\n\tarOMIndex         ID = 28\n\tarPSIndex         ID = 29\n\tarQAIndex         ID = 30\n\tarSAIndex         ID = 31\n\tarSDIndex         ID = 32\n\tarSOIndex         ID = 33\n\tarSSIndex         ID = 34\n\tarSYIndex         ID = 35\n\tarTDIndex         ID = 36\n\tarTNIndex         ID = 37\n\tarYEIndex         ID = 38\n\tarsIndex          ID = 39\n\tasIndex           ID = 40\n\tasINIndex         ID = 41\n\tasaIndex          ID = 42\n\tasaTZIndex        ID = 43\n\tastIndex          ID = 44\n\tastESIndex        ID = 45\n\tazIndex           ID = 46\n\tazCyrlIndex       ID = 47\n\tazCyrlAZIndex     ID = 48\n\tazLatnIndex       ID = 49\n\tazLatnAZIndex     ID = 50\n\tbasIndex          ID = 51\n\tbasCMIndex        ID = 52\n\tbeIndex           ID = 53\n\tbeBYIndex         ID = 54\n\tbemIndex          ID = 55\n\tbemZMIndex        ID = 56\n\tbezIndex          ID = 57\n\tbezTZIndex        ID = 58\n\tbgIndex           ID = 59\n\tbgBGIndex         ID = 60\n\tbhIndex           ID = 61\n\tbmIndex           ID = 62\n\tbmMLIndex         ID = 63\n\tbnIndex           ID = 64\n\tbnBDIndex         ID = 65\n\tbnINIndex         ID = 66\n\tboIndex           ID = 67\n\tboCNIndex         ID = 68\n\tboINIndex         ID = 69\n\tbrIndex           ID = 70\n\tbrFRIndex         ID = 71\n\tbrxIndex          ID = 72\n\tbrxINIndex        ID = 73\n\tbsIndex           ID = 74\n\tbsCyrlIndex       ID = 75\n\tbsCyrlBAIndex     ID = 76\n\tbsLatnIndex       ID = 77\n\tbsLatnBAIndex     ID = 78\n\tcaIndex           ID = 79\n\tcaADIndex         ID = 80\n\tcaESIndex         ID = 81\n\tcaFRIndex         ID = 82\n\tcaITIndex         ID = 83\n\tccpIndex          ID = 84\n\tccpBDIndex        ID = 85\n\tccpINIndex        ID = 86\n\tceIndex           ID = 87\n\tceRUIndex         ID = 88\n\tcggIndex          ID = 89\n\tcggUGIndex        ID = 90\n\tchrIndex          ID = 91\n\tchrUSIndex        ID = 92\n\tckbIndex          ID = 93\n\tckbIQIndex        ID = 94\n\tckbIRIndex        ID = 95\n\tcsIndex           ID = 96\n\tcsCZIndex         ID = 97\n\tcuIndex           ID = 98\n\tcuRUIndex         ID = 99\n\tcyIndex           ID = 100\n\tcyGBIndex         ID = 101\n\tdaIndex           ID = 102\n\tdaDKIndex         ID = 103\n\tdaGLIndex         ID = 104\n\tdavIndex          ID = 105\n\tdavKEIndex        ID = 106\n\tdeIndex           ID = 107\n\tdeATIndex         ID = 108\n\tdeBEIndex         ID = 109\n\tdeCHIndex         ID = 110\n\tdeDEIndex         ID = 111\n\tdeITIndex         ID = 112\n\tdeLIIndex         ID = 113\n\tdeLUIndex         ID = 114\n\tdjeIndex          ID = 115\n\tdjeNEIndex        ID = 116\n\tdsbIndex          ID = 117\n\tdsbDEIndex        ID = 118\n\tduaIndex          ID = 119\n\tduaCMIndex        ID = 120\n\tdvIndex           ID = 121\n\tdyoIndex          ID = 122\n\tdyoSNIndex        ID = 123\n\tdzIndex           ID = 124\n\tdzBTIndex         ID = 125\n\tebuIndex          ID = 126\n\tebuKEIndex        ID = 127\n\teeIndex           ID = 128\n\teeGHIndex         ID = 129\n\teeTGIndex         ID = 130\n\telIndex           ID = 131\n\telCYIndex         ID = 132\n\telGRIndex         ID = 133\n\tenIndex           ID = 134\n\ten001Index        ID = 135\n\ten150Index        ID = 136\n\tenAGIndex         ID = 137\n\tenAIIndex         ID = 138\n\tenASIndex         ID = 139\n\tenATIndex         ID = 140\n\tenAUIndex         ID = 141\n\tenBBIndex         ID = 142\n\tenBEIndex         ID = 143\n\tenBIIndex         ID = 144\n\tenBMIndex         ID = 145\n\tenBSIndex         ID = 146\n\tenBWIndex         ID = 147\n\tenBZIndex         ID = 148\n\tenCAIndex         ID = 149\n\tenCCIndex         ID = 150\n\tenCHIndex         ID = 151\n\tenCKIndex         ID = 152\n\tenCMIndex         ID = 153\n\tenCXIndex         ID = 154\n\tenCYIndex         ID = 155\n\tenDEIndex         ID = 156\n\tenDGIndex         ID = 157\n\tenDKIndex         ID = 158\n\tenDMIndex         ID = 159\n\tenERIndex         ID = 160\n\tenFIIndex         ID = 161\n\tenFJIndex         ID = 162\n\tenFKIndex         ID = 163\n\tenFMIndex         ID = 164\n\tenGBIndex         ID = 165\n\tenGDIndex         ID = 166\n\tenGGIndex         ID = 167\n\tenGHIndex         ID = 168\n\tenGIIndex         ID = 169\n\tenGMIndex         ID = 170\n\tenGUIndex         ID = 171\n\tenGYIndex         ID = 172\n\tenHKIndex         ID = 173\n\tenIEIndex         ID = 174\n\tenILIndex         ID = 175\n\tenIMIndex         ID = 176\n\tenINIndex         ID = 177\n\tenIOIndex         ID = 178\n\tenJEIndex         ID = 179\n\tenJMIndex         ID = 180\n\tenKEIndex         ID = 181\n\tenKIIndex         ID = 182\n\tenKNIndex         ID = 183\n\tenKYIndex         ID = 184\n\tenLCIndex         ID = 185\n\tenLRIndex         ID = 186\n\tenLSIndex         ID = 187\n\tenMGIndex         ID = 188\n\tenMHIndex         ID = 189\n\tenMOIndex         ID = 190\n\tenMPIndex         ID = 191\n\tenMSIndex         ID = 192\n\tenMTIndex         ID = 193\n\tenMUIndex         ID = 194\n\tenMWIndex         ID = 195\n\tenMYIndex         ID = 196\n\tenNAIndex         ID = 197\n\tenNFIndex         ID = 198\n\tenNGIndex         ID = 199\n\tenNLIndex         ID = 200\n\tenNRIndex         ID = 201\n\tenNUIndex         ID = 202\n\tenNZIndex         ID = 203\n\tenPGIndex         ID = 204\n\tenPHIndex         ID = 205\n\tenPKIndex         ID = 206\n\tenPNIndex         ID = 207\n\tenPRIndex         ID = 208\n\tenPWIndex         ID = 209\n\tenRWIndex         ID = 210\n\tenSBIndex         ID = 211\n\tenSCIndex         ID = 212\n\tenSDIndex         ID = 213\n\tenSEIndex         ID = 214\n\tenSGIndex         ID = 215\n\tenSHIndex         ID = 216\n\tenSIIndex         ID = 217\n\tenSLIndex         ID = 218\n\tenSSIndex         ID = 219\n\tenSXIndex         ID = 220\n\tenSZIndex         ID = 221\n\tenTCIndex         ID = 222\n\tenTKIndex         ID = 223\n\tenTOIndex         ID = 224\n\tenTTIndex         ID = 225\n\tenTVIndex         ID = 226\n\tenTZIndex         ID = 227\n\tenUGIndex         ID = 228\n\tenUMIndex         ID = 229\n\tenUSIndex         ID = 230\n\tenVCIndex         ID = 231\n\tenVGIndex         ID = 232\n\tenVIIndex         ID = 233\n\tenVUIndex         ID = 234\n\tenWSIndex         ID = 235\n\tenZAIndex         ID = 236\n\tenZMIndex         ID = 237\n\tenZWIndex         ID = 238\n\teoIndex           ID = 239\n\teo001Index        ID = 240\n\tesIndex           ID = 241\n\tes419Index        ID = 242\n\tesARIndex         ID = 243\n\tesBOIndex         ID = 244\n\tesBRIndex         ID = 245\n\tesBZIndex         ID = 246\n\tesCLIndex         ID = 247\n\tesCOIndex         ID = 248\n\tesCRIndex         ID = 249\n\tesCUIndex         ID = 250\n\tesDOIndex         ID = 251\n\tesEAIndex         ID = 252\n\tesECIndex         ID = 253\n\tesESIndex         ID = 254\n\tesGQIndex         ID = 255\n\tesGTIndex         ID = 256\n\tesHNIndex         ID = 257\n\tesICIndex         ID = 258\n\tesMXIndex         ID = 259\n\tesNIIndex         ID = 260\n\tesPAIndex         ID = 261\n\tesPEIndex         ID = 262\n\tesPHIndex         ID = 263\n\tesPRIndex         ID = 264\n\tesPYIndex         ID = 265\n\tesSVIndex         ID = 266\n\tesUSIndex         ID = 267\n\tesUYIndex         ID = 268\n\tesVEIndex         ID = 269\n\tetIndex           ID = 270\n\tetEEIndex         ID = 271\n\teuIndex           ID = 272\n\teuESIndex         ID = 273\n\tewoIndex          ID = 274\n\tewoCMIndex        ID = 275\n\tfaIndex           ID = 276\n\tfaAFIndex         ID = 277\n\tfaIRIndex         ID = 278\n\tffIndex           ID = 279\n\tffCMIndex         ID = 280\n\tffGNIndex         ID = 281\n\tffMRIndex         ID = 282\n\tffSNIndex         ID = 283\n\tfiIndex           ID = 284\n\tfiFIIndex         ID = 285\n\tfilIndex          ID = 286\n\tfilPHIndex        ID = 287\n\tfoIndex           ID = 288\n\tfoDKIndex         ID = 289\n\tfoFOIndex         ID = 290\n\tfrIndex           ID = 291\n\tfrBEIndex         ID = 292\n\tfrBFIndex         ID = 293\n\tfrBIIndex         ID = 294\n\tfrBJIndex         ID = 295\n\tfrBLIndex         ID = 296\n\tfrCAIndex         ID = 297\n\tfrCDIndex         ID = 298\n\tfrCFIndex         ID = 299\n\tfrCGIndex         ID = 300\n\tfrCHIndex         ID = 301\n\tfrCIIndex         ID = 302\n\tfrCMIndex         ID = 303\n\tfrDJIndex         ID = 304\n\tfrDZIndex         ID = 305\n\tfrFRIndex         ID = 306\n\tfrGAIndex         ID = 307\n\tfrGFIndex         ID = 308\n\tfrGNIndex         ID = 309\n\tfrGPIndex         ID = 310\n\tfrGQIndex         ID = 311\n\tfrHTIndex         ID = 312\n\tfrKMIndex         ID = 313\n\tfrLUIndex         ID = 314\n\tfrMAIndex         ID = 315\n\tfrMCIndex         ID = 316\n\tfrMFIndex         ID = 317\n\tfrMGIndex         ID = 318\n\tfrMLIndex         ID = 319\n\tfrMQIndex         ID = 320\n\tfrMRIndex         ID = 321\n\tfrMUIndex         ID = 322\n\tfrNCIndex         ID = 323\n\tfrNEIndex         ID = 324\n\tfrPFIndex         ID = 325\n\tfrPMIndex         ID = 326\n\tfrREIndex         ID = 327\n\tfrRWIndex         ID = 328\n\tfrSCIndex         ID = 329\n\tfrSNIndex         ID = 330\n\tfrSYIndex         ID = 331\n\tfrTDIndex         ID = 332\n\tfrTGIndex         ID = 333\n\tfrTNIndex         ID = 334\n\tfrVUIndex         ID = 335\n\tfrWFIndex         ID = 336\n\tfrYTIndex         ID = 337\n\tfurIndex          ID = 338\n\tfurITIndex        ID = 339\n\tfyIndex           ID = 340\n\tfyNLIndex         ID = 341\n\tgaIndex           ID = 342\n\tgaIEIndex         ID = 343\n\tgdIndex           ID = 344\n\tgdGBIndex         ID = 345\n\tglIndex           ID = 346\n\tglESIndex         ID = 347\n\tgswIndex          ID = 348\n\tgswCHIndex        ID = 349\n\tgswFRIndex        ID = 350\n\tgswLIIndex        ID = 351\n\tguIndex           ID = 352\n\tguINIndex         ID = 353\n\tguwIndex          ID = 354\n\tguzIndex          ID = 355\n\tguzKEIndex        ID = 356\n\tgvIndex           ID = 357\n\tgvIMIndex         ID = 358\n\thaIndex           ID = 359\n\thaGHIndex         ID = 360\n\thaNEIndex         ID = 361\n\thaNGIndex         ID = 362\n\thawIndex          ID = 363\n\thawUSIndex        ID = 364\n\theIndex           ID = 365\n\theILIndex         ID = 366\n\thiIndex           ID = 367\n\thiINIndex         ID = 368\n\thrIndex           ID = 369\n\thrBAIndex         ID = 370\n\thrHRIndex         ID = 371\n\thsbIndex          ID = 372\n\thsbDEIndex        ID = 373\n\thuIndex           ID = 374\n\thuHUIndex         ID = 375\n\thyIndex           ID = 376\n\thyAMIndex         ID = 377\n\tidIndex           ID = 378\n\tidIDIndex         ID = 379\n\tigIndex           ID = 380\n\tigNGIndex         ID = 381\n\tiiIndex           ID = 382\n\tiiCNIndex         ID = 383\n\tinIndex           ID = 384\n\tioIndex           ID = 385\n\tisIndex           ID = 386\n\tisISIndex         ID = 387\n\titIndex           ID = 388\n\titCHIndex         ID = 389\n\titITIndex         ID = 390\n\titSMIndex         ID = 391\n\titVAIndex         ID = 392\n\tiuIndex           ID = 393\n\tiwIndex           ID = 394\n\tjaIndex           ID = 395\n\tjaJPIndex         ID = 396\n\tjboIndex          ID = 397\n\tjgoIndex          ID = 398\n\tjgoCMIndex        ID = 399\n\tjiIndex           ID = 400\n\tjmcIndex          ID = 401\n\tjmcTZIndex        ID = 402\n\tjvIndex           ID = 403\n\tjwIndex           ID = 404\n\tkaIndex           ID = 405\n\tkaGEIndex         ID = 406\n\tkabIndex          ID = 407\n\tkabDZIndex        ID = 408\n\tkajIndex          ID = 409\n\tkamIndex          ID = 410\n\tkamKEIndex        ID = 411\n\tkcgIndex          ID = 412\n\tkdeIndex          ID = 413\n\tkdeTZIndex        ID = 414\n\tkeaIndex          ID = 415\n\tkeaCVIndex        ID = 416\n\tkhqIndex          ID = 417\n\tkhqMLIndex        ID = 418\n\tkiIndex           ID = 419\n\tkiKEIndex         ID = 420\n\tkkIndex           ID = 421\n\tkkKZIndex         ID = 422\n\tkkjIndex          ID = 423\n\tkkjCMIndex        ID = 424\n\tklIndex           ID = 425\n\tklGLIndex         ID = 426\n\tklnIndex          ID = 427\n\tklnKEIndex        ID = 428\n\tkmIndex           ID = 429\n\tkmKHIndex         ID = 430\n\tknIndex           ID = 431\n\tknINIndex         ID = 432\n\tkoIndex           ID = 433\n\tkoKPIndex         ID = 434\n\tkoKRIndex         ID = 435\n\tkokIndex          ID = 436\n\tkokINIndex        ID = 437\n\tksIndex           ID = 438\n\tksINIndex         ID = 439\n\tksbIndex          ID = 440\n\tksbTZIndex        ID = 441\n\tksfIndex          ID = 442\n\tksfCMIndex        ID = 443\n\tkshIndex          ID = 444\n\tkshDEIndex        ID = 445\n\tkuIndex           ID = 446\n\tkwIndex           ID = 447\n\tkwGBIndex         ID = 448\n\tkyIndex           ID = 449\n\tkyKGIndex         ID = 450\n\tlagIndex          ID = 451\n\tlagTZIndex        ID = 452\n\tlbIndex           ID = 453\n\tlbLUIndex         ID = 454\n\tlgIndex           ID = 455\n\tlgUGIndex         ID = 456\n\tlktIndex          ID = 457\n\tlktUSIndex        ID = 458\n\tlnIndex           ID = 459\n\tlnAOIndex         ID = 460\n\tlnCDIndex         ID = 461\n\tlnCFIndex         ID = 462\n\tlnCGIndex         ID = 463\n\tloIndex           ID = 464\n\tloLAIndex         ID = 465\n\tlrcIndex          ID = 466\n\tlrcIQIndex        ID = 467\n\tlrcIRIndex        ID = 468\n\tltIndex           ID = 469\n\tltLTIndex         ID = 470\n\tluIndex           ID = 471\n\tluCDIndex         ID = 472\n\tluoIndex          ID = 473\n\tluoKEIndex        ID = 474\n\tluyIndex          ID = 475\n\tluyKEIndex        ID = 476\n\tlvIndex           ID = 477\n\tlvLVIndex         ID = 478\n\tmasIndex          ID = 479\n\tmasKEIndex        ID = 480\n\tmasTZIndex        ID = 481\n\tmerIndex          ID = 482\n\tmerKEIndex        ID = 483\n\tmfeIndex          ID = 484\n\tmfeMUIndex        ID = 485\n\tmgIndex           ID = 486\n\tmgMGIndex         ID = 487\n\tmghIndex          ID = 488\n\tmghMZIndex        ID = 489\n\tmgoIndex          ID = 490\n\tmgoCMIndex        ID = 491\n\tmkIndex           ID = 492\n\tmkMKIndex         ID = 493\n\tmlIndex           ID = 494\n\tmlINIndex         ID = 495\n\tmnIndex           ID = 496\n\tmnMNIndex         ID = 497\n\tmoIndex           ID = 498\n\tmrIndex           ID = 499\n\tmrINIndex         ID = 500\n\tmsIndex           ID = 501\n\tmsBNIndex         ID = 502\n\tmsMYIndex         ID = 503\n\tmsSGIndex         ID = 504\n\tmtIndex           ID = 505\n\tmtMTIndex         ID = 506\n\tmuaIndex          ID = 507\n\tmuaCMIndex        ID = 508\n\tmyIndex           ID = 509\n\tmyMMIndex         ID = 510\n\tmznIndex          ID = 511\n\tmznIRIndex        ID = 512\n\tnahIndex          ID = 513\n\tnaqIndex          ID = 514\n\tnaqNAIndex        ID = 515\n\tnbIndex           ID = 516\n\tnbNOIndex         ID = 517\n\tnbSJIndex         ID = 518\n\tndIndex           ID = 519\n\tndZWIndex         ID = 520\n\tndsIndex          ID = 521\n\tndsDEIndex        ID = 522\n\tndsNLIndex        ID = 523\n\tneIndex           ID = 524\n\tneINIndex         ID = 525\n\tneNPIndex         ID = 526\n\tnlIndex           ID = 527\n\tnlAWIndex         ID = 528\n\tnlBEIndex         ID = 529\n\tnlBQIndex         ID = 530\n\tnlCWIndex         ID = 531\n\tnlNLIndex         ID = 532\n\tnlSRIndex         ID = 533\n\tnlSXIndex         ID = 534\n\tnmgIndex          ID = 535\n\tnmgCMIndex        ID = 536\n\tnnIndex           ID = 537\n\tnnNOIndex         ID = 538\n\tnnhIndex          ID = 539\n\tnnhCMIndex        ID = 540\n\tnoIndex           ID = 541\n\tnqoIndex          ID = 542\n\tnrIndex           ID = 543\n\tnsoIndex          ID = 544\n\tnusIndex          ID = 545\n\tnusSSIndex        ID = 546\n\tnyIndex           ID = 547\n\tnynIndex          ID = 548\n\tnynUGIndex        ID = 549\n\tomIndex           ID = 550\n\tomETIndex         ID = 551\n\tomKEIndex         ID = 552\n\torIndex           ID = 553\n\torINIndex         ID = 554\n\tosIndex           ID = 555\n\tosGEIndex         ID = 556\n\tosRUIndex         ID = 557\n\tpaIndex           ID = 558\n\tpaArabIndex       ID = 559\n\tpaArabPKIndex     ID = 560\n\tpaGuruIndex       ID = 561\n\tpaGuruINIndex     ID = 562\n\tpapIndex          ID = 563\n\tplIndex           ID = 564\n\tplPLIndex         ID = 565\n\tprgIndex          ID = 566\n\tprg001Index       ID = 567\n\tpsIndex           ID = 568\n\tpsAFIndex         ID = 569\n\tptIndex           ID = 570\n\tptAOIndex         ID = 571\n\tptBRIndex         ID = 572\n\tptCHIndex         ID = 573\n\tptCVIndex         ID = 574\n\tptGQIndex         ID = 575\n\tptGWIndex         ID = 576\n\tptLUIndex         ID = 577\n\tptMOIndex         ID = 578\n\tptMZIndex         ID = 579\n\tptPTIndex         ID = 580\n\tptSTIndex         ID = 581\n\tptTLIndex         ID = 582\n\tquIndex           ID = 583\n\tquBOIndex         ID = 584\n\tquECIndex         ID = 585\n\tquPEIndex         ID = 586\n\trmIndex           ID = 587\n\trmCHIndex         ID = 588\n\trnIndex           ID = 589\n\trnBIIndex         ID = 590\n\troIndex           ID = 591\n\troMDIndex         ID = 592\n\troROIndex         ID = 593\n\trofIndex          ID = 594\n\trofTZIndex        ID = 595\n\truIndex           ID = 596\n\truBYIndex         ID = 597\n\truKGIndex         ID = 598\n\truKZIndex         ID = 599\n\truMDIndex         ID = 600\n\truRUIndex         ID = 601\n\truUAIndex         ID = 602\n\trwIndex           ID = 603\n\trwRWIndex         ID = 604\n\trwkIndex          ID = 605\n\trwkTZIndex        ID = 606\n\tsahIndex          ID = 607\n\tsahRUIndex        ID = 608\n\tsaqIndex          ID = 609\n\tsaqKEIndex        ID = 610\n\tsbpIndex          ID = 611\n\tsbpTZIndex        ID = 612\n\tsdIndex           ID = 613\n\tsdPKIndex         ID = 614\n\tsdhIndex          ID = 615\n\tseIndex           ID = 616\n\tseFIIndex         ID = 617\n\tseNOIndex         ID = 618\n\tseSEIndex         ID = 619\n\tsehIndex          ID = 620\n\tsehMZIndex        ID = 621\n\tsesIndex          ID = 622\n\tsesMLIndex        ID = 623\n\tsgIndex           ID = 624\n\tsgCFIndex         ID = 625\n\tshIndex           ID = 626\n\tshiIndex          ID = 627\n\tshiLatnIndex      ID = 628\n\tshiLatnMAIndex    ID = 629\n\tshiTfngIndex      ID = 630\n\tshiTfngMAIndex    ID = 631\n\tsiIndex           ID = 632\n\tsiLKIndex         ID = 633\n\tskIndex           ID = 634\n\tskSKIndex         ID = 635\n\tslIndex           ID = 636\n\tslSIIndex         ID = 637\n\tsmaIndex          ID = 638\n\tsmiIndex          ID = 639\n\tsmjIndex          ID = 640\n\tsmnIndex          ID = 641\n\tsmnFIIndex        ID = 642\n\tsmsIndex          ID = 643\n\tsnIndex           ID = 644\n\tsnZWIndex         ID = 645\n\tsoIndex           ID = 646\n\tsoDJIndex         ID = 647\n\tsoETIndex         ID = 648\n\tsoKEIndex         ID = 649\n\tsoSOIndex         ID = 650\n\tsqIndex           ID = 651\n\tsqALIndex         ID = 652\n\tsqMKIndex         ID = 653\n\tsqXKIndex         ID = 654\n\tsrIndex           ID = 655\n\tsrCyrlIndex       ID = 656\n\tsrCyrlBAIndex     ID = 657\n\tsrCyrlMEIndex     ID = 658\n\tsrCyrlRSIndex     ID = 659\n\tsrCyrlXKIndex     ID = 660\n\tsrLatnIndex       ID = 661\n\tsrLatnBAIndex     ID = 662\n\tsrLatnMEIndex     ID = 663\n\tsrLatnRSIndex     ID = 664\n\tsrLatnXKIndex     ID = 665\n\tssIndex           ID = 666\n\tssyIndex          ID = 667\n\tstIndex           ID = 668\n\tsvIndex           ID = 669\n\tsvAXIndex         ID = 670\n\tsvFIIndex         ID = 671\n\tsvSEIndex         ID = 672\n\tswIndex           ID = 673\n\tswCDIndex         ID = 674\n\tswKEIndex         ID = 675\n\tswTZIndex         ID = 676\n\tswUGIndex         ID = 677\n\tsyrIndex          ID = 678\n\ttaIndex           ID = 679\n\ttaINIndex         ID = 680\n\ttaLKIndex         ID = 681\n\ttaMYIndex         ID = 682\n\ttaSGIndex         ID = 683\n\tteIndex           ID = 684\n\tteINIndex         ID = 685\n\tteoIndex          ID = 686\n\tteoKEIndex        ID = 687\n\tteoUGIndex        ID = 688\n\ttgIndex           ID = 689\n\ttgTJIndex         ID = 690\n\tthIndex           ID = 691\n\tthTHIndex         ID = 692\n\ttiIndex           ID = 693\n\ttiERIndex         ID = 694\n\ttiETIndex         ID = 695\n\ttigIndex          ID = 696\n\ttkIndex           ID = 697\n\ttkTMIndex         ID = 698\n\ttlIndex           ID = 699\n\ttnIndex           ID = 700\n\ttoIndex           ID = 701\n\ttoTOIndex         ID = 702\n\ttrIndex           ID = 703\n\ttrCYIndex         ID = 704\n\ttrTRIndex         ID = 705\n\ttsIndex           ID = 706\n\tttIndex           ID = 707\n\tttRUIndex         ID = 708\n\ttwqIndex          ID = 709\n\ttwqNEIndex        ID = 710\n\ttzmIndex          ID = 711\n\ttzmMAIndex        ID = 712\n\tugIndex           ID = 713\n\tugCNIndex         ID = 714\n\tukIndex           ID = 715\n\tukUAIndex         ID = 716\n\turIndex           ID = 717\n\turINIndex         ID = 718\n\turPKIndex         ID = 719\n\tuzIndex           ID = 720\n\tuzArabIndex       ID = 721\n\tuzArabAFIndex     ID = 722\n\tuzCyrlIndex       ID = 723\n\tuzCyrlUZIndex     ID = 724\n\tuzLatnIndex       ID = 725\n\tuzLatnUZIndex     ID = 726\n\tvaiIndex          ID = 727\n\tvaiLatnIndex      ID = 728\n\tvaiLatnLRIndex    ID = 729\n\tvaiVaiiIndex      ID = 730\n\tvaiVaiiLRIndex    ID = 731\n\tveIndex           ID = 732\n\tviIndex           ID = 733\n\tviVNIndex         ID = 734\n\tvoIndex           ID = 735\n\tvo001Index        ID = 736\n\tvunIndex          ID = 737\n\tvunTZIndex        ID = 738\n\twaIndex           ID = 739\n\twaeIndex          ID = 740\n\twaeCHIndex        ID = 741\n\twoIndex           ID = 742\n\twoSNIndex         ID = 743\n\txhIndex           ID = 744\n\txogIndex          ID = 745\n\txogUGIndex        ID = 746\n\tyavIndex          ID = 747\n\tyavCMIndex        ID = 748\n\tyiIndex           ID = 749\n\tyi001Index        ID = 750\n\tyoIndex           ID = 751\n\tyoBJIndex         ID = 752\n\tyoNGIndex         ID = 753\n\tyueIndex          ID = 754\n\tyueHansIndex      ID = 755\n\tyueHansCNIndex    ID = 756\n\tyueHantIndex      ID = 757\n\tyueHantHKIndex    ID = 758\n\tzghIndex          ID = 759\n\tzghMAIndex        ID = 760\n\tzhIndex           ID = 761\n\tzhHansIndex       ID = 762\n\tzhHansCNIndex     ID = 763\n\tzhHansHKIndex     ID = 764\n\tzhHansMOIndex     ID = 765\n\tzhHansSGIndex     ID = 766\n\tzhHantIndex       ID = 767\n\tzhHantHKIndex     ID = 768\n\tzhHantMOIndex     ID = 769\n\tzhHantTWIndex     ID = 770\n\tzuIndex           ID = 771\n\tzuZAIndex         ID = 772\n\tcaESvalenciaIndex ID = 773\n\tenUSuvaposixIndex ID = 774\n)\n\nvar coreTags = []language.CompactCoreInfo{ // 773 elements\n\t// Entry 0 - 1F\n\t0x00000000, 0x01600000, 0x016000d3, 0x01600162,\n\t0x01c00000, 0x01c00052, 0x02100000, 0x02100081,\n\t0x02700000, 0x02700070, 0x03a00000, 0x03a00001,\n\t0x03a00023, 0x03a00039, 0x03a00063, 0x03a00068,\n\t0x03a0006c, 0x03a0006d, 0x03a0006e, 0x03a00098,\n\t0x03a0009c, 0x03a000a2, 0x03a000a9, 0x03a000ad,\n\t0x03a000b1, 0x03a000ba, 0x03a000bb, 0x03a000ca,\n\t0x03a000e2, 0x03a000ee, 0x03a000f4, 0x03a00109,\n\t// Entry 20 - 3F\n\t0x03a0010c, 0x03a00116, 0x03a00118, 0x03a0011d,\n\t0x03a00121, 0x03a00129, 0x03a0015f, 0x04000000,\n\t0x04300000, 0x0430009a, 0x04400000, 0x04400130,\n\t0x04800000, 0x0480006f, 0x05800000, 0x05820000,\n\t0x05820032, 0x0585b000, 0x0585b032, 0x05e00000,\n\t0x05e00052, 0x07100000, 0x07100047, 0x07500000,\n\t0x07500163, 0x07900000, 0x07900130, 0x07e00000,\n\t0x07e00038, 0x08200000, 0x0a000000, 0x0a0000c4,\n\t// Entry 40 - 5F\n\t0x0a500000, 0x0a500035, 0x0a50009a, 0x0a900000,\n\t0x0a900053, 0x0a90009a, 0x0b200000, 0x0b200079,\n\t0x0b500000, 0x0b50009a, 0x0b700000, 0x0b720000,\n\t0x0b720033, 0x0b75b000, 0x0b75b033, 0x0d700000,\n\t0x0d700022, 0x0d70006f, 0x0d700079, 0x0d70009f,\n\t0x0db00000, 0x0db00035, 0x0db0009a, 0x0dc00000,\n\t0x0dc00107, 0x0df00000, 0x0df00132, 0x0e500000,\n\t0x0e500136, 0x0e900000, 0x0e90009c, 0x0e90009d,\n\t// Entry 60 - 7F\n\t0x0fa00000, 0x0fa0005f, 0x0fe00000, 0x0fe00107,\n\t0x10000000, 0x1000007c, 0x10100000, 0x10100064,\n\t0x10100083, 0x10800000, 0x108000a5, 0x10d00000,\n\t0x10d0002e, 0x10d00036, 0x10d0004e, 0x10d00061,\n\t0x10d0009f, 0x10d000b3, 0x10d000b8, 0x11700000,\n\t0x117000d5, 0x11f00000, 0x11f00061, 0x12400000,\n\t0x12400052, 0x12800000, 0x12b00000, 0x12b00115,\n\t0x12d00000, 0x12d00043, 0x12f00000, 0x12f000a5,\n\t// Entry 80 - 9F\n\t0x13000000, 0x13000081, 0x13000123, 0x13600000,\n\t0x1360005e, 0x13600088, 0x13900000, 0x13900001,\n\t0x1390001a, 0x13900025, 0x13900026, 0x1390002d,\n\t0x1390002e, 0x1390002f, 0x13900034, 0x13900036,\n\t0x1390003a, 0x1390003d, 0x13900042, 0x13900046,\n\t0x13900048, 0x13900049, 0x1390004a, 0x1390004e,\n\t0x13900050, 0x13900052, 0x1390005d, 0x1390005e,\n\t0x13900061, 0x13900062, 0x13900064, 0x13900065,\n\t// Entry A0 - BF\n\t0x1390006e, 0x13900073, 0x13900074, 0x13900075,\n\t0x13900076, 0x1390007c, 0x1390007d, 0x13900080,\n\t0x13900081, 0x13900082, 0x13900084, 0x1390008b,\n\t0x1390008d, 0x1390008e, 0x13900097, 0x13900098,\n\t0x13900099, 0x1390009a, 0x1390009b, 0x139000a0,\n\t0x139000a1, 0x139000a5, 0x139000a8, 0x139000aa,\n\t0x139000ae, 0x139000b2, 0x139000b5, 0x139000b6,\n\t0x139000c0, 0x139000c1, 0x139000c7, 0x139000c8,\n\t// Entry C0 - DF\n\t0x139000cb, 0x139000cc, 0x139000cd, 0x139000cf,\n\t0x139000d1, 0x139000d3, 0x139000d6, 0x139000d7,\n\t0x139000da, 0x139000de, 0x139000e0, 0x139000e1,\n\t0x139000e7, 0x139000e8, 0x139000e9, 0x139000ec,\n\t0x139000ed, 0x139000f1, 0x13900108, 0x1390010a,\n\t0x1390010b, 0x1390010c, 0x1390010d, 0x1390010e,\n\t0x1390010f, 0x13900110, 0x13900113, 0x13900118,\n\t0x1390011c, 0x1390011e, 0x13900120, 0x13900126,\n\t// Entry E0 - FF\n\t0x1390012a, 0x1390012d, 0x1390012e, 0x13900130,\n\t0x13900132, 0x13900134, 0x13900136, 0x1390013a,\n\t0x1390013d, 0x1390013e, 0x13900140, 0x13900143,\n\t0x13900162, 0x13900163, 0x13900165, 0x13c00000,\n\t0x13c00001, 0x13e00000, 0x13e0001f, 0x13e0002c,\n\t0x13e0003f, 0x13e00041, 0x13e00048, 0x13e00051,\n\t0x13e00054, 0x13e00057, 0x13e0005a, 0x13e00066,\n\t0x13e00069, 0x13e0006a, 0x13e0006f, 0x13e00087,\n\t// Entry 100 - 11F\n\t0x13e0008a, 0x13e00090, 0x13e00095, 0x13e000d0,\n\t0x13e000d9, 0x13e000e3, 0x13e000e5, 0x13e000e8,\n\t0x13e000ed, 0x13e000f2, 0x13e0011b, 0x13e00136,\n\t0x13e00137, 0x13e0013c, 0x14000000, 0x1400006b,\n\t0x14500000, 0x1450006f, 0x14600000, 0x14600052,\n\t0x14800000, 0x14800024, 0x1480009d, 0x14e00000,\n\t0x14e00052, 0x14e00085, 0x14e000ca, 0x14e00115,\n\t0x15100000, 0x15100073, 0x15300000, 0x153000e8,\n\t// Entry 120 - 13F\n\t0x15800000, 0x15800064, 0x15800077, 0x15e00000,\n\t0x15e00036, 0x15e00037, 0x15e0003a, 0x15e0003b,\n\t0x15e0003c, 0x15e00049, 0x15e0004b, 0x15e0004c,\n\t0x15e0004d, 0x15e0004e, 0x15e0004f, 0x15e00052,\n\t0x15e00063, 0x15e00068, 0x15e00079, 0x15e0007b,\n\t0x15e0007f, 0x15e00085, 0x15e00086, 0x15e00087,\n\t0x15e00092, 0x15e000a9, 0x15e000b8, 0x15e000bb,\n\t0x15e000bc, 0x15e000bf, 0x15e000c0, 0x15e000c4,\n\t// Entry 140 - 15F\n\t0x15e000c9, 0x15e000ca, 0x15e000cd, 0x15e000d4,\n\t0x15e000d5, 0x15e000e6, 0x15e000eb, 0x15e00103,\n\t0x15e00108, 0x15e0010b, 0x15e00115, 0x15e0011d,\n\t0x15e00121, 0x15e00123, 0x15e00129, 0x15e00140,\n\t0x15e00141, 0x15e00160, 0x16900000, 0x1690009f,\n\t0x16d00000, 0x16d000da, 0x16e00000, 0x16e00097,\n\t0x17e00000, 0x17e0007c, 0x19000000, 0x1900006f,\n\t0x1a300000, 0x1a30004e, 0x1a300079, 0x1a3000b3,\n\t// Entry 160 - 17F\n\t0x1a400000, 0x1a40009a, 0x1a900000, 0x1ab00000,\n\t0x1ab000a5, 0x1ac00000, 0x1ac00099, 0x1b400000,\n\t0x1b400081, 0x1b4000d5, 0x1b4000d7, 0x1b800000,\n\t0x1b800136, 0x1bc00000, 0x1bc00098, 0x1be00000,\n\t0x1be0009a, 0x1d100000, 0x1d100033, 0x1d100091,\n\t0x1d200000, 0x1d200061, 0x1d500000, 0x1d500093,\n\t0x1d700000, 0x1d700028, 0x1e100000, 0x1e100096,\n\t0x1e700000, 0x1e7000d7, 0x1ea00000, 0x1ea00053,\n\t// Entry 180 - 19F\n\t0x1f300000, 0x1f500000, 0x1f800000, 0x1f80009e,\n\t0x1f900000, 0x1f90004e, 0x1f90009f, 0x1f900114,\n\t0x1f900139, 0x1fa00000, 0x1fb00000, 0x20000000,\n\t0x200000a3, 0x20300000, 0x20700000, 0x20700052,\n\t0x20800000, 0x20a00000, 0x20a00130, 0x20e00000,\n\t0x20f00000, 0x21000000, 0x2100007e, 0x21200000,\n\t0x21200068, 0x21600000, 0x21700000, 0x217000a5,\n\t0x21f00000, 0x22300000, 0x22300130, 0x22700000,\n\t// Entry 1A0 - 1BF\n\t0x2270005b, 0x23400000, 0x234000c4, 0x23900000,\n\t0x239000a5, 0x24200000, 0x242000af, 0x24400000,\n\t0x24400052, 0x24500000, 0x24500083, 0x24600000,\n\t0x246000a5, 0x24a00000, 0x24a000a7, 0x25100000,\n\t0x2510009a, 0x25400000, 0x254000ab, 0x254000ac,\n\t0x25600000, 0x2560009a, 0x26a00000, 0x26a0009a,\n\t0x26b00000, 0x26b00130, 0x26d00000, 0x26d00052,\n\t0x26e00000, 0x26e00061, 0x27400000, 0x28100000,\n\t// Entry 1C0 - 1DF\n\t0x2810007c, 0x28a00000, 0x28a000a6, 0x29100000,\n\t0x29100130, 0x29500000, 0x295000b8, 0x2a300000,\n\t0x2a300132, 0x2af00000, 0x2af00136, 0x2b500000,\n\t0x2b50002a, 0x2b50004b, 0x2b50004c, 0x2b50004d,\n\t0x2b800000, 0x2b8000b0, 0x2bf00000, 0x2bf0009c,\n\t0x2bf0009d, 0x2c000000, 0x2c0000b7, 0x2c200000,\n\t0x2c20004b, 0x2c400000, 0x2c4000a5, 0x2c500000,\n\t0x2c5000a5, 0x2c700000, 0x2c7000b9, 0x2d100000,\n\t// Entry 1E0 - 1FF\n\t0x2d1000a5, 0x2d100130, 0x2e900000, 0x2e9000a5,\n\t0x2ed00000, 0x2ed000cd, 0x2f100000, 0x2f1000c0,\n\t0x2f200000, 0x2f2000d2, 0x2f400000, 0x2f400052,\n\t0x2ff00000, 0x2ff000c3, 0x30400000, 0x3040009a,\n\t0x30b00000, 0x30b000c6, 0x31000000, 0x31b00000,\n\t0x31b0009a, 0x31f00000, 0x31f0003e, 0x31f000d1,\n\t0x31f0010e, 0x32000000, 0x320000cc, 0x32500000,\n\t0x32500052, 0x33100000, 0x331000c5, 0x33a00000,\n\t// Entry 200 - 21F\n\t0x33a0009d, 0x34100000, 0x34500000, 0x345000d3,\n\t0x34700000, 0x347000db, 0x34700111, 0x34e00000,\n\t0x34e00165, 0x35000000, 0x35000061, 0x350000da,\n\t0x35100000, 0x3510009a, 0x351000dc, 0x36700000,\n\t0x36700030, 0x36700036, 0x36700040, 0x3670005c,\n\t0x367000da, 0x36700117, 0x3670011c, 0x36800000,\n\t0x36800052, 0x36a00000, 0x36a000db, 0x36c00000,\n\t0x36c00052, 0x36f00000, 0x37500000, 0x37600000,\n\t// Entry 220 - 23F\n\t0x37a00000, 0x38000000, 0x38000118, 0x38700000,\n\t0x38900000, 0x38900132, 0x39000000, 0x39000070,\n\t0x390000a5, 0x39500000, 0x3950009a, 0x39800000,\n\t0x3980007e, 0x39800107, 0x39d00000, 0x39d05000,\n\t0x39d050e9, 0x39d36000, 0x39d3609a, 0x3a100000,\n\t0x3b300000, 0x3b3000ea, 0x3bd00000, 0x3bd00001,\n\t0x3be00000, 0x3be00024, 0x3c000000, 0x3c00002a,\n\t0x3c000041, 0x3c00004e, 0x3c00005b, 0x3c000087,\n\t// Entry 240 - 25F\n\t0x3c00008c, 0x3c0000b8, 0x3c0000c7, 0x3c0000d2,\n\t0x3c0000ef, 0x3c000119, 0x3c000127, 0x3c400000,\n\t0x3c40003f, 0x3c40006a, 0x3c4000e5, 0x3d400000,\n\t0x3d40004e, 0x3d900000, 0x3d90003a, 0x3dc00000,\n\t0x3dc000bd, 0x3dc00105, 0x3de00000, 0x3de00130,\n\t0x3e200000, 0x3e200047, 0x3e2000a6, 0x3e2000af,\n\t0x3e2000bd, 0x3e200107, 0x3e200131, 0x3e500000,\n\t0x3e500108, 0x3e600000, 0x3e600130, 0x3eb00000,\n\t// Entry 260 - 27F\n\t0x3eb00107, 0x3ec00000, 0x3ec000a5, 0x3f300000,\n\t0x3f300130, 0x3fa00000, 0x3fa000e9, 0x3fc00000,\n\t0x3fd00000, 0x3fd00073, 0x3fd000db, 0x3fd0010d,\n\t0x3ff00000, 0x3ff000d2, 0x40100000, 0x401000c4,\n\t0x40200000, 0x4020004c, 0x40700000, 0x40800000,\n\t0x4085b000, 0x4085b0bb, 0x408eb000, 0x408eb0bb,\n\t0x40c00000, 0x40c000b4, 0x41200000, 0x41200112,\n\t0x41600000, 0x41600110, 0x41c00000, 0x41d00000,\n\t// Entry 280 - 29F\n\t0x41e00000, 0x41f00000, 0x41f00073, 0x42200000,\n\t0x42300000, 0x42300165, 0x42900000, 0x42900063,\n\t0x42900070, 0x429000a5, 0x42900116, 0x43100000,\n\t0x43100027, 0x431000c3, 0x4310014e, 0x43200000,\n\t0x43220000, 0x43220033, 0x432200be, 0x43220106,\n\t0x4322014e, 0x4325b000, 0x4325b033, 0x4325b0be,\n\t0x4325b106, 0x4325b14e, 0x43700000, 0x43a00000,\n\t0x43b00000, 0x44400000, 0x44400031, 0x44400073,\n\t// Entry 2A0 - 2BF\n\t0x4440010d, 0x44500000, 0x4450004b, 0x445000a5,\n\t0x44500130, 0x44500132, 0x44e00000, 0x45000000,\n\t0x4500009a, 0x450000b4, 0x450000d1, 0x4500010e,\n\t0x46100000, 0x4610009a, 0x46400000, 0x464000a5,\n\t0x46400132, 0x46700000, 0x46700125, 0x46b00000,\n\t0x46b00124, 0x46f00000, 0x46f0006e, 0x46f00070,\n\t0x47100000, 0x47600000, 0x47600128, 0x47a00000,\n\t0x48000000, 0x48200000, 0x4820012a, 0x48a00000,\n\t// Entry 2C0 - 2DF\n\t0x48a0005e, 0x48a0012c, 0x48e00000, 0x49400000,\n\t0x49400107, 0x4a400000, 0x4a4000d5, 0x4a900000,\n\t0x4a9000bb, 0x4ac00000, 0x4ac00053, 0x4ae00000,\n\t0x4ae00131, 0x4b400000, 0x4b40009a, 0x4b4000e9,\n\t0x4bc00000, 0x4bc05000, 0x4bc05024, 0x4bc20000,\n\t0x4bc20138, 0x4bc5b000, 0x4bc5b138, 0x4be00000,\n\t0x4be5b000, 0x4be5b0b5, 0x4bef4000, 0x4bef40b5,\n\t0x4c000000, 0x4c300000, 0x4c30013f, 0x4c900000,\n\t// Entry 2E0 - 2FF\n\t0x4c900001, 0x4cc00000, 0x4cc00130, 0x4ce00000,\n\t0x4cf00000, 0x4cf0004e, 0x4e500000, 0x4e500115,\n\t0x4f200000, 0x4fb00000, 0x4fb00132, 0x50900000,\n\t0x50900052, 0x51200000, 0x51200001, 0x51800000,\n\t0x5180003b, 0x518000d7, 0x51f00000, 0x51f3b000,\n\t0x51f3b053, 0x51f3c000, 0x51f3c08e, 0x52800000,\n\t0x528000bb, 0x52900000, 0x5293b000, 0x5293b053,\n\t0x5293b08e, 0x5293b0c7, 0x5293b10e, 0x5293c000,\n\t// Entry 300 - 31F\n\t0x5293c08e, 0x5293c0c7, 0x5293c12f, 0x52f00000,\n\t0x52f00162,\n} // Size: 3116 bytes\n\nconst specialTagsStr string = \"ca-ES-valencia en-US-u-va-posix\"\n\n// Total table size 3147 bytes (3KiB); checksum: 5A8FFFA5\n"
  },
  {
    "path": "tests/vendor/golang.org/x/text/internal/language/compact/tags.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage compact\n\nvar (\n\tund = Tag{}\n\n\tUnd Tag = Tag{}\n\n\tAfrikaans            Tag = Tag{language: afIndex, locale: afIndex}\n\tAmharic              Tag = Tag{language: amIndex, locale: amIndex}\n\tArabic               Tag = Tag{language: arIndex, locale: arIndex}\n\tModernStandardArabic Tag = Tag{language: ar001Index, locale: ar001Index}\n\tAzerbaijani          Tag = Tag{language: azIndex, locale: azIndex}\n\tBulgarian            Tag = Tag{language: bgIndex, locale: bgIndex}\n\tBengali              Tag = Tag{language: bnIndex, locale: bnIndex}\n\tCatalan              Tag = Tag{language: caIndex, locale: caIndex}\n\tCzech                Tag = Tag{language: csIndex, locale: csIndex}\n\tDanish               Tag = Tag{language: daIndex, locale: daIndex}\n\tGerman               Tag = Tag{language: deIndex, locale: deIndex}\n\tGreek                Tag = Tag{language: elIndex, locale: elIndex}\n\tEnglish              Tag = Tag{language: enIndex, locale: enIndex}\n\tAmericanEnglish      Tag = Tag{language: enUSIndex, locale: enUSIndex}\n\tBritishEnglish       Tag = Tag{language: enGBIndex, locale: enGBIndex}\n\tSpanish              Tag = Tag{language: esIndex, locale: esIndex}\n\tEuropeanSpanish      Tag = Tag{language: esESIndex, locale: esESIndex}\n\tLatinAmericanSpanish Tag = Tag{language: es419Index, locale: es419Index}\n\tEstonian             Tag = Tag{language: etIndex, locale: etIndex}\n\tPersian              Tag = Tag{language: faIndex, locale: faIndex}\n\tFinnish              Tag = Tag{language: fiIndex, locale: fiIndex}\n\tFilipino             Tag = Tag{language: filIndex, locale: filIndex}\n\tFrench               Tag = Tag{language: frIndex, locale: frIndex}\n\tCanadianFrench       Tag = Tag{language: frCAIndex, locale: frCAIndex}\n\tGujarati             Tag = Tag{language: guIndex, locale: guIndex}\n\tHebrew               Tag = Tag{language: heIndex, locale: heIndex}\n\tHindi                Tag = Tag{language: hiIndex, locale: hiIndex}\n\tCroatian             Tag = Tag{language: hrIndex, locale: hrIndex}\n\tHungarian            Tag = Tag{language: huIndex, locale: huIndex}\n\tArmenian             Tag = Tag{language: hyIndex, locale: hyIndex}\n\tIndonesian           Tag = Tag{language: idIndex, locale: idIndex}\n\tIcelandic            Tag = Tag{language: isIndex, locale: isIndex}\n\tItalian              Tag = Tag{language: itIndex, locale: itIndex}\n\tJapanese             Tag = Tag{language: jaIndex, locale: jaIndex}\n\tGeorgian             Tag = Tag{language: kaIndex, locale: kaIndex}\n\tKazakh               Tag = Tag{language: kkIndex, locale: kkIndex}\n\tKhmer                Tag = Tag{language: kmIndex, locale: kmIndex}\n\tKannada              Tag = Tag{language: knIndex, locale: knIndex}\n\tKorean               Tag = Tag{language: koIndex, locale: koIndex}\n\tKirghiz              Tag = Tag{language: kyIndex, locale: kyIndex}\n\tLao                  Tag = Tag{language: loIndex, locale: loIndex}\n\tLithuanian           Tag = Tag{language: ltIndex, locale: ltIndex}\n\tLatvian              Tag = Tag{language: lvIndex, locale: lvIndex}\n\tMacedonian           Tag = Tag{language: mkIndex, locale: mkIndex}\n\tMalayalam            Tag = Tag{language: mlIndex, locale: mlIndex}\n\tMongolian            Tag = Tag{language: mnIndex, locale: mnIndex}\n\tMarathi              Tag = Tag{language: mrIndex, locale: mrIndex}\n\tMalay                Tag = Tag{language: msIndex, locale: msIndex}\n\tBurmese              Tag = Tag{language: myIndex, locale: myIndex}\n\tNepali               Tag = Tag{language: neIndex, locale: neIndex}\n\tDutch                Tag = Tag{language: nlIndex, locale: nlIndex}\n\tNorwegian            Tag = Tag{language: noIndex, locale: noIndex}\n\tPunjabi              Tag = Tag{language: paIndex, locale: paIndex}\n\tPolish               Tag = Tag{language: plIndex, locale: plIndex}\n\tPortuguese           Tag = Tag{language: ptIndex, locale: ptIndex}\n\tBrazilianPortuguese  Tag = Tag{language: ptBRIndex, locale: ptBRIndex}\n\tEuropeanPortuguese   Tag = Tag{language: ptPTIndex, locale: ptPTIndex}\n\tRomanian             Tag = Tag{language: roIndex, locale: roIndex}\n\tRussian              Tag = Tag{language: ruIndex, locale: ruIndex}\n\tSinhala              Tag = Tag{language: siIndex, locale: siIndex}\n\tSlovak               Tag = Tag{language: skIndex, locale: skIndex}\n\tSlovenian            Tag = Tag{language: slIndex, locale: slIndex}\n\tAlbanian             Tag = Tag{language: sqIndex, locale: sqIndex}\n\tSerbian              Tag = Tag{language: srIndex, locale: srIndex}\n\tSerbianLatin         Tag = Tag{language: srLatnIndex, locale: srLatnIndex}\n\tSwedish              Tag = Tag{language: svIndex, locale: svIndex}\n\tSwahili              Tag = Tag{language: swIndex, locale: swIndex}\n\tTamil                Tag = Tag{language: taIndex, locale: taIndex}\n\tTelugu               Tag = Tag{language: teIndex, locale: teIndex}\n\tThai                 Tag = Tag{language: thIndex, locale: thIndex}\n\tTurkish              Tag = Tag{language: trIndex, locale: trIndex}\n\tUkrainian            Tag = Tag{language: ukIndex, locale: ukIndex}\n\tUrdu                 Tag = Tag{language: urIndex, locale: urIndex}\n\tUzbek                Tag = Tag{language: uzIndex, locale: uzIndex}\n\tVietnamese           Tag = Tag{language: viIndex, locale: viIndex}\n\tChinese              Tag = Tag{language: zhIndex, locale: zhIndex}\n\tSimplifiedChinese    Tag = Tag{language: zhHansIndex, locale: zhHansIndex}\n\tTraditionalChinese   Tag = Tag{language: zhHantIndex, locale: zhHantIndex}\n\tZulu                 Tag = Tag{language: zuIndex, locale: zuIndex}\n)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/text/internal/language/compact.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage language\n\n// CompactCoreInfo is a compact integer with the three core tags encoded.\ntype CompactCoreInfo uint32\n\n// GetCompactCore generates a uint32 value that is guaranteed to be unique for\n// different language, region, and script values.\nfunc GetCompactCore(t Tag) (cci CompactCoreInfo, ok bool) {\n\tif t.LangID > langNoIndexOffset {\n\t\treturn 0, false\n\t}\n\tcci |= CompactCoreInfo(t.LangID) << (8 + 12)\n\tcci |= CompactCoreInfo(t.ScriptID) << 12\n\tcci |= CompactCoreInfo(t.RegionID)\n\treturn cci, true\n}\n\n// Tag generates a tag from c.\nfunc (c CompactCoreInfo) Tag() Tag {\n\treturn Tag{\n\t\tLangID:   Language(c >> 20),\n\t\tRegionID: Region(c & 0x3ff),\n\t\tScriptID: Script(c>>12) & 0xff,\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/text/internal/language/compose.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage language\n\nimport (\n\t\"sort\"\n\t\"strings\"\n)\n\n// A Builder allows constructing a Tag from individual components.\n// Its main user is Compose in the top-level language package.\ntype Builder struct {\n\tTag Tag\n\n\tprivate    string // the x extension\n\tvariants   []string\n\textensions []string\n}\n\n// Make returns a new Tag from the current settings.\nfunc (b *Builder) Make() Tag {\n\tt := b.Tag\n\n\tif len(b.extensions) > 0 || len(b.variants) > 0 {\n\t\tsort.Sort(sortVariants(b.variants))\n\t\tsort.Strings(b.extensions)\n\n\t\tif b.private != \"\" {\n\t\t\tb.extensions = append(b.extensions, b.private)\n\t\t}\n\t\tn := maxCoreSize + tokenLen(b.variants...) + tokenLen(b.extensions...)\n\t\tbuf := make([]byte, n)\n\t\tp := t.genCoreBytes(buf)\n\t\tt.pVariant = byte(p)\n\t\tp += appendTokens(buf[p:], b.variants...)\n\t\tt.pExt = uint16(p)\n\t\tp += appendTokens(buf[p:], b.extensions...)\n\t\tt.str = string(buf[:p])\n\t\t// We may not always need to remake the string, but when or when not\n\t\t// to do so is rather tricky.\n\t\tscan := makeScanner(buf[:p])\n\t\tt, _ = parse(&scan, \"\")\n\t\treturn t\n\n\t} else if b.private != \"\" {\n\t\tt.str = b.private\n\t\tt.RemakeString()\n\t}\n\treturn t\n}\n\n// SetTag copies all the settings from a given Tag. Any previously set values\n// are discarded.\nfunc (b *Builder) SetTag(t Tag) {\n\tb.Tag.LangID = t.LangID\n\tb.Tag.RegionID = t.RegionID\n\tb.Tag.ScriptID = t.ScriptID\n\t// TODO: optimize\n\tb.variants = b.variants[:0]\n\tif variants := t.Variants(); variants != \"\" {\n\t\tfor _, vr := range strings.Split(variants[1:], \"-\") {\n\t\t\tb.variants = append(b.variants, vr)\n\t\t}\n\t}\n\tb.extensions, b.private = b.extensions[:0], \"\"\n\tfor _, e := range t.Extensions() {\n\t\tb.AddExt(e)\n\t}\n}\n\n// AddExt adds extension e to the tag. e must be a valid extension as returned\n// by Tag.Extension. If the extension already exists, it will be discarded,\n// except for a -u extension, where non-existing key-type pairs will added.\nfunc (b *Builder) AddExt(e string) {\n\tif e[0] == 'x' {\n\t\tif b.private == \"\" {\n\t\t\tb.private = e\n\t\t}\n\t\treturn\n\t}\n\tfor i, s := range b.extensions {\n\t\tif s[0] == e[0] {\n\t\t\tif e[0] == 'u' {\n\t\t\t\tb.extensions[i] += e[1:]\n\t\t\t}\n\t\t\treturn\n\t\t}\n\t}\n\tb.extensions = append(b.extensions, e)\n}\n\n// SetExt sets the extension e to the tag. e must be a valid extension as\n// returned by Tag.Extension. If the extension already exists, it will be\n// overwritten, except for a -u extension, where the individual key-type pairs\n// will be set.\nfunc (b *Builder) SetExt(e string) {\n\tif e[0] == 'x' {\n\t\tb.private = e\n\t\treturn\n\t}\n\tfor i, s := range b.extensions {\n\t\tif s[0] == e[0] {\n\t\t\tif e[0] == 'u' {\n\t\t\t\tb.extensions[i] = e + s[1:]\n\t\t\t} else {\n\t\t\t\tb.extensions[i] = e\n\t\t\t}\n\t\t\treturn\n\t\t}\n\t}\n\tb.extensions = append(b.extensions, e)\n}\n\n// AddVariant adds any number of variants.\nfunc (b *Builder) AddVariant(v ...string) {\n\tfor _, v := range v {\n\t\tif v != \"\" {\n\t\t\tb.variants = append(b.variants, v)\n\t\t}\n\t}\n}\n\n// ClearVariants removes any variants previously added, including those\n// copied from a Tag in SetTag.\nfunc (b *Builder) ClearVariants() {\n\tb.variants = b.variants[:0]\n}\n\n// ClearExtensions removes any extensions previously added, including those\n// copied from a Tag in SetTag.\nfunc (b *Builder) ClearExtensions() {\n\tb.private = \"\"\n\tb.extensions = b.extensions[:0]\n}\n\nfunc tokenLen(token ...string) (n int) {\n\tfor _, t := range token {\n\t\tn += len(t) + 1\n\t}\n\treturn\n}\n\nfunc appendTokens(b []byte, token ...string) int {\n\tp := 0\n\tfor _, t := range token {\n\t\tb[p] = '-'\n\t\tcopy(b[p+1:], t)\n\t\tp += 1 + len(t)\n\t}\n\treturn p\n}\n\ntype sortVariants []string\n\nfunc (s sortVariants) Len() int {\n\treturn len(s)\n}\n\nfunc (s sortVariants) Swap(i, j int) {\n\ts[j], s[i] = s[i], s[j]\n}\n\nfunc (s sortVariants) Less(i, j int) bool {\n\treturn variantIndex[s[i]] < variantIndex[s[j]]\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/text/internal/language/coverage.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage language\n\n// BaseLanguages returns the list of all supported base languages. It generates\n// the list by traversing the internal structures.\nfunc BaseLanguages() []Language {\n\tbase := make([]Language, 0, NumLanguages)\n\tfor i := 0; i < langNoIndexOffset; i++ {\n\t\t// We included \"und\" already for the value 0.\n\t\tif i != nonCanonicalUnd {\n\t\t\tbase = append(base, Language(i))\n\t\t}\n\t}\n\ti := langNoIndexOffset\n\tfor _, v := range langNoIndex {\n\t\tfor k := 0; k < 8; k++ {\n\t\t\tif v&1 == 1 {\n\t\t\t\tbase = append(base, Language(i))\n\t\t\t}\n\t\t\tv >>= 1\n\t\t\ti++\n\t\t}\n\t}\n\treturn base\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/text/internal/language/language.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:generate go run gen.go gen_common.go -output tables.go\n\npackage language // import \"golang.org/x/text/internal/language\"\n\n// TODO: Remove above NOTE after:\n// - verifying that tables are dropped correctly (most notably matcher tables).\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"strings\"\n)\n\nconst (\n\t// maxCoreSize is the maximum size of a BCP 47 tag without variants and\n\t// extensions. Equals max lang (3) + script (4) + max reg (3) + 2 dashes.\n\tmaxCoreSize = 12\n\n\t// max99thPercentileSize is a somewhat arbitrary buffer size that presumably\n\t// is large enough to hold at least 99% of the BCP 47 tags.\n\tmax99thPercentileSize = 32\n\n\t// maxSimpleUExtensionSize is the maximum size of a -u extension with one\n\t// key-type pair. Equals len(\"-u-\") + key (2) + dash + max value (8).\n\tmaxSimpleUExtensionSize = 14\n)\n\n// Tag represents a BCP 47 language tag. It is used to specify an instance of a\n// specific language or locale. All language tag values are guaranteed to be\n// well-formed. The zero value of Tag is Und.\ntype Tag struct {\n\t// TODO: the following fields have the form TagTypeID. This name is chosen\n\t// to allow refactoring the public package without conflicting with its\n\t// Base, Script, and Region methods. Once the transition is fully completed\n\t// the ID can be stripped from the name.\n\n\tLangID   Language\n\tRegionID Region\n\t// TODO: we will soon run out of positions for ScriptID. Idea: instead of\n\t// storing lang, region, and ScriptID codes, store only the compact index and\n\t// have a lookup table from this code to its expansion. This greatly speeds\n\t// up table lookup, speed up common variant cases.\n\t// This will also immediately free up 3 extra bytes. Also, the pVariant\n\t// field can now be moved to the lookup table, as the compact index uniquely\n\t// determines the offset of a possible variant.\n\tScriptID Script\n\tpVariant byte   // offset in str, includes preceding '-'\n\tpExt     uint16 // offset of first extension, includes preceding '-'\n\n\t// str is the string representation of the Tag. It will only be used if the\n\t// tag has variants or extensions.\n\tstr string\n}\n\n// Make is a convenience wrapper for Parse that omits the error.\n// In case of an error, a sensible default is returned.\nfunc Make(s string) Tag {\n\tt, _ := Parse(s)\n\treturn t\n}\n\n// Raw returns the raw base language, script and region, without making an\n// attempt to infer their values.\n// TODO: consider removing\nfunc (t Tag) Raw() (b Language, s Script, r Region) {\n\treturn t.LangID, t.ScriptID, t.RegionID\n}\n\n// equalTags compares language, script and region subtags only.\nfunc (t Tag) equalTags(a Tag) bool {\n\treturn t.LangID == a.LangID && t.ScriptID == a.ScriptID && t.RegionID == a.RegionID\n}\n\n// IsRoot returns true if t is equal to language \"und\".\nfunc (t Tag) IsRoot() bool {\n\tif int(t.pVariant) < len(t.str) {\n\t\treturn false\n\t}\n\treturn t.equalTags(Und)\n}\n\n// IsPrivateUse reports whether the Tag consists solely of an IsPrivateUse use\n// tag.\nfunc (t Tag) IsPrivateUse() bool {\n\treturn t.str != \"\" && t.pVariant == 0\n}\n\n// RemakeString is used to update t.str in case lang, script or region changed.\n// It is assumed that pExt and pVariant still point to the start of the\n// respective parts.\nfunc (t *Tag) RemakeString() {\n\tif t.str == \"\" {\n\t\treturn\n\t}\n\textra := t.str[t.pVariant:]\n\tif t.pVariant > 0 {\n\t\textra = extra[1:]\n\t}\n\tif t.equalTags(Und) && strings.HasPrefix(extra, \"x-\") {\n\t\tt.str = extra\n\t\tt.pVariant = 0\n\t\tt.pExt = 0\n\t\treturn\n\t}\n\tvar buf [max99thPercentileSize]byte // avoid extra memory allocation in most cases.\n\tb := buf[:t.genCoreBytes(buf[:])]\n\tif extra != \"\" {\n\t\tdiff := len(b) - int(t.pVariant)\n\t\tb = append(b, '-')\n\t\tb = append(b, extra...)\n\t\tt.pVariant = uint8(int(t.pVariant) + diff)\n\t\tt.pExt = uint16(int(t.pExt) + diff)\n\t} else {\n\t\tt.pVariant = uint8(len(b))\n\t\tt.pExt = uint16(len(b))\n\t}\n\tt.str = string(b)\n}\n\n// genCoreBytes writes a string for the base languages, script and region tags\n// to the given buffer and returns the number of bytes written. It will never\n// write more than maxCoreSize bytes.\nfunc (t *Tag) genCoreBytes(buf []byte) int {\n\tn := t.LangID.StringToBuf(buf[:])\n\tif t.ScriptID != 0 {\n\t\tn += copy(buf[n:], \"-\")\n\t\tn += copy(buf[n:], t.ScriptID.String())\n\t}\n\tif t.RegionID != 0 {\n\t\tn += copy(buf[n:], \"-\")\n\t\tn += copy(buf[n:], t.RegionID.String())\n\t}\n\treturn n\n}\n\n// String returns the canonical string representation of the language tag.\nfunc (t Tag) String() string {\n\tif t.str != \"\" {\n\t\treturn t.str\n\t}\n\tif t.ScriptID == 0 && t.RegionID == 0 {\n\t\treturn t.LangID.String()\n\t}\n\tbuf := [maxCoreSize]byte{}\n\treturn string(buf[:t.genCoreBytes(buf[:])])\n}\n\n// MarshalText implements encoding.TextMarshaler.\nfunc (t Tag) MarshalText() (text []byte, err error) {\n\tif t.str != \"\" {\n\t\ttext = append(text, t.str...)\n\t} else if t.ScriptID == 0 && t.RegionID == 0 {\n\t\ttext = append(text, t.LangID.String()...)\n\t} else {\n\t\tbuf := [maxCoreSize]byte{}\n\t\ttext = buf[:t.genCoreBytes(buf[:])]\n\t}\n\treturn text, nil\n}\n\n// UnmarshalText implements encoding.TextUnmarshaler.\nfunc (t *Tag) UnmarshalText(text []byte) error {\n\ttag, err := Parse(string(text))\n\t*t = tag\n\treturn err\n}\n\n// Variants returns the part of the tag holding all variants or the empty string\n// if there are no variants defined.\nfunc (t Tag) Variants() string {\n\tif t.pVariant == 0 {\n\t\treturn \"\"\n\t}\n\treturn t.str[t.pVariant:t.pExt]\n}\n\n// VariantOrPrivateUseTags returns variants or private use tags.\nfunc (t Tag) VariantOrPrivateUseTags() string {\n\tif t.pExt > 0 {\n\t\treturn t.str[t.pVariant:t.pExt]\n\t}\n\treturn t.str[t.pVariant:]\n}\n\n// HasString reports whether this tag defines more than just the raw\n// components.\nfunc (t Tag) HasString() bool {\n\treturn t.str != \"\"\n}\n\n// Parent returns the CLDR parent of t. In CLDR, missing fields in data for a\n// specific language are substituted with fields from the parent language.\n// The parent for a language may change for newer versions of CLDR.\nfunc (t Tag) Parent() Tag {\n\tif t.str != \"\" {\n\t\t// Strip the variants and extensions.\n\t\tb, s, r := t.Raw()\n\t\tt = Tag{LangID: b, ScriptID: s, RegionID: r}\n\t\tif t.RegionID == 0 && t.ScriptID != 0 && t.LangID != 0 {\n\t\t\tbase, _ := addTags(Tag{LangID: t.LangID})\n\t\t\tif base.ScriptID == t.ScriptID {\n\t\t\t\treturn Tag{LangID: t.LangID}\n\t\t\t}\n\t\t}\n\t\treturn t\n\t}\n\tif t.LangID != 0 {\n\t\tif t.RegionID != 0 {\n\t\t\tmaxScript := t.ScriptID\n\t\t\tif maxScript == 0 {\n\t\t\t\tmax, _ := addTags(t)\n\t\t\t\tmaxScript = max.ScriptID\n\t\t\t}\n\n\t\t\tfor i := range parents {\n\t\t\t\tif Language(parents[i].lang) == t.LangID && Script(parents[i].maxScript) == maxScript {\n\t\t\t\t\tfor _, r := range parents[i].fromRegion {\n\t\t\t\t\t\tif Region(r) == t.RegionID {\n\t\t\t\t\t\t\treturn Tag{\n\t\t\t\t\t\t\t\tLangID:   t.LangID,\n\t\t\t\t\t\t\t\tScriptID: Script(parents[i].script),\n\t\t\t\t\t\t\t\tRegionID: Region(parents[i].toRegion),\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Strip the script if it is the default one.\n\t\t\tbase, _ := addTags(Tag{LangID: t.LangID})\n\t\t\tif base.ScriptID != maxScript {\n\t\t\t\treturn Tag{LangID: t.LangID, ScriptID: maxScript}\n\t\t\t}\n\t\t\treturn Tag{LangID: t.LangID}\n\t\t} else if t.ScriptID != 0 {\n\t\t\t// The parent for an base-script pair with a non-default script is\n\t\t\t// \"und\" instead of the base language.\n\t\t\tbase, _ := addTags(Tag{LangID: t.LangID})\n\t\t\tif base.ScriptID != t.ScriptID {\n\t\t\t\treturn Und\n\t\t\t}\n\t\t\treturn Tag{LangID: t.LangID}\n\t\t}\n\t}\n\treturn Und\n}\n\n// ParseExtension parses s as an extension and returns it on success.\nfunc ParseExtension(s string) (ext string, err error) {\n\tdefer func() {\n\t\tif recover() != nil {\n\t\t\text = \"\"\n\t\t\terr = ErrSyntax\n\t\t}\n\t}()\n\n\tscan := makeScannerString(s)\n\tvar end int\n\tif n := len(scan.token); n != 1 {\n\t\treturn \"\", ErrSyntax\n\t}\n\tscan.toLower(0, len(scan.b))\n\tend = parseExtension(&scan)\n\tif end != len(s) {\n\t\treturn \"\", ErrSyntax\n\t}\n\treturn string(scan.b), nil\n}\n\n// HasVariants reports whether t has variants.\nfunc (t Tag) HasVariants() bool {\n\treturn uint16(t.pVariant) < t.pExt\n}\n\n// HasExtensions reports whether t has extensions.\nfunc (t Tag) HasExtensions() bool {\n\treturn int(t.pExt) < len(t.str)\n}\n\n// Extension returns the extension of type x for tag t. It will return\n// false for ok if t does not have the requested extension. The returned\n// extension will be invalid in this case.\nfunc (t Tag) Extension(x byte) (ext string, ok bool) {\n\tfor i := int(t.pExt); i < len(t.str)-1; {\n\t\tvar ext string\n\t\ti, ext = getExtension(t.str, i)\n\t\tif ext[0] == x {\n\t\t\treturn ext, true\n\t\t}\n\t}\n\treturn \"\", false\n}\n\n// Extensions returns all extensions of t.\nfunc (t Tag) Extensions() []string {\n\te := []string{}\n\tfor i := int(t.pExt); i < len(t.str)-1; {\n\t\tvar ext string\n\t\ti, ext = getExtension(t.str, i)\n\t\te = append(e, ext)\n\t}\n\treturn e\n}\n\n// TypeForKey returns the type associated with the given key, where key and type\n// are of the allowed values defined for the Unicode locale extension ('u') in\n// https://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers.\n// TypeForKey will traverse the inheritance chain to get the correct value.\n//\n// If there are multiple types associated with a key, only the first will be\n// returned. If there is no type associated with a key, it returns the empty\n// string.\nfunc (t Tag) TypeForKey(key string) string {\n\tif _, start, end, _ := t.findTypeForKey(key); end != start {\n\t\ts := t.str[start:end]\n\t\tif p := strings.IndexByte(s, '-'); p >= 0 {\n\t\t\ts = s[:p]\n\t\t}\n\t\treturn s\n\t}\n\treturn \"\"\n}\n\nvar (\n\terrPrivateUse       = errors.New(\"cannot set a key on a private use tag\")\n\terrInvalidArguments = errors.New(\"invalid key or type\")\n)\n\n// SetTypeForKey returns a new Tag with the key set to type, where key and type\n// are of the allowed values defined for the Unicode locale extension ('u') in\n// https://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers.\n// An empty value removes an existing pair with the same key.\nfunc (t Tag) SetTypeForKey(key, value string) (Tag, error) {\n\tif t.IsPrivateUse() {\n\t\treturn t, errPrivateUse\n\t}\n\tif len(key) != 2 {\n\t\treturn t, errInvalidArguments\n\t}\n\n\t// Remove the setting if value is \"\".\n\tif value == \"\" {\n\t\tstart, sep, end, _ := t.findTypeForKey(key)\n\t\tif start != sep {\n\t\t\t// Remove a possible empty extension.\n\t\t\tswitch {\n\t\t\tcase t.str[start-2] != '-': // has previous elements.\n\t\t\tcase end == len(t.str), // end of string\n\t\t\t\tend+2 < len(t.str) && t.str[end+2] == '-': // end of extension\n\t\t\t\tstart -= 2\n\t\t\t}\n\t\t\tif start == int(t.pVariant) && end == len(t.str) {\n\t\t\t\tt.str = \"\"\n\t\t\t\tt.pVariant, t.pExt = 0, 0\n\t\t\t} else {\n\t\t\t\tt.str = fmt.Sprintf(\"%s%s\", t.str[:start], t.str[end:])\n\t\t\t}\n\t\t}\n\t\treturn t, nil\n\t}\n\n\tif len(value) < 3 || len(value) > 8 {\n\t\treturn t, errInvalidArguments\n\t}\n\n\tvar (\n\t\tbuf    [maxCoreSize + maxSimpleUExtensionSize]byte\n\t\tuStart int // start of the -u extension.\n\t)\n\n\t// Generate the tag string if needed.\n\tif t.str == \"\" {\n\t\tuStart = t.genCoreBytes(buf[:])\n\t\tbuf[uStart] = '-'\n\t\tuStart++\n\t}\n\n\t// Create new key-type pair and parse it to verify.\n\tb := buf[uStart:]\n\tcopy(b, \"u-\")\n\tcopy(b[2:], key)\n\tb[4] = '-'\n\tb = b[:5+copy(b[5:], value)]\n\tscan := makeScanner(b)\n\tif parseExtensions(&scan); scan.err != nil {\n\t\treturn t, scan.err\n\t}\n\n\t// Assemble the replacement string.\n\tif t.str == \"\" {\n\t\tt.pVariant, t.pExt = byte(uStart-1), uint16(uStart-1)\n\t\tt.str = string(buf[:uStart+len(b)])\n\t} else {\n\t\ts := t.str\n\t\tstart, sep, end, hasExt := t.findTypeForKey(key)\n\t\tif start == sep {\n\t\t\tif hasExt {\n\t\t\t\tb = b[2:]\n\t\t\t}\n\t\t\tt.str = fmt.Sprintf(\"%s-%s%s\", s[:sep], b, s[end:])\n\t\t} else {\n\t\t\tt.str = fmt.Sprintf(\"%s-%s%s\", s[:start+3], value, s[end:])\n\t\t}\n\t}\n\treturn t, nil\n}\n\n// findTypeForKey returns the start and end position for the type corresponding\n// to key or the point at which to insert the key-value pair if the type\n// wasn't found. The hasExt return value reports whether an -u extension was present.\n// Note: the extensions are typically very small and are likely to contain\n// only one key-type pair.\nfunc (t Tag) findTypeForKey(key string) (start, sep, end int, hasExt bool) {\n\tp := int(t.pExt)\n\tif len(key) != 2 || p == len(t.str) || p == 0 {\n\t\treturn p, p, p, false\n\t}\n\ts := t.str\n\n\t// Find the correct extension.\n\tfor p++; s[p] != 'u'; p++ {\n\t\tif s[p] > 'u' {\n\t\t\tp--\n\t\t\treturn p, p, p, false\n\t\t}\n\t\tif p = nextExtension(s, p); p == len(s) {\n\t\t\treturn len(s), len(s), len(s), false\n\t\t}\n\t}\n\t// Proceed to the hyphen following the extension name.\n\tp++\n\n\t// curKey is the key currently being processed.\n\tcurKey := \"\"\n\n\t// Iterate over keys until we get the end of a section.\n\tfor {\n\t\tend = p\n\t\tfor p++; p < len(s) && s[p] != '-'; p++ {\n\t\t}\n\t\tn := p - end - 1\n\t\tif n <= 2 && curKey == key {\n\t\t\tif sep < end {\n\t\t\t\tsep++\n\t\t\t}\n\t\t\treturn start, sep, end, true\n\t\t}\n\t\tswitch n {\n\t\tcase 0, // invalid string\n\t\t\t1: // next extension\n\t\t\treturn end, end, end, true\n\t\tcase 2:\n\t\t\t// next key\n\t\t\tcurKey = s[end+1 : p]\n\t\t\tif curKey > key {\n\t\t\t\treturn end, end, end, true\n\t\t\t}\n\t\t\tstart = end\n\t\t\tsep = p\n\t\t}\n\t}\n}\n\n// ParseBase parses a 2- or 3-letter ISO 639 code.\n// It returns a ValueError if s is a well-formed but unknown language identifier\n// or another error if another error occurred.\nfunc ParseBase(s string) (l Language, err error) {\n\tdefer func() {\n\t\tif recover() != nil {\n\t\t\tl = 0\n\t\t\terr = ErrSyntax\n\t\t}\n\t}()\n\n\tif n := len(s); n < 2 || 3 < n {\n\t\treturn 0, ErrSyntax\n\t}\n\tvar buf [3]byte\n\treturn getLangID(buf[:copy(buf[:], s)])\n}\n\n// ParseScript parses a 4-letter ISO 15924 code.\n// It returns a ValueError if s is a well-formed but unknown script identifier\n// or another error if another error occurred.\nfunc ParseScript(s string) (scr Script, err error) {\n\tdefer func() {\n\t\tif recover() != nil {\n\t\t\tscr = 0\n\t\t\terr = ErrSyntax\n\t\t}\n\t}()\n\n\tif len(s) != 4 {\n\t\treturn 0, ErrSyntax\n\t}\n\tvar buf [4]byte\n\treturn getScriptID(script, buf[:copy(buf[:], s)])\n}\n\n// EncodeM49 returns the Region for the given UN M.49 code.\n// It returns an error if r is not a valid code.\nfunc EncodeM49(r int) (Region, error) {\n\treturn getRegionM49(r)\n}\n\n// ParseRegion parses a 2- or 3-letter ISO 3166-1 or a UN M.49 code.\n// It returns a ValueError if s is a well-formed but unknown region identifier\n// or another error if another error occurred.\nfunc ParseRegion(s string) (r Region, err error) {\n\tdefer func() {\n\t\tif recover() != nil {\n\t\t\tr = 0\n\t\t\terr = ErrSyntax\n\t\t}\n\t}()\n\n\tif n := len(s); n < 2 || 3 < n {\n\t\treturn 0, ErrSyntax\n\t}\n\tvar buf [3]byte\n\treturn getRegionID(buf[:copy(buf[:], s)])\n}\n\n// IsCountry returns whether this region is a country or autonomous area. This\n// includes non-standard definitions from CLDR.\nfunc (r Region) IsCountry() bool {\n\tif r == 0 || r.IsGroup() || r.IsPrivateUse() && r != _XK {\n\t\treturn false\n\t}\n\treturn true\n}\n\n// IsGroup returns whether this region defines a collection of regions. This\n// includes non-standard definitions from CLDR.\nfunc (r Region) IsGroup() bool {\n\tif r == 0 {\n\t\treturn false\n\t}\n\treturn int(regionInclusion[r]) < len(regionContainment)\n}\n\n// Contains returns whether Region c is contained by Region r. It returns true\n// if c == r.\nfunc (r Region) Contains(c Region) bool {\n\tif r == c {\n\t\treturn true\n\t}\n\tg := regionInclusion[r]\n\tif g >= nRegionGroups {\n\t\treturn false\n\t}\n\tm := regionContainment[g]\n\n\td := regionInclusion[c]\n\tb := regionInclusionBits[d]\n\n\t// A contained country may belong to multiple disjoint groups. Matching any\n\t// of these indicates containment. If the contained region is a group, it\n\t// must strictly be a subset.\n\tif d >= nRegionGroups {\n\t\treturn b&m != 0\n\t}\n\treturn b&^m == 0\n}\n\nvar errNoTLD = errors.New(\"language: region is not a valid ccTLD\")\n\n// TLD returns the country code top-level domain (ccTLD). UK is returned for GB.\n// In all other cases it returns either the region itself or an error.\n//\n// This method may return an error for a region for which there exists a\n// canonical form with a ccTLD. To get that ccTLD canonicalize r first. The\n// region will already be canonicalized it was obtained from a Tag that was\n// obtained using any of the default methods.\nfunc (r Region) TLD() (Region, error) {\n\t// See http://en.wikipedia.org/wiki/Country_code_top-level_domain for the\n\t// difference between ISO 3166-1 and IANA ccTLD.\n\tif r == _GB {\n\t\tr = _UK\n\t}\n\tif (r.typ() & ccTLD) == 0 {\n\t\treturn 0, errNoTLD\n\t}\n\treturn r, nil\n}\n\n// Canonicalize returns the region or a possible replacement if the region is\n// deprecated. It will not return a replacement for deprecated regions that\n// are split into multiple regions.\nfunc (r Region) Canonicalize() Region {\n\tif cr := normRegion(r); cr != 0 {\n\t\treturn cr\n\t}\n\treturn r\n}\n\n// Variant represents a registered variant of a language as defined by BCP 47.\ntype Variant struct {\n\tID  uint8\n\tstr string\n}\n\n// ParseVariant parses and returns a Variant. An error is returned if s is not\n// a valid variant.\nfunc ParseVariant(s string) (v Variant, err error) {\n\tdefer func() {\n\t\tif recover() != nil {\n\t\t\tv = Variant{}\n\t\t\terr = ErrSyntax\n\t\t}\n\t}()\n\n\ts = strings.ToLower(s)\n\tif id, ok := variantIndex[s]; ok {\n\t\treturn Variant{id, s}, nil\n\t}\n\treturn Variant{}, NewValueError([]byte(s))\n}\n\n// String returns the string representation of the variant.\nfunc (v Variant) String() string {\n\treturn v.str\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/text/internal/language/lookup.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage language\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"sort\"\n\t\"strconv\"\n\n\t\"golang.org/x/text/internal/tag\"\n)\n\n// findIndex tries to find the given tag in idx and returns a standardized error\n// if it could not be found.\nfunc findIndex(idx tag.Index, key []byte, form string) (index int, err error) {\n\tif !tag.FixCase(form, key) {\n\t\treturn 0, ErrSyntax\n\t}\n\ti := idx.Index(key)\n\tif i == -1 {\n\t\treturn 0, NewValueError(key)\n\t}\n\treturn i, nil\n}\n\nfunc searchUint(imap []uint16, key uint16) int {\n\treturn sort.Search(len(imap), func(i int) bool {\n\t\treturn imap[i] >= key\n\t})\n}\n\ntype Language uint16\n\n// getLangID returns the langID of s if s is a canonical subtag\n// or langUnknown if s is not a canonical subtag.\nfunc getLangID(s []byte) (Language, error) {\n\tif len(s) == 2 {\n\t\treturn getLangISO2(s)\n\t}\n\treturn getLangISO3(s)\n}\n\n// TODO language normalization as well as the AliasMaps could be moved to the\n// higher level package, but it is a bit tricky to separate the generation.\n\nfunc (id Language) Canonicalize() (Language, AliasType) {\n\treturn normLang(id)\n}\n\n// normLang returns the mapped langID of id according to mapping m.\nfunc normLang(id Language) (Language, AliasType) {\n\tk := sort.Search(len(AliasMap), func(i int) bool {\n\t\treturn AliasMap[i].From >= uint16(id)\n\t})\n\tif k < len(AliasMap) && AliasMap[k].From == uint16(id) {\n\t\treturn Language(AliasMap[k].To), AliasTypes[k]\n\t}\n\treturn id, AliasTypeUnknown\n}\n\n// getLangISO2 returns the langID for the given 2-letter ISO language code\n// or unknownLang if this does not exist.\nfunc getLangISO2(s []byte) (Language, error) {\n\tif !tag.FixCase(\"zz\", s) {\n\t\treturn 0, ErrSyntax\n\t}\n\tif i := lang.Index(s); i != -1 && lang.Elem(i)[3] != 0 {\n\t\treturn Language(i), nil\n\t}\n\treturn 0, NewValueError(s)\n}\n\nconst base = 'z' - 'a' + 1\n\nfunc strToInt(s []byte) uint {\n\tv := uint(0)\n\tfor i := 0; i < len(s); i++ {\n\t\tv *= base\n\t\tv += uint(s[i] - 'a')\n\t}\n\treturn v\n}\n\n// converts the given integer to the original ASCII string passed to strToInt.\n// len(s) must match the number of characters obtained.\nfunc intToStr(v uint, s []byte) {\n\tfor i := len(s) - 1; i >= 0; i-- {\n\t\ts[i] = byte(v%base) + 'a'\n\t\tv /= base\n\t}\n}\n\n// getLangISO3 returns the langID for the given 3-letter ISO language code\n// or unknownLang if this does not exist.\nfunc getLangISO3(s []byte) (Language, error) {\n\tif tag.FixCase(\"und\", s) {\n\t\t// first try to match canonical 3-letter entries\n\t\tfor i := lang.Index(s[:2]); i != -1; i = lang.Next(s[:2], i) {\n\t\t\tif e := lang.Elem(i); e[3] == 0 && e[2] == s[2] {\n\t\t\t\t// We treat \"und\" as special and always translate it to \"unspecified\".\n\t\t\t\t// Note that ZZ and Zzzz are private use and are not treated as\n\t\t\t\t// unspecified by default.\n\t\t\t\tid := Language(i)\n\t\t\t\tif id == nonCanonicalUnd {\n\t\t\t\t\treturn 0, nil\n\t\t\t\t}\n\t\t\t\treturn id, nil\n\t\t\t}\n\t\t}\n\t\tif i := altLangISO3.Index(s); i != -1 {\n\t\t\treturn Language(altLangIndex[altLangISO3.Elem(i)[3]]), nil\n\t\t}\n\t\tn := strToInt(s)\n\t\tif langNoIndex[n/8]&(1<<(n%8)) != 0 {\n\t\t\treturn Language(n) + langNoIndexOffset, nil\n\t\t}\n\t\t// Check for non-canonical uses of ISO3.\n\t\tfor i := lang.Index(s[:1]); i != -1; i = lang.Next(s[:1], i) {\n\t\t\tif e := lang.Elem(i); e[2] == s[1] && e[3] == s[2] {\n\t\t\t\treturn Language(i), nil\n\t\t\t}\n\t\t}\n\t\treturn 0, NewValueError(s)\n\t}\n\treturn 0, ErrSyntax\n}\n\n// StringToBuf writes the string to b and returns the number of bytes\n// written.  cap(b) must be >= 3.\nfunc (id Language) StringToBuf(b []byte) int {\n\tif id >= langNoIndexOffset {\n\t\tintToStr(uint(id)-langNoIndexOffset, b[:3])\n\t\treturn 3\n\t} else if id == 0 {\n\t\treturn copy(b, \"und\")\n\t}\n\tl := lang[id<<2:]\n\tif l[3] == 0 {\n\t\treturn copy(b, l[:3])\n\t}\n\treturn copy(b, l[:2])\n}\n\n// String returns the BCP 47 representation of the langID.\n// Use b as variable name, instead of id, to ensure the variable\n// used is consistent with that of Base in which this type is embedded.\nfunc (b Language) String() string {\n\tif b == 0 {\n\t\treturn \"und\"\n\t} else if b >= langNoIndexOffset {\n\t\tb -= langNoIndexOffset\n\t\tbuf := [3]byte{}\n\t\tintToStr(uint(b), buf[:])\n\t\treturn string(buf[:])\n\t}\n\tl := lang.Elem(int(b))\n\tif l[3] == 0 {\n\t\treturn l[:3]\n\t}\n\treturn l[:2]\n}\n\n// ISO3 returns the ISO 639-3 language code.\nfunc (b Language) ISO3() string {\n\tif b == 0 || b >= langNoIndexOffset {\n\t\treturn b.String()\n\t}\n\tl := lang.Elem(int(b))\n\tif l[3] == 0 {\n\t\treturn l[:3]\n\t} else if l[2] == 0 {\n\t\treturn altLangISO3.Elem(int(l[3]))[:3]\n\t}\n\t// This allocation will only happen for 3-letter ISO codes\n\t// that are non-canonical BCP 47 language identifiers.\n\treturn l[0:1] + l[2:4]\n}\n\n// IsPrivateUse reports whether this language code is reserved for private use.\nfunc (b Language) IsPrivateUse() bool {\n\treturn langPrivateStart <= b && b <= langPrivateEnd\n}\n\n// SuppressScript returns the script marked as SuppressScript in the IANA\n// language tag repository, or 0 if there is no such script.\nfunc (b Language) SuppressScript() Script {\n\tif b < langNoIndexOffset {\n\t\treturn Script(suppressScript[b])\n\t}\n\treturn 0\n}\n\ntype Region uint16\n\n// getRegionID returns the region id for s if s is a valid 2-letter region code\n// or unknownRegion.\nfunc getRegionID(s []byte) (Region, error) {\n\tif len(s) == 3 {\n\t\tif isAlpha(s[0]) {\n\t\t\treturn getRegionISO3(s)\n\t\t}\n\t\tif i, err := strconv.ParseUint(string(s), 10, 10); err == nil {\n\t\t\treturn getRegionM49(int(i))\n\t\t}\n\t}\n\treturn getRegionISO2(s)\n}\n\n// getRegionISO2 returns the regionID for the given 2-letter ISO country code\n// or unknownRegion if this does not exist.\nfunc getRegionISO2(s []byte) (Region, error) {\n\ti, err := findIndex(regionISO, s, \"ZZ\")\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\treturn Region(i) + isoRegionOffset, nil\n}\n\n// getRegionISO3 returns the regionID for the given 3-letter ISO country code\n// or unknownRegion if this does not exist.\nfunc getRegionISO3(s []byte) (Region, error) {\n\tif tag.FixCase(\"ZZZ\", s) {\n\t\tfor i := regionISO.Index(s[:1]); i != -1; i = regionISO.Next(s[:1], i) {\n\t\t\tif e := regionISO.Elem(i); e[2] == s[1] && e[3] == s[2] {\n\t\t\t\treturn Region(i) + isoRegionOffset, nil\n\t\t\t}\n\t\t}\n\t\tfor i := 0; i < len(altRegionISO3); i += 3 {\n\t\t\tif tag.Compare(altRegionISO3[i:i+3], s) == 0 {\n\t\t\t\treturn Region(altRegionIDs[i/3]), nil\n\t\t\t}\n\t\t}\n\t\treturn 0, NewValueError(s)\n\t}\n\treturn 0, ErrSyntax\n}\n\nfunc getRegionM49(n int) (Region, error) {\n\tif 0 < n && n <= 999 {\n\t\tconst (\n\t\t\tsearchBits = 7\n\t\t\tregionBits = 9\n\t\t\tregionMask = 1<<regionBits - 1\n\t\t)\n\t\tidx := n >> searchBits\n\t\tbuf := fromM49[m49Index[idx]:m49Index[idx+1]]\n\t\tval := uint16(n) << regionBits // we rely on bits shifting out\n\t\ti := sort.Search(len(buf), func(i int) bool {\n\t\t\treturn buf[i] >= val\n\t\t})\n\t\tif r := fromM49[int(m49Index[idx])+i]; r&^regionMask == val {\n\t\t\treturn Region(r & regionMask), nil\n\t\t}\n\t}\n\tvar e ValueError\n\tfmt.Fprint(bytes.NewBuffer([]byte(e.v[:])), n)\n\treturn 0, e\n}\n\n// normRegion returns a region if r is deprecated or 0 otherwise.\n// TODO: consider supporting BYS (-> BLR), CSK (-> 200 or CZ), PHI (-> PHL) and AFI (-> DJ).\n// TODO: consider mapping split up regions to new most populous one (like CLDR).\nfunc normRegion(r Region) Region {\n\tm := regionOldMap\n\tk := sort.Search(len(m), func(i int) bool {\n\t\treturn m[i].From >= uint16(r)\n\t})\n\tif k < len(m) && m[k].From == uint16(r) {\n\t\treturn Region(m[k].To)\n\t}\n\treturn 0\n}\n\nconst (\n\tiso3166UserAssigned = 1 << iota\n\tccTLD\n\tbcp47Region\n)\n\nfunc (r Region) typ() byte {\n\treturn regionTypes[r]\n}\n\n// String returns the BCP 47 representation for the region.\n// It returns \"ZZ\" for an unspecified region.\nfunc (r Region) String() string {\n\tif r < isoRegionOffset {\n\t\tif r == 0 {\n\t\t\treturn \"ZZ\"\n\t\t}\n\t\treturn fmt.Sprintf(\"%03d\", r.M49())\n\t}\n\tr -= isoRegionOffset\n\treturn regionISO.Elem(int(r))[:2]\n}\n\n// ISO3 returns the 3-letter ISO code of r.\n// Note that not all regions have a 3-letter ISO code.\n// In such cases this method returns \"ZZZ\".\nfunc (r Region) ISO3() string {\n\tif r < isoRegionOffset {\n\t\treturn \"ZZZ\"\n\t}\n\tr -= isoRegionOffset\n\treg := regionISO.Elem(int(r))\n\tswitch reg[2] {\n\tcase 0:\n\t\treturn altRegionISO3[reg[3]:][:3]\n\tcase ' ':\n\t\treturn \"ZZZ\"\n\t}\n\treturn reg[0:1] + reg[2:4]\n}\n\n// M49 returns the UN M.49 encoding of r, or 0 if this encoding\n// is not defined for r.\nfunc (r Region) M49() int {\n\treturn int(m49[r])\n}\n\n// IsPrivateUse reports whether r has the ISO 3166 User-assigned status. This\n// may include private-use tags that are assigned by CLDR and used in this\n// implementation. So IsPrivateUse and IsCountry can be simultaneously true.\nfunc (r Region) IsPrivateUse() bool {\n\treturn r.typ()&iso3166UserAssigned != 0\n}\n\ntype Script uint16\n\n// getScriptID returns the script id for string s. It assumes that s\n// is of the format [A-Z][a-z]{3}.\nfunc getScriptID(idx tag.Index, s []byte) (Script, error) {\n\ti, err := findIndex(idx, s, \"Zzzz\")\n\treturn Script(i), err\n}\n\n// String returns the script code in title case.\n// It returns \"Zzzz\" for an unspecified script.\nfunc (s Script) String() string {\n\tif s == 0 {\n\t\treturn \"Zzzz\"\n\t}\n\treturn script.Elem(int(s))\n}\n\n// IsPrivateUse reports whether this script code is reserved for private use.\nfunc (s Script) IsPrivateUse() bool {\n\treturn _Qaaa <= s && s <= _Qabx\n}\n\nconst (\n\tmaxAltTaglen = len(\"en-US-POSIX\")\n\tmaxLen       = maxAltTaglen\n)\n\nvar (\n\t// grandfatheredMap holds a mapping from legacy and grandfathered tags to\n\t// their base language or index to more elaborate tag.\n\tgrandfatheredMap = map[[maxLen]byte]int16{\n\t\t[maxLen]byte{'a', 'r', 't', '-', 'l', 'o', 'j', 'b', 'a', 'n'}: _jbo, // art-lojban\n\t\t[maxLen]byte{'i', '-', 'a', 'm', 'i'}:                          _ami, // i-ami\n\t\t[maxLen]byte{'i', '-', 'b', 'n', 'n'}:                          _bnn, // i-bnn\n\t\t[maxLen]byte{'i', '-', 'h', 'a', 'k'}:                          _hak, // i-hak\n\t\t[maxLen]byte{'i', '-', 'k', 'l', 'i', 'n', 'g', 'o', 'n'}:      _tlh, // i-klingon\n\t\t[maxLen]byte{'i', '-', 'l', 'u', 'x'}:                          _lb,  // i-lux\n\t\t[maxLen]byte{'i', '-', 'n', 'a', 'v', 'a', 'j', 'o'}:           _nv,  // i-navajo\n\t\t[maxLen]byte{'i', '-', 'p', 'w', 'n'}:                          _pwn, // i-pwn\n\t\t[maxLen]byte{'i', '-', 't', 'a', 'o'}:                          _tao, // i-tao\n\t\t[maxLen]byte{'i', '-', 't', 'a', 'y'}:                          _tay, // i-tay\n\t\t[maxLen]byte{'i', '-', 't', 's', 'u'}:                          _tsu, // i-tsu\n\t\t[maxLen]byte{'n', 'o', '-', 'b', 'o', 'k'}:                     _nb,  // no-bok\n\t\t[maxLen]byte{'n', 'o', '-', 'n', 'y', 'n'}:                     _nn,  // no-nyn\n\t\t[maxLen]byte{'s', 'g', 'n', '-', 'b', 'e', '-', 'f', 'r'}:      _sfb, // sgn-BE-FR\n\t\t[maxLen]byte{'s', 'g', 'n', '-', 'b', 'e', '-', 'n', 'l'}:      _vgt, // sgn-BE-NL\n\t\t[maxLen]byte{'s', 'g', 'n', '-', 'c', 'h', '-', 'd', 'e'}:      _sgg, // sgn-CH-DE\n\t\t[maxLen]byte{'z', 'h', '-', 'g', 'u', 'o', 'y', 'u'}:           _cmn, // zh-guoyu\n\t\t[maxLen]byte{'z', 'h', '-', 'h', 'a', 'k', 'k', 'a'}:           _hak, // zh-hakka\n\t\t[maxLen]byte{'z', 'h', '-', 'm', 'i', 'n', '-', 'n', 'a', 'n'}: _nan, // zh-min-nan\n\t\t[maxLen]byte{'z', 'h', '-', 'x', 'i', 'a', 'n', 'g'}:           _hsn, // zh-xiang\n\n\t\t// Grandfathered tags with no modern replacement will be converted as\n\t\t// follows:\n\t\t[maxLen]byte{'c', 'e', 'l', '-', 'g', 'a', 'u', 'l', 'i', 's', 'h'}: -1, // cel-gaulish\n\t\t[maxLen]byte{'e', 'n', '-', 'g', 'b', '-', 'o', 'e', 'd'}:           -2, // en-GB-oed\n\t\t[maxLen]byte{'i', '-', 'd', 'e', 'f', 'a', 'u', 'l', 't'}:           -3, // i-default\n\t\t[maxLen]byte{'i', '-', 'e', 'n', 'o', 'c', 'h', 'i', 'a', 'n'}:      -4, // i-enochian\n\t\t[maxLen]byte{'i', '-', 'm', 'i', 'n', 'g', 'o'}:                     -5, // i-mingo\n\t\t[maxLen]byte{'z', 'h', '-', 'm', 'i', 'n'}:                          -6, // zh-min\n\n\t\t// CLDR-specific tag.\n\t\t[maxLen]byte{'r', 'o', 'o', 't'}:                                    0,  // root\n\t\t[maxLen]byte{'e', 'n', '-', 'u', 's', '-', 'p', 'o', 's', 'i', 'x'}: -7, // en_US_POSIX\"\n\t}\n\n\taltTagIndex = [...]uint8{0, 17, 31, 45, 61, 74, 86, 102}\n\n\taltTags = \"xtg-x-cel-gaulishen-GB-oxendicten-x-i-defaultund-x-i-enochiansee-x-i-mingonan-x-zh-minen-US-u-va-posix\"\n)\n\nfunc grandfathered(s [maxAltTaglen]byte) (t Tag, ok bool) {\n\tif v, ok := grandfatheredMap[s]; ok {\n\t\tif v < 0 {\n\t\t\treturn Make(altTags[altTagIndex[-v-1]:altTagIndex[-v]]), true\n\t\t}\n\t\tt.LangID = Language(v)\n\t\treturn t, true\n\t}\n\treturn t, false\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/text/internal/language/match.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage language\n\nimport \"errors\"\n\ntype scriptRegionFlags uint8\n\nconst (\n\tisList = 1 << iota\n\tscriptInFrom\n\tregionInFrom\n)\n\nfunc (t *Tag) setUndefinedLang(id Language) {\n\tif t.LangID == 0 {\n\t\tt.LangID = id\n\t}\n}\n\nfunc (t *Tag) setUndefinedScript(id Script) {\n\tif t.ScriptID == 0 {\n\t\tt.ScriptID = id\n\t}\n}\n\nfunc (t *Tag) setUndefinedRegion(id Region) {\n\tif t.RegionID == 0 || t.RegionID.Contains(id) {\n\t\tt.RegionID = id\n\t}\n}\n\n// ErrMissingLikelyTagsData indicates no information was available\n// to compute likely values of missing tags.\nvar ErrMissingLikelyTagsData = errors.New(\"missing likely tags data\")\n\n// addLikelySubtags sets subtags to their most likely value, given the locale.\n// In most cases this means setting fields for unknown values, but in some\n// cases it may alter a value.  It returns an ErrMissingLikelyTagsData error\n// if the given locale cannot be expanded.\nfunc (t Tag) addLikelySubtags() (Tag, error) {\n\tid, err := addTags(t)\n\tif err != nil {\n\t\treturn t, err\n\t} else if id.equalTags(t) {\n\t\treturn t, nil\n\t}\n\tid.RemakeString()\n\treturn id, nil\n}\n\n// specializeRegion attempts to specialize a group region.\nfunc specializeRegion(t *Tag) bool {\n\tif i := regionInclusion[t.RegionID]; i < nRegionGroups {\n\t\tx := likelyRegionGroup[i]\n\t\tif Language(x.lang) == t.LangID && Script(x.script) == t.ScriptID {\n\t\t\tt.RegionID = Region(x.region)\n\t\t}\n\t\treturn true\n\t}\n\treturn false\n}\n\n// Maximize returns a new tag with missing tags filled in.\nfunc (t Tag) Maximize() (Tag, error) {\n\treturn addTags(t)\n}\n\nfunc addTags(t Tag) (Tag, error) {\n\t// We leave private use identifiers alone.\n\tif t.IsPrivateUse() {\n\t\treturn t, nil\n\t}\n\tif t.ScriptID != 0 && t.RegionID != 0 {\n\t\tif t.LangID != 0 {\n\t\t\t// already fully specified\n\t\t\tspecializeRegion(&t)\n\t\t\treturn t, nil\n\t\t}\n\t\t// Search matches for und-script-region. Note that for these cases\n\t\t// region will never be a group so there is no need to check for this.\n\t\tlist := likelyRegion[t.RegionID : t.RegionID+1]\n\t\tif x := list[0]; x.flags&isList != 0 {\n\t\t\tlist = likelyRegionList[x.lang : x.lang+uint16(x.script)]\n\t\t}\n\t\tfor _, x := range list {\n\t\t\t// Deviating from the spec. See match_test.go for details.\n\t\t\tif Script(x.script) == t.ScriptID {\n\t\t\t\tt.setUndefinedLang(Language(x.lang))\n\t\t\t\treturn t, nil\n\t\t\t}\n\t\t}\n\t}\n\tif t.LangID != 0 {\n\t\t// Search matches for lang-script and lang-region, where lang != und.\n\t\tif t.LangID < langNoIndexOffset {\n\t\t\tx := likelyLang[t.LangID]\n\t\t\tif x.flags&isList != 0 {\n\t\t\t\tlist := likelyLangList[x.region : x.region+uint16(x.script)]\n\t\t\t\tif t.ScriptID != 0 {\n\t\t\t\t\tfor _, x := range list {\n\t\t\t\t\t\tif Script(x.script) == t.ScriptID && x.flags&scriptInFrom != 0 {\n\t\t\t\t\t\t\tt.setUndefinedRegion(Region(x.region))\n\t\t\t\t\t\t\treturn t, nil\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else if t.RegionID != 0 {\n\t\t\t\t\tcount := 0\n\t\t\t\t\tgoodScript := true\n\t\t\t\t\ttt := t\n\t\t\t\t\tfor _, x := range list {\n\t\t\t\t\t\t// We visit all entries for which the script was not\n\t\t\t\t\t\t// defined, including the ones where the region was not\n\t\t\t\t\t\t// defined. This allows for proper disambiguation within\n\t\t\t\t\t\t// regions.\n\t\t\t\t\t\tif x.flags&scriptInFrom == 0 && t.RegionID.Contains(Region(x.region)) {\n\t\t\t\t\t\t\ttt.RegionID = Region(x.region)\n\t\t\t\t\t\t\ttt.setUndefinedScript(Script(x.script))\n\t\t\t\t\t\t\tgoodScript = goodScript && tt.ScriptID == Script(x.script)\n\t\t\t\t\t\t\tcount++\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif count == 1 {\n\t\t\t\t\t\treturn tt, nil\n\t\t\t\t\t}\n\t\t\t\t\t// Even if we fail to find a unique Region, we might have\n\t\t\t\t\t// an unambiguous script.\n\t\t\t\t\tif goodScript {\n\t\t\t\t\t\tt.ScriptID = tt.ScriptID\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// Search matches for und-script.\n\t\tif t.ScriptID != 0 {\n\t\t\tx := likelyScript[t.ScriptID]\n\t\t\tif x.region != 0 {\n\t\t\t\tt.setUndefinedRegion(Region(x.region))\n\t\t\t\tt.setUndefinedLang(Language(x.lang))\n\t\t\t\treturn t, nil\n\t\t\t}\n\t\t}\n\t\t// Search matches for und-region. If und-script-region exists, it would\n\t\t// have been found earlier.\n\t\tif t.RegionID != 0 {\n\t\t\tif i := regionInclusion[t.RegionID]; i < nRegionGroups {\n\t\t\t\tx := likelyRegionGroup[i]\n\t\t\t\tif x.region != 0 {\n\t\t\t\t\tt.setUndefinedLang(Language(x.lang))\n\t\t\t\t\tt.setUndefinedScript(Script(x.script))\n\t\t\t\t\tt.RegionID = Region(x.region)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tx := likelyRegion[t.RegionID]\n\t\t\t\tif x.flags&isList != 0 {\n\t\t\t\t\tx = likelyRegionList[x.lang]\n\t\t\t\t}\n\t\t\t\tif x.script != 0 && x.flags != scriptInFrom {\n\t\t\t\t\tt.setUndefinedLang(Language(x.lang))\n\t\t\t\t\tt.setUndefinedScript(Script(x.script))\n\t\t\t\t\treturn t, nil\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Search matches for lang.\n\tif t.LangID < langNoIndexOffset {\n\t\tx := likelyLang[t.LangID]\n\t\tif x.flags&isList != 0 {\n\t\t\tx = likelyLangList[x.region]\n\t\t}\n\t\tif x.region != 0 {\n\t\t\tt.setUndefinedScript(Script(x.script))\n\t\t\tt.setUndefinedRegion(Region(x.region))\n\t\t}\n\t\tspecializeRegion(&t)\n\t\tif t.LangID == 0 {\n\t\t\tt.LangID = _en // default language\n\t\t}\n\t\treturn t, nil\n\t}\n\treturn t, ErrMissingLikelyTagsData\n}\n\nfunc (t *Tag) setTagsFrom(id Tag) {\n\tt.LangID = id.LangID\n\tt.ScriptID = id.ScriptID\n\tt.RegionID = id.RegionID\n}\n\n// minimize removes the region or script subtags from t such that\n// t.addLikelySubtags() == t.minimize().addLikelySubtags().\nfunc (t Tag) minimize() (Tag, error) {\n\tt, err := minimizeTags(t)\n\tif err != nil {\n\t\treturn t, err\n\t}\n\tt.RemakeString()\n\treturn t, nil\n}\n\n// minimizeTags mimics the behavior of the ICU 51 C implementation.\nfunc minimizeTags(t Tag) (Tag, error) {\n\tif t.equalTags(Und) {\n\t\treturn t, nil\n\t}\n\tmax, err := addTags(t)\n\tif err != nil {\n\t\treturn t, err\n\t}\n\tfor _, id := range [...]Tag{\n\t\t{LangID: t.LangID},\n\t\t{LangID: t.LangID, RegionID: t.RegionID},\n\t\t{LangID: t.LangID, ScriptID: t.ScriptID},\n\t} {\n\t\tif x, err := addTags(id); err == nil && max.equalTags(x) {\n\t\t\tt.setTagsFrom(id)\n\t\t\tbreak\n\t\t}\n\t}\n\treturn t, nil\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/text/internal/language/parse.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage language\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"sort\"\n\n\t\"golang.org/x/text/internal/tag\"\n)\n\n// isAlpha returns true if the byte is not a digit.\n// b must be an ASCII letter or digit.\nfunc isAlpha(b byte) bool {\n\treturn b > '9'\n}\n\n// isAlphaNum returns true if the string contains only ASCII letters or digits.\nfunc isAlphaNum(s []byte) bool {\n\tfor _, c := range s {\n\t\tif !('a' <= c && c <= 'z' || 'A' <= c && c <= 'Z' || '0' <= c && c <= '9') {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// ErrSyntax is returned by any of the parsing functions when the\n// input is not well-formed, according to BCP 47.\n// TODO: return the position at which the syntax error occurred?\nvar ErrSyntax = errors.New(\"language: tag is not well-formed\")\n\n// ErrDuplicateKey is returned when a tag contains the same key twice with\n// different values in the -u section.\nvar ErrDuplicateKey = errors.New(\"language: different values for same key in -u extension\")\n\n// ValueError is returned by any of the parsing functions when the\n// input is well-formed but the respective subtag is not recognized\n// as a valid value.\ntype ValueError struct {\n\tv [8]byte\n}\n\n// NewValueError creates a new ValueError.\nfunc NewValueError(tag []byte) ValueError {\n\tvar e ValueError\n\tcopy(e.v[:], tag)\n\treturn e\n}\n\nfunc (e ValueError) tag() []byte {\n\tn := bytes.IndexByte(e.v[:], 0)\n\tif n == -1 {\n\t\tn = 8\n\t}\n\treturn e.v[:n]\n}\n\n// Error implements the error interface.\nfunc (e ValueError) Error() string {\n\treturn fmt.Sprintf(\"language: subtag %q is well-formed but unknown\", e.tag())\n}\n\n// Subtag returns the subtag for which the error occurred.\nfunc (e ValueError) Subtag() string {\n\treturn string(e.tag())\n}\n\n// scanner is used to scan BCP 47 tokens, which are separated by _ or -.\ntype scanner struct {\n\tb     []byte\n\tbytes [max99thPercentileSize]byte\n\ttoken []byte\n\tstart int // start position of the current token\n\tend   int // end position of the current token\n\tnext  int // next point for scan\n\terr   error\n\tdone  bool\n}\n\nfunc makeScannerString(s string) scanner {\n\tscan := scanner{}\n\tif len(s) <= len(scan.bytes) {\n\t\tscan.b = scan.bytes[:copy(scan.bytes[:], s)]\n\t} else {\n\t\tscan.b = []byte(s)\n\t}\n\tscan.init()\n\treturn scan\n}\n\n// makeScanner returns a scanner using b as the input buffer.\n// b is not copied and may be modified by the scanner routines.\nfunc makeScanner(b []byte) scanner {\n\tscan := scanner{b: b}\n\tscan.init()\n\treturn scan\n}\n\nfunc (s *scanner) init() {\n\tfor i, c := range s.b {\n\t\tif c == '_' {\n\t\t\ts.b[i] = '-'\n\t\t}\n\t}\n\ts.scan()\n}\n\n// restToLower converts the string between start and end to lower case.\nfunc (s *scanner) toLower(start, end int) {\n\tfor i := start; i < end; i++ {\n\t\tc := s.b[i]\n\t\tif 'A' <= c && c <= 'Z' {\n\t\t\ts.b[i] += 'a' - 'A'\n\t\t}\n\t}\n}\n\nfunc (s *scanner) setError(e error) {\n\tif s.err == nil || (e == ErrSyntax && s.err != ErrSyntax) {\n\t\ts.err = e\n\t}\n}\n\n// resizeRange shrinks or grows the array at position oldStart such that\n// a new string of size newSize can fit between oldStart and oldEnd.\n// Sets the scan point to after the resized range.\nfunc (s *scanner) resizeRange(oldStart, oldEnd, newSize int) {\n\ts.start = oldStart\n\tif end := oldStart + newSize; end != oldEnd {\n\t\tdiff := end - oldEnd\n\t\tvar b []byte\n\t\tif n := len(s.b) + diff; n > cap(s.b) {\n\t\t\tb = make([]byte, n)\n\t\t\tcopy(b, s.b[:oldStart])\n\t\t} else {\n\t\t\tb = s.b[:n]\n\t\t}\n\t\tcopy(b[end:], s.b[oldEnd:])\n\t\ts.b = b\n\t\ts.next = end + (s.next - s.end)\n\t\ts.end = end\n\t}\n}\n\n// replace replaces the current token with repl.\nfunc (s *scanner) replace(repl string) {\n\ts.resizeRange(s.start, s.end, len(repl))\n\tcopy(s.b[s.start:], repl)\n}\n\n// gobble removes the current token from the input.\n// Caller must call scan after calling gobble.\nfunc (s *scanner) gobble(e error) {\n\ts.setError(e)\n\tif s.start == 0 {\n\t\ts.b = s.b[:+copy(s.b, s.b[s.next:])]\n\t\ts.end = 0\n\t} else {\n\t\ts.b = s.b[:s.start-1+copy(s.b[s.start-1:], s.b[s.end:])]\n\t\ts.end = s.start - 1\n\t}\n\ts.next = s.start\n}\n\n// deleteRange removes the given range from s.b before the current token.\nfunc (s *scanner) deleteRange(start, end int) {\n\ts.b = s.b[:start+copy(s.b[start:], s.b[end:])]\n\tdiff := end - start\n\ts.next -= diff\n\ts.start -= diff\n\ts.end -= diff\n}\n\n// scan parses the next token of a BCP 47 string.  Tokens that are larger\n// than 8 characters or include non-alphanumeric characters result in an error\n// and are gobbled and removed from the output.\n// It returns the end position of the last token consumed.\nfunc (s *scanner) scan() (end int) {\n\tend = s.end\n\ts.token = nil\n\tfor s.start = s.next; s.next < len(s.b); {\n\t\ti := bytes.IndexByte(s.b[s.next:], '-')\n\t\tif i == -1 {\n\t\t\ts.end = len(s.b)\n\t\t\ts.next = len(s.b)\n\t\t\ti = s.end - s.start\n\t\t} else {\n\t\t\ts.end = s.next + i\n\t\t\ts.next = s.end + 1\n\t\t}\n\t\ttoken := s.b[s.start:s.end]\n\t\tif i < 1 || i > 8 || !isAlphaNum(token) {\n\t\t\ts.gobble(ErrSyntax)\n\t\t\tcontinue\n\t\t}\n\t\ts.token = token\n\t\treturn end\n\t}\n\tif n := len(s.b); n > 0 && s.b[n-1] == '-' {\n\t\ts.setError(ErrSyntax)\n\t\ts.b = s.b[:len(s.b)-1]\n\t}\n\ts.done = true\n\treturn end\n}\n\n// acceptMinSize parses multiple tokens of the given size or greater.\n// It returns the end position of the last token consumed.\nfunc (s *scanner) acceptMinSize(min int) (end int) {\n\tend = s.end\n\ts.scan()\n\tfor ; len(s.token) >= min; s.scan() {\n\t\tend = s.end\n\t}\n\treturn end\n}\n\n// Parse parses the given BCP 47 string and returns a valid Tag. If parsing\n// failed it returns an error and any part of the tag that could be parsed.\n// If parsing succeeded but an unknown value was found, it returns\n// ValueError. The Tag returned in this case is just stripped of the unknown\n// value. All other values are preserved. It accepts tags in the BCP 47 format\n// and extensions to this standard defined in\n// https://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers.\nfunc Parse(s string) (t Tag, err error) {\n\t// TODO: consider supporting old-style locale key-value pairs.\n\tif s == \"\" {\n\t\treturn Und, ErrSyntax\n\t}\n\tdefer func() {\n\t\tif recover() != nil {\n\t\t\tt = Und\n\t\t\terr = ErrSyntax\n\t\t\treturn\n\t\t}\n\t}()\n\tif len(s) <= maxAltTaglen {\n\t\tb := [maxAltTaglen]byte{}\n\t\tfor i, c := range s {\n\t\t\t// Generating invalid UTF-8 is okay as it won't match.\n\t\t\tif 'A' <= c && c <= 'Z' {\n\t\t\t\tc += 'a' - 'A'\n\t\t\t} else if c == '_' {\n\t\t\t\tc = '-'\n\t\t\t}\n\t\t\tb[i] = byte(c)\n\t\t}\n\t\tif t, ok := grandfathered(b); ok {\n\t\t\treturn t, nil\n\t\t}\n\t}\n\tscan := makeScannerString(s)\n\treturn parse(&scan, s)\n}\n\nfunc parse(scan *scanner, s string) (t Tag, err error) {\n\tt = Und\n\tvar end int\n\tif n := len(scan.token); n <= 1 {\n\t\tscan.toLower(0, len(scan.b))\n\t\tif n == 0 || scan.token[0] != 'x' {\n\t\t\treturn t, ErrSyntax\n\t\t}\n\t\tend = parseExtensions(scan)\n\t} else if n >= 4 {\n\t\treturn Und, ErrSyntax\n\t} else { // the usual case\n\t\tt, end = parseTag(scan, true)\n\t\tif n := len(scan.token); n == 1 {\n\t\t\tt.pExt = uint16(end)\n\t\t\tend = parseExtensions(scan)\n\t\t} else if end < len(scan.b) {\n\t\t\tscan.setError(ErrSyntax)\n\t\t\tscan.b = scan.b[:end]\n\t\t}\n\t}\n\tif int(t.pVariant) < len(scan.b) {\n\t\tif end < len(s) {\n\t\t\ts = s[:end]\n\t\t}\n\t\tif len(s) > 0 && tag.Compare(s, scan.b) == 0 {\n\t\t\tt.str = s\n\t\t} else {\n\t\t\tt.str = string(scan.b)\n\t\t}\n\t} else {\n\t\tt.pVariant, t.pExt = 0, 0\n\t}\n\treturn t, scan.err\n}\n\n// parseTag parses language, script, region and variants.\n// It returns a Tag and the end position in the input that was parsed.\n// If doNorm is true, then <lang>-<extlang> will be normalized to <extlang>.\nfunc parseTag(scan *scanner, doNorm bool) (t Tag, end int) {\n\tvar e error\n\t// TODO: set an error if an unknown lang, script or region is encountered.\n\tt.LangID, e = getLangID(scan.token)\n\tscan.setError(e)\n\tscan.replace(t.LangID.String())\n\tlangStart := scan.start\n\tend = scan.scan()\n\tfor len(scan.token) == 3 && isAlpha(scan.token[0]) {\n\t\t// From http://tools.ietf.org/html/bcp47, <lang>-<extlang> tags are equivalent\n\t\t// to a tag of the form <extlang>.\n\t\tif doNorm {\n\t\t\tlang, e := getLangID(scan.token)\n\t\t\tif lang != 0 {\n\t\t\t\tt.LangID = lang\n\t\t\t\tlangStr := lang.String()\n\t\t\t\tcopy(scan.b[langStart:], langStr)\n\t\t\t\tscan.b[langStart+len(langStr)] = '-'\n\t\t\t\tscan.start = langStart + len(langStr) + 1\n\t\t\t}\n\t\t\tscan.gobble(e)\n\t\t}\n\t\tend = scan.scan()\n\t}\n\tif len(scan.token) == 4 && isAlpha(scan.token[0]) {\n\t\tt.ScriptID, e = getScriptID(script, scan.token)\n\t\tif t.ScriptID == 0 {\n\t\t\tscan.gobble(e)\n\t\t}\n\t\tend = scan.scan()\n\t}\n\tif n := len(scan.token); n >= 2 && n <= 3 {\n\t\tt.RegionID, e = getRegionID(scan.token)\n\t\tif t.RegionID == 0 {\n\t\t\tscan.gobble(e)\n\t\t} else {\n\t\t\tscan.replace(t.RegionID.String())\n\t\t}\n\t\tend = scan.scan()\n\t}\n\tscan.toLower(scan.start, len(scan.b))\n\tt.pVariant = byte(end)\n\tend = parseVariants(scan, end, t)\n\tt.pExt = uint16(end)\n\treturn t, end\n}\n\nvar separator = []byte{'-'}\n\n// parseVariants scans tokens as long as each token is a valid variant string.\n// Duplicate variants are removed.\nfunc parseVariants(scan *scanner, end int, t Tag) int {\n\tstart := scan.start\n\tvarIDBuf := [4]uint8{}\n\tvariantBuf := [4][]byte{}\n\tvarID := varIDBuf[:0]\n\tvariant := variantBuf[:0]\n\tlast := -1\n\tneedSort := false\n\tfor ; len(scan.token) >= 4; scan.scan() {\n\t\t// TODO: measure the impact of needing this conversion and redesign\n\t\t// the data structure if there is an issue.\n\t\tv, ok := variantIndex[string(scan.token)]\n\t\tif !ok {\n\t\t\t// unknown variant\n\t\t\t// TODO: allow user-defined variants?\n\t\t\tscan.gobble(NewValueError(scan.token))\n\t\t\tcontinue\n\t\t}\n\t\tvarID = append(varID, v)\n\t\tvariant = append(variant, scan.token)\n\t\tif !needSort {\n\t\t\tif last < int(v) {\n\t\t\t\tlast = int(v)\n\t\t\t} else {\n\t\t\t\tneedSort = true\n\t\t\t\t// There is no legal combinations of more than 7 variants\n\t\t\t\t// (and this is by no means a useful sequence).\n\t\t\t\tconst maxVariants = 8\n\t\t\t\tif len(varID) > maxVariants {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tend = scan.end\n\t}\n\tif needSort {\n\t\tsort.Sort(variantsSort{varID, variant})\n\t\tk, l := 0, -1\n\t\tfor i, v := range varID {\n\t\t\tw := int(v)\n\t\t\tif l == w {\n\t\t\t\t// Remove duplicates.\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tvarID[k] = varID[i]\n\t\t\tvariant[k] = variant[i]\n\t\t\tk++\n\t\t\tl = w\n\t\t}\n\t\tif str := bytes.Join(variant[:k], separator); len(str) == 0 {\n\t\t\tend = start - 1\n\t\t} else {\n\t\t\tscan.resizeRange(start, end, len(str))\n\t\t\tcopy(scan.b[scan.start:], str)\n\t\t\tend = scan.end\n\t\t}\n\t}\n\treturn end\n}\n\ntype variantsSort struct {\n\ti []uint8\n\tv [][]byte\n}\n\nfunc (s variantsSort) Len() int {\n\treturn len(s.i)\n}\n\nfunc (s variantsSort) Swap(i, j int) {\n\ts.i[i], s.i[j] = s.i[j], s.i[i]\n\ts.v[i], s.v[j] = s.v[j], s.v[i]\n}\n\nfunc (s variantsSort) Less(i, j int) bool {\n\treturn s.i[i] < s.i[j]\n}\n\ntype bytesSort struct {\n\tb [][]byte\n\tn int // first n bytes to compare\n}\n\nfunc (b bytesSort) Len() int {\n\treturn len(b.b)\n}\n\nfunc (b bytesSort) Swap(i, j int) {\n\tb.b[i], b.b[j] = b.b[j], b.b[i]\n}\n\nfunc (b bytesSort) Less(i, j int) bool {\n\tfor k := 0; k < b.n; k++ {\n\t\tif b.b[i][k] == b.b[j][k] {\n\t\t\tcontinue\n\t\t}\n\t\treturn b.b[i][k] < b.b[j][k]\n\t}\n\treturn false\n}\n\n// parseExtensions parses and normalizes the extensions in the buffer.\n// It returns the last position of scan.b that is part of any extension.\n// It also trims scan.b to remove excess parts accordingly.\nfunc parseExtensions(scan *scanner) int {\n\tstart := scan.start\n\texts := [][]byte{}\n\tprivate := []byte{}\n\tend := scan.end\n\tfor len(scan.token) == 1 {\n\t\textStart := scan.start\n\t\text := scan.token[0]\n\t\tend = parseExtension(scan)\n\t\textension := scan.b[extStart:end]\n\t\tif len(extension) < 3 || (ext != 'x' && len(extension) < 4) {\n\t\t\tscan.setError(ErrSyntax)\n\t\t\tend = extStart\n\t\t\tcontinue\n\t\t} else if start == extStart && (ext == 'x' || scan.start == len(scan.b)) {\n\t\t\tscan.b = scan.b[:end]\n\t\t\treturn end\n\t\t} else if ext == 'x' {\n\t\t\tprivate = extension\n\t\t\tbreak\n\t\t}\n\t\texts = append(exts, extension)\n\t}\n\tsort.Sort(bytesSort{exts, 1})\n\tif len(private) > 0 {\n\t\texts = append(exts, private)\n\t}\n\tscan.b = scan.b[:start]\n\tif len(exts) > 0 {\n\t\tscan.b = append(scan.b, bytes.Join(exts, separator)...)\n\t} else if start > 0 {\n\t\t// Strip trailing '-'.\n\t\tscan.b = scan.b[:start-1]\n\t}\n\treturn end\n}\n\n// parseExtension parses a single extension and returns the position of\n// the extension end.\nfunc parseExtension(scan *scanner) int {\n\tstart, end := scan.start, scan.end\n\tswitch scan.token[0] {\n\tcase 'u': // https://www.ietf.org/rfc/rfc6067.txt\n\t\tattrStart := end\n\t\tscan.scan()\n\t\tfor last := []byte{}; len(scan.token) > 2; scan.scan() {\n\t\t\tif bytes.Compare(scan.token, last) != -1 {\n\t\t\t\t// Attributes are unsorted. Start over from scratch.\n\t\t\t\tp := attrStart + 1\n\t\t\t\tscan.next = p\n\t\t\t\tattrs := [][]byte{}\n\t\t\t\tfor scan.scan(); len(scan.token) > 2; scan.scan() {\n\t\t\t\t\tattrs = append(attrs, scan.token)\n\t\t\t\t\tend = scan.end\n\t\t\t\t}\n\t\t\t\tsort.Sort(bytesSort{attrs, 3})\n\t\t\t\tcopy(scan.b[p:], bytes.Join(attrs, separator))\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tlast = scan.token\n\t\t\tend = scan.end\n\t\t}\n\t\t// Scan key-type sequences. A key is of length 2 and may be followed\n\t\t// by 0 or more \"type\" subtags from 3 to the maximum of 8 letters.\n\t\tvar last, key []byte\n\t\tfor attrEnd := end; len(scan.token) == 2; last = key {\n\t\t\tkey = scan.token\n\t\t\tend = scan.end\n\t\t\tfor scan.scan(); end < scan.end && len(scan.token) > 2; scan.scan() {\n\t\t\t\tend = scan.end\n\t\t\t}\n\t\t\t// TODO: check key value validity\n\t\t\tif bytes.Compare(key, last) != 1 || scan.err != nil {\n\t\t\t\t// We have an invalid key or the keys are not sorted.\n\t\t\t\t// Start scanning keys from scratch and reorder.\n\t\t\t\tp := attrEnd + 1\n\t\t\t\tscan.next = p\n\t\t\t\tkeys := [][]byte{}\n\t\t\t\tfor scan.scan(); len(scan.token) == 2; {\n\t\t\t\t\tkeyStart := scan.start\n\t\t\t\t\tend = scan.end\n\t\t\t\t\tfor scan.scan(); end < scan.end && len(scan.token) > 2; scan.scan() {\n\t\t\t\t\t\tend = scan.end\n\t\t\t\t\t}\n\t\t\t\t\tkeys = append(keys, scan.b[keyStart:end])\n\t\t\t\t}\n\t\t\t\tsort.Stable(bytesSort{keys, 2})\n\t\t\t\tif n := len(keys); n > 0 {\n\t\t\t\t\tk := 0\n\t\t\t\t\tfor i := 1; i < n; i++ {\n\t\t\t\t\t\tif !bytes.Equal(keys[k][:2], keys[i][:2]) {\n\t\t\t\t\t\t\tk++\n\t\t\t\t\t\t\tkeys[k] = keys[i]\n\t\t\t\t\t\t} else if !bytes.Equal(keys[k], keys[i]) {\n\t\t\t\t\t\t\tscan.setError(ErrDuplicateKey)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tkeys = keys[:k+1]\n\t\t\t\t}\n\t\t\t\treordered := bytes.Join(keys, separator)\n\t\t\t\tif e := p + len(reordered); e < end {\n\t\t\t\t\tscan.deleteRange(e, end)\n\t\t\t\t\tend = e\n\t\t\t\t}\n\t\t\t\tcopy(scan.b[p:], reordered)\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\tcase 't': // https://www.ietf.org/rfc/rfc6497.txt\n\t\tscan.scan()\n\t\tif n := len(scan.token); n >= 2 && n <= 3 && isAlpha(scan.token[1]) {\n\t\t\t_, end = parseTag(scan, false)\n\t\t\tscan.toLower(start, end)\n\t\t}\n\t\tfor len(scan.token) == 2 && !isAlpha(scan.token[1]) {\n\t\t\tend = scan.acceptMinSize(3)\n\t\t}\n\tcase 'x':\n\t\tend = scan.acceptMinSize(1)\n\tdefault:\n\t\tend = scan.acceptMinSize(2)\n\t}\n\treturn end\n}\n\n// getExtension returns the name, body and end position of the extension.\nfunc getExtension(s string, p int) (end int, ext string) {\n\tif s[p] == '-' {\n\t\tp++\n\t}\n\tif s[p] == 'x' {\n\t\treturn len(s), s[p:]\n\t}\n\tend = nextExtension(s, p)\n\treturn end, s[p:end]\n}\n\n// nextExtension finds the next extension within the string, searching\n// for the -<char>- pattern from position p.\n// In the fast majority of cases, language tags will have at most\n// one extension and extensions tend to be small.\nfunc nextExtension(s string, p int) int {\n\tfor n := len(s) - 3; p < n; {\n\t\tif s[p] == '-' {\n\t\t\tif s[p+2] == '-' {\n\t\t\t\treturn p\n\t\t\t}\n\t\t\tp += 3\n\t\t} else {\n\t\t\tp++\n\t\t}\n\t}\n\treturn len(s)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/text/internal/language/tables.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\npackage language\n\nimport \"golang.org/x/text/internal/tag\"\n\n// CLDRVersion is the CLDR version from which the tables in this package are derived.\nconst CLDRVersion = \"32\"\n\nconst NumLanguages = 8798\n\nconst NumScripts = 261\n\nconst NumRegions = 358\n\ntype FromTo struct {\n\tFrom uint16\n\tTo   uint16\n}\n\nconst nonCanonicalUnd = 1201\nconst (\n\t_af  = 22\n\t_am  = 39\n\t_ar  = 58\n\t_az  = 88\n\t_bg  = 126\n\t_bn  = 165\n\t_ca  = 215\n\t_cs  = 250\n\t_da  = 257\n\t_de  = 269\n\t_el  = 310\n\t_en  = 313\n\t_es  = 318\n\t_et  = 320\n\t_fa  = 328\n\t_fi  = 337\n\t_fil = 339\n\t_fr  = 350\n\t_gu  = 420\n\t_he  = 444\n\t_hi  = 446\n\t_hr  = 465\n\t_hu  = 469\n\t_hy  = 471\n\t_id  = 481\n\t_is  = 504\n\t_it  = 505\n\t_ja  = 512\n\t_ka  = 528\n\t_kk  = 578\n\t_km  = 586\n\t_kn  = 593\n\t_ko  = 596\n\t_ky  = 650\n\t_lo  = 696\n\t_lt  = 704\n\t_lv  = 711\n\t_mk  = 767\n\t_ml  = 772\n\t_mn  = 779\n\t_mo  = 784\n\t_mr  = 795\n\t_ms  = 799\n\t_mul = 806\n\t_my  = 817\n\t_nb  = 839\n\t_ne  = 849\n\t_nl  = 871\n\t_no  = 879\n\t_pa  = 925\n\t_pl  = 947\n\t_pt  = 960\n\t_ro  = 988\n\t_ru  = 994\n\t_sh  = 1031\n\t_si  = 1036\n\t_sk  = 1042\n\t_sl  = 1046\n\t_sq  = 1073\n\t_sr  = 1074\n\t_sv  = 1092\n\t_sw  = 1093\n\t_ta  = 1104\n\t_te  = 1121\n\t_th  = 1131\n\t_tl  = 1146\n\t_tn  = 1152\n\t_tr  = 1162\n\t_uk  = 1198\n\t_ur  = 1204\n\t_uz  = 1212\n\t_vi  = 1219\n\t_zh  = 1321\n\t_zu  = 1327\n\t_jbo = 515\n\t_ami = 1650\n\t_bnn = 2357\n\t_hak = 438\n\t_tlh = 14467\n\t_lb  = 661\n\t_nv  = 899\n\t_pwn = 12055\n\t_tao = 14188\n\t_tay = 14198\n\t_tsu = 14662\n\t_nn  = 874\n\t_sfb = 13629\n\t_vgt = 15701\n\t_sgg = 13660\n\t_cmn = 3007\n\t_nan = 835\n\t_hsn = 467\n)\n\nconst langPrivateStart = 0x2f72\n\nconst langPrivateEnd = 0x3179\n\n// lang holds an alphabetically sorted list of ISO-639 language identifiers.\n// All entries are 4 bytes. The index of the identifier (divided by 4) is the language tag.\n// For 2-byte language identifiers, the two successive bytes have the following meaning:\n//   - if the first letter of the 2- and 3-letter ISO codes are the same:\n//     the second and third letter of the 3-letter ISO code.\n//   - otherwise: a 0 and a by 2 bits right-shifted index into altLangISO3.\n//\n// For 3-byte language identifiers the 4th byte is 0.\nconst lang tag.Index = \"\" + // Size: 5324 bytes\n\t\"---\\x00aaaraai\\x00aak\\x00aau\\x00abbkabi\\x00abq\\x00abr\\x00abt\\x00aby\\x00a\" +\n\t\"cd\\x00ace\\x00ach\\x00ada\\x00ade\\x00adj\\x00ady\\x00adz\\x00aeveaeb\\x00aey\" +\n\t\"\\x00affragc\\x00agd\\x00agg\\x00agm\\x00ago\\x00agq\\x00aha\\x00ahl\\x00aho\\x00a\" +\n\t\"jg\\x00akkaakk\\x00ala\\x00ali\\x00aln\\x00alt\\x00ammhamm\\x00amn\\x00amo\\x00am\" +\n\t\"p\\x00anrganc\\x00ank\\x00ann\\x00any\\x00aoj\\x00aom\\x00aoz\\x00apc\\x00apd\\x00\" +\n\t\"ape\\x00apr\\x00aps\\x00apz\\x00arraarc\\x00arh\\x00arn\\x00aro\\x00arq\\x00ars\" +\n\t\"\\x00ary\\x00arz\\x00assmasa\\x00ase\\x00asg\\x00aso\\x00ast\\x00ata\\x00atg\\x00a\" +\n\t\"tj\\x00auy\\x00avvaavl\\x00avn\\x00avt\\x00avu\\x00awa\\x00awb\\x00awo\\x00awx\" +\n\t\"\\x00ayymayb\\x00azzebaakbal\\x00ban\\x00bap\\x00bar\\x00bas\\x00bav\\x00bax\\x00\" +\n\t\"bba\\x00bbb\\x00bbc\\x00bbd\\x00bbj\\x00bbp\\x00bbr\\x00bcf\\x00bch\\x00bci\\x00bc\" +\n\t\"m\\x00bcn\\x00bco\\x00bcq\\x00bcu\\x00bdd\\x00beelbef\\x00beh\\x00bej\\x00bem\\x00\" +\n\t\"bet\\x00bew\\x00bex\\x00bez\\x00bfd\\x00bfq\\x00bft\\x00bfy\\x00bgulbgc\\x00bgn\" +\n\t\"\\x00bgx\\x00bhihbhb\\x00bhg\\x00bhi\\x00bhk\\x00bhl\\x00bho\\x00bhy\\x00biisbib\" +\n\t\"\\x00big\\x00bik\\x00bim\\x00bin\\x00bio\\x00biq\\x00bjh\\x00bji\\x00bjj\\x00bjn\" +\n\t\"\\x00bjo\\x00bjr\\x00bjt\\x00bjz\\x00bkc\\x00bkm\\x00bkq\\x00bku\\x00bkv\\x00blt\" +\n\t\"\\x00bmambmh\\x00bmk\\x00bmq\\x00bmu\\x00bnenbng\\x00bnm\\x00bnp\\x00boodboj\\x00\" +\n\t\"bom\\x00bon\\x00bpy\\x00bqc\\x00bqi\\x00bqp\\x00bqv\\x00brrebra\\x00brh\\x00brx\" +\n\t\"\\x00brz\\x00bsosbsj\\x00bsq\\x00bss\\x00bst\\x00bto\\x00btt\\x00btv\\x00bua\\x00b\" +\n\t\"uc\\x00bud\\x00bug\\x00buk\\x00bum\\x00buo\\x00bus\\x00buu\\x00bvb\\x00bwd\\x00bwr\" +\n\t\"\\x00bxh\\x00bye\\x00byn\\x00byr\\x00bys\\x00byv\\x00byx\\x00bza\\x00bze\\x00bzf\" +\n\t\"\\x00bzh\\x00bzw\\x00caatcan\\x00cbj\\x00cch\\x00ccp\\x00ceheceb\\x00cfa\\x00cgg\" +\n\t\"\\x00chhachk\\x00chm\\x00cho\\x00chp\\x00chr\\x00cja\\x00cjm\\x00cjv\\x00ckb\\x00c\" +\n\t\"kl\\x00cko\\x00cky\\x00cla\\x00cme\\x00cmg\\x00cooscop\\x00cps\\x00crrecrh\\x00cr\" +\n\t\"j\\x00crk\\x00crl\\x00crm\\x00crs\\x00csescsb\\x00csw\\x00ctd\\x00cuhucvhvcyymda\" +\n\t\"andad\\x00daf\\x00dag\\x00dah\\x00dak\\x00dar\\x00dav\\x00dbd\\x00dbq\\x00dcc\\x00\" +\n\t\"ddn\\x00deeuded\\x00den\\x00dga\\x00dgh\\x00dgi\\x00dgl\\x00dgr\\x00dgz\\x00dia\" +\n\t\"\\x00dje\\x00dnj\\x00dob\\x00doi\\x00dop\\x00dow\\x00dri\\x00drs\\x00dsb\\x00dtm\" +\n\t\"\\x00dtp\\x00dts\\x00dty\\x00dua\\x00duc\\x00dud\\x00dug\\x00dvivdva\\x00dww\\x00d\" +\n\t\"yo\\x00dyu\\x00dzzodzg\\x00ebu\\x00eeweefi\\x00egl\\x00egy\\x00eka\\x00eky\\x00el\" +\n\t\"llema\\x00emi\\x00enngenn\\x00enq\\x00eopoeri\\x00es\\x00\\x05esu\\x00etstetr\" +\n\t\"\\x00ett\\x00etu\\x00etx\\x00euusewo\\x00ext\\x00faasfaa\\x00fab\\x00fag\\x00fai\" +\n\t\"\\x00fan\\x00ffulffi\\x00ffm\\x00fiinfia\\x00fil\\x00fit\\x00fjijflr\\x00fmp\\x00\" +\n\t\"foaofod\\x00fon\\x00for\\x00fpe\\x00fqs\\x00frrafrc\\x00frp\\x00frr\\x00frs\\x00f\" +\n\t\"ub\\x00fud\\x00fue\\x00fuf\\x00fuh\\x00fuq\\x00fur\\x00fuv\\x00fuy\\x00fvr\\x00fyr\" +\n\t\"ygalegaa\\x00gaf\\x00gag\\x00gah\\x00gaj\\x00gam\\x00gan\\x00gaw\\x00gay\\x00gba\" +\n\t\"\\x00gbf\\x00gbm\\x00gby\\x00gbz\\x00gcr\\x00gdlagde\\x00gdn\\x00gdr\\x00geb\\x00g\" +\n\t\"ej\\x00gel\\x00gez\\x00gfk\\x00ggn\\x00ghs\\x00gil\\x00gim\\x00gjk\\x00gjn\\x00gju\" +\n\t\"\\x00gkn\\x00gkp\\x00gllgglk\\x00gmm\\x00gmv\\x00gnrngnd\\x00gng\\x00god\\x00gof\" +\n\t\"\\x00goi\\x00gom\\x00gon\\x00gor\\x00gos\\x00got\\x00grb\\x00grc\\x00grt\\x00grw\" +\n\t\"\\x00gsw\\x00guujgub\\x00guc\\x00gud\\x00gur\\x00guw\\x00gux\\x00guz\\x00gvlvgvf\" +\n\t\"\\x00gvr\\x00gvs\\x00gwc\\x00gwi\\x00gwt\\x00gyi\\x00haauhag\\x00hak\\x00ham\\x00h\" +\n\t\"aw\\x00haz\\x00hbb\\x00hdy\\x00heebhhy\\x00hiinhia\\x00hif\\x00hig\\x00hih\\x00hi\" +\n\t\"l\\x00hla\\x00hlu\\x00hmd\\x00hmt\\x00hnd\\x00hne\\x00hnj\\x00hnn\\x00hno\\x00homo\" +\n\t\"hoc\\x00hoj\\x00hot\\x00hrrvhsb\\x00hsn\\x00htathuunhui\\x00hyyehzerianaian\" +\n\t\"\\x00iar\\x00iba\\x00ibb\\x00iby\\x00ica\\x00ich\\x00idndidd\\x00idi\\x00idu\\x00i\" +\n\t\"eleife\\x00igboigb\\x00ige\\x00iiiiijj\\x00ikpkikk\\x00ikt\\x00ikw\\x00ikx\\x00i\" +\n\t\"lo\\x00imo\\x00inndinh\\x00iodoiou\\x00iri\\x00isslittaiukuiw\\x00\\x03iwm\\x00i\" +\n\t\"ws\\x00izh\\x00izi\\x00japnjab\\x00jam\\x00jbo\\x00jbu\\x00jen\\x00jgk\\x00jgo\" +\n\t\"\\x00ji\\x00\\x06jib\\x00jmc\\x00jml\\x00jra\\x00jut\\x00jvavjwavkaatkaa\\x00kab\" +\n\t\"\\x00kac\\x00kad\\x00kai\\x00kaj\\x00kam\\x00kao\\x00kbd\\x00kbm\\x00kbp\\x00kbq\" +\n\t\"\\x00kbx\\x00kby\\x00kcg\\x00kck\\x00kcl\\x00kct\\x00kde\\x00kdh\\x00kdl\\x00kdt\" +\n\t\"\\x00kea\\x00ken\\x00kez\\x00kfo\\x00kfr\\x00kfy\\x00kgonkge\\x00kgf\\x00kgp\\x00k\" +\n\t\"ha\\x00khb\\x00khn\\x00khq\\x00khs\\x00kht\\x00khw\\x00khz\\x00kiikkij\\x00kiu\" +\n\t\"\\x00kiw\\x00kjuakjd\\x00kjg\\x00kjs\\x00kjy\\x00kkazkkc\\x00kkj\\x00klalkln\\x00\" +\n\t\"klq\\x00klt\\x00klx\\x00kmhmkmb\\x00kmh\\x00kmo\\x00kms\\x00kmu\\x00kmw\\x00knank\" +\n\t\"nf\\x00knp\\x00koorkoi\\x00kok\\x00kol\\x00kos\\x00koz\\x00kpe\\x00kpf\\x00kpo\" +\n\t\"\\x00kpr\\x00kpx\\x00kqb\\x00kqf\\x00kqs\\x00kqy\\x00kraukrc\\x00kri\\x00krj\\x00k\" +\n\t\"rl\\x00krs\\x00kru\\x00ksasksb\\x00ksd\\x00ksf\\x00ksh\\x00ksj\\x00ksr\\x00ktb\" +\n\t\"\\x00ktm\\x00kto\\x00kuurkub\\x00kud\\x00kue\\x00kuj\\x00kum\\x00kun\\x00kup\\x00k\" +\n\t\"us\\x00kvomkvg\\x00kvr\\x00kvx\\x00kw\\x00\\x01kwj\\x00kwo\\x00kxa\\x00kxc\\x00kxm\" +\n\t\"\\x00kxp\\x00kxw\\x00kxz\\x00kyirkye\\x00kyx\\x00kzr\\x00laatlab\\x00lad\\x00lag\" +\n\t\"\\x00lah\\x00laj\\x00las\\x00lbtzlbe\\x00lbu\\x00lbw\\x00lcm\\x00lcp\\x00ldb\\x00l\" +\n\t\"ed\\x00lee\\x00lem\\x00lep\\x00leq\\x00leu\\x00lez\\x00lguglgg\\x00liimlia\\x00li\" +\n\t\"d\\x00lif\\x00lig\\x00lih\\x00lij\\x00lis\\x00ljp\\x00lki\\x00lkt\\x00lle\\x00lln\" +\n\t\"\\x00lmn\\x00lmo\\x00lmp\\x00lninlns\\x00lnu\\x00loaoloj\\x00lok\\x00lol\\x00lor\" +\n\t\"\\x00los\\x00loz\\x00lrc\\x00ltitltg\\x00luublua\\x00luo\\x00luy\\x00luz\\x00lvav\" +\n\t\"lwl\\x00lzh\\x00lzz\\x00mad\\x00maf\\x00mag\\x00mai\\x00mak\\x00man\\x00mas\\x00ma\" +\n\t\"w\\x00maz\\x00mbh\\x00mbo\\x00mbq\\x00mbu\\x00mbw\\x00mci\\x00mcp\\x00mcq\\x00mcr\" +\n\t\"\\x00mcu\\x00mda\\x00mde\\x00mdf\\x00mdh\\x00mdj\\x00mdr\\x00mdx\\x00med\\x00mee\" +\n\t\"\\x00mek\\x00men\\x00mer\\x00met\\x00meu\\x00mfa\\x00mfe\\x00mfn\\x00mfo\\x00mfq\" +\n\t\"\\x00mglgmgh\\x00mgl\\x00mgo\\x00mgp\\x00mgy\\x00mhahmhi\\x00mhl\\x00mirimif\\x00\" +\n\t\"min\\x00mis\\x00miw\\x00mkkdmki\\x00mkl\\x00mkp\\x00mkw\\x00mlalmle\\x00mlp\\x00m\" +\n\t\"ls\\x00mmo\\x00mmu\\x00mmx\\x00mnonmna\\x00mnf\\x00mni\\x00mnw\\x00moolmoa\\x00mo\" +\n\t\"e\\x00moh\\x00mos\\x00mox\\x00mpp\\x00mps\\x00mpt\\x00mpx\\x00mql\\x00mrarmrd\\x00\" +\n\t\"mrj\\x00mro\\x00mssamtltmtc\\x00mtf\\x00mti\\x00mtr\\x00mua\\x00mul\\x00mur\\x00m\" +\n\t\"us\\x00mva\\x00mvn\\x00mvy\\x00mwk\\x00mwr\\x00mwv\\x00mxc\\x00mxm\\x00myyamyk\" +\n\t\"\\x00mym\\x00myv\\x00myw\\x00myx\\x00myz\\x00mzk\\x00mzm\\x00mzn\\x00mzp\\x00mzw\" +\n\t\"\\x00mzz\\x00naaunac\\x00naf\\x00nah\\x00nak\\x00nan\\x00nap\\x00naq\\x00nas\\x00n\" +\n\t\"bobnca\\x00nce\\x00ncf\\x00nch\\x00nco\\x00ncu\\x00nddendc\\x00nds\\x00neepneb\" +\n\t\"\\x00new\\x00nex\\x00nfr\\x00ngdonga\\x00ngb\\x00ngl\\x00nhb\\x00nhe\\x00nhw\\x00n\" +\n\t\"if\\x00nii\\x00nij\\x00nin\\x00niu\\x00niy\\x00niz\\x00njo\\x00nkg\\x00nko\\x00nll\" +\n\t\"dnmg\\x00nmz\\x00nnnonnf\\x00nnh\\x00nnk\\x00nnm\\x00noornod\\x00noe\\x00non\\x00\" +\n\t\"nop\\x00nou\\x00nqo\\x00nrblnrb\\x00nsk\\x00nsn\\x00nso\\x00nss\\x00ntm\\x00ntr\" +\n\t\"\\x00nui\\x00nup\\x00nus\\x00nuv\\x00nux\\x00nvavnwb\\x00nxq\\x00nxr\\x00nyyanym\" +\n\t\"\\x00nyn\\x00nzi\\x00occiogc\\x00ojjiokr\\x00okv\\x00omrmong\\x00onn\\x00ons\\x00\" +\n\t\"opm\\x00orrioro\\x00oru\\x00osssosa\\x00ota\\x00otk\\x00ozm\\x00paanpag\\x00pal\" +\n\t\"\\x00pam\\x00pap\\x00pau\\x00pbi\\x00pcd\\x00pcm\\x00pdc\\x00pdt\\x00ped\\x00peo\" +\n\t\"\\x00pex\\x00pfl\\x00phl\\x00phn\\x00pilipil\\x00pip\\x00pka\\x00pko\\x00plolpla\" +\n\t\"\\x00pms\\x00png\\x00pnn\\x00pnt\\x00pon\\x00ppo\\x00pra\\x00prd\\x00prg\\x00psusp\" +\n\t\"ss\\x00ptorptp\\x00puu\\x00pwa\\x00quuequc\\x00qug\\x00rai\\x00raj\\x00rao\\x00rc\" +\n\t\"f\\x00rej\\x00rel\\x00res\\x00rgn\\x00rhg\\x00ria\\x00rif\\x00rjs\\x00rkt\\x00rmoh\" +\n\t\"rmf\\x00rmo\\x00rmt\\x00rmu\\x00rnunrna\\x00rng\\x00roonrob\\x00rof\\x00roo\\x00r\" +\n\t\"ro\\x00rtm\\x00ruusrue\\x00rug\\x00rw\\x00\\x04rwk\\x00rwo\\x00ryu\\x00saansaf\" +\n\t\"\\x00sah\\x00saq\\x00sas\\x00sat\\x00sav\\x00saz\\x00sba\\x00sbe\\x00sbp\\x00scrds\" +\n\t\"ck\\x00scl\\x00scn\\x00sco\\x00scs\\x00sdndsdc\\x00sdh\\x00semesef\\x00seh\\x00se\" +\n\t\"i\\x00ses\\x00sgagsga\\x00sgs\\x00sgw\\x00sgz\\x00sh\\x00\\x02shi\\x00shk\\x00shn\" +\n\t\"\\x00shu\\x00siinsid\\x00sig\\x00sil\\x00sim\\x00sjr\\x00sklkskc\\x00skr\\x00sks\" +\n\t\"\\x00sllvsld\\x00sli\\x00sll\\x00sly\\x00smmosma\\x00smi\\x00smj\\x00smn\\x00smp\" +\n\t\"\\x00smq\\x00sms\\x00snnasnc\\x00snk\\x00snp\\x00snx\\x00sny\\x00soomsok\\x00soq\" +\n\t\"\\x00sou\\x00soy\\x00spd\\x00spl\\x00sps\\x00sqqisrrpsrb\\x00srn\\x00srr\\x00srx\" +\n\t\"\\x00ssswssd\\x00ssg\\x00ssy\\x00stotstk\\x00stq\\x00suunsua\\x00sue\\x00suk\\x00\" +\n\t\"sur\\x00sus\\x00svweswwaswb\\x00swc\\x00swg\\x00swp\\x00swv\\x00sxn\\x00sxw\\x00s\" +\n\t\"yl\\x00syr\\x00szl\\x00taamtaj\\x00tal\\x00tan\\x00taq\\x00tbc\\x00tbd\\x00tbf\" +\n\t\"\\x00tbg\\x00tbo\\x00tbw\\x00tbz\\x00tci\\x00tcy\\x00tdd\\x00tdg\\x00tdh\\x00teelt\" +\n\t\"ed\\x00tem\\x00teo\\x00tet\\x00tfi\\x00tggktgc\\x00tgo\\x00tgu\\x00thhathl\\x00th\" +\n\t\"q\\x00thr\\x00tiirtif\\x00tig\\x00tik\\x00tim\\x00tio\\x00tiv\\x00tkuktkl\\x00tkr\" +\n\t\"\\x00tkt\\x00tlgltlf\\x00tlx\\x00tly\\x00tmh\\x00tmy\\x00tnsntnh\\x00toontof\\x00\" +\n\t\"tog\\x00toq\\x00tpi\\x00tpm\\x00tpz\\x00tqo\\x00trurtru\\x00trv\\x00trw\\x00tssot\" +\n\t\"sd\\x00tsf\\x00tsg\\x00tsj\\x00tsw\\x00ttatttd\\x00tte\\x00ttj\\x00ttr\\x00tts\" +\n\t\"\\x00ttt\\x00tuh\\x00tul\\x00tum\\x00tuq\\x00tvd\\x00tvl\\x00tvu\\x00twwitwh\\x00t\" +\n\t\"wq\\x00txg\\x00tyahtya\\x00tyv\\x00tzm\\x00ubu\\x00udm\\x00ugiguga\\x00ukkruli\" +\n\t\"\\x00umb\\x00und\\x00unr\\x00unx\\x00urrduri\\x00urt\\x00urw\\x00usa\\x00utr\\x00u\" +\n\t\"vh\\x00uvl\\x00uzzbvag\\x00vai\\x00van\\x00veenvec\\x00vep\\x00viievic\\x00viv\" +\n\t\"\\x00vls\\x00vmf\\x00vmw\\x00voolvot\\x00vro\\x00vun\\x00vut\\x00walnwae\\x00waj\" +\n\t\"\\x00wal\\x00wan\\x00war\\x00wbp\\x00wbq\\x00wbr\\x00wci\\x00wer\\x00wgi\\x00whg\" +\n\t\"\\x00wib\\x00wiu\\x00wiv\\x00wja\\x00wji\\x00wls\\x00wmo\\x00wnc\\x00wni\\x00wnu\" +\n\t\"\\x00woolwob\\x00wos\\x00wrs\\x00wsk\\x00wtm\\x00wuu\\x00wuv\\x00wwa\\x00xav\\x00x\" +\n\t\"bi\\x00xcr\\x00xes\\x00xhhoxla\\x00xlc\\x00xld\\x00xmf\\x00xmn\\x00xmr\\x00xna\" +\n\t\"\\x00xnr\\x00xog\\x00xon\\x00xpr\\x00xrb\\x00xsa\\x00xsi\\x00xsm\\x00xsr\\x00xwe\" +\n\t\"\\x00yam\\x00yao\\x00yap\\x00yas\\x00yat\\x00yav\\x00yay\\x00yaz\\x00yba\\x00ybb\" +\n\t\"\\x00yby\\x00yer\\x00ygr\\x00ygw\\x00yiidyko\\x00yle\\x00ylg\\x00yll\\x00yml\\x00y\" +\n\t\"ooryon\\x00yrb\\x00yre\\x00yrl\\x00yss\\x00yua\\x00yue\\x00yuj\\x00yut\\x00yuw\" +\n\t\"\\x00zahazag\\x00zbl\\x00zdj\\x00zea\\x00zgh\\x00zhhozhx\\x00zia\\x00zlm\\x00zmi\" +\n\t\"\\x00zne\\x00zuulzxx\\x00zza\\x00\\xff\\xff\\xff\\xff\"\n\nconst langNoIndexOffset = 1330\n\n// langNoIndex is a bit vector of all 3-letter language codes that are not used as an index\n// in lookup tables. The language ids for these language codes are derived directly\n// from the letters and are not consecutive.\n// Size: 2197 bytes, 2197 elements\nvar langNoIndex = [2197]uint8{\n\t// Entry 0 - 3F\n\t0xff, 0xf8, 0xed, 0xfe, 0xeb, 0xd3, 0x3b, 0xd2,\n\t0xfb, 0xbf, 0x7a, 0xfa, 0x37, 0x1d, 0x3c, 0x57,\n\t0x6e, 0x97, 0x73, 0x38, 0xfb, 0xea, 0xbf, 0x70,\n\t0xad, 0x03, 0xff, 0xff, 0xcf, 0x05, 0x84, 0x72,\n\t0xe9, 0xbf, 0xfd, 0xbf, 0xbf, 0xf7, 0xfd, 0x77,\n\t0x0f, 0xff, 0xef, 0x6f, 0xff, 0xfb, 0xdf, 0xe2,\n\t0xc9, 0xf8, 0x7f, 0x7e, 0x4d, 0xbc, 0x0a, 0x6a,\n\t0x7c, 0xea, 0xe3, 0xfa, 0x7a, 0xbf, 0x67, 0xff,\n\t// Entry 40 - 7F\n\t0xff, 0xff, 0xff, 0xdf, 0x2a, 0x54, 0x91, 0xc0,\n\t0x5d, 0xe3, 0x97, 0x14, 0x07, 0x20, 0xdd, 0xed,\n\t0x9f, 0x3f, 0xc9, 0x21, 0xf8, 0x3f, 0x94, 0x35,\n\t0x7c, 0x5f, 0xff, 0x5f, 0x8e, 0x6e, 0xdf, 0xff,\n\t0xff, 0xff, 0x55, 0x7c, 0xd3, 0xfd, 0xbf, 0xb5,\n\t0x7b, 0xdf, 0x7f, 0xf7, 0xca, 0xfe, 0xdb, 0xa3,\n\t0xa8, 0xff, 0x1f, 0x67, 0x7d, 0xeb, 0xef, 0xce,\n\t0xff, 0xff, 0x9f, 0xff, 0xb7, 0xef, 0xfe, 0xcf,\n\t// Entry 80 - BF\n\t0xdb, 0xff, 0xf3, 0xcd, 0xfb, 0x7f, 0xff, 0xff,\n\t0xbb, 0xee, 0xf7, 0xbd, 0xdb, 0xff, 0x5f, 0xf7,\n\t0xfd, 0xf2, 0xfd, 0xff, 0x5e, 0x2f, 0x3b, 0xba,\n\t0x7e, 0xff, 0xff, 0xfe, 0xf7, 0xff, 0xdd, 0xff,\n\t0xfd, 0xdf, 0xfb, 0xfe, 0x9d, 0xb4, 0xd3, 0xff,\n\t0xef, 0xff, 0xdf, 0xf7, 0x7f, 0xb7, 0xfd, 0xd5,\n\t0xa5, 0x77, 0x40, 0xff, 0x9c, 0xc1, 0x41, 0x2c,\n\t0x08, 0x21, 0x41, 0x00, 0x50, 0x40, 0x00, 0x80,\n\t// Entry C0 - FF\n\t0xfb, 0x4a, 0xf2, 0x9f, 0xb4, 0x42, 0x41, 0x96,\n\t0x1b, 0x14, 0x08, 0xf3, 0x2b, 0xe7, 0x17, 0x56,\n\t0x05, 0x7d, 0x0e, 0x1c, 0x37, 0x7f, 0xf3, 0xef,\n\t0x97, 0xff, 0x5d, 0x38, 0x64, 0x08, 0x00, 0x10,\n\t0xbc, 0x85, 0xaf, 0xdf, 0xff, 0xff, 0x7b, 0x35,\n\t0x3e, 0xc7, 0xc7, 0xdf, 0xff, 0x01, 0x81, 0x00,\n\t0xb0, 0x05, 0x80, 0x00, 0x20, 0x00, 0x00, 0x03,\n\t0x40, 0x00, 0x40, 0x92, 0x21, 0x50, 0xb1, 0x5d,\n\t// Entry 100 - 13F\n\t0xfd, 0xdc, 0xbe, 0x5e, 0x00, 0x00, 0x02, 0x64,\n\t0x0d, 0x19, 0x41, 0xdf, 0x79, 0x22, 0x00, 0x00,\n\t0x00, 0x5e, 0x64, 0xdc, 0x24, 0xe5, 0xd9, 0xe3,\n\t0xfe, 0xff, 0xfd, 0xcb, 0x9f, 0x14, 0x41, 0x0c,\n\t0x86, 0x00, 0xd1, 0x00, 0xf0, 0xc7, 0x67, 0x5f,\n\t0x56, 0x99, 0x5e, 0xb5, 0x6c, 0xaf, 0x03, 0x00,\n\t0x02, 0x00, 0x00, 0x00, 0xc0, 0x37, 0xda, 0x56,\n\t0x90, 0x6d, 0x01, 0x2e, 0x96, 0x69, 0x20, 0xfb,\n\t// Entry 140 - 17F\n\t0xff, 0x3f, 0x00, 0x00, 0x00, 0x01, 0x0c, 0x16,\n\t0x03, 0x00, 0x00, 0xb0, 0x14, 0x23, 0x50, 0x06,\n\t0x0a, 0x00, 0x01, 0x00, 0x00, 0x10, 0x11, 0x09,\n\t0x00, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x10,\n\t0x00, 0x00, 0x44, 0x00, 0x00, 0x10, 0x00, 0x05,\n\t0x08, 0x00, 0x00, 0x05, 0x00, 0x80, 0x28, 0x04,\n\t0x00, 0x00, 0x40, 0xd5, 0x2d, 0x00, 0x64, 0x35,\n\t0x24, 0x52, 0xf4, 0xd5, 0xbf, 0x62, 0xc9, 0x03,\n\t// Entry 180 - 1BF\n\t0x00, 0x80, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x04, 0x13, 0x39, 0x01, 0xdd, 0x57, 0x98,\n\t0x21, 0x18, 0x81, 0x08, 0x00, 0x01, 0x40, 0x82,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x01, 0x40, 0x00, 0x44, 0x00, 0x00, 0x80, 0xea,\n\t0xa9, 0x39, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,\n\t// Entry 1C0 - 1FF\n\t0x00, 0x03, 0x28, 0x05, 0x00, 0x00, 0x00, 0x00,\n\t0x04, 0x20, 0x04, 0xa6, 0x00, 0x04, 0x00, 0x00,\n\t0x81, 0x50, 0x00, 0x00, 0x00, 0x11, 0x84, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x55,\n\t0x02, 0x10, 0x08, 0x04, 0x00, 0x00, 0x00, 0x40,\n\t0x30, 0x83, 0x01, 0x00, 0x00, 0x00, 0x11, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x1e, 0xcd, 0xbf, 0x7a, 0xbf,\n\t// Entry 200 - 23F\n\t0xdf, 0xc3, 0x83, 0x82, 0xc0, 0xfb, 0x57, 0x27,\n\t0xed, 0x55, 0xe7, 0x01, 0x00, 0x20, 0xb2, 0xc5,\n\t0xa4, 0x45, 0x25, 0x9b, 0x02, 0xdf, 0xe1, 0xdf,\n\t0x03, 0x44, 0x08, 0x90, 0x01, 0x04, 0x81, 0xe3,\n\t0x92, 0x54, 0xdb, 0x28, 0xd3, 0x5f, 0xfe, 0x6d,\n\t0x79, 0xed, 0x1c, 0x7f, 0x04, 0x08, 0x00, 0x01,\n\t0x21, 0x12, 0x64, 0x5f, 0xdd, 0x0e, 0x85, 0x4f,\n\t0x40, 0x40, 0x00, 0x04, 0xf1, 0xfd, 0x3d, 0x54,\n\t// Entry 240 - 27F\n\t0xe8, 0x03, 0xb4, 0x27, 0x23, 0x0d, 0x00, 0x00,\n\t0x20, 0x7b, 0x78, 0x02, 0x07, 0x84, 0x00, 0xf0,\n\t0xbb, 0x7e, 0x5a, 0x00, 0x18, 0x04, 0x81, 0x00,\n\t0x00, 0x00, 0x80, 0x10, 0x90, 0x1c, 0x01, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x04,\n\t0x08, 0xa0, 0x70, 0xa5, 0x0c, 0x40, 0x00, 0x00,\n\t0x91, 0x24, 0x04, 0x68, 0x00, 0x20, 0x70, 0xff,\n\t0x7b, 0x7f, 0x70, 0x00, 0x05, 0x9b, 0xdd, 0x66,\n\t// Entry 280 - 2BF\n\t0x03, 0x00, 0x11, 0x00, 0x00, 0x00, 0x40, 0x05,\n\t0xb5, 0xb6, 0x80, 0x08, 0x04, 0x00, 0x04, 0x51,\n\t0xe2, 0xef, 0xfd, 0x3f, 0x05, 0x09, 0x08, 0x05,\n\t0x40, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,\n\t0x0c, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0x60,\n\t0xe7, 0x48, 0x00, 0x81, 0x20, 0xc0, 0x05, 0x80,\n\t0x03, 0x00, 0x00, 0x00, 0x8c, 0x50, 0x40, 0x04,\n\t0x84, 0x47, 0x84, 0x40, 0x20, 0x10, 0x00, 0x20,\n\t// Entry 2C0 - 2FF\n\t0x02, 0x50, 0x80, 0x11, 0x00, 0x99, 0x6c, 0xe2,\n\t0x50, 0x27, 0x1d, 0x11, 0x29, 0x0e, 0x59, 0xe9,\n\t0x33, 0x08, 0x00, 0x20, 0x04, 0x40, 0x10, 0x00,\n\t0x00, 0x00, 0x50, 0x44, 0x92, 0x49, 0xd6, 0x5d,\n\t0xa7, 0x81, 0x47, 0x97, 0xfb, 0x00, 0x10, 0x00,\n\t0x08, 0x00, 0x80, 0x00, 0x40, 0x04, 0x00, 0x01,\n\t0x02, 0x00, 0x01, 0x40, 0x80, 0x00, 0x40, 0x08,\n\t0xd8, 0xeb, 0xf6, 0x39, 0xc4, 0x8d, 0x12, 0x00,\n\t// Entry 300 - 33F\n\t0x00, 0x0c, 0x04, 0x01, 0x20, 0x20, 0xdd, 0xa0,\n\t0x01, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00,\n\t0x04, 0x10, 0xd0, 0x9d, 0x95, 0x13, 0x04, 0x80,\n\t0x00, 0x01, 0xd0, 0x16, 0x40, 0x00, 0x10, 0xb0,\n\t0x10, 0x62, 0x4c, 0xd2, 0x02, 0x01, 0x4a, 0x00,\n\t0x46, 0x04, 0x00, 0x08, 0x02, 0x00, 0x20, 0x80,\n\t0x00, 0x80, 0x06, 0x00, 0x08, 0x00, 0x00, 0x00,\n\t0x00, 0xf0, 0xd8, 0x6f, 0x15, 0x02, 0x08, 0x00,\n\t// Entry 340 - 37F\n\t0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x01,\n\t0x00, 0x10, 0x00, 0x00, 0x00, 0xf0, 0x84, 0xe3,\n\t0xdd, 0xbf, 0xf9, 0xf9, 0x3b, 0x7f, 0x7f, 0xdb,\n\t0xfd, 0xfc, 0xfe, 0xdf, 0xff, 0xfd, 0xff, 0xf6,\n\t0xfb, 0xfc, 0xf7, 0x1f, 0xff, 0xb3, 0x6c, 0xff,\n\t0xd9, 0xad, 0xdf, 0xfe, 0xef, 0xba, 0xdf, 0xff,\n\t0xff, 0xff, 0xb7, 0xdd, 0x7d, 0xbf, 0xab, 0x7f,\n\t0xfd, 0xfd, 0xdf, 0x2f, 0x9c, 0xdf, 0xf3, 0x6f,\n\t// Entry 380 - 3BF\n\t0xdf, 0xdd, 0xff, 0xfb, 0xee, 0xd2, 0xab, 0x5f,\n\t0xd5, 0xdf, 0x7f, 0xff, 0xeb, 0xff, 0xe4, 0x4d,\n\t0xf9, 0xff, 0xfe, 0xf7, 0xfd, 0xdf, 0xfb, 0xbf,\n\t0xee, 0xdb, 0x6f, 0xef, 0xff, 0x7f, 0xff, 0xff,\n\t0xf7, 0x5f, 0xd3, 0x3b, 0xfd, 0xd9, 0xdf, 0xeb,\n\t0xbc, 0x08, 0x05, 0x24, 0xff, 0x07, 0x70, 0xfe,\n\t0xe6, 0x5e, 0x00, 0x08, 0x00, 0x83, 0x7d, 0x1f,\n\t0x06, 0xe6, 0x72, 0x60, 0xd1, 0x3c, 0x7f, 0x44,\n\t// Entry 3C0 - 3FF\n\t0x02, 0x30, 0x9f, 0x7a, 0x16, 0xbd, 0x7f, 0x57,\n\t0xf2, 0xff, 0x31, 0xff, 0xf2, 0x1e, 0x90, 0xf7,\n\t0xf1, 0xf9, 0x45, 0x80, 0x01, 0x02, 0x00, 0x20,\n\t0x40, 0x54, 0x9f, 0x8a, 0xdf, 0xf9, 0x6e, 0x11,\n\t0x86, 0x51, 0xc0, 0xf3, 0xfb, 0x47, 0x40, 0x03,\n\t0x05, 0xd1, 0x50, 0x5c, 0x00, 0x40, 0x00, 0x10,\n\t0x04, 0x02, 0x00, 0x00, 0x0a, 0x00, 0x17, 0xd2,\n\t0xb9, 0xfd, 0xfc, 0xba, 0xfe, 0xef, 0xc7, 0xbe,\n\t// Entry 400 - 43F\n\t0x53, 0x6f, 0xdf, 0xe7, 0xdb, 0x65, 0xbb, 0x7f,\n\t0xfa, 0xff, 0x77, 0xf3, 0xef, 0xbf, 0xfd, 0xf7,\n\t0xdf, 0xdf, 0x9b, 0x7f, 0xff, 0xff, 0x7f, 0x6f,\n\t0xf7, 0xfb, 0xeb, 0xdf, 0xbc, 0xff, 0xbf, 0x6b,\n\t0x7b, 0xfb, 0xff, 0xce, 0x76, 0xbd, 0xf7, 0xf7,\n\t0xdf, 0xdc, 0xf7, 0xf7, 0xff, 0xdf, 0xf3, 0xfe,\n\t0xef, 0xff, 0xff, 0xff, 0xb6, 0x7f, 0x7f, 0xde,\n\t0xf7, 0xb9, 0xeb, 0x77, 0xff, 0xfb, 0xbf, 0xdf,\n\t// Entry 440 - 47F\n\t0xfd, 0xfe, 0xfb, 0xff, 0xfe, 0xeb, 0x1f, 0x7d,\n\t0x2f, 0xfd, 0xb6, 0xb5, 0xa5, 0xfc, 0xff, 0xfd,\n\t0x7f, 0x4e, 0xbf, 0x8f, 0xae, 0xff, 0xee, 0xdf,\n\t0x7f, 0xf7, 0x73, 0x02, 0x02, 0x04, 0xfc, 0xf7,\n\t0xff, 0xb7, 0xd7, 0xef, 0xfe, 0xcd, 0xf5, 0xce,\n\t0xe2, 0x8e, 0xe7, 0xbf, 0xb7, 0xff, 0x56, 0xfd,\n\t0xcd, 0xff, 0xfb, 0xff, 0xdf, 0xd7, 0xea, 0xff,\n\t0xe5, 0x5f, 0x6d, 0x0f, 0xa7, 0x51, 0x06, 0xc4,\n\t// Entry 480 - 4BF\n\t0x93, 0x50, 0x5d, 0xaf, 0xa6, 0xff, 0x99, 0xfb,\n\t0x63, 0x1d, 0x53, 0xff, 0xef, 0xb7, 0x35, 0x20,\n\t0x14, 0x00, 0x55, 0x51, 0xc2, 0x65, 0xf5, 0x41,\n\t0xe2, 0xff, 0xfc, 0xdf, 0x02, 0x85, 0xc5, 0x05,\n\t0x00, 0x22, 0x00, 0x74, 0x69, 0x10, 0x08, 0x05,\n\t0x41, 0x00, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x51, 0x20, 0x05, 0x04, 0x01, 0x00, 0x00,\n\t0x06, 0x11, 0x20, 0x00, 0x18, 0x01, 0x92, 0xf1,\n\t// Entry 4C0 - 4FF\n\t0xfd, 0x47, 0x69, 0x06, 0x95, 0x06, 0x57, 0xed,\n\t0xfb, 0x4d, 0x1c, 0x6b, 0x83, 0x04, 0x62, 0x40,\n\t0x00, 0x11, 0x42, 0x00, 0x00, 0x00, 0x54, 0x83,\n\t0xb8, 0x4f, 0x10, 0x8e, 0x89, 0x46, 0xde, 0xf7,\n\t0x13, 0x31, 0x00, 0x20, 0x00, 0x00, 0x00, 0x90,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x10, 0x00,\n\t0x01, 0x00, 0x00, 0xf0, 0x5b, 0xf4, 0xbe, 0x3d,\n\t0xbe, 0xcf, 0xf7, 0xaf, 0x42, 0x04, 0x84, 0x41,\n\t// Entry 500 - 53F\n\t0x30, 0xff, 0x79, 0x72, 0x04, 0x00, 0x00, 0x49,\n\t0x2d, 0x14, 0x27, 0x5f, 0xed, 0xf1, 0x3f, 0xe7,\n\t0x3f, 0x00, 0x00, 0x02, 0xc6, 0xa0, 0x1e, 0xf8,\n\t0xbb, 0xff, 0xfd, 0xfb, 0xb7, 0xfd, 0xe7, 0xf7,\n\t0xfd, 0xfc, 0xd5, 0xed, 0x47, 0xf4, 0x7e, 0x10,\n\t0x01, 0x01, 0x84, 0x6d, 0xff, 0xf7, 0xdd, 0xf9,\n\t0x5b, 0x05, 0x86, 0xed, 0xf5, 0x77, 0xbd, 0x3c,\n\t0x00, 0x00, 0x00, 0x42, 0x71, 0x42, 0x00, 0x40,\n\t// Entry 540 - 57F\n\t0x00, 0x00, 0x01, 0x43, 0x19, 0x24, 0x08, 0x00,\n\t0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\n\t0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\n\t0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\n\t0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\n\t0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\n\t0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\n\t0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\n\t// Entry 580 - 5BF\n\t0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\n\t0xff, 0xab, 0xbd, 0xe7, 0x57, 0xee, 0x13, 0x5d,\n\t0x09, 0xc1, 0x40, 0x21, 0xfa, 0x17, 0x01, 0x80,\n\t0x00, 0x00, 0x00, 0x00, 0xf0, 0xce, 0xfb, 0xbf,\n\t0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00,\n\t0x00, 0x30, 0x15, 0xa3, 0x10, 0x00, 0x00, 0x00,\n\t0x11, 0x04, 0x16, 0x00, 0x00, 0x02, 0x20, 0x81,\n\t0xa3, 0x01, 0x50, 0x00, 0x00, 0x83, 0x11, 0x40,\n\t// Entry 5C0 - 5FF\n\t0x00, 0x00, 0x00, 0xf0, 0xdd, 0x7b, 0xbe, 0x02,\n\t0xaa, 0x10, 0x5d, 0x98, 0x52, 0x00, 0x80, 0x20,\n\t0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x02, 0x02,\n\t0x3d, 0x40, 0x10, 0x02, 0x10, 0x61, 0x5a, 0x9d,\n\t0x31, 0x00, 0x00, 0x00, 0x01, 0x18, 0x02, 0x20,\n\t0x00, 0x00, 0x01, 0x00, 0x42, 0x00, 0x20, 0x00,\n\t0x00, 0x1f, 0xdf, 0xd2, 0xb9, 0xff, 0xfd, 0x3f,\n\t0x1f, 0x98, 0xcf, 0x9c, 0xff, 0xaf, 0x5f, 0xfe,\n\t// Entry 600 - 63F\n\t0x7b, 0x4b, 0x40, 0x10, 0xe1, 0xfd, 0xaf, 0xd9,\n\t0xb7, 0xf6, 0xfb, 0xb3, 0xc7, 0xff, 0x6f, 0xf1,\n\t0x73, 0xb1, 0x7f, 0x9f, 0x7f, 0xbd, 0xfc, 0xb7,\n\t0xee, 0x1c, 0xfa, 0xcb, 0xef, 0xdd, 0xf9, 0xbd,\n\t0x6e, 0xae, 0x55, 0xfd, 0x6e, 0x81, 0x76, 0x9f,\n\t0xd4, 0x77, 0xf5, 0x7d, 0xfb, 0xff, 0xeb, 0xfe,\n\t0xbe, 0x5f, 0x46, 0x5b, 0xe9, 0x5f, 0x50, 0x18,\n\t0x02, 0xfa, 0xf7, 0x9d, 0x15, 0x97, 0x05, 0x0f,\n\t// Entry 640 - 67F\n\t0x75, 0xc4, 0x7d, 0x81, 0x92, 0xf5, 0x57, 0x6c,\n\t0xff, 0xe4, 0xef, 0x6f, 0xff, 0xfc, 0xdd, 0xde,\n\t0xfc, 0xfd, 0x76, 0x5f, 0x7a, 0x3f, 0x00, 0x98,\n\t0x02, 0xfb, 0xa3, 0xef, 0xf3, 0xd6, 0xf2, 0xff,\n\t0xb9, 0xda, 0x7d, 0xd0, 0x3e, 0x15, 0x7b, 0xb4,\n\t0xf5, 0x3e, 0xff, 0xff, 0xf1, 0xf7, 0xff, 0xe7,\n\t0x5f, 0xff, 0xff, 0x9e, 0xdf, 0xf6, 0xd7, 0xb9,\n\t0xef, 0x27, 0x80, 0xbb, 0xc5, 0xff, 0xff, 0xe3,\n\t// Entry 680 - 6BF\n\t0x97, 0x9d, 0xbf, 0x9f, 0xf7, 0xc7, 0xfd, 0x37,\n\t0xce, 0x7f, 0x44, 0x1d, 0x73, 0x7f, 0xf8, 0xda,\n\t0x5d, 0xce, 0x7d, 0x06, 0xb9, 0xea, 0x79, 0xa0,\n\t0x1a, 0x20, 0x00, 0x30, 0x02, 0x04, 0x24, 0x08,\n\t0x04, 0x00, 0x00, 0x40, 0xd4, 0x02, 0x04, 0x00,\n\t0x00, 0x04, 0x00, 0x04, 0x00, 0x20, 0x09, 0x06,\n\t0x50, 0x00, 0x08, 0x00, 0x00, 0x00, 0x24, 0x00,\n\t0x04, 0x00, 0x10, 0xdc, 0x58, 0xd7, 0x0d, 0x0f,\n\t// Entry 6C0 - 6FF\n\t0x54, 0x4d, 0xf1, 0x16, 0x44, 0xd5, 0x42, 0x08,\n\t0x40, 0x02, 0x00, 0x40, 0x00, 0x08, 0x00, 0x00,\n\t0x00, 0xdc, 0xfb, 0xcb, 0x0e, 0x58, 0x48, 0x41,\n\t0x24, 0x20, 0x04, 0x00, 0x30, 0x12, 0x40, 0x00,\n\t0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x01, 0x00, 0x00, 0x00, 0x80, 0x10, 0x10, 0xab,\n\t0x6d, 0x93, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x80, 0x80, 0x25, 0x00, 0x00,\n\t// Entry 700 - 73F\n\t0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00,\n\t0x80, 0x86, 0xc2, 0x00, 0x00, 0x01, 0x00, 0x01,\n\t0xff, 0x18, 0x02, 0x00, 0x02, 0xf0, 0xfd, 0x79,\n\t0x3b, 0x00, 0x25, 0x00, 0x00, 0x00, 0x02, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00,\n\t0x03, 0x00, 0x09, 0x20, 0x00, 0x00, 0x01, 0x00,\n\t0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t// Entry 740 - 77F\n\t0x00, 0x00, 0x00, 0xef, 0xd5, 0xfd, 0xcf, 0x7e,\n\t0xb0, 0x11, 0x00, 0x00, 0x00, 0x92, 0x01, 0x46,\n\t0xcd, 0xf9, 0x5c, 0x00, 0x01, 0x00, 0x30, 0x04,\n\t0x04, 0x55, 0x00, 0x01, 0x04, 0xf4, 0x3f, 0x4a,\n\t0x01, 0x00, 0x00, 0xb0, 0x80, 0x20, 0x55, 0x75,\n\t0x97, 0x7c, 0xdf, 0x31, 0xcc, 0x68, 0xd1, 0x03,\n\t0xd5, 0x57, 0x27, 0x14, 0x01, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x2c, 0xf7, 0xcb, 0x1f, 0x14, 0x60,\n\t// Entry 780 - 7BF\n\t0x83, 0x68, 0x01, 0x10, 0x8b, 0x38, 0x8a, 0x01,\n\t0x00, 0x00, 0x20, 0x00, 0x24, 0x44, 0x00, 0x00,\n\t0x10, 0x03, 0x31, 0x02, 0x01, 0x00, 0x00, 0xf0,\n\t0xf5, 0xff, 0xd5, 0x97, 0xbc, 0x70, 0xd6, 0x78,\n\t0x78, 0x15, 0x50, 0x05, 0xa4, 0x84, 0xa9, 0x41,\n\t0x00, 0x00, 0x00, 0x6b, 0x39, 0x52, 0x74, 0x40,\n\t0xe8, 0x30, 0x90, 0x6a, 0x92, 0x00, 0x00, 0x02,\n\t0xff, 0xef, 0xff, 0x4b, 0x85, 0x53, 0xf4, 0xed,\n\t// Entry 7C0 - 7FF\n\t0xdd, 0xbf, 0xf2, 0x5d, 0xc7, 0x0c, 0xd5, 0x42,\n\t0xfc, 0xff, 0xf7, 0x1f, 0x00, 0x80, 0x40, 0x56,\n\t0xcc, 0x16, 0x9e, 0xea, 0x35, 0x7d, 0xef, 0xff,\n\t0xbd, 0xa4, 0xaf, 0x01, 0x44, 0x18, 0x01, 0x4d,\n\t0x4e, 0x4a, 0x08, 0x50, 0x28, 0x30, 0xe0, 0x80,\n\t0x10, 0x20, 0x24, 0x00, 0xff, 0x2f, 0xd3, 0x60,\n\t0xfe, 0x01, 0x02, 0x88, 0x2a, 0x40, 0x16, 0x01,\n\t0x01, 0x15, 0x2b, 0x3c, 0x01, 0x00, 0x00, 0x10,\n\t// Entry 800 - 83F\n\t0x90, 0x49, 0x41, 0x02, 0x02, 0x01, 0xe1, 0xbf,\n\t0xbf, 0x03, 0x00, 0x00, 0x10, 0xdc, 0xa3, 0xd1,\n\t0x40, 0x9c, 0x44, 0xdf, 0xf5, 0x8f, 0x66, 0xb3,\n\t0x55, 0x20, 0xd4, 0xc1, 0xd8, 0x30, 0x3d, 0x80,\n\t0x00, 0x00, 0x00, 0x04, 0xd4, 0x11, 0xc5, 0x84,\n\t0x2f, 0x50, 0x00, 0x22, 0x50, 0x6e, 0xbd, 0x93,\n\t0x07, 0x00, 0x20, 0x10, 0x84, 0xb2, 0x45, 0x10,\n\t0x06, 0x44, 0x00, 0x00, 0x12, 0x02, 0x11, 0x00,\n\t// Entry 840 - 87F\n\t0xf0, 0xfb, 0xfd, 0x7f, 0x05, 0x00, 0x16, 0x89,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x03,\n\t0x00, 0x00, 0x00, 0x00, 0x03, 0x30, 0x02, 0x28,\n\t0x84, 0x00, 0x21, 0xc0, 0x23, 0x24, 0x00, 0x00,\n\t0x00, 0xcb, 0xe4, 0x3a, 0x46, 0x88, 0x54, 0xf1,\n\t0xef, 0xff, 0x7f, 0x12, 0x01, 0x01, 0x84, 0x50,\n\t0x07, 0xfc, 0xff, 0xff, 0x0f, 0x01, 0x00, 0x40,\n\t0x10, 0x38, 0x01, 0x01, 0x1c, 0x12, 0x40, 0xe1,\n\t// Entry 880 - 8BF\n\t0x76, 0x16, 0x08, 0x03, 0x10, 0x00, 0x00, 0x00,\n\t0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x24,\n\t0x0a, 0x00, 0x80, 0x00, 0x00,\n}\n\n// altLangISO3 holds an alphabetically sorted list of 3-letter language code alternatives\n// to 2-letter language codes that cannot be derived using the method described above.\n// Each 3-letter code is followed by its 1-byte langID.\nconst altLangISO3 tag.Index = \"---\\x00cor\\x00hbs\\x01heb\\x02kin\\x03spa\\x04yid\\x05\\xff\\xff\\xff\\xff\"\n\n// altLangIndex is used to convert indexes in altLangISO3 to langIDs.\n// Size: 12 bytes, 6 elements\nvar altLangIndex = [6]uint16{\n\t0x0281, 0x0407, 0x01fb, 0x03e5, 0x013e, 0x0208,\n}\n\n// AliasMap maps langIDs to their suggested replacements.\n// Size: 772 bytes, 193 elements\nvar AliasMap = [193]FromTo{\n\t0:   {From: 0x82, To: 0x88},\n\t1:   {From: 0x187, To: 0x1ae},\n\t2:   {From: 0x1f3, To: 0x1e1},\n\t3:   {From: 0x1fb, To: 0x1bc},\n\t4:   {From: 0x208, To: 0x512},\n\t5:   {From: 0x20f, To: 0x20e},\n\t6:   {From: 0x310, To: 0x3dc},\n\t7:   {From: 0x347, To: 0x36f},\n\t8:   {From: 0x407, To: 0x432},\n\t9:   {From: 0x47a, To: 0x153},\n\t10:  {From: 0x490, To: 0x451},\n\t11:  {From: 0x4a2, To: 0x21},\n\t12:  {From: 0x53e, To: 0x544},\n\t13:  {From: 0x58f, To: 0x12d},\n\t14:  {From: 0x62b, To: 0x34},\n\t15:  {From: 0x62f, To: 0x14},\n\t16:  {From: 0x630, To: 0x1eb1},\n\t17:  {From: 0x651, To: 0x431},\n\t18:  {From: 0x662, To: 0x431},\n\t19:  {From: 0x6ed, To: 0x3a},\n\t20:  {From: 0x6f8, To: 0x1d7},\n\t21:  {From: 0x709, To: 0x3625},\n\t22:  {From: 0x73e, To: 0x21a1},\n\t23:  {From: 0x7b3, To: 0x56},\n\t24:  {From: 0x7b9, To: 0x299b},\n\t25:  {From: 0x7c5, To: 0x58},\n\t26:  {From: 0x7e6, To: 0x145},\n\t27:  {From: 0x80c, To: 0x5a},\n\t28:  {From: 0x815, To: 0x8d},\n\t29:  {From: 0x87e, To: 0x810},\n\t30:  {From: 0x8a8, To: 0x8b7},\n\t31:  {From: 0x8c3, To: 0xee3},\n\t32:  {From: 0x8fa, To: 0x1dc},\n\t33:  {From: 0x9ef, To: 0x331},\n\t34:  {From: 0xa36, To: 0x2c5},\n\t35:  {From: 0xa3d, To: 0xbf},\n\t36:  {From: 0xabe, To: 0x3322},\n\t37:  {From: 0xb38, To: 0x529},\n\t38:  {From: 0xb75, To: 0x265a},\n\t39:  {From: 0xb7e, To: 0xbc3},\n\t40:  {From: 0xb9b, To: 0x44e},\n\t41:  {From: 0xbbc, To: 0x4229},\n\t42:  {From: 0xbbf, To: 0x529},\n\t43:  {From: 0xbfe, To: 0x2da7},\n\t44:  {From: 0xc2e, To: 0x3181},\n\t45:  {From: 0xcb9, To: 0xf3},\n\t46:  {From: 0xd08, To: 0xfa},\n\t47:  {From: 0xdc8, To: 0x11a},\n\t48:  {From: 0xdd7, To: 0x32d},\n\t49:  {From: 0xdf8, To: 0xdfb},\n\t50:  {From: 0xdfe, To: 0x531},\n\t51:  {From: 0xe01, To: 0xdf3},\n\t52:  {From: 0xedf, To: 0x205a},\n\t53:  {From: 0xee9, To: 0x222e},\n\t54:  {From: 0xeee, To: 0x2e9a},\n\t55:  {From: 0xf39, To: 0x367},\n\t56:  {From: 0x10d0, To: 0x140},\n\t57:  {From: 0x1104, To: 0x2d0},\n\t58:  {From: 0x11a0, To: 0x1ec},\n\t59:  {From: 0x1279, To: 0x21},\n\t60:  {From: 0x1424, To: 0x15e},\n\t61:  {From: 0x1470, To: 0x14e},\n\t62:  {From: 0x151f, To: 0xd9b},\n\t63:  {From: 0x1523, To: 0x390},\n\t64:  {From: 0x1532, To: 0x19f},\n\t65:  {From: 0x1580, To: 0x210},\n\t66:  {From: 0x1583, To: 0x10d},\n\t67:  {From: 0x15a3, To: 0x3caf},\n\t68:  {From: 0x1630, To: 0x222e},\n\t69:  {From: 0x166a, To: 0x19b},\n\t70:  {From: 0x16c8, To: 0x136},\n\t71:  {From: 0x1700, To: 0x29f8},\n\t72:  {From: 0x1718, To: 0x194},\n\t73:  {From: 0x1727, To: 0xf3f},\n\t74:  {From: 0x177a, To: 0x178},\n\t75:  {From: 0x1809, To: 0x17b6},\n\t76:  {From: 0x1816, To: 0x18f3},\n\t77:  {From: 0x188a, To: 0x436},\n\t78:  {From: 0x1979, To: 0x1d01},\n\t79:  {From: 0x1a74, To: 0x2bb0},\n\t80:  {From: 0x1a8a, To: 0x1f8},\n\t81:  {From: 0x1b5a, To: 0x1fa},\n\t82:  {From: 0x1b86, To: 0x1515},\n\t83:  {From: 0x1d64, To: 0x2c9b},\n\t84:  {From: 0x2038, To: 0x37b1},\n\t85:  {From: 0x203d, To: 0x20dd},\n\t86:  {From: 0x2042, To: 0x2e00},\n\t87:  {From: 0x205a, To: 0x30b},\n\t88:  {From: 0x20e3, To: 0x274},\n\t89:  {From: 0x20ee, To: 0x263},\n\t90:  {From: 0x20f2, To: 0x22d},\n\t91:  {From: 0x20f9, To: 0x256},\n\t92:  {From: 0x210f, To: 0x21eb},\n\t93:  {From: 0x2135, To: 0x27d},\n\t94:  {From: 0x2160, To: 0x913},\n\t95:  {From: 0x2199, To: 0x121},\n\t96:  {From: 0x21ce, To: 0x1561},\n\t97:  {From: 0x21e6, To: 0x504},\n\t98:  {From: 0x21f4, To: 0x49f},\n\t99:  {From: 0x21fb, To: 0x269},\n\t100: {From: 0x222d, To: 0x121},\n\t101: {From: 0x2237, To: 0x121},\n\t102: {From: 0x2248, To: 0x217d},\n\t103: {From: 0x2262, To: 0x92a},\n\t104: {From: 0x2316, To: 0x3226},\n\t105: {From: 0x236a, To: 0x2835},\n\t106: {From: 0x2382, To: 0x3365},\n\t107: {From: 0x2472, To: 0x2c7},\n\t108: {From: 0x24e4, To: 0x2ff},\n\t109: {From: 0x24f0, To: 0x2fa},\n\t110: {From: 0x24fa, To: 0x31f},\n\t111: {From: 0x2550, To: 0xb5b},\n\t112: {From: 0x25a9, To: 0xe2},\n\t113: {From: 0x263e, To: 0x2d0},\n\t114: {From: 0x26c9, To: 0x26b4},\n\t115: {From: 0x26f9, To: 0x3c8},\n\t116: {From: 0x2727, To: 0x3caf},\n\t117: {From: 0x2755, To: 0x6a4},\n\t118: {From: 0x2765, To: 0x26b4},\n\t119: {From: 0x2789, To: 0x4358},\n\t120: {From: 0x27c9, To: 0x2001},\n\t121: {From: 0x28ea, To: 0x27b1},\n\t122: {From: 0x28ef, To: 0x2837},\n\t123: {From: 0x28fe, To: 0xaa5},\n\t124: {From: 0x2914, To: 0x351},\n\t125: {From: 0x2986, To: 0x2da7},\n\t126: {From: 0x29f0, To: 0x96b},\n\t127: {From: 0x2b1a, To: 0x38d},\n\t128: {From: 0x2bfc, To: 0x395},\n\t129: {From: 0x2c3f, To: 0x3caf},\n\t130: {From: 0x2ce1, To: 0x2201},\n\t131: {From: 0x2cfc, To: 0x3be},\n\t132: {From: 0x2d13, To: 0x597},\n\t133: {From: 0x2d47, To: 0x148},\n\t134: {From: 0x2d48, To: 0x148},\n\t135: {From: 0x2dff, To: 0x2f1},\n\t136: {From: 0x2e08, To: 0x19cc},\n\t137: {From: 0x2e10, To: 0xc45},\n\t138: {From: 0x2e1a, To: 0x2d95},\n\t139: {From: 0x2e21, To: 0x292},\n\t140: {From: 0x2e54, To: 0x7d},\n\t141: {From: 0x2e65, To: 0x2282},\n\t142: {From: 0x2e97, To: 0x1a4},\n\t143: {From: 0x2ea0, To: 0x2e9b},\n\t144: {From: 0x2eef, To: 0x2ed7},\n\t145: {From: 0x3193, To: 0x3c4},\n\t146: {From: 0x3366, To: 0x338e},\n\t147: {From: 0x342a, To: 0x3dc},\n\t148: {From: 0x34ee, To: 0x18d0},\n\t149: {From: 0x35c8, To: 0x2c9b},\n\t150: {From: 0x35e6, To: 0x412},\n\t151: {From: 0x35f5, To: 0x24b},\n\t152: {From: 0x360d, To: 0x1dc},\n\t153: {From: 0x3658, To: 0x246},\n\t154: {From: 0x3676, To: 0x3f4},\n\t155: {From: 0x36fd, To: 0x445},\n\t156: {From: 0x3747, To: 0x3b42},\n\t157: {From: 0x37c0, To: 0x121},\n\t158: {From: 0x3816, To: 0x38f2},\n\t159: {From: 0x382a, To: 0x2b48},\n\t160: {From: 0x382b, To: 0x2c9b},\n\t161: {From: 0x382f, To: 0xa9},\n\t162: {From: 0x3832, To: 0x3228},\n\t163: {From: 0x386c, To: 0x39a6},\n\t164: {From: 0x3892, To: 0x3fc0},\n\t165: {From: 0x38a0, To: 0x45f},\n\t166: {From: 0x38a5, To: 0x39d7},\n\t167: {From: 0x38b4, To: 0x1fa4},\n\t168: {From: 0x38b5, To: 0x2e9a},\n\t169: {From: 0x38fa, To: 0x38f1},\n\t170: {From: 0x395c, To: 0x47e},\n\t171: {From: 0x3b4e, To: 0xd91},\n\t172: {From: 0x3b78, To: 0x137},\n\t173: {From: 0x3c99, To: 0x4bc},\n\t174: {From: 0x3fbd, To: 0x100},\n\t175: {From: 0x4208, To: 0xa91},\n\t176: {From: 0x42be, To: 0x573},\n\t177: {From: 0x42f9, To: 0x3f60},\n\t178: {From: 0x4378, To: 0x25a},\n\t179: {From: 0x43b8, To: 0xe6c},\n\t180: {From: 0x43cd, To: 0x10f},\n\t181: {From: 0x43d4, To: 0x4848},\n\t182: {From: 0x44af, To: 0x3322},\n\t183: {From: 0x44e3, To: 0x512},\n\t184: {From: 0x45ca, To: 0x2409},\n\t185: {From: 0x45dd, To: 0x26dc},\n\t186: {From: 0x4610, To: 0x48ae},\n\t187: {From: 0x46ae, To: 0x46a0},\n\t188: {From: 0x473e, To: 0x4745},\n\t189: {From: 0x4817, To: 0x3503},\n\t190: {From: 0x483b, To: 0x208b},\n\t191: {From: 0x4916, To: 0x31f},\n\t192: {From: 0x49a7, To: 0x523},\n}\n\n// Size: 193 bytes, 193 elements\nvar AliasTypes = [193]AliasType{\n\t// Entry 0 - 3F\n\t1, 0, 0, 0, 0, 0, 0, 1, 2, 2, 0, 1, 0, 0, 0, 0,\n\t1, 2, 1, 1, 2, 0, 0, 1, 0, 1, 2, 1, 1, 0, 0, 0,\n\t0, 2, 1, 1, 0, 2, 0, 0, 1, 0, 1, 0, 0, 1, 2, 1,\n\t1, 1, 1, 0, 0, 0, 0, 2, 1, 1, 1, 1, 2, 1, 0, 1,\n\t// Entry 40 - 7F\n\t1, 2, 2, 0, 0, 1, 2, 0, 1, 0, 1, 1, 1, 1, 0, 0,\n\t2, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0,\n\t0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 2, 2, 2, 0,\n\t1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,\n\t// Entry 80 - BF\n\t1, 0, 0, 1, 0, 2, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0,\n\t0, 1, 1, 2, 0, 0, 2, 0, 0, 1, 1, 1, 0, 0, 0, 0,\n\t0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 2, 0,\n\t0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1,\n\t// Entry C0 - FF\n\t1,\n}\n\nconst (\n\t_Latn = 91\n\t_Hani = 57\n\t_Hans = 59\n\t_Hant = 60\n\t_Qaaa = 149\n\t_Qaai = 157\n\t_Qabx = 198\n\t_Zinh = 255\n\t_Zyyy = 260\n\t_Zzzz = 261\n)\n\n// script is an alphabetically sorted list of ISO 15924 codes. The index\n// of the script in the string, divided by 4, is the internal scriptID.\nconst script tag.Index = \"\" + // Size: 1052 bytes\n\t\"----AdlmAfakAghbAhomArabAranArmiArmnAvstBaliBamuBassBatkBengBhksBlisBopo\" +\n\t\"BrahBraiBugiBuhdCakmCansCariChamCherChrsCirtCoptCpmnCprtCyrlCyrsDevaDiak\" +\n\t\"DogrDsrtDuplEgydEgyhEgypElbaElymEthiGeokGeorGlagGongGonmGothGranGrekGujr\" +\n\t\"GuruHanbHangHaniHanoHansHantHatrHebrHiraHluwHmngHmnpHrktHungIndsItalJamo\" +\n\t\"JavaJpanJurcKaliKanaKawiKharKhmrKhojKitlKitsKndaKoreKpelKthiLanaLaooLatf\" +\n\t\"LatgLatnLekeLepcLimbLinaLinbLisuLomaLyciLydiMahjMakaMandManiMarcMayaMedf\" +\n\t\"MendMercMeroMlymModiMongMoonMrooMteiMultMymrNagmNandNarbNbatNewaNkdbNkgb\" +\n\t\"NkooNshuOgamOlckOrkhOryaOsgeOsmaOugrPalmPaucPcunPelmPermPhagPhliPhlpPhlv\" +\n\t\"PhnxPiqdPlrdPrtiPsinQaaaQaabQaacQaadQaaeQaafQaagQaahQaaiQaajQaakQaalQaam\" +\n\t\"QaanQaaoQaapQaaqQaarQaasQaatQaauQaavQaawQaaxQaayQaazQabaQabbQabcQabdQabe\" +\n\t\"QabfQabgQabhQabiQabjQabkQablQabmQabnQaboQabpQabqQabrQabsQabtQabuQabvQabw\" +\n\t\"QabxRanjRjngRohgRoroRunrSamrSaraSarbSaurSgnwShawShrdShuiSiddSindSinhSogd\" +\n\t\"SogoSoraSoyoSundSunuSyloSyrcSyreSyrjSyrnTagbTakrTaleTaluTamlTangTavtTelu\" +\n\t\"TengTfngTglgThaaThaiTibtTirhTnsaTotoUgarVaiiVispVithWaraWchoWoleXpeoXsux\" +\n\t\"YeziYiiiZanbZinhZmthZsyeZsymZxxxZyyyZzzz\\xff\\xff\\xff\\xff\"\n\n// suppressScript is an index from langID to the dominant script for that language,\n// if it exists.  If a script is given, it should be suppressed from the language tag.\n// Size: 1330 bytes, 1330 elements\nvar suppressScript = [1330]uint8{\n\t// Entry 0 - 3F\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t// Entry 40 - 7F\n\t0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,\n\t// Entry 80 - BF\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t// Entry C0 - FF\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t// Entry 100 - 13F\n\t0x5b, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0xed, 0x00, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00,\n\t0x00, 0x5b, 0x00, 0x00, 0x5b, 0x00, 0x5b, 0x00,\n\t// Entry 140 - 17F\n\t0x5b, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00,\n\t0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00,\n\t0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00,\n\t0x00, 0x5b, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x5b, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t// Entry 180 - 1BF\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x5b, 0x35, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x22, 0x00,\n\t// Entry 1C0 - 1FF\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x5b, 0x5b, 0x00, 0x5b, 0x5b, 0x00, 0x08,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00,\n\t0x5b, 0x5b, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00,\n\t// Entry 200 - 23F\n\t0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t// Entry 240 - 27F\n\t0x00, 0x00, 0x20, 0x00, 0x00, 0x5b, 0x00, 0x00,\n\t0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x53, 0x00, 0x00, 0x54, 0x00, 0x22, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t// Entry 280 - 2BF\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00,\n\t0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t// Entry 2C0 - 2FF\n\t0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,\n\t// Entry 300 - 33F\n\t0x00, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x5b,\n\t0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00,\n\t// Entry 340 - 37F\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00,\n\t0x5b, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b,\n\t0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x5b,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x5b, 0x00,\n\t0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t// Entry 380 - 3BF\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x5b, 0x00, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00,\n\t// Entry 3C0 - 3FF\n\t0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00,\n\t0x00, 0x5b, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x20, 0x00, 0x00, 0x5b, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t// Entry 400 - 43F\n\t0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00,\n\t0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b,\n\t0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00,\n\t// Entry 440 - 47F\n\t0x00, 0x00, 0x00, 0x00, 0x5b, 0x5b, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0xe6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0xe9, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0xee, 0x00, 0x00, 0x00, 0x2c,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b,\n\t0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00,\n\t// Entry 480 - 4BF\n\t0x5b, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00,\n\t0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t// Entry 4C0 - 4FF\n\t0x5b, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t// Entry 500 - 53F\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b,\n\t0x00, 0x00,\n}\n\nconst (\n\t_001 = 1\n\t_419 = 31\n\t_BR  = 65\n\t_CA  = 73\n\t_ES  = 111\n\t_GB  = 124\n\t_MD  = 189\n\t_PT  = 239\n\t_UK  = 307\n\t_US  = 310\n\t_ZZ  = 358\n\t_XA  = 324\n\t_XC  = 326\n\t_XK  = 334\n)\n\n// isoRegionOffset needs to be added to the index of regionISO to obtain the regionID\n// for 2-letter ISO codes. (The first isoRegionOffset regionIDs are reserved for\n// the UN.M49 codes used for groups.)\nconst isoRegionOffset = 32\n\n// regionTypes defines the status of a region for various standards.\n// Size: 359 bytes, 359 elements\nvar regionTypes = [359]uint8{\n\t// Entry 0 - 3F\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x05, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,\n\t0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,\n\t0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,\n\t0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,\n\t// Entry 40 - 7F\n\t0x06, 0x06, 0x06, 0x06, 0x04, 0x06, 0x06, 0x06,\n\t0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,\n\t0x06, 0x06, 0x06, 0x06, 0x06, 0x04, 0x04, 0x06,\n\t0x04, 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,\n\t0x04, 0x06, 0x04, 0x06, 0x06, 0x06, 0x06, 0x00,\n\t0x06, 0x04, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,\n\t0x06, 0x06, 0x04, 0x06, 0x06, 0x06, 0x06, 0x06,\n\t0x00, 0x06, 0x04, 0x06, 0x06, 0x06, 0x06, 0x06,\n\t// Entry 80 - BF\n\t0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,\n\t0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,\n\t0x06, 0x06, 0x06, 0x06, 0x00, 0x04, 0x06, 0x06,\n\t0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,\n\t0x06, 0x06, 0x06, 0x06, 0x00, 0x06, 0x06, 0x06,\n\t0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,\n\t0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,\n\t0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,\n\t// Entry C0 - FF\n\t0x06, 0x06, 0x00, 0x06, 0x06, 0x06, 0x06, 0x06,\n\t0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,\n\t0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,\n\t0x00, 0x06, 0x06, 0x06, 0x06, 0x00, 0x06, 0x04,\n\t0x06, 0x06, 0x06, 0x06, 0x00, 0x06, 0x06, 0x06,\n\t0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,\n\t0x00, 0x06, 0x06, 0x00, 0x06, 0x05, 0x05, 0x05,\n\t0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,\n\t// Entry 100 - 13F\n\t0x05, 0x05, 0x05, 0x06, 0x00, 0x06, 0x06, 0x06,\n\t0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,\n\t0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,\n\t0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x04,\n\t0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,\n\t0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,\n\t0x06, 0x06, 0x06, 0x02, 0x06, 0x04, 0x06, 0x06,\n\t0x06, 0x06, 0x06, 0x00, 0x06, 0x06, 0x06, 0x06,\n\t// Entry 140 - 17F\n\t0x06, 0x06, 0x00, 0x06, 0x05, 0x05, 0x05, 0x05,\n\t0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,\n\t0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,\n\t0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x04, 0x06,\n\t0x06, 0x04, 0x06, 0x06, 0x04, 0x06, 0x05,\n}\n\n// regionISO holds a list of alphabetically sorted 2-letter ISO region codes.\n// Each 2-letter codes is followed by two bytes with the following meaning:\n//   - [A-Z}{2}: the first letter of the 2-letter code plus these two\n//     letters form the 3-letter ISO code.\n//   - 0, n:     index into altRegionISO3.\nconst regionISO tag.Index = \"\" + // Size: 1312 bytes\n\t\"AAAAACSCADNDAEREAFFGAGTGAIIAALLBAMRMANNTAOGOAQTAARRGASSMATUTAUUSAWBWAXLA\" +\n\t\"AZZEBAIHBBRBBDGDBEELBFFABGGRBHHRBIDIBJENBLLMBMMUBNRNBOOLBQESBRRABSHSBTTN\" +\n\t\"BUURBVVTBWWABYLRBZLZCAANCCCKCDODCFAFCGOGCHHECIIVCKOKCLHLCMMRCNHNCOOLCPPT\" +\n\t\"CQ  CRRICS\\x00\\x00CTTECUUBCVPVCWUWCXXRCYYPCZZEDDDRDEEUDGGADJJIDKNKDMMADO\" +\n\t\"OMDYHYDZZAEA  ECCUEESTEGGYEHSHERRIESSPETTHEU\\x00\\x03EZ  FIINFJJIFKLKFMSM\" +\n\t\"FOROFQ\\x00\\x18FRRAFXXXGAABGBBRGDRDGEEOGFUFGGGYGHHAGIIBGLRLGMMBGNINGPLPGQ\" +\n\t\"NQGRRCGS\\x00\\x06GTTMGUUMGWNBGYUYHKKGHMMDHNNDHRRVHTTIHUUNHVVOIC  IDDNIERL\" +\n\t\"ILSRIMMNINNDIOOTIQRQIRRNISSLITTAJEEYJMAMJOORJPPNJTTNKEENKGGZKHHMKIIRKM\" +\n\t\"\\x00\\x09KNNAKP\\x00\\x0cKRORKWWTKY\\x00\\x0fKZAZLAAOLBBNLCCALIIELKKALRBRLSSO\" +\n\t\"LTTULUUXLVVALYBYMAARMCCOMDDAMENEMFAFMGDGMHHLMIIDMKKDMLLIMMMRMNNGMOACMPNP\" +\n\t\"MQTQMRRTMSSRMTLTMUUSMVDVMWWIMXEXMYYSMZOZNAAMNCCLNEERNFFKNGGANHHBNIICNLLD\" +\n\t\"NOORNPPLNQ\\x00\\x1eNRRUNTTZNUIUNZZLOMMNPAANPCCIPEERPFYFPGNGPHHLPKAKPLOLPM\" +\n\t\"\\x00\\x12PNCNPRRIPSSEPTRTPUUSPWLWPYRYPZCZQAATQMMMQNNNQOOOQPPPQQQQQRRRQSSS\" +\n\t\"QTTTQU\\x00\\x03QVVVQWWWQXXXQYYYQZZZREEURHHOROOURS\\x00\\x15RUUSRWWASAAUSBLB\" +\n\t\"SCYCSDDNSEWESGGPSHHNSIVNSJJMSKVKSLLESMMRSNENSOOMSRURSSSDSTTPSUUNSVLVSXXM\" +\n\t\"SYYRSZWZTAAATCCATDCDTF\\x00\\x18TGGOTHHATJJKTKKLTLLSTMKMTNUNTOONTPMPTRURTT\" +\n\t\"TOTVUVTWWNTZZAUAKRUGGAUK  UMMIUN  USSAUYRYUZZBVAATVCCTVDDRVEENVGGBVIIRVN\" +\n\t\"NMVUUTWFLFWKAKWSSMXAAAXBBBXCCCXDDDXEEEXFFFXGGGXHHHXIIIXJJJXKKKXLLLXMMMXN\" +\n\t\"NNXOOOXPPPXQQQXRRRXSSSXTTTXUUUXVVVXWWWXXXXXYYYXZZZYDMDYEEMYT\\x00\\x1bYUUG\" +\n\t\"ZAAFZMMBZRARZWWEZZZZ\\xff\\xff\\xff\\xff\"\n\n// altRegionISO3 holds a list of 3-letter region codes that cannot be\n// mapped to 2-letter codes using the default algorithm. This is a short list.\nconst altRegionISO3 string = \"SCGQUUSGSCOMPRKCYMSPMSRBATFMYTATN\"\n\n// altRegionIDs holds a list of regionIDs the positions of which match those\n// of the 3-letter ISO codes in altRegionISO3.\n// Size: 22 bytes, 11 elements\nvar altRegionIDs = [11]uint16{\n\t0x0058, 0x0071, 0x0089, 0x00a9, 0x00ab, 0x00ae, 0x00eb, 0x0106,\n\t0x0122, 0x0160, 0x00dd,\n}\n\n// Size: 80 bytes, 20 elements\nvar regionOldMap = [20]FromTo{\n\t0:  {From: 0x44, To: 0xc5},\n\t1:  {From: 0x59, To: 0xa8},\n\t2:  {From: 0x60, To: 0x61},\n\t3:  {From: 0x67, To: 0x3b},\n\t4:  {From: 0x7a, To: 0x79},\n\t5:  {From: 0x94, To: 0x37},\n\t6:  {From: 0xa4, To: 0x134},\n\t7:  {From: 0xc2, To: 0x134},\n\t8:  {From: 0xd8, To: 0x140},\n\t9:  {From: 0xdd, To: 0x2b},\n\t10: {From: 0xf0, To: 0x134},\n\t11: {From: 0xf3, To: 0xe3},\n\t12: {From: 0xfd, To: 0x71},\n\t13: {From: 0x104, To: 0x165},\n\t14: {From: 0x12b, To: 0x127},\n\t15: {From: 0x133, To: 0x7c},\n\t16: {From: 0x13b, To: 0x13f},\n\t17: {From: 0x142, To: 0x134},\n\t18: {From: 0x15e, To: 0x15f},\n\t19: {From: 0x164, To: 0x4b},\n}\n\n// m49 maps regionIDs to UN.M49 codes. The first isoRegionOffset entries are\n// codes indicating collections of regions.\n// Size: 718 bytes, 359 elements\nvar m49 = [359]int16{\n\t// Entry 0 - 3F\n\t0, 1, 2, 3, 5, 9, 11, 13,\n\t14, 15, 17, 18, 19, 21, 29, 30,\n\t34, 35, 39, 53, 54, 57, 61, 142,\n\t143, 145, 150, 151, 154, 155, 202, 419,\n\t958, 0, 20, 784, 4, 28, 660, 8,\n\t51, 530, 24, 10, 32, 16, 40, 36,\n\t533, 248, 31, 70, 52, 50, 56, 854,\n\t100, 48, 108, 204, 652, 60, 96, 68,\n\t// Entry 40 - 7F\n\t535, 76, 44, 64, 104, 74, 72, 112,\n\t84, 124, 166, 180, 140, 178, 756, 384,\n\t184, 152, 120, 156, 170, 0, 0, 188,\n\t891, 296, 192, 132, 531, 162, 196, 203,\n\t278, 276, 0, 262, 208, 212, 214, 204,\n\t12, 0, 218, 233, 818, 732, 232, 724,\n\t231, 967, 0, 246, 242, 238, 583, 234,\n\t0, 250, 249, 266, 826, 308, 268, 254,\n\t// Entry 80 - BF\n\t831, 288, 292, 304, 270, 324, 312, 226,\n\t300, 239, 320, 316, 624, 328, 344, 334,\n\t340, 191, 332, 348, 854, 0, 360, 372,\n\t376, 833, 356, 86, 368, 364, 352, 380,\n\t832, 388, 400, 392, 581, 404, 417, 116,\n\t296, 174, 659, 408, 410, 414, 136, 398,\n\t418, 422, 662, 438, 144, 430, 426, 440,\n\t442, 428, 434, 504, 492, 498, 499, 663,\n\t// Entry C0 - FF\n\t450, 584, 581, 807, 466, 104, 496, 446,\n\t580, 474, 478, 500, 470, 480, 462, 454,\n\t484, 458, 508, 516, 540, 562, 574, 566,\n\t548, 558, 528, 578, 524, 10, 520, 536,\n\t570, 554, 512, 591, 0, 604, 258, 598,\n\t608, 586, 616, 666, 612, 630, 275, 620,\n\t581, 585, 600, 591, 634, 959, 960, 961,\n\t962, 963, 964, 965, 966, 967, 968, 969,\n\t// Entry 100 - 13F\n\t970, 971, 972, 638, 716, 642, 688, 643,\n\t646, 682, 90, 690, 729, 752, 702, 654,\n\t705, 744, 703, 694, 674, 686, 706, 740,\n\t728, 678, 810, 222, 534, 760, 748, 0,\n\t796, 148, 260, 768, 764, 762, 772, 626,\n\t795, 788, 776, 626, 792, 780, 798, 158,\n\t834, 804, 800, 826, 581, 0, 840, 858,\n\t860, 336, 670, 704, 862, 92, 850, 704,\n\t// Entry 140 - 17F\n\t548, 876, 581, 882, 973, 974, 975, 976,\n\t977, 978, 979, 980, 981, 982, 983, 984,\n\t985, 986, 987, 988, 989, 990, 991, 992,\n\t993, 994, 995, 996, 997, 998, 720, 887,\n\t175, 891, 710, 894, 180, 716, 999,\n}\n\n// m49Index gives indexes into fromM49 based on the three most significant bits\n// of a 10-bit UN.M49 code. To search an UN.M49 code in fromM49, search in\n//\n//\tfromM49[m49Index[msb39(code)]:m49Index[msb3(code)+1]]\n//\n// for an entry where the first 7 bits match the 7 lsb of the UN.M49 code.\n// The region code is stored in the 9 lsb of the indexed value.\n// Size: 18 bytes, 9 elements\nvar m49Index = [9]int16{\n\t0, 59, 108, 143, 181, 220, 259, 291,\n\t333,\n}\n\n// fromM49 contains entries to map UN.M49 codes to regions. See m49Index for details.\n// Size: 666 bytes, 333 elements\nvar fromM49 = [333]uint16{\n\t// Entry 0 - 3F\n\t0x0201, 0x0402, 0x0603, 0x0824, 0x0a04, 0x1027, 0x1205, 0x142b,\n\t0x1606, 0x1868, 0x1a07, 0x1c08, 0x1e09, 0x202d, 0x220a, 0x240b,\n\t0x260c, 0x2822, 0x2a0d, 0x302a, 0x3825, 0x3a0e, 0x3c0f, 0x3e32,\n\t0x402c, 0x4410, 0x4611, 0x482f, 0x4e12, 0x502e, 0x5842, 0x6039,\n\t0x6435, 0x6628, 0x6834, 0x6a13, 0x6c14, 0x7036, 0x7215, 0x783d,\n\t0x7a16, 0x8043, 0x883f, 0x8c33, 0x9046, 0x9445, 0x9841, 0xa848,\n\t0xac9b, 0xb50a, 0xb93d, 0xc03e, 0xc838, 0xd0c5, 0xd83a, 0xe047,\n\t0xe8a7, 0xf052, 0xf849, 0x085b, 0x10ae, 0x184c, 0x1c17, 0x1e18,\n\t// Entry 40 - 7F\n\t0x20b4, 0x2219, 0x2921, 0x2c1a, 0x2e1b, 0x3051, 0x341c, 0x361d,\n\t0x3853, 0x3d2f, 0x445d, 0x4c4a, 0x5454, 0x5ca9, 0x5f60, 0x644d,\n\t0x684b, 0x7050, 0x7857, 0x7e91, 0x805a, 0x885e, 0x941e, 0x965f,\n\t0x983b, 0xa064, 0xa865, 0xac66, 0xb46a, 0xbd1b, 0xc487, 0xcc70,\n\t0xce70, 0xd06e, 0xd26b, 0xd477, 0xdc75, 0xde89, 0xe474, 0xec73,\n\t0xf031, 0xf27a, 0xf479, 0xfc7f, 0x04e6, 0x0922, 0x0c63, 0x147b,\n\t0x187e, 0x1c84, 0x26ee, 0x2861, 0x2c60, 0x3061, 0x4081, 0x4882,\n\t0x50a8, 0x5888, 0x6083, 0x687d, 0x7086, 0x788b, 0x808a, 0x8885,\n\t// Entry 80 - BF\n\t0x908d, 0x9892, 0x9c8f, 0xa139, 0xa890, 0xb08e, 0xb893, 0xc09e,\n\t0xc89a, 0xd096, 0xd89d, 0xe09c, 0xe897, 0xf098, 0xf89f, 0x004f,\n\t0x08a1, 0x10a3, 0x1caf, 0x20a2, 0x28a5, 0x30ab, 0x34ac, 0x3cad,\n\t0x42a6, 0x44b0, 0x461f, 0x4cb1, 0x54b6, 0x58b9, 0x5cb5, 0x64ba,\n\t0x6cb3, 0x70b7, 0x74b8, 0x7cc7, 0x84c0, 0x8ccf, 0x94d1, 0x9cce,\n\t0xa4c4, 0xaccc, 0xb4c9, 0xbcca, 0xc0cd, 0xc8d0, 0xd8bc, 0xe0c6,\n\t0xe4bd, 0xe6be, 0xe8cb, 0xf0bb, 0xf8d2, 0x00e2, 0x08d3, 0x10de,\n\t0x18dc, 0x20da, 0x2429, 0x265c, 0x2a30, 0x2d1c, 0x2e40, 0x30df,\n\t// Entry C0 - FF\n\t0x38d4, 0x4940, 0x54e1, 0x5cd9, 0x64d5, 0x6cd7, 0x74e0, 0x7cd6,\n\t0x84db, 0x88c8, 0x8b34, 0x8e76, 0x90c1, 0x92f1, 0x94e9, 0x9ee3,\n\t0xace7, 0xb0f2, 0xb8e5, 0xc0e8, 0xc8ec, 0xd0ea, 0xd8ef, 0xe08c,\n\t0xe527, 0xeced, 0xf4f4, 0xfd03, 0x0505, 0x0707, 0x0d08, 0x183c,\n\t0x1d0f, 0x26aa, 0x2826, 0x2cb2, 0x2ebf, 0x34eb, 0x3d3a, 0x4514,\n\t0x4d19, 0x5509, 0x5d15, 0x6106, 0x650b, 0x6d13, 0x7d0e, 0x7f12,\n\t0x813f, 0x8310, 0x8516, 0x8d62, 0x9965, 0xa15e, 0xa86f, 0xb118,\n\t0xb30c, 0xb86d, 0xc10c, 0xc917, 0xd111, 0xd91e, 0xe10d, 0xe84e,\n\t// Entry 100 - 13F\n\t0xf11d, 0xf525, 0xf924, 0x0123, 0x0926, 0x112a, 0x192d, 0x2023,\n\t0x2929, 0x312c, 0x3728, 0x3920, 0x3d2e, 0x4132, 0x4931, 0x4ec3,\n\t0x551a, 0x646c, 0x747c, 0x7e80, 0x80a0, 0x8299, 0x8530, 0x9136,\n\t0xa53e, 0xac37, 0xb537, 0xb938, 0xbd3c, 0xd941, 0xe543, 0xed5f,\n\t0xef5f, 0xf658, 0xfd63, 0x7c20, 0x7ef5, 0x80f6, 0x82f7, 0x84f8,\n\t0x86f9, 0x88fa, 0x8afb, 0x8cfc, 0x8e71, 0x90fe, 0x92ff, 0x9500,\n\t0x9701, 0x9902, 0x9b44, 0x9d45, 0x9f46, 0xa147, 0xa348, 0xa549,\n\t0xa74a, 0xa94b, 0xab4c, 0xad4d, 0xaf4e, 0xb14f, 0xb350, 0xb551,\n\t// Entry 140 - 17F\n\t0xb752, 0xb953, 0xbb54, 0xbd55, 0xbf56, 0xc157, 0xc358, 0xc559,\n\t0xc75a, 0xc95b, 0xcb5c, 0xcd5d, 0xcf66,\n}\n\n// Size: 2128 bytes\nvar variantIndex = map[string]uint8{\n\t\"1606nict\": 0x0,\n\t\"1694acad\": 0x1,\n\t\"1901\":     0x2,\n\t\"1959acad\": 0x3,\n\t\"1994\":     0x67,\n\t\"1996\":     0x4,\n\t\"abl1943\":  0x5,\n\t\"akuapem\":  0x6,\n\t\"alalc97\":  0x69,\n\t\"aluku\":    0x7,\n\t\"ao1990\":   0x8,\n\t\"aranes\":   0x9,\n\t\"arevela\":  0xa,\n\t\"arevmda\":  0xb,\n\t\"arkaika\":  0xc,\n\t\"asante\":   0xd,\n\t\"auvern\":   0xe,\n\t\"baku1926\": 0xf,\n\t\"balanka\":  0x10,\n\t\"barla\":    0x11,\n\t\"basiceng\": 0x12,\n\t\"bauddha\":  0x13,\n\t\"bciav\":    0x14,\n\t\"bcizbl\":   0x15,\n\t\"biscayan\": 0x16,\n\t\"biske\":    0x62,\n\t\"bohoric\":  0x17,\n\t\"boont\":    0x18,\n\t\"bornholm\": 0x19,\n\t\"cisaup\":   0x1a,\n\t\"colb1945\": 0x1b,\n\t\"cornu\":    0x1c,\n\t\"creiss\":   0x1d,\n\t\"dajnko\":   0x1e,\n\t\"ekavsk\":   0x1f,\n\t\"emodeng\":  0x20,\n\t\"fonipa\":   0x6a,\n\t\"fonkirsh\": 0x6b,\n\t\"fonnapa\":  0x6c,\n\t\"fonupa\":   0x6d,\n\t\"fonxsamp\": 0x6e,\n\t\"gallo\":    0x21,\n\t\"gascon\":   0x22,\n\t\"grclass\":  0x23,\n\t\"grital\":   0x24,\n\t\"grmistr\":  0x25,\n\t\"hepburn\":  0x26,\n\t\"heploc\":   0x68,\n\t\"hognorsk\": 0x27,\n\t\"hsistemo\": 0x28,\n\t\"ijekavsk\": 0x29,\n\t\"itihasa\":  0x2a,\n\t\"ivanchov\": 0x2b,\n\t\"jauer\":    0x2c,\n\t\"jyutping\": 0x2d,\n\t\"kkcor\":    0x2e,\n\t\"kociewie\": 0x2f,\n\t\"kscor\":    0x30,\n\t\"laukika\":  0x31,\n\t\"lemosin\":  0x32,\n\t\"lengadoc\": 0x33,\n\t\"lipaw\":    0x63,\n\t\"ltg1929\":  0x34,\n\t\"ltg2007\":  0x35,\n\t\"luna1918\": 0x36,\n\t\"metelko\":  0x37,\n\t\"monoton\":  0x38,\n\t\"ndyuka\":   0x39,\n\t\"nedis\":    0x3a,\n\t\"newfound\": 0x3b,\n\t\"nicard\":   0x3c,\n\t\"njiva\":    0x64,\n\t\"nulik\":    0x3d,\n\t\"osojs\":    0x65,\n\t\"oxendict\": 0x3e,\n\t\"pahawh2\":  0x3f,\n\t\"pahawh3\":  0x40,\n\t\"pahawh4\":  0x41,\n\t\"pamaka\":   0x42,\n\t\"peano\":    0x43,\n\t\"petr1708\": 0x44,\n\t\"pinyin\":   0x45,\n\t\"polyton\":  0x46,\n\t\"provenc\":  0x47,\n\t\"puter\":    0x48,\n\t\"rigik\":    0x49,\n\t\"rozaj\":    0x4a,\n\t\"rumgr\":    0x4b,\n\t\"scotland\": 0x4c,\n\t\"scouse\":   0x4d,\n\t\"simple\":   0x6f,\n\t\"solba\":    0x66,\n\t\"sotav\":    0x4e,\n\t\"spanglis\": 0x4f,\n\t\"surmiran\": 0x50,\n\t\"sursilv\":  0x51,\n\t\"sutsilv\":  0x52,\n\t\"synnejyl\": 0x53,\n\t\"tarask\":   0x54,\n\t\"tongyong\": 0x55,\n\t\"tunumiit\": 0x56,\n\t\"uccor\":    0x57,\n\t\"ucrcor\":   0x58,\n\t\"ulster\":   0x59,\n\t\"unifon\":   0x5a,\n\t\"vaidika\":  0x5b,\n\t\"valencia\": 0x5c,\n\t\"vallader\": 0x5d,\n\t\"vecdruka\": 0x5e,\n\t\"vivaraup\": 0x5f,\n\t\"wadegile\": 0x60,\n\t\"xsistemo\": 0x61,\n}\n\n// variantNumSpecialized is the number of specialized variants in variants.\nconst variantNumSpecialized = 105\n\n// nRegionGroups is the number of region groups.\nconst nRegionGroups = 33\n\ntype likelyLangRegion struct {\n\tlang   uint16\n\tregion uint16\n}\n\n// likelyScript is a lookup table, indexed by scriptID, for the most likely\n// languages and regions given a script.\n// Size: 1052 bytes, 263 elements\nvar likelyScript = [263]likelyLangRegion{\n\t1:   {lang: 0x14e, region: 0x85},\n\t3:   {lang: 0x2a2, region: 0x107},\n\t4:   {lang: 0x1f, region: 0x9a},\n\t5:   {lang: 0x3a, region: 0x6c},\n\t7:   {lang: 0x3b, region: 0x9d},\n\t8:   {lang: 0x1d7, region: 0x28},\n\t9:   {lang: 0x13, region: 0x9d},\n\t10:  {lang: 0x5b, region: 0x96},\n\t11:  {lang: 0x60, region: 0x52},\n\t12:  {lang: 0xb9, region: 0xb5},\n\t13:  {lang: 0x63, region: 0x96},\n\t14:  {lang: 0xa5, region: 0x35},\n\t15:  {lang: 0x3e9, region: 0x9a},\n\t17:  {lang: 0x529, region: 0x12f},\n\t18:  {lang: 0x3b1, region: 0x9a},\n\t19:  {lang: 0x15e, region: 0x79},\n\t20:  {lang: 0xc2, region: 0x96},\n\t21:  {lang: 0x9d, region: 0xe8},\n\t22:  {lang: 0xdb, region: 0x35},\n\t23:  {lang: 0xf3, region: 0x49},\n\t24:  {lang: 0x4f0, region: 0x12c},\n\t25:  {lang: 0xe7, region: 0x13f},\n\t26:  {lang: 0xe5, region: 0x136},\n\t29:  {lang: 0xf1, region: 0x6c},\n\t31:  {lang: 0x1a0, region: 0x5e},\n\t32:  {lang: 0x3e2, region: 0x107},\n\t34:  {lang: 0x1be, region: 0x9a},\n\t38:  {lang: 0x15e, region: 0x79},\n\t41:  {lang: 0x133, region: 0x6c},\n\t42:  {lang: 0x431, region: 0x27},\n\t44:  {lang: 0x27, region: 0x70},\n\t46:  {lang: 0x210, region: 0x7e},\n\t47:  {lang: 0xfe, region: 0x38},\n\t49:  {lang: 0x19b, region: 0x9a},\n\t50:  {lang: 0x19e, region: 0x131},\n\t51:  {lang: 0x3e9, region: 0x9a},\n\t52:  {lang: 0x136, region: 0x88},\n\t53:  {lang: 0x1a4, region: 0x9a},\n\t54:  {lang: 0x39d, region: 0x9a},\n\t55:  {lang: 0x529, region: 0x12f},\n\t56:  {lang: 0x254, region: 0xac},\n\t57:  {lang: 0x529, region: 0x53},\n\t58:  {lang: 0x1cb, region: 0xe8},\n\t59:  {lang: 0x529, region: 0x53},\n\t60:  {lang: 0x529, region: 0x12f},\n\t61:  {lang: 0x2fd, region: 0x9c},\n\t62:  {lang: 0x1bc, region: 0x98},\n\t63:  {lang: 0x200, region: 0xa3},\n\t64:  {lang: 0x1c5, region: 0x12c},\n\t65:  {lang: 0x1ca, region: 0xb0},\n\t68:  {lang: 0x1d5, region: 0x93},\n\t70:  {lang: 0x142, region: 0x9f},\n\t71:  {lang: 0x254, region: 0xac},\n\t72:  {lang: 0x20e, region: 0x96},\n\t73:  {lang: 0x200, region: 0xa3},\n\t75:  {lang: 0x135, region: 0xc5},\n\t76:  {lang: 0x200, region: 0xa3},\n\t78:  {lang: 0x3bb, region: 0xe9},\n\t79:  {lang: 0x24a, region: 0xa7},\n\t80:  {lang: 0x3fa, region: 0x9a},\n\t83:  {lang: 0x251, region: 0x9a},\n\t84:  {lang: 0x254, region: 0xac},\n\t86:  {lang: 0x88, region: 0x9a},\n\t87:  {lang: 0x370, region: 0x124},\n\t88:  {lang: 0x2b8, region: 0xb0},\n\t93:  {lang: 0x29f, region: 0x9a},\n\t94:  {lang: 0x2a8, region: 0x9a},\n\t95:  {lang: 0x28f, region: 0x88},\n\t96:  {lang: 0x1a0, region: 0x88},\n\t97:  {lang: 0x2ac, region: 0x53},\n\t99:  {lang: 0x4f4, region: 0x12c},\n\t100: {lang: 0x4f5, region: 0x12c},\n\t101: {lang: 0x1be, region: 0x9a},\n\t103: {lang: 0x337, region: 0x9d},\n\t104: {lang: 0x4f7, region: 0x53},\n\t105: {lang: 0xa9, region: 0x53},\n\t108: {lang: 0x2e8, region: 0x113},\n\t109: {lang: 0x4f8, region: 0x10c},\n\t110: {lang: 0x4f8, region: 0x10c},\n\t111: {lang: 0x304, region: 0x9a},\n\t112: {lang: 0x31b, region: 0x9a},\n\t113: {lang: 0x30b, region: 0x53},\n\t115: {lang: 0x31e, region: 0x35},\n\t116: {lang: 0x30e, region: 0x9a},\n\t117: {lang: 0x414, region: 0xe9},\n\t118: {lang: 0x331, region: 0xc5},\n\t121: {lang: 0x4f9, region: 0x109},\n\t122: {lang: 0x3b, region: 0xa2},\n\t123: {lang: 0x353, region: 0xdc},\n\t126: {lang: 0x2d0, region: 0x85},\n\t127: {lang: 0x52a, region: 0x53},\n\t128: {lang: 0x403, region: 0x97},\n\t129: {lang: 0x3ee, region: 0x9a},\n\t130: {lang: 0x39b, region: 0xc6},\n\t131: {lang: 0x395, region: 0x9a},\n\t132: {lang: 0x399, region: 0x136},\n\t133: {lang: 0x429, region: 0x116},\n\t135: {lang: 0x3b, region: 0x11d},\n\t136: {lang: 0xfd, region: 0xc5},\n\t139: {lang: 0x27d, region: 0x107},\n\t140: {lang: 0x2c9, region: 0x53},\n\t141: {lang: 0x39f, region: 0x9d},\n\t142: {lang: 0x39f, region: 0x53},\n\t144: {lang: 0x3ad, region: 0xb1},\n\t146: {lang: 0x1c6, region: 0x53},\n\t147: {lang: 0x4fd, region: 0x9d},\n\t200: {lang: 0x3cb, region: 0x96},\n\t203: {lang: 0x372, region: 0x10d},\n\t204: {lang: 0x420, region: 0x98},\n\t206: {lang: 0x4ff, region: 0x15f},\n\t207: {lang: 0x3f0, region: 0x9a},\n\t208: {lang: 0x45, region: 0x136},\n\t209: {lang: 0x139, region: 0x7c},\n\t210: {lang: 0x3e9, region: 0x9a},\n\t212: {lang: 0x3e9, region: 0x9a},\n\t213: {lang: 0x3fa, region: 0x9a},\n\t214: {lang: 0x40c, region: 0xb4},\n\t217: {lang: 0x433, region: 0x9a},\n\t218: {lang: 0xef, region: 0xc6},\n\t219: {lang: 0x43e, region: 0x96},\n\t221: {lang: 0x44d, region: 0x35},\n\t222: {lang: 0x44e, region: 0x9c},\n\t226: {lang: 0x45a, region: 0xe8},\n\t227: {lang: 0x11a, region: 0x9a},\n\t228: {lang: 0x45e, region: 0x53},\n\t229: {lang: 0x232, region: 0x53},\n\t230: {lang: 0x450, region: 0x9a},\n\t231: {lang: 0x4a5, region: 0x53},\n\t232: {lang: 0x9f, region: 0x13f},\n\t233: {lang: 0x461, region: 0x9a},\n\t235: {lang: 0x528, region: 0xbb},\n\t236: {lang: 0x153, region: 0xe8},\n\t237: {lang: 0x128, region: 0xce},\n\t238: {lang: 0x46b, region: 0x124},\n\t239: {lang: 0xa9, region: 0x53},\n\t240: {lang: 0x2ce, region: 0x9a},\n\t243: {lang: 0x4ad, region: 0x11d},\n\t244: {lang: 0x4be, region: 0xb5},\n\t247: {lang: 0x1ce, region: 0x9a},\n\t250: {lang: 0x3a9, region: 0x9d},\n\t251: {lang: 0x22, region: 0x9c},\n\t253: {lang: 0x1ea, region: 0x53},\n\t254: {lang: 0xef, region: 0xc6},\n}\n\ntype likelyScriptRegion struct {\n\tregion uint16\n\tscript uint16\n\tflags  uint8\n}\n\n// likelyLang is a lookup table, indexed by langID, for the most likely\n// scripts and regions given incomplete information. If more entries exist for a\n// given language, region and script are the index and size respectively\n// of the list in likelyLangList.\n// Size: 7980 bytes, 1330 elements\nvar likelyLang = [1330]likelyScriptRegion{\n\t0:    {region: 0x136, script: 0x5b, flags: 0x0},\n\t1:    {region: 0x70, script: 0x5b, flags: 0x0},\n\t2:    {region: 0x166, script: 0x5b, flags: 0x0},\n\t3:    {region: 0x166, script: 0x5b, flags: 0x0},\n\t4:    {region: 0x166, script: 0x5b, flags: 0x0},\n\t5:    {region: 0x7e, script: 0x20, flags: 0x0},\n\t6:    {region: 0x166, script: 0x5b, flags: 0x0},\n\t7:    {region: 0x166, script: 0x20, flags: 0x0},\n\t8:    {region: 0x81, script: 0x5b, flags: 0x0},\n\t9:    {region: 0x166, script: 0x5b, flags: 0x0},\n\t10:   {region: 0x166, script: 0x5b, flags: 0x0},\n\t11:   {region: 0x166, script: 0x5b, flags: 0x0},\n\t12:   {region: 0x96, script: 0x5b, flags: 0x0},\n\t13:   {region: 0x132, script: 0x5b, flags: 0x0},\n\t14:   {region: 0x81, script: 0x5b, flags: 0x0},\n\t15:   {region: 0x166, script: 0x5b, flags: 0x0},\n\t16:   {region: 0x166, script: 0x5b, flags: 0x0},\n\t17:   {region: 0x107, script: 0x20, flags: 0x0},\n\t18:   {region: 0x166, script: 0x5b, flags: 0x0},\n\t19:   {region: 0x9d, script: 0x9, flags: 0x0},\n\t20:   {region: 0x129, script: 0x5, flags: 0x0},\n\t21:   {region: 0x166, script: 0x5b, flags: 0x0},\n\t22:   {region: 0x162, script: 0x5b, flags: 0x0},\n\t23:   {region: 0x166, script: 0x5b, flags: 0x0},\n\t24:   {region: 0x166, script: 0x5b, flags: 0x0},\n\t25:   {region: 0x166, script: 0x5b, flags: 0x0},\n\t26:   {region: 0x166, script: 0x5b, flags: 0x0},\n\t27:   {region: 0x166, script: 0x5b, flags: 0x0},\n\t28:   {region: 0x52, script: 0x5b, flags: 0x0},\n\t29:   {region: 0x166, script: 0x5b, flags: 0x0},\n\t30:   {region: 0x166, script: 0x5b, flags: 0x0},\n\t31:   {region: 0x9a, script: 0x4, flags: 0x0},\n\t32:   {region: 0x166, script: 0x5b, flags: 0x0},\n\t33:   {region: 0x81, script: 0x5b, flags: 0x0},\n\t34:   {region: 0x9c, script: 0xfb, flags: 0x0},\n\t35:   {region: 0x166, script: 0x5b, flags: 0x0},\n\t36:   {region: 0x166, script: 0x5b, flags: 0x0},\n\t37:   {region: 0x14e, script: 0x5b, flags: 0x0},\n\t38:   {region: 0x107, script: 0x20, flags: 0x0},\n\t39:   {region: 0x70, script: 0x2c, flags: 0x0},\n\t40:   {region: 0x166, script: 0x5b, flags: 0x0},\n\t41:   {region: 0x166, script: 0x5b, flags: 0x0},\n\t42:   {region: 0xd7, script: 0x5b, flags: 0x0},\n\t43:   {region: 0x166, script: 0x5b, flags: 0x0},\n\t45:   {region: 0x166, script: 0x5b, flags: 0x0},\n\t46:   {region: 0x166, script: 0x5b, flags: 0x0},\n\t47:   {region: 0x166, script: 0x5b, flags: 0x0},\n\t48:   {region: 0x166, script: 0x5b, flags: 0x0},\n\t49:   {region: 0x166, script: 0x5b, flags: 0x0},\n\t50:   {region: 0x166, script: 0x5b, flags: 0x0},\n\t51:   {region: 0x96, script: 0x5b, flags: 0x0},\n\t52:   {region: 0x166, script: 0x5, flags: 0x0},\n\t53:   {region: 0x123, script: 0x5, flags: 0x0},\n\t54:   {region: 0x166, script: 0x5b, flags: 0x0},\n\t55:   {region: 0x166, script: 0x5b, flags: 0x0},\n\t56:   {region: 0x166, script: 0x5b, flags: 0x0},\n\t57:   {region: 0x166, script: 0x5b, flags: 0x0},\n\t58:   {region: 0x6c, script: 0x5, flags: 0x0},\n\t59:   {region: 0x0, script: 0x3, flags: 0x1},\n\t60:   {region: 0x166, script: 0x5b, flags: 0x0},\n\t61:   {region: 0x51, script: 0x5b, flags: 0x0},\n\t62:   {region: 0x3f, script: 0x5b, flags: 0x0},\n\t63:   {region: 0x68, script: 0x5, flags: 0x0},\n\t65:   {region: 0xbb, script: 0x5, flags: 0x0},\n\t66:   {region: 0x6c, script: 0x5, flags: 0x0},\n\t67:   {region: 0x9a, script: 0xe, flags: 0x0},\n\t68:   {region: 0x130, script: 0x5b, flags: 0x0},\n\t69:   {region: 0x136, script: 0xd0, flags: 0x0},\n\t70:   {region: 0x166, script: 0x5b, flags: 0x0},\n\t71:   {region: 0x166, script: 0x5b, flags: 0x0},\n\t72:   {region: 0x6f, script: 0x5b, flags: 0x0},\n\t73:   {region: 0x166, script: 0x5b, flags: 0x0},\n\t74:   {region: 0x166, script: 0x5b, flags: 0x0},\n\t75:   {region: 0x49, script: 0x5b, flags: 0x0},\n\t76:   {region: 0x166, script: 0x5b, flags: 0x0},\n\t77:   {region: 0x107, script: 0x20, flags: 0x0},\n\t78:   {region: 0x166, script: 0x5, flags: 0x0},\n\t79:   {region: 0x166, script: 0x5b, flags: 0x0},\n\t80:   {region: 0x166, script: 0x5b, flags: 0x0},\n\t81:   {region: 0x166, script: 0x5b, flags: 0x0},\n\t82:   {region: 0x9a, script: 0x22, flags: 0x0},\n\t83:   {region: 0x166, script: 0x5b, flags: 0x0},\n\t84:   {region: 0x166, script: 0x5b, flags: 0x0},\n\t85:   {region: 0x166, script: 0x5b, flags: 0x0},\n\t86:   {region: 0x3f, script: 0x5b, flags: 0x0},\n\t87:   {region: 0x166, script: 0x5b, flags: 0x0},\n\t88:   {region: 0x3, script: 0x5, flags: 0x1},\n\t89:   {region: 0x107, script: 0x20, flags: 0x0},\n\t90:   {region: 0xe9, script: 0x5, flags: 0x0},\n\t91:   {region: 0x96, script: 0x5b, flags: 0x0},\n\t92:   {region: 0xdc, script: 0x22, flags: 0x0},\n\t93:   {region: 0x2e, script: 0x5b, flags: 0x0},\n\t94:   {region: 0x52, script: 0x5b, flags: 0x0},\n\t95:   {region: 0x166, script: 0x5b, flags: 0x0},\n\t96:   {region: 0x52, script: 0xb, flags: 0x0},\n\t97:   {region: 0x166, script: 0x5b, flags: 0x0},\n\t98:   {region: 0x166, script: 0x5b, flags: 0x0},\n\t99:   {region: 0x96, script: 0x5b, flags: 0x0},\n\t100:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t101:  {region: 0x52, script: 0x5b, flags: 0x0},\n\t102:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t103:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t104:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t105:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t106:  {region: 0x4f, script: 0x5b, flags: 0x0},\n\t107:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t108:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t109:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t110:  {region: 0x166, script: 0x2c, flags: 0x0},\n\t111:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t112:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t113:  {region: 0x47, script: 0x20, flags: 0x0},\n\t114:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t115:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t116:  {region: 0x10c, script: 0x5, flags: 0x0},\n\t117:  {region: 0x163, script: 0x5b, flags: 0x0},\n\t118:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t119:  {region: 0x96, script: 0x5b, flags: 0x0},\n\t120:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t121:  {region: 0x130, script: 0x5b, flags: 0x0},\n\t122:  {region: 0x52, script: 0x5b, flags: 0x0},\n\t123:  {region: 0x9a, script: 0xe6, flags: 0x0},\n\t124:  {region: 0xe9, script: 0x5, flags: 0x0},\n\t125:  {region: 0x9a, script: 0x22, flags: 0x0},\n\t126:  {region: 0x38, script: 0x20, flags: 0x0},\n\t127:  {region: 0x9a, script: 0x22, flags: 0x0},\n\t128:  {region: 0xe9, script: 0x5, flags: 0x0},\n\t129:  {region: 0x12c, script: 0x34, flags: 0x0},\n\t131:  {region: 0x9a, script: 0x22, flags: 0x0},\n\t132:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t133:  {region: 0x9a, script: 0x22, flags: 0x0},\n\t134:  {region: 0xe8, script: 0x5b, flags: 0x0},\n\t135:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t136:  {region: 0x9a, script: 0x22, flags: 0x0},\n\t137:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t138:  {region: 0x140, script: 0x5b, flags: 0x0},\n\t139:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t140:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t141:  {region: 0xe8, script: 0x5b, flags: 0x0},\n\t142:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t143:  {region: 0xd7, script: 0x5b, flags: 0x0},\n\t144:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t145:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t146:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t147:  {region: 0x166, script: 0x2c, flags: 0x0},\n\t148:  {region: 0x9a, script: 0x22, flags: 0x0},\n\t149:  {region: 0x96, script: 0x5b, flags: 0x0},\n\t150:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t151:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t152:  {region: 0x115, script: 0x5b, flags: 0x0},\n\t153:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t154:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t155:  {region: 0x52, script: 0x5b, flags: 0x0},\n\t156:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t157:  {region: 0xe8, script: 0x5b, flags: 0x0},\n\t158:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t159:  {region: 0x13f, script: 0xe8, flags: 0x0},\n\t160:  {region: 0xc4, script: 0x5b, flags: 0x0},\n\t161:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t162:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t163:  {region: 0xc4, script: 0x5b, flags: 0x0},\n\t164:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t165:  {region: 0x35, script: 0xe, flags: 0x0},\n\t166:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t167:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t168:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t169:  {region: 0x53, script: 0xef, flags: 0x0},\n\t170:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t171:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t172:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t173:  {region: 0x9a, script: 0xe, flags: 0x0},\n\t174:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t175:  {region: 0x9d, script: 0x5, flags: 0x0},\n\t176:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t177:  {region: 0x4f, script: 0x5b, flags: 0x0},\n\t178:  {region: 0x79, script: 0x5b, flags: 0x0},\n\t179:  {region: 0x9a, script: 0x22, flags: 0x0},\n\t180:  {region: 0xe9, script: 0x5, flags: 0x0},\n\t181:  {region: 0x9a, script: 0x22, flags: 0x0},\n\t182:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t183:  {region: 0x33, script: 0x5b, flags: 0x0},\n\t184:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t185:  {region: 0xb5, script: 0xc, flags: 0x0},\n\t186:  {region: 0x52, script: 0x5b, flags: 0x0},\n\t187:  {region: 0x166, script: 0x2c, flags: 0x0},\n\t188:  {region: 0xe8, script: 0x5b, flags: 0x0},\n\t189:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t190:  {region: 0xe9, script: 0x22, flags: 0x0},\n\t191:  {region: 0x107, script: 0x20, flags: 0x0},\n\t192:  {region: 0x160, script: 0x5b, flags: 0x0},\n\t193:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t194:  {region: 0x96, script: 0x5b, flags: 0x0},\n\t195:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t196:  {region: 0x52, script: 0x5b, flags: 0x0},\n\t197:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t198:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t199:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t200:  {region: 0x87, script: 0x5b, flags: 0x0},\n\t201:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t202:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t203:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t204:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t205:  {region: 0x6e, script: 0x2c, flags: 0x0},\n\t206:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t207:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t208:  {region: 0x52, script: 0x5b, flags: 0x0},\n\t209:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t210:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t211:  {region: 0xc4, script: 0x5b, flags: 0x0},\n\t212:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t213:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t214:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t215:  {region: 0x6f, script: 0x5b, flags: 0x0},\n\t216:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t217:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t218:  {region: 0xd7, script: 0x5b, flags: 0x0},\n\t219:  {region: 0x35, script: 0x16, flags: 0x0},\n\t220:  {region: 0x107, script: 0x20, flags: 0x0},\n\t221:  {region: 0xe8, script: 0x5b, flags: 0x0},\n\t222:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t223:  {region: 0x132, script: 0x5b, flags: 0x0},\n\t224:  {region: 0x8b, script: 0x5b, flags: 0x0},\n\t225:  {region: 0x76, script: 0x5b, flags: 0x0},\n\t226:  {region: 0x107, script: 0x20, flags: 0x0},\n\t227:  {region: 0x136, script: 0x5b, flags: 0x0},\n\t228:  {region: 0x49, script: 0x5b, flags: 0x0},\n\t229:  {region: 0x136, script: 0x1a, flags: 0x0},\n\t230:  {region: 0xa7, script: 0x5, flags: 0x0},\n\t231:  {region: 0x13f, script: 0x19, flags: 0x0},\n\t232:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t233:  {region: 0x9c, script: 0x5, flags: 0x0},\n\t234:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t235:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t236:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t237:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t238:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t239:  {region: 0xc6, script: 0xda, flags: 0x0},\n\t240:  {region: 0x79, script: 0x5b, flags: 0x0},\n\t241:  {region: 0x6c, script: 0x1d, flags: 0x0},\n\t242:  {region: 0xe8, script: 0x5b, flags: 0x0},\n\t243:  {region: 0x49, script: 0x17, flags: 0x0},\n\t244:  {region: 0x131, script: 0x20, flags: 0x0},\n\t245:  {region: 0x49, script: 0x17, flags: 0x0},\n\t246:  {region: 0x49, script: 0x17, flags: 0x0},\n\t247:  {region: 0x49, script: 0x17, flags: 0x0},\n\t248:  {region: 0x49, script: 0x17, flags: 0x0},\n\t249:  {region: 0x10b, script: 0x5b, flags: 0x0},\n\t250:  {region: 0x5f, script: 0x5b, flags: 0x0},\n\t251:  {region: 0xea, script: 0x5b, flags: 0x0},\n\t252:  {region: 0x49, script: 0x17, flags: 0x0},\n\t253:  {region: 0xc5, script: 0x88, flags: 0x0},\n\t254:  {region: 0x8, script: 0x2, flags: 0x1},\n\t255:  {region: 0x107, script: 0x20, flags: 0x0},\n\t256:  {region: 0x7c, script: 0x5b, flags: 0x0},\n\t257:  {region: 0x64, script: 0x5b, flags: 0x0},\n\t258:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t259:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t260:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t261:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t262:  {region: 0x136, script: 0x5b, flags: 0x0},\n\t263:  {region: 0x107, script: 0x20, flags: 0x0},\n\t264:  {region: 0xa5, script: 0x5b, flags: 0x0},\n\t265:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t266:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t267:  {region: 0x9a, script: 0x5, flags: 0x0},\n\t268:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t269:  {region: 0x61, script: 0x5b, flags: 0x0},\n\t270:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t271:  {region: 0x49, script: 0x5b, flags: 0x0},\n\t272:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t273:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t274:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t275:  {region: 0x166, script: 0x5, flags: 0x0},\n\t276:  {region: 0x49, script: 0x5b, flags: 0x0},\n\t277:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t278:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t279:  {region: 0xd5, script: 0x5b, flags: 0x0},\n\t280:  {region: 0x4f, script: 0x5b, flags: 0x0},\n\t281:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t282:  {region: 0x9a, script: 0x5, flags: 0x0},\n\t283:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t284:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t285:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t286:  {region: 0x166, script: 0x2c, flags: 0x0},\n\t287:  {region: 0x61, script: 0x5b, flags: 0x0},\n\t288:  {region: 0xc4, script: 0x5b, flags: 0x0},\n\t289:  {region: 0xd1, script: 0x5b, flags: 0x0},\n\t290:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t291:  {region: 0xdc, script: 0x22, flags: 0x0},\n\t292:  {region: 0x52, script: 0x5b, flags: 0x0},\n\t293:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t294:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t295:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t296:  {region: 0xce, script: 0xed, flags: 0x0},\n\t297:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t298:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t299:  {region: 0x115, script: 0x5b, flags: 0x0},\n\t300:  {region: 0x37, script: 0x5b, flags: 0x0},\n\t301:  {region: 0x43, script: 0xef, flags: 0x0},\n\t302:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t303:  {region: 0xa5, script: 0x5b, flags: 0x0},\n\t304:  {region: 0x81, script: 0x5b, flags: 0x0},\n\t305:  {region: 0xd7, script: 0x5b, flags: 0x0},\n\t306:  {region: 0x9f, script: 0x5b, flags: 0x0},\n\t307:  {region: 0x6c, script: 0x29, flags: 0x0},\n\t308:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t309:  {region: 0xc5, script: 0x4b, flags: 0x0},\n\t310:  {region: 0x88, script: 0x34, flags: 0x0},\n\t311:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t312:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t313:  {region: 0xa, script: 0x2, flags: 0x1},\n\t314:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t315:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t316:  {region: 0x1, script: 0x5b, flags: 0x0},\n\t317:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t318:  {region: 0x6f, script: 0x5b, flags: 0x0},\n\t319:  {region: 0x136, script: 0x5b, flags: 0x0},\n\t320:  {region: 0x6b, script: 0x5b, flags: 0x0},\n\t321:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t322:  {region: 0x9f, script: 0x46, flags: 0x0},\n\t323:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t324:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t325:  {region: 0x6f, script: 0x5b, flags: 0x0},\n\t326:  {region: 0x52, script: 0x5b, flags: 0x0},\n\t327:  {region: 0x6f, script: 0x5b, flags: 0x0},\n\t328:  {region: 0x9d, script: 0x5, flags: 0x0},\n\t329:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t330:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t331:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t332:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t333:  {region: 0x87, script: 0x5b, flags: 0x0},\n\t334:  {region: 0xc, script: 0x2, flags: 0x1},\n\t335:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t336:  {region: 0xc4, script: 0x5b, flags: 0x0},\n\t337:  {region: 0x73, script: 0x5b, flags: 0x0},\n\t338:  {region: 0x10c, script: 0x5, flags: 0x0},\n\t339:  {region: 0xe8, script: 0x5b, flags: 0x0},\n\t340:  {region: 0x10d, script: 0x5b, flags: 0x0},\n\t341:  {region: 0x74, script: 0x5b, flags: 0x0},\n\t342:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t343:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t344:  {region: 0x77, script: 0x5b, flags: 0x0},\n\t345:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t346:  {region: 0x3b, script: 0x5b, flags: 0x0},\n\t347:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t348:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t349:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t350:  {region: 0x79, script: 0x5b, flags: 0x0},\n\t351:  {region: 0x136, script: 0x5b, flags: 0x0},\n\t352:  {region: 0x79, script: 0x5b, flags: 0x0},\n\t353:  {region: 0x61, script: 0x5b, flags: 0x0},\n\t354:  {region: 0x61, script: 0x5b, flags: 0x0},\n\t355:  {region: 0x52, script: 0x5, flags: 0x0},\n\t356:  {region: 0x141, script: 0x5b, flags: 0x0},\n\t357:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t358:  {region: 0x85, script: 0x5b, flags: 0x0},\n\t359:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t360:  {region: 0xd5, script: 0x5b, flags: 0x0},\n\t361:  {region: 0x9f, script: 0x5b, flags: 0x0},\n\t362:  {region: 0xd7, script: 0x5b, flags: 0x0},\n\t363:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t364:  {region: 0x10c, script: 0x5b, flags: 0x0},\n\t365:  {region: 0xda, script: 0x5b, flags: 0x0},\n\t366:  {region: 0x97, script: 0x5b, flags: 0x0},\n\t367:  {region: 0x81, script: 0x5b, flags: 0x0},\n\t368:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t369:  {region: 0xbd, script: 0x5b, flags: 0x0},\n\t370:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t371:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t372:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t373:  {region: 0x53, script: 0x3b, flags: 0x0},\n\t374:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t375:  {region: 0x96, script: 0x5b, flags: 0x0},\n\t376:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t377:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t378:  {region: 0x9a, script: 0x22, flags: 0x0},\n\t379:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t380:  {region: 0x9d, script: 0x5, flags: 0x0},\n\t381:  {region: 0x7f, script: 0x5b, flags: 0x0},\n\t382:  {region: 0x7c, script: 0x5b, flags: 0x0},\n\t383:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t384:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t385:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t386:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t387:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t388:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t389:  {region: 0x70, script: 0x2c, flags: 0x0},\n\t390:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t391:  {region: 0xdc, script: 0x22, flags: 0x0},\n\t392:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t393:  {region: 0xa8, script: 0x5b, flags: 0x0},\n\t394:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t395:  {region: 0xe9, script: 0x5, flags: 0x0},\n\t396:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t397:  {region: 0xe9, script: 0x5, flags: 0x0},\n\t398:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t399:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t400:  {region: 0x6f, script: 0x5b, flags: 0x0},\n\t401:  {region: 0x9d, script: 0x5, flags: 0x0},\n\t402:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t403:  {region: 0x166, script: 0x2c, flags: 0x0},\n\t404:  {region: 0xf2, script: 0x5b, flags: 0x0},\n\t405:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t406:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t407:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t408:  {region: 0x166, script: 0x2c, flags: 0x0},\n\t409:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t410:  {region: 0x9a, script: 0x22, flags: 0x0},\n\t411:  {region: 0x9a, script: 0xe9, flags: 0x0},\n\t412:  {region: 0x96, script: 0x5b, flags: 0x0},\n\t413:  {region: 0xda, script: 0x5b, flags: 0x0},\n\t414:  {region: 0x131, script: 0x32, flags: 0x0},\n\t415:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t416:  {region: 0xe, script: 0x2, flags: 0x1},\n\t417:  {region: 0x9a, script: 0xe, flags: 0x0},\n\t418:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t419:  {region: 0x4e, script: 0x5b, flags: 0x0},\n\t420:  {region: 0x9a, script: 0x35, flags: 0x0},\n\t421:  {region: 0x41, script: 0x5b, flags: 0x0},\n\t422:  {region: 0x54, script: 0x5b, flags: 0x0},\n\t423:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t424:  {region: 0x81, script: 0x5b, flags: 0x0},\n\t425:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t426:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t427:  {region: 0xa5, script: 0x5b, flags: 0x0},\n\t428:  {region: 0x99, script: 0x5b, flags: 0x0},\n\t429:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t430:  {region: 0xdc, script: 0x22, flags: 0x0},\n\t431:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t432:  {region: 0x166, script: 0x5, flags: 0x0},\n\t433:  {region: 0x49, script: 0x5b, flags: 0x0},\n\t434:  {region: 0x166, script: 0x5, flags: 0x0},\n\t435:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t436:  {region: 0x10, script: 0x3, flags: 0x1},\n\t437:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t438:  {region: 0x53, script: 0x3b, flags: 0x0},\n\t439:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t440:  {region: 0x136, script: 0x5b, flags: 0x0},\n\t441:  {region: 0x24, script: 0x5, flags: 0x0},\n\t442:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t443:  {region: 0x166, script: 0x2c, flags: 0x0},\n\t444:  {region: 0x98, script: 0x3e, flags: 0x0},\n\t445:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t446:  {region: 0x9a, script: 0x22, flags: 0x0},\n\t447:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t448:  {region: 0x74, script: 0x5b, flags: 0x0},\n\t449:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t450:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t451:  {region: 0xe8, script: 0x5b, flags: 0x0},\n\t452:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t453:  {region: 0x12c, script: 0x40, flags: 0x0},\n\t454:  {region: 0x53, script: 0x92, flags: 0x0},\n\t455:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t456:  {region: 0xe9, script: 0x5, flags: 0x0},\n\t457:  {region: 0x9a, script: 0x22, flags: 0x0},\n\t458:  {region: 0xb0, script: 0x41, flags: 0x0},\n\t459:  {region: 0xe8, script: 0x5b, flags: 0x0},\n\t460:  {region: 0xe9, script: 0x5, flags: 0x0},\n\t461:  {region: 0xe7, script: 0x5b, flags: 0x0},\n\t462:  {region: 0x9a, script: 0x22, flags: 0x0},\n\t463:  {region: 0x9a, script: 0x22, flags: 0x0},\n\t464:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t465:  {region: 0x91, script: 0x5b, flags: 0x0},\n\t466:  {region: 0x61, script: 0x5b, flags: 0x0},\n\t467:  {region: 0x53, script: 0x3b, flags: 0x0},\n\t468:  {region: 0x92, script: 0x5b, flags: 0x0},\n\t469:  {region: 0x93, script: 0x5b, flags: 0x0},\n\t470:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t471:  {region: 0x28, script: 0x8, flags: 0x0},\n\t472:  {region: 0xd3, script: 0x5b, flags: 0x0},\n\t473:  {region: 0x79, script: 0x5b, flags: 0x0},\n\t474:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t475:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t476:  {region: 0xd1, script: 0x5b, flags: 0x0},\n\t477:  {region: 0xd7, script: 0x5b, flags: 0x0},\n\t478:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t479:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t480:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t481:  {region: 0x96, script: 0x5b, flags: 0x0},\n\t482:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t483:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t484:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t486:  {region: 0x123, script: 0x5b, flags: 0x0},\n\t487:  {region: 0xd7, script: 0x5b, flags: 0x0},\n\t488:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t489:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t490:  {region: 0x53, script: 0xfd, flags: 0x0},\n\t491:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t492:  {region: 0x136, script: 0x5b, flags: 0x0},\n\t493:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t494:  {region: 0x49, script: 0x5b, flags: 0x0},\n\t495:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t496:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t497:  {region: 0xe8, script: 0x5b, flags: 0x0},\n\t498:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t499:  {region: 0x96, script: 0x5b, flags: 0x0},\n\t500:  {region: 0x107, script: 0x20, flags: 0x0},\n\t501:  {region: 0x1, script: 0x5b, flags: 0x0},\n\t502:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t503:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t504:  {region: 0x9e, script: 0x5b, flags: 0x0},\n\t505:  {region: 0x9f, script: 0x5b, flags: 0x0},\n\t506:  {region: 0x49, script: 0x17, flags: 0x0},\n\t507:  {region: 0x98, script: 0x3e, flags: 0x0},\n\t508:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t509:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t510:  {region: 0x107, script: 0x5b, flags: 0x0},\n\t511:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t512:  {region: 0xa3, script: 0x49, flags: 0x0},\n\t513:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t514:  {region: 0xa1, script: 0x5b, flags: 0x0},\n\t515:  {region: 0x1, script: 0x5b, flags: 0x0},\n\t516:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t517:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t518:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t519:  {region: 0x52, script: 0x5b, flags: 0x0},\n\t520:  {region: 0x131, script: 0x3e, flags: 0x0},\n\t521:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t522:  {region: 0x130, script: 0x5b, flags: 0x0},\n\t523:  {region: 0xdc, script: 0x22, flags: 0x0},\n\t524:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t525:  {region: 0x64, script: 0x5b, flags: 0x0},\n\t526:  {region: 0x96, script: 0x5b, flags: 0x0},\n\t527:  {region: 0x96, script: 0x5b, flags: 0x0},\n\t528:  {region: 0x7e, script: 0x2e, flags: 0x0},\n\t529:  {region: 0x138, script: 0x20, flags: 0x0},\n\t530:  {region: 0x68, script: 0x5b, flags: 0x0},\n\t531:  {region: 0xc5, script: 0x5b, flags: 0x0},\n\t532:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t533:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t534:  {region: 0xd7, script: 0x5b, flags: 0x0},\n\t535:  {region: 0xa5, script: 0x5b, flags: 0x0},\n\t536:  {region: 0xc4, script: 0x5b, flags: 0x0},\n\t537:  {region: 0x107, script: 0x20, flags: 0x0},\n\t538:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t539:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t540:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t541:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t542:  {region: 0xd5, script: 0x5, flags: 0x0},\n\t543:  {region: 0xd7, script: 0x5b, flags: 0x0},\n\t544:  {region: 0x165, script: 0x5b, flags: 0x0},\n\t545:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t546:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t547:  {region: 0x130, script: 0x5b, flags: 0x0},\n\t548:  {region: 0x123, script: 0x5, flags: 0x0},\n\t549:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t550:  {region: 0x124, script: 0xee, flags: 0x0},\n\t551:  {region: 0x5b, script: 0x5b, flags: 0x0},\n\t552:  {region: 0x52, script: 0x5b, flags: 0x0},\n\t553:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t554:  {region: 0x4f, script: 0x5b, flags: 0x0},\n\t555:  {region: 0x9a, script: 0x22, flags: 0x0},\n\t556:  {region: 0x9a, script: 0x22, flags: 0x0},\n\t557:  {region: 0x4b, script: 0x5b, flags: 0x0},\n\t558:  {region: 0x96, script: 0x5b, flags: 0x0},\n\t559:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t560:  {region: 0x41, script: 0x5b, flags: 0x0},\n\t561:  {region: 0x9a, script: 0x5b, flags: 0x0},\n\t562:  {region: 0x53, script: 0xe5, flags: 0x0},\n\t563:  {region: 0x9a, script: 0x22, flags: 0x0},\n\t564:  {region: 0xc4, script: 0x5b, flags: 0x0},\n\t565:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t566:  {region: 0x9a, script: 0x76, flags: 0x0},\n\t567:  {region: 0xe9, script: 0x5, flags: 0x0},\n\t568:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t569:  {region: 0xa5, script: 0x5b, flags: 0x0},\n\t570:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t571:  {region: 0x12c, script: 0x5b, flags: 0x0},\n\t572:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t573:  {region: 0xd3, script: 0x5b, flags: 0x0},\n\t574:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t575:  {region: 0xb0, script: 0x58, flags: 0x0},\n\t576:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t577:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t578:  {region: 0x13, script: 0x6, flags: 0x1},\n\t579:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t580:  {region: 0x52, script: 0x5b, flags: 0x0},\n\t581:  {region: 0x83, script: 0x5b, flags: 0x0},\n\t582:  {region: 0xa5, script: 0x5b, flags: 0x0},\n\t583:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t584:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t585:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t586:  {region: 0xa7, script: 0x4f, flags: 0x0},\n\t587:  {region: 0x2a, script: 0x5b, flags: 0x0},\n\t588:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t589:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t590:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t591:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t592:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t593:  {region: 0x9a, script: 0x53, flags: 0x0},\n\t594:  {region: 0x8c, script: 0x5b, flags: 0x0},\n\t595:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t596:  {region: 0xac, script: 0x54, flags: 0x0},\n\t597:  {region: 0x107, script: 0x20, flags: 0x0},\n\t598:  {region: 0x9a, script: 0x22, flags: 0x0},\n\t599:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t600:  {region: 0x76, script: 0x5b, flags: 0x0},\n\t601:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t602:  {region: 0xb5, script: 0x5b, flags: 0x0},\n\t603:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t604:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t605:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t606:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t607:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t608:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t609:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t610:  {region: 0x166, script: 0x2c, flags: 0x0},\n\t611:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t612:  {region: 0x107, script: 0x20, flags: 0x0},\n\t613:  {region: 0x113, script: 0x5b, flags: 0x0},\n\t614:  {region: 0xe8, script: 0x5b, flags: 0x0},\n\t615:  {region: 0x107, script: 0x5b, flags: 0x0},\n\t616:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t617:  {region: 0x9a, script: 0x22, flags: 0x0},\n\t618:  {region: 0x9a, script: 0x5, flags: 0x0},\n\t619:  {region: 0x130, script: 0x5b, flags: 0x0},\n\t620:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t621:  {region: 0x52, script: 0x5b, flags: 0x0},\n\t622:  {region: 0x61, script: 0x5b, flags: 0x0},\n\t623:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t624:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t625:  {region: 0x166, script: 0x2c, flags: 0x0},\n\t626:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t627:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t628:  {region: 0x19, script: 0x3, flags: 0x1},\n\t629:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t630:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t631:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t632:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t633:  {region: 0x107, script: 0x20, flags: 0x0},\n\t634:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t635:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t636:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t637:  {region: 0x107, script: 0x20, flags: 0x0},\n\t638:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t639:  {region: 0x96, script: 0x5b, flags: 0x0},\n\t640:  {region: 0xe9, script: 0x5, flags: 0x0},\n\t641:  {region: 0x7c, script: 0x5b, flags: 0x0},\n\t642:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t643:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t644:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t645:  {region: 0x166, script: 0x2c, flags: 0x0},\n\t646:  {region: 0x124, script: 0xee, flags: 0x0},\n\t647:  {region: 0xe9, script: 0x5, flags: 0x0},\n\t648:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t649:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t650:  {region: 0x1c, script: 0x5, flags: 0x1},\n\t651:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t652:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t653:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t654:  {region: 0x139, script: 0x5b, flags: 0x0},\n\t655:  {region: 0x88, script: 0x5f, flags: 0x0},\n\t656:  {region: 0x98, script: 0x3e, flags: 0x0},\n\t657:  {region: 0x130, script: 0x5b, flags: 0x0},\n\t658:  {region: 0xe9, script: 0x5, flags: 0x0},\n\t659:  {region: 0x132, script: 0x5b, flags: 0x0},\n\t660:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t661:  {region: 0xb8, script: 0x5b, flags: 0x0},\n\t662:  {region: 0x107, script: 0x20, flags: 0x0},\n\t663:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t664:  {region: 0x96, script: 0x5b, flags: 0x0},\n\t665:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t666:  {region: 0x53, script: 0xee, flags: 0x0},\n\t667:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t668:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t669:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t670:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t671:  {region: 0x9a, script: 0x5d, flags: 0x0},\n\t672:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t673:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t674:  {region: 0x107, script: 0x20, flags: 0x0},\n\t675:  {region: 0x132, script: 0x5b, flags: 0x0},\n\t676:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t677:  {region: 0xda, script: 0x5b, flags: 0x0},\n\t678:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t679:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t680:  {region: 0x21, script: 0x2, flags: 0x1},\n\t681:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t682:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t683:  {region: 0x9f, script: 0x5b, flags: 0x0},\n\t684:  {region: 0x53, script: 0x61, flags: 0x0},\n\t685:  {region: 0x96, script: 0x5b, flags: 0x0},\n\t686:  {region: 0x9d, script: 0x5, flags: 0x0},\n\t687:  {region: 0x136, script: 0x5b, flags: 0x0},\n\t688:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t689:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t690:  {region: 0x9a, script: 0xe9, flags: 0x0},\n\t691:  {region: 0x9f, script: 0x5b, flags: 0x0},\n\t692:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t693:  {region: 0x4b, script: 0x5b, flags: 0x0},\n\t694:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t695:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t696:  {region: 0xb0, script: 0x58, flags: 0x0},\n\t697:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t698:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t699:  {region: 0x4b, script: 0x5b, flags: 0x0},\n\t700:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t701:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t702:  {region: 0x163, script: 0x5b, flags: 0x0},\n\t703:  {region: 0x9d, script: 0x5, flags: 0x0},\n\t704:  {region: 0xb7, script: 0x5b, flags: 0x0},\n\t705:  {region: 0xb9, script: 0x5b, flags: 0x0},\n\t706:  {region: 0x4b, script: 0x5b, flags: 0x0},\n\t707:  {region: 0x4b, script: 0x5b, flags: 0x0},\n\t708:  {region: 0xa5, script: 0x5b, flags: 0x0},\n\t709:  {region: 0xa5, script: 0x5b, flags: 0x0},\n\t710:  {region: 0x9d, script: 0x5, flags: 0x0},\n\t711:  {region: 0xb9, script: 0x5b, flags: 0x0},\n\t712:  {region: 0x124, script: 0xee, flags: 0x0},\n\t713:  {region: 0x53, script: 0x3b, flags: 0x0},\n\t714:  {region: 0x12c, script: 0x5b, flags: 0x0},\n\t715:  {region: 0x96, script: 0x5b, flags: 0x0},\n\t716:  {region: 0x52, script: 0x5b, flags: 0x0},\n\t717:  {region: 0x9a, script: 0x22, flags: 0x0},\n\t718:  {region: 0x9a, script: 0x22, flags: 0x0},\n\t719:  {region: 0x96, script: 0x5b, flags: 0x0},\n\t720:  {region: 0x23, script: 0x3, flags: 0x1},\n\t721:  {region: 0xa5, script: 0x5b, flags: 0x0},\n\t722:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t723:  {region: 0xd0, script: 0x5b, flags: 0x0},\n\t724:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t725:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t726:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t727:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t728:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t729:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t730:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t731:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t732:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t733:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t734:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t735:  {region: 0x166, script: 0x5, flags: 0x0},\n\t736:  {region: 0x107, script: 0x20, flags: 0x0},\n\t737:  {region: 0xe8, script: 0x5b, flags: 0x0},\n\t738:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t739:  {region: 0x96, script: 0x5b, flags: 0x0},\n\t740:  {region: 0x166, script: 0x2c, flags: 0x0},\n\t741:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t742:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t743:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t744:  {region: 0x113, script: 0x5b, flags: 0x0},\n\t745:  {region: 0xa5, script: 0x5b, flags: 0x0},\n\t746:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t747:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t748:  {region: 0x124, script: 0x5, flags: 0x0},\n\t749:  {region: 0xcd, script: 0x5b, flags: 0x0},\n\t750:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t751:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t752:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t753:  {region: 0xc0, script: 0x5b, flags: 0x0},\n\t754:  {region: 0xd2, script: 0x5b, flags: 0x0},\n\t755:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t756:  {region: 0x52, script: 0x5b, flags: 0x0},\n\t757:  {region: 0xdc, script: 0x22, flags: 0x0},\n\t758:  {region: 0x130, script: 0x5b, flags: 0x0},\n\t759:  {region: 0xc1, script: 0x5b, flags: 0x0},\n\t760:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t761:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t762:  {region: 0xe1, script: 0x5b, flags: 0x0},\n\t763:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t764:  {region: 0x96, script: 0x5b, flags: 0x0},\n\t765:  {region: 0x9c, script: 0x3d, flags: 0x0},\n\t766:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t767:  {region: 0xc3, script: 0x20, flags: 0x0},\n\t768:  {region: 0x166, script: 0x5, flags: 0x0},\n\t769:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t770:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t771:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t772:  {region: 0x9a, script: 0x6f, flags: 0x0},\n\t773:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t774:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t775:  {region: 0x10c, script: 0x5b, flags: 0x0},\n\t776:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t777:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t778:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t779:  {region: 0x26, script: 0x3, flags: 0x1},\n\t780:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t781:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t782:  {region: 0x9a, script: 0xe, flags: 0x0},\n\t783:  {region: 0xc5, script: 0x76, flags: 0x0},\n\t785:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t786:  {region: 0x49, script: 0x5b, flags: 0x0},\n\t787:  {region: 0x49, script: 0x5b, flags: 0x0},\n\t788:  {region: 0x37, script: 0x5b, flags: 0x0},\n\t789:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t790:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t791:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t792:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t793:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t794:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t795:  {region: 0x9a, script: 0x22, flags: 0x0},\n\t796:  {region: 0xdc, script: 0x22, flags: 0x0},\n\t797:  {region: 0x107, script: 0x20, flags: 0x0},\n\t798:  {region: 0x35, script: 0x73, flags: 0x0},\n\t799:  {region: 0x29, script: 0x3, flags: 0x1},\n\t800:  {region: 0xcc, script: 0x5b, flags: 0x0},\n\t801:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t802:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t803:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t804:  {region: 0x9a, script: 0x22, flags: 0x0},\n\t805:  {region: 0x52, script: 0x5b, flags: 0x0},\n\t807:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t808:  {region: 0x136, script: 0x5b, flags: 0x0},\n\t809:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t810:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t811:  {region: 0xe9, script: 0x5, flags: 0x0},\n\t812:  {region: 0xc4, script: 0x5b, flags: 0x0},\n\t813:  {region: 0x9a, script: 0x22, flags: 0x0},\n\t814:  {region: 0x96, script: 0x5b, flags: 0x0},\n\t815:  {region: 0x165, script: 0x5b, flags: 0x0},\n\t816:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t817:  {region: 0xc5, script: 0x76, flags: 0x0},\n\t818:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t819:  {region: 0x166, script: 0x2c, flags: 0x0},\n\t820:  {region: 0x107, script: 0x20, flags: 0x0},\n\t821:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t822:  {region: 0x132, script: 0x5b, flags: 0x0},\n\t823:  {region: 0x9d, script: 0x67, flags: 0x0},\n\t824:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t825:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t826:  {region: 0x9d, script: 0x5, flags: 0x0},\n\t827:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t828:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t829:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t830:  {region: 0xde, script: 0x5b, flags: 0x0},\n\t831:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t832:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t834:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t835:  {region: 0x53, script: 0x3b, flags: 0x0},\n\t836:  {region: 0x9f, script: 0x5b, flags: 0x0},\n\t837:  {region: 0xd3, script: 0x5b, flags: 0x0},\n\t838:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t839:  {region: 0xdb, script: 0x5b, flags: 0x0},\n\t840:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t841:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t842:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t843:  {region: 0xd0, script: 0x5b, flags: 0x0},\n\t844:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t845:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t846:  {region: 0x165, script: 0x5b, flags: 0x0},\n\t847:  {region: 0xd2, script: 0x5b, flags: 0x0},\n\t848:  {region: 0x61, script: 0x5b, flags: 0x0},\n\t849:  {region: 0xdc, script: 0x22, flags: 0x0},\n\t850:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t851:  {region: 0xdc, script: 0x22, flags: 0x0},\n\t852:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t853:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t854:  {region: 0xd3, script: 0x5b, flags: 0x0},\n\t855:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t856:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t857:  {region: 0xd2, script: 0x5b, flags: 0x0},\n\t858:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t859:  {region: 0xd0, script: 0x5b, flags: 0x0},\n\t860:  {region: 0xd0, script: 0x5b, flags: 0x0},\n\t861:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t862:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t863:  {region: 0x96, script: 0x5b, flags: 0x0},\n\t864:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t865:  {region: 0xe0, script: 0x5b, flags: 0x0},\n\t866:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t867:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t868:  {region: 0x9a, script: 0x5b, flags: 0x0},\n\t869:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t870:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t871:  {region: 0xda, script: 0x5b, flags: 0x0},\n\t872:  {region: 0x52, script: 0x5b, flags: 0x0},\n\t873:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t874:  {region: 0xdb, script: 0x5b, flags: 0x0},\n\t875:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t876:  {region: 0x52, script: 0x5b, flags: 0x0},\n\t877:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t878:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t879:  {region: 0xdb, script: 0x5b, flags: 0x0},\n\t880:  {region: 0x124, script: 0x57, flags: 0x0},\n\t881:  {region: 0x9a, script: 0x22, flags: 0x0},\n\t882:  {region: 0x10d, script: 0xcb, flags: 0x0},\n\t883:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t884:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t885:  {region: 0x85, script: 0x7e, flags: 0x0},\n\t886:  {region: 0x162, script: 0x5b, flags: 0x0},\n\t887:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t888:  {region: 0x49, script: 0x17, flags: 0x0},\n\t889:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t890:  {region: 0x162, script: 0x5b, flags: 0x0},\n\t891:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t892:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t893:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t894:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t895:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t896:  {region: 0x118, script: 0x5b, flags: 0x0},\n\t897:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t898:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t899:  {region: 0x136, script: 0x5b, flags: 0x0},\n\t900:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t901:  {region: 0x53, script: 0x5b, flags: 0x0},\n\t902:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t903:  {region: 0xcf, script: 0x5b, flags: 0x0},\n\t904:  {region: 0x130, script: 0x5b, flags: 0x0},\n\t905:  {region: 0x132, script: 0x5b, flags: 0x0},\n\t906:  {region: 0x81, script: 0x5b, flags: 0x0},\n\t907:  {region: 0x79, script: 0x5b, flags: 0x0},\n\t908:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t910:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t911:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t912:  {region: 0x70, script: 0x5b, flags: 0x0},\n\t913:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t914:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t915:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t916:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t917:  {region: 0x9a, script: 0x83, flags: 0x0},\n\t918:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t919:  {region: 0x166, script: 0x5, flags: 0x0},\n\t920:  {region: 0x7e, script: 0x20, flags: 0x0},\n\t921:  {region: 0x136, script: 0x84, flags: 0x0},\n\t922:  {region: 0x166, script: 0x5, flags: 0x0},\n\t923:  {region: 0xc6, script: 0x82, flags: 0x0},\n\t924:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t925:  {region: 0x2c, script: 0x3, flags: 0x1},\n\t926:  {region: 0xe8, script: 0x5b, flags: 0x0},\n\t927:  {region: 0x2f, script: 0x2, flags: 0x1},\n\t928:  {region: 0xe8, script: 0x5b, flags: 0x0},\n\t929:  {region: 0x30, script: 0x5b, flags: 0x0},\n\t930:  {region: 0xf1, script: 0x5b, flags: 0x0},\n\t931:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t932:  {region: 0x79, script: 0x5b, flags: 0x0},\n\t933:  {region: 0xd7, script: 0x5b, flags: 0x0},\n\t934:  {region: 0x136, script: 0x5b, flags: 0x0},\n\t935:  {region: 0x49, script: 0x5b, flags: 0x0},\n\t936:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t937:  {region: 0x9d, script: 0xfa, flags: 0x0},\n\t938:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t939:  {region: 0x61, script: 0x5b, flags: 0x0},\n\t940:  {region: 0x166, script: 0x5, flags: 0x0},\n\t941:  {region: 0xb1, script: 0x90, flags: 0x0},\n\t943:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t944:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t945:  {region: 0x9a, script: 0x12, flags: 0x0},\n\t946:  {region: 0xa5, script: 0x5b, flags: 0x0},\n\t947:  {region: 0xea, script: 0x5b, flags: 0x0},\n\t948:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t949:  {region: 0x9f, script: 0x5b, flags: 0x0},\n\t950:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t951:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t952:  {region: 0x88, script: 0x34, flags: 0x0},\n\t953:  {region: 0x76, script: 0x5b, flags: 0x0},\n\t954:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t955:  {region: 0xe9, script: 0x4e, flags: 0x0},\n\t956:  {region: 0x9d, script: 0x5, flags: 0x0},\n\t957:  {region: 0x1, script: 0x5b, flags: 0x0},\n\t958:  {region: 0x24, script: 0x5, flags: 0x0},\n\t959:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t960:  {region: 0x41, script: 0x5b, flags: 0x0},\n\t961:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t962:  {region: 0x7b, script: 0x5b, flags: 0x0},\n\t963:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t964:  {region: 0xe5, script: 0x5b, flags: 0x0},\n\t965:  {region: 0x8a, script: 0x5b, flags: 0x0},\n\t966:  {region: 0x6a, script: 0x5b, flags: 0x0},\n\t967:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t968:  {region: 0x9a, script: 0x22, flags: 0x0},\n\t969:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t970:  {region: 0x103, script: 0x5b, flags: 0x0},\n\t971:  {region: 0x96, script: 0x5b, flags: 0x0},\n\t972:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t973:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t974:  {region: 0x9f, script: 0x5b, flags: 0x0},\n\t975:  {region: 0x166, script: 0x5, flags: 0x0},\n\t976:  {region: 0x9a, script: 0x5b, flags: 0x0},\n\t977:  {region: 0x31, script: 0x2, flags: 0x1},\n\t978:  {region: 0xdc, script: 0x22, flags: 0x0},\n\t979:  {region: 0x35, script: 0xe, flags: 0x0},\n\t980:  {region: 0x4e, script: 0x5b, flags: 0x0},\n\t981:  {region: 0x73, script: 0x5b, flags: 0x0},\n\t982:  {region: 0x4e, script: 0x5b, flags: 0x0},\n\t983:  {region: 0x9d, script: 0x5, flags: 0x0},\n\t984:  {region: 0x10d, script: 0x5b, flags: 0x0},\n\t985:  {region: 0x3a, script: 0x5b, flags: 0x0},\n\t986:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t987:  {region: 0xd2, script: 0x5b, flags: 0x0},\n\t988:  {region: 0x105, script: 0x5b, flags: 0x0},\n\t989:  {region: 0x96, script: 0x5b, flags: 0x0},\n\t990:  {region: 0x130, script: 0x5b, flags: 0x0},\n\t991:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t992:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t993:  {region: 0x74, script: 0x5b, flags: 0x0},\n\t994:  {region: 0x107, script: 0x20, flags: 0x0},\n\t995:  {region: 0x131, script: 0x20, flags: 0x0},\n\t996:  {region: 0x10a, script: 0x5b, flags: 0x0},\n\t997:  {region: 0x108, script: 0x5b, flags: 0x0},\n\t998:  {region: 0x130, script: 0x5b, flags: 0x0},\n\t999:  {region: 0x166, script: 0x5b, flags: 0x0},\n\t1000: {region: 0xa3, script: 0x4c, flags: 0x0},\n\t1001: {region: 0x9a, script: 0x22, flags: 0x0},\n\t1002: {region: 0x81, script: 0x5b, flags: 0x0},\n\t1003: {region: 0x107, script: 0x20, flags: 0x0},\n\t1004: {region: 0xa5, script: 0x5b, flags: 0x0},\n\t1005: {region: 0x96, script: 0x5b, flags: 0x0},\n\t1006: {region: 0x9a, script: 0x5b, flags: 0x0},\n\t1007: {region: 0x115, script: 0x5b, flags: 0x0},\n\t1008: {region: 0x9a, script: 0xcf, flags: 0x0},\n\t1009: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1010: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1011: {region: 0x130, script: 0x5b, flags: 0x0},\n\t1012: {region: 0x9f, script: 0x5b, flags: 0x0},\n\t1013: {region: 0x9a, script: 0x22, flags: 0x0},\n\t1014: {region: 0x166, script: 0x5, flags: 0x0},\n\t1015: {region: 0x9f, script: 0x5b, flags: 0x0},\n\t1016: {region: 0x7c, script: 0x5b, flags: 0x0},\n\t1017: {region: 0x49, script: 0x5b, flags: 0x0},\n\t1018: {region: 0x33, script: 0x4, flags: 0x1},\n\t1019: {region: 0x9f, script: 0x5b, flags: 0x0},\n\t1020: {region: 0x9d, script: 0x5, flags: 0x0},\n\t1021: {region: 0xdb, script: 0x5b, flags: 0x0},\n\t1022: {region: 0x4f, script: 0x5b, flags: 0x0},\n\t1023: {region: 0xd2, script: 0x5b, flags: 0x0},\n\t1024: {region: 0xd0, script: 0x5b, flags: 0x0},\n\t1025: {region: 0xc4, script: 0x5b, flags: 0x0},\n\t1026: {region: 0x4c, script: 0x5b, flags: 0x0},\n\t1027: {region: 0x97, script: 0x80, flags: 0x0},\n\t1028: {region: 0xb7, script: 0x5b, flags: 0x0},\n\t1029: {region: 0x166, script: 0x2c, flags: 0x0},\n\t1030: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1032: {region: 0xbb, script: 0xeb, flags: 0x0},\n\t1033: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1034: {region: 0xc5, script: 0x76, flags: 0x0},\n\t1035: {region: 0x166, script: 0x5, flags: 0x0},\n\t1036: {region: 0xb4, script: 0xd6, flags: 0x0},\n\t1037: {region: 0x70, script: 0x5b, flags: 0x0},\n\t1038: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1039: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1040: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1041: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1042: {region: 0x112, script: 0x5b, flags: 0x0},\n\t1043: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1044: {region: 0xe9, script: 0x5, flags: 0x0},\n\t1045: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1046: {region: 0x110, script: 0x5b, flags: 0x0},\n\t1047: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1048: {region: 0xea, script: 0x5b, flags: 0x0},\n\t1049: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1050: {region: 0x96, script: 0x5b, flags: 0x0},\n\t1051: {region: 0x143, script: 0x5b, flags: 0x0},\n\t1052: {region: 0x10d, script: 0x5b, flags: 0x0},\n\t1054: {region: 0x10d, script: 0x5b, flags: 0x0},\n\t1055: {region: 0x73, script: 0x5b, flags: 0x0},\n\t1056: {region: 0x98, script: 0xcc, flags: 0x0},\n\t1057: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1058: {region: 0x73, script: 0x5b, flags: 0x0},\n\t1059: {region: 0x165, script: 0x5b, flags: 0x0},\n\t1060: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1061: {region: 0xc4, script: 0x5b, flags: 0x0},\n\t1062: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1063: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1064: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1065: {region: 0x116, script: 0x5b, flags: 0x0},\n\t1066: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1067: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1068: {region: 0x124, script: 0xee, flags: 0x0},\n\t1069: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1070: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1071: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1072: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1073: {region: 0x27, script: 0x5b, flags: 0x0},\n\t1074: {region: 0x37, script: 0x5, flags: 0x1},\n\t1075: {region: 0x9a, script: 0xd9, flags: 0x0},\n\t1076: {region: 0x117, script: 0x5b, flags: 0x0},\n\t1077: {region: 0x115, script: 0x5b, flags: 0x0},\n\t1078: {region: 0x9a, script: 0x22, flags: 0x0},\n\t1079: {region: 0x162, script: 0x5b, flags: 0x0},\n\t1080: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1081: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1082: {region: 0x6e, script: 0x5b, flags: 0x0},\n\t1083: {region: 0x162, script: 0x5b, flags: 0x0},\n\t1084: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1085: {region: 0x61, script: 0x5b, flags: 0x0},\n\t1086: {region: 0x96, script: 0x5b, flags: 0x0},\n\t1087: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1088: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1089: {region: 0x130, script: 0x5b, flags: 0x0},\n\t1090: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1091: {region: 0x85, script: 0x5b, flags: 0x0},\n\t1092: {region: 0x10d, script: 0x5b, flags: 0x0},\n\t1093: {region: 0x130, script: 0x5b, flags: 0x0},\n\t1094: {region: 0x160, script: 0x5, flags: 0x0},\n\t1095: {region: 0x4b, script: 0x5b, flags: 0x0},\n\t1096: {region: 0x61, script: 0x5b, flags: 0x0},\n\t1097: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1098: {region: 0x9a, script: 0x22, flags: 0x0},\n\t1099: {region: 0x96, script: 0x5b, flags: 0x0},\n\t1100: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1101: {region: 0x35, script: 0xe, flags: 0x0},\n\t1102: {region: 0x9c, script: 0xde, flags: 0x0},\n\t1103: {region: 0xea, script: 0x5b, flags: 0x0},\n\t1104: {region: 0x9a, script: 0xe6, flags: 0x0},\n\t1105: {region: 0xdc, script: 0x22, flags: 0x0},\n\t1106: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1107: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1108: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1109: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1110: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1111: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1112: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1113: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1114: {region: 0xe8, script: 0x5b, flags: 0x0},\n\t1115: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1116: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1117: {region: 0x9a, script: 0x53, flags: 0x0},\n\t1118: {region: 0x53, script: 0xe4, flags: 0x0},\n\t1119: {region: 0xdc, script: 0x22, flags: 0x0},\n\t1120: {region: 0xdc, script: 0x22, flags: 0x0},\n\t1121: {region: 0x9a, script: 0xe9, flags: 0x0},\n\t1122: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1123: {region: 0x113, script: 0x5b, flags: 0x0},\n\t1124: {region: 0x132, script: 0x5b, flags: 0x0},\n\t1125: {region: 0x127, script: 0x5b, flags: 0x0},\n\t1126: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1127: {region: 0x3c, script: 0x3, flags: 0x1},\n\t1128: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1129: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1130: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1131: {region: 0x124, script: 0xee, flags: 0x0},\n\t1132: {region: 0xdc, script: 0x22, flags: 0x0},\n\t1133: {region: 0xdc, script: 0x22, flags: 0x0},\n\t1134: {region: 0xdc, script: 0x22, flags: 0x0},\n\t1135: {region: 0x70, script: 0x2c, flags: 0x0},\n\t1136: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1137: {region: 0x6e, script: 0x2c, flags: 0x0},\n\t1138: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1139: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1140: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1141: {region: 0xd7, script: 0x5b, flags: 0x0},\n\t1142: {region: 0x128, script: 0x5b, flags: 0x0},\n\t1143: {region: 0x126, script: 0x5b, flags: 0x0},\n\t1144: {region: 0x32, script: 0x5b, flags: 0x0},\n\t1145: {region: 0xdc, script: 0x22, flags: 0x0},\n\t1146: {region: 0xe8, script: 0x5b, flags: 0x0},\n\t1147: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1148: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1149: {region: 0x32, script: 0x5b, flags: 0x0},\n\t1150: {region: 0xd5, script: 0x5b, flags: 0x0},\n\t1151: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1152: {region: 0x162, script: 0x5b, flags: 0x0},\n\t1153: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1154: {region: 0x12a, script: 0x5b, flags: 0x0},\n\t1155: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1156: {region: 0xcf, script: 0x5b, flags: 0x0},\n\t1157: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1158: {region: 0xe7, script: 0x5b, flags: 0x0},\n\t1159: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1160: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1161: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1162: {region: 0x12c, script: 0x5b, flags: 0x0},\n\t1163: {region: 0x12c, script: 0x5b, flags: 0x0},\n\t1164: {region: 0x12f, script: 0x5b, flags: 0x0},\n\t1165: {region: 0x166, script: 0x5, flags: 0x0},\n\t1166: {region: 0x162, script: 0x5b, flags: 0x0},\n\t1167: {region: 0x88, script: 0x34, flags: 0x0},\n\t1168: {region: 0xdc, script: 0x22, flags: 0x0},\n\t1169: {region: 0xe8, script: 0x5b, flags: 0x0},\n\t1170: {region: 0x43, script: 0xef, flags: 0x0},\n\t1171: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1172: {region: 0x107, script: 0x20, flags: 0x0},\n\t1173: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1174: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1175: {region: 0x132, script: 0x5b, flags: 0x0},\n\t1176: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1177: {region: 0x124, script: 0xee, flags: 0x0},\n\t1178: {region: 0x32, script: 0x5b, flags: 0x0},\n\t1179: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1180: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1181: {region: 0xcf, script: 0x5b, flags: 0x0},\n\t1182: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1183: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1184: {region: 0x12e, script: 0x5b, flags: 0x0},\n\t1185: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1187: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1188: {region: 0xd5, script: 0x5b, flags: 0x0},\n\t1189: {region: 0x53, script: 0xe7, flags: 0x0},\n\t1190: {region: 0xe6, script: 0x5b, flags: 0x0},\n\t1191: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1192: {region: 0x107, script: 0x20, flags: 0x0},\n\t1193: {region: 0xbb, script: 0x5b, flags: 0x0},\n\t1194: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1195: {region: 0x107, script: 0x20, flags: 0x0},\n\t1196: {region: 0x3f, script: 0x4, flags: 0x1},\n\t1197: {region: 0x11d, script: 0xf3, flags: 0x0},\n\t1198: {region: 0x131, script: 0x20, flags: 0x0},\n\t1199: {region: 0x76, script: 0x5b, flags: 0x0},\n\t1200: {region: 0x2a, script: 0x5b, flags: 0x0},\n\t1202: {region: 0x43, script: 0x3, flags: 0x1},\n\t1203: {region: 0x9a, script: 0xe, flags: 0x0},\n\t1204: {region: 0xe9, script: 0x5, flags: 0x0},\n\t1205: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1206: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1207: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1208: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1209: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1210: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1211: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1212: {region: 0x46, script: 0x4, flags: 0x1},\n\t1213: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1214: {region: 0xb5, script: 0xf4, flags: 0x0},\n\t1215: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1216: {region: 0x162, script: 0x5b, flags: 0x0},\n\t1217: {region: 0x9f, script: 0x5b, flags: 0x0},\n\t1218: {region: 0x107, script: 0x5b, flags: 0x0},\n\t1219: {region: 0x13f, script: 0x5b, flags: 0x0},\n\t1220: {region: 0x11c, script: 0x5b, flags: 0x0},\n\t1221: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1222: {region: 0x36, script: 0x5b, flags: 0x0},\n\t1223: {region: 0x61, script: 0x5b, flags: 0x0},\n\t1224: {region: 0xd2, script: 0x5b, flags: 0x0},\n\t1225: {region: 0x1, script: 0x5b, flags: 0x0},\n\t1226: {region: 0x107, script: 0x5b, flags: 0x0},\n\t1227: {region: 0x6b, script: 0x5b, flags: 0x0},\n\t1228: {region: 0x130, script: 0x5b, flags: 0x0},\n\t1229: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1230: {region: 0x36, script: 0x5b, flags: 0x0},\n\t1231: {region: 0x4e, script: 0x5b, flags: 0x0},\n\t1232: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1233: {region: 0x70, script: 0x2c, flags: 0x0},\n\t1234: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1235: {region: 0xe8, script: 0x5b, flags: 0x0},\n\t1236: {region: 0x2f, script: 0x5b, flags: 0x0},\n\t1237: {region: 0x9a, script: 0xe9, flags: 0x0},\n\t1238: {region: 0x9a, script: 0x22, flags: 0x0},\n\t1239: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1240: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1241: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1242: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1243: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1244: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1245: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1246: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1247: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1248: {region: 0x141, script: 0x5b, flags: 0x0},\n\t1249: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1250: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1251: {region: 0xa9, script: 0x5, flags: 0x0},\n\t1252: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1253: {region: 0x115, script: 0x5b, flags: 0x0},\n\t1254: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1255: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1256: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1257: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1258: {region: 0x9a, script: 0x22, flags: 0x0},\n\t1259: {region: 0x53, script: 0x3b, flags: 0x0},\n\t1260: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1261: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1262: {region: 0x41, script: 0x5b, flags: 0x0},\n\t1263: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1264: {region: 0x12c, script: 0x18, flags: 0x0},\n\t1265: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1266: {region: 0x162, script: 0x5b, flags: 0x0},\n\t1267: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1268: {region: 0x12c, script: 0x63, flags: 0x0},\n\t1269: {region: 0x12c, script: 0x64, flags: 0x0},\n\t1270: {region: 0x7e, script: 0x2e, flags: 0x0},\n\t1271: {region: 0x53, script: 0x68, flags: 0x0},\n\t1272: {region: 0x10c, script: 0x6d, flags: 0x0},\n\t1273: {region: 0x109, script: 0x79, flags: 0x0},\n\t1274: {region: 0x9a, script: 0x22, flags: 0x0},\n\t1275: {region: 0x132, script: 0x5b, flags: 0x0},\n\t1276: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1277: {region: 0x9d, script: 0x93, flags: 0x0},\n\t1278: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1279: {region: 0x15f, script: 0xce, flags: 0x0},\n\t1280: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1281: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1282: {region: 0xdc, script: 0x22, flags: 0x0},\n\t1283: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1284: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1285: {region: 0xd2, script: 0x5b, flags: 0x0},\n\t1286: {region: 0x76, script: 0x5b, flags: 0x0},\n\t1287: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1288: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1289: {region: 0x52, script: 0x5b, flags: 0x0},\n\t1290: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1291: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1292: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1293: {region: 0x52, script: 0x5b, flags: 0x0},\n\t1294: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1295: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1296: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1297: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1298: {region: 0x1, script: 0x3e, flags: 0x0},\n\t1299: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1300: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1301: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1302: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1303: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1304: {region: 0xd7, script: 0x5b, flags: 0x0},\n\t1305: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1306: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1307: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1308: {region: 0x41, script: 0x5b, flags: 0x0},\n\t1309: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1310: {region: 0xd0, script: 0x5b, flags: 0x0},\n\t1311: {region: 0x4a, script: 0x3, flags: 0x1},\n\t1312: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1313: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1314: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1315: {region: 0x53, script: 0x5b, flags: 0x0},\n\t1316: {region: 0x10c, script: 0x5b, flags: 0x0},\n\t1318: {region: 0xa9, script: 0x5, flags: 0x0},\n\t1319: {region: 0xda, script: 0x5b, flags: 0x0},\n\t1320: {region: 0xbb, script: 0xeb, flags: 0x0},\n\t1321: {region: 0x4d, script: 0x14, flags: 0x1},\n\t1322: {region: 0x53, script: 0x7f, flags: 0x0},\n\t1323: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1324: {region: 0x123, script: 0x5b, flags: 0x0},\n\t1325: {region: 0xd1, script: 0x5b, flags: 0x0},\n\t1326: {region: 0x166, script: 0x5b, flags: 0x0},\n\t1327: {region: 0x162, script: 0x5b, flags: 0x0},\n\t1329: {region: 0x12c, script: 0x5b, flags: 0x0},\n}\n\n// likelyLangList holds lists info associated with likelyLang.\n// Size: 582 bytes, 97 elements\nvar likelyLangList = [97]likelyScriptRegion{\n\t0:  {region: 0x9d, script: 0x7, flags: 0x0},\n\t1:  {region: 0xa2, script: 0x7a, flags: 0x2},\n\t2:  {region: 0x11d, script: 0x87, flags: 0x2},\n\t3:  {region: 0x32, script: 0x5b, flags: 0x0},\n\t4:  {region: 0x9c, script: 0x5, flags: 0x4},\n\t5:  {region: 0x9d, script: 0x5, flags: 0x4},\n\t6:  {region: 0x107, script: 0x20, flags: 0x4},\n\t7:  {region: 0x9d, script: 0x5, flags: 0x2},\n\t8:  {region: 0x107, script: 0x20, flags: 0x0},\n\t9:  {region: 0x38, script: 0x2f, flags: 0x2},\n\t10: {region: 0x136, script: 0x5b, flags: 0x0},\n\t11: {region: 0x7c, script: 0xd1, flags: 0x2},\n\t12: {region: 0x115, script: 0x5b, flags: 0x0},\n\t13: {region: 0x85, script: 0x1, flags: 0x2},\n\t14: {region: 0x5e, script: 0x1f, flags: 0x0},\n\t15: {region: 0x88, script: 0x60, flags: 0x2},\n\t16: {region: 0xd7, script: 0x5b, flags: 0x0},\n\t17: {region: 0x52, script: 0x5, flags: 0x4},\n\t18: {region: 0x10c, script: 0x5, flags: 0x4},\n\t19: {region: 0xaf, script: 0x20, flags: 0x0},\n\t20: {region: 0x24, script: 0x5, flags: 0x4},\n\t21: {region: 0x53, script: 0x5, flags: 0x4},\n\t22: {region: 0x9d, script: 0x5, flags: 0x4},\n\t23: {region: 0xc6, script: 0x5, flags: 0x4},\n\t24: {region: 0x53, script: 0x5, flags: 0x2},\n\t25: {region: 0x12c, script: 0x5b, flags: 0x0},\n\t26: {region: 0xb1, script: 0x5, flags: 0x4},\n\t27: {region: 0x9c, script: 0x5, flags: 0x2},\n\t28: {region: 0xa6, script: 0x20, flags: 0x0},\n\t29: {region: 0x53, script: 0x5, flags: 0x4},\n\t30: {region: 0x12c, script: 0x5b, flags: 0x4},\n\t31: {region: 0x53, script: 0x5, flags: 0x2},\n\t32: {region: 0x12c, script: 0x5b, flags: 0x2},\n\t33: {region: 0xdc, script: 0x22, flags: 0x0},\n\t34: {region: 0x9a, script: 0x5e, flags: 0x2},\n\t35: {region: 0x84, script: 0x5b, flags: 0x0},\n\t36: {region: 0x85, script: 0x7e, flags: 0x4},\n\t37: {region: 0x85, script: 0x7e, flags: 0x2},\n\t38: {region: 0xc6, script: 0x20, flags: 0x0},\n\t39: {region: 0x53, script: 0x71, flags: 0x4},\n\t40: {region: 0x53, script: 0x71, flags: 0x2},\n\t41: {region: 0xd1, script: 0x5b, flags: 0x0},\n\t42: {region: 0x4a, script: 0x5, flags: 0x4},\n\t43: {region: 0x96, script: 0x5, flags: 0x4},\n\t44: {region: 0x9a, script: 0x36, flags: 0x0},\n\t45: {region: 0xe9, script: 0x5, flags: 0x4},\n\t46: {region: 0xe9, script: 0x5, flags: 0x2},\n\t47: {region: 0x9d, script: 0x8d, flags: 0x0},\n\t48: {region: 0x53, script: 0x8e, flags: 0x2},\n\t49: {region: 0xbb, script: 0xeb, flags: 0x0},\n\t50: {region: 0xda, script: 0x5b, flags: 0x4},\n\t51: {region: 0xe9, script: 0x5, flags: 0x0},\n\t52: {region: 0x9a, script: 0x22, flags: 0x2},\n\t53: {region: 0x9a, script: 0x50, flags: 0x2},\n\t54: {region: 0x9a, script: 0xd5, flags: 0x2},\n\t55: {region: 0x106, script: 0x20, flags: 0x0},\n\t56: {region: 0xbe, script: 0x5b, flags: 0x4},\n\t57: {region: 0x105, script: 0x5b, flags: 0x4},\n\t58: {region: 0x107, script: 0x5b, flags: 0x4},\n\t59: {region: 0x12c, script: 0x5b, flags: 0x4},\n\t60: {region: 0x125, script: 0x20, flags: 0x0},\n\t61: {region: 0xe9, script: 0x5, flags: 0x4},\n\t62: {region: 0xe9, script: 0x5, flags: 0x2},\n\t63: {region: 0x53, script: 0x5, flags: 0x0},\n\t64: {region: 0xaf, script: 0x20, flags: 0x4},\n\t65: {region: 0xc6, script: 0x20, flags: 0x4},\n\t66: {region: 0xaf, script: 0x20, flags: 0x2},\n\t67: {region: 0x9a, script: 0xe, flags: 0x0},\n\t68: {region: 0xdc, script: 0x22, flags: 0x4},\n\t69: {region: 0xdc, script: 0x22, flags: 0x2},\n\t70: {region: 0x138, script: 0x5b, flags: 0x0},\n\t71: {region: 0x24, script: 0x5, flags: 0x4},\n\t72: {region: 0x53, script: 0x20, flags: 0x4},\n\t73: {region: 0x24, script: 0x5, flags: 0x2},\n\t74: {region: 0x8e, script: 0x3c, flags: 0x0},\n\t75: {region: 0x53, script: 0x3b, flags: 0x4},\n\t76: {region: 0x53, script: 0x3b, flags: 0x2},\n\t77: {region: 0x53, script: 0x3b, flags: 0x0},\n\t78: {region: 0x2f, script: 0x3c, flags: 0x4},\n\t79: {region: 0x3e, script: 0x3c, flags: 0x4},\n\t80: {region: 0x7c, script: 0x3c, flags: 0x4},\n\t81: {region: 0x7f, script: 0x3c, flags: 0x4},\n\t82: {region: 0x8e, script: 0x3c, flags: 0x4},\n\t83: {region: 0x96, script: 0x3c, flags: 0x4},\n\t84: {region: 0xc7, script: 0x3c, flags: 0x4},\n\t85: {region: 0xd1, script: 0x3c, flags: 0x4},\n\t86: {region: 0xe3, script: 0x3c, flags: 0x4},\n\t87: {region: 0xe6, script: 0x3c, flags: 0x4},\n\t88: {region: 0xe8, script: 0x3c, flags: 0x4},\n\t89: {region: 0x117, script: 0x3c, flags: 0x4},\n\t90: {region: 0x124, script: 0x3c, flags: 0x4},\n\t91: {region: 0x12f, script: 0x3c, flags: 0x4},\n\t92: {region: 0x136, script: 0x3c, flags: 0x4},\n\t93: {region: 0x13f, script: 0x3c, flags: 0x4},\n\t94: {region: 0x12f, script: 0x11, flags: 0x2},\n\t95: {region: 0x12f, script: 0x37, flags: 0x2},\n\t96: {region: 0x12f, script: 0x3c, flags: 0x2},\n}\n\ntype likelyLangScript struct {\n\tlang   uint16\n\tscript uint16\n\tflags  uint8\n}\n\n// likelyRegion is a lookup table, indexed by regionID, for the most likely\n// languages and scripts given incomplete information. If more entries exist\n// for a given regionID, lang and script are the index and size respectively\n// of the list in likelyRegionList.\n// TODO: exclude containers and user-definable regions from the list.\n// Size: 2154 bytes, 359 elements\nvar likelyRegion = [359]likelyLangScript{\n\t34:  {lang: 0xd7, script: 0x5b, flags: 0x0},\n\t35:  {lang: 0x3a, script: 0x5, flags: 0x0},\n\t36:  {lang: 0x0, script: 0x2, flags: 0x1},\n\t39:  {lang: 0x2, script: 0x2, flags: 0x1},\n\t40:  {lang: 0x4, script: 0x2, flags: 0x1},\n\t42:  {lang: 0x3c0, script: 0x5b, flags: 0x0},\n\t43:  {lang: 0x0, script: 0x5b, flags: 0x0},\n\t44:  {lang: 0x13e, script: 0x5b, flags: 0x0},\n\t45:  {lang: 0x41b, script: 0x5b, flags: 0x0},\n\t46:  {lang: 0x10d, script: 0x5b, flags: 0x0},\n\t48:  {lang: 0x367, script: 0x5b, flags: 0x0},\n\t49:  {lang: 0x444, script: 0x5b, flags: 0x0},\n\t50:  {lang: 0x58, script: 0x5b, flags: 0x0},\n\t51:  {lang: 0x6, script: 0x2, flags: 0x1},\n\t53:  {lang: 0xa5, script: 0xe, flags: 0x0},\n\t54:  {lang: 0x367, script: 0x5b, flags: 0x0},\n\t55:  {lang: 0x15e, script: 0x5b, flags: 0x0},\n\t56:  {lang: 0x7e, script: 0x20, flags: 0x0},\n\t57:  {lang: 0x3a, script: 0x5, flags: 0x0},\n\t58:  {lang: 0x3d9, script: 0x5b, flags: 0x0},\n\t59:  {lang: 0x15e, script: 0x5b, flags: 0x0},\n\t60:  {lang: 0x15e, script: 0x5b, flags: 0x0},\n\t62:  {lang: 0x31f, script: 0x5b, flags: 0x0},\n\t63:  {lang: 0x13e, script: 0x5b, flags: 0x0},\n\t64:  {lang: 0x3a1, script: 0x5b, flags: 0x0},\n\t65:  {lang: 0x3c0, script: 0x5b, flags: 0x0},\n\t67:  {lang: 0x8, script: 0x2, flags: 0x1},\n\t69:  {lang: 0x0, script: 0x5b, flags: 0x0},\n\t71:  {lang: 0x71, script: 0x20, flags: 0x0},\n\t73:  {lang: 0x512, script: 0x3e, flags: 0x2},\n\t74:  {lang: 0x31f, script: 0x5, flags: 0x2},\n\t75:  {lang: 0x445, script: 0x5b, flags: 0x0},\n\t76:  {lang: 0x15e, script: 0x5b, flags: 0x0},\n\t77:  {lang: 0x15e, script: 0x5b, flags: 0x0},\n\t78:  {lang: 0x10d, script: 0x5b, flags: 0x0},\n\t79:  {lang: 0x15e, script: 0x5b, flags: 0x0},\n\t81:  {lang: 0x13e, script: 0x5b, flags: 0x0},\n\t82:  {lang: 0x15e, script: 0x5b, flags: 0x0},\n\t83:  {lang: 0xa, script: 0x4, flags: 0x1},\n\t84:  {lang: 0x13e, script: 0x5b, flags: 0x0},\n\t85:  {lang: 0x0, script: 0x5b, flags: 0x0},\n\t87:  {lang: 0x13e, script: 0x5b, flags: 0x0},\n\t90:  {lang: 0x13e, script: 0x5b, flags: 0x0},\n\t91:  {lang: 0x3c0, script: 0x5b, flags: 0x0},\n\t92:  {lang: 0x3a1, script: 0x5b, flags: 0x0},\n\t94:  {lang: 0xe, script: 0x2, flags: 0x1},\n\t95:  {lang: 0xfa, script: 0x5b, flags: 0x0},\n\t97:  {lang: 0x10d, script: 0x5b, flags: 0x0},\n\t99:  {lang: 0x1, script: 0x5b, flags: 0x0},\n\t100: {lang: 0x101, script: 0x5b, flags: 0x0},\n\t102: {lang: 0x13e, script: 0x5b, flags: 0x0},\n\t104: {lang: 0x10, script: 0x2, flags: 0x1},\n\t105: {lang: 0x13e, script: 0x5b, flags: 0x0},\n\t106: {lang: 0x13e, script: 0x5b, flags: 0x0},\n\t107: {lang: 0x140, script: 0x5b, flags: 0x0},\n\t108: {lang: 0x3a, script: 0x5, flags: 0x0},\n\t109: {lang: 0x3a, script: 0x5, flags: 0x0},\n\t110: {lang: 0x46f, script: 0x2c, flags: 0x0},\n\t111: {lang: 0x13e, script: 0x5b, flags: 0x0},\n\t112: {lang: 0x12, script: 0x2, flags: 0x1},\n\t114: {lang: 0x10d, script: 0x5b, flags: 0x0},\n\t115: {lang: 0x151, script: 0x5b, flags: 0x0},\n\t116: {lang: 0x1c0, script: 0x22, flags: 0x2},\n\t119: {lang: 0x158, script: 0x5b, flags: 0x0},\n\t121: {lang: 0x15e, script: 0x5b, flags: 0x0},\n\t123: {lang: 0x15e, script: 0x5b, flags: 0x0},\n\t124: {lang: 0x14, script: 0x2, flags: 0x1},\n\t126: {lang: 0x16, script: 0x3, flags: 0x1},\n\t127: {lang: 0x15e, script: 0x5b, flags: 0x0},\n\t129: {lang: 0x21, script: 0x5b, flags: 0x0},\n\t131: {lang: 0x245, script: 0x5b, flags: 0x0},\n\t133: {lang: 0x15e, script: 0x5b, flags: 0x0},\n\t134: {lang: 0x15e, script: 0x5b, flags: 0x0},\n\t135: {lang: 0x13e, script: 0x5b, flags: 0x0},\n\t136: {lang: 0x19, script: 0x2, flags: 0x1},\n\t137: {lang: 0x0, script: 0x5b, flags: 0x0},\n\t138: {lang: 0x13e, script: 0x5b, flags: 0x0},\n\t140: {lang: 0x3c0, script: 0x5b, flags: 0x0},\n\t142: {lang: 0x529, script: 0x3c, flags: 0x0},\n\t143: {lang: 0x0, script: 0x5b, flags: 0x0},\n\t144: {lang: 0x13e, script: 0x5b, flags: 0x0},\n\t145: {lang: 0x1d1, script: 0x5b, flags: 0x0},\n\t146: {lang: 0x1d4, script: 0x5b, flags: 0x0},\n\t147: {lang: 0x1d5, script: 0x5b, flags: 0x0},\n\t149: {lang: 0x13e, script: 0x5b, flags: 0x0},\n\t150: {lang: 0x1b, script: 0x2, flags: 0x1},\n\t152: {lang: 0x1bc, script: 0x3e, flags: 0x0},\n\t154: {lang: 0x1d, script: 0x3, flags: 0x1},\n\t156: {lang: 0x3a, script: 0x5, flags: 0x0},\n\t157: {lang: 0x20, script: 0x2, flags: 0x1},\n\t158: {lang: 0x1f8, script: 0x5b, flags: 0x0},\n\t159: {lang: 0x1f9, script: 0x5b, flags: 0x0},\n\t162: {lang: 0x3a, script: 0x5, flags: 0x0},\n\t163: {lang: 0x200, script: 0x49, flags: 0x0},\n\t165: {lang: 0x445, script: 0x5b, flags: 0x0},\n\t166: {lang: 0x28a, script: 0x20, flags: 0x0},\n\t167: {lang: 0x22, script: 0x3, flags: 0x1},\n\t169: {lang: 0x25, script: 0x2, flags: 0x1},\n\t171: {lang: 0x254, script: 0x54, flags: 0x0},\n\t172: {lang: 0x254, script: 0x54, flags: 0x0},\n\t173: {lang: 0x3a, script: 0x5, flags: 0x0},\n\t175: {lang: 0x3e2, script: 0x20, flags: 0x0},\n\t176: {lang: 0x27, script: 0x2, flags: 0x1},\n\t177: {lang: 0x3a, script: 0x5, flags: 0x0},\n\t179: {lang: 0x10d, script: 0x5b, flags: 0x0},\n\t180: {lang: 0x40c, script: 0xd6, flags: 0x0},\n\t182: {lang: 0x43b, script: 0x5b, flags: 0x0},\n\t183: {lang: 0x2c0, script: 0x5b, flags: 0x0},\n\t184: {lang: 0x15e, script: 0x5b, flags: 0x0},\n\t185: {lang: 0x2c7, script: 0x5b, flags: 0x0},\n\t186: {lang: 0x3a, script: 0x5, flags: 0x0},\n\t187: {lang: 0x29, script: 0x2, flags: 0x1},\n\t188: {lang: 0x15e, script: 0x5b, flags: 0x0},\n\t189: {lang: 0x2b, script: 0x2, flags: 0x1},\n\t190: {lang: 0x432, script: 0x5b, flags: 0x0},\n\t191: {lang: 0x15e, script: 0x5b, flags: 0x0},\n\t192: {lang: 0x2f1, script: 0x5b, flags: 0x0},\n\t195: {lang: 0x2d, script: 0x2, flags: 0x1},\n\t196: {lang: 0xa0, script: 0x5b, flags: 0x0},\n\t197: {lang: 0x2f, script: 0x2, flags: 0x1},\n\t198: {lang: 0x31, script: 0x2, flags: 0x1},\n\t199: {lang: 0x33, script: 0x2, flags: 0x1},\n\t201: {lang: 0x15e, script: 0x5b, flags: 0x0},\n\t202: {lang: 0x35, script: 0x2, flags: 0x1},\n\t204: {lang: 0x320, script: 0x5b, flags: 0x0},\n\t205: {lang: 0x37, script: 0x3, flags: 0x1},\n\t206: {lang: 0x128, script: 0xed, flags: 0x0},\n\t208: {lang: 0x13e, script: 0x5b, flags: 0x0},\n\t209: {lang: 0x31f, script: 0x5b, flags: 0x0},\n\t210: {lang: 0x3c0, script: 0x5b, flags: 0x0},\n\t211: {lang: 0x16, script: 0x5b, flags: 0x0},\n\t212: {lang: 0x15e, script: 0x5b, flags: 0x0},\n\t213: {lang: 0x1b4, script: 0x5b, flags: 0x0},\n\t215: {lang: 0x1b4, script: 0x5, flags: 0x2},\n\t217: {lang: 0x13e, script: 0x5b, flags: 0x0},\n\t218: {lang: 0x367, script: 0x5b, flags: 0x0},\n\t219: {lang: 0x347, script: 0x5b, flags: 0x0},\n\t220: {lang: 0x351, script: 0x22, flags: 0x0},\n\t226: {lang: 0x3a, script: 0x5, flags: 0x0},\n\t227: {lang: 0x13e, script: 0x5b, flags: 0x0},\n\t229: {lang: 0x13e, script: 0x5b, flags: 0x0},\n\t230: {lang: 0x15e, script: 0x5b, flags: 0x0},\n\t231: {lang: 0x486, script: 0x5b, flags: 0x0},\n\t232: {lang: 0x153, script: 0x5b, flags: 0x0},\n\t233: {lang: 0x3a, script: 0x3, flags: 0x1},\n\t234: {lang: 0x3b3, script: 0x5b, flags: 0x0},\n\t235: {lang: 0x15e, script: 0x5b, flags: 0x0},\n\t237: {lang: 0x13e, script: 0x5b, flags: 0x0},\n\t238: {lang: 0x3a, script: 0x5, flags: 0x0},\n\t239: {lang: 0x3c0, script: 0x5b, flags: 0x0},\n\t241: {lang: 0x3a2, script: 0x5b, flags: 0x0},\n\t242: {lang: 0x194, script: 0x5b, flags: 0x0},\n\t244: {lang: 0x3a, script: 0x5, flags: 0x0},\n\t259: {lang: 0x15e, script: 0x5b, flags: 0x0},\n\t261: {lang: 0x3d, script: 0x2, flags: 0x1},\n\t262: {lang: 0x432, script: 0x20, flags: 0x0},\n\t263: {lang: 0x3f, script: 0x2, flags: 0x1},\n\t264: {lang: 0x3e5, script: 0x5b, flags: 0x0},\n\t265: {lang: 0x3a, script: 0x5, flags: 0x0},\n\t267: {lang: 0x15e, script: 0x5b, flags: 0x0},\n\t268: {lang: 0x3a, script: 0x5, flags: 0x0},\n\t269: {lang: 0x41, script: 0x2, flags: 0x1},\n\t272: {lang: 0x416, script: 0x5b, flags: 0x0},\n\t273: {lang: 0x347, script: 0x5b, flags: 0x0},\n\t274: {lang: 0x43, script: 0x2, flags: 0x1},\n\t276: {lang: 0x1f9, script: 0x5b, flags: 0x0},\n\t277: {lang: 0x15e, script: 0x5b, flags: 0x0},\n\t278: {lang: 0x429, script: 0x5b, flags: 0x0},\n\t279: {lang: 0x367, script: 0x5b, flags: 0x0},\n\t281: {lang: 0x3c0, script: 0x5b, flags: 0x0},\n\t283: {lang: 0x13e, script: 0x5b, flags: 0x0},\n\t285: {lang: 0x45, script: 0x2, flags: 0x1},\n\t289: {lang: 0x15e, script: 0x5b, flags: 0x0},\n\t290: {lang: 0x15e, script: 0x5b, flags: 0x0},\n\t291: {lang: 0x47, script: 0x2, flags: 0x1},\n\t292: {lang: 0x49, script: 0x3, flags: 0x1},\n\t293: {lang: 0x4c, script: 0x2, flags: 0x1},\n\t294: {lang: 0x477, script: 0x5b, flags: 0x0},\n\t295: {lang: 0x3c0, script: 0x5b, flags: 0x0},\n\t296: {lang: 0x476, script: 0x5b, flags: 0x0},\n\t297: {lang: 0x4e, script: 0x2, flags: 0x1},\n\t298: {lang: 0x482, script: 0x5b, flags: 0x0},\n\t300: {lang: 0x50, script: 0x4, flags: 0x1},\n\t302: {lang: 0x4a0, script: 0x5b, flags: 0x0},\n\t303: {lang: 0x54, script: 0x2, flags: 0x1},\n\t304: {lang: 0x445, script: 0x5b, flags: 0x0},\n\t305: {lang: 0x56, script: 0x3, flags: 0x1},\n\t306: {lang: 0x445, script: 0x5b, flags: 0x0},\n\t310: {lang: 0x512, script: 0x3e, flags: 0x2},\n\t311: {lang: 0x13e, script: 0x5b, flags: 0x0},\n\t312: {lang: 0x4bc, script: 0x5b, flags: 0x0},\n\t313: {lang: 0x1f9, script: 0x5b, flags: 0x0},\n\t316: {lang: 0x13e, script: 0x5b, flags: 0x0},\n\t319: {lang: 0x4c3, script: 0x5b, flags: 0x0},\n\t320: {lang: 0x8a, script: 0x5b, flags: 0x0},\n\t321: {lang: 0x15e, script: 0x5b, flags: 0x0},\n\t323: {lang: 0x41b, script: 0x5b, flags: 0x0},\n\t334: {lang: 0x59, script: 0x2, flags: 0x1},\n\t351: {lang: 0x3a, script: 0x5, flags: 0x0},\n\t352: {lang: 0x5b, script: 0x2, flags: 0x1},\n\t357: {lang: 0x423, script: 0x5b, flags: 0x0},\n}\n\n// likelyRegionList holds lists info associated with likelyRegion.\n// Size: 558 bytes, 93 elements\nvar likelyRegionList = [93]likelyLangScript{\n\t0:  {lang: 0x148, script: 0x5, flags: 0x0},\n\t1:  {lang: 0x476, script: 0x5b, flags: 0x0},\n\t2:  {lang: 0x431, script: 0x5b, flags: 0x0},\n\t3:  {lang: 0x2ff, script: 0x20, flags: 0x0},\n\t4:  {lang: 0x1d7, script: 0x8, flags: 0x0},\n\t5:  {lang: 0x274, script: 0x5b, flags: 0x0},\n\t6:  {lang: 0xb7, script: 0x5b, flags: 0x0},\n\t7:  {lang: 0x432, script: 0x20, flags: 0x0},\n\t8:  {lang: 0x12d, script: 0xef, flags: 0x0},\n\t9:  {lang: 0x351, script: 0x22, flags: 0x0},\n\t10: {lang: 0x529, script: 0x3b, flags: 0x0},\n\t11: {lang: 0x4ac, script: 0x5, flags: 0x0},\n\t12: {lang: 0x523, script: 0x5b, flags: 0x0},\n\t13: {lang: 0x29a, script: 0xee, flags: 0x0},\n\t14: {lang: 0x136, script: 0x34, flags: 0x0},\n\t15: {lang: 0x48a, script: 0x5b, flags: 0x0},\n\t16: {lang: 0x3a, script: 0x5, flags: 0x0},\n\t17: {lang: 0x15e, script: 0x5b, flags: 0x0},\n\t18: {lang: 0x27, script: 0x2c, flags: 0x0},\n\t19: {lang: 0x139, script: 0x5b, flags: 0x0},\n\t20: {lang: 0x26a, script: 0x5, flags: 0x2},\n\t21: {lang: 0x512, script: 0x3e, flags: 0x2},\n\t22: {lang: 0x210, script: 0x2e, flags: 0x0},\n\t23: {lang: 0x5, script: 0x20, flags: 0x0},\n\t24: {lang: 0x274, script: 0x5b, flags: 0x0},\n\t25: {lang: 0x136, script: 0x34, flags: 0x0},\n\t26: {lang: 0x2ff, script: 0x20, flags: 0x0},\n\t27: {lang: 0x1e1, script: 0x5b, flags: 0x0},\n\t28: {lang: 0x31f, script: 0x5, flags: 0x0},\n\t29: {lang: 0x1be, script: 0x22, flags: 0x0},\n\t30: {lang: 0x4b4, script: 0x5, flags: 0x0},\n\t31: {lang: 0x236, script: 0x76, flags: 0x0},\n\t32: {lang: 0x148, script: 0x5, flags: 0x0},\n\t33: {lang: 0x476, script: 0x5b, flags: 0x0},\n\t34: {lang: 0x24a, script: 0x4f, flags: 0x0},\n\t35: {lang: 0xe6, script: 0x5, flags: 0x0},\n\t36: {lang: 0x226, script: 0xee, flags: 0x0},\n\t37: {lang: 0x3a, script: 0x5, flags: 0x0},\n\t38: {lang: 0x15e, script: 0x5b, flags: 0x0},\n\t39: {lang: 0x2b8, script: 0x58, flags: 0x0},\n\t40: {lang: 0x226, script: 0xee, flags: 0x0},\n\t41: {lang: 0x3a, script: 0x5, flags: 0x0},\n\t42: {lang: 0x15e, script: 0x5b, flags: 0x0},\n\t43: {lang: 0x3dc, script: 0x5b, flags: 0x0},\n\t44: {lang: 0x4ae, script: 0x20, flags: 0x0},\n\t45: {lang: 0x2ff, script: 0x20, flags: 0x0},\n\t46: {lang: 0x431, script: 0x5b, flags: 0x0},\n\t47: {lang: 0x331, script: 0x76, flags: 0x0},\n\t48: {lang: 0x213, script: 0x5b, flags: 0x0},\n\t49: {lang: 0x30b, script: 0x20, flags: 0x0},\n\t50: {lang: 0x242, script: 0x5, flags: 0x0},\n\t51: {lang: 0x529, script: 0x3c, flags: 0x0},\n\t52: {lang: 0x3c0, script: 0x5b, flags: 0x0},\n\t53: {lang: 0x3a, script: 0x5, flags: 0x0},\n\t54: {lang: 0x15e, script: 0x5b, flags: 0x0},\n\t55: {lang: 0x2ed, script: 0x5b, flags: 0x0},\n\t56: {lang: 0x4b4, script: 0x5, flags: 0x0},\n\t57: {lang: 0x88, script: 0x22, flags: 0x0},\n\t58: {lang: 0x4b4, script: 0x5, flags: 0x0},\n\t59: {lang: 0x4b4, script: 0x5, flags: 0x0},\n\t60: {lang: 0xbe, script: 0x22, flags: 0x0},\n\t61: {lang: 0x3dc, script: 0x5b, flags: 0x0},\n\t62: {lang: 0x7e, script: 0x20, flags: 0x0},\n\t63: {lang: 0x3e2, script: 0x20, flags: 0x0},\n\t64: {lang: 0x267, script: 0x5b, flags: 0x0},\n\t65: {lang: 0x444, script: 0x5b, flags: 0x0},\n\t66: {lang: 0x512, script: 0x3e, flags: 0x0},\n\t67: {lang: 0x412, script: 0x5b, flags: 0x0},\n\t68: {lang: 0x4ae, script: 0x20, flags: 0x0},\n\t69: {lang: 0x3a, script: 0x5, flags: 0x0},\n\t70: {lang: 0x15e, script: 0x5b, flags: 0x0},\n\t71: {lang: 0x15e, script: 0x5b, flags: 0x0},\n\t72: {lang: 0x35, script: 0x5, flags: 0x0},\n\t73: {lang: 0x46b, script: 0xee, flags: 0x0},\n\t74: {lang: 0x2ec, script: 0x5, flags: 0x0},\n\t75: {lang: 0x30f, script: 0x76, flags: 0x0},\n\t76: {lang: 0x467, script: 0x20, flags: 0x0},\n\t77: {lang: 0x148, script: 0x5, flags: 0x0},\n\t78: {lang: 0x3a, script: 0x5, flags: 0x0},\n\t79: {lang: 0x15e, script: 0x5b, flags: 0x0},\n\t80: {lang: 0x48a, script: 0x5b, flags: 0x0},\n\t81: {lang: 0x58, script: 0x5, flags: 0x0},\n\t82: {lang: 0x219, script: 0x20, flags: 0x0},\n\t83: {lang: 0x81, script: 0x34, flags: 0x0},\n\t84: {lang: 0x529, script: 0x3c, flags: 0x0},\n\t85: {lang: 0x48c, script: 0x5b, flags: 0x0},\n\t86: {lang: 0x4ae, script: 0x20, flags: 0x0},\n\t87: {lang: 0x512, script: 0x3e, flags: 0x0},\n\t88: {lang: 0x3b3, script: 0x5b, flags: 0x0},\n\t89: {lang: 0x431, script: 0x5b, flags: 0x0},\n\t90: {lang: 0x432, script: 0x20, flags: 0x0},\n\t91: {lang: 0x15e, script: 0x5b, flags: 0x0},\n\t92: {lang: 0x446, script: 0x5, flags: 0x0},\n}\n\ntype likelyTag struct {\n\tlang   uint16\n\tregion uint16\n\tscript uint16\n}\n\n// Size: 198 bytes, 33 elements\nvar likelyRegionGroup = [33]likelyTag{\n\t1:  {lang: 0x139, region: 0xd7, script: 0x5b},\n\t2:  {lang: 0x139, region: 0x136, script: 0x5b},\n\t3:  {lang: 0x3c0, region: 0x41, script: 0x5b},\n\t4:  {lang: 0x139, region: 0x2f, script: 0x5b},\n\t5:  {lang: 0x139, region: 0xd7, script: 0x5b},\n\t6:  {lang: 0x13e, region: 0xd0, script: 0x5b},\n\t7:  {lang: 0x445, region: 0x130, script: 0x5b},\n\t8:  {lang: 0x3a, region: 0x6c, script: 0x5},\n\t9:  {lang: 0x445, region: 0x4b, script: 0x5b},\n\t10: {lang: 0x139, region: 0x162, script: 0x5b},\n\t11: {lang: 0x139, region: 0x136, script: 0x5b},\n\t12: {lang: 0x139, region: 0x136, script: 0x5b},\n\t13: {lang: 0x13e, region: 0x5a, script: 0x5b},\n\t14: {lang: 0x529, region: 0x53, script: 0x3b},\n\t15: {lang: 0x1be, region: 0x9a, script: 0x22},\n\t16: {lang: 0x1e1, region: 0x96, script: 0x5b},\n\t17: {lang: 0x1f9, region: 0x9f, script: 0x5b},\n\t18: {lang: 0x139, region: 0x2f, script: 0x5b},\n\t19: {lang: 0x139, region: 0xe7, script: 0x5b},\n\t20: {lang: 0x139, region: 0x8b, script: 0x5b},\n\t21: {lang: 0x41b, region: 0x143, script: 0x5b},\n\t22: {lang: 0x529, region: 0x53, script: 0x3b},\n\t23: {lang: 0x4bc, region: 0x138, script: 0x5b},\n\t24: {lang: 0x3a, region: 0x109, script: 0x5},\n\t25: {lang: 0x3e2, region: 0x107, script: 0x20},\n\t26: {lang: 0x3e2, region: 0x107, script: 0x20},\n\t27: {lang: 0x139, region: 0x7c, script: 0x5b},\n\t28: {lang: 0x10d, region: 0x61, script: 0x5b},\n\t29: {lang: 0x139, region: 0xd7, script: 0x5b},\n\t30: {lang: 0x13e, region: 0x1f, script: 0x5b},\n\t31: {lang: 0x139, region: 0x9b, script: 0x5b},\n\t32: {lang: 0x139, region: 0x7c, script: 0x5b},\n}\n\n// Size: 264 bytes, 33 elements\nvar regionContainment = [33]uint64{\n\t// Entry 0 - 1F\n\t0x00000001ffffffff, 0x00000000200007a2, 0x0000000000003044, 0x0000000000000008,\n\t0x00000000803c0010, 0x0000000000000020, 0x0000000000000040, 0x0000000000000080,\n\t0x0000000000000100, 0x0000000000000200, 0x0000000000000400, 0x000000004000384c,\n\t0x0000000000001000, 0x0000000000002000, 0x0000000000004000, 0x0000000000008000,\n\t0x0000000000010000, 0x0000000000020000, 0x0000000000040000, 0x0000000000080000,\n\t0x0000000000100000, 0x0000000000200000, 0x0000000001c1c000, 0x0000000000800000,\n\t0x0000000001000000, 0x000000001e020000, 0x0000000004000000, 0x0000000008000000,\n\t0x0000000010000000, 0x00000000200006a0, 0x0000000040002048, 0x0000000080000000,\n\t// Entry 20 - 3F\n\t0x0000000100000000,\n}\n\n// regionInclusion maps region identifiers to sets of regions in regionInclusionBits,\n// where each set holds all groupings that are directly connected in a region\n// containment graph.\n// Size: 359 bytes, 359 elements\nvar regionInclusion = [359]uint8{\n\t// Entry 0 - 3F\n\t0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06,\n\t0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e,\n\t0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16,\n\t0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e,\n\t0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x26, 0x23,\n\t0x24, 0x26, 0x27, 0x22, 0x28, 0x29, 0x2a, 0x2b,\n\t0x26, 0x2c, 0x24, 0x23, 0x26, 0x25, 0x2a, 0x2d,\n\t0x2e, 0x24, 0x2f, 0x2d, 0x26, 0x30, 0x31, 0x28,\n\t// Entry 40 - 7F\n\t0x26, 0x28, 0x26, 0x25, 0x31, 0x22, 0x32, 0x33,\n\t0x34, 0x30, 0x22, 0x27, 0x27, 0x27, 0x35, 0x2d,\n\t0x29, 0x28, 0x27, 0x36, 0x28, 0x22, 0x21, 0x34,\n\t0x23, 0x21, 0x26, 0x2d, 0x26, 0x22, 0x37, 0x2e,\n\t0x35, 0x2a, 0x22, 0x2f, 0x38, 0x26, 0x26, 0x21,\n\t0x39, 0x39, 0x28, 0x38, 0x39, 0x39, 0x2f, 0x3a,\n\t0x2f, 0x20, 0x21, 0x38, 0x3b, 0x28, 0x3c, 0x2c,\n\t0x21, 0x2a, 0x35, 0x27, 0x38, 0x26, 0x24, 0x28,\n\t// Entry 80 - BF\n\t0x2c, 0x2d, 0x23, 0x30, 0x2d, 0x2d, 0x26, 0x27,\n\t0x3a, 0x22, 0x34, 0x3c, 0x2d, 0x28, 0x36, 0x22,\n\t0x34, 0x3a, 0x26, 0x2e, 0x21, 0x39, 0x31, 0x38,\n\t0x24, 0x2c, 0x25, 0x22, 0x24, 0x25, 0x2c, 0x3a,\n\t0x2c, 0x26, 0x24, 0x36, 0x21, 0x2f, 0x3d, 0x31,\n\t0x3c, 0x2f, 0x26, 0x36, 0x36, 0x24, 0x26, 0x3d,\n\t0x31, 0x24, 0x26, 0x35, 0x25, 0x2d, 0x32, 0x38,\n\t0x2a, 0x38, 0x39, 0x39, 0x35, 0x33, 0x23, 0x26,\n\t// Entry C0 - FF\n\t0x2f, 0x3c, 0x21, 0x23, 0x2d, 0x31, 0x36, 0x36,\n\t0x3c, 0x26, 0x2d, 0x26, 0x3a, 0x2f, 0x25, 0x2f,\n\t0x34, 0x31, 0x2f, 0x32, 0x3b, 0x2d, 0x2b, 0x2d,\n\t0x21, 0x34, 0x2a, 0x2c, 0x25, 0x21, 0x3c, 0x24,\n\t0x29, 0x2b, 0x24, 0x34, 0x21, 0x28, 0x29, 0x3b,\n\t0x31, 0x25, 0x2e, 0x30, 0x29, 0x26, 0x24, 0x3a,\n\t0x21, 0x3c, 0x28, 0x21, 0x24, 0x21, 0x21, 0x1f,\n\t0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,\n\t// Entry 100 - 13F\n\t0x21, 0x21, 0x21, 0x2f, 0x21, 0x2e, 0x23, 0x33,\n\t0x2f, 0x24, 0x3b, 0x2f, 0x39, 0x38, 0x31, 0x2d,\n\t0x3a, 0x2c, 0x2e, 0x2d, 0x23, 0x2d, 0x2f, 0x28,\n\t0x2f, 0x27, 0x33, 0x34, 0x26, 0x24, 0x32, 0x22,\n\t0x26, 0x27, 0x22, 0x2d, 0x31, 0x3d, 0x29, 0x31,\n\t0x3d, 0x39, 0x29, 0x31, 0x24, 0x26, 0x29, 0x36,\n\t0x2f, 0x33, 0x2f, 0x21, 0x22, 0x21, 0x30, 0x28,\n\t0x3d, 0x23, 0x26, 0x21, 0x28, 0x26, 0x26, 0x31,\n\t// Entry 140 - 17F\n\t0x3b, 0x29, 0x21, 0x29, 0x21, 0x21, 0x21, 0x21,\n\t0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x23, 0x21,\n\t0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,\n\t0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x24, 0x24,\n\t0x2f, 0x23, 0x32, 0x2f, 0x27, 0x2f, 0x21,\n}\n\n// regionInclusionBits is an array of bit vectors where every vector represents\n// a set of region groupings.  These sets are used to compute the distance\n// between two regions for the purpose of language matching.\n// Size: 584 bytes, 73 elements\nvar regionInclusionBits = [73]uint64{\n\t// Entry 0 - 1F\n\t0x0000000102400813, 0x00000000200007a3, 0x0000000000003844, 0x0000000040000808,\n\t0x00000000803c0011, 0x0000000020000022, 0x0000000040000844, 0x0000000020000082,\n\t0x0000000000000102, 0x0000000020000202, 0x0000000020000402, 0x000000004000384d,\n\t0x0000000000001804, 0x0000000040002804, 0x0000000000404000, 0x0000000000408000,\n\t0x0000000000410000, 0x0000000002020000, 0x0000000000040010, 0x0000000000080010,\n\t0x0000000000100010, 0x0000000000200010, 0x0000000001c1c001, 0x0000000000c00000,\n\t0x0000000001400000, 0x000000001e020001, 0x0000000006000000, 0x000000000a000000,\n\t0x0000000012000000, 0x00000000200006a2, 0x0000000040002848, 0x0000000080000010,\n\t// Entry 20 - 3F\n\t0x0000000100000001, 0x0000000000000001, 0x0000000080000000, 0x0000000000020000,\n\t0x0000000001000000, 0x0000000000008000, 0x0000000000002000, 0x0000000000000200,\n\t0x0000000000000008, 0x0000000000200000, 0x0000000110000000, 0x0000000000040000,\n\t0x0000000008000000, 0x0000000000000020, 0x0000000104000000, 0x0000000000000080,\n\t0x0000000000001000, 0x0000000000010000, 0x0000000000000400, 0x0000000004000000,\n\t0x0000000000000040, 0x0000000010000000, 0x0000000000004000, 0x0000000101000000,\n\t0x0000000108000000, 0x0000000000000100, 0x0000000100020000, 0x0000000000080000,\n\t0x0000000000100000, 0x0000000000800000, 0x00000001ffffffff, 0x0000000122400fb3,\n\t// Entry 40 - 5F\n\t0x00000001827c0813, 0x000000014240385f, 0x0000000103c1c813, 0x000000011e420813,\n\t0x0000000112000001, 0x0000000106000001, 0x0000000101400001, 0x000000010a000001,\n\t0x0000000102020001,\n}\n\n// regionInclusionNext marks, for each entry in regionInclusionBits, the set of\n// all groups that are reachable from the groups set in the respective entry.\n// Size: 73 bytes, 73 elements\nvar regionInclusionNext = [73]uint8{\n\t// Entry 0 - 3F\n\t0x3e, 0x3f, 0x0b, 0x0b, 0x40, 0x01, 0x0b, 0x01,\n\t0x01, 0x01, 0x01, 0x41, 0x0b, 0x0b, 0x16, 0x16,\n\t0x16, 0x19, 0x04, 0x04, 0x04, 0x04, 0x42, 0x16,\n\t0x16, 0x43, 0x19, 0x19, 0x19, 0x01, 0x0b, 0x04,\n\t0x00, 0x00, 0x1f, 0x11, 0x18, 0x0f, 0x0d, 0x09,\n\t0x03, 0x15, 0x44, 0x12, 0x1b, 0x05, 0x45, 0x07,\n\t0x0c, 0x10, 0x0a, 0x1a, 0x06, 0x1c, 0x0e, 0x46,\n\t0x47, 0x08, 0x48, 0x13, 0x14, 0x17, 0x3e, 0x3e,\n\t// Entry 40 - 7F\n\t0x3e, 0x3e, 0x3e, 0x3e, 0x43, 0x43, 0x42, 0x43,\n\t0x43,\n}\n\ntype parentRel struct {\n\tlang       uint16\n\tscript     uint16\n\tmaxScript  uint16\n\ttoRegion   uint16\n\tfromRegion []uint16\n}\n\n// Size: 414 bytes, 5 elements\nvar parents = [5]parentRel{\n\t0: {lang: 0x139, script: 0x0, maxScript: 0x5b, toRegion: 0x1, fromRegion: []uint16{0x1a, 0x25, 0x26, 0x2f, 0x34, 0x36, 0x3d, 0x42, 0x46, 0x48, 0x49, 0x4a, 0x50, 0x52, 0x5d, 0x5e, 0x62, 0x65, 0x6e, 0x74, 0x75, 0x76, 0x7c, 0x7d, 0x80, 0x81, 0x82, 0x84, 0x8d, 0x8e, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0xa0, 0xa1, 0xa5, 0xa8, 0xaa, 0xae, 0xb2, 0xb5, 0xb6, 0xc0, 0xc7, 0xcb, 0xcc, 0xcd, 0xcf, 0xd1, 0xd3, 0xd6, 0xd7, 0xde, 0xe0, 0xe1, 0xe7, 0xe8, 0xe9, 0xec, 0xf1, 0x108, 0x10a, 0x10b, 0x10c, 0x10e, 0x10f, 0x113, 0x118, 0x11c, 0x11e, 0x120, 0x126, 0x12a, 0x12d, 0x12e, 0x130, 0x132, 0x13a, 0x13d, 0x140, 0x143, 0x162, 0x163, 0x165}},\n\t1: {lang: 0x139, script: 0x0, maxScript: 0x5b, toRegion: 0x1a, fromRegion: []uint16{0x2e, 0x4e, 0x61, 0x64, 0x73, 0xda, 0x10d, 0x110}},\n\t2: {lang: 0x13e, script: 0x0, maxScript: 0x5b, toRegion: 0x1f, fromRegion: []uint16{0x2c, 0x3f, 0x41, 0x48, 0x51, 0x54, 0x57, 0x5a, 0x66, 0x6a, 0x8a, 0x90, 0xd0, 0xd9, 0xe3, 0xe5, 0xed, 0xf2, 0x11b, 0x136, 0x137, 0x13c}},\n\t3: {lang: 0x3c0, script: 0x0, maxScript: 0x5b, toRegion: 0xef, fromRegion: []uint16{0x2a, 0x4e, 0x5b, 0x87, 0x8c, 0xb8, 0xc7, 0xd2, 0x119, 0x127}},\n\t4: {lang: 0x529, script: 0x3c, maxScript: 0x3c, toRegion: 0x8e, fromRegion: []uint16{0xc7}},\n}\n\n// Total table size 30466 bytes (29KiB); checksum: 7544152B\n"
  },
  {
    "path": "tests/vendor/golang.org/x/text/internal/language/tags.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage language\n\n// MustParse is like Parse, but panics if the given BCP 47 tag cannot be parsed.\n// It simplifies safe initialization of Tag values.\nfunc MustParse(s string) Tag {\n\tt, err := Parse(s)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn t\n}\n\n// MustParseBase is like ParseBase, but panics if the given base cannot be parsed.\n// It simplifies safe initialization of Base values.\nfunc MustParseBase(s string) Language {\n\tb, err := ParseBase(s)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn b\n}\n\n// MustParseScript is like ParseScript, but panics if the given script cannot be\n// parsed. It simplifies safe initialization of Script values.\nfunc MustParseScript(s string) Script {\n\tscr, err := ParseScript(s)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn scr\n}\n\n// MustParseRegion is like ParseRegion, but panics if the given region cannot be\n// parsed. It simplifies safe initialization of Region values.\nfunc MustParseRegion(s string) Region {\n\tr, err := ParseRegion(s)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn r\n}\n\n// Und is the root language.\nvar Und Tag\n"
  },
  {
    "path": "tests/vendor/golang.org/x/text/internal/tag/tag.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package tag contains functionality handling tags and related data.\npackage tag // import \"golang.org/x/text/internal/tag\"\n\nimport \"sort\"\n\n// An Index converts tags to a compact numeric value.\n//\n// All elements are of size 4. Tags may be up to 4 bytes long. Excess bytes can\n// be used to store additional information about the tag.\ntype Index string\n\n// Elem returns the element data at the given index.\nfunc (s Index) Elem(x int) string {\n\treturn string(s[x*4 : x*4+4])\n}\n\n// Index reports the index of the given key or -1 if it could not be found.\n// Only the first len(key) bytes from the start of the 4-byte entries will be\n// considered for the search and the first match in Index will be returned.\nfunc (s Index) Index(key []byte) int {\n\tn := len(key)\n\t// search the index of the first entry with an equal or higher value than\n\t// key in s.\n\tindex := sort.Search(len(s)/4, func(i int) bool {\n\t\treturn cmp(s[i*4:i*4+n], key) != -1\n\t})\n\ti := index * 4\n\tif cmp(s[i:i+len(key)], key) != 0 {\n\t\treturn -1\n\t}\n\treturn index\n}\n\n// Next finds the next occurrence of key after index x, which must have been\n// obtained from a call to Index using the same key. It returns x+1 or -1.\nfunc (s Index) Next(key []byte, x int) int {\n\tif x++; x*4 < len(s) && cmp(s[x*4:x*4+len(key)], key) == 0 {\n\t\treturn x\n\t}\n\treturn -1\n}\n\n// cmp returns an integer comparing a and b lexicographically.\nfunc cmp(a Index, b []byte) int {\n\tn := len(a)\n\tif len(b) < n {\n\t\tn = len(b)\n\t}\n\tfor i, c := range b[:n] {\n\t\tswitch {\n\t\tcase a[i] > c:\n\t\t\treturn 1\n\t\tcase a[i] < c:\n\t\t\treturn -1\n\t\t}\n\t}\n\tswitch {\n\tcase len(a) < len(b):\n\t\treturn -1\n\tcase len(a) > len(b):\n\t\treturn 1\n\t}\n\treturn 0\n}\n\n// Compare returns an integer comparing a and b lexicographically.\nfunc Compare(a string, b []byte) int {\n\treturn cmp(Index(a), b)\n}\n\n// FixCase reformats b to the same pattern of cases as form.\n// If returns false if string b is malformed.\nfunc FixCase(form string, b []byte) bool {\n\tif len(form) != len(b) {\n\t\treturn false\n\t}\n\tfor i, c := range b {\n\t\tif form[i] <= 'Z' {\n\t\t\tif c >= 'a' {\n\t\t\t\tc -= 'z' - 'Z'\n\t\t\t}\n\t\t\tif c < 'A' || 'Z' < c {\n\t\t\t\treturn false\n\t\t\t}\n\t\t} else {\n\t\t\tif c <= 'Z' {\n\t\t\t\tc += 'z' - 'Z'\n\t\t\t}\n\t\t\tif c < 'a' || 'z' < c {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tb[i] = c\n\t}\n\treturn true\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/text/internal/utf8internal/utf8internal.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package utf8internal contains low-level utf8-related constants, tables, etc.\n// that are used internally by the text package.\npackage utf8internal\n\n// The default lowest and highest continuation byte.\nconst (\n\tLoCB = 0x80 // 1000 0000\n\tHiCB = 0xBF // 1011 1111\n)\n\n// Constants related to getting information of first bytes of UTF-8 sequences.\nconst (\n\t// ASCII identifies a UTF-8 byte as ASCII.\n\tASCII = as\n\n\t// FirstInvalid indicates a byte is invalid as a first byte of a UTF-8\n\t// sequence.\n\tFirstInvalid = xx\n\n\t// SizeMask is a mask for the size bits. Use use x&SizeMask to get the size.\n\tSizeMask = 7\n\n\t// AcceptShift is the right-shift count for the first byte info byte to get\n\t// the index into the AcceptRanges table. See AcceptRanges.\n\tAcceptShift = 4\n\n\t// The names of these constants are chosen to give nice alignment in the\n\t// table below. The first nibble is an index into acceptRanges or F for\n\t// special one-byte cases. The second nibble is the Rune length or the\n\t// Status for the special one-byte case.\n\txx = 0xF1 // invalid: size 1\n\tas = 0xF0 // ASCII: size 1\n\ts1 = 0x02 // accept 0, size 2\n\ts2 = 0x13 // accept 1, size 3\n\ts3 = 0x03 // accept 0, size 3\n\ts4 = 0x23 // accept 2, size 3\n\ts5 = 0x34 // accept 3, size 4\n\ts6 = 0x04 // accept 0, size 4\n\ts7 = 0x44 // accept 4, size 4\n)\n\n// First is information about the first byte in a UTF-8 sequence.\nvar First = [256]uint8{\n\t//   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F\n\tas, as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, // 0x00-0x0F\n\tas, as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, // 0x10-0x1F\n\tas, as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, // 0x20-0x2F\n\tas, as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, // 0x30-0x3F\n\tas, as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, // 0x40-0x4F\n\tas, as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, // 0x50-0x5F\n\tas, as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, // 0x60-0x6F\n\tas, as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, // 0x70-0x7F\n\t//   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F\n\txx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, // 0x80-0x8F\n\txx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, // 0x90-0x9F\n\txx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, // 0xA0-0xAF\n\txx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, // 0xB0-0xBF\n\txx, xx, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, // 0xC0-0xCF\n\ts1, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, // 0xD0-0xDF\n\ts2, s3, s3, s3, s3, s3, s3, s3, s3, s3, s3, s3, s3, s4, s3, s3, // 0xE0-0xEF\n\ts5, s6, s6, s6, s7, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, // 0xF0-0xFF\n}\n\n// AcceptRange gives the range of valid values for the second byte in a UTF-8\n// sequence for any value for First that is not ASCII or FirstInvalid.\ntype AcceptRange struct {\n\tLo uint8 // lowest value for second byte.\n\tHi uint8 // highest value for second byte.\n}\n\n// AcceptRanges is a slice of AcceptRange values. For a given byte sequence b\n//\n//\tAcceptRanges[First[b[0]]>>AcceptShift]\n//\n// will give the value of AcceptRange for the multi-byte UTF-8 sequence starting\n// at b[0].\nvar AcceptRanges = [...]AcceptRange{\n\t0: {LoCB, HiCB},\n\t1: {0xA0, HiCB},\n\t2: {LoCB, 0x9F},\n\t3: {0x90, HiCB},\n\t4: {LoCB, 0x8F},\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/text/language/coverage.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage language\n\nimport (\n\t\"fmt\"\n\t\"sort\"\n\n\t\"golang.org/x/text/internal/language\"\n)\n\n// The Coverage interface is used to define the level of coverage of an\n// internationalization service. Note that not all types are supported by all\n// services. As lists may be generated on the fly, it is recommended that users\n// of a Coverage cache the results.\ntype Coverage interface {\n\t// Tags returns the list of supported tags.\n\tTags() []Tag\n\n\t// BaseLanguages returns the list of supported base languages.\n\tBaseLanguages() []Base\n\n\t// Scripts returns the list of supported scripts.\n\tScripts() []Script\n\n\t// Regions returns the list of supported regions.\n\tRegions() []Region\n}\n\nvar (\n\t// Supported defines a Coverage that lists all supported subtags. Tags\n\t// always returns nil.\n\tSupported Coverage = allSubtags{}\n)\n\n// TODO:\n// - Support Variants, numbering systems.\n// - CLDR coverage levels.\n// - Set of common tags defined in this package.\n\ntype allSubtags struct{}\n\n// Regions returns the list of supported regions. As all regions are in a\n// consecutive range, it simply returns a slice of numbers in increasing order.\n// The \"undefined\" region is not returned.\nfunc (s allSubtags) Regions() []Region {\n\treg := make([]Region, language.NumRegions)\n\tfor i := range reg {\n\t\treg[i] = Region{language.Region(i + 1)}\n\t}\n\treturn reg\n}\n\n// Scripts returns the list of supported scripts. As all scripts are in a\n// consecutive range, it simply returns a slice of numbers in increasing order.\n// The \"undefined\" script is not returned.\nfunc (s allSubtags) Scripts() []Script {\n\tscr := make([]Script, language.NumScripts)\n\tfor i := range scr {\n\t\tscr[i] = Script{language.Script(i + 1)}\n\t}\n\treturn scr\n}\n\n// BaseLanguages returns the list of all supported base languages. It generates\n// the list by traversing the internal structures.\nfunc (s allSubtags) BaseLanguages() []Base {\n\tbs := language.BaseLanguages()\n\tbase := make([]Base, len(bs))\n\tfor i, b := range bs {\n\t\tbase[i] = Base{b}\n\t}\n\treturn base\n}\n\n// Tags always returns nil.\nfunc (s allSubtags) Tags() []Tag {\n\treturn nil\n}\n\n// coverage is used by NewCoverage which is used as a convenient way for\n// creating Coverage implementations for partially defined data. Very often a\n// package will only need to define a subset of slices. coverage provides a\n// convenient way to do this. Moreover, packages using NewCoverage, instead of\n// their own implementation, will not break if later new slice types are added.\ntype coverage struct {\n\ttags    func() []Tag\n\tbases   func() []Base\n\tscripts func() []Script\n\tregions func() []Region\n}\n\nfunc (s *coverage) Tags() []Tag {\n\tif s.tags == nil {\n\t\treturn nil\n\t}\n\treturn s.tags()\n}\n\n// bases implements sort.Interface and is used to sort base languages.\ntype bases []Base\n\nfunc (b bases) Len() int {\n\treturn len(b)\n}\n\nfunc (b bases) Swap(i, j int) {\n\tb[i], b[j] = b[j], b[i]\n}\n\nfunc (b bases) Less(i, j int) bool {\n\treturn b[i].langID < b[j].langID\n}\n\n// BaseLanguages returns the result from calling s.bases if it is specified or\n// otherwise derives the set of supported base languages from tags.\nfunc (s *coverage) BaseLanguages() []Base {\n\tif s.bases == nil {\n\t\ttags := s.Tags()\n\t\tif len(tags) == 0 {\n\t\t\treturn nil\n\t\t}\n\t\ta := make([]Base, len(tags))\n\t\tfor i, t := range tags {\n\t\t\ta[i] = Base{language.Language(t.lang())}\n\t\t}\n\t\tsort.Sort(bases(a))\n\t\tk := 0\n\t\tfor i := 1; i < len(a); i++ {\n\t\t\tif a[k] != a[i] {\n\t\t\t\tk++\n\t\t\t\ta[k] = a[i]\n\t\t\t}\n\t\t}\n\t\treturn a[:k+1]\n\t}\n\treturn s.bases()\n}\n\nfunc (s *coverage) Scripts() []Script {\n\tif s.scripts == nil {\n\t\treturn nil\n\t}\n\treturn s.scripts()\n}\n\nfunc (s *coverage) Regions() []Region {\n\tif s.regions == nil {\n\t\treturn nil\n\t}\n\treturn s.regions()\n}\n\n// NewCoverage returns a Coverage for the given lists. It is typically used by\n// packages providing internationalization services to define their level of\n// coverage. A list may be of type []T or func() []T, where T is either Tag,\n// Base, Script or Region. The returned Coverage derives the value for Bases\n// from Tags if no func or slice for []Base is specified. For other unspecified\n// types the returned Coverage will return nil for the respective methods.\nfunc NewCoverage(list ...interface{}) Coverage {\n\ts := &coverage{}\n\tfor _, x := range list {\n\t\tswitch v := x.(type) {\n\t\tcase func() []Base:\n\t\t\ts.bases = v\n\t\tcase func() []Script:\n\t\t\ts.scripts = v\n\t\tcase func() []Region:\n\t\t\ts.regions = v\n\t\tcase func() []Tag:\n\t\t\ts.tags = v\n\t\tcase []Base:\n\t\t\ts.bases = func() []Base { return v }\n\t\tcase []Script:\n\t\t\ts.scripts = func() []Script { return v }\n\t\tcase []Region:\n\t\t\ts.regions = func() []Region { return v }\n\t\tcase []Tag:\n\t\t\ts.tags = func() []Tag { return v }\n\t\tdefault:\n\t\t\tpanic(fmt.Sprintf(\"language: unsupported set type %T\", v))\n\t\t}\n\t}\n\treturn s\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/text/language/doc.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package language implements BCP 47 language tags and related functionality.\n//\n// The most important function of package language is to match a list of\n// user-preferred languages to a list of supported languages.\n// It alleviates the developer of dealing with the complexity of this process\n// and provides the user with the best experience\n// (see https://blog.golang.org/matchlang).\n//\n// # Matching preferred against supported languages\n//\n// A Matcher for an application that supports English, Australian English,\n// Danish, and standard Mandarin can be created as follows:\n//\n//\tvar matcher = language.NewMatcher([]language.Tag{\n//\t    language.English,   // The first language is used as fallback.\n//\t    language.MustParse(\"en-AU\"),\n//\t    language.Danish,\n//\t    language.Chinese,\n//\t})\n//\n// This list of supported languages is typically implied by the languages for\n// which there exists translations of the user interface.\n//\n// User-preferred languages usually come as a comma-separated list of BCP 47\n// language tags.\n// The MatchString finds best matches for such strings:\n//\n//\thandler(w http.ResponseWriter, r *http.Request) {\n//\t    lang, _ := r.Cookie(\"lang\")\n//\t    accept := r.Header.Get(\"Accept-Language\")\n//\t    tag, _ := language.MatchStrings(matcher, lang.String(), accept)\n//\n//\t    // tag should now be used for the initialization of any\n//\t    // locale-specific service.\n//\t}\n//\n// The Matcher's Match method can be used to match Tags directly.\n//\n// Matchers are aware of the intricacies of equivalence between languages, such\n// as deprecated subtags, legacy tags, macro languages, mutual\n// intelligibility between scripts and languages, and transparently passing\n// BCP 47 user configuration.\n// For instance, it will know that a reader of Bokmål Danish can read Norwegian\n// and will know that Cantonese (\"yue\") is a good match for \"zh-HK\".\n//\n// # Using match results\n//\n// To guarantee a consistent user experience to the user it is important to\n// use the same language tag for the selection of any locale-specific services.\n// For example, it is utterly confusing to substitute spelled-out numbers\n// or dates in one language in text of another language.\n// More subtly confusing is using the wrong sorting order or casing\n// algorithm for a certain language.\n//\n// All the packages in x/text that provide locale-specific services\n// (e.g. collate, cases) should be initialized with the tag that was\n// obtained at the start of an interaction with the user.\n//\n// Note that Tag that is returned by Match and MatchString may differ from any\n// of the supported languages, as it may contain carried over settings from\n// the user tags.\n// This may be inconvenient when your application has some additional\n// locale-specific data for your supported languages.\n// Match and MatchString both return the index of the matched supported tag\n// to simplify associating such data with the matched tag.\n//\n// # Canonicalization\n//\n// If one uses the Matcher to compare languages one does not need to\n// worry about canonicalization.\n//\n// The meaning of a Tag varies per application. The language package\n// therefore delays canonicalization and preserves information as much\n// as possible. The Matcher, however, will always take into account that\n// two different tags may represent the same language.\n//\n// By default, only legacy and deprecated tags are converted into their\n// canonical equivalent. All other information is preserved. This approach makes\n// the confidence scores more accurate and allows matchers to distinguish\n// between variants that are otherwise lost.\n//\n// As a consequence, two tags that should be treated as identical according to\n// BCP 47 or CLDR, like \"en-Latn\" and \"en\", will be represented differently. The\n// Matcher handles such distinctions, though, and is aware of the\n// equivalence relations. The CanonType type can be used to alter the\n// canonicalization form.\n//\n// # References\n//\n// BCP 47 - Tags for Identifying Languages http://tools.ietf.org/html/bcp47\npackage language // import \"golang.org/x/text/language\"\n\n// TODO: explanation on how to match languages for your own locale-specific\n// service.\n"
  },
  {
    "path": "tests/vendor/golang.org/x/text/language/language.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:generate go run gen.go -output tables.go\n\npackage language\n\n// TODO: Remove above NOTE after:\n// - verifying that tables are dropped correctly (most notably matcher tables).\n\nimport (\n\t\"strings\"\n\n\t\"golang.org/x/text/internal/language\"\n\t\"golang.org/x/text/internal/language/compact\"\n)\n\n// Tag represents a BCP 47 language tag. It is used to specify an instance of a\n// specific language or locale. All language tag values are guaranteed to be\n// well-formed.\ntype Tag compact.Tag\n\nfunc makeTag(t language.Tag) (tag Tag) {\n\treturn Tag(compact.Make(t))\n}\n\nfunc (t *Tag) tag() language.Tag {\n\treturn (*compact.Tag)(t).Tag()\n}\n\nfunc (t *Tag) isCompact() bool {\n\treturn (*compact.Tag)(t).IsCompact()\n}\n\n// TODO: improve performance.\nfunc (t *Tag) lang() language.Language { return t.tag().LangID }\nfunc (t *Tag) region() language.Region { return t.tag().RegionID }\nfunc (t *Tag) script() language.Script { return t.tag().ScriptID }\n\n// Make is a convenience wrapper for Parse that omits the error.\n// In case of an error, a sensible default is returned.\nfunc Make(s string) Tag {\n\treturn Default.Make(s)\n}\n\n// Make is a convenience wrapper for c.Parse that omits the error.\n// In case of an error, a sensible default is returned.\nfunc (c CanonType) Make(s string) Tag {\n\tt, _ := c.Parse(s)\n\treturn t\n}\n\n// Raw returns the raw base language, script and region, without making an\n// attempt to infer their values.\nfunc (t Tag) Raw() (b Base, s Script, r Region) {\n\ttt := t.tag()\n\treturn Base{tt.LangID}, Script{tt.ScriptID}, Region{tt.RegionID}\n}\n\n// IsRoot returns true if t is equal to language \"und\".\nfunc (t Tag) IsRoot() bool {\n\treturn compact.Tag(t).IsRoot()\n}\n\n// CanonType can be used to enable or disable various types of canonicalization.\ntype CanonType int\n\nconst (\n\t// Replace deprecated base languages with their preferred replacements.\n\tDeprecatedBase CanonType = 1 << iota\n\t// Replace deprecated scripts with their preferred replacements.\n\tDeprecatedScript\n\t// Replace deprecated regions with their preferred replacements.\n\tDeprecatedRegion\n\t// Remove redundant scripts.\n\tSuppressScript\n\t// Normalize legacy encodings. This includes legacy languages defined in\n\t// CLDR as well as bibliographic codes defined in ISO-639.\n\tLegacy\n\t// Map the dominant language of a macro language group to the macro language\n\t// subtag. For example cmn -> zh.\n\tMacro\n\t// The CLDR flag should be used if full compatibility with CLDR is required.\n\t// There are a few cases where language.Tag may differ from CLDR. To follow all\n\t// of CLDR's suggestions, use All|CLDR.\n\tCLDR\n\n\t// Raw can be used to Compose or Parse without Canonicalization.\n\tRaw CanonType = 0\n\n\t// Replace all deprecated tags with their preferred replacements.\n\tDeprecated = DeprecatedBase | DeprecatedScript | DeprecatedRegion\n\n\t// All canonicalizations recommended by BCP 47.\n\tBCP47 = Deprecated | SuppressScript\n\n\t// All canonicalizations.\n\tAll = BCP47 | Legacy | Macro\n\n\t// Default is the canonicalization used by Parse, Make and Compose. To\n\t// preserve as much information as possible, canonicalizations that remove\n\t// potentially valuable information are not included. The Matcher is\n\t// designed to recognize similar tags that would be the same if\n\t// they were canonicalized using All.\n\tDefault = Deprecated | Legacy\n\n\tcanonLang = DeprecatedBase | Legacy | Macro\n\n\t// TODO: LikelyScript, LikelyRegion: suppress similar to ICU.\n)\n\n// canonicalize returns the canonicalized equivalent of the tag and\n// whether there was any change.\nfunc canonicalize(c CanonType, t language.Tag) (language.Tag, bool) {\n\tif c == Raw {\n\t\treturn t, false\n\t}\n\tchanged := false\n\tif c&SuppressScript != 0 {\n\t\tif t.LangID.SuppressScript() == t.ScriptID {\n\t\t\tt.ScriptID = 0\n\t\t\tchanged = true\n\t\t}\n\t}\n\tif c&canonLang != 0 {\n\t\tfor {\n\t\t\tif l, aliasType := t.LangID.Canonicalize(); l != t.LangID {\n\t\t\t\tswitch aliasType {\n\t\t\t\tcase language.Legacy:\n\t\t\t\t\tif c&Legacy != 0 {\n\t\t\t\t\t\tif t.LangID == _sh && t.ScriptID == 0 {\n\t\t\t\t\t\t\tt.ScriptID = _Latn\n\t\t\t\t\t\t}\n\t\t\t\t\t\tt.LangID = l\n\t\t\t\t\t\tchanged = true\n\t\t\t\t\t}\n\t\t\t\tcase language.Macro:\n\t\t\t\t\tif c&Macro != 0 {\n\t\t\t\t\t\t// We deviate here from CLDR. The mapping \"nb\" -> \"no\"\n\t\t\t\t\t\t// qualifies as a typical Macro language mapping.  However,\n\t\t\t\t\t\t// for legacy reasons, CLDR maps \"no\", the macro language\n\t\t\t\t\t\t// code for Norwegian, to the dominant variant \"nb\". This\n\t\t\t\t\t\t// change is currently under consideration for CLDR as well.\n\t\t\t\t\t\t// See https://unicode.org/cldr/trac/ticket/2698 and also\n\t\t\t\t\t\t// https://unicode.org/cldr/trac/ticket/1790 for some of the\n\t\t\t\t\t\t// practical implications. TODO: this check could be removed\n\t\t\t\t\t\t// if CLDR adopts this change.\n\t\t\t\t\t\tif c&CLDR == 0 || t.LangID != _nb {\n\t\t\t\t\t\t\tchanged = true\n\t\t\t\t\t\t\tt.LangID = l\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\tcase language.Deprecated:\n\t\t\t\t\tif c&DeprecatedBase != 0 {\n\t\t\t\t\t\tif t.LangID == _mo && t.RegionID == 0 {\n\t\t\t\t\t\t\tt.RegionID = _MD\n\t\t\t\t\t\t}\n\t\t\t\t\t\tt.LangID = l\n\t\t\t\t\t\tchanged = true\n\t\t\t\t\t\t// Other canonicalization types may still apply.\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if c&Legacy != 0 && t.LangID == _no && c&CLDR != 0 {\n\t\t\t\tt.LangID = _nb\n\t\t\t\tchanged = true\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t}\n\tif c&DeprecatedScript != 0 {\n\t\tif t.ScriptID == _Qaai {\n\t\t\tchanged = true\n\t\t\tt.ScriptID = _Zinh\n\t\t}\n\t}\n\tif c&DeprecatedRegion != 0 {\n\t\tif r := t.RegionID.Canonicalize(); r != t.RegionID {\n\t\t\tchanged = true\n\t\t\tt.RegionID = r\n\t\t}\n\t}\n\treturn t, changed\n}\n\n// Canonicalize returns the canonicalized equivalent of the tag.\nfunc (c CanonType) Canonicalize(t Tag) (Tag, error) {\n\t// First try fast path.\n\tif t.isCompact() {\n\t\tif _, changed := canonicalize(c, compact.Tag(t).Tag()); !changed {\n\t\t\treturn t, nil\n\t\t}\n\t}\n\t// It is unlikely that one will canonicalize a tag after matching. So do\n\t// a slow but simple approach here.\n\tif tag, changed := canonicalize(c, t.tag()); changed {\n\t\ttag.RemakeString()\n\t\treturn makeTag(tag), nil\n\t}\n\treturn t, nil\n\n}\n\n// Confidence indicates the level of certainty for a given return value.\n// For example, Serbian may be written in Cyrillic or Latin script.\n// The confidence level indicates whether a value was explicitly specified,\n// whether it is typically the only possible value, or whether there is\n// an ambiguity.\ntype Confidence int\n\nconst (\n\tNo    Confidence = iota // full confidence that there was no match\n\tLow                     // most likely value picked out of a set of alternatives\n\tHigh                    // value is generally assumed to be the correct match\n\tExact                   // exact match or explicitly specified value\n)\n\nvar confName = []string{\"No\", \"Low\", \"High\", \"Exact\"}\n\nfunc (c Confidence) String() string {\n\treturn confName[c]\n}\n\n// String returns the canonical string representation of the language tag.\nfunc (t Tag) String() string {\n\treturn t.tag().String()\n}\n\n// MarshalText implements encoding.TextMarshaler.\nfunc (t Tag) MarshalText() (text []byte, err error) {\n\treturn t.tag().MarshalText()\n}\n\n// UnmarshalText implements encoding.TextUnmarshaler.\nfunc (t *Tag) UnmarshalText(text []byte) error {\n\tvar tag language.Tag\n\terr := tag.UnmarshalText(text)\n\t*t = makeTag(tag)\n\treturn err\n}\n\n// Base returns the base language of the language tag. If the base language is\n// unspecified, an attempt will be made to infer it from the context.\n// It uses a variant of CLDR's Add Likely Subtags algorithm. This is subject to change.\nfunc (t Tag) Base() (Base, Confidence) {\n\tif b := t.lang(); b != 0 {\n\t\treturn Base{b}, Exact\n\t}\n\ttt := t.tag()\n\tc := High\n\tif tt.ScriptID == 0 && !tt.RegionID.IsCountry() {\n\t\tc = Low\n\t}\n\tif tag, err := tt.Maximize(); err == nil && tag.LangID != 0 {\n\t\treturn Base{tag.LangID}, c\n\t}\n\treturn Base{0}, No\n}\n\n// Script infers the script for the language tag. If it was not explicitly given, it will infer\n// a most likely candidate.\n// If more than one script is commonly used for a language, the most likely one\n// is returned with a low confidence indication. For example, it returns (Cyrl, Low)\n// for Serbian.\n// If a script cannot be inferred (Zzzz, No) is returned. We do not use Zyyy (undetermined)\n// as one would suspect from the IANA registry for BCP 47. In a Unicode context Zyyy marks\n// common characters (like 1, 2, 3, '.', etc.) and is therefore more like multiple scripts.\n// See https://www.unicode.org/reports/tr24/#Values for more details. Zzzz is also used for\n// unknown value in CLDR.  (Zzzz, Exact) is returned if Zzzz was explicitly specified.\n// Note that an inferred script is never guaranteed to be the correct one. Latin is\n// almost exclusively used for Afrikaans, but Arabic has been used for some texts\n// in the past.  Also, the script that is commonly used may change over time.\n// It uses a variant of CLDR's Add Likely Subtags algorithm. This is subject to change.\nfunc (t Tag) Script() (Script, Confidence) {\n\tif scr := t.script(); scr != 0 {\n\t\treturn Script{scr}, Exact\n\t}\n\ttt := t.tag()\n\tsc, c := language.Script(_Zzzz), No\n\tif scr := tt.LangID.SuppressScript(); scr != 0 {\n\t\t// Note: it is not always the case that a language with a suppress\n\t\t// script value is only written in one script (e.g. kk, ms, pa).\n\t\tif tt.RegionID == 0 {\n\t\t\treturn Script{scr}, High\n\t\t}\n\t\tsc, c = scr, High\n\t}\n\tif tag, err := tt.Maximize(); err == nil {\n\t\tif tag.ScriptID != sc {\n\t\t\tsc, c = tag.ScriptID, Low\n\t\t}\n\t} else {\n\t\ttt, _ = canonicalize(Deprecated|Macro, tt)\n\t\tif tag, err := tt.Maximize(); err == nil && tag.ScriptID != sc {\n\t\t\tsc, c = tag.ScriptID, Low\n\t\t}\n\t}\n\treturn Script{sc}, c\n}\n\n// Region returns the region for the language tag. If it was not explicitly given, it will\n// infer a most likely candidate from the context.\n// It uses a variant of CLDR's Add Likely Subtags algorithm. This is subject to change.\nfunc (t Tag) Region() (Region, Confidence) {\n\tif r := t.region(); r != 0 {\n\t\treturn Region{r}, Exact\n\t}\n\ttt := t.tag()\n\tif tt, err := tt.Maximize(); err == nil {\n\t\treturn Region{tt.RegionID}, Low // TODO: differentiate between high and low.\n\t}\n\ttt, _ = canonicalize(Deprecated|Macro, tt)\n\tif tag, err := tt.Maximize(); err == nil {\n\t\treturn Region{tag.RegionID}, Low\n\t}\n\treturn Region{_ZZ}, No // TODO: return world instead of undetermined?\n}\n\n// Variants returns the variants specified explicitly for this language tag.\n// or nil if no variant was specified.\nfunc (t Tag) Variants() []Variant {\n\tif !compact.Tag(t).MayHaveVariants() {\n\t\treturn nil\n\t}\n\tv := []Variant{}\n\tx, str := \"\", t.tag().Variants()\n\tfor str != \"\" {\n\t\tx, str = nextToken(str)\n\t\tv = append(v, Variant{x})\n\t}\n\treturn v\n}\n\n// Parent returns the CLDR parent of t. In CLDR, missing fields in data for a\n// specific language are substituted with fields from the parent language.\n// The parent for a language may change for newer versions of CLDR.\n//\n// Parent returns a tag for a less specific language that is mutually\n// intelligible or Und if there is no such language. This may not be the same as\n// simply stripping the last BCP 47 subtag. For instance, the parent of \"zh-TW\"\n// is \"zh-Hant\", and the parent of \"zh-Hant\" is \"und\".\nfunc (t Tag) Parent() Tag {\n\treturn Tag(compact.Tag(t).Parent())\n}\n\n// nextToken returns token t and the rest of the string.\nfunc nextToken(s string) (t, tail string) {\n\tp := strings.Index(s[1:], \"-\")\n\tif p == -1 {\n\t\treturn s[1:], \"\"\n\t}\n\tp++\n\treturn s[1:p], s[p:]\n}\n\n// Extension is a single BCP 47 extension.\ntype Extension struct {\n\ts string\n}\n\n// String returns the string representation of the extension, including the\n// type tag.\nfunc (e Extension) String() string {\n\treturn e.s\n}\n\n// ParseExtension parses s as an extension and returns it on success.\nfunc ParseExtension(s string) (e Extension, err error) {\n\text, err := language.ParseExtension(s)\n\treturn Extension{ext}, err\n}\n\n// Type returns the one-byte extension type of e. It returns 0 for the zero\n// exception.\nfunc (e Extension) Type() byte {\n\tif e.s == \"\" {\n\t\treturn 0\n\t}\n\treturn e.s[0]\n}\n\n// Tokens returns the list of tokens of e.\nfunc (e Extension) Tokens() []string {\n\treturn strings.Split(e.s, \"-\")\n}\n\n// Extension returns the extension of type x for tag t. It will return\n// false for ok if t does not have the requested extension. The returned\n// extension will be invalid in this case.\nfunc (t Tag) Extension(x byte) (ext Extension, ok bool) {\n\tif !compact.Tag(t).MayHaveExtensions() {\n\t\treturn Extension{}, false\n\t}\n\te, ok := t.tag().Extension(x)\n\treturn Extension{e}, ok\n}\n\n// Extensions returns all extensions of t.\nfunc (t Tag) Extensions() []Extension {\n\tif !compact.Tag(t).MayHaveExtensions() {\n\t\treturn nil\n\t}\n\te := []Extension{}\n\tfor _, ext := range t.tag().Extensions() {\n\t\te = append(e, Extension{ext})\n\t}\n\treturn e\n}\n\n// TypeForKey returns the type associated with the given key, where key and type\n// are of the allowed values defined for the Unicode locale extension ('u') in\n// https://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers.\n// TypeForKey will traverse the inheritance chain to get the correct value.\n//\n// If there are multiple types associated with a key, only the first will be\n// returned. If there is no type associated with a key, it returns the empty\n// string.\nfunc (t Tag) TypeForKey(key string) string {\n\tif !compact.Tag(t).MayHaveExtensions() {\n\t\tif key != \"rg\" && key != \"va\" {\n\t\t\treturn \"\"\n\t\t}\n\t}\n\treturn t.tag().TypeForKey(key)\n}\n\n// SetTypeForKey returns a new Tag with the key set to type, where key and type\n// are of the allowed values defined for the Unicode locale extension ('u') in\n// https://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers.\n// An empty value removes an existing pair with the same key.\nfunc (t Tag) SetTypeForKey(key, value string) (Tag, error) {\n\ttt, err := t.tag().SetTypeForKey(key, value)\n\treturn makeTag(tt), err\n}\n\n// NumCompactTags is the number of compact tags. The maximum tag is\n// NumCompactTags-1.\nconst NumCompactTags = compact.NumCompactTags\n\n// CompactIndex returns an index, where 0 <= index < NumCompactTags, for tags\n// for which data exists in the text repository.The index will change over time\n// and should not be stored in persistent storage. If t does not match a compact\n// index, exact will be false and the compact index will be returned for the\n// first match after repeatedly taking the Parent of t.\nfunc CompactIndex(t Tag) (index int, exact bool) {\n\tid, exact := compact.LanguageID(compact.Tag(t))\n\treturn int(id), exact\n}\n\nvar root = language.Tag{}\n\n// Base is an ISO 639 language code, used for encoding the base language\n// of a language tag.\ntype Base struct {\n\tlangID language.Language\n}\n\n// ParseBase parses a 2- or 3-letter ISO 639 code.\n// It returns a ValueError if s is a well-formed but unknown language identifier\n// or another error if another error occurred.\nfunc ParseBase(s string) (Base, error) {\n\tl, err := language.ParseBase(s)\n\treturn Base{l}, err\n}\n\n// String returns the BCP 47 representation of the base language.\nfunc (b Base) String() string {\n\treturn b.langID.String()\n}\n\n// ISO3 returns the ISO 639-3 language code.\nfunc (b Base) ISO3() string {\n\treturn b.langID.ISO3()\n}\n\n// IsPrivateUse reports whether this language code is reserved for private use.\nfunc (b Base) IsPrivateUse() bool {\n\treturn b.langID.IsPrivateUse()\n}\n\n// Script is a 4-letter ISO 15924 code for representing scripts.\n// It is idiomatically represented in title case.\ntype Script struct {\n\tscriptID language.Script\n}\n\n// ParseScript parses a 4-letter ISO 15924 code.\n// It returns a ValueError if s is a well-formed but unknown script identifier\n// or another error if another error occurred.\nfunc ParseScript(s string) (Script, error) {\n\tsc, err := language.ParseScript(s)\n\treturn Script{sc}, err\n}\n\n// String returns the script code in title case.\n// It returns \"Zzzz\" for an unspecified script.\nfunc (s Script) String() string {\n\treturn s.scriptID.String()\n}\n\n// IsPrivateUse reports whether this script code is reserved for private use.\nfunc (s Script) IsPrivateUse() bool {\n\treturn s.scriptID.IsPrivateUse()\n}\n\n// Region is an ISO 3166-1 or UN M.49 code for representing countries and regions.\ntype Region struct {\n\tregionID language.Region\n}\n\n// EncodeM49 returns the Region for the given UN M.49 code.\n// It returns an error if r is not a valid code.\nfunc EncodeM49(r int) (Region, error) {\n\trid, err := language.EncodeM49(r)\n\treturn Region{rid}, err\n}\n\n// ParseRegion parses a 2- or 3-letter ISO 3166-1 or a UN M.49 code.\n// It returns a ValueError if s is a well-formed but unknown region identifier\n// or another error if another error occurred.\nfunc ParseRegion(s string) (Region, error) {\n\tr, err := language.ParseRegion(s)\n\treturn Region{r}, err\n}\n\n// String returns the BCP 47 representation for the region.\n// It returns \"ZZ\" for an unspecified region.\nfunc (r Region) String() string {\n\treturn r.regionID.String()\n}\n\n// ISO3 returns the 3-letter ISO code of r.\n// Note that not all regions have a 3-letter ISO code.\n// In such cases this method returns \"ZZZ\".\nfunc (r Region) ISO3() string {\n\treturn r.regionID.ISO3()\n}\n\n// M49 returns the UN M.49 encoding of r, or 0 if this encoding\n// is not defined for r.\nfunc (r Region) M49() int {\n\treturn r.regionID.M49()\n}\n\n// IsPrivateUse reports whether r has the ISO 3166 User-assigned status. This\n// may include private-use tags that are assigned by CLDR and used in this\n// implementation. So IsPrivateUse and IsCountry can be simultaneously true.\nfunc (r Region) IsPrivateUse() bool {\n\treturn r.regionID.IsPrivateUse()\n}\n\n// IsCountry returns whether this region is a country or autonomous area. This\n// includes non-standard definitions from CLDR.\nfunc (r Region) IsCountry() bool {\n\treturn r.regionID.IsCountry()\n}\n\n// IsGroup returns whether this region defines a collection of regions. This\n// includes non-standard definitions from CLDR.\nfunc (r Region) IsGroup() bool {\n\treturn r.regionID.IsGroup()\n}\n\n// Contains returns whether Region c is contained by Region r. It returns true\n// if c == r.\nfunc (r Region) Contains(c Region) bool {\n\treturn r.regionID.Contains(c.regionID)\n}\n\n// TLD returns the country code top-level domain (ccTLD). UK is returned for GB.\n// In all other cases it returns either the region itself or an error.\n//\n// This method may return an error for a region for which there exists a\n// canonical form with a ccTLD. To get that ccTLD canonicalize r first. The\n// region will already be canonicalized it was obtained from a Tag that was\n// obtained using any of the default methods.\nfunc (r Region) TLD() (Region, error) {\n\ttld, err := r.regionID.TLD()\n\treturn Region{tld}, err\n}\n\n// Canonicalize returns the region or a possible replacement if the region is\n// deprecated. It will not return a replacement for deprecated regions that\n// are split into multiple regions.\nfunc (r Region) Canonicalize() Region {\n\treturn Region{r.regionID.Canonicalize()}\n}\n\n// Variant represents a registered variant of a language as defined by BCP 47.\ntype Variant struct {\n\tvariant string\n}\n\n// ParseVariant parses and returns a Variant. An error is returned if s is not\n// a valid variant.\nfunc ParseVariant(s string) (Variant, error) {\n\tv, err := language.ParseVariant(s)\n\treturn Variant{v.String()}, err\n}\n\n// String returns the string representation of the variant.\nfunc (v Variant) String() string {\n\treturn v.variant\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/text/language/match.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage language\n\nimport (\n\t\"errors\"\n\t\"strings\"\n\n\t\"golang.org/x/text/internal/language\"\n)\n\n// A MatchOption configures a Matcher.\ntype MatchOption func(*matcher)\n\n// PreferSameScript will, in the absence of a match, result in the first\n// preferred tag with the same script as a supported tag to match this supported\n// tag. The default is currently true, but this may change in the future.\nfunc PreferSameScript(preferSame bool) MatchOption {\n\treturn func(m *matcher) { m.preferSameScript = preferSame }\n}\n\n// TODO(v1.0.0): consider making Matcher a concrete type, instead of interface.\n// There doesn't seem to be too much need for multiple types.\n// Making it a concrete type allows MatchStrings to be a method, which will\n// improve its discoverability.\n\n// MatchStrings parses and matches the given strings until one of them matches\n// the language in the Matcher. A string may be an Accept-Language header as\n// handled by ParseAcceptLanguage. The default language is returned if no\n// other language matched.\nfunc MatchStrings(m Matcher, lang ...string) (tag Tag, index int) {\n\tfor _, accept := range lang {\n\t\tdesired, _, err := ParseAcceptLanguage(accept)\n\t\tif err != nil {\n\t\t\tcontinue\n\t\t}\n\t\tif tag, index, conf := m.Match(desired...); conf != No {\n\t\t\treturn tag, index\n\t\t}\n\t}\n\ttag, index, _ = m.Match()\n\treturn\n}\n\n// Matcher is the interface that wraps the Match method.\n//\n// Match returns the best match for any of the given tags, along with\n// a unique index associated with the returned tag and a confidence\n// score.\ntype Matcher interface {\n\tMatch(t ...Tag) (tag Tag, index int, c Confidence)\n}\n\n// Comprehends reports the confidence score for a speaker of a given language\n// to being able to comprehend the written form of an alternative language.\nfunc Comprehends(speaker, alternative Tag) Confidence {\n\t_, _, c := NewMatcher([]Tag{alternative}).Match(speaker)\n\treturn c\n}\n\n// NewMatcher returns a Matcher that matches an ordered list of preferred tags\n// against a list of supported tags based on written intelligibility, closeness\n// of dialect, equivalence of subtags and various other rules. It is initialized\n// with the list of supported tags. The first element is used as the default\n// value in case no match is found.\n//\n// Its Match method matches the first of the given Tags to reach a certain\n// confidence threshold. The tags passed to Match should therefore be specified\n// in order of preference. Extensions are ignored for matching.\n//\n// The index returned by the Match method corresponds to the index of the\n// matched tag in t, but is augmented with the Unicode extension ('u')of the\n// corresponding preferred tag. This allows user locale options to be passed\n// transparently.\nfunc NewMatcher(t []Tag, options ...MatchOption) Matcher {\n\treturn newMatcher(t, options)\n}\n\nfunc (m *matcher) Match(want ...Tag) (t Tag, index int, c Confidence) {\n\tvar tt language.Tag\n\tmatch, w, c := m.getBest(want...)\n\tif match != nil {\n\t\ttt, index = match.tag, match.index\n\t} else {\n\t\t// TODO: this should be an option\n\t\ttt = m.default_.tag\n\t\tif m.preferSameScript {\n\t\touter:\n\t\t\tfor _, w := range want {\n\t\t\t\tscript, _ := w.Script()\n\t\t\t\tif script.scriptID == 0 {\n\t\t\t\t\t// Don't do anything if there is no script, such as with\n\t\t\t\t\t// private subtags.\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tfor i, h := range m.supported {\n\t\t\t\t\tif script.scriptID == h.maxScript {\n\t\t\t\t\t\ttt, index = h.tag, i\n\t\t\t\t\t\tbreak outer\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// TODO: select first language tag based on script.\n\t}\n\tif w.RegionID != tt.RegionID && w.RegionID != 0 {\n\t\tif w.RegionID != 0 && tt.RegionID != 0 && tt.RegionID.Contains(w.RegionID) {\n\t\t\ttt.RegionID = w.RegionID\n\t\t\ttt.RemakeString()\n\t\t} else if r := w.RegionID.String(); len(r) == 2 {\n\t\t\t// TODO: also filter macro and deprecated.\n\t\t\ttt, _ = tt.SetTypeForKey(\"rg\", strings.ToLower(r)+\"zzzz\")\n\t\t}\n\t}\n\t// Copy options from the user-provided tag into the result tag. This is hard\n\t// to do after the fact, so we do it here.\n\t// TODO: add in alternative variants to -u-va-.\n\t// TODO: add preferred region to -u-rg-.\n\tif e := w.Extensions(); len(e) > 0 {\n\t\tb := language.Builder{}\n\t\tb.SetTag(tt)\n\t\tfor _, e := range e {\n\t\t\tb.AddExt(e)\n\t\t}\n\t\ttt = b.Make()\n\t}\n\treturn makeTag(tt), index, c\n}\n\n// ErrMissingLikelyTagsData indicates no information was available\n// to compute likely values of missing tags.\nvar ErrMissingLikelyTagsData = errors.New(\"missing likely tags data\")\n\n// func (t *Tag) setTagsFrom(id Tag) {\n// \tt.LangID = id.LangID\n// \tt.ScriptID = id.ScriptID\n// \tt.RegionID = id.RegionID\n// }\n\n// Tag Matching\n// CLDR defines an algorithm for finding the best match between two sets of language\n// tags. The basic algorithm defines how to score a possible match and then find\n// the match with the best score\n// (see https://www.unicode.org/reports/tr35/#LanguageMatching).\n// Using scoring has several disadvantages. The scoring obfuscates the importance of\n// the various factors considered, making the algorithm harder to understand. Using\n// scoring also requires the full score to be computed for each pair of tags.\n//\n// We will use a different algorithm which aims to have the following properties:\n// - clarity on the precedence of the various selection factors, and\n// - improved performance by allowing early termination of a comparison.\n//\n// Matching algorithm (overview)\n// Input:\n//   - supported: a set of supported tags\n//   - default:   the default tag to return in case there is no match\n//   - desired:   list of desired tags, ordered by preference, starting with\n//                the most-preferred.\n//\n// Algorithm:\n//   1) Set the best match to the lowest confidence level\n//   2) For each tag in \"desired\":\n//     a) For each tag in \"supported\":\n//        1) compute the match between the two tags.\n//        2) if the match is better than the previous best match, replace it\n//           with the new match. (see next section)\n//     b) if the current best match is Exact and pin is true the result will be\n//        frozen to the language found thusfar, although better matches may\n//        still be found for the same language.\n//   3) If the best match so far is below a certain threshold, return \"default\".\n//\n// Ranking:\n// We use two phases to determine whether one pair of tags are a better match\n// than another pair of tags. First, we determine a rough confidence level. If the\n// levels are different, the one with the highest confidence wins.\n// Second, if the rough confidence levels are identical, we use a set of tie-breaker\n// rules.\n//\n// The confidence level of matching a pair of tags is determined by finding the\n// lowest confidence level of any matches of the corresponding subtags (the\n// result is deemed as good as its weakest link).\n// We define the following levels:\n//   Exact    - An exact match of a subtag, before adding likely subtags.\n//   MaxExact - An exact match of a subtag, after adding likely subtags.\n//              [See Note 2].\n//   High     - High level of mutual intelligibility between different subtag\n//              variants.\n//   Low      - Low level of mutual intelligibility between different subtag\n//              variants.\n//   No       - No mutual intelligibility.\n//\n// The following levels can occur for each type of subtag:\n//   Base:    Exact, MaxExact, High, Low, No\n//   Script:  Exact, MaxExact [see Note 3], Low, No\n//   Region:  Exact, MaxExact, High\n//   Variant: Exact, High\n//   Private: Exact, No\n//\n// Any result with a confidence level of Low or higher is deemed a possible match.\n// Once a desired tag matches any of the supported tags with a level of MaxExact\n// or higher, the next desired tag is not considered (see Step 2.b).\n// Note that CLDR provides languageMatching data that defines close equivalence\n// classes for base languages, scripts and regions.\n//\n// Tie-breaking\n// If we get the same confidence level for two matches, we apply a sequence of\n// tie-breaking rules. The first that succeeds defines the result. The rules are\n// applied in the following order.\n//   1) Original language was defined and was identical.\n//   2) Original region was defined and was identical.\n//   3) Distance between two maximized regions was the smallest.\n//   4) Original script was defined and was identical.\n//   5) Distance from want tag to have tag using the parent relation [see Note 5.]\n// If there is still no winner after these rules are applied, the first match\n// found wins.\n//\n// Notes:\n// [2] In practice, as matching of Exact is done in a separate phase from\n//     matching the other levels, we reuse the Exact level to mean MaxExact in\n//     the second phase. As a consequence, we only need the levels defined by\n//     the Confidence type. The MaxExact confidence level is mapped to High in\n//     the public API.\n// [3] We do not differentiate between maximized script values that were derived\n//     from suppressScript versus most likely tag data. We determined that in\n//     ranking the two, one ranks just after the other. Moreover, the two cannot\n//     occur concurrently. As a consequence, they are identical for practical\n//     purposes.\n// [4] In case of deprecated, macro-equivalents and legacy mappings, we assign\n//     the MaxExact level to allow iw vs he to still be a closer match than\n//     en-AU vs en-US, for example.\n// [5] In CLDR a locale inherits fields that are unspecified for this locale\n//     from its parent. Therefore, if a locale is a parent of another locale,\n//     it is a strong measure for closeness, especially when no other tie\n//     breaker rule applies. One could also argue it is inconsistent, for\n//     example, when pt-AO matches pt (which CLDR equates with pt-BR), even\n//     though its parent is pt-PT according to the inheritance rules.\n//\n// Implementation Details:\n// There are several performance considerations worth pointing out. Most notably,\n// we preprocess as much as possible (within reason) at the time of creation of a\n// matcher. This includes:\n//   - creating a per-language map, which includes data for the raw base language\n//     and its canonicalized variant (if applicable),\n//   - expanding entries for the equivalence classes defined in CLDR's\n//     languageMatch data.\n// The per-language map ensures that typically only a very small number of tags\n// need to be considered. The pre-expansion of canonicalized subtags and\n// equivalence classes reduces the amount of map lookups that need to be done at\n// runtime.\n\n// matcher keeps a set of supported language tags, indexed by language.\ntype matcher struct {\n\tdefault_         *haveTag\n\tsupported        []*haveTag\n\tindex            map[language.Language]*matchHeader\n\tpassSettings     bool\n\tpreferSameScript bool\n}\n\n// matchHeader has the lists of tags for exact matches and matches based on\n// maximized and canonicalized tags for a given language.\ntype matchHeader struct {\n\thaveTags []*haveTag\n\toriginal bool\n}\n\n// haveTag holds a supported Tag and its maximized script and region. The maximized\n// or canonicalized language is not stored as it is not needed during matching.\ntype haveTag struct {\n\ttag language.Tag\n\n\t// index of this tag in the original list of supported tags.\n\tindex int\n\n\t// conf is the maximum confidence that can result from matching this haveTag.\n\t// When conf < Exact this means it was inserted after applying a CLDR equivalence rule.\n\tconf Confidence\n\n\t// Maximized region and script.\n\tmaxRegion language.Region\n\tmaxScript language.Script\n\n\t// altScript may be checked as an alternative match to maxScript. If altScript\n\t// matches, the confidence level for this match is Low. Theoretically there\n\t// could be multiple alternative scripts. This does not occur in practice.\n\taltScript language.Script\n\n\t// nextMax is the index of the next haveTag with the same maximized tags.\n\tnextMax uint16\n}\n\nfunc makeHaveTag(tag language.Tag, index int) (haveTag, language.Language) {\n\tmax := tag\n\tif tag.LangID != 0 || tag.RegionID != 0 || tag.ScriptID != 0 {\n\t\tmax, _ = canonicalize(All, max)\n\t\tmax, _ = max.Maximize()\n\t\tmax.RemakeString()\n\t}\n\treturn haveTag{tag, index, Exact, max.RegionID, max.ScriptID, altScript(max.LangID, max.ScriptID), 0}, max.LangID\n}\n\n// altScript returns an alternative script that may match the given script with\n// a low confidence.  At the moment, the langMatch data allows for at most one\n// script to map to another and we rely on this to keep the code simple.\nfunc altScript(l language.Language, s language.Script) language.Script {\n\tfor _, alt := range matchScript {\n\t\t// TODO: also match cases where language is not the same.\n\t\tif (language.Language(alt.wantLang) == l || language.Language(alt.haveLang) == l) &&\n\t\t\tlanguage.Script(alt.haveScript) == s {\n\t\t\treturn language.Script(alt.wantScript)\n\t\t}\n\t}\n\treturn 0\n}\n\n// addIfNew adds a haveTag to the list of tags only if it is a unique tag.\n// Tags that have the same maximized values are linked by index.\nfunc (h *matchHeader) addIfNew(n haveTag, exact bool) {\n\th.original = h.original || exact\n\t// Don't add new exact matches.\n\tfor _, v := range h.haveTags {\n\t\tif equalsRest(v.tag, n.tag) {\n\t\t\treturn\n\t\t}\n\t}\n\t// Allow duplicate maximized tags, but create a linked list to allow quickly\n\t// comparing the equivalents and bail out.\n\tfor i, v := range h.haveTags {\n\t\tif v.maxScript == n.maxScript &&\n\t\t\tv.maxRegion == n.maxRegion &&\n\t\t\tv.tag.VariantOrPrivateUseTags() == n.tag.VariantOrPrivateUseTags() {\n\t\t\tfor h.haveTags[i].nextMax != 0 {\n\t\t\t\ti = int(h.haveTags[i].nextMax)\n\t\t\t}\n\t\t\th.haveTags[i].nextMax = uint16(len(h.haveTags))\n\t\t\tbreak\n\t\t}\n\t}\n\th.haveTags = append(h.haveTags, &n)\n}\n\n// header returns the matchHeader for the given language. It creates one if\n// it doesn't already exist.\nfunc (m *matcher) header(l language.Language) *matchHeader {\n\tif h := m.index[l]; h != nil {\n\t\treturn h\n\t}\n\th := &matchHeader{}\n\tm.index[l] = h\n\treturn h\n}\n\nfunc toConf(d uint8) Confidence {\n\tif d <= 10 {\n\t\treturn High\n\t}\n\tif d < 30 {\n\t\treturn Low\n\t}\n\treturn No\n}\n\n// newMatcher builds an index for the given supported tags and returns it as\n// a matcher. It also expands the index by considering various equivalence classes\n// for a given tag.\nfunc newMatcher(supported []Tag, options []MatchOption) *matcher {\n\tm := &matcher{\n\t\tindex:            make(map[language.Language]*matchHeader),\n\t\tpreferSameScript: true,\n\t}\n\tfor _, o := range options {\n\t\to(m)\n\t}\n\tif len(supported) == 0 {\n\t\tm.default_ = &haveTag{}\n\t\treturn m\n\t}\n\t// Add supported languages to the index. Add exact matches first to give\n\t// them precedence.\n\tfor i, tag := range supported {\n\t\ttt := tag.tag()\n\t\tpair, _ := makeHaveTag(tt, i)\n\t\tm.header(tt.LangID).addIfNew(pair, true)\n\t\tm.supported = append(m.supported, &pair)\n\t}\n\tm.default_ = m.header(supported[0].lang()).haveTags[0]\n\t// Keep these in two different loops to support the case that two equivalent\n\t// languages are distinguished, such as iw and he.\n\tfor i, tag := range supported {\n\t\ttt := tag.tag()\n\t\tpair, max := makeHaveTag(tt, i)\n\t\tif max != tt.LangID {\n\t\t\tm.header(max).addIfNew(pair, true)\n\t\t}\n\t}\n\n\t// update is used to add indexes in the map for equivalent languages.\n\t// update will only add entries to original indexes, thus not computing any\n\t// transitive relations.\n\tupdate := func(want, have uint16, conf Confidence) {\n\t\tif hh := m.index[language.Language(have)]; hh != nil {\n\t\t\tif !hh.original {\n\t\t\t\treturn\n\t\t\t}\n\t\t\thw := m.header(language.Language(want))\n\t\t\tfor _, ht := range hh.haveTags {\n\t\t\t\tv := *ht\n\t\t\t\tif conf < v.conf {\n\t\t\t\t\tv.conf = conf\n\t\t\t\t}\n\t\t\t\tv.nextMax = 0 // this value needs to be recomputed\n\t\t\t\tif v.altScript != 0 {\n\t\t\t\t\tv.altScript = altScript(language.Language(want), v.maxScript)\n\t\t\t\t}\n\t\t\t\thw.addIfNew(v, conf == Exact && hh.original)\n\t\t\t}\n\t\t}\n\t}\n\n\t// Add entries for languages with mutual intelligibility as defined by CLDR's\n\t// languageMatch data.\n\tfor _, ml := range matchLang {\n\t\tupdate(ml.want, ml.have, toConf(ml.distance))\n\t\tif !ml.oneway {\n\t\t\tupdate(ml.have, ml.want, toConf(ml.distance))\n\t\t}\n\t}\n\n\t// Add entries for possible canonicalizations. This is an optimization to\n\t// ensure that only one map lookup needs to be done at runtime per desired tag.\n\t// First we match deprecated equivalents. If they are perfect equivalents\n\t// (their canonicalization simply substitutes a different language code, but\n\t// nothing else), the match confidence is Exact, otherwise it is High.\n\tfor i, lm := range language.AliasMap {\n\t\t// If deprecated codes match and there is no fiddling with the script\n\t\t// or region, we consider it an exact match.\n\t\tconf := Exact\n\t\tif language.AliasTypes[i] != language.Macro {\n\t\t\tif !isExactEquivalent(language.Language(lm.From)) {\n\t\t\t\tconf = High\n\t\t\t}\n\t\t\tupdate(lm.To, lm.From, conf)\n\t\t}\n\t\tupdate(lm.From, lm.To, conf)\n\t}\n\treturn m\n}\n\n// getBest gets the best matching tag in m for any of the given tags, taking into\n// account the order of preference of the given tags.\nfunc (m *matcher) getBest(want ...Tag) (got *haveTag, orig language.Tag, c Confidence) {\n\tbest := bestMatch{}\n\tfor i, ww := range want {\n\t\tw := ww.tag()\n\t\tvar max language.Tag\n\t\t// Check for exact match first.\n\t\th := m.index[w.LangID]\n\t\tif w.LangID != 0 {\n\t\t\tif h == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\t// Base language is defined.\n\t\t\tmax, _ = canonicalize(Legacy|Deprecated|Macro, w)\n\t\t\t// A region that is added through canonicalization is stronger than\n\t\t\t// a maximized region: set it in the original (e.g. mo -> ro-MD).\n\t\t\tif w.RegionID != max.RegionID {\n\t\t\t\tw.RegionID = max.RegionID\n\t\t\t}\n\t\t\t// TODO: should we do the same for scripts?\n\t\t\t// See test case: en, sr, nl ; sh ; sr\n\t\t\tmax, _ = max.Maximize()\n\t\t} else {\n\t\t\t// Base language is not defined.\n\t\t\tif h != nil {\n\t\t\t\tfor i := range h.haveTags {\n\t\t\t\t\thave := h.haveTags[i]\n\t\t\t\t\tif equalsRest(have.tag, w) {\n\t\t\t\t\t\treturn have, w, Exact\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif w.ScriptID == 0 && w.RegionID == 0 {\n\t\t\t\t// We skip all tags matching und for approximate matching, including\n\t\t\t\t// private tags.\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tmax, _ = w.Maximize()\n\t\t\tif h = m.index[max.LangID]; h == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\t\tpin := true\n\t\tfor _, t := range want[i+1:] {\n\t\t\tif w.LangID == t.lang() {\n\t\t\t\tpin = false\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\t// Check for match based on maximized tag.\n\t\tfor i := range h.haveTags {\n\t\t\thave := h.haveTags[i]\n\t\t\tbest.update(have, w, max.ScriptID, max.RegionID, pin)\n\t\t\tif best.conf == Exact {\n\t\t\t\tfor have.nextMax != 0 {\n\t\t\t\t\thave = h.haveTags[have.nextMax]\n\t\t\t\t\tbest.update(have, w, max.ScriptID, max.RegionID, pin)\n\t\t\t\t}\n\t\t\t\treturn best.have, best.want, best.conf\n\t\t\t}\n\t\t}\n\t}\n\tif best.conf <= No {\n\t\tif len(want) != 0 {\n\t\t\treturn nil, want[0].tag(), No\n\t\t}\n\t\treturn nil, language.Tag{}, No\n\t}\n\treturn best.have, best.want, best.conf\n}\n\n// bestMatch accumulates the best match so far.\ntype bestMatch struct {\n\thave            *haveTag\n\twant            language.Tag\n\tconf            Confidence\n\tpinnedRegion    language.Region\n\tpinLanguage     bool\n\tsameRegionGroup bool\n\t// Cached results from applying tie-breaking rules.\n\torigLang     bool\n\torigReg      bool\n\tparadigmReg  bool\n\tregGroupDist uint8\n\torigScript   bool\n}\n\n// update updates the existing best match if the new pair is considered to be a\n// better match. To determine if the given pair is a better match, it first\n// computes the rough confidence level. If this surpasses the current match, it\n// will replace it and update the tie-breaker rule cache. If there is a tie, it\n// proceeds with applying a series of tie-breaker rules. If there is no\n// conclusive winner after applying the tie-breaker rules, it leaves the current\n// match as the preferred match.\n//\n// If pin is true and have and tag are a strong match, it will henceforth only\n// consider matches for this language. This corresponds to the idea that most\n// users have a strong preference for the first defined language. A user can\n// still prefer a second language over a dialect of the preferred language by\n// explicitly specifying dialects, e.g. \"en, nl, en-GB\". In this case pin should\n// be false.\nfunc (m *bestMatch) update(have *haveTag, tag language.Tag, maxScript language.Script, maxRegion language.Region, pin bool) {\n\t// Bail if the maximum attainable confidence is below that of the current best match.\n\tc := have.conf\n\tif c < m.conf {\n\t\treturn\n\t}\n\t// Don't change the language once we already have found an exact match.\n\tif m.pinLanguage && tag.LangID != m.want.LangID {\n\t\treturn\n\t}\n\t// Pin the region group if we are comparing tags for the same language.\n\tif tag.LangID == m.want.LangID && m.sameRegionGroup {\n\t\t_, sameGroup := regionGroupDist(m.pinnedRegion, have.maxRegion, have.maxScript, m.want.LangID)\n\t\tif !sameGroup {\n\t\t\treturn\n\t\t}\n\t}\n\tif c == Exact && have.maxScript == maxScript {\n\t\t// If there is another language and then another entry of this language,\n\t\t// don't pin anything, otherwise pin the language.\n\t\tm.pinLanguage = pin\n\t}\n\tif equalsRest(have.tag, tag) {\n\t} else if have.maxScript != maxScript {\n\t\t// There is usually very little comprehension between different scripts.\n\t\t// In a few cases there may still be Low comprehension. This possibility\n\t\t// is pre-computed and stored in have.altScript.\n\t\tif Low < m.conf || have.altScript != maxScript {\n\t\t\treturn\n\t\t}\n\t\tc = Low\n\t} else if have.maxRegion != maxRegion {\n\t\tif High < c {\n\t\t\t// There is usually a small difference between languages across regions.\n\t\t\tc = High\n\t\t}\n\t}\n\n\t// We store the results of the computations of the tie-breaker rules along\n\t// with the best match. There is no need to do the checks once we determine\n\t// we have a winner, but we do still need to do the tie-breaker computations.\n\t// We use \"beaten\" to keep track if we still need to do the checks.\n\tbeaten := false // true if the new pair defeats the current one.\n\tif c != m.conf {\n\t\tif c < m.conf {\n\t\t\treturn\n\t\t}\n\t\tbeaten = true\n\t}\n\n\t// Tie-breaker rules:\n\t// We prefer if the pre-maximized language was specified and identical.\n\torigLang := have.tag.LangID == tag.LangID && tag.LangID != 0\n\tif !beaten && m.origLang != origLang {\n\t\tif m.origLang {\n\t\t\treturn\n\t\t}\n\t\tbeaten = true\n\t}\n\n\t// We prefer if the pre-maximized region was specified and identical.\n\torigReg := have.tag.RegionID == tag.RegionID && tag.RegionID != 0\n\tif !beaten && m.origReg != origReg {\n\t\tif m.origReg {\n\t\t\treturn\n\t\t}\n\t\tbeaten = true\n\t}\n\n\tregGroupDist, sameGroup := regionGroupDist(have.maxRegion, maxRegion, maxScript, tag.LangID)\n\tif !beaten && m.regGroupDist != regGroupDist {\n\t\tif regGroupDist > m.regGroupDist {\n\t\t\treturn\n\t\t}\n\t\tbeaten = true\n\t}\n\n\tparadigmReg := isParadigmLocale(tag.LangID, have.maxRegion)\n\tif !beaten && m.paradigmReg != paradigmReg {\n\t\tif !paradigmReg {\n\t\t\treturn\n\t\t}\n\t\tbeaten = true\n\t}\n\n\t// Next we prefer if the pre-maximized script was specified and identical.\n\torigScript := have.tag.ScriptID == tag.ScriptID && tag.ScriptID != 0\n\tif !beaten && m.origScript != origScript {\n\t\tif m.origScript {\n\t\t\treturn\n\t\t}\n\t\tbeaten = true\n\t}\n\n\t// Update m to the newly found best match.\n\tif beaten {\n\t\tm.have = have\n\t\tm.want = tag\n\t\tm.conf = c\n\t\tm.pinnedRegion = maxRegion\n\t\tm.sameRegionGroup = sameGroup\n\t\tm.origLang = origLang\n\t\tm.origReg = origReg\n\t\tm.paradigmReg = paradigmReg\n\t\tm.origScript = origScript\n\t\tm.regGroupDist = regGroupDist\n\t}\n}\n\nfunc isParadigmLocale(lang language.Language, r language.Region) bool {\n\tfor _, e := range paradigmLocales {\n\t\tif language.Language(e[0]) == lang && (r == language.Region(e[1]) || r == language.Region(e[2])) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// regionGroupDist computes the distance between two regions based on their\n// CLDR grouping.\nfunc regionGroupDist(a, b language.Region, script language.Script, lang language.Language) (dist uint8, same bool) {\n\tconst defaultDistance = 4\n\n\taGroup := uint(regionToGroups[a]) << 1\n\tbGroup := uint(regionToGroups[b]) << 1\n\tfor _, ri := range matchRegion {\n\t\tif language.Language(ri.lang) == lang && (ri.script == 0 || language.Script(ri.script) == script) {\n\t\t\tgroup := uint(1 << (ri.group &^ 0x80))\n\t\t\tif 0x80&ri.group == 0 {\n\t\t\t\tif aGroup&bGroup&group != 0 { // Both regions are in the group.\n\t\t\t\t\treturn ri.distance, ri.distance == defaultDistance\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (aGroup|bGroup)&group == 0 { // Both regions are not in the group.\n\t\t\t\t\treturn ri.distance, ri.distance == defaultDistance\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn defaultDistance, true\n}\n\n// equalsRest compares everything except the language.\nfunc equalsRest(a, b language.Tag) bool {\n\t// TODO: don't include extensions in this comparison. To do this efficiently,\n\t// though, we should handle private tags separately.\n\treturn a.ScriptID == b.ScriptID && a.RegionID == b.RegionID && a.VariantOrPrivateUseTags() == b.VariantOrPrivateUseTags()\n}\n\n// isExactEquivalent returns true if canonicalizing the language will not alter\n// the script or region of a tag.\nfunc isExactEquivalent(l language.Language) bool {\n\tfor _, o := range notEquivalent {\n\t\tif o == l {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\nvar notEquivalent []language.Language\n\nfunc init() {\n\t// Create a list of all languages for which canonicalization may alter the\n\t// script or region.\n\tfor _, lm := range language.AliasMap {\n\t\ttag := language.Tag{LangID: language.Language(lm.From)}\n\t\tif tag, _ = canonicalize(All, tag); tag.ScriptID != 0 || tag.RegionID != 0 {\n\t\t\tnotEquivalent = append(notEquivalent, language.Language(lm.From))\n\t\t}\n\t}\n\t// Maximize undefined regions of paradigm locales.\n\tfor i, v := range paradigmLocales {\n\t\tt := language.Tag{LangID: language.Language(v[0])}\n\t\tmax, _ := t.Maximize()\n\t\tif v[1] == 0 {\n\t\t\tparadigmLocales[i][1] = uint16(max.RegionID)\n\t\t}\n\t\tif v[2] == 0 {\n\t\t\tparadigmLocales[i][2] = uint16(max.RegionID)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/text/language/parse.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage language\n\nimport (\n\t\"errors\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"golang.org/x/text/internal/language\"\n)\n\n// ValueError is returned by any of the parsing functions when the\n// input is well-formed but the respective subtag is not recognized\n// as a valid value.\ntype ValueError interface {\n\terror\n\n\t// Subtag returns the subtag for which the error occurred.\n\tSubtag() string\n}\n\n// Parse parses the given BCP 47 string and returns a valid Tag. If parsing\n// failed it returns an error and any part of the tag that could be parsed.\n// If parsing succeeded but an unknown value was found, it returns\n// ValueError. The Tag returned in this case is just stripped of the unknown\n// value. All other values are preserved. It accepts tags in the BCP 47 format\n// and extensions to this standard defined in\n// https://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers.\n// The resulting tag is canonicalized using the default canonicalization type.\nfunc Parse(s string) (t Tag, err error) {\n\treturn Default.Parse(s)\n}\n\n// Parse parses the given BCP 47 string and returns a valid Tag. If parsing\n// failed it returns an error and any part of the tag that could be parsed.\n// If parsing succeeded but an unknown value was found, it returns\n// ValueError. The Tag returned in this case is just stripped of the unknown\n// value. All other values are preserved. It accepts tags in the BCP 47 format\n// and extensions to this standard defined in\n// https://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers.\n// The resulting tag is canonicalized using the canonicalization type c.\nfunc (c CanonType) Parse(s string) (t Tag, err error) {\n\tdefer func() {\n\t\tif recover() != nil {\n\t\t\tt = Tag{}\n\t\t\terr = language.ErrSyntax\n\t\t}\n\t}()\n\n\ttt, err := language.Parse(s)\n\tif err != nil {\n\t\treturn makeTag(tt), err\n\t}\n\ttt, changed := canonicalize(c, tt)\n\tif changed {\n\t\ttt.RemakeString()\n\t}\n\treturn makeTag(tt), nil\n}\n\n// Compose creates a Tag from individual parts, which may be of type Tag, Base,\n// Script, Region, Variant, []Variant, Extension, []Extension or error. If a\n// Base, Script or Region or slice of type Variant or Extension is passed more\n// than once, the latter will overwrite the former. Variants and Extensions are\n// accumulated, but if two extensions of the same type are passed, the latter\n// will replace the former. For -u extensions, though, the key-type pairs are\n// added, where later values overwrite older ones. A Tag overwrites all former\n// values and typically only makes sense as the first argument. The resulting\n// tag is returned after canonicalizing using the Default CanonType. If one or\n// more errors are encountered, one of the errors is returned.\nfunc Compose(part ...interface{}) (t Tag, err error) {\n\treturn Default.Compose(part...)\n}\n\n// Compose creates a Tag from individual parts, which may be of type Tag, Base,\n// Script, Region, Variant, []Variant, Extension, []Extension or error. If a\n// Base, Script or Region or slice of type Variant or Extension is passed more\n// than once, the latter will overwrite the former. Variants and Extensions are\n// accumulated, but if two extensions of the same type are passed, the latter\n// will replace the former. For -u extensions, though, the key-type pairs are\n// added, where later values overwrite older ones. A Tag overwrites all former\n// values and typically only makes sense as the first argument. The resulting\n// tag is returned after canonicalizing using CanonType c. If one or more errors\n// are encountered, one of the errors is returned.\nfunc (c CanonType) Compose(part ...interface{}) (t Tag, err error) {\n\tdefer func() {\n\t\tif recover() != nil {\n\t\t\tt = Tag{}\n\t\t\terr = language.ErrSyntax\n\t\t}\n\t}()\n\n\tvar b language.Builder\n\tif err = update(&b, part...); err != nil {\n\t\treturn und, err\n\t}\n\tb.Tag, _ = canonicalize(c, b.Tag)\n\treturn makeTag(b.Make()), err\n}\n\nvar errInvalidArgument = errors.New(\"invalid Extension or Variant\")\n\nfunc update(b *language.Builder, part ...interface{}) (err error) {\n\tfor _, x := range part {\n\t\tswitch v := x.(type) {\n\t\tcase Tag:\n\t\t\tb.SetTag(v.tag())\n\t\tcase Base:\n\t\t\tb.Tag.LangID = v.langID\n\t\tcase Script:\n\t\t\tb.Tag.ScriptID = v.scriptID\n\t\tcase Region:\n\t\t\tb.Tag.RegionID = v.regionID\n\t\tcase Variant:\n\t\t\tif v.variant == \"\" {\n\t\t\t\terr = errInvalidArgument\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tb.AddVariant(v.variant)\n\t\tcase Extension:\n\t\t\tif v.s == \"\" {\n\t\t\t\terr = errInvalidArgument\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tb.SetExt(v.s)\n\t\tcase []Variant:\n\t\t\tb.ClearVariants()\n\t\t\tfor _, v := range v {\n\t\t\t\tb.AddVariant(v.variant)\n\t\t\t}\n\t\tcase []Extension:\n\t\t\tb.ClearExtensions()\n\t\t\tfor _, e := range v {\n\t\t\t\tb.SetExt(e.s)\n\t\t\t}\n\t\t// TODO: support parsing of raw strings based on morphology or just extensions?\n\t\tcase error:\n\t\t\tif v != nil {\n\t\t\t\terr = v\n\t\t\t}\n\t\t}\n\t}\n\treturn\n}\n\nvar errInvalidWeight = errors.New(\"ParseAcceptLanguage: invalid weight\")\nvar errTagListTooLarge = errors.New(\"tag list exceeds max length\")\n\n// ParseAcceptLanguage parses the contents of an Accept-Language header as\n// defined in http://www.ietf.org/rfc/rfc2616.txt and returns a list of Tags and\n// a list of corresponding quality weights. It is more permissive than RFC 2616\n// and may return non-nil slices even if the input is not valid.\n// The Tags will be sorted by highest weight first and then by first occurrence.\n// Tags with a weight of zero will be dropped. An error will be returned if the\n// input could not be parsed.\nfunc ParseAcceptLanguage(s string) (tag []Tag, q []float32, err error) {\n\tdefer func() {\n\t\tif recover() != nil {\n\t\t\ttag = nil\n\t\t\tq = nil\n\t\t\terr = language.ErrSyntax\n\t\t}\n\t}()\n\n\tif strings.Count(s, \"-\") > 1000 {\n\t\treturn nil, nil, errTagListTooLarge\n\t}\n\n\tvar entry string\n\tfor s != \"\" {\n\t\tif entry, s = split(s, ','); entry == \"\" {\n\t\t\tcontinue\n\t\t}\n\n\t\tentry, weight := split(entry, ';')\n\n\t\t// Scan the language.\n\t\tt, err := Parse(entry)\n\t\tif err != nil {\n\t\t\tid, ok := acceptFallback[entry]\n\t\t\tif !ok {\n\t\t\t\treturn nil, nil, err\n\t\t\t}\n\t\t\tt = makeTag(language.Tag{LangID: id})\n\t\t}\n\n\t\t// Scan the optional weight.\n\t\tw := 1.0\n\t\tif weight != \"\" {\n\t\t\tweight = consume(weight, 'q')\n\t\t\tweight = consume(weight, '=')\n\t\t\t// consume returns the empty string when a token could not be\n\t\t\t// consumed, resulting in an error for ParseFloat.\n\t\t\tif w, err = strconv.ParseFloat(weight, 32); err != nil {\n\t\t\t\treturn nil, nil, errInvalidWeight\n\t\t\t}\n\t\t\t// Drop tags with a quality weight of 0.\n\t\t\tif w <= 0 {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\n\t\ttag = append(tag, t)\n\t\tq = append(q, float32(w))\n\t}\n\tsort.Stable(&tagSort{tag, q})\n\treturn tag, q, nil\n}\n\n// consume removes a leading token c from s and returns the result or the empty\n// string if there is no such token.\nfunc consume(s string, c byte) string {\n\tif s == \"\" || s[0] != c {\n\t\treturn \"\"\n\t}\n\treturn strings.TrimSpace(s[1:])\n}\n\nfunc split(s string, c byte) (head, tail string) {\n\tif i := strings.IndexByte(s, c); i >= 0 {\n\t\treturn strings.TrimSpace(s[:i]), strings.TrimSpace(s[i+1:])\n\t}\n\treturn strings.TrimSpace(s), \"\"\n}\n\n// Add hack mapping to deal with a small number of cases that occur\n// in Accept-Language (with reasonable frequency).\nvar acceptFallback = map[string]language.Language{\n\t\"english\": _en,\n\t\"deutsch\": _de,\n\t\"italian\": _it,\n\t\"french\":  _fr,\n\t\"*\":       _mul, // defined in the spec to match all languages.\n}\n\ntype tagSort struct {\n\ttag []Tag\n\tq   []float32\n}\n\nfunc (s *tagSort) Len() int {\n\treturn len(s.q)\n}\n\nfunc (s *tagSort) Less(i, j int) bool {\n\treturn s.q[i] > s.q[j]\n}\n\nfunc (s *tagSort) Swap(i, j int) {\n\ts.tag[i], s.tag[j] = s.tag[j], s.tag[i]\n\ts.q[i], s.q[j] = s.q[j], s.q[i]\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/text/language/tables.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\npackage language\n\n// CLDRVersion is the CLDR version from which the tables in this package are derived.\nconst CLDRVersion = \"32\"\n\nconst (\n\t_de  = 269\n\t_en  = 313\n\t_fr  = 350\n\t_it  = 505\n\t_mo  = 784\n\t_no  = 879\n\t_nb  = 839\n\t_pt  = 960\n\t_sh  = 1031\n\t_mul = 806\n\t_und = 0\n)\nconst (\n\t_001 = 1\n\t_419 = 31\n\t_BR  = 65\n\t_CA  = 73\n\t_ES  = 111\n\t_GB  = 124\n\t_MD  = 189\n\t_PT  = 239\n\t_UK  = 307\n\t_US  = 310\n\t_ZZ  = 358\n\t_XA  = 324\n\t_XC  = 326\n\t_XK  = 334\n)\nconst (\n\t_Latn = 91\n\t_Hani = 57\n\t_Hans = 59\n\t_Hant = 60\n\t_Qaaa = 149\n\t_Qaai = 157\n\t_Qabx = 198\n\t_Zinh = 255\n\t_Zyyy = 260\n\t_Zzzz = 261\n)\n\nvar regionToGroups = []uint8{ // 359 elements\n\t// Entry 0 - 3F\n\t0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x04,\n\t0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00,\n\t0x00, 0x04, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00,\n\t0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04,\n\t// Entry 40 - 7F\n\t0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04,\n\t0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00,\n\t0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04,\n\t// Entry 80 - BF\n\t0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00,\n\t0x00, 0x00, 0x04, 0x01, 0x00, 0x04, 0x02, 0x00,\n\t0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00,\n\t0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x04,\n\t// Entry C0 - FF\n\t0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,\n\t0x01, 0x04, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00,\n\t0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x04, 0x00, 0x05, 0x00, 0x00,\n\t0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t// Entry 100 - 13F\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,\n\t0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00,\n\t0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x05, 0x04,\n\t0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x05, 0x00,\n\t// Entry 140 - 17F\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n} // Size: 383 bytes\n\nvar paradigmLocales = [][3]uint16{ // 3 elements\n\t0: [3]uint16{0x139, 0x0, 0x7c},\n\t1: [3]uint16{0x13e, 0x0, 0x1f},\n\t2: [3]uint16{0x3c0, 0x41, 0xef},\n} // Size: 42 bytes\n\ntype mutualIntelligibility struct {\n\twant     uint16\n\thave     uint16\n\tdistance uint8\n\toneway   bool\n}\ntype scriptIntelligibility struct {\n\twantLang   uint16\n\thaveLang   uint16\n\twantScript uint8\n\thaveScript uint8\n\tdistance   uint8\n}\ntype regionIntelligibility struct {\n\tlang     uint16\n\tscript   uint8\n\tgroup    uint8\n\tdistance uint8\n}\n\n// matchLang holds pairs of langIDs of base languages that are typically\n// mutually intelligible. Each pair is associated with a confidence and\n// whether the intelligibility goes one or both ways.\nvar matchLang = []mutualIntelligibility{ // 113 elements\n\t0:   {want: 0x1d1, have: 0xb7, distance: 0x4, oneway: false},\n\t1:   {want: 0x407, have: 0xb7, distance: 0x4, oneway: false},\n\t2:   {want: 0x407, have: 0x1d1, distance: 0x4, oneway: false},\n\t3:   {want: 0x407, have: 0x432, distance: 0x4, oneway: false},\n\t4:   {want: 0x43a, have: 0x1, distance: 0x4, oneway: false},\n\t5:   {want: 0x1a3, have: 0x10d, distance: 0x4, oneway: true},\n\t6:   {want: 0x295, have: 0x10d, distance: 0x4, oneway: true},\n\t7:   {want: 0x101, have: 0x36f, distance: 0x8, oneway: false},\n\t8:   {want: 0x101, have: 0x347, distance: 0x8, oneway: false},\n\t9:   {want: 0x5, have: 0x3e2, distance: 0xa, oneway: true},\n\t10:  {want: 0xd, have: 0x139, distance: 0xa, oneway: true},\n\t11:  {want: 0x16, have: 0x367, distance: 0xa, oneway: true},\n\t12:  {want: 0x21, have: 0x139, distance: 0xa, oneway: true},\n\t13:  {want: 0x56, have: 0x13e, distance: 0xa, oneway: true},\n\t14:  {want: 0x58, have: 0x3e2, distance: 0xa, oneway: true},\n\t15:  {want: 0x71, have: 0x3e2, distance: 0xa, oneway: true},\n\t16:  {want: 0x75, have: 0x139, distance: 0xa, oneway: true},\n\t17:  {want: 0x82, have: 0x1be, distance: 0xa, oneway: true},\n\t18:  {want: 0xa5, have: 0x139, distance: 0xa, oneway: true},\n\t19:  {want: 0xb2, have: 0x15e, distance: 0xa, oneway: true},\n\t20:  {want: 0xdd, have: 0x153, distance: 0xa, oneway: true},\n\t21:  {want: 0xe5, have: 0x139, distance: 0xa, oneway: true},\n\t22:  {want: 0xe9, have: 0x3a, distance: 0xa, oneway: true},\n\t23:  {want: 0xf0, have: 0x15e, distance: 0xa, oneway: true},\n\t24:  {want: 0xf9, have: 0x15e, distance: 0xa, oneway: true},\n\t25:  {want: 0x100, have: 0x139, distance: 0xa, oneway: true},\n\t26:  {want: 0x130, have: 0x139, distance: 0xa, oneway: true},\n\t27:  {want: 0x13c, have: 0x139, distance: 0xa, oneway: true},\n\t28:  {want: 0x140, have: 0x151, distance: 0xa, oneway: true},\n\t29:  {want: 0x145, have: 0x13e, distance: 0xa, oneway: true},\n\t30:  {want: 0x158, have: 0x101, distance: 0xa, oneway: true},\n\t31:  {want: 0x16d, have: 0x367, distance: 0xa, oneway: true},\n\t32:  {want: 0x16e, have: 0x139, distance: 0xa, oneway: true},\n\t33:  {want: 0x16f, have: 0x139, distance: 0xa, oneway: true},\n\t34:  {want: 0x17e, have: 0x139, distance: 0xa, oneway: true},\n\t35:  {want: 0x190, have: 0x13e, distance: 0xa, oneway: true},\n\t36:  {want: 0x194, have: 0x13e, distance: 0xa, oneway: true},\n\t37:  {want: 0x1a4, have: 0x1be, distance: 0xa, oneway: true},\n\t38:  {want: 0x1b4, have: 0x139, distance: 0xa, oneway: true},\n\t39:  {want: 0x1b8, have: 0x139, distance: 0xa, oneway: true},\n\t40:  {want: 0x1d4, have: 0x15e, distance: 0xa, oneway: true},\n\t41:  {want: 0x1d7, have: 0x3e2, distance: 0xa, oneway: true},\n\t42:  {want: 0x1d9, have: 0x139, distance: 0xa, oneway: true},\n\t43:  {want: 0x1e7, have: 0x139, distance: 0xa, oneway: true},\n\t44:  {want: 0x1f8, have: 0x139, distance: 0xa, oneway: true},\n\t45:  {want: 0x20e, have: 0x1e1, distance: 0xa, oneway: true},\n\t46:  {want: 0x210, have: 0x139, distance: 0xa, oneway: true},\n\t47:  {want: 0x22d, have: 0x15e, distance: 0xa, oneway: true},\n\t48:  {want: 0x242, have: 0x3e2, distance: 0xa, oneway: true},\n\t49:  {want: 0x24a, have: 0x139, distance: 0xa, oneway: true},\n\t50:  {want: 0x251, have: 0x139, distance: 0xa, oneway: true},\n\t51:  {want: 0x265, have: 0x139, distance: 0xa, oneway: true},\n\t52:  {want: 0x274, have: 0x48a, distance: 0xa, oneway: true},\n\t53:  {want: 0x28a, have: 0x3e2, distance: 0xa, oneway: true},\n\t54:  {want: 0x28e, have: 0x1f9, distance: 0xa, oneway: true},\n\t55:  {want: 0x2a3, have: 0x139, distance: 0xa, oneway: true},\n\t56:  {want: 0x2b5, have: 0x15e, distance: 0xa, oneway: true},\n\t57:  {want: 0x2b8, have: 0x139, distance: 0xa, oneway: true},\n\t58:  {want: 0x2be, have: 0x139, distance: 0xa, oneway: true},\n\t59:  {want: 0x2c3, have: 0x15e, distance: 0xa, oneway: true},\n\t60:  {want: 0x2ed, have: 0x139, distance: 0xa, oneway: true},\n\t61:  {want: 0x2f1, have: 0x15e, distance: 0xa, oneway: true},\n\t62:  {want: 0x2fa, have: 0x139, distance: 0xa, oneway: true},\n\t63:  {want: 0x2ff, have: 0x7e, distance: 0xa, oneway: true},\n\t64:  {want: 0x304, have: 0x139, distance: 0xa, oneway: true},\n\t65:  {want: 0x30b, have: 0x3e2, distance: 0xa, oneway: true},\n\t66:  {want: 0x31b, have: 0x1be, distance: 0xa, oneway: true},\n\t67:  {want: 0x31f, have: 0x1e1, distance: 0xa, oneway: true},\n\t68:  {want: 0x320, have: 0x139, distance: 0xa, oneway: true},\n\t69:  {want: 0x331, have: 0x139, distance: 0xa, oneway: true},\n\t70:  {want: 0x351, have: 0x139, distance: 0xa, oneway: true},\n\t71:  {want: 0x36a, have: 0x347, distance: 0xa, oneway: false},\n\t72:  {want: 0x36a, have: 0x36f, distance: 0xa, oneway: true},\n\t73:  {want: 0x37a, have: 0x139, distance: 0xa, oneway: true},\n\t74:  {want: 0x387, have: 0x139, distance: 0xa, oneway: true},\n\t75:  {want: 0x389, have: 0x139, distance: 0xa, oneway: true},\n\t76:  {want: 0x38b, have: 0x15e, distance: 0xa, oneway: true},\n\t77:  {want: 0x390, have: 0x139, distance: 0xa, oneway: true},\n\t78:  {want: 0x395, have: 0x139, distance: 0xa, oneway: true},\n\t79:  {want: 0x39d, have: 0x139, distance: 0xa, oneway: true},\n\t80:  {want: 0x3a5, have: 0x139, distance: 0xa, oneway: true},\n\t81:  {want: 0x3be, have: 0x139, distance: 0xa, oneway: true},\n\t82:  {want: 0x3c4, have: 0x13e, distance: 0xa, oneway: true},\n\t83:  {want: 0x3d4, have: 0x10d, distance: 0xa, oneway: true},\n\t84:  {want: 0x3d9, have: 0x139, distance: 0xa, oneway: true},\n\t85:  {want: 0x3e5, have: 0x15e, distance: 0xa, oneway: true},\n\t86:  {want: 0x3e9, have: 0x1be, distance: 0xa, oneway: true},\n\t87:  {want: 0x3fa, have: 0x139, distance: 0xa, oneway: true},\n\t88:  {want: 0x40c, have: 0x139, distance: 0xa, oneway: true},\n\t89:  {want: 0x423, have: 0x139, distance: 0xa, oneway: true},\n\t90:  {want: 0x429, have: 0x139, distance: 0xa, oneway: true},\n\t91:  {want: 0x431, have: 0x139, distance: 0xa, oneway: true},\n\t92:  {want: 0x43b, have: 0x139, distance: 0xa, oneway: true},\n\t93:  {want: 0x43e, have: 0x1e1, distance: 0xa, oneway: true},\n\t94:  {want: 0x445, have: 0x139, distance: 0xa, oneway: true},\n\t95:  {want: 0x450, have: 0x139, distance: 0xa, oneway: true},\n\t96:  {want: 0x461, have: 0x139, distance: 0xa, oneway: true},\n\t97:  {want: 0x467, have: 0x3e2, distance: 0xa, oneway: true},\n\t98:  {want: 0x46f, have: 0x139, distance: 0xa, oneway: true},\n\t99:  {want: 0x476, have: 0x3e2, distance: 0xa, oneway: true},\n\t100: {want: 0x3883, have: 0x139, distance: 0xa, oneway: true},\n\t101: {want: 0x480, have: 0x139, distance: 0xa, oneway: true},\n\t102: {want: 0x482, have: 0x139, distance: 0xa, oneway: true},\n\t103: {want: 0x494, have: 0x3e2, distance: 0xa, oneway: true},\n\t104: {want: 0x49d, have: 0x139, distance: 0xa, oneway: true},\n\t105: {want: 0x4ac, have: 0x529, distance: 0xa, oneway: true},\n\t106: {want: 0x4b4, have: 0x139, distance: 0xa, oneway: true},\n\t107: {want: 0x4bc, have: 0x3e2, distance: 0xa, oneway: true},\n\t108: {want: 0x4e5, have: 0x15e, distance: 0xa, oneway: true},\n\t109: {want: 0x4f2, have: 0x139, distance: 0xa, oneway: true},\n\t110: {want: 0x512, have: 0x139, distance: 0xa, oneway: true},\n\t111: {want: 0x518, have: 0x139, distance: 0xa, oneway: true},\n\t112: {want: 0x52f, have: 0x139, distance: 0xa, oneway: true},\n} // Size: 702 bytes\n\n// matchScript holds pairs of scriptIDs where readers of one script\n// can typically also read the other. Each is associated with a confidence.\nvar matchScript = []scriptIntelligibility{ // 26 elements\n\t0:  {wantLang: 0x432, haveLang: 0x432, wantScript: 0x5b, haveScript: 0x20, distance: 0x5},\n\t1:  {wantLang: 0x432, haveLang: 0x432, wantScript: 0x20, haveScript: 0x5b, distance: 0x5},\n\t2:  {wantLang: 0x58, haveLang: 0x3e2, wantScript: 0x5b, haveScript: 0x20, distance: 0xa},\n\t3:  {wantLang: 0xa5, haveLang: 0x139, wantScript: 0xe, haveScript: 0x5b, distance: 0xa},\n\t4:  {wantLang: 0x1d7, haveLang: 0x3e2, wantScript: 0x8, haveScript: 0x20, distance: 0xa},\n\t5:  {wantLang: 0x210, haveLang: 0x139, wantScript: 0x2e, haveScript: 0x5b, distance: 0xa},\n\t6:  {wantLang: 0x24a, haveLang: 0x139, wantScript: 0x4f, haveScript: 0x5b, distance: 0xa},\n\t7:  {wantLang: 0x251, haveLang: 0x139, wantScript: 0x53, haveScript: 0x5b, distance: 0xa},\n\t8:  {wantLang: 0x2b8, haveLang: 0x139, wantScript: 0x58, haveScript: 0x5b, distance: 0xa},\n\t9:  {wantLang: 0x304, haveLang: 0x139, wantScript: 0x6f, haveScript: 0x5b, distance: 0xa},\n\t10: {wantLang: 0x331, haveLang: 0x139, wantScript: 0x76, haveScript: 0x5b, distance: 0xa},\n\t11: {wantLang: 0x351, haveLang: 0x139, wantScript: 0x22, haveScript: 0x5b, distance: 0xa},\n\t12: {wantLang: 0x395, haveLang: 0x139, wantScript: 0x83, haveScript: 0x5b, distance: 0xa},\n\t13: {wantLang: 0x39d, haveLang: 0x139, wantScript: 0x36, haveScript: 0x5b, distance: 0xa},\n\t14: {wantLang: 0x3be, haveLang: 0x139, wantScript: 0x5, haveScript: 0x5b, distance: 0xa},\n\t15: {wantLang: 0x3fa, haveLang: 0x139, wantScript: 0x5, haveScript: 0x5b, distance: 0xa},\n\t16: {wantLang: 0x40c, haveLang: 0x139, wantScript: 0xd6, haveScript: 0x5b, distance: 0xa},\n\t17: {wantLang: 0x450, haveLang: 0x139, wantScript: 0xe6, haveScript: 0x5b, distance: 0xa},\n\t18: {wantLang: 0x461, haveLang: 0x139, wantScript: 0xe9, haveScript: 0x5b, distance: 0xa},\n\t19: {wantLang: 0x46f, haveLang: 0x139, wantScript: 0x2c, haveScript: 0x5b, distance: 0xa},\n\t20: {wantLang: 0x476, haveLang: 0x3e2, wantScript: 0x5b, haveScript: 0x20, distance: 0xa},\n\t21: {wantLang: 0x4b4, haveLang: 0x139, wantScript: 0x5, haveScript: 0x5b, distance: 0xa},\n\t22: {wantLang: 0x4bc, haveLang: 0x3e2, wantScript: 0x5b, haveScript: 0x20, distance: 0xa},\n\t23: {wantLang: 0x512, haveLang: 0x139, wantScript: 0x3e, haveScript: 0x5b, distance: 0xa},\n\t24: {wantLang: 0x529, haveLang: 0x529, wantScript: 0x3b, haveScript: 0x3c, distance: 0xf},\n\t25: {wantLang: 0x529, haveLang: 0x529, wantScript: 0x3c, haveScript: 0x3b, distance: 0x13},\n} // Size: 232 bytes\n\nvar matchRegion = []regionIntelligibility{ // 15 elements\n\t0:  {lang: 0x3a, script: 0x0, group: 0x4, distance: 0x4},\n\t1:  {lang: 0x3a, script: 0x0, group: 0x84, distance: 0x4},\n\t2:  {lang: 0x139, script: 0x0, group: 0x1, distance: 0x4},\n\t3:  {lang: 0x139, script: 0x0, group: 0x81, distance: 0x4},\n\t4:  {lang: 0x13e, script: 0x0, group: 0x3, distance: 0x4},\n\t5:  {lang: 0x13e, script: 0x0, group: 0x83, distance: 0x4},\n\t6:  {lang: 0x3c0, script: 0x0, group: 0x3, distance: 0x4},\n\t7:  {lang: 0x3c0, script: 0x0, group: 0x83, distance: 0x4},\n\t8:  {lang: 0x529, script: 0x3c, group: 0x2, distance: 0x4},\n\t9:  {lang: 0x529, script: 0x3c, group: 0x82, distance: 0x4},\n\t10: {lang: 0x3a, script: 0x0, group: 0x80, distance: 0x5},\n\t11: {lang: 0x139, script: 0x0, group: 0x80, distance: 0x5},\n\t12: {lang: 0x13e, script: 0x0, group: 0x80, distance: 0x5},\n\t13: {lang: 0x3c0, script: 0x0, group: 0x80, distance: 0x5},\n\t14: {lang: 0x529, script: 0x3c, group: 0x80, distance: 0x5},\n} // Size: 114 bytes\n\n// Total table size 1473 bytes (1KiB); checksum: 7BB90B5C\n"
  },
  {
    "path": "tests/vendor/golang.org/x/text/language/tags.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage language\n\nimport \"golang.org/x/text/internal/language/compact\"\n\n// TODO: Various sets of commonly use tags and regions.\n\n// MustParse is like Parse, but panics if the given BCP 47 tag cannot be parsed.\n// It simplifies safe initialization of Tag values.\nfunc MustParse(s string) Tag {\n\tt, err := Parse(s)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn t\n}\n\n// MustParse is like Parse, but panics if the given BCP 47 tag cannot be parsed.\n// It simplifies safe initialization of Tag values.\nfunc (c CanonType) MustParse(s string) Tag {\n\tt, err := c.Parse(s)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn t\n}\n\n// MustParseBase is like ParseBase, but panics if the given base cannot be parsed.\n// It simplifies safe initialization of Base values.\nfunc MustParseBase(s string) Base {\n\tb, err := ParseBase(s)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn b\n}\n\n// MustParseScript is like ParseScript, but panics if the given script cannot be\n// parsed. It simplifies safe initialization of Script values.\nfunc MustParseScript(s string) Script {\n\tscr, err := ParseScript(s)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn scr\n}\n\n// MustParseRegion is like ParseRegion, but panics if the given region cannot be\n// parsed. It simplifies safe initialization of Region values.\nfunc MustParseRegion(s string) Region {\n\tr, err := ParseRegion(s)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn r\n}\n\nvar (\n\tund = Tag{}\n\n\tUnd Tag = Tag{}\n\n\tAfrikaans            Tag = Tag(compact.Afrikaans)\n\tAmharic              Tag = Tag(compact.Amharic)\n\tArabic               Tag = Tag(compact.Arabic)\n\tModernStandardArabic Tag = Tag(compact.ModernStandardArabic)\n\tAzerbaijani          Tag = Tag(compact.Azerbaijani)\n\tBulgarian            Tag = Tag(compact.Bulgarian)\n\tBengali              Tag = Tag(compact.Bengali)\n\tCatalan              Tag = Tag(compact.Catalan)\n\tCzech                Tag = Tag(compact.Czech)\n\tDanish               Tag = Tag(compact.Danish)\n\tGerman               Tag = Tag(compact.German)\n\tGreek                Tag = Tag(compact.Greek)\n\tEnglish              Tag = Tag(compact.English)\n\tAmericanEnglish      Tag = Tag(compact.AmericanEnglish)\n\tBritishEnglish       Tag = Tag(compact.BritishEnglish)\n\tSpanish              Tag = Tag(compact.Spanish)\n\tEuropeanSpanish      Tag = Tag(compact.EuropeanSpanish)\n\tLatinAmericanSpanish Tag = Tag(compact.LatinAmericanSpanish)\n\tEstonian             Tag = Tag(compact.Estonian)\n\tPersian              Tag = Tag(compact.Persian)\n\tFinnish              Tag = Tag(compact.Finnish)\n\tFilipino             Tag = Tag(compact.Filipino)\n\tFrench               Tag = Tag(compact.French)\n\tCanadianFrench       Tag = Tag(compact.CanadianFrench)\n\tGujarati             Tag = Tag(compact.Gujarati)\n\tHebrew               Tag = Tag(compact.Hebrew)\n\tHindi                Tag = Tag(compact.Hindi)\n\tCroatian             Tag = Tag(compact.Croatian)\n\tHungarian            Tag = Tag(compact.Hungarian)\n\tArmenian             Tag = Tag(compact.Armenian)\n\tIndonesian           Tag = Tag(compact.Indonesian)\n\tIcelandic            Tag = Tag(compact.Icelandic)\n\tItalian              Tag = Tag(compact.Italian)\n\tJapanese             Tag = Tag(compact.Japanese)\n\tGeorgian             Tag = Tag(compact.Georgian)\n\tKazakh               Tag = Tag(compact.Kazakh)\n\tKhmer                Tag = Tag(compact.Khmer)\n\tKannada              Tag = Tag(compact.Kannada)\n\tKorean               Tag = Tag(compact.Korean)\n\tKirghiz              Tag = Tag(compact.Kirghiz)\n\tLao                  Tag = Tag(compact.Lao)\n\tLithuanian           Tag = Tag(compact.Lithuanian)\n\tLatvian              Tag = Tag(compact.Latvian)\n\tMacedonian           Tag = Tag(compact.Macedonian)\n\tMalayalam            Tag = Tag(compact.Malayalam)\n\tMongolian            Tag = Tag(compact.Mongolian)\n\tMarathi              Tag = Tag(compact.Marathi)\n\tMalay                Tag = Tag(compact.Malay)\n\tBurmese              Tag = Tag(compact.Burmese)\n\tNepali               Tag = Tag(compact.Nepali)\n\tDutch                Tag = Tag(compact.Dutch)\n\tNorwegian            Tag = Tag(compact.Norwegian)\n\tPunjabi              Tag = Tag(compact.Punjabi)\n\tPolish               Tag = Tag(compact.Polish)\n\tPortuguese           Tag = Tag(compact.Portuguese)\n\tBrazilianPortuguese  Tag = Tag(compact.BrazilianPortuguese)\n\tEuropeanPortuguese   Tag = Tag(compact.EuropeanPortuguese)\n\tRomanian             Tag = Tag(compact.Romanian)\n\tRussian              Tag = Tag(compact.Russian)\n\tSinhala              Tag = Tag(compact.Sinhala)\n\tSlovak               Tag = Tag(compact.Slovak)\n\tSlovenian            Tag = Tag(compact.Slovenian)\n\tAlbanian             Tag = Tag(compact.Albanian)\n\tSerbian              Tag = Tag(compact.Serbian)\n\tSerbianLatin         Tag = Tag(compact.SerbianLatin)\n\tSwedish              Tag = Tag(compact.Swedish)\n\tSwahili              Tag = Tag(compact.Swahili)\n\tTamil                Tag = Tag(compact.Tamil)\n\tTelugu               Tag = Tag(compact.Telugu)\n\tThai                 Tag = Tag(compact.Thai)\n\tTurkish              Tag = Tag(compact.Turkish)\n\tUkrainian            Tag = Tag(compact.Ukrainian)\n\tUrdu                 Tag = Tag(compact.Urdu)\n\tUzbek                Tag = Tag(compact.Uzbek)\n\tVietnamese           Tag = Tag(compact.Vietnamese)\n\tChinese              Tag = Tag(compact.Chinese)\n\tSimplifiedChinese    Tag = Tag(compact.SimplifiedChinese)\n\tTraditionalChinese   Tag = Tag(compact.TraditionalChinese)\n\tZulu                 Tag = Tag(compact.Zulu)\n)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/text/runes/cond.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage runes\n\nimport (\n\t\"unicode/utf8\"\n\n\t\"golang.org/x/text/transform\"\n)\n\n// Note: below we pass invalid UTF-8 to the tIn and tNotIn transformers as is.\n// This is done for various reasons:\n// - To retain the semantics of the Nop transformer: if input is passed to a Nop\n//   one would expect it to be unchanged.\n// - It would be very expensive to pass a converted RuneError to a transformer:\n//   a transformer might need more source bytes after RuneError, meaning that\n//   the only way to pass it safely is to create a new buffer and manage the\n//   intermingling of RuneErrors and normal input.\n// - Many transformers leave ill-formed UTF-8 as is, so this is not\n//   inconsistent. Generally ill-formed UTF-8 is only replaced if it is a\n//   logical consequence of the operation (as for Map) or if it otherwise would\n//   pose security concerns (as for Remove).\n// - An alternative would be to return an error on ill-formed UTF-8, but this\n//   would be inconsistent with other operations.\n\n// If returns a transformer that applies tIn to consecutive runes for which\n// s.Contains(r) and tNotIn to consecutive runes for which !s.Contains(r). Reset\n// is called on tIn and tNotIn at the start of each run. A Nop transformer will\n// substitute a nil value passed to tIn or tNotIn. Invalid UTF-8 is translated\n// to RuneError to determine which transformer to apply, but is passed as is to\n// the respective transformer.\nfunc If(s Set, tIn, tNotIn transform.Transformer) Transformer {\n\tif tIn == nil && tNotIn == nil {\n\t\treturn Transformer{transform.Nop}\n\t}\n\tif tIn == nil {\n\t\ttIn = transform.Nop\n\t}\n\tif tNotIn == nil {\n\t\ttNotIn = transform.Nop\n\t}\n\tsIn, ok := tIn.(transform.SpanningTransformer)\n\tif !ok {\n\t\tsIn = dummySpan{tIn}\n\t}\n\tsNotIn, ok := tNotIn.(transform.SpanningTransformer)\n\tif !ok {\n\t\tsNotIn = dummySpan{tNotIn}\n\t}\n\n\ta := &cond{\n\t\ttIn:    sIn,\n\t\ttNotIn: sNotIn,\n\t\tf:      s.Contains,\n\t}\n\ta.Reset()\n\treturn Transformer{a}\n}\n\ntype dummySpan struct{ transform.Transformer }\n\nfunc (d dummySpan) Span(src []byte, atEOF bool) (n int, err error) {\n\treturn 0, transform.ErrEndOfSpan\n}\n\ntype cond struct {\n\ttIn, tNotIn transform.SpanningTransformer\n\tf           func(rune) bool\n\tcheck       func(rune) bool               // current check to perform\n\tt           transform.SpanningTransformer // current transformer to use\n}\n\n// Reset implements transform.Transformer.\nfunc (t *cond) Reset() {\n\tt.check = t.is\n\tt.t = t.tIn\n\tt.t.Reset() // notIn will be reset on first usage.\n}\n\nfunc (t *cond) is(r rune) bool {\n\tif t.f(r) {\n\t\treturn true\n\t}\n\tt.check = t.isNot\n\tt.t = t.tNotIn\n\tt.tNotIn.Reset()\n\treturn false\n}\n\nfunc (t *cond) isNot(r rune) bool {\n\tif !t.f(r) {\n\t\treturn true\n\t}\n\tt.check = t.is\n\tt.t = t.tIn\n\tt.tIn.Reset()\n\treturn false\n}\n\n// This implementation of Span doesn't help all too much, but it needs to be\n// there to satisfy this package's Transformer interface.\n// TODO: there are certainly room for improvements, though. For example, if\n// t.t == transform.Nop (which will a common occurrence) it will save a bundle\n// to special-case that loop.\nfunc (t *cond) Span(src []byte, atEOF bool) (n int, err error) {\n\tp := 0\n\tfor n < len(src) && err == nil {\n\t\t// Don't process too much at a time as the Spanner that will be\n\t\t// called on this block may terminate early.\n\t\tconst maxChunk = 4096\n\t\tmax := len(src)\n\t\tif v := n + maxChunk; v < max {\n\t\t\tmax = v\n\t\t}\n\t\tatEnd := false\n\t\tsize := 0\n\t\tcurrent := t.t\n\t\tfor ; p < max; p += size {\n\t\t\tr := rune(src[p])\n\t\t\tif r < utf8.RuneSelf {\n\t\t\t\tsize = 1\n\t\t\t} else if r, size = utf8.DecodeRune(src[p:]); size == 1 {\n\t\t\t\tif !atEOF && !utf8.FullRune(src[p:]) {\n\t\t\t\t\terr = transform.ErrShortSrc\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !t.check(r) {\n\t\t\t\t// The next rune will be the start of a new run.\n\t\t\t\tatEnd = true\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tn2, err2 := current.Span(src[n:p], atEnd || (atEOF && p == len(src)))\n\t\tn += n2\n\t\tif err2 != nil {\n\t\t\treturn n, err2\n\t\t}\n\t\t// At this point either err != nil or t.check will pass for the rune at p.\n\t\tp = n + size\n\t}\n\treturn n, err\n}\n\nfunc (t *cond) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {\n\tp := 0\n\tfor nSrc < len(src) && err == nil {\n\t\t// Don't process too much at a time, as the work might be wasted if the\n\t\t// destination buffer isn't large enough to hold the result or a\n\t\t// transform returns an error early.\n\t\tconst maxChunk = 4096\n\t\tmax := len(src)\n\t\tif n := nSrc + maxChunk; n < len(src) {\n\t\t\tmax = n\n\t\t}\n\t\tatEnd := false\n\t\tsize := 0\n\t\tcurrent := t.t\n\t\tfor ; p < max; p += size {\n\t\t\tr := rune(src[p])\n\t\t\tif r < utf8.RuneSelf {\n\t\t\t\tsize = 1\n\t\t\t} else if r, size = utf8.DecodeRune(src[p:]); size == 1 {\n\t\t\t\tif !atEOF && !utf8.FullRune(src[p:]) {\n\t\t\t\t\terr = transform.ErrShortSrc\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !t.check(r) {\n\t\t\t\t// The next rune will be the start of a new run.\n\t\t\t\tatEnd = true\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tnDst2, nSrc2, err2 := current.Transform(dst[nDst:], src[nSrc:p], atEnd || (atEOF && p == len(src)))\n\t\tnDst += nDst2\n\t\tnSrc += nSrc2\n\t\tif err2 != nil {\n\t\t\treturn nDst, nSrc, err2\n\t\t}\n\t\t// At this point either err != nil or t.check will pass for the rune at p.\n\t\tp = nSrc + size\n\t}\n\treturn nDst, nSrc, err\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/text/runes/runes.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package runes provide transforms for UTF-8 encoded text.\npackage runes // import \"golang.org/x/text/runes\"\n\nimport (\n\t\"unicode\"\n\t\"unicode/utf8\"\n\n\t\"golang.org/x/text/transform\"\n)\n\n// A Set is a collection of runes.\ntype Set interface {\n\t// Contains returns true if r is contained in the set.\n\tContains(r rune) bool\n}\n\ntype setFunc func(rune) bool\n\nfunc (s setFunc) Contains(r rune) bool {\n\treturn s(r)\n}\n\n// Note: using funcs here instead of wrapping types result in cleaner\n// documentation and a smaller API.\n\n// In creates a Set with a Contains method that returns true for all runes in\n// the given RangeTable.\nfunc In(rt *unicode.RangeTable) Set {\n\treturn setFunc(func(r rune) bool { return unicode.Is(rt, r) })\n}\n\n// NotIn creates a Set with a Contains method that returns true for all runes not\n// in the given RangeTable.\nfunc NotIn(rt *unicode.RangeTable) Set {\n\treturn setFunc(func(r rune) bool { return !unicode.Is(rt, r) })\n}\n\n// Predicate creates a Set with a Contains method that returns f(r).\nfunc Predicate(f func(rune) bool) Set {\n\treturn setFunc(f)\n}\n\n// Transformer implements the transform.Transformer interface.\ntype Transformer struct {\n\tt transform.SpanningTransformer\n}\n\nfunc (t Transformer) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {\n\treturn t.t.Transform(dst, src, atEOF)\n}\n\nfunc (t Transformer) Span(b []byte, atEOF bool) (n int, err error) {\n\treturn t.t.Span(b, atEOF)\n}\n\nfunc (t Transformer) Reset() { t.t.Reset() }\n\n// Bytes returns a new byte slice with the result of converting b using t.  It\n// calls Reset on t. It returns nil if any error was found. This can only happen\n// if an error-producing Transformer is passed to If.\nfunc (t Transformer) Bytes(b []byte) []byte {\n\tb, _, err := transform.Bytes(t, b)\n\tif err != nil {\n\t\treturn nil\n\t}\n\treturn b\n}\n\n// String returns a string with the result of converting s using t. It calls\n// Reset on t. It returns the empty string if any error was found. This can only\n// happen if an error-producing Transformer is passed to If.\nfunc (t Transformer) String(s string) string {\n\ts, _, err := transform.String(t, s)\n\tif err != nil {\n\t\treturn \"\"\n\t}\n\treturn s\n}\n\n// TODO:\n// - Copy: copying strings and bytes in whole-rune units.\n// - Validation (maybe)\n// - Well-formed-ness (maybe)\n\nconst runeErrorString = string(utf8.RuneError)\n\n// Remove returns a Transformer that removes runes r for which s.Contains(r).\n// Illegal input bytes are replaced by RuneError before being passed to f.\nfunc Remove(s Set) Transformer {\n\tif f, ok := s.(setFunc); ok {\n\t\t// This little trick cuts the running time of BenchmarkRemove for sets\n\t\t// created by Predicate roughly in half.\n\t\t// TODO: special-case RangeTables as well.\n\t\treturn Transformer{remove(f)}\n\t}\n\treturn Transformer{remove(s.Contains)}\n}\n\n// TODO: remove transform.RemoveFunc.\n\ntype remove func(r rune) bool\n\nfunc (remove) Reset() {}\n\n// Span implements transform.Spanner.\nfunc (t remove) Span(src []byte, atEOF bool) (n int, err error) {\n\tfor r, size := rune(0), 0; n < len(src); {\n\t\tif r = rune(src[n]); r < utf8.RuneSelf {\n\t\t\tsize = 1\n\t\t} else if r, size = utf8.DecodeRune(src[n:]); size == 1 {\n\t\t\t// Invalid rune.\n\t\t\tif !atEOF && !utf8.FullRune(src[n:]) {\n\t\t\t\terr = transform.ErrShortSrc\n\t\t\t} else {\n\t\t\t\terr = transform.ErrEndOfSpan\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t\tif t(r) {\n\t\t\terr = transform.ErrEndOfSpan\n\t\t\tbreak\n\t\t}\n\t\tn += size\n\t}\n\treturn\n}\n\n// Transform implements transform.Transformer.\nfunc (t remove) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {\n\tfor r, size := rune(0), 0; nSrc < len(src); {\n\t\tif r = rune(src[nSrc]); r < utf8.RuneSelf {\n\t\t\tsize = 1\n\t\t} else if r, size = utf8.DecodeRune(src[nSrc:]); size == 1 {\n\t\t\t// Invalid rune.\n\t\t\tif !atEOF && !utf8.FullRune(src[nSrc:]) {\n\t\t\t\terr = transform.ErrShortSrc\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// We replace illegal bytes with RuneError. Not doing so might\n\t\t\t// otherwise turn a sequence of invalid UTF-8 into valid UTF-8.\n\t\t\t// The resulting byte sequence may subsequently contain runes\n\t\t\t// for which t(r) is true that were passed unnoticed.\n\t\t\tif !t(utf8.RuneError) {\n\t\t\t\tif nDst+3 > len(dst) {\n\t\t\t\t\terr = transform.ErrShortDst\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tdst[nDst+0] = runeErrorString[0]\n\t\t\t\tdst[nDst+1] = runeErrorString[1]\n\t\t\t\tdst[nDst+2] = runeErrorString[2]\n\t\t\t\tnDst += 3\n\t\t\t}\n\t\t\tnSrc++\n\t\t\tcontinue\n\t\t}\n\t\tif t(r) {\n\t\t\tnSrc += size\n\t\t\tcontinue\n\t\t}\n\t\tif nDst+size > len(dst) {\n\t\t\terr = transform.ErrShortDst\n\t\t\tbreak\n\t\t}\n\t\tfor i := 0; i < size; i++ {\n\t\t\tdst[nDst] = src[nSrc]\n\t\t\tnDst++\n\t\t\tnSrc++\n\t\t}\n\t}\n\treturn\n}\n\n// Map returns a Transformer that maps the runes in the input using the given\n// mapping. Illegal bytes in the input are converted to utf8.RuneError before\n// being passed to the mapping func.\nfunc Map(mapping func(rune) rune) Transformer {\n\treturn Transformer{mapper(mapping)}\n}\n\ntype mapper func(rune) rune\n\nfunc (mapper) Reset() {}\n\n// Span implements transform.Spanner.\nfunc (t mapper) Span(src []byte, atEOF bool) (n int, err error) {\n\tfor r, size := rune(0), 0; n < len(src); n += size {\n\t\tif r = rune(src[n]); r < utf8.RuneSelf {\n\t\t\tsize = 1\n\t\t} else if r, size = utf8.DecodeRune(src[n:]); size == 1 {\n\t\t\t// Invalid rune.\n\t\t\tif !atEOF && !utf8.FullRune(src[n:]) {\n\t\t\t\terr = transform.ErrShortSrc\n\t\t\t} else {\n\t\t\t\terr = transform.ErrEndOfSpan\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t\tif t(r) != r {\n\t\t\terr = transform.ErrEndOfSpan\n\t\t\tbreak\n\t\t}\n\t}\n\treturn n, err\n}\n\n// Transform implements transform.Transformer.\nfunc (t mapper) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {\n\tvar replacement rune\n\tvar b [utf8.UTFMax]byte\n\n\tfor r, size := rune(0), 0; nSrc < len(src); {\n\t\tif r = rune(src[nSrc]); r < utf8.RuneSelf {\n\t\t\tif replacement = t(r); replacement < utf8.RuneSelf {\n\t\t\t\tif nDst == len(dst) {\n\t\t\t\t\terr = transform.ErrShortDst\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tdst[nDst] = byte(replacement)\n\t\t\t\tnDst++\n\t\t\t\tnSrc++\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tsize = 1\n\t\t} else if r, size = utf8.DecodeRune(src[nSrc:]); size == 1 {\n\t\t\t// Invalid rune.\n\t\t\tif !atEOF && !utf8.FullRune(src[nSrc:]) {\n\t\t\t\terr = transform.ErrShortSrc\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tif replacement = t(utf8.RuneError); replacement == utf8.RuneError {\n\t\t\t\tif nDst+3 > len(dst) {\n\t\t\t\t\terr = transform.ErrShortDst\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tdst[nDst+0] = runeErrorString[0]\n\t\t\t\tdst[nDst+1] = runeErrorString[1]\n\t\t\t\tdst[nDst+2] = runeErrorString[2]\n\t\t\t\tnDst += 3\n\t\t\t\tnSrc++\n\t\t\t\tcontinue\n\t\t\t}\n\t\t} else if replacement = t(r); replacement == r {\n\t\t\tif nDst+size > len(dst) {\n\t\t\t\terr = transform.ErrShortDst\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tfor i := 0; i < size; i++ {\n\t\t\t\tdst[nDst] = src[nSrc]\n\t\t\t\tnDst++\n\t\t\t\tnSrc++\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\tn := utf8.EncodeRune(b[:], replacement)\n\n\t\tif nDst+n > len(dst) {\n\t\t\terr = transform.ErrShortDst\n\t\t\tbreak\n\t\t}\n\t\tfor i := 0; i < n; i++ {\n\t\t\tdst[nDst] = b[i]\n\t\t\tnDst++\n\t\t}\n\t\tnSrc += size\n\t}\n\treturn\n}\n\n// ReplaceIllFormed returns a transformer that replaces all input bytes that are\n// not part of a well-formed UTF-8 code sequence with utf8.RuneError.\nfunc ReplaceIllFormed() Transformer {\n\treturn Transformer{&replaceIllFormed{}}\n}\n\ntype replaceIllFormed struct{ transform.NopResetter }\n\nfunc (t replaceIllFormed) Span(src []byte, atEOF bool) (n int, err error) {\n\tfor n < len(src) {\n\t\t// ASCII fast path.\n\t\tif src[n] < utf8.RuneSelf {\n\t\t\tn++\n\t\t\tcontinue\n\t\t}\n\n\t\tr, size := utf8.DecodeRune(src[n:])\n\n\t\t// Look for a valid non-ASCII rune.\n\t\tif r != utf8.RuneError || size != 1 {\n\t\t\tn += size\n\t\t\tcontinue\n\t\t}\n\n\t\t// Look for short source data.\n\t\tif !atEOF && !utf8.FullRune(src[n:]) {\n\t\t\terr = transform.ErrShortSrc\n\t\t\tbreak\n\t\t}\n\n\t\t// We have an invalid rune.\n\t\terr = transform.ErrEndOfSpan\n\t\tbreak\n\t}\n\treturn n, err\n}\n\nfunc (t replaceIllFormed) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {\n\tfor nSrc < len(src) {\n\t\t// ASCII fast path.\n\t\tif r := src[nSrc]; r < utf8.RuneSelf {\n\t\t\tif nDst == len(dst) {\n\t\t\t\terr = transform.ErrShortDst\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tdst[nDst] = r\n\t\t\tnDst++\n\t\t\tnSrc++\n\t\t\tcontinue\n\t\t}\n\n\t\t// Look for a valid non-ASCII rune.\n\t\tif _, size := utf8.DecodeRune(src[nSrc:]); size != 1 {\n\t\t\tif size != copy(dst[nDst:], src[nSrc:nSrc+size]) {\n\t\t\t\terr = transform.ErrShortDst\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tnDst += size\n\t\t\tnSrc += size\n\t\t\tcontinue\n\t\t}\n\n\t\t// Look for short source data.\n\t\tif !atEOF && !utf8.FullRune(src[nSrc:]) {\n\t\t\terr = transform.ErrShortSrc\n\t\t\tbreak\n\t\t}\n\n\t\t// We have an invalid rune.\n\t\tif nDst+3 > len(dst) {\n\t\t\terr = transform.ErrShortDst\n\t\t\tbreak\n\t\t}\n\t\tdst[nDst+0] = runeErrorString[0]\n\t\tdst[nDst+1] = runeErrorString[1]\n\t\tdst[nDst+2] = runeErrorString[2]\n\t\tnDst += 3\n\t\tnSrc++\n\t}\n\treturn nDst, nSrc, err\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/text/transform/transform.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package transform provides reader and writer wrappers that transform the\n// bytes passing through as well as various transformations. Example\n// transformations provided by other packages include normalization and\n// conversion between character sets.\npackage transform // import \"golang.org/x/text/transform\"\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"io\"\n\t\"unicode/utf8\"\n)\n\nvar (\n\t// ErrShortDst means that the destination buffer was too short to\n\t// receive all of the transformed bytes.\n\tErrShortDst = errors.New(\"transform: short destination buffer\")\n\n\t// ErrShortSrc means that the source buffer has insufficient data to\n\t// complete the transformation.\n\tErrShortSrc = errors.New(\"transform: short source buffer\")\n\n\t// ErrEndOfSpan means that the input and output (the transformed input)\n\t// are not identical.\n\tErrEndOfSpan = errors.New(\"transform: input and output are not identical\")\n\n\t// errInconsistentByteCount means that Transform returned success (nil\n\t// error) but also returned nSrc inconsistent with the src argument.\n\terrInconsistentByteCount = errors.New(\"transform: inconsistent byte count returned\")\n\n\t// errShortInternal means that an internal buffer is not large enough\n\t// to make progress and the Transform operation must be aborted.\n\terrShortInternal = errors.New(\"transform: short internal buffer\")\n)\n\n// Transformer transforms bytes.\ntype Transformer interface {\n\t// Transform writes to dst the transformed bytes read from src, and\n\t// returns the number of dst bytes written and src bytes read. The\n\t// atEOF argument tells whether src represents the last bytes of the\n\t// input.\n\t//\n\t// Callers should always process the nDst bytes produced and account\n\t// for the nSrc bytes consumed before considering the error err.\n\t//\n\t// A nil error means that all of the transformed bytes (whether freshly\n\t// transformed from src or left over from previous Transform calls)\n\t// were written to dst. A nil error can be returned regardless of\n\t// whether atEOF is true. If err is nil then nSrc must equal len(src);\n\t// the converse is not necessarily true.\n\t//\n\t// ErrShortDst means that dst was too short to receive all of the\n\t// transformed bytes. ErrShortSrc means that src had insufficient data\n\t// to complete the transformation. If both conditions apply, then\n\t// either error may be returned. Other than the error conditions listed\n\t// here, implementations are free to report other errors that arise.\n\tTransform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error)\n\n\t// Reset resets the state and allows a Transformer to be reused.\n\tReset()\n}\n\n// SpanningTransformer extends the Transformer interface with a Span method\n// that determines how much of the input already conforms to the Transformer.\ntype SpanningTransformer interface {\n\tTransformer\n\n\t// Span returns a position in src such that transforming src[:n] results in\n\t// identical output src[:n] for these bytes. It does not necessarily return\n\t// the largest such n. The atEOF argument tells whether src represents the\n\t// last bytes of the input.\n\t//\n\t// Callers should always account for the n bytes consumed before\n\t// considering the error err.\n\t//\n\t// A nil error means that all input bytes are known to be identical to the\n\t// output produced by the Transformer. A nil error can be returned\n\t// regardless of whether atEOF is true. If err is nil, then n must\n\t// equal len(src); the converse is not necessarily true.\n\t//\n\t// ErrEndOfSpan means that the Transformer output may differ from the\n\t// input after n bytes. Note that n may be len(src), meaning that the output\n\t// would contain additional bytes after otherwise identical output.\n\t// ErrShortSrc means that src had insufficient data to determine whether the\n\t// remaining bytes would change. Other than the error conditions listed\n\t// here, implementations are free to report other errors that arise.\n\t//\n\t// Calling Span can modify the Transformer state as a side effect. In\n\t// effect, it does the transformation just as calling Transform would, only\n\t// without copying to a destination buffer and only up to a point it can\n\t// determine the input and output bytes are the same. This is obviously more\n\t// limited than calling Transform, but can be more efficient in terms of\n\t// copying and allocating buffers. Calls to Span and Transform may be\n\t// interleaved.\n\tSpan(src []byte, atEOF bool) (n int, err error)\n}\n\n// NopResetter can be embedded by implementations of Transformer to add a nop\n// Reset method.\ntype NopResetter struct{}\n\n// Reset implements the Reset method of the Transformer interface.\nfunc (NopResetter) Reset() {}\n\n// Reader wraps another io.Reader by transforming the bytes read.\ntype Reader struct {\n\tr   io.Reader\n\tt   Transformer\n\terr error\n\n\t// dst[dst0:dst1] contains bytes that have been transformed by t but\n\t// not yet copied out via Read.\n\tdst        []byte\n\tdst0, dst1 int\n\n\t// src[src0:src1] contains bytes that have been read from r but not\n\t// yet transformed through t.\n\tsrc        []byte\n\tsrc0, src1 int\n\n\t// transformComplete is whether the transformation is complete,\n\t// regardless of whether or not it was successful.\n\ttransformComplete bool\n}\n\nconst defaultBufSize = 4096\n\n// NewReader returns a new Reader that wraps r by transforming the bytes read\n// via t. It calls Reset on t.\nfunc NewReader(r io.Reader, t Transformer) *Reader {\n\tt.Reset()\n\treturn &Reader{\n\t\tr:   r,\n\t\tt:   t,\n\t\tdst: make([]byte, defaultBufSize),\n\t\tsrc: make([]byte, defaultBufSize),\n\t}\n}\n\n// Read implements the io.Reader interface.\nfunc (r *Reader) Read(p []byte) (int, error) {\n\tn, err := 0, error(nil)\n\tfor {\n\t\t// Copy out any transformed bytes and return the final error if we are done.\n\t\tif r.dst0 != r.dst1 {\n\t\t\tn = copy(p, r.dst[r.dst0:r.dst1])\n\t\t\tr.dst0 += n\n\t\t\tif r.dst0 == r.dst1 && r.transformComplete {\n\t\t\t\treturn n, r.err\n\t\t\t}\n\t\t\treturn n, nil\n\t\t} else if r.transformComplete {\n\t\t\treturn 0, r.err\n\t\t}\n\n\t\t// Try to transform some source bytes, or to flush the transformer if we\n\t\t// are out of source bytes. We do this even if r.r.Read returned an error.\n\t\t// As the io.Reader documentation says, \"process the n > 0 bytes returned\n\t\t// before considering the error\".\n\t\tif r.src0 != r.src1 || r.err != nil {\n\t\t\tr.dst0 = 0\n\t\t\tr.dst1, n, err = r.t.Transform(r.dst, r.src[r.src0:r.src1], r.err == io.EOF)\n\t\t\tr.src0 += n\n\n\t\t\tswitch {\n\t\t\tcase err == nil:\n\t\t\t\tif r.src0 != r.src1 {\n\t\t\t\t\tr.err = errInconsistentByteCount\n\t\t\t\t}\n\t\t\t\t// The Transform call was successful; we are complete if we\n\t\t\t\t// cannot read more bytes into src.\n\t\t\t\tr.transformComplete = r.err != nil\n\t\t\t\tcontinue\n\t\t\tcase err == ErrShortDst && (r.dst1 != 0 || n != 0):\n\t\t\t\t// Make room in dst by copying out, and try again.\n\t\t\t\tcontinue\n\t\t\tcase err == ErrShortSrc && r.src1-r.src0 != len(r.src) && r.err == nil:\n\t\t\t\t// Read more bytes into src via the code below, and try again.\n\t\t\tdefault:\n\t\t\t\tr.transformComplete = true\n\t\t\t\t// The reader error (r.err) takes precedence over the\n\t\t\t\t// transformer error (err) unless r.err is nil or io.EOF.\n\t\t\t\tif r.err == nil || r.err == io.EOF {\n\t\t\t\t\tr.err = err\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\n\t\t// Move any untransformed source bytes to the start of the buffer\n\t\t// and read more bytes.\n\t\tif r.src0 != 0 {\n\t\t\tr.src0, r.src1 = 0, copy(r.src, r.src[r.src0:r.src1])\n\t\t}\n\t\tn, r.err = r.r.Read(r.src[r.src1:])\n\t\tr.src1 += n\n\t}\n}\n\n// TODO: implement ReadByte (and ReadRune??).\n\n// Writer wraps another io.Writer by transforming the bytes read.\n// The user needs to call Close to flush unwritten bytes that may\n// be buffered.\ntype Writer struct {\n\tw   io.Writer\n\tt   Transformer\n\tdst []byte\n\n\t// src[:n] contains bytes that have not yet passed through t.\n\tsrc []byte\n\tn   int\n}\n\n// NewWriter returns a new Writer that wraps w by transforming the bytes written\n// via t. It calls Reset on t.\nfunc NewWriter(w io.Writer, t Transformer) *Writer {\n\tt.Reset()\n\treturn &Writer{\n\t\tw:   w,\n\t\tt:   t,\n\t\tdst: make([]byte, defaultBufSize),\n\t\tsrc: make([]byte, defaultBufSize),\n\t}\n}\n\n// Write implements the io.Writer interface. If there are not enough\n// bytes available to complete a Transform, the bytes will be buffered\n// for the next write. Call Close to convert the remaining bytes.\nfunc (w *Writer) Write(data []byte) (n int, err error) {\n\tsrc := data\n\tif w.n > 0 {\n\t\t// Append bytes from data to the last remainder.\n\t\t// TODO: limit the amount copied on first try.\n\t\tn = copy(w.src[w.n:], data)\n\t\tw.n += n\n\t\tsrc = w.src[:w.n]\n\t}\n\tfor {\n\t\tnDst, nSrc, err := w.t.Transform(w.dst, src, false)\n\t\tif _, werr := w.w.Write(w.dst[:nDst]); werr != nil {\n\t\t\treturn n, werr\n\t\t}\n\t\tsrc = src[nSrc:]\n\t\tif w.n == 0 {\n\t\t\tn += nSrc\n\t\t} else if len(src) <= n {\n\t\t\t// Enough bytes from w.src have been consumed. We make src point\n\t\t\t// to data instead to reduce the copying.\n\t\t\tw.n = 0\n\t\t\tn -= len(src)\n\t\t\tsrc = data[n:]\n\t\t\tif n < len(data) && (err == nil || err == ErrShortSrc) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\t\tswitch err {\n\t\tcase ErrShortDst:\n\t\t\t// This error is okay as long as we are making progress.\n\t\t\tif nDst > 0 || nSrc > 0 {\n\t\t\t\tcontinue\n\t\t\t}\n\t\tcase ErrShortSrc:\n\t\t\tif len(src) < len(w.src) {\n\t\t\t\tm := copy(w.src, src)\n\t\t\t\t// If w.n > 0, bytes from data were already copied to w.src and n\n\t\t\t\t// was already set to the number of bytes consumed.\n\t\t\t\tif w.n == 0 {\n\t\t\t\t\tn += m\n\t\t\t\t}\n\t\t\t\tw.n = m\n\t\t\t\terr = nil\n\t\t\t} else if nDst > 0 || nSrc > 0 {\n\t\t\t\t// Not enough buffer to store the remainder. Keep processing as\n\t\t\t\t// long as there is progress. Without this case, transforms that\n\t\t\t\t// require a lookahead larger than the buffer may result in an\n\t\t\t\t// error. This is not something one may expect to be common in\n\t\t\t\t// practice, but it may occur when buffers are set to small\n\t\t\t\t// sizes during testing.\n\t\t\t\tcontinue\n\t\t\t}\n\t\tcase nil:\n\t\t\tif w.n > 0 {\n\t\t\t\terr = errInconsistentByteCount\n\t\t\t}\n\t\t}\n\t\treturn n, err\n\t}\n}\n\n// Close implements the io.Closer interface.\nfunc (w *Writer) Close() error {\n\tsrc := w.src[:w.n]\n\tfor {\n\t\tnDst, nSrc, err := w.t.Transform(w.dst, src, true)\n\t\tif _, werr := w.w.Write(w.dst[:nDst]); werr != nil {\n\t\t\treturn werr\n\t\t}\n\t\tif err != ErrShortDst {\n\t\t\treturn err\n\t\t}\n\t\tsrc = src[nSrc:]\n\t}\n}\n\ntype nop struct{ NopResetter }\n\nfunc (nop) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {\n\tn := copy(dst, src)\n\tif n < len(src) {\n\t\terr = ErrShortDst\n\t}\n\treturn n, n, err\n}\n\nfunc (nop) Span(src []byte, atEOF bool) (n int, err error) {\n\treturn len(src), nil\n}\n\ntype discard struct{ NopResetter }\n\nfunc (discard) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {\n\treturn 0, len(src), nil\n}\n\nvar (\n\t// Discard is a Transformer for which all Transform calls succeed\n\t// by consuming all bytes and writing nothing.\n\tDiscard Transformer = discard{}\n\n\t// Nop is a SpanningTransformer that copies src to dst.\n\tNop SpanningTransformer = nop{}\n)\n\n// chain is a sequence of links. A chain with N Transformers has N+1 links and\n// N+1 buffers. Of those N+1 buffers, the first and last are the src and dst\n// buffers given to chain.Transform and the middle N-1 buffers are intermediate\n// buffers owned by the chain. The i'th link transforms bytes from the i'th\n// buffer chain.link[i].b at read offset chain.link[i].p to the i+1'th buffer\n// chain.link[i+1].b at write offset chain.link[i+1].n, for i in [0, N).\ntype chain struct {\n\tlink []link\n\terr  error\n\t// errStart is the index at which the error occurred plus 1. Processing\n\t// errStart at this level at the next call to Transform. As long as\n\t// errStart > 0, chain will not consume any more source bytes.\n\terrStart int\n}\n\nfunc (c *chain) fatalError(errIndex int, err error) {\n\tif i := errIndex + 1; i > c.errStart {\n\t\tc.errStart = i\n\t\tc.err = err\n\t}\n}\n\ntype link struct {\n\tt Transformer\n\t// b[p:n] holds the bytes to be transformed by t.\n\tb []byte\n\tp int\n\tn int\n}\n\nfunc (l *link) src() []byte {\n\treturn l.b[l.p:l.n]\n}\n\nfunc (l *link) dst() []byte {\n\treturn l.b[l.n:]\n}\n\n// Chain returns a Transformer that applies t in sequence.\nfunc Chain(t ...Transformer) Transformer {\n\tif len(t) == 0 {\n\t\treturn nop{}\n\t}\n\tc := &chain{link: make([]link, len(t)+1)}\n\tfor i, tt := range t {\n\t\tc.link[i].t = tt\n\t}\n\t// Allocate intermediate buffers.\n\tb := make([][defaultBufSize]byte, len(t)-1)\n\tfor i := range b {\n\t\tc.link[i+1].b = b[i][:]\n\t}\n\treturn c\n}\n\n// Reset resets the state of Chain. It calls Reset on all the Transformers.\nfunc (c *chain) Reset() {\n\tfor i, l := range c.link {\n\t\tif l.t != nil {\n\t\t\tl.t.Reset()\n\t\t}\n\t\tc.link[i].p, c.link[i].n = 0, 0\n\t}\n}\n\n// TODO: make chain use Span (is going to be fun to implement!)\n\n// Transform applies the transformers of c in sequence.\nfunc (c *chain) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {\n\t// Set up src and dst in the chain.\n\tsrcL := &c.link[0]\n\tdstL := &c.link[len(c.link)-1]\n\tsrcL.b, srcL.p, srcL.n = src, 0, len(src)\n\tdstL.b, dstL.n = dst, 0\n\tvar lastFull, needProgress bool // for detecting progress\n\n\t// i is the index of the next Transformer to apply, for i in [low, high].\n\t// low is the lowest index for which c.link[low] may still produce bytes.\n\t// high is the highest index for which c.link[high] has a Transformer.\n\t// The error returned by Transform determines whether to increase or\n\t// decrease i. We try to completely fill a buffer before converting it.\n\tfor low, i, high := c.errStart, c.errStart, len(c.link)-2; low <= i && i <= high; {\n\t\tin, out := &c.link[i], &c.link[i+1]\n\t\tnDst, nSrc, err0 := in.t.Transform(out.dst(), in.src(), atEOF && low == i)\n\t\tout.n += nDst\n\t\tin.p += nSrc\n\t\tif i > 0 && in.p == in.n {\n\t\t\tin.p, in.n = 0, 0\n\t\t}\n\t\tneedProgress, lastFull = lastFull, false\n\t\tswitch err0 {\n\t\tcase ErrShortDst:\n\t\t\t// Process the destination buffer next. Return if we are already\n\t\t\t// at the high index.\n\t\t\tif i == high {\n\t\t\t\treturn dstL.n, srcL.p, ErrShortDst\n\t\t\t}\n\t\t\tif out.n != 0 {\n\t\t\t\ti++\n\t\t\t\t// If the Transformer at the next index is not able to process any\n\t\t\t\t// source bytes there is nothing that can be done to make progress\n\t\t\t\t// and the bytes will remain unprocessed. lastFull is used to\n\t\t\t\t// detect this and break out of the loop with a fatal error.\n\t\t\t\tlastFull = true\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\t// The destination buffer was too small, but is completely empty.\n\t\t\t// Return a fatal error as this transformation can never complete.\n\t\t\tc.fatalError(i, errShortInternal)\n\t\tcase ErrShortSrc:\n\t\t\tif i == 0 {\n\t\t\t\t// Save ErrShortSrc in err. All other errors take precedence.\n\t\t\t\terr = ErrShortSrc\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// Source bytes were depleted before filling up the destination buffer.\n\t\t\t// Verify we made some progress, move the remaining bytes to the errStart\n\t\t\t// and try to get more source bytes.\n\t\t\tif needProgress && nSrc == 0 || in.n-in.p == len(in.b) {\n\t\t\t\t// There were not enough source bytes to proceed while the source\n\t\t\t\t// buffer cannot hold any more bytes. Return a fatal error as this\n\t\t\t\t// transformation can never complete.\n\t\t\t\tc.fatalError(i, errShortInternal)\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// in.b is an internal buffer and we can make progress.\n\t\t\tin.p, in.n = 0, copy(in.b, in.src())\n\t\t\tfallthrough\n\t\tcase nil:\n\t\t\t// if i == low, we have depleted the bytes at index i or any lower levels.\n\t\t\t// In that case we increase low and i. In all other cases we decrease i to\n\t\t\t// fetch more bytes before proceeding to the next index.\n\t\t\tif i > low {\n\t\t\t\ti--\n\t\t\t\tcontinue\n\t\t\t}\n\t\tdefault:\n\t\t\tc.fatalError(i, err0)\n\t\t}\n\t\t// Exhausted level low or fatal error: increase low and continue\n\t\t// to process the bytes accepted so far.\n\t\ti++\n\t\tlow = i\n\t}\n\n\t// If c.errStart > 0, this means we found a fatal error.  We will clear\n\t// all upstream buffers. At this point, no more progress can be made\n\t// downstream, as Transform would have bailed while handling ErrShortDst.\n\tif c.errStart > 0 {\n\t\tfor i := 1; i < c.errStart; i++ {\n\t\t\tc.link[i].p, c.link[i].n = 0, 0\n\t\t}\n\t\terr, c.errStart, c.err = c.err, 0, nil\n\t}\n\treturn dstL.n, srcL.p, err\n}\n\n// Deprecated: Use runes.Remove instead.\nfunc RemoveFunc(f func(r rune) bool) Transformer {\n\treturn removeF(f)\n}\n\ntype removeF func(r rune) bool\n\nfunc (removeF) Reset() {}\n\n// Transform implements the Transformer interface.\nfunc (t removeF) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {\n\tfor r, sz := rune(0), 0; len(src) > 0; src = src[sz:] {\n\n\t\tif r = rune(src[0]); r < utf8.RuneSelf {\n\t\t\tsz = 1\n\t\t} else {\n\t\t\tr, sz = utf8.DecodeRune(src)\n\n\t\t\tif sz == 1 {\n\t\t\t\t// Invalid rune.\n\t\t\t\tif !atEOF && !utf8.FullRune(src) {\n\t\t\t\t\terr = ErrShortSrc\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\t// We replace illegal bytes with RuneError. Not doing so might\n\t\t\t\t// otherwise turn a sequence of invalid UTF-8 into valid UTF-8.\n\t\t\t\t// The resulting byte sequence may subsequently contain runes\n\t\t\t\t// for which t(r) is true that were passed unnoticed.\n\t\t\t\tif !t(r) {\n\t\t\t\t\tif nDst+3 > len(dst) {\n\t\t\t\t\t\terr = ErrShortDst\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tnDst += copy(dst[nDst:], \"\\uFFFD\")\n\t\t\t\t}\n\t\t\t\tnSrc++\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\n\t\tif !t(r) {\n\t\t\tif nDst+sz > len(dst) {\n\t\t\t\terr = ErrShortDst\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tnDst += copy(dst[nDst:], src[:sz])\n\t\t}\n\t\tnSrc += sz\n\t}\n\treturn\n}\n\n// grow returns a new []byte that is longer than b, and copies the first n bytes\n// of b to the start of the new slice.\nfunc grow(b []byte, n int) []byte {\n\tm := len(b)\n\tif m <= 32 {\n\t\tm = 64\n\t} else if m <= 256 {\n\t\tm *= 2\n\t} else {\n\t\tm += m >> 1\n\t}\n\tbuf := make([]byte, m)\n\tcopy(buf, b[:n])\n\treturn buf\n}\n\nconst initialBufSize = 128\n\n// String returns a string with the result of converting s[:n] using t, where\n// n <= len(s). If err == nil, n will be len(s). It calls Reset on t.\nfunc String(t Transformer, s string) (result string, n int, err error) {\n\tt.Reset()\n\tif s == \"\" {\n\t\t// Fast path for the common case for empty input. Results in about a\n\t\t// 86% reduction of running time for BenchmarkStringLowerEmpty.\n\t\tif _, _, err := t.Transform(nil, nil, true); err == nil {\n\t\t\treturn \"\", 0, nil\n\t\t}\n\t}\n\n\t// Allocate only once. Note that both dst and src escape when passed to\n\t// Transform.\n\tbuf := [2 * initialBufSize]byte{}\n\tdst := buf[:initialBufSize:initialBufSize]\n\tsrc := buf[initialBufSize : 2*initialBufSize]\n\n\t// The input string s is transformed in multiple chunks (starting with a\n\t// chunk size of initialBufSize). nDst and nSrc are per-chunk (or\n\t// per-Transform-call) indexes, pDst and pSrc are overall indexes.\n\tnDst, nSrc := 0, 0\n\tpDst, pSrc := 0, 0\n\n\t// pPrefix is the length of a common prefix: the first pPrefix bytes of the\n\t// result will equal the first pPrefix bytes of s. It is not guaranteed to\n\t// be the largest such value, but if pPrefix, len(result) and len(s) are\n\t// all equal after the final transform (i.e. calling Transform with atEOF\n\t// being true returned nil error) then we don't need to allocate a new\n\t// result string.\n\tpPrefix := 0\n\tfor {\n\t\t// Invariant: pDst == pPrefix && pSrc == pPrefix.\n\n\t\tn := copy(src, s[pSrc:])\n\t\tnDst, nSrc, err = t.Transform(dst, src[:n], pSrc+n == len(s))\n\t\tpDst += nDst\n\t\tpSrc += nSrc\n\n\t\t// TODO:  let transformers implement an optional Spanner interface, akin\n\t\t// to norm's QuickSpan. This would even allow us to avoid any allocation.\n\t\tif !bytes.Equal(dst[:nDst], src[:nSrc]) {\n\t\t\tbreak\n\t\t}\n\t\tpPrefix = pSrc\n\t\tif err == ErrShortDst {\n\t\t\t// A buffer can only be short if a transformer modifies its input.\n\t\t\tbreak\n\t\t} else if err == ErrShortSrc {\n\t\t\tif nSrc == 0 {\n\t\t\t\t// No progress was made.\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// Equal so far and !atEOF, so continue checking.\n\t\t} else if err != nil || pPrefix == len(s) {\n\t\t\treturn string(s[:pPrefix]), pPrefix, err\n\t\t}\n\t}\n\t// Post-condition: pDst == pPrefix + nDst && pSrc == pPrefix + nSrc.\n\n\t// We have transformed the first pSrc bytes of the input s to become pDst\n\t// transformed bytes. Those transformed bytes are discontiguous: the first\n\t// pPrefix of them equal s[:pPrefix] and the last nDst of them equal\n\t// dst[:nDst]. We copy them around, into a new dst buffer if necessary, so\n\t// that they become one contiguous slice: dst[:pDst].\n\tif pPrefix != 0 {\n\t\tnewDst := dst\n\t\tif pDst > len(newDst) {\n\t\t\tnewDst = make([]byte, len(s)+nDst-nSrc)\n\t\t}\n\t\tcopy(newDst[pPrefix:pDst], dst[:nDst])\n\t\tcopy(newDst[:pPrefix], s[:pPrefix])\n\t\tdst = newDst\n\t}\n\n\t// Prevent duplicate Transform calls with atEOF being true at the end of\n\t// the input. Also return if we have an unrecoverable error.\n\tif (err == nil && pSrc == len(s)) ||\n\t\t(err != nil && err != ErrShortDst && err != ErrShortSrc) {\n\t\treturn string(dst[:pDst]), pSrc, err\n\t}\n\n\t// Transform the remaining input, growing dst and src buffers as necessary.\n\tfor {\n\t\tn := copy(src, s[pSrc:])\n\t\tatEOF := pSrc+n == len(s)\n\t\tnDst, nSrc, err := t.Transform(dst[pDst:], src[:n], atEOF)\n\t\tpDst += nDst\n\t\tpSrc += nSrc\n\n\t\t// If we got ErrShortDst or ErrShortSrc, do not grow as long as we can\n\t\t// make progress. This may avoid excessive allocations.\n\t\tif err == ErrShortDst {\n\t\t\tif nDst == 0 {\n\t\t\t\tdst = grow(dst, pDst)\n\t\t\t}\n\t\t} else if err == ErrShortSrc {\n\t\t\tif atEOF {\n\t\t\t\treturn string(dst[:pDst]), pSrc, err\n\t\t\t}\n\t\t\tif nSrc == 0 {\n\t\t\t\tsrc = grow(src, 0)\n\t\t\t}\n\t\t} else if err != nil || pSrc == len(s) {\n\t\t\treturn string(dst[:pDst]), pSrc, err\n\t\t}\n\t}\n}\n\n// Bytes returns a new byte slice with the result of converting b[:n] using t,\n// where n <= len(b). If err == nil, n will be len(b). It calls Reset on t.\nfunc Bytes(t Transformer, b []byte) (result []byte, n int, err error) {\n\treturn doAppend(t, 0, make([]byte, len(b)), b)\n}\n\n// Append appends the result of converting src[:n] using t to dst, where\n// n <= len(src), If err == nil, n will be len(src). It calls Reset on t.\nfunc Append(t Transformer, dst, src []byte) (result []byte, n int, err error) {\n\tif len(dst) == cap(dst) {\n\t\tn := len(src) + len(dst) // It is okay for this to be 0.\n\t\tb := make([]byte, n)\n\t\tdst = b[:copy(b, dst)]\n\t}\n\treturn doAppend(t, len(dst), dst[:cap(dst)], src)\n}\n\nfunc doAppend(t Transformer, pDst int, dst, src []byte) (result []byte, n int, err error) {\n\tt.Reset()\n\tpSrc := 0\n\tfor {\n\t\tnDst, nSrc, err := t.Transform(dst[pDst:], src[pSrc:], true)\n\t\tpDst += nDst\n\t\tpSrc += nSrc\n\t\tif err != ErrShortDst {\n\t\t\treturn dst[:pDst], pSrc, err\n\t\t}\n\n\t\t// Grow the destination buffer, but do not grow as long as we can make\n\t\t// progress. This may avoid excessive allocations.\n\t\tif nDst == 0 {\n\t\t\tdst = grow(dst, pDst)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/LICENSE",
    "content": "Copyright 2009 The Go Authors.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n   * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n   * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n   * Neither the name of Google LLC nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/PATENTS",
    "content": "Additional IP Rights Grant (Patents)\n\n\"This implementation\" means the copyrightable works distributed by\nGoogle as part of the Go project.\n\nGoogle hereby grants to You a perpetual, worldwide, non-exclusive,\nno-charge, royalty-free, irrevocable (except as stated in this section)\npatent license to make, have made, use, offer to sell, sell, import,\ntransfer and otherwise run, modify and propagate the contents of this\nimplementation of Go, where such license applies only to those patent\nclaims, both currently owned or controlled by Google and acquired in\nthe future, licensable by Google that are necessarily infringed by this\nimplementation of Go.  This grant does not include claims that would be\ninfringed only as a consequence of further modification of this\nimplementation.  If you or your agent or exclusive licensee institute or\norder or agree to the institution of patent litigation against any\nentity (including a cross-claim or counterclaim in a lawsuit) alleging\nthat this implementation of Go or any code incorporated within this\nimplementation of Go constitutes direct or contributory patent\ninfringement, or inducement of patent infringement, then any patent\nrights granted to you under this License for this implementation of Go\nshall terminate as of the date such litigation is filed.\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/cover/profile.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package cover provides support for parsing coverage profiles\n// generated by \"go test -coverprofile=cover.out\".\npackage cover // import \"golang.org/x/tools/cover\"\n\nimport (\n\t\"bufio\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"math\"\n\t\"os\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n)\n\n// Profile represents the profiling data for a specific file.\ntype Profile struct {\n\tFileName string\n\tMode     string\n\tBlocks   []ProfileBlock\n}\n\n// ProfileBlock represents a single block of profiling data.\ntype ProfileBlock struct {\n\tStartLine, StartCol int\n\tEndLine, EndCol     int\n\tNumStmt, Count      int\n}\n\ntype byFileName []*Profile\n\nfunc (p byFileName) Len() int           { return len(p) }\nfunc (p byFileName) Less(i, j int) bool { return p[i].FileName < p[j].FileName }\nfunc (p byFileName) Swap(i, j int)      { p[i], p[j] = p[j], p[i] }\n\n// ParseProfiles parses profile data in the specified file and returns a\n// Profile for each source file described therein.\nfunc ParseProfiles(fileName string) ([]*Profile, error) {\n\tpf, err := os.Open(fileName)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer pf.Close()\n\treturn ParseProfilesFromReader(pf)\n}\n\n// ParseProfilesFromReader parses profile data from the Reader and\n// returns a Profile for each source file described therein.\nfunc ParseProfilesFromReader(rd io.Reader) ([]*Profile, error) {\n\t// First line is \"mode: foo\", where foo is \"set\", \"count\", or \"atomic\".\n\t// Rest of file is in the format\n\t//\tencoding/base64/base64.go:34.44,37.40 3 1\n\t// where the fields are: name.go:line.column,line.column numberOfStatements count\n\tfiles := make(map[string]*Profile)\n\ts := bufio.NewScanner(rd)\n\tmode := \"\"\n\tfor s.Scan() {\n\t\tline := s.Text()\n\t\tif mode == \"\" {\n\t\t\tconst p = \"mode: \"\n\t\t\tif !strings.HasPrefix(line, p) || line == p {\n\t\t\t\treturn nil, fmt.Errorf(\"bad mode line: %v\", line)\n\t\t\t}\n\t\t\tmode = line[len(p):]\n\t\t\tcontinue\n\t\t}\n\t\tfn, b, err := parseLine(line)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"line %q doesn't match expected format: %v\", line, err)\n\t\t}\n\t\tp := files[fn]\n\t\tif p == nil {\n\t\t\tp = &Profile{\n\t\t\t\tFileName: fn,\n\t\t\t\tMode:     mode,\n\t\t\t}\n\t\t\tfiles[fn] = p\n\t\t}\n\t\tp.Blocks = append(p.Blocks, b)\n\t}\n\tif err := s.Err(); err != nil {\n\t\treturn nil, err\n\t}\n\tfor _, p := range files {\n\t\tsort.Sort(blocksByStart(p.Blocks))\n\t\t// Merge samples from the same location.\n\t\tj := 1\n\t\tfor i := 1; i < len(p.Blocks); i++ {\n\t\t\tb := p.Blocks[i]\n\t\t\tlast := p.Blocks[j-1]\n\t\t\tif b.StartLine == last.StartLine &&\n\t\t\t\tb.StartCol == last.StartCol &&\n\t\t\t\tb.EndLine == last.EndLine &&\n\t\t\t\tb.EndCol == last.EndCol {\n\t\t\t\tif b.NumStmt != last.NumStmt {\n\t\t\t\t\treturn nil, fmt.Errorf(\"inconsistent NumStmt: changed from %d to %d\", last.NumStmt, b.NumStmt)\n\t\t\t\t}\n\t\t\t\tif mode == \"set\" {\n\t\t\t\t\tp.Blocks[j-1].Count |= b.Count\n\t\t\t\t} else {\n\t\t\t\t\tp.Blocks[j-1].Count += b.Count\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tp.Blocks[j] = b\n\t\t\tj++\n\t\t}\n\t\tp.Blocks = p.Blocks[:j]\n\t}\n\t// Generate a sorted slice.\n\tprofiles := make([]*Profile, 0, len(files))\n\tfor _, profile := range files {\n\t\tprofiles = append(profiles, profile)\n\t}\n\tsort.Sort(byFileName(profiles))\n\treturn profiles, nil\n}\n\n// parseLine parses a line from a coverage file.\n// It is equivalent to the regex\n// ^(.+):([0-9]+)\\.([0-9]+),([0-9]+)\\.([0-9]+) ([0-9]+) ([0-9]+)$\n//\n// However, it is much faster: https://golang.org/cl/179377\nfunc parseLine(l string) (fileName string, block ProfileBlock, err error) {\n\tend := len(l)\n\n\tb := ProfileBlock{}\n\tb.Count, end, err = seekBack(l, ' ', end, \"Count\")\n\tif err != nil {\n\t\treturn \"\", b, err\n\t}\n\tb.NumStmt, end, err = seekBack(l, ' ', end, \"NumStmt\")\n\tif err != nil {\n\t\treturn \"\", b, err\n\t}\n\tb.EndCol, end, err = seekBack(l, '.', end, \"EndCol\")\n\tif err != nil {\n\t\treturn \"\", b, err\n\t}\n\tb.EndLine, end, err = seekBack(l, ',', end, \"EndLine\")\n\tif err != nil {\n\t\treturn \"\", b, err\n\t}\n\tb.StartCol, end, err = seekBack(l, '.', end, \"StartCol\")\n\tif err != nil {\n\t\treturn \"\", b, err\n\t}\n\tb.StartLine, end, err = seekBack(l, ':', end, \"StartLine\")\n\tif err != nil {\n\t\treturn \"\", b, err\n\t}\n\tfn := l[0:end]\n\tif fn == \"\" {\n\t\treturn \"\", b, errors.New(\"a FileName cannot be blank\")\n\t}\n\treturn fn, b, nil\n}\n\n// seekBack searches backwards from end to find sep in l, then returns the\n// value between sep and end as an integer.\n// If seekBack fails, the returned error will reference what.\nfunc seekBack(l string, sep byte, end int, what string) (value int, nextSep int, err error) {\n\t// Since we're seeking backwards and we know only ASCII is legal for these values,\n\t// we can ignore the possibility of non-ASCII characters.\n\tfor start := end - 1; start >= 0; start-- {\n\t\tif l[start] == sep {\n\t\t\ti, err := strconv.Atoi(l[start+1 : end])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, 0, fmt.Errorf(\"couldn't parse %q: %v\", what, err)\n\t\t\t}\n\t\t\tif i < 0 {\n\t\t\t\treturn 0, 0, fmt.Errorf(\"negative values are not allowed for %s, found %d\", what, i)\n\t\t\t}\n\t\t\treturn i, start, nil\n\t\t}\n\t}\n\treturn 0, 0, fmt.Errorf(\"couldn't find a %s before %s\", string(sep), what)\n}\n\ntype blocksByStart []ProfileBlock\n\nfunc (b blocksByStart) Len() int      { return len(b) }\nfunc (b blocksByStart) Swap(i, j int) { b[i], b[j] = b[j], b[i] }\nfunc (b blocksByStart) Less(i, j int) bool {\n\tbi, bj := b[i], b[j]\n\treturn bi.StartLine < bj.StartLine || bi.StartLine == bj.StartLine && bi.StartCol < bj.StartCol\n}\n\n// Boundary represents the position in a source file of the beginning or end of a\n// block as reported by the coverage profile. In HTML mode, it will correspond to\n// the opening or closing of a <span> tag and will be used to colorize the source\ntype Boundary struct {\n\tOffset int     // Location as a byte offset in the source file.\n\tStart  bool    // Is this the start of a block?\n\tCount  int     // Event count from the cover profile.\n\tNorm   float64 // Count normalized to [0..1].\n\tIndex  int     // Order in input file.\n}\n\n// Boundaries returns a Profile as a set of Boundary objects within the provided src.\nfunc (p *Profile) Boundaries(src []byte) (boundaries []Boundary) {\n\t// Find maximum count.\n\tmax := 0\n\tfor _, b := range p.Blocks {\n\t\tif b.Count > max {\n\t\t\tmax = b.Count\n\t\t}\n\t}\n\t// Divisor for normalization.\n\tdivisor := math.Log(float64(max))\n\n\t// boundary returns a Boundary, populating the Norm field with a normalized Count.\n\tindex := 0\n\tboundary := func(offset int, start bool, count int) Boundary {\n\t\tb := Boundary{Offset: offset, Start: start, Count: count, Index: index}\n\t\tindex++\n\t\tif !start || count == 0 {\n\t\t\treturn b\n\t\t}\n\t\tif max <= 1 {\n\t\t\tb.Norm = 0.8 // Profile is in\"set\" mode; we want a heat map. Use cov8 in the CSS.\n\t\t} else if count > 0 {\n\t\t\tb.Norm = math.Log(float64(count)) / divisor\n\t\t}\n\t\treturn b\n\t}\n\n\tline, col := 1, 2 // TODO: Why is this 2?\n\tfor si, bi := 0, 0; si < len(src) && bi < len(p.Blocks); {\n\t\tb := p.Blocks[bi]\n\t\tif b.StartLine == line && b.StartCol == col {\n\t\t\tboundaries = append(boundaries, boundary(si, true, b.Count))\n\t\t}\n\t\tif b.EndLine == line && b.EndCol == col || line > b.EndLine {\n\t\t\tboundaries = append(boundaries, boundary(si, false, 0))\n\t\t\tbi++\n\t\t\tcontinue // Don't advance through src; maybe the next block starts here.\n\t\t}\n\t\tif src[si] == '\\n' {\n\t\t\tline++\n\t\t\tcol = 0\n\t\t}\n\t\tcol++\n\t\tsi++\n\t}\n\tsort.Sort(boundariesByPos(boundaries))\n\treturn\n}\n\ntype boundariesByPos []Boundary\n\nfunc (b boundariesByPos) Len() int      { return len(b) }\nfunc (b boundariesByPos) Swap(i, j int) { b[i], b[j] = b[j], b[i] }\nfunc (b boundariesByPos) Less(i, j int) bool {\n\tif b[i].Offset == b[j].Offset {\n\t\t// Boundaries at the same offset should be ordered according to\n\t\t// their original position.\n\t\treturn b[i].Index < b[j].Index\n\t}\n\treturn b[i].Offset < b[j].Offset\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/go/ast/edge/edge.go",
    "content": "// Copyright 2025 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package edge defines identifiers for each field of an ast.Node\n// struct type that refers to another Node.\npackage edge\n\nimport (\n\t\"fmt\"\n\t\"go/ast\"\n\t\"reflect\"\n)\n\n// A Kind describes a field of an ast.Node struct.\ntype Kind uint8\n\n// String returns a description of the edge kind.\nfunc (k Kind) String() string {\n\tif k == Invalid {\n\t\treturn \"<invalid>\"\n\t}\n\tinfo := fieldInfos[k]\n\treturn fmt.Sprintf(\"%v.%s\", info.nodeType.Elem().Name(), info.name)\n}\n\n// NodeType returns the pointer-to-struct type of the ast.Node implementation.\nfunc (k Kind) NodeType() reflect.Type { return fieldInfos[k].nodeType }\n\n// FieldName returns the name of the field.\nfunc (k Kind) FieldName() string { return fieldInfos[k].name }\n\n// FieldType returns the declared type of the field.\nfunc (k Kind) FieldType() reflect.Type { return fieldInfos[k].fieldType }\n\n// Get returns the direct child of n identified by (k, idx).\n// n's type must match k.NodeType().\n// idx must be a valid slice index, or -1 for a non-slice.\nfunc (k Kind) Get(n ast.Node, idx int) ast.Node {\n\tif k.NodeType() != reflect.TypeOf(n) {\n\t\tpanic(fmt.Sprintf(\"%v.Get(%T): invalid node type\", k, n))\n\t}\n\tv := reflect.ValueOf(n).Elem().Field(fieldInfos[k].index)\n\tif idx != -1 {\n\t\tv = v.Index(idx) // asserts valid index\n\t} else {\n\t\t// (The type assertion below asserts that v is not a slice.)\n\t}\n\treturn v.Interface().(ast.Node) // may be nil\n}\n\nconst (\n\tInvalid Kind = iota // for nodes at the root of the traversal\n\n\t// Kinds are sorted alphabetically.\n\t// Numbering is not stable.\n\t// Each is named Type_Field, where Type is the\n\t// ast.Node struct type and Field is the name of the field\n\n\tArrayType_Elt\n\tArrayType_Len\n\tAssignStmt_Lhs\n\tAssignStmt_Rhs\n\tBinaryExpr_X\n\tBinaryExpr_Y\n\tBlockStmt_List\n\tBranchStmt_Label\n\tCallExpr_Args\n\tCallExpr_Fun\n\tCaseClause_Body\n\tCaseClause_List\n\tChanType_Value\n\tCommClause_Body\n\tCommClause_Comm\n\tCommentGroup_List\n\tCompositeLit_Elts\n\tCompositeLit_Type\n\tDeclStmt_Decl\n\tDeferStmt_Call\n\tEllipsis_Elt\n\tExprStmt_X\n\tFieldList_List\n\tField_Comment\n\tField_Doc\n\tField_Names\n\tField_Tag\n\tField_Type\n\tFile_Decls\n\tFile_Doc\n\tFile_Name\n\tForStmt_Body\n\tForStmt_Cond\n\tForStmt_Init\n\tForStmt_Post\n\tFuncDecl_Body\n\tFuncDecl_Doc\n\tFuncDecl_Name\n\tFuncDecl_Recv\n\tFuncDecl_Type\n\tFuncLit_Body\n\tFuncLit_Type\n\tFuncType_Params\n\tFuncType_Results\n\tFuncType_TypeParams\n\tGenDecl_Doc\n\tGenDecl_Specs\n\tGoStmt_Call\n\tIfStmt_Body\n\tIfStmt_Cond\n\tIfStmt_Else\n\tIfStmt_Init\n\tImportSpec_Comment\n\tImportSpec_Doc\n\tImportSpec_Name\n\tImportSpec_Path\n\tIncDecStmt_X\n\tIndexExpr_Index\n\tIndexExpr_X\n\tIndexListExpr_Indices\n\tIndexListExpr_X\n\tInterfaceType_Methods\n\tKeyValueExpr_Key\n\tKeyValueExpr_Value\n\tLabeledStmt_Label\n\tLabeledStmt_Stmt\n\tMapType_Key\n\tMapType_Value\n\tParenExpr_X\n\tRangeStmt_Body\n\tRangeStmt_Key\n\tRangeStmt_Value\n\tRangeStmt_X\n\tReturnStmt_Results\n\tSelectStmt_Body\n\tSelectorExpr_Sel\n\tSelectorExpr_X\n\tSendStmt_Chan\n\tSendStmt_Value\n\tSliceExpr_High\n\tSliceExpr_Low\n\tSliceExpr_Max\n\tSliceExpr_X\n\tStarExpr_X\n\tStructType_Fields\n\tSwitchStmt_Body\n\tSwitchStmt_Init\n\tSwitchStmt_Tag\n\tTypeAssertExpr_Type\n\tTypeAssertExpr_X\n\tTypeSpec_Comment\n\tTypeSpec_Doc\n\tTypeSpec_Name\n\tTypeSpec_Type\n\tTypeSpec_TypeParams\n\tTypeSwitchStmt_Assign\n\tTypeSwitchStmt_Body\n\tTypeSwitchStmt_Init\n\tUnaryExpr_X\n\tValueSpec_Comment\n\tValueSpec_Doc\n\tValueSpec_Names\n\tValueSpec_Type\n\tValueSpec_Values\n\n\tmaxKind\n)\n\n// Assert that the encoding fits in 7 bits,\n// as the inspector relies on this.\n// (We are currently at 104.)\nvar _ = [1 << 7]struct{}{}[maxKind]\n\ntype fieldInfo struct {\n\tnodeType  reflect.Type // pointer-to-struct type of ast.Node implementation\n\tname      string\n\tindex     int\n\tfieldType reflect.Type\n}\n\nfunc info[N ast.Node](fieldName string) fieldInfo {\n\tnodePtrType := reflect.TypeFor[N]()\n\tf, ok := nodePtrType.Elem().FieldByName(fieldName)\n\tif !ok {\n\t\tpanic(fieldName)\n\t}\n\treturn fieldInfo{nodePtrType, fieldName, f.Index[0], f.Type}\n}\n\nvar fieldInfos = [...]fieldInfo{\n\tInvalid:               {},\n\tArrayType_Elt:         info[*ast.ArrayType](\"Elt\"),\n\tArrayType_Len:         info[*ast.ArrayType](\"Len\"),\n\tAssignStmt_Lhs:        info[*ast.AssignStmt](\"Lhs\"),\n\tAssignStmt_Rhs:        info[*ast.AssignStmt](\"Rhs\"),\n\tBinaryExpr_X:          info[*ast.BinaryExpr](\"X\"),\n\tBinaryExpr_Y:          info[*ast.BinaryExpr](\"Y\"),\n\tBlockStmt_List:        info[*ast.BlockStmt](\"List\"),\n\tBranchStmt_Label:      info[*ast.BranchStmt](\"Label\"),\n\tCallExpr_Args:         info[*ast.CallExpr](\"Args\"),\n\tCallExpr_Fun:          info[*ast.CallExpr](\"Fun\"),\n\tCaseClause_Body:       info[*ast.CaseClause](\"Body\"),\n\tCaseClause_List:       info[*ast.CaseClause](\"List\"),\n\tChanType_Value:        info[*ast.ChanType](\"Value\"),\n\tCommClause_Body:       info[*ast.CommClause](\"Body\"),\n\tCommClause_Comm:       info[*ast.CommClause](\"Comm\"),\n\tCommentGroup_List:     info[*ast.CommentGroup](\"List\"),\n\tCompositeLit_Elts:     info[*ast.CompositeLit](\"Elts\"),\n\tCompositeLit_Type:     info[*ast.CompositeLit](\"Type\"),\n\tDeclStmt_Decl:         info[*ast.DeclStmt](\"Decl\"),\n\tDeferStmt_Call:        info[*ast.DeferStmt](\"Call\"),\n\tEllipsis_Elt:          info[*ast.Ellipsis](\"Elt\"),\n\tExprStmt_X:            info[*ast.ExprStmt](\"X\"),\n\tFieldList_List:        info[*ast.FieldList](\"List\"),\n\tField_Comment:         info[*ast.Field](\"Comment\"),\n\tField_Doc:             info[*ast.Field](\"Doc\"),\n\tField_Names:           info[*ast.Field](\"Names\"),\n\tField_Tag:             info[*ast.Field](\"Tag\"),\n\tField_Type:            info[*ast.Field](\"Type\"),\n\tFile_Decls:            info[*ast.File](\"Decls\"),\n\tFile_Doc:              info[*ast.File](\"Doc\"),\n\tFile_Name:             info[*ast.File](\"Name\"),\n\tForStmt_Body:          info[*ast.ForStmt](\"Body\"),\n\tForStmt_Cond:          info[*ast.ForStmt](\"Cond\"),\n\tForStmt_Init:          info[*ast.ForStmt](\"Init\"),\n\tForStmt_Post:          info[*ast.ForStmt](\"Post\"),\n\tFuncDecl_Body:         info[*ast.FuncDecl](\"Body\"),\n\tFuncDecl_Doc:          info[*ast.FuncDecl](\"Doc\"),\n\tFuncDecl_Name:         info[*ast.FuncDecl](\"Name\"),\n\tFuncDecl_Recv:         info[*ast.FuncDecl](\"Recv\"),\n\tFuncDecl_Type:         info[*ast.FuncDecl](\"Type\"),\n\tFuncLit_Body:          info[*ast.FuncLit](\"Body\"),\n\tFuncLit_Type:          info[*ast.FuncLit](\"Type\"),\n\tFuncType_Params:       info[*ast.FuncType](\"Params\"),\n\tFuncType_Results:      info[*ast.FuncType](\"Results\"),\n\tFuncType_TypeParams:   info[*ast.FuncType](\"TypeParams\"),\n\tGenDecl_Doc:           info[*ast.GenDecl](\"Doc\"),\n\tGenDecl_Specs:         info[*ast.GenDecl](\"Specs\"),\n\tGoStmt_Call:           info[*ast.GoStmt](\"Call\"),\n\tIfStmt_Body:           info[*ast.IfStmt](\"Body\"),\n\tIfStmt_Cond:           info[*ast.IfStmt](\"Cond\"),\n\tIfStmt_Else:           info[*ast.IfStmt](\"Else\"),\n\tIfStmt_Init:           info[*ast.IfStmt](\"Init\"),\n\tImportSpec_Comment:    info[*ast.ImportSpec](\"Comment\"),\n\tImportSpec_Doc:        info[*ast.ImportSpec](\"Doc\"),\n\tImportSpec_Name:       info[*ast.ImportSpec](\"Name\"),\n\tImportSpec_Path:       info[*ast.ImportSpec](\"Path\"),\n\tIncDecStmt_X:          info[*ast.IncDecStmt](\"X\"),\n\tIndexExpr_Index:       info[*ast.IndexExpr](\"Index\"),\n\tIndexExpr_X:           info[*ast.IndexExpr](\"X\"),\n\tIndexListExpr_Indices: info[*ast.IndexListExpr](\"Indices\"),\n\tIndexListExpr_X:       info[*ast.IndexListExpr](\"X\"),\n\tInterfaceType_Methods: info[*ast.InterfaceType](\"Methods\"),\n\tKeyValueExpr_Key:      info[*ast.KeyValueExpr](\"Key\"),\n\tKeyValueExpr_Value:    info[*ast.KeyValueExpr](\"Value\"),\n\tLabeledStmt_Label:     info[*ast.LabeledStmt](\"Label\"),\n\tLabeledStmt_Stmt:      info[*ast.LabeledStmt](\"Stmt\"),\n\tMapType_Key:           info[*ast.MapType](\"Key\"),\n\tMapType_Value:         info[*ast.MapType](\"Value\"),\n\tParenExpr_X:           info[*ast.ParenExpr](\"X\"),\n\tRangeStmt_Body:        info[*ast.RangeStmt](\"Body\"),\n\tRangeStmt_Key:         info[*ast.RangeStmt](\"Key\"),\n\tRangeStmt_Value:       info[*ast.RangeStmt](\"Value\"),\n\tRangeStmt_X:           info[*ast.RangeStmt](\"X\"),\n\tReturnStmt_Results:    info[*ast.ReturnStmt](\"Results\"),\n\tSelectStmt_Body:       info[*ast.SelectStmt](\"Body\"),\n\tSelectorExpr_Sel:      info[*ast.SelectorExpr](\"Sel\"),\n\tSelectorExpr_X:        info[*ast.SelectorExpr](\"X\"),\n\tSendStmt_Chan:         info[*ast.SendStmt](\"Chan\"),\n\tSendStmt_Value:        info[*ast.SendStmt](\"Value\"),\n\tSliceExpr_High:        info[*ast.SliceExpr](\"High\"),\n\tSliceExpr_Low:         info[*ast.SliceExpr](\"Low\"),\n\tSliceExpr_Max:         info[*ast.SliceExpr](\"Max\"),\n\tSliceExpr_X:           info[*ast.SliceExpr](\"X\"),\n\tStarExpr_X:            info[*ast.StarExpr](\"X\"),\n\tStructType_Fields:     info[*ast.StructType](\"Fields\"),\n\tSwitchStmt_Body:       info[*ast.SwitchStmt](\"Body\"),\n\tSwitchStmt_Init:       info[*ast.SwitchStmt](\"Init\"),\n\tSwitchStmt_Tag:        info[*ast.SwitchStmt](\"Tag\"),\n\tTypeAssertExpr_Type:   info[*ast.TypeAssertExpr](\"Type\"),\n\tTypeAssertExpr_X:      info[*ast.TypeAssertExpr](\"X\"),\n\tTypeSpec_Comment:      info[*ast.TypeSpec](\"Comment\"),\n\tTypeSpec_Doc:          info[*ast.TypeSpec](\"Doc\"),\n\tTypeSpec_Name:         info[*ast.TypeSpec](\"Name\"),\n\tTypeSpec_Type:         info[*ast.TypeSpec](\"Type\"),\n\tTypeSpec_TypeParams:   info[*ast.TypeSpec](\"TypeParams\"),\n\tTypeSwitchStmt_Assign: info[*ast.TypeSwitchStmt](\"Assign\"),\n\tTypeSwitchStmt_Body:   info[*ast.TypeSwitchStmt](\"Body\"),\n\tTypeSwitchStmt_Init:   info[*ast.TypeSwitchStmt](\"Init\"),\n\tUnaryExpr_X:           info[*ast.UnaryExpr](\"X\"),\n\tValueSpec_Comment:     info[*ast.ValueSpec](\"Comment\"),\n\tValueSpec_Doc:         info[*ast.ValueSpec](\"Doc\"),\n\tValueSpec_Names:       info[*ast.ValueSpec](\"Names\"),\n\tValueSpec_Type:        info[*ast.ValueSpec](\"Type\"),\n\tValueSpec_Values:      info[*ast.ValueSpec](\"Values\"),\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/go/ast/inspector/cursor.go",
    "content": "// Copyright 2025 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage inspector\n\nimport (\n\t\"fmt\"\n\t\"go/ast\"\n\t\"go/token\"\n\t\"iter\"\n\t\"reflect\"\n\n\t\"golang.org/x/tools/go/ast/edge\"\n)\n\n// A Cursor represents an [ast.Node]. It is immutable.\n//\n// Two Cursors compare equal if they represent the same node.\n//\n// Call [Inspector.Root] to obtain a valid cursor for the virtual root\n// node of the traversal.\n//\n// Use the following methods to navigate efficiently around the tree:\n//   - for ancestors, use [Cursor.Parent] and [Cursor.Enclosing];\n//   - for children, use [Cursor.Child], [Cursor.Children],\n//     [Cursor.FirstChild], and [Cursor.LastChild];\n//   - for siblings, use [Cursor.PrevSibling] and [Cursor.NextSibling];\n//   - for descendants, use [Cursor.FindByPos], [Cursor.FindNode],\n//     [Cursor.Inspect], and [Cursor.Preorder].\n//\n// Use the [Cursor.ChildAt] and [Cursor.ParentEdge] methods for\n// information about the edges in a tree: which field (and slice\n// element) of the parent node holds the child.\ntype Cursor struct {\n\tin    *Inspector\n\tindex int32 // index of push node; -1 for virtual root node\n}\n\n// Root returns a cursor for the virtual root node,\n// whose children are the files provided to [New].\n//\n// Its [Cursor.Node] method return nil.\nfunc (in *Inspector) Root() Cursor {\n\treturn Cursor{in, -1}\n}\n\n// At returns the cursor at the specified index in the traversal,\n// which must have been obtained from [Cursor.Index] on a Cursor\n// belonging to the same Inspector (see [Cursor.Inspector]).\nfunc (in *Inspector) At(index int32) Cursor {\n\tif index < 0 {\n\t\tpanic(\"negative index\")\n\t}\n\tif int(index) >= len(in.events) {\n\t\tpanic(\"index out of range for this inspector\")\n\t}\n\tif in.events[index].index < index {\n\t\tpanic(\"invalid index\") // (a push, not a pop)\n\t}\n\treturn Cursor{in, index}\n}\n\n// Inspector returns the cursor's Inspector.\nfunc (c Cursor) Inspector() *Inspector { return c.in }\n\n// Index returns the index of this cursor position within the package.\n//\n// Clients should not assume anything about the numeric Index value\n// except that it increases monotonically throughout the traversal.\n// It is provided for use with [At].\n//\n// Index must not be called on the Root node.\nfunc (c Cursor) Index() int32 {\n\tif c.index < 0 {\n\t\tpanic(\"Index called on Root node\")\n\t}\n\treturn c.index\n}\n\n// Node returns the node at the current cursor position,\n// or nil for the cursor returned by [Inspector.Root].\nfunc (c Cursor) Node() ast.Node {\n\tif c.index < 0 {\n\t\treturn nil\n\t}\n\treturn c.in.events[c.index].node\n}\n\n// String returns information about the cursor's node, if any.\nfunc (c Cursor) String() string {\n\tif c.in == nil {\n\t\treturn \"(invalid)\"\n\t}\n\tif c.index < 0 {\n\t\treturn \"(root)\"\n\t}\n\treturn reflect.TypeOf(c.Node()).String()\n}\n\n// indices return the [start, end) half-open interval of event indices.\nfunc (c Cursor) indices() (int32, int32) {\n\tif c.index < 0 {\n\t\treturn 0, int32(len(c.in.events)) // root: all events\n\t} else {\n\t\treturn c.index, c.in.events[c.index].index + 1 // just one subtree\n\t}\n}\n\n// Preorder returns an iterator over the nodes of the subtree\n// represented by c in depth-first order. Each node in the sequence is\n// represented by a Cursor that allows access to the Node, but may\n// also be used to start a new traversal, or to obtain the stack of\n// nodes enclosing the cursor.\n//\n// The traversal sequence is determined by [ast.Inspect]. The types\n// argument, if non-empty, enables type-based filtering of events. The\n// function f if is called only for nodes whose type matches an\n// element of the types slice.\n//\n// If you need control over descent into subtrees,\n// or need both pre- and post-order notifications, use [Cursor.Inspect]\nfunc (c Cursor) Preorder(types ...ast.Node) iter.Seq[Cursor] {\n\tmask := maskOf(types)\n\n\treturn func(yield func(Cursor) bool) {\n\t\tevents := c.in.events\n\n\t\tfor i, limit := c.indices(); i < limit; {\n\t\t\tev := events[i]\n\t\t\tif ev.index > i { // push?\n\t\t\t\tif ev.typ&mask != 0 && !yield(Cursor{c.in, i}) {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tpop := ev.index\n\t\t\t\tif events[pop].typ&mask == 0 {\n\t\t\t\t\t// Subtree does not contain types: skip.\n\t\t\t\t\ti = pop + 1\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t}\n\t\t\ti++\n\t\t}\n\t}\n}\n\n// Inspect visits the nodes of the subtree represented by c in\n// depth-first order. It calls f(n) for each node n before it\n// visits n's children. If f returns true, Inspect invokes f\n// recursively for each of the non-nil children of the node.\n//\n// Each node is represented by a Cursor that allows access to the\n// Node, but may also be used to start a new traversal, or to obtain\n// the stack of nodes enclosing the cursor.\n//\n// The complete traversal sequence is determined by [ast.Inspect].\n// The types argument, if non-empty, enables type-based filtering of\n// events. The function f if is called only for nodes whose type\n// matches an element of the types slice.\nfunc (c Cursor) Inspect(types []ast.Node, f func(c Cursor) (descend bool)) {\n\tmask := maskOf(types)\n\tevents := c.in.events\n\tfor i, limit := c.indices(); i < limit; {\n\t\tev := events[i]\n\t\tif ev.index > i {\n\t\t\t// push\n\t\t\tpop := ev.index\n\t\t\tif ev.typ&mask != 0 && !f(Cursor{c.in, i}) ||\n\t\t\t\tevents[pop].typ&mask == 0 {\n\t\t\t\t// The user opted not to descend, or the\n\t\t\t\t// subtree does not contain types:\n\t\t\t\t// skip past the pop.\n\t\t\t\ti = pop + 1\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\t\ti++\n\t}\n}\n\n// Enclosing returns an iterator over the nodes enclosing the current\n// current node, starting with the Cursor itself.\n//\n// Enclosing must not be called on the Root node (whose [Cursor.Node] returns nil).\n//\n// The types argument, if non-empty, enables type-based filtering of\n// events: the sequence includes only enclosing nodes whose type\n// matches an element of the types slice.\nfunc (c Cursor) Enclosing(types ...ast.Node) iter.Seq[Cursor] {\n\tif c.index < 0 {\n\t\tpanic(\"Cursor.Enclosing called on Root node\")\n\t}\n\n\tmask := maskOf(types)\n\n\treturn func(yield func(Cursor) bool) {\n\t\tevents := c.in.events\n\t\tfor i := c.index; i >= 0; i = events[i].parent {\n\t\t\tif events[i].typ&mask != 0 && !yield(Cursor{c.in, i}) {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n}\n\n// Parent returns the parent of the current node.\n//\n// Parent must not be called on the Root node (whose [Cursor.Node] returns nil).\nfunc (c Cursor) Parent() Cursor {\n\tif c.index < 0 {\n\t\tpanic(\"Cursor.Parent called on Root node\")\n\t}\n\n\treturn Cursor{c.in, c.in.events[c.index].parent}\n}\n\n// ParentEdge returns the identity of the field in the parent node\n// that holds this cursor's node, and if it is a list, the index within it.\n//\n// For example, f(x, y) is a CallExpr whose three children are Idents.\n// f has edge kind [edge.CallExpr_Fun] and index -1.\n// x and y have kind [edge.CallExpr_Args] and indices 0 and 1, respectively.\n//\n// If called on a child of the Root node, it returns ([edge.Invalid], -1).\n//\n// ParentEdge must not be called on the Root node (whose [Cursor.Node] returns nil).\nfunc (c Cursor) ParentEdge() (edge.Kind, int) {\n\tif c.index < 0 {\n\t\tpanic(\"Cursor.ParentEdge called on Root node\")\n\t}\n\tevents := c.in.events\n\tpop := events[c.index].index\n\treturn unpackEdgeKindAndIndex(events[pop].parent)\n}\n\n// ChildAt returns the cursor for the child of the\n// current node identified by its edge and index.\n// The index must be -1 if the edge.Kind is not a slice.\n// The indicated child node must exist.\n//\n// ChildAt must not be called on the Root node (whose [Cursor.Node] returns nil).\n//\n// Invariant: c.Parent().ChildAt(c.ParentEdge()) == c.\nfunc (c Cursor) ChildAt(k edge.Kind, idx int) Cursor {\n\ttarget := packEdgeKindAndIndex(k, idx)\n\n\t// Unfortunately there's no shortcut to looping.\n\tevents := c.in.events\n\ti := c.index + 1\n\tfor {\n\t\tpop := events[i].index\n\t\tif pop < i {\n\t\t\tbreak\n\t\t}\n\t\tif events[pop].parent == target {\n\t\t\treturn Cursor{c.in, i}\n\t\t}\n\t\ti = pop + 1\n\t}\n\tpanic(fmt.Sprintf(\"ChildAt(%v, %d): no such child of %v\", k, idx, c))\n}\n\n// Child returns the cursor for n, which must be a direct child of c's Node.\n//\n// Child must not be called on the Root node (whose [Cursor.Node] returns nil).\nfunc (c Cursor) Child(n ast.Node) Cursor {\n\tif c.index < 0 {\n\t\tpanic(\"Cursor.Child called on Root node\")\n\t}\n\n\tif false {\n\t\t// reference implementation\n\t\tfor child := range c.Children() {\n\t\t\tif child.Node() == n {\n\t\t\t\treturn child\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\t// optimized implementation\n\t\tevents := c.in.events\n\t\tfor i := c.index + 1; events[i].index > i; i = events[i].index + 1 {\n\t\t\tif events[i].node == n {\n\t\t\t\treturn Cursor{c.in, i}\n\t\t\t}\n\t\t}\n\t}\n\tpanic(fmt.Sprintf(\"Child(%T): not a child of %v\", n, c))\n}\n\n// NextSibling returns the cursor for the next sibling node in the same list\n// (for example, of files, decls, specs, statements, fields, or expressions) as\n// the current node. It returns (zero, false) if the node is the last node in\n// the list, or is not part of a list.\n//\n// NextSibling must not be called on the Root node.\n//\n// See note at [Cursor.Children].\nfunc (c Cursor) NextSibling() (Cursor, bool) {\n\tif c.index < 0 {\n\t\tpanic(\"Cursor.NextSibling called on Root node\")\n\t}\n\n\tevents := c.in.events\n\ti := events[c.index].index + 1 // after corresponding pop\n\tif i < int32(len(events)) {\n\t\tif events[i].index > i { // push?\n\t\t\treturn Cursor{c.in, i}, true\n\t\t}\n\t}\n\treturn Cursor{}, false\n}\n\n// PrevSibling returns the cursor for the previous sibling node in the\n// same list (for example, of files, decls, specs, statements, fields,\n// or expressions) as the current node. It returns zero if the node is\n// the first node in the list, or is not part of a list.\n//\n// It must not be called on the Root node.\n//\n// See note at [Cursor.Children].\nfunc (c Cursor) PrevSibling() (Cursor, bool) {\n\tif c.index < 0 {\n\t\tpanic(\"Cursor.PrevSibling called on Root node\")\n\t}\n\n\tevents := c.in.events\n\ti := c.index - 1\n\tif i >= 0 {\n\t\tif j := events[i].index; j < i { // pop?\n\t\t\treturn Cursor{c.in, j}, true\n\t\t}\n\t}\n\treturn Cursor{}, false\n}\n\n// FirstChild returns the first direct child of the current node,\n// or zero if it has no children.\nfunc (c Cursor) FirstChild() (Cursor, bool) {\n\tevents := c.in.events\n\ti := c.index + 1                                   // i=0 if c is root\n\tif i < int32(len(events)) && events[i].index > i { // push?\n\t\treturn Cursor{c.in, i}, true\n\t}\n\treturn Cursor{}, false\n}\n\n// LastChild returns the last direct child of the current node,\n// or zero if it has no children.\nfunc (c Cursor) LastChild() (Cursor, bool) {\n\tevents := c.in.events\n\tif c.index < 0 { // root?\n\t\tif len(events) > 0 {\n\t\t\t// return push of final event (a pop)\n\t\t\treturn Cursor{c.in, events[len(events)-1].index}, true\n\t\t}\n\t} else {\n\t\tj := events[c.index].index - 1 // before corresponding pop\n\t\t// Inv: j == c.index if c has no children\n\t\t//  or  j is last child's pop.\n\t\tif j > c.index { // c has children\n\t\t\treturn Cursor{c.in, events[j].index}, true\n\t\t}\n\t}\n\treturn Cursor{}, false\n}\n\n// Children returns an iterator over the direct children of the\n// current node, if any.\n//\n// When using Children, NextChild, and PrevChild, bear in mind that a\n// Node's children may come from different fields, some of which may\n// be lists of nodes without a distinguished intervening container\n// such as [ast.BlockStmt].\n//\n// For example, [ast.CaseClause] has a field List of expressions and a\n// field Body of statements, so the children of a CaseClause are a mix\n// of expressions and statements. Other nodes that have \"uncontained\"\n// list fields include:\n//\n//   - [ast.ValueSpec] (Names, Values)\n//   - [ast.CompositeLit] (Type, Elts)\n//   - [ast.IndexListExpr] (X, Indices)\n//   - [ast.CallExpr] (Fun, Args)\n//   - [ast.AssignStmt] (Lhs, Rhs)\n//\n// So, do not assume that the previous sibling of an ast.Stmt is also\n// an ast.Stmt, or if it is, that they are executed sequentially,\n// unless you have established that, say, its parent is a BlockStmt\n// or its [Cursor.ParentEdge] is [edge.BlockStmt_List].\n// For example, given \"for S1; ; S2 {}\", the predecessor of S2 is S1,\n// even though they are not executed in sequence.\nfunc (c Cursor) Children() iter.Seq[Cursor] {\n\treturn func(yield func(Cursor) bool) {\n\t\tc, ok := c.FirstChild()\n\t\tfor ok && yield(c) {\n\t\t\tc, ok = c.NextSibling()\n\t\t}\n\t}\n}\n\n// Contains reports whether c contains or is equal to c2.\n//\n// Both Cursors must belong to the same [Inspector];\n// neither may be its Root node.\nfunc (c Cursor) Contains(c2 Cursor) bool {\n\tif c.in != c2.in {\n\t\tpanic(\"different inspectors\")\n\t}\n\tevents := c.in.events\n\treturn c.index <= c2.index && events[c2.index].index <= events[c.index].index\n}\n\n// FindNode returns the cursor for node n if it belongs to the subtree\n// rooted at c. It returns zero if n is not found.\nfunc (c Cursor) FindNode(n ast.Node) (Cursor, bool) {\n\n\t// FindNode is equivalent to this code,\n\t// but more convenient and 15-20% faster:\n\tif false {\n\t\tfor candidate := range c.Preorder(n) {\n\t\t\tif candidate.Node() == n {\n\t\t\t\treturn candidate, true\n\t\t\t}\n\t\t}\n\t\treturn Cursor{}, false\n\t}\n\n\t// TODO(adonovan): opt: should we assume Node.Pos is accurate\n\t// and combine type-based filtering with position filtering\n\t// like FindByPos?\n\n\tmask := maskOf([]ast.Node{n})\n\tevents := c.in.events\n\n\tfor i, limit := c.indices(); i < limit; i++ {\n\t\tev := events[i]\n\t\tif ev.index > i { // push?\n\t\t\tif ev.typ&mask != 0 && ev.node == n {\n\t\t\t\treturn Cursor{c.in, i}, true\n\t\t\t}\n\t\t\tpop := ev.index\n\t\t\tif events[pop].typ&mask == 0 {\n\t\t\t\t// Subtree does not contain type of n: skip.\n\t\t\t\ti = pop\n\t\t\t}\n\t\t}\n\t}\n\treturn Cursor{}, false\n}\n\n// FindByPos returns the cursor for the innermost node n in the tree\n// rooted at c such that n.Pos() <= start && end <= n.End().\n// (For an *ast.File, it uses the bounds n.FileStart-n.FileEnd.)\n//\n// An empty range (start == end) between two adjacent nodes is\n// considered to belong to the first node.\n//\n// It returns zero if none is found.\n// Precondition: start <= end.\n//\n// See also [astutil.PathEnclosingInterval], which\n// tolerates adjoining whitespace.\nfunc (c Cursor) FindByPos(start, end token.Pos) (Cursor, bool) {\n\tif end < start {\n\t\tpanic(\"end < start\")\n\t}\n\tevents := c.in.events\n\n\t// This algorithm could be implemented using c.Inspect,\n\t// but it is about 2.5x slower.\n\n\t// best is the push-index of the latest (=innermost) node containing range.\n\t// (Beware: latest is not always innermost because FuncDecl.{Name,Type} overlap.)\n\tbest := int32(-1)\n\tfor i, limit := c.indices(); i < limit; i++ {\n\t\tev := events[i]\n\t\tif ev.index > i { // push?\n\t\t\tn := ev.node\n\t\t\tvar nodeEnd token.Pos\n\t\t\tif file, ok := n.(*ast.File); ok {\n\t\t\t\tnodeEnd = file.FileEnd\n\t\t\t\t// Note: files may be out of Pos order.\n\t\t\t\tif file.FileStart > start {\n\t\t\t\t\ti = ev.index // disjoint, after; skip to next file\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Edge case: FuncDecl.Name and .Type overlap:\n\t\t\t\t// Don't update best from Name to FuncDecl.Type.\n\t\t\t\t//\n\t\t\t\t// The condition can be read as:\n\t\t\t\t// - n is FuncType\n\t\t\t\t// - n.parent is FuncDecl\n\t\t\t\t// - best is strictly beneath the FuncDecl\n\t\t\t\tif ev.typ == 1<<nFuncType &&\n\t\t\t\t\tevents[ev.parent].typ == 1<<nFuncDecl &&\n\t\t\t\t\tbest > ev.parent {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tnodeEnd = n.End()\n\t\t\t\tif n.Pos() > start {\n\t\t\t\t\tbreak // disjoint, after; stop\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Inv: node.{Pos,FileStart} <= start\n\t\t\tif end <= nodeEnd {\n\t\t\t\t// node fully contains target range\n\t\t\t\tbest = i\n\n\t\t\t\t// Don't search beyond end of the first match.\n\t\t\t\t// This is important only for an empty range (start=end)\n\t\t\t\t// between two adjoining nodes, which would otherwise\n\t\t\t\t// match both nodes; we want to match only the first.\n\t\t\t\tlimit = ev.index\n\t\t\t} else if nodeEnd < start {\n\t\t\t\ti = ev.index // disjoint, before; skip forward\n\t\t\t}\n\t\t}\n\t}\n\tif best >= 0 {\n\t\treturn Cursor{c.in, best}, true\n\t}\n\treturn Cursor{}, false\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/go/ast/inspector/inspector.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package inspector provides helper functions for traversal over the\n// syntax trees of a package, including node filtering by type, and\n// materialization of the traversal stack.\n//\n// During construction, the inspector does a complete traversal and\n// builds a list of push/pop events and their node type. Subsequent\n// method calls that request a traversal scan this list, rather than walk\n// the AST, and perform type filtering using efficient bit sets.\n// This representation is sometimes called a \"balanced parenthesis tree.\"\n//\n// Experiments suggest the inspector's traversals are about 2.5x faster\n// than [ast.Inspect], but it may take around 5 traversals for this\n// benefit to amortize the inspector's construction cost.\n// If efficiency is the primary concern, do not use Inspector for\n// one-off traversals.\n//\n// The [Cursor] type provides a more flexible API for efficient\n// navigation of syntax trees in all four \"cardinal directions\". For\n// example, traversals may be nested, so you can find each node of\n// type A and then search within it for nodes of type B. Or you can\n// traverse from a node to its immediate neighbors: its parent, its\n// previous and next sibling, or its first and last child. We\n// recommend using methods of Cursor in preference to Inspector where\n// possible.\npackage inspector\n\n// There are four orthogonal features in a traversal:\n//  1 type filtering\n//  2 pruning\n//  3 postorder calls to f\n//  4 stack\n// Rather than offer all of them in the API,\n// only a few combinations are exposed:\n// - Preorder is the fastest and has fewest features,\n//   but is the most commonly needed traversal.\n// - Nodes and WithStack both provide pruning and postorder calls,\n//   even though few clients need it, because supporting two versions\n//   is not justified.\n// More combinations could be supported by expressing them as\n// wrappers around a more generic traversal, but this was measured\n// and found to degrade performance significantly (30%).\n\nimport (\n\t\"go/ast\"\n\n\t\"golang.org/x/tools/go/ast/edge\"\n)\n\n// An Inspector provides methods for inspecting\n// (traversing) the syntax trees of a package.\ntype Inspector struct {\n\tevents []event\n}\n\nfunc packEdgeKindAndIndex(ek edge.Kind, index int) int32 {\n\treturn int32(uint32(index+1)<<7 | uint32(ek))\n}\n\n// unpackEdgeKindAndIndex unpacks the edge kind and edge index (within\n// an []ast.Node slice) from the parent field of a pop event.\nfunc unpackEdgeKindAndIndex(x int32) (edge.Kind, int) {\n\t// The \"parent\" field of a pop node holds the\n\t// edge Kind in the lower 7 bits and the index+1\n\t// in the upper 25.\n\treturn edge.Kind(x & 0x7f), int(x>>7) - 1\n}\n\n// New returns an Inspector for the specified syntax trees.\nfunc New(files []*ast.File) *Inspector {\n\treturn &Inspector{traverse(files)}\n}\n\n// An event represents a push or a pop\n// of an ast.Node during a traversal.\ntype event struct {\n\tnode   ast.Node\n\ttyp    uint64 // typeOf(node) on push event, or union of typ strictly between push and pop events on pop events\n\tindex  int32  // index of corresponding push or pop event\n\tparent int32  // index of parent's push node (push nodes only), or packed edge kind/index (pop nodes only)\n}\n\n// TODO: Experiment with storing only the second word of event.node (unsafe.Pointer).\n// Type can be recovered from the sole bit in typ.\n// [Tried this, wasn't faster. --adonovan]\n\n// Preorder visits all the nodes of the files supplied to New in\n// depth-first order. It calls f(n) for each node n before it visits\n// n's children.\n//\n// The complete traversal sequence is determined by [ast.Inspect].\n// The types argument, if non-empty, enables type-based filtering of\n// events. The function f is called only for nodes whose type\n// matches an element of the types slice.\n//\n// The [Cursor.Preorder] method provides a richer alternative interface.\n// Example:\n//\n//\tfor c := range in.Root().Preorder(types) { ... }\nfunc (in *Inspector) Preorder(types []ast.Node, f func(ast.Node)) {\n\t// Because it avoids postorder calls to f, and the pruning\n\t// check, Preorder is almost twice as fast as Nodes. The two\n\t// features seem to contribute similar slowdowns (~1.4x each).\n\n\t// This function is equivalent to the PreorderSeq call below,\n\t// but to avoid the additional dynamic call (which adds 13-35%\n\t// to the benchmarks), we expand it out.\n\t//\n\t// in.PreorderSeq(types...)(func(n ast.Node) bool {\n\t// \tf(n)\n\t// \treturn true\n\t// })\n\n\tmask := maskOf(types)\n\tfor i := int32(0); i < int32(len(in.events)); {\n\t\tev := in.events[i]\n\t\tif ev.index > i {\n\t\t\t// push\n\t\t\tif ev.typ&mask != 0 {\n\t\t\t\tf(ev.node)\n\t\t\t}\n\t\t\tpop := ev.index\n\t\t\tif in.events[pop].typ&mask == 0 {\n\t\t\t\t// Subtrees do not contain types: skip them and pop.\n\t\t\t\ti = pop + 1\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\t\ti++\n\t}\n}\n\n// Nodes visits the nodes of the files supplied to New in depth-first\n// order. It calls f(n, true) for each node n before it visits n's\n// children. If f returns true, Nodes invokes f recursively for each\n// of the non-nil children of the node, followed by a call of\n// f(n, false).\n//\n// The complete traversal sequence is determined by [ast.Inspect].\n// The types argument, if non-empty, enables type-based filtering of\n// events. The function f if is called only for nodes whose type\n// matches an element of the types slice.\n//\n// The [Cursor.Inspect] method provides a richer alternative interface.\n// Example:\n//\n//\tin.Root().Inspect(types, func(c Cursor) bool {\n//\t\t...\n//\t\treturn true\n//\t}\nfunc (in *Inspector) Nodes(types []ast.Node, f func(n ast.Node, push bool) (proceed bool)) {\n\tmask := maskOf(types)\n\tfor i := int32(0); i < int32(len(in.events)); {\n\t\tev := in.events[i]\n\t\tif ev.index > i {\n\t\t\t// push\n\t\t\tpop := ev.index\n\t\t\tif ev.typ&mask != 0 {\n\t\t\t\tif !f(ev.node, true) {\n\t\t\t\t\ti = pop + 1 // jump to corresponding pop + 1\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t}\n\t\t\tif in.events[pop].typ&mask == 0 {\n\t\t\t\t// Subtrees do not contain types: skip them.\n\t\t\t\ti = pop\n\t\t\t\tcontinue\n\t\t\t}\n\t\t} else {\n\t\t\t// pop\n\t\t\tpush := ev.index\n\t\t\tif in.events[push].typ&mask != 0 {\n\t\t\t\tf(ev.node, false)\n\t\t\t}\n\t\t}\n\t\ti++\n\t}\n}\n\n// WithStack visits nodes in a similar manner to Nodes, but it\n// supplies each call to f an additional argument, the current\n// traversal stack. The stack's first element is the outermost node,\n// an *ast.File; its last is the innermost, n.\n//\n// The [Cursor.Inspect] method provides a richer alternative interface.\n// Example:\n//\n//\tin.Root().Inspect(types, func(c Cursor) bool {\n//\t\tstack := slices.Collect(c.Enclosing())\n//\t\t...\n//\t\treturn true\n//\t})\nfunc (in *Inspector) WithStack(types []ast.Node, f func(n ast.Node, push bool, stack []ast.Node) (proceed bool)) {\n\tmask := maskOf(types)\n\tvar stack []ast.Node\n\tfor i := int32(0); i < int32(len(in.events)); {\n\t\tev := in.events[i]\n\t\tif ev.index > i {\n\t\t\t// push\n\t\t\tpop := ev.index\n\t\t\tstack = append(stack, ev.node)\n\t\t\tif ev.typ&mask != 0 {\n\t\t\t\tif !f(ev.node, true, stack) {\n\t\t\t\t\ti = pop + 1\n\t\t\t\t\tstack = stack[:len(stack)-1]\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t}\n\t\t\tif in.events[pop].typ&mask == 0 {\n\t\t\t\t// Subtrees does not contain types: skip them.\n\t\t\t\ti = pop\n\t\t\t\tcontinue\n\t\t\t}\n\t\t} else {\n\t\t\t// pop\n\t\t\tpush := ev.index\n\t\t\tif in.events[push].typ&mask != 0 {\n\t\t\t\tf(ev.node, false, stack)\n\t\t\t}\n\t\t\tstack = stack[:len(stack)-1]\n\t\t}\n\t\ti++\n\t}\n}\n\n// traverse builds the table of events representing a traversal.\nfunc traverse(files []*ast.File) []event {\n\t// Preallocate approximate number of events\n\t// based on source file extent of the declarations.\n\t// (We use End-Pos not FileStart-FileEnd to neglect\n\t// the effect of long doc comments.)\n\t// This makes traverse faster by 4x (!).\n\tvar extent int\n\tfor _, f := range files {\n\t\textent += int(f.End() - f.Pos())\n\t}\n\t// This estimate is based on the net/http package.\n\tcapacity := min(extent*33/100, 1e6) // impose some reasonable maximum (1M)\n\n\tv := &visitor{\n\t\tevents: make([]event, 0, capacity),\n\t\tstack:  []item{{index: -1}}, // include an extra event so file nodes have a parent\n\t}\n\tfor _, file := range files {\n\t\twalk(v, edge.Invalid, -1, file)\n\t}\n\treturn v.events\n}\n\ntype visitor struct {\n\tevents []event\n\tstack  []item\n}\n\ntype item struct {\n\tindex            int32  // index of current node's push event\n\tparentIndex      int32  // index of parent node's push event\n\ttypAccum         uint64 // accumulated type bits of current node's descendants\n\tedgeKindAndIndex int32  // edge.Kind and index, bit packed\n}\n\nfunc (v *visitor) push(ek edge.Kind, eindex int, node ast.Node) {\n\tvar (\n\t\tindex       = int32(len(v.events))\n\t\tparentIndex = v.stack[len(v.stack)-1].index\n\t)\n\tv.events = append(v.events, event{\n\t\tnode:   node,\n\t\tparent: parentIndex,\n\t\ttyp:    typeOf(node),\n\t\tindex:  0, // (pop index is set later by visitor.pop)\n\t})\n\tv.stack = append(v.stack, item{\n\t\tindex:            index,\n\t\tparentIndex:      parentIndex,\n\t\tedgeKindAndIndex: packEdgeKindAndIndex(ek, eindex),\n\t})\n\n\t// 2B nodes ought to be enough for anyone!\n\tif int32(len(v.events)) < 0 {\n\t\tpanic(\"event index exceeded int32\")\n\t}\n\n\t// 32M elements in an []ast.Node ought to be enough for anyone!\n\tif ek2, eindex2 := unpackEdgeKindAndIndex(packEdgeKindAndIndex(ek, eindex)); ek2 != ek || eindex2 != eindex {\n\t\tpanic(\"Node slice index exceeded uint25\")\n\t}\n}\n\nfunc (v *visitor) pop(node ast.Node) {\n\ttop := len(v.stack) - 1\n\tcurrent := v.stack[top]\n\n\tpush := &v.events[current.index]\n\tparent := &v.stack[top-1]\n\n\tpush.index = int32(len(v.events))              // make push event refer to pop\n\tparent.typAccum |= current.typAccum | push.typ // accumulate type bits into parent\n\n\tv.stack = v.stack[:top]\n\n\tv.events = append(v.events, event{\n\t\tnode:   node,\n\t\ttyp:    current.typAccum,\n\t\tindex:  current.index,\n\t\tparent: current.edgeKindAndIndex, // see [unpackEdgeKindAndIndex]\n\t})\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/go/ast/inspector/iter.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build go1.23\n\npackage inspector\n\nimport (\n\t\"go/ast\"\n\t\"iter\"\n)\n\n// PreorderSeq returns an iterator that visits all the\n// nodes of the files supplied to New in depth-first order.\n// It visits each node n before n's children.\n// The complete traversal sequence is determined by ast.Inspect.\n//\n// The types argument, if non-empty, enables type-based\n// filtering of events: only nodes whose type matches an\n// element of the types slice are included in the sequence.\nfunc (in *Inspector) PreorderSeq(types ...ast.Node) iter.Seq[ast.Node] {\n\n\t// This implementation is identical to Preorder,\n\t// except that it supports breaking out of the loop.\n\n\treturn func(yield func(ast.Node) bool) {\n\t\tmask := maskOf(types)\n\t\tfor i := int32(0); i < int32(len(in.events)); {\n\t\t\tev := in.events[i]\n\t\t\tif ev.index > i {\n\t\t\t\t// push\n\t\t\t\tif ev.typ&mask != 0 {\n\t\t\t\t\tif !yield(ev.node) {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tpop := ev.index\n\t\t\t\tif in.events[pop].typ&mask == 0 {\n\t\t\t\t\t// Subtrees do not contain types: skip them and pop.\n\t\t\t\t\ti = pop + 1\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t}\n\t\t\ti++\n\t\t}\n\t}\n}\n\n// All[N] returns an iterator over all the nodes of type N.\n// N must be a pointer-to-struct type that implements ast.Node.\n//\n// Example:\n//\n//\tfor call := range All[*ast.CallExpr](in) { ... }\nfunc All[N interface {\n\t*S\n\tast.Node\n}, S any](in *Inspector) iter.Seq[N] {\n\n\t// To avoid additional dynamic call overheads,\n\t// we duplicate rather than call the logic of PreorderSeq.\n\n\tmask := typeOf((N)(nil))\n\treturn func(yield func(N) bool) {\n\t\tfor i := int32(0); i < int32(len(in.events)); {\n\t\t\tev := in.events[i]\n\t\t\tif ev.index > i {\n\t\t\t\t// push\n\t\t\t\tif ev.typ&mask != 0 {\n\t\t\t\t\tif !yield(ev.node.(N)) {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tpop := ev.index\n\t\t\t\tif in.events[pop].typ&mask == 0 {\n\t\t\t\t\t// Subtrees do not contain types: skip them and pop.\n\t\t\t\t\ti = pop + 1\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t}\n\t\t\ti++\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/go/ast/inspector/typeof.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage inspector\n\n// This file defines func typeOf(ast.Node) uint64.\n//\n// The initial map-based implementation was too slow;\n// see https://go-review.googlesource.com/c/tools/+/135655/1/go/ast/inspector/inspector.go#196\n\nimport (\n\t\"go/ast\"\n\t\"math\"\n)\n\nconst (\n\tnArrayType = iota\n\tnAssignStmt\n\tnBadDecl\n\tnBadExpr\n\tnBadStmt\n\tnBasicLit\n\tnBinaryExpr\n\tnBlockStmt\n\tnBranchStmt\n\tnCallExpr\n\tnCaseClause\n\tnChanType\n\tnCommClause\n\tnComment\n\tnCommentGroup\n\tnCompositeLit\n\tnDeclStmt\n\tnDeferStmt\n\tnEllipsis\n\tnEmptyStmt\n\tnExprStmt\n\tnField\n\tnFieldList\n\tnFile\n\tnForStmt\n\tnFuncDecl\n\tnFuncLit\n\tnFuncType\n\tnGenDecl\n\tnGoStmt\n\tnIdent\n\tnIfStmt\n\tnImportSpec\n\tnIncDecStmt\n\tnIndexExpr\n\tnIndexListExpr\n\tnInterfaceType\n\tnKeyValueExpr\n\tnLabeledStmt\n\tnMapType\n\tnPackage\n\tnParenExpr\n\tnRangeStmt\n\tnReturnStmt\n\tnSelectStmt\n\tnSelectorExpr\n\tnSendStmt\n\tnSliceExpr\n\tnStarExpr\n\tnStructType\n\tnSwitchStmt\n\tnTypeAssertExpr\n\tnTypeSpec\n\tnTypeSwitchStmt\n\tnUnaryExpr\n\tnValueSpec\n)\n\n// typeOf returns a distinct single-bit value that represents the type of n.\n//\n// Various implementations were benchmarked with BenchmarkNewInspector:\n//\n//\t                                                                GOGC=off\n//\t- type switch\t\t\t\t\t4.9-5.5ms\t2.1ms\n//\t- binary search over a sorted list of types\t5.5-5.9ms\t2.5ms\n//\t- linear scan, frequency-ordered list\t\t5.9-6.1ms\t2.7ms\n//\t- linear scan, unordered list\t\t\t6.4ms\t\t2.7ms\n//\t- hash table\t\t\t\t\t6.5ms\t\t3.1ms\n//\n// A perfect hash seemed like overkill.\n//\n// The compiler's switch statement is the clear winner\n// as it produces a binary tree in code,\n// with constant conditions and good branch prediction.\n// (Sadly it is the most verbose in source code.)\n// Binary search suffered from poor branch prediction.\nfunc typeOf(n ast.Node) uint64 {\n\t// Fast path: nearly half of all nodes are identifiers.\n\tif _, ok := n.(*ast.Ident); ok {\n\t\treturn 1 << nIdent\n\t}\n\n\t// These cases include all nodes encountered by ast.Inspect.\n\tswitch n.(type) {\n\tcase *ast.ArrayType:\n\t\treturn 1 << nArrayType\n\tcase *ast.AssignStmt:\n\t\treturn 1 << nAssignStmt\n\tcase *ast.BadDecl:\n\t\treturn 1 << nBadDecl\n\tcase *ast.BadExpr:\n\t\treturn 1 << nBadExpr\n\tcase *ast.BadStmt:\n\t\treturn 1 << nBadStmt\n\tcase *ast.BasicLit:\n\t\treturn 1 << nBasicLit\n\tcase *ast.BinaryExpr:\n\t\treturn 1 << nBinaryExpr\n\tcase *ast.BlockStmt:\n\t\treturn 1 << nBlockStmt\n\tcase *ast.BranchStmt:\n\t\treturn 1 << nBranchStmt\n\tcase *ast.CallExpr:\n\t\treturn 1 << nCallExpr\n\tcase *ast.CaseClause:\n\t\treturn 1 << nCaseClause\n\tcase *ast.ChanType:\n\t\treturn 1 << nChanType\n\tcase *ast.CommClause:\n\t\treturn 1 << nCommClause\n\tcase *ast.Comment:\n\t\treturn 1 << nComment\n\tcase *ast.CommentGroup:\n\t\treturn 1 << nCommentGroup\n\tcase *ast.CompositeLit:\n\t\treturn 1 << nCompositeLit\n\tcase *ast.DeclStmt:\n\t\treturn 1 << nDeclStmt\n\tcase *ast.DeferStmt:\n\t\treturn 1 << nDeferStmt\n\tcase *ast.Ellipsis:\n\t\treturn 1 << nEllipsis\n\tcase *ast.EmptyStmt:\n\t\treturn 1 << nEmptyStmt\n\tcase *ast.ExprStmt:\n\t\treturn 1 << nExprStmt\n\tcase *ast.Field:\n\t\treturn 1 << nField\n\tcase *ast.FieldList:\n\t\treturn 1 << nFieldList\n\tcase *ast.File:\n\t\treturn 1 << nFile\n\tcase *ast.ForStmt:\n\t\treturn 1 << nForStmt\n\tcase *ast.FuncDecl:\n\t\treturn 1 << nFuncDecl\n\tcase *ast.FuncLit:\n\t\treturn 1 << nFuncLit\n\tcase *ast.FuncType:\n\t\treturn 1 << nFuncType\n\tcase *ast.GenDecl:\n\t\treturn 1 << nGenDecl\n\tcase *ast.GoStmt:\n\t\treturn 1 << nGoStmt\n\tcase *ast.Ident:\n\t\treturn 1 << nIdent\n\tcase *ast.IfStmt:\n\t\treturn 1 << nIfStmt\n\tcase *ast.ImportSpec:\n\t\treturn 1 << nImportSpec\n\tcase *ast.IncDecStmt:\n\t\treturn 1 << nIncDecStmt\n\tcase *ast.IndexExpr:\n\t\treturn 1 << nIndexExpr\n\tcase *ast.IndexListExpr:\n\t\treturn 1 << nIndexListExpr\n\tcase *ast.InterfaceType:\n\t\treturn 1 << nInterfaceType\n\tcase *ast.KeyValueExpr:\n\t\treturn 1 << nKeyValueExpr\n\tcase *ast.LabeledStmt:\n\t\treturn 1 << nLabeledStmt\n\tcase *ast.MapType:\n\t\treturn 1 << nMapType\n\tcase *ast.Package:\n\t\treturn 1 << nPackage\n\tcase *ast.ParenExpr:\n\t\treturn 1 << nParenExpr\n\tcase *ast.RangeStmt:\n\t\treturn 1 << nRangeStmt\n\tcase *ast.ReturnStmt:\n\t\treturn 1 << nReturnStmt\n\tcase *ast.SelectStmt:\n\t\treturn 1 << nSelectStmt\n\tcase *ast.SelectorExpr:\n\t\treturn 1 << nSelectorExpr\n\tcase *ast.SendStmt:\n\t\treturn 1 << nSendStmt\n\tcase *ast.SliceExpr:\n\t\treturn 1 << nSliceExpr\n\tcase *ast.StarExpr:\n\t\treturn 1 << nStarExpr\n\tcase *ast.StructType:\n\t\treturn 1 << nStructType\n\tcase *ast.SwitchStmt:\n\t\treturn 1 << nSwitchStmt\n\tcase *ast.TypeAssertExpr:\n\t\treturn 1 << nTypeAssertExpr\n\tcase *ast.TypeSpec:\n\t\treturn 1 << nTypeSpec\n\tcase *ast.TypeSwitchStmt:\n\t\treturn 1 << nTypeSwitchStmt\n\tcase *ast.UnaryExpr:\n\t\treturn 1 << nUnaryExpr\n\tcase *ast.ValueSpec:\n\t\treturn 1 << nValueSpec\n\t}\n\treturn 0\n}\n\nfunc maskOf(nodes []ast.Node) uint64 {\n\tif len(nodes) == 0 {\n\t\treturn math.MaxUint64 // match all node types\n\t}\n\tvar mask uint64\n\tfor _, n := range nodes {\n\t\tmask |= typeOf(n)\n\t}\n\treturn mask\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/go/ast/inspector/walk.go",
    "content": "// Copyright 2025 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage inspector\n\n// This file is a fork of ast.Inspect to reduce unnecessary dynamic\n// calls and to gather edge information.\n//\n// Consistency with the original is ensured by TestInspectAllNodes.\n\nimport (\n\t\"fmt\"\n\t\"go/ast\"\n\n\t\"golang.org/x/tools/go/ast/edge\"\n)\n\nfunc walkList[N ast.Node](v *visitor, ek edge.Kind, list []N) {\n\tfor i, node := range list {\n\t\twalk(v, ek, i, node)\n\t}\n}\n\nfunc walk(v *visitor, ek edge.Kind, index int, node ast.Node) {\n\tv.push(ek, index, node)\n\n\t// walk children\n\t// (the order of the cases matches the order\n\t// of the corresponding node types in ast.go)\n\tswitch n := node.(type) {\n\t// Comments and fields\n\tcase *ast.Comment:\n\t\t// nothing to do\n\n\tcase *ast.CommentGroup:\n\t\twalkList(v, edge.CommentGroup_List, n.List)\n\n\tcase *ast.Field:\n\t\tif n.Doc != nil {\n\t\t\twalk(v, edge.Field_Doc, -1, n.Doc)\n\t\t}\n\t\twalkList(v, edge.Field_Names, n.Names)\n\t\tif n.Type != nil {\n\t\t\twalk(v, edge.Field_Type, -1, n.Type)\n\t\t}\n\t\tif n.Tag != nil {\n\t\t\twalk(v, edge.Field_Tag, -1, n.Tag)\n\t\t}\n\t\tif n.Comment != nil {\n\t\t\twalk(v, edge.Field_Comment, -1, n.Comment)\n\t\t}\n\n\tcase *ast.FieldList:\n\t\twalkList(v, edge.FieldList_List, n.List)\n\n\t// Expressions\n\tcase *ast.BadExpr, *ast.Ident, *ast.BasicLit:\n\t\t// nothing to do\n\n\tcase *ast.Ellipsis:\n\t\tif n.Elt != nil {\n\t\t\twalk(v, edge.Ellipsis_Elt, -1, n.Elt)\n\t\t}\n\n\tcase *ast.FuncLit:\n\t\twalk(v, edge.FuncLit_Type, -1, n.Type)\n\t\twalk(v, edge.FuncLit_Body, -1, n.Body)\n\n\tcase *ast.CompositeLit:\n\t\tif n.Type != nil {\n\t\t\twalk(v, edge.CompositeLit_Type, -1, n.Type)\n\t\t}\n\t\twalkList(v, edge.CompositeLit_Elts, n.Elts)\n\n\tcase *ast.ParenExpr:\n\t\twalk(v, edge.ParenExpr_X, -1, n.X)\n\n\tcase *ast.SelectorExpr:\n\t\twalk(v, edge.SelectorExpr_X, -1, n.X)\n\t\twalk(v, edge.SelectorExpr_Sel, -1, n.Sel)\n\n\tcase *ast.IndexExpr:\n\t\twalk(v, edge.IndexExpr_X, -1, n.X)\n\t\twalk(v, edge.IndexExpr_Index, -1, n.Index)\n\n\tcase *ast.IndexListExpr:\n\t\twalk(v, edge.IndexListExpr_X, -1, n.X)\n\t\twalkList(v, edge.IndexListExpr_Indices, n.Indices)\n\n\tcase *ast.SliceExpr:\n\t\twalk(v, edge.SliceExpr_X, -1, n.X)\n\t\tif n.Low != nil {\n\t\t\twalk(v, edge.SliceExpr_Low, -1, n.Low)\n\t\t}\n\t\tif n.High != nil {\n\t\t\twalk(v, edge.SliceExpr_High, -1, n.High)\n\t\t}\n\t\tif n.Max != nil {\n\t\t\twalk(v, edge.SliceExpr_Max, -1, n.Max)\n\t\t}\n\n\tcase *ast.TypeAssertExpr:\n\t\twalk(v, edge.TypeAssertExpr_X, -1, n.X)\n\t\tif n.Type != nil {\n\t\t\twalk(v, edge.TypeAssertExpr_Type, -1, n.Type)\n\t\t}\n\n\tcase *ast.CallExpr:\n\t\twalk(v, edge.CallExpr_Fun, -1, n.Fun)\n\t\twalkList(v, edge.CallExpr_Args, n.Args)\n\n\tcase *ast.StarExpr:\n\t\twalk(v, edge.StarExpr_X, -1, n.X)\n\n\tcase *ast.UnaryExpr:\n\t\twalk(v, edge.UnaryExpr_X, -1, n.X)\n\n\tcase *ast.BinaryExpr:\n\t\twalk(v, edge.BinaryExpr_X, -1, n.X)\n\t\twalk(v, edge.BinaryExpr_Y, -1, n.Y)\n\n\tcase *ast.KeyValueExpr:\n\t\twalk(v, edge.KeyValueExpr_Key, -1, n.Key)\n\t\twalk(v, edge.KeyValueExpr_Value, -1, n.Value)\n\n\t// Types\n\tcase *ast.ArrayType:\n\t\tif n.Len != nil {\n\t\t\twalk(v, edge.ArrayType_Len, -1, n.Len)\n\t\t}\n\t\twalk(v, edge.ArrayType_Elt, -1, n.Elt)\n\n\tcase *ast.StructType:\n\t\twalk(v, edge.StructType_Fields, -1, n.Fields)\n\n\tcase *ast.FuncType:\n\t\tif n.TypeParams != nil {\n\t\t\twalk(v, edge.FuncType_TypeParams, -1, n.TypeParams)\n\t\t}\n\t\tif n.Params != nil {\n\t\t\twalk(v, edge.FuncType_Params, -1, n.Params)\n\t\t}\n\t\tif n.Results != nil {\n\t\t\twalk(v, edge.FuncType_Results, -1, n.Results)\n\t\t}\n\n\tcase *ast.InterfaceType:\n\t\twalk(v, edge.InterfaceType_Methods, -1, n.Methods)\n\n\tcase *ast.MapType:\n\t\twalk(v, edge.MapType_Key, -1, n.Key)\n\t\twalk(v, edge.MapType_Value, -1, n.Value)\n\n\tcase *ast.ChanType:\n\t\twalk(v, edge.ChanType_Value, -1, n.Value)\n\n\t// Statements\n\tcase *ast.BadStmt:\n\t\t// nothing to do\n\n\tcase *ast.DeclStmt:\n\t\twalk(v, edge.DeclStmt_Decl, -1, n.Decl)\n\n\tcase *ast.EmptyStmt:\n\t\t// nothing to do\n\n\tcase *ast.LabeledStmt:\n\t\twalk(v, edge.LabeledStmt_Label, -1, n.Label)\n\t\twalk(v, edge.LabeledStmt_Stmt, -1, n.Stmt)\n\n\tcase *ast.ExprStmt:\n\t\twalk(v, edge.ExprStmt_X, -1, n.X)\n\n\tcase *ast.SendStmt:\n\t\twalk(v, edge.SendStmt_Chan, -1, n.Chan)\n\t\twalk(v, edge.SendStmt_Value, -1, n.Value)\n\n\tcase *ast.IncDecStmt:\n\t\twalk(v, edge.IncDecStmt_X, -1, n.X)\n\n\tcase *ast.AssignStmt:\n\t\twalkList(v, edge.AssignStmt_Lhs, n.Lhs)\n\t\twalkList(v, edge.AssignStmt_Rhs, n.Rhs)\n\n\tcase *ast.GoStmt:\n\t\twalk(v, edge.GoStmt_Call, -1, n.Call)\n\n\tcase *ast.DeferStmt:\n\t\twalk(v, edge.DeferStmt_Call, -1, n.Call)\n\n\tcase *ast.ReturnStmt:\n\t\twalkList(v, edge.ReturnStmt_Results, n.Results)\n\n\tcase *ast.BranchStmt:\n\t\tif n.Label != nil {\n\t\t\twalk(v, edge.BranchStmt_Label, -1, n.Label)\n\t\t}\n\n\tcase *ast.BlockStmt:\n\t\twalkList(v, edge.BlockStmt_List, n.List)\n\n\tcase *ast.IfStmt:\n\t\tif n.Init != nil {\n\t\t\twalk(v, edge.IfStmt_Init, -1, n.Init)\n\t\t}\n\t\twalk(v, edge.IfStmt_Cond, -1, n.Cond)\n\t\twalk(v, edge.IfStmt_Body, -1, n.Body)\n\t\tif n.Else != nil {\n\t\t\twalk(v, edge.IfStmt_Else, -1, n.Else)\n\t\t}\n\n\tcase *ast.CaseClause:\n\t\twalkList(v, edge.CaseClause_List, n.List)\n\t\twalkList(v, edge.CaseClause_Body, n.Body)\n\n\tcase *ast.SwitchStmt:\n\t\tif n.Init != nil {\n\t\t\twalk(v, edge.SwitchStmt_Init, -1, n.Init)\n\t\t}\n\t\tif n.Tag != nil {\n\t\t\twalk(v, edge.SwitchStmt_Tag, -1, n.Tag)\n\t\t}\n\t\twalk(v, edge.SwitchStmt_Body, -1, n.Body)\n\n\tcase *ast.TypeSwitchStmt:\n\t\tif n.Init != nil {\n\t\t\twalk(v, edge.TypeSwitchStmt_Init, -1, n.Init)\n\t\t}\n\t\twalk(v, edge.TypeSwitchStmt_Assign, -1, n.Assign)\n\t\twalk(v, edge.TypeSwitchStmt_Body, -1, n.Body)\n\n\tcase *ast.CommClause:\n\t\tif n.Comm != nil {\n\t\t\twalk(v, edge.CommClause_Comm, -1, n.Comm)\n\t\t}\n\t\twalkList(v, edge.CommClause_Body, n.Body)\n\n\tcase *ast.SelectStmt:\n\t\twalk(v, edge.SelectStmt_Body, -1, n.Body)\n\n\tcase *ast.ForStmt:\n\t\tif n.Init != nil {\n\t\t\twalk(v, edge.ForStmt_Init, -1, n.Init)\n\t\t}\n\t\tif n.Cond != nil {\n\t\t\twalk(v, edge.ForStmt_Cond, -1, n.Cond)\n\t\t}\n\t\tif n.Post != nil {\n\t\t\twalk(v, edge.ForStmt_Post, -1, n.Post)\n\t\t}\n\t\twalk(v, edge.ForStmt_Body, -1, n.Body)\n\n\tcase *ast.RangeStmt:\n\t\tif n.Key != nil {\n\t\t\twalk(v, edge.RangeStmt_Key, -1, n.Key)\n\t\t}\n\t\tif n.Value != nil {\n\t\t\twalk(v, edge.RangeStmt_Value, -1, n.Value)\n\t\t}\n\t\twalk(v, edge.RangeStmt_X, -1, n.X)\n\t\twalk(v, edge.RangeStmt_Body, -1, n.Body)\n\n\t// Declarations\n\tcase *ast.ImportSpec:\n\t\tif n.Doc != nil {\n\t\t\twalk(v, edge.ImportSpec_Doc, -1, n.Doc)\n\t\t}\n\t\tif n.Name != nil {\n\t\t\twalk(v, edge.ImportSpec_Name, -1, n.Name)\n\t\t}\n\t\twalk(v, edge.ImportSpec_Path, -1, n.Path)\n\t\tif n.Comment != nil {\n\t\t\twalk(v, edge.ImportSpec_Comment, -1, n.Comment)\n\t\t}\n\n\tcase *ast.ValueSpec:\n\t\tif n.Doc != nil {\n\t\t\twalk(v, edge.ValueSpec_Doc, -1, n.Doc)\n\t\t}\n\t\twalkList(v, edge.ValueSpec_Names, n.Names)\n\t\tif n.Type != nil {\n\t\t\twalk(v, edge.ValueSpec_Type, -1, n.Type)\n\t\t}\n\t\twalkList(v, edge.ValueSpec_Values, n.Values)\n\t\tif n.Comment != nil {\n\t\t\twalk(v, edge.ValueSpec_Comment, -1, n.Comment)\n\t\t}\n\n\tcase *ast.TypeSpec:\n\t\tif n.Doc != nil {\n\t\t\twalk(v, edge.TypeSpec_Doc, -1, n.Doc)\n\t\t}\n\t\twalk(v, edge.TypeSpec_Name, -1, n.Name)\n\t\tif n.TypeParams != nil {\n\t\t\twalk(v, edge.TypeSpec_TypeParams, -1, n.TypeParams)\n\t\t}\n\t\twalk(v, edge.TypeSpec_Type, -1, n.Type)\n\t\tif n.Comment != nil {\n\t\t\twalk(v, edge.TypeSpec_Comment, -1, n.Comment)\n\t\t}\n\n\tcase *ast.BadDecl:\n\t\t// nothing to do\n\n\tcase *ast.GenDecl:\n\t\tif n.Doc != nil {\n\t\t\twalk(v, edge.GenDecl_Doc, -1, n.Doc)\n\t\t}\n\t\twalkList(v, edge.GenDecl_Specs, n.Specs)\n\n\tcase *ast.FuncDecl:\n\t\tif n.Doc != nil {\n\t\t\twalk(v, edge.FuncDecl_Doc, -1, n.Doc)\n\t\t}\n\t\tif n.Recv != nil {\n\t\t\twalk(v, edge.FuncDecl_Recv, -1, n.Recv)\n\t\t}\n\t\twalk(v, edge.FuncDecl_Name, -1, n.Name)\n\t\twalk(v, edge.FuncDecl_Type, -1, n.Type)\n\t\tif n.Body != nil {\n\t\t\twalk(v, edge.FuncDecl_Body, -1, n.Body)\n\t\t}\n\n\tcase *ast.File:\n\t\tif n.Doc != nil {\n\t\t\twalk(v, edge.File_Doc, -1, n.Doc)\n\t\t}\n\t\twalk(v, edge.File_Name, -1, n.Name)\n\t\twalkList(v, edge.File_Decls, n.Decls)\n\t\t// don't walk n.Comments - they have been\n\t\t// visited already through the individual\n\t\t// nodes\n\n\tdefault:\n\t\t// (includes *ast.Package)\n\t\tpanic(fmt.Sprintf(\"Walk: unexpected node type %T\", n))\n\t}\n\n\tv.pop(node)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/go/gcexportdata/gcexportdata.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package gcexportdata provides functions for reading and writing\n// export data, which is a serialized description of the API of a Go\n// package including the names, kinds, types, and locations of all\n// exported declarations.\n//\n// The standard Go compiler (cmd/compile) writes an export data file\n// for each package it compiles, which it later reads when compiling\n// packages that import the earlier one. The compiler must thus\n// contain logic to both write and read export data.\n// (See the \"Export\" section in the cmd/compile/README file.)\n//\n// The [Read] function in this package can read files produced by the\n// compiler, producing [go/types] data structures. As a matter of\n// policy, Read supports export data files produced by only the last\n// two Go releases plus tip; see https://go.dev/issue/68898. The\n// export data files produced by the compiler contain additional\n// details related to generics, inlining, and other optimizations that\n// cannot be decoded by the [Read] function.\n//\n// In files written by the compiler, the export data is not at the\n// start of the file. Before calling Read, use [NewReader] to locate\n// the desired portion of the file.\n//\n// The [Write] function in this package encodes the exported API of a\n// Go package ([types.Package]) as a file. Such files can be later\n// decoded by Read, but cannot be consumed by the compiler.\n//\n// # Future changes\n//\n// Although Read supports the formats written by both Write and the\n// compiler, the two are quite different, and there is an open\n// proposal (https://go.dev/issue/69491) to separate these APIs.\n//\n// Under that proposal, this package would ultimately provide only the\n// Read operation for compiler export data, which must be defined in\n// this module (golang.org/x/tools), not in the standard library, to\n// avoid version skew for developer tools that need to read compiler\n// export data both before and after a Go release, such as from Go\n// 1.23 to Go 1.24. Because this package lives in the tools module,\n// clients can update their version of the module some time before the\n// Go 1.24 release and rebuild and redeploy their tools, which will\n// then be able to consume both Go 1.23 and Go 1.24 export data files,\n// so they will work before and after the Go update. (See discussion\n// at https://go.dev/issue/15651.)\n//\n// The operations to import and export [go/types] data structures\n// would be defined in the go/types package as Import and Export.\n// [Write] would (eventually) delegate to Export,\n// and [Read], when it detects a file produced by Export,\n// would delegate to Import.\n//\n// # Deprecations\n//\n// The [NewImporter] and [Find] functions are deprecated and should\n// not be used in new code. The [WriteBundle] and [ReadBundle]\n// functions are experimental, and there is an open proposal to\n// deprecate them (https://go.dev/issue/69573).\npackage gcexportdata\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"go/token\"\n\t\"go/types\"\n\t\"io\"\n\t\"os/exec\"\n\n\t\"golang.org/x/tools/internal/gcimporter\"\n)\n\n// Find returns the name of an object (.o) or archive (.a) file\n// containing type information for the specified import path,\n// using the go command.\n// If no file was found, an empty filename is returned.\n//\n// A relative srcDir is interpreted relative to the current working directory.\n//\n// Find also returns the package's resolved (canonical) import path,\n// reflecting the effects of srcDir and vendoring on importPath.\n//\n// Deprecated: Use the higher-level API in golang.org/x/tools/go/packages,\n// which is more efficient.\nfunc Find(importPath, srcDir string) (filename, path string) {\n\tcmd := exec.Command(\"go\", \"list\", \"-json\", \"-export\", \"--\", importPath)\n\tcmd.Dir = srcDir\n\tout, err := cmd.Output()\n\tif err != nil {\n\t\treturn \"\", \"\"\n\t}\n\tvar data struct {\n\t\tImportPath string\n\t\tExport     string\n\t}\n\tjson.Unmarshal(out, &data)\n\treturn data.Export, data.ImportPath\n}\n\n// NewReader returns a reader for the export data section of an object\n// (.o) or archive (.a) file read from r.  The new reader may provide\n// additional trailing data beyond the end of the export data.\nfunc NewReader(r io.Reader) (io.Reader, error) {\n\tbuf := bufio.NewReader(r)\n\tsize, err := gcimporter.FindExportData(buf)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// We were given an archive and found the __.PKGDEF in it.\n\t// This tells us the size of the export data, and we don't\n\t// need to return the entire file.\n\treturn &io.LimitedReader{\n\t\tR: buf,\n\t\tN: size,\n\t}, nil\n}\n\n// readAll works the same way as io.ReadAll, but avoids allocations and copies\n// by preallocating a byte slice of the necessary size if the size is known up\n// front. This is always possible when the input is an archive. In that case,\n// NewReader will return the known size using an io.LimitedReader.\nfunc readAll(r io.Reader) ([]byte, error) {\n\tif lr, ok := r.(*io.LimitedReader); ok {\n\t\tdata := make([]byte, lr.N)\n\t\t_, err := io.ReadFull(lr, data)\n\t\treturn data, err\n\t}\n\treturn io.ReadAll(r)\n}\n\n// Read reads export data from in, decodes it, and returns type\n// information for the package.\n//\n// Read is capable of reading export data produced by [Write] at the\n// same source code version, or by the last two Go releases (plus tip)\n// of the standard Go compiler. Reading files from older compilers may\n// produce an error.\n//\n// The package path (effectively its linker symbol prefix) is\n// specified by path, since unlike the package name, this information\n// may not be recorded in the export data.\n//\n// File position information is added to fset.\n//\n// Read may inspect and add to the imports map to ensure that references\n// within the export data to other packages are consistent.  The caller\n// must ensure that imports[path] does not exist, or exists but is\n// incomplete (see types.Package.Complete), and Read inserts the\n// resulting package into this map entry.\n//\n// On return, the state of the reader is undefined.\nfunc Read(in io.Reader, fset *token.FileSet, imports map[string]*types.Package, path string) (*types.Package, error) {\n\tdata, err := readAll(in)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"reading export data for %q: %v\", path, err)\n\t}\n\n\tif bytes.HasPrefix(data, []byte(\"!<arch>\")) {\n\t\treturn nil, fmt.Errorf(\"can't read export data for %q directly from an archive file (call gcexportdata.NewReader first to extract export data)\", path)\n\t}\n\n\t// The indexed export format starts with an 'i'; the older\n\t// binary export format starts with a 'c', 'd', or 'v'\n\t// (from \"version\"). Select appropriate importer.\n\tif len(data) > 0 {\n\t\tswitch data[0] {\n\t\tcase 'v', 'c', 'd':\n\t\t\t// binary, produced by cmd/compile till go1.10\n\t\t\treturn nil, fmt.Errorf(\"binary (%c) import format is no longer supported\", data[0])\n\n\t\tcase 'i':\n\t\t\t// indexed, produced by cmd/compile till go1.19,\n\t\t\t// and also by [Write].\n\t\t\t//\n\t\t\t// If proposal #69491 is accepted, go/types\n\t\t\t// serialization will be implemented by\n\t\t\t// types.Export, to which Write would eventually\n\t\t\t// delegate (explicitly dropping any pretence at\n\t\t\t// inter-version Write-Read compatibility).\n\t\t\t// This [Read] function would delegate to types.Import\n\t\t\t// when it detects that the file was produced by Export.\n\t\t\t_, pkg, err := gcimporter.IImportData(fset, imports, data[1:], path)\n\t\t\treturn pkg, err\n\n\t\tcase 'u':\n\t\t\t// unified, produced by cmd/compile since go1.20\n\t\t\t_, pkg, err := gcimporter.UImportData(fset, imports, data[1:], path)\n\t\t\treturn pkg, err\n\n\t\tdefault:\n\t\t\tl := min(len(data), 10)\n\t\t\treturn nil, fmt.Errorf(\"unexpected export data with prefix %q for path %s\", string(data[:l]), path)\n\t\t}\n\t}\n\treturn nil, fmt.Errorf(\"empty export data for %s\", path)\n}\n\n// Write writes encoded type information for the specified package to out.\n// The FileSet provides file position information for named objects.\nfunc Write(out io.Writer, fset *token.FileSet, pkg *types.Package) error {\n\tif _, err := io.WriteString(out, \"i\"); err != nil {\n\t\treturn err\n\t}\n\treturn gcimporter.IExportData(out, fset, pkg)\n}\n\n// ReadBundle reads an export bundle from in, decodes it, and returns type\n// information for the packages.\n// File position information is added to fset.\n//\n// ReadBundle may inspect and add to the imports map to ensure that references\n// within the export bundle to other packages are consistent.\n//\n// On return, the state of the reader is undefined.\n//\n// Experimental: This API is experimental and may change in the future.\nfunc ReadBundle(in io.Reader, fset *token.FileSet, imports map[string]*types.Package) ([]*types.Package, error) {\n\tdata, err := readAll(in)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"reading export bundle: %v\", err)\n\t}\n\treturn gcimporter.IImportBundle(fset, imports, data)\n}\n\n// WriteBundle writes encoded type information for the specified packages to out.\n// The FileSet provides file position information for named objects.\n//\n// Experimental: This API is experimental and may change in the future.\nfunc WriteBundle(out io.Writer, fset *token.FileSet, pkgs []*types.Package) error {\n\treturn gcimporter.IExportBundle(out, fset, pkgs)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/go/gcexportdata/importer.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage gcexportdata\n\nimport (\n\t\"fmt\"\n\t\"go/token\"\n\t\"go/types\"\n\t\"os\"\n)\n\n// NewImporter returns a new instance of the types.Importer interface\n// that reads type information from export data files written by gc.\n// The Importer also satisfies types.ImporterFrom.\n//\n// Export data files are located using \"go build\" workspace conventions\n// and the build.Default context.\n//\n// Use this importer instead of go/importer.For(\"gc\", ...) to avoid the\n// version-skew problems described in the documentation of this package,\n// or to control the FileSet or access the imports map populated during\n// package loading.\n//\n// Deprecated: Use the higher-level API in golang.org/x/tools/go/packages,\n// which is more efficient.\nfunc NewImporter(fset *token.FileSet, imports map[string]*types.Package) types.ImporterFrom {\n\treturn importer{fset, imports}\n}\n\ntype importer struct {\n\tfset    *token.FileSet\n\timports map[string]*types.Package\n}\n\nfunc (imp importer) Import(importPath string) (*types.Package, error) {\n\treturn imp.ImportFrom(importPath, \"\", 0)\n}\n\nfunc (imp importer) ImportFrom(importPath, srcDir string, mode types.ImportMode) (_ *types.Package, err error) {\n\tfilename, path := Find(importPath, srcDir)\n\tif filename == \"\" {\n\t\tif importPath == \"unsafe\" {\n\t\t\t// Even for unsafe, call Find first in case\n\t\t\t// the package was vendored.\n\t\t\treturn types.Unsafe, nil\n\t\t}\n\t\treturn nil, fmt.Errorf(\"can't find import: %s\", importPath)\n\t}\n\n\tif pkg, ok := imp.imports[path]; ok && pkg.Complete() {\n\t\treturn pkg, nil // cache hit\n\t}\n\n\t// open file\n\tf, err := os.Open(filename)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer func() {\n\t\tf.Close()\n\t\tif err != nil {\n\t\t\t// add file name to error\n\t\t\terr = fmt.Errorf(\"reading export data: %s: %v\", filename, err)\n\t\t}\n\t}()\n\n\tr, err := NewReader(f)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn Read(r, imp.fset, imp.imports, path)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/go/packages/doc.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n/*\nPackage packages loads Go packages for inspection and analysis.\n\nThe [Load] function takes as input a list of patterns and returns a\nlist of [Package] values describing individual packages matched by those\npatterns.\nA [Config] specifies configuration options, the most important of which is\nthe [LoadMode], which controls the amount of detail in the loaded packages.\n\nLoad passes most patterns directly to the underlying build tool.\nThe default build tool is the go command.\nIts supported patterns are described at\nhttps://pkg.go.dev/cmd/go#hdr-Package_lists_and_patterns.\nOther build systems may be supported by providing a \"driver\";\nsee [The driver protocol].\n\nAll patterns with the prefix \"query=\", where query is a\nnon-empty string of letters from [a-z], are reserved and may be\ninterpreted as query operators.\n\nTwo query operators are currently supported: \"file\" and \"pattern\".\n\nThe query \"file=path/to/file.go\" matches the package or packages enclosing\nthe Go source file path/to/file.go.  For example \"file=~/go/src/fmt/print.go\"\nmight return the packages \"fmt\" and \"fmt [fmt.test]\".\n\nThe query \"pattern=string\" causes \"string\" to be passed directly to\nthe underlying build tool. In most cases this is unnecessary,\nbut an application can use Load(\"pattern=\" + x) as an escaping mechanism\nto ensure that x is not interpreted as a query operator if it contains '='.\n\nAll other query operators are reserved for future use and currently\ncause Load to report an error.\n\nThe Package struct provides basic information about the package, including\n\n  - ID, a unique identifier for the package in the returned set;\n  - GoFiles, the names of the package's Go source files;\n  - Imports, a map from source import strings to the Packages they name;\n  - Types, the type information for the package's exported symbols;\n  - Syntax, the parsed syntax trees for the package's source code; and\n  - TypesInfo, the result of a complete type-check of the package syntax trees.\n\n(See the documentation for type Package for the complete list of fields\nand more detailed descriptions.)\n\nFor example,\n\n\tLoad(nil, \"bytes\", \"unicode...\")\n\nreturns four Package structs describing the standard library packages\nbytes, unicode, unicode/utf16, and unicode/utf8. Note that one pattern\ncan match multiple packages and that a package might be matched by\nmultiple patterns: in general it is not possible to determine which\npackages correspond to which patterns.\n\nNote that the list returned by Load contains only the packages matched\nby the patterns. Their dependencies can be found by walking the import\ngraph using the Imports fields.\n\nThe Load function can be configured by passing a pointer to a Config as\nthe first argument. A nil Config is equivalent to the zero Config, which\ncauses Load to run in [LoadFiles] mode, collecting minimal information.\nSee the documentation for type Config for details.\n\nAs noted earlier, the Config.Mode controls the amount of detail\nreported about the loaded packages. See the documentation for type LoadMode\nfor details.\n\nMost tools should pass their command-line arguments (after any flags)\nuninterpreted to Load, so that it can interpret them\naccording to the conventions of the underlying build system.\n\nSee the Example function for typical usage.\nSee also [golang.org/x/tools/go/packages/internal/linecount]\nfor an example application.\n\n# The driver protocol\n\nLoad may be used to load Go packages even in Go projects that use\nalternative build systems, by installing an appropriate \"driver\"\nprogram for the build system and specifying its location in the\nGOPACKAGESDRIVER environment variable.\nFor example,\nhttps://github.com/bazelbuild/rules_go/wiki/Editor-and-tool-integration\nexplains how to use the driver for Bazel.\n\nThe driver program is responsible for interpreting patterns in its\npreferred notation and reporting information about the packages that\nthose patterns identify. Drivers must also support the special \"file=\"\nand \"pattern=\" patterns described above.\n\nThe patterns are provided as positional command-line arguments. A\nJSON-encoded [DriverRequest] message providing additional information\nis written to the driver's standard input. The driver must write a\nJSON-encoded [DriverResponse] message to its standard output. (This\nmessage differs from the JSON schema produced by 'go list'.)\n\nThe value of the PWD environment variable seen by the driver process\nis the preferred name of its working directory. (The working directory\nmay have other aliases due to symbolic links; see the comment on the\nDir field of [exec.Cmd] for related information.)\nWhen the driver process emits in its response the name of a file\nthat is a descendant of this directory, it must use an absolute path\nthat has the value of PWD as a prefix, to ensure that the returned\nfilenames satisfy the original query.\n*/\npackage packages // import \"golang.org/x/tools/go/packages\"\n\n/*\n\nMotivation and design considerations\n\nThe new package's design solves problems addressed by two existing\npackages: go/build, which locates and describes packages, and\ngolang.org/x/tools/go/loader, which loads, parses and type-checks them.\nThe go/build.Package structure encodes too much of the 'go build' way\nof organizing projects, leaving us in need of a data type that describes a\npackage of Go source code independent of the underlying build system.\nWe wanted something that works equally well with go build and vgo, and\nalso other build systems such as Bazel and Blaze, making it possible to\nconstruct analysis tools that work in all these environments.\nTools such as errcheck and staticcheck were essentially unavailable to\nthe Go community at Google, and some of Google's internal tools for Go\nare unavailable externally.\nThis new package provides a uniform way to obtain package metadata by\nquerying each of these build systems, optionally supporting their\npreferred command-line notations for packages, so that tools integrate\nneatly with users' build environments. The Metadata query function\nexecutes an external query tool appropriate to the current workspace.\n\nLoading packages always returns the complete import graph \"all the way down\",\neven if all you want is information about a single package, because the query\nmechanisms of all the build systems we currently support ({go,vgo} list, and\nblaze/bazel aspect-based query) cannot provide detailed information\nabout one package without visiting all its dependencies too, so there is\nno additional asymptotic cost to providing transitive information.\n(This property might not be true of a hypothetical 5th build system.)\n\nIn calls to TypeCheck, all initial packages, and any package that\ntransitively depends on one of them, must be loaded from source.\nConsider A->B->C->D->E: if A,C are initial, A,B,C must be loaded from\nsource; D may be loaded from export data, and E may not be loaded at all\n(though it's possible that D's export data mentions it, so a\ntypes.Package may be created for it and exposed.)\n\nThe old loader had a feature to suppress type-checking of function\nbodies on a per-package basis, primarily intended to reduce the work of\nobtaining type information for imported packages. Now that imports are\nsatisfied by export data, the optimization no longer seems necessary.\n\nDespite some early attempts, the old loader did not exploit export data,\ninstead always using the equivalent of WholeProgram mode. This was due\nto the complexity of mixing source and export data packages (now\nresolved by the upward traversal mentioned above), and because export data\nfiles were nearly always missing or stale. Now that 'go build' supports\ncaching, all the underlying build systems can guarantee to produce\nexport data in a reasonable (amortized) time.\n\nTest \"main\" packages synthesized by the build system are now reported as\nfirst-class packages, avoiding the need for clients (such as go/ssa) to\nreinvent this generation logic.\n\nOne way in which go/packages is simpler than the old loader is in its\ntreatment of in-package tests. In-package tests are packages that\nconsist of all the files of the library under test, plus the test files.\nThe old loader constructed in-package tests by a two-phase process of\nmutation called \"augmentation\": first it would construct and type check\nall the ordinary library packages and type-check the packages that\ndepend on them; then it would add more (test) files to the package and\ntype-check again. This two-phase approach had four major problems:\n1) in processing the tests, the loader modified the library package,\n   leaving no way for a client application to see both the test\n   package and the library package; one would mutate into the other.\n2) because test files can declare additional methods on types defined in\n   the library portion of the package, the dispatch of method calls in\n   the library portion was affected by the presence of the test files.\n   This should have been a clue that the packages were logically\n   different.\n3) this model of \"augmentation\" assumed at most one in-package test\n   per library package, which is true of projects using 'go build',\n   but not other build systems.\n4) because of the two-phase nature of test processing, all packages that\n   import the library package had to be processed before augmentation,\n   forcing a \"one-shot\" API and preventing the client from calling Load\n   in several times in sequence as is now possible in WholeProgram mode.\n   (TypeCheck mode has a similar one-shot restriction for a different reason.)\n\nEarly drafts of this package supported \"multi-shot\" operation.\nAlthough it allowed clients to make a sequence of calls (or concurrent\ncalls) to Load, building up the graph of Packages incrementally,\nit was of marginal value: it complicated the API\n(since it allowed some options to vary across calls but not others),\nit complicated the implementation,\nit cannot be made to work in Types mode, as explained above,\nand it was less efficient than making one combined call (when this is possible).\nAmong the clients we have inspected, none made multiple calls to load\nbut could not be easily and satisfactorily modified to make only a single call.\nHowever, applications changes may be required.\nFor example, the ssadump command loads the user-specified packages\nand in addition the runtime package.  It is tempting to simply append\n\"runtime\" to the user-provided list, but that does not work if the user\nspecified an ad-hoc package such as [a.go b.go].\nInstead, ssadump no longer requests the runtime package,\nbut seeks it among the dependencies of the user-specified packages,\nand emits an error if it is not found.\n\nQuestions & Tasks\n\n- Add GOARCH/GOOS?\n  They are not portable concepts, but could be made portable.\n  Our goal has been to allow users to express themselves using the conventions\n  of the underlying build system: if the build system honors GOARCH\n  during a build and during a metadata query, then so should\n  applications built atop that query mechanism.\n  Conversely, if the target architecture of the build is determined by\n  command-line flags, the application can pass the relevant\n  flags through to the build system using a command such as:\n    myapp -query_flag=\"--cpu=amd64\" -query_flag=\"--os=darwin\"\n  However, this approach is low-level, unwieldy, and non-portable.\n  GOOS and GOARCH seem important enough to warrant a dedicated option.\n\n- How should we handle partial failures such as a mixture of good and\n  malformed patterns, existing and non-existent packages, successful and\n  failed builds, import failures, import cycles, and so on, in a call to\n  Load?\n\n- Support bazel, blaze, and go1.10 list, not just go1.11 list.\n\n- Handle (and test) various partial success cases, e.g.\n  a mixture of good packages and:\n  invalid patterns\n  nonexistent packages\n  empty packages\n  packages with malformed package or import declarations\n  unreadable files\n  import cycles\n  other parse errors\n  type errors\n  Make sure we record errors at the correct place in the graph.\n\n- Missing packages among initial arguments are not reported.\n  Return bogus packages for them, like golist does.\n\n- \"undeclared name\" errors (for example) are reported out of source file\n  order. I suspect this is due to the breadth-first resolution now used\n  by go/types. Is that a bug? Discuss with gri.\n\n*/\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/go/packages/external.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage packages\n\n// This file defines the protocol that enables an external \"driver\"\n// tool to supply package metadata in place of 'go list'.\n\nimport (\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"os\"\n\t\"os/exec\"\n\t\"slices\"\n\t\"strings\"\n)\n\n// DriverRequest defines the schema of a request for package metadata\n// from an external driver program. The JSON-encoded DriverRequest\n// message is provided to the driver program's standard input. The\n// query patterns are provided as command-line arguments.\n//\n// See the package documentation for an overview.\ntype DriverRequest struct {\n\tMode LoadMode `json:\"mode\"`\n\n\t// Env specifies the environment the underlying build system should be run in.\n\tEnv []string `json:\"env\"`\n\n\t// BuildFlags are flags that should be passed to the underlying build system.\n\tBuildFlags []string `json:\"build_flags\"`\n\n\t// Tests specifies whether the patterns should also return test packages.\n\tTests bool `json:\"tests\"`\n\n\t// Overlay maps file paths (relative to the driver's working directory)\n\t// to the contents of overlay files (see Config.Overlay).\n\tOverlay map[string][]byte `json:\"overlay\"`\n}\n\n// DriverResponse defines the schema of a response from an external\n// driver program, providing the results of a query for package\n// metadata. The driver program must write a JSON-encoded\n// DriverResponse message to its standard output.\n//\n// See the package documentation for an overview.\ntype DriverResponse struct {\n\t// NotHandled is returned if the request can't be handled by the current\n\t// driver. If an external driver returns a response with NotHandled, the\n\t// rest of the DriverResponse is ignored, and go/packages will fallback\n\t// to the next driver. If go/packages is extended in the future to support\n\t// lists of multiple drivers, go/packages will fall back to the next driver.\n\tNotHandled bool\n\n\t// Compiler and Arch are the arguments pass of types.SizesFor\n\t// to get a types.Sizes to use when type checking.\n\tCompiler string\n\tArch     string\n\n\t// Roots is the set of package IDs that make up the root packages.\n\t// We have to encode this separately because when we encode a single package\n\t// we cannot know if it is one of the roots as that requires knowledge of the\n\t// graph it is part of.\n\tRoots []string `json:\",omitempty\"`\n\n\t// Packages is the full set of packages in the graph.\n\t// The packages are not connected into a graph.\n\t// The Imports if populated will be stubs that only have their ID set.\n\t// Imports will be connected and then type and syntax information added in a\n\t// later pass (see refine).\n\tPackages []*Package\n\n\t// GoVersion is the minor version number used by the driver\n\t// (e.g. the go command on the PATH) when selecting .go files.\n\t// Zero means unknown.\n\tGoVersion int\n}\n\n// driver is the type for functions that query the build system for the\n// packages named by the patterns.\ntype driver func(cfg *Config, patterns []string) (*DriverResponse, error)\n\n// findExternalDriver returns the file path of a tool that supplies\n// the build system package structure, or \"\" if not found.\n// If GOPACKAGESDRIVER is set in the environment findExternalTool returns its\n// value, otherwise it searches for a binary named gopackagesdriver on the PATH.\nfunc findExternalDriver(cfg *Config) driver {\n\tconst toolPrefix = \"GOPACKAGESDRIVER=\"\n\ttool := \"\"\n\tfor _, env := range cfg.Env {\n\t\tif val, ok := strings.CutPrefix(env, toolPrefix); ok {\n\t\t\ttool = val\n\t\t}\n\t}\n\tif tool != \"\" && tool == \"off\" {\n\t\treturn nil\n\t}\n\tif tool == \"\" {\n\t\tvar err error\n\t\ttool, err = exec.LookPath(\"gopackagesdriver\")\n\t\tif err != nil {\n\t\t\treturn nil\n\t\t}\n\t}\n\treturn func(cfg *Config, patterns []string) (*DriverResponse, error) {\n\t\treq, err := json.Marshal(DriverRequest{\n\t\t\tMode:       cfg.Mode,\n\t\t\tEnv:        cfg.Env,\n\t\t\tBuildFlags: cfg.BuildFlags,\n\t\t\tTests:      cfg.Tests,\n\t\t\tOverlay:    cfg.Overlay,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed to encode message to driver tool: %v\", err)\n\t\t}\n\n\t\tbuf := new(bytes.Buffer)\n\t\tstderr := new(bytes.Buffer)\n\t\tcmd := exec.CommandContext(cfg.Context, tool, patterns...)\n\t\tcmd.Dir = cfg.Dir\n\t\t// The cwd gets resolved to the real path. On Darwin, where\n\t\t// /tmp is a symlink, this breaks anything that expects the\n\t\t// working directory to keep the original path, including the\n\t\t// go command when dealing with modules.\n\t\t//\n\t\t// os.Getwd stdlib has a special feature where if the\n\t\t// cwd and the PWD are the same node then it trusts\n\t\t// the PWD, so by setting it in the env for the child\n\t\t// process we fix up all the paths returned by the go\n\t\t// command.\n\t\t//\n\t\t// (See similar trick in Invocation.run in ../../internal/gocommand/invoke.go)\n\t\tcmd.Env = append(slices.Clip(cfg.Env), \"PWD=\"+cfg.Dir)\n\t\tcmd.Stdin = bytes.NewReader(req)\n\t\tcmd.Stdout = buf\n\t\tcmd.Stderr = stderr\n\n\t\tif err := cmd.Run(); err != nil {\n\t\t\treturn nil, fmt.Errorf(\"%v: %v: %s\", tool, err, cmd.Stderr)\n\t\t}\n\t\tif len(stderr.Bytes()) != 0 && os.Getenv(\"GOPACKAGESPRINTDRIVERERRORS\") != \"\" {\n\t\t\tfmt.Fprintf(os.Stderr, \"%s stderr: <<%s>>\\n\", cmdDebugStr(cmd), stderr)\n\t\t}\n\n\t\tvar response DriverResponse\n\t\tif err := json.Unmarshal(buf.Bytes(), &response); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn &response, nil\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/go/packages/golist.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage packages\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"log\"\n\t\"os\"\n\t\"os/exec\"\n\t\"path\"\n\t\"path/filepath\"\n\t\"reflect\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\t\"unicode\"\n\n\t\"golang.org/x/tools/internal/gocommand\"\n\t\"golang.org/x/tools/internal/packagesinternal\"\n)\n\n// debug controls verbose logging.\nvar debug, _ = strconv.ParseBool(os.Getenv(\"GOPACKAGESDEBUG\"))\n\n// A goTooOldError reports that the go command\n// found by exec.LookPath is too old to use the new go list behavior.\ntype goTooOldError struct {\n\terror\n}\n\n// responseDeduper wraps a DriverResponse, deduplicating its contents.\ntype responseDeduper struct {\n\tseenRoots    map[string]bool\n\tseenPackages map[string]*Package\n\tdr           *DriverResponse\n}\n\nfunc newDeduper() *responseDeduper {\n\treturn &responseDeduper{\n\t\tdr:           &DriverResponse{},\n\t\tseenRoots:    map[string]bool{},\n\t\tseenPackages: map[string]*Package{},\n\t}\n}\n\n// addAll fills in r with a DriverResponse.\nfunc (r *responseDeduper) addAll(dr *DriverResponse) {\n\tfor _, pkg := range dr.Packages {\n\t\tr.addPackage(pkg)\n\t}\n\tfor _, root := range dr.Roots {\n\t\tr.addRoot(root)\n\t}\n\tr.dr.GoVersion = dr.GoVersion\n}\n\nfunc (r *responseDeduper) addPackage(p *Package) {\n\tif r.seenPackages[p.ID] != nil {\n\t\treturn\n\t}\n\tr.seenPackages[p.ID] = p\n\tr.dr.Packages = append(r.dr.Packages, p)\n}\n\nfunc (r *responseDeduper) addRoot(id string) {\n\tif r.seenRoots[id] {\n\t\treturn\n\t}\n\tr.seenRoots[id] = true\n\tr.dr.Roots = append(r.dr.Roots, id)\n}\n\ntype golistState struct {\n\tcfg *Config\n\tctx context.Context\n\n\trunner *gocommand.Runner\n\n\t// overlay is the JSON file that encodes the Config.Overlay\n\t// mapping, used by 'go list -overlay=...'.\n\toverlay string\n\n\tenvOnce    sync.Once\n\tgoEnvError error\n\tgoEnv      map[string]string\n\n\trootsOnce     sync.Once\n\trootDirsError error\n\trootDirs      map[string]string\n\n\tgoVersionOnce  sync.Once\n\tgoVersionError error\n\tgoVersion      int // The X in Go 1.X.\n\n\t// vendorDirs caches the (non)existence of vendor directories.\n\tvendorDirs map[string]bool\n}\n\n// getEnv returns Go environment variables. Only specific variables are\n// populated -- computing all of them is slow.\nfunc (state *golistState) getEnv() (map[string]string, error) {\n\tstate.envOnce.Do(func() {\n\t\tvar b *bytes.Buffer\n\t\tb, state.goEnvError = state.invokeGo(\"env\", \"-json\", \"GOMOD\", \"GOPATH\")\n\t\tif state.goEnvError != nil {\n\t\t\treturn\n\t\t}\n\n\t\tstate.goEnv = make(map[string]string)\n\t\tdecoder := json.NewDecoder(b)\n\t\tif state.goEnvError = decoder.Decode(&state.goEnv); state.goEnvError != nil {\n\t\t\treturn\n\t\t}\n\t})\n\treturn state.goEnv, state.goEnvError\n}\n\n// mustGetEnv is a convenience function that can be used if getEnv has already succeeded.\nfunc (state *golistState) mustGetEnv() map[string]string {\n\tenv, err := state.getEnv()\n\tif err != nil {\n\t\tpanic(fmt.Sprintf(\"mustGetEnv: %v\", err))\n\t}\n\treturn env\n}\n\n// goListDriver uses the go list command to interpret the patterns and produce\n// the build system package structure.\n// See driver for more details.\n//\n// overlay is the JSON file that encodes the cfg.Overlay\n// mapping, used by 'go list -overlay=...'\nfunc goListDriver(cfg *Config, runner *gocommand.Runner, overlay string, patterns []string) (_ *DriverResponse, err error) {\n\t// Make sure that any asynchronous go commands are killed when we return.\n\tparentCtx := cfg.Context\n\tif parentCtx == nil {\n\t\tparentCtx = context.Background()\n\t}\n\tctx, cancel := context.WithCancel(parentCtx)\n\tdefer cancel()\n\n\tresponse := newDeduper()\n\n\tstate := &golistState{\n\t\tcfg:        cfg,\n\t\tctx:        ctx,\n\t\tvendorDirs: map[string]bool{},\n\t\toverlay:    overlay,\n\t\trunner:     runner,\n\t}\n\n\t// Fill in response.Sizes asynchronously if necessary.\n\tif cfg.Mode&NeedTypesSizes != 0 || cfg.Mode&(NeedTypes|NeedTypesInfo) != 0 {\n\t\terrCh := make(chan error)\n\t\tgo func() {\n\t\t\tcompiler, arch, err := getSizesForArgs(ctx, state.cfgInvocation(), runner)\n\t\t\tresponse.dr.Compiler = compiler\n\t\t\tresponse.dr.Arch = arch\n\t\t\terrCh <- err\n\t\t}()\n\t\tdefer func() {\n\t\t\tif sizesErr := <-errCh; sizesErr != nil {\n\t\t\t\terr = sizesErr\n\t\t\t}\n\t\t}()\n\t}\n\n\t// Determine files requested in contains patterns\n\tvar containFiles []string\n\trestPatterns := make([]string, 0, len(patterns))\n\t// Extract file= and other [querytype]= patterns. Report an error if querytype\n\t// doesn't exist.\nextractQueries:\n\tfor _, pattern := range patterns {\n\t\teqidx := strings.Index(pattern, \"=\")\n\t\tif eqidx < 0 {\n\t\t\trestPatterns = append(restPatterns, pattern)\n\t\t} else {\n\t\t\tquery, value := pattern[:eqidx], pattern[eqidx+len(\"=\"):]\n\t\t\tswitch query {\n\t\t\tcase \"file\":\n\t\t\t\tcontainFiles = append(containFiles, value)\n\t\t\tcase \"pattern\":\n\t\t\t\trestPatterns = append(restPatterns, value)\n\t\t\tcase \"\": // not a reserved query\n\t\t\t\trestPatterns = append(restPatterns, pattern)\n\t\t\tdefault:\n\t\t\t\tfor _, rune := range query {\n\t\t\t\t\tif rune < 'a' || rune > 'z' { // not a reserved query\n\t\t\t\t\t\trestPatterns = append(restPatterns, pattern)\n\t\t\t\t\t\tcontinue extractQueries\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Reject all other patterns containing \"=\"\n\t\t\t\treturn nil, fmt.Errorf(\"invalid query type %q in query pattern %q\", query, pattern)\n\t\t\t}\n\t\t}\n\t}\n\n\t// See if we have any patterns to pass through to go list. Zero initial\n\t// patterns also requires a go list call, since it's the equivalent of\n\t// \".\".\n\tif len(restPatterns) > 0 || len(patterns) == 0 {\n\t\tdr, err := state.createDriverResponse(restPatterns...)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tresponse.addAll(dr)\n\t}\n\n\tif len(containFiles) != 0 {\n\t\tif err := state.runContainsQueries(response, containFiles); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\t// (We may yet return an error due to defer.)\n\treturn response.dr, nil\n}\n\n// abs returns an absolute representation of path, based on cfg.Dir.\nfunc (cfg *Config) abs(path string) (string, error) {\n\tif filepath.IsAbs(path) {\n\t\treturn path, nil\n\t}\n\t// In case cfg.Dir is relative, pass it to filepath.Abs.\n\treturn filepath.Abs(filepath.Join(cfg.Dir, path))\n}\n\nfunc (state *golistState) runContainsQueries(response *responseDeduper, queries []string) error {\n\tfor _, query := range queries {\n\t\t// TODO(matloob): Do only one query per directory.\n\t\tfdir := filepath.Dir(query)\n\t\t// Pass absolute path of directory to go list so that it knows to treat it as a directory,\n\t\t// not a package path.\n\t\tpattern, err := state.cfg.abs(fdir)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"could not determine absolute path of file= query path %q: %v\", query, err)\n\t\t}\n\t\tdirResponse, err := state.createDriverResponse(pattern)\n\n\t\t// If there was an error loading the package, or no packages are returned,\n\t\t// or the package is returned with errors, try to load the file as an\n\t\t// ad-hoc package.\n\t\t// Usually the error will appear in a returned package, but may not if we're\n\t\t// in module mode and the ad-hoc is located outside a module.\n\t\tif err != nil || len(dirResponse.Packages) == 0 || len(dirResponse.Packages) == 1 && len(dirResponse.Packages[0].GoFiles) == 0 &&\n\t\t\tlen(dirResponse.Packages[0].Errors) == 1 {\n\t\t\tvar queryErr error\n\t\t\tif dirResponse, queryErr = state.adhocPackage(pattern, query); queryErr != nil {\n\t\t\t\treturn err // return the original error\n\t\t\t}\n\t\t}\n\t\tisRoot := make(map[string]bool, len(dirResponse.Roots))\n\t\tfor _, root := range dirResponse.Roots {\n\t\t\tisRoot[root] = true\n\t\t}\n\t\tfor _, pkg := range dirResponse.Packages {\n\t\t\t// Add any new packages to the main set\n\t\t\t// We don't bother to filter packages that will be dropped by the changes of roots,\n\t\t\t// that will happen anyway during graph construction outside this function.\n\t\t\t// Over-reporting packages is not a problem.\n\t\t\tresponse.addPackage(pkg)\n\t\t\t// if the package was not a root one, it cannot have the file\n\t\t\tif !isRoot[pkg.ID] {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tfor _, pkgFile := range pkg.GoFiles {\n\t\t\t\tif filepath.Base(query) == filepath.Base(pkgFile) {\n\t\t\t\t\tresponse.addRoot(pkg.ID)\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\n// adhocPackage attempts to load or construct an ad-hoc package for a given\n// query, if the original call to the driver produced inadequate results.\nfunc (state *golistState) adhocPackage(pattern, query string) (*DriverResponse, error) {\n\tresponse, err := state.createDriverResponse(query)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\t// If we get nothing back from `go list`,\n\t// try to make this file into its own ad-hoc package.\n\t// TODO(rstambler): Should this check against the original response?\n\tif len(response.Packages) == 0 {\n\t\tresponse.Packages = append(response.Packages, &Package{\n\t\t\tID:              \"command-line-arguments\",\n\t\t\tPkgPath:         query,\n\t\t\tGoFiles:         []string{query},\n\t\t\tCompiledGoFiles: []string{query},\n\t\t\tImports:         make(map[string]*Package),\n\t\t})\n\t\tresponse.Roots = append(response.Roots, \"command-line-arguments\")\n\t}\n\t// Handle special cases.\n\tif len(response.Packages) == 1 {\n\t\t// golang/go#33482: If this is a file= query for ad-hoc packages where\n\t\t// the file only exists on an overlay, and exists outside of a module,\n\t\t// add the file to the package and remove the errors.\n\t\tif response.Packages[0].ID == \"command-line-arguments\" ||\n\t\t\tfilepath.ToSlash(response.Packages[0].PkgPath) == filepath.ToSlash(query) {\n\t\t\tif len(response.Packages[0].GoFiles) == 0 {\n\t\t\t\tfilename := filepath.Join(pattern, filepath.Base(query)) // avoid recomputing abspath\n\t\t\t\t// TODO(matloob): check if the file is outside of a root dir?\n\t\t\t\tfor path := range state.cfg.Overlay {\n\t\t\t\t\tif path == filename {\n\t\t\t\t\t\tresponse.Packages[0].Errors = nil\n\t\t\t\t\t\tresponse.Packages[0].GoFiles = []string{path}\n\t\t\t\t\t\tresponse.Packages[0].CompiledGoFiles = []string{path}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn response, nil\n}\n\n// Fields must match go list;\n// see $GOROOT/src/cmd/go/internal/load/pkg.go.\ntype jsonPackage struct {\n\tImportPath        string\n\tDir               string\n\tName              string\n\tTarget            string\n\tExport            string\n\tGoFiles           []string\n\tCompiledGoFiles   []string\n\tIgnoredGoFiles    []string\n\tIgnoredOtherFiles []string\n\tEmbedPatterns     []string\n\tEmbedFiles        []string\n\tCFiles            []string\n\tCgoFiles          []string\n\tCXXFiles          []string\n\tMFiles            []string\n\tHFiles            []string\n\tFFiles            []string\n\tSFiles            []string\n\tSwigFiles         []string\n\tSwigCXXFiles      []string\n\tSysoFiles         []string\n\tImports           []string\n\tImportMap         map[string]string\n\tDeps              []string\n\tModule            *Module\n\tTestGoFiles       []string\n\tTestImports       []string\n\tXTestGoFiles      []string\n\tXTestImports      []string\n\tForTest           string // q in a \"p [q.test]\" package, else \"\"\n\tDepOnly           bool\n\n\tError      *packagesinternal.PackageError\n\tDepsErrors []*packagesinternal.PackageError\n}\n\nfunc otherFiles(p *jsonPackage) [][]string {\n\treturn [][]string{p.CFiles, p.CXXFiles, p.MFiles, p.HFiles, p.FFiles, p.SFiles, p.SwigFiles, p.SwigCXXFiles, p.SysoFiles}\n}\n\n// createDriverResponse uses the \"go list\" command to expand the pattern\n// words and return a response for the specified packages.\nfunc (state *golistState) createDriverResponse(words ...string) (*DriverResponse, error) {\n\t// go list uses the following identifiers in ImportPath and Imports:\n\t//\n\t// \t\"p\"\t\t\t-- importable package or main (command)\n\t// \t\"q.test\"\t\t-- q's test executable\n\t// \t\"p [q.test]\"\t\t-- variant of p as built for q's test executable\n\t// \t\"q_test [q.test]\"\t-- q's external test package\n\t//\n\t// The packages p that are built differently for a test q.test\n\t// are q itself, plus any helpers used by the external test q_test,\n\t// typically including \"testing\" and all its dependencies.\n\n\t// Run \"go list\" for complete\n\t// information on the specified packages.\n\tgoVersion, err := state.getGoVersion()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tbuf, err := state.invokeGo(\"list\", golistargs(state.cfg, words, goVersion)...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tseen := make(map[string]*jsonPackage)\n\tpkgs := make(map[string]*Package)\n\tadditionalErrors := make(map[string][]Error)\n\t// Decode the JSON and convert it to Package form.\n\tresponse := &DriverResponse{\n\t\tGoVersion: goVersion,\n\t}\n\tfor dec := json.NewDecoder(buf); dec.More(); {\n\t\tp := new(jsonPackage)\n\t\tif err := dec.Decode(p); err != nil {\n\t\t\treturn nil, fmt.Errorf(\"JSON decoding failed: %v\", err)\n\t\t}\n\n\t\tif p.ImportPath == \"\" {\n\t\t\t// The documentation for go list says that “[e]rroneous packages will have\n\t\t\t// a non-empty ImportPath”. If for some reason it comes back empty, we\n\t\t\t// prefer to error out rather than silently discarding data or handing\n\t\t\t// back a package without any way to refer to it.\n\t\t\tif p.Error != nil {\n\t\t\t\treturn nil, Error{\n\t\t\t\t\tPos: p.Error.Pos,\n\t\t\t\t\tMsg: p.Error.Err,\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn nil, fmt.Errorf(\"package missing import path: %+v\", p)\n\t\t}\n\n\t\t// Work around https://golang.org/issue/33157:\n\t\t// go list -e, when given an absolute path, will find the package contained at\n\t\t// that directory. But when no package exists there, it will return a fake package\n\t\t// with an error and the ImportPath set to the absolute path provided to go list.\n\t\t// Try to convert that absolute path to what its package path would be if it's\n\t\t// contained in a known module or GOPATH entry. This will allow the package to be\n\t\t// properly \"reclaimed\" when overlays are processed.\n\t\tif filepath.IsAbs(p.ImportPath) && p.Error != nil {\n\t\t\tpkgPath, ok, err := state.getPkgPath(p.ImportPath)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tif ok {\n\t\t\t\tp.ImportPath = pkgPath\n\t\t\t}\n\t\t}\n\n\t\tif old, found := seen[p.ImportPath]; found {\n\t\t\t// If one version of the package has an error, and the other doesn't, assume\n\t\t\t// that this is a case where go list is reporting a fake dependency variant\n\t\t\t// of the imported package: When a package tries to invalidly import another\n\t\t\t// package, go list emits a variant of the imported package (with the same\n\t\t\t// import path, but with an error on it, and the package will have a\n\t\t\t// DepError set on it). An example of when this can happen is for imports of\n\t\t\t// main packages: main packages can not be imported, but they may be\n\t\t\t// separately matched and listed by another pattern.\n\t\t\t// See golang.org/issue/36188 for more details.\n\n\t\t\t// The plan is that eventually, hopefully in Go 1.15, the error will be\n\t\t\t// reported on the importing package rather than the duplicate \"fake\"\n\t\t\t// version of the imported package. Once all supported versions of Go\n\t\t\t// have the new behavior this logic can be deleted.\n\t\t\t// TODO(matloob): delete the workaround logic once all supported versions of\n\t\t\t// Go return the errors on the proper package.\n\n\t\t\t// There should be exactly one version of a package that doesn't have an\n\t\t\t// error.\n\t\t\tif old.Error == nil && p.Error == nil {\n\t\t\t\tif !reflect.DeepEqual(p, old) {\n\t\t\t\t\treturn nil, fmt.Errorf(\"internal error: go list gives conflicting information for package %v\", p.ImportPath)\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// Determine if this package's error needs to be bubbled up.\n\t\t\t// This is a hack, and we expect for go list to eventually set the error\n\t\t\t// on the package.\n\t\t\tif old.Error != nil {\n\t\t\t\tvar errkind string\n\t\t\t\tif strings.Contains(old.Error.Err, \"not an importable package\") {\n\t\t\t\t\terrkind = \"not an importable package\"\n\t\t\t\t} else if strings.Contains(old.Error.Err, \"use of internal package\") && strings.Contains(old.Error.Err, \"not allowed\") {\n\t\t\t\t\terrkind = \"use of internal package not allowed\"\n\t\t\t\t}\n\t\t\t\tif errkind != \"\" {\n\t\t\t\t\tif len(old.Error.ImportStack) < 1 {\n\t\t\t\t\t\treturn nil, fmt.Errorf(`internal error: go list gave a %q error with empty import stack`, errkind)\n\t\t\t\t\t}\n\t\t\t\t\timportingPkg := old.Error.ImportStack[len(old.Error.ImportStack)-1]\n\t\t\t\t\tif importingPkg == old.ImportPath {\n\t\t\t\t\t\t// Using an older version of Go which put this package itself on top of import\n\t\t\t\t\t\t// stack, instead of the importer. Look for importer in second from top\n\t\t\t\t\t\t// position.\n\t\t\t\t\t\tif len(old.Error.ImportStack) < 2 {\n\t\t\t\t\t\t\treturn nil, fmt.Errorf(`internal error: go list gave a %q error with an import stack without importing package`, errkind)\n\t\t\t\t\t\t}\n\t\t\t\t\t\timportingPkg = old.Error.ImportStack[len(old.Error.ImportStack)-2]\n\t\t\t\t\t}\n\t\t\t\t\tadditionalErrors[importingPkg] = append(additionalErrors[importingPkg], Error{\n\t\t\t\t\t\tPos:  old.Error.Pos,\n\t\t\t\t\t\tMsg:  old.Error.Err,\n\t\t\t\t\t\tKind: ListError,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Make sure that if there's a version of the package without an error,\n\t\t\t// that's the one reported to the user.\n\t\t\tif old.Error == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// This package will replace the old one at the end of the loop.\n\t\t}\n\t\tseen[p.ImportPath] = p\n\n\t\tpkg := &Package{\n\t\t\tName:            p.Name,\n\t\t\tID:              p.ImportPath,\n\t\t\tDir:             p.Dir,\n\t\t\tTarget:          p.Target,\n\t\t\tGoFiles:         absJoin(p.Dir, p.GoFiles, p.CgoFiles),\n\t\t\tCompiledGoFiles: absJoin(p.Dir, p.CompiledGoFiles),\n\t\t\tOtherFiles:      absJoin(p.Dir, otherFiles(p)...),\n\t\t\tEmbedFiles:      absJoin(p.Dir, p.EmbedFiles),\n\t\t\tEmbedPatterns:   absJoin(p.Dir, p.EmbedPatterns),\n\t\t\tIgnoredFiles:    absJoin(p.Dir, p.IgnoredGoFiles, p.IgnoredOtherFiles),\n\t\t\tForTest:         p.ForTest,\n\t\t\tdepsErrors:      p.DepsErrors,\n\t\t\tModule:          p.Module,\n\t\t}\n\n\t\tif (state.cfg.Mode&typecheckCgo) != 0 && len(p.CgoFiles) != 0 {\n\t\t\tif len(p.CompiledGoFiles) > len(p.GoFiles) {\n\t\t\t\t// We need the cgo definitions, which are in the first\n\t\t\t\t// CompiledGoFile after the non-cgo ones. This is a hack but there\n\t\t\t\t// isn't currently a better way to find it. We also need the pure\n\t\t\t\t// Go files and unprocessed cgo files, all of which are already\n\t\t\t\t// in pkg.GoFiles.\n\t\t\t\tcgoTypes := p.CompiledGoFiles[len(p.GoFiles)]\n\t\t\t\tpkg.CompiledGoFiles = append([]string{cgoTypes}, pkg.GoFiles...)\n\t\t\t} else {\n\t\t\t\t// golang/go#38990: go list silently fails to do cgo processing\n\t\t\t\tpkg.CompiledGoFiles = nil\n\t\t\t\tpkg.Errors = append(pkg.Errors, Error{\n\t\t\t\t\tMsg:  \"go list failed to return CompiledGoFiles. This may indicate failure to perform cgo processing; try building at the command line. See https://golang.org/issue/38990.\",\n\t\t\t\t\tKind: ListError,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\n\t\t// Work around https://golang.org/issue/28749:\n\t\t// cmd/go puts assembly, C, and C++ files in CompiledGoFiles.\n\t\t// Remove files from CompiledGoFiles that are non-go files\n\t\t// (or are not files that look like they are from the cache).\n\t\tif len(pkg.CompiledGoFiles) > 0 {\n\t\t\tout := pkg.CompiledGoFiles[:0]\n\t\t\tfor _, f := range pkg.CompiledGoFiles {\n\t\t\t\tif ext := filepath.Ext(f); ext != \".go\" && ext != \"\" { // ext == \"\" means the file is from the cache, so probably cgo-processed file\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tout = append(out, f)\n\t\t\t}\n\t\t\tpkg.CompiledGoFiles = out\n\t\t}\n\n\t\t// Extract the PkgPath from the package's ID.\n\t\tif i := strings.IndexByte(pkg.ID, ' '); i >= 0 {\n\t\t\tpkg.PkgPath = pkg.ID[:i]\n\t\t} else {\n\t\t\tpkg.PkgPath = pkg.ID\n\t\t}\n\n\t\tif pkg.PkgPath == \"unsafe\" {\n\t\t\tpkg.CompiledGoFiles = nil // ignore fake unsafe.go file (#59929)\n\t\t} else if len(pkg.CompiledGoFiles) == 0 {\n\t\t\t// Work around for pre-go.1.11 versions of go list.\n\t\t\t// TODO(matloob): they should be handled by the fallback.\n\t\t\t// Can we delete this?\n\t\t\tpkg.CompiledGoFiles = pkg.GoFiles\n\t\t}\n\n\t\t// Assume go list emits only absolute paths for Dir.\n\t\tif p.Dir != \"\" && !filepath.IsAbs(p.Dir) {\n\t\t\tlog.Fatalf(\"internal error: go list returned non-absolute Package.Dir: %s\", p.Dir)\n\t\t}\n\n\t\tif p.Export != \"\" && !filepath.IsAbs(p.Export) {\n\t\t\tpkg.ExportFile = filepath.Join(p.Dir, p.Export)\n\t\t} else {\n\t\t\tpkg.ExportFile = p.Export\n\t\t}\n\n\t\t// imports\n\t\t//\n\t\t// Imports contains the IDs of all imported packages.\n\t\t// ImportsMap records (path, ID) only where they differ.\n\t\tids := make(map[string]bool)\n\t\tfor _, id := range p.Imports {\n\t\t\tids[id] = true\n\t\t}\n\t\tpkg.Imports = make(map[string]*Package)\n\t\tfor path, id := range p.ImportMap {\n\t\t\tpkg.Imports[path] = &Package{ID: id} // non-identity import\n\t\t\tdelete(ids, id)\n\t\t}\n\t\tfor id := range ids {\n\t\t\tif id == \"C\" {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tpkg.Imports[id] = &Package{ID: id} // identity import\n\t\t}\n\t\tif !p.DepOnly {\n\t\t\tresponse.Roots = append(response.Roots, pkg.ID)\n\t\t}\n\n\t\t// Temporary work-around for golang/go#39986. Parse filenames out of\n\t\t// error messages. This happens if there are unrecoverable syntax\n\t\t// errors in the source, so we can't match on a specific error message.\n\t\t//\n\t\t// TODO(rfindley): remove this heuristic, in favor of considering\n\t\t// InvalidGoFiles from the list driver.\n\t\tif err := p.Error; err != nil && state.shouldAddFilenameFromError(p) {\n\t\t\taddFilenameFromPos := func(pos string) bool {\n\t\t\t\tsplit := strings.Split(pos, \":\")\n\t\t\t\tif len(split) < 1 {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tfilename := strings.TrimSpace(split[0])\n\t\t\t\tif filename == \"\" {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tif !filepath.IsAbs(filename) {\n\t\t\t\t\tfilename = filepath.Join(state.cfg.Dir, filename)\n\t\t\t\t}\n\t\t\t\tinfo, _ := os.Stat(filename)\n\t\t\t\tif info == nil {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tpkg.CompiledGoFiles = append(pkg.CompiledGoFiles, filename)\n\t\t\t\tpkg.GoFiles = append(pkg.GoFiles, filename)\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tfound := addFilenameFromPos(err.Pos)\n\t\t\t// In some cases, go list only reports the error position in the\n\t\t\t// error text, not the error position. One such case is when the\n\t\t\t// file's package name is a keyword (see golang.org/issue/39763).\n\t\t\tif !found {\n\t\t\t\taddFilenameFromPos(err.Err)\n\t\t\t}\n\t\t}\n\n\t\tif p.Error != nil {\n\t\t\tmsg := strings.TrimSpace(p.Error.Err) // Trim to work around golang.org/issue/32363.\n\t\t\t// Address golang.org/issue/35964 by appending import stack to error message.\n\t\t\tif msg == \"import cycle not allowed\" && len(p.Error.ImportStack) != 0 {\n\t\t\t\tmsg += fmt.Sprintf(\": import stack: %v\", p.Error.ImportStack)\n\t\t\t}\n\t\t\tpkg.Errors = append(pkg.Errors, Error{\n\t\t\t\tPos:  p.Error.Pos,\n\t\t\t\tMsg:  msg,\n\t\t\t\tKind: ListError,\n\t\t\t})\n\t\t}\n\n\t\tpkgs[pkg.ID] = pkg\n\t}\n\n\tfor id, errs := range additionalErrors {\n\t\tif p, ok := pkgs[id]; ok {\n\t\t\tp.Errors = append(p.Errors, errs...)\n\t\t}\n\t}\n\tfor _, pkg := range pkgs {\n\t\tresponse.Packages = append(response.Packages, pkg)\n\t}\n\tsort.Slice(response.Packages, func(i, j int) bool { return response.Packages[i].ID < response.Packages[j].ID })\n\n\treturn response, nil\n}\n\nfunc (state *golistState) shouldAddFilenameFromError(p *jsonPackage) bool {\n\tif len(p.GoFiles) > 0 || len(p.CompiledGoFiles) > 0 {\n\t\treturn false\n\t}\n\n\tgoV, err := state.getGoVersion()\n\tif err != nil {\n\t\treturn false\n\t}\n\n\t// On Go 1.14 and earlier, only add filenames from errors if the import stack is empty.\n\t// The import stack behaves differently for these versions than newer Go versions.\n\tif goV < 15 {\n\t\treturn len(p.Error.ImportStack) == 0\n\t}\n\n\t// On Go 1.15 and later, only parse filenames out of error if there's no import stack,\n\t// or the current package is at the top of the import stack. This is not guaranteed\n\t// to work perfectly, but should avoid some cases where files in errors don't belong to this\n\t// package.\n\treturn len(p.Error.ImportStack) == 0 || p.Error.ImportStack[len(p.Error.ImportStack)-1] == p.ImportPath\n}\n\n// getGoVersion returns the effective minor version of the go command.\nfunc (state *golistState) getGoVersion() (int, error) {\n\tstate.goVersionOnce.Do(func() {\n\t\tstate.goVersion, state.goVersionError = gocommand.GoVersion(state.ctx, state.cfgInvocation(), state.runner)\n\t})\n\treturn state.goVersion, state.goVersionError\n}\n\n// getPkgPath finds the package path of a directory if it's relative to a root\n// directory.\nfunc (state *golistState) getPkgPath(dir string) (string, bool, error) {\n\tif !filepath.IsAbs(dir) {\n\t\tpanic(\"non-absolute dir passed to getPkgPath\")\n\t}\n\troots, err := state.determineRootDirs()\n\tif err != nil {\n\t\treturn \"\", false, err\n\t}\n\n\tfor rdir, rpath := range roots {\n\t\t// Make sure that the directory is in the module,\n\t\t// to avoid creating a path relative to another module.\n\t\tif !strings.HasPrefix(dir, rdir) {\n\t\t\tcontinue\n\t\t}\n\t\t// TODO(matloob): This doesn't properly handle symlinks.\n\t\tr, err := filepath.Rel(rdir, dir)\n\t\tif err != nil {\n\t\t\tcontinue\n\t\t}\n\t\tif rpath != \"\" {\n\t\t\t// We choose only one root even though the directory even it can belong in multiple modules\n\t\t\t// or GOPATH entries. This is okay because we only need to work with absolute dirs when a\n\t\t\t// file is missing from disk, for instance when gopls calls go/packages in an overlay.\n\t\t\t// Once the file is saved, gopls, or the next invocation of the tool will get the correct\n\t\t\t// result straight from golist.\n\t\t\t// TODO(matloob): Implement module tiebreaking?\n\t\t\treturn path.Join(rpath, filepath.ToSlash(r)), true, nil\n\t\t}\n\t\treturn filepath.ToSlash(r), true, nil\n\t}\n\treturn \"\", false, nil\n}\n\n// absJoin absolutizes and flattens the lists of files.\nfunc absJoin(dir string, fileses ...[]string) (res []string) {\n\tfor _, files := range fileses {\n\t\tfor _, file := range files {\n\t\t\tif !filepath.IsAbs(file) {\n\t\t\t\tfile = filepath.Join(dir, file)\n\t\t\t}\n\t\t\tres = append(res, file)\n\t\t}\n\t}\n\treturn res\n}\n\nfunc jsonFlag(cfg *Config, goVersion int) string {\n\tif goVersion < 19 {\n\t\treturn \"-json\"\n\t}\n\tvar fields []string\n\tadded := make(map[string]bool)\n\taddFields := func(fs ...string) {\n\t\tfor _, f := range fs {\n\t\t\tif !added[f] {\n\t\t\t\tadded[f] = true\n\t\t\t\tfields = append(fields, f)\n\t\t\t}\n\t\t}\n\t}\n\taddFields(\"Name\", \"ImportPath\", \"Error\") // These fields are always needed\n\tif cfg.Mode&NeedFiles != 0 || cfg.Mode&(NeedTypes|NeedTypesInfo) != 0 {\n\t\taddFields(\"Dir\", \"GoFiles\", \"IgnoredGoFiles\", \"IgnoredOtherFiles\", \"CFiles\",\n\t\t\t\"CgoFiles\", \"CXXFiles\", \"MFiles\", \"HFiles\", \"FFiles\", \"SFiles\",\n\t\t\t\"SwigFiles\", \"SwigCXXFiles\", \"SysoFiles\")\n\t\tif cfg.Tests {\n\t\t\taddFields(\"TestGoFiles\", \"XTestGoFiles\")\n\t\t}\n\t}\n\tif cfg.Mode&(NeedTypes|NeedTypesInfo) != 0 {\n\t\t// CompiledGoFiles seems to be required for the test case TestCgoNoSyntax,\n\t\t// even when -compiled isn't passed in.\n\t\t// TODO(#52435): Should we make the test ask for -compiled, or automatically\n\t\t// request CompiledGoFiles in certain circumstances?\n\t\taddFields(\"Dir\", \"CompiledGoFiles\")\n\t}\n\tif cfg.Mode&NeedCompiledGoFiles != 0 {\n\t\taddFields(\"Dir\", \"CompiledGoFiles\", \"Export\")\n\t}\n\tif cfg.Mode&NeedImports != 0 {\n\t\t// When imports are requested, DepOnly is used to distinguish between packages\n\t\t// explicitly requested and transitive imports of those packages.\n\t\taddFields(\"DepOnly\", \"Imports\", \"ImportMap\")\n\t\tif cfg.Tests {\n\t\t\taddFields(\"TestImports\", \"XTestImports\")\n\t\t}\n\t}\n\tif cfg.Mode&NeedDeps != 0 {\n\t\taddFields(\"DepOnly\")\n\t}\n\tif usesExportData(cfg) {\n\t\t// Request Dir in the unlikely case Export is not absolute.\n\t\taddFields(\"Dir\", \"Export\")\n\t}\n\tif cfg.Mode&NeedForTest != 0 {\n\t\taddFields(\"ForTest\")\n\t}\n\tif cfg.Mode&needInternalDepsErrors != 0 {\n\t\taddFields(\"DepsErrors\")\n\t}\n\tif cfg.Mode&NeedModule != 0 {\n\t\taddFields(\"Module\")\n\t}\n\tif cfg.Mode&NeedEmbedFiles != 0 {\n\t\taddFields(\"EmbedFiles\")\n\t}\n\tif cfg.Mode&NeedEmbedPatterns != 0 {\n\t\taddFields(\"EmbedPatterns\")\n\t}\n\tif cfg.Mode&NeedTarget != 0 {\n\t\taddFields(\"Target\")\n\t}\n\treturn \"-json=\" + strings.Join(fields, \",\")\n}\n\nfunc golistargs(cfg *Config, words []string, goVersion int) []string {\n\tconst findFlags = NeedImports | NeedTypes | NeedSyntax | NeedTypesInfo\n\tfullargs := []string{\n\t\t\"-e\", jsonFlag(cfg, goVersion),\n\t\tfmt.Sprintf(\"-compiled=%t\", cfg.Mode&(NeedCompiledGoFiles|NeedSyntax|NeedTypes|NeedTypesInfo|NeedTypesSizes) != 0),\n\t\tfmt.Sprintf(\"-test=%t\", cfg.Tests),\n\t\tfmt.Sprintf(\"-export=%t\", usesExportData(cfg)),\n\t\tfmt.Sprintf(\"-deps=%t\", cfg.Mode&NeedImports != 0),\n\t\t// go list doesn't let you pass -test and -find together,\n\t\t// probably because you'd just get the TestMain.\n\t\tfmt.Sprintf(\"-find=%t\", !cfg.Tests && cfg.Mode&findFlags == 0 && !usesExportData(cfg)),\n\t}\n\n\t// golang/go#60456: with go1.21 and later, go list serves pgo variants, which\n\t// can be costly to compute and may result in redundant processing for the\n\t// caller. Disable these variants. If someone wants to add e.g. a NeedPGO\n\t// mode flag, that should be a separate proposal.\n\tif goVersion >= 21 {\n\t\tfullargs = append(fullargs, \"-pgo=off\")\n\t}\n\n\tfullargs = append(fullargs, cfg.BuildFlags...)\n\tfullargs = append(fullargs, \"--\")\n\tfullargs = append(fullargs, words...)\n\treturn fullargs\n}\n\n// cfgInvocation returns an Invocation that reflects cfg's settings.\nfunc (state *golistState) cfgInvocation() gocommand.Invocation {\n\tcfg := state.cfg\n\treturn gocommand.Invocation{\n\t\tBuildFlags: cfg.BuildFlags,\n\t\tCleanEnv:   cfg.Env != nil,\n\t\tEnv:        cfg.Env,\n\t\tLogf:       cfg.Logf,\n\t\tWorkingDir: cfg.Dir,\n\t\tOverlay:    state.overlay,\n\t}\n}\n\n// invokeGo returns the stdout of a go command invocation.\nfunc (state *golistState) invokeGo(verb string, args ...string) (*bytes.Buffer, error) {\n\tcfg := state.cfg\n\n\tinv := state.cfgInvocation()\n\tinv.Verb = verb\n\tinv.Args = args\n\n\tstdout, stderr, friendlyErr, err := state.runner.RunRaw(cfg.Context, inv)\n\tif err != nil {\n\t\t// Check for 'go' executable not being found.\n\t\tif ee, ok := err.(*exec.Error); ok && ee.Err == exec.ErrNotFound {\n\t\t\treturn nil, fmt.Errorf(\"'go list' driver requires 'go', but %s\", exec.ErrNotFound)\n\t\t}\n\n\t\texitErr, ok := err.(*exec.ExitError)\n\t\tif !ok {\n\t\t\t// Catastrophic error:\n\t\t\t// - context cancellation\n\t\t\treturn nil, fmt.Errorf(\"couldn't run 'go': %w\", err)\n\t\t}\n\n\t\t// Old go version?\n\t\tif strings.Contains(stderr.String(), \"flag provided but not defined\") {\n\t\t\treturn nil, goTooOldError{fmt.Errorf(\"unsupported version of go: %s: %s\", exitErr, stderr)}\n\t\t}\n\n\t\t// Related to #24854\n\t\tif len(stderr.String()) > 0 && strings.Contains(stderr.String(), \"unexpected directory layout\") {\n\t\t\treturn nil, friendlyErr\n\t\t}\n\n\t\t// Return an error if 'go list' failed due to missing tools in\n\t\t// $GOROOT/pkg/tool/$GOOS_$GOARCH (#69606).\n\t\tif len(stderr.String()) > 0 && strings.Contains(stderr.String(), `go: no such tool`) {\n\t\t\treturn nil, friendlyErr\n\t\t}\n\n\t\t// Is there an error running the C compiler in cgo? This will be reported in the \"Error\" field\n\t\t// and should be suppressed by go list -e.\n\t\t//\n\t\t// This condition is not perfect yet because the error message can include other error messages than runtime/cgo.\n\t\tisPkgPathRune := func(r rune) bool {\n\t\t\t// From https://golang.org/ref/spec#Import_declarations:\n\t\t\t//    Implementation restriction: A compiler may restrict ImportPaths to non-empty strings\n\t\t\t//    using only characters belonging to Unicode's L, M, N, P, and S general categories\n\t\t\t//    (the Graphic characters without spaces) and may also exclude the\n\t\t\t//    characters !\"#$%&'()*,:;<=>?[\\]^`{|} and the Unicode replacement character U+FFFD.\n\t\t\treturn unicode.IsOneOf([]*unicode.RangeTable{unicode.L, unicode.M, unicode.N, unicode.P, unicode.S}, r) &&\n\t\t\t\t!strings.ContainsRune(\"!\\\"#$%&'()*,:;<=>?[\\\\]^`{|}\\uFFFD\", r)\n\t\t}\n\t\t// golang/go#36770: Handle case where cmd/go prints module download messages before the error.\n\t\tmsg := stderr.String()\n\t\tfor strings.HasPrefix(msg, \"go: downloading\") {\n\t\t\tmsg = msg[strings.IndexRune(msg, '\\n')+1:]\n\t\t}\n\t\tif len(stderr.String()) > 0 && strings.HasPrefix(stderr.String(), \"# \") {\n\t\t\tmsg := msg[len(\"# \"):]\n\t\t\tif strings.HasPrefix(strings.TrimLeftFunc(msg, isPkgPathRune), \"\\n\") {\n\t\t\t\treturn stdout, nil\n\t\t\t}\n\t\t\t// Treat pkg-config errors as a special case (golang.org/issue/36770).\n\t\t\tif strings.HasPrefix(msg, \"pkg-config\") {\n\t\t\t\treturn stdout, nil\n\t\t\t}\n\t\t}\n\n\t\t// This error only appears in stderr. See golang.org/cl/166398 for a fix in go list to show\n\t\t// the error in the Err section of stdout in case -e option is provided.\n\t\t// This fix is provided for backwards compatibility.\n\t\tif len(stderr.String()) > 0 && strings.Contains(stderr.String(), \"named files must be .go files\") {\n\t\t\toutput := fmt.Sprintf(`{\"ImportPath\": \"command-line-arguments\",\"Incomplete\": true,\"Error\": {\"Pos\": \"\",\"Err\": %q}}`,\n\t\t\t\tstrings.Trim(stderr.String(), \"\\n\"))\n\t\t\treturn bytes.NewBufferString(output), nil\n\t\t}\n\n\t\t// Similar to the previous error, but currently lacks a fix in Go.\n\t\tif len(stderr.String()) > 0 && strings.Contains(stderr.String(), \"named files must all be in one directory\") {\n\t\t\toutput := fmt.Sprintf(`{\"ImportPath\": \"command-line-arguments\",\"Incomplete\": true,\"Error\": {\"Pos\": \"\",\"Err\": %q}}`,\n\t\t\t\tstrings.Trim(stderr.String(), \"\\n\"))\n\t\t\treturn bytes.NewBufferString(output), nil\n\t\t}\n\n\t\t// Backwards compatibility for Go 1.11 because 1.12 and 1.13 put the directory in the ImportPath.\n\t\t// If the package doesn't exist, put the absolute path of the directory into the error message,\n\t\t// as Go 1.13 list does.\n\t\tconst noSuchDirectory = \"no such directory\"\n\t\tif len(stderr.String()) > 0 && strings.Contains(stderr.String(), noSuchDirectory) {\n\t\t\terrstr := stderr.String()\n\t\t\tabspath := strings.TrimSpace(errstr[strings.Index(errstr, noSuchDirectory)+len(noSuchDirectory):])\n\t\t\toutput := fmt.Sprintf(`{\"ImportPath\": %q,\"Incomplete\": true,\"Error\": {\"Pos\": \"\",\"Err\": %q}}`,\n\t\t\t\tabspath, strings.Trim(stderr.String(), \"\\n\"))\n\t\t\treturn bytes.NewBufferString(output), nil\n\t\t}\n\n\t\t// Workaround for #29280: go list -e has incorrect behavior when an ad-hoc package doesn't exist.\n\t\t// Note that the error message we look for in this case is different that the one looked for above.\n\t\tif len(stderr.String()) > 0 && strings.Contains(stderr.String(), \"no such file or directory\") {\n\t\t\toutput := fmt.Sprintf(`{\"ImportPath\": \"command-line-arguments\",\"Incomplete\": true,\"Error\": {\"Pos\": \"\",\"Err\": %q}}`,\n\t\t\t\tstrings.Trim(stderr.String(), \"\\n\"))\n\t\t\treturn bytes.NewBufferString(output), nil\n\t\t}\n\n\t\t// Workaround for #34273. go list -e with GO111MODULE=on has incorrect behavior when listing a\n\t\t// directory outside any module.\n\t\tif len(stderr.String()) > 0 && strings.Contains(stderr.String(), \"outside available modules\") {\n\t\t\toutput := fmt.Sprintf(`{\"ImportPath\": %q,\"Incomplete\": true,\"Error\": {\"Pos\": \"\",\"Err\": %q}}`,\n\t\t\t\t// TODO(matloob): command-line-arguments isn't correct here.\n\t\t\t\t\"command-line-arguments\", strings.Trim(stderr.String(), \"\\n\"))\n\t\t\treturn bytes.NewBufferString(output), nil\n\t\t}\n\n\t\t// Another variation of the previous error\n\t\tif len(stderr.String()) > 0 && strings.Contains(stderr.String(), \"outside module root\") {\n\t\t\toutput := fmt.Sprintf(`{\"ImportPath\": %q,\"Incomplete\": true,\"Error\": {\"Pos\": \"\",\"Err\": %q}}`,\n\t\t\t\t// TODO(matloob): command-line-arguments isn't correct here.\n\t\t\t\t\"command-line-arguments\", strings.Trim(stderr.String(), \"\\n\"))\n\t\t\treturn bytes.NewBufferString(output), nil\n\t\t}\n\n\t\t// Workaround for an instance of golang.org/issue/26755: go list -e  will return a non-zero exit\n\t\t// status if there's a dependency on a package that doesn't exist. But it should return\n\t\t// a zero exit status and set an error on that package.\n\t\tif len(stderr.String()) > 0 && strings.Contains(stderr.String(), \"no Go files in\") {\n\t\t\t// Don't clobber stdout if `go list` actually returned something.\n\t\t\tif len(stdout.String()) > 0 {\n\t\t\t\treturn stdout, nil\n\t\t\t}\n\t\t\t// try to extract package name from string\n\t\t\tstderrStr := stderr.String()\n\t\t\tvar importPath string\n\t\t\tcolon := strings.Index(stderrStr, \":\")\n\t\t\tif colon > 0 && strings.HasPrefix(stderrStr, \"go build \") {\n\t\t\t\timportPath = stderrStr[len(\"go build \"):colon]\n\t\t\t}\n\t\t\toutput := fmt.Sprintf(`{\"ImportPath\": %q,\"Incomplete\": true,\"Error\": {\"Pos\": \"\",\"Err\": %q}}`,\n\t\t\t\timportPath, strings.Trim(stderrStr, \"\\n\"))\n\t\t\treturn bytes.NewBufferString(output), nil\n\t\t}\n\n\t\t// Export mode entails a build.\n\t\t// If that build fails, errors appear on stderr\n\t\t// (despite the -e flag) and the Export field is blank.\n\t\t// Do not fail in that case.\n\t\t// The same is true if an ad-hoc package given to go list doesn't exist.\n\t\t// TODO(matloob): Remove these once we can depend on go list to exit with a zero status with -e even when\n\t\t// packages don't exist or a build fails.\n\t\tif !usesExportData(cfg) && !containsGoFile(args) {\n\t\t\treturn nil, friendlyErr\n\t\t}\n\t}\n\treturn stdout, nil\n}\n\nfunc containsGoFile(s []string) bool {\n\tfor _, f := range s {\n\t\tif strings.HasSuffix(f, \".go\") {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc cmdDebugStr(cmd *exec.Cmd) string {\n\tenv := make(map[string]string)\n\tfor _, kv := range cmd.Env {\n\t\tsplit := strings.SplitN(kv, \"=\", 2)\n\t\tk, v := split[0], split[1]\n\t\tenv[k] = v\n\t}\n\n\tvar args []string\n\tfor _, arg := range cmd.Args {\n\t\tquoted := strconv.Quote(arg)\n\t\tif quoted[1:len(quoted)-1] != arg || strings.Contains(arg, \" \") {\n\t\t\targs = append(args, quoted)\n\t\t} else {\n\t\t\targs = append(args, arg)\n\t\t}\n\t}\n\treturn fmt.Sprintf(\"GOROOT=%v GOPATH=%v GO111MODULE=%v GOPROXY=%v PWD=%v %v\", env[\"GOROOT\"], env[\"GOPATH\"], env[\"GO111MODULE\"], env[\"GOPROXY\"], env[\"PWD\"], strings.Join(args, \" \"))\n}\n\n// getSizesForArgs queries 'go list' for the appropriate\n// Compiler and GOARCH arguments to pass to [types.SizesFor].\nfunc getSizesForArgs(ctx context.Context, inv gocommand.Invocation, gocmdRunner *gocommand.Runner) (string, string, error) {\n\tinv.Verb = \"list\"\n\tinv.Args = []string{\"-f\", \"{{context.GOARCH}} {{context.Compiler}}\", \"--\", \"unsafe\"}\n\tstdout, stderr, friendlyErr, rawErr := gocmdRunner.RunRaw(ctx, inv)\n\tvar goarch, compiler string\n\tif rawErr != nil {\n\t\trawErrMsg := rawErr.Error()\n\t\tif strings.Contains(rawErrMsg, \"cannot find main module\") ||\n\t\t\tstrings.Contains(rawErrMsg, \"go.mod file not found\") {\n\t\t\t// User's running outside of a module.\n\t\t\t// All bets are off. Get GOARCH and guess compiler is gc.\n\t\t\t// TODO(matloob): Is this a problem in practice?\n\t\t\tinv.Verb = \"env\"\n\t\t\tinv.Args = []string{\"GOARCH\"}\n\t\t\tenvout, enverr := gocmdRunner.Run(ctx, inv)\n\t\t\tif enverr != nil {\n\t\t\t\treturn \"\", \"\", enverr\n\t\t\t}\n\t\t\tgoarch = strings.TrimSpace(envout.String())\n\t\t\tcompiler = \"gc\"\n\t\t} else if friendlyErr != nil {\n\t\t\treturn \"\", \"\", friendlyErr\n\t\t} else {\n\t\t\t// This should be unreachable, but be defensive\n\t\t\t// in case RunRaw's error results are inconsistent.\n\t\t\treturn \"\", \"\", rawErr\n\t\t}\n\t} else {\n\t\tfields := strings.Fields(stdout.String())\n\t\tif len(fields) < 2 {\n\t\t\treturn \"\", \"\", fmt.Errorf(\"could not parse GOARCH and Go compiler in format \\\"<GOARCH> <compiler>\\\":\\nstdout: <<%s>>\\nstderr: <<%s>>\",\n\t\t\t\tstdout.String(), stderr.String())\n\t\t}\n\t\tgoarch = fields[0]\n\t\tcompiler = fields[1]\n\t}\n\treturn compiler, goarch, nil\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/go/packages/golist_overlay.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage packages\n\nimport (\n\t\"encoding/json\"\n\t\"path/filepath\"\n\n\t\"golang.org/x/tools/internal/gocommand\"\n)\n\n// determineRootDirs returns a mapping from absolute directories that could\n// contain code to their corresponding import path prefixes.\nfunc (state *golistState) determineRootDirs() (map[string]string, error) {\n\tenv, err := state.getEnv()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif env[\"GOMOD\"] != \"\" {\n\t\tstate.rootsOnce.Do(func() {\n\t\t\tstate.rootDirs, state.rootDirsError = state.determineRootDirsModules()\n\t\t})\n\t} else {\n\t\tstate.rootsOnce.Do(func() {\n\t\t\tstate.rootDirs, state.rootDirsError = state.determineRootDirsGOPATH()\n\t\t})\n\t}\n\treturn state.rootDirs, state.rootDirsError\n}\n\nfunc (state *golistState) determineRootDirsModules() (map[string]string, error) {\n\t// List all of the modules--the first will be the directory for the main\n\t// module. Any replaced modules will also need to be treated as roots.\n\t// Editing files in the module cache isn't a great idea, so we don't\n\t// plan to ever support that.\n\tout, err := state.invokeGo(\"list\", \"-m\", \"-json\", \"all\")\n\tif err != nil {\n\t\t// 'go list all' will fail if we're outside of a module and\n\t\t// GO111MODULE=on. Try falling back without 'all'.\n\t\tvar innerErr error\n\t\tout, innerErr = state.invokeGo(\"list\", \"-m\", \"-json\")\n\t\tif innerErr != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\troots := map[string]string{}\n\tmodules := map[string]string{}\n\tvar i int\n\tfor dec := json.NewDecoder(out); dec.More(); {\n\t\tmod := new(gocommand.ModuleJSON)\n\t\tif err := dec.Decode(mod); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif mod.Dir != \"\" && mod.Path != \"\" {\n\t\t\t// This is a valid module; add it to the map.\n\t\t\tabsDir, err := state.cfg.abs(mod.Dir)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tmodules[absDir] = mod.Path\n\t\t\t// The first result is the main module.\n\t\t\tif i == 0 || mod.Replace != nil && mod.Replace.Path != \"\" {\n\t\t\t\troots[absDir] = mod.Path\n\t\t\t}\n\t\t}\n\t\ti++\n\t}\n\treturn roots, nil\n}\n\nfunc (state *golistState) determineRootDirsGOPATH() (map[string]string, error) {\n\tm := map[string]string{}\n\tfor _, dir := range filepath.SplitList(state.mustGetEnv()[\"GOPATH\"]) {\n\t\tabsDir, err := filepath.Abs(dir)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tm[filepath.Join(absDir, \"src\")] = \"\"\n\t}\n\treturn m, nil\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/go/packages/loadmode_string.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage packages\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n)\n\nvar modes = [...]struct {\n\tmode LoadMode\n\tname string\n}{\n\t{NeedName, \"NeedName\"},\n\t{NeedFiles, \"NeedFiles\"},\n\t{NeedCompiledGoFiles, \"NeedCompiledGoFiles\"},\n\t{NeedImports, \"NeedImports\"},\n\t{NeedDeps, \"NeedDeps\"},\n\t{NeedExportFile, \"NeedExportFile\"},\n\t{NeedTypes, \"NeedTypes\"},\n\t{NeedSyntax, \"NeedSyntax\"},\n\t{NeedTypesInfo, \"NeedTypesInfo\"},\n\t{NeedTypesSizes, \"NeedTypesSizes\"},\n\t{NeedForTest, \"NeedForTest\"},\n\t{NeedModule, \"NeedModule\"},\n\t{NeedEmbedFiles, \"NeedEmbedFiles\"},\n\t{NeedEmbedPatterns, \"NeedEmbedPatterns\"},\n\t{NeedTarget, \"NeedTarget\"},\n}\n\nfunc (mode LoadMode) String() string {\n\tif mode == 0 {\n\t\treturn \"LoadMode(0)\"\n\t}\n\tvar out []string\n\t// named bits\n\tfor _, item := range modes {\n\t\tif (mode & item.mode) != 0 {\n\t\t\tmode ^= item.mode\n\t\t\tout = append(out, item.name)\n\t\t}\n\t}\n\t// unnamed residue\n\tif mode != 0 {\n\t\tif out == nil {\n\t\t\treturn fmt.Sprintf(\"LoadMode(%#x)\", int(mode))\n\t\t}\n\t\tout = append(out, fmt.Sprintf(\"%#x\", int(mode)))\n\t}\n\tif len(out) == 1 {\n\t\treturn out[0]\n\t}\n\treturn \"(\" + strings.Join(out, \"|\") + \")\"\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/go/packages/packages.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage packages\n\n// See doc.go for package documentation and implementation notes.\n\nimport (\n\t\"context\"\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"go/ast\"\n\t\"go/parser\"\n\t\"go/scanner\"\n\t\"go/token\"\n\t\"go/types\"\n\t\"log\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"runtime\"\n\t\"strings\"\n\t\"sync\"\n\t\"sync/atomic\"\n\t\"time\"\n\n\t\"golang.org/x/sync/errgroup\"\n\n\t\"golang.org/x/tools/go/gcexportdata\"\n\t\"golang.org/x/tools/internal/gocommand\"\n\t\"golang.org/x/tools/internal/packagesinternal\"\n\t\"golang.org/x/tools/internal/typesinternal\"\n)\n\n// A LoadMode controls the amount of detail to return when loading.\n// The bits below can be combined to specify which fields should be\n// filled in the result packages.\n//\n// The zero value is a special case, equivalent to combining\n// the NeedName, NeedFiles, and NeedCompiledGoFiles bits.\n//\n// ID and Errors (if present) will always be filled.\n// [Load] may return more information than requested.\n//\n// The Mode flag is a union of several bits named NeedName,\n// NeedFiles, and so on, each of which determines whether\n// a given field of Package (Name, Files, etc) should be\n// populated.\n//\n// For convenience, we provide named constants for the most\n// common combinations of Need flags:\n//\n//\t[LoadFiles]     lists of files in each package\n//\t[LoadImports]   ... plus imports\n//\t[LoadTypes]     ... plus type information\n//\t[LoadSyntax]    ... plus type-annotated syntax\n//\t[LoadAllSyntax] ... for all dependencies\n//\n// Unfortunately there are a number of open bugs related to\n// interactions among the LoadMode bits:\n//   - https://go.dev/issue/56633\n//   - https://go.dev/issue/56677\n//   - https://go.dev/issue/58726\n//   - https://go.dev/issue/63517\ntype LoadMode int\n\nconst (\n\t// NeedName adds Name and PkgPath.\n\tNeedName LoadMode = 1 << iota\n\n\t// NeedFiles adds Dir, GoFiles, OtherFiles, and IgnoredFiles\n\tNeedFiles\n\n\t// NeedCompiledGoFiles adds CompiledGoFiles.\n\tNeedCompiledGoFiles\n\n\t// NeedImports adds Imports. If NeedDeps is not set, the Imports field will contain\n\t// \"placeholder\" Packages with only the ID set.\n\tNeedImports\n\n\t// NeedDeps adds the fields requested by the LoadMode in the packages in Imports.\n\tNeedDeps\n\n\t// NeedExportFile adds ExportFile.\n\tNeedExportFile\n\n\t// NeedTypes adds Types, Fset, and IllTyped.\n\tNeedTypes\n\n\t// NeedSyntax adds Syntax and Fset.\n\tNeedSyntax\n\n\t// NeedTypesInfo adds TypesInfo and Fset.\n\tNeedTypesInfo\n\n\t// NeedTypesSizes adds TypesSizes.\n\tNeedTypesSizes\n\n\t// needInternalDepsErrors adds the internal deps errors field for use by gopls.\n\tneedInternalDepsErrors\n\n\t// NeedForTest adds ForTest.\n\t//\n\t// Tests must also be set on the context for this field to be populated.\n\tNeedForTest\n\n\t// typecheckCgo enables full support for type checking cgo. Requires Go 1.15+.\n\t// Modifies CompiledGoFiles and Types, and has no effect on its own.\n\ttypecheckCgo\n\n\t// NeedModule adds Module.\n\tNeedModule\n\n\t// NeedEmbedFiles adds EmbedFiles.\n\tNeedEmbedFiles\n\n\t// NeedEmbedPatterns adds EmbedPatterns.\n\tNeedEmbedPatterns\n\n\t// NeedTarget adds Target.\n\tNeedTarget\n\n\t// Be sure to update loadmode_string.go when adding new items!\n)\n\nconst (\n\t// LoadFiles loads the name and file names for the initial packages.\n\tLoadFiles = NeedName | NeedFiles | NeedCompiledGoFiles\n\n\t// LoadImports loads the name, file names, and import mapping for the initial packages.\n\tLoadImports = LoadFiles | NeedImports\n\n\t// LoadTypes loads exported type information for the initial packages.\n\tLoadTypes = LoadImports | NeedTypes | NeedTypesSizes\n\n\t// LoadSyntax loads typed syntax for the initial packages.\n\tLoadSyntax = LoadTypes | NeedSyntax | NeedTypesInfo\n\n\t// LoadAllSyntax loads typed syntax for the initial packages and all dependencies.\n\tLoadAllSyntax = LoadSyntax | NeedDeps\n\n\t// Deprecated: NeedExportsFile is a historical misspelling of NeedExportFile.\n\t//\n\t//go:fix inline\n\tNeedExportsFile = NeedExportFile\n)\n\n// A Config specifies details about how packages should be loaded.\n// The zero value is a valid configuration.\n//\n// Calls to [Load] do not modify this struct.\ntype Config struct {\n\t// Mode controls the level of information returned for each package.\n\tMode LoadMode\n\n\t// Context specifies the context for the load operation.\n\t// Cancelling the context may cause [Load] to abort and\n\t// return an error.\n\tContext context.Context\n\n\t// Logf is the logger for the config.\n\t// If the user provides a logger, debug logging is enabled.\n\t// If the GOPACKAGESDEBUG environment variable is set to true,\n\t// but the logger is nil, default to log.Printf.\n\tLogf func(format string, args ...any)\n\n\t// Dir is the directory in which to run the build system's query tool\n\t// that provides information about the packages.\n\t// If Dir is empty, the tool is run in the current directory.\n\tDir string\n\n\t// Env is the environment to use when invoking the build system's query tool.\n\t// If Env is nil, the current environment is used.\n\t// As in os/exec's Cmd, only the last value in the slice for\n\t// each environment key is used. To specify the setting of only\n\t// a few variables, append to the current environment, as in:\n\t//\n\t//\topt.Env = append(os.Environ(), \"GOOS=plan9\", \"GOARCH=386\")\n\t//\n\tEnv []string\n\n\t// BuildFlags is a list of command-line flags to be passed through to\n\t// the build system's query tool.\n\tBuildFlags []string\n\n\t// Fset provides source position information for syntax trees and types.\n\t// If Fset is nil, Load will use a new fileset, but preserve Fset's value.\n\tFset *token.FileSet\n\n\t// ParseFile is called to read and parse each file\n\t// when preparing a package's type-checked syntax tree.\n\t// It must be safe to call ParseFile simultaneously from multiple goroutines.\n\t// If ParseFile is nil, the loader will uses parser.ParseFile.\n\t//\n\t// ParseFile should parse the source from src and use filename only for\n\t// recording position information.\n\t//\n\t// An application may supply a custom implementation of ParseFile\n\t// to change the effective file contents or the behavior of the parser,\n\t// or to modify the syntax tree. For example, selectively eliminating\n\t// unwanted function bodies can significantly accelerate type checking.\n\tParseFile func(fset *token.FileSet, filename string, src []byte) (*ast.File, error)\n\n\t// If Tests is set, the loader includes not just the packages\n\t// matching a particular pattern but also any related test packages,\n\t// including test-only variants of the package and the test executable.\n\t//\n\t// For example, when using the go command, loading \"fmt\" with Tests=true\n\t// returns four packages, with IDs \"fmt\" (the standard package),\n\t// \"fmt [fmt.test]\" (the package as compiled for the test),\n\t// \"fmt_test\" (the test functions from source files in package fmt_test),\n\t// and \"fmt.test\" (the test binary).\n\t//\n\t// In build systems with explicit names for tests,\n\t// setting Tests may have no effect.\n\tTests bool\n\n\t// Overlay is a mapping from absolute file paths to file contents.\n\t//\n\t// For each map entry, [Load] uses the alternative file\n\t// contents provided by the overlay mapping instead of reading\n\t// from the file system. This mechanism can be used to enable\n\t// editor-integrated tools to correctly analyze the contents\n\t// of modified but unsaved buffers, for example.\n\t//\n\t// The overlay mapping is passed to the build system's driver\n\t// (see \"The driver protocol\") so that it too can report\n\t// consistent package metadata about unsaved files. However,\n\t// drivers may vary in their level of support for overlays.\n\tOverlay map[string][]byte\n}\n\n// Load loads and returns the Go packages named by the given patterns.\n//\n// The cfg parameter specifies loading options; nil behaves the same as an empty [Config].\n//\n// The [Config.Mode] field is a set of bits that determine what kinds\n// of information should be computed and returned. Modes that require\n// more information tend to be slower. See [LoadMode] for details\n// and important caveats. Its zero value is equivalent to\n// [NeedName] | [NeedFiles] | [NeedCompiledGoFiles].\n//\n// Each call to Load returns a new set of [Package] instances.\n// The Packages and their Imports form a directed acyclic graph.\n//\n// If the [NeedTypes] mode flag was set, each call to Load uses a new\n// [types.Importer], so [types.Object] and [types.Type] values from\n// different calls to Load must not be mixed as they will have\n// inconsistent notions of type identity.\n//\n// If any of the patterns was invalid as defined by the\n// underlying build system, Load returns an error.\n// It may return an empty list of packages without an error,\n// for instance for an empty expansion of a valid wildcard.\n// Errors associated with a particular package are recorded in the\n// corresponding Package's Errors list, and do not cause Load to\n// return an error. Clients may need to handle such errors before\n// proceeding with further analysis. The [PrintErrors] function is\n// provided for convenient display of all errors.\nfunc Load(cfg *Config, patterns ...string) ([]*Package, error) {\n\tld := newLoader(cfg)\n\tresponse, external, err := defaultDriver(&ld.Config, patterns...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tld.sizes = types.SizesFor(response.Compiler, response.Arch)\n\tif ld.sizes == nil && ld.Config.Mode&(NeedTypes|NeedTypesSizes|NeedTypesInfo) != 0 {\n\t\t// Type size information is needed but unavailable.\n\t\tif external {\n\t\t\t// An external driver may fail to populate the Compiler/GOARCH fields,\n\t\t\t// especially since they are relatively new (see #63700).\n\t\t\t// Provide a sensible fallback in this case.\n\t\t\tld.sizes = types.SizesFor(\"gc\", runtime.GOARCH)\n\t\t\tif ld.sizes == nil { // gccgo-only arch\n\t\t\t\tld.sizes = types.SizesFor(\"gc\", \"amd64\")\n\t\t\t}\n\t\t} else {\n\t\t\t// Go list should never fail to deliver accurate size information.\n\t\t\t// Reject the whole Load since the error is the same for every package.\n\t\t\treturn nil, fmt.Errorf(\"can't determine type sizes for compiler %q on GOARCH %q\",\n\t\t\t\tresponse.Compiler, response.Arch)\n\t\t}\n\t}\n\n\treturn ld.refine(response)\n}\n\n// defaultDriver is a driver that implements go/packages' fallback behavior.\n// It will try to request to an external driver, if one exists. If there's\n// no external driver, or the driver returns a response with NotHandled set,\n// defaultDriver will fall back to the go list driver.\n// The boolean result indicates that an external driver handled the request.\nfunc defaultDriver(cfg *Config, patterns ...string) (*DriverResponse, bool, error) {\n\tconst (\n\t\t// windowsArgMax specifies the maximum command line length for\n\t\t// the Windows' CreateProcess function.\n\t\twindowsArgMax = 32767\n\t\t// maxEnvSize is a very rough estimation of the maximum environment\n\t\t// size of a user.\n\t\tmaxEnvSize = 16384\n\t\t// safeArgMax specifies the maximum safe command line length to use\n\t\t// by the underlying driver excl. the environment. We choose the Windows'\n\t\t// ARG_MAX as the starting point because it's one of the lowest ARG_MAX\n\t\t// constants out of the different supported platforms,\n\t\t// e.g., https://www.in-ulm.de/~mascheck/various/argmax/#results.\n\t\tsafeArgMax = windowsArgMax - maxEnvSize\n\t)\n\tchunks, err := splitIntoChunks(patterns, safeArgMax)\n\tif err != nil {\n\t\treturn nil, false, err\n\t}\n\n\tif driver := findExternalDriver(cfg); driver != nil {\n\t\tresponse, err := callDriverOnChunks(driver, cfg, chunks)\n\t\tif err != nil {\n\t\t\treturn nil, false, err\n\t\t} else if !response.NotHandled {\n\t\t\treturn response, true, nil\n\t\t}\n\t\t// not handled: fall through\n\t}\n\n\t// go list fallback\n\n\t// Write overlays once, as there are many calls\n\t// to 'go list' (one per chunk plus others too).\n\toverlayFile, cleanupOverlay, err := gocommand.WriteOverlays(cfg.Overlay)\n\tif err != nil {\n\t\treturn nil, false, err\n\t}\n\tdefer cleanupOverlay()\n\n\tvar runner gocommand.Runner // (shared across many 'go list' calls)\n\tdriver := func(cfg *Config, patterns []string) (*DriverResponse, error) {\n\t\treturn goListDriver(cfg, &runner, overlayFile, patterns)\n\t}\n\tresponse, err := callDriverOnChunks(driver, cfg, chunks)\n\tif err != nil {\n\t\treturn nil, false, err\n\t}\n\treturn response, false, err\n}\n\n// splitIntoChunks chunks the slice so that the total number of characters\n// in a chunk is no longer than argMax.\nfunc splitIntoChunks(patterns []string, argMax int) ([][]string, error) {\n\tif argMax <= 0 {\n\t\treturn nil, errors.New(\"failed to split patterns into chunks, negative safe argMax value\")\n\t}\n\tvar chunks [][]string\n\tcharsInChunk := 0\n\tnextChunkStart := 0\n\tfor i, v := range patterns {\n\t\tvChars := len(v)\n\t\tif vChars > argMax {\n\t\t\t// a single pattern is longer than the maximum safe ARG_MAX, hardly should happen\n\t\t\treturn nil, errors.New(\"failed to split patterns into chunks, a pattern is too long\")\n\t\t}\n\t\tcharsInChunk += vChars + 1 // +1 is for a whitespace between patterns that has to be counted too\n\t\tif charsInChunk > argMax {\n\t\t\tchunks = append(chunks, patterns[nextChunkStart:i])\n\t\t\tnextChunkStart = i\n\t\t\tcharsInChunk = vChars\n\t\t}\n\t}\n\t// add the last chunk\n\tif nextChunkStart < len(patterns) {\n\t\tchunks = append(chunks, patterns[nextChunkStart:])\n\t}\n\treturn chunks, nil\n}\n\nfunc callDriverOnChunks(driver driver, cfg *Config, chunks [][]string) (*DriverResponse, error) {\n\tif len(chunks) == 0 {\n\t\treturn driver(cfg, nil)\n\t}\n\tresponses := make([]*DriverResponse, len(chunks))\n\terrNotHandled := errors.New(\"driver returned NotHandled\")\n\tvar g errgroup.Group\n\tfor i, chunk := range chunks {\n\t\tg.Go(func() (err error) {\n\t\t\tresponses[i], err = driver(cfg, chunk)\n\t\t\tif responses[i] != nil && responses[i].NotHandled {\n\t\t\t\terr = errNotHandled\n\t\t\t}\n\t\t\treturn err\n\t\t})\n\t}\n\tif err := g.Wait(); err != nil {\n\t\tif errors.Is(err, errNotHandled) {\n\t\t\treturn &DriverResponse{NotHandled: true}, nil\n\t\t}\n\t\treturn nil, err\n\t}\n\treturn mergeResponses(responses...), nil\n}\n\nfunc mergeResponses(responses ...*DriverResponse) *DriverResponse {\n\tif len(responses) == 0 {\n\t\treturn nil\n\t}\n\tresponse := newDeduper()\n\tresponse.dr.NotHandled = false\n\tresponse.dr.Compiler = responses[0].Compiler\n\tresponse.dr.Arch = responses[0].Arch\n\tresponse.dr.GoVersion = responses[0].GoVersion\n\tfor _, v := range responses {\n\t\tresponse.addAll(v)\n\t}\n\treturn response.dr\n}\n\n// A Package describes a loaded Go package.\n//\n// It also defines part of the JSON schema of [DriverResponse].\n// See the package documentation for an overview.\ntype Package struct {\n\t// ID is a unique identifier for a package,\n\t// in a syntax provided by the underlying build system.\n\t//\n\t// Because the syntax varies based on the build system,\n\t// clients should treat IDs as opaque and not attempt to\n\t// interpret them.\n\tID string\n\n\t// Name is the package name as it appears in the package source code.\n\tName string\n\n\t// PkgPath is the package path as used by the go/types package.\n\tPkgPath string\n\n\t// Dir is the directory associated with the package, if it exists.\n\t//\n\t// For packages listed by the go command, this is the directory containing\n\t// the package files.\n\tDir string\n\n\t// Errors contains any errors encountered querying the metadata\n\t// of the package, or while parsing or type-checking its files.\n\tErrors []Error\n\n\t// TypeErrors contains the subset of errors produced during type checking.\n\tTypeErrors []types.Error\n\n\t// GoFiles lists the absolute file paths of the package's Go source files.\n\t// It may include files that should not be compiled, for example because\n\t// they contain non-matching build tags, are documentary pseudo-files such as\n\t// unsafe/unsafe.go or builtin/builtin.go, or are subject to cgo preprocessing.\n\tGoFiles []string\n\n\t// CompiledGoFiles lists the absolute file paths of the package's source\n\t// files that are suitable for type checking.\n\t// This may differ from GoFiles if files are processed before compilation.\n\tCompiledGoFiles []string\n\n\t// OtherFiles lists the absolute file paths of the package's non-Go source files,\n\t// including assembly, C, C++, Fortran, Objective-C, SWIG, and so on.\n\tOtherFiles []string\n\n\t// EmbedFiles lists the absolute file paths of the package's files\n\t// embedded with go:embed.\n\tEmbedFiles []string\n\n\t// EmbedPatterns lists the absolute file patterns of the package's\n\t// files embedded with go:embed.\n\tEmbedPatterns []string\n\n\t// IgnoredFiles lists source files that are not part of the package\n\t// using the current build configuration but that might be part of\n\t// the package using other build configurations.\n\tIgnoredFiles []string\n\n\t// ExportFile is the absolute path to a file containing type\n\t// information for the package as provided by the build system.\n\tExportFile string\n\n\t// Target is the absolute install path of the .a file, for libraries,\n\t// and of the executable file, for binaries.\n\tTarget string\n\n\t// Imports maps import paths appearing in the package's Go source files\n\t// to corresponding loaded Packages.\n\tImports map[string]*Package\n\n\t// Module is the module information for the package if it exists.\n\t//\n\t// Note: it may be missing for std and cmd; see Go issue #65816.\n\tModule *Module\n\n\t// -- The following fields are not part of the driver JSON schema. --\n\n\t// Types provides type information for the package.\n\t// The NeedTypes LoadMode bit sets this field for packages matching the\n\t// patterns; type information for dependencies may be missing or incomplete,\n\t// unless NeedDeps and NeedImports are also set.\n\t//\n\t// Each call to [Load] returns a consistent set of type\n\t// symbols, as defined by the comment at [types.Identical].\n\t// Avoid mixing type information from two or more calls to [Load].\n\tTypes *types.Package `json:\"-\"`\n\n\t// Fset provides position information for Types, TypesInfo, and Syntax.\n\t// It is set only when Types is set.\n\tFset *token.FileSet `json:\"-\"`\n\n\t// IllTyped indicates whether the package or any dependency contains errors.\n\t// It is set only when Types is set.\n\tIllTyped bool `json:\"-\"`\n\n\t// Syntax is the package's syntax trees, for the files listed in CompiledGoFiles.\n\t//\n\t// The NeedSyntax LoadMode bit populates this field for packages matching the patterns.\n\t// If NeedDeps and NeedImports are also set, this field will also be populated\n\t// for dependencies.\n\t//\n\t// Syntax is kept in the same order as CompiledGoFiles, with the caveat that nils are\n\t// removed.  If parsing returned nil, Syntax may be shorter than CompiledGoFiles.\n\tSyntax []*ast.File `json:\"-\"`\n\n\t// TypesInfo provides type information about the package's syntax trees.\n\t// It is set only when Syntax is set.\n\tTypesInfo *types.Info `json:\"-\"`\n\n\t// TypesSizes provides the effective size function for types in TypesInfo.\n\tTypesSizes types.Sizes `json:\"-\"`\n\n\t// -- internal --\n\n\t// ForTest is the package under test, if any.\n\tForTest string\n\n\t// depsErrors is the DepsErrors field from the go list response, if any.\n\tdepsErrors []*packagesinternal.PackageError\n}\n\n// Module provides module information for a package.\n//\n// It also defines part of the JSON schema of [DriverResponse].\n// See the package documentation for an overview.\ntype Module struct {\n\tPath      string       // module path\n\tVersion   string       // module version\n\tReplace   *Module      // replaced by this module\n\tTime      *time.Time   // time version was created\n\tMain      bool         // is this the main module?\n\tIndirect  bool         // is this module only an indirect dependency of main module?\n\tDir       string       // directory holding files for this module, if any\n\tGoMod     string       // path to go.mod file used when loading this module, if any\n\tGoVersion string       // go version used in module\n\tError     *ModuleError // error loading module\n}\n\n// ModuleError holds errors loading a module.\ntype ModuleError struct {\n\tErr string // the error itself\n}\n\nfunc init() {\n\tpackagesinternal.GetDepsErrors = func(p any) []*packagesinternal.PackageError {\n\t\treturn p.(*Package).depsErrors\n\t}\n\tpackagesinternal.TypecheckCgo = int(typecheckCgo)\n\tpackagesinternal.DepsErrors = int(needInternalDepsErrors)\n}\n\n// An Error describes a problem with a package's metadata, syntax, or types.\ntype Error struct {\n\tPos  string // \"file:line:col\" or \"file:line\" or \"\" or \"-\"\n\tMsg  string\n\tKind ErrorKind\n}\n\n// ErrorKind describes the source of the error, allowing the user to\n// differentiate between errors generated by the driver, the parser, or the\n// type-checker.\ntype ErrorKind int\n\nconst (\n\tUnknownError ErrorKind = iota\n\tListError\n\tParseError\n\tTypeError\n)\n\nfunc (err Error) Error() string {\n\tpos := err.Pos\n\tif pos == \"\" {\n\t\tpos = \"-\" // like token.Position{}.String()\n\t}\n\treturn pos + \": \" + err.Msg\n}\n\n// flatPackage is the JSON form of Package\n// It drops all the type and syntax fields, and transforms the Imports\n//\n// TODO(adonovan): identify this struct with Package, effectively\n// publishing the JSON protocol.\ntype flatPackage struct {\n\tID              string\n\tName            string            `json:\",omitempty\"`\n\tPkgPath         string            `json:\",omitempty\"`\n\tErrors          []Error           `json:\",omitempty\"`\n\tGoFiles         []string          `json:\",omitempty\"`\n\tCompiledGoFiles []string          `json:\",omitempty\"`\n\tOtherFiles      []string          `json:\",omitempty\"`\n\tEmbedFiles      []string          `json:\",omitempty\"`\n\tEmbedPatterns   []string          `json:\",omitempty\"`\n\tIgnoredFiles    []string          `json:\",omitempty\"`\n\tExportFile      string            `json:\",omitempty\"`\n\tImports         map[string]string `json:\",omitempty\"`\n}\n\n// MarshalJSON returns the Package in its JSON form.\n// For the most part, the structure fields are written out unmodified, and\n// the type and syntax fields are skipped.\n// The imports are written out as just a map of path to package id.\n// The errors are written using a custom type that tries to preserve the\n// structure of error types we know about.\n//\n// This method exists to enable support for additional build systems.  It is\n// not intended for use by clients of the API and we may change the format.\nfunc (p *Package) MarshalJSON() ([]byte, error) {\n\tflat := &flatPackage{\n\t\tID:              p.ID,\n\t\tName:            p.Name,\n\t\tPkgPath:         p.PkgPath,\n\t\tErrors:          p.Errors,\n\t\tGoFiles:         p.GoFiles,\n\t\tCompiledGoFiles: p.CompiledGoFiles,\n\t\tOtherFiles:      p.OtherFiles,\n\t\tEmbedFiles:      p.EmbedFiles,\n\t\tEmbedPatterns:   p.EmbedPatterns,\n\t\tIgnoredFiles:    p.IgnoredFiles,\n\t\tExportFile:      p.ExportFile,\n\t}\n\tif len(p.Imports) > 0 {\n\t\tflat.Imports = make(map[string]string, len(p.Imports))\n\t\tfor path, ipkg := range p.Imports {\n\t\t\tflat.Imports[path] = ipkg.ID\n\t\t}\n\t}\n\treturn json.Marshal(flat)\n}\n\n// UnmarshalJSON reads in a Package from its JSON format.\n// See MarshalJSON for details about the format accepted.\nfunc (p *Package) UnmarshalJSON(b []byte) error {\n\tflat := &flatPackage{}\n\tif err := json.Unmarshal(b, &flat); err != nil {\n\t\treturn err\n\t}\n\t*p = Package{\n\t\tID:              flat.ID,\n\t\tName:            flat.Name,\n\t\tPkgPath:         flat.PkgPath,\n\t\tErrors:          flat.Errors,\n\t\tGoFiles:         flat.GoFiles,\n\t\tCompiledGoFiles: flat.CompiledGoFiles,\n\t\tOtherFiles:      flat.OtherFiles,\n\t\tEmbedFiles:      flat.EmbedFiles,\n\t\tEmbedPatterns:   flat.EmbedPatterns,\n\t\tIgnoredFiles:    flat.IgnoredFiles,\n\t\tExportFile:      flat.ExportFile,\n\t}\n\tif len(flat.Imports) > 0 {\n\t\tp.Imports = make(map[string]*Package, len(flat.Imports))\n\t\tfor path, id := range flat.Imports {\n\t\t\tp.Imports[path] = &Package{ID: id}\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (p *Package) String() string { return p.ID }\n\n// loaderPackage augments Package with state used during the loading phase\ntype loaderPackage struct {\n\t*Package\n\timportErrors    map[string]error // maps each bad import to its error\n\tpreds           []*loaderPackage // packages that import this one\n\tunfinishedSuccs atomic.Int32     // number of direct imports not yet loaded\n\tcolor           uint8            // for cycle detection\n\tneedsrc         bool             // load from source (Mode >= LoadTypes)\n\tneedtypes       bool             // type information is either requested or depended on\n\tinitial         bool             // package was matched by a pattern\n\tgoVersion       int              // minor version number of go command on PATH\n}\n\n// loader holds the working state of a single call to load.\ntype loader struct {\n\tpkgs map[string]*loaderPackage // keyed by Package.ID\n\tConfig\n\tsizes        types.Sizes // non-nil if needed by mode\n\tparseCache   map[string]*parseValue\n\tparseCacheMu sync.Mutex\n\texportMu     sync.Mutex // enforces mutual exclusion of exportdata operations\n\n\t// Config.Mode contains the implied mode (see impliedLoadMode).\n\t// Implied mode contains all the fields we need the data for.\n\t// In requestedMode there are the actually requested fields.\n\t// We'll zero them out before returning packages to the user.\n\t// This makes it easier for us to get the conditions where\n\t// we need certain modes right.\n\trequestedMode LoadMode\n}\n\ntype parseValue struct {\n\tf     *ast.File\n\terr   error\n\tready chan struct{}\n}\n\nfunc newLoader(cfg *Config) *loader {\n\tld := &loader{\n\t\tparseCache: map[string]*parseValue{},\n\t}\n\tif cfg != nil {\n\t\tld.Config = *cfg\n\t\t// If the user has provided a logger, use it.\n\t\tld.Config.Logf = cfg.Logf\n\t}\n\tif ld.Config.Logf == nil {\n\t\t// If the GOPACKAGESDEBUG environment variable is set to true,\n\t\t// but the user has not provided a logger, default to log.Printf.\n\t\tif debug {\n\t\t\tld.Config.Logf = log.Printf\n\t\t} else {\n\t\t\tld.Config.Logf = func(format string, args ...any) {}\n\t\t}\n\t}\n\tif ld.Config.Mode == 0 {\n\t\tld.Config.Mode = NeedName | NeedFiles | NeedCompiledGoFiles // Preserve zero behavior of Mode for backwards compatibility.\n\t}\n\tif ld.Config.Env == nil {\n\t\tld.Config.Env = os.Environ()\n\t}\n\tif ld.Context == nil {\n\t\tld.Context = context.Background()\n\t}\n\tif ld.Dir == \"\" {\n\t\tif dir, err := os.Getwd(); err == nil {\n\t\t\tld.Dir = dir\n\t\t}\n\t}\n\n\t// Save the actually requested fields. We'll zero them out before returning packages to the user.\n\tld.requestedMode = ld.Mode\n\tld.Mode = impliedLoadMode(ld.Mode)\n\n\tif ld.Mode&(NeedSyntax|NeedTypes|NeedTypesInfo) != 0 {\n\t\tif ld.Fset == nil {\n\t\t\tld.Fset = token.NewFileSet()\n\t\t}\n\n\t\t// ParseFile is required even in LoadTypes mode\n\t\t// because we load source if export data is missing.\n\t\tif ld.ParseFile == nil {\n\t\t\tld.ParseFile = func(fset *token.FileSet, filename string, src []byte) (*ast.File, error) {\n\t\t\t\t// We implicitly promise to keep doing ast.Object resolution. :(\n\t\t\t\tconst mode = parser.AllErrors | parser.ParseComments\n\t\t\t\treturn parser.ParseFile(fset, filename, src, mode)\n\t\t\t}\n\t\t}\n\t}\n\n\treturn ld\n}\n\n// refine connects the supplied packages into a graph and then adds type\n// and syntax information as requested by the LoadMode.\nfunc (ld *loader) refine(response *DriverResponse) ([]*Package, error) {\n\troots := response.Roots\n\trootMap := make(map[string]int, len(roots))\n\tfor i, root := range roots {\n\t\trootMap[root] = i\n\t}\n\tld.pkgs = make(map[string]*loaderPackage)\n\t// first pass, fixup and build the map and roots\n\tvar initial = make([]*loaderPackage, len(roots))\n\tfor _, pkg := range response.Packages {\n\t\trootIndex := -1\n\t\tif i, found := rootMap[pkg.ID]; found {\n\t\t\trootIndex = i\n\t\t}\n\n\t\t// Overlays can invalidate export data.\n\t\t// TODO(matloob): make this check fine-grained based on dependencies on overlaid files\n\t\texportDataInvalid := len(ld.Overlay) > 0 || pkg.ExportFile == \"\" && pkg.PkgPath != \"unsafe\"\n\t\t// This package needs type information if the caller requested types and the package is\n\t\t// either a root, or it's a non-root and the user requested dependencies ...\n\t\tneedtypes := (ld.Mode&(NeedTypes|NeedTypesInfo) != 0 && (rootIndex >= 0 || ld.Mode&NeedDeps != 0))\n\t\t// This package needs source if the call requested source (or types info, which implies source)\n\t\t// and the package is either a root, or itas a non- root and the user requested dependencies...\n\t\tneedsrc := ((ld.Mode&(NeedSyntax|NeedTypesInfo) != 0 && (rootIndex >= 0 || ld.Mode&NeedDeps != 0)) ||\n\t\t\t// ... or if we need types and the exportData is invalid. We fall back to (incompletely)\n\t\t\t// typechecking packages from source if they fail to compile.\n\t\t\t(ld.Mode&(NeedTypes|NeedTypesInfo) != 0 && exportDataInvalid)) && pkg.PkgPath != \"unsafe\"\n\t\tlpkg := &loaderPackage{\n\t\t\tPackage:   pkg,\n\t\t\tneedtypes: needtypes,\n\t\t\tneedsrc:   needsrc,\n\t\t\tgoVersion: response.GoVersion,\n\t\t}\n\t\tld.pkgs[lpkg.ID] = lpkg\n\t\tif rootIndex >= 0 {\n\t\t\tinitial[rootIndex] = lpkg\n\t\t\tlpkg.initial = true\n\t\t}\n\t}\n\tfor i, root := range roots {\n\t\tif initial[i] == nil {\n\t\t\treturn nil, fmt.Errorf(\"root package %v is missing\", root)\n\t\t}\n\t}\n\n\t// Materialize the import graph if it is needed (NeedImports),\n\t// or if we'll be using loadPackages (Need{Syntax|Types|TypesInfo}).\n\tvar leaves []*loaderPackage // packages with no unfinished successors\n\tif ld.Mode&(NeedImports|NeedSyntax|NeedTypes|NeedTypesInfo) != 0 {\n\t\tconst (\n\t\t\twhite = 0 // new\n\t\t\tgrey  = 1 // in progress\n\t\t\tblack = 2 // complete\n\t\t)\n\n\t\t// visit traverses the import graph, depth-first,\n\t\t// and materializes the graph as Packages.Imports.\n\t\t//\n\t\t// Valid imports are saved in the Packages.Import map.\n\t\t// Invalid imports (cycles and missing nodes) are saved in the importErrors map.\n\t\t// Thus, even in the presence of both kinds of errors,\n\t\t// the Import graph remains a DAG.\n\t\t//\n\t\t// visit returns whether the package needs src or has a transitive\n\t\t// dependency on a package that does. These are the only packages\n\t\t// for which we load source code.\n\t\tvar stack []*loaderPackage\n\t\tvar visit func(from, lpkg *loaderPackage) bool\n\t\tvisit = func(from, lpkg *loaderPackage) bool {\n\t\t\tif lpkg.color == grey {\n\t\t\t\tpanic(\"internal error: grey node\")\n\t\t\t}\n\t\t\tif lpkg.color == white {\n\t\t\t\tlpkg.color = grey\n\t\t\t\tstack = append(stack, lpkg) // push\n\t\t\t\tstubs := lpkg.Imports       // the structure form has only stubs with the ID in the Imports\n\t\t\t\tlpkg.Imports = make(map[string]*Package, len(stubs))\n\t\t\t\tfor importPath, ipkg := range stubs {\n\t\t\t\t\tvar importErr error\n\t\t\t\t\timp := ld.pkgs[ipkg.ID]\n\t\t\t\t\tif imp == nil {\n\t\t\t\t\t\t// (includes package \"C\" when DisableCgo)\n\t\t\t\t\t\timportErr = fmt.Errorf(\"missing package: %q\", ipkg.ID)\n\t\t\t\t\t} else if imp.color == grey {\n\t\t\t\t\t\timportErr = fmt.Errorf(\"import cycle: %s\", stack)\n\t\t\t\t\t}\n\t\t\t\t\tif importErr != nil {\n\t\t\t\t\t\tif lpkg.importErrors == nil {\n\t\t\t\t\t\t\tlpkg.importErrors = make(map[string]error)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlpkg.importErrors[importPath] = importErr\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\n\t\t\t\t\tif visit(lpkg, imp) {\n\t\t\t\t\t\tlpkg.needsrc = true\n\t\t\t\t\t}\n\t\t\t\t\tlpkg.Imports[importPath] = imp.Package\n\t\t\t\t}\n\n\t\t\t\t// -- postorder --\n\n\t\t\t\t// Complete type information is required for the\n\t\t\t\t// immediate dependencies of each source package.\n\t\t\t\tif lpkg.needsrc && ld.Mode&NeedTypes != 0 {\n\t\t\t\t\tfor _, ipkg := range lpkg.Imports {\n\t\t\t\t\t\tld.pkgs[ipkg.ID].needtypes = true\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// NeedTypeSizes causes TypeSizes to be set even\n\t\t\t\t// on packages for which types aren't needed.\n\t\t\t\tif ld.Mode&NeedTypesSizes != 0 {\n\t\t\t\t\tlpkg.TypesSizes = ld.sizes\n\t\t\t\t}\n\n\t\t\t\t// Add packages with no imports directly to the queue of leaves.\n\t\t\t\tif len(lpkg.Imports) == 0 {\n\t\t\t\t\tleaves = append(leaves, lpkg)\n\t\t\t\t}\n\n\t\t\t\tstack = stack[:len(stack)-1] // pop\n\t\t\t\tlpkg.color = black\n\t\t\t}\n\n\t\t\t// Add edge from predecessor.\n\t\t\tif from != nil {\n\t\t\t\tfrom.unfinishedSuccs.Add(+1) // incref\n\t\t\t\tlpkg.preds = append(lpkg.preds, from)\n\t\t\t}\n\n\t\t\treturn lpkg.needsrc\n\t\t}\n\n\t\t// For each initial package, create its import DAG.\n\t\tfor _, lpkg := range initial {\n\t\t\tvisit(nil, lpkg)\n\t\t}\n\n\t} else {\n\t\t// !NeedImports: drop the stub (ID-only) import packages\n\t\t// that we are not even going to try to resolve.\n\t\tfor _, lpkg := range initial {\n\t\t\tlpkg.Imports = nil\n\t\t}\n\t}\n\n\t// Load type data and syntax if needed, starting at\n\t// the initial packages (roots of the import DAG).\n\tif ld.Mode&(NeedSyntax|NeedTypes|NeedTypesInfo) != 0 {\n\n\t\t// We avoid using g.SetLimit to limit concurrency as\n\t\t// it makes g.Go stop accepting work, which prevents\n\t\t// workers from enqeuing, and thus finishing, and thus\n\t\t// allowing the group to make progress: deadlock.\n\t\t//\n\t\t// Instead we use the ioLimit and cpuLimit semaphores.\n\t\tg, _ := errgroup.WithContext(ld.Context)\n\n\t\t// enqueues adds a package to the type-checking queue.\n\t\t// It must have no unfinished successors.\n\t\tvar enqueue func(*loaderPackage)\n\t\tenqueue = func(lpkg *loaderPackage) {\n\t\t\tg.Go(func() error {\n\t\t\t\t// Parse and type-check.\n\t\t\t\tld.loadPackage(lpkg)\n\n\t\t\t\t// Notify each waiting predecessor,\n\t\t\t\t// and enqueue it when it becomes a leaf.\n\t\t\t\tfor _, pred := range lpkg.preds {\n\t\t\t\t\tif pred.unfinishedSuccs.Add(-1) == 0 { // decref\n\t\t\t\t\t\tenqueue(pred)\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn nil\n\t\t\t})\n\t\t}\n\n\t\t// Load leaves first, adding new packages\n\t\t// to the queue as they become leaves.\n\t\tfor _, leaf := range leaves {\n\t\t\tenqueue(leaf)\n\t\t}\n\n\t\tif err := g.Wait(); err != nil {\n\t\t\treturn nil, err // cancelled\n\t\t}\n\t}\n\n\t// If the context is done, return its error and\n\t// throw out [likely] incomplete packages.\n\tif err := ld.Context.Err(); err != nil {\n\t\treturn nil, err\n\t}\n\n\tresult := make([]*Package, len(initial))\n\tfor i, lpkg := range initial {\n\t\tresult[i] = lpkg.Package\n\t}\n\tfor i := range ld.pkgs {\n\t\t// Clear all unrequested fields,\n\t\t// to catch programs that use more than they request.\n\t\tif ld.requestedMode&NeedName == 0 {\n\t\t\tld.pkgs[i].Name = \"\"\n\t\t\tld.pkgs[i].PkgPath = \"\"\n\t\t}\n\t\tif ld.requestedMode&NeedFiles == 0 {\n\t\t\tld.pkgs[i].GoFiles = nil\n\t\t\tld.pkgs[i].OtherFiles = nil\n\t\t\tld.pkgs[i].IgnoredFiles = nil\n\t\t}\n\t\tif ld.requestedMode&NeedEmbedFiles == 0 {\n\t\t\tld.pkgs[i].EmbedFiles = nil\n\t\t}\n\t\tif ld.requestedMode&NeedEmbedPatterns == 0 {\n\t\t\tld.pkgs[i].EmbedPatterns = nil\n\t\t}\n\t\tif ld.requestedMode&NeedCompiledGoFiles == 0 {\n\t\t\tld.pkgs[i].CompiledGoFiles = nil\n\t\t}\n\t\tif ld.requestedMode&NeedImports == 0 {\n\t\t\tld.pkgs[i].Imports = nil\n\t\t}\n\t\tif ld.requestedMode&NeedExportFile == 0 {\n\t\t\tld.pkgs[i].ExportFile = \"\"\n\t\t}\n\t\tif ld.requestedMode&NeedTypes == 0 {\n\t\t\tld.pkgs[i].Types = nil\n\t\t\tld.pkgs[i].IllTyped = false\n\t\t}\n\t\tif ld.requestedMode&NeedSyntax == 0 {\n\t\t\tld.pkgs[i].Syntax = nil\n\t\t}\n\t\tif ld.requestedMode&(NeedSyntax|NeedTypes|NeedTypesInfo) == 0 {\n\t\t\tld.pkgs[i].Fset = nil\n\t\t}\n\t\tif ld.requestedMode&NeedTypesInfo == 0 {\n\t\t\tld.pkgs[i].TypesInfo = nil\n\t\t}\n\t\tif ld.requestedMode&NeedTypesSizes == 0 {\n\t\t\tld.pkgs[i].TypesSizes = nil\n\t\t}\n\t\tif ld.requestedMode&NeedModule == 0 {\n\t\t\tld.pkgs[i].Module = nil\n\t\t}\n\t}\n\n\treturn result, nil\n}\n\n// loadPackage loads/parses/typechecks the specified package.\n// It must be called only once per Package,\n// after immediate dependencies are loaded.\n// Precondition: ld.Mode&(NeedSyntax|NeedTypes|NeedTypesInfo) != 0.\nfunc (ld *loader) loadPackage(lpkg *loaderPackage) {\n\tif lpkg.PkgPath == \"unsafe\" {\n\t\t// To avoid surprises, fill in the blanks consistent\n\t\t// with other packages. (For example, some analyzers\n\t\t// assert that each needed types.Info map is non-nil\n\t\t// even when there is no syntax that would cause them\n\t\t// to consult the map.)\n\t\tlpkg.Types = types.Unsafe\n\t\tlpkg.Fset = ld.Fset\n\t\tlpkg.Syntax = []*ast.File{}\n\t\tlpkg.TypesInfo = ld.newTypesInfo()\n\t\tlpkg.TypesSizes = ld.sizes\n\t\treturn\n\t}\n\n\t// Call NewPackage directly with explicit name.\n\t// This avoids skew between golist and go/types when the files'\n\t// package declarations are inconsistent.\n\tlpkg.Types = types.NewPackage(lpkg.PkgPath, lpkg.Name)\n\tlpkg.Fset = ld.Fset\n\n\t// Start shutting down if the context is done and do not load\n\t// source or export data files.\n\t// Packages that import this one will have ld.Context.Err() != nil.\n\t// ld.Context.Err() will be returned later by refine.\n\tif ld.Context.Err() != nil {\n\t\treturn\n\t}\n\n\t// Subtle: we populate all Types fields with an empty Package\n\t// before loading export data so that export data processing\n\t// never has to create a types.Package for an indirect dependency,\n\t// which would then require that such created packages be explicitly\n\t// inserted back into the Import graph as a final step after export data loading.\n\t// (Hence this return is after the Types assignment.)\n\t// The Diamond test exercises this case.\n\tif !lpkg.needtypes && !lpkg.needsrc {\n\t\treturn\n\t}\n\n\t// TODO(adonovan): this condition looks wrong:\n\t// I think it should be lpkg.needtypes && !lpg.needsrc,\n\t// so that NeedSyntax without NeedTypes can be satisfied by export data.\n\tif !lpkg.needsrc {\n\t\tif err := ld.loadFromExportData(lpkg); err != nil {\n\t\t\tlpkg.Errors = append(lpkg.Errors, Error{\n\t\t\t\tPos:  \"-\",\n\t\t\t\tMsg:  err.Error(),\n\t\t\t\tKind: UnknownError, // e.g. can't find/open/parse export data\n\t\t\t})\n\t\t}\n\t\treturn // not a source package, don't get syntax trees\n\t}\n\n\tappendError := func(err error) {\n\t\t// Convert various error types into the one true Error.\n\t\tvar errs []Error\n\t\tswitch err := err.(type) {\n\t\tcase Error:\n\t\t\t// from driver\n\t\t\terrs = append(errs, err)\n\n\t\tcase *os.PathError:\n\t\t\t// from parser\n\t\t\terrs = append(errs, Error{\n\t\t\t\tPos:  err.Path + \":1\",\n\t\t\t\tMsg:  err.Err.Error(),\n\t\t\t\tKind: ParseError,\n\t\t\t})\n\n\t\tcase scanner.ErrorList:\n\t\t\t// from parser\n\t\t\tfor _, err := range err {\n\t\t\t\terrs = append(errs, Error{\n\t\t\t\t\tPos:  err.Pos.String(),\n\t\t\t\t\tMsg:  err.Msg,\n\t\t\t\t\tKind: ParseError,\n\t\t\t\t})\n\t\t\t}\n\n\t\tcase types.Error:\n\t\t\t// from type checker\n\t\t\tlpkg.TypeErrors = append(lpkg.TypeErrors, err)\n\t\t\terrs = append(errs, Error{\n\t\t\t\tPos:  err.Fset.Position(err.Pos).String(),\n\t\t\t\tMsg:  err.Msg,\n\t\t\t\tKind: TypeError,\n\t\t\t})\n\n\t\tdefault:\n\t\t\t// unexpected impoverished error from parser?\n\t\t\terrs = append(errs, Error{\n\t\t\t\tPos:  \"-\",\n\t\t\t\tMsg:  err.Error(),\n\t\t\t\tKind: UnknownError,\n\t\t\t})\n\n\t\t\t// If you see this error message, please file a bug.\n\t\t\tlog.Printf(\"internal error: error %q (%T) without position\", err, err)\n\t\t}\n\n\t\tlpkg.Errors = append(lpkg.Errors, errs...)\n\t}\n\n\t// If the go command on the PATH is newer than the runtime,\n\t// then the go/{scanner,ast,parser,types} packages from the\n\t// standard library may be unable to process the files\n\t// selected by go list.\n\t//\n\t// There is currently no way to downgrade the effective\n\t// version of the go command (see issue 52078), so we proceed\n\t// with the newer go command but, in case of parse or type\n\t// errors, we emit an additional diagnostic.\n\t//\n\t// See:\n\t// - golang.org/issue/52078 (flag to set release tags)\n\t// - golang.org/issue/50825 (gopls legacy version support)\n\t// - golang.org/issue/55883 (go/packages confusing error)\n\t//\n\t// Should we assert a hard minimum of (currently) go1.16 here?\n\tvar runtimeVersion int\n\tif _, err := fmt.Sscanf(runtime.Version(), \"go1.%d\", &runtimeVersion); err == nil && runtimeVersion < lpkg.goVersion {\n\t\tdefer func() {\n\t\t\tif len(lpkg.Errors) > 0 {\n\t\t\t\tappendError(Error{\n\t\t\t\t\tPos:  \"-\",\n\t\t\t\t\tMsg:  fmt.Sprintf(\"This application uses version go1.%d of the source-processing packages but runs version go1.%d of 'go list'. It may fail to process source files that rely on newer language features. If so, rebuild the application using a newer version of Go.\", runtimeVersion, lpkg.goVersion),\n\t\t\t\t\tKind: UnknownError,\n\t\t\t\t})\n\t\t\t}\n\t\t}()\n\t}\n\n\tif ld.Config.Mode&NeedTypes != 0 && len(lpkg.CompiledGoFiles) == 0 && lpkg.ExportFile != \"\" {\n\t\t// The config requested loading sources and types, but sources are missing.\n\t\t// Add an error to the package and fall back to loading from export data.\n\t\tappendError(Error{\"-\", fmt.Sprintf(\"sources missing for package %s\", lpkg.ID), ParseError})\n\t\t_ = ld.loadFromExportData(lpkg) // ignore any secondary errors\n\n\t\treturn // can't get syntax trees for this package\n\t}\n\n\tfiles, errs := ld.parseFiles(lpkg.CompiledGoFiles)\n\tfor _, err := range errs {\n\t\tappendError(err)\n\t}\n\n\tlpkg.Syntax = files\n\tif ld.Config.Mode&(NeedTypes|NeedTypesInfo) == 0 {\n\t\treturn\n\t}\n\n\t// Start shutting down if the context is done and do not type check.\n\t// Packages that import this one will have ld.Context.Err() != nil.\n\t// ld.Context.Err() will be returned later by refine.\n\tif ld.Context.Err() != nil {\n\t\treturn\n\t}\n\n\tlpkg.TypesInfo = ld.newTypesInfo()\n\tlpkg.TypesSizes = ld.sizes\n\n\timporter := importerFunc(func(path string) (*types.Package, error) {\n\t\tif path == \"unsafe\" {\n\t\t\treturn types.Unsafe, nil\n\t\t}\n\n\t\t// The imports map is keyed by import path.\n\t\tipkg := lpkg.Imports[path]\n\t\tif ipkg == nil {\n\t\t\tif err := lpkg.importErrors[path]; err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\t// There was skew between the metadata and the\n\t\t\t// import declarations, likely due to an edit\n\t\t\t// race, or because the ParseFile feature was\n\t\t\t// used to supply alternative file contents.\n\t\t\treturn nil, fmt.Errorf(\"no metadata for %s\", path)\n\t\t}\n\n\t\tif ipkg.Types != nil && ipkg.Types.Complete() {\n\t\t\treturn ipkg.Types, nil\n\t\t}\n\t\tlog.Fatalf(\"internal error: package %q without types was imported from %q\", path, lpkg)\n\t\tpanic(\"unreachable\")\n\t})\n\n\t// type-check\n\ttc := &types.Config{\n\t\tImporter: importer,\n\n\t\t// Type-check bodies of functions only in initial packages.\n\t\t// Example: for import graph A->B->C and initial packages {A,C},\n\t\t// we can ignore function bodies in B.\n\t\tIgnoreFuncBodies: ld.Mode&NeedDeps == 0 && !lpkg.initial,\n\n\t\tError: appendError,\n\t\tSizes: ld.sizes, // may be nil\n\t}\n\tif lpkg.Module != nil && lpkg.Module.GoVersion != \"\" {\n\t\ttc.GoVersion = \"go\" + lpkg.Module.GoVersion\n\t}\n\tif (ld.Mode & typecheckCgo) != 0 {\n\t\tif !typesinternal.SetUsesCgo(tc) {\n\t\t\tappendError(Error{\n\t\t\t\tMsg:  \"typecheckCgo requires Go 1.15+\",\n\t\t\t\tKind: ListError,\n\t\t\t})\n\t\t\treturn\n\t\t}\n\t}\n\n\t// Type-checking is CPU intensive.\n\tcpuLimit <- unit{}            // acquire a token\n\tdefer func() { <-cpuLimit }() // release a token\n\n\ttypErr := types.NewChecker(tc, ld.Fset, lpkg.Types, lpkg.TypesInfo).Files(lpkg.Syntax)\n\tlpkg.importErrors = nil // no longer needed\n\n\t// In go/types go1.21 and go1.22, Checker.Files failed fast with a\n\t// a \"too new\" error, without calling tc.Error and without\n\t// proceeding to type-check the package (#66525).\n\t// We rely on the runtimeVersion error to give the suggested remedy.\n\tif typErr != nil && len(lpkg.Errors) == 0 && len(lpkg.Syntax) > 0 {\n\t\tif msg := typErr.Error(); strings.HasPrefix(msg, \"package requires newer Go version\") {\n\t\t\tappendError(types.Error{\n\t\t\t\tFset: ld.Fset,\n\t\t\t\tPos:  lpkg.Syntax[0].Package,\n\t\t\t\tMsg:  msg,\n\t\t\t})\n\t\t}\n\t}\n\n\t// If !Cgo, the type-checker uses FakeImportC mode, so\n\t// it doesn't invoke the importer for import \"C\",\n\t// nor report an error for the import,\n\t// or for any undefined C.f reference.\n\t// We must detect this explicitly and correctly\n\t// mark the package as IllTyped (by reporting an error).\n\t// TODO(adonovan): if these errors are annoying,\n\t// we could just set IllTyped quietly.\n\tif tc.FakeImportC {\n\touter:\n\t\tfor _, f := range lpkg.Syntax {\n\t\t\tfor _, imp := range f.Imports {\n\t\t\t\tif imp.Path.Value == `\"C\"` {\n\t\t\t\t\terr := types.Error{Fset: ld.Fset, Pos: imp.Pos(), Msg: `import \"C\" ignored`}\n\t\t\t\t\tappendError(err)\n\t\t\t\t\tbreak outer\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// If types.Checker.Files had an error that was unreported,\n\t// make sure to report the unknown error so the package is illTyped.\n\tif typErr != nil && len(lpkg.Errors) == 0 {\n\t\tappendError(typErr)\n\t}\n\n\t// Record accumulated errors.\n\tillTyped := len(lpkg.Errors) > 0\n\tif !illTyped {\n\t\tfor _, imp := range lpkg.Imports {\n\t\t\tif imp.IllTyped {\n\t\t\t\tillTyped = true\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\tlpkg.IllTyped = illTyped\n}\n\nfunc (ld *loader) newTypesInfo() *types.Info {\n\t// Populate TypesInfo only if needed, as it\n\t// causes the type checker to work much harder.\n\tif ld.Config.Mode&NeedTypesInfo == 0 {\n\t\treturn nil\n\t}\n\treturn &types.Info{\n\t\tTypes:        make(map[ast.Expr]types.TypeAndValue),\n\t\tDefs:         make(map[*ast.Ident]types.Object),\n\t\tUses:         make(map[*ast.Ident]types.Object),\n\t\tImplicits:    make(map[ast.Node]types.Object),\n\t\tInstances:    make(map[*ast.Ident]types.Instance),\n\t\tScopes:       make(map[ast.Node]*types.Scope),\n\t\tSelections:   make(map[*ast.SelectorExpr]*types.Selection),\n\t\tFileVersions: make(map[*ast.File]string),\n\t}\n}\n\n// An importFunc is an implementation of the single-method\n// types.Importer interface based on a function value.\ntype importerFunc func(path string) (*types.Package, error)\n\nfunc (f importerFunc) Import(path string) (*types.Package, error) { return f(path) }\n\n// We use a counting semaphore to limit\n// the number of parallel I/O calls or CPU threads per process.\nvar (\n\tioLimit  = make(chan unit, 20)\n\tcpuLimit = make(chan unit, runtime.GOMAXPROCS(0))\n)\n\nfunc (ld *loader) parseFile(filename string) (*ast.File, error) {\n\tld.parseCacheMu.Lock()\n\tv, ok := ld.parseCache[filename]\n\tif ok {\n\t\t// cache hit\n\t\tld.parseCacheMu.Unlock()\n\t\t<-v.ready\n\t} else {\n\t\t// cache miss\n\t\tv = &parseValue{ready: make(chan struct{})}\n\t\tld.parseCache[filename] = v\n\t\tld.parseCacheMu.Unlock()\n\n\t\tvar src []byte\n\t\tfor f, contents := range ld.Config.Overlay {\n\t\t\t// TODO(adonovan): Inefficient for large overlays.\n\t\t\t// Do an exact name-based map lookup\n\t\t\t// (for nonexistent files) followed by a\n\t\t\t// FileID-based map lookup (for existing ones).\n\t\t\tif sameFile(f, filename) {\n\t\t\t\tsrc = contents\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tvar err error\n\t\tif src == nil {\n\t\t\tioLimit <- unit{} // acquire a token\n\t\t\tsrc, err = os.ReadFile(filename)\n\t\t\t<-ioLimit // release a token\n\t\t}\n\t\tif err != nil {\n\t\t\tv.err = err\n\t\t} else {\n\t\t\t// Parsing is CPU intensive.\n\t\t\tcpuLimit <- unit{} // acquire a token\n\t\t\tv.f, v.err = ld.ParseFile(ld.Fset, filename, src)\n\t\t\t<-cpuLimit // release a token\n\t\t}\n\n\t\tclose(v.ready)\n\t}\n\treturn v.f, v.err\n}\n\n// parseFiles reads and parses the Go source files and returns the ASTs\n// of the ones that could be at least partially parsed, along with a\n// list of I/O and parse errors encountered.\n//\n// Because files are scanned in parallel, the token.Pos\n// positions of the resulting ast.Files are not ordered.\nfunc (ld *loader) parseFiles(filenames []string) ([]*ast.File, []error) {\n\tvar (\n\t\tn      = len(filenames)\n\t\tparsed = make([]*ast.File, n)\n\t\terrors = make([]error, n)\n\t)\n\tvar g errgroup.Group\n\tfor i, filename := range filenames {\n\t\t// This creates goroutines unnecessarily in the\n\t\t// cache-hit case, but that case is uncommon.\n\t\tg.Go(func() error {\n\t\t\tparsed[i], errors[i] = ld.parseFile(filename)\n\t\t\treturn nil\n\t\t})\n\t}\n\tg.Wait()\n\n\t// Eliminate nils, preserving order.\n\tvar o int\n\tfor _, f := range parsed {\n\t\tif f != nil {\n\t\t\tparsed[o] = f\n\t\t\to++\n\t\t}\n\t}\n\tparsed = parsed[:o]\n\n\to = 0\n\tfor _, err := range errors {\n\t\tif err != nil {\n\t\t\terrors[o] = err\n\t\t\to++\n\t\t}\n\t}\n\terrors = errors[:o]\n\n\treturn parsed, errors\n}\n\n// sameFile returns true if x and y have the same basename and denote\n// the same file.\nfunc sameFile(x, y string) bool {\n\tif x == y {\n\t\t// It could be the case that y doesn't exist.\n\t\t// For instance, it may be an overlay file that\n\t\t// hasn't been written to disk. To handle that case\n\t\t// let x == y through. (We added the exact absolute path\n\t\t// string to the CompiledGoFiles list, so the unwritten\n\t\t// overlay case implies x==y.)\n\t\treturn true\n\t}\n\tif strings.EqualFold(filepath.Base(x), filepath.Base(y)) { // (optimisation)\n\t\tif xi, err := os.Stat(x); err == nil {\n\t\t\tif yi, err := os.Stat(y); err == nil {\n\t\t\t\treturn os.SameFile(xi, yi)\n\t\t\t}\n\t\t}\n\t}\n\treturn false\n}\n\n// loadFromExportData ensures that type information is present for the specified\n// package, loading it from an export data file on the first request.\n// On success it sets lpkg.Types to a new Package.\nfunc (ld *loader) loadFromExportData(lpkg *loaderPackage) error {\n\tif lpkg.PkgPath == \"\" {\n\t\tlog.Fatalf(\"internal error: Package %s has no PkgPath\", lpkg)\n\t}\n\n\t// Because gcexportdata.Read has the potential to create or\n\t// modify the types.Package for each node in the transitive\n\t// closure of dependencies of lpkg, all exportdata operations\n\t// must be sequential. (Finer-grained locking would require\n\t// changes to the gcexportdata API.)\n\t//\n\t// The exportMu lock guards the lpkg.Types field and the\n\t// types.Package it points to, for each loaderPackage in the graph.\n\t//\n\t// Not all accesses to Package.Pkg need to be protected by exportMu:\n\t// graph ordering ensures that direct dependencies of source\n\t// packages are fully loaded before the importer reads their Pkg field.\n\tld.exportMu.Lock()\n\tdefer ld.exportMu.Unlock()\n\n\tif tpkg := lpkg.Types; tpkg != nil && tpkg.Complete() {\n\t\treturn nil // cache hit\n\t}\n\n\tlpkg.IllTyped = true // fail safe\n\n\tif lpkg.ExportFile == \"\" {\n\t\t// Errors while building export data will have been printed to stderr.\n\t\treturn fmt.Errorf(\"no export data file\")\n\t}\n\tf, err := os.Open(lpkg.ExportFile)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer f.Close()\n\n\t// Read gc export data.\n\t//\n\t// We don't currently support gccgo export data because all\n\t// underlying workspaces use the gc toolchain. (Even build\n\t// systems that support gccgo don't use it for workspace\n\t// queries.)\n\tr, err := gcexportdata.NewReader(f)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"reading %s: %v\", lpkg.ExportFile, err)\n\t}\n\n\t// Build the view.\n\t//\n\t// The gcexportdata machinery has no concept of package ID.\n\t// It identifies packages by their PkgPath, which although not\n\t// globally unique is unique within the scope of one invocation\n\t// of the linker, type-checker, or gcexportdata.\n\t//\n\t// So, we must build a PkgPath-keyed view of the global\n\t// (conceptually ID-keyed) cache of packages and pass it to\n\t// gcexportdata. The view must contain every existing\n\t// package that might possibly be mentioned by the\n\t// current package---its transitive closure.\n\t//\n\t// In loadPackage, we unconditionally create a types.Package for\n\t// each dependency so that export data loading does not\n\t// create new ones.\n\t//\n\t// TODO(adonovan): it would be simpler and more efficient\n\t// if the export data machinery invoked a callback to\n\t// get-or-create a package instead of a map.\n\t//\n\tview := make(map[string]*types.Package) // view seen by gcexportdata\n\tseen := make(map[*loaderPackage]bool)   // all visited packages\n\tvar visit func(pkgs map[string]*Package)\n\tvisit = func(pkgs map[string]*Package) {\n\t\tfor _, p := range pkgs {\n\t\t\tlpkg := ld.pkgs[p.ID]\n\t\t\tif !seen[lpkg] {\n\t\t\t\tseen[lpkg] = true\n\t\t\t\tview[lpkg.PkgPath] = lpkg.Types\n\t\t\t\tvisit(lpkg.Imports)\n\t\t\t}\n\t\t}\n\t}\n\tvisit(lpkg.Imports)\n\n\tviewLen := len(view) + 1 // adding the self package\n\t// Parse the export data.\n\t// (May modify incomplete packages in view but not create new ones.)\n\ttpkg, err := gcexportdata.Read(r, ld.Fset, view, lpkg.PkgPath)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"reading %s: %v\", lpkg.ExportFile, err)\n\t}\n\tif _, ok := view[\"go.shape\"]; ok {\n\t\t// Account for the pseudopackage \"go.shape\" that gets\n\t\t// created by generic code.\n\t\tviewLen++\n\t}\n\tif viewLen != len(view) {\n\t\tlog.Panicf(\"golang.org/x/tools/go/packages: unexpected new packages during load of %s\", lpkg.PkgPath)\n\t}\n\n\tlpkg.Types = tpkg\n\tlpkg.IllTyped = false\n\treturn nil\n}\n\n// impliedLoadMode returns loadMode with its dependencies.\nfunc impliedLoadMode(loadMode LoadMode) LoadMode {\n\tif loadMode&(NeedDeps|NeedTypes|NeedTypesInfo) != 0 {\n\t\t// All these things require knowing the import graph.\n\t\tloadMode |= NeedImports\n\t}\n\tif loadMode&NeedTypes != 0 {\n\t\t// Types require the GoVersion from Module.\n\t\tloadMode |= NeedModule\n\t}\n\n\treturn loadMode\n}\n\nfunc usesExportData(cfg *Config) bool {\n\treturn cfg.Mode&NeedExportFile != 0 || cfg.Mode&NeedTypes != 0 && cfg.Mode&NeedDeps == 0\n}\n\ntype unit struct{}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/go/packages/visit.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage packages\n\nimport (\n\t\"cmp\"\n\t\"fmt\"\n\t\"iter\"\n\t\"os\"\n\t\"slices\"\n)\n\n// Visit visits all the packages in the import graph whose roots are\n// pkgs, calling the optional pre function the first time each package\n// is encountered (preorder), and the optional post function after a\n// package's dependencies have been visited (postorder).\n// The boolean result of pre(pkg) determines whether\n// the imports of package pkg are visited.\n//\n// Example:\n//\n//\tpkgs, err := Load(...)\n//\tif err != nil { ... }\n//\tVisit(pkgs, nil, func(pkg *Package) {\n//\t\tlog.Println(pkg)\n//\t})\n//\n// In most cases, it is more convenient to use [Postorder]:\n//\n//\tfor pkg := range Postorder(pkgs) {\n//\t\tlog.Println(pkg)\n//\t}\nfunc Visit(pkgs []*Package, pre func(*Package) bool, post func(*Package)) {\n\tseen := make(map[*Package]bool)\n\tvar visit func(*Package)\n\tvisit = func(pkg *Package) {\n\t\tif !seen[pkg] {\n\t\t\tseen[pkg] = true\n\n\t\t\tif pre == nil || pre(pkg) {\n\t\t\t\tfor _, imp := range sorted(pkg.Imports) { // for determinism\n\t\t\t\t\tvisit(imp)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif post != nil {\n\t\t\t\tpost(pkg)\n\t\t\t}\n\t\t}\n\t}\n\tfor _, pkg := range pkgs {\n\t\tvisit(pkg)\n\t}\n}\n\n// PrintErrors prints to os.Stderr the accumulated errors of all\n// packages in the import graph rooted at pkgs, dependencies first.\n// PrintErrors returns the number of errors printed.\nfunc PrintErrors(pkgs []*Package) int {\n\tvar n int\n\terrModules := make(map[*Module]bool)\n\tfor pkg := range Postorder(pkgs) {\n\t\tfor _, err := range pkg.Errors {\n\t\t\tfmt.Fprintln(os.Stderr, err)\n\t\t\tn++\n\t\t}\n\n\t\t// Print pkg.Module.Error once if present.\n\t\tmod := pkg.Module\n\t\tif mod != nil && mod.Error != nil && !errModules[mod] {\n\t\t\terrModules[mod] = true\n\t\t\tfmt.Fprintln(os.Stderr, mod.Error.Err)\n\t\t\tn++\n\t\t}\n\t}\n\treturn n\n}\n\n// Postorder returns an iterator over the packages in\n// the import graph whose roots are pkg.\n// Packages are enumerated in dependencies-first order.\nfunc Postorder(pkgs []*Package) iter.Seq[*Package] {\n\treturn func(yield func(*Package) bool) {\n\t\tseen := make(map[*Package]bool)\n\t\tvar visit func(*Package) bool\n\t\tvisit = func(pkg *Package) bool {\n\t\t\tif !seen[pkg] {\n\t\t\t\tseen[pkg] = true\n\t\t\t\tfor _, imp := range sorted(pkg.Imports) { // for determinism\n\t\t\t\t\tif !visit(imp) {\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif !yield(pkg) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true\n\t\t}\n\t\tfor _, pkg := range pkgs {\n\t\t\tif !visit(pkg) {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n}\n\n// -- copied from golang.org.x/tools/gopls/internal/util/moremaps --\n\n// sorted returns an iterator over the entries of m in key order.\nfunc sorted[M ~map[K]V, K cmp.Ordered, V any](m M) iter.Seq2[K, V] {\n\t// TODO(adonovan): use maps.Sorted if proposal #68598 is accepted.\n\treturn func(yield func(K, V) bool) {\n\t\tkeys := keySlice(m)\n\t\tslices.Sort(keys)\n\t\tfor _, k := range keys {\n\t\t\tif !yield(k, m[k]) {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n}\n\n// KeySlice returns the keys of the map M, like slices.Collect(maps.Keys(m)).\nfunc keySlice[M ~map[K]V, K comparable, V any](m M) []K {\n\tr := make([]K, 0, len(m))\n\tfor k := range m {\n\t\tr = append(r, k)\n\t}\n\treturn r\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/go/types/objectpath/objectpath.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package objectpath defines a naming scheme for types.Objects\n// (that is, named entities in Go programs) relative to their enclosing\n// package.\n//\n// Type-checker objects are canonical, so they are usually identified by\n// their address in memory (a pointer), but a pointer has meaning only\n// within one address space. By contrast, objectpath names allow the\n// identity of an object to be sent from one program to another,\n// establishing a correspondence between types.Object variables that are\n// distinct but logically equivalent.\n//\n// A single object may have multiple paths. In this example,\n//\n//\ttype A struct{ X int }\n//\ttype B A\n//\n// the field X has two paths due to its membership of both A and B.\n// The For(obj) function always returns one of these paths, arbitrarily\n// but consistently.\npackage objectpath\n\nimport (\n\t\"fmt\"\n\t\"go/types\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"golang.org/x/tools/internal/aliases\"\n\t\"golang.org/x/tools/internal/typesinternal\"\n)\n\n// TODO(adonovan): think about generic aliases.\n\n// A Path is an opaque name that identifies a types.Object\n// relative to its package. Conceptually, the name consists of a\n// sequence of destructuring operations applied to the package scope\n// to obtain the original object.\n// The name does not include the package itself.\ntype Path string\n\n// Encoding\n//\n// An object path is a textual and (with training) human-readable encoding\n// of a sequence of destructuring operators, starting from a types.Package.\n// The sequences represent a path through the package/object/type graph.\n// We classify these operators by their type:\n//\n//\tPO package->object\tPackage.Scope.Lookup\n//\tOT  object->type \tObject.Type\n//\tTT    type->type \tType.{Elem,Key,{,{,Recv}Type}Params,Results,Underlying,Rhs} [EKPRUTrCa]\n//\tTO   type->object\tType.{At,Field,Method,Obj} [AFMO]\n//\n// All valid paths start with a package and end at an object\n// and thus may be defined by the regular language:\n//\n//\tobjectpath = PO (OT TT* TO)*\n//\n// The concrete encoding follows directly:\n//   - The only PO operator is Package.Scope.Lookup, which requires an identifier.\n//   - The only OT operator is Object.Type,\n//     which we encode as '.' because dot cannot appear in an identifier.\n//   - The TT operators are encoded as [EKPRUTrCa];\n//     two of these ({,Recv}TypeParams) require an integer operand,\n//     which is encoded as a string of decimal digits.\n//   - The TO operators are encoded as [AFMO];\n//     three of these (At,Field,Method) require an integer operand,\n//     which is encoded as a string of decimal digits.\n//     These indices are stable across different representations\n//     of the same package, even source and export data.\n//     The indices used are implementation specific and may not correspond to\n//     the argument to the go/types function.\n//\n// In the example below,\n//\n//\tpackage p\n//\n//\ttype T interface {\n//\t\tf() (a string, b struct{ X int })\n//\t}\n//\n// field X has the path \"T.UM0.RA1.F0\",\n// representing the following sequence of operations:\n//\n//\tp.Lookup(\"T\")\t\t\t\t\tT\n//\t.Type().Underlying().Method(0).\t\t\tf\n//\t.Type().Results().At(1)\t\t\t\tb\n//\t.Type().Field(0)\t\t\t\t\tX\n//\n// The encoding is not maximally compact---every R or P is\n// followed by an A, for example---but this simplifies the\n// encoder and decoder.\nconst (\n\t// object->type operators\n\topType = '.' // .Type()\t\t  (Object)\n\n\t// type->type operators\n\topElem          = 'E' // .Elem()\t\t(Pointer, Slice, Array, Chan, Map)\n\topKey           = 'K' // .Key()\t\t\t(Map)\n\topParams        = 'P' // .Params()\t\t(Signature)\n\topResults       = 'R' // .Results()\t\t(Signature)\n\topUnderlying    = 'U' // .Underlying()\t\t(Named)\n\topTypeParam     = 'T' // .TypeParams.At(i)\t(Named, Signature)\n\topRecvTypeParam = 'r' // .RecvTypeParams.At(i)\t(Signature)\n\topConstraint    = 'C' // .Constraint()\t\t(TypeParam)\n\topRhs           = 'a' // .Rhs()\t\t\t(Alias)\n\n\t// type->object operators\n\topAt     = 'A' // .At(i)\t(Tuple)\n\topField  = 'F' // .Field(i)\t(Struct)\n\topMethod = 'M' // .Method(i)\t(Named or Interface; not Struct: \"promoted\" names are ignored)\n\topObj    = 'O' // .Obj()\t(Named, TypeParam)\n)\n\n// For is equivalent to new(Encoder).For(obj).\n//\n// It may be more efficient to reuse a single Encoder across several calls.\nfunc For(obj types.Object) (Path, error) {\n\treturn new(Encoder).For(obj)\n}\n\n// An Encoder amortizes the cost of encoding the paths of multiple objects.\n// The zero value of an Encoder is ready to use.\ntype Encoder struct {\n\tscopeMemo map[*types.Scope][]types.Object // memoization of scopeObjects\n}\n\n// For returns the path to an object relative to its package,\n// or an error if the object is not accessible from the package's Scope.\n//\n// The For function guarantees to return a path only for the following objects:\n// - package-level types\n// - exported package-level non-types\n// - methods\n// - parameter and result variables\n// - struct fields\n// These objects are sufficient to define the API of their package.\n// The objects described by a package's export data are drawn from this set.\n//\n// The set of objects accessible from a package's Scope depends on\n// whether the package was produced by type-checking syntax, or\n// reading export data; the latter may have a smaller Scope since\n// export data trims objects that are not reachable from an exported\n// declaration. For example, the For function will return a path for\n// an exported method of an unexported type that is not reachable\n// from any public declaration; this path will cause the Object\n// function to fail if called on a package loaded from export data.\n// TODO(adonovan): is this a bug or feature? Should this package\n// compute accessibility in the same way?\n//\n// For does not return a path for predeclared names, imported package\n// names, local names, and unexported package-level names (except\n// types).\n//\n// Example: given this definition,\n//\n//\tpackage p\n//\n//\ttype T interface {\n//\t\tf() (a string, b struct{ X int })\n//\t}\n//\n// For(X) would return a path that denotes the following sequence of operations:\n//\n//\tp.Scope().Lookup(\"T\")\t\t\t\t(TypeName T)\n//\t.Type().Underlying().Method(0).\t\t\t(method Func f)\n//\t.Type().Results().At(1)\t\t\t\t(field Var b)\n//\t.Type().Field(0)\t\t\t\t\t(field Var X)\n//\n// where p is the package (*types.Package) to which X belongs.\nfunc (enc *Encoder) For(obj types.Object) (Path, error) {\n\tpkg := obj.Pkg()\n\n\t// This table lists the cases of interest.\n\t//\n\t// Object\t\t\t\tAction\n\t// ------                               ------\n\t// nil\t\t\t\t\treject\n\t// builtin\t\t\t\treject\n\t// pkgname\t\t\t\treject\n\t// label\t\t\t\treject\n\t// var\n\t//    package-level\t\t\taccept\n\t//    func param/result\t\t\taccept\n\t//    local\t\t\t\treject\n\t//    struct field\t\t\taccept\n\t// const\n\t//    package-level\t\t\taccept\n\t//    local\t\t\t\treject\n\t// func\n\t//    package-level\t\t\taccept\n\t//    init functions\t\t\treject\n\t//    concrete method\t\t\taccept\n\t//    interface method\t\t\taccept\n\t// type\n\t//    package-level\t\t\taccept\n\t//    local\t\t\t\treject\n\t//\n\t// The only accessible package-level objects are members of pkg itself.\n\t//\n\t// The cases are handled in four steps:\n\t//\n\t// 1. reject nil and builtin\n\t// 2. accept package-level objects\n\t// 3. reject obviously invalid objects\n\t// 4. search the API for the path to the param/result/field/method.\n\n\t// 1. reference to nil or builtin?\n\tif pkg == nil {\n\t\treturn \"\", fmt.Errorf(\"predeclared %s has no path\", obj)\n\t}\n\tscope := pkg.Scope()\n\n\t// 2. package-level object?\n\tif scope.Lookup(obj.Name()) == obj {\n\t\t// Only exported objects (and non-exported types) have a path.\n\t\t// Non-exported types may be referenced by other objects.\n\t\tif _, ok := obj.(*types.TypeName); !ok && !obj.Exported() {\n\t\t\treturn \"\", fmt.Errorf(\"no path for non-exported %v\", obj)\n\t\t}\n\t\treturn Path(obj.Name()), nil\n\t}\n\n\t// 3. Not a package-level object.\n\t//    Reject obviously non-viable cases.\n\tswitch obj := obj.(type) {\n\tcase *types.TypeName:\n\t\tif _, ok := types.Unalias(obj.Type()).(*types.TypeParam); !ok {\n\t\t\t// With the exception of type parameters, only package-level type names\n\t\t\t// have a path.\n\t\t\treturn \"\", fmt.Errorf(\"no path for %v\", obj)\n\t\t}\n\tcase *types.Const, // Only package-level constants have a path.\n\t\t*types.Label,   // Labels are function-local.\n\t\t*types.PkgName: // PkgNames are file-local.\n\t\treturn \"\", fmt.Errorf(\"no path for %v\", obj)\n\n\tcase *types.Var:\n\t\t// Could be:\n\t\t// - a field (obj.IsField())\n\t\t// - a func parameter or result\n\t\t// - a local var.\n\t\t// Sadly there is no way to distinguish\n\t\t// a param/result from a local\n\t\t// so we must proceed to the find.\n\n\tcase *types.Func:\n\t\t// A func, if not package-level, must be a method.\n\t\tif recv := obj.Signature().Recv(); recv == nil {\n\t\t\treturn \"\", fmt.Errorf(\"func is not a method: %v\", obj)\n\t\t}\n\n\t\tif path, ok := enc.concreteMethod(obj); ok {\n\t\t\t// Fast path for concrete methods that avoids looping over scope.\n\t\t\treturn path, nil\n\t\t}\n\n\tdefault:\n\t\tpanic(obj)\n\t}\n\n\t// 4. Search the API for the path to the var (field/param/result) or method.\n\n\t// First inspect package-level named types.\n\t// In the presence of path aliases, these give\n\t// the best paths because non-types may\n\t// refer to types, but not the reverse.\n\tempty := make([]byte, 0, 48) // initial space\n\tobjs := enc.scopeObjects(scope)\n\tfor _, o := range objs {\n\t\ttname, ok := o.(*types.TypeName)\n\t\tif !ok {\n\t\t\tcontinue // handle non-types in second pass\n\t\t}\n\n\t\tpath := append(empty, o.Name()...)\n\t\tpath = append(path, opType)\n\n\t\tT := o.Type()\n\t\tif alias, ok := T.(*types.Alias); ok {\n\t\t\tif r := findTypeParam(obj, aliases.TypeParams(alias), path, opTypeParam); r != nil {\n\t\t\t\treturn Path(r), nil\n\t\t\t}\n\t\t\tif r := find(obj, aliases.Rhs(alias), append(path, opRhs)); r != nil {\n\t\t\t\treturn Path(r), nil\n\t\t\t}\n\n\t\t} else if tname.IsAlias() {\n\t\t\t// legacy alias\n\t\t\tif r := find(obj, T, path); r != nil {\n\t\t\t\treturn Path(r), nil\n\t\t\t}\n\n\t\t} else if named, ok := T.(*types.Named); ok {\n\t\t\t// defined (named) type\n\t\t\tif r := findTypeParam(obj, named.TypeParams(), path, opTypeParam); r != nil {\n\t\t\t\treturn Path(r), nil\n\t\t\t}\n\t\t\tif r := find(obj, named.Underlying(), append(path, opUnderlying)); r != nil {\n\t\t\t\treturn Path(r), nil\n\t\t\t}\n\t\t}\n\t}\n\n\t// Then inspect everything else:\n\t// non-types, and declared methods of defined types.\n\tfor _, o := range objs {\n\t\tpath := append(empty, o.Name()...)\n\t\tif _, ok := o.(*types.TypeName); !ok {\n\t\t\tif o.Exported() {\n\t\t\t\t// exported non-type (const, var, func)\n\t\t\t\tif r := find(obj, o.Type(), append(path, opType)); r != nil {\n\t\t\t\t\treturn Path(r), nil\n\t\t\t\t}\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\t// Inspect declared methods of defined types.\n\t\tif T, ok := types.Unalias(o.Type()).(*types.Named); ok {\n\t\t\tpath = append(path, opType)\n\t\t\t// The method index here is always with respect\n\t\t\t// to the underlying go/types data structures,\n\t\t\t// which ultimately derives from source order\n\t\t\t// and must be preserved by export data.\n\t\t\tfor i := 0; i < T.NumMethods(); i++ {\n\t\t\t\tm := T.Method(i)\n\t\t\t\tpath2 := appendOpArg(path, opMethod, i)\n\t\t\t\tif m == obj {\n\t\t\t\t\treturn Path(path2), nil // found declared method\n\t\t\t\t}\n\t\t\t\tif r := find(obj, m.Type(), append(path2, opType)); r != nil {\n\t\t\t\t\treturn Path(r), nil\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn \"\", fmt.Errorf(\"can't find path for %v in %s\", obj, pkg.Path())\n}\n\nfunc appendOpArg(path []byte, op byte, arg int) []byte {\n\tpath = append(path, op)\n\tpath = strconv.AppendInt(path, int64(arg), 10)\n\treturn path\n}\n\n// concreteMethod returns the path for meth, which must have a non-nil receiver.\n// The second return value indicates success and may be false if the method is\n// an interface method or if it is an instantiated method.\n//\n// This function is just an optimization that avoids the general scope walking\n// approach. You are expected to fall back to the general approach if this\n// function fails.\nfunc (enc *Encoder) concreteMethod(meth *types.Func) (Path, bool) {\n\t// Concrete methods can only be declared on package-scoped named types. For\n\t// that reason we can skip the expensive walk over the package scope: the\n\t// path will always be package -> named type -> method. We can trivially get\n\t// the type name from the receiver, and only have to look over the type's\n\t// methods to find the method index.\n\t//\n\t// Methods on generic types require special consideration, however. Consider\n\t// the following package:\n\t//\n\t// \tL1: type S[T any] struct{}\n\t// \tL2: func (recv S[A]) Foo() { recv.Bar() }\n\t// \tL3: func (recv S[B]) Bar() { }\n\t// \tL4: type Alias = S[int]\n\t// \tL5: func _[T any]() { var s S[int]; s.Foo() }\n\t//\n\t// The receivers of methods on generic types are instantiations. L2 and L3\n\t// instantiate S with the type-parameters A and B, which are scoped to the\n\t// respective methods. L4 and L5 each instantiate S with int. Each of these\n\t// instantiations has its own method set, full of methods (and thus objects)\n\t// with receivers whose types are the respective instantiations. In other\n\t// words, we have\n\t//\n\t// S[A].Foo, S[A].Bar\n\t// S[B].Foo, S[B].Bar\n\t// S[int].Foo, S[int].Bar\n\t//\n\t// We may thus be trying to produce object paths for any of these objects.\n\t//\n\t// S[A].Foo and S[B].Bar are the origin methods, and their paths are S.Foo\n\t// and S.Bar, which are the paths that this function naturally produces.\n\t//\n\t// S[A].Bar, S[B].Foo, and both methods on S[int] are instantiations that\n\t// don't correspond to the origin methods. For S[int], this is significant.\n\t// The most precise object path for S[int].Foo, for example, is Alias.Foo,\n\t// not S.Foo. Our function, however, would produce S.Foo, which would\n\t// resolve to a different object.\n\t//\n\t// For S[A].Bar and S[B].Foo it could be argued that S.Bar and S.Foo are\n\t// still the correct paths, since only the origin methods have meaningful\n\t// paths. But this is likely only true for trivial cases and has edge cases.\n\t// Since this function is only an optimization, we err on the side of giving\n\t// up, deferring to the slower but definitely correct algorithm. Most users\n\t// of objectpath will only be giving us origin methods, anyway, as referring\n\t// to instantiated methods is usually not useful.\n\n\tif meth.Origin() != meth {\n\t\treturn \"\", false\n\t}\n\n\t_, named := typesinternal.ReceiverNamed(meth.Signature().Recv())\n\tif named == nil {\n\t\treturn \"\", false\n\t}\n\n\tif types.IsInterface(named) {\n\t\t// Named interfaces don't have to be package-scoped\n\t\t//\n\t\t// TODO(dominikh): opt: if scope.Lookup(name) == named, then we can apply this optimization to interface\n\t\t// methods, too, I think.\n\t\treturn \"\", false\n\t}\n\n\t// Preallocate space for the name, opType, opMethod, and some digits.\n\tname := named.Obj().Name()\n\tpath := make([]byte, 0, len(name)+8)\n\tpath = append(path, name...)\n\tpath = append(path, opType)\n\n\t// Method indices are w.r.t. the go/types data structures,\n\t// ultimately deriving from source order,\n\t// which is preserved by export data.\n\tfor i := 0; i < named.NumMethods(); i++ {\n\t\tif named.Method(i) == meth {\n\t\t\tpath = appendOpArg(path, opMethod, i)\n\t\t\treturn Path(path), true\n\t\t}\n\t}\n\n\t// Due to golang/go#59944, go/types fails to associate the receiver with\n\t// certain methods on cgo types.\n\t//\n\t// TODO(rfindley): replace this panic once golang/go#59944 is fixed in all Go\n\t// versions gopls supports.\n\treturn \"\", false\n\t// panic(fmt.Sprintf(\"couldn't find method %s on type %s; methods: %#v\", meth, named, enc.namedMethods(named)))\n}\n\n// find finds obj within type T, returning the path to it, or nil if not found.\n//\n// The seen map is used to short circuit cycles through type parameters. If\n// nil, it will be allocated as necessary.\n//\n// The seenMethods map is used internally to short circuit cycles through\n// interface methods, such as occur in the following example:\n//\n//\ttype I interface { f() interface{I} }\n//\n// See golang/go#68046 for details.\nfunc find(obj types.Object, T types.Type, path []byte) []byte {\n\treturn (&finder{obj: obj}).find(T, path)\n}\n\n// finder closes over search state for a call to find.\ntype finder struct {\n\tobj             types.Object             // the sought object\n\tseenTParamNames map[*types.TypeName]bool // for cycle breaking through type parameters\n\tseenMethods     map[*types.Func]bool     // for cycle breaking through recursive interfaces\n}\n\nfunc (f *finder) find(T types.Type, path []byte) []byte {\n\tswitch T := T.(type) {\n\tcase *types.Alias:\n\t\treturn f.find(types.Unalias(T), path)\n\tcase *types.Basic, *types.Named:\n\t\t// Named types belonging to pkg were handled already,\n\t\t// so T must belong to another package. No path.\n\t\treturn nil\n\tcase *types.Pointer:\n\t\treturn f.find(T.Elem(), append(path, opElem))\n\tcase *types.Slice:\n\t\treturn f.find(T.Elem(), append(path, opElem))\n\tcase *types.Array:\n\t\treturn f.find(T.Elem(), append(path, opElem))\n\tcase *types.Chan:\n\t\treturn f.find(T.Elem(), append(path, opElem))\n\tcase *types.Map:\n\t\tif r := f.find(T.Key(), append(path, opKey)); r != nil {\n\t\t\treturn r\n\t\t}\n\t\treturn f.find(T.Elem(), append(path, opElem))\n\tcase *types.Signature:\n\t\tif r := f.findTypeParam(T.RecvTypeParams(), path, opRecvTypeParam); r != nil {\n\t\t\treturn r\n\t\t}\n\t\tif r := f.findTypeParam(T.TypeParams(), path, opTypeParam); r != nil {\n\t\t\treturn r\n\t\t}\n\t\tif r := f.find(T.Params(), append(path, opParams)); r != nil {\n\t\t\treturn r\n\t\t}\n\t\treturn f.find(T.Results(), append(path, opResults))\n\tcase *types.Struct:\n\t\tfor i := 0; i < T.NumFields(); i++ {\n\t\t\tfld := T.Field(i)\n\t\t\tpath2 := appendOpArg(path, opField, i)\n\t\t\tif fld == f.obj {\n\t\t\t\treturn path2 // found field var\n\t\t\t}\n\t\t\tif r := f.find(fld.Type(), append(path2, opType)); r != nil {\n\t\t\t\treturn r\n\t\t\t}\n\t\t}\n\t\treturn nil\n\tcase *types.Tuple:\n\t\tfor i := 0; i < T.Len(); i++ {\n\t\t\tv := T.At(i)\n\t\t\tpath2 := appendOpArg(path, opAt, i)\n\t\t\tif v == f.obj {\n\t\t\t\treturn path2 // found param/result var\n\t\t\t}\n\t\t\tif r := f.find(v.Type(), append(path2, opType)); r != nil {\n\t\t\t\treturn r\n\t\t\t}\n\t\t}\n\t\treturn nil\n\tcase *types.Interface:\n\t\tfor i := 0; i < T.NumMethods(); i++ {\n\t\t\tm := T.Method(i)\n\t\t\tif f.seenMethods[m] {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t\tpath2 := appendOpArg(path, opMethod, i)\n\t\t\tif m == f.obj {\n\t\t\t\treturn path2 // found interface method\n\t\t\t}\n\t\t\tif f.seenMethods == nil {\n\t\t\t\tf.seenMethods = make(map[*types.Func]bool)\n\t\t\t}\n\t\t\tf.seenMethods[m] = true\n\t\t\tif r := f.find(m.Type(), append(path2, opType)); r != nil {\n\t\t\t\treturn r\n\t\t\t}\n\t\t}\n\t\treturn nil\n\tcase *types.TypeParam:\n\t\tname := T.Obj()\n\t\tif f.seenTParamNames[name] {\n\t\t\treturn nil\n\t\t}\n\t\tif name == f.obj {\n\t\t\treturn append(path, opObj)\n\t\t}\n\t\tif f.seenTParamNames == nil {\n\t\t\tf.seenTParamNames = make(map[*types.TypeName]bool)\n\t\t}\n\t\tf.seenTParamNames[name] = true\n\t\tif r := f.find(T.Constraint(), append(path, opConstraint)); r != nil {\n\t\t\treturn r\n\t\t}\n\t\treturn nil\n\t}\n\tpanic(T)\n}\n\nfunc findTypeParam(obj types.Object, list *types.TypeParamList, path []byte, op byte) []byte {\n\treturn (&finder{obj: obj}).findTypeParam(list, path, op)\n}\n\nfunc (f *finder) findTypeParam(list *types.TypeParamList, path []byte, op byte) []byte {\n\tfor i := 0; i < list.Len(); i++ {\n\t\ttparam := list.At(i)\n\t\tpath2 := appendOpArg(path, op, i)\n\t\tif r := f.find(tparam, path2); r != nil {\n\t\t\treturn r\n\t\t}\n\t}\n\treturn nil\n}\n\n// Object returns the object denoted by path p within the package pkg.\nfunc Object(pkg *types.Package, p Path) (types.Object, error) {\n\tpathstr := string(p)\n\tif pathstr == \"\" {\n\t\treturn nil, fmt.Errorf(\"empty path\")\n\t}\n\n\tvar pkgobj, suffix string\n\tif dot := strings.IndexByte(pathstr, opType); dot < 0 {\n\t\tpkgobj = pathstr\n\t} else {\n\t\tpkgobj = pathstr[:dot]\n\t\tsuffix = pathstr[dot:] // suffix starts with \".\"\n\t}\n\n\tobj := pkg.Scope().Lookup(pkgobj)\n\tif obj == nil {\n\t\treturn nil, fmt.Errorf(\"package %s does not contain %q\", pkg.Path(), pkgobj)\n\t}\n\n\t// abstraction of *types.{Pointer,Slice,Array,Chan,Map}\n\ttype hasElem interface {\n\t\tElem() types.Type\n\t}\n\t// abstraction of *types.{Named,Signature}\n\ttype hasTypeParams interface {\n\t\tTypeParams() *types.TypeParamList\n\t}\n\t// abstraction of *types.{Alias,Named,TypeParam}\n\ttype hasObj interface {\n\t\tObj() *types.TypeName\n\t}\n\n\t// The loop state is the pair (t, obj),\n\t// exactly one of which is non-nil, initially obj.\n\t// All suffixes start with '.' (the only object->type operation),\n\t// followed by optional type->type operations,\n\t// then a type->object operation.\n\t// The cycle then repeats.\n\tvar t types.Type\n\tfor suffix != \"\" {\n\t\tcode := suffix[0]\n\t\tsuffix = suffix[1:]\n\n\t\t// Codes [AFMTr] have an integer operand.\n\t\tvar index int\n\t\tswitch code {\n\t\tcase opAt, opField, opMethod, opTypeParam, opRecvTypeParam:\n\t\t\trest := strings.TrimLeft(suffix, \"0123456789\")\n\t\t\tnumerals := suffix[:len(suffix)-len(rest)]\n\t\t\tsuffix = rest\n\t\t\ti, err := strconv.Atoi(numerals)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"invalid path: bad numeric operand %q for code %q\", numerals, code)\n\t\t\t}\n\t\t\tindex = int(i)\n\t\tcase opObj:\n\t\t\t// no operand\n\t\tdefault:\n\t\t\t// The suffix must end with a type->object operation.\n\t\t\tif suffix == \"\" {\n\t\t\t\treturn nil, fmt.Errorf(\"invalid path: ends with %q, want [AFMO]\", code)\n\t\t\t}\n\t\t}\n\n\t\tif code == opType {\n\t\t\tif t != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"invalid path: unexpected %q in type context\", opType)\n\t\t\t}\n\t\t\tt = obj.Type()\n\t\t\tobj = nil\n\t\t\tcontinue\n\t\t}\n\n\t\tif t == nil {\n\t\t\treturn nil, fmt.Errorf(\"invalid path: code %q in object context\", code)\n\t\t}\n\n\t\t// Inv: t != nil, obj == nil\n\n\t\tt = types.Unalias(t)\n\t\tswitch code {\n\t\tcase opElem:\n\t\t\thasElem, ok := t.(hasElem) // Pointer, Slice, Array, Chan, Map\n\t\t\tif !ok {\n\t\t\t\treturn nil, fmt.Errorf(\"cannot apply %q to %s (got %T, want pointer, slice, array, chan or map)\", code, t, t)\n\t\t\t}\n\t\t\tt = hasElem.Elem()\n\n\t\tcase opKey:\n\t\t\tmapType, ok := t.(*types.Map)\n\t\t\tif !ok {\n\t\t\t\treturn nil, fmt.Errorf(\"cannot apply %q to %s (got %T, want map)\", code, t, t)\n\t\t\t}\n\t\t\tt = mapType.Key()\n\n\t\tcase opParams:\n\t\t\tsig, ok := t.(*types.Signature)\n\t\t\tif !ok {\n\t\t\t\treturn nil, fmt.Errorf(\"cannot apply %q to %s (got %T, want signature)\", code, t, t)\n\t\t\t}\n\t\t\tt = sig.Params()\n\n\t\tcase opResults:\n\t\t\tsig, ok := t.(*types.Signature)\n\t\t\tif !ok {\n\t\t\t\treturn nil, fmt.Errorf(\"cannot apply %q to %s (got %T, want signature)\", code, t, t)\n\t\t\t}\n\t\t\tt = sig.Results()\n\n\t\tcase opUnderlying:\n\t\t\tnamed, ok := t.(*types.Named)\n\t\t\tif !ok {\n\t\t\t\treturn nil, fmt.Errorf(\"cannot apply %q to %s (got %T, want named)\", code, t, t)\n\t\t\t}\n\t\t\tt = named.Underlying()\n\n\t\tcase opRhs:\n\t\t\tif alias, ok := t.(*types.Alias); ok {\n\t\t\t\tt = aliases.Rhs(alias)\n\t\t\t} else if false && aliases.Enabled() {\n\t\t\t\t// The Enabled check is too expensive, so for now we\n\t\t\t\t// simply assume that aliases are not enabled.\n\t\t\t\t//\n\t\t\t\t// Now that go1.24 is assured, we should be able to\n\t\t\t\t// replace this with \"if true {\", but it causes tests\n\t\t\t\t// to fail. TODO(adonovan): investigate.\n\t\t\t\treturn nil, fmt.Errorf(\"cannot apply %q to %s (got %T, want alias)\", code, t, t)\n\t\t\t}\n\n\t\tcase opTypeParam:\n\t\t\thasTypeParams, ok := t.(hasTypeParams) // Named, Signature\n\t\t\tif !ok {\n\t\t\t\treturn nil, fmt.Errorf(\"cannot apply %q to %s (got %T, want named or signature)\", code, t, t)\n\t\t\t}\n\t\t\ttparams := hasTypeParams.TypeParams()\n\t\t\tif n := tparams.Len(); index >= n {\n\t\t\t\treturn nil, fmt.Errorf(\"tuple index %d out of range [0-%d)\", index, n)\n\t\t\t}\n\t\t\tt = tparams.At(index)\n\n\t\tcase opRecvTypeParam:\n\t\t\tsig, ok := t.(*types.Signature) // Signature\n\t\t\tif !ok {\n\t\t\t\treturn nil, fmt.Errorf(\"cannot apply %q to %s (got %T, want signature)\", code, t, t)\n\t\t\t}\n\t\t\trtparams := sig.RecvTypeParams()\n\t\t\tif n := rtparams.Len(); index >= n {\n\t\t\t\treturn nil, fmt.Errorf(\"tuple index %d out of range [0-%d)\", index, n)\n\t\t\t}\n\t\t\tt = rtparams.At(index)\n\n\t\tcase opConstraint:\n\t\t\ttparam, ok := t.(*types.TypeParam)\n\t\t\tif !ok {\n\t\t\t\treturn nil, fmt.Errorf(\"cannot apply %q to %s (got %T, want type parameter)\", code, t, t)\n\t\t\t}\n\t\t\tt = tparam.Constraint()\n\n\t\tcase opAt:\n\t\t\ttuple, ok := t.(*types.Tuple)\n\t\t\tif !ok {\n\t\t\t\treturn nil, fmt.Errorf(\"cannot apply %q to %s (got %T, want tuple)\", code, t, t)\n\t\t\t}\n\t\t\tif n := tuple.Len(); index >= n {\n\t\t\t\treturn nil, fmt.Errorf(\"tuple index %d out of range [0-%d)\", index, n)\n\t\t\t}\n\t\t\tobj = tuple.At(index)\n\t\t\tt = nil\n\n\t\tcase opField:\n\t\t\tstructType, ok := t.(*types.Struct)\n\t\t\tif !ok {\n\t\t\t\treturn nil, fmt.Errorf(\"cannot apply %q to %s (got %T, want struct)\", code, t, t)\n\t\t\t}\n\t\t\tif n := structType.NumFields(); index >= n {\n\t\t\t\treturn nil, fmt.Errorf(\"field index %d out of range [0-%d)\", index, n)\n\t\t\t}\n\t\t\tobj = structType.Field(index)\n\t\t\tt = nil\n\n\t\tcase opMethod:\n\t\t\tswitch t := t.(type) {\n\t\t\tcase *types.Interface:\n\t\t\t\tif index >= t.NumMethods() {\n\t\t\t\t\treturn nil, fmt.Errorf(\"method index %d out of range [0-%d)\", index, t.NumMethods())\n\t\t\t\t}\n\t\t\t\tobj = t.Method(index) // Id-ordered\n\n\t\t\tcase *types.Named:\n\t\t\t\tif index >= t.NumMethods() {\n\t\t\t\t\treturn nil, fmt.Errorf(\"method index %d out of range [0-%d)\", index, t.NumMethods())\n\t\t\t\t}\n\t\t\t\tobj = t.Method(index)\n\n\t\t\tdefault:\n\t\t\t\treturn nil, fmt.Errorf(\"cannot apply %q to %s (got %T, want interface or named)\", code, t, t)\n\t\t\t}\n\t\t\tt = nil\n\n\t\tcase opObj:\n\t\t\thasObj, ok := t.(hasObj)\n\t\t\tif !ok {\n\t\t\t\treturn nil, fmt.Errorf(\"cannot apply %q to %s (got %T, want named or type param)\", code, t, t)\n\t\t\t}\n\t\t\tobj = hasObj.Obj()\n\t\t\tt = nil\n\n\t\tdefault:\n\t\t\treturn nil, fmt.Errorf(\"invalid path: unknown code %q\", code)\n\t\t}\n\t}\n\n\tif obj == nil {\n\t\tpanic(p) // path does not end in an object-valued operator\n\t}\n\n\tif obj.Pkg() != pkg {\n\t\treturn nil, fmt.Errorf(\"path denotes %s, which belongs to a different package\", obj)\n\t}\n\n\treturn obj, nil // success\n}\n\n// scopeObjects is a memoization of scope objects.\n// Callers must not modify the result.\nfunc (enc *Encoder) scopeObjects(scope *types.Scope) []types.Object {\n\tm := enc.scopeMemo\n\tif m == nil {\n\t\tm = make(map[*types.Scope][]types.Object)\n\t\tenc.scopeMemo = m\n\t}\n\tobjs, ok := m[scope]\n\tif !ok {\n\t\tnames := scope.Names() // allocates and sorts\n\t\tobjs = make([]types.Object, len(names))\n\t\tfor i, name := range names {\n\t\t\tobjs[i] = scope.Lookup(name)\n\t\t}\n\t\tm[scope] = objs\n\t}\n\treturn objs\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/go/types/typeutil/callee.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage typeutil\n\nimport (\n\t\"go/ast\"\n\t\"go/types\"\n\t_ \"unsafe\" // for linkname\n)\n\n// Callee returns the named target of a function call, if any:\n// a function, method, builtin, or variable.\n// It returns nil for a T(x) conversion.\n//\n// Functions and methods may potentially have type parameters.\n//\n// Note: for calls of instantiated functions and methods, Callee returns\n// the corresponding generic function or method on the generic type.\nfunc Callee(info *types.Info, call *ast.CallExpr) types.Object {\n\tobj := info.Uses[usedIdent(info, call.Fun)]\n\tif obj == nil {\n\t\treturn nil\n\t}\n\tif _, ok := obj.(*types.TypeName); ok {\n\t\treturn nil\n\t}\n\treturn obj\n}\n\n// StaticCallee returns the target (function or method) of a static function\n// call, if any. It returns nil for calls to builtins.\n//\n// Note: for calls of instantiated functions and methods, StaticCallee returns\n// the corresponding generic function or method on the generic type.\nfunc StaticCallee(info *types.Info, call *ast.CallExpr) *types.Func {\n\tobj := info.Uses[usedIdent(info, call.Fun)]\n\tfn, _ := obj.(*types.Func)\n\tif fn == nil || interfaceMethod(fn) {\n\t\treturn nil\n\t}\n\treturn fn\n}\n\n// usedIdent is the implementation of [internal/typesinternal.UsedIdent].\n// It returns the identifier associated with e.\n// See typesinternal.UsedIdent for a fuller description.\n// This function should live in typesinternal, but cannot because it would\n// create an import cycle.\n//\n//go:linkname usedIdent golang.org/x/tools/go/types/typeutil.usedIdent\nfunc usedIdent(info *types.Info, e ast.Expr) *ast.Ident {\n\tif info.Types == nil || info.Uses == nil {\n\t\tpanic(\"one of info.Types or info.Uses is nil; both must be populated\")\n\t}\n\t// Look through type instantiation if necessary.\n\tswitch d := ast.Unparen(e).(type) {\n\tcase *ast.IndexExpr:\n\t\tif info.Types[d.Index].IsType() {\n\t\t\te = d.X\n\t\t}\n\tcase *ast.IndexListExpr:\n\t\te = d.X\n\t}\n\n\tswitch e := ast.Unparen(e).(type) {\n\t// info.Uses always has the object we want, even for selector expressions.\n\t// We don't need info.Selections.\n\t// See go/types/recording.go:recordSelection.\n\tcase *ast.Ident:\n\t\treturn e\n\tcase *ast.SelectorExpr:\n\t\treturn e.Sel\n\t}\n\treturn nil\n}\n\n// interfaceMethod reports whether its argument is a method of an interface.\n// This function should live in typesinternal, but cannot because it would create an import cycle.\n//\n//go:linkname interfaceMethod golang.org/x/tools/go/types/typeutil.interfaceMethod\nfunc interfaceMethod(f *types.Func) bool {\n\trecv := f.Signature().Recv()\n\treturn recv != nil && types.IsInterface(recv.Type())\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/go/types/typeutil/imports.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage typeutil\n\nimport \"go/types\"\n\n// Dependencies returns all dependencies of the specified packages.\n//\n// Dependent packages appear in topological order: if package P imports\n// package Q, Q appears earlier than P in the result.\n// The algorithm follows import statements in the order they\n// appear in the source code, so the result is a total order.\nfunc Dependencies(pkgs ...*types.Package) []*types.Package {\n\tvar result []*types.Package\n\tseen := make(map[*types.Package]bool)\n\tvar visit func(pkgs []*types.Package)\n\tvisit = func(pkgs []*types.Package) {\n\t\tfor _, p := range pkgs {\n\t\t\tif !seen[p] {\n\t\t\t\tseen[p] = true\n\t\t\t\tvisit(p.Imports())\n\t\t\t\tresult = append(result, p)\n\t\t\t}\n\t\t}\n\t}\n\tvisit(pkgs)\n\treturn result\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/go/types/typeutil/map.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package typeutil defines various utilities for types, such as [Map],\n// a hash table that maps [types.Type] to any value.\npackage typeutil\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"go/types\"\n\t\"hash/maphash\"\n\n\t\"golang.org/x/tools/internal/typeparams\"\n)\n\n// Map is a hash-table-based mapping from types (types.Type) to\n// arbitrary values.  The concrete types that implement\n// the Type interface are pointers.  Since they are not canonicalized,\n// == cannot be used to check for equivalence, and thus we cannot\n// simply use a Go map.\n//\n// Just as with map[K]V, a nil *Map is a valid empty map.\n//\n// Read-only map operations ([Map.At], [Map.Len], and so on) may\n// safely be called concurrently.\n//\n// TODO(adonovan): deprecate in favor of https://go.dev/issues/69420\n// and 69559, if the latter proposals for a generic hash-map type and\n// a types.Hash function are accepted.\ntype Map struct {\n\ttable  map[uint32][]entry // maps hash to bucket; entry.key==nil means unused\n\tlength int                // number of map entries\n}\n\n// entry is an entry (key/value association) in a hash bucket.\ntype entry struct {\n\tkey   types.Type\n\tvalue any\n}\n\n// SetHasher has no effect.\n//\n// It is a relic of an optimization that is no longer profitable. Do\n// not use [Hasher], [MakeHasher], or [SetHasher] in new code.\nfunc (m *Map) SetHasher(Hasher) {}\n\n// Delete removes the entry with the given key, if any.\n// It returns true if the entry was found.\nfunc (m *Map) Delete(key types.Type) bool {\n\tif m != nil && m.table != nil {\n\t\thash := hash(key)\n\t\tbucket := m.table[hash]\n\t\tfor i, e := range bucket {\n\t\t\tif e.key != nil && types.Identical(key, e.key) {\n\t\t\t\t// We can't compact the bucket as it\n\t\t\t\t// would disturb iterators.\n\t\t\t\tbucket[i] = entry{}\n\t\t\t\tm.length--\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t}\n\treturn false\n}\n\n// At returns the map entry for the given key.\n// The result is nil if the entry is not present.\nfunc (m *Map) At(key types.Type) any {\n\tif m != nil && m.table != nil {\n\t\tfor _, e := range m.table[hash(key)] {\n\t\t\tif e.key != nil && types.Identical(key, e.key) {\n\t\t\t\treturn e.value\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\n// Set sets the map entry for key to val,\n// and returns the previous entry, if any.\nfunc (m *Map) Set(key types.Type, value any) (prev any) {\n\tif m.table != nil {\n\t\thash := hash(key)\n\t\tbucket := m.table[hash]\n\t\tvar hole *entry\n\t\tfor i, e := range bucket {\n\t\t\tif e.key == nil {\n\t\t\t\thole = &bucket[i]\n\t\t\t} else if types.Identical(key, e.key) {\n\t\t\t\tprev = e.value\n\t\t\t\tbucket[i].value = value\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\n\t\tif hole != nil {\n\t\t\t*hole = entry{key, value} // overwrite deleted entry\n\t\t} else {\n\t\t\tm.table[hash] = append(bucket, entry{key, value})\n\t\t}\n\t} else {\n\t\thash := hash(key)\n\t\tm.table = map[uint32][]entry{hash: {entry{key, value}}}\n\t}\n\n\tm.length++\n\treturn\n}\n\n// Len returns the number of map entries.\nfunc (m *Map) Len() int {\n\tif m != nil {\n\t\treturn m.length\n\t}\n\treturn 0\n}\n\n// Iterate calls function f on each entry in the map in unspecified order.\n//\n// If f should mutate the map, Iterate provides the same guarantees as\n// Go maps: if f deletes a map entry that Iterate has not yet reached,\n// f will not be invoked for it, but if f inserts a map entry that\n// Iterate has not yet reached, whether or not f will be invoked for\n// it is unspecified.\nfunc (m *Map) Iterate(f func(key types.Type, value any)) {\n\tif m != nil {\n\t\tfor _, bucket := range m.table {\n\t\t\tfor _, e := range bucket {\n\t\t\t\tif e.key != nil {\n\t\t\t\t\tf(e.key, e.value)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n// Keys returns a new slice containing the set of map keys.\n// The order is unspecified.\nfunc (m *Map) Keys() []types.Type {\n\tkeys := make([]types.Type, 0, m.Len())\n\tm.Iterate(func(key types.Type, _ any) {\n\t\tkeys = append(keys, key)\n\t})\n\treturn keys\n}\n\nfunc (m *Map) toString(values bool) string {\n\tif m == nil {\n\t\treturn \"{}\"\n\t}\n\tvar buf bytes.Buffer\n\tfmt.Fprint(&buf, \"{\")\n\tsep := \"\"\n\tm.Iterate(func(key types.Type, value any) {\n\t\tfmt.Fprint(&buf, sep)\n\t\tsep = \", \"\n\t\tfmt.Fprint(&buf, key)\n\t\tif values {\n\t\t\tfmt.Fprintf(&buf, \": %q\", value)\n\t\t}\n\t})\n\tfmt.Fprint(&buf, \"}\")\n\treturn buf.String()\n}\n\n// String returns a string representation of the map's entries.\n// Values are printed using fmt.Sprintf(\"%v\", v).\n// Order is unspecified.\nfunc (m *Map) String() string {\n\treturn m.toString(true)\n}\n\n// KeysString returns a string representation of the map's key set.\n// Order is unspecified.\nfunc (m *Map) KeysString() string {\n\treturn m.toString(false)\n}\n\n// -- Hasher --\n\n// hash returns the hash of type t.\n// TODO(adonovan): replace by types.Hash when Go proposal #69420 is accepted.\nfunc hash(t types.Type) uint32 {\n\treturn theHasher.Hash(t)\n}\n\n// A Hasher provides a [Hasher.Hash] method to map a type to its hash value.\n// Hashers are stateless, and all are equivalent.\ntype Hasher struct{}\n\nvar theHasher Hasher\n\n// MakeHasher returns Hasher{}.\n// Hashers are stateless; all are equivalent.\nfunc MakeHasher() Hasher { return theHasher }\n\n// Hash computes a hash value for the given type t such that\n// Identical(t, t') => Hash(t) == Hash(t').\nfunc (h Hasher) Hash(t types.Type) uint32 {\n\treturn hasher{inGenericSig: false}.hash(t)\n}\n\n// hasher holds the state of a single Hash traversal: whether we are\n// inside the signature of a generic function; this is used to\n// optimize [hasher.hashTypeParam].\ntype hasher struct{ inGenericSig bool }\n\n// hashString computes the Fowler–Noll–Vo hash of s.\nfunc hashString(s string) uint32 {\n\tvar h uint32\n\tfor i := 0; i < len(s); i++ {\n\t\th ^= uint32(s[i])\n\t\th *= 16777619\n\t}\n\treturn h\n}\n\n// hash computes the hash of t.\nfunc (h hasher) hash(t types.Type) uint32 {\n\t// See Identical for rationale.\n\tswitch t := t.(type) {\n\tcase *types.Basic:\n\t\treturn uint32(t.Kind())\n\n\tcase *types.Alias:\n\t\treturn h.hash(types.Unalias(t))\n\n\tcase *types.Array:\n\t\treturn 9043 + 2*uint32(t.Len()) + 3*h.hash(t.Elem())\n\n\tcase *types.Slice:\n\t\treturn 9049 + 2*h.hash(t.Elem())\n\n\tcase *types.Struct:\n\t\tvar hash uint32 = 9059\n\t\tfor i, n := 0, t.NumFields(); i < n; i++ {\n\t\t\tf := t.Field(i)\n\t\t\tif f.Anonymous() {\n\t\t\t\thash += 8861\n\t\t\t}\n\t\t\thash += hashString(t.Tag(i))\n\t\t\thash += hashString(f.Name()) // (ignore f.Pkg)\n\t\t\thash += h.hash(f.Type())\n\t\t}\n\t\treturn hash\n\n\tcase *types.Pointer:\n\t\treturn 9067 + 2*h.hash(t.Elem())\n\n\tcase *types.Signature:\n\t\tvar hash uint32 = 9091\n\t\tif t.Variadic() {\n\t\t\thash *= 8863\n\t\t}\n\n\t\ttparams := t.TypeParams()\n\t\tif n := tparams.Len(); n > 0 {\n\t\t\th.inGenericSig = true // affects constraints, params, and results\n\n\t\t\tfor i := range n {\n\t\t\t\ttparam := tparams.At(i)\n\t\t\t\thash += 7 * h.hash(tparam.Constraint())\n\t\t\t}\n\t\t}\n\n\t\treturn hash + 3*h.hashTuple(t.Params()) + 5*h.hashTuple(t.Results())\n\n\tcase *types.Union:\n\t\treturn h.hashUnion(t)\n\n\tcase *types.Interface:\n\t\t// Interfaces are identical if they have the same set of methods, with\n\t\t// identical names and types, and they have the same set of type\n\t\t// restrictions. See go/types.identical for more details.\n\t\tvar hash uint32 = 9103\n\n\t\t// Hash methods.\n\t\tfor i, n := 0, t.NumMethods(); i < n; i++ {\n\t\t\t// Method order is not significant.\n\t\t\t// Ignore m.Pkg().\n\t\t\tm := t.Method(i)\n\t\t\t// Use shallow hash on method signature to\n\t\t\t// avoid anonymous interface cycles.\n\t\t\thash += 3*hashString(m.Name()) + 5*h.shallowHash(m.Type())\n\t\t}\n\n\t\t// Hash type restrictions.\n\t\tterms, err := typeparams.InterfaceTermSet(t)\n\t\t// if err != nil t has invalid type restrictions.\n\t\tif err == nil {\n\t\t\thash += h.hashTermSet(terms)\n\t\t}\n\n\t\treturn hash\n\n\tcase *types.Map:\n\t\treturn 9109 + 2*h.hash(t.Key()) + 3*h.hash(t.Elem())\n\n\tcase *types.Chan:\n\t\treturn 9127 + 2*uint32(t.Dir()) + 3*h.hash(t.Elem())\n\n\tcase *types.Named:\n\t\thash := h.hashTypeName(t.Obj())\n\t\ttargs := t.TypeArgs()\n\t\tfor targ := range targs.Types() {\n\t\t\thash += 2 * h.hash(targ)\n\t\t}\n\t\treturn hash\n\n\tcase *types.TypeParam:\n\t\treturn h.hashTypeParam(t)\n\n\tcase *types.Tuple:\n\t\treturn h.hashTuple(t)\n\t}\n\n\tpanic(fmt.Sprintf(\"%T: %v\", t, t))\n}\n\nfunc (h hasher) hashTuple(tuple *types.Tuple) uint32 {\n\t// See go/types.identicalTypes for rationale.\n\tn := tuple.Len()\n\thash := 9137 + 2*uint32(n)\n\tfor i := range n {\n\t\thash += 3 * h.hash(tuple.At(i).Type())\n\t}\n\treturn hash\n}\n\nfunc (h hasher) hashUnion(t *types.Union) uint32 {\n\t// Hash type restrictions.\n\tterms, err := typeparams.UnionTermSet(t)\n\t// if err != nil t has invalid type restrictions. Fall back on a non-zero\n\t// hash.\n\tif err != nil {\n\t\treturn 9151\n\t}\n\treturn h.hashTermSet(terms)\n}\n\nfunc (h hasher) hashTermSet(terms []*types.Term) uint32 {\n\thash := 9157 + 2*uint32(len(terms))\n\tfor _, term := range terms {\n\t\t// term order is not significant.\n\t\ttermHash := h.hash(term.Type())\n\t\tif term.Tilde() {\n\t\t\ttermHash *= 9161\n\t\t}\n\t\thash += 3 * termHash\n\t}\n\treturn hash\n}\n\n// hashTypeParam returns the hash of a type parameter.\nfunc (h hasher) hashTypeParam(t *types.TypeParam) uint32 {\n\t// Within the signature of a generic function, TypeParams are\n\t// identical if they have the same index and constraint, so we\n\t// hash them based on index.\n\t//\n\t// When we are outside a generic function, free TypeParams are\n\t// identical iff they are the same object, so we can use a\n\t// more discriminating hash consistent with object identity.\n\t// This optimization saves [Map] about 4% when hashing all the\n\t// types.Info.Types in the forward closure of net/http.\n\tif !h.inGenericSig {\n\t\t// Optimization: outside a generic function signature,\n\t\t// use a more discrimating hash consistent with object identity.\n\t\treturn h.hashTypeName(t.Obj())\n\t}\n\treturn 9173 + 3*uint32(t.Index())\n}\n\nvar theSeed = maphash.MakeSeed()\n\n// hashTypeName hashes the pointer of tname.\nfunc (hasher) hashTypeName(tname *types.TypeName) uint32 {\n\t// Since types.Identical uses == to compare TypeNames,\n\t// the Hash function uses maphash.Comparable.\n\thash := maphash.Comparable(theSeed, tname)\n\treturn uint32(hash ^ (hash >> 32))\n}\n\n// shallowHash computes a hash of t without looking at any of its\n// element Types, to avoid potential anonymous cycles in the types of\n// interface methods.\n//\n// When an unnamed non-empty interface type appears anywhere among the\n// arguments or results of an interface method, there is a potential\n// for endless recursion. Consider:\n//\n//\ttype X interface { m() []*interface { X } }\n//\n// The problem is that the Methods of the interface in m's result type\n// include m itself; there is no mention of the named type X that\n// might help us break the cycle.\n// (See comment in go/types.identical, case *Interface, for more.)\nfunc (h hasher) shallowHash(t types.Type) uint32 {\n\t// t is the type of an interface method (Signature),\n\t// its params or results (Tuples), or their immediate\n\t// elements (mostly Slice, Pointer, Basic, Named),\n\t// so there's no need to optimize anything else.\n\tswitch t := t.(type) {\n\tcase *types.Alias:\n\t\treturn h.shallowHash(types.Unalias(t))\n\n\tcase *types.Signature:\n\t\tvar hash uint32 = 604171\n\t\tif t.Variadic() {\n\t\t\thash *= 971767\n\t\t}\n\t\t// The Signature/Tuple recursion is always finite\n\t\t// and invariably shallow.\n\t\treturn hash + 1062599*h.shallowHash(t.Params()) + 1282529*h.shallowHash(t.Results())\n\n\tcase *types.Tuple:\n\t\tn := t.Len()\n\t\thash := 9137 + 2*uint32(n)\n\t\tfor i := range n {\n\t\t\thash += 53471161 * h.shallowHash(t.At(i).Type())\n\t\t}\n\t\treturn hash\n\n\tcase *types.Basic:\n\t\treturn 45212177 * uint32(t.Kind())\n\n\tcase *types.Array:\n\t\treturn 1524181 + 2*uint32(t.Len())\n\n\tcase *types.Slice:\n\t\treturn 2690201\n\n\tcase *types.Struct:\n\t\treturn 3326489\n\n\tcase *types.Pointer:\n\t\treturn 4393139\n\n\tcase *types.Union:\n\t\treturn 562448657\n\n\tcase *types.Interface:\n\t\treturn 2124679 // no recursion here\n\n\tcase *types.Map:\n\t\treturn 9109\n\n\tcase *types.Chan:\n\t\treturn 9127\n\n\tcase *types.Named:\n\t\treturn h.hashTypeName(t.Obj())\n\n\tcase *types.TypeParam:\n\t\treturn h.hashTypeParam(t)\n\t}\n\tpanic(fmt.Sprintf(\"shallowHash: %T: %v\", t, t))\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/go/types/typeutil/methodsetcache.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// This file implements a cache of method sets.\n\npackage typeutil\n\nimport (\n\t\"go/types\"\n\t\"sync\"\n)\n\n// A MethodSetCache records the method set of each type T for which\n// MethodSet(T) is called so that repeat queries are fast.\n// The zero value is a ready-to-use cache instance.\ntype MethodSetCache struct {\n\tmu     sync.Mutex\n\tnamed  map[*types.Named]struct{ value, pointer *types.MethodSet } // method sets for named N and *N\n\tothers map[types.Type]*types.MethodSet                            // all other types\n}\n\n// MethodSet returns the method set of type T.  It is thread-safe.\n//\n// If cache is nil, this function is equivalent to types.NewMethodSet(T).\n// Utility functions can thus expose an optional *MethodSetCache\n// parameter to clients that care about performance.\nfunc (cache *MethodSetCache) MethodSet(T types.Type) *types.MethodSet {\n\tif cache == nil {\n\t\treturn types.NewMethodSet(T)\n\t}\n\tcache.mu.Lock()\n\tdefer cache.mu.Unlock()\n\n\tswitch T := types.Unalias(T).(type) {\n\tcase *types.Named:\n\t\treturn cache.lookupNamed(T).value\n\n\tcase *types.Pointer:\n\t\tif N, ok := types.Unalias(T.Elem()).(*types.Named); ok {\n\t\t\treturn cache.lookupNamed(N).pointer\n\t\t}\n\t}\n\n\t// all other types\n\t// (The map uses pointer equivalence, not type identity.)\n\tmset := cache.others[T]\n\tif mset == nil {\n\t\tmset = types.NewMethodSet(T)\n\t\tif cache.others == nil {\n\t\t\tcache.others = make(map[types.Type]*types.MethodSet)\n\t\t}\n\t\tcache.others[T] = mset\n\t}\n\treturn mset\n}\n\nfunc (cache *MethodSetCache) lookupNamed(named *types.Named) struct{ value, pointer *types.MethodSet } {\n\tif cache.named == nil {\n\t\tcache.named = make(map[*types.Named]struct{ value, pointer *types.MethodSet })\n\t}\n\t// Avoid recomputing mset(*T) for each distinct Pointer\n\t// instance whose underlying type is a named type.\n\tmsets, ok := cache.named[named]\n\tif !ok {\n\t\tmsets.value = types.NewMethodSet(named)\n\t\tmsets.pointer = types.NewMethodSet(types.NewPointer(named))\n\t\tcache.named[named] = msets\n\t}\n\treturn msets\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/go/types/typeutil/ui.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage typeutil\n\n// This file defines utilities for user interfaces that display types.\n\nimport (\n\t\"go/types\"\n)\n\n// IntuitiveMethodSet returns the intuitive method set of a type T,\n// which is the set of methods you can call on an addressable value of\n// that type.\n//\n// The result always contains MethodSet(T), and is exactly MethodSet(T)\n// for interface types and for pointer-to-concrete types.\n// For all other concrete types T, the result additionally\n// contains each method belonging to *T if there is no identically\n// named method on T itself.\n//\n// This corresponds to user intuition about method sets;\n// this function is intended only for user interfaces.\n//\n// The order of the result is as for types.MethodSet(T).\nfunc IntuitiveMethodSet(T types.Type, msets *MethodSetCache) []*types.Selection {\n\tisPointerToConcrete := func(T types.Type) bool {\n\t\tptr, ok := types.Unalias(T).(*types.Pointer)\n\t\treturn ok && !types.IsInterface(ptr.Elem())\n\t}\n\n\tvar result []*types.Selection\n\tmset := msets.MethodSet(T)\n\tif types.IsInterface(T) || isPointerToConcrete(T) {\n\t\tfor i, n := 0, mset.Len(); i < n; i++ {\n\t\t\tresult = append(result, mset.At(i))\n\t\t}\n\t} else {\n\t\t// T is some other concrete type.\n\t\t// Report methods of T and *T, preferring those of T.\n\t\tpmset := msets.MethodSet(types.NewPointer(T))\n\t\tfor i, n := 0, pmset.Len(); i < n; i++ {\n\t\t\tmeth := pmset.At(i)\n\t\t\tif m := mset.Lookup(meth.Obj().Pkg(), meth.Obj().Name()); m != nil {\n\t\t\t\tmeth = m\n\t\t\t}\n\t\t\tresult = append(result, meth)\n\t\t}\n\n\t}\n\treturn result\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/aliases/aliases.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage aliases\n\nimport (\n\t\"go/token\"\n\t\"go/types\"\n)\n\n// Package aliases defines backward compatible shims\n// for the types.Alias type representation added in 1.22.\n// This defines placeholders for x/tools until 1.26.\n\n// NewAlias creates a new TypeName in Package pkg that\n// is an alias for the type rhs.\n//\n// The enabled parameter determines whether the resulting [TypeName]'s\n// type is an [types.Alias]. Its value must be the result of a call to\n// [Enabled], which computes the effective value of\n// GODEBUG=gotypesalias=... by invoking the type checker. The Enabled\n// function is expensive and should be called once per task (e.g.\n// package import), not once per call to NewAlias.\n//\n// Precondition: enabled || len(tparams)==0.\n// If materialized aliases are disabled, there must not be any type parameters.\nfunc NewAlias(enabled bool, pos token.Pos, pkg *types.Package, name string, rhs types.Type, tparams []*types.TypeParam) *types.TypeName {\n\tif enabled {\n\t\ttname := types.NewTypeName(pos, pkg, name, nil)\n\t\tSetTypeParams(types.NewAlias(tname, rhs), tparams)\n\t\treturn tname\n\t}\n\tif len(tparams) > 0 {\n\t\tpanic(\"cannot create an alias with type parameters when gotypesalias is not enabled\")\n\t}\n\treturn types.NewTypeName(pos, pkg, name, rhs)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/aliases/aliases_go122.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage aliases\n\nimport (\n\t\"go/ast\"\n\t\"go/parser\"\n\t\"go/token\"\n\t\"go/types\"\n)\n\n// Rhs returns the type on the right-hand side of the alias declaration.\nfunc Rhs(alias *types.Alias) types.Type {\n\tif alias, ok := any(alias).(interface{ Rhs() types.Type }); ok {\n\t\treturn alias.Rhs() // go1.23+\n\t}\n\n\t// go1.22's Alias didn't have the Rhs method,\n\t// so Unalias is the best we can do.\n\treturn types.Unalias(alias)\n}\n\n// TypeParams returns the type parameter list of the alias.\nfunc TypeParams(alias *types.Alias) *types.TypeParamList {\n\tif alias, ok := any(alias).(interface{ TypeParams() *types.TypeParamList }); ok {\n\t\treturn alias.TypeParams() // go1.23+\n\t}\n\treturn nil\n}\n\n// SetTypeParams sets the type parameters of the alias type.\nfunc SetTypeParams(alias *types.Alias, tparams []*types.TypeParam) {\n\tif alias, ok := any(alias).(interface {\n\t\tSetTypeParams(tparams []*types.TypeParam)\n\t}); ok {\n\t\talias.SetTypeParams(tparams) // go1.23+\n\t} else if len(tparams) > 0 {\n\t\tpanic(\"cannot set type parameters of an Alias type in go1.22\")\n\t}\n}\n\n// TypeArgs returns the type arguments used to instantiate the Alias type.\nfunc TypeArgs(alias *types.Alias) *types.TypeList {\n\tif alias, ok := any(alias).(interface{ TypeArgs() *types.TypeList }); ok {\n\t\treturn alias.TypeArgs() // go1.23+\n\t}\n\treturn nil // empty (go1.22)\n}\n\n// Origin returns the generic Alias type of which alias is an instance.\n// If alias is not an instance of a generic alias, Origin returns alias.\nfunc Origin(alias *types.Alias) *types.Alias {\n\tif alias, ok := any(alias).(interface{ Origin() *types.Alias }); ok {\n\t\treturn alias.Origin() // go1.23+\n\t}\n\treturn alias // not an instance of a generic alias (go1.22)\n}\n\n// Enabled reports whether [NewAlias] should create [types.Alias] types.\n//\n// This function is expensive! Call it sparingly.\nfunc Enabled() bool {\n\t// The only reliable way to compute the answer is to invoke go/types.\n\t// We don't parse the GODEBUG environment variable, because\n\t// (a) it's tricky to do so in a manner that is consistent\n\t//     with the godebug package; in particular, a simple\n\t//     substring check is not good enough. The value is a\n\t//     rightmost-wins list of options. But more importantly:\n\t// (b) it is impossible to detect changes to the effective\n\t//     setting caused by os.Setenv(\"GODEBUG\"), as happens in\n\t//     many tests. Therefore any attempt to cache the result\n\t//     is just incorrect.\n\tfset := token.NewFileSet()\n\tf, _ := parser.ParseFile(fset, \"a.go\", \"package p; type A = int\", parser.SkipObjectResolution)\n\tpkg, _ := new(types.Config).Check(\"p\", fset, []*ast.File{f}, nil)\n\t_, enabled := pkg.Scope().Lookup(\"A\").Type().(*types.Alias)\n\treturn enabled\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/event/core/event.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package core provides support for event based telemetry.\npackage core\n\nimport (\n\t\"fmt\"\n\t\"time\"\n\n\t\"golang.org/x/tools/internal/event/label\"\n)\n\n// Event holds the information about an event of note that occurred.\ntype Event struct {\n\tat time.Time\n\n\t// As events are often on the stack, storing the first few labels directly\n\t// in the event can avoid an allocation at all for the very common cases of\n\t// simple events.\n\t// The length needs to be large enough to cope with the majority of events\n\t// but no so large as to cause undue stack pressure.\n\t// A log message with two values will use 3 labels (one for each value and\n\t// one for the message itself).\n\n\tstatic  [3]label.Label // inline storage for the first few labels\n\tdynamic []label.Label  // dynamically sized storage for remaining labels\n}\n\nfunc (ev Event) At() time.Time { return ev.at }\n\nfunc (ev Event) Format(f fmt.State, r rune) {\n\tif !ev.at.IsZero() {\n\t\tfmt.Fprint(f, ev.at.Format(\"2006/01/02 15:04:05 \"))\n\t}\n\tfor index := 0; ev.Valid(index); index++ {\n\t\tif l := ev.Label(index); l.Valid() {\n\t\t\tfmt.Fprintf(f, \"\\n\\t%v\", l)\n\t\t}\n\t}\n}\n\nfunc (ev Event) Valid(index int) bool {\n\treturn index >= 0 && index < len(ev.static)+len(ev.dynamic)\n}\n\nfunc (ev Event) Label(index int) label.Label {\n\tif index < len(ev.static) {\n\t\treturn ev.static[index]\n\t}\n\treturn ev.dynamic[index-len(ev.static)]\n}\n\nfunc (ev Event) Find(key label.Key) label.Label {\n\tfor _, l := range ev.static {\n\t\tif l.Key() == key {\n\t\t\treturn l\n\t\t}\n\t}\n\tfor _, l := range ev.dynamic {\n\t\tif l.Key() == key {\n\t\t\treturn l\n\t\t}\n\t}\n\treturn label.Label{}\n}\n\nfunc MakeEvent(static [3]label.Label, labels []label.Label) Event {\n\treturn Event{\n\t\tstatic:  static,\n\t\tdynamic: labels,\n\t}\n}\n\n// CloneEvent event returns a copy of the event with the time adjusted to at.\nfunc CloneEvent(ev Event, at time.Time) Event {\n\tev.at = at\n\treturn ev\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/event/core/export.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage core\n\nimport (\n\t\"context\"\n\t\"sync/atomic\"\n\t\"time\"\n\n\t\"golang.org/x/tools/internal/event/label\"\n)\n\n// Exporter is a function that handles events.\n// It may return a modified context and event.\ntype Exporter func(context.Context, Event, label.Map) context.Context\n\nvar exporter atomic.Pointer[Exporter]\n\n// SetExporter sets the global exporter function that handles all events.\n// The exporter is called synchronously from the event call site, so it should\n// return quickly so as not to hold up user code.\nfunc SetExporter(e Exporter) {\n\tif e == nil {\n\t\t// &e is always valid, and so p is always valid, but for the early abort\n\t\t// of ProcessEvent to be efficient it needs to make the nil check on the\n\t\t// pointer without having to dereference it, so we make the nil function\n\t\t// also a nil pointer\n\t\texporter.Store(nil)\n\t} else {\n\t\texporter.Store(&e)\n\t}\n}\n\n// deliver is called to deliver an event to the supplied exporter.\n// it will fill in the time.\nfunc deliver(ctx context.Context, exporter Exporter, ev Event) context.Context {\n\t// add the current time to the event\n\tev.at = time.Now()\n\t// hand the event off to the current exporter\n\treturn exporter(ctx, ev, ev)\n}\n\n// Export is called to deliver an event to the global exporter if set.\nfunc Export(ctx context.Context, ev Event) context.Context {\n\t// get the global exporter and abort early if there is not one\n\texporterPtr := exporter.Load()\n\tif exporterPtr == nil {\n\t\treturn ctx\n\t}\n\treturn deliver(ctx, *exporterPtr, ev)\n}\n\n// ExportPair is called to deliver a start event to the supplied exporter.\n// It also returns a function that will deliver the end event to the same\n// exporter.\n// It will fill in the time.\nfunc ExportPair(ctx context.Context, begin, end Event) (context.Context, func()) {\n\t// get the global exporter and abort early if there is not one\n\texporterPtr := exporter.Load()\n\tif exporterPtr == nil {\n\t\treturn ctx, func() {}\n\t}\n\tctx = deliver(ctx, *exporterPtr, begin)\n\treturn ctx, func() { deliver(ctx, *exporterPtr, end) }\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/event/core/fast.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage core\n\nimport (\n\t\"context\"\n\n\t\"golang.org/x/tools/internal/event/keys\"\n\t\"golang.org/x/tools/internal/event/label\"\n)\n\n// Log1 takes a message and one label delivers a log event to the exporter.\n// It is a customized version of Print that is faster and does no allocation.\nfunc Log1(ctx context.Context, message string, t1 label.Label) {\n\tExport(ctx, MakeEvent([3]label.Label{\n\t\tkeys.Msg.Of(message),\n\t\tt1,\n\t}, nil))\n}\n\n// Log2 takes a message and two labels and delivers a log event to the exporter.\n// It is a customized version of Print that is faster and does no allocation.\nfunc Log2(ctx context.Context, message string, t1 label.Label, t2 label.Label) {\n\tExport(ctx, MakeEvent([3]label.Label{\n\t\tkeys.Msg.Of(message),\n\t\tt1,\n\t\tt2,\n\t}, nil))\n}\n\n// Metric1 sends a label event to the exporter with the supplied labels.\nfunc Metric1(ctx context.Context, t1 label.Label) context.Context {\n\treturn Export(ctx, MakeEvent([3]label.Label{\n\t\tkeys.Metric.New(),\n\t\tt1,\n\t}, nil))\n}\n\n// Metric2 sends a label event to the exporter with the supplied labels.\nfunc Metric2(ctx context.Context, t1, t2 label.Label) context.Context {\n\treturn Export(ctx, MakeEvent([3]label.Label{\n\t\tkeys.Metric.New(),\n\t\tt1,\n\t\tt2,\n\t}, nil))\n}\n\n// Start1 sends a span start event with the supplied label list to the exporter.\n// It also returns a function that will end the span, which should normally be\n// deferred.\nfunc Start1(ctx context.Context, name string, t1 label.Label) (context.Context, func()) {\n\treturn ExportPair(ctx,\n\t\tMakeEvent([3]label.Label{\n\t\t\tkeys.Start.Of(name),\n\t\t\tt1,\n\t\t}, nil),\n\t\tMakeEvent([3]label.Label{\n\t\t\tkeys.End.New(),\n\t\t}, nil))\n}\n\n// Start2 sends a span start event with the supplied label list to the exporter.\n// It also returns a function that will end the span, which should normally be\n// deferred.\nfunc Start2(ctx context.Context, name string, t1, t2 label.Label) (context.Context, func()) {\n\treturn ExportPair(ctx,\n\t\tMakeEvent([3]label.Label{\n\t\t\tkeys.Start.Of(name),\n\t\t\tt1,\n\t\t\tt2,\n\t\t}, nil),\n\t\tMakeEvent([3]label.Label{\n\t\t\tkeys.End.New(),\n\t\t}, nil))\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/event/doc.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package event provides a set of packages that cover the main\n// concepts of telemetry in an implementation agnostic way.\npackage event\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/event/event.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage event\n\nimport (\n\t\"context\"\n\n\t\"golang.org/x/tools/internal/event/core\"\n\t\"golang.org/x/tools/internal/event/keys\"\n\t\"golang.org/x/tools/internal/event/label\"\n)\n\n// Exporter is a function that handles events.\n// It may return a modified context and event.\ntype Exporter func(context.Context, core.Event, label.Map) context.Context\n\n// SetExporter sets the global exporter function that handles all events.\n// The exporter is called synchronously from the event call site, so it should\n// return quickly so as not to hold up user code.\nfunc SetExporter(e Exporter) {\n\tcore.SetExporter(core.Exporter(e))\n}\n\n// Log takes a message and a label list and combines them into a single event\n// before delivering them to the exporter.\nfunc Log(ctx context.Context, message string, labels ...label.Label) {\n\tcore.Export(ctx, core.MakeEvent([3]label.Label{\n\t\tkeys.Msg.Of(message),\n\t}, labels))\n}\n\n// IsLog returns true if the event was built by the Log function.\n// It is intended to be used in exporters to identify the semantics of the\n// event when deciding what to do with it.\nfunc IsLog(ev core.Event) bool {\n\treturn ev.Label(0).Key() == keys.Msg\n}\n\n// Error takes a message and a label list and combines them into a single event\n// before delivering them to the exporter. It captures the error in the\n// delivered event.\nfunc Error(ctx context.Context, message string, err error, labels ...label.Label) {\n\tcore.Export(ctx, core.MakeEvent([3]label.Label{\n\t\tkeys.Msg.Of(message),\n\t\tkeys.Err.Of(err),\n\t}, labels))\n}\n\n// IsError returns true if the event was built by the Error function.\n// It is intended to be used in exporters to identify the semantics of the\n// event when deciding what to do with it.\nfunc IsError(ev core.Event) bool {\n\treturn ev.Label(0).Key() == keys.Msg &&\n\t\tev.Label(1).Key() == keys.Err\n}\n\n// Metric sends a label event to the exporter with the supplied labels.\nfunc Metric(ctx context.Context, labels ...label.Label) {\n\tcore.Export(ctx, core.MakeEvent([3]label.Label{\n\t\tkeys.Metric.New(),\n\t}, labels))\n}\n\n// IsMetric returns true if the event was built by the Metric function.\n// It is intended to be used in exporters to identify the semantics of the\n// event when deciding what to do with it.\nfunc IsMetric(ev core.Event) bool {\n\treturn ev.Label(0).Key() == keys.Metric\n}\n\n// Label sends a label event to the exporter with the supplied labels.\nfunc Label(ctx context.Context, labels ...label.Label) context.Context {\n\treturn core.Export(ctx, core.MakeEvent([3]label.Label{\n\t\tkeys.Label.New(),\n\t}, labels))\n}\n\n// IsLabel returns true if the event was built by the Label function.\n// It is intended to be used in exporters to identify the semantics of the\n// event when deciding what to do with it.\nfunc IsLabel(ev core.Event) bool {\n\treturn ev.Label(0).Key() == keys.Label\n}\n\n// Start sends a span start event with the supplied label list to the exporter.\n// It also returns a function that will end the span, which should normally be\n// deferred.\nfunc Start(ctx context.Context, name string, labels ...label.Label) (context.Context, func()) {\n\treturn core.ExportPair(ctx,\n\t\tcore.MakeEvent([3]label.Label{\n\t\t\tkeys.Start.Of(name),\n\t\t}, labels),\n\t\tcore.MakeEvent([3]label.Label{\n\t\t\tkeys.End.New(),\n\t\t}, nil))\n}\n\n// IsStart returns true if the event was built by the Start function.\n// It is intended to be used in exporters to identify the semantics of the\n// event when deciding what to do with it.\nfunc IsStart(ev core.Event) bool {\n\treturn ev.Label(0).Key() == keys.Start\n}\n\n// IsEnd returns true if the event was built by the End function.\n// It is intended to be used in exporters to identify the semantics of the\n// event when deciding what to do with it.\nfunc IsEnd(ev core.Event) bool {\n\treturn ev.Label(0).Key() == keys.End\n}\n\n// Detach returns a context without an associated span.\n// This allows the creation of spans that are not children of the current span.\nfunc Detach(ctx context.Context) context.Context {\n\treturn core.Export(ctx, core.MakeEvent([3]label.Label{\n\t\tkeys.Detach.New(),\n\t}, nil))\n}\n\n// IsDetach returns true if the event was built by the Detach function.\n// It is intended to be used in exporters to identify the semantics of the\n// event when deciding what to do with it.\nfunc IsDetach(ev core.Event) bool {\n\treturn ev.Label(0).Key() == keys.Detach\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/event/keys/keys.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage keys\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"math\"\n\t\"strconv\"\n\n\t\"golang.org/x/tools/internal/event/label\"\n)\n\n// Value represents a key for untyped values.\ntype Value struct {\n\tname        string\n\tdescription string\n}\n\n// New creates a new Key for untyped values.\nfunc New(name, description string) *Value {\n\treturn &Value{name: name, description: description}\n}\n\nfunc (k *Value) Name() string        { return k.name }\nfunc (k *Value) Description() string { return k.description }\n\nfunc (k *Value) Format(w io.Writer, buf []byte, l label.Label) {\n\tfmt.Fprint(w, k.From(l))\n}\n\n// Get can be used to get a label for the key from a label.Map.\nfunc (k *Value) Get(lm label.Map) any {\n\tif t := lm.Find(k); t.Valid() {\n\t\treturn k.From(t)\n\t}\n\treturn nil\n}\n\n// From can be used to get a value from a Label.\nfunc (k *Value) From(t label.Label) any { return t.UnpackValue() }\n\n// Of creates a new Label with this key and the supplied value.\nfunc (k *Value) Of(value any) label.Label { return label.OfValue(k, value) }\n\n// Tag represents a key for tagging labels that have no value.\n// These are used when the existence of the label is the entire information it\n// carries, such as marking events to be of a specific kind, or from a specific\n// package.\ntype Tag struct {\n\tname        string\n\tdescription string\n}\n\n// NewTag creates a new Key for tagging labels.\nfunc NewTag(name, description string) *Tag {\n\treturn &Tag{name: name, description: description}\n}\n\nfunc (k *Tag) Name() string        { return k.name }\nfunc (k *Tag) Description() string { return k.description }\n\nfunc (k *Tag) Format(w io.Writer, buf []byte, l label.Label) {}\n\n// New creates a new Label with this key.\nfunc (k *Tag) New() label.Label { return label.OfValue(k, nil) }\n\n// Int represents a key\ntype Int struct {\n\tname        string\n\tdescription string\n}\n\n// NewInt creates a new Key for int values.\nfunc NewInt(name, description string) *Int {\n\treturn &Int{name: name, description: description}\n}\n\nfunc (k *Int) Name() string        { return k.name }\nfunc (k *Int) Description() string { return k.description }\n\nfunc (k *Int) Format(w io.Writer, buf []byte, l label.Label) {\n\tw.Write(strconv.AppendInt(buf, int64(k.From(l)), 10))\n}\n\n// Of creates a new Label with this key and the supplied value.\nfunc (k *Int) Of(v int) label.Label { return label.Of64(k, uint64(v)) }\n\n// Get can be used to get a label for the key from a label.Map.\nfunc (k *Int) Get(lm label.Map) int {\n\tif t := lm.Find(k); t.Valid() {\n\t\treturn k.From(t)\n\t}\n\treturn 0\n}\n\n// From can be used to get a value from a Label.\nfunc (k *Int) From(t label.Label) int { return int(t.Unpack64()) }\n\n// Int8 represents a key\ntype Int8 struct {\n\tname        string\n\tdescription string\n}\n\n// NewInt8 creates a new Key for int8 values.\nfunc NewInt8(name, description string) *Int8 {\n\treturn &Int8{name: name, description: description}\n}\n\nfunc (k *Int8) Name() string        { return k.name }\nfunc (k *Int8) Description() string { return k.description }\n\nfunc (k *Int8) Format(w io.Writer, buf []byte, l label.Label) {\n\tw.Write(strconv.AppendInt(buf, int64(k.From(l)), 10))\n}\n\n// Of creates a new Label with this key and the supplied value.\nfunc (k *Int8) Of(v int8) label.Label { return label.Of64(k, uint64(v)) }\n\n// Get can be used to get a label for the key from a label.Map.\nfunc (k *Int8) Get(lm label.Map) int8 {\n\tif t := lm.Find(k); t.Valid() {\n\t\treturn k.From(t)\n\t}\n\treturn 0\n}\n\n// From can be used to get a value from a Label.\nfunc (k *Int8) From(t label.Label) int8 { return int8(t.Unpack64()) }\n\n// Int16 represents a key\ntype Int16 struct {\n\tname        string\n\tdescription string\n}\n\n// NewInt16 creates a new Key for int16 values.\nfunc NewInt16(name, description string) *Int16 {\n\treturn &Int16{name: name, description: description}\n}\n\nfunc (k *Int16) Name() string        { return k.name }\nfunc (k *Int16) Description() string { return k.description }\n\nfunc (k *Int16) Format(w io.Writer, buf []byte, l label.Label) {\n\tw.Write(strconv.AppendInt(buf, int64(k.From(l)), 10))\n}\n\n// Of creates a new Label with this key and the supplied value.\nfunc (k *Int16) Of(v int16) label.Label { return label.Of64(k, uint64(v)) }\n\n// Get can be used to get a label for the key from a label.Map.\nfunc (k *Int16) Get(lm label.Map) int16 {\n\tif t := lm.Find(k); t.Valid() {\n\t\treturn k.From(t)\n\t}\n\treturn 0\n}\n\n// From can be used to get a value from a Label.\nfunc (k *Int16) From(t label.Label) int16 { return int16(t.Unpack64()) }\n\n// Int32 represents a key\ntype Int32 struct {\n\tname        string\n\tdescription string\n}\n\n// NewInt32 creates a new Key for int32 values.\nfunc NewInt32(name, description string) *Int32 {\n\treturn &Int32{name: name, description: description}\n}\n\nfunc (k *Int32) Name() string        { return k.name }\nfunc (k *Int32) Description() string { return k.description }\n\nfunc (k *Int32) Format(w io.Writer, buf []byte, l label.Label) {\n\tw.Write(strconv.AppendInt(buf, int64(k.From(l)), 10))\n}\n\n// Of creates a new Label with this key and the supplied value.\nfunc (k *Int32) Of(v int32) label.Label { return label.Of64(k, uint64(v)) }\n\n// Get can be used to get a label for the key from a label.Map.\nfunc (k *Int32) Get(lm label.Map) int32 {\n\tif t := lm.Find(k); t.Valid() {\n\t\treturn k.From(t)\n\t}\n\treturn 0\n}\n\n// From can be used to get a value from a Label.\nfunc (k *Int32) From(t label.Label) int32 { return int32(t.Unpack64()) }\n\n// Int64 represents a key\ntype Int64 struct {\n\tname        string\n\tdescription string\n}\n\n// NewInt64 creates a new Key for int64 values.\nfunc NewInt64(name, description string) *Int64 {\n\treturn &Int64{name: name, description: description}\n}\n\nfunc (k *Int64) Name() string        { return k.name }\nfunc (k *Int64) Description() string { return k.description }\n\nfunc (k *Int64) Format(w io.Writer, buf []byte, l label.Label) {\n\tw.Write(strconv.AppendInt(buf, k.From(l), 10))\n}\n\n// Of creates a new Label with this key and the supplied value.\nfunc (k *Int64) Of(v int64) label.Label { return label.Of64(k, uint64(v)) }\n\n// Get can be used to get a label for the key from a label.Map.\nfunc (k *Int64) Get(lm label.Map) int64 {\n\tif t := lm.Find(k); t.Valid() {\n\t\treturn k.From(t)\n\t}\n\treturn 0\n}\n\n// From can be used to get a value from a Label.\nfunc (k *Int64) From(t label.Label) int64 { return int64(t.Unpack64()) }\n\n// UInt represents a key\ntype UInt struct {\n\tname        string\n\tdescription string\n}\n\n// NewUInt creates a new Key for uint values.\nfunc NewUInt(name, description string) *UInt {\n\treturn &UInt{name: name, description: description}\n}\n\nfunc (k *UInt) Name() string        { return k.name }\nfunc (k *UInt) Description() string { return k.description }\n\nfunc (k *UInt) Format(w io.Writer, buf []byte, l label.Label) {\n\tw.Write(strconv.AppendUint(buf, uint64(k.From(l)), 10))\n}\n\n// Of creates a new Label with this key and the supplied value.\nfunc (k *UInt) Of(v uint) label.Label { return label.Of64(k, uint64(v)) }\n\n// Get can be used to get a label for the key from a label.Map.\nfunc (k *UInt) Get(lm label.Map) uint {\n\tif t := lm.Find(k); t.Valid() {\n\t\treturn k.From(t)\n\t}\n\treturn 0\n}\n\n// From can be used to get a value from a Label.\nfunc (k *UInt) From(t label.Label) uint { return uint(t.Unpack64()) }\n\n// UInt8 represents a key\ntype UInt8 struct {\n\tname        string\n\tdescription string\n}\n\n// NewUInt8 creates a new Key for uint8 values.\nfunc NewUInt8(name, description string) *UInt8 {\n\treturn &UInt8{name: name, description: description}\n}\n\nfunc (k *UInt8) Name() string        { return k.name }\nfunc (k *UInt8) Description() string { return k.description }\n\nfunc (k *UInt8) Format(w io.Writer, buf []byte, l label.Label) {\n\tw.Write(strconv.AppendUint(buf, uint64(k.From(l)), 10))\n}\n\n// Of creates a new Label with this key and the supplied value.\nfunc (k *UInt8) Of(v uint8) label.Label { return label.Of64(k, uint64(v)) }\n\n// Get can be used to get a label for the key from a label.Map.\nfunc (k *UInt8) Get(lm label.Map) uint8 {\n\tif t := lm.Find(k); t.Valid() {\n\t\treturn k.From(t)\n\t}\n\treturn 0\n}\n\n// From can be used to get a value from a Label.\nfunc (k *UInt8) From(t label.Label) uint8 { return uint8(t.Unpack64()) }\n\n// UInt16 represents a key\ntype UInt16 struct {\n\tname        string\n\tdescription string\n}\n\n// NewUInt16 creates a new Key for uint16 values.\nfunc NewUInt16(name, description string) *UInt16 {\n\treturn &UInt16{name: name, description: description}\n}\n\nfunc (k *UInt16) Name() string        { return k.name }\nfunc (k *UInt16) Description() string { return k.description }\n\nfunc (k *UInt16) Format(w io.Writer, buf []byte, l label.Label) {\n\tw.Write(strconv.AppendUint(buf, uint64(k.From(l)), 10))\n}\n\n// Of creates a new Label with this key and the supplied value.\nfunc (k *UInt16) Of(v uint16) label.Label { return label.Of64(k, uint64(v)) }\n\n// Get can be used to get a label for the key from a label.Map.\nfunc (k *UInt16) Get(lm label.Map) uint16 {\n\tif t := lm.Find(k); t.Valid() {\n\t\treturn k.From(t)\n\t}\n\treturn 0\n}\n\n// From can be used to get a value from a Label.\nfunc (k *UInt16) From(t label.Label) uint16 { return uint16(t.Unpack64()) }\n\n// UInt32 represents a key\ntype UInt32 struct {\n\tname        string\n\tdescription string\n}\n\n// NewUInt32 creates a new Key for uint32 values.\nfunc NewUInt32(name, description string) *UInt32 {\n\treturn &UInt32{name: name, description: description}\n}\n\nfunc (k *UInt32) Name() string        { return k.name }\nfunc (k *UInt32) Description() string { return k.description }\n\nfunc (k *UInt32) Format(w io.Writer, buf []byte, l label.Label) {\n\tw.Write(strconv.AppendUint(buf, uint64(k.From(l)), 10))\n}\n\n// Of creates a new Label with this key and the supplied value.\nfunc (k *UInt32) Of(v uint32) label.Label { return label.Of64(k, uint64(v)) }\n\n// Get can be used to get a label for the key from a label.Map.\nfunc (k *UInt32) Get(lm label.Map) uint32 {\n\tif t := lm.Find(k); t.Valid() {\n\t\treturn k.From(t)\n\t}\n\treturn 0\n}\n\n// From can be used to get a value from a Label.\nfunc (k *UInt32) From(t label.Label) uint32 { return uint32(t.Unpack64()) }\n\n// UInt64 represents a key\ntype UInt64 struct {\n\tname        string\n\tdescription string\n}\n\n// NewUInt64 creates a new Key for uint64 values.\nfunc NewUInt64(name, description string) *UInt64 {\n\treturn &UInt64{name: name, description: description}\n}\n\nfunc (k *UInt64) Name() string        { return k.name }\nfunc (k *UInt64) Description() string { return k.description }\n\nfunc (k *UInt64) Format(w io.Writer, buf []byte, l label.Label) {\n\tw.Write(strconv.AppendUint(buf, k.From(l), 10))\n}\n\n// Of creates a new Label with this key and the supplied value.\nfunc (k *UInt64) Of(v uint64) label.Label { return label.Of64(k, v) }\n\n// Get can be used to get a label for the key from a label.Map.\nfunc (k *UInt64) Get(lm label.Map) uint64 {\n\tif t := lm.Find(k); t.Valid() {\n\t\treturn k.From(t)\n\t}\n\treturn 0\n}\n\n// From can be used to get a value from a Label.\nfunc (k *UInt64) From(t label.Label) uint64 { return t.Unpack64() }\n\n// Float32 represents a key\ntype Float32 struct {\n\tname        string\n\tdescription string\n}\n\n// NewFloat32 creates a new Key for float32 values.\nfunc NewFloat32(name, description string) *Float32 {\n\treturn &Float32{name: name, description: description}\n}\n\nfunc (k *Float32) Name() string        { return k.name }\nfunc (k *Float32) Description() string { return k.description }\n\nfunc (k *Float32) Format(w io.Writer, buf []byte, l label.Label) {\n\tw.Write(strconv.AppendFloat(buf, float64(k.From(l)), 'E', -1, 32))\n}\n\n// Of creates a new Label with this key and the supplied value.\nfunc (k *Float32) Of(v float32) label.Label {\n\treturn label.Of64(k, uint64(math.Float32bits(v)))\n}\n\n// Get can be used to get a label for the key from a label.Map.\nfunc (k *Float32) Get(lm label.Map) float32 {\n\tif t := lm.Find(k); t.Valid() {\n\t\treturn k.From(t)\n\t}\n\treturn 0\n}\n\n// From can be used to get a value from a Label.\nfunc (k *Float32) From(t label.Label) float32 {\n\treturn math.Float32frombits(uint32(t.Unpack64()))\n}\n\n// Float64 represents a key\ntype Float64 struct {\n\tname        string\n\tdescription string\n}\n\n// NewFloat64 creates a new Key for int64 values.\nfunc NewFloat64(name, description string) *Float64 {\n\treturn &Float64{name: name, description: description}\n}\n\nfunc (k *Float64) Name() string        { return k.name }\nfunc (k *Float64) Description() string { return k.description }\n\nfunc (k *Float64) Format(w io.Writer, buf []byte, l label.Label) {\n\tw.Write(strconv.AppendFloat(buf, k.From(l), 'E', -1, 64))\n}\n\n// Of creates a new Label with this key and the supplied value.\nfunc (k *Float64) Of(v float64) label.Label {\n\treturn label.Of64(k, math.Float64bits(v))\n}\n\n// Get can be used to get a label for the key from a label.Map.\nfunc (k *Float64) Get(lm label.Map) float64 {\n\tif t := lm.Find(k); t.Valid() {\n\t\treturn k.From(t)\n\t}\n\treturn 0\n}\n\n// From can be used to get a value from a Label.\nfunc (k *Float64) From(t label.Label) float64 {\n\treturn math.Float64frombits(t.Unpack64())\n}\n\n// String represents a key\ntype String struct {\n\tname        string\n\tdescription string\n}\n\n// NewString creates a new Key for int64 values.\nfunc NewString(name, description string) *String {\n\treturn &String{name: name, description: description}\n}\n\nfunc (k *String) Name() string        { return k.name }\nfunc (k *String) Description() string { return k.description }\n\nfunc (k *String) Format(w io.Writer, buf []byte, l label.Label) {\n\tw.Write(strconv.AppendQuote(buf, k.From(l)))\n}\n\n// Of creates a new Label with this key and the supplied value.\nfunc (k *String) Of(v string) label.Label { return label.OfString(k, v) }\n\n// Get can be used to get a label for the key from a label.Map.\nfunc (k *String) Get(lm label.Map) string {\n\tif t := lm.Find(k); t.Valid() {\n\t\treturn k.From(t)\n\t}\n\treturn \"\"\n}\n\n// From can be used to get a value from a Label.\nfunc (k *String) From(t label.Label) string { return t.UnpackString() }\n\n// Boolean represents a key\ntype Boolean struct {\n\tname        string\n\tdescription string\n}\n\n// NewBoolean creates a new Key for bool values.\nfunc NewBoolean(name, description string) *Boolean {\n\treturn &Boolean{name: name, description: description}\n}\n\nfunc (k *Boolean) Name() string        { return k.name }\nfunc (k *Boolean) Description() string { return k.description }\n\nfunc (k *Boolean) Format(w io.Writer, buf []byte, l label.Label) {\n\tw.Write(strconv.AppendBool(buf, k.From(l)))\n}\n\n// Of creates a new Label with this key and the supplied value.\nfunc (k *Boolean) Of(v bool) label.Label {\n\tif v {\n\t\treturn label.Of64(k, 1)\n\t}\n\treturn label.Of64(k, 0)\n}\n\n// Get can be used to get a label for the key from a label.Map.\nfunc (k *Boolean) Get(lm label.Map) bool {\n\tif t := lm.Find(k); t.Valid() {\n\t\treturn k.From(t)\n\t}\n\treturn false\n}\n\n// From can be used to get a value from a Label.\nfunc (k *Boolean) From(t label.Label) bool { return t.Unpack64() > 0 }\n\n// Error represents a key\ntype Error struct {\n\tname        string\n\tdescription string\n}\n\n// NewError creates a new Key for int64 values.\nfunc NewError(name, description string) *Error {\n\treturn &Error{name: name, description: description}\n}\n\nfunc (k *Error) Name() string        { return k.name }\nfunc (k *Error) Description() string { return k.description }\n\nfunc (k *Error) Format(w io.Writer, buf []byte, l label.Label) {\n\tio.WriteString(w, k.From(l).Error())\n}\n\n// Of creates a new Label with this key and the supplied value.\nfunc (k *Error) Of(v error) label.Label { return label.OfValue(k, v) }\n\n// Get can be used to get a label for the key from a label.Map.\nfunc (k *Error) Get(lm label.Map) error {\n\tif t := lm.Find(k); t.Valid() {\n\t\treturn k.From(t)\n\t}\n\treturn nil\n}\n\n// From can be used to get a value from a Label.\nfunc (k *Error) From(t label.Label) error {\n\terr, _ := t.UnpackValue().(error)\n\treturn err\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/event/keys/standard.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage keys\n\nvar (\n\t// Msg is a key used to add message strings to label lists.\n\tMsg = NewString(\"message\", \"a readable message\")\n\t// Label is a key used to indicate an event adds labels to the context.\n\tLabel = NewTag(\"label\", \"a label context marker\")\n\t// Start is used for things like traces that have a name.\n\tStart = NewString(\"start\", \"span start\")\n\t// Metric is a key used to indicate an event records metrics.\n\tEnd = NewTag(\"end\", \"a span end marker\")\n\t// Metric is a key used to indicate an event records metrics.\n\tDetach = NewTag(\"detach\", \"a span detach marker\")\n\t// Err is a key used to add error values to label lists.\n\tErr = NewError(\"error\", \"an error that occurred\")\n\t// Metric is a key used to indicate an event records metrics.\n\tMetric = NewTag(\"metric\", \"a metric event marker\")\n)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/event/keys/util.go",
    "content": "// Copyright 2023 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage keys\n\nimport (\n\t\"sort\"\n\t\"strings\"\n)\n\n// Join returns a canonical join of the keys in S:\n// a sorted comma-separated string list.\nfunc Join[S ~[]T, T ~string](s S) string {\n\tstrs := make([]string, 0, len(s))\n\tfor _, v := range s {\n\t\tstrs = append(strs, string(v))\n\t}\n\tsort.Strings(strs)\n\treturn strings.Join(strs, \",\")\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/event/label/label.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage label\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"slices\"\n\t\"unsafe\"\n)\n\n// Key is used as the identity of a Label.\n// Keys are intended to be compared by pointer only, the name should be unique\n// for communicating with external systems, but it is not required or enforced.\ntype Key interface {\n\t// Name returns the key name.\n\tName() string\n\t// Description returns a string that can be used to describe the value.\n\tDescription() string\n\n\t// Format is used in formatting to append the value of the label to the\n\t// supplied buffer.\n\t// The formatter may use the supplied buf as a scratch area to avoid\n\t// allocations.\n\tFormat(w io.Writer, buf []byte, l Label)\n}\n\n// Label holds a key and value pair.\n// It is normally used when passing around lists of labels.\ntype Label struct {\n\tkey     Key\n\tpacked  uint64\n\tuntyped any\n}\n\n// Map is the interface to a collection of Labels indexed by key.\ntype Map interface {\n\t// Find returns the label that matches the supplied key.\n\tFind(key Key) Label\n}\n\n// List is the interface to something that provides an iterable\n// list of labels.\n// Iteration should start from 0 and continue until Valid returns false.\ntype List interface {\n\t// Valid returns true if the index is within range for the list.\n\t// It does not imply the label at that index will itself be valid.\n\tValid(index int) bool\n\t// Label returns the label at the given index.\n\tLabel(index int) Label\n}\n\n// list implements LabelList for a list of Labels.\ntype list struct {\n\tlabels []Label\n}\n\n// filter wraps a LabelList filtering out specific labels.\ntype filter struct {\n\tkeys       []Key\n\tunderlying List\n}\n\n// listMap implements LabelMap for a simple list of labels.\ntype listMap struct {\n\tlabels []Label\n}\n\n// mapChain implements LabelMap for a list of underlying LabelMap.\ntype mapChain struct {\n\tmaps []Map\n}\n\n// OfValue creates a new label from the key and value.\n// This method is for implementing new key types, label creation should\n// normally be done with the Of method of the key.\nfunc OfValue(k Key, value any) Label { return Label{key: k, untyped: value} }\n\n// UnpackValue assumes the label was built using LabelOfValue and returns the value\n// that was passed to that constructor.\n// This method is for implementing new key types, for type safety normal\n// access should be done with the From method of the key.\nfunc (t Label) UnpackValue() any { return t.untyped }\n\n// Of64 creates a new label from a key and a uint64. This is often\n// used for non uint64 values that can be packed into a uint64.\n// This method is for implementing new key types, label creation should\n// normally be done with the Of method of the key.\nfunc Of64(k Key, v uint64) Label { return Label{key: k, packed: v} }\n\n// Unpack64 assumes the label was built using LabelOf64 and returns the value that\n// was passed to that constructor.\n// This method is for implementing new key types, for type safety normal\n// access should be done with the From method of the key.\nfunc (t Label) Unpack64() uint64 { return t.packed }\n\ntype stringptr unsafe.Pointer\n\n// OfString creates a new label from a key and a string.\n// This method is for implementing new key types, label creation should\n// normally be done with the Of method of the key.\nfunc OfString(k Key, v string) Label {\n\treturn Label{\n\t\tkey:     k,\n\t\tpacked:  uint64(len(v)),\n\t\tuntyped: stringptr(unsafe.StringData(v)),\n\t}\n}\n\n// UnpackString assumes the label was built using LabelOfString and returns the\n// value that was passed to that constructor.\n// This method is for implementing new key types, for type safety normal\n// access should be done with the From method of the key.\nfunc (t Label) UnpackString() string {\n\treturn unsafe.String((*byte)(t.untyped.(stringptr)), int(t.packed))\n}\n\n// Valid returns true if the Label is a valid one (it has a key).\nfunc (t Label) Valid() bool { return t.key != nil }\n\n// Key returns the key of this Label.\nfunc (t Label) Key() Key { return t.key }\n\n// Format is used for debug printing of labels.\nfunc (t Label) Format(f fmt.State, r rune) {\n\tif !t.Valid() {\n\t\tio.WriteString(f, `nil`)\n\t\treturn\n\t}\n\tio.WriteString(f, t.Key().Name())\n\tio.WriteString(f, \"=\")\n\tvar buf [128]byte\n\tt.Key().Format(f, buf[:0], t)\n}\n\nfunc (l *list) Valid(index int) bool {\n\treturn index >= 0 && index < len(l.labels)\n}\n\nfunc (l *list) Label(index int) Label {\n\treturn l.labels[index]\n}\n\nfunc (f *filter) Valid(index int) bool {\n\treturn f.underlying.Valid(index)\n}\n\nfunc (f *filter) Label(index int) Label {\n\tl := f.underlying.Label(index)\n\tif slices.Contains(f.keys, l.Key()) {\n\t\treturn Label{}\n\t}\n\treturn l\n}\n\nfunc (lm listMap) Find(key Key) Label {\n\tfor _, l := range lm.labels {\n\t\tif l.Key() == key {\n\t\t\treturn l\n\t\t}\n\t}\n\treturn Label{}\n}\n\nfunc (c mapChain) Find(key Key) Label {\n\tfor _, src := range c.maps {\n\t\tl := src.Find(key)\n\t\tif l.Valid() {\n\t\t\treturn l\n\t\t}\n\t}\n\treturn Label{}\n}\n\nvar emptyList = &list{}\n\nfunc NewList(labels ...Label) List {\n\tif len(labels) == 0 {\n\t\treturn emptyList\n\t}\n\treturn &list{labels: labels}\n}\n\nfunc Filter(l List, keys ...Key) List {\n\tif len(keys) == 0 {\n\t\treturn l\n\t}\n\treturn &filter{keys: keys, underlying: l}\n}\n\nfunc NewMap(labels ...Label) Map {\n\treturn listMap{labels: labels}\n}\n\nfunc MergeMaps(srcs ...Map) Map {\n\tvar nonNil []Map\n\tfor _, src := range srcs {\n\t\tif src != nil {\n\t\t\tnonNil = append(nonNil, src)\n\t\t}\n\t}\n\tif len(nonNil) == 1 {\n\t\treturn nonNil[0]\n\t}\n\treturn mapChain{maps: nonNil}\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/gcimporter/bimport.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// This file contains the remaining vestiges of\n// $GOROOT/src/go/internal/gcimporter/bimport.go.\n\npackage gcimporter\n\nimport (\n\t\"fmt\"\n\t\"go/token\"\n\t\"go/types\"\n\t\"sync\"\n)\n\nfunc errorf(format string, args ...any) {\n\tpanic(fmt.Sprintf(format, args...))\n}\n\nconst deltaNewFile = -64 // see cmd/compile/internal/gc/bexport.go\n\n// Synthesize a token.Pos\ntype fakeFileSet struct {\n\tfset  *token.FileSet\n\tfiles map[string]*fileInfo\n}\n\ntype fileInfo struct {\n\tfile     *token.File\n\tlastline int\n}\n\nconst maxlines = 64 * 1024\n\nfunc (s *fakeFileSet) pos(file string, line, column int) token.Pos {\n\t_ = column // TODO(mdempsky): Make use of column.\n\n\t// Since we don't know the set of needed file positions, we reserve maxlines\n\t// positions per file. We delay calling token.File.SetLines until all\n\t// positions have been calculated (by way of fakeFileSet.setLines), so that\n\t// we can avoid setting unnecessary lines. See also golang/go#46586.\n\tf := s.files[file]\n\tif f == nil {\n\t\tf = &fileInfo{file: s.fset.AddFile(file, -1, maxlines)}\n\t\ts.files[file] = f\n\t}\n\tif line > maxlines {\n\t\tline = 1\n\t}\n\tif line > f.lastline {\n\t\tf.lastline = line\n\t}\n\n\t// Return a fake position assuming that f.file consists only of newlines.\n\treturn token.Pos(f.file.Base() + line - 1)\n}\n\nfunc (s *fakeFileSet) setLines() {\n\tfakeLinesOnce.Do(func() {\n\t\tfakeLines = make([]int, maxlines)\n\t\tfor i := range fakeLines {\n\t\t\tfakeLines[i] = i\n\t\t}\n\t})\n\tfor _, f := range s.files {\n\t\tf.file.SetLines(fakeLines[:f.lastline])\n\t}\n}\n\nvar (\n\tfakeLines     []int\n\tfakeLinesOnce sync.Once\n)\n\nfunc chanDir(d int) types.ChanDir {\n\t// tag values must match the constants in cmd/compile/internal/gc/go.go\n\tswitch d {\n\tcase 1 /* Crecv */ :\n\t\treturn types.RecvOnly\n\tcase 2 /* Csend */ :\n\t\treturn types.SendOnly\n\tcase 3 /* Cboth */ :\n\t\treturn types.SendRecv\n\tdefault:\n\t\terrorf(\"unexpected channel dir %d\", d)\n\t\treturn 0\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/gcimporter/exportdata.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// This file should be kept in sync with $GOROOT/src/internal/exportdata/exportdata.go.\n// This file also additionally implements FindExportData for gcexportdata.NewReader.\n\npackage gcimporter\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"go/build\"\n\t\"io\"\n\t\"os\"\n\t\"os/exec\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"sync\"\n)\n\n// FindExportData positions the reader r at the beginning of the\n// export data section of an underlying cmd/compile created archive\n// file by reading from it. The reader must be positioned at the\n// start of the file before calling this function.\n// This returns the length of the export data in bytes.\n//\n// This function is needed by [gcexportdata.Read], which must\n// accept inputs produced by the last two releases of cmd/compile,\n// plus tip.\nfunc FindExportData(r *bufio.Reader) (size int64, err error) {\n\tarsize, err := FindPackageDefinition(r)\n\tif err != nil {\n\t\treturn\n\t}\n\tsize = int64(arsize)\n\n\tobjapi, headers, err := ReadObjectHeaders(r)\n\tif err != nil {\n\t\treturn\n\t}\n\tsize -= int64(len(objapi))\n\tfor _, h := range headers {\n\t\tsize -= int64(len(h))\n\t}\n\n\t// Check for the binary export data section header \"$$B\\n\".\n\t// TODO(taking): Unify with ReadExportDataHeader so that it stops at the 'u' instead of reading\n\tline, err := r.ReadSlice('\\n')\n\tif err != nil {\n\t\treturn\n\t}\n\thdr := string(line)\n\tif hdr != \"$$B\\n\" {\n\t\terr = fmt.Errorf(\"unknown export data header: %q\", hdr)\n\t\treturn\n\t}\n\tsize -= int64(len(hdr))\n\n\t// For files with a binary export data header \"$$B\\n\",\n\t// these are always terminated by an end-of-section marker \"\\n$$\\n\".\n\t// So the last bytes must always be this constant.\n\t//\n\t// The end-of-section marker is not a part of the export data itself.\n\t// Do not include these in size.\n\t//\n\t// It would be nice to have sanity check that the final bytes after\n\t// the export data are indeed the end-of-section marker. The split\n\t// of gcexportdata.NewReader and gcexportdata.Read make checking this\n\t// ugly so gcimporter gives up enforcing this. The compiler and go/types\n\t// importer do enforce this, which seems good enough.\n\tconst endofsection = \"\\n$$\\n\"\n\tsize -= int64(len(endofsection))\n\n\tif size < 0 {\n\t\terr = fmt.Errorf(\"invalid size (%d) in the archive file: %d bytes remain without section headers (recompile package)\", arsize, size)\n\t\treturn\n\t}\n\n\treturn\n}\n\n// ReadUnified reads the contents of the unified export data from a reader r\n// that contains the contents of a GC-created archive file.\n//\n// On success, the reader will be positioned after the end-of-section marker \"\\n$$\\n\".\n//\n// Supported GC-created archive files have 4 layers of nesting:\n//   - An archive file containing a package definition file.\n//   - The package definition file contains headers followed by a data section.\n//     Headers are lines (≤ 4kb) that do not start with \"$$\".\n//   - The data section starts with \"$$B\\n\" followed by export data followed\n//     by an end of section marker \"\\n$$\\n\". (The section start \"$$\\n\" is no\n//     longer supported.)\n//   - The export data starts with a format byte ('u') followed by the <data> in\n//     the given format. (See ReadExportDataHeader for older formats.)\n//\n// Putting this together, the bytes in a GC-created archive files are expected\n// to look like the following.\n// See cmd/internal/archive for more details on ar file headers.\n//\n// | <!arch>\\n             | ar file signature\n// | __.PKGDEF...size...\\n | ar header for __.PKGDEF including size.\n// | go object <...>\\n     | objabi header\n// | <optional headers>\\n  | other headers such as build id\n// | $$B\\n                 | binary format marker\n// | u<data>\\n             | unified export <data>\n// | $$\\n                  | end-of-section marker\n// | [optional padding]    | padding byte (0x0A) if size is odd\n// | [ar file header]      | other ar files\n// | [ar file data]        |\nfunc ReadUnified(r *bufio.Reader) (data []byte, err error) {\n\t// We historically guaranteed headers at the default buffer size (4096) work.\n\t// This ensures we can use ReadSlice throughout.\n\tconst minBufferSize = 4096\n\tr = bufio.NewReaderSize(r, minBufferSize)\n\n\tsize, err := FindPackageDefinition(r)\n\tif err != nil {\n\t\treturn\n\t}\n\tn := size\n\n\tobjapi, headers, err := ReadObjectHeaders(r)\n\tif err != nil {\n\t\treturn\n\t}\n\tn -= len(objapi)\n\tfor _, h := range headers {\n\t\tn -= len(h)\n\t}\n\n\thdrlen, err := ReadExportDataHeader(r)\n\tif err != nil {\n\t\treturn\n\t}\n\tn -= hdrlen\n\n\t// size also includes the end of section marker. Remove that many bytes from the end.\n\tconst marker = \"\\n$$\\n\"\n\tn -= len(marker)\n\n\tif n < 0 {\n\t\terr = fmt.Errorf(\"invalid size (%d) in the archive file: %d bytes remain without section headers (recompile package)\", size, n)\n\t\treturn\n\t}\n\n\t// Read n bytes from buf.\n\tdata = make([]byte, n)\n\t_, err = io.ReadFull(r, data)\n\tif err != nil {\n\t\treturn\n\t}\n\n\t// Check for marker at the end.\n\tvar suffix [len(marker)]byte\n\t_, err = io.ReadFull(r, suffix[:])\n\tif err != nil {\n\t\treturn\n\t}\n\tif s := string(suffix[:]); s != marker {\n\t\terr = fmt.Errorf(\"read %q instead of end-of-section marker (%q)\", s, marker)\n\t\treturn\n\t}\n\n\treturn\n}\n\n// FindPackageDefinition positions the reader r at the beginning of a package\n// definition file (\"__.PKGDEF\") within a GC-created archive by reading\n// from it, and returns the size of the package definition file in the archive.\n//\n// The reader must be positioned at the start of the archive file before calling\n// this function, and \"__.PKGDEF\" is assumed to be the first file in the archive.\n//\n// See cmd/internal/archive for details on the archive format.\nfunc FindPackageDefinition(r *bufio.Reader) (size int, err error) {\n\t// Uses ReadSlice to limit risk of malformed inputs.\n\n\t// Read first line to make sure this is an object file.\n\tline, err := r.ReadSlice('\\n')\n\tif err != nil {\n\t\terr = fmt.Errorf(\"can't find export data (%v)\", err)\n\t\treturn\n\t}\n\n\t// Is the first line an archive file signature?\n\tif string(line) != \"!<arch>\\n\" {\n\t\terr = fmt.Errorf(\"not the start of an archive file (%q)\", line)\n\t\treturn\n\t}\n\n\t// package export block should be first\n\tsize = readArchiveHeader(r, \"__.PKGDEF\")\n\tif size <= 0 {\n\t\terr = fmt.Errorf(\"not a package file\")\n\t\treturn\n\t}\n\n\treturn\n}\n\n// ReadObjectHeaders reads object headers from the reader. Object headers are\n// lines that do not start with an end-of-section marker \"$$\". The first header\n// is the objabi header. On success, the reader will be positioned at the beginning\n// of the end-of-section marker.\n//\n// It returns an error if any header does not fit in r.Size() bytes.\nfunc ReadObjectHeaders(r *bufio.Reader) (objapi string, headers []string, err error) {\n\t// line is a temporary buffer for headers.\n\t// Use bounded reads (ReadSlice, Peek) to limit risk of malformed inputs.\n\tvar line []byte\n\n\t// objapi header should be the first line\n\tif line, err = r.ReadSlice('\\n'); err != nil {\n\t\terr = fmt.Errorf(\"can't find export data (%v)\", err)\n\t\treturn\n\t}\n\tobjapi = string(line)\n\n\t// objapi header begins with \"go object \".\n\tif !strings.HasPrefix(objapi, \"go object \") {\n\t\terr = fmt.Errorf(\"not a go object file: %s\", objapi)\n\t\treturn\n\t}\n\n\t// process remaining object header lines\n\tfor {\n\t\t// check for an end of section marker \"$$\"\n\t\tline, err = r.Peek(2)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t\tif string(line) == \"$$\" {\n\t\t\treturn // stop\n\t\t}\n\n\t\t// read next header\n\t\tline, err = r.ReadSlice('\\n')\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t\theaders = append(headers, string(line))\n\t}\n}\n\n// ReadExportDataHeader reads the export data header and format from r.\n// It returns the number of bytes read, or an error if the format is no longer\n// supported or it failed to read.\n//\n// The only currently supported format is binary export data in the\n// unified export format.\nfunc ReadExportDataHeader(r *bufio.Reader) (n int, err error) {\n\t// Read export data header.\n\tline, err := r.ReadSlice('\\n')\n\tif err != nil {\n\t\treturn\n\t}\n\n\thdr := string(line)\n\tswitch hdr {\n\tcase \"$$\\n\":\n\t\terr = fmt.Errorf(\"old textual export format no longer supported (recompile package)\")\n\t\treturn\n\n\tcase \"$$B\\n\":\n\t\tvar format byte\n\t\tformat, err = r.ReadByte()\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t\t// The unified export format starts with a 'u'.\n\t\tswitch format {\n\t\tcase 'u':\n\t\tdefault:\n\t\t\t// Older no longer supported export formats include:\n\t\t\t// indexed export format which started with an 'i'; and\n\t\t\t// the older binary export format which started with a 'c',\n\t\t\t// 'd', or 'v' (from \"version\").\n\t\t\terr = fmt.Errorf(\"binary export format %q is no longer supported (recompile package)\", format)\n\t\t\treturn\n\t\t}\n\n\tdefault:\n\t\terr = fmt.Errorf(\"unknown export data header: %q\", hdr)\n\t\treturn\n\t}\n\n\tn = len(hdr) + 1 // + 1 is for 'u'\n\treturn\n}\n\n// FindPkg returns the filename and unique package id for an import\n// path based on package information provided by build.Import (using\n// the build.Default build.Context). A relative srcDir is interpreted\n// relative to the current working directory.\n//\n// FindPkg is only used in tests within x/tools.\nfunc FindPkg(path, srcDir string) (filename, id string, err error) {\n\t// TODO(taking): Move internal/exportdata.FindPkg into its own file,\n\t// and then this copy into a _test package.\n\tif path == \"\" {\n\t\treturn \"\", \"\", errors.New(\"path is empty\")\n\t}\n\n\tvar noext string\n\tswitch {\n\tdefault:\n\t\t// \"x\" -> \"$GOPATH/pkg/$GOOS_$GOARCH/x.ext\", \"x\"\n\t\t// Don't require the source files to be present.\n\t\tif abs, err := filepath.Abs(srcDir); err == nil { // see issue 14282\n\t\t\tsrcDir = abs\n\t\t}\n\t\tvar bp *build.Package\n\t\tbp, err = build.Import(path, srcDir, build.FindOnly|build.AllowBinary)\n\t\tif bp.PkgObj == \"\" {\n\t\t\tif bp.Goroot && bp.Dir != \"\" {\n\t\t\t\tfilename, err = lookupGorootExport(bp.Dir)\n\t\t\t\tif err == nil {\n\t\t\t\t\t_, err = os.Stat(filename)\n\t\t\t\t}\n\t\t\t\tif err == nil {\n\t\t\t\t\treturn filename, bp.ImportPath, nil\n\t\t\t\t}\n\t\t\t}\n\t\t\tgoto notfound\n\t\t} else {\n\t\t\tnoext = strings.TrimSuffix(bp.PkgObj, \".a\")\n\t\t}\n\t\tid = bp.ImportPath\n\n\tcase build.IsLocalImport(path):\n\t\t// \"./x\" -> \"/this/directory/x.ext\", \"/this/directory/x\"\n\t\tnoext = filepath.Join(srcDir, path)\n\t\tid = noext\n\n\tcase filepath.IsAbs(path):\n\t\t// for completeness only - go/build.Import\n\t\t// does not support absolute imports\n\t\t// \"/x\" -> \"/x.ext\", \"/x\"\n\t\tnoext = path\n\t\tid = path\n\t}\n\n\tif false { // for debugging\n\t\tif path != id {\n\t\t\tfmt.Printf(\"%s -> %s\\n\", path, id)\n\t\t}\n\t}\n\n\t// try extensions\n\tfor _, ext := range pkgExts {\n\t\tfilename = noext + ext\n\t\tf, statErr := os.Stat(filename)\n\t\tif statErr == nil && !f.IsDir() {\n\t\t\treturn filename, id, nil\n\t\t}\n\t\tif err == nil {\n\t\t\terr = statErr\n\t\t}\n\t}\n\nnotfound:\n\tif err == nil {\n\t\treturn \"\", path, fmt.Errorf(\"can't find import: %q\", path)\n\t}\n\treturn \"\", path, fmt.Errorf(\"can't find import: %q: %w\", path, err)\n}\n\nvar pkgExts = [...]string{\".a\", \".o\"} // a file from the build cache will have no extension\n\nvar exportMap sync.Map // package dir → func() (string, error)\n\n// lookupGorootExport returns the location of the export data\n// (normally found in the build cache, but located in GOROOT/pkg\n// in prior Go releases) for the package located in pkgDir.\n//\n// (We use the package's directory instead of its import path\n// mainly to simplify handling of the packages in src/vendor\n// and cmd/vendor.)\n//\n// lookupGorootExport is only used in tests within x/tools.\nfunc lookupGorootExport(pkgDir string) (string, error) {\n\tf, ok := exportMap.Load(pkgDir)\n\tif !ok {\n\t\tvar (\n\t\t\tlistOnce   sync.Once\n\t\t\texportPath string\n\t\t\terr        error\n\t\t)\n\t\tf, _ = exportMap.LoadOrStore(pkgDir, func() (string, error) {\n\t\t\tlistOnce.Do(func() {\n\t\t\t\tcmd := exec.Command(filepath.Join(build.Default.GOROOT, \"bin\", \"go\"), \"list\", \"-export\", \"-f\", \"{{.Export}}\", pkgDir)\n\t\t\t\tcmd.Dir = build.Default.GOROOT\n\t\t\t\tcmd.Env = append(os.Environ(), \"PWD=\"+cmd.Dir, \"GOROOT=\"+build.Default.GOROOT)\n\t\t\t\tvar output []byte\n\t\t\t\toutput, err = cmd.Output()\n\t\t\t\tif err != nil {\n\t\t\t\t\tif ee, ok := err.(*exec.ExitError); ok && len(ee.Stderr) > 0 {\n\t\t\t\t\t\terr = errors.New(string(ee.Stderr))\n\t\t\t\t\t}\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\texports := strings.Split(string(bytes.TrimSpace(output)), \"\\n\")\n\t\t\t\tif len(exports) != 1 {\n\t\t\t\t\terr = fmt.Errorf(\"go list reported %d exports; expected 1\", len(exports))\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\texportPath = exports[0]\n\t\t\t})\n\n\t\t\treturn exportPath, err\n\t\t})\n\t}\n\n\treturn f.(func() (string, error))()\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/gcimporter/gcimporter.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// This file is a reduced copy of $GOROOT/src/go/internal/gcimporter/gcimporter.go.\n\n// Package gcimporter provides various functions for reading\n// gc-generated object files that can be used to implement the\n// Importer interface defined by the Go 1.5 standard library package.\n//\n// The encoding is deterministic: if the encoder is applied twice to\n// the same types.Package data structure, both encodings are equal.\n// This property may be important to avoid spurious changes in\n// applications such as build systems.\n//\n// However, the encoder is not necessarily idempotent. Importing an\n// exported package may yield a types.Package that, while it\n// represents the same set of Go types as the original, may differ in\n// the details of its internal representation. Because of these\n// differences, re-encoding the imported package may yield a\n// different, but equally valid, encoding of the package.\npackage gcimporter // import \"golang.org/x/tools/internal/gcimporter\"\n\nimport (\n\t\"bufio\"\n\t\"fmt\"\n\t\"go/token\"\n\t\"go/types\"\n\t\"io\"\n\t\"os\"\n)\n\nconst (\n\t// Enable debug during development: it adds some additional checks, and\n\t// prevents errors from being recovered.\n\tdebug = false\n\n\t// If trace is set, debugging output is printed to std out.\n\ttrace = false\n)\n\n// Import imports a gc-generated package given its import path and srcDir, adds\n// the corresponding package object to the packages map, and returns the object.\n// The packages map must contain all packages already imported.\n//\n// Import is only used in tests.\nfunc Import(fset *token.FileSet, packages map[string]*types.Package, path, srcDir string, lookup func(path string) (io.ReadCloser, error)) (pkg *types.Package, err error) {\n\tvar rc io.ReadCloser\n\tvar id string\n\tif lookup != nil {\n\t\t// With custom lookup specified, assume that caller has\n\t\t// converted path to a canonical import path for use in the map.\n\t\tif path == \"unsafe\" {\n\t\t\treturn types.Unsafe, nil\n\t\t}\n\t\tid = path\n\n\t\t// No need to re-import if the package was imported completely before.\n\t\tif pkg = packages[id]; pkg != nil && pkg.Complete() {\n\t\t\treturn\n\t\t}\n\t\tf, err := lookup(path)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\trc = f\n\t} else {\n\t\tvar filename string\n\t\tfilename, id, err = FindPkg(path, srcDir)\n\t\tif filename == \"\" {\n\t\t\tif path == \"unsafe\" {\n\t\t\t\treturn types.Unsafe, nil\n\t\t\t}\n\t\t\treturn nil, err\n\t\t}\n\n\t\t// no need to re-import if the package was imported completely before\n\t\tif pkg = packages[id]; pkg != nil && pkg.Complete() {\n\t\t\treturn\n\t\t}\n\n\t\t// open file\n\t\tf, err := os.Open(filename)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tdefer func() {\n\t\t\tif err != nil {\n\t\t\t\t// add file name to error\n\t\t\t\terr = fmt.Errorf(\"%s: %v\", filename, err)\n\t\t\t}\n\t\t}()\n\t\trc = f\n\t}\n\tdefer rc.Close()\n\n\tbuf := bufio.NewReader(rc)\n\tdata, err := ReadUnified(buf)\n\tif err != nil {\n\t\terr = fmt.Errorf(\"import %q: %v\", path, err)\n\t\treturn\n\t}\n\n\t// unified: emitted by cmd/compile since go1.20.\n\t_, pkg, err = UImportData(fset, packages, data, id)\n\n\treturn\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/gcimporter/iexport.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Indexed package export.\n//\n// The indexed export data format is an evolution of the previous\n// binary export data format. Its chief contribution is introducing an\n// index table, which allows efficient random access of individual\n// declarations and inline function bodies. In turn, this allows\n// avoiding unnecessary work for compilation units that import large\n// packages.\n//\n//\n// The top-level data format is structured as:\n//\n//     Header struct {\n//         Tag        byte   // 'i'\n//         Version    uvarint\n//         StringSize uvarint\n//         DataSize   uvarint\n//     }\n//\n//     Strings [StringSize]byte\n//     Data    [DataSize]byte\n//\n//     MainIndex []struct{\n//         PkgPath   stringOff\n//         PkgName   stringOff\n//         PkgHeight uvarint\n//\n//         Decls []struct{\n//             Name   stringOff\n//             Offset declOff\n//         }\n//     }\n//\n//     Fingerprint [8]byte\n//\n// uvarint means a uint64 written out using uvarint encoding.\n//\n// []T means a uvarint followed by that many T objects. In other\n// words:\n//\n//     Len   uvarint\n//     Elems [Len]T\n//\n// stringOff means a uvarint that indicates an offset within the\n// Strings section. At that offset is another uvarint, followed by\n// that many bytes, which form the string value.\n//\n// declOff means a uvarint that indicates an offset within the Data\n// section where the associated declaration can be found.\n//\n//\n// There are five kinds of declarations, distinguished by their first\n// byte:\n//\n//     type Var struct {\n//         Tag  byte // 'V'\n//         Pos  Pos\n//         Type typeOff\n//     }\n//\n//     type Func struct {\n//         Tag       byte // 'F' or 'G'\n//         Pos       Pos\n//         TypeParams []typeOff  // only present if Tag == 'G'\n//         Signature Signature\n//     }\n//\n//     type Const struct {\n//         Tag   byte // 'C'\n//         Pos   Pos\n//         Value Value\n//     }\n//\n//     type Type struct {\n//         Tag        byte // 'T' or 'U'\n//         Pos        Pos\n//         TypeParams []typeOff  // only present if Tag == 'U'\n//         Underlying typeOff\n//\n//         Methods []struct{  // omitted if Underlying is an interface type\n//             Pos       Pos\n//             Name      stringOff\n//             Recv      Param\n//             Signature Signature\n//         }\n//     }\n//\n//     type Alias struct {\n//         Tag  byte // 'A' or 'B'\n//         Pos  Pos\n//         TypeParams []typeOff  // only present if Tag == 'B'\n//         Type typeOff\n//     }\n//\n//     // \"Automatic\" declaration of each typeparam\n//     type TypeParam struct {\n//         Tag        byte // 'P'\n//         Pos        Pos\n//         Implicit   bool\n//         Constraint typeOff\n//     }\n//\n// typeOff means a uvarint that either indicates a predeclared type,\n// or an offset into the Data section. If the uvarint is less than\n// predeclReserved, then it indicates the index into the predeclared\n// types list (see predeclared in bexport.go for order). Otherwise,\n// subtracting predeclReserved yields the offset of a type descriptor.\n//\n// Value means a type, kind, and type-specific value. See\n// (*exportWriter).value for details.\n//\n//\n// There are twelve kinds of type descriptors, distinguished by an itag:\n//\n//     type DefinedType struct {\n//         Tag     itag // definedType\n//         Name    stringOff\n//         PkgPath stringOff\n//     }\n//\n//     type PointerType struct {\n//         Tag  itag // pointerType\n//         Elem typeOff\n//     }\n//\n//     type SliceType struct {\n//         Tag  itag // sliceType\n//         Elem typeOff\n//     }\n//\n//     type ArrayType struct {\n//         Tag  itag // arrayType\n//         Len  uint64\n//         Elem typeOff\n//     }\n//\n//     type ChanType struct {\n//         Tag  itag   // chanType\n//         Dir  uint64 // 1 RecvOnly; 2 SendOnly; 3 SendRecv\n//         Elem typeOff\n//     }\n//\n//     type MapType struct {\n//         Tag  itag // mapType\n//         Key  typeOff\n//         Elem typeOff\n//     }\n//\n//     type FuncType struct {\n//         Tag       itag // signatureType\n//         PkgPath   stringOff\n//         Signature Signature\n//     }\n//\n//     type StructType struct {\n//         Tag     itag // structType\n//         PkgPath stringOff\n//         Fields []struct {\n//             Pos      Pos\n//             Name     stringOff\n//             Type     typeOff\n//             Embedded bool\n//             Note     stringOff\n//         }\n//     }\n//\n//     type InterfaceType struct {\n//         Tag     itag // interfaceType\n//         PkgPath stringOff\n//         Embeddeds []struct {\n//             Pos  Pos\n//             Type typeOff\n//         }\n//         Methods []struct {\n//             Pos       Pos\n//             Name      stringOff\n//             Signature Signature\n//         }\n//     }\n//\n//     // Reference to a type param declaration\n//     type TypeParamType struct {\n//         Tag     itag // typeParamType\n//         Name    stringOff\n//         PkgPath stringOff\n//     }\n//\n//     // Instantiation of a generic type (like List[T2] or List[int])\n//     type InstanceType struct {\n//         Tag     itag // instanceType\n//         Pos     pos\n//         TypeArgs []typeOff\n//         BaseType typeOff\n//     }\n//\n//     type UnionType struct {\n//         Tag     itag // interfaceType\n//         Terms   []struct {\n//             tilde bool\n//             Type  typeOff\n//         }\n//     }\n//\n//\n//\n//     type Signature struct {\n//         Params   []Param\n//         Results  []Param\n//         Variadic bool  // omitted if Results is empty\n//     }\n//\n//     type Param struct {\n//         Pos  Pos\n//         Name stringOff\n//         Type typOff\n//     }\n//\n//\n// Pos encodes a file:line:column triple, incorporating a simple delta\n// encoding scheme within a data object. See exportWriter.pos for\n// details.\n\npackage gcimporter\n\nimport (\n\t\"bytes\"\n\t\"encoding/binary\"\n\t\"fmt\"\n\t\"go/constant\"\n\t\"go/token\"\n\t\"go/types\"\n\t\"io\"\n\t\"math/big\"\n\t\"reflect\"\n\t\"slices\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"golang.org/x/tools/go/types/objectpath\"\n\t\"golang.org/x/tools/internal/aliases\"\n)\n\n// IExportShallow encodes \"shallow\" export data for the specified package.\n//\n// For types, we use \"shallow\" export data. Historically, the Go\n// compiler always produced a summary of the types for a given package\n// that included types from other packages that it indirectly\n// referenced: \"deep\" export data. This had the advantage that the\n// compiler (and analogous tools such as gopls) need only load one\n// file per direct import.  However, it meant that the files tended to\n// get larger based on the level of the package in the import\n// graph. For example, higher-level packages in the kubernetes module\n// have over 1MB of \"deep\" export data, even when they have almost no\n// content of their own, merely because they mention a major type that\n// references many others. In pathological cases the export data was\n// 300x larger than the source for a package due to this quadratic\n// growth.\n//\n// \"Shallow\" export data means that the serialized types describe only\n// a single package. If those types mention types from other packages,\n// the type checker may need to request additional packages beyond\n// just the direct imports. Type information for the entire transitive\n// closure of imports is provided (lazily) by the DAG.\n//\n// No promises are made about the encoding other than that it can be decoded by\n// the same version of IIExportShallow. If you plan to save export data in the\n// file system, be sure to include a cryptographic digest of the executable in\n// the key to avoid version skew.\n//\n// If the provided reportf func is non-nil, it is used for reporting\n// bugs (e.g. recovered panics) encountered during export, enabling us\n// to obtain via telemetry the stack that would otherwise be lost by\n// merely returning an error.\nfunc IExportShallow(fset *token.FileSet, pkg *types.Package, reportf ReportFunc) ([]byte, error) {\n\t// In principle this operation can only fail if out.Write fails,\n\t// but that's impossible for bytes.Buffer---and as a matter of\n\t// fact iexportCommon doesn't even check for I/O errors.\n\t// TODO(adonovan): handle I/O errors properly.\n\t// TODO(adonovan): use byte slices throughout, avoiding copying.\n\tconst bundle, shallow = false, true\n\tvar out bytes.Buffer\n\terr := iexportCommon(&out, fset, bundle, shallow, iexportVersion, []*types.Package{pkg}, reportf)\n\treturn out.Bytes(), err\n}\n\n// IImportShallow decodes \"shallow\" types.Package data encoded by\n// [IExportShallow] in the same executable. This function cannot import data\n// from cmd/compile or gcexportdata.Write.\n//\n// The importer calls getPackages to obtain package symbols for all\n// packages mentioned in the export data, including the one being\n// decoded.\n//\n// If the provided reportf func is non-nil, it will be used for reporting bugs\n// encountered during import.\n// TODO(rfindley): remove reportf when we are confident enough in the new\n// objectpath encoding.\nfunc IImportShallow(fset *token.FileSet, getPackages GetPackagesFunc, data []byte, path string, reportf ReportFunc) (*types.Package, error) {\n\tconst bundle = false\n\tconst shallow = true\n\tpkgs, err := iimportCommon(fset, getPackages, data, bundle, path, shallow, reportf)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn pkgs[0], nil\n}\n\n// ReportFunc is the type of a function used to report formatted bugs.\ntype ReportFunc = func(string, ...any)\n\n// Current bundled export format version. Increase with each format change.\n// 0: initial implementation\nconst bundleVersion = 0\n\n// IExportData writes indexed export data for pkg to out.\n//\n// If no file set is provided, position info will be missing.\n// The package path of the top-level package will not be recorded,\n// so that calls to IImportData can override with a provided package path.\nfunc IExportData(out io.Writer, fset *token.FileSet, pkg *types.Package) error {\n\tconst bundle, shallow = false, false\n\treturn iexportCommon(out, fset, bundle, shallow, iexportVersion, []*types.Package{pkg}, nil)\n}\n\n// IExportBundle writes an indexed export bundle for pkgs to out.\nfunc IExportBundle(out io.Writer, fset *token.FileSet, pkgs []*types.Package) error {\n\tconst bundle, shallow = true, false\n\treturn iexportCommon(out, fset, bundle, shallow, iexportVersion, pkgs, nil)\n}\n\nfunc iexportCommon(out io.Writer, fset *token.FileSet, bundle, shallow bool, version int, pkgs []*types.Package, reportf ReportFunc) (err error) {\n\tif !debug {\n\t\tdefer func() {\n\t\t\tif e := recover(); e != nil {\n\t\t\t\t// Report the stack via telemetry (see #71067).\n\t\t\t\tif reportf != nil {\n\t\t\t\t\treportf(\"panic in exporter\")\n\t\t\t\t}\n\t\t\t\tif ierr, ok := e.(internalError); ok {\n\t\t\t\t\t// internalError usually means we exported a\n\t\t\t\t\t// bad go/types data structure: a violation\n\t\t\t\t\t// of an implicit precondition of Export.\n\t\t\t\t\terr = ierr\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\t// Not an internal error; panic again.\n\t\t\t\tpanic(e)\n\t\t\t}\n\t\t}()\n\t}\n\n\tp := iexporter{\n\t\tfset:        fset,\n\t\tversion:     version,\n\t\tshallow:     shallow,\n\t\tallPkgs:     map[*types.Package]bool{},\n\t\tstringIndex: map[string]uint64{},\n\t\tdeclIndex:   map[types.Object]uint64{},\n\t\ttparamNames: map[types.Object]string{},\n\t\ttypIndex:    map[types.Type]uint64{},\n\t}\n\tif !bundle {\n\t\tp.localpkg = pkgs[0]\n\t}\n\n\tfor i, pt := range predeclared() {\n\t\tp.typIndex[pt] = uint64(i)\n\t}\n\tif len(p.typIndex) > predeclReserved {\n\t\tpanic(internalErrorf(\"too many predeclared types: %d > %d\", len(p.typIndex), predeclReserved))\n\t}\n\n\t// Initialize work queue with exported declarations.\n\tfor _, pkg := range pkgs {\n\t\tscope := pkg.Scope()\n\t\tfor _, name := range scope.Names() {\n\t\t\tif token.IsExported(name) {\n\t\t\t\tp.pushDecl(scope.Lookup(name))\n\t\t\t}\n\t\t}\n\n\t\tif bundle {\n\t\t\t// Ensure pkg and its imports are included in the index.\n\t\t\tp.allPkgs[pkg] = true\n\t\t\tfor _, imp := range pkg.Imports() {\n\t\t\t\tp.allPkgs[imp] = true\n\t\t\t}\n\t\t}\n\t}\n\n\t// Loop until no more work.\n\tfor !p.declTodo.empty() {\n\t\tp.doDecl(p.declTodo.popHead())\n\t}\n\n\t// Produce index of offset of each file record in files.\n\tvar files intWriter\n\tvar fileOffset []uint64 // fileOffset[i] is offset in files of file encoded as i\n\tif p.shallow {\n\t\tfileOffset = make([]uint64, len(p.fileInfos))\n\t\tfor i, info := range p.fileInfos {\n\t\t\tfileOffset[i] = uint64(files.Len())\n\t\t\tp.encodeFile(&files, info.file, info.needed)\n\t\t}\n\t}\n\n\t// Append indices to data0 section.\n\tdataLen := uint64(p.data0.Len())\n\tw := p.newWriter()\n\tw.writeIndex(p.declIndex)\n\n\tif bundle {\n\t\tw.uint64(uint64(len(pkgs)))\n\t\tfor _, pkg := range pkgs {\n\t\t\tw.pkg(pkg)\n\t\t\timps := pkg.Imports()\n\t\t\tw.uint64(uint64(len(imps)))\n\t\t\tfor _, imp := range imps {\n\t\t\t\tw.pkg(imp)\n\t\t\t}\n\t\t}\n\t}\n\tw.flush()\n\n\t// Assemble header.\n\tvar hdr intWriter\n\tif bundle {\n\t\thdr.uint64(bundleVersion)\n\t}\n\thdr.uint64(uint64(p.version))\n\thdr.uint64(uint64(p.strings.Len()))\n\tif p.shallow {\n\t\thdr.uint64(uint64(files.Len()))\n\t\thdr.uint64(uint64(len(fileOffset)))\n\t\tfor _, offset := range fileOffset {\n\t\t\thdr.uint64(offset)\n\t\t}\n\t}\n\thdr.uint64(dataLen)\n\n\t// Flush output.\n\tio.Copy(out, &hdr)\n\tio.Copy(out, &p.strings)\n\tif p.shallow {\n\t\tio.Copy(out, &files)\n\t}\n\tio.Copy(out, &p.data0)\n\n\treturn nil\n}\n\n// encodeFile writes to w a representation of the file sufficient to\n// faithfully restore position information about all needed offsets.\n// Mutates the needed array.\nfunc (p *iexporter) encodeFile(w *intWriter, file *token.File, needed []uint64) {\n\t_ = needed[0] // precondition: needed is non-empty\n\n\tw.uint64(p.stringOff(file.Name()))\n\n\tsize := uint64(file.Size())\n\tw.uint64(size)\n\n\t// Sort the set of needed offsets. Duplicates are harmless.\n\tslices.Sort(needed)\n\n\tlines := file.Lines() // byte offset of each line start\n\tw.uint64(uint64(len(lines)))\n\n\t// Rather than record the entire array of line start offsets,\n\t// we save only a sparse list of (index, offset) pairs for\n\t// the start of each line that contains a needed position.\n\tvar sparse [][2]int // (index, offset) pairs\nouter:\n\tfor i, lineStart := range lines {\n\t\tlineEnd := size\n\t\tif i < len(lines)-1 {\n\t\t\tlineEnd = uint64(lines[i+1])\n\t\t}\n\t\t// Does this line contains a needed offset?\n\t\tif needed[0] < lineEnd {\n\t\t\tsparse = append(sparse, [2]int{i, lineStart})\n\t\t\tfor needed[0] < lineEnd {\n\t\t\t\tneeded = needed[1:]\n\t\t\t\tif len(needed) == 0 {\n\t\t\t\t\tbreak outer\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Delta-encode the columns.\n\tw.uint64(uint64(len(sparse)))\n\tvar prev [2]int\n\tfor _, pair := range sparse {\n\t\tw.uint64(uint64(pair[0] - prev[0]))\n\t\tw.uint64(uint64(pair[1] - prev[1]))\n\t\tprev = pair\n\t}\n}\n\n// writeIndex writes out an object index. mainIndex indicates whether\n// we're writing out the main index, which is also read by\n// non-compiler tools and includes a complete package description\n// (i.e., name and height).\nfunc (w *exportWriter) writeIndex(index map[types.Object]uint64) {\n\ttype pkgObj struct {\n\t\tobj  types.Object\n\t\tname string // qualified name; differs from obj.Name for type params\n\t}\n\t// Build a map from packages to objects from that package.\n\tpkgObjs := map[*types.Package][]pkgObj{}\n\n\t// For the main index, make sure to include every package that\n\t// we reference, even if we're not exporting (or reexporting)\n\t// any symbols from it.\n\tif w.p.localpkg != nil {\n\t\tpkgObjs[w.p.localpkg] = nil\n\t}\n\tfor pkg := range w.p.allPkgs {\n\t\tpkgObjs[pkg] = nil\n\t}\n\n\tfor obj := range index {\n\t\tname := w.p.exportName(obj)\n\t\tpkgObjs[obj.Pkg()] = append(pkgObjs[obj.Pkg()], pkgObj{obj, name})\n\t}\n\n\tvar pkgs []*types.Package\n\tfor pkg, objs := range pkgObjs {\n\t\tpkgs = append(pkgs, pkg)\n\n\t\tsort.Slice(objs, func(i, j int) bool {\n\t\t\treturn objs[i].name < objs[j].name\n\t\t})\n\t}\n\n\tsort.Slice(pkgs, func(i, j int) bool {\n\t\treturn w.exportPath(pkgs[i]) < w.exportPath(pkgs[j])\n\t})\n\n\tw.uint64(uint64(len(pkgs)))\n\tfor _, pkg := range pkgs {\n\t\tw.string(w.exportPath(pkg))\n\t\tw.string(pkg.Name())\n\t\tw.uint64(uint64(0)) // package height is not needed for go/types\n\n\t\tobjs := pkgObjs[pkg]\n\t\tw.uint64(uint64(len(objs)))\n\t\tfor _, obj := range objs {\n\t\t\tw.string(obj.name)\n\t\t\tw.uint64(index[obj.obj])\n\t\t}\n\t}\n}\n\n// exportName returns the 'exported' name of an object. It differs from\n// obj.Name() only for type parameters (see tparamExportName for details).\nfunc (p *iexporter) exportName(obj types.Object) (res string) {\n\tif name := p.tparamNames[obj]; name != \"\" {\n\t\treturn name\n\t}\n\treturn obj.Name()\n}\n\ntype iexporter struct {\n\tfset    *token.FileSet\n\tversion int\n\n\tshallow    bool                // don't put types from other packages in the index\n\tobjEncoder *objectpath.Encoder // encodes objects from other packages in shallow mode; lazily allocated\n\tlocalpkg   *types.Package      // (nil in bundle mode)\n\n\t// allPkgs tracks all packages that have been referenced by\n\t// the export data, so we can ensure to include them in the\n\t// main index.\n\tallPkgs map[*types.Package]bool\n\n\tdeclTodo objQueue\n\n\tstrings     intWriter\n\tstringIndex map[string]uint64\n\n\t// In shallow mode, object positions are encoded as (file, offset).\n\t// Each file is recorded as a line-number table.\n\t// Only the lines of needed positions are saved faithfully.\n\tfileInfo  map[*token.File]uint64 // value is index in fileInfos\n\tfileInfos []*filePositions\n\n\tdata0       intWriter\n\tdeclIndex   map[types.Object]uint64\n\ttparamNames map[types.Object]string // typeparam->exported name\n\ttypIndex    map[types.Type]uint64\n\n\tindent int // for tracing support\n}\n\ntype filePositions struct {\n\tfile   *token.File\n\tneeded []uint64 // unordered list of needed file offsets\n}\n\nfunc (p *iexporter) trace(format string, args ...any) {\n\tif !trace {\n\t\t// Call sites should also be guarded, but having this check here allows\n\t\t// easily enabling/disabling debug trace statements.\n\t\treturn\n\t}\n\tfmt.Printf(strings.Repeat(\"..\", p.indent)+format+\"\\n\", args...)\n}\n\n// objectpathEncoder returns the lazily allocated objectpath.Encoder to use\n// when encoding objects in other packages during shallow export.\n//\n// Using a shared Encoder amortizes some of cost of objectpath search.\nfunc (p *iexporter) objectpathEncoder() *objectpath.Encoder {\n\tif p.objEncoder == nil {\n\t\tp.objEncoder = new(objectpath.Encoder)\n\t}\n\treturn p.objEncoder\n}\n\n// stringOff returns the offset of s within the string section.\n// If not already present, it's added to the end.\nfunc (p *iexporter) stringOff(s string) uint64 {\n\toff, ok := p.stringIndex[s]\n\tif !ok {\n\t\toff = uint64(p.strings.Len())\n\t\tp.stringIndex[s] = off\n\n\t\tp.strings.uint64(uint64(len(s)))\n\t\tp.strings.WriteString(s)\n\t}\n\treturn off\n}\n\n// fileIndexAndOffset returns the index of the token.File and the byte offset of pos within it.\nfunc (p *iexporter) fileIndexAndOffset(file *token.File, pos token.Pos) (uint64, uint64) {\n\tindex, ok := p.fileInfo[file]\n\tif !ok {\n\t\tindex = uint64(len(p.fileInfo))\n\t\tp.fileInfos = append(p.fileInfos, &filePositions{file: file})\n\t\tif p.fileInfo == nil {\n\t\t\tp.fileInfo = make(map[*token.File]uint64)\n\t\t}\n\t\tp.fileInfo[file] = index\n\t}\n\t// Record each needed offset.\n\tinfo := p.fileInfos[index]\n\toffset := uint64(file.Offset(pos))\n\tinfo.needed = append(info.needed, offset)\n\n\treturn index, offset\n}\n\n// pushDecl adds n to the declaration work queue, if not already present.\nfunc (p *iexporter) pushDecl(obj types.Object) {\n\t// Package unsafe is known to the compiler and predeclared.\n\t// Caller should not ask us to do export it.\n\tif obj.Pkg() == types.Unsafe {\n\t\tpanic(\"cannot export package unsafe\")\n\t}\n\n\t// Shallow export data: don't index decls from other packages.\n\tif p.shallow && obj.Pkg() != p.localpkg {\n\t\treturn\n\t}\n\n\tif _, ok := p.declIndex[obj]; ok {\n\t\treturn\n\t}\n\n\tp.declIndex[obj] = ^uint64(0) // mark obj present in work queue\n\tp.declTodo.pushTail(obj)\n}\n\n// exportWriter handles writing out individual data section chunks.\ntype exportWriter struct {\n\tp *iexporter\n\n\tdata       intWriter\n\tprevFile   string\n\tprevLine   int64\n\tprevColumn int64\n}\n\nfunc (w *exportWriter) exportPath(pkg *types.Package) string {\n\tif pkg == w.p.localpkg {\n\t\treturn \"\"\n\t}\n\treturn pkg.Path()\n}\n\nfunc (p *iexporter) doDecl(obj types.Object) {\n\tif trace {\n\t\tp.trace(\"exporting decl %v (%T)\", obj, obj)\n\t\tp.indent++\n\t\tdefer func() {\n\t\t\tp.indent--\n\t\t\tp.trace(\"=> %s\", obj)\n\t\t}()\n\t}\n\tw := p.newWriter()\n\n\tswitch obj := obj.(type) {\n\tcase *types.Var:\n\t\tw.tag(varTag)\n\t\tw.pos(obj.Pos())\n\t\tw.typ(obj.Type(), obj.Pkg())\n\n\tcase *types.Func:\n\t\tsig, _ := obj.Type().(*types.Signature)\n\t\tif sig.Recv() != nil {\n\t\t\t// We shouldn't see methods in the package scope,\n\t\t\t// but the type checker may repair \"func () F() {}\"\n\t\t\t// to \"func (Invalid) F()\" and then treat it like \"func F()\",\n\t\t\t// so allow that. See golang/go#57729.\n\t\t\tif sig.Recv().Type() != types.Typ[types.Invalid] {\n\t\t\t\tpanic(internalErrorf(\"unexpected method: %v\", sig))\n\t\t\t}\n\t\t}\n\n\t\t// Function.\n\t\tif sig.TypeParams().Len() == 0 {\n\t\t\tw.tag(funcTag)\n\t\t} else {\n\t\t\tw.tag(genericFuncTag)\n\t\t}\n\t\tw.pos(obj.Pos())\n\t\t// The tparam list of the function type is the declaration of the type\n\t\t// params. So, write out the type params right now. Then those type params\n\t\t// will be referenced via their type offset (via typOff) in all other\n\t\t// places in the signature and function where they are used.\n\t\t//\n\t\t// While importing the type parameters, tparamList computes and records\n\t\t// their export name, so that it can be later used when writing the index.\n\t\tif tparams := sig.TypeParams(); tparams.Len() > 0 {\n\t\t\tw.tparamList(obj.Name(), tparams, obj.Pkg())\n\t\t}\n\t\tw.signature(sig)\n\n\tcase *types.Const:\n\t\tw.tag(constTag)\n\t\tw.pos(obj.Pos())\n\t\tw.value(obj.Type(), obj.Val())\n\n\tcase *types.TypeName:\n\t\tt := obj.Type()\n\n\t\tif tparam, ok := types.Unalias(t).(*types.TypeParam); ok {\n\t\t\tw.tag(typeParamTag)\n\t\t\tw.pos(obj.Pos())\n\t\t\tconstraint := tparam.Constraint()\n\t\t\tif p.version >= iexportVersionGo1_18 {\n\t\t\t\timplicit := false\n\t\t\t\tif iface, _ := types.Unalias(constraint).(*types.Interface); iface != nil {\n\t\t\t\t\timplicit = iface.IsImplicit()\n\t\t\t\t}\n\t\t\t\tw.bool(implicit)\n\t\t\t}\n\t\t\tw.typ(constraint, obj.Pkg())\n\t\t\tbreak\n\t\t}\n\n\t\tif obj.IsAlias() {\n\t\t\talias, materialized := t.(*types.Alias) // may fail when aliases are not enabled\n\n\t\t\tvar tparams *types.TypeParamList\n\t\t\tif materialized {\n\t\t\t\ttparams = aliases.TypeParams(alias)\n\t\t\t}\n\t\t\tif tparams.Len() == 0 {\n\t\t\t\tw.tag(aliasTag)\n\t\t\t} else {\n\t\t\t\tw.tag(genericAliasTag)\n\t\t\t}\n\t\t\tw.pos(obj.Pos())\n\t\t\tif tparams.Len() > 0 {\n\t\t\t\tw.tparamList(obj.Name(), tparams, obj.Pkg())\n\t\t\t}\n\t\t\tif materialized {\n\t\t\t\t// Preserve materialized aliases,\n\t\t\t\t// even of non-exported types.\n\t\t\t\tt = aliases.Rhs(alias)\n\t\t\t}\n\t\t\tw.typ(t, obj.Pkg())\n\t\t\tbreak\n\t\t}\n\n\t\t// Defined type.\n\t\tnamed, ok := t.(*types.Named)\n\t\tif !ok {\n\t\t\tpanic(internalErrorf(\"%s is not a defined type\", t))\n\t\t}\n\n\t\tif named.TypeParams().Len() == 0 {\n\t\t\tw.tag(typeTag)\n\t\t} else {\n\t\t\tw.tag(genericTypeTag)\n\t\t}\n\t\tw.pos(obj.Pos())\n\n\t\tif named.TypeParams().Len() > 0 {\n\t\t\t// While importing the type parameters, tparamList computes and records\n\t\t\t// their export name, so that it can be later used when writing the index.\n\t\t\tw.tparamList(obj.Name(), named.TypeParams(), obj.Pkg())\n\t\t}\n\n\t\tunderlying := named.Underlying()\n\t\tw.typ(underlying, obj.Pkg())\n\n\t\tif types.IsInterface(t) {\n\t\t\tbreak\n\t\t}\n\n\t\tn := named.NumMethods()\n\t\tw.uint64(uint64(n))\n\t\tfor i := range n {\n\t\t\tm := named.Method(i)\n\t\t\tw.pos(m.Pos())\n\t\t\tw.string(m.Name())\n\t\t\tsig, _ := m.Type().(*types.Signature)\n\n\t\t\t// Receiver type parameters are type arguments of the receiver type, so\n\t\t\t// their name must be qualified before exporting recv.\n\t\t\tif rparams := sig.RecvTypeParams(); rparams.Len() > 0 {\n\t\t\t\tprefix := obj.Name() + \".\" + m.Name()\n\t\t\t\tfor rparam := range rparams.TypeParams() {\n\t\t\t\t\tname := tparamExportName(prefix, rparam)\n\t\t\t\t\tw.p.tparamNames[rparam.Obj()] = name\n\t\t\t\t}\n\t\t\t}\n\t\t\tw.param(sig.Recv())\n\t\t\tw.signature(sig)\n\t\t}\n\n\tdefault:\n\t\tpanic(internalErrorf(\"unexpected object: %v\", obj))\n\t}\n\n\tp.declIndex[obj] = w.flush()\n}\n\nfunc (w *exportWriter) tag(tag byte) {\n\tw.data.WriteByte(tag)\n}\n\nfunc (w *exportWriter) pos(pos token.Pos) {\n\tif w.p.shallow {\n\t\tw.posV2(pos)\n\t} else if w.p.version >= iexportVersionPosCol {\n\t\tw.posV1(pos)\n\t} else {\n\t\tw.posV0(pos)\n\t}\n}\n\n// posV2 encoding (used only in shallow mode) records positions as\n// (file, offset), where file is the index in the token.File table\n// (which records the file name and newline offsets) and offset is a\n// byte offset. It effectively ignores //line directives.\nfunc (w *exportWriter) posV2(pos token.Pos) {\n\tif pos == token.NoPos {\n\t\tw.uint64(0)\n\t\treturn\n\t}\n\tfile := w.p.fset.File(pos) // fset must be non-nil\n\tindex, offset := w.p.fileIndexAndOffset(file, pos)\n\tw.uint64(1 + index)\n\tw.uint64(offset)\n}\n\nfunc (w *exportWriter) posV1(pos token.Pos) {\n\tif w.p.fset == nil {\n\t\tw.int64(0)\n\t\treturn\n\t}\n\n\tp := w.p.fset.Position(pos)\n\tfile := p.Filename\n\tline := int64(p.Line)\n\tcolumn := int64(p.Column)\n\n\tdeltaColumn := (column - w.prevColumn) << 1\n\tdeltaLine := (line - w.prevLine) << 1\n\n\tif file != w.prevFile {\n\t\tdeltaLine |= 1\n\t}\n\tif deltaLine != 0 {\n\t\tdeltaColumn |= 1\n\t}\n\n\tw.int64(deltaColumn)\n\tif deltaColumn&1 != 0 {\n\t\tw.int64(deltaLine)\n\t\tif deltaLine&1 != 0 {\n\t\t\tw.string(file)\n\t\t}\n\t}\n\n\tw.prevFile = file\n\tw.prevLine = line\n\tw.prevColumn = column\n}\n\nfunc (w *exportWriter) posV0(pos token.Pos) {\n\tif w.p.fset == nil {\n\t\tw.int64(0)\n\t\treturn\n\t}\n\n\tp := w.p.fset.Position(pos)\n\tfile := p.Filename\n\tline := int64(p.Line)\n\n\t// When file is the same as the last position (common case),\n\t// we can save a few bytes by delta encoding just the line\n\t// number.\n\t//\n\t// Note: Because data objects may be read out of order (or not\n\t// at all), we can only apply delta encoding within a single\n\t// object. This is handled implicitly by tracking prevFile and\n\t// prevLine as fields of exportWriter.\n\n\tif file == w.prevFile {\n\t\tdelta := line - w.prevLine\n\t\tw.int64(delta)\n\t\tif delta == deltaNewFile {\n\t\t\tw.int64(-1)\n\t\t}\n\t} else {\n\t\tw.int64(deltaNewFile)\n\t\tw.int64(line) // line >= 0\n\t\tw.string(file)\n\t\tw.prevFile = file\n\t}\n\tw.prevLine = line\n}\n\nfunc (w *exportWriter) pkg(pkg *types.Package) {\n\tif pkg == nil {\n\t\t// [exportWriter.typ] accepts a nil pkg only for types\n\t\t// of constants, which cannot contain named objects\n\t\t// such as fields or methods and thus should never\n\t\t// reach this method (#76222).\n\t\tpanic(\"nil package\")\n\t}\n\t// Ensure any referenced packages are declared in the main index.\n\tw.p.allPkgs[pkg] = true\n\n\tw.string(w.exportPath(pkg))\n}\n\nfunc (w *exportWriter) qualifiedType(obj *types.TypeName) {\n\tname := w.p.exportName(obj)\n\n\t// Ensure any referenced declarations are written out too.\n\tw.p.pushDecl(obj)\n\tw.string(name)\n\tw.pkg(obj.Pkg())\n}\n\n// typ emits the specified type.\n//\n// Objects within the type (struct fields and interface methods) are\n// qualified by pkg. It may be nil if the type cannot contain objects,\n// such as the type of a constant.\nfunc (w *exportWriter) typ(t types.Type, pkg *types.Package) {\n\tw.data.uint64(w.p.typOff(t, pkg))\n}\n\nfunc (p *iexporter) newWriter() *exportWriter {\n\treturn &exportWriter{p: p}\n}\n\nfunc (w *exportWriter) flush() uint64 {\n\toff := uint64(w.p.data0.Len())\n\tio.Copy(&w.p.data0, &w.data)\n\treturn off\n}\n\nfunc (p *iexporter) typOff(t types.Type, pkg *types.Package) uint64 {\n\toff, ok := p.typIndex[t]\n\tif !ok {\n\t\tw := p.newWriter()\n\t\tw.doTyp(t, pkg)\n\t\toff = predeclReserved + w.flush()\n\t\tp.typIndex[t] = off\n\t}\n\treturn off\n}\n\nfunc (w *exportWriter) startType(k itag) {\n\tw.data.uint64(uint64(k))\n}\n\n// doTyp is the implementation of [exportWriter.typ].\nfunc (w *exportWriter) doTyp(t types.Type, pkg *types.Package) {\n\tif trace {\n\t\tw.p.trace(\"exporting type %s (%T)\", t, t)\n\t\tw.p.indent++\n\t\tdefer func() {\n\t\t\tw.p.indent--\n\t\t\tw.p.trace(\"=> %s\", t)\n\t\t}()\n\t}\n\tswitch t := t.(type) {\n\tcase *types.Alias:\n\t\tif targs := aliases.TypeArgs(t); targs.Len() > 0 {\n\t\t\tw.startType(instanceType)\n\t\t\tw.pos(t.Obj().Pos())\n\t\t\tw.typeList(targs, pkg)\n\t\t\tw.typ(aliases.Origin(t), pkg)\n\t\t\treturn\n\t\t}\n\t\tw.startType(aliasType)\n\t\tw.qualifiedType(t.Obj())\n\n\tcase *types.Named:\n\t\tif targs := t.TypeArgs(); targs.Len() > 0 {\n\t\t\tw.startType(instanceType)\n\t\t\t// TODO(rfindley): investigate if this position is correct, and if it\n\t\t\t// matters.\n\t\t\tw.pos(t.Obj().Pos())\n\t\t\tw.typeList(targs, pkg)\n\t\t\tw.typ(t.Origin(), pkg)\n\t\t\treturn\n\t\t}\n\t\tw.startType(definedType)\n\t\tw.qualifiedType(t.Obj())\n\n\tcase *types.TypeParam:\n\t\tw.startType(typeParamType)\n\t\tw.qualifiedType(t.Obj())\n\n\tcase *types.Pointer:\n\t\tw.startType(pointerType)\n\t\tw.typ(t.Elem(), pkg)\n\n\tcase *types.Slice:\n\t\tw.startType(sliceType)\n\t\tw.typ(t.Elem(), pkg)\n\n\tcase *types.Array:\n\t\tw.startType(arrayType)\n\t\tw.uint64(uint64(t.Len()))\n\t\tw.typ(t.Elem(), pkg)\n\n\tcase *types.Chan:\n\t\tw.startType(chanType)\n\t\t// 1 RecvOnly; 2 SendOnly; 3 SendRecv\n\t\tvar dir uint64\n\t\tswitch t.Dir() {\n\t\tcase types.RecvOnly:\n\t\t\tdir = 1\n\t\tcase types.SendOnly:\n\t\t\tdir = 2\n\t\tcase types.SendRecv:\n\t\t\tdir = 3\n\t\t}\n\t\tw.uint64(dir)\n\t\tw.typ(t.Elem(), pkg)\n\n\tcase *types.Map:\n\t\tw.startType(mapType)\n\t\tw.typ(t.Key(), pkg)\n\t\tw.typ(t.Elem(), pkg)\n\n\tcase *types.Signature:\n\t\tw.startType(signatureType)\n\t\tw.pkg(pkg) // qualifies param/result vars\n\t\tw.signature(t)\n\n\tcase *types.Struct:\n\t\tw.startType(structType)\n\t\tn := t.NumFields()\n\t\t// Even for struct{} we must emit some qualifying package, because that's\n\t\t// what the compiler does, and thus that's what the importer expects.\n\t\tfieldPkg := pkg\n\t\tif n > 0 {\n\t\t\tfieldPkg = t.Field(0).Pkg()\n\t\t}\n\t\tif fieldPkg == nil {\n\t\t\t// TODO(rfindley): improve this very hacky logic.\n\t\t\t//\n\t\t\t// The importer expects a package to be set for all struct types, even\n\t\t\t// those with no fields. A better encoding might be to set NumFields\n\t\t\t// before pkg. setPkg panics with a nil package, which may be possible\n\t\t\t// to reach with invalid packages (and perhaps valid packages, too?), so\n\t\t\t// (arbitrarily) set the localpkg if available.\n\t\t\t//\n\t\t\t// Alternatively, we may be able to simply guarantee that pkg != nil, by\n\t\t\t// reconsidering the encoding of constant values.\n\t\t\tif w.p.shallow {\n\t\t\t\tfieldPkg = w.p.localpkg\n\t\t\t} else {\n\t\t\t\tpanic(internalErrorf(\"no package to set for empty struct\"))\n\t\t\t}\n\t\t}\n\t\tw.pkg(fieldPkg)\n\t\tw.uint64(uint64(n))\n\n\t\tfor i := range n {\n\t\t\tf := t.Field(i)\n\t\t\tif w.p.shallow {\n\t\t\t\tw.objectPath(f)\n\t\t\t}\n\t\t\tw.pos(f.Pos())\n\t\t\tw.string(f.Name()) // unexported fields implicitly qualified by prior setPkg\n\t\t\tw.typ(f.Type(), fieldPkg)\n\t\t\tw.bool(f.Anonymous())\n\t\t\tw.string(t.Tag(i)) // note (or tag)\n\t\t}\n\n\tcase *types.Interface:\n\t\tw.startType(interfaceType)\n\t\tw.pkg(pkg) // qualifies unexported method funcs\n\n\t\tn := t.NumEmbeddeds()\n\t\tw.uint64(uint64(n))\n\t\tfor i := 0; i < n; i++ {\n\t\t\tft := t.EmbeddedType(i)\n\t\t\tif named, _ := types.Unalias(ft).(*types.Named); named != nil {\n\t\t\t\tw.pos(named.Obj().Pos())\n\t\t\t} else {\n\t\t\t\t// e.g. ~int\n\t\t\t\tw.pos(token.NoPos)\n\t\t\t}\n\t\t\tw.typ(ft, pkg)\n\t\t}\n\n\t\t// See comment for struct fields. In shallow mode we change the encoding\n\t\t// for interface methods that are promoted from other packages.\n\n\t\tn = t.NumExplicitMethods()\n\t\tw.uint64(uint64(n))\n\t\tfor i := 0; i < n; i++ {\n\t\t\tm := t.ExplicitMethod(i)\n\t\t\tif w.p.shallow {\n\t\t\t\tw.objectPath(m)\n\t\t\t}\n\t\t\tw.pos(m.Pos())\n\t\t\tw.string(m.Name())\n\t\t\tsig, _ := m.Type().(*types.Signature)\n\t\t\tw.signature(sig)\n\t\t}\n\n\tcase *types.Union:\n\t\tw.startType(unionType)\n\t\tnt := t.Len()\n\t\tw.uint64(uint64(nt))\n\t\tfor i := range nt {\n\t\t\tterm := t.Term(i)\n\t\t\tw.bool(term.Tilde())\n\t\t\tw.typ(term.Type(), pkg)\n\t\t}\n\n\tdefault:\n\t\tpanic(internalErrorf(\"unexpected type: %v, %v\", t, reflect.TypeOf(t)))\n\t}\n}\n\n// objectPath writes the package and objectPath to use to look up obj in a\n// different package, when encoding in \"shallow\" mode.\n//\n// When doing a shallow import, the importer creates only the local package,\n// and requests package symbols for dependencies from the client.\n// However, certain types defined in the local package may hold objects defined\n// (perhaps deeply) within another package.\n//\n// For example, consider the following:\n//\n//\tpackage a\n//\tfunc F() chan * map[string] struct { X int }\n//\n//\tpackage b\n//\timport \"a\"\n//\tvar B = a.F()\n//\n// In this example, the type of b.B holds fields defined in package a.\n// In order to have the correct canonical objects for the field defined in the\n// type of B, they are encoded as objectPaths and later looked up in the\n// importer. The same problem applies to interface methods.\nfunc (w *exportWriter) objectPath(obj types.Object) {\n\tif obj.Pkg() == nil || obj.Pkg() == w.p.localpkg {\n\t\t// obj.Pkg() may be nil for the builtin error.Error.\n\t\t// In this case, or if obj is declared in the local package, no need to\n\t\t// encode.\n\t\tw.string(\"\")\n\t\treturn\n\t}\n\tobjectPath, err := w.p.objectpathEncoder().For(obj)\n\tif err != nil {\n\t\t// Fall back to the empty string, which will cause the importer to create a\n\t\t// new object, which matches earlier behavior. Creating a new object is\n\t\t// sufficient for many purposes (such as type checking), but causes certain\n\t\t// references algorithms to fail (golang/go#60819). However, we didn't\n\t\t// notice this problem during months of gopls@v0.12.0 testing.\n\t\t//\n\t\t// TODO(golang/go#61674): this workaround is insufficient, as in the case\n\t\t// where the field forwarded from an instantiated type that may not appear\n\t\t// in the export data of the original package:\n\t\t//\n\t\t//  // package a\n\t\t//  type A[P any] struct{ F P }\n\t\t//\n\t\t//  // package b\n\t\t//  type B a.A[int]\n\t\t//\n\t\t// We need to update references algorithms not to depend on this\n\t\t// de-duplication, at which point we may want to simply remove the\n\t\t// workaround here.\n\t\tw.string(\"\")\n\t\treturn\n\t}\n\tw.string(string(objectPath))\n\tw.pkg(obj.Pkg())\n}\n\nfunc (w *exportWriter) signature(sig *types.Signature) {\n\tw.paramList(sig.Params())\n\tw.paramList(sig.Results())\n\tif sig.Params().Len() > 0 {\n\t\tw.bool(sig.Variadic())\n\t}\n}\n\nfunc (w *exportWriter) typeList(ts *types.TypeList, pkg *types.Package) {\n\tw.uint64(uint64(ts.Len()))\n\tfor t := range ts.Types() {\n\t\tw.typ(t, pkg)\n\t}\n}\n\nfunc (w *exportWriter) tparamList(prefix string, list *types.TypeParamList, pkg *types.Package) {\n\tll := uint64(list.Len())\n\tw.uint64(ll)\n\tfor tparam := range list.TypeParams() {\n\t\t// Set the type parameter exportName before exporting its type.\n\t\texportName := tparamExportName(prefix, tparam)\n\t\tw.p.tparamNames[tparam.Obj()] = exportName\n\t\tw.typ(tparam, pkg)\n\t}\n}\n\nconst blankMarker = \"$\"\n\n// tparamExportName returns the 'exported' name of a type parameter, which\n// differs from its actual object name: it is prefixed with a qualifier, and\n// blank type parameter names are disambiguated by their index in the type\n// parameter list.\nfunc tparamExportName(prefix string, tparam *types.TypeParam) string {\n\tassert(prefix != \"\")\n\tname := tparam.Obj().Name()\n\tif name == \"_\" {\n\t\tname = blankMarker + strconv.Itoa(tparam.Index())\n\t}\n\treturn prefix + \".\" + name\n}\n\n// tparamName returns the real name of a type parameter, after stripping its\n// qualifying prefix and reverting blank-name encoding. See tparamExportName\n// for details.\nfunc tparamName(exportName string) string {\n\t// Remove the \"path\" from the type param name that makes it unique.\n\tix := strings.LastIndex(exportName, \".\")\n\tif ix < 0 {\n\t\terrorf(\"malformed type parameter export name %s: missing prefix\", exportName)\n\t}\n\tname := exportName[ix+1:]\n\tif strings.HasPrefix(name, blankMarker) {\n\t\treturn \"_\"\n\t}\n\treturn name\n}\n\nfunc (w *exportWriter) paramList(tup *types.Tuple) {\n\tn := tup.Len()\n\tw.uint64(uint64(n))\n\tfor i := range n {\n\t\tw.param(tup.At(i))\n\t}\n}\n\nfunc (w *exportWriter) param(obj types.Object) {\n\tw.pos(obj.Pos())\n\tw.localIdent(obj)\n\tw.typ(obj.Type(), obj.Pkg())\n}\n\nfunc (w *exportWriter) value(typ types.Type, v constant.Value) {\n\tw.typ(typ, nil)\n\tif w.p.version >= iexportVersionGo1_18 {\n\t\tw.int64(int64(v.Kind()))\n\t}\n\n\tif v.Kind() == constant.Unknown {\n\t\t// golang/go#60605: treat unknown constant values as if they have invalid type\n\t\t//\n\t\t// This loses some fidelity over the package type-checked from source, but that\n\t\t// is acceptable.\n\t\t//\n\t\t// TODO(rfindley): we should switch on the recorded constant kind rather\n\t\t// than the constant type\n\t\treturn\n\t}\n\n\tswitch b := typ.Underlying().(*types.Basic); b.Info() & types.IsConstType {\n\tcase types.IsBoolean:\n\t\tw.bool(constant.BoolVal(v))\n\tcase types.IsInteger:\n\t\tvar i big.Int\n\t\tif i64, exact := constant.Int64Val(v); exact {\n\t\t\ti.SetInt64(i64)\n\t\t} else if ui64, exact := constant.Uint64Val(v); exact {\n\t\t\ti.SetUint64(ui64)\n\t\t} else {\n\t\t\ti.SetString(v.ExactString(), 10)\n\t\t}\n\t\tw.mpint(&i, typ)\n\tcase types.IsFloat:\n\t\tf := constantToFloat(v)\n\t\tw.mpfloat(f, typ)\n\tcase types.IsComplex:\n\t\tw.mpfloat(constantToFloat(constant.Real(v)), typ)\n\t\tw.mpfloat(constantToFloat(constant.Imag(v)), typ)\n\tcase types.IsString:\n\t\tw.string(constant.StringVal(v))\n\tdefault:\n\t\tif b.Kind() == types.Invalid {\n\t\t\t// package contains type errors\n\t\t\tbreak\n\t\t}\n\t\tpanic(internalErrorf(\"unexpected type %v (%v)\", typ, typ.Underlying()))\n\t}\n}\n\n// constantToFloat converts a constant.Value with kind constant.Float to a\n// big.Float.\nfunc constantToFloat(x constant.Value) *big.Float {\n\tx = constant.ToFloat(x)\n\t// Use the same floating-point precision (512) as cmd/compile\n\t// (see Mpprec in cmd/compile/internal/gc/mpfloat.go).\n\tconst mpprec = 512\n\tvar f big.Float\n\tf.SetPrec(mpprec)\n\tif v, exact := constant.Float64Val(x); exact {\n\t\t// float64\n\t\tf.SetFloat64(v)\n\t} else if num, denom := constant.Num(x), constant.Denom(x); num.Kind() == constant.Int {\n\t\t// TODO(gri): add big.Rat accessor to constant.Value.\n\t\tn := valueToRat(num)\n\t\td := valueToRat(denom)\n\t\tf.SetRat(n.Quo(n, d))\n\t} else {\n\t\t// Value too large to represent as a fraction => inaccessible.\n\t\t// TODO(gri): add big.Float accessor to constant.Value.\n\t\t_, ok := f.SetString(x.ExactString())\n\t\tassert(ok)\n\t}\n\treturn &f\n}\n\nfunc valueToRat(x constant.Value) *big.Rat {\n\t// Convert little-endian to big-endian.\n\t// I can't believe this is necessary.\n\tbytes := constant.Bytes(x)\n\tfor i := 0; i < len(bytes)/2; i++ {\n\t\tbytes[i], bytes[len(bytes)-1-i] = bytes[len(bytes)-1-i], bytes[i]\n\t}\n\treturn new(big.Rat).SetInt(new(big.Int).SetBytes(bytes))\n}\n\n// mpint exports a multi-precision integer.\n//\n// For unsigned types, small values are written out as a single\n// byte. Larger values are written out as a length-prefixed big-endian\n// byte string, where the length prefix is encoded as its complement.\n// For example, bytes 0, 1, and 2 directly represent the integer\n// values 0, 1, and 2; while bytes 255, 254, and 253 indicate a 1-,\n// 2-, and 3-byte big-endian string follow.\n//\n// Encoding for signed types use the same general approach as for\n// unsigned types, except small values use zig-zag encoding and the\n// bottom bit of length prefix byte for large values is reserved as a\n// sign bit.\n//\n// The exact boundary between small and large encodings varies\n// according to the maximum number of bytes needed to encode a value\n// of type typ. As a special case, 8-bit types are always encoded as a\n// single byte.\n//\n// TODO(mdempsky): Is this level of complexity really worthwhile?\nfunc (w *exportWriter) mpint(x *big.Int, typ types.Type) {\n\tbasic, ok := typ.Underlying().(*types.Basic)\n\tif !ok {\n\t\tpanic(internalErrorf(\"unexpected type %v (%T)\", typ.Underlying(), typ.Underlying()))\n\t}\n\n\tsigned, maxBytes := intSize(basic)\n\n\tnegative := x.Sign() < 0\n\tif !signed && negative {\n\t\tpanic(internalErrorf(\"negative unsigned integer; type %v, value %v\", typ, x))\n\t}\n\n\tb := x.Bytes()\n\tif len(b) > 0 && b[0] == 0 {\n\t\tpanic(internalErrorf(\"leading zeros\"))\n\t}\n\tif uint(len(b)) > maxBytes {\n\t\tpanic(internalErrorf(\"bad mpint length: %d > %d (type %v, value %v)\", len(b), maxBytes, typ, x))\n\t}\n\n\tmaxSmall := 256 - maxBytes\n\tif signed {\n\t\tmaxSmall = 256 - 2*maxBytes\n\t}\n\tif maxBytes == 1 {\n\t\tmaxSmall = 256\n\t}\n\n\t// Check if x can use small value encoding.\n\tif len(b) <= 1 {\n\t\tvar ux uint\n\t\tif len(b) == 1 {\n\t\t\tux = uint(b[0])\n\t\t}\n\t\tif signed {\n\t\t\tux <<= 1\n\t\t\tif negative {\n\t\t\t\tux--\n\t\t\t}\n\t\t}\n\t\tif ux < maxSmall {\n\t\t\tw.data.WriteByte(byte(ux))\n\t\t\treturn\n\t\t}\n\t}\n\n\tn := 256 - uint(len(b))\n\tif signed {\n\t\tn = 256 - 2*uint(len(b))\n\t\tif negative {\n\t\t\tn |= 1\n\t\t}\n\t}\n\tif n < maxSmall || n >= 256 {\n\t\tpanic(internalErrorf(\"encoding mistake: %d, %v, %v => %d\", len(b), signed, negative, n))\n\t}\n\n\tw.data.WriteByte(byte(n))\n\tw.data.Write(b)\n}\n\n// mpfloat exports a multi-precision floating point number.\n//\n// The number's value is decomposed into mantissa × 2**exponent, where\n// mantissa is an integer. The value is written out as mantissa (as a\n// multi-precision integer) and then the exponent, except exponent is\n// omitted if mantissa is zero.\nfunc (w *exportWriter) mpfloat(f *big.Float, typ types.Type) {\n\tif f.IsInf() {\n\t\tpanic(\"infinite constant\")\n\t}\n\n\t// Break into f = mant × 2**exp, with 0.5 <= mant < 1.\n\tvar mant big.Float\n\texp := int64(f.MantExp(&mant))\n\n\t// Scale so that mant is an integer.\n\tprec := mant.MinPrec()\n\tmant.SetMantExp(&mant, int(prec))\n\texp -= int64(prec)\n\n\tmanti, acc := mant.Int(nil)\n\tif acc != big.Exact {\n\t\tpanic(internalErrorf(\"mantissa scaling failed for %f (%s)\", f, acc))\n\t}\n\tw.mpint(manti, typ)\n\tif manti.Sign() != 0 {\n\t\tw.int64(exp)\n\t}\n}\n\nfunc (w *exportWriter) bool(b bool) bool {\n\tvar x uint64\n\tif b {\n\t\tx = 1\n\t}\n\tw.uint64(x)\n\treturn b\n}\n\nfunc (w *exportWriter) int64(x int64)   { w.data.int64(x) }\nfunc (w *exportWriter) uint64(x uint64) { w.data.uint64(x) }\nfunc (w *exportWriter) string(s string) { w.uint64(w.p.stringOff(s)) }\n\nfunc (w *exportWriter) localIdent(obj types.Object) {\n\t// Anonymous parameters.\n\tif obj == nil {\n\t\tw.string(\"\")\n\t\treturn\n\t}\n\n\tname := obj.Name()\n\tif name == \"_\" {\n\t\tw.string(\"_\")\n\t\treturn\n\t}\n\n\tw.string(name)\n}\n\ntype intWriter struct {\n\tbytes.Buffer\n}\n\nfunc (w *intWriter) int64(x int64) {\n\tvar buf [binary.MaxVarintLen64]byte\n\tn := binary.PutVarint(buf[:], x)\n\tw.Write(buf[:n])\n}\n\nfunc (w *intWriter) uint64(x uint64) {\n\tvar buf [binary.MaxVarintLen64]byte\n\tn := binary.PutUvarint(buf[:], x)\n\tw.Write(buf[:n])\n}\n\nfunc assert(cond bool) {\n\tif !cond {\n\t\tpanic(\"internal error: assertion failed\")\n\t}\n}\n\n// The below is copied from go/src/cmd/compile/internal/gc/syntax.go.\n\n// objQueue is a FIFO queue of types.Object. The zero value of objQueue is\n// a ready-to-use empty queue.\ntype objQueue struct {\n\tring       []types.Object\n\thead, tail int\n}\n\n// empty returns true if q contains no Nodes.\nfunc (q *objQueue) empty() bool {\n\treturn q.head == q.tail\n}\n\n// pushTail appends n to the tail of the queue.\nfunc (q *objQueue) pushTail(obj types.Object) {\n\tif len(q.ring) == 0 {\n\t\tq.ring = make([]types.Object, 16)\n\t} else if q.head+len(q.ring) == q.tail {\n\t\t// Grow the ring.\n\t\tnring := make([]types.Object, len(q.ring)*2)\n\t\t// Copy the old elements.\n\t\tpart := q.ring[q.head%len(q.ring):]\n\t\tif q.tail-q.head <= len(part) {\n\t\t\tpart = part[:q.tail-q.head]\n\t\t\tcopy(nring, part)\n\t\t} else {\n\t\t\tpos := copy(nring, part)\n\t\t\tcopy(nring[pos:], q.ring[:q.tail%len(q.ring)])\n\t\t}\n\t\tq.ring, q.head, q.tail = nring, 0, q.tail-q.head\n\t}\n\n\tq.ring[q.tail%len(q.ring)] = obj\n\tq.tail++\n}\n\n// popHead pops a node from the head of the queue. It panics if q is empty.\nfunc (q *objQueue) popHead() types.Object {\n\tif q.empty() {\n\t\tpanic(\"dequeue empty\")\n\t}\n\tobj := q.ring[q.head%len(q.ring)]\n\tq.head++\n\treturn obj\n}\n\n// internalError represents an error generated inside this package.\ntype internalError string\n\nfunc (e internalError) Error() string { return \"gcimporter: \" + string(e) }\n\n// TODO(adonovan): make this call panic, so that it's symmetric with errorf.\n// Otherwise it's easy to forget to do anything with the error.\n//\n// TODO(adonovan): also, consider switching the names \"errorf\" and\n// \"internalErrorf\" as the former is used for bugs, whose cause is\n// internal inconsistency, whereas the latter is used for ordinary\n// situations like bad input, whose cause is external.\nfunc internalErrorf(format string, args ...any) error {\n\treturn internalError(fmt.Sprintf(format, args...))\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/gcimporter/iimport.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Indexed package import.\n// See iexport.go for the export data format.\n\npackage gcimporter\n\nimport (\n\t\"bytes\"\n\t\"encoding/binary\"\n\t\"fmt\"\n\t\"go/constant\"\n\t\"go/token\"\n\t\"go/types\"\n\t\"io\"\n\t\"math/big\"\n\t\"slices\"\n\t\"sort\"\n\t\"strings\"\n\n\t\"golang.org/x/tools/go/types/objectpath\"\n\t\"golang.org/x/tools/internal/aliases\"\n\t\"golang.org/x/tools/internal/typesinternal\"\n)\n\ntype intReader struct {\n\t*bytes.Reader\n\tpath string\n}\n\nfunc (r *intReader) int64() int64 {\n\ti, err := binary.ReadVarint(r.Reader)\n\tif err != nil {\n\t\terrorf(\"import %q: read varint error: %v\", r.path, err)\n\t}\n\treturn i\n}\n\nfunc (r *intReader) uint64() uint64 {\n\ti, err := binary.ReadUvarint(r.Reader)\n\tif err != nil {\n\t\terrorf(\"import %q: read varint error: %v\", r.path, err)\n\t}\n\treturn i\n}\n\n// Keep this in sync with constants in iexport.go.\nconst (\n\tiexportVersionGo1_11   = 0\n\tiexportVersionPosCol   = 1\n\tiexportVersionGo1_18   = 2\n\tiexportVersionGenerics = 2\n\tiexportVersion         = iexportVersionGenerics\n\n\tiexportVersionCurrent = 2\n)\n\ntype ident struct {\n\tpkg  *types.Package\n\tname string\n}\n\nconst predeclReserved = 32\n\ntype itag uint64\n\nconst (\n\t// Types\n\tdefinedType itag = iota\n\tpointerType\n\tsliceType\n\tarrayType\n\tchanType\n\tmapType\n\tsignatureType\n\tstructType\n\tinterfaceType\n\ttypeParamType\n\tinstanceType\n\tunionType\n\taliasType\n)\n\n// Object tags\nconst (\n\tvarTag          = 'V'\n\tfuncTag         = 'F'\n\tgenericFuncTag  = 'G'\n\tconstTag        = 'C'\n\taliasTag        = 'A'\n\tgenericAliasTag = 'B'\n\ttypeParamTag    = 'P'\n\ttypeTag         = 'T'\n\tgenericTypeTag  = 'U'\n)\n\n// IImportData imports a package from the serialized package data\n// and returns 0 and a reference to the package.\n// If the export data version is not recognized or the format is otherwise\n// compromised, an error is returned.\nfunc IImportData(fset *token.FileSet, imports map[string]*types.Package, data []byte, path string) (int, *types.Package, error) {\n\tpkgs, err := iimportCommon(fset, GetPackagesFromMap(imports), data, false, path, false, nil)\n\tif err != nil {\n\t\treturn 0, nil, err\n\t}\n\treturn 0, pkgs[0], nil\n}\n\n// IImportBundle imports a set of packages from the serialized package bundle.\nfunc IImportBundle(fset *token.FileSet, imports map[string]*types.Package, data []byte) ([]*types.Package, error) {\n\treturn iimportCommon(fset, GetPackagesFromMap(imports), data, true, \"\", false, nil)\n}\n\n// A GetPackagesFunc function obtains the non-nil symbols for a set of\n// packages, creating and recursively importing them as needed. An\n// implementation should store each package symbol is in the Pkg\n// field of the items array.\n//\n// Any error causes importing to fail. This can be used to quickly read\n// the import manifest of an export data file without fully decoding it.\ntype GetPackagesFunc = func(items []GetPackagesItem) error\n\n// A GetPackagesItem is a request from the importer for the package\n// symbol of the specified name and path.\ntype GetPackagesItem struct {\n\tName, Path string\n\tPkg        *types.Package // to be filled in by GetPackagesFunc call\n\n\t// private importer state\n\tpathOffset uint64\n\tnameIndex  map[string]uint64\n}\n\n// GetPackagesFromMap returns a GetPackagesFunc that retrieves\n// packages from the given map of package path to package.\n//\n// The returned function may mutate m: each requested package that is not\n// found is created with types.NewPackage and inserted into m.\nfunc GetPackagesFromMap(m map[string]*types.Package) GetPackagesFunc {\n\treturn func(items []GetPackagesItem) error {\n\t\tfor i, item := range items {\n\t\t\tpkg, ok := m[item.Path]\n\t\t\tif !ok {\n\t\t\t\tpkg = types.NewPackage(item.Path, item.Name)\n\t\t\t\tm[item.Path] = pkg\n\t\t\t}\n\t\t\titems[i].Pkg = pkg\n\t\t}\n\t\treturn nil\n\t}\n}\n\nfunc iimportCommon(fset *token.FileSet, getPackages GetPackagesFunc, data []byte, bundle bool, path string, shallow bool, reportf ReportFunc) (pkgs []*types.Package, err error) {\n\tconst currentVersion = iexportVersionCurrent\n\tversion := int64(-1)\n\tif !debug {\n\t\tdefer func() {\n\t\t\tif e := recover(); e != nil {\n\t\t\t\tif bundle {\n\t\t\t\t\terr = fmt.Errorf(\"%v\", e)\n\t\t\t\t} else if version > currentVersion {\n\t\t\t\t\terr = fmt.Errorf(\"cannot import %q (%v), export data is newer version - update tool\", path, e)\n\t\t\t\t} else {\n\t\t\t\t\terr = fmt.Errorf(\"internal error while importing %q (%v); please report an issue\", path, e)\n\t\t\t\t}\n\t\t\t}\n\t\t}()\n\t}\n\n\tr := &intReader{bytes.NewReader(data), path}\n\n\tif bundle {\n\t\tif v := r.uint64(); v != bundleVersion {\n\t\t\terrorf(\"unknown bundle format version %d\", v)\n\t\t}\n\t}\n\n\tversion = int64(r.uint64())\n\tswitch version {\n\tcase iexportVersionGo1_18, iexportVersionPosCol, iexportVersionGo1_11:\n\tdefault:\n\t\tif version > iexportVersionGo1_18 {\n\t\t\terrorf(\"unstable iexport format version %d, just rebuild compiler and std library\", version)\n\t\t} else {\n\t\t\terrorf(\"unknown iexport format version %d\", version)\n\t\t}\n\t}\n\n\tsLen := int64(r.uint64())\n\tvar fLen int64\n\tvar fileOffset []uint64\n\tif shallow {\n\t\t// Shallow mode uses a different position encoding.\n\t\tfLen = int64(r.uint64())\n\t\tfileOffset = make([]uint64, r.uint64())\n\t\tfor i := range fileOffset {\n\t\t\tfileOffset[i] = r.uint64()\n\t\t}\n\t}\n\tdLen := int64(r.uint64())\n\n\twhence, _ := r.Seek(0, io.SeekCurrent)\n\tstringData := data[whence : whence+sLen]\n\tfileData := data[whence+sLen : whence+sLen+fLen]\n\tdeclData := data[whence+sLen+fLen : whence+sLen+fLen+dLen]\n\tr.Seek(sLen+fLen+dLen, io.SeekCurrent)\n\n\tp := iimporter{\n\t\tversion: int(version),\n\t\tipath:   path,\n\t\taliases: aliases.Enabled(),\n\t\tshallow: shallow,\n\t\treportf: reportf,\n\n\t\tstringData:  stringData,\n\t\tstringCache: make(map[uint64]string),\n\t\tfileOffset:  fileOffset,\n\t\tfileData:    fileData,\n\t\tfileCache:   make([]*token.File, len(fileOffset)),\n\t\tpkgCache:    make(map[uint64]*types.Package),\n\n\t\tdeclData: declData,\n\t\tpkgIndex: make(map[*types.Package]map[string]uint64),\n\t\ttypCache: make(map[uint64]types.Type),\n\t\t// Separate map for typeparams, keyed by their package and unique\n\t\t// name.\n\t\ttparamIndex: make(map[ident]types.Type),\n\n\t\tfake: fakeFileSet{\n\t\t\tfset:  fset,\n\t\t\tfiles: make(map[string]*fileInfo),\n\t\t},\n\t}\n\tdefer p.fake.setLines() // set lines for files in fset\n\n\tfor i, pt := range predeclared() {\n\t\tp.typCache[uint64(i)] = pt\n\t}\n\n\t// Gather the relevant packages from the manifest.\n\titems := make([]GetPackagesItem, r.uint64())\n\tuniquePkgPaths := make(map[string]bool)\n\tfor i := range items {\n\t\tpkgPathOff := r.uint64()\n\t\tpkgPath := p.stringAt(pkgPathOff)\n\t\tpkgName := p.stringAt(r.uint64())\n\t\t_ = r.uint64() // package height; unused by go/types\n\n\t\tif pkgPath == \"\" {\n\t\t\tpkgPath = path\n\t\t}\n\t\titems[i].Name = pkgName\n\t\titems[i].Path = pkgPath\n\t\titems[i].pathOffset = pkgPathOff\n\n\t\t// Read index for package.\n\t\tnameIndex := make(map[string]uint64)\n\t\tnSyms := r.uint64()\n\t\t// In shallow mode, only the current package (i=0) has an index.\n\t\tassert(!(shallow && i > 0 && nSyms != 0))\n\t\tfor ; nSyms > 0; nSyms-- {\n\t\t\tname := p.stringAt(r.uint64())\n\t\t\tnameIndex[name] = r.uint64()\n\t\t}\n\n\t\titems[i].nameIndex = nameIndex\n\n\t\tuniquePkgPaths[pkgPath] = true\n\t}\n\t// Debugging #63822; hypothesis: there are duplicate PkgPaths.\n\tif len(uniquePkgPaths) != len(items) {\n\t\treportf(\"found duplicate PkgPaths while reading export data manifest: %v\", items)\n\t}\n\n\t// Request packages all at once from the client,\n\t// enabling a parallel implementation.\n\tif err := getPackages(items); err != nil {\n\t\treturn nil, err // don't wrap this error\n\t}\n\n\t// Check the results and complete the index.\n\tpkgList := make([]*types.Package, len(items))\n\tfor i, item := range items {\n\t\tpkg := item.Pkg\n\t\tif pkg == nil {\n\t\t\terrorf(\"internal error: getPackages returned nil package for %q\", item.Path)\n\t\t} else if pkg.Path() != item.Path {\n\t\t\terrorf(\"internal error: getPackages returned wrong path %q, want %q\", pkg.Path(), item.Path)\n\t\t} else if pkg.Name() != item.Name {\n\t\t\terrorf(\"internal error: getPackages returned wrong name %s for package %q, want %s\", pkg.Name(), item.Path, item.Name)\n\t\t}\n\t\tp.pkgCache[item.pathOffset] = pkg\n\t\tp.pkgIndex[pkg] = item.nameIndex\n\t\tpkgList[i] = pkg\n\t}\n\n\tif bundle {\n\t\tpkgs = make([]*types.Package, r.uint64())\n\t\tfor i := range pkgs {\n\t\t\tpkg := p.pkgAt(r.uint64())\n\t\t\timps := make([]*types.Package, r.uint64())\n\t\t\tfor j := range imps {\n\t\t\t\timps[j] = p.pkgAt(r.uint64())\n\t\t\t}\n\t\t\tpkg.SetImports(imps)\n\t\t\tpkgs[i] = pkg\n\t\t}\n\t} else {\n\t\tif len(pkgList) == 0 {\n\t\t\terrorf(\"no packages found for %s\", path)\n\t\t\tpanic(\"unreachable\")\n\t\t}\n\t\tpkgs = pkgList[:1]\n\n\t\t// record all referenced packages as imports\n\t\tlist := slices.Clone(pkgList[1:])\n\t\tsort.Sort(byPath(list))\n\t\tpkgs[0].SetImports(list)\n\t}\n\n\tfor _, pkg := range pkgs {\n\t\tif pkg.Complete() {\n\t\t\tcontinue\n\t\t}\n\n\t\tnames := make([]string, 0, len(p.pkgIndex[pkg]))\n\t\tfor name := range p.pkgIndex[pkg] {\n\t\t\tnames = append(names, name)\n\t\t}\n\t\tsort.Strings(names)\n\t\tfor _, name := range names {\n\t\t\tp.doDecl(pkg, name)\n\t\t}\n\n\t\t// package was imported completely and without errors\n\t\tpkg.MarkComplete()\n\t}\n\n\t// SetConstraint can't be called if the constraint type is not yet complete.\n\t// When type params are created in the typeParamTag case of (*importReader).obj(),\n\t// the associated constraint type may not be complete due to recursion.\n\t// Therefore, we defer calling SetConstraint there, and call it here instead\n\t// after all types are complete.\n\tfor _, d := range p.later {\n\t\td.t.SetConstraint(d.constraint)\n\t}\n\n\tfor _, typ := range p.interfaceList {\n\t\ttyp.Complete()\n\t}\n\n\t// Workaround for golang/go#61561. See the doc for instanceList for details.\n\tfor _, typ := range p.instanceList {\n\t\tif iface, _ := typ.Underlying().(*types.Interface); iface != nil {\n\t\t\tiface.Complete()\n\t\t}\n\t}\n\n\treturn pkgs, nil\n}\n\ntype setConstraintArgs struct {\n\tt          *types.TypeParam\n\tconstraint types.Type\n}\n\ntype iimporter struct {\n\tversion int\n\tipath   string\n\n\taliases bool\n\tshallow bool\n\treportf ReportFunc // if non-nil, used to report bugs\n\n\tstringData  []byte\n\tstringCache map[uint64]string\n\tfileOffset  []uint64 // fileOffset[i] is offset in fileData for info about file encoded as i\n\tfileData    []byte\n\tfileCache   []*token.File // memoized decoding of file encoded as i\n\tpkgCache    map[uint64]*types.Package\n\n\tdeclData    []byte\n\tpkgIndex    map[*types.Package]map[string]uint64\n\ttypCache    map[uint64]types.Type\n\ttparamIndex map[ident]types.Type\n\n\tfake          fakeFileSet\n\tinterfaceList []*types.Interface\n\n\t// Workaround for the go/types bug golang/go#61561: instances produced during\n\t// instantiation may contain incomplete interfaces. Here we only complete the\n\t// underlying type of the instance, which is the most common case but doesn't\n\t// handle parameterized interface literals defined deeper in the type.\n\tinstanceList []types.Type // instances for later completion (see golang/go#61561)\n\n\t// Arguments for calls to SetConstraint that are deferred due to recursive types\n\tlater []setConstraintArgs\n\n\tindent int // for tracing support\n}\n\nfunc (p *iimporter) trace(format string, args ...any) {\n\tif !trace {\n\t\t// Call sites should also be guarded, but having this check here allows\n\t\t// easily enabling/disabling debug trace statements.\n\t\treturn\n\t}\n\tfmt.Printf(strings.Repeat(\"..\", p.indent)+format+\"\\n\", args...)\n}\n\nfunc (p *iimporter) doDecl(pkg *types.Package, name string) {\n\tif debug {\n\t\tp.trace(\"import decl %s\", name)\n\t\tp.indent++\n\t\tdefer func() {\n\t\t\tp.indent--\n\t\t\tp.trace(\"=> %s\", name)\n\t\t}()\n\t}\n\t// See if we've already imported this declaration.\n\tif obj := pkg.Scope().Lookup(name); obj != nil {\n\t\treturn\n\t}\n\n\toff, ok := p.pkgIndex[pkg][name]\n\tif !ok {\n\t\t// In deep mode, the index should be complete. In shallow\n\t\t// mode, we should have already recursively loaded necessary\n\t\t// dependencies so the above Lookup succeeds.\n\t\terrorf(\"%v.%v not in index\", pkg, name)\n\t}\n\n\tr := &importReader{p: p}\n\tr.declReader.Reset(p.declData[off:])\n\n\tr.obj(pkg, name)\n}\n\nfunc (p *iimporter) stringAt(off uint64) string {\n\tif s, ok := p.stringCache[off]; ok {\n\t\treturn s\n\t}\n\n\tslen, n := binary.Uvarint(p.stringData[off:])\n\tif n <= 0 {\n\t\terrorf(\"varint failed\")\n\t}\n\tspos := off + uint64(n)\n\ts := string(p.stringData[spos : spos+slen])\n\tp.stringCache[off] = s\n\treturn s\n}\n\nfunc (p *iimporter) fileAt(index uint64) *token.File {\n\tfile := p.fileCache[index]\n\tif file == nil {\n\t\toff := p.fileOffset[index]\n\t\tfile = p.decodeFile(intReader{bytes.NewReader(p.fileData[off:]), p.ipath})\n\t\tp.fileCache[index] = file\n\t}\n\treturn file\n}\n\nfunc (p *iimporter) decodeFile(rd intReader) *token.File {\n\tfilename := p.stringAt(rd.uint64())\n\tsize := int(rd.uint64())\n\tfile := p.fake.fset.AddFile(filename, -1, size)\n\n\t// SetLines requires a nondecreasing sequence.\n\t// Because it is common for clients to derive the interval\n\t// [start, start+len(name)] from a start position, and we\n\t// want to ensure that the end offset is on the same line,\n\t// we fill in the gaps of the sparse encoding with values\n\t// that strictly increase by the largest possible amount.\n\t// This allows us to avoid having to record the actual end\n\t// offset of each needed line.\n\n\tlines := make([]int, int(rd.uint64()))\n\tvar index, offset int\n\tfor i, n := 0, int(rd.uint64()); i < n; i++ {\n\t\tindex += int(rd.uint64())\n\t\toffset += int(rd.uint64())\n\t\tlines[index] = offset\n\n\t\t// Ensure monotonicity between points.\n\t\tfor j := index - 1; j > 0 && lines[j] == 0; j-- {\n\t\t\tlines[j] = lines[j+1] - 1\n\t\t}\n\t}\n\n\t// Ensure monotonicity after last point.\n\tfor j := len(lines) - 1; j > 0 && lines[j] == 0; j-- {\n\t\tsize--\n\t\tlines[j] = size\n\t}\n\n\tif !file.SetLines(lines) {\n\t\terrorf(\"SetLines failed: %d\", lines) // can't happen\n\t}\n\treturn file\n}\n\nfunc (p *iimporter) pkgAt(off uint64) *types.Package {\n\tif pkg, ok := p.pkgCache[off]; ok {\n\t\treturn pkg\n\t}\n\tpath := p.stringAt(off)\n\terrorf(\"missing package %q in %q\", path, p.ipath)\n\treturn nil\n}\n\nfunc (p *iimporter) typAt(off uint64, base *types.Named) types.Type {\n\tif t, ok := p.typCache[off]; ok && canReuse(base, t) {\n\t\treturn t\n\t}\n\n\tif off < predeclReserved {\n\t\terrorf(\"predeclared type missing from cache: %v\", off)\n\t}\n\n\tr := &importReader{p: p}\n\tr.declReader.Reset(p.declData[off-predeclReserved:])\n\tt := r.doType(base)\n\n\tif canReuse(base, t) {\n\t\tp.typCache[off] = t\n\t}\n\treturn t\n}\n\n// canReuse reports whether the type rhs on the RHS of the declaration for def\n// may be re-used.\n//\n// Specifically, if def is non-nil and rhs is an interface type with methods, it\n// may not be re-used because we have a convention of setting the receiver type\n// for interface methods to def.\nfunc canReuse(def *types.Named, rhs types.Type) bool {\n\tif def == nil {\n\t\treturn true\n\t}\n\tiface, _ := types.Unalias(rhs).(*types.Interface)\n\tif iface == nil {\n\t\treturn true\n\t}\n\t// Don't use iface.Empty() here as iface may not be complete.\n\treturn iface.NumEmbeddeds() == 0 && iface.NumExplicitMethods() == 0\n}\n\ntype importReader struct {\n\tp          *iimporter\n\tdeclReader bytes.Reader\n\tprevFile   string\n\tprevLine   int64\n\tprevColumn int64\n}\n\n// markBlack is redefined in iimport_go123.go, to work around golang/go#69912.\n//\n// If TypeNames are not marked black (in the sense of go/types cycle\n// detection), they may be mutated when dot-imported. Fix this by punching a\n// hole through the type, when compiling with Go 1.23. (The bug has been fixed\n// for 1.24, but the fix was not worth back-porting).\nvar markBlack = func(name *types.TypeName) {}\n\n// obj decodes and declares the package-level object denoted by (pkg, name).\nfunc (r *importReader) obj(pkg *types.Package, name string) {\n\ttag := r.byte()\n\tpos := r.pos()\n\n\tswitch tag {\n\tcase aliasTag, genericAliasTag:\n\t\tvar tparams []*types.TypeParam\n\t\tif tag == genericAliasTag {\n\t\t\ttparams = r.tparamList()\n\t\t}\n\t\ttyp := r.typ()\n\t\tobj := aliases.NewAlias(r.p.aliases, pos, pkg, name, typ, tparams)\n\t\tmarkBlack(obj) // workaround for golang/go#69912\n\t\tr.declare(obj)\n\n\tcase constTag:\n\t\ttyp, val := r.value()\n\n\t\tr.declare(types.NewConst(pos, pkg, name, typ, val))\n\n\tcase funcTag, genericFuncTag:\n\t\tvar tparams []*types.TypeParam\n\t\tif tag == genericFuncTag {\n\t\t\ttparams = r.tparamList()\n\t\t}\n\t\tsig := r.signature(pkg, nil, nil, tparams)\n\t\tr.declare(types.NewFunc(pos, pkg, name, sig))\n\n\tcase typeTag, genericTypeTag:\n\t\t// Types can be recursive. We need to setup a stub\n\t\t// declaration before recursing.\n\t\tobj := types.NewTypeName(pos, pkg, name, nil)\n\t\tnamed := types.NewNamed(obj, nil, nil)\n\n\t\tmarkBlack(obj) // workaround for golang/go#69912\n\n\t\t// Declare obj before calling r.tparamList, so the new type name is recognized\n\t\t// if used in the constraint of one of its own typeparams (see #48280).\n\t\tr.declare(obj)\n\t\tif tag == genericTypeTag {\n\t\t\ttparams := r.tparamList()\n\t\t\tnamed.SetTypeParams(tparams)\n\t\t}\n\n\t\tunderlying := r.p.typAt(r.uint64(), named).Underlying()\n\t\tnamed.SetUnderlying(underlying)\n\n\t\tif !isInterface(underlying) {\n\t\t\tfor n := r.uint64(); n > 0; n-- {\n\t\t\t\tmpos := r.pos()\n\t\t\t\tmname := r.ident()\n\t\t\t\trecv := r.param(pkg)\n\n\t\t\t\t// If the receiver has any targs, set those as the\n\t\t\t\t// rparams of the method (since those are the\n\t\t\t\t// typeparams being used in the method sig/body).\n\t\t\t\t_, recvNamed := typesinternal.ReceiverNamed(recv)\n\t\t\t\ttargs := recvNamed.TypeArgs()\n\t\t\t\tvar rparams []*types.TypeParam\n\t\t\t\tif targs.Len() > 0 {\n\t\t\t\t\trparams = make([]*types.TypeParam, targs.Len())\n\t\t\t\t\tfor i := range rparams {\n\t\t\t\t\t\trparams[i] = types.Unalias(targs.At(i)).(*types.TypeParam)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tmsig := r.signature(pkg, recv, rparams, nil)\n\n\t\t\t\tnamed.AddMethod(types.NewFunc(mpos, pkg, mname, msig))\n\t\t\t}\n\t\t}\n\n\tcase typeParamTag:\n\t\t// We need to \"declare\" a typeparam in order to have a name that\n\t\t// can be referenced recursively (if needed) in the type param's\n\t\t// bound.\n\t\tif r.p.version < iexportVersionGenerics {\n\t\t\terrorf(\"unexpected type param type\")\n\t\t}\n\t\tname0 := tparamName(name)\n\t\ttn := types.NewTypeName(pos, pkg, name0, nil)\n\t\tt := types.NewTypeParam(tn, nil)\n\n\t\t// To handle recursive references to the typeparam within its\n\t\t// bound, save the partial type in tparamIndex before reading the bounds.\n\t\tid := ident{pkg, name}\n\t\tr.p.tparamIndex[id] = t\n\t\tvar implicit bool\n\t\tif r.p.version >= iexportVersionGo1_18 {\n\t\t\timplicit = r.bool()\n\t\t}\n\t\tconstraint := r.typ()\n\t\tif implicit {\n\t\t\tiface, _ := types.Unalias(constraint).(*types.Interface)\n\t\t\tif iface == nil {\n\t\t\t\terrorf(\"non-interface constraint marked implicit\")\n\t\t\t}\n\t\t\tiface.MarkImplicit()\n\t\t}\n\t\t// The constraint type may not be complete, if we\n\t\t// are in the middle of a type recursion involving type\n\t\t// constraints. So, we defer SetConstraint until we have\n\t\t// completely set up all types in ImportData.\n\t\tr.p.later = append(r.p.later, setConstraintArgs{t: t, constraint: constraint})\n\n\tcase varTag:\n\t\ttyp := r.typ()\n\n\t\tv := types.NewVar(pos, pkg, name, typ)\n\t\ttypesinternal.SetVarKind(v, typesinternal.PackageVar)\n\t\tr.declare(v)\n\n\tdefault:\n\t\terrorf(\"unexpected tag: %v\", tag)\n\t}\n}\n\nfunc (r *importReader) declare(obj types.Object) {\n\tobj.Pkg().Scope().Insert(obj)\n}\n\nfunc (r *importReader) value() (typ types.Type, val constant.Value) {\n\ttyp = r.typ()\n\tif r.p.version >= iexportVersionGo1_18 {\n\t\t// TODO: add support for using the kind.\n\t\t_ = constant.Kind(r.int64())\n\t}\n\n\tswitch b := typ.Underlying().(*types.Basic); b.Info() & types.IsConstType {\n\tcase types.IsBoolean:\n\t\tval = constant.MakeBool(r.bool())\n\n\tcase types.IsString:\n\t\tval = constant.MakeString(r.string())\n\n\tcase types.IsInteger:\n\t\tvar x big.Int\n\t\tr.mpint(&x, b)\n\t\tval = constant.Make(&x)\n\n\tcase types.IsFloat:\n\t\tval = r.mpfloat(b)\n\n\tcase types.IsComplex:\n\t\tre := r.mpfloat(b)\n\t\tim := r.mpfloat(b)\n\t\tval = constant.BinaryOp(re, token.ADD, constant.MakeImag(im))\n\n\tdefault:\n\t\tif b.Kind() == types.Invalid {\n\t\t\tval = constant.MakeUnknown()\n\t\t\treturn\n\t\t}\n\t\terrorf(\"unexpected type %v\", typ) // panics\n\t\tpanic(\"unreachable\")\n\t}\n\n\treturn\n}\n\nfunc intSize(b *types.Basic) (signed bool, maxBytes uint) {\n\tif (b.Info() & types.IsUntyped) != 0 {\n\t\treturn true, 64\n\t}\n\n\tswitch b.Kind() {\n\tcase types.Float32, types.Complex64:\n\t\treturn true, 3\n\tcase types.Float64, types.Complex128:\n\t\treturn true, 7\n\t}\n\n\tsigned = (b.Info() & types.IsUnsigned) == 0\n\tswitch b.Kind() {\n\tcase types.Int8, types.Uint8:\n\t\tmaxBytes = 1\n\tcase types.Int16, types.Uint16:\n\t\tmaxBytes = 2\n\tcase types.Int32, types.Uint32:\n\t\tmaxBytes = 4\n\tdefault:\n\t\tmaxBytes = 8\n\t}\n\n\treturn\n}\n\nfunc (r *importReader) mpint(x *big.Int, typ *types.Basic) {\n\tsigned, maxBytes := intSize(typ)\n\n\tmaxSmall := 256 - maxBytes\n\tif signed {\n\t\tmaxSmall = 256 - 2*maxBytes\n\t}\n\tif maxBytes == 1 {\n\t\tmaxSmall = 256\n\t}\n\n\tn, _ := r.declReader.ReadByte()\n\tif uint(n) < maxSmall {\n\t\tv := int64(n)\n\t\tif signed {\n\t\t\tv >>= 1\n\t\t\tif n&1 != 0 {\n\t\t\t\tv = ^v\n\t\t\t}\n\t\t}\n\t\tx.SetInt64(v)\n\t\treturn\n\t}\n\n\tv := -n\n\tif signed {\n\t\tv = -(n &^ 1) >> 1\n\t}\n\tif v < 1 || uint(v) > maxBytes {\n\t\terrorf(\"weird decoding: %v, %v => %v\", n, signed, v)\n\t}\n\tb := make([]byte, v)\n\tio.ReadFull(&r.declReader, b)\n\tx.SetBytes(b)\n\tif signed && n&1 != 0 {\n\t\tx.Neg(x)\n\t}\n}\n\nfunc (r *importReader) mpfloat(typ *types.Basic) constant.Value {\n\tvar mant big.Int\n\tr.mpint(&mant, typ)\n\tvar f big.Float\n\tf.SetInt(&mant)\n\tif f.Sign() != 0 {\n\t\tf.SetMantExp(&f, int(r.int64()))\n\t}\n\treturn constant.Make(&f)\n}\n\nfunc (r *importReader) ident() string {\n\treturn r.string()\n}\n\nfunc (r *importReader) qualifiedIdent() (*types.Package, string) {\n\tname := r.string()\n\tpkg := r.pkg()\n\treturn pkg, name\n}\n\nfunc (r *importReader) pos() token.Pos {\n\tif r.p.shallow {\n\t\t// precise offsets are encoded only in shallow mode\n\t\treturn r.posv2()\n\t}\n\tif r.p.version >= iexportVersionPosCol {\n\t\tr.posv1()\n\t} else {\n\t\tr.posv0()\n\t}\n\n\tif r.prevFile == \"\" && r.prevLine == 0 && r.prevColumn == 0 {\n\t\treturn token.NoPos\n\t}\n\treturn r.p.fake.pos(r.prevFile, int(r.prevLine), int(r.prevColumn))\n}\n\nfunc (r *importReader) posv0() {\n\tdelta := r.int64()\n\tif delta != deltaNewFile {\n\t\tr.prevLine += delta\n\t} else if l := r.int64(); l == -1 {\n\t\tr.prevLine += deltaNewFile\n\t} else {\n\t\tr.prevFile = r.string()\n\t\tr.prevLine = l\n\t}\n}\n\nfunc (r *importReader) posv1() {\n\tdelta := r.int64()\n\tr.prevColumn += delta >> 1\n\tif delta&1 != 0 {\n\t\tdelta = r.int64()\n\t\tr.prevLine += delta >> 1\n\t\tif delta&1 != 0 {\n\t\t\tr.prevFile = r.string()\n\t\t}\n\t}\n}\n\nfunc (r *importReader) posv2() token.Pos {\n\tfile := r.uint64()\n\tif file == 0 {\n\t\treturn token.NoPos\n\t}\n\ttf := r.p.fileAt(file - 1)\n\treturn tf.Pos(int(r.uint64()))\n}\n\nfunc (r *importReader) typ() types.Type {\n\treturn r.p.typAt(r.uint64(), nil)\n}\n\nfunc isInterface(t types.Type) bool {\n\t_, ok := types.Unalias(t).(*types.Interface)\n\treturn ok\n}\n\nfunc (r *importReader) pkg() *types.Package { return r.p.pkgAt(r.uint64()) }\nfunc (r *importReader) string() string      { return r.p.stringAt(r.uint64()) }\n\nfunc (r *importReader) doType(base *types.Named) (res types.Type) {\n\tk := r.kind()\n\tif debug {\n\t\tr.p.trace(\"importing type %d (base: %v)\", k, base)\n\t\tr.p.indent++\n\t\tdefer func() {\n\t\t\tr.p.indent--\n\t\t\tr.p.trace(\"=> %s\", res)\n\t\t}()\n\t}\n\tswitch k {\n\tdefault:\n\t\terrorf(\"unexpected kind tag in %q: %v\", r.p.ipath, k)\n\t\treturn nil\n\n\tcase aliasType, definedType:\n\t\tpkg, name := r.qualifiedIdent()\n\t\tr.p.doDecl(pkg, name)\n\t\treturn pkg.Scope().Lookup(name).(*types.TypeName).Type()\n\tcase pointerType:\n\t\treturn types.NewPointer(r.typ())\n\tcase sliceType:\n\t\treturn types.NewSlice(r.typ())\n\tcase arrayType:\n\t\tn := r.uint64()\n\t\treturn types.NewArray(r.typ(), int64(n))\n\tcase chanType:\n\t\tdir := chanDir(int(r.uint64()))\n\t\treturn types.NewChan(dir, r.typ())\n\tcase mapType:\n\t\treturn types.NewMap(r.typ(), r.typ())\n\tcase signatureType:\n\t\tparamPkg := r.pkg()\n\t\treturn r.signature(paramPkg, nil, nil, nil)\n\n\tcase structType:\n\t\tfieldPkg := r.pkg()\n\n\t\tfields := make([]*types.Var, r.uint64())\n\t\ttags := make([]string, len(fields))\n\t\tfor i := range fields {\n\t\t\tvar field *types.Var\n\t\t\tif r.p.shallow {\n\t\t\t\tfield, _ = r.objectPathObject().(*types.Var)\n\t\t\t}\n\n\t\t\tfpos := r.pos()\n\t\t\tfname := r.ident()\n\t\t\tftyp := r.typ()\n\t\t\temb := r.bool()\n\t\t\ttag := r.string()\n\n\t\t\t// Either this is not a shallow import, the field is local, or the\n\t\t\t// encoded objectPath failed to produce an object (a bug).\n\t\t\t//\n\t\t\t// Even in this last, buggy case, fall back on creating a new field. As\n\t\t\t// discussed in iexport.go, this is not correct, but mostly works and is\n\t\t\t// preferable to failing (for now at least).\n\t\t\tif field == nil {\n\t\t\t\tfield = types.NewField(fpos, fieldPkg, fname, ftyp, emb)\n\t\t\t}\n\n\t\t\tfields[i] = field\n\t\t\ttags[i] = tag\n\t\t}\n\t\treturn types.NewStruct(fields, tags)\n\n\tcase interfaceType:\n\t\tmethodPkg := r.pkg() // qualifies methods and their param/result vars\n\n\t\tembeddeds := make([]types.Type, r.uint64())\n\t\tfor i := range embeddeds {\n\t\t\t_ = r.pos()\n\t\t\tembeddeds[i] = r.typ()\n\t\t}\n\n\t\tmethods := make([]*types.Func, r.uint64())\n\t\tfor i := range methods {\n\t\t\tvar method *types.Func\n\t\t\tif r.p.shallow {\n\t\t\t\tmethod, _ = r.objectPathObject().(*types.Func)\n\t\t\t}\n\n\t\t\tmpos := r.pos()\n\t\t\tmname := r.ident()\n\n\t\t\t// TODO(mdempsky): Matches bimport.go, but I\n\t\t\t// don't agree with this.\n\t\t\tvar recv *types.Var\n\t\t\tif base != nil {\n\t\t\t\trecv = types.NewVar(token.NoPos, methodPkg, \"\", base)\n\t\t\t}\n\t\t\tmsig := r.signature(methodPkg, recv, nil, nil)\n\n\t\t\tif method == nil {\n\t\t\t\tmethod = types.NewFunc(mpos, methodPkg, mname, msig)\n\t\t\t}\n\t\t\tmethods[i] = method\n\t\t}\n\n\t\ttyp := types.NewInterfaceType(methods, embeddeds)\n\t\tr.p.interfaceList = append(r.p.interfaceList, typ)\n\t\treturn typ\n\n\tcase typeParamType:\n\t\tif r.p.version < iexportVersionGenerics {\n\t\t\terrorf(\"unexpected type param type\")\n\t\t}\n\t\tpkg, name := r.qualifiedIdent()\n\t\tid := ident{pkg, name}\n\t\tif t, ok := r.p.tparamIndex[id]; ok {\n\t\t\t// We're already in the process of importing this typeparam.\n\t\t\treturn t\n\t\t}\n\t\t// Otherwise, import the definition of the typeparam now.\n\t\tr.p.doDecl(pkg, name)\n\t\treturn r.p.tparamIndex[id]\n\n\tcase instanceType:\n\t\tif r.p.version < iexportVersionGenerics {\n\t\t\terrorf(\"unexpected instantiation type\")\n\t\t}\n\t\t// pos does not matter for instances: they are positioned on the original\n\t\t// type.\n\t\t_ = r.pos()\n\t\tlen := r.uint64()\n\t\ttargs := make([]types.Type, len)\n\t\tfor i := range targs {\n\t\t\ttargs[i] = r.typ()\n\t\t}\n\t\tbaseType := r.typ()\n\t\t// The imported instantiated type doesn't include any methods, so\n\t\t// we must always use the methods of the base (orig) type.\n\t\t// TODO provide a non-nil *Environment\n\t\tt, _ := types.Instantiate(nil, baseType, targs, false)\n\n\t\t// Workaround for golang/go#61561. See the doc for instanceList for details.\n\t\tr.p.instanceList = append(r.p.instanceList, t)\n\t\treturn t\n\n\tcase unionType:\n\t\tif r.p.version < iexportVersionGenerics {\n\t\t\terrorf(\"unexpected instantiation type\")\n\t\t}\n\t\tterms := make([]*types.Term, r.uint64())\n\t\tfor i := range terms {\n\t\t\tterms[i] = types.NewTerm(r.bool(), r.typ())\n\t\t}\n\t\treturn types.NewUnion(terms)\n\t}\n}\n\nfunc (r *importReader) kind() itag {\n\treturn itag(r.uint64())\n}\n\n// objectPathObject is the inverse of exportWriter.objectPath.\n//\n// In shallow mode, certain fields and methods may need to be looked up in an\n// imported package. See the doc for exportWriter.objectPath for a full\n// explanation.\nfunc (r *importReader) objectPathObject() types.Object {\n\tobjPath := objectpath.Path(r.string())\n\tif objPath == \"\" {\n\t\treturn nil\n\t}\n\tpkg := r.pkg()\n\tobj, err := objectpath.Object(pkg, objPath)\n\tif err != nil {\n\t\tif r.p.reportf != nil {\n\t\t\tr.p.reportf(\"failed to find object for objectPath %q: %v\", objPath, err)\n\t\t}\n\t}\n\treturn obj\n}\n\nfunc (r *importReader) signature(paramPkg *types.Package, recv *types.Var, rparams []*types.TypeParam, tparams []*types.TypeParam) *types.Signature {\n\tparams := r.paramList(paramPkg)\n\tresults := r.paramList(paramPkg)\n\tvariadic := params.Len() > 0 && r.bool()\n\treturn types.NewSignatureType(recv, rparams, tparams, params, results, variadic)\n}\n\nfunc (r *importReader) tparamList() []*types.TypeParam {\n\tn := r.uint64()\n\tif n == 0 {\n\t\treturn nil\n\t}\n\txs := make([]*types.TypeParam, n)\n\tfor i := range xs {\n\t\t// Note: the standard library importer is tolerant of nil types here,\n\t\t// though would panic in SetTypeParams.\n\t\txs[i] = types.Unalias(r.typ()).(*types.TypeParam)\n\t}\n\treturn xs\n}\n\nfunc (r *importReader) paramList(pkg *types.Package) *types.Tuple {\n\txs := make([]*types.Var, r.uint64())\n\tfor i := range xs {\n\t\txs[i] = r.param(pkg)\n\t}\n\treturn types.NewTuple(xs...)\n}\n\nfunc (r *importReader) param(pkg *types.Package) *types.Var {\n\tpos := r.pos()\n\tname := r.ident()\n\ttyp := r.typ()\n\treturn types.NewParam(pos, pkg, name, typ)\n}\n\nfunc (r *importReader) bool() bool {\n\treturn r.uint64() != 0\n}\n\nfunc (r *importReader) int64() int64 {\n\tn, err := binary.ReadVarint(&r.declReader)\n\tif err != nil {\n\t\terrorf(\"readVarint: %v\", err)\n\t}\n\treturn n\n}\n\nfunc (r *importReader) uint64() uint64 {\n\tn, err := binary.ReadUvarint(&r.declReader)\n\tif err != nil {\n\t\terrorf(\"readUvarint: %v\", err)\n\t}\n\treturn n\n}\n\nfunc (r *importReader) byte() byte {\n\tx, err := r.declReader.ReadByte()\n\tif err != nil {\n\t\terrorf(\"declReader.ReadByte: %v\", err)\n\t}\n\treturn x\n}\n\ntype byPath []*types.Package\n\nfunc (a byPath) Len() int           { return len(a) }\nfunc (a byPath) Swap(i, j int)      { a[i], a[j] = a[j], a[i] }\nfunc (a byPath) Less(i, j int) bool { return a[i].Path() < a[j].Path() }\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/gcimporter/predeclared.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage gcimporter\n\nimport (\n\t\"go/types\"\n\t\"sync\"\n)\n\n// predecl is a cache for the predeclared types in types.Universe.\n//\n// Cache a distinct result based on the runtime value of any.\n// The pointer value of the any type varies based on GODEBUG settings.\nvar predeclMu sync.Mutex\nvar predecl map[types.Type][]types.Type\n\nfunc predeclared() []types.Type {\n\tanyt := types.Universe.Lookup(\"any\").Type()\n\n\tpredeclMu.Lock()\n\tdefer predeclMu.Unlock()\n\n\tif pre, ok := predecl[anyt]; ok {\n\t\treturn pre\n\t}\n\n\tif predecl == nil {\n\t\tpredecl = make(map[types.Type][]types.Type)\n\t}\n\n\tdecls := []types.Type{ // basic types\n\t\ttypes.Typ[types.Bool],\n\t\ttypes.Typ[types.Int],\n\t\ttypes.Typ[types.Int8],\n\t\ttypes.Typ[types.Int16],\n\t\ttypes.Typ[types.Int32],\n\t\ttypes.Typ[types.Int64],\n\t\ttypes.Typ[types.Uint],\n\t\ttypes.Typ[types.Uint8],\n\t\ttypes.Typ[types.Uint16],\n\t\ttypes.Typ[types.Uint32],\n\t\ttypes.Typ[types.Uint64],\n\t\ttypes.Typ[types.Uintptr],\n\t\ttypes.Typ[types.Float32],\n\t\ttypes.Typ[types.Float64],\n\t\ttypes.Typ[types.Complex64],\n\t\ttypes.Typ[types.Complex128],\n\t\ttypes.Typ[types.String],\n\n\t\t// basic type aliases\n\t\ttypes.Universe.Lookup(\"byte\").Type(),\n\t\ttypes.Universe.Lookup(\"rune\").Type(),\n\n\t\t// error\n\t\ttypes.Universe.Lookup(\"error\").Type(),\n\n\t\t// untyped types\n\t\ttypes.Typ[types.UntypedBool],\n\t\ttypes.Typ[types.UntypedInt],\n\t\ttypes.Typ[types.UntypedRune],\n\t\ttypes.Typ[types.UntypedFloat],\n\t\ttypes.Typ[types.UntypedComplex],\n\t\ttypes.Typ[types.UntypedString],\n\t\ttypes.Typ[types.UntypedNil],\n\n\t\t// package unsafe\n\t\ttypes.Typ[types.UnsafePointer],\n\n\t\t// invalid type\n\t\ttypes.Typ[types.Invalid], // only appears in packages with errors\n\n\t\t// used internally by gc; never used by this package or in .a files\n\t\tanyType{},\n\n\t\t// comparable\n\t\ttypes.Universe.Lookup(\"comparable\").Type(),\n\n\t\t// any\n\t\tanyt,\n\t}\n\n\tpredecl[anyt] = decls\n\treturn decls\n}\n\ntype anyType struct{}\n\nfunc (t anyType) Underlying() types.Type { return t }\nfunc (t anyType) String() string         { return \"any\" }\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/gcimporter/support.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage gcimporter\n\nimport (\n\t\"bufio\"\n\t\"io\"\n\t\"strconv\"\n\t\"strings\"\n)\n\n// Copy of $GOROOT/src/cmd/internal/archive.ReadHeader.\nfunc readArchiveHeader(b *bufio.Reader, name string) int {\n\t// architecture-independent object file output\n\tconst HeaderSize = 60\n\n\tvar buf [HeaderSize]byte\n\tif _, err := io.ReadFull(b, buf[:]); err != nil {\n\t\treturn -1\n\t}\n\taname := strings.Trim(string(buf[0:16]), \" \")\n\tif !strings.HasPrefix(aname, name) {\n\t\treturn -1\n\t}\n\tasize := strings.Trim(string(buf[48:58]), \" \")\n\ti, _ := strconv.Atoi(asize)\n\treturn i\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/gcimporter/ureader_yes.go",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Derived from go/internal/gcimporter/ureader.go\n\npackage gcimporter\n\nimport (\n\t\"fmt\"\n\t\"go/token\"\n\t\"go/types\"\n\t\"sort\"\n\n\t\"golang.org/x/tools/internal/aliases\"\n\t\"golang.org/x/tools/internal/pkgbits\"\n\t\"golang.org/x/tools/internal/typesinternal\"\n)\n\n// A pkgReader holds the shared state for reading a unified IR package\n// description.\ntype pkgReader struct {\n\tpkgbits.PkgDecoder\n\n\tfake fakeFileSet\n\n\tctxt    *types.Context\n\timports map[string]*types.Package // previously imported packages, indexed by path\n\taliases bool                      // create types.Alias nodes\n\n\t// lazily initialized arrays corresponding to the unified IR\n\t// PosBase, Pkg, and Type sections, respectively.\n\tposBases []string // position bases (i.e., file names)\n\tpkgs     []*types.Package\n\ttyps     []types.Type\n\n\t// laterFns holds functions that need to be invoked at the end of\n\t// import reading.\n\tlaterFns []func()\n\t// laterFors is used in case of 'type A B' to ensure that B is processed before A.\n\tlaterFors map[types.Type]int\n\n\t// ifaces holds a list of constructed Interfaces, which need to have\n\t// Complete called after importing is done.\n\tifaces []*types.Interface\n}\n\n// later adds a function to be invoked at the end of import reading.\nfunc (pr *pkgReader) later(fn func()) {\n\tpr.laterFns = append(pr.laterFns, fn)\n}\n\n// See cmd/compile/internal/noder.derivedInfo.\ntype derivedInfo struct {\n\tidx pkgbits.Index\n}\n\n// See cmd/compile/internal/noder.typeInfo.\ntype typeInfo struct {\n\tidx     pkgbits.Index\n\tderived bool\n}\n\nfunc UImportData(fset *token.FileSet, imports map[string]*types.Package, data []byte, path string) (_ int, pkg *types.Package, err error) {\n\tif !debug {\n\t\tdefer func() {\n\t\t\tif x := recover(); x != nil {\n\t\t\t\terr = fmt.Errorf(\"internal error in importing %q (%v); please report an issue\", path, x)\n\t\t\t}\n\t\t}()\n\t}\n\n\ts := string(data)\n\tinput := pkgbits.NewPkgDecoder(path, s)\n\tpkg = readUnifiedPackage(fset, nil, imports, input)\n\treturn\n}\n\n// laterFor adds a function to be invoked at the end of import reading, and records the type that function is finishing.\nfunc (pr *pkgReader) laterFor(t types.Type, fn func()) {\n\tif pr.laterFors == nil {\n\t\tpr.laterFors = make(map[types.Type]int)\n\t}\n\tpr.laterFors[t] = len(pr.laterFns)\n\tpr.laterFns = append(pr.laterFns, fn)\n}\n\n// readUnifiedPackage reads a package description from the given\n// unified IR export data decoder.\nfunc readUnifiedPackage(fset *token.FileSet, ctxt *types.Context, imports map[string]*types.Package, input pkgbits.PkgDecoder) *types.Package {\n\tpr := pkgReader{\n\t\tPkgDecoder: input,\n\n\t\tfake: fakeFileSet{\n\t\t\tfset:  fset,\n\t\t\tfiles: make(map[string]*fileInfo),\n\t\t},\n\n\t\tctxt:    ctxt,\n\t\timports: imports,\n\t\taliases: aliases.Enabled(),\n\n\t\tposBases: make([]string, input.NumElems(pkgbits.RelocPosBase)),\n\t\tpkgs:     make([]*types.Package, input.NumElems(pkgbits.RelocPkg)),\n\t\ttyps:     make([]types.Type, input.NumElems(pkgbits.RelocType)),\n\t}\n\tdefer pr.fake.setLines()\n\n\tr := pr.newReader(pkgbits.RelocMeta, pkgbits.PublicRootIdx, pkgbits.SyncPublic)\n\tpkg := r.pkg()\n\tif r.Version().Has(pkgbits.HasInit) {\n\t\tr.Bool()\n\t}\n\n\tfor i, n := 0, r.Len(); i < n; i++ {\n\t\t// As if r.obj(), but avoiding the Scope.Lookup call,\n\t\t// to avoid eager loading of imports.\n\t\tr.Sync(pkgbits.SyncObject)\n\t\tif r.Version().Has(pkgbits.DerivedFuncInstance) {\n\t\t\tassert(!r.Bool())\n\t\t}\n\t\tr.p.objIdx(r.Reloc(pkgbits.RelocObj))\n\t\tassert(r.Len() == 0)\n\t}\n\n\tr.Sync(pkgbits.SyncEOF)\n\n\tfor _, fn := range pr.laterFns {\n\t\tfn()\n\t}\n\n\tfor _, iface := range pr.ifaces {\n\t\tiface.Complete()\n\t}\n\n\t// Imports() of pkg are all of the transitive packages that were loaded.\n\tvar imps []*types.Package\n\tfor _, imp := range pr.pkgs {\n\t\tif imp != nil && imp != pkg {\n\t\t\timps = append(imps, imp)\n\t\t}\n\t}\n\tsort.Sort(byPath(imps))\n\tpkg.SetImports(imps)\n\n\tpkg.MarkComplete()\n\treturn pkg\n}\n\n// A reader holds the state for reading a single unified IR element\n// within a package.\ntype reader struct {\n\tpkgbits.Decoder\n\n\tp *pkgReader\n\n\tdict *readerDict\n}\n\n// A readerDict holds the state for type parameters that parameterize\n// the current unified IR element.\ntype readerDict struct {\n\t// bounds is a slice of typeInfos corresponding to the underlying\n\t// bounds of the element's type parameters.\n\tbounds []typeInfo\n\n\t// tparams is a slice of the constructed TypeParams for the element.\n\ttparams []*types.TypeParam\n\n\t// derived is a slice of types derived from tparams, which may be\n\t// instantiated while reading the current element.\n\tderived      []derivedInfo\n\tderivedTypes []types.Type // lazily instantiated from derived\n}\n\nfunc (pr *pkgReader) newReader(k pkgbits.RelocKind, idx pkgbits.Index, marker pkgbits.SyncMarker) *reader {\n\treturn &reader{\n\t\tDecoder: pr.NewDecoder(k, idx, marker),\n\t\tp:       pr,\n\t}\n}\n\nfunc (pr *pkgReader) tempReader(k pkgbits.RelocKind, idx pkgbits.Index, marker pkgbits.SyncMarker) *reader {\n\treturn &reader{\n\t\tDecoder: pr.TempDecoder(k, idx, marker),\n\t\tp:       pr,\n\t}\n}\n\nfunc (pr *pkgReader) retireReader(r *reader) {\n\tpr.RetireDecoder(&r.Decoder)\n}\n\n// @@@ Positions\n\nfunc (r *reader) pos() token.Pos {\n\tr.Sync(pkgbits.SyncPos)\n\tif !r.Bool() {\n\t\treturn token.NoPos\n\t}\n\n\t// TODO(mdempsky): Delta encoding.\n\tposBase := r.posBase()\n\tline := r.Uint()\n\tcol := r.Uint()\n\treturn r.p.fake.pos(posBase, int(line), int(col))\n}\n\nfunc (r *reader) posBase() string {\n\treturn r.p.posBaseIdx(r.Reloc(pkgbits.RelocPosBase))\n}\n\nfunc (pr *pkgReader) posBaseIdx(idx pkgbits.Index) string {\n\tif b := pr.posBases[idx]; b != \"\" {\n\t\treturn b\n\t}\n\n\tvar filename string\n\t{\n\t\tr := pr.tempReader(pkgbits.RelocPosBase, idx, pkgbits.SyncPosBase)\n\n\t\t// Within types2, position bases have a lot more details (e.g.,\n\t\t// keeping track of where //line directives appeared exactly).\n\t\t//\n\t\t// For go/types, we just track the file name.\n\n\t\tfilename = r.String()\n\n\t\tif r.Bool() { // file base\n\t\t\t// Was: \"b = token.NewTrimmedFileBase(filename, true)\"\n\t\t} else { // line base\n\t\t\tpos := r.pos()\n\t\t\tline := r.Uint()\n\t\t\tcol := r.Uint()\n\n\t\t\t// Was: \"b = token.NewLineBase(pos, filename, true, line, col)\"\n\t\t\t_, _, _ = pos, line, col\n\t\t}\n\t\tpr.retireReader(r)\n\t}\n\tb := filename\n\tpr.posBases[idx] = b\n\treturn b\n}\n\n// @@@ Packages\n\nfunc (r *reader) pkg() *types.Package {\n\tr.Sync(pkgbits.SyncPkg)\n\treturn r.p.pkgIdx(r.Reloc(pkgbits.RelocPkg))\n}\n\nfunc (pr *pkgReader) pkgIdx(idx pkgbits.Index) *types.Package {\n\t// TODO(mdempsky): Consider using some non-nil pointer to indicate\n\t// the universe scope, so we don't need to keep re-reading it.\n\tif pkg := pr.pkgs[idx]; pkg != nil {\n\t\treturn pkg\n\t}\n\n\tpkg := pr.newReader(pkgbits.RelocPkg, idx, pkgbits.SyncPkgDef).doPkg()\n\tpr.pkgs[idx] = pkg\n\treturn pkg\n}\n\nfunc (r *reader) doPkg() *types.Package {\n\tpath := r.String()\n\tswitch path {\n\t// cmd/compile emits path=\"main\" for main packages because\n\t// that's the linker symbol prefix it used; but we need\n\t// the package's path as it would be reported by go list,\n\t// hence \"main\" below.\n\t// See test at go/packages.TestMainPackagePathInModeTypes.\n\tcase \"\", \"main\":\n\t\tpath = r.p.PkgPath()\n\tcase \"builtin\":\n\t\treturn nil // universe\n\tcase \"unsafe\":\n\t\treturn types.Unsafe\n\t}\n\n\tif pkg := r.p.imports[path]; pkg != nil {\n\t\treturn pkg\n\t}\n\n\tname := r.String()\n\n\tpkg := types.NewPackage(path, name)\n\tr.p.imports[path] = pkg\n\n\treturn pkg\n}\n\n// @@@ Types\n\nfunc (r *reader) typ() types.Type {\n\treturn r.p.typIdx(r.typInfo(), r.dict)\n}\n\nfunc (r *reader) typInfo() typeInfo {\n\tr.Sync(pkgbits.SyncType)\n\tif r.Bool() {\n\t\treturn typeInfo{idx: pkgbits.Index(r.Len()), derived: true}\n\t}\n\treturn typeInfo{idx: r.Reloc(pkgbits.RelocType), derived: false}\n}\n\nfunc (pr *pkgReader) typIdx(info typeInfo, dict *readerDict) types.Type {\n\tidx := info.idx\n\tvar where *types.Type\n\tif info.derived {\n\t\twhere = &dict.derivedTypes[idx]\n\t\tidx = dict.derived[idx].idx\n\t} else {\n\t\twhere = &pr.typs[idx]\n\t}\n\n\tif typ := *where; typ != nil {\n\t\treturn typ\n\t}\n\n\tvar typ types.Type\n\t{\n\t\tr := pr.tempReader(pkgbits.RelocType, idx, pkgbits.SyncTypeIdx)\n\t\tr.dict = dict\n\n\t\ttyp = r.doTyp()\n\t\tassert(typ != nil)\n\t\tpr.retireReader(r)\n\t}\n\t// See comment in pkgReader.typIdx explaining how this happens.\n\tif prev := *where; prev != nil {\n\t\treturn prev\n\t}\n\n\t*where = typ\n\treturn typ\n}\n\nfunc (r *reader) doTyp() (res types.Type) {\n\tswitch tag := pkgbits.CodeType(r.Code(pkgbits.SyncType)); tag {\n\tdefault:\n\t\terrorf(\"unhandled type tag: %v\", tag)\n\t\tpanic(\"unreachable\")\n\n\tcase pkgbits.TypeBasic:\n\t\treturn types.Typ[r.Len()]\n\n\tcase pkgbits.TypeNamed:\n\t\tobj, targs := r.obj()\n\t\tname := obj.(*types.TypeName)\n\t\tif len(targs) != 0 {\n\t\t\tt, _ := types.Instantiate(r.p.ctxt, name.Type(), targs, false)\n\t\t\treturn t\n\t\t}\n\t\treturn name.Type()\n\n\tcase pkgbits.TypeTypeParam:\n\t\treturn r.dict.tparams[r.Len()]\n\n\tcase pkgbits.TypeArray:\n\t\tlen := int64(r.Uint64())\n\t\treturn types.NewArray(r.typ(), len)\n\tcase pkgbits.TypeChan:\n\t\tdir := types.ChanDir(r.Len())\n\t\treturn types.NewChan(dir, r.typ())\n\tcase pkgbits.TypeMap:\n\t\treturn types.NewMap(r.typ(), r.typ())\n\tcase pkgbits.TypePointer:\n\t\treturn types.NewPointer(r.typ())\n\tcase pkgbits.TypeSignature:\n\t\treturn r.signature(nil, nil, nil)\n\tcase pkgbits.TypeSlice:\n\t\treturn types.NewSlice(r.typ())\n\tcase pkgbits.TypeStruct:\n\t\treturn r.structType()\n\tcase pkgbits.TypeInterface:\n\t\treturn r.interfaceType()\n\tcase pkgbits.TypeUnion:\n\t\treturn r.unionType()\n\t}\n}\n\nfunc (r *reader) structType() *types.Struct {\n\tfields := make([]*types.Var, r.Len())\n\tvar tags []string\n\tfor i := range fields {\n\t\tpos := r.pos()\n\t\tpkg, name := r.selector()\n\t\tftyp := r.typ()\n\t\ttag := r.String()\n\t\tembedded := r.Bool()\n\n\t\tfields[i] = types.NewField(pos, pkg, name, ftyp, embedded)\n\t\tif tag != \"\" {\n\t\t\tfor len(tags) < i {\n\t\t\t\ttags = append(tags, \"\")\n\t\t\t}\n\t\t\ttags = append(tags, tag)\n\t\t}\n\t}\n\treturn types.NewStruct(fields, tags)\n}\n\nfunc (r *reader) unionType() *types.Union {\n\tterms := make([]*types.Term, r.Len())\n\tfor i := range terms {\n\t\tterms[i] = types.NewTerm(r.Bool(), r.typ())\n\t}\n\treturn types.NewUnion(terms)\n}\n\nfunc (r *reader) interfaceType() *types.Interface {\n\tmethods := make([]*types.Func, r.Len())\n\tembeddeds := make([]types.Type, r.Len())\n\timplicit := len(methods) == 0 && len(embeddeds) == 1 && r.Bool()\n\n\tfor i := range methods {\n\t\tpos := r.pos()\n\t\tpkg, name := r.selector()\n\t\tmtyp := r.signature(nil, nil, nil)\n\t\tmethods[i] = types.NewFunc(pos, pkg, name, mtyp)\n\t}\n\n\tfor i := range embeddeds {\n\t\tembeddeds[i] = r.typ()\n\t}\n\n\tiface := types.NewInterfaceType(methods, embeddeds)\n\tif implicit {\n\t\tiface.MarkImplicit()\n\t}\n\n\t// We need to call iface.Complete(), but if there are any embedded\n\t// defined types, then we may not have set their underlying\n\t// interface type yet. So we need to defer calling Complete until\n\t// after we've called SetUnderlying everywhere.\n\t//\n\t// TODO(mdempsky): After CL 424876 lands, it should be safe to call\n\t// iface.Complete() immediately.\n\tr.p.ifaces = append(r.p.ifaces, iface)\n\n\treturn iface\n}\n\nfunc (r *reader) signature(recv *types.Var, rtparams, tparams []*types.TypeParam) *types.Signature {\n\tr.Sync(pkgbits.SyncSignature)\n\n\tparams := r.params()\n\tresults := r.params()\n\tvariadic := r.Bool()\n\n\treturn types.NewSignatureType(recv, rtparams, tparams, params, results, variadic)\n}\n\nfunc (r *reader) params() *types.Tuple {\n\tr.Sync(pkgbits.SyncParams)\n\n\tparams := make([]*types.Var, r.Len())\n\tfor i := range params {\n\t\tparams[i] = r.param()\n\t}\n\n\treturn types.NewTuple(params...)\n}\n\nfunc (r *reader) param() *types.Var {\n\tr.Sync(pkgbits.SyncParam)\n\n\tpos := r.pos()\n\tpkg, name := r.localIdent()\n\ttyp := r.typ()\n\n\treturn types.NewParam(pos, pkg, name, typ)\n}\n\n// @@@ Objects\n\nfunc (r *reader) obj() (types.Object, []types.Type) {\n\tr.Sync(pkgbits.SyncObject)\n\n\tif r.Version().Has(pkgbits.DerivedFuncInstance) {\n\t\tassert(!r.Bool())\n\t}\n\n\tpkg, name := r.p.objIdx(r.Reloc(pkgbits.RelocObj))\n\tobj := pkgScope(pkg).Lookup(name)\n\n\ttargs := make([]types.Type, r.Len())\n\tfor i := range targs {\n\t\ttargs[i] = r.typ()\n\t}\n\n\treturn obj, targs\n}\n\nfunc (pr *pkgReader) objIdx(idx pkgbits.Index) (*types.Package, string) {\n\n\tvar objPkg *types.Package\n\tvar objName string\n\tvar tag pkgbits.CodeObj\n\t{\n\t\trname := pr.tempReader(pkgbits.RelocName, idx, pkgbits.SyncObject1)\n\n\t\tobjPkg, objName = rname.qualifiedIdent()\n\t\tassert(objName != \"\")\n\n\t\ttag = pkgbits.CodeObj(rname.Code(pkgbits.SyncCodeObj))\n\t\tpr.retireReader(rname)\n\t}\n\n\tif tag == pkgbits.ObjStub {\n\t\tassert(objPkg == nil || objPkg == types.Unsafe)\n\t\treturn objPkg, objName\n\t}\n\n\t// Ignore local types promoted to global scope (#55110).\n\tif _, suffix := splitVargenSuffix(objName); suffix != \"\" {\n\t\treturn objPkg, objName\n\t}\n\n\tif objPkg.Scope().Lookup(objName) == nil {\n\t\tdict := pr.objDictIdx(idx)\n\n\t\tr := pr.newReader(pkgbits.RelocObj, idx, pkgbits.SyncObject1)\n\t\tr.dict = dict\n\n\t\tdeclare := func(obj types.Object) {\n\t\t\tobjPkg.Scope().Insert(obj)\n\t\t}\n\n\t\tswitch tag {\n\t\tdefault:\n\t\t\tpanic(\"weird\")\n\n\t\tcase pkgbits.ObjAlias:\n\t\t\tpos := r.pos()\n\t\t\tvar tparams []*types.TypeParam\n\t\t\tif r.Version().Has(pkgbits.AliasTypeParamNames) {\n\t\t\t\ttparams = r.typeParamNames()\n\t\t\t}\n\t\t\ttyp := r.typ()\n\t\t\tdeclare(aliases.NewAlias(r.p.aliases, pos, objPkg, objName, typ, tparams))\n\n\t\tcase pkgbits.ObjConst:\n\t\t\tpos := r.pos()\n\t\t\ttyp := r.typ()\n\t\t\tval := r.Value()\n\t\t\tdeclare(types.NewConst(pos, objPkg, objName, typ, val))\n\n\t\tcase pkgbits.ObjFunc:\n\t\t\tpos := r.pos()\n\t\t\ttparams := r.typeParamNames()\n\t\t\tsig := r.signature(nil, nil, tparams)\n\t\t\tdeclare(types.NewFunc(pos, objPkg, objName, sig))\n\n\t\tcase pkgbits.ObjType:\n\t\t\tpos := r.pos()\n\n\t\t\tobj := types.NewTypeName(pos, objPkg, objName, nil)\n\t\t\tnamed := types.NewNamed(obj, nil, nil)\n\t\t\tdeclare(obj)\n\n\t\t\tnamed.SetTypeParams(r.typeParamNames())\n\n\t\t\tsetUnderlying := func(underlying types.Type) {\n\t\t\t\t// If the underlying type is an interface, we need to\n\t\t\t\t// duplicate its methods so we can replace the receiver\n\t\t\t\t// parameter's type (#49906).\n\t\t\t\tif iface, ok := types.Unalias(underlying).(*types.Interface); ok && iface.NumExplicitMethods() != 0 {\n\t\t\t\t\tmethods := make([]*types.Func, iface.NumExplicitMethods())\n\t\t\t\t\tfor i := range methods {\n\t\t\t\t\t\tfn := iface.ExplicitMethod(i)\n\t\t\t\t\t\tsig := fn.Type().(*types.Signature)\n\n\t\t\t\t\t\trecv := types.NewVar(fn.Pos(), fn.Pkg(), \"\", named)\n\t\t\t\t\t\ttypesinternal.SetVarKind(recv, typesinternal.RecvVar)\n\t\t\t\t\t\tmethods[i] = types.NewFunc(fn.Pos(), fn.Pkg(), fn.Name(), types.NewSignatureType(recv, nil, nil, sig.Params(), sig.Results(), sig.Variadic()))\n\t\t\t\t\t}\n\n\t\t\t\t\tembeds := make([]types.Type, iface.NumEmbeddeds())\n\t\t\t\t\tfor i := range embeds {\n\t\t\t\t\t\tembeds[i] = iface.EmbeddedType(i)\n\t\t\t\t\t}\n\n\t\t\t\t\tnewIface := types.NewInterfaceType(methods, embeds)\n\t\t\t\t\tr.p.ifaces = append(r.p.ifaces, newIface)\n\t\t\t\t\tunderlying = newIface\n\t\t\t\t}\n\n\t\t\t\tnamed.SetUnderlying(underlying)\n\t\t\t}\n\n\t\t\t// Since go.dev/cl/455279, we can assume rhs.Underlying() will\n\t\t\t// always be non-nil. However, to temporarily support users of\n\t\t\t// older snapshot releases, we continue to fallback to the old\n\t\t\t// behavior for now.\n\t\t\t//\n\t\t\t// TODO(mdempsky): Remove fallback code and simplify after\n\t\t\t// allowing time for snapshot users to upgrade.\n\t\t\trhs := r.typ()\n\t\t\tif underlying := rhs.Underlying(); underlying != nil {\n\t\t\t\tsetUnderlying(underlying)\n\t\t\t} else {\n\t\t\t\tpk := r.p\n\t\t\t\tpk.laterFor(named, func() {\n\t\t\t\t\t// First be sure that the rhs is initialized, if it needs to be initialized.\n\t\t\t\t\tdelete(pk.laterFors, named) // prevent cycles\n\t\t\t\t\tif i, ok := pk.laterFors[rhs]; ok {\n\t\t\t\t\t\tf := pk.laterFns[i]\n\t\t\t\t\t\tpk.laterFns[i] = func() {} // function is running now, so replace it with a no-op\n\t\t\t\t\t\tf()                        // initialize RHS\n\t\t\t\t\t}\n\t\t\t\t\tsetUnderlying(rhs.Underlying())\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tfor i, n := 0, r.Len(); i < n; i++ {\n\t\t\t\tnamed.AddMethod(r.method())\n\t\t\t}\n\n\t\tcase pkgbits.ObjVar:\n\t\t\tpos := r.pos()\n\t\t\ttyp := r.typ()\n\t\t\tv := types.NewVar(pos, objPkg, objName, typ)\n\t\t\ttypesinternal.SetVarKind(v, typesinternal.PackageVar)\n\t\t\tdeclare(v)\n\t\t}\n\t}\n\n\treturn objPkg, objName\n}\n\nfunc (pr *pkgReader) objDictIdx(idx pkgbits.Index) *readerDict {\n\n\tvar dict readerDict\n\n\t{\n\t\tr := pr.tempReader(pkgbits.RelocObjDict, idx, pkgbits.SyncObject1)\n\t\tif implicits := r.Len(); implicits != 0 {\n\t\t\terrorf(\"unexpected object with %v implicit type parameter(s)\", implicits)\n\t\t}\n\n\t\tdict.bounds = make([]typeInfo, r.Len())\n\t\tfor i := range dict.bounds {\n\t\t\tdict.bounds[i] = r.typInfo()\n\t\t}\n\n\t\tdict.derived = make([]derivedInfo, r.Len())\n\t\tdict.derivedTypes = make([]types.Type, len(dict.derived))\n\t\tfor i := range dict.derived {\n\t\t\tdict.derived[i] = derivedInfo{idx: r.Reloc(pkgbits.RelocType)}\n\t\t\tif r.Version().Has(pkgbits.DerivedInfoNeeded) {\n\t\t\t\tassert(!r.Bool())\n\t\t\t}\n\t\t}\n\n\t\tpr.retireReader(r)\n\t}\n\t// function references follow, but reader doesn't need those\n\n\treturn &dict\n}\n\nfunc (r *reader) typeParamNames() []*types.TypeParam {\n\tr.Sync(pkgbits.SyncTypeParamNames)\n\n\t// Note: This code assumes it only processes objects without\n\t// implement type parameters. This is currently fine, because\n\t// reader is only used to read in exported declarations, which are\n\t// always package scoped.\n\n\tif len(r.dict.bounds) == 0 {\n\t\treturn nil\n\t}\n\n\t// Careful: Type parameter lists may have cycles. To allow for this,\n\t// we construct the type parameter list in two passes: first we\n\t// create all the TypeNames and TypeParams, then we construct and\n\t// set the bound type.\n\n\tr.dict.tparams = make([]*types.TypeParam, len(r.dict.bounds))\n\tfor i := range r.dict.bounds {\n\t\tpos := r.pos()\n\t\tpkg, name := r.localIdent()\n\n\t\ttname := types.NewTypeName(pos, pkg, name, nil)\n\t\tr.dict.tparams[i] = types.NewTypeParam(tname, nil)\n\t}\n\n\ttyps := make([]types.Type, len(r.dict.bounds))\n\tfor i, bound := range r.dict.bounds {\n\t\ttyps[i] = r.p.typIdx(bound, r.dict)\n\t}\n\n\t// TODO(mdempsky): This is subtle, elaborate further.\n\t//\n\t// We have to save tparams outside of the closure, because\n\t// typeParamNames() can be called multiple times with the same\n\t// dictionary instance.\n\t//\n\t// Also, this needs to happen later to make sure SetUnderlying has\n\t// been called.\n\t//\n\t// TODO(mdempsky): Is it safe to have a single \"later\" slice or do\n\t// we need to have multiple passes? See comments on CL 386002 and\n\t// go.dev/issue/52104.\n\ttparams := r.dict.tparams\n\tr.p.later(func() {\n\t\tfor i, typ := range typs {\n\t\t\ttparams[i].SetConstraint(typ)\n\t\t}\n\t})\n\n\treturn r.dict.tparams\n}\n\nfunc (r *reader) method() *types.Func {\n\tr.Sync(pkgbits.SyncMethod)\n\tpos := r.pos()\n\tpkg, name := r.selector()\n\n\trparams := r.typeParamNames()\n\tsig := r.signature(r.param(), rparams, nil)\n\n\t_ = r.pos() // TODO(mdempsky): Remove; this is a hacker for linker.go.\n\treturn types.NewFunc(pos, pkg, name, sig)\n}\n\nfunc (r *reader) qualifiedIdent() (*types.Package, string) { return r.ident(pkgbits.SyncSym) }\nfunc (r *reader) localIdent() (*types.Package, string)     { return r.ident(pkgbits.SyncLocalIdent) }\nfunc (r *reader) selector() (*types.Package, string)       { return r.ident(pkgbits.SyncSelector) }\n\nfunc (r *reader) ident(marker pkgbits.SyncMarker) (*types.Package, string) {\n\tr.Sync(marker)\n\treturn r.pkg(), r.String()\n}\n\n// pkgScope returns pkg.Scope().\n// If pkg is nil, it returns types.Universe instead.\n//\n// TODO(mdempsky): Remove after x/tools can depend on Go 1.19.\nfunc pkgScope(pkg *types.Package) *types.Scope {\n\tif pkg != nil {\n\t\treturn pkg.Scope()\n\t}\n\treturn types.Universe\n}\n\n// See cmd/compile/internal/types.SplitVargenSuffix.\nfunc splitVargenSuffix(name string) (base, suffix string) {\n\ti := len(name)\n\tfor i > 0 && name[i-1] >= '0' && name[i-1] <= '9' {\n\t\ti--\n\t}\n\tconst dot = \"·\"\n\tif i >= len(dot) && name[i-len(dot):i] == dot {\n\t\ti -= len(dot)\n\t\treturn name[:i], name[i:]\n\t}\n\treturn name, \"\"\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/gocommand/invoke.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package gocommand is a helper for calling the go command.\npackage gocommand\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n\t\"os\"\n\t\"os/exec\"\n\t\"path/filepath\"\n\t\"regexp\"\n\t\"runtime\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n\n\t\"golang.org/x/tools/internal/event\"\n\t\"golang.org/x/tools/internal/event/keys\"\n\t\"golang.org/x/tools/internal/event/label\"\n)\n\n// A Runner will run go command invocations and serialize\n// them if it sees a concurrency error.\ntype Runner struct {\n\t// once guards the runner initialization.\n\tonce sync.Once\n\n\t// inFlight tracks available workers.\n\tinFlight chan struct{}\n\n\t// serialized guards the ability to run a go command serially,\n\t// to avoid deadlocks when claiming workers.\n\tserialized chan struct{}\n}\n\nconst maxInFlight = 10\n\nfunc (runner *Runner) initialize() {\n\trunner.once.Do(func() {\n\t\trunner.inFlight = make(chan struct{}, maxInFlight)\n\t\trunner.serialized = make(chan struct{}, 1)\n\t})\n}\n\n// 1.13: go: updates to go.mod needed, but contents have changed\n// 1.14: go: updating go.mod: existing contents have changed since last read\nvar modConcurrencyError = regexp.MustCompile(`go:.*go.mod.*contents have changed`)\n\n// event keys for go command invocations\nvar (\n\tverb      = keys.NewString(\"verb\", \"go command verb\")\n\tdirectory = keys.NewString(\"directory\", \"\")\n)\n\nfunc invLabels(inv Invocation) []label.Label {\n\treturn []label.Label{verb.Of(inv.Verb), directory.Of(inv.WorkingDir)}\n}\n\n// Run is a convenience wrapper around RunRaw.\n// It returns only stdout and a \"friendly\" error.\nfunc (runner *Runner) Run(ctx context.Context, inv Invocation) (*bytes.Buffer, error) {\n\tctx, done := event.Start(ctx, \"gocommand.Runner.Run\", invLabels(inv)...)\n\tdefer done()\n\n\tstdout, _, friendly, _ := runner.RunRaw(ctx, inv)\n\treturn stdout, friendly\n}\n\n// RunPiped runs the invocation serially, always waiting for any concurrent\n// invocations to complete first.\nfunc (runner *Runner) RunPiped(ctx context.Context, inv Invocation, stdout, stderr io.Writer) error {\n\tctx, done := event.Start(ctx, \"gocommand.Runner.RunPiped\", invLabels(inv)...)\n\tdefer done()\n\n\t_, err := runner.runPiped(ctx, inv, stdout, stderr)\n\treturn err\n}\n\n// RunRaw runs the invocation, serializing requests only if they fight over\n// go.mod changes.\n// Postcondition: both error results have same nilness.\nfunc (runner *Runner) RunRaw(ctx context.Context, inv Invocation) (*bytes.Buffer, *bytes.Buffer, error, error) {\n\tctx, done := event.Start(ctx, \"gocommand.Runner.RunRaw\", invLabels(inv)...)\n\tdefer done()\n\t// Make sure the runner is always initialized.\n\trunner.initialize()\n\n\t// First, try to run the go command concurrently.\n\tstdout, stderr, friendlyErr, err := runner.runConcurrent(ctx, inv)\n\n\t// If we encounter a load concurrency error, we need to retry serially.\n\tif friendlyErr != nil && modConcurrencyError.MatchString(friendlyErr.Error()) {\n\t\tevent.Error(ctx, \"Load concurrency error, will retry serially\", err)\n\n\t\t// Run serially by calling runPiped.\n\t\tstdout.Reset()\n\t\tstderr.Reset()\n\t\tfriendlyErr, err = runner.runPiped(ctx, inv, stdout, stderr)\n\t}\n\n\treturn stdout, stderr, friendlyErr, err\n}\n\n// Postcondition: both error results have same nilness.\nfunc (runner *Runner) runConcurrent(ctx context.Context, inv Invocation) (*bytes.Buffer, *bytes.Buffer, error, error) {\n\t// Wait for 1 worker to become available.\n\tselect {\n\tcase <-ctx.Done():\n\t\treturn nil, nil, ctx.Err(), ctx.Err()\n\tcase runner.inFlight <- struct{}{}:\n\t\tdefer func() { <-runner.inFlight }()\n\t}\n\n\tstdout, stderr := &bytes.Buffer{}, &bytes.Buffer{}\n\tfriendlyErr, err := inv.runWithFriendlyError(ctx, stdout, stderr)\n\treturn stdout, stderr, friendlyErr, err\n}\n\n// Postcondition: both error results have same nilness.\nfunc (runner *Runner) runPiped(ctx context.Context, inv Invocation, stdout, stderr io.Writer) (error, error) {\n\t// Make sure the runner is always initialized.\n\trunner.initialize()\n\n\t// Acquire the serialization lock. This avoids deadlocks between two\n\t// runPiped commands.\n\tselect {\n\tcase <-ctx.Done():\n\t\treturn ctx.Err(), ctx.Err()\n\tcase runner.serialized <- struct{}{}:\n\t\tdefer func() { <-runner.serialized }()\n\t}\n\n\t// Wait for all in-progress go commands to return before proceeding,\n\t// to avoid load concurrency errors.\n\tfor range maxInFlight {\n\t\tselect {\n\t\tcase <-ctx.Done():\n\t\t\treturn ctx.Err(), ctx.Err()\n\t\tcase runner.inFlight <- struct{}{}:\n\t\t\t// Make sure we always \"return\" any workers we took.\n\t\t\tdefer func() { <-runner.inFlight }()\n\t\t}\n\t}\n\n\treturn inv.runWithFriendlyError(ctx, stdout, stderr)\n}\n\n// An Invocation represents a call to the go command.\ntype Invocation struct {\n\tVerb       string\n\tArgs       []string\n\tBuildFlags []string\n\n\t// If ModFlag is set, the go command is invoked with -mod=ModFlag.\n\t// TODO(rfindley): remove, in favor of Args.\n\tModFlag string\n\n\t// If ModFile is set, the go command is invoked with -modfile=ModFile.\n\t// TODO(rfindley): remove, in favor of Args.\n\tModFile string\n\n\t// Overlay is the name of the JSON overlay file that describes\n\t// unsaved editor buffers; see [WriteOverlays].\n\t// If set, the go command is invoked with -overlay=Overlay.\n\t// TODO(rfindley): remove, in favor of Args.\n\tOverlay string\n\n\t// If CleanEnv is set, the invocation will run only with the environment\n\t// in Env, not starting with os.Environ.\n\tCleanEnv   bool\n\tEnv        []string\n\tWorkingDir string\n\tLogf       func(format string, args ...any)\n}\n\n// Postcondition: both error results have same nilness.\nfunc (i *Invocation) runWithFriendlyError(ctx context.Context, stdout, stderr io.Writer) (friendlyError error, rawError error) {\n\trawError = i.run(ctx, stdout, stderr)\n\tif rawError != nil {\n\t\tfriendlyError = rawError\n\t\t// Check for 'go' executable not being found.\n\t\tif ee, ok := rawError.(*exec.Error); ok && ee.Err == exec.ErrNotFound {\n\t\t\tfriendlyError = fmt.Errorf(\"go command required, not found: %v\", ee)\n\t\t}\n\t\tif ctx.Err() != nil {\n\t\t\tfriendlyError = ctx.Err()\n\t\t}\n\t\tfriendlyError = fmt.Errorf(\"err: %v: stderr: %s\", friendlyError, stderr)\n\t}\n\treturn\n}\n\n// logf logs if i.Logf is non-nil.\nfunc (i *Invocation) logf(format string, args ...any) {\n\tif i.Logf != nil {\n\t\ti.Logf(format, args...)\n\t}\n}\n\nfunc (i *Invocation) run(ctx context.Context, stdout, stderr io.Writer) error {\n\tgoArgs := []string{i.Verb}\n\n\tappendModFile := func() {\n\t\tif i.ModFile != \"\" {\n\t\t\tgoArgs = append(goArgs, \"-modfile=\"+i.ModFile)\n\t\t}\n\t}\n\tappendModFlag := func() {\n\t\tif i.ModFlag != \"\" {\n\t\t\tgoArgs = append(goArgs, \"-mod=\"+i.ModFlag)\n\t\t}\n\t}\n\tappendOverlayFlag := func() {\n\t\tif i.Overlay != \"\" {\n\t\t\tgoArgs = append(goArgs, \"-overlay=\"+i.Overlay)\n\t\t}\n\t}\n\n\tswitch i.Verb {\n\tcase \"env\", \"version\":\n\t\tgoArgs = append(goArgs, i.Args...)\n\tcase \"mod\":\n\t\t// mod needs the sub-verb before flags.\n\t\tgoArgs = append(goArgs, i.Args[0])\n\t\tappendModFile()\n\t\tgoArgs = append(goArgs, i.Args[1:]...)\n\tcase \"get\":\n\t\tgoArgs = append(goArgs, i.BuildFlags...)\n\t\tappendModFile()\n\t\tgoArgs = append(goArgs, i.Args...)\n\n\tdefault: // notably list and build.\n\t\tgoArgs = append(goArgs, i.BuildFlags...)\n\t\tappendModFile()\n\t\tappendModFlag()\n\t\tappendOverlayFlag()\n\t\tgoArgs = append(goArgs, i.Args...)\n\t}\n\tcmd := exec.Command(\"go\", goArgs...)\n\tcmd.Stdout = stdout\n\tcmd.Stderr = stderr\n\n\t// https://go.dev/issue/59541: don't wait forever copying stderr\n\t// after the command has exited.\n\t// After CL 484741 we copy stdout manually, so we we'll stop reading that as\n\t// soon as ctx is done. However, we also don't want to wait around forever\n\t// for stderr. Give a much-longer-than-reasonable delay and then assume that\n\t// something has wedged in the kernel or runtime.\n\tcmd.WaitDelay = 30 * time.Second\n\n\t// The cwd gets resolved to the real path. On Darwin, where\n\t// /tmp is a symlink, this breaks anything that expects the\n\t// working directory to keep the original path, including the\n\t// go command when dealing with modules.\n\t//\n\t// os.Getwd has a special feature where if the cwd and the PWD\n\t// are the same node then it trusts the PWD, so by setting it\n\t// in the env for the child process we fix up all the paths\n\t// returned by the go command.\n\tif !i.CleanEnv {\n\t\tcmd.Env = os.Environ()\n\t}\n\tcmd.Env = append(cmd.Env, i.Env...)\n\tif i.WorkingDir != \"\" {\n\t\tcmd.Env = append(cmd.Env, \"PWD=\"+i.WorkingDir)\n\t\tcmd.Dir = i.WorkingDir\n\t}\n\n\tdebugStr := cmdDebugStr(cmd)\n\ti.logf(\"starting %v\", debugStr)\n\tstart := time.Now()\n\tdefer func() {\n\t\ti.logf(\"%s for %v\", time.Since(start), debugStr)\n\t}()\n\n\treturn runCmdContext(ctx, cmd)\n}\n\n// DebugHangingGoCommands may be set by tests to enable additional\n// instrumentation (including panics) for debugging hanging Go commands.\n//\n// See golang/go#54461 for details.\nvar DebugHangingGoCommands = false\n\n// runCmdContext is like exec.CommandContext except it sends os.Interrupt\n// before os.Kill.\nfunc runCmdContext(ctx context.Context, cmd *exec.Cmd) (err error) {\n\t// If cmd.Stdout is not an *os.File, the exec package will create a pipe and\n\t// copy it to the Writer in a goroutine until the process has finished and\n\t// either the pipe reaches EOF or command's WaitDelay expires.\n\t//\n\t// However, the output from 'go list' can be quite large, and we don't want to\n\t// keep reading (and allocating buffers) if we've already decided we don't\n\t// care about the output. We don't want to wait for the process to finish, and\n\t// we don't wait to wait for the WaitDelay to expire either.\n\t//\n\t// Instead, if cmd.Stdout requires a copying goroutine we explicitly replace\n\t// it with a pipe (which is an *os.File), which we can close in order to stop\n\t// copying output as soon as we realize we don't care about it.\n\tvar stdoutW *os.File\n\tif cmd.Stdout != nil {\n\t\tif _, ok := cmd.Stdout.(*os.File); !ok {\n\t\t\tvar stdoutR *os.File\n\t\t\tstdoutR, stdoutW, err = os.Pipe()\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tprevStdout := cmd.Stdout\n\t\t\tcmd.Stdout = stdoutW\n\n\t\t\tstdoutErr := make(chan error, 1)\n\t\t\tgo func() {\n\t\t\t\t_, err := io.Copy(prevStdout, stdoutR)\n\t\t\t\tif err != nil {\n\t\t\t\t\terr = fmt.Errorf(\"copying stdout: %w\", err)\n\t\t\t\t}\n\t\t\t\tstdoutErr <- err\n\t\t\t}()\n\t\t\tdefer func() {\n\t\t\t\t// We started a goroutine to copy a stdout pipe.\n\t\t\t\t// Wait for it to finish, or terminate it if need be.\n\t\t\t\tvar err2 error\n\t\t\t\tselect {\n\t\t\t\tcase err2 = <-stdoutErr:\n\t\t\t\t\tstdoutR.Close()\n\t\t\t\tcase <-ctx.Done():\n\t\t\t\t\tstdoutR.Close()\n\t\t\t\t\t// Per https://pkg.go.dev/os#File.Close, the call to stdoutR.Close\n\t\t\t\t\t// should cause the Read call in io.Copy to unblock and return\n\t\t\t\t\t// immediately, but we still need to receive from stdoutErr to confirm\n\t\t\t\t\t// that it has happened.\n\t\t\t\t\t<-stdoutErr\n\t\t\t\t\terr2 = ctx.Err()\n\t\t\t\t}\n\t\t\t\tif err == nil {\n\t\t\t\t\terr = err2\n\t\t\t\t}\n\t\t\t}()\n\n\t\t\t// Per https://pkg.go.dev/os/exec#Cmd, “If Stdout and Stderr are the\n\t\t\t// same writer, and have a type that can be compared with ==, at most\n\t\t\t// one goroutine at a time will call Write.”\n\t\t\t//\n\t\t\t// Since we're starting a goroutine that writes to cmd.Stdout, we must\n\t\t\t// also update cmd.Stderr so that it still holds.\n\t\t\tfunc() {\n\t\t\t\tdefer func() { recover() }()\n\t\t\t\tif cmd.Stderr == prevStdout {\n\t\t\t\t\tcmd.Stderr = cmd.Stdout\n\t\t\t\t}\n\t\t\t}()\n\t\t}\n\t}\n\n\tstartTime := time.Now()\n\terr = cmd.Start()\n\tif stdoutW != nil {\n\t\t// The child process has inherited the pipe file,\n\t\t// so close the copy held in this process.\n\t\tstdoutW.Close()\n\t\tstdoutW = nil\n\t}\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tresChan := make(chan error, 1)\n\tgo func() {\n\t\tresChan <- cmd.Wait()\n\t}()\n\n\t// If we're interested in debugging hanging Go commands, stop waiting after a\n\t// minute and panic with interesting information.\n\tdebug := DebugHangingGoCommands\n\tif debug {\n\t\ttimer := time.NewTimer(1 * time.Minute)\n\t\tdefer timer.Stop()\n\t\tselect {\n\t\tcase err := <-resChan:\n\t\t\treturn err\n\t\tcase <-timer.C:\n\t\t\t// HandleHangingGoCommand terminates this process.\n\t\t\t// Pass off resChan in case we can collect the command error.\n\t\t\thandleHangingGoCommand(startTime, cmd, resChan)\n\t\tcase <-ctx.Done():\n\t\t}\n\t} else {\n\t\tselect {\n\t\tcase err := <-resChan:\n\t\t\treturn err\n\t\tcase <-ctx.Done():\n\t\t}\n\t}\n\n\t// Cancelled. Interrupt and see if it ends voluntarily.\n\tif err := cmd.Process.Signal(os.Interrupt); err == nil {\n\t\t// (We used to wait only 1s but this proved\n\t\t// fragile on loaded builder machines.)\n\t\ttimer := time.NewTimer(5 * time.Second)\n\t\tdefer timer.Stop()\n\t\tselect {\n\t\tcase err := <-resChan:\n\t\t\treturn err\n\t\tcase <-timer.C:\n\t\t}\n\t}\n\n\t// Didn't shut down in response to interrupt. Kill it hard.\n\tif err := cmd.Process.Kill(); err != nil && !errors.Is(err, os.ErrProcessDone) && debug {\n\t\tlog.Printf(\"error killing the Go command: %v\", err)\n\t}\n\n\treturn <-resChan\n}\n\n// handleHangingGoCommand outputs debugging information to help diagnose the\n// cause of a hanging Go command, and then exits with log.Fatalf.\nfunc handleHangingGoCommand(start time.Time, cmd *exec.Cmd, resChan chan error) {\n\tswitch runtime.GOOS {\n\tcase \"linux\", \"darwin\", \"freebsd\", \"netbsd\", \"openbsd\":\n\t\tfmt.Fprintln(os.Stderr, `DETECTED A HANGING GO COMMAND\n\n\t\t\tThe gopls test runner has detected a hanging go command. In order to debug\n\t\t\tthis, the output of ps and lsof/fstat is printed below.\n\n\t\t\tSee golang/go#54461 for more details.`)\n\n\t\tfmt.Fprintln(os.Stderr, \"\\nps axo ppid,pid,command:\")\n\t\tfmt.Fprintln(os.Stderr, \"-------------------------\")\n\t\tpsCmd := exec.Command(\"ps\", \"axo\", \"ppid,pid,command\")\n\t\tpsCmd.Stdout = os.Stderr\n\t\tpsCmd.Stderr = os.Stderr\n\t\tif err := psCmd.Run(); err != nil {\n\t\t\tlog.Printf(\"Handling hanging Go command: running ps: %v\", err)\n\t\t}\n\n\t\tlistFiles := \"lsof\"\n\t\tif runtime.GOOS == \"freebsd\" || runtime.GOOS == \"netbsd\" {\n\t\t\tlistFiles = \"fstat\"\n\t\t}\n\n\t\tfmt.Fprintln(os.Stderr, \"\\n\"+listFiles+\":\")\n\t\tfmt.Fprintln(os.Stderr, \"-----\")\n\t\tlistFilesCmd := exec.Command(listFiles)\n\t\tlistFilesCmd.Stdout = os.Stderr\n\t\tlistFilesCmd.Stderr = os.Stderr\n\t\tif err := listFilesCmd.Run(); err != nil {\n\t\t\tlog.Printf(\"Handling hanging Go command: running %s: %v\", listFiles, err)\n\t\t}\n\t\t// Try to extract information about the slow go process by issuing a SIGQUIT.\n\t\tif err := cmd.Process.Signal(sigStuckProcess); err == nil {\n\t\t\tselect {\n\t\t\tcase err := <-resChan:\n\t\t\t\tstderr := \"not a bytes.Buffer\"\n\t\t\t\tif buf, _ := cmd.Stderr.(*bytes.Buffer); buf != nil {\n\t\t\t\t\tstderr = buf.String()\n\t\t\t\t}\n\t\t\t\tlog.Printf(\"Quit hanging go command:\\n\\terr:%v\\n\\tstderr:\\n%v\\n\\n\", err, stderr)\n\t\t\tcase <-time.After(5 * time.Second):\n\t\t\t}\n\t\t} else {\n\t\t\tlog.Printf(\"Sending signal %d to hanging go command: %v\", sigStuckProcess, err)\n\t\t}\n\t}\n\tlog.Fatalf(\"detected hanging go command (golang/go#54461); waited %s\\n\\tcommand:%s\\n\\tpid:%d\", time.Since(start), cmd, cmd.Process.Pid)\n}\n\nfunc cmdDebugStr(cmd *exec.Cmd) string {\n\tenv := make(map[string]string)\n\tfor _, kv := range cmd.Env {\n\t\tsplit := strings.SplitN(kv, \"=\", 2)\n\t\tif len(split) == 2 {\n\t\t\tk, v := split[0], split[1]\n\t\t\tenv[k] = v\n\t\t}\n\t}\n\n\tvar args []string\n\tfor _, arg := range cmd.Args {\n\t\tquoted := strconv.Quote(arg)\n\t\tif quoted[1:len(quoted)-1] != arg || strings.Contains(arg, \" \") {\n\t\t\targs = append(args, quoted)\n\t\t} else {\n\t\t\targs = append(args, arg)\n\t\t}\n\t}\n\treturn fmt.Sprintf(\"GOROOT=%v GOPATH=%v GO111MODULE=%v GOPROXY=%v PWD=%v %v\", env[\"GOROOT\"], env[\"GOPATH\"], env[\"GO111MODULE\"], env[\"GOPROXY\"], env[\"PWD\"], strings.Join(args, \" \"))\n}\n\n// WriteOverlays writes each value in the overlay (see the Overlay\n// field of go/packages.Config) to a temporary file and returns the name\n// of a JSON file describing the mapping that is suitable for the \"go\n// list -overlay\" flag.\n//\n// On success, the caller must call the cleanup function exactly once\n// when the files are no longer needed.\nfunc WriteOverlays(overlay map[string][]byte) (filename string, cleanup func(), err error) {\n\t// Do nothing if there are no overlays in the config.\n\tif len(overlay) == 0 {\n\t\treturn \"\", func() {}, nil\n\t}\n\n\tdir, err := os.MkdirTemp(\"\", \"gocommand-*\")\n\tif err != nil {\n\t\treturn \"\", nil, err\n\t}\n\n\t// The caller must clean up this directory,\n\t// unless this function returns an error.\n\t// (The cleanup operand of each return\n\t// statement below is ignored.)\n\tdefer func() {\n\t\tcleanup = func() {\n\t\t\tos.RemoveAll(dir)\n\t\t}\n\t\tif err != nil {\n\t\t\tcleanup()\n\t\t\tcleanup = nil\n\t\t}\n\t}()\n\n\t// Write each map entry to a temporary file.\n\toverlays := make(map[string]string)\n\tfor k, v := range overlay {\n\t\t// Use a unique basename for each file (001-foo.go),\n\t\t// to avoid creating nested directories.\n\t\tbase := fmt.Sprintf(\"%d-%s\", 1+len(overlays), filepath.Base(k))\n\t\tfilename := filepath.Join(dir, base)\n\t\terr := os.WriteFile(filename, v, 0666)\n\t\tif err != nil {\n\t\t\treturn \"\", nil, err\n\t\t}\n\t\toverlays[k] = filename\n\t}\n\n\t// Write the JSON overlay file that maps logical file names to temp files.\n\t//\n\t// OverlayJSON is the format overlay files are expected to be in.\n\t// The Replace map maps from overlaid paths to replacement paths:\n\t// the Go command will forward all reads trying to open\n\t// each overlaid path to its replacement path, or consider the overlaid\n\t// path not to exist if the replacement path is empty.\n\t//\n\t// From golang/go#39958.\n\ttype OverlayJSON struct {\n\t\tReplace map[string]string `json:\"replace,omitempty\"`\n\t}\n\tb, err := json.Marshal(OverlayJSON{Replace: overlays})\n\tif err != nil {\n\t\treturn \"\", nil, err\n\t}\n\tfilename = filepath.Join(dir, \"overlay.json\")\n\tif err := os.WriteFile(filename, b, 0666); err != nil {\n\t\treturn \"\", nil, err\n\t}\n\n\treturn filename, nil, nil\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/gocommand/invoke_notunix.go",
    "content": "// Copyright 2025 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build !unix\n\npackage gocommand\n\nimport \"os\"\n\n// sigStuckProcess is the signal to send to kill a hanging subprocess.\n// On Unix we send SIGQUIT, but on non-Unix we only have os.Kill.\nvar sigStuckProcess = os.Kill\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/gocommand/invoke_unix.go",
    "content": "// Copyright 2025 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build unix\n\npackage gocommand\n\nimport \"syscall\"\n\n// Sigstuckprocess is the signal to send to kill a hanging subprocess.\n// Send SIGQUIT to get a stack trace.\nvar sigStuckProcess = syscall.SIGQUIT\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/gocommand/vendor.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage gocommand\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"regexp\"\n\t\"strings\"\n\t\"time\"\n\n\t\"golang.org/x/mod/semver\"\n)\n\n// ModuleJSON holds information about a module.\ntype ModuleJSON struct {\n\tPath      string      // module path\n\tVersion   string      // module version\n\tVersions  []string    // available module versions (with -versions)\n\tReplace   *ModuleJSON // replaced by this module\n\tTime      *time.Time  // time version was created\n\tUpdate    *ModuleJSON // available update, if any (with -u)\n\tMain      bool        // is this the main module?\n\tIndirect  bool        // is this module only an indirect dependency of main module?\n\tDir       string      // directory holding files for this module, if any\n\tGoMod     string      // path to go.mod file used when loading this module, if any\n\tGoVersion string      // go version used in module\n}\n\nvar modFlagRegexp = regexp.MustCompile(`-mod[ =](\\w+)`)\n\n// VendorEnabled reports whether vendoring is enabled. It takes a *Runner to execute Go commands\n// with the supplied context.Context and Invocation. The Invocation can contain pre-defined fields,\n// of which only Verb and Args are modified to run the appropriate Go command.\n// Inspired by setDefaultBuildMod in modload/init.go\nfunc VendorEnabled(ctx context.Context, inv Invocation, r *Runner) (bool, *ModuleJSON, error) {\n\tmainMod, go114, err := getMainModuleAnd114(ctx, inv, r)\n\tif err != nil {\n\t\treturn false, nil, err\n\t}\n\n\t// We check the GOFLAGS to see if there is anything overridden or not.\n\tinv.Verb = \"env\"\n\tinv.Args = []string{\"GOFLAGS\"}\n\tstdout, err := r.Run(ctx, inv)\n\tif err != nil {\n\t\treturn false, nil, err\n\t}\n\tgoflags := string(bytes.TrimSpace(stdout.Bytes()))\n\tmatches := modFlagRegexp.FindStringSubmatch(goflags)\n\tvar modFlag string\n\tif len(matches) != 0 {\n\t\tmodFlag = matches[1]\n\t}\n\t// Don't override an explicit '-mod=' argument.\n\tif modFlag == \"vendor\" {\n\t\treturn true, mainMod, nil\n\t} else if modFlag != \"\" {\n\t\treturn false, nil, nil\n\t}\n\tif mainMod == nil || !go114 {\n\t\treturn false, nil, nil\n\t}\n\t// Check 1.14's automatic vendor mode.\n\tif fi, err := os.Stat(filepath.Join(mainMod.Dir, \"vendor\")); err == nil && fi.IsDir() {\n\t\tif mainMod.GoVersion != \"\" && semver.Compare(\"v\"+mainMod.GoVersion, \"v1.14\") >= 0 {\n\t\t\t// The Go version is at least 1.14, and a vendor directory exists.\n\t\t\t// Set -mod=vendor by default.\n\t\t\treturn true, mainMod, nil\n\t\t}\n\t}\n\treturn false, nil, nil\n}\n\n// getMainModuleAnd114 gets one of the main modules' information and whether the\n// go command in use is 1.14+. This is the information needed to figure out\n// if vendoring should be enabled.\nfunc getMainModuleAnd114(ctx context.Context, inv Invocation, r *Runner) (*ModuleJSON, bool, error) {\n\tconst format = `{{.Path}}\n{{.Dir}}\n{{.GoMod}}\n{{.GoVersion}}\n{{range context.ReleaseTags}}{{if eq . \"go1.14\"}}{{.}}{{end}}{{end}}\n`\n\tinv.Verb = \"list\"\n\tinv.Args = []string{\"-m\", \"-f\", format}\n\tstdout, err := r.Run(ctx, inv)\n\tif err != nil {\n\t\treturn nil, false, err\n\t}\n\n\tlines := strings.Split(stdout.String(), \"\\n\")\n\tif len(lines) < 5 {\n\t\treturn nil, false, fmt.Errorf(\"unexpected stdout: %q\", stdout.String())\n\t}\n\tmod := &ModuleJSON{\n\t\tPath:      lines[0],\n\t\tDir:       lines[1],\n\t\tGoMod:     lines[2],\n\t\tGoVersion: lines[3],\n\t\tMain:      true,\n\t}\n\treturn mod, lines[4] == \"go1.14\", nil\n}\n\n// WorkspaceVendorEnabled reports whether workspace vendoring is enabled. It takes a *Runner to execute Go commands\n// with the supplied context.Context and Invocation. The Invocation can contain pre-defined fields,\n// of which only Verb and Args are modified to run the appropriate Go command.\n// Inspired by setDefaultBuildMod in modload/init.go\nfunc WorkspaceVendorEnabled(ctx context.Context, inv Invocation, r *Runner) (bool, []*ModuleJSON, error) {\n\tinv.Verb = \"env\"\n\tinv.Args = []string{\"GOWORK\"}\n\tstdout, err := r.Run(ctx, inv)\n\tif err != nil {\n\t\treturn false, nil, err\n\t}\n\tgoWork := string(bytes.TrimSpace(stdout.Bytes()))\n\tif fi, err := os.Stat(filepath.Join(filepath.Dir(goWork), \"vendor\")); err == nil && fi.IsDir() {\n\t\tmainMods, err := getWorkspaceMainModules(ctx, inv, r)\n\t\tif err != nil {\n\t\t\treturn false, nil, err\n\t\t}\n\t\treturn true, mainMods, nil\n\t}\n\treturn false, nil, nil\n}\n\n// getWorkspaceMainModules gets the main modules' information.\n// This is the information needed to figure out if vendoring should be enabled.\nfunc getWorkspaceMainModules(ctx context.Context, inv Invocation, r *Runner) ([]*ModuleJSON, error) {\n\tconst format = `{{.Path}}\n{{.Dir}}\n{{.GoMod}}\n{{.GoVersion}}\n`\n\tinv.Verb = \"list\"\n\tinv.Args = []string{\"-m\", \"-f\", format}\n\tstdout, err := r.Run(ctx, inv)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tlines := strings.Split(strings.TrimSuffix(stdout.String(), \"\\n\"), \"\\n\")\n\tif len(lines) < 4 {\n\t\treturn nil, fmt.Errorf(\"unexpected stdout: %q\", stdout.String())\n\t}\n\tmods := make([]*ModuleJSON, 0, len(lines)/4)\n\tfor i := 0; i < len(lines); i += 4 {\n\t\tmods = append(mods, &ModuleJSON{\n\t\t\tPath:      lines[i],\n\t\t\tDir:       lines[i+1],\n\t\t\tGoMod:     lines[i+2],\n\t\t\tGoVersion: lines[i+3],\n\t\t\tMain:      true,\n\t\t})\n\t}\n\treturn mods, nil\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/gocommand/version.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage gocommand\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"regexp\"\n\t\"strings\"\n)\n\n// GoVersion reports the minor version number of the highest release\n// tag built into the go command on the PATH.\n//\n// Note that this may be higher than the version of the go tool used\n// to build this application, and thus the versions of the standard\n// go/{scanner,parser,ast,types} packages that are linked into it.\n// In that case, callers should either downgrade to the version of\n// go used to build the application, or report an error that the\n// application is too old to use the go command on the PATH.\nfunc GoVersion(ctx context.Context, inv Invocation, r *Runner) (int, error) {\n\tinv.Verb = \"list\"\n\tinv.Args = []string{\"-e\", \"-f\", `{{context.ReleaseTags}}`, `--`, `unsafe`}\n\tinv.BuildFlags = nil // This is not a build command.\n\tinv.ModFlag = \"\"\n\tinv.ModFile = \"\"\n\tinv.Env = append(inv.Env[:len(inv.Env):len(inv.Env)], \"GO111MODULE=off\")\n\n\tstdoutBytes, err := r.Run(ctx, inv)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tstdout := stdoutBytes.String()\n\tif len(stdout) < 3 {\n\t\treturn 0, fmt.Errorf(\"bad ReleaseTags output: %q\", stdout)\n\t}\n\t// Split up \"[go1.1 go1.15]\" and return highest go1.X value.\n\ttags := strings.Fields(stdout[1 : len(stdout)-2])\n\tfor i := len(tags) - 1; i >= 0; i-- {\n\t\tvar version int\n\t\tif _, err := fmt.Sscanf(tags[i], \"go1.%d\", &version); err != nil {\n\t\t\tcontinue\n\t\t}\n\t\treturn version, nil\n\t}\n\treturn 0, fmt.Errorf(\"no parseable ReleaseTags in %v\", tags)\n}\n\n// GoVersionOutput returns the complete output of the go version command.\nfunc GoVersionOutput(ctx context.Context, inv Invocation, r *Runner) (string, error) {\n\tinv.Verb = \"version\"\n\tgoVersion, err := r.Run(ctx, inv)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\treturn goVersion.String(), nil\n}\n\n// ParseGoVersionOutput extracts the Go version string\n// from the output of the \"go version\" command.\n// Given an unrecognized form, it returns an empty string.\nfunc ParseGoVersionOutput(data string) string {\n\tre := regexp.MustCompile(`^go version (go\\S+|devel \\S+)`)\n\tm := re.FindStringSubmatch(data)\n\tif len(m) != 2 {\n\t\treturn \"\" // unrecognized version\n\t}\n\treturn m[1]\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/packagesinternal/packages.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package packagesinternal exposes internal-only fields from go/packages.\npackage packagesinternal\n\nimport \"fmt\"\n\nvar GetDepsErrors = func(p any) []*PackageError { return nil }\n\ntype PackageError struct {\n\tImportStack []string // shortest path from package named on command line to this one\n\tPos         string   // position of error (if present, file:line:col)\n\tErr         string   // the error itself\n}\n\nfunc (err PackageError) String() string {\n\treturn fmt.Sprintf(\"%s: %s (import stack: %s)\", err.Pos, err.Err, err.ImportStack)\n}\n\nvar TypecheckCgo int\nvar DepsErrors int // must be set as a LoadMode to call GetDepsErrors\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/pkgbits/codes.go",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage pkgbits\n\n// A Code is an enum value that can be encoded into bitstreams.\n//\n// Code types are preferable for enum types, because they allow\n// Decoder to detect desyncs.\ntype Code interface {\n\t// Marker returns the SyncMarker for the Code's dynamic type.\n\tMarker() SyncMarker\n\n\t// Value returns the Code's ordinal value.\n\tValue() int\n}\n\n// A CodeVal distinguishes among go/constant.Value encodings.\ntype CodeVal int\n\nfunc (c CodeVal) Marker() SyncMarker { return SyncVal }\nfunc (c CodeVal) Value() int         { return int(c) }\n\n// Note: These values are public and cannot be changed without\n// updating the go/types importers.\n\nconst (\n\tValBool CodeVal = iota\n\tValString\n\tValInt64\n\tValBigInt\n\tValBigRat\n\tValBigFloat\n)\n\n// A CodeType distinguishes among go/types.Type encodings.\ntype CodeType int\n\nfunc (c CodeType) Marker() SyncMarker { return SyncType }\nfunc (c CodeType) Value() int         { return int(c) }\n\n// Note: These values are public and cannot be changed without\n// updating the go/types importers.\n\nconst (\n\tTypeBasic CodeType = iota\n\tTypeNamed\n\tTypePointer\n\tTypeSlice\n\tTypeArray\n\tTypeChan\n\tTypeMap\n\tTypeSignature\n\tTypeStruct\n\tTypeInterface\n\tTypeUnion\n\tTypeTypeParam\n)\n\n// A CodeObj distinguishes among go/types.Object encodings.\ntype CodeObj int\n\nfunc (c CodeObj) Marker() SyncMarker { return SyncCodeObj }\nfunc (c CodeObj) Value() int         { return int(c) }\n\n// Note: These values are public and cannot be changed without\n// updating the go/types importers.\n\nconst (\n\tObjAlias CodeObj = iota\n\tObjConst\n\tObjType\n\tObjFunc\n\tObjVar\n\tObjStub\n)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/pkgbits/decoder.go",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage pkgbits\n\nimport (\n\t\"encoding/binary\"\n\t\"errors\"\n\t\"fmt\"\n\t\"go/constant\"\n\t\"go/token\"\n\t\"io\"\n\t\"math/big\"\n\t\"os\"\n\t\"runtime\"\n\t\"strings\"\n)\n\n// A PkgDecoder provides methods for decoding a package's Unified IR\n// export data.\ntype PkgDecoder struct {\n\t// version is the file format version.\n\tversion Version\n\n\t// sync indicates whether the file uses sync markers.\n\tsync bool\n\n\t// pkgPath is the package path for the package to be decoded.\n\t//\n\t// TODO(mdempsky): Remove; unneeded since CL 391014.\n\tpkgPath string\n\n\t// elemData is the full data payload of the encoded package.\n\t// Elements are densely and contiguously packed together.\n\t//\n\t// The last 8 bytes of elemData are the package fingerprint.\n\telemData string\n\n\t// elemEnds stores the byte-offset end positions of element\n\t// bitstreams within elemData.\n\t//\n\t// For example, element I's bitstream data starts at elemEnds[I-1]\n\t// (or 0, if I==0) and ends at elemEnds[I].\n\t//\n\t// Note: elemEnds is indexed by absolute indices, not\n\t// section-relative indices.\n\telemEnds []uint32\n\n\t// elemEndsEnds stores the index-offset end positions of relocation\n\t// sections within elemEnds.\n\t//\n\t// For example, section K's end positions start at elemEndsEnds[K-1]\n\t// (or 0, if K==0) and end at elemEndsEnds[K].\n\telemEndsEnds [numRelocs]uint32\n\n\tscratchRelocEnt []RelocEnt\n}\n\n// PkgPath returns the package path for the package\n//\n// TODO(mdempsky): Remove; unneeded since CL 391014.\nfunc (pr *PkgDecoder) PkgPath() string { return pr.pkgPath }\n\n// SyncMarkers reports whether pr uses sync markers.\nfunc (pr *PkgDecoder) SyncMarkers() bool { return pr.sync }\n\n// NewPkgDecoder returns a PkgDecoder initialized to read the Unified\n// IR export data from input. pkgPath is the package path for the\n// compilation unit that produced the export data.\nfunc NewPkgDecoder(pkgPath, input string) PkgDecoder {\n\tpr := PkgDecoder{\n\t\tpkgPath: pkgPath,\n\t}\n\n\t// TODO(mdempsky): Implement direct indexing of input string to\n\t// avoid copying the position information.\n\n\tr := strings.NewReader(input)\n\n\tvar ver uint32\n\tassert(binary.Read(r, binary.LittleEndian, &ver) == nil)\n\tpr.version = Version(ver)\n\n\tif pr.version >= numVersions {\n\t\tpanic(fmt.Errorf(\"cannot decode %q, export data version %d is greater than maximum supported version %d\", pkgPath, pr.version, numVersions-1))\n\t}\n\n\tif pr.version.Has(Flags) {\n\t\tvar flags uint32\n\t\tassert(binary.Read(r, binary.LittleEndian, &flags) == nil)\n\t\tpr.sync = flags&flagSyncMarkers != 0\n\t}\n\n\tassert(binary.Read(r, binary.LittleEndian, pr.elemEndsEnds[:]) == nil)\n\n\tpr.elemEnds = make([]uint32, pr.elemEndsEnds[len(pr.elemEndsEnds)-1])\n\tassert(binary.Read(r, binary.LittleEndian, pr.elemEnds[:]) == nil)\n\n\tpos, err := r.Seek(0, io.SeekCurrent)\n\tassert(err == nil)\n\n\tpr.elemData = input[pos:]\n\n\tconst fingerprintSize = 8\n\tassert(len(pr.elemData)-fingerprintSize == int(pr.elemEnds[len(pr.elemEnds)-1]))\n\n\treturn pr\n}\n\n// NumElems returns the number of elements in section k.\nfunc (pr *PkgDecoder) NumElems(k RelocKind) int {\n\tcount := int(pr.elemEndsEnds[k])\n\tif k > 0 {\n\t\tcount -= int(pr.elemEndsEnds[k-1])\n\t}\n\treturn count\n}\n\n// TotalElems returns the total number of elements across all sections.\nfunc (pr *PkgDecoder) TotalElems() int {\n\treturn len(pr.elemEnds)\n}\n\n// Fingerprint returns the package fingerprint.\nfunc (pr *PkgDecoder) Fingerprint() [8]byte {\n\tvar fp [8]byte\n\tcopy(fp[:], pr.elemData[len(pr.elemData)-8:])\n\treturn fp\n}\n\n// AbsIdx returns the absolute index for the given (section, index)\n// pair.\nfunc (pr *PkgDecoder) AbsIdx(k RelocKind, idx Index) int {\n\tabsIdx := int(idx)\n\tif k > 0 {\n\t\tabsIdx += int(pr.elemEndsEnds[k-1])\n\t}\n\tif absIdx >= int(pr.elemEndsEnds[k]) {\n\t\tpanicf(\"%v:%v is out of bounds; %v\", k, idx, pr.elemEndsEnds)\n\t}\n\treturn absIdx\n}\n\n// DataIdx returns the raw element bitstream for the given (section,\n// index) pair.\nfunc (pr *PkgDecoder) DataIdx(k RelocKind, idx Index) string {\n\tabsIdx := pr.AbsIdx(k, idx)\n\n\tvar start uint32\n\tif absIdx > 0 {\n\t\tstart = pr.elemEnds[absIdx-1]\n\t}\n\tend := pr.elemEnds[absIdx]\n\n\treturn pr.elemData[start:end]\n}\n\n// StringIdx returns the string value for the given string index.\nfunc (pr *PkgDecoder) StringIdx(idx Index) string {\n\treturn pr.DataIdx(RelocString, idx)\n}\n\n// NewDecoder returns a Decoder for the given (section, index) pair,\n// and decodes the given SyncMarker from the element bitstream.\nfunc (pr *PkgDecoder) NewDecoder(k RelocKind, idx Index, marker SyncMarker) Decoder {\n\tr := pr.NewDecoderRaw(k, idx)\n\tr.Sync(marker)\n\treturn r\n}\n\n// TempDecoder returns a Decoder for the given (section, index) pair,\n// and decodes the given SyncMarker from the element bitstream.\n// If possible the Decoder should be RetireDecoder'd when it is no longer\n// needed, this will avoid heap allocations.\nfunc (pr *PkgDecoder) TempDecoder(k RelocKind, idx Index, marker SyncMarker) Decoder {\n\tr := pr.TempDecoderRaw(k, idx)\n\tr.Sync(marker)\n\treturn r\n}\n\nfunc (pr *PkgDecoder) RetireDecoder(d *Decoder) {\n\tpr.scratchRelocEnt = d.Relocs\n\td.Relocs = nil\n}\n\n// NewDecoderRaw returns a Decoder for the given (section, index) pair.\n//\n// Most callers should use NewDecoder instead.\nfunc (pr *PkgDecoder) NewDecoderRaw(k RelocKind, idx Index) Decoder {\n\tr := Decoder{\n\t\tcommon: pr,\n\t\tk:      k,\n\t\tIdx:    idx,\n\t}\n\n\tr.Data.Reset(pr.DataIdx(k, idx))\n\tr.Sync(SyncRelocs)\n\tr.Relocs = make([]RelocEnt, r.Len())\n\tfor i := range r.Relocs {\n\t\tr.Sync(SyncReloc)\n\t\tr.Relocs[i] = RelocEnt{RelocKind(r.Len()), Index(r.Len())}\n\t}\n\n\treturn r\n}\n\nfunc (pr *PkgDecoder) TempDecoderRaw(k RelocKind, idx Index) Decoder {\n\tr := Decoder{\n\t\tcommon: pr,\n\t\tk:      k,\n\t\tIdx:    idx,\n\t}\n\n\tr.Data.Reset(pr.DataIdx(k, idx))\n\tr.Sync(SyncRelocs)\n\tl := r.Len()\n\tif cap(pr.scratchRelocEnt) >= l {\n\t\tr.Relocs = pr.scratchRelocEnt[:l]\n\t\tpr.scratchRelocEnt = nil\n\t} else {\n\t\tr.Relocs = make([]RelocEnt, l)\n\t}\n\tfor i := range r.Relocs {\n\t\tr.Sync(SyncReloc)\n\t\tr.Relocs[i] = RelocEnt{RelocKind(r.Len()), Index(r.Len())}\n\t}\n\n\treturn r\n}\n\n// A Decoder provides methods for decoding an individual element's\n// bitstream data.\ntype Decoder struct {\n\tcommon *PkgDecoder\n\n\tRelocs []RelocEnt\n\tData   strings.Reader\n\n\tk   RelocKind\n\tIdx Index\n}\n\nfunc (r *Decoder) checkErr(err error) {\n\tif err != nil {\n\t\tpanicf(\"unexpected decoding error: %w\", err)\n\t}\n}\n\nfunc (r *Decoder) rawUvarint() uint64 {\n\tx, err := readUvarint(&r.Data)\n\tr.checkErr(err)\n\treturn x\n}\n\n// readUvarint is a type-specialized copy of encoding/binary.ReadUvarint.\n// This avoids the interface conversion and thus has better escape properties,\n// which flows up the stack.\nfunc readUvarint(r *strings.Reader) (uint64, error) {\n\tvar x uint64\n\tvar s uint\n\tfor i := range binary.MaxVarintLen64 {\n\t\tb, err := r.ReadByte()\n\t\tif err != nil {\n\t\t\tif i > 0 && err == io.EOF {\n\t\t\t\terr = io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\treturn x, err\n\t\t}\n\t\tif b < 0x80 {\n\t\t\tif i == binary.MaxVarintLen64-1 && b > 1 {\n\t\t\t\treturn x, overflow\n\t\t\t}\n\t\t\treturn x | uint64(b)<<s, nil\n\t\t}\n\t\tx |= uint64(b&0x7f) << s\n\t\ts += 7\n\t}\n\treturn x, overflow\n}\n\nvar overflow = errors.New(\"pkgbits: readUvarint overflows a 64-bit integer\")\n\nfunc (r *Decoder) rawVarint() int64 {\n\tux := r.rawUvarint()\n\n\t// Zig-zag decode.\n\tx := int64(ux >> 1)\n\tif ux&1 != 0 {\n\t\tx = ^x\n\t}\n\treturn x\n}\n\nfunc (r *Decoder) rawReloc(k RelocKind, idx int) Index {\n\te := r.Relocs[idx]\n\tassert(e.Kind == k)\n\treturn e.Idx\n}\n\n// Sync decodes a sync marker from the element bitstream and asserts\n// that it matches the expected marker.\n//\n// If r.common.sync is false, then Sync is a no-op.\nfunc (r *Decoder) Sync(mWant SyncMarker) {\n\tif !r.common.sync {\n\t\treturn\n\t}\n\n\tpos, _ := r.Data.Seek(0, io.SeekCurrent)\n\tmHave := SyncMarker(r.rawUvarint())\n\twriterPCs := make([]int, r.rawUvarint())\n\tfor i := range writerPCs {\n\t\twriterPCs[i] = int(r.rawUvarint())\n\t}\n\n\tif mHave == mWant {\n\t\treturn\n\t}\n\n\t// There's some tension here between printing:\n\t//\n\t// (1) full file paths that tools can recognize (e.g., so emacs\n\t//     hyperlinks the \"file:line\" text for easy navigation), or\n\t//\n\t// (2) short file paths that are easier for humans to read (e.g., by\n\t//     omitting redundant or irrelevant details, so it's easier to\n\t//     focus on the useful bits that remain).\n\t//\n\t// The current formatting favors the former, as it seems more\n\t// helpful in practice. But perhaps the formatting could be improved\n\t// to better address both concerns. For example, use relative file\n\t// paths if they would be shorter, or rewrite file paths to contain\n\t// \"$GOROOT\" (like objabi.AbsFile does) if tools can be taught how\n\t// to reliably expand that again.\n\n\tfmt.Printf(\"export data desync: package %q, section %v, index %v, offset %v\\n\", r.common.pkgPath, r.k, r.Idx, pos)\n\n\tfmt.Printf(\"\\nfound %v, written at:\\n\", mHave)\n\tif len(writerPCs) == 0 {\n\t\tfmt.Printf(\"\\t[stack trace unavailable; recompile package %q with -d=syncframes]\\n\", r.common.pkgPath)\n\t}\n\tfor _, pc := range writerPCs {\n\t\tfmt.Printf(\"\\t%s\\n\", r.common.StringIdx(r.rawReloc(RelocString, pc)))\n\t}\n\n\tfmt.Printf(\"\\nexpected %v, reading at:\\n\", mWant)\n\tvar readerPCs [32]uintptr // TODO(mdempsky): Dynamically size?\n\tn := runtime.Callers(2, readerPCs[:])\n\tfor _, pc := range fmtFrames(readerPCs[:n]...) {\n\t\tfmt.Printf(\"\\t%s\\n\", pc)\n\t}\n\n\t// We already printed a stack trace for the reader, so now we can\n\t// simply exit. Printing a second one with panic or base.Fatalf\n\t// would just be noise.\n\tos.Exit(1)\n}\n\n// Bool decodes and returns a bool value from the element bitstream.\nfunc (r *Decoder) Bool() bool {\n\tr.Sync(SyncBool)\n\tx, err := r.Data.ReadByte()\n\tr.checkErr(err)\n\tassert(x < 2)\n\treturn x != 0\n}\n\n// Int64 decodes and returns an int64 value from the element bitstream.\nfunc (r *Decoder) Int64() int64 {\n\tr.Sync(SyncInt64)\n\treturn r.rawVarint()\n}\n\n// Uint64 decodes and returns a uint64 value from the element bitstream.\nfunc (r *Decoder) Uint64() uint64 {\n\tr.Sync(SyncUint64)\n\treturn r.rawUvarint()\n}\n\n// Len decodes and returns a non-negative int value from the element bitstream.\nfunc (r *Decoder) Len() int { x := r.Uint64(); v := int(x); assert(uint64(v) == x); return v }\n\n// Int decodes and returns an int value from the element bitstream.\nfunc (r *Decoder) Int() int { x := r.Int64(); v := int(x); assert(int64(v) == x); return v }\n\n// Uint decodes and returns a uint value from the element bitstream.\nfunc (r *Decoder) Uint() uint { x := r.Uint64(); v := uint(x); assert(uint64(v) == x); return v }\n\n// Code decodes a Code value from the element bitstream and returns\n// its ordinal value. It's the caller's responsibility to convert the\n// result to an appropriate Code type.\n//\n// TODO(mdempsky): Ideally this method would have signature \"Code[T\n// Code] T\" instead, but we don't allow generic methods and the\n// compiler can't depend on generics yet anyway.\nfunc (r *Decoder) Code(mark SyncMarker) int {\n\tr.Sync(mark)\n\treturn r.Len()\n}\n\n// Reloc decodes a relocation of expected section k from the element\n// bitstream and returns an index to the referenced element.\nfunc (r *Decoder) Reloc(k RelocKind) Index {\n\tr.Sync(SyncUseReloc)\n\treturn r.rawReloc(k, r.Len())\n}\n\n// String decodes and returns a string value from the element\n// bitstream.\nfunc (r *Decoder) String() string {\n\tr.Sync(SyncString)\n\treturn r.common.StringIdx(r.Reloc(RelocString))\n}\n\n// Strings decodes and returns a variable-length slice of strings from\n// the element bitstream.\nfunc (r *Decoder) Strings() []string {\n\tres := make([]string, r.Len())\n\tfor i := range res {\n\t\tres[i] = r.String()\n\t}\n\treturn res\n}\n\n// Value decodes and returns a constant.Value from the element\n// bitstream.\nfunc (r *Decoder) Value() constant.Value {\n\tr.Sync(SyncValue)\n\tisComplex := r.Bool()\n\tval := r.scalar()\n\tif isComplex {\n\t\tval = constant.BinaryOp(val, token.ADD, constant.MakeImag(r.scalar()))\n\t}\n\treturn val\n}\n\nfunc (r *Decoder) scalar() constant.Value {\n\tswitch tag := CodeVal(r.Code(SyncVal)); tag {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"unexpected scalar tag: %v\", tag))\n\n\tcase ValBool:\n\t\treturn constant.MakeBool(r.Bool())\n\tcase ValString:\n\t\treturn constant.MakeString(r.String())\n\tcase ValInt64:\n\t\treturn constant.MakeInt64(r.Int64())\n\tcase ValBigInt:\n\t\treturn constant.Make(r.bigInt())\n\tcase ValBigRat:\n\t\tnum := r.bigInt()\n\t\tdenom := r.bigInt()\n\t\treturn constant.Make(new(big.Rat).SetFrac(num, denom))\n\tcase ValBigFloat:\n\t\treturn constant.Make(r.bigFloat())\n\t}\n}\n\nfunc (r *Decoder) bigInt() *big.Int {\n\tv := new(big.Int).SetBytes([]byte(r.String()))\n\tif r.Bool() {\n\t\tv.Neg(v)\n\t}\n\treturn v\n}\n\nfunc (r *Decoder) bigFloat() *big.Float {\n\tv := new(big.Float).SetPrec(512)\n\tassert(v.UnmarshalText([]byte(r.String())) == nil)\n\treturn v\n}\n\n// @@@ Helpers\n\n// TODO(mdempsky): These should probably be removed. I think they're a\n// smell that the export data format is not yet quite right.\n\n// PeekPkgPath returns the package path for the specified package\n// index.\nfunc (pr *PkgDecoder) PeekPkgPath(idx Index) string {\n\tvar path string\n\t{\n\t\tr := pr.TempDecoder(RelocPkg, idx, SyncPkgDef)\n\t\tpath = r.String()\n\t\tpr.RetireDecoder(&r)\n\t}\n\tif path == \"\" {\n\t\tpath = pr.pkgPath\n\t}\n\treturn path\n}\n\n// PeekObj returns the package path, object name, and CodeObj for the\n// specified object index.\nfunc (pr *PkgDecoder) PeekObj(idx Index) (string, string, CodeObj) {\n\tvar ridx Index\n\tvar name string\n\tvar rcode int\n\t{\n\t\tr := pr.TempDecoder(RelocName, idx, SyncObject1)\n\t\tr.Sync(SyncSym)\n\t\tr.Sync(SyncPkg)\n\t\tridx = r.Reloc(RelocPkg)\n\t\tname = r.String()\n\t\trcode = r.Code(SyncCodeObj)\n\t\tpr.RetireDecoder(&r)\n\t}\n\n\tpath := pr.PeekPkgPath(ridx)\n\tassert(name != \"\")\n\n\ttag := CodeObj(rcode)\n\n\treturn path, name, tag\n}\n\n// Version reports the version of the bitstream.\nfunc (w *Decoder) Version() Version { return w.common.version }\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/pkgbits/doc.go",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package pkgbits implements low-level coding abstractions for\n// Unified IR's export data format.\n//\n// At a low-level, a package is a collection of bitstream elements.\n// Each element has a \"kind\" and a dense, non-negative index.\n// Elements can be randomly accessed given their kind and index.\n//\n// Individual elements are sequences of variable-length values (e.g.,\n// integers, booleans, strings, go/constant values, cross-references\n// to other elements). Package pkgbits provides APIs for encoding and\n// decoding these low-level values, but the details of mapping\n// higher-level Go constructs into elements is left to higher-level\n// abstractions.\n//\n// Elements may cross-reference each other with \"relocations.\" For\n// example, an element representing a pointer type has a relocation\n// referring to the element type.\n//\n// Go constructs may be composed as a constellation of multiple\n// elements. For example, a declared function may have one element to\n// describe the object (e.g., its name, type, position), and a\n// separate element to describe its function body. This allows readers\n// some flexibility in efficiently seeking or re-reading data (e.g.,\n// inlining requires re-reading the function body for each inlined\n// call, without needing to re-read the object-level details).\n//\n// This is a copy of internal/pkgbits in the Go implementation.\npackage pkgbits\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/pkgbits/encoder.go",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage pkgbits\n\nimport (\n\t\"bytes\"\n\t\"crypto/md5\"\n\t\"encoding/binary\"\n\t\"go/constant\"\n\t\"io\"\n\t\"math/big\"\n\t\"runtime\"\n\t\"strings\"\n)\n\n// A PkgEncoder provides methods for encoding a package's Unified IR\n// export data.\ntype PkgEncoder struct {\n\t// version of the bitstream.\n\tversion Version\n\n\t// elems holds the bitstream for previously encoded elements.\n\telems [numRelocs][]string\n\n\t// stringsIdx maps previously encoded strings to their index within\n\t// the RelocString section, to allow deduplication. That is,\n\t// elems[RelocString][stringsIdx[s]] == s (if present).\n\tstringsIdx map[string]Index\n\n\t// syncFrames is the number of frames to write at each sync\n\t// marker. A negative value means sync markers are omitted.\n\tsyncFrames int\n}\n\n// SyncMarkers reports whether pw uses sync markers.\nfunc (pw *PkgEncoder) SyncMarkers() bool { return pw.syncFrames >= 0 }\n\n// NewPkgEncoder returns an initialized PkgEncoder.\n//\n// syncFrames is the number of caller frames that should be serialized\n// at Sync points. Serializing additional frames results in larger\n// export data files, but can help diagnosing desync errors in\n// higher-level Unified IR reader/writer code. If syncFrames is\n// negative, then sync markers are omitted entirely.\nfunc NewPkgEncoder(version Version, syncFrames int) PkgEncoder {\n\treturn PkgEncoder{\n\t\tversion:    version,\n\t\tstringsIdx: make(map[string]Index),\n\t\tsyncFrames: syncFrames,\n\t}\n}\n\n// DumpTo writes the package's encoded data to out0 and returns the\n// package fingerprint.\nfunc (pw *PkgEncoder) DumpTo(out0 io.Writer) (fingerprint [8]byte) {\n\th := md5.New()\n\tout := io.MultiWriter(out0, h)\n\n\twriteUint32 := func(x uint32) {\n\t\tassert(binary.Write(out, binary.LittleEndian, x) == nil)\n\t}\n\n\twriteUint32(uint32(pw.version))\n\n\tif pw.version.Has(Flags) {\n\t\tvar flags uint32\n\t\tif pw.SyncMarkers() {\n\t\t\tflags |= flagSyncMarkers\n\t\t}\n\t\twriteUint32(flags)\n\t}\n\n\t// Write elemEndsEnds.\n\tvar sum uint32\n\tfor _, elems := range &pw.elems {\n\t\tsum += uint32(len(elems))\n\t\twriteUint32(sum)\n\t}\n\n\t// Write elemEnds.\n\tsum = 0\n\tfor _, elems := range &pw.elems {\n\t\tfor _, elem := range elems {\n\t\t\tsum += uint32(len(elem))\n\t\t\twriteUint32(sum)\n\t\t}\n\t}\n\n\t// Write elemData.\n\tfor _, elems := range &pw.elems {\n\t\tfor _, elem := range elems {\n\t\t\t_, err := io.WriteString(out, elem)\n\t\t\tassert(err == nil)\n\t\t}\n\t}\n\n\t// Write fingerprint.\n\tcopy(fingerprint[:], h.Sum(nil))\n\t_, err := out0.Write(fingerprint[:])\n\tassert(err == nil)\n\n\treturn\n}\n\n// StringIdx adds a string value to the strings section, if not\n// already present, and returns its index.\nfunc (pw *PkgEncoder) StringIdx(s string) Index {\n\tif idx, ok := pw.stringsIdx[s]; ok {\n\t\tassert(pw.elems[RelocString][idx] == s)\n\t\treturn idx\n\t}\n\n\tidx := Index(len(pw.elems[RelocString]))\n\tpw.elems[RelocString] = append(pw.elems[RelocString], s)\n\tpw.stringsIdx[s] = idx\n\treturn idx\n}\n\n// NewEncoder returns an Encoder for a new element within the given\n// section, and encodes the given SyncMarker as the start of the\n// element bitstream.\nfunc (pw *PkgEncoder) NewEncoder(k RelocKind, marker SyncMarker) Encoder {\n\te := pw.NewEncoderRaw(k)\n\te.Sync(marker)\n\treturn e\n}\n\n// NewEncoderRaw returns an Encoder for a new element within the given\n// section.\n//\n// Most callers should use NewEncoder instead.\nfunc (pw *PkgEncoder) NewEncoderRaw(k RelocKind) Encoder {\n\tidx := Index(len(pw.elems[k]))\n\tpw.elems[k] = append(pw.elems[k], \"\") // placeholder\n\n\treturn Encoder{\n\t\tp:   pw,\n\t\tk:   k,\n\t\tIdx: idx,\n\t}\n}\n\n// An Encoder provides methods for encoding an individual element's\n// bitstream data.\ntype Encoder struct {\n\tp *PkgEncoder\n\n\tRelocs   []RelocEnt\n\tRelocMap map[RelocEnt]uint32\n\tData     bytes.Buffer // accumulated element bitstream data\n\n\tencodingRelocHeader bool\n\n\tk   RelocKind\n\tIdx Index // index within relocation section\n}\n\n// Flush finalizes the element's bitstream and returns its Index.\nfunc (w *Encoder) Flush() Index {\n\tvar sb strings.Builder\n\n\t// Backup the data so we write the relocations at the front.\n\tvar tmp bytes.Buffer\n\tio.Copy(&tmp, &w.Data)\n\n\t// TODO(mdempsky): Consider writing these out separately so they're\n\t// easier to strip, along with function bodies, so that we can prune\n\t// down to just the data that's relevant to go/types.\n\tif w.encodingRelocHeader {\n\t\tpanic(\"encodingRelocHeader already true; recursive flush?\")\n\t}\n\tw.encodingRelocHeader = true\n\tw.Sync(SyncRelocs)\n\tw.Len(len(w.Relocs))\n\tfor _, rEnt := range w.Relocs {\n\t\tw.Sync(SyncReloc)\n\t\tw.Len(int(rEnt.Kind))\n\t\tw.Len(int(rEnt.Idx))\n\t}\n\n\tio.Copy(&sb, &w.Data)\n\tio.Copy(&sb, &tmp)\n\tw.p.elems[w.k][w.Idx] = sb.String()\n\n\treturn w.Idx\n}\n\nfunc (w *Encoder) checkErr(err error) {\n\tif err != nil {\n\t\tpanicf(\"unexpected encoding error: %v\", err)\n\t}\n}\n\nfunc (w *Encoder) rawUvarint(x uint64) {\n\tvar buf [binary.MaxVarintLen64]byte\n\tn := binary.PutUvarint(buf[:], x)\n\t_, err := w.Data.Write(buf[:n])\n\tw.checkErr(err)\n}\n\nfunc (w *Encoder) rawVarint(x int64) {\n\t// Zig-zag encode.\n\tux := uint64(x) << 1\n\tif x < 0 {\n\t\tux = ^ux\n\t}\n\n\tw.rawUvarint(ux)\n}\n\nfunc (w *Encoder) rawReloc(r RelocKind, idx Index) int {\n\te := RelocEnt{r, idx}\n\tif w.RelocMap != nil {\n\t\tif i, ok := w.RelocMap[e]; ok {\n\t\t\treturn int(i)\n\t\t}\n\t} else {\n\t\tw.RelocMap = make(map[RelocEnt]uint32)\n\t}\n\n\ti := len(w.Relocs)\n\tw.RelocMap[e] = uint32(i)\n\tw.Relocs = append(w.Relocs, e)\n\treturn i\n}\n\nfunc (w *Encoder) Sync(m SyncMarker) {\n\tif !w.p.SyncMarkers() {\n\t\treturn\n\t}\n\n\t// Writing out stack frame string references requires working\n\t// relocations, but writing out the relocations themselves involves\n\t// sync markers. To prevent infinite recursion, we simply trim the\n\t// stack frame for sync markers within the relocation header.\n\tvar frames []string\n\tif !w.encodingRelocHeader && w.p.syncFrames > 0 {\n\t\tpcs := make([]uintptr, w.p.syncFrames)\n\t\tn := runtime.Callers(2, pcs)\n\t\tframes = fmtFrames(pcs[:n]...)\n\t}\n\n\t// TODO(mdempsky): Save space by writing out stack frames as a\n\t// linked list so we can share common stack frames.\n\tw.rawUvarint(uint64(m))\n\tw.rawUvarint(uint64(len(frames)))\n\tfor _, frame := range frames {\n\t\tw.rawUvarint(uint64(w.rawReloc(RelocString, w.p.StringIdx(frame))))\n\t}\n}\n\n// Bool encodes and writes a bool value into the element bitstream,\n// and then returns the bool value.\n//\n// For simple, 2-alternative encodings, the idiomatic way to call Bool\n// is something like:\n//\n//\tif w.Bool(x != 0) {\n//\t\t// alternative #1\n//\t} else {\n//\t\t// alternative #2\n//\t}\n//\n// For multi-alternative encodings, use Code instead.\nfunc (w *Encoder) Bool(b bool) bool {\n\tw.Sync(SyncBool)\n\tvar x byte\n\tif b {\n\t\tx = 1\n\t}\n\terr := w.Data.WriteByte(x)\n\tw.checkErr(err)\n\treturn b\n}\n\n// Int64 encodes and writes an int64 value into the element bitstream.\nfunc (w *Encoder) Int64(x int64) {\n\tw.Sync(SyncInt64)\n\tw.rawVarint(x)\n}\n\n// Uint64 encodes and writes a uint64 value into the element bitstream.\nfunc (w *Encoder) Uint64(x uint64) {\n\tw.Sync(SyncUint64)\n\tw.rawUvarint(x)\n}\n\n// Len encodes and writes a non-negative int value into the element bitstream.\nfunc (w *Encoder) Len(x int) { assert(x >= 0); w.Uint64(uint64(x)) }\n\n// Int encodes and writes an int value into the element bitstream.\nfunc (w *Encoder) Int(x int) { w.Int64(int64(x)) }\n\n// Uint encodes and writes a uint value into the element bitstream.\nfunc (w *Encoder) Uint(x uint) { w.Uint64(uint64(x)) }\n\n// Reloc encodes and writes a relocation for the given (section,\n// index) pair into the element bitstream.\n//\n// Note: Only the index is formally written into the element\n// bitstream, so bitstream decoders must know from context which\n// section an encoded relocation refers to.\nfunc (w *Encoder) Reloc(r RelocKind, idx Index) {\n\tw.Sync(SyncUseReloc)\n\tw.Len(w.rawReloc(r, idx))\n}\n\n// Code encodes and writes a Code value into the element bitstream.\nfunc (w *Encoder) Code(c Code) {\n\tw.Sync(c.Marker())\n\tw.Len(c.Value())\n}\n\n// String encodes and writes a string value into the element\n// bitstream.\n//\n// Internally, strings are deduplicated by adding them to the strings\n// section (if not already present), and then writing a relocation\n// into the element bitstream.\nfunc (w *Encoder) String(s string) {\n\tw.StringRef(w.p.StringIdx(s))\n}\n\n// StringRef writes a reference to the given index, which must be a\n// previously encoded string value.\nfunc (w *Encoder) StringRef(idx Index) {\n\tw.Sync(SyncString)\n\tw.Reloc(RelocString, idx)\n}\n\n// Strings encodes and writes a variable-length slice of strings into\n// the element bitstream.\nfunc (w *Encoder) Strings(ss []string) {\n\tw.Len(len(ss))\n\tfor _, s := range ss {\n\t\tw.String(s)\n\t}\n}\n\n// Value encodes and writes a constant.Value into the element\n// bitstream.\nfunc (w *Encoder) Value(val constant.Value) {\n\tw.Sync(SyncValue)\n\tif w.Bool(val.Kind() == constant.Complex) {\n\t\tw.scalar(constant.Real(val))\n\t\tw.scalar(constant.Imag(val))\n\t} else {\n\t\tw.scalar(val)\n\t}\n}\n\nfunc (w *Encoder) scalar(val constant.Value) {\n\tswitch v := constant.Val(val).(type) {\n\tdefault:\n\t\tpanicf(\"unhandled %v (%v)\", val, val.Kind())\n\tcase bool:\n\t\tw.Code(ValBool)\n\t\tw.Bool(v)\n\tcase string:\n\t\tw.Code(ValString)\n\t\tw.String(v)\n\tcase int64:\n\t\tw.Code(ValInt64)\n\t\tw.Int64(v)\n\tcase *big.Int:\n\t\tw.Code(ValBigInt)\n\t\tw.bigInt(v)\n\tcase *big.Rat:\n\t\tw.Code(ValBigRat)\n\t\tw.bigInt(v.Num())\n\t\tw.bigInt(v.Denom())\n\tcase *big.Float:\n\t\tw.Code(ValBigFloat)\n\t\tw.bigFloat(v)\n\t}\n}\n\nfunc (w *Encoder) bigInt(v *big.Int) {\n\tb := v.Bytes()\n\tw.String(string(b)) // TODO: More efficient encoding.\n\tw.Bool(v.Sign() < 0)\n}\n\nfunc (w *Encoder) bigFloat(v *big.Float) {\n\tb := v.Append(nil, 'p', -1)\n\tw.String(string(b)) // TODO: More efficient encoding.\n}\n\n// Version reports the version of the bitstream.\nfunc (w *Encoder) Version() Version { return w.p.version }\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/pkgbits/flags.go",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage pkgbits\n\nconst (\n\tflagSyncMarkers = 1 << iota // file format contains sync markers\n)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/pkgbits/reloc.go",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage pkgbits\n\n// A RelocKind indicates a particular section within a unified IR export.\ntype RelocKind int32\n\n// An Index represents a bitstream element index within a particular\n// section.\ntype Index int32\n\n// A relocEnt (relocation entry) is an entry in an element's local\n// reference table.\n//\n// TODO(mdempsky): Rename this too.\ntype RelocEnt struct {\n\tKind RelocKind\n\tIdx  Index\n}\n\n// Reserved indices within the meta relocation section.\nconst (\n\tPublicRootIdx  Index = 0\n\tPrivateRootIdx Index = 1\n)\n\nconst (\n\tRelocString RelocKind = iota\n\tRelocMeta\n\tRelocPosBase\n\tRelocPkg\n\tRelocName\n\tRelocType\n\tRelocObj\n\tRelocObjExt\n\tRelocObjDict\n\tRelocBody\n\n\tnumRelocs = iota\n)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/pkgbits/support.go",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage pkgbits\n\nimport \"fmt\"\n\nfunc assert(b bool) {\n\tif !b {\n\t\tpanic(\"assertion failed\")\n\t}\n}\n\nfunc panicf(format string, args ...any) {\n\tpanic(fmt.Errorf(format, args...))\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/pkgbits/sync.go",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage pkgbits\n\nimport (\n\t\"fmt\"\n\t\"runtime\"\n\t\"strings\"\n)\n\n// fmtFrames formats a backtrace for reporting reader/writer desyncs.\nfunc fmtFrames(pcs ...uintptr) []string {\n\tres := make([]string, 0, len(pcs))\n\twalkFrames(pcs, func(file string, line int, name string, offset uintptr) {\n\t\t// Trim package from function name. It's just redundant noise.\n\t\tname = strings.TrimPrefix(name, \"cmd/compile/internal/noder.\")\n\n\t\tres = append(res, fmt.Sprintf(\"%s:%v: %s +0x%v\", file, line, name, offset))\n\t})\n\treturn res\n}\n\ntype frameVisitor func(file string, line int, name string, offset uintptr)\n\n// walkFrames calls visit for each call frame represented by pcs.\n//\n// pcs should be a slice of PCs, as returned by runtime.Callers.\nfunc walkFrames(pcs []uintptr, visit frameVisitor) {\n\tif len(pcs) == 0 {\n\t\treturn\n\t}\n\n\tframes := runtime.CallersFrames(pcs)\n\tfor {\n\t\tframe, more := frames.Next()\n\t\tvisit(frame.File, frame.Line, frame.Function, frame.PC-frame.Entry)\n\t\tif !more {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// SyncMarker is an enum type that represents markers that may be\n// written to export data to ensure the reader and writer stay\n// synchronized.\ntype SyncMarker int\n\n//go:generate stringer -type=SyncMarker -trimprefix=Sync\n\nconst (\n\t_ SyncMarker = iota\n\n\t// Public markers (known to go/types importers).\n\n\t// Low-level coding markers.\n\tSyncEOF\n\tSyncBool\n\tSyncInt64\n\tSyncUint64\n\tSyncString\n\tSyncValue\n\tSyncVal\n\tSyncRelocs\n\tSyncReloc\n\tSyncUseReloc\n\n\t// Higher-level object and type markers.\n\tSyncPublic\n\tSyncPos\n\tSyncPosBase\n\tSyncObject\n\tSyncObject1\n\tSyncPkg\n\tSyncPkgDef\n\tSyncMethod\n\tSyncType\n\tSyncTypeIdx\n\tSyncTypeParamNames\n\tSyncSignature\n\tSyncParams\n\tSyncParam\n\tSyncCodeObj\n\tSyncSym\n\tSyncLocalIdent\n\tSyncSelector\n\n\t// Private markers (only known to cmd/compile).\n\tSyncPrivate\n\n\tSyncFuncExt\n\tSyncVarExt\n\tSyncTypeExt\n\tSyncPragma\n\n\tSyncExprList\n\tSyncExprs\n\tSyncExpr\n\tSyncExprType\n\tSyncAssign\n\tSyncOp\n\tSyncFuncLit\n\tSyncCompLit\n\n\tSyncDecl\n\tSyncFuncBody\n\tSyncOpenScope\n\tSyncCloseScope\n\tSyncCloseAnotherScope\n\tSyncDeclNames\n\tSyncDeclName\n\n\tSyncStmts\n\tSyncBlockStmt\n\tSyncIfStmt\n\tSyncForStmt\n\tSyncSwitchStmt\n\tSyncRangeStmt\n\tSyncCaseClause\n\tSyncCommClause\n\tSyncSelectStmt\n\tSyncDecls\n\tSyncLabeledStmt\n\tSyncUseObjLocal\n\tSyncAddLocal\n\tSyncLinkname\n\tSyncStmt1\n\tSyncStmtsEnd\n\tSyncLabel\n\tSyncOptLabel\n\n\tSyncMultiExpr\n\tSyncRType\n\tSyncConvRTTI\n)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/pkgbits/syncmarker_string.go",
    "content": "// Code generated by \"stringer -type=SyncMarker -trimprefix=Sync\"; DO NOT EDIT.\n\npackage pkgbits\n\nimport \"strconv\"\n\nfunc _() {\n\t// An \"invalid array index\" compiler error signifies that the constant values have changed.\n\t// Re-run the stringer command to generate them again.\n\tvar x [1]struct{}\n\t_ = x[SyncEOF-1]\n\t_ = x[SyncBool-2]\n\t_ = x[SyncInt64-3]\n\t_ = x[SyncUint64-4]\n\t_ = x[SyncString-5]\n\t_ = x[SyncValue-6]\n\t_ = x[SyncVal-7]\n\t_ = x[SyncRelocs-8]\n\t_ = x[SyncReloc-9]\n\t_ = x[SyncUseReloc-10]\n\t_ = x[SyncPublic-11]\n\t_ = x[SyncPos-12]\n\t_ = x[SyncPosBase-13]\n\t_ = x[SyncObject-14]\n\t_ = x[SyncObject1-15]\n\t_ = x[SyncPkg-16]\n\t_ = x[SyncPkgDef-17]\n\t_ = x[SyncMethod-18]\n\t_ = x[SyncType-19]\n\t_ = x[SyncTypeIdx-20]\n\t_ = x[SyncTypeParamNames-21]\n\t_ = x[SyncSignature-22]\n\t_ = x[SyncParams-23]\n\t_ = x[SyncParam-24]\n\t_ = x[SyncCodeObj-25]\n\t_ = x[SyncSym-26]\n\t_ = x[SyncLocalIdent-27]\n\t_ = x[SyncSelector-28]\n\t_ = x[SyncPrivate-29]\n\t_ = x[SyncFuncExt-30]\n\t_ = x[SyncVarExt-31]\n\t_ = x[SyncTypeExt-32]\n\t_ = x[SyncPragma-33]\n\t_ = x[SyncExprList-34]\n\t_ = x[SyncExprs-35]\n\t_ = x[SyncExpr-36]\n\t_ = x[SyncExprType-37]\n\t_ = x[SyncAssign-38]\n\t_ = x[SyncOp-39]\n\t_ = x[SyncFuncLit-40]\n\t_ = x[SyncCompLit-41]\n\t_ = x[SyncDecl-42]\n\t_ = x[SyncFuncBody-43]\n\t_ = x[SyncOpenScope-44]\n\t_ = x[SyncCloseScope-45]\n\t_ = x[SyncCloseAnotherScope-46]\n\t_ = x[SyncDeclNames-47]\n\t_ = x[SyncDeclName-48]\n\t_ = x[SyncStmts-49]\n\t_ = x[SyncBlockStmt-50]\n\t_ = x[SyncIfStmt-51]\n\t_ = x[SyncForStmt-52]\n\t_ = x[SyncSwitchStmt-53]\n\t_ = x[SyncRangeStmt-54]\n\t_ = x[SyncCaseClause-55]\n\t_ = x[SyncCommClause-56]\n\t_ = x[SyncSelectStmt-57]\n\t_ = x[SyncDecls-58]\n\t_ = x[SyncLabeledStmt-59]\n\t_ = x[SyncUseObjLocal-60]\n\t_ = x[SyncAddLocal-61]\n\t_ = x[SyncLinkname-62]\n\t_ = x[SyncStmt1-63]\n\t_ = x[SyncStmtsEnd-64]\n\t_ = x[SyncLabel-65]\n\t_ = x[SyncOptLabel-66]\n\t_ = x[SyncMultiExpr-67]\n\t_ = x[SyncRType-68]\n\t_ = x[SyncConvRTTI-69]\n}\n\nconst _SyncMarker_name = \"EOFBoolInt64Uint64StringValueValRelocsRelocUseRelocPublicPosPosBaseObjectObject1PkgPkgDefMethodTypeTypeIdxTypeParamNamesSignatureParamsParamCodeObjSymLocalIdentSelectorPrivateFuncExtVarExtTypeExtPragmaExprListExprsExprExprTypeAssignOpFuncLitCompLitDeclFuncBodyOpenScopeCloseScopeCloseAnotherScopeDeclNamesDeclNameStmtsBlockStmtIfStmtForStmtSwitchStmtRangeStmtCaseClauseCommClauseSelectStmtDeclsLabeledStmtUseObjLocalAddLocalLinknameStmt1StmtsEndLabelOptLabelMultiExprRTypeConvRTTI\"\n\nvar _SyncMarker_index = [...]uint16{0, 3, 7, 12, 18, 24, 29, 32, 38, 43, 51, 57, 60, 67, 73, 80, 83, 89, 95, 99, 106, 120, 129, 135, 140, 147, 150, 160, 168, 175, 182, 188, 195, 201, 209, 214, 218, 226, 232, 234, 241, 248, 252, 260, 269, 279, 296, 305, 313, 318, 327, 333, 340, 350, 359, 369, 379, 389, 394, 405, 416, 424, 432, 437, 445, 450, 458, 467, 472, 480}\n\nfunc (i SyncMarker) String() string {\n\ti -= 1\n\tif i < 0 || i >= SyncMarker(len(_SyncMarker_index)-1) {\n\t\treturn \"SyncMarker(\" + strconv.FormatInt(int64(i+1), 10) + \")\"\n\t}\n\treturn _SyncMarker_name[_SyncMarker_index[i]:_SyncMarker_index[i+1]]\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/pkgbits/version.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage pkgbits\n\n// Version indicates a version of a unified IR bitstream.\n// Each Version indicates the addition, removal, or change of\n// new data in the bitstream.\n//\n// These are serialized to disk and the interpretation remains fixed.\ntype Version uint32\n\nconst (\n\t// V0: initial prototype.\n\t//\n\t// All data that is not assigned a Field is in version V0\n\t// and has not been deprecated.\n\tV0 Version = iota\n\n\t// V1: adds the Flags uint32 word\n\tV1\n\n\t// V2: removes unused legacy fields and supports type parameters for aliases.\n\t// - remove the legacy \"has init\" bool from the public root\n\t// - remove obj's \"derived func instance\" bool\n\t// - add a TypeParamNames field to ObjAlias\n\t// - remove derived info \"needed\" bool\n\tV2\n\n\tnumVersions = iota\n)\n\n// Field denotes a unit of data in the serialized unified IR bitstream.\n// It is conceptually a like field in a structure.\n//\n// We only really need Fields when the data may or may not be present\n// in a stream based on the Version of the bitstream.\n//\n// Unlike much of pkgbits, Fields are not serialized and\n// can change values as needed.\ntype Field int\n\nconst (\n\t// Flags in a uint32 in the header of a bitstream\n\t// that is used to indicate whether optional features are enabled.\n\tFlags Field = iota\n\n\t// Deprecated: HasInit was a bool indicating whether a package\n\t// has any init functions.\n\tHasInit\n\n\t// Deprecated: DerivedFuncInstance was a bool indicating\n\t// whether an object was a function instance.\n\tDerivedFuncInstance\n\n\t// ObjAlias has a list of TypeParamNames.\n\tAliasTypeParamNames\n\n\t// Deprecated: DerivedInfoNeeded was a bool indicating\n\t// whether a type was a derived type.\n\tDerivedInfoNeeded\n\n\tnumFields = iota\n)\n\n// introduced is the version a field was added.\nvar introduced = [numFields]Version{\n\tFlags:               V1,\n\tAliasTypeParamNames: V2,\n}\n\n// removed is the version a field was removed in or 0 for fields\n// that have not yet been deprecated.\n// (So removed[f]-1 is the last version it is included in.)\nvar removed = [numFields]Version{\n\tHasInit:             V2,\n\tDerivedFuncInstance: V2,\n\tDerivedInfoNeeded:   V2,\n}\n\n// Has reports whether field f is present in a bitstream at version v.\nfunc (v Version) Has(f Field) bool {\n\treturn introduced[f] <= v && (v < removed[f] || removed[f] == V0)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/stdlib/deps.go",
    "content": "// Copyright 2025 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate.go. DO NOT EDIT.\n\npackage stdlib\n\ntype pkginfo struct {\n\tname string\n\tdeps string // list of indices of dependencies, as varint-encoded deltas\n}\n\nvar deps = [...]pkginfo{\n\t{\"archive/tar\", \"\\x03q\\x03F=\\x01\\n\\x01$\\x01\\x01\\x02\\x05\\b\\x02\\x01\\x02\\x02\\r\"},\n\t{\"archive/zip\", \"\\x02\\x04g\\a\\x03\\x13\\x021=\\x01+\\x05\\x01\\x0f\\x03\\x02\\x0f\\x04\"},\n\t{\"bufio\", \"\\x03q\\x86\\x01D\\x15\"},\n\t{\"bytes\", \"t+[\\x03\\fH\\x02\\x02\"},\n\t{\"cmp\", \"\"},\n\t{\"compress/bzip2\", \"\\x02\\x02\\xf6\\x01A\"},\n\t{\"compress/flate\", \"\\x02r\\x03\\x83\\x01\\f\\x033\\x01\\x03\"},\n\t{\"compress/gzip\", \"\\x02\\x04g\\a\\x03\\x15nU\"},\n\t{\"compress/lzw\", \"\\x02r\\x03\\x83\\x01\"},\n\t{\"compress/zlib\", \"\\x02\\x04g\\a\\x03\\x13\\x01o\"},\n\t{\"container/heap\", \"\\xbc\\x02\"},\n\t{\"container/list\", \"\"},\n\t{\"container/ring\", \"\"},\n\t{\"context\", \"t\\\\p\\x01\\x0e\"},\n\t{\"crypto\", \"\\x8a\\x01pC\"},\n\t{\"crypto/aes\", \"\\x10\\v\\t\\x99\\x02\"},\n\t{\"crypto/cipher\", \"\\x03!\\x01\\x01 \\x12\\x1c,Z\"},\n\t{\"crypto/des\", \"\\x10\\x16 .,\\x9d\\x01\\x03\"},\n\t{\"crypto/dsa\", \"F\\x03+\\x86\\x01\\r\"},\n\t{\"crypto/ecdh\", \"\\x03\\v\\r\\x10\\x04\\x17\\x03\\x0f\\x1c\\x86\\x01\"},\n\t{\"crypto/ecdsa\", \"\\x0e\\x05\\x03\\x05\\x01\\x10\\b\\v\\x06\\x01\\x03\\x0e\\x01\\x1c\\x86\\x01\\r\\x05L\\x01\"},\n\t{\"crypto/ed25519\", \"\\x0e\\x1f\\x12\\a\\x03\\b\\a\\x1cI=C\"},\n\t{\"crypto/elliptic\", \"4@\\x86\\x01\\r9\"},\n\t{\"crypto/fips140\", \"#\\x05\\x95\\x01\\x98\\x01\"},\n\t{\"crypto/hkdf\", \"0\\x15\\x01.\\x16\"},\n\t{\"crypto/hmac\", \"\\x1b\\x16\\x14\\x01\\x122\"},\n\t{\"crypto/hpke\", \"\\x03\\v\\x02\\x03\\x04\\x01\\f\\x01\\x05\\x1f\\x05\\a\\x01\\x01\\x1d\\x03\\x13\\x16\\x9b\\x01\\x1c\"},\n\t{\"crypto/internal/boring\", \"\\x0e\\x02\\x0el\"},\n\t{\"crypto/internal/boring/bbig\", \"\\x1b\\xec\\x01N\"},\n\t{\"crypto/internal/boring/bcache\", \"\\xc1\\x02\\x14\"},\n\t{\"crypto/internal/boring/sig\", \"\"},\n\t{\"crypto/internal/constanttime\", \"\"},\n\t{\"crypto/internal/cryptotest\", \"\\x03\\r\\v\\b%\\x10\\x19\\x06\\x13\\x12 \\x04\\x06\\t\\x19\\x01\\x11\\x11\\x1b\\x01\\a\\x05\\b\\x03\\x05\\f\"},\n\t{\"crypto/internal/entropy\", \"K\"},\n\t{\"crypto/internal/entropy/v1.0.0\", \"D0\\x95\\x018\\x14\"},\n\t{\"crypto/internal/fips140\", \"C1\\xbf\\x01\\v\\x17\"},\n\t{\"crypto/internal/fips140/aes\", \"\\x03 \\x03\\x02\\x14\\x05\\x01\\x01\\x05,\\x95\\x014\"},\n\t{\"crypto/internal/fips140/aes/gcm\", \"#\\x01\\x02\\x02\\x02\\x12\\x05\\x01\\x06,\\x92\\x01\"},\n\t{\"crypto/internal/fips140/alias\", \"\\xd5\\x02\"},\n\t{\"crypto/internal/fips140/bigmod\", \"(\\x19\\x01\\x06,\\x95\\x01\"},\n\t{\"crypto/internal/fips140/check\", \"#\\x0e\\a\\t\\x02\\xb7\\x01[\"},\n\t{\"crypto/internal/fips140/check/checktest\", \"(\\x8b\\x02\\\"\"},\n\t{\"crypto/internal/fips140/drbg\", \"\\x03\\x1f\\x01\\x01\\x04\\x14\\x05\\n)\\x86\\x01\\x0f7\\x01\"},\n\t{\"crypto/internal/fips140/ecdh\", \"\\x03 \\x05\\x02\\n\\r3\\x86\\x01\\x0f7\"},\n\t{\"crypto/internal/fips140/ecdsa\", \"\\x03 \\x04\\x01\\x02\\a\\x03\\x06:\\x16pF\"},\n\t{\"crypto/internal/fips140/ed25519\", \"\\x03 \\x05\\x02\\x04\\f:\\xc9\\x01\\x03\"},\n\t{\"crypto/internal/fips140/edwards25519\", \"\\x1f\\t\\a\\x123\\x95\\x017\"},\n\t{\"crypto/internal/fips140/edwards25519/field\", \"(\\x14\\x053\\x95\\x01\"},\n\t{\"crypto/internal/fips140/hkdf\", \"\\x03 \\x05\\t\\a<\\x16\"},\n\t{\"crypto/internal/fips140/hmac\", \"\\x03 \\x15\\x01\\x01:\\x16\"},\n\t{\"crypto/internal/fips140/mldsa\", \"\\x03\\x1c\\x04\\x05\\x02\\x0e\\x01\\x03\\x053\\x95\\x017\"},\n\t{\"crypto/internal/fips140/mlkem\", \"\\x03 \\x05\\x02\\x0f\\x03\\x053\\xcc\\x01\"},\n\t{\"crypto/internal/fips140/nistec\", \"\\x1f\\t\\r\\f3\\x95\\x01*\\r\\x15\"},\n\t{\"crypto/internal/fips140/nistec/fiat\", \"(\\x148\\x95\\x01\"},\n\t{\"crypto/internal/fips140/pbkdf2\", \"\\x03 \\x05\\t\\a<\\x16\"},\n\t{\"crypto/internal/fips140/rsa\", \"\\x03\\x1c\\x04\\x04\\x01\\x02\\x0e\\x01\\x01\\x028\\x16pF\"},\n\t{\"crypto/internal/fips140/sha256\", \"\\x03 \\x1e\\x01\\x06,\\x16\\x7f\"},\n\t{\"crypto/internal/fips140/sha3\", \"\\x03 \\x19\\x05\\x012\\x95\\x01L\"},\n\t{\"crypto/internal/fips140/sha512\", \"\\x03 \\x1e\\x01\\x06,\\x16\\x7f\"},\n\t{\"crypto/internal/fips140/ssh\", \"(b\"},\n\t{\"crypto/internal/fips140/subtle\", \"\\x1f\\a\\x1b\\xc8\\x01\"},\n\t{\"crypto/internal/fips140/tls12\", \"\\x03 \\x05\\t\\a\\x02:\\x16\"},\n\t{\"crypto/internal/fips140/tls13\", \"\\x03 \\x05\\b\\b\\t3\\x16\"},\n\t{\"crypto/internal/fips140cache\", \"\\xb3\\x02\\r'\"},\n\t{\"crypto/internal/fips140deps\", \"\"},\n\t{\"crypto/internal/fips140deps/byteorder\", \"\\xa0\\x01\"},\n\t{\"crypto/internal/fips140deps/cpu\", \"\\xb5\\x01\\a\"},\n\t{\"crypto/internal/fips140deps/godebug\", \"\\xbd\\x01\"},\n\t{\"crypto/internal/fips140deps/time\", \"\\xcf\\x02\"},\n\t{\"crypto/internal/fips140hash\", \"9\\x1d4\\xcb\\x01\"},\n\t{\"crypto/internal/fips140only\", \"\\x17\\x13\\x0e\\x01\\x01Pp\"},\n\t{\"crypto/internal/fips140test\", \"\"},\n\t{\"crypto/internal/impl\", \"\\xbe\\x02\"},\n\t{\"crypto/internal/rand\", \"\\x1b\\x0f s=[\"},\n\t{\"crypto/internal/randutil\", \"\\xfa\\x01\\x12\"},\n\t{\"crypto/internal/sysrand\", \"tq! \\r\\r\\x01\\x01\\r\\x06\"},\n\t{\"crypto/internal/sysrand/internal/seccomp\", \"t\"},\n\t{\"crypto/md5\", \"\\x0e8.\\x16\\x16i\"},\n\t{\"crypto/mlkem\", \"\\x0e%\"},\n\t{\"crypto/mlkem/mlkemtest\", \"3\\x13\\b&\"},\n\t{\"crypto/pbkdf2\", \"6\\x0f\\x01.\\x16\"},\n\t{\"crypto/rand\", \"\\x1b\\x0f\\x1c\\x03+\\x86\\x01\\rN\"},\n\t{\"crypto/rc4\", \"& .\\xc9\\x01\"},\n\t{\"crypto/rsa\", \"\\x0e\\r\\x01\\v\\x10\\x0e\\x01\\x03\\b\\a\\x1c\\x03\\x133=\\f\\x01\"},\n\t{\"crypto/sha1\", \"\\x0e\\r+\\x02,\\x16\\x16\\x15T\"},\n\t{\"crypto/sha256\", \"\\x0e\\r\\x1dR\"},\n\t{\"crypto/sha3\", \"\\x0e+Q\\xcb\\x01\"},\n\t{\"crypto/sha512\", \"\\x0e\\r\\x1fP\"},\n\t{\"crypto/subtle\", \"\\x1f\\x1d\\x9f\\x01z\"},\n\t{\"crypto/tls\", \"\\x03\\b\\x02\\x01\\x01\\x01\\x01\\x02\\x01\\x01\\x01\\x02\\x01\\x01\\x01\\t\\x01\\x18\\x01\\x0f\\x01\\x03\\x01\\x01\\x01\\x01\\x02\\x01\\x02\\x01\\x17\\x02\\x03\\x13\\x16\\x15\\b=\\x16\\x16\\r\\b\\x01\\x01\\x01\\x02\\x01\\x0e\\x06\\x02\\x01\\x0f\"},\n\t{\"crypto/tls/internal/fips140tls\", \"\\x17\\xaa\\x02\"},\n\t{\"crypto/x509\", \"\\x03\\v\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x017\\x06\\x01\\x01\\x02\\x05\\x0e\\x06\\x02\\x02\\x03F\\x03:\\x01\\x02\\b\\x01\\x01\\x02\\a\\x10\\x05\\x01\\x06\\a\\b\\x02\\x01\\x02\\x0f\\x02\\x01\\x01\\x02\\x03\\x01\"},\n\t{\"crypto/x509/pkix\", \"j\\x06\\a\\x90\\x01H\"},\n\t{\"database/sql\", \"\\x03\\nQ\\x16\\x03\\x83\\x01\\v\\a\\\"\\x05\\b\\x02\\x03\\x01\\x0e\\x02\\x02\\x02\"},\n\t{\"database/sql/driver\", \"\\rg\\x03\\xb7\\x01\\x0f\\x12\"},\n\t{\"debug/buildinfo\", \"\\x03^\\x02\\x01\\x01\\b\\a\\x03g\\x1a\\x02\\x01+\\x0f \"},\n\t{\"debug/dwarf\", \"\\x03j\\a\\x03\\x83\\x011\\x11\\x01\\x01\"},\n\t{\"debug/elf\", \"\\x03\\x06W\\r\\a\\x03g\\x1b\\x01\\f \\x17\\x01\\x17\"},\n\t{\"debug/gosym\", \"\\x03j\\n$\\xa1\\x01\\x01\\x01\\x02\"},\n\t{\"debug/macho\", \"\\x03\\x06W\\r\\ng\\x1c,\\x17\\x01\"},\n\t{\"debug/pe\", \"\\x03\\x06W\\r\\a\\x03g\\x1c,\\x17\\x01\\x17\"},\n\t{\"debug/plan9obj\", \"m\\a\\x03g\\x1c,\"},\n\t{\"embed\", \"t+B\\x19\\x01T\"},\n\t{\"embed/internal/embedtest\", \"\"},\n\t{\"encoding\", \"\"},\n\t{\"encoding/ascii85\", \"\\xfa\\x01C\"},\n\t{\"encoding/asn1\", \"\\x03q\\x03g(\\x01'\\r\\x02\\x01\\x11\\x03\\x01\"},\n\t{\"encoding/base32\", \"\\xfa\\x01A\\x02\"},\n\t{\"encoding/base64\", \"\\xa0\\x01ZA\\x02\"},\n\t{\"encoding/binary\", \"t\\x86\\x01\\f(\\r\\x05\"},\n\t{\"encoding/csv\", \"\\x02\\x01q\\x03\\x83\\x01D\\x13\\x02\"},\n\t{\"encoding/gob\", \"\\x02f\\x05\\a\\x03g\\x1c\\v\\x01\\x03\\x1d\\b\\x12\\x01\\x10\\x02\"},\n\t{\"encoding/hex\", \"t\\x03\\x83\\x01A\\x03\"},\n\t{\"encoding/json\", \"\\x03\\x01d\\x04\\b\\x03\\x83\\x01\\f(\\r\\x02\\x01\\x02\\x11\\x01\\x01\\x02\"},\n\t{\"encoding/pem\", \"\\x03i\\b\\x86\\x01A\\x03\"},\n\t{\"encoding/xml\", \"\\x02\\x01e\\f\\x03\\x83\\x014\\x05\\n\\x01\\x02\\x11\\x02\"},\n\t{\"errors\", \"\\xd0\\x01\\x85\\x01\"},\n\t{\"expvar\", \"qLA\\b\\v\\x15\\r\\b\\x02\\x03\\x01\\x12\"},\n\t{\"flag\", \"h\\f\\x03\\x83\\x01,\\b\\x05\\b\\x02\\x01\\x11\"},\n\t{\"fmt\", \"tF'\\x19\\f \\b\\r\\x02\\x03\\x13\"},\n\t{\"go/ast\", \"\\x03\\x01s\\x0f\\x01s\\x03)\\b\\r\\x02\\x01\\x13\\x02\"},\n\t{\"go/build\", \"\\x02\\x01q\\x03\\x01\\x02\\x02\\b\\x02\\x01\\x17\\x1f\\x04\\x02\\b\\x1c\\x13\\x01+\\x01\\x04\\x01\\a\\b\\x02\\x01\\x13\\x02\\x02\"},\n\t{\"go/build/constraint\", \"t\\xc9\\x01\\x01\\x13\\x02\"},\n\t{\"go/constant\", \"w\\x10\\x7f\\x01\\x024\\x01\\x02\\x13\"},\n\t{\"go/doc\", \"\\x04s\\x01\\x05\\n=61\\x10\\x02\\x01\\x13\\x02\"},\n\t{\"go/doc/comment\", \"\\x03t\\xc4\\x01\\x01\\x01\\x01\\x13\\x02\"},\n\t{\"go/format\", \"\\x03t\\x01\\f\\x01\\x02sD\"},\n\t{\"go/importer\", \"y\\a\\x01\\x02\\x04\\x01r9\"},\n\t{\"go/internal/gccgoimporter\", \"\\x02\\x01^\\x13\\x03\\x04\\f\\x01p\\x02,\\x01\\x05\\x11\\x01\\r\\b\"},\n\t{\"go/internal/gcimporter\", \"\\x02u\\x10\\x010\\x05\\r0,\\x15\\x03\\x02\"},\n\t{\"go/internal/scannerhooks\", \"\\x87\\x01\"},\n\t{\"go/internal/srcimporter\", \"w\\x01\\x01\\v\\x03\\x01r,\\x01\\x05\\x12\\x02\\x15\"},\n\t{\"go/parser\", \"\\x03q\\x03\\x01\\x02\\b\\x04\\x01s\\x01+\\x06\\x12\"},\n\t{\"go/printer\", \"w\\x01\\x02\\x03\\ns\\f \\x15\\x02\\x01\\x02\\f\\x05\\x02\"},\n\t{\"go/scanner\", \"\\x03t\\v\\x05s2\\x10\\x01\\x14\\x02\"},\n\t{\"go/token\", \"\\x04s\\x86\\x01>\\x02\\x03\\x01\\x10\\x02\"},\n\t{\"go/types\", \"\\x03\\x01\\x06j\\x03\\x01\\x03\\t\\x03\\x024\\x063\\x04\\x03\\t \\x06\\a\\b\\x01\\x01\\x01\\x02\\x01\\x10\\x02\\x02\"},\n\t{\"go/version\", \"\\xc2\\x01|\"},\n\t{\"hash\", \"\\xfa\\x01\"},\n\t{\"hash/adler32\", \"t\\x16\\x16\"},\n\t{\"hash/crc32\", \"t\\x16\\x16\\x15\\x8b\\x01\\x01\\x14\"},\n\t{\"hash/crc64\", \"t\\x16\\x16\\xa0\\x01\"},\n\t{\"hash/fnv\", \"t\\x16\\x16i\"},\n\t{\"hash/maphash\", \"\\x8a\\x01\\x11<~\"},\n\t{\"html\", \"\\xbe\\x02\\x02\\x13\"},\n\t{\"html/template\", \"\\x03n\\x06\\x19-=\\x01\\n!\\x05\\x01\\x02\\x03\\f\\x01\\x02\\r\\x01\\x03\\x02\"},\n\t{\"image\", \"\\x02r\\x1fg\\x0f4\\x03\\x01\"},\n\t{\"image/color\", \"\"},\n\t{\"image/color/palette\", \"\\x93\\x01\"},\n\t{\"image/draw\", \"\\x92\\x01\\x01\\x04\"},\n\t{\"image/gif\", \"\\x02\\x01\\x05l\\x03\\x1b\\x01\\x01\\x01\\vZ\\x0f\"},\n\t{\"image/internal/imageutil\", \"\\x92\\x01\"},\n\t{\"image/jpeg\", \"\\x02r\\x1e\\x01\\x04c\"},\n\t{\"image/png\", \"\\x02\\ad\\n\\x13\\x02\\x06\\x01gC\"},\n\t{\"index/suffixarray\", \"\\x03j\\a\\x86\\x01\\f+\\n\\x01\"},\n\t{\"internal/abi\", \"\\xbc\\x01\\x99\\x01\"},\n\t{\"internal/asan\", \"\\xd5\\x02\"},\n\t{\"internal/bisect\", \"\\xb3\\x02\\r\\x01\"},\n\t{\"internal/buildcfg\", \"wHg\\x06\\x02\\x05\\n\\x01\"},\n\t{\"internal/bytealg\", \"\\xb5\\x01\\xa0\\x01\"},\n\t{\"internal/byteorder\", \"\"},\n\t{\"internal/cfg\", \"\"},\n\t{\"internal/cgrouptest\", \"w[T\\x06\\x0f\\x02\\x01\\x04\\x01\"},\n\t{\"internal/chacha8rand\", \"\\xa0\\x01\\x15\\a\\x99\\x01\"},\n\t{\"internal/copyright\", \"\"},\n\t{\"internal/coverage\", \"\"},\n\t{\"internal/coverage/calloc\", \"\"},\n\t{\"internal/coverage/cfile\", \"q\\x06\\x17\\x17\\x01\\x02\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\\"\\x02',\\x06\\a\\n\\x01\\x03\\x0e\\x06\"},\n\t{\"internal/coverage/cformat\", \"\\x04s.\\x04Q\\v6\\x01\\x02\\x0e\"},\n\t{\"internal/coverage/cmerge\", \"w.a\"},\n\t{\"internal/coverage/decodecounter\", \"m\\n.\\v\\x02H,\\x17\\x18\"},\n\t{\"internal/coverage/decodemeta\", \"\\x02k\\n\\x17\\x17\\v\\x02H,\"},\n\t{\"internal/coverage/encodecounter\", \"\\x02k\\n.\\f\\x01\\x02F\\v!\\x15\"},\n\t{\"internal/coverage/encodemeta\", \"\\x02\\x01j\\n\\x13\\x04\\x17\\r\\x02F,/\"},\n\t{\"internal/coverage/pods\", \"\\x04s.\\x81\\x01\\x06\\x05\\n\\x02\\x01\"},\n\t{\"internal/coverage/rtcov\", \"\\xd5\\x02\"},\n\t{\"internal/coverage/slicereader\", \"m\\n\\x83\\x01[\"},\n\t{\"internal/coverage/slicewriter\", \"w\\x83\\x01\"},\n\t{\"internal/coverage/stringtab\", \"w9\\x04F\"},\n\t{\"internal/coverage/test\", \"\"},\n\t{\"internal/coverage/uleb128\", \"\"},\n\t{\"internal/cpu\", \"\\xd5\\x02\"},\n\t{\"internal/dag\", \"\\x04s\\xc4\\x01\\x03\"},\n\t{\"internal/diff\", \"\\x03t\\xc5\\x01\\x02\"},\n\t{\"internal/exportdata\", \"\\x02\\x01q\\x03\\x02e\\x1c,\\x01\\x05\\x11\\x01\\x02\"},\n\t{\"internal/filepathlite\", \"t+B\\x1a@\"},\n\t{\"internal/fmtsort\", \"\\x04\\xaa\\x02\\r\"},\n\t{\"internal/fuzz\", \"\\x03\\nH\\x18\\x04\\x03\\x03\\x01\\f\\x036=\\f\\x03\\x1d\\x01\\x05\\x02\\x05\\n\\x01\\x02\\x01\\x01\\r\\x04\\x02\"},\n\t{\"internal/goarch\", \"\"},\n\t{\"internal/godebug\", \"\\x9d\\x01!\\x82\\x01\\x01\\x14\"},\n\t{\"internal/godebugs\", \"\"},\n\t{\"internal/goexperiment\", \"\"},\n\t{\"internal/goos\", \"\"},\n\t{\"internal/goroot\", \"\\xa6\\x02\\x01\\x05\\x12\\x02\"},\n\t{\"internal/gover\", \"\\x04\"},\n\t{\"internal/goversion\", \"\"},\n\t{\"internal/lazyregexp\", \"\\xa6\\x02\\v\\r\\x02\"},\n\t{\"internal/lazytemplate\", \"\\xfa\\x01,\\x18\\x02\\r\"},\n\t{\"internal/msan\", \"\\xd5\\x02\"},\n\t{\"internal/nettrace\", \"\"},\n\t{\"internal/obscuretestdata\", \"l\\x8e\\x01,\"},\n\t{\"internal/oserror\", \"t\"},\n\t{\"internal/pkgbits\", \"\\x03R\\x18\\a\\x03\\x04\\fs\\r\\x1f\\r\\n\\x01\"},\n\t{\"internal/platform\", \"\"},\n\t{\"internal/poll\", \"tl\\x05\\x159\\r\\x01\\x01\\r\\x06\"},\n\t{\"internal/profile\", \"\\x03\\x04m\\x03\\x83\\x017\\n\\x01\\x01\\x01\\x11\"},\n\t{\"internal/profilerecord\", \"\"},\n\t{\"internal/race\", \"\\x9b\\x01\\xba\\x01\"},\n\t{\"internal/reflectlite\", \"\\x9b\\x01!;<\\\"\"},\n\t{\"internal/runtime/atomic\", \"\\xbc\\x01\\x99\\x01\"},\n\t{\"internal/runtime/cgroup\", \"\\x9f\\x01=\\x04u\"},\n\t{\"internal/runtime/exithook\", \"\\xd1\\x01\\x84\\x01\"},\n\t{\"internal/runtime/gc\", \"\\xbc\\x01\"},\n\t{\"internal/runtime/gc/internal/gen\", \"\\nc\\n\\x18k\\x04\\v\\x1d\\b\\x10\\x02\"},\n\t{\"internal/runtime/gc/scan\", \"\\xb5\\x01\\a\\x18\\az\"},\n\t{\"internal/runtime/maps\", \"\\x9b\\x01\\x01 \\n\\t\\t\\x03z\"},\n\t{\"internal/runtime/math\", \"\\xbc\\x01\"},\n\t{\"internal/runtime/pprof/label\", \"\"},\n\t{\"internal/runtime/startlinetest\", \"\"},\n\t{\"internal/runtime/sys\", \"\\xbc\\x01\\x04\"},\n\t{\"internal/runtime/syscall/linux\", \"\\xbc\\x01\\x99\\x01\"},\n\t{\"internal/runtime/wasitest\", \"\"},\n\t{\"internal/saferio\", \"\\xfa\\x01[\"},\n\t{\"internal/singleflight\", \"\\xc0\\x02\"},\n\t{\"internal/strconv\", \"\\x89\\x02L\"},\n\t{\"internal/stringslite\", \"\\x9f\\x01\\xb6\\x01\"},\n\t{\"internal/sync\", \"\\x9b\\x01!\\x13r\\x14\"},\n\t{\"internal/synctest\", \"\\x9b\\x01\\xba\\x01\"},\n\t{\"internal/syscall/execenv\", \"\\xc2\\x02\"},\n\t{\"internal/syscall/unix\", \"\\xb3\\x02\\x0e\\x01\\x13\"},\n\t{\"internal/sysinfo\", \"\\x02\\x01\\xb2\\x01E,\\x18\\x02\"},\n\t{\"internal/syslist\", \"\"},\n\t{\"internal/testenv\", \"\\x03\\ng\\x02\\x01*\\x1b\\x0f0+\\x01\\x05\\a\\n\\x01\\x02\\x02\\x01\\f\"},\n\t{\"internal/testhash\", \"\\x03\\x87\\x01p\\x118\\f\"},\n\t{\"internal/testlog\", \"\\xc0\\x02\\x01\\x14\"},\n\t{\"internal/testpty\", \"t\\x03\\xaf\\x01\"},\n\t{\"internal/trace\", \"\\x02\\x01\\x01\\x06c\\a\\x03w\\x03\\x03\\x06\\x03\\t+\\n\\x01\\x01\\x01\\x11\\x06\"},\n\t{\"internal/trace/internal/testgen\", \"\\x03j\\nu\\x03\\x02\\x03\\x011\\v\\r\\x11\"},\n\t{\"internal/trace/internal/tracev1\", \"\\x03\\x01i\\a\\x03}\\x06\\f5\\x01\"},\n\t{\"internal/trace/raw\", \"\\x02k\\nz\\x03\\x06C\\x01\\x13\"},\n\t{\"internal/trace/testtrace\", \"\\x02\\x01q\\x03q\\x04\\x03\\x05\\x01\\x05,\\v\\x02\\b\\x02\\x01\\x05\"},\n\t{\"internal/trace/tracev2\", \"\"},\n\t{\"internal/trace/traceviewer\", \"\\x02d\\v\\x06\\x1a<\\x1f\\a\\a\\x04\\b\\v\\x15\\x01\\x05\\a\\n\\x01\\x02\\x0f\"},\n\t{\"internal/trace/traceviewer/format\", \"\"},\n\t{\"internal/trace/version\", \"wz\\t\"},\n\t{\"internal/txtar\", \"\\x03t\\xaf\\x01\\x18\"},\n\t{\"internal/types/errors\", \"\\xbd\\x02\"},\n\t{\"internal/unsafeheader\", \"\\xd5\\x02\"},\n\t{\"internal/xcoff\", \"`\\r\\a\\x03g\\x1c,\\x17\\x01\"},\n\t{\"internal/zstd\", \"m\\a\\x03\\x83\\x01\\x0f\"},\n\t{\"io\", \"t\\xcc\\x01\"},\n\t{\"io/fs\", \"t+*11\\x10\\x14\\x04\"},\n\t{\"io/ioutil\", \"\\xfa\\x01\\x01+\\x15\\x03\"},\n\t{\"iter\", \"\\xcf\\x01d\\\"\"},\n\t{\"log\", \"w\\x83\\x01\\x05'\\r\\r\\x01\\x0e\"},\n\t{\"log/internal\", \"\"},\n\t{\"log/slog\", \"\\x03\\n[\\t\\x03\\x03\\x83\\x01\\x04\\x01\\x02\\x02\\x03(\\x05\\b\\x02\\x01\\x02\\x01\\x0e\\x02\\x02\\x02\"},\n\t{\"log/slog/internal\", \"\"},\n\t{\"log/slog/internal/benchmarks\", \"\\rg\\x03\\x83\\x01\\x06\\x03:\\x12\"},\n\t{\"log/slog/internal/buffer\", \"\\xc0\\x02\"},\n\t{\"log/syslog\", \"t\\x03\\x87\\x01\\x12\\x16\\x18\\x02\\x0f\"},\n\t{\"maps\", \"\\xfd\\x01X\"},\n\t{\"math\", \"\\xb5\\x01TL\"},\n\t{\"math/big\", \"\\x03q\\x03)\\x15E\\f\\x03\\x020\\x02\\x01\\x02\\x15\"},\n\t{\"math/big/internal/asmgen\", \"\\x03\\x01s\\x92\\x012\\x03\"},\n\t{\"math/bits\", \"\\xd5\\x02\"},\n\t{\"math/cmplx\", \"\\x86\\x02\\x03\"},\n\t{\"math/rand\", \"\\xbd\\x01I:\\x01\\x14\"},\n\t{\"math/rand/v2\", \"t,\\x03c\\x03L\"},\n\t{\"mime\", \"\\x02\\x01i\\b\\x03\\x83\\x01\\v!\\x15\\x03\\x02\\x11\\x02\"},\n\t{\"mime/multipart\", \"\\x02\\x01N#\\x03F=\\v\\x01\\a\\x02\\x15\\x02\\x06\\x0f\\x02\\x01\\x17\"},\n\t{\"mime/quotedprintable\", \"\\x02\\x01t\\x83\\x01\"},\n\t{\"net\", \"\\x04\\tg+\\x1e\\n\\x05\\x13\\x01\\x01\\x04\\x15\\x01%\\x06\\r\\b\\x05\\x01\\x01\\r\\x06\\a\"},\n\t{\"net/http\", \"\\x02\\x01\\x03\\x01\\x04\\x02D\\b\\x13\\x01\\a\\x03F=\\x01\\x03\\a\\x01\\x03\\x02\\x02\\x01\\x02\\x06\\x02\\x01\\x01\\n\\x01\\x01\\x05\\x01\\x02\\x05\\b\\x01\\x01\\x01\\x02\\x01\\x0e\\x02\\x02\\x02\\b\\x01\\x01\\x01\"},\n\t{\"net/http/cgi\", \"\\x02W\\x1b\\x03\\x83\\x01\\x04\\a\\v\\x01\\x13\\x01\\x01\\x01\\x04\\x01\\x05\\x02\\b\\x02\\x01\\x11\\x0e\"},\n\t{\"net/http/cookiejar\", \"\\x04p\\x03\\x99\\x01\\x01\\b\\a\\x05\\x16\\x03\\x02\\x0f\\x04\"},\n\t{\"net/http/fcgi\", \"\\x02\\x01\\n`\\a\\x03\\x83\\x01\\x16\\x01\\x01\\x14\\x18\\x02\\x0f\"},\n\t{\"net/http/httptest\", \"\\x02\\x01\\nL\\x02\\x1b\\x01\\x83\\x01\\x04\\x12\\x01\\n\\t\\x02\\x17\\x01\\x02\\x0f\\x0e\"},\n\t{\"net/http/httptrace\", \"\\rLnI\\x14\\n!\"},\n\t{\"net/http/httputil\", \"\\x02\\x01\\ng\\x03\\x83\\x01\\x04\\x0f\\x03\\x01\\x05\\x02\\x01\\v\\x01\\x19\\x02\\x01\\x0e\\x0e\"},\n\t{\"net/http/internal\", \"\\x02\\x01q\\x03\\x83\\x01\"},\n\t{\"net/http/internal/ascii\", \"\\xbe\\x02\\x13\"},\n\t{\"net/http/internal/httpcommon\", \"\\rg\\x03\\x9f\\x01\\x0e\\x01\\x17\\x01\\x01\\x02\\x1d\\x02\"},\n\t{\"net/http/internal/testcert\", \"\\xbe\\x02\"},\n\t{\"net/http/pprof\", \"\\x02\\x01\\nj\\x19-\\x02\\x0e-\\x04\\x13\\x14\\x01\\r\\x04\\x03\\x01\\x02\\x01\\x11\"},\n\t{\"net/internal/cgotest\", \"\"},\n\t{\"net/internal/socktest\", \"w\\xc9\\x01\\x02\"},\n\t{\"net/mail\", \"\\x02r\\x03\\x83\\x01\\x04\\x0f\\x03\\x14\\x1a\\x02\\x0f\\x04\"},\n\t{\"net/netip\", \"\\x04p+\\x01f\\x034\\x17\"},\n\t{\"net/rpc\", \"\\x02m\\x05\\x03\\x10\\ni\\x04\\x12\\x01\\x1d\\r\\x03\\x02\"},\n\t{\"net/rpc/jsonrpc\", \"q\\x03\\x03\\x83\\x01\\x16\\x11\\x1f\"},\n\t{\"net/smtp\", \"\\x194\\f\\x13\\b\\x03\\x83\\x01\\x16\\x14\\x1a\"},\n\t{\"net/textproto\", \"\\x02\\x01q\\x03\\x83\\x01\\f\\n-\\x01\\x02\\x15\"},\n\t{\"net/url\", \"t\\x03Fc\\v\\x10\\x02\\x01\\x17\"},\n\t{\"os\", \"t+\\x01\\x19\\x03\\x10\\x14\\x01\\x03\\x01\\x05\\x10\\x018\\b\\x05\\x01\\x01\\r\\x06\"},\n\t{\"os/exec\", \"\\x03\\ngI'\\x01\\x15\\x01+\\x06\\a\\n\\x01\\x04\\r\"},\n\t{\"os/exec/internal/fdtest\", \"\\xc2\\x02\"},\n\t{\"os/signal\", \"\\r\\x99\\x02\\x15\\x05\\x02\"},\n\t{\"os/user\", \"\\x02\\x01q\\x03\\x83\\x01,\\r\\n\\x01\\x02\"},\n\t{\"path\", \"t+\\xb4\\x01\"},\n\t{\"path/filepath\", \"t+\\x1aB+\\r\\b\\x03\\x04\\x11\"},\n\t{\"plugin\", \"t\"},\n\t{\"reflect\", \"t'\\x04\\x1d\\x13\\b\\x04\\x05\\x17\\x06\\t-\\n\\x03\\x11\\x02\\x02\"},\n\t{\"reflect/internal/example1\", \"\"},\n\t{\"reflect/internal/example2\", \"\"},\n\t{\"regexp\", \"\\x03\\xf7\\x018\\t\\x02\\x01\\x02\\x11\\x02\"},\n\t{\"regexp/syntax\", \"\\xbb\\x02\\x01\\x01\\x01\\x02\\x11\\x02\"},\n\t{\"runtime\", \"\\x9b\\x01\\x04\\x01\\x03\\f\\x06\\a\\x02\\x01\\x01\\x0e\\x03\\x01\\x01\\x01\\x02\\x01\\x01\\x01\\x02\\x01\\x04\\x01\\x10\\x18L\"},\n\t{\"runtime/coverage\", \"\\xa7\\x01S\"},\n\t{\"runtime/debug\", \"wUZ\\r\\b\\x02\\x01\\x11\\x06\"},\n\t{\"runtime/metrics\", \"\\xbe\\x01H-\\\"\"},\n\t{\"runtime/pprof\", \"\\x02\\x01\\x01\\x03\\x06`\\a\\x03$$\\x0f\\v!\\f \\r\\b\\x01\\x01\\x01\\x02\\x02\\n\\x03\\x06\"},\n\t{\"runtime/race\", \"\\xb9\\x02\"},\n\t{\"runtime/race/internal/amd64v1\", \"\"},\n\t{\"runtime/trace\", \"\\rg\\x03z\\t9\\b\\x05\\x01\\x0e\\x06\"},\n\t{\"slices\", \"\\x04\\xf9\\x01\\fL\"},\n\t{\"sort\", \"\\xd0\\x0192\"},\n\t{\"strconv\", \"t+A\\x01r\"},\n\t{\"strings\", \"t'\\x04B\\x19\\x03\\f7\\x11\\x02\\x02\"},\n\t{\"structs\", \"\"},\n\t{\"sync\", \"\\xcf\\x01\\x13\\x01P\\x0e\\x14\"},\n\t{\"sync/atomic\", \"\\xd5\\x02\"},\n\t{\"syscall\", \"t(\\x03\\x01\\x1c\\n\\x03\\x06\\r\\x04S\\b\\x05\\x01\\x14\"},\n\t{\"testing\", \"\\x03\\ng\\x02\\x01X\\x17\\x14\\f\\x05\\x1b\\x06\\x02\\x05\\x02\\x05\\x01\\x02\\x01\\x02\\x01\\x0e\\x02\\x04\"},\n\t{\"testing/cryptotest\", \"QOZ\\x124\\x03\\x12\"},\n\t{\"testing/fstest\", \"t\\x03\\x83\\x01\\x01\\n&\\x10\\x03\\t\\b\"},\n\t{\"testing/internal/testdeps\", \"\\x02\\v\\xae\\x01/\\x10,\\x03\\x05\\x03\\x06\\a\\x02\\x0f\"},\n\t{\"testing/iotest\", \"\\x03q\\x03\\x83\\x01\\x04\"},\n\t{\"testing/quick\", \"v\\x01\\x8f\\x01\\x05#\\x10\\x11\"},\n\t{\"testing/slogtest\", \"\\rg\\x03\\x89\\x01.\\x05\\x10\\f\"},\n\t{\"testing/synctest\", \"\\xe3\\x01`\\x12\"},\n\t{\"text/scanner\", \"\\x03t\\x83\\x01,+\\x02\"},\n\t{\"text/tabwriter\", \"w\\x83\\x01Y\"},\n\t{\"text/template\", \"t\\x03C@\\x01\\n \\x01\\x05\\x01\\x02\\x05\\v\\x02\\x0e\\x03\\x02\"},\n\t{\"text/template/parse\", \"\\x03t\\xbc\\x01\\n\\x01\\x13\\x02\"},\n\t{\"time\", \"t+\\x1e$(*\\r\\x02\\x13\"},\n\t{\"time/tzdata\", \"t\\xce\\x01\\x13\"},\n\t{\"unicode\", \"\"},\n\t{\"unicode/utf16\", \"\"},\n\t{\"unicode/utf8\", \"\"},\n\t{\"unique\", \"\\x9b\\x01!%\\x01Q\\r\\x01\\x14\\x12\"},\n\t{\"unsafe\", \"\"},\n\t{\"vendor/golang.org/x/crypto/chacha20\", \"\\x10]\\a\\x95\\x01*'\"},\n\t{\"vendor/golang.org/x/crypto/chacha20poly1305\", \"\\x10\\aV\\a\\xe2\\x01\\x04\\x01\\a\"},\n\t{\"vendor/golang.org/x/crypto/cryptobyte\", \"j\\n\\x03\\x90\\x01'!\\n\"},\n\t{\"vendor/golang.org/x/crypto/cryptobyte/asn1\", \"\"},\n\t{\"vendor/golang.org/x/crypto/internal/alias\", \"\\xd5\\x02\"},\n\t{\"vendor/golang.org/x/crypto/internal/poly1305\", \"X\\x15\\x9c\\x01\"},\n\t{\"vendor/golang.org/x/net/dns/dnsmessage\", \"t\\xc7\\x01\"},\n\t{\"vendor/golang.org/x/net/http/httpguts\", \"\\x90\\x02\\x14\\x1a\\x15\\r\"},\n\t{\"vendor/golang.org/x/net/http/httpproxy\", \"t\\x03\\x99\\x01\\x10\\x05\\x01\\x18\\x15\\r\"},\n\t{\"vendor/golang.org/x/net/http2/hpack\", \"\\x03q\\x03\\x83\\x01F\"},\n\t{\"vendor/golang.org/x/net/idna\", \"w\\x8f\\x018\\x15\\x10\\x02\\x01\"},\n\t{\"vendor/golang.org/x/net/nettest\", \"\\x03j\\a\\x03\\x83\\x01\\x11\\x05\\x16\\x01\\f\\n\\x01\\x02\\x02\\x01\\f\"},\n\t{\"vendor/golang.org/x/sys/cpu\", \"\\xa6\\x02\\r\\n\\x01\\x17\"},\n\t{\"vendor/golang.org/x/text/secure/bidirule\", \"t\\xdf\\x01\\x11\\x01\"},\n\t{\"vendor/golang.org/x/text/transform\", \"\\x03q\\x86\\x01Y\"},\n\t{\"vendor/golang.org/x/text/unicode/bidi\", \"\\x03\\bl\\x87\\x01>\\x17\"},\n\t{\"vendor/golang.org/x/text/unicode/norm\", \"m\\n\\x83\\x01F\\x13\\x11\"},\n\t{\"weak\", \"\\x9b\\x01\\x98\\x01\\\"\"},\n}\n\n// bootstrap is the list of bootstrap packages extracted from cmd/dist.\nvar bootstrap = map[string]bool{\n\t\"cmp\":                                     true,\n\t\"cmd/asm\":                                 true,\n\t\"cmd/asm/internal/arch\":                   true,\n\t\"cmd/asm/internal/asm\":                    true,\n\t\"cmd/asm/internal/flags\":                  true,\n\t\"cmd/asm/internal/lex\":                    true,\n\t\"cmd/cgo\":                                 true,\n\t\"cmd/compile\":                             true,\n\t\"cmd/compile/internal/abi\":                true,\n\t\"cmd/compile/internal/abt\":                true,\n\t\"cmd/compile/internal/amd64\":              true,\n\t\"cmd/compile/internal/arm\":                true,\n\t\"cmd/compile/internal/arm64\":              true,\n\t\"cmd/compile/internal/base\":               true,\n\t\"cmd/compile/internal/bitvec\":             true,\n\t\"cmd/compile/internal/bloop\":              true,\n\t\"cmd/compile/internal/compare\":            true,\n\t\"cmd/compile/internal/coverage\":           true,\n\t\"cmd/compile/internal/deadlocals\":         true,\n\t\"cmd/compile/internal/devirtualize\":       true,\n\t\"cmd/compile/internal/dwarfgen\":           true,\n\t\"cmd/compile/internal/escape\":             true,\n\t\"cmd/compile/internal/gc\":                 true,\n\t\"cmd/compile/internal/importer\":           true,\n\t\"cmd/compile/internal/inline\":             true,\n\t\"cmd/compile/internal/inline/inlheur\":     true,\n\t\"cmd/compile/internal/inline/interleaved\": true,\n\t\"cmd/compile/internal/ir\":                 true,\n\t\"cmd/compile/internal/liveness\":           true,\n\t\"cmd/compile/internal/logopt\":             true,\n\t\"cmd/compile/internal/loong64\":            true,\n\t\"cmd/compile/internal/loopvar\":            true,\n\t\"cmd/compile/internal/mips\":               true,\n\t\"cmd/compile/internal/mips64\":             true,\n\t\"cmd/compile/internal/noder\":              true,\n\t\"cmd/compile/internal/objw\":               true,\n\t\"cmd/compile/internal/pgoir\":              true,\n\t\"cmd/compile/internal/pkginit\":            true,\n\t\"cmd/compile/internal/ppc64\":              true,\n\t\"cmd/compile/internal/rangefunc\":          true,\n\t\"cmd/compile/internal/reflectdata\":        true,\n\t\"cmd/compile/internal/riscv64\":            true,\n\t\"cmd/compile/internal/rttype\":             true,\n\t\"cmd/compile/internal/s390x\":              true,\n\t\"cmd/compile/internal/slice\":              true,\n\t\"cmd/compile/internal/ssa\":                true,\n\t\"cmd/compile/internal/ssagen\":             true,\n\t\"cmd/compile/internal/staticdata\":         true,\n\t\"cmd/compile/internal/staticinit\":         true,\n\t\"cmd/compile/internal/syntax\":             true,\n\t\"cmd/compile/internal/test\":               true,\n\t\"cmd/compile/internal/typebits\":           true,\n\t\"cmd/compile/internal/typecheck\":          true,\n\t\"cmd/compile/internal/types\":              true,\n\t\"cmd/compile/internal/types2\":             true,\n\t\"cmd/compile/internal/walk\":               true,\n\t\"cmd/compile/internal/wasm\":               true,\n\t\"cmd/compile/internal/x86\":                true,\n\t\"cmd/internal/archive\":                    true,\n\t\"cmd/internal/bio\":                        true,\n\t\"cmd/internal/codesign\":                   true,\n\t\"cmd/internal/dwarf\":                      true,\n\t\"cmd/internal/edit\":                       true,\n\t\"cmd/internal/gcprog\":                     true,\n\t\"cmd/internal/goobj\":                      true,\n\t\"cmd/internal/hash\":                       true,\n\t\"cmd/internal/macho\":                      true,\n\t\"cmd/internal/obj\":                        true,\n\t\"cmd/internal/obj/arm\":                    true,\n\t\"cmd/internal/obj/arm64\":                  true,\n\t\"cmd/internal/obj/loong64\":                true,\n\t\"cmd/internal/obj/mips\":                   true,\n\t\"cmd/internal/obj/ppc64\":                  true,\n\t\"cmd/internal/obj/riscv\":                  true,\n\t\"cmd/internal/obj/s390x\":                  true,\n\t\"cmd/internal/obj/wasm\":                   true,\n\t\"cmd/internal/obj/x86\":                    true,\n\t\"cmd/internal/objabi\":                     true,\n\t\"cmd/internal/par\":                        true,\n\t\"cmd/internal/pgo\":                        true,\n\t\"cmd/internal/pkgpath\":                    true,\n\t\"cmd/internal/quoted\":                     true,\n\t\"cmd/internal/src\":                        true,\n\t\"cmd/internal/sys\":                        true,\n\t\"cmd/internal/telemetry\":                  true,\n\t\"cmd/internal/telemetry/counter\":          true,\n\t\"cmd/link\":                                true,\n\t\"cmd/link/internal/amd64\":                 true,\n\t\"cmd/link/internal/arm\":                   true,\n\t\"cmd/link/internal/arm64\":                 true,\n\t\"cmd/link/internal/benchmark\":             true,\n\t\"cmd/link/internal/dwtest\":                true,\n\t\"cmd/link/internal/ld\":                    true,\n\t\"cmd/link/internal/loadelf\":               true,\n\t\"cmd/link/internal/loader\":                true,\n\t\"cmd/link/internal/loadmacho\":             true,\n\t\"cmd/link/internal/loadpe\":                true,\n\t\"cmd/link/internal/loadxcoff\":             true,\n\t\"cmd/link/internal/loong64\":               true,\n\t\"cmd/link/internal/mips\":                  true,\n\t\"cmd/link/internal/mips64\":                true,\n\t\"cmd/link/internal/ppc64\":                 true,\n\t\"cmd/link/internal/riscv64\":               true,\n\t\"cmd/link/internal/s390x\":                 true,\n\t\"cmd/link/internal/sym\":                   true,\n\t\"cmd/link/internal/wasm\":                  true,\n\t\"cmd/link/internal/x86\":                   true,\n\t\"compress/flate\":                          true,\n\t\"compress/zlib\":                           true,\n\t\"container/heap\":                          true,\n\t\"debug/dwarf\":                             true,\n\t\"debug/elf\":                               true,\n\t\"debug/macho\":                             true,\n\t\"debug/pe\":                                true,\n\t\"go/build/constraint\":                     true,\n\t\"go/constant\":                             true,\n\t\"go/version\":                              true,\n\t\"internal/abi\":                            true,\n\t\"internal/coverage\":                       true,\n\t\"cmd/internal/cov/covcmd\":                 true,\n\t\"internal/bisect\":                         true,\n\t\"internal/buildcfg\":                       true,\n\t\"internal/exportdata\":                     true,\n\t\"internal/goarch\":                         true,\n\t\"internal/godebugs\":                       true,\n\t\"internal/goexperiment\":                   true,\n\t\"internal/goroot\":                         true,\n\t\"internal/gover\":                          true,\n\t\"internal/goversion\":                      true,\n\t\"internal/lazyregexp\":                     true,\n\t\"internal/pkgbits\":                        true,\n\t\"internal/platform\":                       true,\n\t\"internal/profile\":                        true,\n\t\"internal/race\":                           true,\n\t\"internal/runtime/gc\":                     true,\n\t\"internal/saferio\":                        true,\n\t\"internal/syscall/unix\":                   true,\n\t\"internal/types/errors\":                   true,\n\t\"internal/unsafeheader\":                   true,\n\t\"internal/xcoff\":                          true,\n\t\"internal/zstd\":                           true,\n\t\"math/bits\":                               true,\n\t\"sort\":                                    true,\n}\n\n// BootstrapVersion is the minor version of Go used during toolchain\n// bootstrapping. Packages for which [IsBootstrapPackage] must not use\n// features of Go newer than this version.\nconst BootstrapVersion = Version(24) // go1.24.6\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/stdlib/import.go",
    "content": "// Copyright 2025 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage stdlib\n\n// This file provides the API for the import graph of the standard library.\n//\n// Be aware that the compiler-generated code for every package\n// implicitly depends on package \"runtime\" and a handful of others\n// (see runtimePkgs in GOROOT/src/cmd/internal/objabi/pkgspecial.go).\n\nimport (\n\t\"encoding/binary\"\n\t\"iter\"\n\t\"slices\"\n\t\"strings\"\n)\n\n// Imports returns the sequence of packages directly imported by the\n// named standard packages, in name order.\n// The imports of an unknown package are the empty set.\n//\n// The graph is built into the application and may differ from the\n// graph in the Go source tree being analyzed by the application.\nfunc Imports(pkgs ...string) iter.Seq[string] {\n\treturn func(yield func(string) bool) {\n\t\tfor _, pkg := range pkgs {\n\t\t\tif i, ok := find(pkg); ok {\n\t\t\t\tvar depIndex uint64\n\t\t\t\tfor data := []byte(deps[i].deps); len(data) > 0; {\n\t\t\t\t\tdelta, n := binary.Uvarint(data)\n\t\t\t\t\tdepIndex += delta\n\t\t\t\t\tif !yield(deps[depIndex].name) {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\tdata = data[n:]\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n// Dependencies returns the set of all dependencies of the named\n// standard packages, including the initial package,\n// in a deterministic topological order.\n// The dependencies of an unknown package are the empty set.\n//\n// The graph is built into the application and may differ from the\n// graph in the Go source tree being analyzed by the application.\nfunc Dependencies(pkgs ...string) iter.Seq[string] {\n\treturn func(yield func(string) bool) {\n\t\tfor _, pkg := range pkgs {\n\t\t\tif i, ok := find(pkg); ok {\n\t\t\t\tvar seen [1 + len(deps)/8]byte // bit set of seen packages\n\t\t\t\tvar visit func(i int) bool\n\t\t\t\tvisit = func(i int) bool {\n\t\t\t\t\tbit := byte(1) << (i % 8)\n\t\t\t\t\tif seen[i/8]&bit == 0 {\n\t\t\t\t\t\tseen[i/8] |= bit\n\t\t\t\t\t\tvar depIndex uint64\n\t\t\t\t\t\tfor data := []byte(deps[i].deps); len(data) > 0; {\n\t\t\t\t\t\t\tdelta, n := binary.Uvarint(data)\n\t\t\t\t\t\t\tdepIndex += delta\n\t\t\t\t\t\t\tif !visit(int(depIndex)) {\n\t\t\t\t\t\t\t\treturn false\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdata = data[n:]\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif !yield(deps[i].name) {\n\t\t\t\t\t\t\treturn false\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\tif !visit(i) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n// find returns the index of pkg in the deps table.\nfunc find(pkg string) (int, bool) {\n\treturn slices.BinarySearchFunc(deps[:], pkg, func(p pkginfo, n string) int {\n\t\treturn strings.Compare(p.name, n)\n\t})\n}\n\n// IsBootstrapPackage reports whether pkg is one of the low-level\n// packages in the Go distribution that must compile with the older\n// language version specified by [BootstrapVersion] during toolchain\n// bootstrapping; see golang.org/s/go15bootstrap.\nfunc IsBootstrapPackage(pkg string) bool {\n\treturn bootstrap[pkg]\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/stdlib/manifest.go",
    "content": "// Copyright 2025 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate.go. DO NOT EDIT.\n\npackage stdlib\n\nvar PackageSymbols = map[string][]Symbol{\n\t\"archive/tar\": {\n\t\t{\"(*Header).FileInfo\", Method, 1, \"\"},\n\t\t{\"(*Reader).Next\", Method, 0, \"\"},\n\t\t{\"(*Reader).Read\", Method, 0, \"\"},\n\t\t{\"(*Writer).AddFS\", Method, 22, \"\"},\n\t\t{\"(*Writer).Close\", Method, 0, \"\"},\n\t\t{\"(*Writer).Flush\", Method, 0, \"\"},\n\t\t{\"(*Writer).Write\", Method, 0, \"\"},\n\t\t{\"(*Writer).WriteHeader\", Method, 0, \"\"},\n\t\t{\"(FileInfoNames).Gname\", Method, 23, \"\"},\n\t\t{\"(FileInfoNames).IsDir\", Method, 23, \"\"},\n\t\t{\"(FileInfoNames).ModTime\", Method, 23, \"\"},\n\t\t{\"(FileInfoNames).Mode\", Method, 23, \"\"},\n\t\t{\"(FileInfoNames).Name\", Method, 23, \"\"},\n\t\t{\"(FileInfoNames).Size\", Method, 23, \"\"},\n\t\t{\"(FileInfoNames).Sys\", Method, 23, \"\"},\n\t\t{\"(FileInfoNames).Uname\", Method, 23, \"\"},\n\t\t{\"(Format).String\", Method, 10, \"\"},\n\t\t{\"ErrFieldTooLong\", Var, 0, \"\"},\n\t\t{\"ErrHeader\", Var, 0, \"\"},\n\t\t{\"ErrInsecurePath\", Var, 20, \"\"},\n\t\t{\"ErrWriteAfterClose\", Var, 0, \"\"},\n\t\t{\"ErrWriteTooLong\", Var, 0, \"\"},\n\t\t{\"FileInfoHeader\", Func, 1, \"func(fi fs.FileInfo, link string) (*Header, error)\"},\n\t\t{\"FileInfoNames\", Type, 23, \"\"},\n\t\t{\"Format\", Type, 10, \"\"},\n\t\t{\"FormatGNU\", Const, 10, \"\"},\n\t\t{\"FormatPAX\", Const, 10, \"\"},\n\t\t{\"FormatUSTAR\", Const, 10, \"\"},\n\t\t{\"FormatUnknown\", Const, 10, \"\"},\n\t\t{\"Header\", Type, 0, \"\"},\n\t\t{\"Header.AccessTime\", Field, 0, \"\"},\n\t\t{\"Header.ChangeTime\", Field, 0, \"\"},\n\t\t{\"Header.Devmajor\", Field, 0, \"\"},\n\t\t{\"Header.Devminor\", Field, 0, \"\"},\n\t\t{\"Header.Format\", Field, 10, \"\"},\n\t\t{\"Header.Gid\", Field, 0, \"\"},\n\t\t{\"Header.Gname\", Field, 0, \"\"},\n\t\t{\"Header.Linkname\", Field, 0, \"\"},\n\t\t{\"Header.ModTime\", Field, 0, \"\"},\n\t\t{\"Header.Mode\", Field, 0, \"\"},\n\t\t{\"Header.Name\", Field, 0, \"\"},\n\t\t{\"Header.PAXRecords\", Field, 10, \"\"},\n\t\t{\"Header.Size\", Field, 0, \"\"},\n\t\t{\"Header.Typeflag\", Field, 0, \"\"},\n\t\t{\"Header.Uid\", Field, 0, \"\"},\n\t\t{\"Header.Uname\", Field, 0, \"\"},\n\t\t{\"Header.Xattrs\", Field, 3, \"\"},\n\t\t{\"NewReader\", Func, 0, \"func(r io.Reader) *Reader\"},\n\t\t{\"NewWriter\", Func, 0, \"func(w io.Writer) *Writer\"},\n\t\t{\"Reader\", Type, 0, \"\"},\n\t\t{\"TypeBlock\", Const, 0, \"\"},\n\t\t{\"TypeChar\", Const, 0, \"\"},\n\t\t{\"TypeCont\", Const, 0, \"\"},\n\t\t{\"TypeDir\", Const, 0, \"\"},\n\t\t{\"TypeFifo\", Const, 0, \"\"},\n\t\t{\"TypeGNULongLink\", Const, 1, \"\"},\n\t\t{\"TypeGNULongName\", Const, 1, \"\"},\n\t\t{\"TypeGNUSparse\", Const, 3, \"\"},\n\t\t{\"TypeLink\", Const, 0, \"\"},\n\t\t{\"TypeReg\", Const, 0, \"\"},\n\t\t{\"TypeRegA\", Const, 0, \"\"},\n\t\t{\"TypeSymlink\", Const, 0, \"\"},\n\t\t{\"TypeXGlobalHeader\", Const, 0, \"\"},\n\t\t{\"TypeXHeader\", Const, 0, \"\"},\n\t\t{\"Writer\", Type, 0, \"\"},\n\t},\n\t\"archive/zip\": {\n\t\t{\"(*File).DataOffset\", Method, 2, \"\"},\n\t\t{\"(*File).FileInfo\", Method, 0, \"\"},\n\t\t{\"(*File).ModTime\", Method, 0, \"\"},\n\t\t{\"(*File).Mode\", Method, 0, \"\"},\n\t\t{\"(*File).Open\", Method, 0, \"\"},\n\t\t{\"(*File).OpenRaw\", Method, 17, \"\"},\n\t\t{\"(*File).SetModTime\", Method, 0, \"\"},\n\t\t{\"(*File).SetMode\", Method, 0, \"\"},\n\t\t{\"(*FileHeader).FileInfo\", Method, 0, \"\"},\n\t\t{\"(*FileHeader).ModTime\", Method, 0, \"\"},\n\t\t{\"(*FileHeader).Mode\", Method, 0, \"\"},\n\t\t{\"(*FileHeader).SetModTime\", Method, 0, \"\"},\n\t\t{\"(*FileHeader).SetMode\", Method, 0, \"\"},\n\t\t{\"(*ReadCloser).Close\", Method, 0, \"\"},\n\t\t{\"(*ReadCloser).Open\", Method, 16, \"\"},\n\t\t{\"(*ReadCloser).RegisterDecompressor\", Method, 6, \"\"},\n\t\t{\"(*Reader).Open\", Method, 16, \"\"},\n\t\t{\"(*Reader).RegisterDecompressor\", Method, 6, \"\"},\n\t\t{\"(*Writer).AddFS\", Method, 22, \"\"},\n\t\t{\"(*Writer).Close\", Method, 0, \"\"},\n\t\t{\"(*Writer).Copy\", Method, 17, \"\"},\n\t\t{\"(*Writer).Create\", Method, 0, \"\"},\n\t\t{\"(*Writer).CreateHeader\", Method, 0, \"\"},\n\t\t{\"(*Writer).CreateRaw\", Method, 17, \"\"},\n\t\t{\"(*Writer).Flush\", Method, 4, \"\"},\n\t\t{\"(*Writer).RegisterCompressor\", Method, 6, \"\"},\n\t\t{\"(*Writer).SetComment\", Method, 10, \"\"},\n\t\t{\"(*Writer).SetOffset\", Method, 5, \"\"},\n\t\t{\"Compressor\", Type, 2, \"\"},\n\t\t{\"Decompressor\", Type, 2, \"\"},\n\t\t{\"Deflate\", Const, 0, \"\"},\n\t\t{\"ErrAlgorithm\", Var, 0, \"\"},\n\t\t{\"ErrChecksum\", Var, 0, \"\"},\n\t\t{\"ErrFormat\", Var, 0, \"\"},\n\t\t{\"ErrInsecurePath\", Var, 20, \"\"},\n\t\t{\"File\", Type, 0, \"\"},\n\t\t{\"File.FileHeader\", Field, 0, \"\"},\n\t\t{\"FileHeader\", Type, 0, \"\"},\n\t\t{\"FileHeader.CRC32\", Field, 0, \"\"},\n\t\t{\"FileHeader.Comment\", Field, 0, \"\"},\n\t\t{\"FileHeader.CompressedSize\", Field, 0, \"\"},\n\t\t{\"FileHeader.CompressedSize64\", Field, 1, \"\"},\n\t\t{\"FileHeader.CreatorVersion\", Field, 0, \"\"},\n\t\t{\"FileHeader.ExternalAttrs\", Field, 0, \"\"},\n\t\t{\"FileHeader.Extra\", Field, 0, \"\"},\n\t\t{\"FileHeader.Flags\", Field, 0, \"\"},\n\t\t{\"FileHeader.Method\", Field, 0, \"\"},\n\t\t{\"FileHeader.Modified\", Field, 10, \"\"},\n\t\t{\"FileHeader.ModifiedDate\", Field, 0, \"\"},\n\t\t{\"FileHeader.ModifiedTime\", Field, 0, \"\"},\n\t\t{\"FileHeader.Name\", Field, 0, \"\"},\n\t\t{\"FileHeader.NonUTF8\", Field, 10, \"\"},\n\t\t{\"FileHeader.ReaderVersion\", Field, 0, \"\"},\n\t\t{\"FileHeader.UncompressedSize\", Field, 0, \"\"},\n\t\t{\"FileHeader.UncompressedSize64\", Field, 1, \"\"},\n\t\t{\"FileInfoHeader\", Func, 0, \"func(fi fs.FileInfo) (*FileHeader, error)\"},\n\t\t{\"NewReader\", Func, 0, \"func(r io.ReaderAt, size int64) (*Reader, error)\"},\n\t\t{\"NewWriter\", Func, 0, \"func(w io.Writer) *Writer\"},\n\t\t{\"OpenReader\", Func, 0, \"func(name string) (*ReadCloser, error)\"},\n\t\t{\"ReadCloser\", Type, 0, \"\"},\n\t\t{\"ReadCloser.Reader\", Field, 0, \"\"},\n\t\t{\"Reader\", Type, 0, \"\"},\n\t\t{\"Reader.Comment\", Field, 0, \"\"},\n\t\t{\"Reader.File\", Field, 0, \"\"},\n\t\t{\"RegisterCompressor\", Func, 2, \"func(method uint16, comp Compressor)\"},\n\t\t{\"RegisterDecompressor\", Func, 2, \"func(method uint16, dcomp Decompressor)\"},\n\t\t{\"Store\", Const, 0, \"\"},\n\t\t{\"Writer\", Type, 0, \"\"},\n\t},\n\t\"bufio\": {\n\t\t{\"(*Reader).Buffered\", Method, 0, \"\"},\n\t\t{\"(*Reader).Discard\", Method, 5, \"\"},\n\t\t{\"(*Reader).Peek\", Method, 0, \"\"},\n\t\t{\"(*Reader).Read\", Method, 0, \"\"},\n\t\t{\"(*Reader).ReadByte\", Method, 0, \"\"},\n\t\t{\"(*Reader).ReadBytes\", Method, 0, \"\"},\n\t\t{\"(*Reader).ReadLine\", Method, 0, \"\"},\n\t\t{\"(*Reader).ReadRune\", Method, 0, \"\"},\n\t\t{\"(*Reader).ReadSlice\", Method, 0, \"\"},\n\t\t{\"(*Reader).ReadString\", Method, 0, \"\"},\n\t\t{\"(*Reader).Reset\", Method, 2, \"\"},\n\t\t{\"(*Reader).Size\", Method, 10, \"\"},\n\t\t{\"(*Reader).UnreadByte\", Method, 0, \"\"},\n\t\t{\"(*Reader).UnreadRune\", Method, 0, \"\"},\n\t\t{\"(*Reader).WriteTo\", Method, 1, \"\"},\n\t\t{\"(*Scanner).Buffer\", Method, 6, \"\"},\n\t\t{\"(*Scanner).Bytes\", Method, 1, \"\"},\n\t\t{\"(*Scanner).Err\", Method, 1, \"\"},\n\t\t{\"(*Scanner).Scan\", Method, 1, \"\"},\n\t\t{\"(*Scanner).Split\", Method, 1, \"\"},\n\t\t{\"(*Scanner).Text\", Method, 1, \"\"},\n\t\t{\"(*Writer).Available\", Method, 0, \"\"},\n\t\t{\"(*Writer).AvailableBuffer\", Method, 18, \"\"},\n\t\t{\"(*Writer).Buffered\", Method, 0, \"\"},\n\t\t{\"(*Writer).Flush\", Method, 0, \"\"},\n\t\t{\"(*Writer).ReadFrom\", Method, 1, \"\"},\n\t\t{\"(*Writer).Reset\", Method, 2, \"\"},\n\t\t{\"(*Writer).Size\", Method, 10, \"\"},\n\t\t{\"(*Writer).Write\", Method, 0, \"\"},\n\t\t{\"(*Writer).WriteByte\", Method, 0, \"\"},\n\t\t{\"(*Writer).WriteRune\", Method, 0, \"\"},\n\t\t{\"(*Writer).WriteString\", Method, 0, \"\"},\n\t\t{\"(ReadWriter).Available\", Method, 0, \"\"},\n\t\t{\"(ReadWriter).AvailableBuffer\", Method, 18, \"\"},\n\t\t{\"(ReadWriter).Discard\", Method, 5, \"\"},\n\t\t{\"(ReadWriter).Flush\", Method, 0, \"\"},\n\t\t{\"(ReadWriter).Peek\", Method, 0, \"\"},\n\t\t{\"(ReadWriter).Read\", Method, 0, \"\"},\n\t\t{\"(ReadWriter).ReadByte\", Method, 0, \"\"},\n\t\t{\"(ReadWriter).ReadBytes\", Method, 0, \"\"},\n\t\t{\"(ReadWriter).ReadFrom\", Method, 1, \"\"},\n\t\t{\"(ReadWriter).ReadLine\", Method, 0, \"\"},\n\t\t{\"(ReadWriter).ReadRune\", Method, 0, \"\"},\n\t\t{\"(ReadWriter).ReadSlice\", Method, 0, \"\"},\n\t\t{\"(ReadWriter).ReadString\", Method, 0, \"\"},\n\t\t{\"(ReadWriter).UnreadByte\", Method, 0, \"\"},\n\t\t{\"(ReadWriter).UnreadRune\", Method, 0, \"\"},\n\t\t{\"(ReadWriter).Write\", Method, 0, \"\"},\n\t\t{\"(ReadWriter).WriteByte\", Method, 0, \"\"},\n\t\t{\"(ReadWriter).WriteRune\", Method, 0, \"\"},\n\t\t{\"(ReadWriter).WriteString\", Method, 0, \"\"},\n\t\t{\"(ReadWriter).WriteTo\", Method, 1, \"\"},\n\t\t{\"ErrAdvanceTooFar\", Var, 1, \"\"},\n\t\t{\"ErrBadReadCount\", Var, 15, \"\"},\n\t\t{\"ErrBufferFull\", Var, 0, \"\"},\n\t\t{\"ErrFinalToken\", Var, 6, \"\"},\n\t\t{\"ErrInvalidUnreadByte\", Var, 0, \"\"},\n\t\t{\"ErrInvalidUnreadRune\", Var, 0, \"\"},\n\t\t{\"ErrNegativeAdvance\", Var, 1, \"\"},\n\t\t{\"ErrNegativeCount\", Var, 0, \"\"},\n\t\t{\"ErrTooLong\", Var, 1, \"\"},\n\t\t{\"MaxScanTokenSize\", Const, 1, \"\"},\n\t\t{\"NewReadWriter\", Func, 0, \"func(r *Reader, w *Writer) *ReadWriter\"},\n\t\t{\"NewReader\", Func, 0, \"func(rd io.Reader) *Reader\"},\n\t\t{\"NewReaderSize\", Func, 0, \"func(rd io.Reader, size int) *Reader\"},\n\t\t{\"NewScanner\", Func, 1, \"func(r io.Reader) *Scanner\"},\n\t\t{\"NewWriter\", Func, 0, \"func(w io.Writer) *Writer\"},\n\t\t{\"NewWriterSize\", Func, 0, \"func(w io.Writer, size int) *Writer\"},\n\t\t{\"ReadWriter\", Type, 0, \"\"},\n\t\t{\"ReadWriter.Reader\", Field, 0, \"\"},\n\t\t{\"ReadWriter.Writer\", Field, 0, \"\"},\n\t\t{\"Reader\", Type, 0, \"\"},\n\t\t{\"ScanBytes\", Func, 1, \"func(data []byte, atEOF bool) (advance int, token []byte, err error)\"},\n\t\t{\"ScanLines\", Func, 1, \"func(data []byte, atEOF bool) (advance int, token []byte, err error)\"},\n\t\t{\"ScanRunes\", Func, 1, \"func(data []byte, atEOF bool) (advance int, token []byte, err error)\"},\n\t\t{\"ScanWords\", Func, 1, \"func(data []byte, atEOF bool) (advance int, token []byte, err error)\"},\n\t\t{\"Scanner\", Type, 1, \"\"},\n\t\t{\"SplitFunc\", Type, 1, \"\"},\n\t\t{\"Writer\", Type, 0, \"\"},\n\t},\n\t\"bytes\": {\n\t\t{\"(*Buffer).Available\", Method, 21, \"\"},\n\t\t{\"(*Buffer).AvailableBuffer\", Method, 21, \"\"},\n\t\t{\"(*Buffer).Bytes\", Method, 0, \"\"},\n\t\t{\"(*Buffer).Cap\", Method, 5, \"\"},\n\t\t{\"(*Buffer).Grow\", Method, 1, \"\"},\n\t\t{\"(*Buffer).Len\", Method, 0, \"\"},\n\t\t{\"(*Buffer).Next\", Method, 0, \"\"},\n\t\t{\"(*Buffer).Peek\", Method, 26, \"\"},\n\t\t{\"(*Buffer).Read\", Method, 0, \"\"},\n\t\t{\"(*Buffer).ReadByte\", Method, 0, \"\"},\n\t\t{\"(*Buffer).ReadBytes\", Method, 0, \"\"},\n\t\t{\"(*Buffer).ReadFrom\", Method, 0, \"\"},\n\t\t{\"(*Buffer).ReadRune\", Method, 0, \"\"},\n\t\t{\"(*Buffer).ReadString\", Method, 0, \"\"},\n\t\t{\"(*Buffer).Reset\", Method, 0, \"\"},\n\t\t{\"(*Buffer).String\", Method, 0, \"\"},\n\t\t{\"(*Buffer).Truncate\", Method, 0, \"\"},\n\t\t{\"(*Buffer).UnreadByte\", Method, 0, \"\"},\n\t\t{\"(*Buffer).UnreadRune\", Method, 0, \"\"},\n\t\t{\"(*Buffer).Write\", Method, 0, \"\"},\n\t\t{\"(*Buffer).WriteByte\", Method, 0, \"\"},\n\t\t{\"(*Buffer).WriteRune\", Method, 0, \"\"},\n\t\t{\"(*Buffer).WriteString\", Method, 0, \"\"},\n\t\t{\"(*Buffer).WriteTo\", Method, 0, \"\"},\n\t\t{\"(*Reader).Len\", Method, 0, \"\"},\n\t\t{\"(*Reader).Read\", Method, 0, \"\"},\n\t\t{\"(*Reader).ReadAt\", Method, 0, \"\"},\n\t\t{\"(*Reader).ReadByte\", Method, 0, \"\"},\n\t\t{\"(*Reader).ReadRune\", Method, 0, \"\"},\n\t\t{\"(*Reader).Reset\", Method, 7, \"\"},\n\t\t{\"(*Reader).Seek\", Method, 0, \"\"},\n\t\t{\"(*Reader).Size\", Method, 5, \"\"},\n\t\t{\"(*Reader).UnreadByte\", Method, 0, \"\"},\n\t\t{\"(*Reader).UnreadRune\", Method, 0, \"\"},\n\t\t{\"(*Reader).WriteTo\", Method, 1, \"\"},\n\t\t{\"Buffer\", Type, 0, \"\"},\n\t\t{\"Clone\", Func, 20, \"func(b []byte) []byte\"},\n\t\t{\"Compare\", Func, 0, \"func(a []byte, b []byte) int\"},\n\t\t{\"Contains\", Func, 0, \"func(b []byte, subslice []byte) bool\"},\n\t\t{\"ContainsAny\", Func, 7, \"func(b []byte, chars string) bool\"},\n\t\t{\"ContainsFunc\", Func, 21, \"func(b []byte, f func(rune) bool) bool\"},\n\t\t{\"ContainsRune\", Func, 7, \"func(b []byte, r rune) bool\"},\n\t\t{\"Count\", Func, 0, \"func(s []byte, sep []byte) int\"},\n\t\t{\"Cut\", Func, 18, \"func(s []byte, sep []byte) (before []byte, after []byte, found bool)\"},\n\t\t{\"CutPrefix\", Func, 20, \"func(s []byte, prefix []byte) (after []byte, found bool)\"},\n\t\t{\"CutSuffix\", Func, 20, \"func(s []byte, suffix []byte) (before []byte, found bool)\"},\n\t\t{\"Equal\", Func, 0, \"func(a []byte, b []byte) bool\"},\n\t\t{\"EqualFold\", Func, 0, \"func(s []byte, t []byte) bool\"},\n\t\t{\"ErrTooLarge\", Var, 0, \"\"},\n\t\t{\"Fields\", Func, 0, \"func(s []byte) [][]byte\"},\n\t\t{\"FieldsFunc\", Func, 0, \"func(s []byte, f func(rune) bool) [][]byte\"},\n\t\t{\"FieldsFuncSeq\", Func, 24, \"func(s []byte, f func(rune) bool) iter.Seq[[]byte]\"},\n\t\t{\"FieldsSeq\", Func, 24, \"func(s []byte) iter.Seq[[]byte]\"},\n\t\t{\"HasPrefix\", Func, 0, \"func(s []byte, prefix []byte) bool\"},\n\t\t{\"HasSuffix\", Func, 0, \"func(s []byte, suffix []byte) bool\"},\n\t\t{\"Index\", Func, 0, \"func(s []byte, sep []byte) int\"},\n\t\t{\"IndexAny\", Func, 0, \"func(s []byte, chars string) int\"},\n\t\t{\"IndexByte\", Func, 0, \"func(b []byte, c byte) int\"},\n\t\t{\"IndexFunc\", Func, 0, \"func(s []byte, f func(r rune) bool) int\"},\n\t\t{\"IndexRune\", Func, 0, \"func(s []byte, r rune) int\"},\n\t\t{\"Join\", Func, 0, \"func(s [][]byte, sep []byte) []byte\"},\n\t\t{\"LastIndex\", Func, 0, \"func(s []byte, sep []byte) int\"},\n\t\t{\"LastIndexAny\", Func, 0, \"func(s []byte, chars string) int\"},\n\t\t{\"LastIndexByte\", Func, 5, \"func(s []byte, c byte) int\"},\n\t\t{\"LastIndexFunc\", Func, 0, \"func(s []byte, f func(r rune) bool) int\"},\n\t\t{\"Lines\", Func, 24, \"func(s []byte) iter.Seq[[]byte]\"},\n\t\t{\"Map\", Func, 0, \"func(mapping func(r rune) rune, s []byte) []byte\"},\n\t\t{\"MinRead\", Const, 0, \"\"},\n\t\t{\"NewBuffer\", Func, 0, \"func(buf []byte) *Buffer\"},\n\t\t{\"NewBufferString\", Func, 0, \"func(s string) *Buffer\"},\n\t\t{\"NewReader\", Func, 0, \"func(b []byte) *Reader\"},\n\t\t{\"Reader\", Type, 0, \"\"},\n\t\t{\"Repeat\", Func, 0, \"func(b []byte, count int) []byte\"},\n\t\t{\"Replace\", Func, 0, \"func(s []byte, old []byte, new []byte, n int) []byte\"},\n\t\t{\"ReplaceAll\", Func, 12, \"func(s []byte, old []byte, new []byte) []byte\"},\n\t\t{\"Runes\", Func, 0, \"func(s []byte) []rune\"},\n\t\t{\"Split\", Func, 0, \"func(s []byte, sep []byte) [][]byte\"},\n\t\t{\"SplitAfter\", Func, 0, \"func(s []byte, sep []byte) [][]byte\"},\n\t\t{\"SplitAfterN\", Func, 0, \"func(s []byte, sep []byte, n int) [][]byte\"},\n\t\t{\"SplitAfterSeq\", Func, 24, \"func(s []byte, sep []byte) iter.Seq[[]byte]\"},\n\t\t{\"SplitN\", Func, 0, \"func(s []byte, sep []byte, n int) [][]byte\"},\n\t\t{\"SplitSeq\", Func, 24, \"func(s []byte, sep []byte) iter.Seq[[]byte]\"},\n\t\t{\"Title\", Func, 0, \"func(s []byte) []byte\"},\n\t\t{\"ToLower\", Func, 0, \"func(s []byte) []byte\"},\n\t\t{\"ToLowerSpecial\", Func, 0, \"func(c unicode.SpecialCase, s []byte) []byte\"},\n\t\t{\"ToTitle\", Func, 0, \"func(s []byte) []byte\"},\n\t\t{\"ToTitleSpecial\", Func, 0, \"func(c unicode.SpecialCase, s []byte) []byte\"},\n\t\t{\"ToUpper\", Func, 0, \"func(s []byte) []byte\"},\n\t\t{\"ToUpperSpecial\", Func, 0, \"func(c unicode.SpecialCase, s []byte) []byte\"},\n\t\t{\"ToValidUTF8\", Func, 13, \"func(s []byte, replacement []byte) []byte\"},\n\t\t{\"Trim\", Func, 0, \"func(s []byte, cutset string) []byte\"},\n\t\t{\"TrimFunc\", Func, 0, \"func(s []byte, f func(r rune) bool) []byte\"},\n\t\t{\"TrimLeft\", Func, 0, \"func(s []byte, cutset string) []byte\"},\n\t\t{\"TrimLeftFunc\", Func, 0, \"func(s []byte, f func(r rune) bool) []byte\"},\n\t\t{\"TrimPrefix\", Func, 1, \"func(s []byte, prefix []byte) []byte\"},\n\t\t{\"TrimRight\", Func, 0, \"func(s []byte, cutset string) []byte\"},\n\t\t{\"TrimRightFunc\", Func, 0, \"func(s []byte, f func(r rune) bool) []byte\"},\n\t\t{\"TrimSpace\", Func, 0, \"func(s []byte) []byte\"},\n\t\t{\"TrimSuffix\", Func, 1, \"func(s []byte, suffix []byte) []byte\"},\n\t},\n\t\"cmp\": {\n\t\t{\"Compare\", Func, 21, \"func[T Ordered](x T, y T) int\"},\n\t\t{\"Less\", Func, 21, \"func[T Ordered](x T, y T) bool\"},\n\t\t{\"Or\", Func, 22, \"func[T comparable](vals ...T) T\"},\n\t\t{\"Ordered\", Type, 21, \"\"},\n\t},\n\t\"compress/bzip2\": {\n\t\t{\"(StructuralError).Error\", Method, 0, \"\"},\n\t\t{\"NewReader\", Func, 0, \"func(r io.Reader) io.Reader\"},\n\t\t{\"StructuralError\", Type, 0, \"\"},\n\t},\n\t\"compress/flate\": {\n\t\t{\"(*ReadError).Error\", Method, 0, \"\"},\n\t\t{\"(*WriteError).Error\", Method, 0, \"\"},\n\t\t{\"(*Writer).Close\", Method, 0, \"\"},\n\t\t{\"(*Writer).Flush\", Method, 0, \"\"},\n\t\t{\"(*Writer).Reset\", Method, 2, \"\"},\n\t\t{\"(*Writer).Write\", Method, 0, \"\"},\n\t\t{\"(CorruptInputError).Error\", Method, 0, \"\"},\n\t\t{\"(InternalError).Error\", Method, 0, \"\"},\n\t\t{\"(Reader).Read\", Method, 0, \"\"},\n\t\t{\"(Reader).ReadByte\", Method, 0, \"\"},\n\t\t{\"(Resetter).Reset\", Method, 4, \"\"},\n\t\t{\"BestCompression\", Const, 0, \"\"},\n\t\t{\"BestSpeed\", Const, 0, \"\"},\n\t\t{\"CorruptInputError\", Type, 0, \"\"},\n\t\t{\"DefaultCompression\", Const, 0, \"\"},\n\t\t{\"HuffmanOnly\", Const, 7, \"\"},\n\t\t{\"InternalError\", Type, 0, \"\"},\n\t\t{\"NewReader\", Func, 0, \"func(r io.Reader) io.ReadCloser\"},\n\t\t{\"NewReaderDict\", Func, 0, \"func(r io.Reader, dict []byte) io.ReadCloser\"},\n\t\t{\"NewWriter\", Func, 0, \"func(w io.Writer, level int) (*Writer, error)\"},\n\t\t{\"NewWriterDict\", Func, 0, \"func(w io.Writer, level int, dict []byte) (*Writer, error)\"},\n\t\t{\"NoCompression\", Const, 0, \"\"},\n\t\t{\"ReadError\", Type, 0, \"\"},\n\t\t{\"ReadError.Err\", Field, 0, \"\"},\n\t\t{\"ReadError.Offset\", Field, 0, \"\"},\n\t\t{\"Reader\", Type, 0, \"\"},\n\t\t{\"Resetter\", Type, 4, \"\"},\n\t\t{\"WriteError\", Type, 0, \"\"},\n\t\t{\"WriteError.Err\", Field, 0, \"\"},\n\t\t{\"WriteError.Offset\", Field, 0, \"\"},\n\t\t{\"Writer\", Type, 0, \"\"},\n\t},\n\t\"compress/gzip\": {\n\t\t{\"(*Reader).Close\", Method, 0, \"\"},\n\t\t{\"(*Reader).Multistream\", Method, 4, \"\"},\n\t\t{\"(*Reader).Read\", Method, 0, \"\"},\n\t\t{\"(*Reader).Reset\", Method, 3, \"\"},\n\t\t{\"(*Writer).Close\", Method, 0, \"\"},\n\t\t{\"(*Writer).Flush\", Method, 1, \"\"},\n\t\t{\"(*Writer).Reset\", Method, 2, \"\"},\n\t\t{\"(*Writer).Write\", Method, 0, \"\"},\n\t\t{\"BestCompression\", Const, 0, \"\"},\n\t\t{\"BestSpeed\", Const, 0, \"\"},\n\t\t{\"DefaultCompression\", Const, 0, \"\"},\n\t\t{\"ErrChecksum\", Var, 0, \"\"},\n\t\t{\"ErrHeader\", Var, 0, \"\"},\n\t\t{\"Header\", Type, 0, \"\"},\n\t\t{\"Header.Comment\", Field, 0, \"\"},\n\t\t{\"Header.Extra\", Field, 0, \"\"},\n\t\t{\"Header.ModTime\", Field, 0, \"\"},\n\t\t{\"Header.Name\", Field, 0, \"\"},\n\t\t{\"Header.OS\", Field, 0, \"\"},\n\t\t{\"HuffmanOnly\", Const, 8, \"\"},\n\t\t{\"NewReader\", Func, 0, \"func(r io.Reader) (*Reader, error)\"},\n\t\t{\"NewWriter\", Func, 0, \"func(w io.Writer) *Writer\"},\n\t\t{\"NewWriterLevel\", Func, 0, \"func(w io.Writer, level int) (*Writer, error)\"},\n\t\t{\"NoCompression\", Const, 0, \"\"},\n\t\t{\"Reader\", Type, 0, \"\"},\n\t\t{\"Reader.Header\", Field, 0, \"\"},\n\t\t{\"Writer\", Type, 0, \"\"},\n\t\t{\"Writer.Header\", Field, 0, \"\"},\n\t},\n\t\"compress/lzw\": {\n\t\t{\"(*Reader).Close\", Method, 17, \"\"},\n\t\t{\"(*Reader).Read\", Method, 17, \"\"},\n\t\t{\"(*Reader).Reset\", Method, 17, \"\"},\n\t\t{\"(*Writer).Close\", Method, 17, \"\"},\n\t\t{\"(*Writer).Reset\", Method, 17, \"\"},\n\t\t{\"(*Writer).Write\", Method, 17, \"\"},\n\t\t{\"LSB\", Const, 0, \"\"},\n\t\t{\"MSB\", Const, 0, \"\"},\n\t\t{\"NewReader\", Func, 0, \"func(r io.Reader, order Order, litWidth int) io.ReadCloser\"},\n\t\t{\"NewWriter\", Func, 0, \"func(w io.Writer, order Order, litWidth int) io.WriteCloser\"},\n\t\t{\"Order\", Type, 0, \"\"},\n\t\t{\"Reader\", Type, 17, \"\"},\n\t\t{\"Writer\", Type, 17, \"\"},\n\t},\n\t\"compress/zlib\": {\n\t\t{\"(*Writer).Close\", Method, 0, \"\"},\n\t\t{\"(*Writer).Flush\", Method, 0, \"\"},\n\t\t{\"(*Writer).Reset\", Method, 2, \"\"},\n\t\t{\"(*Writer).Write\", Method, 0, \"\"},\n\t\t{\"(Resetter).Reset\", Method, 4, \"\"},\n\t\t{\"BestCompression\", Const, 0, \"\"},\n\t\t{\"BestSpeed\", Const, 0, \"\"},\n\t\t{\"DefaultCompression\", Const, 0, \"\"},\n\t\t{\"ErrChecksum\", Var, 0, \"\"},\n\t\t{\"ErrDictionary\", Var, 0, \"\"},\n\t\t{\"ErrHeader\", Var, 0, \"\"},\n\t\t{\"HuffmanOnly\", Const, 8, \"\"},\n\t\t{\"NewReader\", Func, 0, \"func(r io.Reader) (io.ReadCloser, error)\"},\n\t\t{\"NewReaderDict\", Func, 0, \"func(r io.Reader, dict []byte) (io.ReadCloser, error)\"},\n\t\t{\"NewWriter\", Func, 0, \"func(w io.Writer) *Writer\"},\n\t\t{\"NewWriterLevel\", Func, 0, \"func(w io.Writer, level int) (*Writer, error)\"},\n\t\t{\"NewWriterLevelDict\", Func, 0, \"func(w io.Writer, level int, dict []byte) (*Writer, error)\"},\n\t\t{\"NoCompression\", Const, 0, \"\"},\n\t\t{\"Resetter\", Type, 4, \"\"},\n\t\t{\"Writer\", Type, 0, \"\"},\n\t},\n\t\"container/heap\": {\n\t\t{\"(Interface).Len\", Method, 0, \"\"},\n\t\t{\"(Interface).Less\", Method, 0, \"\"},\n\t\t{\"(Interface).Pop\", Method, 0, \"\"},\n\t\t{\"(Interface).Push\", Method, 0, \"\"},\n\t\t{\"(Interface).Swap\", Method, 0, \"\"},\n\t\t{\"Fix\", Func, 2, \"func(h Interface, i int)\"},\n\t\t{\"Init\", Func, 0, \"func(h Interface)\"},\n\t\t{\"Interface\", Type, 0, \"\"},\n\t\t{\"Pop\", Func, 0, \"func(h Interface) any\"},\n\t\t{\"Push\", Func, 0, \"func(h Interface, x any)\"},\n\t\t{\"Remove\", Func, 0, \"func(h Interface, i int) any\"},\n\t},\n\t\"container/list\": {\n\t\t{\"(*Element).Next\", Method, 0, \"\"},\n\t\t{\"(*Element).Prev\", Method, 0, \"\"},\n\t\t{\"(*List).Back\", Method, 0, \"\"},\n\t\t{\"(*List).Front\", Method, 0, \"\"},\n\t\t{\"(*List).Init\", Method, 0, \"\"},\n\t\t{\"(*List).InsertAfter\", Method, 0, \"\"},\n\t\t{\"(*List).InsertBefore\", Method, 0, \"\"},\n\t\t{\"(*List).Len\", Method, 0, \"\"},\n\t\t{\"(*List).MoveAfter\", Method, 2, \"\"},\n\t\t{\"(*List).MoveBefore\", Method, 2, \"\"},\n\t\t{\"(*List).MoveToBack\", Method, 0, \"\"},\n\t\t{\"(*List).MoveToFront\", Method, 0, \"\"},\n\t\t{\"(*List).PushBack\", Method, 0, \"\"},\n\t\t{\"(*List).PushBackList\", Method, 0, \"\"},\n\t\t{\"(*List).PushFront\", Method, 0, \"\"},\n\t\t{\"(*List).PushFrontList\", Method, 0, \"\"},\n\t\t{\"(*List).Remove\", Method, 0, \"\"},\n\t\t{\"Element\", Type, 0, \"\"},\n\t\t{\"Element.Value\", Field, 0, \"\"},\n\t\t{\"List\", Type, 0, \"\"},\n\t\t{\"New\", Func, 0, \"func() *List\"},\n\t},\n\t\"container/ring\": {\n\t\t{\"(*Ring).Do\", Method, 0, \"\"},\n\t\t{\"(*Ring).Len\", Method, 0, \"\"},\n\t\t{\"(*Ring).Link\", Method, 0, \"\"},\n\t\t{\"(*Ring).Move\", Method, 0, \"\"},\n\t\t{\"(*Ring).Next\", Method, 0, \"\"},\n\t\t{\"(*Ring).Prev\", Method, 0, \"\"},\n\t\t{\"(*Ring).Unlink\", Method, 0, \"\"},\n\t\t{\"New\", Func, 0, \"func(n int) *Ring\"},\n\t\t{\"Ring\", Type, 0, \"\"},\n\t\t{\"Ring.Value\", Field, 0, \"\"},\n\t},\n\t\"context\": {\n\t\t{\"(Context).Deadline\", Method, 7, \"\"},\n\t\t{\"(Context).Done\", Method, 7, \"\"},\n\t\t{\"(Context).Err\", Method, 7, \"\"},\n\t\t{\"(Context).Value\", Method, 7, \"\"},\n\t\t{\"AfterFunc\", Func, 21, \"func(ctx Context, f func()) (stop func() bool)\"},\n\t\t{\"Background\", Func, 7, \"func() Context\"},\n\t\t{\"CancelCauseFunc\", Type, 20, \"\"},\n\t\t{\"CancelFunc\", Type, 7, \"\"},\n\t\t{\"Canceled\", Var, 7, \"\"},\n\t\t{\"Cause\", Func, 20, \"func(c Context) error\"},\n\t\t{\"Context\", Type, 7, \"\"},\n\t\t{\"DeadlineExceeded\", Var, 7, \"\"},\n\t\t{\"TODO\", Func, 7, \"func() Context\"},\n\t\t{\"WithCancel\", Func, 7, \"func(parent Context) (ctx Context, cancel CancelFunc)\"},\n\t\t{\"WithCancelCause\", Func, 20, \"func(parent Context) (ctx Context, cancel CancelCauseFunc)\"},\n\t\t{\"WithDeadline\", Func, 7, \"func(parent Context, d time.Time) (Context, CancelFunc)\"},\n\t\t{\"WithDeadlineCause\", Func, 21, \"func(parent Context, d time.Time, cause error) (Context, CancelFunc)\"},\n\t\t{\"WithTimeout\", Func, 7, \"func(parent Context, timeout time.Duration) (Context, CancelFunc)\"},\n\t\t{\"WithTimeoutCause\", Func, 21, \"func(parent Context, timeout time.Duration, cause error) (Context, CancelFunc)\"},\n\t\t{\"WithValue\", Func, 7, \"func(parent Context, key any, val any) Context\"},\n\t\t{\"WithoutCancel\", Func, 21, \"func(parent Context) Context\"},\n\t},\n\t\"crypto\": {\n\t\t{\"(Decapsulator).Decapsulate\", Method, 26, \"\"},\n\t\t{\"(Decapsulator).Encapsulator\", Method, 26, \"\"},\n\t\t{\"(Decrypter).Decrypt\", Method, 5, \"\"},\n\t\t{\"(Decrypter).Public\", Method, 5, \"\"},\n\t\t{\"(Encapsulator).Bytes\", Method, 26, \"\"},\n\t\t{\"(Encapsulator).Encapsulate\", Method, 26, \"\"},\n\t\t{\"(Hash).Available\", Method, 0, \"\"},\n\t\t{\"(Hash).HashFunc\", Method, 4, \"\"},\n\t\t{\"(Hash).New\", Method, 0, \"\"},\n\t\t{\"(Hash).Size\", Method, 0, \"\"},\n\t\t{\"(Hash).String\", Method, 15, \"\"},\n\t\t{\"(MessageSigner).Public\", Method, 25, \"\"},\n\t\t{\"(MessageSigner).Sign\", Method, 25, \"\"},\n\t\t{\"(MessageSigner).SignMessage\", Method, 25, \"\"},\n\t\t{\"(Signer).Public\", Method, 4, \"\"},\n\t\t{\"(Signer).Sign\", Method, 4, \"\"},\n\t\t{\"(SignerOpts).HashFunc\", Method, 4, \"\"},\n\t\t{\"BLAKE2b_256\", Const, 9, \"\"},\n\t\t{\"BLAKE2b_384\", Const, 9, \"\"},\n\t\t{\"BLAKE2b_512\", Const, 9, \"\"},\n\t\t{\"BLAKE2s_256\", Const, 9, \"\"},\n\t\t{\"Decapsulator\", Type, 26, \"\"},\n\t\t{\"Decrypter\", Type, 5, \"\"},\n\t\t{\"DecrypterOpts\", Type, 5, \"\"},\n\t\t{\"Encapsulator\", Type, 26, \"\"},\n\t\t{\"Hash\", Type, 0, \"\"},\n\t\t{\"MD4\", Const, 0, \"\"},\n\t\t{\"MD5\", Const, 0, \"\"},\n\t\t{\"MD5SHA1\", Const, 0, \"\"},\n\t\t{\"MessageSigner\", Type, 25, \"\"},\n\t\t{\"PrivateKey\", Type, 0, \"\"},\n\t\t{\"PublicKey\", Type, 2, \"\"},\n\t\t{\"RIPEMD160\", Const, 0, \"\"},\n\t\t{\"RegisterHash\", Func, 0, \"func(h Hash, f func() hash.Hash)\"},\n\t\t{\"SHA1\", Const, 0, \"\"},\n\t\t{\"SHA224\", Const, 0, \"\"},\n\t\t{\"SHA256\", Const, 0, \"\"},\n\t\t{\"SHA384\", Const, 0, \"\"},\n\t\t{\"SHA3_224\", Const, 4, \"\"},\n\t\t{\"SHA3_256\", Const, 4, \"\"},\n\t\t{\"SHA3_384\", Const, 4, \"\"},\n\t\t{\"SHA3_512\", Const, 4, \"\"},\n\t\t{\"SHA512\", Const, 0, \"\"},\n\t\t{\"SHA512_224\", Const, 5, \"\"},\n\t\t{\"SHA512_256\", Const, 5, \"\"},\n\t\t{\"SignMessage\", Func, 25, \"func(signer Signer, rand io.Reader, msg []byte, opts SignerOpts) (signature []byte, err error)\"},\n\t\t{\"Signer\", Type, 4, \"\"},\n\t\t{\"SignerOpts\", Type, 4, \"\"},\n\t},\n\t\"crypto/aes\": {\n\t\t{\"(KeySizeError).Error\", Method, 0, \"\"},\n\t\t{\"BlockSize\", Const, 0, \"\"},\n\t\t{\"KeySizeError\", Type, 0, \"\"},\n\t\t{\"NewCipher\", Func, 0, \"func(key []byte) (cipher.Block, error)\"},\n\t},\n\t\"crypto/cipher\": {\n\t\t{\"(AEAD).NonceSize\", Method, 2, \"\"},\n\t\t{\"(AEAD).Open\", Method, 2, \"\"},\n\t\t{\"(AEAD).Overhead\", Method, 2, \"\"},\n\t\t{\"(AEAD).Seal\", Method, 2, \"\"},\n\t\t{\"(Block).BlockSize\", Method, 0, \"\"},\n\t\t{\"(Block).Decrypt\", Method, 0, \"\"},\n\t\t{\"(Block).Encrypt\", Method, 0, \"\"},\n\t\t{\"(BlockMode).BlockSize\", Method, 0, \"\"},\n\t\t{\"(BlockMode).CryptBlocks\", Method, 0, \"\"},\n\t\t{\"(Stream).XORKeyStream\", Method, 0, \"\"},\n\t\t{\"(StreamReader).Read\", Method, 0, \"\"},\n\t\t{\"(StreamWriter).Close\", Method, 0, \"\"},\n\t\t{\"(StreamWriter).Write\", Method, 0, \"\"},\n\t\t{\"AEAD\", Type, 2, \"\"},\n\t\t{\"Block\", Type, 0, \"\"},\n\t\t{\"BlockMode\", Type, 0, \"\"},\n\t\t{\"NewCBCDecrypter\", Func, 0, \"func(b Block, iv []byte) BlockMode\"},\n\t\t{\"NewCBCEncrypter\", Func, 0, \"func(b Block, iv []byte) BlockMode\"},\n\t\t{\"NewCFBDecrypter\", Func, 0, \"func(block Block, iv []byte) Stream\"},\n\t\t{\"NewCFBEncrypter\", Func, 0, \"func(block Block, iv []byte) Stream\"},\n\t\t{\"NewCTR\", Func, 0, \"func(block Block, iv []byte) Stream\"},\n\t\t{\"NewGCM\", Func, 2, \"func(cipher Block) (AEAD, error)\"},\n\t\t{\"NewGCMWithNonceSize\", Func, 5, \"func(cipher Block, size int) (AEAD, error)\"},\n\t\t{\"NewGCMWithRandomNonce\", Func, 24, \"func(cipher Block) (AEAD, error)\"},\n\t\t{\"NewGCMWithTagSize\", Func, 11, \"func(cipher Block, tagSize int) (AEAD, error)\"},\n\t\t{\"NewOFB\", Func, 0, \"func(b Block, iv []byte) Stream\"},\n\t\t{\"Stream\", Type, 0, \"\"},\n\t\t{\"StreamReader\", Type, 0, \"\"},\n\t\t{\"StreamReader.R\", Field, 0, \"\"},\n\t\t{\"StreamReader.S\", Field, 0, \"\"},\n\t\t{\"StreamWriter\", Type, 0, \"\"},\n\t\t{\"StreamWriter.Err\", Field, 0, \"\"},\n\t\t{\"StreamWriter.S\", Field, 0, \"\"},\n\t\t{\"StreamWriter.W\", Field, 0, \"\"},\n\t},\n\t\"crypto/des\": {\n\t\t{\"(KeySizeError).Error\", Method, 0, \"\"},\n\t\t{\"BlockSize\", Const, 0, \"\"},\n\t\t{\"KeySizeError\", Type, 0, \"\"},\n\t\t{\"NewCipher\", Func, 0, \"func(key []byte) (cipher.Block, error)\"},\n\t\t{\"NewTripleDESCipher\", Func, 0, \"func(key []byte) (cipher.Block, error)\"},\n\t},\n\t\"crypto/dsa\": {\n\t\t{\"ErrInvalidPublicKey\", Var, 0, \"\"},\n\t\t{\"GenerateKey\", Func, 0, \"func(priv *PrivateKey, rand io.Reader) error\"},\n\t\t{\"GenerateParameters\", Func, 0, \"func(params *Parameters, rand io.Reader, sizes ParameterSizes) error\"},\n\t\t{\"L1024N160\", Const, 0, \"\"},\n\t\t{\"L2048N224\", Const, 0, \"\"},\n\t\t{\"L2048N256\", Const, 0, \"\"},\n\t\t{\"L3072N256\", Const, 0, \"\"},\n\t\t{\"ParameterSizes\", Type, 0, \"\"},\n\t\t{\"Parameters\", Type, 0, \"\"},\n\t\t{\"Parameters.G\", Field, 0, \"\"},\n\t\t{\"Parameters.P\", Field, 0, \"\"},\n\t\t{\"Parameters.Q\", Field, 0, \"\"},\n\t\t{\"PrivateKey\", Type, 0, \"\"},\n\t\t{\"PrivateKey.PublicKey\", Field, 0, \"\"},\n\t\t{\"PrivateKey.X\", Field, 0, \"\"},\n\t\t{\"PublicKey\", Type, 0, \"\"},\n\t\t{\"PublicKey.Parameters\", Field, 0, \"\"},\n\t\t{\"PublicKey.Y\", Field, 0, \"\"},\n\t\t{\"Sign\", Func, 0, \"func(random io.Reader, priv *PrivateKey, hash []byte) (r *big.Int, s *big.Int, err error)\"},\n\t\t{\"Verify\", Func, 0, \"func(pub *PublicKey, hash []byte, r *big.Int, s *big.Int) bool\"},\n\t},\n\t\"crypto/ecdh\": {\n\t\t{\"(*PrivateKey).Bytes\", Method, 20, \"\"},\n\t\t{\"(*PrivateKey).Curve\", Method, 20, \"\"},\n\t\t{\"(*PrivateKey).ECDH\", Method, 20, \"\"},\n\t\t{\"(*PrivateKey).Equal\", Method, 20, \"\"},\n\t\t{\"(*PrivateKey).Public\", Method, 20, \"\"},\n\t\t{\"(*PrivateKey).PublicKey\", Method, 20, \"\"},\n\t\t{\"(*PublicKey).Bytes\", Method, 20, \"\"},\n\t\t{\"(*PublicKey).Curve\", Method, 20, \"\"},\n\t\t{\"(*PublicKey).Equal\", Method, 20, \"\"},\n\t\t{\"(Curve).GenerateKey\", Method, 20, \"\"},\n\t\t{\"(Curve).NewPrivateKey\", Method, 20, \"\"},\n\t\t{\"(Curve).NewPublicKey\", Method, 20, \"\"},\n\t\t{\"(KeyExchanger).Curve\", Method, 26, \"\"},\n\t\t{\"(KeyExchanger).ECDH\", Method, 26, \"\"},\n\t\t{\"(KeyExchanger).PublicKey\", Method, 26, \"\"},\n\t\t{\"KeyExchanger\", Type, 26, \"\"},\n\t\t{\"P256\", Func, 20, \"func() Curve\"},\n\t\t{\"P384\", Func, 20, \"func() Curve\"},\n\t\t{\"P521\", Func, 20, \"func() Curve\"},\n\t\t{\"PrivateKey\", Type, 20, \"\"},\n\t\t{\"PublicKey\", Type, 20, \"\"},\n\t\t{\"X25519\", Func, 20, \"func() Curve\"},\n\t},\n\t\"crypto/ecdsa\": {\n\t\t{\"(*PrivateKey).Bytes\", Method, 25, \"\"},\n\t\t{\"(*PrivateKey).ECDH\", Method, 20, \"\"},\n\t\t{\"(*PrivateKey).Equal\", Method, 15, \"\"},\n\t\t{\"(*PrivateKey).Public\", Method, 4, \"\"},\n\t\t{\"(*PrivateKey).Sign\", Method, 4, \"\"},\n\t\t{\"(*PublicKey).Bytes\", Method, 25, \"\"},\n\t\t{\"(*PublicKey).ECDH\", Method, 20, \"\"},\n\t\t{\"(*PublicKey).Equal\", Method, 15, \"\"},\n\t\t{\"(PrivateKey).Add\", Method, 0, \"\"},\n\t\t{\"(PrivateKey).Double\", Method, 0, \"\"},\n\t\t{\"(PrivateKey).IsOnCurve\", Method, 0, \"\"},\n\t\t{\"(PrivateKey).Params\", Method, 0, \"\"},\n\t\t{\"(PrivateKey).ScalarBaseMult\", Method, 0, \"\"},\n\t\t{\"(PrivateKey).ScalarMult\", Method, 0, \"\"},\n\t\t{\"(PublicKey).Add\", Method, 0, \"\"},\n\t\t{\"(PublicKey).Double\", Method, 0, \"\"},\n\t\t{\"(PublicKey).IsOnCurve\", Method, 0, \"\"},\n\t\t{\"(PublicKey).Params\", Method, 0, \"\"},\n\t\t{\"(PublicKey).ScalarBaseMult\", Method, 0, \"\"},\n\t\t{\"(PublicKey).ScalarMult\", Method, 0, \"\"},\n\t\t{\"GenerateKey\", Func, 0, \"func(c elliptic.Curve, r io.Reader) (*PrivateKey, error)\"},\n\t\t{\"ParseRawPrivateKey\", Func, 25, \"func(curve elliptic.Curve, data []byte) (*PrivateKey, error)\"},\n\t\t{\"ParseUncompressedPublicKey\", Func, 25, \"func(curve elliptic.Curve, data []byte) (*PublicKey, error)\"},\n\t\t{\"PrivateKey\", Type, 0, \"\"},\n\t\t{\"PrivateKey.D\", Field, 0, \"\"},\n\t\t{\"PrivateKey.PublicKey\", Field, 0, \"\"},\n\t\t{\"PublicKey\", Type, 0, \"\"},\n\t\t{\"PublicKey.Curve\", Field, 0, \"\"},\n\t\t{\"PublicKey.X\", Field, 0, \"\"},\n\t\t{\"PublicKey.Y\", Field, 0, \"\"},\n\t\t{\"Sign\", Func, 0, \"func(rand io.Reader, priv *PrivateKey, hash []byte) (r *big.Int, s *big.Int, err error)\"},\n\t\t{\"SignASN1\", Func, 15, \"func(r io.Reader, priv *PrivateKey, hash []byte) ([]byte, error)\"},\n\t\t{\"Verify\", Func, 0, \"func(pub *PublicKey, hash []byte, r *big.Int, s *big.Int) bool\"},\n\t\t{\"VerifyASN1\", Func, 15, \"func(pub *PublicKey, hash []byte, sig []byte) bool\"},\n\t},\n\t\"crypto/ed25519\": {\n\t\t{\"(*Options).HashFunc\", Method, 20, \"\"},\n\t\t{\"(PrivateKey).Equal\", Method, 15, \"\"},\n\t\t{\"(PrivateKey).Public\", Method, 13, \"\"},\n\t\t{\"(PrivateKey).Seed\", Method, 13, \"\"},\n\t\t{\"(PrivateKey).Sign\", Method, 13, \"\"},\n\t\t{\"(PublicKey).Equal\", Method, 15, \"\"},\n\t\t{\"GenerateKey\", Func, 13, \"func(random io.Reader) (PublicKey, PrivateKey, error)\"},\n\t\t{\"NewKeyFromSeed\", Func, 13, \"func(seed []byte) PrivateKey\"},\n\t\t{\"Options\", Type, 20, \"\"},\n\t\t{\"Options.Context\", Field, 20, \"\"},\n\t\t{\"Options.Hash\", Field, 20, \"\"},\n\t\t{\"PrivateKey\", Type, 13, \"\"},\n\t\t{\"PrivateKeySize\", Const, 13, \"\"},\n\t\t{\"PublicKey\", Type, 13, \"\"},\n\t\t{\"PublicKeySize\", Const, 13, \"\"},\n\t\t{\"SeedSize\", Const, 13, \"\"},\n\t\t{\"Sign\", Func, 13, \"func(privateKey PrivateKey, message []byte) []byte\"},\n\t\t{\"SignatureSize\", Const, 13, \"\"},\n\t\t{\"Verify\", Func, 13, \"func(publicKey PublicKey, message []byte, sig []byte) bool\"},\n\t\t{\"VerifyWithOptions\", Func, 20, \"func(publicKey PublicKey, message []byte, sig []byte, opts *Options) error\"},\n\t},\n\t\"crypto/elliptic\": {\n\t\t{\"(*CurveParams).Add\", Method, 0, \"\"},\n\t\t{\"(*CurveParams).Double\", Method, 0, \"\"},\n\t\t{\"(*CurveParams).IsOnCurve\", Method, 0, \"\"},\n\t\t{\"(*CurveParams).Params\", Method, 0, \"\"},\n\t\t{\"(*CurveParams).ScalarBaseMult\", Method, 0, \"\"},\n\t\t{\"(*CurveParams).ScalarMult\", Method, 0, \"\"},\n\t\t{\"(Curve).Add\", Method, 0, \"\"},\n\t\t{\"(Curve).Double\", Method, 0, \"\"},\n\t\t{\"(Curve).IsOnCurve\", Method, 0, \"\"},\n\t\t{\"(Curve).Params\", Method, 0, \"\"},\n\t\t{\"(Curve).ScalarBaseMult\", Method, 0, \"\"},\n\t\t{\"(Curve).ScalarMult\", Method, 0, \"\"},\n\t\t{\"Curve\", Type, 0, \"\"},\n\t\t{\"CurveParams\", Type, 0, \"\"},\n\t\t{\"CurveParams.B\", Field, 0, \"\"},\n\t\t{\"CurveParams.BitSize\", Field, 0, \"\"},\n\t\t{\"CurveParams.Gx\", Field, 0, \"\"},\n\t\t{\"CurveParams.Gy\", Field, 0, \"\"},\n\t\t{\"CurveParams.N\", Field, 0, \"\"},\n\t\t{\"CurveParams.Name\", Field, 5, \"\"},\n\t\t{\"CurveParams.P\", Field, 0, \"\"},\n\t\t{\"GenerateKey\", Func, 0, \"func(curve Curve, rand io.Reader) (priv []byte, x *big.Int, y *big.Int, err error)\"},\n\t\t{\"Marshal\", Func, 0, \"func(curve Curve, x *big.Int, y *big.Int) []byte\"},\n\t\t{\"MarshalCompressed\", Func, 15, \"func(curve Curve, x *big.Int, y *big.Int) []byte\"},\n\t\t{\"P224\", Func, 0, \"func() Curve\"},\n\t\t{\"P256\", Func, 0, \"func() Curve\"},\n\t\t{\"P384\", Func, 0, \"func() Curve\"},\n\t\t{\"P521\", Func, 0, \"func() Curve\"},\n\t\t{\"Unmarshal\", Func, 0, \"func(curve Curve, data []byte) (x *big.Int, y *big.Int)\"},\n\t\t{\"UnmarshalCompressed\", Func, 15, \"func(curve Curve, data []byte) (x *big.Int, y *big.Int)\"},\n\t},\n\t\"crypto/fips140\": {\n\t\t{\"Enabled\", Func, 24, \"func() bool\"},\n\t\t{\"Enforced\", Func, 26, \"func() bool\"},\n\t\t{\"Version\", Func, 26, \"func() string\"},\n\t\t{\"WithoutEnforcement\", Func, 26, \"func(f func())\"},\n\t},\n\t\"crypto/hkdf\": {\n\t\t{\"Expand\", Func, 24, \"func[H hash.Hash](h func() H, pseudorandomKey []byte, info string, keyLength int) ([]byte, error)\"},\n\t\t{\"Extract\", Func, 24, \"func[H hash.Hash](h func() H, secret []byte, salt []byte) ([]byte, error)\"},\n\t\t{\"Key\", Func, 24, \"func[Hash hash.Hash](h func() Hash, secret []byte, salt []byte, info string, keyLength int) ([]byte, error)\"},\n\t},\n\t\"crypto/hmac\": {\n\t\t{\"Equal\", Func, 1, \"func(mac1 []byte, mac2 []byte) bool\"},\n\t\t{\"New\", Func, 0, \"func(h func() hash.Hash, key []byte) hash.Hash\"},\n\t},\n\t\"crypto/hpke\": {\n\t\t{\"(*Recipient).Export\", Method, 26, \"\"},\n\t\t{\"(*Recipient).Open\", Method, 26, \"\"},\n\t\t{\"(*Sender).Export\", Method, 26, \"\"},\n\t\t{\"(*Sender).Seal\", Method, 26, \"\"},\n\t\t{\"(AEAD).ID\", Method, 26, \"\"},\n\t\t{\"(KDF).ID\", Method, 26, \"\"},\n\t\t{\"(KEM).DeriveKeyPair\", Method, 26, \"\"},\n\t\t{\"(KEM).GenerateKey\", Method, 26, \"\"},\n\t\t{\"(KEM).ID\", Method, 26, \"\"},\n\t\t{\"(KEM).NewPrivateKey\", Method, 26, \"\"},\n\t\t{\"(KEM).NewPublicKey\", Method, 26, \"\"},\n\t\t{\"(PrivateKey).Bytes\", Method, 26, \"\"},\n\t\t{\"(PrivateKey).KEM\", Method, 26, \"\"},\n\t\t{\"(PrivateKey).PublicKey\", Method, 26, \"\"},\n\t\t{\"(PublicKey).Bytes\", Method, 26, \"\"},\n\t\t{\"(PublicKey).KEM\", Method, 26, \"\"},\n\t\t{\"AES128GCM\", Func, 26, \"func() AEAD\"},\n\t\t{\"AES256GCM\", Func, 26, \"func() AEAD\"},\n\t\t{\"ChaCha20Poly1305\", Func, 26, \"func() AEAD\"},\n\t\t{\"DHKEM\", Func, 26, \"func(curve ecdh.Curve) KEM\"},\n\t\t{\"ExportOnly\", Func, 26, \"func() AEAD\"},\n\t\t{\"HKDFSHA256\", Func, 26, \"func() KDF\"},\n\t\t{\"HKDFSHA384\", Func, 26, \"func() KDF\"},\n\t\t{\"HKDFSHA512\", Func, 26, \"func() KDF\"},\n\t\t{\"MLKEM1024\", Func, 26, \"func() KEM\"},\n\t\t{\"MLKEM1024P384\", Func, 26, \"func() KEM\"},\n\t\t{\"MLKEM768\", Func, 26, \"func() KEM\"},\n\t\t{\"MLKEM768P256\", Func, 26, \"func() KEM\"},\n\t\t{\"MLKEM768X25519\", Func, 26, \"func() KEM\"},\n\t\t{\"NewAEAD\", Func, 26, \"func(id uint16) (AEAD, error)\"},\n\t\t{\"NewDHKEMPrivateKey\", Func, 26, \"func(priv ecdh.KeyExchanger) (PrivateKey, error)\"},\n\t\t{\"NewDHKEMPublicKey\", Func, 26, \"func(pub *ecdh.PublicKey) (PublicKey, error)\"},\n\t\t{\"NewHybridPrivateKey\", Func, 26, \"func(pq crypto.Decapsulator, t ecdh.KeyExchanger) (PrivateKey, error)\"},\n\t\t{\"NewHybridPublicKey\", Func, 26, \"func(pq crypto.Encapsulator, t *ecdh.PublicKey) (PublicKey, error)\"},\n\t\t{\"NewKDF\", Func, 26, \"func(id uint16) (KDF, error)\"},\n\t\t{\"NewKEM\", Func, 26, \"func(id uint16) (KEM, error)\"},\n\t\t{\"NewMLKEMPrivateKey\", Func, 26, \"func(priv crypto.Decapsulator) (PrivateKey, error)\"},\n\t\t{\"NewMLKEMPublicKey\", Func, 26, \"func(pub crypto.Encapsulator) (PublicKey, error)\"},\n\t\t{\"NewRecipient\", Func, 26, \"func(enc []byte, k PrivateKey, kdf KDF, aead AEAD, info []byte) (*Recipient, error)\"},\n\t\t{\"NewSender\", Func, 26, \"func(pk PublicKey, kdf KDF, aead AEAD, info []byte) (enc []byte, s *Sender, err error)\"},\n\t\t{\"Open\", Func, 26, \"func(k PrivateKey, kdf KDF, aead AEAD, info []byte, ciphertext []byte) ([]byte, error)\"},\n\t\t{\"Recipient\", Type, 26, \"\"},\n\t\t{\"SHAKE128\", Func, 26, \"func() KDF\"},\n\t\t{\"SHAKE256\", Func, 26, \"func() KDF\"},\n\t\t{\"Seal\", Func, 26, \"func(pk PublicKey, kdf KDF, aead AEAD, info []byte, plaintext []byte) ([]byte, error)\"},\n\t\t{\"Sender\", Type, 26, \"\"},\n\t},\n\t\"crypto/md5\": {\n\t\t{\"BlockSize\", Const, 0, \"\"},\n\t\t{\"New\", Func, 0, \"func() hash.Hash\"},\n\t\t{\"Size\", Const, 0, \"\"},\n\t\t{\"Sum\", Func, 2, \"func(data []byte) [16]byte\"},\n\t},\n\t\"crypto/mlkem\": {\n\t\t{\"(*DecapsulationKey1024).Bytes\", Method, 24, \"\"},\n\t\t{\"(*DecapsulationKey1024).Decapsulate\", Method, 24, \"\"},\n\t\t{\"(*DecapsulationKey1024).EncapsulationKey\", Method, 24, \"\"},\n\t\t{\"(*DecapsulationKey1024).Encapsulator\", Method, 26, \"\"},\n\t\t{\"(*DecapsulationKey768).Bytes\", Method, 24, \"\"},\n\t\t{\"(*DecapsulationKey768).Decapsulate\", Method, 24, \"\"},\n\t\t{\"(*DecapsulationKey768).EncapsulationKey\", Method, 24, \"\"},\n\t\t{\"(*DecapsulationKey768).Encapsulator\", Method, 26, \"\"},\n\t\t{\"(*EncapsulationKey1024).Bytes\", Method, 24, \"\"},\n\t\t{\"(*EncapsulationKey1024).Encapsulate\", Method, 24, \"\"},\n\t\t{\"(*EncapsulationKey768).Bytes\", Method, 24, \"\"},\n\t\t{\"(*EncapsulationKey768).Encapsulate\", Method, 24, \"\"},\n\t\t{\"CiphertextSize1024\", Const, 24, \"\"},\n\t\t{\"CiphertextSize768\", Const, 24, \"\"},\n\t\t{\"DecapsulationKey1024\", Type, 24, \"\"},\n\t\t{\"DecapsulationKey768\", Type, 24, \"\"},\n\t\t{\"EncapsulationKey1024\", Type, 24, \"\"},\n\t\t{\"EncapsulationKey768\", Type, 24, \"\"},\n\t\t{\"EncapsulationKeySize1024\", Const, 24, \"\"},\n\t\t{\"EncapsulationKeySize768\", Const, 24, \"\"},\n\t\t{\"GenerateKey1024\", Func, 24, \"func() (*DecapsulationKey1024, error)\"},\n\t\t{\"GenerateKey768\", Func, 24, \"func() (*DecapsulationKey768, error)\"},\n\t\t{\"NewDecapsulationKey1024\", Func, 24, \"func(seed []byte) (*DecapsulationKey1024, error)\"},\n\t\t{\"NewDecapsulationKey768\", Func, 24, \"func(seed []byte) (*DecapsulationKey768, error)\"},\n\t\t{\"NewEncapsulationKey1024\", Func, 24, \"func(encapsulationKey []byte) (*EncapsulationKey1024, error)\"},\n\t\t{\"NewEncapsulationKey768\", Func, 24, \"func(encapsulationKey []byte) (*EncapsulationKey768, error)\"},\n\t\t{\"SeedSize\", Const, 24, \"\"},\n\t\t{\"SharedKeySize\", Const, 24, \"\"},\n\t},\n\t\"crypto/mlkem/mlkemtest\": {\n\t\t{\"Encapsulate1024\", Func, 26, \"func(ek *mlkem.EncapsulationKey1024, random []byte) (sharedKey []byte, ciphertext []byte, err error)\"},\n\t\t{\"Encapsulate768\", Func, 26, \"func(ek *mlkem.EncapsulationKey768, random []byte) (sharedKey []byte, ciphertext []byte, err error)\"},\n\t},\n\t\"crypto/pbkdf2\": {\n\t\t{\"Key\", Func, 24, \"func[Hash hash.Hash](h func() Hash, password string, salt []byte, iter int, keyLength int) ([]byte, error)\"},\n\t},\n\t\"crypto/rand\": {\n\t\t{\"Int\", Func, 0, \"func(rand io.Reader, max *big.Int) (n *big.Int, err error)\"},\n\t\t{\"Prime\", Func, 0, \"func(r io.Reader, bits int) (*big.Int, error)\"},\n\t\t{\"Read\", Func, 0, \"func(b []byte) (n int, err error)\"},\n\t\t{\"Reader\", Var, 0, \"\"},\n\t\t{\"Text\", Func, 24, \"func() string\"},\n\t},\n\t\"crypto/rc4\": {\n\t\t{\"(*Cipher).Reset\", Method, 0, \"\"},\n\t\t{\"(*Cipher).XORKeyStream\", Method, 0, \"\"},\n\t\t{\"(KeySizeError).Error\", Method, 0, \"\"},\n\t\t{\"Cipher\", Type, 0, \"\"},\n\t\t{\"KeySizeError\", Type, 0, \"\"},\n\t\t{\"NewCipher\", Func, 0, \"func(key []byte) (*Cipher, error)\"},\n\t},\n\t\"crypto/rsa\": {\n\t\t{\"(*PSSOptions).HashFunc\", Method, 4, \"\"},\n\t\t{\"(*PrivateKey).Decrypt\", Method, 5, \"\"},\n\t\t{\"(*PrivateKey).Equal\", Method, 15, \"\"},\n\t\t{\"(*PrivateKey).Precompute\", Method, 0, \"\"},\n\t\t{\"(*PrivateKey).Public\", Method, 4, \"\"},\n\t\t{\"(*PrivateKey).Sign\", Method, 4, \"\"},\n\t\t{\"(*PrivateKey).Size\", Method, 11, \"\"},\n\t\t{\"(*PrivateKey).Validate\", Method, 0, \"\"},\n\t\t{\"(*PublicKey).Equal\", Method, 15, \"\"},\n\t\t{\"(*PublicKey).Size\", Method, 11, \"\"},\n\t\t{\"CRTValue\", Type, 0, \"\"},\n\t\t{\"CRTValue.Coeff\", Field, 0, \"\"},\n\t\t{\"CRTValue.Exp\", Field, 0, \"\"},\n\t\t{\"CRTValue.R\", Field, 0, \"\"},\n\t\t{\"DecryptOAEP\", Func, 0, \"func(hash hash.Hash, random io.Reader, priv *PrivateKey, ciphertext []byte, label []byte) ([]byte, error)\"},\n\t\t{\"DecryptPKCS1v15\", Func, 0, \"func(random io.Reader, priv *PrivateKey, ciphertext []byte) ([]byte, error)\"},\n\t\t{\"DecryptPKCS1v15SessionKey\", Func, 0, \"func(random io.Reader, priv *PrivateKey, ciphertext []byte, key []byte) error\"},\n\t\t{\"EncryptOAEP\", Func, 0, \"func(hash hash.Hash, random io.Reader, pub *PublicKey, msg []byte, label []byte) ([]byte, error)\"},\n\t\t{\"EncryptOAEPWithOptions\", Func, 26, \"func(random io.Reader, pub *PublicKey, msg []byte, opts *OAEPOptions) ([]byte, error)\"},\n\t\t{\"EncryptPKCS1v15\", Func, 0, \"func(random io.Reader, pub *PublicKey, msg []byte) ([]byte, error)\"},\n\t\t{\"ErrDecryption\", Var, 0, \"\"},\n\t\t{\"ErrMessageTooLong\", Var, 0, \"\"},\n\t\t{\"ErrVerification\", Var, 0, \"\"},\n\t\t{\"GenerateKey\", Func, 0, \"func(random io.Reader, bits int) (*PrivateKey, error)\"},\n\t\t{\"GenerateMultiPrimeKey\", Func, 0, \"func(random io.Reader, nprimes int, bits int) (*PrivateKey, error)\"},\n\t\t{\"OAEPOptions\", Type, 5, \"\"},\n\t\t{\"OAEPOptions.Hash\", Field, 5, \"\"},\n\t\t{\"OAEPOptions.Label\", Field, 5, \"\"},\n\t\t{\"OAEPOptions.MGFHash\", Field, 20, \"\"},\n\t\t{\"PKCS1v15DecryptOptions\", Type, 5, \"\"},\n\t\t{\"PKCS1v15DecryptOptions.SessionKeyLen\", Field, 5, \"\"},\n\t\t{\"PSSOptions\", Type, 2, \"\"},\n\t\t{\"PSSOptions.Hash\", Field, 4, \"\"},\n\t\t{\"PSSOptions.SaltLength\", Field, 2, \"\"},\n\t\t{\"PSSSaltLengthAuto\", Const, 2, \"\"},\n\t\t{\"PSSSaltLengthEqualsHash\", Const, 2, \"\"},\n\t\t{\"PrecomputedValues\", Type, 0, \"\"},\n\t\t{\"PrecomputedValues.CRTValues\", Field, 0, \"\"},\n\t\t{\"PrecomputedValues.Dp\", Field, 0, \"\"},\n\t\t{\"PrecomputedValues.Dq\", Field, 0, \"\"},\n\t\t{\"PrecomputedValues.Qinv\", Field, 0, \"\"},\n\t\t{\"PrivateKey\", Type, 0, \"\"},\n\t\t{\"PrivateKey.D\", Field, 0, \"\"},\n\t\t{\"PrivateKey.Precomputed\", Field, 0, \"\"},\n\t\t{\"PrivateKey.Primes\", Field, 0, \"\"},\n\t\t{\"PrivateKey.PublicKey\", Field, 0, \"\"},\n\t\t{\"PublicKey\", Type, 0, \"\"},\n\t\t{\"PublicKey.E\", Field, 0, \"\"},\n\t\t{\"PublicKey.N\", Field, 0, \"\"},\n\t\t{\"SignPKCS1v15\", Func, 0, \"func(random io.Reader, priv *PrivateKey, hash crypto.Hash, hashed []byte) ([]byte, error)\"},\n\t\t{\"SignPSS\", Func, 2, \"func(random io.Reader, priv *PrivateKey, hash crypto.Hash, digest []byte, opts *PSSOptions) ([]byte, error)\"},\n\t\t{\"VerifyPKCS1v15\", Func, 0, \"func(pub *PublicKey, hash crypto.Hash, hashed []byte, sig []byte) error\"},\n\t\t{\"VerifyPSS\", Func, 2, \"func(pub *PublicKey, hash crypto.Hash, digest []byte, sig []byte, opts *PSSOptions) error\"},\n\t},\n\t\"crypto/sha1\": {\n\t\t{\"BlockSize\", Const, 0, \"\"},\n\t\t{\"New\", Func, 0, \"func() hash.Hash\"},\n\t\t{\"Size\", Const, 0, \"\"},\n\t\t{\"Sum\", Func, 2, \"func(data []byte) [20]byte\"},\n\t},\n\t\"crypto/sha256\": {\n\t\t{\"BlockSize\", Const, 0, \"\"},\n\t\t{\"New\", Func, 0, \"func() hash.Hash\"},\n\t\t{\"New224\", Func, 0, \"func() hash.Hash\"},\n\t\t{\"Size\", Const, 0, \"\"},\n\t\t{\"Size224\", Const, 0, \"\"},\n\t\t{\"Sum224\", Func, 2, \"func(data []byte) [28]byte\"},\n\t\t{\"Sum256\", Func, 2, \"func(data []byte) [32]byte\"},\n\t},\n\t\"crypto/sha3\": {\n\t\t{\"(*SHA3).AppendBinary\", Method, 24, \"\"},\n\t\t{\"(*SHA3).BlockSize\", Method, 24, \"\"},\n\t\t{\"(*SHA3).Clone\", Method, 25, \"\"},\n\t\t{\"(*SHA3).MarshalBinary\", Method, 24, \"\"},\n\t\t{\"(*SHA3).Reset\", Method, 24, \"\"},\n\t\t{\"(*SHA3).Size\", Method, 24, \"\"},\n\t\t{\"(*SHA3).Sum\", Method, 24, \"\"},\n\t\t{\"(*SHA3).UnmarshalBinary\", Method, 24, \"\"},\n\t\t{\"(*SHA3).Write\", Method, 24, \"\"},\n\t\t{\"(*SHAKE).AppendBinary\", Method, 24, \"\"},\n\t\t{\"(*SHAKE).BlockSize\", Method, 24, \"\"},\n\t\t{\"(*SHAKE).MarshalBinary\", Method, 24, \"\"},\n\t\t{\"(*SHAKE).Read\", Method, 24, \"\"},\n\t\t{\"(*SHAKE).Reset\", Method, 24, \"\"},\n\t\t{\"(*SHAKE).UnmarshalBinary\", Method, 24, \"\"},\n\t\t{\"(*SHAKE).Write\", Method, 24, \"\"},\n\t\t{\"New224\", Func, 24, \"func() *SHA3\"},\n\t\t{\"New256\", Func, 24, \"func() *SHA3\"},\n\t\t{\"New384\", Func, 24, \"func() *SHA3\"},\n\t\t{\"New512\", Func, 24, \"func() *SHA3\"},\n\t\t{\"NewCSHAKE128\", Func, 24, \"func(N []byte, S []byte) *SHAKE\"},\n\t\t{\"NewCSHAKE256\", Func, 24, \"func(N []byte, S []byte) *SHAKE\"},\n\t\t{\"NewSHAKE128\", Func, 24, \"func() *SHAKE\"},\n\t\t{\"NewSHAKE256\", Func, 24, \"func() *SHAKE\"},\n\t\t{\"SHA3\", Type, 24, \"\"},\n\t\t{\"SHAKE\", Type, 24, \"\"},\n\t\t{\"Sum224\", Func, 24, \"func(data []byte) [28]byte\"},\n\t\t{\"Sum256\", Func, 24, \"func(data []byte) [32]byte\"},\n\t\t{\"Sum384\", Func, 24, \"func(data []byte) [48]byte\"},\n\t\t{\"Sum512\", Func, 24, \"func(data []byte) [64]byte\"},\n\t\t{\"SumSHAKE128\", Func, 24, \"func(data []byte, length int) []byte\"},\n\t\t{\"SumSHAKE256\", Func, 24, \"func(data []byte, length int) []byte\"},\n\t},\n\t\"crypto/sha512\": {\n\t\t{\"BlockSize\", Const, 0, \"\"},\n\t\t{\"New\", Func, 0, \"func() hash.Hash\"},\n\t\t{\"New384\", Func, 0, \"func() hash.Hash\"},\n\t\t{\"New512_224\", Func, 5, \"func() hash.Hash\"},\n\t\t{\"New512_256\", Func, 5, \"func() hash.Hash\"},\n\t\t{\"Size\", Const, 0, \"\"},\n\t\t{\"Size224\", Const, 5, \"\"},\n\t\t{\"Size256\", Const, 5, \"\"},\n\t\t{\"Size384\", Const, 0, \"\"},\n\t\t{\"Sum384\", Func, 2, \"func(data []byte) [48]byte\"},\n\t\t{\"Sum512\", Func, 2, \"func(data []byte) [64]byte\"},\n\t\t{\"Sum512_224\", Func, 5, \"func(data []byte) [28]byte\"},\n\t\t{\"Sum512_256\", Func, 5, \"func(data []byte) [32]byte\"},\n\t},\n\t\"crypto/subtle\": {\n\t\t{\"ConstantTimeByteEq\", Func, 0, \"func(x uint8, y uint8) int\"},\n\t\t{\"ConstantTimeCompare\", Func, 0, \"func(x []byte, y []byte) int\"},\n\t\t{\"ConstantTimeCopy\", Func, 0, \"func(v int, x []byte, y []byte)\"},\n\t\t{\"ConstantTimeEq\", Func, 0, \"func(x int32, y int32) int\"},\n\t\t{\"ConstantTimeLessOrEq\", Func, 2, \"func(x int, y int) int\"},\n\t\t{\"ConstantTimeSelect\", Func, 0, \"func(v int, x int, y int) int\"},\n\t\t{\"WithDataIndependentTiming\", Func, 24, \"func(f func())\"},\n\t\t{\"XORBytes\", Func, 20, \"func(dst []byte, x []byte, y []byte) int\"},\n\t},\n\t\"crypto/tls\": {\n\t\t{\"(*CertificateRequestInfo).Context\", Method, 17, \"\"},\n\t\t{\"(*CertificateRequestInfo).SupportsCertificate\", Method, 14, \"\"},\n\t\t{\"(*CertificateVerificationError).Error\", Method, 20, \"\"},\n\t\t{\"(*CertificateVerificationError).Unwrap\", Method, 20, \"\"},\n\t\t{\"(*ClientHelloInfo).Context\", Method, 17, \"\"},\n\t\t{\"(*ClientHelloInfo).SupportsCertificate\", Method, 14, \"\"},\n\t\t{\"(*ClientSessionState).ResumptionState\", Method, 21, \"\"},\n\t\t{\"(*Config).BuildNameToCertificate\", Method, 0, \"\"},\n\t\t{\"(*Config).Clone\", Method, 8, \"\"},\n\t\t{\"(*Config).DecryptTicket\", Method, 21, \"\"},\n\t\t{\"(*Config).EncryptTicket\", Method, 21, \"\"},\n\t\t{\"(*Config).SetSessionTicketKeys\", Method, 5, \"\"},\n\t\t{\"(*Conn).Close\", Method, 0, \"\"},\n\t\t{\"(*Conn).CloseWrite\", Method, 8, \"\"},\n\t\t{\"(*Conn).ConnectionState\", Method, 0, \"\"},\n\t\t{\"(*Conn).Handshake\", Method, 0, \"\"},\n\t\t{\"(*Conn).HandshakeContext\", Method, 17, \"\"},\n\t\t{\"(*Conn).LocalAddr\", Method, 0, \"\"},\n\t\t{\"(*Conn).NetConn\", Method, 18, \"\"},\n\t\t{\"(*Conn).OCSPResponse\", Method, 0, \"\"},\n\t\t{\"(*Conn).Read\", Method, 0, \"\"},\n\t\t{\"(*Conn).RemoteAddr\", Method, 0, \"\"},\n\t\t{\"(*Conn).SetDeadline\", Method, 0, \"\"},\n\t\t{\"(*Conn).SetReadDeadline\", Method, 0, \"\"},\n\t\t{\"(*Conn).SetWriteDeadline\", Method, 0, \"\"},\n\t\t{\"(*Conn).VerifyHostname\", Method, 0, \"\"},\n\t\t{\"(*Conn).Write\", Method, 0, \"\"},\n\t\t{\"(*ConnectionState).ExportKeyingMaterial\", Method, 11, \"\"},\n\t\t{\"(*Dialer).Dial\", Method, 15, \"\"},\n\t\t{\"(*Dialer).DialContext\", Method, 15, \"\"},\n\t\t{\"(*ECHRejectionError).Error\", Method, 23, \"\"},\n\t\t{\"(*QUICConn).Close\", Method, 21, \"\"},\n\t\t{\"(*QUICConn).ConnectionState\", Method, 21, \"\"},\n\t\t{\"(*QUICConn).HandleData\", Method, 21, \"\"},\n\t\t{\"(*QUICConn).NextEvent\", Method, 21, \"\"},\n\t\t{\"(*QUICConn).SendSessionTicket\", Method, 21, \"\"},\n\t\t{\"(*QUICConn).SetTransportParameters\", Method, 21, \"\"},\n\t\t{\"(*QUICConn).Start\", Method, 21, \"\"},\n\t\t{\"(*QUICConn).StoreSession\", Method, 23, \"\"},\n\t\t{\"(*SessionState).Bytes\", Method, 21, \"\"},\n\t\t{\"(AlertError).Error\", Method, 21, \"\"},\n\t\t{\"(ClientAuthType).String\", Method, 15, \"\"},\n\t\t{\"(ClientSessionCache).Get\", Method, 3, \"\"},\n\t\t{\"(ClientSessionCache).Put\", Method, 3, \"\"},\n\t\t{\"(CurveID).String\", Method, 15, \"\"},\n\t\t{\"(QUICEncryptionLevel).String\", Method, 21, \"\"},\n\t\t{\"(RecordHeaderError).Error\", Method, 6, \"\"},\n\t\t{\"(SignatureScheme).String\", Method, 15, \"\"},\n\t\t{\"AlertError\", Type, 21, \"\"},\n\t\t{\"Certificate\", Type, 0, \"\"},\n\t\t{\"Certificate.Certificate\", Field, 0, \"\"},\n\t\t{\"Certificate.Leaf\", Field, 0, \"\"},\n\t\t{\"Certificate.OCSPStaple\", Field, 0, \"\"},\n\t\t{\"Certificate.PrivateKey\", Field, 0, \"\"},\n\t\t{\"Certificate.SignedCertificateTimestamps\", Field, 5, \"\"},\n\t\t{\"Certificate.SupportedSignatureAlgorithms\", Field, 14, \"\"},\n\t\t{\"CertificateRequestInfo\", Type, 8, \"\"},\n\t\t{\"CertificateRequestInfo.AcceptableCAs\", Field, 8, \"\"},\n\t\t{\"CertificateRequestInfo.SignatureSchemes\", Field, 8, \"\"},\n\t\t{\"CertificateRequestInfo.Version\", Field, 14, \"\"},\n\t\t{\"CertificateVerificationError\", Type, 20, \"\"},\n\t\t{\"CertificateVerificationError.Err\", Field, 20, \"\"},\n\t\t{\"CertificateVerificationError.UnverifiedCertificates\", Field, 20, \"\"},\n\t\t{\"CipherSuite\", Type, 14, \"\"},\n\t\t{\"CipherSuite.ID\", Field, 14, \"\"},\n\t\t{\"CipherSuite.Insecure\", Field, 14, \"\"},\n\t\t{\"CipherSuite.Name\", Field, 14, \"\"},\n\t\t{\"CipherSuite.SupportedVersions\", Field, 14, \"\"},\n\t\t{\"CipherSuiteName\", Func, 14, \"func(id uint16) string\"},\n\t\t{\"CipherSuites\", Func, 14, \"func() []*CipherSuite\"},\n\t\t{\"Client\", Func, 0, \"func(conn net.Conn, config *Config) *Conn\"},\n\t\t{\"ClientAuthType\", Type, 0, \"\"},\n\t\t{\"ClientHelloInfo\", Type, 4, \"\"},\n\t\t{\"ClientHelloInfo.CipherSuites\", Field, 4, \"\"},\n\t\t{\"ClientHelloInfo.Conn\", Field, 8, \"\"},\n\t\t{\"ClientHelloInfo.Extensions\", Field, 24, \"\"},\n\t\t{\"ClientHelloInfo.HelloRetryRequest\", Field, 26, \"\"},\n\t\t{\"ClientHelloInfo.ServerName\", Field, 4, \"\"},\n\t\t{\"ClientHelloInfo.SignatureSchemes\", Field, 8, \"\"},\n\t\t{\"ClientHelloInfo.SupportedCurves\", Field, 4, \"\"},\n\t\t{\"ClientHelloInfo.SupportedPoints\", Field, 4, \"\"},\n\t\t{\"ClientHelloInfo.SupportedProtos\", Field, 8, \"\"},\n\t\t{\"ClientHelloInfo.SupportedVersions\", Field, 8, \"\"},\n\t\t{\"ClientSessionCache\", Type, 3, \"\"},\n\t\t{\"ClientSessionState\", Type, 3, \"\"},\n\t\t{\"Config\", Type, 0, \"\"},\n\t\t{\"Config.Certificates\", Field, 0, \"\"},\n\t\t{\"Config.CipherSuites\", Field, 0, \"\"},\n\t\t{\"Config.ClientAuth\", Field, 0, \"\"},\n\t\t{\"Config.ClientCAs\", Field, 0, \"\"},\n\t\t{\"Config.ClientSessionCache\", Field, 3, \"\"},\n\t\t{\"Config.CurvePreferences\", Field, 3, \"\"},\n\t\t{\"Config.DynamicRecordSizingDisabled\", Field, 7, \"\"},\n\t\t{\"Config.EncryptedClientHelloConfigList\", Field, 23, \"\"},\n\t\t{\"Config.EncryptedClientHelloKeys\", Field, 24, \"\"},\n\t\t{\"Config.EncryptedClientHelloRejectionVerify\", Field, 23, \"\"},\n\t\t{\"Config.GetCertificate\", Field, 4, \"\"},\n\t\t{\"Config.GetClientCertificate\", Field, 8, \"\"},\n\t\t{\"Config.GetConfigForClient\", Field, 8, \"\"},\n\t\t{\"Config.GetEncryptedClientHelloKeys\", Field, 25, \"\"},\n\t\t{\"Config.InsecureSkipVerify\", Field, 0, \"\"},\n\t\t{\"Config.KeyLogWriter\", Field, 8, \"\"},\n\t\t{\"Config.MaxVersion\", Field, 2, \"\"},\n\t\t{\"Config.MinVersion\", Field, 2, \"\"},\n\t\t{\"Config.NameToCertificate\", Field, 0, \"\"},\n\t\t{\"Config.NextProtos\", Field, 0, \"\"},\n\t\t{\"Config.PreferServerCipherSuites\", Field, 1, \"\"},\n\t\t{\"Config.Rand\", Field, 0, \"\"},\n\t\t{\"Config.Renegotiation\", Field, 7, \"\"},\n\t\t{\"Config.RootCAs\", Field, 0, \"\"},\n\t\t{\"Config.ServerName\", Field, 0, \"\"},\n\t\t{\"Config.SessionTicketKey\", Field, 1, \"\"},\n\t\t{\"Config.SessionTicketsDisabled\", Field, 1, \"\"},\n\t\t{\"Config.Time\", Field, 0, \"\"},\n\t\t{\"Config.UnwrapSession\", Field, 21, \"\"},\n\t\t{\"Config.VerifyConnection\", Field, 15, \"\"},\n\t\t{\"Config.VerifyPeerCertificate\", Field, 8, \"\"},\n\t\t{\"Config.WrapSession\", Field, 21, \"\"},\n\t\t{\"Conn\", Type, 0, \"\"},\n\t\t{\"ConnectionState\", Type, 0, \"\"},\n\t\t{\"ConnectionState.CipherSuite\", Field, 0, \"\"},\n\t\t{\"ConnectionState.CurveID\", Field, 25, \"\"},\n\t\t{\"ConnectionState.DidResume\", Field, 1, \"\"},\n\t\t{\"ConnectionState.ECHAccepted\", Field, 23, \"\"},\n\t\t{\"ConnectionState.HandshakeComplete\", Field, 0, \"\"},\n\t\t{\"ConnectionState.HelloRetryRequest\", Field, 26, \"\"},\n\t\t{\"ConnectionState.NegotiatedProtocol\", Field, 0, \"\"},\n\t\t{\"ConnectionState.NegotiatedProtocolIsMutual\", Field, 0, \"\"},\n\t\t{\"ConnectionState.OCSPResponse\", Field, 5, \"\"},\n\t\t{\"ConnectionState.PeerCertificates\", Field, 0, \"\"},\n\t\t{\"ConnectionState.ServerName\", Field, 0, \"\"},\n\t\t{\"ConnectionState.SignedCertificateTimestamps\", Field, 5, \"\"},\n\t\t{\"ConnectionState.TLSUnique\", Field, 4, \"\"},\n\t\t{\"ConnectionState.VerifiedChains\", Field, 0, \"\"},\n\t\t{\"ConnectionState.Version\", Field, 3, \"\"},\n\t\t{\"CurveID\", Type, 3, \"\"},\n\t\t{\"CurveP256\", Const, 3, \"\"},\n\t\t{\"CurveP384\", Const, 3, \"\"},\n\t\t{\"CurveP521\", Const, 3, \"\"},\n\t\t{\"Dial\", Func, 0, \"func(network string, addr string, config *Config) (*Conn, error)\"},\n\t\t{\"DialWithDialer\", Func, 3, \"func(dialer *net.Dialer, network string, addr string, config *Config) (*Conn, error)\"},\n\t\t{\"Dialer\", Type, 15, \"\"},\n\t\t{\"Dialer.Config\", Field, 15, \"\"},\n\t\t{\"Dialer.NetDialer\", Field, 15, \"\"},\n\t\t{\"ECDSAWithP256AndSHA256\", Const, 8, \"\"},\n\t\t{\"ECDSAWithP384AndSHA384\", Const, 8, \"\"},\n\t\t{\"ECDSAWithP521AndSHA512\", Const, 8, \"\"},\n\t\t{\"ECDSAWithSHA1\", Const, 10, \"\"},\n\t\t{\"ECHRejectionError\", Type, 23, \"\"},\n\t\t{\"ECHRejectionError.RetryConfigList\", Field, 23, \"\"},\n\t\t{\"Ed25519\", Const, 13, \"\"},\n\t\t{\"EncryptedClientHelloKey\", Type, 24, \"\"},\n\t\t{\"EncryptedClientHelloKey.Config\", Field, 24, \"\"},\n\t\t{\"EncryptedClientHelloKey.PrivateKey\", Field, 24, \"\"},\n\t\t{\"EncryptedClientHelloKey.SendAsRetry\", Field, 24, \"\"},\n\t\t{\"InsecureCipherSuites\", Func, 14, \"func() []*CipherSuite\"},\n\t\t{\"Listen\", Func, 0, \"func(network string, laddr string, config *Config) (net.Listener, error)\"},\n\t\t{\"LoadX509KeyPair\", Func, 0, \"func(certFile string, keyFile string) (Certificate, error)\"},\n\t\t{\"NewLRUClientSessionCache\", Func, 3, \"func(capacity int) ClientSessionCache\"},\n\t\t{\"NewListener\", Func, 0, \"func(inner net.Listener, config *Config) net.Listener\"},\n\t\t{\"NewResumptionState\", Func, 21, \"func(ticket []byte, state *SessionState) (*ClientSessionState, error)\"},\n\t\t{\"NoClientCert\", Const, 0, \"\"},\n\t\t{\"PKCS1WithSHA1\", Const, 8, \"\"},\n\t\t{\"PKCS1WithSHA256\", Const, 8, \"\"},\n\t\t{\"PKCS1WithSHA384\", Const, 8, \"\"},\n\t\t{\"PKCS1WithSHA512\", Const, 8, \"\"},\n\t\t{\"PSSWithSHA256\", Const, 8, \"\"},\n\t\t{\"PSSWithSHA384\", Const, 8, \"\"},\n\t\t{\"PSSWithSHA512\", Const, 8, \"\"},\n\t\t{\"ParseSessionState\", Func, 21, \"func(data []byte) (*SessionState, error)\"},\n\t\t{\"QUICClient\", Func, 21, \"func(config *QUICConfig) *QUICConn\"},\n\t\t{\"QUICConfig\", Type, 21, \"\"},\n\t\t{\"QUICConfig.EnableSessionEvents\", Field, 23, \"\"},\n\t\t{\"QUICConfig.TLSConfig\", Field, 21, \"\"},\n\t\t{\"QUICConn\", Type, 21, \"\"},\n\t\t{\"QUICEncryptionLevel\", Type, 21, \"\"},\n\t\t{\"QUICEncryptionLevelApplication\", Const, 21, \"\"},\n\t\t{\"QUICEncryptionLevelEarly\", Const, 21, \"\"},\n\t\t{\"QUICEncryptionLevelHandshake\", Const, 21, \"\"},\n\t\t{\"QUICEncryptionLevelInitial\", Const, 21, \"\"},\n\t\t{\"QUICErrorEvent\", Const, 26, \"\"},\n\t\t{\"QUICEvent\", Type, 21, \"\"},\n\t\t{\"QUICEvent.Data\", Field, 21, \"\"},\n\t\t{\"QUICEvent.Err\", Field, 26, \"\"},\n\t\t{\"QUICEvent.Kind\", Field, 21, \"\"},\n\t\t{\"QUICEvent.Level\", Field, 21, \"\"},\n\t\t{\"QUICEvent.SessionState\", Field, 23, \"\"},\n\t\t{\"QUICEvent.Suite\", Field, 21, \"\"},\n\t\t{\"QUICEventKind\", Type, 21, \"\"},\n\t\t{\"QUICHandshakeDone\", Const, 21, \"\"},\n\t\t{\"QUICNoEvent\", Const, 21, \"\"},\n\t\t{\"QUICRejectedEarlyData\", Const, 21, \"\"},\n\t\t{\"QUICResumeSession\", Const, 23, \"\"},\n\t\t{\"QUICServer\", Func, 21, \"func(config *QUICConfig) *QUICConn\"},\n\t\t{\"QUICSessionTicketOptions\", Type, 21, \"\"},\n\t\t{\"QUICSessionTicketOptions.EarlyData\", Field, 21, \"\"},\n\t\t{\"QUICSessionTicketOptions.Extra\", Field, 23, \"\"},\n\t\t{\"QUICSetReadSecret\", Const, 21, \"\"},\n\t\t{\"QUICSetWriteSecret\", Const, 21, \"\"},\n\t\t{\"QUICStoreSession\", Const, 23, \"\"},\n\t\t{\"QUICTransportParameters\", Const, 21, \"\"},\n\t\t{\"QUICTransportParametersRequired\", Const, 21, \"\"},\n\t\t{\"QUICWriteData\", Const, 21, \"\"},\n\t\t{\"RecordHeaderError\", Type, 6, \"\"},\n\t\t{\"RecordHeaderError.Conn\", Field, 12, \"\"},\n\t\t{\"RecordHeaderError.Msg\", Field, 6, \"\"},\n\t\t{\"RecordHeaderError.RecordHeader\", Field, 6, \"\"},\n\t\t{\"RenegotiateFreelyAsClient\", Const, 7, \"\"},\n\t\t{\"RenegotiateNever\", Const, 7, \"\"},\n\t\t{\"RenegotiateOnceAsClient\", Const, 7, \"\"},\n\t\t{\"RenegotiationSupport\", Type, 7, \"\"},\n\t\t{\"RequestClientCert\", Const, 0, \"\"},\n\t\t{\"RequireAndVerifyClientCert\", Const, 0, \"\"},\n\t\t{\"RequireAnyClientCert\", Const, 0, \"\"},\n\t\t{\"SecP256r1MLKEM768\", Const, 26, \"\"},\n\t\t{\"SecP384r1MLKEM1024\", Const, 26, \"\"},\n\t\t{\"Server\", Func, 0, \"func(conn net.Conn, config *Config) *Conn\"},\n\t\t{\"SessionState\", Type, 21, \"\"},\n\t\t{\"SessionState.EarlyData\", Field, 21, \"\"},\n\t\t{\"SessionState.Extra\", Field, 21, \"\"},\n\t\t{\"SignatureScheme\", Type, 8, \"\"},\n\t\t{\"TLS_AES_128_GCM_SHA256\", Const, 12, \"\"},\n\t\t{\"TLS_AES_256_GCM_SHA384\", Const, 12, \"\"},\n\t\t{\"TLS_CHACHA20_POLY1305_SHA256\", Const, 12, \"\"},\n\t\t{\"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA\", Const, 2, \"\"},\n\t\t{\"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256\", Const, 8, \"\"},\n\t\t{\"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256\", Const, 2, \"\"},\n\t\t{\"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA\", Const, 2, \"\"},\n\t\t{\"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384\", Const, 5, \"\"},\n\t\t{\"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305\", Const, 8, \"\"},\n\t\t{\"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256\", Const, 14, \"\"},\n\t\t{\"TLS_ECDHE_ECDSA_WITH_RC4_128_SHA\", Const, 2, \"\"},\n\t\t{\"TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA\", Const, 0, \"\"},\n\t\t{\"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA\", Const, 0, \"\"},\n\t\t{\"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256\", Const, 8, \"\"},\n\t\t{\"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256\", Const, 2, \"\"},\n\t\t{\"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA\", Const, 1, \"\"},\n\t\t{\"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384\", Const, 5, \"\"},\n\t\t{\"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305\", Const, 8, \"\"},\n\t\t{\"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256\", Const, 14, \"\"},\n\t\t{\"TLS_ECDHE_RSA_WITH_RC4_128_SHA\", Const, 0, \"\"},\n\t\t{\"TLS_FALLBACK_SCSV\", Const, 4, \"\"},\n\t\t{\"TLS_RSA_WITH_3DES_EDE_CBC_SHA\", Const, 0, \"\"},\n\t\t{\"TLS_RSA_WITH_AES_128_CBC_SHA\", Const, 0, \"\"},\n\t\t{\"TLS_RSA_WITH_AES_128_CBC_SHA256\", Const, 8, \"\"},\n\t\t{\"TLS_RSA_WITH_AES_128_GCM_SHA256\", Const, 6, \"\"},\n\t\t{\"TLS_RSA_WITH_AES_256_CBC_SHA\", Const, 1, \"\"},\n\t\t{\"TLS_RSA_WITH_AES_256_GCM_SHA384\", Const, 6, \"\"},\n\t\t{\"TLS_RSA_WITH_RC4_128_SHA\", Const, 0, \"\"},\n\t\t{\"VerifyClientCertIfGiven\", Const, 0, \"\"},\n\t\t{\"VersionName\", Func, 21, \"func(version uint16) string\"},\n\t\t{\"VersionSSL30\", Const, 2, \"\"},\n\t\t{\"VersionTLS10\", Const, 2, \"\"},\n\t\t{\"VersionTLS11\", Const, 2, \"\"},\n\t\t{\"VersionTLS12\", Const, 2, \"\"},\n\t\t{\"VersionTLS13\", Const, 12, \"\"},\n\t\t{\"X25519\", Const, 8, \"\"},\n\t\t{\"X25519MLKEM768\", Const, 24, \"\"},\n\t\t{\"X509KeyPair\", Func, 0, \"func(certPEMBlock []byte, keyPEMBlock []byte) (Certificate, error)\"},\n\t},\n\t\"crypto/x509\": {\n\t\t{\"(*CertPool).AddCert\", Method, 0, \"\"},\n\t\t{\"(*CertPool).AddCertWithConstraint\", Method, 22, \"\"},\n\t\t{\"(*CertPool).AppendCertsFromPEM\", Method, 0, \"\"},\n\t\t{\"(*CertPool).Clone\", Method, 19, \"\"},\n\t\t{\"(*CertPool).Equal\", Method, 19, \"\"},\n\t\t{\"(*CertPool).Subjects\", Method, 0, \"\"},\n\t\t{\"(*Certificate).CheckCRLSignature\", Method, 0, \"\"},\n\t\t{\"(*Certificate).CheckSignature\", Method, 0, \"\"},\n\t\t{\"(*Certificate).CheckSignatureFrom\", Method, 0, \"\"},\n\t\t{\"(*Certificate).CreateCRL\", Method, 0, \"\"},\n\t\t{\"(*Certificate).Equal\", Method, 0, \"\"},\n\t\t{\"(*Certificate).Verify\", Method, 0, \"\"},\n\t\t{\"(*Certificate).VerifyHostname\", Method, 0, \"\"},\n\t\t{\"(*CertificateRequest).CheckSignature\", Method, 5, \"\"},\n\t\t{\"(*OID).UnmarshalBinary\", Method, 23, \"\"},\n\t\t{\"(*OID).UnmarshalText\", Method, 23, \"\"},\n\t\t{\"(*RevocationList).CheckSignatureFrom\", Method, 19, \"\"},\n\t\t{\"(CertificateInvalidError).Error\", Method, 0, \"\"},\n\t\t{\"(ConstraintViolationError).Error\", Method, 0, \"\"},\n\t\t{\"(ExtKeyUsage).OID\", Method, 26, \"\"},\n\t\t{\"(ExtKeyUsage).String\", Method, 26, \"\"},\n\t\t{\"(HostnameError).Error\", Method, 0, \"\"},\n\t\t{\"(InsecureAlgorithmError).Error\", Method, 6, \"\"},\n\t\t{\"(KeyUsage).String\", Method, 26, \"\"},\n\t\t{\"(OID).AppendBinary\", Method, 24, \"\"},\n\t\t{\"(OID).AppendText\", Method, 24, \"\"},\n\t\t{\"(OID).Equal\", Method, 22, \"\"},\n\t\t{\"(OID).EqualASN1OID\", Method, 22, \"\"},\n\t\t{\"(OID).MarshalBinary\", Method, 23, \"\"},\n\t\t{\"(OID).MarshalText\", Method, 23, \"\"},\n\t\t{\"(OID).String\", Method, 22, \"\"},\n\t\t{\"(PublicKeyAlgorithm).String\", Method, 10, \"\"},\n\t\t{\"(SignatureAlgorithm).String\", Method, 6, \"\"},\n\t\t{\"(SystemRootsError).Error\", Method, 1, \"\"},\n\t\t{\"(SystemRootsError).Unwrap\", Method, 16, \"\"},\n\t\t{\"(UnhandledCriticalExtension).Error\", Method, 0, \"\"},\n\t\t{\"(UnknownAuthorityError).Error\", Method, 0, \"\"},\n\t\t{\"CANotAuthorizedForExtKeyUsage\", Const, 10, \"\"},\n\t\t{\"CANotAuthorizedForThisName\", Const, 0, \"\"},\n\t\t{\"CertPool\", Type, 0, \"\"},\n\t\t{\"Certificate\", Type, 0, \"\"},\n\t\t{\"Certificate.AuthorityKeyId\", Field, 0, \"\"},\n\t\t{\"Certificate.BasicConstraintsValid\", Field, 0, \"\"},\n\t\t{\"Certificate.CRLDistributionPoints\", Field, 2, \"\"},\n\t\t{\"Certificate.DNSNames\", Field, 0, \"\"},\n\t\t{\"Certificate.EmailAddresses\", Field, 0, \"\"},\n\t\t{\"Certificate.ExcludedDNSDomains\", Field, 9, \"\"},\n\t\t{\"Certificate.ExcludedEmailAddresses\", Field, 10, \"\"},\n\t\t{\"Certificate.ExcludedIPRanges\", Field, 10, \"\"},\n\t\t{\"Certificate.ExcludedURIDomains\", Field, 10, \"\"},\n\t\t{\"Certificate.ExtKeyUsage\", Field, 0, \"\"},\n\t\t{\"Certificate.Extensions\", Field, 2, \"\"},\n\t\t{\"Certificate.ExtraExtensions\", Field, 2, \"\"},\n\t\t{\"Certificate.IPAddresses\", Field, 1, \"\"},\n\t\t{\"Certificate.InhibitAnyPolicy\", Field, 24, \"\"},\n\t\t{\"Certificate.InhibitAnyPolicyZero\", Field, 24, \"\"},\n\t\t{\"Certificate.InhibitPolicyMapping\", Field, 24, \"\"},\n\t\t{\"Certificate.InhibitPolicyMappingZero\", Field, 24, \"\"},\n\t\t{\"Certificate.IsCA\", Field, 0, \"\"},\n\t\t{\"Certificate.Issuer\", Field, 0, \"\"},\n\t\t{\"Certificate.IssuingCertificateURL\", Field, 2, \"\"},\n\t\t{\"Certificate.KeyUsage\", Field, 0, \"\"},\n\t\t{\"Certificate.MaxPathLen\", Field, 0, \"\"},\n\t\t{\"Certificate.MaxPathLenZero\", Field, 4, \"\"},\n\t\t{\"Certificate.NotAfter\", Field, 0, \"\"},\n\t\t{\"Certificate.NotBefore\", Field, 0, \"\"},\n\t\t{\"Certificate.OCSPServer\", Field, 2, \"\"},\n\t\t{\"Certificate.PermittedDNSDomains\", Field, 0, \"\"},\n\t\t{\"Certificate.PermittedDNSDomainsCritical\", Field, 0, \"\"},\n\t\t{\"Certificate.PermittedEmailAddresses\", Field, 10, \"\"},\n\t\t{\"Certificate.PermittedIPRanges\", Field, 10, \"\"},\n\t\t{\"Certificate.PermittedURIDomains\", Field, 10, \"\"},\n\t\t{\"Certificate.Policies\", Field, 22, \"\"},\n\t\t{\"Certificate.PolicyIdentifiers\", Field, 0, \"\"},\n\t\t{\"Certificate.PolicyMappings\", Field, 24, \"\"},\n\t\t{\"Certificate.PublicKey\", Field, 0, \"\"},\n\t\t{\"Certificate.PublicKeyAlgorithm\", Field, 0, \"\"},\n\t\t{\"Certificate.Raw\", Field, 0, \"\"},\n\t\t{\"Certificate.RawIssuer\", Field, 0, \"\"},\n\t\t{\"Certificate.RawSubject\", Field, 0, \"\"},\n\t\t{\"Certificate.RawSubjectPublicKeyInfo\", Field, 0, \"\"},\n\t\t{\"Certificate.RawTBSCertificate\", Field, 0, \"\"},\n\t\t{\"Certificate.RequireExplicitPolicy\", Field, 24, \"\"},\n\t\t{\"Certificate.RequireExplicitPolicyZero\", Field, 24, \"\"},\n\t\t{\"Certificate.SerialNumber\", Field, 0, \"\"},\n\t\t{\"Certificate.Signature\", Field, 0, \"\"},\n\t\t{\"Certificate.SignatureAlgorithm\", Field, 0, \"\"},\n\t\t{\"Certificate.Subject\", Field, 0, \"\"},\n\t\t{\"Certificate.SubjectKeyId\", Field, 0, \"\"},\n\t\t{\"Certificate.URIs\", Field, 10, \"\"},\n\t\t{\"Certificate.UnhandledCriticalExtensions\", Field, 5, \"\"},\n\t\t{\"Certificate.UnknownExtKeyUsage\", Field, 0, \"\"},\n\t\t{\"Certificate.Version\", Field, 0, \"\"},\n\t\t{\"CertificateInvalidError\", Type, 0, \"\"},\n\t\t{\"CertificateInvalidError.Cert\", Field, 0, \"\"},\n\t\t{\"CertificateInvalidError.Detail\", Field, 10, \"\"},\n\t\t{\"CertificateInvalidError.Reason\", Field, 0, \"\"},\n\t\t{\"CertificateRequest\", Type, 3, \"\"},\n\t\t{\"CertificateRequest.Attributes\", Field, 3, \"\"},\n\t\t{\"CertificateRequest.DNSNames\", Field, 3, \"\"},\n\t\t{\"CertificateRequest.EmailAddresses\", Field, 3, \"\"},\n\t\t{\"CertificateRequest.Extensions\", Field, 3, \"\"},\n\t\t{\"CertificateRequest.ExtraExtensions\", Field, 3, \"\"},\n\t\t{\"CertificateRequest.IPAddresses\", Field, 3, \"\"},\n\t\t{\"CertificateRequest.PublicKey\", Field, 3, \"\"},\n\t\t{\"CertificateRequest.PublicKeyAlgorithm\", Field, 3, \"\"},\n\t\t{\"CertificateRequest.Raw\", Field, 3, \"\"},\n\t\t{\"CertificateRequest.RawSubject\", Field, 3, \"\"},\n\t\t{\"CertificateRequest.RawSubjectPublicKeyInfo\", Field, 3, \"\"},\n\t\t{\"CertificateRequest.RawTBSCertificateRequest\", Field, 3, \"\"},\n\t\t{\"CertificateRequest.Signature\", Field, 3, \"\"},\n\t\t{\"CertificateRequest.SignatureAlgorithm\", Field, 3, \"\"},\n\t\t{\"CertificateRequest.Subject\", Field, 3, \"\"},\n\t\t{\"CertificateRequest.URIs\", Field, 10, \"\"},\n\t\t{\"CertificateRequest.Version\", Field, 3, \"\"},\n\t\t{\"ConstraintViolationError\", Type, 0, \"\"},\n\t\t{\"CreateCertificate\", Func, 0, \"func(rand io.Reader, template *Certificate, parent *Certificate, pub any, priv any) ([]byte, error)\"},\n\t\t{\"CreateCertificateRequest\", Func, 3, \"func(rand io.Reader, template *CertificateRequest, priv any) (csr []byte, err error)\"},\n\t\t{\"CreateRevocationList\", Func, 15, \"func(rand io.Reader, template *RevocationList, issuer *Certificate, priv crypto.Signer) ([]byte, error)\"},\n\t\t{\"DSA\", Const, 0, \"\"},\n\t\t{\"DSAWithSHA1\", Const, 0, \"\"},\n\t\t{\"DSAWithSHA256\", Const, 0, \"\"},\n\t\t{\"DecryptPEMBlock\", Func, 1, \"func(b *pem.Block, password []byte) ([]byte, error)\"},\n\t\t{\"ECDSA\", Const, 1, \"\"},\n\t\t{\"ECDSAWithSHA1\", Const, 1, \"\"},\n\t\t{\"ECDSAWithSHA256\", Const, 1, \"\"},\n\t\t{\"ECDSAWithSHA384\", Const, 1, \"\"},\n\t\t{\"ECDSAWithSHA512\", Const, 1, \"\"},\n\t\t{\"Ed25519\", Const, 13, \"\"},\n\t\t{\"EncryptPEMBlock\", Func, 1, \"func(rand io.Reader, blockType string, data []byte, password []byte, alg PEMCipher) (*pem.Block, error)\"},\n\t\t{\"ErrUnsupportedAlgorithm\", Var, 0, \"\"},\n\t\t{\"Expired\", Const, 0, \"\"},\n\t\t{\"ExtKeyUsage\", Type, 0, \"\"},\n\t\t{\"ExtKeyUsageAny\", Const, 0, \"\"},\n\t\t{\"ExtKeyUsageClientAuth\", Const, 0, \"\"},\n\t\t{\"ExtKeyUsageCodeSigning\", Const, 0, \"\"},\n\t\t{\"ExtKeyUsageEmailProtection\", Const, 0, \"\"},\n\t\t{\"ExtKeyUsageIPSECEndSystem\", Const, 1, \"\"},\n\t\t{\"ExtKeyUsageIPSECTunnel\", Const, 1, \"\"},\n\t\t{\"ExtKeyUsageIPSECUser\", Const, 1, \"\"},\n\t\t{\"ExtKeyUsageMicrosoftCommercialCodeSigning\", Const, 10, \"\"},\n\t\t{\"ExtKeyUsageMicrosoftKernelCodeSigning\", Const, 10, \"\"},\n\t\t{\"ExtKeyUsageMicrosoftServerGatedCrypto\", Const, 1, \"\"},\n\t\t{\"ExtKeyUsageNetscapeServerGatedCrypto\", Const, 1, \"\"},\n\t\t{\"ExtKeyUsageOCSPSigning\", Const, 0, \"\"},\n\t\t{\"ExtKeyUsageServerAuth\", Const, 0, \"\"},\n\t\t{\"ExtKeyUsageTimeStamping\", Const, 0, \"\"},\n\t\t{\"HostnameError\", Type, 0, \"\"},\n\t\t{\"HostnameError.Certificate\", Field, 0, \"\"},\n\t\t{\"HostnameError.Host\", Field, 0, \"\"},\n\t\t{\"IncompatibleUsage\", Const, 1, \"\"},\n\t\t{\"IncorrectPasswordError\", Var, 1, \"\"},\n\t\t{\"InsecureAlgorithmError\", Type, 6, \"\"},\n\t\t{\"InvalidReason\", Type, 0, \"\"},\n\t\t{\"IsEncryptedPEMBlock\", Func, 1, \"func(b *pem.Block) bool\"},\n\t\t{\"KeyUsage\", Type, 0, \"\"},\n\t\t{\"KeyUsageCRLSign\", Const, 0, \"\"},\n\t\t{\"KeyUsageCertSign\", Const, 0, \"\"},\n\t\t{\"KeyUsageContentCommitment\", Const, 0, \"\"},\n\t\t{\"KeyUsageDataEncipherment\", Const, 0, \"\"},\n\t\t{\"KeyUsageDecipherOnly\", Const, 0, \"\"},\n\t\t{\"KeyUsageDigitalSignature\", Const, 0, \"\"},\n\t\t{\"KeyUsageEncipherOnly\", Const, 0, \"\"},\n\t\t{\"KeyUsageKeyAgreement\", Const, 0, \"\"},\n\t\t{\"KeyUsageKeyEncipherment\", Const, 0, \"\"},\n\t\t{\"MD2WithRSA\", Const, 0, \"\"},\n\t\t{\"MD5WithRSA\", Const, 0, \"\"},\n\t\t{\"MarshalECPrivateKey\", Func, 2, \"func(key *ecdsa.PrivateKey) ([]byte, error)\"},\n\t\t{\"MarshalPKCS1PrivateKey\", Func, 0, \"func(key *rsa.PrivateKey) []byte\"},\n\t\t{\"MarshalPKCS1PublicKey\", Func, 10, \"func(key *rsa.PublicKey) []byte\"},\n\t\t{\"MarshalPKCS8PrivateKey\", Func, 10, \"func(key any) ([]byte, error)\"},\n\t\t{\"MarshalPKIXPublicKey\", Func, 0, \"func(pub any) ([]byte, error)\"},\n\t\t{\"NameConstraintsWithoutSANs\", Const, 10, \"\"},\n\t\t{\"NameMismatch\", Const, 8, \"\"},\n\t\t{\"NewCertPool\", Func, 0, \"func() *CertPool\"},\n\t\t{\"NoValidChains\", Const, 24, \"\"},\n\t\t{\"NotAuthorizedToSign\", Const, 0, \"\"},\n\t\t{\"OID\", Type, 22, \"\"},\n\t\t{\"OIDFromASN1OID\", Func, 26, \"func(asn1OID asn1.ObjectIdentifier) (OID, error)\"},\n\t\t{\"OIDFromInts\", Func, 22, \"func(oid []uint64) (OID, error)\"},\n\t\t{\"PEMCipher\", Type, 1, \"\"},\n\t\t{\"PEMCipher3DES\", Const, 1, \"\"},\n\t\t{\"PEMCipherAES128\", Const, 1, \"\"},\n\t\t{\"PEMCipherAES192\", Const, 1, \"\"},\n\t\t{\"PEMCipherAES256\", Const, 1, \"\"},\n\t\t{\"PEMCipherDES\", Const, 1, \"\"},\n\t\t{\"ParseCRL\", Func, 0, \"func(crlBytes []byte) (*pkix.CertificateList, error)\"},\n\t\t{\"ParseCertificate\", Func, 0, \"func(der []byte) (*Certificate, error)\"},\n\t\t{\"ParseCertificateRequest\", Func, 3, \"func(asn1Data []byte) (*CertificateRequest, error)\"},\n\t\t{\"ParseCertificates\", Func, 0, \"func(der []byte) ([]*Certificate, error)\"},\n\t\t{\"ParseDERCRL\", Func, 0, \"func(derBytes []byte) (*pkix.CertificateList, error)\"},\n\t\t{\"ParseECPrivateKey\", Func, 1, \"func(der []byte) (*ecdsa.PrivateKey, error)\"},\n\t\t{\"ParseOID\", Func, 23, \"func(oid string) (OID, error)\"},\n\t\t{\"ParsePKCS1PrivateKey\", Func, 0, \"func(der []byte) (*rsa.PrivateKey, error)\"},\n\t\t{\"ParsePKCS1PublicKey\", Func, 10, \"func(der []byte) (*rsa.PublicKey, error)\"},\n\t\t{\"ParsePKCS8PrivateKey\", Func, 0, \"func(der []byte) (key any, err error)\"},\n\t\t{\"ParsePKIXPublicKey\", Func, 0, \"func(derBytes []byte) (pub any, err error)\"},\n\t\t{\"ParseRevocationList\", Func, 19, \"func(der []byte) (*RevocationList, error)\"},\n\t\t{\"PolicyMapping\", Type, 24, \"\"},\n\t\t{\"PolicyMapping.IssuerDomainPolicy\", Field, 24, \"\"},\n\t\t{\"PolicyMapping.SubjectDomainPolicy\", Field, 24, \"\"},\n\t\t{\"PublicKeyAlgorithm\", Type, 0, \"\"},\n\t\t{\"PureEd25519\", Const, 13, \"\"},\n\t\t{\"RSA\", Const, 0, \"\"},\n\t\t{\"RevocationList\", Type, 15, \"\"},\n\t\t{\"RevocationList.AuthorityKeyId\", Field, 19, \"\"},\n\t\t{\"RevocationList.Extensions\", Field, 19, \"\"},\n\t\t{\"RevocationList.ExtraExtensions\", Field, 15, \"\"},\n\t\t{\"RevocationList.Issuer\", Field, 19, \"\"},\n\t\t{\"RevocationList.NextUpdate\", Field, 15, \"\"},\n\t\t{\"RevocationList.Number\", Field, 15, \"\"},\n\t\t{\"RevocationList.Raw\", Field, 19, \"\"},\n\t\t{\"RevocationList.RawIssuer\", Field, 19, \"\"},\n\t\t{\"RevocationList.RawTBSRevocationList\", Field, 19, \"\"},\n\t\t{\"RevocationList.RevokedCertificateEntries\", Field, 21, \"\"},\n\t\t{\"RevocationList.RevokedCertificates\", Field, 15, \"\"},\n\t\t{\"RevocationList.Signature\", Field, 19, \"\"},\n\t\t{\"RevocationList.SignatureAlgorithm\", Field, 15, \"\"},\n\t\t{\"RevocationList.ThisUpdate\", Field, 15, \"\"},\n\t\t{\"RevocationListEntry\", Type, 21, \"\"},\n\t\t{\"RevocationListEntry.Extensions\", Field, 21, \"\"},\n\t\t{\"RevocationListEntry.ExtraExtensions\", Field, 21, \"\"},\n\t\t{\"RevocationListEntry.Raw\", Field, 21, \"\"},\n\t\t{\"RevocationListEntry.ReasonCode\", Field, 21, \"\"},\n\t\t{\"RevocationListEntry.RevocationTime\", Field, 21, \"\"},\n\t\t{\"RevocationListEntry.SerialNumber\", Field, 21, \"\"},\n\t\t{\"SHA1WithRSA\", Const, 0, \"\"},\n\t\t{\"SHA256WithRSA\", Const, 0, \"\"},\n\t\t{\"SHA256WithRSAPSS\", Const, 8, \"\"},\n\t\t{\"SHA384WithRSA\", Const, 0, \"\"},\n\t\t{\"SHA384WithRSAPSS\", Const, 8, \"\"},\n\t\t{\"SHA512WithRSA\", Const, 0, \"\"},\n\t\t{\"SHA512WithRSAPSS\", Const, 8, \"\"},\n\t\t{\"SetFallbackRoots\", Func, 20, \"func(roots *CertPool)\"},\n\t\t{\"SignatureAlgorithm\", Type, 0, \"\"},\n\t\t{\"SystemCertPool\", Func, 7, \"func() (*CertPool, error)\"},\n\t\t{\"SystemRootsError\", Type, 1, \"\"},\n\t\t{\"SystemRootsError.Err\", Field, 7, \"\"},\n\t\t{\"TooManyConstraints\", Const, 10, \"\"},\n\t\t{\"TooManyIntermediates\", Const, 0, \"\"},\n\t\t{\"UnconstrainedName\", Const, 10, \"\"},\n\t\t{\"UnhandledCriticalExtension\", Type, 0, \"\"},\n\t\t{\"UnknownAuthorityError\", Type, 0, \"\"},\n\t\t{\"UnknownAuthorityError.Cert\", Field, 8, \"\"},\n\t\t{\"UnknownPublicKeyAlgorithm\", Const, 0, \"\"},\n\t\t{\"UnknownSignatureAlgorithm\", Const, 0, \"\"},\n\t\t{\"VerifyOptions\", Type, 0, \"\"},\n\t\t{\"VerifyOptions.CertificatePolicies\", Field, 24, \"\"},\n\t\t{\"VerifyOptions.CurrentTime\", Field, 0, \"\"},\n\t\t{\"VerifyOptions.DNSName\", Field, 0, \"\"},\n\t\t{\"VerifyOptions.Intermediates\", Field, 0, \"\"},\n\t\t{\"VerifyOptions.KeyUsages\", Field, 1, \"\"},\n\t\t{\"VerifyOptions.MaxConstraintComparisions\", Field, 10, \"\"},\n\t\t{\"VerifyOptions.Roots\", Field, 0, \"\"},\n\t},\n\t\"crypto/x509/pkix\": {\n\t\t{\"(*CertificateList).HasExpired\", Method, 0, \"\"},\n\t\t{\"(*Name).FillFromRDNSequence\", Method, 0, \"\"},\n\t\t{\"(Name).String\", Method, 10, \"\"},\n\t\t{\"(Name).ToRDNSequence\", Method, 0, \"\"},\n\t\t{\"(RDNSequence).String\", Method, 10, \"\"},\n\t\t{\"AlgorithmIdentifier\", Type, 0, \"\"},\n\t\t{\"AlgorithmIdentifier.Algorithm\", Field, 0, \"\"},\n\t\t{\"AlgorithmIdentifier.Parameters\", Field, 0, \"\"},\n\t\t{\"AttributeTypeAndValue\", Type, 0, \"\"},\n\t\t{\"AttributeTypeAndValue.Type\", Field, 0, \"\"},\n\t\t{\"AttributeTypeAndValue.Value\", Field, 0, \"\"},\n\t\t{\"AttributeTypeAndValueSET\", Type, 3, \"\"},\n\t\t{\"AttributeTypeAndValueSET.Type\", Field, 3, \"\"},\n\t\t{\"AttributeTypeAndValueSET.Value\", Field, 3, \"\"},\n\t\t{\"CertificateList\", Type, 0, \"\"},\n\t\t{\"CertificateList.SignatureAlgorithm\", Field, 0, \"\"},\n\t\t{\"CertificateList.SignatureValue\", Field, 0, \"\"},\n\t\t{\"CertificateList.TBSCertList\", Field, 0, \"\"},\n\t\t{\"Extension\", Type, 0, \"\"},\n\t\t{\"Extension.Critical\", Field, 0, \"\"},\n\t\t{\"Extension.Id\", Field, 0, \"\"},\n\t\t{\"Extension.Value\", Field, 0, \"\"},\n\t\t{\"Name\", Type, 0, \"\"},\n\t\t{\"Name.CommonName\", Field, 0, \"\"},\n\t\t{\"Name.Country\", Field, 0, \"\"},\n\t\t{\"Name.ExtraNames\", Field, 5, \"\"},\n\t\t{\"Name.Locality\", Field, 0, \"\"},\n\t\t{\"Name.Names\", Field, 0, \"\"},\n\t\t{\"Name.Organization\", Field, 0, \"\"},\n\t\t{\"Name.OrganizationalUnit\", Field, 0, \"\"},\n\t\t{\"Name.PostalCode\", Field, 0, \"\"},\n\t\t{\"Name.Province\", Field, 0, \"\"},\n\t\t{\"Name.SerialNumber\", Field, 0, \"\"},\n\t\t{\"Name.StreetAddress\", Field, 0, \"\"},\n\t\t{\"RDNSequence\", Type, 0, \"\"},\n\t\t{\"RelativeDistinguishedNameSET\", Type, 0, \"\"},\n\t\t{\"RevokedCertificate\", Type, 0, \"\"},\n\t\t{\"RevokedCertificate.Extensions\", Field, 0, \"\"},\n\t\t{\"RevokedCertificate.RevocationTime\", Field, 0, \"\"},\n\t\t{\"RevokedCertificate.SerialNumber\", Field, 0, \"\"},\n\t\t{\"TBSCertificateList\", Type, 0, \"\"},\n\t\t{\"TBSCertificateList.Extensions\", Field, 0, \"\"},\n\t\t{\"TBSCertificateList.Issuer\", Field, 0, \"\"},\n\t\t{\"TBSCertificateList.NextUpdate\", Field, 0, \"\"},\n\t\t{\"TBSCertificateList.Raw\", Field, 0, \"\"},\n\t\t{\"TBSCertificateList.RevokedCertificates\", Field, 0, \"\"},\n\t\t{\"TBSCertificateList.Signature\", Field, 0, \"\"},\n\t\t{\"TBSCertificateList.ThisUpdate\", Field, 0, \"\"},\n\t\t{\"TBSCertificateList.Version\", Field, 0, \"\"},\n\t},\n\t\"database/sql\": {\n\t\t{\"(*ColumnType).DatabaseTypeName\", Method, 8, \"\"},\n\t\t{\"(*ColumnType).DecimalSize\", Method, 8, \"\"},\n\t\t{\"(*ColumnType).Length\", Method, 8, \"\"},\n\t\t{\"(*ColumnType).Name\", Method, 8, \"\"},\n\t\t{\"(*ColumnType).Nullable\", Method, 8, \"\"},\n\t\t{\"(*ColumnType).ScanType\", Method, 8, \"\"},\n\t\t{\"(*Conn).BeginTx\", Method, 9, \"\"},\n\t\t{\"(*Conn).Close\", Method, 9, \"\"},\n\t\t{\"(*Conn).ExecContext\", Method, 9, \"\"},\n\t\t{\"(*Conn).PingContext\", Method, 9, \"\"},\n\t\t{\"(*Conn).PrepareContext\", Method, 9, \"\"},\n\t\t{\"(*Conn).QueryContext\", Method, 9, \"\"},\n\t\t{\"(*Conn).QueryRowContext\", Method, 9, \"\"},\n\t\t{\"(*Conn).Raw\", Method, 13, \"\"},\n\t\t{\"(*DB).Begin\", Method, 0, \"\"},\n\t\t{\"(*DB).BeginTx\", Method, 8, \"\"},\n\t\t{\"(*DB).Close\", Method, 0, \"\"},\n\t\t{\"(*DB).Conn\", Method, 9, \"\"},\n\t\t{\"(*DB).Driver\", Method, 0, \"\"},\n\t\t{\"(*DB).Exec\", Method, 0, \"\"},\n\t\t{\"(*DB).ExecContext\", Method, 8, \"\"},\n\t\t{\"(*DB).Ping\", Method, 1, \"\"},\n\t\t{\"(*DB).PingContext\", Method, 8, \"\"},\n\t\t{\"(*DB).Prepare\", Method, 0, \"\"},\n\t\t{\"(*DB).PrepareContext\", Method, 8, \"\"},\n\t\t{\"(*DB).Query\", Method, 0, \"\"},\n\t\t{\"(*DB).QueryContext\", Method, 8, \"\"},\n\t\t{\"(*DB).QueryRow\", Method, 0, \"\"},\n\t\t{\"(*DB).QueryRowContext\", Method, 8, \"\"},\n\t\t{\"(*DB).SetConnMaxIdleTime\", Method, 15, \"\"},\n\t\t{\"(*DB).SetConnMaxLifetime\", Method, 6, \"\"},\n\t\t{\"(*DB).SetMaxIdleConns\", Method, 1, \"\"},\n\t\t{\"(*DB).SetMaxOpenConns\", Method, 2, \"\"},\n\t\t{\"(*DB).Stats\", Method, 5, \"\"},\n\t\t{\"(*Null).Scan\", Method, 22, \"\"},\n\t\t{\"(*NullBool).Scan\", Method, 0, \"\"},\n\t\t{\"(*NullByte).Scan\", Method, 17, \"\"},\n\t\t{\"(*NullFloat64).Scan\", Method, 0, \"\"},\n\t\t{\"(*NullInt16).Scan\", Method, 17, \"\"},\n\t\t{\"(*NullInt32).Scan\", Method, 13, \"\"},\n\t\t{\"(*NullInt64).Scan\", Method, 0, \"\"},\n\t\t{\"(*NullString).Scan\", Method, 0, \"\"},\n\t\t{\"(*NullTime).Scan\", Method, 13, \"\"},\n\t\t{\"(*Row).Err\", Method, 15, \"\"},\n\t\t{\"(*Row).Scan\", Method, 0, \"\"},\n\t\t{\"(*Rows).Close\", Method, 0, \"\"},\n\t\t{\"(*Rows).ColumnTypes\", Method, 8, \"\"},\n\t\t{\"(*Rows).Columns\", Method, 0, \"\"},\n\t\t{\"(*Rows).Err\", Method, 0, \"\"},\n\t\t{\"(*Rows).Next\", Method, 0, \"\"},\n\t\t{\"(*Rows).NextResultSet\", Method, 8, \"\"},\n\t\t{\"(*Rows).Scan\", Method, 0, \"\"},\n\t\t{\"(*Stmt).Close\", Method, 0, \"\"},\n\t\t{\"(*Stmt).Exec\", Method, 0, \"\"},\n\t\t{\"(*Stmt).ExecContext\", Method, 8, \"\"},\n\t\t{\"(*Stmt).Query\", Method, 0, \"\"},\n\t\t{\"(*Stmt).QueryContext\", Method, 8, \"\"},\n\t\t{\"(*Stmt).QueryRow\", Method, 0, \"\"},\n\t\t{\"(*Stmt).QueryRowContext\", Method, 8, \"\"},\n\t\t{\"(*Tx).Commit\", Method, 0, \"\"},\n\t\t{\"(*Tx).Exec\", Method, 0, \"\"},\n\t\t{\"(*Tx).ExecContext\", Method, 8, \"\"},\n\t\t{\"(*Tx).Prepare\", Method, 0, \"\"},\n\t\t{\"(*Tx).PrepareContext\", Method, 8, \"\"},\n\t\t{\"(*Tx).Query\", Method, 0, \"\"},\n\t\t{\"(*Tx).QueryContext\", Method, 8, \"\"},\n\t\t{\"(*Tx).QueryRow\", Method, 0, \"\"},\n\t\t{\"(*Tx).QueryRowContext\", Method, 8, \"\"},\n\t\t{\"(*Tx).Rollback\", Method, 0, \"\"},\n\t\t{\"(*Tx).Stmt\", Method, 0, \"\"},\n\t\t{\"(*Tx).StmtContext\", Method, 8, \"\"},\n\t\t{\"(IsolationLevel).String\", Method, 11, \"\"},\n\t\t{\"(Null).Value\", Method, 22, \"\"},\n\t\t{\"(NullBool).Value\", Method, 0, \"\"},\n\t\t{\"(NullByte).Value\", Method, 17, \"\"},\n\t\t{\"(NullFloat64).Value\", Method, 0, \"\"},\n\t\t{\"(NullInt16).Value\", Method, 17, \"\"},\n\t\t{\"(NullInt32).Value\", Method, 13, \"\"},\n\t\t{\"(NullInt64).Value\", Method, 0, \"\"},\n\t\t{\"(NullString).Value\", Method, 0, \"\"},\n\t\t{\"(NullTime).Value\", Method, 13, \"\"},\n\t\t{\"(Result).LastInsertId\", Method, 0, \"\"},\n\t\t{\"(Result).RowsAffected\", Method, 0, \"\"},\n\t\t{\"(Scanner).Scan\", Method, 0, \"\"},\n\t\t{\"ColumnType\", Type, 8, \"\"},\n\t\t{\"Conn\", Type, 9, \"\"},\n\t\t{\"DB\", Type, 0, \"\"},\n\t\t{\"DBStats\", Type, 5, \"\"},\n\t\t{\"DBStats.Idle\", Field, 11, \"\"},\n\t\t{\"DBStats.InUse\", Field, 11, \"\"},\n\t\t{\"DBStats.MaxIdleClosed\", Field, 11, \"\"},\n\t\t{\"DBStats.MaxIdleTimeClosed\", Field, 15, \"\"},\n\t\t{\"DBStats.MaxLifetimeClosed\", Field, 11, \"\"},\n\t\t{\"DBStats.MaxOpenConnections\", Field, 11, \"\"},\n\t\t{\"DBStats.OpenConnections\", Field, 5, \"\"},\n\t\t{\"DBStats.WaitCount\", Field, 11, \"\"},\n\t\t{\"DBStats.WaitDuration\", Field, 11, \"\"},\n\t\t{\"Drivers\", Func, 4, \"func() []string\"},\n\t\t{\"ErrConnDone\", Var, 9, \"\"},\n\t\t{\"ErrNoRows\", Var, 0, \"\"},\n\t\t{\"ErrTxDone\", Var, 0, \"\"},\n\t\t{\"IsolationLevel\", Type, 8, \"\"},\n\t\t{\"LevelDefault\", Const, 8, \"\"},\n\t\t{\"LevelLinearizable\", Const, 8, \"\"},\n\t\t{\"LevelReadCommitted\", Const, 8, \"\"},\n\t\t{\"LevelReadUncommitted\", Const, 8, \"\"},\n\t\t{\"LevelRepeatableRead\", Const, 8, \"\"},\n\t\t{\"LevelSerializable\", Const, 8, \"\"},\n\t\t{\"LevelSnapshot\", Const, 8, \"\"},\n\t\t{\"LevelWriteCommitted\", Const, 8, \"\"},\n\t\t{\"Named\", Func, 8, \"func(name string, value any) NamedArg\"},\n\t\t{\"NamedArg\", Type, 8, \"\"},\n\t\t{\"NamedArg.Name\", Field, 8, \"\"},\n\t\t{\"NamedArg.Value\", Field, 8, \"\"},\n\t\t{\"Null\", Type, 22, \"\"},\n\t\t{\"NullBool\", Type, 0, \"\"},\n\t\t{\"NullBool.Bool\", Field, 0, \"\"},\n\t\t{\"NullBool.Valid\", Field, 0, \"\"},\n\t\t{\"NullByte\", Type, 17, \"\"},\n\t\t{\"NullByte.Byte\", Field, 17, \"\"},\n\t\t{\"NullByte.Valid\", Field, 17, \"\"},\n\t\t{\"NullFloat64\", Type, 0, \"\"},\n\t\t{\"NullFloat64.Float64\", Field, 0, \"\"},\n\t\t{\"NullFloat64.Valid\", Field, 0, \"\"},\n\t\t{\"NullInt16\", Type, 17, \"\"},\n\t\t{\"NullInt16.Int16\", Field, 17, \"\"},\n\t\t{\"NullInt16.Valid\", Field, 17, \"\"},\n\t\t{\"NullInt32\", Type, 13, \"\"},\n\t\t{\"NullInt32.Int32\", Field, 13, \"\"},\n\t\t{\"NullInt32.Valid\", Field, 13, \"\"},\n\t\t{\"NullInt64\", Type, 0, \"\"},\n\t\t{\"NullInt64.Int64\", Field, 0, \"\"},\n\t\t{\"NullInt64.Valid\", Field, 0, \"\"},\n\t\t{\"NullString\", Type, 0, \"\"},\n\t\t{\"NullString.String\", Field, 0, \"\"},\n\t\t{\"NullString.Valid\", Field, 0, \"\"},\n\t\t{\"NullTime\", Type, 13, \"\"},\n\t\t{\"NullTime.Time\", Field, 13, \"\"},\n\t\t{\"NullTime.Valid\", Field, 13, \"\"},\n\t\t{\"Open\", Func, 0, \"func(driverName string, dataSourceName string) (*DB, error)\"},\n\t\t{\"OpenDB\", Func, 10, \"func(c driver.Connector) *DB\"},\n\t\t{\"Out\", Type, 9, \"\"},\n\t\t{\"Out.Dest\", Field, 9, \"\"},\n\t\t{\"Out.In\", Field, 9, \"\"},\n\t\t{\"RawBytes\", Type, 0, \"\"},\n\t\t{\"Register\", Func, 0, \"func(name string, driver driver.Driver)\"},\n\t\t{\"Result\", Type, 0, \"\"},\n\t\t{\"Row\", Type, 0, \"\"},\n\t\t{\"Rows\", Type, 0, \"\"},\n\t\t{\"Scanner\", Type, 0, \"\"},\n\t\t{\"Stmt\", Type, 0, \"\"},\n\t\t{\"Tx\", Type, 0, \"\"},\n\t\t{\"TxOptions\", Type, 8, \"\"},\n\t\t{\"TxOptions.Isolation\", Field, 8, \"\"},\n\t\t{\"TxOptions.ReadOnly\", Field, 8, \"\"},\n\t},\n\t\"database/sql/driver\": {\n\t\t{\"(ColumnConverter).ColumnConverter\", Method, 0, \"\"},\n\t\t{\"(Conn).Begin\", Method, 0, \"\"},\n\t\t{\"(Conn).Close\", Method, 0, \"\"},\n\t\t{\"(Conn).Prepare\", Method, 0, \"\"},\n\t\t{\"(ConnBeginTx).BeginTx\", Method, 8, \"\"},\n\t\t{\"(ConnPrepareContext).PrepareContext\", Method, 8, \"\"},\n\t\t{\"(Connector).Connect\", Method, 10, \"\"},\n\t\t{\"(Connector).Driver\", Method, 10, \"\"},\n\t\t{\"(Driver).Open\", Method, 0, \"\"},\n\t\t{\"(DriverContext).OpenConnector\", Method, 10, \"\"},\n\t\t{\"(Execer).Exec\", Method, 0, \"\"},\n\t\t{\"(ExecerContext).ExecContext\", Method, 8, \"\"},\n\t\t{\"(NamedValueChecker).CheckNamedValue\", Method, 9, \"\"},\n\t\t{\"(NotNull).ConvertValue\", Method, 0, \"\"},\n\t\t{\"(Null).ConvertValue\", Method, 0, \"\"},\n\t\t{\"(Pinger).Ping\", Method, 8, \"\"},\n\t\t{\"(Queryer).Query\", Method, 1, \"\"},\n\t\t{\"(QueryerContext).QueryContext\", Method, 8, \"\"},\n\t\t{\"(Result).LastInsertId\", Method, 0, \"\"},\n\t\t{\"(Result).RowsAffected\", Method, 0, \"\"},\n\t\t{\"(Rows).Close\", Method, 0, \"\"},\n\t\t{\"(Rows).Columns\", Method, 0, \"\"},\n\t\t{\"(Rows).Next\", Method, 0, \"\"},\n\t\t{\"(RowsAffected).LastInsertId\", Method, 0, \"\"},\n\t\t{\"(RowsAffected).RowsAffected\", Method, 0, \"\"},\n\t\t{\"(RowsColumnTypeDatabaseTypeName).Close\", Method, 8, \"\"},\n\t\t{\"(RowsColumnTypeDatabaseTypeName).ColumnTypeDatabaseTypeName\", Method, 8, \"\"},\n\t\t{\"(RowsColumnTypeDatabaseTypeName).Columns\", Method, 8, \"\"},\n\t\t{\"(RowsColumnTypeDatabaseTypeName).Next\", Method, 8, \"\"},\n\t\t{\"(RowsColumnTypeLength).Close\", Method, 8, \"\"},\n\t\t{\"(RowsColumnTypeLength).ColumnTypeLength\", Method, 8, \"\"},\n\t\t{\"(RowsColumnTypeLength).Columns\", Method, 8, \"\"},\n\t\t{\"(RowsColumnTypeLength).Next\", Method, 8, \"\"},\n\t\t{\"(RowsColumnTypeNullable).Close\", Method, 8, \"\"},\n\t\t{\"(RowsColumnTypeNullable).ColumnTypeNullable\", Method, 8, \"\"},\n\t\t{\"(RowsColumnTypeNullable).Columns\", Method, 8, \"\"},\n\t\t{\"(RowsColumnTypeNullable).Next\", Method, 8, \"\"},\n\t\t{\"(RowsColumnTypePrecisionScale).Close\", Method, 8, \"\"},\n\t\t{\"(RowsColumnTypePrecisionScale).ColumnTypePrecisionScale\", Method, 8, \"\"},\n\t\t{\"(RowsColumnTypePrecisionScale).Columns\", Method, 8, \"\"},\n\t\t{\"(RowsColumnTypePrecisionScale).Next\", Method, 8, \"\"},\n\t\t{\"(RowsColumnTypeScanType).Close\", Method, 8, \"\"},\n\t\t{\"(RowsColumnTypeScanType).ColumnTypeScanType\", Method, 8, \"\"},\n\t\t{\"(RowsColumnTypeScanType).Columns\", Method, 8, \"\"},\n\t\t{\"(RowsColumnTypeScanType).Next\", Method, 8, \"\"},\n\t\t{\"(RowsNextResultSet).Close\", Method, 8, \"\"},\n\t\t{\"(RowsNextResultSet).Columns\", Method, 8, \"\"},\n\t\t{\"(RowsNextResultSet).HasNextResultSet\", Method, 8, \"\"},\n\t\t{\"(RowsNextResultSet).Next\", Method, 8, \"\"},\n\t\t{\"(RowsNextResultSet).NextResultSet\", Method, 8, \"\"},\n\t\t{\"(SessionResetter).ResetSession\", Method, 10, \"\"},\n\t\t{\"(Stmt).Close\", Method, 0, \"\"},\n\t\t{\"(Stmt).Exec\", Method, 0, \"\"},\n\t\t{\"(Stmt).NumInput\", Method, 0, \"\"},\n\t\t{\"(Stmt).Query\", Method, 0, \"\"},\n\t\t{\"(StmtExecContext).ExecContext\", Method, 8, \"\"},\n\t\t{\"(StmtQueryContext).QueryContext\", Method, 8, \"\"},\n\t\t{\"(Tx).Commit\", Method, 0, \"\"},\n\t\t{\"(Tx).Rollback\", Method, 0, \"\"},\n\t\t{\"(Validator).IsValid\", Method, 15, \"\"},\n\t\t{\"(ValueConverter).ConvertValue\", Method, 0, \"\"},\n\t\t{\"(Valuer).Value\", Method, 0, \"\"},\n\t\t{\"Bool\", Var, 0, \"\"},\n\t\t{\"ColumnConverter\", Type, 0, \"\"},\n\t\t{\"Conn\", Type, 0, \"\"},\n\t\t{\"ConnBeginTx\", Type, 8, \"\"},\n\t\t{\"ConnPrepareContext\", Type, 8, \"\"},\n\t\t{\"Connector\", Type, 10, \"\"},\n\t\t{\"DefaultParameterConverter\", Var, 0, \"\"},\n\t\t{\"Driver\", Type, 0, \"\"},\n\t\t{\"DriverContext\", Type, 10, \"\"},\n\t\t{\"ErrBadConn\", Var, 0, \"\"},\n\t\t{\"ErrRemoveArgument\", Var, 9, \"\"},\n\t\t{\"ErrSkip\", Var, 0, \"\"},\n\t\t{\"Execer\", Type, 0, \"\"},\n\t\t{\"ExecerContext\", Type, 8, \"\"},\n\t\t{\"Int32\", Var, 0, \"\"},\n\t\t{\"IsScanValue\", Func, 0, \"func(v any) bool\"},\n\t\t{\"IsValue\", Func, 0, \"func(v any) bool\"},\n\t\t{\"IsolationLevel\", Type, 8, \"\"},\n\t\t{\"NamedValue\", Type, 8, \"\"},\n\t\t{\"NamedValue.Name\", Field, 8, \"\"},\n\t\t{\"NamedValue.Ordinal\", Field, 8, \"\"},\n\t\t{\"NamedValue.Value\", Field, 8, \"\"},\n\t\t{\"NamedValueChecker\", Type, 9, \"\"},\n\t\t{\"NotNull\", Type, 0, \"\"},\n\t\t{\"NotNull.Converter\", Field, 0, \"\"},\n\t\t{\"Null\", Type, 0, \"\"},\n\t\t{\"Null.Converter\", Field, 0, \"\"},\n\t\t{\"Pinger\", Type, 8, \"\"},\n\t\t{\"Queryer\", Type, 1, \"\"},\n\t\t{\"QueryerContext\", Type, 8, \"\"},\n\t\t{\"Result\", Type, 0, \"\"},\n\t\t{\"ResultNoRows\", Var, 0, \"\"},\n\t\t{\"Rows\", Type, 0, \"\"},\n\t\t{\"RowsAffected\", Type, 0, \"\"},\n\t\t{\"RowsColumnTypeDatabaseTypeName\", Type, 8, \"\"},\n\t\t{\"RowsColumnTypeLength\", Type, 8, \"\"},\n\t\t{\"RowsColumnTypeNullable\", Type, 8, \"\"},\n\t\t{\"RowsColumnTypePrecisionScale\", Type, 8, \"\"},\n\t\t{\"RowsColumnTypeScanType\", Type, 8, \"\"},\n\t\t{\"RowsNextResultSet\", Type, 8, \"\"},\n\t\t{\"SessionResetter\", Type, 10, \"\"},\n\t\t{\"Stmt\", Type, 0, \"\"},\n\t\t{\"StmtExecContext\", Type, 8, \"\"},\n\t\t{\"StmtQueryContext\", Type, 8, \"\"},\n\t\t{\"String\", Var, 0, \"\"},\n\t\t{\"Tx\", Type, 0, \"\"},\n\t\t{\"TxOptions\", Type, 8, \"\"},\n\t\t{\"TxOptions.Isolation\", Field, 8, \"\"},\n\t\t{\"TxOptions.ReadOnly\", Field, 8, \"\"},\n\t\t{\"Validator\", Type, 15, \"\"},\n\t\t{\"Value\", Type, 0, \"\"},\n\t\t{\"ValueConverter\", Type, 0, \"\"},\n\t\t{\"Valuer\", Type, 0, \"\"},\n\t},\n\t\"debug/buildinfo\": {\n\t\t{\"BuildInfo\", Type, 18, \"\"},\n\t\t{\"Read\", Func, 18, \"func(r io.ReaderAt) (*BuildInfo, error)\"},\n\t\t{\"ReadFile\", Func, 18, \"func(name string) (info *BuildInfo, err error)\"},\n\t},\n\t\"debug/dwarf\": {\n\t\t{\"(*AddrType).Basic\", Method, 0, \"\"},\n\t\t{\"(*AddrType).Common\", Method, 0, \"\"},\n\t\t{\"(*AddrType).Size\", Method, 0, \"\"},\n\t\t{\"(*AddrType).String\", Method, 0, \"\"},\n\t\t{\"(*ArrayType).Common\", Method, 0, \"\"},\n\t\t{\"(*ArrayType).Size\", Method, 0, \"\"},\n\t\t{\"(*ArrayType).String\", Method, 0, \"\"},\n\t\t{\"(*BasicType).Basic\", Method, 0, \"\"},\n\t\t{\"(*BasicType).Common\", Method, 0, \"\"},\n\t\t{\"(*BasicType).Size\", Method, 0, \"\"},\n\t\t{\"(*BasicType).String\", Method, 0, \"\"},\n\t\t{\"(*BoolType).Basic\", Method, 0, \"\"},\n\t\t{\"(*BoolType).Common\", Method, 0, \"\"},\n\t\t{\"(*BoolType).Size\", Method, 0, \"\"},\n\t\t{\"(*BoolType).String\", Method, 0, \"\"},\n\t\t{\"(*CharType).Basic\", Method, 0, \"\"},\n\t\t{\"(*CharType).Common\", Method, 0, \"\"},\n\t\t{\"(*CharType).Size\", Method, 0, \"\"},\n\t\t{\"(*CharType).String\", Method, 0, \"\"},\n\t\t{\"(*CommonType).Common\", Method, 0, \"\"},\n\t\t{\"(*CommonType).Size\", Method, 0, \"\"},\n\t\t{\"(*ComplexType).Basic\", Method, 0, \"\"},\n\t\t{\"(*ComplexType).Common\", Method, 0, \"\"},\n\t\t{\"(*ComplexType).Size\", Method, 0, \"\"},\n\t\t{\"(*ComplexType).String\", Method, 0, \"\"},\n\t\t{\"(*Data).AddSection\", Method, 14, \"\"},\n\t\t{\"(*Data).AddTypes\", Method, 3, \"\"},\n\t\t{\"(*Data).LineReader\", Method, 5, \"\"},\n\t\t{\"(*Data).Ranges\", Method, 7, \"\"},\n\t\t{\"(*Data).Reader\", Method, 0, \"\"},\n\t\t{\"(*Data).Type\", Method, 0, \"\"},\n\t\t{\"(*DotDotDotType).Common\", Method, 0, \"\"},\n\t\t{\"(*DotDotDotType).Size\", Method, 0, \"\"},\n\t\t{\"(*DotDotDotType).String\", Method, 0, \"\"},\n\t\t{\"(*Entry).AttrField\", Method, 5, \"\"},\n\t\t{\"(*Entry).Val\", Method, 0, \"\"},\n\t\t{\"(*EnumType).Common\", Method, 0, \"\"},\n\t\t{\"(*EnumType).Size\", Method, 0, \"\"},\n\t\t{\"(*EnumType).String\", Method, 0, \"\"},\n\t\t{\"(*FloatType).Basic\", Method, 0, \"\"},\n\t\t{\"(*FloatType).Common\", Method, 0, \"\"},\n\t\t{\"(*FloatType).Size\", Method, 0, \"\"},\n\t\t{\"(*FloatType).String\", Method, 0, \"\"},\n\t\t{\"(*FuncType).Common\", Method, 0, \"\"},\n\t\t{\"(*FuncType).Size\", Method, 0, \"\"},\n\t\t{\"(*FuncType).String\", Method, 0, \"\"},\n\t\t{\"(*IntType).Basic\", Method, 0, \"\"},\n\t\t{\"(*IntType).Common\", Method, 0, \"\"},\n\t\t{\"(*IntType).Size\", Method, 0, \"\"},\n\t\t{\"(*IntType).String\", Method, 0, \"\"},\n\t\t{\"(*LineReader).Files\", Method, 14, \"\"},\n\t\t{\"(*LineReader).Next\", Method, 5, \"\"},\n\t\t{\"(*LineReader).Reset\", Method, 5, \"\"},\n\t\t{\"(*LineReader).Seek\", Method, 5, \"\"},\n\t\t{\"(*LineReader).SeekPC\", Method, 5, \"\"},\n\t\t{\"(*LineReader).Tell\", Method, 5, \"\"},\n\t\t{\"(*PtrType).Common\", Method, 0, \"\"},\n\t\t{\"(*PtrType).Size\", Method, 0, \"\"},\n\t\t{\"(*PtrType).String\", Method, 0, \"\"},\n\t\t{\"(*QualType).Common\", Method, 0, \"\"},\n\t\t{\"(*QualType).Size\", Method, 0, \"\"},\n\t\t{\"(*QualType).String\", Method, 0, \"\"},\n\t\t{\"(*Reader).AddressSize\", Method, 5, \"\"},\n\t\t{\"(*Reader).ByteOrder\", Method, 14, \"\"},\n\t\t{\"(*Reader).Next\", Method, 0, \"\"},\n\t\t{\"(*Reader).Seek\", Method, 0, \"\"},\n\t\t{\"(*Reader).SeekPC\", Method, 7, \"\"},\n\t\t{\"(*Reader).SkipChildren\", Method, 0, \"\"},\n\t\t{\"(*StructType).Common\", Method, 0, \"\"},\n\t\t{\"(*StructType).Defn\", Method, 0, \"\"},\n\t\t{\"(*StructType).Size\", Method, 0, \"\"},\n\t\t{\"(*StructType).String\", Method, 0, \"\"},\n\t\t{\"(*TypedefType).Common\", Method, 0, \"\"},\n\t\t{\"(*TypedefType).Size\", Method, 0, \"\"},\n\t\t{\"(*TypedefType).String\", Method, 0, \"\"},\n\t\t{\"(*UcharType).Basic\", Method, 0, \"\"},\n\t\t{\"(*UcharType).Common\", Method, 0, \"\"},\n\t\t{\"(*UcharType).Size\", Method, 0, \"\"},\n\t\t{\"(*UcharType).String\", Method, 0, \"\"},\n\t\t{\"(*UintType).Basic\", Method, 0, \"\"},\n\t\t{\"(*UintType).Common\", Method, 0, \"\"},\n\t\t{\"(*UintType).Size\", Method, 0, \"\"},\n\t\t{\"(*UintType).String\", Method, 0, \"\"},\n\t\t{\"(*UnspecifiedType).Basic\", Method, 4, \"\"},\n\t\t{\"(*UnspecifiedType).Common\", Method, 4, \"\"},\n\t\t{\"(*UnspecifiedType).Size\", Method, 4, \"\"},\n\t\t{\"(*UnspecifiedType).String\", Method, 4, \"\"},\n\t\t{\"(*UnsupportedType).Common\", Method, 13, \"\"},\n\t\t{\"(*UnsupportedType).Size\", Method, 13, \"\"},\n\t\t{\"(*UnsupportedType).String\", Method, 13, \"\"},\n\t\t{\"(*VoidType).Common\", Method, 0, \"\"},\n\t\t{\"(*VoidType).Size\", Method, 0, \"\"},\n\t\t{\"(*VoidType).String\", Method, 0, \"\"},\n\t\t{\"(Attr).GoString\", Method, 0, \"\"},\n\t\t{\"(Attr).String\", Method, 0, \"\"},\n\t\t{\"(Class).GoString\", Method, 5, \"\"},\n\t\t{\"(Class).String\", Method, 5, \"\"},\n\t\t{\"(DecodeError).Error\", Method, 0, \"\"},\n\t\t{\"(Tag).GoString\", Method, 0, \"\"},\n\t\t{\"(Tag).String\", Method, 0, \"\"},\n\t\t{\"(Type).Common\", Method, 0, \"\"},\n\t\t{\"(Type).Size\", Method, 0, \"\"},\n\t\t{\"(Type).String\", Method, 0, \"\"},\n\t\t{\"AddrType\", Type, 0, \"\"},\n\t\t{\"AddrType.BasicType\", Field, 0, \"\"},\n\t\t{\"ArrayType\", Type, 0, \"\"},\n\t\t{\"ArrayType.CommonType\", Field, 0, \"\"},\n\t\t{\"ArrayType.Count\", Field, 0, \"\"},\n\t\t{\"ArrayType.StrideBitSize\", Field, 0, \"\"},\n\t\t{\"ArrayType.Type\", Field, 0, \"\"},\n\t\t{\"Attr\", Type, 0, \"\"},\n\t\t{\"AttrAbstractOrigin\", Const, 0, \"\"},\n\t\t{\"AttrAccessibility\", Const, 0, \"\"},\n\t\t{\"AttrAddrBase\", Const, 14, \"\"},\n\t\t{\"AttrAddrClass\", Const, 0, \"\"},\n\t\t{\"AttrAlignment\", Const, 14, \"\"},\n\t\t{\"AttrAllocated\", Const, 0, \"\"},\n\t\t{\"AttrArtificial\", Const, 0, \"\"},\n\t\t{\"AttrAssociated\", Const, 0, \"\"},\n\t\t{\"AttrBaseTypes\", Const, 0, \"\"},\n\t\t{\"AttrBinaryScale\", Const, 14, \"\"},\n\t\t{\"AttrBitOffset\", Const, 0, \"\"},\n\t\t{\"AttrBitSize\", Const, 0, \"\"},\n\t\t{\"AttrByteSize\", Const, 0, \"\"},\n\t\t{\"AttrCallAllCalls\", Const, 14, \"\"},\n\t\t{\"AttrCallAllSourceCalls\", Const, 14, \"\"},\n\t\t{\"AttrCallAllTailCalls\", Const, 14, \"\"},\n\t\t{\"AttrCallColumn\", Const, 0, \"\"},\n\t\t{\"AttrCallDataLocation\", Const, 14, \"\"},\n\t\t{\"AttrCallDataValue\", Const, 14, \"\"},\n\t\t{\"AttrCallFile\", Const, 0, \"\"},\n\t\t{\"AttrCallLine\", Const, 0, \"\"},\n\t\t{\"AttrCallOrigin\", Const, 14, \"\"},\n\t\t{\"AttrCallPC\", Const, 14, \"\"},\n\t\t{\"AttrCallParameter\", Const, 14, \"\"},\n\t\t{\"AttrCallReturnPC\", Const, 14, \"\"},\n\t\t{\"AttrCallTailCall\", Const, 14, \"\"},\n\t\t{\"AttrCallTarget\", Const, 14, \"\"},\n\t\t{\"AttrCallTargetClobbered\", Const, 14, \"\"},\n\t\t{\"AttrCallValue\", Const, 14, \"\"},\n\t\t{\"AttrCalling\", Const, 0, \"\"},\n\t\t{\"AttrCommonRef\", Const, 0, \"\"},\n\t\t{\"AttrCompDir\", Const, 0, \"\"},\n\t\t{\"AttrConstExpr\", Const, 14, \"\"},\n\t\t{\"AttrConstValue\", Const, 0, \"\"},\n\t\t{\"AttrContainingType\", Const, 0, \"\"},\n\t\t{\"AttrCount\", Const, 0, \"\"},\n\t\t{\"AttrDataBitOffset\", Const, 14, \"\"},\n\t\t{\"AttrDataLocation\", Const, 0, \"\"},\n\t\t{\"AttrDataMemberLoc\", Const, 0, \"\"},\n\t\t{\"AttrDecimalScale\", Const, 14, \"\"},\n\t\t{\"AttrDecimalSign\", Const, 14, \"\"},\n\t\t{\"AttrDeclColumn\", Const, 0, \"\"},\n\t\t{\"AttrDeclFile\", Const, 0, \"\"},\n\t\t{\"AttrDeclLine\", Const, 0, \"\"},\n\t\t{\"AttrDeclaration\", Const, 0, \"\"},\n\t\t{\"AttrDefaultValue\", Const, 0, \"\"},\n\t\t{\"AttrDefaulted\", Const, 14, \"\"},\n\t\t{\"AttrDeleted\", Const, 14, \"\"},\n\t\t{\"AttrDescription\", Const, 0, \"\"},\n\t\t{\"AttrDigitCount\", Const, 14, \"\"},\n\t\t{\"AttrDiscr\", Const, 0, \"\"},\n\t\t{\"AttrDiscrList\", Const, 0, \"\"},\n\t\t{\"AttrDiscrValue\", Const, 0, \"\"},\n\t\t{\"AttrDwoName\", Const, 14, \"\"},\n\t\t{\"AttrElemental\", Const, 14, \"\"},\n\t\t{\"AttrEncoding\", Const, 0, \"\"},\n\t\t{\"AttrEndianity\", Const, 14, \"\"},\n\t\t{\"AttrEntrypc\", Const, 0, \"\"},\n\t\t{\"AttrEnumClass\", Const, 14, \"\"},\n\t\t{\"AttrExplicit\", Const, 14, \"\"},\n\t\t{\"AttrExportSymbols\", Const, 14, \"\"},\n\t\t{\"AttrExtension\", Const, 0, \"\"},\n\t\t{\"AttrExternal\", Const, 0, \"\"},\n\t\t{\"AttrFrameBase\", Const, 0, \"\"},\n\t\t{\"AttrFriend\", Const, 0, \"\"},\n\t\t{\"AttrHighpc\", Const, 0, \"\"},\n\t\t{\"AttrIdentifierCase\", Const, 0, \"\"},\n\t\t{\"AttrImport\", Const, 0, \"\"},\n\t\t{\"AttrInline\", Const, 0, \"\"},\n\t\t{\"AttrIsOptional\", Const, 0, \"\"},\n\t\t{\"AttrLanguage\", Const, 0, \"\"},\n\t\t{\"AttrLinkageName\", Const, 14, \"\"},\n\t\t{\"AttrLocation\", Const, 0, \"\"},\n\t\t{\"AttrLoclistsBase\", Const, 14, \"\"},\n\t\t{\"AttrLowerBound\", Const, 0, \"\"},\n\t\t{\"AttrLowpc\", Const, 0, \"\"},\n\t\t{\"AttrMacroInfo\", Const, 0, \"\"},\n\t\t{\"AttrMacros\", Const, 14, \"\"},\n\t\t{\"AttrMainSubprogram\", Const, 14, \"\"},\n\t\t{\"AttrMutable\", Const, 14, \"\"},\n\t\t{\"AttrName\", Const, 0, \"\"},\n\t\t{\"AttrNamelistItem\", Const, 0, \"\"},\n\t\t{\"AttrNoreturn\", Const, 14, \"\"},\n\t\t{\"AttrObjectPointer\", Const, 14, \"\"},\n\t\t{\"AttrOrdering\", Const, 0, \"\"},\n\t\t{\"AttrPictureString\", Const, 14, \"\"},\n\t\t{\"AttrPriority\", Const, 0, \"\"},\n\t\t{\"AttrProducer\", Const, 0, \"\"},\n\t\t{\"AttrPrototyped\", Const, 0, \"\"},\n\t\t{\"AttrPure\", Const, 14, \"\"},\n\t\t{\"AttrRanges\", Const, 0, \"\"},\n\t\t{\"AttrRank\", Const, 14, \"\"},\n\t\t{\"AttrRecursive\", Const, 14, \"\"},\n\t\t{\"AttrReference\", Const, 14, \"\"},\n\t\t{\"AttrReturnAddr\", Const, 0, \"\"},\n\t\t{\"AttrRnglistsBase\", Const, 14, \"\"},\n\t\t{\"AttrRvalueReference\", Const, 14, \"\"},\n\t\t{\"AttrSegment\", Const, 0, \"\"},\n\t\t{\"AttrSibling\", Const, 0, \"\"},\n\t\t{\"AttrSignature\", Const, 14, \"\"},\n\t\t{\"AttrSmall\", Const, 14, \"\"},\n\t\t{\"AttrSpecification\", Const, 0, \"\"},\n\t\t{\"AttrStartScope\", Const, 0, \"\"},\n\t\t{\"AttrStaticLink\", Const, 0, \"\"},\n\t\t{\"AttrStmtList\", Const, 0, \"\"},\n\t\t{\"AttrStrOffsetsBase\", Const, 14, \"\"},\n\t\t{\"AttrStride\", Const, 0, \"\"},\n\t\t{\"AttrStrideSize\", Const, 0, \"\"},\n\t\t{\"AttrStringLength\", Const, 0, \"\"},\n\t\t{\"AttrStringLengthBitSize\", Const, 14, \"\"},\n\t\t{\"AttrStringLengthByteSize\", Const, 14, \"\"},\n\t\t{\"AttrThreadsScaled\", Const, 14, \"\"},\n\t\t{\"AttrTrampoline\", Const, 0, \"\"},\n\t\t{\"AttrType\", Const, 0, \"\"},\n\t\t{\"AttrUpperBound\", Const, 0, \"\"},\n\t\t{\"AttrUseLocation\", Const, 0, \"\"},\n\t\t{\"AttrUseUTF8\", Const, 0, \"\"},\n\t\t{\"AttrVarParam\", Const, 0, \"\"},\n\t\t{\"AttrVirtuality\", Const, 0, \"\"},\n\t\t{\"AttrVisibility\", Const, 0, \"\"},\n\t\t{\"AttrVtableElemLoc\", Const, 0, \"\"},\n\t\t{\"BasicType\", Type, 0, \"\"},\n\t\t{\"BasicType.BitOffset\", Field, 0, \"\"},\n\t\t{\"BasicType.BitSize\", Field, 0, \"\"},\n\t\t{\"BasicType.CommonType\", Field, 0, \"\"},\n\t\t{\"BasicType.DataBitOffset\", Field, 18, \"\"},\n\t\t{\"BoolType\", Type, 0, \"\"},\n\t\t{\"BoolType.BasicType\", Field, 0, \"\"},\n\t\t{\"CharType\", Type, 0, \"\"},\n\t\t{\"CharType.BasicType\", Field, 0, \"\"},\n\t\t{\"Class\", Type, 5, \"\"},\n\t\t{\"ClassAddrPtr\", Const, 14, \"\"},\n\t\t{\"ClassAddress\", Const, 5, \"\"},\n\t\t{\"ClassBlock\", Const, 5, \"\"},\n\t\t{\"ClassConstant\", Const, 5, \"\"},\n\t\t{\"ClassExprLoc\", Const, 5, \"\"},\n\t\t{\"ClassFlag\", Const, 5, \"\"},\n\t\t{\"ClassLinePtr\", Const, 5, \"\"},\n\t\t{\"ClassLocList\", Const, 14, \"\"},\n\t\t{\"ClassLocListPtr\", Const, 5, \"\"},\n\t\t{\"ClassMacPtr\", Const, 5, \"\"},\n\t\t{\"ClassRangeListPtr\", Const, 5, \"\"},\n\t\t{\"ClassReference\", Const, 5, \"\"},\n\t\t{\"ClassReferenceAlt\", Const, 5, \"\"},\n\t\t{\"ClassReferenceSig\", Const, 5, \"\"},\n\t\t{\"ClassRngList\", Const, 14, \"\"},\n\t\t{\"ClassRngListsPtr\", Const, 14, \"\"},\n\t\t{\"ClassStrOffsetsPtr\", Const, 14, \"\"},\n\t\t{\"ClassString\", Const, 5, \"\"},\n\t\t{\"ClassStringAlt\", Const, 5, \"\"},\n\t\t{\"ClassUnknown\", Const, 6, \"\"},\n\t\t{\"CommonType\", Type, 0, \"\"},\n\t\t{\"CommonType.ByteSize\", Field, 0, \"\"},\n\t\t{\"CommonType.Name\", Field, 0, \"\"},\n\t\t{\"ComplexType\", Type, 0, \"\"},\n\t\t{\"ComplexType.BasicType\", Field, 0, \"\"},\n\t\t{\"Data\", Type, 0, \"\"},\n\t\t{\"DecodeError\", Type, 0, \"\"},\n\t\t{\"DecodeError.Err\", Field, 0, \"\"},\n\t\t{\"DecodeError.Name\", Field, 0, \"\"},\n\t\t{\"DecodeError.Offset\", Field, 0, \"\"},\n\t\t{\"DotDotDotType\", Type, 0, \"\"},\n\t\t{\"DotDotDotType.CommonType\", Field, 0, \"\"},\n\t\t{\"Entry\", Type, 0, \"\"},\n\t\t{\"Entry.Children\", Field, 0, \"\"},\n\t\t{\"Entry.Field\", Field, 0, \"\"},\n\t\t{\"Entry.Offset\", Field, 0, \"\"},\n\t\t{\"Entry.Tag\", Field, 0, \"\"},\n\t\t{\"EnumType\", Type, 0, \"\"},\n\t\t{\"EnumType.CommonType\", Field, 0, \"\"},\n\t\t{\"EnumType.EnumName\", Field, 0, \"\"},\n\t\t{\"EnumType.Val\", Field, 0, \"\"},\n\t\t{\"EnumValue\", Type, 0, \"\"},\n\t\t{\"EnumValue.Name\", Field, 0, \"\"},\n\t\t{\"EnumValue.Val\", Field, 0, \"\"},\n\t\t{\"ErrUnknownPC\", Var, 5, \"\"},\n\t\t{\"Field\", Type, 0, \"\"},\n\t\t{\"Field.Attr\", Field, 0, \"\"},\n\t\t{\"Field.Class\", Field, 5, \"\"},\n\t\t{\"Field.Val\", Field, 0, \"\"},\n\t\t{\"FloatType\", Type, 0, \"\"},\n\t\t{\"FloatType.BasicType\", Field, 0, \"\"},\n\t\t{\"FuncType\", Type, 0, \"\"},\n\t\t{\"FuncType.CommonType\", Field, 0, \"\"},\n\t\t{\"FuncType.ParamType\", Field, 0, \"\"},\n\t\t{\"FuncType.ReturnType\", Field, 0, \"\"},\n\t\t{\"IntType\", Type, 0, \"\"},\n\t\t{\"IntType.BasicType\", Field, 0, \"\"},\n\t\t{\"LineEntry\", Type, 5, \"\"},\n\t\t{\"LineEntry.Address\", Field, 5, \"\"},\n\t\t{\"LineEntry.BasicBlock\", Field, 5, \"\"},\n\t\t{\"LineEntry.Column\", Field, 5, \"\"},\n\t\t{\"LineEntry.Discriminator\", Field, 5, \"\"},\n\t\t{\"LineEntry.EndSequence\", Field, 5, \"\"},\n\t\t{\"LineEntry.EpilogueBegin\", Field, 5, \"\"},\n\t\t{\"LineEntry.File\", Field, 5, \"\"},\n\t\t{\"LineEntry.ISA\", Field, 5, \"\"},\n\t\t{\"LineEntry.IsStmt\", Field, 5, \"\"},\n\t\t{\"LineEntry.Line\", Field, 5, \"\"},\n\t\t{\"LineEntry.OpIndex\", Field, 5, \"\"},\n\t\t{\"LineEntry.PrologueEnd\", Field, 5, \"\"},\n\t\t{\"LineFile\", Type, 5, \"\"},\n\t\t{\"LineFile.Length\", Field, 5, \"\"},\n\t\t{\"LineFile.Mtime\", Field, 5, \"\"},\n\t\t{\"LineFile.Name\", Field, 5, \"\"},\n\t\t{\"LineReader\", Type, 5, \"\"},\n\t\t{\"LineReaderPos\", Type, 5, \"\"},\n\t\t{\"New\", Func, 0, \"func(abbrev []byte, aranges []byte, frame []byte, info []byte, line []byte, pubnames []byte, ranges []byte, str []byte) (*Data, error)\"},\n\t\t{\"Offset\", Type, 0, \"\"},\n\t\t{\"PtrType\", Type, 0, \"\"},\n\t\t{\"PtrType.CommonType\", Field, 0, \"\"},\n\t\t{\"PtrType.Type\", Field, 0, \"\"},\n\t\t{\"QualType\", Type, 0, \"\"},\n\t\t{\"QualType.CommonType\", Field, 0, \"\"},\n\t\t{\"QualType.Qual\", Field, 0, \"\"},\n\t\t{\"QualType.Type\", Field, 0, \"\"},\n\t\t{\"Reader\", Type, 0, \"\"},\n\t\t{\"StructField\", Type, 0, \"\"},\n\t\t{\"StructField.BitOffset\", Field, 0, \"\"},\n\t\t{\"StructField.BitSize\", Field, 0, \"\"},\n\t\t{\"StructField.ByteOffset\", Field, 0, \"\"},\n\t\t{\"StructField.ByteSize\", Field, 0, \"\"},\n\t\t{\"StructField.DataBitOffset\", Field, 18, \"\"},\n\t\t{\"StructField.Name\", Field, 0, \"\"},\n\t\t{\"StructField.Type\", Field, 0, \"\"},\n\t\t{\"StructType\", Type, 0, \"\"},\n\t\t{\"StructType.CommonType\", Field, 0, \"\"},\n\t\t{\"StructType.Field\", Field, 0, \"\"},\n\t\t{\"StructType.Incomplete\", Field, 0, \"\"},\n\t\t{\"StructType.Kind\", Field, 0, \"\"},\n\t\t{\"StructType.StructName\", Field, 0, \"\"},\n\t\t{\"Tag\", Type, 0, \"\"},\n\t\t{\"TagAccessDeclaration\", Const, 0, \"\"},\n\t\t{\"TagArrayType\", Const, 0, \"\"},\n\t\t{\"TagAtomicType\", Const, 14, \"\"},\n\t\t{\"TagBaseType\", Const, 0, \"\"},\n\t\t{\"TagCallSite\", Const, 14, \"\"},\n\t\t{\"TagCallSiteParameter\", Const, 14, \"\"},\n\t\t{\"TagCatchDwarfBlock\", Const, 0, \"\"},\n\t\t{\"TagClassType\", Const, 0, \"\"},\n\t\t{\"TagCoarrayType\", Const, 14, \"\"},\n\t\t{\"TagCommonDwarfBlock\", Const, 0, \"\"},\n\t\t{\"TagCommonInclusion\", Const, 0, \"\"},\n\t\t{\"TagCompileUnit\", Const, 0, \"\"},\n\t\t{\"TagCondition\", Const, 3, \"\"},\n\t\t{\"TagConstType\", Const, 0, \"\"},\n\t\t{\"TagConstant\", Const, 0, \"\"},\n\t\t{\"TagDwarfProcedure\", Const, 0, \"\"},\n\t\t{\"TagDynamicType\", Const, 14, \"\"},\n\t\t{\"TagEntryPoint\", Const, 0, \"\"},\n\t\t{\"TagEnumerationType\", Const, 0, \"\"},\n\t\t{\"TagEnumerator\", Const, 0, \"\"},\n\t\t{\"TagFileType\", Const, 0, \"\"},\n\t\t{\"TagFormalParameter\", Const, 0, \"\"},\n\t\t{\"TagFriend\", Const, 0, \"\"},\n\t\t{\"TagGenericSubrange\", Const, 14, \"\"},\n\t\t{\"TagImmutableType\", Const, 14, \"\"},\n\t\t{\"TagImportedDeclaration\", Const, 0, \"\"},\n\t\t{\"TagImportedModule\", Const, 0, \"\"},\n\t\t{\"TagImportedUnit\", Const, 0, \"\"},\n\t\t{\"TagInheritance\", Const, 0, \"\"},\n\t\t{\"TagInlinedSubroutine\", Const, 0, \"\"},\n\t\t{\"TagInterfaceType\", Const, 0, \"\"},\n\t\t{\"TagLabel\", Const, 0, \"\"},\n\t\t{\"TagLexDwarfBlock\", Const, 0, \"\"},\n\t\t{\"TagMember\", Const, 0, \"\"},\n\t\t{\"TagModule\", Const, 0, \"\"},\n\t\t{\"TagMutableType\", Const, 0, \"\"},\n\t\t{\"TagNamelist\", Const, 0, \"\"},\n\t\t{\"TagNamelistItem\", Const, 0, \"\"},\n\t\t{\"TagNamespace\", Const, 0, \"\"},\n\t\t{\"TagPackedType\", Const, 0, \"\"},\n\t\t{\"TagPartialUnit\", Const, 0, \"\"},\n\t\t{\"TagPointerType\", Const, 0, \"\"},\n\t\t{\"TagPtrToMemberType\", Const, 0, \"\"},\n\t\t{\"TagReferenceType\", Const, 0, \"\"},\n\t\t{\"TagRestrictType\", Const, 0, \"\"},\n\t\t{\"TagRvalueReferenceType\", Const, 3, \"\"},\n\t\t{\"TagSetType\", Const, 0, \"\"},\n\t\t{\"TagSharedType\", Const, 3, \"\"},\n\t\t{\"TagSkeletonUnit\", Const, 14, \"\"},\n\t\t{\"TagStringType\", Const, 0, \"\"},\n\t\t{\"TagStructType\", Const, 0, \"\"},\n\t\t{\"TagSubprogram\", Const, 0, \"\"},\n\t\t{\"TagSubrangeType\", Const, 0, \"\"},\n\t\t{\"TagSubroutineType\", Const, 0, \"\"},\n\t\t{\"TagTemplateAlias\", Const, 3, \"\"},\n\t\t{\"TagTemplateTypeParameter\", Const, 0, \"\"},\n\t\t{\"TagTemplateValueParameter\", Const, 0, \"\"},\n\t\t{\"TagThrownType\", Const, 0, \"\"},\n\t\t{\"TagTryDwarfBlock\", Const, 0, \"\"},\n\t\t{\"TagTypeUnit\", Const, 3, \"\"},\n\t\t{\"TagTypedef\", Const, 0, \"\"},\n\t\t{\"TagUnionType\", Const, 0, \"\"},\n\t\t{\"TagUnspecifiedParameters\", Const, 0, \"\"},\n\t\t{\"TagUnspecifiedType\", Const, 0, \"\"},\n\t\t{\"TagVariable\", Const, 0, \"\"},\n\t\t{\"TagVariant\", Const, 0, \"\"},\n\t\t{\"TagVariantPart\", Const, 0, \"\"},\n\t\t{\"TagVolatileType\", Const, 0, \"\"},\n\t\t{\"TagWithStmt\", Const, 0, \"\"},\n\t\t{\"Type\", Type, 0, \"\"},\n\t\t{\"TypedefType\", Type, 0, \"\"},\n\t\t{\"TypedefType.CommonType\", Field, 0, \"\"},\n\t\t{\"TypedefType.Type\", Field, 0, \"\"},\n\t\t{\"UcharType\", Type, 0, \"\"},\n\t\t{\"UcharType.BasicType\", Field, 0, \"\"},\n\t\t{\"UintType\", Type, 0, \"\"},\n\t\t{\"UintType.BasicType\", Field, 0, \"\"},\n\t\t{\"UnspecifiedType\", Type, 4, \"\"},\n\t\t{\"UnspecifiedType.BasicType\", Field, 4, \"\"},\n\t\t{\"UnsupportedType\", Type, 13, \"\"},\n\t\t{\"UnsupportedType.CommonType\", Field, 13, \"\"},\n\t\t{\"UnsupportedType.Tag\", Field, 13, \"\"},\n\t\t{\"VoidType\", Type, 0, \"\"},\n\t\t{\"VoidType.CommonType\", Field, 0, \"\"},\n\t},\n\t\"debug/elf\": {\n\t\t{\"(*File).Close\", Method, 0, \"\"},\n\t\t{\"(*File).DWARF\", Method, 0, \"\"},\n\t\t{\"(*File).DynString\", Method, 1, \"\"},\n\t\t{\"(*File).DynValue\", Method, 21, \"\"},\n\t\t{\"(*File).DynamicSymbols\", Method, 4, \"\"},\n\t\t{\"(*File).DynamicVersionNeeds\", Method, 24, \"\"},\n\t\t{\"(*File).DynamicVersions\", Method, 24, \"\"},\n\t\t{\"(*File).ImportedLibraries\", Method, 0, \"\"},\n\t\t{\"(*File).ImportedSymbols\", Method, 0, \"\"},\n\t\t{\"(*File).Section\", Method, 0, \"\"},\n\t\t{\"(*File).SectionByType\", Method, 0, \"\"},\n\t\t{\"(*File).Symbols\", Method, 0, \"\"},\n\t\t{\"(*FormatError).Error\", Method, 0, \"\"},\n\t\t{\"(*Prog).Open\", Method, 0, \"\"},\n\t\t{\"(*Section).Data\", Method, 0, \"\"},\n\t\t{\"(*Section).Open\", Method, 0, \"\"},\n\t\t{\"(Class).GoString\", Method, 0, \"\"},\n\t\t{\"(Class).String\", Method, 0, \"\"},\n\t\t{\"(CompressionType).GoString\", Method, 6, \"\"},\n\t\t{\"(CompressionType).String\", Method, 6, \"\"},\n\t\t{\"(Data).GoString\", Method, 0, \"\"},\n\t\t{\"(Data).String\", Method, 0, \"\"},\n\t\t{\"(DynFlag).GoString\", Method, 0, \"\"},\n\t\t{\"(DynFlag).String\", Method, 0, \"\"},\n\t\t{\"(DynFlag1).GoString\", Method, 21, \"\"},\n\t\t{\"(DynFlag1).String\", Method, 21, \"\"},\n\t\t{\"(DynTag).GoString\", Method, 0, \"\"},\n\t\t{\"(DynTag).String\", Method, 0, \"\"},\n\t\t{\"(Machine).GoString\", Method, 0, \"\"},\n\t\t{\"(Machine).String\", Method, 0, \"\"},\n\t\t{\"(NType).GoString\", Method, 0, \"\"},\n\t\t{\"(NType).String\", Method, 0, \"\"},\n\t\t{\"(OSABI).GoString\", Method, 0, \"\"},\n\t\t{\"(OSABI).String\", Method, 0, \"\"},\n\t\t{\"(Prog).ReadAt\", Method, 0, \"\"},\n\t\t{\"(ProgFlag).GoString\", Method, 0, \"\"},\n\t\t{\"(ProgFlag).String\", Method, 0, \"\"},\n\t\t{\"(ProgType).GoString\", Method, 0, \"\"},\n\t\t{\"(ProgType).String\", Method, 0, \"\"},\n\t\t{\"(R_386).GoString\", Method, 0, \"\"},\n\t\t{\"(R_386).String\", Method, 0, \"\"},\n\t\t{\"(R_390).GoString\", Method, 7, \"\"},\n\t\t{\"(R_390).String\", Method, 7, \"\"},\n\t\t{\"(R_AARCH64).GoString\", Method, 4, \"\"},\n\t\t{\"(R_AARCH64).String\", Method, 4, \"\"},\n\t\t{\"(R_ALPHA).GoString\", Method, 0, \"\"},\n\t\t{\"(R_ALPHA).String\", Method, 0, \"\"},\n\t\t{\"(R_ARM).GoString\", Method, 0, \"\"},\n\t\t{\"(R_ARM).String\", Method, 0, \"\"},\n\t\t{\"(R_LARCH).GoString\", Method, 19, \"\"},\n\t\t{\"(R_LARCH).String\", Method, 19, \"\"},\n\t\t{\"(R_MIPS).GoString\", Method, 6, \"\"},\n\t\t{\"(R_MIPS).String\", Method, 6, \"\"},\n\t\t{\"(R_PPC).GoString\", Method, 0, \"\"},\n\t\t{\"(R_PPC).String\", Method, 0, \"\"},\n\t\t{\"(R_PPC64).GoString\", Method, 5, \"\"},\n\t\t{\"(R_PPC64).String\", Method, 5, \"\"},\n\t\t{\"(R_RISCV).GoString\", Method, 11, \"\"},\n\t\t{\"(R_RISCV).String\", Method, 11, \"\"},\n\t\t{\"(R_SPARC).GoString\", Method, 0, \"\"},\n\t\t{\"(R_SPARC).String\", Method, 0, \"\"},\n\t\t{\"(R_X86_64).GoString\", Method, 0, \"\"},\n\t\t{\"(R_X86_64).String\", Method, 0, \"\"},\n\t\t{\"(Section).ReadAt\", Method, 0, \"\"},\n\t\t{\"(SectionFlag).GoString\", Method, 0, \"\"},\n\t\t{\"(SectionFlag).String\", Method, 0, \"\"},\n\t\t{\"(SectionIndex).GoString\", Method, 0, \"\"},\n\t\t{\"(SectionIndex).String\", Method, 0, \"\"},\n\t\t{\"(SectionType).GoString\", Method, 0, \"\"},\n\t\t{\"(SectionType).String\", Method, 0, \"\"},\n\t\t{\"(SymBind).GoString\", Method, 0, \"\"},\n\t\t{\"(SymBind).String\", Method, 0, \"\"},\n\t\t{\"(SymType).GoString\", Method, 0, \"\"},\n\t\t{\"(SymType).String\", Method, 0, \"\"},\n\t\t{\"(SymVis).GoString\", Method, 0, \"\"},\n\t\t{\"(SymVis).String\", Method, 0, \"\"},\n\t\t{\"(Type).GoString\", Method, 0, \"\"},\n\t\t{\"(Type).String\", Method, 0, \"\"},\n\t\t{\"(Version).GoString\", Method, 0, \"\"},\n\t\t{\"(Version).String\", Method, 0, \"\"},\n\t\t{\"(VersionIndex).Index\", Method, 24, \"\"},\n\t\t{\"(VersionIndex).IsHidden\", Method, 24, \"\"},\n\t\t{\"ARM_MAGIC_TRAMP_NUMBER\", Const, 0, \"\"},\n\t\t{\"COMPRESS_HIOS\", Const, 6, \"\"},\n\t\t{\"COMPRESS_HIPROC\", Const, 6, \"\"},\n\t\t{\"COMPRESS_LOOS\", Const, 6, \"\"},\n\t\t{\"COMPRESS_LOPROC\", Const, 6, \"\"},\n\t\t{\"COMPRESS_ZLIB\", Const, 6, \"\"},\n\t\t{\"COMPRESS_ZSTD\", Const, 21, \"\"},\n\t\t{\"Chdr32\", Type, 6, \"\"},\n\t\t{\"Chdr32.Addralign\", Field, 6, \"\"},\n\t\t{\"Chdr32.Size\", Field, 6, \"\"},\n\t\t{\"Chdr32.Type\", Field, 6, \"\"},\n\t\t{\"Chdr64\", Type, 6, \"\"},\n\t\t{\"Chdr64.Addralign\", Field, 6, \"\"},\n\t\t{\"Chdr64.Size\", Field, 6, \"\"},\n\t\t{\"Chdr64.Type\", Field, 6, \"\"},\n\t\t{\"Class\", Type, 0, \"\"},\n\t\t{\"CompressionType\", Type, 6, \"\"},\n\t\t{\"DF_1_CONFALT\", Const, 21, \"\"},\n\t\t{\"DF_1_DIRECT\", Const, 21, \"\"},\n\t\t{\"DF_1_DISPRELDNE\", Const, 21, \"\"},\n\t\t{\"DF_1_DISPRELPND\", Const, 21, \"\"},\n\t\t{\"DF_1_EDITED\", Const, 21, \"\"},\n\t\t{\"DF_1_ENDFILTEE\", Const, 21, \"\"},\n\t\t{\"DF_1_GLOBAL\", Const, 21, \"\"},\n\t\t{\"DF_1_GLOBAUDIT\", Const, 21, \"\"},\n\t\t{\"DF_1_GROUP\", Const, 21, \"\"},\n\t\t{\"DF_1_IGNMULDEF\", Const, 21, \"\"},\n\t\t{\"DF_1_INITFIRST\", Const, 21, \"\"},\n\t\t{\"DF_1_INTERPOSE\", Const, 21, \"\"},\n\t\t{\"DF_1_KMOD\", Const, 21, \"\"},\n\t\t{\"DF_1_LOADFLTR\", Const, 21, \"\"},\n\t\t{\"DF_1_NOCOMMON\", Const, 21, \"\"},\n\t\t{\"DF_1_NODEFLIB\", Const, 21, \"\"},\n\t\t{\"DF_1_NODELETE\", Const, 21, \"\"},\n\t\t{\"DF_1_NODIRECT\", Const, 21, \"\"},\n\t\t{\"DF_1_NODUMP\", Const, 21, \"\"},\n\t\t{\"DF_1_NOHDR\", Const, 21, \"\"},\n\t\t{\"DF_1_NOKSYMS\", Const, 21, \"\"},\n\t\t{\"DF_1_NOOPEN\", Const, 21, \"\"},\n\t\t{\"DF_1_NORELOC\", Const, 21, \"\"},\n\t\t{\"DF_1_NOW\", Const, 21, \"\"},\n\t\t{\"DF_1_ORIGIN\", Const, 21, \"\"},\n\t\t{\"DF_1_PIE\", Const, 21, \"\"},\n\t\t{\"DF_1_SINGLETON\", Const, 21, \"\"},\n\t\t{\"DF_1_STUB\", Const, 21, \"\"},\n\t\t{\"DF_1_SYMINTPOSE\", Const, 21, \"\"},\n\t\t{\"DF_1_TRANS\", Const, 21, \"\"},\n\t\t{\"DF_1_WEAKFILTER\", Const, 21, \"\"},\n\t\t{\"DF_BIND_NOW\", Const, 0, \"\"},\n\t\t{\"DF_ORIGIN\", Const, 0, \"\"},\n\t\t{\"DF_STATIC_TLS\", Const, 0, \"\"},\n\t\t{\"DF_SYMBOLIC\", Const, 0, \"\"},\n\t\t{\"DF_TEXTREL\", Const, 0, \"\"},\n\t\t{\"DT_ADDRRNGHI\", Const, 16, \"\"},\n\t\t{\"DT_ADDRRNGLO\", Const, 16, \"\"},\n\t\t{\"DT_AUDIT\", Const, 16, \"\"},\n\t\t{\"DT_AUXILIARY\", Const, 16, \"\"},\n\t\t{\"DT_BIND_NOW\", Const, 0, \"\"},\n\t\t{\"DT_CHECKSUM\", Const, 16, \"\"},\n\t\t{\"DT_CONFIG\", Const, 16, \"\"},\n\t\t{\"DT_DEBUG\", Const, 0, \"\"},\n\t\t{\"DT_DEPAUDIT\", Const, 16, \"\"},\n\t\t{\"DT_ENCODING\", Const, 0, \"\"},\n\t\t{\"DT_FEATURE\", Const, 16, \"\"},\n\t\t{\"DT_FILTER\", Const, 16, \"\"},\n\t\t{\"DT_FINI\", Const, 0, \"\"},\n\t\t{\"DT_FINI_ARRAY\", Const, 0, \"\"},\n\t\t{\"DT_FINI_ARRAYSZ\", Const, 0, \"\"},\n\t\t{\"DT_FLAGS\", Const, 0, \"\"},\n\t\t{\"DT_FLAGS_1\", Const, 16, \"\"},\n\t\t{\"DT_GNU_CONFLICT\", Const, 16, \"\"},\n\t\t{\"DT_GNU_CONFLICTSZ\", Const, 16, \"\"},\n\t\t{\"DT_GNU_HASH\", Const, 16, \"\"},\n\t\t{\"DT_GNU_LIBLIST\", Const, 16, \"\"},\n\t\t{\"DT_GNU_LIBLISTSZ\", Const, 16, \"\"},\n\t\t{\"DT_GNU_PRELINKED\", Const, 16, \"\"},\n\t\t{\"DT_HASH\", Const, 0, \"\"},\n\t\t{\"DT_HIOS\", Const, 0, \"\"},\n\t\t{\"DT_HIPROC\", Const, 0, \"\"},\n\t\t{\"DT_INIT\", Const, 0, \"\"},\n\t\t{\"DT_INIT_ARRAY\", Const, 0, \"\"},\n\t\t{\"DT_INIT_ARRAYSZ\", Const, 0, \"\"},\n\t\t{\"DT_JMPREL\", Const, 0, \"\"},\n\t\t{\"DT_LOOS\", Const, 0, \"\"},\n\t\t{\"DT_LOPROC\", Const, 0, \"\"},\n\t\t{\"DT_MIPS_AUX_DYNAMIC\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_BASE_ADDRESS\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_COMPACT_SIZE\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_CONFLICT\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_CONFLICTNO\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_CXX_FLAGS\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_DELTA_CLASS\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_DELTA_CLASSSYM\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_DELTA_CLASSSYM_NO\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_DELTA_CLASS_NO\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_DELTA_INSTANCE\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_DELTA_INSTANCE_NO\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_DELTA_RELOC\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_DELTA_RELOC_NO\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_DELTA_SYM\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_DELTA_SYM_NO\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_DYNSTR_ALIGN\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_FLAGS\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_GOTSYM\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_GP_VALUE\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_HIDDEN_GOTIDX\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_HIPAGENO\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_ICHECKSUM\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_INTERFACE\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_INTERFACE_SIZE\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_IVERSION\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_LIBLIST\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_LIBLISTNO\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_LOCALPAGE_GOTIDX\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_LOCAL_GOTIDX\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_LOCAL_GOTNO\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_MSYM\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_OPTIONS\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_PERF_SUFFIX\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_PIXIE_INIT\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_PLTGOT\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_PROTECTED_GOTIDX\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_RLD_MAP\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_RLD_MAP_REL\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_RLD_TEXT_RESOLVE_ADDR\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_RLD_VERSION\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_RWPLT\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_SYMBOL_LIB\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_SYMTABNO\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_TIME_STAMP\", Const, 16, \"\"},\n\t\t{\"DT_MIPS_UNREFEXTNO\", Const, 16, \"\"},\n\t\t{\"DT_MOVEENT\", Const, 16, \"\"},\n\t\t{\"DT_MOVESZ\", Const, 16, \"\"},\n\t\t{\"DT_MOVETAB\", Const, 16, \"\"},\n\t\t{\"DT_NEEDED\", Const, 0, \"\"},\n\t\t{\"DT_NULL\", Const, 0, \"\"},\n\t\t{\"DT_PLTGOT\", Const, 0, \"\"},\n\t\t{\"DT_PLTPAD\", Const, 16, \"\"},\n\t\t{\"DT_PLTPADSZ\", Const, 16, \"\"},\n\t\t{\"DT_PLTREL\", Const, 0, \"\"},\n\t\t{\"DT_PLTRELSZ\", Const, 0, \"\"},\n\t\t{\"DT_POSFLAG_1\", Const, 16, \"\"},\n\t\t{\"DT_PPC64_GLINK\", Const, 16, \"\"},\n\t\t{\"DT_PPC64_OPD\", Const, 16, \"\"},\n\t\t{\"DT_PPC64_OPDSZ\", Const, 16, \"\"},\n\t\t{\"DT_PPC64_OPT\", Const, 16, \"\"},\n\t\t{\"DT_PPC_GOT\", Const, 16, \"\"},\n\t\t{\"DT_PPC_OPT\", Const, 16, \"\"},\n\t\t{\"DT_PREINIT_ARRAY\", Const, 0, \"\"},\n\t\t{\"DT_PREINIT_ARRAYSZ\", Const, 0, \"\"},\n\t\t{\"DT_REL\", Const, 0, \"\"},\n\t\t{\"DT_RELA\", Const, 0, \"\"},\n\t\t{\"DT_RELACOUNT\", Const, 16, \"\"},\n\t\t{\"DT_RELAENT\", Const, 0, \"\"},\n\t\t{\"DT_RELASZ\", Const, 0, \"\"},\n\t\t{\"DT_RELCOUNT\", Const, 16, \"\"},\n\t\t{\"DT_RELENT\", Const, 0, \"\"},\n\t\t{\"DT_RELSZ\", Const, 0, \"\"},\n\t\t{\"DT_RPATH\", Const, 0, \"\"},\n\t\t{\"DT_RUNPATH\", Const, 0, \"\"},\n\t\t{\"DT_SONAME\", Const, 0, \"\"},\n\t\t{\"DT_SPARC_REGISTER\", Const, 16, \"\"},\n\t\t{\"DT_STRSZ\", Const, 0, \"\"},\n\t\t{\"DT_STRTAB\", Const, 0, \"\"},\n\t\t{\"DT_SYMBOLIC\", Const, 0, \"\"},\n\t\t{\"DT_SYMENT\", Const, 0, \"\"},\n\t\t{\"DT_SYMINENT\", Const, 16, \"\"},\n\t\t{\"DT_SYMINFO\", Const, 16, \"\"},\n\t\t{\"DT_SYMINSZ\", Const, 16, \"\"},\n\t\t{\"DT_SYMTAB\", Const, 0, \"\"},\n\t\t{\"DT_SYMTAB_SHNDX\", Const, 16, \"\"},\n\t\t{\"DT_TEXTREL\", Const, 0, \"\"},\n\t\t{\"DT_TLSDESC_GOT\", Const, 16, \"\"},\n\t\t{\"DT_TLSDESC_PLT\", Const, 16, \"\"},\n\t\t{\"DT_USED\", Const, 16, \"\"},\n\t\t{\"DT_VALRNGHI\", Const, 16, \"\"},\n\t\t{\"DT_VALRNGLO\", Const, 16, \"\"},\n\t\t{\"DT_VERDEF\", Const, 16, \"\"},\n\t\t{\"DT_VERDEFNUM\", Const, 16, \"\"},\n\t\t{\"DT_VERNEED\", Const, 0, \"\"},\n\t\t{\"DT_VERNEEDNUM\", Const, 0, \"\"},\n\t\t{\"DT_VERSYM\", Const, 0, \"\"},\n\t\t{\"Data\", Type, 0, \"\"},\n\t\t{\"Dyn32\", Type, 0, \"\"},\n\t\t{\"Dyn32.Tag\", Field, 0, \"\"},\n\t\t{\"Dyn32.Val\", Field, 0, \"\"},\n\t\t{\"Dyn64\", Type, 0, \"\"},\n\t\t{\"Dyn64.Tag\", Field, 0, \"\"},\n\t\t{\"Dyn64.Val\", Field, 0, \"\"},\n\t\t{\"DynFlag\", Type, 0, \"\"},\n\t\t{\"DynFlag1\", Type, 21, \"\"},\n\t\t{\"DynTag\", Type, 0, \"\"},\n\t\t{\"DynamicVersion\", Type, 24, \"\"},\n\t\t{\"DynamicVersion.Deps\", Field, 24, \"\"},\n\t\t{\"DynamicVersion.Flags\", Field, 24, \"\"},\n\t\t{\"DynamicVersion.Index\", Field, 24, \"\"},\n\t\t{\"DynamicVersion.Name\", Field, 24, \"\"},\n\t\t{\"DynamicVersionDep\", Type, 24, \"\"},\n\t\t{\"DynamicVersionDep.Dep\", Field, 24, \"\"},\n\t\t{\"DynamicVersionDep.Flags\", Field, 24, \"\"},\n\t\t{\"DynamicVersionDep.Index\", Field, 24, \"\"},\n\t\t{\"DynamicVersionFlag\", Type, 24, \"\"},\n\t\t{\"DynamicVersionNeed\", Type, 24, \"\"},\n\t\t{\"DynamicVersionNeed.Name\", Field, 24, \"\"},\n\t\t{\"DynamicVersionNeed.Needs\", Field, 24, \"\"},\n\t\t{\"EI_ABIVERSION\", Const, 0, \"\"},\n\t\t{\"EI_CLASS\", Const, 0, \"\"},\n\t\t{\"EI_DATA\", Const, 0, \"\"},\n\t\t{\"EI_NIDENT\", Const, 0, \"\"},\n\t\t{\"EI_OSABI\", Const, 0, \"\"},\n\t\t{\"EI_PAD\", Const, 0, \"\"},\n\t\t{\"EI_VERSION\", Const, 0, \"\"},\n\t\t{\"ELFCLASS32\", Const, 0, \"\"},\n\t\t{\"ELFCLASS64\", Const, 0, \"\"},\n\t\t{\"ELFCLASSNONE\", Const, 0, \"\"},\n\t\t{\"ELFDATA2LSB\", Const, 0, \"\"},\n\t\t{\"ELFDATA2MSB\", Const, 0, \"\"},\n\t\t{\"ELFDATANONE\", Const, 0, \"\"},\n\t\t{\"ELFMAG\", Const, 0, \"\"},\n\t\t{\"ELFOSABI_86OPEN\", Const, 0, \"\"},\n\t\t{\"ELFOSABI_AIX\", Const, 0, \"\"},\n\t\t{\"ELFOSABI_ARM\", Const, 0, \"\"},\n\t\t{\"ELFOSABI_AROS\", Const, 11, \"\"},\n\t\t{\"ELFOSABI_CLOUDABI\", Const, 11, \"\"},\n\t\t{\"ELFOSABI_FENIXOS\", Const, 11, \"\"},\n\t\t{\"ELFOSABI_FREEBSD\", Const, 0, \"\"},\n\t\t{\"ELFOSABI_HPUX\", Const, 0, \"\"},\n\t\t{\"ELFOSABI_HURD\", Const, 0, \"\"},\n\t\t{\"ELFOSABI_IRIX\", Const, 0, \"\"},\n\t\t{\"ELFOSABI_LINUX\", Const, 0, \"\"},\n\t\t{\"ELFOSABI_MODESTO\", Const, 0, \"\"},\n\t\t{\"ELFOSABI_NETBSD\", Const, 0, \"\"},\n\t\t{\"ELFOSABI_NONE\", Const, 0, \"\"},\n\t\t{\"ELFOSABI_NSK\", Const, 0, \"\"},\n\t\t{\"ELFOSABI_OPENBSD\", Const, 0, \"\"},\n\t\t{\"ELFOSABI_OPENVMS\", Const, 0, \"\"},\n\t\t{\"ELFOSABI_SOLARIS\", Const, 0, \"\"},\n\t\t{\"ELFOSABI_STANDALONE\", Const, 0, \"\"},\n\t\t{\"ELFOSABI_TRU64\", Const, 0, \"\"},\n\t\t{\"EM_386\", Const, 0, \"\"},\n\t\t{\"EM_486\", Const, 0, \"\"},\n\t\t{\"EM_56800EX\", Const, 11, \"\"},\n\t\t{\"EM_68HC05\", Const, 11, \"\"},\n\t\t{\"EM_68HC08\", Const, 11, \"\"},\n\t\t{\"EM_68HC11\", Const, 11, \"\"},\n\t\t{\"EM_68HC12\", Const, 0, \"\"},\n\t\t{\"EM_68HC16\", Const, 11, \"\"},\n\t\t{\"EM_68K\", Const, 0, \"\"},\n\t\t{\"EM_78KOR\", Const, 11, \"\"},\n\t\t{\"EM_8051\", Const, 11, \"\"},\n\t\t{\"EM_860\", Const, 0, \"\"},\n\t\t{\"EM_88K\", Const, 0, \"\"},\n\t\t{\"EM_960\", Const, 0, \"\"},\n\t\t{\"EM_AARCH64\", Const, 4, \"\"},\n\t\t{\"EM_ALPHA\", Const, 0, \"\"},\n\t\t{\"EM_ALPHA_STD\", Const, 0, \"\"},\n\t\t{\"EM_ALTERA_NIOS2\", Const, 11, \"\"},\n\t\t{\"EM_AMDGPU\", Const, 11, \"\"},\n\t\t{\"EM_ARC\", Const, 0, \"\"},\n\t\t{\"EM_ARCA\", Const, 11, \"\"},\n\t\t{\"EM_ARC_COMPACT\", Const, 11, \"\"},\n\t\t{\"EM_ARC_COMPACT2\", Const, 11, \"\"},\n\t\t{\"EM_ARM\", Const, 0, \"\"},\n\t\t{\"EM_AVR\", Const, 11, \"\"},\n\t\t{\"EM_AVR32\", Const, 11, \"\"},\n\t\t{\"EM_BA1\", Const, 11, \"\"},\n\t\t{\"EM_BA2\", Const, 11, \"\"},\n\t\t{\"EM_BLACKFIN\", Const, 11, \"\"},\n\t\t{\"EM_BPF\", Const, 11, \"\"},\n\t\t{\"EM_C166\", Const, 11, \"\"},\n\t\t{\"EM_CDP\", Const, 11, \"\"},\n\t\t{\"EM_CE\", Const, 11, \"\"},\n\t\t{\"EM_CLOUDSHIELD\", Const, 11, \"\"},\n\t\t{\"EM_COGE\", Const, 11, \"\"},\n\t\t{\"EM_COLDFIRE\", Const, 0, \"\"},\n\t\t{\"EM_COOL\", Const, 11, \"\"},\n\t\t{\"EM_COREA_1ST\", Const, 11, \"\"},\n\t\t{\"EM_COREA_2ND\", Const, 11, \"\"},\n\t\t{\"EM_CR\", Const, 11, \"\"},\n\t\t{\"EM_CR16\", Const, 11, \"\"},\n\t\t{\"EM_CRAYNV2\", Const, 11, \"\"},\n\t\t{\"EM_CRIS\", Const, 11, \"\"},\n\t\t{\"EM_CRX\", Const, 11, \"\"},\n\t\t{\"EM_CSR_KALIMBA\", Const, 11, \"\"},\n\t\t{\"EM_CUDA\", Const, 11, \"\"},\n\t\t{\"EM_CYPRESS_M8C\", Const, 11, \"\"},\n\t\t{\"EM_D10V\", Const, 11, \"\"},\n\t\t{\"EM_D30V\", Const, 11, \"\"},\n\t\t{\"EM_DSP24\", Const, 11, \"\"},\n\t\t{\"EM_DSPIC30F\", Const, 11, \"\"},\n\t\t{\"EM_DXP\", Const, 11, \"\"},\n\t\t{\"EM_ECOG1\", Const, 11, \"\"},\n\t\t{\"EM_ECOG16\", Const, 11, \"\"},\n\t\t{\"EM_ECOG1X\", Const, 11, \"\"},\n\t\t{\"EM_ECOG2\", Const, 11, \"\"},\n\t\t{\"EM_ETPU\", Const, 11, \"\"},\n\t\t{\"EM_EXCESS\", Const, 11, \"\"},\n\t\t{\"EM_F2MC16\", Const, 11, \"\"},\n\t\t{\"EM_FIREPATH\", Const, 11, \"\"},\n\t\t{\"EM_FR20\", Const, 0, \"\"},\n\t\t{\"EM_FR30\", Const, 11, \"\"},\n\t\t{\"EM_FT32\", Const, 11, \"\"},\n\t\t{\"EM_FX66\", Const, 11, \"\"},\n\t\t{\"EM_H8S\", Const, 0, \"\"},\n\t\t{\"EM_H8_300\", Const, 0, \"\"},\n\t\t{\"EM_H8_300H\", Const, 0, \"\"},\n\t\t{\"EM_H8_500\", Const, 0, \"\"},\n\t\t{\"EM_HUANY\", Const, 11, \"\"},\n\t\t{\"EM_IA_64\", Const, 0, \"\"},\n\t\t{\"EM_INTEL205\", Const, 11, \"\"},\n\t\t{\"EM_INTEL206\", Const, 11, \"\"},\n\t\t{\"EM_INTEL207\", Const, 11, \"\"},\n\t\t{\"EM_INTEL208\", Const, 11, \"\"},\n\t\t{\"EM_INTEL209\", Const, 11, \"\"},\n\t\t{\"EM_IP2K\", Const, 11, \"\"},\n\t\t{\"EM_JAVELIN\", Const, 11, \"\"},\n\t\t{\"EM_K10M\", Const, 11, \"\"},\n\t\t{\"EM_KM32\", Const, 11, \"\"},\n\t\t{\"EM_KMX16\", Const, 11, \"\"},\n\t\t{\"EM_KMX32\", Const, 11, \"\"},\n\t\t{\"EM_KMX8\", Const, 11, \"\"},\n\t\t{\"EM_KVARC\", Const, 11, \"\"},\n\t\t{\"EM_L10M\", Const, 11, \"\"},\n\t\t{\"EM_LANAI\", Const, 11, \"\"},\n\t\t{\"EM_LATTICEMICO32\", Const, 11, \"\"},\n\t\t{\"EM_LOONGARCH\", Const, 19, \"\"},\n\t\t{\"EM_M16C\", Const, 11, \"\"},\n\t\t{\"EM_M32\", Const, 0, \"\"},\n\t\t{\"EM_M32C\", Const, 11, \"\"},\n\t\t{\"EM_M32R\", Const, 11, \"\"},\n\t\t{\"EM_MANIK\", Const, 11, \"\"},\n\t\t{\"EM_MAX\", Const, 11, \"\"},\n\t\t{\"EM_MAXQ30\", Const, 11, \"\"},\n\t\t{\"EM_MCHP_PIC\", Const, 11, \"\"},\n\t\t{\"EM_MCST_ELBRUS\", Const, 11, \"\"},\n\t\t{\"EM_ME16\", Const, 0, \"\"},\n\t\t{\"EM_METAG\", Const, 11, \"\"},\n\t\t{\"EM_MICROBLAZE\", Const, 11, \"\"},\n\t\t{\"EM_MIPS\", Const, 0, \"\"},\n\t\t{\"EM_MIPS_RS3_LE\", Const, 0, \"\"},\n\t\t{\"EM_MIPS_RS4_BE\", Const, 0, \"\"},\n\t\t{\"EM_MIPS_X\", Const, 0, \"\"},\n\t\t{\"EM_MMA\", Const, 0, \"\"},\n\t\t{\"EM_MMDSP_PLUS\", Const, 11, \"\"},\n\t\t{\"EM_MMIX\", Const, 11, \"\"},\n\t\t{\"EM_MN10200\", Const, 11, \"\"},\n\t\t{\"EM_MN10300\", Const, 11, \"\"},\n\t\t{\"EM_MOXIE\", Const, 11, \"\"},\n\t\t{\"EM_MSP430\", Const, 11, \"\"},\n\t\t{\"EM_NCPU\", Const, 0, \"\"},\n\t\t{\"EM_NDR1\", Const, 0, \"\"},\n\t\t{\"EM_NDS32\", Const, 11, \"\"},\n\t\t{\"EM_NONE\", Const, 0, \"\"},\n\t\t{\"EM_NORC\", Const, 11, \"\"},\n\t\t{\"EM_NS32K\", Const, 11, \"\"},\n\t\t{\"EM_OPEN8\", Const, 11, \"\"},\n\t\t{\"EM_OPENRISC\", Const, 11, \"\"},\n\t\t{\"EM_PARISC\", Const, 0, \"\"},\n\t\t{\"EM_PCP\", Const, 0, \"\"},\n\t\t{\"EM_PDP10\", Const, 11, \"\"},\n\t\t{\"EM_PDP11\", Const, 11, \"\"},\n\t\t{\"EM_PDSP\", Const, 11, \"\"},\n\t\t{\"EM_PJ\", Const, 11, \"\"},\n\t\t{\"EM_PPC\", Const, 0, \"\"},\n\t\t{\"EM_PPC64\", Const, 0, \"\"},\n\t\t{\"EM_PRISM\", Const, 11, \"\"},\n\t\t{\"EM_QDSP6\", Const, 11, \"\"},\n\t\t{\"EM_R32C\", Const, 11, \"\"},\n\t\t{\"EM_RCE\", Const, 0, \"\"},\n\t\t{\"EM_RH32\", Const, 0, \"\"},\n\t\t{\"EM_RISCV\", Const, 11, \"\"},\n\t\t{\"EM_RL78\", Const, 11, \"\"},\n\t\t{\"EM_RS08\", Const, 11, \"\"},\n\t\t{\"EM_RX\", Const, 11, \"\"},\n\t\t{\"EM_S370\", Const, 0, \"\"},\n\t\t{\"EM_S390\", Const, 0, \"\"},\n\t\t{\"EM_SCORE7\", Const, 11, \"\"},\n\t\t{\"EM_SEP\", Const, 11, \"\"},\n\t\t{\"EM_SE_C17\", Const, 11, \"\"},\n\t\t{\"EM_SE_C33\", Const, 11, \"\"},\n\t\t{\"EM_SH\", Const, 0, \"\"},\n\t\t{\"EM_SHARC\", Const, 11, \"\"},\n\t\t{\"EM_SLE9X\", Const, 11, \"\"},\n\t\t{\"EM_SNP1K\", Const, 11, \"\"},\n\t\t{\"EM_SPARC\", Const, 0, \"\"},\n\t\t{\"EM_SPARC32PLUS\", Const, 0, \"\"},\n\t\t{\"EM_SPARCV9\", Const, 0, \"\"},\n\t\t{\"EM_ST100\", Const, 0, \"\"},\n\t\t{\"EM_ST19\", Const, 11, \"\"},\n\t\t{\"EM_ST200\", Const, 11, \"\"},\n\t\t{\"EM_ST7\", Const, 11, \"\"},\n\t\t{\"EM_ST9PLUS\", Const, 11, \"\"},\n\t\t{\"EM_STARCORE\", Const, 0, \"\"},\n\t\t{\"EM_STM8\", Const, 11, \"\"},\n\t\t{\"EM_STXP7X\", Const, 11, \"\"},\n\t\t{\"EM_SVX\", Const, 11, \"\"},\n\t\t{\"EM_TILE64\", Const, 11, \"\"},\n\t\t{\"EM_TILEGX\", Const, 11, \"\"},\n\t\t{\"EM_TILEPRO\", Const, 11, \"\"},\n\t\t{\"EM_TINYJ\", Const, 0, \"\"},\n\t\t{\"EM_TI_ARP32\", Const, 11, \"\"},\n\t\t{\"EM_TI_C2000\", Const, 11, \"\"},\n\t\t{\"EM_TI_C5500\", Const, 11, \"\"},\n\t\t{\"EM_TI_C6000\", Const, 11, \"\"},\n\t\t{\"EM_TI_PRU\", Const, 11, \"\"},\n\t\t{\"EM_TMM_GPP\", Const, 11, \"\"},\n\t\t{\"EM_TPC\", Const, 11, \"\"},\n\t\t{\"EM_TRICORE\", Const, 0, \"\"},\n\t\t{\"EM_TRIMEDIA\", Const, 11, \"\"},\n\t\t{\"EM_TSK3000\", Const, 11, \"\"},\n\t\t{\"EM_UNICORE\", Const, 11, \"\"},\n\t\t{\"EM_V800\", Const, 0, \"\"},\n\t\t{\"EM_V850\", Const, 11, \"\"},\n\t\t{\"EM_VAX\", Const, 11, \"\"},\n\t\t{\"EM_VIDEOCORE\", Const, 11, \"\"},\n\t\t{\"EM_VIDEOCORE3\", Const, 11, \"\"},\n\t\t{\"EM_VIDEOCORE5\", Const, 11, \"\"},\n\t\t{\"EM_VISIUM\", Const, 11, \"\"},\n\t\t{\"EM_VPP500\", Const, 0, \"\"},\n\t\t{\"EM_X86_64\", Const, 0, \"\"},\n\t\t{\"EM_XCORE\", Const, 11, \"\"},\n\t\t{\"EM_XGATE\", Const, 11, \"\"},\n\t\t{\"EM_XIMO16\", Const, 11, \"\"},\n\t\t{\"EM_XTENSA\", Const, 11, \"\"},\n\t\t{\"EM_Z80\", Const, 11, \"\"},\n\t\t{\"EM_ZSP\", Const, 11, \"\"},\n\t\t{\"ET_CORE\", Const, 0, \"\"},\n\t\t{\"ET_DYN\", Const, 0, \"\"},\n\t\t{\"ET_EXEC\", Const, 0, \"\"},\n\t\t{\"ET_HIOS\", Const, 0, \"\"},\n\t\t{\"ET_HIPROC\", Const, 0, \"\"},\n\t\t{\"ET_LOOS\", Const, 0, \"\"},\n\t\t{\"ET_LOPROC\", Const, 0, \"\"},\n\t\t{\"ET_NONE\", Const, 0, \"\"},\n\t\t{\"ET_REL\", Const, 0, \"\"},\n\t\t{\"EV_CURRENT\", Const, 0, \"\"},\n\t\t{\"EV_NONE\", Const, 0, \"\"},\n\t\t{\"ErrNoSymbols\", Var, 4, \"\"},\n\t\t{\"File\", Type, 0, \"\"},\n\t\t{\"File.FileHeader\", Field, 0, \"\"},\n\t\t{\"File.Progs\", Field, 0, \"\"},\n\t\t{\"File.Sections\", Field, 0, \"\"},\n\t\t{\"FileHeader\", Type, 0, \"\"},\n\t\t{\"FileHeader.ABIVersion\", Field, 0, \"\"},\n\t\t{\"FileHeader.ByteOrder\", Field, 0, \"\"},\n\t\t{\"FileHeader.Class\", Field, 0, \"\"},\n\t\t{\"FileHeader.Data\", Field, 0, \"\"},\n\t\t{\"FileHeader.Entry\", Field, 1, \"\"},\n\t\t{\"FileHeader.Machine\", Field, 0, \"\"},\n\t\t{\"FileHeader.OSABI\", Field, 0, \"\"},\n\t\t{\"FileHeader.Type\", Field, 0, \"\"},\n\t\t{\"FileHeader.Version\", Field, 0, \"\"},\n\t\t{\"FormatError\", Type, 0, \"\"},\n\t\t{\"Header32\", Type, 0, \"\"},\n\t\t{\"Header32.Ehsize\", Field, 0, \"\"},\n\t\t{\"Header32.Entry\", Field, 0, \"\"},\n\t\t{\"Header32.Flags\", Field, 0, \"\"},\n\t\t{\"Header32.Ident\", Field, 0, \"\"},\n\t\t{\"Header32.Machine\", Field, 0, \"\"},\n\t\t{\"Header32.Phentsize\", Field, 0, \"\"},\n\t\t{\"Header32.Phnum\", Field, 0, \"\"},\n\t\t{\"Header32.Phoff\", Field, 0, \"\"},\n\t\t{\"Header32.Shentsize\", Field, 0, \"\"},\n\t\t{\"Header32.Shnum\", Field, 0, \"\"},\n\t\t{\"Header32.Shoff\", Field, 0, \"\"},\n\t\t{\"Header32.Shstrndx\", Field, 0, \"\"},\n\t\t{\"Header32.Type\", Field, 0, \"\"},\n\t\t{\"Header32.Version\", Field, 0, \"\"},\n\t\t{\"Header64\", Type, 0, \"\"},\n\t\t{\"Header64.Ehsize\", Field, 0, \"\"},\n\t\t{\"Header64.Entry\", Field, 0, \"\"},\n\t\t{\"Header64.Flags\", Field, 0, \"\"},\n\t\t{\"Header64.Ident\", Field, 0, \"\"},\n\t\t{\"Header64.Machine\", Field, 0, \"\"},\n\t\t{\"Header64.Phentsize\", Field, 0, \"\"},\n\t\t{\"Header64.Phnum\", Field, 0, \"\"},\n\t\t{\"Header64.Phoff\", Field, 0, \"\"},\n\t\t{\"Header64.Shentsize\", Field, 0, \"\"},\n\t\t{\"Header64.Shnum\", Field, 0, \"\"},\n\t\t{\"Header64.Shoff\", Field, 0, \"\"},\n\t\t{\"Header64.Shstrndx\", Field, 0, \"\"},\n\t\t{\"Header64.Type\", Field, 0, \"\"},\n\t\t{\"Header64.Version\", Field, 0, \"\"},\n\t\t{\"ImportedSymbol\", Type, 0, \"\"},\n\t\t{\"ImportedSymbol.Library\", Field, 0, \"\"},\n\t\t{\"ImportedSymbol.Name\", Field, 0, \"\"},\n\t\t{\"ImportedSymbol.Version\", Field, 0, \"\"},\n\t\t{\"Machine\", Type, 0, \"\"},\n\t\t{\"NT_FPREGSET\", Const, 0, \"\"},\n\t\t{\"NT_PRPSINFO\", Const, 0, \"\"},\n\t\t{\"NT_PRSTATUS\", Const, 0, \"\"},\n\t\t{\"NType\", Type, 0, \"\"},\n\t\t{\"NewFile\", Func, 0, \"func(r io.ReaderAt) (*File, error)\"},\n\t\t{\"OSABI\", Type, 0, \"\"},\n\t\t{\"Open\", Func, 0, \"func(name string) (*File, error)\"},\n\t\t{\"PF_MASKOS\", Const, 0, \"\"},\n\t\t{\"PF_MASKPROC\", Const, 0, \"\"},\n\t\t{\"PF_R\", Const, 0, \"\"},\n\t\t{\"PF_W\", Const, 0, \"\"},\n\t\t{\"PF_X\", Const, 0, \"\"},\n\t\t{\"PT_AARCH64_ARCHEXT\", Const, 16, \"\"},\n\t\t{\"PT_AARCH64_UNWIND\", Const, 16, \"\"},\n\t\t{\"PT_ARM_ARCHEXT\", Const, 16, \"\"},\n\t\t{\"PT_ARM_EXIDX\", Const, 16, \"\"},\n\t\t{\"PT_DYNAMIC\", Const, 0, \"\"},\n\t\t{\"PT_GNU_EH_FRAME\", Const, 16, \"\"},\n\t\t{\"PT_GNU_MBIND_HI\", Const, 16, \"\"},\n\t\t{\"PT_GNU_MBIND_LO\", Const, 16, \"\"},\n\t\t{\"PT_GNU_PROPERTY\", Const, 16, \"\"},\n\t\t{\"PT_GNU_RELRO\", Const, 16, \"\"},\n\t\t{\"PT_GNU_STACK\", Const, 16, \"\"},\n\t\t{\"PT_HIOS\", Const, 0, \"\"},\n\t\t{\"PT_HIPROC\", Const, 0, \"\"},\n\t\t{\"PT_INTERP\", Const, 0, \"\"},\n\t\t{\"PT_LOAD\", Const, 0, \"\"},\n\t\t{\"PT_LOOS\", Const, 0, \"\"},\n\t\t{\"PT_LOPROC\", Const, 0, \"\"},\n\t\t{\"PT_MIPS_ABIFLAGS\", Const, 16, \"\"},\n\t\t{\"PT_MIPS_OPTIONS\", Const, 16, \"\"},\n\t\t{\"PT_MIPS_REGINFO\", Const, 16, \"\"},\n\t\t{\"PT_MIPS_RTPROC\", Const, 16, \"\"},\n\t\t{\"PT_NOTE\", Const, 0, \"\"},\n\t\t{\"PT_NULL\", Const, 0, \"\"},\n\t\t{\"PT_OPENBSD_BOOTDATA\", Const, 16, \"\"},\n\t\t{\"PT_OPENBSD_NOBTCFI\", Const, 23, \"\"},\n\t\t{\"PT_OPENBSD_RANDOMIZE\", Const, 16, \"\"},\n\t\t{\"PT_OPENBSD_WXNEEDED\", Const, 16, \"\"},\n\t\t{\"PT_PAX_FLAGS\", Const, 16, \"\"},\n\t\t{\"PT_PHDR\", Const, 0, \"\"},\n\t\t{\"PT_RISCV_ATTRIBUTES\", Const, 25, \"\"},\n\t\t{\"PT_S390_PGSTE\", Const, 16, \"\"},\n\t\t{\"PT_SHLIB\", Const, 0, \"\"},\n\t\t{\"PT_SUNWSTACK\", Const, 16, \"\"},\n\t\t{\"PT_SUNW_EH_FRAME\", Const, 16, \"\"},\n\t\t{\"PT_TLS\", Const, 0, \"\"},\n\t\t{\"Prog\", Type, 0, \"\"},\n\t\t{\"Prog.ProgHeader\", Field, 0, \"\"},\n\t\t{\"Prog.ReaderAt\", Field, 0, \"\"},\n\t\t{\"Prog32\", Type, 0, \"\"},\n\t\t{\"Prog32.Align\", Field, 0, \"\"},\n\t\t{\"Prog32.Filesz\", Field, 0, \"\"},\n\t\t{\"Prog32.Flags\", Field, 0, \"\"},\n\t\t{\"Prog32.Memsz\", Field, 0, \"\"},\n\t\t{\"Prog32.Off\", Field, 0, \"\"},\n\t\t{\"Prog32.Paddr\", Field, 0, \"\"},\n\t\t{\"Prog32.Type\", Field, 0, \"\"},\n\t\t{\"Prog32.Vaddr\", Field, 0, \"\"},\n\t\t{\"Prog64\", Type, 0, \"\"},\n\t\t{\"Prog64.Align\", Field, 0, \"\"},\n\t\t{\"Prog64.Filesz\", Field, 0, \"\"},\n\t\t{\"Prog64.Flags\", Field, 0, \"\"},\n\t\t{\"Prog64.Memsz\", Field, 0, \"\"},\n\t\t{\"Prog64.Off\", Field, 0, \"\"},\n\t\t{\"Prog64.Paddr\", Field, 0, \"\"},\n\t\t{\"Prog64.Type\", Field, 0, \"\"},\n\t\t{\"Prog64.Vaddr\", Field, 0, \"\"},\n\t\t{\"ProgFlag\", Type, 0, \"\"},\n\t\t{\"ProgHeader\", Type, 0, \"\"},\n\t\t{\"ProgHeader.Align\", Field, 0, \"\"},\n\t\t{\"ProgHeader.Filesz\", Field, 0, \"\"},\n\t\t{\"ProgHeader.Flags\", Field, 0, \"\"},\n\t\t{\"ProgHeader.Memsz\", Field, 0, \"\"},\n\t\t{\"ProgHeader.Off\", Field, 0, \"\"},\n\t\t{\"ProgHeader.Paddr\", Field, 0, \"\"},\n\t\t{\"ProgHeader.Type\", Field, 0, \"\"},\n\t\t{\"ProgHeader.Vaddr\", Field, 0, \"\"},\n\t\t{\"ProgType\", Type, 0, \"\"},\n\t\t{\"R_386\", Type, 0, \"\"},\n\t\t{\"R_386_16\", Const, 10, \"\"},\n\t\t{\"R_386_32\", Const, 0, \"\"},\n\t\t{\"R_386_32PLT\", Const, 10, \"\"},\n\t\t{\"R_386_8\", Const, 10, \"\"},\n\t\t{\"R_386_COPY\", Const, 0, \"\"},\n\t\t{\"R_386_GLOB_DAT\", Const, 0, \"\"},\n\t\t{\"R_386_GOT32\", Const, 0, \"\"},\n\t\t{\"R_386_GOT32X\", Const, 10, \"\"},\n\t\t{\"R_386_GOTOFF\", Const, 0, \"\"},\n\t\t{\"R_386_GOTPC\", Const, 0, \"\"},\n\t\t{\"R_386_IRELATIVE\", Const, 10, \"\"},\n\t\t{\"R_386_JMP_SLOT\", Const, 0, \"\"},\n\t\t{\"R_386_NONE\", Const, 0, \"\"},\n\t\t{\"R_386_PC16\", Const, 10, \"\"},\n\t\t{\"R_386_PC32\", Const, 0, \"\"},\n\t\t{\"R_386_PC8\", Const, 10, \"\"},\n\t\t{\"R_386_PLT32\", Const, 0, \"\"},\n\t\t{\"R_386_RELATIVE\", Const, 0, \"\"},\n\t\t{\"R_386_SIZE32\", Const, 10, \"\"},\n\t\t{\"R_386_TLS_DESC\", Const, 10, \"\"},\n\t\t{\"R_386_TLS_DESC_CALL\", Const, 10, \"\"},\n\t\t{\"R_386_TLS_DTPMOD32\", Const, 0, \"\"},\n\t\t{\"R_386_TLS_DTPOFF32\", Const, 0, \"\"},\n\t\t{\"R_386_TLS_GD\", Const, 0, \"\"},\n\t\t{\"R_386_TLS_GD_32\", Const, 0, \"\"},\n\t\t{\"R_386_TLS_GD_CALL\", Const, 0, \"\"},\n\t\t{\"R_386_TLS_GD_POP\", Const, 0, \"\"},\n\t\t{\"R_386_TLS_GD_PUSH\", Const, 0, \"\"},\n\t\t{\"R_386_TLS_GOTDESC\", Const, 10, \"\"},\n\t\t{\"R_386_TLS_GOTIE\", Const, 0, \"\"},\n\t\t{\"R_386_TLS_IE\", Const, 0, \"\"},\n\t\t{\"R_386_TLS_IE_32\", Const, 0, \"\"},\n\t\t{\"R_386_TLS_LDM\", Const, 0, \"\"},\n\t\t{\"R_386_TLS_LDM_32\", Const, 0, \"\"},\n\t\t{\"R_386_TLS_LDM_CALL\", Const, 0, \"\"},\n\t\t{\"R_386_TLS_LDM_POP\", Const, 0, \"\"},\n\t\t{\"R_386_TLS_LDM_PUSH\", Const, 0, \"\"},\n\t\t{\"R_386_TLS_LDO_32\", Const, 0, \"\"},\n\t\t{\"R_386_TLS_LE\", Const, 0, \"\"},\n\t\t{\"R_386_TLS_LE_32\", Const, 0, \"\"},\n\t\t{\"R_386_TLS_TPOFF\", Const, 0, \"\"},\n\t\t{\"R_386_TLS_TPOFF32\", Const, 0, \"\"},\n\t\t{\"R_390\", Type, 7, \"\"},\n\t\t{\"R_390_12\", Const, 7, \"\"},\n\t\t{\"R_390_16\", Const, 7, \"\"},\n\t\t{\"R_390_20\", Const, 7, \"\"},\n\t\t{\"R_390_32\", Const, 7, \"\"},\n\t\t{\"R_390_64\", Const, 7, \"\"},\n\t\t{\"R_390_8\", Const, 7, \"\"},\n\t\t{\"R_390_COPY\", Const, 7, \"\"},\n\t\t{\"R_390_GLOB_DAT\", Const, 7, \"\"},\n\t\t{\"R_390_GOT12\", Const, 7, \"\"},\n\t\t{\"R_390_GOT16\", Const, 7, \"\"},\n\t\t{\"R_390_GOT20\", Const, 7, \"\"},\n\t\t{\"R_390_GOT32\", Const, 7, \"\"},\n\t\t{\"R_390_GOT64\", Const, 7, \"\"},\n\t\t{\"R_390_GOTENT\", Const, 7, \"\"},\n\t\t{\"R_390_GOTOFF\", Const, 7, \"\"},\n\t\t{\"R_390_GOTOFF16\", Const, 7, \"\"},\n\t\t{\"R_390_GOTOFF64\", Const, 7, \"\"},\n\t\t{\"R_390_GOTPC\", Const, 7, \"\"},\n\t\t{\"R_390_GOTPCDBL\", Const, 7, \"\"},\n\t\t{\"R_390_GOTPLT12\", Const, 7, \"\"},\n\t\t{\"R_390_GOTPLT16\", Const, 7, \"\"},\n\t\t{\"R_390_GOTPLT20\", Const, 7, \"\"},\n\t\t{\"R_390_GOTPLT32\", Const, 7, \"\"},\n\t\t{\"R_390_GOTPLT64\", Const, 7, \"\"},\n\t\t{\"R_390_GOTPLTENT\", Const, 7, \"\"},\n\t\t{\"R_390_GOTPLTOFF16\", Const, 7, \"\"},\n\t\t{\"R_390_GOTPLTOFF32\", Const, 7, \"\"},\n\t\t{\"R_390_GOTPLTOFF64\", Const, 7, \"\"},\n\t\t{\"R_390_JMP_SLOT\", Const, 7, \"\"},\n\t\t{\"R_390_NONE\", Const, 7, \"\"},\n\t\t{\"R_390_PC16\", Const, 7, \"\"},\n\t\t{\"R_390_PC16DBL\", Const, 7, \"\"},\n\t\t{\"R_390_PC32\", Const, 7, \"\"},\n\t\t{\"R_390_PC32DBL\", Const, 7, \"\"},\n\t\t{\"R_390_PC64\", Const, 7, \"\"},\n\t\t{\"R_390_PLT16DBL\", Const, 7, \"\"},\n\t\t{\"R_390_PLT32\", Const, 7, \"\"},\n\t\t{\"R_390_PLT32DBL\", Const, 7, \"\"},\n\t\t{\"R_390_PLT64\", Const, 7, \"\"},\n\t\t{\"R_390_RELATIVE\", Const, 7, \"\"},\n\t\t{\"R_390_TLS_DTPMOD\", Const, 7, \"\"},\n\t\t{\"R_390_TLS_DTPOFF\", Const, 7, \"\"},\n\t\t{\"R_390_TLS_GD32\", Const, 7, \"\"},\n\t\t{\"R_390_TLS_GD64\", Const, 7, \"\"},\n\t\t{\"R_390_TLS_GDCALL\", Const, 7, \"\"},\n\t\t{\"R_390_TLS_GOTIE12\", Const, 7, \"\"},\n\t\t{\"R_390_TLS_GOTIE20\", Const, 7, \"\"},\n\t\t{\"R_390_TLS_GOTIE32\", Const, 7, \"\"},\n\t\t{\"R_390_TLS_GOTIE64\", Const, 7, \"\"},\n\t\t{\"R_390_TLS_IE32\", Const, 7, \"\"},\n\t\t{\"R_390_TLS_IE64\", Const, 7, \"\"},\n\t\t{\"R_390_TLS_IEENT\", Const, 7, \"\"},\n\t\t{\"R_390_TLS_LDCALL\", Const, 7, \"\"},\n\t\t{\"R_390_TLS_LDM32\", Const, 7, \"\"},\n\t\t{\"R_390_TLS_LDM64\", Const, 7, \"\"},\n\t\t{\"R_390_TLS_LDO32\", Const, 7, \"\"},\n\t\t{\"R_390_TLS_LDO64\", Const, 7, \"\"},\n\t\t{\"R_390_TLS_LE32\", Const, 7, \"\"},\n\t\t{\"R_390_TLS_LE64\", Const, 7, \"\"},\n\t\t{\"R_390_TLS_LOAD\", Const, 7, \"\"},\n\t\t{\"R_390_TLS_TPOFF\", Const, 7, \"\"},\n\t\t{\"R_AARCH64\", Type, 4, \"\"},\n\t\t{\"R_AARCH64_ABS16\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_ABS32\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_ABS64\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_ADD_ABS_LO12_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_ADR_GOT_PAGE\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_ADR_PREL_LO21\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_ADR_PREL_PG_HI21\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_ADR_PREL_PG_HI21_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_CALL26\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_CONDBR19\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_COPY\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_GLOB_DAT\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_GOT_LD_PREL19\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_IRELATIVE\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_JUMP26\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_JUMP_SLOT\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_LD64_GOTOFF_LO15\", Const, 10, \"\"},\n\t\t{\"R_AARCH64_LD64_GOTPAGE_LO15\", Const, 10, \"\"},\n\t\t{\"R_AARCH64_LD64_GOT_LO12_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_LDST128_ABS_LO12_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_LDST16_ABS_LO12_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_LDST32_ABS_LO12_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_LDST64_ABS_LO12_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_LDST8_ABS_LO12_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_LD_PREL_LO19\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_MOVW_SABS_G0\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_MOVW_SABS_G1\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_MOVW_SABS_G2\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_MOVW_UABS_G0\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_MOVW_UABS_G0_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_MOVW_UABS_G1\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_MOVW_UABS_G1_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_MOVW_UABS_G2\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_MOVW_UABS_G2_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_MOVW_UABS_G3\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_NONE\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_NULL\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_ABS16\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_ABS32\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_ADD_ABS_LO12_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_ADR_GOT_PAGE\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_ADR_PREL_LO21\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_ADR_PREL_PG_HI21\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_CALL26\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_CONDBR19\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_COPY\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_GLOB_DAT\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_GOT_LD_PREL19\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_IRELATIVE\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_JUMP26\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_JUMP_SLOT\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_LD32_GOT_LO12_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_LDST128_ABS_LO12_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_LDST16_ABS_LO12_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_LDST32_ABS_LO12_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_LDST64_ABS_LO12_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_LDST8_ABS_LO12_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_LD_PREL_LO19\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_MOVW_SABS_G0\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_MOVW_UABS_G0\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_MOVW_UABS_G0_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_MOVW_UABS_G1\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_PREL16\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_PREL32\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_RELATIVE\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_TLSDESC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_TLSDESC_ADD_LO12_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_TLSDESC_ADR_PAGE21\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_TLSDESC_ADR_PREL21\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_TLSDESC_CALL\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_TLSDESC_LD32_LO12_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_TLSDESC_LD_PREL19\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_TLSGD_ADD_LO12_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_TLSGD_ADR_PAGE21\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_TLSIE_ADR_GOTTPREL_PAGE21\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_TLSIE_LD32_GOTTPREL_LO12_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_TLSIE_LD_GOTTPREL_PREL19\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_TLSLE_ADD_TPREL_HI12\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_TLSLE_ADD_TPREL_LO12\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_TLSLE_ADD_TPREL_LO12_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_TLSLE_MOVW_TPREL_G0\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_TLSLE_MOVW_TPREL_G0_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_TLSLE_MOVW_TPREL_G1\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_TLS_DTPMOD\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_TLS_DTPREL\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_TLS_TPREL\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_P32_TSTBR14\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_PREL16\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_PREL32\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_PREL64\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_RELATIVE\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_TLSDESC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_TLSDESC_ADD\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_TLSDESC_ADD_LO12_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_TLSDESC_ADR_PAGE21\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_TLSDESC_ADR_PREL21\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_TLSDESC_CALL\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_TLSDESC_LD64_LO12_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_TLSDESC_LDR\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_TLSDESC_LD_PREL19\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_TLSDESC_OFF_G0_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_TLSDESC_OFF_G1\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_TLSGD_ADD_LO12_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_TLSGD_ADR_PAGE21\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_TLSGD_ADR_PREL21\", Const, 10, \"\"},\n\t\t{\"R_AARCH64_TLSGD_MOVW_G0_NC\", Const, 10, \"\"},\n\t\t{\"R_AARCH64_TLSGD_MOVW_G1\", Const, 10, \"\"},\n\t\t{\"R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_TLSIE_LD_GOTTPREL_PREL19\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_TLSIE_MOVW_GOTTPREL_G1\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_TLSLD_ADR_PAGE21\", Const, 10, \"\"},\n\t\t{\"R_AARCH64_TLSLD_ADR_PREL21\", Const, 10, \"\"},\n\t\t{\"R_AARCH64_TLSLD_LDST128_DTPREL_LO12\", Const, 10, \"\"},\n\t\t{\"R_AARCH64_TLSLD_LDST128_DTPREL_LO12_NC\", Const, 10, \"\"},\n\t\t{\"R_AARCH64_TLSLE_ADD_TPREL_HI12\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_TLSLE_ADD_TPREL_LO12\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_TLSLE_ADD_TPREL_LO12_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_TLSLE_LDST128_TPREL_LO12\", Const, 10, \"\"},\n\t\t{\"R_AARCH64_TLSLE_LDST128_TPREL_LO12_NC\", Const, 10, \"\"},\n\t\t{\"R_AARCH64_TLSLE_MOVW_TPREL_G0\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_TLSLE_MOVW_TPREL_G0_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_TLSLE_MOVW_TPREL_G1\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_TLSLE_MOVW_TPREL_G1_NC\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_TLSLE_MOVW_TPREL_G2\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_TLS_DTPMOD64\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_TLS_DTPREL64\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_TLS_TPREL64\", Const, 4, \"\"},\n\t\t{\"R_AARCH64_TSTBR14\", Const, 4, \"\"},\n\t\t{\"R_ALPHA\", Type, 0, \"\"},\n\t\t{\"R_ALPHA_BRADDR\", Const, 0, \"\"},\n\t\t{\"R_ALPHA_COPY\", Const, 0, \"\"},\n\t\t{\"R_ALPHA_GLOB_DAT\", Const, 0, \"\"},\n\t\t{\"R_ALPHA_GPDISP\", Const, 0, \"\"},\n\t\t{\"R_ALPHA_GPREL32\", Const, 0, \"\"},\n\t\t{\"R_ALPHA_GPRELHIGH\", Const, 0, \"\"},\n\t\t{\"R_ALPHA_GPRELLOW\", Const, 0, \"\"},\n\t\t{\"R_ALPHA_GPVALUE\", Const, 0, \"\"},\n\t\t{\"R_ALPHA_HINT\", Const, 0, \"\"},\n\t\t{\"R_ALPHA_IMMED_BR_HI32\", Const, 0, \"\"},\n\t\t{\"R_ALPHA_IMMED_GP_16\", Const, 0, \"\"},\n\t\t{\"R_ALPHA_IMMED_GP_HI32\", Const, 0, \"\"},\n\t\t{\"R_ALPHA_IMMED_LO32\", Const, 0, \"\"},\n\t\t{\"R_ALPHA_IMMED_SCN_HI32\", Const, 0, \"\"},\n\t\t{\"R_ALPHA_JMP_SLOT\", Const, 0, \"\"},\n\t\t{\"R_ALPHA_LITERAL\", Const, 0, \"\"},\n\t\t{\"R_ALPHA_LITUSE\", Const, 0, \"\"},\n\t\t{\"R_ALPHA_NONE\", Const, 0, \"\"},\n\t\t{\"R_ALPHA_OP_PRSHIFT\", Const, 0, \"\"},\n\t\t{\"R_ALPHA_OP_PSUB\", Const, 0, \"\"},\n\t\t{\"R_ALPHA_OP_PUSH\", Const, 0, \"\"},\n\t\t{\"R_ALPHA_OP_STORE\", Const, 0, \"\"},\n\t\t{\"R_ALPHA_REFLONG\", Const, 0, \"\"},\n\t\t{\"R_ALPHA_REFQUAD\", Const, 0, \"\"},\n\t\t{\"R_ALPHA_RELATIVE\", Const, 0, \"\"},\n\t\t{\"R_ALPHA_SREL16\", Const, 0, \"\"},\n\t\t{\"R_ALPHA_SREL32\", Const, 0, \"\"},\n\t\t{\"R_ALPHA_SREL64\", Const, 0, \"\"},\n\t\t{\"R_ARM\", Type, 0, \"\"},\n\t\t{\"R_ARM_ABS12\", Const, 0, \"\"},\n\t\t{\"R_ARM_ABS16\", Const, 0, \"\"},\n\t\t{\"R_ARM_ABS32\", Const, 0, \"\"},\n\t\t{\"R_ARM_ABS32_NOI\", Const, 10, \"\"},\n\t\t{\"R_ARM_ABS8\", Const, 0, \"\"},\n\t\t{\"R_ARM_ALU_PCREL_15_8\", Const, 10, \"\"},\n\t\t{\"R_ARM_ALU_PCREL_23_15\", Const, 10, \"\"},\n\t\t{\"R_ARM_ALU_PCREL_7_0\", Const, 10, \"\"},\n\t\t{\"R_ARM_ALU_PC_G0\", Const, 10, \"\"},\n\t\t{\"R_ARM_ALU_PC_G0_NC\", Const, 10, \"\"},\n\t\t{\"R_ARM_ALU_PC_G1\", Const, 10, \"\"},\n\t\t{\"R_ARM_ALU_PC_G1_NC\", Const, 10, \"\"},\n\t\t{\"R_ARM_ALU_PC_G2\", Const, 10, \"\"},\n\t\t{\"R_ARM_ALU_SBREL_19_12_NC\", Const, 10, \"\"},\n\t\t{\"R_ARM_ALU_SBREL_27_20_CK\", Const, 10, \"\"},\n\t\t{\"R_ARM_ALU_SB_G0\", Const, 10, \"\"},\n\t\t{\"R_ARM_ALU_SB_G0_NC\", Const, 10, \"\"},\n\t\t{\"R_ARM_ALU_SB_G1\", Const, 10, \"\"},\n\t\t{\"R_ARM_ALU_SB_G1_NC\", Const, 10, \"\"},\n\t\t{\"R_ARM_ALU_SB_G2\", Const, 10, \"\"},\n\t\t{\"R_ARM_AMP_VCALL9\", Const, 0, \"\"},\n\t\t{\"R_ARM_BASE_ABS\", Const, 10, \"\"},\n\t\t{\"R_ARM_CALL\", Const, 10, \"\"},\n\t\t{\"R_ARM_COPY\", Const, 0, \"\"},\n\t\t{\"R_ARM_GLOB_DAT\", Const, 0, \"\"},\n\t\t{\"R_ARM_GNU_VTENTRY\", Const, 0, \"\"},\n\t\t{\"R_ARM_GNU_VTINHERIT\", Const, 0, \"\"},\n\t\t{\"R_ARM_GOT32\", Const, 0, \"\"},\n\t\t{\"R_ARM_GOTOFF\", Const, 0, \"\"},\n\t\t{\"R_ARM_GOTOFF12\", Const, 10, \"\"},\n\t\t{\"R_ARM_GOTPC\", Const, 0, \"\"},\n\t\t{\"R_ARM_GOTRELAX\", Const, 10, \"\"},\n\t\t{\"R_ARM_GOT_ABS\", Const, 10, \"\"},\n\t\t{\"R_ARM_GOT_BREL12\", Const, 10, \"\"},\n\t\t{\"R_ARM_GOT_PREL\", Const, 10, \"\"},\n\t\t{\"R_ARM_IRELATIVE\", Const, 10, \"\"},\n\t\t{\"R_ARM_JUMP24\", Const, 10, \"\"},\n\t\t{\"R_ARM_JUMP_SLOT\", Const, 0, \"\"},\n\t\t{\"R_ARM_LDC_PC_G0\", Const, 10, \"\"},\n\t\t{\"R_ARM_LDC_PC_G1\", Const, 10, \"\"},\n\t\t{\"R_ARM_LDC_PC_G2\", Const, 10, \"\"},\n\t\t{\"R_ARM_LDC_SB_G0\", Const, 10, \"\"},\n\t\t{\"R_ARM_LDC_SB_G1\", Const, 10, \"\"},\n\t\t{\"R_ARM_LDC_SB_G2\", Const, 10, \"\"},\n\t\t{\"R_ARM_LDRS_PC_G0\", Const, 10, \"\"},\n\t\t{\"R_ARM_LDRS_PC_G1\", Const, 10, \"\"},\n\t\t{\"R_ARM_LDRS_PC_G2\", Const, 10, \"\"},\n\t\t{\"R_ARM_LDRS_SB_G0\", Const, 10, \"\"},\n\t\t{\"R_ARM_LDRS_SB_G1\", Const, 10, \"\"},\n\t\t{\"R_ARM_LDRS_SB_G2\", Const, 10, \"\"},\n\t\t{\"R_ARM_LDR_PC_G1\", Const, 10, \"\"},\n\t\t{\"R_ARM_LDR_PC_G2\", Const, 10, \"\"},\n\t\t{\"R_ARM_LDR_SBREL_11_10_NC\", Const, 10, \"\"},\n\t\t{\"R_ARM_LDR_SB_G0\", Const, 10, \"\"},\n\t\t{\"R_ARM_LDR_SB_G1\", Const, 10, \"\"},\n\t\t{\"R_ARM_LDR_SB_G2\", Const, 10, \"\"},\n\t\t{\"R_ARM_ME_TOO\", Const, 10, \"\"},\n\t\t{\"R_ARM_MOVT_ABS\", Const, 10, \"\"},\n\t\t{\"R_ARM_MOVT_BREL\", Const, 10, \"\"},\n\t\t{\"R_ARM_MOVT_PREL\", Const, 10, \"\"},\n\t\t{\"R_ARM_MOVW_ABS_NC\", Const, 10, \"\"},\n\t\t{\"R_ARM_MOVW_BREL\", Const, 10, \"\"},\n\t\t{\"R_ARM_MOVW_BREL_NC\", Const, 10, \"\"},\n\t\t{\"R_ARM_MOVW_PREL_NC\", Const, 10, \"\"},\n\t\t{\"R_ARM_NONE\", Const, 0, \"\"},\n\t\t{\"R_ARM_PC13\", Const, 0, \"\"},\n\t\t{\"R_ARM_PC24\", Const, 0, \"\"},\n\t\t{\"R_ARM_PLT32\", Const, 0, \"\"},\n\t\t{\"R_ARM_PLT32_ABS\", Const, 10, \"\"},\n\t\t{\"R_ARM_PREL31\", Const, 10, \"\"},\n\t\t{\"R_ARM_PRIVATE_0\", Const, 10, \"\"},\n\t\t{\"R_ARM_PRIVATE_1\", Const, 10, \"\"},\n\t\t{\"R_ARM_PRIVATE_10\", Const, 10, \"\"},\n\t\t{\"R_ARM_PRIVATE_11\", Const, 10, \"\"},\n\t\t{\"R_ARM_PRIVATE_12\", Const, 10, \"\"},\n\t\t{\"R_ARM_PRIVATE_13\", Const, 10, \"\"},\n\t\t{\"R_ARM_PRIVATE_14\", Const, 10, \"\"},\n\t\t{\"R_ARM_PRIVATE_15\", Const, 10, \"\"},\n\t\t{\"R_ARM_PRIVATE_2\", Const, 10, \"\"},\n\t\t{\"R_ARM_PRIVATE_3\", Const, 10, \"\"},\n\t\t{\"R_ARM_PRIVATE_4\", Const, 10, \"\"},\n\t\t{\"R_ARM_PRIVATE_5\", Const, 10, \"\"},\n\t\t{\"R_ARM_PRIVATE_6\", Const, 10, \"\"},\n\t\t{\"R_ARM_PRIVATE_7\", Const, 10, \"\"},\n\t\t{\"R_ARM_PRIVATE_8\", Const, 10, \"\"},\n\t\t{\"R_ARM_PRIVATE_9\", Const, 10, \"\"},\n\t\t{\"R_ARM_RABS32\", Const, 0, \"\"},\n\t\t{\"R_ARM_RBASE\", Const, 0, \"\"},\n\t\t{\"R_ARM_REL32\", Const, 0, \"\"},\n\t\t{\"R_ARM_REL32_NOI\", Const, 10, \"\"},\n\t\t{\"R_ARM_RELATIVE\", Const, 0, \"\"},\n\t\t{\"R_ARM_RPC24\", Const, 0, \"\"},\n\t\t{\"R_ARM_RREL32\", Const, 0, \"\"},\n\t\t{\"R_ARM_RSBREL32\", Const, 0, \"\"},\n\t\t{\"R_ARM_RXPC25\", Const, 10, \"\"},\n\t\t{\"R_ARM_SBREL31\", Const, 10, \"\"},\n\t\t{\"R_ARM_SBREL32\", Const, 0, \"\"},\n\t\t{\"R_ARM_SWI24\", Const, 0, \"\"},\n\t\t{\"R_ARM_TARGET1\", Const, 10, \"\"},\n\t\t{\"R_ARM_TARGET2\", Const, 10, \"\"},\n\t\t{\"R_ARM_THM_ABS5\", Const, 0, \"\"},\n\t\t{\"R_ARM_THM_ALU_ABS_G0_NC\", Const, 10, \"\"},\n\t\t{\"R_ARM_THM_ALU_ABS_G1_NC\", Const, 10, \"\"},\n\t\t{\"R_ARM_THM_ALU_ABS_G2_NC\", Const, 10, \"\"},\n\t\t{\"R_ARM_THM_ALU_ABS_G3\", Const, 10, \"\"},\n\t\t{\"R_ARM_THM_ALU_PREL_11_0\", Const, 10, \"\"},\n\t\t{\"R_ARM_THM_GOT_BREL12\", Const, 10, \"\"},\n\t\t{\"R_ARM_THM_JUMP11\", Const, 10, \"\"},\n\t\t{\"R_ARM_THM_JUMP19\", Const, 10, \"\"},\n\t\t{\"R_ARM_THM_JUMP24\", Const, 10, \"\"},\n\t\t{\"R_ARM_THM_JUMP6\", Const, 10, \"\"},\n\t\t{\"R_ARM_THM_JUMP8\", Const, 10, \"\"},\n\t\t{\"R_ARM_THM_MOVT_ABS\", Const, 10, \"\"},\n\t\t{\"R_ARM_THM_MOVT_BREL\", Const, 10, \"\"},\n\t\t{\"R_ARM_THM_MOVT_PREL\", Const, 10, \"\"},\n\t\t{\"R_ARM_THM_MOVW_ABS_NC\", Const, 10, \"\"},\n\t\t{\"R_ARM_THM_MOVW_BREL\", Const, 10, \"\"},\n\t\t{\"R_ARM_THM_MOVW_BREL_NC\", Const, 10, \"\"},\n\t\t{\"R_ARM_THM_MOVW_PREL_NC\", Const, 10, \"\"},\n\t\t{\"R_ARM_THM_PC12\", Const, 10, \"\"},\n\t\t{\"R_ARM_THM_PC22\", Const, 0, \"\"},\n\t\t{\"R_ARM_THM_PC8\", Const, 0, \"\"},\n\t\t{\"R_ARM_THM_RPC22\", Const, 0, \"\"},\n\t\t{\"R_ARM_THM_SWI8\", Const, 0, \"\"},\n\t\t{\"R_ARM_THM_TLS_CALL\", Const, 10, \"\"},\n\t\t{\"R_ARM_THM_TLS_DESCSEQ16\", Const, 10, \"\"},\n\t\t{\"R_ARM_THM_TLS_DESCSEQ32\", Const, 10, \"\"},\n\t\t{\"R_ARM_THM_XPC22\", Const, 0, \"\"},\n\t\t{\"R_ARM_TLS_CALL\", Const, 10, \"\"},\n\t\t{\"R_ARM_TLS_DESCSEQ\", Const, 10, \"\"},\n\t\t{\"R_ARM_TLS_DTPMOD32\", Const, 10, \"\"},\n\t\t{\"R_ARM_TLS_DTPOFF32\", Const, 10, \"\"},\n\t\t{\"R_ARM_TLS_GD32\", Const, 10, \"\"},\n\t\t{\"R_ARM_TLS_GOTDESC\", Const, 10, \"\"},\n\t\t{\"R_ARM_TLS_IE12GP\", Const, 10, \"\"},\n\t\t{\"R_ARM_TLS_IE32\", Const, 10, \"\"},\n\t\t{\"R_ARM_TLS_LDM32\", Const, 10, \"\"},\n\t\t{\"R_ARM_TLS_LDO12\", Const, 10, \"\"},\n\t\t{\"R_ARM_TLS_LDO32\", Const, 10, \"\"},\n\t\t{\"R_ARM_TLS_LE12\", Const, 10, \"\"},\n\t\t{\"R_ARM_TLS_LE32\", Const, 10, \"\"},\n\t\t{\"R_ARM_TLS_TPOFF32\", Const, 10, \"\"},\n\t\t{\"R_ARM_V4BX\", Const, 10, \"\"},\n\t\t{\"R_ARM_XPC25\", Const, 0, \"\"},\n\t\t{\"R_INFO\", Func, 0, \"func(sym uint32, typ uint32) uint64\"},\n\t\t{\"R_INFO32\", Func, 0, \"func(sym uint32, typ uint32) uint32\"},\n\t\t{\"R_LARCH\", Type, 19, \"\"},\n\t\t{\"R_LARCH_32\", Const, 19, \"\"},\n\t\t{\"R_LARCH_32_PCREL\", Const, 20, \"\"},\n\t\t{\"R_LARCH_64\", Const, 19, \"\"},\n\t\t{\"R_LARCH_64_PCREL\", Const, 22, \"\"},\n\t\t{\"R_LARCH_ABS64_HI12\", Const, 20, \"\"},\n\t\t{\"R_LARCH_ABS64_LO20\", Const, 20, \"\"},\n\t\t{\"R_LARCH_ABS_HI20\", Const, 20, \"\"},\n\t\t{\"R_LARCH_ABS_LO12\", Const, 20, \"\"},\n\t\t{\"R_LARCH_ADD16\", Const, 19, \"\"},\n\t\t{\"R_LARCH_ADD24\", Const, 19, \"\"},\n\t\t{\"R_LARCH_ADD32\", Const, 19, \"\"},\n\t\t{\"R_LARCH_ADD6\", Const, 22, \"\"},\n\t\t{\"R_LARCH_ADD64\", Const, 19, \"\"},\n\t\t{\"R_LARCH_ADD8\", Const, 19, \"\"},\n\t\t{\"R_LARCH_ADD_ULEB128\", Const, 22, \"\"},\n\t\t{\"R_LARCH_ALIGN\", Const, 22, \"\"},\n\t\t{\"R_LARCH_B16\", Const, 20, \"\"},\n\t\t{\"R_LARCH_B21\", Const, 20, \"\"},\n\t\t{\"R_LARCH_B26\", Const, 20, \"\"},\n\t\t{\"R_LARCH_CALL36\", Const, 26, \"\"},\n\t\t{\"R_LARCH_CFA\", Const, 22, \"\"},\n\t\t{\"R_LARCH_COPY\", Const, 19, \"\"},\n\t\t{\"R_LARCH_DELETE\", Const, 22, \"\"},\n\t\t{\"R_LARCH_GNU_VTENTRY\", Const, 20, \"\"},\n\t\t{\"R_LARCH_GNU_VTINHERIT\", Const, 20, \"\"},\n\t\t{\"R_LARCH_GOT64_HI12\", Const, 20, \"\"},\n\t\t{\"R_LARCH_GOT64_LO20\", Const, 20, \"\"},\n\t\t{\"R_LARCH_GOT64_PC_HI12\", Const, 20, \"\"},\n\t\t{\"R_LARCH_GOT64_PC_LO20\", Const, 20, \"\"},\n\t\t{\"R_LARCH_GOT_HI20\", Const, 20, \"\"},\n\t\t{\"R_LARCH_GOT_LO12\", Const, 20, \"\"},\n\t\t{\"R_LARCH_GOT_PC_HI20\", Const, 20, \"\"},\n\t\t{\"R_LARCH_GOT_PC_LO12\", Const, 20, \"\"},\n\t\t{\"R_LARCH_IRELATIVE\", Const, 19, \"\"},\n\t\t{\"R_LARCH_JUMP_SLOT\", Const, 19, \"\"},\n\t\t{\"R_LARCH_MARK_LA\", Const, 19, \"\"},\n\t\t{\"R_LARCH_MARK_PCREL\", Const, 19, \"\"},\n\t\t{\"R_LARCH_NONE\", Const, 19, \"\"},\n\t\t{\"R_LARCH_PCALA64_HI12\", Const, 20, \"\"},\n\t\t{\"R_LARCH_PCALA64_LO20\", Const, 20, \"\"},\n\t\t{\"R_LARCH_PCALA_HI20\", Const, 20, \"\"},\n\t\t{\"R_LARCH_PCALA_LO12\", Const, 20, \"\"},\n\t\t{\"R_LARCH_PCREL20_S2\", Const, 22, \"\"},\n\t\t{\"R_LARCH_RELATIVE\", Const, 19, \"\"},\n\t\t{\"R_LARCH_RELAX\", Const, 20, \"\"},\n\t\t{\"R_LARCH_SOP_ADD\", Const, 19, \"\"},\n\t\t{\"R_LARCH_SOP_AND\", Const, 19, \"\"},\n\t\t{\"R_LARCH_SOP_ASSERT\", Const, 19, \"\"},\n\t\t{\"R_LARCH_SOP_IF_ELSE\", Const, 19, \"\"},\n\t\t{\"R_LARCH_SOP_NOT\", Const, 19, \"\"},\n\t\t{\"R_LARCH_SOP_POP_32_S_0_10_10_16_S2\", Const, 19, \"\"},\n\t\t{\"R_LARCH_SOP_POP_32_S_0_5_10_16_S2\", Const, 19, \"\"},\n\t\t{\"R_LARCH_SOP_POP_32_S_10_12\", Const, 19, \"\"},\n\t\t{\"R_LARCH_SOP_POP_32_S_10_16\", Const, 19, \"\"},\n\t\t{\"R_LARCH_SOP_POP_32_S_10_16_S2\", Const, 19, \"\"},\n\t\t{\"R_LARCH_SOP_POP_32_S_10_5\", Const, 19, \"\"},\n\t\t{\"R_LARCH_SOP_POP_32_S_5_20\", Const, 19, \"\"},\n\t\t{\"R_LARCH_SOP_POP_32_U\", Const, 19, \"\"},\n\t\t{\"R_LARCH_SOP_POP_32_U_10_12\", Const, 19, \"\"},\n\t\t{\"R_LARCH_SOP_PUSH_ABSOLUTE\", Const, 19, \"\"},\n\t\t{\"R_LARCH_SOP_PUSH_DUP\", Const, 19, \"\"},\n\t\t{\"R_LARCH_SOP_PUSH_GPREL\", Const, 19, \"\"},\n\t\t{\"R_LARCH_SOP_PUSH_PCREL\", Const, 19, \"\"},\n\t\t{\"R_LARCH_SOP_PUSH_PLT_PCREL\", Const, 19, \"\"},\n\t\t{\"R_LARCH_SOP_PUSH_TLS_GD\", Const, 19, \"\"},\n\t\t{\"R_LARCH_SOP_PUSH_TLS_GOT\", Const, 19, \"\"},\n\t\t{\"R_LARCH_SOP_PUSH_TLS_TPREL\", Const, 19, \"\"},\n\t\t{\"R_LARCH_SOP_SL\", Const, 19, \"\"},\n\t\t{\"R_LARCH_SOP_SR\", Const, 19, \"\"},\n\t\t{\"R_LARCH_SOP_SUB\", Const, 19, \"\"},\n\t\t{\"R_LARCH_SUB16\", Const, 19, \"\"},\n\t\t{\"R_LARCH_SUB24\", Const, 19, \"\"},\n\t\t{\"R_LARCH_SUB32\", Const, 19, \"\"},\n\t\t{\"R_LARCH_SUB6\", Const, 22, \"\"},\n\t\t{\"R_LARCH_SUB64\", Const, 19, \"\"},\n\t\t{\"R_LARCH_SUB8\", Const, 19, \"\"},\n\t\t{\"R_LARCH_SUB_ULEB128\", Const, 22, \"\"},\n\t\t{\"R_LARCH_TLS_DESC32\", Const, 26, \"\"},\n\t\t{\"R_LARCH_TLS_DESC64\", Const, 26, \"\"},\n\t\t{\"R_LARCH_TLS_DESC64_HI12\", Const, 26, \"\"},\n\t\t{\"R_LARCH_TLS_DESC64_LO20\", Const, 26, \"\"},\n\t\t{\"R_LARCH_TLS_DESC64_PC_HI12\", Const, 26, \"\"},\n\t\t{\"R_LARCH_TLS_DESC64_PC_LO20\", Const, 26, \"\"},\n\t\t{\"R_LARCH_TLS_DESC_CALL\", Const, 26, \"\"},\n\t\t{\"R_LARCH_TLS_DESC_HI20\", Const, 26, \"\"},\n\t\t{\"R_LARCH_TLS_DESC_LD\", Const, 26, \"\"},\n\t\t{\"R_LARCH_TLS_DESC_LO12\", Const, 26, \"\"},\n\t\t{\"R_LARCH_TLS_DESC_PCREL20_S2\", Const, 26, \"\"},\n\t\t{\"R_LARCH_TLS_DESC_PC_HI20\", Const, 26, \"\"},\n\t\t{\"R_LARCH_TLS_DESC_PC_LO12\", Const, 26, \"\"},\n\t\t{\"R_LARCH_TLS_DTPMOD32\", Const, 19, \"\"},\n\t\t{\"R_LARCH_TLS_DTPMOD64\", Const, 19, \"\"},\n\t\t{\"R_LARCH_TLS_DTPREL32\", Const, 19, \"\"},\n\t\t{\"R_LARCH_TLS_DTPREL64\", Const, 19, \"\"},\n\t\t{\"R_LARCH_TLS_GD_HI20\", Const, 20, \"\"},\n\t\t{\"R_LARCH_TLS_GD_PCREL20_S2\", Const, 26, \"\"},\n\t\t{\"R_LARCH_TLS_GD_PC_HI20\", Const, 20, \"\"},\n\t\t{\"R_LARCH_TLS_IE64_HI12\", Const, 20, \"\"},\n\t\t{\"R_LARCH_TLS_IE64_LO20\", Const, 20, \"\"},\n\t\t{\"R_LARCH_TLS_IE64_PC_HI12\", Const, 20, \"\"},\n\t\t{\"R_LARCH_TLS_IE64_PC_LO20\", Const, 20, \"\"},\n\t\t{\"R_LARCH_TLS_IE_HI20\", Const, 20, \"\"},\n\t\t{\"R_LARCH_TLS_IE_LO12\", Const, 20, \"\"},\n\t\t{\"R_LARCH_TLS_IE_PC_HI20\", Const, 20, \"\"},\n\t\t{\"R_LARCH_TLS_IE_PC_LO12\", Const, 20, \"\"},\n\t\t{\"R_LARCH_TLS_LD_HI20\", Const, 20, \"\"},\n\t\t{\"R_LARCH_TLS_LD_PCREL20_S2\", Const, 26, \"\"},\n\t\t{\"R_LARCH_TLS_LD_PC_HI20\", Const, 20, \"\"},\n\t\t{\"R_LARCH_TLS_LE64_HI12\", Const, 20, \"\"},\n\t\t{\"R_LARCH_TLS_LE64_LO20\", Const, 20, \"\"},\n\t\t{\"R_LARCH_TLS_LE_ADD_R\", Const, 26, \"\"},\n\t\t{\"R_LARCH_TLS_LE_HI20\", Const, 20, \"\"},\n\t\t{\"R_LARCH_TLS_LE_HI20_R\", Const, 26, \"\"},\n\t\t{\"R_LARCH_TLS_LE_LO12\", Const, 20, \"\"},\n\t\t{\"R_LARCH_TLS_LE_LO12_R\", Const, 26, \"\"},\n\t\t{\"R_LARCH_TLS_TPREL32\", Const, 19, \"\"},\n\t\t{\"R_LARCH_TLS_TPREL64\", Const, 19, \"\"},\n\t\t{\"R_MIPS\", Type, 6, \"\"},\n\t\t{\"R_MIPS_16\", Const, 6, \"\"},\n\t\t{\"R_MIPS_26\", Const, 6, \"\"},\n\t\t{\"R_MIPS_32\", Const, 6, \"\"},\n\t\t{\"R_MIPS_64\", Const, 6, \"\"},\n\t\t{\"R_MIPS_ADD_IMMEDIATE\", Const, 6, \"\"},\n\t\t{\"R_MIPS_CALL16\", Const, 6, \"\"},\n\t\t{\"R_MIPS_CALL_HI16\", Const, 6, \"\"},\n\t\t{\"R_MIPS_CALL_LO16\", Const, 6, \"\"},\n\t\t{\"R_MIPS_DELETE\", Const, 6, \"\"},\n\t\t{\"R_MIPS_GOT16\", Const, 6, \"\"},\n\t\t{\"R_MIPS_GOT_DISP\", Const, 6, \"\"},\n\t\t{\"R_MIPS_GOT_HI16\", Const, 6, \"\"},\n\t\t{\"R_MIPS_GOT_LO16\", Const, 6, \"\"},\n\t\t{\"R_MIPS_GOT_OFST\", Const, 6, \"\"},\n\t\t{\"R_MIPS_GOT_PAGE\", Const, 6, \"\"},\n\t\t{\"R_MIPS_GPREL16\", Const, 6, \"\"},\n\t\t{\"R_MIPS_GPREL32\", Const, 6, \"\"},\n\t\t{\"R_MIPS_HI16\", Const, 6, \"\"},\n\t\t{\"R_MIPS_HIGHER\", Const, 6, \"\"},\n\t\t{\"R_MIPS_HIGHEST\", Const, 6, \"\"},\n\t\t{\"R_MIPS_INSERT_A\", Const, 6, \"\"},\n\t\t{\"R_MIPS_INSERT_B\", Const, 6, \"\"},\n\t\t{\"R_MIPS_JALR\", Const, 6, \"\"},\n\t\t{\"R_MIPS_LITERAL\", Const, 6, \"\"},\n\t\t{\"R_MIPS_LO16\", Const, 6, \"\"},\n\t\t{\"R_MIPS_NONE\", Const, 6, \"\"},\n\t\t{\"R_MIPS_PC16\", Const, 6, \"\"},\n\t\t{\"R_MIPS_PC32\", Const, 22, \"\"},\n\t\t{\"R_MIPS_PJUMP\", Const, 6, \"\"},\n\t\t{\"R_MIPS_REL16\", Const, 6, \"\"},\n\t\t{\"R_MIPS_REL32\", Const, 6, \"\"},\n\t\t{\"R_MIPS_RELGOT\", Const, 6, \"\"},\n\t\t{\"R_MIPS_SCN_DISP\", Const, 6, \"\"},\n\t\t{\"R_MIPS_SHIFT5\", Const, 6, \"\"},\n\t\t{\"R_MIPS_SHIFT6\", Const, 6, \"\"},\n\t\t{\"R_MIPS_SUB\", Const, 6, \"\"},\n\t\t{\"R_MIPS_TLS_DTPMOD32\", Const, 6, \"\"},\n\t\t{\"R_MIPS_TLS_DTPMOD64\", Const, 6, \"\"},\n\t\t{\"R_MIPS_TLS_DTPREL32\", Const, 6, \"\"},\n\t\t{\"R_MIPS_TLS_DTPREL64\", Const, 6, \"\"},\n\t\t{\"R_MIPS_TLS_DTPREL_HI16\", Const, 6, \"\"},\n\t\t{\"R_MIPS_TLS_DTPREL_LO16\", Const, 6, \"\"},\n\t\t{\"R_MIPS_TLS_GD\", Const, 6, \"\"},\n\t\t{\"R_MIPS_TLS_GOTTPREL\", Const, 6, \"\"},\n\t\t{\"R_MIPS_TLS_LDM\", Const, 6, \"\"},\n\t\t{\"R_MIPS_TLS_TPREL32\", Const, 6, \"\"},\n\t\t{\"R_MIPS_TLS_TPREL64\", Const, 6, \"\"},\n\t\t{\"R_MIPS_TLS_TPREL_HI16\", Const, 6, \"\"},\n\t\t{\"R_MIPS_TLS_TPREL_LO16\", Const, 6, \"\"},\n\t\t{\"R_PPC\", Type, 0, \"\"},\n\t\t{\"R_PPC64\", Type, 5, \"\"},\n\t\t{\"R_PPC64_ADDR14\", Const, 5, \"\"},\n\t\t{\"R_PPC64_ADDR14_BRNTAKEN\", Const, 5, \"\"},\n\t\t{\"R_PPC64_ADDR14_BRTAKEN\", Const, 5, \"\"},\n\t\t{\"R_PPC64_ADDR16\", Const, 5, \"\"},\n\t\t{\"R_PPC64_ADDR16_DS\", Const, 5, \"\"},\n\t\t{\"R_PPC64_ADDR16_HA\", Const, 5, \"\"},\n\t\t{\"R_PPC64_ADDR16_HI\", Const, 5, \"\"},\n\t\t{\"R_PPC64_ADDR16_HIGH\", Const, 10, \"\"},\n\t\t{\"R_PPC64_ADDR16_HIGHA\", Const, 10, \"\"},\n\t\t{\"R_PPC64_ADDR16_HIGHER\", Const, 5, \"\"},\n\t\t{\"R_PPC64_ADDR16_HIGHER34\", Const, 20, \"\"},\n\t\t{\"R_PPC64_ADDR16_HIGHERA\", Const, 5, \"\"},\n\t\t{\"R_PPC64_ADDR16_HIGHERA34\", Const, 20, \"\"},\n\t\t{\"R_PPC64_ADDR16_HIGHEST\", Const, 5, \"\"},\n\t\t{\"R_PPC64_ADDR16_HIGHEST34\", Const, 20, \"\"},\n\t\t{\"R_PPC64_ADDR16_HIGHESTA\", Const, 5, \"\"},\n\t\t{\"R_PPC64_ADDR16_HIGHESTA34\", Const, 20, \"\"},\n\t\t{\"R_PPC64_ADDR16_LO\", Const, 5, \"\"},\n\t\t{\"R_PPC64_ADDR16_LO_DS\", Const, 5, \"\"},\n\t\t{\"R_PPC64_ADDR24\", Const, 5, \"\"},\n\t\t{\"R_PPC64_ADDR32\", Const, 5, \"\"},\n\t\t{\"R_PPC64_ADDR64\", Const, 5, \"\"},\n\t\t{\"R_PPC64_ADDR64_LOCAL\", Const, 10, \"\"},\n\t\t{\"R_PPC64_COPY\", Const, 20, \"\"},\n\t\t{\"R_PPC64_D28\", Const, 20, \"\"},\n\t\t{\"R_PPC64_D34\", Const, 20, \"\"},\n\t\t{\"R_PPC64_D34_HA30\", Const, 20, \"\"},\n\t\t{\"R_PPC64_D34_HI30\", Const, 20, \"\"},\n\t\t{\"R_PPC64_D34_LO\", Const, 20, \"\"},\n\t\t{\"R_PPC64_DTPMOD64\", Const, 5, \"\"},\n\t\t{\"R_PPC64_DTPREL16\", Const, 5, \"\"},\n\t\t{\"R_PPC64_DTPREL16_DS\", Const, 5, \"\"},\n\t\t{\"R_PPC64_DTPREL16_HA\", Const, 5, \"\"},\n\t\t{\"R_PPC64_DTPREL16_HI\", Const, 5, \"\"},\n\t\t{\"R_PPC64_DTPREL16_HIGH\", Const, 10, \"\"},\n\t\t{\"R_PPC64_DTPREL16_HIGHA\", Const, 10, \"\"},\n\t\t{\"R_PPC64_DTPREL16_HIGHER\", Const, 5, \"\"},\n\t\t{\"R_PPC64_DTPREL16_HIGHERA\", Const, 5, \"\"},\n\t\t{\"R_PPC64_DTPREL16_HIGHEST\", Const, 5, \"\"},\n\t\t{\"R_PPC64_DTPREL16_HIGHESTA\", Const, 5, \"\"},\n\t\t{\"R_PPC64_DTPREL16_LO\", Const, 5, \"\"},\n\t\t{\"R_PPC64_DTPREL16_LO_DS\", Const, 5, \"\"},\n\t\t{\"R_PPC64_DTPREL34\", Const, 20, \"\"},\n\t\t{\"R_PPC64_DTPREL64\", Const, 5, \"\"},\n\t\t{\"R_PPC64_ENTRY\", Const, 10, \"\"},\n\t\t{\"R_PPC64_GLOB_DAT\", Const, 20, \"\"},\n\t\t{\"R_PPC64_GNU_VTENTRY\", Const, 20, \"\"},\n\t\t{\"R_PPC64_GNU_VTINHERIT\", Const, 20, \"\"},\n\t\t{\"R_PPC64_GOT16\", Const, 5, \"\"},\n\t\t{\"R_PPC64_GOT16_DS\", Const, 5, \"\"},\n\t\t{\"R_PPC64_GOT16_HA\", Const, 5, \"\"},\n\t\t{\"R_PPC64_GOT16_HI\", Const, 5, \"\"},\n\t\t{\"R_PPC64_GOT16_LO\", Const, 5, \"\"},\n\t\t{\"R_PPC64_GOT16_LO_DS\", Const, 5, \"\"},\n\t\t{\"R_PPC64_GOT_DTPREL16_DS\", Const, 5, \"\"},\n\t\t{\"R_PPC64_GOT_DTPREL16_HA\", Const, 5, \"\"},\n\t\t{\"R_PPC64_GOT_DTPREL16_HI\", Const, 5, \"\"},\n\t\t{\"R_PPC64_GOT_DTPREL16_LO_DS\", Const, 5, \"\"},\n\t\t{\"R_PPC64_GOT_DTPREL_PCREL34\", Const, 20, \"\"},\n\t\t{\"R_PPC64_GOT_PCREL34\", Const, 20, \"\"},\n\t\t{\"R_PPC64_GOT_TLSGD16\", Const, 5, \"\"},\n\t\t{\"R_PPC64_GOT_TLSGD16_HA\", Const, 5, \"\"},\n\t\t{\"R_PPC64_GOT_TLSGD16_HI\", Const, 5, \"\"},\n\t\t{\"R_PPC64_GOT_TLSGD16_LO\", Const, 5, \"\"},\n\t\t{\"R_PPC64_GOT_TLSGD_PCREL34\", Const, 20, \"\"},\n\t\t{\"R_PPC64_GOT_TLSLD16\", Const, 5, \"\"},\n\t\t{\"R_PPC64_GOT_TLSLD16_HA\", Const, 5, \"\"},\n\t\t{\"R_PPC64_GOT_TLSLD16_HI\", Const, 5, \"\"},\n\t\t{\"R_PPC64_GOT_TLSLD16_LO\", Const, 5, \"\"},\n\t\t{\"R_PPC64_GOT_TLSLD_PCREL34\", Const, 20, \"\"},\n\t\t{\"R_PPC64_GOT_TPREL16_DS\", Const, 5, \"\"},\n\t\t{\"R_PPC64_GOT_TPREL16_HA\", Const, 5, \"\"},\n\t\t{\"R_PPC64_GOT_TPREL16_HI\", Const, 5, \"\"},\n\t\t{\"R_PPC64_GOT_TPREL16_LO_DS\", Const, 5, \"\"},\n\t\t{\"R_PPC64_GOT_TPREL_PCREL34\", Const, 20, \"\"},\n\t\t{\"R_PPC64_IRELATIVE\", Const, 10, \"\"},\n\t\t{\"R_PPC64_JMP_IREL\", Const, 10, \"\"},\n\t\t{\"R_PPC64_JMP_SLOT\", Const, 5, \"\"},\n\t\t{\"R_PPC64_NONE\", Const, 5, \"\"},\n\t\t{\"R_PPC64_PCREL28\", Const, 20, \"\"},\n\t\t{\"R_PPC64_PCREL34\", Const, 20, \"\"},\n\t\t{\"R_PPC64_PCREL_OPT\", Const, 20, \"\"},\n\t\t{\"R_PPC64_PLT16_HA\", Const, 20, \"\"},\n\t\t{\"R_PPC64_PLT16_HI\", Const, 20, \"\"},\n\t\t{\"R_PPC64_PLT16_LO\", Const, 20, \"\"},\n\t\t{\"R_PPC64_PLT16_LO_DS\", Const, 10, \"\"},\n\t\t{\"R_PPC64_PLT32\", Const, 20, \"\"},\n\t\t{\"R_PPC64_PLT64\", Const, 20, \"\"},\n\t\t{\"R_PPC64_PLTCALL\", Const, 20, \"\"},\n\t\t{\"R_PPC64_PLTCALL_NOTOC\", Const, 20, \"\"},\n\t\t{\"R_PPC64_PLTGOT16\", Const, 10, \"\"},\n\t\t{\"R_PPC64_PLTGOT16_DS\", Const, 10, \"\"},\n\t\t{\"R_PPC64_PLTGOT16_HA\", Const, 10, \"\"},\n\t\t{\"R_PPC64_PLTGOT16_HI\", Const, 10, \"\"},\n\t\t{\"R_PPC64_PLTGOT16_LO\", Const, 10, \"\"},\n\t\t{\"R_PPC64_PLTGOT_LO_DS\", Const, 10, \"\"},\n\t\t{\"R_PPC64_PLTREL32\", Const, 20, \"\"},\n\t\t{\"R_PPC64_PLTREL64\", Const, 20, \"\"},\n\t\t{\"R_PPC64_PLTSEQ\", Const, 20, \"\"},\n\t\t{\"R_PPC64_PLTSEQ_NOTOC\", Const, 20, \"\"},\n\t\t{\"R_PPC64_PLT_PCREL34\", Const, 20, \"\"},\n\t\t{\"R_PPC64_PLT_PCREL34_NOTOC\", Const, 20, \"\"},\n\t\t{\"R_PPC64_REL14\", Const, 5, \"\"},\n\t\t{\"R_PPC64_REL14_BRNTAKEN\", Const, 5, \"\"},\n\t\t{\"R_PPC64_REL14_BRTAKEN\", Const, 5, \"\"},\n\t\t{\"R_PPC64_REL16\", Const, 5, \"\"},\n\t\t{\"R_PPC64_REL16DX_HA\", Const, 10, \"\"},\n\t\t{\"R_PPC64_REL16_HA\", Const, 5, \"\"},\n\t\t{\"R_PPC64_REL16_HI\", Const, 5, \"\"},\n\t\t{\"R_PPC64_REL16_HIGH\", Const, 20, \"\"},\n\t\t{\"R_PPC64_REL16_HIGHA\", Const, 20, \"\"},\n\t\t{\"R_PPC64_REL16_HIGHER\", Const, 20, \"\"},\n\t\t{\"R_PPC64_REL16_HIGHER34\", Const, 20, \"\"},\n\t\t{\"R_PPC64_REL16_HIGHERA\", Const, 20, \"\"},\n\t\t{\"R_PPC64_REL16_HIGHERA34\", Const, 20, \"\"},\n\t\t{\"R_PPC64_REL16_HIGHEST\", Const, 20, \"\"},\n\t\t{\"R_PPC64_REL16_HIGHEST34\", Const, 20, \"\"},\n\t\t{\"R_PPC64_REL16_HIGHESTA\", Const, 20, \"\"},\n\t\t{\"R_PPC64_REL16_HIGHESTA34\", Const, 20, \"\"},\n\t\t{\"R_PPC64_REL16_LO\", Const, 5, \"\"},\n\t\t{\"R_PPC64_REL24\", Const, 5, \"\"},\n\t\t{\"R_PPC64_REL24_NOTOC\", Const, 10, \"\"},\n\t\t{\"R_PPC64_REL24_P9NOTOC\", Const, 21, \"\"},\n\t\t{\"R_PPC64_REL30\", Const, 20, \"\"},\n\t\t{\"R_PPC64_REL32\", Const, 5, \"\"},\n\t\t{\"R_PPC64_REL64\", Const, 5, \"\"},\n\t\t{\"R_PPC64_RELATIVE\", Const, 18, \"\"},\n\t\t{\"R_PPC64_SECTOFF\", Const, 20, \"\"},\n\t\t{\"R_PPC64_SECTOFF_DS\", Const, 10, \"\"},\n\t\t{\"R_PPC64_SECTOFF_HA\", Const, 20, \"\"},\n\t\t{\"R_PPC64_SECTOFF_HI\", Const, 20, \"\"},\n\t\t{\"R_PPC64_SECTOFF_LO\", Const, 20, \"\"},\n\t\t{\"R_PPC64_SECTOFF_LO_DS\", Const, 10, \"\"},\n\t\t{\"R_PPC64_TLS\", Const, 5, \"\"},\n\t\t{\"R_PPC64_TLSGD\", Const, 5, \"\"},\n\t\t{\"R_PPC64_TLSLD\", Const, 5, \"\"},\n\t\t{\"R_PPC64_TOC\", Const, 5, \"\"},\n\t\t{\"R_PPC64_TOC16\", Const, 5, \"\"},\n\t\t{\"R_PPC64_TOC16_DS\", Const, 5, \"\"},\n\t\t{\"R_PPC64_TOC16_HA\", Const, 5, \"\"},\n\t\t{\"R_PPC64_TOC16_HI\", Const, 5, \"\"},\n\t\t{\"R_PPC64_TOC16_LO\", Const, 5, \"\"},\n\t\t{\"R_PPC64_TOC16_LO_DS\", Const, 5, \"\"},\n\t\t{\"R_PPC64_TOCSAVE\", Const, 10, \"\"},\n\t\t{\"R_PPC64_TPREL16\", Const, 5, \"\"},\n\t\t{\"R_PPC64_TPREL16_DS\", Const, 5, \"\"},\n\t\t{\"R_PPC64_TPREL16_HA\", Const, 5, \"\"},\n\t\t{\"R_PPC64_TPREL16_HI\", Const, 5, \"\"},\n\t\t{\"R_PPC64_TPREL16_HIGH\", Const, 10, \"\"},\n\t\t{\"R_PPC64_TPREL16_HIGHA\", Const, 10, \"\"},\n\t\t{\"R_PPC64_TPREL16_HIGHER\", Const, 5, \"\"},\n\t\t{\"R_PPC64_TPREL16_HIGHERA\", Const, 5, \"\"},\n\t\t{\"R_PPC64_TPREL16_HIGHEST\", Const, 5, \"\"},\n\t\t{\"R_PPC64_TPREL16_HIGHESTA\", Const, 5, \"\"},\n\t\t{\"R_PPC64_TPREL16_LO\", Const, 5, \"\"},\n\t\t{\"R_PPC64_TPREL16_LO_DS\", Const, 5, \"\"},\n\t\t{\"R_PPC64_TPREL34\", Const, 20, \"\"},\n\t\t{\"R_PPC64_TPREL64\", Const, 5, \"\"},\n\t\t{\"R_PPC64_UADDR16\", Const, 20, \"\"},\n\t\t{\"R_PPC64_UADDR32\", Const, 20, \"\"},\n\t\t{\"R_PPC64_UADDR64\", Const, 20, \"\"},\n\t\t{\"R_PPC_ADDR14\", Const, 0, \"\"},\n\t\t{\"R_PPC_ADDR14_BRNTAKEN\", Const, 0, \"\"},\n\t\t{\"R_PPC_ADDR14_BRTAKEN\", Const, 0, \"\"},\n\t\t{\"R_PPC_ADDR16\", Const, 0, \"\"},\n\t\t{\"R_PPC_ADDR16_HA\", Const, 0, \"\"},\n\t\t{\"R_PPC_ADDR16_HI\", Const, 0, \"\"},\n\t\t{\"R_PPC_ADDR16_LO\", Const, 0, \"\"},\n\t\t{\"R_PPC_ADDR24\", Const, 0, \"\"},\n\t\t{\"R_PPC_ADDR32\", Const, 0, \"\"},\n\t\t{\"R_PPC_COPY\", Const, 0, \"\"},\n\t\t{\"R_PPC_DTPMOD32\", Const, 0, \"\"},\n\t\t{\"R_PPC_DTPREL16\", Const, 0, \"\"},\n\t\t{\"R_PPC_DTPREL16_HA\", Const, 0, \"\"},\n\t\t{\"R_PPC_DTPREL16_HI\", Const, 0, \"\"},\n\t\t{\"R_PPC_DTPREL16_LO\", Const, 0, \"\"},\n\t\t{\"R_PPC_DTPREL32\", Const, 0, \"\"},\n\t\t{\"R_PPC_EMB_BIT_FLD\", Const, 0, \"\"},\n\t\t{\"R_PPC_EMB_MRKREF\", Const, 0, \"\"},\n\t\t{\"R_PPC_EMB_NADDR16\", Const, 0, \"\"},\n\t\t{\"R_PPC_EMB_NADDR16_HA\", Const, 0, \"\"},\n\t\t{\"R_PPC_EMB_NADDR16_HI\", Const, 0, \"\"},\n\t\t{\"R_PPC_EMB_NADDR16_LO\", Const, 0, \"\"},\n\t\t{\"R_PPC_EMB_NADDR32\", Const, 0, \"\"},\n\t\t{\"R_PPC_EMB_RELSDA\", Const, 0, \"\"},\n\t\t{\"R_PPC_EMB_RELSEC16\", Const, 0, \"\"},\n\t\t{\"R_PPC_EMB_RELST_HA\", Const, 0, \"\"},\n\t\t{\"R_PPC_EMB_RELST_HI\", Const, 0, \"\"},\n\t\t{\"R_PPC_EMB_RELST_LO\", Const, 0, \"\"},\n\t\t{\"R_PPC_EMB_SDA21\", Const, 0, \"\"},\n\t\t{\"R_PPC_EMB_SDA2I16\", Const, 0, \"\"},\n\t\t{\"R_PPC_EMB_SDA2REL\", Const, 0, \"\"},\n\t\t{\"R_PPC_EMB_SDAI16\", Const, 0, \"\"},\n\t\t{\"R_PPC_GLOB_DAT\", Const, 0, \"\"},\n\t\t{\"R_PPC_GOT16\", Const, 0, \"\"},\n\t\t{\"R_PPC_GOT16_HA\", Const, 0, \"\"},\n\t\t{\"R_PPC_GOT16_HI\", Const, 0, \"\"},\n\t\t{\"R_PPC_GOT16_LO\", Const, 0, \"\"},\n\t\t{\"R_PPC_GOT_TLSGD16\", Const, 0, \"\"},\n\t\t{\"R_PPC_GOT_TLSGD16_HA\", Const, 0, \"\"},\n\t\t{\"R_PPC_GOT_TLSGD16_HI\", Const, 0, \"\"},\n\t\t{\"R_PPC_GOT_TLSGD16_LO\", Const, 0, \"\"},\n\t\t{\"R_PPC_GOT_TLSLD16\", Const, 0, \"\"},\n\t\t{\"R_PPC_GOT_TLSLD16_HA\", Const, 0, \"\"},\n\t\t{\"R_PPC_GOT_TLSLD16_HI\", Const, 0, \"\"},\n\t\t{\"R_PPC_GOT_TLSLD16_LO\", Const, 0, \"\"},\n\t\t{\"R_PPC_GOT_TPREL16\", Const, 0, \"\"},\n\t\t{\"R_PPC_GOT_TPREL16_HA\", Const, 0, \"\"},\n\t\t{\"R_PPC_GOT_TPREL16_HI\", Const, 0, \"\"},\n\t\t{\"R_PPC_GOT_TPREL16_LO\", Const, 0, \"\"},\n\t\t{\"R_PPC_JMP_SLOT\", Const, 0, \"\"},\n\t\t{\"R_PPC_LOCAL24PC\", Const, 0, \"\"},\n\t\t{\"R_PPC_NONE\", Const, 0, \"\"},\n\t\t{\"R_PPC_PLT16_HA\", Const, 0, \"\"},\n\t\t{\"R_PPC_PLT16_HI\", Const, 0, \"\"},\n\t\t{\"R_PPC_PLT16_LO\", Const, 0, \"\"},\n\t\t{\"R_PPC_PLT32\", Const, 0, \"\"},\n\t\t{\"R_PPC_PLTREL24\", Const, 0, \"\"},\n\t\t{\"R_PPC_PLTREL32\", Const, 0, \"\"},\n\t\t{\"R_PPC_REL14\", Const, 0, \"\"},\n\t\t{\"R_PPC_REL14_BRNTAKEN\", Const, 0, \"\"},\n\t\t{\"R_PPC_REL14_BRTAKEN\", Const, 0, \"\"},\n\t\t{\"R_PPC_REL24\", Const, 0, \"\"},\n\t\t{\"R_PPC_REL32\", Const, 0, \"\"},\n\t\t{\"R_PPC_RELATIVE\", Const, 0, \"\"},\n\t\t{\"R_PPC_SDAREL16\", Const, 0, \"\"},\n\t\t{\"R_PPC_SECTOFF\", Const, 0, \"\"},\n\t\t{\"R_PPC_SECTOFF_HA\", Const, 0, \"\"},\n\t\t{\"R_PPC_SECTOFF_HI\", Const, 0, \"\"},\n\t\t{\"R_PPC_SECTOFF_LO\", Const, 0, \"\"},\n\t\t{\"R_PPC_TLS\", Const, 0, \"\"},\n\t\t{\"R_PPC_TPREL16\", Const, 0, \"\"},\n\t\t{\"R_PPC_TPREL16_HA\", Const, 0, \"\"},\n\t\t{\"R_PPC_TPREL16_HI\", Const, 0, \"\"},\n\t\t{\"R_PPC_TPREL16_LO\", Const, 0, \"\"},\n\t\t{\"R_PPC_TPREL32\", Const, 0, \"\"},\n\t\t{\"R_PPC_UADDR16\", Const, 0, \"\"},\n\t\t{\"R_PPC_UADDR32\", Const, 0, \"\"},\n\t\t{\"R_RISCV\", Type, 11, \"\"},\n\t\t{\"R_RISCV_32\", Const, 11, \"\"},\n\t\t{\"R_RISCV_32_PCREL\", Const, 12, \"\"},\n\t\t{\"R_RISCV_64\", Const, 11, \"\"},\n\t\t{\"R_RISCV_ADD16\", Const, 11, \"\"},\n\t\t{\"R_RISCV_ADD32\", Const, 11, \"\"},\n\t\t{\"R_RISCV_ADD64\", Const, 11, \"\"},\n\t\t{\"R_RISCV_ADD8\", Const, 11, \"\"},\n\t\t{\"R_RISCV_ALIGN\", Const, 11, \"\"},\n\t\t{\"R_RISCV_BRANCH\", Const, 11, \"\"},\n\t\t{\"R_RISCV_CALL\", Const, 11, \"\"},\n\t\t{\"R_RISCV_CALL_PLT\", Const, 11, \"\"},\n\t\t{\"R_RISCV_COPY\", Const, 11, \"\"},\n\t\t{\"R_RISCV_GNU_VTENTRY\", Const, 11, \"\"},\n\t\t{\"R_RISCV_GNU_VTINHERIT\", Const, 11, \"\"},\n\t\t{\"R_RISCV_GOT_HI20\", Const, 11, \"\"},\n\t\t{\"R_RISCV_GPREL_I\", Const, 11, \"\"},\n\t\t{\"R_RISCV_GPREL_S\", Const, 11, \"\"},\n\t\t{\"R_RISCV_HI20\", Const, 11, \"\"},\n\t\t{\"R_RISCV_JAL\", Const, 11, \"\"},\n\t\t{\"R_RISCV_JUMP_SLOT\", Const, 11, \"\"},\n\t\t{\"R_RISCV_LO12_I\", Const, 11, \"\"},\n\t\t{\"R_RISCV_LO12_S\", Const, 11, \"\"},\n\t\t{\"R_RISCV_NONE\", Const, 11, \"\"},\n\t\t{\"R_RISCV_PCREL_HI20\", Const, 11, \"\"},\n\t\t{\"R_RISCV_PCREL_LO12_I\", Const, 11, \"\"},\n\t\t{\"R_RISCV_PCREL_LO12_S\", Const, 11, \"\"},\n\t\t{\"R_RISCV_RELATIVE\", Const, 11, \"\"},\n\t\t{\"R_RISCV_RELAX\", Const, 11, \"\"},\n\t\t{\"R_RISCV_RVC_BRANCH\", Const, 11, \"\"},\n\t\t{\"R_RISCV_RVC_JUMP\", Const, 11, \"\"},\n\t\t{\"R_RISCV_RVC_LUI\", Const, 11, \"\"},\n\t\t{\"R_RISCV_SET16\", Const, 11, \"\"},\n\t\t{\"R_RISCV_SET32\", Const, 11, \"\"},\n\t\t{\"R_RISCV_SET6\", Const, 11, \"\"},\n\t\t{\"R_RISCV_SET8\", Const, 11, \"\"},\n\t\t{\"R_RISCV_SUB16\", Const, 11, \"\"},\n\t\t{\"R_RISCV_SUB32\", Const, 11, \"\"},\n\t\t{\"R_RISCV_SUB6\", Const, 11, \"\"},\n\t\t{\"R_RISCV_SUB64\", Const, 11, \"\"},\n\t\t{\"R_RISCV_SUB8\", Const, 11, \"\"},\n\t\t{\"R_RISCV_TLS_DTPMOD32\", Const, 11, \"\"},\n\t\t{\"R_RISCV_TLS_DTPMOD64\", Const, 11, \"\"},\n\t\t{\"R_RISCV_TLS_DTPREL32\", Const, 11, \"\"},\n\t\t{\"R_RISCV_TLS_DTPREL64\", Const, 11, \"\"},\n\t\t{\"R_RISCV_TLS_GD_HI20\", Const, 11, \"\"},\n\t\t{\"R_RISCV_TLS_GOT_HI20\", Const, 11, \"\"},\n\t\t{\"R_RISCV_TLS_TPREL32\", Const, 11, \"\"},\n\t\t{\"R_RISCV_TLS_TPREL64\", Const, 11, \"\"},\n\t\t{\"R_RISCV_TPREL_ADD\", Const, 11, \"\"},\n\t\t{\"R_RISCV_TPREL_HI20\", Const, 11, \"\"},\n\t\t{\"R_RISCV_TPREL_I\", Const, 11, \"\"},\n\t\t{\"R_RISCV_TPREL_LO12_I\", Const, 11, \"\"},\n\t\t{\"R_RISCV_TPREL_LO12_S\", Const, 11, \"\"},\n\t\t{\"R_RISCV_TPREL_S\", Const, 11, \"\"},\n\t\t{\"R_SPARC\", Type, 0, \"\"},\n\t\t{\"R_SPARC_10\", Const, 0, \"\"},\n\t\t{\"R_SPARC_11\", Const, 0, \"\"},\n\t\t{\"R_SPARC_13\", Const, 0, \"\"},\n\t\t{\"R_SPARC_16\", Const, 0, \"\"},\n\t\t{\"R_SPARC_22\", Const, 0, \"\"},\n\t\t{\"R_SPARC_32\", Const, 0, \"\"},\n\t\t{\"R_SPARC_5\", Const, 0, \"\"},\n\t\t{\"R_SPARC_6\", Const, 0, \"\"},\n\t\t{\"R_SPARC_64\", Const, 0, \"\"},\n\t\t{\"R_SPARC_7\", Const, 0, \"\"},\n\t\t{\"R_SPARC_8\", Const, 0, \"\"},\n\t\t{\"R_SPARC_COPY\", Const, 0, \"\"},\n\t\t{\"R_SPARC_DISP16\", Const, 0, \"\"},\n\t\t{\"R_SPARC_DISP32\", Const, 0, \"\"},\n\t\t{\"R_SPARC_DISP64\", Const, 0, \"\"},\n\t\t{\"R_SPARC_DISP8\", Const, 0, \"\"},\n\t\t{\"R_SPARC_GLOB_DAT\", Const, 0, \"\"},\n\t\t{\"R_SPARC_GLOB_JMP\", Const, 0, \"\"},\n\t\t{\"R_SPARC_GOT10\", Const, 0, \"\"},\n\t\t{\"R_SPARC_GOT13\", Const, 0, \"\"},\n\t\t{\"R_SPARC_GOT22\", Const, 0, \"\"},\n\t\t{\"R_SPARC_H44\", Const, 0, \"\"},\n\t\t{\"R_SPARC_HH22\", Const, 0, \"\"},\n\t\t{\"R_SPARC_HI22\", Const, 0, \"\"},\n\t\t{\"R_SPARC_HIPLT22\", Const, 0, \"\"},\n\t\t{\"R_SPARC_HIX22\", Const, 0, \"\"},\n\t\t{\"R_SPARC_HM10\", Const, 0, \"\"},\n\t\t{\"R_SPARC_JMP_SLOT\", Const, 0, \"\"},\n\t\t{\"R_SPARC_L44\", Const, 0, \"\"},\n\t\t{\"R_SPARC_LM22\", Const, 0, \"\"},\n\t\t{\"R_SPARC_LO10\", Const, 0, \"\"},\n\t\t{\"R_SPARC_LOPLT10\", Const, 0, \"\"},\n\t\t{\"R_SPARC_LOX10\", Const, 0, \"\"},\n\t\t{\"R_SPARC_M44\", Const, 0, \"\"},\n\t\t{\"R_SPARC_NONE\", Const, 0, \"\"},\n\t\t{\"R_SPARC_OLO10\", Const, 0, \"\"},\n\t\t{\"R_SPARC_PC10\", Const, 0, \"\"},\n\t\t{\"R_SPARC_PC22\", Const, 0, \"\"},\n\t\t{\"R_SPARC_PCPLT10\", Const, 0, \"\"},\n\t\t{\"R_SPARC_PCPLT22\", Const, 0, \"\"},\n\t\t{\"R_SPARC_PCPLT32\", Const, 0, \"\"},\n\t\t{\"R_SPARC_PC_HH22\", Const, 0, \"\"},\n\t\t{\"R_SPARC_PC_HM10\", Const, 0, \"\"},\n\t\t{\"R_SPARC_PC_LM22\", Const, 0, \"\"},\n\t\t{\"R_SPARC_PLT32\", Const, 0, \"\"},\n\t\t{\"R_SPARC_PLT64\", Const, 0, \"\"},\n\t\t{\"R_SPARC_REGISTER\", Const, 0, \"\"},\n\t\t{\"R_SPARC_RELATIVE\", Const, 0, \"\"},\n\t\t{\"R_SPARC_UA16\", Const, 0, \"\"},\n\t\t{\"R_SPARC_UA32\", Const, 0, \"\"},\n\t\t{\"R_SPARC_UA64\", Const, 0, \"\"},\n\t\t{\"R_SPARC_WDISP16\", Const, 0, \"\"},\n\t\t{\"R_SPARC_WDISP19\", Const, 0, \"\"},\n\t\t{\"R_SPARC_WDISP22\", Const, 0, \"\"},\n\t\t{\"R_SPARC_WDISP30\", Const, 0, \"\"},\n\t\t{\"R_SPARC_WPLT30\", Const, 0, \"\"},\n\t\t{\"R_SYM32\", Func, 0, \"func(info uint32) uint32\"},\n\t\t{\"R_SYM64\", Func, 0, \"func(info uint64) uint32\"},\n\t\t{\"R_TYPE32\", Func, 0, \"func(info uint32) uint32\"},\n\t\t{\"R_TYPE64\", Func, 0, \"func(info uint64) uint32\"},\n\t\t{\"R_X86_64\", Type, 0, \"\"},\n\t\t{\"R_X86_64_16\", Const, 0, \"\"},\n\t\t{\"R_X86_64_32\", Const, 0, \"\"},\n\t\t{\"R_X86_64_32S\", Const, 0, \"\"},\n\t\t{\"R_X86_64_64\", Const, 0, \"\"},\n\t\t{\"R_X86_64_8\", Const, 0, \"\"},\n\t\t{\"R_X86_64_COPY\", Const, 0, \"\"},\n\t\t{\"R_X86_64_DTPMOD64\", Const, 0, \"\"},\n\t\t{\"R_X86_64_DTPOFF32\", Const, 0, \"\"},\n\t\t{\"R_X86_64_DTPOFF64\", Const, 0, \"\"},\n\t\t{\"R_X86_64_GLOB_DAT\", Const, 0, \"\"},\n\t\t{\"R_X86_64_GOT32\", Const, 0, \"\"},\n\t\t{\"R_X86_64_GOT64\", Const, 10, \"\"},\n\t\t{\"R_X86_64_GOTOFF64\", Const, 10, \"\"},\n\t\t{\"R_X86_64_GOTPC32\", Const, 10, \"\"},\n\t\t{\"R_X86_64_GOTPC32_TLSDESC\", Const, 10, \"\"},\n\t\t{\"R_X86_64_GOTPC64\", Const, 10, \"\"},\n\t\t{\"R_X86_64_GOTPCREL\", Const, 0, \"\"},\n\t\t{\"R_X86_64_GOTPCREL64\", Const, 10, \"\"},\n\t\t{\"R_X86_64_GOTPCRELX\", Const, 10, \"\"},\n\t\t{\"R_X86_64_GOTPLT64\", Const, 10, \"\"},\n\t\t{\"R_X86_64_GOTTPOFF\", Const, 0, \"\"},\n\t\t{\"R_X86_64_IRELATIVE\", Const, 10, \"\"},\n\t\t{\"R_X86_64_JMP_SLOT\", Const, 0, \"\"},\n\t\t{\"R_X86_64_NONE\", Const, 0, \"\"},\n\t\t{\"R_X86_64_PC16\", Const, 0, \"\"},\n\t\t{\"R_X86_64_PC32\", Const, 0, \"\"},\n\t\t{\"R_X86_64_PC32_BND\", Const, 10, \"\"},\n\t\t{\"R_X86_64_PC64\", Const, 10, \"\"},\n\t\t{\"R_X86_64_PC8\", Const, 0, \"\"},\n\t\t{\"R_X86_64_PLT32\", Const, 0, \"\"},\n\t\t{\"R_X86_64_PLT32_BND\", Const, 10, \"\"},\n\t\t{\"R_X86_64_PLTOFF64\", Const, 10, \"\"},\n\t\t{\"R_X86_64_RELATIVE\", Const, 0, \"\"},\n\t\t{\"R_X86_64_RELATIVE64\", Const, 10, \"\"},\n\t\t{\"R_X86_64_REX_GOTPCRELX\", Const, 10, \"\"},\n\t\t{\"R_X86_64_SIZE32\", Const, 10, \"\"},\n\t\t{\"R_X86_64_SIZE64\", Const, 10, \"\"},\n\t\t{\"R_X86_64_TLSDESC\", Const, 10, \"\"},\n\t\t{\"R_X86_64_TLSDESC_CALL\", Const, 10, \"\"},\n\t\t{\"R_X86_64_TLSGD\", Const, 0, \"\"},\n\t\t{\"R_X86_64_TLSLD\", Const, 0, \"\"},\n\t\t{\"R_X86_64_TPOFF32\", Const, 0, \"\"},\n\t\t{\"R_X86_64_TPOFF64\", Const, 0, \"\"},\n\t\t{\"Rel32\", Type, 0, \"\"},\n\t\t{\"Rel32.Info\", Field, 0, \"\"},\n\t\t{\"Rel32.Off\", Field, 0, \"\"},\n\t\t{\"Rel64\", Type, 0, \"\"},\n\t\t{\"Rel64.Info\", Field, 0, \"\"},\n\t\t{\"Rel64.Off\", Field, 0, \"\"},\n\t\t{\"Rela32\", Type, 0, \"\"},\n\t\t{\"Rela32.Addend\", Field, 0, \"\"},\n\t\t{\"Rela32.Info\", Field, 0, \"\"},\n\t\t{\"Rela32.Off\", Field, 0, \"\"},\n\t\t{\"Rela64\", Type, 0, \"\"},\n\t\t{\"Rela64.Addend\", Field, 0, \"\"},\n\t\t{\"Rela64.Info\", Field, 0, \"\"},\n\t\t{\"Rela64.Off\", Field, 0, \"\"},\n\t\t{\"SHF_ALLOC\", Const, 0, \"\"},\n\t\t{\"SHF_COMPRESSED\", Const, 6, \"\"},\n\t\t{\"SHF_EXECINSTR\", Const, 0, \"\"},\n\t\t{\"SHF_GROUP\", Const, 0, \"\"},\n\t\t{\"SHF_INFO_LINK\", Const, 0, \"\"},\n\t\t{\"SHF_LINK_ORDER\", Const, 0, \"\"},\n\t\t{\"SHF_MASKOS\", Const, 0, \"\"},\n\t\t{\"SHF_MASKPROC\", Const, 0, \"\"},\n\t\t{\"SHF_MERGE\", Const, 0, \"\"},\n\t\t{\"SHF_OS_NONCONFORMING\", Const, 0, \"\"},\n\t\t{\"SHF_STRINGS\", Const, 0, \"\"},\n\t\t{\"SHF_TLS\", Const, 0, \"\"},\n\t\t{\"SHF_WRITE\", Const, 0, \"\"},\n\t\t{\"SHN_ABS\", Const, 0, \"\"},\n\t\t{\"SHN_COMMON\", Const, 0, \"\"},\n\t\t{\"SHN_HIOS\", Const, 0, \"\"},\n\t\t{\"SHN_HIPROC\", Const, 0, \"\"},\n\t\t{\"SHN_HIRESERVE\", Const, 0, \"\"},\n\t\t{\"SHN_LOOS\", Const, 0, \"\"},\n\t\t{\"SHN_LOPROC\", Const, 0, \"\"},\n\t\t{\"SHN_LORESERVE\", Const, 0, \"\"},\n\t\t{\"SHN_UNDEF\", Const, 0, \"\"},\n\t\t{\"SHN_XINDEX\", Const, 0, \"\"},\n\t\t{\"SHT_DYNAMIC\", Const, 0, \"\"},\n\t\t{\"SHT_DYNSYM\", Const, 0, \"\"},\n\t\t{\"SHT_FINI_ARRAY\", Const, 0, \"\"},\n\t\t{\"SHT_GNU_ATTRIBUTES\", Const, 0, \"\"},\n\t\t{\"SHT_GNU_HASH\", Const, 0, \"\"},\n\t\t{\"SHT_GNU_LIBLIST\", Const, 0, \"\"},\n\t\t{\"SHT_GNU_VERDEF\", Const, 0, \"\"},\n\t\t{\"SHT_GNU_VERNEED\", Const, 0, \"\"},\n\t\t{\"SHT_GNU_VERSYM\", Const, 0, \"\"},\n\t\t{\"SHT_GROUP\", Const, 0, \"\"},\n\t\t{\"SHT_HASH\", Const, 0, \"\"},\n\t\t{\"SHT_HIOS\", Const, 0, \"\"},\n\t\t{\"SHT_HIPROC\", Const, 0, \"\"},\n\t\t{\"SHT_HIUSER\", Const, 0, \"\"},\n\t\t{\"SHT_INIT_ARRAY\", Const, 0, \"\"},\n\t\t{\"SHT_LOOS\", Const, 0, \"\"},\n\t\t{\"SHT_LOPROC\", Const, 0, \"\"},\n\t\t{\"SHT_LOUSER\", Const, 0, \"\"},\n\t\t{\"SHT_MIPS_ABIFLAGS\", Const, 17, \"\"},\n\t\t{\"SHT_NOBITS\", Const, 0, \"\"},\n\t\t{\"SHT_NOTE\", Const, 0, \"\"},\n\t\t{\"SHT_NULL\", Const, 0, \"\"},\n\t\t{\"SHT_PREINIT_ARRAY\", Const, 0, \"\"},\n\t\t{\"SHT_PROGBITS\", Const, 0, \"\"},\n\t\t{\"SHT_REL\", Const, 0, \"\"},\n\t\t{\"SHT_RELA\", Const, 0, \"\"},\n\t\t{\"SHT_RISCV_ATTRIBUTES\", Const, 25, \"\"},\n\t\t{\"SHT_SHLIB\", Const, 0, \"\"},\n\t\t{\"SHT_STRTAB\", Const, 0, \"\"},\n\t\t{\"SHT_SYMTAB\", Const, 0, \"\"},\n\t\t{\"SHT_SYMTAB_SHNDX\", Const, 0, \"\"},\n\t\t{\"STB_GLOBAL\", Const, 0, \"\"},\n\t\t{\"STB_HIOS\", Const, 0, \"\"},\n\t\t{\"STB_HIPROC\", Const, 0, \"\"},\n\t\t{\"STB_LOCAL\", Const, 0, \"\"},\n\t\t{\"STB_LOOS\", Const, 0, \"\"},\n\t\t{\"STB_LOPROC\", Const, 0, \"\"},\n\t\t{\"STB_WEAK\", Const, 0, \"\"},\n\t\t{\"STT_COMMON\", Const, 0, \"\"},\n\t\t{\"STT_FILE\", Const, 0, \"\"},\n\t\t{\"STT_FUNC\", Const, 0, \"\"},\n\t\t{\"STT_GNU_IFUNC\", Const, 23, \"\"},\n\t\t{\"STT_HIOS\", Const, 0, \"\"},\n\t\t{\"STT_HIPROC\", Const, 0, \"\"},\n\t\t{\"STT_LOOS\", Const, 0, \"\"},\n\t\t{\"STT_LOPROC\", Const, 0, \"\"},\n\t\t{\"STT_NOTYPE\", Const, 0, \"\"},\n\t\t{\"STT_OBJECT\", Const, 0, \"\"},\n\t\t{\"STT_RELC\", Const, 23, \"\"},\n\t\t{\"STT_SECTION\", Const, 0, \"\"},\n\t\t{\"STT_SRELC\", Const, 23, \"\"},\n\t\t{\"STT_TLS\", Const, 0, \"\"},\n\t\t{\"STV_DEFAULT\", Const, 0, \"\"},\n\t\t{\"STV_HIDDEN\", Const, 0, \"\"},\n\t\t{\"STV_INTERNAL\", Const, 0, \"\"},\n\t\t{\"STV_PROTECTED\", Const, 0, \"\"},\n\t\t{\"ST_BIND\", Func, 0, \"func(info uint8) SymBind\"},\n\t\t{\"ST_INFO\", Func, 0, \"func(bind SymBind, typ SymType) uint8\"},\n\t\t{\"ST_TYPE\", Func, 0, \"func(info uint8) SymType\"},\n\t\t{\"ST_VISIBILITY\", Func, 0, \"func(other uint8) SymVis\"},\n\t\t{\"Section\", Type, 0, \"\"},\n\t\t{\"Section.ReaderAt\", Field, 0, \"\"},\n\t\t{\"Section.SectionHeader\", Field, 0, \"\"},\n\t\t{\"Section32\", Type, 0, \"\"},\n\t\t{\"Section32.Addr\", Field, 0, \"\"},\n\t\t{\"Section32.Addralign\", Field, 0, \"\"},\n\t\t{\"Section32.Entsize\", Field, 0, \"\"},\n\t\t{\"Section32.Flags\", Field, 0, \"\"},\n\t\t{\"Section32.Info\", Field, 0, \"\"},\n\t\t{\"Section32.Link\", Field, 0, \"\"},\n\t\t{\"Section32.Name\", Field, 0, \"\"},\n\t\t{\"Section32.Off\", Field, 0, \"\"},\n\t\t{\"Section32.Size\", Field, 0, \"\"},\n\t\t{\"Section32.Type\", Field, 0, \"\"},\n\t\t{\"Section64\", Type, 0, \"\"},\n\t\t{\"Section64.Addr\", Field, 0, \"\"},\n\t\t{\"Section64.Addralign\", Field, 0, \"\"},\n\t\t{\"Section64.Entsize\", Field, 0, \"\"},\n\t\t{\"Section64.Flags\", Field, 0, \"\"},\n\t\t{\"Section64.Info\", Field, 0, \"\"},\n\t\t{\"Section64.Link\", Field, 0, \"\"},\n\t\t{\"Section64.Name\", Field, 0, \"\"},\n\t\t{\"Section64.Off\", Field, 0, \"\"},\n\t\t{\"Section64.Size\", Field, 0, \"\"},\n\t\t{\"Section64.Type\", Field, 0, \"\"},\n\t\t{\"SectionFlag\", Type, 0, \"\"},\n\t\t{\"SectionHeader\", Type, 0, \"\"},\n\t\t{\"SectionHeader.Addr\", Field, 0, \"\"},\n\t\t{\"SectionHeader.Addralign\", Field, 0, \"\"},\n\t\t{\"SectionHeader.Entsize\", Field, 0, \"\"},\n\t\t{\"SectionHeader.FileSize\", Field, 6, \"\"},\n\t\t{\"SectionHeader.Flags\", Field, 0, \"\"},\n\t\t{\"SectionHeader.Info\", Field, 0, \"\"},\n\t\t{\"SectionHeader.Link\", Field, 0, \"\"},\n\t\t{\"SectionHeader.Name\", Field, 0, \"\"},\n\t\t{\"SectionHeader.Offset\", Field, 0, \"\"},\n\t\t{\"SectionHeader.Size\", Field, 0, \"\"},\n\t\t{\"SectionHeader.Type\", Field, 0, \"\"},\n\t\t{\"SectionIndex\", Type, 0, \"\"},\n\t\t{\"SectionType\", Type, 0, \"\"},\n\t\t{\"Sym32\", Type, 0, \"\"},\n\t\t{\"Sym32.Info\", Field, 0, \"\"},\n\t\t{\"Sym32.Name\", Field, 0, \"\"},\n\t\t{\"Sym32.Other\", Field, 0, \"\"},\n\t\t{\"Sym32.Shndx\", Field, 0, \"\"},\n\t\t{\"Sym32.Size\", Field, 0, \"\"},\n\t\t{\"Sym32.Value\", Field, 0, \"\"},\n\t\t{\"Sym32Size\", Const, 0, \"\"},\n\t\t{\"Sym64\", Type, 0, \"\"},\n\t\t{\"Sym64.Info\", Field, 0, \"\"},\n\t\t{\"Sym64.Name\", Field, 0, \"\"},\n\t\t{\"Sym64.Other\", Field, 0, \"\"},\n\t\t{\"Sym64.Shndx\", Field, 0, \"\"},\n\t\t{\"Sym64.Size\", Field, 0, \"\"},\n\t\t{\"Sym64.Value\", Field, 0, \"\"},\n\t\t{\"Sym64Size\", Const, 0, \"\"},\n\t\t{\"SymBind\", Type, 0, \"\"},\n\t\t{\"SymType\", Type, 0, \"\"},\n\t\t{\"SymVis\", Type, 0, \"\"},\n\t\t{\"Symbol\", Type, 0, \"\"},\n\t\t{\"Symbol.HasVersion\", Field, 24, \"\"},\n\t\t{\"Symbol.Info\", Field, 0, \"\"},\n\t\t{\"Symbol.Library\", Field, 13, \"\"},\n\t\t{\"Symbol.Name\", Field, 0, \"\"},\n\t\t{\"Symbol.Other\", Field, 0, \"\"},\n\t\t{\"Symbol.Section\", Field, 0, \"\"},\n\t\t{\"Symbol.Size\", Field, 0, \"\"},\n\t\t{\"Symbol.Value\", Field, 0, \"\"},\n\t\t{\"Symbol.Version\", Field, 13, \"\"},\n\t\t{\"Symbol.VersionIndex\", Field, 24, \"\"},\n\t\t{\"Type\", Type, 0, \"\"},\n\t\t{\"VER_FLG_BASE\", Const, 24, \"\"},\n\t\t{\"VER_FLG_INFO\", Const, 24, \"\"},\n\t\t{\"VER_FLG_WEAK\", Const, 24, \"\"},\n\t\t{\"Version\", Type, 0, \"\"},\n\t\t{\"VersionIndex\", Type, 24, \"\"},\n\t},\n\t\"debug/gosym\": {\n\t\t{\"(*DecodingError).Error\", Method, 0, \"\"},\n\t\t{\"(*LineTable).LineToPC\", Method, 0, \"\"},\n\t\t{\"(*LineTable).PCToLine\", Method, 0, \"\"},\n\t\t{\"(*Sym).BaseName\", Method, 0, \"\"},\n\t\t{\"(*Sym).PackageName\", Method, 0, \"\"},\n\t\t{\"(*Sym).ReceiverName\", Method, 0, \"\"},\n\t\t{\"(*Sym).Static\", Method, 0, \"\"},\n\t\t{\"(*Table).LineToPC\", Method, 0, \"\"},\n\t\t{\"(*Table).LookupFunc\", Method, 0, \"\"},\n\t\t{\"(*Table).LookupSym\", Method, 0, \"\"},\n\t\t{\"(*Table).PCToFunc\", Method, 0, \"\"},\n\t\t{\"(*Table).PCToLine\", Method, 0, \"\"},\n\t\t{\"(*Table).SymByAddr\", Method, 0, \"\"},\n\t\t{\"(*UnknownLineError).Error\", Method, 0, \"\"},\n\t\t{\"(Func).BaseName\", Method, 0, \"\"},\n\t\t{\"(Func).PackageName\", Method, 0, \"\"},\n\t\t{\"(Func).ReceiverName\", Method, 0, \"\"},\n\t\t{\"(Func).Static\", Method, 0, \"\"},\n\t\t{\"(UnknownFileError).Error\", Method, 0, \"\"},\n\t\t{\"DecodingError\", Type, 0, \"\"},\n\t\t{\"Func\", Type, 0, \"\"},\n\t\t{\"Func.End\", Field, 0, \"\"},\n\t\t{\"Func.Entry\", Field, 0, \"\"},\n\t\t{\"Func.FrameSize\", Field, 0, \"\"},\n\t\t{\"Func.LineTable\", Field, 0, \"\"},\n\t\t{\"Func.Locals\", Field, 0, \"\"},\n\t\t{\"Func.Obj\", Field, 0, \"\"},\n\t\t{\"Func.Params\", Field, 0, \"\"},\n\t\t{\"Func.Sym\", Field, 0, \"\"},\n\t\t{\"LineTable\", Type, 0, \"\"},\n\t\t{\"LineTable.Data\", Field, 0, \"\"},\n\t\t{\"LineTable.Line\", Field, 0, \"\"},\n\t\t{\"LineTable.PC\", Field, 0, \"\"},\n\t\t{\"NewLineTable\", Func, 0, \"func(data []byte, text uint64) *LineTable\"},\n\t\t{\"NewTable\", Func, 0, \"func(symtab []byte, pcln *LineTable) (*Table, error)\"},\n\t\t{\"Obj\", Type, 0, \"\"},\n\t\t{\"Obj.Funcs\", Field, 0, \"\"},\n\t\t{\"Obj.Paths\", Field, 0, \"\"},\n\t\t{\"Sym\", Type, 0, \"\"},\n\t\t{\"Sym.Func\", Field, 0, \"\"},\n\t\t{\"Sym.GoType\", Field, 0, \"\"},\n\t\t{\"Sym.Name\", Field, 0, \"\"},\n\t\t{\"Sym.Type\", Field, 0, \"\"},\n\t\t{\"Sym.Value\", Field, 0, \"\"},\n\t\t{\"Table\", Type, 0, \"\"},\n\t\t{\"Table.Files\", Field, 0, \"\"},\n\t\t{\"Table.Funcs\", Field, 0, \"\"},\n\t\t{\"Table.Objs\", Field, 0, \"\"},\n\t\t{\"Table.Syms\", Field, 0, \"\"},\n\t\t{\"UnknownFileError\", Type, 0, \"\"},\n\t\t{\"UnknownLineError\", Type, 0, \"\"},\n\t\t{\"UnknownLineError.File\", Field, 0, \"\"},\n\t\t{\"UnknownLineError.Line\", Field, 0, \"\"},\n\t},\n\t\"debug/macho\": {\n\t\t{\"(*FatFile).Close\", Method, 3, \"\"},\n\t\t{\"(*File).Close\", Method, 0, \"\"},\n\t\t{\"(*File).DWARF\", Method, 0, \"\"},\n\t\t{\"(*File).ImportedLibraries\", Method, 0, \"\"},\n\t\t{\"(*File).ImportedSymbols\", Method, 0, \"\"},\n\t\t{\"(*File).Section\", Method, 0, \"\"},\n\t\t{\"(*File).Segment\", Method, 0, \"\"},\n\t\t{\"(*FormatError).Error\", Method, 0, \"\"},\n\t\t{\"(*Section).Data\", Method, 0, \"\"},\n\t\t{\"(*Section).Open\", Method, 0, \"\"},\n\t\t{\"(*Segment).Data\", Method, 0, \"\"},\n\t\t{\"(*Segment).Open\", Method, 0, \"\"},\n\t\t{\"(Cpu).GoString\", Method, 0, \"\"},\n\t\t{\"(Cpu).String\", Method, 0, \"\"},\n\t\t{\"(Dylib).Raw\", Method, 0, \"\"},\n\t\t{\"(Dysymtab).Raw\", Method, 0, \"\"},\n\t\t{\"(FatArch).Close\", Method, 3, \"\"},\n\t\t{\"(FatArch).DWARF\", Method, 3, \"\"},\n\t\t{\"(FatArch).ImportedLibraries\", Method, 3, \"\"},\n\t\t{\"(FatArch).ImportedSymbols\", Method, 3, \"\"},\n\t\t{\"(FatArch).Section\", Method, 3, \"\"},\n\t\t{\"(FatArch).Segment\", Method, 3, \"\"},\n\t\t{\"(Load).Raw\", Method, 0, \"\"},\n\t\t{\"(LoadBytes).Raw\", Method, 0, \"\"},\n\t\t{\"(LoadCmd).GoString\", Method, 0, \"\"},\n\t\t{\"(LoadCmd).String\", Method, 0, \"\"},\n\t\t{\"(RelocTypeARM).GoString\", Method, 10, \"\"},\n\t\t{\"(RelocTypeARM).String\", Method, 10, \"\"},\n\t\t{\"(RelocTypeARM64).GoString\", Method, 10, \"\"},\n\t\t{\"(RelocTypeARM64).String\", Method, 10, \"\"},\n\t\t{\"(RelocTypeGeneric).GoString\", Method, 10, \"\"},\n\t\t{\"(RelocTypeGeneric).String\", Method, 10, \"\"},\n\t\t{\"(RelocTypeX86_64).GoString\", Method, 10, \"\"},\n\t\t{\"(RelocTypeX86_64).String\", Method, 10, \"\"},\n\t\t{\"(Rpath).Raw\", Method, 10, \"\"},\n\t\t{\"(Section).ReadAt\", Method, 0, \"\"},\n\t\t{\"(Segment).Raw\", Method, 0, \"\"},\n\t\t{\"(Segment).ReadAt\", Method, 0, \"\"},\n\t\t{\"(Symtab).Raw\", Method, 0, \"\"},\n\t\t{\"(Type).GoString\", Method, 10, \"\"},\n\t\t{\"(Type).String\", Method, 10, \"\"},\n\t\t{\"ARM64_RELOC_ADDEND\", Const, 10, \"\"},\n\t\t{\"ARM64_RELOC_BRANCH26\", Const, 10, \"\"},\n\t\t{\"ARM64_RELOC_GOT_LOAD_PAGE21\", Const, 10, \"\"},\n\t\t{\"ARM64_RELOC_GOT_LOAD_PAGEOFF12\", Const, 10, \"\"},\n\t\t{\"ARM64_RELOC_PAGE21\", Const, 10, \"\"},\n\t\t{\"ARM64_RELOC_PAGEOFF12\", Const, 10, \"\"},\n\t\t{\"ARM64_RELOC_POINTER_TO_GOT\", Const, 10, \"\"},\n\t\t{\"ARM64_RELOC_SUBTRACTOR\", Const, 10, \"\"},\n\t\t{\"ARM64_RELOC_TLVP_LOAD_PAGE21\", Const, 10, \"\"},\n\t\t{\"ARM64_RELOC_TLVP_LOAD_PAGEOFF12\", Const, 10, \"\"},\n\t\t{\"ARM64_RELOC_UNSIGNED\", Const, 10, \"\"},\n\t\t{\"ARM_RELOC_BR24\", Const, 10, \"\"},\n\t\t{\"ARM_RELOC_HALF\", Const, 10, \"\"},\n\t\t{\"ARM_RELOC_HALF_SECTDIFF\", Const, 10, \"\"},\n\t\t{\"ARM_RELOC_LOCAL_SECTDIFF\", Const, 10, \"\"},\n\t\t{\"ARM_RELOC_PAIR\", Const, 10, \"\"},\n\t\t{\"ARM_RELOC_PB_LA_PTR\", Const, 10, \"\"},\n\t\t{\"ARM_RELOC_SECTDIFF\", Const, 10, \"\"},\n\t\t{\"ARM_RELOC_VANILLA\", Const, 10, \"\"},\n\t\t{\"ARM_THUMB_32BIT_BRANCH\", Const, 10, \"\"},\n\t\t{\"ARM_THUMB_RELOC_BR22\", Const, 10, \"\"},\n\t\t{\"Cpu\", Type, 0, \"\"},\n\t\t{\"Cpu386\", Const, 0, \"\"},\n\t\t{\"CpuAmd64\", Const, 0, \"\"},\n\t\t{\"CpuArm\", Const, 3, \"\"},\n\t\t{\"CpuArm64\", Const, 11, \"\"},\n\t\t{\"CpuPpc\", Const, 3, \"\"},\n\t\t{\"CpuPpc64\", Const, 3, \"\"},\n\t\t{\"Dylib\", Type, 0, \"\"},\n\t\t{\"Dylib.CompatVersion\", Field, 0, \"\"},\n\t\t{\"Dylib.CurrentVersion\", Field, 0, \"\"},\n\t\t{\"Dylib.LoadBytes\", Field, 0, \"\"},\n\t\t{\"Dylib.Name\", Field, 0, \"\"},\n\t\t{\"Dylib.Time\", Field, 0, \"\"},\n\t\t{\"DylibCmd\", Type, 0, \"\"},\n\t\t{\"DylibCmd.Cmd\", Field, 0, \"\"},\n\t\t{\"DylibCmd.CompatVersion\", Field, 0, \"\"},\n\t\t{\"DylibCmd.CurrentVersion\", Field, 0, \"\"},\n\t\t{\"DylibCmd.Len\", Field, 0, \"\"},\n\t\t{\"DylibCmd.Name\", Field, 0, \"\"},\n\t\t{\"DylibCmd.Time\", Field, 0, \"\"},\n\t\t{\"Dysymtab\", Type, 0, \"\"},\n\t\t{\"Dysymtab.DysymtabCmd\", Field, 0, \"\"},\n\t\t{\"Dysymtab.IndirectSyms\", Field, 0, \"\"},\n\t\t{\"Dysymtab.LoadBytes\", Field, 0, \"\"},\n\t\t{\"DysymtabCmd\", Type, 0, \"\"},\n\t\t{\"DysymtabCmd.Cmd\", Field, 0, \"\"},\n\t\t{\"DysymtabCmd.Extrefsymoff\", Field, 0, \"\"},\n\t\t{\"DysymtabCmd.Extreloff\", Field, 0, \"\"},\n\t\t{\"DysymtabCmd.Iextdefsym\", Field, 0, \"\"},\n\t\t{\"DysymtabCmd.Ilocalsym\", Field, 0, \"\"},\n\t\t{\"DysymtabCmd.Indirectsymoff\", Field, 0, \"\"},\n\t\t{\"DysymtabCmd.Iundefsym\", Field, 0, \"\"},\n\t\t{\"DysymtabCmd.Len\", Field, 0, \"\"},\n\t\t{\"DysymtabCmd.Locreloff\", Field, 0, \"\"},\n\t\t{\"DysymtabCmd.Modtaboff\", Field, 0, \"\"},\n\t\t{\"DysymtabCmd.Nextdefsym\", Field, 0, \"\"},\n\t\t{\"DysymtabCmd.Nextrefsyms\", Field, 0, \"\"},\n\t\t{\"DysymtabCmd.Nextrel\", Field, 0, \"\"},\n\t\t{\"DysymtabCmd.Nindirectsyms\", Field, 0, \"\"},\n\t\t{\"DysymtabCmd.Nlocalsym\", Field, 0, \"\"},\n\t\t{\"DysymtabCmd.Nlocrel\", Field, 0, \"\"},\n\t\t{\"DysymtabCmd.Nmodtab\", Field, 0, \"\"},\n\t\t{\"DysymtabCmd.Ntoc\", Field, 0, \"\"},\n\t\t{\"DysymtabCmd.Nundefsym\", Field, 0, \"\"},\n\t\t{\"DysymtabCmd.Tocoffset\", Field, 0, \"\"},\n\t\t{\"ErrNotFat\", Var, 3, \"\"},\n\t\t{\"FatArch\", Type, 3, \"\"},\n\t\t{\"FatArch.FatArchHeader\", Field, 3, \"\"},\n\t\t{\"FatArch.File\", Field, 3, \"\"},\n\t\t{\"FatArchHeader\", Type, 3, \"\"},\n\t\t{\"FatArchHeader.Align\", Field, 3, \"\"},\n\t\t{\"FatArchHeader.Cpu\", Field, 3, \"\"},\n\t\t{\"FatArchHeader.Offset\", Field, 3, \"\"},\n\t\t{\"FatArchHeader.Size\", Field, 3, \"\"},\n\t\t{\"FatArchHeader.SubCpu\", Field, 3, \"\"},\n\t\t{\"FatFile\", Type, 3, \"\"},\n\t\t{\"FatFile.Arches\", Field, 3, \"\"},\n\t\t{\"FatFile.Magic\", Field, 3, \"\"},\n\t\t{\"File\", Type, 0, \"\"},\n\t\t{\"File.ByteOrder\", Field, 0, \"\"},\n\t\t{\"File.Dysymtab\", Field, 0, \"\"},\n\t\t{\"File.FileHeader\", Field, 0, \"\"},\n\t\t{\"File.Loads\", Field, 0, \"\"},\n\t\t{\"File.Sections\", Field, 0, \"\"},\n\t\t{\"File.Symtab\", Field, 0, \"\"},\n\t\t{\"FileHeader\", Type, 0, \"\"},\n\t\t{\"FileHeader.Cmdsz\", Field, 0, \"\"},\n\t\t{\"FileHeader.Cpu\", Field, 0, \"\"},\n\t\t{\"FileHeader.Flags\", Field, 0, \"\"},\n\t\t{\"FileHeader.Magic\", Field, 0, \"\"},\n\t\t{\"FileHeader.Ncmd\", Field, 0, \"\"},\n\t\t{\"FileHeader.SubCpu\", Field, 0, \"\"},\n\t\t{\"FileHeader.Type\", Field, 0, \"\"},\n\t\t{\"FlagAllModsBound\", Const, 10, \"\"},\n\t\t{\"FlagAllowStackExecution\", Const, 10, \"\"},\n\t\t{\"FlagAppExtensionSafe\", Const, 10, \"\"},\n\t\t{\"FlagBindAtLoad\", Const, 10, \"\"},\n\t\t{\"FlagBindsToWeak\", Const, 10, \"\"},\n\t\t{\"FlagCanonical\", Const, 10, \"\"},\n\t\t{\"FlagDeadStrippableDylib\", Const, 10, \"\"},\n\t\t{\"FlagDyldLink\", Const, 10, \"\"},\n\t\t{\"FlagForceFlat\", Const, 10, \"\"},\n\t\t{\"FlagHasTLVDescriptors\", Const, 10, \"\"},\n\t\t{\"FlagIncrLink\", Const, 10, \"\"},\n\t\t{\"FlagLazyInit\", Const, 10, \"\"},\n\t\t{\"FlagNoFixPrebinding\", Const, 10, \"\"},\n\t\t{\"FlagNoHeapExecution\", Const, 10, \"\"},\n\t\t{\"FlagNoMultiDefs\", Const, 10, \"\"},\n\t\t{\"FlagNoReexportedDylibs\", Const, 10, \"\"},\n\t\t{\"FlagNoUndefs\", Const, 10, \"\"},\n\t\t{\"FlagPIE\", Const, 10, \"\"},\n\t\t{\"FlagPrebindable\", Const, 10, \"\"},\n\t\t{\"FlagPrebound\", Const, 10, \"\"},\n\t\t{\"FlagRootSafe\", Const, 10, \"\"},\n\t\t{\"FlagSetuidSafe\", Const, 10, \"\"},\n\t\t{\"FlagSplitSegs\", Const, 10, \"\"},\n\t\t{\"FlagSubsectionsViaSymbols\", Const, 10, \"\"},\n\t\t{\"FlagTwoLevel\", Const, 10, \"\"},\n\t\t{\"FlagWeakDefines\", Const, 10, \"\"},\n\t\t{\"FormatError\", Type, 0, \"\"},\n\t\t{\"GENERIC_RELOC_LOCAL_SECTDIFF\", Const, 10, \"\"},\n\t\t{\"GENERIC_RELOC_PAIR\", Const, 10, \"\"},\n\t\t{\"GENERIC_RELOC_PB_LA_PTR\", Const, 10, \"\"},\n\t\t{\"GENERIC_RELOC_SECTDIFF\", Const, 10, \"\"},\n\t\t{\"GENERIC_RELOC_TLV\", Const, 10, \"\"},\n\t\t{\"GENERIC_RELOC_VANILLA\", Const, 10, \"\"},\n\t\t{\"Load\", Type, 0, \"\"},\n\t\t{\"LoadBytes\", Type, 0, \"\"},\n\t\t{\"LoadCmd\", Type, 0, \"\"},\n\t\t{\"LoadCmdDylib\", Const, 0, \"\"},\n\t\t{\"LoadCmdDylinker\", Const, 0, \"\"},\n\t\t{\"LoadCmdDysymtab\", Const, 0, \"\"},\n\t\t{\"LoadCmdRpath\", Const, 10, \"\"},\n\t\t{\"LoadCmdSegment\", Const, 0, \"\"},\n\t\t{\"LoadCmdSegment64\", Const, 0, \"\"},\n\t\t{\"LoadCmdSymtab\", Const, 0, \"\"},\n\t\t{\"LoadCmdThread\", Const, 0, \"\"},\n\t\t{\"LoadCmdUnixThread\", Const, 0, \"\"},\n\t\t{\"Magic32\", Const, 0, \"\"},\n\t\t{\"Magic64\", Const, 0, \"\"},\n\t\t{\"MagicFat\", Const, 3, \"\"},\n\t\t{\"NewFatFile\", Func, 3, \"func(r io.ReaderAt) (*FatFile, error)\"},\n\t\t{\"NewFile\", Func, 0, \"func(r io.ReaderAt) (*File, error)\"},\n\t\t{\"Nlist32\", Type, 0, \"\"},\n\t\t{\"Nlist32.Desc\", Field, 0, \"\"},\n\t\t{\"Nlist32.Name\", Field, 0, \"\"},\n\t\t{\"Nlist32.Sect\", Field, 0, \"\"},\n\t\t{\"Nlist32.Type\", Field, 0, \"\"},\n\t\t{\"Nlist32.Value\", Field, 0, \"\"},\n\t\t{\"Nlist64\", Type, 0, \"\"},\n\t\t{\"Nlist64.Desc\", Field, 0, \"\"},\n\t\t{\"Nlist64.Name\", Field, 0, \"\"},\n\t\t{\"Nlist64.Sect\", Field, 0, \"\"},\n\t\t{\"Nlist64.Type\", Field, 0, \"\"},\n\t\t{\"Nlist64.Value\", Field, 0, \"\"},\n\t\t{\"Open\", Func, 0, \"func(name string) (*File, error)\"},\n\t\t{\"OpenFat\", Func, 3, \"func(name string) (*FatFile, error)\"},\n\t\t{\"Regs386\", Type, 0, \"\"},\n\t\t{\"Regs386.AX\", Field, 0, \"\"},\n\t\t{\"Regs386.BP\", Field, 0, \"\"},\n\t\t{\"Regs386.BX\", Field, 0, \"\"},\n\t\t{\"Regs386.CS\", Field, 0, \"\"},\n\t\t{\"Regs386.CX\", Field, 0, \"\"},\n\t\t{\"Regs386.DI\", Field, 0, \"\"},\n\t\t{\"Regs386.DS\", Field, 0, \"\"},\n\t\t{\"Regs386.DX\", Field, 0, \"\"},\n\t\t{\"Regs386.ES\", Field, 0, \"\"},\n\t\t{\"Regs386.FLAGS\", Field, 0, \"\"},\n\t\t{\"Regs386.FS\", Field, 0, \"\"},\n\t\t{\"Regs386.GS\", Field, 0, \"\"},\n\t\t{\"Regs386.IP\", Field, 0, \"\"},\n\t\t{\"Regs386.SI\", Field, 0, \"\"},\n\t\t{\"Regs386.SP\", Field, 0, \"\"},\n\t\t{\"Regs386.SS\", Field, 0, \"\"},\n\t\t{\"RegsAMD64\", Type, 0, \"\"},\n\t\t{\"RegsAMD64.AX\", Field, 0, \"\"},\n\t\t{\"RegsAMD64.BP\", Field, 0, \"\"},\n\t\t{\"RegsAMD64.BX\", Field, 0, \"\"},\n\t\t{\"RegsAMD64.CS\", Field, 0, \"\"},\n\t\t{\"RegsAMD64.CX\", Field, 0, \"\"},\n\t\t{\"RegsAMD64.DI\", Field, 0, \"\"},\n\t\t{\"RegsAMD64.DX\", Field, 0, \"\"},\n\t\t{\"RegsAMD64.FLAGS\", Field, 0, \"\"},\n\t\t{\"RegsAMD64.FS\", Field, 0, \"\"},\n\t\t{\"RegsAMD64.GS\", Field, 0, \"\"},\n\t\t{\"RegsAMD64.IP\", Field, 0, \"\"},\n\t\t{\"RegsAMD64.R10\", Field, 0, \"\"},\n\t\t{\"RegsAMD64.R11\", Field, 0, \"\"},\n\t\t{\"RegsAMD64.R12\", Field, 0, \"\"},\n\t\t{\"RegsAMD64.R13\", Field, 0, \"\"},\n\t\t{\"RegsAMD64.R14\", Field, 0, \"\"},\n\t\t{\"RegsAMD64.R15\", Field, 0, \"\"},\n\t\t{\"RegsAMD64.R8\", Field, 0, \"\"},\n\t\t{\"RegsAMD64.R9\", Field, 0, \"\"},\n\t\t{\"RegsAMD64.SI\", Field, 0, \"\"},\n\t\t{\"RegsAMD64.SP\", Field, 0, \"\"},\n\t\t{\"Reloc\", Type, 10, \"\"},\n\t\t{\"Reloc.Addr\", Field, 10, \"\"},\n\t\t{\"Reloc.Extern\", Field, 10, \"\"},\n\t\t{\"Reloc.Len\", Field, 10, \"\"},\n\t\t{\"Reloc.Pcrel\", Field, 10, \"\"},\n\t\t{\"Reloc.Scattered\", Field, 10, \"\"},\n\t\t{\"Reloc.Type\", Field, 10, \"\"},\n\t\t{\"Reloc.Value\", Field, 10, \"\"},\n\t\t{\"RelocTypeARM\", Type, 10, \"\"},\n\t\t{\"RelocTypeARM64\", Type, 10, \"\"},\n\t\t{\"RelocTypeGeneric\", Type, 10, \"\"},\n\t\t{\"RelocTypeX86_64\", Type, 10, \"\"},\n\t\t{\"Rpath\", Type, 10, \"\"},\n\t\t{\"Rpath.LoadBytes\", Field, 10, \"\"},\n\t\t{\"Rpath.Path\", Field, 10, \"\"},\n\t\t{\"RpathCmd\", Type, 10, \"\"},\n\t\t{\"RpathCmd.Cmd\", Field, 10, \"\"},\n\t\t{\"RpathCmd.Len\", Field, 10, \"\"},\n\t\t{\"RpathCmd.Path\", Field, 10, \"\"},\n\t\t{\"Section\", Type, 0, \"\"},\n\t\t{\"Section.ReaderAt\", Field, 0, \"\"},\n\t\t{\"Section.Relocs\", Field, 10, \"\"},\n\t\t{\"Section.SectionHeader\", Field, 0, \"\"},\n\t\t{\"Section32\", Type, 0, \"\"},\n\t\t{\"Section32.Addr\", Field, 0, \"\"},\n\t\t{\"Section32.Align\", Field, 0, \"\"},\n\t\t{\"Section32.Flags\", Field, 0, \"\"},\n\t\t{\"Section32.Name\", Field, 0, \"\"},\n\t\t{\"Section32.Nreloc\", Field, 0, \"\"},\n\t\t{\"Section32.Offset\", Field, 0, \"\"},\n\t\t{\"Section32.Reloff\", Field, 0, \"\"},\n\t\t{\"Section32.Reserve1\", Field, 0, \"\"},\n\t\t{\"Section32.Reserve2\", Field, 0, \"\"},\n\t\t{\"Section32.Seg\", Field, 0, \"\"},\n\t\t{\"Section32.Size\", Field, 0, \"\"},\n\t\t{\"Section64\", Type, 0, \"\"},\n\t\t{\"Section64.Addr\", Field, 0, \"\"},\n\t\t{\"Section64.Align\", Field, 0, \"\"},\n\t\t{\"Section64.Flags\", Field, 0, \"\"},\n\t\t{\"Section64.Name\", Field, 0, \"\"},\n\t\t{\"Section64.Nreloc\", Field, 0, \"\"},\n\t\t{\"Section64.Offset\", Field, 0, \"\"},\n\t\t{\"Section64.Reloff\", Field, 0, \"\"},\n\t\t{\"Section64.Reserve1\", Field, 0, \"\"},\n\t\t{\"Section64.Reserve2\", Field, 0, \"\"},\n\t\t{\"Section64.Reserve3\", Field, 0, \"\"},\n\t\t{\"Section64.Seg\", Field, 0, \"\"},\n\t\t{\"Section64.Size\", Field, 0, \"\"},\n\t\t{\"SectionHeader\", Type, 0, \"\"},\n\t\t{\"SectionHeader.Addr\", Field, 0, \"\"},\n\t\t{\"SectionHeader.Align\", Field, 0, \"\"},\n\t\t{\"SectionHeader.Flags\", Field, 0, \"\"},\n\t\t{\"SectionHeader.Name\", Field, 0, \"\"},\n\t\t{\"SectionHeader.Nreloc\", Field, 0, \"\"},\n\t\t{\"SectionHeader.Offset\", Field, 0, \"\"},\n\t\t{\"SectionHeader.Reloff\", Field, 0, \"\"},\n\t\t{\"SectionHeader.Seg\", Field, 0, \"\"},\n\t\t{\"SectionHeader.Size\", Field, 0, \"\"},\n\t\t{\"Segment\", Type, 0, \"\"},\n\t\t{\"Segment.LoadBytes\", Field, 0, \"\"},\n\t\t{\"Segment.ReaderAt\", Field, 0, \"\"},\n\t\t{\"Segment.SegmentHeader\", Field, 0, \"\"},\n\t\t{\"Segment32\", Type, 0, \"\"},\n\t\t{\"Segment32.Addr\", Field, 0, \"\"},\n\t\t{\"Segment32.Cmd\", Field, 0, \"\"},\n\t\t{\"Segment32.Filesz\", Field, 0, \"\"},\n\t\t{\"Segment32.Flag\", Field, 0, \"\"},\n\t\t{\"Segment32.Len\", Field, 0, \"\"},\n\t\t{\"Segment32.Maxprot\", Field, 0, \"\"},\n\t\t{\"Segment32.Memsz\", Field, 0, \"\"},\n\t\t{\"Segment32.Name\", Field, 0, \"\"},\n\t\t{\"Segment32.Nsect\", Field, 0, \"\"},\n\t\t{\"Segment32.Offset\", Field, 0, \"\"},\n\t\t{\"Segment32.Prot\", Field, 0, \"\"},\n\t\t{\"Segment64\", Type, 0, \"\"},\n\t\t{\"Segment64.Addr\", Field, 0, \"\"},\n\t\t{\"Segment64.Cmd\", Field, 0, \"\"},\n\t\t{\"Segment64.Filesz\", Field, 0, \"\"},\n\t\t{\"Segment64.Flag\", Field, 0, \"\"},\n\t\t{\"Segment64.Len\", Field, 0, \"\"},\n\t\t{\"Segment64.Maxprot\", Field, 0, \"\"},\n\t\t{\"Segment64.Memsz\", Field, 0, \"\"},\n\t\t{\"Segment64.Name\", Field, 0, \"\"},\n\t\t{\"Segment64.Nsect\", Field, 0, \"\"},\n\t\t{\"Segment64.Offset\", Field, 0, \"\"},\n\t\t{\"Segment64.Prot\", Field, 0, \"\"},\n\t\t{\"SegmentHeader\", Type, 0, \"\"},\n\t\t{\"SegmentHeader.Addr\", Field, 0, \"\"},\n\t\t{\"SegmentHeader.Cmd\", Field, 0, \"\"},\n\t\t{\"SegmentHeader.Filesz\", Field, 0, \"\"},\n\t\t{\"SegmentHeader.Flag\", Field, 0, \"\"},\n\t\t{\"SegmentHeader.Len\", Field, 0, \"\"},\n\t\t{\"SegmentHeader.Maxprot\", Field, 0, \"\"},\n\t\t{\"SegmentHeader.Memsz\", Field, 0, \"\"},\n\t\t{\"SegmentHeader.Name\", Field, 0, \"\"},\n\t\t{\"SegmentHeader.Nsect\", Field, 0, \"\"},\n\t\t{\"SegmentHeader.Offset\", Field, 0, \"\"},\n\t\t{\"SegmentHeader.Prot\", Field, 0, \"\"},\n\t\t{\"Symbol\", Type, 0, \"\"},\n\t\t{\"Symbol.Desc\", Field, 0, \"\"},\n\t\t{\"Symbol.Name\", Field, 0, \"\"},\n\t\t{\"Symbol.Sect\", Field, 0, \"\"},\n\t\t{\"Symbol.Type\", Field, 0, \"\"},\n\t\t{\"Symbol.Value\", Field, 0, \"\"},\n\t\t{\"Symtab\", Type, 0, \"\"},\n\t\t{\"Symtab.LoadBytes\", Field, 0, \"\"},\n\t\t{\"Symtab.Syms\", Field, 0, \"\"},\n\t\t{\"Symtab.SymtabCmd\", Field, 0, \"\"},\n\t\t{\"SymtabCmd\", Type, 0, \"\"},\n\t\t{\"SymtabCmd.Cmd\", Field, 0, \"\"},\n\t\t{\"SymtabCmd.Len\", Field, 0, \"\"},\n\t\t{\"SymtabCmd.Nsyms\", Field, 0, \"\"},\n\t\t{\"SymtabCmd.Stroff\", Field, 0, \"\"},\n\t\t{\"SymtabCmd.Strsize\", Field, 0, \"\"},\n\t\t{\"SymtabCmd.Symoff\", Field, 0, \"\"},\n\t\t{\"Thread\", Type, 0, \"\"},\n\t\t{\"Thread.Cmd\", Field, 0, \"\"},\n\t\t{\"Thread.Data\", Field, 0, \"\"},\n\t\t{\"Thread.Len\", Field, 0, \"\"},\n\t\t{\"Thread.Type\", Field, 0, \"\"},\n\t\t{\"Type\", Type, 0, \"\"},\n\t\t{\"TypeBundle\", Const, 3, \"\"},\n\t\t{\"TypeDylib\", Const, 3, \"\"},\n\t\t{\"TypeExec\", Const, 0, \"\"},\n\t\t{\"TypeObj\", Const, 0, \"\"},\n\t\t{\"X86_64_RELOC_BRANCH\", Const, 10, \"\"},\n\t\t{\"X86_64_RELOC_GOT\", Const, 10, \"\"},\n\t\t{\"X86_64_RELOC_GOT_LOAD\", Const, 10, \"\"},\n\t\t{\"X86_64_RELOC_SIGNED\", Const, 10, \"\"},\n\t\t{\"X86_64_RELOC_SIGNED_1\", Const, 10, \"\"},\n\t\t{\"X86_64_RELOC_SIGNED_2\", Const, 10, \"\"},\n\t\t{\"X86_64_RELOC_SIGNED_4\", Const, 10, \"\"},\n\t\t{\"X86_64_RELOC_SUBTRACTOR\", Const, 10, \"\"},\n\t\t{\"X86_64_RELOC_TLV\", Const, 10, \"\"},\n\t\t{\"X86_64_RELOC_UNSIGNED\", Const, 10, \"\"},\n\t},\n\t\"debug/pe\": {\n\t\t{\"(*COFFSymbol).FullName\", Method, 8, \"\"},\n\t\t{\"(*File).COFFSymbolReadSectionDefAux\", Method, 19, \"\"},\n\t\t{\"(*File).Close\", Method, 0, \"\"},\n\t\t{\"(*File).DWARF\", Method, 0, \"\"},\n\t\t{\"(*File).ImportedLibraries\", Method, 0, \"\"},\n\t\t{\"(*File).ImportedSymbols\", Method, 0, \"\"},\n\t\t{\"(*File).Section\", Method, 0, \"\"},\n\t\t{\"(*FormatError).Error\", Method, 0, \"\"},\n\t\t{\"(*Section).Data\", Method, 0, \"\"},\n\t\t{\"(*Section).Open\", Method, 0, \"\"},\n\t\t{\"(Section).ReadAt\", Method, 0, \"\"},\n\t\t{\"(StringTable).String\", Method, 8, \"\"},\n\t\t{\"COFFSymbol\", Type, 1, \"\"},\n\t\t{\"COFFSymbol.Name\", Field, 1, \"\"},\n\t\t{\"COFFSymbol.NumberOfAuxSymbols\", Field, 1, \"\"},\n\t\t{\"COFFSymbol.SectionNumber\", Field, 1, \"\"},\n\t\t{\"COFFSymbol.StorageClass\", Field, 1, \"\"},\n\t\t{\"COFFSymbol.Type\", Field, 1, \"\"},\n\t\t{\"COFFSymbol.Value\", Field, 1, \"\"},\n\t\t{\"COFFSymbolAuxFormat5\", Type, 19, \"\"},\n\t\t{\"COFFSymbolAuxFormat5.Checksum\", Field, 19, \"\"},\n\t\t{\"COFFSymbolAuxFormat5.NumLineNumbers\", Field, 19, \"\"},\n\t\t{\"COFFSymbolAuxFormat5.NumRelocs\", Field, 19, \"\"},\n\t\t{\"COFFSymbolAuxFormat5.SecNum\", Field, 19, \"\"},\n\t\t{\"COFFSymbolAuxFormat5.Selection\", Field, 19, \"\"},\n\t\t{\"COFFSymbolAuxFormat5.Size\", Field, 19, \"\"},\n\t\t{\"COFFSymbolSize\", Const, 1, \"\"},\n\t\t{\"DataDirectory\", Type, 3, \"\"},\n\t\t{\"DataDirectory.Size\", Field, 3, \"\"},\n\t\t{\"DataDirectory.VirtualAddress\", Field, 3, \"\"},\n\t\t{\"File\", Type, 0, \"\"},\n\t\t{\"File.COFFSymbols\", Field, 8, \"\"},\n\t\t{\"File.FileHeader\", Field, 0, \"\"},\n\t\t{\"File.OptionalHeader\", Field, 3, \"\"},\n\t\t{\"File.Sections\", Field, 0, \"\"},\n\t\t{\"File.StringTable\", Field, 8, \"\"},\n\t\t{\"File.Symbols\", Field, 1, \"\"},\n\t\t{\"FileHeader\", Type, 0, \"\"},\n\t\t{\"FileHeader.Characteristics\", Field, 0, \"\"},\n\t\t{\"FileHeader.Machine\", Field, 0, \"\"},\n\t\t{\"FileHeader.NumberOfSections\", Field, 0, \"\"},\n\t\t{\"FileHeader.NumberOfSymbols\", Field, 0, \"\"},\n\t\t{\"FileHeader.PointerToSymbolTable\", Field, 0, \"\"},\n\t\t{\"FileHeader.SizeOfOptionalHeader\", Field, 0, \"\"},\n\t\t{\"FileHeader.TimeDateStamp\", Field, 0, \"\"},\n\t\t{\"FormatError\", Type, 0, \"\"},\n\t\t{\"IMAGE_COMDAT_SELECT_ANY\", Const, 19, \"\"},\n\t\t{\"IMAGE_COMDAT_SELECT_ASSOCIATIVE\", Const, 19, \"\"},\n\t\t{\"IMAGE_COMDAT_SELECT_EXACT_MATCH\", Const, 19, \"\"},\n\t\t{\"IMAGE_COMDAT_SELECT_LARGEST\", Const, 19, \"\"},\n\t\t{\"IMAGE_COMDAT_SELECT_NODUPLICATES\", Const, 19, \"\"},\n\t\t{\"IMAGE_COMDAT_SELECT_SAME_SIZE\", Const, 19, \"\"},\n\t\t{\"IMAGE_DIRECTORY_ENTRY_ARCHITECTURE\", Const, 11, \"\"},\n\t\t{\"IMAGE_DIRECTORY_ENTRY_BASERELOC\", Const, 11, \"\"},\n\t\t{\"IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT\", Const, 11, \"\"},\n\t\t{\"IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR\", Const, 11, \"\"},\n\t\t{\"IMAGE_DIRECTORY_ENTRY_DEBUG\", Const, 11, \"\"},\n\t\t{\"IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT\", Const, 11, \"\"},\n\t\t{\"IMAGE_DIRECTORY_ENTRY_EXCEPTION\", Const, 11, \"\"},\n\t\t{\"IMAGE_DIRECTORY_ENTRY_EXPORT\", Const, 11, \"\"},\n\t\t{\"IMAGE_DIRECTORY_ENTRY_GLOBALPTR\", Const, 11, \"\"},\n\t\t{\"IMAGE_DIRECTORY_ENTRY_IAT\", Const, 11, \"\"},\n\t\t{\"IMAGE_DIRECTORY_ENTRY_IMPORT\", Const, 11, \"\"},\n\t\t{\"IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG\", Const, 11, \"\"},\n\t\t{\"IMAGE_DIRECTORY_ENTRY_RESOURCE\", Const, 11, \"\"},\n\t\t{\"IMAGE_DIRECTORY_ENTRY_SECURITY\", Const, 11, \"\"},\n\t\t{\"IMAGE_DIRECTORY_ENTRY_TLS\", Const, 11, \"\"},\n\t\t{\"IMAGE_DLLCHARACTERISTICS_APPCONTAINER\", Const, 15, \"\"},\n\t\t{\"IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE\", Const, 15, \"\"},\n\t\t{\"IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY\", Const, 15, \"\"},\n\t\t{\"IMAGE_DLLCHARACTERISTICS_GUARD_CF\", Const, 15, \"\"},\n\t\t{\"IMAGE_DLLCHARACTERISTICS_HIGH_ENTROPY_VA\", Const, 15, \"\"},\n\t\t{\"IMAGE_DLLCHARACTERISTICS_NO_BIND\", Const, 15, \"\"},\n\t\t{\"IMAGE_DLLCHARACTERISTICS_NO_ISOLATION\", Const, 15, \"\"},\n\t\t{\"IMAGE_DLLCHARACTERISTICS_NO_SEH\", Const, 15, \"\"},\n\t\t{\"IMAGE_DLLCHARACTERISTICS_NX_COMPAT\", Const, 15, \"\"},\n\t\t{\"IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE\", Const, 15, \"\"},\n\t\t{\"IMAGE_DLLCHARACTERISTICS_WDM_DRIVER\", Const, 15, \"\"},\n\t\t{\"IMAGE_FILE_32BIT_MACHINE\", Const, 15, \"\"},\n\t\t{\"IMAGE_FILE_AGGRESIVE_WS_TRIM\", Const, 15, \"\"},\n\t\t{\"IMAGE_FILE_BYTES_REVERSED_HI\", Const, 15, \"\"},\n\t\t{\"IMAGE_FILE_BYTES_REVERSED_LO\", Const, 15, \"\"},\n\t\t{\"IMAGE_FILE_DEBUG_STRIPPED\", Const, 15, \"\"},\n\t\t{\"IMAGE_FILE_DLL\", Const, 15, \"\"},\n\t\t{\"IMAGE_FILE_EXECUTABLE_IMAGE\", Const, 15, \"\"},\n\t\t{\"IMAGE_FILE_LARGE_ADDRESS_AWARE\", Const, 15, \"\"},\n\t\t{\"IMAGE_FILE_LINE_NUMS_STRIPPED\", Const, 15, \"\"},\n\t\t{\"IMAGE_FILE_LOCAL_SYMS_STRIPPED\", Const, 15, \"\"},\n\t\t{\"IMAGE_FILE_MACHINE_AM33\", Const, 0, \"\"},\n\t\t{\"IMAGE_FILE_MACHINE_AMD64\", Const, 0, \"\"},\n\t\t{\"IMAGE_FILE_MACHINE_ARM\", Const, 0, \"\"},\n\t\t{\"IMAGE_FILE_MACHINE_ARM64\", Const, 11, \"\"},\n\t\t{\"IMAGE_FILE_MACHINE_ARMNT\", Const, 12, \"\"},\n\t\t{\"IMAGE_FILE_MACHINE_EBC\", Const, 0, \"\"},\n\t\t{\"IMAGE_FILE_MACHINE_I386\", Const, 0, \"\"},\n\t\t{\"IMAGE_FILE_MACHINE_IA64\", Const, 0, \"\"},\n\t\t{\"IMAGE_FILE_MACHINE_LOONGARCH32\", Const, 19, \"\"},\n\t\t{\"IMAGE_FILE_MACHINE_LOONGARCH64\", Const, 19, \"\"},\n\t\t{\"IMAGE_FILE_MACHINE_M32R\", Const, 0, \"\"},\n\t\t{\"IMAGE_FILE_MACHINE_MIPS16\", Const, 0, \"\"},\n\t\t{\"IMAGE_FILE_MACHINE_MIPSFPU\", Const, 0, \"\"},\n\t\t{\"IMAGE_FILE_MACHINE_MIPSFPU16\", Const, 0, \"\"},\n\t\t{\"IMAGE_FILE_MACHINE_POWERPC\", Const, 0, \"\"},\n\t\t{\"IMAGE_FILE_MACHINE_POWERPCFP\", Const, 0, \"\"},\n\t\t{\"IMAGE_FILE_MACHINE_R4000\", Const, 0, \"\"},\n\t\t{\"IMAGE_FILE_MACHINE_RISCV128\", Const, 20, \"\"},\n\t\t{\"IMAGE_FILE_MACHINE_RISCV32\", Const, 20, \"\"},\n\t\t{\"IMAGE_FILE_MACHINE_RISCV64\", Const, 20, \"\"},\n\t\t{\"IMAGE_FILE_MACHINE_SH3\", Const, 0, \"\"},\n\t\t{\"IMAGE_FILE_MACHINE_SH3DSP\", Const, 0, \"\"},\n\t\t{\"IMAGE_FILE_MACHINE_SH4\", Const, 0, \"\"},\n\t\t{\"IMAGE_FILE_MACHINE_SH5\", Const, 0, \"\"},\n\t\t{\"IMAGE_FILE_MACHINE_THUMB\", Const, 0, \"\"},\n\t\t{\"IMAGE_FILE_MACHINE_UNKNOWN\", Const, 0, \"\"},\n\t\t{\"IMAGE_FILE_MACHINE_WCEMIPSV2\", Const, 0, \"\"},\n\t\t{\"IMAGE_FILE_NET_RUN_FROM_SWAP\", Const, 15, \"\"},\n\t\t{\"IMAGE_FILE_RELOCS_STRIPPED\", Const, 15, \"\"},\n\t\t{\"IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP\", Const, 15, \"\"},\n\t\t{\"IMAGE_FILE_SYSTEM\", Const, 15, \"\"},\n\t\t{\"IMAGE_FILE_UP_SYSTEM_ONLY\", Const, 15, \"\"},\n\t\t{\"IMAGE_SCN_CNT_CODE\", Const, 19, \"\"},\n\t\t{\"IMAGE_SCN_CNT_INITIALIZED_DATA\", Const, 19, \"\"},\n\t\t{\"IMAGE_SCN_CNT_UNINITIALIZED_DATA\", Const, 19, \"\"},\n\t\t{\"IMAGE_SCN_LNK_COMDAT\", Const, 19, \"\"},\n\t\t{\"IMAGE_SCN_MEM_DISCARDABLE\", Const, 19, \"\"},\n\t\t{\"IMAGE_SCN_MEM_EXECUTE\", Const, 19, \"\"},\n\t\t{\"IMAGE_SCN_MEM_READ\", Const, 19, \"\"},\n\t\t{\"IMAGE_SCN_MEM_WRITE\", Const, 19, \"\"},\n\t\t{\"IMAGE_SUBSYSTEM_EFI_APPLICATION\", Const, 15, \"\"},\n\t\t{\"IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER\", Const, 15, \"\"},\n\t\t{\"IMAGE_SUBSYSTEM_EFI_ROM\", Const, 15, \"\"},\n\t\t{\"IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER\", Const, 15, \"\"},\n\t\t{\"IMAGE_SUBSYSTEM_NATIVE\", Const, 15, \"\"},\n\t\t{\"IMAGE_SUBSYSTEM_NATIVE_WINDOWS\", Const, 15, \"\"},\n\t\t{\"IMAGE_SUBSYSTEM_OS2_CUI\", Const, 15, \"\"},\n\t\t{\"IMAGE_SUBSYSTEM_POSIX_CUI\", Const, 15, \"\"},\n\t\t{\"IMAGE_SUBSYSTEM_UNKNOWN\", Const, 15, \"\"},\n\t\t{\"IMAGE_SUBSYSTEM_WINDOWS_BOOT_APPLICATION\", Const, 15, \"\"},\n\t\t{\"IMAGE_SUBSYSTEM_WINDOWS_CE_GUI\", Const, 15, \"\"},\n\t\t{\"IMAGE_SUBSYSTEM_WINDOWS_CUI\", Const, 15, \"\"},\n\t\t{\"IMAGE_SUBSYSTEM_WINDOWS_GUI\", Const, 15, \"\"},\n\t\t{\"IMAGE_SUBSYSTEM_XBOX\", Const, 15, \"\"},\n\t\t{\"ImportDirectory\", Type, 0, \"\"},\n\t\t{\"ImportDirectory.FirstThunk\", Field, 0, \"\"},\n\t\t{\"ImportDirectory.ForwarderChain\", Field, 0, \"\"},\n\t\t{\"ImportDirectory.Name\", Field, 0, \"\"},\n\t\t{\"ImportDirectory.OriginalFirstThunk\", Field, 0, \"\"},\n\t\t{\"ImportDirectory.TimeDateStamp\", Field, 0, \"\"},\n\t\t{\"NewFile\", Func, 0, \"func(r io.ReaderAt) (*File, error)\"},\n\t\t{\"Open\", Func, 0, \"func(name string) (*File, error)\"},\n\t\t{\"OptionalHeader32\", Type, 3, \"\"},\n\t\t{\"OptionalHeader32.AddressOfEntryPoint\", Field, 3, \"\"},\n\t\t{\"OptionalHeader32.BaseOfCode\", Field, 3, \"\"},\n\t\t{\"OptionalHeader32.BaseOfData\", Field, 3, \"\"},\n\t\t{\"OptionalHeader32.CheckSum\", Field, 3, \"\"},\n\t\t{\"OptionalHeader32.DataDirectory\", Field, 3, \"\"},\n\t\t{\"OptionalHeader32.DllCharacteristics\", Field, 3, \"\"},\n\t\t{\"OptionalHeader32.FileAlignment\", Field, 3, \"\"},\n\t\t{\"OptionalHeader32.ImageBase\", Field, 3, \"\"},\n\t\t{\"OptionalHeader32.LoaderFlags\", Field, 3, \"\"},\n\t\t{\"OptionalHeader32.Magic\", Field, 3, \"\"},\n\t\t{\"OptionalHeader32.MajorImageVersion\", Field, 3, \"\"},\n\t\t{\"OptionalHeader32.MajorLinkerVersion\", Field, 3, \"\"},\n\t\t{\"OptionalHeader32.MajorOperatingSystemVersion\", Field, 3, \"\"},\n\t\t{\"OptionalHeader32.MajorSubsystemVersion\", Field, 3, \"\"},\n\t\t{\"OptionalHeader32.MinorImageVersion\", Field, 3, \"\"},\n\t\t{\"OptionalHeader32.MinorLinkerVersion\", Field, 3, \"\"},\n\t\t{\"OptionalHeader32.MinorOperatingSystemVersion\", Field, 3, \"\"},\n\t\t{\"OptionalHeader32.MinorSubsystemVersion\", Field, 3, \"\"},\n\t\t{\"OptionalHeader32.NumberOfRvaAndSizes\", Field, 3, \"\"},\n\t\t{\"OptionalHeader32.SectionAlignment\", Field, 3, \"\"},\n\t\t{\"OptionalHeader32.SizeOfCode\", Field, 3, \"\"},\n\t\t{\"OptionalHeader32.SizeOfHeaders\", Field, 3, \"\"},\n\t\t{\"OptionalHeader32.SizeOfHeapCommit\", Field, 3, \"\"},\n\t\t{\"OptionalHeader32.SizeOfHeapReserve\", Field, 3, \"\"},\n\t\t{\"OptionalHeader32.SizeOfImage\", Field, 3, \"\"},\n\t\t{\"OptionalHeader32.SizeOfInitializedData\", Field, 3, \"\"},\n\t\t{\"OptionalHeader32.SizeOfStackCommit\", Field, 3, \"\"},\n\t\t{\"OptionalHeader32.SizeOfStackReserve\", Field, 3, \"\"},\n\t\t{\"OptionalHeader32.SizeOfUninitializedData\", Field, 3, \"\"},\n\t\t{\"OptionalHeader32.Subsystem\", Field, 3, \"\"},\n\t\t{\"OptionalHeader32.Win32VersionValue\", Field, 3, \"\"},\n\t\t{\"OptionalHeader64\", Type, 3, \"\"},\n\t\t{\"OptionalHeader64.AddressOfEntryPoint\", Field, 3, \"\"},\n\t\t{\"OptionalHeader64.BaseOfCode\", Field, 3, \"\"},\n\t\t{\"OptionalHeader64.CheckSum\", Field, 3, \"\"},\n\t\t{\"OptionalHeader64.DataDirectory\", Field, 3, \"\"},\n\t\t{\"OptionalHeader64.DllCharacteristics\", Field, 3, \"\"},\n\t\t{\"OptionalHeader64.FileAlignment\", Field, 3, \"\"},\n\t\t{\"OptionalHeader64.ImageBase\", Field, 3, \"\"},\n\t\t{\"OptionalHeader64.LoaderFlags\", Field, 3, \"\"},\n\t\t{\"OptionalHeader64.Magic\", Field, 3, \"\"},\n\t\t{\"OptionalHeader64.MajorImageVersion\", Field, 3, \"\"},\n\t\t{\"OptionalHeader64.MajorLinkerVersion\", Field, 3, \"\"},\n\t\t{\"OptionalHeader64.MajorOperatingSystemVersion\", Field, 3, \"\"},\n\t\t{\"OptionalHeader64.MajorSubsystemVersion\", Field, 3, \"\"},\n\t\t{\"OptionalHeader64.MinorImageVersion\", Field, 3, \"\"},\n\t\t{\"OptionalHeader64.MinorLinkerVersion\", Field, 3, \"\"},\n\t\t{\"OptionalHeader64.MinorOperatingSystemVersion\", Field, 3, \"\"},\n\t\t{\"OptionalHeader64.MinorSubsystemVersion\", Field, 3, \"\"},\n\t\t{\"OptionalHeader64.NumberOfRvaAndSizes\", Field, 3, \"\"},\n\t\t{\"OptionalHeader64.SectionAlignment\", Field, 3, \"\"},\n\t\t{\"OptionalHeader64.SizeOfCode\", Field, 3, \"\"},\n\t\t{\"OptionalHeader64.SizeOfHeaders\", Field, 3, \"\"},\n\t\t{\"OptionalHeader64.SizeOfHeapCommit\", Field, 3, \"\"},\n\t\t{\"OptionalHeader64.SizeOfHeapReserve\", Field, 3, \"\"},\n\t\t{\"OptionalHeader64.SizeOfImage\", Field, 3, \"\"},\n\t\t{\"OptionalHeader64.SizeOfInitializedData\", Field, 3, \"\"},\n\t\t{\"OptionalHeader64.SizeOfStackCommit\", Field, 3, \"\"},\n\t\t{\"OptionalHeader64.SizeOfStackReserve\", Field, 3, \"\"},\n\t\t{\"OptionalHeader64.SizeOfUninitializedData\", Field, 3, \"\"},\n\t\t{\"OptionalHeader64.Subsystem\", Field, 3, \"\"},\n\t\t{\"OptionalHeader64.Win32VersionValue\", Field, 3, \"\"},\n\t\t{\"Reloc\", Type, 8, \"\"},\n\t\t{\"Reloc.SymbolTableIndex\", Field, 8, \"\"},\n\t\t{\"Reloc.Type\", Field, 8, \"\"},\n\t\t{\"Reloc.VirtualAddress\", Field, 8, \"\"},\n\t\t{\"Section\", Type, 0, \"\"},\n\t\t{\"Section.ReaderAt\", Field, 0, \"\"},\n\t\t{\"Section.Relocs\", Field, 8, \"\"},\n\t\t{\"Section.SectionHeader\", Field, 0, \"\"},\n\t\t{\"SectionHeader\", Type, 0, \"\"},\n\t\t{\"SectionHeader.Characteristics\", Field, 0, \"\"},\n\t\t{\"SectionHeader.Name\", Field, 0, \"\"},\n\t\t{\"SectionHeader.NumberOfLineNumbers\", Field, 0, \"\"},\n\t\t{\"SectionHeader.NumberOfRelocations\", Field, 0, \"\"},\n\t\t{\"SectionHeader.Offset\", Field, 0, \"\"},\n\t\t{\"SectionHeader.PointerToLineNumbers\", Field, 0, \"\"},\n\t\t{\"SectionHeader.PointerToRelocations\", Field, 0, \"\"},\n\t\t{\"SectionHeader.Size\", Field, 0, \"\"},\n\t\t{\"SectionHeader.VirtualAddress\", Field, 0, \"\"},\n\t\t{\"SectionHeader.VirtualSize\", Field, 0, \"\"},\n\t\t{\"SectionHeader32\", Type, 0, \"\"},\n\t\t{\"SectionHeader32.Characteristics\", Field, 0, \"\"},\n\t\t{\"SectionHeader32.Name\", Field, 0, \"\"},\n\t\t{\"SectionHeader32.NumberOfLineNumbers\", Field, 0, \"\"},\n\t\t{\"SectionHeader32.NumberOfRelocations\", Field, 0, \"\"},\n\t\t{\"SectionHeader32.PointerToLineNumbers\", Field, 0, \"\"},\n\t\t{\"SectionHeader32.PointerToRawData\", Field, 0, \"\"},\n\t\t{\"SectionHeader32.PointerToRelocations\", Field, 0, \"\"},\n\t\t{\"SectionHeader32.SizeOfRawData\", Field, 0, \"\"},\n\t\t{\"SectionHeader32.VirtualAddress\", Field, 0, \"\"},\n\t\t{\"SectionHeader32.VirtualSize\", Field, 0, \"\"},\n\t\t{\"StringTable\", Type, 8, \"\"},\n\t\t{\"Symbol\", Type, 1, \"\"},\n\t\t{\"Symbol.Name\", Field, 1, \"\"},\n\t\t{\"Symbol.SectionNumber\", Field, 1, \"\"},\n\t\t{\"Symbol.StorageClass\", Field, 1, \"\"},\n\t\t{\"Symbol.Type\", Field, 1, \"\"},\n\t\t{\"Symbol.Value\", Field, 1, \"\"},\n\t},\n\t\"debug/plan9obj\": {\n\t\t{\"(*File).Close\", Method, 3, \"\"},\n\t\t{\"(*File).Section\", Method, 3, \"\"},\n\t\t{\"(*File).Symbols\", Method, 3, \"\"},\n\t\t{\"(*Section).Data\", Method, 3, \"\"},\n\t\t{\"(*Section).Open\", Method, 3, \"\"},\n\t\t{\"(Section).ReadAt\", Method, 3, \"\"},\n\t\t{\"ErrNoSymbols\", Var, 18, \"\"},\n\t\t{\"File\", Type, 3, \"\"},\n\t\t{\"File.FileHeader\", Field, 3, \"\"},\n\t\t{\"File.Sections\", Field, 3, \"\"},\n\t\t{\"FileHeader\", Type, 3, \"\"},\n\t\t{\"FileHeader.Bss\", Field, 3, \"\"},\n\t\t{\"FileHeader.Entry\", Field, 3, \"\"},\n\t\t{\"FileHeader.HdrSize\", Field, 4, \"\"},\n\t\t{\"FileHeader.LoadAddress\", Field, 4, \"\"},\n\t\t{\"FileHeader.Magic\", Field, 3, \"\"},\n\t\t{\"FileHeader.PtrSize\", Field, 3, \"\"},\n\t\t{\"Magic386\", Const, 3, \"\"},\n\t\t{\"Magic64\", Const, 3, \"\"},\n\t\t{\"MagicAMD64\", Const, 3, \"\"},\n\t\t{\"MagicARM\", Const, 3, \"\"},\n\t\t{\"NewFile\", Func, 3, \"func(r io.ReaderAt) (*File, error)\"},\n\t\t{\"Open\", Func, 3, \"func(name string) (*File, error)\"},\n\t\t{\"Section\", Type, 3, \"\"},\n\t\t{\"Section.ReaderAt\", Field, 3, \"\"},\n\t\t{\"Section.SectionHeader\", Field, 3, \"\"},\n\t\t{\"SectionHeader\", Type, 3, \"\"},\n\t\t{\"SectionHeader.Name\", Field, 3, \"\"},\n\t\t{\"SectionHeader.Offset\", Field, 3, \"\"},\n\t\t{\"SectionHeader.Size\", Field, 3, \"\"},\n\t\t{\"Sym\", Type, 3, \"\"},\n\t\t{\"Sym.Name\", Field, 3, \"\"},\n\t\t{\"Sym.Type\", Field, 3, \"\"},\n\t\t{\"Sym.Value\", Field, 3, \"\"},\n\t},\n\t\"embed\": {\n\t\t{\"(FS).Open\", Method, 16, \"\"},\n\t\t{\"(FS).ReadDir\", Method, 16, \"\"},\n\t\t{\"(FS).ReadFile\", Method, 16, \"\"},\n\t\t{\"FS\", Type, 16, \"\"},\n\t},\n\t\"encoding\": {\n\t\t{\"(BinaryAppender).AppendBinary\", Method, 24, \"\"},\n\t\t{\"(BinaryMarshaler).MarshalBinary\", Method, 2, \"\"},\n\t\t{\"(BinaryUnmarshaler).UnmarshalBinary\", Method, 2, \"\"},\n\t\t{\"(TextAppender).AppendText\", Method, 24, \"\"},\n\t\t{\"(TextMarshaler).MarshalText\", Method, 2, \"\"},\n\t\t{\"(TextUnmarshaler).UnmarshalText\", Method, 2, \"\"},\n\t\t{\"BinaryAppender\", Type, 24, \"\"},\n\t\t{\"BinaryMarshaler\", Type, 2, \"\"},\n\t\t{\"BinaryUnmarshaler\", Type, 2, \"\"},\n\t\t{\"TextAppender\", Type, 24, \"\"},\n\t\t{\"TextMarshaler\", Type, 2, \"\"},\n\t\t{\"TextUnmarshaler\", Type, 2, \"\"},\n\t},\n\t\"encoding/ascii85\": {\n\t\t{\"(CorruptInputError).Error\", Method, 0, \"\"},\n\t\t{\"CorruptInputError\", Type, 0, \"\"},\n\t\t{\"Decode\", Func, 0, \"func(dst []byte, src []byte, flush bool) (ndst int, nsrc int, err error)\"},\n\t\t{\"Encode\", Func, 0, \"func(dst []byte, src []byte) int\"},\n\t\t{\"MaxEncodedLen\", Func, 0, \"func(n int) int\"},\n\t\t{\"NewDecoder\", Func, 0, \"func(r io.Reader) io.Reader\"},\n\t\t{\"NewEncoder\", Func, 0, \"func(w io.Writer) io.WriteCloser\"},\n\t},\n\t\"encoding/asn1\": {\n\t\t{\"(BitString).At\", Method, 0, \"\"},\n\t\t{\"(BitString).RightAlign\", Method, 0, \"\"},\n\t\t{\"(ObjectIdentifier).Equal\", Method, 0, \"\"},\n\t\t{\"(ObjectIdentifier).String\", Method, 3, \"\"},\n\t\t{\"(StructuralError).Error\", Method, 0, \"\"},\n\t\t{\"(SyntaxError).Error\", Method, 0, \"\"},\n\t\t{\"BitString\", Type, 0, \"\"},\n\t\t{\"BitString.BitLength\", Field, 0, \"\"},\n\t\t{\"BitString.Bytes\", Field, 0, \"\"},\n\t\t{\"ClassApplication\", Const, 6, \"\"},\n\t\t{\"ClassContextSpecific\", Const, 6, \"\"},\n\t\t{\"ClassPrivate\", Const, 6, \"\"},\n\t\t{\"ClassUniversal\", Const, 6, \"\"},\n\t\t{\"Enumerated\", Type, 0, \"\"},\n\t\t{\"Flag\", Type, 0, \"\"},\n\t\t{\"Marshal\", Func, 0, \"func(val any) ([]byte, error)\"},\n\t\t{\"MarshalWithParams\", Func, 10, \"func(val any, params string) ([]byte, error)\"},\n\t\t{\"NullBytes\", Var, 9, \"\"},\n\t\t{\"NullRawValue\", Var, 9, \"\"},\n\t\t{\"ObjectIdentifier\", Type, 0, \"\"},\n\t\t{\"RawContent\", Type, 0, \"\"},\n\t\t{\"RawValue\", Type, 0, \"\"},\n\t\t{\"RawValue.Bytes\", Field, 0, \"\"},\n\t\t{\"RawValue.Class\", Field, 0, \"\"},\n\t\t{\"RawValue.FullBytes\", Field, 0, \"\"},\n\t\t{\"RawValue.IsCompound\", Field, 0, \"\"},\n\t\t{\"RawValue.Tag\", Field, 0, \"\"},\n\t\t{\"StructuralError\", Type, 0, \"\"},\n\t\t{\"StructuralError.Msg\", Field, 0, \"\"},\n\t\t{\"SyntaxError\", Type, 0, \"\"},\n\t\t{\"SyntaxError.Msg\", Field, 0, \"\"},\n\t\t{\"TagBMPString\", Const, 14, \"\"},\n\t\t{\"TagBitString\", Const, 6, \"\"},\n\t\t{\"TagBoolean\", Const, 6, \"\"},\n\t\t{\"TagEnum\", Const, 6, \"\"},\n\t\t{\"TagGeneralString\", Const, 6, \"\"},\n\t\t{\"TagGeneralizedTime\", Const, 6, \"\"},\n\t\t{\"TagIA5String\", Const, 6, \"\"},\n\t\t{\"TagInteger\", Const, 6, \"\"},\n\t\t{\"TagNull\", Const, 9, \"\"},\n\t\t{\"TagNumericString\", Const, 10, \"\"},\n\t\t{\"TagOID\", Const, 6, \"\"},\n\t\t{\"TagOctetString\", Const, 6, \"\"},\n\t\t{\"TagPrintableString\", Const, 6, \"\"},\n\t\t{\"TagSequence\", Const, 6, \"\"},\n\t\t{\"TagSet\", Const, 6, \"\"},\n\t\t{\"TagT61String\", Const, 6, \"\"},\n\t\t{\"TagUTCTime\", Const, 6, \"\"},\n\t\t{\"TagUTF8String\", Const, 6, \"\"},\n\t\t{\"Unmarshal\", Func, 0, \"func(b []byte, val any) (rest []byte, err error)\"},\n\t\t{\"UnmarshalWithParams\", Func, 0, \"func(b []byte, val any, params string) (rest []byte, err error)\"},\n\t},\n\t\"encoding/base32\": {\n\t\t{\"(*Encoding).AppendDecode\", Method, 22, \"\"},\n\t\t{\"(*Encoding).AppendEncode\", Method, 22, \"\"},\n\t\t{\"(*Encoding).Decode\", Method, 0, \"\"},\n\t\t{\"(*Encoding).DecodeString\", Method, 0, \"\"},\n\t\t{\"(*Encoding).DecodedLen\", Method, 0, \"\"},\n\t\t{\"(*Encoding).Encode\", Method, 0, \"\"},\n\t\t{\"(*Encoding).EncodeToString\", Method, 0, \"\"},\n\t\t{\"(*Encoding).EncodedLen\", Method, 0, \"\"},\n\t\t{\"(CorruptInputError).Error\", Method, 0, \"\"},\n\t\t{\"(Encoding).WithPadding\", Method, 9, \"\"},\n\t\t{\"CorruptInputError\", Type, 0, \"\"},\n\t\t{\"Encoding\", Type, 0, \"\"},\n\t\t{\"HexEncoding\", Var, 0, \"\"},\n\t\t{\"NewDecoder\", Func, 0, \"func(enc *Encoding, r io.Reader) io.Reader\"},\n\t\t{\"NewEncoder\", Func, 0, \"func(enc *Encoding, w io.Writer) io.WriteCloser\"},\n\t\t{\"NewEncoding\", Func, 0, \"func(encoder string) *Encoding\"},\n\t\t{\"NoPadding\", Const, 9, \"\"},\n\t\t{\"StdEncoding\", Var, 0, \"\"},\n\t\t{\"StdPadding\", Const, 9, \"\"},\n\t},\n\t\"encoding/base64\": {\n\t\t{\"(*Encoding).AppendDecode\", Method, 22, \"\"},\n\t\t{\"(*Encoding).AppendEncode\", Method, 22, \"\"},\n\t\t{\"(*Encoding).Decode\", Method, 0, \"\"},\n\t\t{\"(*Encoding).DecodeString\", Method, 0, \"\"},\n\t\t{\"(*Encoding).DecodedLen\", Method, 0, \"\"},\n\t\t{\"(*Encoding).Encode\", Method, 0, \"\"},\n\t\t{\"(*Encoding).EncodeToString\", Method, 0, \"\"},\n\t\t{\"(*Encoding).EncodedLen\", Method, 0, \"\"},\n\t\t{\"(CorruptInputError).Error\", Method, 0, \"\"},\n\t\t{\"(Encoding).Strict\", Method, 8, \"\"},\n\t\t{\"(Encoding).WithPadding\", Method, 5, \"\"},\n\t\t{\"CorruptInputError\", Type, 0, \"\"},\n\t\t{\"Encoding\", Type, 0, \"\"},\n\t\t{\"NewDecoder\", Func, 0, \"func(enc *Encoding, r io.Reader) io.Reader\"},\n\t\t{\"NewEncoder\", Func, 0, \"func(enc *Encoding, w io.Writer) io.WriteCloser\"},\n\t\t{\"NewEncoding\", Func, 0, \"func(encoder string) *Encoding\"},\n\t\t{\"NoPadding\", Const, 5, \"\"},\n\t\t{\"RawStdEncoding\", Var, 5, \"\"},\n\t\t{\"RawURLEncoding\", Var, 5, \"\"},\n\t\t{\"StdEncoding\", Var, 0, \"\"},\n\t\t{\"StdPadding\", Const, 5, \"\"},\n\t\t{\"URLEncoding\", Var, 0, \"\"},\n\t},\n\t\"encoding/binary\": {\n\t\t{\"(AppendByteOrder).AppendUint16\", Method, 19, \"\"},\n\t\t{\"(AppendByteOrder).AppendUint32\", Method, 19, \"\"},\n\t\t{\"(AppendByteOrder).AppendUint64\", Method, 19, \"\"},\n\t\t{\"(AppendByteOrder).String\", Method, 19, \"\"},\n\t\t{\"(ByteOrder).PutUint16\", Method, 0, \"\"},\n\t\t{\"(ByteOrder).PutUint32\", Method, 0, \"\"},\n\t\t{\"(ByteOrder).PutUint64\", Method, 0, \"\"},\n\t\t{\"(ByteOrder).String\", Method, 0, \"\"},\n\t\t{\"(ByteOrder).Uint16\", Method, 0, \"\"},\n\t\t{\"(ByteOrder).Uint32\", Method, 0, \"\"},\n\t\t{\"(ByteOrder).Uint64\", Method, 0, \"\"},\n\t\t{\"Append\", Func, 23, \"func(buf []byte, order ByteOrder, data any) ([]byte, error)\"},\n\t\t{\"AppendByteOrder\", Type, 19, \"\"},\n\t\t{\"AppendUvarint\", Func, 19, \"func(buf []byte, x uint64) []byte\"},\n\t\t{\"AppendVarint\", Func, 19, \"func(buf []byte, x int64) []byte\"},\n\t\t{\"BigEndian\", Var, 0, \"\"},\n\t\t{\"ByteOrder\", Type, 0, \"\"},\n\t\t{\"Decode\", Func, 23, \"func(buf []byte, order ByteOrder, data any) (int, error)\"},\n\t\t{\"Encode\", Func, 23, \"func(buf []byte, order ByteOrder, data any) (int, error)\"},\n\t\t{\"LittleEndian\", Var, 0, \"\"},\n\t\t{\"MaxVarintLen16\", Const, 0, \"\"},\n\t\t{\"MaxVarintLen32\", Const, 0, \"\"},\n\t\t{\"MaxVarintLen64\", Const, 0, \"\"},\n\t\t{\"NativeEndian\", Var, 21, \"\"},\n\t\t{\"PutUvarint\", Func, 0, \"func(buf []byte, x uint64) int\"},\n\t\t{\"PutVarint\", Func, 0, \"func(buf []byte, x int64) int\"},\n\t\t{\"Read\", Func, 0, \"func(r io.Reader, order ByteOrder, data any) error\"},\n\t\t{\"ReadUvarint\", Func, 0, \"func(r io.ByteReader) (uint64, error)\"},\n\t\t{\"ReadVarint\", Func, 0, \"func(r io.ByteReader) (int64, error)\"},\n\t\t{\"Size\", Func, 0, \"func(v any) int\"},\n\t\t{\"Uvarint\", Func, 0, \"func(buf []byte) (uint64, int)\"},\n\t\t{\"Varint\", Func, 0, \"func(buf []byte) (int64, int)\"},\n\t\t{\"Write\", Func, 0, \"func(w io.Writer, order ByteOrder, data any) error\"},\n\t},\n\t\"encoding/csv\": {\n\t\t{\"(*ParseError).Error\", Method, 0, \"\"},\n\t\t{\"(*ParseError).Unwrap\", Method, 13, \"\"},\n\t\t{\"(*Reader).FieldPos\", Method, 17, \"\"},\n\t\t{\"(*Reader).InputOffset\", Method, 19, \"\"},\n\t\t{\"(*Reader).Read\", Method, 0, \"\"},\n\t\t{\"(*Reader).ReadAll\", Method, 0, \"\"},\n\t\t{\"(*Writer).Error\", Method, 1, \"\"},\n\t\t{\"(*Writer).Flush\", Method, 0, \"\"},\n\t\t{\"(*Writer).Write\", Method, 0, \"\"},\n\t\t{\"(*Writer).WriteAll\", Method, 0, \"\"},\n\t\t{\"ErrBareQuote\", Var, 0, \"\"},\n\t\t{\"ErrFieldCount\", Var, 0, \"\"},\n\t\t{\"ErrQuote\", Var, 0, \"\"},\n\t\t{\"ErrTrailingComma\", Var, 0, \"\"},\n\t\t{\"NewReader\", Func, 0, \"func(r io.Reader) *Reader\"},\n\t\t{\"NewWriter\", Func, 0, \"func(w io.Writer) *Writer\"},\n\t\t{\"ParseError\", Type, 0, \"\"},\n\t\t{\"ParseError.Column\", Field, 0, \"\"},\n\t\t{\"ParseError.Err\", Field, 0, \"\"},\n\t\t{\"ParseError.Line\", Field, 0, \"\"},\n\t\t{\"ParseError.StartLine\", Field, 10, \"\"},\n\t\t{\"Reader\", Type, 0, \"\"},\n\t\t{\"Reader.Comma\", Field, 0, \"\"},\n\t\t{\"Reader.Comment\", Field, 0, \"\"},\n\t\t{\"Reader.FieldsPerRecord\", Field, 0, \"\"},\n\t\t{\"Reader.LazyQuotes\", Field, 0, \"\"},\n\t\t{\"Reader.ReuseRecord\", Field, 9, \"\"},\n\t\t{\"Reader.TrailingComma\", Field, 0, \"\"},\n\t\t{\"Reader.TrimLeadingSpace\", Field, 0, \"\"},\n\t\t{\"Writer\", Type, 0, \"\"},\n\t\t{\"Writer.Comma\", Field, 0, \"\"},\n\t\t{\"Writer.UseCRLF\", Field, 0, \"\"},\n\t},\n\t\"encoding/gob\": {\n\t\t{\"(*Decoder).Decode\", Method, 0, \"\"},\n\t\t{\"(*Decoder).DecodeValue\", Method, 0, \"\"},\n\t\t{\"(*Encoder).Encode\", Method, 0, \"\"},\n\t\t{\"(*Encoder).EncodeValue\", Method, 0, \"\"},\n\t\t{\"(GobDecoder).GobDecode\", Method, 0, \"\"},\n\t\t{\"(GobEncoder).GobEncode\", Method, 0, \"\"},\n\t\t{\"CommonType\", Type, 0, \"\"},\n\t\t{\"CommonType.Id\", Field, 0, \"\"},\n\t\t{\"CommonType.Name\", Field, 0, \"\"},\n\t\t{\"Decoder\", Type, 0, \"\"},\n\t\t{\"Encoder\", Type, 0, \"\"},\n\t\t{\"GobDecoder\", Type, 0, \"\"},\n\t\t{\"GobEncoder\", Type, 0, \"\"},\n\t\t{\"NewDecoder\", Func, 0, \"func(r io.Reader) *Decoder\"},\n\t\t{\"NewEncoder\", Func, 0, \"func(w io.Writer) *Encoder\"},\n\t\t{\"Register\", Func, 0, \"func(value any)\"},\n\t\t{\"RegisterName\", Func, 0, \"func(name string, value any)\"},\n\t},\n\t\"encoding/hex\": {\n\t\t{\"(InvalidByteError).Error\", Method, 0, \"\"},\n\t\t{\"AppendDecode\", Func, 22, \"func(dst []byte, src []byte) ([]byte, error)\"},\n\t\t{\"AppendEncode\", Func, 22, \"func(dst []byte, src []byte) []byte\"},\n\t\t{\"Decode\", Func, 0, \"func(dst []byte, src []byte) (int, error)\"},\n\t\t{\"DecodeString\", Func, 0, \"func(s string) ([]byte, error)\"},\n\t\t{\"DecodedLen\", Func, 0, \"func(x int) int\"},\n\t\t{\"Dump\", Func, 0, \"func(data []byte) string\"},\n\t\t{\"Dumper\", Func, 0, \"func(w io.Writer) io.WriteCloser\"},\n\t\t{\"Encode\", Func, 0, \"func(dst []byte, src []byte) int\"},\n\t\t{\"EncodeToString\", Func, 0, \"func(src []byte) string\"},\n\t\t{\"EncodedLen\", Func, 0, \"func(n int) int\"},\n\t\t{\"ErrLength\", Var, 0, \"\"},\n\t\t{\"InvalidByteError\", Type, 0, \"\"},\n\t\t{\"NewDecoder\", Func, 10, \"func(r io.Reader) io.Reader\"},\n\t\t{\"NewEncoder\", Func, 10, \"func(w io.Writer) io.Writer\"},\n\t},\n\t\"encoding/json\": {\n\t\t{\"(*Decoder).Buffered\", Method, 1, \"\"},\n\t\t{\"(*Decoder).Decode\", Method, 0, \"\"},\n\t\t{\"(*Decoder).DisallowUnknownFields\", Method, 10, \"\"},\n\t\t{\"(*Decoder).InputOffset\", Method, 14, \"\"},\n\t\t{\"(*Decoder).More\", Method, 5, \"\"},\n\t\t{\"(*Decoder).Token\", Method, 5, \"\"},\n\t\t{\"(*Decoder).UseNumber\", Method, 1, \"\"},\n\t\t{\"(*Encoder).Encode\", Method, 0, \"\"},\n\t\t{\"(*Encoder).SetEscapeHTML\", Method, 7, \"\"},\n\t\t{\"(*Encoder).SetIndent\", Method, 7, \"\"},\n\t\t{\"(*InvalidUTF8Error).Error\", Method, 0, \"\"},\n\t\t{\"(*InvalidUnmarshalError).Error\", Method, 0, \"\"},\n\t\t{\"(*MarshalerError).Error\", Method, 0, \"\"},\n\t\t{\"(*MarshalerError).Unwrap\", Method, 13, \"\"},\n\t\t{\"(*RawMessage).MarshalJSON\", Method, 0, \"\"},\n\t\t{\"(*RawMessage).UnmarshalJSON\", Method, 0, \"\"},\n\t\t{\"(*SyntaxError).Error\", Method, 0, \"\"},\n\t\t{\"(*UnmarshalFieldError).Error\", Method, 0, \"\"},\n\t\t{\"(*UnmarshalTypeError).Error\", Method, 0, \"\"},\n\t\t{\"(*UnsupportedTypeError).Error\", Method, 0, \"\"},\n\t\t{\"(*UnsupportedValueError).Error\", Method, 0, \"\"},\n\t\t{\"(Delim).String\", Method, 5, \"\"},\n\t\t{\"(Marshaler).MarshalJSON\", Method, 0, \"\"},\n\t\t{\"(Number).Float64\", Method, 1, \"\"},\n\t\t{\"(Number).Int64\", Method, 1, \"\"},\n\t\t{\"(Number).String\", Method, 1, \"\"},\n\t\t{\"(RawMessage).MarshalJSON\", Method, 8, \"\"},\n\t\t{\"(Unmarshaler).UnmarshalJSON\", Method, 0, \"\"},\n\t\t{\"Compact\", Func, 0, \"func(dst *bytes.Buffer, src []byte) error\"},\n\t\t{\"Decoder\", Type, 0, \"\"},\n\t\t{\"Delim\", Type, 5, \"\"},\n\t\t{\"Encoder\", Type, 0, \"\"},\n\t\t{\"HTMLEscape\", Func, 0, \"func(dst *bytes.Buffer, src []byte)\"},\n\t\t{\"Indent\", Func, 0, \"func(dst *bytes.Buffer, src []byte, prefix string, indent string) error\"},\n\t\t{\"InvalidUTF8Error\", Type, 0, \"\"},\n\t\t{\"InvalidUTF8Error.S\", Field, 0, \"\"},\n\t\t{\"InvalidUnmarshalError\", Type, 0, \"\"},\n\t\t{\"InvalidUnmarshalError.Type\", Field, 0, \"\"},\n\t\t{\"Marshal\", Func, 0, \"func(v any) ([]byte, error)\"},\n\t\t{\"MarshalIndent\", Func, 0, \"func(v any, prefix string, indent string) ([]byte, error)\"},\n\t\t{\"Marshaler\", Type, 0, \"\"},\n\t\t{\"MarshalerError\", Type, 0, \"\"},\n\t\t{\"MarshalerError.Err\", Field, 0, \"\"},\n\t\t{\"MarshalerError.Type\", Field, 0, \"\"},\n\t\t{\"NewDecoder\", Func, 0, \"func(r io.Reader) *Decoder\"},\n\t\t{\"NewEncoder\", Func, 0, \"func(w io.Writer) *Encoder\"},\n\t\t{\"Number\", Type, 1, \"\"},\n\t\t{\"RawMessage\", Type, 0, \"\"},\n\t\t{\"SyntaxError\", Type, 0, \"\"},\n\t\t{\"SyntaxError.Offset\", Field, 0, \"\"},\n\t\t{\"Token\", Type, 5, \"\"},\n\t\t{\"Unmarshal\", Func, 0, \"func(data []byte, v any) error\"},\n\t\t{\"UnmarshalFieldError\", Type, 0, \"\"},\n\t\t{\"UnmarshalFieldError.Field\", Field, 0, \"\"},\n\t\t{\"UnmarshalFieldError.Key\", Field, 0, \"\"},\n\t\t{\"UnmarshalFieldError.Type\", Field, 0, \"\"},\n\t\t{\"UnmarshalTypeError\", Type, 0, \"\"},\n\t\t{\"UnmarshalTypeError.Field\", Field, 8, \"\"},\n\t\t{\"UnmarshalTypeError.Offset\", Field, 5, \"\"},\n\t\t{\"UnmarshalTypeError.Struct\", Field, 8, \"\"},\n\t\t{\"UnmarshalTypeError.Type\", Field, 0, \"\"},\n\t\t{\"UnmarshalTypeError.Value\", Field, 0, \"\"},\n\t\t{\"Unmarshaler\", Type, 0, \"\"},\n\t\t{\"UnsupportedTypeError\", Type, 0, \"\"},\n\t\t{\"UnsupportedTypeError.Type\", Field, 0, \"\"},\n\t\t{\"UnsupportedValueError\", Type, 0, \"\"},\n\t\t{\"UnsupportedValueError.Str\", Field, 0, \"\"},\n\t\t{\"UnsupportedValueError.Value\", Field, 0, \"\"},\n\t\t{\"Valid\", Func, 9, \"func(data []byte) bool\"},\n\t},\n\t\"encoding/pem\": {\n\t\t{\"Block\", Type, 0, \"\"},\n\t\t{\"Block.Bytes\", Field, 0, \"\"},\n\t\t{\"Block.Headers\", Field, 0, \"\"},\n\t\t{\"Block.Type\", Field, 0, \"\"},\n\t\t{\"Decode\", Func, 0, \"func(data []byte) (p *Block, rest []byte)\"},\n\t\t{\"Encode\", Func, 0, \"func(out io.Writer, b *Block) error\"},\n\t\t{\"EncodeToMemory\", Func, 0, \"func(b *Block) []byte\"},\n\t},\n\t\"encoding/xml\": {\n\t\t{\"(*Decoder).Decode\", Method, 0, \"\"},\n\t\t{\"(*Decoder).DecodeElement\", Method, 0, \"\"},\n\t\t{\"(*Decoder).InputOffset\", Method, 4, \"\"},\n\t\t{\"(*Decoder).InputPos\", Method, 19, \"\"},\n\t\t{\"(*Decoder).RawToken\", Method, 0, \"\"},\n\t\t{\"(*Decoder).Skip\", Method, 0, \"\"},\n\t\t{\"(*Decoder).Token\", Method, 0, \"\"},\n\t\t{\"(*Encoder).Close\", Method, 20, \"\"},\n\t\t{\"(*Encoder).Encode\", Method, 0, \"\"},\n\t\t{\"(*Encoder).EncodeElement\", Method, 2, \"\"},\n\t\t{\"(*Encoder).EncodeToken\", Method, 2, \"\"},\n\t\t{\"(*Encoder).Flush\", Method, 2, \"\"},\n\t\t{\"(*Encoder).Indent\", Method, 1, \"\"},\n\t\t{\"(*SyntaxError).Error\", Method, 0, \"\"},\n\t\t{\"(*TagPathError).Error\", Method, 0, \"\"},\n\t\t{\"(*UnsupportedTypeError).Error\", Method, 0, \"\"},\n\t\t{\"(CharData).Copy\", Method, 0, \"\"},\n\t\t{\"(Comment).Copy\", Method, 0, \"\"},\n\t\t{\"(Directive).Copy\", Method, 0, \"\"},\n\t\t{\"(Marshaler).MarshalXML\", Method, 2, \"\"},\n\t\t{\"(MarshalerAttr).MarshalXMLAttr\", Method, 2, \"\"},\n\t\t{\"(ProcInst).Copy\", Method, 0, \"\"},\n\t\t{\"(StartElement).Copy\", Method, 0, \"\"},\n\t\t{\"(StartElement).End\", Method, 2, \"\"},\n\t\t{\"(TokenReader).Token\", Method, 10, \"\"},\n\t\t{\"(UnmarshalError).Error\", Method, 0, \"\"},\n\t\t{\"(Unmarshaler).UnmarshalXML\", Method, 2, \"\"},\n\t\t{\"(UnmarshalerAttr).UnmarshalXMLAttr\", Method, 2, \"\"},\n\t\t{\"Attr\", Type, 0, \"\"},\n\t\t{\"Attr.Name\", Field, 0, \"\"},\n\t\t{\"Attr.Value\", Field, 0, \"\"},\n\t\t{\"CharData\", Type, 0, \"\"},\n\t\t{\"Comment\", Type, 0, \"\"},\n\t\t{\"CopyToken\", Func, 0, \"func(t Token) Token\"},\n\t\t{\"Decoder\", Type, 0, \"\"},\n\t\t{\"Decoder.AutoClose\", Field, 0, \"\"},\n\t\t{\"Decoder.CharsetReader\", Field, 0, \"\"},\n\t\t{\"Decoder.DefaultSpace\", Field, 1, \"\"},\n\t\t{\"Decoder.Entity\", Field, 0, \"\"},\n\t\t{\"Decoder.Strict\", Field, 0, \"\"},\n\t\t{\"Directive\", Type, 0, \"\"},\n\t\t{\"Encoder\", Type, 0, \"\"},\n\t\t{\"EndElement\", Type, 0, \"\"},\n\t\t{\"EndElement.Name\", Field, 0, \"\"},\n\t\t{\"Escape\", Func, 0, \"func(w io.Writer, s []byte)\"},\n\t\t{\"EscapeText\", Func, 1, \"func(w io.Writer, s []byte) error\"},\n\t\t{\"HTMLAutoClose\", Var, 0, \"\"},\n\t\t{\"HTMLEntity\", Var, 0, \"\"},\n\t\t{\"Header\", Const, 0, \"\"},\n\t\t{\"Marshal\", Func, 0, \"func(v any) ([]byte, error)\"},\n\t\t{\"MarshalIndent\", Func, 0, \"func(v any, prefix string, indent string) ([]byte, error)\"},\n\t\t{\"Marshaler\", Type, 2, \"\"},\n\t\t{\"MarshalerAttr\", Type, 2, \"\"},\n\t\t{\"Name\", Type, 0, \"\"},\n\t\t{\"Name.Local\", Field, 0, \"\"},\n\t\t{\"Name.Space\", Field, 0, \"\"},\n\t\t{\"NewDecoder\", Func, 0, \"func(r io.Reader) *Decoder\"},\n\t\t{\"NewEncoder\", Func, 0, \"func(w io.Writer) *Encoder\"},\n\t\t{\"NewTokenDecoder\", Func, 10, \"func(t TokenReader) *Decoder\"},\n\t\t{\"ProcInst\", Type, 0, \"\"},\n\t\t{\"ProcInst.Inst\", Field, 0, \"\"},\n\t\t{\"ProcInst.Target\", Field, 0, \"\"},\n\t\t{\"StartElement\", Type, 0, \"\"},\n\t\t{\"StartElement.Attr\", Field, 0, \"\"},\n\t\t{\"StartElement.Name\", Field, 0, \"\"},\n\t\t{\"SyntaxError\", Type, 0, \"\"},\n\t\t{\"SyntaxError.Line\", Field, 0, \"\"},\n\t\t{\"SyntaxError.Msg\", Field, 0, \"\"},\n\t\t{\"TagPathError\", Type, 0, \"\"},\n\t\t{\"TagPathError.Field1\", Field, 0, \"\"},\n\t\t{\"TagPathError.Field2\", Field, 0, \"\"},\n\t\t{\"TagPathError.Struct\", Field, 0, \"\"},\n\t\t{\"TagPathError.Tag1\", Field, 0, \"\"},\n\t\t{\"TagPathError.Tag2\", Field, 0, \"\"},\n\t\t{\"Token\", Type, 0, \"\"},\n\t\t{\"TokenReader\", Type, 10, \"\"},\n\t\t{\"Unmarshal\", Func, 0, \"func(data []byte, v any) error\"},\n\t\t{\"UnmarshalError\", Type, 0, \"\"},\n\t\t{\"Unmarshaler\", Type, 2, \"\"},\n\t\t{\"UnmarshalerAttr\", Type, 2, \"\"},\n\t\t{\"UnsupportedTypeError\", Type, 0, \"\"},\n\t\t{\"UnsupportedTypeError.Type\", Field, 0, \"\"},\n\t},\n\t\"errors\": {\n\t\t{\"As\", Func, 13, \"func(err error, target any) bool\"},\n\t\t{\"AsType\", Func, 26, \"func[E error](err error) (E, bool)\"},\n\t\t{\"ErrUnsupported\", Var, 21, \"\"},\n\t\t{\"Is\", Func, 13, \"func(err error, target error) bool\"},\n\t\t{\"Join\", Func, 20, \"func(errs ...error) error\"},\n\t\t{\"New\", Func, 0, \"func(text string) error\"},\n\t\t{\"Unwrap\", Func, 13, \"func(err error) error\"},\n\t},\n\t\"expvar\": {\n\t\t{\"(*Float).Add\", Method, 0, \"\"},\n\t\t{\"(*Float).Set\", Method, 0, \"\"},\n\t\t{\"(*Float).String\", Method, 0, \"\"},\n\t\t{\"(*Float).Value\", Method, 8, \"\"},\n\t\t{\"(*Int).Add\", Method, 0, \"\"},\n\t\t{\"(*Int).Set\", Method, 0, \"\"},\n\t\t{\"(*Int).String\", Method, 0, \"\"},\n\t\t{\"(*Int).Value\", Method, 8, \"\"},\n\t\t{\"(*Map).Add\", Method, 0, \"\"},\n\t\t{\"(*Map).AddFloat\", Method, 0, \"\"},\n\t\t{\"(*Map).Delete\", Method, 12, \"\"},\n\t\t{\"(*Map).Do\", Method, 0, \"\"},\n\t\t{\"(*Map).Get\", Method, 0, \"\"},\n\t\t{\"(*Map).Init\", Method, 0, \"\"},\n\t\t{\"(*Map).Set\", Method, 0, \"\"},\n\t\t{\"(*Map).String\", Method, 0, \"\"},\n\t\t{\"(*String).Set\", Method, 0, \"\"},\n\t\t{\"(*String).String\", Method, 0, \"\"},\n\t\t{\"(*String).Value\", Method, 8, \"\"},\n\t\t{\"(Func).String\", Method, 0, \"\"},\n\t\t{\"(Func).Value\", Method, 8, \"\"},\n\t\t{\"(Var).String\", Method, 0, \"\"},\n\t\t{\"Do\", Func, 0, \"func(f func(KeyValue))\"},\n\t\t{\"Float\", Type, 0, \"\"},\n\t\t{\"Func\", Type, 0, \"\"},\n\t\t{\"Get\", Func, 0, \"func(name string) Var\"},\n\t\t{\"Handler\", Func, 8, \"func() http.Handler\"},\n\t\t{\"Int\", Type, 0, \"\"},\n\t\t{\"KeyValue\", Type, 0, \"\"},\n\t\t{\"KeyValue.Key\", Field, 0, \"\"},\n\t\t{\"KeyValue.Value\", Field, 0, \"\"},\n\t\t{\"Map\", Type, 0, \"\"},\n\t\t{\"NewFloat\", Func, 0, \"func(name string) *Float\"},\n\t\t{\"NewInt\", Func, 0, \"func(name string) *Int\"},\n\t\t{\"NewMap\", Func, 0, \"func(name string) *Map\"},\n\t\t{\"NewString\", Func, 0, \"func(name string) *String\"},\n\t\t{\"Publish\", Func, 0, \"func(name string, v Var)\"},\n\t\t{\"String\", Type, 0, \"\"},\n\t\t{\"Var\", Type, 0, \"\"},\n\t},\n\t\"flag\": {\n\t\t{\"(*FlagSet).Arg\", Method, 0, \"\"},\n\t\t{\"(*FlagSet).Args\", Method, 0, \"\"},\n\t\t{\"(*FlagSet).Bool\", Method, 0, \"\"},\n\t\t{\"(*FlagSet).BoolFunc\", Method, 21, \"\"},\n\t\t{\"(*FlagSet).BoolVar\", Method, 0, \"\"},\n\t\t{\"(*FlagSet).Duration\", Method, 0, \"\"},\n\t\t{\"(*FlagSet).DurationVar\", Method, 0, \"\"},\n\t\t{\"(*FlagSet).ErrorHandling\", Method, 10, \"\"},\n\t\t{\"(*FlagSet).Float64\", Method, 0, \"\"},\n\t\t{\"(*FlagSet).Float64Var\", Method, 0, \"\"},\n\t\t{\"(*FlagSet).Func\", Method, 16, \"\"},\n\t\t{\"(*FlagSet).Init\", Method, 0, \"\"},\n\t\t{\"(*FlagSet).Int\", Method, 0, \"\"},\n\t\t{\"(*FlagSet).Int64\", Method, 0, \"\"},\n\t\t{\"(*FlagSet).Int64Var\", Method, 0, \"\"},\n\t\t{\"(*FlagSet).IntVar\", Method, 0, \"\"},\n\t\t{\"(*FlagSet).Lookup\", Method, 0, \"\"},\n\t\t{\"(*FlagSet).NArg\", Method, 0, \"\"},\n\t\t{\"(*FlagSet).NFlag\", Method, 0, \"\"},\n\t\t{\"(*FlagSet).Name\", Method, 10, \"\"},\n\t\t{\"(*FlagSet).Output\", Method, 10, \"\"},\n\t\t{\"(*FlagSet).Parse\", Method, 0, \"\"},\n\t\t{\"(*FlagSet).Parsed\", Method, 0, \"\"},\n\t\t{\"(*FlagSet).PrintDefaults\", Method, 0, \"\"},\n\t\t{\"(*FlagSet).Set\", Method, 0, \"\"},\n\t\t{\"(*FlagSet).SetOutput\", Method, 0, \"\"},\n\t\t{\"(*FlagSet).String\", Method, 0, \"\"},\n\t\t{\"(*FlagSet).StringVar\", Method, 0, \"\"},\n\t\t{\"(*FlagSet).TextVar\", Method, 19, \"\"},\n\t\t{\"(*FlagSet).Uint\", Method, 0, \"\"},\n\t\t{\"(*FlagSet).Uint64\", Method, 0, \"\"},\n\t\t{\"(*FlagSet).Uint64Var\", Method, 0, \"\"},\n\t\t{\"(*FlagSet).UintVar\", Method, 0, \"\"},\n\t\t{\"(*FlagSet).Var\", Method, 0, \"\"},\n\t\t{\"(*FlagSet).Visit\", Method, 0, \"\"},\n\t\t{\"(*FlagSet).VisitAll\", Method, 0, \"\"},\n\t\t{\"(Getter).Get\", Method, 2, \"\"},\n\t\t{\"(Getter).Set\", Method, 2, \"\"},\n\t\t{\"(Getter).String\", Method, 2, \"\"},\n\t\t{\"(Value).Set\", Method, 0, \"\"},\n\t\t{\"(Value).String\", Method, 0, \"\"},\n\t\t{\"Arg\", Func, 0, \"func(i int) string\"},\n\t\t{\"Args\", Func, 0, \"func() []string\"},\n\t\t{\"Bool\", Func, 0, \"func(name string, value bool, usage string) *bool\"},\n\t\t{\"BoolFunc\", Func, 21, \"func(name string, usage string, fn func(string) error)\"},\n\t\t{\"BoolVar\", Func, 0, \"func(p *bool, name string, value bool, usage string)\"},\n\t\t{\"CommandLine\", Var, 2, \"\"},\n\t\t{\"ContinueOnError\", Const, 0, \"\"},\n\t\t{\"Duration\", Func, 0, \"func(name string, value time.Duration, usage string) *time.Duration\"},\n\t\t{\"DurationVar\", Func, 0, \"func(p *time.Duration, name string, value time.Duration, usage string)\"},\n\t\t{\"ErrHelp\", Var, 0, \"\"},\n\t\t{\"ErrorHandling\", Type, 0, \"\"},\n\t\t{\"ExitOnError\", Const, 0, \"\"},\n\t\t{\"Flag\", Type, 0, \"\"},\n\t\t{\"Flag.DefValue\", Field, 0, \"\"},\n\t\t{\"Flag.Name\", Field, 0, \"\"},\n\t\t{\"Flag.Usage\", Field, 0, \"\"},\n\t\t{\"Flag.Value\", Field, 0, \"\"},\n\t\t{\"FlagSet\", Type, 0, \"\"},\n\t\t{\"FlagSet.Usage\", Field, 0, \"\"},\n\t\t{\"Float64\", Func, 0, \"func(name string, value float64, usage string) *float64\"},\n\t\t{\"Float64Var\", Func, 0, \"func(p *float64, name string, value float64, usage string)\"},\n\t\t{\"Func\", Func, 16, \"func(name string, usage string, fn func(string) error)\"},\n\t\t{\"Getter\", Type, 2, \"\"},\n\t\t{\"Int\", Func, 0, \"func(name string, value int, usage string) *int\"},\n\t\t{\"Int64\", Func, 0, \"func(name string, value int64, usage string) *int64\"},\n\t\t{\"Int64Var\", Func, 0, \"func(p *int64, name string, value int64, usage string)\"},\n\t\t{\"IntVar\", Func, 0, \"func(p *int, name string, value int, usage string)\"},\n\t\t{\"Lookup\", Func, 0, \"func(name string) *Flag\"},\n\t\t{\"NArg\", Func, 0, \"func() int\"},\n\t\t{\"NFlag\", Func, 0, \"func() int\"},\n\t\t{\"NewFlagSet\", Func, 0, \"func(name string, errorHandling ErrorHandling) *FlagSet\"},\n\t\t{\"PanicOnError\", Const, 0, \"\"},\n\t\t{\"Parse\", Func, 0, \"func()\"},\n\t\t{\"Parsed\", Func, 0, \"func() bool\"},\n\t\t{\"PrintDefaults\", Func, 0, \"func()\"},\n\t\t{\"Set\", Func, 0, \"func(name string, value string) error\"},\n\t\t{\"String\", Func, 0, \"func(name string, value string, usage string) *string\"},\n\t\t{\"StringVar\", Func, 0, \"func(p *string, name string, value string, usage string)\"},\n\t\t{\"TextVar\", Func, 19, \"func(p encoding.TextUnmarshaler, name string, value encoding.TextMarshaler, usage string)\"},\n\t\t{\"Uint\", Func, 0, \"func(name string, value uint, usage string) *uint\"},\n\t\t{\"Uint64\", Func, 0, \"func(name string, value uint64, usage string) *uint64\"},\n\t\t{\"Uint64Var\", Func, 0, \"func(p *uint64, name string, value uint64, usage string)\"},\n\t\t{\"UintVar\", Func, 0, \"func(p *uint, name string, value uint, usage string)\"},\n\t\t{\"UnquoteUsage\", Func, 5, \"func(flag *Flag) (name string, usage string)\"},\n\t\t{\"Usage\", Var, 0, \"\"},\n\t\t{\"Value\", Type, 0, \"\"},\n\t\t{\"Var\", Func, 0, \"func(value Value, name string, usage string)\"},\n\t\t{\"Visit\", Func, 0, \"func(fn func(*Flag))\"},\n\t\t{\"VisitAll\", Func, 0, \"func(fn func(*Flag))\"},\n\t},\n\t\"fmt\": {\n\t\t{\"(Formatter).Format\", Method, 0, \"\"},\n\t\t{\"(GoStringer).GoString\", Method, 0, \"\"},\n\t\t{\"(ScanState).Read\", Method, 0, \"\"},\n\t\t{\"(ScanState).ReadRune\", Method, 0, \"\"},\n\t\t{\"(ScanState).SkipSpace\", Method, 0, \"\"},\n\t\t{\"(ScanState).Token\", Method, 0, \"\"},\n\t\t{\"(ScanState).UnreadRune\", Method, 0, \"\"},\n\t\t{\"(ScanState).Width\", Method, 0, \"\"},\n\t\t{\"(Scanner).Scan\", Method, 0, \"\"},\n\t\t{\"(State).Flag\", Method, 0, \"\"},\n\t\t{\"(State).Precision\", Method, 0, \"\"},\n\t\t{\"(State).Width\", Method, 0, \"\"},\n\t\t{\"(State).Write\", Method, 0, \"\"},\n\t\t{\"(Stringer).String\", Method, 0, \"\"},\n\t\t{\"Append\", Func, 19, \"func(b []byte, a ...any) []byte\"},\n\t\t{\"Appendf\", Func, 19, \"func(b []byte, format string, a ...any) []byte\"},\n\t\t{\"Appendln\", Func, 19, \"func(b []byte, a ...any) []byte\"},\n\t\t{\"Errorf\", Func, 0, \"func(format string, a ...any) (err error)\"},\n\t\t{\"FormatString\", Func, 20, \"func(state State, verb rune) string\"},\n\t\t{\"Formatter\", Type, 0, \"\"},\n\t\t{\"Fprint\", Func, 0, \"func(w io.Writer, a ...any) (n int, err error)\"},\n\t\t{\"Fprintf\", Func, 0, \"func(w io.Writer, format string, a ...any) (n int, err error)\"},\n\t\t{\"Fprintln\", Func, 0, \"func(w io.Writer, a ...any) (n int, err error)\"},\n\t\t{\"Fscan\", Func, 0, \"func(r io.Reader, a ...any) (n int, err error)\"},\n\t\t{\"Fscanf\", Func, 0, \"func(r io.Reader, format string, a ...any) (n int, err error)\"},\n\t\t{\"Fscanln\", Func, 0, \"func(r io.Reader, a ...any) (n int, err error)\"},\n\t\t{\"GoStringer\", Type, 0, \"\"},\n\t\t{\"Print\", Func, 0, \"func(a ...any) (n int, err error)\"},\n\t\t{\"Printf\", Func, 0, \"func(format string, a ...any) (n int, err error)\"},\n\t\t{\"Println\", Func, 0, \"func(a ...any) (n int, err error)\"},\n\t\t{\"Scan\", Func, 0, \"func(a ...any) (n int, err error)\"},\n\t\t{\"ScanState\", Type, 0, \"\"},\n\t\t{\"Scanf\", Func, 0, \"func(format string, a ...any) (n int, err error)\"},\n\t\t{\"Scanln\", Func, 0, \"func(a ...any) (n int, err error)\"},\n\t\t{\"Scanner\", Type, 0, \"\"},\n\t\t{\"Sprint\", Func, 0, \"func(a ...any) string\"},\n\t\t{\"Sprintf\", Func, 0, \"func(format string, a ...any) string\"},\n\t\t{\"Sprintln\", Func, 0, \"func(a ...any) string\"},\n\t\t{\"Sscan\", Func, 0, \"func(str string, a ...any) (n int, err error)\"},\n\t\t{\"Sscanf\", Func, 0, \"func(str string, format string, a ...any) (n int, err error)\"},\n\t\t{\"Sscanln\", Func, 0, \"func(str string, a ...any) (n int, err error)\"},\n\t\t{\"State\", Type, 0, \"\"},\n\t\t{\"Stringer\", Type, 0, \"\"},\n\t},\n\t\"go/ast\": {\n\t\t{\"(*ArrayType).End\", Method, 0, \"\"},\n\t\t{\"(*ArrayType).Pos\", Method, 0, \"\"},\n\t\t{\"(*AssignStmt).End\", Method, 0, \"\"},\n\t\t{\"(*AssignStmt).Pos\", Method, 0, \"\"},\n\t\t{\"(*BadDecl).End\", Method, 0, \"\"},\n\t\t{\"(*BadDecl).Pos\", Method, 0, \"\"},\n\t\t{\"(*BadExpr).End\", Method, 0, \"\"},\n\t\t{\"(*BadExpr).Pos\", Method, 0, \"\"},\n\t\t{\"(*BadStmt).End\", Method, 0, \"\"},\n\t\t{\"(*BadStmt).Pos\", Method, 0, \"\"},\n\t\t{\"(*BasicLit).End\", Method, 0, \"\"},\n\t\t{\"(*BasicLit).Pos\", Method, 0, \"\"},\n\t\t{\"(*BinaryExpr).End\", Method, 0, \"\"},\n\t\t{\"(*BinaryExpr).Pos\", Method, 0, \"\"},\n\t\t{\"(*BlockStmt).End\", Method, 0, \"\"},\n\t\t{\"(*BlockStmt).Pos\", Method, 0, \"\"},\n\t\t{\"(*BranchStmt).End\", Method, 0, \"\"},\n\t\t{\"(*BranchStmt).Pos\", Method, 0, \"\"},\n\t\t{\"(*CallExpr).End\", Method, 0, \"\"},\n\t\t{\"(*CallExpr).Pos\", Method, 0, \"\"},\n\t\t{\"(*CaseClause).End\", Method, 0, \"\"},\n\t\t{\"(*CaseClause).Pos\", Method, 0, \"\"},\n\t\t{\"(*ChanType).End\", Method, 0, \"\"},\n\t\t{\"(*ChanType).Pos\", Method, 0, \"\"},\n\t\t{\"(*CommClause).End\", Method, 0, \"\"},\n\t\t{\"(*CommClause).Pos\", Method, 0, \"\"},\n\t\t{\"(*Comment).End\", Method, 0, \"\"},\n\t\t{\"(*Comment).Pos\", Method, 0, \"\"},\n\t\t{\"(*CommentGroup).End\", Method, 0, \"\"},\n\t\t{\"(*CommentGroup).Pos\", Method, 0, \"\"},\n\t\t{\"(*CommentGroup).Text\", Method, 0, \"\"},\n\t\t{\"(*CompositeLit).End\", Method, 0, \"\"},\n\t\t{\"(*CompositeLit).Pos\", Method, 0, \"\"},\n\t\t{\"(*DeclStmt).End\", Method, 0, \"\"},\n\t\t{\"(*DeclStmt).Pos\", Method, 0, \"\"},\n\t\t{\"(*DeferStmt).End\", Method, 0, \"\"},\n\t\t{\"(*DeferStmt).Pos\", Method, 0, \"\"},\n\t\t{\"(*Directive).End\", Method, 26, \"\"},\n\t\t{\"(*Directive).ParseArgs\", Method, 26, \"\"},\n\t\t{\"(*Directive).Pos\", Method, 26, \"\"},\n\t\t{\"(*Ellipsis).End\", Method, 0, \"\"},\n\t\t{\"(*Ellipsis).Pos\", Method, 0, \"\"},\n\t\t{\"(*EmptyStmt).End\", Method, 0, \"\"},\n\t\t{\"(*EmptyStmt).Pos\", Method, 0, \"\"},\n\t\t{\"(*ExprStmt).End\", Method, 0, \"\"},\n\t\t{\"(*ExprStmt).Pos\", Method, 0, \"\"},\n\t\t{\"(*Field).End\", Method, 0, \"\"},\n\t\t{\"(*Field).Pos\", Method, 0, \"\"},\n\t\t{\"(*FieldList).End\", Method, 0, \"\"},\n\t\t{\"(*FieldList).NumFields\", Method, 0, \"\"},\n\t\t{\"(*FieldList).Pos\", Method, 0, \"\"},\n\t\t{\"(*File).End\", Method, 0, \"\"},\n\t\t{\"(*File).Pos\", Method, 0, \"\"},\n\t\t{\"(*ForStmt).End\", Method, 0, \"\"},\n\t\t{\"(*ForStmt).Pos\", Method, 0, \"\"},\n\t\t{\"(*FuncDecl).End\", Method, 0, \"\"},\n\t\t{\"(*FuncDecl).Pos\", Method, 0, \"\"},\n\t\t{\"(*FuncLit).End\", Method, 0, \"\"},\n\t\t{\"(*FuncLit).Pos\", Method, 0, \"\"},\n\t\t{\"(*FuncType).End\", Method, 0, \"\"},\n\t\t{\"(*FuncType).Pos\", Method, 0, \"\"},\n\t\t{\"(*GenDecl).End\", Method, 0, \"\"},\n\t\t{\"(*GenDecl).Pos\", Method, 0, \"\"},\n\t\t{\"(*GoStmt).End\", Method, 0, \"\"},\n\t\t{\"(*GoStmt).Pos\", Method, 0, \"\"},\n\t\t{\"(*Ident).End\", Method, 0, \"\"},\n\t\t{\"(*Ident).IsExported\", Method, 0, \"\"},\n\t\t{\"(*Ident).Pos\", Method, 0, \"\"},\n\t\t{\"(*Ident).String\", Method, 0, \"\"},\n\t\t{\"(*IfStmt).End\", Method, 0, \"\"},\n\t\t{\"(*IfStmt).Pos\", Method, 0, \"\"},\n\t\t{\"(*ImportSpec).End\", Method, 0, \"\"},\n\t\t{\"(*ImportSpec).Pos\", Method, 0, \"\"},\n\t\t{\"(*IncDecStmt).End\", Method, 0, \"\"},\n\t\t{\"(*IncDecStmt).Pos\", Method, 0, \"\"},\n\t\t{\"(*IndexExpr).End\", Method, 0, \"\"},\n\t\t{\"(*IndexExpr).Pos\", Method, 0, \"\"},\n\t\t{\"(*IndexListExpr).End\", Method, 18, \"\"},\n\t\t{\"(*IndexListExpr).Pos\", Method, 18, \"\"},\n\t\t{\"(*InterfaceType).End\", Method, 0, \"\"},\n\t\t{\"(*InterfaceType).Pos\", Method, 0, \"\"},\n\t\t{\"(*KeyValueExpr).End\", Method, 0, \"\"},\n\t\t{\"(*KeyValueExpr).Pos\", Method, 0, \"\"},\n\t\t{\"(*LabeledStmt).End\", Method, 0, \"\"},\n\t\t{\"(*LabeledStmt).Pos\", Method, 0, \"\"},\n\t\t{\"(*MapType).End\", Method, 0, \"\"},\n\t\t{\"(*MapType).Pos\", Method, 0, \"\"},\n\t\t{\"(*Object).Pos\", Method, 0, \"\"},\n\t\t{\"(*Package).End\", Method, 0, \"\"},\n\t\t{\"(*Package).Pos\", Method, 0, \"\"},\n\t\t{\"(*ParenExpr).End\", Method, 0, \"\"},\n\t\t{\"(*ParenExpr).Pos\", Method, 0, \"\"},\n\t\t{\"(*RangeStmt).End\", Method, 0, \"\"},\n\t\t{\"(*RangeStmt).Pos\", Method, 0, \"\"},\n\t\t{\"(*ReturnStmt).End\", Method, 0, \"\"},\n\t\t{\"(*ReturnStmt).Pos\", Method, 0, \"\"},\n\t\t{\"(*Scope).Insert\", Method, 0, \"\"},\n\t\t{\"(*Scope).Lookup\", Method, 0, \"\"},\n\t\t{\"(*Scope).String\", Method, 0, \"\"},\n\t\t{\"(*SelectStmt).End\", Method, 0, \"\"},\n\t\t{\"(*SelectStmt).Pos\", Method, 0, \"\"},\n\t\t{\"(*SelectorExpr).End\", Method, 0, \"\"},\n\t\t{\"(*SelectorExpr).Pos\", Method, 0, \"\"},\n\t\t{\"(*SendStmt).End\", Method, 0, \"\"},\n\t\t{\"(*SendStmt).Pos\", Method, 0, \"\"},\n\t\t{\"(*SliceExpr).End\", Method, 0, \"\"},\n\t\t{\"(*SliceExpr).Pos\", Method, 0, \"\"},\n\t\t{\"(*StarExpr).End\", Method, 0, \"\"},\n\t\t{\"(*StarExpr).Pos\", Method, 0, \"\"},\n\t\t{\"(*StructType).End\", Method, 0, \"\"},\n\t\t{\"(*StructType).Pos\", Method, 0, \"\"},\n\t\t{\"(*SwitchStmt).End\", Method, 0, \"\"},\n\t\t{\"(*SwitchStmt).Pos\", Method, 0, \"\"},\n\t\t{\"(*TypeAssertExpr).End\", Method, 0, \"\"},\n\t\t{\"(*TypeAssertExpr).Pos\", Method, 0, \"\"},\n\t\t{\"(*TypeSpec).End\", Method, 0, \"\"},\n\t\t{\"(*TypeSpec).Pos\", Method, 0, \"\"},\n\t\t{\"(*TypeSwitchStmt).End\", Method, 0, \"\"},\n\t\t{\"(*TypeSwitchStmt).Pos\", Method, 0, \"\"},\n\t\t{\"(*UnaryExpr).End\", Method, 0, \"\"},\n\t\t{\"(*UnaryExpr).Pos\", Method, 0, \"\"},\n\t\t{\"(*ValueSpec).End\", Method, 0, \"\"},\n\t\t{\"(*ValueSpec).Pos\", Method, 0, \"\"},\n\t\t{\"(CommentMap).Comments\", Method, 1, \"\"},\n\t\t{\"(CommentMap).Filter\", Method, 1, \"\"},\n\t\t{\"(CommentMap).String\", Method, 1, \"\"},\n\t\t{\"(CommentMap).Update\", Method, 1, \"\"},\n\t\t{\"(Decl).End\", Method, 0, \"\"},\n\t\t{\"(Decl).Pos\", Method, 0, \"\"},\n\t\t{\"(Expr).End\", Method, 0, \"\"},\n\t\t{\"(Expr).Pos\", Method, 0, \"\"},\n\t\t{\"(Node).End\", Method, 0, \"\"},\n\t\t{\"(Node).Pos\", Method, 0, \"\"},\n\t\t{\"(ObjKind).String\", Method, 0, \"\"},\n\t\t{\"(Spec).End\", Method, 0, \"\"},\n\t\t{\"(Spec).Pos\", Method, 0, \"\"},\n\t\t{\"(Stmt).End\", Method, 0, \"\"},\n\t\t{\"(Stmt).Pos\", Method, 0, \"\"},\n\t\t{\"(Visitor).Visit\", Method, 0, \"\"},\n\t\t{\"ArrayType\", Type, 0, \"\"},\n\t\t{\"ArrayType.Elt\", Field, 0, \"\"},\n\t\t{\"ArrayType.Lbrack\", Field, 0, \"\"},\n\t\t{\"ArrayType.Len\", Field, 0, \"\"},\n\t\t{\"AssignStmt\", Type, 0, \"\"},\n\t\t{\"AssignStmt.Lhs\", Field, 0, \"\"},\n\t\t{\"AssignStmt.Rhs\", Field, 0, \"\"},\n\t\t{\"AssignStmt.Tok\", Field, 0, \"\"},\n\t\t{\"AssignStmt.TokPos\", Field, 0, \"\"},\n\t\t{\"Bad\", Const, 0, \"\"},\n\t\t{\"BadDecl\", Type, 0, \"\"},\n\t\t{\"BadDecl.From\", Field, 0, \"\"},\n\t\t{\"BadDecl.To\", Field, 0, \"\"},\n\t\t{\"BadExpr\", Type, 0, \"\"},\n\t\t{\"BadExpr.From\", Field, 0, \"\"},\n\t\t{\"BadExpr.To\", Field, 0, \"\"},\n\t\t{\"BadStmt\", Type, 0, \"\"},\n\t\t{\"BadStmt.From\", Field, 0, \"\"},\n\t\t{\"BadStmt.To\", Field, 0, \"\"},\n\t\t{\"BasicLit\", Type, 0, \"\"},\n\t\t{\"BasicLit.Kind\", Field, 0, \"\"},\n\t\t{\"BasicLit.Value\", Field, 0, \"\"},\n\t\t{\"BasicLit.ValueEnd\", Field, 26, \"\"},\n\t\t{\"BasicLit.ValuePos\", Field, 0, \"\"},\n\t\t{\"BinaryExpr\", Type, 0, \"\"},\n\t\t{\"BinaryExpr.Op\", Field, 0, \"\"},\n\t\t{\"BinaryExpr.OpPos\", Field, 0, \"\"},\n\t\t{\"BinaryExpr.X\", Field, 0, \"\"},\n\t\t{\"BinaryExpr.Y\", Field, 0, \"\"},\n\t\t{\"BlockStmt\", Type, 0, \"\"},\n\t\t{\"BlockStmt.Lbrace\", Field, 0, \"\"},\n\t\t{\"BlockStmt.List\", Field, 0, \"\"},\n\t\t{\"BlockStmt.Rbrace\", Field, 0, \"\"},\n\t\t{\"BranchStmt\", Type, 0, \"\"},\n\t\t{\"BranchStmt.Label\", Field, 0, \"\"},\n\t\t{\"BranchStmt.Tok\", Field, 0, \"\"},\n\t\t{\"BranchStmt.TokPos\", Field, 0, \"\"},\n\t\t{\"CallExpr\", Type, 0, \"\"},\n\t\t{\"CallExpr.Args\", Field, 0, \"\"},\n\t\t{\"CallExpr.Ellipsis\", Field, 0, \"\"},\n\t\t{\"CallExpr.Fun\", Field, 0, \"\"},\n\t\t{\"CallExpr.Lparen\", Field, 0, \"\"},\n\t\t{\"CallExpr.Rparen\", Field, 0, \"\"},\n\t\t{\"CaseClause\", Type, 0, \"\"},\n\t\t{\"CaseClause.Body\", Field, 0, \"\"},\n\t\t{\"CaseClause.Case\", Field, 0, \"\"},\n\t\t{\"CaseClause.Colon\", Field, 0, \"\"},\n\t\t{\"CaseClause.List\", Field, 0, \"\"},\n\t\t{\"ChanDir\", Type, 0, \"\"},\n\t\t{\"ChanType\", Type, 0, \"\"},\n\t\t{\"ChanType.Arrow\", Field, 1, \"\"},\n\t\t{\"ChanType.Begin\", Field, 0, \"\"},\n\t\t{\"ChanType.Dir\", Field, 0, \"\"},\n\t\t{\"ChanType.Value\", Field, 0, \"\"},\n\t\t{\"CommClause\", Type, 0, \"\"},\n\t\t{\"CommClause.Body\", Field, 0, \"\"},\n\t\t{\"CommClause.Case\", Field, 0, \"\"},\n\t\t{\"CommClause.Colon\", Field, 0, \"\"},\n\t\t{\"CommClause.Comm\", Field, 0, \"\"},\n\t\t{\"Comment\", Type, 0, \"\"},\n\t\t{\"Comment.Slash\", Field, 0, \"\"},\n\t\t{\"Comment.Text\", Field, 0, \"\"},\n\t\t{\"CommentGroup\", Type, 0, \"\"},\n\t\t{\"CommentGroup.List\", Field, 0, \"\"},\n\t\t{\"CommentMap\", Type, 1, \"\"},\n\t\t{\"CompositeLit\", Type, 0, \"\"},\n\t\t{\"CompositeLit.Elts\", Field, 0, \"\"},\n\t\t{\"CompositeLit.Incomplete\", Field, 11, \"\"},\n\t\t{\"CompositeLit.Lbrace\", Field, 0, \"\"},\n\t\t{\"CompositeLit.Rbrace\", Field, 0, \"\"},\n\t\t{\"CompositeLit.Type\", Field, 0, \"\"},\n\t\t{\"Con\", Const, 0, \"\"},\n\t\t{\"DeclStmt\", Type, 0, \"\"},\n\t\t{\"DeclStmt.Decl\", Field, 0, \"\"},\n\t\t{\"DeferStmt\", Type, 0, \"\"},\n\t\t{\"DeferStmt.Call\", Field, 0, \"\"},\n\t\t{\"DeferStmt.Defer\", Field, 0, \"\"},\n\t\t{\"Directive\", Type, 26, \"\"},\n\t\t{\"Directive.Args\", Field, 26, \"\"},\n\t\t{\"Directive.ArgsPos\", Field, 26, \"\"},\n\t\t{\"Directive.Name\", Field, 26, \"\"},\n\t\t{\"Directive.Slash\", Field, 26, \"\"},\n\t\t{\"Directive.Tool\", Field, 26, \"\"},\n\t\t{\"DirectiveArg\", Type, 26, \"\"},\n\t\t{\"DirectiveArg.Arg\", Field, 26, \"\"},\n\t\t{\"DirectiveArg.Pos\", Field, 26, \"\"},\n\t\t{\"Ellipsis\", Type, 0, \"\"},\n\t\t{\"Ellipsis.Ellipsis\", Field, 0, \"\"},\n\t\t{\"Ellipsis.Elt\", Field, 0, \"\"},\n\t\t{\"EmptyStmt\", Type, 0, \"\"},\n\t\t{\"EmptyStmt.Implicit\", Field, 5, \"\"},\n\t\t{\"EmptyStmt.Semicolon\", Field, 0, \"\"},\n\t\t{\"ExprStmt\", Type, 0, \"\"},\n\t\t{\"ExprStmt.X\", Field, 0, \"\"},\n\t\t{\"Field\", Type, 0, \"\"},\n\t\t{\"Field.Comment\", Field, 0, \"\"},\n\t\t{\"Field.Doc\", Field, 0, \"\"},\n\t\t{\"Field.Names\", Field, 0, \"\"},\n\t\t{\"Field.Tag\", Field, 0, \"\"},\n\t\t{\"Field.Type\", Field, 0, \"\"},\n\t\t{\"FieldFilter\", Type, 0, \"\"},\n\t\t{\"FieldList\", Type, 0, \"\"},\n\t\t{\"FieldList.Closing\", Field, 0, \"\"},\n\t\t{\"FieldList.List\", Field, 0, \"\"},\n\t\t{\"FieldList.Opening\", Field, 0, \"\"},\n\t\t{\"File\", Type, 0, \"\"},\n\t\t{\"File.Comments\", Field, 0, \"\"},\n\t\t{\"File.Decls\", Field, 0, \"\"},\n\t\t{\"File.Doc\", Field, 0, \"\"},\n\t\t{\"File.FileEnd\", Field, 20, \"\"},\n\t\t{\"File.FileStart\", Field, 20, \"\"},\n\t\t{\"File.GoVersion\", Field, 21, \"\"},\n\t\t{\"File.Imports\", Field, 0, \"\"},\n\t\t{\"File.Name\", Field, 0, \"\"},\n\t\t{\"File.Package\", Field, 0, \"\"},\n\t\t{\"File.Scope\", Field, 0, \"\"},\n\t\t{\"File.Unresolved\", Field, 0, \"\"},\n\t\t{\"FileExports\", Func, 0, \"func(src *File) bool\"},\n\t\t{\"Filter\", Type, 0, \"\"},\n\t\t{\"FilterDecl\", Func, 0, \"func(decl Decl, f Filter) bool\"},\n\t\t{\"FilterFile\", Func, 0, \"func(src *File, f Filter) bool\"},\n\t\t{\"FilterFuncDuplicates\", Const, 0, \"\"},\n\t\t{\"FilterImportDuplicates\", Const, 0, \"\"},\n\t\t{\"FilterPackage\", Func, 0, \"func(pkg *Package, f Filter) bool\"},\n\t\t{\"FilterUnassociatedComments\", Const, 0, \"\"},\n\t\t{\"ForStmt\", Type, 0, \"\"},\n\t\t{\"ForStmt.Body\", Field, 0, \"\"},\n\t\t{\"ForStmt.Cond\", Field, 0, \"\"},\n\t\t{\"ForStmt.For\", Field, 0, \"\"},\n\t\t{\"ForStmt.Init\", Field, 0, \"\"},\n\t\t{\"ForStmt.Post\", Field, 0, \"\"},\n\t\t{\"Fprint\", Func, 0, \"func(w io.Writer, fset *token.FileSet, x any, f FieldFilter) error\"},\n\t\t{\"Fun\", Const, 0, \"\"},\n\t\t{\"FuncDecl\", Type, 0, \"\"},\n\t\t{\"FuncDecl.Body\", Field, 0, \"\"},\n\t\t{\"FuncDecl.Doc\", Field, 0, \"\"},\n\t\t{\"FuncDecl.Name\", Field, 0, \"\"},\n\t\t{\"FuncDecl.Recv\", Field, 0, \"\"},\n\t\t{\"FuncDecl.Type\", Field, 0, \"\"},\n\t\t{\"FuncLit\", Type, 0, \"\"},\n\t\t{\"FuncLit.Body\", Field, 0, \"\"},\n\t\t{\"FuncLit.Type\", Field, 0, \"\"},\n\t\t{\"FuncType\", Type, 0, \"\"},\n\t\t{\"FuncType.Func\", Field, 0, \"\"},\n\t\t{\"FuncType.Params\", Field, 0, \"\"},\n\t\t{\"FuncType.Results\", Field, 0, \"\"},\n\t\t{\"FuncType.TypeParams\", Field, 18, \"\"},\n\t\t{\"GenDecl\", Type, 0, \"\"},\n\t\t{\"GenDecl.Doc\", Field, 0, \"\"},\n\t\t{\"GenDecl.Lparen\", Field, 0, \"\"},\n\t\t{\"GenDecl.Rparen\", Field, 0, \"\"},\n\t\t{\"GenDecl.Specs\", Field, 0, \"\"},\n\t\t{\"GenDecl.Tok\", Field, 0, \"\"},\n\t\t{\"GenDecl.TokPos\", Field, 0, \"\"},\n\t\t{\"GoStmt\", Type, 0, \"\"},\n\t\t{\"GoStmt.Call\", Field, 0, \"\"},\n\t\t{\"GoStmt.Go\", Field, 0, \"\"},\n\t\t{\"Ident\", Type, 0, \"\"},\n\t\t{\"Ident.Name\", Field, 0, \"\"},\n\t\t{\"Ident.NamePos\", Field, 0, \"\"},\n\t\t{\"Ident.Obj\", Field, 0, \"\"},\n\t\t{\"IfStmt\", Type, 0, \"\"},\n\t\t{\"IfStmt.Body\", Field, 0, \"\"},\n\t\t{\"IfStmt.Cond\", Field, 0, \"\"},\n\t\t{\"IfStmt.Else\", Field, 0, \"\"},\n\t\t{\"IfStmt.If\", Field, 0, \"\"},\n\t\t{\"IfStmt.Init\", Field, 0, \"\"},\n\t\t{\"ImportSpec\", Type, 0, \"\"},\n\t\t{\"ImportSpec.Comment\", Field, 0, \"\"},\n\t\t{\"ImportSpec.Doc\", Field, 0, \"\"},\n\t\t{\"ImportSpec.EndPos\", Field, 0, \"\"},\n\t\t{\"ImportSpec.Name\", Field, 0, \"\"},\n\t\t{\"ImportSpec.Path\", Field, 0, \"\"},\n\t\t{\"Importer\", Type, 0, \"\"},\n\t\t{\"IncDecStmt\", Type, 0, \"\"},\n\t\t{\"IncDecStmt.Tok\", Field, 0, \"\"},\n\t\t{\"IncDecStmt.TokPos\", Field, 0, \"\"},\n\t\t{\"IncDecStmt.X\", Field, 0, \"\"},\n\t\t{\"IndexExpr\", Type, 0, \"\"},\n\t\t{\"IndexExpr.Index\", Field, 0, \"\"},\n\t\t{\"IndexExpr.Lbrack\", Field, 0, \"\"},\n\t\t{\"IndexExpr.Rbrack\", Field, 0, \"\"},\n\t\t{\"IndexExpr.X\", Field, 0, \"\"},\n\t\t{\"IndexListExpr\", Type, 18, \"\"},\n\t\t{\"IndexListExpr.Indices\", Field, 18, \"\"},\n\t\t{\"IndexListExpr.Lbrack\", Field, 18, \"\"},\n\t\t{\"IndexListExpr.Rbrack\", Field, 18, \"\"},\n\t\t{\"IndexListExpr.X\", Field, 18, \"\"},\n\t\t{\"Inspect\", Func, 0, \"func(node Node, f func(Node) bool)\"},\n\t\t{\"InterfaceType\", Type, 0, \"\"},\n\t\t{\"InterfaceType.Incomplete\", Field, 0, \"\"},\n\t\t{\"InterfaceType.Interface\", Field, 0, \"\"},\n\t\t{\"InterfaceType.Methods\", Field, 0, \"\"},\n\t\t{\"IsExported\", Func, 0, \"func(name string) bool\"},\n\t\t{\"IsGenerated\", Func, 21, \"func(file *File) bool\"},\n\t\t{\"KeyValueExpr\", Type, 0, \"\"},\n\t\t{\"KeyValueExpr.Colon\", Field, 0, \"\"},\n\t\t{\"KeyValueExpr.Key\", Field, 0, \"\"},\n\t\t{\"KeyValueExpr.Value\", Field, 0, \"\"},\n\t\t{\"LabeledStmt\", Type, 0, \"\"},\n\t\t{\"LabeledStmt.Colon\", Field, 0, \"\"},\n\t\t{\"LabeledStmt.Label\", Field, 0, \"\"},\n\t\t{\"LabeledStmt.Stmt\", Field, 0, \"\"},\n\t\t{\"Lbl\", Const, 0, \"\"},\n\t\t{\"MapType\", Type, 0, \"\"},\n\t\t{\"MapType.Key\", Field, 0, \"\"},\n\t\t{\"MapType.Map\", Field, 0, \"\"},\n\t\t{\"MapType.Value\", Field, 0, \"\"},\n\t\t{\"MergeMode\", Type, 0, \"\"},\n\t\t{\"MergePackageFiles\", Func, 0, \"func(pkg *Package, mode MergeMode) *File\"},\n\t\t{\"NewCommentMap\", Func, 1, \"func(fset *token.FileSet, node Node, comments []*CommentGroup) CommentMap\"},\n\t\t{\"NewIdent\", Func, 0, \"func(name string) *Ident\"},\n\t\t{\"NewObj\", Func, 0, \"func(kind ObjKind, name string) *Object\"},\n\t\t{\"NewPackage\", Func, 0, \"func(fset *token.FileSet, files map[string]*File, importer Importer, universe *Scope) (*Package, error)\"},\n\t\t{\"NewScope\", Func, 0, \"func(outer *Scope) *Scope\"},\n\t\t{\"Node\", Type, 0, \"\"},\n\t\t{\"NotNilFilter\", Func, 0, \"func(_ string, v reflect.Value) bool\"},\n\t\t{\"ObjKind\", Type, 0, \"\"},\n\t\t{\"Object\", Type, 0, \"\"},\n\t\t{\"Object.Data\", Field, 0, \"\"},\n\t\t{\"Object.Decl\", Field, 0, \"\"},\n\t\t{\"Object.Kind\", Field, 0, \"\"},\n\t\t{\"Object.Name\", Field, 0, \"\"},\n\t\t{\"Object.Type\", Field, 0, \"\"},\n\t\t{\"Package\", Type, 0, \"\"},\n\t\t{\"Package.Files\", Field, 0, \"\"},\n\t\t{\"Package.Imports\", Field, 0, \"\"},\n\t\t{\"Package.Name\", Field, 0, \"\"},\n\t\t{\"Package.Scope\", Field, 0, \"\"},\n\t\t{\"PackageExports\", Func, 0, \"func(pkg *Package) bool\"},\n\t\t{\"ParenExpr\", Type, 0, \"\"},\n\t\t{\"ParenExpr.Lparen\", Field, 0, \"\"},\n\t\t{\"ParenExpr.Rparen\", Field, 0, \"\"},\n\t\t{\"ParenExpr.X\", Field, 0, \"\"},\n\t\t{\"ParseDirective\", Func, 26, \"func(pos token.Pos, c string) (Directive, bool)\"},\n\t\t{\"Pkg\", Const, 0, \"\"},\n\t\t{\"Preorder\", Func, 23, \"func(root Node) iter.Seq[Node]\"},\n\t\t{\"PreorderStack\", Func, 25, \"func(root Node, stack []Node, f func(n Node, stack []Node) bool)\"},\n\t\t{\"Print\", Func, 0, \"func(fset *token.FileSet, x any) error\"},\n\t\t{\"RECV\", Const, 0, \"\"},\n\t\t{\"RangeStmt\", Type, 0, \"\"},\n\t\t{\"RangeStmt.Body\", Field, 0, \"\"},\n\t\t{\"RangeStmt.For\", Field, 0, \"\"},\n\t\t{\"RangeStmt.Key\", Field, 0, \"\"},\n\t\t{\"RangeStmt.Range\", Field, 20, \"\"},\n\t\t{\"RangeStmt.Tok\", Field, 0, \"\"},\n\t\t{\"RangeStmt.TokPos\", Field, 0, \"\"},\n\t\t{\"RangeStmt.Value\", Field, 0, \"\"},\n\t\t{\"RangeStmt.X\", Field, 0, \"\"},\n\t\t{\"ReturnStmt\", Type, 0, \"\"},\n\t\t{\"ReturnStmt.Results\", Field, 0, \"\"},\n\t\t{\"ReturnStmt.Return\", Field, 0, \"\"},\n\t\t{\"SEND\", Const, 0, \"\"},\n\t\t{\"Scope\", Type, 0, \"\"},\n\t\t{\"Scope.Objects\", Field, 0, \"\"},\n\t\t{\"Scope.Outer\", Field, 0, \"\"},\n\t\t{\"SelectStmt\", Type, 0, \"\"},\n\t\t{\"SelectStmt.Body\", Field, 0, \"\"},\n\t\t{\"SelectStmt.Select\", Field, 0, \"\"},\n\t\t{\"SelectorExpr\", Type, 0, \"\"},\n\t\t{\"SelectorExpr.Sel\", Field, 0, \"\"},\n\t\t{\"SelectorExpr.X\", Field, 0, \"\"},\n\t\t{\"SendStmt\", Type, 0, \"\"},\n\t\t{\"SendStmt.Arrow\", Field, 0, \"\"},\n\t\t{\"SendStmt.Chan\", Field, 0, \"\"},\n\t\t{\"SendStmt.Value\", Field, 0, \"\"},\n\t\t{\"SliceExpr\", Type, 0, \"\"},\n\t\t{\"SliceExpr.High\", Field, 0, \"\"},\n\t\t{\"SliceExpr.Lbrack\", Field, 0, \"\"},\n\t\t{\"SliceExpr.Low\", Field, 0, \"\"},\n\t\t{\"SliceExpr.Max\", Field, 2, \"\"},\n\t\t{\"SliceExpr.Rbrack\", Field, 0, \"\"},\n\t\t{\"SliceExpr.Slice3\", Field, 2, \"\"},\n\t\t{\"SliceExpr.X\", Field, 0, \"\"},\n\t\t{\"SortImports\", Func, 0, \"func(fset *token.FileSet, f *File)\"},\n\t\t{\"StarExpr\", Type, 0, \"\"},\n\t\t{\"StarExpr.Star\", Field, 0, \"\"},\n\t\t{\"StarExpr.X\", Field, 0, \"\"},\n\t\t{\"StructType\", Type, 0, \"\"},\n\t\t{\"StructType.Fields\", Field, 0, \"\"},\n\t\t{\"StructType.Incomplete\", Field, 0, \"\"},\n\t\t{\"StructType.Struct\", Field, 0, \"\"},\n\t\t{\"SwitchStmt\", Type, 0, \"\"},\n\t\t{\"SwitchStmt.Body\", Field, 0, \"\"},\n\t\t{\"SwitchStmt.Init\", Field, 0, \"\"},\n\t\t{\"SwitchStmt.Switch\", Field, 0, \"\"},\n\t\t{\"SwitchStmt.Tag\", Field, 0, \"\"},\n\t\t{\"Typ\", Const, 0, \"\"},\n\t\t{\"TypeAssertExpr\", Type, 0, \"\"},\n\t\t{\"TypeAssertExpr.Lparen\", Field, 2, \"\"},\n\t\t{\"TypeAssertExpr.Rparen\", Field, 2, \"\"},\n\t\t{\"TypeAssertExpr.Type\", Field, 0, \"\"},\n\t\t{\"TypeAssertExpr.X\", Field, 0, \"\"},\n\t\t{\"TypeSpec\", Type, 0, \"\"},\n\t\t{\"TypeSpec.Assign\", Field, 9, \"\"},\n\t\t{\"TypeSpec.Comment\", Field, 0, \"\"},\n\t\t{\"TypeSpec.Doc\", Field, 0, \"\"},\n\t\t{\"TypeSpec.Name\", Field, 0, \"\"},\n\t\t{\"TypeSpec.Type\", Field, 0, \"\"},\n\t\t{\"TypeSpec.TypeParams\", Field, 18, \"\"},\n\t\t{\"TypeSwitchStmt\", Type, 0, \"\"},\n\t\t{\"TypeSwitchStmt.Assign\", Field, 0, \"\"},\n\t\t{\"TypeSwitchStmt.Body\", Field, 0, \"\"},\n\t\t{\"TypeSwitchStmt.Init\", Field, 0, \"\"},\n\t\t{\"TypeSwitchStmt.Switch\", Field, 0, \"\"},\n\t\t{\"UnaryExpr\", Type, 0, \"\"},\n\t\t{\"UnaryExpr.Op\", Field, 0, \"\"},\n\t\t{\"UnaryExpr.OpPos\", Field, 0, \"\"},\n\t\t{\"UnaryExpr.X\", Field, 0, \"\"},\n\t\t{\"Unparen\", Func, 22, \"func(e Expr) Expr\"},\n\t\t{\"ValueSpec\", Type, 0, \"\"},\n\t\t{\"ValueSpec.Comment\", Field, 0, \"\"},\n\t\t{\"ValueSpec.Doc\", Field, 0, \"\"},\n\t\t{\"ValueSpec.Names\", Field, 0, \"\"},\n\t\t{\"ValueSpec.Type\", Field, 0, \"\"},\n\t\t{\"ValueSpec.Values\", Field, 0, \"\"},\n\t\t{\"Var\", Const, 0, \"\"},\n\t\t{\"Visitor\", Type, 0, \"\"},\n\t\t{\"Walk\", Func, 0, \"func(v Visitor, node Node)\"},\n\t},\n\t\"go/build\": {\n\t\t{\"(*Context).Import\", Method, 0, \"\"},\n\t\t{\"(*Context).ImportDir\", Method, 0, \"\"},\n\t\t{\"(*Context).MatchFile\", Method, 2, \"\"},\n\t\t{\"(*Context).SrcDirs\", Method, 0, \"\"},\n\t\t{\"(*MultiplePackageError).Error\", Method, 4, \"\"},\n\t\t{\"(*NoGoError).Error\", Method, 0, \"\"},\n\t\t{\"(*Package).IsCommand\", Method, 0, \"\"},\n\t\t{\"AllowBinary\", Const, 0, \"\"},\n\t\t{\"ArchChar\", Func, 0, \"func(goarch string) (string, error)\"},\n\t\t{\"Context\", Type, 0, \"\"},\n\t\t{\"Context.BuildTags\", Field, 0, \"\"},\n\t\t{\"Context.CgoEnabled\", Field, 0, \"\"},\n\t\t{\"Context.Compiler\", Field, 0, \"\"},\n\t\t{\"Context.Dir\", Field, 14, \"\"},\n\t\t{\"Context.GOARCH\", Field, 0, \"\"},\n\t\t{\"Context.GOOS\", Field, 0, \"\"},\n\t\t{\"Context.GOPATH\", Field, 0, \"\"},\n\t\t{\"Context.GOROOT\", Field, 0, \"\"},\n\t\t{\"Context.HasSubdir\", Field, 0, \"\"},\n\t\t{\"Context.InstallSuffix\", Field, 1, \"\"},\n\t\t{\"Context.IsAbsPath\", Field, 0, \"\"},\n\t\t{\"Context.IsDir\", Field, 0, \"\"},\n\t\t{\"Context.JoinPath\", Field, 0, \"\"},\n\t\t{\"Context.OpenFile\", Field, 0, \"\"},\n\t\t{\"Context.ReadDir\", Field, 0, \"\"},\n\t\t{\"Context.ReleaseTags\", Field, 1, \"\"},\n\t\t{\"Context.SplitPathList\", Field, 0, \"\"},\n\t\t{\"Context.ToolTags\", Field, 17, \"\"},\n\t\t{\"Context.UseAllFiles\", Field, 0, \"\"},\n\t\t{\"Default\", Var, 0, \"\"},\n\t\t{\"Directive\", Type, 21, \"\"},\n\t\t{\"Directive.Pos\", Field, 21, \"\"},\n\t\t{\"Directive.Text\", Field, 21, \"\"},\n\t\t{\"FindOnly\", Const, 0, \"\"},\n\t\t{\"IgnoreVendor\", Const, 6, \"\"},\n\t\t{\"Import\", Func, 0, \"func(path string, srcDir string, mode ImportMode) (*Package, error)\"},\n\t\t{\"ImportComment\", Const, 4, \"\"},\n\t\t{\"ImportDir\", Func, 0, \"func(dir string, mode ImportMode) (*Package, error)\"},\n\t\t{\"ImportMode\", Type, 0, \"\"},\n\t\t{\"IsLocalImport\", Func, 0, \"func(path string) bool\"},\n\t\t{\"MultiplePackageError\", Type, 4, \"\"},\n\t\t{\"MultiplePackageError.Dir\", Field, 4, \"\"},\n\t\t{\"MultiplePackageError.Files\", Field, 4, \"\"},\n\t\t{\"MultiplePackageError.Packages\", Field, 4, \"\"},\n\t\t{\"NoGoError\", Type, 0, \"\"},\n\t\t{\"NoGoError.Dir\", Field, 0, \"\"},\n\t\t{\"Package\", Type, 0, \"\"},\n\t\t{\"Package.AllTags\", Field, 2, \"\"},\n\t\t{\"Package.BinDir\", Field, 0, \"\"},\n\t\t{\"Package.BinaryOnly\", Field, 7, \"\"},\n\t\t{\"Package.CFiles\", Field, 0, \"\"},\n\t\t{\"Package.CXXFiles\", Field, 2, \"\"},\n\t\t{\"Package.CgoCFLAGS\", Field, 0, \"\"},\n\t\t{\"Package.CgoCPPFLAGS\", Field, 2, \"\"},\n\t\t{\"Package.CgoCXXFLAGS\", Field, 2, \"\"},\n\t\t{\"Package.CgoFFLAGS\", Field, 7, \"\"},\n\t\t{\"Package.CgoFiles\", Field, 0, \"\"},\n\t\t{\"Package.CgoLDFLAGS\", Field, 0, \"\"},\n\t\t{\"Package.CgoPkgConfig\", Field, 0, \"\"},\n\t\t{\"Package.ConflictDir\", Field, 2, \"\"},\n\t\t{\"Package.Dir\", Field, 0, \"\"},\n\t\t{\"Package.Directives\", Field, 21, \"\"},\n\t\t{\"Package.Doc\", Field, 0, \"\"},\n\t\t{\"Package.EmbedPatternPos\", Field, 16, \"\"},\n\t\t{\"Package.EmbedPatterns\", Field, 16, \"\"},\n\t\t{\"Package.FFiles\", Field, 7, \"\"},\n\t\t{\"Package.GoFiles\", Field, 0, \"\"},\n\t\t{\"Package.Goroot\", Field, 0, \"\"},\n\t\t{\"Package.HFiles\", Field, 0, \"\"},\n\t\t{\"Package.IgnoredGoFiles\", Field, 1, \"\"},\n\t\t{\"Package.IgnoredOtherFiles\", Field, 16, \"\"},\n\t\t{\"Package.ImportComment\", Field, 4, \"\"},\n\t\t{\"Package.ImportPath\", Field, 0, \"\"},\n\t\t{\"Package.ImportPos\", Field, 0, \"\"},\n\t\t{\"Package.Imports\", Field, 0, \"\"},\n\t\t{\"Package.InvalidGoFiles\", Field, 6, \"\"},\n\t\t{\"Package.MFiles\", Field, 3, \"\"},\n\t\t{\"Package.Name\", Field, 0, \"\"},\n\t\t{\"Package.PkgObj\", Field, 0, \"\"},\n\t\t{\"Package.PkgRoot\", Field, 0, \"\"},\n\t\t{\"Package.PkgTargetRoot\", Field, 5, \"\"},\n\t\t{\"Package.Root\", Field, 0, \"\"},\n\t\t{\"Package.SFiles\", Field, 0, \"\"},\n\t\t{\"Package.SrcRoot\", Field, 0, \"\"},\n\t\t{\"Package.SwigCXXFiles\", Field, 1, \"\"},\n\t\t{\"Package.SwigFiles\", Field, 1, \"\"},\n\t\t{\"Package.SysoFiles\", Field, 0, \"\"},\n\t\t{\"Package.TestDirectives\", Field, 21, \"\"},\n\t\t{\"Package.TestEmbedPatternPos\", Field, 16, \"\"},\n\t\t{\"Package.TestEmbedPatterns\", Field, 16, \"\"},\n\t\t{\"Package.TestGoFiles\", Field, 0, \"\"},\n\t\t{\"Package.TestImportPos\", Field, 0, \"\"},\n\t\t{\"Package.TestImports\", Field, 0, \"\"},\n\t\t{\"Package.XTestDirectives\", Field, 21, \"\"},\n\t\t{\"Package.XTestEmbedPatternPos\", Field, 16, \"\"},\n\t\t{\"Package.XTestEmbedPatterns\", Field, 16, \"\"},\n\t\t{\"Package.XTestGoFiles\", Field, 0, \"\"},\n\t\t{\"Package.XTestImportPos\", Field, 0, \"\"},\n\t\t{\"Package.XTestImports\", Field, 0, \"\"},\n\t\t{\"ToolDir\", Var, 0, \"\"},\n\t},\n\t\"go/build/constraint\": {\n\t\t{\"(*AndExpr).Eval\", Method, 16, \"\"},\n\t\t{\"(*AndExpr).String\", Method, 16, \"\"},\n\t\t{\"(*NotExpr).Eval\", Method, 16, \"\"},\n\t\t{\"(*NotExpr).String\", Method, 16, \"\"},\n\t\t{\"(*OrExpr).Eval\", Method, 16, \"\"},\n\t\t{\"(*OrExpr).String\", Method, 16, \"\"},\n\t\t{\"(*SyntaxError).Error\", Method, 16, \"\"},\n\t\t{\"(*TagExpr).Eval\", Method, 16, \"\"},\n\t\t{\"(*TagExpr).String\", Method, 16, \"\"},\n\t\t{\"(Expr).Eval\", Method, 16, \"\"},\n\t\t{\"(Expr).String\", Method, 16, \"\"},\n\t\t{\"AndExpr\", Type, 16, \"\"},\n\t\t{\"AndExpr.X\", Field, 16, \"\"},\n\t\t{\"AndExpr.Y\", Field, 16, \"\"},\n\t\t{\"GoVersion\", Func, 21, \"func(x Expr) string\"},\n\t\t{\"IsGoBuild\", Func, 16, \"func(line string) bool\"},\n\t\t{\"IsPlusBuild\", Func, 16, \"func(line string) bool\"},\n\t\t{\"NotExpr\", Type, 16, \"\"},\n\t\t{\"NotExpr.X\", Field, 16, \"\"},\n\t\t{\"OrExpr\", Type, 16, \"\"},\n\t\t{\"OrExpr.X\", Field, 16, \"\"},\n\t\t{\"OrExpr.Y\", Field, 16, \"\"},\n\t\t{\"Parse\", Func, 16, \"func(line string) (Expr, error)\"},\n\t\t{\"PlusBuildLines\", Func, 16, \"func(x Expr) ([]string, error)\"},\n\t\t{\"SyntaxError\", Type, 16, \"\"},\n\t\t{\"SyntaxError.Err\", Field, 16, \"\"},\n\t\t{\"SyntaxError.Offset\", Field, 16, \"\"},\n\t\t{\"TagExpr\", Type, 16, \"\"},\n\t\t{\"TagExpr.Tag\", Field, 16, \"\"},\n\t},\n\t\"go/constant\": {\n\t\t{\"(Kind).String\", Method, 18, \"\"},\n\t\t{\"(Value).ExactString\", Method, 6, \"\"},\n\t\t{\"(Value).Kind\", Method, 5, \"\"},\n\t\t{\"(Value).String\", Method, 5, \"\"},\n\t\t{\"BinaryOp\", Func, 5, \"func(x_ Value, op token.Token, y_ Value) Value\"},\n\t\t{\"BitLen\", Func, 5, \"func(x Value) int\"},\n\t\t{\"Bool\", Const, 5, \"\"},\n\t\t{\"BoolVal\", Func, 5, \"func(x Value) bool\"},\n\t\t{\"Bytes\", Func, 5, \"func(x Value) []byte\"},\n\t\t{\"Compare\", Func, 5, \"func(x_ Value, op token.Token, y_ Value) bool\"},\n\t\t{\"Complex\", Const, 5, \"\"},\n\t\t{\"Denom\", Func, 5, \"func(x Value) Value\"},\n\t\t{\"Float\", Const, 5, \"\"},\n\t\t{\"Float32Val\", Func, 5, \"func(x Value) (float32, bool)\"},\n\t\t{\"Float64Val\", Func, 5, \"func(x Value) (float64, bool)\"},\n\t\t{\"Imag\", Func, 5, \"func(x Value) Value\"},\n\t\t{\"Int\", Const, 5, \"\"},\n\t\t{\"Int64Val\", Func, 5, \"func(x Value) (int64, bool)\"},\n\t\t{\"Kind\", Type, 5, \"\"},\n\t\t{\"Make\", Func, 13, \"func(x any) Value\"},\n\t\t{\"MakeBool\", Func, 5, \"func(b bool) Value\"},\n\t\t{\"MakeFloat64\", Func, 5, \"func(x float64) Value\"},\n\t\t{\"MakeFromBytes\", Func, 5, \"func(bytes []byte) Value\"},\n\t\t{\"MakeFromLiteral\", Func, 5, \"func(lit string, tok token.Token, zero uint) Value\"},\n\t\t{\"MakeImag\", Func, 5, \"func(x Value) Value\"},\n\t\t{\"MakeInt64\", Func, 5, \"func(x int64) Value\"},\n\t\t{\"MakeString\", Func, 5, \"func(s string) Value\"},\n\t\t{\"MakeUint64\", Func, 5, \"func(x uint64) Value\"},\n\t\t{\"MakeUnknown\", Func, 5, \"func() Value\"},\n\t\t{\"Num\", Func, 5, \"func(x Value) Value\"},\n\t\t{\"Real\", Func, 5, \"func(x Value) Value\"},\n\t\t{\"Shift\", Func, 5, \"func(x Value, op token.Token, s uint) Value\"},\n\t\t{\"Sign\", Func, 5, \"func(x Value) int\"},\n\t\t{\"String\", Const, 5, \"\"},\n\t\t{\"StringVal\", Func, 5, \"func(x Value) string\"},\n\t\t{\"ToComplex\", Func, 6, \"func(x Value) Value\"},\n\t\t{\"ToFloat\", Func, 6, \"func(x Value) Value\"},\n\t\t{\"ToInt\", Func, 6, \"func(x Value) Value\"},\n\t\t{\"Uint64Val\", Func, 5, \"func(x Value) (uint64, bool)\"},\n\t\t{\"UnaryOp\", Func, 5, \"func(op token.Token, y Value, prec uint) Value\"},\n\t\t{\"Unknown\", Const, 5, \"\"},\n\t\t{\"Val\", Func, 13, \"func(x Value) any\"},\n\t},\n\t\"go/doc\": {\n\t\t{\"(*Package).Filter\", Method, 0, \"\"},\n\t\t{\"(*Package).HTML\", Method, 19, \"\"},\n\t\t{\"(*Package).Markdown\", Method, 19, \"\"},\n\t\t{\"(*Package).Parser\", Method, 19, \"\"},\n\t\t{\"(*Package).Printer\", Method, 19, \"\"},\n\t\t{\"(*Package).Synopsis\", Method, 19, \"\"},\n\t\t{\"(*Package).Text\", Method, 19, \"\"},\n\t\t{\"AllDecls\", Const, 0, \"\"},\n\t\t{\"AllMethods\", Const, 0, \"\"},\n\t\t{\"Example\", Type, 0, \"\"},\n\t\t{\"Example.Code\", Field, 0, \"\"},\n\t\t{\"Example.Comments\", Field, 0, \"\"},\n\t\t{\"Example.Doc\", Field, 0, \"\"},\n\t\t{\"Example.EmptyOutput\", Field, 1, \"\"},\n\t\t{\"Example.Name\", Field, 0, \"\"},\n\t\t{\"Example.Order\", Field, 1, \"\"},\n\t\t{\"Example.Output\", Field, 0, \"\"},\n\t\t{\"Example.Play\", Field, 1, \"\"},\n\t\t{\"Example.Suffix\", Field, 14, \"\"},\n\t\t{\"Example.Unordered\", Field, 7, \"\"},\n\t\t{\"Examples\", Func, 0, \"func(testFiles ...*ast.File) []*Example\"},\n\t\t{\"Filter\", Type, 0, \"\"},\n\t\t{\"Func\", Type, 0, \"\"},\n\t\t{\"Func.Decl\", Field, 0, \"\"},\n\t\t{\"Func.Doc\", Field, 0, \"\"},\n\t\t{\"Func.Examples\", Field, 14, \"\"},\n\t\t{\"Func.Level\", Field, 0, \"\"},\n\t\t{\"Func.Name\", Field, 0, \"\"},\n\t\t{\"Func.Orig\", Field, 0, \"\"},\n\t\t{\"Func.Recv\", Field, 0, \"\"},\n\t\t{\"IllegalPrefixes\", Var, 1, \"\"},\n\t\t{\"IsPredeclared\", Func, 8, \"func(s string) bool\"},\n\t\t{\"Mode\", Type, 0, \"\"},\n\t\t{\"New\", Func, 0, \"func(pkg *ast.Package, importPath string, mode Mode) *Package\"},\n\t\t{\"NewFromFiles\", Func, 14, \"func(fset *token.FileSet, files []*ast.File, importPath string, opts ...any) (*Package, error)\"},\n\t\t{\"Note\", Type, 1, \"\"},\n\t\t{\"Note.Body\", Field, 1, \"\"},\n\t\t{\"Note.End\", Field, 1, \"\"},\n\t\t{\"Note.Pos\", Field, 1, \"\"},\n\t\t{\"Note.UID\", Field, 1, \"\"},\n\t\t{\"Package\", Type, 0, \"\"},\n\t\t{\"Package.Bugs\", Field, 0, \"\"},\n\t\t{\"Package.Consts\", Field, 0, \"\"},\n\t\t{\"Package.Doc\", Field, 0, \"\"},\n\t\t{\"Package.Examples\", Field, 14, \"\"},\n\t\t{\"Package.Filenames\", Field, 0, \"\"},\n\t\t{\"Package.Funcs\", Field, 0, \"\"},\n\t\t{\"Package.ImportPath\", Field, 0, \"\"},\n\t\t{\"Package.Imports\", Field, 0, \"\"},\n\t\t{\"Package.Name\", Field, 0, \"\"},\n\t\t{\"Package.Notes\", Field, 1, \"\"},\n\t\t{\"Package.Types\", Field, 0, \"\"},\n\t\t{\"Package.Vars\", Field, 0, \"\"},\n\t\t{\"PreserveAST\", Const, 12, \"\"},\n\t\t{\"Synopsis\", Func, 0, \"func(text string) string\"},\n\t\t{\"ToHTML\", Func, 0, \"func(w io.Writer, text string, words map[string]string)\"},\n\t\t{\"ToText\", Func, 0, \"func(w io.Writer, text string, prefix string, codePrefix string, width int)\"},\n\t\t{\"Type\", Type, 0, \"\"},\n\t\t{\"Type.Consts\", Field, 0, \"\"},\n\t\t{\"Type.Decl\", Field, 0, \"\"},\n\t\t{\"Type.Doc\", Field, 0, \"\"},\n\t\t{\"Type.Examples\", Field, 14, \"\"},\n\t\t{\"Type.Funcs\", Field, 0, \"\"},\n\t\t{\"Type.Methods\", Field, 0, \"\"},\n\t\t{\"Type.Name\", Field, 0, \"\"},\n\t\t{\"Type.Vars\", Field, 0, \"\"},\n\t\t{\"Value\", Type, 0, \"\"},\n\t\t{\"Value.Decl\", Field, 0, \"\"},\n\t\t{\"Value.Doc\", Field, 0, \"\"},\n\t\t{\"Value.Names\", Field, 0, \"\"},\n\t},\n\t\"go/doc/comment\": {\n\t\t{\"(*DocLink).DefaultURL\", Method, 19, \"\"},\n\t\t{\"(*Heading).DefaultID\", Method, 19, \"\"},\n\t\t{\"(*List).BlankBefore\", Method, 19, \"\"},\n\t\t{\"(*List).BlankBetween\", Method, 19, \"\"},\n\t\t{\"(*Parser).Parse\", Method, 19, \"\"},\n\t\t{\"(*Printer).Comment\", Method, 19, \"\"},\n\t\t{\"(*Printer).HTML\", Method, 19, \"\"},\n\t\t{\"(*Printer).Markdown\", Method, 19, \"\"},\n\t\t{\"(*Printer).Text\", Method, 19, \"\"},\n\t\t{\"Code\", Type, 19, \"\"},\n\t\t{\"Code.Text\", Field, 19, \"\"},\n\t\t{\"DefaultLookupPackage\", Func, 19, \"func(name string) (importPath string, ok bool)\"},\n\t\t{\"Doc\", Type, 19, \"\"},\n\t\t{\"Doc.Content\", Field, 19, \"\"},\n\t\t{\"Doc.Links\", Field, 19, \"\"},\n\t\t{\"DocLink\", Type, 19, \"\"},\n\t\t{\"DocLink.ImportPath\", Field, 19, \"\"},\n\t\t{\"DocLink.Name\", Field, 19, \"\"},\n\t\t{\"DocLink.Recv\", Field, 19, \"\"},\n\t\t{\"DocLink.Text\", Field, 19, \"\"},\n\t\t{\"Heading\", Type, 19, \"\"},\n\t\t{\"Heading.Text\", Field, 19, \"\"},\n\t\t{\"Italic\", Type, 19, \"\"},\n\t\t{\"Link\", Type, 19, \"\"},\n\t\t{\"Link.Auto\", Field, 19, \"\"},\n\t\t{\"Link.Text\", Field, 19, \"\"},\n\t\t{\"Link.URL\", Field, 19, \"\"},\n\t\t{\"LinkDef\", Type, 19, \"\"},\n\t\t{\"LinkDef.Text\", Field, 19, \"\"},\n\t\t{\"LinkDef.URL\", Field, 19, \"\"},\n\t\t{\"LinkDef.Used\", Field, 19, \"\"},\n\t\t{\"List\", Type, 19, \"\"},\n\t\t{\"List.ForceBlankBefore\", Field, 19, \"\"},\n\t\t{\"List.ForceBlankBetween\", Field, 19, \"\"},\n\t\t{\"List.Items\", Field, 19, \"\"},\n\t\t{\"ListItem\", Type, 19, \"\"},\n\t\t{\"ListItem.Content\", Field, 19, \"\"},\n\t\t{\"ListItem.Number\", Field, 19, \"\"},\n\t\t{\"Paragraph\", Type, 19, \"\"},\n\t\t{\"Paragraph.Text\", Field, 19, \"\"},\n\t\t{\"Parser\", Type, 19, \"\"},\n\t\t{\"Parser.LookupPackage\", Field, 19, \"\"},\n\t\t{\"Parser.LookupSym\", Field, 19, \"\"},\n\t\t{\"Parser.Words\", Field, 19, \"\"},\n\t\t{\"Plain\", Type, 19, \"\"},\n\t\t{\"Printer\", Type, 19, \"\"},\n\t\t{\"Printer.DocLinkBaseURL\", Field, 19, \"\"},\n\t\t{\"Printer.DocLinkURL\", Field, 19, \"\"},\n\t\t{\"Printer.HeadingID\", Field, 19, \"\"},\n\t\t{\"Printer.HeadingLevel\", Field, 19, \"\"},\n\t\t{\"Printer.TextCodePrefix\", Field, 19, \"\"},\n\t\t{\"Printer.TextPrefix\", Field, 19, \"\"},\n\t\t{\"Printer.TextWidth\", Field, 19, \"\"},\n\t},\n\t\"go/format\": {\n\t\t{\"Node\", Func, 1, \"func(dst io.Writer, fset *token.FileSet, node any) error\"},\n\t\t{\"Source\", Func, 1, \"func(src []byte) ([]byte, error)\"},\n\t},\n\t\"go/importer\": {\n\t\t{\"Default\", Func, 5, \"func() types.Importer\"},\n\t\t{\"For\", Func, 5, \"func(compiler string, lookup Lookup) types.Importer\"},\n\t\t{\"ForCompiler\", Func, 12, \"func(fset *token.FileSet, compiler string, lookup Lookup) types.Importer\"},\n\t\t{\"Lookup\", Type, 5, \"\"},\n\t},\n\t\"go/parser\": {\n\t\t{\"AllErrors\", Const, 1, \"\"},\n\t\t{\"DeclarationErrors\", Const, 0, \"\"},\n\t\t{\"ImportsOnly\", Const, 0, \"\"},\n\t\t{\"Mode\", Type, 0, \"\"},\n\t\t{\"PackageClauseOnly\", Const, 0, \"\"},\n\t\t{\"ParseComments\", Const, 0, \"\"},\n\t\t{\"ParseDir\", Func, 0, \"func(fset *token.FileSet, path string, filter func(fs.FileInfo) bool, mode Mode) (pkgs map[string]*ast.Package, first error)\"},\n\t\t{\"ParseExpr\", Func, 0, \"func(x string) (ast.Expr, error)\"},\n\t\t{\"ParseExprFrom\", Func, 5, \"func(fset *token.FileSet, filename string, src any, mode Mode) (expr ast.Expr, err error)\"},\n\t\t{\"ParseFile\", Func, 0, \"func(fset *token.FileSet, filename string, src any, mode Mode) (f *ast.File, err error)\"},\n\t\t{\"SkipObjectResolution\", Const, 17, \"\"},\n\t\t{\"SpuriousErrors\", Const, 0, \"\"},\n\t\t{\"Trace\", Const, 0, \"\"},\n\t},\n\t\"go/printer\": {\n\t\t{\"(*Config).Fprint\", Method, 0, \"\"},\n\t\t{\"CommentedNode\", Type, 0, \"\"},\n\t\t{\"CommentedNode.Comments\", Field, 0, \"\"},\n\t\t{\"CommentedNode.Node\", Field, 0, \"\"},\n\t\t{\"Config\", Type, 0, \"\"},\n\t\t{\"Config.Indent\", Field, 1, \"\"},\n\t\t{\"Config.Mode\", Field, 0, \"\"},\n\t\t{\"Config.Tabwidth\", Field, 0, \"\"},\n\t\t{\"Fprint\", Func, 0, \"func(output io.Writer, fset *token.FileSet, node any) error\"},\n\t\t{\"Mode\", Type, 0, \"\"},\n\t\t{\"RawFormat\", Const, 0, \"\"},\n\t\t{\"SourcePos\", Const, 0, \"\"},\n\t\t{\"TabIndent\", Const, 0, \"\"},\n\t\t{\"UseSpaces\", Const, 0, \"\"},\n\t},\n\t\"go/scanner\": {\n\t\t{\"(*ErrorList).Add\", Method, 0, \"\"},\n\t\t{\"(*ErrorList).RemoveMultiples\", Method, 0, \"\"},\n\t\t{\"(*ErrorList).Reset\", Method, 0, \"\"},\n\t\t{\"(*Scanner).Init\", Method, 0, \"\"},\n\t\t{\"(*Scanner).Scan\", Method, 0, \"\"},\n\t\t{\"(Error).Error\", Method, 0, \"\"},\n\t\t{\"(ErrorList).Err\", Method, 0, \"\"},\n\t\t{\"(ErrorList).Error\", Method, 0, \"\"},\n\t\t{\"(ErrorList).Len\", Method, 0, \"\"},\n\t\t{\"(ErrorList).Less\", Method, 0, \"\"},\n\t\t{\"(ErrorList).Sort\", Method, 0, \"\"},\n\t\t{\"(ErrorList).Swap\", Method, 0, \"\"},\n\t\t{\"Error\", Type, 0, \"\"},\n\t\t{\"Error.Msg\", Field, 0, \"\"},\n\t\t{\"Error.Pos\", Field, 0, \"\"},\n\t\t{\"ErrorHandler\", Type, 0, \"\"},\n\t\t{\"ErrorList\", Type, 0, \"\"},\n\t\t{\"Mode\", Type, 0, \"\"},\n\t\t{\"PrintError\", Func, 0, \"func(w io.Writer, err error)\"},\n\t\t{\"ScanComments\", Const, 0, \"\"},\n\t\t{\"Scanner\", Type, 0, \"\"},\n\t\t{\"Scanner.ErrorCount\", Field, 0, \"\"},\n\t},\n\t\"go/token\": {\n\t\t{\"(*File).AddLine\", Method, 0, \"\"},\n\t\t{\"(*File).AddLineColumnInfo\", Method, 11, \"\"},\n\t\t{\"(*File).AddLineInfo\", Method, 0, \"\"},\n\t\t{\"(*File).Base\", Method, 0, \"\"},\n\t\t{\"(*File).End\", Method, 26, \"\"},\n\t\t{\"(*File).Line\", Method, 0, \"\"},\n\t\t{\"(*File).LineCount\", Method, 0, \"\"},\n\t\t{\"(*File).LineStart\", Method, 12, \"\"},\n\t\t{\"(*File).Lines\", Method, 21, \"\"},\n\t\t{\"(*File).MergeLine\", Method, 2, \"\"},\n\t\t{\"(*File).Name\", Method, 0, \"\"},\n\t\t{\"(*File).Offset\", Method, 0, \"\"},\n\t\t{\"(*File).Pos\", Method, 0, \"\"},\n\t\t{\"(*File).Position\", Method, 0, \"\"},\n\t\t{\"(*File).PositionFor\", Method, 4, \"\"},\n\t\t{\"(*File).SetLines\", Method, 0, \"\"},\n\t\t{\"(*File).SetLinesForContent\", Method, 0, \"\"},\n\t\t{\"(*File).Size\", Method, 0, \"\"},\n\t\t{\"(*FileSet).AddExistingFiles\", Method, 25, \"\"},\n\t\t{\"(*FileSet).AddFile\", Method, 0, \"\"},\n\t\t{\"(*FileSet).Base\", Method, 0, \"\"},\n\t\t{\"(*FileSet).File\", Method, 0, \"\"},\n\t\t{\"(*FileSet).Iterate\", Method, 0, \"\"},\n\t\t{\"(*FileSet).Position\", Method, 0, \"\"},\n\t\t{\"(*FileSet).PositionFor\", Method, 4, \"\"},\n\t\t{\"(*FileSet).Read\", Method, 0, \"\"},\n\t\t{\"(*FileSet).RemoveFile\", Method, 20, \"\"},\n\t\t{\"(*FileSet).Write\", Method, 0, \"\"},\n\t\t{\"(*Position).IsValid\", Method, 0, \"\"},\n\t\t{\"(Pos).IsValid\", Method, 0, \"\"},\n\t\t{\"(Position).String\", Method, 0, \"\"},\n\t\t{\"(Token).IsKeyword\", Method, 0, \"\"},\n\t\t{\"(Token).IsLiteral\", Method, 0, \"\"},\n\t\t{\"(Token).IsOperator\", Method, 0, \"\"},\n\t\t{\"(Token).Precedence\", Method, 0, \"\"},\n\t\t{\"(Token).String\", Method, 0, \"\"},\n\t\t{\"ADD\", Const, 0, \"\"},\n\t\t{\"ADD_ASSIGN\", Const, 0, \"\"},\n\t\t{\"AND\", Const, 0, \"\"},\n\t\t{\"AND_ASSIGN\", Const, 0, \"\"},\n\t\t{\"AND_NOT\", Const, 0, \"\"},\n\t\t{\"AND_NOT_ASSIGN\", Const, 0, \"\"},\n\t\t{\"ARROW\", Const, 0, \"\"},\n\t\t{\"ASSIGN\", Const, 0, \"\"},\n\t\t{\"BREAK\", Const, 0, \"\"},\n\t\t{\"CASE\", Const, 0, \"\"},\n\t\t{\"CHAN\", Const, 0, \"\"},\n\t\t{\"CHAR\", Const, 0, \"\"},\n\t\t{\"COLON\", Const, 0, \"\"},\n\t\t{\"COMMA\", Const, 0, \"\"},\n\t\t{\"COMMENT\", Const, 0, \"\"},\n\t\t{\"CONST\", Const, 0, \"\"},\n\t\t{\"CONTINUE\", Const, 0, \"\"},\n\t\t{\"DEC\", Const, 0, \"\"},\n\t\t{\"DEFAULT\", Const, 0, \"\"},\n\t\t{\"DEFER\", Const, 0, \"\"},\n\t\t{\"DEFINE\", Const, 0, \"\"},\n\t\t{\"ELLIPSIS\", Const, 0, \"\"},\n\t\t{\"ELSE\", Const, 0, \"\"},\n\t\t{\"EOF\", Const, 0, \"\"},\n\t\t{\"EQL\", Const, 0, \"\"},\n\t\t{\"FALLTHROUGH\", Const, 0, \"\"},\n\t\t{\"FLOAT\", Const, 0, \"\"},\n\t\t{\"FOR\", Const, 0, \"\"},\n\t\t{\"FUNC\", Const, 0, \"\"},\n\t\t{\"File\", Type, 0, \"\"},\n\t\t{\"FileSet\", Type, 0, \"\"},\n\t\t{\"GEQ\", Const, 0, \"\"},\n\t\t{\"GO\", Const, 0, \"\"},\n\t\t{\"GOTO\", Const, 0, \"\"},\n\t\t{\"GTR\", Const, 0, \"\"},\n\t\t{\"HighestPrec\", Const, 0, \"\"},\n\t\t{\"IDENT\", Const, 0, \"\"},\n\t\t{\"IF\", Const, 0, \"\"},\n\t\t{\"ILLEGAL\", Const, 0, \"\"},\n\t\t{\"IMAG\", Const, 0, \"\"},\n\t\t{\"IMPORT\", Const, 0, \"\"},\n\t\t{\"INC\", Const, 0, \"\"},\n\t\t{\"INT\", Const, 0, \"\"},\n\t\t{\"INTERFACE\", Const, 0, \"\"},\n\t\t{\"IsExported\", Func, 13, \"func(name string) bool\"},\n\t\t{\"IsIdentifier\", Func, 13, \"func(name string) bool\"},\n\t\t{\"IsKeyword\", Func, 13, \"func(name string) bool\"},\n\t\t{\"LAND\", Const, 0, \"\"},\n\t\t{\"LBRACE\", Const, 0, \"\"},\n\t\t{\"LBRACK\", Const, 0, \"\"},\n\t\t{\"LEQ\", Const, 0, \"\"},\n\t\t{\"LOR\", Const, 0, \"\"},\n\t\t{\"LPAREN\", Const, 0, \"\"},\n\t\t{\"LSS\", Const, 0, \"\"},\n\t\t{\"Lookup\", Func, 0, \"func(ident string) Token\"},\n\t\t{\"LowestPrec\", Const, 0, \"\"},\n\t\t{\"MAP\", Const, 0, \"\"},\n\t\t{\"MUL\", Const, 0, \"\"},\n\t\t{\"MUL_ASSIGN\", Const, 0, \"\"},\n\t\t{\"NEQ\", Const, 0, \"\"},\n\t\t{\"NOT\", Const, 0, \"\"},\n\t\t{\"NewFileSet\", Func, 0, \"func() *FileSet\"},\n\t\t{\"NoPos\", Const, 0, \"\"},\n\t\t{\"OR\", Const, 0, \"\"},\n\t\t{\"OR_ASSIGN\", Const, 0, \"\"},\n\t\t{\"PACKAGE\", Const, 0, \"\"},\n\t\t{\"PERIOD\", Const, 0, \"\"},\n\t\t{\"Pos\", Type, 0, \"\"},\n\t\t{\"Position\", Type, 0, \"\"},\n\t\t{\"Position.Column\", Field, 0, \"\"},\n\t\t{\"Position.Filename\", Field, 0, \"\"},\n\t\t{\"Position.Line\", Field, 0, \"\"},\n\t\t{\"Position.Offset\", Field, 0, \"\"},\n\t\t{\"QUO\", Const, 0, \"\"},\n\t\t{\"QUO_ASSIGN\", Const, 0, \"\"},\n\t\t{\"RANGE\", Const, 0, \"\"},\n\t\t{\"RBRACE\", Const, 0, \"\"},\n\t\t{\"RBRACK\", Const, 0, \"\"},\n\t\t{\"REM\", Const, 0, \"\"},\n\t\t{\"REM_ASSIGN\", Const, 0, \"\"},\n\t\t{\"RETURN\", Const, 0, \"\"},\n\t\t{\"RPAREN\", Const, 0, \"\"},\n\t\t{\"SELECT\", Const, 0, \"\"},\n\t\t{\"SEMICOLON\", Const, 0, \"\"},\n\t\t{\"SHL\", Const, 0, \"\"},\n\t\t{\"SHL_ASSIGN\", Const, 0, \"\"},\n\t\t{\"SHR\", Const, 0, \"\"},\n\t\t{\"SHR_ASSIGN\", Const, 0, \"\"},\n\t\t{\"STRING\", Const, 0, \"\"},\n\t\t{\"STRUCT\", Const, 0, \"\"},\n\t\t{\"SUB\", Const, 0, \"\"},\n\t\t{\"SUB_ASSIGN\", Const, 0, \"\"},\n\t\t{\"SWITCH\", Const, 0, \"\"},\n\t\t{\"TILDE\", Const, 18, \"\"},\n\t\t{\"TYPE\", Const, 0, \"\"},\n\t\t{\"Token\", Type, 0, \"\"},\n\t\t{\"UnaryPrec\", Const, 0, \"\"},\n\t\t{\"VAR\", Const, 0, \"\"},\n\t\t{\"XOR\", Const, 0, \"\"},\n\t\t{\"XOR_ASSIGN\", Const, 0, \"\"},\n\t},\n\t\"go/types\": {\n\t\t{\"(*Alias).Obj\", Method, 22, \"\"},\n\t\t{\"(*Alias).Origin\", Method, 23, \"\"},\n\t\t{\"(*Alias).Rhs\", Method, 23, \"\"},\n\t\t{\"(*Alias).SetTypeParams\", Method, 23, \"\"},\n\t\t{\"(*Alias).String\", Method, 22, \"\"},\n\t\t{\"(*Alias).TypeArgs\", Method, 23, \"\"},\n\t\t{\"(*Alias).TypeParams\", Method, 23, \"\"},\n\t\t{\"(*Alias).Underlying\", Method, 22, \"\"},\n\t\t{\"(*ArgumentError).Error\", Method, 18, \"\"},\n\t\t{\"(*ArgumentError).Unwrap\", Method, 18, \"\"},\n\t\t{\"(*Array).Elem\", Method, 5, \"\"},\n\t\t{\"(*Array).Len\", Method, 5, \"\"},\n\t\t{\"(*Array).String\", Method, 5, \"\"},\n\t\t{\"(*Array).Underlying\", Method, 5, \"\"},\n\t\t{\"(*Basic).Info\", Method, 5, \"\"},\n\t\t{\"(*Basic).Kind\", Method, 5, \"\"},\n\t\t{\"(*Basic).Name\", Method, 5, \"\"},\n\t\t{\"(*Basic).String\", Method, 5, \"\"},\n\t\t{\"(*Basic).Underlying\", Method, 5, \"\"},\n\t\t{\"(*Builtin).Exported\", Method, 5, \"\"},\n\t\t{\"(*Builtin).Id\", Method, 5, \"\"},\n\t\t{\"(*Builtin).Name\", Method, 5, \"\"},\n\t\t{\"(*Builtin).Parent\", Method, 5, \"\"},\n\t\t{\"(*Builtin).Pkg\", Method, 5, \"\"},\n\t\t{\"(*Builtin).Pos\", Method, 5, \"\"},\n\t\t{\"(*Builtin).String\", Method, 5, \"\"},\n\t\t{\"(*Builtin).Type\", Method, 5, \"\"},\n\t\t{\"(*Chan).Dir\", Method, 5, \"\"},\n\t\t{\"(*Chan).Elem\", Method, 5, \"\"},\n\t\t{\"(*Chan).String\", Method, 5, \"\"},\n\t\t{\"(*Chan).Underlying\", Method, 5, \"\"},\n\t\t{\"(*Checker).Files\", Method, 5, \"\"},\n\t\t{\"(*Config).Check\", Method, 5, \"\"},\n\t\t{\"(*Const).Exported\", Method, 5, \"\"},\n\t\t{\"(*Const).Id\", Method, 5, \"\"},\n\t\t{\"(*Const).Name\", Method, 5, \"\"},\n\t\t{\"(*Const).Parent\", Method, 5, \"\"},\n\t\t{\"(*Const).Pkg\", Method, 5, \"\"},\n\t\t{\"(*Const).Pos\", Method, 5, \"\"},\n\t\t{\"(*Const).String\", Method, 5, \"\"},\n\t\t{\"(*Const).Type\", Method, 5, \"\"},\n\t\t{\"(*Const).Val\", Method, 5, \"\"},\n\t\t{\"(*Func).Exported\", Method, 5, \"\"},\n\t\t{\"(*Func).FullName\", Method, 5, \"\"},\n\t\t{\"(*Func).Id\", Method, 5, \"\"},\n\t\t{\"(*Func).Name\", Method, 5, \"\"},\n\t\t{\"(*Func).Origin\", Method, 19, \"\"},\n\t\t{\"(*Func).Parent\", Method, 5, \"\"},\n\t\t{\"(*Func).Pkg\", Method, 5, \"\"},\n\t\t{\"(*Func).Pos\", Method, 5, \"\"},\n\t\t{\"(*Func).Scope\", Method, 5, \"\"},\n\t\t{\"(*Func).Signature\", Method, 23, \"\"},\n\t\t{\"(*Func).String\", Method, 5, \"\"},\n\t\t{\"(*Func).Type\", Method, 5, \"\"},\n\t\t{\"(*Info).ObjectOf\", Method, 5, \"\"},\n\t\t{\"(*Info).PkgNameOf\", Method, 22, \"\"},\n\t\t{\"(*Info).TypeOf\", Method, 5, \"\"},\n\t\t{\"(*Initializer).String\", Method, 5, \"\"},\n\t\t{\"(*Interface).Complete\", Method, 5, \"\"},\n\t\t{\"(*Interface).Embedded\", Method, 5, \"\"},\n\t\t{\"(*Interface).EmbeddedType\", Method, 11, \"\"},\n\t\t{\"(*Interface).EmbeddedTypes\", Method, 24, \"\"},\n\t\t{\"(*Interface).Empty\", Method, 5, \"\"},\n\t\t{\"(*Interface).ExplicitMethod\", Method, 5, \"\"},\n\t\t{\"(*Interface).ExplicitMethods\", Method, 24, \"\"},\n\t\t{\"(*Interface).IsComparable\", Method, 18, \"\"},\n\t\t{\"(*Interface).IsImplicit\", Method, 18, \"\"},\n\t\t{\"(*Interface).IsMethodSet\", Method, 18, \"\"},\n\t\t{\"(*Interface).MarkImplicit\", Method, 18, \"\"},\n\t\t{\"(*Interface).Method\", Method, 5, \"\"},\n\t\t{\"(*Interface).Methods\", Method, 24, \"\"},\n\t\t{\"(*Interface).NumEmbeddeds\", Method, 5, \"\"},\n\t\t{\"(*Interface).NumExplicitMethods\", Method, 5, \"\"},\n\t\t{\"(*Interface).NumMethods\", Method, 5, \"\"},\n\t\t{\"(*Interface).String\", Method, 5, \"\"},\n\t\t{\"(*Interface).Underlying\", Method, 5, \"\"},\n\t\t{\"(*Label).Exported\", Method, 5, \"\"},\n\t\t{\"(*Label).Id\", Method, 5, \"\"},\n\t\t{\"(*Label).Name\", Method, 5, \"\"},\n\t\t{\"(*Label).Parent\", Method, 5, \"\"},\n\t\t{\"(*Label).Pkg\", Method, 5, \"\"},\n\t\t{\"(*Label).Pos\", Method, 5, \"\"},\n\t\t{\"(*Label).String\", Method, 5, \"\"},\n\t\t{\"(*Label).Type\", Method, 5, \"\"},\n\t\t{\"(*Map).Elem\", Method, 5, \"\"},\n\t\t{\"(*Map).Key\", Method, 5, \"\"},\n\t\t{\"(*Map).String\", Method, 5, \"\"},\n\t\t{\"(*Map).Underlying\", Method, 5, \"\"},\n\t\t{\"(*MethodSet).At\", Method, 5, \"\"},\n\t\t{\"(*MethodSet).Len\", Method, 5, \"\"},\n\t\t{\"(*MethodSet).Lookup\", Method, 5, \"\"},\n\t\t{\"(*MethodSet).Methods\", Method, 24, \"\"},\n\t\t{\"(*MethodSet).String\", Method, 5, \"\"},\n\t\t{\"(*Named).AddMethod\", Method, 5, \"\"},\n\t\t{\"(*Named).Method\", Method, 5, \"\"},\n\t\t{\"(*Named).Methods\", Method, 24, \"\"},\n\t\t{\"(*Named).NumMethods\", Method, 5, \"\"},\n\t\t{\"(*Named).Obj\", Method, 5, \"\"},\n\t\t{\"(*Named).Origin\", Method, 18, \"\"},\n\t\t{\"(*Named).SetTypeParams\", Method, 18, \"\"},\n\t\t{\"(*Named).SetUnderlying\", Method, 5, \"\"},\n\t\t{\"(*Named).String\", Method, 5, \"\"},\n\t\t{\"(*Named).TypeArgs\", Method, 18, \"\"},\n\t\t{\"(*Named).TypeParams\", Method, 18, \"\"},\n\t\t{\"(*Named).Underlying\", Method, 5, \"\"},\n\t\t{\"(*Nil).Exported\", Method, 5, \"\"},\n\t\t{\"(*Nil).Id\", Method, 5, \"\"},\n\t\t{\"(*Nil).Name\", Method, 5, \"\"},\n\t\t{\"(*Nil).Parent\", Method, 5, \"\"},\n\t\t{\"(*Nil).Pkg\", Method, 5, \"\"},\n\t\t{\"(*Nil).Pos\", Method, 5, \"\"},\n\t\t{\"(*Nil).String\", Method, 5, \"\"},\n\t\t{\"(*Nil).Type\", Method, 5, \"\"},\n\t\t{\"(*Package).Complete\", Method, 5, \"\"},\n\t\t{\"(*Package).GoVersion\", Method, 21, \"\"},\n\t\t{\"(*Package).Imports\", Method, 5, \"\"},\n\t\t{\"(*Package).MarkComplete\", Method, 5, \"\"},\n\t\t{\"(*Package).Name\", Method, 5, \"\"},\n\t\t{\"(*Package).Path\", Method, 5, \"\"},\n\t\t{\"(*Package).Scope\", Method, 5, \"\"},\n\t\t{\"(*Package).SetImports\", Method, 5, \"\"},\n\t\t{\"(*Package).SetName\", Method, 6, \"\"},\n\t\t{\"(*Package).String\", Method, 5, \"\"},\n\t\t{\"(*PkgName).Exported\", Method, 5, \"\"},\n\t\t{\"(*PkgName).Id\", Method, 5, \"\"},\n\t\t{\"(*PkgName).Imported\", Method, 5, \"\"},\n\t\t{\"(*PkgName).Name\", Method, 5, \"\"},\n\t\t{\"(*PkgName).Parent\", Method, 5, \"\"},\n\t\t{\"(*PkgName).Pkg\", Method, 5, \"\"},\n\t\t{\"(*PkgName).Pos\", Method, 5, \"\"},\n\t\t{\"(*PkgName).String\", Method, 5, \"\"},\n\t\t{\"(*PkgName).Type\", Method, 5, \"\"},\n\t\t{\"(*Pointer).Elem\", Method, 5, \"\"},\n\t\t{\"(*Pointer).String\", Method, 5, \"\"},\n\t\t{\"(*Pointer).Underlying\", Method, 5, \"\"},\n\t\t{\"(*Scope).Child\", Method, 5, \"\"},\n\t\t{\"(*Scope).Children\", Method, 24, \"\"},\n\t\t{\"(*Scope).Contains\", Method, 5, \"\"},\n\t\t{\"(*Scope).End\", Method, 5, \"\"},\n\t\t{\"(*Scope).Innermost\", Method, 5, \"\"},\n\t\t{\"(*Scope).Insert\", Method, 5, \"\"},\n\t\t{\"(*Scope).Len\", Method, 5, \"\"},\n\t\t{\"(*Scope).Lookup\", Method, 5, \"\"},\n\t\t{\"(*Scope).LookupParent\", Method, 5, \"\"},\n\t\t{\"(*Scope).Names\", Method, 5, \"\"},\n\t\t{\"(*Scope).NumChildren\", Method, 5, \"\"},\n\t\t{\"(*Scope).Parent\", Method, 5, \"\"},\n\t\t{\"(*Scope).Pos\", Method, 5, \"\"},\n\t\t{\"(*Scope).String\", Method, 5, \"\"},\n\t\t{\"(*Scope).WriteTo\", Method, 5, \"\"},\n\t\t{\"(*Selection).Index\", Method, 5, \"\"},\n\t\t{\"(*Selection).Indirect\", Method, 5, \"\"},\n\t\t{\"(*Selection).Kind\", Method, 5, \"\"},\n\t\t{\"(*Selection).Obj\", Method, 5, \"\"},\n\t\t{\"(*Selection).Recv\", Method, 5, \"\"},\n\t\t{\"(*Selection).String\", Method, 5, \"\"},\n\t\t{\"(*Selection).Type\", Method, 5, \"\"},\n\t\t{\"(*Signature).Params\", Method, 5, \"\"},\n\t\t{\"(*Signature).Recv\", Method, 5, \"\"},\n\t\t{\"(*Signature).RecvTypeParams\", Method, 18, \"\"},\n\t\t{\"(*Signature).Results\", Method, 5, \"\"},\n\t\t{\"(*Signature).String\", Method, 5, \"\"},\n\t\t{\"(*Signature).TypeParams\", Method, 18, \"\"},\n\t\t{\"(*Signature).Underlying\", Method, 5, \"\"},\n\t\t{\"(*Signature).Variadic\", Method, 5, \"\"},\n\t\t{\"(*Slice).Elem\", Method, 5, \"\"},\n\t\t{\"(*Slice).String\", Method, 5, \"\"},\n\t\t{\"(*Slice).Underlying\", Method, 5, \"\"},\n\t\t{\"(*StdSizes).Alignof\", Method, 5, \"\"},\n\t\t{\"(*StdSizes).Offsetsof\", Method, 5, \"\"},\n\t\t{\"(*StdSizes).Sizeof\", Method, 5, \"\"},\n\t\t{\"(*Struct).Field\", Method, 5, \"\"},\n\t\t{\"(*Struct).Fields\", Method, 24, \"\"},\n\t\t{\"(*Struct).NumFields\", Method, 5, \"\"},\n\t\t{\"(*Struct).String\", Method, 5, \"\"},\n\t\t{\"(*Struct).Tag\", Method, 5, \"\"},\n\t\t{\"(*Struct).Underlying\", Method, 5, \"\"},\n\t\t{\"(*Term).String\", Method, 18, \"\"},\n\t\t{\"(*Term).Tilde\", Method, 18, \"\"},\n\t\t{\"(*Term).Type\", Method, 18, \"\"},\n\t\t{\"(*Tuple).At\", Method, 5, \"\"},\n\t\t{\"(*Tuple).Len\", Method, 5, \"\"},\n\t\t{\"(*Tuple).String\", Method, 5, \"\"},\n\t\t{\"(*Tuple).Underlying\", Method, 5, \"\"},\n\t\t{\"(*Tuple).Variables\", Method, 24, \"\"},\n\t\t{\"(*TypeList).At\", Method, 18, \"\"},\n\t\t{\"(*TypeList).Len\", Method, 18, \"\"},\n\t\t{\"(*TypeList).Types\", Method, 24, \"\"},\n\t\t{\"(*TypeName).Exported\", Method, 5, \"\"},\n\t\t{\"(*TypeName).Id\", Method, 5, \"\"},\n\t\t{\"(*TypeName).IsAlias\", Method, 9, \"\"},\n\t\t{\"(*TypeName).Name\", Method, 5, \"\"},\n\t\t{\"(*TypeName).Parent\", Method, 5, \"\"},\n\t\t{\"(*TypeName).Pkg\", Method, 5, \"\"},\n\t\t{\"(*TypeName).Pos\", Method, 5, \"\"},\n\t\t{\"(*TypeName).String\", Method, 5, \"\"},\n\t\t{\"(*TypeName).Type\", Method, 5, \"\"},\n\t\t{\"(*TypeParam).Constraint\", Method, 18, \"\"},\n\t\t{\"(*TypeParam).Index\", Method, 18, \"\"},\n\t\t{\"(*TypeParam).Obj\", Method, 18, \"\"},\n\t\t{\"(*TypeParam).SetConstraint\", Method, 18, \"\"},\n\t\t{\"(*TypeParam).String\", Method, 18, \"\"},\n\t\t{\"(*TypeParam).Underlying\", Method, 18, \"\"},\n\t\t{\"(*TypeParamList).At\", Method, 18, \"\"},\n\t\t{\"(*TypeParamList).Len\", Method, 18, \"\"},\n\t\t{\"(*TypeParamList).TypeParams\", Method, 24, \"\"},\n\t\t{\"(*Union).Len\", Method, 18, \"\"},\n\t\t{\"(*Union).String\", Method, 18, \"\"},\n\t\t{\"(*Union).Term\", Method, 18, \"\"},\n\t\t{\"(*Union).Terms\", Method, 24, \"\"},\n\t\t{\"(*Union).Underlying\", Method, 18, \"\"},\n\t\t{\"(*Var).Anonymous\", Method, 5, \"\"},\n\t\t{\"(*Var).Embedded\", Method, 11, \"\"},\n\t\t{\"(*Var).Exported\", Method, 5, \"\"},\n\t\t{\"(*Var).Id\", Method, 5, \"\"},\n\t\t{\"(*Var).IsField\", Method, 5, \"\"},\n\t\t{\"(*Var).Kind\", Method, 25, \"\"},\n\t\t{\"(*Var).Name\", Method, 5, \"\"},\n\t\t{\"(*Var).Origin\", Method, 19, \"\"},\n\t\t{\"(*Var).Parent\", Method, 5, \"\"},\n\t\t{\"(*Var).Pkg\", Method, 5, \"\"},\n\t\t{\"(*Var).Pos\", Method, 5, \"\"},\n\t\t{\"(*Var).SetKind\", Method, 25, \"\"},\n\t\t{\"(*Var).String\", Method, 5, \"\"},\n\t\t{\"(*Var).Type\", Method, 5, \"\"},\n\t\t{\"(Checker).ObjectOf\", Method, 5, \"\"},\n\t\t{\"(Checker).PkgNameOf\", Method, 22, \"\"},\n\t\t{\"(Checker).TypeOf\", Method, 5, \"\"},\n\t\t{\"(Error).Error\", Method, 5, \"\"},\n\t\t{\"(Importer).Import\", Method, 5, \"\"},\n\t\t{\"(ImporterFrom).Import\", Method, 6, \"\"},\n\t\t{\"(ImporterFrom).ImportFrom\", Method, 6, \"\"},\n\t\t{\"(Object).Exported\", Method, 5, \"\"},\n\t\t{\"(Object).Id\", Method, 5, \"\"},\n\t\t{\"(Object).Name\", Method, 5, \"\"},\n\t\t{\"(Object).Parent\", Method, 5, \"\"},\n\t\t{\"(Object).Pkg\", Method, 5, \"\"},\n\t\t{\"(Object).Pos\", Method, 5, \"\"},\n\t\t{\"(Object).String\", Method, 5, \"\"},\n\t\t{\"(Object).Type\", Method, 5, \"\"},\n\t\t{\"(Sizes).Alignof\", Method, 5, \"\"},\n\t\t{\"(Sizes).Offsetsof\", Method, 5, \"\"},\n\t\t{\"(Sizes).Sizeof\", Method, 5, \"\"},\n\t\t{\"(Type).String\", Method, 5, \"\"},\n\t\t{\"(Type).Underlying\", Method, 5, \"\"},\n\t\t{\"(TypeAndValue).Addressable\", Method, 5, \"\"},\n\t\t{\"(TypeAndValue).Assignable\", Method, 5, \"\"},\n\t\t{\"(TypeAndValue).HasOk\", Method, 5, \"\"},\n\t\t{\"(TypeAndValue).IsBuiltin\", Method, 5, \"\"},\n\t\t{\"(TypeAndValue).IsNil\", Method, 5, \"\"},\n\t\t{\"(TypeAndValue).IsType\", Method, 5, \"\"},\n\t\t{\"(TypeAndValue).IsValue\", Method, 5, \"\"},\n\t\t{\"(TypeAndValue).IsVoid\", Method, 5, \"\"},\n\t\t{\"(VarKind).String\", Method, 25, \"\"},\n\t\t{\"Alias\", Type, 22, \"\"},\n\t\t{\"ArgumentError\", Type, 18, \"\"},\n\t\t{\"ArgumentError.Err\", Field, 18, \"\"},\n\t\t{\"ArgumentError.Index\", Field, 18, \"\"},\n\t\t{\"Array\", Type, 5, \"\"},\n\t\t{\"AssertableTo\", Func, 5, \"func(V *Interface, T Type) bool\"},\n\t\t{\"AssignableTo\", Func, 5, \"func(V Type, T Type) bool\"},\n\t\t{\"Basic\", Type, 5, \"\"},\n\t\t{\"BasicInfo\", Type, 5, \"\"},\n\t\t{\"BasicKind\", Type, 5, \"\"},\n\t\t{\"Bool\", Const, 5, \"\"},\n\t\t{\"Builtin\", Type, 5, \"\"},\n\t\t{\"Byte\", Const, 5, \"\"},\n\t\t{\"Chan\", Type, 5, \"\"},\n\t\t{\"ChanDir\", Type, 5, \"\"},\n\t\t{\"CheckExpr\", Func, 13, \"func(fset *token.FileSet, pkg *Package, pos token.Pos, expr ast.Expr, info *Info) (err error)\"},\n\t\t{\"Checker\", Type, 5, \"\"},\n\t\t{\"Checker.Info\", Field, 5, \"\"},\n\t\t{\"Comparable\", Func, 5, \"func(T Type) bool\"},\n\t\t{\"Complex128\", Const, 5, \"\"},\n\t\t{\"Complex64\", Const, 5, \"\"},\n\t\t{\"Config\", Type, 5, \"\"},\n\t\t{\"Config.Context\", Field, 18, \"\"},\n\t\t{\"Config.DisableUnusedImportCheck\", Field, 5, \"\"},\n\t\t{\"Config.Error\", Field, 5, \"\"},\n\t\t{\"Config.FakeImportC\", Field, 5, \"\"},\n\t\t{\"Config.GoVersion\", Field, 18, \"\"},\n\t\t{\"Config.IgnoreFuncBodies\", Field, 5, \"\"},\n\t\t{\"Config.Importer\", Field, 5, \"\"},\n\t\t{\"Config.Sizes\", Field, 5, \"\"},\n\t\t{\"Const\", Type, 5, \"\"},\n\t\t{\"Context\", Type, 18, \"\"},\n\t\t{\"ConvertibleTo\", Func, 5, \"func(V Type, T Type) bool\"},\n\t\t{\"DefPredeclaredTestFuncs\", Func, 5, \"func()\"},\n\t\t{\"Default\", Func, 8, \"func(t Type) Type\"},\n\t\t{\"Error\", Type, 5, \"\"},\n\t\t{\"Error.Fset\", Field, 5, \"\"},\n\t\t{\"Error.Msg\", Field, 5, \"\"},\n\t\t{\"Error.Pos\", Field, 5, \"\"},\n\t\t{\"Error.Soft\", Field, 5, \"\"},\n\t\t{\"Eval\", Func, 5, \"func(fset *token.FileSet, pkg *Package, pos token.Pos, expr string) (_ TypeAndValue, err error)\"},\n\t\t{\"ExprString\", Func, 5, \"func(x ast.Expr) string\"},\n\t\t{\"FieldVal\", Const, 5, \"\"},\n\t\t{\"FieldVar\", Const, 25, \"\"},\n\t\t{\"Float32\", Const, 5, \"\"},\n\t\t{\"Float64\", Const, 5, \"\"},\n\t\t{\"Func\", Type, 5, \"\"},\n\t\t{\"Id\", Func, 5, \"func(pkg *Package, name string) string\"},\n\t\t{\"Identical\", Func, 5, \"func(x Type, y Type) bool\"},\n\t\t{\"IdenticalIgnoreTags\", Func, 8, \"func(x Type, y Type) bool\"},\n\t\t{\"Implements\", Func, 5, \"func(V Type, T *Interface) bool\"},\n\t\t{\"ImportMode\", Type, 6, \"\"},\n\t\t{\"Importer\", Type, 5, \"\"},\n\t\t{\"ImporterFrom\", Type, 6, \"\"},\n\t\t{\"Info\", Type, 5, \"\"},\n\t\t{\"Info.Defs\", Field, 5, \"\"},\n\t\t{\"Info.FileVersions\", Field, 22, \"\"},\n\t\t{\"Info.Implicits\", Field, 5, \"\"},\n\t\t{\"Info.InitOrder\", Field, 5, \"\"},\n\t\t{\"Info.Instances\", Field, 18, \"\"},\n\t\t{\"Info.Scopes\", Field, 5, \"\"},\n\t\t{\"Info.Selections\", Field, 5, \"\"},\n\t\t{\"Info.Types\", Field, 5, \"\"},\n\t\t{\"Info.Uses\", Field, 5, \"\"},\n\t\t{\"Initializer\", Type, 5, \"\"},\n\t\t{\"Initializer.Lhs\", Field, 5, \"\"},\n\t\t{\"Initializer.Rhs\", Field, 5, \"\"},\n\t\t{\"Instance\", Type, 18, \"\"},\n\t\t{\"Instance.Type\", Field, 18, \"\"},\n\t\t{\"Instance.TypeArgs\", Field, 18, \"\"},\n\t\t{\"Instantiate\", Func, 18, \"func(ctxt *Context, orig Type, targs []Type, validate bool) (Type, error)\"},\n\t\t{\"Int\", Const, 5, \"\"},\n\t\t{\"Int16\", Const, 5, \"\"},\n\t\t{\"Int32\", Const, 5, \"\"},\n\t\t{\"Int64\", Const, 5, \"\"},\n\t\t{\"Int8\", Const, 5, \"\"},\n\t\t{\"Interface\", Type, 5, \"\"},\n\t\t{\"Invalid\", Const, 5, \"\"},\n\t\t{\"IsBoolean\", Const, 5, \"\"},\n\t\t{\"IsComplex\", Const, 5, \"\"},\n\t\t{\"IsConstType\", Const, 5, \"\"},\n\t\t{\"IsFloat\", Const, 5, \"\"},\n\t\t{\"IsInteger\", Const, 5, \"\"},\n\t\t{\"IsInterface\", Func, 5, \"func(t Type) bool\"},\n\t\t{\"IsNumeric\", Const, 5, \"\"},\n\t\t{\"IsOrdered\", Const, 5, \"\"},\n\t\t{\"IsString\", Const, 5, \"\"},\n\t\t{\"IsUnsigned\", Const, 5, \"\"},\n\t\t{\"IsUntyped\", Const, 5, \"\"},\n\t\t{\"Label\", Type, 5, \"\"},\n\t\t{\"LocalVar\", Const, 25, \"\"},\n\t\t{\"LookupFieldOrMethod\", Func, 5, \"func(T Type, addressable bool, pkg *Package, name string) (obj Object, index []int, indirect bool)\"},\n\t\t{\"LookupSelection\", Func, 25, \"func(T Type, addressable bool, pkg *Package, name string) (Selection, bool)\"},\n\t\t{\"Map\", Type, 5, \"\"},\n\t\t{\"MethodExpr\", Const, 5, \"\"},\n\t\t{\"MethodSet\", Type, 5, \"\"},\n\t\t{\"MethodVal\", Const, 5, \"\"},\n\t\t{\"MissingMethod\", Func, 5, \"func(V Type, T *Interface, static bool) (method *Func, wrongType bool)\"},\n\t\t{\"Named\", Type, 5, \"\"},\n\t\t{\"NewAlias\", Func, 22, \"func(obj *TypeName, rhs Type) *Alias\"},\n\t\t{\"NewArray\", Func, 5, \"func(elem Type, len int64) *Array\"},\n\t\t{\"NewChan\", Func, 5, \"func(dir ChanDir, elem Type) *Chan\"},\n\t\t{\"NewChecker\", Func, 5, \"func(conf *Config, fset *token.FileSet, pkg *Package, info *Info) *Checker\"},\n\t\t{\"NewConst\", Func, 5, \"func(pos token.Pos, pkg *Package, name string, typ Type, val constant.Value) *Const\"},\n\t\t{\"NewContext\", Func, 18, \"func() *Context\"},\n\t\t{\"NewField\", Func, 5, \"func(pos token.Pos, pkg *Package, name string, typ Type, embedded bool) *Var\"},\n\t\t{\"NewFunc\", Func, 5, \"func(pos token.Pos, pkg *Package, name string, sig *Signature) *Func\"},\n\t\t{\"NewInterface\", Func, 5, \"func(methods []*Func, embeddeds []*Named) *Interface\"},\n\t\t{\"NewInterfaceType\", Func, 11, \"func(methods []*Func, embeddeds []Type) *Interface\"},\n\t\t{\"NewLabel\", Func, 5, \"func(pos token.Pos, pkg *Package, name string) *Label\"},\n\t\t{\"NewMap\", Func, 5, \"func(key Type, elem Type) *Map\"},\n\t\t{\"NewMethodSet\", Func, 5, \"func(T Type) *MethodSet\"},\n\t\t{\"NewNamed\", Func, 5, \"func(obj *TypeName, underlying Type, methods []*Func) *Named\"},\n\t\t{\"NewPackage\", Func, 5, \"func(path string, name string) *Package\"},\n\t\t{\"NewParam\", Func, 5, \"func(pos token.Pos, pkg *Package, name string, typ Type) *Var\"},\n\t\t{\"NewPkgName\", Func, 5, \"func(pos token.Pos, pkg *Package, name string, imported *Package) *PkgName\"},\n\t\t{\"NewPointer\", Func, 5, \"func(elem Type) *Pointer\"},\n\t\t{\"NewScope\", Func, 5, \"func(parent *Scope, pos token.Pos, end token.Pos, comment string) *Scope\"},\n\t\t{\"NewSignature\", Func, 5, \"func(recv *Var, params *Tuple, results *Tuple, variadic bool) *Signature\"},\n\t\t{\"NewSignatureType\", Func, 18, \"func(recv *Var, recvTypeParams []*TypeParam, typeParams []*TypeParam, params *Tuple, results *Tuple, variadic bool) *Signature\"},\n\t\t{\"NewSlice\", Func, 5, \"func(elem Type) *Slice\"},\n\t\t{\"NewStruct\", Func, 5, \"func(fields []*Var, tags []string) *Struct\"},\n\t\t{\"NewTerm\", Func, 18, \"func(tilde bool, typ Type) *Term\"},\n\t\t{\"NewTuple\", Func, 5, \"func(x ...*Var) *Tuple\"},\n\t\t{\"NewTypeName\", Func, 5, \"func(pos token.Pos, pkg *Package, name string, typ Type) *TypeName\"},\n\t\t{\"NewTypeParam\", Func, 18, \"func(obj *TypeName, constraint Type) *TypeParam\"},\n\t\t{\"NewUnion\", Func, 18, \"func(terms []*Term) *Union\"},\n\t\t{\"NewVar\", Func, 5, \"func(pos token.Pos, pkg *Package, name string, typ Type) *Var\"},\n\t\t{\"Nil\", Type, 5, \"\"},\n\t\t{\"ObjectString\", Func, 5, \"func(obj Object, qf Qualifier) string\"},\n\t\t{\"Package\", Type, 5, \"\"},\n\t\t{\"PackageVar\", Const, 25, \"\"},\n\t\t{\"ParamVar\", Const, 25, \"\"},\n\t\t{\"PkgName\", Type, 5, \"\"},\n\t\t{\"Pointer\", Type, 5, \"\"},\n\t\t{\"Qualifier\", Type, 5, \"\"},\n\t\t{\"RecvOnly\", Const, 5, \"\"},\n\t\t{\"RecvVar\", Const, 25, \"\"},\n\t\t{\"RelativeTo\", Func, 5, \"func(pkg *Package) Qualifier\"},\n\t\t{\"ResultVar\", Const, 25, \"\"},\n\t\t{\"Rune\", Const, 5, \"\"},\n\t\t{\"Satisfies\", Func, 20, \"func(V Type, T *Interface) bool\"},\n\t\t{\"Scope\", Type, 5, \"\"},\n\t\t{\"Selection\", Type, 5, \"\"},\n\t\t{\"SelectionKind\", Type, 5, \"\"},\n\t\t{\"SelectionString\", Func, 5, \"func(s *Selection, qf Qualifier) string\"},\n\t\t{\"SendOnly\", Const, 5, \"\"},\n\t\t{\"SendRecv\", Const, 5, \"\"},\n\t\t{\"Signature\", Type, 5, \"\"},\n\t\t{\"Sizes\", Type, 5, \"\"},\n\t\t{\"SizesFor\", Func, 9, \"func(compiler string, arch string) Sizes\"},\n\t\t{\"Slice\", Type, 5, \"\"},\n\t\t{\"StdSizes\", Type, 5, \"\"},\n\t\t{\"StdSizes.MaxAlign\", Field, 5, \"\"},\n\t\t{\"StdSizes.WordSize\", Field, 5, \"\"},\n\t\t{\"String\", Const, 5, \"\"},\n\t\t{\"Struct\", Type, 5, \"\"},\n\t\t{\"Term\", Type, 18, \"\"},\n\t\t{\"Tuple\", Type, 5, \"\"},\n\t\t{\"Typ\", Var, 5, \"\"},\n\t\t{\"Type\", Type, 5, \"\"},\n\t\t{\"TypeAndValue\", Type, 5, \"\"},\n\t\t{\"TypeAndValue.Type\", Field, 5, \"\"},\n\t\t{\"TypeAndValue.Value\", Field, 5, \"\"},\n\t\t{\"TypeList\", Type, 18, \"\"},\n\t\t{\"TypeName\", Type, 5, \"\"},\n\t\t{\"TypeParam\", Type, 18, \"\"},\n\t\t{\"TypeParamList\", Type, 18, \"\"},\n\t\t{\"TypeString\", Func, 5, \"func(typ Type, qf Qualifier) string\"},\n\t\t{\"Uint\", Const, 5, \"\"},\n\t\t{\"Uint16\", Const, 5, \"\"},\n\t\t{\"Uint32\", Const, 5, \"\"},\n\t\t{\"Uint64\", Const, 5, \"\"},\n\t\t{\"Uint8\", Const, 5, \"\"},\n\t\t{\"Uintptr\", Const, 5, \"\"},\n\t\t{\"Unalias\", Func, 22, \"func(t Type) Type\"},\n\t\t{\"Union\", Type, 18, \"\"},\n\t\t{\"Universe\", Var, 5, \"\"},\n\t\t{\"Unsafe\", Var, 5, \"\"},\n\t\t{\"UnsafePointer\", Const, 5, \"\"},\n\t\t{\"UntypedBool\", Const, 5, \"\"},\n\t\t{\"UntypedComplex\", Const, 5, \"\"},\n\t\t{\"UntypedFloat\", Const, 5, \"\"},\n\t\t{\"UntypedInt\", Const, 5, \"\"},\n\t\t{\"UntypedNil\", Const, 5, \"\"},\n\t\t{\"UntypedRune\", Const, 5, \"\"},\n\t\t{\"UntypedString\", Const, 5, \"\"},\n\t\t{\"Var\", Type, 5, \"\"},\n\t\t{\"VarKind\", Type, 25, \"\"},\n\t\t{\"WriteExpr\", Func, 5, \"func(buf *bytes.Buffer, x ast.Expr)\"},\n\t\t{\"WriteSignature\", Func, 5, \"func(buf *bytes.Buffer, sig *Signature, qf Qualifier)\"},\n\t\t{\"WriteType\", Func, 5, \"func(buf *bytes.Buffer, typ Type, qf Qualifier)\"},\n\t},\n\t\"go/version\": {\n\t\t{\"Compare\", Func, 22, \"func(x string, y string) int\"},\n\t\t{\"IsValid\", Func, 22, \"func(x string) bool\"},\n\t\t{\"Lang\", Func, 22, \"func(x string) string\"},\n\t},\n\t\"hash\": {\n\t\t{\"(Cloner).BlockSize\", Method, 25, \"\"},\n\t\t{\"(Cloner).Clone\", Method, 25, \"\"},\n\t\t{\"(Cloner).Reset\", Method, 25, \"\"},\n\t\t{\"(Cloner).Size\", Method, 25, \"\"},\n\t\t{\"(Cloner).Sum\", Method, 25, \"\"},\n\t\t{\"(Cloner).Write\", Method, 25, \"\"},\n\t\t{\"(Hash).BlockSize\", Method, 0, \"\"},\n\t\t{\"(Hash).Reset\", Method, 0, \"\"},\n\t\t{\"(Hash).Size\", Method, 0, \"\"},\n\t\t{\"(Hash).Sum\", Method, 0, \"\"},\n\t\t{\"(Hash).Write\", Method, 0, \"\"},\n\t\t{\"(Hash32).BlockSize\", Method, 0, \"\"},\n\t\t{\"(Hash32).Reset\", Method, 0, \"\"},\n\t\t{\"(Hash32).Size\", Method, 0, \"\"},\n\t\t{\"(Hash32).Sum\", Method, 0, \"\"},\n\t\t{\"(Hash32).Sum32\", Method, 0, \"\"},\n\t\t{\"(Hash32).Write\", Method, 0, \"\"},\n\t\t{\"(Hash64).BlockSize\", Method, 0, \"\"},\n\t\t{\"(Hash64).Reset\", Method, 0, \"\"},\n\t\t{\"(Hash64).Size\", Method, 0, \"\"},\n\t\t{\"(Hash64).Sum\", Method, 0, \"\"},\n\t\t{\"(Hash64).Sum64\", Method, 0, \"\"},\n\t\t{\"(Hash64).Write\", Method, 0, \"\"},\n\t\t{\"(XOF).BlockSize\", Method, 25, \"\"},\n\t\t{\"(XOF).Read\", Method, 25, \"\"},\n\t\t{\"(XOF).Reset\", Method, 25, \"\"},\n\t\t{\"(XOF).Write\", Method, 25, \"\"},\n\t\t{\"Cloner\", Type, 25, \"\"},\n\t\t{\"Hash\", Type, 0, \"\"},\n\t\t{\"Hash32\", Type, 0, \"\"},\n\t\t{\"Hash64\", Type, 0, \"\"},\n\t\t{\"XOF\", Type, 25, \"\"},\n\t},\n\t\"hash/adler32\": {\n\t\t{\"Checksum\", Func, 0, \"func(data []byte) uint32\"},\n\t\t{\"New\", Func, 0, \"func() hash.Hash32\"},\n\t\t{\"Size\", Const, 0, \"\"},\n\t},\n\t\"hash/crc32\": {\n\t\t{\"Castagnoli\", Const, 0, \"\"},\n\t\t{\"Checksum\", Func, 0, \"func(data []byte, tab *Table) uint32\"},\n\t\t{\"ChecksumIEEE\", Func, 0, \"func(data []byte) uint32\"},\n\t\t{\"IEEE\", Const, 0, \"\"},\n\t\t{\"IEEETable\", Var, 0, \"\"},\n\t\t{\"Koopman\", Const, 0, \"\"},\n\t\t{\"MakeTable\", Func, 0, \"func(poly uint32) *Table\"},\n\t\t{\"New\", Func, 0, \"func(tab *Table) hash.Hash32\"},\n\t\t{\"NewIEEE\", Func, 0, \"func() hash.Hash32\"},\n\t\t{\"Size\", Const, 0, \"\"},\n\t\t{\"Table\", Type, 0, \"\"},\n\t\t{\"Update\", Func, 0, \"func(crc uint32, tab *Table, p []byte) uint32\"},\n\t},\n\t\"hash/crc64\": {\n\t\t{\"Checksum\", Func, 0, \"func(data []byte, tab *Table) uint64\"},\n\t\t{\"ECMA\", Const, 0, \"\"},\n\t\t{\"ISO\", Const, 0, \"\"},\n\t\t{\"MakeTable\", Func, 0, \"func(poly uint64) *Table\"},\n\t\t{\"New\", Func, 0, \"func(tab *Table) hash.Hash64\"},\n\t\t{\"Size\", Const, 0, \"\"},\n\t\t{\"Table\", Type, 0, \"\"},\n\t\t{\"Update\", Func, 0, \"func(crc uint64, tab *Table, p []byte) uint64\"},\n\t},\n\t\"hash/fnv\": {\n\t\t{\"New128\", Func, 9, \"func() hash.Hash\"},\n\t\t{\"New128a\", Func, 9, \"func() hash.Hash\"},\n\t\t{\"New32\", Func, 0, \"func() hash.Hash32\"},\n\t\t{\"New32a\", Func, 0, \"func() hash.Hash32\"},\n\t\t{\"New64\", Func, 0, \"func() hash.Hash64\"},\n\t\t{\"New64a\", Func, 0, \"func() hash.Hash64\"},\n\t},\n\t\"hash/maphash\": {\n\t\t{\"(*Hash).BlockSize\", Method, 14, \"\"},\n\t\t{\"(*Hash).Clone\", Method, 25, \"\"},\n\t\t{\"(*Hash).Reset\", Method, 14, \"\"},\n\t\t{\"(*Hash).Seed\", Method, 14, \"\"},\n\t\t{\"(*Hash).SetSeed\", Method, 14, \"\"},\n\t\t{\"(*Hash).Size\", Method, 14, \"\"},\n\t\t{\"(*Hash).Sum\", Method, 14, \"\"},\n\t\t{\"(*Hash).Sum64\", Method, 14, \"\"},\n\t\t{\"(*Hash).Write\", Method, 14, \"\"},\n\t\t{\"(*Hash).WriteByte\", Method, 14, \"\"},\n\t\t{\"(*Hash).WriteString\", Method, 14, \"\"},\n\t\t{\"Bytes\", Func, 19, \"func(seed Seed, b []byte) uint64\"},\n\t\t{\"Comparable\", Func, 24, \"func[T comparable](seed Seed, v T) uint64\"},\n\t\t{\"Hash\", Type, 14, \"\"},\n\t\t{\"MakeSeed\", Func, 14, \"func() Seed\"},\n\t\t{\"Seed\", Type, 14, \"\"},\n\t\t{\"String\", Func, 19, \"func(seed Seed, s string) uint64\"},\n\t\t{\"WriteComparable\", Func, 24, \"func[T comparable](h *Hash, x T)\"},\n\t},\n\t\"html\": {\n\t\t{\"EscapeString\", Func, 0, \"func(s string) string\"},\n\t\t{\"UnescapeString\", Func, 0, \"func(s string) string\"},\n\t},\n\t\"html/template\": {\n\t\t{\"(*Error).Error\", Method, 0, \"\"},\n\t\t{\"(*Template).AddParseTree\", Method, 0, \"\"},\n\t\t{\"(*Template).Clone\", Method, 0, \"\"},\n\t\t{\"(*Template).DefinedTemplates\", Method, 6, \"\"},\n\t\t{\"(*Template).Delims\", Method, 0, \"\"},\n\t\t{\"(*Template).Execute\", Method, 0, \"\"},\n\t\t{\"(*Template).ExecuteTemplate\", Method, 0, \"\"},\n\t\t{\"(*Template).Funcs\", Method, 0, \"\"},\n\t\t{\"(*Template).Lookup\", Method, 0, \"\"},\n\t\t{\"(*Template).Name\", Method, 0, \"\"},\n\t\t{\"(*Template).New\", Method, 0, \"\"},\n\t\t{\"(*Template).Option\", Method, 5, \"\"},\n\t\t{\"(*Template).Parse\", Method, 0, \"\"},\n\t\t{\"(*Template).ParseFS\", Method, 16, \"\"},\n\t\t{\"(*Template).ParseFiles\", Method, 0, \"\"},\n\t\t{\"(*Template).ParseGlob\", Method, 0, \"\"},\n\t\t{\"(*Template).Templates\", Method, 0, \"\"},\n\t\t{\"CSS\", Type, 0, \"\"},\n\t\t{\"ErrAmbigContext\", Const, 0, \"\"},\n\t\t{\"ErrBadHTML\", Const, 0, \"\"},\n\t\t{\"ErrBranchEnd\", Const, 0, \"\"},\n\t\t{\"ErrEndContext\", Const, 0, \"\"},\n\t\t{\"ErrJSTemplate\", Const, 21, \"\"},\n\t\t{\"ErrNoSuchTemplate\", Const, 0, \"\"},\n\t\t{\"ErrOutputContext\", Const, 0, \"\"},\n\t\t{\"ErrPartialCharset\", Const, 0, \"\"},\n\t\t{\"ErrPartialEscape\", Const, 0, \"\"},\n\t\t{\"ErrPredefinedEscaper\", Const, 9, \"\"},\n\t\t{\"ErrRangeLoopReentry\", Const, 0, \"\"},\n\t\t{\"ErrSlashAmbig\", Const, 0, \"\"},\n\t\t{\"Error\", Type, 0, \"\"},\n\t\t{\"Error.Description\", Field, 0, \"\"},\n\t\t{\"Error.ErrorCode\", Field, 0, \"\"},\n\t\t{\"Error.Line\", Field, 0, \"\"},\n\t\t{\"Error.Name\", Field, 0, \"\"},\n\t\t{\"Error.Node\", Field, 4, \"\"},\n\t\t{\"ErrorCode\", Type, 0, \"\"},\n\t\t{\"FuncMap\", Type, 0, \"\"},\n\t\t{\"HTML\", Type, 0, \"\"},\n\t\t{\"HTMLAttr\", Type, 0, \"\"},\n\t\t{\"HTMLEscape\", Func, 0, \"func(w io.Writer, b []byte)\"},\n\t\t{\"HTMLEscapeString\", Func, 0, \"func(s string) string\"},\n\t\t{\"HTMLEscaper\", Func, 0, \"func(args ...any) string\"},\n\t\t{\"IsTrue\", Func, 6, \"func(val any) (truth bool, ok bool)\"},\n\t\t{\"JS\", Type, 0, \"\"},\n\t\t{\"JSEscape\", Func, 0, \"func(w io.Writer, b []byte)\"},\n\t\t{\"JSEscapeString\", Func, 0, \"func(s string) string\"},\n\t\t{\"JSEscaper\", Func, 0, \"func(args ...any) string\"},\n\t\t{\"JSStr\", Type, 0, \"\"},\n\t\t{\"Must\", Func, 0, \"func(t *Template, err error) *Template\"},\n\t\t{\"New\", Func, 0, \"func(name string) *Template\"},\n\t\t{\"OK\", Const, 0, \"\"},\n\t\t{\"ParseFS\", Func, 16, \"func(fs fs.FS, patterns ...string) (*Template, error)\"},\n\t\t{\"ParseFiles\", Func, 0, \"func(filenames ...string) (*Template, error)\"},\n\t\t{\"ParseGlob\", Func, 0, \"func(pattern string) (*Template, error)\"},\n\t\t{\"Srcset\", Type, 10, \"\"},\n\t\t{\"Template\", Type, 0, \"\"},\n\t\t{\"Template.Tree\", Field, 2, \"\"},\n\t\t{\"URL\", Type, 0, \"\"},\n\t\t{\"URLQueryEscaper\", Func, 0, \"func(args ...any) string\"},\n\t},\n\t\"image\": {\n\t\t{\"(*Alpha).AlphaAt\", Method, 4, \"\"},\n\t\t{\"(*Alpha).At\", Method, 0, \"\"},\n\t\t{\"(*Alpha).Bounds\", Method, 0, \"\"},\n\t\t{\"(*Alpha).ColorModel\", Method, 0, \"\"},\n\t\t{\"(*Alpha).Opaque\", Method, 0, \"\"},\n\t\t{\"(*Alpha).PixOffset\", Method, 0, \"\"},\n\t\t{\"(*Alpha).RGBA64At\", Method, 17, \"\"},\n\t\t{\"(*Alpha).Set\", Method, 0, \"\"},\n\t\t{\"(*Alpha).SetAlpha\", Method, 0, \"\"},\n\t\t{\"(*Alpha).SetRGBA64\", Method, 17, \"\"},\n\t\t{\"(*Alpha).SubImage\", Method, 0, \"\"},\n\t\t{\"(*Alpha16).Alpha16At\", Method, 4, \"\"},\n\t\t{\"(*Alpha16).At\", Method, 0, \"\"},\n\t\t{\"(*Alpha16).Bounds\", Method, 0, \"\"},\n\t\t{\"(*Alpha16).ColorModel\", Method, 0, \"\"},\n\t\t{\"(*Alpha16).Opaque\", Method, 0, \"\"},\n\t\t{\"(*Alpha16).PixOffset\", Method, 0, \"\"},\n\t\t{\"(*Alpha16).RGBA64At\", Method, 17, \"\"},\n\t\t{\"(*Alpha16).Set\", Method, 0, \"\"},\n\t\t{\"(*Alpha16).SetAlpha16\", Method, 0, \"\"},\n\t\t{\"(*Alpha16).SetRGBA64\", Method, 17, \"\"},\n\t\t{\"(*Alpha16).SubImage\", Method, 0, \"\"},\n\t\t{\"(*CMYK).At\", Method, 5, \"\"},\n\t\t{\"(*CMYK).Bounds\", Method, 5, \"\"},\n\t\t{\"(*CMYK).CMYKAt\", Method, 5, \"\"},\n\t\t{\"(*CMYK).ColorModel\", Method, 5, \"\"},\n\t\t{\"(*CMYK).Opaque\", Method, 5, \"\"},\n\t\t{\"(*CMYK).PixOffset\", Method, 5, \"\"},\n\t\t{\"(*CMYK).RGBA64At\", Method, 17, \"\"},\n\t\t{\"(*CMYK).Set\", Method, 5, \"\"},\n\t\t{\"(*CMYK).SetCMYK\", Method, 5, \"\"},\n\t\t{\"(*CMYK).SetRGBA64\", Method, 17, \"\"},\n\t\t{\"(*CMYK).SubImage\", Method, 5, \"\"},\n\t\t{\"(*Gray).At\", Method, 0, \"\"},\n\t\t{\"(*Gray).Bounds\", Method, 0, \"\"},\n\t\t{\"(*Gray).ColorModel\", Method, 0, \"\"},\n\t\t{\"(*Gray).GrayAt\", Method, 4, \"\"},\n\t\t{\"(*Gray).Opaque\", Method, 0, \"\"},\n\t\t{\"(*Gray).PixOffset\", Method, 0, \"\"},\n\t\t{\"(*Gray).RGBA64At\", Method, 17, \"\"},\n\t\t{\"(*Gray).Set\", Method, 0, \"\"},\n\t\t{\"(*Gray).SetGray\", Method, 0, \"\"},\n\t\t{\"(*Gray).SetRGBA64\", Method, 17, \"\"},\n\t\t{\"(*Gray).SubImage\", Method, 0, \"\"},\n\t\t{\"(*Gray16).At\", Method, 0, \"\"},\n\t\t{\"(*Gray16).Bounds\", Method, 0, \"\"},\n\t\t{\"(*Gray16).ColorModel\", Method, 0, \"\"},\n\t\t{\"(*Gray16).Gray16At\", Method, 4, \"\"},\n\t\t{\"(*Gray16).Opaque\", Method, 0, \"\"},\n\t\t{\"(*Gray16).PixOffset\", Method, 0, \"\"},\n\t\t{\"(*Gray16).RGBA64At\", Method, 17, \"\"},\n\t\t{\"(*Gray16).Set\", Method, 0, \"\"},\n\t\t{\"(*Gray16).SetGray16\", Method, 0, \"\"},\n\t\t{\"(*Gray16).SetRGBA64\", Method, 17, \"\"},\n\t\t{\"(*Gray16).SubImage\", Method, 0, \"\"},\n\t\t{\"(*NRGBA).At\", Method, 0, \"\"},\n\t\t{\"(*NRGBA).Bounds\", Method, 0, \"\"},\n\t\t{\"(*NRGBA).ColorModel\", Method, 0, \"\"},\n\t\t{\"(*NRGBA).NRGBAAt\", Method, 4, \"\"},\n\t\t{\"(*NRGBA).Opaque\", Method, 0, \"\"},\n\t\t{\"(*NRGBA).PixOffset\", Method, 0, \"\"},\n\t\t{\"(*NRGBA).RGBA64At\", Method, 17, \"\"},\n\t\t{\"(*NRGBA).Set\", Method, 0, \"\"},\n\t\t{\"(*NRGBA).SetNRGBA\", Method, 0, \"\"},\n\t\t{\"(*NRGBA).SetRGBA64\", Method, 17, \"\"},\n\t\t{\"(*NRGBA).SubImage\", Method, 0, \"\"},\n\t\t{\"(*NRGBA64).At\", Method, 0, \"\"},\n\t\t{\"(*NRGBA64).Bounds\", Method, 0, \"\"},\n\t\t{\"(*NRGBA64).ColorModel\", Method, 0, \"\"},\n\t\t{\"(*NRGBA64).NRGBA64At\", Method, 4, \"\"},\n\t\t{\"(*NRGBA64).Opaque\", Method, 0, \"\"},\n\t\t{\"(*NRGBA64).PixOffset\", Method, 0, \"\"},\n\t\t{\"(*NRGBA64).RGBA64At\", Method, 17, \"\"},\n\t\t{\"(*NRGBA64).Set\", Method, 0, \"\"},\n\t\t{\"(*NRGBA64).SetNRGBA64\", Method, 0, \"\"},\n\t\t{\"(*NRGBA64).SetRGBA64\", Method, 17, \"\"},\n\t\t{\"(*NRGBA64).SubImage\", Method, 0, \"\"},\n\t\t{\"(*NYCbCrA).AOffset\", Method, 6, \"\"},\n\t\t{\"(*NYCbCrA).At\", Method, 6, \"\"},\n\t\t{\"(*NYCbCrA).Bounds\", Method, 6, \"\"},\n\t\t{\"(*NYCbCrA).COffset\", Method, 6, \"\"},\n\t\t{\"(*NYCbCrA).ColorModel\", Method, 6, \"\"},\n\t\t{\"(*NYCbCrA).NYCbCrAAt\", Method, 6, \"\"},\n\t\t{\"(*NYCbCrA).Opaque\", Method, 6, \"\"},\n\t\t{\"(*NYCbCrA).RGBA64At\", Method, 17, \"\"},\n\t\t{\"(*NYCbCrA).SubImage\", Method, 6, \"\"},\n\t\t{\"(*NYCbCrA).YCbCrAt\", Method, 6, \"\"},\n\t\t{\"(*NYCbCrA).YOffset\", Method, 6, \"\"},\n\t\t{\"(*Paletted).At\", Method, 0, \"\"},\n\t\t{\"(*Paletted).Bounds\", Method, 0, \"\"},\n\t\t{\"(*Paletted).ColorIndexAt\", Method, 0, \"\"},\n\t\t{\"(*Paletted).ColorModel\", Method, 0, \"\"},\n\t\t{\"(*Paletted).Opaque\", Method, 0, \"\"},\n\t\t{\"(*Paletted).PixOffset\", Method, 0, \"\"},\n\t\t{\"(*Paletted).RGBA64At\", Method, 17, \"\"},\n\t\t{\"(*Paletted).Set\", Method, 0, \"\"},\n\t\t{\"(*Paletted).SetColorIndex\", Method, 0, \"\"},\n\t\t{\"(*Paletted).SetRGBA64\", Method, 17, \"\"},\n\t\t{\"(*Paletted).SubImage\", Method, 0, \"\"},\n\t\t{\"(*RGBA).At\", Method, 0, \"\"},\n\t\t{\"(*RGBA).Bounds\", Method, 0, \"\"},\n\t\t{\"(*RGBA).ColorModel\", Method, 0, \"\"},\n\t\t{\"(*RGBA).Opaque\", Method, 0, \"\"},\n\t\t{\"(*RGBA).PixOffset\", Method, 0, \"\"},\n\t\t{\"(*RGBA).RGBA64At\", Method, 17, \"\"},\n\t\t{\"(*RGBA).RGBAAt\", Method, 4, \"\"},\n\t\t{\"(*RGBA).Set\", Method, 0, \"\"},\n\t\t{\"(*RGBA).SetRGBA\", Method, 0, \"\"},\n\t\t{\"(*RGBA).SetRGBA64\", Method, 17, \"\"},\n\t\t{\"(*RGBA).SubImage\", Method, 0, \"\"},\n\t\t{\"(*RGBA64).At\", Method, 0, \"\"},\n\t\t{\"(*RGBA64).Bounds\", Method, 0, \"\"},\n\t\t{\"(*RGBA64).ColorModel\", Method, 0, \"\"},\n\t\t{\"(*RGBA64).Opaque\", Method, 0, \"\"},\n\t\t{\"(*RGBA64).PixOffset\", Method, 0, \"\"},\n\t\t{\"(*RGBA64).RGBA64At\", Method, 4, \"\"},\n\t\t{\"(*RGBA64).Set\", Method, 0, \"\"},\n\t\t{\"(*RGBA64).SetRGBA64\", Method, 0, \"\"},\n\t\t{\"(*RGBA64).SubImage\", Method, 0, \"\"},\n\t\t{\"(*Uniform).At\", Method, 0, \"\"},\n\t\t{\"(*Uniform).Bounds\", Method, 0, \"\"},\n\t\t{\"(*Uniform).ColorModel\", Method, 0, \"\"},\n\t\t{\"(*Uniform).Convert\", Method, 0, \"\"},\n\t\t{\"(*Uniform).Opaque\", Method, 0, \"\"},\n\t\t{\"(*Uniform).RGBA\", Method, 0, \"\"},\n\t\t{\"(*Uniform).RGBA64At\", Method, 17, \"\"},\n\t\t{\"(*YCbCr).At\", Method, 0, \"\"},\n\t\t{\"(*YCbCr).Bounds\", Method, 0, \"\"},\n\t\t{\"(*YCbCr).COffset\", Method, 0, \"\"},\n\t\t{\"(*YCbCr).ColorModel\", Method, 0, \"\"},\n\t\t{\"(*YCbCr).Opaque\", Method, 0, \"\"},\n\t\t{\"(*YCbCr).RGBA64At\", Method, 17, \"\"},\n\t\t{\"(*YCbCr).SubImage\", Method, 0, \"\"},\n\t\t{\"(*YCbCr).YCbCrAt\", Method, 4, \"\"},\n\t\t{\"(*YCbCr).YOffset\", Method, 0, \"\"},\n\t\t{\"(Image).At\", Method, 0, \"\"},\n\t\t{\"(Image).Bounds\", Method, 0, \"\"},\n\t\t{\"(Image).ColorModel\", Method, 0, \"\"},\n\t\t{\"(PalettedImage).At\", Method, 0, \"\"},\n\t\t{\"(PalettedImage).Bounds\", Method, 0, \"\"},\n\t\t{\"(PalettedImage).ColorIndexAt\", Method, 0, \"\"},\n\t\t{\"(PalettedImage).ColorModel\", Method, 0, \"\"},\n\t\t{\"(Point).Add\", Method, 0, \"\"},\n\t\t{\"(Point).Div\", Method, 0, \"\"},\n\t\t{\"(Point).Eq\", Method, 0, \"\"},\n\t\t{\"(Point).In\", Method, 0, \"\"},\n\t\t{\"(Point).Mod\", Method, 0, \"\"},\n\t\t{\"(Point).Mul\", Method, 0, \"\"},\n\t\t{\"(Point).String\", Method, 0, \"\"},\n\t\t{\"(Point).Sub\", Method, 0, \"\"},\n\t\t{\"(RGBA64Image).At\", Method, 17, \"\"},\n\t\t{\"(RGBA64Image).Bounds\", Method, 17, \"\"},\n\t\t{\"(RGBA64Image).ColorModel\", Method, 17, \"\"},\n\t\t{\"(RGBA64Image).RGBA64At\", Method, 17, \"\"},\n\t\t{\"(Rectangle).Add\", Method, 0, \"\"},\n\t\t{\"(Rectangle).At\", Method, 5, \"\"},\n\t\t{\"(Rectangle).Bounds\", Method, 5, \"\"},\n\t\t{\"(Rectangle).Canon\", Method, 0, \"\"},\n\t\t{\"(Rectangle).ColorModel\", Method, 5, \"\"},\n\t\t{\"(Rectangle).Dx\", Method, 0, \"\"},\n\t\t{\"(Rectangle).Dy\", Method, 0, \"\"},\n\t\t{\"(Rectangle).Empty\", Method, 0, \"\"},\n\t\t{\"(Rectangle).Eq\", Method, 0, \"\"},\n\t\t{\"(Rectangle).In\", Method, 0, \"\"},\n\t\t{\"(Rectangle).Inset\", Method, 0, \"\"},\n\t\t{\"(Rectangle).Intersect\", Method, 0, \"\"},\n\t\t{\"(Rectangle).Overlaps\", Method, 0, \"\"},\n\t\t{\"(Rectangle).RGBA64At\", Method, 17, \"\"},\n\t\t{\"(Rectangle).Size\", Method, 0, \"\"},\n\t\t{\"(Rectangle).String\", Method, 0, \"\"},\n\t\t{\"(Rectangle).Sub\", Method, 0, \"\"},\n\t\t{\"(Rectangle).Union\", Method, 0, \"\"},\n\t\t{\"(YCbCrSubsampleRatio).String\", Method, 0, \"\"},\n\t\t{\"Alpha\", Type, 0, \"\"},\n\t\t{\"Alpha.Pix\", Field, 0, \"\"},\n\t\t{\"Alpha.Rect\", Field, 0, \"\"},\n\t\t{\"Alpha.Stride\", Field, 0, \"\"},\n\t\t{\"Alpha16\", Type, 0, \"\"},\n\t\t{\"Alpha16.Pix\", Field, 0, \"\"},\n\t\t{\"Alpha16.Rect\", Field, 0, \"\"},\n\t\t{\"Alpha16.Stride\", Field, 0, \"\"},\n\t\t{\"Black\", Var, 0, \"\"},\n\t\t{\"CMYK\", Type, 5, \"\"},\n\t\t{\"CMYK.Pix\", Field, 5, \"\"},\n\t\t{\"CMYK.Rect\", Field, 5, \"\"},\n\t\t{\"CMYK.Stride\", Field, 5, \"\"},\n\t\t{\"Config\", Type, 0, \"\"},\n\t\t{\"Config.ColorModel\", Field, 0, \"\"},\n\t\t{\"Config.Height\", Field, 0, \"\"},\n\t\t{\"Config.Width\", Field, 0, \"\"},\n\t\t{\"Decode\", Func, 0, \"func(r io.Reader) (Image, string, error)\"},\n\t\t{\"DecodeConfig\", Func, 0, \"func(r io.Reader) (Config, string, error)\"},\n\t\t{\"ErrFormat\", Var, 0, \"\"},\n\t\t{\"Gray\", Type, 0, \"\"},\n\t\t{\"Gray.Pix\", Field, 0, \"\"},\n\t\t{\"Gray.Rect\", Field, 0, \"\"},\n\t\t{\"Gray.Stride\", Field, 0, \"\"},\n\t\t{\"Gray16\", Type, 0, \"\"},\n\t\t{\"Gray16.Pix\", Field, 0, \"\"},\n\t\t{\"Gray16.Rect\", Field, 0, \"\"},\n\t\t{\"Gray16.Stride\", Field, 0, \"\"},\n\t\t{\"Image\", Type, 0, \"\"},\n\t\t{\"NRGBA\", Type, 0, \"\"},\n\t\t{\"NRGBA.Pix\", Field, 0, \"\"},\n\t\t{\"NRGBA.Rect\", Field, 0, \"\"},\n\t\t{\"NRGBA.Stride\", Field, 0, \"\"},\n\t\t{\"NRGBA64\", Type, 0, \"\"},\n\t\t{\"NRGBA64.Pix\", Field, 0, \"\"},\n\t\t{\"NRGBA64.Rect\", Field, 0, \"\"},\n\t\t{\"NRGBA64.Stride\", Field, 0, \"\"},\n\t\t{\"NYCbCrA\", Type, 6, \"\"},\n\t\t{\"NYCbCrA.A\", Field, 6, \"\"},\n\t\t{\"NYCbCrA.AStride\", Field, 6, \"\"},\n\t\t{\"NYCbCrA.YCbCr\", Field, 6, \"\"},\n\t\t{\"NewAlpha\", Func, 0, \"func(r Rectangle) *Alpha\"},\n\t\t{\"NewAlpha16\", Func, 0, \"func(r Rectangle) *Alpha16\"},\n\t\t{\"NewCMYK\", Func, 5, \"func(r Rectangle) *CMYK\"},\n\t\t{\"NewGray\", Func, 0, \"func(r Rectangle) *Gray\"},\n\t\t{\"NewGray16\", Func, 0, \"func(r Rectangle) *Gray16\"},\n\t\t{\"NewNRGBA\", Func, 0, \"func(r Rectangle) *NRGBA\"},\n\t\t{\"NewNRGBA64\", Func, 0, \"func(r Rectangle) *NRGBA64\"},\n\t\t{\"NewNYCbCrA\", Func, 6, \"func(r Rectangle, subsampleRatio YCbCrSubsampleRatio) *NYCbCrA\"},\n\t\t{\"NewPaletted\", Func, 0, \"func(r Rectangle, p color.Palette) *Paletted\"},\n\t\t{\"NewRGBA\", Func, 0, \"func(r Rectangle) *RGBA\"},\n\t\t{\"NewRGBA64\", Func, 0, \"func(r Rectangle) *RGBA64\"},\n\t\t{\"NewUniform\", Func, 0, \"func(c color.Color) *Uniform\"},\n\t\t{\"NewYCbCr\", Func, 0, \"func(r Rectangle, subsampleRatio YCbCrSubsampleRatio) *YCbCr\"},\n\t\t{\"Opaque\", Var, 0, \"\"},\n\t\t{\"Paletted\", Type, 0, \"\"},\n\t\t{\"Paletted.Palette\", Field, 0, \"\"},\n\t\t{\"Paletted.Pix\", Field, 0, \"\"},\n\t\t{\"Paletted.Rect\", Field, 0, \"\"},\n\t\t{\"Paletted.Stride\", Field, 0, \"\"},\n\t\t{\"PalettedImage\", Type, 0, \"\"},\n\t\t{\"Point\", Type, 0, \"\"},\n\t\t{\"Point.X\", Field, 0, \"\"},\n\t\t{\"Point.Y\", Field, 0, \"\"},\n\t\t{\"Pt\", Func, 0, \"func(X int, Y int) Point\"},\n\t\t{\"RGBA\", Type, 0, \"\"},\n\t\t{\"RGBA.Pix\", Field, 0, \"\"},\n\t\t{\"RGBA.Rect\", Field, 0, \"\"},\n\t\t{\"RGBA.Stride\", Field, 0, \"\"},\n\t\t{\"RGBA64\", Type, 0, \"\"},\n\t\t{\"RGBA64.Pix\", Field, 0, \"\"},\n\t\t{\"RGBA64.Rect\", Field, 0, \"\"},\n\t\t{\"RGBA64.Stride\", Field, 0, \"\"},\n\t\t{\"RGBA64Image\", Type, 17, \"\"},\n\t\t{\"Rect\", Func, 0, \"func(x0 int, y0 int, x1 int, y1 int) Rectangle\"},\n\t\t{\"Rectangle\", Type, 0, \"\"},\n\t\t{\"Rectangle.Max\", Field, 0, \"\"},\n\t\t{\"Rectangle.Min\", Field, 0, \"\"},\n\t\t{\"RegisterFormat\", Func, 0, \"func(name string, magic string, decode func(io.Reader) (Image, error), decodeConfig func(io.Reader) (Config, error))\"},\n\t\t{\"Transparent\", Var, 0, \"\"},\n\t\t{\"Uniform\", Type, 0, \"\"},\n\t\t{\"Uniform.C\", Field, 0, \"\"},\n\t\t{\"White\", Var, 0, \"\"},\n\t\t{\"YCbCr\", Type, 0, \"\"},\n\t\t{\"YCbCr.CStride\", Field, 0, \"\"},\n\t\t{\"YCbCr.Cb\", Field, 0, \"\"},\n\t\t{\"YCbCr.Cr\", Field, 0, \"\"},\n\t\t{\"YCbCr.Rect\", Field, 0, \"\"},\n\t\t{\"YCbCr.SubsampleRatio\", Field, 0, \"\"},\n\t\t{\"YCbCr.Y\", Field, 0, \"\"},\n\t\t{\"YCbCr.YStride\", Field, 0, \"\"},\n\t\t{\"YCbCrSubsampleRatio\", Type, 0, \"\"},\n\t\t{\"YCbCrSubsampleRatio410\", Const, 5, \"\"},\n\t\t{\"YCbCrSubsampleRatio411\", Const, 5, \"\"},\n\t\t{\"YCbCrSubsampleRatio420\", Const, 0, \"\"},\n\t\t{\"YCbCrSubsampleRatio422\", Const, 0, \"\"},\n\t\t{\"YCbCrSubsampleRatio440\", Const, 1, \"\"},\n\t\t{\"YCbCrSubsampleRatio444\", Const, 0, \"\"},\n\t\t{\"ZP\", Var, 0, \"\"},\n\t\t{\"ZR\", Var, 0, \"\"},\n\t},\n\t\"image/color\": {\n\t\t{\"(Alpha).RGBA\", Method, 0, \"\"},\n\t\t{\"(Alpha16).RGBA\", Method, 0, \"\"},\n\t\t{\"(CMYK).RGBA\", Method, 5, \"\"},\n\t\t{\"(Color).RGBA\", Method, 0, \"\"},\n\t\t{\"(Gray).RGBA\", Method, 0, \"\"},\n\t\t{\"(Gray16).RGBA\", Method, 0, \"\"},\n\t\t{\"(Model).Convert\", Method, 0, \"\"},\n\t\t{\"(NRGBA).RGBA\", Method, 0, \"\"},\n\t\t{\"(NRGBA64).RGBA\", Method, 0, \"\"},\n\t\t{\"(NYCbCrA).RGBA\", Method, 6, \"\"},\n\t\t{\"(Palette).Convert\", Method, 0, \"\"},\n\t\t{\"(Palette).Index\", Method, 0, \"\"},\n\t\t{\"(RGBA).RGBA\", Method, 0, \"\"},\n\t\t{\"(RGBA64).RGBA\", Method, 0, \"\"},\n\t\t{\"(YCbCr).RGBA\", Method, 0, \"\"},\n\t\t{\"Alpha\", Type, 0, \"\"},\n\t\t{\"Alpha.A\", Field, 0, \"\"},\n\t\t{\"Alpha16\", Type, 0, \"\"},\n\t\t{\"Alpha16.A\", Field, 0, \"\"},\n\t\t{\"Alpha16Model\", Var, 0, \"\"},\n\t\t{\"AlphaModel\", Var, 0, \"\"},\n\t\t{\"Black\", Var, 0, \"\"},\n\t\t{\"CMYK\", Type, 5, \"\"},\n\t\t{\"CMYK.C\", Field, 5, \"\"},\n\t\t{\"CMYK.K\", Field, 5, \"\"},\n\t\t{\"CMYK.M\", Field, 5, \"\"},\n\t\t{\"CMYK.Y\", Field, 5, \"\"},\n\t\t{\"CMYKModel\", Var, 5, \"\"},\n\t\t{\"CMYKToRGB\", Func, 5, \"func(c uint8, m uint8, y uint8, k uint8) (uint8, uint8, uint8)\"},\n\t\t{\"Color\", Type, 0, \"\"},\n\t\t{\"Gray\", Type, 0, \"\"},\n\t\t{\"Gray.Y\", Field, 0, \"\"},\n\t\t{\"Gray16\", Type, 0, \"\"},\n\t\t{\"Gray16.Y\", Field, 0, \"\"},\n\t\t{\"Gray16Model\", Var, 0, \"\"},\n\t\t{\"GrayModel\", Var, 0, \"\"},\n\t\t{\"Model\", Type, 0, \"\"},\n\t\t{\"ModelFunc\", Func, 0, \"func(f func(Color) Color) Model\"},\n\t\t{\"NRGBA\", Type, 0, \"\"},\n\t\t{\"NRGBA.A\", Field, 0, \"\"},\n\t\t{\"NRGBA.B\", Field, 0, \"\"},\n\t\t{\"NRGBA.G\", Field, 0, \"\"},\n\t\t{\"NRGBA.R\", Field, 0, \"\"},\n\t\t{\"NRGBA64\", Type, 0, \"\"},\n\t\t{\"NRGBA64.A\", Field, 0, \"\"},\n\t\t{\"NRGBA64.B\", Field, 0, \"\"},\n\t\t{\"NRGBA64.G\", Field, 0, \"\"},\n\t\t{\"NRGBA64.R\", Field, 0, \"\"},\n\t\t{\"NRGBA64Model\", Var, 0, \"\"},\n\t\t{\"NRGBAModel\", Var, 0, \"\"},\n\t\t{\"NYCbCrA\", Type, 6, \"\"},\n\t\t{\"NYCbCrA.A\", Field, 6, \"\"},\n\t\t{\"NYCbCrA.YCbCr\", Field, 6, \"\"},\n\t\t{\"NYCbCrAModel\", Var, 6, \"\"},\n\t\t{\"Opaque\", Var, 0, \"\"},\n\t\t{\"Palette\", Type, 0, \"\"},\n\t\t{\"RGBA\", Type, 0, \"\"},\n\t\t{\"RGBA.A\", Field, 0, \"\"},\n\t\t{\"RGBA.B\", Field, 0, \"\"},\n\t\t{\"RGBA.G\", Field, 0, \"\"},\n\t\t{\"RGBA.R\", Field, 0, \"\"},\n\t\t{\"RGBA64\", Type, 0, \"\"},\n\t\t{\"RGBA64.A\", Field, 0, \"\"},\n\t\t{\"RGBA64.B\", Field, 0, \"\"},\n\t\t{\"RGBA64.G\", Field, 0, \"\"},\n\t\t{\"RGBA64.R\", Field, 0, \"\"},\n\t\t{\"RGBA64Model\", Var, 0, \"\"},\n\t\t{\"RGBAModel\", Var, 0, \"\"},\n\t\t{\"RGBToCMYK\", Func, 5, \"func(r uint8, g uint8, b uint8) (uint8, uint8, uint8, uint8)\"},\n\t\t{\"RGBToYCbCr\", Func, 0, \"func(r uint8, g uint8, b uint8) (uint8, uint8, uint8)\"},\n\t\t{\"Transparent\", Var, 0, \"\"},\n\t\t{\"White\", Var, 0, \"\"},\n\t\t{\"YCbCr\", Type, 0, \"\"},\n\t\t{\"YCbCr.Cb\", Field, 0, \"\"},\n\t\t{\"YCbCr.Cr\", Field, 0, \"\"},\n\t\t{\"YCbCr.Y\", Field, 0, \"\"},\n\t\t{\"YCbCrModel\", Var, 0, \"\"},\n\t\t{\"YCbCrToRGB\", Func, 0, \"func(y uint8, cb uint8, cr uint8) (uint8, uint8, uint8)\"},\n\t},\n\t\"image/color/palette\": {\n\t\t{\"Plan9\", Var, 2, \"\"},\n\t\t{\"WebSafe\", Var, 2, \"\"},\n\t},\n\t\"image/draw\": {\n\t\t{\"(Drawer).Draw\", Method, 2, \"\"},\n\t\t{\"(Image).At\", Method, 0, \"\"},\n\t\t{\"(Image).Bounds\", Method, 0, \"\"},\n\t\t{\"(Image).ColorModel\", Method, 0, \"\"},\n\t\t{\"(Image).Set\", Method, 0, \"\"},\n\t\t{\"(Op).Draw\", Method, 2, \"\"},\n\t\t{\"(Quantizer).Quantize\", Method, 2, \"\"},\n\t\t{\"(RGBA64Image).At\", Method, 17, \"\"},\n\t\t{\"(RGBA64Image).Bounds\", Method, 17, \"\"},\n\t\t{\"(RGBA64Image).ColorModel\", Method, 17, \"\"},\n\t\t{\"(RGBA64Image).RGBA64At\", Method, 17, \"\"},\n\t\t{\"(RGBA64Image).Set\", Method, 17, \"\"},\n\t\t{\"(RGBA64Image).SetRGBA64\", Method, 17, \"\"},\n\t\t{\"Draw\", Func, 0, \"func(dst Image, r image.Rectangle, src image.Image, sp image.Point, op Op)\"},\n\t\t{\"DrawMask\", Func, 0, \"func(dst Image, r image.Rectangle, src image.Image, sp image.Point, mask image.Image, mp image.Point, op Op)\"},\n\t\t{\"Drawer\", Type, 2, \"\"},\n\t\t{\"FloydSteinberg\", Var, 2, \"\"},\n\t\t{\"Image\", Type, 0, \"\"},\n\t\t{\"Op\", Type, 0, \"\"},\n\t\t{\"Over\", Const, 0, \"\"},\n\t\t{\"Quantizer\", Type, 2, \"\"},\n\t\t{\"RGBA64Image\", Type, 17, \"\"},\n\t\t{\"Src\", Const, 0, \"\"},\n\t},\n\t\"image/gif\": {\n\t\t{\"Decode\", Func, 0, \"func(r io.Reader) (image.Image, error)\"},\n\t\t{\"DecodeAll\", Func, 0, \"func(r io.Reader) (*GIF, error)\"},\n\t\t{\"DecodeConfig\", Func, 0, \"func(r io.Reader) (image.Config, error)\"},\n\t\t{\"DisposalBackground\", Const, 5, \"\"},\n\t\t{\"DisposalNone\", Const, 5, \"\"},\n\t\t{\"DisposalPrevious\", Const, 5, \"\"},\n\t\t{\"Encode\", Func, 2, \"func(w io.Writer, m image.Image, o *Options) error\"},\n\t\t{\"EncodeAll\", Func, 2, \"func(w io.Writer, g *GIF) error\"},\n\t\t{\"GIF\", Type, 0, \"\"},\n\t\t{\"GIF.BackgroundIndex\", Field, 5, \"\"},\n\t\t{\"GIF.Config\", Field, 5, \"\"},\n\t\t{\"GIF.Delay\", Field, 0, \"\"},\n\t\t{\"GIF.Disposal\", Field, 5, \"\"},\n\t\t{\"GIF.Image\", Field, 0, \"\"},\n\t\t{\"GIF.LoopCount\", Field, 0, \"\"},\n\t\t{\"Options\", Type, 2, \"\"},\n\t\t{\"Options.Drawer\", Field, 2, \"\"},\n\t\t{\"Options.NumColors\", Field, 2, \"\"},\n\t\t{\"Options.Quantizer\", Field, 2, \"\"},\n\t},\n\t\"image/jpeg\": {\n\t\t{\"(FormatError).Error\", Method, 0, \"\"},\n\t\t{\"(Reader).Read\", Method, 0, \"\"},\n\t\t{\"(Reader).ReadByte\", Method, 0, \"\"},\n\t\t{\"(UnsupportedError).Error\", Method, 0, \"\"},\n\t\t{\"Decode\", Func, 0, \"func(r io.Reader) (image.Image, error)\"},\n\t\t{\"DecodeConfig\", Func, 0, \"func(r io.Reader) (image.Config, error)\"},\n\t\t{\"DefaultQuality\", Const, 0, \"\"},\n\t\t{\"Encode\", Func, 0, \"func(w io.Writer, m image.Image, o *Options) error\"},\n\t\t{\"FormatError\", Type, 0, \"\"},\n\t\t{\"Options\", Type, 0, \"\"},\n\t\t{\"Options.Quality\", Field, 0, \"\"},\n\t\t{\"Reader\", Type, 0, \"\"},\n\t\t{\"UnsupportedError\", Type, 0, \"\"},\n\t},\n\t\"image/png\": {\n\t\t{\"(*Encoder).Encode\", Method, 4, \"\"},\n\t\t{\"(EncoderBufferPool).Get\", Method, 9, \"\"},\n\t\t{\"(EncoderBufferPool).Put\", Method, 9, \"\"},\n\t\t{\"(FormatError).Error\", Method, 0, \"\"},\n\t\t{\"(UnsupportedError).Error\", Method, 0, \"\"},\n\t\t{\"BestCompression\", Const, 4, \"\"},\n\t\t{\"BestSpeed\", Const, 4, \"\"},\n\t\t{\"CompressionLevel\", Type, 4, \"\"},\n\t\t{\"Decode\", Func, 0, \"func(r io.Reader) (image.Image, error)\"},\n\t\t{\"DecodeConfig\", Func, 0, \"func(r io.Reader) (image.Config, error)\"},\n\t\t{\"DefaultCompression\", Const, 4, \"\"},\n\t\t{\"Encode\", Func, 0, \"func(w io.Writer, m image.Image) error\"},\n\t\t{\"Encoder\", Type, 4, \"\"},\n\t\t{\"Encoder.BufferPool\", Field, 9, \"\"},\n\t\t{\"Encoder.CompressionLevel\", Field, 4, \"\"},\n\t\t{\"EncoderBuffer\", Type, 9, \"\"},\n\t\t{\"EncoderBufferPool\", Type, 9, \"\"},\n\t\t{\"FormatError\", Type, 0, \"\"},\n\t\t{\"NoCompression\", Const, 4, \"\"},\n\t\t{\"UnsupportedError\", Type, 0, \"\"},\n\t},\n\t\"index/suffixarray\": {\n\t\t{\"(*Index).Bytes\", Method, 0, \"\"},\n\t\t{\"(*Index).FindAllIndex\", Method, 0, \"\"},\n\t\t{\"(*Index).Lookup\", Method, 0, \"\"},\n\t\t{\"(*Index).Read\", Method, 0, \"\"},\n\t\t{\"(*Index).Write\", Method, 0, \"\"},\n\t\t{\"Index\", Type, 0, \"\"},\n\t\t{\"New\", Func, 0, \"func(data []byte) *Index\"},\n\t},\n\t\"io\": {\n\t\t{\"(*LimitedReader).Read\", Method, 0, \"\"},\n\t\t{\"(*OffsetWriter).Seek\", Method, 20, \"\"},\n\t\t{\"(*OffsetWriter).Write\", Method, 20, \"\"},\n\t\t{\"(*OffsetWriter).WriteAt\", Method, 20, \"\"},\n\t\t{\"(*PipeReader).Close\", Method, 0, \"\"},\n\t\t{\"(*PipeReader).CloseWithError\", Method, 0, \"\"},\n\t\t{\"(*PipeReader).Read\", Method, 0, \"\"},\n\t\t{\"(*PipeWriter).Close\", Method, 0, \"\"},\n\t\t{\"(*PipeWriter).CloseWithError\", Method, 0, \"\"},\n\t\t{\"(*PipeWriter).Write\", Method, 0, \"\"},\n\t\t{\"(*SectionReader).Outer\", Method, 22, \"\"},\n\t\t{\"(*SectionReader).Read\", Method, 0, \"\"},\n\t\t{\"(*SectionReader).ReadAt\", Method, 0, \"\"},\n\t\t{\"(*SectionReader).Seek\", Method, 0, \"\"},\n\t\t{\"(*SectionReader).Size\", Method, 0, \"\"},\n\t\t{\"(ByteReader).ReadByte\", Method, 0, \"\"},\n\t\t{\"(ByteScanner).ReadByte\", Method, 0, \"\"},\n\t\t{\"(ByteScanner).UnreadByte\", Method, 0, \"\"},\n\t\t{\"(ByteWriter).WriteByte\", Method, 1, \"\"},\n\t\t{\"(Closer).Close\", Method, 0, \"\"},\n\t\t{\"(ReadCloser).Close\", Method, 0, \"\"},\n\t\t{\"(ReadCloser).Read\", Method, 0, \"\"},\n\t\t{\"(ReadSeekCloser).Close\", Method, 16, \"\"},\n\t\t{\"(ReadSeekCloser).Read\", Method, 16, \"\"},\n\t\t{\"(ReadSeekCloser).Seek\", Method, 16, \"\"},\n\t\t{\"(ReadSeeker).Read\", Method, 0, \"\"},\n\t\t{\"(ReadSeeker).Seek\", Method, 0, \"\"},\n\t\t{\"(ReadWriteCloser).Close\", Method, 0, \"\"},\n\t\t{\"(ReadWriteCloser).Read\", Method, 0, \"\"},\n\t\t{\"(ReadWriteCloser).Write\", Method, 0, \"\"},\n\t\t{\"(ReadWriteSeeker).Read\", Method, 0, \"\"},\n\t\t{\"(ReadWriteSeeker).Seek\", Method, 0, \"\"},\n\t\t{\"(ReadWriteSeeker).Write\", Method, 0, \"\"},\n\t\t{\"(ReadWriter).Read\", Method, 0, \"\"},\n\t\t{\"(ReadWriter).Write\", Method, 0, \"\"},\n\t\t{\"(Reader).Read\", Method, 0, \"\"},\n\t\t{\"(ReaderAt).ReadAt\", Method, 0, \"\"},\n\t\t{\"(ReaderFrom).ReadFrom\", Method, 0, \"\"},\n\t\t{\"(RuneReader).ReadRune\", Method, 0, \"\"},\n\t\t{\"(RuneScanner).ReadRune\", Method, 0, \"\"},\n\t\t{\"(RuneScanner).UnreadRune\", Method, 0, \"\"},\n\t\t{\"(Seeker).Seek\", Method, 0, \"\"},\n\t\t{\"(StringWriter).WriteString\", Method, 12, \"\"},\n\t\t{\"(WriteCloser).Close\", Method, 0, \"\"},\n\t\t{\"(WriteCloser).Write\", Method, 0, \"\"},\n\t\t{\"(WriteSeeker).Seek\", Method, 0, \"\"},\n\t\t{\"(WriteSeeker).Write\", Method, 0, \"\"},\n\t\t{\"(Writer).Write\", Method, 0, \"\"},\n\t\t{\"(WriterAt).WriteAt\", Method, 0, \"\"},\n\t\t{\"(WriterTo).WriteTo\", Method, 0, \"\"},\n\t\t{\"ByteReader\", Type, 0, \"\"},\n\t\t{\"ByteScanner\", Type, 0, \"\"},\n\t\t{\"ByteWriter\", Type, 1, \"\"},\n\t\t{\"Closer\", Type, 0, \"\"},\n\t\t{\"Copy\", Func, 0, \"func(dst Writer, src Reader) (written int64, err error)\"},\n\t\t{\"CopyBuffer\", Func, 5, \"func(dst Writer, src Reader, buf []byte) (written int64, err error)\"},\n\t\t{\"CopyN\", Func, 0, \"func(dst Writer, src Reader, n int64) (written int64, err error)\"},\n\t\t{\"Discard\", Var, 16, \"\"},\n\t\t{\"EOF\", Var, 0, \"\"},\n\t\t{\"ErrClosedPipe\", Var, 0, \"\"},\n\t\t{\"ErrNoProgress\", Var, 1, \"\"},\n\t\t{\"ErrShortBuffer\", Var, 0, \"\"},\n\t\t{\"ErrShortWrite\", Var, 0, \"\"},\n\t\t{\"ErrUnexpectedEOF\", Var, 0, \"\"},\n\t\t{\"LimitReader\", Func, 0, \"func(r Reader, n int64) Reader\"},\n\t\t{\"LimitedReader\", Type, 0, \"\"},\n\t\t{\"LimitedReader.N\", Field, 0, \"\"},\n\t\t{\"LimitedReader.R\", Field, 0, \"\"},\n\t\t{\"MultiReader\", Func, 0, \"func(readers ...Reader) Reader\"},\n\t\t{\"MultiWriter\", Func, 0, \"func(writers ...Writer) Writer\"},\n\t\t{\"NewOffsetWriter\", Func, 20, \"func(w WriterAt, off int64) *OffsetWriter\"},\n\t\t{\"NewSectionReader\", Func, 0, \"func(r ReaderAt, off int64, n int64) *SectionReader\"},\n\t\t{\"NopCloser\", Func, 16, \"func(r Reader) ReadCloser\"},\n\t\t{\"OffsetWriter\", Type, 20, \"\"},\n\t\t{\"Pipe\", Func, 0, \"func() (*PipeReader, *PipeWriter)\"},\n\t\t{\"PipeReader\", Type, 0, \"\"},\n\t\t{\"PipeWriter\", Type, 0, \"\"},\n\t\t{\"ReadAll\", Func, 16, \"func(r Reader) ([]byte, error)\"},\n\t\t{\"ReadAtLeast\", Func, 0, \"func(r Reader, buf []byte, min int) (n int, err error)\"},\n\t\t{\"ReadCloser\", Type, 0, \"\"},\n\t\t{\"ReadFull\", Func, 0, \"func(r Reader, buf []byte) (n int, err error)\"},\n\t\t{\"ReadSeekCloser\", Type, 16, \"\"},\n\t\t{\"ReadSeeker\", Type, 0, \"\"},\n\t\t{\"ReadWriteCloser\", Type, 0, \"\"},\n\t\t{\"ReadWriteSeeker\", Type, 0, \"\"},\n\t\t{\"ReadWriter\", Type, 0, \"\"},\n\t\t{\"Reader\", Type, 0, \"\"},\n\t\t{\"ReaderAt\", Type, 0, \"\"},\n\t\t{\"ReaderFrom\", Type, 0, \"\"},\n\t\t{\"RuneReader\", Type, 0, \"\"},\n\t\t{\"RuneScanner\", Type, 0, \"\"},\n\t\t{\"SectionReader\", Type, 0, \"\"},\n\t\t{\"SeekCurrent\", Const, 7, \"\"},\n\t\t{\"SeekEnd\", Const, 7, \"\"},\n\t\t{\"SeekStart\", Const, 7, \"\"},\n\t\t{\"Seeker\", Type, 0, \"\"},\n\t\t{\"StringWriter\", Type, 12, \"\"},\n\t\t{\"TeeReader\", Func, 0, \"func(r Reader, w Writer) Reader\"},\n\t\t{\"WriteCloser\", Type, 0, \"\"},\n\t\t{\"WriteSeeker\", Type, 0, \"\"},\n\t\t{\"WriteString\", Func, 0, \"func(w Writer, s string) (n int, err error)\"},\n\t\t{\"Writer\", Type, 0, \"\"},\n\t\t{\"WriterAt\", Type, 0, \"\"},\n\t\t{\"WriterTo\", Type, 0, \"\"},\n\t},\n\t\"io/fs\": {\n\t\t{\"(*PathError).Error\", Method, 16, \"\"},\n\t\t{\"(*PathError).Timeout\", Method, 16, \"\"},\n\t\t{\"(*PathError).Unwrap\", Method, 16, \"\"},\n\t\t{\"(DirEntry).Info\", Method, 16, \"\"},\n\t\t{\"(DirEntry).IsDir\", Method, 16, \"\"},\n\t\t{\"(DirEntry).Name\", Method, 16, \"\"},\n\t\t{\"(DirEntry).Type\", Method, 16, \"\"},\n\t\t{\"(FS).Open\", Method, 16, \"\"},\n\t\t{\"(File).Close\", Method, 16, \"\"},\n\t\t{\"(File).Read\", Method, 16, \"\"},\n\t\t{\"(File).Stat\", Method, 16, \"\"},\n\t\t{\"(FileInfo).IsDir\", Method, 16, \"\"},\n\t\t{\"(FileInfo).ModTime\", Method, 16, \"\"},\n\t\t{\"(FileInfo).Mode\", Method, 16, \"\"},\n\t\t{\"(FileInfo).Name\", Method, 16, \"\"},\n\t\t{\"(FileInfo).Size\", Method, 16, \"\"},\n\t\t{\"(FileInfo).Sys\", Method, 16, \"\"},\n\t\t{\"(FileMode).IsDir\", Method, 16, \"\"},\n\t\t{\"(FileMode).IsRegular\", Method, 16, \"\"},\n\t\t{\"(FileMode).Perm\", Method, 16, \"\"},\n\t\t{\"(FileMode).String\", Method, 16, \"\"},\n\t\t{\"(FileMode).Type\", Method, 16, \"\"},\n\t\t{\"(GlobFS).Glob\", Method, 16, \"\"},\n\t\t{\"(GlobFS).Open\", Method, 16, \"\"},\n\t\t{\"(ReadDirFS).Open\", Method, 16, \"\"},\n\t\t{\"(ReadDirFS).ReadDir\", Method, 16, \"\"},\n\t\t{\"(ReadDirFile).Close\", Method, 16, \"\"},\n\t\t{\"(ReadDirFile).Read\", Method, 16, \"\"},\n\t\t{\"(ReadDirFile).ReadDir\", Method, 16, \"\"},\n\t\t{\"(ReadDirFile).Stat\", Method, 16, \"\"},\n\t\t{\"(ReadFileFS).Open\", Method, 16, \"\"},\n\t\t{\"(ReadFileFS).ReadFile\", Method, 16, \"\"},\n\t\t{\"(ReadLinkFS).Lstat\", Method, 25, \"\"},\n\t\t{\"(ReadLinkFS).Open\", Method, 25, \"\"},\n\t\t{\"(ReadLinkFS).ReadLink\", Method, 25, \"\"},\n\t\t{\"(StatFS).Open\", Method, 16, \"\"},\n\t\t{\"(StatFS).Stat\", Method, 16, \"\"},\n\t\t{\"(SubFS).Open\", Method, 16, \"\"},\n\t\t{\"(SubFS).Sub\", Method, 16, \"\"},\n\t\t{\"DirEntry\", Type, 16, \"\"},\n\t\t{\"ErrClosed\", Var, 16, \"\"},\n\t\t{\"ErrExist\", Var, 16, \"\"},\n\t\t{\"ErrInvalid\", Var, 16, \"\"},\n\t\t{\"ErrNotExist\", Var, 16, \"\"},\n\t\t{\"ErrPermission\", Var, 16, \"\"},\n\t\t{\"FS\", Type, 16, \"\"},\n\t\t{\"File\", Type, 16, \"\"},\n\t\t{\"FileInfo\", Type, 16, \"\"},\n\t\t{\"FileInfoToDirEntry\", Func, 17, \"func(info FileInfo) DirEntry\"},\n\t\t{\"FileMode\", Type, 16, \"\"},\n\t\t{\"FormatDirEntry\", Func, 21, \"func(dir DirEntry) string\"},\n\t\t{\"FormatFileInfo\", Func, 21, \"func(info FileInfo) string\"},\n\t\t{\"Glob\", Func, 16, \"func(fsys FS, pattern string) (matches []string, err error)\"},\n\t\t{\"GlobFS\", Type, 16, \"\"},\n\t\t{\"Lstat\", Func, 25, \"func(fsys FS, name string) (FileInfo, error)\"},\n\t\t{\"ModeAppend\", Const, 16, \"\"},\n\t\t{\"ModeCharDevice\", Const, 16, \"\"},\n\t\t{\"ModeDevice\", Const, 16, \"\"},\n\t\t{\"ModeDir\", Const, 16, \"\"},\n\t\t{\"ModeExclusive\", Const, 16, \"\"},\n\t\t{\"ModeIrregular\", Const, 16, \"\"},\n\t\t{\"ModeNamedPipe\", Const, 16, \"\"},\n\t\t{\"ModePerm\", Const, 16, \"\"},\n\t\t{\"ModeSetgid\", Const, 16, \"\"},\n\t\t{\"ModeSetuid\", Const, 16, \"\"},\n\t\t{\"ModeSocket\", Const, 16, \"\"},\n\t\t{\"ModeSticky\", Const, 16, \"\"},\n\t\t{\"ModeSymlink\", Const, 16, \"\"},\n\t\t{\"ModeTemporary\", Const, 16, \"\"},\n\t\t{\"ModeType\", Const, 16, \"\"},\n\t\t{\"PathError\", Type, 16, \"\"},\n\t\t{\"PathError.Err\", Field, 16, \"\"},\n\t\t{\"PathError.Op\", Field, 16, \"\"},\n\t\t{\"PathError.Path\", Field, 16, \"\"},\n\t\t{\"ReadDir\", Func, 16, \"func(fsys FS, name string) ([]DirEntry, error)\"},\n\t\t{\"ReadDirFS\", Type, 16, \"\"},\n\t\t{\"ReadDirFile\", Type, 16, \"\"},\n\t\t{\"ReadFile\", Func, 16, \"func(fsys FS, name string) ([]byte, error)\"},\n\t\t{\"ReadFileFS\", Type, 16, \"\"},\n\t\t{\"ReadLink\", Func, 25, \"func(fsys FS, name string) (string, error)\"},\n\t\t{\"ReadLinkFS\", Type, 25, \"\"},\n\t\t{\"SkipAll\", Var, 20, \"\"},\n\t\t{\"SkipDir\", Var, 16, \"\"},\n\t\t{\"Stat\", Func, 16, \"func(fsys FS, name string) (FileInfo, error)\"},\n\t\t{\"StatFS\", Type, 16, \"\"},\n\t\t{\"Sub\", Func, 16, \"func(fsys FS, dir string) (FS, error)\"},\n\t\t{\"SubFS\", Type, 16, \"\"},\n\t\t{\"ValidPath\", Func, 16, \"func(name string) bool\"},\n\t\t{\"WalkDir\", Func, 16, \"func(fsys FS, root string, fn WalkDirFunc) error\"},\n\t\t{\"WalkDirFunc\", Type, 16, \"\"},\n\t},\n\t\"io/ioutil\": {\n\t\t{\"Discard\", Var, 0, \"\"},\n\t\t{\"NopCloser\", Func, 0, \"func(r io.Reader) io.ReadCloser\"},\n\t\t{\"ReadAll\", Func, 0, \"func(r io.Reader) ([]byte, error)\"},\n\t\t{\"ReadDir\", Func, 0, \"func(dirname string) ([]fs.FileInfo, error)\"},\n\t\t{\"ReadFile\", Func, 0, \"func(filename string) ([]byte, error)\"},\n\t\t{\"TempDir\", Func, 0, \"func(dir string, pattern string) (name string, err error)\"},\n\t\t{\"TempFile\", Func, 0, \"func(dir string, pattern string) (f *os.File, err error)\"},\n\t\t{\"WriteFile\", Func, 0, \"func(filename string, data []byte, perm fs.FileMode) error\"},\n\t},\n\t\"iter\": {\n\t\t{\"Pull\", Func, 23, \"func[V any](seq Seq[V]) (next func() (V, bool), stop func())\"},\n\t\t{\"Pull2\", Func, 23, \"func[K, V any](seq Seq2[K, V]) (next func() (K, V, bool), stop func())\"},\n\t\t{\"Seq\", Type, 23, \"\"},\n\t\t{\"Seq2\", Type, 23, \"\"},\n\t},\n\t\"log\": {\n\t\t{\"(*Logger).Fatal\", Method, 0, \"\"},\n\t\t{\"(*Logger).Fatalf\", Method, 0, \"\"},\n\t\t{\"(*Logger).Fatalln\", Method, 0, \"\"},\n\t\t{\"(*Logger).Flags\", Method, 0, \"\"},\n\t\t{\"(*Logger).Output\", Method, 0, \"\"},\n\t\t{\"(*Logger).Panic\", Method, 0, \"\"},\n\t\t{\"(*Logger).Panicf\", Method, 0, \"\"},\n\t\t{\"(*Logger).Panicln\", Method, 0, \"\"},\n\t\t{\"(*Logger).Prefix\", Method, 0, \"\"},\n\t\t{\"(*Logger).Print\", Method, 0, \"\"},\n\t\t{\"(*Logger).Printf\", Method, 0, \"\"},\n\t\t{\"(*Logger).Println\", Method, 0, \"\"},\n\t\t{\"(*Logger).SetFlags\", Method, 0, \"\"},\n\t\t{\"(*Logger).SetOutput\", Method, 5, \"\"},\n\t\t{\"(*Logger).SetPrefix\", Method, 0, \"\"},\n\t\t{\"(*Logger).Writer\", Method, 12, \"\"},\n\t\t{\"Default\", Func, 16, \"func() *Logger\"},\n\t\t{\"Fatal\", Func, 0, \"func(v ...any)\"},\n\t\t{\"Fatalf\", Func, 0, \"func(format string, v ...any)\"},\n\t\t{\"Fatalln\", Func, 0, \"func(v ...any)\"},\n\t\t{\"Flags\", Func, 0, \"func() int\"},\n\t\t{\"LUTC\", Const, 5, \"\"},\n\t\t{\"Ldate\", Const, 0, \"\"},\n\t\t{\"Llongfile\", Const, 0, \"\"},\n\t\t{\"Lmicroseconds\", Const, 0, \"\"},\n\t\t{\"Lmsgprefix\", Const, 14, \"\"},\n\t\t{\"Logger\", Type, 0, \"\"},\n\t\t{\"Lshortfile\", Const, 0, \"\"},\n\t\t{\"LstdFlags\", Const, 0, \"\"},\n\t\t{\"Ltime\", Const, 0, \"\"},\n\t\t{\"New\", Func, 0, \"func(out io.Writer, prefix string, flag int) *Logger\"},\n\t\t{\"Output\", Func, 5, \"func(calldepth int, s string) error\"},\n\t\t{\"Panic\", Func, 0, \"func(v ...any)\"},\n\t\t{\"Panicf\", Func, 0, \"func(format string, v ...any)\"},\n\t\t{\"Panicln\", Func, 0, \"func(v ...any)\"},\n\t\t{\"Prefix\", Func, 0, \"func() string\"},\n\t\t{\"Print\", Func, 0, \"func(v ...any)\"},\n\t\t{\"Printf\", Func, 0, \"func(format string, v ...any)\"},\n\t\t{\"Println\", Func, 0, \"func(v ...any)\"},\n\t\t{\"SetFlags\", Func, 0, \"func(flag int)\"},\n\t\t{\"SetOutput\", Func, 0, \"func(w io.Writer)\"},\n\t\t{\"SetPrefix\", Func, 0, \"func(prefix string)\"},\n\t\t{\"Writer\", Func, 13, \"func() io.Writer\"},\n\t},\n\t\"log/slog\": {\n\t\t{\"(*JSONHandler).Enabled\", Method, 21, \"\"},\n\t\t{\"(*JSONHandler).Handle\", Method, 21, \"\"},\n\t\t{\"(*JSONHandler).WithAttrs\", Method, 21, \"\"},\n\t\t{\"(*JSONHandler).WithGroup\", Method, 21, \"\"},\n\t\t{\"(*Level).UnmarshalJSON\", Method, 21, \"\"},\n\t\t{\"(*Level).UnmarshalText\", Method, 21, \"\"},\n\t\t{\"(*LevelVar).AppendText\", Method, 24, \"\"},\n\t\t{\"(*LevelVar).Level\", Method, 21, \"\"},\n\t\t{\"(*LevelVar).MarshalText\", Method, 21, \"\"},\n\t\t{\"(*LevelVar).Set\", Method, 21, \"\"},\n\t\t{\"(*LevelVar).String\", Method, 21, \"\"},\n\t\t{\"(*LevelVar).UnmarshalText\", Method, 21, \"\"},\n\t\t{\"(*Logger).Debug\", Method, 21, \"\"},\n\t\t{\"(*Logger).DebugContext\", Method, 21, \"\"},\n\t\t{\"(*Logger).Enabled\", Method, 21, \"\"},\n\t\t{\"(*Logger).Error\", Method, 21, \"\"},\n\t\t{\"(*Logger).ErrorContext\", Method, 21, \"\"},\n\t\t{\"(*Logger).Handler\", Method, 21, \"\"},\n\t\t{\"(*Logger).Info\", Method, 21, \"\"},\n\t\t{\"(*Logger).InfoContext\", Method, 21, \"\"},\n\t\t{\"(*Logger).Log\", Method, 21, \"\"},\n\t\t{\"(*Logger).LogAttrs\", Method, 21, \"\"},\n\t\t{\"(*Logger).Warn\", Method, 21, \"\"},\n\t\t{\"(*Logger).WarnContext\", Method, 21, \"\"},\n\t\t{\"(*Logger).With\", Method, 21, \"\"},\n\t\t{\"(*Logger).WithGroup\", Method, 21, \"\"},\n\t\t{\"(*MultiHandler).Enabled\", Method, 26, \"\"},\n\t\t{\"(*MultiHandler).Handle\", Method, 26, \"\"},\n\t\t{\"(*MultiHandler).WithAttrs\", Method, 26, \"\"},\n\t\t{\"(*MultiHandler).WithGroup\", Method, 26, \"\"},\n\t\t{\"(*Record).Add\", Method, 21, \"\"},\n\t\t{\"(*Record).AddAttrs\", Method, 21, \"\"},\n\t\t{\"(*TextHandler).Enabled\", Method, 21, \"\"},\n\t\t{\"(*TextHandler).Handle\", Method, 21, \"\"},\n\t\t{\"(*TextHandler).WithAttrs\", Method, 21, \"\"},\n\t\t{\"(*TextHandler).WithGroup\", Method, 21, \"\"},\n\t\t{\"(Attr).Equal\", Method, 21, \"\"},\n\t\t{\"(Attr).String\", Method, 21, \"\"},\n\t\t{\"(Handler).Enabled\", Method, 21, \"\"},\n\t\t{\"(Handler).Handle\", Method, 21, \"\"},\n\t\t{\"(Handler).WithAttrs\", Method, 21, \"\"},\n\t\t{\"(Handler).WithGroup\", Method, 21, \"\"},\n\t\t{\"(Kind).String\", Method, 21, \"\"},\n\t\t{\"(Level).AppendText\", Method, 24, \"\"},\n\t\t{\"(Level).Level\", Method, 21, \"\"},\n\t\t{\"(Level).MarshalJSON\", Method, 21, \"\"},\n\t\t{\"(Level).MarshalText\", Method, 21, \"\"},\n\t\t{\"(Level).String\", Method, 21, \"\"},\n\t\t{\"(Leveler).Level\", Method, 21, \"\"},\n\t\t{\"(LogValuer).LogValue\", Method, 21, \"\"},\n\t\t{\"(Record).Attrs\", Method, 21, \"\"},\n\t\t{\"(Record).Clone\", Method, 21, \"\"},\n\t\t{\"(Record).NumAttrs\", Method, 21, \"\"},\n\t\t{\"(Record).Source\", Method, 25, \"\"},\n\t\t{\"(Value).Any\", Method, 21, \"\"},\n\t\t{\"(Value).Bool\", Method, 21, \"\"},\n\t\t{\"(Value).Duration\", Method, 21, \"\"},\n\t\t{\"(Value).Equal\", Method, 21, \"\"},\n\t\t{\"(Value).Float64\", Method, 21, \"\"},\n\t\t{\"(Value).Group\", Method, 21, \"\"},\n\t\t{\"(Value).Int64\", Method, 21, \"\"},\n\t\t{\"(Value).Kind\", Method, 21, \"\"},\n\t\t{\"(Value).LogValuer\", Method, 21, \"\"},\n\t\t{\"(Value).Resolve\", Method, 21, \"\"},\n\t\t{\"(Value).String\", Method, 21, \"\"},\n\t\t{\"(Value).Time\", Method, 21, \"\"},\n\t\t{\"(Value).Uint64\", Method, 21, \"\"},\n\t\t{\"Any\", Func, 21, \"func(key string, value any) Attr\"},\n\t\t{\"AnyValue\", Func, 21, \"func(v any) Value\"},\n\t\t{\"Attr\", Type, 21, \"\"},\n\t\t{\"Attr.Key\", Field, 21, \"\"},\n\t\t{\"Attr.Value\", Field, 21, \"\"},\n\t\t{\"Bool\", Func, 21, \"func(key string, v bool) Attr\"},\n\t\t{\"BoolValue\", Func, 21, \"func(v bool) Value\"},\n\t\t{\"Debug\", Func, 21, \"func(msg string, args ...any)\"},\n\t\t{\"DebugContext\", Func, 21, \"func(ctx context.Context, msg string, args ...any)\"},\n\t\t{\"Default\", Func, 21, \"func() *Logger\"},\n\t\t{\"DiscardHandler\", Var, 24, \"\"},\n\t\t{\"Duration\", Func, 21, \"func(key string, v time.Duration) Attr\"},\n\t\t{\"DurationValue\", Func, 21, \"func(v time.Duration) Value\"},\n\t\t{\"Error\", Func, 21, \"func(msg string, args ...any)\"},\n\t\t{\"ErrorContext\", Func, 21, \"func(ctx context.Context, msg string, args ...any)\"},\n\t\t{\"Float64\", Func, 21, \"func(key string, v float64) Attr\"},\n\t\t{\"Float64Value\", Func, 21, \"func(v float64) Value\"},\n\t\t{\"Group\", Func, 21, \"func(key string, args ...any) Attr\"},\n\t\t{\"GroupAttrs\", Func, 25, \"func(key string, attrs ...Attr) Attr\"},\n\t\t{\"GroupValue\", Func, 21, \"func(as ...Attr) Value\"},\n\t\t{\"Handler\", Type, 21, \"\"},\n\t\t{\"HandlerOptions\", Type, 21, \"\"},\n\t\t{\"HandlerOptions.AddSource\", Field, 21, \"\"},\n\t\t{\"HandlerOptions.Level\", Field, 21, \"\"},\n\t\t{\"HandlerOptions.ReplaceAttr\", Field, 21, \"\"},\n\t\t{\"Info\", Func, 21, \"func(msg string, args ...any)\"},\n\t\t{\"InfoContext\", Func, 21, \"func(ctx context.Context, msg string, args ...any)\"},\n\t\t{\"Int\", Func, 21, \"func(key string, value int) Attr\"},\n\t\t{\"Int64\", Func, 21, \"func(key string, value int64) Attr\"},\n\t\t{\"Int64Value\", Func, 21, \"func(v int64) Value\"},\n\t\t{\"IntValue\", Func, 21, \"func(v int) Value\"},\n\t\t{\"JSONHandler\", Type, 21, \"\"},\n\t\t{\"Kind\", Type, 21, \"\"},\n\t\t{\"KindAny\", Const, 21, \"\"},\n\t\t{\"KindBool\", Const, 21, \"\"},\n\t\t{\"KindDuration\", Const, 21, \"\"},\n\t\t{\"KindFloat64\", Const, 21, \"\"},\n\t\t{\"KindGroup\", Const, 21, \"\"},\n\t\t{\"KindInt64\", Const, 21, \"\"},\n\t\t{\"KindLogValuer\", Const, 21, \"\"},\n\t\t{\"KindString\", Const, 21, \"\"},\n\t\t{\"KindTime\", Const, 21, \"\"},\n\t\t{\"KindUint64\", Const, 21, \"\"},\n\t\t{\"Level\", Type, 21, \"\"},\n\t\t{\"LevelDebug\", Const, 21, \"\"},\n\t\t{\"LevelError\", Const, 21, \"\"},\n\t\t{\"LevelInfo\", Const, 21, \"\"},\n\t\t{\"LevelKey\", Const, 21, \"\"},\n\t\t{\"LevelVar\", Type, 21, \"\"},\n\t\t{\"LevelWarn\", Const, 21, \"\"},\n\t\t{\"Leveler\", Type, 21, \"\"},\n\t\t{\"Log\", Func, 21, \"func(ctx context.Context, level Level, msg string, args ...any)\"},\n\t\t{\"LogAttrs\", Func, 21, \"func(ctx context.Context, level Level, msg string, attrs ...Attr)\"},\n\t\t{\"LogValuer\", Type, 21, \"\"},\n\t\t{\"Logger\", Type, 21, \"\"},\n\t\t{\"MessageKey\", Const, 21, \"\"},\n\t\t{\"MultiHandler\", Type, 26, \"\"},\n\t\t{\"New\", Func, 21, \"func(h Handler) *Logger\"},\n\t\t{\"NewJSONHandler\", Func, 21, \"func(w io.Writer, opts *HandlerOptions) *JSONHandler\"},\n\t\t{\"NewLogLogger\", Func, 21, \"func(h Handler, level Level) *log.Logger\"},\n\t\t{\"NewMultiHandler\", Func, 26, \"func(handlers ...Handler) *MultiHandler\"},\n\t\t{\"NewRecord\", Func, 21, \"func(t time.Time, level Level, msg string, pc uintptr) Record\"},\n\t\t{\"NewTextHandler\", Func, 21, \"func(w io.Writer, opts *HandlerOptions) *TextHandler\"},\n\t\t{\"Record\", Type, 21, \"\"},\n\t\t{\"Record.Level\", Field, 21, \"\"},\n\t\t{\"Record.Message\", Field, 21, \"\"},\n\t\t{\"Record.PC\", Field, 21, \"\"},\n\t\t{\"Record.Time\", Field, 21, \"\"},\n\t\t{\"SetDefault\", Func, 21, \"func(l *Logger)\"},\n\t\t{\"SetLogLoggerLevel\", Func, 22, \"func(level Level) (oldLevel Level)\"},\n\t\t{\"Source\", Type, 21, \"\"},\n\t\t{\"Source.File\", Field, 21, \"\"},\n\t\t{\"Source.Function\", Field, 21, \"\"},\n\t\t{\"Source.Line\", Field, 21, \"\"},\n\t\t{\"SourceKey\", Const, 21, \"\"},\n\t\t{\"String\", Func, 21, \"func(key string, value string) Attr\"},\n\t\t{\"StringValue\", Func, 21, \"func(value string) Value\"},\n\t\t{\"TextHandler\", Type, 21, \"\"},\n\t\t{\"Time\", Func, 21, \"func(key string, v time.Time) Attr\"},\n\t\t{\"TimeKey\", Const, 21, \"\"},\n\t\t{\"TimeValue\", Func, 21, \"func(v time.Time) Value\"},\n\t\t{\"Uint64\", Func, 21, \"func(key string, v uint64) Attr\"},\n\t\t{\"Uint64Value\", Func, 21, \"func(v uint64) Value\"},\n\t\t{\"Value\", Type, 21, \"\"},\n\t\t{\"Warn\", Func, 21, \"func(msg string, args ...any)\"},\n\t\t{\"WarnContext\", Func, 21, \"func(ctx context.Context, msg string, args ...any)\"},\n\t\t{\"With\", Func, 21, \"func(args ...any) *Logger\"},\n\t},\n\t\"log/syslog\": {\n\t\t{\"(*Writer).Alert\", Method, 0, \"\"},\n\t\t{\"(*Writer).Close\", Method, 0, \"\"},\n\t\t{\"(*Writer).Crit\", Method, 0, \"\"},\n\t\t{\"(*Writer).Debug\", Method, 0, \"\"},\n\t\t{\"(*Writer).Emerg\", Method, 0, \"\"},\n\t\t{\"(*Writer).Err\", Method, 0, \"\"},\n\t\t{\"(*Writer).Info\", Method, 0, \"\"},\n\t\t{\"(*Writer).Notice\", Method, 0, \"\"},\n\t\t{\"(*Writer).Warning\", Method, 0, \"\"},\n\t\t{\"(*Writer).Write\", Method, 0, \"\"},\n\t\t{\"Dial\", Func, 0, \"func(network string, raddr string, priority Priority, tag string) (*Writer, error)\"},\n\t\t{\"LOG_ALERT\", Const, 0, \"\"},\n\t\t{\"LOG_AUTH\", Const, 1, \"\"},\n\t\t{\"LOG_AUTHPRIV\", Const, 1, \"\"},\n\t\t{\"LOG_CRIT\", Const, 0, \"\"},\n\t\t{\"LOG_CRON\", Const, 1, \"\"},\n\t\t{\"LOG_DAEMON\", Const, 1, \"\"},\n\t\t{\"LOG_DEBUG\", Const, 0, \"\"},\n\t\t{\"LOG_EMERG\", Const, 0, \"\"},\n\t\t{\"LOG_ERR\", Const, 0, \"\"},\n\t\t{\"LOG_FTP\", Const, 1, \"\"},\n\t\t{\"LOG_INFO\", Const, 0, \"\"},\n\t\t{\"LOG_KERN\", Const, 1, \"\"},\n\t\t{\"LOG_LOCAL0\", Const, 1, \"\"},\n\t\t{\"LOG_LOCAL1\", Const, 1, \"\"},\n\t\t{\"LOG_LOCAL2\", Const, 1, \"\"},\n\t\t{\"LOG_LOCAL3\", Const, 1, \"\"},\n\t\t{\"LOG_LOCAL4\", Const, 1, \"\"},\n\t\t{\"LOG_LOCAL5\", Const, 1, \"\"},\n\t\t{\"LOG_LOCAL6\", Const, 1, \"\"},\n\t\t{\"LOG_LOCAL7\", Const, 1, \"\"},\n\t\t{\"LOG_LPR\", Const, 1, \"\"},\n\t\t{\"LOG_MAIL\", Const, 1, \"\"},\n\t\t{\"LOG_NEWS\", Const, 1, \"\"},\n\t\t{\"LOG_NOTICE\", Const, 0, \"\"},\n\t\t{\"LOG_SYSLOG\", Const, 1, \"\"},\n\t\t{\"LOG_USER\", Const, 1, \"\"},\n\t\t{\"LOG_UUCP\", Const, 1, \"\"},\n\t\t{\"LOG_WARNING\", Const, 0, \"\"},\n\t\t{\"New\", Func, 0, \"func(priority Priority, tag string) (*Writer, error)\"},\n\t\t{\"NewLogger\", Func, 0, \"func(p Priority, logFlag int) (*log.Logger, error)\"},\n\t\t{\"Priority\", Type, 0, \"\"},\n\t\t{\"Writer\", Type, 0, \"\"},\n\t},\n\t\"maps\": {\n\t\t{\"All\", Func, 23, \"func[Map ~map[K]V, K comparable, V any](m Map) iter.Seq2[K, V]\"},\n\t\t{\"Clone\", Func, 21, \"func[M ~map[K]V, K comparable, V any](m M) M\"},\n\t\t{\"Collect\", Func, 23, \"func[K comparable, V any](seq iter.Seq2[K, V]) map[K]V\"},\n\t\t{\"Copy\", Func, 21, \"func[M1 ~map[K]V, M2 ~map[K]V, K comparable, V any](dst M1, src M2)\"},\n\t\t{\"DeleteFunc\", Func, 21, \"func[M ~map[K]V, K comparable, V any](m M, del func(K, V) bool)\"},\n\t\t{\"Equal\", Func, 21, \"func[M1, M2 ~map[K]V, K, V comparable](m1 M1, m2 M2) bool\"},\n\t\t{\"EqualFunc\", Func, 21, \"func[M1 ~map[K]V1, M2 ~map[K]V2, K comparable, V1, V2 any](m1 M1, m2 M2, eq func(V1, V2) bool) bool\"},\n\t\t{\"Insert\", Func, 23, \"func[Map ~map[K]V, K comparable, V any](m Map, seq iter.Seq2[K, V])\"},\n\t\t{\"Keys\", Func, 23, \"func[Map ~map[K]V, K comparable, V any](m Map) iter.Seq[K]\"},\n\t\t{\"Values\", Func, 23, \"func[Map ~map[K]V, K comparable, V any](m Map) iter.Seq[V]\"},\n\t},\n\t\"math\": {\n\t\t{\"Abs\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"Acos\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"Acosh\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"Asin\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"Asinh\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"Atan\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"Atan2\", Func, 0, \"func(y float64, x float64) float64\"},\n\t\t{\"Atanh\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"Cbrt\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"Ceil\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"Copysign\", Func, 0, \"func(f float64, sign float64) float64\"},\n\t\t{\"Cos\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"Cosh\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"Dim\", Func, 0, \"func(x float64, y float64) float64\"},\n\t\t{\"E\", Const, 0, \"\"},\n\t\t{\"Erf\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"Erfc\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"Erfcinv\", Func, 10, \"func(x float64) float64\"},\n\t\t{\"Erfinv\", Func, 10, \"func(x float64) float64\"},\n\t\t{\"Exp\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"Exp2\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"Expm1\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"FMA\", Func, 14, \"func(x float64, y float64, z float64) float64\"},\n\t\t{\"Float32bits\", Func, 0, \"func(f float32) uint32\"},\n\t\t{\"Float32frombits\", Func, 0, \"func(b uint32) float32\"},\n\t\t{\"Float64bits\", Func, 0, \"func(f float64) uint64\"},\n\t\t{\"Float64frombits\", Func, 0, \"func(b uint64) float64\"},\n\t\t{\"Floor\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"Frexp\", Func, 0, \"func(f float64) (frac float64, exp int)\"},\n\t\t{\"Gamma\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"Hypot\", Func, 0, \"func(p float64, q float64) float64\"},\n\t\t{\"Ilogb\", Func, 0, \"func(x float64) int\"},\n\t\t{\"Inf\", Func, 0, \"func(sign int) float64\"},\n\t\t{\"IsInf\", Func, 0, \"func(f float64, sign int) bool\"},\n\t\t{\"IsNaN\", Func, 0, \"func(f float64) (is bool)\"},\n\t\t{\"J0\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"J1\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"Jn\", Func, 0, \"func(n int, x float64) float64\"},\n\t\t{\"Ldexp\", Func, 0, \"func(frac float64, exp int) float64\"},\n\t\t{\"Lgamma\", Func, 0, \"func(x float64) (lgamma float64, sign int)\"},\n\t\t{\"Ln10\", Const, 0, \"\"},\n\t\t{\"Ln2\", Const, 0, \"\"},\n\t\t{\"Log\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"Log10\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"Log10E\", Const, 0, \"\"},\n\t\t{\"Log1p\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"Log2\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"Log2E\", Const, 0, \"\"},\n\t\t{\"Logb\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"Max\", Func, 0, \"func(x float64, y float64) float64\"},\n\t\t{\"MaxFloat32\", Const, 0, \"\"},\n\t\t{\"MaxFloat64\", Const, 0, \"\"},\n\t\t{\"MaxInt\", Const, 17, \"\"},\n\t\t{\"MaxInt16\", Const, 0, \"\"},\n\t\t{\"MaxInt32\", Const, 0, \"\"},\n\t\t{\"MaxInt64\", Const, 0, \"\"},\n\t\t{\"MaxInt8\", Const, 0, \"\"},\n\t\t{\"MaxUint\", Const, 17, \"\"},\n\t\t{\"MaxUint16\", Const, 0, \"\"},\n\t\t{\"MaxUint32\", Const, 0, \"\"},\n\t\t{\"MaxUint64\", Const, 0, \"\"},\n\t\t{\"MaxUint8\", Const, 0, \"\"},\n\t\t{\"Min\", Func, 0, \"func(x float64, y float64) float64\"},\n\t\t{\"MinInt\", Const, 17, \"\"},\n\t\t{\"MinInt16\", Const, 0, \"\"},\n\t\t{\"MinInt32\", Const, 0, \"\"},\n\t\t{\"MinInt64\", Const, 0, \"\"},\n\t\t{\"MinInt8\", Const, 0, \"\"},\n\t\t{\"Mod\", Func, 0, \"func(x float64, y float64) float64\"},\n\t\t{\"Modf\", Func, 0, \"func(f float64) (integer float64, fractional float64)\"},\n\t\t{\"NaN\", Func, 0, \"func() float64\"},\n\t\t{\"Nextafter\", Func, 0, \"func(x float64, y float64) (r float64)\"},\n\t\t{\"Nextafter32\", Func, 4, \"func(x float32, y float32) (r float32)\"},\n\t\t{\"Phi\", Const, 0, \"\"},\n\t\t{\"Pi\", Const, 0, \"\"},\n\t\t{\"Pow\", Func, 0, \"func(x float64, y float64) float64\"},\n\t\t{\"Pow10\", Func, 0, \"func(n int) float64\"},\n\t\t{\"Remainder\", Func, 0, \"func(x float64, y float64) float64\"},\n\t\t{\"Round\", Func, 10, \"func(x float64) float64\"},\n\t\t{\"RoundToEven\", Func, 10, \"func(x float64) float64\"},\n\t\t{\"Signbit\", Func, 0, \"func(x float64) bool\"},\n\t\t{\"Sin\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"Sincos\", Func, 0, \"func(x float64) (sin float64, cos float64)\"},\n\t\t{\"Sinh\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"SmallestNonzeroFloat32\", Const, 0, \"\"},\n\t\t{\"SmallestNonzeroFloat64\", Const, 0, \"\"},\n\t\t{\"Sqrt\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"Sqrt2\", Const, 0, \"\"},\n\t\t{\"SqrtE\", Const, 0, \"\"},\n\t\t{\"SqrtPhi\", Const, 0, \"\"},\n\t\t{\"SqrtPi\", Const, 0, \"\"},\n\t\t{\"Tan\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"Tanh\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"Trunc\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"Y0\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"Y1\", Func, 0, \"func(x float64) float64\"},\n\t\t{\"Yn\", Func, 0, \"func(n int, x float64) float64\"},\n\t},\n\t\"math/big\": {\n\t\t{\"(*Float).Abs\", Method, 5, \"\"},\n\t\t{\"(*Float).Acc\", Method, 5, \"\"},\n\t\t{\"(*Float).Add\", Method, 5, \"\"},\n\t\t{\"(*Float).Append\", Method, 5, \"\"},\n\t\t{\"(*Float).AppendText\", Method, 24, \"\"},\n\t\t{\"(*Float).Cmp\", Method, 5, \"\"},\n\t\t{\"(*Float).Copy\", Method, 5, \"\"},\n\t\t{\"(*Float).Float32\", Method, 5, \"\"},\n\t\t{\"(*Float).Float64\", Method, 5, \"\"},\n\t\t{\"(*Float).Format\", Method, 5, \"\"},\n\t\t{\"(*Float).GobDecode\", Method, 7, \"\"},\n\t\t{\"(*Float).GobEncode\", Method, 7, \"\"},\n\t\t{\"(*Float).Int\", Method, 5, \"\"},\n\t\t{\"(*Float).Int64\", Method, 5, \"\"},\n\t\t{\"(*Float).IsInf\", Method, 5, \"\"},\n\t\t{\"(*Float).IsInt\", Method, 5, \"\"},\n\t\t{\"(*Float).MantExp\", Method, 5, \"\"},\n\t\t{\"(*Float).MarshalText\", Method, 6, \"\"},\n\t\t{\"(*Float).MinPrec\", Method, 5, \"\"},\n\t\t{\"(*Float).Mode\", Method, 5, \"\"},\n\t\t{\"(*Float).Mul\", Method, 5, \"\"},\n\t\t{\"(*Float).Neg\", Method, 5, \"\"},\n\t\t{\"(*Float).Parse\", Method, 5, \"\"},\n\t\t{\"(*Float).Prec\", Method, 5, \"\"},\n\t\t{\"(*Float).Quo\", Method, 5, \"\"},\n\t\t{\"(*Float).Rat\", Method, 5, \"\"},\n\t\t{\"(*Float).Scan\", Method, 8, \"\"},\n\t\t{\"(*Float).Set\", Method, 5, \"\"},\n\t\t{\"(*Float).SetFloat64\", Method, 5, \"\"},\n\t\t{\"(*Float).SetInf\", Method, 5, \"\"},\n\t\t{\"(*Float).SetInt\", Method, 5, \"\"},\n\t\t{\"(*Float).SetInt64\", Method, 5, \"\"},\n\t\t{\"(*Float).SetMantExp\", Method, 5, \"\"},\n\t\t{\"(*Float).SetMode\", Method, 5, \"\"},\n\t\t{\"(*Float).SetPrec\", Method, 5, \"\"},\n\t\t{\"(*Float).SetRat\", Method, 5, \"\"},\n\t\t{\"(*Float).SetString\", Method, 5, \"\"},\n\t\t{\"(*Float).SetUint64\", Method, 5, \"\"},\n\t\t{\"(*Float).Sign\", Method, 5, \"\"},\n\t\t{\"(*Float).Signbit\", Method, 5, \"\"},\n\t\t{\"(*Float).Sqrt\", Method, 10, \"\"},\n\t\t{\"(*Float).String\", Method, 5, \"\"},\n\t\t{\"(*Float).Sub\", Method, 5, \"\"},\n\t\t{\"(*Float).Text\", Method, 5, \"\"},\n\t\t{\"(*Float).Uint64\", Method, 5, \"\"},\n\t\t{\"(*Float).UnmarshalText\", Method, 6, \"\"},\n\t\t{\"(*Int).Abs\", Method, 0, \"\"},\n\t\t{\"(*Int).Add\", Method, 0, \"\"},\n\t\t{\"(*Int).And\", Method, 0, \"\"},\n\t\t{\"(*Int).AndNot\", Method, 0, \"\"},\n\t\t{\"(*Int).Append\", Method, 6, \"\"},\n\t\t{\"(*Int).AppendText\", Method, 24, \"\"},\n\t\t{\"(*Int).Binomial\", Method, 0, \"\"},\n\t\t{\"(*Int).Bit\", Method, 0, \"\"},\n\t\t{\"(*Int).BitLen\", Method, 0, \"\"},\n\t\t{\"(*Int).Bits\", Method, 0, \"\"},\n\t\t{\"(*Int).Bytes\", Method, 0, \"\"},\n\t\t{\"(*Int).Cmp\", Method, 0, \"\"},\n\t\t{\"(*Int).CmpAbs\", Method, 10, \"\"},\n\t\t{\"(*Int).Div\", Method, 0, \"\"},\n\t\t{\"(*Int).DivMod\", Method, 0, \"\"},\n\t\t{\"(*Int).Exp\", Method, 0, \"\"},\n\t\t{\"(*Int).FillBytes\", Method, 15, \"\"},\n\t\t{\"(*Int).Float64\", Method, 21, \"\"},\n\t\t{\"(*Int).Format\", Method, 0, \"\"},\n\t\t{\"(*Int).GCD\", Method, 0, \"\"},\n\t\t{\"(*Int).GobDecode\", Method, 0, \"\"},\n\t\t{\"(*Int).GobEncode\", Method, 0, \"\"},\n\t\t{\"(*Int).Int64\", Method, 0, \"\"},\n\t\t{\"(*Int).IsInt64\", Method, 9, \"\"},\n\t\t{\"(*Int).IsUint64\", Method, 9, \"\"},\n\t\t{\"(*Int).Lsh\", Method, 0, \"\"},\n\t\t{\"(*Int).MarshalJSON\", Method, 1, \"\"},\n\t\t{\"(*Int).MarshalText\", Method, 3, \"\"},\n\t\t{\"(*Int).Mod\", Method, 0, \"\"},\n\t\t{\"(*Int).ModInverse\", Method, 0, \"\"},\n\t\t{\"(*Int).ModSqrt\", Method, 5, \"\"},\n\t\t{\"(*Int).Mul\", Method, 0, \"\"},\n\t\t{\"(*Int).MulRange\", Method, 0, \"\"},\n\t\t{\"(*Int).Neg\", Method, 0, \"\"},\n\t\t{\"(*Int).Not\", Method, 0, \"\"},\n\t\t{\"(*Int).Or\", Method, 0, \"\"},\n\t\t{\"(*Int).ProbablyPrime\", Method, 0, \"\"},\n\t\t{\"(*Int).Quo\", Method, 0, \"\"},\n\t\t{\"(*Int).QuoRem\", Method, 0, \"\"},\n\t\t{\"(*Int).Rand\", Method, 0, \"\"},\n\t\t{\"(*Int).Rem\", Method, 0, \"\"},\n\t\t{\"(*Int).Rsh\", Method, 0, \"\"},\n\t\t{\"(*Int).Scan\", Method, 0, \"\"},\n\t\t{\"(*Int).Set\", Method, 0, \"\"},\n\t\t{\"(*Int).SetBit\", Method, 0, \"\"},\n\t\t{\"(*Int).SetBits\", Method, 0, \"\"},\n\t\t{\"(*Int).SetBytes\", Method, 0, \"\"},\n\t\t{\"(*Int).SetInt64\", Method, 0, \"\"},\n\t\t{\"(*Int).SetString\", Method, 0, \"\"},\n\t\t{\"(*Int).SetUint64\", Method, 1, \"\"},\n\t\t{\"(*Int).Sign\", Method, 0, \"\"},\n\t\t{\"(*Int).Sqrt\", Method, 8, \"\"},\n\t\t{\"(*Int).String\", Method, 0, \"\"},\n\t\t{\"(*Int).Sub\", Method, 0, \"\"},\n\t\t{\"(*Int).Text\", Method, 6, \"\"},\n\t\t{\"(*Int).TrailingZeroBits\", Method, 13, \"\"},\n\t\t{\"(*Int).Uint64\", Method, 1, \"\"},\n\t\t{\"(*Int).UnmarshalJSON\", Method, 1, \"\"},\n\t\t{\"(*Int).UnmarshalText\", Method, 3, \"\"},\n\t\t{\"(*Int).Xor\", Method, 0, \"\"},\n\t\t{\"(*Rat).Abs\", Method, 0, \"\"},\n\t\t{\"(*Rat).Add\", Method, 0, \"\"},\n\t\t{\"(*Rat).AppendText\", Method, 24, \"\"},\n\t\t{\"(*Rat).Cmp\", Method, 0, \"\"},\n\t\t{\"(*Rat).Denom\", Method, 0, \"\"},\n\t\t{\"(*Rat).Float32\", Method, 4, \"\"},\n\t\t{\"(*Rat).Float64\", Method, 1, \"\"},\n\t\t{\"(*Rat).FloatPrec\", Method, 22, \"\"},\n\t\t{\"(*Rat).FloatString\", Method, 0, \"\"},\n\t\t{\"(*Rat).GobDecode\", Method, 0, \"\"},\n\t\t{\"(*Rat).GobEncode\", Method, 0, \"\"},\n\t\t{\"(*Rat).Inv\", Method, 0, \"\"},\n\t\t{\"(*Rat).IsInt\", Method, 0, \"\"},\n\t\t{\"(*Rat).MarshalText\", Method, 3, \"\"},\n\t\t{\"(*Rat).Mul\", Method, 0, \"\"},\n\t\t{\"(*Rat).Neg\", Method, 0, \"\"},\n\t\t{\"(*Rat).Num\", Method, 0, \"\"},\n\t\t{\"(*Rat).Quo\", Method, 0, \"\"},\n\t\t{\"(*Rat).RatString\", Method, 0, \"\"},\n\t\t{\"(*Rat).Scan\", Method, 0, \"\"},\n\t\t{\"(*Rat).Set\", Method, 0, \"\"},\n\t\t{\"(*Rat).SetFloat64\", Method, 1, \"\"},\n\t\t{\"(*Rat).SetFrac\", Method, 0, \"\"},\n\t\t{\"(*Rat).SetFrac64\", Method, 0, \"\"},\n\t\t{\"(*Rat).SetInt\", Method, 0, \"\"},\n\t\t{\"(*Rat).SetInt64\", Method, 0, \"\"},\n\t\t{\"(*Rat).SetString\", Method, 0, \"\"},\n\t\t{\"(*Rat).SetUint64\", Method, 13, \"\"},\n\t\t{\"(*Rat).Sign\", Method, 0, \"\"},\n\t\t{\"(*Rat).String\", Method, 0, \"\"},\n\t\t{\"(*Rat).Sub\", Method, 0, \"\"},\n\t\t{\"(*Rat).UnmarshalText\", Method, 3, \"\"},\n\t\t{\"(Accuracy).String\", Method, 5, \"\"},\n\t\t{\"(ErrNaN).Error\", Method, 5, \"\"},\n\t\t{\"(RoundingMode).String\", Method, 5, \"\"},\n\t\t{\"Above\", Const, 5, \"\"},\n\t\t{\"Accuracy\", Type, 5, \"\"},\n\t\t{\"AwayFromZero\", Const, 5, \"\"},\n\t\t{\"Below\", Const, 5, \"\"},\n\t\t{\"ErrNaN\", Type, 5, \"\"},\n\t\t{\"Exact\", Const, 5, \"\"},\n\t\t{\"Float\", Type, 5, \"\"},\n\t\t{\"Int\", Type, 0, \"\"},\n\t\t{\"Jacobi\", Func, 5, \"func(x *Int, y *Int) int\"},\n\t\t{\"MaxBase\", Const, 0, \"\"},\n\t\t{\"MaxExp\", Const, 5, \"\"},\n\t\t{\"MaxPrec\", Const, 5, \"\"},\n\t\t{\"MinExp\", Const, 5, \"\"},\n\t\t{\"NewFloat\", Func, 5, \"func(x float64) *Float\"},\n\t\t{\"NewInt\", Func, 0, \"func(x int64) *Int\"},\n\t\t{\"NewRat\", Func, 0, \"func(a int64, b int64) *Rat\"},\n\t\t{\"ParseFloat\", Func, 5, \"func(s string, base int, prec uint, mode RoundingMode) (f *Float, b int, err error)\"},\n\t\t{\"Rat\", Type, 0, \"\"},\n\t\t{\"RoundingMode\", Type, 5, \"\"},\n\t\t{\"ToNearestAway\", Const, 5, \"\"},\n\t\t{\"ToNearestEven\", Const, 5, \"\"},\n\t\t{\"ToNegativeInf\", Const, 5, \"\"},\n\t\t{\"ToPositiveInf\", Const, 5, \"\"},\n\t\t{\"ToZero\", Const, 5, \"\"},\n\t\t{\"Word\", Type, 0, \"\"},\n\t},\n\t\"math/bits\": {\n\t\t{\"Add\", Func, 12, \"func(x uint, y uint, carry uint) (sum uint, carryOut uint)\"},\n\t\t{\"Add32\", Func, 12, \"func(x uint32, y uint32, carry uint32) (sum uint32, carryOut uint32)\"},\n\t\t{\"Add64\", Func, 12, \"func(x uint64, y uint64, carry uint64) (sum uint64, carryOut uint64)\"},\n\t\t{\"Div\", Func, 12, \"func(hi uint, lo uint, y uint) (quo uint, rem uint)\"},\n\t\t{\"Div32\", Func, 12, \"func(hi uint32, lo uint32, y uint32) (quo uint32, rem uint32)\"},\n\t\t{\"Div64\", Func, 12, \"func(hi uint64, lo uint64, y uint64) (quo uint64, rem uint64)\"},\n\t\t{\"LeadingZeros\", Func, 9, \"func(x uint) int\"},\n\t\t{\"LeadingZeros16\", Func, 9, \"func(x uint16) int\"},\n\t\t{\"LeadingZeros32\", Func, 9, \"func(x uint32) int\"},\n\t\t{\"LeadingZeros64\", Func, 9, \"func(x uint64) int\"},\n\t\t{\"LeadingZeros8\", Func, 9, \"func(x uint8) int\"},\n\t\t{\"Len\", Func, 9, \"func(x uint) int\"},\n\t\t{\"Len16\", Func, 9, \"func(x uint16) (n int)\"},\n\t\t{\"Len32\", Func, 9, \"func(x uint32) (n int)\"},\n\t\t{\"Len64\", Func, 9, \"func(x uint64) (n int)\"},\n\t\t{\"Len8\", Func, 9, \"func(x uint8) int\"},\n\t\t{\"Mul\", Func, 12, \"func(x uint, y uint) (hi uint, lo uint)\"},\n\t\t{\"Mul32\", Func, 12, \"func(x uint32, y uint32) (hi uint32, lo uint32)\"},\n\t\t{\"Mul64\", Func, 12, \"func(x uint64, y uint64) (hi uint64, lo uint64)\"},\n\t\t{\"OnesCount\", Func, 9, \"func(x uint) int\"},\n\t\t{\"OnesCount16\", Func, 9, \"func(x uint16) int\"},\n\t\t{\"OnesCount32\", Func, 9, \"func(x uint32) int\"},\n\t\t{\"OnesCount64\", Func, 9, \"func(x uint64) int\"},\n\t\t{\"OnesCount8\", Func, 9, \"func(x uint8) int\"},\n\t\t{\"Rem\", Func, 14, \"func(hi uint, lo uint, y uint) uint\"},\n\t\t{\"Rem32\", Func, 14, \"func(hi uint32, lo uint32, y uint32) uint32\"},\n\t\t{\"Rem64\", Func, 14, \"func(hi uint64, lo uint64, y uint64) uint64\"},\n\t\t{\"Reverse\", Func, 9, \"func(x uint) uint\"},\n\t\t{\"Reverse16\", Func, 9, \"func(x uint16) uint16\"},\n\t\t{\"Reverse32\", Func, 9, \"func(x uint32) uint32\"},\n\t\t{\"Reverse64\", Func, 9, \"func(x uint64) uint64\"},\n\t\t{\"Reverse8\", Func, 9, \"func(x uint8) uint8\"},\n\t\t{\"ReverseBytes\", Func, 9, \"func(x uint) uint\"},\n\t\t{\"ReverseBytes16\", Func, 9, \"func(x uint16) uint16\"},\n\t\t{\"ReverseBytes32\", Func, 9, \"func(x uint32) uint32\"},\n\t\t{\"ReverseBytes64\", Func, 9, \"func(x uint64) uint64\"},\n\t\t{\"RotateLeft\", Func, 9, \"func(x uint, k int) uint\"},\n\t\t{\"RotateLeft16\", Func, 9, \"func(x uint16, k int) uint16\"},\n\t\t{\"RotateLeft32\", Func, 9, \"func(x uint32, k int) uint32\"},\n\t\t{\"RotateLeft64\", Func, 9, \"func(x uint64, k int) uint64\"},\n\t\t{\"RotateLeft8\", Func, 9, \"func(x uint8, k int) uint8\"},\n\t\t{\"Sub\", Func, 12, \"func(x uint, y uint, borrow uint) (diff uint, borrowOut uint)\"},\n\t\t{\"Sub32\", Func, 12, \"func(x uint32, y uint32, borrow uint32) (diff uint32, borrowOut uint32)\"},\n\t\t{\"Sub64\", Func, 12, \"func(x uint64, y uint64, borrow uint64) (diff uint64, borrowOut uint64)\"},\n\t\t{\"TrailingZeros\", Func, 9, \"func(x uint) int\"},\n\t\t{\"TrailingZeros16\", Func, 9, \"func(x uint16) int\"},\n\t\t{\"TrailingZeros32\", Func, 9, \"func(x uint32) int\"},\n\t\t{\"TrailingZeros64\", Func, 9, \"func(x uint64) int\"},\n\t\t{\"TrailingZeros8\", Func, 9, \"func(x uint8) int\"},\n\t\t{\"UintSize\", Const, 9, \"\"},\n\t},\n\t\"math/cmplx\": {\n\t\t{\"Abs\", Func, 0, \"func(x complex128) float64\"},\n\t\t{\"Acos\", Func, 0, \"func(x complex128) complex128\"},\n\t\t{\"Acosh\", Func, 0, \"func(x complex128) complex128\"},\n\t\t{\"Asin\", Func, 0, \"func(x complex128) complex128\"},\n\t\t{\"Asinh\", Func, 0, \"func(x complex128) complex128\"},\n\t\t{\"Atan\", Func, 0, \"func(x complex128) complex128\"},\n\t\t{\"Atanh\", Func, 0, \"func(x complex128) complex128\"},\n\t\t{\"Conj\", Func, 0, \"func(x complex128) complex128\"},\n\t\t{\"Cos\", Func, 0, \"func(x complex128) complex128\"},\n\t\t{\"Cosh\", Func, 0, \"func(x complex128) complex128\"},\n\t\t{\"Cot\", Func, 0, \"func(x complex128) complex128\"},\n\t\t{\"Exp\", Func, 0, \"func(x complex128) complex128\"},\n\t\t{\"Inf\", Func, 0, \"func() complex128\"},\n\t\t{\"IsInf\", Func, 0, \"func(x complex128) bool\"},\n\t\t{\"IsNaN\", Func, 0, \"func(x complex128) bool\"},\n\t\t{\"Log\", Func, 0, \"func(x complex128) complex128\"},\n\t\t{\"Log10\", Func, 0, \"func(x complex128) complex128\"},\n\t\t{\"NaN\", Func, 0, \"func() complex128\"},\n\t\t{\"Phase\", Func, 0, \"func(x complex128) float64\"},\n\t\t{\"Polar\", Func, 0, \"func(x complex128) (r float64, θ float64)\"},\n\t\t{\"Pow\", Func, 0, \"func(x complex128, y complex128) complex128\"},\n\t\t{\"Rect\", Func, 0, \"func(r float64, θ float64) complex128\"},\n\t\t{\"Sin\", Func, 0, \"func(x complex128) complex128\"},\n\t\t{\"Sinh\", Func, 0, \"func(x complex128) complex128\"},\n\t\t{\"Sqrt\", Func, 0, \"func(x complex128) complex128\"},\n\t\t{\"Tan\", Func, 0, \"func(x complex128) complex128\"},\n\t\t{\"Tanh\", Func, 0, \"func(x complex128) complex128\"},\n\t},\n\t\"math/rand\": {\n\t\t{\"(*Rand).ExpFloat64\", Method, 0, \"\"},\n\t\t{\"(*Rand).Float32\", Method, 0, \"\"},\n\t\t{\"(*Rand).Float64\", Method, 0, \"\"},\n\t\t{\"(*Rand).Int\", Method, 0, \"\"},\n\t\t{\"(*Rand).Int31\", Method, 0, \"\"},\n\t\t{\"(*Rand).Int31n\", Method, 0, \"\"},\n\t\t{\"(*Rand).Int63\", Method, 0, \"\"},\n\t\t{\"(*Rand).Int63n\", Method, 0, \"\"},\n\t\t{\"(*Rand).Intn\", Method, 0, \"\"},\n\t\t{\"(*Rand).NormFloat64\", Method, 0, \"\"},\n\t\t{\"(*Rand).Perm\", Method, 0, \"\"},\n\t\t{\"(*Rand).Read\", Method, 6, \"\"},\n\t\t{\"(*Rand).Seed\", Method, 0, \"\"},\n\t\t{\"(*Rand).Shuffle\", Method, 10, \"\"},\n\t\t{\"(*Rand).Uint32\", Method, 0, \"\"},\n\t\t{\"(*Rand).Uint64\", Method, 8, \"\"},\n\t\t{\"(*Zipf).Uint64\", Method, 0, \"\"},\n\t\t{\"(Source).Int63\", Method, 0, \"\"},\n\t\t{\"(Source).Seed\", Method, 0, \"\"},\n\t\t{\"(Source64).Int63\", Method, 8, \"\"},\n\t\t{\"(Source64).Seed\", Method, 8, \"\"},\n\t\t{\"(Source64).Uint64\", Method, 8, \"\"},\n\t\t{\"ExpFloat64\", Func, 0, \"func() float64\"},\n\t\t{\"Float32\", Func, 0, \"func() float32\"},\n\t\t{\"Float64\", Func, 0, \"func() float64\"},\n\t\t{\"Int\", Func, 0, \"func() int\"},\n\t\t{\"Int31\", Func, 0, \"func() int32\"},\n\t\t{\"Int31n\", Func, 0, \"func(n int32) int32\"},\n\t\t{\"Int63\", Func, 0, \"func() int64\"},\n\t\t{\"Int63n\", Func, 0, \"func(n int64) int64\"},\n\t\t{\"Intn\", Func, 0, \"func(n int) int\"},\n\t\t{\"New\", Func, 0, \"func(src Source) *Rand\"},\n\t\t{\"NewSource\", Func, 0, \"func(seed int64) Source\"},\n\t\t{\"NewZipf\", Func, 0, \"func(r *Rand, s float64, v float64, imax uint64) *Zipf\"},\n\t\t{\"NormFloat64\", Func, 0, \"func() float64\"},\n\t\t{\"Perm\", Func, 0, \"func(n int) []int\"},\n\t\t{\"Rand\", Type, 0, \"\"},\n\t\t{\"Read\", Func, 6, \"func(p []byte) (n int, err error)\"},\n\t\t{\"Seed\", Func, 0, \"func(seed int64)\"},\n\t\t{\"Shuffle\", Func, 10, \"func(n int, swap func(i int, j int))\"},\n\t\t{\"Source\", Type, 0, \"\"},\n\t\t{\"Source64\", Type, 8, \"\"},\n\t\t{\"Uint32\", Func, 0, \"func() uint32\"},\n\t\t{\"Uint64\", Func, 8, \"func() uint64\"},\n\t\t{\"Zipf\", Type, 0, \"\"},\n\t},\n\t\"math/rand/v2\": {\n\t\t{\"(*ChaCha8).AppendBinary\", Method, 24, \"\"},\n\t\t{\"(*ChaCha8).MarshalBinary\", Method, 22, \"\"},\n\t\t{\"(*ChaCha8).Read\", Method, 23, \"\"},\n\t\t{\"(*ChaCha8).Seed\", Method, 22, \"\"},\n\t\t{\"(*ChaCha8).Uint64\", Method, 22, \"\"},\n\t\t{\"(*ChaCha8).UnmarshalBinary\", Method, 22, \"\"},\n\t\t{\"(*PCG).AppendBinary\", Method, 24, \"\"},\n\t\t{\"(*PCG).MarshalBinary\", Method, 22, \"\"},\n\t\t{\"(*PCG).Seed\", Method, 22, \"\"},\n\t\t{\"(*PCG).Uint64\", Method, 22, \"\"},\n\t\t{\"(*PCG).UnmarshalBinary\", Method, 22, \"\"},\n\t\t{\"(*Rand).ExpFloat64\", Method, 22, \"\"},\n\t\t{\"(*Rand).Float32\", Method, 22, \"\"},\n\t\t{\"(*Rand).Float64\", Method, 22, \"\"},\n\t\t{\"(*Rand).Int\", Method, 22, \"\"},\n\t\t{\"(*Rand).Int32\", Method, 22, \"\"},\n\t\t{\"(*Rand).Int32N\", Method, 22, \"\"},\n\t\t{\"(*Rand).Int64\", Method, 22, \"\"},\n\t\t{\"(*Rand).Int64N\", Method, 22, \"\"},\n\t\t{\"(*Rand).IntN\", Method, 22, \"\"},\n\t\t{\"(*Rand).NormFloat64\", Method, 22, \"\"},\n\t\t{\"(*Rand).Perm\", Method, 22, \"\"},\n\t\t{\"(*Rand).Shuffle\", Method, 22, \"\"},\n\t\t{\"(*Rand).Uint\", Method, 23, \"\"},\n\t\t{\"(*Rand).Uint32\", Method, 22, \"\"},\n\t\t{\"(*Rand).Uint32N\", Method, 22, \"\"},\n\t\t{\"(*Rand).Uint64\", Method, 22, \"\"},\n\t\t{\"(*Rand).Uint64N\", Method, 22, \"\"},\n\t\t{\"(*Rand).UintN\", Method, 22, \"\"},\n\t\t{\"(*Zipf).Uint64\", Method, 22, \"\"},\n\t\t{\"(Source).Uint64\", Method, 22, \"\"},\n\t\t{\"ChaCha8\", Type, 22, \"\"},\n\t\t{\"ExpFloat64\", Func, 22, \"func() float64\"},\n\t\t{\"Float32\", Func, 22, \"func() float32\"},\n\t\t{\"Float64\", Func, 22, \"func() float64\"},\n\t\t{\"Int\", Func, 22, \"func() int\"},\n\t\t{\"Int32\", Func, 22, \"func() int32\"},\n\t\t{\"Int32N\", Func, 22, \"func(n int32) int32\"},\n\t\t{\"Int64\", Func, 22, \"func() int64\"},\n\t\t{\"Int64N\", Func, 22, \"func(n int64) int64\"},\n\t\t{\"IntN\", Func, 22, \"func(n int) int\"},\n\t\t{\"N\", Func, 22, \"func[Int intType](n Int) Int\"},\n\t\t{\"New\", Func, 22, \"func(src Source) *Rand\"},\n\t\t{\"NewChaCha8\", Func, 22, \"func(seed [32]byte) *ChaCha8\"},\n\t\t{\"NewPCG\", Func, 22, \"func(seed1 uint64, seed2 uint64) *PCG\"},\n\t\t{\"NewZipf\", Func, 22, \"func(r *Rand, s float64, v float64, imax uint64) *Zipf\"},\n\t\t{\"NormFloat64\", Func, 22, \"func() float64\"},\n\t\t{\"PCG\", Type, 22, \"\"},\n\t\t{\"Perm\", Func, 22, \"func(n int) []int\"},\n\t\t{\"Rand\", Type, 22, \"\"},\n\t\t{\"Shuffle\", Func, 22, \"func(n int, swap func(i int, j int))\"},\n\t\t{\"Source\", Type, 22, \"\"},\n\t\t{\"Uint\", Func, 23, \"func() uint\"},\n\t\t{\"Uint32\", Func, 22, \"func() uint32\"},\n\t\t{\"Uint32N\", Func, 22, \"func(n uint32) uint32\"},\n\t\t{\"Uint64\", Func, 22, \"func() uint64\"},\n\t\t{\"Uint64N\", Func, 22, \"func(n uint64) uint64\"},\n\t\t{\"UintN\", Func, 22, \"func(n uint) uint\"},\n\t\t{\"Zipf\", Type, 22, \"\"},\n\t},\n\t\"mime\": {\n\t\t{\"(*WordDecoder).Decode\", Method, 5, \"\"},\n\t\t{\"(*WordDecoder).DecodeHeader\", Method, 5, \"\"},\n\t\t{\"(WordEncoder).Encode\", Method, 5, \"\"},\n\t\t{\"AddExtensionType\", Func, 0, \"func(ext string, typ string) error\"},\n\t\t{\"BEncoding\", Const, 5, \"\"},\n\t\t{\"ErrInvalidMediaParameter\", Var, 9, \"\"},\n\t\t{\"ExtensionsByType\", Func, 5, \"func(typ string) ([]string, error)\"},\n\t\t{\"FormatMediaType\", Func, 0, \"func(t string, param map[string]string) string\"},\n\t\t{\"ParseMediaType\", Func, 0, \"func(v string) (mediatype string, params map[string]string, err error)\"},\n\t\t{\"QEncoding\", Const, 5, \"\"},\n\t\t{\"TypeByExtension\", Func, 0, \"func(ext string) string\"},\n\t\t{\"WordDecoder\", Type, 5, \"\"},\n\t\t{\"WordDecoder.CharsetReader\", Field, 5, \"\"},\n\t\t{\"WordEncoder\", Type, 5, \"\"},\n\t},\n\t\"mime/multipart\": {\n\t\t{\"(*FileHeader).Open\", Method, 0, \"\"},\n\t\t{\"(*Form).RemoveAll\", Method, 0, \"\"},\n\t\t{\"(*Part).Close\", Method, 0, \"\"},\n\t\t{\"(*Part).FileName\", Method, 0, \"\"},\n\t\t{\"(*Part).FormName\", Method, 0, \"\"},\n\t\t{\"(*Part).Read\", Method, 0, \"\"},\n\t\t{\"(*Reader).NextPart\", Method, 0, \"\"},\n\t\t{\"(*Reader).NextRawPart\", Method, 14, \"\"},\n\t\t{\"(*Reader).ReadForm\", Method, 0, \"\"},\n\t\t{\"(*Writer).Boundary\", Method, 0, \"\"},\n\t\t{\"(*Writer).Close\", Method, 0, \"\"},\n\t\t{\"(*Writer).CreateFormField\", Method, 0, \"\"},\n\t\t{\"(*Writer).CreateFormFile\", Method, 0, \"\"},\n\t\t{\"(*Writer).CreatePart\", Method, 0, \"\"},\n\t\t{\"(*Writer).FormDataContentType\", Method, 0, \"\"},\n\t\t{\"(*Writer).SetBoundary\", Method, 1, \"\"},\n\t\t{\"(*Writer).WriteField\", Method, 0, \"\"},\n\t\t{\"(File).Close\", Method, 0, \"\"},\n\t\t{\"(File).Read\", Method, 0, \"\"},\n\t\t{\"(File).ReadAt\", Method, 0, \"\"},\n\t\t{\"(File).Seek\", Method, 0, \"\"},\n\t\t{\"ErrMessageTooLarge\", Var, 9, \"\"},\n\t\t{\"File\", Type, 0, \"\"},\n\t\t{\"FileContentDisposition\", Func, 25, \"func(fieldname string, filename string) string\"},\n\t\t{\"FileHeader\", Type, 0, \"\"},\n\t\t{\"FileHeader.Filename\", Field, 0, \"\"},\n\t\t{\"FileHeader.Header\", Field, 0, \"\"},\n\t\t{\"FileHeader.Size\", Field, 9, \"\"},\n\t\t{\"Form\", Type, 0, \"\"},\n\t\t{\"Form.File\", Field, 0, \"\"},\n\t\t{\"Form.Value\", Field, 0, \"\"},\n\t\t{\"NewReader\", Func, 0, \"func(r io.Reader, boundary string) *Reader\"},\n\t\t{\"NewWriter\", Func, 0, \"func(w io.Writer) *Writer\"},\n\t\t{\"Part\", Type, 0, \"\"},\n\t\t{\"Part.Header\", Field, 0, \"\"},\n\t\t{\"Reader\", Type, 0, \"\"},\n\t\t{\"Writer\", Type, 0, \"\"},\n\t},\n\t\"mime/quotedprintable\": {\n\t\t{\"(*Reader).Read\", Method, 5, \"\"},\n\t\t{\"(*Writer).Close\", Method, 5, \"\"},\n\t\t{\"(*Writer).Write\", Method, 5, \"\"},\n\t\t{\"NewReader\", Func, 5, \"func(r io.Reader) *Reader\"},\n\t\t{\"NewWriter\", Func, 5, \"func(w io.Writer) *Writer\"},\n\t\t{\"Reader\", Type, 5, \"\"},\n\t\t{\"Writer\", Type, 5, \"\"},\n\t\t{\"Writer.Binary\", Field, 5, \"\"},\n\t},\n\t\"net\": {\n\t\t{\"(*AddrError).Error\", Method, 0, \"\"},\n\t\t{\"(*AddrError).Temporary\", Method, 0, \"\"},\n\t\t{\"(*AddrError).Timeout\", Method, 0, \"\"},\n\t\t{\"(*Buffers).Read\", Method, 8, \"\"},\n\t\t{\"(*Buffers).WriteTo\", Method, 8, \"\"},\n\t\t{\"(*DNSConfigError).Error\", Method, 0, \"\"},\n\t\t{\"(*DNSConfigError).Temporary\", Method, 0, \"\"},\n\t\t{\"(*DNSConfigError).Timeout\", Method, 0, \"\"},\n\t\t{\"(*DNSConfigError).Unwrap\", Method, 13, \"\"},\n\t\t{\"(*DNSError).Error\", Method, 0, \"\"},\n\t\t{\"(*DNSError).Temporary\", Method, 0, \"\"},\n\t\t{\"(*DNSError).Timeout\", Method, 0, \"\"},\n\t\t{\"(*DNSError).Unwrap\", Method, 23, \"\"},\n\t\t{\"(*Dialer).Dial\", Method, 1, \"\"},\n\t\t{\"(*Dialer).DialContext\", Method, 7, \"\"},\n\t\t{\"(*Dialer).DialIP\", Method, 26, \"\"},\n\t\t{\"(*Dialer).DialTCP\", Method, 26, \"\"},\n\t\t{\"(*Dialer).DialUDP\", Method, 26, \"\"},\n\t\t{\"(*Dialer).DialUnix\", Method, 26, \"\"},\n\t\t{\"(*Dialer).MultipathTCP\", Method, 21, \"\"},\n\t\t{\"(*Dialer).SetMultipathTCP\", Method, 21, \"\"},\n\t\t{\"(*IP).UnmarshalText\", Method, 2, \"\"},\n\t\t{\"(*IPAddr).Network\", Method, 0, \"\"},\n\t\t{\"(*IPAddr).String\", Method, 0, \"\"},\n\t\t{\"(*IPConn).Close\", Method, 0, \"\"},\n\t\t{\"(*IPConn).File\", Method, 0, \"\"},\n\t\t{\"(*IPConn).LocalAddr\", Method, 0, \"\"},\n\t\t{\"(*IPConn).Read\", Method, 0, \"\"},\n\t\t{\"(*IPConn).ReadFrom\", Method, 0, \"\"},\n\t\t{\"(*IPConn).ReadFromIP\", Method, 0, \"\"},\n\t\t{\"(*IPConn).ReadMsgIP\", Method, 1, \"\"},\n\t\t{\"(*IPConn).RemoteAddr\", Method, 0, \"\"},\n\t\t{\"(*IPConn).SetDeadline\", Method, 0, \"\"},\n\t\t{\"(*IPConn).SetReadBuffer\", Method, 0, \"\"},\n\t\t{\"(*IPConn).SetReadDeadline\", Method, 0, \"\"},\n\t\t{\"(*IPConn).SetWriteBuffer\", Method, 0, \"\"},\n\t\t{\"(*IPConn).SetWriteDeadline\", Method, 0, \"\"},\n\t\t{\"(*IPConn).SyscallConn\", Method, 9, \"\"},\n\t\t{\"(*IPConn).Write\", Method, 0, \"\"},\n\t\t{\"(*IPConn).WriteMsgIP\", Method, 1, \"\"},\n\t\t{\"(*IPConn).WriteTo\", Method, 0, \"\"},\n\t\t{\"(*IPConn).WriteToIP\", Method, 0, \"\"},\n\t\t{\"(*IPNet).Contains\", Method, 0, \"\"},\n\t\t{\"(*IPNet).Network\", Method, 0, \"\"},\n\t\t{\"(*IPNet).String\", Method, 0, \"\"},\n\t\t{\"(*Interface).Addrs\", Method, 0, \"\"},\n\t\t{\"(*Interface).MulticastAddrs\", Method, 0, \"\"},\n\t\t{\"(*ListenConfig).Listen\", Method, 11, \"\"},\n\t\t{\"(*ListenConfig).ListenPacket\", Method, 11, \"\"},\n\t\t{\"(*ListenConfig).MultipathTCP\", Method, 21, \"\"},\n\t\t{\"(*ListenConfig).SetMultipathTCP\", Method, 21, \"\"},\n\t\t{\"(*OpError).Error\", Method, 0, \"\"},\n\t\t{\"(*OpError).Temporary\", Method, 0, \"\"},\n\t\t{\"(*OpError).Timeout\", Method, 0, \"\"},\n\t\t{\"(*OpError).Unwrap\", Method, 13, \"\"},\n\t\t{\"(*ParseError).Error\", Method, 0, \"\"},\n\t\t{\"(*ParseError).Temporary\", Method, 17, \"\"},\n\t\t{\"(*ParseError).Timeout\", Method, 17, \"\"},\n\t\t{\"(*Resolver).LookupAddr\", Method, 8, \"\"},\n\t\t{\"(*Resolver).LookupCNAME\", Method, 8, \"\"},\n\t\t{\"(*Resolver).LookupHost\", Method, 8, \"\"},\n\t\t{\"(*Resolver).LookupIP\", Method, 15, \"\"},\n\t\t{\"(*Resolver).LookupIPAddr\", Method, 8, \"\"},\n\t\t{\"(*Resolver).LookupMX\", Method, 8, \"\"},\n\t\t{\"(*Resolver).LookupNS\", Method, 8, \"\"},\n\t\t{\"(*Resolver).LookupNetIP\", Method, 18, \"\"},\n\t\t{\"(*Resolver).LookupPort\", Method, 8, \"\"},\n\t\t{\"(*Resolver).LookupSRV\", Method, 8, \"\"},\n\t\t{\"(*Resolver).LookupTXT\", Method, 8, \"\"},\n\t\t{\"(*TCPAddr).AddrPort\", Method, 18, \"\"},\n\t\t{\"(*TCPAddr).Network\", Method, 0, \"\"},\n\t\t{\"(*TCPAddr).String\", Method, 0, \"\"},\n\t\t{\"(*TCPConn).Close\", Method, 0, \"\"},\n\t\t{\"(*TCPConn).CloseRead\", Method, 0, \"\"},\n\t\t{\"(*TCPConn).CloseWrite\", Method, 0, \"\"},\n\t\t{\"(*TCPConn).File\", Method, 0, \"\"},\n\t\t{\"(*TCPConn).LocalAddr\", Method, 0, \"\"},\n\t\t{\"(*TCPConn).MultipathTCP\", Method, 21, \"\"},\n\t\t{\"(*TCPConn).Read\", Method, 0, \"\"},\n\t\t{\"(*TCPConn).ReadFrom\", Method, 0, \"\"},\n\t\t{\"(*TCPConn).RemoteAddr\", Method, 0, \"\"},\n\t\t{\"(*TCPConn).SetDeadline\", Method, 0, \"\"},\n\t\t{\"(*TCPConn).SetKeepAlive\", Method, 0, \"\"},\n\t\t{\"(*TCPConn).SetKeepAliveConfig\", Method, 23, \"\"},\n\t\t{\"(*TCPConn).SetKeepAlivePeriod\", Method, 2, \"\"},\n\t\t{\"(*TCPConn).SetLinger\", Method, 0, \"\"},\n\t\t{\"(*TCPConn).SetNoDelay\", Method, 0, \"\"},\n\t\t{\"(*TCPConn).SetReadBuffer\", Method, 0, \"\"},\n\t\t{\"(*TCPConn).SetReadDeadline\", Method, 0, \"\"},\n\t\t{\"(*TCPConn).SetWriteBuffer\", Method, 0, \"\"},\n\t\t{\"(*TCPConn).SetWriteDeadline\", Method, 0, \"\"},\n\t\t{\"(*TCPConn).SyscallConn\", Method, 9, \"\"},\n\t\t{\"(*TCPConn).Write\", Method, 0, \"\"},\n\t\t{\"(*TCPConn).WriteTo\", Method, 22, \"\"},\n\t\t{\"(*TCPListener).Accept\", Method, 0, \"\"},\n\t\t{\"(*TCPListener).AcceptTCP\", Method, 0, \"\"},\n\t\t{\"(*TCPListener).Addr\", Method, 0, \"\"},\n\t\t{\"(*TCPListener).Close\", Method, 0, \"\"},\n\t\t{\"(*TCPListener).File\", Method, 0, \"\"},\n\t\t{\"(*TCPListener).SetDeadline\", Method, 0, \"\"},\n\t\t{\"(*TCPListener).SyscallConn\", Method, 10, \"\"},\n\t\t{\"(*UDPAddr).AddrPort\", Method, 18, \"\"},\n\t\t{\"(*UDPAddr).Network\", Method, 0, \"\"},\n\t\t{\"(*UDPAddr).String\", Method, 0, \"\"},\n\t\t{\"(*UDPConn).Close\", Method, 0, \"\"},\n\t\t{\"(*UDPConn).File\", Method, 0, \"\"},\n\t\t{\"(*UDPConn).LocalAddr\", Method, 0, \"\"},\n\t\t{\"(*UDPConn).Read\", Method, 0, \"\"},\n\t\t{\"(*UDPConn).ReadFrom\", Method, 0, \"\"},\n\t\t{\"(*UDPConn).ReadFromUDP\", Method, 0, \"\"},\n\t\t{\"(*UDPConn).ReadFromUDPAddrPort\", Method, 18, \"\"},\n\t\t{\"(*UDPConn).ReadMsgUDP\", Method, 1, \"\"},\n\t\t{\"(*UDPConn).ReadMsgUDPAddrPort\", Method, 18, \"\"},\n\t\t{\"(*UDPConn).RemoteAddr\", Method, 0, \"\"},\n\t\t{\"(*UDPConn).SetDeadline\", Method, 0, \"\"},\n\t\t{\"(*UDPConn).SetReadBuffer\", Method, 0, \"\"},\n\t\t{\"(*UDPConn).SetReadDeadline\", Method, 0, \"\"},\n\t\t{\"(*UDPConn).SetWriteBuffer\", Method, 0, \"\"},\n\t\t{\"(*UDPConn).SetWriteDeadline\", Method, 0, \"\"},\n\t\t{\"(*UDPConn).SyscallConn\", Method, 9, \"\"},\n\t\t{\"(*UDPConn).Write\", Method, 0, \"\"},\n\t\t{\"(*UDPConn).WriteMsgUDP\", Method, 1, \"\"},\n\t\t{\"(*UDPConn).WriteMsgUDPAddrPort\", Method, 18, \"\"},\n\t\t{\"(*UDPConn).WriteTo\", Method, 0, \"\"},\n\t\t{\"(*UDPConn).WriteToUDP\", Method, 0, \"\"},\n\t\t{\"(*UDPConn).WriteToUDPAddrPort\", Method, 18, \"\"},\n\t\t{\"(*UnixAddr).Network\", Method, 0, \"\"},\n\t\t{\"(*UnixAddr).String\", Method, 0, \"\"},\n\t\t{\"(*UnixConn).Close\", Method, 0, \"\"},\n\t\t{\"(*UnixConn).CloseRead\", Method, 1, \"\"},\n\t\t{\"(*UnixConn).CloseWrite\", Method, 1, \"\"},\n\t\t{\"(*UnixConn).File\", Method, 0, \"\"},\n\t\t{\"(*UnixConn).LocalAddr\", Method, 0, \"\"},\n\t\t{\"(*UnixConn).Read\", Method, 0, \"\"},\n\t\t{\"(*UnixConn).ReadFrom\", Method, 0, \"\"},\n\t\t{\"(*UnixConn).ReadFromUnix\", Method, 0, \"\"},\n\t\t{\"(*UnixConn).ReadMsgUnix\", Method, 0, \"\"},\n\t\t{\"(*UnixConn).RemoteAddr\", Method, 0, \"\"},\n\t\t{\"(*UnixConn).SetDeadline\", Method, 0, \"\"},\n\t\t{\"(*UnixConn).SetReadBuffer\", Method, 0, \"\"},\n\t\t{\"(*UnixConn).SetReadDeadline\", Method, 0, \"\"},\n\t\t{\"(*UnixConn).SetWriteBuffer\", Method, 0, \"\"},\n\t\t{\"(*UnixConn).SetWriteDeadline\", Method, 0, \"\"},\n\t\t{\"(*UnixConn).SyscallConn\", Method, 9, \"\"},\n\t\t{\"(*UnixConn).Write\", Method, 0, \"\"},\n\t\t{\"(*UnixConn).WriteMsgUnix\", Method, 0, \"\"},\n\t\t{\"(*UnixConn).WriteTo\", Method, 0, \"\"},\n\t\t{\"(*UnixConn).WriteToUnix\", Method, 0, \"\"},\n\t\t{\"(*UnixListener).Accept\", Method, 0, \"\"},\n\t\t{\"(*UnixListener).AcceptUnix\", Method, 0, \"\"},\n\t\t{\"(*UnixListener).Addr\", Method, 0, \"\"},\n\t\t{\"(*UnixListener).Close\", Method, 0, \"\"},\n\t\t{\"(*UnixListener).File\", Method, 0, \"\"},\n\t\t{\"(*UnixListener).SetDeadline\", Method, 0, \"\"},\n\t\t{\"(*UnixListener).SetUnlinkOnClose\", Method, 8, \"\"},\n\t\t{\"(*UnixListener).SyscallConn\", Method, 10, \"\"},\n\t\t{\"(Addr).Network\", Method, 0, \"\"},\n\t\t{\"(Addr).String\", Method, 0, \"\"},\n\t\t{\"(Conn).Close\", Method, 0, \"\"},\n\t\t{\"(Conn).LocalAddr\", Method, 0, \"\"},\n\t\t{\"(Conn).Read\", Method, 0, \"\"},\n\t\t{\"(Conn).RemoteAddr\", Method, 0, \"\"},\n\t\t{\"(Conn).SetDeadline\", Method, 0, \"\"},\n\t\t{\"(Conn).SetReadDeadline\", Method, 0, \"\"},\n\t\t{\"(Conn).SetWriteDeadline\", Method, 0, \"\"},\n\t\t{\"(Conn).Write\", Method, 0, \"\"},\n\t\t{\"(Error).Error\", Method, 0, \"\"},\n\t\t{\"(Error).Temporary\", Method, 0, \"\"},\n\t\t{\"(Error).Timeout\", Method, 0, \"\"},\n\t\t{\"(Flags).String\", Method, 0, \"\"},\n\t\t{\"(HardwareAddr).String\", Method, 0, \"\"},\n\t\t{\"(IP).AppendText\", Method, 24, \"\"},\n\t\t{\"(IP).DefaultMask\", Method, 0, \"\"},\n\t\t{\"(IP).Equal\", Method, 0, \"\"},\n\t\t{\"(IP).IsGlobalUnicast\", Method, 0, \"\"},\n\t\t{\"(IP).IsInterfaceLocalMulticast\", Method, 0, \"\"},\n\t\t{\"(IP).IsLinkLocalMulticast\", Method, 0, \"\"},\n\t\t{\"(IP).IsLinkLocalUnicast\", Method, 0, \"\"},\n\t\t{\"(IP).IsLoopback\", Method, 0, \"\"},\n\t\t{\"(IP).IsMulticast\", Method, 0, \"\"},\n\t\t{\"(IP).IsPrivate\", Method, 17, \"\"},\n\t\t{\"(IP).IsUnspecified\", Method, 0, \"\"},\n\t\t{\"(IP).MarshalText\", Method, 2, \"\"},\n\t\t{\"(IP).Mask\", Method, 0, \"\"},\n\t\t{\"(IP).String\", Method, 0, \"\"},\n\t\t{\"(IP).To16\", Method, 0, \"\"},\n\t\t{\"(IP).To4\", Method, 0, \"\"},\n\t\t{\"(IPMask).Size\", Method, 0, \"\"},\n\t\t{\"(IPMask).String\", Method, 0, \"\"},\n\t\t{\"(InvalidAddrError).Error\", Method, 0, \"\"},\n\t\t{\"(InvalidAddrError).Temporary\", Method, 0, \"\"},\n\t\t{\"(InvalidAddrError).Timeout\", Method, 0, \"\"},\n\t\t{\"(Listener).Accept\", Method, 0, \"\"},\n\t\t{\"(Listener).Addr\", Method, 0, \"\"},\n\t\t{\"(Listener).Close\", Method, 0, \"\"},\n\t\t{\"(PacketConn).Close\", Method, 0, \"\"},\n\t\t{\"(PacketConn).LocalAddr\", Method, 0, \"\"},\n\t\t{\"(PacketConn).ReadFrom\", Method, 0, \"\"},\n\t\t{\"(PacketConn).SetDeadline\", Method, 0, \"\"},\n\t\t{\"(PacketConn).SetReadDeadline\", Method, 0, \"\"},\n\t\t{\"(PacketConn).SetWriteDeadline\", Method, 0, \"\"},\n\t\t{\"(PacketConn).WriteTo\", Method, 0, \"\"},\n\t\t{\"(UnknownNetworkError).Error\", Method, 0, \"\"},\n\t\t{\"(UnknownNetworkError).Temporary\", Method, 0, \"\"},\n\t\t{\"(UnknownNetworkError).Timeout\", Method, 0, \"\"},\n\t\t{\"Addr\", Type, 0, \"\"},\n\t\t{\"AddrError\", Type, 0, \"\"},\n\t\t{\"AddrError.Addr\", Field, 0, \"\"},\n\t\t{\"AddrError.Err\", Field, 0, \"\"},\n\t\t{\"Buffers\", Type, 8, \"\"},\n\t\t{\"CIDRMask\", Func, 0, \"func(ones int, bits int) IPMask\"},\n\t\t{\"Conn\", Type, 0, \"\"},\n\t\t{\"DNSConfigError\", Type, 0, \"\"},\n\t\t{\"DNSConfigError.Err\", Field, 0, \"\"},\n\t\t{\"DNSError\", Type, 0, \"\"},\n\t\t{\"DNSError.Err\", Field, 0, \"\"},\n\t\t{\"DNSError.IsNotFound\", Field, 13, \"\"},\n\t\t{\"DNSError.IsTemporary\", Field, 6, \"\"},\n\t\t{\"DNSError.IsTimeout\", Field, 0, \"\"},\n\t\t{\"DNSError.Name\", Field, 0, \"\"},\n\t\t{\"DNSError.Server\", Field, 0, \"\"},\n\t\t{\"DNSError.UnwrapErr\", Field, 23, \"\"},\n\t\t{\"DefaultResolver\", Var, 8, \"\"},\n\t\t{\"Dial\", Func, 0, \"func(network string, address string) (Conn, error)\"},\n\t\t{\"DialIP\", Func, 0, \"func(network string, laddr *IPAddr, raddr *IPAddr) (*IPConn, error)\"},\n\t\t{\"DialTCP\", Func, 0, \"func(network string, laddr *TCPAddr, raddr *TCPAddr) (*TCPConn, error)\"},\n\t\t{\"DialTimeout\", Func, 0, \"func(network string, address string, timeout time.Duration) (Conn, error)\"},\n\t\t{\"DialUDP\", Func, 0, \"func(network string, laddr *UDPAddr, raddr *UDPAddr) (*UDPConn, error)\"},\n\t\t{\"DialUnix\", Func, 0, \"func(network string, laddr *UnixAddr, raddr *UnixAddr) (*UnixConn, error)\"},\n\t\t{\"Dialer\", Type, 1, \"\"},\n\t\t{\"Dialer.Cancel\", Field, 6, \"\"},\n\t\t{\"Dialer.Control\", Field, 11, \"\"},\n\t\t{\"Dialer.ControlContext\", Field, 20, \"\"},\n\t\t{\"Dialer.Deadline\", Field, 1, \"\"},\n\t\t{\"Dialer.DualStack\", Field, 2, \"\"},\n\t\t{\"Dialer.FallbackDelay\", Field, 5, \"\"},\n\t\t{\"Dialer.KeepAlive\", Field, 3, \"\"},\n\t\t{\"Dialer.KeepAliveConfig\", Field, 23, \"\"},\n\t\t{\"Dialer.LocalAddr\", Field, 1, \"\"},\n\t\t{\"Dialer.Resolver\", Field, 8, \"\"},\n\t\t{\"Dialer.Timeout\", Field, 1, \"\"},\n\t\t{\"ErrClosed\", Var, 16, \"\"},\n\t\t{\"ErrWriteToConnected\", Var, 0, \"\"},\n\t\t{\"Error\", Type, 0, \"\"},\n\t\t{\"FileConn\", Func, 0, \"func(f *os.File) (c Conn, err error)\"},\n\t\t{\"FileListener\", Func, 0, \"func(f *os.File) (ln Listener, err error)\"},\n\t\t{\"FilePacketConn\", Func, 0, \"func(f *os.File) (c PacketConn, err error)\"},\n\t\t{\"FlagBroadcast\", Const, 0, \"\"},\n\t\t{\"FlagLoopback\", Const, 0, \"\"},\n\t\t{\"FlagMulticast\", Const, 0, \"\"},\n\t\t{\"FlagPointToPoint\", Const, 0, \"\"},\n\t\t{\"FlagRunning\", Const, 20, \"\"},\n\t\t{\"FlagUp\", Const, 0, \"\"},\n\t\t{\"Flags\", Type, 0, \"\"},\n\t\t{\"HardwareAddr\", Type, 0, \"\"},\n\t\t{\"IP\", Type, 0, \"\"},\n\t\t{\"IPAddr\", Type, 0, \"\"},\n\t\t{\"IPAddr.IP\", Field, 0, \"\"},\n\t\t{\"IPAddr.Zone\", Field, 1, \"\"},\n\t\t{\"IPConn\", Type, 0, \"\"},\n\t\t{\"IPMask\", Type, 0, \"\"},\n\t\t{\"IPNet\", Type, 0, \"\"},\n\t\t{\"IPNet.IP\", Field, 0, \"\"},\n\t\t{\"IPNet.Mask\", Field, 0, \"\"},\n\t\t{\"IPv4\", Func, 0, \"func(a byte, b byte, c byte, d byte) IP\"},\n\t\t{\"IPv4Mask\", Func, 0, \"func(a byte, b byte, c byte, d byte) IPMask\"},\n\t\t{\"IPv4allrouter\", Var, 0, \"\"},\n\t\t{\"IPv4allsys\", Var, 0, \"\"},\n\t\t{\"IPv4bcast\", Var, 0, \"\"},\n\t\t{\"IPv4len\", Const, 0, \"\"},\n\t\t{\"IPv4zero\", Var, 0, \"\"},\n\t\t{\"IPv6interfacelocalallnodes\", Var, 0, \"\"},\n\t\t{\"IPv6len\", Const, 0, \"\"},\n\t\t{\"IPv6linklocalallnodes\", Var, 0, \"\"},\n\t\t{\"IPv6linklocalallrouters\", Var, 0, \"\"},\n\t\t{\"IPv6loopback\", Var, 0, \"\"},\n\t\t{\"IPv6unspecified\", Var, 0, \"\"},\n\t\t{\"IPv6zero\", Var, 0, \"\"},\n\t\t{\"Interface\", Type, 0, \"\"},\n\t\t{\"Interface.Flags\", Field, 0, \"\"},\n\t\t{\"Interface.HardwareAddr\", Field, 0, \"\"},\n\t\t{\"Interface.Index\", Field, 0, \"\"},\n\t\t{\"Interface.MTU\", Field, 0, \"\"},\n\t\t{\"Interface.Name\", Field, 0, \"\"},\n\t\t{\"InterfaceAddrs\", Func, 0, \"func() ([]Addr, error)\"},\n\t\t{\"InterfaceByIndex\", Func, 0, \"func(index int) (*Interface, error)\"},\n\t\t{\"InterfaceByName\", Func, 0, \"func(name string) (*Interface, error)\"},\n\t\t{\"Interfaces\", Func, 0, \"func() ([]Interface, error)\"},\n\t\t{\"InvalidAddrError\", Type, 0, \"\"},\n\t\t{\"JoinHostPort\", Func, 0, \"func(host string, port string) string\"},\n\t\t{\"KeepAliveConfig\", Type, 23, \"\"},\n\t\t{\"KeepAliveConfig.Count\", Field, 23, \"\"},\n\t\t{\"KeepAliveConfig.Enable\", Field, 23, \"\"},\n\t\t{\"KeepAliveConfig.Idle\", Field, 23, \"\"},\n\t\t{\"KeepAliveConfig.Interval\", Field, 23, \"\"},\n\t\t{\"Listen\", Func, 0, \"func(network string, address string) (Listener, error)\"},\n\t\t{\"ListenConfig\", Type, 11, \"\"},\n\t\t{\"ListenConfig.Control\", Field, 11, \"\"},\n\t\t{\"ListenConfig.KeepAlive\", Field, 13, \"\"},\n\t\t{\"ListenConfig.KeepAliveConfig\", Field, 23, \"\"},\n\t\t{\"ListenIP\", Func, 0, \"func(network string, laddr *IPAddr) (*IPConn, error)\"},\n\t\t{\"ListenMulticastUDP\", Func, 0, \"func(network string, ifi *Interface, gaddr *UDPAddr) (*UDPConn, error)\"},\n\t\t{\"ListenPacket\", Func, 0, \"func(network string, address string) (PacketConn, error)\"},\n\t\t{\"ListenTCP\", Func, 0, \"func(network string, laddr *TCPAddr) (*TCPListener, error)\"},\n\t\t{\"ListenUDP\", Func, 0, \"func(network string, laddr *UDPAddr) (*UDPConn, error)\"},\n\t\t{\"ListenUnix\", Func, 0, \"func(network string, laddr *UnixAddr) (*UnixListener, error)\"},\n\t\t{\"ListenUnixgram\", Func, 0, \"func(network string, laddr *UnixAddr) (*UnixConn, error)\"},\n\t\t{\"Listener\", Type, 0, \"\"},\n\t\t{\"LookupAddr\", Func, 0, \"func(addr string) (names []string, err error)\"},\n\t\t{\"LookupCNAME\", Func, 0, \"func(host string) (cname string, err error)\"},\n\t\t{\"LookupHost\", Func, 0, \"func(host string) (addrs []string, err error)\"},\n\t\t{\"LookupIP\", Func, 0, \"func(host string) ([]IP, error)\"},\n\t\t{\"LookupMX\", Func, 0, \"func(name string) ([]*MX, error)\"},\n\t\t{\"LookupNS\", Func, 1, \"func(name string) ([]*NS, error)\"},\n\t\t{\"LookupPort\", Func, 0, \"func(network string, service string) (port int, err error)\"},\n\t\t{\"LookupSRV\", Func, 0, \"func(service string, proto string, name string) (cname string, addrs []*SRV, err error)\"},\n\t\t{\"LookupTXT\", Func, 0, \"func(name string) ([]string, error)\"},\n\t\t{\"MX\", Type, 0, \"\"},\n\t\t{\"MX.Host\", Field, 0, \"\"},\n\t\t{\"MX.Pref\", Field, 0, \"\"},\n\t\t{\"NS\", Type, 1, \"\"},\n\t\t{\"NS.Host\", Field, 1, \"\"},\n\t\t{\"OpError\", Type, 0, \"\"},\n\t\t{\"OpError.Addr\", Field, 0, \"\"},\n\t\t{\"OpError.Err\", Field, 0, \"\"},\n\t\t{\"OpError.Net\", Field, 0, \"\"},\n\t\t{\"OpError.Op\", Field, 0, \"\"},\n\t\t{\"OpError.Source\", Field, 5, \"\"},\n\t\t{\"PacketConn\", Type, 0, \"\"},\n\t\t{\"ParseCIDR\", Func, 0, \"func(s string) (IP, *IPNet, error)\"},\n\t\t{\"ParseError\", Type, 0, \"\"},\n\t\t{\"ParseError.Text\", Field, 0, \"\"},\n\t\t{\"ParseError.Type\", Field, 0, \"\"},\n\t\t{\"ParseIP\", Func, 0, \"func(s string) IP\"},\n\t\t{\"ParseMAC\", Func, 0, \"func(s string) (hw HardwareAddr, err error)\"},\n\t\t{\"Pipe\", Func, 0, \"func() (Conn, Conn)\"},\n\t\t{\"ResolveIPAddr\", Func, 0, \"func(network string, address string) (*IPAddr, error)\"},\n\t\t{\"ResolveTCPAddr\", Func, 0, \"func(network string, address string) (*TCPAddr, error)\"},\n\t\t{\"ResolveUDPAddr\", Func, 0, \"func(network string, address string) (*UDPAddr, error)\"},\n\t\t{\"ResolveUnixAddr\", Func, 0, \"func(network string, address string) (*UnixAddr, error)\"},\n\t\t{\"Resolver\", Type, 8, \"\"},\n\t\t{\"Resolver.Dial\", Field, 9, \"\"},\n\t\t{\"Resolver.PreferGo\", Field, 8, \"\"},\n\t\t{\"Resolver.StrictErrors\", Field, 9, \"\"},\n\t\t{\"SRV\", Type, 0, \"\"},\n\t\t{\"SRV.Port\", Field, 0, \"\"},\n\t\t{\"SRV.Priority\", Field, 0, \"\"},\n\t\t{\"SRV.Target\", Field, 0, \"\"},\n\t\t{\"SRV.Weight\", Field, 0, \"\"},\n\t\t{\"SplitHostPort\", Func, 0, \"func(hostport string) (host string, port string, err error)\"},\n\t\t{\"TCPAddr\", Type, 0, \"\"},\n\t\t{\"TCPAddr.IP\", Field, 0, \"\"},\n\t\t{\"TCPAddr.Port\", Field, 0, \"\"},\n\t\t{\"TCPAddr.Zone\", Field, 1, \"\"},\n\t\t{\"TCPAddrFromAddrPort\", Func, 18, \"func(addr netip.AddrPort) *TCPAddr\"},\n\t\t{\"TCPConn\", Type, 0, \"\"},\n\t\t{\"TCPListener\", Type, 0, \"\"},\n\t\t{\"UDPAddr\", Type, 0, \"\"},\n\t\t{\"UDPAddr.IP\", Field, 0, \"\"},\n\t\t{\"UDPAddr.Port\", Field, 0, \"\"},\n\t\t{\"UDPAddr.Zone\", Field, 1, \"\"},\n\t\t{\"UDPAddrFromAddrPort\", Func, 18, \"func(addr netip.AddrPort) *UDPAddr\"},\n\t\t{\"UDPConn\", Type, 0, \"\"},\n\t\t{\"UnixAddr\", Type, 0, \"\"},\n\t\t{\"UnixAddr.Name\", Field, 0, \"\"},\n\t\t{\"UnixAddr.Net\", Field, 0, \"\"},\n\t\t{\"UnixConn\", Type, 0, \"\"},\n\t\t{\"UnixListener\", Type, 0, \"\"},\n\t\t{\"UnknownNetworkError\", Type, 0, \"\"},\n\t},\n\t\"net/http\": {\n\t\t{\"(*Client).CloseIdleConnections\", Method, 12, \"\"},\n\t\t{\"(*Client).Do\", Method, 0, \"\"},\n\t\t{\"(*Client).Get\", Method, 0, \"\"},\n\t\t{\"(*Client).Head\", Method, 0, \"\"},\n\t\t{\"(*Client).Post\", Method, 0, \"\"},\n\t\t{\"(*Client).PostForm\", Method, 0, \"\"},\n\t\t{\"(*ClientConn).Available\", Method, 26, \"\"},\n\t\t{\"(*ClientConn).Close\", Method, 26, \"\"},\n\t\t{\"(*ClientConn).Err\", Method, 26, \"\"},\n\t\t{\"(*ClientConn).InFlight\", Method, 26, \"\"},\n\t\t{\"(*ClientConn).Release\", Method, 26, \"\"},\n\t\t{\"(*ClientConn).Reserve\", Method, 26, \"\"},\n\t\t{\"(*ClientConn).RoundTrip\", Method, 26, \"\"},\n\t\t{\"(*ClientConn).SetStateHook\", Method, 26, \"\"},\n\t\t{\"(*Cookie).String\", Method, 0, \"\"},\n\t\t{\"(*Cookie).Valid\", Method, 18, \"\"},\n\t\t{\"(*CrossOriginProtection).AddInsecureBypassPattern\", Method, 25, \"\"},\n\t\t{\"(*CrossOriginProtection).AddTrustedOrigin\", Method, 25, \"\"},\n\t\t{\"(*CrossOriginProtection).Check\", Method, 25, \"\"},\n\t\t{\"(*CrossOriginProtection).Handler\", Method, 25, \"\"},\n\t\t{\"(*CrossOriginProtection).SetDenyHandler\", Method, 25, \"\"},\n\t\t{\"(*MaxBytesError).Error\", Method, 19, \"\"},\n\t\t{\"(*ProtocolError).Error\", Method, 0, \"\"},\n\t\t{\"(*ProtocolError).Is\", Method, 21, \"\"},\n\t\t{\"(*Protocols).SetHTTP1\", Method, 24, \"\"},\n\t\t{\"(*Protocols).SetHTTP2\", Method, 24, \"\"},\n\t\t{\"(*Protocols).SetUnencryptedHTTP2\", Method, 24, \"\"},\n\t\t{\"(*Request).AddCookie\", Method, 0, \"\"},\n\t\t{\"(*Request).BasicAuth\", Method, 4, \"\"},\n\t\t{\"(*Request).Clone\", Method, 13, \"\"},\n\t\t{\"(*Request).Context\", Method, 7, \"\"},\n\t\t{\"(*Request).Cookie\", Method, 0, \"\"},\n\t\t{\"(*Request).Cookies\", Method, 0, \"\"},\n\t\t{\"(*Request).CookiesNamed\", Method, 23, \"\"},\n\t\t{\"(*Request).FormFile\", Method, 0, \"\"},\n\t\t{\"(*Request).FormValue\", Method, 0, \"\"},\n\t\t{\"(*Request).MultipartReader\", Method, 0, \"\"},\n\t\t{\"(*Request).ParseForm\", Method, 0, \"\"},\n\t\t{\"(*Request).ParseMultipartForm\", Method, 0, \"\"},\n\t\t{\"(*Request).PathValue\", Method, 22, \"\"},\n\t\t{\"(*Request).PostFormValue\", Method, 1, \"\"},\n\t\t{\"(*Request).ProtoAtLeast\", Method, 0, \"\"},\n\t\t{\"(*Request).Referer\", Method, 0, \"\"},\n\t\t{\"(*Request).SetBasicAuth\", Method, 0, \"\"},\n\t\t{\"(*Request).SetPathValue\", Method, 22, \"\"},\n\t\t{\"(*Request).UserAgent\", Method, 0, \"\"},\n\t\t{\"(*Request).WithContext\", Method, 7, \"\"},\n\t\t{\"(*Request).Write\", Method, 0, \"\"},\n\t\t{\"(*Request).WriteProxy\", Method, 0, \"\"},\n\t\t{\"(*Response).Cookies\", Method, 0, \"\"},\n\t\t{\"(*Response).Location\", Method, 0, \"\"},\n\t\t{\"(*Response).ProtoAtLeast\", Method, 0, \"\"},\n\t\t{\"(*Response).Write\", Method, 0, \"\"},\n\t\t{\"(*ResponseController).EnableFullDuplex\", Method, 21, \"\"},\n\t\t{\"(*ResponseController).Flush\", Method, 20, \"\"},\n\t\t{\"(*ResponseController).Hijack\", Method, 20, \"\"},\n\t\t{\"(*ResponseController).SetReadDeadline\", Method, 20, \"\"},\n\t\t{\"(*ResponseController).SetWriteDeadline\", Method, 20, \"\"},\n\t\t{\"(*ServeMux).Handle\", Method, 0, \"\"},\n\t\t{\"(*ServeMux).HandleFunc\", Method, 0, \"\"},\n\t\t{\"(*ServeMux).Handler\", Method, 1, \"\"},\n\t\t{\"(*ServeMux).ServeHTTP\", Method, 0, \"\"},\n\t\t{\"(*Server).Close\", Method, 8, \"\"},\n\t\t{\"(*Server).ListenAndServe\", Method, 0, \"\"},\n\t\t{\"(*Server).ListenAndServeTLS\", Method, 0, \"\"},\n\t\t{\"(*Server).RegisterOnShutdown\", Method, 9, \"\"},\n\t\t{\"(*Server).Serve\", Method, 0, \"\"},\n\t\t{\"(*Server).ServeTLS\", Method, 9, \"\"},\n\t\t{\"(*Server).SetKeepAlivesEnabled\", Method, 3, \"\"},\n\t\t{\"(*Server).Shutdown\", Method, 8, \"\"},\n\t\t{\"(*Transport).CancelRequest\", Method, 1, \"\"},\n\t\t{\"(*Transport).Clone\", Method, 13, \"\"},\n\t\t{\"(*Transport).CloseIdleConnections\", Method, 0, \"\"},\n\t\t{\"(*Transport).NewClientConn\", Method, 26, \"\"},\n\t\t{\"(*Transport).RegisterProtocol\", Method, 0, \"\"},\n\t\t{\"(*Transport).RoundTrip\", Method, 0, \"\"},\n\t\t{\"(CloseNotifier).CloseNotify\", Method, 1, \"\"},\n\t\t{\"(ConnState).String\", Method, 3, \"\"},\n\t\t{\"(CookieJar).Cookies\", Method, 0, \"\"},\n\t\t{\"(CookieJar).SetCookies\", Method, 0, \"\"},\n\t\t{\"(Dir).Open\", Method, 0, \"\"},\n\t\t{\"(File).Close\", Method, 0, \"\"},\n\t\t{\"(File).Read\", Method, 0, \"\"},\n\t\t{\"(File).Readdir\", Method, 0, \"\"},\n\t\t{\"(File).Seek\", Method, 0, \"\"},\n\t\t{\"(File).Stat\", Method, 0, \"\"},\n\t\t{\"(FileSystem).Open\", Method, 0, \"\"},\n\t\t{\"(Flusher).Flush\", Method, 0, \"\"},\n\t\t{\"(Handler).ServeHTTP\", Method, 0, \"\"},\n\t\t{\"(HandlerFunc).ServeHTTP\", Method, 0, \"\"},\n\t\t{\"(Header).Add\", Method, 0, \"\"},\n\t\t{\"(Header).Clone\", Method, 13, \"\"},\n\t\t{\"(Header).Del\", Method, 0, \"\"},\n\t\t{\"(Header).Get\", Method, 0, \"\"},\n\t\t{\"(Header).Set\", Method, 0, \"\"},\n\t\t{\"(Header).Values\", Method, 14, \"\"},\n\t\t{\"(Header).Write\", Method, 0, \"\"},\n\t\t{\"(Header).WriteSubset\", Method, 0, \"\"},\n\t\t{\"(Hijacker).Hijack\", Method, 0, \"\"},\n\t\t{\"(Protocols).HTTP1\", Method, 24, \"\"},\n\t\t{\"(Protocols).HTTP2\", Method, 24, \"\"},\n\t\t{\"(Protocols).String\", Method, 24, \"\"},\n\t\t{\"(Protocols).UnencryptedHTTP2\", Method, 24, \"\"},\n\t\t{\"(Pusher).Push\", Method, 8, \"\"},\n\t\t{\"(ResponseWriter).Header\", Method, 0, \"\"},\n\t\t{\"(ResponseWriter).Write\", Method, 0, \"\"},\n\t\t{\"(ResponseWriter).WriteHeader\", Method, 0, \"\"},\n\t\t{\"(RoundTripper).RoundTrip\", Method, 0, \"\"},\n\t\t{\"AllowQuerySemicolons\", Func, 17, \"func(h Handler) Handler\"},\n\t\t{\"CanonicalHeaderKey\", Func, 0, \"func(s string) string\"},\n\t\t{\"Client\", Type, 0, \"\"},\n\t\t{\"Client.CheckRedirect\", Field, 0, \"\"},\n\t\t{\"Client.Jar\", Field, 0, \"\"},\n\t\t{\"Client.Timeout\", Field, 3, \"\"},\n\t\t{\"Client.Transport\", Field, 0, \"\"},\n\t\t{\"ClientConn\", Type, 26, \"\"},\n\t\t{\"CloseNotifier\", Type, 1, \"\"},\n\t\t{\"ConnState\", Type, 3, \"\"},\n\t\t{\"Cookie\", Type, 0, \"\"},\n\t\t{\"Cookie.Domain\", Field, 0, \"\"},\n\t\t{\"Cookie.Expires\", Field, 0, \"\"},\n\t\t{\"Cookie.HttpOnly\", Field, 0, \"\"},\n\t\t{\"Cookie.MaxAge\", Field, 0, \"\"},\n\t\t{\"Cookie.Name\", Field, 0, \"\"},\n\t\t{\"Cookie.Partitioned\", Field, 23, \"\"},\n\t\t{\"Cookie.Path\", Field, 0, \"\"},\n\t\t{\"Cookie.Quoted\", Field, 23, \"\"},\n\t\t{\"Cookie.Raw\", Field, 0, \"\"},\n\t\t{\"Cookie.RawExpires\", Field, 0, \"\"},\n\t\t{\"Cookie.SameSite\", Field, 11, \"\"},\n\t\t{\"Cookie.Secure\", Field, 0, \"\"},\n\t\t{\"Cookie.Unparsed\", Field, 0, \"\"},\n\t\t{\"Cookie.Value\", Field, 0, \"\"},\n\t\t{\"CookieJar\", Type, 0, \"\"},\n\t\t{\"CrossOriginProtection\", Type, 25, \"\"},\n\t\t{\"DefaultClient\", Var, 0, \"\"},\n\t\t{\"DefaultMaxHeaderBytes\", Const, 0, \"\"},\n\t\t{\"DefaultMaxIdleConnsPerHost\", Const, 0, \"\"},\n\t\t{\"DefaultServeMux\", Var, 0, \"\"},\n\t\t{\"DefaultTransport\", Var, 0, \"\"},\n\t\t{\"DetectContentType\", Func, 0, \"func(data []byte) string\"},\n\t\t{\"Dir\", Type, 0, \"\"},\n\t\t{\"ErrAbortHandler\", Var, 8, \"\"},\n\t\t{\"ErrBodyNotAllowed\", Var, 0, \"\"},\n\t\t{\"ErrBodyReadAfterClose\", Var, 0, \"\"},\n\t\t{\"ErrContentLength\", Var, 0, \"\"},\n\t\t{\"ErrHandlerTimeout\", Var, 0, \"\"},\n\t\t{\"ErrHeaderTooLong\", Var, 0, \"\"},\n\t\t{\"ErrHijacked\", Var, 0, \"\"},\n\t\t{\"ErrLineTooLong\", Var, 0, \"\"},\n\t\t{\"ErrMissingBoundary\", Var, 0, \"\"},\n\t\t{\"ErrMissingContentLength\", Var, 0, \"\"},\n\t\t{\"ErrMissingFile\", Var, 0, \"\"},\n\t\t{\"ErrNoCookie\", Var, 0, \"\"},\n\t\t{\"ErrNoLocation\", Var, 0, \"\"},\n\t\t{\"ErrNotMultipart\", Var, 0, \"\"},\n\t\t{\"ErrNotSupported\", Var, 0, \"\"},\n\t\t{\"ErrSchemeMismatch\", Var, 21, \"\"},\n\t\t{\"ErrServerClosed\", Var, 8, \"\"},\n\t\t{\"ErrShortBody\", Var, 0, \"\"},\n\t\t{\"ErrSkipAltProtocol\", Var, 6, \"\"},\n\t\t{\"ErrUnexpectedTrailer\", Var, 0, \"\"},\n\t\t{\"ErrUseLastResponse\", Var, 7, \"\"},\n\t\t{\"ErrWriteAfterFlush\", Var, 0, \"\"},\n\t\t{\"Error\", Func, 0, \"func(w ResponseWriter, error string, code int)\"},\n\t\t{\"FS\", Func, 16, \"func(fsys fs.FS) FileSystem\"},\n\t\t{\"File\", Type, 0, \"\"},\n\t\t{\"FileServer\", Func, 0, \"func(root FileSystem) Handler\"},\n\t\t{\"FileServerFS\", Func, 22, \"func(root fs.FS) Handler\"},\n\t\t{\"FileSystem\", Type, 0, \"\"},\n\t\t{\"Flusher\", Type, 0, \"\"},\n\t\t{\"Get\", Func, 0, \"func(url string) (resp *Response, err error)\"},\n\t\t{\"HTTP2Config\", Type, 24, \"\"},\n\t\t{\"HTTP2Config.CountError\", Field, 24, \"\"},\n\t\t{\"HTTP2Config.MaxConcurrentStreams\", Field, 24, \"\"},\n\t\t{\"HTTP2Config.MaxDecoderHeaderTableSize\", Field, 24, \"\"},\n\t\t{\"HTTP2Config.MaxEncoderHeaderTableSize\", Field, 24, \"\"},\n\t\t{\"HTTP2Config.MaxReadFrameSize\", Field, 24, \"\"},\n\t\t{\"HTTP2Config.MaxReceiveBufferPerConnection\", Field, 24, \"\"},\n\t\t{\"HTTP2Config.MaxReceiveBufferPerStream\", Field, 24, \"\"},\n\t\t{\"HTTP2Config.PermitProhibitedCipherSuites\", Field, 24, \"\"},\n\t\t{\"HTTP2Config.PingTimeout\", Field, 24, \"\"},\n\t\t{\"HTTP2Config.SendPingTimeout\", Field, 24, \"\"},\n\t\t{\"HTTP2Config.StrictMaxConcurrentRequests\", Field, 26, \"\"},\n\t\t{\"HTTP2Config.WriteByteTimeout\", Field, 24, \"\"},\n\t\t{\"Handle\", Func, 0, \"func(pattern string, handler Handler)\"},\n\t\t{\"HandleFunc\", Func, 0, \"func(pattern string, handler func(ResponseWriter, *Request))\"},\n\t\t{\"Handler\", Type, 0, \"\"},\n\t\t{\"HandlerFunc\", Type, 0, \"\"},\n\t\t{\"Head\", Func, 0, \"func(url string) (resp *Response, err error)\"},\n\t\t{\"Header\", Type, 0, \"\"},\n\t\t{\"Hijacker\", Type, 0, \"\"},\n\t\t{\"ListenAndServe\", Func, 0, \"func(addr string, handler Handler) error\"},\n\t\t{\"ListenAndServeTLS\", Func, 0, \"func(addr string, certFile string, keyFile string, handler Handler) error\"},\n\t\t{\"LocalAddrContextKey\", Var, 7, \"\"},\n\t\t{\"MaxBytesError\", Type, 19, \"\"},\n\t\t{\"MaxBytesError.Limit\", Field, 19, \"\"},\n\t\t{\"MaxBytesHandler\", Func, 18, \"func(h Handler, n int64) Handler\"},\n\t\t{\"MaxBytesReader\", Func, 0, \"func(w ResponseWriter, r io.ReadCloser, n int64) io.ReadCloser\"},\n\t\t{\"MethodConnect\", Const, 6, \"\"},\n\t\t{\"MethodDelete\", Const, 6, \"\"},\n\t\t{\"MethodGet\", Const, 6, \"\"},\n\t\t{\"MethodHead\", Const, 6, \"\"},\n\t\t{\"MethodOptions\", Const, 6, \"\"},\n\t\t{\"MethodPatch\", Const, 6, \"\"},\n\t\t{\"MethodPost\", Const, 6, \"\"},\n\t\t{\"MethodPut\", Const, 6, \"\"},\n\t\t{\"MethodTrace\", Const, 6, \"\"},\n\t\t{\"NewCrossOriginProtection\", Func, 25, \"func() *CrossOriginProtection\"},\n\t\t{\"NewFileTransport\", Func, 0, \"func(fs FileSystem) RoundTripper\"},\n\t\t{\"NewFileTransportFS\", Func, 22, \"func(fsys fs.FS) RoundTripper\"},\n\t\t{\"NewRequest\", Func, 0, \"func(method string, url string, body io.Reader) (*Request, error)\"},\n\t\t{\"NewRequestWithContext\", Func, 13, \"func(ctx context.Context, method string, url string, body io.Reader) (*Request, error)\"},\n\t\t{\"NewResponseController\", Func, 20, \"func(rw ResponseWriter) *ResponseController\"},\n\t\t{\"NewServeMux\", Func, 0, \"func() *ServeMux\"},\n\t\t{\"NoBody\", Var, 8, \"\"},\n\t\t{\"NotFound\", Func, 0, \"func(w ResponseWriter, r *Request)\"},\n\t\t{\"NotFoundHandler\", Func, 0, \"func() Handler\"},\n\t\t{\"ParseCookie\", Func, 23, \"func(line string) ([]*Cookie, error)\"},\n\t\t{\"ParseHTTPVersion\", Func, 0, \"func(vers string) (major int, minor int, ok bool)\"},\n\t\t{\"ParseSetCookie\", Func, 23, \"func(line string) (*Cookie, error)\"},\n\t\t{\"ParseTime\", Func, 1, \"func(text string) (t time.Time, err error)\"},\n\t\t{\"Post\", Func, 0, \"func(url string, contentType string, body io.Reader) (resp *Response, err error)\"},\n\t\t{\"PostForm\", Func, 0, \"func(url string, data url.Values) (resp *Response, err error)\"},\n\t\t{\"ProtocolError\", Type, 0, \"\"},\n\t\t{\"ProtocolError.ErrorString\", Field, 0, \"\"},\n\t\t{\"Protocols\", Type, 24, \"\"},\n\t\t{\"ProxyFromEnvironment\", Func, 0, \"func(req *Request) (*url.URL, error)\"},\n\t\t{\"ProxyURL\", Func, 0, \"func(fixedURL *url.URL) func(*Request) (*url.URL, error)\"},\n\t\t{\"PushOptions\", Type, 8, \"\"},\n\t\t{\"PushOptions.Header\", Field, 8, \"\"},\n\t\t{\"PushOptions.Method\", Field, 8, \"\"},\n\t\t{\"Pusher\", Type, 8, \"\"},\n\t\t{\"ReadRequest\", Func, 0, \"func(b *bufio.Reader) (*Request, error)\"},\n\t\t{\"ReadResponse\", Func, 0, \"func(r *bufio.Reader, req *Request) (*Response, error)\"},\n\t\t{\"Redirect\", Func, 0, \"func(w ResponseWriter, r *Request, url string, code int)\"},\n\t\t{\"RedirectHandler\", Func, 0, \"func(url string, code int) Handler\"},\n\t\t{\"Request\", Type, 0, \"\"},\n\t\t{\"Request.Body\", Field, 0, \"\"},\n\t\t{\"Request.Cancel\", Field, 5, \"\"},\n\t\t{\"Request.Close\", Field, 0, \"\"},\n\t\t{\"Request.ContentLength\", Field, 0, \"\"},\n\t\t{\"Request.Form\", Field, 0, \"\"},\n\t\t{\"Request.GetBody\", Field, 8, \"\"},\n\t\t{\"Request.Header\", Field, 0, \"\"},\n\t\t{\"Request.Host\", Field, 0, \"\"},\n\t\t{\"Request.Method\", Field, 0, \"\"},\n\t\t{\"Request.MultipartForm\", Field, 0, \"\"},\n\t\t{\"Request.Pattern\", Field, 23, \"\"},\n\t\t{\"Request.PostForm\", Field, 1, \"\"},\n\t\t{\"Request.Proto\", Field, 0, \"\"},\n\t\t{\"Request.ProtoMajor\", Field, 0, \"\"},\n\t\t{\"Request.ProtoMinor\", Field, 0, \"\"},\n\t\t{\"Request.RemoteAddr\", Field, 0, \"\"},\n\t\t{\"Request.RequestURI\", Field, 0, \"\"},\n\t\t{\"Request.Response\", Field, 7, \"\"},\n\t\t{\"Request.TLS\", Field, 0, \"\"},\n\t\t{\"Request.Trailer\", Field, 0, \"\"},\n\t\t{\"Request.TransferEncoding\", Field, 0, \"\"},\n\t\t{\"Request.URL\", Field, 0, \"\"},\n\t\t{\"Response\", Type, 0, \"\"},\n\t\t{\"Response.Body\", Field, 0, \"\"},\n\t\t{\"Response.Close\", Field, 0, \"\"},\n\t\t{\"Response.ContentLength\", Field, 0, \"\"},\n\t\t{\"Response.Header\", Field, 0, \"\"},\n\t\t{\"Response.Proto\", Field, 0, \"\"},\n\t\t{\"Response.ProtoMajor\", Field, 0, \"\"},\n\t\t{\"Response.ProtoMinor\", Field, 0, \"\"},\n\t\t{\"Response.Request\", Field, 0, \"\"},\n\t\t{\"Response.Status\", Field, 0, \"\"},\n\t\t{\"Response.StatusCode\", Field, 0, \"\"},\n\t\t{\"Response.TLS\", Field, 3, \"\"},\n\t\t{\"Response.Trailer\", Field, 0, \"\"},\n\t\t{\"Response.TransferEncoding\", Field, 0, \"\"},\n\t\t{\"Response.Uncompressed\", Field, 7, \"\"},\n\t\t{\"ResponseController\", Type, 20, \"\"},\n\t\t{\"ResponseWriter\", Type, 0, \"\"},\n\t\t{\"RoundTripper\", Type, 0, \"\"},\n\t\t{\"SameSite\", Type, 11, \"\"},\n\t\t{\"SameSiteDefaultMode\", Const, 11, \"\"},\n\t\t{\"SameSiteLaxMode\", Const, 11, \"\"},\n\t\t{\"SameSiteNoneMode\", Const, 13, \"\"},\n\t\t{\"SameSiteStrictMode\", Const, 11, \"\"},\n\t\t{\"Serve\", Func, 0, \"func(l net.Listener, handler Handler) error\"},\n\t\t{\"ServeContent\", Func, 0, \"func(w ResponseWriter, req *Request, name string, modtime time.Time, content io.ReadSeeker)\"},\n\t\t{\"ServeFile\", Func, 0, \"func(w ResponseWriter, r *Request, name string)\"},\n\t\t{\"ServeFileFS\", Func, 22, \"func(w ResponseWriter, r *Request, fsys fs.FS, name string)\"},\n\t\t{\"ServeMux\", Type, 0, \"\"},\n\t\t{\"ServeTLS\", Func, 9, \"func(l net.Listener, handler Handler, certFile string, keyFile string) error\"},\n\t\t{\"Server\", Type, 0, \"\"},\n\t\t{\"Server.Addr\", Field, 0, \"\"},\n\t\t{\"Server.BaseContext\", Field, 13, \"\"},\n\t\t{\"Server.ConnContext\", Field, 13, \"\"},\n\t\t{\"Server.ConnState\", Field, 3, \"\"},\n\t\t{\"Server.DisableGeneralOptionsHandler\", Field, 20, \"\"},\n\t\t{\"Server.ErrorLog\", Field, 3, \"\"},\n\t\t{\"Server.HTTP2\", Field, 24, \"\"},\n\t\t{\"Server.Handler\", Field, 0, \"\"},\n\t\t{\"Server.IdleTimeout\", Field, 8, \"\"},\n\t\t{\"Server.MaxHeaderBytes\", Field, 0, \"\"},\n\t\t{\"Server.Protocols\", Field, 24, \"\"},\n\t\t{\"Server.ReadHeaderTimeout\", Field, 8, \"\"},\n\t\t{\"Server.ReadTimeout\", Field, 0, \"\"},\n\t\t{\"Server.TLSConfig\", Field, 0, \"\"},\n\t\t{\"Server.TLSNextProto\", Field, 1, \"\"},\n\t\t{\"Server.WriteTimeout\", Field, 0, \"\"},\n\t\t{\"ServerContextKey\", Var, 7, \"\"},\n\t\t{\"SetCookie\", Func, 0, \"func(w ResponseWriter, cookie *Cookie)\"},\n\t\t{\"StateActive\", Const, 3, \"\"},\n\t\t{\"StateClosed\", Const, 3, \"\"},\n\t\t{\"StateHijacked\", Const, 3, \"\"},\n\t\t{\"StateIdle\", Const, 3, \"\"},\n\t\t{\"StateNew\", Const, 3, \"\"},\n\t\t{\"StatusAccepted\", Const, 0, \"\"},\n\t\t{\"StatusAlreadyReported\", Const, 7, \"\"},\n\t\t{\"StatusBadGateway\", Const, 0, \"\"},\n\t\t{\"StatusBadRequest\", Const, 0, \"\"},\n\t\t{\"StatusConflict\", Const, 0, \"\"},\n\t\t{\"StatusContinue\", Const, 0, \"\"},\n\t\t{\"StatusCreated\", Const, 0, \"\"},\n\t\t{\"StatusEarlyHints\", Const, 13, \"\"},\n\t\t{\"StatusExpectationFailed\", Const, 0, \"\"},\n\t\t{\"StatusFailedDependency\", Const, 7, \"\"},\n\t\t{\"StatusForbidden\", Const, 0, \"\"},\n\t\t{\"StatusFound\", Const, 0, \"\"},\n\t\t{\"StatusGatewayTimeout\", Const, 0, \"\"},\n\t\t{\"StatusGone\", Const, 0, \"\"},\n\t\t{\"StatusHTTPVersionNotSupported\", Const, 0, \"\"},\n\t\t{\"StatusIMUsed\", Const, 7, \"\"},\n\t\t{\"StatusInsufficientStorage\", Const, 7, \"\"},\n\t\t{\"StatusInternalServerError\", Const, 0, \"\"},\n\t\t{\"StatusLengthRequired\", Const, 0, \"\"},\n\t\t{\"StatusLocked\", Const, 7, \"\"},\n\t\t{\"StatusLoopDetected\", Const, 7, \"\"},\n\t\t{\"StatusMethodNotAllowed\", Const, 0, \"\"},\n\t\t{\"StatusMisdirectedRequest\", Const, 11, \"\"},\n\t\t{\"StatusMovedPermanently\", Const, 0, \"\"},\n\t\t{\"StatusMultiStatus\", Const, 7, \"\"},\n\t\t{\"StatusMultipleChoices\", Const, 0, \"\"},\n\t\t{\"StatusNetworkAuthenticationRequired\", Const, 6, \"\"},\n\t\t{\"StatusNoContent\", Const, 0, \"\"},\n\t\t{\"StatusNonAuthoritativeInfo\", Const, 0, \"\"},\n\t\t{\"StatusNotAcceptable\", Const, 0, \"\"},\n\t\t{\"StatusNotExtended\", Const, 7, \"\"},\n\t\t{\"StatusNotFound\", Const, 0, \"\"},\n\t\t{\"StatusNotImplemented\", Const, 0, \"\"},\n\t\t{\"StatusNotModified\", Const, 0, \"\"},\n\t\t{\"StatusOK\", Const, 0, \"\"},\n\t\t{\"StatusPartialContent\", Const, 0, \"\"},\n\t\t{\"StatusPaymentRequired\", Const, 0, \"\"},\n\t\t{\"StatusPermanentRedirect\", Const, 7, \"\"},\n\t\t{\"StatusPreconditionFailed\", Const, 0, \"\"},\n\t\t{\"StatusPreconditionRequired\", Const, 6, \"\"},\n\t\t{\"StatusProcessing\", Const, 7, \"\"},\n\t\t{\"StatusProxyAuthRequired\", Const, 0, \"\"},\n\t\t{\"StatusRequestEntityTooLarge\", Const, 0, \"\"},\n\t\t{\"StatusRequestHeaderFieldsTooLarge\", Const, 6, \"\"},\n\t\t{\"StatusRequestTimeout\", Const, 0, \"\"},\n\t\t{\"StatusRequestURITooLong\", Const, 0, \"\"},\n\t\t{\"StatusRequestedRangeNotSatisfiable\", Const, 0, \"\"},\n\t\t{\"StatusResetContent\", Const, 0, \"\"},\n\t\t{\"StatusSeeOther\", Const, 0, \"\"},\n\t\t{\"StatusServiceUnavailable\", Const, 0, \"\"},\n\t\t{\"StatusSwitchingProtocols\", Const, 0, \"\"},\n\t\t{\"StatusTeapot\", Const, 0, \"\"},\n\t\t{\"StatusTemporaryRedirect\", Const, 0, \"\"},\n\t\t{\"StatusText\", Func, 0, \"func(code int) string\"},\n\t\t{\"StatusTooEarly\", Const, 12, \"\"},\n\t\t{\"StatusTooManyRequests\", Const, 6, \"\"},\n\t\t{\"StatusUnauthorized\", Const, 0, \"\"},\n\t\t{\"StatusUnavailableForLegalReasons\", Const, 6, \"\"},\n\t\t{\"StatusUnprocessableEntity\", Const, 7, \"\"},\n\t\t{\"StatusUnsupportedMediaType\", Const, 0, \"\"},\n\t\t{\"StatusUpgradeRequired\", Const, 7, \"\"},\n\t\t{\"StatusUseProxy\", Const, 0, \"\"},\n\t\t{\"StatusVariantAlsoNegotiates\", Const, 7, \"\"},\n\t\t{\"StripPrefix\", Func, 0, \"func(prefix string, h Handler) Handler\"},\n\t\t{\"TimeFormat\", Const, 0, \"\"},\n\t\t{\"TimeoutHandler\", Func, 0, \"func(h Handler, dt time.Duration, msg string) Handler\"},\n\t\t{\"TrailerPrefix\", Const, 8, \"\"},\n\t\t{\"Transport\", Type, 0, \"\"},\n\t\t{\"Transport.Dial\", Field, 0, \"\"},\n\t\t{\"Transport.DialContext\", Field, 7, \"\"},\n\t\t{\"Transport.DialTLS\", Field, 4, \"\"},\n\t\t{\"Transport.DialTLSContext\", Field, 14, \"\"},\n\t\t{\"Transport.DisableCompression\", Field, 0, \"\"},\n\t\t{\"Transport.DisableKeepAlives\", Field, 0, \"\"},\n\t\t{\"Transport.ExpectContinueTimeout\", Field, 6, \"\"},\n\t\t{\"Transport.ForceAttemptHTTP2\", Field, 13, \"\"},\n\t\t{\"Transport.GetProxyConnectHeader\", Field, 16, \"\"},\n\t\t{\"Transport.HTTP2\", Field, 24, \"\"},\n\t\t{\"Transport.IdleConnTimeout\", Field, 7, \"\"},\n\t\t{\"Transport.MaxConnsPerHost\", Field, 11, \"\"},\n\t\t{\"Transport.MaxIdleConns\", Field, 7, \"\"},\n\t\t{\"Transport.MaxIdleConnsPerHost\", Field, 0, \"\"},\n\t\t{\"Transport.MaxResponseHeaderBytes\", Field, 7, \"\"},\n\t\t{\"Transport.OnProxyConnectResponse\", Field, 20, \"\"},\n\t\t{\"Transport.Protocols\", Field, 24, \"\"},\n\t\t{\"Transport.Proxy\", Field, 0, \"\"},\n\t\t{\"Transport.ProxyConnectHeader\", Field, 8, \"\"},\n\t\t{\"Transport.ReadBufferSize\", Field, 13, \"\"},\n\t\t{\"Transport.ResponseHeaderTimeout\", Field, 1, \"\"},\n\t\t{\"Transport.TLSClientConfig\", Field, 0, \"\"},\n\t\t{\"Transport.TLSHandshakeTimeout\", Field, 3, \"\"},\n\t\t{\"Transport.TLSNextProto\", Field, 6, \"\"},\n\t\t{\"Transport.WriteBufferSize\", Field, 13, \"\"},\n\t},\n\t\"net/http/cgi\": {\n\t\t{\"(*Handler).ServeHTTP\", Method, 0, \"\"},\n\t\t{\"Handler\", Type, 0, \"\"},\n\t\t{\"Handler.Args\", Field, 0, \"\"},\n\t\t{\"Handler.Dir\", Field, 0, \"\"},\n\t\t{\"Handler.Env\", Field, 0, \"\"},\n\t\t{\"Handler.InheritEnv\", Field, 0, \"\"},\n\t\t{\"Handler.Logger\", Field, 0, \"\"},\n\t\t{\"Handler.Path\", Field, 0, \"\"},\n\t\t{\"Handler.PathLocationHandler\", Field, 0, \"\"},\n\t\t{\"Handler.Root\", Field, 0, \"\"},\n\t\t{\"Handler.Stderr\", Field, 7, \"\"},\n\t\t{\"Request\", Func, 0, \"func() (*http.Request, error)\"},\n\t\t{\"RequestFromMap\", Func, 0, \"func(params map[string]string) (*http.Request, error)\"},\n\t\t{\"Serve\", Func, 0, \"func(handler http.Handler) error\"},\n\t},\n\t\"net/http/cookiejar\": {\n\t\t{\"(*Jar).Cookies\", Method, 1, \"\"},\n\t\t{\"(*Jar).SetCookies\", Method, 1, \"\"},\n\t\t{\"(PublicSuffixList).PublicSuffix\", Method, 1, \"\"},\n\t\t{\"(PublicSuffixList).String\", Method, 1, \"\"},\n\t\t{\"Jar\", Type, 1, \"\"},\n\t\t{\"New\", Func, 1, \"func(o *Options) (*Jar, error)\"},\n\t\t{\"Options\", Type, 1, \"\"},\n\t\t{\"Options.PublicSuffixList\", Field, 1, \"\"},\n\t\t{\"PublicSuffixList\", Type, 1, \"\"},\n\t},\n\t\"net/http/fcgi\": {\n\t\t{\"ErrConnClosed\", Var, 5, \"\"},\n\t\t{\"ErrRequestAborted\", Var, 5, \"\"},\n\t\t{\"ProcessEnv\", Func, 9, \"func(r *http.Request) map[string]string\"},\n\t\t{\"Serve\", Func, 0, \"func(l net.Listener, handler http.Handler) error\"},\n\t},\n\t\"net/http/httptest\": {\n\t\t{\"(*ResponseRecorder).Flush\", Method, 0, \"\"},\n\t\t{\"(*ResponseRecorder).Header\", Method, 0, \"\"},\n\t\t{\"(*ResponseRecorder).Result\", Method, 7, \"\"},\n\t\t{\"(*ResponseRecorder).Write\", Method, 0, \"\"},\n\t\t{\"(*ResponseRecorder).WriteHeader\", Method, 0, \"\"},\n\t\t{\"(*ResponseRecorder).WriteString\", Method, 6, \"\"},\n\t\t{\"(*Server).Certificate\", Method, 9, \"\"},\n\t\t{\"(*Server).Client\", Method, 9, \"\"},\n\t\t{\"(*Server).Close\", Method, 0, \"\"},\n\t\t{\"(*Server).CloseClientConnections\", Method, 0, \"\"},\n\t\t{\"(*Server).Start\", Method, 0, \"\"},\n\t\t{\"(*Server).StartTLS\", Method, 0, \"\"},\n\t\t{\"DefaultRemoteAddr\", Const, 0, \"\"},\n\t\t{\"NewRecorder\", Func, 0, \"func() *ResponseRecorder\"},\n\t\t{\"NewRequest\", Func, 7, \"func(method string, target string, body io.Reader) *http.Request\"},\n\t\t{\"NewRequestWithContext\", Func, 23, \"func(ctx context.Context, method string, target string, body io.Reader) *http.Request\"},\n\t\t{\"NewServer\", Func, 0, \"func(handler http.Handler) *Server\"},\n\t\t{\"NewTLSServer\", Func, 0, \"func(handler http.Handler) *Server\"},\n\t\t{\"NewUnstartedServer\", Func, 0, \"func(handler http.Handler) *Server\"},\n\t\t{\"ResponseRecorder\", Type, 0, \"\"},\n\t\t{\"ResponseRecorder.Body\", Field, 0, \"\"},\n\t\t{\"ResponseRecorder.Code\", Field, 0, \"\"},\n\t\t{\"ResponseRecorder.Flushed\", Field, 0, \"\"},\n\t\t{\"ResponseRecorder.HeaderMap\", Field, 0, \"\"},\n\t\t{\"Server\", Type, 0, \"\"},\n\t\t{\"Server.Config\", Field, 0, \"\"},\n\t\t{\"Server.EnableHTTP2\", Field, 14, \"\"},\n\t\t{\"Server.Listener\", Field, 0, \"\"},\n\t\t{\"Server.TLS\", Field, 0, \"\"},\n\t\t{\"Server.URL\", Field, 0, \"\"},\n\t},\n\t\"net/http/httptrace\": {\n\t\t{\"ClientTrace\", Type, 7, \"\"},\n\t\t{\"ClientTrace.ConnectDone\", Field, 7, \"\"},\n\t\t{\"ClientTrace.ConnectStart\", Field, 7, \"\"},\n\t\t{\"ClientTrace.DNSDone\", Field, 7, \"\"},\n\t\t{\"ClientTrace.DNSStart\", Field, 7, \"\"},\n\t\t{\"ClientTrace.GetConn\", Field, 7, \"\"},\n\t\t{\"ClientTrace.Got100Continue\", Field, 7, \"\"},\n\t\t{\"ClientTrace.Got1xxResponse\", Field, 11, \"\"},\n\t\t{\"ClientTrace.GotConn\", Field, 7, \"\"},\n\t\t{\"ClientTrace.GotFirstResponseByte\", Field, 7, \"\"},\n\t\t{\"ClientTrace.PutIdleConn\", Field, 7, \"\"},\n\t\t{\"ClientTrace.TLSHandshakeDone\", Field, 8, \"\"},\n\t\t{\"ClientTrace.TLSHandshakeStart\", Field, 8, \"\"},\n\t\t{\"ClientTrace.Wait100Continue\", Field, 7, \"\"},\n\t\t{\"ClientTrace.WroteHeaderField\", Field, 11, \"\"},\n\t\t{\"ClientTrace.WroteHeaders\", Field, 7, \"\"},\n\t\t{\"ClientTrace.WroteRequest\", Field, 7, \"\"},\n\t\t{\"ContextClientTrace\", Func, 7, \"func(ctx context.Context) *ClientTrace\"},\n\t\t{\"DNSDoneInfo\", Type, 7, \"\"},\n\t\t{\"DNSDoneInfo.Addrs\", Field, 7, \"\"},\n\t\t{\"DNSDoneInfo.Coalesced\", Field, 7, \"\"},\n\t\t{\"DNSDoneInfo.Err\", Field, 7, \"\"},\n\t\t{\"DNSStartInfo\", Type, 7, \"\"},\n\t\t{\"DNSStartInfo.Host\", Field, 7, \"\"},\n\t\t{\"GotConnInfo\", Type, 7, \"\"},\n\t\t{\"GotConnInfo.Conn\", Field, 7, \"\"},\n\t\t{\"GotConnInfo.IdleTime\", Field, 7, \"\"},\n\t\t{\"GotConnInfo.Reused\", Field, 7, \"\"},\n\t\t{\"GotConnInfo.WasIdle\", Field, 7, \"\"},\n\t\t{\"WithClientTrace\", Func, 7, \"func(ctx context.Context, trace *ClientTrace) context.Context\"},\n\t\t{\"WroteRequestInfo\", Type, 7, \"\"},\n\t\t{\"WroteRequestInfo.Err\", Field, 7, \"\"},\n\t},\n\t\"net/http/httputil\": {\n\t\t{\"(*ClientConn).Close\", Method, 0, \"\"},\n\t\t{\"(*ClientConn).Do\", Method, 0, \"\"},\n\t\t{\"(*ClientConn).Hijack\", Method, 0, \"\"},\n\t\t{\"(*ClientConn).Pending\", Method, 0, \"\"},\n\t\t{\"(*ClientConn).Read\", Method, 0, \"\"},\n\t\t{\"(*ClientConn).Write\", Method, 0, \"\"},\n\t\t{\"(*ProxyRequest).SetURL\", Method, 20, \"\"},\n\t\t{\"(*ProxyRequest).SetXForwarded\", Method, 20, \"\"},\n\t\t{\"(*ReverseProxy).ServeHTTP\", Method, 0, \"\"},\n\t\t{\"(*ServerConn).Close\", Method, 0, \"\"},\n\t\t{\"(*ServerConn).Hijack\", Method, 0, \"\"},\n\t\t{\"(*ServerConn).Pending\", Method, 0, \"\"},\n\t\t{\"(*ServerConn).Read\", Method, 0, \"\"},\n\t\t{\"(*ServerConn).Write\", Method, 0, \"\"},\n\t\t{\"(BufferPool).Get\", Method, 6, \"\"},\n\t\t{\"(BufferPool).Put\", Method, 6, \"\"},\n\t\t{\"BufferPool\", Type, 6, \"\"},\n\t\t{\"ClientConn\", Type, 0, \"\"},\n\t\t{\"DumpRequest\", Func, 0, \"func(req *http.Request, body bool) ([]byte, error)\"},\n\t\t{\"DumpRequestOut\", Func, 0, \"func(req *http.Request, body bool) ([]byte, error)\"},\n\t\t{\"DumpResponse\", Func, 0, \"func(resp *http.Response, body bool) ([]byte, error)\"},\n\t\t{\"ErrClosed\", Var, 0, \"\"},\n\t\t{\"ErrLineTooLong\", Var, 0, \"\"},\n\t\t{\"ErrPersistEOF\", Var, 0, \"\"},\n\t\t{\"ErrPipeline\", Var, 0, \"\"},\n\t\t{\"NewChunkedReader\", Func, 0, \"func(r io.Reader) io.Reader\"},\n\t\t{\"NewChunkedWriter\", Func, 0, \"func(w io.Writer) io.WriteCloser\"},\n\t\t{\"NewClientConn\", Func, 0, \"func(c net.Conn, r *bufio.Reader) *ClientConn\"},\n\t\t{\"NewProxyClientConn\", Func, 0, \"func(c net.Conn, r *bufio.Reader) *ClientConn\"},\n\t\t{\"NewServerConn\", Func, 0, \"func(c net.Conn, r *bufio.Reader) *ServerConn\"},\n\t\t{\"NewSingleHostReverseProxy\", Func, 0, \"func(target *url.URL) *ReverseProxy\"},\n\t\t{\"ProxyRequest\", Type, 20, \"\"},\n\t\t{\"ProxyRequest.In\", Field, 20, \"\"},\n\t\t{\"ProxyRequest.Out\", Field, 20, \"\"},\n\t\t{\"ReverseProxy\", Type, 0, \"\"},\n\t\t{\"ReverseProxy.BufferPool\", Field, 6, \"\"},\n\t\t{\"ReverseProxy.Director\", Field, 0, \"\"},\n\t\t{\"ReverseProxy.ErrorHandler\", Field, 11, \"\"},\n\t\t{\"ReverseProxy.ErrorLog\", Field, 4, \"\"},\n\t\t{\"ReverseProxy.FlushInterval\", Field, 0, \"\"},\n\t\t{\"ReverseProxy.ModifyResponse\", Field, 8, \"\"},\n\t\t{\"ReverseProxy.Rewrite\", Field, 20, \"\"},\n\t\t{\"ReverseProxy.Transport\", Field, 0, \"\"},\n\t\t{\"ServerConn\", Type, 0, \"\"},\n\t},\n\t\"net/http/pprof\": {\n\t\t{\"Cmdline\", Func, 0, \"func(w http.ResponseWriter, r *http.Request)\"},\n\t\t{\"Handler\", Func, 0, \"func(name string) http.Handler\"},\n\t\t{\"Index\", Func, 0, \"func(w http.ResponseWriter, r *http.Request)\"},\n\t\t{\"Profile\", Func, 0, \"func(w http.ResponseWriter, r *http.Request)\"},\n\t\t{\"Symbol\", Func, 0, \"func(w http.ResponseWriter, r *http.Request)\"},\n\t\t{\"Trace\", Func, 5, \"func(w http.ResponseWriter, r *http.Request)\"},\n\t},\n\t\"net/mail\": {\n\t\t{\"(*Address).String\", Method, 0, \"\"},\n\t\t{\"(*AddressParser).Parse\", Method, 5, \"\"},\n\t\t{\"(*AddressParser).ParseList\", Method, 5, \"\"},\n\t\t{\"(Header).AddressList\", Method, 0, \"\"},\n\t\t{\"(Header).Date\", Method, 0, \"\"},\n\t\t{\"(Header).Get\", Method, 0, \"\"},\n\t\t{\"Address\", Type, 0, \"\"},\n\t\t{\"Address.Address\", Field, 0, \"\"},\n\t\t{\"Address.Name\", Field, 0, \"\"},\n\t\t{\"AddressParser\", Type, 5, \"\"},\n\t\t{\"AddressParser.WordDecoder\", Field, 5, \"\"},\n\t\t{\"ErrHeaderNotPresent\", Var, 0, \"\"},\n\t\t{\"Header\", Type, 0, \"\"},\n\t\t{\"Message\", Type, 0, \"\"},\n\t\t{\"Message.Body\", Field, 0, \"\"},\n\t\t{\"Message.Header\", Field, 0, \"\"},\n\t\t{\"ParseAddress\", Func, 1, \"func(address string) (*Address, error)\"},\n\t\t{\"ParseAddressList\", Func, 1, \"func(list string) ([]*Address, error)\"},\n\t\t{\"ParseDate\", Func, 8, \"func(date string) (time.Time, error)\"},\n\t\t{\"ReadMessage\", Func, 0, \"func(r io.Reader) (msg *Message, err error)\"},\n\t},\n\t\"net/netip\": {\n\t\t{\"(*Addr).UnmarshalBinary\", Method, 18, \"\"},\n\t\t{\"(*Addr).UnmarshalText\", Method, 18, \"\"},\n\t\t{\"(*AddrPort).UnmarshalBinary\", Method, 18, \"\"},\n\t\t{\"(*AddrPort).UnmarshalText\", Method, 18, \"\"},\n\t\t{\"(*Prefix).UnmarshalBinary\", Method, 18, \"\"},\n\t\t{\"(*Prefix).UnmarshalText\", Method, 18, \"\"},\n\t\t{\"(Addr).AppendBinary\", Method, 24, \"\"},\n\t\t{\"(Addr).AppendText\", Method, 24, \"\"},\n\t\t{\"(Addr).AppendTo\", Method, 18, \"\"},\n\t\t{\"(Addr).As16\", Method, 18, \"\"},\n\t\t{\"(Addr).As4\", Method, 18, \"\"},\n\t\t{\"(Addr).AsSlice\", Method, 18, \"\"},\n\t\t{\"(Addr).BitLen\", Method, 18, \"\"},\n\t\t{\"(Addr).Compare\", Method, 18, \"\"},\n\t\t{\"(Addr).Is4\", Method, 18, \"\"},\n\t\t{\"(Addr).Is4In6\", Method, 18, \"\"},\n\t\t{\"(Addr).Is6\", Method, 18, \"\"},\n\t\t{\"(Addr).IsGlobalUnicast\", Method, 18, \"\"},\n\t\t{\"(Addr).IsInterfaceLocalMulticast\", Method, 18, \"\"},\n\t\t{\"(Addr).IsLinkLocalMulticast\", Method, 18, \"\"},\n\t\t{\"(Addr).IsLinkLocalUnicast\", Method, 18, \"\"},\n\t\t{\"(Addr).IsLoopback\", Method, 18, \"\"},\n\t\t{\"(Addr).IsMulticast\", Method, 18, \"\"},\n\t\t{\"(Addr).IsPrivate\", Method, 18, \"\"},\n\t\t{\"(Addr).IsUnspecified\", Method, 18, \"\"},\n\t\t{\"(Addr).IsValid\", Method, 18, \"\"},\n\t\t{\"(Addr).Less\", Method, 18, \"\"},\n\t\t{\"(Addr).MarshalBinary\", Method, 18, \"\"},\n\t\t{\"(Addr).MarshalText\", Method, 18, \"\"},\n\t\t{\"(Addr).Next\", Method, 18, \"\"},\n\t\t{\"(Addr).Prefix\", Method, 18, \"\"},\n\t\t{\"(Addr).Prev\", Method, 18, \"\"},\n\t\t{\"(Addr).String\", Method, 18, \"\"},\n\t\t{\"(Addr).StringExpanded\", Method, 18, \"\"},\n\t\t{\"(Addr).Unmap\", Method, 18, \"\"},\n\t\t{\"(Addr).WithZone\", Method, 18, \"\"},\n\t\t{\"(Addr).Zone\", Method, 18, \"\"},\n\t\t{\"(AddrPort).Addr\", Method, 18, \"\"},\n\t\t{\"(AddrPort).AppendBinary\", Method, 24, \"\"},\n\t\t{\"(AddrPort).AppendText\", Method, 24, \"\"},\n\t\t{\"(AddrPort).AppendTo\", Method, 18, \"\"},\n\t\t{\"(AddrPort).Compare\", Method, 22, \"\"},\n\t\t{\"(AddrPort).IsValid\", Method, 18, \"\"},\n\t\t{\"(AddrPort).MarshalBinary\", Method, 18, \"\"},\n\t\t{\"(AddrPort).MarshalText\", Method, 18, \"\"},\n\t\t{\"(AddrPort).Port\", Method, 18, \"\"},\n\t\t{\"(AddrPort).String\", Method, 18, \"\"},\n\t\t{\"(Prefix).Addr\", Method, 18, \"\"},\n\t\t{\"(Prefix).AppendBinary\", Method, 24, \"\"},\n\t\t{\"(Prefix).AppendText\", Method, 24, \"\"},\n\t\t{\"(Prefix).AppendTo\", Method, 18, \"\"},\n\t\t{\"(Prefix).Bits\", Method, 18, \"\"},\n\t\t{\"(Prefix).Compare\", Method, 26, \"\"},\n\t\t{\"(Prefix).Contains\", Method, 18, \"\"},\n\t\t{\"(Prefix).IsSingleIP\", Method, 18, \"\"},\n\t\t{\"(Prefix).IsValid\", Method, 18, \"\"},\n\t\t{\"(Prefix).MarshalBinary\", Method, 18, \"\"},\n\t\t{\"(Prefix).MarshalText\", Method, 18, \"\"},\n\t\t{\"(Prefix).Masked\", Method, 18, \"\"},\n\t\t{\"(Prefix).Overlaps\", Method, 18, \"\"},\n\t\t{\"(Prefix).String\", Method, 18, \"\"},\n\t\t{\"Addr\", Type, 18, \"\"},\n\t\t{\"AddrFrom16\", Func, 18, \"func(addr [16]byte) Addr\"},\n\t\t{\"AddrFrom4\", Func, 18, \"func(addr [4]byte) Addr\"},\n\t\t{\"AddrFromSlice\", Func, 18, \"func(slice []byte) (ip Addr, ok bool)\"},\n\t\t{\"AddrPort\", Type, 18, \"\"},\n\t\t{\"AddrPortFrom\", Func, 18, \"func(ip Addr, port uint16) AddrPort\"},\n\t\t{\"IPv4Unspecified\", Func, 18, \"func() Addr\"},\n\t\t{\"IPv6LinkLocalAllNodes\", Func, 18, \"func() Addr\"},\n\t\t{\"IPv6LinkLocalAllRouters\", Func, 20, \"func() Addr\"},\n\t\t{\"IPv6Loopback\", Func, 20, \"func() Addr\"},\n\t\t{\"IPv6Unspecified\", Func, 18, \"func() Addr\"},\n\t\t{\"MustParseAddr\", Func, 18, \"func(s string) Addr\"},\n\t\t{\"MustParseAddrPort\", Func, 18, \"func(s string) AddrPort\"},\n\t\t{\"MustParsePrefix\", Func, 18, \"func(s string) Prefix\"},\n\t\t{\"ParseAddr\", Func, 18, \"func(s string) (Addr, error)\"},\n\t\t{\"ParseAddrPort\", Func, 18, \"func(s string) (AddrPort, error)\"},\n\t\t{\"ParsePrefix\", Func, 18, \"func(s string) (Prefix, error)\"},\n\t\t{\"Prefix\", Type, 18, \"\"},\n\t\t{\"PrefixFrom\", Func, 18, \"func(ip Addr, bits int) Prefix\"},\n\t},\n\t\"net/rpc\": {\n\t\t{\"(*Client).Call\", Method, 0, \"\"},\n\t\t{\"(*Client).Close\", Method, 0, \"\"},\n\t\t{\"(*Client).Go\", Method, 0, \"\"},\n\t\t{\"(*Server).Accept\", Method, 0, \"\"},\n\t\t{\"(*Server).HandleHTTP\", Method, 0, \"\"},\n\t\t{\"(*Server).Register\", Method, 0, \"\"},\n\t\t{\"(*Server).RegisterName\", Method, 0, \"\"},\n\t\t{\"(*Server).ServeCodec\", Method, 0, \"\"},\n\t\t{\"(*Server).ServeConn\", Method, 0, \"\"},\n\t\t{\"(*Server).ServeHTTP\", Method, 0, \"\"},\n\t\t{\"(*Server).ServeRequest\", Method, 0, \"\"},\n\t\t{\"(ClientCodec).Close\", Method, 0, \"\"},\n\t\t{\"(ClientCodec).ReadResponseBody\", Method, 0, \"\"},\n\t\t{\"(ClientCodec).ReadResponseHeader\", Method, 0, \"\"},\n\t\t{\"(ClientCodec).WriteRequest\", Method, 0, \"\"},\n\t\t{\"(ServerCodec).Close\", Method, 0, \"\"},\n\t\t{\"(ServerCodec).ReadRequestBody\", Method, 0, \"\"},\n\t\t{\"(ServerCodec).ReadRequestHeader\", Method, 0, \"\"},\n\t\t{\"(ServerCodec).WriteResponse\", Method, 0, \"\"},\n\t\t{\"(ServerError).Error\", Method, 0, \"\"},\n\t\t{\"Accept\", Func, 0, \"func(lis net.Listener)\"},\n\t\t{\"Call\", Type, 0, \"\"},\n\t\t{\"Call.Args\", Field, 0, \"\"},\n\t\t{\"Call.Done\", Field, 0, \"\"},\n\t\t{\"Call.Error\", Field, 0, \"\"},\n\t\t{\"Call.Reply\", Field, 0, \"\"},\n\t\t{\"Call.ServiceMethod\", Field, 0, \"\"},\n\t\t{\"Client\", Type, 0, \"\"},\n\t\t{\"ClientCodec\", Type, 0, \"\"},\n\t\t{\"DefaultDebugPath\", Const, 0, \"\"},\n\t\t{\"DefaultRPCPath\", Const, 0, \"\"},\n\t\t{\"DefaultServer\", Var, 0, \"\"},\n\t\t{\"Dial\", Func, 0, \"func(network string, address string) (*Client, error)\"},\n\t\t{\"DialHTTP\", Func, 0, \"func(network string, address string) (*Client, error)\"},\n\t\t{\"DialHTTPPath\", Func, 0, \"func(network string, address string, path string) (*Client, error)\"},\n\t\t{\"ErrShutdown\", Var, 0, \"\"},\n\t\t{\"HandleHTTP\", Func, 0, \"func()\"},\n\t\t{\"NewClient\", Func, 0, \"func(conn io.ReadWriteCloser) *Client\"},\n\t\t{\"NewClientWithCodec\", Func, 0, \"func(codec ClientCodec) *Client\"},\n\t\t{\"NewServer\", Func, 0, \"func() *Server\"},\n\t\t{\"Register\", Func, 0, \"func(rcvr any) error\"},\n\t\t{\"RegisterName\", Func, 0, \"func(name string, rcvr any) error\"},\n\t\t{\"Request\", Type, 0, \"\"},\n\t\t{\"Request.Seq\", Field, 0, \"\"},\n\t\t{\"Request.ServiceMethod\", Field, 0, \"\"},\n\t\t{\"Response\", Type, 0, \"\"},\n\t\t{\"Response.Error\", Field, 0, \"\"},\n\t\t{\"Response.Seq\", Field, 0, \"\"},\n\t\t{\"Response.ServiceMethod\", Field, 0, \"\"},\n\t\t{\"ServeCodec\", Func, 0, \"func(codec ServerCodec)\"},\n\t\t{\"ServeConn\", Func, 0, \"func(conn io.ReadWriteCloser)\"},\n\t\t{\"ServeRequest\", Func, 0, \"func(codec ServerCodec) error\"},\n\t\t{\"Server\", Type, 0, \"\"},\n\t\t{\"ServerCodec\", Type, 0, \"\"},\n\t\t{\"ServerError\", Type, 0, \"\"},\n\t},\n\t\"net/rpc/jsonrpc\": {\n\t\t{\"Dial\", Func, 0, \"func(network string, address string) (*rpc.Client, error)\"},\n\t\t{\"NewClient\", Func, 0, \"func(conn io.ReadWriteCloser) *rpc.Client\"},\n\t\t{\"NewClientCodec\", Func, 0, \"func(conn io.ReadWriteCloser) rpc.ClientCodec\"},\n\t\t{\"NewServerCodec\", Func, 0, \"func(conn io.ReadWriteCloser) rpc.ServerCodec\"},\n\t\t{\"ServeConn\", Func, 0, \"func(conn io.ReadWriteCloser)\"},\n\t},\n\t\"net/smtp\": {\n\t\t{\"(*Client).Auth\", Method, 0, \"\"},\n\t\t{\"(*Client).Close\", Method, 2, \"\"},\n\t\t{\"(*Client).Data\", Method, 0, \"\"},\n\t\t{\"(*Client).Extension\", Method, 0, \"\"},\n\t\t{\"(*Client).Hello\", Method, 1, \"\"},\n\t\t{\"(*Client).Mail\", Method, 0, \"\"},\n\t\t{\"(*Client).Noop\", Method, 10, \"\"},\n\t\t{\"(*Client).Quit\", Method, 0, \"\"},\n\t\t{\"(*Client).Rcpt\", Method, 0, \"\"},\n\t\t{\"(*Client).Reset\", Method, 0, \"\"},\n\t\t{\"(*Client).StartTLS\", Method, 0, \"\"},\n\t\t{\"(*Client).TLSConnectionState\", Method, 5, \"\"},\n\t\t{\"(*Client).Verify\", Method, 0, \"\"},\n\t\t{\"(Auth).Next\", Method, 0, \"\"},\n\t\t{\"(Auth).Start\", Method, 0, \"\"},\n\t\t{\"Auth\", Type, 0, \"\"},\n\t\t{\"CRAMMD5Auth\", Func, 0, \"func(username string, secret string) Auth\"},\n\t\t{\"Client\", Type, 0, \"\"},\n\t\t{\"Client.Text\", Field, 0, \"\"},\n\t\t{\"Dial\", Func, 0, \"func(addr string) (*Client, error)\"},\n\t\t{\"NewClient\", Func, 0, \"func(conn net.Conn, host string) (*Client, error)\"},\n\t\t{\"PlainAuth\", Func, 0, \"func(identity string, username string, password string, host string) Auth\"},\n\t\t{\"SendMail\", Func, 0, \"func(addr string, a Auth, from string, to []string, msg []byte) error\"},\n\t\t{\"ServerInfo\", Type, 0, \"\"},\n\t\t{\"ServerInfo.Auth\", Field, 0, \"\"},\n\t\t{\"ServerInfo.Name\", Field, 0, \"\"},\n\t\t{\"ServerInfo.TLS\", Field, 0, \"\"},\n\t},\n\t\"net/textproto\": {\n\t\t{\"(*Conn).Close\", Method, 0, \"\"},\n\t\t{\"(*Conn).Cmd\", Method, 0, \"\"},\n\t\t{\"(*Conn).DotReader\", Method, 0, \"\"},\n\t\t{\"(*Conn).DotWriter\", Method, 0, \"\"},\n\t\t{\"(*Conn).EndRequest\", Method, 0, \"\"},\n\t\t{\"(*Conn).EndResponse\", Method, 0, \"\"},\n\t\t{\"(*Conn).Next\", Method, 0, \"\"},\n\t\t{\"(*Conn).PrintfLine\", Method, 0, \"\"},\n\t\t{\"(*Conn).ReadCodeLine\", Method, 0, \"\"},\n\t\t{\"(*Conn).ReadContinuedLine\", Method, 0, \"\"},\n\t\t{\"(*Conn).ReadContinuedLineBytes\", Method, 0, \"\"},\n\t\t{\"(*Conn).ReadDotBytes\", Method, 0, \"\"},\n\t\t{\"(*Conn).ReadDotLines\", Method, 0, \"\"},\n\t\t{\"(*Conn).ReadLine\", Method, 0, \"\"},\n\t\t{\"(*Conn).ReadLineBytes\", Method, 0, \"\"},\n\t\t{\"(*Conn).ReadMIMEHeader\", Method, 0, \"\"},\n\t\t{\"(*Conn).ReadResponse\", Method, 0, \"\"},\n\t\t{\"(*Conn).StartRequest\", Method, 0, \"\"},\n\t\t{\"(*Conn).StartResponse\", Method, 0, \"\"},\n\t\t{\"(*Error).Error\", Method, 0, \"\"},\n\t\t{\"(*Pipeline).EndRequest\", Method, 0, \"\"},\n\t\t{\"(*Pipeline).EndResponse\", Method, 0, \"\"},\n\t\t{\"(*Pipeline).Next\", Method, 0, \"\"},\n\t\t{\"(*Pipeline).StartRequest\", Method, 0, \"\"},\n\t\t{\"(*Pipeline).StartResponse\", Method, 0, \"\"},\n\t\t{\"(*Reader).DotReader\", Method, 0, \"\"},\n\t\t{\"(*Reader).ReadCodeLine\", Method, 0, \"\"},\n\t\t{\"(*Reader).ReadContinuedLine\", Method, 0, \"\"},\n\t\t{\"(*Reader).ReadContinuedLineBytes\", Method, 0, \"\"},\n\t\t{\"(*Reader).ReadDotBytes\", Method, 0, \"\"},\n\t\t{\"(*Reader).ReadDotLines\", Method, 0, \"\"},\n\t\t{\"(*Reader).ReadLine\", Method, 0, \"\"},\n\t\t{\"(*Reader).ReadLineBytes\", Method, 0, \"\"},\n\t\t{\"(*Reader).ReadMIMEHeader\", Method, 0, \"\"},\n\t\t{\"(*Reader).ReadResponse\", Method, 0, \"\"},\n\t\t{\"(*Writer).DotWriter\", Method, 0, \"\"},\n\t\t{\"(*Writer).PrintfLine\", Method, 0, \"\"},\n\t\t{\"(MIMEHeader).Add\", Method, 0, \"\"},\n\t\t{\"(MIMEHeader).Del\", Method, 0, \"\"},\n\t\t{\"(MIMEHeader).Get\", Method, 0, \"\"},\n\t\t{\"(MIMEHeader).Set\", Method, 0, \"\"},\n\t\t{\"(MIMEHeader).Values\", Method, 14, \"\"},\n\t\t{\"(ProtocolError).Error\", Method, 0, \"\"},\n\t\t{\"CanonicalMIMEHeaderKey\", Func, 0, \"func(s string) string\"},\n\t\t{\"Conn\", Type, 0, \"\"},\n\t\t{\"Conn.Pipeline\", Field, 0, \"\"},\n\t\t{\"Conn.Reader\", Field, 0, \"\"},\n\t\t{\"Conn.Writer\", Field, 0, \"\"},\n\t\t{\"Dial\", Func, 0, \"func(network string, addr string) (*Conn, error)\"},\n\t\t{\"Error\", Type, 0, \"\"},\n\t\t{\"Error.Code\", Field, 0, \"\"},\n\t\t{\"Error.Msg\", Field, 0, \"\"},\n\t\t{\"MIMEHeader\", Type, 0, \"\"},\n\t\t{\"NewConn\", Func, 0, \"func(conn io.ReadWriteCloser) *Conn\"},\n\t\t{\"NewReader\", Func, 0, \"func(r *bufio.Reader) *Reader\"},\n\t\t{\"NewWriter\", Func, 0, \"func(w *bufio.Writer) *Writer\"},\n\t\t{\"Pipeline\", Type, 0, \"\"},\n\t\t{\"ProtocolError\", Type, 0, \"\"},\n\t\t{\"Reader\", Type, 0, \"\"},\n\t\t{\"Reader.R\", Field, 0, \"\"},\n\t\t{\"TrimBytes\", Func, 1, \"func(b []byte) []byte\"},\n\t\t{\"TrimString\", Func, 1, \"func(s string) string\"},\n\t\t{\"Writer\", Type, 0, \"\"},\n\t\t{\"Writer.W\", Field, 0, \"\"},\n\t},\n\t\"net/url\": {\n\t\t{\"(*Error).Error\", Method, 0, \"\"},\n\t\t{\"(*Error).Temporary\", Method, 6, \"\"},\n\t\t{\"(*Error).Timeout\", Method, 6, \"\"},\n\t\t{\"(*Error).Unwrap\", Method, 13, \"\"},\n\t\t{\"(*URL).AppendBinary\", Method, 24, \"\"},\n\t\t{\"(*URL).EscapedFragment\", Method, 15, \"\"},\n\t\t{\"(*URL).EscapedPath\", Method, 5, \"\"},\n\t\t{\"(*URL).Hostname\", Method, 8, \"\"},\n\t\t{\"(*URL).IsAbs\", Method, 0, \"\"},\n\t\t{\"(*URL).JoinPath\", Method, 19, \"\"},\n\t\t{\"(*URL).MarshalBinary\", Method, 8, \"\"},\n\t\t{\"(*URL).Parse\", Method, 0, \"\"},\n\t\t{\"(*URL).Port\", Method, 8, \"\"},\n\t\t{\"(*URL).Query\", Method, 0, \"\"},\n\t\t{\"(*URL).Redacted\", Method, 15, \"\"},\n\t\t{\"(*URL).RequestURI\", Method, 0, \"\"},\n\t\t{\"(*URL).ResolveReference\", Method, 0, \"\"},\n\t\t{\"(*URL).String\", Method, 0, \"\"},\n\t\t{\"(*URL).UnmarshalBinary\", Method, 8, \"\"},\n\t\t{\"(*Userinfo).Password\", Method, 0, \"\"},\n\t\t{\"(*Userinfo).String\", Method, 0, \"\"},\n\t\t{\"(*Userinfo).Username\", Method, 0, \"\"},\n\t\t{\"(EscapeError).Error\", Method, 0, \"\"},\n\t\t{\"(InvalidHostError).Error\", Method, 6, \"\"},\n\t\t{\"(Values).Add\", Method, 0, \"\"},\n\t\t{\"(Values).Del\", Method, 0, \"\"},\n\t\t{\"(Values).Encode\", Method, 0, \"\"},\n\t\t{\"(Values).Get\", Method, 0, \"\"},\n\t\t{\"(Values).Has\", Method, 17, \"\"},\n\t\t{\"(Values).Set\", Method, 0, \"\"},\n\t\t{\"Error\", Type, 0, \"\"},\n\t\t{\"Error.Err\", Field, 0, \"\"},\n\t\t{\"Error.Op\", Field, 0, \"\"},\n\t\t{\"Error.URL\", Field, 0, \"\"},\n\t\t{\"EscapeError\", Type, 0, \"\"},\n\t\t{\"InvalidHostError\", Type, 6, \"\"},\n\t\t{\"JoinPath\", Func, 19, \"func(base string, elem ...string) (result string, err error)\"},\n\t\t{\"Parse\", Func, 0, \"func(rawURL string) (*URL, error)\"},\n\t\t{\"ParseQuery\", Func, 0, \"func(query string) (Values, error)\"},\n\t\t{\"ParseRequestURI\", Func, 0, \"func(rawURL string) (*URL, error)\"},\n\t\t{\"PathEscape\", Func, 8, \"func(s string) string\"},\n\t\t{\"PathUnescape\", Func, 8, \"func(s string) (string, error)\"},\n\t\t{\"QueryEscape\", Func, 0, \"func(s string) string\"},\n\t\t{\"QueryUnescape\", Func, 0, \"func(s string) (string, error)\"},\n\t\t{\"URL\", Type, 0, \"\"},\n\t\t{\"URL.ForceQuery\", Field, 7, \"\"},\n\t\t{\"URL.Fragment\", Field, 0, \"\"},\n\t\t{\"URL.Host\", Field, 0, \"\"},\n\t\t{\"URL.OmitHost\", Field, 19, \"\"},\n\t\t{\"URL.Opaque\", Field, 0, \"\"},\n\t\t{\"URL.Path\", Field, 0, \"\"},\n\t\t{\"URL.RawFragment\", Field, 15, \"\"},\n\t\t{\"URL.RawPath\", Field, 5, \"\"},\n\t\t{\"URL.RawQuery\", Field, 0, \"\"},\n\t\t{\"URL.Scheme\", Field, 0, \"\"},\n\t\t{\"URL.User\", Field, 0, \"\"},\n\t\t{\"User\", Func, 0, \"func(username string) *Userinfo\"},\n\t\t{\"UserPassword\", Func, 0, \"func(username string, password string) *Userinfo\"},\n\t\t{\"Userinfo\", Type, 0, \"\"},\n\t\t{\"Values\", Type, 0, \"\"},\n\t},\n\t\"os\": {\n\t\t{\"(*File).Chdir\", Method, 0, \"\"},\n\t\t{\"(*File).Chmod\", Method, 0, \"\"},\n\t\t{\"(*File).Chown\", Method, 0, \"\"},\n\t\t{\"(*File).Close\", Method, 0, \"\"},\n\t\t{\"(*File).Fd\", Method, 0, \"\"},\n\t\t{\"(*File).Name\", Method, 0, \"\"},\n\t\t{\"(*File).Read\", Method, 0, \"\"},\n\t\t{\"(*File).ReadAt\", Method, 0, \"\"},\n\t\t{\"(*File).ReadDir\", Method, 16, \"\"},\n\t\t{\"(*File).ReadFrom\", Method, 15, \"\"},\n\t\t{\"(*File).Readdir\", Method, 0, \"\"},\n\t\t{\"(*File).Readdirnames\", Method, 0, \"\"},\n\t\t{\"(*File).Seek\", Method, 0, \"\"},\n\t\t{\"(*File).SetDeadline\", Method, 10, \"\"},\n\t\t{\"(*File).SetReadDeadline\", Method, 10, \"\"},\n\t\t{\"(*File).SetWriteDeadline\", Method, 10, \"\"},\n\t\t{\"(*File).Stat\", Method, 0, \"\"},\n\t\t{\"(*File).Sync\", Method, 0, \"\"},\n\t\t{\"(*File).SyscallConn\", Method, 12, \"\"},\n\t\t{\"(*File).Truncate\", Method, 0, \"\"},\n\t\t{\"(*File).Write\", Method, 0, \"\"},\n\t\t{\"(*File).WriteAt\", Method, 0, \"\"},\n\t\t{\"(*File).WriteString\", Method, 0, \"\"},\n\t\t{\"(*File).WriteTo\", Method, 22, \"\"},\n\t\t{\"(*LinkError).Error\", Method, 0, \"\"},\n\t\t{\"(*LinkError).Unwrap\", Method, 13, \"\"},\n\t\t{\"(*PathError).Error\", Method, 0, \"\"},\n\t\t{\"(*PathError).Timeout\", Method, 10, \"\"},\n\t\t{\"(*PathError).Unwrap\", Method, 13, \"\"},\n\t\t{\"(*Process).Kill\", Method, 0, \"\"},\n\t\t{\"(*Process).Release\", Method, 0, \"\"},\n\t\t{\"(*Process).Signal\", Method, 0, \"\"},\n\t\t{\"(*Process).Wait\", Method, 0, \"\"},\n\t\t{\"(*Process).WithHandle\", Method, 26, \"\"},\n\t\t{\"(*ProcessState).ExitCode\", Method, 12, \"\"},\n\t\t{\"(*ProcessState).Exited\", Method, 0, \"\"},\n\t\t{\"(*ProcessState).Pid\", Method, 0, \"\"},\n\t\t{\"(*ProcessState).String\", Method, 0, \"\"},\n\t\t{\"(*ProcessState).Success\", Method, 0, \"\"},\n\t\t{\"(*ProcessState).Sys\", Method, 0, \"\"},\n\t\t{\"(*ProcessState).SysUsage\", Method, 0, \"\"},\n\t\t{\"(*ProcessState).SystemTime\", Method, 0, \"\"},\n\t\t{\"(*ProcessState).UserTime\", Method, 0, \"\"},\n\t\t{\"(*Root).Chmod\", Method, 25, \"\"},\n\t\t{\"(*Root).Chown\", Method, 25, \"\"},\n\t\t{\"(*Root).Chtimes\", Method, 25, \"\"},\n\t\t{\"(*Root).Close\", Method, 24, \"\"},\n\t\t{\"(*Root).Create\", Method, 24, \"\"},\n\t\t{\"(*Root).FS\", Method, 24, \"\"},\n\t\t{\"(*Root).Lchown\", Method, 25, \"\"},\n\t\t{\"(*Root).Link\", Method, 25, \"\"},\n\t\t{\"(*Root).Lstat\", Method, 24, \"\"},\n\t\t{\"(*Root).Mkdir\", Method, 24, \"\"},\n\t\t{\"(*Root).MkdirAll\", Method, 25, \"\"},\n\t\t{\"(*Root).Name\", Method, 24, \"\"},\n\t\t{\"(*Root).Open\", Method, 24, \"\"},\n\t\t{\"(*Root).OpenFile\", Method, 24, \"\"},\n\t\t{\"(*Root).OpenRoot\", Method, 24, \"\"},\n\t\t{\"(*Root).ReadFile\", Method, 25, \"\"},\n\t\t{\"(*Root).Readlink\", Method, 25, \"\"},\n\t\t{\"(*Root).Remove\", Method, 24, \"\"},\n\t\t{\"(*Root).RemoveAll\", Method, 25, \"\"},\n\t\t{\"(*Root).Rename\", Method, 25, \"\"},\n\t\t{\"(*Root).Stat\", Method, 24, \"\"},\n\t\t{\"(*Root).Symlink\", Method, 25, \"\"},\n\t\t{\"(*Root).WriteFile\", Method, 25, \"\"},\n\t\t{\"(*SyscallError).Error\", Method, 0, \"\"},\n\t\t{\"(*SyscallError).Timeout\", Method, 10, \"\"},\n\t\t{\"(*SyscallError).Unwrap\", Method, 13, \"\"},\n\t\t{\"(FileInfo).IsDir\", Method, 0, \"\"},\n\t\t{\"(FileInfo).ModTime\", Method, 0, \"\"},\n\t\t{\"(FileInfo).Mode\", Method, 0, \"\"},\n\t\t{\"(FileInfo).Name\", Method, 0, \"\"},\n\t\t{\"(FileInfo).Size\", Method, 0, \"\"},\n\t\t{\"(FileInfo).Sys\", Method, 0, \"\"},\n\t\t{\"(FileMode).IsDir\", Method, 0, \"\"},\n\t\t{\"(FileMode).IsRegular\", Method, 1, \"\"},\n\t\t{\"(FileMode).Perm\", Method, 0, \"\"},\n\t\t{\"(FileMode).String\", Method, 0, \"\"},\n\t\t{\"(Signal).Signal\", Method, 0, \"\"},\n\t\t{\"(Signal).String\", Method, 0, \"\"},\n\t\t{\"Args\", Var, 0, \"\"},\n\t\t{\"Chdir\", Func, 0, \"func(dir string) error\"},\n\t\t{\"Chmod\", Func, 0, \"func(name string, mode FileMode) error\"},\n\t\t{\"Chown\", Func, 0, \"func(name string, uid int, gid int) error\"},\n\t\t{\"Chtimes\", Func, 0, \"func(name string, atime time.Time, mtime time.Time) error\"},\n\t\t{\"Clearenv\", Func, 0, \"func()\"},\n\t\t{\"CopyFS\", Func, 23, \"func(dir string, fsys fs.FS) error\"},\n\t\t{\"Create\", Func, 0, \"func(name string) (*File, error)\"},\n\t\t{\"CreateTemp\", Func, 16, \"func(dir string, pattern string) (*File, error)\"},\n\t\t{\"DevNull\", Const, 0, \"\"},\n\t\t{\"DirEntry\", Type, 16, \"\"},\n\t\t{\"DirFS\", Func, 16, \"func(dir string) fs.FS\"},\n\t\t{\"Environ\", Func, 0, \"func() []string\"},\n\t\t{\"ErrClosed\", Var, 8, \"\"},\n\t\t{\"ErrDeadlineExceeded\", Var, 15, \"\"},\n\t\t{\"ErrExist\", Var, 0, \"\"},\n\t\t{\"ErrInvalid\", Var, 0, \"\"},\n\t\t{\"ErrNoDeadline\", Var, 10, \"\"},\n\t\t{\"ErrNoHandle\", Var, 26, \"\"},\n\t\t{\"ErrNotExist\", Var, 0, \"\"},\n\t\t{\"ErrPermission\", Var, 0, \"\"},\n\t\t{\"ErrProcessDone\", Var, 16, \"\"},\n\t\t{\"Executable\", Func, 8, \"func() (string, error)\"},\n\t\t{\"Exit\", Func, 0, \"func(code int)\"},\n\t\t{\"Expand\", Func, 0, \"func(s string, mapping func(string) string) string\"},\n\t\t{\"ExpandEnv\", Func, 0, \"func(s string) string\"},\n\t\t{\"File\", Type, 0, \"\"},\n\t\t{\"FileInfo\", Type, 0, \"\"},\n\t\t{\"FileMode\", Type, 0, \"\"},\n\t\t{\"FindProcess\", Func, 0, \"func(pid int) (*Process, error)\"},\n\t\t{\"Getegid\", Func, 0, \"func() int\"},\n\t\t{\"Getenv\", Func, 0, \"func(key string) string\"},\n\t\t{\"Geteuid\", Func, 0, \"func() int\"},\n\t\t{\"Getgid\", Func, 0, \"func() int\"},\n\t\t{\"Getgroups\", Func, 0, \"func() ([]int, error)\"},\n\t\t{\"Getpagesize\", Func, 0, \"func() int\"},\n\t\t{\"Getpid\", Func, 0, \"func() int\"},\n\t\t{\"Getppid\", Func, 0, \"func() int\"},\n\t\t{\"Getuid\", Func, 0, \"func() int\"},\n\t\t{\"Getwd\", Func, 0, \"func() (dir string, err error)\"},\n\t\t{\"Hostname\", Func, 0, \"func() (name string, err error)\"},\n\t\t{\"Interrupt\", Var, 0, \"\"},\n\t\t{\"IsExist\", Func, 0, \"func(err error) bool\"},\n\t\t{\"IsNotExist\", Func, 0, \"func(err error) bool\"},\n\t\t{\"IsPathSeparator\", Func, 0, \"func(c uint8) bool\"},\n\t\t{\"IsPermission\", Func, 0, \"func(err error) bool\"},\n\t\t{\"IsTimeout\", Func, 10, \"func(err error) bool\"},\n\t\t{\"Kill\", Var, 0, \"\"},\n\t\t{\"Lchown\", Func, 0, \"func(name string, uid int, gid int) error\"},\n\t\t{\"Link\", Func, 0, \"func(oldname string, newname string) error\"},\n\t\t{\"LinkError\", Type, 0, \"\"},\n\t\t{\"LinkError.Err\", Field, 0, \"\"},\n\t\t{\"LinkError.New\", Field, 0, \"\"},\n\t\t{\"LinkError.Old\", Field, 0, \"\"},\n\t\t{\"LinkError.Op\", Field, 0, \"\"},\n\t\t{\"LookupEnv\", Func, 5, \"func(key string) (string, bool)\"},\n\t\t{\"Lstat\", Func, 0, \"func(name string) (FileInfo, error)\"},\n\t\t{\"Mkdir\", Func, 0, \"func(name string, perm FileMode) error\"},\n\t\t{\"MkdirAll\", Func, 0, \"func(path string, perm FileMode) error\"},\n\t\t{\"MkdirTemp\", Func, 16, \"func(dir string, pattern string) (string, error)\"},\n\t\t{\"ModeAppend\", Const, 0, \"\"},\n\t\t{\"ModeCharDevice\", Const, 0, \"\"},\n\t\t{\"ModeDevice\", Const, 0, \"\"},\n\t\t{\"ModeDir\", Const, 0, \"\"},\n\t\t{\"ModeExclusive\", Const, 0, \"\"},\n\t\t{\"ModeIrregular\", Const, 11, \"\"},\n\t\t{\"ModeNamedPipe\", Const, 0, \"\"},\n\t\t{\"ModePerm\", Const, 0, \"\"},\n\t\t{\"ModeSetgid\", Const, 0, \"\"},\n\t\t{\"ModeSetuid\", Const, 0, \"\"},\n\t\t{\"ModeSocket\", Const, 0, \"\"},\n\t\t{\"ModeSticky\", Const, 0, \"\"},\n\t\t{\"ModeSymlink\", Const, 0, \"\"},\n\t\t{\"ModeTemporary\", Const, 0, \"\"},\n\t\t{\"ModeType\", Const, 0, \"\"},\n\t\t{\"NewFile\", Func, 0, \"func(fd uintptr, name string) *File\"},\n\t\t{\"NewSyscallError\", Func, 0, \"func(syscall string, err error) error\"},\n\t\t{\"O_APPEND\", Const, 0, \"\"},\n\t\t{\"O_CREATE\", Const, 0, \"\"},\n\t\t{\"O_EXCL\", Const, 0, \"\"},\n\t\t{\"O_RDONLY\", Const, 0, \"\"},\n\t\t{\"O_RDWR\", Const, 0, \"\"},\n\t\t{\"O_SYNC\", Const, 0, \"\"},\n\t\t{\"O_TRUNC\", Const, 0, \"\"},\n\t\t{\"O_WRONLY\", Const, 0, \"\"},\n\t\t{\"Open\", Func, 0, \"func(name string) (*File, error)\"},\n\t\t{\"OpenFile\", Func, 0, \"func(name string, flag int, perm FileMode) (*File, error)\"},\n\t\t{\"OpenInRoot\", Func, 24, \"func(dir string, name string) (*File, error)\"},\n\t\t{\"OpenRoot\", Func, 24, \"func(name string) (*Root, error)\"},\n\t\t{\"PathError\", Type, 0, \"\"},\n\t\t{\"PathError.Err\", Field, 0, \"\"},\n\t\t{\"PathError.Op\", Field, 0, \"\"},\n\t\t{\"PathError.Path\", Field, 0, \"\"},\n\t\t{\"PathListSeparator\", Const, 0, \"\"},\n\t\t{\"PathSeparator\", Const, 0, \"\"},\n\t\t{\"Pipe\", Func, 0, \"func() (r *File, w *File, err error)\"},\n\t\t{\"ProcAttr\", Type, 0, \"\"},\n\t\t{\"ProcAttr.Dir\", Field, 0, \"\"},\n\t\t{\"ProcAttr.Env\", Field, 0, \"\"},\n\t\t{\"ProcAttr.Files\", Field, 0, \"\"},\n\t\t{\"ProcAttr.Sys\", Field, 0, \"\"},\n\t\t{\"Process\", Type, 0, \"\"},\n\t\t{\"Process.Pid\", Field, 0, \"\"},\n\t\t{\"ProcessState\", Type, 0, \"\"},\n\t\t{\"ReadDir\", Func, 16, \"func(name string) ([]DirEntry, error)\"},\n\t\t{\"ReadFile\", Func, 16, \"func(name string) ([]byte, error)\"},\n\t\t{\"Readlink\", Func, 0, \"func(name string) (string, error)\"},\n\t\t{\"Remove\", Func, 0, \"func(name string) error\"},\n\t\t{\"RemoveAll\", Func, 0, \"func(path string) error\"},\n\t\t{\"Rename\", Func, 0, \"func(oldpath string, newpath string) error\"},\n\t\t{\"Root\", Type, 24, \"\"},\n\t\t{\"SEEK_CUR\", Const, 0, \"\"},\n\t\t{\"SEEK_END\", Const, 0, \"\"},\n\t\t{\"SEEK_SET\", Const, 0, \"\"},\n\t\t{\"SameFile\", Func, 0, \"func(fi1 FileInfo, fi2 FileInfo) bool\"},\n\t\t{\"Setenv\", Func, 0, \"func(key string, value string) error\"},\n\t\t{\"Signal\", Type, 0, \"\"},\n\t\t{\"StartProcess\", Func, 0, \"func(name string, argv []string, attr *ProcAttr) (*Process, error)\"},\n\t\t{\"Stat\", Func, 0, \"func(name string) (FileInfo, error)\"},\n\t\t{\"Stderr\", Var, 0, \"\"},\n\t\t{\"Stdin\", Var, 0, \"\"},\n\t\t{\"Stdout\", Var, 0, \"\"},\n\t\t{\"Symlink\", Func, 0, \"func(oldname string, newname string) error\"},\n\t\t{\"SyscallError\", Type, 0, \"\"},\n\t\t{\"SyscallError.Err\", Field, 0, \"\"},\n\t\t{\"SyscallError.Syscall\", Field, 0, \"\"},\n\t\t{\"TempDir\", Func, 0, \"func() string\"},\n\t\t{\"Truncate\", Func, 0, \"func(name string, size int64) error\"},\n\t\t{\"Unsetenv\", Func, 4, \"func(key string) error\"},\n\t\t{\"UserCacheDir\", Func, 11, \"func() (string, error)\"},\n\t\t{\"UserConfigDir\", Func, 13, \"func() (string, error)\"},\n\t\t{\"UserHomeDir\", Func, 12, \"func() (string, error)\"},\n\t\t{\"WriteFile\", Func, 16, \"func(name string, data []byte, perm FileMode) error\"},\n\t},\n\t\"os/exec\": {\n\t\t{\"(*Cmd).CombinedOutput\", Method, 0, \"\"},\n\t\t{\"(*Cmd).Environ\", Method, 19, \"\"},\n\t\t{\"(*Cmd).Output\", Method, 0, \"\"},\n\t\t{\"(*Cmd).Run\", Method, 0, \"\"},\n\t\t{\"(*Cmd).Start\", Method, 0, \"\"},\n\t\t{\"(*Cmd).StderrPipe\", Method, 0, \"\"},\n\t\t{\"(*Cmd).StdinPipe\", Method, 0, \"\"},\n\t\t{\"(*Cmd).StdoutPipe\", Method, 0, \"\"},\n\t\t{\"(*Cmd).String\", Method, 13, \"\"},\n\t\t{\"(*Cmd).Wait\", Method, 0, \"\"},\n\t\t{\"(*Error).Error\", Method, 0, \"\"},\n\t\t{\"(*Error).Unwrap\", Method, 13, \"\"},\n\t\t{\"(*ExitError).Error\", Method, 0, \"\"},\n\t\t{\"(ExitError).ExitCode\", Method, 12, \"\"},\n\t\t{\"(ExitError).Exited\", Method, 0, \"\"},\n\t\t{\"(ExitError).Pid\", Method, 0, \"\"},\n\t\t{\"(ExitError).String\", Method, 0, \"\"},\n\t\t{\"(ExitError).Success\", Method, 0, \"\"},\n\t\t{\"(ExitError).Sys\", Method, 0, \"\"},\n\t\t{\"(ExitError).SysUsage\", Method, 0, \"\"},\n\t\t{\"(ExitError).SystemTime\", Method, 0, \"\"},\n\t\t{\"(ExitError).UserTime\", Method, 0, \"\"},\n\t\t{\"Cmd\", Type, 0, \"\"},\n\t\t{\"Cmd.Args\", Field, 0, \"\"},\n\t\t{\"Cmd.Cancel\", Field, 20, \"\"},\n\t\t{\"Cmd.Dir\", Field, 0, \"\"},\n\t\t{\"Cmd.Env\", Field, 0, \"\"},\n\t\t{\"Cmd.Err\", Field, 19, \"\"},\n\t\t{\"Cmd.ExtraFiles\", Field, 0, \"\"},\n\t\t{\"Cmd.Path\", Field, 0, \"\"},\n\t\t{\"Cmd.Process\", Field, 0, \"\"},\n\t\t{\"Cmd.ProcessState\", Field, 0, \"\"},\n\t\t{\"Cmd.Stderr\", Field, 0, \"\"},\n\t\t{\"Cmd.Stdin\", Field, 0, \"\"},\n\t\t{\"Cmd.Stdout\", Field, 0, \"\"},\n\t\t{\"Cmd.SysProcAttr\", Field, 0, \"\"},\n\t\t{\"Cmd.WaitDelay\", Field, 20, \"\"},\n\t\t{\"Command\", Func, 0, \"func(name string, arg ...string) *Cmd\"},\n\t\t{\"CommandContext\", Func, 7, \"func(ctx context.Context, name string, arg ...string) *Cmd\"},\n\t\t{\"ErrDot\", Var, 19, \"\"},\n\t\t{\"ErrNotFound\", Var, 0, \"\"},\n\t\t{\"ErrWaitDelay\", Var, 20, \"\"},\n\t\t{\"Error\", Type, 0, \"\"},\n\t\t{\"Error.Err\", Field, 0, \"\"},\n\t\t{\"Error.Name\", Field, 0, \"\"},\n\t\t{\"ExitError\", Type, 0, \"\"},\n\t\t{\"ExitError.ProcessState\", Field, 0, \"\"},\n\t\t{\"ExitError.Stderr\", Field, 6, \"\"},\n\t\t{\"LookPath\", Func, 0, \"func(file string) (string, error)\"},\n\t},\n\t\"os/signal\": {\n\t\t{\"Ignore\", Func, 5, \"func(sig ...os.Signal)\"},\n\t\t{\"Ignored\", Func, 11, \"func(sig os.Signal) bool\"},\n\t\t{\"Notify\", Func, 0, \"func(c chan<- os.Signal, sig ...os.Signal)\"},\n\t\t{\"NotifyContext\", Func, 16, \"func(parent context.Context, signals ...os.Signal) (ctx context.Context, stop context.CancelFunc)\"},\n\t\t{\"Reset\", Func, 5, \"func(sig ...os.Signal)\"},\n\t\t{\"Stop\", Func, 1, \"func(c chan<- os.Signal)\"},\n\t},\n\t\"os/user\": {\n\t\t{\"(*User).GroupIds\", Method, 7, \"\"},\n\t\t{\"(UnknownGroupError).Error\", Method, 7, \"\"},\n\t\t{\"(UnknownGroupIdError).Error\", Method, 7, \"\"},\n\t\t{\"(UnknownUserError).Error\", Method, 0, \"\"},\n\t\t{\"(UnknownUserIdError).Error\", Method, 0, \"\"},\n\t\t{\"Current\", Func, 0, \"func() (*User, error)\"},\n\t\t{\"Group\", Type, 7, \"\"},\n\t\t{\"Group.Gid\", Field, 7, \"\"},\n\t\t{\"Group.Name\", Field, 7, \"\"},\n\t\t{\"Lookup\", Func, 0, \"func(username string) (*User, error)\"},\n\t\t{\"LookupGroup\", Func, 7, \"func(name string) (*Group, error)\"},\n\t\t{\"LookupGroupId\", Func, 7, \"func(gid string) (*Group, error)\"},\n\t\t{\"LookupId\", Func, 0, \"func(uid string) (*User, error)\"},\n\t\t{\"UnknownGroupError\", Type, 7, \"\"},\n\t\t{\"UnknownGroupIdError\", Type, 7, \"\"},\n\t\t{\"UnknownUserError\", Type, 0, \"\"},\n\t\t{\"UnknownUserIdError\", Type, 0, \"\"},\n\t\t{\"User\", Type, 0, \"\"},\n\t\t{\"User.Gid\", Field, 0, \"\"},\n\t\t{\"User.HomeDir\", Field, 0, \"\"},\n\t\t{\"User.Name\", Field, 0, \"\"},\n\t\t{\"User.Uid\", Field, 0, \"\"},\n\t\t{\"User.Username\", Field, 0, \"\"},\n\t},\n\t\"path\": {\n\t\t{\"Base\", Func, 0, \"func(path string) string\"},\n\t\t{\"Clean\", Func, 0, \"func(path string) string\"},\n\t\t{\"Dir\", Func, 0, \"func(path string) string\"},\n\t\t{\"ErrBadPattern\", Var, 0, \"\"},\n\t\t{\"Ext\", Func, 0, \"func(path string) string\"},\n\t\t{\"IsAbs\", Func, 0, \"func(path string) bool\"},\n\t\t{\"Join\", Func, 0, \"func(elem ...string) string\"},\n\t\t{\"Match\", Func, 0, \"func(pattern string, name string) (matched bool, err error)\"},\n\t\t{\"Split\", Func, 0, \"func(path string) (dir string, file string)\"},\n\t},\n\t\"path/filepath\": {\n\t\t{\"Abs\", Func, 0, \"func(path string) (string, error)\"},\n\t\t{\"Base\", Func, 0, \"func(path string) string\"},\n\t\t{\"Clean\", Func, 0, \"func(path string) string\"},\n\t\t{\"Dir\", Func, 0, \"func(path string) string\"},\n\t\t{\"ErrBadPattern\", Var, 0, \"\"},\n\t\t{\"EvalSymlinks\", Func, 0, \"func(path string) (string, error)\"},\n\t\t{\"Ext\", Func, 0, \"func(path string) string\"},\n\t\t{\"FromSlash\", Func, 0, \"func(path string) string\"},\n\t\t{\"Glob\", Func, 0, \"func(pattern string) (matches []string, err error)\"},\n\t\t{\"HasPrefix\", Func, 0, \"func(p string, prefix string) bool\"},\n\t\t{\"IsAbs\", Func, 0, \"func(path string) bool\"},\n\t\t{\"IsLocal\", Func, 20, \"func(path string) bool\"},\n\t\t{\"Join\", Func, 0, \"func(elem ...string) string\"},\n\t\t{\"ListSeparator\", Const, 0, \"\"},\n\t\t{\"Localize\", Func, 23, \"func(path string) (string, error)\"},\n\t\t{\"Match\", Func, 0, \"func(pattern string, name string) (matched bool, err error)\"},\n\t\t{\"Rel\", Func, 0, \"func(basePath string, targPath string) (string, error)\"},\n\t\t{\"Separator\", Const, 0, \"\"},\n\t\t{\"SkipAll\", Var, 20, \"\"},\n\t\t{\"SkipDir\", Var, 0, \"\"},\n\t\t{\"Split\", Func, 0, \"func(path string) (dir string, file string)\"},\n\t\t{\"SplitList\", Func, 0, \"func(path string) []string\"},\n\t\t{\"ToSlash\", Func, 0, \"func(path string) string\"},\n\t\t{\"VolumeName\", Func, 0, \"func(path string) string\"},\n\t\t{\"Walk\", Func, 0, \"func(root string, fn WalkFunc) error\"},\n\t\t{\"WalkDir\", Func, 16, \"func(root string, fn fs.WalkDirFunc) error\"},\n\t\t{\"WalkFunc\", Type, 0, \"\"},\n\t},\n\t\"plugin\": {\n\t\t{\"(*Plugin).Lookup\", Method, 8, \"\"},\n\t\t{\"Open\", Func, 8, \"func(path string) (*Plugin, error)\"},\n\t\t{\"Plugin\", Type, 8, \"\"},\n\t\t{\"Symbol\", Type, 8, \"\"},\n\t},\n\t\"reflect\": {\n\t\t{\"(*MapIter).Key\", Method, 12, \"\"},\n\t\t{\"(*MapIter).Next\", Method, 12, \"\"},\n\t\t{\"(*MapIter).Reset\", Method, 18, \"\"},\n\t\t{\"(*MapIter).Value\", Method, 12, \"\"},\n\t\t{\"(*ValueError).Error\", Method, 0, \"\"},\n\t\t{\"(ChanDir).String\", Method, 0, \"\"},\n\t\t{\"(Kind).String\", Method, 0, \"\"},\n\t\t{\"(Method).IsExported\", Method, 17, \"\"},\n\t\t{\"(StructField).IsExported\", Method, 17, \"\"},\n\t\t{\"(StructTag).Get\", Method, 0, \"\"},\n\t\t{\"(StructTag).Lookup\", Method, 7, \"\"},\n\t\t{\"(Type).Align\", Method, 0, \"\"},\n\t\t{\"(Type).AssignableTo\", Method, 0, \"\"},\n\t\t{\"(Type).Bits\", Method, 0, \"\"},\n\t\t{\"(Type).CanSeq\", Method, 23, \"\"},\n\t\t{\"(Type).CanSeq2\", Method, 23, \"\"},\n\t\t{\"(Type).ChanDir\", Method, 0, \"\"},\n\t\t{\"(Type).Comparable\", Method, 4, \"\"},\n\t\t{\"(Type).ConvertibleTo\", Method, 1, \"\"},\n\t\t{\"(Type).Elem\", Method, 0, \"\"},\n\t\t{\"(Type).Field\", Method, 0, \"\"},\n\t\t{\"(Type).FieldAlign\", Method, 0, \"\"},\n\t\t{\"(Type).FieldByIndex\", Method, 0, \"\"},\n\t\t{\"(Type).FieldByName\", Method, 0, \"\"},\n\t\t{\"(Type).FieldByNameFunc\", Method, 0, \"\"},\n\t\t{\"(Type).Fields\", Method, 26, \"\"},\n\t\t{\"(Type).Implements\", Method, 0, \"\"},\n\t\t{\"(Type).In\", Method, 0, \"\"},\n\t\t{\"(Type).Ins\", Method, 26, \"\"},\n\t\t{\"(Type).IsVariadic\", Method, 0, \"\"},\n\t\t{\"(Type).Key\", Method, 0, \"\"},\n\t\t{\"(Type).Kind\", Method, 0, \"\"},\n\t\t{\"(Type).Len\", Method, 0, \"\"},\n\t\t{\"(Type).Method\", Method, 0, \"\"},\n\t\t{\"(Type).MethodByName\", Method, 0, \"\"},\n\t\t{\"(Type).Methods\", Method, 26, \"\"},\n\t\t{\"(Type).Name\", Method, 0, \"\"},\n\t\t{\"(Type).NumField\", Method, 0, \"\"},\n\t\t{\"(Type).NumIn\", Method, 0, \"\"},\n\t\t{\"(Type).NumMethod\", Method, 0, \"\"},\n\t\t{\"(Type).NumOut\", Method, 0, \"\"},\n\t\t{\"(Type).Out\", Method, 0, \"\"},\n\t\t{\"(Type).Outs\", Method, 26, \"\"},\n\t\t{\"(Type).OverflowComplex\", Method, 23, \"\"},\n\t\t{\"(Type).OverflowFloat\", Method, 23, \"\"},\n\t\t{\"(Type).OverflowInt\", Method, 23, \"\"},\n\t\t{\"(Type).OverflowUint\", Method, 23, \"\"},\n\t\t{\"(Type).PkgPath\", Method, 0, \"\"},\n\t\t{\"(Type).Size\", Method, 0, \"\"},\n\t\t{\"(Type).String\", Method, 0, \"\"},\n\t\t{\"(Value).Addr\", Method, 0, \"\"},\n\t\t{\"(Value).Bool\", Method, 0, \"\"},\n\t\t{\"(Value).Bytes\", Method, 0, \"\"},\n\t\t{\"(Value).Call\", Method, 0, \"\"},\n\t\t{\"(Value).CallSlice\", Method, 0, \"\"},\n\t\t{\"(Value).CanAddr\", Method, 0, \"\"},\n\t\t{\"(Value).CanComplex\", Method, 18, \"\"},\n\t\t{\"(Value).CanConvert\", Method, 17, \"\"},\n\t\t{\"(Value).CanFloat\", Method, 18, \"\"},\n\t\t{\"(Value).CanInt\", Method, 18, \"\"},\n\t\t{\"(Value).CanInterface\", Method, 0, \"\"},\n\t\t{\"(Value).CanSet\", Method, 0, \"\"},\n\t\t{\"(Value).CanUint\", Method, 18, \"\"},\n\t\t{\"(Value).Cap\", Method, 0, \"\"},\n\t\t{\"(Value).Clear\", Method, 21, \"\"},\n\t\t{\"(Value).Close\", Method, 0, \"\"},\n\t\t{\"(Value).Comparable\", Method, 20, \"\"},\n\t\t{\"(Value).Complex\", Method, 0, \"\"},\n\t\t{\"(Value).Convert\", Method, 1, \"\"},\n\t\t{\"(Value).Elem\", Method, 0, \"\"},\n\t\t{\"(Value).Equal\", Method, 20, \"\"},\n\t\t{\"(Value).Field\", Method, 0, \"\"},\n\t\t{\"(Value).FieldByIndex\", Method, 0, \"\"},\n\t\t{\"(Value).FieldByIndexErr\", Method, 18, \"\"},\n\t\t{\"(Value).FieldByName\", Method, 0, \"\"},\n\t\t{\"(Value).FieldByNameFunc\", Method, 0, \"\"},\n\t\t{\"(Value).Fields\", Method, 26, \"\"},\n\t\t{\"(Value).Float\", Method, 0, \"\"},\n\t\t{\"(Value).Grow\", Method, 20, \"\"},\n\t\t{\"(Value).Index\", Method, 0, \"\"},\n\t\t{\"(Value).Int\", Method, 0, \"\"},\n\t\t{\"(Value).Interface\", Method, 0, \"\"},\n\t\t{\"(Value).InterfaceData\", Method, 0, \"\"},\n\t\t{\"(Value).IsNil\", Method, 0, \"\"},\n\t\t{\"(Value).IsValid\", Method, 0, \"\"},\n\t\t{\"(Value).IsZero\", Method, 13, \"\"},\n\t\t{\"(Value).Kind\", Method, 0, \"\"},\n\t\t{\"(Value).Len\", Method, 0, \"\"},\n\t\t{\"(Value).MapIndex\", Method, 0, \"\"},\n\t\t{\"(Value).MapKeys\", Method, 0, \"\"},\n\t\t{\"(Value).MapRange\", Method, 12, \"\"},\n\t\t{\"(Value).Method\", Method, 0, \"\"},\n\t\t{\"(Value).MethodByName\", Method, 0, \"\"},\n\t\t{\"(Value).Methods\", Method, 26, \"\"},\n\t\t{\"(Value).NumField\", Method, 0, \"\"},\n\t\t{\"(Value).NumMethod\", Method, 0, \"\"},\n\t\t{\"(Value).OverflowComplex\", Method, 0, \"\"},\n\t\t{\"(Value).OverflowFloat\", Method, 0, \"\"},\n\t\t{\"(Value).OverflowInt\", Method, 0, \"\"},\n\t\t{\"(Value).OverflowUint\", Method, 0, \"\"},\n\t\t{\"(Value).Pointer\", Method, 0, \"\"},\n\t\t{\"(Value).Recv\", Method, 0, \"\"},\n\t\t{\"(Value).Send\", Method, 0, \"\"},\n\t\t{\"(Value).Seq\", Method, 23, \"\"},\n\t\t{\"(Value).Seq2\", Method, 23, \"\"},\n\t\t{\"(Value).Set\", Method, 0, \"\"},\n\t\t{\"(Value).SetBool\", Method, 0, \"\"},\n\t\t{\"(Value).SetBytes\", Method, 0, \"\"},\n\t\t{\"(Value).SetCap\", Method, 2, \"\"},\n\t\t{\"(Value).SetComplex\", Method, 0, \"\"},\n\t\t{\"(Value).SetFloat\", Method, 0, \"\"},\n\t\t{\"(Value).SetInt\", Method, 0, \"\"},\n\t\t{\"(Value).SetIterKey\", Method, 18, \"\"},\n\t\t{\"(Value).SetIterValue\", Method, 18, \"\"},\n\t\t{\"(Value).SetLen\", Method, 0, \"\"},\n\t\t{\"(Value).SetMapIndex\", Method, 0, \"\"},\n\t\t{\"(Value).SetPointer\", Method, 0, \"\"},\n\t\t{\"(Value).SetString\", Method, 0, \"\"},\n\t\t{\"(Value).SetUint\", Method, 0, \"\"},\n\t\t{\"(Value).SetZero\", Method, 20, \"\"},\n\t\t{\"(Value).Slice\", Method, 0, \"\"},\n\t\t{\"(Value).Slice3\", Method, 2, \"\"},\n\t\t{\"(Value).String\", Method, 0, \"\"},\n\t\t{\"(Value).TryRecv\", Method, 0, \"\"},\n\t\t{\"(Value).TrySend\", Method, 0, \"\"},\n\t\t{\"(Value).Type\", Method, 0, \"\"},\n\t\t{\"(Value).Uint\", Method, 0, \"\"},\n\t\t{\"(Value).UnsafeAddr\", Method, 0, \"\"},\n\t\t{\"(Value).UnsafePointer\", Method, 18, \"\"},\n\t\t{\"Append\", Func, 0, \"func(s Value, x ...Value) Value\"},\n\t\t{\"AppendSlice\", Func, 0, \"func(s Value, t Value) Value\"},\n\t\t{\"Array\", Const, 0, \"\"},\n\t\t{\"ArrayOf\", Func, 5, \"func(length int, elem Type) Type\"},\n\t\t{\"Bool\", Const, 0, \"\"},\n\t\t{\"BothDir\", Const, 0, \"\"},\n\t\t{\"Chan\", Const, 0, \"\"},\n\t\t{\"ChanDir\", Type, 0, \"\"},\n\t\t{\"ChanOf\", Func, 1, \"func(dir ChanDir, t Type) Type\"},\n\t\t{\"Complex128\", Const, 0, \"\"},\n\t\t{\"Complex64\", Const, 0, \"\"},\n\t\t{\"Copy\", Func, 0, \"func(dst Value, src Value) int\"},\n\t\t{\"DeepEqual\", Func, 0, \"func(x any, y any) bool\"},\n\t\t{\"Float32\", Const, 0, \"\"},\n\t\t{\"Float64\", Const, 0, \"\"},\n\t\t{\"Func\", Const, 0, \"\"},\n\t\t{\"FuncOf\", Func, 5, \"func(in []Type, out []Type, variadic bool) Type\"},\n\t\t{\"Indirect\", Func, 0, \"func(v Value) Value\"},\n\t\t{\"Int\", Const, 0, \"\"},\n\t\t{\"Int16\", Const, 0, \"\"},\n\t\t{\"Int32\", Const, 0, \"\"},\n\t\t{\"Int64\", Const, 0, \"\"},\n\t\t{\"Int8\", Const, 0, \"\"},\n\t\t{\"Interface\", Const, 0, \"\"},\n\t\t{\"Invalid\", Const, 0, \"\"},\n\t\t{\"Kind\", Type, 0, \"\"},\n\t\t{\"MakeChan\", Func, 0, \"func(typ Type, buffer int) Value\"},\n\t\t{\"MakeFunc\", Func, 1, \"func(typ Type, fn func(args []Value) (results []Value)) Value\"},\n\t\t{\"MakeMap\", Func, 0, \"func(typ Type) Value\"},\n\t\t{\"MakeMapWithSize\", Func, 9, \"func(typ Type, n int) Value\"},\n\t\t{\"MakeSlice\", Func, 0, \"func(typ Type, len int, cap int) Value\"},\n\t\t{\"Map\", Const, 0, \"\"},\n\t\t{\"MapIter\", Type, 12, \"\"},\n\t\t{\"MapOf\", Func, 1, \"func(key Type, elem Type) Type\"},\n\t\t{\"Method\", Type, 0, \"\"},\n\t\t{\"Method.Func\", Field, 0, \"\"},\n\t\t{\"Method.Index\", Field, 0, \"\"},\n\t\t{\"Method.Name\", Field, 0, \"\"},\n\t\t{\"Method.PkgPath\", Field, 0, \"\"},\n\t\t{\"Method.Type\", Field, 0, \"\"},\n\t\t{\"New\", Func, 0, \"func(typ Type) Value\"},\n\t\t{\"NewAt\", Func, 0, \"func(typ Type, p unsafe.Pointer) Value\"},\n\t\t{\"Pointer\", Const, 18, \"\"},\n\t\t{\"PointerTo\", Func, 18, \"func(t Type) Type\"},\n\t\t{\"Ptr\", Const, 0, \"\"},\n\t\t{\"PtrTo\", Func, 0, \"func(t Type) Type\"},\n\t\t{\"RecvDir\", Const, 0, \"\"},\n\t\t{\"Select\", Func, 1, \"func(cases []SelectCase) (chosen int, recv Value, recvOK bool)\"},\n\t\t{\"SelectCase\", Type, 1, \"\"},\n\t\t{\"SelectCase.Chan\", Field, 1, \"\"},\n\t\t{\"SelectCase.Dir\", Field, 1, \"\"},\n\t\t{\"SelectCase.Send\", Field, 1, \"\"},\n\t\t{\"SelectDefault\", Const, 1, \"\"},\n\t\t{\"SelectDir\", Type, 1, \"\"},\n\t\t{\"SelectRecv\", Const, 1, \"\"},\n\t\t{\"SelectSend\", Const, 1, \"\"},\n\t\t{\"SendDir\", Const, 0, \"\"},\n\t\t{\"Slice\", Const, 0, \"\"},\n\t\t{\"SliceAt\", Func, 23, \"func(typ Type, p unsafe.Pointer, n int) Value\"},\n\t\t{\"SliceHeader\", Type, 0, \"\"},\n\t\t{\"SliceHeader.Cap\", Field, 0, \"\"},\n\t\t{\"SliceHeader.Data\", Field, 0, \"\"},\n\t\t{\"SliceHeader.Len\", Field, 0, \"\"},\n\t\t{\"SliceOf\", Func, 1, \"func(t Type) Type\"},\n\t\t{\"String\", Const, 0, \"\"},\n\t\t{\"StringHeader\", Type, 0, \"\"},\n\t\t{\"StringHeader.Data\", Field, 0, \"\"},\n\t\t{\"StringHeader.Len\", Field, 0, \"\"},\n\t\t{\"Struct\", Const, 0, \"\"},\n\t\t{\"StructField\", Type, 0, \"\"},\n\t\t{\"StructField.Anonymous\", Field, 0, \"\"},\n\t\t{\"StructField.Index\", Field, 0, \"\"},\n\t\t{\"StructField.Name\", Field, 0, \"\"},\n\t\t{\"StructField.Offset\", Field, 0, \"\"},\n\t\t{\"StructField.PkgPath\", Field, 0, \"\"},\n\t\t{\"StructField.Tag\", Field, 0, \"\"},\n\t\t{\"StructField.Type\", Field, 0, \"\"},\n\t\t{\"StructOf\", Func, 7, \"func(fields []StructField) Type\"},\n\t\t{\"StructTag\", Type, 0, \"\"},\n\t\t{\"Swapper\", Func, 8, \"func(slice any) func(i int, j int)\"},\n\t\t{\"TypeAssert\", Func, 25, \"func[T any](v Value) (T, bool)\"},\n\t\t{\"TypeFor\", Func, 22, \"func[T any]() Type\"},\n\t\t{\"TypeOf\", Func, 0, \"func(i any) Type\"},\n\t\t{\"Uint\", Const, 0, \"\"},\n\t\t{\"Uint16\", Const, 0, \"\"},\n\t\t{\"Uint32\", Const, 0, \"\"},\n\t\t{\"Uint64\", Const, 0, \"\"},\n\t\t{\"Uint8\", Const, 0, \"\"},\n\t\t{\"Uintptr\", Const, 0, \"\"},\n\t\t{\"UnsafePointer\", Const, 0, \"\"},\n\t\t{\"Value\", Type, 0, \"\"},\n\t\t{\"ValueError\", Type, 0, \"\"},\n\t\t{\"ValueError.Kind\", Field, 0, \"\"},\n\t\t{\"ValueError.Method\", Field, 0, \"\"},\n\t\t{\"ValueOf\", Func, 0, \"func(i any) Value\"},\n\t\t{\"VisibleFields\", Func, 17, \"func(t Type) []StructField\"},\n\t\t{\"Zero\", Func, 0, \"func(typ Type) Value\"},\n\t},\n\t\"regexp\": {\n\t\t{\"(*Regexp).AppendText\", Method, 24, \"\"},\n\t\t{\"(*Regexp).Copy\", Method, 6, \"\"},\n\t\t{\"(*Regexp).Expand\", Method, 0, \"\"},\n\t\t{\"(*Regexp).ExpandString\", Method, 0, \"\"},\n\t\t{\"(*Regexp).Find\", Method, 0, \"\"},\n\t\t{\"(*Regexp).FindAll\", Method, 0, \"\"},\n\t\t{\"(*Regexp).FindAllIndex\", Method, 0, \"\"},\n\t\t{\"(*Regexp).FindAllString\", Method, 0, \"\"},\n\t\t{\"(*Regexp).FindAllStringIndex\", Method, 0, \"\"},\n\t\t{\"(*Regexp).FindAllStringSubmatch\", Method, 0, \"\"},\n\t\t{\"(*Regexp).FindAllStringSubmatchIndex\", Method, 0, \"\"},\n\t\t{\"(*Regexp).FindAllSubmatch\", Method, 0, \"\"},\n\t\t{\"(*Regexp).FindAllSubmatchIndex\", Method, 0, \"\"},\n\t\t{\"(*Regexp).FindIndex\", Method, 0, \"\"},\n\t\t{\"(*Regexp).FindReaderIndex\", Method, 0, \"\"},\n\t\t{\"(*Regexp).FindReaderSubmatchIndex\", Method, 0, \"\"},\n\t\t{\"(*Regexp).FindString\", Method, 0, \"\"},\n\t\t{\"(*Regexp).FindStringIndex\", Method, 0, \"\"},\n\t\t{\"(*Regexp).FindStringSubmatch\", Method, 0, \"\"},\n\t\t{\"(*Regexp).FindStringSubmatchIndex\", Method, 0, \"\"},\n\t\t{\"(*Regexp).FindSubmatch\", Method, 0, \"\"},\n\t\t{\"(*Regexp).FindSubmatchIndex\", Method, 0, \"\"},\n\t\t{\"(*Regexp).LiteralPrefix\", Method, 0, \"\"},\n\t\t{\"(*Regexp).Longest\", Method, 1, \"\"},\n\t\t{\"(*Regexp).MarshalText\", Method, 21, \"\"},\n\t\t{\"(*Regexp).Match\", Method, 0, \"\"},\n\t\t{\"(*Regexp).MatchReader\", Method, 0, \"\"},\n\t\t{\"(*Regexp).MatchString\", Method, 0, \"\"},\n\t\t{\"(*Regexp).NumSubexp\", Method, 0, \"\"},\n\t\t{\"(*Regexp).ReplaceAll\", Method, 0, \"\"},\n\t\t{\"(*Regexp).ReplaceAllFunc\", Method, 0, \"\"},\n\t\t{\"(*Regexp).ReplaceAllLiteral\", Method, 0, \"\"},\n\t\t{\"(*Regexp).ReplaceAllLiteralString\", Method, 0, \"\"},\n\t\t{\"(*Regexp).ReplaceAllString\", Method, 0, \"\"},\n\t\t{\"(*Regexp).ReplaceAllStringFunc\", Method, 0, \"\"},\n\t\t{\"(*Regexp).Split\", Method, 1, \"\"},\n\t\t{\"(*Regexp).String\", Method, 0, \"\"},\n\t\t{\"(*Regexp).SubexpIndex\", Method, 15, \"\"},\n\t\t{\"(*Regexp).SubexpNames\", Method, 0, \"\"},\n\t\t{\"(*Regexp).UnmarshalText\", Method, 21, \"\"},\n\t\t{\"Compile\", Func, 0, \"func(expr string) (*Regexp, error)\"},\n\t\t{\"CompilePOSIX\", Func, 0, \"func(expr string) (*Regexp, error)\"},\n\t\t{\"Match\", Func, 0, \"func(pattern string, b []byte) (matched bool, err error)\"},\n\t\t{\"MatchReader\", Func, 0, \"func(pattern string, r io.RuneReader) (matched bool, err error)\"},\n\t\t{\"MatchString\", Func, 0, \"func(pattern string, s string) (matched bool, err error)\"},\n\t\t{\"MustCompile\", Func, 0, \"func(str string) *Regexp\"},\n\t\t{\"MustCompilePOSIX\", Func, 0, \"func(str string) *Regexp\"},\n\t\t{\"QuoteMeta\", Func, 0, \"func(s string) string\"},\n\t\t{\"Regexp\", Type, 0, \"\"},\n\t},\n\t\"regexp/syntax\": {\n\t\t{\"(*Error).Error\", Method, 0, \"\"},\n\t\t{\"(*Inst).MatchEmptyWidth\", Method, 0, \"\"},\n\t\t{\"(*Inst).MatchRune\", Method, 0, \"\"},\n\t\t{\"(*Inst).MatchRunePos\", Method, 3, \"\"},\n\t\t{\"(*Inst).String\", Method, 0, \"\"},\n\t\t{\"(*Prog).Prefix\", Method, 0, \"\"},\n\t\t{\"(*Prog).StartCond\", Method, 0, \"\"},\n\t\t{\"(*Prog).String\", Method, 0, \"\"},\n\t\t{\"(*Regexp).CapNames\", Method, 0, \"\"},\n\t\t{\"(*Regexp).Equal\", Method, 0, \"\"},\n\t\t{\"(*Regexp).MaxCap\", Method, 0, \"\"},\n\t\t{\"(*Regexp).Simplify\", Method, 0, \"\"},\n\t\t{\"(*Regexp).String\", Method, 0, \"\"},\n\t\t{\"(ErrorCode).String\", Method, 0, \"\"},\n\t\t{\"(InstOp).String\", Method, 3, \"\"},\n\t\t{\"(Op).String\", Method, 11, \"\"},\n\t\t{\"ClassNL\", Const, 0, \"\"},\n\t\t{\"Compile\", Func, 0, \"func(re *Regexp) (*Prog, error)\"},\n\t\t{\"DotNL\", Const, 0, \"\"},\n\t\t{\"EmptyBeginLine\", Const, 0, \"\"},\n\t\t{\"EmptyBeginText\", Const, 0, \"\"},\n\t\t{\"EmptyEndLine\", Const, 0, \"\"},\n\t\t{\"EmptyEndText\", Const, 0, \"\"},\n\t\t{\"EmptyNoWordBoundary\", Const, 0, \"\"},\n\t\t{\"EmptyOp\", Type, 0, \"\"},\n\t\t{\"EmptyOpContext\", Func, 0, \"func(r1 rune, r2 rune) EmptyOp\"},\n\t\t{\"EmptyWordBoundary\", Const, 0, \"\"},\n\t\t{\"ErrInternalError\", Const, 0, \"\"},\n\t\t{\"ErrInvalidCharClass\", Const, 0, \"\"},\n\t\t{\"ErrInvalidCharRange\", Const, 0, \"\"},\n\t\t{\"ErrInvalidEscape\", Const, 0, \"\"},\n\t\t{\"ErrInvalidNamedCapture\", Const, 0, \"\"},\n\t\t{\"ErrInvalidPerlOp\", Const, 0, \"\"},\n\t\t{\"ErrInvalidRepeatOp\", Const, 0, \"\"},\n\t\t{\"ErrInvalidRepeatSize\", Const, 0, \"\"},\n\t\t{\"ErrInvalidUTF8\", Const, 0, \"\"},\n\t\t{\"ErrLarge\", Const, 20, \"\"},\n\t\t{\"ErrMissingBracket\", Const, 0, \"\"},\n\t\t{\"ErrMissingParen\", Const, 0, \"\"},\n\t\t{\"ErrMissingRepeatArgument\", Const, 0, \"\"},\n\t\t{\"ErrNestingDepth\", Const, 19, \"\"},\n\t\t{\"ErrTrailingBackslash\", Const, 0, \"\"},\n\t\t{\"ErrUnexpectedParen\", Const, 1, \"\"},\n\t\t{\"Error\", Type, 0, \"\"},\n\t\t{\"Error.Code\", Field, 0, \"\"},\n\t\t{\"Error.Expr\", Field, 0, \"\"},\n\t\t{\"ErrorCode\", Type, 0, \"\"},\n\t\t{\"Flags\", Type, 0, \"\"},\n\t\t{\"FoldCase\", Const, 0, \"\"},\n\t\t{\"Inst\", Type, 0, \"\"},\n\t\t{\"Inst.Arg\", Field, 0, \"\"},\n\t\t{\"Inst.Op\", Field, 0, \"\"},\n\t\t{\"Inst.Out\", Field, 0, \"\"},\n\t\t{\"Inst.Rune\", Field, 0, \"\"},\n\t\t{\"InstAlt\", Const, 0, \"\"},\n\t\t{\"InstAltMatch\", Const, 0, \"\"},\n\t\t{\"InstCapture\", Const, 0, \"\"},\n\t\t{\"InstEmptyWidth\", Const, 0, \"\"},\n\t\t{\"InstFail\", Const, 0, \"\"},\n\t\t{\"InstMatch\", Const, 0, \"\"},\n\t\t{\"InstNop\", Const, 0, \"\"},\n\t\t{\"InstOp\", Type, 0, \"\"},\n\t\t{\"InstRune\", Const, 0, \"\"},\n\t\t{\"InstRune1\", Const, 0, \"\"},\n\t\t{\"InstRuneAny\", Const, 0, \"\"},\n\t\t{\"InstRuneAnyNotNL\", Const, 0, \"\"},\n\t\t{\"IsWordChar\", Func, 0, \"func(r rune) bool\"},\n\t\t{\"Literal\", Const, 0, \"\"},\n\t\t{\"MatchNL\", Const, 0, \"\"},\n\t\t{\"NonGreedy\", Const, 0, \"\"},\n\t\t{\"OneLine\", Const, 0, \"\"},\n\t\t{\"Op\", Type, 0, \"\"},\n\t\t{\"OpAlternate\", Const, 0, \"\"},\n\t\t{\"OpAnyChar\", Const, 0, \"\"},\n\t\t{\"OpAnyCharNotNL\", Const, 0, \"\"},\n\t\t{\"OpBeginLine\", Const, 0, \"\"},\n\t\t{\"OpBeginText\", Const, 0, \"\"},\n\t\t{\"OpCapture\", Const, 0, \"\"},\n\t\t{\"OpCharClass\", Const, 0, \"\"},\n\t\t{\"OpConcat\", Const, 0, \"\"},\n\t\t{\"OpEmptyMatch\", Const, 0, \"\"},\n\t\t{\"OpEndLine\", Const, 0, \"\"},\n\t\t{\"OpEndText\", Const, 0, \"\"},\n\t\t{\"OpLiteral\", Const, 0, \"\"},\n\t\t{\"OpNoMatch\", Const, 0, \"\"},\n\t\t{\"OpNoWordBoundary\", Const, 0, \"\"},\n\t\t{\"OpPlus\", Const, 0, \"\"},\n\t\t{\"OpQuest\", Const, 0, \"\"},\n\t\t{\"OpRepeat\", Const, 0, \"\"},\n\t\t{\"OpStar\", Const, 0, \"\"},\n\t\t{\"OpWordBoundary\", Const, 0, \"\"},\n\t\t{\"POSIX\", Const, 0, \"\"},\n\t\t{\"Parse\", Func, 0, \"func(s string, flags Flags) (*Regexp, error)\"},\n\t\t{\"Perl\", Const, 0, \"\"},\n\t\t{\"PerlX\", Const, 0, \"\"},\n\t\t{\"Prog\", Type, 0, \"\"},\n\t\t{\"Prog.Inst\", Field, 0, \"\"},\n\t\t{\"Prog.NumCap\", Field, 0, \"\"},\n\t\t{\"Prog.Start\", Field, 0, \"\"},\n\t\t{\"Regexp\", Type, 0, \"\"},\n\t\t{\"Regexp.Cap\", Field, 0, \"\"},\n\t\t{\"Regexp.Flags\", Field, 0, \"\"},\n\t\t{\"Regexp.Max\", Field, 0, \"\"},\n\t\t{\"Regexp.Min\", Field, 0, \"\"},\n\t\t{\"Regexp.Name\", Field, 0, \"\"},\n\t\t{\"Regexp.Op\", Field, 0, \"\"},\n\t\t{\"Regexp.Rune\", Field, 0, \"\"},\n\t\t{\"Regexp.Rune0\", Field, 0, \"\"},\n\t\t{\"Regexp.Sub\", Field, 0, \"\"},\n\t\t{\"Regexp.Sub0\", Field, 0, \"\"},\n\t\t{\"Simple\", Const, 0, \"\"},\n\t\t{\"UnicodeGroups\", Const, 0, \"\"},\n\t\t{\"WasDollar\", Const, 0, \"\"},\n\t},\n\t\"runtime\": {\n\t\t{\"(*BlockProfileRecord).Stack\", Method, 1, \"\"},\n\t\t{\"(*Frames).Next\", Method, 7, \"\"},\n\t\t{\"(*Func).Entry\", Method, 0, \"\"},\n\t\t{\"(*Func).FileLine\", Method, 0, \"\"},\n\t\t{\"(*Func).Name\", Method, 0, \"\"},\n\t\t{\"(*MemProfileRecord).InUseBytes\", Method, 0, \"\"},\n\t\t{\"(*MemProfileRecord).InUseObjects\", Method, 0, \"\"},\n\t\t{\"(*MemProfileRecord).Stack\", Method, 0, \"\"},\n\t\t{\"(*PanicNilError).Error\", Method, 21, \"\"},\n\t\t{\"(*PanicNilError).RuntimeError\", Method, 21, \"\"},\n\t\t{\"(*Pinner).Pin\", Method, 21, \"\"},\n\t\t{\"(*Pinner).Unpin\", Method, 21, \"\"},\n\t\t{\"(*StackRecord).Stack\", Method, 0, \"\"},\n\t\t{\"(*TypeAssertionError).Error\", Method, 0, \"\"},\n\t\t{\"(*TypeAssertionError).RuntimeError\", Method, 0, \"\"},\n\t\t{\"(Cleanup).Stop\", Method, 24, \"\"},\n\t\t{\"(Error).Error\", Method, 0, \"\"},\n\t\t{\"(Error).RuntimeError\", Method, 0, \"\"},\n\t\t{\"AddCleanup\", Func, 24, \"func[T, S any](ptr *T, cleanup func(S), arg S) Cleanup\"},\n\t\t{\"BlockProfile\", Func, 1, \"func(p []BlockProfileRecord) (n int, ok bool)\"},\n\t\t{\"BlockProfileRecord\", Type, 1, \"\"},\n\t\t{\"BlockProfileRecord.Count\", Field, 1, \"\"},\n\t\t{\"BlockProfileRecord.Cycles\", Field, 1, \"\"},\n\t\t{\"BlockProfileRecord.StackRecord\", Field, 1, \"\"},\n\t\t{\"Breakpoint\", Func, 0, \"func()\"},\n\t\t{\"CPUProfile\", Func, 0, \"func() []byte\"},\n\t\t{\"Caller\", Func, 0, \"func(skip int) (pc uintptr, file string, line int, ok bool)\"},\n\t\t{\"Callers\", Func, 0, \"func(skip int, pc []uintptr) int\"},\n\t\t{\"CallersFrames\", Func, 7, \"func(callers []uintptr) *Frames\"},\n\t\t{\"Cleanup\", Type, 24, \"\"},\n\t\t{\"Compiler\", Const, 0, \"\"},\n\t\t{\"Error\", Type, 0, \"\"},\n\t\t{\"Frame\", Type, 7, \"\"},\n\t\t{\"Frame.Entry\", Field, 7, \"\"},\n\t\t{\"Frame.File\", Field, 7, \"\"},\n\t\t{\"Frame.Func\", Field, 7, \"\"},\n\t\t{\"Frame.Function\", Field, 7, \"\"},\n\t\t{\"Frame.Line\", Field, 7, \"\"},\n\t\t{\"Frame.PC\", Field, 7, \"\"},\n\t\t{\"Frames\", Type, 7, \"\"},\n\t\t{\"Func\", Type, 0, \"\"},\n\t\t{\"FuncForPC\", Func, 0, \"func(pc uintptr) *Func\"},\n\t\t{\"GC\", Func, 0, \"func()\"},\n\t\t{\"GOARCH\", Const, 0, \"\"},\n\t\t{\"GOMAXPROCS\", Func, 0, \"func(n int) int\"},\n\t\t{\"GOOS\", Const, 0, \"\"},\n\t\t{\"GOROOT\", Func, 0, \"func() string\"},\n\t\t{\"Goexit\", Func, 0, \"func()\"},\n\t\t{\"GoroutineProfile\", Func, 0, \"func(p []StackRecord) (n int, ok bool)\"},\n\t\t{\"Gosched\", Func, 0, \"func()\"},\n\t\t{\"KeepAlive\", Func, 7, \"func(x any)\"},\n\t\t{\"LockOSThread\", Func, 0, \"func()\"},\n\t\t{\"MemProfile\", Func, 0, \"func(p []MemProfileRecord, inuseZero bool) (n int, ok bool)\"},\n\t\t{\"MemProfileRate\", Var, 0, \"\"},\n\t\t{\"MemProfileRecord\", Type, 0, \"\"},\n\t\t{\"MemProfileRecord.AllocBytes\", Field, 0, \"\"},\n\t\t{\"MemProfileRecord.AllocObjects\", Field, 0, \"\"},\n\t\t{\"MemProfileRecord.FreeBytes\", Field, 0, \"\"},\n\t\t{\"MemProfileRecord.FreeObjects\", Field, 0, \"\"},\n\t\t{\"MemProfileRecord.Stack0\", Field, 0, \"\"},\n\t\t{\"MemStats\", Type, 0, \"\"},\n\t\t{\"MemStats.Alloc\", Field, 0, \"\"},\n\t\t{\"MemStats.BuckHashSys\", Field, 0, \"\"},\n\t\t{\"MemStats.BySize\", Field, 0, \"\"},\n\t\t{\"MemStats.DebugGC\", Field, 0, \"\"},\n\t\t{\"MemStats.EnableGC\", Field, 0, \"\"},\n\t\t{\"MemStats.Frees\", Field, 0, \"\"},\n\t\t{\"MemStats.GCCPUFraction\", Field, 5, \"\"},\n\t\t{\"MemStats.GCSys\", Field, 2, \"\"},\n\t\t{\"MemStats.HeapAlloc\", Field, 0, \"\"},\n\t\t{\"MemStats.HeapIdle\", Field, 0, \"\"},\n\t\t{\"MemStats.HeapInuse\", Field, 0, \"\"},\n\t\t{\"MemStats.HeapObjects\", Field, 0, \"\"},\n\t\t{\"MemStats.HeapReleased\", Field, 0, \"\"},\n\t\t{\"MemStats.HeapSys\", Field, 0, \"\"},\n\t\t{\"MemStats.LastGC\", Field, 0, \"\"},\n\t\t{\"MemStats.Lookups\", Field, 0, \"\"},\n\t\t{\"MemStats.MCacheInuse\", Field, 0, \"\"},\n\t\t{\"MemStats.MCacheSys\", Field, 0, \"\"},\n\t\t{\"MemStats.MSpanInuse\", Field, 0, \"\"},\n\t\t{\"MemStats.MSpanSys\", Field, 0, \"\"},\n\t\t{\"MemStats.Mallocs\", Field, 0, \"\"},\n\t\t{\"MemStats.NextGC\", Field, 0, \"\"},\n\t\t{\"MemStats.NumForcedGC\", Field, 8, \"\"},\n\t\t{\"MemStats.NumGC\", Field, 0, \"\"},\n\t\t{\"MemStats.OtherSys\", Field, 2, \"\"},\n\t\t{\"MemStats.PauseEnd\", Field, 4, \"\"},\n\t\t{\"MemStats.PauseNs\", Field, 0, \"\"},\n\t\t{\"MemStats.PauseTotalNs\", Field, 0, \"\"},\n\t\t{\"MemStats.StackInuse\", Field, 0, \"\"},\n\t\t{\"MemStats.StackSys\", Field, 0, \"\"},\n\t\t{\"MemStats.Sys\", Field, 0, \"\"},\n\t\t{\"MemStats.TotalAlloc\", Field, 0, \"\"},\n\t\t{\"MutexProfile\", Func, 8, \"func(p []BlockProfileRecord) (n int, ok bool)\"},\n\t\t{\"NumCPU\", Func, 0, \"func() int\"},\n\t\t{\"NumCgoCall\", Func, 0, \"func() int64\"},\n\t\t{\"NumGoroutine\", Func, 0, \"func() int\"},\n\t\t{\"PanicNilError\", Type, 21, \"\"},\n\t\t{\"Pinner\", Type, 21, \"\"},\n\t\t{\"ReadMemStats\", Func, 0, \"func(m *MemStats)\"},\n\t\t{\"ReadTrace\", Func, 5, \"func() (buf []byte)\"},\n\t\t{\"SetBlockProfileRate\", Func, 1, \"func(rate int)\"},\n\t\t{\"SetCPUProfileRate\", Func, 0, \"func(hz int)\"},\n\t\t{\"SetCgoTraceback\", Func, 7, \"func(version int, traceback unsafe.Pointer, context unsafe.Pointer, symbolizer unsafe.Pointer)\"},\n\t\t{\"SetDefaultGOMAXPROCS\", Func, 25, \"func()\"},\n\t\t{\"SetFinalizer\", Func, 0, \"func(obj any, finalizer any)\"},\n\t\t{\"SetMutexProfileFraction\", Func, 8, \"func(rate int) int\"},\n\t\t{\"Stack\", Func, 0, \"func(buf []byte, all bool) int\"},\n\t\t{\"StackRecord\", Type, 0, \"\"},\n\t\t{\"StackRecord.Stack0\", Field, 0, \"\"},\n\t\t{\"StartTrace\", Func, 5, \"func() error\"},\n\t\t{\"StopTrace\", Func, 5, \"func()\"},\n\t\t{\"ThreadCreateProfile\", Func, 0, \"func(p []StackRecord) (n int, ok bool)\"},\n\t\t{\"TypeAssertionError\", Type, 0, \"\"},\n\t\t{\"UnlockOSThread\", Func, 0, \"func()\"},\n\t\t{\"Version\", Func, 0, \"func() string\"},\n\t},\n\t\"runtime/cgo\": {\n\t\t{\"(Handle).Delete\", Method, 17, \"\"},\n\t\t{\"(Handle).Value\", Method, 17, \"\"},\n\t\t{\"Handle\", Type, 17, \"\"},\n\t\t{\"Incomplete\", Type, 20, \"\"},\n\t\t{\"NewHandle\", Func, 17, \"\"},\n\t},\n\t\"runtime/coverage\": {\n\t\t{\"ClearCounters\", Func, 20, \"func() error\"},\n\t\t{\"WriteCounters\", Func, 20, \"func(w io.Writer) error\"},\n\t\t{\"WriteCountersDir\", Func, 20, \"func(dir string) error\"},\n\t\t{\"WriteMeta\", Func, 20, \"func(w io.Writer) error\"},\n\t\t{\"WriteMetaDir\", Func, 20, \"func(dir string) error\"},\n\t},\n\t\"runtime/debug\": {\n\t\t{\"(*BuildInfo).String\", Method, 18, \"\"},\n\t\t{\"BuildInfo\", Type, 12, \"\"},\n\t\t{\"BuildInfo.Deps\", Field, 12, \"\"},\n\t\t{\"BuildInfo.GoVersion\", Field, 18, \"\"},\n\t\t{\"BuildInfo.Main\", Field, 12, \"\"},\n\t\t{\"BuildInfo.Path\", Field, 12, \"\"},\n\t\t{\"BuildInfo.Settings\", Field, 18, \"\"},\n\t\t{\"BuildSetting\", Type, 18, \"\"},\n\t\t{\"BuildSetting.Key\", Field, 18, \"\"},\n\t\t{\"BuildSetting.Value\", Field, 18, \"\"},\n\t\t{\"CrashOptions\", Type, 23, \"\"},\n\t\t{\"FreeOSMemory\", Func, 1, \"func()\"},\n\t\t{\"GCStats\", Type, 1, \"\"},\n\t\t{\"GCStats.LastGC\", Field, 1, \"\"},\n\t\t{\"GCStats.NumGC\", Field, 1, \"\"},\n\t\t{\"GCStats.Pause\", Field, 1, \"\"},\n\t\t{\"GCStats.PauseEnd\", Field, 4, \"\"},\n\t\t{\"GCStats.PauseQuantiles\", Field, 1, \"\"},\n\t\t{\"GCStats.PauseTotal\", Field, 1, \"\"},\n\t\t{\"Module\", Type, 12, \"\"},\n\t\t{\"Module.Path\", Field, 12, \"\"},\n\t\t{\"Module.Replace\", Field, 12, \"\"},\n\t\t{\"Module.Sum\", Field, 12, \"\"},\n\t\t{\"Module.Version\", Field, 12, \"\"},\n\t\t{\"ParseBuildInfo\", Func, 18, \"func(data string) (bi *BuildInfo, err error)\"},\n\t\t{\"PrintStack\", Func, 0, \"func()\"},\n\t\t{\"ReadBuildInfo\", Func, 12, \"func() (info *BuildInfo, ok bool)\"},\n\t\t{\"ReadGCStats\", Func, 1, \"func(stats *GCStats)\"},\n\t\t{\"SetCrashOutput\", Func, 23, \"func(f *os.File, opts CrashOptions) error\"},\n\t\t{\"SetGCPercent\", Func, 1, \"func(percent int) int\"},\n\t\t{\"SetMaxStack\", Func, 2, \"func(bytes int) int\"},\n\t\t{\"SetMaxThreads\", Func, 2, \"func(threads int) int\"},\n\t\t{\"SetMemoryLimit\", Func, 19, \"func(limit int64) int64\"},\n\t\t{\"SetPanicOnFault\", Func, 3, \"func(enabled bool) bool\"},\n\t\t{\"SetTraceback\", Func, 6, \"func(level string)\"},\n\t\t{\"Stack\", Func, 0, \"func() []byte\"},\n\t\t{\"WriteHeapDump\", Func, 3, \"func(fd uintptr)\"},\n\t},\n\t\"runtime/metrics\": {\n\t\t{\"(Value).Float64\", Method, 16, \"\"},\n\t\t{\"(Value).Float64Histogram\", Method, 16, \"\"},\n\t\t{\"(Value).Kind\", Method, 16, \"\"},\n\t\t{\"(Value).Uint64\", Method, 16, \"\"},\n\t\t{\"All\", Func, 16, \"func() []Description\"},\n\t\t{\"Description\", Type, 16, \"\"},\n\t\t{\"Description.Cumulative\", Field, 16, \"\"},\n\t\t{\"Description.Description\", Field, 16, \"\"},\n\t\t{\"Description.Kind\", Field, 16, \"\"},\n\t\t{\"Description.Name\", Field, 16, \"\"},\n\t\t{\"Float64Histogram\", Type, 16, \"\"},\n\t\t{\"Float64Histogram.Buckets\", Field, 16, \"\"},\n\t\t{\"Float64Histogram.Counts\", Field, 16, \"\"},\n\t\t{\"KindBad\", Const, 16, \"\"},\n\t\t{\"KindFloat64\", Const, 16, \"\"},\n\t\t{\"KindFloat64Histogram\", Const, 16, \"\"},\n\t\t{\"KindUint64\", Const, 16, \"\"},\n\t\t{\"Read\", Func, 16, \"func(m []Sample)\"},\n\t\t{\"Sample\", Type, 16, \"\"},\n\t\t{\"Sample.Name\", Field, 16, \"\"},\n\t\t{\"Sample.Value\", Field, 16, \"\"},\n\t\t{\"Value\", Type, 16, \"\"},\n\t\t{\"ValueKind\", Type, 16, \"\"},\n\t},\n\t\"runtime/pprof\": {\n\t\t{\"(*Profile).Add\", Method, 0, \"\"},\n\t\t{\"(*Profile).Count\", Method, 0, \"\"},\n\t\t{\"(*Profile).Name\", Method, 0, \"\"},\n\t\t{\"(*Profile).Remove\", Method, 0, \"\"},\n\t\t{\"(*Profile).WriteTo\", Method, 0, \"\"},\n\t\t{\"Do\", Func, 9, \"func(ctx context.Context, labels LabelSet, f func(context.Context))\"},\n\t\t{\"ForLabels\", Func, 9, \"func(ctx context.Context, f func(key string, value string) bool)\"},\n\t\t{\"Label\", Func, 9, \"func(ctx context.Context, key string) (string, bool)\"},\n\t\t{\"LabelSet\", Type, 9, \"\"},\n\t\t{\"Labels\", Func, 9, \"func(args ...string) LabelSet\"},\n\t\t{\"Lookup\", Func, 0, \"func(name string) *Profile\"},\n\t\t{\"NewProfile\", Func, 0, \"func(name string) *Profile\"},\n\t\t{\"Profile\", Type, 0, \"\"},\n\t\t{\"Profiles\", Func, 0, \"func() []*Profile\"},\n\t\t{\"SetGoroutineLabels\", Func, 9, \"func(ctx context.Context)\"},\n\t\t{\"StartCPUProfile\", Func, 0, \"func(w io.Writer) error\"},\n\t\t{\"StopCPUProfile\", Func, 0, \"func()\"},\n\t\t{\"WithLabels\", Func, 9, \"func(ctx context.Context, labels LabelSet) context.Context\"},\n\t\t{\"WriteHeapProfile\", Func, 0, \"func(w io.Writer) error\"},\n\t},\n\t\"runtime/trace\": {\n\t\t{\"(*FlightRecorder).Enabled\", Method, 25, \"\"},\n\t\t{\"(*FlightRecorder).Start\", Method, 25, \"\"},\n\t\t{\"(*FlightRecorder).Stop\", Method, 25, \"\"},\n\t\t{\"(*FlightRecorder).WriteTo\", Method, 25, \"\"},\n\t\t{\"(*Region).End\", Method, 11, \"\"},\n\t\t{\"(*Task).End\", Method, 11, \"\"},\n\t\t{\"FlightRecorder\", Type, 25, \"\"},\n\t\t{\"FlightRecorderConfig\", Type, 25, \"\"},\n\t\t{\"FlightRecorderConfig.MaxBytes\", Field, 25, \"\"},\n\t\t{\"FlightRecorderConfig.MinAge\", Field, 25, \"\"},\n\t\t{\"IsEnabled\", Func, 11, \"func() bool\"},\n\t\t{\"Log\", Func, 11, \"func(ctx context.Context, category string, message string)\"},\n\t\t{\"Logf\", Func, 11, \"func(ctx context.Context, category string, format string, args ...any)\"},\n\t\t{\"NewFlightRecorder\", Func, 25, \"func(cfg FlightRecorderConfig) *FlightRecorder\"},\n\t\t{\"NewTask\", Func, 11, \"func(pctx context.Context, taskType string) (ctx context.Context, task *Task)\"},\n\t\t{\"Region\", Type, 11, \"\"},\n\t\t{\"Start\", Func, 5, \"func(w io.Writer) error\"},\n\t\t{\"StartRegion\", Func, 11, \"func(ctx context.Context, regionType string) *Region\"},\n\t\t{\"Stop\", Func, 5, \"func()\"},\n\t\t{\"Task\", Type, 11, \"\"},\n\t\t{\"WithRegion\", Func, 11, \"func(ctx context.Context, regionType string, fn func())\"},\n\t},\n\t\"slices\": {\n\t\t{\"All\", Func, 23, \"func[Slice ~[]E, E any](s Slice) iter.Seq2[int, E]\"},\n\t\t{\"AppendSeq\", Func, 23, \"func[Slice ~[]E, E any](s Slice, seq iter.Seq[E]) Slice\"},\n\t\t{\"Backward\", Func, 23, \"func[Slice ~[]E, E any](s Slice) iter.Seq2[int, E]\"},\n\t\t{\"BinarySearch\", Func, 21, \"func[S ~[]E, E cmp.Ordered](x S, target E) (int, bool)\"},\n\t\t{\"BinarySearchFunc\", Func, 21, \"func[S ~[]E, E, T any](x S, target T, cmp func(E, T) int) (int, bool)\"},\n\t\t{\"Chunk\", Func, 23, \"func[Slice ~[]E, E any](s Slice, n int) iter.Seq[Slice]\"},\n\t\t{\"Clip\", Func, 21, \"func[S ~[]E, E any](s S) S\"},\n\t\t{\"Clone\", Func, 21, \"func[S ~[]E, E any](s S) S\"},\n\t\t{\"Collect\", Func, 23, \"func[E any](seq iter.Seq[E]) []E\"},\n\t\t{\"Compact\", Func, 21, \"func[S ~[]E, E comparable](s S) S\"},\n\t\t{\"CompactFunc\", Func, 21, \"func[S ~[]E, E any](s S, eq func(E, E) bool) S\"},\n\t\t{\"Compare\", Func, 21, \"func[S ~[]E, E cmp.Ordered](s1 S, s2 S) int\"},\n\t\t{\"CompareFunc\", Func, 21, \"func[S1 ~[]E1, S2 ~[]E2, E1, E2 any](s1 S1, s2 S2, cmp func(E1, E2) int) int\"},\n\t\t{\"Concat\", Func, 22, \"func[S ~[]E, E any](slices ...S) S\"},\n\t\t{\"Contains\", Func, 21, \"func[S ~[]E, E comparable](s S, v E) bool\"},\n\t\t{\"ContainsFunc\", Func, 21, \"func[S ~[]E, E any](s S, f func(E) bool) bool\"},\n\t\t{\"Delete\", Func, 21, \"func[S ~[]E, E any](s S, i int, j int) S\"},\n\t\t{\"DeleteFunc\", Func, 21, \"func[S ~[]E, E any](s S, del func(E) bool) S\"},\n\t\t{\"Equal\", Func, 21, \"func[S ~[]E, E comparable](s1 S, s2 S) bool\"},\n\t\t{\"EqualFunc\", Func, 21, \"func[S1 ~[]E1, S2 ~[]E2, E1, E2 any](s1 S1, s2 S2, eq func(E1, E2) bool) bool\"},\n\t\t{\"Grow\", Func, 21, \"func[S ~[]E, E any](s S, n int) S\"},\n\t\t{\"Index\", Func, 21, \"func[S ~[]E, E comparable](s S, v E) int\"},\n\t\t{\"IndexFunc\", Func, 21, \"func[S ~[]E, E any](s S, f func(E) bool) int\"},\n\t\t{\"Insert\", Func, 21, \"func[S ~[]E, E any](s S, i int, v ...E) S\"},\n\t\t{\"IsSorted\", Func, 21, \"func[S ~[]E, E cmp.Ordered](x S) bool\"},\n\t\t{\"IsSortedFunc\", Func, 21, \"func[S ~[]E, E any](x S, cmp func(a E, b E) int) bool\"},\n\t\t{\"Max\", Func, 21, \"func[S ~[]E, E cmp.Ordered](x S) E\"},\n\t\t{\"MaxFunc\", Func, 21, \"func[S ~[]E, E any](x S, cmp func(a E, b E) int) E\"},\n\t\t{\"Min\", Func, 21, \"func[S ~[]E, E cmp.Ordered](x S) E\"},\n\t\t{\"MinFunc\", Func, 21, \"func[S ~[]E, E any](x S, cmp func(a E, b E) int) E\"},\n\t\t{\"Repeat\", Func, 23, \"func[S ~[]E, E any](x S, count int) S\"},\n\t\t{\"Replace\", Func, 21, \"func[S ~[]E, E any](s S, i int, j int, v ...E) S\"},\n\t\t{\"Reverse\", Func, 21, \"func[S ~[]E, E any](s S)\"},\n\t\t{\"Sort\", Func, 21, \"func[S ~[]E, E cmp.Ordered](x S)\"},\n\t\t{\"SortFunc\", Func, 21, \"func[S ~[]E, E any](x S, cmp func(a E, b E) int)\"},\n\t\t{\"SortStableFunc\", Func, 21, \"func[S ~[]E, E any](x S, cmp func(a E, b E) int)\"},\n\t\t{\"Sorted\", Func, 23, \"func[E cmp.Ordered](seq iter.Seq[E]) []E\"},\n\t\t{\"SortedFunc\", Func, 23, \"func[E any](seq iter.Seq[E], cmp func(E, E) int) []E\"},\n\t\t{\"SortedStableFunc\", Func, 23, \"func[E any](seq iter.Seq[E], cmp func(E, E) int) []E\"},\n\t\t{\"Values\", Func, 23, \"func[Slice ~[]E, E any](s Slice) iter.Seq[E]\"},\n\t},\n\t\"sort\": {\n\t\t{\"(Float64Slice).Len\", Method, 0, \"\"},\n\t\t{\"(Float64Slice).Less\", Method, 0, \"\"},\n\t\t{\"(Float64Slice).Search\", Method, 0, \"\"},\n\t\t{\"(Float64Slice).Sort\", Method, 0, \"\"},\n\t\t{\"(Float64Slice).Swap\", Method, 0, \"\"},\n\t\t{\"(IntSlice).Len\", Method, 0, \"\"},\n\t\t{\"(IntSlice).Less\", Method, 0, \"\"},\n\t\t{\"(IntSlice).Search\", Method, 0, \"\"},\n\t\t{\"(IntSlice).Sort\", Method, 0, \"\"},\n\t\t{\"(IntSlice).Swap\", Method, 0, \"\"},\n\t\t{\"(Interface).Len\", Method, 0, \"\"},\n\t\t{\"(Interface).Less\", Method, 0, \"\"},\n\t\t{\"(Interface).Swap\", Method, 0, \"\"},\n\t\t{\"(StringSlice).Len\", Method, 0, \"\"},\n\t\t{\"(StringSlice).Less\", Method, 0, \"\"},\n\t\t{\"(StringSlice).Search\", Method, 0, \"\"},\n\t\t{\"(StringSlice).Sort\", Method, 0, \"\"},\n\t\t{\"(StringSlice).Swap\", Method, 0, \"\"},\n\t\t{\"Find\", Func, 19, \"func(n int, cmp func(int) int) (i int, found bool)\"},\n\t\t{\"Float64Slice\", Type, 0, \"\"},\n\t\t{\"Float64s\", Func, 0, \"func(x []float64)\"},\n\t\t{\"Float64sAreSorted\", Func, 0, \"func(x []float64) bool\"},\n\t\t{\"IntSlice\", Type, 0, \"\"},\n\t\t{\"Interface\", Type, 0, \"\"},\n\t\t{\"Ints\", Func, 0, \"func(x []int)\"},\n\t\t{\"IntsAreSorted\", Func, 0, \"func(x []int) bool\"},\n\t\t{\"IsSorted\", Func, 0, \"func(data Interface) bool\"},\n\t\t{\"Reverse\", Func, 1, \"func(data Interface) Interface\"},\n\t\t{\"Search\", Func, 0, \"func(n int, f func(int) bool) int\"},\n\t\t{\"SearchFloat64s\", Func, 0, \"func(a []float64, x float64) int\"},\n\t\t{\"SearchInts\", Func, 0, \"func(a []int, x int) int\"},\n\t\t{\"SearchStrings\", Func, 0, \"func(a []string, x string) int\"},\n\t\t{\"Slice\", Func, 8, \"func(x any, less func(i int, j int) bool)\"},\n\t\t{\"SliceIsSorted\", Func, 8, \"func(x any, less func(i int, j int) bool) bool\"},\n\t\t{\"SliceStable\", Func, 8, \"func(x any, less func(i int, j int) bool)\"},\n\t\t{\"Sort\", Func, 0, \"func(data Interface)\"},\n\t\t{\"Stable\", Func, 2, \"func(data Interface)\"},\n\t\t{\"StringSlice\", Type, 0, \"\"},\n\t\t{\"Strings\", Func, 0, \"func(x []string)\"},\n\t\t{\"StringsAreSorted\", Func, 0, \"func(x []string) bool\"},\n\t},\n\t\"strconv\": {\n\t\t{\"(*NumError).Error\", Method, 0, \"\"},\n\t\t{\"(*NumError).Unwrap\", Method, 14, \"\"},\n\t\t{\"AppendBool\", Func, 0, \"func(dst []byte, b bool) []byte\"},\n\t\t{\"AppendFloat\", Func, 0, \"func(dst []byte, f float64, fmt byte, prec int, bitSize int) []byte\"},\n\t\t{\"AppendInt\", Func, 0, \"func(dst []byte, i int64, base int) []byte\"},\n\t\t{\"AppendQuote\", Func, 0, \"func(dst []byte, s string) []byte\"},\n\t\t{\"AppendQuoteRune\", Func, 0, \"func(dst []byte, r rune) []byte\"},\n\t\t{\"AppendQuoteRuneToASCII\", Func, 0, \"func(dst []byte, r rune) []byte\"},\n\t\t{\"AppendQuoteRuneToGraphic\", Func, 6, \"func(dst []byte, r rune) []byte\"},\n\t\t{\"AppendQuoteToASCII\", Func, 0, \"func(dst []byte, s string) []byte\"},\n\t\t{\"AppendQuoteToGraphic\", Func, 6, \"func(dst []byte, s string) []byte\"},\n\t\t{\"AppendUint\", Func, 0, \"func(dst []byte, i uint64, base int) []byte\"},\n\t\t{\"Atoi\", Func, 0, \"func(s string) (int, error)\"},\n\t\t{\"CanBackquote\", Func, 0, \"func(s string) bool\"},\n\t\t{\"ErrRange\", Var, 0, \"\"},\n\t\t{\"ErrSyntax\", Var, 0, \"\"},\n\t\t{\"FormatBool\", Func, 0, \"func(b bool) string\"},\n\t\t{\"FormatComplex\", Func, 15, \"func(c complex128, fmt byte, prec int, bitSize int) string\"},\n\t\t{\"FormatFloat\", Func, 0, \"func(f float64, fmt byte, prec int, bitSize int) string\"},\n\t\t{\"FormatInt\", Func, 0, \"func(i int64, base int) string\"},\n\t\t{\"FormatUint\", Func, 0, \"func(i uint64, base int) string\"},\n\t\t{\"IntSize\", Const, 0, \"\"},\n\t\t{\"IsGraphic\", Func, 6, \"func(r rune) bool\"},\n\t\t{\"IsPrint\", Func, 0, \"func(r rune) bool\"},\n\t\t{\"Itoa\", Func, 0, \"func(i int) string\"},\n\t\t{\"NumError\", Type, 0, \"\"},\n\t\t{\"NumError.Err\", Field, 0, \"\"},\n\t\t{\"NumError.Func\", Field, 0, \"\"},\n\t\t{\"NumError.Num\", Field, 0, \"\"},\n\t\t{\"ParseBool\", Func, 0, \"func(str string) (bool, error)\"},\n\t\t{\"ParseComplex\", Func, 15, \"func(s string, bitSize int) (complex128, error)\"},\n\t\t{\"ParseFloat\", Func, 0, \"func(s string, bitSize int) (float64, error)\"},\n\t\t{\"ParseInt\", Func, 0, \"func(s string, base int, bitSize int) (i int64, err error)\"},\n\t\t{\"ParseUint\", Func, 0, \"func(s string, base int, bitSize int) (uint64, error)\"},\n\t\t{\"Quote\", Func, 0, \"func(s string) string\"},\n\t\t{\"QuoteRune\", Func, 0, \"func(r rune) string\"},\n\t\t{\"QuoteRuneToASCII\", Func, 0, \"func(r rune) string\"},\n\t\t{\"QuoteRuneToGraphic\", Func, 6, \"func(r rune) string\"},\n\t\t{\"QuoteToASCII\", Func, 0, \"func(s string) string\"},\n\t\t{\"QuoteToGraphic\", Func, 6, \"func(s string) string\"},\n\t\t{\"QuotedPrefix\", Func, 17, \"func(s string) (string, error)\"},\n\t\t{\"Unquote\", Func, 0, \"func(s string) (string, error)\"},\n\t\t{\"UnquoteChar\", Func, 0, \"func(s string, quote byte) (value rune, multibyte bool, tail string, err error)\"},\n\t},\n\t\"strings\": {\n\t\t{\"(*Builder).Cap\", Method, 12, \"\"},\n\t\t{\"(*Builder).Grow\", Method, 10, \"\"},\n\t\t{\"(*Builder).Len\", Method, 10, \"\"},\n\t\t{\"(*Builder).Reset\", Method, 10, \"\"},\n\t\t{\"(*Builder).String\", Method, 10, \"\"},\n\t\t{\"(*Builder).Write\", Method, 10, \"\"},\n\t\t{\"(*Builder).WriteByte\", Method, 10, \"\"},\n\t\t{\"(*Builder).WriteRune\", Method, 10, \"\"},\n\t\t{\"(*Builder).WriteString\", Method, 10, \"\"},\n\t\t{\"(*Reader).Len\", Method, 0, \"\"},\n\t\t{\"(*Reader).Read\", Method, 0, \"\"},\n\t\t{\"(*Reader).ReadAt\", Method, 0, \"\"},\n\t\t{\"(*Reader).ReadByte\", Method, 0, \"\"},\n\t\t{\"(*Reader).ReadRune\", Method, 0, \"\"},\n\t\t{\"(*Reader).Reset\", Method, 7, \"\"},\n\t\t{\"(*Reader).Seek\", Method, 0, \"\"},\n\t\t{\"(*Reader).Size\", Method, 5, \"\"},\n\t\t{\"(*Reader).UnreadByte\", Method, 0, \"\"},\n\t\t{\"(*Reader).UnreadRune\", Method, 0, \"\"},\n\t\t{\"(*Reader).WriteTo\", Method, 1, \"\"},\n\t\t{\"(*Replacer).Replace\", Method, 0, \"\"},\n\t\t{\"(*Replacer).WriteString\", Method, 0, \"\"},\n\t\t{\"Builder\", Type, 10, \"\"},\n\t\t{\"Clone\", Func, 18, \"func(s string) string\"},\n\t\t{\"Compare\", Func, 5, \"func(a string, b string) int\"},\n\t\t{\"Contains\", Func, 0, \"func(s string, substr string) bool\"},\n\t\t{\"ContainsAny\", Func, 0, \"func(s string, chars string) bool\"},\n\t\t{\"ContainsFunc\", Func, 21, \"func(s string, f func(rune) bool) bool\"},\n\t\t{\"ContainsRune\", Func, 0, \"func(s string, r rune) bool\"},\n\t\t{\"Count\", Func, 0, \"func(s string, substr string) int\"},\n\t\t{\"Cut\", Func, 18, \"func(s string, sep string) (before string, after string, found bool)\"},\n\t\t{\"CutPrefix\", Func, 20, \"func(s string, prefix string) (after string, found bool)\"},\n\t\t{\"CutSuffix\", Func, 20, \"func(s string, suffix string) (before string, found bool)\"},\n\t\t{\"EqualFold\", Func, 0, \"func(s string, t string) bool\"},\n\t\t{\"Fields\", Func, 0, \"func(s string) []string\"},\n\t\t{\"FieldsFunc\", Func, 0, \"func(s string, f func(rune) bool) []string\"},\n\t\t{\"FieldsFuncSeq\", Func, 24, \"func(s string, f func(rune) bool) iter.Seq[string]\"},\n\t\t{\"FieldsSeq\", Func, 24, \"func(s string) iter.Seq[string]\"},\n\t\t{\"HasPrefix\", Func, 0, \"func(s string, prefix string) bool\"},\n\t\t{\"HasSuffix\", Func, 0, \"func(s string, suffix string) bool\"},\n\t\t{\"Index\", Func, 0, \"func(s string, substr string) int\"},\n\t\t{\"IndexAny\", Func, 0, \"func(s string, chars string) int\"},\n\t\t{\"IndexByte\", Func, 2, \"func(s string, c byte) int\"},\n\t\t{\"IndexFunc\", Func, 0, \"func(s string, f func(rune) bool) int\"},\n\t\t{\"IndexRune\", Func, 0, \"func(s string, r rune) int\"},\n\t\t{\"Join\", Func, 0, \"func(elems []string, sep string) string\"},\n\t\t{\"LastIndex\", Func, 0, \"func(s string, substr string) int\"},\n\t\t{\"LastIndexAny\", Func, 0, \"func(s string, chars string) int\"},\n\t\t{\"LastIndexByte\", Func, 5, \"func(s string, c byte) int\"},\n\t\t{\"LastIndexFunc\", Func, 0, \"func(s string, f func(rune) bool) int\"},\n\t\t{\"Lines\", Func, 24, \"func(s string) iter.Seq[string]\"},\n\t\t{\"Map\", Func, 0, \"func(mapping func(rune) rune, s string) string\"},\n\t\t{\"NewReader\", Func, 0, \"func(s string) *Reader\"},\n\t\t{\"NewReplacer\", Func, 0, \"func(oldnew ...string) *Replacer\"},\n\t\t{\"Reader\", Type, 0, \"\"},\n\t\t{\"Repeat\", Func, 0, \"func(s string, count int) string\"},\n\t\t{\"Replace\", Func, 0, \"func(s string, old string, new string, n int) string\"},\n\t\t{\"ReplaceAll\", Func, 12, \"func(s string, old string, new string) string\"},\n\t\t{\"Replacer\", Type, 0, \"\"},\n\t\t{\"Split\", Func, 0, \"func(s string, sep string) []string\"},\n\t\t{\"SplitAfter\", Func, 0, \"func(s string, sep string) []string\"},\n\t\t{\"SplitAfterN\", Func, 0, \"func(s string, sep string, n int) []string\"},\n\t\t{\"SplitAfterSeq\", Func, 24, \"func(s string, sep string) iter.Seq[string]\"},\n\t\t{\"SplitN\", Func, 0, \"func(s string, sep string, n int) []string\"},\n\t\t{\"SplitSeq\", Func, 24, \"func(s string, sep string) iter.Seq[string]\"},\n\t\t{\"Title\", Func, 0, \"func(s string) string\"},\n\t\t{\"ToLower\", Func, 0, \"func(s string) string\"},\n\t\t{\"ToLowerSpecial\", Func, 0, \"func(c unicode.SpecialCase, s string) string\"},\n\t\t{\"ToTitle\", Func, 0, \"func(s string) string\"},\n\t\t{\"ToTitleSpecial\", Func, 0, \"func(c unicode.SpecialCase, s string) string\"},\n\t\t{\"ToUpper\", Func, 0, \"func(s string) string\"},\n\t\t{\"ToUpperSpecial\", Func, 0, \"func(c unicode.SpecialCase, s string) string\"},\n\t\t{\"ToValidUTF8\", Func, 13, \"func(s string, replacement string) string\"},\n\t\t{\"Trim\", Func, 0, \"func(s string, cutset string) string\"},\n\t\t{\"TrimFunc\", Func, 0, \"func(s string, f func(rune) bool) string\"},\n\t\t{\"TrimLeft\", Func, 0, \"func(s string, cutset string) string\"},\n\t\t{\"TrimLeftFunc\", Func, 0, \"func(s string, f func(rune) bool) string\"},\n\t\t{\"TrimPrefix\", Func, 1, \"func(s string, prefix string) string\"},\n\t\t{\"TrimRight\", Func, 0, \"func(s string, cutset string) string\"},\n\t\t{\"TrimRightFunc\", Func, 0, \"func(s string, f func(rune) bool) string\"},\n\t\t{\"TrimSpace\", Func, 0, \"func(s string) string\"},\n\t\t{\"TrimSuffix\", Func, 1, \"func(s string, suffix string) string\"},\n\t},\n\t\"structs\": {\n\t\t{\"HostLayout\", Type, 23, \"\"},\n\t},\n\t\"sync\": {\n\t\t{\"(*Cond).Broadcast\", Method, 0, \"\"},\n\t\t{\"(*Cond).Signal\", Method, 0, \"\"},\n\t\t{\"(*Cond).Wait\", Method, 0, \"\"},\n\t\t{\"(*Map).Clear\", Method, 23, \"\"},\n\t\t{\"(*Map).CompareAndDelete\", Method, 20, \"\"},\n\t\t{\"(*Map).CompareAndSwap\", Method, 20, \"\"},\n\t\t{\"(*Map).Delete\", Method, 9, \"\"},\n\t\t{\"(*Map).Load\", Method, 9, \"\"},\n\t\t{\"(*Map).LoadAndDelete\", Method, 15, \"\"},\n\t\t{\"(*Map).LoadOrStore\", Method, 9, \"\"},\n\t\t{\"(*Map).Range\", Method, 9, \"\"},\n\t\t{\"(*Map).Store\", Method, 9, \"\"},\n\t\t{\"(*Map).Swap\", Method, 20, \"\"},\n\t\t{\"(*Mutex).Lock\", Method, 0, \"\"},\n\t\t{\"(*Mutex).TryLock\", Method, 18, \"\"},\n\t\t{\"(*Mutex).Unlock\", Method, 0, \"\"},\n\t\t{\"(*Once).Do\", Method, 0, \"\"},\n\t\t{\"(*Pool).Get\", Method, 3, \"\"},\n\t\t{\"(*Pool).Put\", Method, 3, \"\"},\n\t\t{\"(*RWMutex).Lock\", Method, 0, \"\"},\n\t\t{\"(*RWMutex).RLock\", Method, 0, \"\"},\n\t\t{\"(*RWMutex).RLocker\", Method, 0, \"\"},\n\t\t{\"(*RWMutex).RUnlock\", Method, 0, \"\"},\n\t\t{\"(*RWMutex).TryLock\", Method, 18, \"\"},\n\t\t{\"(*RWMutex).TryRLock\", Method, 18, \"\"},\n\t\t{\"(*RWMutex).Unlock\", Method, 0, \"\"},\n\t\t{\"(*WaitGroup).Add\", Method, 0, \"\"},\n\t\t{\"(*WaitGroup).Done\", Method, 0, \"\"},\n\t\t{\"(*WaitGroup).Go\", Method, 25, \"\"},\n\t\t{\"(*WaitGroup).Wait\", Method, 0, \"\"},\n\t\t{\"(Locker).Lock\", Method, 0, \"\"},\n\t\t{\"(Locker).Unlock\", Method, 0, \"\"},\n\t\t{\"Cond\", Type, 0, \"\"},\n\t\t{\"Cond.L\", Field, 0, \"\"},\n\t\t{\"Locker\", Type, 0, \"\"},\n\t\t{\"Map\", Type, 9, \"\"},\n\t\t{\"Mutex\", Type, 0, \"\"},\n\t\t{\"NewCond\", Func, 0, \"func(l Locker) *Cond\"},\n\t\t{\"Once\", Type, 0, \"\"},\n\t\t{\"OnceFunc\", Func, 21, \"func(f func()) func()\"},\n\t\t{\"OnceValue\", Func, 21, \"func[T any](f func() T) func() T\"},\n\t\t{\"OnceValues\", Func, 21, \"func[T1, T2 any](f func() (T1, T2)) func() (T1, T2)\"},\n\t\t{\"Pool\", Type, 3, \"\"},\n\t\t{\"Pool.New\", Field, 3, \"\"},\n\t\t{\"RWMutex\", Type, 0, \"\"},\n\t\t{\"WaitGroup\", Type, 0, \"\"},\n\t},\n\t\"sync/atomic\": {\n\t\t{\"(*Bool).CompareAndSwap\", Method, 19, \"\"},\n\t\t{\"(*Bool).Load\", Method, 19, \"\"},\n\t\t{\"(*Bool).Store\", Method, 19, \"\"},\n\t\t{\"(*Bool).Swap\", Method, 19, \"\"},\n\t\t{\"(*Int32).Add\", Method, 19, \"\"},\n\t\t{\"(*Int32).And\", Method, 23, \"\"},\n\t\t{\"(*Int32).CompareAndSwap\", Method, 19, \"\"},\n\t\t{\"(*Int32).Load\", Method, 19, \"\"},\n\t\t{\"(*Int32).Or\", Method, 23, \"\"},\n\t\t{\"(*Int32).Store\", Method, 19, \"\"},\n\t\t{\"(*Int32).Swap\", Method, 19, \"\"},\n\t\t{\"(*Int64).Add\", Method, 19, \"\"},\n\t\t{\"(*Int64).And\", Method, 23, \"\"},\n\t\t{\"(*Int64).CompareAndSwap\", Method, 19, \"\"},\n\t\t{\"(*Int64).Load\", Method, 19, \"\"},\n\t\t{\"(*Int64).Or\", Method, 23, \"\"},\n\t\t{\"(*Int64).Store\", Method, 19, \"\"},\n\t\t{\"(*Int64).Swap\", Method, 19, \"\"},\n\t\t{\"(*Pointer).CompareAndSwap\", Method, 19, \"\"},\n\t\t{\"(*Pointer).Load\", Method, 19, \"\"},\n\t\t{\"(*Pointer).Store\", Method, 19, \"\"},\n\t\t{\"(*Pointer).Swap\", Method, 19, \"\"},\n\t\t{\"(*Uint32).Add\", Method, 19, \"\"},\n\t\t{\"(*Uint32).And\", Method, 23, \"\"},\n\t\t{\"(*Uint32).CompareAndSwap\", Method, 19, \"\"},\n\t\t{\"(*Uint32).Load\", Method, 19, \"\"},\n\t\t{\"(*Uint32).Or\", Method, 23, \"\"},\n\t\t{\"(*Uint32).Store\", Method, 19, \"\"},\n\t\t{\"(*Uint32).Swap\", Method, 19, \"\"},\n\t\t{\"(*Uint64).Add\", Method, 19, \"\"},\n\t\t{\"(*Uint64).And\", Method, 23, \"\"},\n\t\t{\"(*Uint64).CompareAndSwap\", Method, 19, \"\"},\n\t\t{\"(*Uint64).Load\", Method, 19, \"\"},\n\t\t{\"(*Uint64).Or\", Method, 23, \"\"},\n\t\t{\"(*Uint64).Store\", Method, 19, \"\"},\n\t\t{\"(*Uint64).Swap\", Method, 19, \"\"},\n\t\t{\"(*Uintptr).Add\", Method, 19, \"\"},\n\t\t{\"(*Uintptr).And\", Method, 23, \"\"},\n\t\t{\"(*Uintptr).CompareAndSwap\", Method, 19, \"\"},\n\t\t{\"(*Uintptr).Load\", Method, 19, \"\"},\n\t\t{\"(*Uintptr).Or\", Method, 23, \"\"},\n\t\t{\"(*Uintptr).Store\", Method, 19, \"\"},\n\t\t{\"(*Uintptr).Swap\", Method, 19, \"\"},\n\t\t{\"(*Value).CompareAndSwap\", Method, 17, \"\"},\n\t\t{\"(*Value).Load\", Method, 4, \"\"},\n\t\t{\"(*Value).Store\", Method, 4, \"\"},\n\t\t{\"(*Value).Swap\", Method, 17, \"\"},\n\t\t{\"AddInt32\", Func, 0, \"func(addr *int32, delta int32) (new int32)\"},\n\t\t{\"AddInt64\", Func, 0, \"func(addr *int64, delta int64) (new int64)\"},\n\t\t{\"AddUint32\", Func, 0, \"func(addr *uint32, delta uint32) (new uint32)\"},\n\t\t{\"AddUint64\", Func, 0, \"func(addr *uint64, delta uint64) (new uint64)\"},\n\t\t{\"AddUintptr\", Func, 0, \"func(addr *uintptr, delta uintptr) (new uintptr)\"},\n\t\t{\"AndInt32\", Func, 23, \"func(addr *int32, mask int32) (old int32)\"},\n\t\t{\"AndInt64\", Func, 23, \"func(addr *int64, mask int64) (old int64)\"},\n\t\t{\"AndUint32\", Func, 23, \"func(addr *uint32, mask uint32) (old uint32)\"},\n\t\t{\"AndUint64\", Func, 23, \"func(addr *uint64, mask uint64) (old uint64)\"},\n\t\t{\"AndUintptr\", Func, 23, \"func(addr *uintptr, mask uintptr) (old uintptr)\"},\n\t\t{\"Bool\", Type, 19, \"\"},\n\t\t{\"CompareAndSwapInt32\", Func, 0, \"func(addr *int32, old int32, new int32) (swapped bool)\"},\n\t\t{\"CompareAndSwapInt64\", Func, 0, \"func(addr *int64, old int64, new int64) (swapped bool)\"},\n\t\t{\"CompareAndSwapPointer\", Func, 0, \"func(addr *unsafe.Pointer, old unsafe.Pointer, new unsafe.Pointer) (swapped bool)\"},\n\t\t{\"CompareAndSwapUint32\", Func, 0, \"func(addr *uint32, old uint32, new uint32) (swapped bool)\"},\n\t\t{\"CompareAndSwapUint64\", Func, 0, \"func(addr *uint64, old uint64, new uint64) (swapped bool)\"},\n\t\t{\"CompareAndSwapUintptr\", Func, 0, \"func(addr *uintptr, old uintptr, new uintptr) (swapped bool)\"},\n\t\t{\"Int32\", Type, 19, \"\"},\n\t\t{\"Int64\", Type, 19, \"\"},\n\t\t{\"LoadInt32\", Func, 0, \"func(addr *int32) (val int32)\"},\n\t\t{\"LoadInt64\", Func, 0, \"func(addr *int64) (val int64)\"},\n\t\t{\"LoadPointer\", Func, 0, \"func(addr *unsafe.Pointer) (val unsafe.Pointer)\"},\n\t\t{\"LoadUint32\", Func, 0, \"func(addr *uint32) (val uint32)\"},\n\t\t{\"LoadUint64\", Func, 0, \"func(addr *uint64) (val uint64)\"},\n\t\t{\"LoadUintptr\", Func, 0, \"func(addr *uintptr) (val uintptr)\"},\n\t\t{\"OrInt32\", Func, 23, \"func(addr *int32, mask int32) (old int32)\"},\n\t\t{\"OrInt64\", Func, 23, \"func(addr *int64, mask int64) (old int64)\"},\n\t\t{\"OrUint32\", Func, 23, \"func(addr *uint32, mask uint32) (old uint32)\"},\n\t\t{\"OrUint64\", Func, 23, \"func(addr *uint64, mask uint64) (old uint64)\"},\n\t\t{\"OrUintptr\", Func, 23, \"func(addr *uintptr, mask uintptr) (old uintptr)\"},\n\t\t{\"Pointer\", Type, 19, \"\"},\n\t\t{\"StoreInt32\", Func, 0, \"func(addr *int32, val int32)\"},\n\t\t{\"StoreInt64\", Func, 0, \"func(addr *int64, val int64)\"},\n\t\t{\"StorePointer\", Func, 0, \"func(addr *unsafe.Pointer, val unsafe.Pointer)\"},\n\t\t{\"StoreUint32\", Func, 0, \"func(addr *uint32, val uint32)\"},\n\t\t{\"StoreUint64\", Func, 0, \"func(addr *uint64, val uint64)\"},\n\t\t{\"StoreUintptr\", Func, 0, \"func(addr *uintptr, val uintptr)\"},\n\t\t{\"SwapInt32\", Func, 2, \"func(addr *int32, new int32) (old int32)\"},\n\t\t{\"SwapInt64\", Func, 2, \"func(addr *int64, new int64) (old int64)\"},\n\t\t{\"SwapPointer\", Func, 2, \"func(addr *unsafe.Pointer, new unsafe.Pointer) (old unsafe.Pointer)\"},\n\t\t{\"SwapUint32\", Func, 2, \"func(addr *uint32, new uint32) (old uint32)\"},\n\t\t{\"SwapUint64\", Func, 2, \"func(addr *uint64, new uint64) (old uint64)\"},\n\t\t{\"SwapUintptr\", Func, 2, \"func(addr *uintptr, new uintptr) (old uintptr)\"},\n\t\t{\"Uint32\", Type, 19, \"\"},\n\t\t{\"Uint64\", Type, 19, \"\"},\n\t\t{\"Uintptr\", Type, 19, \"\"},\n\t\t{\"Value\", Type, 4, \"\"},\n\t},\n\t\"syscall\": {\n\t\t{\"(*Cmsghdr).SetLen\", Method, 0, \"\"},\n\t\t{\"(*DLL).FindProc\", Method, 0, \"\"},\n\t\t{\"(*DLL).MustFindProc\", Method, 0, \"\"},\n\t\t{\"(*DLL).Release\", Method, 0, \"\"},\n\t\t{\"(*DLLError).Error\", Method, 0, \"\"},\n\t\t{\"(*DLLError).Unwrap\", Method, 16, \"\"},\n\t\t{\"(*Filetime).Nanoseconds\", Method, 0, \"\"},\n\t\t{\"(*Iovec).SetLen\", Method, 0, \"\"},\n\t\t{\"(*LazyDLL).Handle\", Method, 0, \"\"},\n\t\t{\"(*LazyDLL).Load\", Method, 0, \"\"},\n\t\t{\"(*LazyDLL).NewProc\", Method, 0, \"\"},\n\t\t{\"(*LazyProc).Addr\", Method, 0, \"\"},\n\t\t{\"(*LazyProc).Call\", Method, 0, \"\"},\n\t\t{\"(*LazyProc).Find\", Method, 0, \"\"},\n\t\t{\"(*Msghdr).SetControllen\", Method, 0, \"\"},\n\t\t{\"(*Proc).Addr\", Method, 0, \"\"},\n\t\t{\"(*Proc).Call\", Method, 0, \"\"},\n\t\t{\"(*PtraceRegs).PC\", Method, 0, \"\"},\n\t\t{\"(*PtraceRegs).SetPC\", Method, 0, \"\"},\n\t\t{\"(*RawSockaddrAny).Sockaddr\", Method, 0, \"\"},\n\t\t{\"(*SID).Copy\", Method, 0, \"\"},\n\t\t{\"(*SID).Len\", Method, 0, \"\"},\n\t\t{\"(*SID).LookupAccount\", Method, 0, \"\"},\n\t\t{\"(*SID).String\", Method, 0, \"\"},\n\t\t{\"(*Timespec).Nano\", Method, 0, \"\"},\n\t\t{\"(*Timespec).Unix\", Method, 0, \"\"},\n\t\t{\"(*Timeval).Nano\", Method, 0, \"\"},\n\t\t{\"(*Timeval).Nanoseconds\", Method, 0, \"\"},\n\t\t{\"(*Timeval).Unix\", Method, 0, \"\"},\n\t\t{\"(Conn).SyscallConn\", Method, 9, \"\"},\n\t\t{\"(Errno).Error\", Method, 0, \"\"},\n\t\t{\"(Errno).Is\", Method, 13, \"\"},\n\t\t{\"(Errno).Temporary\", Method, 0, \"\"},\n\t\t{\"(Errno).Timeout\", Method, 0, \"\"},\n\t\t{\"(RawConn).Control\", Method, 9, \"\"},\n\t\t{\"(RawConn).Read\", Method, 9, \"\"},\n\t\t{\"(RawConn).Write\", Method, 9, \"\"},\n\t\t{\"(Signal).Signal\", Method, 0, \"\"},\n\t\t{\"(Signal).String\", Method, 0, \"\"},\n\t\t{\"(Token).Close\", Method, 0, \"\"},\n\t\t{\"(Token).GetTokenPrimaryGroup\", Method, 0, \"\"},\n\t\t{\"(Token).GetTokenUser\", Method, 0, \"\"},\n\t\t{\"(Token).GetUserProfileDirectory\", Method, 0, \"\"},\n\t\t{\"(WaitStatus).Continued\", Method, 0, \"\"},\n\t\t{\"(WaitStatus).CoreDump\", Method, 0, \"\"},\n\t\t{\"(WaitStatus).ExitStatus\", Method, 0, \"\"},\n\t\t{\"(WaitStatus).Exited\", Method, 0, \"\"},\n\t\t{\"(WaitStatus).Signal\", Method, 0, \"\"},\n\t\t{\"(WaitStatus).Signaled\", Method, 0, \"\"},\n\t\t{\"(WaitStatus).StopSignal\", Method, 0, \"\"},\n\t\t{\"(WaitStatus).Stopped\", Method, 0, \"\"},\n\t\t{\"(WaitStatus).TrapCause\", Method, 0, \"\"},\n\t\t{\"AF_ALG\", Const, 0, \"\"},\n\t\t{\"AF_APPLETALK\", Const, 0, \"\"},\n\t\t{\"AF_ARP\", Const, 0, \"\"},\n\t\t{\"AF_ASH\", Const, 0, \"\"},\n\t\t{\"AF_ATM\", Const, 0, \"\"},\n\t\t{\"AF_ATMPVC\", Const, 0, \"\"},\n\t\t{\"AF_ATMSVC\", Const, 0, \"\"},\n\t\t{\"AF_AX25\", Const, 0, \"\"},\n\t\t{\"AF_BLUETOOTH\", Const, 0, \"\"},\n\t\t{\"AF_BRIDGE\", Const, 0, \"\"},\n\t\t{\"AF_CAIF\", Const, 0, \"\"},\n\t\t{\"AF_CAN\", Const, 0, \"\"},\n\t\t{\"AF_CCITT\", Const, 0, \"\"},\n\t\t{\"AF_CHAOS\", Const, 0, \"\"},\n\t\t{\"AF_CNT\", Const, 0, \"\"},\n\t\t{\"AF_COIP\", Const, 0, \"\"},\n\t\t{\"AF_DATAKIT\", Const, 0, \"\"},\n\t\t{\"AF_DECnet\", Const, 0, \"\"},\n\t\t{\"AF_DLI\", Const, 0, \"\"},\n\t\t{\"AF_E164\", Const, 0, \"\"},\n\t\t{\"AF_ECMA\", Const, 0, \"\"},\n\t\t{\"AF_ECONET\", Const, 0, \"\"},\n\t\t{\"AF_ENCAP\", Const, 1, \"\"},\n\t\t{\"AF_FILE\", Const, 0, \"\"},\n\t\t{\"AF_HYLINK\", Const, 0, \"\"},\n\t\t{\"AF_IEEE80211\", Const, 0, \"\"},\n\t\t{\"AF_IEEE802154\", Const, 0, \"\"},\n\t\t{\"AF_IMPLINK\", Const, 0, \"\"},\n\t\t{\"AF_INET\", Const, 0, \"\"},\n\t\t{\"AF_INET6\", Const, 0, \"\"},\n\t\t{\"AF_INET6_SDP\", Const, 3, \"\"},\n\t\t{\"AF_INET_SDP\", Const, 3, \"\"},\n\t\t{\"AF_IPX\", Const, 0, \"\"},\n\t\t{\"AF_IRDA\", Const, 0, \"\"},\n\t\t{\"AF_ISDN\", Const, 0, \"\"},\n\t\t{\"AF_ISO\", Const, 0, \"\"},\n\t\t{\"AF_IUCV\", Const, 0, \"\"},\n\t\t{\"AF_KEY\", Const, 0, \"\"},\n\t\t{\"AF_LAT\", Const, 0, \"\"},\n\t\t{\"AF_LINK\", Const, 0, \"\"},\n\t\t{\"AF_LLC\", Const, 0, \"\"},\n\t\t{\"AF_LOCAL\", Const, 0, \"\"},\n\t\t{\"AF_MAX\", Const, 0, \"\"},\n\t\t{\"AF_MPLS\", Const, 1, \"\"},\n\t\t{\"AF_NATM\", Const, 0, \"\"},\n\t\t{\"AF_NDRV\", Const, 0, \"\"},\n\t\t{\"AF_NETBEUI\", Const, 0, \"\"},\n\t\t{\"AF_NETBIOS\", Const, 0, \"\"},\n\t\t{\"AF_NETGRAPH\", Const, 0, \"\"},\n\t\t{\"AF_NETLINK\", Const, 0, \"\"},\n\t\t{\"AF_NETROM\", Const, 0, \"\"},\n\t\t{\"AF_NS\", Const, 0, \"\"},\n\t\t{\"AF_OROUTE\", Const, 1, \"\"},\n\t\t{\"AF_OSI\", Const, 0, \"\"},\n\t\t{\"AF_PACKET\", Const, 0, \"\"},\n\t\t{\"AF_PHONET\", Const, 0, \"\"},\n\t\t{\"AF_PPP\", Const, 0, \"\"},\n\t\t{\"AF_PPPOX\", Const, 0, \"\"},\n\t\t{\"AF_PUP\", Const, 0, \"\"},\n\t\t{\"AF_RDS\", Const, 0, \"\"},\n\t\t{\"AF_RESERVED_36\", Const, 0, \"\"},\n\t\t{\"AF_ROSE\", Const, 0, \"\"},\n\t\t{\"AF_ROUTE\", Const, 0, \"\"},\n\t\t{\"AF_RXRPC\", Const, 0, \"\"},\n\t\t{\"AF_SCLUSTER\", Const, 0, \"\"},\n\t\t{\"AF_SECURITY\", Const, 0, \"\"},\n\t\t{\"AF_SIP\", Const, 0, \"\"},\n\t\t{\"AF_SLOW\", Const, 0, \"\"},\n\t\t{\"AF_SNA\", Const, 0, \"\"},\n\t\t{\"AF_SYSTEM\", Const, 0, \"\"},\n\t\t{\"AF_TIPC\", Const, 0, \"\"},\n\t\t{\"AF_UNIX\", Const, 0, \"\"},\n\t\t{\"AF_UNSPEC\", Const, 0, \"\"},\n\t\t{\"AF_UTUN\", Const, 16, \"\"},\n\t\t{\"AF_VENDOR00\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR01\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR02\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR03\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR04\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR05\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR06\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR07\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR08\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR09\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR10\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR11\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR12\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR13\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR14\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR15\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR16\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR17\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR18\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR19\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR20\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR21\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR22\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR23\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR24\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR25\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR26\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR27\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR28\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR29\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR30\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR31\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR32\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR33\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR34\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR35\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR36\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR37\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR38\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR39\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR40\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR41\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR42\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR43\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR44\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR45\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR46\", Const, 0, \"\"},\n\t\t{\"AF_VENDOR47\", Const, 0, \"\"},\n\t\t{\"AF_WANPIPE\", Const, 0, \"\"},\n\t\t{\"AF_X25\", Const, 0, \"\"},\n\t\t{\"AI_CANONNAME\", Const, 1, \"\"},\n\t\t{\"AI_NUMERICHOST\", Const, 1, \"\"},\n\t\t{\"AI_PASSIVE\", Const, 1, \"\"},\n\t\t{\"APPLICATION_ERROR\", Const, 0, \"\"},\n\t\t{\"ARPHRD_ADAPT\", Const, 0, \"\"},\n\t\t{\"ARPHRD_APPLETLK\", Const, 0, \"\"},\n\t\t{\"ARPHRD_ARCNET\", Const, 0, \"\"},\n\t\t{\"ARPHRD_ASH\", Const, 0, \"\"},\n\t\t{\"ARPHRD_ATM\", Const, 0, \"\"},\n\t\t{\"ARPHRD_AX25\", Const, 0, \"\"},\n\t\t{\"ARPHRD_BIF\", Const, 0, \"\"},\n\t\t{\"ARPHRD_CHAOS\", Const, 0, \"\"},\n\t\t{\"ARPHRD_CISCO\", Const, 0, \"\"},\n\t\t{\"ARPHRD_CSLIP\", Const, 0, \"\"},\n\t\t{\"ARPHRD_CSLIP6\", Const, 0, \"\"},\n\t\t{\"ARPHRD_DDCMP\", Const, 0, \"\"},\n\t\t{\"ARPHRD_DLCI\", Const, 0, \"\"},\n\t\t{\"ARPHRD_ECONET\", Const, 0, \"\"},\n\t\t{\"ARPHRD_EETHER\", Const, 0, \"\"},\n\t\t{\"ARPHRD_ETHER\", Const, 0, \"\"},\n\t\t{\"ARPHRD_EUI64\", Const, 0, \"\"},\n\t\t{\"ARPHRD_FCAL\", Const, 0, \"\"},\n\t\t{\"ARPHRD_FCFABRIC\", Const, 0, \"\"},\n\t\t{\"ARPHRD_FCPL\", Const, 0, \"\"},\n\t\t{\"ARPHRD_FCPP\", Const, 0, \"\"},\n\t\t{\"ARPHRD_FDDI\", Const, 0, \"\"},\n\t\t{\"ARPHRD_FRAD\", Const, 0, \"\"},\n\t\t{\"ARPHRD_FRELAY\", Const, 1, \"\"},\n\t\t{\"ARPHRD_HDLC\", Const, 0, \"\"},\n\t\t{\"ARPHRD_HIPPI\", Const, 0, \"\"},\n\t\t{\"ARPHRD_HWX25\", Const, 0, \"\"},\n\t\t{\"ARPHRD_IEEE1394\", Const, 0, \"\"},\n\t\t{\"ARPHRD_IEEE802\", Const, 0, \"\"},\n\t\t{\"ARPHRD_IEEE80211\", Const, 0, \"\"},\n\t\t{\"ARPHRD_IEEE80211_PRISM\", Const, 0, \"\"},\n\t\t{\"ARPHRD_IEEE80211_RADIOTAP\", Const, 0, \"\"},\n\t\t{\"ARPHRD_IEEE802154\", Const, 0, \"\"},\n\t\t{\"ARPHRD_IEEE802154_PHY\", Const, 0, \"\"},\n\t\t{\"ARPHRD_IEEE802_TR\", Const, 0, \"\"},\n\t\t{\"ARPHRD_INFINIBAND\", Const, 0, \"\"},\n\t\t{\"ARPHRD_IPDDP\", Const, 0, \"\"},\n\t\t{\"ARPHRD_IPGRE\", Const, 0, \"\"},\n\t\t{\"ARPHRD_IRDA\", Const, 0, \"\"},\n\t\t{\"ARPHRD_LAPB\", Const, 0, \"\"},\n\t\t{\"ARPHRD_LOCALTLK\", Const, 0, \"\"},\n\t\t{\"ARPHRD_LOOPBACK\", Const, 0, \"\"},\n\t\t{\"ARPHRD_METRICOM\", Const, 0, \"\"},\n\t\t{\"ARPHRD_NETROM\", Const, 0, \"\"},\n\t\t{\"ARPHRD_NONE\", Const, 0, \"\"},\n\t\t{\"ARPHRD_PIMREG\", Const, 0, \"\"},\n\t\t{\"ARPHRD_PPP\", Const, 0, \"\"},\n\t\t{\"ARPHRD_PRONET\", Const, 0, \"\"},\n\t\t{\"ARPHRD_RAWHDLC\", Const, 0, \"\"},\n\t\t{\"ARPHRD_ROSE\", Const, 0, \"\"},\n\t\t{\"ARPHRD_RSRVD\", Const, 0, \"\"},\n\t\t{\"ARPHRD_SIT\", Const, 0, \"\"},\n\t\t{\"ARPHRD_SKIP\", Const, 0, \"\"},\n\t\t{\"ARPHRD_SLIP\", Const, 0, \"\"},\n\t\t{\"ARPHRD_SLIP6\", Const, 0, \"\"},\n\t\t{\"ARPHRD_STRIP\", Const, 1, \"\"},\n\t\t{\"ARPHRD_TUNNEL\", Const, 0, \"\"},\n\t\t{\"ARPHRD_TUNNEL6\", Const, 0, \"\"},\n\t\t{\"ARPHRD_VOID\", Const, 0, \"\"},\n\t\t{\"ARPHRD_X25\", Const, 0, \"\"},\n\t\t{\"AUTHTYPE_CLIENT\", Const, 0, \"\"},\n\t\t{\"AUTHTYPE_SERVER\", Const, 0, \"\"},\n\t\t{\"Accept\", Func, 0, \"func(fd int) (nfd int, sa Sockaddr, err error)\"},\n\t\t{\"Accept4\", Func, 1, \"func(fd int, flags int) (nfd int, sa Sockaddr, err error)\"},\n\t\t{\"AcceptEx\", Func, 0, \"\"},\n\t\t{\"Access\", Func, 0, \"func(path string, mode uint32) (err error)\"},\n\t\t{\"Acct\", Func, 0, \"func(path string) (err error)\"},\n\t\t{\"AddrinfoW\", Type, 1, \"\"},\n\t\t{\"AddrinfoW.Addr\", Field, 1, \"\"},\n\t\t{\"AddrinfoW.Addrlen\", Field, 1, \"\"},\n\t\t{\"AddrinfoW.Canonname\", Field, 1, \"\"},\n\t\t{\"AddrinfoW.Family\", Field, 1, \"\"},\n\t\t{\"AddrinfoW.Flags\", Field, 1, \"\"},\n\t\t{\"AddrinfoW.Next\", Field, 1, \"\"},\n\t\t{\"AddrinfoW.Protocol\", Field, 1, \"\"},\n\t\t{\"AddrinfoW.Socktype\", Field, 1, \"\"},\n\t\t{\"Adjtime\", Func, 0, \"\"},\n\t\t{\"Adjtimex\", Func, 0, \"func(buf *Timex) (state int, err error)\"},\n\t\t{\"AllThreadsSyscall\", Func, 16, \"func(trap uintptr, a1 uintptr, a2 uintptr, a3 uintptr) (r1 uintptr, r2 uintptr, err Errno)\"},\n\t\t{\"AllThreadsSyscall6\", Func, 16, \"func(trap uintptr, a1 uintptr, a2 uintptr, a3 uintptr, a4 uintptr, a5 uintptr, a6 uintptr) (r1 uintptr, r2 uintptr, err Errno)\"},\n\t\t{\"AttachLsf\", Func, 0, \"func(fd int, i []SockFilter) error\"},\n\t\t{\"B0\", Const, 0, \"\"},\n\t\t{\"B1000000\", Const, 0, \"\"},\n\t\t{\"B110\", Const, 0, \"\"},\n\t\t{\"B115200\", Const, 0, \"\"},\n\t\t{\"B1152000\", Const, 0, \"\"},\n\t\t{\"B1200\", Const, 0, \"\"},\n\t\t{\"B134\", Const, 0, \"\"},\n\t\t{\"B14400\", Const, 1, \"\"},\n\t\t{\"B150\", Const, 0, \"\"},\n\t\t{\"B1500000\", Const, 0, \"\"},\n\t\t{\"B1800\", Const, 0, \"\"},\n\t\t{\"B19200\", Const, 0, \"\"},\n\t\t{\"B200\", Const, 0, \"\"},\n\t\t{\"B2000000\", Const, 0, \"\"},\n\t\t{\"B230400\", Const, 0, \"\"},\n\t\t{\"B2400\", Const, 0, \"\"},\n\t\t{\"B2500000\", Const, 0, \"\"},\n\t\t{\"B28800\", Const, 1, \"\"},\n\t\t{\"B300\", Const, 0, \"\"},\n\t\t{\"B3000000\", Const, 0, \"\"},\n\t\t{\"B3500000\", Const, 0, \"\"},\n\t\t{\"B38400\", Const, 0, \"\"},\n\t\t{\"B4000000\", Const, 0, \"\"},\n\t\t{\"B460800\", Const, 0, \"\"},\n\t\t{\"B4800\", Const, 0, \"\"},\n\t\t{\"B50\", Const, 0, \"\"},\n\t\t{\"B500000\", Const, 0, \"\"},\n\t\t{\"B57600\", Const, 0, \"\"},\n\t\t{\"B576000\", Const, 0, \"\"},\n\t\t{\"B600\", Const, 0, \"\"},\n\t\t{\"B7200\", Const, 1, \"\"},\n\t\t{\"B75\", Const, 0, \"\"},\n\t\t{\"B76800\", Const, 1, \"\"},\n\t\t{\"B921600\", Const, 0, \"\"},\n\t\t{\"B9600\", Const, 0, \"\"},\n\t\t{\"BASE_PROTOCOL\", Const, 2, \"\"},\n\t\t{\"BIOCFEEDBACK\", Const, 0, \"\"},\n\t\t{\"BIOCFLUSH\", Const, 0, \"\"},\n\t\t{\"BIOCGBLEN\", Const, 0, \"\"},\n\t\t{\"BIOCGDIRECTION\", Const, 0, \"\"},\n\t\t{\"BIOCGDIRFILT\", Const, 1, \"\"},\n\t\t{\"BIOCGDLT\", Const, 0, \"\"},\n\t\t{\"BIOCGDLTLIST\", Const, 0, \"\"},\n\t\t{\"BIOCGETBUFMODE\", Const, 0, \"\"},\n\t\t{\"BIOCGETIF\", Const, 0, \"\"},\n\t\t{\"BIOCGETZMAX\", Const, 0, \"\"},\n\t\t{\"BIOCGFEEDBACK\", Const, 1, \"\"},\n\t\t{\"BIOCGFILDROP\", Const, 1, \"\"},\n\t\t{\"BIOCGHDRCMPLT\", Const, 0, \"\"},\n\t\t{\"BIOCGRSIG\", Const, 0, \"\"},\n\t\t{\"BIOCGRTIMEOUT\", Const, 0, \"\"},\n\t\t{\"BIOCGSEESENT\", Const, 0, \"\"},\n\t\t{\"BIOCGSTATS\", Const, 0, \"\"},\n\t\t{\"BIOCGSTATSOLD\", Const, 1, \"\"},\n\t\t{\"BIOCGTSTAMP\", Const, 1, \"\"},\n\t\t{\"BIOCIMMEDIATE\", Const, 0, \"\"},\n\t\t{\"BIOCLOCK\", Const, 0, \"\"},\n\t\t{\"BIOCPROMISC\", Const, 0, \"\"},\n\t\t{\"BIOCROTZBUF\", Const, 0, \"\"},\n\t\t{\"BIOCSBLEN\", Const, 0, \"\"},\n\t\t{\"BIOCSDIRECTION\", Const, 0, \"\"},\n\t\t{\"BIOCSDIRFILT\", Const, 1, \"\"},\n\t\t{\"BIOCSDLT\", Const, 0, \"\"},\n\t\t{\"BIOCSETBUFMODE\", Const, 0, \"\"},\n\t\t{\"BIOCSETF\", Const, 0, \"\"},\n\t\t{\"BIOCSETFNR\", Const, 0, \"\"},\n\t\t{\"BIOCSETIF\", Const, 0, \"\"},\n\t\t{\"BIOCSETWF\", Const, 0, \"\"},\n\t\t{\"BIOCSETZBUF\", Const, 0, \"\"},\n\t\t{\"BIOCSFEEDBACK\", Const, 1, \"\"},\n\t\t{\"BIOCSFILDROP\", Const, 1, \"\"},\n\t\t{\"BIOCSHDRCMPLT\", Const, 0, \"\"},\n\t\t{\"BIOCSRSIG\", Const, 0, \"\"},\n\t\t{\"BIOCSRTIMEOUT\", Const, 0, \"\"},\n\t\t{\"BIOCSSEESENT\", Const, 0, \"\"},\n\t\t{\"BIOCSTCPF\", Const, 1, \"\"},\n\t\t{\"BIOCSTSTAMP\", Const, 1, \"\"},\n\t\t{\"BIOCSUDPF\", Const, 1, \"\"},\n\t\t{\"BIOCVERSION\", Const, 0, \"\"},\n\t\t{\"BPF_A\", Const, 0, \"\"},\n\t\t{\"BPF_ABS\", Const, 0, \"\"},\n\t\t{\"BPF_ADD\", Const, 0, \"\"},\n\t\t{\"BPF_ALIGNMENT\", Const, 0, \"\"},\n\t\t{\"BPF_ALIGNMENT32\", Const, 1, \"\"},\n\t\t{\"BPF_ALU\", Const, 0, \"\"},\n\t\t{\"BPF_AND\", Const, 0, \"\"},\n\t\t{\"BPF_B\", Const, 0, \"\"},\n\t\t{\"BPF_BUFMODE_BUFFER\", Const, 0, \"\"},\n\t\t{\"BPF_BUFMODE_ZBUF\", Const, 0, \"\"},\n\t\t{\"BPF_DFLTBUFSIZE\", Const, 1, \"\"},\n\t\t{\"BPF_DIRECTION_IN\", Const, 1, \"\"},\n\t\t{\"BPF_DIRECTION_OUT\", Const, 1, \"\"},\n\t\t{\"BPF_DIV\", Const, 0, \"\"},\n\t\t{\"BPF_H\", Const, 0, \"\"},\n\t\t{\"BPF_IMM\", Const, 0, \"\"},\n\t\t{\"BPF_IND\", Const, 0, \"\"},\n\t\t{\"BPF_JA\", Const, 0, \"\"},\n\t\t{\"BPF_JEQ\", Const, 0, \"\"},\n\t\t{\"BPF_JGE\", Const, 0, \"\"},\n\t\t{\"BPF_JGT\", Const, 0, \"\"},\n\t\t{\"BPF_JMP\", Const, 0, \"\"},\n\t\t{\"BPF_JSET\", Const, 0, \"\"},\n\t\t{\"BPF_K\", Const, 0, \"\"},\n\t\t{\"BPF_LD\", Const, 0, \"\"},\n\t\t{\"BPF_LDX\", Const, 0, \"\"},\n\t\t{\"BPF_LEN\", Const, 0, \"\"},\n\t\t{\"BPF_LSH\", Const, 0, \"\"},\n\t\t{\"BPF_MAJOR_VERSION\", Const, 0, \"\"},\n\t\t{\"BPF_MAXBUFSIZE\", Const, 0, \"\"},\n\t\t{\"BPF_MAXINSNS\", Const, 0, \"\"},\n\t\t{\"BPF_MEM\", Const, 0, \"\"},\n\t\t{\"BPF_MEMWORDS\", Const, 0, \"\"},\n\t\t{\"BPF_MINBUFSIZE\", Const, 0, \"\"},\n\t\t{\"BPF_MINOR_VERSION\", Const, 0, \"\"},\n\t\t{\"BPF_MISC\", Const, 0, \"\"},\n\t\t{\"BPF_MSH\", Const, 0, \"\"},\n\t\t{\"BPF_MUL\", Const, 0, \"\"},\n\t\t{\"BPF_NEG\", Const, 0, \"\"},\n\t\t{\"BPF_OR\", Const, 0, \"\"},\n\t\t{\"BPF_RELEASE\", Const, 0, \"\"},\n\t\t{\"BPF_RET\", Const, 0, \"\"},\n\t\t{\"BPF_RSH\", Const, 0, \"\"},\n\t\t{\"BPF_ST\", Const, 0, \"\"},\n\t\t{\"BPF_STX\", Const, 0, \"\"},\n\t\t{\"BPF_SUB\", Const, 0, \"\"},\n\t\t{\"BPF_TAX\", Const, 0, \"\"},\n\t\t{\"BPF_TXA\", Const, 0, \"\"},\n\t\t{\"BPF_T_BINTIME\", Const, 1, \"\"},\n\t\t{\"BPF_T_BINTIME_FAST\", Const, 1, \"\"},\n\t\t{\"BPF_T_BINTIME_MONOTONIC\", Const, 1, \"\"},\n\t\t{\"BPF_T_BINTIME_MONOTONIC_FAST\", Const, 1, \"\"},\n\t\t{\"BPF_T_FAST\", Const, 1, \"\"},\n\t\t{\"BPF_T_FLAG_MASK\", Const, 1, \"\"},\n\t\t{\"BPF_T_FORMAT_MASK\", Const, 1, \"\"},\n\t\t{\"BPF_T_MICROTIME\", Const, 1, \"\"},\n\t\t{\"BPF_T_MICROTIME_FAST\", Const, 1, \"\"},\n\t\t{\"BPF_T_MICROTIME_MONOTONIC\", Const, 1, \"\"},\n\t\t{\"BPF_T_MICROTIME_MONOTONIC_FAST\", Const, 1, \"\"},\n\t\t{\"BPF_T_MONOTONIC\", Const, 1, \"\"},\n\t\t{\"BPF_T_MONOTONIC_FAST\", Const, 1, \"\"},\n\t\t{\"BPF_T_NANOTIME\", Const, 1, \"\"},\n\t\t{\"BPF_T_NANOTIME_FAST\", Const, 1, \"\"},\n\t\t{\"BPF_T_NANOTIME_MONOTONIC\", Const, 1, \"\"},\n\t\t{\"BPF_T_NANOTIME_MONOTONIC_FAST\", Const, 1, \"\"},\n\t\t{\"BPF_T_NONE\", Const, 1, \"\"},\n\t\t{\"BPF_T_NORMAL\", Const, 1, \"\"},\n\t\t{\"BPF_W\", Const, 0, \"\"},\n\t\t{\"BPF_X\", Const, 0, \"\"},\n\t\t{\"BRKINT\", Const, 0, \"\"},\n\t\t{\"Bind\", Func, 0, \"func(fd int, sa Sockaddr) (err error)\"},\n\t\t{\"BindToDevice\", Func, 0, \"func(fd int, device string) (err error)\"},\n\t\t{\"BpfBuflen\", Func, 0, \"\"},\n\t\t{\"BpfDatalink\", Func, 0, \"\"},\n\t\t{\"BpfHdr\", Type, 0, \"\"},\n\t\t{\"BpfHdr.Caplen\", Field, 0, \"\"},\n\t\t{\"BpfHdr.Datalen\", Field, 0, \"\"},\n\t\t{\"BpfHdr.Hdrlen\", Field, 0, \"\"},\n\t\t{\"BpfHdr.Pad_cgo_0\", Field, 0, \"\"},\n\t\t{\"BpfHdr.Tstamp\", Field, 0, \"\"},\n\t\t{\"BpfHeadercmpl\", Func, 0, \"\"},\n\t\t{\"BpfInsn\", Type, 0, \"\"},\n\t\t{\"BpfInsn.Code\", Field, 0, \"\"},\n\t\t{\"BpfInsn.Jf\", Field, 0, \"\"},\n\t\t{\"BpfInsn.Jt\", Field, 0, \"\"},\n\t\t{\"BpfInsn.K\", Field, 0, \"\"},\n\t\t{\"BpfInterface\", Func, 0, \"\"},\n\t\t{\"BpfJump\", Func, 0, \"\"},\n\t\t{\"BpfProgram\", Type, 0, \"\"},\n\t\t{\"BpfProgram.Insns\", Field, 0, \"\"},\n\t\t{\"BpfProgram.Len\", Field, 0, \"\"},\n\t\t{\"BpfProgram.Pad_cgo_0\", Field, 0, \"\"},\n\t\t{\"BpfStat\", Type, 0, \"\"},\n\t\t{\"BpfStat.Capt\", Field, 2, \"\"},\n\t\t{\"BpfStat.Drop\", Field, 0, \"\"},\n\t\t{\"BpfStat.Padding\", Field, 2, \"\"},\n\t\t{\"BpfStat.Recv\", Field, 0, \"\"},\n\t\t{\"BpfStats\", Func, 0, \"\"},\n\t\t{\"BpfStmt\", Func, 0, \"\"},\n\t\t{\"BpfTimeout\", Func, 0, \"\"},\n\t\t{\"BpfTimeval\", Type, 2, \"\"},\n\t\t{\"BpfTimeval.Sec\", Field, 2, \"\"},\n\t\t{\"BpfTimeval.Usec\", Field, 2, \"\"},\n\t\t{\"BpfVersion\", Type, 0, \"\"},\n\t\t{\"BpfVersion.Major\", Field, 0, \"\"},\n\t\t{\"BpfVersion.Minor\", Field, 0, \"\"},\n\t\t{\"BpfZbuf\", Type, 0, \"\"},\n\t\t{\"BpfZbuf.Bufa\", Field, 0, \"\"},\n\t\t{\"BpfZbuf.Bufb\", Field, 0, \"\"},\n\t\t{\"BpfZbuf.Buflen\", Field, 0, \"\"},\n\t\t{\"BpfZbufHeader\", Type, 0, \"\"},\n\t\t{\"BpfZbufHeader.Kernel_gen\", Field, 0, \"\"},\n\t\t{\"BpfZbufHeader.Kernel_len\", Field, 0, \"\"},\n\t\t{\"BpfZbufHeader.User_gen\", Field, 0, \"\"},\n\t\t{\"BpfZbufHeader.X_bzh_pad\", Field, 0, \"\"},\n\t\t{\"ByHandleFileInformation\", Type, 0, \"\"},\n\t\t{\"ByHandleFileInformation.CreationTime\", Field, 0, \"\"},\n\t\t{\"ByHandleFileInformation.FileAttributes\", Field, 0, \"\"},\n\t\t{\"ByHandleFileInformation.FileIndexHigh\", Field, 0, \"\"},\n\t\t{\"ByHandleFileInformation.FileIndexLow\", Field, 0, \"\"},\n\t\t{\"ByHandleFileInformation.FileSizeHigh\", Field, 0, \"\"},\n\t\t{\"ByHandleFileInformation.FileSizeLow\", Field, 0, \"\"},\n\t\t{\"ByHandleFileInformation.LastAccessTime\", Field, 0, \"\"},\n\t\t{\"ByHandleFileInformation.LastWriteTime\", Field, 0, \"\"},\n\t\t{\"ByHandleFileInformation.NumberOfLinks\", Field, 0, \"\"},\n\t\t{\"ByHandleFileInformation.VolumeSerialNumber\", Field, 0, \"\"},\n\t\t{\"BytePtrFromString\", Func, 1, \"func(s string) (*byte, error)\"},\n\t\t{\"ByteSliceFromString\", Func, 1, \"func(s string) ([]byte, error)\"},\n\t\t{\"CCR0_FLUSH\", Const, 1, \"\"},\n\t\t{\"CERT_CHAIN_POLICY_AUTHENTICODE\", Const, 0, \"\"},\n\t\t{\"CERT_CHAIN_POLICY_AUTHENTICODE_TS\", Const, 0, \"\"},\n\t\t{\"CERT_CHAIN_POLICY_BASE\", Const, 0, \"\"},\n\t\t{\"CERT_CHAIN_POLICY_BASIC_CONSTRAINTS\", Const, 0, \"\"},\n\t\t{\"CERT_CHAIN_POLICY_EV\", Const, 0, \"\"},\n\t\t{\"CERT_CHAIN_POLICY_MICROSOFT_ROOT\", Const, 0, \"\"},\n\t\t{\"CERT_CHAIN_POLICY_NT_AUTH\", Const, 0, \"\"},\n\t\t{\"CERT_CHAIN_POLICY_SSL\", Const, 0, \"\"},\n\t\t{\"CERT_E_CN_NO_MATCH\", Const, 0, \"\"},\n\t\t{\"CERT_E_EXPIRED\", Const, 0, \"\"},\n\t\t{\"CERT_E_PURPOSE\", Const, 0, \"\"},\n\t\t{\"CERT_E_ROLE\", Const, 0, \"\"},\n\t\t{\"CERT_E_UNTRUSTEDROOT\", Const, 0, \"\"},\n\t\t{\"CERT_STORE_ADD_ALWAYS\", Const, 0, \"\"},\n\t\t{\"CERT_STORE_DEFER_CLOSE_UNTIL_LAST_FREE_FLAG\", Const, 0, \"\"},\n\t\t{\"CERT_STORE_PROV_MEMORY\", Const, 0, \"\"},\n\t\t{\"CERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT\", Const, 0, \"\"},\n\t\t{\"CERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT\", Const, 0, \"\"},\n\t\t{\"CERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT\", Const, 0, \"\"},\n\t\t{\"CERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT\", Const, 0, \"\"},\n\t\t{\"CERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT\", Const, 0, \"\"},\n\t\t{\"CERT_TRUST_INVALID_BASIC_CONSTRAINTS\", Const, 0, \"\"},\n\t\t{\"CERT_TRUST_INVALID_EXTENSION\", Const, 0, \"\"},\n\t\t{\"CERT_TRUST_INVALID_NAME_CONSTRAINTS\", Const, 0, \"\"},\n\t\t{\"CERT_TRUST_INVALID_POLICY_CONSTRAINTS\", Const, 0, \"\"},\n\t\t{\"CERT_TRUST_IS_CYCLIC\", Const, 0, \"\"},\n\t\t{\"CERT_TRUST_IS_EXPLICIT_DISTRUST\", Const, 0, \"\"},\n\t\t{\"CERT_TRUST_IS_NOT_SIGNATURE_VALID\", Const, 0, \"\"},\n\t\t{\"CERT_TRUST_IS_NOT_TIME_VALID\", Const, 0, \"\"},\n\t\t{\"CERT_TRUST_IS_NOT_VALID_FOR_USAGE\", Const, 0, \"\"},\n\t\t{\"CERT_TRUST_IS_OFFLINE_REVOCATION\", Const, 0, \"\"},\n\t\t{\"CERT_TRUST_IS_REVOKED\", Const, 0, \"\"},\n\t\t{\"CERT_TRUST_IS_UNTRUSTED_ROOT\", Const, 0, \"\"},\n\t\t{\"CERT_TRUST_NO_ERROR\", Const, 0, \"\"},\n\t\t{\"CERT_TRUST_NO_ISSUANCE_CHAIN_POLICY\", Const, 0, \"\"},\n\t\t{\"CERT_TRUST_REVOCATION_STATUS_UNKNOWN\", Const, 0, \"\"},\n\t\t{\"CFLUSH\", Const, 1, \"\"},\n\t\t{\"CLOCAL\", Const, 0, \"\"},\n\t\t{\"CLONE_CHILD_CLEARTID\", Const, 2, \"\"},\n\t\t{\"CLONE_CHILD_SETTID\", Const, 2, \"\"},\n\t\t{\"CLONE_CLEAR_SIGHAND\", Const, 20, \"\"},\n\t\t{\"CLONE_CSIGNAL\", Const, 3, \"\"},\n\t\t{\"CLONE_DETACHED\", Const, 2, \"\"},\n\t\t{\"CLONE_FILES\", Const, 2, \"\"},\n\t\t{\"CLONE_FS\", Const, 2, \"\"},\n\t\t{\"CLONE_INTO_CGROUP\", Const, 20, \"\"},\n\t\t{\"CLONE_IO\", Const, 2, \"\"},\n\t\t{\"CLONE_NEWCGROUP\", Const, 20, \"\"},\n\t\t{\"CLONE_NEWIPC\", Const, 2, \"\"},\n\t\t{\"CLONE_NEWNET\", Const, 2, \"\"},\n\t\t{\"CLONE_NEWNS\", Const, 2, \"\"},\n\t\t{\"CLONE_NEWPID\", Const, 2, \"\"},\n\t\t{\"CLONE_NEWTIME\", Const, 20, \"\"},\n\t\t{\"CLONE_NEWUSER\", Const, 2, \"\"},\n\t\t{\"CLONE_NEWUTS\", Const, 2, \"\"},\n\t\t{\"CLONE_PARENT\", Const, 2, \"\"},\n\t\t{\"CLONE_PARENT_SETTID\", Const, 2, \"\"},\n\t\t{\"CLONE_PID\", Const, 3, \"\"},\n\t\t{\"CLONE_PIDFD\", Const, 20, \"\"},\n\t\t{\"CLONE_PTRACE\", Const, 2, \"\"},\n\t\t{\"CLONE_SETTLS\", Const, 2, \"\"},\n\t\t{\"CLONE_SIGHAND\", Const, 2, \"\"},\n\t\t{\"CLONE_SYSVSEM\", Const, 2, \"\"},\n\t\t{\"CLONE_THREAD\", Const, 2, \"\"},\n\t\t{\"CLONE_UNTRACED\", Const, 2, \"\"},\n\t\t{\"CLONE_VFORK\", Const, 2, \"\"},\n\t\t{\"CLONE_VM\", Const, 2, \"\"},\n\t\t{\"CPUID_CFLUSH\", Const, 1, \"\"},\n\t\t{\"CREAD\", Const, 0, \"\"},\n\t\t{\"CREATE_ALWAYS\", Const, 0, \"\"},\n\t\t{\"CREATE_NEW\", Const, 0, \"\"},\n\t\t{\"CREATE_NEW_PROCESS_GROUP\", Const, 1, \"\"},\n\t\t{\"CREATE_UNICODE_ENVIRONMENT\", Const, 0, \"\"},\n\t\t{\"CRYPT_DEFAULT_CONTAINER_OPTIONAL\", Const, 0, \"\"},\n\t\t{\"CRYPT_DELETEKEYSET\", Const, 0, \"\"},\n\t\t{\"CRYPT_MACHINE_KEYSET\", Const, 0, \"\"},\n\t\t{\"CRYPT_NEWKEYSET\", Const, 0, \"\"},\n\t\t{\"CRYPT_SILENT\", Const, 0, \"\"},\n\t\t{\"CRYPT_VERIFYCONTEXT\", Const, 0, \"\"},\n\t\t{\"CS5\", Const, 0, \"\"},\n\t\t{\"CS6\", Const, 0, \"\"},\n\t\t{\"CS7\", Const, 0, \"\"},\n\t\t{\"CS8\", Const, 0, \"\"},\n\t\t{\"CSIZE\", Const, 0, \"\"},\n\t\t{\"CSTART\", Const, 1, \"\"},\n\t\t{\"CSTATUS\", Const, 1, \"\"},\n\t\t{\"CSTOP\", Const, 1, \"\"},\n\t\t{\"CSTOPB\", Const, 0, \"\"},\n\t\t{\"CSUSP\", Const, 1, \"\"},\n\t\t{\"CTL_MAXNAME\", Const, 0, \"\"},\n\t\t{\"CTL_NET\", Const, 0, \"\"},\n\t\t{\"CTL_QUERY\", Const, 1, \"\"},\n\t\t{\"CTRL_BREAK_EVENT\", Const, 1, \"\"},\n\t\t{\"CTRL_CLOSE_EVENT\", Const, 14, \"\"},\n\t\t{\"CTRL_C_EVENT\", Const, 1, \"\"},\n\t\t{\"CTRL_LOGOFF_EVENT\", Const, 14, \"\"},\n\t\t{\"CTRL_SHUTDOWN_EVENT\", Const, 14, \"\"},\n\t\t{\"CancelIo\", Func, 0, \"\"},\n\t\t{\"CancelIoEx\", Func, 1, \"\"},\n\t\t{\"CertAddCertificateContextToStore\", Func, 0, \"\"},\n\t\t{\"CertChainContext\", Type, 0, \"\"},\n\t\t{\"CertChainContext.ChainCount\", Field, 0, \"\"},\n\t\t{\"CertChainContext.Chains\", Field, 0, \"\"},\n\t\t{\"CertChainContext.HasRevocationFreshnessTime\", Field, 0, \"\"},\n\t\t{\"CertChainContext.LowerQualityChainCount\", Field, 0, \"\"},\n\t\t{\"CertChainContext.LowerQualityChains\", Field, 0, \"\"},\n\t\t{\"CertChainContext.RevocationFreshnessTime\", Field, 0, \"\"},\n\t\t{\"CertChainContext.Size\", Field, 0, \"\"},\n\t\t{\"CertChainContext.TrustStatus\", Field, 0, \"\"},\n\t\t{\"CertChainElement\", Type, 0, \"\"},\n\t\t{\"CertChainElement.ApplicationUsage\", Field, 0, \"\"},\n\t\t{\"CertChainElement.CertContext\", Field, 0, \"\"},\n\t\t{\"CertChainElement.ExtendedErrorInfo\", Field, 0, \"\"},\n\t\t{\"CertChainElement.IssuanceUsage\", Field, 0, \"\"},\n\t\t{\"CertChainElement.RevocationInfo\", Field, 0, \"\"},\n\t\t{\"CertChainElement.Size\", Field, 0, \"\"},\n\t\t{\"CertChainElement.TrustStatus\", Field, 0, \"\"},\n\t\t{\"CertChainPara\", Type, 0, \"\"},\n\t\t{\"CertChainPara.CacheResync\", Field, 0, \"\"},\n\t\t{\"CertChainPara.CheckRevocationFreshnessTime\", Field, 0, \"\"},\n\t\t{\"CertChainPara.RequestedUsage\", Field, 0, \"\"},\n\t\t{\"CertChainPara.RequstedIssuancePolicy\", Field, 0, \"\"},\n\t\t{\"CertChainPara.RevocationFreshnessTime\", Field, 0, \"\"},\n\t\t{\"CertChainPara.Size\", Field, 0, \"\"},\n\t\t{\"CertChainPara.URLRetrievalTimeout\", Field, 0, \"\"},\n\t\t{\"CertChainPolicyPara\", Type, 0, \"\"},\n\t\t{\"CertChainPolicyPara.ExtraPolicyPara\", Field, 0, \"\"},\n\t\t{\"CertChainPolicyPara.Flags\", Field, 0, \"\"},\n\t\t{\"CertChainPolicyPara.Size\", Field, 0, \"\"},\n\t\t{\"CertChainPolicyStatus\", Type, 0, \"\"},\n\t\t{\"CertChainPolicyStatus.ChainIndex\", Field, 0, \"\"},\n\t\t{\"CertChainPolicyStatus.ElementIndex\", Field, 0, \"\"},\n\t\t{\"CertChainPolicyStatus.Error\", Field, 0, \"\"},\n\t\t{\"CertChainPolicyStatus.ExtraPolicyStatus\", Field, 0, \"\"},\n\t\t{\"CertChainPolicyStatus.Size\", Field, 0, \"\"},\n\t\t{\"CertCloseStore\", Func, 0, \"\"},\n\t\t{\"CertContext\", Type, 0, \"\"},\n\t\t{\"CertContext.CertInfo\", Field, 0, \"\"},\n\t\t{\"CertContext.EncodedCert\", Field, 0, \"\"},\n\t\t{\"CertContext.EncodingType\", Field, 0, \"\"},\n\t\t{\"CertContext.Length\", Field, 0, \"\"},\n\t\t{\"CertContext.Store\", Field, 0, \"\"},\n\t\t{\"CertCreateCertificateContext\", Func, 0, \"\"},\n\t\t{\"CertEnhKeyUsage\", Type, 0, \"\"},\n\t\t{\"CertEnhKeyUsage.Length\", Field, 0, \"\"},\n\t\t{\"CertEnhKeyUsage.UsageIdentifiers\", Field, 0, \"\"},\n\t\t{\"CertEnumCertificatesInStore\", Func, 0, \"\"},\n\t\t{\"CertFreeCertificateChain\", Func, 0, \"\"},\n\t\t{\"CertFreeCertificateContext\", Func, 0, \"\"},\n\t\t{\"CertGetCertificateChain\", Func, 0, \"\"},\n\t\t{\"CertInfo\", Type, 11, \"\"},\n\t\t{\"CertOpenStore\", Func, 0, \"\"},\n\t\t{\"CertOpenSystemStore\", Func, 0, \"\"},\n\t\t{\"CertRevocationCrlInfo\", Type, 11, \"\"},\n\t\t{\"CertRevocationInfo\", Type, 0, \"\"},\n\t\t{\"CertRevocationInfo.CrlInfo\", Field, 0, \"\"},\n\t\t{\"CertRevocationInfo.FreshnessTime\", Field, 0, \"\"},\n\t\t{\"CertRevocationInfo.HasFreshnessTime\", Field, 0, \"\"},\n\t\t{\"CertRevocationInfo.OidSpecificInfo\", Field, 0, \"\"},\n\t\t{\"CertRevocationInfo.RevocationOid\", Field, 0, \"\"},\n\t\t{\"CertRevocationInfo.RevocationResult\", Field, 0, \"\"},\n\t\t{\"CertRevocationInfo.Size\", Field, 0, \"\"},\n\t\t{\"CertSimpleChain\", Type, 0, \"\"},\n\t\t{\"CertSimpleChain.Elements\", Field, 0, \"\"},\n\t\t{\"CertSimpleChain.HasRevocationFreshnessTime\", Field, 0, \"\"},\n\t\t{\"CertSimpleChain.NumElements\", Field, 0, \"\"},\n\t\t{\"CertSimpleChain.RevocationFreshnessTime\", Field, 0, \"\"},\n\t\t{\"CertSimpleChain.Size\", Field, 0, \"\"},\n\t\t{\"CertSimpleChain.TrustListInfo\", Field, 0, \"\"},\n\t\t{\"CertSimpleChain.TrustStatus\", Field, 0, \"\"},\n\t\t{\"CertTrustListInfo\", Type, 11, \"\"},\n\t\t{\"CertTrustStatus\", Type, 0, \"\"},\n\t\t{\"CertTrustStatus.ErrorStatus\", Field, 0, \"\"},\n\t\t{\"CertTrustStatus.InfoStatus\", Field, 0, \"\"},\n\t\t{\"CertUsageMatch\", Type, 0, \"\"},\n\t\t{\"CertUsageMatch.Type\", Field, 0, \"\"},\n\t\t{\"CertUsageMatch.Usage\", Field, 0, \"\"},\n\t\t{\"CertVerifyCertificateChainPolicy\", Func, 0, \"\"},\n\t\t{\"Chdir\", Func, 0, \"func(path string) (err error)\"},\n\t\t{\"CheckBpfVersion\", Func, 0, \"\"},\n\t\t{\"Chflags\", Func, 0, \"\"},\n\t\t{\"Chmod\", Func, 0, \"func(path string, mode uint32) (err error)\"},\n\t\t{\"Chown\", Func, 0, \"func(path string, uid int, gid int) (err error)\"},\n\t\t{\"Chroot\", Func, 0, \"func(path string) (err error)\"},\n\t\t{\"Clearenv\", Func, 0, \"func()\"},\n\t\t{\"Close\", Func, 0, \"func(fd int) (err error)\"},\n\t\t{\"CloseHandle\", Func, 0, \"\"},\n\t\t{\"CloseOnExec\", Func, 0, \"func(fd int)\"},\n\t\t{\"Closesocket\", Func, 0, \"\"},\n\t\t{\"CmsgLen\", Func, 0, \"func(datalen int) int\"},\n\t\t{\"CmsgSpace\", Func, 0, \"func(datalen int) int\"},\n\t\t{\"Cmsghdr\", Type, 0, \"\"},\n\t\t{\"Cmsghdr.Len\", Field, 0, \"\"},\n\t\t{\"Cmsghdr.Level\", Field, 0, \"\"},\n\t\t{\"Cmsghdr.Type\", Field, 0, \"\"},\n\t\t{\"Cmsghdr.X__cmsg_data\", Field, 0, \"\"},\n\t\t{\"CommandLineToArgv\", Func, 0, \"\"},\n\t\t{\"ComputerName\", Func, 0, \"\"},\n\t\t{\"Conn\", Type, 9, \"\"},\n\t\t{\"Connect\", Func, 0, \"func(fd int, sa Sockaddr) (err error)\"},\n\t\t{\"ConnectEx\", Func, 1, \"\"},\n\t\t{\"ConvertSidToStringSid\", Func, 0, \"\"},\n\t\t{\"ConvertStringSidToSid\", Func, 0, \"\"},\n\t\t{\"CopySid\", Func, 0, \"\"},\n\t\t{\"Creat\", Func, 0, \"func(path string, mode uint32) (fd int, err error)\"},\n\t\t{\"CreateDirectory\", Func, 0, \"\"},\n\t\t{\"CreateFile\", Func, 0, \"\"},\n\t\t{\"CreateFileMapping\", Func, 0, \"\"},\n\t\t{\"CreateHardLink\", Func, 4, \"\"},\n\t\t{\"CreateIoCompletionPort\", Func, 0, \"\"},\n\t\t{\"CreatePipe\", Func, 0, \"\"},\n\t\t{\"CreateProcess\", Func, 0, \"\"},\n\t\t{\"CreateProcessAsUser\", Func, 10, \"\"},\n\t\t{\"CreateSymbolicLink\", Func, 4, \"\"},\n\t\t{\"CreateToolhelp32Snapshot\", Func, 4, \"\"},\n\t\t{\"Credential\", Type, 0, \"\"},\n\t\t{\"Credential.Gid\", Field, 0, \"\"},\n\t\t{\"Credential.Groups\", Field, 0, \"\"},\n\t\t{\"Credential.NoSetGroups\", Field, 9, \"\"},\n\t\t{\"Credential.Uid\", Field, 0, \"\"},\n\t\t{\"CryptAcquireContext\", Func, 0, \"\"},\n\t\t{\"CryptGenRandom\", Func, 0, \"\"},\n\t\t{\"CryptReleaseContext\", Func, 0, \"\"},\n\t\t{\"DIOCBSFLUSH\", Const, 1, \"\"},\n\t\t{\"DIOCOSFPFLUSH\", Const, 1, \"\"},\n\t\t{\"DLL\", Type, 0, \"\"},\n\t\t{\"DLL.Handle\", Field, 0, \"\"},\n\t\t{\"DLL.Name\", Field, 0, \"\"},\n\t\t{\"DLLError\", Type, 0, \"\"},\n\t\t{\"DLLError.Err\", Field, 0, \"\"},\n\t\t{\"DLLError.Msg\", Field, 0, \"\"},\n\t\t{\"DLLError.ObjName\", Field, 0, \"\"},\n\t\t{\"DLT_A429\", Const, 0, \"\"},\n\t\t{\"DLT_A653_ICM\", Const, 0, \"\"},\n\t\t{\"DLT_AIRONET_HEADER\", Const, 0, \"\"},\n\t\t{\"DLT_AOS\", Const, 1, \"\"},\n\t\t{\"DLT_APPLE_IP_OVER_IEEE1394\", Const, 0, \"\"},\n\t\t{\"DLT_ARCNET\", Const, 0, \"\"},\n\t\t{\"DLT_ARCNET_LINUX\", Const, 0, \"\"},\n\t\t{\"DLT_ATM_CLIP\", Const, 0, \"\"},\n\t\t{\"DLT_ATM_RFC1483\", Const, 0, \"\"},\n\t\t{\"DLT_AURORA\", Const, 0, \"\"},\n\t\t{\"DLT_AX25\", Const, 0, \"\"},\n\t\t{\"DLT_AX25_KISS\", Const, 0, \"\"},\n\t\t{\"DLT_BACNET_MS_TP\", Const, 0, \"\"},\n\t\t{\"DLT_BLUETOOTH_HCI_H4\", Const, 0, \"\"},\n\t\t{\"DLT_BLUETOOTH_HCI_H4_WITH_PHDR\", Const, 0, \"\"},\n\t\t{\"DLT_CAN20B\", Const, 0, \"\"},\n\t\t{\"DLT_CAN_SOCKETCAN\", Const, 1, \"\"},\n\t\t{\"DLT_CHAOS\", Const, 0, \"\"},\n\t\t{\"DLT_CHDLC\", Const, 0, \"\"},\n\t\t{\"DLT_CISCO_IOS\", Const, 0, \"\"},\n\t\t{\"DLT_C_HDLC\", Const, 0, \"\"},\n\t\t{\"DLT_C_HDLC_WITH_DIR\", Const, 0, \"\"},\n\t\t{\"DLT_DBUS\", Const, 1, \"\"},\n\t\t{\"DLT_DECT\", Const, 1, \"\"},\n\t\t{\"DLT_DOCSIS\", Const, 0, \"\"},\n\t\t{\"DLT_DVB_CI\", Const, 1, \"\"},\n\t\t{\"DLT_ECONET\", Const, 0, \"\"},\n\t\t{\"DLT_EN10MB\", Const, 0, \"\"},\n\t\t{\"DLT_EN3MB\", Const, 0, \"\"},\n\t\t{\"DLT_ENC\", Const, 0, \"\"},\n\t\t{\"DLT_ERF\", Const, 0, \"\"},\n\t\t{\"DLT_ERF_ETH\", Const, 0, \"\"},\n\t\t{\"DLT_ERF_POS\", Const, 0, \"\"},\n\t\t{\"DLT_FC_2\", Const, 1, \"\"},\n\t\t{\"DLT_FC_2_WITH_FRAME_DELIMS\", Const, 1, \"\"},\n\t\t{\"DLT_FDDI\", Const, 0, \"\"},\n\t\t{\"DLT_FLEXRAY\", Const, 0, \"\"},\n\t\t{\"DLT_FRELAY\", Const, 0, \"\"},\n\t\t{\"DLT_FRELAY_WITH_DIR\", Const, 0, \"\"},\n\t\t{\"DLT_GCOM_SERIAL\", Const, 0, \"\"},\n\t\t{\"DLT_GCOM_T1E1\", Const, 0, \"\"},\n\t\t{\"DLT_GPF_F\", Const, 0, \"\"},\n\t\t{\"DLT_GPF_T\", Const, 0, \"\"},\n\t\t{\"DLT_GPRS_LLC\", Const, 0, \"\"},\n\t\t{\"DLT_GSMTAP_ABIS\", Const, 1, \"\"},\n\t\t{\"DLT_GSMTAP_UM\", Const, 1, \"\"},\n\t\t{\"DLT_HDLC\", Const, 1, \"\"},\n\t\t{\"DLT_HHDLC\", Const, 0, \"\"},\n\t\t{\"DLT_HIPPI\", Const, 1, \"\"},\n\t\t{\"DLT_IBM_SN\", Const, 0, \"\"},\n\t\t{\"DLT_IBM_SP\", Const, 0, \"\"},\n\t\t{\"DLT_IEEE802\", Const, 0, \"\"},\n\t\t{\"DLT_IEEE802_11\", Const, 0, \"\"},\n\t\t{\"DLT_IEEE802_11_RADIO\", Const, 0, \"\"},\n\t\t{\"DLT_IEEE802_11_RADIO_AVS\", Const, 0, \"\"},\n\t\t{\"DLT_IEEE802_15_4\", Const, 0, \"\"},\n\t\t{\"DLT_IEEE802_15_4_LINUX\", Const, 0, \"\"},\n\t\t{\"DLT_IEEE802_15_4_NOFCS\", Const, 1, \"\"},\n\t\t{\"DLT_IEEE802_15_4_NONASK_PHY\", Const, 0, \"\"},\n\t\t{\"DLT_IEEE802_16_MAC_CPS\", Const, 0, \"\"},\n\t\t{\"DLT_IEEE802_16_MAC_CPS_RADIO\", Const, 0, \"\"},\n\t\t{\"DLT_IPFILTER\", Const, 0, \"\"},\n\t\t{\"DLT_IPMB\", Const, 0, \"\"},\n\t\t{\"DLT_IPMB_LINUX\", Const, 0, \"\"},\n\t\t{\"DLT_IPNET\", Const, 1, \"\"},\n\t\t{\"DLT_IPOIB\", Const, 1, \"\"},\n\t\t{\"DLT_IPV4\", Const, 1, \"\"},\n\t\t{\"DLT_IPV6\", Const, 1, \"\"},\n\t\t{\"DLT_IP_OVER_FC\", Const, 0, \"\"},\n\t\t{\"DLT_JUNIPER_ATM1\", Const, 0, \"\"},\n\t\t{\"DLT_JUNIPER_ATM2\", Const, 0, \"\"},\n\t\t{\"DLT_JUNIPER_ATM_CEMIC\", Const, 1, \"\"},\n\t\t{\"DLT_JUNIPER_CHDLC\", Const, 0, \"\"},\n\t\t{\"DLT_JUNIPER_ES\", Const, 0, \"\"},\n\t\t{\"DLT_JUNIPER_ETHER\", Const, 0, \"\"},\n\t\t{\"DLT_JUNIPER_FIBRECHANNEL\", Const, 1, \"\"},\n\t\t{\"DLT_JUNIPER_FRELAY\", Const, 0, \"\"},\n\t\t{\"DLT_JUNIPER_GGSN\", Const, 0, \"\"},\n\t\t{\"DLT_JUNIPER_ISM\", Const, 0, \"\"},\n\t\t{\"DLT_JUNIPER_MFR\", Const, 0, \"\"},\n\t\t{\"DLT_JUNIPER_MLFR\", Const, 0, \"\"},\n\t\t{\"DLT_JUNIPER_MLPPP\", Const, 0, \"\"},\n\t\t{\"DLT_JUNIPER_MONITOR\", Const, 0, \"\"},\n\t\t{\"DLT_JUNIPER_PIC_PEER\", Const, 0, \"\"},\n\t\t{\"DLT_JUNIPER_PPP\", Const, 0, \"\"},\n\t\t{\"DLT_JUNIPER_PPPOE\", Const, 0, \"\"},\n\t\t{\"DLT_JUNIPER_PPPOE_ATM\", Const, 0, \"\"},\n\t\t{\"DLT_JUNIPER_SERVICES\", Const, 0, \"\"},\n\t\t{\"DLT_JUNIPER_SRX_E2E\", Const, 1, \"\"},\n\t\t{\"DLT_JUNIPER_ST\", Const, 0, \"\"},\n\t\t{\"DLT_JUNIPER_VP\", Const, 0, \"\"},\n\t\t{\"DLT_JUNIPER_VS\", Const, 1, \"\"},\n\t\t{\"DLT_LAPB_WITH_DIR\", Const, 0, \"\"},\n\t\t{\"DLT_LAPD\", Const, 0, \"\"},\n\t\t{\"DLT_LIN\", Const, 0, \"\"},\n\t\t{\"DLT_LINUX_EVDEV\", Const, 1, \"\"},\n\t\t{\"DLT_LINUX_IRDA\", Const, 0, \"\"},\n\t\t{\"DLT_LINUX_LAPD\", Const, 0, \"\"},\n\t\t{\"DLT_LINUX_PPP_WITHDIRECTION\", Const, 0, \"\"},\n\t\t{\"DLT_LINUX_SLL\", Const, 0, \"\"},\n\t\t{\"DLT_LOOP\", Const, 0, \"\"},\n\t\t{\"DLT_LTALK\", Const, 0, \"\"},\n\t\t{\"DLT_MATCHING_MAX\", Const, 1, \"\"},\n\t\t{\"DLT_MATCHING_MIN\", Const, 1, \"\"},\n\t\t{\"DLT_MFR\", Const, 0, \"\"},\n\t\t{\"DLT_MOST\", Const, 0, \"\"},\n\t\t{\"DLT_MPEG_2_TS\", Const, 1, \"\"},\n\t\t{\"DLT_MPLS\", Const, 1, \"\"},\n\t\t{\"DLT_MTP2\", Const, 0, \"\"},\n\t\t{\"DLT_MTP2_WITH_PHDR\", Const, 0, \"\"},\n\t\t{\"DLT_MTP3\", Const, 0, \"\"},\n\t\t{\"DLT_MUX27010\", Const, 1, \"\"},\n\t\t{\"DLT_NETANALYZER\", Const, 1, \"\"},\n\t\t{\"DLT_NETANALYZER_TRANSPARENT\", Const, 1, \"\"},\n\t\t{\"DLT_NFC_LLCP\", Const, 1, \"\"},\n\t\t{\"DLT_NFLOG\", Const, 1, \"\"},\n\t\t{\"DLT_NG40\", Const, 1, \"\"},\n\t\t{\"DLT_NULL\", Const, 0, \"\"},\n\t\t{\"DLT_PCI_EXP\", Const, 0, \"\"},\n\t\t{\"DLT_PFLOG\", Const, 0, \"\"},\n\t\t{\"DLT_PFSYNC\", Const, 0, \"\"},\n\t\t{\"DLT_PPI\", Const, 0, \"\"},\n\t\t{\"DLT_PPP\", Const, 0, \"\"},\n\t\t{\"DLT_PPP_BSDOS\", Const, 0, \"\"},\n\t\t{\"DLT_PPP_ETHER\", Const, 0, \"\"},\n\t\t{\"DLT_PPP_PPPD\", Const, 0, \"\"},\n\t\t{\"DLT_PPP_SERIAL\", Const, 0, \"\"},\n\t\t{\"DLT_PPP_WITH_DIR\", Const, 0, \"\"},\n\t\t{\"DLT_PPP_WITH_DIRECTION\", Const, 0, \"\"},\n\t\t{\"DLT_PRISM_HEADER\", Const, 0, \"\"},\n\t\t{\"DLT_PRONET\", Const, 0, \"\"},\n\t\t{\"DLT_RAIF1\", Const, 0, \"\"},\n\t\t{\"DLT_RAW\", Const, 0, \"\"},\n\t\t{\"DLT_RAWAF_MASK\", Const, 1, \"\"},\n\t\t{\"DLT_RIO\", Const, 0, \"\"},\n\t\t{\"DLT_SCCP\", Const, 0, \"\"},\n\t\t{\"DLT_SITA\", Const, 0, \"\"},\n\t\t{\"DLT_SLIP\", Const, 0, \"\"},\n\t\t{\"DLT_SLIP_BSDOS\", Const, 0, \"\"},\n\t\t{\"DLT_STANAG_5066_D_PDU\", Const, 1, \"\"},\n\t\t{\"DLT_SUNATM\", Const, 0, \"\"},\n\t\t{\"DLT_SYMANTEC_FIREWALL\", Const, 0, \"\"},\n\t\t{\"DLT_TZSP\", Const, 0, \"\"},\n\t\t{\"DLT_USB\", Const, 0, \"\"},\n\t\t{\"DLT_USB_LINUX\", Const, 0, \"\"},\n\t\t{\"DLT_USB_LINUX_MMAPPED\", Const, 1, \"\"},\n\t\t{\"DLT_USER0\", Const, 0, \"\"},\n\t\t{\"DLT_USER1\", Const, 0, \"\"},\n\t\t{\"DLT_USER10\", Const, 0, \"\"},\n\t\t{\"DLT_USER11\", Const, 0, \"\"},\n\t\t{\"DLT_USER12\", Const, 0, \"\"},\n\t\t{\"DLT_USER13\", Const, 0, \"\"},\n\t\t{\"DLT_USER14\", Const, 0, \"\"},\n\t\t{\"DLT_USER15\", Const, 0, \"\"},\n\t\t{\"DLT_USER2\", Const, 0, \"\"},\n\t\t{\"DLT_USER3\", Const, 0, \"\"},\n\t\t{\"DLT_USER4\", Const, 0, \"\"},\n\t\t{\"DLT_USER5\", Const, 0, \"\"},\n\t\t{\"DLT_USER6\", Const, 0, \"\"},\n\t\t{\"DLT_USER7\", Const, 0, \"\"},\n\t\t{\"DLT_USER8\", Const, 0, \"\"},\n\t\t{\"DLT_USER9\", Const, 0, \"\"},\n\t\t{\"DLT_WIHART\", Const, 1, \"\"},\n\t\t{\"DLT_X2E_SERIAL\", Const, 0, \"\"},\n\t\t{\"DLT_X2E_XORAYA\", Const, 0, \"\"},\n\t\t{\"DNSMXData\", Type, 0, \"\"},\n\t\t{\"DNSMXData.NameExchange\", Field, 0, \"\"},\n\t\t{\"DNSMXData.Pad\", Field, 0, \"\"},\n\t\t{\"DNSMXData.Preference\", Field, 0, \"\"},\n\t\t{\"DNSPTRData\", Type, 0, \"\"},\n\t\t{\"DNSPTRData.Host\", Field, 0, \"\"},\n\t\t{\"DNSRecord\", Type, 0, \"\"},\n\t\t{\"DNSRecord.Data\", Field, 0, \"\"},\n\t\t{\"DNSRecord.Dw\", Field, 0, \"\"},\n\t\t{\"DNSRecord.Length\", Field, 0, \"\"},\n\t\t{\"DNSRecord.Name\", Field, 0, \"\"},\n\t\t{\"DNSRecord.Next\", Field, 0, \"\"},\n\t\t{\"DNSRecord.Reserved\", Field, 0, \"\"},\n\t\t{\"DNSRecord.Ttl\", Field, 0, \"\"},\n\t\t{\"DNSRecord.Type\", Field, 0, \"\"},\n\t\t{\"DNSSRVData\", Type, 0, \"\"},\n\t\t{\"DNSSRVData.Pad\", Field, 0, \"\"},\n\t\t{\"DNSSRVData.Port\", Field, 0, \"\"},\n\t\t{\"DNSSRVData.Priority\", Field, 0, \"\"},\n\t\t{\"DNSSRVData.Target\", Field, 0, \"\"},\n\t\t{\"DNSSRVData.Weight\", Field, 0, \"\"},\n\t\t{\"DNSTXTData\", Type, 0, \"\"},\n\t\t{\"DNSTXTData.StringArray\", Field, 0, \"\"},\n\t\t{\"DNSTXTData.StringCount\", Field, 0, \"\"},\n\t\t{\"DNS_INFO_NO_RECORDS\", Const, 4, \"\"},\n\t\t{\"DNS_TYPE_A\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_A6\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_AAAA\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_ADDRS\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_AFSDB\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_ALL\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_ANY\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_ATMA\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_AXFR\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_CERT\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_CNAME\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_DHCID\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_DNAME\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_DNSKEY\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_DS\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_EID\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_GID\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_GPOS\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_HINFO\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_ISDN\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_IXFR\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_KEY\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_KX\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_LOC\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_MAILA\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_MAILB\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_MB\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_MD\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_MF\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_MG\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_MINFO\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_MR\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_MX\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_NAPTR\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_NBSTAT\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_NIMLOC\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_NS\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_NSAP\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_NSAPPTR\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_NSEC\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_NULL\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_NXT\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_OPT\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_PTR\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_PX\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_RP\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_RRSIG\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_RT\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_SIG\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_SINK\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_SOA\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_SRV\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_TEXT\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_TKEY\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_TSIG\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_UID\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_UINFO\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_UNSPEC\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_WINS\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_WINSR\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_WKS\", Const, 0, \"\"},\n\t\t{\"DNS_TYPE_X25\", Const, 0, \"\"},\n\t\t{\"DT_BLK\", Const, 0, \"\"},\n\t\t{\"DT_CHR\", Const, 0, \"\"},\n\t\t{\"DT_DIR\", Const, 0, \"\"},\n\t\t{\"DT_FIFO\", Const, 0, \"\"},\n\t\t{\"DT_LNK\", Const, 0, \"\"},\n\t\t{\"DT_REG\", Const, 0, \"\"},\n\t\t{\"DT_SOCK\", Const, 0, \"\"},\n\t\t{\"DT_UNKNOWN\", Const, 0, \"\"},\n\t\t{\"DT_WHT\", Const, 0, \"\"},\n\t\t{\"DUPLICATE_CLOSE_SOURCE\", Const, 0, \"\"},\n\t\t{\"DUPLICATE_SAME_ACCESS\", Const, 0, \"\"},\n\t\t{\"DeleteFile\", Func, 0, \"\"},\n\t\t{\"DetachLsf\", Func, 0, \"func(fd int) error\"},\n\t\t{\"DeviceIoControl\", Func, 4, \"\"},\n\t\t{\"Dirent\", Type, 0, \"\"},\n\t\t{\"Dirent.Fileno\", Field, 0, \"\"},\n\t\t{\"Dirent.Ino\", Field, 0, \"\"},\n\t\t{\"Dirent.Name\", Field, 0, \"\"},\n\t\t{\"Dirent.Namlen\", Field, 0, \"\"},\n\t\t{\"Dirent.Off\", Field, 0, \"\"},\n\t\t{\"Dirent.Pad0\", Field, 12, \"\"},\n\t\t{\"Dirent.Pad1\", Field, 12, \"\"},\n\t\t{\"Dirent.Pad_cgo_0\", Field, 0, \"\"},\n\t\t{\"Dirent.Reclen\", Field, 0, \"\"},\n\t\t{\"Dirent.Seekoff\", Field, 0, \"\"},\n\t\t{\"Dirent.Type\", Field, 0, \"\"},\n\t\t{\"Dirent.X__d_padding\", Field, 3, \"\"},\n\t\t{\"DnsNameCompare\", Func, 4, \"\"},\n\t\t{\"DnsQuery\", Func, 0, \"\"},\n\t\t{\"DnsRecordListFree\", Func, 0, \"\"},\n\t\t{\"DnsSectionAdditional\", Const, 4, \"\"},\n\t\t{\"DnsSectionAnswer\", Const, 4, \"\"},\n\t\t{\"DnsSectionAuthority\", Const, 4, \"\"},\n\t\t{\"DnsSectionQuestion\", Const, 4, \"\"},\n\t\t{\"Dup\", Func, 0, \"func(oldfd int) (fd int, err error)\"},\n\t\t{\"Dup2\", Func, 0, \"func(oldfd int, newfd int) (err error)\"},\n\t\t{\"Dup3\", Func, 2, \"func(oldfd int, newfd int, flags int) (err error)\"},\n\t\t{\"DuplicateHandle\", Func, 0, \"\"},\n\t\t{\"E2BIG\", Const, 0, \"\"},\n\t\t{\"EACCES\", Const, 0, \"\"},\n\t\t{\"EADDRINUSE\", Const, 0, \"\"},\n\t\t{\"EADDRNOTAVAIL\", Const, 0, \"\"},\n\t\t{\"EADV\", Const, 0, \"\"},\n\t\t{\"EAFNOSUPPORT\", Const, 0, \"\"},\n\t\t{\"EAGAIN\", Const, 0, \"\"},\n\t\t{\"EALREADY\", Const, 0, \"\"},\n\t\t{\"EAUTH\", Const, 0, \"\"},\n\t\t{\"EBADARCH\", Const, 0, \"\"},\n\t\t{\"EBADE\", Const, 0, \"\"},\n\t\t{\"EBADEXEC\", Const, 0, \"\"},\n\t\t{\"EBADF\", Const, 0, \"\"},\n\t\t{\"EBADFD\", Const, 0, \"\"},\n\t\t{\"EBADMACHO\", Const, 0, \"\"},\n\t\t{\"EBADMSG\", Const, 0, \"\"},\n\t\t{\"EBADR\", Const, 0, \"\"},\n\t\t{\"EBADRPC\", Const, 0, \"\"},\n\t\t{\"EBADRQC\", Const, 0, \"\"},\n\t\t{\"EBADSLT\", Const, 0, \"\"},\n\t\t{\"EBFONT\", Const, 0, \"\"},\n\t\t{\"EBUSY\", Const, 0, \"\"},\n\t\t{\"ECANCELED\", Const, 0, \"\"},\n\t\t{\"ECAPMODE\", Const, 1, \"\"},\n\t\t{\"ECHILD\", Const, 0, \"\"},\n\t\t{\"ECHO\", Const, 0, \"\"},\n\t\t{\"ECHOCTL\", Const, 0, \"\"},\n\t\t{\"ECHOE\", Const, 0, \"\"},\n\t\t{\"ECHOK\", Const, 0, \"\"},\n\t\t{\"ECHOKE\", Const, 0, \"\"},\n\t\t{\"ECHONL\", Const, 0, \"\"},\n\t\t{\"ECHOPRT\", Const, 0, \"\"},\n\t\t{\"ECHRNG\", Const, 0, \"\"},\n\t\t{\"ECOMM\", Const, 0, \"\"},\n\t\t{\"ECONNABORTED\", Const, 0, \"\"},\n\t\t{\"ECONNREFUSED\", Const, 0, \"\"},\n\t\t{\"ECONNRESET\", Const, 0, \"\"},\n\t\t{\"EDEADLK\", Const, 0, \"\"},\n\t\t{\"EDEADLOCK\", Const, 0, \"\"},\n\t\t{\"EDESTADDRREQ\", Const, 0, \"\"},\n\t\t{\"EDEVERR\", Const, 0, \"\"},\n\t\t{\"EDOM\", Const, 0, \"\"},\n\t\t{\"EDOOFUS\", Const, 0, \"\"},\n\t\t{\"EDOTDOT\", Const, 0, \"\"},\n\t\t{\"EDQUOT\", Const, 0, \"\"},\n\t\t{\"EEXIST\", Const, 0, \"\"},\n\t\t{\"EFAULT\", Const, 0, \"\"},\n\t\t{\"EFBIG\", Const, 0, \"\"},\n\t\t{\"EFER_LMA\", Const, 1, \"\"},\n\t\t{\"EFER_LME\", Const, 1, \"\"},\n\t\t{\"EFER_NXE\", Const, 1, \"\"},\n\t\t{\"EFER_SCE\", Const, 1, \"\"},\n\t\t{\"EFTYPE\", Const, 0, \"\"},\n\t\t{\"EHOSTDOWN\", Const, 0, \"\"},\n\t\t{\"EHOSTUNREACH\", Const, 0, \"\"},\n\t\t{\"EHWPOISON\", Const, 0, \"\"},\n\t\t{\"EIDRM\", Const, 0, \"\"},\n\t\t{\"EILSEQ\", Const, 0, \"\"},\n\t\t{\"EINPROGRESS\", Const, 0, \"\"},\n\t\t{\"EINTR\", Const, 0, \"\"},\n\t\t{\"EINVAL\", Const, 0, \"\"},\n\t\t{\"EIO\", Const, 0, \"\"},\n\t\t{\"EIPSEC\", Const, 1, \"\"},\n\t\t{\"EISCONN\", Const, 0, \"\"},\n\t\t{\"EISDIR\", Const, 0, \"\"},\n\t\t{\"EISNAM\", Const, 0, \"\"},\n\t\t{\"EKEYEXPIRED\", Const, 0, \"\"},\n\t\t{\"EKEYREJECTED\", Const, 0, \"\"},\n\t\t{\"EKEYREVOKED\", Const, 0, \"\"},\n\t\t{\"EL2HLT\", Const, 0, \"\"},\n\t\t{\"EL2NSYNC\", Const, 0, \"\"},\n\t\t{\"EL3HLT\", Const, 0, \"\"},\n\t\t{\"EL3RST\", Const, 0, \"\"},\n\t\t{\"ELAST\", Const, 0, \"\"},\n\t\t{\"ELF_NGREG\", Const, 0, \"\"},\n\t\t{\"ELF_PRARGSZ\", Const, 0, \"\"},\n\t\t{\"ELIBACC\", Const, 0, \"\"},\n\t\t{\"ELIBBAD\", Const, 0, \"\"},\n\t\t{\"ELIBEXEC\", Const, 0, \"\"},\n\t\t{\"ELIBMAX\", Const, 0, \"\"},\n\t\t{\"ELIBSCN\", Const, 0, \"\"},\n\t\t{\"ELNRNG\", Const, 0, \"\"},\n\t\t{\"ELOOP\", Const, 0, \"\"},\n\t\t{\"EMEDIUMTYPE\", Const, 0, \"\"},\n\t\t{\"EMFILE\", Const, 0, \"\"},\n\t\t{\"EMLINK\", Const, 0, \"\"},\n\t\t{\"EMSGSIZE\", Const, 0, \"\"},\n\t\t{\"EMT_TAGOVF\", Const, 1, \"\"},\n\t\t{\"EMULTIHOP\", Const, 0, \"\"},\n\t\t{\"EMUL_ENABLED\", Const, 1, \"\"},\n\t\t{\"EMUL_LINUX\", Const, 1, \"\"},\n\t\t{\"EMUL_LINUX32\", Const, 1, \"\"},\n\t\t{\"EMUL_MAXID\", Const, 1, \"\"},\n\t\t{\"EMUL_NATIVE\", Const, 1, \"\"},\n\t\t{\"ENAMETOOLONG\", Const, 0, \"\"},\n\t\t{\"ENAVAIL\", Const, 0, \"\"},\n\t\t{\"ENDRUNDISC\", Const, 1, \"\"},\n\t\t{\"ENEEDAUTH\", Const, 0, \"\"},\n\t\t{\"ENETDOWN\", Const, 0, \"\"},\n\t\t{\"ENETRESET\", Const, 0, \"\"},\n\t\t{\"ENETUNREACH\", Const, 0, \"\"},\n\t\t{\"ENFILE\", Const, 0, \"\"},\n\t\t{\"ENOANO\", Const, 0, \"\"},\n\t\t{\"ENOATTR\", Const, 0, \"\"},\n\t\t{\"ENOBUFS\", Const, 0, \"\"},\n\t\t{\"ENOCSI\", Const, 0, \"\"},\n\t\t{\"ENODATA\", Const, 0, \"\"},\n\t\t{\"ENODEV\", Const, 0, \"\"},\n\t\t{\"ENOENT\", Const, 0, \"\"},\n\t\t{\"ENOEXEC\", Const, 0, \"\"},\n\t\t{\"ENOKEY\", Const, 0, \"\"},\n\t\t{\"ENOLCK\", Const, 0, \"\"},\n\t\t{\"ENOLINK\", Const, 0, \"\"},\n\t\t{\"ENOMEDIUM\", Const, 0, \"\"},\n\t\t{\"ENOMEM\", Const, 0, \"\"},\n\t\t{\"ENOMSG\", Const, 0, \"\"},\n\t\t{\"ENONET\", Const, 0, \"\"},\n\t\t{\"ENOPKG\", Const, 0, \"\"},\n\t\t{\"ENOPOLICY\", Const, 0, \"\"},\n\t\t{\"ENOPROTOOPT\", Const, 0, \"\"},\n\t\t{\"ENOSPC\", Const, 0, \"\"},\n\t\t{\"ENOSR\", Const, 0, \"\"},\n\t\t{\"ENOSTR\", Const, 0, \"\"},\n\t\t{\"ENOSYS\", Const, 0, \"\"},\n\t\t{\"ENOTBLK\", Const, 0, \"\"},\n\t\t{\"ENOTCAPABLE\", Const, 0, \"\"},\n\t\t{\"ENOTCONN\", Const, 0, \"\"},\n\t\t{\"ENOTDIR\", Const, 0, \"\"},\n\t\t{\"ENOTEMPTY\", Const, 0, \"\"},\n\t\t{\"ENOTNAM\", Const, 0, \"\"},\n\t\t{\"ENOTRECOVERABLE\", Const, 0, \"\"},\n\t\t{\"ENOTSOCK\", Const, 0, \"\"},\n\t\t{\"ENOTSUP\", Const, 0, \"\"},\n\t\t{\"ENOTTY\", Const, 0, \"\"},\n\t\t{\"ENOTUNIQ\", Const, 0, \"\"},\n\t\t{\"ENXIO\", Const, 0, \"\"},\n\t\t{\"EN_SW_CTL_INF\", Const, 1, \"\"},\n\t\t{\"EN_SW_CTL_PREC\", Const, 1, \"\"},\n\t\t{\"EN_SW_CTL_ROUND\", Const, 1, \"\"},\n\t\t{\"EN_SW_DATACHAIN\", Const, 1, \"\"},\n\t\t{\"EN_SW_DENORM\", Const, 1, \"\"},\n\t\t{\"EN_SW_INVOP\", Const, 1, \"\"},\n\t\t{\"EN_SW_OVERFLOW\", Const, 1, \"\"},\n\t\t{\"EN_SW_PRECLOSS\", Const, 1, \"\"},\n\t\t{\"EN_SW_UNDERFLOW\", Const, 1, \"\"},\n\t\t{\"EN_SW_ZERODIV\", Const, 1, \"\"},\n\t\t{\"EOPNOTSUPP\", Const, 0, \"\"},\n\t\t{\"EOVERFLOW\", Const, 0, \"\"},\n\t\t{\"EOWNERDEAD\", Const, 0, \"\"},\n\t\t{\"EPERM\", Const, 0, \"\"},\n\t\t{\"EPFNOSUPPORT\", Const, 0, \"\"},\n\t\t{\"EPIPE\", Const, 0, \"\"},\n\t\t{\"EPOLLERR\", Const, 0, \"\"},\n\t\t{\"EPOLLET\", Const, 0, \"\"},\n\t\t{\"EPOLLHUP\", Const, 0, \"\"},\n\t\t{\"EPOLLIN\", Const, 0, \"\"},\n\t\t{\"EPOLLMSG\", Const, 0, \"\"},\n\t\t{\"EPOLLONESHOT\", Const, 0, \"\"},\n\t\t{\"EPOLLOUT\", Const, 0, \"\"},\n\t\t{\"EPOLLPRI\", Const, 0, \"\"},\n\t\t{\"EPOLLRDBAND\", Const, 0, \"\"},\n\t\t{\"EPOLLRDHUP\", Const, 0, \"\"},\n\t\t{\"EPOLLRDNORM\", Const, 0, \"\"},\n\t\t{\"EPOLLWRBAND\", Const, 0, \"\"},\n\t\t{\"EPOLLWRNORM\", Const, 0, \"\"},\n\t\t{\"EPOLL_CLOEXEC\", Const, 0, \"\"},\n\t\t{\"EPOLL_CTL_ADD\", Const, 0, \"\"},\n\t\t{\"EPOLL_CTL_DEL\", Const, 0, \"\"},\n\t\t{\"EPOLL_CTL_MOD\", Const, 0, \"\"},\n\t\t{\"EPOLL_NONBLOCK\", Const, 0, \"\"},\n\t\t{\"EPROCLIM\", Const, 0, \"\"},\n\t\t{\"EPROCUNAVAIL\", Const, 0, \"\"},\n\t\t{\"EPROGMISMATCH\", Const, 0, \"\"},\n\t\t{\"EPROGUNAVAIL\", Const, 0, \"\"},\n\t\t{\"EPROTO\", Const, 0, \"\"},\n\t\t{\"EPROTONOSUPPORT\", Const, 0, \"\"},\n\t\t{\"EPROTOTYPE\", Const, 0, \"\"},\n\t\t{\"EPWROFF\", Const, 0, \"\"},\n\t\t{\"EQFULL\", Const, 16, \"\"},\n\t\t{\"ERANGE\", Const, 0, \"\"},\n\t\t{\"EREMCHG\", Const, 0, \"\"},\n\t\t{\"EREMOTE\", Const, 0, \"\"},\n\t\t{\"EREMOTEIO\", Const, 0, \"\"},\n\t\t{\"ERESTART\", Const, 0, \"\"},\n\t\t{\"ERFKILL\", Const, 0, \"\"},\n\t\t{\"EROFS\", Const, 0, \"\"},\n\t\t{\"ERPCMISMATCH\", Const, 0, \"\"},\n\t\t{\"ERROR_ACCESS_DENIED\", Const, 0, \"\"},\n\t\t{\"ERROR_ALREADY_EXISTS\", Const, 0, \"\"},\n\t\t{\"ERROR_BROKEN_PIPE\", Const, 0, \"\"},\n\t\t{\"ERROR_BUFFER_OVERFLOW\", Const, 0, \"\"},\n\t\t{\"ERROR_DIR_NOT_EMPTY\", Const, 8, \"\"},\n\t\t{\"ERROR_ENVVAR_NOT_FOUND\", Const, 0, \"\"},\n\t\t{\"ERROR_FILE_EXISTS\", Const, 0, \"\"},\n\t\t{\"ERROR_FILE_NOT_FOUND\", Const, 0, \"\"},\n\t\t{\"ERROR_HANDLE_EOF\", Const, 2, \"\"},\n\t\t{\"ERROR_INSUFFICIENT_BUFFER\", Const, 0, \"\"},\n\t\t{\"ERROR_IO_PENDING\", Const, 0, \"\"},\n\t\t{\"ERROR_MOD_NOT_FOUND\", Const, 0, \"\"},\n\t\t{\"ERROR_MORE_DATA\", Const, 3, \"\"},\n\t\t{\"ERROR_NETNAME_DELETED\", Const, 3, \"\"},\n\t\t{\"ERROR_NOT_FOUND\", Const, 1, \"\"},\n\t\t{\"ERROR_NO_MORE_FILES\", Const, 0, \"\"},\n\t\t{\"ERROR_OPERATION_ABORTED\", Const, 0, \"\"},\n\t\t{\"ERROR_PATH_NOT_FOUND\", Const, 0, \"\"},\n\t\t{\"ERROR_PRIVILEGE_NOT_HELD\", Const, 4, \"\"},\n\t\t{\"ERROR_PROC_NOT_FOUND\", Const, 0, \"\"},\n\t\t{\"ESHLIBVERS\", Const, 0, \"\"},\n\t\t{\"ESHUTDOWN\", Const, 0, \"\"},\n\t\t{\"ESOCKTNOSUPPORT\", Const, 0, \"\"},\n\t\t{\"ESPIPE\", Const, 0, \"\"},\n\t\t{\"ESRCH\", Const, 0, \"\"},\n\t\t{\"ESRMNT\", Const, 0, \"\"},\n\t\t{\"ESTALE\", Const, 0, \"\"},\n\t\t{\"ESTRPIPE\", Const, 0, \"\"},\n\t\t{\"ETHERCAP_JUMBO_MTU\", Const, 1, \"\"},\n\t\t{\"ETHERCAP_VLAN_HWTAGGING\", Const, 1, \"\"},\n\t\t{\"ETHERCAP_VLAN_MTU\", Const, 1, \"\"},\n\t\t{\"ETHERMIN\", Const, 1, \"\"},\n\t\t{\"ETHERMTU\", Const, 1, \"\"},\n\t\t{\"ETHERMTU_JUMBO\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_8023\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_AARP\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_ACCTON\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_AEONIC\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_ALPHA\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_AMBER\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_AMOEBA\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_AOE\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_APOLLO\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_APOLLODOMAIN\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_APPLETALK\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_APPLITEK\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_ARGONAUT\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_ARP\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_AT\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_ATALK\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_ATOMIC\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_ATT\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_ATTSTANFORD\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_AUTOPHON\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_AXIS\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_BCLOOP\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_BOFL\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_CABLETRON\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_CHAOS\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_COMDESIGN\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_COMPUGRAPHIC\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_COUNTERPOINT\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_CRONUS\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_CRONUSVLN\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_DCA\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_DDE\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_DEBNI\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_DECAM\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_DECCUST\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_DECDIAG\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_DECDNS\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_DECDTS\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_DECEXPER\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_DECLAST\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_DECLTM\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_DECMUMPS\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_DECNETBIOS\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_DELTACON\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_DIDDLE\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_DLOG1\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_DLOG2\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_DN\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_DOGFIGHT\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_DSMD\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_ECMA\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_ENCRYPT\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_ES\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_EXCELAN\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_EXPERDATA\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_FLIP\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_FLOWCONTROL\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_FRARP\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_GENDYN\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_HAYES\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_HIPPI_FP\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_HITACHI\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_HP\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_IEEEPUP\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_IEEEPUPAT\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_IMLBL\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_IMLBLDIAG\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_IP\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_IPAS\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_IPV6\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_IPX\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_IPXNEW\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_KALPANA\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_LANBRIDGE\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_LANPROBE\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_LAT\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_LBACK\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_LITTLE\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_LLDP\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_LOGICRAFT\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_LOOPBACK\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_MATRA\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_MAX\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_MERIT\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_MICP\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_MOPDL\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_MOPRC\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_MOTOROLA\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_MPLS\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_MPLS_MCAST\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_MUMPS\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_NBPCC\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_NBPCLAIM\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_NBPCLREQ\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_NBPCLRSP\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_NBPCREQ\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_NBPCRSP\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_NBPDG\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_NBPDGB\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_NBPDLTE\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_NBPRAR\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_NBPRAS\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_NBPRST\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_NBPSCD\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_NBPVCD\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_NBS\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_NCD\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_NESTAR\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_NETBEUI\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_NOVELL\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_NS\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_NSAT\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_NSCOMPAT\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_NTRAILER\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_OS9\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_OS9NET\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_PACER\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_PAE\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_PCS\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_PLANNING\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_PPP\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_PPPOE\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_PPPOEDISC\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_PRIMENTS\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_PUP\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_PUPAT\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_QINQ\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_RACAL\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_RATIONAL\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_RAWFR\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_RCL\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_RDP\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_RETIX\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_REVARP\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_SCA\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_SECTRA\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_SECUREDATA\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_SGITW\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_SG_BOUNCE\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_SG_DIAG\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_SG_NETGAMES\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_SG_RESV\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_SIMNET\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_SLOW\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_SLOWPROTOCOLS\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_SNA\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_SNMP\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_SONIX\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_SPIDER\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_SPRITE\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_STP\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_TALARIS\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_TALARISMC\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_TCPCOMP\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_TCPSM\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_TEC\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_TIGAN\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_TRAIL\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_TRANSETHER\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_TYMSHARE\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_UBBST\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_UBDEBUG\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_UBDIAGLOOP\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_UBDL\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_UBNIU\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_UBNMC\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_VALID\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_VARIAN\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_VAXELN\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_VEECO\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_VEXP\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_VGLAB\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_VINES\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_VINESECHO\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_VINESLOOP\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_VITAL\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_VLAN\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_VLTLMAN\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_VPROD\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_VURESERVED\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_WATERLOO\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_WELLFLEET\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_X25\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_X75\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_XNSSM\", Const, 1, \"\"},\n\t\t{\"ETHERTYPE_XTP\", Const, 1, \"\"},\n\t\t{\"ETHER_ADDR_LEN\", Const, 1, \"\"},\n\t\t{\"ETHER_ALIGN\", Const, 1, \"\"},\n\t\t{\"ETHER_CRC_LEN\", Const, 1, \"\"},\n\t\t{\"ETHER_CRC_POLY_BE\", Const, 1, \"\"},\n\t\t{\"ETHER_CRC_POLY_LE\", Const, 1, \"\"},\n\t\t{\"ETHER_HDR_LEN\", Const, 1, \"\"},\n\t\t{\"ETHER_MAX_DIX_LEN\", Const, 1, \"\"},\n\t\t{\"ETHER_MAX_LEN\", Const, 1, \"\"},\n\t\t{\"ETHER_MAX_LEN_JUMBO\", Const, 1, \"\"},\n\t\t{\"ETHER_MIN_LEN\", Const, 1, \"\"},\n\t\t{\"ETHER_PPPOE_ENCAP_LEN\", Const, 1, \"\"},\n\t\t{\"ETHER_TYPE_LEN\", Const, 1, \"\"},\n\t\t{\"ETHER_VLAN_ENCAP_LEN\", Const, 1, \"\"},\n\t\t{\"ETH_P_1588\", Const, 0, \"\"},\n\t\t{\"ETH_P_8021Q\", Const, 0, \"\"},\n\t\t{\"ETH_P_802_2\", Const, 0, \"\"},\n\t\t{\"ETH_P_802_3\", Const, 0, \"\"},\n\t\t{\"ETH_P_AARP\", Const, 0, \"\"},\n\t\t{\"ETH_P_ALL\", Const, 0, \"\"},\n\t\t{\"ETH_P_AOE\", Const, 0, \"\"},\n\t\t{\"ETH_P_ARCNET\", Const, 0, \"\"},\n\t\t{\"ETH_P_ARP\", Const, 0, \"\"},\n\t\t{\"ETH_P_ATALK\", Const, 0, \"\"},\n\t\t{\"ETH_P_ATMFATE\", Const, 0, \"\"},\n\t\t{\"ETH_P_ATMMPOA\", Const, 0, \"\"},\n\t\t{\"ETH_P_AX25\", Const, 0, \"\"},\n\t\t{\"ETH_P_BPQ\", Const, 0, \"\"},\n\t\t{\"ETH_P_CAIF\", Const, 0, \"\"},\n\t\t{\"ETH_P_CAN\", Const, 0, \"\"},\n\t\t{\"ETH_P_CONTROL\", Const, 0, \"\"},\n\t\t{\"ETH_P_CUST\", Const, 0, \"\"},\n\t\t{\"ETH_P_DDCMP\", Const, 0, \"\"},\n\t\t{\"ETH_P_DEC\", Const, 0, \"\"},\n\t\t{\"ETH_P_DIAG\", Const, 0, \"\"},\n\t\t{\"ETH_P_DNA_DL\", Const, 0, \"\"},\n\t\t{\"ETH_P_DNA_RC\", Const, 0, \"\"},\n\t\t{\"ETH_P_DNA_RT\", Const, 0, \"\"},\n\t\t{\"ETH_P_DSA\", Const, 0, \"\"},\n\t\t{\"ETH_P_ECONET\", Const, 0, \"\"},\n\t\t{\"ETH_P_EDSA\", Const, 0, \"\"},\n\t\t{\"ETH_P_FCOE\", Const, 0, \"\"},\n\t\t{\"ETH_P_FIP\", Const, 0, \"\"},\n\t\t{\"ETH_P_HDLC\", Const, 0, \"\"},\n\t\t{\"ETH_P_IEEE802154\", Const, 0, \"\"},\n\t\t{\"ETH_P_IEEEPUP\", Const, 0, \"\"},\n\t\t{\"ETH_P_IEEEPUPAT\", Const, 0, \"\"},\n\t\t{\"ETH_P_IP\", Const, 0, \"\"},\n\t\t{\"ETH_P_IPV6\", Const, 0, \"\"},\n\t\t{\"ETH_P_IPX\", Const, 0, \"\"},\n\t\t{\"ETH_P_IRDA\", Const, 0, \"\"},\n\t\t{\"ETH_P_LAT\", Const, 0, \"\"},\n\t\t{\"ETH_P_LINK_CTL\", Const, 0, \"\"},\n\t\t{\"ETH_P_LOCALTALK\", Const, 0, \"\"},\n\t\t{\"ETH_P_LOOP\", Const, 0, \"\"},\n\t\t{\"ETH_P_MOBITEX\", Const, 0, \"\"},\n\t\t{\"ETH_P_MPLS_MC\", Const, 0, \"\"},\n\t\t{\"ETH_P_MPLS_UC\", Const, 0, \"\"},\n\t\t{\"ETH_P_PAE\", Const, 0, \"\"},\n\t\t{\"ETH_P_PAUSE\", Const, 0, \"\"},\n\t\t{\"ETH_P_PHONET\", Const, 0, \"\"},\n\t\t{\"ETH_P_PPPTALK\", Const, 0, \"\"},\n\t\t{\"ETH_P_PPP_DISC\", Const, 0, \"\"},\n\t\t{\"ETH_P_PPP_MP\", Const, 0, \"\"},\n\t\t{\"ETH_P_PPP_SES\", Const, 0, \"\"},\n\t\t{\"ETH_P_PUP\", Const, 0, \"\"},\n\t\t{\"ETH_P_PUPAT\", Const, 0, \"\"},\n\t\t{\"ETH_P_RARP\", Const, 0, \"\"},\n\t\t{\"ETH_P_SCA\", Const, 0, \"\"},\n\t\t{\"ETH_P_SLOW\", Const, 0, \"\"},\n\t\t{\"ETH_P_SNAP\", Const, 0, \"\"},\n\t\t{\"ETH_P_TEB\", Const, 0, \"\"},\n\t\t{\"ETH_P_TIPC\", Const, 0, \"\"},\n\t\t{\"ETH_P_TRAILER\", Const, 0, \"\"},\n\t\t{\"ETH_P_TR_802_2\", Const, 0, \"\"},\n\t\t{\"ETH_P_WAN_PPP\", Const, 0, \"\"},\n\t\t{\"ETH_P_WCCP\", Const, 0, \"\"},\n\t\t{\"ETH_P_X25\", Const, 0, \"\"},\n\t\t{\"ETIME\", Const, 0, \"\"},\n\t\t{\"ETIMEDOUT\", Const, 0, \"\"},\n\t\t{\"ETOOMANYREFS\", Const, 0, \"\"},\n\t\t{\"ETXTBSY\", Const, 0, \"\"},\n\t\t{\"EUCLEAN\", Const, 0, \"\"},\n\t\t{\"EUNATCH\", Const, 0, \"\"},\n\t\t{\"EUSERS\", Const, 0, \"\"},\n\t\t{\"EVFILT_AIO\", Const, 0, \"\"},\n\t\t{\"EVFILT_FS\", Const, 0, \"\"},\n\t\t{\"EVFILT_LIO\", Const, 0, \"\"},\n\t\t{\"EVFILT_MACHPORT\", Const, 0, \"\"},\n\t\t{\"EVFILT_PROC\", Const, 0, \"\"},\n\t\t{\"EVFILT_READ\", Const, 0, \"\"},\n\t\t{\"EVFILT_SIGNAL\", Const, 0, \"\"},\n\t\t{\"EVFILT_SYSCOUNT\", Const, 0, \"\"},\n\t\t{\"EVFILT_THREADMARKER\", Const, 0, \"\"},\n\t\t{\"EVFILT_TIMER\", Const, 0, \"\"},\n\t\t{\"EVFILT_USER\", Const, 0, \"\"},\n\t\t{\"EVFILT_VM\", Const, 0, \"\"},\n\t\t{\"EVFILT_VNODE\", Const, 0, \"\"},\n\t\t{\"EVFILT_WRITE\", Const, 0, \"\"},\n\t\t{\"EV_ADD\", Const, 0, \"\"},\n\t\t{\"EV_CLEAR\", Const, 0, \"\"},\n\t\t{\"EV_DELETE\", Const, 0, \"\"},\n\t\t{\"EV_DISABLE\", Const, 0, \"\"},\n\t\t{\"EV_DISPATCH\", Const, 0, \"\"},\n\t\t{\"EV_DROP\", Const, 3, \"\"},\n\t\t{\"EV_ENABLE\", Const, 0, \"\"},\n\t\t{\"EV_EOF\", Const, 0, \"\"},\n\t\t{\"EV_ERROR\", Const, 0, \"\"},\n\t\t{\"EV_FLAG0\", Const, 0, \"\"},\n\t\t{\"EV_FLAG1\", Const, 0, \"\"},\n\t\t{\"EV_ONESHOT\", Const, 0, \"\"},\n\t\t{\"EV_OOBAND\", Const, 0, \"\"},\n\t\t{\"EV_POLL\", Const, 0, \"\"},\n\t\t{\"EV_RECEIPT\", Const, 0, \"\"},\n\t\t{\"EV_SYSFLAGS\", Const, 0, \"\"},\n\t\t{\"EWINDOWS\", Const, 0, \"\"},\n\t\t{\"EWOULDBLOCK\", Const, 0, \"\"},\n\t\t{\"EXDEV\", Const, 0, \"\"},\n\t\t{\"EXFULL\", Const, 0, \"\"},\n\t\t{\"EXTA\", Const, 0, \"\"},\n\t\t{\"EXTB\", Const, 0, \"\"},\n\t\t{\"EXTPROC\", Const, 0, \"\"},\n\t\t{\"Environ\", Func, 0, \"func() []string\"},\n\t\t{\"EpollCreate\", Func, 0, \"func(size int) (fd int, err error)\"},\n\t\t{\"EpollCreate1\", Func, 0, \"func(flag int) (fd int, err error)\"},\n\t\t{\"EpollCtl\", Func, 0, \"func(epfd int, op int, fd int, event *EpollEvent) (err error)\"},\n\t\t{\"EpollEvent\", Type, 0, \"\"},\n\t\t{\"EpollEvent.Events\", Field, 0, \"\"},\n\t\t{\"EpollEvent.Fd\", Field, 0, \"\"},\n\t\t{\"EpollEvent.Pad\", Field, 0, \"\"},\n\t\t{\"EpollEvent.PadFd\", Field, 0, \"\"},\n\t\t{\"EpollWait\", Func, 0, \"func(epfd int, events []EpollEvent, msec int) (n int, err error)\"},\n\t\t{\"Errno\", Type, 0, \"\"},\n\t\t{\"EscapeArg\", Func, 0, \"\"},\n\t\t{\"Exchangedata\", Func, 0, \"\"},\n\t\t{\"Exec\", Func, 0, \"func(argv0 string, argv []string, envv []string) (err error)\"},\n\t\t{\"Exit\", Func, 0, \"func(code int)\"},\n\t\t{\"ExitProcess\", Func, 0, \"\"},\n\t\t{\"FD_CLOEXEC\", Const, 0, \"\"},\n\t\t{\"FD_SETSIZE\", Const, 0, \"\"},\n\t\t{\"FILE_ACTION_ADDED\", Const, 0, \"\"},\n\t\t{\"FILE_ACTION_MODIFIED\", Const, 0, \"\"},\n\t\t{\"FILE_ACTION_REMOVED\", Const, 0, \"\"},\n\t\t{\"FILE_ACTION_RENAMED_NEW_NAME\", Const, 0, \"\"},\n\t\t{\"FILE_ACTION_RENAMED_OLD_NAME\", Const, 0, \"\"},\n\t\t{\"FILE_APPEND_DATA\", Const, 0, \"\"},\n\t\t{\"FILE_ATTRIBUTE_ARCHIVE\", Const, 0, \"\"},\n\t\t{\"FILE_ATTRIBUTE_DIRECTORY\", Const, 0, \"\"},\n\t\t{\"FILE_ATTRIBUTE_HIDDEN\", Const, 0, \"\"},\n\t\t{\"FILE_ATTRIBUTE_NORMAL\", Const, 0, \"\"},\n\t\t{\"FILE_ATTRIBUTE_READONLY\", Const, 0, \"\"},\n\t\t{\"FILE_ATTRIBUTE_REPARSE_POINT\", Const, 4, \"\"},\n\t\t{\"FILE_ATTRIBUTE_SYSTEM\", Const, 0, \"\"},\n\t\t{\"FILE_BEGIN\", Const, 0, \"\"},\n\t\t{\"FILE_CURRENT\", Const, 0, \"\"},\n\t\t{\"FILE_END\", Const, 0, \"\"},\n\t\t{\"FILE_FLAG_BACKUP_SEMANTICS\", Const, 0, \"\"},\n\t\t{\"FILE_FLAG_OPEN_REPARSE_POINT\", Const, 4, \"\"},\n\t\t{\"FILE_FLAG_OVERLAPPED\", Const, 0, \"\"},\n\t\t{\"FILE_LIST_DIRECTORY\", Const, 0, \"\"},\n\t\t{\"FILE_MAP_COPY\", Const, 0, \"\"},\n\t\t{\"FILE_MAP_EXECUTE\", Const, 0, \"\"},\n\t\t{\"FILE_MAP_READ\", Const, 0, \"\"},\n\t\t{\"FILE_MAP_WRITE\", Const, 0, \"\"},\n\t\t{\"FILE_NOTIFY_CHANGE_ATTRIBUTES\", Const, 0, \"\"},\n\t\t{\"FILE_NOTIFY_CHANGE_CREATION\", Const, 0, \"\"},\n\t\t{\"FILE_NOTIFY_CHANGE_DIR_NAME\", Const, 0, \"\"},\n\t\t{\"FILE_NOTIFY_CHANGE_FILE_NAME\", Const, 0, \"\"},\n\t\t{\"FILE_NOTIFY_CHANGE_LAST_ACCESS\", Const, 0, \"\"},\n\t\t{\"FILE_NOTIFY_CHANGE_LAST_WRITE\", Const, 0, \"\"},\n\t\t{\"FILE_NOTIFY_CHANGE_SIZE\", Const, 0, \"\"},\n\t\t{\"FILE_SHARE_DELETE\", Const, 0, \"\"},\n\t\t{\"FILE_SHARE_READ\", Const, 0, \"\"},\n\t\t{\"FILE_SHARE_WRITE\", Const, 0, \"\"},\n\t\t{\"FILE_SKIP_COMPLETION_PORT_ON_SUCCESS\", Const, 2, \"\"},\n\t\t{\"FILE_SKIP_SET_EVENT_ON_HANDLE\", Const, 2, \"\"},\n\t\t{\"FILE_TYPE_CHAR\", Const, 0, \"\"},\n\t\t{\"FILE_TYPE_DISK\", Const, 0, \"\"},\n\t\t{\"FILE_TYPE_PIPE\", Const, 0, \"\"},\n\t\t{\"FILE_TYPE_REMOTE\", Const, 0, \"\"},\n\t\t{\"FILE_TYPE_UNKNOWN\", Const, 0, \"\"},\n\t\t{\"FILE_WRITE_ATTRIBUTES\", Const, 0, \"\"},\n\t\t{\"FLUSHO\", Const, 0, \"\"},\n\t\t{\"FORMAT_MESSAGE_ALLOCATE_BUFFER\", Const, 0, \"\"},\n\t\t{\"FORMAT_MESSAGE_ARGUMENT_ARRAY\", Const, 0, \"\"},\n\t\t{\"FORMAT_MESSAGE_FROM_HMODULE\", Const, 0, \"\"},\n\t\t{\"FORMAT_MESSAGE_FROM_STRING\", Const, 0, \"\"},\n\t\t{\"FORMAT_MESSAGE_FROM_SYSTEM\", Const, 0, \"\"},\n\t\t{\"FORMAT_MESSAGE_IGNORE_INSERTS\", Const, 0, \"\"},\n\t\t{\"FORMAT_MESSAGE_MAX_WIDTH_MASK\", Const, 0, \"\"},\n\t\t{\"FSCTL_GET_REPARSE_POINT\", Const, 4, \"\"},\n\t\t{\"F_ADDFILESIGS\", Const, 0, \"\"},\n\t\t{\"F_ADDSIGS\", Const, 0, \"\"},\n\t\t{\"F_ALLOCATEALL\", Const, 0, \"\"},\n\t\t{\"F_ALLOCATECONTIG\", Const, 0, \"\"},\n\t\t{\"F_CANCEL\", Const, 0, \"\"},\n\t\t{\"F_CHKCLEAN\", Const, 0, \"\"},\n\t\t{\"F_CLOSEM\", Const, 1, \"\"},\n\t\t{\"F_DUP2FD\", Const, 0, \"\"},\n\t\t{\"F_DUP2FD_CLOEXEC\", Const, 1, \"\"},\n\t\t{\"F_DUPFD\", Const, 0, \"\"},\n\t\t{\"F_DUPFD_CLOEXEC\", Const, 0, \"\"},\n\t\t{\"F_EXLCK\", Const, 0, \"\"},\n\t\t{\"F_FINDSIGS\", Const, 16, \"\"},\n\t\t{\"F_FLUSH_DATA\", Const, 0, \"\"},\n\t\t{\"F_FREEZE_FS\", Const, 0, \"\"},\n\t\t{\"F_FSCTL\", Const, 1, \"\"},\n\t\t{\"F_FSDIRMASK\", Const, 1, \"\"},\n\t\t{\"F_FSIN\", Const, 1, \"\"},\n\t\t{\"F_FSINOUT\", Const, 1, \"\"},\n\t\t{\"F_FSOUT\", Const, 1, \"\"},\n\t\t{\"F_FSPRIV\", Const, 1, \"\"},\n\t\t{\"F_FSVOID\", Const, 1, \"\"},\n\t\t{\"F_FULLFSYNC\", Const, 0, \"\"},\n\t\t{\"F_GETCODEDIR\", Const, 16, \"\"},\n\t\t{\"F_GETFD\", Const, 0, \"\"},\n\t\t{\"F_GETFL\", Const, 0, \"\"},\n\t\t{\"F_GETLEASE\", Const, 0, \"\"},\n\t\t{\"F_GETLK\", Const, 0, \"\"},\n\t\t{\"F_GETLK64\", Const, 0, \"\"},\n\t\t{\"F_GETLKPID\", Const, 0, \"\"},\n\t\t{\"F_GETNOSIGPIPE\", Const, 0, \"\"},\n\t\t{\"F_GETOWN\", Const, 0, \"\"},\n\t\t{\"F_GETOWN_EX\", Const, 0, \"\"},\n\t\t{\"F_GETPATH\", Const, 0, \"\"},\n\t\t{\"F_GETPATH_MTMINFO\", Const, 0, \"\"},\n\t\t{\"F_GETPIPE_SZ\", Const, 0, \"\"},\n\t\t{\"F_GETPROTECTIONCLASS\", Const, 0, \"\"},\n\t\t{\"F_GETPROTECTIONLEVEL\", Const, 16, \"\"},\n\t\t{\"F_GETSIG\", Const, 0, \"\"},\n\t\t{\"F_GLOBAL_NOCACHE\", Const, 0, \"\"},\n\t\t{\"F_LOCK\", Const, 0, \"\"},\n\t\t{\"F_LOG2PHYS\", Const, 0, \"\"},\n\t\t{\"F_LOG2PHYS_EXT\", Const, 0, \"\"},\n\t\t{\"F_MARKDEPENDENCY\", Const, 0, \"\"},\n\t\t{\"F_MAXFD\", Const, 1, \"\"},\n\t\t{\"F_NOCACHE\", Const, 0, \"\"},\n\t\t{\"F_NODIRECT\", Const, 0, \"\"},\n\t\t{\"F_NOTIFY\", Const, 0, \"\"},\n\t\t{\"F_OGETLK\", Const, 0, \"\"},\n\t\t{\"F_OK\", Const, 0, \"\"},\n\t\t{\"F_OSETLK\", Const, 0, \"\"},\n\t\t{\"F_OSETLKW\", Const, 0, \"\"},\n\t\t{\"F_PARAM_MASK\", Const, 1, \"\"},\n\t\t{\"F_PARAM_MAX\", Const, 1, \"\"},\n\t\t{\"F_PATHPKG_CHECK\", Const, 0, \"\"},\n\t\t{\"F_PEOFPOSMODE\", Const, 0, \"\"},\n\t\t{\"F_PREALLOCATE\", Const, 0, \"\"},\n\t\t{\"F_RDADVISE\", Const, 0, \"\"},\n\t\t{\"F_RDAHEAD\", Const, 0, \"\"},\n\t\t{\"F_RDLCK\", Const, 0, \"\"},\n\t\t{\"F_READAHEAD\", Const, 0, \"\"},\n\t\t{\"F_READBOOTSTRAP\", Const, 0, \"\"},\n\t\t{\"F_SETBACKINGSTORE\", Const, 0, \"\"},\n\t\t{\"F_SETFD\", Const, 0, \"\"},\n\t\t{\"F_SETFL\", Const, 0, \"\"},\n\t\t{\"F_SETLEASE\", Const, 0, \"\"},\n\t\t{\"F_SETLK\", Const, 0, \"\"},\n\t\t{\"F_SETLK64\", Const, 0, \"\"},\n\t\t{\"F_SETLKW\", Const, 0, \"\"},\n\t\t{\"F_SETLKW64\", Const, 0, \"\"},\n\t\t{\"F_SETLKWTIMEOUT\", Const, 16, \"\"},\n\t\t{\"F_SETLK_REMOTE\", Const, 0, \"\"},\n\t\t{\"F_SETNOSIGPIPE\", Const, 0, \"\"},\n\t\t{\"F_SETOWN\", Const, 0, \"\"},\n\t\t{\"F_SETOWN_EX\", Const, 0, \"\"},\n\t\t{\"F_SETPIPE_SZ\", Const, 0, \"\"},\n\t\t{\"F_SETPROTECTIONCLASS\", Const, 0, \"\"},\n\t\t{\"F_SETSIG\", Const, 0, \"\"},\n\t\t{\"F_SETSIZE\", Const, 0, \"\"},\n\t\t{\"F_SHLCK\", Const, 0, \"\"},\n\t\t{\"F_SINGLE_WRITER\", Const, 16, \"\"},\n\t\t{\"F_TEST\", Const, 0, \"\"},\n\t\t{\"F_THAW_FS\", Const, 0, \"\"},\n\t\t{\"F_TLOCK\", Const, 0, \"\"},\n\t\t{\"F_TRANSCODEKEY\", Const, 16, \"\"},\n\t\t{\"F_ULOCK\", Const, 0, \"\"},\n\t\t{\"F_UNLCK\", Const, 0, \"\"},\n\t\t{\"F_UNLCKSYS\", Const, 0, \"\"},\n\t\t{\"F_VOLPOSMODE\", Const, 0, \"\"},\n\t\t{\"F_WRITEBOOTSTRAP\", Const, 0, \"\"},\n\t\t{\"F_WRLCK\", Const, 0, \"\"},\n\t\t{\"Faccessat\", Func, 0, \"func(dirfd int, path string, mode uint32, flags int) (err error)\"},\n\t\t{\"Fallocate\", Func, 0, \"func(fd int, mode uint32, off int64, len int64) (err error)\"},\n\t\t{\"Fbootstraptransfer_t\", Type, 0, \"\"},\n\t\t{\"Fbootstraptransfer_t.Buffer\", Field, 0, \"\"},\n\t\t{\"Fbootstraptransfer_t.Length\", Field, 0, \"\"},\n\t\t{\"Fbootstraptransfer_t.Offset\", Field, 0, \"\"},\n\t\t{\"Fchdir\", Func, 0, \"func(fd int) (err error)\"},\n\t\t{\"Fchflags\", Func, 0, \"\"},\n\t\t{\"Fchmod\", Func, 0, \"func(fd int, mode uint32) (err error)\"},\n\t\t{\"Fchmodat\", Func, 0, \"func(dirfd int, path string, mode uint32, flags int) error\"},\n\t\t{\"Fchown\", Func, 0, \"func(fd int, uid int, gid int) (err error)\"},\n\t\t{\"Fchownat\", Func, 0, \"func(dirfd int, path string, uid int, gid int, flags int) (err error)\"},\n\t\t{\"FcntlFlock\", Func, 3, \"func(fd uintptr, cmd int, lk *Flock_t) error\"},\n\t\t{\"FdSet\", Type, 0, \"\"},\n\t\t{\"FdSet.Bits\", Field, 0, \"\"},\n\t\t{\"FdSet.X__fds_bits\", Field, 0, \"\"},\n\t\t{\"Fdatasync\", Func, 0, \"func(fd int) (err error)\"},\n\t\t{\"FileNotifyInformation\", Type, 0, \"\"},\n\t\t{\"FileNotifyInformation.Action\", Field, 0, \"\"},\n\t\t{\"FileNotifyInformation.FileName\", Field, 0, \"\"},\n\t\t{\"FileNotifyInformation.FileNameLength\", Field, 0, \"\"},\n\t\t{\"FileNotifyInformation.NextEntryOffset\", Field, 0, \"\"},\n\t\t{\"Filetime\", Type, 0, \"\"},\n\t\t{\"Filetime.HighDateTime\", Field, 0, \"\"},\n\t\t{\"Filetime.LowDateTime\", Field, 0, \"\"},\n\t\t{\"FindClose\", Func, 0, \"\"},\n\t\t{\"FindFirstFile\", Func, 0, \"\"},\n\t\t{\"FindNextFile\", Func, 0, \"\"},\n\t\t{\"Flock\", Func, 0, \"func(fd int, how int) (err error)\"},\n\t\t{\"Flock_t\", Type, 0, \"\"},\n\t\t{\"Flock_t.Len\", Field, 0, \"\"},\n\t\t{\"Flock_t.Pad_cgo_0\", Field, 0, \"\"},\n\t\t{\"Flock_t.Pad_cgo_1\", Field, 3, \"\"},\n\t\t{\"Flock_t.Pid\", Field, 0, \"\"},\n\t\t{\"Flock_t.Start\", Field, 0, \"\"},\n\t\t{\"Flock_t.Sysid\", Field, 0, \"\"},\n\t\t{\"Flock_t.Type\", Field, 0, \"\"},\n\t\t{\"Flock_t.Whence\", Field, 0, \"\"},\n\t\t{\"FlushBpf\", Func, 0, \"\"},\n\t\t{\"FlushFileBuffers\", Func, 0, \"\"},\n\t\t{\"FlushViewOfFile\", Func, 0, \"\"},\n\t\t{\"ForkExec\", Func, 0, \"func(argv0 string, argv []string, attr *ProcAttr) (pid int, err error)\"},\n\t\t{\"ForkLock\", Var, 0, \"\"},\n\t\t{\"FormatMessage\", Func, 0, \"\"},\n\t\t{\"Fpathconf\", Func, 0, \"\"},\n\t\t{\"FreeAddrInfoW\", Func, 1, \"\"},\n\t\t{\"FreeEnvironmentStrings\", Func, 0, \"\"},\n\t\t{\"FreeLibrary\", Func, 0, \"\"},\n\t\t{\"Fsid\", Type, 0, \"\"},\n\t\t{\"Fsid.Val\", Field, 0, \"\"},\n\t\t{\"Fsid.X__fsid_val\", Field, 2, \"\"},\n\t\t{\"Fsid.X__val\", Field, 0, \"\"},\n\t\t{\"Fstat\", Func, 0, \"func(fd int, stat *Stat_t) (err error)\"},\n\t\t{\"Fstatat\", Func, 12, \"\"},\n\t\t{\"Fstatfs\", Func, 0, \"func(fd int, buf *Statfs_t) (err error)\"},\n\t\t{\"Fstore_t\", Type, 0, \"\"},\n\t\t{\"Fstore_t.Bytesalloc\", Field, 0, \"\"},\n\t\t{\"Fstore_t.Flags\", Field, 0, \"\"},\n\t\t{\"Fstore_t.Length\", Field, 0, \"\"},\n\t\t{\"Fstore_t.Offset\", Field, 0, \"\"},\n\t\t{\"Fstore_t.Posmode\", Field, 0, \"\"},\n\t\t{\"Fsync\", Func, 0, \"func(fd int) (err error)\"},\n\t\t{\"Ftruncate\", Func, 0, \"func(fd int, length int64) (err error)\"},\n\t\t{\"FullPath\", Func, 4, \"\"},\n\t\t{\"Futimes\", Func, 0, \"func(fd int, tv []Timeval) (err error)\"},\n\t\t{\"Futimesat\", Func, 0, \"func(dirfd int, path string, tv []Timeval) (err error)\"},\n\t\t{\"GENERIC_ALL\", Const, 0, \"\"},\n\t\t{\"GENERIC_EXECUTE\", Const, 0, \"\"},\n\t\t{\"GENERIC_READ\", Const, 0, \"\"},\n\t\t{\"GENERIC_WRITE\", Const, 0, \"\"},\n\t\t{\"GUID\", Type, 1, \"\"},\n\t\t{\"GUID.Data1\", Field, 1, \"\"},\n\t\t{\"GUID.Data2\", Field, 1, \"\"},\n\t\t{\"GUID.Data3\", Field, 1, \"\"},\n\t\t{\"GUID.Data4\", Field, 1, \"\"},\n\t\t{\"GetAcceptExSockaddrs\", Func, 0, \"\"},\n\t\t{\"GetAdaptersInfo\", Func, 0, \"\"},\n\t\t{\"GetAddrInfoW\", Func, 1, \"\"},\n\t\t{\"GetCommandLine\", Func, 0, \"\"},\n\t\t{\"GetComputerName\", Func, 0, \"\"},\n\t\t{\"GetConsoleMode\", Func, 1, \"\"},\n\t\t{\"GetCurrentDirectory\", Func, 0, \"\"},\n\t\t{\"GetCurrentProcess\", Func, 0, \"\"},\n\t\t{\"GetEnvironmentStrings\", Func, 0, \"\"},\n\t\t{\"GetEnvironmentVariable\", Func, 0, \"\"},\n\t\t{\"GetExitCodeProcess\", Func, 0, \"\"},\n\t\t{\"GetFileAttributes\", Func, 0, \"\"},\n\t\t{\"GetFileAttributesEx\", Func, 0, \"\"},\n\t\t{\"GetFileExInfoStandard\", Const, 0, \"\"},\n\t\t{\"GetFileExMaxInfoLevel\", Const, 0, \"\"},\n\t\t{\"GetFileInformationByHandle\", Func, 0, \"\"},\n\t\t{\"GetFileType\", Func, 0, \"\"},\n\t\t{\"GetFullPathName\", Func, 0, \"\"},\n\t\t{\"GetHostByName\", Func, 0, \"\"},\n\t\t{\"GetIfEntry\", Func, 0, \"\"},\n\t\t{\"GetLastError\", Func, 0, \"\"},\n\t\t{\"GetLengthSid\", Func, 0, \"\"},\n\t\t{\"GetLongPathName\", Func, 0, \"\"},\n\t\t{\"GetProcAddress\", Func, 0, \"\"},\n\t\t{\"GetProcessTimes\", Func, 0, \"\"},\n\t\t{\"GetProtoByName\", Func, 0, \"\"},\n\t\t{\"GetQueuedCompletionStatus\", Func, 0, \"\"},\n\t\t{\"GetServByName\", Func, 0, \"\"},\n\t\t{\"GetShortPathName\", Func, 0, \"\"},\n\t\t{\"GetStartupInfo\", Func, 0, \"\"},\n\t\t{\"GetStdHandle\", Func, 0, \"\"},\n\t\t{\"GetSystemTimeAsFileTime\", Func, 0, \"\"},\n\t\t{\"GetTempPath\", Func, 0, \"\"},\n\t\t{\"GetTimeZoneInformation\", Func, 0, \"\"},\n\t\t{\"GetTokenInformation\", Func, 0, \"\"},\n\t\t{\"GetUserNameEx\", Func, 0, \"\"},\n\t\t{\"GetUserProfileDirectory\", Func, 0, \"\"},\n\t\t{\"GetVersion\", Func, 0, \"\"},\n\t\t{\"Getcwd\", Func, 0, \"func(buf []byte) (n int, err error)\"},\n\t\t{\"Getdents\", Func, 0, \"func(fd int, buf []byte) (n int, err error)\"},\n\t\t{\"Getdirentries\", Func, 0, \"\"},\n\t\t{\"Getdtablesize\", Func, 0, \"\"},\n\t\t{\"Getegid\", Func, 0, \"func() (egid int)\"},\n\t\t{\"Getenv\", Func, 0, \"func(key string) (value string, found bool)\"},\n\t\t{\"Geteuid\", Func, 0, \"func() (euid int)\"},\n\t\t{\"Getfsstat\", Func, 0, \"\"},\n\t\t{\"Getgid\", Func, 0, \"func() (gid int)\"},\n\t\t{\"Getgroups\", Func, 0, \"func() (gids []int, err error)\"},\n\t\t{\"Getpagesize\", Func, 0, \"func() int\"},\n\t\t{\"Getpeername\", Func, 0, \"func(fd int) (sa Sockaddr, err error)\"},\n\t\t{\"Getpgid\", Func, 0, \"func(pid int) (pgid int, err error)\"},\n\t\t{\"Getpgrp\", Func, 0, \"func() (pid int)\"},\n\t\t{\"Getpid\", Func, 0, \"func() (pid int)\"},\n\t\t{\"Getppid\", Func, 0, \"func() (ppid int)\"},\n\t\t{\"Getpriority\", Func, 0, \"func(which int, who int) (prio int, err error)\"},\n\t\t{\"Getrlimit\", Func, 0, \"func(resource int, rlim *Rlimit) (err error)\"},\n\t\t{\"Getrusage\", Func, 0, \"func(who int, rusage *Rusage) (err error)\"},\n\t\t{\"Getsid\", Func, 0, \"\"},\n\t\t{\"Getsockname\", Func, 0, \"func(fd int) (sa Sockaddr, err error)\"},\n\t\t{\"Getsockopt\", Func, 1, \"\"},\n\t\t{\"GetsockoptByte\", Func, 0, \"\"},\n\t\t{\"GetsockoptICMPv6Filter\", Func, 2, \"func(fd int, level int, opt int) (*ICMPv6Filter, error)\"},\n\t\t{\"GetsockoptIPMreq\", Func, 0, \"func(fd int, level int, opt int) (*IPMreq, error)\"},\n\t\t{\"GetsockoptIPMreqn\", Func, 0, \"func(fd int, level int, opt int) (*IPMreqn, error)\"},\n\t\t{\"GetsockoptIPv6MTUInfo\", Func, 2, \"func(fd int, level int, opt int) (*IPv6MTUInfo, error)\"},\n\t\t{\"GetsockoptIPv6Mreq\", Func, 0, \"func(fd int, level int, opt int) (*IPv6Mreq, error)\"},\n\t\t{\"GetsockoptInet4Addr\", Func, 0, \"func(fd int, level int, opt int) (value [4]byte, err error)\"},\n\t\t{\"GetsockoptInt\", Func, 0, \"func(fd int, level int, opt int) (value int, err error)\"},\n\t\t{\"GetsockoptUcred\", Func, 1, \"func(fd int, level int, opt int) (*Ucred, error)\"},\n\t\t{\"Gettid\", Func, 0, \"func() (tid int)\"},\n\t\t{\"Gettimeofday\", Func, 0, \"func(tv *Timeval) (err error)\"},\n\t\t{\"Getuid\", Func, 0, \"func() (uid int)\"},\n\t\t{\"Getwd\", Func, 0, \"func() (wd string, err error)\"},\n\t\t{\"Getxattr\", Func, 1, \"func(path string, attr string, dest []byte) (sz int, err error)\"},\n\t\t{\"HANDLE_FLAG_INHERIT\", Const, 0, \"\"},\n\t\t{\"HKEY_CLASSES_ROOT\", Const, 0, \"\"},\n\t\t{\"HKEY_CURRENT_CONFIG\", Const, 0, \"\"},\n\t\t{\"HKEY_CURRENT_USER\", Const, 0, \"\"},\n\t\t{\"HKEY_DYN_DATA\", Const, 0, \"\"},\n\t\t{\"HKEY_LOCAL_MACHINE\", Const, 0, \"\"},\n\t\t{\"HKEY_PERFORMANCE_DATA\", Const, 0, \"\"},\n\t\t{\"HKEY_USERS\", Const, 0, \"\"},\n\t\t{\"HUPCL\", Const, 0, \"\"},\n\t\t{\"Handle\", Type, 0, \"\"},\n\t\t{\"Hostent\", Type, 0, \"\"},\n\t\t{\"Hostent.AddrList\", Field, 0, \"\"},\n\t\t{\"Hostent.AddrType\", Field, 0, \"\"},\n\t\t{\"Hostent.Aliases\", Field, 0, \"\"},\n\t\t{\"Hostent.Length\", Field, 0, \"\"},\n\t\t{\"Hostent.Name\", Field, 0, \"\"},\n\t\t{\"ICANON\", Const, 0, \"\"},\n\t\t{\"ICMP6_FILTER\", Const, 2, \"\"},\n\t\t{\"ICMPV6_FILTER\", Const, 2, \"\"},\n\t\t{\"ICMPv6Filter\", Type, 2, \"\"},\n\t\t{\"ICMPv6Filter.Data\", Field, 2, \"\"},\n\t\t{\"ICMPv6Filter.Filt\", Field, 2, \"\"},\n\t\t{\"ICRNL\", Const, 0, \"\"},\n\t\t{\"IEXTEN\", Const, 0, \"\"},\n\t\t{\"IFAN_ARRIVAL\", Const, 1, \"\"},\n\t\t{\"IFAN_DEPARTURE\", Const, 1, \"\"},\n\t\t{\"IFA_ADDRESS\", Const, 0, \"\"},\n\t\t{\"IFA_ANYCAST\", Const, 0, \"\"},\n\t\t{\"IFA_BROADCAST\", Const, 0, \"\"},\n\t\t{\"IFA_CACHEINFO\", Const, 0, \"\"},\n\t\t{\"IFA_F_DADFAILED\", Const, 0, \"\"},\n\t\t{\"IFA_F_DEPRECATED\", Const, 0, \"\"},\n\t\t{\"IFA_F_HOMEADDRESS\", Const, 0, \"\"},\n\t\t{\"IFA_F_NODAD\", Const, 0, \"\"},\n\t\t{\"IFA_F_OPTIMISTIC\", Const, 0, \"\"},\n\t\t{\"IFA_F_PERMANENT\", Const, 0, \"\"},\n\t\t{\"IFA_F_SECONDARY\", Const, 0, \"\"},\n\t\t{\"IFA_F_TEMPORARY\", Const, 0, \"\"},\n\t\t{\"IFA_F_TENTATIVE\", Const, 0, \"\"},\n\t\t{\"IFA_LABEL\", Const, 0, \"\"},\n\t\t{\"IFA_LOCAL\", Const, 0, \"\"},\n\t\t{\"IFA_MAX\", Const, 0, \"\"},\n\t\t{\"IFA_MULTICAST\", Const, 0, \"\"},\n\t\t{\"IFA_ROUTE\", Const, 1, \"\"},\n\t\t{\"IFA_UNSPEC\", Const, 0, \"\"},\n\t\t{\"IFF_ALLMULTI\", Const, 0, \"\"},\n\t\t{\"IFF_ALTPHYS\", Const, 0, \"\"},\n\t\t{\"IFF_AUTOMEDIA\", Const, 0, \"\"},\n\t\t{\"IFF_BROADCAST\", Const, 0, \"\"},\n\t\t{\"IFF_CANTCHANGE\", Const, 0, \"\"},\n\t\t{\"IFF_CANTCONFIG\", Const, 1, \"\"},\n\t\t{\"IFF_DEBUG\", Const, 0, \"\"},\n\t\t{\"IFF_DRV_OACTIVE\", Const, 0, \"\"},\n\t\t{\"IFF_DRV_RUNNING\", Const, 0, \"\"},\n\t\t{\"IFF_DYING\", Const, 0, \"\"},\n\t\t{\"IFF_DYNAMIC\", Const, 0, \"\"},\n\t\t{\"IFF_LINK0\", Const, 0, \"\"},\n\t\t{\"IFF_LINK1\", Const, 0, \"\"},\n\t\t{\"IFF_LINK2\", Const, 0, \"\"},\n\t\t{\"IFF_LOOPBACK\", Const, 0, \"\"},\n\t\t{\"IFF_MASTER\", Const, 0, \"\"},\n\t\t{\"IFF_MONITOR\", Const, 0, \"\"},\n\t\t{\"IFF_MULTICAST\", Const, 0, \"\"},\n\t\t{\"IFF_NOARP\", Const, 0, \"\"},\n\t\t{\"IFF_NOTRAILERS\", Const, 0, \"\"},\n\t\t{\"IFF_NO_PI\", Const, 0, \"\"},\n\t\t{\"IFF_OACTIVE\", Const, 0, \"\"},\n\t\t{\"IFF_ONE_QUEUE\", Const, 0, \"\"},\n\t\t{\"IFF_POINTOPOINT\", Const, 0, \"\"},\n\t\t{\"IFF_POINTTOPOINT\", Const, 0, \"\"},\n\t\t{\"IFF_PORTSEL\", Const, 0, \"\"},\n\t\t{\"IFF_PPROMISC\", Const, 0, \"\"},\n\t\t{\"IFF_PROMISC\", Const, 0, \"\"},\n\t\t{\"IFF_RENAMING\", Const, 0, \"\"},\n\t\t{\"IFF_RUNNING\", Const, 0, \"\"},\n\t\t{\"IFF_SIMPLEX\", Const, 0, \"\"},\n\t\t{\"IFF_SLAVE\", Const, 0, \"\"},\n\t\t{\"IFF_SMART\", Const, 0, \"\"},\n\t\t{\"IFF_STATICARP\", Const, 0, \"\"},\n\t\t{\"IFF_TAP\", Const, 0, \"\"},\n\t\t{\"IFF_TUN\", Const, 0, \"\"},\n\t\t{\"IFF_TUN_EXCL\", Const, 0, \"\"},\n\t\t{\"IFF_UP\", Const, 0, \"\"},\n\t\t{\"IFF_VNET_HDR\", Const, 0, \"\"},\n\t\t{\"IFLA_ADDRESS\", Const, 0, \"\"},\n\t\t{\"IFLA_BROADCAST\", Const, 0, \"\"},\n\t\t{\"IFLA_COST\", Const, 0, \"\"},\n\t\t{\"IFLA_IFALIAS\", Const, 0, \"\"},\n\t\t{\"IFLA_IFNAME\", Const, 0, \"\"},\n\t\t{\"IFLA_LINK\", Const, 0, \"\"},\n\t\t{\"IFLA_LINKINFO\", Const, 0, \"\"},\n\t\t{\"IFLA_LINKMODE\", Const, 0, \"\"},\n\t\t{\"IFLA_MAP\", Const, 0, \"\"},\n\t\t{\"IFLA_MASTER\", Const, 0, \"\"},\n\t\t{\"IFLA_MAX\", Const, 0, \"\"},\n\t\t{\"IFLA_MTU\", Const, 0, \"\"},\n\t\t{\"IFLA_NET_NS_PID\", Const, 0, \"\"},\n\t\t{\"IFLA_OPERSTATE\", Const, 0, \"\"},\n\t\t{\"IFLA_PRIORITY\", Const, 0, \"\"},\n\t\t{\"IFLA_PROTINFO\", Const, 0, \"\"},\n\t\t{\"IFLA_QDISC\", Const, 0, \"\"},\n\t\t{\"IFLA_STATS\", Const, 0, \"\"},\n\t\t{\"IFLA_TXQLEN\", Const, 0, \"\"},\n\t\t{\"IFLA_UNSPEC\", Const, 0, \"\"},\n\t\t{\"IFLA_WEIGHT\", Const, 0, \"\"},\n\t\t{\"IFLA_WIRELESS\", Const, 0, \"\"},\n\t\t{\"IFNAMSIZ\", Const, 0, \"\"},\n\t\t{\"IFT_1822\", Const, 0, \"\"},\n\t\t{\"IFT_A12MPPSWITCH\", Const, 0, \"\"},\n\t\t{\"IFT_AAL2\", Const, 0, \"\"},\n\t\t{\"IFT_AAL5\", Const, 0, \"\"},\n\t\t{\"IFT_ADSL\", Const, 0, \"\"},\n\t\t{\"IFT_AFLANE8023\", Const, 0, \"\"},\n\t\t{\"IFT_AFLANE8025\", Const, 0, \"\"},\n\t\t{\"IFT_ARAP\", Const, 0, \"\"},\n\t\t{\"IFT_ARCNET\", Const, 0, \"\"},\n\t\t{\"IFT_ARCNETPLUS\", Const, 0, \"\"},\n\t\t{\"IFT_ASYNC\", Const, 0, \"\"},\n\t\t{\"IFT_ATM\", Const, 0, \"\"},\n\t\t{\"IFT_ATMDXI\", Const, 0, \"\"},\n\t\t{\"IFT_ATMFUNI\", Const, 0, \"\"},\n\t\t{\"IFT_ATMIMA\", Const, 0, \"\"},\n\t\t{\"IFT_ATMLOGICAL\", Const, 0, \"\"},\n\t\t{\"IFT_ATMRADIO\", Const, 0, \"\"},\n\t\t{\"IFT_ATMSUBINTERFACE\", Const, 0, \"\"},\n\t\t{\"IFT_ATMVCIENDPT\", Const, 0, \"\"},\n\t\t{\"IFT_ATMVIRTUAL\", Const, 0, \"\"},\n\t\t{\"IFT_BGPPOLICYACCOUNTING\", Const, 0, \"\"},\n\t\t{\"IFT_BLUETOOTH\", Const, 1, \"\"},\n\t\t{\"IFT_BRIDGE\", Const, 0, \"\"},\n\t\t{\"IFT_BSC\", Const, 0, \"\"},\n\t\t{\"IFT_CARP\", Const, 0, \"\"},\n\t\t{\"IFT_CCTEMUL\", Const, 0, \"\"},\n\t\t{\"IFT_CELLULAR\", Const, 0, \"\"},\n\t\t{\"IFT_CEPT\", Const, 0, \"\"},\n\t\t{\"IFT_CES\", Const, 0, \"\"},\n\t\t{\"IFT_CHANNEL\", Const, 0, \"\"},\n\t\t{\"IFT_CNR\", Const, 0, \"\"},\n\t\t{\"IFT_COFFEE\", Const, 0, \"\"},\n\t\t{\"IFT_COMPOSITELINK\", Const, 0, \"\"},\n\t\t{\"IFT_DCN\", Const, 0, \"\"},\n\t\t{\"IFT_DIGITALPOWERLINE\", Const, 0, \"\"},\n\t\t{\"IFT_DIGITALWRAPPEROVERHEADCHANNEL\", Const, 0, \"\"},\n\t\t{\"IFT_DLSW\", Const, 0, \"\"},\n\t\t{\"IFT_DOCSCABLEDOWNSTREAM\", Const, 0, \"\"},\n\t\t{\"IFT_DOCSCABLEMACLAYER\", Const, 0, \"\"},\n\t\t{\"IFT_DOCSCABLEUPSTREAM\", Const, 0, \"\"},\n\t\t{\"IFT_DOCSCABLEUPSTREAMCHANNEL\", Const, 1, \"\"},\n\t\t{\"IFT_DS0\", Const, 0, \"\"},\n\t\t{\"IFT_DS0BUNDLE\", Const, 0, \"\"},\n\t\t{\"IFT_DS1FDL\", Const, 0, \"\"},\n\t\t{\"IFT_DS3\", Const, 0, \"\"},\n\t\t{\"IFT_DTM\", Const, 0, \"\"},\n\t\t{\"IFT_DUMMY\", Const, 1, \"\"},\n\t\t{\"IFT_DVBASILN\", Const, 0, \"\"},\n\t\t{\"IFT_DVBASIOUT\", Const, 0, \"\"},\n\t\t{\"IFT_DVBRCCDOWNSTREAM\", Const, 0, \"\"},\n\t\t{\"IFT_DVBRCCMACLAYER\", Const, 0, \"\"},\n\t\t{\"IFT_DVBRCCUPSTREAM\", Const, 0, \"\"},\n\t\t{\"IFT_ECONET\", Const, 1, \"\"},\n\t\t{\"IFT_ENC\", Const, 0, \"\"},\n\t\t{\"IFT_EON\", Const, 0, \"\"},\n\t\t{\"IFT_EPLRS\", Const, 0, \"\"},\n\t\t{\"IFT_ESCON\", Const, 0, \"\"},\n\t\t{\"IFT_ETHER\", Const, 0, \"\"},\n\t\t{\"IFT_FAITH\", Const, 0, \"\"},\n\t\t{\"IFT_FAST\", Const, 0, \"\"},\n\t\t{\"IFT_FASTETHER\", Const, 0, \"\"},\n\t\t{\"IFT_FASTETHERFX\", Const, 0, \"\"},\n\t\t{\"IFT_FDDI\", Const, 0, \"\"},\n\t\t{\"IFT_FIBRECHANNEL\", Const, 0, \"\"},\n\t\t{\"IFT_FRAMERELAYINTERCONNECT\", Const, 0, \"\"},\n\t\t{\"IFT_FRAMERELAYMPI\", Const, 0, \"\"},\n\t\t{\"IFT_FRDLCIENDPT\", Const, 0, \"\"},\n\t\t{\"IFT_FRELAY\", Const, 0, \"\"},\n\t\t{\"IFT_FRELAYDCE\", Const, 0, \"\"},\n\t\t{\"IFT_FRF16MFRBUNDLE\", Const, 0, \"\"},\n\t\t{\"IFT_FRFORWARD\", Const, 0, \"\"},\n\t\t{\"IFT_G703AT2MB\", Const, 0, \"\"},\n\t\t{\"IFT_G703AT64K\", Const, 0, \"\"},\n\t\t{\"IFT_GIF\", Const, 0, \"\"},\n\t\t{\"IFT_GIGABITETHERNET\", Const, 0, \"\"},\n\t\t{\"IFT_GR303IDT\", Const, 0, \"\"},\n\t\t{\"IFT_GR303RDT\", Const, 0, \"\"},\n\t\t{\"IFT_H323GATEKEEPER\", Const, 0, \"\"},\n\t\t{\"IFT_H323PROXY\", Const, 0, \"\"},\n\t\t{\"IFT_HDH1822\", Const, 0, \"\"},\n\t\t{\"IFT_HDLC\", Const, 0, \"\"},\n\t\t{\"IFT_HDSL2\", Const, 0, \"\"},\n\t\t{\"IFT_HIPERLAN2\", Const, 0, \"\"},\n\t\t{\"IFT_HIPPI\", Const, 0, \"\"},\n\t\t{\"IFT_HIPPIINTERFACE\", Const, 0, \"\"},\n\t\t{\"IFT_HOSTPAD\", Const, 0, \"\"},\n\t\t{\"IFT_HSSI\", Const, 0, \"\"},\n\t\t{\"IFT_HY\", Const, 0, \"\"},\n\t\t{\"IFT_IBM370PARCHAN\", Const, 0, \"\"},\n\t\t{\"IFT_IDSL\", Const, 0, \"\"},\n\t\t{\"IFT_IEEE1394\", Const, 0, \"\"},\n\t\t{\"IFT_IEEE80211\", Const, 0, \"\"},\n\t\t{\"IFT_IEEE80212\", Const, 0, \"\"},\n\t\t{\"IFT_IEEE8023ADLAG\", Const, 0, \"\"},\n\t\t{\"IFT_IFGSN\", Const, 0, \"\"},\n\t\t{\"IFT_IMT\", Const, 0, \"\"},\n\t\t{\"IFT_INFINIBAND\", Const, 1, \"\"},\n\t\t{\"IFT_INTERLEAVE\", Const, 0, \"\"},\n\t\t{\"IFT_IP\", Const, 0, \"\"},\n\t\t{\"IFT_IPFORWARD\", Const, 0, \"\"},\n\t\t{\"IFT_IPOVERATM\", Const, 0, \"\"},\n\t\t{\"IFT_IPOVERCDLC\", Const, 0, \"\"},\n\t\t{\"IFT_IPOVERCLAW\", Const, 0, \"\"},\n\t\t{\"IFT_IPSWITCH\", Const, 0, \"\"},\n\t\t{\"IFT_IPXIP\", Const, 0, \"\"},\n\t\t{\"IFT_ISDN\", Const, 0, \"\"},\n\t\t{\"IFT_ISDNBASIC\", Const, 0, \"\"},\n\t\t{\"IFT_ISDNPRIMARY\", Const, 0, \"\"},\n\t\t{\"IFT_ISDNS\", Const, 0, \"\"},\n\t\t{\"IFT_ISDNU\", Const, 0, \"\"},\n\t\t{\"IFT_ISO88022LLC\", Const, 0, \"\"},\n\t\t{\"IFT_ISO88023\", Const, 0, \"\"},\n\t\t{\"IFT_ISO88024\", Const, 0, \"\"},\n\t\t{\"IFT_ISO88025\", Const, 0, \"\"},\n\t\t{\"IFT_ISO88025CRFPINT\", Const, 0, \"\"},\n\t\t{\"IFT_ISO88025DTR\", Const, 0, \"\"},\n\t\t{\"IFT_ISO88025FIBER\", Const, 0, \"\"},\n\t\t{\"IFT_ISO88026\", Const, 0, \"\"},\n\t\t{\"IFT_ISUP\", Const, 0, \"\"},\n\t\t{\"IFT_L2VLAN\", Const, 0, \"\"},\n\t\t{\"IFT_L3IPVLAN\", Const, 0, \"\"},\n\t\t{\"IFT_L3IPXVLAN\", Const, 0, \"\"},\n\t\t{\"IFT_LAPB\", Const, 0, \"\"},\n\t\t{\"IFT_LAPD\", Const, 0, \"\"},\n\t\t{\"IFT_LAPF\", Const, 0, \"\"},\n\t\t{\"IFT_LINEGROUP\", Const, 1, \"\"},\n\t\t{\"IFT_LOCALTALK\", Const, 0, \"\"},\n\t\t{\"IFT_LOOP\", Const, 0, \"\"},\n\t\t{\"IFT_MEDIAMAILOVERIP\", Const, 0, \"\"},\n\t\t{\"IFT_MFSIGLINK\", Const, 0, \"\"},\n\t\t{\"IFT_MIOX25\", Const, 0, \"\"},\n\t\t{\"IFT_MODEM\", Const, 0, \"\"},\n\t\t{\"IFT_MPC\", Const, 0, \"\"},\n\t\t{\"IFT_MPLS\", Const, 0, \"\"},\n\t\t{\"IFT_MPLSTUNNEL\", Const, 0, \"\"},\n\t\t{\"IFT_MSDSL\", Const, 0, \"\"},\n\t\t{\"IFT_MVL\", Const, 0, \"\"},\n\t\t{\"IFT_MYRINET\", Const, 0, \"\"},\n\t\t{\"IFT_NFAS\", Const, 0, \"\"},\n\t\t{\"IFT_NSIP\", Const, 0, \"\"},\n\t\t{\"IFT_OPTICALCHANNEL\", Const, 0, \"\"},\n\t\t{\"IFT_OPTICALTRANSPORT\", Const, 0, \"\"},\n\t\t{\"IFT_OTHER\", Const, 0, \"\"},\n\t\t{\"IFT_P10\", Const, 0, \"\"},\n\t\t{\"IFT_P80\", Const, 0, \"\"},\n\t\t{\"IFT_PARA\", Const, 0, \"\"},\n\t\t{\"IFT_PDP\", Const, 0, \"\"},\n\t\t{\"IFT_PFLOG\", Const, 0, \"\"},\n\t\t{\"IFT_PFLOW\", Const, 1, \"\"},\n\t\t{\"IFT_PFSYNC\", Const, 0, \"\"},\n\t\t{\"IFT_PLC\", Const, 0, \"\"},\n\t\t{\"IFT_PON155\", Const, 1, \"\"},\n\t\t{\"IFT_PON622\", Const, 1, \"\"},\n\t\t{\"IFT_POS\", Const, 0, \"\"},\n\t\t{\"IFT_PPP\", Const, 0, \"\"},\n\t\t{\"IFT_PPPMULTILINKBUNDLE\", Const, 0, \"\"},\n\t\t{\"IFT_PROPATM\", Const, 1, \"\"},\n\t\t{\"IFT_PROPBWAP2MP\", Const, 0, \"\"},\n\t\t{\"IFT_PROPCNLS\", Const, 0, \"\"},\n\t\t{\"IFT_PROPDOCSWIRELESSDOWNSTREAM\", Const, 0, \"\"},\n\t\t{\"IFT_PROPDOCSWIRELESSMACLAYER\", Const, 0, \"\"},\n\t\t{\"IFT_PROPDOCSWIRELESSUPSTREAM\", Const, 0, \"\"},\n\t\t{\"IFT_PROPMUX\", Const, 0, \"\"},\n\t\t{\"IFT_PROPVIRTUAL\", Const, 0, \"\"},\n\t\t{\"IFT_PROPWIRELESSP2P\", Const, 0, \"\"},\n\t\t{\"IFT_PTPSERIAL\", Const, 0, \"\"},\n\t\t{\"IFT_PVC\", Const, 0, \"\"},\n\t\t{\"IFT_Q2931\", Const, 1, \"\"},\n\t\t{\"IFT_QLLC\", Const, 0, \"\"},\n\t\t{\"IFT_RADIOMAC\", Const, 0, \"\"},\n\t\t{\"IFT_RADSL\", Const, 0, \"\"},\n\t\t{\"IFT_REACHDSL\", Const, 0, \"\"},\n\t\t{\"IFT_RFC1483\", Const, 0, \"\"},\n\t\t{\"IFT_RS232\", Const, 0, \"\"},\n\t\t{\"IFT_RSRB\", Const, 0, \"\"},\n\t\t{\"IFT_SDLC\", Const, 0, \"\"},\n\t\t{\"IFT_SDSL\", Const, 0, \"\"},\n\t\t{\"IFT_SHDSL\", Const, 0, \"\"},\n\t\t{\"IFT_SIP\", Const, 0, \"\"},\n\t\t{\"IFT_SIPSIG\", Const, 1, \"\"},\n\t\t{\"IFT_SIPTG\", Const, 1, \"\"},\n\t\t{\"IFT_SLIP\", Const, 0, \"\"},\n\t\t{\"IFT_SMDSDXI\", Const, 0, \"\"},\n\t\t{\"IFT_SMDSICIP\", Const, 0, \"\"},\n\t\t{\"IFT_SONET\", Const, 0, \"\"},\n\t\t{\"IFT_SONETOVERHEADCHANNEL\", Const, 0, \"\"},\n\t\t{\"IFT_SONETPATH\", Const, 0, \"\"},\n\t\t{\"IFT_SONETVT\", Const, 0, \"\"},\n\t\t{\"IFT_SRP\", Const, 0, \"\"},\n\t\t{\"IFT_SS7SIGLINK\", Const, 0, \"\"},\n\t\t{\"IFT_STACKTOSTACK\", Const, 0, \"\"},\n\t\t{\"IFT_STARLAN\", Const, 0, \"\"},\n\t\t{\"IFT_STF\", Const, 0, \"\"},\n\t\t{\"IFT_T1\", Const, 0, \"\"},\n\t\t{\"IFT_TDLC\", Const, 0, \"\"},\n\t\t{\"IFT_TELINK\", Const, 1, \"\"},\n\t\t{\"IFT_TERMPAD\", Const, 0, \"\"},\n\t\t{\"IFT_TR008\", Const, 0, \"\"},\n\t\t{\"IFT_TRANSPHDLC\", Const, 0, \"\"},\n\t\t{\"IFT_TUNNEL\", Const, 0, \"\"},\n\t\t{\"IFT_ULTRA\", Const, 0, \"\"},\n\t\t{\"IFT_USB\", Const, 0, \"\"},\n\t\t{\"IFT_V11\", Const, 0, \"\"},\n\t\t{\"IFT_V35\", Const, 0, \"\"},\n\t\t{\"IFT_V36\", Const, 0, \"\"},\n\t\t{\"IFT_V37\", Const, 0, \"\"},\n\t\t{\"IFT_VDSL\", Const, 0, \"\"},\n\t\t{\"IFT_VIRTUALIPADDRESS\", Const, 0, \"\"},\n\t\t{\"IFT_VIRTUALTG\", Const, 1, \"\"},\n\t\t{\"IFT_VOICEDID\", Const, 1, \"\"},\n\t\t{\"IFT_VOICEEM\", Const, 0, \"\"},\n\t\t{\"IFT_VOICEEMFGD\", Const, 1, \"\"},\n\t\t{\"IFT_VOICEENCAP\", Const, 0, \"\"},\n\t\t{\"IFT_VOICEFGDEANA\", Const, 1, \"\"},\n\t\t{\"IFT_VOICEFXO\", Const, 0, \"\"},\n\t\t{\"IFT_VOICEFXS\", Const, 0, \"\"},\n\t\t{\"IFT_VOICEOVERATM\", Const, 0, \"\"},\n\t\t{\"IFT_VOICEOVERCABLE\", Const, 1, \"\"},\n\t\t{\"IFT_VOICEOVERFRAMERELAY\", Const, 0, \"\"},\n\t\t{\"IFT_VOICEOVERIP\", Const, 0, \"\"},\n\t\t{\"IFT_X213\", Const, 0, \"\"},\n\t\t{\"IFT_X25\", Const, 0, \"\"},\n\t\t{\"IFT_X25DDN\", Const, 0, \"\"},\n\t\t{\"IFT_X25HUNTGROUP\", Const, 0, \"\"},\n\t\t{\"IFT_X25MLP\", Const, 0, \"\"},\n\t\t{\"IFT_X25PLE\", Const, 0, \"\"},\n\t\t{\"IFT_XETHER\", Const, 0, \"\"},\n\t\t{\"IGNBRK\", Const, 0, \"\"},\n\t\t{\"IGNCR\", Const, 0, \"\"},\n\t\t{\"IGNORE\", Const, 0, \"\"},\n\t\t{\"IGNPAR\", Const, 0, \"\"},\n\t\t{\"IMAXBEL\", Const, 0, \"\"},\n\t\t{\"INFINITE\", Const, 0, \"\"},\n\t\t{\"INLCR\", Const, 0, \"\"},\n\t\t{\"INPCK\", Const, 0, \"\"},\n\t\t{\"INVALID_FILE_ATTRIBUTES\", Const, 0, \"\"},\n\t\t{\"IN_ACCESS\", Const, 0, \"\"},\n\t\t{\"IN_ALL_EVENTS\", Const, 0, \"\"},\n\t\t{\"IN_ATTRIB\", Const, 0, \"\"},\n\t\t{\"IN_CLASSA_HOST\", Const, 0, \"\"},\n\t\t{\"IN_CLASSA_MAX\", Const, 0, \"\"},\n\t\t{\"IN_CLASSA_NET\", Const, 0, \"\"},\n\t\t{\"IN_CLASSA_NSHIFT\", Const, 0, \"\"},\n\t\t{\"IN_CLASSB_HOST\", Const, 0, \"\"},\n\t\t{\"IN_CLASSB_MAX\", Const, 0, \"\"},\n\t\t{\"IN_CLASSB_NET\", Const, 0, \"\"},\n\t\t{\"IN_CLASSB_NSHIFT\", Const, 0, \"\"},\n\t\t{\"IN_CLASSC_HOST\", Const, 0, \"\"},\n\t\t{\"IN_CLASSC_NET\", Const, 0, \"\"},\n\t\t{\"IN_CLASSC_NSHIFT\", Const, 0, \"\"},\n\t\t{\"IN_CLASSD_HOST\", Const, 0, \"\"},\n\t\t{\"IN_CLASSD_NET\", Const, 0, \"\"},\n\t\t{\"IN_CLASSD_NSHIFT\", Const, 0, \"\"},\n\t\t{\"IN_CLOEXEC\", Const, 0, \"\"},\n\t\t{\"IN_CLOSE\", Const, 0, \"\"},\n\t\t{\"IN_CLOSE_NOWRITE\", Const, 0, \"\"},\n\t\t{\"IN_CLOSE_WRITE\", Const, 0, \"\"},\n\t\t{\"IN_CREATE\", Const, 0, \"\"},\n\t\t{\"IN_DELETE\", Const, 0, \"\"},\n\t\t{\"IN_DELETE_SELF\", Const, 0, \"\"},\n\t\t{\"IN_DONT_FOLLOW\", Const, 0, \"\"},\n\t\t{\"IN_EXCL_UNLINK\", Const, 0, \"\"},\n\t\t{\"IN_IGNORED\", Const, 0, \"\"},\n\t\t{\"IN_ISDIR\", Const, 0, \"\"},\n\t\t{\"IN_LINKLOCALNETNUM\", Const, 0, \"\"},\n\t\t{\"IN_LOOPBACKNET\", Const, 0, \"\"},\n\t\t{\"IN_MASK_ADD\", Const, 0, \"\"},\n\t\t{\"IN_MODIFY\", Const, 0, \"\"},\n\t\t{\"IN_MOVE\", Const, 0, \"\"},\n\t\t{\"IN_MOVED_FROM\", Const, 0, \"\"},\n\t\t{\"IN_MOVED_TO\", Const, 0, \"\"},\n\t\t{\"IN_MOVE_SELF\", Const, 0, \"\"},\n\t\t{\"IN_NONBLOCK\", Const, 0, \"\"},\n\t\t{\"IN_ONESHOT\", Const, 0, \"\"},\n\t\t{\"IN_ONLYDIR\", Const, 0, \"\"},\n\t\t{\"IN_OPEN\", Const, 0, \"\"},\n\t\t{\"IN_Q_OVERFLOW\", Const, 0, \"\"},\n\t\t{\"IN_RFC3021_HOST\", Const, 1, \"\"},\n\t\t{\"IN_RFC3021_MASK\", Const, 1, \"\"},\n\t\t{\"IN_RFC3021_NET\", Const, 1, \"\"},\n\t\t{\"IN_RFC3021_NSHIFT\", Const, 1, \"\"},\n\t\t{\"IN_UNMOUNT\", Const, 0, \"\"},\n\t\t{\"IOC_IN\", Const, 1, \"\"},\n\t\t{\"IOC_INOUT\", Const, 1, \"\"},\n\t\t{\"IOC_OUT\", Const, 1, \"\"},\n\t\t{\"IOC_VENDOR\", Const, 3, \"\"},\n\t\t{\"IOC_WS2\", Const, 1, \"\"},\n\t\t{\"IO_REPARSE_TAG_SYMLINK\", Const, 4, \"\"},\n\t\t{\"IPMreq\", Type, 0, \"\"},\n\t\t{\"IPMreq.Interface\", Field, 0, \"\"},\n\t\t{\"IPMreq.Multiaddr\", Field, 0, \"\"},\n\t\t{\"IPMreqn\", Type, 0, \"\"},\n\t\t{\"IPMreqn.Address\", Field, 0, \"\"},\n\t\t{\"IPMreqn.Ifindex\", Field, 0, \"\"},\n\t\t{\"IPMreqn.Multiaddr\", Field, 0, \"\"},\n\t\t{\"IPPROTO_3PC\", Const, 0, \"\"},\n\t\t{\"IPPROTO_ADFS\", Const, 0, \"\"},\n\t\t{\"IPPROTO_AH\", Const, 0, \"\"},\n\t\t{\"IPPROTO_AHIP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_APES\", Const, 0, \"\"},\n\t\t{\"IPPROTO_ARGUS\", Const, 0, \"\"},\n\t\t{\"IPPROTO_AX25\", Const, 0, \"\"},\n\t\t{\"IPPROTO_BHA\", Const, 0, \"\"},\n\t\t{\"IPPROTO_BLT\", Const, 0, \"\"},\n\t\t{\"IPPROTO_BRSATMON\", Const, 0, \"\"},\n\t\t{\"IPPROTO_CARP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_CFTP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_CHAOS\", Const, 0, \"\"},\n\t\t{\"IPPROTO_CMTP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_COMP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_CPHB\", Const, 0, \"\"},\n\t\t{\"IPPROTO_CPNX\", Const, 0, \"\"},\n\t\t{\"IPPROTO_DCCP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_DDP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_DGP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_DIVERT\", Const, 0, \"\"},\n\t\t{\"IPPROTO_DIVERT_INIT\", Const, 3, \"\"},\n\t\t{\"IPPROTO_DIVERT_RESP\", Const, 3, \"\"},\n\t\t{\"IPPROTO_DONE\", Const, 0, \"\"},\n\t\t{\"IPPROTO_DSTOPTS\", Const, 0, \"\"},\n\t\t{\"IPPROTO_EGP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_EMCON\", Const, 0, \"\"},\n\t\t{\"IPPROTO_ENCAP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_EON\", Const, 0, \"\"},\n\t\t{\"IPPROTO_ESP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_ETHERIP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_FRAGMENT\", Const, 0, \"\"},\n\t\t{\"IPPROTO_GGP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_GMTP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_GRE\", Const, 0, \"\"},\n\t\t{\"IPPROTO_HELLO\", Const, 0, \"\"},\n\t\t{\"IPPROTO_HMP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_HOPOPTS\", Const, 0, \"\"},\n\t\t{\"IPPROTO_ICMP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_ICMPV6\", Const, 0, \"\"},\n\t\t{\"IPPROTO_IDP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_IDPR\", Const, 0, \"\"},\n\t\t{\"IPPROTO_IDRP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_IGMP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_IGP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_IGRP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_IL\", Const, 0, \"\"},\n\t\t{\"IPPROTO_INLSP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_INP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_IP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_IPCOMP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_IPCV\", Const, 0, \"\"},\n\t\t{\"IPPROTO_IPEIP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_IPIP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_IPPC\", Const, 0, \"\"},\n\t\t{\"IPPROTO_IPV4\", Const, 0, \"\"},\n\t\t{\"IPPROTO_IPV6\", Const, 0, \"\"},\n\t\t{\"IPPROTO_IPV6_ICMP\", Const, 1, \"\"},\n\t\t{\"IPPROTO_IRTP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_KRYPTOLAN\", Const, 0, \"\"},\n\t\t{\"IPPROTO_LARP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_LEAF1\", Const, 0, \"\"},\n\t\t{\"IPPROTO_LEAF2\", Const, 0, \"\"},\n\t\t{\"IPPROTO_MAX\", Const, 0, \"\"},\n\t\t{\"IPPROTO_MAXID\", Const, 0, \"\"},\n\t\t{\"IPPROTO_MEAS\", Const, 0, \"\"},\n\t\t{\"IPPROTO_MH\", Const, 1, \"\"},\n\t\t{\"IPPROTO_MHRP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_MICP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_MOBILE\", Const, 0, \"\"},\n\t\t{\"IPPROTO_MPLS\", Const, 1, \"\"},\n\t\t{\"IPPROTO_MTP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_MUX\", Const, 0, \"\"},\n\t\t{\"IPPROTO_ND\", Const, 0, \"\"},\n\t\t{\"IPPROTO_NHRP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_NONE\", Const, 0, \"\"},\n\t\t{\"IPPROTO_NSP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_NVPII\", Const, 0, \"\"},\n\t\t{\"IPPROTO_OLD_DIVERT\", Const, 0, \"\"},\n\t\t{\"IPPROTO_OSPFIGP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_PFSYNC\", Const, 0, \"\"},\n\t\t{\"IPPROTO_PGM\", Const, 0, \"\"},\n\t\t{\"IPPROTO_PIGP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_PIM\", Const, 0, \"\"},\n\t\t{\"IPPROTO_PRM\", Const, 0, \"\"},\n\t\t{\"IPPROTO_PUP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_PVP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_RAW\", Const, 0, \"\"},\n\t\t{\"IPPROTO_RCCMON\", Const, 0, \"\"},\n\t\t{\"IPPROTO_RDP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_ROUTING\", Const, 0, \"\"},\n\t\t{\"IPPROTO_RSVP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_RVD\", Const, 0, \"\"},\n\t\t{\"IPPROTO_SATEXPAK\", Const, 0, \"\"},\n\t\t{\"IPPROTO_SATMON\", Const, 0, \"\"},\n\t\t{\"IPPROTO_SCCSP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_SCTP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_SDRP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_SEND\", Const, 1, \"\"},\n\t\t{\"IPPROTO_SEP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_SKIP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_SPACER\", Const, 0, \"\"},\n\t\t{\"IPPROTO_SRPC\", Const, 0, \"\"},\n\t\t{\"IPPROTO_ST\", Const, 0, \"\"},\n\t\t{\"IPPROTO_SVMTP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_SWIPE\", Const, 0, \"\"},\n\t\t{\"IPPROTO_TCF\", Const, 0, \"\"},\n\t\t{\"IPPROTO_TCP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_TLSP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_TP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_TPXX\", Const, 0, \"\"},\n\t\t{\"IPPROTO_TRUNK1\", Const, 0, \"\"},\n\t\t{\"IPPROTO_TRUNK2\", Const, 0, \"\"},\n\t\t{\"IPPROTO_TTP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_UDP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_UDPLITE\", Const, 0, \"\"},\n\t\t{\"IPPROTO_VINES\", Const, 0, \"\"},\n\t\t{\"IPPROTO_VISA\", Const, 0, \"\"},\n\t\t{\"IPPROTO_VMTP\", Const, 0, \"\"},\n\t\t{\"IPPROTO_VRRP\", Const, 1, \"\"},\n\t\t{\"IPPROTO_WBEXPAK\", Const, 0, \"\"},\n\t\t{\"IPPROTO_WBMON\", Const, 0, \"\"},\n\t\t{\"IPPROTO_WSN\", Const, 0, \"\"},\n\t\t{\"IPPROTO_XNET\", Const, 0, \"\"},\n\t\t{\"IPPROTO_XTP\", Const, 0, \"\"},\n\t\t{\"IPV6_2292DSTOPTS\", Const, 0, \"\"},\n\t\t{\"IPV6_2292HOPLIMIT\", Const, 0, \"\"},\n\t\t{\"IPV6_2292HOPOPTS\", Const, 0, \"\"},\n\t\t{\"IPV6_2292NEXTHOP\", Const, 0, \"\"},\n\t\t{\"IPV6_2292PKTINFO\", Const, 0, \"\"},\n\t\t{\"IPV6_2292PKTOPTIONS\", Const, 0, \"\"},\n\t\t{\"IPV6_2292RTHDR\", Const, 0, \"\"},\n\t\t{\"IPV6_ADDRFORM\", Const, 0, \"\"},\n\t\t{\"IPV6_ADD_MEMBERSHIP\", Const, 0, \"\"},\n\t\t{\"IPV6_AUTHHDR\", Const, 0, \"\"},\n\t\t{\"IPV6_AUTH_LEVEL\", Const, 1, \"\"},\n\t\t{\"IPV6_AUTOFLOWLABEL\", Const, 0, \"\"},\n\t\t{\"IPV6_BINDANY\", Const, 0, \"\"},\n\t\t{\"IPV6_BINDV6ONLY\", Const, 0, \"\"},\n\t\t{\"IPV6_BOUND_IF\", Const, 0, \"\"},\n\t\t{\"IPV6_CHECKSUM\", Const, 0, \"\"},\n\t\t{\"IPV6_DEFAULT_MULTICAST_HOPS\", Const, 0, \"\"},\n\t\t{\"IPV6_DEFAULT_MULTICAST_LOOP\", Const, 0, \"\"},\n\t\t{\"IPV6_DEFHLIM\", Const, 0, \"\"},\n\t\t{\"IPV6_DONTFRAG\", Const, 0, \"\"},\n\t\t{\"IPV6_DROP_MEMBERSHIP\", Const, 0, \"\"},\n\t\t{\"IPV6_DSTOPTS\", Const, 0, \"\"},\n\t\t{\"IPV6_ESP_NETWORK_LEVEL\", Const, 1, \"\"},\n\t\t{\"IPV6_ESP_TRANS_LEVEL\", Const, 1, \"\"},\n\t\t{\"IPV6_FAITH\", Const, 0, \"\"},\n\t\t{\"IPV6_FLOWINFO_MASK\", Const, 0, \"\"},\n\t\t{\"IPV6_FLOWLABEL_MASK\", Const, 0, \"\"},\n\t\t{\"IPV6_FRAGTTL\", Const, 0, \"\"},\n\t\t{\"IPV6_FW_ADD\", Const, 0, \"\"},\n\t\t{\"IPV6_FW_DEL\", Const, 0, \"\"},\n\t\t{\"IPV6_FW_FLUSH\", Const, 0, \"\"},\n\t\t{\"IPV6_FW_GET\", Const, 0, \"\"},\n\t\t{\"IPV6_FW_ZERO\", Const, 0, \"\"},\n\t\t{\"IPV6_HLIMDEC\", Const, 0, \"\"},\n\t\t{\"IPV6_HOPLIMIT\", Const, 0, \"\"},\n\t\t{\"IPV6_HOPOPTS\", Const, 0, \"\"},\n\t\t{\"IPV6_IPCOMP_LEVEL\", Const, 1, \"\"},\n\t\t{\"IPV6_IPSEC_POLICY\", Const, 0, \"\"},\n\t\t{\"IPV6_JOIN_ANYCAST\", Const, 0, \"\"},\n\t\t{\"IPV6_JOIN_GROUP\", Const, 0, \"\"},\n\t\t{\"IPV6_LEAVE_ANYCAST\", Const, 0, \"\"},\n\t\t{\"IPV6_LEAVE_GROUP\", Const, 0, \"\"},\n\t\t{\"IPV6_MAXHLIM\", Const, 0, \"\"},\n\t\t{\"IPV6_MAXOPTHDR\", Const, 0, \"\"},\n\t\t{\"IPV6_MAXPACKET\", Const, 0, \"\"},\n\t\t{\"IPV6_MAX_GROUP_SRC_FILTER\", Const, 0, \"\"},\n\t\t{\"IPV6_MAX_MEMBERSHIPS\", Const, 0, \"\"},\n\t\t{\"IPV6_MAX_SOCK_SRC_FILTER\", Const, 0, \"\"},\n\t\t{\"IPV6_MIN_MEMBERSHIPS\", Const, 0, \"\"},\n\t\t{\"IPV6_MMTU\", Const, 0, \"\"},\n\t\t{\"IPV6_MSFILTER\", Const, 0, \"\"},\n\t\t{\"IPV6_MTU\", Const, 0, \"\"},\n\t\t{\"IPV6_MTU_DISCOVER\", Const, 0, \"\"},\n\t\t{\"IPV6_MULTICAST_HOPS\", Const, 0, \"\"},\n\t\t{\"IPV6_MULTICAST_IF\", Const, 0, \"\"},\n\t\t{\"IPV6_MULTICAST_LOOP\", Const, 0, \"\"},\n\t\t{\"IPV6_NEXTHOP\", Const, 0, \"\"},\n\t\t{\"IPV6_OPTIONS\", Const, 1, \"\"},\n\t\t{\"IPV6_PATHMTU\", Const, 0, \"\"},\n\t\t{\"IPV6_PIPEX\", Const, 1, \"\"},\n\t\t{\"IPV6_PKTINFO\", Const, 0, \"\"},\n\t\t{\"IPV6_PMTUDISC_DO\", Const, 0, \"\"},\n\t\t{\"IPV6_PMTUDISC_DONT\", Const, 0, \"\"},\n\t\t{\"IPV6_PMTUDISC_PROBE\", Const, 0, \"\"},\n\t\t{\"IPV6_PMTUDISC_WANT\", Const, 0, \"\"},\n\t\t{\"IPV6_PORTRANGE\", Const, 0, \"\"},\n\t\t{\"IPV6_PORTRANGE_DEFAULT\", Const, 0, \"\"},\n\t\t{\"IPV6_PORTRANGE_HIGH\", Const, 0, \"\"},\n\t\t{\"IPV6_PORTRANGE_LOW\", Const, 0, \"\"},\n\t\t{\"IPV6_PREFER_TEMPADDR\", Const, 0, \"\"},\n\t\t{\"IPV6_RECVDSTOPTS\", Const, 0, \"\"},\n\t\t{\"IPV6_RECVDSTPORT\", Const, 3, \"\"},\n\t\t{\"IPV6_RECVERR\", Const, 0, \"\"},\n\t\t{\"IPV6_RECVHOPLIMIT\", Const, 0, \"\"},\n\t\t{\"IPV6_RECVHOPOPTS\", Const, 0, \"\"},\n\t\t{\"IPV6_RECVPATHMTU\", Const, 0, \"\"},\n\t\t{\"IPV6_RECVPKTINFO\", Const, 0, \"\"},\n\t\t{\"IPV6_RECVRTHDR\", Const, 0, \"\"},\n\t\t{\"IPV6_RECVTCLASS\", Const, 0, \"\"},\n\t\t{\"IPV6_ROUTER_ALERT\", Const, 0, \"\"},\n\t\t{\"IPV6_RTABLE\", Const, 1, \"\"},\n\t\t{\"IPV6_RTHDR\", Const, 0, \"\"},\n\t\t{\"IPV6_RTHDRDSTOPTS\", Const, 0, \"\"},\n\t\t{\"IPV6_RTHDR_LOOSE\", Const, 0, \"\"},\n\t\t{\"IPV6_RTHDR_STRICT\", Const, 0, \"\"},\n\t\t{\"IPV6_RTHDR_TYPE_0\", Const, 0, \"\"},\n\t\t{\"IPV6_RXDSTOPTS\", Const, 0, \"\"},\n\t\t{\"IPV6_RXHOPOPTS\", Const, 0, \"\"},\n\t\t{\"IPV6_SOCKOPT_RESERVED1\", Const, 0, \"\"},\n\t\t{\"IPV6_TCLASS\", Const, 0, \"\"},\n\t\t{\"IPV6_UNICAST_HOPS\", Const, 0, \"\"},\n\t\t{\"IPV6_USE_MIN_MTU\", Const, 0, \"\"},\n\t\t{\"IPV6_V6ONLY\", Const, 0, \"\"},\n\t\t{\"IPV6_VERSION\", Const, 0, \"\"},\n\t\t{\"IPV6_VERSION_MASK\", Const, 0, \"\"},\n\t\t{\"IPV6_XFRM_POLICY\", Const, 0, \"\"},\n\t\t{\"IP_ADD_MEMBERSHIP\", Const, 0, \"\"},\n\t\t{\"IP_ADD_SOURCE_MEMBERSHIP\", Const, 0, \"\"},\n\t\t{\"IP_AUTH_LEVEL\", Const, 1, \"\"},\n\t\t{\"IP_BINDANY\", Const, 0, \"\"},\n\t\t{\"IP_BLOCK_SOURCE\", Const, 0, \"\"},\n\t\t{\"IP_BOUND_IF\", Const, 0, \"\"},\n\t\t{\"IP_DEFAULT_MULTICAST_LOOP\", Const, 0, \"\"},\n\t\t{\"IP_DEFAULT_MULTICAST_TTL\", Const, 0, \"\"},\n\t\t{\"IP_DF\", Const, 0, \"\"},\n\t\t{\"IP_DIVERTFL\", Const, 3, \"\"},\n\t\t{\"IP_DONTFRAG\", Const, 0, \"\"},\n\t\t{\"IP_DROP_MEMBERSHIP\", Const, 0, \"\"},\n\t\t{\"IP_DROP_SOURCE_MEMBERSHIP\", Const, 0, \"\"},\n\t\t{\"IP_DUMMYNET3\", Const, 0, \"\"},\n\t\t{\"IP_DUMMYNET_CONFIGURE\", Const, 0, \"\"},\n\t\t{\"IP_DUMMYNET_DEL\", Const, 0, \"\"},\n\t\t{\"IP_DUMMYNET_FLUSH\", Const, 0, \"\"},\n\t\t{\"IP_DUMMYNET_GET\", Const, 0, \"\"},\n\t\t{\"IP_EF\", Const, 1, \"\"},\n\t\t{\"IP_ERRORMTU\", Const, 1, \"\"},\n\t\t{\"IP_ESP_NETWORK_LEVEL\", Const, 1, \"\"},\n\t\t{\"IP_ESP_TRANS_LEVEL\", Const, 1, \"\"},\n\t\t{\"IP_FAITH\", Const, 0, \"\"},\n\t\t{\"IP_FREEBIND\", Const, 0, \"\"},\n\t\t{\"IP_FW3\", Const, 0, \"\"},\n\t\t{\"IP_FW_ADD\", Const, 0, \"\"},\n\t\t{\"IP_FW_DEL\", Const, 0, \"\"},\n\t\t{\"IP_FW_FLUSH\", Const, 0, \"\"},\n\t\t{\"IP_FW_GET\", Const, 0, \"\"},\n\t\t{\"IP_FW_NAT_CFG\", Const, 0, \"\"},\n\t\t{\"IP_FW_NAT_DEL\", Const, 0, \"\"},\n\t\t{\"IP_FW_NAT_GET_CONFIG\", Const, 0, \"\"},\n\t\t{\"IP_FW_NAT_GET_LOG\", Const, 0, \"\"},\n\t\t{\"IP_FW_RESETLOG\", Const, 0, \"\"},\n\t\t{\"IP_FW_TABLE_ADD\", Const, 0, \"\"},\n\t\t{\"IP_FW_TABLE_DEL\", Const, 0, \"\"},\n\t\t{\"IP_FW_TABLE_FLUSH\", Const, 0, \"\"},\n\t\t{\"IP_FW_TABLE_GETSIZE\", Const, 0, \"\"},\n\t\t{\"IP_FW_TABLE_LIST\", Const, 0, \"\"},\n\t\t{\"IP_FW_ZERO\", Const, 0, \"\"},\n\t\t{\"IP_HDRINCL\", Const, 0, \"\"},\n\t\t{\"IP_IPCOMP_LEVEL\", Const, 1, \"\"},\n\t\t{\"IP_IPSECFLOWINFO\", Const, 1, \"\"},\n\t\t{\"IP_IPSEC_LOCAL_AUTH\", Const, 1, \"\"},\n\t\t{\"IP_IPSEC_LOCAL_CRED\", Const, 1, \"\"},\n\t\t{\"IP_IPSEC_LOCAL_ID\", Const, 1, \"\"},\n\t\t{\"IP_IPSEC_POLICY\", Const, 0, \"\"},\n\t\t{\"IP_IPSEC_REMOTE_AUTH\", Const, 1, \"\"},\n\t\t{\"IP_IPSEC_REMOTE_CRED\", Const, 1, \"\"},\n\t\t{\"IP_IPSEC_REMOTE_ID\", Const, 1, \"\"},\n\t\t{\"IP_MAXPACKET\", Const, 0, \"\"},\n\t\t{\"IP_MAX_GROUP_SRC_FILTER\", Const, 0, \"\"},\n\t\t{\"IP_MAX_MEMBERSHIPS\", Const, 0, \"\"},\n\t\t{\"IP_MAX_SOCK_MUTE_FILTER\", Const, 0, \"\"},\n\t\t{\"IP_MAX_SOCK_SRC_FILTER\", Const, 0, \"\"},\n\t\t{\"IP_MAX_SOURCE_FILTER\", Const, 0, \"\"},\n\t\t{\"IP_MF\", Const, 0, \"\"},\n\t\t{\"IP_MINFRAGSIZE\", Const, 1, \"\"},\n\t\t{\"IP_MINTTL\", Const, 0, \"\"},\n\t\t{\"IP_MIN_MEMBERSHIPS\", Const, 0, \"\"},\n\t\t{\"IP_MSFILTER\", Const, 0, \"\"},\n\t\t{\"IP_MSS\", Const, 0, \"\"},\n\t\t{\"IP_MTU\", Const, 0, \"\"},\n\t\t{\"IP_MTU_DISCOVER\", Const, 0, \"\"},\n\t\t{\"IP_MULTICAST_IF\", Const, 0, \"\"},\n\t\t{\"IP_MULTICAST_IFINDEX\", Const, 0, \"\"},\n\t\t{\"IP_MULTICAST_LOOP\", Const, 0, \"\"},\n\t\t{\"IP_MULTICAST_TTL\", Const, 0, \"\"},\n\t\t{\"IP_MULTICAST_VIF\", Const, 0, \"\"},\n\t\t{\"IP_NAT__XXX\", Const, 0, \"\"},\n\t\t{\"IP_OFFMASK\", Const, 0, \"\"},\n\t\t{\"IP_OLD_FW_ADD\", Const, 0, \"\"},\n\t\t{\"IP_OLD_FW_DEL\", Const, 0, \"\"},\n\t\t{\"IP_OLD_FW_FLUSH\", Const, 0, \"\"},\n\t\t{\"IP_OLD_FW_GET\", Const, 0, \"\"},\n\t\t{\"IP_OLD_FW_RESETLOG\", Const, 0, \"\"},\n\t\t{\"IP_OLD_FW_ZERO\", Const, 0, \"\"},\n\t\t{\"IP_ONESBCAST\", Const, 0, \"\"},\n\t\t{\"IP_OPTIONS\", Const, 0, \"\"},\n\t\t{\"IP_ORIGDSTADDR\", Const, 0, \"\"},\n\t\t{\"IP_PASSSEC\", Const, 0, \"\"},\n\t\t{\"IP_PIPEX\", Const, 1, \"\"},\n\t\t{\"IP_PKTINFO\", Const, 0, \"\"},\n\t\t{\"IP_PKTOPTIONS\", Const, 0, \"\"},\n\t\t{\"IP_PMTUDISC\", Const, 0, \"\"},\n\t\t{\"IP_PMTUDISC_DO\", Const, 0, \"\"},\n\t\t{\"IP_PMTUDISC_DONT\", Const, 0, \"\"},\n\t\t{\"IP_PMTUDISC_PROBE\", Const, 0, \"\"},\n\t\t{\"IP_PMTUDISC_WANT\", Const, 0, \"\"},\n\t\t{\"IP_PORTRANGE\", Const, 0, \"\"},\n\t\t{\"IP_PORTRANGE_DEFAULT\", Const, 0, \"\"},\n\t\t{\"IP_PORTRANGE_HIGH\", Const, 0, \"\"},\n\t\t{\"IP_PORTRANGE_LOW\", Const, 0, \"\"},\n\t\t{\"IP_RECVDSTADDR\", Const, 0, \"\"},\n\t\t{\"IP_RECVDSTPORT\", Const, 1, \"\"},\n\t\t{\"IP_RECVERR\", Const, 0, \"\"},\n\t\t{\"IP_RECVIF\", Const, 0, \"\"},\n\t\t{\"IP_RECVOPTS\", Const, 0, \"\"},\n\t\t{\"IP_RECVORIGDSTADDR\", Const, 0, \"\"},\n\t\t{\"IP_RECVPKTINFO\", Const, 0, \"\"},\n\t\t{\"IP_RECVRETOPTS\", Const, 0, \"\"},\n\t\t{\"IP_RECVRTABLE\", Const, 1, \"\"},\n\t\t{\"IP_RECVTOS\", Const, 0, \"\"},\n\t\t{\"IP_RECVTTL\", Const, 0, \"\"},\n\t\t{\"IP_RETOPTS\", Const, 0, \"\"},\n\t\t{\"IP_RF\", Const, 0, \"\"},\n\t\t{\"IP_ROUTER_ALERT\", Const, 0, \"\"},\n\t\t{\"IP_RSVP_OFF\", Const, 0, \"\"},\n\t\t{\"IP_RSVP_ON\", Const, 0, \"\"},\n\t\t{\"IP_RSVP_VIF_OFF\", Const, 0, \"\"},\n\t\t{\"IP_RSVP_VIF_ON\", Const, 0, \"\"},\n\t\t{\"IP_RTABLE\", Const, 1, \"\"},\n\t\t{\"IP_SENDSRCADDR\", Const, 0, \"\"},\n\t\t{\"IP_STRIPHDR\", Const, 0, \"\"},\n\t\t{\"IP_TOS\", Const, 0, \"\"},\n\t\t{\"IP_TRAFFIC_MGT_BACKGROUND\", Const, 0, \"\"},\n\t\t{\"IP_TRANSPARENT\", Const, 0, \"\"},\n\t\t{\"IP_TTL\", Const, 0, \"\"},\n\t\t{\"IP_UNBLOCK_SOURCE\", Const, 0, \"\"},\n\t\t{\"IP_XFRM_POLICY\", Const, 0, \"\"},\n\t\t{\"IPv6MTUInfo\", Type, 2, \"\"},\n\t\t{\"IPv6MTUInfo.Addr\", Field, 2, \"\"},\n\t\t{\"IPv6MTUInfo.Mtu\", Field, 2, \"\"},\n\t\t{\"IPv6Mreq\", Type, 0, \"\"},\n\t\t{\"IPv6Mreq.Interface\", Field, 0, \"\"},\n\t\t{\"IPv6Mreq.Multiaddr\", Field, 0, \"\"},\n\t\t{\"ISIG\", Const, 0, \"\"},\n\t\t{\"ISTRIP\", Const, 0, \"\"},\n\t\t{\"IUCLC\", Const, 0, \"\"},\n\t\t{\"IUTF8\", Const, 0, \"\"},\n\t\t{\"IXANY\", Const, 0, \"\"},\n\t\t{\"IXOFF\", Const, 0, \"\"},\n\t\t{\"IXON\", Const, 0, \"\"},\n\t\t{\"IfAddrmsg\", Type, 0, \"\"},\n\t\t{\"IfAddrmsg.Family\", Field, 0, \"\"},\n\t\t{\"IfAddrmsg.Flags\", Field, 0, \"\"},\n\t\t{\"IfAddrmsg.Index\", Field, 0, \"\"},\n\t\t{\"IfAddrmsg.Prefixlen\", Field, 0, \"\"},\n\t\t{\"IfAddrmsg.Scope\", Field, 0, \"\"},\n\t\t{\"IfAnnounceMsghdr\", Type, 1, \"\"},\n\t\t{\"IfAnnounceMsghdr.Hdrlen\", Field, 2, \"\"},\n\t\t{\"IfAnnounceMsghdr.Index\", Field, 1, \"\"},\n\t\t{\"IfAnnounceMsghdr.Msglen\", Field, 1, \"\"},\n\t\t{\"IfAnnounceMsghdr.Name\", Field, 1, \"\"},\n\t\t{\"IfAnnounceMsghdr.Type\", Field, 1, \"\"},\n\t\t{\"IfAnnounceMsghdr.Version\", Field, 1, \"\"},\n\t\t{\"IfAnnounceMsghdr.What\", Field, 1, \"\"},\n\t\t{\"IfData\", Type, 0, \"\"},\n\t\t{\"IfData.Addrlen\", Field, 0, \"\"},\n\t\t{\"IfData.Baudrate\", Field, 0, \"\"},\n\t\t{\"IfData.Capabilities\", Field, 2, \"\"},\n\t\t{\"IfData.Collisions\", Field, 0, \"\"},\n\t\t{\"IfData.Datalen\", Field, 0, \"\"},\n\t\t{\"IfData.Epoch\", Field, 0, \"\"},\n\t\t{\"IfData.Hdrlen\", Field, 0, \"\"},\n\t\t{\"IfData.Hwassist\", Field, 0, \"\"},\n\t\t{\"IfData.Ibytes\", Field, 0, \"\"},\n\t\t{\"IfData.Ierrors\", Field, 0, \"\"},\n\t\t{\"IfData.Imcasts\", Field, 0, \"\"},\n\t\t{\"IfData.Ipackets\", Field, 0, \"\"},\n\t\t{\"IfData.Iqdrops\", Field, 0, \"\"},\n\t\t{\"IfData.Lastchange\", Field, 0, \"\"},\n\t\t{\"IfData.Link_state\", Field, 0, \"\"},\n\t\t{\"IfData.Mclpool\", Field, 2, \"\"},\n\t\t{\"IfData.Metric\", Field, 0, \"\"},\n\t\t{\"IfData.Mtu\", Field, 0, \"\"},\n\t\t{\"IfData.Noproto\", Field, 0, \"\"},\n\t\t{\"IfData.Obytes\", Field, 0, \"\"},\n\t\t{\"IfData.Oerrors\", Field, 0, \"\"},\n\t\t{\"IfData.Omcasts\", Field, 0, \"\"},\n\t\t{\"IfData.Opackets\", Field, 0, \"\"},\n\t\t{\"IfData.Pad\", Field, 2, \"\"},\n\t\t{\"IfData.Pad_cgo_0\", Field, 2, \"\"},\n\t\t{\"IfData.Pad_cgo_1\", Field, 2, \"\"},\n\t\t{\"IfData.Physical\", Field, 0, \"\"},\n\t\t{\"IfData.Recvquota\", Field, 0, \"\"},\n\t\t{\"IfData.Recvtiming\", Field, 0, \"\"},\n\t\t{\"IfData.Reserved1\", Field, 0, \"\"},\n\t\t{\"IfData.Reserved2\", Field, 0, \"\"},\n\t\t{\"IfData.Spare_char1\", Field, 0, \"\"},\n\t\t{\"IfData.Spare_char2\", Field, 0, \"\"},\n\t\t{\"IfData.Type\", Field, 0, \"\"},\n\t\t{\"IfData.Typelen\", Field, 0, \"\"},\n\t\t{\"IfData.Unused1\", Field, 0, \"\"},\n\t\t{\"IfData.Unused2\", Field, 0, \"\"},\n\t\t{\"IfData.Xmitquota\", Field, 0, \"\"},\n\t\t{\"IfData.Xmittiming\", Field, 0, \"\"},\n\t\t{\"IfInfomsg\", Type, 0, \"\"},\n\t\t{\"IfInfomsg.Change\", Field, 0, \"\"},\n\t\t{\"IfInfomsg.Family\", Field, 0, \"\"},\n\t\t{\"IfInfomsg.Flags\", Field, 0, \"\"},\n\t\t{\"IfInfomsg.Index\", Field, 0, \"\"},\n\t\t{\"IfInfomsg.Type\", Field, 0, \"\"},\n\t\t{\"IfInfomsg.X__ifi_pad\", Field, 0, \"\"},\n\t\t{\"IfMsghdr\", Type, 0, \"\"},\n\t\t{\"IfMsghdr.Addrs\", Field, 0, \"\"},\n\t\t{\"IfMsghdr.Data\", Field, 0, \"\"},\n\t\t{\"IfMsghdr.Flags\", Field, 0, \"\"},\n\t\t{\"IfMsghdr.Hdrlen\", Field, 2, \"\"},\n\t\t{\"IfMsghdr.Index\", Field, 0, \"\"},\n\t\t{\"IfMsghdr.Msglen\", Field, 0, \"\"},\n\t\t{\"IfMsghdr.Pad1\", Field, 2, \"\"},\n\t\t{\"IfMsghdr.Pad2\", Field, 2, \"\"},\n\t\t{\"IfMsghdr.Pad_cgo_0\", Field, 0, \"\"},\n\t\t{\"IfMsghdr.Pad_cgo_1\", Field, 2, \"\"},\n\t\t{\"IfMsghdr.Tableid\", Field, 2, \"\"},\n\t\t{\"IfMsghdr.Type\", Field, 0, \"\"},\n\t\t{\"IfMsghdr.Version\", Field, 0, \"\"},\n\t\t{\"IfMsghdr.Xflags\", Field, 2, \"\"},\n\t\t{\"IfaMsghdr\", Type, 0, \"\"},\n\t\t{\"IfaMsghdr.Addrs\", Field, 0, \"\"},\n\t\t{\"IfaMsghdr.Flags\", Field, 0, \"\"},\n\t\t{\"IfaMsghdr.Hdrlen\", Field, 2, \"\"},\n\t\t{\"IfaMsghdr.Index\", Field, 0, \"\"},\n\t\t{\"IfaMsghdr.Metric\", Field, 0, \"\"},\n\t\t{\"IfaMsghdr.Msglen\", Field, 0, \"\"},\n\t\t{\"IfaMsghdr.Pad1\", Field, 2, \"\"},\n\t\t{\"IfaMsghdr.Pad2\", Field, 2, \"\"},\n\t\t{\"IfaMsghdr.Pad_cgo_0\", Field, 0, \"\"},\n\t\t{\"IfaMsghdr.Tableid\", Field, 2, \"\"},\n\t\t{\"IfaMsghdr.Type\", Field, 0, \"\"},\n\t\t{\"IfaMsghdr.Version\", Field, 0, \"\"},\n\t\t{\"IfmaMsghdr\", Type, 0, \"\"},\n\t\t{\"IfmaMsghdr.Addrs\", Field, 0, \"\"},\n\t\t{\"IfmaMsghdr.Flags\", Field, 0, \"\"},\n\t\t{\"IfmaMsghdr.Index\", Field, 0, \"\"},\n\t\t{\"IfmaMsghdr.Msglen\", Field, 0, \"\"},\n\t\t{\"IfmaMsghdr.Pad_cgo_0\", Field, 0, \"\"},\n\t\t{\"IfmaMsghdr.Type\", Field, 0, \"\"},\n\t\t{\"IfmaMsghdr.Version\", Field, 0, \"\"},\n\t\t{\"IfmaMsghdr2\", Type, 0, \"\"},\n\t\t{\"IfmaMsghdr2.Addrs\", Field, 0, \"\"},\n\t\t{\"IfmaMsghdr2.Flags\", Field, 0, \"\"},\n\t\t{\"IfmaMsghdr2.Index\", Field, 0, \"\"},\n\t\t{\"IfmaMsghdr2.Msglen\", Field, 0, \"\"},\n\t\t{\"IfmaMsghdr2.Pad_cgo_0\", Field, 0, \"\"},\n\t\t{\"IfmaMsghdr2.Refcount\", Field, 0, \"\"},\n\t\t{\"IfmaMsghdr2.Type\", Field, 0, \"\"},\n\t\t{\"IfmaMsghdr2.Version\", Field, 0, \"\"},\n\t\t{\"ImplementsGetwd\", Const, 0, \"\"},\n\t\t{\"Inet4Pktinfo\", Type, 0, \"\"},\n\t\t{\"Inet4Pktinfo.Addr\", Field, 0, \"\"},\n\t\t{\"Inet4Pktinfo.Ifindex\", Field, 0, \"\"},\n\t\t{\"Inet4Pktinfo.Spec_dst\", Field, 0, \"\"},\n\t\t{\"Inet6Pktinfo\", Type, 0, \"\"},\n\t\t{\"Inet6Pktinfo.Addr\", Field, 0, \"\"},\n\t\t{\"Inet6Pktinfo.Ifindex\", Field, 0, \"\"},\n\t\t{\"InotifyAddWatch\", Func, 0, \"func(fd int, pathname string, mask uint32) (watchdesc int, err error)\"},\n\t\t{\"InotifyEvent\", Type, 0, \"\"},\n\t\t{\"InotifyEvent.Cookie\", Field, 0, \"\"},\n\t\t{\"InotifyEvent.Len\", Field, 0, \"\"},\n\t\t{\"InotifyEvent.Mask\", Field, 0, \"\"},\n\t\t{\"InotifyEvent.Name\", Field, 0, \"\"},\n\t\t{\"InotifyEvent.Wd\", Field, 0, \"\"},\n\t\t{\"InotifyInit\", Func, 0, \"func() (fd int, err error)\"},\n\t\t{\"InotifyInit1\", Func, 0, \"func(flags int) (fd int, err error)\"},\n\t\t{\"InotifyRmWatch\", Func, 0, \"func(fd int, watchdesc uint32) (success int, err error)\"},\n\t\t{\"InterfaceAddrMessage\", Type, 0, \"\"},\n\t\t{\"InterfaceAddrMessage.Data\", Field, 0, \"\"},\n\t\t{\"InterfaceAddrMessage.Header\", Field, 0, \"\"},\n\t\t{\"InterfaceAnnounceMessage\", Type, 1, \"\"},\n\t\t{\"InterfaceAnnounceMessage.Header\", Field, 1, \"\"},\n\t\t{\"InterfaceInfo\", Type, 0, \"\"},\n\t\t{\"InterfaceInfo.Address\", Field, 0, \"\"},\n\t\t{\"InterfaceInfo.BroadcastAddress\", Field, 0, \"\"},\n\t\t{\"InterfaceInfo.Flags\", Field, 0, \"\"},\n\t\t{\"InterfaceInfo.Netmask\", Field, 0, \"\"},\n\t\t{\"InterfaceMessage\", Type, 0, \"\"},\n\t\t{\"InterfaceMessage.Data\", Field, 0, \"\"},\n\t\t{\"InterfaceMessage.Header\", Field, 0, \"\"},\n\t\t{\"InterfaceMulticastAddrMessage\", Type, 0, \"\"},\n\t\t{\"InterfaceMulticastAddrMessage.Data\", Field, 0, \"\"},\n\t\t{\"InterfaceMulticastAddrMessage.Header\", Field, 0, \"\"},\n\t\t{\"InvalidHandle\", Const, 0, \"\"},\n\t\t{\"Ioperm\", Func, 0, \"func(from int, num int, on int) (err error)\"},\n\t\t{\"Iopl\", Func, 0, \"func(level int) (err error)\"},\n\t\t{\"Iovec\", Type, 0, \"\"},\n\t\t{\"Iovec.Base\", Field, 0, \"\"},\n\t\t{\"Iovec.Len\", Field, 0, \"\"},\n\t\t{\"IpAdapterInfo\", Type, 0, \"\"},\n\t\t{\"IpAdapterInfo.AdapterName\", Field, 0, \"\"},\n\t\t{\"IpAdapterInfo.Address\", Field, 0, \"\"},\n\t\t{\"IpAdapterInfo.AddressLength\", Field, 0, \"\"},\n\t\t{\"IpAdapterInfo.ComboIndex\", Field, 0, \"\"},\n\t\t{\"IpAdapterInfo.CurrentIpAddress\", Field, 0, \"\"},\n\t\t{\"IpAdapterInfo.Description\", Field, 0, \"\"},\n\t\t{\"IpAdapterInfo.DhcpEnabled\", Field, 0, \"\"},\n\t\t{\"IpAdapterInfo.DhcpServer\", Field, 0, \"\"},\n\t\t{\"IpAdapterInfo.GatewayList\", Field, 0, \"\"},\n\t\t{\"IpAdapterInfo.HaveWins\", Field, 0, \"\"},\n\t\t{\"IpAdapterInfo.Index\", Field, 0, \"\"},\n\t\t{\"IpAdapterInfo.IpAddressList\", Field, 0, \"\"},\n\t\t{\"IpAdapterInfo.LeaseExpires\", Field, 0, \"\"},\n\t\t{\"IpAdapterInfo.LeaseObtained\", Field, 0, \"\"},\n\t\t{\"IpAdapterInfo.Next\", Field, 0, \"\"},\n\t\t{\"IpAdapterInfo.PrimaryWinsServer\", Field, 0, \"\"},\n\t\t{\"IpAdapterInfo.SecondaryWinsServer\", Field, 0, \"\"},\n\t\t{\"IpAdapterInfo.Type\", Field, 0, \"\"},\n\t\t{\"IpAddrString\", Type, 0, \"\"},\n\t\t{\"IpAddrString.Context\", Field, 0, \"\"},\n\t\t{\"IpAddrString.IpAddress\", Field, 0, \"\"},\n\t\t{\"IpAddrString.IpMask\", Field, 0, \"\"},\n\t\t{\"IpAddrString.Next\", Field, 0, \"\"},\n\t\t{\"IpAddressString\", Type, 0, \"\"},\n\t\t{\"IpAddressString.String\", Field, 0, \"\"},\n\t\t{\"IpMaskString\", Type, 0, \"\"},\n\t\t{\"IpMaskString.String\", Field, 2, \"\"},\n\t\t{\"Issetugid\", Func, 0, \"\"},\n\t\t{\"KEY_ALL_ACCESS\", Const, 0, \"\"},\n\t\t{\"KEY_CREATE_LINK\", Const, 0, \"\"},\n\t\t{\"KEY_CREATE_SUB_KEY\", Const, 0, \"\"},\n\t\t{\"KEY_ENUMERATE_SUB_KEYS\", Const, 0, \"\"},\n\t\t{\"KEY_EXECUTE\", Const, 0, \"\"},\n\t\t{\"KEY_NOTIFY\", Const, 0, \"\"},\n\t\t{\"KEY_QUERY_VALUE\", Const, 0, \"\"},\n\t\t{\"KEY_READ\", Const, 0, \"\"},\n\t\t{\"KEY_SET_VALUE\", Const, 0, \"\"},\n\t\t{\"KEY_WOW64_32KEY\", Const, 0, \"\"},\n\t\t{\"KEY_WOW64_64KEY\", Const, 0, \"\"},\n\t\t{\"KEY_WRITE\", Const, 0, \"\"},\n\t\t{\"Kevent\", Func, 0, \"\"},\n\t\t{\"Kevent_t\", Type, 0, \"\"},\n\t\t{\"Kevent_t.Data\", Field, 0, \"\"},\n\t\t{\"Kevent_t.Fflags\", Field, 0, \"\"},\n\t\t{\"Kevent_t.Filter\", Field, 0, \"\"},\n\t\t{\"Kevent_t.Flags\", Field, 0, \"\"},\n\t\t{\"Kevent_t.Ident\", Field, 0, \"\"},\n\t\t{\"Kevent_t.Pad_cgo_0\", Field, 2, \"\"},\n\t\t{\"Kevent_t.Udata\", Field, 0, \"\"},\n\t\t{\"Kill\", Func, 0, \"func(pid int, sig Signal) (err error)\"},\n\t\t{\"Klogctl\", Func, 0, \"func(typ int, buf []byte) (n int, err error)\"},\n\t\t{\"Kqueue\", Func, 0, \"\"},\n\t\t{\"LANG_ENGLISH\", Const, 0, \"\"},\n\t\t{\"LAYERED_PROTOCOL\", Const, 2, \"\"},\n\t\t{\"LCNT_OVERLOAD_FLUSH\", Const, 1, \"\"},\n\t\t{\"LINUX_REBOOT_CMD_CAD_OFF\", Const, 0, \"\"},\n\t\t{\"LINUX_REBOOT_CMD_CAD_ON\", Const, 0, \"\"},\n\t\t{\"LINUX_REBOOT_CMD_HALT\", Const, 0, \"\"},\n\t\t{\"LINUX_REBOOT_CMD_KEXEC\", Const, 0, \"\"},\n\t\t{\"LINUX_REBOOT_CMD_POWER_OFF\", Const, 0, \"\"},\n\t\t{\"LINUX_REBOOT_CMD_RESTART\", Const, 0, \"\"},\n\t\t{\"LINUX_REBOOT_CMD_RESTART2\", Const, 0, \"\"},\n\t\t{\"LINUX_REBOOT_CMD_SW_SUSPEND\", Const, 0, \"\"},\n\t\t{\"LINUX_REBOOT_MAGIC1\", Const, 0, \"\"},\n\t\t{\"LINUX_REBOOT_MAGIC2\", Const, 0, \"\"},\n\t\t{\"LOCK_EX\", Const, 0, \"\"},\n\t\t{\"LOCK_NB\", Const, 0, \"\"},\n\t\t{\"LOCK_SH\", Const, 0, \"\"},\n\t\t{\"LOCK_UN\", Const, 0, \"\"},\n\t\t{\"LazyDLL\", Type, 0, \"\"},\n\t\t{\"LazyDLL.Name\", Field, 0, \"\"},\n\t\t{\"LazyProc\", Type, 0, \"\"},\n\t\t{\"LazyProc.Name\", Field, 0, \"\"},\n\t\t{\"Lchown\", Func, 0, \"func(path string, uid int, gid int) (err error)\"},\n\t\t{\"Linger\", Type, 0, \"\"},\n\t\t{\"Linger.Linger\", Field, 0, \"\"},\n\t\t{\"Linger.Onoff\", Field, 0, \"\"},\n\t\t{\"Link\", Func, 0, \"func(oldpath string, newpath string) (err error)\"},\n\t\t{\"Listen\", Func, 0, \"func(s int, n int) (err error)\"},\n\t\t{\"Listxattr\", Func, 1, \"func(path string, dest []byte) (sz int, err error)\"},\n\t\t{\"LoadCancelIoEx\", Func, 1, \"\"},\n\t\t{\"LoadConnectEx\", Func, 1, \"\"},\n\t\t{\"LoadCreateSymbolicLink\", Func, 4, \"\"},\n\t\t{\"LoadDLL\", Func, 0, \"\"},\n\t\t{\"LoadGetAddrInfo\", Func, 1, \"\"},\n\t\t{\"LoadLibrary\", Func, 0, \"\"},\n\t\t{\"LoadSetFileCompletionNotificationModes\", Func, 2, \"\"},\n\t\t{\"LocalFree\", Func, 0, \"\"},\n\t\t{\"Log2phys_t\", Type, 0, \"\"},\n\t\t{\"Log2phys_t.Contigbytes\", Field, 0, \"\"},\n\t\t{\"Log2phys_t.Devoffset\", Field, 0, \"\"},\n\t\t{\"Log2phys_t.Flags\", Field, 0, \"\"},\n\t\t{\"LookupAccountName\", Func, 0, \"\"},\n\t\t{\"LookupAccountSid\", Func, 0, \"\"},\n\t\t{\"LookupSID\", Func, 0, \"\"},\n\t\t{\"LsfJump\", Func, 0, \"func(code int, k int, jt int, jf int) *SockFilter\"},\n\t\t{\"LsfSocket\", Func, 0, \"func(ifindex int, proto int) (int, error)\"},\n\t\t{\"LsfStmt\", Func, 0, \"func(code int, k int) *SockFilter\"},\n\t\t{\"Lstat\", Func, 0, \"func(path string, stat *Stat_t) (err error)\"},\n\t\t{\"MADV_AUTOSYNC\", Const, 1, \"\"},\n\t\t{\"MADV_CAN_REUSE\", Const, 0, \"\"},\n\t\t{\"MADV_CORE\", Const, 1, \"\"},\n\t\t{\"MADV_DOFORK\", Const, 0, \"\"},\n\t\t{\"MADV_DONTFORK\", Const, 0, \"\"},\n\t\t{\"MADV_DONTNEED\", Const, 0, \"\"},\n\t\t{\"MADV_FREE\", Const, 0, \"\"},\n\t\t{\"MADV_FREE_REUSABLE\", Const, 0, \"\"},\n\t\t{\"MADV_FREE_REUSE\", Const, 0, \"\"},\n\t\t{\"MADV_HUGEPAGE\", Const, 0, \"\"},\n\t\t{\"MADV_HWPOISON\", Const, 0, \"\"},\n\t\t{\"MADV_MERGEABLE\", Const, 0, \"\"},\n\t\t{\"MADV_NOCORE\", Const, 1, \"\"},\n\t\t{\"MADV_NOHUGEPAGE\", Const, 0, \"\"},\n\t\t{\"MADV_NORMAL\", Const, 0, \"\"},\n\t\t{\"MADV_NOSYNC\", Const, 1, \"\"},\n\t\t{\"MADV_PROTECT\", Const, 1, \"\"},\n\t\t{\"MADV_RANDOM\", Const, 0, \"\"},\n\t\t{\"MADV_REMOVE\", Const, 0, \"\"},\n\t\t{\"MADV_SEQUENTIAL\", Const, 0, \"\"},\n\t\t{\"MADV_SPACEAVAIL\", Const, 3, \"\"},\n\t\t{\"MADV_UNMERGEABLE\", Const, 0, \"\"},\n\t\t{\"MADV_WILLNEED\", Const, 0, \"\"},\n\t\t{\"MADV_ZERO_WIRED_PAGES\", Const, 0, \"\"},\n\t\t{\"MAP_32BIT\", Const, 0, \"\"},\n\t\t{\"MAP_ALIGNED_SUPER\", Const, 3, \"\"},\n\t\t{\"MAP_ALIGNMENT_16MB\", Const, 3, \"\"},\n\t\t{\"MAP_ALIGNMENT_1TB\", Const, 3, \"\"},\n\t\t{\"MAP_ALIGNMENT_256TB\", Const, 3, \"\"},\n\t\t{\"MAP_ALIGNMENT_4GB\", Const, 3, \"\"},\n\t\t{\"MAP_ALIGNMENT_64KB\", Const, 3, \"\"},\n\t\t{\"MAP_ALIGNMENT_64PB\", Const, 3, \"\"},\n\t\t{\"MAP_ALIGNMENT_MASK\", Const, 3, \"\"},\n\t\t{\"MAP_ALIGNMENT_SHIFT\", Const, 3, \"\"},\n\t\t{\"MAP_ANON\", Const, 0, \"\"},\n\t\t{\"MAP_ANONYMOUS\", Const, 0, \"\"},\n\t\t{\"MAP_COPY\", Const, 0, \"\"},\n\t\t{\"MAP_DENYWRITE\", Const, 0, \"\"},\n\t\t{\"MAP_EXECUTABLE\", Const, 0, \"\"},\n\t\t{\"MAP_FILE\", Const, 0, \"\"},\n\t\t{\"MAP_FIXED\", Const, 0, \"\"},\n\t\t{\"MAP_FLAGMASK\", Const, 3, \"\"},\n\t\t{\"MAP_GROWSDOWN\", Const, 0, \"\"},\n\t\t{\"MAP_HASSEMAPHORE\", Const, 0, \"\"},\n\t\t{\"MAP_HUGETLB\", Const, 0, \"\"},\n\t\t{\"MAP_INHERIT\", Const, 3, \"\"},\n\t\t{\"MAP_INHERIT_COPY\", Const, 3, \"\"},\n\t\t{\"MAP_INHERIT_DEFAULT\", Const, 3, \"\"},\n\t\t{\"MAP_INHERIT_DONATE_COPY\", Const, 3, \"\"},\n\t\t{\"MAP_INHERIT_NONE\", Const, 3, \"\"},\n\t\t{\"MAP_INHERIT_SHARE\", Const, 3, \"\"},\n\t\t{\"MAP_JIT\", Const, 0, \"\"},\n\t\t{\"MAP_LOCKED\", Const, 0, \"\"},\n\t\t{\"MAP_NOCACHE\", Const, 0, \"\"},\n\t\t{\"MAP_NOCORE\", Const, 1, \"\"},\n\t\t{\"MAP_NOEXTEND\", Const, 0, \"\"},\n\t\t{\"MAP_NONBLOCK\", Const, 0, \"\"},\n\t\t{\"MAP_NORESERVE\", Const, 0, \"\"},\n\t\t{\"MAP_NOSYNC\", Const, 1, \"\"},\n\t\t{\"MAP_POPULATE\", Const, 0, \"\"},\n\t\t{\"MAP_PREFAULT_READ\", Const, 1, \"\"},\n\t\t{\"MAP_PRIVATE\", Const, 0, \"\"},\n\t\t{\"MAP_RENAME\", Const, 0, \"\"},\n\t\t{\"MAP_RESERVED0080\", Const, 0, \"\"},\n\t\t{\"MAP_RESERVED0100\", Const, 1, \"\"},\n\t\t{\"MAP_SHARED\", Const, 0, \"\"},\n\t\t{\"MAP_STACK\", Const, 0, \"\"},\n\t\t{\"MAP_TRYFIXED\", Const, 3, \"\"},\n\t\t{\"MAP_TYPE\", Const, 0, \"\"},\n\t\t{\"MAP_WIRED\", Const, 3, \"\"},\n\t\t{\"MAXIMUM_REPARSE_DATA_BUFFER_SIZE\", Const, 4, \"\"},\n\t\t{\"MAXLEN_IFDESCR\", Const, 0, \"\"},\n\t\t{\"MAXLEN_PHYSADDR\", Const, 0, \"\"},\n\t\t{\"MAX_ADAPTER_ADDRESS_LENGTH\", Const, 0, \"\"},\n\t\t{\"MAX_ADAPTER_DESCRIPTION_LENGTH\", Const, 0, \"\"},\n\t\t{\"MAX_ADAPTER_NAME_LENGTH\", Const, 0, \"\"},\n\t\t{\"MAX_COMPUTERNAME_LENGTH\", Const, 0, \"\"},\n\t\t{\"MAX_INTERFACE_NAME_LEN\", Const, 0, \"\"},\n\t\t{\"MAX_LONG_PATH\", Const, 0, \"\"},\n\t\t{\"MAX_PATH\", Const, 0, \"\"},\n\t\t{\"MAX_PROTOCOL_CHAIN\", Const, 2, \"\"},\n\t\t{\"MCL_CURRENT\", Const, 0, \"\"},\n\t\t{\"MCL_FUTURE\", Const, 0, \"\"},\n\t\t{\"MNT_DETACH\", Const, 0, \"\"},\n\t\t{\"MNT_EXPIRE\", Const, 0, \"\"},\n\t\t{\"MNT_FORCE\", Const, 0, \"\"},\n\t\t{\"MSG_BCAST\", Const, 1, \"\"},\n\t\t{\"MSG_CMSG_CLOEXEC\", Const, 0, \"\"},\n\t\t{\"MSG_COMPAT\", Const, 0, \"\"},\n\t\t{\"MSG_CONFIRM\", Const, 0, \"\"},\n\t\t{\"MSG_CONTROLMBUF\", Const, 1, \"\"},\n\t\t{\"MSG_CTRUNC\", Const, 0, \"\"},\n\t\t{\"MSG_DONTROUTE\", Const, 0, \"\"},\n\t\t{\"MSG_DONTWAIT\", Const, 0, \"\"},\n\t\t{\"MSG_EOF\", Const, 0, \"\"},\n\t\t{\"MSG_EOR\", Const, 0, \"\"},\n\t\t{\"MSG_ERRQUEUE\", Const, 0, \"\"},\n\t\t{\"MSG_FASTOPEN\", Const, 1, \"\"},\n\t\t{\"MSG_FIN\", Const, 0, \"\"},\n\t\t{\"MSG_FLUSH\", Const, 0, \"\"},\n\t\t{\"MSG_HAVEMORE\", Const, 0, \"\"},\n\t\t{\"MSG_HOLD\", Const, 0, \"\"},\n\t\t{\"MSG_IOVUSRSPACE\", Const, 1, \"\"},\n\t\t{\"MSG_LENUSRSPACE\", Const, 1, \"\"},\n\t\t{\"MSG_MCAST\", Const, 1, \"\"},\n\t\t{\"MSG_MORE\", Const, 0, \"\"},\n\t\t{\"MSG_NAMEMBUF\", Const, 1, \"\"},\n\t\t{\"MSG_NBIO\", Const, 0, \"\"},\n\t\t{\"MSG_NEEDSA\", Const, 0, \"\"},\n\t\t{\"MSG_NOSIGNAL\", Const, 0, \"\"},\n\t\t{\"MSG_NOTIFICATION\", Const, 0, \"\"},\n\t\t{\"MSG_OOB\", Const, 0, \"\"},\n\t\t{\"MSG_PEEK\", Const, 0, \"\"},\n\t\t{\"MSG_PROXY\", Const, 0, \"\"},\n\t\t{\"MSG_RCVMORE\", Const, 0, \"\"},\n\t\t{\"MSG_RST\", Const, 0, \"\"},\n\t\t{\"MSG_SEND\", Const, 0, \"\"},\n\t\t{\"MSG_SYN\", Const, 0, \"\"},\n\t\t{\"MSG_TRUNC\", Const, 0, \"\"},\n\t\t{\"MSG_TRYHARD\", Const, 0, \"\"},\n\t\t{\"MSG_USERFLAGS\", Const, 1, \"\"},\n\t\t{\"MSG_WAITALL\", Const, 0, \"\"},\n\t\t{\"MSG_WAITFORONE\", Const, 0, \"\"},\n\t\t{\"MSG_WAITSTREAM\", Const, 0, \"\"},\n\t\t{\"MS_ACTIVE\", Const, 0, \"\"},\n\t\t{\"MS_ASYNC\", Const, 0, \"\"},\n\t\t{\"MS_BIND\", Const, 0, \"\"},\n\t\t{\"MS_DEACTIVATE\", Const, 0, \"\"},\n\t\t{\"MS_DIRSYNC\", Const, 0, \"\"},\n\t\t{\"MS_INVALIDATE\", Const, 0, \"\"},\n\t\t{\"MS_I_VERSION\", Const, 0, \"\"},\n\t\t{\"MS_KERNMOUNT\", Const, 0, \"\"},\n\t\t{\"MS_KILLPAGES\", Const, 0, \"\"},\n\t\t{\"MS_MANDLOCK\", Const, 0, \"\"},\n\t\t{\"MS_MGC_MSK\", Const, 0, \"\"},\n\t\t{\"MS_MGC_VAL\", Const, 0, \"\"},\n\t\t{\"MS_MOVE\", Const, 0, \"\"},\n\t\t{\"MS_NOATIME\", Const, 0, \"\"},\n\t\t{\"MS_NODEV\", Const, 0, \"\"},\n\t\t{\"MS_NODIRATIME\", Const, 0, \"\"},\n\t\t{\"MS_NOEXEC\", Const, 0, \"\"},\n\t\t{\"MS_NOSUID\", Const, 0, \"\"},\n\t\t{\"MS_NOUSER\", Const, 0, \"\"},\n\t\t{\"MS_POSIXACL\", Const, 0, \"\"},\n\t\t{\"MS_PRIVATE\", Const, 0, \"\"},\n\t\t{\"MS_RDONLY\", Const, 0, \"\"},\n\t\t{\"MS_REC\", Const, 0, \"\"},\n\t\t{\"MS_RELATIME\", Const, 0, \"\"},\n\t\t{\"MS_REMOUNT\", Const, 0, \"\"},\n\t\t{\"MS_RMT_MASK\", Const, 0, \"\"},\n\t\t{\"MS_SHARED\", Const, 0, \"\"},\n\t\t{\"MS_SILENT\", Const, 0, \"\"},\n\t\t{\"MS_SLAVE\", Const, 0, \"\"},\n\t\t{\"MS_STRICTATIME\", Const, 0, \"\"},\n\t\t{\"MS_SYNC\", Const, 0, \"\"},\n\t\t{\"MS_SYNCHRONOUS\", Const, 0, \"\"},\n\t\t{\"MS_UNBINDABLE\", Const, 0, \"\"},\n\t\t{\"Madvise\", Func, 0, \"func(b []byte, advice int) (err error)\"},\n\t\t{\"MapViewOfFile\", Func, 0, \"\"},\n\t\t{\"MaxTokenInfoClass\", Const, 0, \"\"},\n\t\t{\"Mclpool\", Type, 2, \"\"},\n\t\t{\"Mclpool.Alive\", Field, 2, \"\"},\n\t\t{\"Mclpool.Cwm\", Field, 2, \"\"},\n\t\t{\"Mclpool.Grown\", Field, 2, \"\"},\n\t\t{\"Mclpool.Hwm\", Field, 2, \"\"},\n\t\t{\"Mclpool.Lwm\", Field, 2, \"\"},\n\t\t{\"MibIfRow\", Type, 0, \"\"},\n\t\t{\"MibIfRow.AdminStatus\", Field, 0, \"\"},\n\t\t{\"MibIfRow.Descr\", Field, 0, \"\"},\n\t\t{\"MibIfRow.DescrLen\", Field, 0, \"\"},\n\t\t{\"MibIfRow.InDiscards\", Field, 0, \"\"},\n\t\t{\"MibIfRow.InErrors\", Field, 0, \"\"},\n\t\t{\"MibIfRow.InNUcastPkts\", Field, 0, \"\"},\n\t\t{\"MibIfRow.InOctets\", Field, 0, \"\"},\n\t\t{\"MibIfRow.InUcastPkts\", Field, 0, \"\"},\n\t\t{\"MibIfRow.InUnknownProtos\", Field, 0, \"\"},\n\t\t{\"MibIfRow.Index\", Field, 0, \"\"},\n\t\t{\"MibIfRow.LastChange\", Field, 0, \"\"},\n\t\t{\"MibIfRow.Mtu\", Field, 0, \"\"},\n\t\t{\"MibIfRow.Name\", Field, 0, \"\"},\n\t\t{\"MibIfRow.OperStatus\", Field, 0, \"\"},\n\t\t{\"MibIfRow.OutDiscards\", Field, 0, \"\"},\n\t\t{\"MibIfRow.OutErrors\", Field, 0, \"\"},\n\t\t{\"MibIfRow.OutNUcastPkts\", Field, 0, \"\"},\n\t\t{\"MibIfRow.OutOctets\", Field, 0, \"\"},\n\t\t{\"MibIfRow.OutQLen\", Field, 0, \"\"},\n\t\t{\"MibIfRow.OutUcastPkts\", Field, 0, \"\"},\n\t\t{\"MibIfRow.PhysAddr\", Field, 0, \"\"},\n\t\t{\"MibIfRow.PhysAddrLen\", Field, 0, \"\"},\n\t\t{\"MibIfRow.Speed\", Field, 0, \"\"},\n\t\t{\"MibIfRow.Type\", Field, 0, \"\"},\n\t\t{\"Mkdir\", Func, 0, \"func(path string, mode uint32) (err error)\"},\n\t\t{\"Mkdirat\", Func, 0, \"func(dirfd int, path string, mode uint32) (err error)\"},\n\t\t{\"Mkfifo\", Func, 0, \"func(path string, mode uint32) (err error)\"},\n\t\t{\"Mknod\", Func, 0, \"func(path string, mode uint32, dev int) (err error)\"},\n\t\t{\"Mknodat\", Func, 0, \"func(dirfd int, path string, mode uint32, dev int) (err error)\"},\n\t\t{\"Mlock\", Func, 0, \"func(b []byte) (err error)\"},\n\t\t{\"Mlockall\", Func, 0, \"func(flags int) (err error)\"},\n\t\t{\"Mmap\", Func, 0, \"func(fd int, offset int64, length int, prot int, flags int) (data []byte, err error)\"},\n\t\t{\"Mount\", Func, 0, \"func(source string, target string, fstype string, flags uintptr, data string) (err error)\"},\n\t\t{\"MoveFile\", Func, 0, \"\"},\n\t\t{\"Mprotect\", Func, 0, \"func(b []byte, prot int) (err error)\"},\n\t\t{\"Msghdr\", Type, 0, \"\"},\n\t\t{\"Msghdr.Control\", Field, 0, \"\"},\n\t\t{\"Msghdr.Controllen\", Field, 0, \"\"},\n\t\t{\"Msghdr.Flags\", Field, 0, \"\"},\n\t\t{\"Msghdr.Iov\", Field, 0, \"\"},\n\t\t{\"Msghdr.Iovlen\", Field, 0, \"\"},\n\t\t{\"Msghdr.Name\", Field, 0, \"\"},\n\t\t{\"Msghdr.Namelen\", Field, 0, \"\"},\n\t\t{\"Msghdr.Pad_cgo_0\", Field, 0, \"\"},\n\t\t{\"Msghdr.Pad_cgo_1\", Field, 0, \"\"},\n\t\t{\"Munlock\", Func, 0, \"func(b []byte) (err error)\"},\n\t\t{\"Munlockall\", Func, 0, \"func() (err error)\"},\n\t\t{\"Munmap\", Func, 0, \"func(b []byte) (err error)\"},\n\t\t{\"MustLoadDLL\", Func, 0, \"\"},\n\t\t{\"NAME_MAX\", Const, 0, \"\"},\n\t\t{\"NETLINK_ADD_MEMBERSHIP\", Const, 0, \"\"},\n\t\t{\"NETLINK_AUDIT\", Const, 0, \"\"},\n\t\t{\"NETLINK_BROADCAST_ERROR\", Const, 0, \"\"},\n\t\t{\"NETLINK_CONNECTOR\", Const, 0, \"\"},\n\t\t{\"NETLINK_DNRTMSG\", Const, 0, \"\"},\n\t\t{\"NETLINK_DROP_MEMBERSHIP\", Const, 0, \"\"},\n\t\t{\"NETLINK_ECRYPTFS\", Const, 0, \"\"},\n\t\t{\"NETLINK_FIB_LOOKUP\", Const, 0, \"\"},\n\t\t{\"NETLINK_FIREWALL\", Const, 0, \"\"},\n\t\t{\"NETLINK_GENERIC\", Const, 0, \"\"},\n\t\t{\"NETLINK_INET_DIAG\", Const, 0, \"\"},\n\t\t{\"NETLINK_IP6_FW\", Const, 0, \"\"},\n\t\t{\"NETLINK_ISCSI\", Const, 0, \"\"},\n\t\t{\"NETLINK_KOBJECT_UEVENT\", Const, 0, \"\"},\n\t\t{\"NETLINK_NETFILTER\", Const, 0, \"\"},\n\t\t{\"NETLINK_NFLOG\", Const, 0, \"\"},\n\t\t{\"NETLINK_NO_ENOBUFS\", Const, 0, \"\"},\n\t\t{\"NETLINK_PKTINFO\", Const, 0, \"\"},\n\t\t{\"NETLINK_RDMA\", Const, 0, \"\"},\n\t\t{\"NETLINK_ROUTE\", Const, 0, \"\"},\n\t\t{\"NETLINK_SCSITRANSPORT\", Const, 0, \"\"},\n\t\t{\"NETLINK_SELINUX\", Const, 0, \"\"},\n\t\t{\"NETLINK_UNUSED\", Const, 0, \"\"},\n\t\t{\"NETLINK_USERSOCK\", Const, 0, \"\"},\n\t\t{\"NETLINK_XFRM\", Const, 0, \"\"},\n\t\t{\"NET_RT_DUMP\", Const, 0, \"\"},\n\t\t{\"NET_RT_DUMP2\", Const, 0, \"\"},\n\t\t{\"NET_RT_FLAGS\", Const, 0, \"\"},\n\t\t{\"NET_RT_IFLIST\", Const, 0, \"\"},\n\t\t{\"NET_RT_IFLIST2\", Const, 0, \"\"},\n\t\t{\"NET_RT_IFLISTL\", Const, 1, \"\"},\n\t\t{\"NET_RT_IFMALIST\", Const, 0, \"\"},\n\t\t{\"NET_RT_MAXID\", Const, 0, \"\"},\n\t\t{\"NET_RT_OIFLIST\", Const, 1, \"\"},\n\t\t{\"NET_RT_OOIFLIST\", Const, 1, \"\"},\n\t\t{\"NET_RT_STAT\", Const, 0, \"\"},\n\t\t{\"NET_RT_STATS\", Const, 1, \"\"},\n\t\t{\"NET_RT_TABLE\", Const, 1, \"\"},\n\t\t{\"NET_RT_TRASH\", Const, 0, \"\"},\n\t\t{\"NLA_ALIGNTO\", Const, 0, \"\"},\n\t\t{\"NLA_F_NESTED\", Const, 0, \"\"},\n\t\t{\"NLA_F_NET_BYTEORDER\", Const, 0, \"\"},\n\t\t{\"NLA_HDRLEN\", Const, 0, \"\"},\n\t\t{\"NLMSG_ALIGNTO\", Const, 0, \"\"},\n\t\t{\"NLMSG_DONE\", Const, 0, \"\"},\n\t\t{\"NLMSG_ERROR\", Const, 0, \"\"},\n\t\t{\"NLMSG_HDRLEN\", Const, 0, \"\"},\n\t\t{\"NLMSG_MIN_TYPE\", Const, 0, \"\"},\n\t\t{\"NLMSG_NOOP\", Const, 0, \"\"},\n\t\t{\"NLMSG_OVERRUN\", Const, 0, \"\"},\n\t\t{\"NLM_F_ACK\", Const, 0, \"\"},\n\t\t{\"NLM_F_APPEND\", Const, 0, \"\"},\n\t\t{\"NLM_F_ATOMIC\", Const, 0, \"\"},\n\t\t{\"NLM_F_CREATE\", Const, 0, \"\"},\n\t\t{\"NLM_F_DUMP\", Const, 0, \"\"},\n\t\t{\"NLM_F_ECHO\", Const, 0, \"\"},\n\t\t{\"NLM_F_EXCL\", Const, 0, \"\"},\n\t\t{\"NLM_F_MATCH\", Const, 0, \"\"},\n\t\t{\"NLM_F_MULTI\", Const, 0, \"\"},\n\t\t{\"NLM_F_REPLACE\", Const, 0, \"\"},\n\t\t{\"NLM_F_REQUEST\", Const, 0, \"\"},\n\t\t{\"NLM_F_ROOT\", Const, 0, \"\"},\n\t\t{\"NOFLSH\", Const, 0, \"\"},\n\t\t{\"NOTE_ABSOLUTE\", Const, 0, \"\"},\n\t\t{\"NOTE_ATTRIB\", Const, 0, \"\"},\n\t\t{\"NOTE_BACKGROUND\", Const, 16, \"\"},\n\t\t{\"NOTE_CHILD\", Const, 0, \"\"},\n\t\t{\"NOTE_CRITICAL\", Const, 16, \"\"},\n\t\t{\"NOTE_DELETE\", Const, 0, \"\"},\n\t\t{\"NOTE_EOF\", Const, 1, \"\"},\n\t\t{\"NOTE_EXEC\", Const, 0, \"\"},\n\t\t{\"NOTE_EXIT\", Const, 0, \"\"},\n\t\t{\"NOTE_EXITSTATUS\", Const, 0, \"\"},\n\t\t{\"NOTE_EXIT_CSERROR\", Const, 16, \"\"},\n\t\t{\"NOTE_EXIT_DECRYPTFAIL\", Const, 16, \"\"},\n\t\t{\"NOTE_EXIT_DETAIL\", Const, 16, \"\"},\n\t\t{\"NOTE_EXIT_DETAIL_MASK\", Const, 16, \"\"},\n\t\t{\"NOTE_EXIT_MEMORY\", Const, 16, \"\"},\n\t\t{\"NOTE_EXIT_REPARENTED\", Const, 16, \"\"},\n\t\t{\"NOTE_EXTEND\", Const, 0, \"\"},\n\t\t{\"NOTE_FFAND\", Const, 0, \"\"},\n\t\t{\"NOTE_FFCOPY\", Const, 0, \"\"},\n\t\t{\"NOTE_FFCTRLMASK\", Const, 0, \"\"},\n\t\t{\"NOTE_FFLAGSMASK\", Const, 0, \"\"},\n\t\t{\"NOTE_FFNOP\", Const, 0, \"\"},\n\t\t{\"NOTE_FFOR\", Const, 0, \"\"},\n\t\t{\"NOTE_FORK\", Const, 0, \"\"},\n\t\t{\"NOTE_LEEWAY\", Const, 16, \"\"},\n\t\t{\"NOTE_LINK\", Const, 0, \"\"},\n\t\t{\"NOTE_LOWAT\", Const, 0, \"\"},\n\t\t{\"NOTE_NONE\", Const, 0, \"\"},\n\t\t{\"NOTE_NSECONDS\", Const, 0, \"\"},\n\t\t{\"NOTE_PCTRLMASK\", Const, 0, \"\"},\n\t\t{\"NOTE_PDATAMASK\", Const, 0, \"\"},\n\t\t{\"NOTE_REAP\", Const, 0, \"\"},\n\t\t{\"NOTE_RENAME\", Const, 0, \"\"},\n\t\t{\"NOTE_RESOURCEEND\", Const, 0, \"\"},\n\t\t{\"NOTE_REVOKE\", Const, 0, \"\"},\n\t\t{\"NOTE_SECONDS\", Const, 0, \"\"},\n\t\t{\"NOTE_SIGNAL\", Const, 0, \"\"},\n\t\t{\"NOTE_TRACK\", Const, 0, \"\"},\n\t\t{\"NOTE_TRACKERR\", Const, 0, \"\"},\n\t\t{\"NOTE_TRIGGER\", Const, 0, \"\"},\n\t\t{\"NOTE_TRUNCATE\", Const, 1, \"\"},\n\t\t{\"NOTE_USECONDS\", Const, 0, \"\"},\n\t\t{\"NOTE_VM_ERROR\", Const, 0, \"\"},\n\t\t{\"NOTE_VM_PRESSURE\", Const, 0, \"\"},\n\t\t{\"NOTE_VM_PRESSURE_SUDDEN_TERMINATE\", Const, 0, \"\"},\n\t\t{\"NOTE_VM_PRESSURE_TERMINATE\", Const, 0, \"\"},\n\t\t{\"NOTE_WRITE\", Const, 0, \"\"},\n\t\t{\"NameCanonical\", Const, 0, \"\"},\n\t\t{\"NameCanonicalEx\", Const, 0, \"\"},\n\t\t{\"NameDisplay\", Const, 0, \"\"},\n\t\t{\"NameDnsDomain\", Const, 0, \"\"},\n\t\t{\"NameFullyQualifiedDN\", Const, 0, \"\"},\n\t\t{\"NameSamCompatible\", Const, 0, \"\"},\n\t\t{\"NameServicePrincipal\", Const, 0, \"\"},\n\t\t{\"NameUniqueId\", Const, 0, \"\"},\n\t\t{\"NameUnknown\", Const, 0, \"\"},\n\t\t{\"NameUserPrincipal\", Const, 0, \"\"},\n\t\t{\"Nanosleep\", Func, 0, \"func(time *Timespec, leftover *Timespec) (err error)\"},\n\t\t{\"NetApiBufferFree\", Func, 0, \"\"},\n\t\t{\"NetGetJoinInformation\", Func, 2, \"\"},\n\t\t{\"NetSetupDomainName\", Const, 2, \"\"},\n\t\t{\"NetSetupUnjoined\", Const, 2, \"\"},\n\t\t{\"NetSetupUnknownStatus\", Const, 2, \"\"},\n\t\t{\"NetSetupWorkgroupName\", Const, 2, \"\"},\n\t\t{\"NetUserGetInfo\", Func, 0, \"\"},\n\t\t{\"NetlinkMessage\", Type, 0, \"\"},\n\t\t{\"NetlinkMessage.Data\", Field, 0, \"\"},\n\t\t{\"NetlinkMessage.Header\", Field, 0, \"\"},\n\t\t{\"NetlinkRIB\", Func, 0, \"func(proto int, family int) ([]byte, error)\"},\n\t\t{\"NetlinkRouteAttr\", Type, 0, \"\"},\n\t\t{\"NetlinkRouteAttr.Attr\", Field, 0, \"\"},\n\t\t{\"NetlinkRouteAttr.Value\", Field, 0, \"\"},\n\t\t{\"NetlinkRouteRequest\", Type, 0, \"\"},\n\t\t{\"NetlinkRouteRequest.Data\", Field, 0, \"\"},\n\t\t{\"NetlinkRouteRequest.Header\", Field, 0, \"\"},\n\t\t{\"NewCallback\", Func, 0, \"\"},\n\t\t{\"NewCallbackCDecl\", Func, 3, \"\"},\n\t\t{\"NewLazyDLL\", Func, 0, \"\"},\n\t\t{\"NlAttr\", Type, 0, \"\"},\n\t\t{\"NlAttr.Len\", Field, 0, \"\"},\n\t\t{\"NlAttr.Type\", Field, 0, \"\"},\n\t\t{\"NlMsgerr\", Type, 0, \"\"},\n\t\t{\"NlMsgerr.Error\", Field, 0, \"\"},\n\t\t{\"NlMsgerr.Msg\", Field, 0, \"\"},\n\t\t{\"NlMsghdr\", Type, 0, \"\"},\n\t\t{\"NlMsghdr.Flags\", Field, 0, \"\"},\n\t\t{\"NlMsghdr.Len\", Field, 0, \"\"},\n\t\t{\"NlMsghdr.Pid\", Field, 0, \"\"},\n\t\t{\"NlMsghdr.Seq\", Field, 0, \"\"},\n\t\t{\"NlMsghdr.Type\", Field, 0, \"\"},\n\t\t{\"NsecToFiletime\", Func, 0, \"\"},\n\t\t{\"NsecToTimespec\", Func, 0, \"func(nsec int64) Timespec\"},\n\t\t{\"NsecToTimeval\", Func, 0, \"func(nsec int64) Timeval\"},\n\t\t{\"Ntohs\", Func, 0, \"\"},\n\t\t{\"OCRNL\", Const, 0, \"\"},\n\t\t{\"OFDEL\", Const, 0, \"\"},\n\t\t{\"OFILL\", Const, 0, \"\"},\n\t\t{\"OFIOGETBMAP\", Const, 1, \"\"},\n\t\t{\"OID_PKIX_KP_SERVER_AUTH\", Var, 0, \"\"},\n\t\t{\"OID_SERVER_GATED_CRYPTO\", Var, 0, \"\"},\n\t\t{\"OID_SGC_NETSCAPE\", Var, 0, \"\"},\n\t\t{\"OLCUC\", Const, 0, \"\"},\n\t\t{\"ONLCR\", Const, 0, \"\"},\n\t\t{\"ONLRET\", Const, 0, \"\"},\n\t\t{\"ONOCR\", Const, 0, \"\"},\n\t\t{\"ONOEOT\", Const, 1, \"\"},\n\t\t{\"OPEN_ALWAYS\", Const, 0, \"\"},\n\t\t{\"OPEN_EXISTING\", Const, 0, \"\"},\n\t\t{\"OPOST\", Const, 0, \"\"},\n\t\t{\"O_ACCMODE\", Const, 0, \"\"},\n\t\t{\"O_ALERT\", Const, 0, \"\"},\n\t\t{\"O_ALT_IO\", Const, 1, \"\"},\n\t\t{\"O_APPEND\", Const, 0, \"\"},\n\t\t{\"O_ASYNC\", Const, 0, \"\"},\n\t\t{\"O_CLOEXEC\", Const, 0, \"\"},\n\t\t{\"O_CREAT\", Const, 0, \"\"},\n\t\t{\"O_DIRECT\", Const, 0, \"\"},\n\t\t{\"O_DIRECTORY\", Const, 0, \"\"},\n\t\t{\"O_DP_GETRAWENCRYPTED\", Const, 16, \"\"},\n\t\t{\"O_DSYNC\", Const, 0, \"\"},\n\t\t{\"O_EVTONLY\", Const, 0, \"\"},\n\t\t{\"O_EXCL\", Const, 0, \"\"},\n\t\t{\"O_EXEC\", Const, 0, \"\"},\n\t\t{\"O_EXLOCK\", Const, 0, \"\"},\n\t\t{\"O_FSYNC\", Const, 0, \"\"},\n\t\t{\"O_LARGEFILE\", Const, 0, \"\"},\n\t\t{\"O_NDELAY\", Const, 0, \"\"},\n\t\t{\"O_NOATIME\", Const, 0, \"\"},\n\t\t{\"O_NOCTTY\", Const, 0, \"\"},\n\t\t{\"O_NOFOLLOW\", Const, 0, \"\"},\n\t\t{\"O_NONBLOCK\", Const, 0, \"\"},\n\t\t{\"O_NOSIGPIPE\", Const, 1, \"\"},\n\t\t{\"O_POPUP\", Const, 0, \"\"},\n\t\t{\"O_RDONLY\", Const, 0, \"\"},\n\t\t{\"O_RDWR\", Const, 0, \"\"},\n\t\t{\"O_RSYNC\", Const, 0, \"\"},\n\t\t{\"O_SHLOCK\", Const, 0, \"\"},\n\t\t{\"O_SYMLINK\", Const, 0, \"\"},\n\t\t{\"O_SYNC\", Const, 0, \"\"},\n\t\t{\"O_TRUNC\", Const, 0, \"\"},\n\t\t{\"O_TTY_INIT\", Const, 0, \"\"},\n\t\t{\"O_WRONLY\", Const, 0, \"\"},\n\t\t{\"Open\", Func, 0, \"func(path string, mode int, perm uint32) (fd int, err error)\"},\n\t\t{\"OpenCurrentProcessToken\", Func, 0, \"\"},\n\t\t{\"OpenProcess\", Func, 0, \"\"},\n\t\t{\"OpenProcessToken\", Func, 0, \"\"},\n\t\t{\"Openat\", Func, 0, \"func(dirfd int, path string, flags int, mode uint32) (fd int, err error)\"},\n\t\t{\"Overlapped\", Type, 0, \"\"},\n\t\t{\"Overlapped.HEvent\", Field, 0, \"\"},\n\t\t{\"Overlapped.Internal\", Field, 0, \"\"},\n\t\t{\"Overlapped.InternalHigh\", Field, 0, \"\"},\n\t\t{\"Overlapped.Offset\", Field, 0, \"\"},\n\t\t{\"Overlapped.OffsetHigh\", Field, 0, \"\"},\n\t\t{\"PACKET_ADD_MEMBERSHIP\", Const, 0, \"\"},\n\t\t{\"PACKET_BROADCAST\", Const, 0, \"\"},\n\t\t{\"PACKET_DROP_MEMBERSHIP\", Const, 0, \"\"},\n\t\t{\"PACKET_FASTROUTE\", Const, 0, \"\"},\n\t\t{\"PACKET_HOST\", Const, 0, \"\"},\n\t\t{\"PACKET_LOOPBACK\", Const, 0, \"\"},\n\t\t{\"PACKET_MR_ALLMULTI\", Const, 0, \"\"},\n\t\t{\"PACKET_MR_MULTICAST\", Const, 0, \"\"},\n\t\t{\"PACKET_MR_PROMISC\", Const, 0, \"\"},\n\t\t{\"PACKET_MULTICAST\", Const, 0, \"\"},\n\t\t{\"PACKET_OTHERHOST\", Const, 0, \"\"},\n\t\t{\"PACKET_OUTGOING\", Const, 0, \"\"},\n\t\t{\"PACKET_RECV_OUTPUT\", Const, 0, \"\"},\n\t\t{\"PACKET_RX_RING\", Const, 0, \"\"},\n\t\t{\"PACKET_STATISTICS\", Const, 0, \"\"},\n\t\t{\"PAGE_EXECUTE_READ\", Const, 0, \"\"},\n\t\t{\"PAGE_EXECUTE_READWRITE\", Const, 0, \"\"},\n\t\t{\"PAGE_EXECUTE_WRITECOPY\", Const, 0, \"\"},\n\t\t{\"PAGE_READONLY\", Const, 0, \"\"},\n\t\t{\"PAGE_READWRITE\", Const, 0, \"\"},\n\t\t{\"PAGE_WRITECOPY\", Const, 0, \"\"},\n\t\t{\"PARENB\", Const, 0, \"\"},\n\t\t{\"PARMRK\", Const, 0, \"\"},\n\t\t{\"PARODD\", Const, 0, \"\"},\n\t\t{\"PENDIN\", Const, 0, \"\"},\n\t\t{\"PFL_HIDDEN\", Const, 2, \"\"},\n\t\t{\"PFL_MATCHES_PROTOCOL_ZERO\", Const, 2, \"\"},\n\t\t{\"PFL_MULTIPLE_PROTO_ENTRIES\", Const, 2, \"\"},\n\t\t{\"PFL_NETWORKDIRECT_PROVIDER\", Const, 2, \"\"},\n\t\t{\"PFL_RECOMMENDED_PROTO_ENTRY\", Const, 2, \"\"},\n\t\t{\"PF_FLUSH\", Const, 1, \"\"},\n\t\t{\"PKCS_7_ASN_ENCODING\", Const, 0, \"\"},\n\t\t{\"PMC5_PIPELINE_FLUSH\", Const, 1, \"\"},\n\t\t{\"PRIO_PGRP\", Const, 2, \"\"},\n\t\t{\"PRIO_PROCESS\", Const, 2, \"\"},\n\t\t{\"PRIO_USER\", Const, 2, \"\"},\n\t\t{\"PRI_IOFLUSH\", Const, 1, \"\"},\n\t\t{\"PROCESS_QUERY_INFORMATION\", Const, 0, \"\"},\n\t\t{\"PROCESS_TERMINATE\", Const, 2, \"\"},\n\t\t{\"PROT_EXEC\", Const, 0, \"\"},\n\t\t{\"PROT_GROWSDOWN\", Const, 0, \"\"},\n\t\t{\"PROT_GROWSUP\", Const, 0, \"\"},\n\t\t{\"PROT_NONE\", Const, 0, \"\"},\n\t\t{\"PROT_READ\", Const, 0, \"\"},\n\t\t{\"PROT_WRITE\", Const, 0, \"\"},\n\t\t{\"PROV_DH_SCHANNEL\", Const, 0, \"\"},\n\t\t{\"PROV_DSS\", Const, 0, \"\"},\n\t\t{\"PROV_DSS_DH\", Const, 0, \"\"},\n\t\t{\"PROV_EC_ECDSA_FULL\", Const, 0, \"\"},\n\t\t{\"PROV_EC_ECDSA_SIG\", Const, 0, \"\"},\n\t\t{\"PROV_EC_ECNRA_FULL\", Const, 0, \"\"},\n\t\t{\"PROV_EC_ECNRA_SIG\", Const, 0, \"\"},\n\t\t{\"PROV_FORTEZZA\", Const, 0, \"\"},\n\t\t{\"PROV_INTEL_SEC\", Const, 0, \"\"},\n\t\t{\"PROV_MS_EXCHANGE\", Const, 0, \"\"},\n\t\t{\"PROV_REPLACE_OWF\", Const, 0, \"\"},\n\t\t{\"PROV_RNG\", Const, 0, \"\"},\n\t\t{\"PROV_RSA_AES\", Const, 0, \"\"},\n\t\t{\"PROV_RSA_FULL\", Const, 0, \"\"},\n\t\t{\"PROV_RSA_SCHANNEL\", Const, 0, \"\"},\n\t\t{\"PROV_RSA_SIG\", Const, 0, \"\"},\n\t\t{\"PROV_SPYRUS_LYNKS\", Const, 0, \"\"},\n\t\t{\"PROV_SSL\", Const, 0, \"\"},\n\t\t{\"PR_CAPBSET_DROP\", Const, 0, \"\"},\n\t\t{\"PR_CAPBSET_READ\", Const, 0, \"\"},\n\t\t{\"PR_CLEAR_SECCOMP_FILTER\", Const, 0, \"\"},\n\t\t{\"PR_ENDIAN_BIG\", Const, 0, \"\"},\n\t\t{\"PR_ENDIAN_LITTLE\", Const, 0, \"\"},\n\t\t{\"PR_ENDIAN_PPC_LITTLE\", Const, 0, \"\"},\n\t\t{\"PR_FPEMU_NOPRINT\", Const, 0, \"\"},\n\t\t{\"PR_FPEMU_SIGFPE\", Const, 0, \"\"},\n\t\t{\"PR_FP_EXC_ASYNC\", Const, 0, \"\"},\n\t\t{\"PR_FP_EXC_DISABLED\", Const, 0, \"\"},\n\t\t{\"PR_FP_EXC_DIV\", Const, 0, \"\"},\n\t\t{\"PR_FP_EXC_INV\", Const, 0, \"\"},\n\t\t{\"PR_FP_EXC_NONRECOV\", Const, 0, \"\"},\n\t\t{\"PR_FP_EXC_OVF\", Const, 0, \"\"},\n\t\t{\"PR_FP_EXC_PRECISE\", Const, 0, \"\"},\n\t\t{\"PR_FP_EXC_RES\", Const, 0, \"\"},\n\t\t{\"PR_FP_EXC_SW_ENABLE\", Const, 0, \"\"},\n\t\t{\"PR_FP_EXC_UND\", Const, 0, \"\"},\n\t\t{\"PR_GET_DUMPABLE\", Const, 0, \"\"},\n\t\t{\"PR_GET_ENDIAN\", Const, 0, \"\"},\n\t\t{\"PR_GET_FPEMU\", Const, 0, \"\"},\n\t\t{\"PR_GET_FPEXC\", Const, 0, \"\"},\n\t\t{\"PR_GET_KEEPCAPS\", Const, 0, \"\"},\n\t\t{\"PR_GET_NAME\", Const, 0, \"\"},\n\t\t{\"PR_GET_PDEATHSIG\", Const, 0, \"\"},\n\t\t{\"PR_GET_SECCOMP\", Const, 0, \"\"},\n\t\t{\"PR_GET_SECCOMP_FILTER\", Const, 0, \"\"},\n\t\t{\"PR_GET_SECUREBITS\", Const, 0, \"\"},\n\t\t{\"PR_GET_TIMERSLACK\", Const, 0, \"\"},\n\t\t{\"PR_GET_TIMING\", Const, 0, \"\"},\n\t\t{\"PR_GET_TSC\", Const, 0, \"\"},\n\t\t{\"PR_GET_UNALIGN\", Const, 0, \"\"},\n\t\t{\"PR_MCE_KILL\", Const, 0, \"\"},\n\t\t{\"PR_MCE_KILL_CLEAR\", Const, 0, \"\"},\n\t\t{\"PR_MCE_KILL_DEFAULT\", Const, 0, \"\"},\n\t\t{\"PR_MCE_KILL_EARLY\", Const, 0, \"\"},\n\t\t{\"PR_MCE_KILL_GET\", Const, 0, \"\"},\n\t\t{\"PR_MCE_KILL_LATE\", Const, 0, \"\"},\n\t\t{\"PR_MCE_KILL_SET\", Const, 0, \"\"},\n\t\t{\"PR_SECCOMP_FILTER_EVENT\", Const, 0, \"\"},\n\t\t{\"PR_SECCOMP_FILTER_SYSCALL\", Const, 0, \"\"},\n\t\t{\"PR_SET_DUMPABLE\", Const, 0, \"\"},\n\t\t{\"PR_SET_ENDIAN\", Const, 0, \"\"},\n\t\t{\"PR_SET_FPEMU\", Const, 0, \"\"},\n\t\t{\"PR_SET_FPEXC\", Const, 0, \"\"},\n\t\t{\"PR_SET_KEEPCAPS\", Const, 0, \"\"},\n\t\t{\"PR_SET_NAME\", Const, 0, \"\"},\n\t\t{\"PR_SET_PDEATHSIG\", Const, 0, \"\"},\n\t\t{\"PR_SET_PTRACER\", Const, 0, \"\"},\n\t\t{\"PR_SET_SECCOMP\", Const, 0, \"\"},\n\t\t{\"PR_SET_SECCOMP_FILTER\", Const, 0, \"\"},\n\t\t{\"PR_SET_SECUREBITS\", Const, 0, \"\"},\n\t\t{\"PR_SET_TIMERSLACK\", Const, 0, \"\"},\n\t\t{\"PR_SET_TIMING\", Const, 0, \"\"},\n\t\t{\"PR_SET_TSC\", Const, 0, \"\"},\n\t\t{\"PR_SET_UNALIGN\", Const, 0, \"\"},\n\t\t{\"PR_TASK_PERF_EVENTS_DISABLE\", Const, 0, \"\"},\n\t\t{\"PR_TASK_PERF_EVENTS_ENABLE\", Const, 0, \"\"},\n\t\t{\"PR_TIMING_STATISTICAL\", Const, 0, \"\"},\n\t\t{\"PR_TIMING_TIMESTAMP\", Const, 0, \"\"},\n\t\t{\"PR_TSC_ENABLE\", Const, 0, \"\"},\n\t\t{\"PR_TSC_SIGSEGV\", Const, 0, \"\"},\n\t\t{\"PR_UNALIGN_NOPRINT\", Const, 0, \"\"},\n\t\t{\"PR_UNALIGN_SIGBUS\", Const, 0, \"\"},\n\t\t{\"PTRACE_ARCH_PRCTL\", Const, 0, \"\"},\n\t\t{\"PTRACE_ATTACH\", Const, 0, \"\"},\n\t\t{\"PTRACE_CONT\", Const, 0, \"\"},\n\t\t{\"PTRACE_DETACH\", Const, 0, \"\"},\n\t\t{\"PTRACE_EVENT_CLONE\", Const, 0, \"\"},\n\t\t{\"PTRACE_EVENT_EXEC\", Const, 0, \"\"},\n\t\t{\"PTRACE_EVENT_EXIT\", Const, 0, \"\"},\n\t\t{\"PTRACE_EVENT_FORK\", Const, 0, \"\"},\n\t\t{\"PTRACE_EVENT_VFORK\", Const, 0, \"\"},\n\t\t{\"PTRACE_EVENT_VFORK_DONE\", Const, 0, \"\"},\n\t\t{\"PTRACE_GETCRUNCHREGS\", Const, 0, \"\"},\n\t\t{\"PTRACE_GETEVENTMSG\", Const, 0, \"\"},\n\t\t{\"PTRACE_GETFPREGS\", Const, 0, \"\"},\n\t\t{\"PTRACE_GETFPXREGS\", Const, 0, \"\"},\n\t\t{\"PTRACE_GETHBPREGS\", Const, 0, \"\"},\n\t\t{\"PTRACE_GETREGS\", Const, 0, \"\"},\n\t\t{\"PTRACE_GETREGSET\", Const, 0, \"\"},\n\t\t{\"PTRACE_GETSIGINFO\", Const, 0, \"\"},\n\t\t{\"PTRACE_GETVFPREGS\", Const, 0, \"\"},\n\t\t{\"PTRACE_GETWMMXREGS\", Const, 0, \"\"},\n\t\t{\"PTRACE_GET_THREAD_AREA\", Const, 0, \"\"},\n\t\t{\"PTRACE_KILL\", Const, 0, \"\"},\n\t\t{\"PTRACE_OLDSETOPTIONS\", Const, 0, \"\"},\n\t\t{\"PTRACE_O_MASK\", Const, 0, \"\"},\n\t\t{\"PTRACE_O_TRACECLONE\", Const, 0, \"\"},\n\t\t{\"PTRACE_O_TRACEEXEC\", Const, 0, \"\"},\n\t\t{\"PTRACE_O_TRACEEXIT\", Const, 0, \"\"},\n\t\t{\"PTRACE_O_TRACEFORK\", Const, 0, \"\"},\n\t\t{\"PTRACE_O_TRACESYSGOOD\", Const, 0, \"\"},\n\t\t{\"PTRACE_O_TRACEVFORK\", Const, 0, \"\"},\n\t\t{\"PTRACE_O_TRACEVFORKDONE\", Const, 0, \"\"},\n\t\t{\"PTRACE_PEEKDATA\", Const, 0, \"\"},\n\t\t{\"PTRACE_PEEKTEXT\", Const, 0, \"\"},\n\t\t{\"PTRACE_PEEKUSR\", Const, 0, \"\"},\n\t\t{\"PTRACE_POKEDATA\", Const, 0, \"\"},\n\t\t{\"PTRACE_POKETEXT\", Const, 0, \"\"},\n\t\t{\"PTRACE_POKEUSR\", Const, 0, \"\"},\n\t\t{\"PTRACE_SETCRUNCHREGS\", Const, 0, \"\"},\n\t\t{\"PTRACE_SETFPREGS\", Const, 0, \"\"},\n\t\t{\"PTRACE_SETFPXREGS\", Const, 0, \"\"},\n\t\t{\"PTRACE_SETHBPREGS\", Const, 0, \"\"},\n\t\t{\"PTRACE_SETOPTIONS\", Const, 0, \"\"},\n\t\t{\"PTRACE_SETREGS\", Const, 0, \"\"},\n\t\t{\"PTRACE_SETREGSET\", Const, 0, \"\"},\n\t\t{\"PTRACE_SETSIGINFO\", Const, 0, \"\"},\n\t\t{\"PTRACE_SETVFPREGS\", Const, 0, \"\"},\n\t\t{\"PTRACE_SETWMMXREGS\", Const, 0, \"\"},\n\t\t{\"PTRACE_SET_SYSCALL\", Const, 0, \"\"},\n\t\t{\"PTRACE_SET_THREAD_AREA\", Const, 0, \"\"},\n\t\t{\"PTRACE_SINGLEBLOCK\", Const, 0, \"\"},\n\t\t{\"PTRACE_SINGLESTEP\", Const, 0, \"\"},\n\t\t{\"PTRACE_SYSCALL\", Const, 0, \"\"},\n\t\t{\"PTRACE_SYSEMU\", Const, 0, \"\"},\n\t\t{\"PTRACE_SYSEMU_SINGLESTEP\", Const, 0, \"\"},\n\t\t{\"PTRACE_TRACEME\", Const, 0, \"\"},\n\t\t{\"PT_ATTACH\", Const, 0, \"\"},\n\t\t{\"PT_ATTACHEXC\", Const, 0, \"\"},\n\t\t{\"PT_CONTINUE\", Const, 0, \"\"},\n\t\t{\"PT_DATA_ADDR\", Const, 0, \"\"},\n\t\t{\"PT_DENY_ATTACH\", Const, 0, \"\"},\n\t\t{\"PT_DETACH\", Const, 0, \"\"},\n\t\t{\"PT_FIRSTMACH\", Const, 0, \"\"},\n\t\t{\"PT_FORCEQUOTA\", Const, 0, \"\"},\n\t\t{\"PT_KILL\", Const, 0, \"\"},\n\t\t{\"PT_MASK\", Const, 1, \"\"},\n\t\t{\"PT_READ_D\", Const, 0, \"\"},\n\t\t{\"PT_READ_I\", Const, 0, \"\"},\n\t\t{\"PT_READ_U\", Const, 0, \"\"},\n\t\t{\"PT_SIGEXC\", Const, 0, \"\"},\n\t\t{\"PT_STEP\", Const, 0, \"\"},\n\t\t{\"PT_TEXT_ADDR\", Const, 0, \"\"},\n\t\t{\"PT_TEXT_END_ADDR\", Const, 0, \"\"},\n\t\t{\"PT_THUPDATE\", Const, 0, \"\"},\n\t\t{\"PT_TRACE_ME\", Const, 0, \"\"},\n\t\t{\"PT_WRITE_D\", Const, 0, \"\"},\n\t\t{\"PT_WRITE_I\", Const, 0, \"\"},\n\t\t{\"PT_WRITE_U\", Const, 0, \"\"},\n\t\t{\"ParseDirent\", Func, 0, \"func(buf []byte, max int, names []string) (consumed int, count int, newnames []string)\"},\n\t\t{\"ParseNetlinkMessage\", Func, 0, \"func(b []byte) ([]NetlinkMessage, error)\"},\n\t\t{\"ParseNetlinkRouteAttr\", Func, 0, \"func(m *NetlinkMessage) ([]NetlinkRouteAttr, error)\"},\n\t\t{\"ParseRoutingMessage\", Func, 0, \"\"},\n\t\t{\"ParseRoutingSockaddr\", Func, 0, \"\"},\n\t\t{\"ParseSocketControlMessage\", Func, 0, \"func(b []byte) ([]SocketControlMessage, error)\"},\n\t\t{\"ParseUnixCredentials\", Func, 0, \"func(m *SocketControlMessage) (*Ucred, error)\"},\n\t\t{\"ParseUnixRights\", Func, 0, \"func(m *SocketControlMessage) ([]int, error)\"},\n\t\t{\"PathMax\", Const, 0, \"\"},\n\t\t{\"Pathconf\", Func, 0, \"\"},\n\t\t{\"Pause\", Func, 0, \"func() (err error)\"},\n\t\t{\"Pipe\", Func, 0, \"func(p []int) error\"},\n\t\t{\"Pipe2\", Func, 1, \"func(p []int, flags int) error\"},\n\t\t{\"PivotRoot\", Func, 0, \"func(newroot string, putold string) (err error)\"},\n\t\t{\"Pointer\", Type, 11, \"\"},\n\t\t{\"PostQueuedCompletionStatus\", Func, 0, \"\"},\n\t\t{\"Pread\", Func, 0, \"func(fd int, p []byte, offset int64) (n int, err error)\"},\n\t\t{\"Proc\", Type, 0, \"\"},\n\t\t{\"Proc.Dll\", Field, 0, \"\"},\n\t\t{\"Proc.Name\", Field, 0, \"\"},\n\t\t{\"ProcAttr\", Type, 0, \"\"},\n\t\t{\"ProcAttr.Dir\", Field, 0, \"\"},\n\t\t{\"ProcAttr.Env\", Field, 0, \"\"},\n\t\t{\"ProcAttr.Files\", Field, 0, \"\"},\n\t\t{\"ProcAttr.Sys\", Field, 0, \"\"},\n\t\t{\"Process32First\", Func, 4, \"\"},\n\t\t{\"Process32Next\", Func, 4, \"\"},\n\t\t{\"ProcessEntry32\", Type, 4, \"\"},\n\t\t{\"ProcessEntry32.DefaultHeapID\", Field, 4, \"\"},\n\t\t{\"ProcessEntry32.ExeFile\", Field, 4, \"\"},\n\t\t{\"ProcessEntry32.Flags\", Field, 4, \"\"},\n\t\t{\"ProcessEntry32.ModuleID\", Field, 4, \"\"},\n\t\t{\"ProcessEntry32.ParentProcessID\", Field, 4, \"\"},\n\t\t{\"ProcessEntry32.PriClassBase\", Field, 4, \"\"},\n\t\t{\"ProcessEntry32.ProcessID\", Field, 4, \"\"},\n\t\t{\"ProcessEntry32.Size\", Field, 4, \"\"},\n\t\t{\"ProcessEntry32.Threads\", Field, 4, \"\"},\n\t\t{\"ProcessEntry32.Usage\", Field, 4, \"\"},\n\t\t{\"ProcessInformation\", Type, 0, \"\"},\n\t\t{\"ProcessInformation.Process\", Field, 0, \"\"},\n\t\t{\"ProcessInformation.ProcessId\", Field, 0, \"\"},\n\t\t{\"ProcessInformation.Thread\", Field, 0, \"\"},\n\t\t{\"ProcessInformation.ThreadId\", Field, 0, \"\"},\n\t\t{\"Protoent\", Type, 0, \"\"},\n\t\t{\"Protoent.Aliases\", Field, 0, \"\"},\n\t\t{\"Protoent.Name\", Field, 0, \"\"},\n\t\t{\"Protoent.Proto\", Field, 0, \"\"},\n\t\t{\"PtraceAttach\", Func, 0, \"func(pid int) (err error)\"},\n\t\t{\"PtraceCont\", Func, 0, \"func(pid int, signal int) (err error)\"},\n\t\t{\"PtraceDetach\", Func, 0, \"func(pid int) (err error)\"},\n\t\t{\"PtraceGetEventMsg\", Func, 0, \"func(pid int) (msg uint, err error)\"},\n\t\t{\"PtraceGetRegs\", Func, 0, \"func(pid int, regsout *PtraceRegs) (err error)\"},\n\t\t{\"PtracePeekData\", Func, 0, \"func(pid int, addr uintptr, out []byte) (count int, err error)\"},\n\t\t{\"PtracePeekText\", Func, 0, \"func(pid int, addr uintptr, out []byte) (count int, err error)\"},\n\t\t{\"PtracePokeData\", Func, 0, \"func(pid int, addr uintptr, data []byte) (count int, err error)\"},\n\t\t{\"PtracePokeText\", Func, 0, \"func(pid int, addr uintptr, data []byte) (count int, err error)\"},\n\t\t{\"PtraceRegs\", Type, 0, \"\"},\n\t\t{\"PtraceRegs.Cs\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Ds\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Eax\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Ebp\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Ebx\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Ecx\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Edi\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Edx\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Eflags\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Eip\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Es\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Esi\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Esp\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Fs\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Fs_base\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Gs\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Gs_base\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Orig_eax\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Orig_rax\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.R10\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.R11\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.R12\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.R13\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.R14\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.R15\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.R8\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.R9\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Rax\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Rbp\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Rbx\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Rcx\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Rdi\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Rdx\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Rip\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Rsi\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Rsp\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Ss\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Uregs\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Xcs\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Xds\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Xes\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Xfs\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Xgs\", Field, 0, \"\"},\n\t\t{\"PtraceRegs.Xss\", Field, 0, \"\"},\n\t\t{\"PtraceSetOptions\", Func, 0, \"func(pid int, options int) (err error)\"},\n\t\t{\"PtraceSetRegs\", Func, 0, \"func(pid int, regs *PtraceRegs) (err error)\"},\n\t\t{\"PtraceSingleStep\", Func, 0, \"func(pid int) (err error)\"},\n\t\t{\"PtraceSyscall\", Func, 1, \"func(pid int, signal int) (err error)\"},\n\t\t{\"Pwrite\", Func, 0, \"func(fd int, p []byte, offset int64) (n int, err error)\"},\n\t\t{\"REG_BINARY\", Const, 0, \"\"},\n\t\t{\"REG_DWORD\", Const, 0, \"\"},\n\t\t{\"REG_DWORD_BIG_ENDIAN\", Const, 0, \"\"},\n\t\t{\"REG_DWORD_LITTLE_ENDIAN\", Const, 0, \"\"},\n\t\t{\"REG_EXPAND_SZ\", Const, 0, \"\"},\n\t\t{\"REG_FULL_RESOURCE_DESCRIPTOR\", Const, 0, \"\"},\n\t\t{\"REG_LINK\", Const, 0, \"\"},\n\t\t{\"REG_MULTI_SZ\", Const, 0, \"\"},\n\t\t{\"REG_NONE\", Const, 0, \"\"},\n\t\t{\"REG_QWORD\", Const, 0, \"\"},\n\t\t{\"REG_QWORD_LITTLE_ENDIAN\", Const, 0, \"\"},\n\t\t{\"REG_RESOURCE_LIST\", Const, 0, \"\"},\n\t\t{\"REG_RESOURCE_REQUIREMENTS_LIST\", Const, 0, \"\"},\n\t\t{\"REG_SZ\", Const, 0, \"\"},\n\t\t{\"RLIMIT_AS\", Const, 0, \"\"},\n\t\t{\"RLIMIT_CORE\", Const, 0, \"\"},\n\t\t{\"RLIMIT_CPU\", Const, 0, \"\"},\n\t\t{\"RLIMIT_CPU_USAGE_MONITOR\", Const, 16, \"\"},\n\t\t{\"RLIMIT_DATA\", Const, 0, \"\"},\n\t\t{\"RLIMIT_FSIZE\", Const, 0, \"\"},\n\t\t{\"RLIMIT_NOFILE\", Const, 0, \"\"},\n\t\t{\"RLIMIT_STACK\", Const, 0, \"\"},\n\t\t{\"RLIM_INFINITY\", Const, 0, \"\"},\n\t\t{\"RTAX_ADVMSS\", Const, 0, \"\"},\n\t\t{\"RTAX_AUTHOR\", Const, 0, \"\"},\n\t\t{\"RTAX_BRD\", Const, 0, \"\"},\n\t\t{\"RTAX_CWND\", Const, 0, \"\"},\n\t\t{\"RTAX_DST\", Const, 0, \"\"},\n\t\t{\"RTAX_FEATURES\", Const, 0, \"\"},\n\t\t{\"RTAX_FEATURE_ALLFRAG\", Const, 0, \"\"},\n\t\t{\"RTAX_FEATURE_ECN\", Const, 0, \"\"},\n\t\t{\"RTAX_FEATURE_SACK\", Const, 0, \"\"},\n\t\t{\"RTAX_FEATURE_TIMESTAMP\", Const, 0, \"\"},\n\t\t{\"RTAX_GATEWAY\", Const, 0, \"\"},\n\t\t{\"RTAX_GENMASK\", Const, 0, \"\"},\n\t\t{\"RTAX_HOPLIMIT\", Const, 0, \"\"},\n\t\t{\"RTAX_IFA\", Const, 0, \"\"},\n\t\t{\"RTAX_IFP\", Const, 0, \"\"},\n\t\t{\"RTAX_INITCWND\", Const, 0, \"\"},\n\t\t{\"RTAX_INITRWND\", Const, 0, \"\"},\n\t\t{\"RTAX_LABEL\", Const, 1, \"\"},\n\t\t{\"RTAX_LOCK\", Const, 0, \"\"},\n\t\t{\"RTAX_MAX\", Const, 0, \"\"},\n\t\t{\"RTAX_MTU\", Const, 0, \"\"},\n\t\t{\"RTAX_NETMASK\", Const, 0, \"\"},\n\t\t{\"RTAX_REORDERING\", Const, 0, \"\"},\n\t\t{\"RTAX_RTO_MIN\", Const, 0, \"\"},\n\t\t{\"RTAX_RTT\", Const, 0, \"\"},\n\t\t{\"RTAX_RTTVAR\", Const, 0, \"\"},\n\t\t{\"RTAX_SRC\", Const, 1, \"\"},\n\t\t{\"RTAX_SRCMASK\", Const, 1, \"\"},\n\t\t{\"RTAX_SSTHRESH\", Const, 0, \"\"},\n\t\t{\"RTAX_TAG\", Const, 1, \"\"},\n\t\t{\"RTAX_UNSPEC\", Const, 0, \"\"},\n\t\t{\"RTAX_WINDOW\", Const, 0, \"\"},\n\t\t{\"RTA_ALIGNTO\", Const, 0, \"\"},\n\t\t{\"RTA_AUTHOR\", Const, 0, \"\"},\n\t\t{\"RTA_BRD\", Const, 0, \"\"},\n\t\t{\"RTA_CACHEINFO\", Const, 0, \"\"},\n\t\t{\"RTA_DST\", Const, 0, \"\"},\n\t\t{\"RTA_FLOW\", Const, 0, \"\"},\n\t\t{\"RTA_GATEWAY\", Const, 0, \"\"},\n\t\t{\"RTA_GENMASK\", Const, 0, \"\"},\n\t\t{\"RTA_IFA\", Const, 0, \"\"},\n\t\t{\"RTA_IFP\", Const, 0, \"\"},\n\t\t{\"RTA_IIF\", Const, 0, \"\"},\n\t\t{\"RTA_LABEL\", Const, 1, \"\"},\n\t\t{\"RTA_MAX\", Const, 0, \"\"},\n\t\t{\"RTA_METRICS\", Const, 0, \"\"},\n\t\t{\"RTA_MULTIPATH\", Const, 0, \"\"},\n\t\t{\"RTA_NETMASK\", Const, 0, \"\"},\n\t\t{\"RTA_OIF\", Const, 0, \"\"},\n\t\t{\"RTA_PREFSRC\", Const, 0, \"\"},\n\t\t{\"RTA_PRIORITY\", Const, 0, \"\"},\n\t\t{\"RTA_SRC\", Const, 0, \"\"},\n\t\t{\"RTA_SRCMASK\", Const, 1, \"\"},\n\t\t{\"RTA_TABLE\", Const, 0, \"\"},\n\t\t{\"RTA_TAG\", Const, 1, \"\"},\n\t\t{\"RTA_UNSPEC\", Const, 0, \"\"},\n\t\t{\"RTCF_DIRECTSRC\", Const, 0, \"\"},\n\t\t{\"RTCF_DOREDIRECT\", Const, 0, \"\"},\n\t\t{\"RTCF_LOG\", Const, 0, \"\"},\n\t\t{\"RTCF_MASQ\", Const, 0, \"\"},\n\t\t{\"RTCF_NAT\", Const, 0, \"\"},\n\t\t{\"RTCF_VALVE\", Const, 0, \"\"},\n\t\t{\"RTF_ADDRCLASSMASK\", Const, 0, \"\"},\n\t\t{\"RTF_ADDRCONF\", Const, 0, \"\"},\n\t\t{\"RTF_ALLONLINK\", Const, 0, \"\"},\n\t\t{\"RTF_ANNOUNCE\", Const, 1, \"\"},\n\t\t{\"RTF_BLACKHOLE\", Const, 0, \"\"},\n\t\t{\"RTF_BROADCAST\", Const, 0, \"\"},\n\t\t{\"RTF_CACHE\", Const, 0, \"\"},\n\t\t{\"RTF_CLONED\", Const, 1, \"\"},\n\t\t{\"RTF_CLONING\", Const, 0, \"\"},\n\t\t{\"RTF_CONDEMNED\", Const, 0, \"\"},\n\t\t{\"RTF_DEFAULT\", Const, 0, \"\"},\n\t\t{\"RTF_DELCLONE\", Const, 0, \"\"},\n\t\t{\"RTF_DONE\", Const, 0, \"\"},\n\t\t{\"RTF_DYNAMIC\", Const, 0, \"\"},\n\t\t{\"RTF_FLOW\", Const, 0, \"\"},\n\t\t{\"RTF_FMASK\", Const, 0, \"\"},\n\t\t{\"RTF_GATEWAY\", Const, 0, \"\"},\n\t\t{\"RTF_GWFLAG_COMPAT\", Const, 3, \"\"},\n\t\t{\"RTF_HOST\", Const, 0, \"\"},\n\t\t{\"RTF_IFREF\", Const, 0, \"\"},\n\t\t{\"RTF_IFSCOPE\", Const, 0, \"\"},\n\t\t{\"RTF_INTERFACE\", Const, 0, \"\"},\n\t\t{\"RTF_IRTT\", Const, 0, \"\"},\n\t\t{\"RTF_LINKRT\", Const, 0, \"\"},\n\t\t{\"RTF_LLDATA\", Const, 0, \"\"},\n\t\t{\"RTF_LLINFO\", Const, 0, \"\"},\n\t\t{\"RTF_LOCAL\", Const, 0, \"\"},\n\t\t{\"RTF_MASK\", Const, 1, \"\"},\n\t\t{\"RTF_MODIFIED\", Const, 0, \"\"},\n\t\t{\"RTF_MPATH\", Const, 1, \"\"},\n\t\t{\"RTF_MPLS\", Const, 1, \"\"},\n\t\t{\"RTF_MSS\", Const, 0, \"\"},\n\t\t{\"RTF_MTU\", Const, 0, \"\"},\n\t\t{\"RTF_MULTICAST\", Const, 0, \"\"},\n\t\t{\"RTF_NAT\", Const, 0, \"\"},\n\t\t{\"RTF_NOFORWARD\", Const, 0, \"\"},\n\t\t{\"RTF_NONEXTHOP\", Const, 0, \"\"},\n\t\t{\"RTF_NOPMTUDISC\", Const, 0, \"\"},\n\t\t{\"RTF_PERMANENT_ARP\", Const, 1, \"\"},\n\t\t{\"RTF_PINNED\", Const, 0, \"\"},\n\t\t{\"RTF_POLICY\", Const, 0, \"\"},\n\t\t{\"RTF_PRCLONING\", Const, 0, \"\"},\n\t\t{\"RTF_PROTO1\", Const, 0, \"\"},\n\t\t{\"RTF_PROTO2\", Const, 0, \"\"},\n\t\t{\"RTF_PROTO3\", Const, 0, \"\"},\n\t\t{\"RTF_PROXY\", Const, 16, \"\"},\n\t\t{\"RTF_REINSTATE\", Const, 0, \"\"},\n\t\t{\"RTF_REJECT\", Const, 0, \"\"},\n\t\t{\"RTF_RNH_LOCKED\", Const, 0, \"\"},\n\t\t{\"RTF_ROUTER\", Const, 16, \"\"},\n\t\t{\"RTF_SOURCE\", Const, 1, \"\"},\n\t\t{\"RTF_SRC\", Const, 1, \"\"},\n\t\t{\"RTF_STATIC\", Const, 0, \"\"},\n\t\t{\"RTF_STICKY\", Const, 0, \"\"},\n\t\t{\"RTF_THROW\", Const, 0, \"\"},\n\t\t{\"RTF_TUNNEL\", Const, 1, \"\"},\n\t\t{\"RTF_UP\", Const, 0, \"\"},\n\t\t{\"RTF_USETRAILERS\", Const, 1, \"\"},\n\t\t{\"RTF_WASCLONED\", Const, 0, \"\"},\n\t\t{\"RTF_WINDOW\", Const, 0, \"\"},\n\t\t{\"RTF_XRESOLVE\", Const, 0, \"\"},\n\t\t{\"RTM_ADD\", Const, 0, \"\"},\n\t\t{\"RTM_BASE\", Const, 0, \"\"},\n\t\t{\"RTM_CHANGE\", Const, 0, \"\"},\n\t\t{\"RTM_CHGADDR\", Const, 1, \"\"},\n\t\t{\"RTM_DELACTION\", Const, 0, \"\"},\n\t\t{\"RTM_DELADDR\", Const, 0, \"\"},\n\t\t{\"RTM_DELADDRLABEL\", Const, 0, \"\"},\n\t\t{\"RTM_DELETE\", Const, 0, \"\"},\n\t\t{\"RTM_DELLINK\", Const, 0, \"\"},\n\t\t{\"RTM_DELMADDR\", Const, 0, \"\"},\n\t\t{\"RTM_DELNEIGH\", Const, 0, \"\"},\n\t\t{\"RTM_DELQDISC\", Const, 0, \"\"},\n\t\t{\"RTM_DELROUTE\", Const, 0, \"\"},\n\t\t{\"RTM_DELRULE\", Const, 0, \"\"},\n\t\t{\"RTM_DELTCLASS\", Const, 0, \"\"},\n\t\t{\"RTM_DELTFILTER\", Const, 0, \"\"},\n\t\t{\"RTM_DESYNC\", Const, 1, \"\"},\n\t\t{\"RTM_F_CLONED\", Const, 0, \"\"},\n\t\t{\"RTM_F_EQUALIZE\", Const, 0, \"\"},\n\t\t{\"RTM_F_NOTIFY\", Const, 0, \"\"},\n\t\t{\"RTM_F_PREFIX\", Const, 0, \"\"},\n\t\t{\"RTM_GET\", Const, 0, \"\"},\n\t\t{\"RTM_GET2\", Const, 0, \"\"},\n\t\t{\"RTM_GETACTION\", Const, 0, \"\"},\n\t\t{\"RTM_GETADDR\", Const, 0, \"\"},\n\t\t{\"RTM_GETADDRLABEL\", Const, 0, \"\"},\n\t\t{\"RTM_GETANYCAST\", Const, 0, \"\"},\n\t\t{\"RTM_GETDCB\", Const, 0, \"\"},\n\t\t{\"RTM_GETLINK\", Const, 0, \"\"},\n\t\t{\"RTM_GETMULTICAST\", Const, 0, \"\"},\n\t\t{\"RTM_GETNEIGH\", Const, 0, \"\"},\n\t\t{\"RTM_GETNEIGHTBL\", Const, 0, \"\"},\n\t\t{\"RTM_GETQDISC\", Const, 0, \"\"},\n\t\t{\"RTM_GETROUTE\", Const, 0, \"\"},\n\t\t{\"RTM_GETRULE\", Const, 0, \"\"},\n\t\t{\"RTM_GETTCLASS\", Const, 0, \"\"},\n\t\t{\"RTM_GETTFILTER\", Const, 0, \"\"},\n\t\t{\"RTM_IEEE80211\", Const, 0, \"\"},\n\t\t{\"RTM_IFANNOUNCE\", Const, 0, \"\"},\n\t\t{\"RTM_IFINFO\", Const, 0, \"\"},\n\t\t{\"RTM_IFINFO2\", Const, 0, \"\"},\n\t\t{\"RTM_LLINFO_UPD\", Const, 1, \"\"},\n\t\t{\"RTM_LOCK\", Const, 0, \"\"},\n\t\t{\"RTM_LOSING\", Const, 0, \"\"},\n\t\t{\"RTM_MAX\", Const, 0, \"\"},\n\t\t{\"RTM_MAXSIZE\", Const, 1, \"\"},\n\t\t{\"RTM_MISS\", Const, 0, \"\"},\n\t\t{\"RTM_NEWACTION\", Const, 0, \"\"},\n\t\t{\"RTM_NEWADDR\", Const, 0, \"\"},\n\t\t{\"RTM_NEWADDRLABEL\", Const, 0, \"\"},\n\t\t{\"RTM_NEWLINK\", Const, 0, \"\"},\n\t\t{\"RTM_NEWMADDR\", Const, 0, \"\"},\n\t\t{\"RTM_NEWMADDR2\", Const, 0, \"\"},\n\t\t{\"RTM_NEWNDUSEROPT\", Const, 0, \"\"},\n\t\t{\"RTM_NEWNEIGH\", Const, 0, \"\"},\n\t\t{\"RTM_NEWNEIGHTBL\", Const, 0, \"\"},\n\t\t{\"RTM_NEWPREFIX\", Const, 0, \"\"},\n\t\t{\"RTM_NEWQDISC\", Const, 0, \"\"},\n\t\t{\"RTM_NEWROUTE\", Const, 0, \"\"},\n\t\t{\"RTM_NEWRULE\", Const, 0, \"\"},\n\t\t{\"RTM_NEWTCLASS\", Const, 0, \"\"},\n\t\t{\"RTM_NEWTFILTER\", Const, 0, \"\"},\n\t\t{\"RTM_NR_FAMILIES\", Const, 0, \"\"},\n\t\t{\"RTM_NR_MSGTYPES\", Const, 0, \"\"},\n\t\t{\"RTM_OIFINFO\", Const, 1, \"\"},\n\t\t{\"RTM_OLDADD\", Const, 0, \"\"},\n\t\t{\"RTM_OLDDEL\", Const, 0, \"\"},\n\t\t{\"RTM_OOIFINFO\", Const, 1, \"\"},\n\t\t{\"RTM_REDIRECT\", Const, 0, \"\"},\n\t\t{\"RTM_RESOLVE\", Const, 0, \"\"},\n\t\t{\"RTM_RTTUNIT\", Const, 0, \"\"},\n\t\t{\"RTM_SETDCB\", Const, 0, \"\"},\n\t\t{\"RTM_SETGATE\", Const, 1, \"\"},\n\t\t{\"RTM_SETLINK\", Const, 0, \"\"},\n\t\t{\"RTM_SETNEIGHTBL\", Const, 0, \"\"},\n\t\t{\"RTM_VERSION\", Const, 0, \"\"},\n\t\t{\"RTNH_ALIGNTO\", Const, 0, \"\"},\n\t\t{\"RTNH_F_DEAD\", Const, 0, \"\"},\n\t\t{\"RTNH_F_ONLINK\", Const, 0, \"\"},\n\t\t{\"RTNH_F_PERVASIVE\", Const, 0, \"\"},\n\t\t{\"RTNLGRP_IPV4_IFADDR\", Const, 1, \"\"},\n\t\t{\"RTNLGRP_IPV4_MROUTE\", Const, 1, \"\"},\n\t\t{\"RTNLGRP_IPV4_ROUTE\", Const, 1, \"\"},\n\t\t{\"RTNLGRP_IPV4_RULE\", Const, 1, \"\"},\n\t\t{\"RTNLGRP_IPV6_IFADDR\", Const, 1, \"\"},\n\t\t{\"RTNLGRP_IPV6_IFINFO\", Const, 1, \"\"},\n\t\t{\"RTNLGRP_IPV6_MROUTE\", Const, 1, \"\"},\n\t\t{\"RTNLGRP_IPV6_PREFIX\", Const, 1, \"\"},\n\t\t{\"RTNLGRP_IPV6_ROUTE\", Const, 1, \"\"},\n\t\t{\"RTNLGRP_IPV6_RULE\", Const, 1, \"\"},\n\t\t{\"RTNLGRP_LINK\", Const, 1, \"\"},\n\t\t{\"RTNLGRP_ND_USEROPT\", Const, 1, \"\"},\n\t\t{\"RTNLGRP_NEIGH\", Const, 1, \"\"},\n\t\t{\"RTNLGRP_NONE\", Const, 1, \"\"},\n\t\t{\"RTNLGRP_NOTIFY\", Const, 1, \"\"},\n\t\t{\"RTNLGRP_TC\", Const, 1, \"\"},\n\t\t{\"RTN_ANYCAST\", Const, 0, \"\"},\n\t\t{\"RTN_BLACKHOLE\", Const, 0, \"\"},\n\t\t{\"RTN_BROADCAST\", Const, 0, \"\"},\n\t\t{\"RTN_LOCAL\", Const, 0, \"\"},\n\t\t{\"RTN_MAX\", Const, 0, \"\"},\n\t\t{\"RTN_MULTICAST\", Const, 0, \"\"},\n\t\t{\"RTN_NAT\", Const, 0, \"\"},\n\t\t{\"RTN_PROHIBIT\", Const, 0, \"\"},\n\t\t{\"RTN_THROW\", Const, 0, \"\"},\n\t\t{\"RTN_UNICAST\", Const, 0, \"\"},\n\t\t{\"RTN_UNREACHABLE\", Const, 0, \"\"},\n\t\t{\"RTN_UNSPEC\", Const, 0, \"\"},\n\t\t{\"RTN_XRESOLVE\", Const, 0, \"\"},\n\t\t{\"RTPROT_BIRD\", Const, 0, \"\"},\n\t\t{\"RTPROT_BOOT\", Const, 0, \"\"},\n\t\t{\"RTPROT_DHCP\", Const, 0, \"\"},\n\t\t{\"RTPROT_DNROUTED\", Const, 0, \"\"},\n\t\t{\"RTPROT_GATED\", Const, 0, \"\"},\n\t\t{\"RTPROT_KERNEL\", Const, 0, \"\"},\n\t\t{\"RTPROT_MRT\", Const, 0, \"\"},\n\t\t{\"RTPROT_NTK\", Const, 0, \"\"},\n\t\t{\"RTPROT_RA\", Const, 0, \"\"},\n\t\t{\"RTPROT_REDIRECT\", Const, 0, \"\"},\n\t\t{\"RTPROT_STATIC\", Const, 0, \"\"},\n\t\t{\"RTPROT_UNSPEC\", Const, 0, \"\"},\n\t\t{\"RTPROT_XORP\", Const, 0, \"\"},\n\t\t{\"RTPROT_ZEBRA\", Const, 0, \"\"},\n\t\t{\"RTV_EXPIRE\", Const, 0, \"\"},\n\t\t{\"RTV_HOPCOUNT\", Const, 0, \"\"},\n\t\t{\"RTV_MTU\", Const, 0, \"\"},\n\t\t{\"RTV_RPIPE\", Const, 0, \"\"},\n\t\t{\"RTV_RTT\", Const, 0, \"\"},\n\t\t{\"RTV_RTTVAR\", Const, 0, \"\"},\n\t\t{\"RTV_SPIPE\", Const, 0, \"\"},\n\t\t{\"RTV_SSTHRESH\", Const, 0, \"\"},\n\t\t{\"RTV_WEIGHT\", Const, 0, \"\"},\n\t\t{\"RT_CACHING_CONTEXT\", Const, 1, \"\"},\n\t\t{\"RT_CLASS_DEFAULT\", Const, 0, \"\"},\n\t\t{\"RT_CLASS_LOCAL\", Const, 0, \"\"},\n\t\t{\"RT_CLASS_MAIN\", Const, 0, \"\"},\n\t\t{\"RT_CLASS_MAX\", Const, 0, \"\"},\n\t\t{\"RT_CLASS_UNSPEC\", Const, 0, \"\"},\n\t\t{\"RT_DEFAULT_FIB\", Const, 1, \"\"},\n\t\t{\"RT_NORTREF\", Const, 1, \"\"},\n\t\t{\"RT_SCOPE_HOST\", Const, 0, \"\"},\n\t\t{\"RT_SCOPE_LINK\", Const, 0, \"\"},\n\t\t{\"RT_SCOPE_NOWHERE\", Const, 0, \"\"},\n\t\t{\"RT_SCOPE_SITE\", Const, 0, \"\"},\n\t\t{\"RT_SCOPE_UNIVERSE\", Const, 0, \"\"},\n\t\t{\"RT_TABLEID_MAX\", Const, 1, \"\"},\n\t\t{\"RT_TABLE_COMPAT\", Const, 0, \"\"},\n\t\t{\"RT_TABLE_DEFAULT\", Const, 0, \"\"},\n\t\t{\"RT_TABLE_LOCAL\", Const, 0, \"\"},\n\t\t{\"RT_TABLE_MAIN\", Const, 0, \"\"},\n\t\t{\"RT_TABLE_MAX\", Const, 0, \"\"},\n\t\t{\"RT_TABLE_UNSPEC\", Const, 0, \"\"},\n\t\t{\"RUSAGE_CHILDREN\", Const, 0, \"\"},\n\t\t{\"RUSAGE_SELF\", Const, 0, \"\"},\n\t\t{\"RUSAGE_THREAD\", Const, 0, \"\"},\n\t\t{\"Radvisory_t\", Type, 0, \"\"},\n\t\t{\"Radvisory_t.Count\", Field, 0, \"\"},\n\t\t{\"Radvisory_t.Offset\", Field, 0, \"\"},\n\t\t{\"Radvisory_t.Pad_cgo_0\", Field, 0, \"\"},\n\t\t{\"RawConn\", Type, 9, \"\"},\n\t\t{\"RawSockaddr\", Type, 0, \"\"},\n\t\t{\"RawSockaddr.Data\", Field, 0, \"\"},\n\t\t{\"RawSockaddr.Family\", Field, 0, \"\"},\n\t\t{\"RawSockaddr.Len\", Field, 0, \"\"},\n\t\t{\"RawSockaddrAny\", Type, 0, \"\"},\n\t\t{\"RawSockaddrAny.Addr\", Field, 0, \"\"},\n\t\t{\"RawSockaddrAny.Pad\", Field, 0, \"\"},\n\t\t{\"RawSockaddrDatalink\", Type, 0, \"\"},\n\t\t{\"RawSockaddrDatalink.Alen\", Field, 0, \"\"},\n\t\t{\"RawSockaddrDatalink.Data\", Field, 0, \"\"},\n\t\t{\"RawSockaddrDatalink.Family\", Field, 0, \"\"},\n\t\t{\"RawSockaddrDatalink.Index\", Field, 0, \"\"},\n\t\t{\"RawSockaddrDatalink.Len\", Field, 0, \"\"},\n\t\t{\"RawSockaddrDatalink.Nlen\", Field, 0, \"\"},\n\t\t{\"RawSockaddrDatalink.Pad_cgo_0\", Field, 2, \"\"},\n\t\t{\"RawSockaddrDatalink.Slen\", Field, 0, \"\"},\n\t\t{\"RawSockaddrDatalink.Type\", Field, 0, \"\"},\n\t\t{\"RawSockaddrInet4\", Type, 0, \"\"},\n\t\t{\"RawSockaddrInet4.Addr\", Field, 0, \"\"},\n\t\t{\"RawSockaddrInet4.Family\", Field, 0, \"\"},\n\t\t{\"RawSockaddrInet4.Len\", Field, 0, \"\"},\n\t\t{\"RawSockaddrInet4.Port\", Field, 0, \"\"},\n\t\t{\"RawSockaddrInet4.Zero\", Field, 0, \"\"},\n\t\t{\"RawSockaddrInet6\", Type, 0, \"\"},\n\t\t{\"RawSockaddrInet6.Addr\", Field, 0, \"\"},\n\t\t{\"RawSockaddrInet6.Family\", Field, 0, \"\"},\n\t\t{\"RawSockaddrInet6.Flowinfo\", Field, 0, \"\"},\n\t\t{\"RawSockaddrInet6.Len\", Field, 0, \"\"},\n\t\t{\"RawSockaddrInet6.Port\", Field, 0, \"\"},\n\t\t{\"RawSockaddrInet6.Scope_id\", Field, 0, \"\"},\n\t\t{\"RawSockaddrLinklayer\", Type, 0, \"\"},\n\t\t{\"RawSockaddrLinklayer.Addr\", Field, 0, \"\"},\n\t\t{\"RawSockaddrLinklayer.Family\", Field, 0, \"\"},\n\t\t{\"RawSockaddrLinklayer.Halen\", Field, 0, \"\"},\n\t\t{\"RawSockaddrLinklayer.Hatype\", Field, 0, \"\"},\n\t\t{\"RawSockaddrLinklayer.Ifindex\", Field, 0, \"\"},\n\t\t{\"RawSockaddrLinklayer.Pkttype\", Field, 0, \"\"},\n\t\t{\"RawSockaddrLinklayer.Protocol\", Field, 0, \"\"},\n\t\t{\"RawSockaddrNetlink\", Type, 0, \"\"},\n\t\t{\"RawSockaddrNetlink.Family\", Field, 0, \"\"},\n\t\t{\"RawSockaddrNetlink.Groups\", Field, 0, \"\"},\n\t\t{\"RawSockaddrNetlink.Pad\", Field, 0, \"\"},\n\t\t{\"RawSockaddrNetlink.Pid\", Field, 0, \"\"},\n\t\t{\"RawSockaddrUnix\", Type, 0, \"\"},\n\t\t{\"RawSockaddrUnix.Family\", Field, 0, \"\"},\n\t\t{\"RawSockaddrUnix.Len\", Field, 0, \"\"},\n\t\t{\"RawSockaddrUnix.Pad_cgo_0\", Field, 2, \"\"},\n\t\t{\"RawSockaddrUnix.Path\", Field, 0, \"\"},\n\t\t{\"RawSyscall\", Func, 0, \"func(trap uintptr, a1 uintptr, a2 uintptr, a3 uintptr) (r1 uintptr, r2 uintptr, err Errno)\"},\n\t\t{\"RawSyscall6\", Func, 0, \"func(trap uintptr, a1 uintptr, a2 uintptr, a3 uintptr, a4 uintptr, a5 uintptr, a6 uintptr) (r1 uintptr, r2 uintptr, err Errno)\"},\n\t\t{\"Read\", Func, 0, \"func(fd int, p []byte) (n int, err error)\"},\n\t\t{\"ReadConsole\", Func, 1, \"\"},\n\t\t{\"ReadDirectoryChanges\", Func, 0, \"\"},\n\t\t{\"ReadDirent\", Func, 0, \"func(fd int, buf []byte) (n int, err error)\"},\n\t\t{\"ReadFile\", Func, 0, \"\"},\n\t\t{\"Readlink\", Func, 0, \"func(path string, buf []byte) (n int, err error)\"},\n\t\t{\"Reboot\", Func, 0, \"func(cmd int) (err error)\"},\n\t\t{\"Recvfrom\", Func, 0, \"func(fd int, p []byte, flags int) (n int, from Sockaddr, err error)\"},\n\t\t{\"Recvmsg\", Func, 0, \"func(fd int, p []byte, oob []byte, flags int) (n int, oobn int, recvflags int, from Sockaddr, err error)\"},\n\t\t{\"RegCloseKey\", Func, 0, \"\"},\n\t\t{\"RegEnumKeyEx\", Func, 0, \"\"},\n\t\t{\"RegOpenKeyEx\", Func, 0, \"\"},\n\t\t{\"RegQueryInfoKey\", Func, 0, \"\"},\n\t\t{\"RegQueryValueEx\", Func, 0, \"\"},\n\t\t{\"RemoveDirectory\", Func, 0, \"\"},\n\t\t{\"Removexattr\", Func, 1, \"func(path string, attr string) (err error)\"},\n\t\t{\"Rename\", Func, 0, \"func(oldpath string, newpath string) (err error)\"},\n\t\t{\"Renameat\", Func, 0, \"func(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\"},\n\t\t{\"Revoke\", Func, 0, \"\"},\n\t\t{\"Rlimit\", Type, 0, \"\"},\n\t\t{\"Rlimit.Cur\", Field, 0, \"\"},\n\t\t{\"Rlimit.Max\", Field, 0, \"\"},\n\t\t{\"Rmdir\", Func, 0, \"func(path string) error\"},\n\t\t{\"RouteMessage\", Type, 0, \"\"},\n\t\t{\"RouteMessage.Data\", Field, 0, \"\"},\n\t\t{\"RouteMessage.Header\", Field, 0, \"\"},\n\t\t{\"RouteRIB\", Func, 0, \"\"},\n\t\t{\"RoutingMessage\", Type, 14, \"\"},\n\t\t{\"RtAttr\", Type, 0, \"\"},\n\t\t{\"RtAttr.Len\", Field, 0, \"\"},\n\t\t{\"RtAttr.Type\", Field, 0, \"\"},\n\t\t{\"RtGenmsg\", Type, 0, \"\"},\n\t\t{\"RtGenmsg.Family\", Field, 0, \"\"},\n\t\t{\"RtMetrics\", Type, 0, \"\"},\n\t\t{\"RtMetrics.Expire\", Field, 0, \"\"},\n\t\t{\"RtMetrics.Filler\", Field, 0, \"\"},\n\t\t{\"RtMetrics.Hopcount\", Field, 0, \"\"},\n\t\t{\"RtMetrics.Locks\", Field, 0, \"\"},\n\t\t{\"RtMetrics.Mtu\", Field, 0, \"\"},\n\t\t{\"RtMetrics.Pad\", Field, 3, \"\"},\n\t\t{\"RtMetrics.Pksent\", Field, 0, \"\"},\n\t\t{\"RtMetrics.Recvpipe\", Field, 0, \"\"},\n\t\t{\"RtMetrics.Refcnt\", Field, 2, \"\"},\n\t\t{\"RtMetrics.Rtt\", Field, 0, \"\"},\n\t\t{\"RtMetrics.Rttvar\", Field, 0, \"\"},\n\t\t{\"RtMetrics.Sendpipe\", Field, 0, \"\"},\n\t\t{\"RtMetrics.Ssthresh\", Field, 0, \"\"},\n\t\t{\"RtMetrics.Weight\", Field, 0, \"\"},\n\t\t{\"RtMsg\", Type, 0, \"\"},\n\t\t{\"RtMsg.Dst_len\", Field, 0, \"\"},\n\t\t{\"RtMsg.Family\", Field, 0, \"\"},\n\t\t{\"RtMsg.Flags\", Field, 0, \"\"},\n\t\t{\"RtMsg.Protocol\", Field, 0, \"\"},\n\t\t{\"RtMsg.Scope\", Field, 0, \"\"},\n\t\t{\"RtMsg.Src_len\", Field, 0, \"\"},\n\t\t{\"RtMsg.Table\", Field, 0, \"\"},\n\t\t{\"RtMsg.Tos\", Field, 0, \"\"},\n\t\t{\"RtMsg.Type\", Field, 0, \"\"},\n\t\t{\"RtMsghdr\", Type, 0, \"\"},\n\t\t{\"RtMsghdr.Addrs\", Field, 0, \"\"},\n\t\t{\"RtMsghdr.Errno\", Field, 0, \"\"},\n\t\t{\"RtMsghdr.Flags\", Field, 0, \"\"},\n\t\t{\"RtMsghdr.Fmask\", Field, 0, \"\"},\n\t\t{\"RtMsghdr.Hdrlen\", Field, 2, \"\"},\n\t\t{\"RtMsghdr.Index\", Field, 0, \"\"},\n\t\t{\"RtMsghdr.Inits\", Field, 0, \"\"},\n\t\t{\"RtMsghdr.Mpls\", Field, 2, \"\"},\n\t\t{\"RtMsghdr.Msglen\", Field, 0, \"\"},\n\t\t{\"RtMsghdr.Pad_cgo_0\", Field, 0, \"\"},\n\t\t{\"RtMsghdr.Pad_cgo_1\", Field, 2, \"\"},\n\t\t{\"RtMsghdr.Pid\", Field, 0, \"\"},\n\t\t{\"RtMsghdr.Priority\", Field, 2, \"\"},\n\t\t{\"RtMsghdr.Rmx\", Field, 0, \"\"},\n\t\t{\"RtMsghdr.Seq\", Field, 0, \"\"},\n\t\t{\"RtMsghdr.Tableid\", Field, 2, \"\"},\n\t\t{\"RtMsghdr.Type\", Field, 0, \"\"},\n\t\t{\"RtMsghdr.Use\", Field, 0, \"\"},\n\t\t{\"RtMsghdr.Version\", Field, 0, \"\"},\n\t\t{\"RtNexthop\", Type, 0, \"\"},\n\t\t{\"RtNexthop.Flags\", Field, 0, \"\"},\n\t\t{\"RtNexthop.Hops\", Field, 0, \"\"},\n\t\t{\"RtNexthop.Ifindex\", Field, 0, \"\"},\n\t\t{\"RtNexthop.Len\", Field, 0, \"\"},\n\t\t{\"Rusage\", Type, 0, \"\"},\n\t\t{\"Rusage.CreationTime\", Field, 0, \"\"},\n\t\t{\"Rusage.ExitTime\", Field, 0, \"\"},\n\t\t{\"Rusage.Idrss\", Field, 0, \"\"},\n\t\t{\"Rusage.Inblock\", Field, 0, \"\"},\n\t\t{\"Rusage.Isrss\", Field, 0, \"\"},\n\t\t{\"Rusage.Ixrss\", Field, 0, \"\"},\n\t\t{\"Rusage.KernelTime\", Field, 0, \"\"},\n\t\t{\"Rusage.Majflt\", Field, 0, \"\"},\n\t\t{\"Rusage.Maxrss\", Field, 0, \"\"},\n\t\t{\"Rusage.Minflt\", Field, 0, \"\"},\n\t\t{\"Rusage.Msgrcv\", Field, 0, \"\"},\n\t\t{\"Rusage.Msgsnd\", Field, 0, \"\"},\n\t\t{\"Rusage.Nivcsw\", Field, 0, \"\"},\n\t\t{\"Rusage.Nsignals\", Field, 0, \"\"},\n\t\t{\"Rusage.Nswap\", Field, 0, \"\"},\n\t\t{\"Rusage.Nvcsw\", Field, 0, \"\"},\n\t\t{\"Rusage.Oublock\", Field, 0, \"\"},\n\t\t{\"Rusage.Stime\", Field, 0, \"\"},\n\t\t{\"Rusage.UserTime\", Field, 0, \"\"},\n\t\t{\"Rusage.Utime\", Field, 0, \"\"},\n\t\t{\"SCM_BINTIME\", Const, 0, \"\"},\n\t\t{\"SCM_CREDENTIALS\", Const, 0, \"\"},\n\t\t{\"SCM_CREDS\", Const, 0, \"\"},\n\t\t{\"SCM_RIGHTS\", Const, 0, \"\"},\n\t\t{\"SCM_TIMESTAMP\", Const, 0, \"\"},\n\t\t{\"SCM_TIMESTAMPING\", Const, 0, \"\"},\n\t\t{\"SCM_TIMESTAMPNS\", Const, 0, \"\"},\n\t\t{\"SCM_TIMESTAMP_MONOTONIC\", Const, 0, \"\"},\n\t\t{\"SHUT_RD\", Const, 0, \"\"},\n\t\t{\"SHUT_RDWR\", Const, 0, \"\"},\n\t\t{\"SHUT_WR\", Const, 0, \"\"},\n\t\t{\"SID\", Type, 0, \"\"},\n\t\t{\"SIDAndAttributes\", Type, 0, \"\"},\n\t\t{\"SIDAndAttributes.Attributes\", Field, 0, \"\"},\n\t\t{\"SIDAndAttributes.Sid\", Field, 0, \"\"},\n\t\t{\"SIGABRT\", Const, 0, \"\"},\n\t\t{\"SIGALRM\", Const, 0, \"\"},\n\t\t{\"SIGBUS\", Const, 0, \"\"},\n\t\t{\"SIGCHLD\", Const, 0, \"\"},\n\t\t{\"SIGCLD\", Const, 0, \"\"},\n\t\t{\"SIGCONT\", Const, 0, \"\"},\n\t\t{\"SIGEMT\", Const, 0, \"\"},\n\t\t{\"SIGFPE\", Const, 0, \"\"},\n\t\t{\"SIGHUP\", Const, 0, \"\"},\n\t\t{\"SIGILL\", Const, 0, \"\"},\n\t\t{\"SIGINFO\", Const, 0, \"\"},\n\t\t{\"SIGINT\", Const, 0, \"\"},\n\t\t{\"SIGIO\", Const, 0, \"\"},\n\t\t{\"SIGIOT\", Const, 0, \"\"},\n\t\t{\"SIGKILL\", Const, 0, \"\"},\n\t\t{\"SIGLIBRT\", Const, 1, \"\"},\n\t\t{\"SIGLWP\", Const, 0, \"\"},\n\t\t{\"SIGPIPE\", Const, 0, \"\"},\n\t\t{\"SIGPOLL\", Const, 0, \"\"},\n\t\t{\"SIGPROF\", Const, 0, \"\"},\n\t\t{\"SIGPWR\", Const, 0, \"\"},\n\t\t{\"SIGQUIT\", Const, 0, \"\"},\n\t\t{\"SIGSEGV\", Const, 0, \"\"},\n\t\t{\"SIGSTKFLT\", Const, 0, \"\"},\n\t\t{\"SIGSTOP\", Const, 0, \"\"},\n\t\t{\"SIGSYS\", Const, 0, \"\"},\n\t\t{\"SIGTERM\", Const, 0, \"\"},\n\t\t{\"SIGTHR\", Const, 0, \"\"},\n\t\t{\"SIGTRAP\", Const, 0, \"\"},\n\t\t{\"SIGTSTP\", Const, 0, \"\"},\n\t\t{\"SIGTTIN\", Const, 0, \"\"},\n\t\t{\"SIGTTOU\", Const, 0, \"\"},\n\t\t{\"SIGUNUSED\", Const, 0, \"\"},\n\t\t{\"SIGURG\", Const, 0, \"\"},\n\t\t{\"SIGUSR1\", Const, 0, \"\"},\n\t\t{\"SIGUSR2\", Const, 0, \"\"},\n\t\t{\"SIGVTALRM\", Const, 0, \"\"},\n\t\t{\"SIGWINCH\", Const, 0, \"\"},\n\t\t{\"SIGXCPU\", Const, 0, \"\"},\n\t\t{\"SIGXFSZ\", Const, 0, \"\"},\n\t\t{\"SIOCADDDLCI\", Const, 0, \"\"},\n\t\t{\"SIOCADDMULTI\", Const, 0, \"\"},\n\t\t{\"SIOCADDRT\", Const, 0, \"\"},\n\t\t{\"SIOCAIFADDR\", Const, 0, \"\"},\n\t\t{\"SIOCAIFGROUP\", Const, 0, \"\"},\n\t\t{\"SIOCALIFADDR\", Const, 0, \"\"},\n\t\t{\"SIOCARPIPLL\", Const, 0, \"\"},\n\t\t{\"SIOCATMARK\", Const, 0, \"\"},\n\t\t{\"SIOCAUTOADDR\", Const, 0, \"\"},\n\t\t{\"SIOCAUTONETMASK\", Const, 0, \"\"},\n\t\t{\"SIOCBRDGADD\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGADDS\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGARL\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGDADDR\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGDEL\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGDELS\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGFLUSH\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGFRL\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGGCACHE\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGGFD\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGGHT\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGGIFFLGS\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGGMA\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGGPARAM\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGGPRI\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGGRL\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGGSIFS\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGGTO\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGIFS\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGRTS\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGSADDR\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGSCACHE\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGSFD\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGSHT\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGSIFCOST\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGSIFFLGS\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGSIFPRIO\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGSMA\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGSPRI\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGSPROTO\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGSTO\", Const, 1, \"\"},\n\t\t{\"SIOCBRDGSTXHC\", Const, 1, \"\"},\n\t\t{\"SIOCDARP\", Const, 0, \"\"},\n\t\t{\"SIOCDELDLCI\", Const, 0, \"\"},\n\t\t{\"SIOCDELMULTI\", Const, 0, \"\"},\n\t\t{\"SIOCDELRT\", Const, 0, \"\"},\n\t\t{\"SIOCDEVPRIVATE\", Const, 0, \"\"},\n\t\t{\"SIOCDIFADDR\", Const, 0, \"\"},\n\t\t{\"SIOCDIFGROUP\", Const, 0, \"\"},\n\t\t{\"SIOCDIFPHYADDR\", Const, 0, \"\"},\n\t\t{\"SIOCDLIFADDR\", Const, 0, \"\"},\n\t\t{\"SIOCDRARP\", Const, 0, \"\"},\n\t\t{\"SIOCGARP\", Const, 0, \"\"},\n\t\t{\"SIOCGDRVSPEC\", Const, 0, \"\"},\n\t\t{\"SIOCGETKALIVE\", Const, 1, \"\"},\n\t\t{\"SIOCGETLABEL\", Const, 1, \"\"},\n\t\t{\"SIOCGETPFLOW\", Const, 1, \"\"},\n\t\t{\"SIOCGETPFSYNC\", Const, 1, \"\"},\n\t\t{\"SIOCGETSGCNT\", Const, 0, \"\"},\n\t\t{\"SIOCGETVIFCNT\", Const, 0, \"\"},\n\t\t{\"SIOCGETVLAN\", Const, 0, \"\"},\n\t\t{\"SIOCGHIWAT\", Const, 0, \"\"},\n\t\t{\"SIOCGIFADDR\", Const, 0, \"\"},\n\t\t{\"SIOCGIFADDRPREF\", Const, 1, \"\"},\n\t\t{\"SIOCGIFALIAS\", Const, 1, \"\"},\n\t\t{\"SIOCGIFALTMTU\", Const, 0, \"\"},\n\t\t{\"SIOCGIFASYNCMAP\", Const, 0, \"\"},\n\t\t{\"SIOCGIFBOND\", Const, 0, \"\"},\n\t\t{\"SIOCGIFBR\", Const, 0, \"\"},\n\t\t{\"SIOCGIFBRDADDR\", Const, 0, \"\"},\n\t\t{\"SIOCGIFCAP\", Const, 0, \"\"},\n\t\t{\"SIOCGIFCONF\", Const, 0, \"\"},\n\t\t{\"SIOCGIFCOUNT\", Const, 0, \"\"},\n\t\t{\"SIOCGIFDATA\", Const, 1, \"\"},\n\t\t{\"SIOCGIFDESCR\", Const, 0, \"\"},\n\t\t{\"SIOCGIFDEVMTU\", Const, 0, \"\"},\n\t\t{\"SIOCGIFDLT\", Const, 1, \"\"},\n\t\t{\"SIOCGIFDSTADDR\", Const, 0, \"\"},\n\t\t{\"SIOCGIFENCAP\", Const, 0, \"\"},\n\t\t{\"SIOCGIFFIB\", Const, 1, \"\"},\n\t\t{\"SIOCGIFFLAGS\", Const, 0, \"\"},\n\t\t{\"SIOCGIFGATTR\", Const, 1, \"\"},\n\t\t{\"SIOCGIFGENERIC\", Const, 0, \"\"},\n\t\t{\"SIOCGIFGMEMB\", Const, 0, \"\"},\n\t\t{\"SIOCGIFGROUP\", Const, 0, \"\"},\n\t\t{\"SIOCGIFHARDMTU\", Const, 3, \"\"},\n\t\t{\"SIOCGIFHWADDR\", Const, 0, \"\"},\n\t\t{\"SIOCGIFINDEX\", Const, 0, \"\"},\n\t\t{\"SIOCGIFKPI\", Const, 0, \"\"},\n\t\t{\"SIOCGIFMAC\", Const, 0, \"\"},\n\t\t{\"SIOCGIFMAP\", Const, 0, \"\"},\n\t\t{\"SIOCGIFMEDIA\", Const, 0, \"\"},\n\t\t{\"SIOCGIFMEM\", Const, 0, \"\"},\n\t\t{\"SIOCGIFMETRIC\", Const, 0, \"\"},\n\t\t{\"SIOCGIFMTU\", Const, 0, \"\"},\n\t\t{\"SIOCGIFNAME\", Const, 0, \"\"},\n\t\t{\"SIOCGIFNETMASK\", Const, 0, \"\"},\n\t\t{\"SIOCGIFPDSTADDR\", Const, 0, \"\"},\n\t\t{\"SIOCGIFPFLAGS\", Const, 0, \"\"},\n\t\t{\"SIOCGIFPHYS\", Const, 0, \"\"},\n\t\t{\"SIOCGIFPRIORITY\", Const, 1, \"\"},\n\t\t{\"SIOCGIFPSRCADDR\", Const, 0, \"\"},\n\t\t{\"SIOCGIFRDOMAIN\", Const, 1, \"\"},\n\t\t{\"SIOCGIFRTLABEL\", Const, 1, \"\"},\n\t\t{\"SIOCGIFSLAVE\", Const, 0, \"\"},\n\t\t{\"SIOCGIFSTATUS\", Const, 0, \"\"},\n\t\t{\"SIOCGIFTIMESLOT\", Const, 1, \"\"},\n\t\t{\"SIOCGIFTXQLEN\", Const, 0, \"\"},\n\t\t{\"SIOCGIFVLAN\", Const, 0, \"\"},\n\t\t{\"SIOCGIFWAKEFLAGS\", Const, 0, \"\"},\n\t\t{\"SIOCGIFXFLAGS\", Const, 1, \"\"},\n\t\t{\"SIOCGLIFADDR\", Const, 0, \"\"},\n\t\t{\"SIOCGLIFPHYADDR\", Const, 0, \"\"},\n\t\t{\"SIOCGLIFPHYRTABLE\", Const, 1, \"\"},\n\t\t{\"SIOCGLIFPHYTTL\", Const, 3, \"\"},\n\t\t{\"SIOCGLINKSTR\", Const, 1, \"\"},\n\t\t{\"SIOCGLOWAT\", Const, 0, \"\"},\n\t\t{\"SIOCGPGRP\", Const, 0, \"\"},\n\t\t{\"SIOCGPRIVATE_0\", Const, 0, \"\"},\n\t\t{\"SIOCGPRIVATE_1\", Const, 0, \"\"},\n\t\t{\"SIOCGRARP\", Const, 0, \"\"},\n\t\t{\"SIOCGSPPPPARAMS\", Const, 3, \"\"},\n\t\t{\"SIOCGSTAMP\", Const, 0, \"\"},\n\t\t{\"SIOCGSTAMPNS\", Const, 0, \"\"},\n\t\t{\"SIOCGVH\", Const, 1, \"\"},\n\t\t{\"SIOCGVNETID\", Const, 3, \"\"},\n\t\t{\"SIOCIFCREATE\", Const, 0, \"\"},\n\t\t{\"SIOCIFCREATE2\", Const, 0, \"\"},\n\t\t{\"SIOCIFDESTROY\", Const, 0, \"\"},\n\t\t{\"SIOCIFGCLONERS\", Const, 0, \"\"},\n\t\t{\"SIOCINITIFADDR\", Const, 1, \"\"},\n\t\t{\"SIOCPROTOPRIVATE\", Const, 0, \"\"},\n\t\t{\"SIOCRSLVMULTI\", Const, 0, \"\"},\n\t\t{\"SIOCRTMSG\", Const, 0, \"\"},\n\t\t{\"SIOCSARP\", Const, 0, \"\"},\n\t\t{\"SIOCSDRVSPEC\", Const, 0, \"\"},\n\t\t{\"SIOCSETKALIVE\", Const, 1, \"\"},\n\t\t{\"SIOCSETLABEL\", Const, 1, \"\"},\n\t\t{\"SIOCSETPFLOW\", Const, 1, \"\"},\n\t\t{\"SIOCSETPFSYNC\", Const, 1, \"\"},\n\t\t{\"SIOCSETVLAN\", Const, 0, \"\"},\n\t\t{\"SIOCSHIWAT\", Const, 0, \"\"},\n\t\t{\"SIOCSIFADDR\", Const, 0, \"\"},\n\t\t{\"SIOCSIFADDRPREF\", Const, 1, \"\"},\n\t\t{\"SIOCSIFALTMTU\", Const, 0, \"\"},\n\t\t{\"SIOCSIFASYNCMAP\", Const, 0, \"\"},\n\t\t{\"SIOCSIFBOND\", Const, 0, \"\"},\n\t\t{\"SIOCSIFBR\", Const, 0, \"\"},\n\t\t{\"SIOCSIFBRDADDR\", Const, 0, \"\"},\n\t\t{\"SIOCSIFCAP\", Const, 0, \"\"},\n\t\t{\"SIOCSIFDESCR\", Const, 0, \"\"},\n\t\t{\"SIOCSIFDSTADDR\", Const, 0, \"\"},\n\t\t{\"SIOCSIFENCAP\", Const, 0, \"\"},\n\t\t{\"SIOCSIFFIB\", Const, 1, \"\"},\n\t\t{\"SIOCSIFFLAGS\", Const, 0, \"\"},\n\t\t{\"SIOCSIFGATTR\", Const, 1, \"\"},\n\t\t{\"SIOCSIFGENERIC\", Const, 0, \"\"},\n\t\t{\"SIOCSIFHWADDR\", Const, 0, \"\"},\n\t\t{\"SIOCSIFHWBROADCAST\", Const, 0, \"\"},\n\t\t{\"SIOCSIFKPI\", Const, 0, \"\"},\n\t\t{\"SIOCSIFLINK\", Const, 0, \"\"},\n\t\t{\"SIOCSIFLLADDR\", Const, 0, \"\"},\n\t\t{\"SIOCSIFMAC\", Const, 0, \"\"},\n\t\t{\"SIOCSIFMAP\", Const, 0, \"\"},\n\t\t{\"SIOCSIFMEDIA\", Const, 0, \"\"},\n\t\t{\"SIOCSIFMEM\", Const, 0, \"\"},\n\t\t{\"SIOCSIFMETRIC\", Const, 0, \"\"},\n\t\t{\"SIOCSIFMTU\", Const, 0, \"\"},\n\t\t{\"SIOCSIFNAME\", Const, 0, \"\"},\n\t\t{\"SIOCSIFNETMASK\", Const, 0, \"\"},\n\t\t{\"SIOCSIFPFLAGS\", Const, 0, \"\"},\n\t\t{\"SIOCSIFPHYADDR\", Const, 0, \"\"},\n\t\t{\"SIOCSIFPHYS\", Const, 0, \"\"},\n\t\t{\"SIOCSIFPRIORITY\", Const, 1, \"\"},\n\t\t{\"SIOCSIFRDOMAIN\", Const, 1, \"\"},\n\t\t{\"SIOCSIFRTLABEL\", Const, 1, \"\"},\n\t\t{\"SIOCSIFRVNET\", Const, 0, \"\"},\n\t\t{\"SIOCSIFSLAVE\", Const, 0, \"\"},\n\t\t{\"SIOCSIFTIMESLOT\", Const, 1, \"\"},\n\t\t{\"SIOCSIFTXQLEN\", Const, 0, \"\"},\n\t\t{\"SIOCSIFVLAN\", Const, 0, \"\"},\n\t\t{\"SIOCSIFVNET\", Const, 0, \"\"},\n\t\t{\"SIOCSIFXFLAGS\", Const, 1, \"\"},\n\t\t{\"SIOCSLIFPHYADDR\", Const, 0, \"\"},\n\t\t{\"SIOCSLIFPHYRTABLE\", Const, 1, \"\"},\n\t\t{\"SIOCSLIFPHYTTL\", Const, 3, \"\"},\n\t\t{\"SIOCSLINKSTR\", Const, 1, \"\"},\n\t\t{\"SIOCSLOWAT\", Const, 0, \"\"},\n\t\t{\"SIOCSPGRP\", Const, 0, \"\"},\n\t\t{\"SIOCSRARP\", Const, 0, \"\"},\n\t\t{\"SIOCSSPPPPARAMS\", Const, 3, \"\"},\n\t\t{\"SIOCSVH\", Const, 1, \"\"},\n\t\t{\"SIOCSVNETID\", Const, 3, \"\"},\n\t\t{\"SIOCZIFDATA\", Const, 1, \"\"},\n\t\t{\"SIO_GET_EXTENSION_FUNCTION_POINTER\", Const, 1, \"\"},\n\t\t{\"SIO_GET_INTERFACE_LIST\", Const, 0, \"\"},\n\t\t{\"SIO_KEEPALIVE_VALS\", Const, 3, \"\"},\n\t\t{\"SIO_UDP_CONNRESET\", Const, 4, \"\"},\n\t\t{\"SOCK_CLOEXEC\", Const, 0, \"\"},\n\t\t{\"SOCK_DCCP\", Const, 0, \"\"},\n\t\t{\"SOCK_DGRAM\", Const, 0, \"\"},\n\t\t{\"SOCK_FLAGS_MASK\", Const, 1, \"\"},\n\t\t{\"SOCK_MAXADDRLEN\", Const, 0, \"\"},\n\t\t{\"SOCK_NONBLOCK\", Const, 0, \"\"},\n\t\t{\"SOCK_NOSIGPIPE\", Const, 1, \"\"},\n\t\t{\"SOCK_PACKET\", Const, 0, \"\"},\n\t\t{\"SOCK_RAW\", Const, 0, \"\"},\n\t\t{\"SOCK_RDM\", Const, 0, \"\"},\n\t\t{\"SOCK_SEQPACKET\", Const, 0, \"\"},\n\t\t{\"SOCK_STREAM\", Const, 0, \"\"},\n\t\t{\"SOL_AAL\", Const, 0, \"\"},\n\t\t{\"SOL_ATM\", Const, 0, \"\"},\n\t\t{\"SOL_DECNET\", Const, 0, \"\"},\n\t\t{\"SOL_ICMPV6\", Const, 0, \"\"},\n\t\t{\"SOL_IP\", Const, 0, \"\"},\n\t\t{\"SOL_IPV6\", Const, 0, \"\"},\n\t\t{\"SOL_IRDA\", Const, 0, \"\"},\n\t\t{\"SOL_PACKET\", Const, 0, \"\"},\n\t\t{\"SOL_RAW\", Const, 0, \"\"},\n\t\t{\"SOL_SOCKET\", Const, 0, \"\"},\n\t\t{\"SOL_TCP\", Const, 0, \"\"},\n\t\t{\"SOL_X25\", Const, 0, \"\"},\n\t\t{\"SOMAXCONN\", Const, 0, \"\"},\n\t\t{\"SO_ACCEPTCONN\", Const, 0, \"\"},\n\t\t{\"SO_ACCEPTFILTER\", Const, 0, \"\"},\n\t\t{\"SO_ATTACH_FILTER\", Const, 0, \"\"},\n\t\t{\"SO_BINDANY\", Const, 1, \"\"},\n\t\t{\"SO_BINDTODEVICE\", Const, 0, \"\"},\n\t\t{\"SO_BINTIME\", Const, 0, \"\"},\n\t\t{\"SO_BROADCAST\", Const, 0, \"\"},\n\t\t{\"SO_BSDCOMPAT\", Const, 0, \"\"},\n\t\t{\"SO_DEBUG\", Const, 0, \"\"},\n\t\t{\"SO_DETACH_FILTER\", Const, 0, \"\"},\n\t\t{\"SO_DOMAIN\", Const, 0, \"\"},\n\t\t{\"SO_DONTROUTE\", Const, 0, \"\"},\n\t\t{\"SO_DONTTRUNC\", Const, 0, \"\"},\n\t\t{\"SO_ERROR\", Const, 0, \"\"},\n\t\t{\"SO_KEEPALIVE\", Const, 0, \"\"},\n\t\t{\"SO_LABEL\", Const, 0, \"\"},\n\t\t{\"SO_LINGER\", Const, 0, \"\"},\n\t\t{\"SO_LINGER_SEC\", Const, 0, \"\"},\n\t\t{\"SO_LISTENINCQLEN\", Const, 0, \"\"},\n\t\t{\"SO_LISTENQLEN\", Const, 0, \"\"},\n\t\t{\"SO_LISTENQLIMIT\", Const, 0, \"\"},\n\t\t{\"SO_MARK\", Const, 0, \"\"},\n\t\t{\"SO_NETPROC\", Const, 1, \"\"},\n\t\t{\"SO_NKE\", Const, 0, \"\"},\n\t\t{\"SO_NOADDRERR\", Const, 0, \"\"},\n\t\t{\"SO_NOHEADER\", Const, 1, \"\"},\n\t\t{\"SO_NOSIGPIPE\", Const, 0, \"\"},\n\t\t{\"SO_NOTIFYCONFLICT\", Const, 0, \"\"},\n\t\t{\"SO_NO_CHECK\", Const, 0, \"\"},\n\t\t{\"SO_NO_DDP\", Const, 0, \"\"},\n\t\t{\"SO_NO_OFFLOAD\", Const, 0, \"\"},\n\t\t{\"SO_NP_EXTENSIONS\", Const, 0, \"\"},\n\t\t{\"SO_NREAD\", Const, 0, \"\"},\n\t\t{\"SO_NUMRCVPKT\", Const, 16, \"\"},\n\t\t{\"SO_NWRITE\", Const, 0, \"\"},\n\t\t{\"SO_OOBINLINE\", Const, 0, \"\"},\n\t\t{\"SO_OVERFLOWED\", Const, 1, \"\"},\n\t\t{\"SO_PASSCRED\", Const, 0, \"\"},\n\t\t{\"SO_PASSSEC\", Const, 0, \"\"},\n\t\t{\"SO_PEERCRED\", Const, 0, \"\"},\n\t\t{\"SO_PEERLABEL\", Const, 0, \"\"},\n\t\t{\"SO_PEERNAME\", Const, 0, \"\"},\n\t\t{\"SO_PEERSEC\", Const, 0, \"\"},\n\t\t{\"SO_PRIORITY\", Const, 0, \"\"},\n\t\t{\"SO_PROTOCOL\", Const, 0, \"\"},\n\t\t{\"SO_PROTOTYPE\", Const, 1, \"\"},\n\t\t{\"SO_RANDOMPORT\", Const, 0, \"\"},\n\t\t{\"SO_RCVBUF\", Const, 0, \"\"},\n\t\t{\"SO_RCVBUFFORCE\", Const, 0, \"\"},\n\t\t{\"SO_RCVLOWAT\", Const, 0, \"\"},\n\t\t{\"SO_RCVTIMEO\", Const, 0, \"\"},\n\t\t{\"SO_RESTRICTIONS\", Const, 0, \"\"},\n\t\t{\"SO_RESTRICT_DENYIN\", Const, 0, \"\"},\n\t\t{\"SO_RESTRICT_DENYOUT\", Const, 0, \"\"},\n\t\t{\"SO_RESTRICT_DENYSET\", Const, 0, \"\"},\n\t\t{\"SO_REUSEADDR\", Const, 0, \"\"},\n\t\t{\"SO_REUSEPORT\", Const, 0, \"\"},\n\t\t{\"SO_REUSESHAREUID\", Const, 0, \"\"},\n\t\t{\"SO_RTABLE\", Const, 1, \"\"},\n\t\t{\"SO_RXQ_OVFL\", Const, 0, \"\"},\n\t\t{\"SO_SECURITY_AUTHENTICATION\", Const, 0, \"\"},\n\t\t{\"SO_SECURITY_ENCRYPTION_NETWORK\", Const, 0, \"\"},\n\t\t{\"SO_SECURITY_ENCRYPTION_TRANSPORT\", Const, 0, \"\"},\n\t\t{\"SO_SETFIB\", Const, 0, \"\"},\n\t\t{\"SO_SNDBUF\", Const, 0, \"\"},\n\t\t{\"SO_SNDBUFFORCE\", Const, 0, \"\"},\n\t\t{\"SO_SNDLOWAT\", Const, 0, \"\"},\n\t\t{\"SO_SNDTIMEO\", Const, 0, \"\"},\n\t\t{\"SO_SPLICE\", Const, 1, \"\"},\n\t\t{\"SO_TIMESTAMP\", Const, 0, \"\"},\n\t\t{\"SO_TIMESTAMPING\", Const, 0, \"\"},\n\t\t{\"SO_TIMESTAMPNS\", Const, 0, \"\"},\n\t\t{\"SO_TIMESTAMP_MONOTONIC\", Const, 0, \"\"},\n\t\t{\"SO_TYPE\", Const, 0, \"\"},\n\t\t{\"SO_UPCALLCLOSEWAIT\", Const, 0, \"\"},\n\t\t{\"SO_UPDATE_ACCEPT_CONTEXT\", Const, 0, \"\"},\n\t\t{\"SO_UPDATE_CONNECT_CONTEXT\", Const, 1, \"\"},\n\t\t{\"SO_USELOOPBACK\", Const, 0, \"\"},\n\t\t{\"SO_USER_COOKIE\", Const, 1, \"\"},\n\t\t{\"SO_VENDOR\", Const, 3, \"\"},\n\t\t{\"SO_WANTMORE\", Const, 0, \"\"},\n\t\t{\"SO_WANTOOBFLAG\", Const, 0, \"\"},\n\t\t{\"SSLExtraCertChainPolicyPara\", Type, 0, \"\"},\n\t\t{\"SSLExtraCertChainPolicyPara.AuthType\", Field, 0, \"\"},\n\t\t{\"SSLExtraCertChainPolicyPara.Checks\", Field, 0, \"\"},\n\t\t{\"SSLExtraCertChainPolicyPara.ServerName\", Field, 0, \"\"},\n\t\t{\"SSLExtraCertChainPolicyPara.Size\", Field, 0, \"\"},\n\t\t{\"STANDARD_RIGHTS_ALL\", Const, 0, \"\"},\n\t\t{\"STANDARD_RIGHTS_EXECUTE\", Const, 0, \"\"},\n\t\t{\"STANDARD_RIGHTS_READ\", Const, 0, \"\"},\n\t\t{\"STANDARD_RIGHTS_REQUIRED\", Const, 0, \"\"},\n\t\t{\"STANDARD_RIGHTS_WRITE\", Const, 0, \"\"},\n\t\t{\"STARTF_USESHOWWINDOW\", Const, 0, \"\"},\n\t\t{\"STARTF_USESTDHANDLES\", Const, 0, \"\"},\n\t\t{\"STD_ERROR_HANDLE\", Const, 0, \"\"},\n\t\t{\"STD_INPUT_HANDLE\", Const, 0, \"\"},\n\t\t{\"STD_OUTPUT_HANDLE\", Const, 0, \"\"},\n\t\t{\"SUBLANG_ENGLISH_US\", Const, 0, \"\"},\n\t\t{\"SW_FORCEMINIMIZE\", Const, 0, \"\"},\n\t\t{\"SW_HIDE\", Const, 0, \"\"},\n\t\t{\"SW_MAXIMIZE\", Const, 0, \"\"},\n\t\t{\"SW_MINIMIZE\", Const, 0, \"\"},\n\t\t{\"SW_NORMAL\", Const, 0, \"\"},\n\t\t{\"SW_RESTORE\", Const, 0, \"\"},\n\t\t{\"SW_SHOW\", Const, 0, \"\"},\n\t\t{\"SW_SHOWDEFAULT\", Const, 0, \"\"},\n\t\t{\"SW_SHOWMAXIMIZED\", Const, 0, \"\"},\n\t\t{\"SW_SHOWMINIMIZED\", Const, 0, \"\"},\n\t\t{\"SW_SHOWMINNOACTIVE\", Const, 0, \"\"},\n\t\t{\"SW_SHOWNA\", Const, 0, \"\"},\n\t\t{\"SW_SHOWNOACTIVATE\", Const, 0, \"\"},\n\t\t{\"SW_SHOWNORMAL\", Const, 0, \"\"},\n\t\t{\"SYMBOLIC_LINK_FLAG_DIRECTORY\", Const, 4, \"\"},\n\t\t{\"SYNCHRONIZE\", Const, 0, \"\"},\n\t\t{\"SYSCTL_VERSION\", Const, 1, \"\"},\n\t\t{\"SYSCTL_VERS_0\", Const, 1, \"\"},\n\t\t{\"SYSCTL_VERS_1\", Const, 1, \"\"},\n\t\t{\"SYSCTL_VERS_MASK\", Const, 1, \"\"},\n\t\t{\"SYS_ABORT2\", Const, 0, \"\"},\n\t\t{\"SYS_ACCEPT\", Const, 0, \"\"},\n\t\t{\"SYS_ACCEPT4\", Const, 0, \"\"},\n\t\t{\"SYS_ACCEPT_NOCANCEL\", Const, 0, \"\"},\n\t\t{\"SYS_ACCESS\", Const, 0, \"\"},\n\t\t{\"SYS_ACCESS_EXTENDED\", Const, 0, \"\"},\n\t\t{\"SYS_ACCT\", Const, 0, \"\"},\n\t\t{\"SYS_ADD_KEY\", Const, 0, \"\"},\n\t\t{\"SYS_ADD_PROFIL\", Const, 0, \"\"},\n\t\t{\"SYS_ADJFREQ\", Const, 1, \"\"},\n\t\t{\"SYS_ADJTIME\", Const, 0, \"\"},\n\t\t{\"SYS_ADJTIMEX\", Const, 0, \"\"},\n\t\t{\"SYS_AFS_SYSCALL\", Const, 0, \"\"},\n\t\t{\"SYS_AIO_CANCEL\", Const, 0, \"\"},\n\t\t{\"SYS_AIO_ERROR\", Const, 0, \"\"},\n\t\t{\"SYS_AIO_FSYNC\", Const, 0, \"\"},\n\t\t{\"SYS_AIO_MLOCK\", Const, 14, \"\"},\n\t\t{\"SYS_AIO_READ\", Const, 0, \"\"},\n\t\t{\"SYS_AIO_RETURN\", Const, 0, \"\"},\n\t\t{\"SYS_AIO_SUSPEND\", Const, 0, \"\"},\n\t\t{\"SYS_AIO_SUSPEND_NOCANCEL\", Const, 0, \"\"},\n\t\t{\"SYS_AIO_WAITCOMPLETE\", Const, 14, \"\"},\n\t\t{\"SYS_AIO_WRITE\", Const, 0, \"\"},\n\t\t{\"SYS_ALARM\", Const, 0, \"\"},\n\t\t{\"SYS_ARCH_PRCTL\", Const, 0, \"\"},\n\t\t{\"SYS_ARM_FADVISE64_64\", Const, 0, \"\"},\n\t\t{\"SYS_ARM_SYNC_FILE_RANGE\", Const, 0, \"\"},\n\t\t{\"SYS_ATGETMSG\", Const, 0, \"\"},\n\t\t{\"SYS_ATPGETREQ\", Const, 0, \"\"},\n\t\t{\"SYS_ATPGETRSP\", Const, 0, \"\"},\n\t\t{\"SYS_ATPSNDREQ\", Const, 0, \"\"},\n\t\t{\"SYS_ATPSNDRSP\", Const, 0, \"\"},\n\t\t{\"SYS_ATPUTMSG\", Const, 0, \"\"},\n\t\t{\"SYS_ATSOCKET\", Const, 0, \"\"},\n\t\t{\"SYS_AUDIT\", Const, 0, \"\"},\n\t\t{\"SYS_AUDITCTL\", Const, 0, \"\"},\n\t\t{\"SYS_AUDITON\", Const, 0, \"\"},\n\t\t{\"SYS_AUDIT_SESSION_JOIN\", Const, 0, \"\"},\n\t\t{\"SYS_AUDIT_SESSION_PORT\", Const, 0, \"\"},\n\t\t{\"SYS_AUDIT_SESSION_SELF\", Const, 0, \"\"},\n\t\t{\"SYS_BDFLUSH\", Const, 0, \"\"},\n\t\t{\"SYS_BIND\", Const, 0, \"\"},\n\t\t{\"SYS_BINDAT\", Const, 3, \"\"},\n\t\t{\"SYS_BREAK\", Const, 0, \"\"},\n\t\t{\"SYS_BRK\", Const, 0, \"\"},\n\t\t{\"SYS_BSDTHREAD_CREATE\", Const, 0, \"\"},\n\t\t{\"SYS_BSDTHREAD_REGISTER\", Const, 0, \"\"},\n\t\t{\"SYS_BSDTHREAD_TERMINATE\", Const, 0, \"\"},\n\t\t{\"SYS_CAPGET\", Const, 0, \"\"},\n\t\t{\"SYS_CAPSET\", Const, 0, \"\"},\n\t\t{\"SYS_CAP_ENTER\", Const, 0, \"\"},\n\t\t{\"SYS_CAP_FCNTLS_GET\", Const, 1, \"\"},\n\t\t{\"SYS_CAP_FCNTLS_LIMIT\", Const, 1, \"\"},\n\t\t{\"SYS_CAP_GETMODE\", Const, 0, \"\"},\n\t\t{\"SYS_CAP_GETRIGHTS\", Const, 0, \"\"},\n\t\t{\"SYS_CAP_IOCTLS_GET\", Const, 1, \"\"},\n\t\t{\"SYS_CAP_IOCTLS_LIMIT\", Const, 1, \"\"},\n\t\t{\"SYS_CAP_NEW\", Const, 0, \"\"},\n\t\t{\"SYS_CAP_RIGHTS_GET\", Const, 1, \"\"},\n\t\t{\"SYS_CAP_RIGHTS_LIMIT\", Const, 1, \"\"},\n\t\t{\"SYS_CHDIR\", Const, 0, \"\"},\n\t\t{\"SYS_CHFLAGS\", Const, 0, \"\"},\n\t\t{\"SYS_CHFLAGSAT\", Const, 3, \"\"},\n\t\t{\"SYS_CHMOD\", Const, 0, \"\"},\n\t\t{\"SYS_CHMOD_EXTENDED\", Const, 0, \"\"},\n\t\t{\"SYS_CHOWN\", Const, 0, \"\"},\n\t\t{\"SYS_CHOWN32\", Const, 0, \"\"},\n\t\t{\"SYS_CHROOT\", Const, 0, \"\"},\n\t\t{\"SYS_CHUD\", Const, 0, \"\"},\n\t\t{\"SYS_CLOCK_ADJTIME\", Const, 0, \"\"},\n\t\t{\"SYS_CLOCK_GETCPUCLOCKID2\", Const, 1, \"\"},\n\t\t{\"SYS_CLOCK_GETRES\", Const, 0, \"\"},\n\t\t{\"SYS_CLOCK_GETTIME\", Const, 0, \"\"},\n\t\t{\"SYS_CLOCK_NANOSLEEP\", Const, 0, \"\"},\n\t\t{\"SYS_CLOCK_SETTIME\", Const, 0, \"\"},\n\t\t{\"SYS_CLONE\", Const, 0, \"\"},\n\t\t{\"SYS_CLOSE\", Const, 0, \"\"},\n\t\t{\"SYS_CLOSEFROM\", Const, 0, \"\"},\n\t\t{\"SYS_CLOSE_NOCANCEL\", Const, 0, \"\"},\n\t\t{\"SYS_CONNECT\", Const, 0, \"\"},\n\t\t{\"SYS_CONNECTAT\", Const, 3, \"\"},\n\t\t{\"SYS_CONNECT_NOCANCEL\", Const, 0, \"\"},\n\t\t{\"SYS_COPYFILE\", Const, 0, \"\"},\n\t\t{\"SYS_CPUSET\", Const, 0, \"\"},\n\t\t{\"SYS_CPUSET_GETAFFINITY\", Const, 0, \"\"},\n\t\t{\"SYS_CPUSET_GETID\", Const, 0, \"\"},\n\t\t{\"SYS_CPUSET_SETAFFINITY\", Const, 0, \"\"},\n\t\t{\"SYS_CPUSET_SETID\", Const, 0, \"\"},\n\t\t{\"SYS_CREAT\", Const, 0, \"\"},\n\t\t{\"SYS_CREATE_MODULE\", Const, 0, \"\"},\n\t\t{\"SYS_CSOPS\", Const, 0, \"\"},\n\t\t{\"SYS_CSOPS_AUDITTOKEN\", Const, 16, \"\"},\n\t\t{\"SYS_DELETE\", Const, 0, \"\"},\n\t\t{\"SYS_DELETE_MODULE\", Const, 0, \"\"},\n\t\t{\"SYS_DUP\", Const, 0, \"\"},\n\t\t{\"SYS_DUP2\", Const, 0, \"\"},\n\t\t{\"SYS_DUP3\", Const, 0, \"\"},\n\t\t{\"SYS_EACCESS\", Const, 0, \"\"},\n\t\t{\"SYS_EPOLL_CREATE\", Const, 0, \"\"},\n\t\t{\"SYS_EPOLL_CREATE1\", Const, 0, \"\"},\n\t\t{\"SYS_EPOLL_CTL\", Const, 0, \"\"},\n\t\t{\"SYS_EPOLL_CTL_OLD\", Const, 0, \"\"},\n\t\t{\"SYS_EPOLL_PWAIT\", Const, 0, \"\"},\n\t\t{\"SYS_EPOLL_WAIT\", Const, 0, \"\"},\n\t\t{\"SYS_EPOLL_WAIT_OLD\", Const, 0, \"\"},\n\t\t{\"SYS_EVENTFD\", Const, 0, \"\"},\n\t\t{\"SYS_EVENTFD2\", Const, 0, \"\"},\n\t\t{\"SYS_EXCHANGEDATA\", Const, 0, \"\"},\n\t\t{\"SYS_EXECVE\", Const, 0, \"\"},\n\t\t{\"SYS_EXIT\", Const, 0, \"\"},\n\t\t{\"SYS_EXIT_GROUP\", Const, 0, \"\"},\n\t\t{\"SYS_EXTATTRCTL\", Const, 0, \"\"},\n\t\t{\"SYS_EXTATTR_DELETE_FD\", Const, 0, \"\"},\n\t\t{\"SYS_EXTATTR_DELETE_FILE\", Const, 0, \"\"},\n\t\t{\"SYS_EXTATTR_DELETE_LINK\", Const, 0, \"\"},\n\t\t{\"SYS_EXTATTR_GET_FD\", Const, 0, \"\"},\n\t\t{\"SYS_EXTATTR_GET_FILE\", Const, 0, \"\"},\n\t\t{\"SYS_EXTATTR_GET_LINK\", Const, 0, \"\"},\n\t\t{\"SYS_EXTATTR_LIST_FD\", Const, 0, \"\"},\n\t\t{\"SYS_EXTATTR_LIST_FILE\", Const, 0, \"\"},\n\t\t{\"SYS_EXTATTR_LIST_LINK\", Const, 0, \"\"},\n\t\t{\"SYS_EXTATTR_SET_FD\", Const, 0, \"\"},\n\t\t{\"SYS_EXTATTR_SET_FILE\", Const, 0, \"\"},\n\t\t{\"SYS_EXTATTR_SET_LINK\", Const, 0, \"\"},\n\t\t{\"SYS_FACCESSAT\", Const, 0, \"\"},\n\t\t{\"SYS_FADVISE64\", Const, 0, \"\"},\n\t\t{\"SYS_FADVISE64_64\", Const, 0, \"\"},\n\t\t{\"SYS_FALLOCATE\", Const, 0, \"\"},\n\t\t{\"SYS_FANOTIFY_INIT\", Const, 0, \"\"},\n\t\t{\"SYS_FANOTIFY_MARK\", Const, 0, \"\"},\n\t\t{\"SYS_FCHDIR\", Const, 0, \"\"},\n\t\t{\"SYS_FCHFLAGS\", Const, 0, \"\"},\n\t\t{\"SYS_FCHMOD\", Const, 0, \"\"},\n\t\t{\"SYS_FCHMODAT\", Const, 0, \"\"},\n\t\t{\"SYS_FCHMOD_EXTENDED\", Const, 0, \"\"},\n\t\t{\"SYS_FCHOWN\", Const, 0, \"\"},\n\t\t{\"SYS_FCHOWN32\", Const, 0, \"\"},\n\t\t{\"SYS_FCHOWNAT\", Const, 0, \"\"},\n\t\t{\"SYS_FCHROOT\", Const, 1, \"\"},\n\t\t{\"SYS_FCNTL\", Const, 0, \"\"},\n\t\t{\"SYS_FCNTL64\", Const, 0, \"\"},\n\t\t{\"SYS_FCNTL_NOCANCEL\", Const, 0, \"\"},\n\t\t{\"SYS_FDATASYNC\", Const, 0, \"\"},\n\t\t{\"SYS_FEXECVE\", Const, 0, \"\"},\n\t\t{\"SYS_FFCLOCK_GETCOUNTER\", Const, 0, \"\"},\n\t\t{\"SYS_FFCLOCK_GETESTIMATE\", Const, 0, \"\"},\n\t\t{\"SYS_FFCLOCK_SETESTIMATE\", Const, 0, \"\"},\n\t\t{\"SYS_FFSCTL\", Const, 0, \"\"},\n\t\t{\"SYS_FGETATTRLIST\", Const, 0, \"\"},\n\t\t{\"SYS_FGETXATTR\", Const, 0, \"\"},\n\t\t{\"SYS_FHOPEN\", Const, 0, \"\"},\n\t\t{\"SYS_FHSTAT\", Const, 0, \"\"},\n\t\t{\"SYS_FHSTATFS\", Const, 0, \"\"},\n\t\t{\"SYS_FILEPORT_MAKEFD\", Const, 0, \"\"},\n\t\t{\"SYS_FILEPORT_MAKEPORT\", Const, 0, \"\"},\n\t\t{\"SYS_FKTRACE\", Const, 1, \"\"},\n\t\t{\"SYS_FLISTXATTR\", Const, 0, \"\"},\n\t\t{\"SYS_FLOCK\", Const, 0, \"\"},\n\t\t{\"SYS_FORK\", Const, 0, \"\"},\n\t\t{\"SYS_FPATHCONF\", Const, 0, \"\"},\n\t\t{\"SYS_FREEBSD6_FTRUNCATE\", Const, 0, \"\"},\n\t\t{\"SYS_FREEBSD6_LSEEK\", Const, 0, \"\"},\n\t\t{\"SYS_FREEBSD6_MMAP\", Const, 0, \"\"},\n\t\t{\"SYS_FREEBSD6_PREAD\", Const, 0, \"\"},\n\t\t{\"SYS_FREEBSD6_PWRITE\", Const, 0, \"\"},\n\t\t{\"SYS_FREEBSD6_TRUNCATE\", Const, 0, \"\"},\n\t\t{\"SYS_FREMOVEXATTR\", Const, 0, \"\"},\n\t\t{\"SYS_FSCTL\", Const, 0, \"\"},\n\t\t{\"SYS_FSETATTRLIST\", Const, 0, \"\"},\n\t\t{\"SYS_FSETXATTR\", Const, 0, \"\"},\n\t\t{\"SYS_FSGETPATH\", Const, 0, \"\"},\n\t\t{\"SYS_FSTAT\", Const, 0, \"\"},\n\t\t{\"SYS_FSTAT64\", Const, 0, \"\"},\n\t\t{\"SYS_FSTAT64_EXTENDED\", Const, 0, \"\"},\n\t\t{\"SYS_FSTATAT\", Const, 0, \"\"},\n\t\t{\"SYS_FSTATAT64\", Const, 0, \"\"},\n\t\t{\"SYS_FSTATFS\", Const, 0, \"\"},\n\t\t{\"SYS_FSTATFS64\", Const, 0, \"\"},\n\t\t{\"SYS_FSTATV\", Const, 0, \"\"},\n\t\t{\"SYS_FSTATVFS1\", Const, 1, \"\"},\n\t\t{\"SYS_FSTAT_EXTENDED\", Const, 0, \"\"},\n\t\t{\"SYS_FSYNC\", Const, 0, \"\"},\n\t\t{\"SYS_FSYNC_NOCANCEL\", Const, 0, \"\"},\n\t\t{\"SYS_FSYNC_RANGE\", Const, 1, \"\"},\n\t\t{\"SYS_FTIME\", Const, 0, \"\"},\n\t\t{\"SYS_FTRUNCATE\", Const, 0, \"\"},\n\t\t{\"SYS_FTRUNCATE64\", Const, 0, \"\"},\n\t\t{\"SYS_FUTEX\", Const, 0, \"\"},\n\t\t{\"SYS_FUTIMENS\", Const, 1, \"\"},\n\t\t{\"SYS_FUTIMES\", Const, 0, \"\"},\n\t\t{\"SYS_FUTIMESAT\", Const, 0, \"\"},\n\t\t{\"SYS_GETATTRLIST\", Const, 0, \"\"},\n\t\t{\"SYS_GETAUDIT\", Const, 0, \"\"},\n\t\t{\"SYS_GETAUDIT_ADDR\", Const, 0, \"\"},\n\t\t{\"SYS_GETAUID\", Const, 0, \"\"},\n\t\t{\"SYS_GETCONTEXT\", Const, 0, \"\"},\n\t\t{\"SYS_GETCPU\", Const, 0, \"\"},\n\t\t{\"SYS_GETCWD\", Const, 0, \"\"},\n\t\t{\"SYS_GETDENTS\", Const, 0, \"\"},\n\t\t{\"SYS_GETDENTS64\", Const, 0, \"\"},\n\t\t{\"SYS_GETDIRENTRIES\", Const, 0, \"\"},\n\t\t{\"SYS_GETDIRENTRIES64\", Const, 0, \"\"},\n\t\t{\"SYS_GETDIRENTRIESATTR\", Const, 0, \"\"},\n\t\t{\"SYS_GETDTABLECOUNT\", Const, 1, \"\"},\n\t\t{\"SYS_GETDTABLESIZE\", Const, 0, \"\"},\n\t\t{\"SYS_GETEGID\", Const, 0, \"\"},\n\t\t{\"SYS_GETEGID32\", Const, 0, \"\"},\n\t\t{\"SYS_GETEUID\", Const, 0, \"\"},\n\t\t{\"SYS_GETEUID32\", Const, 0, \"\"},\n\t\t{\"SYS_GETFH\", Const, 0, \"\"},\n\t\t{\"SYS_GETFSSTAT\", Const, 0, \"\"},\n\t\t{\"SYS_GETFSSTAT64\", Const, 0, \"\"},\n\t\t{\"SYS_GETGID\", Const, 0, \"\"},\n\t\t{\"SYS_GETGID32\", Const, 0, \"\"},\n\t\t{\"SYS_GETGROUPS\", Const, 0, \"\"},\n\t\t{\"SYS_GETGROUPS32\", Const, 0, \"\"},\n\t\t{\"SYS_GETHOSTUUID\", Const, 0, \"\"},\n\t\t{\"SYS_GETITIMER\", Const, 0, \"\"},\n\t\t{\"SYS_GETLCID\", Const, 0, \"\"},\n\t\t{\"SYS_GETLOGIN\", Const, 0, \"\"},\n\t\t{\"SYS_GETLOGINCLASS\", Const, 0, \"\"},\n\t\t{\"SYS_GETPEERNAME\", Const, 0, \"\"},\n\t\t{\"SYS_GETPGID\", Const, 0, \"\"},\n\t\t{\"SYS_GETPGRP\", Const, 0, \"\"},\n\t\t{\"SYS_GETPID\", Const, 0, \"\"},\n\t\t{\"SYS_GETPMSG\", Const, 0, \"\"},\n\t\t{\"SYS_GETPPID\", Const, 0, \"\"},\n\t\t{\"SYS_GETPRIORITY\", Const, 0, \"\"},\n\t\t{\"SYS_GETRESGID\", Const, 0, \"\"},\n\t\t{\"SYS_GETRESGID32\", Const, 0, \"\"},\n\t\t{\"SYS_GETRESUID\", Const, 0, \"\"},\n\t\t{\"SYS_GETRESUID32\", Const, 0, \"\"},\n\t\t{\"SYS_GETRLIMIT\", Const, 0, \"\"},\n\t\t{\"SYS_GETRTABLE\", Const, 1, \"\"},\n\t\t{\"SYS_GETRUSAGE\", Const, 0, \"\"},\n\t\t{\"SYS_GETSGROUPS\", Const, 0, \"\"},\n\t\t{\"SYS_GETSID\", Const, 0, \"\"},\n\t\t{\"SYS_GETSOCKNAME\", Const, 0, \"\"},\n\t\t{\"SYS_GETSOCKOPT\", Const, 0, \"\"},\n\t\t{\"SYS_GETTHRID\", Const, 1, \"\"},\n\t\t{\"SYS_GETTID\", Const, 0, \"\"},\n\t\t{\"SYS_GETTIMEOFDAY\", Const, 0, \"\"},\n\t\t{\"SYS_GETUID\", Const, 0, \"\"},\n\t\t{\"SYS_GETUID32\", Const, 0, \"\"},\n\t\t{\"SYS_GETVFSSTAT\", Const, 1, \"\"},\n\t\t{\"SYS_GETWGROUPS\", Const, 0, \"\"},\n\t\t{\"SYS_GETXATTR\", Const, 0, \"\"},\n\t\t{\"SYS_GET_KERNEL_SYMS\", Const, 0, \"\"},\n\t\t{\"SYS_GET_MEMPOLICY\", Const, 0, \"\"},\n\t\t{\"SYS_GET_ROBUST_LIST\", Const, 0, \"\"},\n\t\t{\"SYS_GET_THREAD_AREA\", Const, 0, \"\"},\n\t\t{\"SYS_GSSD_SYSCALL\", Const, 14, \"\"},\n\t\t{\"SYS_GTTY\", Const, 0, \"\"},\n\t\t{\"SYS_IDENTITYSVC\", Const, 0, \"\"},\n\t\t{\"SYS_IDLE\", Const, 0, \"\"},\n\t\t{\"SYS_INITGROUPS\", Const, 0, \"\"},\n\t\t{\"SYS_INIT_MODULE\", Const, 0, \"\"},\n\t\t{\"SYS_INOTIFY_ADD_WATCH\", Const, 0, \"\"},\n\t\t{\"SYS_INOTIFY_INIT\", Const, 0, \"\"},\n\t\t{\"SYS_INOTIFY_INIT1\", Const, 0, \"\"},\n\t\t{\"SYS_INOTIFY_RM_WATCH\", Const, 0, \"\"},\n\t\t{\"SYS_IOCTL\", Const, 0, \"\"},\n\t\t{\"SYS_IOPERM\", Const, 0, \"\"},\n\t\t{\"SYS_IOPL\", Const, 0, \"\"},\n\t\t{\"SYS_IOPOLICYSYS\", Const, 0, \"\"},\n\t\t{\"SYS_IOPRIO_GET\", Const, 0, \"\"},\n\t\t{\"SYS_IOPRIO_SET\", Const, 0, \"\"},\n\t\t{\"SYS_IO_CANCEL\", Const, 0, \"\"},\n\t\t{\"SYS_IO_DESTROY\", Const, 0, \"\"},\n\t\t{\"SYS_IO_GETEVENTS\", Const, 0, \"\"},\n\t\t{\"SYS_IO_SETUP\", Const, 0, \"\"},\n\t\t{\"SYS_IO_SUBMIT\", Const, 0, \"\"},\n\t\t{\"SYS_IPC\", Const, 0, \"\"},\n\t\t{\"SYS_ISSETUGID\", Const, 0, \"\"},\n\t\t{\"SYS_JAIL\", Const, 0, \"\"},\n\t\t{\"SYS_JAIL_ATTACH\", Const, 0, \"\"},\n\t\t{\"SYS_JAIL_GET\", Const, 0, \"\"},\n\t\t{\"SYS_JAIL_REMOVE\", Const, 0, \"\"},\n\t\t{\"SYS_JAIL_SET\", Const, 0, \"\"},\n\t\t{\"SYS_KAS_INFO\", Const, 16, \"\"},\n\t\t{\"SYS_KDEBUG_TRACE\", Const, 0, \"\"},\n\t\t{\"SYS_KENV\", Const, 0, \"\"},\n\t\t{\"SYS_KEVENT\", Const, 0, \"\"},\n\t\t{\"SYS_KEVENT64\", Const, 0, \"\"},\n\t\t{\"SYS_KEXEC_LOAD\", Const, 0, \"\"},\n\t\t{\"SYS_KEYCTL\", Const, 0, \"\"},\n\t\t{\"SYS_KILL\", Const, 0, \"\"},\n\t\t{\"SYS_KLDFIND\", Const, 0, \"\"},\n\t\t{\"SYS_KLDFIRSTMOD\", Const, 0, \"\"},\n\t\t{\"SYS_KLDLOAD\", Const, 0, \"\"},\n\t\t{\"SYS_KLDNEXT\", Const, 0, \"\"},\n\t\t{\"SYS_KLDSTAT\", Const, 0, \"\"},\n\t\t{\"SYS_KLDSYM\", Const, 0, \"\"},\n\t\t{\"SYS_KLDUNLOAD\", Const, 0, \"\"},\n\t\t{\"SYS_KLDUNLOADF\", Const, 0, \"\"},\n\t\t{\"SYS_KMQ_NOTIFY\", Const, 14, \"\"},\n\t\t{\"SYS_KMQ_OPEN\", Const, 14, \"\"},\n\t\t{\"SYS_KMQ_SETATTR\", Const, 14, \"\"},\n\t\t{\"SYS_KMQ_TIMEDRECEIVE\", Const, 14, \"\"},\n\t\t{\"SYS_KMQ_TIMEDSEND\", Const, 14, \"\"},\n\t\t{\"SYS_KMQ_UNLINK\", Const, 14, \"\"},\n\t\t{\"SYS_KQUEUE\", Const, 0, \"\"},\n\t\t{\"SYS_KQUEUE1\", Const, 1, \"\"},\n\t\t{\"SYS_KSEM_CLOSE\", Const, 14, \"\"},\n\t\t{\"SYS_KSEM_DESTROY\", Const, 14, \"\"},\n\t\t{\"SYS_KSEM_GETVALUE\", Const, 14, \"\"},\n\t\t{\"SYS_KSEM_INIT\", Const, 14, \"\"},\n\t\t{\"SYS_KSEM_OPEN\", Const, 14, \"\"},\n\t\t{\"SYS_KSEM_POST\", Const, 14, \"\"},\n\t\t{\"SYS_KSEM_TIMEDWAIT\", Const, 14, \"\"},\n\t\t{\"SYS_KSEM_TRYWAIT\", Const, 14, \"\"},\n\t\t{\"SYS_KSEM_UNLINK\", Const, 14, \"\"},\n\t\t{\"SYS_KSEM_WAIT\", Const, 14, \"\"},\n\t\t{\"SYS_KTIMER_CREATE\", Const, 0, \"\"},\n\t\t{\"SYS_KTIMER_DELETE\", Const, 0, \"\"},\n\t\t{\"SYS_KTIMER_GETOVERRUN\", Const, 0, \"\"},\n\t\t{\"SYS_KTIMER_GETTIME\", Const, 0, \"\"},\n\t\t{\"SYS_KTIMER_SETTIME\", Const, 0, \"\"},\n\t\t{\"SYS_KTRACE\", Const, 0, \"\"},\n\t\t{\"SYS_LCHFLAGS\", Const, 0, \"\"},\n\t\t{\"SYS_LCHMOD\", Const, 0, \"\"},\n\t\t{\"SYS_LCHOWN\", Const, 0, \"\"},\n\t\t{\"SYS_LCHOWN32\", Const, 0, \"\"},\n\t\t{\"SYS_LEDGER\", Const, 16, \"\"},\n\t\t{\"SYS_LGETFH\", Const, 0, \"\"},\n\t\t{\"SYS_LGETXATTR\", Const, 0, \"\"},\n\t\t{\"SYS_LINK\", Const, 0, \"\"},\n\t\t{\"SYS_LINKAT\", Const, 0, \"\"},\n\t\t{\"SYS_LIO_LISTIO\", Const, 0, \"\"},\n\t\t{\"SYS_LISTEN\", Const, 0, \"\"},\n\t\t{\"SYS_LISTXATTR\", Const, 0, \"\"},\n\t\t{\"SYS_LLISTXATTR\", Const, 0, \"\"},\n\t\t{\"SYS_LOCK\", Const, 0, \"\"},\n\t\t{\"SYS_LOOKUP_DCOOKIE\", Const, 0, \"\"},\n\t\t{\"SYS_LPATHCONF\", Const, 0, \"\"},\n\t\t{\"SYS_LREMOVEXATTR\", Const, 0, \"\"},\n\t\t{\"SYS_LSEEK\", Const, 0, \"\"},\n\t\t{\"SYS_LSETXATTR\", Const, 0, \"\"},\n\t\t{\"SYS_LSTAT\", Const, 0, \"\"},\n\t\t{\"SYS_LSTAT64\", Const, 0, \"\"},\n\t\t{\"SYS_LSTAT64_EXTENDED\", Const, 0, \"\"},\n\t\t{\"SYS_LSTATV\", Const, 0, \"\"},\n\t\t{\"SYS_LSTAT_EXTENDED\", Const, 0, \"\"},\n\t\t{\"SYS_LUTIMES\", Const, 0, \"\"},\n\t\t{\"SYS_MAC_SYSCALL\", Const, 0, \"\"},\n\t\t{\"SYS_MADVISE\", Const, 0, \"\"},\n\t\t{\"SYS_MADVISE1\", Const, 0, \"\"},\n\t\t{\"SYS_MAXSYSCALL\", Const, 0, \"\"},\n\t\t{\"SYS_MBIND\", Const, 0, \"\"},\n\t\t{\"SYS_MIGRATE_PAGES\", Const, 0, \"\"},\n\t\t{\"SYS_MINCORE\", Const, 0, \"\"},\n\t\t{\"SYS_MINHERIT\", Const, 0, \"\"},\n\t\t{\"SYS_MKCOMPLEX\", Const, 0, \"\"},\n\t\t{\"SYS_MKDIR\", Const, 0, \"\"},\n\t\t{\"SYS_MKDIRAT\", Const, 0, \"\"},\n\t\t{\"SYS_MKDIR_EXTENDED\", Const, 0, \"\"},\n\t\t{\"SYS_MKFIFO\", Const, 0, \"\"},\n\t\t{\"SYS_MKFIFOAT\", Const, 0, \"\"},\n\t\t{\"SYS_MKFIFO_EXTENDED\", Const, 0, \"\"},\n\t\t{\"SYS_MKNOD\", Const, 0, \"\"},\n\t\t{\"SYS_MKNODAT\", Const, 0, \"\"},\n\t\t{\"SYS_MLOCK\", Const, 0, \"\"},\n\t\t{\"SYS_MLOCKALL\", Const, 0, \"\"},\n\t\t{\"SYS_MMAP\", Const, 0, \"\"},\n\t\t{\"SYS_MMAP2\", Const, 0, \"\"},\n\t\t{\"SYS_MODCTL\", Const, 1, \"\"},\n\t\t{\"SYS_MODFIND\", Const, 0, \"\"},\n\t\t{\"SYS_MODFNEXT\", Const, 0, \"\"},\n\t\t{\"SYS_MODIFY_LDT\", Const, 0, \"\"},\n\t\t{\"SYS_MODNEXT\", Const, 0, \"\"},\n\t\t{\"SYS_MODSTAT\", Const, 0, \"\"},\n\t\t{\"SYS_MODWATCH\", Const, 0, \"\"},\n\t\t{\"SYS_MOUNT\", Const, 0, \"\"},\n\t\t{\"SYS_MOVE_PAGES\", Const, 0, \"\"},\n\t\t{\"SYS_MPROTECT\", Const, 0, \"\"},\n\t\t{\"SYS_MPX\", Const, 0, \"\"},\n\t\t{\"SYS_MQUERY\", Const, 1, \"\"},\n\t\t{\"SYS_MQ_GETSETATTR\", Const, 0, \"\"},\n\t\t{\"SYS_MQ_NOTIFY\", Const, 0, \"\"},\n\t\t{\"SYS_MQ_OPEN\", Const, 0, \"\"},\n\t\t{\"SYS_MQ_TIMEDRECEIVE\", Const, 0, \"\"},\n\t\t{\"SYS_MQ_TIMEDSEND\", Const, 0, \"\"},\n\t\t{\"SYS_MQ_UNLINK\", Const, 0, \"\"},\n\t\t{\"SYS_MREMAP\", Const, 0, \"\"},\n\t\t{\"SYS_MSGCTL\", Const, 0, \"\"},\n\t\t{\"SYS_MSGGET\", Const, 0, \"\"},\n\t\t{\"SYS_MSGRCV\", Const, 0, \"\"},\n\t\t{\"SYS_MSGRCV_NOCANCEL\", Const, 0, \"\"},\n\t\t{\"SYS_MSGSND\", Const, 0, \"\"},\n\t\t{\"SYS_MSGSND_NOCANCEL\", Const, 0, \"\"},\n\t\t{\"SYS_MSGSYS\", Const, 0, \"\"},\n\t\t{\"SYS_MSYNC\", Const, 0, \"\"},\n\t\t{\"SYS_MSYNC_NOCANCEL\", Const, 0, \"\"},\n\t\t{\"SYS_MUNLOCK\", Const, 0, \"\"},\n\t\t{\"SYS_MUNLOCKALL\", Const, 0, \"\"},\n\t\t{\"SYS_MUNMAP\", Const, 0, \"\"},\n\t\t{\"SYS_NAME_TO_HANDLE_AT\", Const, 0, \"\"},\n\t\t{\"SYS_NANOSLEEP\", Const, 0, \"\"},\n\t\t{\"SYS_NEWFSTATAT\", Const, 0, \"\"},\n\t\t{\"SYS_NFSCLNT\", Const, 0, \"\"},\n\t\t{\"SYS_NFSSERVCTL\", Const, 0, \"\"},\n\t\t{\"SYS_NFSSVC\", Const, 0, \"\"},\n\t\t{\"SYS_NFSTAT\", Const, 0, \"\"},\n\t\t{\"SYS_NICE\", Const, 0, \"\"},\n\t\t{\"SYS_NLM_SYSCALL\", Const, 14, \"\"},\n\t\t{\"SYS_NLSTAT\", Const, 0, \"\"},\n\t\t{\"SYS_NMOUNT\", Const, 0, \"\"},\n\t\t{\"SYS_NSTAT\", Const, 0, \"\"},\n\t\t{\"SYS_NTP_ADJTIME\", Const, 0, \"\"},\n\t\t{\"SYS_NTP_GETTIME\", Const, 0, \"\"},\n\t\t{\"SYS_NUMA_GETAFFINITY\", Const, 14, \"\"},\n\t\t{\"SYS_NUMA_SETAFFINITY\", Const, 14, \"\"},\n\t\t{\"SYS_OABI_SYSCALL_BASE\", Const, 0, \"\"},\n\t\t{\"SYS_OBREAK\", Const, 0, \"\"},\n\t\t{\"SYS_OLDFSTAT\", Const, 0, \"\"},\n\t\t{\"SYS_OLDLSTAT\", Const, 0, \"\"},\n\t\t{\"SYS_OLDOLDUNAME\", Const, 0, \"\"},\n\t\t{\"SYS_OLDSTAT\", Const, 0, \"\"},\n\t\t{\"SYS_OLDUNAME\", Const, 0, \"\"},\n\t\t{\"SYS_OPEN\", Const, 0, \"\"},\n\t\t{\"SYS_OPENAT\", Const, 0, \"\"},\n\t\t{\"SYS_OPENBSD_POLL\", Const, 0, \"\"},\n\t\t{\"SYS_OPEN_BY_HANDLE_AT\", Const, 0, \"\"},\n\t\t{\"SYS_OPEN_DPROTECTED_NP\", Const, 16, \"\"},\n\t\t{\"SYS_OPEN_EXTENDED\", Const, 0, \"\"},\n\t\t{\"SYS_OPEN_NOCANCEL\", Const, 0, \"\"},\n\t\t{\"SYS_OVADVISE\", Const, 0, \"\"},\n\t\t{\"SYS_PACCEPT\", Const, 1, \"\"},\n\t\t{\"SYS_PATHCONF\", Const, 0, \"\"},\n\t\t{\"SYS_PAUSE\", Const, 0, \"\"},\n\t\t{\"SYS_PCICONFIG_IOBASE\", Const, 0, \"\"},\n\t\t{\"SYS_PCICONFIG_READ\", Const, 0, \"\"},\n\t\t{\"SYS_PCICONFIG_WRITE\", Const, 0, \"\"},\n\t\t{\"SYS_PDFORK\", Const, 0, \"\"},\n\t\t{\"SYS_PDGETPID\", Const, 0, \"\"},\n\t\t{\"SYS_PDKILL\", Const, 0, \"\"},\n\t\t{\"SYS_PERF_EVENT_OPEN\", Const, 0, \"\"},\n\t\t{\"SYS_PERSONALITY\", Const, 0, \"\"},\n\t\t{\"SYS_PID_HIBERNATE\", Const, 0, \"\"},\n\t\t{\"SYS_PID_RESUME\", Const, 0, \"\"},\n\t\t{\"SYS_PID_SHUTDOWN_SOCKETS\", Const, 0, \"\"},\n\t\t{\"SYS_PID_SUSPEND\", Const, 0, \"\"},\n\t\t{\"SYS_PIPE\", Const, 0, \"\"},\n\t\t{\"SYS_PIPE2\", Const, 0, \"\"},\n\t\t{\"SYS_PIVOT_ROOT\", Const, 0, \"\"},\n\t\t{\"SYS_PMC_CONTROL\", Const, 1, \"\"},\n\t\t{\"SYS_PMC_GET_INFO\", Const, 1, \"\"},\n\t\t{\"SYS_POLL\", Const, 0, \"\"},\n\t\t{\"SYS_POLLTS\", Const, 1, \"\"},\n\t\t{\"SYS_POLL_NOCANCEL\", Const, 0, \"\"},\n\t\t{\"SYS_POSIX_FADVISE\", Const, 0, \"\"},\n\t\t{\"SYS_POSIX_FALLOCATE\", Const, 0, \"\"},\n\t\t{\"SYS_POSIX_OPENPT\", Const, 0, \"\"},\n\t\t{\"SYS_POSIX_SPAWN\", Const, 0, \"\"},\n\t\t{\"SYS_PPOLL\", Const, 0, \"\"},\n\t\t{\"SYS_PRCTL\", Const, 0, \"\"},\n\t\t{\"SYS_PREAD\", Const, 0, \"\"},\n\t\t{\"SYS_PREAD64\", Const, 0, \"\"},\n\t\t{\"SYS_PREADV\", Const, 0, \"\"},\n\t\t{\"SYS_PREAD_NOCANCEL\", Const, 0, \"\"},\n\t\t{\"SYS_PRLIMIT64\", Const, 0, \"\"},\n\t\t{\"SYS_PROCCTL\", Const, 3, \"\"},\n\t\t{\"SYS_PROCESS_POLICY\", Const, 0, \"\"},\n\t\t{\"SYS_PROCESS_VM_READV\", Const, 0, \"\"},\n\t\t{\"SYS_PROCESS_VM_WRITEV\", Const, 0, \"\"},\n\t\t{\"SYS_PROC_INFO\", Const, 0, \"\"},\n\t\t{\"SYS_PROF\", Const, 0, \"\"},\n\t\t{\"SYS_PROFIL\", Const, 0, \"\"},\n\t\t{\"SYS_PSELECT\", Const, 0, \"\"},\n\t\t{\"SYS_PSELECT6\", Const, 0, \"\"},\n\t\t{\"SYS_PSET_ASSIGN\", Const, 1, \"\"},\n\t\t{\"SYS_PSET_CREATE\", Const, 1, \"\"},\n\t\t{\"SYS_PSET_DESTROY\", Const, 1, \"\"},\n\t\t{\"SYS_PSYNCH_CVBROAD\", Const, 0, \"\"},\n\t\t{\"SYS_PSYNCH_CVCLRPREPOST\", Const, 0, \"\"},\n\t\t{\"SYS_PSYNCH_CVSIGNAL\", Const, 0, \"\"},\n\t\t{\"SYS_PSYNCH_CVWAIT\", Const, 0, \"\"},\n\t\t{\"SYS_PSYNCH_MUTEXDROP\", Const, 0, \"\"},\n\t\t{\"SYS_PSYNCH_MUTEXWAIT\", Const, 0, \"\"},\n\t\t{\"SYS_PSYNCH_RW_DOWNGRADE\", Const, 0, \"\"},\n\t\t{\"SYS_PSYNCH_RW_LONGRDLOCK\", Const, 0, \"\"},\n\t\t{\"SYS_PSYNCH_RW_RDLOCK\", Const, 0, \"\"},\n\t\t{\"SYS_PSYNCH_RW_UNLOCK\", Const, 0, \"\"},\n\t\t{\"SYS_PSYNCH_RW_UNLOCK2\", Const, 0, \"\"},\n\t\t{\"SYS_PSYNCH_RW_UPGRADE\", Const, 0, \"\"},\n\t\t{\"SYS_PSYNCH_RW_WRLOCK\", Const, 0, \"\"},\n\t\t{\"SYS_PSYNCH_RW_YIELDWRLOCK\", Const, 0, \"\"},\n\t\t{\"SYS_PTRACE\", Const, 0, \"\"},\n\t\t{\"SYS_PUTPMSG\", Const, 0, \"\"},\n\t\t{\"SYS_PWRITE\", Const, 0, \"\"},\n\t\t{\"SYS_PWRITE64\", Const, 0, \"\"},\n\t\t{\"SYS_PWRITEV\", Const, 0, \"\"},\n\t\t{\"SYS_PWRITE_NOCANCEL\", Const, 0, \"\"},\n\t\t{\"SYS_QUERY_MODULE\", Const, 0, \"\"},\n\t\t{\"SYS_QUOTACTL\", Const, 0, \"\"},\n\t\t{\"SYS_RASCTL\", Const, 1, \"\"},\n\t\t{\"SYS_RCTL_ADD_RULE\", Const, 0, \"\"},\n\t\t{\"SYS_RCTL_GET_LIMITS\", Const, 0, \"\"},\n\t\t{\"SYS_RCTL_GET_RACCT\", Const, 0, \"\"},\n\t\t{\"SYS_RCTL_GET_RULES\", Const, 0, \"\"},\n\t\t{\"SYS_RCTL_REMOVE_RULE\", Const, 0, \"\"},\n\t\t{\"SYS_READ\", Const, 0, \"\"},\n\t\t{\"SYS_READAHEAD\", Const, 0, \"\"},\n\t\t{\"SYS_READDIR\", Const, 0, \"\"},\n\t\t{\"SYS_READLINK\", Const, 0, \"\"},\n\t\t{\"SYS_READLINKAT\", Const, 0, \"\"},\n\t\t{\"SYS_READV\", Const, 0, \"\"},\n\t\t{\"SYS_READV_NOCANCEL\", Const, 0, \"\"},\n\t\t{\"SYS_READ_NOCANCEL\", Const, 0, \"\"},\n\t\t{\"SYS_REBOOT\", Const, 0, \"\"},\n\t\t{\"SYS_RECV\", Const, 0, \"\"},\n\t\t{\"SYS_RECVFROM\", Const, 0, \"\"},\n\t\t{\"SYS_RECVFROM_NOCANCEL\", Const, 0, \"\"},\n\t\t{\"SYS_RECVMMSG\", Const, 0, \"\"},\n\t\t{\"SYS_RECVMSG\", Const, 0, \"\"},\n\t\t{\"SYS_RECVMSG_NOCANCEL\", Const, 0, \"\"},\n\t\t{\"SYS_REMAP_FILE_PAGES\", Const, 0, \"\"},\n\t\t{\"SYS_REMOVEXATTR\", Const, 0, \"\"},\n\t\t{\"SYS_RENAME\", Const, 0, \"\"},\n\t\t{\"SYS_RENAMEAT\", Const, 0, \"\"},\n\t\t{\"SYS_REQUEST_KEY\", Const, 0, \"\"},\n\t\t{\"SYS_RESTART_SYSCALL\", Const, 0, \"\"},\n\t\t{\"SYS_REVOKE\", Const, 0, \"\"},\n\t\t{\"SYS_RFORK\", Const, 0, \"\"},\n\t\t{\"SYS_RMDIR\", Const, 0, \"\"},\n\t\t{\"SYS_RTPRIO\", Const, 0, \"\"},\n\t\t{\"SYS_RTPRIO_THREAD\", Const, 0, \"\"},\n\t\t{\"SYS_RT_SIGACTION\", Const, 0, \"\"},\n\t\t{\"SYS_RT_SIGPENDING\", Const, 0, \"\"},\n\t\t{\"SYS_RT_SIGPROCMASK\", Const, 0, \"\"},\n\t\t{\"SYS_RT_SIGQUEUEINFO\", Const, 0, \"\"},\n\t\t{\"SYS_RT_SIGRETURN\", Const, 0, \"\"},\n\t\t{\"SYS_RT_SIGSUSPEND\", Const, 0, \"\"},\n\t\t{\"SYS_RT_SIGTIMEDWAIT\", Const, 0, \"\"},\n\t\t{\"SYS_RT_TGSIGQUEUEINFO\", Const, 0, \"\"},\n\t\t{\"SYS_SBRK\", Const, 0, \"\"},\n\t\t{\"SYS_SCHED_GETAFFINITY\", Const, 0, \"\"},\n\t\t{\"SYS_SCHED_GETPARAM\", Const, 0, \"\"},\n\t\t{\"SYS_SCHED_GETSCHEDULER\", Const, 0, \"\"},\n\t\t{\"SYS_SCHED_GET_PRIORITY_MAX\", Const, 0, \"\"},\n\t\t{\"SYS_SCHED_GET_PRIORITY_MIN\", Const, 0, \"\"},\n\t\t{\"SYS_SCHED_RR_GET_INTERVAL\", Const, 0, \"\"},\n\t\t{\"SYS_SCHED_SETAFFINITY\", Const, 0, \"\"},\n\t\t{\"SYS_SCHED_SETPARAM\", Const, 0, \"\"},\n\t\t{\"SYS_SCHED_SETSCHEDULER\", Const, 0, \"\"},\n\t\t{\"SYS_SCHED_YIELD\", Const, 0, \"\"},\n\t\t{\"SYS_SCTP_GENERIC_RECVMSG\", Const, 0, \"\"},\n\t\t{\"SYS_SCTP_GENERIC_SENDMSG\", Const, 0, \"\"},\n\t\t{\"SYS_SCTP_GENERIC_SENDMSG_IOV\", Const, 0, \"\"},\n\t\t{\"SYS_SCTP_PEELOFF\", Const, 0, \"\"},\n\t\t{\"SYS_SEARCHFS\", Const, 0, \"\"},\n\t\t{\"SYS_SECURITY\", Const, 0, \"\"},\n\t\t{\"SYS_SELECT\", Const, 0, \"\"},\n\t\t{\"SYS_SELECT_NOCANCEL\", Const, 0, \"\"},\n\t\t{\"SYS_SEMCONFIG\", Const, 1, \"\"},\n\t\t{\"SYS_SEMCTL\", Const, 0, \"\"},\n\t\t{\"SYS_SEMGET\", Const, 0, \"\"},\n\t\t{\"SYS_SEMOP\", Const, 0, \"\"},\n\t\t{\"SYS_SEMSYS\", Const, 0, \"\"},\n\t\t{\"SYS_SEMTIMEDOP\", Const, 0, \"\"},\n\t\t{\"SYS_SEM_CLOSE\", Const, 0, \"\"},\n\t\t{\"SYS_SEM_DESTROY\", Const, 0, \"\"},\n\t\t{\"SYS_SEM_GETVALUE\", Const, 0, \"\"},\n\t\t{\"SYS_SEM_INIT\", Const, 0, \"\"},\n\t\t{\"SYS_SEM_OPEN\", Const, 0, \"\"},\n\t\t{\"SYS_SEM_POST\", Const, 0, \"\"},\n\t\t{\"SYS_SEM_TRYWAIT\", Const, 0, \"\"},\n\t\t{\"SYS_SEM_UNLINK\", Const, 0, \"\"},\n\t\t{\"SYS_SEM_WAIT\", Const, 0, \"\"},\n\t\t{\"SYS_SEM_WAIT_NOCANCEL\", Const, 0, \"\"},\n\t\t{\"SYS_SEND\", Const, 0, \"\"},\n\t\t{\"SYS_SENDFILE\", Const, 0, \"\"},\n\t\t{\"SYS_SENDFILE64\", Const, 0, \"\"},\n\t\t{\"SYS_SENDMMSG\", Const, 0, \"\"},\n\t\t{\"SYS_SENDMSG\", Const, 0, \"\"},\n\t\t{\"SYS_SENDMSG_NOCANCEL\", Const, 0, \"\"},\n\t\t{\"SYS_SENDTO\", Const, 0, \"\"},\n\t\t{\"SYS_SENDTO_NOCANCEL\", Const, 0, \"\"},\n\t\t{\"SYS_SETATTRLIST\", Const, 0, \"\"},\n\t\t{\"SYS_SETAUDIT\", Const, 0, \"\"},\n\t\t{\"SYS_SETAUDIT_ADDR\", Const, 0, \"\"},\n\t\t{\"SYS_SETAUID\", Const, 0, \"\"},\n\t\t{\"SYS_SETCONTEXT\", Const, 0, \"\"},\n\t\t{\"SYS_SETDOMAINNAME\", Const, 0, \"\"},\n\t\t{\"SYS_SETEGID\", Const, 0, \"\"},\n\t\t{\"SYS_SETEUID\", Const, 0, \"\"},\n\t\t{\"SYS_SETFIB\", Const, 0, \"\"},\n\t\t{\"SYS_SETFSGID\", Const, 0, \"\"},\n\t\t{\"SYS_SETFSGID32\", Const, 0, \"\"},\n\t\t{\"SYS_SETFSUID\", Const, 0, \"\"},\n\t\t{\"SYS_SETFSUID32\", Const, 0, \"\"},\n\t\t{\"SYS_SETGID\", Const, 0, \"\"},\n\t\t{\"SYS_SETGID32\", Const, 0, \"\"},\n\t\t{\"SYS_SETGROUPS\", Const, 0, \"\"},\n\t\t{\"SYS_SETGROUPS32\", Const, 0, \"\"},\n\t\t{\"SYS_SETHOSTNAME\", Const, 0, \"\"},\n\t\t{\"SYS_SETITIMER\", Const, 0, \"\"},\n\t\t{\"SYS_SETLCID\", Const, 0, \"\"},\n\t\t{\"SYS_SETLOGIN\", Const, 0, \"\"},\n\t\t{\"SYS_SETLOGINCLASS\", Const, 0, \"\"},\n\t\t{\"SYS_SETNS\", Const, 0, \"\"},\n\t\t{\"SYS_SETPGID\", Const, 0, \"\"},\n\t\t{\"SYS_SETPRIORITY\", Const, 0, \"\"},\n\t\t{\"SYS_SETPRIVEXEC\", Const, 0, \"\"},\n\t\t{\"SYS_SETREGID\", Const, 0, \"\"},\n\t\t{\"SYS_SETREGID32\", Const, 0, \"\"},\n\t\t{\"SYS_SETRESGID\", Const, 0, \"\"},\n\t\t{\"SYS_SETRESGID32\", Const, 0, \"\"},\n\t\t{\"SYS_SETRESUID\", Const, 0, \"\"},\n\t\t{\"SYS_SETRESUID32\", Const, 0, \"\"},\n\t\t{\"SYS_SETREUID\", Const, 0, \"\"},\n\t\t{\"SYS_SETREUID32\", Const, 0, \"\"},\n\t\t{\"SYS_SETRLIMIT\", Const, 0, \"\"},\n\t\t{\"SYS_SETRTABLE\", Const, 1, \"\"},\n\t\t{\"SYS_SETSGROUPS\", Const, 0, \"\"},\n\t\t{\"SYS_SETSID\", Const, 0, \"\"},\n\t\t{\"SYS_SETSOCKOPT\", Const, 0, \"\"},\n\t\t{\"SYS_SETTID\", Const, 0, \"\"},\n\t\t{\"SYS_SETTID_WITH_PID\", Const, 0, \"\"},\n\t\t{\"SYS_SETTIMEOFDAY\", Const, 0, \"\"},\n\t\t{\"SYS_SETUID\", Const, 0, \"\"},\n\t\t{\"SYS_SETUID32\", Const, 0, \"\"},\n\t\t{\"SYS_SETWGROUPS\", Const, 0, \"\"},\n\t\t{\"SYS_SETXATTR\", Const, 0, \"\"},\n\t\t{\"SYS_SET_MEMPOLICY\", Const, 0, \"\"},\n\t\t{\"SYS_SET_ROBUST_LIST\", Const, 0, \"\"},\n\t\t{\"SYS_SET_THREAD_AREA\", Const, 0, \"\"},\n\t\t{\"SYS_SET_TID_ADDRESS\", Const, 0, \"\"},\n\t\t{\"SYS_SGETMASK\", Const, 0, \"\"},\n\t\t{\"SYS_SHARED_REGION_CHECK_NP\", Const, 0, \"\"},\n\t\t{\"SYS_SHARED_REGION_MAP_AND_SLIDE_NP\", Const, 0, \"\"},\n\t\t{\"SYS_SHMAT\", Const, 0, \"\"},\n\t\t{\"SYS_SHMCTL\", Const, 0, \"\"},\n\t\t{\"SYS_SHMDT\", Const, 0, \"\"},\n\t\t{\"SYS_SHMGET\", Const, 0, \"\"},\n\t\t{\"SYS_SHMSYS\", Const, 0, \"\"},\n\t\t{\"SYS_SHM_OPEN\", Const, 0, \"\"},\n\t\t{\"SYS_SHM_UNLINK\", Const, 0, \"\"},\n\t\t{\"SYS_SHUTDOWN\", Const, 0, \"\"},\n\t\t{\"SYS_SIGACTION\", Const, 0, \"\"},\n\t\t{\"SYS_SIGALTSTACK\", Const, 0, \"\"},\n\t\t{\"SYS_SIGNAL\", Const, 0, \"\"},\n\t\t{\"SYS_SIGNALFD\", Const, 0, \"\"},\n\t\t{\"SYS_SIGNALFD4\", Const, 0, \"\"},\n\t\t{\"SYS_SIGPENDING\", Const, 0, \"\"},\n\t\t{\"SYS_SIGPROCMASK\", Const, 0, \"\"},\n\t\t{\"SYS_SIGQUEUE\", Const, 0, \"\"},\n\t\t{\"SYS_SIGQUEUEINFO\", Const, 1, \"\"},\n\t\t{\"SYS_SIGRETURN\", Const, 0, \"\"},\n\t\t{\"SYS_SIGSUSPEND\", Const, 0, \"\"},\n\t\t{\"SYS_SIGSUSPEND_NOCANCEL\", Const, 0, \"\"},\n\t\t{\"SYS_SIGTIMEDWAIT\", Const, 0, \"\"},\n\t\t{\"SYS_SIGWAIT\", Const, 0, \"\"},\n\t\t{\"SYS_SIGWAITINFO\", Const, 0, \"\"},\n\t\t{\"SYS_SOCKET\", Const, 0, \"\"},\n\t\t{\"SYS_SOCKETCALL\", Const, 0, \"\"},\n\t\t{\"SYS_SOCKETPAIR\", Const, 0, \"\"},\n\t\t{\"SYS_SPLICE\", Const, 0, \"\"},\n\t\t{\"SYS_SSETMASK\", Const, 0, \"\"},\n\t\t{\"SYS_SSTK\", Const, 0, \"\"},\n\t\t{\"SYS_STACK_SNAPSHOT\", Const, 0, \"\"},\n\t\t{\"SYS_STAT\", Const, 0, \"\"},\n\t\t{\"SYS_STAT64\", Const, 0, \"\"},\n\t\t{\"SYS_STAT64_EXTENDED\", Const, 0, \"\"},\n\t\t{\"SYS_STATFS\", Const, 0, \"\"},\n\t\t{\"SYS_STATFS64\", Const, 0, \"\"},\n\t\t{\"SYS_STATV\", Const, 0, \"\"},\n\t\t{\"SYS_STATVFS1\", Const, 1, \"\"},\n\t\t{\"SYS_STAT_EXTENDED\", Const, 0, \"\"},\n\t\t{\"SYS_STIME\", Const, 0, \"\"},\n\t\t{\"SYS_STTY\", Const, 0, \"\"},\n\t\t{\"SYS_SWAPCONTEXT\", Const, 0, \"\"},\n\t\t{\"SYS_SWAPCTL\", Const, 1, \"\"},\n\t\t{\"SYS_SWAPOFF\", Const, 0, \"\"},\n\t\t{\"SYS_SWAPON\", Const, 0, \"\"},\n\t\t{\"SYS_SYMLINK\", Const, 0, \"\"},\n\t\t{\"SYS_SYMLINKAT\", Const, 0, \"\"},\n\t\t{\"SYS_SYNC\", Const, 0, \"\"},\n\t\t{\"SYS_SYNCFS\", Const, 0, \"\"},\n\t\t{\"SYS_SYNC_FILE_RANGE\", Const, 0, \"\"},\n\t\t{\"SYS_SYSARCH\", Const, 0, \"\"},\n\t\t{\"SYS_SYSCALL\", Const, 0, \"\"},\n\t\t{\"SYS_SYSCALL_BASE\", Const, 0, \"\"},\n\t\t{\"SYS_SYSFS\", Const, 0, \"\"},\n\t\t{\"SYS_SYSINFO\", Const, 0, \"\"},\n\t\t{\"SYS_SYSLOG\", Const, 0, \"\"},\n\t\t{\"SYS_TEE\", Const, 0, \"\"},\n\t\t{\"SYS_TGKILL\", Const, 0, \"\"},\n\t\t{\"SYS_THREAD_SELFID\", Const, 0, \"\"},\n\t\t{\"SYS_THR_CREATE\", Const, 0, \"\"},\n\t\t{\"SYS_THR_EXIT\", Const, 0, \"\"},\n\t\t{\"SYS_THR_KILL\", Const, 0, \"\"},\n\t\t{\"SYS_THR_KILL2\", Const, 0, \"\"},\n\t\t{\"SYS_THR_NEW\", Const, 0, \"\"},\n\t\t{\"SYS_THR_SELF\", Const, 0, \"\"},\n\t\t{\"SYS_THR_SET_NAME\", Const, 0, \"\"},\n\t\t{\"SYS_THR_SUSPEND\", Const, 0, \"\"},\n\t\t{\"SYS_THR_WAKE\", Const, 0, \"\"},\n\t\t{\"SYS_TIME\", Const, 0, \"\"},\n\t\t{\"SYS_TIMERFD_CREATE\", Const, 0, \"\"},\n\t\t{\"SYS_TIMERFD_GETTIME\", Const, 0, \"\"},\n\t\t{\"SYS_TIMERFD_SETTIME\", Const, 0, \"\"},\n\t\t{\"SYS_TIMER_CREATE\", Const, 0, \"\"},\n\t\t{\"SYS_TIMER_DELETE\", Const, 0, \"\"},\n\t\t{\"SYS_TIMER_GETOVERRUN\", Const, 0, \"\"},\n\t\t{\"SYS_TIMER_GETTIME\", Const, 0, \"\"},\n\t\t{\"SYS_TIMER_SETTIME\", Const, 0, \"\"},\n\t\t{\"SYS_TIMES\", Const, 0, \"\"},\n\t\t{\"SYS_TKILL\", Const, 0, \"\"},\n\t\t{\"SYS_TRUNCATE\", Const, 0, \"\"},\n\t\t{\"SYS_TRUNCATE64\", Const, 0, \"\"},\n\t\t{\"SYS_TUXCALL\", Const, 0, \"\"},\n\t\t{\"SYS_UGETRLIMIT\", Const, 0, \"\"},\n\t\t{\"SYS_ULIMIT\", Const, 0, \"\"},\n\t\t{\"SYS_UMASK\", Const, 0, \"\"},\n\t\t{\"SYS_UMASK_EXTENDED\", Const, 0, \"\"},\n\t\t{\"SYS_UMOUNT\", Const, 0, \"\"},\n\t\t{\"SYS_UMOUNT2\", Const, 0, \"\"},\n\t\t{\"SYS_UNAME\", Const, 0, \"\"},\n\t\t{\"SYS_UNDELETE\", Const, 0, \"\"},\n\t\t{\"SYS_UNLINK\", Const, 0, \"\"},\n\t\t{\"SYS_UNLINKAT\", Const, 0, \"\"},\n\t\t{\"SYS_UNMOUNT\", Const, 0, \"\"},\n\t\t{\"SYS_UNSHARE\", Const, 0, \"\"},\n\t\t{\"SYS_USELIB\", Const, 0, \"\"},\n\t\t{\"SYS_USTAT\", Const, 0, \"\"},\n\t\t{\"SYS_UTIME\", Const, 0, \"\"},\n\t\t{\"SYS_UTIMENSAT\", Const, 0, \"\"},\n\t\t{\"SYS_UTIMES\", Const, 0, \"\"},\n\t\t{\"SYS_UTRACE\", Const, 0, \"\"},\n\t\t{\"SYS_UUIDGEN\", Const, 0, \"\"},\n\t\t{\"SYS_VADVISE\", Const, 1, \"\"},\n\t\t{\"SYS_VFORK\", Const, 0, \"\"},\n\t\t{\"SYS_VHANGUP\", Const, 0, \"\"},\n\t\t{\"SYS_VM86\", Const, 0, \"\"},\n\t\t{\"SYS_VM86OLD\", Const, 0, \"\"},\n\t\t{\"SYS_VMSPLICE\", Const, 0, \"\"},\n\t\t{\"SYS_VM_PRESSURE_MONITOR\", Const, 0, \"\"},\n\t\t{\"SYS_VSERVER\", Const, 0, \"\"},\n\t\t{\"SYS_WAIT4\", Const, 0, \"\"},\n\t\t{\"SYS_WAIT4_NOCANCEL\", Const, 0, \"\"},\n\t\t{\"SYS_WAIT6\", Const, 1, \"\"},\n\t\t{\"SYS_WAITEVENT\", Const, 0, \"\"},\n\t\t{\"SYS_WAITID\", Const, 0, \"\"},\n\t\t{\"SYS_WAITID_NOCANCEL\", Const, 0, \"\"},\n\t\t{\"SYS_WAITPID\", Const, 0, \"\"},\n\t\t{\"SYS_WATCHEVENT\", Const, 0, \"\"},\n\t\t{\"SYS_WORKQ_KERNRETURN\", Const, 0, \"\"},\n\t\t{\"SYS_WORKQ_OPEN\", Const, 0, \"\"},\n\t\t{\"SYS_WRITE\", Const, 0, \"\"},\n\t\t{\"SYS_WRITEV\", Const, 0, \"\"},\n\t\t{\"SYS_WRITEV_NOCANCEL\", Const, 0, \"\"},\n\t\t{\"SYS_WRITE_NOCANCEL\", Const, 0, \"\"},\n\t\t{\"SYS_YIELD\", Const, 0, \"\"},\n\t\t{\"SYS__LLSEEK\", Const, 0, \"\"},\n\t\t{\"SYS__LWP_CONTINUE\", Const, 1, \"\"},\n\t\t{\"SYS__LWP_CREATE\", Const, 1, \"\"},\n\t\t{\"SYS__LWP_CTL\", Const, 1, \"\"},\n\t\t{\"SYS__LWP_DETACH\", Const, 1, \"\"},\n\t\t{\"SYS__LWP_EXIT\", Const, 1, \"\"},\n\t\t{\"SYS__LWP_GETNAME\", Const, 1, \"\"},\n\t\t{\"SYS__LWP_GETPRIVATE\", Const, 1, \"\"},\n\t\t{\"SYS__LWP_KILL\", Const, 1, \"\"},\n\t\t{\"SYS__LWP_PARK\", Const, 1, \"\"},\n\t\t{\"SYS__LWP_SELF\", Const, 1, \"\"},\n\t\t{\"SYS__LWP_SETNAME\", Const, 1, \"\"},\n\t\t{\"SYS__LWP_SETPRIVATE\", Const, 1, \"\"},\n\t\t{\"SYS__LWP_SUSPEND\", Const, 1, \"\"},\n\t\t{\"SYS__LWP_UNPARK\", Const, 1, \"\"},\n\t\t{\"SYS__LWP_UNPARK_ALL\", Const, 1, \"\"},\n\t\t{\"SYS__LWP_WAIT\", Const, 1, \"\"},\n\t\t{\"SYS__LWP_WAKEUP\", Const, 1, \"\"},\n\t\t{\"SYS__NEWSELECT\", Const, 0, \"\"},\n\t\t{\"SYS__PSET_BIND\", Const, 1, \"\"},\n\t\t{\"SYS__SCHED_GETAFFINITY\", Const, 1, \"\"},\n\t\t{\"SYS__SCHED_GETPARAM\", Const, 1, \"\"},\n\t\t{\"SYS__SCHED_SETAFFINITY\", Const, 1, \"\"},\n\t\t{\"SYS__SCHED_SETPARAM\", Const, 1, \"\"},\n\t\t{\"SYS__SYSCTL\", Const, 0, \"\"},\n\t\t{\"SYS__UMTX_LOCK\", Const, 0, \"\"},\n\t\t{\"SYS__UMTX_OP\", Const, 0, \"\"},\n\t\t{\"SYS__UMTX_UNLOCK\", Const, 0, \"\"},\n\t\t{\"SYS___ACL_ACLCHECK_FD\", Const, 0, \"\"},\n\t\t{\"SYS___ACL_ACLCHECK_FILE\", Const, 0, \"\"},\n\t\t{\"SYS___ACL_ACLCHECK_LINK\", Const, 0, \"\"},\n\t\t{\"SYS___ACL_DELETE_FD\", Const, 0, \"\"},\n\t\t{\"SYS___ACL_DELETE_FILE\", Const, 0, \"\"},\n\t\t{\"SYS___ACL_DELETE_LINK\", Const, 0, \"\"},\n\t\t{\"SYS___ACL_GET_FD\", Const, 0, \"\"},\n\t\t{\"SYS___ACL_GET_FILE\", Const, 0, \"\"},\n\t\t{\"SYS___ACL_GET_LINK\", Const, 0, \"\"},\n\t\t{\"SYS___ACL_SET_FD\", Const, 0, \"\"},\n\t\t{\"SYS___ACL_SET_FILE\", Const, 0, \"\"},\n\t\t{\"SYS___ACL_SET_LINK\", Const, 0, \"\"},\n\t\t{\"SYS___CAP_RIGHTS_GET\", Const, 14, \"\"},\n\t\t{\"SYS___CLONE\", Const, 1, \"\"},\n\t\t{\"SYS___DISABLE_THREADSIGNAL\", Const, 0, \"\"},\n\t\t{\"SYS___GETCWD\", Const, 0, \"\"},\n\t\t{\"SYS___GETLOGIN\", Const, 1, \"\"},\n\t\t{\"SYS___GET_TCB\", Const, 1, \"\"},\n\t\t{\"SYS___MAC_EXECVE\", Const, 0, \"\"},\n\t\t{\"SYS___MAC_GETFSSTAT\", Const, 0, \"\"},\n\t\t{\"SYS___MAC_GET_FD\", Const, 0, \"\"},\n\t\t{\"SYS___MAC_GET_FILE\", Const, 0, \"\"},\n\t\t{\"SYS___MAC_GET_LCID\", Const, 0, \"\"},\n\t\t{\"SYS___MAC_GET_LCTX\", Const, 0, \"\"},\n\t\t{\"SYS___MAC_GET_LINK\", Const, 0, \"\"},\n\t\t{\"SYS___MAC_GET_MOUNT\", Const, 0, \"\"},\n\t\t{\"SYS___MAC_GET_PID\", Const, 0, \"\"},\n\t\t{\"SYS___MAC_GET_PROC\", Const, 0, \"\"},\n\t\t{\"SYS___MAC_MOUNT\", Const, 0, \"\"},\n\t\t{\"SYS___MAC_SET_FD\", Const, 0, \"\"},\n\t\t{\"SYS___MAC_SET_FILE\", Const, 0, \"\"},\n\t\t{\"SYS___MAC_SET_LCTX\", Const, 0, \"\"},\n\t\t{\"SYS___MAC_SET_LINK\", Const, 0, \"\"},\n\t\t{\"SYS___MAC_SET_PROC\", Const, 0, \"\"},\n\t\t{\"SYS___MAC_SYSCALL\", Const, 0, \"\"},\n\t\t{\"SYS___OLD_SEMWAIT_SIGNAL\", Const, 0, \"\"},\n\t\t{\"SYS___OLD_SEMWAIT_SIGNAL_NOCANCEL\", Const, 0, \"\"},\n\t\t{\"SYS___POSIX_CHOWN\", Const, 1, \"\"},\n\t\t{\"SYS___POSIX_FCHOWN\", Const, 1, \"\"},\n\t\t{\"SYS___POSIX_LCHOWN\", Const, 1, \"\"},\n\t\t{\"SYS___POSIX_RENAME\", Const, 1, \"\"},\n\t\t{\"SYS___PTHREAD_CANCELED\", Const, 0, \"\"},\n\t\t{\"SYS___PTHREAD_CHDIR\", Const, 0, \"\"},\n\t\t{\"SYS___PTHREAD_FCHDIR\", Const, 0, \"\"},\n\t\t{\"SYS___PTHREAD_KILL\", Const, 0, \"\"},\n\t\t{\"SYS___PTHREAD_MARKCANCEL\", Const, 0, \"\"},\n\t\t{\"SYS___PTHREAD_SIGMASK\", Const, 0, \"\"},\n\t\t{\"SYS___QUOTACTL\", Const, 1, \"\"},\n\t\t{\"SYS___SEMCTL\", Const, 1, \"\"},\n\t\t{\"SYS___SEMWAIT_SIGNAL\", Const, 0, \"\"},\n\t\t{\"SYS___SEMWAIT_SIGNAL_NOCANCEL\", Const, 0, \"\"},\n\t\t{\"SYS___SETLOGIN\", Const, 1, \"\"},\n\t\t{\"SYS___SETUGID\", Const, 0, \"\"},\n\t\t{\"SYS___SET_TCB\", Const, 1, \"\"},\n\t\t{\"SYS___SIGACTION_SIGTRAMP\", Const, 1, \"\"},\n\t\t{\"SYS___SIGTIMEDWAIT\", Const, 1, \"\"},\n\t\t{\"SYS___SIGWAIT\", Const, 0, \"\"},\n\t\t{\"SYS___SIGWAIT_NOCANCEL\", Const, 0, \"\"},\n\t\t{\"SYS___SYSCTL\", Const, 0, \"\"},\n\t\t{\"SYS___TFORK\", Const, 1, \"\"},\n\t\t{\"SYS___THREXIT\", Const, 1, \"\"},\n\t\t{\"SYS___THRSIGDIVERT\", Const, 1, \"\"},\n\t\t{\"SYS___THRSLEEP\", Const, 1, \"\"},\n\t\t{\"SYS___THRWAKEUP\", Const, 1, \"\"},\n\t\t{\"S_ARCH1\", Const, 1, \"\"},\n\t\t{\"S_ARCH2\", Const, 1, \"\"},\n\t\t{\"S_BLKSIZE\", Const, 0, \"\"},\n\t\t{\"S_IEXEC\", Const, 0, \"\"},\n\t\t{\"S_IFBLK\", Const, 0, \"\"},\n\t\t{\"S_IFCHR\", Const, 0, \"\"},\n\t\t{\"S_IFDIR\", Const, 0, \"\"},\n\t\t{\"S_IFIFO\", Const, 0, \"\"},\n\t\t{\"S_IFLNK\", Const, 0, \"\"},\n\t\t{\"S_IFMT\", Const, 0, \"\"},\n\t\t{\"S_IFREG\", Const, 0, \"\"},\n\t\t{\"S_IFSOCK\", Const, 0, \"\"},\n\t\t{\"S_IFWHT\", Const, 0, \"\"},\n\t\t{\"S_IREAD\", Const, 0, \"\"},\n\t\t{\"S_IRGRP\", Const, 0, \"\"},\n\t\t{\"S_IROTH\", Const, 0, \"\"},\n\t\t{\"S_IRUSR\", Const, 0, \"\"},\n\t\t{\"S_IRWXG\", Const, 0, \"\"},\n\t\t{\"S_IRWXO\", Const, 0, \"\"},\n\t\t{\"S_IRWXU\", Const, 0, \"\"},\n\t\t{\"S_ISGID\", Const, 0, \"\"},\n\t\t{\"S_ISTXT\", Const, 0, \"\"},\n\t\t{\"S_ISUID\", Const, 0, \"\"},\n\t\t{\"S_ISVTX\", Const, 0, \"\"},\n\t\t{\"S_IWGRP\", Const, 0, \"\"},\n\t\t{\"S_IWOTH\", Const, 0, \"\"},\n\t\t{\"S_IWRITE\", Const, 0, \"\"},\n\t\t{\"S_IWUSR\", Const, 0, \"\"},\n\t\t{\"S_IXGRP\", Const, 0, \"\"},\n\t\t{\"S_IXOTH\", Const, 0, \"\"},\n\t\t{\"S_IXUSR\", Const, 0, \"\"},\n\t\t{\"S_LOGIN_SET\", Const, 1, \"\"},\n\t\t{\"SecurityAttributes\", Type, 0, \"\"},\n\t\t{\"SecurityAttributes.InheritHandle\", Field, 0, \"\"},\n\t\t{\"SecurityAttributes.Length\", Field, 0, \"\"},\n\t\t{\"SecurityAttributes.SecurityDescriptor\", Field, 0, \"\"},\n\t\t{\"Seek\", Func, 0, \"func(fd int, offset int64, whence int) (off int64, err error)\"},\n\t\t{\"Select\", Func, 0, \"func(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)\"},\n\t\t{\"Sendfile\", Func, 0, \"func(outfd int, infd int, offset *int64, count int) (written int, err error)\"},\n\t\t{\"Sendmsg\", Func, 0, \"func(fd int, p []byte, oob []byte, to Sockaddr, flags int) (err error)\"},\n\t\t{\"SendmsgN\", Func, 3, \"func(fd int, p []byte, oob []byte, to Sockaddr, flags int) (n int, err error)\"},\n\t\t{\"Sendto\", Func, 0, \"func(fd int, p []byte, flags int, to Sockaddr) (err error)\"},\n\t\t{\"Servent\", Type, 0, \"\"},\n\t\t{\"Servent.Aliases\", Field, 0, \"\"},\n\t\t{\"Servent.Name\", Field, 0, \"\"},\n\t\t{\"Servent.Port\", Field, 0, \"\"},\n\t\t{\"Servent.Proto\", Field, 0, \"\"},\n\t\t{\"SetBpf\", Func, 0, \"\"},\n\t\t{\"SetBpfBuflen\", Func, 0, \"\"},\n\t\t{\"SetBpfDatalink\", Func, 0, \"\"},\n\t\t{\"SetBpfHeadercmpl\", Func, 0, \"\"},\n\t\t{\"SetBpfImmediate\", Func, 0, \"\"},\n\t\t{\"SetBpfInterface\", Func, 0, \"\"},\n\t\t{\"SetBpfPromisc\", Func, 0, \"\"},\n\t\t{\"SetBpfTimeout\", Func, 0, \"\"},\n\t\t{\"SetCurrentDirectory\", Func, 0, \"\"},\n\t\t{\"SetEndOfFile\", Func, 0, \"\"},\n\t\t{\"SetEnvironmentVariable\", Func, 0, \"\"},\n\t\t{\"SetFileAttributes\", Func, 0, \"\"},\n\t\t{\"SetFileCompletionNotificationModes\", Func, 2, \"\"},\n\t\t{\"SetFilePointer\", Func, 0, \"\"},\n\t\t{\"SetFileTime\", Func, 0, \"\"},\n\t\t{\"SetHandleInformation\", Func, 0, \"\"},\n\t\t{\"SetKevent\", Func, 0, \"\"},\n\t\t{\"SetLsfPromisc\", Func, 0, \"func(name string, m bool) error\"},\n\t\t{\"SetNonblock\", Func, 0, \"func(fd int, nonblocking bool) (err error)\"},\n\t\t{\"Setdomainname\", Func, 0, \"func(p []byte) (err error)\"},\n\t\t{\"Setegid\", Func, 0, \"func(egid int) (err error)\"},\n\t\t{\"Setenv\", Func, 0, \"func(key string, value string) error\"},\n\t\t{\"Seteuid\", Func, 0, \"func(euid int) (err error)\"},\n\t\t{\"Setfsgid\", Func, 0, \"func(gid int) (err error)\"},\n\t\t{\"Setfsuid\", Func, 0, \"func(uid int) (err error)\"},\n\t\t{\"Setgid\", Func, 0, \"func(gid int) (err error)\"},\n\t\t{\"Setgroups\", Func, 0, \"func(gids []int) (err error)\"},\n\t\t{\"Sethostname\", Func, 0, \"func(p []byte) (err error)\"},\n\t\t{\"Setlogin\", Func, 0, \"\"},\n\t\t{\"Setpgid\", Func, 0, \"func(pid int, pgid int) (err error)\"},\n\t\t{\"Setpriority\", Func, 0, \"func(which int, who int, prio int) (err error)\"},\n\t\t{\"Setprivexec\", Func, 0, \"\"},\n\t\t{\"Setregid\", Func, 0, \"func(rgid int, egid int) (err error)\"},\n\t\t{\"Setresgid\", Func, 0, \"func(rgid int, egid int, sgid int) (err error)\"},\n\t\t{\"Setresuid\", Func, 0, \"func(ruid int, euid int, suid int) (err error)\"},\n\t\t{\"Setreuid\", Func, 0, \"func(ruid int, euid int) (err error)\"},\n\t\t{\"Setrlimit\", Func, 0, \"func(resource int, rlim *Rlimit) error\"},\n\t\t{\"Setsid\", Func, 0, \"func() (pid int, err error)\"},\n\t\t{\"Setsockopt\", Func, 0, \"\"},\n\t\t{\"SetsockoptByte\", Func, 0, \"func(fd int, level int, opt int, value byte) (err error)\"},\n\t\t{\"SetsockoptICMPv6Filter\", Func, 2, \"func(fd int, level int, opt int, filter *ICMPv6Filter) error\"},\n\t\t{\"SetsockoptIPMreq\", Func, 0, \"func(fd int, level int, opt int, mreq *IPMreq) (err error)\"},\n\t\t{\"SetsockoptIPMreqn\", Func, 0, \"func(fd int, level int, opt int, mreq *IPMreqn) (err error)\"},\n\t\t{\"SetsockoptIPv6Mreq\", Func, 0, \"func(fd int, level int, opt int, mreq *IPv6Mreq) (err error)\"},\n\t\t{\"SetsockoptInet4Addr\", Func, 0, \"func(fd int, level int, opt int, value [4]byte) (err error)\"},\n\t\t{\"SetsockoptInt\", Func, 0, \"func(fd int, level int, opt int, value int) (err error)\"},\n\t\t{\"SetsockoptLinger\", Func, 0, \"func(fd int, level int, opt int, l *Linger) (err error)\"},\n\t\t{\"SetsockoptString\", Func, 0, \"func(fd int, level int, opt int, s string) (err error)\"},\n\t\t{\"SetsockoptTimeval\", Func, 0, \"func(fd int, level int, opt int, tv *Timeval) (err error)\"},\n\t\t{\"Settimeofday\", Func, 0, \"func(tv *Timeval) (err error)\"},\n\t\t{\"Setuid\", Func, 0, \"func(uid int) (err error)\"},\n\t\t{\"Setxattr\", Func, 1, \"func(path string, attr string, data []byte, flags int) (err error)\"},\n\t\t{\"Shutdown\", Func, 0, \"func(fd int, how int) (err error)\"},\n\t\t{\"SidTypeAlias\", Const, 0, \"\"},\n\t\t{\"SidTypeComputer\", Const, 0, \"\"},\n\t\t{\"SidTypeDeletedAccount\", Const, 0, \"\"},\n\t\t{\"SidTypeDomain\", Const, 0, \"\"},\n\t\t{\"SidTypeGroup\", Const, 0, \"\"},\n\t\t{\"SidTypeInvalid\", Const, 0, \"\"},\n\t\t{\"SidTypeLabel\", Const, 0, \"\"},\n\t\t{\"SidTypeUnknown\", Const, 0, \"\"},\n\t\t{\"SidTypeUser\", Const, 0, \"\"},\n\t\t{\"SidTypeWellKnownGroup\", Const, 0, \"\"},\n\t\t{\"Signal\", Type, 0, \"\"},\n\t\t{\"SizeofBpfHdr\", Const, 0, \"\"},\n\t\t{\"SizeofBpfInsn\", Const, 0, \"\"},\n\t\t{\"SizeofBpfProgram\", Const, 0, \"\"},\n\t\t{\"SizeofBpfStat\", Const, 0, \"\"},\n\t\t{\"SizeofBpfVersion\", Const, 0, \"\"},\n\t\t{\"SizeofBpfZbuf\", Const, 0, \"\"},\n\t\t{\"SizeofBpfZbufHeader\", Const, 0, \"\"},\n\t\t{\"SizeofCmsghdr\", Const, 0, \"\"},\n\t\t{\"SizeofICMPv6Filter\", Const, 2, \"\"},\n\t\t{\"SizeofIPMreq\", Const, 0, \"\"},\n\t\t{\"SizeofIPMreqn\", Const, 0, \"\"},\n\t\t{\"SizeofIPv6MTUInfo\", Const, 2, \"\"},\n\t\t{\"SizeofIPv6Mreq\", Const, 0, \"\"},\n\t\t{\"SizeofIfAddrmsg\", Const, 0, \"\"},\n\t\t{\"SizeofIfAnnounceMsghdr\", Const, 1, \"\"},\n\t\t{\"SizeofIfData\", Const, 0, \"\"},\n\t\t{\"SizeofIfInfomsg\", Const, 0, \"\"},\n\t\t{\"SizeofIfMsghdr\", Const, 0, \"\"},\n\t\t{\"SizeofIfaMsghdr\", Const, 0, \"\"},\n\t\t{\"SizeofIfmaMsghdr\", Const, 0, \"\"},\n\t\t{\"SizeofIfmaMsghdr2\", Const, 0, \"\"},\n\t\t{\"SizeofInet4Pktinfo\", Const, 0, \"\"},\n\t\t{\"SizeofInet6Pktinfo\", Const, 0, \"\"},\n\t\t{\"SizeofInotifyEvent\", Const, 0, \"\"},\n\t\t{\"SizeofLinger\", Const, 0, \"\"},\n\t\t{\"SizeofMsghdr\", Const, 0, \"\"},\n\t\t{\"SizeofNlAttr\", Const, 0, \"\"},\n\t\t{\"SizeofNlMsgerr\", Const, 0, \"\"},\n\t\t{\"SizeofNlMsghdr\", Const, 0, \"\"},\n\t\t{\"SizeofRtAttr\", Const, 0, \"\"},\n\t\t{\"SizeofRtGenmsg\", Const, 0, \"\"},\n\t\t{\"SizeofRtMetrics\", Const, 0, \"\"},\n\t\t{\"SizeofRtMsg\", Const, 0, \"\"},\n\t\t{\"SizeofRtMsghdr\", Const, 0, \"\"},\n\t\t{\"SizeofRtNexthop\", Const, 0, \"\"},\n\t\t{\"SizeofSockFilter\", Const, 0, \"\"},\n\t\t{\"SizeofSockFprog\", Const, 0, \"\"},\n\t\t{\"SizeofSockaddrAny\", Const, 0, \"\"},\n\t\t{\"SizeofSockaddrDatalink\", Const, 0, \"\"},\n\t\t{\"SizeofSockaddrInet4\", Const, 0, \"\"},\n\t\t{\"SizeofSockaddrInet6\", Const, 0, \"\"},\n\t\t{\"SizeofSockaddrLinklayer\", Const, 0, \"\"},\n\t\t{\"SizeofSockaddrNetlink\", Const, 0, \"\"},\n\t\t{\"SizeofSockaddrUnix\", Const, 0, \"\"},\n\t\t{\"SizeofTCPInfo\", Const, 1, \"\"},\n\t\t{\"SizeofUcred\", Const, 0, \"\"},\n\t\t{\"SlicePtrFromStrings\", Func, 1, \"func(ss []string) ([]*byte, error)\"},\n\t\t{\"SockFilter\", Type, 0, \"\"},\n\t\t{\"SockFilter.Code\", Field, 0, \"\"},\n\t\t{\"SockFilter.Jf\", Field, 0, \"\"},\n\t\t{\"SockFilter.Jt\", Field, 0, \"\"},\n\t\t{\"SockFilter.K\", Field, 0, \"\"},\n\t\t{\"SockFprog\", Type, 0, \"\"},\n\t\t{\"SockFprog.Filter\", Field, 0, \"\"},\n\t\t{\"SockFprog.Len\", Field, 0, \"\"},\n\t\t{\"SockFprog.Pad_cgo_0\", Field, 0, \"\"},\n\t\t{\"SockaddrDatalink\", Type, 0, \"\"},\n\t\t{\"SockaddrDatalink.Alen\", Field, 0, \"\"},\n\t\t{\"SockaddrDatalink.Data\", Field, 0, \"\"},\n\t\t{\"SockaddrDatalink.Family\", Field, 0, \"\"},\n\t\t{\"SockaddrDatalink.Index\", Field, 0, \"\"},\n\t\t{\"SockaddrDatalink.Len\", Field, 0, \"\"},\n\t\t{\"SockaddrDatalink.Nlen\", Field, 0, \"\"},\n\t\t{\"SockaddrDatalink.Slen\", Field, 0, \"\"},\n\t\t{\"SockaddrDatalink.Type\", Field, 0, \"\"},\n\t\t{\"SockaddrGen\", Type, 0, \"\"},\n\t\t{\"SockaddrInet4\", Type, 0, \"\"},\n\t\t{\"SockaddrInet4.Addr\", Field, 0, \"\"},\n\t\t{\"SockaddrInet4.Port\", Field, 0, \"\"},\n\t\t{\"SockaddrInet6\", Type, 0, \"\"},\n\t\t{\"SockaddrInet6.Addr\", Field, 0, \"\"},\n\t\t{\"SockaddrInet6.Port\", Field, 0, \"\"},\n\t\t{\"SockaddrInet6.ZoneId\", Field, 0, \"\"},\n\t\t{\"SockaddrLinklayer\", Type, 0, \"\"},\n\t\t{\"SockaddrLinklayer.Addr\", Field, 0, \"\"},\n\t\t{\"SockaddrLinklayer.Halen\", Field, 0, \"\"},\n\t\t{\"SockaddrLinklayer.Hatype\", Field, 0, \"\"},\n\t\t{\"SockaddrLinklayer.Ifindex\", Field, 0, \"\"},\n\t\t{\"SockaddrLinklayer.Pkttype\", Field, 0, \"\"},\n\t\t{\"SockaddrLinklayer.Protocol\", Field, 0, \"\"},\n\t\t{\"SockaddrNetlink\", Type, 0, \"\"},\n\t\t{\"SockaddrNetlink.Family\", Field, 0, \"\"},\n\t\t{\"SockaddrNetlink.Groups\", Field, 0, \"\"},\n\t\t{\"SockaddrNetlink.Pad\", Field, 0, \"\"},\n\t\t{\"SockaddrNetlink.Pid\", Field, 0, \"\"},\n\t\t{\"SockaddrUnix\", Type, 0, \"\"},\n\t\t{\"SockaddrUnix.Name\", Field, 0, \"\"},\n\t\t{\"Socket\", Func, 0, \"func(domain int, typ int, proto int) (fd int, err error)\"},\n\t\t{\"SocketControlMessage\", Type, 0, \"\"},\n\t\t{\"SocketControlMessage.Data\", Field, 0, \"\"},\n\t\t{\"SocketControlMessage.Header\", Field, 0, \"\"},\n\t\t{\"SocketDisableIPv6\", Var, 0, \"\"},\n\t\t{\"Socketpair\", Func, 0, \"func(domain int, typ int, proto int) (fd [2]int, err error)\"},\n\t\t{\"Splice\", Func, 0, \"func(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)\"},\n\t\t{\"StartProcess\", Func, 0, \"func(argv0 string, argv []string, attr *ProcAttr) (pid int, handle uintptr, err error)\"},\n\t\t{\"StartupInfo\", Type, 0, \"\"},\n\t\t{\"StartupInfo.Cb\", Field, 0, \"\"},\n\t\t{\"StartupInfo.Desktop\", Field, 0, \"\"},\n\t\t{\"StartupInfo.FillAttribute\", Field, 0, \"\"},\n\t\t{\"StartupInfo.Flags\", Field, 0, \"\"},\n\t\t{\"StartupInfo.ShowWindow\", Field, 0, \"\"},\n\t\t{\"StartupInfo.StdErr\", Field, 0, \"\"},\n\t\t{\"StartupInfo.StdInput\", Field, 0, \"\"},\n\t\t{\"StartupInfo.StdOutput\", Field, 0, \"\"},\n\t\t{\"StartupInfo.Title\", Field, 0, \"\"},\n\t\t{\"StartupInfo.X\", Field, 0, \"\"},\n\t\t{\"StartupInfo.XCountChars\", Field, 0, \"\"},\n\t\t{\"StartupInfo.XSize\", Field, 0, \"\"},\n\t\t{\"StartupInfo.Y\", Field, 0, \"\"},\n\t\t{\"StartupInfo.YCountChars\", Field, 0, \"\"},\n\t\t{\"StartupInfo.YSize\", Field, 0, \"\"},\n\t\t{\"Stat\", Func, 0, \"func(path string, stat *Stat_t) (err error)\"},\n\t\t{\"Stat_t\", Type, 0, \"\"},\n\t\t{\"Stat_t.Atim\", Field, 0, \"\"},\n\t\t{\"Stat_t.Atim_ext\", Field, 12, \"\"},\n\t\t{\"Stat_t.Atimespec\", Field, 0, \"\"},\n\t\t{\"Stat_t.Birthtimespec\", Field, 0, \"\"},\n\t\t{\"Stat_t.Blksize\", Field, 0, \"\"},\n\t\t{\"Stat_t.Blocks\", Field, 0, \"\"},\n\t\t{\"Stat_t.Btim_ext\", Field, 12, \"\"},\n\t\t{\"Stat_t.Ctim\", Field, 0, \"\"},\n\t\t{\"Stat_t.Ctim_ext\", Field, 12, \"\"},\n\t\t{\"Stat_t.Ctimespec\", Field, 0, \"\"},\n\t\t{\"Stat_t.Dev\", Field, 0, \"\"},\n\t\t{\"Stat_t.Flags\", Field, 0, \"\"},\n\t\t{\"Stat_t.Gen\", Field, 0, \"\"},\n\t\t{\"Stat_t.Gid\", Field, 0, \"\"},\n\t\t{\"Stat_t.Ino\", Field, 0, \"\"},\n\t\t{\"Stat_t.Lspare\", Field, 0, \"\"},\n\t\t{\"Stat_t.Lspare0\", Field, 2, \"\"},\n\t\t{\"Stat_t.Lspare1\", Field, 2, \"\"},\n\t\t{\"Stat_t.Mode\", Field, 0, \"\"},\n\t\t{\"Stat_t.Mtim\", Field, 0, \"\"},\n\t\t{\"Stat_t.Mtim_ext\", Field, 12, \"\"},\n\t\t{\"Stat_t.Mtimespec\", Field, 0, \"\"},\n\t\t{\"Stat_t.Nlink\", Field, 0, \"\"},\n\t\t{\"Stat_t.Pad_cgo_0\", Field, 0, \"\"},\n\t\t{\"Stat_t.Pad_cgo_1\", Field, 0, \"\"},\n\t\t{\"Stat_t.Pad_cgo_2\", Field, 0, \"\"},\n\t\t{\"Stat_t.Padding0\", Field, 12, \"\"},\n\t\t{\"Stat_t.Padding1\", Field, 12, \"\"},\n\t\t{\"Stat_t.Qspare\", Field, 0, \"\"},\n\t\t{\"Stat_t.Rdev\", Field, 0, \"\"},\n\t\t{\"Stat_t.Size\", Field, 0, \"\"},\n\t\t{\"Stat_t.Spare\", Field, 2, \"\"},\n\t\t{\"Stat_t.Uid\", Field, 0, \"\"},\n\t\t{\"Stat_t.X__pad0\", Field, 0, \"\"},\n\t\t{\"Stat_t.X__pad1\", Field, 0, \"\"},\n\t\t{\"Stat_t.X__pad2\", Field, 0, \"\"},\n\t\t{\"Stat_t.X__st_birthtim\", Field, 2, \"\"},\n\t\t{\"Stat_t.X__st_ino\", Field, 0, \"\"},\n\t\t{\"Stat_t.X__unused\", Field, 0, \"\"},\n\t\t{\"Statfs\", Func, 0, \"func(path string, buf *Statfs_t) (err error)\"},\n\t\t{\"Statfs_t\", Type, 0, \"\"},\n\t\t{\"Statfs_t.Asyncreads\", Field, 0, \"\"},\n\t\t{\"Statfs_t.Asyncwrites\", Field, 0, \"\"},\n\t\t{\"Statfs_t.Bavail\", Field, 0, \"\"},\n\t\t{\"Statfs_t.Bfree\", Field, 0, \"\"},\n\t\t{\"Statfs_t.Blocks\", Field, 0, \"\"},\n\t\t{\"Statfs_t.Bsize\", Field, 0, \"\"},\n\t\t{\"Statfs_t.Charspare\", Field, 0, \"\"},\n\t\t{\"Statfs_t.F_asyncreads\", Field, 2, \"\"},\n\t\t{\"Statfs_t.F_asyncwrites\", Field, 2, \"\"},\n\t\t{\"Statfs_t.F_bavail\", Field, 2, \"\"},\n\t\t{\"Statfs_t.F_bfree\", Field, 2, \"\"},\n\t\t{\"Statfs_t.F_blocks\", Field, 2, \"\"},\n\t\t{\"Statfs_t.F_bsize\", Field, 2, \"\"},\n\t\t{\"Statfs_t.F_ctime\", Field, 2, \"\"},\n\t\t{\"Statfs_t.F_favail\", Field, 2, \"\"},\n\t\t{\"Statfs_t.F_ffree\", Field, 2, \"\"},\n\t\t{\"Statfs_t.F_files\", Field, 2, \"\"},\n\t\t{\"Statfs_t.F_flags\", Field, 2, \"\"},\n\t\t{\"Statfs_t.F_fsid\", Field, 2, \"\"},\n\t\t{\"Statfs_t.F_fstypename\", Field, 2, \"\"},\n\t\t{\"Statfs_t.F_iosize\", Field, 2, \"\"},\n\t\t{\"Statfs_t.F_mntfromname\", Field, 2, \"\"},\n\t\t{\"Statfs_t.F_mntfromspec\", Field, 3, \"\"},\n\t\t{\"Statfs_t.F_mntonname\", Field, 2, \"\"},\n\t\t{\"Statfs_t.F_namemax\", Field, 2, \"\"},\n\t\t{\"Statfs_t.F_owner\", Field, 2, \"\"},\n\t\t{\"Statfs_t.F_spare\", Field, 2, \"\"},\n\t\t{\"Statfs_t.F_syncreads\", Field, 2, \"\"},\n\t\t{\"Statfs_t.F_syncwrites\", Field, 2, \"\"},\n\t\t{\"Statfs_t.Ffree\", Field, 0, \"\"},\n\t\t{\"Statfs_t.Files\", Field, 0, \"\"},\n\t\t{\"Statfs_t.Flags\", Field, 0, \"\"},\n\t\t{\"Statfs_t.Frsize\", Field, 0, \"\"},\n\t\t{\"Statfs_t.Fsid\", Field, 0, \"\"},\n\t\t{\"Statfs_t.Fssubtype\", Field, 0, \"\"},\n\t\t{\"Statfs_t.Fstypename\", Field, 0, \"\"},\n\t\t{\"Statfs_t.Iosize\", Field, 0, \"\"},\n\t\t{\"Statfs_t.Mntfromname\", Field, 0, \"\"},\n\t\t{\"Statfs_t.Mntonname\", Field, 0, \"\"},\n\t\t{\"Statfs_t.Mount_info\", Field, 2, \"\"},\n\t\t{\"Statfs_t.Namelen\", Field, 0, \"\"},\n\t\t{\"Statfs_t.Namemax\", Field, 0, \"\"},\n\t\t{\"Statfs_t.Owner\", Field, 0, \"\"},\n\t\t{\"Statfs_t.Pad_cgo_0\", Field, 0, \"\"},\n\t\t{\"Statfs_t.Pad_cgo_1\", Field, 2, \"\"},\n\t\t{\"Statfs_t.Reserved\", Field, 0, \"\"},\n\t\t{\"Statfs_t.Spare\", Field, 0, \"\"},\n\t\t{\"Statfs_t.Syncreads\", Field, 0, \"\"},\n\t\t{\"Statfs_t.Syncwrites\", Field, 0, \"\"},\n\t\t{\"Statfs_t.Type\", Field, 0, \"\"},\n\t\t{\"Statfs_t.Version\", Field, 0, \"\"},\n\t\t{\"Stderr\", Var, 0, \"\"},\n\t\t{\"Stdin\", Var, 0, \"\"},\n\t\t{\"Stdout\", Var, 0, \"\"},\n\t\t{\"StringBytePtr\", Func, 0, \"func(s string) *byte\"},\n\t\t{\"StringByteSlice\", Func, 0, \"func(s string) []byte\"},\n\t\t{\"StringSlicePtr\", Func, 0, \"func(ss []string) []*byte\"},\n\t\t{\"StringToSid\", Func, 0, \"\"},\n\t\t{\"StringToUTF16\", Func, 0, \"\"},\n\t\t{\"StringToUTF16Ptr\", Func, 0, \"\"},\n\t\t{\"Symlink\", Func, 0, \"func(oldpath string, newpath string) (err error)\"},\n\t\t{\"Sync\", Func, 0, \"func()\"},\n\t\t{\"SyncFileRange\", Func, 0, \"func(fd int, off int64, n int64, flags int) (err error)\"},\n\t\t{\"SysProcAttr\", Type, 0, \"\"},\n\t\t{\"SysProcAttr.AdditionalInheritedHandles\", Field, 17, \"\"},\n\t\t{\"SysProcAttr.AmbientCaps\", Field, 9, \"\"},\n\t\t{\"SysProcAttr.CgroupFD\", Field, 20, \"\"},\n\t\t{\"SysProcAttr.Chroot\", Field, 0, \"\"},\n\t\t{\"SysProcAttr.Cloneflags\", Field, 2, \"\"},\n\t\t{\"SysProcAttr.CmdLine\", Field, 0, \"\"},\n\t\t{\"SysProcAttr.CreationFlags\", Field, 1, \"\"},\n\t\t{\"SysProcAttr.Credential\", Field, 0, \"\"},\n\t\t{\"SysProcAttr.Ctty\", Field, 1, \"\"},\n\t\t{\"SysProcAttr.Foreground\", Field, 5, \"\"},\n\t\t{\"SysProcAttr.GidMappings\", Field, 4, \"\"},\n\t\t{\"SysProcAttr.GidMappingsEnableSetgroups\", Field, 5, \"\"},\n\t\t{\"SysProcAttr.HideWindow\", Field, 0, \"\"},\n\t\t{\"SysProcAttr.Jail\", Field, 21, \"\"},\n\t\t{\"SysProcAttr.NoInheritHandles\", Field, 16, \"\"},\n\t\t{\"SysProcAttr.Noctty\", Field, 0, \"\"},\n\t\t{\"SysProcAttr.ParentProcess\", Field, 17, \"\"},\n\t\t{\"SysProcAttr.Pdeathsig\", Field, 0, \"\"},\n\t\t{\"SysProcAttr.Pgid\", Field, 5, \"\"},\n\t\t{\"SysProcAttr.PidFD\", Field, 22, \"\"},\n\t\t{\"SysProcAttr.ProcessAttributes\", Field, 13, \"\"},\n\t\t{\"SysProcAttr.Ptrace\", Field, 0, \"\"},\n\t\t{\"SysProcAttr.Setctty\", Field, 0, \"\"},\n\t\t{\"SysProcAttr.Setpgid\", Field, 0, \"\"},\n\t\t{\"SysProcAttr.Setsid\", Field, 0, \"\"},\n\t\t{\"SysProcAttr.ThreadAttributes\", Field, 13, \"\"},\n\t\t{\"SysProcAttr.Token\", Field, 10, \"\"},\n\t\t{\"SysProcAttr.UidMappings\", Field, 4, \"\"},\n\t\t{\"SysProcAttr.Unshareflags\", Field, 7, \"\"},\n\t\t{\"SysProcAttr.UseCgroupFD\", Field, 20, \"\"},\n\t\t{\"SysProcIDMap\", Type, 4, \"\"},\n\t\t{\"SysProcIDMap.ContainerID\", Field, 4, \"\"},\n\t\t{\"SysProcIDMap.HostID\", Field, 4, \"\"},\n\t\t{\"SysProcIDMap.Size\", Field, 4, \"\"},\n\t\t{\"Syscall\", Func, 0, \"func(trap uintptr, a1 uintptr, a2 uintptr, a3 uintptr) (r1 uintptr, r2 uintptr, err Errno)\"},\n\t\t{\"Syscall12\", Func, 0, \"\"},\n\t\t{\"Syscall15\", Func, 0, \"\"},\n\t\t{\"Syscall18\", Func, 12, \"\"},\n\t\t{\"Syscall6\", Func, 0, \"func(trap uintptr, a1 uintptr, a2 uintptr, a3 uintptr, a4 uintptr, a5 uintptr, a6 uintptr) (r1 uintptr, r2 uintptr, err Errno)\"},\n\t\t{\"Syscall9\", Func, 0, \"\"},\n\t\t{\"SyscallN\", Func, 18, \"\"},\n\t\t{\"Sysctl\", Func, 0, \"\"},\n\t\t{\"SysctlUint32\", Func, 0, \"\"},\n\t\t{\"Sysctlnode\", Type, 2, \"\"},\n\t\t{\"Sysctlnode.Flags\", Field, 2, \"\"},\n\t\t{\"Sysctlnode.Name\", Field, 2, \"\"},\n\t\t{\"Sysctlnode.Num\", Field, 2, \"\"},\n\t\t{\"Sysctlnode.Un\", Field, 2, \"\"},\n\t\t{\"Sysctlnode.Ver\", Field, 2, \"\"},\n\t\t{\"Sysctlnode.X__rsvd\", Field, 2, \"\"},\n\t\t{\"Sysctlnode.X_sysctl_desc\", Field, 2, \"\"},\n\t\t{\"Sysctlnode.X_sysctl_func\", Field, 2, \"\"},\n\t\t{\"Sysctlnode.X_sysctl_parent\", Field, 2, \"\"},\n\t\t{\"Sysctlnode.X_sysctl_size\", Field, 2, \"\"},\n\t\t{\"Sysinfo\", Func, 0, \"func(info *Sysinfo_t) (err error)\"},\n\t\t{\"Sysinfo_t\", Type, 0, \"\"},\n\t\t{\"Sysinfo_t.Bufferram\", Field, 0, \"\"},\n\t\t{\"Sysinfo_t.Freehigh\", Field, 0, \"\"},\n\t\t{\"Sysinfo_t.Freeram\", Field, 0, \"\"},\n\t\t{\"Sysinfo_t.Freeswap\", Field, 0, \"\"},\n\t\t{\"Sysinfo_t.Loads\", Field, 0, \"\"},\n\t\t{\"Sysinfo_t.Pad\", Field, 0, \"\"},\n\t\t{\"Sysinfo_t.Pad_cgo_0\", Field, 0, \"\"},\n\t\t{\"Sysinfo_t.Pad_cgo_1\", Field, 0, \"\"},\n\t\t{\"Sysinfo_t.Procs\", Field, 0, \"\"},\n\t\t{\"Sysinfo_t.Sharedram\", Field, 0, \"\"},\n\t\t{\"Sysinfo_t.Totalhigh\", Field, 0, \"\"},\n\t\t{\"Sysinfo_t.Totalram\", Field, 0, \"\"},\n\t\t{\"Sysinfo_t.Totalswap\", Field, 0, \"\"},\n\t\t{\"Sysinfo_t.Unit\", Field, 0, \"\"},\n\t\t{\"Sysinfo_t.Uptime\", Field, 0, \"\"},\n\t\t{\"Sysinfo_t.X_f\", Field, 0, \"\"},\n\t\t{\"Systemtime\", Type, 0, \"\"},\n\t\t{\"Systemtime.Day\", Field, 0, \"\"},\n\t\t{\"Systemtime.DayOfWeek\", Field, 0, \"\"},\n\t\t{\"Systemtime.Hour\", Field, 0, \"\"},\n\t\t{\"Systemtime.Milliseconds\", Field, 0, \"\"},\n\t\t{\"Systemtime.Minute\", Field, 0, \"\"},\n\t\t{\"Systemtime.Month\", Field, 0, \"\"},\n\t\t{\"Systemtime.Second\", Field, 0, \"\"},\n\t\t{\"Systemtime.Year\", Field, 0, \"\"},\n\t\t{\"TCGETS\", Const, 0, \"\"},\n\t\t{\"TCIFLUSH\", Const, 1, \"\"},\n\t\t{\"TCIOFLUSH\", Const, 1, \"\"},\n\t\t{\"TCOFLUSH\", Const, 1, \"\"},\n\t\t{\"TCPInfo\", Type, 1, \"\"},\n\t\t{\"TCPInfo.Advmss\", Field, 1, \"\"},\n\t\t{\"TCPInfo.Ato\", Field, 1, \"\"},\n\t\t{\"TCPInfo.Backoff\", Field, 1, \"\"},\n\t\t{\"TCPInfo.Ca_state\", Field, 1, \"\"},\n\t\t{\"TCPInfo.Fackets\", Field, 1, \"\"},\n\t\t{\"TCPInfo.Last_ack_recv\", Field, 1, \"\"},\n\t\t{\"TCPInfo.Last_ack_sent\", Field, 1, \"\"},\n\t\t{\"TCPInfo.Last_data_recv\", Field, 1, \"\"},\n\t\t{\"TCPInfo.Last_data_sent\", Field, 1, \"\"},\n\t\t{\"TCPInfo.Lost\", Field, 1, \"\"},\n\t\t{\"TCPInfo.Options\", Field, 1, \"\"},\n\t\t{\"TCPInfo.Pad_cgo_0\", Field, 1, \"\"},\n\t\t{\"TCPInfo.Pmtu\", Field, 1, \"\"},\n\t\t{\"TCPInfo.Probes\", Field, 1, \"\"},\n\t\t{\"TCPInfo.Rcv_mss\", Field, 1, \"\"},\n\t\t{\"TCPInfo.Rcv_rtt\", Field, 1, \"\"},\n\t\t{\"TCPInfo.Rcv_space\", Field, 1, \"\"},\n\t\t{\"TCPInfo.Rcv_ssthresh\", Field, 1, \"\"},\n\t\t{\"TCPInfo.Reordering\", Field, 1, \"\"},\n\t\t{\"TCPInfo.Retrans\", Field, 1, \"\"},\n\t\t{\"TCPInfo.Retransmits\", Field, 1, \"\"},\n\t\t{\"TCPInfo.Rto\", Field, 1, \"\"},\n\t\t{\"TCPInfo.Rtt\", Field, 1, \"\"},\n\t\t{\"TCPInfo.Rttvar\", Field, 1, \"\"},\n\t\t{\"TCPInfo.Sacked\", Field, 1, \"\"},\n\t\t{\"TCPInfo.Snd_cwnd\", Field, 1, \"\"},\n\t\t{\"TCPInfo.Snd_mss\", Field, 1, \"\"},\n\t\t{\"TCPInfo.Snd_ssthresh\", Field, 1, \"\"},\n\t\t{\"TCPInfo.State\", Field, 1, \"\"},\n\t\t{\"TCPInfo.Total_retrans\", Field, 1, \"\"},\n\t\t{\"TCPInfo.Unacked\", Field, 1, \"\"},\n\t\t{\"TCPKeepalive\", Type, 3, \"\"},\n\t\t{\"TCPKeepalive.Interval\", Field, 3, \"\"},\n\t\t{\"TCPKeepalive.OnOff\", Field, 3, \"\"},\n\t\t{\"TCPKeepalive.Time\", Field, 3, \"\"},\n\t\t{\"TCP_CA_NAME_MAX\", Const, 0, \"\"},\n\t\t{\"TCP_CONGCTL\", Const, 1, \"\"},\n\t\t{\"TCP_CONGESTION\", Const, 0, \"\"},\n\t\t{\"TCP_CONNECTIONTIMEOUT\", Const, 0, \"\"},\n\t\t{\"TCP_CORK\", Const, 0, \"\"},\n\t\t{\"TCP_DEFER_ACCEPT\", Const, 0, \"\"},\n\t\t{\"TCP_ENABLE_ECN\", Const, 16, \"\"},\n\t\t{\"TCP_INFO\", Const, 0, \"\"},\n\t\t{\"TCP_KEEPALIVE\", Const, 0, \"\"},\n\t\t{\"TCP_KEEPCNT\", Const, 0, \"\"},\n\t\t{\"TCP_KEEPIDLE\", Const, 0, \"\"},\n\t\t{\"TCP_KEEPINIT\", Const, 1, \"\"},\n\t\t{\"TCP_KEEPINTVL\", Const, 0, \"\"},\n\t\t{\"TCP_LINGER2\", Const, 0, \"\"},\n\t\t{\"TCP_MAXBURST\", Const, 0, \"\"},\n\t\t{\"TCP_MAXHLEN\", Const, 0, \"\"},\n\t\t{\"TCP_MAXOLEN\", Const, 0, \"\"},\n\t\t{\"TCP_MAXSEG\", Const, 0, \"\"},\n\t\t{\"TCP_MAXWIN\", Const, 0, \"\"},\n\t\t{\"TCP_MAX_SACK\", Const, 0, \"\"},\n\t\t{\"TCP_MAX_WINSHIFT\", Const, 0, \"\"},\n\t\t{\"TCP_MD5SIG\", Const, 0, \"\"},\n\t\t{\"TCP_MD5SIG_MAXKEYLEN\", Const, 0, \"\"},\n\t\t{\"TCP_MINMSS\", Const, 0, \"\"},\n\t\t{\"TCP_MINMSSOVERLOAD\", Const, 0, \"\"},\n\t\t{\"TCP_MSS\", Const, 0, \"\"},\n\t\t{\"TCP_NODELAY\", Const, 0, \"\"},\n\t\t{\"TCP_NOOPT\", Const, 0, \"\"},\n\t\t{\"TCP_NOPUSH\", Const, 0, \"\"},\n\t\t{\"TCP_NOTSENT_LOWAT\", Const, 16, \"\"},\n\t\t{\"TCP_NSTATES\", Const, 1, \"\"},\n\t\t{\"TCP_QUICKACK\", Const, 0, \"\"},\n\t\t{\"TCP_RXT_CONNDROPTIME\", Const, 0, \"\"},\n\t\t{\"TCP_RXT_FINDROP\", Const, 0, \"\"},\n\t\t{\"TCP_SACK_ENABLE\", Const, 1, \"\"},\n\t\t{\"TCP_SENDMOREACKS\", Const, 16, \"\"},\n\t\t{\"TCP_SYNCNT\", Const, 0, \"\"},\n\t\t{\"TCP_VENDOR\", Const, 3, \"\"},\n\t\t{\"TCP_WINDOW_CLAMP\", Const, 0, \"\"},\n\t\t{\"TCSAFLUSH\", Const, 1, \"\"},\n\t\t{\"TCSETS\", Const, 0, \"\"},\n\t\t{\"TF_DISCONNECT\", Const, 0, \"\"},\n\t\t{\"TF_REUSE_SOCKET\", Const, 0, \"\"},\n\t\t{\"TF_USE_DEFAULT_WORKER\", Const, 0, \"\"},\n\t\t{\"TF_USE_KERNEL_APC\", Const, 0, \"\"},\n\t\t{\"TF_USE_SYSTEM_THREAD\", Const, 0, \"\"},\n\t\t{\"TF_WRITE_BEHIND\", Const, 0, \"\"},\n\t\t{\"TH32CS_INHERIT\", Const, 4, \"\"},\n\t\t{\"TH32CS_SNAPALL\", Const, 4, \"\"},\n\t\t{\"TH32CS_SNAPHEAPLIST\", Const, 4, \"\"},\n\t\t{\"TH32CS_SNAPMODULE\", Const, 4, \"\"},\n\t\t{\"TH32CS_SNAPMODULE32\", Const, 4, \"\"},\n\t\t{\"TH32CS_SNAPPROCESS\", Const, 4, \"\"},\n\t\t{\"TH32CS_SNAPTHREAD\", Const, 4, \"\"},\n\t\t{\"TIME_ZONE_ID_DAYLIGHT\", Const, 0, \"\"},\n\t\t{\"TIME_ZONE_ID_STANDARD\", Const, 0, \"\"},\n\t\t{\"TIME_ZONE_ID_UNKNOWN\", Const, 0, \"\"},\n\t\t{\"TIOCCBRK\", Const, 0, \"\"},\n\t\t{\"TIOCCDTR\", Const, 0, \"\"},\n\t\t{\"TIOCCONS\", Const, 0, \"\"},\n\t\t{\"TIOCDCDTIMESTAMP\", Const, 0, \"\"},\n\t\t{\"TIOCDRAIN\", Const, 0, \"\"},\n\t\t{\"TIOCDSIMICROCODE\", Const, 0, \"\"},\n\t\t{\"TIOCEXCL\", Const, 0, \"\"},\n\t\t{\"TIOCEXT\", Const, 0, \"\"},\n\t\t{\"TIOCFLAG_CDTRCTS\", Const, 1, \"\"},\n\t\t{\"TIOCFLAG_CLOCAL\", Const, 1, \"\"},\n\t\t{\"TIOCFLAG_CRTSCTS\", Const, 1, \"\"},\n\t\t{\"TIOCFLAG_MDMBUF\", Const, 1, \"\"},\n\t\t{\"TIOCFLAG_PPS\", Const, 1, \"\"},\n\t\t{\"TIOCFLAG_SOFTCAR\", Const, 1, \"\"},\n\t\t{\"TIOCFLUSH\", Const, 0, \"\"},\n\t\t{\"TIOCGDEV\", Const, 0, \"\"},\n\t\t{\"TIOCGDRAINWAIT\", Const, 0, \"\"},\n\t\t{\"TIOCGETA\", Const, 0, \"\"},\n\t\t{\"TIOCGETD\", Const, 0, \"\"},\n\t\t{\"TIOCGFLAGS\", Const, 1, \"\"},\n\t\t{\"TIOCGICOUNT\", Const, 0, \"\"},\n\t\t{\"TIOCGLCKTRMIOS\", Const, 0, \"\"},\n\t\t{\"TIOCGLINED\", Const, 1, \"\"},\n\t\t{\"TIOCGPGRP\", Const, 0, \"\"},\n\t\t{\"TIOCGPTN\", Const, 0, \"\"},\n\t\t{\"TIOCGQSIZE\", Const, 1, \"\"},\n\t\t{\"TIOCGRANTPT\", Const, 1, \"\"},\n\t\t{\"TIOCGRS485\", Const, 0, \"\"},\n\t\t{\"TIOCGSERIAL\", Const, 0, \"\"},\n\t\t{\"TIOCGSID\", Const, 0, \"\"},\n\t\t{\"TIOCGSIZE\", Const, 1, \"\"},\n\t\t{\"TIOCGSOFTCAR\", Const, 0, \"\"},\n\t\t{\"TIOCGTSTAMP\", Const, 1, \"\"},\n\t\t{\"TIOCGWINSZ\", Const, 0, \"\"},\n\t\t{\"TIOCINQ\", Const, 0, \"\"},\n\t\t{\"TIOCIXOFF\", Const, 0, \"\"},\n\t\t{\"TIOCIXON\", Const, 0, \"\"},\n\t\t{\"TIOCLINUX\", Const, 0, \"\"},\n\t\t{\"TIOCMBIC\", Const, 0, \"\"},\n\t\t{\"TIOCMBIS\", Const, 0, \"\"},\n\t\t{\"TIOCMGDTRWAIT\", Const, 0, \"\"},\n\t\t{\"TIOCMGET\", Const, 0, \"\"},\n\t\t{\"TIOCMIWAIT\", Const, 0, \"\"},\n\t\t{\"TIOCMODG\", Const, 0, \"\"},\n\t\t{\"TIOCMODS\", Const, 0, \"\"},\n\t\t{\"TIOCMSDTRWAIT\", Const, 0, \"\"},\n\t\t{\"TIOCMSET\", Const, 0, \"\"},\n\t\t{\"TIOCM_CAR\", Const, 0, \"\"},\n\t\t{\"TIOCM_CD\", Const, 0, \"\"},\n\t\t{\"TIOCM_CTS\", Const, 0, \"\"},\n\t\t{\"TIOCM_DCD\", Const, 0, \"\"},\n\t\t{\"TIOCM_DSR\", Const, 0, \"\"},\n\t\t{\"TIOCM_DTR\", Const, 0, \"\"},\n\t\t{\"TIOCM_LE\", Const, 0, \"\"},\n\t\t{\"TIOCM_RI\", Const, 0, \"\"},\n\t\t{\"TIOCM_RNG\", Const, 0, \"\"},\n\t\t{\"TIOCM_RTS\", Const, 0, \"\"},\n\t\t{\"TIOCM_SR\", Const, 0, \"\"},\n\t\t{\"TIOCM_ST\", Const, 0, \"\"},\n\t\t{\"TIOCNOTTY\", Const, 0, \"\"},\n\t\t{\"TIOCNXCL\", Const, 0, \"\"},\n\t\t{\"TIOCOUTQ\", Const, 0, \"\"},\n\t\t{\"TIOCPKT\", Const, 0, \"\"},\n\t\t{\"TIOCPKT_DATA\", Const, 0, \"\"},\n\t\t{\"TIOCPKT_DOSTOP\", Const, 0, \"\"},\n\t\t{\"TIOCPKT_FLUSHREAD\", Const, 0, \"\"},\n\t\t{\"TIOCPKT_FLUSHWRITE\", Const, 0, \"\"},\n\t\t{\"TIOCPKT_IOCTL\", Const, 0, \"\"},\n\t\t{\"TIOCPKT_NOSTOP\", Const, 0, \"\"},\n\t\t{\"TIOCPKT_START\", Const, 0, \"\"},\n\t\t{\"TIOCPKT_STOP\", Const, 0, \"\"},\n\t\t{\"TIOCPTMASTER\", Const, 0, \"\"},\n\t\t{\"TIOCPTMGET\", Const, 1, \"\"},\n\t\t{\"TIOCPTSNAME\", Const, 1, \"\"},\n\t\t{\"TIOCPTYGNAME\", Const, 0, \"\"},\n\t\t{\"TIOCPTYGRANT\", Const, 0, \"\"},\n\t\t{\"TIOCPTYUNLK\", Const, 0, \"\"},\n\t\t{\"TIOCRCVFRAME\", Const, 1, \"\"},\n\t\t{\"TIOCREMOTE\", Const, 0, \"\"},\n\t\t{\"TIOCSBRK\", Const, 0, \"\"},\n\t\t{\"TIOCSCONS\", Const, 0, \"\"},\n\t\t{\"TIOCSCTTY\", Const, 0, \"\"},\n\t\t{\"TIOCSDRAINWAIT\", Const, 0, \"\"},\n\t\t{\"TIOCSDTR\", Const, 0, \"\"},\n\t\t{\"TIOCSERCONFIG\", Const, 0, \"\"},\n\t\t{\"TIOCSERGETLSR\", Const, 0, \"\"},\n\t\t{\"TIOCSERGETMULTI\", Const, 0, \"\"},\n\t\t{\"TIOCSERGSTRUCT\", Const, 0, \"\"},\n\t\t{\"TIOCSERGWILD\", Const, 0, \"\"},\n\t\t{\"TIOCSERSETMULTI\", Const, 0, \"\"},\n\t\t{\"TIOCSERSWILD\", Const, 0, \"\"},\n\t\t{\"TIOCSER_TEMT\", Const, 0, \"\"},\n\t\t{\"TIOCSETA\", Const, 0, \"\"},\n\t\t{\"TIOCSETAF\", Const, 0, \"\"},\n\t\t{\"TIOCSETAW\", Const, 0, \"\"},\n\t\t{\"TIOCSETD\", Const, 0, \"\"},\n\t\t{\"TIOCSFLAGS\", Const, 1, \"\"},\n\t\t{\"TIOCSIG\", Const, 0, \"\"},\n\t\t{\"TIOCSLCKTRMIOS\", Const, 0, \"\"},\n\t\t{\"TIOCSLINED\", Const, 1, \"\"},\n\t\t{\"TIOCSPGRP\", Const, 0, \"\"},\n\t\t{\"TIOCSPTLCK\", Const, 0, \"\"},\n\t\t{\"TIOCSQSIZE\", Const, 1, \"\"},\n\t\t{\"TIOCSRS485\", Const, 0, \"\"},\n\t\t{\"TIOCSSERIAL\", Const, 0, \"\"},\n\t\t{\"TIOCSSIZE\", Const, 1, \"\"},\n\t\t{\"TIOCSSOFTCAR\", Const, 0, \"\"},\n\t\t{\"TIOCSTART\", Const, 0, \"\"},\n\t\t{\"TIOCSTAT\", Const, 0, \"\"},\n\t\t{\"TIOCSTI\", Const, 0, \"\"},\n\t\t{\"TIOCSTOP\", Const, 0, \"\"},\n\t\t{\"TIOCSTSTAMP\", Const, 1, \"\"},\n\t\t{\"TIOCSWINSZ\", Const, 0, \"\"},\n\t\t{\"TIOCTIMESTAMP\", Const, 0, \"\"},\n\t\t{\"TIOCUCNTL\", Const, 0, \"\"},\n\t\t{\"TIOCVHANGUP\", Const, 0, \"\"},\n\t\t{\"TIOCXMTFRAME\", Const, 1, \"\"},\n\t\t{\"TOKEN_ADJUST_DEFAULT\", Const, 0, \"\"},\n\t\t{\"TOKEN_ADJUST_GROUPS\", Const, 0, \"\"},\n\t\t{\"TOKEN_ADJUST_PRIVILEGES\", Const, 0, \"\"},\n\t\t{\"TOKEN_ADJUST_SESSIONID\", Const, 11, \"\"},\n\t\t{\"TOKEN_ALL_ACCESS\", Const, 0, \"\"},\n\t\t{\"TOKEN_ASSIGN_PRIMARY\", Const, 0, \"\"},\n\t\t{\"TOKEN_DUPLICATE\", Const, 0, \"\"},\n\t\t{\"TOKEN_EXECUTE\", Const, 0, \"\"},\n\t\t{\"TOKEN_IMPERSONATE\", Const, 0, \"\"},\n\t\t{\"TOKEN_QUERY\", Const, 0, \"\"},\n\t\t{\"TOKEN_QUERY_SOURCE\", Const, 0, \"\"},\n\t\t{\"TOKEN_READ\", Const, 0, \"\"},\n\t\t{\"TOKEN_WRITE\", Const, 0, \"\"},\n\t\t{\"TOSTOP\", Const, 0, \"\"},\n\t\t{\"TRUNCATE_EXISTING\", Const, 0, \"\"},\n\t\t{\"TUNATTACHFILTER\", Const, 0, \"\"},\n\t\t{\"TUNDETACHFILTER\", Const, 0, \"\"},\n\t\t{\"TUNGETFEATURES\", Const, 0, \"\"},\n\t\t{\"TUNGETIFF\", Const, 0, \"\"},\n\t\t{\"TUNGETSNDBUF\", Const, 0, \"\"},\n\t\t{\"TUNGETVNETHDRSZ\", Const, 0, \"\"},\n\t\t{\"TUNSETDEBUG\", Const, 0, \"\"},\n\t\t{\"TUNSETGROUP\", Const, 0, \"\"},\n\t\t{\"TUNSETIFF\", Const, 0, \"\"},\n\t\t{\"TUNSETLINK\", Const, 0, \"\"},\n\t\t{\"TUNSETNOCSUM\", Const, 0, \"\"},\n\t\t{\"TUNSETOFFLOAD\", Const, 0, \"\"},\n\t\t{\"TUNSETOWNER\", Const, 0, \"\"},\n\t\t{\"TUNSETPERSIST\", Const, 0, \"\"},\n\t\t{\"TUNSETSNDBUF\", Const, 0, \"\"},\n\t\t{\"TUNSETTXFILTER\", Const, 0, \"\"},\n\t\t{\"TUNSETVNETHDRSZ\", Const, 0, \"\"},\n\t\t{\"Tee\", Func, 0, \"func(rfd int, wfd int, len int, flags int) (n int64, err error)\"},\n\t\t{\"TerminateProcess\", Func, 0, \"\"},\n\t\t{\"Termios\", Type, 0, \"\"},\n\t\t{\"Termios.Cc\", Field, 0, \"\"},\n\t\t{\"Termios.Cflag\", Field, 0, \"\"},\n\t\t{\"Termios.Iflag\", Field, 0, \"\"},\n\t\t{\"Termios.Ispeed\", Field, 0, \"\"},\n\t\t{\"Termios.Lflag\", Field, 0, \"\"},\n\t\t{\"Termios.Line\", Field, 0, \"\"},\n\t\t{\"Termios.Oflag\", Field, 0, \"\"},\n\t\t{\"Termios.Ospeed\", Field, 0, \"\"},\n\t\t{\"Termios.Pad_cgo_0\", Field, 0, \"\"},\n\t\t{\"Tgkill\", Func, 0, \"func(tgid int, tid int, sig Signal) (err error)\"},\n\t\t{\"Time\", Func, 0, \"func(t *Time_t) (tt Time_t, err error)\"},\n\t\t{\"Time_t\", Type, 0, \"\"},\n\t\t{\"Times\", Func, 0, \"func(tms *Tms) (ticks uintptr, err error)\"},\n\t\t{\"Timespec\", Type, 0, \"\"},\n\t\t{\"Timespec.Nsec\", Field, 0, \"\"},\n\t\t{\"Timespec.Pad_cgo_0\", Field, 2, \"\"},\n\t\t{\"Timespec.Sec\", Field, 0, \"\"},\n\t\t{\"TimespecToNsec\", Func, 0, \"func(ts Timespec) int64\"},\n\t\t{\"Timeval\", Type, 0, \"\"},\n\t\t{\"Timeval.Pad_cgo_0\", Field, 0, \"\"},\n\t\t{\"Timeval.Sec\", Field, 0, \"\"},\n\t\t{\"Timeval.Usec\", Field, 0, \"\"},\n\t\t{\"Timeval32\", Type, 0, \"\"},\n\t\t{\"Timeval32.Sec\", Field, 0, \"\"},\n\t\t{\"Timeval32.Usec\", Field, 0, \"\"},\n\t\t{\"TimevalToNsec\", Func, 0, \"func(tv Timeval) int64\"},\n\t\t{\"Timex\", Type, 0, \"\"},\n\t\t{\"Timex.Calcnt\", Field, 0, \"\"},\n\t\t{\"Timex.Constant\", Field, 0, \"\"},\n\t\t{\"Timex.Errcnt\", Field, 0, \"\"},\n\t\t{\"Timex.Esterror\", Field, 0, \"\"},\n\t\t{\"Timex.Freq\", Field, 0, \"\"},\n\t\t{\"Timex.Jitcnt\", Field, 0, \"\"},\n\t\t{\"Timex.Jitter\", Field, 0, \"\"},\n\t\t{\"Timex.Maxerror\", Field, 0, \"\"},\n\t\t{\"Timex.Modes\", Field, 0, \"\"},\n\t\t{\"Timex.Offset\", Field, 0, \"\"},\n\t\t{\"Timex.Pad_cgo_0\", Field, 0, \"\"},\n\t\t{\"Timex.Pad_cgo_1\", Field, 0, \"\"},\n\t\t{\"Timex.Pad_cgo_2\", Field, 0, \"\"},\n\t\t{\"Timex.Pad_cgo_3\", Field, 0, \"\"},\n\t\t{\"Timex.Ppsfreq\", Field, 0, \"\"},\n\t\t{\"Timex.Precision\", Field, 0, \"\"},\n\t\t{\"Timex.Shift\", Field, 0, \"\"},\n\t\t{\"Timex.Stabil\", Field, 0, \"\"},\n\t\t{\"Timex.Status\", Field, 0, \"\"},\n\t\t{\"Timex.Stbcnt\", Field, 0, \"\"},\n\t\t{\"Timex.Tai\", Field, 0, \"\"},\n\t\t{\"Timex.Tick\", Field, 0, \"\"},\n\t\t{\"Timex.Time\", Field, 0, \"\"},\n\t\t{\"Timex.Tolerance\", Field, 0, \"\"},\n\t\t{\"Timezoneinformation\", Type, 0, \"\"},\n\t\t{\"Timezoneinformation.Bias\", Field, 0, \"\"},\n\t\t{\"Timezoneinformation.DaylightBias\", Field, 0, \"\"},\n\t\t{\"Timezoneinformation.DaylightDate\", Field, 0, \"\"},\n\t\t{\"Timezoneinformation.DaylightName\", Field, 0, \"\"},\n\t\t{\"Timezoneinformation.StandardBias\", Field, 0, \"\"},\n\t\t{\"Timezoneinformation.StandardDate\", Field, 0, \"\"},\n\t\t{\"Timezoneinformation.StandardName\", Field, 0, \"\"},\n\t\t{\"Tms\", Type, 0, \"\"},\n\t\t{\"Tms.Cstime\", Field, 0, \"\"},\n\t\t{\"Tms.Cutime\", Field, 0, \"\"},\n\t\t{\"Tms.Stime\", Field, 0, \"\"},\n\t\t{\"Tms.Utime\", Field, 0, \"\"},\n\t\t{\"Token\", Type, 0, \"\"},\n\t\t{\"TokenAccessInformation\", Const, 0, \"\"},\n\t\t{\"TokenAuditPolicy\", Const, 0, \"\"},\n\t\t{\"TokenDefaultDacl\", Const, 0, \"\"},\n\t\t{\"TokenElevation\", Const, 0, \"\"},\n\t\t{\"TokenElevationType\", Const, 0, \"\"},\n\t\t{\"TokenGroups\", Const, 0, \"\"},\n\t\t{\"TokenGroupsAndPrivileges\", Const, 0, \"\"},\n\t\t{\"TokenHasRestrictions\", Const, 0, \"\"},\n\t\t{\"TokenImpersonationLevel\", Const, 0, \"\"},\n\t\t{\"TokenIntegrityLevel\", Const, 0, \"\"},\n\t\t{\"TokenLinkedToken\", Const, 0, \"\"},\n\t\t{\"TokenLogonSid\", Const, 0, \"\"},\n\t\t{\"TokenMandatoryPolicy\", Const, 0, \"\"},\n\t\t{\"TokenOrigin\", Const, 0, \"\"},\n\t\t{\"TokenOwner\", Const, 0, \"\"},\n\t\t{\"TokenPrimaryGroup\", Const, 0, \"\"},\n\t\t{\"TokenPrivileges\", Const, 0, \"\"},\n\t\t{\"TokenRestrictedSids\", Const, 0, \"\"},\n\t\t{\"TokenSandBoxInert\", Const, 0, \"\"},\n\t\t{\"TokenSessionId\", Const, 0, \"\"},\n\t\t{\"TokenSessionReference\", Const, 0, \"\"},\n\t\t{\"TokenSource\", Const, 0, \"\"},\n\t\t{\"TokenStatistics\", Const, 0, \"\"},\n\t\t{\"TokenType\", Const, 0, \"\"},\n\t\t{\"TokenUIAccess\", Const, 0, \"\"},\n\t\t{\"TokenUser\", Const, 0, \"\"},\n\t\t{\"TokenVirtualizationAllowed\", Const, 0, \"\"},\n\t\t{\"TokenVirtualizationEnabled\", Const, 0, \"\"},\n\t\t{\"Tokenprimarygroup\", Type, 0, \"\"},\n\t\t{\"Tokenprimarygroup.PrimaryGroup\", Field, 0, \"\"},\n\t\t{\"Tokenuser\", Type, 0, \"\"},\n\t\t{\"Tokenuser.User\", Field, 0, \"\"},\n\t\t{\"TranslateAccountName\", Func, 0, \"\"},\n\t\t{\"TranslateName\", Func, 0, \"\"},\n\t\t{\"TransmitFile\", Func, 0, \"\"},\n\t\t{\"TransmitFileBuffers\", Type, 0, \"\"},\n\t\t{\"TransmitFileBuffers.Head\", Field, 0, \"\"},\n\t\t{\"TransmitFileBuffers.HeadLength\", Field, 0, \"\"},\n\t\t{\"TransmitFileBuffers.Tail\", Field, 0, \"\"},\n\t\t{\"TransmitFileBuffers.TailLength\", Field, 0, \"\"},\n\t\t{\"Truncate\", Func, 0, \"func(path string, length int64) (err error)\"},\n\t\t{\"UNIX_PATH_MAX\", Const, 12, \"\"},\n\t\t{\"USAGE_MATCH_TYPE_AND\", Const, 0, \"\"},\n\t\t{\"USAGE_MATCH_TYPE_OR\", Const, 0, \"\"},\n\t\t{\"UTF16FromString\", Func, 1, \"\"},\n\t\t{\"UTF16PtrFromString\", Func, 1, \"\"},\n\t\t{\"UTF16ToString\", Func, 0, \"\"},\n\t\t{\"Ucred\", Type, 0, \"\"},\n\t\t{\"Ucred.Gid\", Field, 0, \"\"},\n\t\t{\"Ucred.Pid\", Field, 0, \"\"},\n\t\t{\"Ucred.Uid\", Field, 0, \"\"},\n\t\t{\"Umask\", Func, 0, \"func(mask int) (oldmask int)\"},\n\t\t{\"Uname\", Func, 0, \"func(buf *Utsname) (err error)\"},\n\t\t{\"Undelete\", Func, 0, \"\"},\n\t\t{\"UnixCredentials\", Func, 0, \"func(ucred *Ucred) []byte\"},\n\t\t{\"UnixRights\", Func, 0, \"func(fds ...int) []byte\"},\n\t\t{\"Unlink\", Func, 0, \"func(path string) error\"},\n\t\t{\"Unlinkat\", Func, 0, \"func(dirfd int, path string) error\"},\n\t\t{\"UnmapViewOfFile\", Func, 0, \"\"},\n\t\t{\"Unmount\", Func, 0, \"func(target string, flags int) (err error)\"},\n\t\t{\"Unsetenv\", Func, 4, \"func(key string) error\"},\n\t\t{\"Unshare\", Func, 0, \"func(flags int) (err error)\"},\n\t\t{\"UserInfo10\", Type, 0, \"\"},\n\t\t{\"UserInfo10.Comment\", Field, 0, \"\"},\n\t\t{\"UserInfo10.FullName\", Field, 0, \"\"},\n\t\t{\"UserInfo10.Name\", Field, 0, \"\"},\n\t\t{\"UserInfo10.UsrComment\", Field, 0, \"\"},\n\t\t{\"Ustat\", Func, 0, \"func(dev int, ubuf *Ustat_t) (err error)\"},\n\t\t{\"Ustat_t\", Type, 0, \"\"},\n\t\t{\"Ustat_t.Fname\", Field, 0, \"\"},\n\t\t{\"Ustat_t.Fpack\", Field, 0, \"\"},\n\t\t{\"Ustat_t.Pad_cgo_0\", Field, 0, \"\"},\n\t\t{\"Ustat_t.Pad_cgo_1\", Field, 0, \"\"},\n\t\t{\"Ustat_t.Tfree\", Field, 0, \"\"},\n\t\t{\"Ustat_t.Tinode\", Field, 0, \"\"},\n\t\t{\"Utimbuf\", Type, 0, \"\"},\n\t\t{\"Utimbuf.Actime\", Field, 0, \"\"},\n\t\t{\"Utimbuf.Modtime\", Field, 0, \"\"},\n\t\t{\"Utime\", Func, 0, \"func(path string, buf *Utimbuf) (err error)\"},\n\t\t{\"Utimes\", Func, 0, \"func(path string, tv []Timeval) (err error)\"},\n\t\t{\"UtimesNano\", Func, 1, \"func(path string, ts []Timespec) (err error)\"},\n\t\t{\"Utsname\", Type, 0, \"\"},\n\t\t{\"Utsname.Domainname\", Field, 0, \"\"},\n\t\t{\"Utsname.Machine\", Field, 0, \"\"},\n\t\t{\"Utsname.Nodename\", Field, 0, \"\"},\n\t\t{\"Utsname.Release\", Field, 0, \"\"},\n\t\t{\"Utsname.Sysname\", Field, 0, \"\"},\n\t\t{\"Utsname.Version\", Field, 0, \"\"},\n\t\t{\"VDISCARD\", Const, 0, \"\"},\n\t\t{\"VDSUSP\", Const, 1, \"\"},\n\t\t{\"VEOF\", Const, 0, \"\"},\n\t\t{\"VEOL\", Const, 0, \"\"},\n\t\t{\"VEOL2\", Const, 0, \"\"},\n\t\t{\"VERASE\", Const, 0, \"\"},\n\t\t{\"VERASE2\", Const, 1, \"\"},\n\t\t{\"VINTR\", Const, 0, \"\"},\n\t\t{\"VKILL\", Const, 0, \"\"},\n\t\t{\"VLNEXT\", Const, 0, \"\"},\n\t\t{\"VMIN\", Const, 0, \"\"},\n\t\t{\"VQUIT\", Const, 0, \"\"},\n\t\t{\"VREPRINT\", Const, 0, \"\"},\n\t\t{\"VSTART\", Const, 0, \"\"},\n\t\t{\"VSTATUS\", Const, 1, \"\"},\n\t\t{\"VSTOP\", Const, 0, \"\"},\n\t\t{\"VSUSP\", Const, 0, \"\"},\n\t\t{\"VSWTC\", Const, 0, \"\"},\n\t\t{\"VT0\", Const, 1, \"\"},\n\t\t{\"VT1\", Const, 1, \"\"},\n\t\t{\"VTDLY\", Const, 1, \"\"},\n\t\t{\"VTIME\", Const, 0, \"\"},\n\t\t{\"VWERASE\", Const, 0, \"\"},\n\t\t{\"VirtualLock\", Func, 0, \"\"},\n\t\t{\"VirtualUnlock\", Func, 0, \"\"},\n\t\t{\"WAIT_ABANDONED\", Const, 0, \"\"},\n\t\t{\"WAIT_FAILED\", Const, 0, \"\"},\n\t\t{\"WAIT_OBJECT_0\", Const, 0, \"\"},\n\t\t{\"WAIT_TIMEOUT\", Const, 0, \"\"},\n\t\t{\"WALL\", Const, 0, \"\"},\n\t\t{\"WALLSIG\", Const, 1, \"\"},\n\t\t{\"WALTSIG\", Const, 1, \"\"},\n\t\t{\"WCLONE\", Const, 0, \"\"},\n\t\t{\"WCONTINUED\", Const, 0, \"\"},\n\t\t{\"WCOREFLAG\", Const, 0, \"\"},\n\t\t{\"WEXITED\", Const, 0, \"\"},\n\t\t{\"WLINUXCLONE\", Const, 0, \"\"},\n\t\t{\"WNOHANG\", Const, 0, \"\"},\n\t\t{\"WNOTHREAD\", Const, 0, \"\"},\n\t\t{\"WNOWAIT\", Const, 0, \"\"},\n\t\t{\"WNOZOMBIE\", Const, 1, \"\"},\n\t\t{\"WOPTSCHECKED\", Const, 1, \"\"},\n\t\t{\"WORDSIZE\", Const, 0, \"\"},\n\t\t{\"WSABuf\", Type, 0, \"\"},\n\t\t{\"WSABuf.Buf\", Field, 0, \"\"},\n\t\t{\"WSABuf.Len\", Field, 0, \"\"},\n\t\t{\"WSACleanup\", Func, 0, \"\"},\n\t\t{\"WSADESCRIPTION_LEN\", Const, 0, \"\"},\n\t\t{\"WSAData\", Type, 0, \"\"},\n\t\t{\"WSAData.Description\", Field, 0, \"\"},\n\t\t{\"WSAData.HighVersion\", Field, 0, \"\"},\n\t\t{\"WSAData.MaxSockets\", Field, 0, \"\"},\n\t\t{\"WSAData.MaxUdpDg\", Field, 0, \"\"},\n\t\t{\"WSAData.SystemStatus\", Field, 0, \"\"},\n\t\t{\"WSAData.VendorInfo\", Field, 0, \"\"},\n\t\t{\"WSAData.Version\", Field, 0, \"\"},\n\t\t{\"WSAEACCES\", Const, 2, \"\"},\n\t\t{\"WSAECONNABORTED\", Const, 9, \"\"},\n\t\t{\"WSAECONNRESET\", Const, 3, \"\"},\n\t\t{\"WSAENOPROTOOPT\", Const, 23, \"\"},\n\t\t{\"WSAEnumProtocols\", Func, 2, \"\"},\n\t\t{\"WSAID_CONNECTEX\", Var, 1, \"\"},\n\t\t{\"WSAIoctl\", Func, 0, \"\"},\n\t\t{\"WSAPROTOCOL_LEN\", Const, 2, \"\"},\n\t\t{\"WSAProtocolChain\", Type, 2, \"\"},\n\t\t{\"WSAProtocolChain.ChainEntries\", Field, 2, \"\"},\n\t\t{\"WSAProtocolChain.ChainLen\", Field, 2, \"\"},\n\t\t{\"WSAProtocolInfo\", Type, 2, \"\"},\n\t\t{\"WSAProtocolInfo.AddressFamily\", Field, 2, \"\"},\n\t\t{\"WSAProtocolInfo.CatalogEntryId\", Field, 2, \"\"},\n\t\t{\"WSAProtocolInfo.MaxSockAddr\", Field, 2, \"\"},\n\t\t{\"WSAProtocolInfo.MessageSize\", Field, 2, \"\"},\n\t\t{\"WSAProtocolInfo.MinSockAddr\", Field, 2, \"\"},\n\t\t{\"WSAProtocolInfo.NetworkByteOrder\", Field, 2, \"\"},\n\t\t{\"WSAProtocolInfo.Protocol\", Field, 2, \"\"},\n\t\t{\"WSAProtocolInfo.ProtocolChain\", Field, 2, \"\"},\n\t\t{\"WSAProtocolInfo.ProtocolMaxOffset\", Field, 2, \"\"},\n\t\t{\"WSAProtocolInfo.ProtocolName\", Field, 2, \"\"},\n\t\t{\"WSAProtocolInfo.ProviderFlags\", Field, 2, \"\"},\n\t\t{\"WSAProtocolInfo.ProviderId\", Field, 2, \"\"},\n\t\t{\"WSAProtocolInfo.ProviderReserved\", Field, 2, \"\"},\n\t\t{\"WSAProtocolInfo.SecurityScheme\", Field, 2, \"\"},\n\t\t{\"WSAProtocolInfo.ServiceFlags1\", Field, 2, \"\"},\n\t\t{\"WSAProtocolInfo.ServiceFlags2\", Field, 2, \"\"},\n\t\t{\"WSAProtocolInfo.ServiceFlags3\", Field, 2, \"\"},\n\t\t{\"WSAProtocolInfo.ServiceFlags4\", Field, 2, \"\"},\n\t\t{\"WSAProtocolInfo.SocketType\", Field, 2, \"\"},\n\t\t{\"WSAProtocolInfo.Version\", Field, 2, \"\"},\n\t\t{\"WSARecv\", Func, 0, \"\"},\n\t\t{\"WSARecvFrom\", Func, 0, \"\"},\n\t\t{\"WSASYS_STATUS_LEN\", Const, 0, \"\"},\n\t\t{\"WSASend\", Func, 0, \"\"},\n\t\t{\"WSASendTo\", Func, 0, \"\"},\n\t\t{\"WSASendto\", Func, 0, \"\"},\n\t\t{\"WSAStartup\", Func, 0, \"\"},\n\t\t{\"WSTOPPED\", Const, 0, \"\"},\n\t\t{\"WTRAPPED\", Const, 1, \"\"},\n\t\t{\"WUNTRACED\", Const, 0, \"\"},\n\t\t{\"Wait4\", Func, 0, \"func(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error)\"},\n\t\t{\"WaitForSingleObject\", Func, 0, \"\"},\n\t\t{\"WaitStatus\", Type, 0, \"\"},\n\t\t{\"WaitStatus.ExitCode\", Field, 0, \"\"},\n\t\t{\"Win32FileAttributeData\", Type, 0, \"\"},\n\t\t{\"Win32FileAttributeData.CreationTime\", Field, 0, \"\"},\n\t\t{\"Win32FileAttributeData.FileAttributes\", Field, 0, \"\"},\n\t\t{\"Win32FileAttributeData.FileSizeHigh\", Field, 0, \"\"},\n\t\t{\"Win32FileAttributeData.FileSizeLow\", Field, 0, \"\"},\n\t\t{\"Win32FileAttributeData.LastAccessTime\", Field, 0, \"\"},\n\t\t{\"Win32FileAttributeData.LastWriteTime\", Field, 0, \"\"},\n\t\t{\"Win32finddata\", Type, 0, \"\"},\n\t\t{\"Win32finddata.AlternateFileName\", Field, 0, \"\"},\n\t\t{\"Win32finddata.CreationTime\", Field, 0, \"\"},\n\t\t{\"Win32finddata.FileAttributes\", Field, 0, \"\"},\n\t\t{\"Win32finddata.FileName\", Field, 0, \"\"},\n\t\t{\"Win32finddata.FileSizeHigh\", Field, 0, \"\"},\n\t\t{\"Win32finddata.FileSizeLow\", Field, 0, \"\"},\n\t\t{\"Win32finddata.LastAccessTime\", Field, 0, \"\"},\n\t\t{\"Win32finddata.LastWriteTime\", Field, 0, \"\"},\n\t\t{\"Win32finddata.Reserved0\", Field, 0, \"\"},\n\t\t{\"Win32finddata.Reserved1\", Field, 0, \"\"},\n\t\t{\"Write\", Func, 0, \"func(fd int, p []byte) (n int, err error)\"},\n\t\t{\"WriteConsole\", Func, 1, \"\"},\n\t\t{\"WriteFile\", Func, 0, \"\"},\n\t\t{\"X509_ASN_ENCODING\", Const, 0, \"\"},\n\t\t{\"XCASE\", Const, 0, \"\"},\n\t\t{\"XP1_CONNECTIONLESS\", Const, 2, \"\"},\n\t\t{\"XP1_CONNECT_DATA\", Const, 2, \"\"},\n\t\t{\"XP1_DISCONNECT_DATA\", Const, 2, \"\"},\n\t\t{\"XP1_EXPEDITED_DATA\", Const, 2, \"\"},\n\t\t{\"XP1_GRACEFUL_CLOSE\", Const, 2, \"\"},\n\t\t{\"XP1_GUARANTEED_DELIVERY\", Const, 2, \"\"},\n\t\t{\"XP1_GUARANTEED_ORDER\", Const, 2, \"\"},\n\t\t{\"XP1_IFS_HANDLES\", Const, 2, \"\"},\n\t\t{\"XP1_MESSAGE_ORIENTED\", Const, 2, \"\"},\n\t\t{\"XP1_MULTIPOINT_CONTROL_PLANE\", Const, 2, \"\"},\n\t\t{\"XP1_MULTIPOINT_DATA_PLANE\", Const, 2, \"\"},\n\t\t{\"XP1_PARTIAL_MESSAGE\", Const, 2, \"\"},\n\t\t{\"XP1_PSEUDO_STREAM\", Const, 2, \"\"},\n\t\t{\"XP1_QOS_SUPPORTED\", Const, 2, \"\"},\n\t\t{\"XP1_SAN_SUPPORT_SDP\", Const, 2, \"\"},\n\t\t{\"XP1_SUPPORT_BROADCAST\", Const, 2, \"\"},\n\t\t{\"XP1_SUPPORT_MULTIPOINT\", Const, 2, \"\"},\n\t\t{\"XP1_UNI_RECV\", Const, 2, \"\"},\n\t\t{\"XP1_UNI_SEND\", Const, 2, \"\"},\n\t},\n\t\"syscall/js\": {\n\t\t{\"CopyBytesToGo\", Func, 0, \"\"},\n\t\t{\"CopyBytesToJS\", Func, 0, \"\"},\n\t\t{\"Error\", Type, 0, \"\"},\n\t\t{\"Func\", Type, 0, \"\"},\n\t\t{\"FuncOf\", Func, 0, \"\"},\n\t\t{\"Global\", Func, 0, \"\"},\n\t\t{\"Null\", Func, 0, \"\"},\n\t\t{\"Type\", Type, 0, \"\"},\n\t\t{\"TypeBoolean\", Const, 0, \"\"},\n\t\t{\"TypeFunction\", Const, 0, \"\"},\n\t\t{\"TypeNull\", Const, 0, \"\"},\n\t\t{\"TypeNumber\", Const, 0, \"\"},\n\t\t{\"TypeObject\", Const, 0, \"\"},\n\t\t{\"TypeString\", Const, 0, \"\"},\n\t\t{\"TypeSymbol\", Const, 0, \"\"},\n\t\t{\"TypeUndefined\", Const, 0, \"\"},\n\t\t{\"Undefined\", Func, 0, \"\"},\n\t\t{\"Value\", Type, 0, \"\"},\n\t\t{\"ValueError\", Type, 0, \"\"},\n\t\t{\"ValueOf\", Func, 0, \"\"},\n\t},\n\t\"testing\": {\n\t\t{\"(*B).ArtifactDir\", Method, 26, \"\"},\n\t\t{\"(*B).Attr\", Method, 25, \"\"},\n\t\t{\"(*B).Chdir\", Method, 24, \"\"},\n\t\t{\"(*B).Cleanup\", Method, 14, \"\"},\n\t\t{\"(*B).Context\", Method, 24, \"\"},\n\t\t{\"(*B).Elapsed\", Method, 20, \"\"},\n\t\t{\"(*B).Error\", Method, 0, \"\"},\n\t\t{\"(*B).Errorf\", Method, 0, \"\"},\n\t\t{\"(*B).Fail\", Method, 0, \"\"},\n\t\t{\"(*B).FailNow\", Method, 0, \"\"},\n\t\t{\"(*B).Failed\", Method, 0, \"\"},\n\t\t{\"(*B).Fatal\", Method, 0, \"\"},\n\t\t{\"(*B).Fatalf\", Method, 0, \"\"},\n\t\t{\"(*B).Helper\", Method, 9, \"\"},\n\t\t{\"(*B).Log\", Method, 0, \"\"},\n\t\t{\"(*B).Logf\", Method, 0, \"\"},\n\t\t{\"(*B).Loop\", Method, 24, \"\"},\n\t\t{\"(*B).Name\", Method, 8, \"\"},\n\t\t{\"(*B).Output\", Method, 25, \"\"},\n\t\t{\"(*B).ReportAllocs\", Method, 1, \"\"},\n\t\t{\"(*B).ReportMetric\", Method, 13, \"\"},\n\t\t{\"(*B).ResetTimer\", Method, 0, \"\"},\n\t\t{\"(*B).Run\", Method, 7, \"\"},\n\t\t{\"(*B).RunParallel\", Method, 3, \"\"},\n\t\t{\"(*B).SetBytes\", Method, 0, \"\"},\n\t\t{\"(*B).SetParallelism\", Method, 3, \"\"},\n\t\t{\"(*B).Setenv\", Method, 17, \"\"},\n\t\t{\"(*B).Skip\", Method, 1, \"\"},\n\t\t{\"(*B).SkipNow\", Method, 1, \"\"},\n\t\t{\"(*B).Skipf\", Method, 1, \"\"},\n\t\t{\"(*B).Skipped\", Method, 1, \"\"},\n\t\t{\"(*B).StartTimer\", Method, 0, \"\"},\n\t\t{\"(*B).StopTimer\", Method, 0, \"\"},\n\t\t{\"(*B).TempDir\", Method, 15, \"\"},\n\t\t{\"(*F).Add\", Method, 18, \"\"},\n\t\t{\"(*F).ArtifactDir\", Method, 26, \"\"},\n\t\t{\"(*F).Attr\", Method, 25, \"\"},\n\t\t{\"(*F).Chdir\", Method, 24, \"\"},\n\t\t{\"(*F).Cleanup\", Method, 18, \"\"},\n\t\t{\"(*F).Context\", Method, 24, \"\"},\n\t\t{\"(*F).Error\", Method, 18, \"\"},\n\t\t{\"(*F).Errorf\", Method, 18, \"\"},\n\t\t{\"(*F).Fail\", Method, 18, \"\"},\n\t\t{\"(*F).FailNow\", Method, 18, \"\"},\n\t\t{\"(*F).Failed\", Method, 18, \"\"},\n\t\t{\"(*F).Fatal\", Method, 18, \"\"},\n\t\t{\"(*F).Fatalf\", Method, 18, \"\"},\n\t\t{\"(*F).Fuzz\", Method, 18, \"\"},\n\t\t{\"(*F).Helper\", Method, 18, \"\"},\n\t\t{\"(*F).Log\", Method, 18, \"\"},\n\t\t{\"(*F).Logf\", Method, 18, \"\"},\n\t\t{\"(*F).Name\", Method, 18, \"\"},\n\t\t{\"(*F).Output\", Method, 25, \"\"},\n\t\t{\"(*F).Setenv\", Method, 18, \"\"},\n\t\t{\"(*F).Skip\", Method, 18, \"\"},\n\t\t{\"(*F).SkipNow\", Method, 18, \"\"},\n\t\t{\"(*F).Skipf\", Method, 18, \"\"},\n\t\t{\"(*F).Skipped\", Method, 18, \"\"},\n\t\t{\"(*F).TempDir\", Method, 18, \"\"},\n\t\t{\"(*M).Run\", Method, 4, \"\"},\n\t\t{\"(*PB).Next\", Method, 3, \"\"},\n\t\t{\"(*T).ArtifactDir\", Method, 26, \"\"},\n\t\t{\"(*T).Attr\", Method, 25, \"\"},\n\t\t{\"(*T).Chdir\", Method, 24, \"\"},\n\t\t{\"(*T).Cleanup\", Method, 14, \"\"},\n\t\t{\"(*T).Context\", Method, 24, \"\"},\n\t\t{\"(*T).Deadline\", Method, 15, \"\"},\n\t\t{\"(*T).Error\", Method, 0, \"\"},\n\t\t{\"(*T).Errorf\", Method, 0, \"\"},\n\t\t{\"(*T).Fail\", Method, 0, \"\"},\n\t\t{\"(*T).FailNow\", Method, 0, \"\"},\n\t\t{\"(*T).Failed\", Method, 0, \"\"},\n\t\t{\"(*T).Fatal\", Method, 0, \"\"},\n\t\t{\"(*T).Fatalf\", Method, 0, \"\"},\n\t\t{\"(*T).Helper\", Method, 9, \"\"},\n\t\t{\"(*T).Log\", Method, 0, \"\"},\n\t\t{\"(*T).Logf\", Method, 0, \"\"},\n\t\t{\"(*T).Name\", Method, 8, \"\"},\n\t\t{\"(*T).Output\", Method, 25, \"\"},\n\t\t{\"(*T).Parallel\", Method, 0, \"\"},\n\t\t{\"(*T).Run\", Method, 7, \"\"},\n\t\t{\"(*T).Setenv\", Method, 17, \"\"},\n\t\t{\"(*T).Skip\", Method, 1, \"\"},\n\t\t{\"(*T).SkipNow\", Method, 1, \"\"},\n\t\t{\"(*T).Skipf\", Method, 1, \"\"},\n\t\t{\"(*T).Skipped\", Method, 1, \"\"},\n\t\t{\"(*T).TempDir\", Method, 15, \"\"},\n\t\t{\"(BenchmarkResult).AllocedBytesPerOp\", Method, 1, \"\"},\n\t\t{\"(BenchmarkResult).AllocsPerOp\", Method, 1, \"\"},\n\t\t{\"(BenchmarkResult).MemString\", Method, 1, \"\"},\n\t\t{\"(BenchmarkResult).NsPerOp\", Method, 0, \"\"},\n\t\t{\"(BenchmarkResult).String\", Method, 0, \"\"},\n\t\t{\"(TB).ArtifactDir\", Method, 26, \"\"},\n\t\t{\"(TB).Attr\", Method, 25, \"\"},\n\t\t{\"(TB).Chdir\", Method, 24, \"\"},\n\t\t{\"(TB).Cleanup\", Method, 14, \"\"},\n\t\t{\"(TB).Context\", Method, 24, \"\"},\n\t\t{\"(TB).Error\", Method, 2, \"\"},\n\t\t{\"(TB).Errorf\", Method, 2, \"\"},\n\t\t{\"(TB).Fail\", Method, 2, \"\"},\n\t\t{\"(TB).FailNow\", Method, 2, \"\"},\n\t\t{\"(TB).Failed\", Method, 2, \"\"},\n\t\t{\"(TB).Fatal\", Method, 2, \"\"},\n\t\t{\"(TB).Fatalf\", Method, 2, \"\"},\n\t\t{\"(TB).Helper\", Method, 9, \"\"},\n\t\t{\"(TB).Log\", Method, 2, \"\"},\n\t\t{\"(TB).Logf\", Method, 2, \"\"},\n\t\t{\"(TB).Name\", Method, 8, \"\"},\n\t\t{\"(TB).Output\", Method, 25, \"\"},\n\t\t{\"(TB).Setenv\", Method, 17, \"\"},\n\t\t{\"(TB).Skip\", Method, 2, \"\"},\n\t\t{\"(TB).SkipNow\", Method, 2, \"\"},\n\t\t{\"(TB).Skipf\", Method, 2, \"\"},\n\t\t{\"(TB).Skipped\", Method, 2, \"\"},\n\t\t{\"(TB).TempDir\", Method, 15, \"\"},\n\t\t{\"AllocsPerRun\", Func, 1, \"func(runs int, f func()) (avg float64)\"},\n\t\t{\"B\", Type, 0, \"\"},\n\t\t{\"B.N\", Field, 0, \"\"},\n\t\t{\"Benchmark\", Func, 0, \"func(f func(b *B)) BenchmarkResult\"},\n\t\t{\"BenchmarkResult\", Type, 0, \"\"},\n\t\t{\"BenchmarkResult.Bytes\", Field, 0, \"\"},\n\t\t{\"BenchmarkResult.Extra\", Field, 13, \"\"},\n\t\t{\"BenchmarkResult.MemAllocs\", Field, 1, \"\"},\n\t\t{\"BenchmarkResult.MemBytes\", Field, 1, \"\"},\n\t\t{\"BenchmarkResult.N\", Field, 0, \"\"},\n\t\t{\"BenchmarkResult.T\", Field, 0, \"\"},\n\t\t{\"Cover\", Type, 2, \"\"},\n\t\t{\"Cover.Blocks\", Field, 2, \"\"},\n\t\t{\"Cover.Counters\", Field, 2, \"\"},\n\t\t{\"Cover.CoveredPackages\", Field, 2, \"\"},\n\t\t{\"Cover.Mode\", Field, 2, \"\"},\n\t\t{\"CoverBlock\", Type, 2, \"\"},\n\t\t{\"CoverBlock.Col0\", Field, 2, \"\"},\n\t\t{\"CoverBlock.Col1\", Field, 2, \"\"},\n\t\t{\"CoverBlock.Line0\", Field, 2, \"\"},\n\t\t{\"CoverBlock.Line1\", Field, 2, \"\"},\n\t\t{\"CoverBlock.Stmts\", Field, 2, \"\"},\n\t\t{\"CoverMode\", Func, 8, \"func() string\"},\n\t\t{\"Coverage\", Func, 4, \"func() float64\"},\n\t\t{\"F\", Type, 18, \"\"},\n\t\t{\"Init\", Func, 13, \"func()\"},\n\t\t{\"InternalBenchmark\", Type, 0, \"\"},\n\t\t{\"InternalBenchmark.F\", Field, 0, \"\"},\n\t\t{\"InternalBenchmark.Name\", Field, 0, \"\"},\n\t\t{\"InternalExample\", Type, 0, \"\"},\n\t\t{\"InternalExample.F\", Field, 0, \"\"},\n\t\t{\"InternalExample.Name\", Field, 0, \"\"},\n\t\t{\"InternalExample.Output\", Field, 0, \"\"},\n\t\t{\"InternalExample.Unordered\", Field, 7, \"\"},\n\t\t{\"InternalFuzzTarget\", Type, 18, \"\"},\n\t\t{\"InternalFuzzTarget.Fn\", Field, 18, \"\"},\n\t\t{\"InternalFuzzTarget.Name\", Field, 18, \"\"},\n\t\t{\"InternalTest\", Type, 0, \"\"},\n\t\t{\"InternalTest.F\", Field, 0, \"\"},\n\t\t{\"InternalTest.Name\", Field, 0, \"\"},\n\t\t{\"M\", Type, 4, \"\"},\n\t\t{\"Main\", Func, 0, \"func(matchString func(pat string, str string) (bool, error), tests []InternalTest, benchmarks []InternalBenchmark, examples []InternalExample)\"},\n\t\t{\"MainStart\", Func, 4, \"func(deps testDeps, tests []InternalTest, benchmarks []InternalBenchmark, fuzzTargets []InternalFuzzTarget, examples []InternalExample) *M\"},\n\t\t{\"PB\", Type, 3, \"\"},\n\t\t{\"RegisterCover\", Func, 2, \"func(c Cover)\"},\n\t\t{\"RunBenchmarks\", Func, 0, \"func(matchString func(pat string, str string) (bool, error), benchmarks []InternalBenchmark)\"},\n\t\t{\"RunExamples\", Func, 0, \"func(matchString func(pat string, str string) (bool, error), examples []InternalExample) (ok bool)\"},\n\t\t{\"RunTests\", Func, 0, \"func(matchString func(pat string, str string) (bool, error), tests []InternalTest) (ok bool)\"},\n\t\t{\"Short\", Func, 0, \"func() bool\"},\n\t\t{\"T\", Type, 0, \"\"},\n\t\t{\"Testing\", Func, 21, \"func() bool\"},\n\t\t{\"Verbose\", Func, 1, \"func() bool\"},\n\t},\n\t\"testing/cryptotest\": {\n\t\t{\"SetGlobalRandom\", Func, 26, \"func(t *testing.T, seed uint64)\"},\n\t},\n\t\"testing/fstest\": {\n\t\t{\"(MapFS).Glob\", Method, 16, \"\"},\n\t\t{\"(MapFS).Lstat\", Method, 25, \"\"},\n\t\t{\"(MapFS).Open\", Method, 16, \"\"},\n\t\t{\"(MapFS).ReadDir\", Method, 16, \"\"},\n\t\t{\"(MapFS).ReadFile\", Method, 16, \"\"},\n\t\t{\"(MapFS).ReadLink\", Method, 25, \"\"},\n\t\t{\"(MapFS).Stat\", Method, 16, \"\"},\n\t\t{\"(MapFS).Sub\", Method, 16, \"\"},\n\t\t{\"MapFS\", Type, 16, \"\"},\n\t\t{\"MapFile\", Type, 16, \"\"},\n\t\t{\"MapFile.Data\", Field, 16, \"\"},\n\t\t{\"MapFile.ModTime\", Field, 16, \"\"},\n\t\t{\"MapFile.Mode\", Field, 16, \"\"},\n\t\t{\"MapFile.Sys\", Field, 16, \"\"},\n\t\t{\"TestFS\", Func, 16, \"func(fsys fs.FS, expected ...string) error\"},\n\t},\n\t\"testing/iotest\": {\n\t\t{\"DataErrReader\", Func, 0, \"func(r io.Reader) io.Reader\"},\n\t\t{\"ErrReader\", Func, 16, \"func(err error) io.Reader\"},\n\t\t{\"ErrTimeout\", Var, 0, \"\"},\n\t\t{\"HalfReader\", Func, 0, \"func(r io.Reader) io.Reader\"},\n\t\t{\"NewReadLogger\", Func, 0, \"func(prefix string, r io.Reader) io.Reader\"},\n\t\t{\"NewWriteLogger\", Func, 0, \"func(prefix string, w io.Writer) io.Writer\"},\n\t\t{\"OneByteReader\", Func, 0, \"func(r io.Reader) io.Reader\"},\n\t\t{\"TestReader\", Func, 16, \"func(r io.Reader, content []byte) error\"},\n\t\t{\"TimeoutReader\", Func, 0, \"func(r io.Reader) io.Reader\"},\n\t\t{\"TruncateWriter\", Func, 0, \"func(w io.Writer, n int64) io.Writer\"},\n\t},\n\t\"testing/quick\": {\n\t\t{\"(*CheckEqualError).Error\", Method, 0, \"\"},\n\t\t{\"(*CheckError).Error\", Method, 0, \"\"},\n\t\t{\"(Generator).Generate\", Method, 0, \"\"},\n\t\t{\"(SetupError).Error\", Method, 0, \"\"},\n\t\t{\"Check\", Func, 0, \"func(f any, config *Config) error\"},\n\t\t{\"CheckEqual\", Func, 0, \"func(f any, g any, config *Config) error\"},\n\t\t{\"CheckEqualError\", Type, 0, \"\"},\n\t\t{\"CheckEqualError.CheckError\", Field, 0, \"\"},\n\t\t{\"CheckEqualError.Out1\", Field, 0, \"\"},\n\t\t{\"CheckEqualError.Out2\", Field, 0, \"\"},\n\t\t{\"CheckError\", Type, 0, \"\"},\n\t\t{\"CheckError.Count\", Field, 0, \"\"},\n\t\t{\"CheckError.In\", Field, 0, \"\"},\n\t\t{\"Config\", Type, 0, \"\"},\n\t\t{\"Config.MaxCount\", Field, 0, \"\"},\n\t\t{\"Config.MaxCountScale\", Field, 0, \"\"},\n\t\t{\"Config.Rand\", Field, 0, \"\"},\n\t\t{\"Config.Values\", Field, 0, \"\"},\n\t\t{\"Generator\", Type, 0, \"\"},\n\t\t{\"SetupError\", Type, 0, \"\"},\n\t\t{\"Value\", Func, 0, \"func(t reflect.Type, rand *rand.Rand) (value reflect.Value, ok bool)\"},\n\t},\n\t\"testing/slogtest\": {\n\t\t{\"Run\", Func, 22, \"func(t *testing.T, newHandler func(*testing.T) slog.Handler, result func(*testing.T) map[string]any)\"},\n\t\t{\"TestHandler\", Func, 21, \"func(h slog.Handler, results func() []map[string]any) error\"},\n\t},\n\t\"testing/synctest\": {\n\t\t{\"Test\", Func, 25, \"func(t *testing.T, f func(*testing.T))\"},\n\t\t{\"Wait\", Func, 25, \"func()\"},\n\t},\n\t\"text/scanner\": {\n\t\t{\"(*Position).IsValid\", Method, 0, \"\"},\n\t\t{\"(*Scanner).Init\", Method, 0, \"\"},\n\t\t{\"(*Scanner).IsValid\", Method, 0, \"\"},\n\t\t{\"(*Scanner).Next\", Method, 0, \"\"},\n\t\t{\"(*Scanner).Peek\", Method, 0, \"\"},\n\t\t{\"(*Scanner).Pos\", Method, 0, \"\"},\n\t\t{\"(*Scanner).Scan\", Method, 0, \"\"},\n\t\t{\"(*Scanner).TokenText\", Method, 0, \"\"},\n\t\t{\"(Position).String\", Method, 0, \"\"},\n\t\t{\"(Scanner).String\", Method, 0, \"\"},\n\t\t{\"Char\", Const, 0, \"\"},\n\t\t{\"Comment\", Const, 0, \"\"},\n\t\t{\"EOF\", Const, 0, \"\"},\n\t\t{\"Float\", Const, 0, \"\"},\n\t\t{\"GoTokens\", Const, 0, \"\"},\n\t\t{\"GoWhitespace\", Const, 0, \"\"},\n\t\t{\"Ident\", Const, 0, \"\"},\n\t\t{\"Int\", Const, 0, \"\"},\n\t\t{\"Position\", Type, 0, \"\"},\n\t\t{\"Position.Column\", Field, 0, \"\"},\n\t\t{\"Position.Filename\", Field, 0, \"\"},\n\t\t{\"Position.Line\", Field, 0, \"\"},\n\t\t{\"Position.Offset\", Field, 0, \"\"},\n\t\t{\"RawString\", Const, 0, \"\"},\n\t\t{\"ScanChars\", Const, 0, \"\"},\n\t\t{\"ScanComments\", Const, 0, \"\"},\n\t\t{\"ScanFloats\", Const, 0, \"\"},\n\t\t{\"ScanIdents\", Const, 0, \"\"},\n\t\t{\"ScanInts\", Const, 0, \"\"},\n\t\t{\"ScanRawStrings\", Const, 0, \"\"},\n\t\t{\"ScanStrings\", Const, 0, \"\"},\n\t\t{\"Scanner\", Type, 0, \"\"},\n\t\t{\"Scanner.Error\", Field, 0, \"\"},\n\t\t{\"Scanner.ErrorCount\", Field, 0, \"\"},\n\t\t{\"Scanner.IsIdentRune\", Field, 4, \"\"},\n\t\t{\"Scanner.Mode\", Field, 0, \"\"},\n\t\t{\"Scanner.Position\", Field, 0, \"\"},\n\t\t{\"Scanner.Whitespace\", Field, 0, \"\"},\n\t\t{\"SkipComments\", Const, 0, \"\"},\n\t\t{\"String\", Const, 0, \"\"},\n\t\t{\"TokenString\", Func, 0, \"func(tok rune) string\"},\n\t},\n\t\"text/tabwriter\": {\n\t\t{\"(*Writer).Flush\", Method, 0, \"\"},\n\t\t{\"(*Writer).Init\", Method, 0, \"\"},\n\t\t{\"(*Writer).Write\", Method, 0, \"\"},\n\t\t{\"AlignRight\", Const, 0, \"\"},\n\t\t{\"Debug\", Const, 0, \"\"},\n\t\t{\"DiscardEmptyColumns\", Const, 0, \"\"},\n\t\t{\"Escape\", Const, 0, \"\"},\n\t\t{\"FilterHTML\", Const, 0, \"\"},\n\t\t{\"NewWriter\", Func, 0, \"func(output io.Writer, minwidth int, tabwidth int, padding int, padchar byte, flags uint) *Writer\"},\n\t\t{\"StripEscape\", Const, 0, \"\"},\n\t\t{\"TabIndent\", Const, 0, \"\"},\n\t\t{\"Writer\", Type, 0, \"\"},\n\t},\n\t\"text/template\": {\n\t\t{\"(*Template).AddParseTree\", Method, 0, \"\"},\n\t\t{\"(*Template).Clone\", Method, 0, \"\"},\n\t\t{\"(*Template).DefinedTemplates\", Method, 5, \"\"},\n\t\t{\"(*Template).Delims\", Method, 0, \"\"},\n\t\t{\"(*Template).Execute\", Method, 0, \"\"},\n\t\t{\"(*Template).ExecuteTemplate\", Method, 0, \"\"},\n\t\t{\"(*Template).Funcs\", Method, 0, \"\"},\n\t\t{\"(*Template).Lookup\", Method, 0, \"\"},\n\t\t{\"(*Template).Name\", Method, 0, \"\"},\n\t\t{\"(*Template).New\", Method, 0, \"\"},\n\t\t{\"(*Template).Option\", Method, 5, \"\"},\n\t\t{\"(*Template).Parse\", Method, 0, \"\"},\n\t\t{\"(*Template).ParseFS\", Method, 16, \"\"},\n\t\t{\"(*Template).ParseFiles\", Method, 0, \"\"},\n\t\t{\"(*Template).ParseGlob\", Method, 0, \"\"},\n\t\t{\"(*Template).Templates\", Method, 0, \"\"},\n\t\t{\"(ExecError).Error\", Method, 6, \"\"},\n\t\t{\"(ExecError).Unwrap\", Method, 13, \"\"},\n\t\t{\"(Template).Copy\", Method, 2, \"\"},\n\t\t{\"(Template).ErrorContext\", Method, 1, \"\"},\n\t\t{\"ExecError\", Type, 6, \"\"},\n\t\t{\"ExecError.Err\", Field, 6, \"\"},\n\t\t{\"ExecError.Name\", Field, 6, \"\"},\n\t\t{\"FuncMap\", Type, 0, \"\"},\n\t\t{\"HTMLEscape\", Func, 0, \"func(w io.Writer, b []byte)\"},\n\t\t{\"HTMLEscapeString\", Func, 0, \"func(s string) string\"},\n\t\t{\"HTMLEscaper\", Func, 0, \"func(args ...any) string\"},\n\t\t{\"IsTrue\", Func, 6, \"func(val any) (truth bool, ok bool)\"},\n\t\t{\"JSEscape\", Func, 0, \"func(w io.Writer, b []byte)\"},\n\t\t{\"JSEscapeString\", Func, 0, \"func(s string) string\"},\n\t\t{\"JSEscaper\", Func, 0, \"func(args ...any) string\"},\n\t\t{\"Must\", Func, 0, \"func(t *Template, err error) *Template\"},\n\t\t{\"New\", Func, 0, \"func(name string) *Template\"},\n\t\t{\"ParseFS\", Func, 16, \"func(fsys fs.FS, patterns ...string) (*Template, error)\"},\n\t\t{\"ParseFiles\", Func, 0, \"func(filenames ...string) (*Template, error)\"},\n\t\t{\"ParseGlob\", Func, 0, \"func(pattern string) (*Template, error)\"},\n\t\t{\"Template\", Type, 0, \"\"},\n\t\t{\"Template.Tree\", Field, 0, \"\"},\n\t\t{\"URLQueryEscaper\", Func, 0, \"func(args ...any) string\"},\n\t},\n\t\"text/template/parse\": {\n\t\t{\"(*ActionNode).Copy\", Method, 0, \"\"},\n\t\t{\"(*ActionNode).String\", Method, 0, \"\"},\n\t\t{\"(*BoolNode).Copy\", Method, 0, \"\"},\n\t\t{\"(*BoolNode).String\", Method, 0, \"\"},\n\t\t{\"(*BranchNode).Copy\", Method, 4, \"\"},\n\t\t{\"(*BranchNode).String\", Method, 0, \"\"},\n\t\t{\"(*BreakNode).Copy\", Method, 18, \"\"},\n\t\t{\"(*BreakNode).String\", Method, 18, \"\"},\n\t\t{\"(*ChainNode).Add\", Method, 1, \"\"},\n\t\t{\"(*ChainNode).Copy\", Method, 1, \"\"},\n\t\t{\"(*ChainNode).String\", Method, 1, \"\"},\n\t\t{\"(*CommandNode).Copy\", Method, 0, \"\"},\n\t\t{\"(*CommandNode).String\", Method, 0, \"\"},\n\t\t{\"(*CommentNode).Copy\", Method, 16, \"\"},\n\t\t{\"(*CommentNode).String\", Method, 16, \"\"},\n\t\t{\"(*ContinueNode).Copy\", Method, 18, \"\"},\n\t\t{\"(*ContinueNode).String\", Method, 18, \"\"},\n\t\t{\"(*DotNode).Copy\", Method, 0, \"\"},\n\t\t{\"(*DotNode).String\", Method, 0, \"\"},\n\t\t{\"(*DotNode).Type\", Method, 0, \"\"},\n\t\t{\"(*FieldNode).Copy\", Method, 0, \"\"},\n\t\t{\"(*FieldNode).String\", Method, 0, \"\"},\n\t\t{\"(*IdentifierNode).Copy\", Method, 0, \"\"},\n\t\t{\"(*IdentifierNode).SetPos\", Method, 1, \"\"},\n\t\t{\"(*IdentifierNode).SetTree\", Method, 4, \"\"},\n\t\t{\"(*IdentifierNode).String\", Method, 0, \"\"},\n\t\t{\"(*IfNode).Copy\", Method, 0, \"\"},\n\t\t{\"(*IfNode).String\", Method, 0, \"\"},\n\t\t{\"(*ListNode).Copy\", Method, 0, \"\"},\n\t\t{\"(*ListNode).CopyList\", Method, 0, \"\"},\n\t\t{\"(*ListNode).String\", Method, 0, \"\"},\n\t\t{\"(*NilNode).Copy\", Method, 1, \"\"},\n\t\t{\"(*NilNode).String\", Method, 1, \"\"},\n\t\t{\"(*NilNode).Type\", Method, 1, \"\"},\n\t\t{\"(*NumberNode).Copy\", Method, 0, \"\"},\n\t\t{\"(*NumberNode).String\", Method, 0, \"\"},\n\t\t{\"(*PipeNode).Copy\", Method, 0, \"\"},\n\t\t{\"(*PipeNode).CopyPipe\", Method, 0, \"\"},\n\t\t{\"(*PipeNode).String\", Method, 0, \"\"},\n\t\t{\"(*RangeNode).Copy\", Method, 0, \"\"},\n\t\t{\"(*RangeNode).String\", Method, 0, \"\"},\n\t\t{\"(*StringNode).Copy\", Method, 0, \"\"},\n\t\t{\"(*StringNode).String\", Method, 0, \"\"},\n\t\t{\"(*TemplateNode).Copy\", Method, 0, \"\"},\n\t\t{\"(*TemplateNode).String\", Method, 0, \"\"},\n\t\t{\"(*TextNode).Copy\", Method, 0, \"\"},\n\t\t{\"(*TextNode).String\", Method, 0, \"\"},\n\t\t{\"(*Tree).Copy\", Method, 2, \"\"},\n\t\t{\"(*Tree).ErrorContext\", Method, 1, \"\"},\n\t\t{\"(*Tree).Parse\", Method, 0, \"\"},\n\t\t{\"(*VariableNode).Copy\", Method, 0, \"\"},\n\t\t{\"(*VariableNode).String\", Method, 0, \"\"},\n\t\t{\"(*WithNode).Copy\", Method, 0, \"\"},\n\t\t{\"(*WithNode).String\", Method, 0, \"\"},\n\t\t{\"(ActionNode).Position\", Method, 1, \"\"},\n\t\t{\"(ActionNode).Type\", Method, 0, \"\"},\n\t\t{\"(BoolNode).Position\", Method, 1, \"\"},\n\t\t{\"(BoolNode).Type\", Method, 0, \"\"},\n\t\t{\"(BranchNode).Position\", Method, 1, \"\"},\n\t\t{\"(BranchNode).Type\", Method, 0, \"\"},\n\t\t{\"(BreakNode).Position\", Method, 18, \"\"},\n\t\t{\"(BreakNode).Type\", Method, 18, \"\"},\n\t\t{\"(ChainNode).Position\", Method, 1, \"\"},\n\t\t{\"(ChainNode).Type\", Method, 1, \"\"},\n\t\t{\"(CommandNode).Position\", Method, 1, \"\"},\n\t\t{\"(CommandNode).Type\", Method, 0, \"\"},\n\t\t{\"(CommentNode).Position\", Method, 16, \"\"},\n\t\t{\"(CommentNode).Type\", Method, 16, \"\"},\n\t\t{\"(ContinueNode).Position\", Method, 18, \"\"},\n\t\t{\"(ContinueNode).Type\", Method, 18, \"\"},\n\t\t{\"(DotNode).Position\", Method, 1, \"\"},\n\t\t{\"(FieldNode).Position\", Method, 1, \"\"},\n\t\t{\"(FieldNode).Type\", Method, 0, \"\"},\n\t\t{\"(IdentifierNode).Position\", Method, 1, \"\"},\n\t\t{\"(IdentifierNode).Type\", Method, 0, \"\"},\n\t\t{\"(IfNode).Position\", Method, 1, \"\"},\n\t\t{\"(IfNode).Type\", Method, 0, \"\"},\n\t\t{\"(ListNode).Position\", Method, 1, \"\"},\n\t\t{\"(ListNode).Type\", Method, 0, \"\"},\n\t\t{\"(NilNode).Position\", Method, 1, \"\"},\n\t\t{\"(Node).Copy\", Method, 0, \"\"},\n\t\t{\"(Node).Position\", Method, 1, \"\"},\n\t\t{\"(Node).String\", Method, 0, \"\"},\n\t\t{\"(Node).Type\", Method, 0, \"\"},\n\t\t{\"(NodeType).Type\", Method, 0, \"\"},\n\t\t{\"(NumberNode).Position\", Method, 1, \"\"},\n\t\t{\"(NumberNode).Type\", Method, 0, \"\"},\n\t\t{\"(PipeNode).Position\", Method, 1, \"\"},\n\t\t{\"(PipeNode).Type\", Method, 0, \"\"},\n\t\t{\"(Pos).Position\", Method, 1, \"\"},\n\t\t{\"(RangeNode).Position\", Method, 1, \"\"},\n\t\t{\"(RangeNode).Type\", Method, 0, \"\"},\n\t\t{\"(StringNode).Position\", Method, 1, \"\"},\n\t\t{\"(StringNode).Type\", Method, 0, \"\"},\n\t\t{\"(TemplateNode).Position\", Method, 1, \"\"},\n\t\t{\"(TemplateNode).Type\", Method, 0, \"\"},\n\t\t{\"(TextNode).Position\", Method, 1, \"\"},\n\t\t{\"(TextNode).Type\", Method, 0, \"\"},\n\t\t{\"(VariableNode).Position\", Method, 1, \"\"},\n\t\t{\"(VariableNode).Type\", Method, 0, \"\"},\n\t\t{\"(WithNode).Position\", Method, 1, \"\"},\n\t\t{\"(WithNode).Type\", Method, 0, \"\"},\n\t\t{\"ActionNode\", Type, 0, \"\"},\n\t\t{\"ActionNode.Line\", Field, 0, \"\"},\n\t\t{\"ActionNode.NodeType\", Field, 0, \"\"},\n\t\t{\"ActionNode.Pipe\", Field, 0, \"\"},\n\t\t{\"ActionNode.Pos\", Field, 1, \"\"},\n\t\t{\"BoolNode\", Type, 0, \"\"},\n\t\t{\"BoolNode.NodeType\", Field, 0, \"\"},\n\t\t{\"BoolNode.Pos\", Field, 1, \"\"},\n\t\t{\"BoolNode.True\", Field, 0, \"\"},\n\t\t{\"BranchNode\", Type, 0, \"\"},\n\t\t{\"BranchNode.ElseList\", Field, 0, \"\"},\n\t\t{\"BranchNode.Line\", Field, 0, \"\"},\n\t\t{\"BranchNode.List\", Field, 0, \"\"},\n\t\t{\"BranchNode.NodeType\", Field, 0, \"\"},\n\t\t{\"BranchNode.Pipe\", Field, 0, \"\"},\n\t\t{\"BranchNode.Pos\", Field, 1, \"\"},\n\t\t{\"BreakNode\", Type, 18, \"\"},\n\t\t{\"BreakNode.Line\", Field, 18, \"\"},\n\t\t{\"BreakNode.NodeType\", Field, 18, \"\"},\n\t\t{\"BreakNode.Pos\", Field, 18, \"\"},\n\t\t{\"ChainNode\", Type, 1, \"\"},\n\t\t{\"ChainNode.Field\", Field, 1, \"\"},\n\t\t{\"ChainNode.Node\", Field, 1, \"\"},\n\t\t{\"ChainNode.NodeType\", Field, 1, \"\"},\n\t\t{\"ChainNode.Pos\", Field, 1, \"\"},\n\t\t{\"CommandNode\", Type, 0, \"\"},\n\t\t{\"CommandNode.Args\", Field, 0, \"\"},\n\t\t{\"CommandNode.NodeType\", Field, 0, \"\"},\n\t\t{\"CommandNode.Pos\", Field, 1, \"\"},\n\t\t{\"CommentNode\", Type, 16, \"\"},\n\t\t{\"CommentNode.NodeType\", Field, 16, \"\"},\n\t\t{\"CommentNode.Pos\", Field, 16, \"\"},\n\t\t{\"CommentNode.Text\", Field, 16, \"\"},\n\t\t{\"ContinueNode\", Type, 18, \"\"},\n\t\t{\"ContinueNode.Line\", Field, 18, \"\"},\n\t\t{\"ContinueNode.NodeType\", Field, 18, \"\"},\n\t\t{\"ContinueNode.Pos\", Field, 18, \"\"},\n\t\t{\"DotNode\", Type, 0, \"\"},\n\t\t{\"DotNode.NodeType\", Field, 4, \"\"},\n\t\t{\"DotNode.Pos\", Field, 1, \"\"},\n\t\t{\"FieldNode\", Type, 0, \"\"},\n\t\t{\"FieldNode.Ident\", Field, 0, \"\"},\n\t\t{\"FieldNode.NodeType\", Field, 0, \"\"},\n\t\t{\"FieldNode.Pos\", Field, 1, \"\"},\n\t\t{\"IdentifierNode\", Type, 0, \"\"},\n\t\t{\"IdentifierNode.Ident\", Field, 0, \"\"},\n\t\t{\"IdentifierNode.NodeType\", Field, 0, \"\"},\n\t\t{\"IdentifierNode.Pos\", Field, 1, \"\"},\n\t\t{\"IfNode\", Type, 0, \"\"},\n\t\t{\"IfNode.BranchNode\", Field, 0, \"\"},\n\t\t{\"IsEmptyTree\", Func, 0, \"func(n Node) bool\"},\n\t\t{\"ListNode\", Type, 0, \"\"},\n\t\t{\"ListNode.NodeType\", Field, 0, \"\"},\n\t\t{\"ListNode.Nodes\", Field, 0, \"\"},\n\t\t{\"ListNode.Pos\", Field, 1, \"\"},\n\t\t{\"Mode\", Type, 16, \"\"},\n\t\t{\"New\", Func, 0, \"func(name string, funcs ...map[string]any) *Tree\"},\n\t\t{\"NewIdentifier\", Func, 0, \"func(ident string) *IdentifierNode\"},\n\t\t{\"NilNode\", Type, 1, \"\"},\n\t\t{\"NilNode.NodeType\", Field, 4, \"\"},\n\t\t{\"NilNode.Pos\", Field, 1, \"\"},\n\t\t{\"Node\", Type, 0, \"\"},\n\t\t{\"NodeAction\", Const, 0, \"\"},\n\t\t{\"NodeBool\", Const, 0, \"\"},\n\t\t{\"NodeBreak\", Const, 18, \"\"},\n\t\t{\"NodeChain\", Const, 1, \"\"},\n\t\t{\"NodeCommand\", Const, 0, \"\"},\n\t\t{\"NodeComment\", Const, 16, \"\"},\n\t\t{\"NodeContinue\", Const, 18, \"\"},\n\t\t{\"NodeDot\", Const, 0, \"\"},\n\t\t{\"NodeField\", Const, 0, \"\"},\n\t\t{\"NodeIdentifier\", Const, 0, \"\"},\n\t\t{\"NodeIf\", Const, 0, \"\"},\n\t\t{\"NodeList\", Const, 0, \"\"},\n\t\t{\"NodeNil\", Const, 1, \"\"},\n\t\t{\"NodeNumber\", Const, 0, \"\"},\n\t\t{\"NodePipe\", Const, 0, \"\"},\n\t\t{\"NodeRange\", Const, 0, \"\"},\n\t\t{\"NodeString\", Const, 0, \"\"},\n\t\t{\"NodeTemplate\", Const, 0, \"\"},\n\t\t{\"NodeText\", Const, 0, \"\"},\n\t\t{\"NodeType\", Type, 0, \"\"},\n\t\t{\"NodeVariable\", Const, 0, \"\"},\n\t\t{\"NodeWith\", Const, 0, \"\"},\n\t\t{\"NumberNode\", Type, 0, \"\"},\n\t\t{\"NumberNode.Complex128\", Field, 0, \"\"},\n\t\t{\"NumberNode.Float64\", Field, 0, \"\"},\n\t\t{\"NumberNode.Int64\", Field, 0, \"\"},\n\t\t{\"NumberNode.IsComplex\", Field, 0, \"\"},\n\t\t{\"NumberNode.IsFloat\", Field, 0, \"\"},\n\t\t{\"NumberNode.IsInt\", Field, 0, \"\"},\n\t\t{\"NumberNode.IsUint\", Field, 0, \"\"},\n\t\t{\"NumberNode.NodeType\", Field, 0, \"\"},\n\t\t{\"NumberNode.Pos\", Field, 1, \"\"},\n\t\t{\"NumberNode.Text\", Field, 0, \"\"},\n\t\t{\"NumberNode.Uint64\", Field, 0, \"\"},\n\t\t{\"Parse\", Func, 0, \"func(name string, text string, leftDelim string, rightDelim string, funcs ...map[string]any) (map[string]*Tree, error)\"},\n\t\t{\"ParseComments\", Const, 16, \"\"},\n\t\t{\"PipeNode\", Type, 0, \"\"},\n\t\t{\"PipeNode.Cmds\", Field, 0, \"\"},\n\t\t{\"PipeNode.Decl\", Field, 0, \"\"},\n\t\t{\"PipeNode.IsAssign\", Field, 11, \"\"},\n\t\t{\"PipeNode.Line\", Field, 0, \"\"},\n\t\t{\"PipeNode.NodeType\", Field, 0, \"\"},\n\t\t{\"PipeNode.Pos\", Field, 1, \"\"},\n\t\t{\"Pos\", Type, 1, \"\"},\n\t\t{\"RangeNode\", Type, 0, \"\"},\n\t\t{\"RangeNode.BranchNode\", Field, 0, \"\"},\n\t\t{\"SkipFuncCheck\", Const, 17, \"\"},\n\t\t{\"StringNode\", Type, 0, \"\"},\n\t\t{\"StringNode.NodeType\", Field, 0, \"\"},\n\t\t{\"StringNode.Pos\", Field, 1, \"\"},\n\t\t{\"StringNode.Quoted\", Field, 0, \"\"},\n\t\t{\"StringNode.Text\", Field, 0, \"\"},\n\t\t{\"TemplateNode\", Type, 0, \"\"},\n\t\t{\"TemplateNode.Line\", Field, 0, \"\"},\n\t\t{\"TemplateNode.Name\", Field, 0, \"\"},\n\t\t{\"TemplateNode.NodeType\", Field, 0, \"\"},\n\t\t{\"TemplateNode.Pipe\", Field, 0, \"\"},\n\t\t{\"TemplateNode.Pos\", Field, 1, \"\"},\n\t\t{\"TextNode\", Type, 0, \"\"},\n\t\t{\"TextNode.NodeType\", Field, 0, \"\"},\n\t\t{\"TextNode.Pos\", Field, 1, \"\"},\n\t\t{\"TextNode.Text\", Field, 0, \"\"},\n\t\t{\"Tree\", Type, 0, \"\"},\n\t\t{\"Tree.Mode\", Field, 16, \"\"},\n\t\t{\"Tree.Name\", Field, 0, \"\"},\n\t\t{\"Tree.ParseName\", Field, 1, \"\"},\n\t\t{\"Tree.Root\", Field, 0, \"\"},\n\t\t{\"VariableNode\", Type, 0, \"\"},\n\t\t{\"VariableNode.Ident\", Field, 0, \"\"},\n\t\t{\"VariableNode.NodeType\", Field, 0, \"\"},\n\t\t{\"VariableNode.Pos\", Field, 1, \"\"},\n\t\t{\"WithNode\", Type, 0, \"\"},\n\t\t{\"WithNode.BranchNode\", Field, 0, \"\"},\n\t},\n\t\"time\": {\n\t\t{\"(*Location).String\", Method, 0, \"\"},\n\t\t{\"(*ParseError).Error\", Method, 0, \"\"},\n\t\t{\"(*Ticker).Reset\", Method, 15, \"\"},\n\t\t{\"(*Ticker).Stop\", Method, 0, \"\"},\n\t\t{\"(*Time).GobDecode\", Method, 0, \"\"},\n\t\t{\"(*Time).UnmarshalBinary\", Method, 2, \"\"},\n\t\t{\"(*Time).UnmarshalJSON\", Method, 0, \"\"},\n\t\t{\"(*Time).UnmarshalText\", Method, 2, \"\"},\n\t\t{\"(*Timer).Reset\", Method, 1, \"\"},\n\t\t{\"(*Timer).Stop\", Method, 0, \"\"},\n\t\t{\"(Duration).Abs\", Method, 19, \"\"},\n\t\t{\"(Duration).Hours\", Method, 0, \"\"},\n\t\t{\"(Duration).Microseconds\", Method, 13, \"\"},\n\t\t{\"(Duration).Milliseconds\", Method, 13, \"\"},\n\t\t{\"(Duration).Minutes\", Method, 0, \"\"},\n\t\t{\"(Duration).Nanoseconds\", Method, 0, \"\"},\n\t\t{\"(Duration).Round\", Method, 9, \"\"},\n\t\t{\"(Duration).Seconds\", Method, 0, \"\"},\n\t\t{\"(Duration).String\", Method, 0, \"\"},\n\t\t{\"(Duration).Truncate\", Method, 9, \"\"},\n\t\t{\"(Month).String\", Method, 0, \"\"},\n\t\t{\"(Time).Add\", Method, 0, \"\"},\n\t\t{\"(Time).AddDate\", Method, 0, \"\"},\n\t\t{\"(Time).After\", Method, 0, \"\"},\n\t\t{\"(Time).AppendBinary\", Method, 24, \"\"},\n\t\t{\"(Time).AppendFormat\", Method, 5, \"\"},\n\t\t{\"(Time).AppendText\", Method, 24, \"\"},\n\t\t{\"(Time).Before\", Method, 0, \"\"},\n\t\t{\"(Time).Clock\", Method, 0, \"\"},\n\t\t{\"(Time).Compare\", Method, 20, \"\"},\n\t\t{\"(Time).Date\", Method, 0, \"\"},\n\t\t{\"(Time).Day\", Method, 0, \"\"},\n\t\t{\"(Time).Equal\", Method, 0, \"\"},\n\t\t{\"(Time).Format\", Method, 0, \"\"},\n\t\t{\"(Time).GoString\", Method, 17, \"\"},\n\t\t{\"(Time).GobEncode\", Method, 0, \"\"},\n\t\t{\"(Time).Hour\", Method, 0, \"\"},\n\t\t{\"(Time).ISOWeek\", Method, 0, \"\"},\n\t\t{\"(Time).In\", Method, 0, \"\"},\n\t\t{\"(Time).IsDST\", Method, 17, \"\"},\n\t\t{\"(Time).IsZero\", Method, 0, \"\"},\n\t\t{\"(Time).Local\", Method, 0, \"\"},\n\t\t{\"(Time).Location\", Method, 0, \"\"},\n\t\t{\"(Time).MarshalBinary\", Method, 2, \"\"},\n\t\t{\"(Time).MarshalJSON\", Method, 0, \"\"},\n\t\t{\"(Time).MarshalText\", Method, 2, \"\"},\n\t\t{\"(Time).Minute\", Method, 0, \"\"},\n\t\t{\"(Time).Month\", Method, 0, \"\"},\n\t\t{\"(Time).Nanosecond\", Method, 0, \"\"},\n\t\t{\"(Time).Round\", Method, 1, \"\"},\n\t\t{\"(Time).Second\", Method, 0, \"\"},\n\t\t{\"(Time).String\", Method, 0, \"\"},\n\t\t{\"(Time).Sub\", Method, 0, \"\"},\n\t\t{\"(Time).Truncate\", Method, 1, \"\"},\n\t\t{\"(Time).UTC\", Method, 0, \"\"},\n\t\t{\"(Time).Unix\", Method, 0, \"\"},\n\t\t{\"(Time).UnixMicro\", Method, 17, \"\"},\n\t\t{\"(Time).UnixMilli\", Method, 17, \"\"},\n\t\t{\"(Time).UnixNano\", Method, 0, \"\"},\n\t\t{\"(Time).Weekday\", Method, 0, \"\"},\n\t\t{\"(Time).Year\", Method, 0, \"\"},\n\t\t{\"(Time).YearDay\", Method, 1, \"\"},\n\t\t{\"(Time).Zone\", Method, 0, \"\"},\n\t\t{\"(Time).ZoneBounds\", Method, 19, \"\"},\n\t\t{\"(Weekday).String\", Method, 0, \"\"},\n\t\t{\"ANSIC\", Const, 0, \"\"},\n\t\t{\"After\", Func, 0, \"func(d Duration) <-chan Time\"},\n\t\t{\"AfterFunc\", Func, 0, \"func(d Duration, f func()) *Timer\"},\n\t\t{\"April\", Const, 0, \"\"},\n\t\t{\"August\", Const, 0, \"\"},\n\t\t{\"Date\", Func, 0, \"func(year int, month Month, day int, hour int, min int, sec int, nsec int, loc *Location) Time\"},\n\t\t{\"DateOnly\", Const, 20, \"\"},\n\t\t{\"DateTime\", Const, 20, \"\"},\n\t\t{\"December\", Const, 0, \"\"},\n\t\t{\"Duration\", Type, 0, \"\"},\n\t\t{\"February\", Const, 0, \"\"},\n\t\t{\"FixedZone\", Func, 0, \"func(name string, offset int) *Location\"},\n\t\t{\"Friday\", Const, 0, \"\"},\n\t\t{\"Hour\", Const, 0, \"\"},\n\t\t{\"January\", Const, 0, \"\"},\n\t\t{\"July\", Const, 0, \"\"},\n\t\t{\"June\", Const, 0, \"\"},\n\t\t{\"Kitchen\", Const, 0, \"\"},\n\t\t{\"Layout\", Const, 17, \"\"},\n\t\t{\"LoadLocation\", Func, 0, \"func(name string) (*Location, error)\"},\n\t\t{\"LoadLocationFromTZData\", Func, 10, \"func(name string, data []byte) (*Location, error)\"},\n\t\t{\"Local\", Var, 0, \"\"},\n\t\t{\"Location\", Type, 0, \"\"},\n\t\t{\"March\", Const, 0, \"\"},\n\t\t{\"May\", Const, 0, \"\"},\n\t\t{\"Microsecond\", Const, 0, \"\"},\n\t\t{\"Millisecond\", Const, 0, \"\"},\n\t\t{\"Minute\", Const, 0, \"\"},\n\t\t{\"Monday\", Const, 0, \"\"},\n\t\t{\"Month\", Type, 0, \"\"},\n\t\t{\"Nanosecond\", Const, 0, \"\"},\n\t\t{\"NewTicker\", Func, 0, \"func(d Duration) *Ticker\"},\n\t\t{\"NewTimer\", Func, 0, \"func(d Duration) *Timer\"},\n\t\t{\"November\", Const, 0, \"\"},\n\t\t{\"Now\", Func, 0, \"func() Time\"},\n\t\t{\"October\", Const, 0, \"\"},\n\t\t{\"Parse\", Func, 0, \"func(layout string, value string) (Time, error)\"},\n\t\t{\"ParseDuration\", Func, 0, \"func(s string) (Duration, error)\"},\n\t\t{\"ParseError\", Type, 0, \"\"},\n\t\t{\"ParseError.Layout\", Field, 0, \"\"},\n\t\t{\"ParseError.LayoutElem\", Field, 0, \"\"},\n\t\t{\"ParseError.Message\", Field, 0, \"\"},\n\t\t{\"ParseError.Value\", Field, 0, \"\"},\n\t\t{\"ParseError.ValueElem\", Field, 0, \"\"},\n\t\t{\"ParseInLocation\", Func, 1, \"func(layout string, value string, loc *Location) (Time, error)\"},\n\t\t{\"RFC1123\", Const, 0, \"\"},\n\t\t{\"RFC1123Z\", Const, 0, \"\"},\n\t\t{\"RFC3339\", Const, 0, \"\"},\n\t\t{\"RFC3339Nano\", Const, 0, \"\"},\n\t\t{\"RFC822\", Const, 0, \"\"},\n\t\t{\"RFC822Z\", Const, 0, \"\"},\n\t\t{\"RFC850\", Const, 0, \"\"},\n\t\t{\"RubyDate\", Const, 0, \"\"},\n\t\t{\"Saturday\", Const, 0, \"\"},\n\t\t{\"Second\", Const, 0, \"\"},\n\t\t{\"September\", Const, 0, \"\"},\n\t\t{\"Since\", Func, 0, \"func(t Time) Duration\"},\n\t\t{\"Sleep\", Func, 0, \"func(d Duration)\"},\n\t\t{\"Stamp\", Const, 0, \"\"},\n\t\t{\"StampMicro\", Const, 0, \"\"},\n\t\t{\"StampMilli\", Const, 0, \"\"},\n\t\t{\"StampNano\", Const, 0, \"\"},\n\t\t{\"Sunday\", Const, 0, \"\"},\n\t\t{\"Thursday\", Const, 0, \"\"},\n\t\t{\"Tick\", Func, 0, \"func(d Duration) <-chan Time\"},\n\t\t{\"Ticker\", Type, 0, \"\"},\n\t\t{\"Ticker.C\", Field, 0, \"\"},\n\t\t{\"Time\", Type, 0, \"\"},\n\t\t{\"TimeOnly\", Const, 20, \"\"},\n\t\t{\"Timer\", Type, 0, \"\"},\n\t\t{\"Timer.C\", Field, 0, \"\"},\n\t\t{\"Tuesday\", Const, 0, \"\"},\n\t\t{\"UTC\", Var, 0, \"\"},\n\t\t{\"Unix\", Func, 0, \"func(sec int64, nsec int64) Time\"},\n\t\t{\"UnixDate\", Const, 0, \"\"},\n\t\t{\"UnixMicro\", Func, 17, \"func(usec int64) Time\"},\n\t\t{\"UnixMilli\", Func, 17, \"func(msec int64) Time\"},\n\t\t{\"Until\", Func, 8, \"func(t Time) Duration\"},\n\t\t{\"Wednesday\", Const, 0, \"\"},\n\t\t{\"Weekday\", Type, 0, \"\"},\n\t},\n\t\"unicode\": {\n\t\t{\"(SpecialCase).ToLower\", Method, 0, \"\"},\n\t\t{\"(SpecialCase).ToTitle\", Method, 0, \"\"},\n\t\t{\"(SpecialCase).ToUpper\", Method, 0, \"\"},\n\t\t{\"ASCII_Hex_Digit\", Var, 0, \"\"},\n\t\t{\"Adlam\", Var, 7, \"\"},\n\t\t{\"Ahom\", Var, 5, \"\"},\n\t\t{\"Anatolian_Hieroglyphs\", Var, 5, \"\"},\n\t\t{\"Arabic\", Var, 0, \"\"},\n\t\t{\"Armenian\", Var, 0, \"\"},\n\t\t{\"Avestan\", Var, 0, \"\"},\n\t\t{\"AzeriCase\", Var, 0, \"\"},\n\t\t{\"Balinese\", Var, 0, \"\"},\n\t\t{\"Bamum\", Var, 0, \"\"},\n\t\t{\"Bassa_Vah\", Var, 4, \"\"},\n\t\t{\"Batak\", Var, 0, \"\"},\n\t\t{\"Bengali\", Var, 0, \"\"},\n\t\t{\"Bhaiksuki\", Var, 7, \"\"},\n\t\t{\"Bidi_Control\", Var, 0, \"\"},\n\t\t{\"Bopomofo\", Var, 0, \"\"},\n\t\t{\"Brahmi\", Var, 0, \"\"},\n\t\t{\"Braille\", Var, 0, \"\"},\n\t\t{\"Buginese\", Var, 0, \"\"},\n\t\t{\"Buhid\", Var, 0, \"\"},\n\t\t{\"C\", Var, 0, \"\"},\n\t\t{\"Canadian_Aboriginal\", Var, 0, \"\"},\n\t\t{\"Carian\", Var, 0, \"\"},\n\t\t{\"CaseRange\", Type, 0, \"\"},\n\t\t{\"CaseRange.Delta\", Field, 0, \"\"},\n\t\t{\"CaseRange.Hi\", Field, 0, \"\"},\n\t\t{\"CaseRange.Lo\", Field, 0, \"\"},\n\t\t{\"CaseRanges\", Var, 0, \"\"},\n\t\t{\"Categories\", Var, 0, \"\"},\n\t\t{\"CategoryAliases\", Var, 25, \"\"},\n\t\t{\"Caucasian_Albanian\", Var, 4, \"\"},\n\t\t{\"Cc\", Var, 0, \"\"},\n\t\t{\"Cf\", Var, 0, \"\"},\n\t\t{\"Chakma\", Var, 1, \"\"},\n\t\t{\"Cham\", Var, 0, \"\"},\n\t\t{\"Cherokee\", Var, 0, \"\"},\n\t\t{\"Chorasmian\", Var, 16, \"\"},\n\t\t{\"Cn\", Var, 25, \"\"},\n\t\t{\"Co\", Var, 0, \"\"},\n\t\t{\"Common\", Var, 0, \"\"},\n\t\t{\"Coptic\", Var, 0, \"\"},\n\t\t{\"Cs\", Var, 0, \"\"},\n\t\t{\"Cuneiform\", Var, 0, \"\"},\n\t\t{\"Cypriot\", Var, 0, \"\"},\n\t\t{\"Cypro_Minoan\", Var, 21, \"\"},\n\t\t{\"Cyrillic\", Var, 0, \"\"},\n\t\t{\"Dash\", Var, 0, \"\"},\n\t\t{\"Deprecated\", Var, 0, \"\"},\n\t\t{\"Deseret\", Var, 0, \"\"},\n\t\t{\"Devanagari\", Var, 0, \"\"},\n\t\t{\"Diacritic\", Var, 0, \"\"},\n\t\t{\"Digit\", Var, 0, \"\"},\n\t\t{\"Dives_Akuru\", Var, 16, \"\"},\n\t\t{\"Dogra\", Var, 13, \"\"},\n\t\t{\"Duployan\", Var, 4, \"\"},\n\t\t{\"Egyptian_Hieroglyphs\", Var, 0, \"\"},\n\t\t{\"Elbasan\", Var, 4, \"\"},\n\t\t{\"Elymaic\", Var, 14, \"\"},\n\t\t{\"Ethiopic\", Var, 0, \"\"},\n\t\t{\"Extender\", Var, 0, \"\"},\n\t\t{\"FoldCategory\", Var, 0, \"\"},\n\t\t{\"FoldScript\", Var, 0, \"\"},\n\t\t{\"Georgian\", Var, 0, \"\"},\n\t\t{\"Glagolitic\", Var, 0, \"\"},\n\t\t{\"Gothic\", Var, 0, \"\"},\n\t\t{\"Grantha\", Var, 4, \"\"},\n\t\t{\"GraphicRanges\", Var, 0, \"\"},\n\t\t{\"Greek\", Var, 0, \"\"},\n\t\t{\"Gujarati\", Var, 0, \"\"},\n\t\t{\"Gunjala_Gondi\", Var, 13, \"\"},\n\t\t{\"Gurmukhi\", Var, 0, \"\"},\n\t\t{\"Han\", Var, 0, \"\"},\n\t\t{\"Hangul\", Var, 0, \"\"},\n\t\t{\"Hanifi_Rohingya\", Var, 13, \"\"},\n\t\t{\"Hanunoo\", Var, 0, \"\"},\n\t\t{\"Hatran\", Var, 5, \"\"},\n\t\t{\"Hebrew\", Var, 0, \"\"},\n\t\t{\"Hex_Digit\", Var, 0, \"\"},\n\t\t{\"Hiragana\", Var, 0, \"\"},\n\t\t{\"Hyphen\", Var, 0, \"\"},\n\t\t{\"IDS_Binary_Operator\", Var, 0, \"\"},\n\t\t{\"IDS_Trinary_Operator\", Var, 0, \"\"},\n\t\t{\"Ideographic\", Var, 0, \"\"},\n\t\t{\"Imperial_Aramaic\", Var, 0, \"\"},\n\t\t{\"In\", Func, 2, \"func(r rune, ranges ...*RangeTable) bool\"},\n\t\t{\"Inherited\", Var, 0, \"\"},\n\t\t{\"Inscriptional_Pahlavi\", Var, 0, \"\"},\n\t\t{\"Inscriptional_Parthian\", Var, 0, \"\"},\n\t\t{\"Is\", Func, 0, \"func(rangeTab *RangeTable, r rune) bool\"},\n\t\t{\"IsControl\", Func, 0, \"func(r rune) bool\"},\n\t\t{\"IsDigit\", Func, 0, \"func(r rune) bool\"},\n\t\t{\"IsGraphic\", Func, 0, \"func(r rune) bool\"},\n\t\t{\"IsLetter\", Func, 0, \"func(r rune) bool\"},\n\t\t{\"IsLower\", Func, 0, \"func(r rune) bool\"},\n\t\t{\"IsMark\", Func, 0, \"func(r rune) bool\"},\n\t\t{\"IsNumber\", Func, 0, \"func(r rune) bool\"},\n\t\t{\"IsOneOf\", Func, 0, \"func(ranges []*RangeTable, r rune) bool\"},\n\t\t{\"IsPrint\", Func, 0, \"func(r rune) bool\"},\n\t\t{\"IsPunct\", Func, 0, \"func(r rune) bool\"},\n\t\t{\"IsSpace\", Func, 0, \"func(r rune) bool\"},\n\t\t{\"IsSymbol\", Func, 0, \"func(r rune) bool\"},\n\t\t{\"IsTitle\", Func, 0, \"func(r rune) bool\"},\n\t\t{\"IsUpper\", Func, 0, \"func(r rune) bool\"},\n\t\t{\"Javanese\", Var, 0, \"\"},\n\t\t{\"Join_Control\", Var, 0, \"\"},\n\t\t{\"Kaithi\", Var, 0, \"\"},\n\t\t{\"Kannada\", Var, 0, \"\"},\n\t\t{\"Katakana\", Var, 0, \"\"},\n\t\t{\"Kawi\", Var, 21, \"\"},\n\t\t{\"Kayah_Li\", Var, 0, \"\"},\n\t\t{\"Kharoshthi\", Var, 0, \"\"},\n\t\t{\"Khitan_Small_Script\", Var, 16, \"\"},\n\t\t{\"Khmer\", Var, 0, \"\"},\n\t\t{\"Khojki\", Var, 4, \"\"},\n\t\t{\"Khudawadi\", Var, 4, \"\"},\n\t\t{\"L\", Var, 0, \"\"},\n\t\t{\"LC\", Var, 25, \"\"},\n\t\t{\"Lao\", Var, 0, \"\"},\n\t\t{\"Latin\", Var, 0, \"\"},\n\t\t{\"Lepcha\", Var, 0, \"\"},\n\t\t{\"Letter\", Var, 0, \"\"},\n\t\t{\"Limbu\", Var, 0, \"\"},\n\t\t{\"Linear_A\", Var, 4, \"\"},\n\t\t{\"Linear_B\", Var, 0, \"\"},\n\t\t{\"Lisu\", Var, 0, \"\"},\n\t\t{\"Ll\", Var, 0, \"\"},\n\t\t{\"Lm\", Var, 0, \"\"},\n\t\t{\"Lo\", Var, 0, \"\"},\n\t\t{\"Logical_Order_Exception\", Var, 0, \"\"},\n\t\t{\"Lower\", Var, 0, \"\"},\n\t\t{\"LowerCase\", Const, 0, \"\"},\n\t\t{\"Lt\", Var, 0, \"\"},\n\t\t{\"Lu\", Var, 0, \"\"},\n\t\t{\"Lycian\", Var, 0, \"\"},\n\t\t{\"Lydian\", Var, 0, \"\"},\n\t\t{\"M\", Var, 0, \"\"},\n\t\t{\"Mahajani\", Var, 4, \"\"},\n\t\t{\"Makasar\", Var, 13, \"\"},\n\t\t{\"Malayalam\", Var, 0, \"\"},\n\t\t{\"Mandaic\", Var, 0, \"\"},\n\t\t{\"Manichaean\", Var, 4, \"\"},\n\t\t{\"Marchen\", Var, 7, \"\"},\n\t\t{\"Mark\", Var, 0, \"\"},\n\t\t{\"Masaram_Gondi\", Var, 10, \"\"},\n\t\t{\"MaxASCII\", Const, 0, \"\"},\n\t\t{\"MaxCase\", Const, 0, \"\"},\n\t\t{\"MaxLatin1\", Const, 0, \"\"},\n\t\t{\"MaxRune\", Const, 0, \"\"},\n\t\t{\"Mc\", Var, 0, \"\"},\n\t\t{\"Me\", Var, 0, \"\"},\n\t\t{\"Medefaidrin\", Var, 13, \"\"},\n\t\t{\"Meetei_Mayek\", Var, 0, \"\"},\n\t\t{\"Mende_Kikakui\", Var, 4, \"\"},\n\t\t{\"Meroitic_Cursive\", Var, 1, \"\"},\n\t\t{\"Meroitic_Hieroglyphs\", Var, 1, \"\"},\n\t\t{\"Miao\", Var, 1, \"\"},\n\t\t{\"Mn\", Var, 0, \"\"},\n\t\t{\"Modi\", Var, 4, \"\"},\n\t\t{\"Mongolian\", Var, 0, \"\"},\n\t\t{\"Mro\", Var, 4, \"\"},\n\t\t{\"Multani\", Var, 5, \"\"},\n\t\t{\"Myanmar\", Var, 0, \"\"},\n\t\t{\"N\", Var, 0, \"\"},\n\t\t{\"Nabataean\", Var, 4, \"\"},\n\t\t{\"Nag_Mundari\", Var, 21, \"\"},\n\t\t{\"Nandinagari\", Var, 14, \"\"},\n\t\t{\"Nd\", Var, 0, \"\"},\n\t\t{\"New_Tai_Lue\", Var, 0, \"\"},\n\t\t{\"Newa\", Var, 7, \"\"},\n\t\t{\"Nko\", Var, 0, \"\"},\n\t\t{\"Nl\", Var, 0, \"\"},\n\t\t{\"No\", Var, 0, \"\"},\n\t\t{\"Noncharacter_Code_Point\", Var, 0, \"\"},\n\t\t{\"Number\", Var, 0, \"\"},\n\t\t{\"Nushu\", Var, 10, \"\"},\n\t\t{\"Nyiakeng_Puachue_Hmong\", Var, 14, \"\"},\n\t\t{\"Ogham\", Var, 0, \"\"},\n\t\t{\"Ol_Chiki\", Var, 0, \"\"},\n\t\t{\"Old_Hungarian\", Var, 5, \"\"},\n\t\t{\"Old_Italic\", Var, 0, \"\"},\n\t\t{\"Old_North_Arabian\", Var, 4, \"\"},\n\t\t{\"Old_Permic\", Var, 4, \"\"},\n\t\t{\"Old_Persian\", Var, 0, \"\"},\n\t\t{\"Old_Sogdian\", Var, 13, \"\"},\n\t\t{\"Old_South_Arabian\", Var, 0, \"\"},\n\t\t{\"Old_Turkic\", Var, 0, \"\"},\n\t\t{\"Old_Uyghur\", Var, 21, \"\"},\n\t\t{\"Oriya\", Var, 0, \"\"},\n\t\t{\"Osage\", Var, 7, \"\"},\n\t\t{\"Osmanya\", Var, 0, \"\"},\n\t\t{\"Other\", Var, 0, \"\"},\n\t\t{\"Other_Alphabetic\", Var, 0, \"\"},\n\t\t{\"Other_Default_Ignorable_Code_Point\", Var, 0, \"\"},\n\t\t{\"Other_Grapheme_Extend\", Var, 0, \"\"},\n\t\t{\"Other_ID_Continue\", Var, 0, \"\"},\n\t\t{\"Other_ID_Start\", Var, 0, \"\"},\n\t\t{\"Other_Lowercase\", Var, 0, \"\"},\n\t\t{\"Other_Math\", Var, 0, \"\"},\n\t\t{\"Other_Uppercase\", Var, 0, \"\"},\n\t\t{\"P\", Var, 0, \"\"},\n\t\t{\"Pahawh_Hmong\", Var, 4, \"\"},\n\t\t{\"Palmyrene\", Var, 4, \"\"},\n\t\t{\"Pattern_Syntax\", Var, 0, \"\"},\n\t\t{\"Pattern_White_Space\", Var, 0, \"\"},\n\t\t{\"Pau_Cin_Hau\", Var, 4, \"\"},\n\t\t{\"Pc\", Var, 0, \"\"},\n\t\t{\"Pd\", Var, 0, \"\"},\n\t\t{\"Pe\", Var, 0, \"\"},\n\t\t{\"Pf\", Var, 0, \"\"},\n\t\t{\"Phags_Pa\", Var, 0, \"\"},\n\t\t{\"Phoenician\", Var, 0, \"\"},\n\t\t{\"Pi\", Var, 0, \"\"},\n\t\t{\"Po\", Var, 0, \"\"},\n\t\t{\"Prepended_Concatenation_Mark\", Var, 7, \"\"},\n\t\t{\"PrintRanges\", Var, 0, \"\"},\n\t\t{\"Properties\", Var, 0, \"\"},\n\t\t{\"Ps\", Var, 0, \"\"},\n\t\t{\"Psalter_Pahlavi\", Var, 4, \"\"},\n\t\t{\"Punct\", Var, 0, \"\"},\n\t\t{\"Quotation_Mark\", Var, 0, \"\"},\n\t\t{\"Radical\", Var, 0, \"\"},\n\t\t{\"Range16\", Type, 0, \"\"},\n\t\t{\"Range16.Hi\", Field, 0, \"\"},\n\t\t{\"Range16.Lo\", Field, 0, \"\"},\n\t\t{\"Range16.Stride\", Field, 0, \"\"},\n\t\t{\"Range32\", Type, 0, \"\"},\n\t\t{\"Range32.Hi\", Field, 0, \"\"},\n\t\t{\"Range32.Lo\", Field, 0, \"\"},\n\t\t{\"Range32.Stride\", Field, 0, \"\"},\n\t\t{\"RangeTable\", Type, 0, \"\"},\n\t\t{\"RangeTable.LatinOffset\", Field, 1, \"\"},\n\t\t{\"RangeTable.R16\", Field, 0, \"\"},\n\t\t{\"RangeTable.R32\", Field, 0, \"\"},\n\t\t{\"Regional_Indicator\", Var, 10, \"\"},\n\t\t{\"Rejang\", Var, 0, \"\"},\n\t\t{\"ReplacementChar\", Const, 0, \"\"},\n\t\t{\"Runic\", Var, 0, \"\"},\n\t\t{\"S\", Var, 0, \"\"},\n\t\t{\"STerm\", Var, 0, \"\"},\n\t\t{\"Samaritan\", Var, 0, \"\"},\n\t\t{\"Saurashtra\", Var, 0, \"\"},\n\t\t{\"Sc\", Var, 0, \"\"},\n\t\t{\"Scripts\", Var, 0, \"\"},\n\t\t{\"Sentence_Terminal\", Var, 7, \"\"},\n\t\t{\"Sharada\", Var, 1, \"\"},\n\t\t{\"Shavian\", Var, 0, \"\"},\n\t\t{\"Siddham\", Var, 4, \"\"},\n\t\t{\"SignWriting\", Var, 5, \"\"},\n\t\t{\"SimpleFold\", Func, 0, \"func(r rune) rune\"},\n\t\t{\"Sinhala\", Var, 0, \"\"},\n\t\t{\"Sk\", Var, 0, \"\"},\n\t\t{\"Sm\", Var, 0, \"\"},\n\t\t{\"So\", Var, 0, \"\"},\n\t\t{\"Soft_Dotted\", Var, 0, \"\"},\n\t\t{\"Sogdian\", Var, 13, \"\"},\n\t\t{\"Sora_Sompeng\", Var, 1, \"\"},\n\t\t{\"Soyombo\", Var, 10, \"\"},\n\t\t{\"Space\", Var, 0, \"\"},\n\t\t{\"SpecialCase\", Type, 0, \"\"},\n\t\t{\"Sundanese\", Var, 0, \"\"},\n\t\t{\"Syloti_Nagri\", Var, 0, \"\"},\n\t\t{\"Symbol\", Var, 0, \"\"},\n\t\t{\"Syriac\", Var, 0, \"\"},\n\t\t{\"Tagalog\", Var, 0, \"\"},\n\t\t{\"Tagbanwa\", Var, 0, \"\"},\n\t\t{\"Tai_Le\", Var, 0, \"\"},\n\t\t{\"Tai_Tham\", Var, 0, \"\"},\n\t\t{\"Tai_Viet\", Var, 0, \"\"},\n\t\t{\"Takri\", Var, 1, \"\"},\n\t\t{\"Tamil\", Var, 0, \"\"},\n\t\t{\"Tangsa\", Var, 21, \"\"},\n\t\t{\"Tangut\", Var, 7, \"\"},\n\t\t{\"Telugu\", Var, 0, \"\"},\n\t\t{\"Terminal_Punctuation\", Var, 0, \"\"},\n\t\t{\"Thaana\", Var, 0, \"\"},\n\t\t{\"Thai\", Var, 0, \"\"},\n\t\t{\"Tibetan\", Var, 0, \"\"},\n\t\t{\"Tifinagh\", Var, 0, \"\"},\n\t\t{\"Tirhuta\", Var, 4, \"\"},\n\t\t{\"Title\", Var, 0, \"\"},\n\t\t{\"TitleCase\", Const, 0, \"\"},\n\t\t{\"To\", Func, 0, \"func(_case int, r rune) rune\"},\n\t\t{\"ToLower\", Func, 0, \"func(r rune) rune\"},\n\t\t{\"ToTitle\", Func, 0, \"func(r rune) rune\"},\n\t\t{\"ToUpper\", Func, 0, \"func(r rune) rune\"},\n\t\t{\"Toto\", Var, 21, \"\"},\n\t\t{\"TurkishCase\", Var, 0, \"\"},\n\t\t{\"Ugaritic\", Var, 0, \"\"},\n\t\t{\"Unified_Ideograph\", Var, 0, \"\"},\n\t\t{\"Upper\", Var, 0, \"\"},\n\t\t{\"UpperCase\", Const, 0, \"\"},\n\t\t{\"UpperLower\", Const, 0, \"\"},\n\t\t{\"Vai\", Var, 0, \"\"},\n\t\t{\"Variation_Selector\", Var, 0, \"\"},\n\t\t{\"Version\", Const, 0, \"\"},\n\t\t{\"Vithkuqi\", Var, 21, \"\"},\n\t\t{\"Wancho\", Var, 14, \"\"},\n\t\t{\"Warang_Citi\", Var, 4, \"\"},\n\t\t{\"White_Space\", Var, 0, \"\"},\n\t\t{\"Yezidi\", Var, 16, \"\"},\n\t\t{\"Yi\", Var, 0, \"\"},\n\t\t{\"Z\", Var, 0, \"\"},\n\t\t{\"Zanabazar_Square\", Var, 10, \"\"},\n\t\t{\"Zl\", Var, 0, \"\"},\n\t\t{\"Zp\", Var, 0, \"\"},\n\t\t{\"Zs\", Var, 0, \"\"},\n\t},\n\t\"unicode/utf16\": {\n\t\t{\"AppendRune\", Func, 20, \"func(a []uint16, r rune) []uint16\"},\n\t\t{\"Decode\", Func, 0, \"func(s []uint16) []rune\"},\n\t\t{\"DecodeRune\", Func, 0, \"func(r1 rune, r2 rune) rune\"},\n\t\t{\"Encode\", Func, 0, \"func(s []rune) []uint16\"},\n\t\t{\"EncodeRune\", Func, 0, \"func(r rune) (r1 rune, r2 rune)\"},\n\t\t{\"IsSurrogate\", Func, 0, \"func(r rune) bool\"},\n\t\t{\"RuneLen\", Func, 23, \"func(r rune) int\"},\n\t},\n\t\"unicode/utf8\": {\n\t\t{\"AppendRune\", Func, 18, \"func(p []byte, r rune) []byte\"},\n\t\t{\"DecodeLastRune\", Func, 0, \"func(p []byte) (r rune, size int)\"},\n\t\t{\"DecodeLastRuneInString\", Func, 0, \"func(s string) (r rune, size int)\"},\n\t\t{\"DecodeRune\", Func, 0, \"func(p []byte) (r rune, size int)\"},\n\t\t{\"DecodeRuneInString\", Func, 0, \"func(s string) (r rune, size int)\"},\n\t\t{\"EncodeRune\", Func, 0, \"func(p []byte, r rune) int\"},\n\t\t{\"FullRune\", Func, 0, \"func(p []byte) bool\"},\n\t\t{\"FullRuneInString\", Func, 0, \"func(s string) bool\"},\n\t\t{\"MaxRune\", Const, 0, \"\"},\n\t\t{\"RuneCount\", Func, 0, \"func(p []byte) int\"},\n\t\t{\"RuneCountInString\", Func, 0, \"func(s string) (n int)\"},\n\t\t{\"RuneError\", Const, 0, \"\"},\n\t\t{\"RuneLen\", Func, 0, \"func(r rune) int\"},\n\t\t{\"RuneSelf\", Const, 0, \"\"},\n\t\t{\"RuneStart\", Func, 0, \"func(b byte) bool\"},\n\t\t{\"UTFMax\", Const, 0, \"\"},\n\t\t{\"Valid\", Func, 0, \"func(p []byte) bool\"},\n\t\t{\"ValidRune\", Func, 1, \"func(r rune) bool\"},\n\t\t{\"ValidString\", Func, 0, \"func(s string) bool\"},\n\t},\n\t\"unique\": {\n\t\t{\"(Handle).Value\", Method, 23, \"\"},\n\t\t{\"Handle\", Type, 23, \"\"},\n\t\t{\"Make\", Func, 23, \"func[T comparable](value T) Handle[T]\"},\n\t},\n\t\"unsafe\": {\n\t\t{\"Add\", Func, 0, \"\"},\n\t\t{\"Alignof\", Func, 0, \"\"},\n\t\t{\"Offsetof\", Func, 0, \"\"},\n\t\t{\"Pointer\", Type, 0, \"\"},\n\t\t{\"Sizeof\", Func, 0, \"\"},\n\t\t{\"Slice\", Func, 0, \"\"},\n\t\t{\"SliceData\", Func, 0, \"\"},\n\t\t{\"String\", Func, 0, \"\"},\n\t\t{\"StringData\", Func, 0, \"\"},\n\t},\n\t\"weak\": {\n\t\t{\"(Pointer).Value\", Method, 24, \"\"},\n\t\t{\"Make\", Func, 24, \"func[T any](ptr *T) Pointer[T]\"},\n\t\t{\"Pointer\", Type, 24, \"\"},\n\t},\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/stdlib/stdlib.go",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:generate go run generate.go\n\n// Package stdlib provides a table of all exported symbols in the\n// standard library, along with the version at which they first\n// appeared. It also provides the import graph of std packages.\npackage stdlib\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n)\n\ntype Symbol struct {\n\tName    string\n\tKind    Kind\n\tVersion Version // Go version that first included the symbol\n\t// Signature provides the type of a function (defined only for Kind=Func).\n\t// Imported types are denoted as pkg.T; pkg is not fully qualified.\n\t// TODO(adonovan): use an unambiguous encoding that is parseable.\n\t//\n\t// Example2:\n\t//    func[M ~map[K]V, K comparable, V any](m M) M\n\t//    func(fi fs.FileInfo, link string) (*Header, error)\n\tSignature string // if Kind == stdlib.Func\n}\n\n// A Kind indicates the kind of a symbol:\n// function, variable, constant, type, and so on.\ntype Kind int8\n\nconst (\n\tInvalid Kind = iota // Example name:\n\tType                // \"Buffer\"\n\tFunc                // \"Println\"\n\tVar                 // \"EOF\"\n\tConst               // \"Pi\"\n\tField               // \"Point.X\"\n\tMethod              // \"(*Buffer).Grow\" or \"(Reader).Read\"\n)\n\nfunc (kind Kind) String() string {\n\treturn [...]string{\n\t\tInvalid: \"invalid\",\n\t\tType:    \"type\",\n\t\tFunc:    \"func\",\n\t\tVar:     \"var\",\n\t\tConst:   \"const\",\n\t\tField:   \"field\",\n\t\tMethod:  \"method\",\n\t}[kind]\n}\n\n// A Version represents a version of Go of the form \"go1.%d\".\ntype Version int8\n\n// String returns a version string of the form \"go1.23\", without allocating.\nfunc (v Version) String() string { return versions[v] }\n\nvar versions [30]string // (increase constant as needed)\n\nfunc init() {\n\tfor i := range versions {\n\t\tversions[i] = fmt.Sprintf(\"go1.%d\", i)\n\t}\n}\n\n// HasPackage reports whether the specified package path is part of\n// the standard library's public API.\nfunc HasPackage(path string) bool {\n\t_, ok := PackageSymbols[path]\n\treturn ok\n}\n\n// SplitField splits the field symbol name into type and field\n// components. It must be called only on Field symbols.\n//\n// Example: \"File.Package\" -> (\"File\", \"Package\")\nfunc (sym *Symbol) SplitField() (typename, name string) {\n\tif sym.Kind != Field {\n\t\tpanic(\"not a field\")\n\t}\n\ttypename, name, _ = strings.Cut(sym.Name, \".\")\n\treturn\n}\n\n// SplitMethod splits the method symbol name into pointer, receiver,\n// and method components. It must be called only on Method symbols.\n//\n// Example: \"(*Buffer).Grow\" -> (true, \"Buffer\", \"Grow\")\nfunc (sym *Symbol) SplitMethod() (ptr bool, recv, name string) {\n\tif sym.Kind != Method {\n\t\tpanic(\"not a method\")\n\t}\n\trecv, name, _ = strings.Cut(sym.Name, \".\")\n\trecv = recv[len(\"(\") : len(recv)-len(\")\")]\n\tptr = recv[0] == '*'\n\tif ptr {\n\t\trecv = recv[len(\"*\"):]\n\t}\n\treturn\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/typeparams/common.go",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package typeparams contains common utilities for writing tools that\n// interact with generic Go code, as introduced with Go 1.18. It\n// supplements the standard library APIs. Notably, the StructuralTerms\n// API computes a minimal representation of the structural\n// restrictions on a type parameter.\n//\n// An external version of these APIs is available in the\n// golang.org/x/exp/typeparams module.\npackage typeparams\n\nimport (\n\t\"go/ast\"\n\t\"go/token\"\n\t\"go/types\"\n)\n\n// UnpackIndexExpr extracts data from AST nodes that represent index\n// expressions.\n//\n// For an ast.IndexExpr, the resulting indices slice will contain exactly one\n// index expression. For an ast.IndexListExpr (go1.18+), it may have a variable\n// number of index expressions.\n//\n// For nodes that don't represent index expressions, the first return value of\n// UnpackIndexExpr will be nil.\nfunc UnpackIndexExpr(n ast.Node) (x ast.Expr, lbrack token.Pos, indices []ast.Expr, rbrack token.Pos) {\n\tswitch e := n.(type) {\n\tcase *ast.IndexExpr:\n\t\treturn e.X, e.Lbrack, []ast.Expr{e.Index}, e.Rbrack\n\tcase *ast.IndexListExpr:\n\t\treturn e.X, e.Lbrack, e.Indices, e.Rbrack\n\t}\n\treturn nil, token.NoPos, nil, token.NoPos\n}\n\n// PackIndexExpr returns an *ast.IndexExpr or *ast.IndexListExpr, depending on\n// the cardinality of indices. Calling PackIndexExpr with len(indices) == 0\n// will panic.\nfunc PackIndexExpr(x ast.Expr, lbrack token.Pos, indices []ast.Expr, rbrack token.Pos) ast.Expr {\n\tswitch len(indices) {\n\tcase 0:\n\t\tpanic(\"empty indices\")\n\tcase 1:\n\t\treturn &ast.IndexExpr{\n\t\t\tX:      x,\n\t\t\tLbrack: lbrack,\n\t\t\tIndex:  indices[0],\n\t\t\tRbrack: rbrack,\n\t\t}\n\tdefault:\n\t\treturn &ast.IndexListExpr{\n\t\t\tX:       x,\n\t\t\tLbrack:  lbrack,\n\t\t\tIndices: indices,\n\t\t\tRbrack:  rbrack,\n\t\t}\n\t}\n}\n\n// IsTypeParam reports whether t is a type parameter (or an alias of one).\nfunc IsTypeParam(t types.Type) bool {\n\t_, ok := types.Unalias(t).(*types.TypeParam)\n\treturn ok\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/typeparams/coretype.go",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage typeparams\n\nimport (\n\t\"fmt\"\n\t\"go/types\"\n)\n\n// CoreType returns the core type of T or nil if T does not have a core type.\n//\n// See https://go.dev/ref/spec#Core_types for the definition of a core type.\nfunc CoreType(T types.Type) types.Type {\n\tU := T.Underlying()\n\tif _, ok := U.(*types.Interface); !ok {\n\t\treturn U // for non-interface types,\n\t}\n\n\tterms, err := NormalTerms(U)\n\tif len(terms) == 0 || err != nil {\n\t\t// len(terms) -> empty type set of interface.\n\t\t// err != nil => U is invalid, exceeds complexity bounds, or has an empty type set.\n\t\treturn nil // no core type.\n\t}\n\n\tU = terms[0].Type().Underlying()\n\tvar identical int // i in [0,identical) => Identical(U, terms[i].Type().Underlying())\n\tfor identical = 1; identical < len(terms); identical++ {\n\t\tif !types.Identical(U, terms[identical].Type().Underlying()) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\tif identical == len(terms) {\n\t\t// https://go.dev/ref/spec#Core_types\n\t\t// \"There is a single type U which is the underlying type of all types in the type set of T\"\n\t\treturn U\n\t}\n\tch, ok := U.(*types.Chan)\n\tif !ok {\n\t\treturn nil // no core type as identical < len(terms) and U is not a channel.\n\t}\n\t// https://go.dev/ref/spec#Core_types\n\t// \"the type chan E if T contains only bidirectional channels, or the type chan<- E or\n\t// <-chan E depending on the direction of the directional channels present.\"\n\tfor chans := identical; chans < len(terms); chans++ {\n\t\tcurr, ok := terms[chans].Type().Underlying().(*types.Chan)\n\t\tif !ok {\n\t\t\treturn nil\n\t\t}\n\t\tif !types.Identical(ch.Elem(), curr.Elem()) {\n\t\t\treturn nil // channel elements are not identical.\n\t\t}\n\t\tif ch.Dir() == types.SendRecv {\n\t\t\t// ch is bidirectional. We can safely always use curr's direction.\n\t\t\tch = curr\n\t\t} else if curr.Dir() != types.SendRecv && ch.Dir() != curr.Dir() {\n\t\t\t// ch and curr are not bidirectional and not the same direction.\n\t\t\treturn nil\n\t\t}\n\t}\n\treturn ch\n}\n\n// NormalTerms returns a slice of terms representing the normalized structural\n// type restrictions of a type, if any.\n//\n// For all types other than *types.TypeParam, *types.Interface, and\n// *types.Union, this is just a single term with Tilde() == false and\n// Type() == typ. For *types.TypeParam, *types.Interface, and *types.Union, see\n// below.\n//\n// Structural type restrictions of a type parameter are created via\n// non-interface types embedded in its constraint interface (directly, or via a\n// chain of interface embeddings). For example, in the declaration type\n// T[P interface{~int; m()}] int the structural restriction of the type\n// parameter P is ~int.\n//\n// With interface embedding and unions, the specification of structural type\n// restrictions may be arbitrarily complex. For example, consider the\n// following:\n//\n//\ttype A interface{ ~string|~[]byte }\n//\n//\ttype B interface{ int|string }\n//\n//\ttype C interface { ~string|~int }\n//\n//\ttype T[P interface{ A|B; C }] int\n//\n// In this example, the structural type restriction of P is ~string|int: A|B\n// expands to ~string|~[]byte|int|string, which reduces to ~string|~[]byte|int,\n// which when intersected with C (~string|~int) yields ~string|int.\n//\n// NormalTerms computes these expansions and reductions, producing a\n// \"normalized\" form of the embeddings. A structural restriction is normalized\n// if it is a single union containing no interface terms, and is minimal in the\n// sense that removing any term changes the set of types satisfying the\n// constraint. It is left as a proof for the reader that, modulo sorting, there\n// is exactly one such normalized form.\n//\n// Because the minimal representation always takes this form, NormalTerms\n// returns a slice of tilde terms corresponding to the terms of the union in\n// the normalized structural restriction. An error is returned if the type is\n// invalid, exceeds complexity bounds, or has an empty type set. In the latter\n// case, NormalTerms returns ErrEmptyTypeSet.\n//\n// NormalTerms makes no guarantees about the order of terms, except that it\n// is deterministic.\nfunc NormalTerms(T types.Type) ([]*types.Term, error) {\n\t// typeSetOf(T) == typeSetOf(Unalias(T))\n\ttyp := types.Unalias(T)\n\tif named, ok := typ.(*types.Named); ok {\n\t\ttyp = named.Underlying()\n\t}\n\tswitch typ := typ.(type) {\n\tcase *types.TypeParam:\n\t\treturn StructuralTerms(typ)\n\tcase *types.Union:\n\t\treturn UnionTermSet(typ)\n\tcase *types.Interface:\n\t\treturn InterfaceTermSet(typ)\n\tdefault:\n\t\treturn []*types.Term{types.NewTerm(false, T)}, nil\n\t}\n}\n\n// Deref returns the type of the variable pointed to by t,\n// if t's core type is a pointer; otherwise it returns t.\n//\n// Do not assume that Deref(T)==T implies T is not a pointer:\n// consider \"type T *T\", for example.\n//\n// TODO(adonovan): ideally this would live in typesinternal, but that\n// creates an import cycle. Move there when we melt this package down.\nfunc Deref(t types.Type) types.Type {\n\tif ptr, ok := CoreType(t).(*types.Pointer); ok {\n\t\treturn ptr.Elem()\n\t}\n\treturn t\n}\n\n// MustDeref returns the type of the variable pointed to by t.\n// It panics if t's core type is not a pointer.\n//\n// TODO(adonovan): ideally this would live in typesinternal, but that\n// creates an import cycle. Move there when we melt this package down.\nfunc MustDeref(t types.Type) types.Type {\n\tif ptr, ok := CoreType(t).(*types.Pointer); ok {\n\t\treturn ptr.Elem()\n\t}\n\tpanic(fmt.Sprintf(\"%v is not a pointer\", t))\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/typeparams/free.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage typeparams\n\nimport (\n\t\"go/types\"\n\n\t\"golang.org/x/tools/internal/aliases\"\n)\n\n// Free is a memoization of the set of free type parameters within a\n// type. It makes a sequence of calls to [Free.Has] for overlapping\n// types more efficient. The zero value is ready for use.\n//\n// NOTE: Adapted from go/types/infer.go. If it is later exported, factor.\ntype Free struct {\n\tseen map[types.Type]bool\n}\n\n// Has reports whether the specified type has a free type parameter.\nfunc (w *Free) Has(typ types.Type) (res bool) {\n\t// detect cycles\n\tif x, ok := w.seen[typ]; ok {\n\t\treturn x\n\t}\n\tif w.seen == nil {\n\t\tw.seen = make(map[types.Type]bool)\n\t}\n\tw.seen[typ] = false\n\tdefer func() {\n\t\tw.seen[typ] = res\n\t}()\n\n\tswitch t := typ.(type) {\n\tcase nil, *types.Basic: // TODO(gri) should nil be handled here?\n\t\tbreak\n\n\tcase *types.Alias:\n\t\tif aliases.TypeParams(t).Len() > aliases.TypeArgs(t).Len() {\n\t\t\treturn true // This is an uninstantiated Alias.\n\t\t}\n\t\t// The expansion of an alias can have free type parameters,\n\t\t// whether or not the alias itself has type parameters:\n\t\t//\n\t\t//   func _[K comparable]() {\n\t\t//     type Set      = map[K]bool // free(Set)      = {K}\n\t\t//     type MapTo[V] = map[K]V    // free(Map[foo]) = {V}\n\t\t//   }\n\t\t//\n\t\t// So, we must Unalias.\n\t\treturn w.Has(types.Unalias(t))\n\n\tcase *types.Array:\n\t\treturn w.Has(t.Elem())\n\n\tcase *types.Slice:\n\t\treturn w.Has(t.Elem())\n\n\tcase *types.Struct:\n\t\tfor i, n := 0, t.NumFields(); i < n; i++ {\n\t\t\tif w.Has(t.Field(i).Type()) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\n\tcase *types.Pointer:\n\t\treturn w.Has(t.Elem())\n\n\tcase *types.Tuple:\n\t\tn := t.Len()\n\t\tfor i := range n {\n\t\t\tif w.Has(t.At(i).Type()) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\n\tcase *types.Signature:\n\t\t// t.tparams may not be nil if we are looking at a signature\n\t\t// of a generic function type (or an interface method) that is\n\t\t// part of the type we're testing. We don't care about these type\n\t\t// parameters.\n\t\t// Similarly, the receiver of a method may declare (rather than\n\t\t// use) type parameters, we don't care about those either.\n\t\t// Thus, we only need to look at the input and result parameters.\n\t\treturn w.Has(t.Params()) || w.Has(t.Results())\n\n\tcase *types.Interface:\n\t\tfor i, n := 0, t.NumMethods(); i < n; i++ {\n\t\t\tif w.Has(t.Method(i).Type()) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\tterms, err := InterfaceTermSet(t)\n\t\tif err != nil {\n\t\t\treturn false // ill typed\n\t\t}\n\t\tfor _, term := range terms {\n\t\t\tif w.Has(term.Type()) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\n\tcase *types.Map:\n\t\treturn w.Has(t.Key()) || w.Has(t.Elem())\n\n\tcase *types.Chan:\n\t\treturn w.Has(t.Elem())\n\n\tcase *types.Named:\n\t\targs := t.TypeArgs()\n\t\tif params := t.TypeParams(); params.Len() > args.Len() {\n\t\t\treturn true // this is an uninstantiated named type.\n\t\t}\n\t\tfor i, n := 0, args.Len(); i < n; i++ {\n\t\t\tif w.Has(args.At(i)) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\treturn w.Has(t.Underlying()) // recurse for types local to parameterized functions\n\n\tcase *types.TypeParam:\n\t\treturn true\n\n\tdefault:\n\t\tpanic(t) // unreachable\n\t}\n\n\treturn false\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/typeparams/normalize.go",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage typeparams\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"go/types\"\n\t\"os\"\n\t\"strings\"\n)\n\n//go:generate go run copytermlist.go\n\nconst debug = false\n\nvar ErrEmptyTypeSet = errors.New(\"empty type set\")\n\n// StructuralTerms returns a slice of terms representing the normalized\n// structural type restrictions of a type parameter, if any.\n//\n// Structural type restrictions of a type parameter are created via\n// non-interface types embedded in its constraint interface (directly, or via a\n// chain of interface embeddings). For example, in the declaration\n//\n//\ttype T[P interface{~int; m()}] int\n//\n// the structural restriction of the type parameter P is ~int.\n//\n// With interface embedding and unions, the specification of structural type\n// restrictions may be arbitrarily complex. For example, consider the\n// following:\n//\n//\ttype A interface{ ~string|~[]byte }\n//\n//\ttype B interface{ int|string }\n//\n//\ttype C interface { ~string|~int }\n//\n//\ttype T[P interface{ A|B; C }] int\n//\n// In this example, the structural type restriction of P is ~string|int: A|B\n// expands to ~string|~[]byte|int|string, which reduces to ~string|~[]byte|int,\n// which when intersected with C (~string|~int) yields ~string|int.\n//\n// StructuralTerms computes these expansions and reductions, producing a\n// \"normalized\" form of the embeddings. A structural restriction is normalized\n// if it is a single union containing no interface terms, and is minimal in the\n// sense that removing any term changes the set of types satisfying the\n// constraint. It is left as a proof for the reader that, modulo sorting, there\n// is exactly one such normalized form.\n//\n// Because the minimal representation always takes this form, StructuralTerms\n// returns a slice of tilde terms corresponding to the terms of the union in\n// the normalized structural restriction. An error is returned if the\n// constraint interface is invalid, exceeds complexity bounds, or has an empty\n// type set. In the latter case, StructuralTerms returns ErrEmptyTypeSet.\n//\n// StructuralTerms makes no guarantees about the order of terms, except that it\n// is deterministic.\nfunc StructuralTerms(tparam *types.TypeParam) ([]*types.Term, error) {\n\tconstraint := tparam.Constraint()\n\tif constraint == nil {\n\t\treturn nil, fmt.Errorf(\"%s has nil constraint\", tparam)\n\t}\n\tiface, _ := constraint.Underlying().(*types.Interface)\n\tif iface == nil {\n\t\treturn nil, fmt.Errorf(\"constraint is %T, not *types.Interface\", constraint.Underlying())\n\t}\n\treturn InterfaceTermSet(iface)\n}\n\n// InterfaceTermSet computes the normalized terms for a constraint interface,\n// returning an error if the term set cannot be computed or is empty. In the\n// latter case, the error will be ErrEmptyTypeSet.\n//\n// See the documentation of StructuralTerms for more information on\n// normalization.\nfunc InterfaceTermSet(iface *types.Interface) ([]*types.Term, error) {\n\treturn computeTermSet(iface)\n}\n\n// UnionTermSet computes the normalized terms for a union, returning an error\n// if the term set cannot be computed or is empty. In the latter case, the\n// error will be ErrEmptyTypeSet.\n//\n// See the documentation of StructuralTerms for more information on\n// normalization.\nfunc UnionTermSet(union *types.Union) ([]*types.Term, error) {\n\treturn computeTermSet(union)\n}\n\nfunc computeTermSet(typ types.Type) ([]*types.Term, error) {\n\ttset, err := computeTermSetInternal(typ, make(map[types.Type]*termSet), 0)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif tset.terms.isEmpty() {\n\t\treturn nil, ErrEmptyTypeSet\n\t}\n\tif tset.terms.isAll() {\n\t\treturn nil, nil\n\t}\n\tvar terms []*types.Term\n\tfor _, term := range tset.terms {\n\t\tterms = append(terms, types.NewTerm(term.tilde, term.typ))\n\t}\n\treturn terms, nil\n}\n\n// A termSet holds the normalized set of terms for a given type.\n//\n// The name termSet is intentionally distinct from 'type set': a type set is\n// all types that implement a type (and includes method restrictions), whereas\n// a term set just represents the structural restrictions on a type.\ntype termSet struct {\n\tcomplete bool\n\tterms    termlist\n}\n\nfunc indentf(depth int, format string, args ...any) {\n\tfmt.Fprintf(os.Stderr, strings.Repeat(\".\", depth)+format+\"\\n\", args...)\n}\n\nfunc computeTermSetInternal(t types.Type, seen map[types.Type]*termSet, depth int) (res *termSet, err error) {\n\tif t == nil {\n\t\tpanic(\"nil type\")\n\t}\n\n\tif debug {\n\t\tindentf(depth, \"%s\", t.String())\n\t\tdefer func() {\n\t\t\tif err != nil {\n\t\t\t\tindentf(depth, \"=> %s\", err)\n\t\t\t} else {\n\t\t\t\tindentf(depth, \"=> %s\", res.terms.String())\n\t\t\t}\n\t\t}()\n\t}\n\n\tconst maxTermCount = 100\n\tif tset, ok := seen[t]; ok {\n\t\tif !tset.complete {\n\t\t\treturn nil, fmt.Errorf(\"cycle detected in the declaration of %s\", t)\n\t\t}\n\t\treturn tset, nil\n\t}\n\n\t// Mark the current type as seen to avoid infinite recursion.\n\ttset := new(termSet)\n\tdefer func() {\n\t\ttset.complete = true\n\t}()\n\tseen[t] = tset\n\n\tswitch u := t.Underlying().(type) {\n\tcase *types.Interface:\n\t\t// The term set of an interface is the intersection of the term sets of its\n\t\t// embedded types.\n\t\ttset.terms = allTermlist\n\t\tfor embedded := range u.EmbeddedTypes() {\n\t\t\tif _, ok := embedded.Underlying().(*types.TypeParam); ok {\n\t\t\t\treturn nil, fmt.Errorf(\"invalid embedded type %T\", embedded)\n\t\t\t}\n\t\t\ttset2, err := computeTermSetInternal(embedded, seen, depth+1)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\ttset.terms = tset.terms.intersect(tset2.terms)\n\t\t}\n\tcase *types.Union:\n\t\t// The term set of a union is the union of term sets of its terms.\n\t\ttset.terms = nil\n\t\tfor t := range u.Terms() {\n\t\t\tvar terms termlist\n\t\t\tswitch t.Type().Underlying().(type) {\n\t\t\tcase *types.Interface:\n\t\t\t\ttset2, err := computeTermSetInternal(t.Type(), seen, depth+1)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\tterms = tset2.terms\n\t\t\tcase *types.TypeParam, *types.Union:\n\t\t\t\t// A stand-alone type parameter or union is not permitted as union\n\t\t\t\t// term.\n\t\t\t\treturn nil, fmt.Errorf(\"invalid union term %T\", t)\n\t\t\tdefault:\n\t\t\t\tif t.Type() == types.Typ[types.Invalid] {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tterms = termlist{{t.Tilde(), t.Type()}}\n\t\t\t}\n\t\t\ttset.terms = tset.terms.union(terms)\n\t\t\tif len(tset.terms) > maxTermCount {\n\t\t\t\treturn nil, fmt.Errorf(\"exceeded max term count %d\", maxTermCount)\n\t\t\t}\n\t\t}\n\tcase *types.TypeParam:\n\t\tpanic(\"unreachable\")\n\tdefault:\n\t\t// For all other types, the term set is just a single non-tilde term\n\t\t// holding the type itself.\n\t\tif u != types.Typ[types.Invalid] {\n\t\t\ttset.terms = termlist{{false, t}}\n\t\t}\n\t}\n\treturn tset, nil\n}\n\n// under is a facade for the go/types internal function of the same name. It is\n// used by typeterm.go.\nfunc under(t types.Type) types.Type {\n\treturn t.Underlying()\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/typeparams/termlist.go",
    "content": "// Code generated by \"go test -run=Generate -write=all\"; DO NOT EDIT.\n// Source: ../../cmd/compile/internal/types2/termlist.go\n\n// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by copytermlist.go DO NOT EDIT.\n\npackage typeparams\n\nimport (\n\t\"go/types\"\n\t\"strings\"\n)\n\n// A termlist represents the type set represented by the union\n// t1 ∪ y2 ∪ ... tn of the type sets of the terms t1 to tn.\n// A termlist is in normal form if all terms are disjoint.\n// termlist operations don't require the operands to be in\n// normal form.\ntype termlist []*term\n\n// allTermlist represents the set of all types.\n// It is in normal form.\nvar allTermlist = termlist{new(term)}\n\n// termSep is the separator used between individual terms.\nconst termSep = \" | \"\n\n// String prints the termlist exactly (without normalization).\nfunc (xl termlist) String() string {\n\tif len(xl) == 0 {\n\t\treturn \"∅\"\n\t}\n\tvar buf strings.Builder\n\tfor i, x := range xl {\n\t\tif i > 0 {\n\t\t\tbuf.WriteString(termSep)\n\t\t}\n\t\tbuf.WriteString(x.String())\n\t}\n\treturn buf.String()\n}\n\n// isEmpty reports whether the termlist xl represents the empty set of types.\nfunc (xl termlist) isEmpty() bool {\n\t// If there's a non-nil term, the entire list is not empty.\n\t// If the termlist is in normal form, this requires at most\n\t// one iteration.\n\tfor _, x := range xl {\n\t\tif x != nil {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// isAll reports whether the termlist xl represents the set of all types.\nfunc (xl termlist) isAll() bool {\n\t// If there's a 𝓤 term, the entire list is 𝓤.\n\t// If the termlist is in normal form, this requires at most\n\t// one iteration.\n\tfor _, x := range xl {\n\t\tif x != nil && x.typ == nil {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// norm returns the normal form of xl.\nfunc (xl termlist) norm() termlist {\n\t// Quadratic algorithm, but good enough for now.\n\t// TODO(gri) fix asymptotic performance\n\tused := make([]bool, len(xl))\n\tvar rl termlist\n\tfor i, xi := range xl {\n\t\tif xi == nil || used[i] {\n\t\t\tcontinue\n\t\t}\n\t\tfor j := i + 1; j < len(xl); j++ {\n\t\t\txj := xl[j]\n\t\t\tif xj == nil || used[j] {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif u1, u2 := xi.union(xj); u2 == nil {\n\t\t\t\t// If we encounter a 𝓤 term, the entire list is 𝓤.\n\t\t\t\t// Exit early.\n\t\t\t\t// (Note that this is not just an optimization;\n\t\t\t\t// if we continue, we may end up with a 𝓤 term\n\t\t\t\t// and other terms and the result would not be\n\t\t\t\t// in normal form.)\n\t\t\t\tif u1.typ == nil {\n\t\t\t\t\treturn allTermlist\n\t\t\t\t}\n\t\t\t\txi = u1\n\t\t\t\tused[j] = true // xj is now unioned into xi - ignore it in future iterations\n\t\t\t}\n\t\t}\n\t\trl = append(rl, xi)\n\t}\n\treturn rl\n}\n\n// union returns the union xl ∪ yl.\nfunc (xl termlist) union(yl termlist) termlist {\n\treturn append(xl, yl...).norm()\n}\n\n// intersect returns the intersection xl ∩ yl.\nfunc (xl termlist) intersect(yl termlist) termlist {\n\tif xl.isEmpty() || yl.isEmpty() {\n\t\treturn nil\n\t}\n\n\t// Quadratic algorithm, but good enough for now.\n\t// TODO(gri) fix asymptotic performance\n\tvar rl termlist\n\tfor _, x := range xl {\n\t\tfor _, y := range yl {\n\t\t\tif r := x.intersect(y); r != nil {\n\t\t\t\trl = append(rl, r)\n\t\t\t}\n\t\t}\n\t}\n\treturn rl.norm()\n}\n\n// equal reports whether xl and yl represent the same type set.\nfunc (xl termlist) equal(yl termlist) bool {\n\t// TODO(gri) this should be more efficient\n\treturn xl.subsetOf(yl) && yl.subsetOf(xl)\n}\n\n// includes reports whether t ∈ xl.\nfunc (xl termlist) includes(t types.Type) bool {\n\tfor _, x := range xl {\n\t\tif x.includes(t) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// supersetOf reports whether y ⊆ xl.\nfunc (xl termlist) supersetOf(y *term) bool {\n\tfor _, x := range xl {\n\t\tif y.subsetOf(x) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// subsetOf reports whether xl ⊆ yl.\nfunc (xl termlist) subsetOf(yl termlist) bool {\n\tif yl.isEmpty() {\n\t\treturn xl.isEmpty()\n\t}\n\n\t// each term x of xl must be a subset of yl\n\tfor _, x := range xl {\n\t\tif !yl.supersetOf(x) {\n\t\t\treturn false // x is not a subset yl\n\t\t}\n\t}\n\treturn true\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/typeparams/typeterm.go",
    "content": "// Code generated by \"go test -run=Generate -write=all\"; DO NOT EDIT.\n// Source: ../../cmd/compile/internal/types2/typeterm.go\n\n// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by copytermlist.go DO NOT EDIT.\n\npackage typeparams\n\nimport \"go/types\"\n\n// A term describes elementary type sets:\n//\n//\t ∅:  (*term)(nil)     == ∅                      // set of no types (empty set)\n//\t 𝓤:  &term{}          == 𝓤                      // set of all types (𝓤niverse)\n//\t T:  &term{false, T}  == {T}                    // set of type T\n//\t~t:  &term{true, t}   == {t' | under(t') == t}  // set of types with underlying type t\ntype term struct {\n\ttilde bool // valid if typ != nil\n\ttyp   types.Type\n}\n\nfunc (x *term) String() string {\n\tswitch {\n\tcase x == nil:\n\t\treturn \"∅\"\n\tcase x.typ == nil:\n\t\treturn \"𝓤\"\n\tcase x.tilde:\n\t\treturn \"~\" + x.typ.String()\n\tdefault:\n\t\treturn x.typ.String()\n\t}\n}\n\n// equal reports whether x and y represent the same type set.\nfunc (x *term) equal(y *term) bool {\n\t// easy cases\n\tswitch {\n\tcase x == nil || y == nil:\n\t\treturn x == y\n\tcase x.typ == nil || y.typ == nil:\n\t\treturn x.typ == y.typ\n\t}\n\t// ∅ ⊂ x, y ⊂ 𝓤\n\n\treturn x.tilde == y.tilde && types.Identical(x.typ, y.typ)\n}\n\n// union returns the union x ∪ y: zero, one, or two non-nil terms.\nfunc (x *term) union(y *term) (_, _ *term) {\n\t// easy cases\n\tswitch {\n\tcase x == nil && y == nil:\n\t\treturn nil, nil // ∅ ∪ ∅ == ∅\n\tcase x == nil:\n\t\treturn y, nil // ∅ ∪ y == y\n\tcase y == nil:\n\t\treturn x, nil // x ∪ ∅ == x\n\tcase x.typ == nil:\n\t\treturn x, nil // 𝓤 ∪ y == 𝓤\n\tcase y.typ == nil:\n\t\treturn y, nil // x ∪ 𝓤 == 𝓤\n\t}\n\t// ∅ ⊂ x, y ⊂ 𝓤\n\n\tif x.disjoint(y) {\n\t\treturn x, y // x ∪ y == (x, y) if x ∩ y == ∅\n\t}\n\t// x.typ == y.typ\n\n\t// ~t ∪ ~t == ~t\n\t// ~t ∪  T == ~t\n\t//  T ∪ ~t == ~t\n\t//  T ∪  T ==  T\n\tif x.tilde || !y.tilde {\n\t\treturn x, nil\n\t}\n\treturn y, nil\n}\n\n// intersect returns the intersection x ∩ y.\nfunc (x *term) intersect(y *term) *term {\n\t// easy cases\n\tswitch {\n\tcase x == nil || y == nil:\n\t\treturn nil // ∅ ∩ y == ∅ and ∩ ∅ == ∅\n\tcase x.typ == nil:\n\t\treturn y // 𝓤 ∩ y == y\n\tcase y.typ == nil:\n\t\treturn x // x ∩ 𝓤 == x\n\t}\n\t// ∅ ⊂ x, y ⊂ 𝓤\n\n\tif x.disjoint(y) {\n\t\treturn nil // x ∩ y == ∅ if x ∩ y == ∅\n\t}\n\t// x.typ == y.typ\n\n\t// ~t ∩ ~t == ~t\n\t// ~t ∩  T ==  T\n\t//  T ∩ ~t ==  T\n\t//  T ∩  T ==  T\n\tif !x.tilde || y.tilde {\n\t\treturn x\n\t}\n\treturn y\n}\n\n// includes reports whether t ∈ x.\nfunc (x *term) includes(t types.Type) bool {\n\t// easy cases\n\tswitch {\n\tcase x == nil:\n\t\treturn false // t ∈ ∅ == false\n\tcase x.typ == nil:\n\t\treturn true // t ∈ 𝓤 == true\n\t}\n\t// ∅ ⊂ x ⊂ 𝓤\n\n\tu := t\n\tif x.tilde {\n\t\tu = under(u)\n\t}\n\treturn types.Identical(x.typ, u)\n}\n\n// subsetOf reports whether x ⊆ y.\nfunc (x *term) subsetOf(y *term) bool {\n\t// easy cases\n\tswitch {\n\tcase x == nil:\n\t\treturn true // ∅ ⊆ y == true\n\tcase y == nil:\n\t\treturn false // x ⊆ ∅ == false since x != ∅\n\tcase y.typ == nil:\n\t\treturn true // x ⊆ 𝓤 == true\n\tcase x.typ == nil:\n\t\treturn false // 𝓤 ⊆ y == false since y != 𝓤\n\t}\n\t// ∅ ⊂ x, y ⊂ 𝓤\n\n\tif x.disjoint(y) {\n\t\treturn false // x ⊆ y == false if x ∩ y == ∅\n\t}\n\t// x.typ == y.typ\n\n\t// ~t ⊆ ~t == true\n\t// ~t ⊆ T == false\n\t//  T ⊆ ~t == true\n\t//  T ⊆  T == true\n\treturn !x.tilde || y.tilde\n}\n\n// disjoint reports whether x ∩ y == ∅.\n// x.typ and y.typ must not be nil.\nfunc (x *term) disjoint(y *term) bool {\n\tif debug && (x.typ == nil || y.typ == nil) {\n\t\tpanic(\"invalid argument(s)\")\n\t}\n\tux := x.typ\n\tif y.tilde {\n\t\tux = under(ux)\n\t}\n\tuy := y.typ\n\tif x.tilde {\n\t\tuy = under(uy)\n\t}\n\treturn !types.Identical(ux, uy)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/typesinternal/classify_call.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage typesinternal\n\nimport (\n\t\"fmt\"\n\t\"go/ast\"\n\t\"go/types\"\n\t_ \"unsafe\" // for go:linkname hack\n)\n\n// CallKind describes the function position of an [*ast.CallExpr].\ntype CallKind int\n\nconst (\n\tCallStatic     CallKind = iota // static call to known function\n\tCallInterface                  // dynamic call through an interface method\n\tCallDynamic                    // dynamic call of a func value\n\tCallBuiltin                    // call to a builtin function\n\tCallConversion                 // a conversion (not a call)\n)\n\nvar callKindNames = []string{\n\t\"CallStatic\",\n\t\"CallInterface\",\n\t\"CallDynamic\",\n\t\"CallBuiltin\",\n\t\"CallConversion\",\n}\n\nfunc (k CallKind) String() string {\n\tif i := int(k); i >= 0 && i < len(callKindNames) {\n\t\treturn callKindNames[i]\n\t}\n\treturn fmt.Sprintf(\"typeutil.CallKind(%d)\", k)\n}\n\n// ClassifyCall classifies the function position of a call expression ([*ast.CallExpr]).\n// It distinguishes among true function calls, calls to builtins, and type conversions,\n// and further classifies function calls as static calls (where the function is known),\n// dynamic interface calls, and other dynamic calls.\n//\n// For the declarations:\n//\n//\tfunc f() {}\n//\tfunc g[T any]() {}\n//\tvar v func()\n//\tvar s []func()\n//\ttype I interface { M() }\n//\tvar i I\n//\n// ClassifyCall returns the following:\n//\n//\tf()           CallStatic\n//\tg[int]()      CallStatic\n//\ti.M()         CallInterface\n//\tmin(1, 2)     CallBuiltin\n//\tv()           CallDynamic\n//\ts[0]()        CallDynamic\n//\tint(x)        CallConversion\n//\t[]byte(\"\")    CallConversion\nfunc ClassifyCall(info *types.Info, call *ast.CallExpr) CallKind {\n\tif info.Types == nil {\n\t\tpanic(\"ClassifyCall: info.Types is nil\")\n\t}\n\ttv := info.Types[call.Fun]\n\tif tv.IsType() {\n\t\treturn CallConversion\n\t}\n\tif tv.IsBuiltin() {\n\t\treturn CallBuiltin\n\t}\n\tobj := info.Uses[UsedIdent(info, call.Fun)]\n\t// Classify the call by the type of the object, if any.\n\tswitch obj := obj.(type) {\n\tcase *types.Func:\n\t\tif interfaceMethod(obj) {\n\t\t\treturn CallInterface\n\t\t}\n\t\treturn CallStatic\n\tdefault:\n\t\treturn CallDynamic\n\t}\n}\n\n// UsedIdent returns the identifier such that info.Uses[UsedIdent(info, e)]\n// is the [types.Object] used by e, if any.\n//\n// If e is one of various forms of reference:\n//\n//\tf, c, v, T           lexical reference\n//\tpkg.X                qualified identifier\n//\tf[T] or pkg.F[K,V]   instantiations of the above kinds\n//\texpr.f               field or method value selector\n//\tT.f                  method expression selector\n//\n// UsedIdent returns the identifier whose is associated value in [types.Info.Uses]\n// is the object to which it refers.\n//\n// For the declarations:\n//\n//\tfunc F[T any] {...}\n//\ttype I interface { M() }\n//\tvar (\n//\t  x int\n//\t  s struct { f  int }\n//\t  a []int\n//\t  i I\n//\t)\n//\n// UsedIdent returns the following:\n//\n//\tExpr          UsedIdent\n//\tx             x\n//\ts.f           f\n//\tF[int]        F\n//\ti.M           M\n//\tI.M           M\n//\tmin           min\n//\tint           int\n//\t1             nil\n//\ta[0]          nil\n//\t[]byte        nil\n//\n// Note: if e is an instantiated function or method, UsedIdent returns\n// the corresponding generic function or method on the generic type.\nfunc UsedIdent(info *types.Info, e ast.Expr) *ast.Ident {\n\treturn usedIdent(info, e)\n}\n\n//go:linkname usedIdent golang.org/x/tools/go/types/typeutil.usedIdent\nfunc usedIdent(info *types.Info, e ast.Expr) *ast.Ident\n\n//go:linkname interfaceMethod golang.org/x/tools/go/types/typeutil.interfaceMethod\nfunc interfaceMethod(f *types.Func) bool\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/typesinternal/element.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage typesinternal\n\nimport (\n\t\"fmt\"\n\t\"go/types\"\n\n\t\"golang.org/x/tools/go/types/typeutil\"\n)\n\n// ForEachElement calls f for type T and each type reachable from its\n// type through reflection. It does this by recursively stripping off\n// type constructors; in addition, for each named type N, the type *N\n// is added to the result as it may have additional methods.\n//\n// The caller must provide an initially empty set used to de-duplicate\n// identical types, potentially across multiple calls to ForEachElement.\n// (Its final value holds all the elements seen, matching the arguments\n// passed to f.)\n//\n// TODO(adonovan): share/harmonize with go/callgraph/rta.\nfunc ForEachElement(rtypes *typeutil.Map, msets *typeutil.MethodSetCache, T types.Type, f func(types.Type)) {\n\tvar visit func(T types.Type, skip bool)\n\tvisit = func(T types.Type, skip bool) {\n\t\tif !skip {\n\t\t\tif seen, _ := rtypes.Set(T, true).(bool); seen {\n\t\t\t\treturn // de-dup\n\t\t\t}\n\n\t\t\tf(T) // notify caller of new element type\n\t\t}\n\n\t\t// Recursion over signatures of each method.\n\t\ttmset := msets.MethodSet(T)\n\t\tfor method := range tmset.Methods() {\n\t\t\tsig := method.Type().(*types.Signature)\n\t\t\t// It is tempting to call visit(sig, false)\n\t\t\t// but, as noted in golang.org/cl/65450043,\n\t\t\t// the Signature.Recv field is ignored by\n\t\t\t// types.Identical and typeutil.Map, which\n\t\t\t// is confusing at best.\n\t\t\t//\n\t\t\t// More importantly, the true signature rtype\n\t\t\t// reachable from a method using reflection\n\t\t\t// has no receiver but an extra ordinary parameter.\n\t\t\t// For the Read method of io.Reader we want:\n\t\t\t//   func(Reader, []byte) (int, error)\n\t\t\t// but here sig is:\n\t\t\t//   func([]byte) (int, error)\n\t\t\t// with .Recv = Reader (though it is hard to\n\t\t\t// notice because it doesn't affect Signature.String\n\t\t\t// or types.Identical).\n\t\t\t//\n\t\t\t// TODO(adonovan): construct and visit the correct\n\t\t\t// non-method signature with an extra parameter\n\t\t\t// (though since unnamed func types have no methods\n\t\t\t// there is essentially no actual demand for this).\n\t\t\t//\n\t\t\t// TODO(adonovan): document whether or not it is\n\t\t\t// safe to skip non-exported methods (as RTA does).\n\t\t\tvisit(sig.Params(), true)  // skip the Tuple\n\t\t\tvisit(sig.Results(), true) // skip the Tuple\n\t\t}\n\n\t\tswitch T := T.(type) {\n\t\tcase *types.Alias:\n\t\t\tvisit(types.Unalias(T), skip) // emulates the pre-Alias behavior\n\n\t\tcase *types.Basic:\n\t\t\t// nop\n\n\t\tcase *types.Interface:\n\t\t\t// nop---handled by recursion over method set.\n\n\t\tcase *types.Pointer:\n\t\t\tvisit(T.Elem(), false)\n\n\t\tcase *types.Slice:\n\t\t\tvisit(T.Elem(), false)\n\n\t\tcase *types.Chan:\n\t\t\tvisit(T.Elem(), false)\n\n\t\tcase *types.Map:\n\t\t\tvisit(T.Key(), false)\n\t\t\tvisit(T.Elem(), false)\n\n\t\tcase *types.Signature:\n\t\t\tif T.Recv() != nil {\n\t\t\t\tpanic(fmt.Sprintf(\"Signature %s has Recv %s\", T, T.Recv()))\n\t\t\t}\n\t\t\tvisit(T.Params(), true)  // skip the Tuple\n\t\t\tvisit(T.Results(), true) // skip the Tuple\n\n\t\tcase *types.Named:\n\t\t\t// A pointer-to-named type can be derived from a named\n\t\t\t// type via reflection.  It may have methods too.\n\t\t\tvisit(types.NewPointer(T), false)\n\n\t\t\t// Consider 'type T struct{S}' where S has methods.\n\t\t\t// Reflection provides no way to get from T to struct{S},\n\t\t\t// only to S, so the method set of struct{S} is unwanted,\n\t\t\t// so set 'skip' flag during recursion.\n\t\t\tvisit(T.Underlying(), true) // skip the unnamed type\n\n\t\tcase *types.Array:\n\t\t\tvisit(T.Elem(), false)\n\n\t\tcase *types.Struct:\n\t\t\tfor i, n := 0, T.NumFields(); i < n; i++ {\n\t\t\t\t// TODO(adonovan): document whether or not\n\t\t\t\t// it is safe to skip non-exported fields.\n\t\t\t\tvisit(T.Field(i).Type(), false)\n\t\t\t}\n\n\t\tcase *types.Tuple:\n\t\t\tfor i, n := 0, T.Len(); i < n; i++ {\n\t\t\t\tvisit(T.At(i).Type(), false)\n\t\t\t}\n\n\t\tcase *types.TypeParam, *types.Union:\n\t\t\t// forEachReachable must not be called on parameterized types.\n\t\t\tpanic(T)\n\n\t\tdefault:\n\t\t\tpanic(T)\n\t\t}\n\t}\n\tvisit(T, false)\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/typesinternal/errorcode.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage typesinternal\n\n//go:generate stringer -type=ErrorCode\n\ntype ErrorCode int\n\n// This file defines the error codes that can be produced during type-checking.\n// Collectively, these codes provide an identifier that may be used to\n// implement special handling for certain types of errors.\n//\n// Error codes should be fine-grained enough that the exact nature of the error\n// can be easily determined, but coarse enough that they are not an\n// implementation detail of the type checking algorithm. As a rule-of-thumb,\n// errors should be considered equivalent if there is a theoretical refactoring\n// of the type checker in which they are emitted in exactly one place. For\n// example, the type checker emits different error messages for \"too many\n// arguments\" and \"too few arguments\", but one can imagine an alternative type\n// checker where this check instead just emits a single \"wrong number of\n// arguments\", so these errors should have the same code.\n//\n// Error code names should be as brief as possible while retaining accuracy and\n// distinctiveness. In most cases names should start with an adjective\n// describing the nature of the error (e.g. \"invalid\", \"unused\", \"misplaced\"),\n// and end with a noun identifying the relevant language object. For example,\n// \"DuplicateDecl\" or \"InvalidSliceExpr\". For brevity, naming follows the\n// convention that \"bad\" implies a problem with syntax, and \"invalid\" implies a\n// problem with types.\n\nconst (\n\t// InvalidSyntaxTree occurs if an invalid syntax tree is provided\n\t// to the type checker. It should never happen.\n\tInvalidSyntaxTree ErrorCode = -1\n)\n\nconst (\n\t_ ErrorCode = iota\n\n\t// Test is reserved for errors that only apply while in self-test mode.\n\tTest\n\n\t/* package names */\n\n\t// BlankPkgName occurs when a package name is the blank identifier \"_\".\n\t//\n\t// Per the spec:\n\t//  \"The PackageName must not be the blank identifier.\"\n\tBlankPkgName\n\n\t// MismatchedPkgName occurs when a file's package name doesn't match the\n\t// package name already established by other files.\n\tMismatchedPkgName\n\n\t// InvalidPkgUse occurs when a package identifier is used outside of a\n\t// selector expression.\n\t//\n\t// Example:\n\t//  import \"fmt\"\n\t//\n\t//  var _ = fmt\n\tInvalidPkgUse\n\n\t/* imports */\n\n\t// BadImportPath occurs when an import path is not valid.\n\tBadImportPath\n\n\t// BrokenImport occurs when importing a package fails.\n\t//\n\t// Example:\n\t//  import \"amissingpackage\"\n\tBrokenImport\n\n\t// ImportCRenamed occurs when the special import \"C\" is renamed. \"C\" is a\n\t// pseudo-package, and must not be renamed.\n\t//\n\t// Example:\n\t//  import _ \"C\"\n\tImportCRenamed\n\n\t// UnusedImport occurs when an import is unused.\n\t//\n\t// Example:\n\t//  import \"fmt\"\n\t//\n\t//  func main() {}\n\tUnusedImport\n\n\t/* initialization */\n\n\t// InvalidInitCycle occurs when an invalid cycle is detected within the\n\t// initialization graph.\n\t//\n\t// Example:\n\t//  var x int = f()\n\t//\n\t//  func f() int { return x }\n\tInvalidInitCycle\n\n\t/* decls */\n\n\t// DuplicateDecl occurs when an identifier is declared multiple times.\n\t//\n\t// Example:\n\t//  var x = 1\n\t//  var x = 2\n\tDuplicateDecl\n\n\t// InvalidDeclCycle occurs when a declaration cycle is not valid.\n\t//\n\t// Example:\n\t//  import \"unsafe\"\n\t//\n\t//  type T struct {\n\t//  \ta [n]int\n\t//  }\n\t//\n\t//  var n = unsafe.Sizeof(T{})\n\tInvalidDeclCycle\n\n\t// InvalidTypeCycle occurs when a cycle in type definitions results in a\n\t// type that is not well-defined.\n\t//\n\t// Example:\n\t//  import \"unsafe\"\n\t//\n\t//  type T [unsafe.Sizeof(T{})]int\n\tInvalidTypeCycle\n\n\t/* decls > const */\n\n\t// InvalidConstInit occurs when a const declaration has a non-constant\n\t// initializer.\n\t//\n\t// Example:\n\t//  var x int\n\t//  const _ = x\n\tInvalidConstInit\n\n\t// InvalidConstVal occurs when a const value cannot be converted to its\n\t// target type.\n\t//\n\t// TODO(findleyr): this error code and example are not very clear. Consider\n\t// removing it.\n\t//\n\t// Example:\n\t//  const _ = 1 << \"hello\"\n\tInvalidConstVal\n\n\t// InvalidConstType occurs when the underlying type in a const declaration\n\t// is not a valid constant type.\n\t//\n\t// Example:\n\t//  const c *int = 4\n\tInvalidConstType\n\n\t/* decls > var (+ other variable assignment codes) */\n\n\t// UntypedNilUse occurs when the predeclared (untyped) value nil is used to\n\t// initialize a variable declared without an explicit type.\n\t//\n\t// Example:\n\t//  var x = nil\n\tUntypedNilUse\n\n\t// WrongAssignCount occurs when the number of values on the right-hand side\n\t// of an assignment or initialization expression does not match the number\n\t// of variables on the left-hand side.\n\t//\n\t// Example:\n\t//  var x = 1, 2\n\tWrongAssignCount\n\n\t// UnassignableOperand occurs when the left-hand side of an assignment is\n\t// not assignable.\n\t//\n\t// Example:\n\t//  func f() {\n\t//  \tconst c = 1\n\t//  \tc = 2\n\t//  }\n\tUnassignableOperand\n\n\t// NoNewVar occurs when a short variable declaration (':=') does not declare\n\t// new variables.\n\t//\n\t// Example:\n\t//  func f() {\n\t//  \tx := 1\n\t//  \tx := 2\n\t//  }\n\tNoNewVar\n\n\t// MultiValAssignOp occurs when an assignment operation (+=, *=, etc) does\n\t// not have single-valued left-hand or right-hand side.\n\t//\n\t// Per the spec:\n\t//  \"In assignment operations, both the left- and right-hand expression lists\n\t//  must contain exactly one single-valued expression\"\n\t//\n\t// Example:\n\t//  func f() int {\n\t//  \tx, y := 1, 2\n\t//  \tx, y += 1\n\t//  \treturn x + y\n\t//  }\n\tMultiValAssignOp\n\n\t// InvalidIfaceAssign occurs when a value of type T is used as an\n\t// interface, but T does not implement a method of the expected interface.\n\t//\n\t// Example:\n\t//  type I interface {\n\t//  \tf()\n\t//  }\n\t//\n\t//  type T int\n\t//\n\t//  var x I = T(1)\n\tInvalidIfaceAssign\n\n\t// InvalidChanAssign occurs when a chan assignment is invalid.\n\t//\n\t// Per the spec, a value x is assignable to a channel type T if:\n\t//  \"x is a bidirectional channel value, T is a channel type, x's type V and\n\t//  T have identical element types, and at least one of V or T is not a\n\t//  defined type.\"\n\t//\n\t// Example:\n\t//  type T1 chan int\n\t//  type T2 chan int\n\t//\n\t//  var x T1\n\t//  // Invalid assignment because both types are named\n\t//  var _ T2 = x\n\tInvalidChanAssign\n\n\t// IncompatibleAssign occurs when the type of the right-hand side expression\n\t// in an assignment cannot be assigned to the type of the variable being\n\t// assigned.\n\t//\n\t// Example:\n\t//  var x []int\n\t//  var _ int = x\n\tIncompatibleAssign\n\n\t// UnaddressableFieldAssign occurs when trying to assign to a struct field\n\t// in a map value.\n\t//\n\t// Example:\n\t//  func f() {\n\t//  \tm := make(map[string]struct{i int})\n\t//  \tm[\"foo\"].i = 42\n\t//  }\n\tUnaddressableFieldAssign\n\n\t/* decls > type (+ other type expression codes) */\n\n\t// NotAType occurs when the identifier used as the underlying type in a type\n\t// declaration or the right-hand side of a type alias does not denote a type.\n\t//\n\t// Example:\n\t//  var S = 2\n\t//\n\t//  type T S\n\tNotAType\n\n\t// InvalidArrayLen occurs when an array length is not a constant value.\n\t//\n\t// Example:\n\t//  var n = 3\n\t//  var _ = [n]int{}\n\tInvalidArrayLen\n\n\t// BlankIfaceMethod occurs when a method name is '_'.\n\t//\n\t// Per the spec:\n\t//  \"The name of each explicitly specified method must be unique and not\n\t//  blank.\"\n\t//\n\t// Example:\n\t//  type T interface {\n\t//  \t_(int)\n\t//  }\n\tBlankIfaceMethod\n\n\t// IncomparableMapKey occurs when a map key type does not support the == and\n\t// != operators.\n\t//\n\t// Per the spec:\n\t//  \"The comparison operators == and != must be fully defined for operands of\n\t//  the key type; thus the key type must not be a function, map, or slice.\"\n\t//\n\t// Example:\n\t//  var x map[T]int\n\t//\n\t//  type T []int\n\tIncomparableMapKey\n\n\t// InvalidIfaceEmbed occurs when a non-interface type is embedded in an\n\t// interface.\n\t//\n\t// Example:\n\t//  type T struct {}\n\t//\n\t//  func (T) m()\n\t//\n\t//  type I interface {\n\t//  \tT\n\t//  }\n\tInvalidIfaceEmbed\n\n\t// InvalidPtrEmbed occurs when an embedded field is of the pointer form *T,\n\t// and T itself is itself a pointer, an unsafe.Pointer, or an interface.\n\t//\n\t// Per the spec:\n\t//  \"An embedded field must be specified as a type name T or as a pointer to\n\t//  a non-interface type name *T, and T itself may not be a pointer type.\"\n\t//\n\t// Example:\n\t//  type T *int\n\t//\n\t//  type S struct {\n\t//  \t*T\n\t//  }\n\tInvalidPtrEmbed\n\n\t/* decls > func and method */\n\n\t// BadRecv occurs when a method declaration does not have exactly one\n\t// receiver parameter.\n\t//\n\t// Example:\n\t//  func () _() {}\n\tBadRecv\n\n\t// InvalidRecv occurs when a receiver type expression is not of the form T\n\t// or *T, or T is a pointer type.\n\t//\n\t// Example:\n\t//  type T struct {}\n\t//\n\t//  func (**T) m() {}\n\tInvalidRecv\n\n\t// DuplicateFieldAndMethod occurs when an identifier appears as both a field\n\t// and method name.\n\t//\n\t// Example:\n\t//  type T struct {\n\t//  \tm int\n\t//  }\n\t//\n\t//  func (T) m() {}\n\tDuplicateFieldAndMethod\n\n\t// DuplicateMethod occurs when two methods on the same receiver type have\n\t// the same name.\n\t//\n\t// Example:\n\t//  type T struct {}\n\t//  func (T) m() {}\n\t//  func (T) m(i int) int { return i }\n\tDuplicateMethod\n\n\t/* decls > special */\n\n\t// InvalidBlank occurs when a blank identifier is used as a value or type.\n\t//\n\t// Per the spec:\n\t//  \"The blank identifier may appear as an operand only on the left-hand side\n\t//  of an assignment.\"\n\t//\n\t// Example:\n\t//  var x = _\n\tInvalidBlank\n\n\t// InvalidIota occurs when the predeclared identifier iota is used outside\n\t// of a constant declaration.\n\t//\n\t// Example:\n\t//  var x = iota\n\tInvalidIota\n\n\t// MissingInitBody occurs when an init function is missing its body.\n\t//\n\t// Example:\n\t//  func init()\n\tMissingInitBody\n\n\t// InvalidInitSig occurs when an init function declares parameters or\n\t// results.\n\t//\n\t// Example:\n\t//  func init() int { return 1 }\n\tInvalidInitSig\n\n\t// InvalidInitDecl occurs when init is declared as anything other than a\n\t// function.\n\t//\n\t// Example:\n\t//  var init = 1\n\tInvalidInitDecl\n\n\t// InvalidMainDecl occurs when main is declared as anything other than a\n\t// function, in a main package.\n\tInvalidMainDecl\n\n\t/* exprs */\n\n\t// TooManyValues occurs when a function returns too many values for the\n\t// expression context in which it is used.\n\t//\n\t// Example:\n\t//  func ReturnTwo() (int, int) {\n\t//  \treturn 1, 2\n\t//  }\n\t//\n\t//  var x = ReturnTwo()\n\tTooManyValues\n\n\t// NotAnExpr occurs when a type expression is used where a value expression\n\t// is expected.\n\t//\n\t// Example:\n\t//  type T struct {}\n\t//\n\t//  func f() {\n\t//  \tT\n\t//  }\n\tNotAnExpr\n\n\t/* exprs > const */\n\n\t// TruncatedFloat occurs when a float constant is truncated to an integer\n\t// value.\n\t//\n\t// Example:\n\t//  var _ int = 98.6\n\tTruncatedFloat\n\n\t// NumericOverflow occurs when a numeric constant overflows its target type.\n\t//\n\t// Example:\n\t//  var x int8 = 1000\n\tNumericOverflow\n\n\t/* exprs > operation */\n\n\t// UndefinedOp occurs when an operator is not defined for the type(s) used\n\t// in an operation.\n\t//\n\t// Example:\n\t//  var c = \"a\" - \"b\"\n\tUndefinedOp\n\n\t// MismatchedTypes occurs when operand types are incompatible in a binary\n\t// operation.\n\t//\n\t// Example:\n\t//  var a = \"hello\"\n\t//  var b = 1\n\t//  var c = a - b\n\tMismatchedTypes\n\n\t// DivByZero occurs when a division operation is provable at compile\n\t// time to be a division by zero.\n\t//\n\t// Example:\n\t//  const divisor = 0\n\t//  var x int = 1/divisor\n\tDivByZero\n\n\t// NonNumericIncDec occurs when an increment or decrement operator is\n\t// applied to a non-numeric value.\n\t//\n\t// Example:\n\t//  func f() {\n\t//  \tvar c = \"c\"\n\t//  \tc++\n\t//  }\n\tNonNumericIncDec\n\n\t/* exprs > ptr */\n\n\t// UnaddressableOperand occurs when the & operator is applied to an\n\t// unaddressable expression.\n\t//\n\t// Example:\n\t//  var x = &1\n\tUnaddressableOperand\n\n\t// InvalidIndirection occurs when a non-pointer value is indirected via the\n\t// '*' operator.\n\t//\n\t// Example:\n\t//  var x int\n\t//  var y = *x\n\tInvalidIndirection\n\n\t/* exprs > [] */\n\n\t// NonIndexableOperand occurs when an index operation is applied to a value\n\t// that cannot be indexed.\n\t//\n\t// Example:\n\t//  var x = 1\n\t//  var y = x[1]\n\tNonIndexableOperand\n\n\t// InvalidIndex occurs when an index argument is not of integer type,\n\t// negative, or out-of-bounds.\n\t//\n\t// Example:\n\t//  var s = [...]int{1,2,3}\n\t//  var x = s[5]\n\t//\n\t// Example:\n\t//  var s = []int{1,2,3}\n\t//  var _ = s[-1]\n\t//\n\t// Example:\n\t//  var s = []int{1,2,3}\n\t//  var i string\n\t//  var _ = s[i]\n\tInvalidIndex\n\n\t// SwappedSliceIndices occurs when constant indices in a slice expression\n\t// are decreasing in value.\n\t//\n\t// Example:\n\t//  var _ = []int{1,2,3}[2:1]\n\tSwappedSliceIndices\n\n\t/* operators > slice */\n\n\t// NonSliceableOperand occurs when a slice operation is applied to a value\n\t// whose type is not sliceable, or is unaddressable.\n\t//\n\t// Example:\n\t//  var x = [...]int{1, 2, 3}[:1]\n\t//\n\t// Example:\n\t//  var x = 1\n\t//  var y = 1[:1]\n\tNonSliceableOperand\n\n\t// InvalidSliceExpr occurs when a three-index slice expression (a[x:y:z]) is\n\t// applied to a string.\n\t//\n\t// Example:\n\t//  var s = \"hello\"\n\t//  var x = s[1:2:3]\n\tInvalidSliceExpr\n\n\t/* exprs > shift */\n\n\t// InvalidShiftCount occurs when the right-hand side of a shift operation is\n\t// either non-integer, negative, or too large.\n\t//\n\t// Example:\n\t//  var (\n\t//  \tx string\n\t//  \ty int = 1 << x\n\t//  )\n\tInvalidShiftCount\n\n\t// InvalidShiftOperand occurs when the shifted operand is not an integer.\n\t//\n\t// Example:\n\t//  var s = \"hello\"\n\t//  var x = s << 2\n\tInvalidShiftOperand\n\n\t/* exprs > chan */\n\n\t// InvalidReceive occurs when there is a channel receive from a value that\n\t// is either not a channel, or is a send-only channel.\n\t//\n\t// Example:\n\t//  func f() {\n\t//  \tvar x = 1\n\t//  \t<-x\n\t//  }\n\tInvalidReceive\n\n\t// InvalidSend occurs when there is a channel send to a value that is not a\n\t// channel, or is a receive-only channel.\n\t//\n\t// Example:\n\t//  func f() {\n\t//  \tvar x = 1\n\t//  \tx <- \"hello!\"\n\t//  }\n\tInvalidSend\n\n\t/* exprs > literal */\n\n\t// DuplicateLitKey occurs when an index is duplicated in a slice, array, or\n\t// map literal.\n\t//\n\t// Example:\n\t//  var _ = []int{0:1, 0:2}\n\t//\n\t// Example:\n\t//  var _ = map[string]int{\"a\": 1, \"a\": 2}\n\tDuplicateLitKey\n\n\t// MissingLitKey occurs when a map literal is missing a key expression.\n\t//\n\t// Example:\n\t//  var _ = map[string]int{1}\n\tMissingLitKey\n\n\t// InvalidLitIndex occurs when the key in a key-value element of a slice or\n\t// array literal is not an integer constant.\n\t//\n\t// Example:\n\t//  var i = 0\n\t//  var x = []string{i: \"world\"}\n\tInvalidLitIndex\n\n\t// OversizeArrayLit occurs when an array literal exceeds its length.\n\t//\n\t// Example:\n\t//  var _ = [2]int{1,2,3}\n\tOversizeArrayLit\n\n\t// MixedStructLit occurs when a struct literal contains a mix of positional\n\t// and named elements.\n\t//\n\t// Example:\n\t//  var _ = struct{i, j int}{i: 1, 2}\n\tMixedStructLit\n\n\t// InvalidStructLit occurs when a positional struct literal has an incorrect\n\t// number of values.\n\t//\n\t// Example:\n\t//  var _ = struct{i, j int}{1,2,3}\n\tInvalidStructLit\n\n\t// MissingLitField occurs when a struct literal refers to a field that does\n\t// not exist on the struct type.\n\t//\n\t// Example:\n\t//  var _ = struct{i int}{j: 2}\n\tMissingLitField\n\n\t// DuplicateLitField occurs when a struct literal contains duplicated\n\t// fields.\n\t//\n\t// Example:\n\t//  var _ = struct{i int}{i: 1, i: 2}\n\tDuplicateLitField\n\n\t// UnexportedLitField occurs when a positional struct literal implicitly\n\t// assigns an unexported field of an imported type.\n\tUnexportedLitField\n\n\t// InvalidLitField occurs when a field name is not a valid identifier.\n\t//\n\t// Example:\n\t//  var _ = struct{i int}{1: 1}\n\tInvalidLitField\n\n\t// UntypedLit occurs when a composite literal omits a required type\n\t// identifier.\n\t//\n\t// Example:\n\t//  type outer struct{\n\t//  \tinner struct { i int }\n\t//  }\n\t//\n\t//  var _ = outer{inner: {1}}\n\tUntypedLit\n\n\t// InvalidLit occurs when a composite literal expression does not match its\n\t// type.\n\t//\n\t// Example:\n\t//  type P *struct{\n\t//  \tx int\n\t//  }\n\t//  var _ = P {}\n\tInvalidLit\n\n\t/* exprs > selector */\n\n\t// AmbiguousSelector occurs when a selector is ambiguous.\n\t//\n\t// Example:\n\t//  type E1 struct { i int }\n\t//  type E2 struct { i int }\n\t//  type T struct { E1; E2 }\n\t//\n\t//  var x T\n\t//  var _ = x.i\n\tAmbiguousSelector\n\n\t// UndeclaredImportedName occurs when a package-qualified identifier is\n\t// undeclared by the imported package.\n\t//\n\t// Example:\n\t//  import \"go/types\"\n\t//\n\t//  var _ = types.NotAnActualIdentifier\n\tUndeclaredImportedName\n\n\t// UnexportedName occurs when a selector refers to an unexported identifier\n\t// of an imported package.\n\t//\n\t// Example:\n\t//  import \"reflect\"\n\t//\n\t//  type _ reflect.flag\n\tUnexportedName\n\n\t// UndeclaredName occurs when an identifier is not declared in the current\n\t// scope.\n\t//\n\t// Example:\n\t//  var x T\n\tUndeclaredName\n\n\t// MissingFieldOrMethod occurs when a selector references a field or method\n\t// that does not exist.\n\t//\n\t// Example:\n\t//  type T struct {}\n\t//\n\t//  var x = T{}.f\n\tMissingFieldOrMethod\n\n\t/* exprs > ... */\n\n\t// BadDotDotDotSyntax occurs when a \"...\" occurs in a context where it is\n\t// not valid.\n\t//\n\t// Example:\n\t//  var _ = map[int][...]int{0: {}}\n\tBadDotDotDotSyntax\n\n\t// NonVariadicDotDotDot occurs when a \"...\" is used on the final argument to\n\t// a non-variadic function.\n\t//\n\t// Example:\n\t//  func printArgs(s []string) {\n\t//  \tfor _, a := range s {\n\t//  \t\tprintln(a)\n\t//  \t}\n\t//  }\n\t//\n\t//  func f() {\n\t//  \ts := []string{\"a\", \"b\", \"c\"}\n\t//  \tprintArgs(s...)\n\t//  }\n\tNonVariadicDotDotDot\n\n\t// MisplacedDotDotDot occurs when a \"...\" is used somewhere other than the\n\t// final argument to a function call.\n\t//\n\t// Example:\n\t//  func printArgs(args ...int) {\n\t//  \tfor _, a := range args {\n\t//  \t\tprintln(a)\n\t//  \t}\n\t//  }\n\t//\n\t//  func f() {\n\t//  \ta := []int{1,2,3}\n\t//  \tprintArgs(0, a...)\n\t//  }\n\tMisplacedDotDotDot\n\n\t// InvalidDotDotDotOperand occurs when a \"...\" operator is applied to a\n\t// single-valued operand.\n\t//\n\t// Example:\n\t//  func printArgs(args ...int) {\n\t//  \tfor _, a := range args {\n\t//  \t\tprintln(a)\n\t//  \t}\n\t//  }\n\t//\n\t//  func f() {\n\t//  \ta := 1\n\t//  \tprintArgs(a...)\n\t//  }\n\t//\n\t// Example:\n\t//  func args() (int, int) {\n\t//  \treturn 1, 2\n\t//  }\n\t//\n\t//  func printArgs(args ...int) {\n\t//  \tfor _, a := range args {\n\t//  \t\tprintln(a)\n\t//  \t}\n\t//  }\n\t//\n\t//  func g() {\n\t//  \tprintArgs(args()...)\n\t//  }\n\tInvalidDotDotDotOperand\n\n\t// InvalidDotDotDot occurs when a \"...\" is used in a non-variadic built-in\n\t// function.\n\t//\n\t// Example:\n\t//  var s = []int{1, 2, 3}\n\t//  var l = len(s...)\n\tInvalidDotDotDot\n\n\t/* exprs > built-in */\n\n\t// UncalledBuiltin occurs when a built-in function is used as a\n\t// function-valued expression, instead of being called.\n\t//\n\t// Per the spec:\n\t//  \"The built-in functions do not have standard Go types, so they can only\n\t//  appear in call expressions; they cannot be used as function values.\"\n\t//\n\t// Example:\n\t//  var _ = copy\n\tUncalledBuiltin\n\n\t// InvalidAppend occurs when append is called with a first argument that is\n\t// not a slice.\n\t//\n\t// Example:\n\t//  var _ = append(1, 2)\n\tInvalidAppend\n\n\t// InvalidCap occurs when an argument to the cap built-in function is not of\n\t// supported type.\n\t//\n\t// See https://golang.org/ref/spec#Length_and_capacity for information on\n\t// which underlying types are supported as arguments to cap and len.\n\t//\n\t// Example:\n\t//  var s = 2\n\t//  var x = cap(s)\n\tInvalidCap\n\n\t// InvalidClose occurs when close(...) is called with an argument that is\n\t// not of channel type, or that is a receive-only channel.\n\t//\n\t// Example:\n\t//  func f() {\n\t//  \tvar x int\n\t//  \tclose(x)\n\t//  }\n\tInvalidClose\n\n\t// InvalidCopy occurs when the arguments are not of slice type or do not\n\t// have compatible type.\n\t//\n\t// See https://golang.org/ref/spec#Appending_and_copying_slices for more\n\t// information on the type requirements for the copy built-in.\n\t//\n\t// Example:\n\t//  func f() {\n\t//  \tvar x []int\n\t//  \ty := []int64{1,2,3}\n\t//  \tcopy(x, y)\n\t//  }\n\tInvalidCopy\n\n\t// InvalidComplex occurs when the complex built-in function is called with\n\t// arguments with incompatible types.\n\t//\n\t// Example:\n\t//  var _ = complex(float32(1), float64(2))\n\tInvalidComplex\n\n\t// InvalidDelete occurs when the delete built-in function is called with a\n\t// first argument that is not a map.\n\t//\n\t// Example:\n\t//  func f() {\n\t//  \tm := \"hello\"\n\t//  \tdelete(m, \"e\")\n\t//  }\n\tInvalidDelete\n\n\t// InvalidImag occurs when the imag built-in function is called with an\n\t// argument that does not have complex type.\n\t//\n\t// Example:\n\t//  var _ = imag(int(1))\n\tInvalidImag\n\n\t// InvalidLen occurs when an argument to the len built-in function is not of\n\t// supported type.\n\t//\n\t// See https://golang.org/ref/spec#Length_and_capacity for information on\n\t// which underlying types are supported as arguments to cap and len.\n\t//\n\t// Example:\n\t//  var s = 2\n\t//  var x = len(s)\n\tInvalidLen\n\n\t// SwappedMakeArgs occurs when make is called with three arguments, and its\n\t// length argument is larger than its capacity argument.\n\t//\n\t// Example:\n\t//  var x = make([]int, 3, 2)\n\tSwappedMakeArgs\n\n\t// InvalidMake occurs when make is called with an unsupported type argument.\n\t//\n\t// See https://golang.org/ref/spec#Making_slices_maps_and_channels for\n\t// information on the types that may be created using make.\n\t//\n\t// Example:\n\t//  var x = make(int)\n\tInvalidMake\n\n\t// InvalidReal occurs when the real built-in function is called with an\n\t// argument that does not have complex type.\n\t//\n\t// Example:\n\t//  var _ = real(int(1))\n\tInvalidReal\n\n\t/* exprs > assertion */\n\n\t// InvalidAssert occurs when a type assertion is applied to a\n\t// value that is not of interface type.\n\t//\n\t// Example:\n\t//  var x = 1\n\t//  var _ = x.(float64)\n\tInvalidAssert\n\n\t// ImpossibleAssert occurs for a type assertion x.(T) when the value x of\n\t// interface cannot have dynamic type T, due to a missing or mismatching\n\t// method on T.\n\t//\n\t// Example:\n\t//  type T int\n\t//\n\t//  func (t *T) m() int { return int(*t) }\n\t//\n\t//  type I interface { m() int }\n\t//\n\t//  var x I\n\t//  var _ = x.(T)\n\tImpossibleAssert\n\n\t/* exprs > conversion */\n\n\t// InvalidConversion occurs when the argument type cannot be converted to the\n\t// target.\n\t//\n\t// See https://golang.org/ref/spec#Conversions for the rules of\n\t// convertibility.\n\t//\n\t// Example:\n\t//  var x float64\n\t//  var _ = string(x)\n\tInvalidConversion\n\n\t// InvalidUntypedConversion occurs when there is no valid implicit\n\t// conversion from an untyped value satisfying the type constraints of the\n\t// context in which it is used.\n\t//\n\t// Example:\n\t//  var _ = 1 + \"\"\n\tInvalidUntypedConversion\n\n\t/* offsetof */\n\n\t// BadOffsetofSyntax occurs when unsafe.Offsetof is called with an argument\n\t// that is not a selector expression.\n\t//\n\t// Example:\n\t//  import \"unsafe\"\n\t//\n\t//  var x int\n\t//  var _ = unsafe.Offsetof(x)\n\tBadOffsetofSyntax\n\n\t// InvalidOffsetof occurs when unsafe.Offsetof is called with a method\n\t// selector, rather than a field selector, or when the field is embedded via\n\t// a pointer.\n\t//\n\t// Per the spec:\n\t//\n\t//  \"If f is an embedded field, it must be reachable without pointer\n\t//  indirections through fields of the struct. \"\n\t//\n\t// Example:\n\t//  import \"unsafe\"\n\t//\n\t//  type T struct { f int }\n\t//  type S struct { *T }\n\t//  var s S\n\t//  var _ = unsafe.Offsetof(s.f)\n\t//\n\t// Example:\n\t//  import \"unsafe\"\n\t//\n\t//  type S struct{}\n\t//\n\t//  func (S) m() {}\n\t//\n\t//  var s S\n\t//  var _ = unsafe.Offsetof(s.m)\n\tInvalidOffsetof\n\n\t/* control flow > scope */\n\n\t// UnusedExpr occurs when a side-effect free expression is used as a\n\t// statement. Such a statement has no effect.\n\t//\n\t// Example:\n\t//  func f(i int) {\n\t//  \ti*i\n\t//  }\n\tUnusedExpr\n\n\t// UnusedVar occurs when a variable is declared but unused.\n\t//\n\t// Example:\n\t//  func f() {\n\t//  \tx := 1\n\t//  }\n\tUnusedVar\n\n\t// MissingReturn occurs when a function with results is missing a return\n\t// statement.\n\t//\n\t// Example:\n\t//  func f() int {}\n\tMissingReturn\n\n\t// WrongResultCount occurs when a return statement returns an incorrect\n\t// number of values.\n\t//\n\t// Example:\n\t//  func ReturnOne() int {\n\t//  \treturn 1, 2\n\t//  }\n\tWrongResultCount\n\n\t// OutOfScopeResult occurs when the name of a value implicitly returned by\n\t// an empty return statement is shadowed in a nested scope.\n\t//\n\t// Example:\n\t//  func factor(n int) (i int) {\n\t//  \tfor i := 2; i < n; i++ {\n\t//  \t\tif n%i == 0 {\n\t//  \t\t\treturn\n\t//  \t\t}\n\t//  \t}\n\t//  \treturn 0\n\t//  }\n\tOutOfScopeResult\n\n\t/* control flow > if */\n\n\t// InvalidCond occurs when an if condition is not a boolean expression.\n\t//\n\t// Example:\n\t//  func checkReturn(i int) {\n\t//  \tif i {\n\t//  \t\tpanic(\"non-zero return\")\n\t//  \t}\n\t//  }\n\tInvalidCond\n\n\t/* control flow > for */\n\n\t// InvalidPostDecl occurs when there is a declaration in a for-loop post\n\t// statement.\n\t//\n\t// Example:\n\t//  func f() {\n\t//  \tfor i := 0; i < 10; j := 0 {}\n\t//  }\n\tInvalidPostDecl\n\n\t// InvalidChanRange occurs when a send-only channel used in a range\n\t// expression.\n\t//\n\t// Example:\n\t//  func sum(c chan<- int) {\n\t//  \ts := 0\n\t//  \tfor i := range c {\n\t//  \t\ts += i\n\t//  \t}\n\t//  }\n\tInvalidChanRange\n\n\t// InvalidIterVar occurs when two iteration variables are used while ranging\n\t// over a channel.\n\t//\n\t// Example:\n\t//  func f(c chan int) {\n\t//  \tfor k, v := range c {\n\t//  \t\tprintln(k, v)\n\t//  \t}\n\t//  }\n\tInvalidIterVar\n\n\t// InvalidRangeExpr occurs when the type of a range expression is not array,\n\t// slice, string, map, or channel.\n\t//\n\t// Example:\n\t//  func f(i int) {\n\t//  \tfor j := range i {\n\t//  \t\tprintln(j)\n\t//  \t}\n\t//  }\n\tInvalidRangeExpr\n\n\t/* control flow > switch */\n\n\t// MisplacedBreak occurs when a break statement is not within a for, switch,\n\t// or select statement of the innermost function definition.\n\t//\n\t// Example:\n\t//  func f() {\n\t//  \tbreak\n\t//  }\n\tMisplacedBreak\n\n\t// MisplacedContinue occurs when a continue statement is not within a for\n\t// loop of the innermost function definition.\n\t//\n\t// Example:\n\t//  func sumeven(n int) int {\n\t//  \tproceed := func() {\n\t//  \t\tcontinue\n\t//  \t}\n\t//  \tsum := 0\n\t//  \tfor i := 1; i <= n; i++ {\n\t//  \t\tif i % 2 != 0 {\n\t//  \t\t\tproceed()\n\t//  \t\t}\n\t//  \t\tsum += i\n\t//  \t}\n\t//  \treturn sum\n\t//  }\n\tMisplacedContinue\n\n\t// MisplacedFallthrough occurs when a fallthrough statement is not within an\n\t// expression switch.\n\t//\n\t// Example:\n\t//  func typename(i interface{}) string {\n\t//  \tswitch i.(type) {\n\t//  \tcase int64:\n\t//  \t\tfallthrough\n\t//  \tcase int:\n\t//  \t\treturn \"int\"\n\t//  \t}\n\t//  \treturn \"unsupported\"\n\t//  }\n\tMisplacedFallthrough\n\n\t// DuplicateCase occurs when a type or expression switch has duplicate\n\t// cases.\n\t//\n\t// Example:\n\t//  func printInt(i int) {\n\t//  \tswitch i {\n\t//  \tcase 1:\n\t//  \t\tprintln(\"one\")\n\t//  \tcase 1:\n\t//  \t\tprintln(\"One\")\n\t//  \t}\n\t//  }\n\tDuplicateCase\n\n\t// DuplicateDefault occurs when a type or expression switch has multiple\n\t// default clauses.\n\t//\n\t// Example:\n\t//  func printInt(i int) {\n\t//  \tswitch i {\n\t//  \tcase 1:\n\t//  \t\tprintln(\"one\")\n\t//  \tdefault:\n\t//  \t\tprintln(\"One\")\n\t//  \tdefault:\n\t//  \t\tprintln(\"1\")\n\t//  \t}\n\t//  }\n\tDuplicateDefault\n\n\t// BadTypeKeyword occurs when a .(type) expression is used anywhere other\n\t// than a type switch.\n\t//\n\t// Example:\n\t//  type I interface {\n\t//  \tm()\n\t//  }\n\t//  var t I\n\t//  var _ = t.(type)\n\tBadTypeKeyword\n\n\t// InvalidTypeSwitch occurs when .(type) is used on an expression that is\n\t// not of interface type.\n\t//\n\t// Example:\n\t//  func f(i int) {\n\t//  \tswitch x := i.(type) {}\n\t//  }\n\tInvalidTypeSwitch\n\n\t// InvalidExprSwitch occurs when a switch expression is not comparable.\n\t//\n\t// Example:\n\t//  func _() {\n\t//  \tvar a struct{ _ func() }\n\t//  \tswitch a /* ERROR cannot switch on a */ {\n\t//  \t}\n\t//  }\n\tInvalidExprSwitch\n\n\t/* control flow > select */\n\n\t// InvalidSelectCase occurs when a select case is not a channel send or\n\t// receive.\n\t//\n\t// Example:\n\t//  func checkChan(c <-chan int) bool {\n\t//  \tselect {\n\t//  \tcase c:\n\t//  \t\treturn true\n\t//  \tdefault:\n\t//  \t\treturn false\n\t//  \t}\n\t//  }\n\tInvalidSelectCase\n\n\t/* control flow > labels and jumps */\n\n\t// UndeclaredLabel occurs when an undeclared label is jumped to.\n\t//\n\t// Example:\n\t//  func f() {\n\t//  \tgoto L\n\t//  }\n\tUndeclaredLabel\n\n\t// DuplicateLabel occurs when a label is declared more than once.\n\t//\n\t// Example:\n\t//  func f() int {\n\t//  L:\n\t//  L:\n\t//  \treturn 1\n\t//  }\n\tDuplicateLabel\n\n\t// MisplacedLabel occurs when a break or continue label is not on a for,\n\t// switch, or select statement.\n\t//\n\t// Example:\n\t//  func f() {\n\t//  L:\n\t//  \ta := []int{1,2,3}\n\t//  \tfor _, e := range a {\n\t//  \t\tif e > 10 {\n\t//  \t\t\tbreak L\n\t//  \t\t}\n\t//  \t\tprintln(a)\n\t//  \t}\n\t//  }\n\tMisplacedLabel\n\n\t// UnusedLabel occurs when a label is declared but not used.\n\t//\n\t// Example:\n\t//  func f() {\n\t//  L:\n\t//  }\n\tUnusedLabel\n\n\t// JumpOverDecl occurs when a label jumps over a variable declaration.\n\t//\n\t// Example:\n\t//  func f() int {\n\t//  \tgoto L\n\t//  \tx := 2\n\t//  L:\n\t//  \tx++\n\t//  \treturn x\n\t//  }\n\tJumpOverDecl\n\n\t// JumpIntoBlock occurs when a forward jump goes to a label inside a nested\n\t// block.\n\t//\n\t// Example:\n\t//  func f(x int) {\n\t//  \tgoto L\n\t//  \tif x > 0 {\n\t//  \tL:\n\t//  \t\tprint(\"inside block\")\n\t//  \t}\n\t// }\n\tJumpIntoBlock\n\n\t/* control flow > calls */\n\n\t// InvalidMethodExpr occurs when a pointer method is called but the argument\n\t// is not addressable.\n\t//\n\t// Example:\n\t//  type T struct {}\n\t//\n\t//  func (*T) m() int { return 1 }\n\t//\n\t//  var _ = T.m(T{})\n\tInvalidMethodExpr\n\n\t// WrongArgCount occurs when too few or too many arguments are passed by a\n\t// function call.\n\t//\n\t// Example:\n\t//  func f(i int) {}\n\t//  var x = f()\n\tWrongArgCount\n\n\t// InvalidCall occurs when an expression is called that is not of function\n\t// type.\n\t//\n\t// Example:\n\t//  var x = \"x\"\n\t//  var y = x()\n\tInvalidCall\n\n\t/* control flow > suspended */\n\n\t// UnusedResults occurs when a restricted expression-only built-in function\n\t// is suspended via go or defer. Such a suspension discards the results of\n\t// these side-effect free built-in functions, and therefore is ineffectual.\n\t//\n\t// Example:\n\t//  func f(a []int) int {\n\t//  \tdefer len(a)\n\t//  \treturn i\n\t//  }\n\tUnusedResults\n\n\t// InvalidDefer occurs when a deferred expression is not a function call,\n\t// for example if the expression is a type conversion.\n\t//\n\t// Example:\n\t//  func f(i int) int {\n\t//  \tdefer int32(i)\n\t//  \treturn i\n\t//  }\n\tInvalidDefer\n\n\t// InvalidGo occurs when a go expression is not a function call, for example\n\t// if the expression is a type conversion.\n\t//\n\t// Example:\n\t//  func f(i int) int {\n\t//  \tgo int32(i)\n\t//  \treturn i\n\t//  }\n\tInvalidGo\n\n\t// All codes below were added in Go 1.17.\n\n\t/* decl */\n\n\t// BadDecl occurs when a declaration has invalid syntax.\n\tBadDecl\n\n\t// RepeatedDecl occurs when an identifier occurs more than once on the left\n\t// hand side of a short variable declaration.\n\t//\n\t// Example:\n\t//  func _() {\n\t//  \tx, y, y := 1, 2, 3\n\t//  }\n\tRepeatedDecl\n\n\t/* unsafe */\n\n\t// InvalidUnsafeAdd occurs when unsafe.Add is called with a\n\t// length argument that is not of integer type.\n\t//\n\t// Example:\n\t//  import \"unsafe\"\n\t//\n\t//  var p unsafe.Pointer\n\t//  var _ = unsafe.Add(p, float64(1))\n\tInvalidUnsafeAdd\n\n\t// InvalidUnsafeSlice occurs when unsafe.Slice is called with a\n\t// pointer argument that is not of pointer type or a length argument\n\t// that is not of integer type, negative, or out of bounds.\n\t//\n\t// Example:\n\t//  import \"unsafe\"\n\t//\n\t//  var x int\n\t//  var _ = unsafe.Slice(x, 1)\n\t//\n\t// Example:\n\t//  import \"unsafe\"\n\t//\n\t//  var x int\n\t//  var _ = unsafe.Slice(&x, float64(1))\n\t//\n\t// Example:\n\t//  import \"unsafe\"\n\t//\n\t//  var x int\n\t//  var _ = unsafe.Slice(&x, -1)\n\t//\n\t// Example:\n\t//  import \"unsafe\"\n\t//\n\t//  var x int\n\t//  var _ = unsafe.Slice(&x, uint64(1) << 63)\n\tInvalidUnsafeSlice\n\n\t// All codes below were added in Go 1.18.\n\n\t/* features */\n\n\t// UnsupportedFeature occurs when a language feature is used that is not\n\t// supported at this Go version.\n\tUnsupportedFeature\n\n\t/* type params */\n\n\t// NotAGenericType occurs when a non-generic type is used where a generic\n\t// type is expected: in type or function instantiation.\n\t//\n\t// Example:\n\t//  type T int\n\t//\n\t//  var _ T[int]\n\tNotAGenericType\n\n\t// WrongTypeArgCount occurs when a type or function is instantiated with an\n\t// incorrect number of type arguments, including when a generic type or\n\t// function is used without instantiation.\n\t//\n\t// Errors involving failed type inference are assigned other error codes.\n\t//\n\t// Example:\n\t//  type T[p any] int\n\t//\n\t//  var _ T[int, string]\n\t//\n\t// Example:\n\t//  func f[T any]() {}\n\t//\n\t//  var x = f\n\tWrongTypeArgCount\n\n\t// CannotInferTypeArgs occurs when type or function type argument inference\n\t// fails to infer all type arguments.\n\t//\n\t// Example:\n\t//  func f[T any]() {}\n\t//\n\t//  func _() {\n\t//  \tf()\n\t//  }\n\t//\n\t// Example:\n\t//   type N[P, Q any] struct{}\n\t//\n\t//   var _ N[int]\n\tCannotInferTypeArgs\n\n\t// InvalidTypeArg occurs when a type argument does not satisfy its\n\t// corresponding type parameter constraints.\n\t//\n\t// Example:\n\t//  type T[P ~int] struct{}\n\t//\n\t//  var _ T[string]\n\tInvalidTypeArg // arguments? InferenceFailed\n\n\t// InvalidInstanceCycle occurs when an invalid cycle is detected\n\t// within the instantiation graph.\n\t//\n\t// Example:\n\t//  func f[T any]() { f[*T]() }\n\tInvalidInstanceCycle\n\n\t// InvalidUnion occurs when an embedded union or approximation element is\n\t// not valid.\n\t//\n\t// Example:\n\t//  type _ interface {\n\t//   \t~int | interface{ m() }\n\t//  }\n\tInvalidUnion\n\n\t// MisplacedConstraintIface occurs when a constraint-type interface is used\n\t// outside of constraint position.\n\t//\n\t// Example:\n\t//   type I interface { ~int }\n\t//\n\t//   var _ I\n\tMisplacedConstraintIface\n\n\t// InvalidMethodTypeParams occurs when methods have type parameters.\n\t//\n\t// It cannot be encountered with an AST parsed using go/parser.\n\tInvalidMethodTypeParams\n\n\t// MisplacedTypeParam occurs when a type parameter is used in a place where\n\t// it is not permitted.\n\t//\n\t// Example:\n\t//  type T[P any] P\n\t//\n\t// Example:\n\t//  type T[P any] struct{ *P }\n\tMisplacedTypeParam\n\n\t// InvalidUnsafeSliceData occurs when unsafe.SliceData is called with\n\t// an argument that is not of slice type. It also occurs if it is used\n\t// in a package compiled for a language version before go1.20.\n\t//\n\t// Example:\n\t//  import \"unsafe\"\n\t//\n\t//  var x int\n\t//  var _ = unsafe.SliceData(x)\n\tInvalidUnsafeSliceData\n\n\t// InvalidUnsafeString occurs when unsafe.String is called with\n\t// a length argument that is not of integer type, negative, or\n\t// out of bounds. It also occurs if it is used in a package\n\t// compiled for a language version before go1.20.\n\t//\n\t// Example:\n\t//  import \"unsafe\"\n\t//\n\t//  var b [10]byte\n\t//  var _ = unsafe.String(&b[0], -1)\n\tInvalidUnsafeString\n\n\t// InvalidUnsafeStringData occurs if it is used in a package\n\t// compiled for a language version before go1.20.\n\t_ // not used anymore\n\n)\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/typesinternal/errorcode_string.go",
    "content": "// Code generated by \"stringer -type=ErrorCode\"; DO NOT EDIT.\n\npackage typesinternal\n\nimport \"strconv\"\n\nfunc _() {\n\t// An \"invalid array index\" compiler error signifies that the constant values have changed.\n\t// Re-run the stringer command to generate them again.\n\tvar x [1]struct{}\n\t_ = x[InvalidSyntaxTree - -1]\n\t_ = x[Test-1]\n\t_ = x[BlankPkgName-2]\n\t_ = x[MismatchedPkgName-3]\n\t_ = x[InvalidPkgUse-4]\n\t_ = x[BadImportPath-5]\n\t_ = x[BrokenImport-6]\n\t_ = x[ImportCRenamed-7]\n\t_ = x[UnusedImport-8]\n\t_ = x[InvalidInitCycle-9]\n\t_ = x[DuplicateDecl-10]\n\t_ = x[InvalidDeclCycle-11]\n\t_ = x[InvalidTypeCycle-12]\n\t_ = x[InvalidConstInit-13]\n\t_ = x[InvalidConstVal-14]\n\t_ = x[InvalidConstType-15]\n\t_ = x[UntypedNilUse-16]\n\t_ = x[WrongAssignCount-17]\n\t_ = x[UnassignableOperand-18]\n\t_ = x[NoNewVar-19]\n\t_ = x[MultiValAssignOp-20]\n\t_ = x[InvalidIfaceAssign-21]\n\t_ = x[InvalidChanAssign-22]\n\t_ = x[IncompatibleAssign-23]\n\t_ = x[UnaddressableFieldAssign-24]\n\t_ = x[NotAType-25]\n\t_ = x[InvalidArrayLen-26]\n\t_ = x[BlankIfaceMethod-27]\n\t_ = x[IncomparableMapKey-28]\n\t_ = x[InvalidIfaceEmbed-29]\n\t_ = x[InvalidPtrEmbed-30]\n\t_ = x[BadRecv-31]\n\t_ = x[InvalidRecv-32]\n\t_ = x[DuplicateFieldAndMethod-33]\n\t_ = x[DuplicateMethod-34]\n\t_ = x[InvalidBlank-35]\n\t_ = x[InvalidIota-36]\n\t_ = x[MissingInitBody-37]\n\t_ = x[InvalidInitSig-38]\n\t_ = x[InvalidInitDecl-39]\n\t_ = x[InvalidMainDecl-40]\n\t_ = x[TooManyValues-41]\n\t_ = x[NotAnExpr-42]\n\t_ = x[TruncatedFloat-43]\n\t_ = x[NumericOverflow-44]\n\t_ = x[UndefinedOp-45]\n\t_ = x[MismatchedTypes-46]\n\t_ = x[DivByZero-47]\n\t_ = x[NonNumericIncDec-48]\n\t_ = x[UnaddressableOperand-49]\n\t_ = x[InvalidIndirection-50]\n\t_ = x[NonIndexableOperand-51]\n\t_ = x[InvalidIndex-52]\n\t_ = x[SwappedSliceIndices-53]\n\t_ = x[NonSliceableOperand-54]\n\t_ = x[InvalidSliceExpr-55]\n\t_ = x[InvalidShiftCount-56]\n\t_ = x[InvalidShiftOperand-57]\n\t_ = x[InvalidReceive-58]\n\t_ = x[InvalidSend-59]\n\t_ = x[DuplicateLitKey-60]\n\t_ = x[MissingLitKey-61]\n\t_ = x[InvalidLitIndex-62]\n\t_ = x[OversizeArrayLit-63]\n\t_ = x[MixedStructLit-64]\n\t_ = x[InvalidStructLit-65]\n\t_ = x[MissingLitField-66]\n\t_ = x[DuplicateLitField-67]\n\t_ = x[UnexportedLitField-68]\n\t_ = x[InvalidLitField-69]\n\t_ = x[UntypedLit-70]\n\t_ = x[InvalidLit-71]\n\t_ = x[AmbiguousSelector-72]\n\t_ = x[UndeclaredImportedName-73]\n\t_ = x[UnexportedName-74]\n\t_ = x[UndeclaredName-75]\n\t_ = x[MissingFieldOrMethod-76]\n\t_ = x[BadDotDotDotSyntax-77]\n\t_ = x[NonVariadicDotDotDot-78]\n\t_ = x[MisplacedDotDotDot-79]\n\t_ = x[InvalidDotDotDotOperand-80]\n\t_ = x[InvalidDotDotDot-81]\n\t_ = x[UncalledBuiltin-82]\n\t_ = x[InvalidAppend-83]\n\t_ = x[InvalidCap-84]\n\t_ = x[InvalidClose-85]\n\t_ = x[InvalidCopy-86]\n\t_ = x[InvalidComplex-87]\n\t_ = x[InvalidDelete-88]\n\t_ = x[InvalidImag-89]\n\t_ = x[InvalidLen-90]\n\t_ = x[SwappedMakeArgs-91]\n\t_ = x[InvalidMake-92]\n\t_ = x[InvalidReal-93]\n\t_ = x[InvalidAssert-94]\n\t_ = x[ImpossibleAssert-95]\n\t_ = x[InvalidConversion-96]\n\t_ = x[InvalidUntypedConversion-97]\n\t_ = x[BadOffsetofSyntax-98]\n\t_ = x[InvalidOffsetof-99]\n\t_ = x[UnusedExpr-100]\n\t_ = x[UnusedVar-101]\n\t_ = x[MissingReturn-102]\n\t_ = x[WrongResultCount-103]\n\t_ = x[OutOfScopeResult-104]\n\t_ = x[InvalidCond-105]\n\t_ = x[InvalidPostDecl-106]\n\t_ = x[InvalidChanRange-107]\n\t_ = x[InvalidIterVar-108]\n\t_ = x[InvalidRangeExpr-109]\n\t_ = x[MisplacedBreak-110]\n\t_ = x[MisplacedContinue-111]\n\t_ = x[MisplacedFallthrough-112]\n\t_ = x[DuplicateCase-113]\n\t_ = x[DuplicateDefault-114]\n\t_ = x[BadTypeKeyword-115]\n\t_ = x[InvalidTypeSwitch-116]\n\t_ = x[InvalidExprSwitch-117]\n\t_ = x[InvalidSelectCase-118]\n\t_ = x[UndeclaredLabel-119]\n\t_ = x[DuplicateLabel-120]\n\t_ = x[MisplacedLabel-121]\n\t_ = x[UnusedLabel-122]\n\t_ = x[JumpOverDecl-123]\n\t_ = x[JumpIntoBlock-124]\n\t_ = x[InvalidMethodExpr-125]\n\t_ = x[WrongArgCount-126]\n\t_ = x[InvalidCall-127]\n\t_ = x[UnusedResults-128]\n\t_ = x[InvalidDefer-129]\n\t_ = x[InvalidGo-130]\n\t_ = x[BadDecl-131]\n\t_ = x[RepeatedDecl-132]\n\t_ = x[InvalidUnsafeAdd-133]\n\t_ = x[InvalidUnsafeSlice-134]\n\t_ = x[UnsupportedFeature-135]\n\t_ = x[NotAGenericType-136]\n\t_ = x[WrongTypeArgCount-137]\n\t_ = x[CannotInferTypeArgs-138]\n\t_ = x[InvalidTypeArg-139]\n\t_ = x[InvalidInstanceCycle-140]\n\t_ = x[InvalidUnion-141]\n\t_ = x[MisplacedConstraintIface-142]\n\t_ = x[InvalidMethodTypeParams-143]\n\t_ = x[MisplacedTypeParam-144]\n\t_ = x[InvalidUnsafeSliceData-145]\n\t_ = x[InvalidUnsafeString-146]\n}\n\nconst (\n\t_ErrorCode_name_0 = \"InvalidSyntaxTree\"\n\t_ErrorCode_name_1 = \"TestBlankPkgNameMismatchedPkgNameInvalidPkgUseBadImportPathBrokenImportImportCRenamedUnusedImportInvalidInitCycleDuplicateDeclInvalidDeclCycleInvalidTypeCycleInvalidConstInitInvalidConstValInvalidConstTypeUntypedNilUseWrongAssignCountUnassignableOperandNoNewVarMultiValAssignOpInvalidIfaceAssignInvalidChanAssignIncompatibleAssignUnaddressableFieldAssignNotATypeInvalidArrayLenBlankIfaceMethodIncomparableMapKeyInvalidIfaceEmbedInvalidPtrEmbedBadRecvInvalidRecvDuplicateFieldAndMethodDuplicateMethodInvalidBlankInvalidIotaMissingInitBodyInvalidInitSigInvalidInitDeclInvalidMainDeclTooManyValuesNotAnExprTruncatedFloatNumericOverflowUndefinedOpMismatchedTypesDivByZeroNonNumericIncDecUnaddressableOperandInvalidIndirectionNonIndexableOperandInvalidIndexSwappedSliceIndicesNonSliceableOperandInvalidSliceExprInvalidShiftCountInvalidShiftOperandInvalidReceiveInvalidSendDuplicateLitKeyMissingLitKeyInvalidLitIndexOversizeArrayLitMixedStructLitInvalidStructLitMissingLitFieldDuplicateLitFieldUnexportedLitFieldInvalidLitFieldUntypedLitInvalidLitAmbiguousSelectorUndeclaredImportedNameUnexportedNameUndeclaredNameMissingFieldOrMethodBadDotDotDotSyntaxNonVariadicDotDotDotMisplacedDotDotDotInvalidDotDotDotOperandInvalidDotDotDotUncalledBuiltinInvalidAppendInvalidCapInvalidCloseInvalidCopyInvalidComplexInvalidDeleteInvalidImagInvalidLenSwappedMakeArgsInvalidMakeInvalidRealInvalidAssertImpossibleAssertInvalidConversionInvalidUntypedConversionBadOffsetofSyntaxInvalidOffsetofUnusedExprUnusedVarMissingReturnWrongResultCountOutOfScopeResultInvalidCondInvalidPostDeclInvalidChanRangeInvalidIterVarInvalidRangeExprMisplacedBreakMisplacedContinueMisplacedFallthroughDuplicateCaseDuplicateDefaultBadTypeKeywordInvalidTypeSwitchInvalidExprSwitchInvalidSelectCaseUndeclaredLabelDuplicateLabelMisplacedLabelUnusedLabelJumpOverDeclJumpIntoBlockInvalidMethodExprWrongArgCountInvalidCallUnusedResultsInvalidDeferInvalidGoBadDeclRepeatedDeclInvalidUnsafeAddInvalidUnsafeSliceUnsupportedFeatureNotAGenericTypeWrongTypeArgCountCannotInferTypeArgsInvalidTypeArgInvalidInstanceCycleInvalidUnionMisplacedConstraintIfaceInvalidMethodTypeParamsMisplacedTypeParamInvalidUnsafeSliceDataInvalidUnsafeString\"\n)\n\nvar (\n\t_ErrorCode_index_1 = [...]uint16{0, 4, 16, 33, 46, 59, 71, 85, 97, 113, 126, 142, 158, 174, 189, 205, 218, 234, 253, 261, 277, 295, 312, 330, 354, 362, 377, 393, 411, 428, 443, 450, 461, 484, 499, 511, 522, 537, 551, 566, 581, 594, 603, 617, 632, 643, 658, 667, 683, 703, 721, 740, 752, 771, 790, 806, 823, 842, 856, 867, 882, 895, 910, 926, 940, 956, 971, 988, 1006, 1021, 1031, 1041, 1058, 1080, 1094, 1108, 1128, 1146, 1166, 1184, 1207, 1223, 1238, 1251, 1261, 1273, 1284, 1298, 1311, 1322, 1332, 1347, 1358, 1369, 1382, 1398, 1415, 1439, 1456, 1471, 1481, 1490, 1503, 1519, 1535, 1546, 1561, 1577, 1591, 1607, 1621, 1638, 1658, 1671, 1687, 1701, 1718, 1735, 1752, 1767, 1781, 1795, 1806, 1818, 1831, 1848, 1861, 1872, 1885, 1897, 1906, 1913, 1925, 1941, 1959, 1977, 1992, 2009, 2028, 2042, 2062, 2074, 2098, 2121, 2139, 2161, 2180}\n)\n\nfunc (i ErrorCode) String() string {\n\tswitch {\n\tcase i == -1:\n\t\treturn _ErrorCode_name_0\n\tcase 1 <= i && i <= 146:\n\t\ti -= 1\n\t\treturn _ErrorCode_name_1[_ErrorCode_index_1[i]:_ErrorCode_index_1[i+1]]\n\tdefault:\n\t\treturn \"ErrorCode(\" + strconv.FormatInt(int64(i), 10) + \")\"\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/typesinternal/fx.go",
    "content": "// Copyright 2025 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage typesinternal\n\nimport (\n\t\"go/ast\"\n\t\"go/token\"\n\t\"go/types\"\n)\n\n// NoEffects reports whether the expression has no side effects, i.e., it\n// does not modify the memory state. This function is conservative: it may\n// return false even when the expression has no effect.\nfunc NoEffects(info *types.Info, expr ast.Expr) bool {\n\tnoEffects := true\n\tast.Inspect(expr, func(n ast.Node) bool {\n\t\tswitch v := n.(type) {\n\t\tcase nil, *ast.Ident, *ast.BasicLit, *ast.BinaryExpr, *ast.ParenExpr,\n\t\t\t*ast.SelectorExpr, *ast.IndexExpr, *ast.SliceExpr, *ast.TypeAssertExpr,\n\t\t\t*ast.StarExpr, *ast.CompositeLit,\n\t\t\t// non-expressions that may appear within expressions\n\t\t\t*ast.KeyValueExpr,\n\t\t\t*ast.FieldList,\n\t\t\t*ast.Field,\n\t\t\t*ast.Ellipsis,\n\t\t\t*ast.IndexListExpr:\n\t\t\t// No effect.\n\n\t\tcase *ast.ArrayType,\n\t\t\t*ast.StructType,\n\t\t\t*ast.ChanType,\n\t\t\t*ast.FuncType,\n\t\t\t*ast.MapType,\n\t\t\t*ast.InterfaceType:\n\t\t\t// Type syntax: no effects, recursively.\n\t\t\t// Prune descent.\n\t\t\treturn false\n\n\t\tcase *ast.UnaryExpr:\n\t\t\t// Channel send <-ch has effects.\n\t\t\tif v.Op == token.ARROW {\n\t\t\t\tnoEffects = false\n\t\t\t}\n\n\t\tcase *ast.CallExpr:\n\t\t\t// Type conversion has no effects.\n\t\t\tif !info.Types[v.Fun].IsType() {\n\t\t\t\tif CallsPureBuiltin(info, v) {\n\t\t\t\t\t// A call such as len(e) has no effects of its\n\t\t\t\t\t// own, though the subexpression e might.\n\t\t\t\t} else {\n\t\t\t\t\tnoEffects = false\n\t\t\t\t}\n\t\t\t}\n\n\t\tcase *ast.FuncLit:\n\t\t\t// A FuncLit has no effects, but do not descend into it.\n\t\t\treturn false\n\n\t\tdefault:\n\t\t\t// All other expressions have effects\n\t\t\tnoEffects = false\n\t\t}\n\n\t\treturn noEffects\n\t})\n\treturn noEffects\n}\n\n// CallsPureBuiltin reports whether call is a call of a built-in\n// function that is a pure computation over its operands (analogous to\n// a + operator). Because it does not depend on program state, it may\n// be evaluated at any point--though not necessarily at multiple\n// points (consider new, make).\nfunc CallsPureBuiltin(info *types.Info, call *ast.CallExpr) bool {\n\tif id, ok := ast.Unparen(call.Fun).(*ast.Ident); ok {\n\t\tif b, ok := info.ObjectOf(id).(*types.Builtin); ok {\n\t\t\tswitch b.Name() {\n\t\t\tcase \"len\", \"cap\", \"complex\", \"imag\", \"real\", \"make\", \"new\", \"max\", \"min\":\n\t\t\t\treturn true\n\t\t\t}\n\t\t\t// Not: append clear close copy delete panic print println recover\n\t\t}\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/typesinternal/isnamed.go",
    "content": "// Copyright 2025 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage typesinternal\n\nimport (\n\t\"go/types\"\n\t\"slices\"\n)\n\n// IsTypeNamed reports whether t is (or is an alias for) a\n// package-level defined type with the given package path and one of\n// the given names. It returns false if t is nil.\n//\n// This function avoids allocating the concatenation of \"pkg.Name\",\n// which is important for the performance of syntax matching.\nfunc IsTypeNamed(t types.Type, pkgPath string, names ...string) bool {\n\tif named, ok := types.Unalias(t).(*types.Named); ok {\n\t\ttname := named.Obj()\n\t\treturn tname != nil &&\n\t\t\tIsPackageLevel(tname) &&\n\t\t\ttname.Pkg().Path() == pkgPath &&\n\t\t\tslices.Contains(names, tname.Name())\n\t}\n\treturn false\n}\n\n// IsPointerToNamed reports whether t is (or is an alias for) a pointer to a\n// package-level defined type with the given package path and one of the given\n// names. It returns false if t is not a pointer type.\nfunc IsPointerToNamed(t types.Type, pkgPath string, names ...string) bool {\n\tr := Unpointer(t)\n\tif r == t {\n\t\treturn false\n\t}\n\treturn IsTypeNamed(r, pkgPath, names...)\n}\n\n// IsFunctionNamed reports whether obj is a package-level function\n// defined in the given package and has one of the given names.\n// It returns false if obj is nil.\n//\n// This function avoids allocating the concatenation of \"pkg.Name\",\n// which is important for the performance of syntax matching.\nfunc IsFunctionNamed(obj types.Object, pkgPath string, names ...string) bool {\n\tf, ok := obj.(*types.Func)\n\treturn ok &&\n\t\tIsPackageLevel(obj) &&\n\t\tf.Pkg().Path() == pkgPath &&\n\t\tf.Signature().Recv() == nil &&\n\t\tslices.Contains(names, f.Name())\n}\n\n// IsMethodNamed reports whether obj is a method defined on a\n// package-level type with the given package and type name, and has\n// one of the given names. It returns false if obj is nil.\n//\n// This function avoids allocating the concatenation of \"pkg.TypeName.Name\",\n// which is important for the performance of syntax matching.\nfunc IsMethodNamed(obj types.Object, pkgPath string, typeName string, names ...string) bool {\n\tif fn, ok := obj.(*types.Func); ok {\n\t\tif recv := fn.Signature().Recv(); recv != nil {\n\t\t\t_, T := ReceiverNamed(recv)\n\t\t\treturn T != nil &&\n\t\t\t\tIsTypeNamed(T, pkgPath, typeName) &&\n\t\t\t\tslices.Contains(names, fn.Name())\n\t\t}\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/typesinternal/qualifier.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage typesinternal\n\nimport (\n\t\"go/ast\"\n\t\"go/types\"\n\t\"strconv\"\n)\n\n// FileQualifier returns a [types.Qualifier] function that qualifies\n// imported symbols appropriately based on the import environment of a given\n// file.\n// If the same package is imported multiple times, the last appearance is\n// recorded.\n//\n// TODO(adonovan): this function ignores the effect of shadowing. It\n// should accept a [token.Pos] and a [types.Info] and compute only the\n// set of imports that are not shadowed at that point, analogous to\n// [analysis.AddImport]. It could also compute (as a side\n// effect) the set of additional imports required to ensure that there\n// is an accessible import for each necessary package, making it\n// converge even more closely with AddImport.\nfunc FileQualifier(f *ast.File, pkg *types.Package) types.Qualifier {\n\t// Construct mapping of import paths to their defined names.\n\t// It is only necessary to look at renaming imports.\n\timports := make(map[string]string)\n\tfor _, imp := range f.Imports {\n\t\tif imp.Name != nil && imp.Name.Name != \"_\" {\n\t\t\tpath, _ := strconv.Unquote(imp.Path.Value)\n\t\t\timports[path] = imp.Name.Name\n\t\t}\n\t}\n\n\t// Define qualifier to replace full package paths with names of the imports.\n\treturn func(p *types.Package) string {\n\t\tif p == nil || p == pkg {\n\t\t\treturn \"\"\n\t\t}\n\n\t\tif name, ok := imports[p.Path()]; ok {\n\t\t\tif name == \".\" {\n\t\t\t\treturn \"\"\n\t\t\t} else {\n\t\t\t\treturn name\n\t\t\t}\n\t\t}\n\n\t\t// If there is no local renaming, fall back to the package name.\n\t\treturn p.Name()\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/typesinternal/recv.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage typesinternal\n\nimport (\n\t\"go/types\"\n)\n\n// ReceiverNamed returns the named type (if any) associated with the\n// type of recv, which may be of the form N or *N, or aliases thereof.\n// It also reports whether a Pointer was present.\n//\n// The named result may be nil if recv is from a method on an\n// anonymous interface or struct types or in ill-typed code.\nfunc ReceiverNamed(recv *types.Var) (isPtr bool, named *types.Named) {\n\tt := recv.Type()\n\tif ptr, ok := types.Unalias(t).(*types.Pointer); ok {\n\t\tisPtr = true\n\t\tt = ptr.Elem()\n\t}\n\tnamed, _ = types.Unalias(t).(*types.Named)\n\treturn\n}\n\n// Unpointer returns T given *T or an alias thereof.\n// For all other types it is the identity function.\n// It does not look at underlying types.\n// The result may be an alias.\n//\n// Use this function to strip off the optional pointer on a receiver\n// in a field or method selection, without losing the named type\n// (which is needed to compute the method set).\n//\n// See also [typeparams.MustDeref], which removes one level of\n// indirection from the type, regardless of named types (analogous to\n// a LOAD instruction).\nfunc Unpointer(t types.Type) types.Type {\n\tif ptr, ok := types.Unalias(t).(*types.Pointer); ok {\n\t\treturn ptr.Elem()\n\t}\n\treturn t\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/typesinternal/toonew.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage typesinternal\n\nimport (\n\t\"go/types\"\n\n\t\"golang.org/x/tools/internal/stdlib\"\n\t\"golang.org/x/tools/internal/versions\"\n)\n\n// TooNewStdSymbols computes the set of package-level symbols\n// exported by pkg that are not available at the specified version.\n// The result maps each symbol to its minimum version.\n//\n// The pkg is allowed to contain type errors.\nfunc TooNewStdSymbols(pkg *types.Package, version string) map[types.Object]string {\n\tdisallowed := make(map[types.Object]string)\n\n\t// Pass 1: package-level symbols.\n\tsymbols := stdlib.PackageSymbols[pkg.Path()]\n\tfor _, sym := range symbols {\n\t\tsymver := sym.Version.String()\n\t\tif versions.Before(version, symver) {\n\t\t\tswitch sym.Kind {\n\t\t\tcase stdlib.Func, stdlib.Var, stdlib.Const, stdlib.Type:\n\t\t\t\tdisallowed[pkg.Scope().Lookup(sym.Name)] = symver\n\t\t\t}\n\t\t}\n\t}\n\n\t// Pass 2: fields and methods.\n\t//\n\t// We allow fields and methods if their associated type is\n\t// disallowed, as otherwise we would report false positives\n\t// for compatibility shims. Consider:\n\t//\n\t//   //go:build go1.22\n\t//   type T struct { F std.Real } // correct new API\n\t//\n\t//   //go:build !go1.22\n\t//   type T struct { F fake } // shim\n\t//   type fake struct { ... }\n\t//   func (fake) M () {}\n\t//\n\t// These alternative declarations of T use either the std.Real\n\t// type, introduced in go1.22, or a fake type, for the field\n\t// F. (The fakery could be arbitrarily deep, involving more\n\t// nested fields and methods than are shown here.) Clients\n\t// that use the compatibility shim T will compile with any\n\t// version of go, whether older or newer than go1.22, but only\n\t// the newer version will use the std.Real implementation.\n\t//\n\t// Now consider a reference to method M in new(T).F.M() in a\n\t// module that requires a minimum of go1.21. The analysis may\n\t// occur using a version of Go higher than 1.21, selecting the\n\t// first version of T, so the method M is Real.M. This would\n\t// spuriously cause the analyzer to report a reference to a\n\t// too-new symbol even though this expression compiles just\n\t// fine (with the fake implementation) using go1.21.\n\tfor _, sym := range symbols {\n\t\tsymVersion := sym.Version.String()\n\t\tif !versions.Before(version, symVersion) {\n\t\t\tcontinue // allowed\n\t\t}\n\n\t\tvar obj types.Object\n\t\tswitch sym.Kind {\n\t\tcase stdlib.Field:\n\t\t\ttypename, name := sym.SplitField()\n\t\t\tif t := pkg.Scope().Lookup(typename); t != nil && disallowed[t] == \"\" {\n\t\t\t\tobj, _, _ = types.LookupFieldOrMethod(t.Type(), false, pkg, name)\n\t\t\t}\n\n\t\tcase stdlib.Method:\n\t\t\tptr, recvname, name := sym.SplitMethod()\n\t\t\tif t := pkg.Scope().Lookup(recvname); t != nil && disallowed[t] == \"\" {\n\t\t\t\tobj, _, _ = types.LookupFieldOrMethod(t.Type(), ptr, pkg, name)\n\t\t\t}\n\t\t}\n\t\tif obj != nil {\n\t\t\tdisallowed[obj] = symVersion\n\t\t}\n\t}\n\n\treturn disallowed\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/typesinternal/types.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package typesinternal provides helpful operators for dealing with\n// go/types:\n//\n//   - operators for querying typed syntax trees (e.g. [Imports], [IsFunctionNamed]);\n//   - functions for converting types to strings or syntax (e.g. [TypeExpr], FileQualifier]);\n//   - helpers for working with the [go/types] API (e.g. [NewTypesInfo]);\n//   - access to internal go/types APIs that are not yet\n//     exported (e.g. [SetUsesCgo], [ErrorCodeStartEnd], [VarKind]); and\n//   - common algorithms related to types (e.g. [TooNewStdSymbols]).\n//\n// See also:\n//   - [golang.org/x/tools/internal/astutil], for operations on untyped syntax;\n//   - [golang.org/x/tools/internal/analysisinernal], for helpers for analyzers;\n//   - [golang.org/x/tools/internal/refactor], for operators to compute text edits.\npackage typesinternal\n\nimport (\n\t\"go/ast\"\n\t\"go/token\"\n\t\"go/types\"\n\t\"reflect\"\n\n\t\"golang.org/x/tools/go/ast/inspector\"\n\t\"golang.org/x/tools/internal/aliases\"\n)\n\nfunc SetUsesCgo(conf *types.Config) bool {\n\tv := reflect.ValueOf(conf).Elem()\n\n\tf := v.FieldByName(\"go115UsesCgo\")\n\tif !f.IsValid() {\n\t\tf = v.FieldByName(\"UsesCgo\")\n\t\tif !f.IsValid() {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t*(*bool)(f.Addr().UnsafePointer()) = true\n\n\treturn true\n}\n\n// ErrorCodeStartEnd extracts additional information from types.Error values\n// generated by Go version 1.16 and later: the error code, start position, and\n// end position. If all positions are valid, start <= err.Pos <= end.\n//\n// If the data could not be read, the final result parameter will be false.\n//\n// TODO(adonovan): eliminate start/end when proposal #71803 is accepted.\nfunc ErrorCodeStartEnd(err types.Error) (code ErrorCode, start, end token.Pos, ok bool) {\n\tvar data [3]int\n\t// By coincidence all of these fields are ints, which simplifies things.\n\tv := reflect.ValueOf(err)\n\tfor i, name := range []string{\"go116code\", \"go116start\", \"go116end\"} {\n\t\tf := v.FieldByName(name)\n\t\tif !f.IsValid() {\n\t\t\treturn 0, 0, 0, false\n\t\t}\n\t\tdata[i] = int(f.Int())\n\t}\n\treturn ErrorCode(data[0]), token.Pos(data[1]), token.Pos(data[2]), true\n}\n\n// NameRelativeTo returns a types.Qualifier that qualifies members of\n// all packages other than pkg, using only the package name.\n// (By contrast, [types.RelativeTo] uses the complete package path,\n// which is often excessive.)\n//\n// If pkg is nil, it is equivalent to [*types.Package.Name].\n//\n// TODO(adonovan): all uses of this with TypeString should be\n// eliminated when https://go.dev/issues/75604 is resolved.\nfunc NameRelativeTo(pkg *types.Package) types.Qualifier {\n\treturn func(other *types.Package) string {\n\t\tif pkg != nil && pkg == other {\n\t\t\treturn \"\" // same package; unqualified\n\t\t}\n\t\treturn other.Name()\n\t}\n}\n\n// TypeNameFor returns the type name symbol for the specified type, if\n// it is a [*types.Alias], [*types.Named], [*types.TypeParam], or a\n// [*types.Basic] representing a type.\n//\n// For all other types, and for Basic types representing a builtin,\n// constant, or nil, it returns nil. Be careful not to convert the\n// resulting nil pointer to a [types.Object]!\n//\n// If t is the type of a constant, it may be an \"untyped\" type, which\n// has no TypeName. To access the name of such types (e.g. \"untyped\n// int\"), use [types.Basic.Name].\nfunc TypeNameFor(t types.Type) *types.TypeName {\n\tswitch t := t.(type) {\n\tcase *types.Alias:\n\t\treturn t.Obj()\n\tcase *types.Named:\n\t\treturn t.Obj()\n\tcase *types.TypeParam:\n\t\treturn t.Obj()\n\tcase *types.Basic:\n\t\t// See issues #71886 and #66890 for some history.\n\t\tif tname, ok := types.Universe.Lookup(t.Name()).(*types.TypeName); ok {\n\t\t\treturn tname\n\t\t}\n\t}\n\treturn nil\n}\n\n// A NamedOrAlias is a [types.Type] that is named (as\n// defined by the spec) and capable of bearing type parameters: it\n// abstracts aliases ([types.Alias]) and defined types\n// ([types.Named]).\n//\n// Every type declared by an explicit \"type\" declaration is a\n// NamedOrAlias. (Built-in type symbols may additionally\n// have type [types.Basic], which is not a NamedOrAlias,\n// though the spec regards them as \"named\"; see [TypeNameFor].)\n//\n// NamedOrAlias cannot expose the Origin method, because\n// [types.Alias.Origin] and [types.Named.Origin] have different\n// (covariant) result types; use [Origin] instead.\ntype NamedOrAlias interface {\n\ttypes.Type\n\tObj() *types.TypeName\n\tTypeArgs() *types.TypeList\n\tTypeParams() *types.TypeParamList\n\tSetTypeParams(tparams []*types.TypeParam)\n}\n\nvar (\n\t_ NamedOrAlias = (*types.Alias)(nil)\n\t_ NamedOrAlias = (*types.Named)(nil)\n)\n\n// Origin returns the generic type of the Named or Alias type t if it\n// is instantiated, otherwise it returns t.\nfunc Origin(t NamedOrAlias) NamedOrAlias {\n\tswitch t := t.(type) {\n\tcase *types.Alias:\n\t\treturn aliases.Origin(t)\n\tcase *types.Named:\n\t\treturn t.Origin()\n\t}\n\treturn t\n}\n\n// IsPackageLevel reports whether obj is a package-level symbol.\nfunc IsPackageLevel(obj types.Object) bool {\n\treturn obj.Pkg() != nil && obj.Parent() == obj.Pkg().Scope()\n}\n\n// NewTypesInfo returns a *types.Info with all maps populated.\nfunc NewTypesInfo() *types.Info {\n\treturn &types.Info{\n\t\tTypes:        map[ast.Expr]types.TypeAndValue{},\n\t\tInstances:    map[*ast.Ident]types.Instance{},\n\t\tDefs:         map[*ast.Ident]types.Object{},\n\t\tUses:         map[*ast.Ident]types.Object{},\n\t\tImplicits:    map[ast.Node]types.Object{},\n\t\tSelections:   map[*ast.SelectorExpr]*types.Selection{},\n\t\tScopes:       map[ast.Node]*types.Scope{},\n\t\tFileVersions: map[*ast.File]string{},\n\t}\n}\n\n// EnclosingScope returns the innermost block logically enclosing the cursor.\nfunc EnclosingScope(info *types.Info, cur inspector.Cursor) *types.Scope {\n\tfor cur := range cur.Enclosing() {\n\t\tn := cur.Node()\n\t\t// A function's Scope is associated with its FuncType.\n\t\tswitch f := n.(type) {\n\t\tcase *ast.FuncDecl:\n\t\t\tn = f.Type\n\t\tcase *ast.FuncLit:\n\t\t\tn = f.Type\n\t\t}\n\t\tif b := info.Scopes[n]; b != nil {\n\t\t\treturn b\n\t\t}\n\t}\n\tpanic(\"no Scope for *ast.File\")\n}\n\n// Imports reports whether path is imported by pkg.\nfunc Imports(pkg *types.Package, path string) bool {\n\tfor _, imp := range pkg.Imports() {\n\t\tif imp.Path() == path {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/typesinternal/varkind.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build go1.25\n\npackage typesinternal\n\nimport \"go/types\"\n\ntype VarKind = types.VarKind\n\nconst (\n\tPackageVar = types.PackageVar\n\tLocalVar   = types.LocalVar\n\tRecvVar    = types.RecvVar\n\tParamVar   = types.ParamVar\n\tResultVar  = types.ResultVar\n\tFieldVar   = types.FieldVar\n)\n\nfunc GetVarKind(v *types.Var) VarKind       { return v.Kind() }\nfunc SetVarKind(v *types.Var, kind VarKind) { v.SetKind(kind) }\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/typesinternal/varkind_go124.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build !go1.25\n\npackage typesinternal\n\nimport \"go/types\"\n\ntype VarKind uint8\n\nconst (\n\t_          VarKind = iota // (not meaningful)\n\tPackageVar                // a package-level variable\n\tLocalVar                  // a local variable\n\tRecvVar                   // a method receiver variable\n\tParamVar                  // a function parameter variable\n\tResultVar                 // a function result variable\n\tFieldVar                  // a struct field\n)\n\nfunc (kind VarKind) String() string {\n\treturn [...]string{\n\t\t0:          \"VarKind(0)\",\n\t\tPackageVar: \"PackageVar\",\n\t\tLocalVar:   \"LocalVar\",\n\t\tRecvVar:    \"RecvVar\",\n\t\tParamVar:   \"ParamVar\",\n\t\tResultVar:  \"ResultVar\",\n\t\tFieldVar:   \"FieldVar\",\n\t}[kind]\n}\n\n// GetVarKind returns an invalid VarKind.\nfunc GetVarKind(v *types.Var) VarKind { return 0 }\n\n// SetVarKind has no effect.\nfunc SetVarKind(v *types.Var, kind VarKind) {}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/typesinternal/zerovalue.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage typesinternal\n\nimport (\n\t\"fmt\"\n\t\"go/ast\"\n\t\"go/token\"\n\t\"go/types\"\n\t\"strings\"\n)\n\n// ZeroString returns the string representation of the zero value for any type t.\n// The boolean result indicates whether the type is or contains an invalid type\n// or a non-basic (constraint) interface type.\n//\n// Even for invalid input types, ZeroString may return a partially correct\n// string representation. The caller should use the returned isValid boolean\n// to determine the validity of the expression.\n//\n// When assigning to a wider type (such as 'any'), it's the caller's\n// responsibility to handle any necessary type conversions.\n//\n// This string can be used on the right-hand side of an assignment where the\n// left-hand side has that explicit type.\n// References to named types are qualified by an appropriate (optional)\n// qualifier function.\n// Exception: This does not apply to tuples. Their string representation is\n// informational only and cannot be used in an assignment.\n//\n// See [ZeroExpr] for a variant that returns an [ast.Expr].\nfunc ZeroString(t types.Type, qual types.Qualifier) (_ string, isValid bool) {\n\tswitch t := t.(type) {\n\tcase *types.Basic:\n\t\tswitch {\n\t\tcase t.Info()&types.IsBoolean != 0:\n\t\t\treturn \"false\", true\n\t\tcase t.Info()&types.IsNumeric != 0:\n\t\t\treturn \"0\", true\n\t\tcase t.Info()&types.IsString != 0:\n\t\t\treturn `\"\"`, true\n\t\tcase t.Kind() == types.UnsafePointer:\n\t\t\tfallthrough\n\t\tcase t.Kind() == types.UntypedNil:\n\t\t\treturn \"nil\", true\n\t\tcase t.Kind() == types.Invalid:\n\t\t\treturn \"invalid\", false\n\t\tdefault:\n\t\t\tpanic(fmt.Sprintf(\"ZeroString for unexpected type %v\", t))\n\t\t}\n\n\tcase *types.Pointer, *types.Slice, *types.Chan, *types.Map, *types.Signature:\n\t\treturn \"nil\", true\n\n\tcase *types.Interface:\n\t\tif !t.IsMethodSet() {\n\t\t\treturn \"invalid\", false\n\t\t}\n\t\treturn \"nil\", true\n\n\tcase *types.Named:\n\t\tswitch under := t.Underlying().(type) {\n\t\tcase *types.Struct, *types.Array:\n\t\t\treturn types.TypeString(t, qual) + \"{}\", true\n\t\tdefault:\n\t\t\treturn ZeroString(under, qual)\n\t\t}\n\n\tcase *types.Alias:\n\t\tswitch t.Underlying().(type) {\n\t\tcase *types.Struct, *types.Array:\n\t\t\treturn types.TypeString(t, qual) + \"{}\", true\n\t\tdefault:\n\t\t\t// A type parameter can have alias but alias type's underlying type\n\t\t\t// can never be a type parameter.\n\t\t\t// Use types.Unalias to preserve the info of type parameter instead\n\t\t\t// of call Underlying() going right through and get the underlying\n\t\t\t// type of the type parameter which is always an interface.\n\t\t\treturn ZeroString(types.Unalias(t), qual)\n\t\t}\n\n\tcase *types.Array, *types.Struct:\n\t\treturn types.TypeString(t, qual) + \"{}\", true\n\n\tcase *types.TypeParam:\n\t\t// Assumes func new is not shadowed.\n\t\treturn \"*new(\" + types.TypeString(t, qual) + \")\", true\n\n\tcase *types.Tuple:\n\t\t// Tuples are not normal values.\n\t\t// We are currently format as \"(t[0], ..., t[n])\". Could be something else.\n\t\tisValid := true\n\t\tcomponents := make([]string, t.Len())\n\t\tfor i := 0; i < t.Len(); i++ {\n\t\t\tcomp, ok := ZeroString(t.At(i).Type(), qual)\n\n\t\t\tcomponents[i] = comp\n\t\t\tisValid = isValid && ok\n\t\t}\n\t\treturn \"(\" + strings.Join(components, \", \") + \")\", isValid\n\n\tcase *types.Union:\n\t\t// Variables of these types cannot be created, so it makes\n\t\t// no sense to ask for their zero value.\n\t\tpanic(fmt.Sprintf(\"invalid type for a variable: %v\", t))\n\n\tdefault:\n\t\tpanic(t) // unreachable.\n\t}\n}\n\n// ZeroExpr returns the ast.Expr representation of the zero value for any type t.\n// The boolean result indicates whether the type is or contains an invalid type\n// or a non-basic (constraint) interface type.\n//\n// Even for invalid input types, ZeroExpr may return a partially correct ast.Expr\n// representation. The caller should use the returned isValid boolean to determine\n// the validity of the expression.\n//\n// This function is designed for types suitable for variables and should not be\n// used with Tuple or Union types.References to named types are qualified by an\n// appropriate (optional) qualifier function.\n//\n// See [ZeroString] for a variant that returns a string.\nfunc ZeroExpr(t types.Type, qual types.Qualifier) (_ ast.Expr, isValid bool) {\n\tswitch t := t.(type) {\n\tcase *types.Basic:\n\t\tswitch {\n\t\tcase t.Info()&types.IsBoolean != 0:\n\t\t\treturn &ast.Ident{Name: \"false\"}, true\n\t\tcase t.Info()&types.IsNumeric != 0:\n\t\t\treturn &ast.BasicLit{Kind: token.INT, Value: \"0\"}, true\n\t\tcase t.Info()&types.IsString != 0:\n\t\t\treturn &ast.BasicLit{Kind: token.STRING, Value: `\"\"`}, true\n\t\tcase t.Kind() == types.UnsafePointer:\n\t\t\tfallthrough\n\t\tcase t.Kind() == types.UntypedNil:\n\t\t\treturn ast.NewIdent(\"nil\"), true\n\t\tcase t.Kind() == types.Invalid:\n\t\t\treturn &ast.BasicLit{Kind: token.STRING, Value: `\"invalid\"`}, false\n\t\tdefault:\n\t\t\tpanic(fmt.Sprintf(\"ZeroExpr for unexpected type %v\", t))\n\t\t}\n\n\tcase *types.Pointer, *types.Slice, *types.Chan, *types.Map, *types.Signature:\n\t\treturn ast.NewIdent(\"nil\"), true\n\n\tcase *types.Interface:\n\t\tif !t.IsMethodSet() {\n\t\t\treturn &ast.BasicLit{Kind: token.STRING, Value: `\"invalid\"`}, false\n\t\t}\n\t\treturn ast.NewIdent(\"nil\"), true\n\n\tcase *types.Named:\n\t\tswitch under := t.Underlying().(type) {\n\t\tcase *types.Struct, *types.Array:\n\t\t\treturn &ast.CompositeLit{\n\t\t\t\tType: TypeExpr(t, qual),\n\t\t\t}, true\n\t\tdefault:\n\t\t\treturn ZeroExpr(under, qual)\n\t\t}\n\n\tcase *types.Alias:\n\t\tswitch t.Underlying().(type) {\n\t\tcase *types.Struct, *types.Array:\n\t\t\treturn &ast.CompositeLit{\n\t\t\t\tType: TypeExpr(t, qual),\n\t\t\t}, true\n\t\tdefault:\n\t\t\treturn ZeroExpr(types.Unalias(t), qual)\n\t\t}\n\n\tcase *types.Array, *types.Struct:\n\t\treturn &ast.CompositeLit{\n\t\t\tType: TypeExpr(t, qual),\n\t\t}, true\n\n\tcase *types.TypeParam:\n\t\treturn &ast.StarExpr{ // *new(T)\n\t\t\tX: &ast.CallExpr{\n\t\t\t\t// Assumes func new is not shadowed.\n\t\t\t\tFun: ast.NewIdent(\"new\"),\n\t\t\t\tArgs: []ast.Expr{\n\t\t\t\t\tast.NewIdent(t.Obj().Name()),\n\t\t\t\t},\n\t\t\t},\n\t\t}, true\n\n\tcase *types.Tuple:\n\t\t// Unlike ZeroString, there is no ast.Expr can express tuple by\n\t\t// \"(t[0], ..., t[n])\".\n\t\tpanic(fmt.Sprintf(\"invalid type for a variable: %v\", t))\n\n\tcase *types.Union:\n\t\t// Variables of these types cannot be created, so it makes\n\t\t// no sense to ask for their zero value.\n\t\tpanic(fmt.Sprintf(\"invalid type for a variable: %v\", t))\n\n\tdefault:\n\t\tpanic(t) // unreachable.\n\t}\n}\n\n// TypeExpr returns syntax for the specified type. References to named types\n// are qualified by an appropriate (optional) qualifier function.\n// It may panic for types such as Tuple or Union.\n//\n// See also https://go.dev/issues/75604, which will provide a robust\n// Type-to-valid-Go-syntax formatter.\nfunc TypeExpr(t types.Type, qual types.Qualifier) ast.Expr {\n\tswitch t := t.(type) {\n\tcase *types.Basic:\n\t\tswitch t.Kind() {\n\t\tcase types.UnsafePointer:\n\t\t\treturn &ast.SelectorExpr{X: ast.NewIdent(qual(types.NewPackage(\"unsafe\", \"unsafe\"))), Sel: ast.NewIdent(\"Pointer\")}\n\t\tdefault:\n\t\t\treturn ast.NewIdent(t.Name())\n\t\t}\n\n\tcase *types.Pointer:\n\t\treturn &ast.UnaryExpr{\n\t\t\tOp: token.MUL,\n\t\t\tX:  TypeExpr(t.Elem(), qual),\n\t\t}\n\n\tcase *types.Array:\n\t\treturn &ast.ArrayType{\n\t\t\tLen: &ast.BasicLit{\n\t\t\t\tKind:  token.INT,\n\t\t\t\tValue: fmt.Sprintf(\"%d\", t.Len()),\n\t\t\t},\n\t\t\tElt: TypeExpr(t.Elem(), qual),\n\t\t}\n\n\tcase *types.Slice:\n\t\treturn &ast.ArrayType{\n\t\t\tElt: TypeExpr(t.Elem(), qual),\n\t\t}\n\n\tcase *types.Map:\n\t\treturn &ast.MapType{\n\t\t\tKey:   TypeExpr(t.Key(), qual),\n\t\t\tValue: TypeExpr(t.Elem(), qual),\n\t\t}\n\n\tcase *types.Chan:\n\t\tdir := ast.ChanDir(t.Dir())\n\t\tif t.Dir() == types.SendRecv {\n\t\t\tdir = ast.SEND | ast.RECV\n\t\t}\n\t\treturn &ast.ChanType{\n\t\t\tDir:   dir,\n\t\t\tValue: TypeExpr(t.Elem(), qual),\n\t\t}\n\n\tcase *types.Signature:\n\t\tvar params []*ast.Field\n\t\tfor v := range t.Params().Variables() {\n\t\t\tparams = append(params, &ast.Field{\n\t\t\t\tType: TypeExpr(v.Type(), qual),\n\t\t\t\tNames: []*ast.Ident{\n\t\t\t\t\t{\n\t\t\t\t\t\tName: v.Name(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t})\n\t\t}\n\t\tif t.Variadic() {\n\t\t\tlast := params[len(params)-1]\n\t\t\tlast.Type = &ast.Ellipsis{Elt: last.Type.(*ast.ArrayType).Elt}\n\t\t}\n\t\tvar returns []*ast.Field\n\t\tfor v := range t.Results().Variables() {\n\t\t\treturns = append(returns, &ast.Field{\n\t\t\t\tType: TypeExpr(v.Type(), qual),\n\t\t\t})\n\t\t}\n\t\treturn &ast.FuncType{\n\t\t\tParams: &ast.FieldList{\n\t\t\t\tList: params,\n\t\t\t},\n\t\t\tResults: &ast.FieldList{\n\t\t\t\tList: returns,\n\t\t\t},\n\t\t}\n\n\tcase *types.TypeParam:\n\t\tpkgName := qual(t.Obj().Pkg())\n\t\tif pkgName == \"\" || t.Obj().Pkg() == nil {\n\t\t\treturn ast.NewIdent(t.Obj().Name())\n\t\t}\n\t\treturn &ast.SelectorExpr{\n\t\t\tX:   ast.NewIdent(pkgName),\n\t\t\tSel: ast.NewIdent(t.Obj().Name()),\n\t\t}\n\n\t// types.TypeParam also implements interface NamedOrAlias. To differentiate,\n\t// case TypeParam need to be present before case NamedOrAlias.\n\t// TODO(hxjiang): remove this comment once TypeArgs() is added to interface\n\t// NamedOrAlias.\n\tcase NamedOrAlias:\n\t\tvar expr ast.Expr = ast.NewIdent(t.Obj().Name())\n\t\tif pkgName := qual(t.Obj().Pkg()); pkgName != \".\" && pkgName != \"\" {\n\t\t\texpr = &ast.SelectorExpr{\n\t\t\t\tX:   ast.NewIdent(pkgName),\n\t\t\t\tSel: expr.(*ast.Ident),\n\t\t\t}\n\t\t}\n\n\t\t// TODO(hxjiang): call t.TypeArgs after adding method TypeArgs() to\n\t\t// typesinternal.NamedOrAlias.\n\t\tif hasTypeArgs, ok := t.(interface{ TypeArgs() *types.TypeList }); ok {\n\t\t\tif typeArgs := hasTypeArgs.TypeArgs(); typeArgs != nil && typeArgs.Len() > 0 {\n\t\t\t\tvar indices []ast.Expr\n\t\t\t\tfor t0 := range typeArgs.Types() {\n\t\t\t\t\tindices = append(indices, TypeExpr(t0, qual))\n\t\t\t\t}\n\t\t\t\texpr = &ast.IndexListExpr{\n\t\t\t\t\tX:       expr,\n\t\t\t\t\tIndices: indices,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn expr\n\n\tcase *types.Struct:\n\t\treturn ast.NewIdent(t.String())\n\n\tcase *types.Interface:\n\t\treturn ast.NewIdent(t.String())\n\n\tcase *types.Union:\n\t\tif t.Len() == 0 {\n\t\t\tpanic(\"Union type should have at least one term\")\n\t\t}\n\t\t// Same as go/ast, the return expression will put last term in the\n\t\t// Y field at topmost level of BinaryExpr.\n\t\t// For union of type \"float32 | float64 | int64\", the structure looks\n\t\t// similar to:\n\t\t// {\n\t\t// \tX: {\n\t\t// \t\tX: float32,\n\t\t// \t\tOp: |\n\t\t// \t\tY: float64,\n\t\t// \t}\n\t\t// \tOp: |,\n\t\t// \tY: int64,\n\t\t// }\n\t\tvar union ast.Expr\n\t\tfor i := range t.Len() {\n\t\t\tterm := t.Term(i)\n\t\t\ttermExpr := TypeExpr(term.Type(), qual)\n\t\t\tif term.Tilde() {\n\t\t\t\ttermExpr = &ast.UnaryExpr{\n\t\t\t\t\tOp: token.TILDE,\n\t\t\t\t\tX:  termExpr,\n\t\t\t\t}\n\t\t\t}\n\t\t\tif i == 0 {\n\t\t\t\tunion = termExpr\n\t\t\t} else {\n\t\t\t\tunion = &ast.BinaryExpr{\n\t\t\t\t\tX:  union,\n\t\t\t\t\tOp: token.OR,\n\t\t\t\t\tY:  termExpr,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn union\n\n\tcase *types.Tuple:\n\t\tpanic(\"invalid input type types.Tuple\")\n\n\tdefault:\n\t\tpanic(\"unreachable\")\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/versions/features.go",
    "content": "// Copyright 2023 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage versions\n\n// This file contains predicates for working with file versions to\n// decide when a tool should consider a language feature enabled.\n\n// named constants, to avoid misspelling\nconst (\n\tGo1_17 = \"go1.17\"\n\tGo1_18 = \"go1.18\"\n\tGo1_19 = \"go1.19\"\n\tGo1_20 = \"go1.20\"\n\tGo1_21 = \"go1.21\"\n\tGo1_22 = \"go1.22\"\n\tGo1_23 = \"go1.23\"\n\tGo1_24 = \"go1.24\"\n\tGo1_25 = \"go1.25\"\n\tGo1_26 = \"go1.26\"\n)\n\n// Future is an invalid unknown Go version sometime in the future.\n// Do not use directly with Compare.\nconst Future = \"\"\n\n// AtLeast reports whether the file version v comes after a Go release.\n//\n// Use this predicate to enable a behavior once a certain Go release\n// has happened (and stays enabled in the future).\nfunc AtLeast(v, release string) bool {\n\tif v == Future {\n\t\treturn true // an unknown future version is always after y.\n\t}\n\treturn Compare(Lang(v), Lang(release)) >= 0\n}\n\n// Before reports whether the file version v is strictly before a Go release.\n//\n// Use this predicate to disable a behavior once a certain Go release\n// has happened (and stays enabled in the future).\nfunc Before(v, release string) bool {\n\tif v == Future {\n\t\treturn false // an unknown future version happens after y.\n\t}\n\treturn Compare(Lang(v), Lang(release)) < 0\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/versions/gover.go",
    "content": "// Copyright 2023 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// This is a fork of internal/gover for use by x/tools until\n// go1.21 and earlier are no longer supported by x/tools.\n\npackage versions\n\nimport \"strings\"\n\n// A gover is a parsed Go gover: major[.Minor[.Patch]][kind[pre]]\n// The numbers are the original decimal strings to avoid integer overflows\n// and since there is very little actual math. (Probably overflow doesn't matter in practice,\n// but at the time this code was written, there was an existing test that used\n// go1.99999999999, which does not fit in an int on 32-bit platforms.\n// The \"big decimal\" representation avoids the problem entirely.)\ntype gover struct {\n\tmajor string // decimal\n\tminor string // decimal or \"\"\n\tpatch string // decimal or \"\"\n\tkind  string // \"\", \"alpha\", \"beta\", \"rc\"\n\tpre   string // decimal or \"\"\n}\n\n// compare returns -1, 0, or +1 depending on whether\n// x < y, x == y, or x > y, interpreted as toolchain versions.\n// The versions x and y must not begin with a \"go\" prefix: just \"1.21\" not \"go1.21\".\n// Malformed versions compare less than well-formed versions and equal to each other.\n// The language version \"1.21\" compares less than the release candidate and eventual releases \"1.21rc1\" and \"1.21.0\".\nfunc compare(x, y string) int {\n\tvx := parse(x)\n\tvy := parse(y)\n\n\tif c := cmpInt(vx.major, vy.major); c != 0 {\n\t\treturn c\n\t}\n\tif c := cmpInt(vx.minor, vy.minor); c != 0 {\n\t\treturn c\n\t}\n\tif c := cmpInt(vx.patch, vy.patch); c != 0 {\n\t\treturn c\n\t}\n\tif c := strings.Compare(vx.kind, vy.kind); c != 0 { // \"\" < alpha < beta < rc\n\t\treturn c\n\t}\n\tif c := cmpInt(vx.pre, vy.pre); c != 0 {\n\t\treturn c\n\t}\n\treturn 0\n}\n\n// lang returns the Go language version. For example, lang(\"1.2.3\") == \"1.2\".\nfunc lang(x string) string {\n\tv := parse(x)\n\tif v.minor == \"\" || v.major == \"1\" && v.minor == \"0\" {\n\t\treturn v.major\n\t}\n\treturn v.major + \".\" + v.minor\n}\n\n// isValid reports whether the version x is valid.\nfunc isValid(x string) bool {\n\treturn parse(x) != gover{}\n}\n\n// parse parses the Go version string x into a version.\n// It returns the zero version if x is malformed.\nfunc parse(x string) gover {\n\tvar v gover\n\n\t// Parse major version.\n\tvar ok bool\n\tv.major, x, ok = cutInt(x)\n\tif !ok {\n\t\treturn gover{}\n\t}\n\tif x == \"\" {\n\t\t// Interpret \"1\" as \"1.0.0\".\n\t\tv.minor = \"0\"\n\t\tv.patch = \"0\"\n\t\treturn v\n\t}\n\n\t// Parse . before minor version.\n\tif x[0] != '.' {\n\t\treturn gover{}\n\t}\n\n\t// Parse minor version.\n\tv.minor, x, ok = cutInt(x[1:])\n\tif !ok {\n\t\treturn gover{}\n\t}\n\tif x == \"\" {\n\t\t// Patch missing is same as \"0\" for older versions.\n\t\t// Starting in Go 1.21, patch missing is different from explicit .0.\n\t\tif cmpInt(v.minor, \"21\") < 0 {\n\t\t\tv.patch = \"0\"\n\t\t}\n\t\treturn v\n\t}\n\n\t// Parse patch if present.\n\tif x[0] == '.' {\n\t\tv.patch, x, ok = cutInt(x[1:])\n\t\tif !ok || x != \"\" {\n\t\t\t// Note that we are disallowing prereleases (alpha, beta, rc) for patch releases here (x != \"\").\n\t\t\t// Allowing them would be a bit confusing because we already have:\n\t\t\t//\t1.21 < 1.21rc1\n\t\t\t// But a prerelease of a patch would have the opposite effect:\n\t\t\t//\t1.21.3rc1 < 1.21.3\n\t\t\t// We've never needed them before, so let's not start now.\n\t\t\treturn gover{}\n\t\t}\n\t\treturn v\n\t}\n\n\t// Parse prerelease.\n\ti := 0\n\tfor i < len(x) && (x[i] < '0' || '9' < x[i]) {\n\t\tif x[i] < 'a' || 'z' < x[i] {\n\t\t\treturn gover{}\n\t\t}\n\t\ti++\n\t}\n\tif i == 0 {\n\t\treturn gover{}\n\t}\n\tv.kind, x = x[:i], x[i:]\n\tif x == \"\" {\n\t\treturn v\n\t}\n\tv.pre, x, ok = cutInt(x)\n\tif !ok || x != \"\" {\n\t\treturn gover{}\n\t}\n\n\treturn v\n}\n\n// cutInt scans the leading decimal number at the start of x to an integer\n// and returns that value and the rest of the string.\nfunc cutInt(x string) (n, rest string, ok bool) {\n\ti := 0\n\tfor i < len(x) && '0' <= x[i] && x[i] <= '9' {\n\t\ti++\n\t}\n\tif i == 0 || x[0] == '0' && i != 1 { // no digits or unnecessary leading zero\n\t\treturn \"\", \"\", false\n\t}\n\treturn x[:i], x[i:], true\n}\n\n// cmpInt returns cmp.Compare(x, y) interpreting x and y as decimal numbers.\n// (Copied from golang.org/x/mod/semver's compareInt.)\nfunc cmpInt(x, y string) int {\n\tif x == y {\n\t\treturn 0\n\t}\n\tif len(x) < len(y) {\n\t\treturn -1\n\t}\n\tif len(x) > len(y) {\n\t\treturn +1\n\t}\n\tif x < y {\n\t\treturn -1\n\t} else {\n\t\treturn +1\n\t}\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/versions/types.go",
    "content": "// Copyright 2023 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage versions\n\nimport (\n\t\"go/ast\"\n\t\"go/types\"\n)\n\n// FileVersion returns a file's Go version.\n// The reported version is an unknown Future version if a\n// version cannot be determined.\nfunc FileVersion(info *types.Info, file *ast.File) string {\n\t// In tools built with Go >= 1.22, the Go version of a file\n\t// follow a cascades of sources:\n\t// 1) types.Info.FileVersion, which follows the cascade:\n\t//   1.a) file version (ast.File.GoVersion),\n\t//   1.b) the package version (types.Config.GoVersion), or\n\t// 2) is some unknown Future version.\n\t//\n\t// File versions require a valid package version to be provided to types\n\t// in Config.GoVersion. Config.GoVersion is either from the package's module\n\t// or the toolchain (go run). This value should be provided by go/packages\n\t// or unitchecker.Config.GoVersion.\n\tif v := info.FileVersions[file]; IsValid(v) {\n\t\treturn v\n\t}\n\t// Note: we could instead return runtime.Version() [if valid].\n\t// This would act as a max version on what a tool can support.\n\treturn Future\n}\n"
  },
  {
    "path": "tests/vendor/golang.org/x/tools/internal/versions/versions.go",
    "content": "// Copyright 2023 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage versions\n\nimport (\n\t\"strings\"\n)\n\n// Note: If we use build tags to use go/versions when go >=1.22,\n// we run into go.dev/issue/53737. Under some operations users would see an\n// import of \"go/versions\" even if they would not compile the file.\n// For example, during `go get -u ./...` (go.dev/issue/64490) we do not try to include\n// For this reason, this library just a clone of go/versions for the moment.\n\n// Lang returns the Go language version for version x.\n// If x is not a valid version, Lang returns the empty string.\n// For example:\n//\n//\tLang(\"go1.21rc2\") = \"go1.21\"\n//\tLang(\"go1.21.2\") = \"go1.21\"\n//\tLang(\"go1.21\") = \"go1.21\"\n//\tLang(\"go1\") = \"go1\"\n//\tLang(\"bad\") = \"\"\n//\tLang(\"1.21\") = \"\"\nfunc Lang(x string) string {\n\tv := lang(stripGo(x))\n\tif v == \"\" {\n\t\treturn \"\"\n\t}\n\treturn x[:2+len(v)] // \"go\"+v without allocation\n}\n\n// Compare returns -1, 0, or +1 depending on whether\n// x < y, x == y, or x > y, interpreted as Go versions.\n// The versions x and y must begin with a \"go\" prefix: \"go1.21\" not \"1.21\".\n// Invalid versions, including the empty string, compare less than\n// valid versions and equal to each other.\n// The language version \"go1.21\" compares less than the\n// release candidate and eventual releases \"go1.21rc1\" and \"go1.21.0\".\n// Custom toolchain suffixes are ignored during comparison:\n// \"go1.21.0\" and \"go1.21.0-bigcorp\" are equal.\nfunc Compare(x, y string) int { return compare(stripGo(x), stripGo(y)) }\n\n// IsValid reports whether the version x is valid.\nfunc IsValid(x string) bool { return isValid(stripGo(x)) }\n\n// stripGo converts from a \"go1.21\" version to a \"1.21\" version.\n// If v does not start with \"go\", stripGo returns the empty string (a known invalid version).\nfunc stripGo(v string) string {\n\tv, _, _ = strings.Cut(v, \"-\") // strip -bigcorp suffix.\n\tif len(v) < 2 || v[:2] != \"go\" {\n\t\treturn \"\"\n\t}\n\treturn v[2:]\n}\n"
  },
  {
    "path": "tests/vendor/modules.txt",
    "content": "# github.com/Masterminds/semver/v3 v3.4.0\n## explicit; go 1.21\ngithub.com/Masterminds/semver/v3\n# github.com/go-logr/logr v1.4.3\n## explicit; go 1.18\ngithub.com/go-logr/logr\ngithub.com/go-logr/logr/funcr\n# github.com/go-task/slim-sprig/v3 v3.0.0\n## explicit; go 1.20\ngithub.com/go-task/slim-sprig/v3\n# github.com/google/go-cmp v0.7.0\n## explicit; go 1.21\ngithub.com/google/go-cmp/cmp\ngithub.com/google/go-cmp/cmp/internal/diff\ngithub.com/google/go-cmp/cmp/internal/flags\ngithub.com/google/go-cmp/cmp/internal/function\ngithub.com/google/go-cmp/cmp/internal/value\n# github.com/google/pprof v0.0.0-20260115054156-294ebfa9ad83\n## explicit; go 1.24.0\ngithub.com/google/pprof/profile\n# github.com/onsi/ginkgo/v2 v2.28.1\n## explicit; go 1.24.0\ngithub.com/onsi/ginkgo/v2\ngithub.com/onsi/ginkgo/v2/config\ngithub.com/onsi/ginkgo/v2/formatter\ngithub.com/onsi/ginkgo/v2/ginkgo\ngithub.com/onsi/ginkgo/v2/ginkgo/automaxprocs\ngithub.com/onsi/ginkgo/v2/ginkgo/build\ngithub.com/onsi/ginkgo/v2/ginkgo/command\ngithub.com/onsi/ginkgo/v2/ginkgo/generators\ngithub.com/onsi/ginkgo/v2/ginkgo/internal\ngithub.com/onsi/ginkgo/v2/ginkgo/labels\ngithub.com/onsi/ginkgo/v2/ginkgo/outline\ngithub.com/onsi/ginkgo/v2/ginkgo/run\ngithub.com/onsi/ginkgo/v2/ginkgo/unfocus\ngithub.com/onsi/ginkgo/v2/ginkgo/watch\ngithub.com/onsi/ginkgo/v2/internal\ngithub.com/onsi/ginkgo/v2/internal/global\ngithub.com/onsi/ginkgo/v2/internal/interrupt_handler\ngithub.com/onsi/ginkgo/v2/internal/parallel_support\ngithub.com/onsi/ginkgo/v2/internal/reporters\ngithub.com/onsi/ginkgo/v2/internal/testingtproxy\ngithub.com/onsi/ginkgo/v2/reporters\ngithub.com/onsi/ginkgo/v2/types\n# github.com/onsi/gomega v1.39.1\n## explicit; go 1.24.0\ngithub.com/onsi/gomega\ngithub.com/onsi/gomega/format\ngithub.com/onsi/gomega/internal\ngithub.com/onsi/gomega/internal/gutil\ngithub.com/onsi/gomega/matchers\ngithub.com/onsi/gomega/matchers/internal/miter\ngithub.com/onsi/gomega/matchers/support/goraph/bipartitegraph\ngithub.com/onsi/gomega/matchers/support/goraph/edge\ngithub.com/onsi/gomega/matchers/support/goraph/node\ngithub.com/onsi/gomega/matchers/support/goraph/util\ngithub.com/onsi/gomega/types\n# github.com/pelletier/go-toml v1.9.5\n## explicit; go 1.12\ngithub.com/pelletier/go-toml\n# go.yaml.in/yaml/v3 v3.0.4\n## explicit; go 1.16\ngo.yaml.in/yaml/v3\n# golang.org/x/crypto v0.48.0\n## explicit; go 1.24.0\ngolang.org/x/crypto/blowfish\ngolang.org/x/crypto/chacha20\ngolang.org/x/crypto/curve25519\ngolang.org/x/crypto/internal/alias\ngolang.org/x/crypto/internal/poly1305\ngolang.org/x/crypto/ssh\ngolang.org/x/crypto/ssh/internal/bcrypt_pbkdf\n# golang.org/x/mod v0.33.0\n## explicit; go 1.24.0\ngolang.org/x/mod/semver\n# golang.org/x/net v0.49.0\n## explicit; go 1.24.0\ngolang.org/x/net/html\ngolang.org/x/net/html/atom\ngolang.org/x/net/html/charset\n# golang.org/x/sync v0.19.0\n## explicit; go 1.24.0\ngolang.org/x/sync/errgroup\n# golang.org/x/sys v0.41.0\n## explicit; go 1.24.0\ngolang.org/x/sys/cpu\ngolang.org/x/sys/unix\ngolang.org/x/sys/windows\n# golang.org/x/text v0.34.0\n## explicit; go 1.24.0\ngolang.org/x/text/encoding\ngolang.org/x/text/encoding/charmap\ngolang.org/x/text/encoding/htmlindex\ngolang.org/x/text/encoding/internal\ngolang.org/x/text/encoding/internal/identifier\ngolang.org/x/text/encoding/japanese\ngolang.org/x/text/encoding/korean\ngolang.org/x/text/encoding/simplifiedchinese\ngolang.org/x/text/encoding/traditionalchinese\ngolang.org/x/text/encoding/unicode\ngolang.org/x/text/internal/language\ngolang.org/x/text/internal/language/compact\ngolang.org/x/text/internal/tag\ngolang.org/x/text/internal/utf8internal\ngolang.org/x/text/language\ngolang.org/x/text/runes\ngolang.org/x/text/transform\n# golang.org/x/tools v0.41.0\n## explicit; go 1.24.0\ngolang.org/x/tools/cover\ngolang.org/x/tools/go/ast/edge\ngolang.org/x/tools/go/ast/inspector\ngolang.org/x/tools/go/gcexportdata\ngolang.org/x/tools/go/packages\ngolang.org/x/tools/go/types/objectpath\ngolang.org/x/tools/go/types/typeutil\ngolang.org/x/tools/internal/aliases\ngolang.org/x/tools/internal/event\ngolang.org/x/tools/internal/event/core\ngolang.org/x/tools/internal/event/keys\ngolang.org/x/tools/internal/event/label\ngolang.org/x/tools/internal/gcimporter\ngolang.org/x/tools/internal/gocommand\ngolang.org/x/tools/internal/packagesinternal\ngolang.org/x/tools/internal/pkgbits\ngolang.org/x/tools/internal/stdlib\ngolang.org/x/tools/internal/typeparams\ngolang.org/x/tools/internal/typesinternal\ngolang.org/x/tools/internal/versions\n"
  },
  {
    "path": "vendor/cyphar.com/go-pathrs/.golangci.yml",
    "content": "# SPDX-License-Identifier: MPL-2.0\n#\n# libpathrs: safe path resolution on Linux\n# Copyright (C) 2019-2025 Aleksa Sarai <cyphar@cyphar.com>\n# Copyright (C) 2019-2025 SUSE LLC\n#\n# This Source Code Form is subject to the terms of the Mozilla Public\n# License, v. 2.0. If a copy of the MPL was not distributed with this\n# file, You can obtain one at https://mozilla.org/MPL/2.0/.\n\nversion: \"2\"\nlinters:\n  enable:\n    - bidichk\n    - cyclop\n    - errname\n    - errorlint\n    - exhaustive\n    - goconst\n    - godot\n    - gomoddirectives\n    - gosec\n    - mirror\n    - misspell\n    - mnd\n    - nilerr\n    - nilnil\n    - perfsprint\n    - prealloc\n    - reassign\n    - revive\n    - unconvert\n    - unparam\n    - usestdlibvars\n    - wastedassign\nformatters:\n  enable:\n    - gofumpt\n    - goimports\n  settings:\n    goimports:\n      local-prefixes:\n        - cyphar.com/go-pathrs\n"
  },
  {
    "path": "vendor/cyphar.com/go-pathrs/COPYING",
    "content": "Mozilla Public License Version 2.0\n==================================\n\n1. Definitions\n--------------\n\n1.1. \"Contributor\"\n    means each individual or legal entity that creates, contributes to\n    the creation of, or owns Covered Software.\n\n1.2. \"Contributor Version\"\n    means the combination of the Contributions of others (if any) used\n    by a Contributor and that particular Contributor's Contribution.\n\n1.3. \"Contribution\"\n    means Covered Software of a particular Contributor.\n\n1.4. \"Covered Software\"\n    means Source Code Form to which the initial Contributor has attached\n    the notice in Exhibit A, the Executable Form of such Source Code\n    Form, and Modifications of such Source Code Form, in each case\n    including portions thereof.\n\n1.5. \"Incompatible With Secondary Licenses\"\n    means\n\n    (a) that the initial Contributor has attached the notice described\n        in Exhibit B to the Covered Software; or\n\n    (b) that the Covered Software was made available under the terms of\n        version 1.1 or earlier of the License, but not also under the\n        terms of a Secondary License.\n\n1.6. \"Executable Form\"\n    means any form of the work other than Source Code Form.\n\n1.7. \"Larger Work\"\n    means a work that combines Covered Software with other material, in\n    a separate file or files, that is not Covered Software.\n\n1.8. \"License\"\n    means this document.\n\n1.9. \"Licensable\"\n    means having the right to grant, to the maximum extent possible,\n    whether at the time of the initial grant or subsequently, any and\n    all of the rights conveyed by this License.\n\n1.10. \"Modifications\"\n    means any of the following:\n\n    (a) any file in Source Code Form that results from an addition to,\n        deletion from, or modification of the contents of Covered\n        Software; or\n\n    (b) any new file in Source Code Form that contains any Covered\n        Software.\n\n1.11. \"Patent Claims\" of a Contributor\n    means any patent claim(s), including without limitation, method,\n    process, and apparatus claims, in any patent Licensable by such\n    Contributor that would be infringed, but for the grant of the\n    License, by the making, using, selling, offering for sale, having\n    made, import, or transfer of either its Contributions or its\n    Contributor Version.\n\n1.12. \"Secondary License\"\n    means either the GNU General Public License, Version 2.0, the GNU\n    Lesser General Public License, Version 2.1, the GNU Affero General\n    Public License, Version 3.0, or any later versions of those\n    licenses.\n\n1.13. \"Source Code Form\"\n    means the form of the work preferred for making modifications.\n\n1.14. \"You\" (or \"Your\")\n    means an individual or a legal entity exercising rights under this\n    License. For legal entities, \"You\" includes any entity that\n    controls, is controlled by, or is under common control with You. For\n    purposes of this definition, \"control\" means (a) the power, direct\n    or indirect, to cause the direction or management of such entity,\n    whether by contract or otherwise, or (b) ownership of more than\n    fifty percent (50%) of the outstanding shares or beneficial\n    ownership of such entity.\n\n2. License Grants and Conditions\n--------------------------------\n\n2.1. Grants\n\nEach Contributor hereby grants You a world-wide, royalty-free,\nnon-exclusive license:\n\n(a) under intellectual property rights (other than patent or trademark)\n    Licensable by such Contributor to use, reproduce, make available,\n    modify, display, perform, distribute, and otherwise exploit its\n    Contributions, either on an unmodified basis, with Modifications, or\n    as part of a Larger Work; and\n\n(b) under Patent Claims of such Contributor to make, use, sell, offer\n    for sale, have made, import, and otherwise transfer either its\n    Contributions or its Contributor Version.\n\n2.2. Effective Date\n\nThe licenses granted in Section 2.1 with respect to any Contribution\nbecome effective for each Contribution on the date the Contributor first\ndistributes such Contribution.\n\n2.3. Limitations on Grant Scope\n\nThe licenses granted in this Section 2 are the only rights granted under\nthis License. No additional rights or licenses will be implied from the\ndistribution or licensing of Covered Software under this License.\nNotwithstanding Section 2.1(b) above, no patent license is granted by a\nContributor:\n\n(a) for any code that a Contributor has removed from Covered Software;\n    or\n\n(b) for infringements caused by: (i) Your and any other third party's\n    modifications of Covered Software, or (ii) the combination of its\n    Contributions with other software (except as part of its Contributor\n    Version); or\n\n(c) under Patent Claims infringed by Covered Software in the absence of\n    its Contributions.\n\nThis License does not grant any rights in the trademarks, service marks,\nor logos of any Contributor (except as may be necessary to comply with\nthe notice requirements in Section 3.4).\n\n2.4. Subsequent Licenses\n\nNo Contributor makes additional grants as a result of Your choice to\ndistribute the Covered Software under a subsequent version of this\nLicense (see Section 10.2) or under the terms of a Secondary License (if\npermitted under the terms of Section 3.3).\n\n2.5. Representation\n\nEach Contributor represents that the Contributor believes its\nContributions are its original creation(s) or it has sufficient rights\nto grant the rights to its Contributions conveyed by this License.\n\n2.6. Fair Use\n\nThis License is not intended to limit any rights You have under\napplicable copyright doctrines of fair use, fair dealing, or other\nequivalents.\n\n2.7. Conditions\n\nSections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted\nin Section 2.1.\n\n3. Responsibilities\n-------------------\n\n3.1. Distribution of Source Form\n\nAll distribution of Covered Software in Source Code Form, including any\nModifications that You create or to which You contribute, must be under\nthe terms of this License. You must inform recipients that the Source\nCode Form of the Covered Software is governed by the terms of this\nLicense, and how they can obtain a copy of this License. You may not\nattempt to alter or restrict the recipients' rights in the Source Code\nForm.\n\n3.2. Distribution of Executable Form\n\nIf You distribute Covered Software in Executable Form then:\n\n(a) such Covered Software must also be made available in Source Code\n    Form, as described in Section 3.1, and You must inform recipients of\n    the Executable Form how they can obtain a copy of such Source Code\n    Form by reasonable means in a timely manner, at a charge no more\n    than the cost of distribution to the recipient; and\n\n(b) You may distribute such Executable Form under the terms of this\n    License, or sublicense it under different terms, provided that the\n    license for the Executable Form does not attempt to limit or alter\n    the recipients' rights in the Source Code Form under this License.\n\n3.3. Distribution of a Larger Work\n\nYou may create and distribute a Larger Work under terms of Your choice,\nprovided that You also comply with the requirements of this License for\nthe Covered Software. If the Larger Work is a combination of Covered\nSoftware with a work governed by one or more Secondary Licenses, and the\nCovered Software is not Incompatible With Secondary Licenses, this\nLicense permits You to additionally distribute such Covered Software\nunder the terms of such Secondary License(s), so that the recipient of\nthe Larger Work may, at their option, further distribute the Covered\nSoftware under the terms of either this License or such Secondary\nLicense(s).\n\n3.4. Notices\n\nYou may not remove or alter the substance of any license notices\n(including copyright notices, patent notices, disclaimers of warranty,\nor limitations of liability) contained within the Source Code Form of\nthe Covered Software, except that You may alter any license notices to\nthe extent required to remedy known factual inaccuracies.\n\n3.5. Application of Additional Terms\n\nYou may choose to offer, and to charge a fee for, warranty, support,\nindemnity or liability obligations to one or more recipients of Covered\nSoftware. However, You may do so only on Your own behalf, and not on\nbehalf of any Contributor. You must make it absolutely clear that any\nsuch warranty, support, indemnity, or liability obligation is offered by\nYou alone, and You hereby agree to indemnify every Contributor for any\nliability incurred by such Contributor as a result of warranty, support,\nindemnity or liability terms You offer. You may include additional\ndisclaimers of warranty and limitations of liability specific to any\njurisdiction.\n\n4. Inability to Comply Due to Statute or Regulation\n---------------------------------------------------\n\nIf it is impossible for You to comply with any of the terms of this\nLicense with respect to some or all of the Covered Software due to\nstatute, judicial order, or regulation then You must: (a) comply with\nthe terms of this License to the maximum extent possible; and (b)\ndescribe the limitations and the code they affect. Such description must\nbe placed in a text file included with all distributions of the Covered\nSoftware under this License. Except to the extent prohibited by statute\nor regulation, such description must be sufficiently detailed for a\nrecipient of ordinary skill to be able to understand it.\n\n5. Termination\n--------------\n\n5.1. The rights granted under this License will terminate automatically\nif You fail to comply with any of its terms. However, if You become\ncompliant, then the rights granted under this License from a particular\nContributor are reinstated (a) provisionally, unless and until such\nContributor explicitly and finally terminates Your grants, and (b) on an\nongoing basis, if such Contributor fails to notify You of the\nnon-compliance by some reasonable means prior to 60 days after You have\ncome back into compliance. Moreover, Your grants from a particular\nContributor are reinstated on an ongoing basis if such Contributor\nnotifies You of the non-compliance by some reasonable means, this is the\nfirst time You have received notice of non-compliance with this License\nfrom such Contributor, and You become compliant prior to 30 days after\nYour receipt of the notice.\n\n5.2. If You initiate litigation against any entity by asserting a patent\ninfringement claim (excluding declaratory judgment actions,\ncounter-claims, and cross-claims) alleging that a Contributor Version\ndirectly or indirectly infringes any patent, then the rights granted to\nYou by any and all Contributors for the Covered Software under Section\n2.1 of this License shall terminate.\n\n5.3. In the event of termination under Sections 5.1 or 5.2 above, all\nend user license agreements (excluding distributors and resellers) which\nhave been validly granted by You or Your distributors under this License\nprior to termination shall survive termination.\n\n************************************************************************\n*                                                                      *\n*  6. Disclaimer of Warranty                                           *\n*  -------------------------                                           *\n*                                                                      *\n*  Covered Software is provided under this License on an \"as is\"       *\n*  basis, without warranty of any kind, either expressed, implied, or  *\n*  statutory, including, without limitation, warranties that the       *\n*  Covered Software is free of defects, merchantable, fit for a        *\n*  particular purpose or non-infringing. The entire risk as to the     *\n*  quality and performance of the Covered Software is with You.        *\n*  Should any Covered Software prove defective in any respect, You     *\n*  (not any Contributor) assume the cost of any necessary servicing,   *\n*  repair, or correction. This disclaimer of warranty constitutes an   *\n*  essential part of this License. No use of any Covered Software is   *\n*  authorized under this License except under this disclaimer.         *\n*                                                                      *\n************************************************************************\n\n************************************************************************\n*                                                                      *\n*  7. Limitation of Liability                                          *\n*  --------------------------                                          *\n*                                                                      *\n*  Under no circumstances and under no legal theory, whether tort      *\n*  (including negligence), contract, or otherwise, shall any           *\n*  Contributor, or anyone who distributes Covered Software as          *\n*  permitted above, be liable to You for any direct, indirect,         *\n*  special, incidental, or consequential damages of any character      *\n*  including, without limitation, damages for lost profits, loss of    *\n*  goodwill, work stoppage, computer failure or malfunction, or any    *\n*  and all other commercial damages or losses, even if such party      *\n*  shall have been informed of the possibility of such damages. This   *\n*  limitation of liability shall not apply to liability for death or   *\n*  personal injury resulting from such party's negligence to the       *\n*  extent applicable law prohibits such limitation. Some               *\n*  jurisdictions do not allow the exclusion or limitation of           *\n*  incidental or consequential damages, so this exclusion and          *\n*  limitation may not apply to You.                                    *\n*                                                                      *\n************************************************************************\n\n8. Litigation\n-------------\n\nAny litigation relating to this License may be brought only in the\ncourts of a jurisdiction where the defendant maintains its principal\nplace of business and such litigation shall be governed by laws of that\njurisdiction, without reference to its conflict-of-law provisions.\nNothing in this Section shall prevent a party's ability to bring\ncross-claims or counter-claims.\n\n9. Miscellaneous\n----------------\n\nThis License represents the complete agreement concerning the subject\nmatter hereof. If any provision of this License is held to be\nunenforceable, such provision shall be reformed only to the extent\nnecessary to make it enforceable. Any law or regulation which provides\nthat the language of a contract shall be construed against the drafter\nshall not be used to construe this License against a Contributor.\n\n10. Versions of the License\n---------------------------\n\n10.1. New Versions\n\nMozilla Foundation is the license steward. Except as provided in Section\n10.3, no one other than the license steward has the right to modify or\npublish new versions of this License. Each version will be given a\ndistinguishing version number.\n\n10.2. Effect of New Versions\n\nYou may distribute the Covered Software under the terms of the version\nof the License under which You originally received the Covered Software,\nor under the terms of any subsequent version published by the license\nsteward.\n\n10.3. Modified Versions\n\nIf you create software not governed by this License, and you want to\ncreate a new license for such software, you may create and use a\nmodified version of this License if you rename the license and remove\nany references to the name of the license steward (except to note that\nsuch modified license differs from this License).\n\n10.4. Distributing Source Code Form that is Incompatible With Secondary\nLicenses\n\nIf You choose to distribute Source Code Form that is Incompatible With\nSecondary Licenses under the terms of this version of the License, the\nnotice described in Exhibit B of this License must be attached.\n\nExhibit A - Source Code Form License Notice\n-------------------------------------------\n\n  This Source Code Form is subject to the terms of the Mozilla Public\n  License, v. 2.0. If a copy of the MPL was not distributed with this\n  file, You can obtain one at https://mozilla.org/MPL/2.0/.\n\nIf it is not possible or desirable to put the notice in a particular\nfile, then You may include the notice in a location (such as a LICENSE\nfile in a relevant directory) where a recipient would be likely to look\nfor such a notice.\n\nYou may add additional accurate notices of copyright ownership.\n\nExhibit B - \"Incompatible With Secondary Licenses\" Notice\n---------------------------------------------------------\n\n  This Source Code Form is \"Incompatible With Secondary Licenses\", as\n  defined by the Mozilla Public License, v. 2.0.\n"
  },
  {
    "path": "vendor/cyphar.com/go-pathrs/doc.go",
    "content": "// SPDX-License-Identifier: MPL-2.0\n/*\n * libpathrs: safe path resolution on Linux\n * Copyright (C) 2019-2025 Aleksa Sarai <cyphar@cyphar.com>\n * Copyright (C) 2019-2025 SUSE LLC\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\n\n// Package pathrs provides bindings for libpathrs, a library for safe path\n// resolution on Linux.\npackage pathrs\n"
  },
  {
    "path": "vendor/cyphar.com/go-pathrs/handle_linux.go",
    "content": "//go:build linux\n\n// SPDX-License-Identifier: MPL-2.0\n/*\n * libpathrs: safe path resolution on Linux\n * Copyright (C) 2019-2025 Aleksa Sarai <cyphar@cyphar.com>\n * Copyright (C) 2019-2025 SUSE LLC\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\n\npackage pathrs\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\n\t\"cyphar.com/go-pathrs/internal/fdutils\"\n\t\"cyphar.com/go-pathrs/internal/libpathrs\"\n)\n\n// Handle is a handle for a path within a given [Root]. This handle references\n// an already-resolved path which can be used for only one purpose -- to\n// \"re-open\" the handle and get an actual [os.File] which can be used for\n// ordinary operations.\n//\n// If you wish to open a file without having an intermediate [Handle] object,\n// you can try to use [Root.Open] or [Root.OpenFile].\n//\n// It is critical that perform all relevant operations through this [Handle]\n// (rather than fetching the file descriptor yourself with [Handle.IntoRaw]),\n// because the security properties of libpathrs depend on users doing all\n// relevant filesystem operations through libpathrs.\n//\n// [os.File]: https://pkg.go.dev/os#File\ntype Handle struct {\n\tinner *os.File\n}\n\n// HandleFromFile creates a new [Handle] from an existing file handle. The\n// handle will be copied by this method, so the original handle should still be\n// freed by the caller.\n//\n// This is effectively the inverse operation of [Handle.IntoRaw], and is used\n// for \"deserialising\" pathrs root handles.\nfunc HandleFromFile(file *os.File) (*Handle, error) {\n\tnewFile, err := fdutils.DupFile(file)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"duplicate handle fd: %w\", err)\n\t}\n\treturn &Handle{inner: newFile}, nil\n}\n\n// Open creates an \"upgraded\" file handle to the file referenced by the\n// [Handle]. Note that the original [Handle] is not consumed by this operation,\n// and can be opened multiple times.\n//\n// The handle returned is only usable for reading, and this is method is\n// shorthand for [Handle.OpenFile] with os.O_RDONLY.\n//\n// TODO: Rename these to \"Reopen\" or something.\nfunc (h *Handle) Open() (*os.File, error) {\n\treturn h.OpenFile(os.O_RDONLY)\n}\n\n// OpenFile creates an \"upgraded\" file handle to the file referenced by the\n// [Handle]. Note that the original [Handle] is not consumed by this operation,\n// and can be opened multiple times.\n//\n// The provided flags indicate which open(2) flags are used to create the new\n// handle.\n//\n// TODO: Rename these to \"Reopen\" or something.\nfunc (h *Handle) OpenFile(flags int) (*os.File, error) {\n\treturn fdutils.WithFileFd(h.inner, func(fd uintptr) (*os.File, error) {\n\t\tnewFd, err := libpathrs.Reopen(fd, flags)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn os.NewFile(newFd, h.inner.Name()), nil\n\t})\n}\n\n// IntoFile unwraps the [Handle] into its underlying [os.File].\n//\n// You almost certainly want to use [Handle.OpenFile] to get a non-O_PATH\n// version of this [Handle].\n//\n// This operation returns the internal [os.File] of the [Handle] directly, so\n// calling [Handle.Close] will also close any copies of the returned [os.File].\n// If you want to get an independent copy, use [Handle.Clone] followed by\n// [Handle.IntoFile] on the cloned [Handle].\n//\n// [os.File]: https://pkg.go.dev/os#File\nfunc (h *Handle) IntoFile() *os.File {\n\t// TODO: Figure out if we really don't want to make a copy.\n\t// TODO: We almost certainly want to clear r.inner here, but we can't do\n\t//       that easily atomically (we could use atomic.Value but that'll make\n\t//       things quite a bit uglier).\n\treturn h.inner\n}\n\n// Clone creates a copy of a [Handle], such that it has a separate lifetime to\n// the original (while referring to the same underlying file).\nfunc (h *Handle) Clone() (*Handle, error) {\n\treturn HandleFromFile(h.inner)\n}\n\n// Close frees all of the resources used by the [Handle].\nfunc (h *Handle) Close() error {\n\treturn h.inner.Close()\n}\n"
  },
  {
    "path": "vendor/cyphar.com/go-pathrs/internal/fdutils/fd_linux.go",
    "content": "//go:build linux\n\n// SPDX-License-Identifier: MPL-2.0\n/*\n * libpathrs: safe path resolution on Linux\n * Copyright (C) 2019-2025 Aleksa Sarai <cyphar@cyphar.com>\n * Copyright (C) 2019-2025 SUSE LLC\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\n\n// Package fdutils contains a few helper methods when dealing with *os.File and\n// file descriptors.\npackage fdutils\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\n\t\"golang.org/x/sys/unix\"\n\n\t\"cyphar.com/go-pathrs/internal/libpathrs\"\n)\n\n// DupFd makes a duplicate of the given fd.\nfunc DupFd(fd uintptr, name string) (*os.File, error) {\n\tnewFd, err := unix.FcntlInt(fd, unix.F_DUPFD_CLOEXEC, 0)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"fcntl(F_DUPFD_CLOEXEC): %w\", err)\n\t}\n\treturn os.NewFile(uintptr(newFd), name), nil\n}\n\n// WithFileFd is a more ergonomic wrapper around file.SyscallConn().Control().\nfunc WithFileFd[T any](file *os.File, fn func(fd uintptr) (T, error)) (T, error) {\n\tconn, err := file.SyscallConn()\n\tif err != nil {\n\t\treturn *new(T), err\n\t}\n\tvar (\n\t\tret      T\n\t\tinnerErr error\n\t)\n\tif err := conn.Control(func(fd uintptr) {\n\t\tret, innerErr = fn(fd)\n\t}); err != nil {\n\t\treturn *new(T), err\n\t}\n\treturn ret, innerErr\n}\n\n// DupFile makes a duplicate of the given file.\nfunc DupFile(file *os.File) (*os.File, error) {\n\treturn WithFileFd(file, func(fd uintptr) (*os.File, error) {\n\t\treturn DupFd(fd, file.Name())\n\t})\n}\n\n// MkFile creates a new *os.File from the provided file descriptor. However,\n// unlike os.NewFile, the file's Name is based on the real path (provided by\n// /proc/self/fd/$n).\nfunc MkFile(fd uintptr) (*os.File, error) {\n\tfdPath := fmt.Sprintf(\"fd/%d\", fd)\n\tfdName, err := libpathrs.ProcReadlinkat(libpathrs.ProcDefaultRootFd, libpathrs.ProcThreadSelf, fdPath)\n\tif err != nil {\n\t\t_ = unix.Close(int(fd))\n\t\treturn nil, fmt.Errorf(\"failed to fetch real name of fd %d: %w\", fd, err)\n\t}\n\t// TODO: Maybe we should prefix this name with something to indicate to\n\t// users that they must not use this path as a \"safe\" path. Something like\n\t// \"//pathrs-handle:/foo/bar\"?\n\treturn os.NewFile(fd, fdName), nil\n}\n"
  },
  {
    "path": "vendor/cyphar.com/go-pathrs/internal/libpathrs/error_unix.go",
    "content": "//go:build linux\n\n// TODO: Use \"go:build unix\" once we bump the minimum Go version 1.19.\n\n// SPDX-License-Identifier: MPL-2.0\n/*\n * libpathrs: safe path resolution on Linux\n * Copyright (C) 2019-2025 Aleksa Sarai <cyphar@cyphar.com>\n * Copyright (C) 2019-2025 SUSE LLC\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\n\npackage libpathrs\n\nimport (\n\t\"syscall\"\n)\n\n// Error represents an underlying libpathrs error.\ntype Error struct {\n\tdescription string\n\terrno       syscall.Errno\n}\n\n// Error returns a textual description of the error.\nfunc (err *Error) Error() string {\n\treturn err.description\n}\n\n// Unwrap returns the underlying error which was wrapped by this error (if\n// applicable).\nfunc (err *Error) Unwrap() error {\n\tif err.errno != 0 {\n\t\treturn err.errno\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/cyphar.com/go-pathrs/internal/libpathrs/libpathrs_linux.go",
    "content": "//go:build linux\n\n// SPDX-License-Identifier: MPL-2.0\n/*\n * libpathrs: safe path resolution on Linux\n * Copyright (C) 2019-2025 Aleksa Sarai <cyphar@cyphar.com>\n * Copyright (C) 2019-2025 SUSE LLC\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\n\n// Package libpathrs is an internal thin wrapper around the libpathrs C API.\npackage libpathrs\n\nimport (\n\t\"fmt\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n/*\n// TODO: Figure out if we need to add support for linking against libpathrs\n//       statically even if in dynamically linked builds in order to make\n//       packaging a bit easier (using \"-Wl,-Bstatic -lpathrs -Wl,-Bdynamic\" or\n//       \"-l:pathrs.a\").\n#cgo pkg-config: pathrs\n#include <pathrs.h>\n\n// This is a workaround for unsafe.Pointer() not working for non-void pointers.\nchar *cast_ptr(void *ptr) { return ptr; }\n*/\nimport \"C\"\n\nfunc fetchError(errID C.int) error {\n\tif errID >= C.__PATHRS_MAX_ERR_VALUE {\n\t\treturn nil\n\t}\n\tcErr := C.pathrs_errorinfo(errID)\n\tdefer C.pathrs_errorinfo_free(cErr)\n\n\tvar err error\n\tif cErr != nil {\n\t\terr = &Error{\n\t\t\terrno:       syscall.Errno(cErr.saved_errno),\n\t\t\tdescription: C.GoString(cErr.description),\n\t\t}\n\t}\n\treturn err\n}\n\n// OpenRoot wraps pathrs_open_root.\nfunc OpenRoot(path string) (uintptr, error) {\n\tcPath := C.CString(path)\n\tdefer C.free(unsafe.Pointer(cPath))\n\n\tfd := C.pathrs_open_root(cPath)\n\treturn uintptr(fd), fetchError(fd)\n}\n\n// Reopen wraps pathrs_reopen.\nfunc Reopen(fd uintptr, flags int) (uintptr, error) {\n\tnewFd := C.pathrs_reopen(C.int(fd), C.int(flags))\n\treturn uintptr(newFd), fetchError(newFd)\n}\n\n// InRootResolve wraps pathrs_inroot_resolve.\nfunc InRootResolve(rootFd uintptr, path string) (uintptr, error) {\n\tcPath := C.CString(path)\n\tdefer C.free(unsafe.Pointer(cPath))\n\n\tfd := C.pathrs_inroot_resolve(C.int(rootFd), cPath)\n\treturn uintptr(fd), fetchError(fd)\n}\n\n// InRootResolveNoFollow wraps pathrs_inroot_resolve_nofollow.\nfunc InRootResolveNoFollow(rootFd uintptr, path string) (uintptr, error) {\n\tcPath := C.CString(path)\n\tdefer C.free(unsafe.Pointer(cPath))\n\n\tfd := C.pathrs_inroot_resolve_nofollow(C.int(rootFd), cPath)\n\treturn uintptr(fd), fetchError(fd)\n}\n\n// InRootOpen wraps pathrs_inroot_open.\nfunc InRootOpen(rootFd uintptr, path string, flags int) (uintptr, error) {\n\tcPath := C.CString(path)\n\tdefer C.free(unsafe.Pointer(cPath))\n\n\tfd := C.pathrs_inroot_open(C.int(rootFd), cPath, C.int(flags))\n\treturn uintptr(fd), fetchError(fd)\n}\n\n// InRootReadlink wraps pathrs_inroot_readlink.\nfunc InRootReadlink(rootFd uintptr, path string) (string, error) {\n\tcPath := C.CString(path)\n\tdefer C.free(unsafe.Pointer(cPath))\n\n\tsize := 128\n\tfor {\n\t\tlinkBuf := make([]byte, size)\n\t\tn := C.pathrs_inroot_readlink(C.int(rootFd), cPath, C.cast_ptr(unsafe.Pointer(&linkBuf[0])), C.ulong(len(linkBuf)))\n\t\tswitch {\n\t\tcase int(n) < C.__PATHRS_MAX_ERR_VALUE:\n\t\t\treturn \"\", fetchError(n)\n\t\tcase int(n) <= len(linkBuf):\n\t\t\treturn string(linkBuf[:int(n)]), nil\n\t\tdefault:\n\t\t\t// The contents were truncated. Unlike readlinkat, pathrs returns\n\t\t\t// the size of the link when it checked. So use the returned size\n\t\t\t// as a basis for the reallocated size (but in order to avoid a DoS\n\t\t\t// where a magic-link is growing by a single byte each iteration,\n\t\t\t// make sure we are a fair bit larger).\n\t\t\tsize += int(n)\n\t\t}\n\t}\n}\n\n// InRootRmdir wraps pathrs_inroot_rmdir.\nfunc InRootRmdir(rootFd uintptr, path string) error {\n\tcPath := C.CString(path)\n\tdefer C.free(unsafe.Pointer(cPath))\n\n\terr := C.pathrs_inroot_rmdir(C.int(rootFd), cPath)\n\treturn fetchError(err)\n}\n\n// InRootUnlink wraps pathrs_inroot_unlink.\nfunc InRootUnlink(rootFd uintptr, path string) error {\n\tcPath := C.CString(path)\n\tdefer C.free(unsafe.Pointer(cPath))\n\n\terr := C.pathrs_inroot_unlink(C.int(rootFd), cPath)\n\treturn fetchError(err)\n}\n\n// InRootRemoveAll wraps pathrs_inroot_remove_all.\nfunc InRootRemoveAll(rootFd uintptr, path string) error {\n\tcPath := C.CString(path)\n\tdefer C.free(unsafe.Pointer(cPath))\n\n\terr := C.pathrs_inroot_remove_all(C.int(rootFd), cPath)\n\treturn fetchError(err)\n}\n\n// InRootCreat wraps pathrs_inroot_creat.\nfunc InRootCreat(rootFd uintptr, path string, flags int, mode uint32) (uintptr, error) {\n\tcPath := C.CString(path)\n\tdefer C.free(unsafe.Pointer(cPath))\n\n\tfd := C.pathrs_inroot_creat(C.int(rootFd), cPath, C.int(flags), C.uint(mode))\n\treturn uintptr(fd), fetchError(fd)\n}\n\n// InRootRename wraps pathrs_inroot_rename.\nfunc InRootRename(rootFd uintptr, src, dst string, flags uint) error {\n\tcSrc := C.CString(src)\n\tdefer C.free(unsafe.Pointer(cSrc))\n\n\tcDst := C.CString(dst)\n\tdefer C.free(unsafe.Pointer(cDst))\n\n\terr := C.pathrs_inroot_rename(C.int(rootFd), cSrc, cDst, C.uint(flags))\n\treturn fetchError(err)\n}\n\n// InRootMkdir wraps pathrs_inroot_mkdir.\nfunc InRootMkdir(rootFd uintptr, path string, mode uint32) error {\n\tcPath := C.CString(path)\n\tdefer C.free(unsafe.Pointer(cPath))\n\n\terr := C.pathrs_inroot_mkdir(C.int(rootFd), cPath, C.uint(mode))\n\treturn fetchError(err)\n}\n\n// InRootMkdirAll wraps pathrs_inroot_mkdir_all.\nfunc InRootMkdirAll(rootFd uintptr, path string, mode uint32) (uintptr, error) {\n\tcPath := C.CString(path)\n\tdefer C.free(unsafe.Pointer(cPath))\n\n\tfd := C.pathrs_inroot_mkdir_all(C.int(rootFd), cPath, C.uint(mode))\n\treturn uintptr(fd), fetchError(fd)\n}\n\n// InRootMknod wraps pathrs_inroot_mknod.\nfunc InRootMknod(rootFd uintptr, path string, mode uint32, dev uint64) error {\n\tcPath := C.CString(path)\n\tdefer C.free(unsafe.Pointer(cPath))\n\n\terr := C.pathrs_inroot_mknod(C.int(rootFd), cPath, C.uint(mode), C.dev_t(dev))\n\treturn fetchError(err)\n}\n\n// InRootSymlink wraps pathrs_inroot_symlink.\nfunc InRootSymlink(rootFd uintptr, path, target string) error {\n\tcPath := C.CString(path)\n\tdefer C.free(unsafe.Pointer(cPath))\n\n\tcTarget := C.CString(target)\n\tdefer C.free(unsafe.Pointer(cTarget))\n\n\terr := C.pathrs_inroot_symlink(C.int(rootFd), cPath, cTarget)\n\treturn fetchError(err)\n}\n\n// InRootHardlink wraps pathrs_inroot_hardlink.\nfunc InRootHardlink(rootFd uintptr, path, target string) error {\n\tcPath := C.CString(path)\n\tdefer C.free(unsafe.Pointer(cPath))\n\n\tcTarget := C.CString(target)\n\tdefer C.free(unsafe.Pointer(cTarget))\n\n\terr := C.pathrs_inroot_hardlink(C.int(rootFd), cPath, cTarget)\n\treturn fetchError(err)\n}\n\n// ProcBase is pathrs_proc_base_t (uint64_t).\ntype ProcBase C.pathrs_proc_base_t\n\n// FIXME: We need to open-code the constants because CGo unfortunately will\n// implicitly convert any non-literal constants (i.e. those resolved using gcc)\n// to signed integers. See <https://github.com/golang/go/issues/39136> for some\n// more information on the underlying issue (though.\nconst (\n\t// ProcRoot is PATHRS_PROC_ROOT.\n\tProcRoot ProcBase = 0xFFFF_FFFE_7072_6F63 // C.PATHRS_PROC_ROOT\n\t// ProcSelf is PATHRS_PROC_SELF.\n\tProcSelf ProcBase = 0xFFFF_FFFE_091D_5E1F // C.PATHRS_PROC_SELF\n\t// ProcThreadSelf is PATHRS_PROC_THREAD_SELF.\n\tProcThreadSelf ProcBase = 0xFFFF_FFFE_3EAD_5E1F // C.PATHRS_PROC_THREAD_SELF\n\n\t// ProcBaseTypeMask is __PATHRS_PROC_TYPE_MASK.\n\tProcBaseTypeMask ProcBase = 0xFFFF_FFFF_0000_0000 // C.__PATHRS_PROC_TYPE_MASK\n\t// ProcBaseTypePid is __PATHRS_PROC_TYPE_PID.\n\tProcBaseTypePid ProcBase = 0x8000_0000_0000_0000 // C.__PATHRS_PROC_TYPE_PID\n\n\t// ProcDefaultRootFd is PATHRS_PROC_DEFAULT_ROOTFD.\n\tProcDefaultRootFd = -int(syscall.EBADF) // C.PATHRS_PROC_DEFAULT_ROOTFD\n)\n\nfunc assertEqual[T comparable](a, b T, msg string) {\n\tif a != b {\n\t\tpanic(fmt.Sprintf(\"%s ((%T) %#v != (%T) %#v)\", msg, a, a, b, b))\n\t}\n}\n\n// Verify that the values above match the actual C values. Unfortunately, Go\n// only allows us to forcefully cast int64 to uint64 if you use a temporary\n// variable, which means we cannot do it in a const context and thus need to do\n// it at runtime (even though it is a check that fundamentally could be done at\n// compile-time)...\nfunc init() {\n\tvar (\n\t\tactualProcRoot       int64 = C.PATHRS_PROC_ROOT\n\t\tactualProcSelf       int64 = C.PATHRS_PROC_SELF\n\t\tactualProcThreadSelf int64 = C.PATHRS_PROC_THREAD_SELF\n\t)\n\n\tassertEqual(ProcRoot, ProcBase(actualProcRoot), \"PATHRS_PROC_ROOT\")\n\tassertEqual(ProcSelf, ProcBase(actualProcSelf), \"PATHRS_PROC_SELF\")\n\tassertEqual(ProcThreadSelf, ProcBase(actualProcThreadSelf), \"PATHRS_PROC_THREAD_SELF\")\n\n\tvar (\n\t\tactualProcBaseTypeMask uint64 = C.__PATHRS_PROC_TYPE_MASK\n\t\tactualProcBaseTypePid  uint64 = C.__PATHRS_PROC_TYPE_PID\n\t)\n\n\tassertEqual(ProcBaseTypeMask, ProcBase(actualProcBaseTypeMask), \"__PATHRS_PROC_TYPE_MASK\")\n\tassertEqual(ProcBaseTypePid, ProcBase(actualProcBaseTypePid), \"__PATHRS_PROC_TYPE_PID\")\n\n\tassertEqual(ProcDefaultRootFd, int(C.PATHRS_PROC_DEFAULT_ROOTFD), \"PATHRS_PROC_DEFAULT_ROOTFD\")\n}\n\n// ProcPid reimplements the PROC_PID(x) conversion.\nfunc ProcPid(pid uint32) ProcBase { return ProcBaseTypePid | ProcBase(pid) }\n\n// ProcOpenat wraps pathrs_proc_openat.\nfunc ProcOpenat(procRootFd int, base ProcBase, path string, flags int) (uintptr, error) {\n\tcBase := C.pathrs_proc_base_t(base)\n\n\tcPath := C.CString(path)\n\tdefer C.free(unsafe.Pointer(cPath))\n\n\tfd := C.pathrs_proc_openat(C.int(procRootFd), cBase, cPath, C.int(flags))\n\treturn uintptr(fd), fetchError(fd)\n}\n\n// ProcReadlinkat wraps pathrs_proc_readlinkat.\nfunc ProcReadlinkat(procRootFd int, base ProcBase, path string) (string, error) {\n\t// TODO: See if we can unify this code with InRootReadlink.\n\n\tcBase := C.pathrs_proc_base_t(base)\n\n\tcPath := C.CString(path)\n\tdefer C.free(unsafe.Pointer(cPath))\n\n\tsize := 128\n\tfor {\n\t\tlinkBuf := make([]byte, size)\n\t\tn := C.pathrs_proc_readlinkat(\n\t\t\tC.int(procRootFd), cBase, cPath,\n\t\t\tC.cast_ptr(unsafe.Pointer(&linkBuf[0])), C.ulong(len(linkBuf)))\n\t\tswitch {\n\t\tcase int(n) < C.__PATHRS_MAX_ERR_VALUE:\n\t\t\treturn \"\", fetchError(n)\n\t\tcase int(n) <= len(linkBuf):\n\t\t\treturn string(linkBuf[:int(n)]), nil\n\t\tdefault:\n\t\t\t// The contents were truncated. Unlike readlinkat, pathrs returns\n\t\t\t// the size of the link when it checked. So use the returned size\n\t\t\t// as a basis for the reallocated size (but in order to avoid a DoS\n\t\t\t// where a magic-link is growing by a single byte each iteration,\n\t\t\t// make sure we are a fair bit larger).\n\t\t\tsize += int(n)\n\t\t}\n\t}\n}\n\n// ProcfsOpenHow is pathrs_procfs_open_how (struct).\ntype ProcfsOpenHow C.pathrs_procfs_open_how\n\nconst (\n\t// ProcfsNewUnmasked is PATHRS_PROCFS_NEW_UNMASKED.\n\tProcfsNewUnmasked = C.PATHRS_PROCFS_NEW_UNMASKED\n)\n\n// Flags returns a pointer to the internal flags field to allow other packages\n// to modify structure fields that are internal due to Go's visibility model.\nfunc (how *ProcfsOpenHow) Flags() *C.uint64_t { return &how.flags }\n\n// ProcfsOpen is pathrs_procfs_open (sizeof(*how) is passed automatically).\nfunc ProcfsOpen(how *ProcfsOpenHow) (uintptr, error) {\n\tfd := C.pathrs_procfs_open((*C.pathrs_procfs_open_how)(how), C.size_t(unsafe.Sizeof(*how)))\n\treturn uintptr(fd), fetchError(fd)\n}\n"
  },
  {
    "path": "vendor/cyphar.com/go-pathrs/procfs/procfs_linux.go",
    "content": "//go:build linux\n\n// SPDX-License-Identifier: MPL-2.0\n/*\n * libpathrs: safe path resolution on Linux\n * Copyright (C) 2019-2025 Aleksa Sarai <cyphar@cyphar.com>\n * Copyright (C) 2019-2025 SUSE LLC\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\n\n// Package procfs provides a safe API for operating on /proc on Linux.\npackage procfs\n\nimport (\n\t\"os\"\n\t\"runtime\"\n\n\t\"cyphar.com/go-pathrs/internal/fdutils\"\n\t\"cyphar.com/go-pathrs/internal/libpathrs\"\n)\n\n// ProcBase is used with [ProcReadlink] and related functions to indicate what\n// /proc subpath path operations should be done relative to.\ntype ProcBase struct {\n\tinner libpathrs.ProcBase\n}\n\nvar (\n\t// ProcRoot indicates to use /proc. Note that this mode may be more\n\t// expensive because we have to take steps to try to avoid leaking unmasked\n\t// procfs handles, so you should use [ProcBaseSelf] if you can.\n\tProcRoot = ProcBase{inner: libpathrs.ProcRoot}\n\t// ProcSelf indicates to use /proc/self. For most programs, this is the\n\t// standard choice.\n\tProcSelf = ProcBase{inner: libpathrs.ProcSelf}\n\t// ProcThreadSelf indicates to use /proc/thread-self. In multi-threaded\n\t// programs where one thread has a different CLONE_FS, it is possible for\n\t// /proc/self to point the wrong thread and so /proc/thread-self may be\n\t// necessary.\n\tProcThreadSelf = ProcBase{inner: libpathrs.ProcThreadSelf}\n)\n\n// ProcPid returns a ProcBase which indicates to use /proc/$pid for the given\n// PID (or TID). Be aware that due to PID recycling, using this is generally\n// not safe except in certain circumstances. Namely:\n//\n//   - PID 1 (the init process), as that PID cannot ever get recycled.\n//   - Your current PID (though you should just use [ProcBaseSelf]).\n//   - Your current TID if you have used [runtime.LockOSThread] (though you\n//     should just use [ProcBaseThreadSelf]).\n//   - PIDs of child processes (as long as you are sure that no other part of\n//     your program incorrectly catches or ignores SIGCHLD, and that you do it\n//     *before* you call wait(2)or any equivalent method that could reap\n//     zombies).\nfunc ProcPid(pid int) ProcBase {\n\tif pid < 0 || pid >= 1<<31 {\n\t\tpanic(\"invalid ProcBasePid value\") // TODO: should this be an error?\n\t}\n\treturn ProcBase{inner: libpathrs.ProcPid(uint32(pid))}\n}\n\n// ThreadCloser is a callback that needs to be called when you are done\n// operating on an [os.File] fetched using [Handle.OpenThreadSelf].\n//\n// [os.File]: https://pkg.go.dev/os#File\ntype ThreadCloser func()\n\n// Handle is a wrapper around an *os.File handle to \"/proc\", which can be\n// used to do further procfs-related operations in a safe way.\ntype Handle struct {\n\tinner *os.File\n}\n\n// Close releases all internal resources for this [Handle].\n//\n// Note that if the handle is actually the global cached handle, this operation\n// is a no-op.\nfunc (proc *Handle) Close() error {\n\tvar err error\n\tif proc.inner != nil {\n\t\terr = proc.inner.Close()\n\t}\n\treturn err\n}\n\n// OpenOption is a configuration function passed as an argument to [Open].\ntype OpenOption func(*libpathrs.ProcfsOpenHow) error\n\n// UnmaskedProcRoot can be passed to [Open] to request an unmasked procfs\n// handle be created.\n//\n//\tprocfs, err := procfs.OpenRoot(procfs.UnmaskedProcRoot)\nfunc UnmaskedProcRoot(how *libpathrs.ProcfsOpenHow) error {\n\t*how.Flags() |= libpathrs.ProcfsNewUnmasked\n\treturn nil\n}\n\n// Open creates a new [Handle] to a safe \"/proc\", based on the passed\n// configuration options (in the form of a series of [OpenOption]s).\nfunc Open(opts ...OpenOption) (*Handle, error) {\n\tvar how libpathrs.ProcfsOpenHow\n\tfor _, opt := range opts {\n\t\tif err := opt(&how); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\tfd, err := libpathrs.ProcfsOpen(&how)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tvar procFile *os.File\n\tif int(fd) >= 0 {\n\t\tprocFile = os.NewFile(fd, \"/proc\")\n\t}\n\t// TODO: Check that fd == PATHRS_PROC_DEFAULT_ROOTFD in the <0 case?\n\treturn &Handle{inner: procFile}, nil\n}\n\n// TODO: Switch to something fdutils.WithFileFd-like.\nfunc (proc *Handle) fd() int {\n\tif proc.inner != nil {\n\t\treturn int(proc.inner.Fd())\n\t}\n\treturn libpathrs.ProcDefaultRootFd\n}\n\n// TODO: Should we expose open?\nfunc (proc *Handle) open(base ProcBase, path string, flags int) (_ *os.File, Closer ThreadCloser, Err error) {\n\tvar closer ThreadCloser\n\tif base == ProcThreadSelf {\n\t\truntime.LockOSThread()\n\t\tcloser = runtime.UnlockOSThread\n\t}\n\tdefer func() {\n\t\tif closer != nil && Err != nil {\n\t\t\tcloser()\n\t\t\tCloser = nil\n\t\t}\n\t}()\n\n\tfd, err := libpathrs.ProcOpenat(proc.fd(), base.inner, path, flags)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tfile, err := fdutils.MkFile(fd)\n\treturn file, closer, err\n}\n\n// OpenRoot safely opens a given path from inside /proc/.\n//\n// This function must only be used for accessing global information from procfs\n// (such as /proc/cpuinfo) or information about other processes (such as\n// /proc/1). Accessing your own process information should be done using\n// [Handle.OpenSelf] or [Handle.OpenThreadSelf].\nfunc (proc *Handle) OpenRoot(path string, flags int) (*os.File, error) {\n\tfile, closer, err := proc.open(ProcRoot, path, flags)\n\tif closer != nil {\n\t\t// should not happen\n\t\tpanic(\"non-zero closer returned from procOpen(ProcRoot)\")\n\t}\n\treturn file, err\n}\n\n// OpenSelf safely opens a given path from inside /proc/self/.\n//\n// This method is recommend for getting process information about the current\n// process for almost all Go processes *except* for cases where there are\n// [runtime.LockOSThread] threads that have changed some aspect of their state\n// (such as through unshare(CLONE_FS) or changing namespaces).\n//\n// For such non-heterogeneous processes, /proc/self may reference to a task\n// that has different state from the current goroutine and so it may be\n// preferable to use [Handle.OpenThreadSelf]. The same is true if a user\n// really wants to inspect the current OS thread's information (such as\n// /proc/thread-self/stack or /proc/thread-self/status which is always uniquely\n// per-thread).\n//\n// Unlike [Handle.OpenThreadSelf], this method does not involve locking\n// the goroutine to the current OS thread and so is simpler to use and\n// theoretically has slightly less overhead.\n//\n// [runtime.LockOSThread]: https://pkg.go.dev/runtime#LockOSThread\nfunc (proc *Handle) OpenSelf(path string, flags int) (*os.File, error) {\n\tfile, closer, err := proc.open(ProcSelf, path, flags)\n\tif closer != nil {\n\t\t// should not happen\n\t\tpanic(\"non-zero closer returned from procOpen(ProcSelf)\")\n\t}\n\treturn file, err\n}\n\n// OpenPid safely opens a given path from inside /proc/$pid/, where pid can be\n// either a PID or TID.\n//\n// This is effectively equivalent to calling [Handle.OpenRoot] with the\n// pid prefixed to the subpath.\n//\n// Be aware that due to PID recycling, using this is generally not safe except\n// in certain circumstances. See the documentation of [ProcPid] for more\n// details.\nfunc (proc *Handle) OpenPid(pid int, path string, flags int) (*os.File, error) {\n\tfile, closer, err := proc.open(ProcPid(pid), path, flags)\n\tif closer != nil {\n\t\t// should not happen\n\t\tpanic(\"non-zero closer returned from procOpen(ProcPidOpen)\")\n\t}\n\treturn file, err\n}\n\n// OpenThreadSelf safely opens a given path from inside /proc/thread-self/.\n//\n// Most Go processes have heterogeneous threads (all threads have most of the\n// same kernel state such as CLONE_FS) and so [Handle.OpenSelf] is\n// preferable for most users.\n//\n// For non-heterogeneous threads, or users that actually want thread-specific\n// information (such as /proc/thread-self/stack or /proc/thread-self/status),\n// this method is necessary.\n//\n// Because Go can change the running OS thread of your goroutine without notice\n// (and then subsequently kill the old thread), this method will lock the\n// current goroutine to the OS thread (with [runtime.LockOSThread]) and the\n// caller is responsible for unlocking the the OS thread with the\n// [ThreadCloser] callback once they are done using the returned file. This\n// callback MUST be called AFTER you have finished using the returned\n// [os.File]. This callback is completely separate to [os.File.Close], so it\n// must be called regardless of how you close the handle.\n//\n// [runtime.LockOSThread]: https://pkg.go.dev/runtime#LockOSThread\n// [os.File]: https://pkg.go.dev/os#File\n// [os.File.Close]: https://pkg.go.dev/os#File.Close\nfunc (proc *Handle) OpenThreadSelf(path string, flags int) (*os.File, ThreadCloser, error) {\n\treturn proc.open(ProcThreadSelf, path, flags)\n}\n\n// Readlink safely reads the contents of a symlink from the given procfs base.\n//\n// This is effectively equivalent to doing an Open*(O_PATH|O_NOFOLLOW) of the\n// path and then doing unix.Readlinkat(fd, \"\"), but with the benefit that\n// thread locking is not necessary for [ProcThreadSelf].\nfunc (proc *Handle) Readlink(base ProcBase, path string) (string, error) {\n\treturn libpathrs.ProcReadlinkat(proc.fd(), base.inner, path)\n}\n"
  },
  {
    "path": "vendor/cyphar.com/go-pathrs/root_linux.go",
    "content": "//go:build linux\n\n// SPDX-License-Identifier: MPL-2.0\n/*\n * libpathrs: safe path resolution on Linux\n * Copyright (C) 2019-2025 Aleksa Sarai <cyphar@cyphar.com>\n * Copyright (C) 2019-2025 SUSE LLC\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\n\npackage pathrs\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"os\"\n\t\"syscall\"\n\n\t\"cyphar.com/go-pathrs/internal/fdutils\"\n\t\"cyphar.com/go-pathrs/internal/libpathrs\"\n)\n\n// Root is a handle to the root of a directory tree to resolve within. The only\n// purpose of this \"root handle\" is to perform operations within the directory\n// tree, or to get a [Handle] to inodes within the directory tree.\n//\n// At time of writing, it is considered a *VERY BAD IDEA* to open a [Root]\n// inside a possibly-attacker-controlled directory tree. While we do have\n// protections that should defend against it, it's far more dangerous than just\n// opening a directory tree which is not inside a potentially-untrusted\n// directory.\ntype Root struct {\n\tinner *os.File\n}\n\n// OpenRoot creates a new [Root] handle to the directory at the given path.\nfunc OpenRoot(path string) (*Root, error) {\n\tfd, err := libpathrs.OpenRoot(path)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tfile, err := fdutils.MkFile(fd)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &Root{inner: file}, nil\n}\n\n// RootFromFile creates a new [Root] handle from an [os.File] referencing a\n// directory. The provided file will be duplicated, so the original file should\n// still be closed by the caller.\n//\n// This is effectively the inverse operation of [Root.IntoFile].\n//\n// [os.File]: https://pkg.go.dev/os#File\nfunc RootFromFile(file *os.File) (*Root, error) {\n\tnewFile, err := fdutils.DupFile(file)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"duplicate root fd: %w\", err)\n\t}\n\treturn &Root{inner: newFile}, nil\n}\n\n// Resolve resolves the given path within the [Root]'s directory tree, and\n// returns a [Handle] to the resolved path. The path must already exist,\n// otherwise an error will occur.\n//\n// All symlinks (including trailing symlinks) are followed, but they are\n// resolved within the rootfs. If you wish to open a handle to the symlink\n// itself, use [ResolveNoFollow].\nfunc (r *Root) Resolve(path string) (*Handle, error) {\n\treturn fdutils.WithFileFd(r.inner, func(rootFd uintptr) (*Handle, error) {\n\t\thandleFd, err := libpathrs.InRootResolve(rootFd, path)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\thandleFile, err := fdutils.MkFile(handleFd)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn &Handle{inner: handleFile}, nil\n\t})\n}\n\n// ResolveNoFollow is effectively an O_NOFOLLOW version of [Resolve]. Their\n// behaviour is identical, except that *trailing* symlinks will not be\n// followed. If the final component is a trailing symlink, an O_PATH|O_NOFOLLOW\n// handle to the symlink itself is returned.\nfunc (r *Root) ResolveNoFollow(path string) (*Handle, error) {\n\treturn fdutils.WithFileFd(r.inner, func(rootFd uintptr) (*Handle, error) {\n\t\thandleFd, err := libpathrs.InRootResolveNoFollow(rootFd, path)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\thandleFile, err := fdutils.MkFile(handleFd)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn &Handle{inner: handleFile}, nil\n\t})\n}\n\n// Open is effectively shorthand for [Resolve] followed by [Handle.Open], but\n// can be slightly more efficient (it reduces CGo overhead and the number of\n// syscalls used when using the openat2-based resolver) and is arguably more\n// ergonomic to use.\n//\n// This is effectively equivalent to [os.Open].\n//\n// [os.Open]: https://pkg.go.dev/os#Open\nfunc (r *Root) Open(path string) (*os.File, error) {\n\treturn r.OpenFile(path, os.O_RDONLY)\n}\n\n// OpenFile is effectively shorthand for [Resolve] followed by\n// [Handle.OpenFile], but can be slightly more efficient (it reduces CGo\n// overhead and the number of syscalls used when using the openat2-based\n// resolver) and is arguably more ergonomic to use.\n//\n// However, if flags contains os.O_NOFOLLOW and the path is a symlink, then\n// OpenFile's behaviour will match that of openat2. In most cases an error will\n// be returned, but if os.O_PATH is provided along with os.O_NOFOLLOW then a\n// file equivalent to [ResolveNoFollow] will be returned instead.\n//\n// This is effectively equivalent to [os.OpenFile], except that os.O_CREAT is\n// not supported.\n//\n// [os.OpenFile]: https://pkg.go.dev/os#OpenFile\nfunc (r *Root) OpenFile(path string, flags int) (*os.File, error) {\n\treturn fdutils.WithFileFd(r.inner, func(rootFd uintptr) (*os.File, error) {\n\t\tfd, err := libpathrs.InRootOpen(rootFd, path, flags)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn fdutils.MkFile(fd)\n\t})\n}\n\n// Create creates a file within the [Root]'s directory tree at the given path,\n// and returns a handle to the file. The provided mode is used for the new file\n// (the process's umask applies).\n//\n// Unlike [os.Create], if the file already exists an error is created rather\n// than the file being opened and truncated.\n//\n// [os.Create]: https://pkg.go.dev/os#Create\nfunc (r *Root) Create(path string, flags int, mode os.FileMode) (*os.File, error) {\n\tunixMode, err := toUnixMode(mode, false)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn fdutils.WithFileFd(r.inner, func(rootFd uintptr) (*os.File, error) {\n\t\thandleFd, err := libpathrs.InRootCreat(rootFd, path, flags, unixMode)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn fdutils.MkFile(handleFd)\n\t})\n}\n\n// Rename two paths within a [Root]'s directory tree. The flags argument is\n// identical to the RENAME_* flags to the renameat2(2) system call.\nfunc (r *Root) Rename(src, dst string, flags uint) error {\n\t_, err := fdutils.WithFileFd(r.inner, func(rootFd uintptr) (struct{}, error) {\n\t\terr := libpathrs.InRootRename(rootFd, src, dst, flags)\n\t\treturn struct{}{}, err\n\t})\n\treturn err\n}\n\n// RemoveDir removes the named empty directory within a [Root]'s directory\n// tree.\nfunc (r *Root) RemoveDir(path string) error {\n\t_, err := fdutils.WithFileFd(r.inner, func(rootFd uintptr) (struct{}, error) {\n\t\terr := libpathrs.InRootRmdir(rootFd, path)\n\t\treturn struct{}{}, err\n\t})\n\treturn err\n}\n\n// RemoveFile removes the named file within a [Root]'s directory tree.\nfunc (r *Root) RemoveFile(path string) error {\n\t_, err := fdutils.WithFileFd(r.inner, func(rootFd uintptr) (struct{}, error) {\n\t\terr := libpathrs.InRootUnlink(rootFd, path)\n\t\treturn struct{}{}, err\n\t})\n\treturn err\n}\n\n// Remove removes the named file or (empty) directory within a [Root]'s\n// directory tree.\n//\n// This is effectively equivalent to [os.Remove].\n//\n// [os.Remove]: https://pkg.go.dev/os#Remove\nfunc (r *Root) Remove(path string) error {\n\t// In order to match os.Remove's implementation we need to also do both\n\t// syscalls unconditionally and adjust the error based on whether\n\t// pathrs_inroot_rmdir() returned ENOTDIR.\n\tunlinkErr := r.RemoveFile(path)\n\tif unlinkErr == nil {\n\t\treturn nil\n\t}\n\trmdirErr := r.RemoveDir(path)\n\tif rmdirErr == nil {\n\t\treturn nil\n\t}\n\t// Both failed, adjust the error in the same way that os.Remove does.\n\terr := rmdirErr\n\tif errors.Is(err, syscall.ENOTDIR) {\n\t\terr = unlinkErr\n\t}\n\treturn err\n}\n\n// RemoveAll recursively deletes a path and all of its children.\n//\n// This is effectively equivalent to [os.RemoveAll].\n//\n// [os.RemoveAll]: https://pkg.go.dev/os#RemoveAll\nfunc (r *Root) RemoveAll(path string) error {\n\t_, err := fdutils.WithFileFd(r.inner, func(rootFd uintptr) (struct{}, error) {\n\t\terr := libpathrs.InRootRemoveAll(rootFd, path)\n\t\treturn struct{}{}, err\n\t})\n\treturn err\n}\n\n// Mkdir creates a directory within a [Root]'s directory tree. The provided\n// mode is used for the new directory (the process's umask applies).\n//\n// This is effectively equivalent to [os.Mkdir].\n//\n// [os.Mkdir]: https://pkg.go.dev/os#Mkdir\nfunc (r *Root) Mkdir(path string, mode os.FileMode) error {\n\tunixMode, err := toUnixMode(mode, false)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t_, err = fdutils.WithFileFd(r.inner, func(rootFd uintptr) (struct{}, error) {\n\t\terr := libpathrs.InRootMkdir(rootFd, path, unixMode)\n\t\treturn struct{}{}, err\n\t})\n\treturn err\n}\n\n// MkdirAll creates a directory (and any parent path components if they don't\n// exist) within a [Root]'s directory tree. The provided mode is used for any\n// directories created by this function (the process's umask applies).\n//\n// This is effectively equivalent to [os.MkdirAll].\n//\n// [os.MkdirAll]: https://pkg.go.dev/os#MkdirAll\nfunc (r *Root) MkdirAll(path string, mode os.FileMode) (*Handle, error) {\n\tunixMode, err := toUnixMode(mode, false)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn fdutils.WithFileFd(r.inner, func(rootFd uintptr) (*Handle, error) {\n\t\thandleFd, err := libpathrs.InRootMkdirAll(rootFd, path, unixMode)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\thandleFile, err := fdutils.MkFile(handleFd)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn &Handle{inner: handleFile}, err\n\t})\n}\n\n// Mknod creates a new device inode of the given type within a [Root]'s\n// directory tree. The provided mode is used for the new directory (the\n// process's umask applies).\n//\n// This is effectively equivalent to [unix.Mknod].\n//\n// [unix.Mknod]: https://pkg.go.dev/golang.org/x/sys/unix#Mknod\nfunc (r *Root) Mknod(path string, mode os.FileMode, dev uint64) error {\n\tunixMode, err := toUnixMode(mode, true)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t_, err = fdutils.WithFileFd(r.inner, func(rootFd uintptr) (struct{}, error) {\n\t\terr := libpathrs.InRootMknod(rootFd, path, unixMode, dev)\n\t\treturn struct{}{}, err\n\t})\n\treturn err\n}\n\n// Symlink creates a symlink within a [Root]'s directory tree. The symlink is\n// created at path and is a link to target.\n//\n// This is effectively equivalent to [os.Symlink].\n//\n// [os.Symlink]: https://pkg.go.dev/os#Symlink\nfunc (r *Root) Symlink(path, target string) error {\n\t_, err := fdutils.WithFileFd(r.inner, func(rootFd uintptr) (struct{}, error) {\n\t\terr := libpathrs.InRootSymlink(rootFd, path, target)\n\t\treturn struct{}{}, err\n\t})\n\treturn err\n}\n\n// Hardlink creates a hardlink within a [Root]'s directory tree. The hardlink\n// is created at path and is a link to target. Both paths are within the\n// [Root]'s directory tree (you cannot hardlink to a different [Root] or the\n// host).\n//\n// This is effectively equivalent to [os.Link].\n//\n// [os.Link]: https://pkg.go.dev/os#Link\nfunc (r *Root) Hardlink(path, target string) error {\n\t_, err := fdutils.WithFileFd(r.inner, func(rootFd uintptr) (struct{}, error) {\n\t\terr := libpathrs.InRootHardlink(rootFd, path, target)\n\t\treturn struct{}{}, err\n\t})\n\treturn err\n}\n\n// Readlink returns the target of a symlink with a [Root]'s directory tree.\n//\n// This is effectively equivalent to [os.Readlink].\n//\n// [os.Readlink]: https://pkg.go.dev/os#Readlink\nfunc (r *Root) Readlink(path string) (string, error) {\n\treturn fdutils.WithFileFd(r.inner, func(rootFd uintptr) (string, error) {\n\t\treturn libpathrs.InRootReadlink(rootFd, path)\n\t})\n}\n\n// IntoFile unwraps the [Root] into its underlying [os.File].\n//\n// It is critical that you do not operate on this file descriptor yourself,\n// because the security properties of libpathrs depend on users doing all\n// relevant filesystem operations through libpathrs.\n//\n// This operation returns the internal [os.File] of the [Root] directly, so\n// calling [Root.Close] will also close any copies of the returned [os.File].\n// If you want to get an independent copy, use [Root.Clone] followed by\n// [Root.IntoFile] on the cloned [Root].\n//\n// [os.File]: https://pkg.go.dev/os#File\nfunc (r *Root) IntoFile() *os.File {\n\t// TODO: Figure out if we really don't want to make a copy.\n\t// TODO: We almost certainly want to clear r.inner here, but we can't do\n\t//       that easily atomically (we could use atomic.Value but that'll make\n\t//       things quite a bit uglier).\n\treturn r.inner\n}\n\n// Clone creates a copy of a [Root] handle, such that it has a separate\n// lifetime to the original (while referring to the same underlying directory).\nfunc (r *Root) Clone() (*Root, error) {\n\treturn RootFromFile(r.inner)\n}\n\n// Close frees all of the resources used by the [Root] handle.\nfunc (r *Root) Close() error {\n\treturn r.inner.Close()\n}\n"
  },
  {
    "path": "vendor/cyphar.com/go-pathrs/utils_linux.go",
    "content": "//go:build linux\n\n// SPDX-License-Identifier: MPL-2.0\n/*\n * libpathrs: safe path resolution on Linux\n * Copyright (C) 2019-2025 Aleksa Sarai <cyphar@cyphar.com>\n * Copyright (C) 2019-2025 SUSE LLC\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\n\npackage pathrs\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\n\t\"golang.org/x/sys/unix\"\n)\n\n//nolint:cyclop // this function needs to handle a lot of cases\nfunc toUnixMode(mode os.FileMode, needsType bool) (uint32, error) {\n\tsysMode := uint32(mode.Perm())\n\tswitch mode & os.ModeType { //nolint:exhaustive // we only care about ModeType bits\n\tcase 0:\n\t\tif needsType {\n\t\t\tsysMode |= unix.S_IFREG\n\t\t}\n\tcase os.ModeDir:\n\t\tsysMode |= unix.S_IFDIR\n\tcase os.ModeSymlink:\n\t\tsysMode |= unix.S_IFLNK\n\tcase os.ModeCharDevice | os.ModeDevice:\n\t\tsysMode |= unix.S_IFCHR\n\tcase os.ModeDevice:\n\t\tsysMode |= unix.S_IFBLK\n\tcase os.ModeNamedPipe:\n\t\tsysMode |= unix.S_IFIFO\n\tcase os.ModeSocket:\n\t\tsysMode |= unix.S_IFSOCK\n\tdefault:\n\t\treturn 0, fmt.Errorf(\"invalid mode filetype %+o\", mode)\n\t}\n\tif mode&os.ModeSetuid != 0 {\n\t\tsysMode |= unix.S_ISUID\n\t}\n\tif mode&os.ModeSetgid != 0 {\n\t\tsysMode |= unix.S_ISGID\n\t}\n\tif mode&os.ModeSticky != 0 {\n\t\tsysMode |= unix.S_ISVTX\n\t}\n\treturn sysMode, nil\n}\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvlib/LICENSE",
    "content": "\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvlib/NOTICE",
    "content": "The file pkg/pciids/default_pci.ids is distributed under the 3-clause BSD License.\nMaintained by Albert Pool, Martin Mares, and other volunteers from\nthe PCI ID Project at https://pci-ids.ucw.cz/.\n\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvlib/pkg/nvlib/device/api.go",
    "content": "/*\n * Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage device\n\nimport (\n\t\"github.com/NVIDIA/go-nvml/pkg/nvml\"\n)\n\n// Interface provides the API to the 'device' package.\ntype Interface interface {\n\tAssertValidMigProfileFormat(profile string) error\n\tGetDevices() ([]Device, error)\n\tGetMigDevices() ([]MigDevice, error)\n\tGetMigProfiles() ([]MigProfile, error)\n\tNewDevice(d nvml.Device) (Device, error)\n\tNewDeviceByUUID(uuid string) (Device, error)\n\tNewMigDevice(d nvml.Device) (MigDevice, error)\n\tNewMigDeviceByUUID(uuid string) (MigDevice, error)\n\tNewMigProfile(giProfileID, ciProfileID, ciEngProfileID int, migMemorySizeMB, deviceMemorySizeBytes uint64) (MigProfile, error)\n\tParseMigProfile(profile string) (MigProfile, error)\n\tVisitDevices(func(i int, d Device) error) error\n\tVisitMigDevices(func(i int, d Device, j int, m MigDevice) error) error\n\tVisitMigProfiles(func(p MigProfile) error) error\n}\n\ntype devicelib struct {\n\tnvmllib        nvml.Interface\n\tskippedDevices map[string]struct{}\n\tverifySymbols  *bool\n\tmigProfiles    []MigProfile\n}\n\nvar _ Interface = &devicelib{}\n\n// New creates a new instance of the 'device' interface.\nfunc New(nvmllib nvml.Interface, opts ...Option) Interface {\n\td := &devicelib{\n\t\tnvmllib: nvmllib,\n\t}\n\tfor _, opt := range opts {\n\t\topt(d)\n\t}\n\tif d.verifySymbols == nil {\n\t\tverify := true\n\t\td.verifySymbols = &verify\n\t}\n\tif d.skippedDevices == nil {\n\t\tWithSkippedDevices(\n\t\t\t\"DGX Display\",\n\t\t\t\"NVIDIA DGX Display\",\n\t\t)(d)\n\t}\n\treturn d\n}\n\n// WithVerifySymbols provides an option to toggle whether to verify select symbols exist in dynamic libraries before calling them.\nfunc WithVerifySymbols(verify bool) Option {\n\treturn func(d *devicelib) {\n\t\td.verifySymbols = &verify\n\t}\n}\n\n// WithSkippedDevices provides an Option to set devices to be skipped by model name.\nfunc WithSkippedDevices(names ...string) Option {\n\treturn func(d *devicelib) {\n\t\tif d.skippedDevices == nil {\n\t\t\td.skippedDevices = make(map[string]struct{})\n\t\t}\n\t\tfor _, name := range names {\n\t\t\td.skippedDevices[name] = struct{}{}\n\t\t}\n\t}\n}\n\n// Option defines a function for passing options to the New() call.\ntype Option func(*devicelib)\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvlib/pkg/nvlib/device/device.go",
    "content": "/*\n * Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage device\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\t\"github.com/NVIDIA/go-nvml/pkg/nvml\"\n)\n\n// Device defines the set of extended functions associated with a device.Device.\ntype Device interface {\n\tnvml.Device\n\tGetArchitectureAsString() (string, error)\n\tGetBrandAsString() (string, error)\n\tGetCudaComputeCapabilityAsString() (string, error)\n\tGetAddressingModeAsString() (string, error)\n\tGetMigDevices() ([]MigDevice, error)\n\tGetMigProfiles() ([]MigProfile, error)\n\tGetPCIBusID() (string, error)\n\tIsCoherent() (bool, error)\n\tIsFabricAttached() (bool, error)\n\tIsMigCapable() (bool, error)\n\tIsMigEnabled() (bool, error)\n\tVisitMigDevices(func(j int, m MigDevice) error) error\n\tVisitMigProfiles(func(p MigProfile) error) error\n}\n\ntype device struct {\n\tnvml.Device\n\tlib         *devicelib\n\tmigProfiles []MigProfile\n}\n\nvar _ Device = &device{}\n\n// NewDevice builds a new Device from an nvml.Device.\nfunc (d *devicelib) NewDevice(dev nvml.Device) (Device, error) {\n\treturn d.newDevice(dev)\n}\n\n// NewDeviceByUUID builds a new Device from a UUID.\nfunc (d *devicelib) NewDeviceByUUID(uuid string) (Device, error) {\n\tdev, ret := d.nvmllib.DeviceGetHandleByUUID(uuid)\n\tif ret != nvml.SUCCESS {\n\t\treturn nil, fmt.Errorf(\"error getting device handle for uuid '%v': %v\", uuid, ret)\n\t}\n\treturn d.newDevice(dev)\n}\n\n// newDevice creates a device from an nvml.Device.\nfunc (d *devicelib) newDevice(dev nvml.Device) (*device, error) {\n\treturn &device{dev, d, nil}, nil\n}\n\n// GetArchitectureAsString returns the Device architecture as a string.\nfunc (d *device) GetArchitectureAsString() (string, error) {\n\tarch, ret := d.GetArchitecture()\n\tif ret != nvml.SUCCESS {\n\t\treturn \"\", fmt.Errorf(\"error getting device architecture: %v\", ret)\n\t}\n\tswitch arch {\n\tcase nvml.DEVICE_ARCH_KEPLER:\n\t\treturn \"Kepler\", nil\n\tcase nvml.DEVICE_ARCH_MAXWELL:\n\t\treturn \"Maxwell\", nil\n\tcase nvml.DEVICE_ARCH_PASCAL:\n\t\treturn \"Pascal\", nil\n\tcase nvml.DEVICE_ARCH_VOLTA:\n\t\treturn \"Volta\", nil\n\tcase nvml.DEVICE_ARCH_TURING:\n\t\treturn \"Turing\", nil\n\tcase nvml.DEVICE_ARCH_AMPERE:\n\t\treturn \"Ampere\", nil\n\tcase nvml.DEVICE_ARCH_ADA:\n\t\treturn \"Ada Lovelace\", nil\n\tcase nvml.DEVICE_ARCH_HOPPER:\n\t\treturn \"Hopper\", nil\n\tcase nvml.DEVICE_ARCH_BLACKWELL:\n\t\treturn \"Blackwell\", nil\n\tcase nvml.DEVICE_ARCH_UNKNOWN:\n\t\treturn \"Unknown\", nil\n\t}\n\treturn \"\", fmt.Errorf(\"error interpreting device architecture as string: %v\", arch)\n}\n\n// GetBrandAsString returns the Device architecture as a string.\nfunc (d *device) GetBrandAsString() (string, error) {\n\tbrand, ret := d.GetBrand()\n\tif ret != nvml.SUCCESS {\n\t\treturn \"\", fmt.Errorf(\"error getting device brand: %v\", ret)\n\t}\n\tswitch brand {\n\tcase nvml.BRAND_UNKNOWN:\n\t\treturn \"Unknown\", nil\n\tcase nvml.BRAND_QUADRO:\n\t\treturn \"Quadro\", nil\n\tcase nvml.BRAND_TESLA:\n\t\treturn \"Tesla\", nil\n\tcase nvml.BRAND_NVS:\n\t\treturn \"NVS\", nil\n\tcase nvml.BRAND_GRID:\n\t\treturn \"Grid\", nil\n\tcase nvml.BRAND_GEFORCE:\n\t\treturn \"GeForce\", nil\n\tcase nvml.BRAND_TITAN:\n\t\treturn \"Titan\", nil\n\tcase nvml.BRAND_NVIDIA_VAPPS:\n\t\treturn \"NvidiaVApps\", nil\n\tcase nvml.BRAND_NVIDIA_VPC:\n\t\treturn \"NvidiaVPC\", nil\n\tcase nvml.BRAND_NVIDIA_VCS:\n\t\treturn \"NvidiaVCS\", nil\n\tcase nvml.BRAND_NVIDIA_VWS:\n\t\treturn \"NvidiaVWS\", nil\n\t// Deprecated in favor of nvml.BRAND_NVIDIA_CLOUD_GAMING\n\t// case nvml.BRAND_NVIDIA_VGAMING:\n\t//\treturn \"VGaming\", nil\n\tcase nvml.BRAND_NVIDIA_CLOUD_GAMING:\n\t\treturn \"NvidiaCloudGaming\", nil\n\tcase nvml.BRAND_QUADRO_RTX:\n\t\treturn \"QuadroRTX\", nil\n\tcase nvml.BRAND_NVIDIA_RTX:\n\t\treturn \"NvidiaRTX\", nil\n\tcase nvml.BRAND_NVIDIA:\n\t\treturn \"Nvidia\", nil\n\tcase nvml.BRAND_GEFORCE_RTX:\n\t\treturn \"GeForceRTX\", nil\n\tcase nvml.BRAND_TITAN_RTX:\n\t\treturn \"TitanRTX\", nil\n\t}\n\treturn \"\", fmt.Errorf(\"error interpreting device brand as string: %v\", brand)\n}\n\n// GetAddressingModeAsString returns the Device addressing mode as a string.\nfunc (d *device) GetAddressingModeAsString() (string, error) {\n\tmode, ret := d.GetAddressingMode()\n\n\tswitch ret {\n\tcase nvml.SUCCESS:\n\t\t// continue\n\tcase nvml.ERROR_NOT_SUPPORTED:\n\t\t// Addressing mode is not supported on the current platform.\n\t\treturn \"\", nil\n\tdefault:\n\t\treturn \"\", fmt.Errorf(\"error getting device addressing mode: %v\", ret)\n\t}\n\n\tswitch nvml.DeviceAddressingModeType(mode.Value) {\n\tcase nvml.DEVICE_ADDRESSING_MODE_ATS:\n\t\treturn \"ATS\", nil\n\tcase nvml.DEVICE_ADDRESSING_MODE_HMM:\n\t\treturn \"HMM\", nil\n\tcase nvml.DEVICE_ADDRESSING_MODE_NONE:\n\t\treturn \"None\", nil\n\t}\n\n\treturn \"\", fmt.Errorf(\"error interpreting addressing mode as string: %v\", mode)\n}\n\n// GetPCIBusID returns the string representation of the bus ID.\nfunc (d *device) GetPCIBusID() (string, error) {\n\tinfo, ret := d.GetPciInfo()\n\tif ret != nvml.SUCCESS {\n\t\treturn \"\", fmt.Errorf(\"error getting PCI info: %w\", ret)\n\t}\n\n\tvar bytes []byte\n\tfor _, b := range info.BusId {\n\t\tif byte(b) == '\\x00' {\n\t\t\tbreak\n\t\t}\n\t\tbytes = append(bytes, byte(b))\n\t}\n\tid := strings.ToLower(string(bytes))\n\n\tif id != \"0000\" {\n\t\tid = strings.TrimPrefix(id, \"0000\")\n\t}\n\n\treturn id, nil\n}\n\n// GetCudaComputeCapabilityAsString returns the Device's CUDA compute capability as a version string.\nfunc (d *device) GetCudaComputeCapabilityAsString() (string, error) {\n\tmajor, minor, ret := d.GetCudaComputeCapability()\n\tif ret != nvml.SUCCESS {\n\t\treturn \"\", fmt.Errorf(\"error getting CUDA compute capability: %v\", ret)\n\t}\n\treturn fmt.Sprintf(\"%d.%d\", major, minor), nil\n}\n\n// IsCoherent returns whether the device is capable of coherent access to system\n// memory.\nfunc (d *device) IsCoherent() (bool, error) {\n\tif !d.lib.hasSymbol(\"nvmlDeviceGetAddressingMode\") {\n\t\treturn false, nil\n\t}\n\n\tmode, ret := nvml.Device(d).GetAddressingMode()\n\tif ret == nvml.ERROR_NOT_SUPPORTED {\n\t\treturn false, nil\n\t}\n\tif ret != nvml.SUCCESS {\n\t\treturn false, fmt.Errorf(\"error getting addressing mode: %v\", ret)\n\t}\n\n\tif nvml.DeviceAddressingModeType(mode.Value) == nvml.DEVICE_ADDRESSING_MODE_ATS {\n\t\treturn true, nil\n\t}\n\treturn false, nil\n}\n\n// IsMigCapable checks if a device is capable of having MIG paprtitions created on it.\nfunc (d *device) IsMigCapable() (bool, error) {\n\tif !d.lib.hasSymbol(\"nvmlDeviceGetMigMode\") {\n\t\treturn false, nil\n\t}\n\n\t_, _, ret := nvml.Device(d).GetMigMode()\n\tif ret == nvml.ERROR_NOT_SUPPORTED {\n\t\treturn false, nil\n\t}\n\tif ret != nvml.SUCCESS {\n\t\treturn false, fmt.Errorf(\"error getting MIG mode: %v\", ret)\n\t}\n\n\treturn true, nil\n}\n\n// IsMigEnabled checks if a device has MIG mode currently enabled on it.\nfunc (d *device) IsMigEnabled() (bool, error) {\n\tif !d.lib.hasSymbol(\"nvmlDeviceGetMigMode\") {\n\t\treturn false, nil\n\t}\n\n\tmode, _, ret := nvml.Device(d).GetMigMode()\n\tif ret == nvml.ERROR_NOT_SUPPORTED {\n\t\treturn false, nil\n\t}\n\tif ret != nvml.SUCCESS {\n\t\treturn false, fmt.Errorf(\"error getting MIG mode: %v\", ret)\n\t}\n\n\treturn (mode == nvml.DEVICE_MIG_ENABLE), nil\n}\n\n// IsFabricAttached checks if a device is attached to a GPU fabric.\nfunc (d *device) IsFabricAttached() (bool, error) {\n\tif d.lib.hasSymbol(\"nvmlDeviceGetGpuFabricInfo\") {\n\t\tinfo, ret := d.GetGpuFabricInfo()\n\t\tif ret == nvml.ERROR_NOT_SUPPORTED {\n\t\t\treturn false, nil\n\t\t}\n\t\tif ret != nvml.SUCCESS {\n\t\t\treturn false, fmt.Errorf(\"error getting GPU Fabric Info: %v\", ret)\n\t\t}\n\t\tif info.State != nvml.GPU_FABRIC_STATE_COMPLETED {\n\t\t\treturn false, nil\n\t\t}\n\t\tif info.ClusterUuid == [16]uint8{} {\n\t\t\treturn false, nil\n\t\t}\n\t\tif nvml.Return(info.Status) != nvml.SUCCESS {\n\t\t\treturn false, nil\n\t\t}\n\n\t\treturn true, nil\n\t}\n\n\tif d.lib.hasSymbol(\"nvmlDeviceGetGpuFabricInfoV\") {\n\t\tinfo, ret := d.GetGpuFabricInfoV().V2()\n\t\tif ret == nvml.ERROR_NOT_SUPPORTED {\n\t\t\treturn false, nil\n\t\t}\n\t\tif ret != nvml.SUCCESS {\n\t\t\treturn false, fmt.Errorf(\"error getting GPU Fabric Info: %v\", ret)\n\t\t}\n\t\tif info.State != nvml.GPU_FABRIC_STATE_COMPLETED {\n\t\t\treturn false, nil\n\t\t}\n\t\tif info.ClusterUuid == [16]uint8{} {\n\t\t\treturn false, nil\n\t\t}\n\t\tif nvml.Return(info.Status) != nvml.SUCCESS {\n\t\t\treturn false, nil\n\t\t}\n\n\t\treturn true, nil\n\t}\n\n\treturn false, nil\n}\n\n// VisitMigDevices walks a top-level device and invokes a callback function for each MIG device configured on it.\nfunc (d *device) VisitMigDevices(visit func(int, MigDevice) error) error {\n\tcapable, err := d.IsMigCapable()\n\tif err != nil {\n\t\treturn fmt.Errorf(\"error checking if GPU is MIG capable: %v\", err)\n\t}\n\tif !capable {\n\t\treturn nil\n\t}\n\n\tcount, ret := nvml.Device(d).GetMaxMigDeviceCount()\n\tif ret != nvml.SUCCESS {\n\t\treturn fmt.Errorf(\"error getting max MIG device count: %v\", ret)\n\t}\n\n\tfor i := 0; i < count; i++ {\n\t\tdevice, ret := nvml.Device(d).GetMigDeviceHandleByIndex(i)\n\t\tif ret == nvml.ERROR_NOT_FOUND {\n\t\t\tcontinue\n\t\t}\n\t\tif ret == nvml.ERROR_INVALID_ARGUMENT {\n\t\t\tcontinue\n\t\t}\n\t\tif ret != nvml.SUCCESS {\n\t\t\treturn fmt.Errorf(\"error getting MIG device handle at index '%v': %v\", i, ret)\n\t\t}\n\t\tmig, err := d.lib.NewMigDevice(device)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"error creating new MIG device wrapper: %v\", err)\n\t\t}\n\t\terr = visit(i, mig)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"error visiting MIG device: %v\", err)\n\t\t}\n\t}\n\treturn nil\n}\n\n// VisitMigProfiles walks a top-level device and invokes a callback function for each unique MIG Profile that can be configured on it.\nfunc (d *device) VisitMigProfiles(visit func(MigProfile) error) error {\n\tcapable, err := d.IsMigCapable()\n\tif err != nil {\n\t\treturn fmt.Errorf(\"error checking if GPU is MIG capable: %v\", err)\n\t}\n\n\tif !capable {\n\t\treturn nil\n\t}\n\n\tmemory, ret := d.GetMemoryInfo()\n\tif ret != nvml.SUCCESS {\n\t\treturn fmt.Errorf(\"error getting device memory info: %v\", ret)\n\t}\n\n\tfor i := 0; i < nvml.GPU_INSTANCE_PROFILE_COUNT; i++ {\n\t\tgiProfileInfo, ret := d.GetGpuInstanceProfileInfo(i)\n\t\tif ret == nvml.ERROR_NOT_SUPPORTED {\n\t\t\tcontinue\n\t\t}\n\t\tif ret == nvml.ERROR_INVALID_ARGUMENT {\n\t\t\tcontinue\n\t\t}\n\t\tif ret != nvml.SUCCESS {\n\t\t\treturn fmt.Errorf(\"error getting GPU Instance profile info: %v\", ret)\n\t\t}\n\n\t\tfor j := 0; j < nvml.COMPUTE_INSTANCE_PROFILE_COUNT; j++ {\n\t\t\tfor k := 0; k < nvml.COMPUTE_INSTANCE_ENGINE_PROFILE_COUNT; k++ {\n\t\t\t\tp, err := d.lib.NewMigProfile(i, j, k, giProfileInfo.MemorySizeMB, memory.Total)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"error creating MIG profile: %v\", err)\n\t\t\t\t}\n\n\t\t\t\t// NOTE: The NVML API doesn't currently let us query the set of\n\t\t\t\t// valid Compute Instance profiles without first instantiating\n\t\t\t\t// a GPU Instance to check against. In theory, it should be\n\t\t\t\t// possible to get this information without a reference to a\n\t\t\t\t// GPU instance, but no API is provided for that at the moment.\n\t\t\t\t// We run the checks below to weed out invalid profiles\n\t\t\t\t// heuristically, given what we know about how they are\n\t\t\t\t// physically constructed. In the future we should do this via\n\t\t\t\t// NVML once a proper API for this exists.\n\t\t\t\tpi := p.GetInfo()\n\t\t\t\tif pi.C > pi.G {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif (pi.C < pi.G) && ((pi.C * 2) > (pi.G + 1)) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\terr = visit(p)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"error visiting MIG profile: %v\", err)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\n// GetMigDevices gets the set of MIG devices associated with a top-level device.\nfunc (d *device) GetMigDevices() ([]MigDevice, error) {\n\tvar migs []MigDevice\n\terr := d.VisitMigDevices(func(j int, m MigDevice) error {\n\t\tmigs = append(migs, m)\n\t\treturn nil\n\t})\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn migs, nil\n}\n\n// GetMigProfiles gets the set of unique MIG profiles associated with a top-level device.\nfunc (d *device) GetMigProfiles() ([]MigProfile, error) {\n\t// Return the cached list if available\n\tif d.migProfiles != nil {\n\t\treturn d.migProfiles, nil\n\t}\n\n\t// Otherwise generate it...\n\tvar profiles []MigProfile\n\terr := d.VisitMigProfiles(func(p MigProfile) error {\n\t\tprofiles = append(profiles, p)\n\t\treturn nil\n\t})\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// And cache it before returning.\n\td.migProfiles = profiles\n\treturn profiles, nil\n}\n\n// isSkipped checks whether the device should be skipped.\nfunc (d *device) isSkipped() (bool, error) {\n\tname, ret := d.GetName()\n\tif ret != nvml.SUCCESS {\n\t\treturn false, fmt.Errorf(\"error getting device name: %v\", ret)\n\t}\n\n\tif _, exists := d.lib.skippedDevices[name]; exists {\n\t\treturn true, nil\n\t}\n\n\treturn false, nil\n}\n\n// VisitDevices visits each top-level device and invokes a callback function for it.\nfunc (d *devicelib) VisitDevices(visit func(int, Device) error) error {\n\tcount, ret := d.nvmllib.DeviceGetCount()\n\tif ret != nvml.SUCCESS {\n\t\treturn fmt.Errorf(\"error getting device count: %v\", ret)\n\t}\n\n\tfor i := 0; i < count; i++ {\n\t\tdevice, ret := d.nvmllib.DeviceGetHandleByIndex(i)\n\t\tif ret != nvml.SUCCESS {\n\t\t\treturn fmt.Errorf(\"error getting device handle for index '%v': %v\", i, ret)\n\t\t}\n\t\tdev, err := d.newDevice(device)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"error creating new device wrapper: %v\", err)\n\t\t}\n\n\t\tisSkipped, err := dev.isSkipped()\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"error checking whether device is skipped: %v\", err)\n\t\t}\n\t\tif isSkipped {\n\t\t\tcontinue\n\t\t}\n\n\t\terr = visit(i, dev)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"error visiting device: %v\", err)\n\t\t}\n\t}\n\treturn nil\n}\n\n// VisitMigDevices walks a top-level device and invokes a callback function for each MIG device configured on it.\nfunc (d *devicelib) VisitMigDevices(visit func(int, Device, int, MigDevice) error) error {\n\terr := d.VisitDevices(func(i int, dev Device) error {\n\t\terr := dev.VisitMigDevices(func(j int, mig MigDevice) error {\n\t\t\terr := visit(i, dev, j, mig)\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"error visiting MIG device: %v\", err)\n\t\t\t}\n\t\t\treturn nil\n\t\t})\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"error visiting device: %v\", err)\n\t\t}\n\t\treturn nil\n\t})\n\tif err != nil {\n\t\treturn fmt.Errorf(\"error visiting devices: %v\", err)\n\t}\n\treturn nil\n}\n\n// VisitMigProfiles walks a top-level device and invokes a callback function for each unique MIG profile found on them.\nfunc (d *devicelib) VisitMigProfiles(visit func(MigProfile) error) error {\n\tvisited := make(map[string]bool)\n\terr := d.VisitDevices(func(i int, dev Device) error {\n\t\terr := dev.VisitMigProfiles(func(p MigProfile) error {\n\t\t\tif visited[p.String()] {\n\t\t\t\treturn nil\n\t\t\t}\n\n\t\t\terr := visit(p)\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"error visiting MIG profile: %v\", err)\n\t\t\t}\n\n\t\t\tvisited[p.String()] = true\n\t\t\treturn nil\n\t\t})\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"error visiting device: %v\", err)\n\t\t}\n\t\treturn nil\n\t})\n\tif err != nil {\n\t\treturn fmt.Errorf(\"error visiting devices: %v\", err)\n\t}\n\treturn nil\n}\n\n// GetDevices gets the set of all top-level devices.\nfunc (d *devicelib) GetDevices() ([]Device, error) {\n\tvar devs []Device\n\terr := d.VisitDevices(func(i int, dev Device) error {\n\t\tdevs = append(devs, dev)\n\t\treturn nil\n\t})\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn devs, nil\n}\n\n// GetMigDevices gets the set of MIG devices across all top-level devices.\nfunc (d *devicelib) GetMigDevices() ([]MigDevice, error) {\n\tvar migs []MigDevice\n\terr := d.VisitMigDevices(func(i int, dev Device, j int, m MigDevice) error {\n\t\tmigs = append(migs, m)\n\t\treturn nil\n\t})\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn migs, nil\n}\n\n// GetMigProfiles gets the set of unique MIG profiles across all top-level devices.\nfunc (d *devicelib) GetMigProfiles() ([]MigProfile, error) {\n\t// Return the cached list if available\n\tif d.migProfiles != nil {\n\t\treturn d.migProfiles, nil\n\t}\n\n\t// Otherwise generate it...\n\tvar profiles []MigProfile\n\terr := d.VisitMigProfiles(func(p MigProfile) error {\n\t\tprofiles = append(profiles, p)\n\t\treturn nil\n\t})\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// And cache it before returning.\n\td.migProfiles = profiles\n\treturn profiles, nil\n}\n\n// hasSymbol checks to see if the given symbol is present in the NVML library.\n// If devicelib is configured to not verify symbols, then all symbols are assumed to exist.\nfunc (d *devicelib) hasSymbol(symbol string) bool {\n\tif !*d.verifySymbols {\n\t\treturn true\n\t}\n\n\treturn d.nvmllib.Extensions().LookupSymbol(symbol) == nil\n}\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvlib/pkg/nvlib/device/identifier.go",
    "content": "/*\n * Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage device\n\nimport (\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/google/uuid\"\n)\n\n// Identifier can be used to refer to a GPU or MIG device.\n// This includes a device index or UUID.\ntype Identifier string\n\n// IsGpuIndex checks if an identifier is a full GPU index.\nfunc (i Identifier) IsGpuIndex() bool {\n\tif _, err := strconv.ParseUint(string(i), 10, 0); err != nil {\n\t\treturn false\n\t}\n\treturn true\n}\n\n// IsMigIndex checks if an identifier is a MIG index.\nfunc (i Identifier) IsMigIndex() bool {\n\tsplit := strings.Split(string(i), \":\")\n\tif len(split) != 2 {\n\t\treturn false\n\t}\n\tfor _, s := range split {\n\t\tif !Identifier(s).IsGpuIndex() {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// IsUUID checks if an identifier is a UUID.\nfunc (i Identifier) IsUUID() bool {\n\treturn i.IsGpuUUID() || i.IsMigUUID()\n}\n\n// IsGpuUUID checks if an identifier is a GPU UUID.\n// A GPU UUID must be of the form GPU-b1028956-cfa2-0990-bf4a-5da9abb51763.\nfunc (i Identifier) IsGpuUUID() bool {\n\tif !strings.HasPrefix(string(i), \"GPU-\") {\n\t\treturn false\n\t}\n\t_, err := uuid.Parse(strings.TrimPrefix(string(i), \"GPU-\"))\n\treturn err == nil\n}\n\n// IsMigUUID checks if an identifier is a MIG UUID.\n// A MIG UUID can be of one of two forms:\n//   - MIG-b1028956-cfa2-0990-bf4a-5da9abb51763\n//   - MIG-GPU-b1028956-cfa2-0990-bf4a-5da9abb51763/3/0\nfunc (i Identifier) IsMigUUID() bool {\n\tif !strings.HasPrefix(string(i), \"MIG-\") {\n\t\treturn false\n\t}\n\tsuffix := strings.TrimPrefix(string(i), \"MIG-\")\n\t_, err := uuid.Parse(suffix)\n\tif err == nil {\n\t\treturn true\n\t}\n\tsplit := strings.Split(suffix, \"/\")\n\tif len(split) != 3 {\n\t\treturn false\n\t}\n\tif !Identifier(split[0]).IsGpuUUID() {\n\t\treturn false\n\t}\n\tfor _, s := range split[1:] {\n\t\t_, err := strconv.ParseUint(s, 10, 0)\n\t\tif err != nil {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvlib/pkg/nvlib/device/mig_device.go",
    "content": "/*\n * Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage device\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/NVIDIA/go-nvml/pkg/nvml\"\n)\n\n// MigDevice defines the set of extended functions associated with a MIG device.\ntype MigDevice interface {\n\tnvml.Device\n\tGetProfile() (MigProfile, error)\n}\n\ntype migdevice struct {\n\tnvml.Device\n\tlib     *devicelib\n\tprofile MigProfile\n}\n\nvar _ MigDevice = &migdevice{}\n\n// NewMigDevice builds a new MigDevice from an nvml.Device.\nfunc (d *devicelib) NewMigDevice(handle nvml.Device) (MigDevice, error) {\n\tisMig, ret := handle.IsMigDeviceHandle()\n\tif ret != nvml.SUCCESS {\n\t\treturn nil, fmt.Errorf(\"error checking if device is a MIG device: %v\", ret)\n\t}\n\tif !isMig {\n\t\treturn nil, fmt.Errorf(\"not a MIG device\")\n\t}\n\treturn &migdevice{handle, d, nil}, nil\n}\n\n// NewMigDeviceByUUID builds a new MigDevice from a UUID.\nfunc (d *devicelib) NewMigDeviceByUUID(uuid string) (MigDevice, error) {\n\tdev, ret := d.nvmllib.DeviceGetHandleByUUID(uuid)\n\tif ret != nvml.SUCCESS {\n\t\treturn nil, fmt.Errorf(\"error getting device handle for uuid '%v': %v\", uuid, ret)\n\t}\n\treturn d.NewMigDevice(dev)\n}\n\n// GetProfile returns the MIG profile associated with a MIG device.\nfunc (m *migdevice) GetProfile() (MigProfile, error) {\n\tif m.profile != nil {\n\t\treturn m.profile, nil\n\t}\n\n\tparent, ret := m.GetDeviceHandleFromMigDeviceHandle()\n\tif ret != nvml.SUCCESS {\n\t\treturn nil, fmt.Errorf(\"error getting parent device handle: %v\", ret)\n\t}\n\n\tparentMemoryInfo, ret := parent.GetMemoryInfo()\n\tif ret != nvml.SUCCESS {\n\t\treturn nil, fmt.Errorf(\"error getting parent memory info: %v\", ret)\n\t}\n\n\tattributes, ret := m.GetAttributes()\n\tif ret != nvml.SUCCESS {\n\t\treturn nil, fmt.Errorf(\"error getting MIG device attributes: %v\", ret)\n\t}\n\n\tgiID, ret := m.GetGpuInstanceId()\n\tif ret != nvml.SUCCESS {\n\t\treturn nil, fmt.Errorf(\"error getting MIG device GPU Instance ID: %v\", ret)\n\t}\n\n\tciID, ret := m.GetComputeInstanceId()\n\tif ret != nvml.SUCCESS {\n\t\treturn nil, fmt.Errorf(\"error getting MIG device Compute Instance ID: %v\", ret)\n\t}\n\n\tgi, ret := parent.GetGpuInstanceById(giID)\n\tif ret != nvml.SUCCESS {\n\t\treturn nil, fmt.Errorf(\"error getting GPU Instance: %v\", ret)\n\t}\n\n\tci, ret := gi.GetComputeInstanceById(ciID)\n\tif ret != nvml.SUCCESS {\n\t\treturn nil, fmt.Errorf(\"error getting Compute Instance: %v\", ret)\n\t}\n\n\tgiInfo, ret := gi.GetInfo()\n\tif ret != nvml.SUCCESS {\n\t\treturn nil, fmt.Errorf(\"error getting GPU Instance info: %v\", ret)\n\t}\n\n\tciInfo, ret := ci.GetInfo()\n\tif ret != nvml.SUCCESS {\n\t\treturn nil, fmt.Errorf(\"error getting Compute Instance info: %v\", ret)\n\t}\n\n\tfor i := 0; i < nvml.GPU_INSTANCE_PROFILE_COUNT; i++ {\n\t\tgiProfileInfo, ret := parent.GetGpuInstanceProfileInfo(i)\n\t\tif ret == nvml.ERROR_NOT_SUPPORTED {\n\t\t\tcontinue\n\t\t}\n\t\tif ret == nvml.ERROR_INVALID_ARGUMENT {\n\t\t\tcontinue\n\t\t}\n\t\tif ret != nvml.SUCCESS {\n\t\t\treturn nil, fmt.Errorf(\"error getting GPU Instance profile info: %v\", ret)\n\t\t}\n\n\t\tif giProfileInfo.Id != giInfo.ProfileId {\n\t\t\tcontinue\n\t\t}\n\n\t\tfor j := 0; j < nvml.COMPUTE_INSTANCE_PROFILE_COUNT; j++ {\n\t\t\tfor k := 0; k < nvml.COMPUTE_INSTANCE_ENGINE_PROFILE_COUNT; k++ {\n\t\t\t\tciProfileInfo, ret := gi.GetComputeInstanceProfileInfo(j, k)\n\t\t\t\tif ret == nvml.ERROR_NOT_SUPPORTED {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif ret == nvml.ERROR_INVALID_ARGUMENT {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif ret != nvml.SUCCESS {\n\t\t\t\t\treturn nil, fmt.Errorf(\"error getting Compute Instance profile info: %v\", ret)\n\n\t\t\t\t}\n\n\t\t\t\tif ciProfileInfo.Id != ciInfo.ProfileId {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tp, err := m.lib.NewMigProfile(i, j, k, attributes.MemorySizeMB, parentMemoryInfo.Total)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, fmt.Errorf(\"error creating MIG profile: %v\", err)\n\t\t\t\t}\n\n\t\t\t\tm.profile = p\n\t\t\t\treturn p, nil\n\t\t\t}\n\t\t}\n\t}\n\n\treturn nil, fmt.Errorf(\"no matching profile IDs found\")\n}\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvlib/pkg/nvlib/device/mig_profile.go",
    "content": "/*\n * Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage device\n\nimport (\n\t\"fmt\"\n\t\"math\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/NVIDIA/go-nvml/pkg/nvml\"\n)\n\nconst (\n\t// AttributeMediaExtensions holds the string representation for the media extension MIG profile attribute.\n\tAttributeMediaExtensions    = \"me\"\n\tAttributeMediaExtensionsAll = \"me.all\"\n\tAttributeGraphics           = \"gfx\"\n)\n\n// MigProfile represents a specific MIG profile.\n// Examples include \"1g.5gb\", \"2g.10gb\", \"1c.2g.10gb\", or \"1c.1g.5gb+me\", etc.\ntype MigProfile interface {\n\tString() string\n\tGetInfo() MigProfileInfo\n\tEquals(other MigProfile) bool\n\tMatches(profile string) bool\n}\n\n// MigProfileInfo holds all info associated with a specific MIG profile.\ntype MigProfileInfo struct {\n\tC              int\n\tG              int\n\tGB             int\n\tAttributes     []string\n\tNegAttributes  []string\n\tGIProfileID    int\n\tCIProfileID    int\n\tCIEngProfileID int\n}\n\nvar _ MigProfile = &MigProfileInfo{}\n\n// NewProfile constructs a new Profile struct using info from the giProfiles and ciProfiles used to create it.\nfunc (d *devicelib) NewMigProfile(giProfileID, ciProfileID, ciEngProfileID int, migMemorySizeMB, deviceMemorySizeBytes uint64) (MigProfile, error) {\n\tgiSlices := 0\n\tswitch giProfileID {\n\tcase nvml.GPU_INSTANCE_PROFILE_1_SLICE,\n\t\tnvml.GPU_INSTANCE_PROFILE_1_SLICE_REV1,\n\t\tnvml.GPU_INSTANCE_PROFILE_1_SLICE_REV2,\n\t\tnvml.GPU_INSTANCE_PROFILE_1_SLICE_GFX,\n\t\tnvml.GPU_INSTANCE_PROFILE_1_SLICE_NO_ME,\n\t\tnvml.GPU_INSTANCE_PROFILE_1_SLICE_ALL_ME:\n\t\tgiSlices = 1\n\tcase nvml.GPU_INSTANCE_PROFILE_2_SLICE,\n\t\tnvml.GPU_INSTANCE_PROFILE_2_SLICE_REV1,\n\t\tnvml.GPU_INSTANCE_PROFILE_2_SLICE_GFX,\n\t\tnvml.GPU_INSTANCE_PROFILE_2_SLICE_NO_ME,\n\t\tnvml.GPU_INSTANCE_PROFILE_2_SLICE_ALL_ME:\n\t\tgiSlices = 2\n\tcase nvml.GPU_INSTANCE_PROFILE_3_SLICE:\n\t\tgiSlices = 3\n\tcase nvml.GPU_INSTANCE_PROFILE_4_SLICE,\n\t\tnvml.GPU_INSTANCE_PROFILE_4_SLICE_GFX:\n\t\tgiSlices = 4\n\tcase nvml.GPU_INSTANCE_PROFILE_6_SLICE:\n\t\tgiSlices = 6\n\tcase nvml.GPU_INSTANCE_PROFILE_7_SLICE:\n\t\tgiSlices = 7\n\tcase nvml.GPU_INSTANCE_PROFILE_8_SLICE:\n\t\tgiSlices = 8\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"invalid GPU Instance Profile ID: %v\", giProfileID)\n\t}\n\n\tciSlices := 0\n\tswitch ciProfileID {\n\tcase nvml.COMPUTE_INSTANCE_PROFILE_1_SLICE,\n\t\tnvml.COMPUTE_INSTANCE_PROFILE_1_SLICE_REV1:\n\t\tciSlices = 1\n\tcase nvml.COMPUTE_INSTANCE_PROFILE_2_SLICE:\n\t\tciSlices = 2\n\tcase nvml.COMPUTE_INSTANCE_PROFILE_3_SLICE:\n\t\tciSlices = 3\n\tcase nvml.COMPUTE_INSTANCE_PROFILE_4_SLICE:\n\t\tciSlices = 4\n\tcase nvml.COMPUTE_INSTANCE_PROFILE_6_SLICE:\n\t\tciSlices = 6\n\tcase nvml.COMPUTE_INSTANCE_PROFILE_7_SLICE:\n\t\tciSlices = 7\n\tcase nvml.COMPUTE_INSTANCE_PROFILE_8_SLICE:\n\t\tciSlices = 8\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"invalid Compute Instance Profile ID: %v\", ciProfileID)\n\t}\n\n\tvar attrs []string\n\tswitch giProfileID {\n\tcase nvml.GPU_INSTANCE_PROFILE_1_SLICE_REV1,\n\t\tnvml.GPU_INSTANCE_PROFILE_2_SLICE_REV1:\n\t\tattrs = append(attrs, AttributeMediaExtensions)\n\tcase nvml.GPU_INSTANCE_PROFILE_1_SLICE_ALL_ME,\n\t\tnvml.GPU_INSTANCE_PROFILE_2_SLICE_ALL_ME:\n\t\tattrs = append(attrs, AttributeMediaExtensionsAll)\n\tcase nvml.GPU_INSTANCE_PROFILE_1_SLICE_GFX,\n\t\tnvml.GPU_INSTANCE_PROFILE_2_SLICE_GFX,\n\t\tnvml.GPU_INSTANCE_PROFILE_4_SLICE_GFX:\n\t\tattrs = append(attrs, AttributeGraphics)\n\t}\n\tvar negAttrs []string\n\tswitch giProfileID {\n\tcase nvml.GPU_INSTANCE_PROFILE_1_SLICE_NO_ME,\n\t\tnvml.GPU_INSTANCE_PROFILE_2_SLICE_NO_ME:\n\t\tnegAttrs = append(negAttrs, AttributeMediaExtensions)\n\t}\n\n\tp := &MigProfileInfo{\n\t\tC:              ciSlices,\n\t\tG:              giSlices,\n\t\tGB:             int(getMigMemorySizeGB(deviceMemorySizeBytes, migMemorySizeMB)),\n\t\tAttributes:     attrs,\n\t\tNegAttributes:  negAttrs,\n\t\tGIProfileID:    giProfileID,\n\t\tCIProfileID:    ciProfileID,\n\t\tCIEngProfileID: ciEngProfileID,\n\t}\n\n\treturn p, nil\n}\n\n// AssertValidMigProfileFormat checks if the string is in the proper format to represent a MIG profile.\nfunc (d *devicelib) AssertValidMigProfileFormat(profile string) error {\n\t_, err := parseMigProfile(profile)\n\treturn err\n}\n\n// ParseMigProfile converts a string representation of a MigProfile into an object.\nfunc (d *devicelib) ParseMigProfile(profile string) (MigProfile, error) {\n\tprofiles, err := d.GetMigProfiles()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error getting list of possible MIG profiles: %v\", err)\n\t}\n\n\tfor _, p := range profiles {\n\t\tif p.Matches(profile) {\n\t\t\treturn p, nil\n\t\t}\n\t}\n\n\treturn nil, fmt.Errorf(\"unable to parse profile string into a valid profile\")\n}\n\n// String returns the string representation of a Profile.\nfunc (p MigProfileInfo) String() string {\n\tvar suffix string\n\tif len(p.Attributes) > 0 {\n\t\tsuffix = \"+\" + strings.Join(p.Attributes, \",\")\n\t}\n\tif len(p.NegAttributes) > 0 {\n\t\tsuffix = \"-\" + strings.Join(p.NegAttributes, \",\")\n\t}\n\tif p.C == p.G {\n\t\treturn fmt.Sprintf(\"%dg.%dgb%s\", p.G, p.GB, suffix)\n\t}\n\treturn fmt.Sprintf(\"%dc.%dg.%dgb%s\", p.C, p.G, p.GB, suffix)\n}\n\n// GetInfo returns detailed info about a Profile.\nfunc (p MigProfileInfo) GetInfo() MigProfileInfo {\n\treturn p\n}\n\n// Equals checks if two Profiles are identical or not.\nfunc (p MigProfileInfo) Equals(other MigProfile) bool {\n\to := other.GetInfo()\n\tif p.C != o.C {\n\t\treturn false\n\t}\n\tif p.G != o.G {\n\t\treturn false\n\t}\n\tif p.GB != o.GB {\n\t\treturn false\n\t}\n\tif p.GIProfileID != o.GIProfileID {\n\t\treturn false\n\t}\n\tif p.CIProfileID != o.CIProfileID {\n\t\treturn false\n\t}\n\tif p.CIEngProfileID != o.CIEngProfileID {\n\t\treturn false\n\t}\n\treturn true\n}\n\n// Matches checks if a MigProfile matches the string passed in.\nfunc (p MigProfileInfo) Matches(profile string) bool {\n\tmigProfileInfo, err := parseMigProfile(profile)\n\tif err != nil {\n\t\treturn false\n\t}\n\tif migProfileInfo.C != p.C {\n\t\treturn false\n\t}\n\tif migProfileInfo.G != p.G {\n\t\treturn false\n\t}\n\tif migProfileInfo.GB != p.GB {\n\t\treturn false\n\t}\n\tif !matchAttributes(migProfileInfo.Attributes, p.Attributes) {\n\t\treturn false\n\t}\n\tif !matchAttributes(migProfileInfo.NegAttributes, p.NegAttributes) {\n\t\treturn false\n\t}\n\treturn true\n}\n\nfunc matchAttributes(attrs1, attrs2 []string) bool {\n\tif len(attrs1) != len(attrs2) {\n\t\treturn false\n\t}\n\tsort.Strings(attrs1)\n\tsort.Strings(attrs2)\n\tfor i, a := range attrs2 {\n\t\tif a != attrs1[i] {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\nfunc parseMigProfile(profile string) (*MigProfileInfo, error) {\n\t// If we are handed the empty string, we cannot parse it.\n\tif profile == \"\" {\n\t\treturn nil, fmt.Errorf(\"profile is the empty string\")\n\t}\n\n\t// Split by +/- to separate out attributes.\n\tsplit := strings.SplitN(profile, \"+\", 2)\n\tnegsplit := strings.SplitN(profile, \"-\", 2)\n\t// Make sure we don't get both positive and negative attributes.\n\tif len(split) == 2 && len(negsplit) == 2 {\n\t\treturn nil, fmt.Errorf(\"profile '%v' contains both '+/-' attributes\", profile)\n\t}\n\n\tif len(split) == 1 {\n\t\tsplit = negsplit\n\t}\n\n\t// Check to make sure the c, g, and gb values match.\n\tc, g, gb, err := parseMigProfileFields(split[0])\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"cannot parse fields of '%v': %v\", profile, err)\n\t}\n\n\tmigProfileInfo := &MigProfileInfo{\n\t\tC:  c,\n\t\tG:  g,\n\t\tGB: gb,\n\t}\n\t// If we have no attributes we are done.\n\tif len(split) == 1 {\n\t\treturn migProfileInfo, nil\n\t}\n\n\t// Make sure we have the same set of attributes.\n\tattrs, err := parseMigProfileAttributes(split[1])\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"cannot parse attributes of '%v': %v\", profile, err)\n\t}\n\n\tif len(negsplit) == 2 {\n\t\tmigProfileInfo.NegAttributes = attrs\n\t\treturn migProfileInfo, nil\n\t}\n\n\tmigProfileInfo.Attributes = attrs\n\treturn migProfileInfo, nil\n}\n\nfunc parseMigProfileField(s string, field string) (int, error) {\n\tif strings.TrimSpace(s) != s {\n\t\treturn -1, fmt.Errorf(\"leading or trailing spaces on '%%d%s'\", field)\n\t}\n\n\tif !strings.HasSuffix(s, field) {\n\t\treturn -1, fmt.Errorf(\"missing '%s' from '%%d%s'\", field, field)\n\t}\n\n\tv, err := strconv.Atoi(strings.TrimSuffix(s, field))\n\tif err != nil {\n\t\treturn -1, fmt.Errorf(\"malformed number in '%%d%s'\", field)\n\t}\n\n\treturn v, nil\n}\n\nfunc parseMigProfileFields(s string) (int, int, int, error) {\n\tvar err error\n\tvar c, g, gb int\n\n\tsplit := strings.SplitN(s, \".\", 3)\n\tif len(split) == 3 {\n\t\tc, err = parseMigProfileField(split[0], \"c\")\n\t\tif err != nil {\n\t\t\treturn -1, -1, -1, err\n\t\t}\n\t\tg, err = parseMigProfileField(split[1], \"g\")\n\t\tif err != nil {\n\t\t\treturn -1, -1, -1, err\n\t\t}\n\t\tgb, err = parseMigProfileField(split[2], \"gb\")\n\t\tif err != nil {\n\t\t\treturn -1, -1, -1, err\n\t\t}\n\t\treturn c, g, gb, err\n\t}\n\tif len(split) == 2 {\n\t\tg, err = parseMigProfileField(split[0], \"g\")\n\t\tif err != nil {\n\t\t\treturn -1, -1, -1, err\n\t\t}\n\t\tgb, err = parseMigProfileField(split[1], \"gb\")\n\t\tif err != nil {\n\t\t\treturn -1, -1, -1, err\n\t\t}\n\t\treturn g, g, gb, nil\n\t}\n\n\treturn -1, -1, -1, fmt.Errorf(\"parsed wrong number of fields, expected 2 or 3\")\n}\n\nfunc parseMigProfileAttributes(s string) ([]string, error) {\n\tattr := strings.Split(s, \",\")\n\tif len(attr) == 0 {\n\t\treturn nil, fmt.Errorf(\"empty attribute list\")\n\t}\n\tunique := make(map[string]int)\n\tfor _, a := range attr {\n\t\tif unique[a] > 0 {\n\t\t\treturn nil, fmt.Errorf(\"non unique attribute in list\")\n\t\t}\n\t\tif a == \"\" {\n\t\t\treturn nil, fmt.Errorf(\"empty attribute in list\")\n\t\t}\n\t\tif strings.TrimSpace(a) != a {\n\t\t\treturn nil, fmt.Errorf(\"leading or trailing spaces in attribute\")\n\t\t}\n\t\tif a[0] >= '0' && a[0] <= '9' {\n\t\t\treturn nil, fmt.Errorf(\"attribute begins with a number\")\n\t\t}\n\t\tif a[0] == '.' || a[len(a)-1] == '.' {\n\t\t\treturn nil, fmt.Errorf(\"attribute begins/ends with a dot\")\n\t\t}\n\t\tfor _, c := range a {\n\t\t\tif (c < 'a' || c > 'z') && (c < 'A' || c > 'Z') && (c < '0' || c > '9') && c != '.' {\n\t\t\t\treturn nil, fmt.Errorf(\"non alpha-numeric character or digit in attribute\")\n\t\t\t}\n\t\t}\n\t\tunique[a]++\n\t}\n\treturn attr, nil\n}\n\nfunc getMigMemorySizeGB(totalDeviceMemory, migMemorySizeMB uint64) uint64 {\n\tconst fracDenominator = 8\n\tconst oneMB = 1024 * 1024\n\tconst oneGB = 1024 * 1024 * 1024\n\tfractionalGpuMem := (float64(migMemorySizeMB) * oneMB) / float64(totalDeviceMemory)\n\tfractionalGpuMem = math.Ceil(fractionalGpuMem*fracDenominator) / fracDenominator\n\ttotalMemGB := float64((totalDeviceMemory + oneGB - 1) / oneGB)\n\treturn uint64(math.Round(fractionalGpuMem * totalMemGB))\n}\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvlib/pkg/nvlib/info/api.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage info\n\n// Interface provides the API to the info package.\ntype Interface interface {\n\tPlatformResolver\n\tPropertyExtractor\n}\n\n// PlatformResolver defines a function to resolve the current platform.\ntype PlatformResolver interface {\n\tResolvePlatform() Platform\n}\n\n// PropertyExtractor provides a set of functions to query capabilities of the\n// system.\n//\n//go:generate moq  -rm -fmt=goimports -out property-extractor_mock.go . PropertyExtractor\ntype PropertyExtractor interface {\n\tHasDXCore() (bool, string)\n\tHasNvml() (bool, string)\n\tHasTegraFiles() (bool, string)\n\tHasAnIntegratedGPU() (bool, string)\n}\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvlib/pkg/nvlib/info/builder.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage info\n\nimport (\n\t\"github.com/NVIDIA/go-nvml/pkg/nvml\"\n\n\t\"github.com/NVIDIA/go-nvlib/pkg/nvlib/device\"\n)\n\ntype infolib struct {\n\tPropertyExtractor\n\tPlatformResolver\n}\n\ntype options struct {\n\tlogger    basicLogger\n\troot      root\n\tnvmllib   nvml.Interface\n\tdevicelib device.Interface\n\n\tplatform          Platform\n\tpropertyExtractor PropertyExtractor\n}\n\n// New creates a new instance of the 'info' interface.\nfunc New(opts ...Option) Interface {\n\to := &options{}\n\tfor _, opt := range opts {\n\t\topt(o)\n\t}\n\tif o.logger == nil {\n\t\to.logger = &nullLogger{}\n\t}\n\tif o.root == \"\" {\n\t\to.root = \"/\"\n\t}\n\tif o.nvmllib == nil {\n\t\to.nvmllib = nvml.New(\n\t\t\tnvml.WithLibraryPath(o.root.tryResolveLibrary(\"libnvidia-ml.so.1\")),\n\t\t)\n\t}\n\tif o.devicelib == nil {\n\t\to.devicelib = device.New(o.nvmllib)\n\t}\n\tif o.platform == \"\" {\n\t\to.platform = PlatformAuto\n\t}\n\tif o.propertyExtractor == nil {\n\t\to.propertyExtractor = &propertyExtractor{\n\t\t\troot:      o.root,\n\t\t\tnvmllib:   o.nvmllib,\n\t\t\tdevicelib: o.devicelib,\n\t\t}\n\t}\n\treturn &infolib{\n\t\tPlatformResolver: &platformResolver{\n\t\t\tlogger:            o.logger,\n\t\t\tplatform:          o.platform,\n\t\t\tpropertyExtractor: o.propertyExtractor,\n\t\t},\n\t\tPropertyExtractor: o.propertyExtractor,\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvlib/pkg/nvlib/info/logger.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage info\n\ntype basicLogger interface {\n\tDebugf(string, ...interface{})\n\tInfof(string, ...interface{})\n}\n\ntype nullLogger struct{}\n\nfunc (n *nullLogger) Debugf(string, ...interface{}) {}\n\nfunc (n *nullLogger) Infof(string, ...interface{}) {}\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvlib/pkg/nvlib/info/options.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage info\n\nimport (\n\t\"github.com/NVIDIA/go-nvml/pkg/nvml\"\n\n\t\"github.com/NVIDIA/go-nvlib/pkg/nvlib/device\"\n)\n\n// Option defines a function for passing options to the New() call.\ntype Option func(*options)\n\n// WithDeviceLib sets the device library for the library.\nfunc WithDeviceLib(devicelib device.Interface) Option {\n\treturn func(i *options) {\n\t\ti.devicelib = devicelib\n\t}\n}\n\n// WithLogger sets the logger for the library.\nfunc WithLogger(logger basicLogger) Option {\n\treturn func(i *options) {\n\t\ti.logger = logger\n\t}\n}\n\n// WithNvmlLib sets the nvml library for the library.\nfunc WithNvmlLib(nvmllib nvml.Interface) Option {\n\treturn func(i *options) {\n\t\ti.nvmllib = nvmllib\n\t}\n}\n\n// WithRoot provides a Option to set the root of the 'info' interface.\nfunc WithRoot(r string) Option {\n\treturn func(i *options) {\n\t\ti.root = root(r)\n\t}\n}\n\n// WithPropertyExtractor provides an Option to set the PropertyExtractor\n// interface implementation.\n// This is predominantly used for testing.\nfunc WithPropertyExtractor(propertyExtractor PropertyExtractor) Option {\n\treturn func(i *options) {\n\t\ti.propertyExtractor = propertyExtractor\n\t}\n}\n\n// WithPlatform provides an option to set the platform explicitly.\nfunc WithPlatform(platform Platform) Option {\n\treturn func(i *options) {\n\t\ti.platform = platform\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvlib/pkg/nvlib/info/property-extractor.go",
    "content": "/**\n# Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage info\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"strings\"\n\n\t\"github.com/NVIDIA/go-nvml/pkg/nvml\"\n\n\t\"github.com/NVIDIA/go-nvlib/pkg/nvlib/device\"\n)\n\ntype propertyExtractor struct {\n\troot      root\n\tnvmllib   nvml.Interface\n\tdevicelib device.Interface\n}\n\nvar _ PropertyExtractor = &propertyExtractor{}\n\n// HasDXCore returns true if DXCore is detected on the system.\nfunc (i *propertyExtractor) HasDXCore() (bool, string) {\n\tconst (\n\t\tlibraryName = \"libdxcore.so\"\n\t)\n\tif err := i.root.assertHasLibrary(libraryName); err != nil {\n\t\treturn false, fmt.Sprintf(\"could not load DXCore library: %v\", err)\n\t}\n\n\treturn true, \"found DXCore library\"\n}\n\n// HasNvml returns true if NVML is detected on the system.\nfunc (i *propertyExtractor) HasNvml() (bool, string) {\n\tconst (\n\t\tlibraryName = \"libnvidia-ml.so.1\"\n\t)\n\tif err := i.root.assertHasLibrary(libraryName); err != nil {\n\t\treturn false, fmt.Sprintf(\"could not load NVML library: %v\", err)\n\t}\n\n\treturn true, \"found NVML library\"\n}\n\n// IsTegraSystem returns true if the system is detected as a Tegra-based system.\n//\n// Deprecated: Use HasTegraFiles instead.\nfunc (i *propertyExtractor) IsTegraSystem() (bool, string) {\n\treturn i.HasTegraFiles()\n}\n\n// HasTegraFiles returns true if tegra-based files are detected on the system.\nfunc (i *propertyExtractor) HasTegraFiles() (bool, string) {\n\ttegraReleaseFile := i.root.join(\"/etc/nv_tegra_release\")\n\ttegraFamilyFile := i.root.join(\"/sys/devices/soc0/family\")\n\n\tif info, err := os.Stat(tegraReleaseFile); err == nil && !info.IsDir() {\n\t\treturn true, fmt.Sprintf(\"%v found\", tegraReleaseFile)\n\t}\n\n\tif info, err := os.Stat(tegraFamilyFile); err != nil || info.IsDir() {\n\t\treturn false, fmt.Sprintf(\"%v file not found\", tegraFamilyFile)\n\t}\n\n\tcontents, err := os.ReadFile(tegraFamilyFile)\n\tif err != nil {\n\t\treturn false, fmt.Sprintf(\"could not read %v\", tegraFamilyFile)\n\t}\n\n\tif strings.HasPrefix(strings.ToLower(string(contents)), \"tegra\") {\n\t\treturn true, fmt.Sprintf(\"%v has 'tegra' prefix\", tegraFamilyFile)\n\t}\n\n\treturn false, fmt.Sprintf(\"%v has no 'tegra' prefix\", tegraFamilyFile)\n}\n\n// HasAnIntegratedGPU checks whether any of the GPUs reported by NVML is an\n// integrated GPU.\n//\n// As of Orin-based systems iGPUs also support limited NVML queries.\n// In the absence of a robust API, we rely on heuristics based on the device\n// name to make this decision.\n//\n// Devices with the following names are considered integrated GPUs:\n//\n//\tGPU 0: Orin (nvgpu) (UUID: 54d0709b-558d-5a59-9c65-0c5fc14a21a4)\n//\tGPU 0: NVIDIA Thor  (UUID: 54d0709b-558d-5a59-9c65-0c5fc14a21a4)\n//\n// (Where this shows the nvidia-smi -L output on these systems).\nfunc (i *propertyExtractor) HasAnIntegratedGPU() (uses bool, reason string) {\n\t// We ensure that this function never panics\n\tdefer func() {\n\t\tif err := recover(); err != nil {\n\t\t\tuses = false\n\t\t\treason = fmt.Sprintf(\"panic: %v\", err)\n\t\t}\n\t}()\n\n\tret := i.nvmllib.Init()\n\tif ret != nvml.SUCCESS {\n\t\treturn false, fmt.Sprintf(\"failed to initialize nvml: %v\", ret)\n\t}\n\tdefer func() {\n\t\t_ = i.nvmllib.Shutdown()\n\t}()\n\n\tvar names []string\n\n\terr := i.devicelib.VisitDevices(func(i int, d device.Device) error {\n\t\tname, ret := d.GetName()\n\t\tif ret != nvml.SUCCESS {\n\t\t\treturn fmt.Errorf(\"device %v: %v\", i, ret)\n\t\t}\n\t\tnames = append(names, name)\n\t\treturn nil\n\t})\n\tif err != nil {\n\t\treturn false, fmt.Sprintf(\"failed to get device names: %v\", err)\n\t}\n\n\tif len(names) == 0 {\n\t\treturn false, \"no devices found\"\n\t}\n\n\tfor _, name := range names {\n\t\tif IsIntegratedGPUName(name) {\n\t\t\treturn true, fmt.Sprintf(\"device %q is an integrated GPU\", name)\n\t\t}\n\t}\n\treturn false, \"no integrated GPUs found\"\n}\n\n// IsIntegratedGPUName checks whether the specified device name is associated\n// with a known integrated GPU.\n//\n// Devices with the following names are considered integrated GPUs:\n//\n//\tGPU 0: Orin (nvgpu) (UUID: 54d0709b-558d-5a59-9c65-0c5fc14a21a4)\n//\tGPU 0: NVIDIA Thor  (UUID: 54d0709b-558d-5a59-9c65-0c5fc14a21a4)\n//\n// (Where this shows the nvidia-smi -L output on these systems).\nfunc IsIntegratedGPUName(name string) bool {\n\tif strings.Contains(name, \"(nvgpu)\") {\n\t\treturn true\n\t}\n\tif strings.Contains(name, \"NVIDIA Thor\") {\n\t\treturn true\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvlib/pkg/nvlib/info/property-extractor_mock.go",
    "content": "// Code generated by moq; DO NOT EDIT.\n// github.com/matryer/moq\n\npackage info\n\nimport (\n\t\"sync\"\n)\n\n// Ensure, that PropertyExtractorMock does implement PropertyExtractor.\n// If this is not the case, regenerate this file with moq.\nvar _ PropertyExtractor = &PropertyExtractorMock{}\n\n// PropertyExtractorMock is a mock implementation of PropertyExtractor.\n//\n//\tfunc TestSomethingThatUsesPropertyExtractor(t *testing.T) {\n//\n//\t\t// make and configure a mocked PropertyExtractor\n//\t\tmockedPropertyExtractor := &PropertyExtractorMock{\n//\t\t\tHasAnIntegratedGPUFunc: func() (bool, string) {\n//\t\t\t\tpanic(\"mock out the HasAnIntegratedGPU method\")\n//\t\t\t},\n//\t\t\tHasDXCoreFunc: func() (bool, string) {\n//\t\t\t\tpanic(\"mock out the HasDXCore method\")\n//\t\t\t},\n//\t\t\tHasNvmlFunc: func() (bool, string) {\n//\t\t\t\tpanic(\"mock out the HasNvml method\")\n//\t\t\t},\n//\t\t\tHasTegraFilesFunc: func() (bool, string) {\n//\t\t\t\tpanic(\"mock out the HasTegraFiles method\")\n//\t\t\t},\n//\t\t}\n//\n//\t\t// use mockedPropertyExtractor in code that requires PropertyExtractor\n//\t\t// and then make assertions.\n//\n//\t}\ntype PropertyExtractorMock struct {\n\t// HasAnIntegratedGPUFunc mocks the HasAnIntegratedGPU method.\n\tHasAnIntegratedGPUFunc func() (bool, string)\n\n\t// HasDXCoreFunc mocks the HasDXCore method.\n\tHasDXCoreFunc func() (bool, string)\n\n\t// HasNvmlFunc mocks the HasNvml method.\n\tHasNvmlFunc func() (bool, string)\n\n\t// HasTegraFilesFunc mocks the HasTegraFiles method.\n\tHasTegraFilesFunc func() (bool, string)\n\n\t// calls tracks calls to the methods.\n\tcalls struct {\n\t\t// HasAnIntegratedGPU holds details about calls to the HasAnIntegratedGPU method.\n\t\tHasAnIntegratedGPU []struct {\n\t\t}\n\t\t// HasDXCore holds details about calls to the HasDXCore method.\n\t\tHasDXCore []struct {\n\t\t}\n\t\t// HasNvml holds details about calls to the HasNvml method.\n\t\tHasNvml []struct {\n\t\t}\n\t\t// HasTegraFiles holds details about calls to the HasTegraFiles method.\n\t\tHasTegraFiles []struct {\n\t\t}\n\t}\n\tlockHasAnIntegratedGPU sync.RWMutex\n\tlockHasDXCore          sync.RWMutex\n\tlockHasNvml            sync.RWMutex\n\tlockHasTegraFiles      sync.RWMutex\n}\n\n// HasAnIntegratedGPU calls HasAnIntegratedGPUFunc.\nfunc (mock *PropertyExtractorMock) HasAnIntegratedGPU() (bool, string) {\n\tif mock.HasAnIntegratedGPUFunc == nil {\n\t\tpanic(\"PropertyExtractorMock.HasAnIntegratedGPUFunc: method is nil but PropertyExtractor.HasAnIntegratedGPU was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockHasAnIntegratedGPU.Lock()\n\tmock.calls.HasAnIntegratedGPU = append(mock.calls.HasAnIntegratedGPU, callInfo)\n\tmock.lockHasAnIntegratedGPU.Unlock()\n\treturn mock.HasAnIntegratedGPUFunc()\n}\n\n// HasAnIntegratedGPUCalls gets all the calls that were made to HasAnIntegratedGPU.\n// Check the length with:\n//\n//\tlen(mockedPropertyExtractor.HasAnIntegratedGPUCalls())\nfunc (mock *PropertyExtractorMock) HasAnIntegratedGPUCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockHasAnIntegratedGPU.RLock()\n\tcalls = mock.calls.HasAnIntegratedGPU\n\tmock.lockHasAnIntegratedGPU.RUnlock()\n\treturn calls\n}\n\n// HasDXCore calls HasDXCoreFunc.\nfunc (mock *PropertyExtractorMock) HasDXCore() (bool, string) {\n\tif mock.HasDXCoreFunc == nil {\n\t\tpanic(\"PropertyExtractorMock.HasDXCoreFunc: method is nil but PropertyExtractor.HasDXCore was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockHasDXCore.Lock()\n\tmock.calls.HasDXCore = append(mock.calls.HasDXCore, callInfo)\n\tmock.lockHasDXCore.Unlock()\n\treturn mock.HasDXCoreFunc()\n}\n\n// HasDXCoreCalls gets all the calls that were made to HasDXCore.\n// Check the length with:\n//\n//\tlen(mockedPropertyExtractor.HasDXCoreCalls())\nfunc (mock *PropertyExtractorMock) HasDXCoreCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockHasDXCore.RLock()\n\tcalls = mock.calls.HasDXCore\n\tmock.lockHasDXCore.RUnlock()\n\treturn calls\n}\n\n// HasNvml calls HasNvmlFunc.\nfunc (mock *PropertyExtractorMock) HasNvml() (bool, string) {\n\tif mock.HasNvmlFunc == nil {\n\t\tpanic(\"PropertyExtractorMock.HasNvmlFunc: method is nil but PropertyExtractor.HasNvml was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockHasNvml.Lock()\n\tmock.calls.HasNvml = append(mock.calls.HasNvml, callInfo)\n\tmock.lockHasNvml.Unlock()\n\treturn mock.HasNvmlFunc()\n}\n\n// HasNvmlCalls gets all the calls that were made to HasNvml.\n// Check the length with:\n//\n//\tlen(mockedPropertyExtractor.HasNvmlCalls())\nfunc (mock *PropertyExtractorMock) HasNvmlCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockHasNvml.RLock()\n\tcalls = mock.calls.HasNvml\n\tmock.lockHasNvml.RUnlock()\n\treturn calls\n}\n\n// HasTegraFiles calls HasTegraFilesFunc.\nfunc (mock *PropertyExtractorMock) HasTegraFiles() (bool, string) {\n\tif mock.HasTegraFilesFunc == nil {\n\t\tpanic(\"PropertyExtractorMock.HasTegraFilesFunc: method is nil but PropertyExtractor.HasTegraFiles was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockHasTegraFiles.Lock()\n\tmock.calls.HasTegraFiles = append(mock.calls.HasTegraFiles, callInfo)\n\tmock.lockHasTegraFiles.Unlock()\n\treturn mock.HasTegraFilesFunc()\n}\n\n// HasTegraFilesCalls gets all the calls that were made to HasTegraFiles.\n// Check the length with:\n//\n//\tlen(mockedPropertyExtractor.HasTegraFilesCalls())\nfunc (mock *PropertyExtractorMock) HasTegraFilesCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockHasTegraFiles.RLock()\n\tcalls = mock.calls.HasTegraFiles\n\tmock.lockHasTegraFiles.RUnlock()\n\treturn calls\n}\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvlib/pkg/nvlib/info/resolver.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage info\n\n// Platform represents a supported plaform.\ntype Platform string\n\nconst (\n\tPlatformAuto    = Platform(\"auto\")\n\tPlatformNVML    = Platform(\"nvml\")\n\tPlatformTegra   = Platform(\"tegra\")\n\tPlatformWSL     = Platform(\"wsl\")\n\tPlatformUnknown = Platform(\"unknown\")\n)\n\ntype platformResolver struct {\n\tlogger            basicLogger\n\tplatform          Platform\n\tpropertyExtractor PropertyExtractor\n}\n\nfunc (p platformResolver) ResolvePlatform() Platform {\n\tif p.platform != PlatformAuto {\n\t\tp.logger.Infof(\"Using requested platform '%s'\", p.platform)\n\t\treturn p.platform\n\t}\n\n\thasDXCore, reason := p.propertyExtractor.HasDXCore()\n\tp.logger.Debugf(\"Is WSL-based system? %v: %v\", hasDXCore, reason)\n\n\thasTegraFiles, reason := p.propertyExtractor.HasTegraFiles()\n\tp.logger.Debugf(\"Is Tegra-based system? %v: %v\", hasTegraFiles, reason)\n\n\thasNVML, reason := p.propertyExtractor.HasNvml()\n\tp.logger.Debugf(\"Is NVML-based system? %v: %v\", hasNVML, reason)\n\n\thasAnIntegratedGPU, reason := p.propertyExtractor.HasAnIntegratedGPU()\n\tp.logger.Debugf(\"Has an integrated GPU? %v: %v\", hasAnIntegratedGPU, reason)\n\n\tswitch {\n\tcase hasDXCore:\n\t\treturn PlatformWSL\n\tcase (hasTegraFiles && !hasNVML), hasAnIntegratedGPU:\n\t\treturn PlatformTegra\n\tcase hasNVML:\n\t\treturn PlatformNVML\n\tdefault:\n\t\treturn PlatformUnknown\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvlib/pkg/nvlib/info/root.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage info\n\nimport (\n\t\"fmt\"\n\t\"path/filepath\"\n\n\t\"github.com/NVIDIA/go-nvml/pkg/dl\"\n)\n\n// root represents a directory on the filesystem relative to which libraries\n// such as the NVIDIA driver libraries can be found.\ntype root string\n\nfunc (r root) join(parts ...string) string {\n\treturn filepath.Join(append([]string{string(r)}, parts...)...)\n}\n\n// assertHasLibrary returns an error if the specified library cannot be loaded.\nfunc (r root) assertHasLibrary(libraryName string) error {\n\tconst (\n\t\tlibraryLoadFlags = dl.RTLD_LAZY\n\t)\n\tlib := dl.New(r.tryResolveLibrary(libraryName), libraryLoadFlags)\n\tif err := lib.Open(); err != nil {\n\t\treturn err\n\t}\n\tdefer lib.Close()\n\n\treturn nil\n}\n\n// tryResolveLibrary attempts to locate the specified library in the root.\n// If the root is not specified, is \"/\", or the library cannot be found in the\n// set of predefined paths, the input is returned as is.\nfunc (r root) tryResolveLibrary(libraryName string) string {\n\tif r == \"\" || r == \"/\" {\n\t\treturn libraryName\n\t}\n\n\tlibrarySearchPaths := []string{\n\t\t\"/usr/lib64\",\n\t\t\"/usr/lib/x86_64-linux-gnu\",\n\t\t\"/usr/lib/aarch64-linux-gnu\",\n\t\t\"/lib64\",\n\t\t\"/lib/x86_64-linux-gnu\",\n\t\t\"/lib/aarch64-linux-gnu\",\n\t}\n\n\tfor _, d := range librarySearchPaths {\n\t\tl := r.join(d, libraryName)\n\t\tresolved, err := resolveLink(l)\n\t\tif err != nil {\n\t\t\tcontinue\n\t\t}\n\t\treturn resolved\n\t}\n\n\treturn libraryName\n}\n\n// resolveLink finds the target of a symlink or the file itself in the\n// case of a regular file.\n// This is equivalent to running `readlink -f ${l}`.\nfunc resolveLink(l string) (string, error) {\n\tresolved, err := filepath.EvalSymlinks(l)\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"error resolving link '%v': %w\", l, err)\n\t}\n\treturn resolved, nil\n}\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvlib/pkg/nvpci/bytes/bytes.go",
    "content": "/*\n * Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage bytes\n\nimport (\n\t\"encoding/binary\"\n\t\"unsafe\"\n)\n\n// Raw returns just the bytes without any assumptions about layout.\ntype Raw interface {\n\tRaw() *[]byte\n}\n\n// Reader used to read various data sizes in the byte array.\ntype Reader interface {\n\tRead8(pos int) uint8\n\tRead16(pos int) uint16\n\tRead32(pos int) uint32\n\tRead64(pos int) uint64\n\tLen() int\n}\n\n// Writer used to write various sizes of data in the byte array.\ntype Writer interface {\n\tWrite8(pos int, value uint8)\n\tWrite16(pos int, value uint16)\n\tWrite32(pos int, value uint32)\n\tWrite64(pos int, value uint64)\n\tLen() int\n}\n\n// Bytes object for manipulating arbitrary byte arrays.\ntype Bytes interface {\n\tRaw\n\tReader\n\tWriter\n\tSlice(offset int, size int) Bytes\n\tLittleEndian() Bytes\n\tBigEndian() Bytes\n}\n\nvar nativeByteOrder binary.ByteOrder\n\nfunc init() {\n\tbuf := [2]byte{}\n\t*(*uint16)(unsafe.Pointer(&buf[0])) = uint16(0x00FF)\n\n\tswitch buf {\n\tcase [2]byte{0xFF, 0x00}:\n\t\tnativeByteOrder = binary.LittleEndian\n\tcase [2]byte{0x00, 0xFF}:\n\t\tnativeByteOrder = binary.BigEndian\n\tdefault:\n\t\tpanic(\"Unable to infer byte order\")\n\t}\n}\n\n// New raw bytearray.\nfunc New(data *[]byte) Bytes {\n\treturn (*native)(data)\n}\n\n// NewLittleEndian little endian ordering of bytes.\nfunc NewLittleEndian(data *[]byte) Bytes {\n\tif nativeByteOrder == binary.LittleEndian {\n\t\treturn (*native)(data)\n\t}\n\n\treturn (*swapbo)(data)\n}\n\n// NewBigEndian big endian ordering of bytes.\nfunc NewBigEndian(data *[]byte) Bytes {\n\tif nativeByteOrder == binary.BigEndian {\n\t\treturn (*native)(data)\n\t}\n\n\treturn (*swapbo)(data)\n}\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvlib/pkg/nvpci/bytes/native.go",
    "content": "/*\n * Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage bytes\n\nimport (\n\t\"unsafe\"\n)\n\ntype native []byte\n\nvar _ Bytes = (*native)(nil)\n\nfunc (b *native) Read8(pos int) uint8 {\n\treturn (*b)[pos]\n}\n\nfunc (b *native) Read16(pos int) uint16 {\n\treturn *(*uint16)(unsafe.Pointer(&((*b)[pos])))\n}\n\nfunc (b *native) Read32(pos int) uint32 {\n\treturn *(*uint32)(unsafe.Pointer(&((*b)[pos])))\n}\n\nfunc (b *native) Read64(pos int) uint64 {\n\treturn *(*uint64)(unsafe.Pointer(&((*b)[pos])))\n}\n\nfunc (b *native) Write8(pos int, value uint8) {\n\t(*b)[pos] = value\n}\n\nfunc (b *native) Write16(pos int, value uint16) {\n\t*(*uint16)(unsafe.Pointer(&((*b)[pos]))) = value\n}\n\nfunc (b *native) Write32(pos int, value uint32) {\n\t*(*uint32)(unsafe.Pointer(&((*b)[pos]))) = value\n}\n\nfunc (b *native) Write64(pos int, value uint64) {\n\t*(*uint64)(unsafe.Pointer(&((*b)[pos]))) = value\n}\n\nfunc (b *native) Slice(offset int, size int) Bytes {\n\tnb := (*b)[offset : offset+size]\n\treturn &nb\n}\n\nfunc (b *native) LittleEndian() Bytes {\n\treturn NewLittleEndian((*[]byte)(b))\n}\n\nfunc (b *native) BigEndian() Bytes {\n\treturn NewBigEndian((*[]byte)(b))\n}\n\nfunc (b *native) Raw() *[]byte {\n\treturn (*[]byte)(b)\n}\n\nfunc (b *native) Len() int {\n\treturn len(*b)\n}\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvlib/pkg/nvpci/bytes/swapbo.go",
    "content": "/*\n * Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage bytes\n\nimport (\n\t\"unsafe\"\n)\n\ntype swapbo []byte\n\nvar _ Bytes = (*swapbo)(nil)\n\nfunc (b *swapbo) Read8(pos int) uint8 {\n\treturn (*b)[pos]\n}\n\nfunc (b *swapbo) Read16(pos int) uint16 {\n\tbuf := [2]byte{}\n\tbuf[0] = (*b)[pos+1]\n\tbuf[1] = (*b)[pos+0]\n\treturn *(*uint16)(unsafe.Pointer(&buf[0]))\n}\n\nfunc (b *swapbo) Read32(pos int) uint32 {\n\tbuf := [4]byte{}\n\tbuf[0] = (*b)[pos+3]\n\tbuf[1] = (*b)[pos+2]\n\tbuf[2] = (*b)[pos+1]\n\tbuf[3] = (*b)[pos+0]\n\treturn *(*uint32)(unsafe.Pointer(&buf[0]))\n}\n\nfunc (b *swapbo) Read64(pos int) uint64 {\n\tbuf := [8]byte{}\n\tbuf[0] = (*b)[pos+7]\n\tbuf[1] = (*b)[pos+6]\n\tbuf[2] = (*b)[pos+5]\n\tbuf[3] = (*b)[pos+4]\n\tbuf[4] = (*b)[pos+3]\n\tbuf[5] = (*b)[pos+2]\n\tbuf[6] = (*b)[pos+1]\n\tbuf[7] = (*b)[pos+0]\n\treturn *(*uint64)(unsafe.Pointer(&buf[0]))\n}\n\nfunc (b *swapbo) Write8(pos int, value uint8) {\n\t(*b)[pos] = value\n}\n\nfunc (b *swapbo) Write16(pos int, value uint16) {\n\tbuf := [2]byte{}\n\t*(*uint16)(unsafe.Pointer(&buf[0])) = value\n\t(*b)[pos+0] = buf[1]\n\t(*b)[pos+1] = buf[0]\n}\n\nfunc (b *swapbo) Write32(pos int, value uint32) {\n\tbuf := [4]byte{}\n\t*(*uint32)(unsafe.Pointer(&buf[0])) = value\n\t(*b)[pos+0] = buf[3]\n\t(*b)[pos+1] = buf[2]\n\t(*b)[pos+2] = buf[1]\n\t(*b)[pos+3] = buf[0]\n}\n\nfunc (b *swapbo) Write64(pos int, value uint64) {\n\tbuf := [8]byte{}\n\t*(*uint64)(unsafe.Pointer(&buf[0])) = value\n\t(*b)[pos+0] = buf[7]\n\t(*b)[pos+1] = buf[6]\n\t(*b)[pos+2] = buf[5]\n\t(*b)[pos+3] = buf[4]\n\t(*b)[pos+4] = buf[3]\n\t(*b)[pos+5] = buf[2]\n\t(*b)[pos+6] = buf[1]\n\t(*b)[pos+7] = buf[0]\n}\n\nfunc (b *swapbo) Slice(offset int, size int) Bytes {\n\tnb := (*b)[offset : offset+size]\n\treturn &nb\n}\n\nfunc (b *swapbo) LittleEndian() Bytes {\n\treturn NewLittleEndian((*[]byte)(b))\n}\n\nfunc (b *swapbo) BigEndian() Bytes {\n\treturn NewBigEndian((*[]byte)(b))\n}\n\nfunc (b *swapbo) Raw() *[]byte {\n\treturn (*[]byte)(b)\n}\n\nfunc (b *swapbo) Len() int {\n\treturn len(*b)\n}\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvlib/pkg/nvpci/config.go",
    "content": "/*\n * Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage nvpci\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\n\t\"github.com/NVIDIA/go-nvlib/pkg/nvpci/bytes\"\n)\n\nconst (\n\t// PCICfgSpaceStandardSize represents the size in bytes of the standard config space.\n\tPCICfgSpaceStandardSize = 256\n\t// PCICfgSpaceExtendedSize represents the size in bytes of the extended config space.\n\tPCICfgSpaceExtendedSize = 4096\n\t// PCICapabilityListPointer represents offset for the capability list pointer.\n\tPCICapabilityListPointer = 0x34\n\t// PCIStatusCapabilityList represents the status register bit which indicates capability list support.\n\tPCIStatusCapabilityList = 0x10\n\t// PCIStatusBytePosition represents the position of the status register.\n\tPCIStatusBytePosition = 0x06\n)\n\n// ConfigSpace PCI configuration space (standard extended) file path.\ntype ConfigSpace struct {\n\tPath string\n}\n\n// ConfigSpaceIO Interface for reading and writing raw and preconfigured values.\ntype ConfigSpaceIO interface {\n\tbytes.Bytes\n\tGetVendorID() uint16\n\tGetDeviceID() uint16\n\tGetPCICapabilities() (*PCICapabilities, error)\n}\n\ntype configSpaceIO struct {\n\tbytes.Bytes\n}\n\n// PCIStandardCapability standard PCI config space.\ntype PCIStandardCapability struct {\n\tbytes.Bytes\n}\n\n// PCIExtendedCapability extended PCI config space.\ntype PCIExtendedCapability struct {\n\tbytes.Bytes\n\tVersion uint8\n}\n\n// PCICapabilities combines the standard and extended config space.\ntype PCICapabilities struct {\n\tStandard map[uint8]*PCIStandardCapability\n\tExtended map[uint16]*PCIExtendedCapability\n}\n\nfunc (cs *ConfigSpace) Read() (ConfigSpaceIO, error) {\n\tconfig, err := os.ReadFile(cs.Path)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to open file: %v\", err)\n\t}\n\treturn &configSpaceIO{bytes.New(&config)}, nil\n}\n\nfunc (cs *configSpaceIO) GetVendorID() uint16 {\n\treturn cs.Read16(0)\n}\n\nfunc (cs *configSpaceIO) GetDeviceID() uint16 {\n\treturn cs.Read16(2)\n}\n\nfunc (cs *configSpaceIO) GetPCICapabilities() (*PCICapabilities, error) {\n\tcaps := &PCICapabilities{\n\t\tmake(map[uint8]*PCIStandardCapability),\n\t\tmake(map[uint16]*PCIExtendedCapability),\n\t}\n\n\tsupport := cs.Read8(PCIStatusBytePosition) & PCIStatusCapabilityList\n\tif support == 0 {\n\t\treturn nil, fmt.Errorf(\"pci device does not support capability list\")\n\t}\n\n\tsoffset := cs.Read8(PCICapabilityListPointer)\n\tif int(soffset) >= cs.Len() {\n\t\treturn nil, fmt.Errorf(\"capability list pointer out of bounds\")\n\t}\n\n\tfor soffset != 0 {\n\t\tif soffset == 0xff {\n\t\t\treturn nil, fmt.Errorf(\"config space broken\")\n\t\t}\n\t\tif int(soffset) >= PCICfgSpaceStandardSize {\n\t\t\treturn nil, fmt.Errorf(\"standard capability list pointer out of bounds\")\n\t\t}\n\t\tdata := cs.Read32(int(soffset))\n\t\tid := uint8(data & 0xff)\n\t\tcaps.Standard[id] = &PCIStandardCapability{\n\t\t\tcs.Slice(int(soffset), cs.Len()-int(soffset)),\n\t\t}\n\t\tsoffset = uint8((data >> 8) & 0xff)\n\t}\n\n\tif cs.Len() <= PCICfgSpaceStandardSize {\n\t\treturn caps, nil\n\t}\n\n\teoffset := uint16(PCICfgSpaceStandardSize)\n\tfor eoffset != 0 {\n\t\tif eoffset == 0xffff {\n\t\t\treturn nil, fmt.Errorf(\"config space broken\")\n\t\t}\n\t\tif int(eoffset) >= PCICfgSpaceExtendedSize {\n\t\t\treturn nil, fmt.Errorf(\"extended capability list pointer out of bounds\")\n\t\t}\n\n\t\t// |31                20|19  16|15                      0|\n\t\t// |--------------------|------|-------------------------|\n\t\t// | Next Cap Offset    |Vers. |PCI Express Ext. Cap ID  |\n\t\tdata := cs.Read32(int(eoffset))\n\t\tid := uint16(data & 0xffff)\n\t\tversion := uint8((data >> 16) & 0xf)\n\t\tcaps.Extended[id] = &PCIExtendedCapability{\n\t\t\tcs.Slice(int(eoffset), cs.Len()-int(eoffset)),\n\t\t\tversion,\n\t\t}\n\t\teoffset = uint16((data >> 20) & 0xfff)\n\t}\n\n\treturn caps, nil\n}\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvlib/pkg/nvpci/logger.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage nvpci\n\nimport \"log\"\n\ntype logger interface {\n\tWarningf(string, ...interface{})\n}\n\ntype simpleLogger struct{}\n\nfunc (l simpleLogger) Warningf(format string, v ...interface{}) {\n\tlog.Printf(\"WARNING: \"+format, v)\n}\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvlib/pkg/nvpci/mlxpci.go",
    "content": "/*\n * Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage nvpci\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n)\n\nconst (\n\t// PCIMellanoxVendorID represents PCI vendor id for Mellanox.\n\tPCIMellanoxVendorID uint16 = 0x15b3\n\t// PCINetworkControllerClass represents the PCI class for network controllers.\n\tPCINetworkControllerClass uint32 = 0x020000\n\t// PCIBridgeClass represents the PCI class for network controllers.\n\tPCIBridgeClass uint32 = 0x060400\n)\n\n// GetNetworkControllers returns all Mellanox Network Controller PCI devices on the system.\nfunc (p *nvpci) GetNetworkControllers() ([]*NvidiaPCIDevice, error) {\n\tdevices, err := p.GetAllDevices()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error getting all NVIDIA devices: %v\", err)\n\t}\n\n\tvar filtered []*NvidiaPCIDevice\n\tfor _, d := range devices {\n\t\tif d.IsNetworkController() {\n\t\t\tfiltered = append(filtered, d)\n\t\t}\n\t}\n\n\treturn filtered, nil\n}\n\n// GetPciBridges retrieves all Mellanox PCI(e) Bridges.\nfunc (p *nvpci) GetPciBridges() ([]*NvidiaPCIDevice, error) {\n\tdevices, err := p.GetAllDevices()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error getting all NVIDIA devices: %v\", err)\n\t}\n\n\tvar filtered []*NvidiaPCIDevice\n\tfor _, d := range devices {\n\t\tif d.IsPciBridge() {\n\t\t\tfiltered = append(filtered, d)\n\t\t}\n\t}\n\n\treturn filtered, nil\n}\n\n// IsNetworkController if class == 0x300.\nfunc (d *NvidiaPCIDevice) IsNetworkController() bool {\n\treturn d.Class == PCINetworkControllerClass\n}\n\n// IsPciBridge if class == 0x0604.\nfunc (d *NvidiaPCIDevice) IsPciBridge() bool {\n\treturn d.Class == PCIBridgeClass\n}\n\n// IsDPU returns if a device is a DPU.\nfunc (d *NvidiaPCIDevice) IsDPU() bool {\n\tif !strings.Contains(d.DeviceName, \"BlueField\") {\n\t\treturn false\n\t}\n\t// DPU is a multifunction device hence look only for the .0 function\n\t// and ignore subfunctions like .1, .2, etc.\n\tif strings.HasSuffix(d.Address, \".0\") {\n\t\treturn true\n\t}\n\treturn false\n}\n\n// GetDPUs returns all Mellanox DPU devices on the system.\nfunc (p *nvpci) GetDPUs() ([]*NvidiaPCIDevice, error) {\n\tdevices, err := p.GetNetworkControllers()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error getting all network controllers: %v\", err)\n\t}\n\n\tvar filtered []*NvidiaPCIDevice\n\tfor _, d := range devices {\n\t\tif d.IsDPU() {\n\t\t\tfiltered = append(filtered, d)\n\t\t}\n\t}\n\n\treturn filtered, nil\n}\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvlib/pkg/nvpci/mmio/mmio.go",
    "content": "/*\n * Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage mmio\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"syscall\"\n\t\"unsafe\"\n\n\t\"github.com/NVIDIA/go-nvlib/pkg/nvpci/bytes\"\n)\n\n// Mmio memory map a region.\ntype Mmio interface {\n\tbytes.Raw\n\tbytes.Reader\n\tbytes.Writer\n\tSync() error\n\tClose() error\n\tSlice(offset int, size int) Mmio\n\tLittleEndian() Mmio\n\tBigEndian() Mmio\n}\n\ntype mmio struct {\n\tbytes.Bytes\n}\n\nfunc open(path string, offset int, size int, flags int) (Mmio, error) {\n\tvar mmapFlags int\n\tswitch flags {\n\tcase os.O_RDONLY:\n\t\tmmapFlags = syscall.PROT_READ\n\tcase os.O_RDWR:\n\t\tmmapFlags = syscall.PROT_READ | syscall.PROT_WRITE\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"invalid flags: %v\", flags)\n\t}\n\n\tfile, err := os.OpenFile(path, flags, 0)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to open file: %v\", err)\n\t}\n\tdefer file.Close()\n\n\tfi, err := file.Stat()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to get file info: %v\", err)\n\t}\n\n\tif size > int(fi.Size()) {\n\t\treturn nil, fmt.Errorf(\"requested size larger than file size\")\n\t}\n\n\tif size < 0 {\n\t\tsize = int(fi.Size())\n\t}\n\n\tmmap, err := syscall.Mmap(\n\t\tint(file.Fd()),\n\t\tint64(offset),\n\t\tsize,\n\t\tmmapFlags,\n\t\tsyscall.MAP_SHARED)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to mmap file: %v\", err)\n\t}\n\n\treturn &mmio{bytes.New(&mmap)}, nil\n}\n\n// OpenRO open region readonly.\nfunc OpenRO(path string, offset int, size int) (Mmio, error) {\n\treturn open(path, offset, size, os.O_RDONLY)\n}\n\n// OpenRW open region read write.\nfunc OpenRW(path string, offset int, size int) (Mmio, error) {\n\treturn open(path, offset, size, os.O_RDWR)\n}\n\nfunc (m *mmio) Slice(offset int, size int) Mmio {\n\treturn &mmio{m.Bytes.Slice(offset, size)}\n}\n\nfunc (m *mmio) LittleEndian() Mmio {\n\treturn &mmio{m.Bytes.LittleEndian()}\n}\n\nfunc (m *mmio) BigEndian() Mmio {\n\treturn &mmio{m.Bytes.BigEndian()}\n}\n\nfunc (m *mmio) Close() error {\n\terr := syscall.Munmap(*m.Raw())\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to munmap file: %v\", err)\n\t}\n\treturn nil\n}\n\nfunc (m *mmio) Sync() error {\n\t_, _, errno := syscall.Syscall(\n\t\tsyscall.SYS_MSYNC,\n\t\tuintptr(unsafe.Pointer(&(*m.Raw())[0])),\n\t\tuintptr(m.Len()),\n\t\tuintptr(syscall.MS_SYNC|syscall.MS_INVALIDATE))\n\tif errno != 0 {\n\t\treturn fmt.Errorf(\"failed to msync file: %v\", errno)\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvlib/pkg/nvpci/mmio/mock.go",
    "content": "/*\n * Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage mmio\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/NVIDIA/go-nvlib/pkg/nvpci/bytes\"\n)\n\ntype mockMmio struct {\n\tmmio\n\tsource *[]byte\n\toffset int\n\trw     bool\n}\n\nfunc mockOpen(source *[]byte, offset int, size int, rw bool) (Mmio, error) {\n\tif size < 0 {\n\t\tsize = len(*source) - offset\n\t}\n\tif (offset + size) > len(*source) {\n\t\treturn nil, fmt.Errorf(\"offset+size out of range\")\n\t}\n\n\tdata := append([]byte{}, (*source)[offset:offset+size]...)\n\n\tm := &mockMmio{}\n\tm.Bytes = bytes.New(&data).LittleEndian()\n\tm.source = source\n\tm.offset = offset\n\tm.rw = rw\n\n\treturn m, nil\n}\n\n// MockOpenRO open read only.\nfunc MockOpenRO(source *[]byte, offset int, size int) (Mmio, error) {\n\treturn mockOpen(source, offset, size, false)\n}\n\n// MockOpenRW open read write.\nfunc MockOpenRW(source *[]byte, offset int, size int) (Mmio, error) {\n\treturn mockOpen(source, offset, size, true)\n}\n\nfunc (m *mockMmio) Close() error {\n\tm.Bytes = nil\n\tm.source = nil\n\tm.offset = 0\n\tm.rw = false\n\treturn nil\n}\n\nfunc (m *mockMmio) Sync() error {\n\tif !m.rw {\n\t\treturn fmt.Errorf(\"opened read-only\")\n\t}\n\tfor i := range *m.Raw() {\n\t\t(*m.source)[m.offset+i] = (*m.Raw())[i]\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvlib/pkg/nvpci/mock.go",
    "content": "/*\n * Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage nvpci\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"regexp\"\n\t\"strconv\"\n\n\t\"github.com/NVIDIA/go-nvlib/pkg/nvpci/bytes\"\n)\n\n// MockNvpci mock pci device.\ntype MockNvpci struct {\n\t*nvpci\n}\n\nvar _ Interface = (*MockNvpci)(nil)\n\n// NewMockNvpci create new mock PCI and remove old devices.\nfunc NewMockNvpci() (mock *MockNvpci, rerr error) {\n\trootDir, err := os.MkdirTemp(os.TempDir(), \"\")\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer func() {\n\t\tif rerr != nil {\n\t\t\tos.RemoveAll(rootDir)\n\t\t}\n\t}()\n\n\tmock = &MockNvpci{\n\t\tNew(WithPCIDevicesRoot(rootDir)).(*nvpci),\n\t}\n\n\treturn mock, nil\n}\n\n// Cleanup remove the mocked PCI devices root folder.\nfunc (m *MockNvpci) Cleanup() {\n\tos.RemoveAll(m.pciDevicesRoot)\n}\n\nfunc validatePCIAddress(addr string) error {\n\tr := regexp.MustCompile(`0{4}:[0-9a-f]{2}:[0-9a-f]{2}\\.[0-9]`)\n\tif !r.Match([]byte(addr)) {\n\t\treturn fmt.Errorf(`invalid PCI address should match 0{4}:[0-9a-f]{2}:[0-9a-f]{2}\\.[0-9]: %s`, addr)\n\t}\n\n\treturn nil\n}\n\n// AddMockA100 Create an A100 like GPU mock device.\nfunc (m *MockNvpci) AddMockA100(address string, numaNode int, sriov *SriovInfo) error {\n\terr := validatePCIAddress(address)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tdeviceDir := filepath.Join(m.pciDevicesRoot, address)\n\terr = os.MkdirAll(deviceDir, 0755)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\terr = createNVIDIAgpuFiles(deviceDir)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tvfioDev := filepath.Join(deviceDir, \"vfio-dev\")\n\tvfioFD := filepath.Join(vfioDev, \"vfio8\")\n\terr = os.MkdirAll(vfioFD, 0755)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tiommuGroup := 20\n\t_, err = os.Create(filepath.Join(deviceDir, strconv.Itoa(iommuGroup)))\n\tif err != nil {\n\t\treturn err\n\t}\n\terr = os.Symlink(filepath.Join(deviceDir, strconv.Itoa(iommuGroup)), filepath.Join(deviceDir, \"iommu_group\"))\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tnuma, err := os.Create(filepath.Join(deviceDir, \"numa_node\"))\n\tif err != nil {\n\t\treturn err\n\t}\n\t_, err = fmt.Fprintf(numa, \"%v\", numaNode)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif sriov != nil && sriov.PhysicalFunction != nil {\n\t\ttotalVFs, err := os.Create(filepath.Join(deviceDir, \"sriov_totalvfs\"))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = fmt.Fprintf(totalVFs, \"%d\", sriov.PhysicalFunction.TotalVFs)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tnumVFs, err := os.Create(filepath.Join(deviceDir, \"sriov_numvfs\"))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = fmt.Fprintf(numVFs, \"%d\", sriov.PhysicalFunction.NumVFs)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfor i := 1; i <= int(sriov.PhysicalFunction.NumVFs); i++ {\n\t\t\terr = m.createVf(address, i, iommuGroup, numaNode)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc createNVIDIAgpuFiles(deviceDir string) error {\n\tvendor, err := os.Create(filepath.Join(deviceDir, \"vendor\"))\n\tif err != nil {\n\t\treturn err\n\t}\n\t_, err = fmt.Fprintf(vendor, \"0x%x\", PCINvidiaVendorID)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tclass, err := os.Create(filepath.Join(deviceDir, \"class\"))\n\tif err != nil {\n\t\treturn err\n\t}\n\t_, err = fmt.Fprintf(class, \"0x%x\", PCI3dControllerClass)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tdevice, err := os.Create(filepath.Join(deviceDir, \"device\"))\n\tif err != nil {\n\t\treturn err\n\t}\n\t_, err = device.WriteString(\"0x20bf\")\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t_, err = os.Create(filepath.Join(deviceDir, \"nvidia\"))\n\tif err != nil {\n\t\treturn err\n\t}\n\terr = os.Symlink(filepath.Join(deviceDir, \"nvidia\"), filepath.Join(deviceDir, \"driver\"))\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tconfig, err := os.Create(filepath.Join(deviceDir, \"config\"))\n\tif err != nil {\n\t\treturn err\n\t}\n\t_data := make([]byte, PCICfgSpaceStandardSize)\n\tdata := bytes.New(&_data)\n\tdata.Write16(0, PCINvidiaVendorID)\n\tdata.Write16(2, uint16(0x20bf))\n\tdata.Write8(PCIStatusBytePosition, PCIStatusCapabilityList)\n\t_, err = config.Write(*data.Raw())\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tbar0 := []uint64{0x00000000c2000000, 0x00000000c2ffffff, 0x0000000000040200}\n\tresource, err := os.Create(filepath.Join(deviceDir, \"resource\"))\n\tif err != nil {\n\t\treturn err\n\t}\n\t_, err = fmt.Fprintf(resource, \"0x%x 0x%x 0x%x\", bar0[0], bar0[1], bar0[2])\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tpmcID := uint32(0x170000a1)\n\tresource0, err := os.Create(filepath.Join(deviceDir, \"resource0\"))\n\tif err != nil {\n\t\treturn err\n\t}\n\t_data = make([]byte, bar0[1]-bar0[0]+1)\n\tdata = bytes.New(&_data).LittleEndian()\n\tdata.Write32(0, pmcID)\n\t_, err = resource0.Write(*data.Raw())\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\nfunc (m *MockNvpci) createVf(pfAddress string, id, iommu_group, numaNode int) error {\n\tfunctionID := pfAddress[len(pfAddress)-1]\n\t// we are verifying the last character of pfAddress is integer.\n\tfunctionNumber, err := strconv.Atoi(string(functionID))\n\tif err != nil {\n\t\treturn fmt.Errorf(\"can't conver physical function pci address function number %s to integer: %v\", string(functionID), err)\n\t}\n\n\tvfFunctionNumber := functionNumber + id\n\tvfAddress := pfAddress[:len(pfAddress)-1] + strconv.Itoa(vfFunctionNumber)\n\n\tdeviceDir := filepath.Join(m.pciDevicesRoot, vfAddress)\n\terr = os.MkdirAll(deviceDir, 0755)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\terr = createNVIDIAgpuFiles(deviceDir)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tvfIommuGroup := strconv.Itoa(iommu_group + id)\n\n\t_, err = os.Create(filepath.Join(deviceDir, vfIommuGroup))\n\tif err != nil {\n\t\treturn err\n\t}\n\terr = os.Symlink(filepath.Join(deviceDir, vfIommuGroup), filepath.Join(deviceDir, \"iommu_group\"))\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tnuma, err := os.Create(filepath.Join(deviceDir, \"numa_node\"))\n\tif err != nil {\n\t\treturn err\n\t}\n\t_, err = fmt.Fprintf(numa, \"%v\", numaNode)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\terr = os.Symlink(filepath.Join(m.pciDevicesRoot, pfAddress), filepath.Join(deviceDir, \"physfn\"))\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvlib/pkg/nvpci/nvpci.go",
    "content": "/*\n * Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage nvpci\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"path\"\n\t\"path/filepath\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/NVIDIA/go-nvlib/pkg/pciids\"\n)\n\nconst (\n\t// PCIDevicesRoot represents base path for all pci devices under sysfs.\n\tPCIDevicesRoot = \"/sys/bus/pci/devices\"\n\t// PCINvidiaVendorID represents PCI vendor id for NVIDIA.\n\tPCINvidiaVendorID uint16 = 0x10de\n\t// PCIVgaControllerClass represents the PCI class for VGA Controllers.\n\tPCIVgaControllerClass uint32 = 0x030000\n\t// PCI3dControllerClass represents the PCI class for 3D Graphics accellerators.\n\tPCI3dControllerClass uint32 = 0x030200\n\t// PCINvSwitchClass represents the PCI class for NVSwitches.\n\tPCINvSwitchClass uint32 = 0x068000\n\t// UnknownDeviceString is the device name to set for devices not found in the PCI database.\n\tUnknownDeviceString = \"UNKNOWN_DEVICE\"\n\t// UnknownClassString is the class name to set for devices not found in the PCI database.\n\tUnknownClassString = \"UNKNOWN_CLASS\"\n)\n\n// Interface allows us to get a list of all NVIDIA PCI devices.\n//\n//go:generate moq -rm -fmt=goimports -out nvpci_mock.go . Interface\ntype Interface interface {\n\tGetAllDevices() ([]*NvidiaPCIDevice, error)\n\tGet3DControllers() ([]*NvidiaPCIDevice, error)\n\tGetVGAControllers() ([]*NvidiaPCIDevice, error)\n\tGetNVSwitches() ([]*NvidiaPCIDevice, error)\n\tGetGPUs() ([]*NvidiaPCIDevice, error)\n\tGetGPUByIndex(int) (*NvidiaPCIDevice, error)\n\tGetGPUByPciBusID(string) (*NvidiaPCIDevice, error)\n\tGetNetworkControllers() ([]*NvidiaPCIDevice, error)\n\tGetPciBridges() ([]*NvidiaPCIDevice, error)\n\tGetDPUs() ([]*NvidiaPCIDevice, error)\n}\n\n// MemoryResources a more human readable handle.\ntype MemoryResources map[int]*MemoryResource\n\n// ResourceInterface exposes some higher level functions of resources.\ntype ResourceInterface interface {\n\tGetTotalAddressableMemory(bool) (uint64, uint64)\n}\n\ntype nvpci struct {\n\tlogger         logger\n\tpciDevicesRoot string\n\tpcidbPath      string\n}\n\nvar _ Interface = (*nvpci)(nil)\nvar _ ResourceInterface = (*MemoryResources)(nil)\n\n// SriovInfo indicates whether device is VF/PF for SRIOV capable devices.\n// Only one should be set at any given time.\ntype SriovInfo struct {\n\tPhysicalFunction *SriovPhysicalFunction\n\tVirtualFunction  *SriovVirtualFunction\n}\n\n// SriovPhysicalFunction stores info about SRIOV physical function.\ntype SriovPhysicalFunction struct {\n\tTotalVFs uint64\n\tNumVFs   uint64\n}\n\n// SriovVirtualFunction keeps data about SRIOV virtual function.\ntype SriovVirtualFunction struct {\n\tPhysicalFunction *NvidiaPCIDevice\n}\n\nfunc (s *SriovInfo) IsPF() bool {\n\treturn s != nil && s.PhysicalFunction != nil\n}\n\nfunc (s *SriovInfo) IsVF() bool {\n\treturn s != nil && s.VirtualFunction != nil\n}\n\n// NvidiaPCIDevice represents a PCI device for an NVIDIA product.\ntype NvidiaPCIDevice struct {\n\tPath       string\n\tAddress    string\n\tVendor     uint16\n\tClass      uint32\n\tClassName  string\n\tDevice     uint16\n\tDeviceName string\n\tDriver     string\n\tIommuGroup int\n\tIommuFD    string\n\tNumaNode   int\n\tConfig     *ConfigSpace\n\tResources  MemoryResources\n\tSriovInfo  SriovInfo\n}\n\n// IsVGAController if class == 0x300.\nfunc (d *NvidiaPCIDevice) IsVGAController() bool {\n\treturn d.Class == PCIVgaControllerClass\n}\n\n// Is3DController if class == 0x302.\nfunc (d *NvidiaPCIDevice) Is3DController() bool {\n\treturn d.Class == PCI3dControllerClass\n}\n\n// IsNVSwitch if class == 0x068.\nfunc (d *NvidiaPCIDevice) IsNVSwitch() bool {\n\treturn d.Class == PCINvSwitchClass\n}\n\n// IsGPU either VGA for older cards or 3D for newer.\nfunc (d *NvidiaPCIDevice) IsGPU() bool {\n\treturn d.IsVGAController() || d.Is3DController()\n}\n\n// IsResetAvailable some devices can be reset without rebooting,\n// check if applicable.\nfunc (d *NvidiaPCIDevice) IsResetAvailable() bool {\n\t_, err := os.Stat(path.Join(d.Path, \"reset\"))\n\treturn err == nil\n}\n\n// Reset perform a reset to apply a new configuration at HW level.\nfunc (d *NvidiaPCIDevice) Reset() error {\n\terr := os.WriteFile(path.Join(d.Path, \"reset\"), []byte(\"1\"), 0)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to write to reset file: %v\", err)\n\t}\n\treturn nil\n}\n\n// New interface that allows us to get a list of all NVIDIA PCI devices.\nfunc New(opts ...Option) Interface {\n\tn := &nvpci{}\n\tfor _, opt := range opts {\n\t\topt(n)\n\t}\n\tif n.logger == nil {\n\t\tn.logger = &simpleLogger{}\n\t}\n\tif n.pciDevicesRoot == \"\" {\n\t\tn.pciDevicesRoot = PCIDevicesRoot\n\t}\n\treturn n\n}\n\n// Option defines a function for passing options to the New() call.\ntype Option func(*nvpci)\n\n// WithLogger provides an Option to set the logger for the library.\nfunc WithLogger(logger logger) Option {\n\treturn func(n *nvpci) {\n\t\tn.logger = logger\n\t}\n}\n\n// WithPCIDevicesRoot provides an Option to set the root path\n// for PCI devices on the system.\nfunc WithPCIDevicesRoot(root string) Option {\n\treturn func(n *nvpci) {\n\t\tn.pciDevicesRoot = root\n\t}\n}\n\n// WithPCIDatabasePath provides an Option to set the path\n// to the pciids database file.\nfunc WithPCIDatabasePath(path string) Option {\n\treturn func(n *nvpci) {\n\t\tn.pcidbPath = path\n\t}\n}\n\n// GetAllDevices returns all Nvidia PCI devices on the system.\nfunc (p *nvpci) GetAllDevices() ([]*NvidiaPCIDevice, error) {\n\tdeviceDirs, err := os.ReadDir(p.pciDevicesRoot)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to read PCI bus devices: %v\", err)\n\t}\n\n\tvar nvdevices []*NvidiaPCIDevice\n\t// Cache devices for each GetAllDevices invocation to speed things up.\n\tcache := make(map[string]*NvidiaPCIDevice)\n\tfor _, deviceDir := range deviceDirs {\n\t\tdeviceAddress := deviceDir.Name()\n\t\tnvdevice, err := p.getGPUByPciBusID(deviceAddress, cache)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"error constructing NVIDIA PCI device %s: %v\", deviceAddress, err)\n\t\t}\n\t\tif nvdevice == nil {\n\t\t\tcontinue\n\t\t}\n\t\tnvdevices = append(nvdevices, nvdevice)\n\t}\n\n\taddressToID := func(address string) uint64 {\n\t\taddress = strings.ReplaceAll(address, \":\", \"\")\n\t\taddress = strings.ReplaceAll(address, \".\", \"\")\n\t\tid, _ := strconv.ParseUint(address, 16, 64)\n\t\treturn id\n\t}\n\n\tsort.Slice(nvdevices, func(i, j int) bool {\n\t\treturn addressToID(nvdevices[i].Address) < addressToID(nvdevices[j].Address)\n\t})\n\n\treturn nvdevices, nil\n}\n\n// GetGPUByPciBusID constructs an NvidiaPCIDevice for the specified address (PCI Bus ID).\nfunc (p *nvpci) GetGPUByPciBusID(address string) (*NvidiaPCIDevice, error) {\n\t// Pass nil as to force reading device information from sysfs.\n\treturn p.getGPUByPciBusID(address, nil)\n}\n\nfunc (p *nvpci) getGPUByPciBusID(address string, cache map[string]*NvidiaPCIDevice) (*NvidiaPCIDevice, error) {\n\tif cache != nil {\n\t\tif pciDevice, exists := cache[address]; exists {\n\t\t\treturn pciDevice, nil\n\t\t}\n\t}\n\tdevicePath := filepath.Join(p.pciDevicesRoot, address)\n\n\tvendor, err := os.ReadFile(path.Join(devicePath, \"vendor\"))\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to read PCI device vendor id for %s: %v\", address, err)\n\t}\n\tvendorStr := strings.TrimSpace(string(vendor))\n\tvendorID, err := strconv.ParseUint(vendorStr, 0, 16)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to convert vendor string to uint16: %v\", vendorStr)\n\t}\n\n\tif uint16(vendorID) != PCINvidiaVendorID && uint16(vendorID) != PCIMellanoxVendorID {\n\t\treturn nil, nil\n\t}\n\n\tclass, err := os.ReadFile(path.Join(devicePath, \"class\"))\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to read PCI device class for %s: %v\", address, err)\n\t}\n\tclassStr := strings.TrimSpace(string(class))\n\tclassID, err := strconv.ParseUint(classStr, 0, 32)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to convert class string to uint32: %v\", classStr)\n\t}\n\n\tdevice, err := os.ReadFile(path.Join(devicePath, \"device\"))\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to read PCI device id for %s: %v\", address, err)\n\t}\n\tdeviceStr := strings.TrimSpace(string(device))\n\tdeviceID, err := strconv.ParseUint(deviceStr, 0, 16)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to convert device string to uint16: %v\", deviceStr)\n\t}\n\n\tdriver, err := getDriver(devicePath)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to detect driver for %s: %w\", address, err)\n\t}\n\n\tiommuGroup, err := getIOMMUGroup(devicePath)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to detect IOMMU group for %s: %w\", address, err)\n\t}\n\n\tiommuFD, err := getIOMMUFD(devicePath)\n\tif err != nil {\n\t\t// log a warning, do not return an error as this host may not have iommufd configured/supported\n\t\tp.logger.Warningf(\"unable to detect IOMMU FD for %s: %v\", address, err)\n\t}\n\n\tnuma, err := os.ReadFile(path.Join(devicePath, \"numa_node\"))\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to read PCI NUMA node for %s: %v\", address, err)\n\t}\n\tnumaStr := strings.TrimSpace(string(numa))\n\tnumaNode, err := strconv.ParseInt(numaStr, 0, 64)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to convert NUMA node string to int64: %v\", numaNode)\n\t}\n\n\tconfig := &ConfigSpace{\n\t\tPath: path.Join(devicePath, \"config\"),\n\t}\n\n\tresource, err := os.ReadFile(path.Join(devicePath, \"resource\"))\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to read PCI resource file for %s: %v\", address, err)\n\t}\n\n\tresources := make(map[int]*MemoryResource)\n\tfor i, line := range strings.Split(strings.TrimSpace(string(resource)), \"\\n\") {\n\t\tvalues := strings.Split(line, \" \")\n\t\tif len(values) != 3 {\n\t\t\treturn nil, fmt.Errorf(\"more than 3 entries in line '%d' of resource file\", i)\n\t\t}\n\n\t\tstart, _ := strconv.ParseUint(values[0], 0, 64)\n\t\tend, _ := strconv.ParseUint(values[1], 0, 64)\n\t\tflags, _ := strconv.ParseUint(values[2], 0, 64)\n\n\t\tif (end - start) != 0 {\n\t\t\tresources[i] = &MemoryResource{\n\t\t\t\tuintptr(start),\n\t\t\t\tuintptr(end),\n\t\t\t\tflags,\n\t\t\t\tfmt.Sprintf(\"%s/resource%d\", devicePath, i),\n\t\t\t}\n\t\t}\n\t}\n\n\tpciDB := pciids.NewDB()\n\n\tdeviceName, err := pciDB.GetDeviceName(uint16(vendorID), uint16(deviceID))\n\tif err != nil {\n\t\tp.logger.Warningf(\"unable to get device name: %v\\n\", err)\n\t\tdeviceName = UnknownDeviceString\n\t}\n\tclassName, err := pciDB.GetClassName(uint32(classID))\n\tif err != nil {\n\t\tp.logger.Warningf(\"unable to get class name for device: %v\\n\", err)\n\t\tclassName = UnknownClassString\n\t}\n\n\tvar sriovInfo SriovInfo\n\t// Device is a virtual function (VF) if \"physfn\" symlink exists.\n\tphysFnAddress, err := filepath.EvalSymlinks(path.Join(devicePath, \"physfn\"))\n\tswitch {\n\tcase err == nil:\n\t\tphysFn, err := p.getGPUByPciBusID(filepath.Base(physFnAddress), cache)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"unable to detect physfn for %s: %v\", address, err)\n\t\t}\n\t\tsriovInfo = SriovInfo{\n\t\t\tVirtualFunction: &SriovVirtualFunction{\n\t\t\t\tPhysicalFunction: physFn,\n\t\t\t},\n\t\t}\n\tcase os.IsNotExist(err):\n\t\tsriovInfo, err = p.getSriovInfoForPhysicalFunction(devicePath)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"unable to read SRIOV physical function details for %s: %v\", devicePath, err)\n\t\t}\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"unable to read %s: %v\", path.Join(devicePath, \"physfn\"), err)\n\t}\n\n\tnvdevice := &NvidiaPCIDevice{\n\t\tPath:       devicePath,\n\t\tAddress:    address,\n\t\tVendor:     uint16(vendorID),\n\t\tClass:      uint32(classID),\n\t\tDevice:     uint16(deviceID),\n\t\tDriver:     driver,\n\t\tIommuGroup: int(iommuGroup),\n\t\tIommuFD:    iommuFD,\n\t\tNumaNode:   int(numaNode),\n\t\tConfig:     config,\n\t\tResources:  resources,\n\t\tDeviceName: deviceName,\n\t\tClassName:  className,\n\t\tSriovInfo:  sriovInfo,\n\t}\n\n\t// Cache physical functions only as VF can't be a root device.\n\tif cache != nil && sriovInfo.IsPF() {\n\t\tcache[address] = nvdevice\n\t}\n\n\treturn nvdevice, nil\n}\n\n// Get3DControllers returns all NVIDIA 3D Controller PCI devices on the system.\nfunc (p *nvpci) Get3DControllers() ([]*NvidiaPCIDevice, error) {\n\tdevices, err := p.GetAllDevices()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error getting all NVIDIA devices: %v\", err)\n\t}\n\n\tvar filtered []*NvidiaPCIDevice\n\tfor _, d := range devices {\n\t\tif d.Is3DController() {\n\t\t\tfiltered = append(filtered, d)\n\t\t}\n\t}\n\n\treturn filtered, nil\n}\n\n// GetVGAControllers returns all NVIDIA VGA Controller PCI devices on the system.\nfunc (p *nvpci) GetVGAControllers() ([]*NvidiaPCIDevice, error) {\n\tdevices, err := p.GetAllDevices()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error getting all NVIDIA devices: %v\", err)\n\t}\n\n\tvar filtered []*NvidiaPCIDevice\n\tfor _, d := range devices {\n\t\tif d.IsVGAController() {\n\t\t\tfiltered = append(filtered, d)\n\t\t}\n\t}\n\n\treturn filtered, nil\n}\n\n// GetNVSwitches returns all NVIDIA NVSwitch PCI devices on the system.\nfunc (p *nvpci) GetNVSwitches() ([]*NvidiaPCIDevice, error) {\n\tdevices, err := p.GetAllDevices()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error getting all NVIDIA devices: %v\", err)\n\t}\n\n\tvar filtered []*NvidiaPCIDevice\n\tfor _, d := range devices {\n\t\tif d.IsNVSwitch() {\n\t\t\tfiltered = append(filtered, d)\n\t\t}\n\t}\n\n\treturn filtered, nil\n}\n\n// GetGPUs returns all NVIDIA GPU devices on the system.\nfunc (p *nvpci) GetGPUs() ([]*NvidiaPCIDevice, error) {\n\tdevices, err := p.GetAllDevices()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error getting all NVIDIA devices: %v\", err)\n\t}\n\n\tvar filtered []*NvidiaPCIDevice\n\tfor _, d := range devices {\n\t\tif d.IsGPU() && !d.SriovInfo.IsVF() {\n\t\t\tfiltered = append(filtered, d)\n\t\t}\n\t}\n\n\treturn filtered, nil\n}\n\n// GetGPUByIndex returns an NVIDIA GPU device at a particular index.\nfunc (p *nvpci) GetGPUByIndex(i int) (*NvidiaPCIDevice, error) {\n\tgpus, err := p.GetGPUs()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error getting all gpus: %v\", err)\n\t}\n\n\tif i < 0 || i >= len(gpus) {\n\t\treturn nil, fmt.Errorf(\"invalid index '%d'\", i)\n\t}\n\n\treturn gpus[i], nil\n}\n\nfunc (p *nvpci) getSriovInfoForPhysicalFunction(devicePath string) (sriovInfo SriovInfo, err error) {\n\ttotalVfsPath := filepath.Join(devicePath, \"sriov_totalvfs\")\n\tnumVfsPath := filepath.Join(devicePath, \"sriov_numvfs\")\n\n\t// No file for sriov_totalvfs exists? Not an SRIOV device, return nil\n\t_, err = os.Stat(totalVfsPath)\n\tif err != nil && os.IsNotExist(err) {\n\t\treturn sriovInfo, nil\n\t}\n\tsriovTotalVfs, err := os.ReadFile(totalVfsPath)\n\tif err != nil {\n\t\treturn sriovInfo, fmt.Errorf(\"unable to read sriov_totalvfs: %v\", err)\n\t}\n\ttotalVfsStr := strings.TrimSpace(string(sriovTotalVfs))\n\ttotalVfsInt, err := strconv.ParseUint(totalVfsStr, 10, 16)\n\tif err != nil {\n\t\treturn sriovInfo, fmt.Errorf(\"unable to convert sriov_totalvfs to uint64: %v\", err)\n\t}\n\n\tsriovNumVfs, err := os.ReadFile(numVfsPath)\n\tif err != nil {\n\t\treturn sriovInfo, fmt.Errorf(\"unable to read sriov_numvfs for: %v\", err)\n\t}\n\tnumVfsStr := strings.TrimSpace(string(sriovNumVfs))\n\tnumVfsInt, err := strconv.ParseUint(numVfsStr, 10, 16)\n\tif err != nil {\n\t\treturn sriovInfo, fmt.Errorf(\"unable to convert sriov_numvfs to uint64: %v\", err)\n\t}\n\n\tsriovInfo = SriovInfo{\n\t\tPhysicalFunction: &SriovPhysicalFunction{\n\t\t\tTotalVFs: totalVfsInt,\n\t\t\tNumVFs:   numVfsInt,\n\t\t},\n\t}\n\treturn sriovInfo, nil\n}\n\nfunc getDriver(devicePath string) (string, error) {\n\tdriver, err := filepath.EvalSymlinks(path.Join(devicePath, \"driver\"))\n\tswitch {\n\tcase os.IsNotExist(err):\n\t\treturn \"\", nil\n\tcase err == nil:\n\t\treturn filepath.Base(driver), nil\n\t}\n\treturn \"\", err\n}\n\nfunc getIOMMUFD(devicePath string) (string, error) {\n\tcontent, err := os.ReadDir(path.Join(devicePath, \"vfio-dev\"))\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tfor _, c := range content {\n\t\tif !c.IsDir() {\n\t\t\tcontinue\n\t\t}\n\t\tif strings.HasPrefix(c.Name(), \"vfio\") {\n\t\t\treturn c.Name(), nil\n\t\t}\n\t}\n\treturn \"\", fmt.Errorf(\"no iommufd device found\")\n}\n\nfunc getIOMMUGroup(devicePath string) (int64, error) {\n\tvar iommuGroup int64\n\tiommu, err := filepath.EvalSymlinks(path.Join(devicePath, \"iommu_group\"))\n\tswitch {\n\tcase os.IsNotExist(err):\n\t\treturn -1, nil\n\tcase err == nil:\n\t\tiommuGroupStr := strings.TrimSpace(filepath.Base(iommu))\n\t\tiommuGroup, err = strconv.ParseInt(iommuGroupStr, 0, 64)\n\t\tif err != nil {\n\t\t\treturn 0, fmt.Errorf(\"unable to convert iommu_group string to int64: %v\", iommuGroupStr)\n\t\t}\n\t\treturn iommuGroup, nil\n\t}\n\treturn 0, err\n}\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvlib/pkg/nvpci/nvpci_mock.go",
    "content": "// Code generated by moq; DO NOT EDIT.\n// github.com/matryer/moq\n\npackage nvpci\n\nimport (\n\t\"sync\"\n)\n\n// Ensure, that InterfaceMock does implement Interface.\n// If this is not the case, regenerate this file with moq.\nvar _ Interface = &InterfaceMock{}\n\n// InterfaceMock is a mock implementation of Interface.\n//\n//\tfunc TestSomethingThatUsesInterface(t *testing.T) {\n//\n//\t\t// make and configure a mocked Interface\n//\t\tmockedInterface := &InterfaceMock{\n//\t\t\tGet3DControllersFunc: func() ([]*NvidiaPCIDevice, error) {\n//\t\t\t\tpanic(\"mock out the Get3DControllers method\")\n//\t\t\t},\n//\t\t\tGetAllDevicesFunc: func() ([]*NvidiaPCIDevice, error) {\n//\t\t\t\tpanic(\"mock out the GetAllDevices method\")\n//\t\t\t},\n//\t\t\tGetDPUsFunc: func() ([]*NvidiaPCIDevice, error) {\n//\t\t\t\tpanic(\"mock out the GetDPUs method\")\n//\t\t\t},\n//\t\t\tGetGPUByIndexFunc: func(n int) (*NvidiaPCIDevice, error) {\n//\t\t\t\tpanic(\"mock out the GetGPUByIndex method\")\n//\t\t\t},\n//\t\t\tGetGPUByPciBusIDFunc: func(s string) (*NvidiaPCIDevice, error) {\n//\t\t\t\tpanic(\"mock out the GetGPUByPciBusID method\")\n//\t\t\t},\n//\t\t\tGetGPUsFunc: func() ([]*NvidiaPCIDevice, error) {\n//\t\t\t\tpanic(\"mock out the GetGPUs method\")\n//\t\t\t},\n//\t\t\tGetNVSwitchesFunc: func() ([]*NvidiaPCIDevice, error) {\n//\t\t\t\tpanic(\"mock out the GetNVSwitches method\")\n//\t\t\t},\n//\t\t\tGetNetworkControllersFunc: func() ([]*NvidiaPCIDevice, error) {\n//\t\t\t\tpanic(\"mock out the GetNetworkControllers method\")\n//\t\t\t},\n//\t\t\tGetPciBridgesFunc: func() ([]*NvidiaPCIDevice, error) {\n//\t\t\t\tpanic(\"mock out the GetPciBridges method\")\n//\t\t\t},\n//\t\t\tGetVGAControllersFunc: func() ([]*NvidiaPCIDevice, error) {\n//\t\t\t\tpanic(\"mock out the GetVGAControllers method\")\n//\t\t\t},\n//\t\t}\n//\n//\t\t// use mockedInterface in code that requires Interface\n//\t\t// and then make assertions.\n//\n//\t}\ntype InterfaceMock struct {\n\t// Get3DControllersFunc mocks the Get3DControllers method.\n\tGet3DControllersFunc func() ([]*NvidiaPCIDevice, error)\n\n\t// GetAllDevicesFunc mocks the GetAllDevices method.\n\tGetAllDevicesFunc func() ([]*NvidiaPCIDevice, error)\n\n\t// GetDPUsFunc mocks the GetDPUs method.\n\tGetDPUsFunc func() ([]*NvidiaPCIDevice, error)\n\n\t// GetGPUByIndexFunc mocks the GetGPUByIndex method.\n\tGetGPUByIndexFunc func(n int) (*NvidiaPCIDevice, error)\n\n\t// GetGPUByPciBusIDFunc mocks the GetGPUByPciBusID method.\n\tGetGPUByPciBusIDFunc func(s string) (*NvidiaPCIDevice, error)\n\n\t// GetGPUsFunc mocks the GetGPUs method.\n\tGetGPUsFunc func() ([]*NvidiaPCIDevice, error)\n\n\t// GetNVSwitchesFunc mocks the GetNVSwitches method.\n\tGetNVSwitchesFunc func() ([]*NvidiaPCIDevice, error)\n\n\t// GetNetworkControllersFunc mocks the GetNetworkControllers method.\n\tGetNetworkControllersFunc func() ([]*NvidiaPCIDevice, error)\n\n\t// GetPciBridgesFunc mocks the GetPciBridges method.\n\tGetPciBridgesFunc func() ([]*NvidiaPCIDevice, error)\n\n\t// GetVGAControllersFunc mocks the GetVGAControllers method.\n\tGetVGAControllersFunc func() ([]*NvidiaPCIDevice, error)\n\n\t// calls tracks calls to the methods.\n\tcalls struct {\n\t\t// Get3DControllers holds details about calls to the Get3DControllers method.\n\t\tGet3DControllers []struct {\n\t\t}\n\t\t// GetAllDevices holds details about calls to the GetAllDevices method.\n\t\tGetAllDevices []struct {\n\t\t}\n\t\t// GetDPUs holds details about calls to the GetDPUs method.\n\t\tGetDPUs []struct {\n\t\t}\n\t\t// GetGPUByIndex holds details about calls to the GetGPUByIndex method.\n\t\tGetGPUByIndex []struct {\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t}\n\t\t// GetGPUByPciBusID holds details about calls to the GetGPUByPciBusID method.\n\t\tGetGPUByPciBusID []struct {\n\t\t\t// S is the s argument value.\n\t\t\tS string\n\t\t}\n\t\t// GetGPUs holds details about calls to the GetGPUs method.\n\t\tGetGPUs []struct {\n\t\t}\n\t\t// GetNVSwitches holds details about calls to the GetNVSwitches method.\n\t\tGetNVSwitches []struct {\n\t\t}\n\t\t// GetNetworkControllers holds details about calls to the GetNetworkControllers method.\n\t\tGetNetworkControllers []struct {\n\t\t}\n\t\t// GetPciBridges holds details about calls to the GetPciBridges method.\n\t\tGetPciBridges []struct {\n\t\t}\n\t\t// GetVGAControllers holds details about calls to the GetVGAControllers method.\n\t\tGetVGAControllers []struct {\n\t\t}\n\t}\n\tlockGet3DControllers      sync.RWMutex\n\tlockGetAllDevices         sync.RWMutex\n\tlockGetDPUs               sync.RWMutex\n\tlockGetGPUByIndex         sync.RWMutex\n\tlockGetGPUByPciBusID      sync.RWMutex\n\tlockGetGPUs               sync.RWMutex\n\tlockGetNVSwitches         sync.RWMutex\n\tlockGetNetworkControllers sync.RWMutex\n\tlockGetPciBridges         sync.RWMutex\n\tlockGetVGAControllers     sync.RWMutex\n}\n\n// Get3DControllers calls Get3DControllersFunc.\nfunc (mock *InterfaceMock) Get3DControllers() ([]*NvidiaPCIDevice, error) {\n\tif mock.Get3DControllersFunc == nil {\n\t\tpanic(\"InterfaceMock.Get3DControllersFunc: method is nil but Interface.Get3DControllers was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGet3DControllers.Lock()\n\tmock.calls.Get3DControllers = append(mock.calls.Get3DControllers, callInfo)\n\tmock.lockGet3DControllers.Unlock()\n\treturn mock.Get3DControllersFunc()\n}\n\n// Get3DControllersCalls gets all the calls that were made to Get3DControllers.\n// Check the length with:\n//\n//\tlen(mockedInterface.Get3DControllersCalls())\nfunc (mock *InterfaceMock) Get3DControllersCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGet3DControllers.RLock()\n\tcalls = mock.calls.Get3DControllers\n\tmock.lockGet3DControllers.RUnlock()\n\treturn calls\n}\n\n// GetAllDevices calls GetAllDevicesFunc.\nfunc (mock *InterfaceMock) GetAllDevices() ([]*NvidiaPCIDevice, error) {\n\tif mock.GetAllDevicesFunc == nil {\n\t\tpanic(\"InterfaceMock.GetAllDevicesFunc: method is nil but Interface.GetAllDevices was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetAllDevices.Lock()\n\tmock.calls.GetAllDevices = append(mock.calls.GetAllDevices, callInfo)\n\tmock.lockGetAllDevices.Unlock()\n\treturn mock.GetAllDevicesFunc()\n}\n\n// GetAllDevicesCalls gets all the calls that were made to GetAllDevices.\n// Check the length with:\n//\n//\tlen(mockedInterface.GetAllDevicesCalls())\nfunc (mock *InterfaceMock) GetAllDevicesCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetAllDevices.RLock()\n\tcalls = mock.calls.GetAllDevices\n\tmock.lockGetAllDevices.RUnlock()\n\treturn calls\n}\n\n// GetDPUs calls GetDPUsFunc.\nfunc (mock *InterfaceMock) GetDPUs() ([]*NvidiaPCIDevice, error) {\n\tif mock.GetDPUsFunc == nil {\n\t\tpanic(\"InterfaceMock.GetDPUsFunc: method is nil but Interface.GetDPUs was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetDPUs.Lock()\n\tmock.calls.GetDPUs = append(mock.calls.GetDPUs, callInfo)\n\tmock.lockGetDPUs.Unlock()\n\treturn mock.GetDPUsFunc()\n}\n\n// GetDPUsCalls gets all the calls that were made to GetDPUs.\n// Check the length with:\n//\n//\tlen(mockedInterface.GetDPUsCalls())\nfunc (mock *InterfaceMock) GetDPUsCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetDPUs.RLock()\n\tcalls = mock.calls.GetDPUs\n\tmock.lockGetDPUs.RUnlock()\n\treturn calls\n}\n\n// GetGPUByIndex calls GetGPUByIndexFunc.\nfunc (mock *InterfaceMock) GetGPUByIndex(n int) (*NvidiaPCIDevice, error) {\n\tif mock.GetGPUByIndexFunc == nil {\n\t\tpanic(\"InterfaceMock.GetGPUByIndexFunc: method is nil but Interface.GetGPUByIndex was just called\")\n\t}\n\tcallInfo := struct {\n\t\tN int\n\t}{\n\t\tN: n,\n\t}\n\tmock.lockGetGPUByIndex.Lock()\n\tmock.calls.GetGPUByIndex = append(mock.calls.GetGPUByIndex, callInfo)\n\tmock.lockGetGPUByIndex.Unlock()\n\treturn mock.GetGPUByIndexFunc(n)\n}\n\n// GetGPUByIndexCalls gets all the calls that were made to GetGPUByIndex.\n// Check the length with:\n//\n//\tlen(mockedInterface.GetGPUByIndexCalls())\nfunc (mock *InterfaceMock) GetGPUByIndexCalls() []struct {\n\tN int\n} {\n\tvar calls []struct {\n\t\tN int\n\t}\n\tmock.lockGetGPUByIndex.RLock()\n\tcalls = mock.calls.GetGPUByIndex\n\tmock.lockGetGPUByIndex.RUnlock()\n\treturn calls\n}\n\n// GetGPUByPciBusID calls GetGPUByPciBusIDFunc.\nfunc (mock *InterfaceMock) GetGPUByPciBusID(s string) (*NvidiaPCIDevice, error) {\n\tif mock.GetGPUByPciBusIDFunc == nil {\n\t\tpanic(\"InterfaceMock.GetGPUByPciBusIDFunc: method is nil but Interface.GetGPUByPciBusID was just called\")\n\t}\n\tcallInfo := struct {\n\t\tS string\n\t}{\n\t\tS: s,\n\t}\n\tmock.lockGetGPUByPciBusID.Lock()\n\tmock.calls.GetGPUByPciBusID = append(mock.calls.GetGPUByPciBusID, callInfo)\n\tmock.lockGetGPUByPciBusID.Unlock()\n\treturn mock.GetGPUByPciBusIDFunc(s)\n}\n\n// GetGPUByPciBusIDCalls gets all the calls that were made to GetGPUByPciBusID.\n// Check the length with:\n//\n//\tlen(mockedInterface.GetGPUByPciBusIDCalls())\nfunc (mock *InterfaceMock) GetGPUByPciBusIDCalls() []struct {\n\tS string\n} {\n\tvar calls []struct {\n\t\tS string\n\t}\n\tmock.lockGetGPUByPciBusID.RLock()\n\tcalls = mock.calls.GetGPUByPciBusID\n\tmock.lockGetGPUByPciBusID.RUnlock()\n\treturn calls\n}\n\n// GetGPUs calls GetGPUsFunc.\nfunc (mock *InterfaceMock) GetGPUs() ([]*NvidiaPCIDevice, error) {\n\tif mock.GetGPUsFunc == nil {\n\t\tpanic(\"InterfaceMock.GetGPUsFunc: method is nil but Interface.GetGPUs was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetGPUs.Lock()\n\tmock.calls.GetGPUs = append(mock.calls.GetGPUs, callInfo)\n\tmock.lockGetGPUs.Unlock()\n\treturn mock.GetGPUsFunc()\n}\n\n// GetGPUsCalls gets all the calls that were made to GetGPUs.\n// Check the length with:\n//\n//\tlen(mockedInterface.GetGPUsCalls())\nfunc (mock *InterfaceMock) GetGPUsCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetGPUs.RLock()\n\tcalls = mock.calls.GetGPUs\n\tmock.lockGetGPUs.RUnlock()\n\treturn calls\n}\n\n// GetNVSwitches calls GetNVSwitchesFunc.\nfunc (mock *InterfaceMock) GetNVSwitches() ([]*NvidiaPCIDevice, error) {\n\tif mock.GetNVSwitchesFunc == nil {\n\t\tpanic(\"InterfaceMock.GetNVSwitchesFunc: method is nil but Interface.GetNVSwitches was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetNVSwitches.Lock()\n\tmock.calls.GetNVSwitches = append(mock.calls.GetNVSwitches, callInfo)\n\tmock.lockGetNVSwitches.Unlock()\n\treturn mock.GetNVSwitchesFunc()\n}\n\n// GetNVSwitchesCalls gets all the calls that were made to GetNVSwitches.\n// Check the length with:\n//\n//\tlen(mockedInterface.GetNVSwitchesCalls())\nfunc (mock *InterfaceMock) GetNVSwitchesCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetNVSwitches.RLock()\n\tcalls = mock.calls.GetNVSwitches\n\tmock.lockGetNVSwitches.RUnlock()\n\treturn calls\n}\n\n// GetNetworkControllers calls GetNetworkControllersFunc.\nfunc (mock *InterfaceMock) GetNetworkControllers() ([]*NvidiaPCIDevice, error) {\n\tif mock.GetNetworkControllersFunc == nil {\n\t\tpanic(\"InterfaceMock.GetNetworkControllersFunc: method is nil but Interface.GetNetworkControllers was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetNetworkControllers.Lock()\n\tmock.calls.GetNetworkControllers = append(mock.calls.GetNetworkControllers, callInfo)\n\tmock.lockGetNetworkControllers.Unlock()\n\treturn mock.GetNetworkControllersFunc()\n}\n\n// GetNetworkControllersCalls gets all the calls that were made to GetNetworkControllers.\n// Check the length with:\n//\n//\tlen(mockedInterface.GetNetworkControllersCalls())\nfunc (mock *InterfaceMock) GetNetworkControllersCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetNetworkControllers.RLock()\n\tcalls = mock.calls.GetNetworkControllers\n\tmock.lockGetNetworkControllers.RUnlock()\n\treturn calls\n}\n\n// GetPciBridges calls GetPciBridgesFunc.\nfunc (mock *InterfaceMock) GetPciBridges() ([]*NvidiaPCIDevice, error) {\n\tif mock.GetPciBridgesFunc == nil {\n\t\tpanic(\"InterfaceMock.GetPciBridgesFunc: method is nil but Interface.GetPciBridges was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetPciBridges.Lock()\n\tmock.calls.GetPciBridges = append(mock.calls.GetPciBridges, callInfo)\n\tmock.lockGetPciBridges.Unlock()\n\treturn mock.GetPciBridgesFunc()\n}\n\n// GetPciBridgesCalls gets all the calls that were made to GetPciBridges.\n// Check the length with:\n//\n//\tlen(mockedInterface.GetPciBridgesCalls())\nfunc (mock *InterfaceMock) GetPciBridgesCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetPciBridges.RLock()\n\tcalls = mock.calls.GetPciBridges\n\tmock.lockGetPciBridges.RUnlock()\n\treturn calls\n}\n\n// GetVGAControllers calls GetVGAControllersFunc.\nfunc (mock *InterfaceMock) GetVGAControllers() ([]*NvidiaPCIDevice, error) {\n\tif mock.GetVGAControllersFunc == nil {\n\t\tpanic(\"InterfaceMock.GetVGAControllersFunc: method is nil but Interface.GetVGAControllers was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetVGAControllers.Lock()\n\tmock.calls.GetVGAControllers = append(mock.calls.GetVGAControllers, callInfo)\n\tmock.lockGetVGAControllers.Unlock()\n\treturn mock.GetVGAControllersFunc()\n}\n\n// GetVGAControllersCalls gets all the calls that were made to GetVGAControllers.\n// Check the length with:\n//\n//\tlen(mockedInterface.GetVGAControllersCalls())\nfunc (mock *InterfaceMock) GetVGAControllersCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetVGAControllers.RLock()\n\tcalls = mock.calls.GetVGAControllers\n\tmock.lockGetVGAControllers.RUnlock()\n\treturn calls\n}\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvlib/pkg/nvpci/resources.go",
    "content": "/*\n * Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage nvpci\n\nimport (\n\t\"fmt\"\n\t\"sort\"\n\n\t\"github.com/NVIDIA/go-nvlib/pkg/nvpci/mmio\"\n)\n\nconst (\n\tpmcEndianRegister = 0x4\n\tpmcLittleEndian   = 0x0\n\tpmcBigEndian      = 0x01000001\n)\n\n// MemoryResource represents a mmio region.\ntype MemoryResource struct {\n\tStart uintptr\n\tEnd   uintptr\n\tFlags uint64\n\tPath  string\n}\n\n// OpenRW read write mmio region.\nfunc (mr *MemoryResource) OpenRW() (mmio.Mmio, error) {\n\trw, err := mmio.OpenRW(mr.Path, 0, int(mr.End-mr.Start+1))\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to open file for mmio: %v\", err)\n\t}\n\tswitch rw.Read32(pmcEndianRegister) {\n\tcase pmcBigEndian:\n\t\treturn rw.BigEndian(), nil\n\tcase pmcLittleEndian:\n\t\treturn rw.LittleEndian(), nil\n\t}\n\treturn nil, fmt.Errorf(\"unknown endianness for mmio: %v\", err)\n}\n\n// OpenRO read only mmio region.\nfunc (mr *MemoryResource) OpenRO() (mmio.Mmio, error) {\n\tro, err := mmio.OpenRO(mr.Path, 0, int(mr.End-mr.Start+1))\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to open file for mmio: %v\", err)\n\t}\n\tswitch ro.Read32(pmcEndianRegister) {\n\tcase pmcBigEndian:\n\t\treturn ro.BigEndian(), nil\n\tcase pmcLittleEndian:\n\t\treturn ro.LittleEndian(), nil\n\t}\n\treturn nil, fmt.Errorf(\"unknown endianness for mmio: %v\", err)\n}\n\n// From Bit Twiddling Hacks, great resource for all low level bit manipulations.\nfunc calcNextPowerOf2(n uint64) uint64 {\n\tn--\n\tn |= n >> 1\n\tn |= n >> 2\n\tn |= n >> 4\n\tn |= n >> 8\n\tn |= n >> 16\n\tn |= n >> 32\n\tn++\n\n\treturn n\n}\n\n// GetTotalAddressableMemory will accumulate the 32bit and 64bit memory windows\n// of each BAR and round the value if needed to the next power of 2; first\n// return value is the accumulated 32bit addressable memory size the second one\n// is the accumulated 64bit addressable memory size in bytes. These values are\n// needed to configure virtualized environments.\nfunc (mrs MemoryResources) GetTotalAddressableMemory(roundUp bool) (uint64, uint64) {\n\tconst pciIOVNumBAR = 6\n\tconst pciBaseAddressMemTypeMask = 0x06\n\tconst pciBaseAddressMemType32 = 0x00 /* 32 bit address */\n\tconst pciBaseAddressMemType64 = 0x04 /* 64 bit address */\n\n\t// We need to sort the resources so the first 6 entries are the BARs\n\t// How a map is represented in memory is not guaranteed, it is not an\n\t// array. Keys do not have an order.\n\tkeys := make([]int, 0, len(mrs))\n\tfor k := range mrs {\n\t\tkeys = append(keys, k)\n\t}\n\tsort.Ints(keys)\n\n\tnumBAR := 0\n\tmemSize32bit := uint64(0)\n\tmemSize64bit := uint64(0)\n\n\tfor _, key := range keys {\n\t\t// The PCIe spec only defines 5 BARs per device, we're\n\t\t// discarding everything after the 5th entry of the resources\n\t\t// file, see lspci.c\n\t\tif key >= pciIOVNumBAR || numBAR == pciIOVNumBAR {\n\t\t\tbreak\n\t\t}\n\t\tnumBAR++\n\n\t\tregion := mrs[key]\n\n\t\tflags := region.Flags & pciBaseAddressMemTypeMask\n\t\tmemType32bit := flags == pciBaseAddressMemType32\n\t\tmemType64bit := flags == pciBaseAddressMemType64\n\n\t\tmemSize := (region.End - region.Start) + 1\n\n\t\tif memType32bit {\n\t\t\tmemSize32bit += uint64(memSize)\n\t\t}\n\t\tif memType64bit {\n\t\t\tmemSize64bit += uint64(memSize)\n\t\t}\n\n\t}\n\n\tif roundUp {\n\t\tmemSize32bit = calcNextPowerOf2(memSize32bit)\n\t\tmemSize64bit = calcNextPowerOf2(memSize64bit)\n\t}\n\n\treturn memSize32bit, memSize64bit\n}\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvlib/pkg/pciids/default_pci.ids",
    "content": "#\n#\tList of PCI ID's\n#\n#\tVersion: 2025.07.11\n#\tDate:    2025-07-11 03:15:02\n#\n#\tMaintained by Albert Pool, Martin Mares, and other volunteers from\n#\tthe PCI ID Project at https://pci-ids.ucw.cz/.\n#\n#\tNew data are always welcome, especially if they are accurate. If you have\n#\tanything to contribute, please follow the instructions at the web site.\n#\n#\tThis file can be distributed under either the GNU General Public License\n#\t(version 2 or higher) or the 3-clause BSD License.\n#\n#\tThe database is a compilation of factual data, and as such the copyright\n#\tonly covers the aggregation and formatting. The copyright is held by\n#\tMartin Mares and Albert Pool.\n#\n\n# Vendors, devices and subsystems. Please keep sorted.\n\n# Syntax:\n# vendor  vendor_name\n#\tdevice  device_name\t\t\t\t<-- single tab\n#\t\tsubvendor subdevice  subsystem_name\t<-- two tabs\n\n0001  SafeNet (wrong ID)\n0010  Allied Telesis, Inc (Wrong ID)\n# This is a relabelled RTL-8139\n\t8139  AT-2500TX V3 Ethernet\n0014  Loongson Technology LLC\n\t7a00  Hyper Transport Bridge Controller\n\t7a02  APB (Advanced Peripheral Bus) Controller\n\t7a03  Gigabit Ethernet Controller\n\t7a04  OTG USB Controller\n\t7a05  Vivante GPU (Graphics Processing Unit)\n\t7a06  DC (Display Controller)\n\t7a07  HDA (High Definition Audio) Controller\n\t7a08  SATA AHCI Controller\n\t7a09  PCI-to-PCI Bridge\n\t7a0b  SPI Controller\n\t7a0c  LPC Controller\n\t7a0f  DMA (Direct Memory Access) Controller\n# Found on some boards with two sockets\n\t7a10  Hyper Transport Bridge Controller\n\t7a13  7A2000 PCH Gigabit Ethernet Controller\n\t7a14  EHCI USB Controller\n\t7a15  Vivante GPU (Graphics Processing Unit)\n\t7a18  SATA 3 AHCI Controller\n\t7a19  PCI-to-PCI Bridge\n\t7a1b  SPI Controller\n\t7a24  OHCI USB Controller\n# Found on 7A2000 PCH\n\t7a25  LG100 GPU\n\t7a27  7A2000 PCH I2S Controller\n\t7a29  PCI-to-PCI Bridge\n\t7a34  xHCI USB Controller\n# Found on 7A2000 PCH\n\t7a36  Display Controller\n\t7a39  PCIe x1 Root Port\n\t7a49  PCIe x4 Root Port\n\t7a59  PCIe x8 Root Port\n\t7a69  PCIe x16 Root Port\n0018  Fn-Link Technology Limited\n\t6252  6252CPUB 802.11ax PCIe Wireless Network Adapter\n001c  PEAK-System Technik GmbH\n\t0001  PCAN-PCI CAN-Bus controller\n\t\t001c 0004  2 Channel CAN Bus SJC1000\n\t\t001c 0005  2 Channel CAN Bus SJC1000 (Optically Isolated)\n003d  Lockheed Martin-Marietta Corp\n# Real TJN ID is e159, but they got it wrong several times --mj\n0059  Tiger Jet Network Inc. (Wrong ID)\n0070  Hauppauge computer works Inc.\n\t7801  WinTV HVR-1800 MCE\n0071  Nebula Electronics Ltd.\n0095  Silicon Image, Inc. (Wrong ID)\n\t0680  Ultra ATA/133 IDE RAID CONTROLLER CARD\n# Wrong ID used in subsystem ID of the TELES.S0/PCI 2.x ISDN adapter\n00a7  Teles AG (Wrong ID)\n0100  nCipher Security\n0123  General Dynamics\n0128  Dell (wrong ID)\n# 018a is not LevelOne but there is a board misprogrammed\n018a  LevelOne\n\t0106  FPC-0106TX misprogrammed [RTL81xx]\n01de  Oxide Computer Company\n\t0000  Propolis NVMe Controller\n\t0001  Propolis xHCI Controller\n\t0002  Propolis PCI-PCI Bridge\n# probably misprogrammed Intel Atom C2338 on Dell 0K8Y0N board\n0200  Dell (wrong ID)\n# 021b is not Compaq but there is a board misprogrammed\n021b  Compaq Computer Corporation\n\t8139  HNE-300 (RealTek RTL8139c) [iPaq Networking]\n025e  Solidigm\n\t0b60  NVMe DC SSD [Sentinel Rock Plus controller]\n\t\t025e 8008  NVMe DC SSD U.2 15mm [D7-P5510]\n\t\t025e 8208  NVMe DC SSD U.2 15mm [D7-P5810]\n\t\t025e 8d1d  NVMe DC SSD E1.L 9.5mm [D5-P5316]\n\t\t025e 9008  NVMe DC SSD U.2 15mm [D7-P5520]\n\t\t025e 900c  NVMe DC SSD E1.S 9.5mm [D7-P5520]\n\t\t025e 900d  NVMe DC SSD E1.S 15mm [D7-P5520]\n\t\t025e 901c  NVMe DC SSD E1.L 9.5mm [D7-P5520]\n\t\t025e 9108  NVMe DC SSD U.2 15mm [D7-P5620]\n\t\t025e c008  NVMe DC SSD U.2 15mm [D5-P5530]\n\t\t025e d408  NVMe DC SSD U.2 15mm [D5-P5430]\n\t\t025e d40c  NVMe DC SSD E1.S 9.5mm [D5-P5430]\n\t\t025e d419  NVMe DC SSD E3.S 7.5mm [D5-P5430]\n\t\t025e d808  NVMe DC SSD U.2 15mm [D5-P5336]\n\t\t025e d819  NVMe DC SSD E3.S 7.5mm [D5-P5336]\n\t\t025e d81c  NVMe DC SSD E1.L 18mm [D5-P5336]\n\t\t025e d81d  NVMe DC SSD E1.L 9.5mm [D5-P5336]\n\t0b70  NVMe DC SSD [Yorktown controller]\n\t2b59  NVMe DC SSD [Atomos Prime]\n\t\t025e 0008  NVMe DC SSD U.2-SFF 15mm [D7-PS1010]\n\t\t025e 000c  NVMe DC SSD E1.S 9.5mm [D7-PS1010]\n\t\t025e 000d  NVMe DC SSD E1.S 15mm [D7-PS1010]\n\t\t025e 0019  NVMe DC SSD E3.S-1T 7.5mm [D7-PS1010]\n\t\t025e 0108  NVMe DC SSD U.2-SFF 15mm [D7-PS1030]\n\t\t025e 0119  NVMe DC SSD E3.S-1T 7.5mm [D7-PS1030]\n\t\t108e 48a0  NVMe DC SSD U.2-SFF 15mm 3.84TB [D7-PS1010 Custom]\n\t\t108e 48a1  NVMe DC SSD U.2-SFF 15mm 7.68TB [D7-PS1010 Custom]\n\t\t108e 48a2  NVMe DC SSD U.2-SFF 15mm 15.36TB [D7-PS1010 Custom]\n\t\t108e 48a3  NVMe DC SSD Add-In-Card [D7-PS1030 Custom]\n\t\t108e 48a4  NVMe DC SSD E3.S-1T 7.5mm 3.84TB [D7-PS1010 Custom]\n\t\t108e 48a5  NVMe DC SSD E3.S-1T 7.5mm 7.68TB [D7-PS1010 Custom]\n\t\t108e 48a6  NVMe DC SSD E3.S-1T 7.5mm 15.36TB [D7-PS1010 Custom]\n\tf1ab  P41 Plus NVMe SSD (DRAM-less) [Echo Harbor]\n\tf1ac  P44 Pro NVMe SSD [Hollywood Beach]\n0270  Hauppauge computer works Inc. (Wrong ID)\n0291  Davicom Semiconductor, Inc. (Wrong ID)\n# SpeedStream is Efficient Networks, Inc, a Siemens Company\n02ac  SpeedStream\n\t1012  1012 PCMCIA 10/100 Ethernet Card [RTL81xx]\n02e0  XFX Pine Group Inc. (Wrong ID)\n0303  Hewlett-Packard Company (Wrong ID)\n0308  ZyXEL Communications Corporation (Wrong ID)\n0315  SK-Electronics Co., Ltd.\n0357  TTTech Computertechnik AG (Wrong ID)\n\t000a  TTP-Monitoring Card V2.0\n0432  SCM Microsystems, Inc.\n\t0001  Pluto2 DVB-T Receiver for PCMCIA [EasyWatch MobilSet]\n0497  Dell Inc. (wrong ID)\n060e  Lightelligence\n\t0001  Hummingbird ES\n0675  Dynalink\n\t1700  IS64PH ISDN Adapter\n\t1702  IS64PH ISDN Adapter\n\t1703  ISDN Adapter (PCI Bus, DV, W)\n\t1704  ISDN Adapter (PCI Bus, D, C)\n0709  LJMicro Co., Ltd\n\t0101  GP101\n\t0102  GP102\n\t0201  GP201\n\t0202  GP202\n0721  Sapphire, Inc.\n0731  Jingjia Microelectronics Co Ltd\n\t1100  JM1100\n\t\t0731 1101  JM1100-C\n\t\t0731 1102  JM1100-II\n\t\t0731 1103  JM1100-I\n\t\t0731 1104  JM1100-M\n\t\t0731 1105  JM1100-Y\n\t\t0731 1106  JM1100-EI\n\t\t0731 1107  JM1100-EM\n\t7200  JM7200 Series GPU\n\t\t0731 7201  JM7201\n\t\t0731 7202  JM7202\n\t\t0731 7208  JM7200\n\t\t0731 7212  JM7200\n\t\t0731 7214  JM7500\n\t\t0731 7215  JM7200\n\t9100  JM9100\n\t\t0731 9101  JM9100\n\t\t0731 9102  JM9100-I\n\t\t0731 9103  JM9100M\n\t910a  JH910\n\t\t0731 910a  JH910\n\t\t0731 910b  JH910-I\n\t\t0731 910c  JH910-M\n\t9200  JM9200\n\t920a  JH920\n\t\t0731 920a  JH920\n\t\t0731 920b  JH920-I\n\t\t0731 920c  JH920-M\n\t920b  JH920-I\n\t920c  JH920-M\n\t9210  JM9210\n\t\t0731 9210  JM9210\n\t\t0731 9211  JM9210-I\n\t9211  JM9210-I\n\t9230  JM9230\n\t\t0731 9230  JM9230\n\t\t0731 9231  JM9230-I\n\t9231  JM9231-I\n\t9250  JM9250\n\t\t0731 9250  JM9250\n\t930a  JH930-I\n\t\t0731 930a  JH930-I\n\t\t0731 930b  JH930-M\n\t\t0731 930c  JH930\n\t930b  JH930-M\n\tf011  JM1100-IV\n\tf111  JM1100-MV\n\tff11  JM1100-YV\n0777  Ubiquiti Networks, Inc.\n0795  Wired Inc.\n\t6663  Butane II (MPEG2 encoder board)\n\t6666  MediaPress (MPEG2 encoder board)\n07d1  D-Link System Inc\n0824  T1042 [Freescale]\n0911  Hantick\n0925  VIA Technologies, Inc. (Wrong ID)\n0a89  BREA Technologies Inc\n0b0b  Rhino Equipment Corp.\n\t0105  R1T1\n\t0205  R4FXO\n\t0206  RCB4FXO 4-channel FXO analog telephony card\n\t0305  R4T1\n\t0405  R8FXX\n\t0406  RCB8FXX 8-channel modular analog telephony card\n\t0505  R24FXX\n\t0506  RCB24FXS 24-Channel FXS analog telephony card\n\t0605  R2T1\n\t0705  R24FXS\n\t0706  RCB24FXO 24-Channel FXO analog telephony card\n\t0905  R1T3 Single T3 Digital Telephony Card\n\t0906  RCB24FXX 24-channel modular analog telephony card\n\t0a06  RCB672FXX 672-channel modular analog telephony card\n0bae  Bachmann electronic GmbH\n0ccd  Preferred Networks, Inc.\n\t0110  MN-Core\n\t0120  MN-Core 2\n\t\t0ccd 0000  MN-Core 2 16GB\n\t\t0ccd 0010  MN-Core 2 32GB\n\t0200  MN-Core Direct Connect\n\t0201  MN-Core 2 Middle-plane\n0e11  Compaq Computer Corporation\n\t0001  PCI to EISA Bridge\n\t0002  PCI to ISA Bridge\n\t0046  Smart Array 64xx\n\t\t0e11 4091  Smart Array 6i\n\t\t0e11 409a  Smart Array 641\n\t\t0e11 409b  Smart Array 642\n\t\t0e11 409c  Smart Array 6400\n\t\t0e11 409d  Smart Array 6400 EM\n\t0049  NC7132 Gigabit Upgrade Module\n\t004a  NC6136 Gigabit Server Adapter\n\t005a  Remote Insight II board - Lights-Out\n\t007c  NC7770 1000BaseTX\n\t007d  NC6770 1000BaseTX\n\t0085  NC7780 1000BaseTX\n\t00b1  Remote Insight II board - PCI device\n\t00bb  NC7760\n\t00ca  NC7771\n\t00cb  NC7781\n\t00cf  NC7772\n\t00d0  NC7782\n\t00d1  NC7783\n\t00e3  NC7761\n\t0508  Netelligent 4/16 Token Ring\n\t1000  Triflex/Pentium Bridge, Model 1000\n\t2000  Triflex/Pentium Bridge, Model 2000\n\t3032  QVision 1280/p\n\t3033  QVision 1280/p\n\t3034  QVision 1280/p\n\t4000  4000 [Triflex]\n\t4040  Integrated Array\n\t4048  Compaq Raid LC2\n\t4050  Smart Array 4200\n\t4051  Smart Array 4250ES\n\t4058  Smart Array 431\n\t4070  Smart Array 5300\n\t4080  Smart Array 5i\n\t4082  Smart Array 532\n\t4083  Smart Array 5312\n\t4091  Smart Array 6i\n\t409a  Smart Array 641\n\t409b  Smart Array 642\n\t409c  Smart Array 6400\n\t409d  Smart Array 6400 EM\n\t6010  HotPlug PCI Bridge 6010\n\t7020  USB Controller\n\ta0ec  Fibre Channel Host Controller\n\ta0f0  Advanced System Management Controller\n\t\t0e11 b0f3  ProLiant DL360\n\ta0f3  Triflex PCI to ISA Bridge\n\ta0f7  PCI Hotplug Controller\n\t\t8086 002a  PCI Hotplug Controller A\n\t\t8086 002b  PCI Hotplug Controller B\n\ta0f8  ZFMicro Chipset USB\n\ta0fc  FibreChannel HBA Tachyon\n\tae10  Smart-2/P RAID Controller\n\t\t0e11 4030  Smart-2/P Array Controller\n\t\t0e11 4031  Smart-2SL Array Controller\n\t\t0e11 4032  Smart Array 3200 Controller\n\t\t0e11 4033  Smart Array 3100ES Controller\n\t\t0e11 4034  Smart Array 221 Controller\n\tae29  MIS-L\n\tae2a  MPC\n\tae2b  MIS-E\n\tae31  System Management Controller\n\tae32  Netelligent 10/100 TX PCI UTP\n\tae33  Triflex Dual EIDE Controller\n\tae34  Netelligent 10 T PCI UTP\n\tae35  Integrated NetFlex-3/P\n\tae40  Netelligent Dual 10/100 TX PCI UTP\n\tae43  Netelligent Integrated 10/100 TX UTP\n\tae69  CETUS-L\n\tae6c  Northstar\n\tae6d  NorthStar CPU to PCI Bridge\n\tb011  Netelligent 10/100 TX Embedded UTP\n\tb012  Netelligent 10 T/2 PCI UTP/Coax\n\tb01e  NC3120 Fast Ethernet NIC\n\tb01f  NC3122 Fast Ethernet NIC\n\tb02f  NC1120 Ethernet NIC\n\tb030  Netelligent 10/100 TX UTP\n\tb04a  10/100 TX PCI Intel WOL UTP Controller\n\tb060  Smart Array 5300 Controller\n\tb0c6  NC3161 Fast Ethernet NIC\n\tb0c7  NC3160 Fast Ethernet NIC\n\tb0d7  NC3121 Fast Ethernet NIC\n\tb0dd  NC3131 Fast Ethernet NIC\n\tb0de  NC3132 Fast Ethernet Module\n\tb0df  NC6132 Gigabit Module\n\tb0e0  NC6133 Gigabit Module\n\tb0e1  NC3133 Fast Ethernet Module\n\tb123  NC6134 Gigabit NIC\n\tb134  NC3163 Fast Ethernet NIC\n\tb13c  NC3162 Fast Ethernet NIC\n\tb144  NC3123 Fast Ethernet NIC\n\tb163  NC3134 Fast Ethernet NIC\n\tb164  NC3165 Fast Ethernet Upgrade Module\n\tb178  Smart Array 5i/532\n\t\t0e11 4080  Smart Array 5i\n\t\t0e11 4082  Smart Array 532\n\t\t0e11 4083  Smart Array 5312\n\tb1a4  NC7131 Gigabit Server Adapter\n\tb200  Memory Hot-Plug Controller\n\tb203  Integrated Lights Out Controller\n\t\t103c 3305  iLO2\n\tb204  Integrated Lights Out  Processor\n\t\t103c 3305  iLO2\n\tc000  Remote Insight Lights-Out Edition\n\tf130  NetFlex-3/P ThunderLAN 1.0\n\tf150  NetFlex-3/P ThunderLAN 2.3\n0e55  HaSoTec GmbH\n0eac  SHF Communication Technologies AG\n\t0008  Ethernet Powerlink Managing Node 01\n0f62  Acrox Technologies Co., Ltd.\n1000  Broadcom / LSI\n\t0001  53c810\n\t\t1000 1000  LSI53C810AE PCI to SCSI I/O Processor\n\t0002  53c820\n\t0003  53c825\n\t\t1000 1000  LSI53C825AE PCI to SCSI I/O Processor (Ultra Wide)\n\t0004  53c815\n\t0005  53c810AP\n\t0006  53c860\n\t\t1000 1000  LSI53C860E PCI to Ultra SCSI I/O Processor\n\t000a  53c1510\n\t\t0e11 b143  Integrated Dual Channel Wide Ultra2 SCSI Controller\n\t\t1000 1000  LSI53C1510 PCI to Dual Channel Wide Ultra2 SCSI Controller (Nonintelligent mode)\n\t000b  53C896/897\n\t\t0e11 6004  EOB003 Series SCSI host adapter\n\t\t1000 1000  LSI53C896/7 PCI to Dual Channel Ultra2 SCSI Multifunction Controller\n\t\t1000 1010  LSI22910 PCI to Dual Channel Ultra2 SCSI host adapter\n\t\t1000 1020  LSI21002 PCI to Dual Channel Ultra2 SCSI host adapter\n\t\t13e9 1000  6221L-4U (Dual U2W SCSI, dual 10/100TX, graphics)\n\t000c  53c895\n\t\t1000 1010  LSI8951U PCI to Ultra2 SCSI host adapter\n\t\t1000 1020  LSI8952U PCI to Ultra2 SCSI host adapter\n\t\t1de1 3906  DC-390U2B SCSI adapter\n\t\t1de1 3907  DC-390U2W\n\t000d  53c885\n\t000f  53c875\n\t\t0e11 7004  Embedded Ultra Wide SCSI Controller\n\t\t1000 1000  LSI53C876/E PCI to Dual Channel SCSI Controller\n\t\t1000 1010  LSI22801 PCI to Dual Channel Ultra SCSI host adapter\n\t\t1000 1020  LSI22802 PCI to Dual Channel Ultra SCSI host adapter\n\t\t1092 8760  FirePort 40 Dual SCSI Controller\n\t\t1775 10d0  V5D Single Board Computer Wide Ultra SCSI\n\t\t1775 10d1  V5D Single Board Computer Ultra SCSI\n\t\t1de1 3904  DC390F/U Ultra Wide SCSI Adapter\n\t\t4c53 1000  CC7/CR7/CP7/VC7/VP7/VR7 mainboard\n\t\t4c53 1050  CT7 mainboard\n\t0010  53C1510\n\t\t0e11 4040  Integrated Smart Array Controller\n\t\t0e11 4048  RAID LC2 Controller\n\t\t1000 1000  53C1510 PCI to Dual Channel Wide Ultra2 SCSI Controller (Intelligent mode)\n\t0012  53c895a\n\t\t1000 1000  LSI53C895A PCI to Ultra2 SCSI Controller\n\t0013  53c875a\n\t\t1000 1000  LSI53C875A PCI to Ultra SCSI Controller\n\t0014  MegaRAID Tri-Mode SAS3516\n\t\t1000 9460  MegaRAID 9460-16i\n\t\t1000 9480  MegaRAID 9480-8i8e\n\t\t1000 9481  MegaRAID 9480-8e\n\t\t1028 1f3a  PERC H745 Adapter\n\t\t1028 1f3b  PERC H745 Front\n\t\t1028 1fd4  PERC H745P MX\n\t\t1137 020e  UCSC-RAID-M5 12G Modular RAID Controller\n\t\t1d49 0602  ThinkSystem RAID 930-16i 4GB Flash PCIe 12Gb Adapter\n\t\t1d49 0604  ThinkSystem RAID 930-8e 4GB Flash PCIe 12Gb Adapter\n\t\t1d49 0607  ThinkSystem RAID 930-16i 8GB Flash PCIe 12Gb Adapter\n\t\t8086 352d  Integrated RAID Module RMSP3AD160F\n\t\t8086 9460  RAID Controller RSP3TD160F\n\t\t8086 9480  RAID Controller RSP3MD088F\n\t0015  MegaRAID Tri-Mode SAS3416\n\t\t1000 9441  MegaRAID 9440-16i\n\t\t1028 1f3c  PERC H345 Adapter\n\t\t1028 1f3d  PERC H345 Front\n\t\t1d49 0503  ThinkSystem RAID 530-16i PCIe 12Gb Adapter\n\t0016  MegaRAID Tri-Mode SAS3508\n\t\t1000 9461  MegaRAID 9460-8i\n\t\t1000 9462  MegaRAID 9460-4i\n\t\t1000 9463  MegaRAID 9365-28i\n\t\t1000 9464  MegaRAID 9365-24i\n\t\t1028 1fc9  PERC H840 Adapter\n\t\t1028 1fcb  PERC H740P Adapter\n\t\t1028 1fcd  PERC H740P Mini\n\t\t1028 1fcf  PERC H740P Mini\n\t\t1d49 0601  ThinkSystem RAID 930-8i 2GB Flash PCIe 12Gb Adapter\n\t\t1d49 0603  ThinkSystem RAID 930-24i 4GB Flash PCIe 12Gb Adapter\n\t\t8086 352e  Integrated RAID Module RMSP3CD080F\n\t\t8086 352f  Integrated RAID Module RMSP3HD080E\n\t\t8086 9461  RAID Controller RSP3DD080F\n\t0017  MegaRAID Tri-Mode SAS3408\n\t\t1000 9440  MegaRAID 9440-8i\n\t\t1000 9442  MegaRAID 9440-4i\n\t\t1d49 0500  ThinkSystem RAID 530-8i PCIe 12Gb Adapter\n\t\t1d49 0502  ThinkSystem RAID 530-8i Dense Adapter\n\t\t8086 3528  Integrated RAID RMSP3LD060\n\t\t8086 3529  Integrated RAID RMSP3LD060\n\t\t8086 9441  RAID Controller RSP3WD080E\n\t001b  MegaRAID Tri-Mode SAS3504\n\t\t1d49 0605  ThinkSystem RAID 930-4i 2GB Flash Flex Adapter\n\t001c  MegaRAID Tri-Mode SAS3404\n\t\t1d49 0501  ThinkSystem RAID 530-4i Flex Adapter\n\t0020  53c1010 Ultra3 SCSI Adapter\n\t\t1000 1000  LSI53C1010-33 PCI to Dual Channel Ultra160 SCSI Controller\n\t\t107b 1040  Server Onboard 53C1010-33\n\t\t1de1 1020  DC-390U3W\n\t0021  53c1010 66MHz  Ultra3 SCSI Adapter\n\t\t1000 1000  LSI53C1000/1000R/1010R/1010-66 PCI to Ultra160 SCSI Controller\n\t\t1000 1010  Asus TR-DLS onboard 53C1010-66\n\t\t103c 1300  Ultra160 SCSI [AB306A]\n\t\t103c 1310  Ultra160 SCSI [A9918A]\n\t\t103c 1330  Ultra160 SCSI [A7059A]\n\t\t103c 1340  Ultra160 SCSI [A7060A]\n\t\t124b 1070  PMC-USCSI3\n\t\t4c53 1080  CT8 mainboard\n\t\t4c53 1300  P017 mezzanine (32-bit PMC)\n\t\t4c53 1310  P017 mezzanine (64-bit PMC)\n\t002f  MegaRAID SAS 2208 IOV [Thunderbolt]\n\t\t1028 1f39  SPERC8-e\n\t\t1028 1f3e  SPERC 8\n\t0030  53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI\n\t\t0e11 00da  ProLiant ML 350\n\t\t1028 0123  LSI Logic 1020/1030\n\t\t1028 014a  LSI Logic 1020/1030\n\t\t1028 016c  PowerEdge 1850 MPT Fusion SCSI/RAID (Perc 4)\n\t\t1028 0183  LSI Logic 1020/1030\n\t\t1028 018a  PERC 4/IM\n\t\t1028 1010  LSI U320 SCSI Controller\n\t\t103c 12c5  Ultra320 SCSI [A7173A]\n\t\t103c 1323  Core I/O LAN/SCSI Combo [AB314A]\n\t\t103c 3108  Single Channel Ultra320 SCSI HBA G2\n\t\t103c 322a  SC11Xe Ultra320 Single Channel PCIe x4 SCSI Host Bus Adapter (412911-B21)\n\t\t124b 1170  PMC-USCSI320\n\t\t15ad 1976  LSI Logic Parallel SCSI Controller (emulated)\n\t\t1734 1052  PRIMERGY BX/RX/TX S2 series onboard SCSI(IME)\n\t0031  53c1030ZC PCI-X Fusion-MPT Dual Ultra320 SCSI\n\t0032  53c1035 PCI-X Fusion-MPT Dual Ultra320 SCSI\n\t\t1000 1000  LSI53C1020/1030 PCI-X to Ultra320 SCSI Controller\n\t0033  1030ZC_53c1035 PCI-X Fusion-MPT Dual Ultra320 SCSI\n\t0040  53c1035 PCI-X Fusion-MPT Dual Ultra320 SCSI\n\t\t1000 0033  MegaRAID SCSI 320-2XR\n\t\t1000 0066  MegaRAID SCSI 320-2XRWS\n\t0041  53C1035ZC PCI-X Fusion-MPT Dual Ultra320 SCSI\n\t0050  SAS1064 PCI-X Fusion-MPT SAS\n\t\t1028 1f04  SAS 5/E\n\t\t1028 1f09  SAS 5i/R\n\t0052  MegaRAID SAS-3 3216/3224 [Cutlass]\n\t0053  MegaRAID SAS-3 3216/3224 [Cutlass]\n\t\t1000 9350  MegaRAID SAS 9341-16i\n\t\t1000 9351  MegaRAID SAS 9341-24i\n\t0054  SAS1068 PCI-X Fusion-MPT SAS\n\t\t1028 1f04  SAS 5/E Adapter Controller\n\t\t1028 1f05  SAS 5/i Adapter Controller\n\t\t1028 1f06  SAS 5/i Integrated Controller\n\t\t1028 1f07  SAS 5/iR Integrated RAID Controller\n\t\t1028 1f08  SAS 5/iR Integrated RAID Controller\n\t\t1028 1f09  SAS 5/iR Adapter RAID Controller\n\t\t103c 3228  SAS3080X-HP 8-port PCI-X 133MHz Host Bus Adapter with 2xSFF-8484\n\t\t15ad 1976  SAS Controller\n\t0055  SAS1068 PCI-X Fusion-MPT SAS\n\t\t1033 8336  SAS1068\n\t0056  SAS1064ET PCI-Express Fusion-MPT SAS\n\t\t1014 03bb  ServeRAID BR10il SAS/SATA Controller v2\n\t\t8086 34dc  AXX4SASMOD RAID Controller\n\t0057  M1064E MegaRAID SAS\n\t\t8086 346c  Embedded Software RAID Technology II (ESTRII)\n\t0058  SAS1068E PCI-Express Fusion-MPT SAS\n\t\t1000 3140  SAS3081E-R 8-Port SAS/SATA Host Bus Adapter\n\t\t1028 021d  SAS 6/iR Integrated Workstations RAID Controller\n\t\t1028 1f0e  SAS 6/iR Adapter RAID Controller\n\t\t1028 1f0f  SAS 6/iR Integrated Blades RAID Controller\n\t\t1028 1f10  SAS 6/iR Integrated RAID Controller\n\t\t103c 3229  SC44Ge Host Bus Adapter\n\t0059  MegaRAID SAS 8208ELP/8208ELP\n\t005a  SAS1066E PCI-Express Fusion-MPT SAS\n\t005b  MegaRAID SAS 2208 [Thunderbolt]\n\t\t1000 9265  MegaRAID SAS 9265-8i\n\t\t1000 9266  MegaRAID SAS 9266-8i\n\t\t1000 9267  MegaRAID SAS 9267-8i\n\t\t1000 9268  MegaRAID SAS 9265CV-8i / 9270CV-8i\n\t\t1000 9269  MegaRAID SAS 9266-4i\n\t\t1000 9270  MegaRAID SAS 9270-8i\n\t\t1000 9271  MegaRAID SAS 9271-8i\n\t\t1000 9272  MegaRAID SAS 9272-8i\n\t\t1000 9273  MegaRAID SAS 9270CV-8i\n\t\t1000 9274  MegaRAID SAS 9270-4i\n\t\t1000 9275  MegaRAID SAS 9271-8iCC\n\t\t1000 9276  MegaRAID SAS 9271-4i\n\t\t1000 9285  MegaRAID SAS 9285-8e\n\t\t1000 9288  MegaRAID SAS 9285CV-8e\n\t\t1000 9290  MegaRAID SAS 9286-8e\n\t\t1000 9291  MegaRAID SAS 9286CV-8e\n\t\t1000 9295  MegaRAID SAS 9286CV-8eCC\n\t\t1014 040b  ServeRAID M5110 SAS/SATA Controller\n\t\t1014 040c  ServeRAID M5120 SAS/SATA Controller\n\t\t1014 0412  ServeRAID M5110e SAS/SATA Controller\n\t\t1028 1f2d  PERC H810 Adapter\n\t\t1028 1f30  PERC H710 Embedded\n\t\t1028 1f31  PERC H710P Adapter\n\t\t1028 1f33  PERC H710P Mini (for blades)\n\t\t1028 1f34  PERC H710P Mini (for monolithics)\n\t\t1028 1f35  PERC H710 Adapter\n\t\t1028 1f37  PERC H710 Mini (for blades)\n\t\t1028 1f38  PERC H710 Mini (for monolithics)\n\t\t15d9 0690  LSI MegaRAID ROMB\n\t\t8086 3510  RMS25PB080 RAID Controller\n\t\t8086 3511  RMS25PB040 RAID Controller\n\t\t8086 3512  RMT3PB080 RAID Controller\n\t\t8086 3513  Integrated RAID Module RMS25CB080\n\t\t8086 3514  RMS25CB040 RAID Controller\n\t\t8086 351c  RMS25PB080N RAID Controller\n\t\t8086 351d  RMS25CB080N RAID Controller\n\t\t8086 9265  RS25DB080 RAID Controller\n\t\t8086 9268  RS25AB080 RAID Controller\n\t\t8086 9285  RS25NB008 RAID Controller\n\t\t8086 9288  RS25SB008 RAID Controller\n\t005c  SAS1064A PCI-X Fusion-MPT SAS\n\t005d  MegaRAID SAS-3 3108 [Invader]\n\t\t1000 9361  MegaRAID SAS 9361-8i\n\t\t1000 9363  MegaRAID SAS 9361-4i\n\t\t1000 9364  MegaRAID SAS 9364-8i\n\t\t1000 936a  MegaRAID SAS 9364-8i\n\t\t1000 9380  MegaRAID SAS 9380-8e\n\t\t1028 1f41  PERC H830 Adapter\n\t\t1028 1f42  PERC H730P Adapter\n\t\t1028 1f43  PERC H730 Adapter\n\t\t1028 1f47  PERC H730P Mini\n\t\t1028 1f48  PERC H730P Mini (for blades)\n\t\t1028 1f49  PERC H730 Mini\n\t\t1028 1f4a  PERC H730 Mini (for blades)\n\t\t1028 1f4d  PERC FD33xS\n\t\t1028 1f4f  PERC H730P Slim\n\t\t1028 1f54  PERC FD33xD\n\t\t1028 1fd1  PERC H730P MX\n\t\t1734 11f6  PRAID EP400i\n\t\t17aa 1052  ThinkServer RAID 720i\n\t\t17aa 1053  ThinkServer RAID 720ix\n\t\t1bd4 0014  12G SAS3108 2G\n\t\t1bd4 0015  12G SAS3108 4G\n\t\t1d49 0600  ThinkSystem RAID 730-8i 1GB Cache PCIe 12Gb Adapter\n\t\t1d49 0608  ThinkSystem RAID 730-8i 2GB Flash PCIe 12Gb Adapter\n\t\t1d49 0609  ThinkSystem RAID 730-8i 4GB Flash PCIe 12Gb Adapter\n\t\t8086 351e  RMS3CC080 RAID Controller\n\t\t8086 351f  RMS3CC040 RAID Controller\n\t\t8086 9360  RS3DC080 RAID Controller\n\t\t8086 9362  RS3DC040 RAID Controller\n\t\t8086 9380  RS3SC008 RAID Controller\n\t\t8086 9381  RS3MC044 RAID Controller\n\t005e  SAS1066 PCI-X Fusion-MPT SAS\n\t005f  MegaRAID SAS-3 3008 [Fury]\n\t\t1028 1f44  PERC H330 Adapter\n\t\t1028 1f4b  PERC H330 Mini\n\t\t1028 1f4c  PERC H330 Mini (for blades)\n\t\t1028 1f4d  PERC H330 Embedded (for monolithic)\n\t\t1054 306a  SAS 3004 iMR ROMB\n\t\t1734 1211  PRAID CP400i [D3307-A12]\n\t\t1d49 04db  ServeRAID M1210 SAS/SATA Controller\n\t\t1d49 0504  ThinkSystem RAID 520-8i PCIe 12Gb Adapter\n\t0060  MegaRAID SAS 1078\n\t\t1000 1006  MegaRAID SAS 8888ELP\n\t\t1000 100a  MegaRAID SAS 8708ELP\n\t\t1000 100e  MegaRAID SAS 8884E\n\t\t1000 100f  MegaRAID SAS 8708E\n\t\t1000 1010  MegaRAID SATA 350-8ELP\n\t\t1000 1011  MegaRAID SATA 350-4ELP\n\t\t1000 1012  MegaRAID SAS 8704ELP\n\t\t1000 1016  MegaRAID SAS 8880EM2\n\t\t1014 0363  MegaRAID SAS PCI Express ROMB\n\t\t1014 0364  SystemX MegaRAID SAS 8808E\n\t\t1014 0365  SystemX MegaRAID SAS 8884E\n\t\t1014 0379  SystemX MegaRAID SAS 8880EM2\n\t\t1028 1f0a  PERC 6/E Adapter RAID Controller\n\t\t1028 1f0b  PERC 6/i Adapter RAID Controller\n\t\t1028 1f0c  PERC 6/i Integrated RAID Controller\n\t\t1028 1f0d  PERC 6/i Integrated RAID Controller\n\t\t1028 1f11  CERC 6/i Integrated RAID Controller\n\t\t1033 835a  MegaRAID SAS PCI Express ROMB\n\t\t1043 824d  MegaRAID SAS PCI Express ROMB\n\t\t1170 002f  MegaRAID SAS PCI Express ROMB\n\t\t1170 0036  MegaRAID SAS PCI Express ROMB\n\t\t15d9 c080  MegaRAID SAS PCI Express ROMB\n\t\t17aa 6b7c  MegaRAID SAS PCI Express ROMB\n\t\t18a1 0003  LSI MegaRAID SAS PCI Express ROMB\n\t\t8086 1006  RAID Controller SRCSAS28EP\n\t\t8086 100a  RAID Controller SRCSAS28EV\n\t\t8086 1010  RAID Controller SRCSATA28E\n\t\t8086 34cc  Integrated RAID Controller SROMBSAS28E\n\t\t8086 34cd  Integrated RAID Controller SROMBSAS28E\n\t\t8086 3505  Integrated RAID Controller SROMBSASMP2\n\t0062  SAS1078 PCI-Express Fusion-MPT SAS\n\t\t1000 0062  SAS1078 PCI-Express Fusion-MPT SAS\n\t0064  SAS2116 PCI-Express Fusion-MPT SAS-2 [Meteor]\n\t\t1000 3030  9200-16e 6Gb/s SAS/SATA PCIe x8 External HBA\n\t\t1000 30c0  SAS 9201-16i\n\t\t1000 30d0  9201-16e 6Gb/s SAS/SATA PCIe x8 External HBA\n\t0065  SAS2116 PCI-Express Fusion-MPT SAS-2 [Meteor]\n\t006e  SAS2308 PCI-Express Fusion-MPT SAS-2\n\t0070  SAS2004 PCI-Express Fusion-MPT SAS-2 [Spitfire]\n\t\t1000 3010  SAS9211-4i\n\t\t1014 040e  ServeRAID H1110\n\t0071  MR SAS HBA 2004\n\t0072  SAS2008 PCI-Express Fusion-MPT SAS-2 [Falcon]\n\t\t1000 3020  9211-8i\n\t\t1000 3040  9210-8i\n\t\t1000 3080  9200-8e [LSI SAS 6Gb/s SAS/SATA PCIe x8 External HBA]\n\t\t1000 30b0  9200-8e [LSI SAS 6Gb/s SAS/SATA PCIe x8 External HBA]\n\t\t1014 03ca  IBM 6Gb SAS HBA [9212-4i4e]\n\t\t1028 1f1c  6Gbps SAS HBA Adapter\n\t\t1028 1f1d  PERC H200 Adapter\n\t\t1028 1f1e  PERC H200 Integrated\n\t\t1028 1f1f  PERC H200 Modular\n\t\t1028 1f20  PERC H200 Embedded\n\t\t1028 1f22  PERC H200 Internal Tape Adapter\n# Fujitsu D2607 SAS2008 HBA controller\n\t\t1734 1177  HBA Ctrl SAS 6G 0/1 [D2607]\n\t\t1bd4 000d  6G SAS2008IT\n\t\t1bd4 000e  6G SAS2008IR\n\t\t1bd4 000f  6G SAS2008IT SA5248\n\t\t1bd4 0010  6G SAS2008IR SA5248\n\t\t4c52 96c8  LRSA96C8 8-Port SATA3 (6Gb/s) Exchange Adapter (with RAID)\n\t\t8086 350f  RMS2LL040 RAID Controller\n\t\t8086 3700  SSD 910 Series\n\t0073  MegaRAID SAS 2008 [Falcon]\n\t\t1000 9240  MegaRAID SAS 9240-8i\n\t\t1000 9241  MegaRAID SAS 9240-4i\n\t\t1000 92a0  MegaRAID SAS 9220-8i\n\t\t1014 03b1  ServeRAID M1015 SAS/SATA Controller\n\t\t1014 040d  ServeRAID M1115 SAS/SATA Controller\n\t\t1028 1f4e  PERC H310 Adapter\n\t\t1028 1f4f  PERC H310 Integrated\n\t\t1028 1f50  PERC H310 Mini Blades\n\t\t1028 1f51  PERC H310 Mini Monolithics\n\t\t1028 1f52  PERC H310 Embedded1\n\t\t1028 1f53  PERC H310 Embedded2\n\t\t1028 1f54  PERC H310 Reserved\n\t\t1028 1f78  PERC H310\n\t\t1054 3035  LSI MegaRAID SAS 9240-8i\n\t\t1137 0072  2004 iMR ROMB\n\t\t1137 0073  2008 ROMB\n\t\t1137 00b0  UCSC RAID SAS 2008M-8i\n\t\t1137 00b1  UCSC RAID SAS 2008M-8i\n\t\t1137 00c2  UCS E-Series Double Wide\n\t\t1137 00c3  UCS E-Series Single Wide\n\t\t15d9 0400  Supermicro SMC2008-iMR\n\t\t1734 1177  RAID Ctrl SAS 6G 0/1 (D2607)\n\t\t17aa 1051  ThinkServer RAID 510i\n\t\t8086 350d  RMS2AF040 RAID Controller\n\t\t8086 9240  RAID Controller RS2WC080\n\t\t8086 9241  RAID Controller RS2WC040\n\t0074  SAS2108 PCI-Express Fusion-MPT SAS-2 [Liberator]\n\t0076  SAS2108 PCI-Express Fusion-MPT SAS-2 [Liberator]\n\t0077  SAS2108 PCI-Express Fusion-MPT SAS-2 [Liberator]\n\t0079  MegaRAID SAS 2108 [Liberator]\n\t\t1000 9251  MegaRAID SAS 9260-4ix\n\t\t1000 9256  MegaRAID SAS 9260-8ix\n\t\t1000 9260  MegaRAID SAS 9260-4i\n\t\t1000 9261  MegaRAID SAS 9260-8i\n\t\t1000 9262  MegaRAID SAS 9262-8i\n\t\t1000 9263  MegaRAID SAS 9261-8i\n\t\t1000 9264  MegaRAID SAS 9264-8i\n\t\t1000 9267  MegaRAID SAS 9260CV-4i\n\t\t1000 9268  MegaRAID SAS 9260CV-8i\n\t\t1000 9275  MegaRAID SAS 9280-8ex\n\t\t1000 9276  MR9260-16i\n\t\t1000 9280  MegaRAID SAS 9280-8e\n\t\t1000 9281  MegaRAID SAS 9281-8E\n\t\t1000 9282  MegaRAID SAS 9280-4i4e\n\t\t1000 9290  MegaRAID SAS 9280DE-24i4e\n\t\t1014 03b2  ServeRAID M5015 SAS/SATA Controller\n\t\t1014 03b3  ServeRAID M5025 SAS/SATA Controller\n\t\t1028 1f15  PERC H800 Adapter\n\t\t1028 1f16  PERC H700 Adapter\n\t\t1028 1f17  PERC H700 Integrated\n\t\t1028 1f18  PERC H700 Modular\n\t\t1028 1f1a  PERC H800 Proto Adapter\n\t\t1028 1f1b  PERC H700 Integrated\n\t\t1043 8480  PIKE-2108 16PD\n\t\t1734 1176  RAID Ctrl SAS 6G 5/6 512MB (D2616)\n\t\t1734 1177  RAID Ctrl SAS 6G 0/1 (D2607)\n\t\t8086 350b  RMS2MH080 RAID Controller\n\t\t8086 9256  MegaRAID SAS 9260DE-8i RS2BL080DE\n\t\t8086 9260  RAID Controller RS2BL040\n\t\t8086 9261  RAID Controller RS2BL080\n\t\t8086 9264  RAID Controller RT3WB080 Warm Beach (Caster Lite)\n\t\t8086 9267  RAID Controller RS2VB040\n\t\t8086 9268  RAID Controller RS2VB080\n\t\t8086 9275  RAID Controller RS2PI008DE\n\t\t8086 9276  RAID Controller RS2WG160\n\t\t8086 9280  RAID Controller RS2PI008\n\t\t8086 9282  RAID Controller RS2MB044\n\t\t8086 9290  RAID Controller RS2SG244\n\t007c  MegaRAID SAS 1078DE\n\t\t1014 0395  ServeRAID-AR10is SAS/SATA Controller\n\t007e  SSS6200 PCI-Express Flash SSD\n\t\t1000 0504  Nytro NWD-BLP4-800\n\t\t1000 0507  Nytro NWD-BLP4-1600\n\t\t1000 0581  Nytro NWD-BLP4-400\n\t\t1000 100d  Nytro NWD-BFH6-1200\n\t\t1000 100e  Nytro NWD-BFH8-1600\n\t\t1000 107e  Nytro NWD-BFH8-3200\n\t\t1000 1310  Nytro XP6302-8B1536\n\t\t1000 1311  Nytro XP6302-8B2048\n\t\t1000 1314  Nytro XP6302-8B4096\n\t\t1000 150c  Nytro XP6210-4A2048\n\t\t1000 150f  Nytro XP6210-4B2048\n\t\t1000 160b  Nytro XP6209-4A1024\n\t\t1000 1613  Nytro XP6209-4B2048\n\t\t108e 050a  Nytro ELP4x200_4d_n\n\t\t108e 0581  Nytro ELP4x100_4d_n\n\t0080  SAS2208 PCI-Express Fusion-MPT SAS-2\n\t0081  SAS2208 PCI-Express Fusion-MPT SAS-2\n\t0082  SAS2208 PCI-Express Fusion-MPT SAS-2\n\t0083  SAS2208 PCI-Express Fusion-MPT SAS-2\n\t0084  SAS2208 PCI-Express Fusion-MPT SAS-2\n\t0085  SAS2208 PCI-Express Fusion-MPT SAS-2\n\t0086  SAS2308 PCI-Express Fusion-MPT SAS-2\n\t\t15d9 0690  Onboard MegaRAID SAS2208 [Thunderbolt]\n\t\t15d9 0691  Onboard SAS2308 PCI-Express Fusion-MPT SAS-2\n\t0087  SAS2308 PCI-Express Fusion-MPT SAS-2\n\t\t1000 3020  9207-8i SAS2.1 HBA\n\t\t1000 3030  SAS9207-4i4e\n\t\t1000 3040  9207-8e SAS2.1 HBA\n\t\t1000 3050  SAS9217-8i\n\t\t1000 3060  SAS9217-4i4e\n\t\t1014 0472  N2125 External Host Bus Adapter\n\t\t1014 047a  N2115 Internal Host Bus Adapter\n\t\t1590 0041  H220i\n\t\t1590 0042  H221 / 9207-8e\n\t\t1590 0044  H220i\n\t\t1bd4 0009  6G SAS2308IR\n\t\t1bd4 000a  6G SAS2308IT\n\t\t8086 3000  RS25GB008 RAID Controller\n\t\t8086 3060  RS25FB044 RAID Controller\n\t\t8086 3516  RMS25JB080 RAID Controller\n\t\t8086 3517  RMS25JB040 RAID Controller\n\t\t8086 3518  RMS25KB080 RAID Controller\n\t\t8086 3519  RMS25KB040 RAID Controller\n\t\t8086 351a  RMS25LB040 RAID Controller\n\t\t8086 351b  RMS25LB080 RAID Controller\n\t008f  53c875J\n\t\t1092 8000  FirePort 40 SCSI Controller\n\t\t1092 8760  FirePort 40 Dual SCSI Host Adapter\n\t0090  SAS3108 PCI-Express Fusion-MPT SAS-3\n\t0091  SAS3108 PCI-Express Fusion-MPT SAS-3\n\t0094  SAS3108 PCI-Express Fusion-MPT SAS-3\n\t0095  SAS3108 PCI-Express Fusion-MPT SAS-3\n\t0096  SAS3004 PCI-Express Fusion-MPT SAS-3\n\t0097  SAS3008 PCI-Express Fusion-MPT SAS-3\n\t\t1000 3090  SAS9311-8i\n\t\t1000 30a0  SAS9300-8e\n\t\t1000 30e0  SAS9300-8i\n\t\t1000 3130  SAS 9300-16i\n\t\t1000 3170  SAS9302-16e\n# IBM SAS3008 HBA controller\n\t\t1014 0457  9302-8i [N2215]\n\t\t1028 1f45  HBA330 Adapter\n\t\t1028 1f46  12Gbps HBA\n\t\t1028 1f53  HBA330 Mini\n\t\t1028 1fd2  HBA330 MX\n\t\t1028 1fd3  HBA330 MMZ\n# Supermicro AOC-S3008L-L8e uses 0808 for their SAS3008 SAS controller\n\t\t15d9 0808  AOC-S3008L-L8e\n\t\t1bd4 0008  12G SAS3008IMR Onboard\n\t\t1bd4 000b  12G SAS3008IR\n\t\t1bd4 000c  12G SAS3008IT\n\t\t1bd4 0011  Inspur 12Gb 8i-3008 IT SAS HBA\n\t\t1bd4 0012  12Gb SAS3008IR UDM\n\t\t1bd4 001f  12G SAS3008IR Onboard\n\t\t1bd4 0020  12G SAS3008IT Onboard\n\t\t1bd4 0026  12G SAS3008IT RACK\n\t\t1bd4 0027  12G SAS3008IMR RACK\n\t\t1bd4 0028  12G SAS3008IR RACK\n\t00a5  Fusion-MPT 24GSAS/PCIe SAS40xx/41xx\n\t\t1000 4600  MegaRAID 9670W-16i Tri-Mode Storage Adapter\n\t\t1000 4610  MegaRAID 9670-24i Tri-Mode Storage Adapter\n\t\t1000 4620  MegaRAID 9660-16i Tri-Mode Storage Adapter\n\t\t1000 4630  MegaRAID 9660-8i8e Tri-Mode Storage Adapter\n\t\t1000 4640  eHBA 9600W-16i Tri-Mode Storage Adapter\n\t\t1000 4650  eHBA 9600W-16e Tri-Mode Storage Adapter\n\t\t1000 4660  eHBA 9600-24i Tri-Mode Storage Adapter\n\t\t1000 4670  eHBA 9600-16i Tri-Mode Storage Adapter\n\t\t1000 4680  eHBA 9600-16e Tri-Mode Storage Adapter\n\t\t1000 4690  MegaRAID 9620-16i Tri-Mode Storage Adapter\n\t\t1000 46a0  MegaRAID 9660-24i Tri-Mode Storage Adapter\n\t\t1000 46c0  eHBA 9680W-16e Tri-Mode Storage Adapter\n\t\t1000 46d0  eHBA 9600-8i8e Tri-Mode Storage Adapter\n# eHBA 9602W-16e Tri-Mode Storage Adapter\n\t\t1000 46e0  eHBA 9602W-16e Tri-Mode Storage Adapter\n\t\t1028 2114  PERC H965i Adapter\n\t\t1028 2115  PERC H965i Front\n\t\t1028 2117  PERC H965i MX\n\t\t1028 213a  PERC H965e Adapter\n\t\t1028 213b  PERC H765i Adapter\n\t\t1028 213c  PERC H765i Front\n\t\t1028 213d  PERC H765N Front\n\t\t1028 213e  PERC H765i MX\n\t\t1028 213f  PERC H365i Adapter\n\t\t1028 2140  PERC H365i Front\n\t\t1028 2142  HBA465e Adapter\n\t\t1028 2209  HBA465i Adapter\n\t\t1028 220a  HBA465i Front\n\t\t1028 22cb  PERC H365i Front\n\t\t1028 22cc  PERC H965i Front\n\t\t1028 22cd  HBA465i Front\n\t\t15d9 1d03  AOC-S4116L-H16IR (16DD/96DD) RAID Adapter\n\t\t15d9 1d07  AOC-S4016L-L16IT Storage Adapter\n\t\t15d9 1d08  AOC-S4016L-L16IR Storage Adapter\n\t\t1d49 020a  ThinkSystem 450W-16e SAS/SATA PCIe Gen4 24Gb HBA\n\t00ab  SAS3516 Fusion-MPT Tri-Mode RAID On Chip (ROC)\n# 8 Internal and 8 External port channel 9400 HBA\n\t\t1000 3040  HBA 9400-8i8e\n\t\t8086 3530  Integrated RAID Module RMSP3JD160J\n\t00ac  SAS3416 Fusion-MPT Tri-Mode I/O Controller Chip (IOC)\n# Channel 16 internal port HBA\n\t\t1000 3000  HBA 9400-16i\n# Channel 16 external port HBA\n\t\t1000 3020  HBA 9400-16e\n\t\t1028 1fe3  HBA345 Adapter\n\t\t1028 1fe4  HBA345 Front\n\t\t1d49 0201  ThinkSystem 430-16i SAS/SATA 12Gb HBA\n\t\t1d49 0203  ThinkSystem 430-16e SAS/SATA 12Gb HBA\n\t\t8086 3000  RAID Controller RSP3QD160J\n\t\t8086 3020  RAID Controller RSP3GD016J\n\t00ae  SAS3508 Fusion-MPT Tri-Mode RAID On Chip (ROC)\n\t00af  SAS3408 Fusion-MPT Tri-Mode I/O Controller Chip (IOC)\n\t\t1000 3010  HBA 9400-8i\n# 9400 Channel 8 external port HBA\n\t\t1000 3030  HBA 9400-8e\n\t\t1d49 0200  ThinkSystem 430-8i SAS/SATA 12Gb HBA\n\t\t1d49 0202  ThinkSystem 430-8e SAS/SATA 12Gb HBA\n\t\t1d49 0204  ThinkSystem 430-8i SAS/SATA 12Gb Dense HBA\n\t00b2  PCIe Switch management endpoint\n\t\t1d49 0003  ThinkSystem 1611-8P PCIe Gen4 NVMe Switch Adapter\n# 24G SAS/PCIe storage adapter chip\n\t00b3  Fusion-MPT 24G SAS/PCIe SAS50xx/SAS51xx\n# 9760W 32 internal port RAID controller\n\t\t1000 5000  MegaRAID 9760W-32i 24G SAS/PCIe Storage Adapter\n# 9760W 16 internal port RAID controller\n\t\t1000 5001  MegaRAID 9760W-16i 24G SAS/PCIe Storage Adapter\n# 9760W 16 internal and 16 external port RAID controller\n\t\t1000 5010  MegaRAID 9760W-16i16e 24G SAS/PCIe Storage Adapter\n# 9700W 32 internal port Storage controller\n\t\t1000 5020  eHBA 9700W-32i 24G SAS/PCIe Storage Adapter\n# 9700W 16 internal port Storage controller\n\t\t1000 5021  eHBA 9700W-16i 24G SAS/PCIe Storage Adapter\n# 9700 16 external port Storage controller\n\t\t1000 5030  eHBA 9700-16e 24G SAS/PCIe Storage Adapter\n\t\t1028 22d2  PERC H975i Front\n\t\t1028 22d3  PERC H975i Adapter\n\t\t1028 23cb  PERC H975i Front\n\t\t1028 23cd  PERC H975i Adapter\n\t\t1028 2446  PERC H976i Front\n\t\t1d49 020b  ThinkSystem 460-16e SAS/SATA PCIe Gen5 24Gb HBA\n\t00b5  Fusion-MPT 24G SAS/PCIe SAS50xx/SAS51xx\n# 9760W 32 internal port RAID controller\n\t\t1000 5000  MegaRAID 9760W-32i 24G SAS/PCIe Storage Adapter\n# 9760W 16 internal port RAID controller\n\t\t1000 5001  MegaRAID 9760W-16i 24G SAS/PCIe Storage Adapter\n# 9760W 16 internal and 16 external port RAID controller\n\t\t1000 5010  MegaRAID 9760W-16i16e 24G SAS/PCIe Storage Adapter\n# 9700W 32 internal port Storage controller\n\t\t1000 5020  eHBA 9700W-32i 24G SAS/PCIe Storage Adapter\n# 9700W 16 internal port Storage controller\n\t\t1000 5021  eHBA 9700W-16i 24G SAS/PCIe Storage Adapter\n# 9700 16 external port Storage controller\n\t\t1000 5030  eHBA 9700-16e 24G SAS/PCIe Storage Adapter\n\t\t1028 22d2  PERC H975i Front - Virtual\n\t\t1028 22d3  PERC H975i Adapter - Virtual\n\t\t1028 23cb  PERC H975i Front - Virtual\n\t\t1028 23cd  PERC H975i Adapter - Virtual\n\t\t1028 2446  PERC H976i Front - Virtual\n# Broadcom next-gen MPT PCIe switch\n\t00b8  Fusion-MPT Switch SAS50xx/SAS51xx\n\t00be  SAS3504 Fusion-MPT Tri-Mode RAID On Chip (ROC)\n\t00bf  SAS3404 Fusion-MPT Tri-Mode I/O Controller Chip (IOC)\n\t00c0  SAS3324 PCI-Express Fusion-MPT SAS-3\n\t00c1  SAS3324 PCI-Express Fusion-MPT SAS-3\n\t00c2  SAS3324 PCI-Express Fusion-MPT SAS-3\n\t00c3  SAS3324 PCI-Express Fusion-MPT SAS-3\n\t00c4  SAS3224 PCI-Express Fusion-MPT SAS-3\n# SAS 9305 16 internal port HBA\n\t\t1000 3190  SAS9305-16i\n# SAS 9305 24 internal port HBA\n\t\t1000 31a0  SAS9305-24i\n\t\t1170 0002  SAS3224 PCI Express to 12Gb HBA MEZZ CARD\n\t00c5  SAS3316 PCI-Express Fusion-MPT SAS-3\n\t00c6  SAS3316 PCI-Express Fusion-MPT SAS-3\n\t00c7  SAS3316 PCI-Express Fusion-MPT SAS-3\n\t00c8  SAS3316 PCI-Express Fusion-MPT SAS-3\n\t00c9  SAS3216 PCI-Express Fusion-MPT SAS-3\n# 9305 16 external port SAS HBA\n\t\t1000 3180  SAS9305-16e\n\t00ce  MegaRAID SAS-3 3316 [Intruder]\n\t\t1000 9371  MegaRAID SAS 9361-16i\n\t\t1000 9390  MegaRAID SAS 9380-8i8e\n\t00cf  MegaRAID SAS-3 3324 [Intruder]\n\t\t1000 9370  MegaRAID SAS 9361-24i\n\t00d0  SAS3716 Fusion-MPT Tri-Mode RAID Controller Chip (ROC)\n# 9405W 16 internal port channel HBA\n\t\t1000 3050  HBA 9405W-16i\n# 9405W 8 internal and 8 external port channel HBA\n\t\t1000 3070  HBA 9405W-8i8e\n\t00d1  SAS3616 Fusion-MPT Tri-Mode I/O Controller Chip (IOC)\n# 9405W 16 external port Channel HBA\n\t\t1000 3080  HBA 9405W-16e\n# 9405W 16 internal port Channel HBA\n\t\t1000 3090  HBA 9405W-16i\n\t00d3  MegaRAID Tri-Mode SAS3716W\n\t00e0  Fusion-MPT 12GSAS/PCIe Unsupported SAS39xx\n\t00e1  Fusion-MPT 12GSAS/PCIe SAS39xx\n\t00e2  Fusion-MPT 12GSAS/PCIe Secure SAS39xx\n\t00e3  Fusion-MPT 12GSAS/PCIe Unsupported SAS39xx\n\t00e4  Fusion-MPT 12GSAS/PCIe Unsupported SAS38xx\n# Invalid part\n\t\t1028 200b  HBA355i Adapter Invalid\n# Invalid part\n\t\t1028 200c  HBA355i Front Invalid\n# Invalid part\n\t\t1028 200d  HBA355e Adapter Invalid\n# Invalid part\n\t\t1028 200e  HBA350i MX Invalid\n# Soft Secure\n\t00e5  Fusion-MPT 12GSAS/PCIe SAS38xx\n# Soft Secure\n\t\t1028 200b  HBA355i Adapter\n# Soft Secure\n\t\t1028 200c  HBA355i Front\n# Soft Secure\n\t\t1028 200d  HBA355e Adapter\n# Soft Secure\n\t\t1028 200e  HBA350i MX\n\t\t1d49 0205  ThinkSystem 440-16i SAS/SATA PCIe Gen4 12Gb Internal HBA\n\t\t1d49 0206  ThinkSystem 440-16e SAS/SATA PCIe Gen4 12Gb HBA\n\t00e6  Fusion-MPT 12GSAS/PCIe Secure SAS38xx\n\t\t1000 4050  9500-16i Tri-Mode HBA\n\t\t1000 4060  9500-8i Tri-Mode HBA\n\t\t1000 4070  9500-16e Tri-Mode HBA\n\t\t1000 4080  9500-8e Tri-Mode HBA\n\t\t1028 200b  HBA355i Adapter\n\t\t1028 200c  HBA355i Front\n\t\t1028 200d  HBA355e Adapter\n\t\t1028 200e  HBA350i MX\n\t\t1028 2170  HBA350i MM\n\t\t1028 2175  HBA350i Adapter\n\t\t1028 2197  HBA350i MM LP\n\t\t1028 2212  HBA355e-s Adapter\n\t\t15d9 1b64  SCC-B8SB80-B1 (NI22) Storage Controller Card\n\t\t15d9 1b65  AOC-S3816L-L16iT (NI22) Storage Adapter\n\t\t15d9 1b99  AOC-S3808L-L8iT Storage Adapter\n\t\t1d49 0205  ThinkSystem 440-16i SAS/SATA PCIe Gen4 12Gb Internal HBA\n\t\t1d49 0206  ThinkSystem 440-16e SAS/SATA PCIe Gen4 12Gb HBA\n\t\t1d49 0207  ThinkSystem 440-8i SAS/SATA PCIe Gen4 12Gb HBA\n\t\t1d49 0208  ThinkSystem 440-16i SAS/SATA PCIe Gen4 12Gb HBA\n\t\t1d49 0209  ThinkSystem 440-8e SAS/SATA PCIe Gen4 12Gb HBA\n\t\t8086 4050  Storage Controller RS3P4QF160J\n\t\t8086 4070  Storage Controller RS3P4GF016J\n\t00e7  Fusion-MPT 12GSAS/PCIe Unsupported SAS38xx\n# Tampered part\n\t\t1028 200b  HBA355i Adapter Tampered\n# Tampered part\n\t\t1028 200c  HBA355i Front Tampered\n# Tampered part\n\t\t1028 200d  HBA355e Adapter Tampered\n# Tampered part\n\t\t1028 200e  HBA350i MX Tampered\n\t02b0  Virtual Endpoint on PCIe Switch\n\t\t1d49 0001  ThinkSystem 1610-4P NVMe Switch Adapter\n\t\t1d49 0002  ThinkSystem 810-4P NVMe Switch Adapter\n\t02b1  Virtual Endpoint on PCIe Switch (9749)\n\t\t1d49 0004  ThinkSystem 1610-8P NVMe Switch Adapter\n# Virtual endpoint used in Broadcom synthetic PCIe switches for resource reservation\n\t02b2  Virtual PCIe Placeholder Endpoint\n\t0407  MegaRAID\n\t\t1000 0530  MegaRAID 530 SCSI 320-0X RAID Controller\n\t\t1000 0531  MegaRAID 531 SCSI 320-4X RAID Controller\n\t\t1000 0532  MegaRAID 532 SCSI 320-2X RAID Controller\n\t\t1028 0531  PowerEdge Expandable RAID Controller 4/QC\n\t\t1028 0533  PowerEdge Expandable RAID Controller 4/QC\n\t\t8086 0530  MegaRAID Intel RAID Controller SRCZCRX\n\t\t8086 0532  MegaRAID Intel RAID Controller SRCU42X\n\t0408  MegaRAID\n\t\t1000 0001  MegaRAID SCSI 320-1E RAID Controller\n\t\t1000 0002  MegaRAID SCSI 320-2E RAID Controller\n\t\t1025 004d  MegaRAID ACER ROMB-2E RAID Controller\n\t\t1028 0001  PowerEdge RAID Controller PERC4e/SC\n\t\t1028 0002  PowerEdge RAID Controller PERC4e/DC\n\t\t1028 0012  PowerEdge RAID Controller RAC4\n\t\t1028 0015  PowerEdge RAID Controller PERC5\n\t\t1028 1f03  PowerEdge RAID Controller PERC5\n\t\t1734 1065  FSC MegaRAID PCI Express ROMB\n\t\t8086 0002  MegaRAID Intel RAID Controller SRCU42E\n\t\t8086 3449  MegaRAID Intel RAID Controller SROMBU\n\t0409  MegaRAID\n\t\t1000 3004  MegaRAID SATA 300-4X RAID Controller\n\t\t1000 3008  MegaRAID SATA 300-8X RAID Controller\n\t\t8086 3008  MegaRAID RAID Controller SRCS28X\n\t\t8086 3431  MegaRAID RAID Controller Alief SROMBU42E\n\t\t8086 3499  MegaRAID RAID Controller Harwich SROMBU42E\n\t0411  MegaRAID SAS 1068\n\t\t1000 1001  MegaRAID SAS 8408E\n\t\t1000 1002  MegaRAID SAS 8480E\n\t\t1000 1003  MegaRAID SAS 8344ELP\n\t\t1000 1004  MegaRAID SAS 8308ELP\n\t\t1000 1008  MegaRAID SAS 84016E\n\t\t1000 100c  MegaRAID SATA 300-12E\n\t\t1000 100d  MegaRAID SATA 300-16E\n\t\t1000 2004  MegaRAID SATA 300-8ELP\n\t\t1000 2005  MegaRAID SATA 300-4ELP\n\t\t1033 8287  MegaRAID SAS PCI Express ROMB\n\t\t1054 3016  MegaRAID SAS RoMB Server\n\t\t1734 1081  MegaRAID SAS PCI Express ROMB\n\t\t1734 10a3  MegaRAID SAS PCI Express ROMB\n\t\t8086 1001  RAID Controller SRCSAS18E\n\t\t8086 1003  RAID Controller SRCSAS144E\n\t\t8086 3500  SROMBSAS18E RAID Controller\n\t\t8086 3501  SROMBSAS18E RAID Controller\n\t\t8086 3504  SROMBSAS18E RAID Controller\n\t0413  MegaRAID SAS 1068 [Verde ZCR]\n\t\t1000 1005  MegaRAID SAS 8300XLP\n\t0621  FC909 Fibre Channel Adapter\n\t0622  FC929 Fibre Channel Adapter\n\t\t1000 1020  44929 O Dual Fibre Channel card\n\t0623  FC929 LAN\n\t0624  FC919 Fibre Channel Adapter\n\t0625  FC919 LAN\n\t0626  FC929X Fibre Channel Adapter\n\t\t1000 1010  7202-XP-LC Dual Fibre Channel card\n\t0627  FC929X LAN\n\t0628  FC919X Fibre Channel Adapter\n\t0629  FC919X LAN\n\t0640  FC949X Fibre Channel Adapter\n\t0642  FC939X Fibre Channel Adapter\n\t0646  FC949ES Fibre Channel Adapter\n\t0701  83C885 NT50 DigitalScape Fast Ethernet\n\t0702  Yellowfin G-NIC gigabit ethernet\n\t\t1318 0000  PEI100X\n\t0804  SA2010\n\t0805  SA2010ZC\n\t0806  SA2020\n\t0807  SA2020ZC\n\t0901  61C102\n\t1000  63C815\n\t10e0  MegaRAID 12GSAS/PCIe Unsupported SAS39xx\n\t\t1028 1ae0  PERC H755 Adapter - Invalid Device\n\t\t1028 1ae1  PERC H755 Front - Invalid Device\n\t\t1028 1ae2  PERC H755N Front - Invalid Device\n\t\t1028 1ae3  PERC H755 MX - Invalid Device\n\t10e1  MegaRAID 12GSAS/PCIe SAS39xx\n\t\t1028 1ae0  PERC H755 Adapter\n\t\t1028 1ae1  PERC H755 Front\n\t\t1028 1ae2  PERC H755N Front\n\t\t1028 1ae3  PERC H755 MX\n\t\t1d49 060a  ThinkSystem RAID 940-8i 4GB Flash PCIe Gen4 12Gb Adapter\n\t\t1d49 060b  ThinkSystem RAID 940-8i 8GB Flash PCIe Gen4 12Gb Adapter\n\t\t1d49 060c  ThinkSystem RAID 940-16i 8GB Flash PCIe Gen4 12Gb Adapter\n\t\t1d49 060d  ThinkSystem RAID 940-16i 8GB Flash PCIe Gen4 12Gb Internal Adapter\n\t\t1d49 060e  ThinkSystem RAID 940-32i 8GB Flash PCIe Gen4 12Gb Adapter\n\t\t1d49 060f  ThinkSystem RAID 940-8e 4GB Flash PCIe Gen4 12Gb Adapter\n\t10e2  MegaRAID 12GSAS/PCIe Secure SAS39xx\n# 9560 16 internal port RAID controller\n\t\t1000 4000  MegaRAID 9560-16i\n# 9561 16 internal port RAID controller\n\t\t1000 4002  MegaRAID 9561-16i\n# 9560 8 internal port RAID controller\n\t\t1000 4010  MegaRAID 9560-8i\n# 9550 8 internal port RAID controller\n\t\t1000 4015  MegaRAID 9550-8i\n# 9580 8 internal & 8 external port RAID controller\n\t\t1000 4020  MegaRAID 9580-8i8e\n# MegaRAID 9562-16i 9562 16 internal port RAID controller\n\t\t1000 40b0  MegaRAID 9562-16i\n\t\t1028 1ae0  PERC H755 Adapter\n\t\t1028 1ae1  PERC H755 Front\n\t\t1028 1ae2  PERC H755N Front\n\t\t1028 1ae3  PERC H755 MX\n\t\t1028 2171  PERC H750 Mini\n\t\t1028 2176  PERC H750 Adapter\n\t\t15d9 1b66  AOC-S3908L-H8iR RAID Adapter\n\t\t15d9 1b67  AOC-S3916L-H16iR RAID Adapter\n\t\t15d9 1c06  AOC-S3916L-H16iR-32DD+ RAID Adapter\n\t\t1d49 060a  ThinkSystem RAID 940-8i 4GB Flash PCIe Gen4 12Gb Adapter\n\t\t1d49 060b  ThinkSystem RAID 940-8i 8GB Flash PCIe Gen4 12Gb Adapter\n\t\t1d49 060c  ThinkSystem RAID 940-16i 8GB Flash PCIe Gen4 12Gb Adapter\n\t\t1d49 060d  ThinkSystem RAID 940-16i 8GB Flash PCIe Gen4 12Gb Internal Adapter\n\t\t1d49 060e  ThinkSystem RAID 940-32i 8GB Flash PCIe Gen4 12Gb Adapter\n\t\t1d49 060f  ThinkSystem RAID 940-8e 4GB Flash PCIe Gen4 12Gb Adapter\n\t\t1d49 0610  ThinkSystem RAID 940-16i 4GB Flash PCIe Gen4 12Gb Adapter\n\t\t8086 4000  RAID Controller RS3P4TF160F\n\t\t8086 4020  RAID Controller RS3P4MF088F\n\t10e3  MegaRAID 12GSAS/PCIe Unsupported SAS39xx\n\t\t1028 1ae0  PERC H755 Adapter - Tampered Device\n\t\t1028 1ae1  PERC H755 Front - Tampered Device\n\t\t1028 1ae2  PERC H755N Front - Tampered Device\n\t\t1028 1ae3  PERC H755 MX - Tampered Device\n\t10e4  MegaRAID 12GSAS/PCIe Unsupported SAS38xx\n\t10e5  MegaRAID 12GSAS/PCIe SAS38xx\n\t10e6  MegaRAID 12GSAS/PCIe Secure SAS38xx\n\t\t1000 04d9  3808N iMR ROMB\n\t\t1000 04da  3808N iMR ROMB\n\t\t1000 04db  3808N iMR ROMB\n\t\t1000 04dc  3808N iMR ROMB\n\t\t1000 04dd  3808N iMR ROMB\n# String pulled from Broadcom storcli \"Product Name\"\n\t\t1000 40d5  MegaRAID 9540-8i\n# String pulled from Broadcom storcli \"Product Name\"\n\t\t1000 40d6  MegaRAID 9520-8i\n\t\t1000 40d8  MegaRAID 9524-8i\n\t\t1000 40e0  MegaRAID 9540-2M2\n\t\t1028 1a3d  BOSS-MR1\n\t\t1028 2172  PERC H355 Adapter\n\t\t1028 2173  PERC H355 Front\n\t\t1028 2174  PERC H350 Mini\n\t\t1028 2177  PERC H350 Adapter\n\t\t1028 2199  PERC H350 Mini LP\n\t\t15d9 1b9d  AOC-S3816L-L16IR Storage Adapter\n\t\t15d9 1b9f  AOC-S3816L-L8IR Storage Adapter\n\t\t15d9 1c6d  AOC-S3808L-L8IR Storage Adapter\n\t\t15d9 1c6e  AOC-SLG4-2H8M2 Storage Adapter\n\t\t1d49 0505  ThinkSystem RAID 540-8i PCIe Gen4 12Gb Adapter\n\t\t1d49 0506  ThinkSystem RAID 540-16i PCIe Gen4 12Gb Adapter\n\t\t1d49 0507  ThinkSystem RAID 545-8i PCIe Gen4 12Gb Adapter\n\t\t1d49 0700  ThinkSystem M.2 RAID B540i-2i SATA/NVMe Enablement Kit\n\t\t1d49 0701  ThinkSystem 7mm RAID B540p-2HS SATA/NVMe Enablement Kit\n\t\t1d49 0702  ThinkSystem M.2 RAID B540p-2HS SATA/NVMe Enablement Kit\n\t\t1d49 0703  ThinkSystem M.2 RAID B540d-2HS SATA/NVMe Enablement Kit\n\t\t1d49 0704  ThinkSystem M.2 RAID B545i-2i SATA/NVMe Enablement Kit\n\t10e7  MegaRAID 12GSAS/PCIe Unsupported SAS38xx\n\t1960  MegaRAID\n\t\t1000 0518  MegaRAID 518 SCSI 320-2 Controller\n\t\t1000 0520  MegaRAID 520 SCSI 320-1 Controller\n\t\t1000 0522  MegaRAID 522 i4 133 RAID Controller\n\t\t1000 0523  MegaRAID SATA 150-6 RAID Controller\n\t\t1000 4523  MegaRAID SATA 150-4 RAID Controller\n\t\t1000 a520  MegaRAID ZCR SCSI 320-0 Controller\n\t\t1028 0518  MegaRAID 518 DELL PERC 4/DC RAID Controller\n\t\t1028 0520  MegaRAID 520 DELL PERC 4/SC RAID Controller\n\t\t1028 0531  PowerEdge Expandable RAID Controller 4/QC\n\t\t1028 0533  PowerEdge Expandable RAID Controller 4/QC\n\t\t8086 0520  MegaRAID RAID Controller SRCU41L\n\t\t8086 0523  MegaRAID RAID Controller SRCS16\n\t3050  SAS2008 PCI-Express Fusion-MPT SAS-2\n\t3150  1068e\n\t6001  DX1 Multiformat Broadcast HD/SD Encoder/Decoder\n\tc010  PEX880xx PCIe Gen 4 Switch\n\t\t1000 100b  PEX88000 PCIe Gen 4 Virtual Upstream/Downstream Port\n\t\t1000 2004  PEX88000 Virtual PCIe TWC/NT2 Endpoint\n\t\t1000 2005  PEX88000 Virtual PCIe gDMA Endpoint\n\t\t1000 a024  PEX88024 24 lane/port PCIe Gen 4.0 Switch\n\t\t1000 a032  PEX88032 32 lane/port PCIe Gen 4 Switch\n\t\t1000 a048  PEX88048 50 lane/port PCIe Gen 4.0 Switch\n\t\t1000 a064  PEX88064 64 lane/port PCIe Gen 4 Switch\n\t\t1000 a080  PEX88080 80 lane/port PCIe Gen 4 Switch\n\t\t1000 a096  PEX88096 98 lane/port PCIe Gen 4.0 Switch\n\t\t4c52 9f48  LRNV9F48 4-port Built-in 8654 NVMe Switching Adapter\n\tc012  PEX880xx PCIe Gen 4 Switch\n# Virtual endpoint used in Broadcom synthetic PCIe switches for resource reservation\n\t\t1000 100b  PEX88000 PCIe Gen 4 Virtual Upstream/Downstream Port\n# For secure part version of this chip\n\t\t1000 2004  PEX88000 Virtual PCIe TWC/NT2 Endpoint\n# For secure part version of this chip\n\t\t1000 2005  PEX88000 Virtual PCIe gDMA Endpoint\n# For secure part version of this chip\n\t\t1000 a024  PEX88024 24 lane/port PCIe Gen 4.0 Switch\n# For secure part version of this chip\n\t\t1000 a032  PEX88032 32 lane/port PCIe Gen 4.0 Switch\n# For secure part version of this chip\n\t\t1000 a048  PEX88048 48 lane/port PCIe Gen 4.0 Switch\n\t\t1000 a064  PEX88064 64 lane/port PCIe Gen 4.0 Switch\n# For secure part version of this chip\n\t\t1000 a080  PEX88080 80 lane/port PCIe Gen 4.0 Switch\n# For secure part version of this chip\n\t\t1000 a096  PEX88096 96 lane/port PCIe Gen 4.0 Switch\n\t\t1d49 0003  ThinkSystem 1611-8P PCIe Gen4 NVMe Switch Adapter\n\tc030  PEX890xx PCIe Gen 5 Switch\n\t\t1000 0024  PEX89024 PCIe Gen 5 24 port/lane Switch Upstream/Downstream Port\n\t\t1000 0032  PEX89032 PCIe Gen 5 32 port/lane Switch Upstream/Downstream Port\n\t\t1000 0048  PEX89048 PCIe Gen 5 48 port/lane Switch Upstream/Downstream Port\n\t\t1000 0072  PEX89072 PCIe Gen 5 36 port/72 lane Switch Upstream/Downstream Port\n\t\t1000 0088  PEX89088 PCIe Gen 5 44 port/88 lane Switch Upstream/Downstream Port\n\t\t1000 0104  PEX89104 PCIe Gen 5 52 port/104 lane Switch Upstream/Downstream Port\n\t\t1000 0144  PEX89144 PCIe Gen 5 72 port/144 lane Switch Upstream/Downstream Port\n\t\t1000 100b  PEX89000 PCIe Gen 5 Virtual Upstream/Downstream Port\n\t\t1000 2004  PEX89000 Virtual PCIe TWC/NT 2.0 Endpoint\n\t\t1000 2005  PEX89000 Virtual PCIe gDMA Endpoint\n# Lower lane count PEX89000 switch\n\tc034  PEX890xx PCIe Gen 5 Switch\n# Lower lane count PEX89000 switch\n\t\t1000 0024  PEX89024 PCIe Gen 5 24 port/lane Switch Upstream/Downstream Port\n\t\t1000 0032  PEX89032 PCIe Gen 5 32 port/lane Switch Upstream/Downstream Port\n# Lower lane count PEX89000 switch\n\t\t1000 0048  PEX89048 PCIe Gen 5 48 port/lane Switch Upstream/Downstream Port\n# Lower lane count PEX89000 switch\n\t\t1000 100b  PEX89000 PCIe Gen 5 Virtual Upstream/Downstream Port\n# Lower lane count PEX89000 switch\n\t\t1000 2004  PEX89000 Virtual PCIe TWC/NT 2.0 Endpoint\n# Lower lane count PEX89000 switch\n\t\t1000 2005  PEX89000 Virtual PCIe gDMA Endpoint\n1001  Kolter Electronic\n\t0010  PCI 1616 Measurement card with 32 digital I/O lines\n\t0011  OPTO-PCI Opto-Isolated digital I/O board\n\t0012  PCI-AD/DA Analogue I/O board\n\t0013  PCI-OPTO-RELAIS Digital I/O board with relay outputs\n\t0014  PCI-Counter/Timer Counter Timer board\n\t0015  PCI-DAC416 Analogue output board\n\t0016  PCI-MFB Analogue I/O board\n\t0017  PROTO-3 PCI Prototyping board\n\t9100  INI-9100/9100W SCSI Host\n# nee ATI Technologies, Inc.\n1002  Advanced Micro Devices, Inc. [AMD/ATI]\n\t1114  Krackan [Radeon 840M / 860M Graphics]\n\t1304  Kaveri\n\t1305  Kaveri\n\t1306  Kaveri\n\t1307  Kaveri\n\t1308  Kaveri HDMI/DP Audio Controller\n\t\t17aa 3988  Z50-75\n\t1309  Kaveri [Radeon R6/R7 Graphics]\n\t\t17aa 3830  Z50-75\n\t130a  Kaveri [Radeon R6 Graphics]\n\t130b  Kaveri [Radeon R4 Graphics]\n\t130c  Kaveri [Radeon R7 Graphics]\n\t130d  Kaveri [Radeon R6 Graphics]\n\t130e  Kaveri [Radeon R5 Graphics]\n\t130f  Kaveri [Radeon R7 Graphics]\n\t1310  Kaveri\n\t1311  Kaveri\n\t1312  Kaveri\n\t1313  Kaveri [Radeon R7 Graphics]\n\t1314  Wrestler HDMI Audio\n\t\t174b 1001  PURE Fusion Mini\n\t1315  Kaveri [Radeon R5 Graphics]\n\t1316  Kaveri [Radeon R5 Graphics]\n\t1317  Kaveri\n\t1318  Kaveri [Radeon R5 Graphics]\n\t131b  Kaveri [Radeon R4 Graphics]\n\t131c  Kaveri [Radeon R7 Graphics]\n\t131d  Kaveri [Radeon R6 Graphics]\n\t13c0  Granite Ridge [Radeon Graphics]\n\t13e9  Ariel/Navi10Lite\n\t13f9  Oberon/Navi12Lite\n\t13fe  Cyan Skillfish [BC-250]\n# Used in the Steam Deck OLED\n\t1435  Sephiroth [AMD Custom GPU 0405]\n\t145a  Dummy Function (absent graphics controller)\n\t1478  Navi 10 XL Upstream Port of PCI Express Switch\n\t1479  Navi 10 XL Downstream Port of PCI Express Switch\n\t1506  Mendocino\n\t150e  Strix [Radeon 880M / 890M]\n\t154c  Kryptos [Radeon RX 350]\n\t\t1462 7c28  MS-7C28 Motherboard\n\t154e  Garfield\n\t1551  Arlene\n\t1552  Pooky\n\t1561  Anubis\n\t1586  Strix Halo [Radeon Graphics / Radeon 8050S Graphics / Radeon 8060S Graphics]\n\t15bf  Phoenix1\n\t15c8  Phoenix2\n\t15d8  Picasso/Raven 2 [Radeon Vega Series / Radeon Vega Mobile Series]\n\t\t103c 8615  Pavilion Laptop 15-cw1xxx\n\t\t17aa 3181  ThinkCentre M75n IoT\n\t\t17aa 5124  ThinkPad E595\n\t\t1dc2 2209  Avita Pura 14 Notebook\n\t\tea50 cc10  RXi2-BP\n\t15dd  Raven Ridge [Radeon Vega Series / Radeon Vega Mobile Series]\n\t\t103c 83c6  Radeon Vega 8 Mobile\n\t\t1043 876b  PRIME Motherboard\n\t\t1458 d000  Radeon RX Vega 11\n\t\tea50 cc10  RXi2-BP\n\t15de  Raven/Raven2/Fenghuang HDMI/DP Audio Controller\n\t\t103c 8615  Pavilion Laptop 15-cw1xxx\n\t\t1043 876b  PRIME B450M-A Motherboard\n\t\t17aa 5124  ThinkPad E595\n\t\tea50 cc10  RXi2-BP\n\t15df  Raven/Raven2/Fenghuang/Renoir Cryptographic Coprocessor\n\t\t103c 8615  Pavilion Laptop 15-cw1xxx\n\t\tea50 ce19  mCOM10-L1900\n\t15e7  Barcelo\n\t\t103c 8b17  ProBook 445 G9/455 G9 [Ryzen 7 Integrated Radeon GPU]\n\t15ff  Fenghuang [Zhongshan Subor Z+]\n\t1607  Arden\n\t1636  Renoir [Radeon Vega Series / Radeon Vega Mobile Series]\n\t1637  Renoir/Cezanne HDMI/DP Audio Controller\n\t1638  Cezanne [Radeon Vega Series / Radeon Vega Mobile Series]\n\t\t1043 16c2  Radeon Vega 8\n# Used in the Steam Deck LCD\n\t163f  VanGogh [AMD Custom GPU 0405]\n\t1640  Radeon High Definition Audio Controller [Rembrandt/Strix]\n\t164c  Lucienne\n\t164d  Rembrandt\n\t164e  Raphael\n\t164f  Phoenix\n\t1681  Rembrandt [Radeon 680M]\n\t1714  BeaverCreek HDMI Audio [Radeon HD 6500D and 6400G-6600G series]\n\t\t103c 168b  ProBook 4535s\n\t1900  HawkPoint1\n\t1901  HawkPoint2\n\t1902  Krackan2\n\t3150  RV380/M24 [Mobility Radeon X600]\n\t\t103c 0934  nx8220\n\t3151  RV380 GL [FireMV 2400]\n\t3152  RV370/M22 [Mobility Radeon X300]\n\t3154  RV380/M24 GL [Mobility FireGL V3200]\n\t3155  RV380 GL [FireMV 2400]\n\t3171  RV380 GL [FireMV 2400] (Secondary)\n\t3e50  RV380 [Radeon X550/X600]\n\t3e54  RV380 GL [FireGL V3200]\n\t3e70  RV380 [Radeon X550/X600] (Secondary)\n\t4136  RS100 [Mobility IGP 320M]\n\t4137  RS200 [Radeon IGP 340]\n\t4144  R300 [Radeon 9500]\n\t4146  R300 [Radeon 9700 PRO]\n\t4147  R300 GL [FireGL Z1]\n\t4148  R350 [Radeon 9800/9800 SE]\n\t4150  RV350 [Radeon 9550/9600/X1050 Series]\n\t\t1002 0002  R9600 Pro primary (Asus OEM for HP)\n\t\t1002 0003  R9600 Pro secondary (Asus OEM for HP)\n\t\t1002 4722  All-in-Wonder 2006 AGP Edition\n\t\t1458 4024  GV-R96128D\n\t\t148c 2064  R96A-C3N\n\t\t148c 2066  R96A-C3N\n\t\t174b 7c19  Atlantis Radeon 9600 Pro\n\t\t174b 7c29  GC-R9600PRO\n\t\t17ee 2002  Radeon 9600 256Mb Primary\n\t\t18bc 0101  GC-R9600PRO (Primary)\n\t4151  RV350 [Radeon 9600 Series]\n\t\t1043 c004  A9600SE\n\t\t174b 7c37  Radeon 9600SE 128M DDR V/D/VO\n\t4152  RV360 [Radeon 9600/X1050 Series]\n\t\t1002 0002  Radeon 9600XT\n\t\t1002 4772  All-in-Wonder 9600 XT\n\t\t1043 c002  Radeon 9600 XT TVD\n\t\t1043 c01a  A9600XT/TD\n\t\t1462 9510  RX9600XT (MS-8951)\n\t\t174b 7c29  Radeon 9600XT\n\t\t1787 4002  Radeon 9600 XT\n\t4153  RV350 [Radeon 9550]\n\t\t1043 010c  A9550GE/TD\n\t\t1462 932c  RX9550SE-TD128 (MS-8932)\n\t4154  RV350 GL [FireGL T2]\n\t4155  RV350 [Radeon 9600]\n\t4157  RV350 GL [FireGL T2]\n\t4158  68800AX [Graphics Ultra Pro PCI]\n\t4164  R300 [Radeon 9500 PRO] (Secondary)\n\t4165  R300 [Radeon 9700 PRO] (Secondary)\n\t4166  R300 [Radeon 9700 PRO] (Secondary)\n\t4168  RV350 [Radeon 9800 SE] (Secondary)\n\t4170  RV350 [Radeon 9550/9600/X1050 Series] (Secondary)\n\t\t1002 0003  R9600 Pro secondary (Asus OEM for HP)\n\t\t1002 4723  All-in-Wonder 2006 AGP Edition (Secondary)\n\t\t1458 4025  GV-R96128D (Secondary)\n\t\t148c 2067  R96A-C3N (Secondary)\n\t\t174b 7c28  GC-R9600PRO (Secondary)\n\t\t17ee 2003  Radeon 9600 256Mb (Secondary)\n\t\t18bc 0100  GC-R9600PRO (Secondary)\n\t4171  RV350 [Radeon 9600] (Secondary)\n\t\t1043 c005  A9600SE (Secondary)\n\t\t174b 7c36  Radeon 9600SE 128M DDR V/D/VO (secondary)\n\t4172  RV350 [Radeon 9600/X1050 Series] (Secondary)\n\t\t1002 0003  Radeon 9600XT (Secondary)\n\t\t1002 4773  All-in-Wonder 9600 XT (Secondary)\n\t\t1043 c003  A9600XT (Secondary)\n\t\t1043 c01b  A9600XT/TD (Secondary)\n\t\t174b 7c28  Radeon 9600XT (Secondary)\n\t\t1787 4003  Radeon 9600 XT (Secondary)\n\t4173  RV350 [Radeon 9550] (Secondary)\n\t\t1043 010d  A9550GE/TD (Secondary)\n\t4242  R200 [All-In-Wonder Radeon 8500 DV]\n\t\t1002 02aa  Radeon 8500 AIW DV Edition\n\t4243  R200 PCI Bridge [All-in-Wonder Radeon 8500DV]\n\t4336  RS100 [Radeon IGP 320M]\n\t\t1002 4336  Pavilion ze4300 ATI Radeon Mobility U1 (IGP 320 M)\n\t\t103c 0024  Pavilion ze4400 builtin Video\n\t\t161f 2029  eMachines M5312 builtin Video\n\t4337  RS200M [Radeon IGP 330M/340M/345M/350M]\n\t\t1014 053a  ThinkPad R40e\n\t\t103c 0850  Radeon IGP 345M\n\t4341  SB200 AC97 Audio Controller\n\t4342  SB200 PCI to PCI Bridge\n\t4345  SB200 EHCI USB Controller\n\t4346  Crayola 6 [XENOS Parent Die (XBOX 360)]\n\t4347  SB200 OHCI USB Controller #1\n\t4348  SB200 OHCI USB Controller #2\n\t4349  SB200 IDE Controller\n\t434c  SB200 PCI to LPC Bridge\n\t434d  SB200 AC97 Modem Controller\n\t4353  SB200 SMBus Controller\n\t4354  215CT [Mach64 CT PCI]\n\t4358  Mach64 CX [Graphics Xpression]\n\t4361  SB300 AC'97 Audio Controller\n\t4362  SB300 PCI to PCI Bridge\n\t4363  SB300 SMBus Controller\n\t4365  SB300 USB Controller (EHCI)\n\t4367  SB300 USB Controller (EHCI)\n\t4368  SB300 USB Controller (EHCI)\n\t4369  SB300 IDE Controller\n\t436c  SB300 PCI to LPC Bridge\n\t436d  SB300 AC97 Modem Controller\n\t436e  SB300 Serial ATA Controller\n\t4370  IXP SB400 AC'97 Audio Controller\n\t\t1025 0079  Aspire 5024WLMMi\n\t\t1025 0091  Aspire 5032WXMi\n\t\t103c 2a05  Pavilion t3030.de Desktop PC\n\t\t103c 308b  MX6125\n\t\t105b 0c81  Realtek ALC 653\n\t\t107b 0300  MX6421\n\t\t1462 0131  MS-1013 Notebook\n\t4371  IXP SB4x0 PCI-PCI Bridge\n\t\t103c 308b  MX6125\n\t\t1462 7217  Aspire L250\n\t4372  IXP SB4x0 SMBus Controller\n\t\t1025 0080  Aspire 5024WLMMi\n\t\t103c 2a20  Pavilion t3030.de Desktop PC\n\t\t103c 308b  MX6125\n\t\t1462 0131  MS-1013 Notebook\n\t\t1462 7217  Aspire L250\n\t4373  IXP SB4x0 USB2 Host Controller\n\t\t1025 0080  Aspire 5024WLMMi\n\t\t103c 2a20  Pavilion t3030.de Desktop PC\n\t\t103c 308b  MX6125\n\t\t1462 7217  Aspire L250\n\t4374  IXP SB4x0 USB Host Controller\n\t\t103c 2a20  Pavilion t3030.de Desktop PC\n\t\t103c 308b  MX6125\n\t\t1462 7217  Aspire L250\n\t4375  IXP SB4x0 USB Host Controller\n\t\t1025 0080  Aspire 5024WLMMi\n\t\t103c 2a20  Pavilion t3030.de Desktop PC\n\t\t103c 308b  MX6125\n\t\t1462 7217  Aspire L250\n\t4376  IXP SB4x0 IDE Controller\n\t\t1025 0080  Aspire 5024WLMMi\n\t\t103c 2a20  Pavilion t3030.de Desktop PC\n\t\t103c 308b  MX6125\n\t\t1462 0131  MS-1013 Notebook\n\t\t1462 7217  Aspire L250\n\t4377  IXP SB4x0 PCI-ISA Bridge\n\t\t1025 0080  Aspire 5024WLMi\n\t\t103c 2a20  Pavilion t3030.de Desktop PC\n\t\t103c 308b  MX6125\n\t\t1462 7217  Aspire L250\n\t4378  IXP SB400 AC'97 Modem Controller\n\t\t1025 0080  Aspire 5024WLMMi\n\t\t103c 308b  MX6125\n\t\t1462 0131  MS-1013 Notebook\n\t4379  IXP SB4x0 Serial ATA Controller\n\t\t1462 7141  Aspire L250\n\t437a  IXP SB400 Serial ATA Controller\n\t\t1002 4379  4379 Serial ATA Controller\n\t\t1002 437a  437A Serial ATA Controller\n\t\t1462 7141  Aspire L250\n\t\t14f1 8800  Leadtek WinFast TV2000XP Expert\n\t437b  IXP SB4x0 High Definition Audio Controller\n\t\t1002 437b  IXP SB4x0 High Definition Audio Controller\n\t\t10cf 1326  Fujitsu Lifebook A3040\n\t\t1734 10b8  Realtek High Definition Audio\n\t4380  SB600 Non-Raid-5 SATA\n\t\t103c 2813  DC5750 Microtower\n\t\t1179 ff50  Satellite P305D-S8995E\n\t\t1458 b003  GA-MA790FX-DS5 (rev. 1.0)\n\t\t1458 b005  Gigabyte GA-MA69G-S3H Motherboard\n\t\t1462 7327  K9AG Neo2\n\t\t17f2 5999  KI690-AM2 Motherboard\n\t4381  SB600 SATA Controller (RAID 5 mode)\n\t4382  SB600 AC97 Audio\n\t4383  SBx00 Azalia (Intel HDA)\n\t\t1019 2120  A785GM-M\n\t\t103c 1611  Pavilion dm1z-3000\n\t\t103c 280a  DC5750 Microtower\n\t\t1043 8230  M3A78-EH Motherboard\n\t\t1043 836c  M4A785TD Motherboard\n\t\t1043 8410  M4A89GTD PRO/USB3 Motherboard\n\t\t1043 841b  M5A88-V EVO\n\t\t1043 8445  M5A78L LE\n\t\t105b 0e13  N15235/A74MX mainboard / AMD SB700\n\t\t1179 ff1e  Satellite C660D-113\n\t\t1179 ff50  Satellite P305D-S8995E\n\t\t1458 a022  GA-770/78-series motherboard\n\t\t1458 a102  GA-880GMA-USB3\n\t\t1462 7596  760GM-E51(MS-7596) Motherboard\n\t\t17f2 5000  KI690-AM2 Motherboard\n\t4384  SBx00 PCI to PCI Bridge\n\t4385  SBx00 SMBus Controller\n\t\t1019 2120  A785GM-M\n\t\t103c 1611  Pavilion DM1Z-3000\n\t\t103c 280a  DC5750 Microtower\n\t\t1043 82ef  M3A78-EH Motherboard\n\t\t1043 8389  M4A785TD Motherboard\n\t\t105b 0e13  N15235/A74MX mainboard / AMD SB700\n\t\t1179 ff50  Satellite P305D-S8995E\n\t\t1458 4385  GA-770/78-series motherboard\n\t\t1462 7368  K9AG Neo2\n\t\t1462 7596  760GM-E51(MS-7596) Motherboard\n\t\t15d9 a811  H8DGU\n\t\t174b 1001  PURE Fusion Mini\n\t\t17f2 5000  KI690-AM2 Motherboard\n\t4386  SB600 USB Controller (EHCI)\n\t\t103c 280a  DC5750 Microtower\n\t\t1179 ff50  Satellite P305D-S8995E\n\t\t1462 7368  K9AG Neo2\n\t\t17f2 5000  KI690-AM2 Motherboard\n\t4387  SB600 USB (OHCI0)\n\t\t103c 280a  DC5750 Microtower\n\t\t1179 ff50  Satellite P305D-S8995E\n\t\t1462 7368  K9AG Neo2\n\t\t17f2 5000  KI690-AM2 Motherboard\n\t4388  SB600 USB (OHCI1)\n\t\t103c 280a  DC5750 Microtower\n\t\t1179 ff50  Satellite P305D-S8995E\n\t\t1462 7368  K9AG Neo2\n\t\t17f2 5000  KI690-AM2 Motherboard\n\t4389  SB600 USB (OHCI2)\n\t\t103c 280a  DC5750 Microtower\n\t\t1179 ff50  Satellite P305D-S8995E\n\t\t1462 7368  K9AG Neo2\n\t\t17f2 5000  KI690-AM2 Motherboard\n\t438a  SB600 USB (OHCI3)\n\t\t103c 280a  DC5750 Microtower\n\t\t1179 ff50  Satellite P305D-S8995E\n\t\t1462 7368  K9AG Neo2\n\t\t17f2 5000  KI690-AM2 Motherboard\n\t438b  SB600 USB (OHCI4)\n\t\t103c 280a  DC5750 Microtower\n\t\t1179 ff50  Satellite P305D-S8995E\n\t\t1462 7368  K9AG Neo2\n\t\t17f2 5000  KI690-AM2 Motherboard\n\t438c  SB600 IDE\n\t\t103c 280a  DC5750 Microtower\n\t\t1179 ff50  Satellite P305D-S8995E\n\t\t1458 5002  Gigabyte GA-MA69G-S3H Motherboard\n\t\t1462 7368  K9AG Neo2\n\t\t17f2 5000  KI690-AM2 Motherboard\n\t438d  SB600 PCI to LPC Bridge\n\t\t103c 280a  DC5750 Microtower\n\t\t1179 ff50  Satellite P305D-S8995E\n\t\t1462 7368  K9AG Neo2\n\t\t17f2 5000  KI690-AM2 Motherboard\n\t438e  SB600 AC97 Modem\n\t4390  SB7x0/SB8x0/SB9x0 SATA Controller [IDE mode]\n\t\t1043 82ef  M3A78-EH Motherboard\n\t\t1043 8389  M4A785TD Motherboard\n\t\t105b 0e13  N15235/A74MX mainboard / AMD SB700\n\t\t1458 b002  GA-MA770-DS3rev2.0 Motherboard\n\t\t1462 7596  760GM-E51(MS-7596) Motherboard\n\t\t1849 4390  Motherboard (one of many)\n\t4391  SB7x0/SB8x0/SB9x0 SATA Controller [AHCI mode]\n\t\t103c 1609  ProLiant MicroServer N36L\n\t\t103c 1611  Pavilion DM1Z-3000\n\t\t1043 82ef  M3A78-EH Motherboard\n\t\t1043 8443  M5A88-V EVO\n\t\t1043 84dd  M5A99X EVO (R1.0) SB950\n\t\t105b 0e13  N15235/A74MX mainboard / AMD SB700\n\t\t1458 b002  GA-78/880-series motherboard\n\t\t174b 1001  PURE Fusion Mini\n\t4392  SB7x0/SB8x0/SB9x0 SATA Controller [Non-RAID5 mode]\n\t\t105b 0e13  N15235/A74MX mainboard / AMD SB700\n\t4393  SB7x0/SB8x0/SB9x0 SATA Controller [RAID5 mode]\n\t4394  SB7x0/SB8x0/SB9x0 SATA Controller [AHCI mode]\n\t4395  SB8x0/SB9x0 SATA Controller [Storage mode]\n\t4396  SB7x0/SB8x0/SB9x0 USB EHCI Controller\n\t\t1019 2120  A785GM-M\n\t\t103c 1609  ProLiant MicroServer N36L\n\t\t103c 1611  Pavilion DM1Z-3000\n\t\t1043 82ef  M3A78-EH Motherboard\n\t\t1043 8443  M5A88-V EVO\n\t\t105b 0e13  N15235/A74MX mainboard / AMD SB700\n\t\t1458 5004  GA-78/880-series motherboard\n\t\t1462 7596  760GM-E51(MS-7596) Motherboard\n\t\t15d9 a811  H8DGU\n\t\t174b 1001  PURE Fusion Mini\n\t4397  SB7x0/SB8x0/SB9x0 USB OHCI0 Controller\n\t\t1019 2120  A785GM-M\n\t\t103c 1609  ProLiant MicroServer N36L\n\t\t103c 1611  Pavilion DM1Z-3000\n\t\t1043 82ef  M3A78-EH Motherboard\n\t\t1043 8443  M5A88-V EVO\n\t\t105b 0e13  N15235/A74MX mainboard / AMD SB700\n\t\t1458 5004  GA-78/880-series motherboard\n\t\t1462 7596  760GM-E51(MS-7596) Motherboard\n\t\t15d9 a811  H8DGU\n\t\t174b 1001  PURE Fusion Mini\n\t4398  SB7x0 USB OHCI1 Controller\n\t\t1019 2120  A785GM-M\n\t\t1043 82ef  M3A78-EH Motherboard\n\t\t105b 0e13  N15235/A74MX mainboard / AMD SB700\n\t\t1458 5004  GA-MA78GM-S2H motherboard\n\t\t1462 7596  760GM-E51(MS-7596) Motherboard\n\t\t15d9 a811  H8DGU\n\t4399  SB7x0/SB8x0/SB9x0 USB OHCI2 Controller\n\t\t1019 2120  A785GM-M\n\t\t1043 82ef  M3A78-EH Motherboard\n\t\t1043 8443  M5A88-V EVO\n\t\t105b 0e13  N15235/A74MX mainboard / AMD SB700\n\t\t1458 5004  GA-78/880-series motherboard\n\t\t1462 7596  760GM-E51(MS-7596) Motherboard\n\t\t174b 1001  PURE Fusion Mini\n\t439c  SB7x0/SB8x0/SB9x0 IDE Controller\n\t\t1002 4392  MSI MS-7713 motherboard\n\t\t1019 2120  A785GM-M\n\t\t103c 1609  ProLiant MicroServer N36L\n\t\t1043 82ef  M3A78-EH Motherboard\n\t\t105b 0e13  N15235/A74MX mainboard / AMD SB700\n\t\t1458 5002  GA-MA78GM-S2H motherboard\n\t\t1462 7596  760GM-E51(MS-7596) Motherboard\n\t439d  SB7x0/SB8x0/SB9x0 LPC host controller\n\t\t1019 2120  A785GM-M\n\t\t103c 1609  ProLiant MicroServer N36L\n\t\t103c 1611  Pavilion DM1Z-3000\n\t\t1043 82ef  M3A78-EH Motherboard\n\t\t1043 8443  M5A88-V EVO\n\t\t105b 0e13  N15235/A74MX mainboard / AMD SB700\n\t\t1462 7596  760GM-E51(MS-7596) Motherboard\n\t\t174b 1001  PURE Fusion Mini\n\t43a0  SB700/SB800/SB900 PCI to PCI bridge (PCIE port 0)\n\t43a1  SB700/SB800/SB900 PCI to PCI bridge (PCIE port 1)\n\t43a2  SB900 PCI to PCI bridge (PCIE port 2)\n\t43a3  SB900 PCI to PCI bridge (PCIE port 3)\n\t4437  RS250 [Mobility Radeon 7000 IGP]\n\t4554  210888ET [Mach64 ET]\n\t4630  XENOS Parent Die (XBOX 360)\n\t4631  XENOS Daughter Die (XBOX 360)\n\t4654  Mach64 VT\n\t4742  Rage 3 [3D Rage PRO AGP 2X]\n\t\t1002 0040  Rage Pro Turbo AGP 2X\n\t\t1002 0044  Rage Pro Turbo AGP 2X\n\t\t1002 0061  Rage Pro AIW AGP 2X\n\t\t1002 0062  Rage Pro AIW AGP 2X\n\t\t1002 0063  Rage Pro AIW AGP 2X\n\t\t1002 0080  Rage Pro Turbo AGP 2X\n\t\t1002 0084  Rage Pro Turbo AGP 2X\n\t\t1002 4742  Rage Pro Turbo AGP 2X\n\t\t1002 8001  Rage Pro Turbo AGP 2X\n\t\t1028 0082  Rage Pro Turbo AGP 2X\n\t\t1028 4082  Optiplex GX1 Onboard Display Adapter\n\t\t1028 8082  Rage Pro Turbo AGP 2X\n\t\t1028 c082  Rage Pro Turbo AGP 2X\n\t\t8086 4152  Xpert 98D AGP 2X\n\t\t8086 464a  Rage Pro Turbo AGP 2X\n\t4744  Rage 3 [3D Rage PRO AGP 1X]\n\t\t1002 4744  Rage Pro Turbo AGP\n\t\t8086 4d55  Rage 3D Pro AGP 1X [Intel MU440EX]\n\t4749  3D Rage PRO PCI\n\t\t1002 0061  Rage Pro AIW\n\t\t1002 0062  Rage Pro AIW\n\t474d  Rage XL AGP 2X\n\t\t1002 0004  Xpert 98 RXL AGP 2X\n\t\t1002 0008  Xpert 98 RXL AGP 2X\n\t\t1002 0080  Rage XL AGP 2X\n\t\t1002 0084  Xpert 98 AGP 2X\n\t\t1002 474d  Rage XL AGP\n\t\t1033 806a  Rage XL AGP\n\t474e  Rage XC AGP\n\t\t1002 474e  Rage XC AGP\n\t474f  Rage XL\n\t\t1002 0008  Rage XL\n\t\t1002 474f  Rage XL\n\t4750  3D Rage Pro PCI\n\t\t1002 0040  Rage Pro Turbo\n\t\t1002 0044  Rage Pro Turbo\n\t\t1002 0080  Rage Pro Turbo\n\t\t1002 0084  Rage Pro Turbo\n\t\t1002 4750  Rage Pro Turbo\n\t4752  Rage 3 [Rage XL PCI]\n\t\t0e11 001e  Proliant Rage XL\n\t\t1002 0008  Rage XL\n\t\t1002 4752  Proliant Rage XL\n\t\t1002 8008  Rage XL\n\t\t1014 0240  eServer xSeries server mainboard\n\t\t1028 00ce  PowerEdge 1400\n\t\t1028 00d1  PowerEdge 2550\n\t\t1028 00d9  PowerEdge 2500\n\t\t1028 0134  PowerEdge 600SC\n\t\t1028 014a  PowerEdge 1750\n\t\t1028 0165  PowerEdge 750\n\t\t103c 10e1  NetServer Rage XL\n\t\t103c 3208  ProLiant DL140 G2\n\t\t107b 6400  6400 Server\n\t\t1734 007a  PRIMERGY RX/TX series onboard VGA\n\t\t1734 1073  Primergy Econel 200 D2020 mainboard\n\t\t8086 3411  SDS2 Mainboard\n\t\t8086 3427  S875WP1-E mainboard\n\t\t8086 5744  S845WD1-E mainboard\n\t4753  Rage XC\n\t\t1002 4753  Rage XC\n\t4754  Mach64 GT/GT-B [3D Rage I/II]\n\t4755  Mach64 GT-B [3D Rage II+ DVD]\n\t4756  Rage 2 [3D Rage IIC PCI]\n\t\t1002 4756  Rage IIC\n\t4757  Rage 2 [3D Rage IIC AGP]\n\t\t1002 4757  Rage IIC AGP\n\t\t1028 0089  Rage 3D IIC\n\t\t1028 008e  PowerEdge 1300 onboard video\n\t\t1028 4082  Rage 3D IIC\n\t\t1028 8082  Rage 3D IIC\n\t\t1028 c082  Rage 3D IIC\n\t4758  Mach64 GX [WinTurbo]\n\t4759  Rage 3 [3D Rage IIC PCI]\n\t475a  3D Rage IIC AGP\n\t\t1002 0084  Rage 3D Pro AGP 2x XPERT 98\n\t\t1002 0087  Rage 3D IIC\n\t\t1002 475a  Rage IIC AGP\n\t4845  Xilleon 220 HBIU for HDTV2\n\t4846  Xilleon 220 IDE for HDTV2\n\t4847  Xilleon 220 USB for HDTV2\n\t4848  Xilleon 220 DAIO-0 for HDTV2\n\t4849  Xilleon 220 DAIO-1 for HDTV2\n\t484a  Xilleon 220 LPC for HDTV2\n\t4850  Xilleon 215 HBIU for X215\n\t4851  Xilleon 215 IDE for X215\n\t4852  Xilleon 215 USB for X215\n\t4853  Xilleon 215 DAIO-0 for X215\n\t4854  Xilleon 215 DAIO-1 for X215\n\t4855  Xilleon 225 HBIU for X225\n\t4856  Xilleon 225 IDE for X225\n\t4857  Xilleon 225 USB for X225\n\t4858  Xilleon 225 DAIO-0 for X225\n\t4859  Xilleon 225 DAIO-1 for X225\n\t4860  Xilleon 210 HBIU for X210\n\t4861  Xilleon 210 IDE for X210\n\t4862  Xilleon 210 USB for X210\n\t4863  Xilleon 210 DAIO-0 for X210\n\t4864  Xilleon 210 DAIO-1 for X210\n\t4865  Xilleon 226 HBIU for X226\n\t4866  Xilleon 226 IDE for X226\n\t4867  Xilleon 226 USB for X226\n\t4868  Xilleon 226 DAIO-0 for X226\n\t4869  Xilleon 226 DAIO-1 for X226\n\t486a  Xilleon 240S HBIU for X240S\n\t486b  Xilleon 240H HBIU for X240H\n\t486c  Xilleon 240S USB for X240S\n\t486d  Xilleon 240H USB for X240H\n\t486e  Xilleon 250 USB 1.1 for X250\n\t486f  Xilleon 260 USB 1.1 for X260\n\t4870  Xilleon 250 HBIU for X250\n\t4871  Xilleon 250 IDE for X250\n\t4872  Xilleon 234/235 HBIU for X234/X235\n\t4873  Xilleon 244/245 HBIU for X244/X245\n\t4874  Xilleon 234/235 USB 1.1 for X234/X235\n\t4875  Xilleon 260 HBIU for X260\n\t4876  Xilleon 260 IDE for X260\n\t4877  Xilleon 244/245 USB 1.1 for X244/X245\n\t4878  Xilleon 270 HBIU for X270\n\t487b  Xilleon 242 HBIU for X242\n\t487d  Xilleon 242 USB 1.1 for X242\n\t4880  Xilleon 254 HBIU for X254\n\t4881  Xilleon 254 USB 1.1 for X254\n\t4882  Xilleon 255 HBIU for X255\n\t4883  Xilleon 255 USB 1.1 for X255\n\t4884  Xilleon 243 HBIU for X243\n\t4885  Xilleon 243 USB 1.1 for X243\n\t4886  Xilleon 233 HBIU for X233\n\t4887  Xilleon 233 USB 1.1 for X233\n\t4888  Xilleon 143 HBIU for X143\n\t4889  Xilleon 143 HBIU for X143L\n\t488a  Xilleon 143 HBIU for X143S\n\t4966  RV250 [Radeon 9000 Series]\n\t\t10f1 0002  RV250 If [Tachyon G9000 PRO]\n\t\t148c 2039  RV250 If [Radeon 9000 Pro \"Evil Commando\"]\n\t\t1509 9a00  RV250 If [Radeon 9000 \"AT009\"]\n\t\t1681 0040  RV250 If [3D prophet 9000]\n\t\t174b 7176  Radeon 9000 Pro\n\t\t174b 7192  RV250 If [Radeon 9000 \"Atlantis\"]\n\t\t17af 2005  RV250 If [Excalibur Radeon 9000 Pro]\n\t\t17af 2006  RV250 If [Excalibur Radeon 9000]\n\t496e  RV250 [Radeon 9000] (Secondary)\n\t4a49  R420 [Radeon X800 PRO/GTO AGP]\n\t\t174b 2620  R420 [Radeon X800 GTO AGP]\n\t4a4a  R420 [Radeon X800 GT AGP]\n\t4a4b  R420 [Radeon X800 AGP Series]\n\t4a4d  R420 GL [FireGL X3-256]\n\t4a4e  RV420/M18 [Mobility Radeon 9800]\n\t4a4f  R420 [Radeon X850 AGP]\n\t4a50  R420 [Radeon X800 XT Platinum Edition AGP]\n\t4a54  R420 [Radeon X800 VE AGP]\n\t\t1002 4422  All-In-Wonder X800 VE AGP\n\t4a69  R420 [Radeon X800 PRO/GTO] (Secondary)\n\t4a6a  R420 [Radeon X800] (Secondary)\n\t4a6b  R420 [Radeon X800 XT AGP] (Secondary)\n\t4a70  R420 [Radeon X800 XT Platinum Edition AGP] (Secondary)\n\t4a74  R420 [Radeon X800 VE] (Secondary)\n\t4b49  R481 [Radeon X850 XT AGP]\n\t4b4b  R481 [Radeon X850 PRO AGP]\n\t4b4c  R481 [Radeon X850 XT Platinum Edition AGP]\n\t4b69  R481 [Radeon X850 XT AGP] (Secondary)\n\t4b6b  R481 [Radeon X850 PRO AGP] (Secondary)\n\t4b6c  R481 [Radeon X850 XT Platinum Edition AGP] (Secondary)\n\t4c42  Mach64 LT [3D Rage LT PRO AGP]\n\t\t0e11 b0e7  Rage LT Pro (Compaq Presario 5240)\n\t\t0e11 b0e8  Rage 3D LT Pro\n\t\t0e11 b10e  3D Rage LT Pro (Compaq Armada 1750)\n\t\t1002 0040  Rage LT Pro AGP 2X\n\t\t1002 0044  Rage LT Pro AGP 2X\n\t\t1002 4c42  Rage LT Pro AGP 2X\n\t\t1002 8001  Rage LT Pro AGP 2X\n\t\t1028 0085  Rage 3D LT Pro\n\t4c46  Rage Mobility 128 AGP 2X/Mobility M3\n\t\t1002 0155  IBM Thinkpad A22p\n\t\t1014 0155  Thinkpad A22p\n\t\t1028 00b1  Latitude C600\n\t4c47  3D Rage IIC PCI / Mobility Radeon 7500/7500C\n\t4c49  3D Rage LT PRO PCI\n\t\t1002 0004  Rage LT Pro\n\t\t1002 0040  Rage LT Pro\n\t\t1002 0044  Rage LT Pro\n\t\t1002 4c49  Rage LT Pro\n\t4c4d  Rage Mobility AGP 2x Series\n\t\t0e11 b111  Armada M700\n\t\t0e11 b160  Armada E500\n\t\t1002 0084  Xpert 98 AGP 2X (Mobility)\n\t\t1014 0154  ThinkPad A20m/A21m\n\t\t1028 00aa  Latitude CPt\n\t\t1028 00bb  Latitude CPx\n\t\t1179 ff00  Satellite 1715XCDS laptop\n\t\t13bd 1019  PC-AR10\n\t4c4e  Rage Mobility L AGP 2x\n\t4c50  Rage 3 LT [3D Rage LT PRO PCI]\n\t\t1002 4c50  Rage LT Pro\n\t4c52  M1 [Rage Mobility-M1 PCI]\n\t\t1033 8112  Versa Note VXi\n\t4c54  264LT [Mach64 LT]\n\t4c57  RV200/M7 [Mobility Radeon 7500]\n\t\t1014 0517  ThinkPad T30\n\t\t1014 0530  ThinkPad T4x Series\n\t\t1028 00e6  Radeon Mobility M7 LW (Dell Inspiron 8100)\n\t\t1028 012a  Latitude C640\n\t\t1043 1622  Mobility Radeon M7 (L3C/S)\n\t\t144d c006  Radeon Mobility M7 LW in vpr Matrix 170B4\n\t4c58  RV200/M7 GL [Mobility FireGL 7800]\n\t4c59  RV100/M6 [Rage/Radeon Mobility Series]\n\t\t0e11 b111  Evo N600c\n\t\t1014 0235  ThinkPad A30/A30p (2652/2653)\n\t\t1014 0239  ThinkPad X22/X23/X24\n\t\t103c 0025  XE4500 Notebook\n\t\t104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP\n\t\t104d 8140  PCG-Z1SP laptop\n\t\t1509 1930  Medion MD9703\n\t4c66  RV250/M9 GL [Mobility FireGL 9000/Radeon 9000]\n\t\t1014 054d  ThinkPad T41\n\t4c6e  RV250/M9 [Mobility Radeon 9000] (Secondary)\n\t4d46  Rage Mobility 128 AGP 4X/Mobility M4\n\t4d52  Theater 550 PRO PCI [ATI TV Wonder 550]\n\t4d53  Theater 550 PRO PCIe\n\t4e44  R300 [Radeon 9700/9700 PRO]\n\t\t1002 515e  Radeon ES1000\n\t\t1002 5965  Radeon ES1000\n\t4e45  R300 [Radeon 9500 PRO/9700]\n\t\t1002 0002  Radeon R300 NE [Radeon 9500 Pro]\n\t\t1681 0002  Hercules 3D Prophet 9500 PRO [Radeon 9500 Pro]\n\t4e46  R300 [Radeon 9600 TX]\n\t4e47  R300 GL [FireGL X1]\n\t4e48  R350 [Radeon 9800 Series]\n\t4e49  R350 [Radeon 9800]\n\t4e4a  R360 [Radeon 9800 XXL/XT]\n\t\t1002 4e4a  R360 [Radeon 9800 XT]\n\t4e4b  R350 GL [FireGL X2 AGP Pro]\n\t4e50  RV350/M10 / RV360/M11 [Mobility Radeon 9600 (PRO) / 9700]\n\t\t1025 005a  TravelMate 290\n\t\t1025 0064  Extensa 3000 series laptop: ATI RV360/M11 [Mobility Radeon 9700]\n\t\t103c 088c  NC8000 laptop\n\t\t103c 0890  NC6000 laptop\n\t\t144d c00c  P35 notebook\n\t\t1462 0311  MSI M510A\n\t\t1734 1055  Amilo M1420W\n\t4e51  RV350 [Radeon 9550/9600/X1050 Series]\n\t4e52  RV350/M10 [Mobility Radeon 9500/9700 SE]\n\t\t144d c00c  P35 notebook\n\t4e54  RV350/M10 GL [Mobility FireGL T2]\n\t4e56  RV360/M12 [Mobility Radeon 9550]\n\t4e64  R300 [Radeon 9700 PRO] (Secondary)\n\t4e65  R300 [Radeon 9500 PRO] (Secondary)\n\t\t1002 0003  Radeon R300 NE [Radeon 9500 Pro]\n\t\t1681 0003  Hercules 3D Prophet 9500 PRO [Radeon 9500 Pro] (Secondary)\n\t4e66  RV350 [Radeon 9600] (Secondary)\n\t4e67  R300 GL [FireGL X1] (Secondary)\n\t4e68  R350 [Radeon 9800 PRO] (Secondary)\n\t4e69  R350 [Radeon 9800] (Secondary)\n\t4e6a  RV350 [Radeon 9800 XT] (Secondary)\n\t\t1002 4e6a  R360 [Radeon 9800 XT] (Secondary)\n\t\t1002 4e71  M10 NQ [Radeon Mobility 9600]\n\t4e71  RV350/M10 [Mobility Radeon 9600] (Secondary)\n\t4f72  RV250 [Radeon 9000 Series]\n\t4f73  RV250 [Radeon 9000 Series] (Secondary)\n\t5044  All-In-Wonder 128 PCI\n\t\t1002 0028  Rage 128 AIW\n\t\t1002 0029  Rage 128 AIW\n\t5046  Rage 4 [Rage 128 PRO AGP 4X]\n\t\t1002 0004  Rage Fury Pro\n\t\t1002 0008  Rage Fury Pro/Xpert 2000 Pro\n\t\t1002 0014  Rage Fury Pro\n\t\t1002 0018  Rage Fury Pro/Xpert 2000 Pro\n\t\t1002 0028  Rage 128 Pro AIW AGP\n\t\t1002 002a  Rage 128 Pro AIW AGP\n\t\t1002 0048  Rage Fury Pro\n\t\t1002 2000  Rage Fury MAXX AGP 4x (TMDS) (VGA device)\n\t\t1002 2001  Rage Fury MAXX AGP 4x (TMDS) (Extra device?!)\n\t5050  Rage 4 [Rage 128 PRO PCI / Xpert 128 PCI]\n\t\t1002 0008  Xpert 128\n\t5052  Rage 4 [Rage 128 PRO AGP 4X]\n\t5144  R100 [Radeon 7200 / All-In-Wonder Radeon]\n\t\t1002 0008  Radeon 7000/Radeon VE\n\t\t1002 0009  Radeon 7000/Radeon\n\t\t1002 000a  Radeon 7000/Radeon\n\t\t1002 001a  Radeon 7000/Radeon\n\t\t1002 0029  Radeon AIW\n\t\t1002 0038  Radeon 7000/Radeon\n\t\t1002 0039  Radeon 7000/Radeon\n\t\t1002 008a  Radeon 7000/Radeon\n\t\t1002 00ba  Radeon 7000/Radeon\n\t\t1002 0139  Radeon 7000/Radeon\n\t\t1002 028a  Radeon 7000/Radeon\n\t\t1002 02aa  Radeon AIW\n\t\t1002 053a  Radeon 7000/Radeon\n\t5148  R200 GL [FireGL 8800]\n\t\t1002 010a  FireGL 8800 64Mb\n\t\t1002 0152  FireGL 8800 128Mb\n\t\t1002 0162  FireGL 8700 32Mb\n\t\t1002 0172  FireGL 8700 64Mb\n\t514c  R200 [Radeon 8500/8500 LE]\n\t\t1002 003a  Radeon R200 QL [Radeon 8500 LE]\n\t\t1002 013a  Radeon 8500\n\t\t148c 2026  R200 QL [Radeon 8500 Evil Master II Multi Display Edition]\n\t\t1681 0010  Radeon 8500 [3D Prophet 8500 128Mb]\n\t\t174b 7149  Radeon 8500 LE\n\t\t1787 0f08  Radeon R200 QL [PowerMagic Radeon 8500]\n\t514d  R200 [Radeon 9100]\n\t5157  RV200 [Radeon 7500/7500 LE]\n\t\t1002 013a  Radeon 7500\n\t\t1002 0f2b  ALL-IN-WONDER VE PCI\n\t\t1002 103a  Dell Optiplex GX260\n\t\t1458 4000  RV200 QW [RADEON 7500 PRO MAYA AR]\n\t\t148c 2024  RV200 QW [Radeon 7500LE Dual Display]\n\t\t148c 2025  RV200 QW [Radeon 7500 Evil Master Multi Display Edition]\n\t\t148c 2036  RV200 QW [Radeon 7500 PCI Dual Display]\n\t\t174b 7146  RV200 QW [Radeon 7500 LE]\n\t\t174b 7147  Radeon 7500 LE\n\t\t174b 7161  Radeon RV200 QW [Radeon 7500 LE]\n\t\t17af 0202  RV200 QW [Excalibur Radeon 7500LE]\n\t5159  RV100 [Radeon 7000 / Radeon VE]\n\t\t1002 000a  Radeon 7000/Radeon VE\n\t\t1002 000b  Radeon 7000\n\t\t1002 0038  Radeon 7000/Radeon VE\n\t\t1002 003a  Radeon 7000/Radeon VE\n\t\t1002 00ba  Radeon 7000/Radeon VE\n\t\t1002 013a  Radeon 7000/Radeon VE\n\t\t1002 0908  XVR-100 (supplied by Sun)\n# The IBM card doubles as an ATI PCI video adapter\n\t\t1014 029a  Remote Supervisor Adapter II (RSA2)\n\t\t1014 02c8  eServer xSeries server mainboard\n\t\t1028 016c  PowerEdge 1850 Embedded Radeon 7000/VE\n\t\t1028 016d  PowerEdge 2850 Embedded Radeon 7000-M\n\t\t1028 0170  PowerEdge 6850 Embedded Radeon 7000/VE\n\t\t1028 019a  PowerEdge SC1425\n\t\t103c 1292  Radeon 7000\n\t\t1043 c00a  A7000/T/64M\n\t\t1458 4002  RV100 QY [RADEON 7000 PRO MAYA AV Series]\n\t\t148c 2003  RV100 QY [Radeon 7000 Multi-Display Edition]\n\t\t148c 2023  RV100 QY [Radeon 7000 Evil Master Multi-Display]\n\t\t148c 2081  RV6DE\n\t\t174b 0280  Radeon RV100 QY [Radeon 7000/VE]\n\t\t174b 7112  Radeon VE 7000\n\t\t174b 7c28  Radeon VE 7000 DDR\n\t\t1787 0202  RV100 QY [Excalibur Radeon 7000]\n\t\t17ee 1001  Radeon 7000 64MB DDR + DVI\n\t515e  ES1000\n\t\t1028 01bb  PowerEdge 1955 Embedded ATI ES1000\n\t\t1028 01df  PowerEdge SC440\n\t\t1028 01e6  PowerEdge 860\n\t\t1028 01f0  PowerEdge R900 Embedded ATI ES1000\n\t\t1028 0205  PowerEdge 2970 Embedded ATI ES1000\n\t\t1028 020b  PowerEdge T605 Embedded ATI ES1000\n\t\t1028 020f  PowerEdge R300 Embedded ATI ES1000\n\t\t1028 0210  PowerEdge T300 Embedded ATI ES1000\n\t\t1028 0221  PowerEdge R805 Embedded ATI ES1000\n\t\t1028 0223  PowerEdge R905 Embedded ATI ES1000\n\t\t1028 0225  PowerEdge T105 Embedded ATI ES1000\n\t\t1028 023c  PowerEdge R200 Embedded ATI ES1000\n\t\t103c 1304  Integrity iLO2 Advanced KVM VGA [AD307A]\n\t\t103c 31fb  ProLiant DL360 G5\n\t\t15d9 8680  X7DVL-E-O motherboard\n\t\t15d9 9680  X7DBN Motherboard\n\t\t8086 3476  S5000PSLSATA Server Board\n\t5245  Rage 128 GL PCI\n\t\t1002 0008  Xpert 128\n\t\t1002 0028  Rage 128 AIW\n\t\t1002 0029  Rage 128 AIW\n\t\t1002 0068  Rage 128 AIW\n\t5246  Rage 128 (Rage 4) series\n\t\t1002 0004  Magnum/Xpert 128/Xpert 99\n\t\t1002 0008  Rage 128 AGP 2x\n\t\t1002 0028  Rage 128 AIW AGP\n\t\t1002 0044  Rage Fury/Xpert 128/Xpert 2000\n\t\t1002 0068  Rage 128 AIW AGP\n\t\t1002 0448  Rage Fury\n\t524b  Rage 128 VR PCI\n\t524c  Rage 128 VR AGP\n\t\t1002 0008  Xpert 99/Xpert 2000\n\t\t1002 0088  Xpert 99\n\t534d  Rage 128 4X AGP 4x\n\t\t1002 0008  Xpert 99/Xpert 2000\n\t\t1002 0018  Xpert 2000\n\t5354  Mach 64 VT\n\t\t1002 5654  Mach 64 reference\n\t5446  Rage 128 PRO Ultra AGP 4x\n\t\t1002 0004  Rage Fury Pro\n\t\t1002 0008  Rage Fury Pro/Xpert 2000 Pro\n\t\t1002 0018  Rage Fury Pro/Xpert 2000 Pro\n\t\t1002 0028  Rage 128 AIW Pro AGP\n\t\t1002 0029  Rage 128 AIW\n\t\t1002 002a  Rage 128 AIW Pro AGP\n\t\t1002 002b  Rage 128 AIW\n\t\t1002 0048  Xpert 2000 Pro\n\t5452  Rage 128 PRO Ultra4XL VR-R AGP\n\t\t1002 001c  Rage 128 Pro 4XL\n\t\t103c 1279  Rage 128 Pro 4XL\n\t5460  RV370/M22 [Mobility Radeon X300]\n\t\t1775 1100  CR11/VR11 Single Board Computer\n\t5461  RV370/M22 [Mobility Radeon X300]\n\t5462  RV380/M24C [Mobility Radeon X600 SE]\n\t5464  RV370/M22 GL [Mobility FireGL V3100]\n\t5549  R423 [Radeon X800 GTO]\n\t554a  R423 [Radeon X800 XT Platinum Edition]\n\t554b  R423 [Radeon X800 GT/SE]\n\t\t1002 0302  Radeon X800 SE\n\t554d  R480 [Radeon X800 GTO2/XL]\n\t\t1002 0322  All-In-Wonder X800 XL\n\t\t1458 2124  GV-R80L256V-B (AGP)\n\t554e  R430 [All-In-Wonder X800 GT]\n\t554f  R430 [Radeon X800]\n\t5550  R423 GL [FireGL V7100]\n\t5551  R423 GL [FireGL V5100]\n\t5569  R423 [Radeon X800 PRO] (Secondary)\n\t556b  R423 [Radeon X800 GT] (Secondary)\n\t556d  R480 [Radeon X800 GTO2/XL] (Secondary)\n\t\t1458 2125  GV-R80L256V-B (AGP)\n\t556f  R430 [Radeon X800] (Secondary)\n\t5571  R423 GL [FireGL V5100] (Secondary)\n\t564b  RV410/M26 GL [Mobility FireGL V5000]\n\t564f  RV410/M26 [Mobility Radeon X700 XL]\n\t5652  RV410/M26 [Mobility Radeon X700]\n\t5653  RV410/M26 [Mobility Radeon X700]\n\t\t1025 0080  Aspire 5024WLMi\n\t\t103c 0940  Compaq NW8240 Mobile Workstation\n\t5654  Mach64 VT [Video Xpression]\n\t\t1002 5654  Mach64VT Reference\n\t5655  264VT3 [Mach64 VT3]\n\t5656  Mach64 VT4 [Video Xpression+]\n\t5657  RV410 [Radeon X550 XTX / X700]\n\t5830  RS300 Host Bridge\n\t5831  RS300 Host Bridge\n\t5832  RS300 Host Bridge\n\t5833  RS300 Host Bridge\n\t5834  RS300 [Radeon 9100 IGP]\n\t5835  RS300M [Mobility Radeon 9100 IGP]\n\t5838  RS300 AGP Bridge\n\t5854  RS480 [Radeon Xpress 200 Series] (Secondary)\n\t5874  RS480 [Radeon Xpress 1150] (Secondary)\n\t5940  RV280 [Radeon 9200 PRO] (Secondary)\n\t\t17af 2021  Excalibur Radeon 9250 (Secondary)\n\t5941  RV280 [Radeon 9200] (Secondary)\n\t\t1458 4019  Radeon 9200\n\t\t174b 7c12  Radeon 9200\n\t\t17af 200d  Excalibur Radeon 9200\n\t\t18bc 0050  GC-R9200-C3 (Secondary)\n\t5944  RV280 [Radeon 9200 SE PCI]\n\t5950  RS480/RS482/RS485 Host Bridge\n\t\t1025 0080  Aspire 5024WLMMi\n\t\t103c 280a  DC5750 Microtower\n\t\t103c 2a20  Pavilion t3030.de Desktop PC\n\t\t103c 308b  MX6125\n\t\t1462 0131  MS-1013 Notebook\n\t\t1462 7217  Aspire L250\n\t5951  RX480/RX482 Host Bridge\n\t5952  RD580 Host Bridge\n\t5954  RS480 [Radeon Xpress 200 Series]\n\t\t1002 5954  RV370 [Radeon Xpress 200G Series]\n\t5955  RS480M [Mobility Radeon Xpress 200]\n\t\t1002 5955  RS480 0x5955 [Radeon XPRESS 200M 5955 (PCIE)]\n\t\t103c 308b  MX6125\n\t\t1462 0131  MS-1013 Notebook\n\t5956  RD790 Host Bridge\n\t5957  RX780/RX790 Host Bridge\n\t\t1849 5957  A770CrossFire Motherboard\n\t5958  RD780 Host Bridge\n\t5960  RV280 [Radeon 9200 PRO / 9250]\n\t\t17af 2020  Excalibur Radeon 9250\n\t5961  RV280 [Radeon 9200]\n\t\t1002 2f72  All-in-Wonder 9200 Series\n\t\t1019 4c30  Radeon 9200 VIVO\n\t\t12ab 5961  YUAN SMARTVGA Radeon 9200\n\t\t1458 4018  Radeon 9200\n\t\t174b 7c13  Radeon 9200\n\t\t17af 200c  Excalibur Radeon 9200\n\t\t18bc 0050  Radeon 9200 Game Buster\n\t\t18bc 0051  GC-R9200-C3\n\t\t18bc 0053  Radeon 9200 Game Buster VIVO\n\t5962  RV280 [Radeon 9200]\n\t5964  RV280 [Radeon 9200 SE]\n\t\t1002 5964  Radeon 9200 SE, 64-bit 128MB DDR, 200/166MHz\n\t\t1043 c006  Radeon 9200 SE / TD / 128M\n\t\t1458 4018  R92S128T [Radeon 9200 SE 128MB]\n\t\t1458 4032  Radeon 9200 SE 128MB\n\t\t147b 6191  R9200SE-DT\n\t\t148c 2073  CN-AG92E\n\t\t174b 7c13  Radeon 9200 SE\n\t\t1787 5964  Excalibur 9200SE VIVO 128M\n\t\t17af 2012  Radeon 9200 SE Excalibur\n\t\t18bc 0170  Sapphire Radeon 9200 SE 128MB Game Buster\n\t\t18bc 0173  GC-R9200L(SE)-C3H [Radeon 9200 Game Buster]\n\t5965  RV280 GL [FireMV 2200 PCI]\n\t5974  RS482/RS485 [Radeon Xpress 1100/1150]\n\t\t103c 280a  DC5750 Microtower\n\t\t1462 7141  Aspire L250\n\t5975  RS482M [Mobility Radeon Xpress 200]\n\t5978  RX780/RD790 PCI to PCI bridge (external gfx0 port A)\n\t\t1849 5957  A770CrossFire Motherboard\n\t5979  RD790 PCI to PCI bridge (external gfx0 port B)\n\t597a  RD790 PCI to PCI bridge (PCI express gpp port A)\n\t597b  RX780/RD790 PCI to PCI bridge (PCI express gpp port B)\n\t597c  RD790 PCI to PCI bridge (PCI express gpp port C)\n\t597d  RX780/RD790 PCI to PCI bridge (PCI express gpp port D)\n\t597e  RD790 PCI to PCI bridge (PCI express gpp port E)\n\t\t1849 5957  A770CrossFire Motherboard\n\t597f  RD790 PCI to PCI bridge (PCI express gpp port F)\n\t\t1849 5957  A770CrossFire Motherboard\n\t5980  RD790 PCI to PCI bridge (external gfx1 port A)\n\t5981  RD790 PCI to PCI bridge (external gfx1 port B)\n\t5982  RD790 PCI to PCI bridge (NB-SB link)\n\t5a10  RD890 Northbridge only dual slot (2x16) PCI-e GFX Hydra part\n\t5a11  RD890 Northbridge only single slot PCI-e GFX Hydra part\n\t5a12  RD890 Northbridge only dual slot (2x8) PCI-e GFX Hydra part\n\t\t15d9 a811  H8DGU\n\t5a13  RD890S/SR5650 Host Bridge\n\t5a14  RD9x0/RX980 Host Bridge\n\t5a15  RD890 PCI to PCI bridge (PCI express gpp port A)\n\t5a16  RD890/RD9x0/RX980 PCI to PCI bridge (PCI Express GFX port 0)\n\t5a17  RD890/RD9x0 PCI to PCI bridge (PCI Express GFX port 1)\n\t5a18  RD890/RD9x0/RX980 PCI to PCI bridge (PCI Express GPP Port 0)\n\t\t15d9 a811  H8DGU\n\t5a19  RD890/RD9x0/RX980 PCI to PCI bridge (PCI Express GPP Port 1)\n\t5a1a  RD890/RD9x0/RX980 PCI to PCI bridge (PCI Express GPP Port 2)\n\t5a1b  RD890/RD9x0/RX980 PCI to PCI bridge (PCI Express GPP Port 3)\n\t5a1c  RD890/RD9x0/RX980 PCI to PCI bridge (PCI Express GPP Port 4)\n\t5a1d  RD890/RD9x0/RX980 PCI to PCI bridge (PCI Express GPP Port 5)\n\t5a1e  RD890/RD9x0/RX980 PCI to PCI bridge (PCI Express GPP2 Port 0)\n\t5a1f  RD890/RD990 PCI to PCI bridge (PCI Express GFX2 port 0)\n\t\t15d9 a811  H8DGU\n\t5a20  RD890/RD990 PCI to PCI bridge (PCI Express GFX2 port 1)\n\t5a23  RD890S/RD990 I/O Memory Management Unit (IOMMU)\n\t5a31  RC410 Host Bridge\n\t5a33  RS400 Host Bridge\n\t5a34  RS4xx PCI Express Port [ext gfx]\n\t5a36  RC4xx/RS4xx PCI Express Port 1\n\t5a37  RC4xx/RS4xx PCI Express Port 2\n\t5a38  RC4xx/RS4xx PCI Express Port 3\n\t5a39  RC4xx/RS4xx PCI Express Port 4\n\t5a3f  RC4xx/RS4xx PCI Bridge [int gfx]\n\t\t1462 7217  Aspire L250\n\t5a41  RS400 [Radeon Xpress 200]\n\t5a42  RS400M [Radeon Xpress 200M]\n\t5a61  RC410 [Radeon Xpress 200/1100]\n\t5a62  RC410M [Mobility Radeon Xpress 200M]\n\t5b60  RV370 [Radeon X300]\n\t\t1043 002a  Extreme AX300SE-X\n\t\t1043 032e  Extreme AX300/TD\n\t\t1458 2102  GV-RX30S128D (X300SE)\n\t\t1462 0400  RX300SE-TD128E (MS-8940 REV:200)\n\t\t1462 0402  RX300SE-TD128E (MS-8940)\n\t\t174b 0500  Radeon X300 (PCIE)\n\t\t196d 1086  X300SE HM\n\t5b62  RV370 [Radeon X600/X600 SE]\n\t5b63  RV370 [Radeon X300/X550/X1050 Series]\n\t5b64  RV370 GL [FireGL V3100]\n\t5b65  RV370 GL [FireMV 2200]\n\t5b66  RV370X\n\t5b70  RV370 [Radeon X300 SE]\n# RX300SE-TD128E\n\t\t1462 0403  Radeon X300 SE 128MB DDR\n\t\t174b 0501  Radeon X300 SE\n\t\t196d 1087  Radeon X300 SE HyperMemory\n\t5b72  RV380 [Radeon X300/X550/X1050 Series] (Secondary)\n\t5b73  RV370 [Radeon X300/X550/X1050 Series] (Secondary)\n\t5b74  RV370 GL [FireGL V3100] (Secondary)\n\t5b75  RV370 GL [FireMV 2200] (Secondary)\n\t5c61  RV280/M9+ [Mobility Radeon 9200 AGP]\n\t5c63  RV280/M9+ [Mobility Radeon 9200 AGP]\n\t\t1002 5c63  Apple iBook G4 2004\n\t\t144d c00c  P30 notebook\n\t5d44  RV280 [Radeon 9200 SE] (Secondary)\n\t\t1458 4019  R92S128T (Radeon 9200 SE 128MB Secondary)\n\t\t1458 4032  Radeon 9200 SE 128MB\n\t\t147b 6190  R9200SE-DT (Secondary)\n\t\t174b 7c12  Radeon 9200 SE (Secondary)\n\t\t1787 5965  Excalibur 9200SE VIVO 128M (Secondary)\n\t\t17af 2013  Radeon 9200 SE Excalibur (Secondary)\n\t\t18bc 0171  Radeon 9200 SE 128MB Game Buster (Secondary)\n\t\t18bc 0172  GC-R9200L(SE)-C3H [Radeon 9200 Game Buster]\n\t5d45  RV280 GL [FireMV 2200 PCI] (Secondary)\n\t5d48  R423/M28 [Mobility Radeon X800 XT]\n\t5d49  R423/M28 GL [Mobility FireGL V5100]\n\t5d4a  R423/M28 [Mobility Radeon X800]\n\t5d4d  R480 [Radeon X850 XT Platinum Edition]\n\t5d4e  R480 [Radeon X850 SE]\n\t5d4f  R480 [Radeon X800 GTO]\n\t5d50  R480 GL [FireGL V7200]\n\t5d52  R480 [Radeon X850 XT]\n\t\t1002 0b12  PowerColor X850XT PCIe (Primary)\n\t5d57  R423 [Radeon X800 XT]\n\t5d6d  R480 [Radeon X850 XT Platinum Edition] (Secondary)\n\t5d6f  R480 [Radeon X800 GTO] (Secondary)\n\t5d72  R480 [Radeon X850 XT] (Secondary)\n\t\t1002 0b13  PowerColor X850XT PCIe (Secondary)\n\t5d77  R423 [Radeon X800 XT] (Secondary)\n\t5e48  RV410 GL [FireGL V5000]\n\t5e49  RV410 [Radeon X700 Series]\n\t5e4a  RV410 [Radeon X700 XT]\n\t5e4b  RV410 [Radeon X700 PRO]\n\t5e4c  RV410 [Radeon X700 SE]\n\t5e4d  RV410 [Radeon X700]\n\t\t148c 2116  Bravo X700\n\t5e4f  RV410 [Radeon X700]\n\t\t1569 1e4f  Radeon X550 XT\n\t5e6b  RV410 [Radeon X700 PRO] (Secondary)\n\t5e6d  RV410 [Radeon X700] (Secondary)\n\t\t148c 2117  Bravo X700 (Secondary)\n\t5f57  R423 [Radeon X800 XT]\n\t6600  Mars [Radeon HD 8670A/8670M/8750M / R7 M370]\n\t\t103c 1952  ProBook 455 G1\n\t6601  Mars [Radeon HD 8730M]\n\t\t103c 2100  FirePro M4100\n\t6604  Opal XT [Radeon R7 M265/M365X/M465]\n\t\t1025 0776  Aspire V5 Radeon R7 M265\n\t\t103c 8006  FirePro M4170\n\t\t103c 814f  Litho XT [Radeon R7 M365X]\n\t\t103c 82aa  Litho XT [Radeon R7 M465]\n\t\t17aa 3643  Radeon R7 A360\n\t6605  Opal PRO [Radeon R7 M260X]\n\t\t103c 2259  FirePro M4150\n\t6606  Mars XTX [Radeon HD 8790M]\n\t\t1028 0684  FirePro W4170M\n\t6607  Mars LE [Radeon HD 8530M / R5 M240]\n\t6608  Oland GL [FirePro W2100]\n\t\t13cc 3d28  MXRT-2600\n\t6609  Oland GL [FirePro W2100 / Barco MXRT 2600]\n\t6610  Oland XT [Radeon HD 8670 / R5 340X OEM / R7 250/350/350X OEM]\n\t\t1019 0030  Radeon HD 8670\n\t\t1028 0081  Radeon R7 350X OEM\n\t\t1028 0083  Radeon R5 340X OEM\n\t\t1028 2120  Radeon R7 250\n\t\t1028 2322  Radeon R7 250\n\t\t1462 2910  Radeon HD 8670\n\t\t1462 2911  Radeon HD 8670\n\t\t148c 7350  Radeon R7 350\n\t\t1642 3c81  Radeon HD 8670\n\t\t1642 3c91  Radeon HD 8670\n\t\t1642 3f09  Radeon R7 350\n\t6611  Oland [Radeon HD 8570 / R5 430 OEM / R7 240/340 / Radeon 520 OEM]\n\t\t1028 1001  Radeon R5 430 OEM (1024 MByte)\n\t\t1028 1002  Radeon R5 430 OEM (2048 MByte)\n# The 'AMD Radeon R5 430' instead of 240/340 is NOT a typo! It's actually correct.\n\t\t1028 1711  R5 430 OEM (2048 MByte)\n\t\t1028 210b  Radeon R5 240 OEM\n# OEM-card for Dell; verified through AMD's own drivers (*.inf) and a TPU BIOS in database\n\t\t1028 2121  Radeon HD 8570 OEM\n# OEM-card from Fujitsu; verified through AMD's own drivers (*.inf)\n\t\t10cf 1889  Radeon HD 8570 OEM\n\t\t1642 1869  Radeon 520 OEM\n\t\t174b 4248  Radeon R7 240 OEM\n\t\t174b a240  Radeon R7 240 OEM\n\t\t174b d340  Radeon R7 340 OEM\n\t\t1b0a 90d3  Radeon R7 240 OEM\n\t6613  Oland PRO [Radeon R7 240/340 / Radeon 520]\n\t\t148c 7340  Radeon R7 340\n\t\t1682 7240  R7 240 2048 MB\n\t\t1dcf 3000  Oland PRO [Radeon R7 240/340 / Radeon 520]\n\t6617  Oland LE [Radeon R7 240]\n\t6631  Oland\n\t6640  Saturn XT [FirePro M6100]\n\t\t106b 014b  Tropo XT [Radeon R9 M380 Mac Edition]\n\t6641  Saturn PRO [Radeon HD 8930M]\n\t6646  Bonaire XT [Radeon R9 M280X / FirePro W6150M]\n\t6647  Saturn PRO/XT [Radeon R9 M270X/M280X]\n\t\t1043 223d  N551ZU laptop Radeon R9 M280X\n\t6649  Bonaire [FirePro W5100]\n\t\t1002 0b0c  FirePro W4300\n\t\t103c 0b0c  Bonaire [FirePro W4300]\n\t\t103c 230c  FirePro W5100\n\t\t13cc 3d2a  MXRT-5600\n\t664d  Bonaire [FirePro W5100 / Barco MXRT-5600]\n\t6650  Bonaire\n\t6651  Bonaire\n\t6658  Bonaire XTX [Radeon R7 260X/360]\n\t\t1043 048f  R7260X-DC2OC-2GD5\n\t\t1043 04d3  AMD Radeon R7 260X\n# GV-R726XOC-1GD\n\t\t1458 227b  Radeon R7 260X\n\t\t148c 0907  Radeon R7 360\n\t\t1682 0907  Radeon R7 360\n\t\t1682 7360  Radeon R7 360\n\t665c  Bonaire XT [Radeon HD 7790/8770 / R7 360 / R9 260/360 OEM]\n\t\t1043 0452  Radeon HD 7790 DirectCU II OC\n# R7790-1GD5/OC\n\t\t1462 2930  Radeon HD 7790 OC\n\t\t1462 2932  Radeon HD 8770\n\t\t1462 2934  Radeon R9 260 OEM\n\t\t1462 2938  Radeon R9 360 OEM\n\t\t148c 0907  Radeon R7 360\n\t\t148c 9260  Radeon R9 260 OEM\n\t\t148c 9360  Radeon R9 360 OEM\n\t\t1682 0907  Radeon R7 360\n# FX-779A-CDB4 / FX-779A-CDBC\n\t\t1682 3310  Radeon HD 7790 Black Edition 2 GB\n# 100356OCL / 11210-01-20G\n\t\t174b e253  Radeon HD 7790 Dual-X OC\n\t\t1787 2329  Radeon HD 7790 TurboDuo\n\t665d  Bonaire [Radeon R7 200 Series]\n\t665f  Tobago PRO [Radeon R7 360 / R9 360 OEM]\n\t\t1028 0b04  Radeon R9 360 OEM\n\t\t1462 2938  Radeon R9 360 OEM\n\t\t1462 3271  Radeon R9 360 OEM\n\t\t1682 7360  Radeon R7 360\n\t6660  Sun XT [Radeon HD 8670A/8670M/8690M / R5 M330 / M430 / Radeon 520 Mobile]\n\t\t1028 05ea  Radeon HD 8670M\n\t\t1028 06bf  Radeon R5 M335\n\t\t103c 1970  Radeon HD 8670M\n\t\t103c 80be  Radeon R5 M330\n\t\t103c 8136  Radeon R5 M330\n\t\t103c 8329  Radeon R7 M520\n\t\t17aa 3633  Radeon R5 A330\n\t\t17aa 3804  Radeon R5 M330\n\t\t17aa 3809  Radeon R5 M330\n\t\t17aa 381a  Radeon R5 M430\n\t\t17aa 390c  Radeon R5 M330\n\t6663  Sun PRO [Radeon HD 8570A/8570M]\n\t\t1025 0846  Radeon HD 8570A\n\t\t17aa 3805  Radeon HD 8570M\n\t6664  Jet XT [Radeon R5 M240]\n\t6665  Jet PRO [Radeon R5 M230 / R7 M260DX / Radeon 520/610 Mobile]\n\t\t17aa 1309  Z50-75 Radeon R7 M260DX\n\t\t17aa 368f  Radeon R5 A230\n\t6667  Jet ULT [Radeon R5 M230]\n\t666f  Sun LE [Radeon HD 8550M / R5 M230]\n\t66a0  Vega 20 [Radeon Pro/Radeon Instinct]\n\t66a1  Vega 20 [Radeon Pro VII/Radeon Instinct MI50 32GB]\n\t66a2  Vega 20\n\t66a3  Vega 20 [Radeon Pro Vega II/Radeon Pro Vega II Duo]\n\t66a7  Vega 20 [Radeon Pro Vega 20]\n\t66af  Vega 20 [Radeon VII]\n\t6704  Cayman PRO GL [FirePro V7900]\n\t6707  Cayman LE GL [FirePro V5900]\n\t6718  Cayman XT [Radeon HD 6970]\n\t6719  Cayman PRO [Radeon HD 6950]\n\t671c  Antilles [Radeon HD 6990]\n\t671d  Antilles [Radeon HD 6990]\n\t671f  Cayman CE [Radeon HD 6930]\n\t6720  Blackcomb [Radeon HD 6970M/6990M]\n\t\t1028 048f  Radeon HD 6990M\n\t\t1028 0490  Alienware M17x R3 Radeon HD 6970M\n\t\t1028 04a4  FirePro M8900\n\t\t1028 04ba  Radeon HD 6990M\n\t\t1028 053f  FirePro M8900\n\t\t106b 0b00  Radeon HD 6970M\n\t\t1558 5102  Radeon HD 6970M\n\t\t1558 5104  Radeon HD 6990M\n\t\t1558 7201  Radeon HD 6990M\n\t\t174b e188  Radeon HD 6970M\n\t6738  Barts XT [Radeon HD 6870]\n# HD-687A-ZDFC\n\t\t1682 3103  Radeon HD 8670\n\t\t1787 201a  Barts XT [Radeon HD 6870 X2]\n\t\t1787 201b  Barts XT [Radeon HD 6870 X2]\n\t6739  Barts PRO [Radeon HD 6850]\n\t\t1043 03b4  EAH6850 [Radeon HD 6850]\n\t673e  Barts LE [Radeon HD 6790]\n\t\t148c 7720  Radeon HD 7720 OEM\n\t6740  Whistler [Radeon HD 6730M/6770M/7690M XT]\n\t\t1019 238c  Radeon HD 6730M\n\t\t1019 238e  Radeon HD 6730M\n\t\t1019 2391  Radeon HD 6730M\n\t\t1019 2392  Radeon HD 6770M\n\t\t1028 04a3  Precision M4600\n\t\t1028 053e  FirePro M5950\n\t\t103c 1630  FirePro M5950\n\t\t103c 1631  FirePro M5950\n\t\t103c 164b  Radeon HD 6730M\n\t\t103c 164e  Radeon HD 6730M\n\t\t103c 1657  Radeon HD 6770M\n\t\t103c 1658  Radeon HD 6770M\n\t\t103c 165a  Radeon HD 6770M\n\t\t103c 165b  Radeon HD 6770M\n\t\t103c 1688  Radeon HD 6770M\n\t\t103c 1689  Radeon HD 6770M\n\t\t103c 168a  Radeon HD 6770M\n\t\t103c 185e  Radeon HD 7690M XT\n\t\t103c 3388  Radeon HD 6770M\n\t\t103c 3389  Radeon HD 6770M\n\t\t103c 3582  Radeon HD 6770M\n\t\t103c 366c  Radeon HD 6730M\n\t\t1043 1d02  Radeon HD 6730M\n\t\t1043 1d12  Radeon HD 6730M\n\t\t104d 9084  Radeon HD 6730M\n\t\t104d 9085  Radeon HD 6730M\n\t\t144d b074  Radeon HD 6730M\n\t\t144d b077  Radeon HD 6730M\n\t\t144d b084  Radeon HD 6730M\n\t\t144d b088  Radeon HD 6730M\n\t\t17aa 3982  Radeon HD 6730M\n\t6741  Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M]\n\t\t1019 238e  Radeon HD 6650M\n\t\t1019 238f  Radeon HD 6650M\n\t\t1025 0379  Radeon HD 6650M\n\t\t1025 037b  Radeon HD 6650M\n\t\t1025 037e  Radeon HD 6650M\n\t\t1025 0382  Radeon HD 6650M\n\t\t1025 0384  Radeon HD 6650M\n\t\t1025 0385  Radeon HD 6650M\n\t\t1025 0386  Radeon HD 6650M\n\t\t1025 0387  Radeon HD 6650M\n\t\t1025 0388  Radeon HD 6650M\n\t\t1025 0442  Radeon HD 6650M\n\t\t1025 0451  Radeon HD 6650M\n\t\t1025 0489  Radeon HD 6650M\n\t\t1025 048b  Radeon HD 6650M\n\t\t1025 048c  Radeon HD 6650M\n\t\t1025 050a  Radeon HD 6650M\n\t\t1025 050b  Radeon HD 6650M\n\t\t1025 050c  Radeon HD 6650M\n\t\t1025 050e  Radeon HD 6650M\n\t\t1025 050f  Radeon HD 6650M\n\t\t1025 0513  Radeon HD 6650M\n\t\t1025 0514  Radeon HD 6650M\n\t\t1025 0515  Radeon HD 6650M\n\t\t1025 0516  Radeon HD 6650M\n\t\t1025 051e  Radeon HD 6650M\n\t\t1025 051f  Radeon HD 6650M\n\t\t1025 0520  Radeon HD 6650M\n\t\t1025 0521  Radeon HD 6650M\n\t\t1025 052a  Radeon HD 6650M\n\t\t1025 0555  Radeon HD 6650M\n\t\t1025 0556  Radeon HD 6650M\n\t\t1025 055d  Radeon HD 6650M\n\t\t1025 055e  Radeon HD 6650M\n\t\t1025 056d  Radeon HD 6650M\n\t\t1025 059a  Radeon HD 6650M\n\t\t1025 059b  Radeon HD 6650M\n\t\t1025 059e  Radeon HD 6650M\n\t\t1025 059f  Radeon HD 6650M\n\t\t1025 0600  Radeon HD 6650M\n\t\t1025 0605  Radeon HD 6650M\n\t\t1025 0606  Radeon HD 6650M\n\t\t1025 0619  Radeon HD 6650M\n\t\t1028 04c1  Radeon HD 6630M\n\t\t1028 04c5  Radeon HD 6630M\n\t\t1028 04cd  Radeon HD 6630M\n\t\t1028 04d7  Radeon HD 6630M\n\t\t1028 04d9  Radeon HD 6630M\n\t\t1028 052d  Radeon HD 6630M\n\t\t103c 1617  Radeon HD 6650M\n\t\t103c 1646  Radeon HD 6750M\n\t\t103c 1647  Radeon HD 6650M\n\t\t103c 164b  Radeon HD 6650M\n\t\t103c 164e  Radeon HD 6650M\n\t\t103c 1688  Radeon HD 6750M\n\t\t103c 1689  Radeon HD 6750M\n\t\t103c 168a  Radeon HD 6750M\n\t\t103c 1860  Radeon HD 7690M\n\t\t103c 3385  Radeon HD 6630M\n\t\t103c 3560  Radeon HD 6750M\n\t\t103c 358d  Radeon HD 6750M\n\t\t103c 3590  Radeon HD 6750M\n\t\t103c 3593  Radeon HD 6750M\n\t\t103c 366c  Radeon HD 6650M\n\t\t1043 1cd2  Radeon HD 6650M\n\t\t1043 2121  Radeon HD 6650M\n\t\t1043 2122  Radeon HD 6650M\n\t\t1043 2123  Radeon HD 6650M\n\t\t1043 2125  Radeon HD 7670M\n\t\t1043 2127  Radeon HD 7670M\n\t\t104d 907b  Radeon HD 6630M\n\t\t104d 9080  Radeon HD 6630M\n\t\t104d 9081  Radeon HD 6630M\n\t\t106b 00e2  MacBookPro8,2 [Core i7, 15\", Late 2011]\n\t\t1179 fd63  Radeon HD 6630M\n\t\t1179 fd65  Radeon HD 6630M\n\t\t144d c093  Radeon HD 6650M\n\t\t144d c0ac  Radeon HD 6650M\n\t\t144d c0b3  Radeon HD 6750M\n\t\t144d c539  Radeon HD 6630M\n\t\t144d c609  Radeon HD 6630M\n\t\t152d 0914  Radeon HD 6650M\n\t\t17aa 21e1  Radeon HD 6630M\n\t\t17aa 3970  Radeon HD 6650M\n\t\t17aa 3976  Radeon HD 6650M\n\t\t1854 0907  Radeon HD 6650M\n\t6742  Whistler LE [Radeon HD 6610M/7610M]\n\t\t1002 6570  Turks [Radeon HD 6570]\n\t\t1019 2393  Radeon HD 6610M\n\t\t1043 1d82  K53SK Laptop Radeon HD 7610M\n\t\t1179 fb22  Radeon HD 7610M\n\t\t1179 fb23  Radeon HD 7610M\n\t\t1179 fb27  Radeon HD 7610M\n\t\t1179 fb2a  Radeon HD 7610M\n\t\t1179 fb2c  Radeon HD 7610M\n\t\t1179 fb30  Radeon HD 7610M\n\t\t1179 fb31  Radeon HD 7610M\n\t\t1179 fb32  Radeon HD 7610M\n\t\t1179 fb38  Radeon HD 7610M\n\t\t1179 fb39  Radeon HD 7610M\n\t\t1179 fb3a  Radeon HD 7610M\n\t\t1179 fb3b  Radeon HD 7610M\n\t\t1179 fb40  Radeon HD 7610M\n\t\t1179 fb41  Radeon HD 7610M\n\t\t1179 fb47  Radeon HD 7610M\n\t\t1179 fb48  Radeon HD 7610M\n\t\t1179 fb49  Radeon HD 7610M\n\t\t1179 fb51  Radeon HD 7610M\n\t\t1179 fb52  Radeon HD 7610M\n\t\t1179 fb53  Radeon HD 7610M\n\t\t1179 fb56  Radeon HD 7610M\n\t\t1179 fb81  Radeon HD 7610M\n\t\t1179 fb82  Radeon HD 7610M\n\t\t1179 fb83  Radeon HD 7610M\n\t\t1179 fc56  Radeon HD 7610M\n\t\t1179 fcd4  Radeon HD 7610M\n\t\t1179 fcee  Radeon HD 7610M\n\t\t1458 6570  Turks [Radeon HD 6570]\n\t\t1462 6570  Turks [Radeon HD 6570]\n\t\t148c 6570  Turks [Radeon HD 6570]\n\t\t1682 6570  Turks [Radeon HD 6570]\n\t\t174b 5570  Turks [Radeon HD 5570]\n\t\t174b 6570  Turks [Radeon HD 6570]\n\t\t174b 7570  Turks [Radeon HD 7570]\n\t\t174b 8510  Turks [Radeon HD 8510]\n\t\t174b 8570  Turks [Radeon HD 8570]\n\t\t1787 6570  Turks [Radeon HD 6570]\n\t\t17af 6570  Turks [Radeon HD 6570]\n\t\t8086 2111  Radeon HD 6625M\n\t6743  Whistler [Radeon E6760]\n\t6749  Turks GL [FirePro V4900]\n\t\t15c3 2b06  MED-X4900 (EIZO)\n\t674a  Turks GL [FirePro V3900]\n\t\t13cc 3d22  MXRT-2500\n\t\t15c3 0106  MED-X3900\n\t6750  Onega [Radeon HD 6650A/7650A]\n\t\t1462 2670  Radeon HD 6670A\n\t\t17aa 3079  Radeon HD 7650A\n\t\t17aa 307a  Radeon HD 6650A\n\t\t17aa 3087  Radeon HD 7650A\n\t\t17aa 3618  Radeon HD 6650A\n\t\t17aa 3623  Radeon HD 6650A\n\t\t17aa 3627  Radeon HD 6650A\n\t6751  Turks [Radeon HD 7650A/7670A]\n\t\t1028 0548  Radeon HD 7650A\n\t\t1462 2671  Radeon HD 7670A\n\t\t1462 2672  Radeon HD 7670A\n\t\t1462 2680  Radeon HD 7650A\n\t\t1462 2681  Radeon HD 7650A\n\t\t17aa 3087  Radeon HD 7650A\n\t6758  Turks XT [Radeon HD 6670/7670]\n\t\t1028 0b0e  Radeon HD 6670\n\t\t103c 6882  Radeon HD 6670\n\t\t1462 250a  Radeon HD 7670\n\t\t148c 7670  Radeon HD 7670\n\t\t1545 7670  Radeon HD 7670\n\t\t1682 3300  Radeon HD 7670\n\t\t174b 7670  Radeon HD 7670\n\t\t174b e181  Radeon HD 6670\n\t\t1787 2309  Radeon HD 6670\n\t6759  Turks PRO [Radeon HD 6570/7570/8550 / R5 230]\n\t\t103c 3130  Radeon HD 6570\n\t\t1043 0403  Radeon HD 6570\n\t\t1462 2500  Radeon HD 6570\n\t\t1462 2509  Radeon HD 7570\n\t\t148c 7570  Radeon HD 7570\n\t\t1642 3a67  Radeon HD 6570\n\t\t1682 3280  Radeon HD 7570\n\t\t1682 3530  Radeon HD 8550\n\t\t1682 5230  Radeon R5 230 series\n\t\t1682 6450  Radeon HD 6450 series\n\t\t174b 7570  Radeon HD 7570\n\t\t174b 8550  Radeon HD8550 OEM\n\t\t174b 8570  Radeon HD8550 OEM\n\t\t174b e142  Radeon HD 6570\n\t\t174b e181  Radeon HD 6570\n\t\t1787 a230  Radeon R5 230 series\n\t\t1787 a450  Radeon HD 6450 series\n\t\t1b0a 908f  Radeon HD 6570\n\t\t1b0a 9090  Radeon HD 6570\n\t\t1b0a 9091  Radeon HD 6570\n\t\t1b0a 9092  Radeon HD 6570\n\t\t1b0a 909e  Radeon HD 6570\n\t\t1b0a 90b5  Radeon HD 7570\n\t\t1b0a 90b6  Radeon HD 7570\n\t675b  Turks [Radeon HD 7600 Series]\n\t675d  Turks PRO [Radeon HD 7570]\n\t675f  Turks LE [Radeon HD 5570/6510/7510/8510]\n\t\t148c 6510  Radeon HD 6510\n\t\t148c 6530  Radeon HD 6530\n\t\t148c 7510  Radeon HD 7510\n\t\t1545 7570  Radeon HD 7570\n\t\t174b 6510  Radeon HD 6510\n\t\t174b 7510  Radeon HD 7510\n\t\t174b 8510  Radeon HD 8510\n\t\t1787 2012  Radeon HD 5570 2GB GDDR3\n\t\t1787 2314  Radeon HD 5570 1GB DDR2/GDDR3\n\t6760  Seymour [Radeon HD 6400M/7400M Series]\n\t\t1002 0124  Radeon HD 6470M\n\t\t1002 0134  Radeon HD 6470M\n\t\t1019 238b  Radeon HD 6470M\n\t\t1019 238e  Radeon HD 6470M\n\t\t1019 2390  Radeon HD 6470M\n\t\t1019 9985  Radeon HD 6470M\n\t\t1028 04c1  Radeon HD 6470M\n\t\t1028 04c3  Radeon HD 6470M\n\t\t1028 04ca  Radeon HD 6470M\n\t\t1028 04cb  Radeon HD 6470M\n\t\t1028 04cc  Vostro 3350\n\t\t1028 04d1  Radeon HD 6470M\n\t\t1028 04d3  Radeon HD 6470M\n\t\t1028 04d7  Radeon HD 6470M\n\t\t1028 0502  Radeon HD 6470M\n\t\t1028 0503  Radeon HD 6470M\n\t\t1028 0506  Radeon HD 6470M\n\t\t1028 0507  Radeon HD 6470M\n\t\t1028 0514  Radeon HD 6470M\n\t\t1028 051c  Radeon HD 6450M / 7430M\n\t\t1028 051d  Radeon HD 6450M / 7430M\n\t\t103c 161a  Radeon HD 6470M\n\t\t103c 161b  Radeon HD 6470M\n\t\t103c 161e  Radeon HD 6470M\n\t\t103c 161f  Radeon HD 6470M\n\t\t103c 1622  Radeon HD 6450M\n\t\t103c 1623  Radeon HD 6450M\n\t\t103c 164a  Radeon HD 6470M\n\t\t103c 164d  Radeon HD 6470M\n\t\t103c 1651  Radeon HD 6470M\n\t\t103c 1656  Radeon HD 6490M\n\t\t103c 1658  Radeon HD 6490M\n\t\t103c 1659  Radeon HD 6490M\n\t\t103c 165b  Radeon HD 6490M\n\t\t103c 165d  Radeon HD 6470M\n\t\t103c 165f  Radeon HD 6470M\n\t\t103c 1661  Radeon HD 6470M\n\t\t103c 1663  Radeon HD 6470M\n\t\t103c 1665  Radeon HD 6470M\n\t\t103c 1667  Radeon HD 6470M\n\t\t103c 1669  Radeon HD 6470M\n\t\t103c 166b  Radeon HD 6470M\n\t\t103c 166c  Radeon HD 6470M\n\t\t103c 166e  Radeon HD 6470M\n\t\t103c 1670  Radeon HD 6470M\n\t\t103c 1672  Radeon HD 6470M\n\t\t103c 167a  Radeon HD 6470M\n\t\t103c 167b  Radeon HD 6470M\n\t\t103c 167d  Radeon HD 6490M\n\t\t103c 167f  Radeon HD 6490M\n\t\t103c 168c  Radeon HD 6470M\n\t\t103c 168f  Radeon HD 6470M\n\t\t103c 1694  Radeon HD 6470M\n\t\t103c 1696  Radeon HD 6470M\n\t\t103c 1698  Radeon HD 6470M\n\t\t103c 169a  Radeon HD 6470M\n\t\t103c 169c  Radeon HD 6490M\n\t\t103c 1855  Radeon HD 7450M\n\t\t103c 1859  Radeon HD 7450M\n\t\t103c 185c  Radeon HD 7450M\n\t\t103c 185d  Radeon HD 7470M\n\t\t103c 185f  Radeon HD 7470M\n\t\t103c 1863  Radeon HD 7450M\n\t\t103c 355c  Radeon HD 6490M\n\t\t103c 355f  Radeon HD 6490M\n\t\t103c 3563  Radeon HD 6470M\n\t\t103c 3565  Radeon HD 6470M\n\t\t103c 3567  Radeon HD 6470M\n\t\t103c 3569  Radeon HD 6470M\n\t\t103c 3581  Radeon HD 6490M\n\t\t103c 3584  Radeon HD 6470M\n\t\t103c 358c  Radeon HD 6490M\n\t\t103c 358f  Radeon HD 6490M\n\t\t103c 3592  Radeon HD 6490M\n\t\t103c 3596  Radeon HD 6490M\n\t\t103c 366b  Radeon HD 6470M\n\t\t103c 3671  FirePro M3900\n\t\t103c 3673  Radeon HD 6470M\n\t\t1043 100a  Radeon HD 7470M\n\t\t1043 100c  Radeon HD 6470M\n\t\t1043 101b  Radeon HD 6470M\n\t\t1043 101c  Radeon HD 6470M\n\t\t1043 102a  Radeon HD 7450M\n\t\t1043 102c  Radeon HD 6470M\n\t\t1043 104b  Radeon HD 7470M\n\t\t1043 105d  Radeon HD 7470M\n\t\t1043 106b  Radeon HD 7470M\n\t\t1043 106d  Radeon HD 7470M\n\t\t1043 107d  Radeon HD 7470M\n\t\t1043 1cb2  Radeon HD 6470M\n\t\t1043 1d22  Radeon HD 6470M\n\t\t1043 1d32  Radeon HD 6470M\n\t\t1043 2001  Radeon HD 6470M\n\t\t1043 2002  Radeon HD 7470M\n\t\t1043 2107  Radeon HD 7470M\n\t\t1043 2108  Radeon HD 7470M\n\t\t1043 2109  Radeon HD 7470M\n\t\t1043 84a0  Radeon HD 6470M\n\t\t1043 84e9  Radeon HD 6470M\n\t\t1043 8515  Radeon HD 7470M\n\t\t1043 8517  Radeon HD 7470M\n\t\t1043 855a  Radeon HD 7470M\n\t\t104d 907b  Radeon HD 6470M\n\t\t104d 9081  Radeon HD 6470M\n\t\t104d 9084  Radeon HD 6470M\n\t\t104d 9085  Radeon HD 6470M\n\t\t1179 0001  Radeon HD 6450M\n\t\t1179 0003  Radeon HD 6450M\n\t\t1179 0004  Radeon HD 6450M\n\t\t1179 fb22  Radeon HD 7470M\n\t\t1179 fb23  Radeon HD 7470M\n\t\t1179 fb2c  Radeon HD 7470M\n\t\t1179 fb31  Radeon HD 7470M\n\t\t1179 fb32  Radeon HD 7470M\n\t\t1179 fb33  Radeon HD 7470M\n\t\t1179 fb38  Radeon HD 7470M\n\t\t1179 fb39  Radeon HD 7470M\n\t\t1179 fb3a  Radeon HD 7470M\n\t\t1179 fb40  Radeon HD 7470M\n\t\t1179 fb41  Radeon HD 7470M\n\t\t1179 fb42  Radeon HD 7470M\n\t\t1179 fb47  Radeon HD 7470M\n\t\t1179 fb48  Radeon HD 7470M\n\t\t1179 fb51  Radeon HD 7470M\n\t\t1179 fb52  Radeon HD 7470M\n\t\t1179 fb53  Radeon HD 7470M\n\t\t1179 fb81  Radeon HD 7470M\n\t\t1179 fb82  Radeon HD 7470M\n\t\t1179 fb83  Radeon HD 7470M\n\t\t1179 fc51  Radeon HD 6470M\n\t\t1179 fc52  Radeon HD 7470M\n\t\t1179 fc56  Radeon HD 7470M\n\t\t1179 fcd3  Radeon HD 7470M\n\t\t1179 fcd4  Radeon HD 7470M\n\t\t1179 fcee  Radeon HD 7470M\n\t\t1179 fdee  Radeon HD 7470M\n\t\t144d b074  Radeon HD 6470M\n\t\t144d b084  Radeon HD 6470M\n\t\t144d c095  Radeon HD 6470M\n\t\t144d c0b3  Radeon HD 6490M\n\t\t144d c538  Radeon HD 6470M\n\t\t144d c581  Radeon HD 6470M\n\t\t144d c589  Radeon HD 6470M\n\t\t144d c609  Radeon HD 7470M\n\t\t144d c625  Radeon HD 7470M\n\t\t144d c636  Radeon HD 7450M\n\t\t1462 10ac  Radeon HD 6470M\n\t\t152d 0916  Radeon HD 6470M\n\t\t17aa 21e5  Radeon HD 6470M\n\t\t17aa 3900  Radeon HD 7450M\n\t\t17aa 3902  Radeon HD 7450M\n\t\t17aa 3969  Radeon HD 6470M\n\t\t17aa 3970  Radeon HD 7450M\n\t\t17aa 3976  Radeon HD 6470M\n\t\t17aa 397b  Radeon HD 6470M\n\t\t17aa 397d  Radeon HD 6470M\n\t\t17aa 5101  Radeon HD 7470M\n\t\t17aa 5102  Radeon HD 7450M\n\t\t17aa 5103  Radeon HD 7450M\n\t\t17aa 5106  Radeon HD 7450M\n\t\t1854 0897  Radeon HD 6470M\n\t\t1854 0900  Radeon HD 6470M\n\t\t1854 0908  Radeon HD 6470M\n\t\t1854 2015  Radeon HD 6470M\n\t6761  Seymour LP [Radeon HD 6430M]\n\t6763  Seymour [Radeon E6460]\n\t6764  Seymour [Radeon HD 6400M Series]\n\t6765  Seymour [Radeon HD 6400M Series]\n\t6766  Caicos\n\t6767  Caicos\n\t6768  Caicos\n\t6770  Caicos [Radeon HD 6450A/7450A]\n\t\t17aa 308d  Radeon HD 7450A\n\t\t17aa 3623  Radeon HD 6450A\n\t\t17aa 3627  Radeon HD 6450A\n\t\t17aa 3629  Radeon HD 6450A\n\t\t17aa 363c  Radeon HD 6450A\n\t\t17aa 3658  Radeon HD 7470A\n\t6771  Caicos XTX [Radeon HD 8490 / R5 235X OEM]\n\t6772  Caicos [Radeon HD 7450A]\n\t6778  Caicos XT [Radeon HD 7470/8470 / R5 235/310 OEM]\n\t\t1019 0024  Radeon HD 7470\n\t\t1019 0027  Radeon HD 8470\n\t\t1028 2120  Radeon HD 7470\n\t\t1462 b491  Radeon HD 8470\n\t\t1462 b492  Radeon HD 8470\n\t\t1462 b493  Radeon HD 8470 OEM\n\t\t1462 b499  Radeon R5 235 OEM\n\t\t1642 3c65  Radeon HD 8470\n\t\t1642 3c75  Radeon HD 8470\n\t\t174b 8145  Radeon HD 8470\n\t\t174b d145  Radeon R5 235 OEM\n\t\t174b d335  Radeon R5 310 OEM\n\t\t174b e145  Radeon HD 7470\n\t\t17aa 3694  Radeon R5 A220\n\t6779  Caicos [Radeon HD 6450/7450/8450 / R5 230 OEM]\n\t\t1019 0016  Radeon HD 6450\n\t\t1019 0017  Radeon HD 6450\n\t\t1019 0018  Radeon HD 6450\n\t\t1028 2120  Radeon HD 6450\n\t\t103c 2128  Radeon HD 6450\n\t\t103c 2aee  Radeon HD 7450A\n\t\t1043 047b  EAH6450 SILENT/DI/1GD3(LP)\n\t\t1092 6450  Radeon HD 6450\n\t\t1462 2125  Radeon HD 6450\n\t\t1462 2346  Radeon HD 7450\n\t\t1462 2490  Radeon HD 6450\n\t\t1462 2494  Radeon HD 6450\n\t\t1462 2496  Radeon HD 7450\n\t\t148c 7450  Radeon HD 7450\n\t\t148c 8450  Radeon HD 8450 OEM\n\t\t1545 7470  Radeon HD 7470\n\t\t1642 3a65  Radeon HD 6450\n\t\t1642 3a66  Radeon HD 7450\n\t\t1642 3a75  Radeon HD 6450\n\t\t1642 3a76  Radeon HD 7450\n\t\t1682 3200  Radeon HD 7450\n\t\t174b 7450  Radeon HD 7450\n\t\t174b e127  Radeon HD 6450\n\t\t174b e153  Radeon HD 6450\n\t\t174b e164  Radeon HD 6450 1 GB DDR3\n\t\t174b e180  Radeon HD 6450\n\t\t174b e201  Radeon HD 6450\n\t\t1787 2311  Radeon HD 6450\n\t\t17af 8450  Radeon HD 8450 OEM\n\t\t1b0a 9096  Radeon HD 6450\n\t\t1b0a 9097  Radeon HD 6450\n\t\t1b0a 90a8  Radeon HD 6450A\n\t\t1b0a 90b1  Radeon HD 6450\n\t\t1b0a 90b3  Radeon HD 7450A\n\t\t1b0a 90bb  Radeon HD 7450A\n\t677b  Caicos PRO [Radeon HD 7450]\n\t6780  Tahiti XT GL [FirePro W9000]\n\t6784  Tahiti [FirePro Series Graphics Adapter]\n\t6788  Tahiti [FirePro Series Graphics Adapter]\n\t678a  Tahiti PRO GL [FirePro Series]\n\t\t1002 030c  FirePro W8000\n\t\t1002 0310  FirePro S9000\n\t\t1002 0420  Radeon Sky 700\n\t\t1002 0422  Radeon Sky 900\n\t\t1002 0710  FirePro S9050\n\t\t1002 0b0e  FirePro S10000 Passive\n\t\t1002 0b2a  FirePro S10000\n\t\t1028 030c  FirePro W8000\n\t\t1028 0710  FirePro S9000\n\t6798  Tahiti XT [Radeon HD 7970/8970 OEM / R9 280X]\n\t\t1002 3000  Tahiti XT2 [Radeon HD 7970 GHz Edition]\n\t\t1002 3001  Tahiti XTL [Radeon R9 280X]\n\t\t1002 4000  Radeon HD 8970 OEM\n\t\t1043 041c  HD 7970 DirectCU II\n\t\t1043 0420  HD 7970 DirectCU II TOP\n\t\t1043 0444  HD 7970 DirectCU II TOP\n\t\t1043 0448  HD 7970 DirectCU II TOP\n\t\t1043 044a  Tahiti XT2 [Matrix HD 7970]\n\t\t1043 044c  Tahiti XT2 [Matrix HD 7970 Platinum]\n\t\t1043 3001  Tahiti XTL [ROG Matrix R9 280X]\n\t\t1043 3006  Tahiti XTL [Radeon R9 280X DirectCU II TOP]\n\t\t1043 9999  ARES II\n\t\t106b 0127  FirePro D700\n\t\t106b 0128  FirePro D700\n\t\t1092 3000  Tahiti XT2 [Radeon HD 7970 GHz Edition]\n\t\t1458 2261  Tahiti XT2 [Radeon HD 7970 GHz Edition OC]\n# GV-R928XOC-3GD\n\t\t1458 3001  Tahiti XTL [Radeon R9 280X OC]\n\t\t1462 2774  HD 7970 TwinFrozr III Boost Edition OC\n\t\t1682 3001  Tahiti XTL [Radeon R9 280X]\n\t\t1682 3211  Double D HD 7970 Black Edition\n# FX-797A-TNBC\n\t\t1682 3213  HD 7970 Black Edition\n\t\t1682 3214  Double D HD 7970\n\t\t1787 201c  HD 7970 IceQ X²\n# Radeon HD 7970 X2\n\t\t1787 2317  Radeon HD 7990\n\t\t1787 3000  Tahiti XT2 [Radeon HD 7970 GHz Edition]\n\t679a  Tahiti PRO [Radeon HD 7950/8950 OEM / R9 280]\n\t\t1002 0b01  Radeon HD 8950 OEM\n\t\t1002 3000  Tahiti PRO2 [Radeon HD 7950 Boost]\n\t\t1462 3000  Radeon HD 8950 OEM\n\t\t174b a003  Radeon R9 280\n\t679b  Malta [Radeon HD 7990/8990 OEM]\n\t\t1002 0b28  Radeon HD 8990 OEM\n\t\t1002 0b2a  Radeon HD 7990\n\t\t1462 8036  Radeon HD 8990 OEM\n\t\t148c 8990  Radeon HD 8990 OEM\n\t679e  Tahiti LE [Radeon HD 7870 XT]\n\t\t106b 0125  FirePro D500\n\t\t106b 0126  FirePro D500\n\t\t1787 2328  Radeon HD 7870 Black Edition 2 GB GDDR5 [2GBD5-2DHV3E]\n\t679f  Tahiti\n\t67a0  Hawaii XT GL [FirePro W9100]\n\t\t1002 0335  FirePro S9150\n\t\t1002 0735  FirePro S9170\n\t\t1028 031f  FirePro W9100\n\t\t1028 0335  FirePro S9150\n\t67a1  Hawaii PRO GL [FirePro W8100]\n\t\t1002 0335  FirePro S9100\n\t\t1028 0335  FirePro S9100\n\t67a2  Hawaii GL\n\t67a8  Hawaii\n\t67a9  Hawaii\n\t67aa  Hawaii\n\t67b0  Hawaii XT / Grenada XT [Radeon R9 290X/390X]\n\t\t1028 0b00  Grenada XT [Radeon R9 390X]\n\t\t103c 6566  Radeon R9 390X\n\t\t1043 046a  R9 290X DirectCU II\n\t\t1043 046c  R9 290X DirectCU II OC\n\t\t1043 0474  Matrix R9 290X Platinum\n\t\t1043 0476  ARES III\n\t\t1043 04d7  Radeon R9 390X\n\t\t1043 04db  Radeon R9 390X\n\t\t1043 04df  Radeon R9 390X\n\t\t1043 04e9  Radeon R9 390X\n\t\t1458 227c  R9 290X WindForce 3X OC\n\t\t1458 2281  R9 290X WindForce 3X OC\n\t\t1458 228c  R9 290X WindForce 3X\n\t\t1458 228d  R9 290X WindForce 3X OC\n\t\t1458 2290  R9 290X WindForce 3X\n\t\t1458 22bc  Radeon R9 390X\n\t\t1458 22c1  Grenada PRO [Radeon R9 390]\n\t\t1462 2015  Radeon R9 390X\n\t\t1462 3070  R9 290X Lightning\n\t\t1462 3071  R9 290X Lightning\n\t\t1462 3072  R9 290X Lightning LE\n\t\t1462 3080  R9 290X Gaming\n\t\t1462 3082  R9 290X Gaming OC\n\t\t148c 2347  Devil 13 Dual Core R9 290X\n\t\t148c 2357  Grenada XT [Radeon R9 390X]\n\t\t1682 9290  Double Dissipation R9 290X\n\t\t1682 9395  Grenada XT [Radeon R9 390X]\n\t\t174b 0e34  Radeon R9 390X\n\t\t174b e282  Vapor-X R9 290X Tri-X OC\n\t\t174b e285  R9 290X Tri-X OC\n\t\t174b e324  Grenada XT2 [Radeon R9 390X]\n\t\t1787 2020  R9 290X IceQ X² Turbo\n\t\t1787 2357  Grenada XT [Radeon R9 390X]\n\t67b1  Hawaii PRO [Radeon R9 290/390]\n\t\t1043 04dd  STRIX R9 390\n\t\t148c 2358  Radeon R9 390\n\t\t174b e324  Sapphire Nitro R9 390\n\t67b8  Hawaii XT [Radeon R9 290X Engineering Sample]\n\t67b9  Vesuvius [Radeon R9 295X2]\n\t67be  Hawaii LE\n\t67c0  Ellesmere [Radeon Pro WX 7100 Mobile]\n\t67c2  Ellesmere [Radeon Pro V7300X / V7350x2]\n\t67c4  Ellesmere [Radeon Pro WX 7100]\n\t\t1002 0336  Radeon Pro Duo\n\t\t1002 1336  Radeon Pro Duo\n\t67c7  Ellesmere [Radeon Pro WX 5100]\n\t67ca  Ellesmere [Polaris10]\n\t67cc  Ellesmere [Polaris10]\n\t67cf  Ellesmere [Polaris10]\n\t67d0  Ellesmere [Radeon Pro V7300X / V7350x2]\n\t67d4  Ellesmere [Radeon Pro WX 7100 / Barco MXRT-8700]\n\t67d7  Ellesmere [Radeon Pro WX 5100 / Barco MXRT-6700]\n\t67df  Ellesmere [Radeon RX 470/480/570/570X/580/580X/590]\n\t\t1002 0b37  Radeon RX 480\n\t\t1028 1722  Radeon RX 570X\n\t\t1028 1723  Radeon RX 580X\n\t\t103c 840e  Radeon RX 580 4GB\n\t\t1043 04a8  Radeon RX 480\n\t\t1043 04b0  Radeon RX 470\n\t\t1043 04fb  Radeon RX 480\n\t\t1043 04fd  Radeon RX 480 8GB\n\t\t1043 056a  Radeon RX 590\n\t\t106b 0161  Radeon Pro 580\n\t\t106b 0162  Radeon Pro 575\n\t\t106b 0163  Radeon Pro 570\n\t\t1458 22f0  Radeon RX 570\n\t\t1458 22f7  Radeon RX 570 Gaming 4G\n\t\t1462 3411  Radeon RX 470\n\t\t1462 3413  Radeon RX 480 Gaming X 8GB\n\t\t1462 3416  Radeon RX 570\n\t\t1462 3418  Radeon RX 580 ARMOR 8G OC\n\t\t1462 341b  Radeon RX 570 Armor 8G OC\n\t\t1462 341e  Radeon RX 570 Armor 4G OC\n\t\t1462 809e  Radeon RX 480 4GB\n\t\t1462 8a92  Radeon RX 580\n\t\t148c 2372  Radeon RX 480 [Red Dragon]\n\t\t148c 2373  Radeon RX 470\n\t\t148c 2377  Red Devil RX 580 8G Golden\n\t\t148c 2378  Radeon RX 580\n\t\t148c 2379  Radeon RX 570 4G [Red Dragon]\n\t\t148c 2391  Radeon RX 590 [Red Devil]\n\t\t1682 9470  Radeon RX 470\n\t\t1682 9480  Radeon RX 480\n\t\t1682 9587  Radeon RX 590 FATBOY 8GB\n\t\t1682 9588  Radeon RX 580 XTR\n\t\t1682 c570  Radeon RX 570\n\t\t1682 c580  Radeon RX 580\n\t\t174b e347  Radeon RX 470/480\n\t\t174b e349  Radeon RX 470\n\t\t1787 a470  Radeon RX 470\n\t\t1787 a480  Radeon RX 480\n\t\t1849 5001  Phantom Gaming X RX 580 OC\n\t\t1849 5030  Phantom Gaming D Radeon RX580 8G OC\n\t\t1da2 e343  Radeon RX 570 Pulse ITX 4GB\n\t\t1da2 e353  Radeon RX 570 Pulse 4GB\n\t\t1da2 e366  Nitro+ Radeon RX 570/580/590\n\t\t1da2 e387  Radeon RX 580 Pulse 4GB\n\t67e0  Baffin [Radeon Pro WX 4170]\n\t\t103c 8270  Radeon Pro WX 4170\n\t\t103c 8272  Radeon Pro WX 4170\n\t67e1  Baffin [Polaris11]\n\t67e3  Baffin [Radeon Pro WX 4100]\n\t67e8  Baffin [Radeon Pro WX 4130/4150]\n\t\t1028 075d  Radeon Pro WX 4150\n\t\t1028 07b0  Radeon Pro WX 4130/4150\n\t\t1028 07b1  Radeon Pro WX 4130\n\t\t1028 175d  Radeon Pro WX 4150\n\t\t1028 17b0  Radeon Pro WX 4130/4150\n\t\t1028 17b1  Radeon Pro WX 4130\n\t\t103c 8275  Radeon Pro WX 4150\n\t\t103c 8277  Radeon Pro WX 4150\n\t67e9  Baffin [Polaris11]\n\t67eb  Baffin [Radeon Pro V5300X]\n\t67ef  Baffin [Radeon RX 460/560D / Pro 450/455/460/555/555X/560/560X]\n\t\t1025 1367  RX560X 4GB\n\t\t1028 1703  RX 560D OEM OC 2 GB\n\t\t103c 3421  Radeon RX 460\n\t\t1043 0561  AREZ Radeon RX 560\n\t\t106b 0160  Radeon Pro 460\n\t\t106b 0166  Radeon Pro 455\n\t\t106b 0167  Radeon Pro 450\n\t\t106b 0179  Radeon Pro 560\n\t\t106b 017a  Radeon Pro 555\n\t\t106b 018f  Radeon Pro 560X\n\t\t106b 0190  Radeon Pro 555X\n\t\t1642 1727  Polaris 21 XL [Radeon RX 560D]\n\t\t1682 956d  Polaris 21 XL [Radeon RX 560D]\n\t67ff  Baffin [Radeon RX 550 640SP / RX 560/560X]\n\t\t1002 0b04  Radeon RX 560\n\t\t1028 1721  Radeon RX 560X\n\t\t1028 1726  Radeon RX 560DX\n\t\t103c 8479  Radeon RX 560X Mobile\n\t\t1043 04bc  Radeon RX 560\n\t\t1043 052f  Radeon RX 560\n\t\t1458 22ed  Radeon RX 560\n\t\t148c 2381  Radeon RX 560\n\t\t1682 9560  Radeon RX 560\n\t\t1849 5037  PHANTOM G R RX550 2G/M/ASRK\n\t\t1da2 e348  Radeon RX 560\n\t\t1da2 e367  Radeon RX 550 640SP\n\t6800  Wimbledon XT [Radeon HD 7970M]\n\t\t1002 0124  Radeon HD 7970M\n\t\t8086 2110  Radeon HD 7970M\n\t\t8086 2111  Radeon HD 7970M\n\t6801  Neptune XT [Radeon HD 8970M]\n\t\t1002 0124  Radeon HD 8970M\n\t\t1462 1117  Radeon R9 M290X\n\t\t8086 2110  Radeon HD 8970M\n\t\t8086 2111  Radeon HD 8970M\n\t6802  Wimbledon\n\t6806  Neptune\n\t6808  Pitcairn XT GL [FirePro W7000]\n\t\t1002 0310  FirePro S7000\n\t\t1002 0420  Radeon Sky 500\n\t\t103c 030c  MED-X7000\n\t\t13cc 3d25  MXRT-7500\n\t\t15c3 030c  MED-X7000\n\t6809  Pitcairn LE GL [FirePro W5000]\n\t\t13cc 3d23  MXRT-5500\n\t\t13cc 3d24  MXRT-5550\n\t\t15c3 0b06  MED-X5000\n\t6810  Curacao XT / Trinidad XT [Radeon R7 370 / R9 270X/370X]\n\t\t106b 012a  FirePro D300\n\t\t106b 012b  FirePro D300\n\t\t148c 0908  Radeon R9 370 OEM\n\t\t1682 7370  Radeon R7 370\n\t6811  Curacao PRO [Radeon R7 370 / R9 270/370 OEM]\n\t\t1028 0b00  Trinidad PRO [Radeon R9 370 OEM]\n\t\t1043 2016  Trinidad PRO [Radeon R9 370 OEM]\n\t\t1458 2016  Trinidad PRO [Radeon R9 370 OEM]\n\t\t1462 2016  Trinidad PRO [Radeon R9 370 OEM]\n\t\t1462 3050  R9 270 Gaming OC\n\t\t148c 2016  Trinidad PRO [Radeon R9 370 OEM]\n\t\t1682 2015  Trinidad PRO [Radeon R7 370]\n\t\t174b 2015  NITRO Radeon R7 370\n\t\t174b 2016  Trinidad PRO [Radeon R9 370 OEM]\n\t\t1787 2016  Trinidad PRO [Radeon R9 370 OEM]\n\t6816  Pitcairn\n\t6817  Pitcairn\n\t6818  Pitcairn XT [Radeon HD 7870 GHz Edition]\n\t\t1002 0b05  Radeon HD 8870 OEM\n\t\t174b 8b04  Radeon HD 8860\n\t6819  Pitcairn PRO [Radeon HD 7850 / R7 265 / R9 270 1024SP]\n\t\t1043 042c  Radeon HD 7850\n\t\t1682 7269  Radeon R9 270 1024SP\n\t\t1682 9278  Radeon R9 270 1024SP\n\t\t174b a008  Radeon R9 270 1024SP\n\t\t174b e221  Radeon HD 7850 2GB GDDR5 DVI-I/DVI-D/HDMI/DP\n\t6820  Venus XTX [Radeon HD 8890M / R9 M275X/M375X]\n\t\t103c 1851  Radeon HD 7750M\n\t\t17aa 3643  Radeon R9 A375\n\t\t17aa 3801  Radeon R9 M275\n\t\t17aa 3824  Radeon R9 M375\n\t\t1da2 e26a  Radeon R7 250\n\t6821  Venus XT [Radeon HD 8870M / R9 M270X/M370X]\n\t\t1002 031e  FirePro SX4000\n\t\t1028 05cc  FirePro M5100\n\t\t1028 15cc  FirePro M5100\n\t\t106b 0149  Radeon R9 M370X Mac Edition\n\t6822  Venus PRO [Radeon E8860]\n\t6823  Venus PRO [Radeon HD 8850M / R9 M265X]\n\t6825  Heathrow XT [Radeon HD 7870M]\n\t\t1028 053f  FirePro M6000\n\t\t1028 05cd  FirePro M6000\n\t\t1028 15cd  FirePro M6000\n\t\t103c 176c  FirePro M6000\n\t\t8086 2111  Chelsea PRO\n\t6826  Chelsea LP [Radeon HD 7700M Series]\n\t6827  Heathrow PRO [Radeon HD 7850M/8850M]\n\t6828  Cape Verde PRO [FirePro W600]\n\t\t15c3 2b1e  MED-X6000\n\t6829  Cape Verde\n\t682a  Venus PRO\n\t682b  Cape Verde PRO / Venus LE / Tropo PRO-L [Radeon HD 8830M / R7 250 / R7 M465X]\n\t\t0128 079c  Radeon R7 465X\n\t\t1462 3012  Radeon R7 250\n\t682c  Cape Verde GL [FirePro W4100]\n\t682d  Chelsea XT GL [FirePro M4000]\n\t682f  Chelsea LP [Radeon HD 7730M]\n\t\t103c 1851  Radeon HD 7750M\n\t6835  Cape Verde PRX [Radeon R9 255 OEM]\n\t6837  Cape Verde LE [Radeon HD 7730/8730]\n\t\t1462 2796  Radeon HD 8730\n\t\t1462 8092  Radeon HD 8730\n\t\t148c 8730  Radeon HD 8730\n\t\t1787 3000  Radeon HD 6570\n\t683d  Cape Verde XT [Radeon HD 7770/8760 / R7 250X]\n\t\t1002 0030  Radeon HD 8760 OEM\n\t\t1019 0030  Radeon HD 8760 OEM\n\t\t103c 6890  Radeon HD 8760 OEM\n\t\t1043 8760  Radeon HD 8760 OEM\n\t\t1462 2710  R7770-PMD1GD5\n\t\t174b 8304  Radeon HD 8760 OEM\n\t683f  Cape Verde PRO [Radeon HD 7750/8740 / R7 250E]\n\t\t1462 2790  Radeon HD 8740\n\t\t1462 2791  Radeon HD 8740\n\t\t1642 3b97  Radeon HD 8740\n\t6840  Thames [Radeon HD 7500M/7600M Series]\n\t\t1025 050e  Radeon HD 7670M\n\t\t1025 050f  Radeon HD 7670M\n\t\t1025 0513  Radeon HD 7670M\n\t\t1025 0514  Radeon HD 7670M\n\t\t1025 056d  Radeon HD 7670M\n\t\t1025 059a  Radeon HD 7670M\n\t\t1025 059b  Radeon HD 7670M\n\t\t1025 059e  Radeon HD 7670M\n\t\t1025 0600  Radeon HD 7670M\n\t\t1025 0606  Radeon HD 7670M\n\t\t1025 0696  Radeon HD 7650M\n\t\t1025 0697  Radeon HD 7650M\n\t\t1025 0698  Radeon HD 7650M\n\t\t1025 0699  Radeon HD 7650M\n\t\t1025 0757  Radeon HD 7670M\n\t\t1028 056a  Radeon HD 7670M\n\t\t1028 056e  Radeon HD 7670M\n\t\t1028 0598  Radeon HD 7670M\n\t\t1028 059d  Radeon HD 7670M\n\t\t1028 05a3  Radeon HD 7670M\n\t\t1028 05b9  Radeon HD 7670M\n\t\t1028 05bb  Radeon HD 7670M\n\t\t103c 1789  FirePro M2000\n\t\t103c 17f1  Radeon HD 7570M\n\t\t103c 17f4  Radeon HD 7650M\n\t\t103c 1813  Radeon HD 7590M\n\t\t103c 182f  Radeon HD 7670M\n\t\t103c 1830  Radeon HD 7670M\n\t\t103c 1835  Radeon HD 7670M\n\t\t103c 183a  Radeon HD 7670M\n\t\t103c 183c  Radeon HD 7670M\n\t\t103c 183e  Radeon HD 7670M\n\t\t103c 1840  Radeon HD 7670M\n\t\t103c 1842  Radeon HD 7670M\n\t\t103c 1844  Radeon HD 7670M\n\t\t103c 1848  Radeon HD 7670M\n\t\t103c 184a  Radeon HD 7670M\n\t\t103c 184c  Radeon HD 7670M\n\t\t103c 1895  Radeon HD 7670M\n\t\t103c 1897  Radeon HD 7670M\n\t\t103c 18a5  Radeon HD 7670M\n\t\t103c 18a7  Radeon HD 7670M\n\t\t103c 18f4  Radeon HD 7670M\n\t\t1043 100a  Radeon HD 7670M\n\t\t1043 104b  Radeon HD 7670M\n\t\t1043 10dc  Radeon HD 7670M\n\t\t1043 2121  Radeon HD 7670M\n\t\t1043 2122  Radeon HD 7670M\n\t\t1043 2123  Radeon HD 7670M\n\t\t1043 2125  Radeon HD 7670M\n\t\t1043 2127  Radeon HD 7670M\n\t\t1179 fb11  Radeon HD 7670M\n\t\t1179 fb22  Radeon HD 7670M\n\t\t1179 fb23  Radeon HD 7670M\n\t\t1179 fb2c  Radeon HD 7670M\n\t\t1179 fb31  Radeon HD 7670M\n\t\t1179 fb32  Radeon HD 7670M\n\t\t1179 fb38  Radeon HD 7670M\n\t\t1179 fb39  Radeon HD 7670M\n\t\t1179 fb3a  Radeon HD 7670M\n\t\t1179 fb40  Radeon HD 7670M\n\t\t1179 fb41  Radeon HD 7670M\n\t\t1179 fb47  Radeon HD 7670M\n\t\t1179 fb48  Radeon HD 7670M\n\t\t1179 fb51  Radeon HD 7670M\n\t\t1179 fb52  Radeon HD 7670M\n\t\t1179 fb53  Radeon HD 7670M\n\t\t1179 fb81  Radeon HD 7670M\n\t\t1179 fb82  Radeon HD 7670M\n\t\t1179 fb83  Radeon HD 7670M\n\t\t1179 fc56  Radeon HD 7670M\n\t\t1179 fcd4  Radeon HD 7670M\n\t\t1179 fcee  Radeon HD 7670M\n\t\t144d c0c5  Radeon HD 7690M\n\t\t144d c0ce  Radeon HD 7670M\n\t\t144d c0da  Radeon HD 7670M\n\t\t17aa 3970  Radeon HD 7670M\n\t\t17aa 397b  Radeon HD 7670M\n\t\t17aa 5101  Radeon HD 7670M\n\t\t17aa 5102  Radeon HD 7670M\n\t\t17aa 5103  Radeon HD 7670M\n\t6841  Thames [Radeon HD 7550M/7570M/7650M]\n\t\t1028 0561  Radeon HD 7650M\n\t\t1028 056c  Radeon HD 7650M\n\t\t1028 057f  Radeon HD 7570M\n\t\t103c 17f1  Radeon HD 7570M\n\t\t103c 17f4  Radeon HD 7650M\n\t\t103c 1813  Radeon HD 7570M\n\t\t103c 183a  Radeon HD 7650M\n\t\t103c 183c  Radeon HD 7650M\n\t\t103c 183e  Radeon HD 7650M\n\t\t103c 1840  Radeon HD 7650M\n\t\t103c 1842  Radeon HD 7650M\n\t\t103c 1844  Radeon HD 7650M\n\t\t1043 100a  Radeon HD 7650M\n\t\t1043 104b  Radeon HD 7650M\n\t\t1043 10dc  Radeon HD 7650M\n\t\t1043 2134  Radeon HD 7650M\n\t\t1179 0001  Radeon HD 7570M\n\t\t1179 0002  Radeon HD 7570M\n\t\t1179 fb43  Radeon HD 7550M\n\t\t1179 fb91  Radeon HD 7550M\n\t\t1179 fb92  Radeon HD 7550M\n\t\t1179 fb93  Radeon HD 7550M\n\t\t1179 fba2  Radeon HD 7550M\n\t\t1179 fba3  Radeon HD 7550M\n\t\t144d c0c7  Radeon HD 7550M\n\t6842  Thames LE [Radeon HD 7000M Series]\n\t6843  Thames [Radeon HD 7670M]\n\t6860  Vega 10 [Instinct MI25/MI25x2/V340/V320]\n\t\t1002 0c35  Radeon PRO V320\n\t\t1002 6c75  Radeon PRO V320\n\t\t106b 017c  Radeon Pro Vega 64\n\t6861  Vega 10 XT [Radeon PRO WX 9100]\n\t6862  Vega 10 XT [Radeon PRO SSG]\n\t6863  Vega 10 XTX [Radeon Vega Frontier Edition]\n\t6864  Vega 10 [Radeon Pro V340/Instinct MI25x2]\n\t6867  Vega 10 XL [Radeon Pro Vega 56]\n\t6868  Vega 10 [Radeon PRO WX 8100/8200]\n\t6869  Vega 10 XGA [Radeon Pro Vega 48]\n\t686a  Vega 10 LEA\n\t686b  Vega 10 XTXA [Radeon Pro Vega 64X]\n\t686c  Vega 10 [Instinct MI25 MxGPU/MI25x2 MxGPU/V340 MxGPU/V340L MxGPU]\n\t686d  Vega 10 GLXTA\n\t686e  Vega 10 GLXLA\n\t687f  Vega 10 XL/XT [Radeon RX Vega 56/64]\n\t\t1002 0b36  RX Vega64\n\t\t1002 6b76  AMD Radeon RX Vega 56 8GB\n# ROG-STRIX-RXVEGA64-O8G-GAMING\n\t\t1043 04c4  Radeon RX Vega 64\n\t\t1043 0555  ROG STRIX RX Vega 56 8GB\n\t\t1458 230c  Radeon RX VEGA 56 GAMING OC 8G\n\t\t1da2 e376  Radeon RX VEGA 56 Pulse 8GB OC HBM2\n\t6880  Lexington [Radeon HD 6550M]\n\t\t103c 163c  Pavilion dv6 Radeon HD 6550M\n\t6888  Cypress XT [FirePro V8800]\n\t6889  Cypress PRO [FirePro V7800]\n\t\t1002 0301  FirePro V7800P\n\t\t13cc 3d1f  MXRT-7400\n\t688a  Cypress XT [FirePro V9800]\n\t\t1002 030c  FirePro V9800P\n\t688c  Cypress XT GL [FireStream 9370]\n\t688d  Cypress PRO GL [FireStream 9350]\n\t6898  Cypress XT [Radeon HD 5870]\n\t\t1002 0b00  Radeon HD 5870 Eyefinity Edition\n\t\t106b 00d0  Radeon HD 5870 Mac Edition\n# R5870-PM2D1G\n\t\t1462 8032  Radeon HD 5870 1 GB GDDR5\n\t\t174b 6870  Radeon HD 6870 1600SP Edition\n\t6899  Cypress PRO [Radeon HD 5850]\n# EAH5850\n\t\t1043 0330  Radeon HD 5850\n\t\t174b 237b  Radeon HD 5850 X2\n\t\t174b 6850  Radeon HD 6850 1440SP Edition\n\t689b  Cypress PRO [Radeon HD 6800 Series]\n\t689c  Hemlock [Radeon HD 5970]\n\t\t1043 0352  ARES\n\t689d  Hemlock [Radeon HD 5970]\n\t689e  Cypress LE [Radeon HD 5830]\n\t68a0  Broadway XT [Mobility Radeon HD 5870]\n\t\t1028 12ef  FirePro M7820\n\t\t103c 1520  FirePro M7820\n\t68a1  Broadway PRO [Mobility Radeon HD 5850]\n\t\t106b 00cc  iMac MC511 Mobility Radeon HD 5850 MXM Module\n\t68a8  Granville [Radeon HD 6850M/6870M]\n\t\t1025 0442  Radeon HD 6850M\n\t\t1025 0451  Radeon HD 6850M\n\t\t1025 050a  Radeon HD 6850M\n\t\t1025 050b  Radeon HD 6850M\n\t\t1025 050c  Radeon HD 6850M\n\t\t1025 050e  Radeon HD 6850M\n\t\t1025 050f  Radeon HD 6850M\n\t\t1025 0513  Radeon HD 6850M\n\t\t1025 0514  Radeon HD 6850M\n\t\t1025 0515  Radeon HD 6850M\n\t\t1025 0516  Radeon HD 6850M\n\t\t1025 0525  Radeon HD 6850M\n\t\t1025 0526  Radeon HD 6850M\n\t\t1025 056d  Radeon HD 6850M\n\t\t1028 048f  Radeon HD 6870M\n\t\t1028 0490  Radeon HD 6870M\n\t\t1028 04b9  Radeon HD 6870M\n\t\t1028 04ba  Radeon HD 6870M\n\t\t103c 159b  Radeon HD 6850M\n\t\t144d c0ad  Radeon HD 6850M\n\t68a9  Juniper XT [FirePro V5800]\n\t\t13cc 3d1e  MXRT-5400\n\t\t13cc 3d20  MXRT-5450\n\t68b8  Juniper XT [Radeon HD 5770]\n\t\t106b 00cf  MacPro5,1 [Mac Pro 2.8GHz DDR3]\n\t68b9  Juniper LE [Radeon HD 5670 640SP Edition]\n\t68ba  Juniper XT [Radeon HD 6770]\n\t68be  Juniper PRO [Radeon HD 5750]\n\t\t148c 3000  Radeon HD 6750\n\t68bf  Juniper PRO [Radeon HD 6750]\n\t\t174b 6750  Radeon HD 6750\n\t68c0  Madison [Mobility Radeon HD 5730 / 6570M]\n\t\t1019 2383  Mobility Radeon HD 5730\n\t\t1028 02a2  Mobility Radeon HD 5730\n\t\t1028 02fe  Mobility Radeon HD 5730\n\t\t1028 0419  Mobility Radeon HD 5730\n\t\t103c 147d  Mobility Radeon HD 5730\n\t\t103c 1521  Madison XT [FirePro M5800]\n\t\t103c 1593  Mobility Radeon HD 6570\n\t\t103c 1596  Mobility Radeon HD 6570\n\t\t103c 1599  Mobility Radeon HD 6570\n\t\t1043 1c22  Mobility Radeon HD 5730\n\t\t17aa 3927  Mobility Radeon HD 5730\n\t\t17aa 3952  Mobility Radeon HD 5730\n\t\t17aa 3978  Radeon HD 6570M\n\t68c1  Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M]\n\t\t1025 0205  Mobility Radeon HD 5650\n\t\t1025 0293  Mobility Radeon HD 5650\n\t\t1025 0294  Mobility Radeon HD 5650\n\t\t1025 0296  Mobility Radeon HD 5650\n\t\t1025 0308  Mobility Radeon HD 5650\n\t\t1025 030a  Mobility Radeon HD 5650\n\t\t1025 0311  Mobility Radeon HD 5650\n\t\t1025 0312  Mobility Radeon HD 5650\n\t\t1025 031c  Mobility Radeon HD 5650\n\t\t1025 031d  Mobility Radeon HD 5650\n\t\t1025 033d  Mobility Radeon HD 5650\n\t\t1025 033e  Mobility Radeon HD 5650\n\t\t1025 033f  Mobility Radeon HD 5650\n\t\t1025 0346  Mobility Radeon HD 5650\n\t\t1025 0347  Aspire 7740G\n\t\t1025 0348  Mobility Radeon HD 5650\n\t\t1025 0356  Mobility Radeon HD 5650\n\t\t1025 0357  Mobility Radeon HD 5650\n\t\t1025 0358  Mobility Radeon HD 5650\n\t\t1025 0359  Mobility Radeon HD 5650\n\t\t1025 035a  Mobility Radeon HD 5650\n\t\t1025 035b  Mobility Radeon HD 5650\n\t\t1025 035c  Mobility Radeon HD 5650\n\t\t1025 035d  Mobility Radeon HD 5650\n\t\t1025 035e  Mobility Radeon HD 5650\n\t\t1025 0360  Mobility Radeon HD 5650\n\t\t1025 0362  Mobility Radeon HD 5650\n\t\t1025 0364  Mobility Radeon HD 5650\n\t\t1025 0365  Mobility Radeon HD 5650\n\t\t1025 0366  Mobility Radeon HD 5650\n\t\t1025 0367  Mobility Radeon HD 5650\n\t\t1025 0368  Mobility Radeon HD 5650\n\t\t1025 036c  Mobility Radeon HD 5650\n\t\t1025 036d  Mobility Radeon HD 5650\n\t\t1025 036e  Mobility Radeon HD 5650\n\t\t1025 036f  Mobility Radeon HD 5650\n\t\t1025 0372  Mobility Radeon HD 5650\n\t\t1025 0373  Mobility Radeon HD 5650\n\t\t1025 0377  Mobility Radeon HD 5650\n\t\t1025 0378  Mobility Radeon HD 5650\n\t\t1025 0379  Mobility Radeon HD 5650\n\t\t1025 037a  Mobility Radeon HD 5650\n\t\t1025 037b  Mobility Radeon HD 5650\n\t\t1025 037e  Mobility Radeon HD 5650\n\t\t1025 037f  Mobility Radeon HD 5650\n\t\t1025 0382  Mobility Radeon HD 5650\n\t\t1025 0383  Mobility Radeon HD 5650\n\t\t1025 0384  Mobility Radeon HD 5650\n\t\t1025 0385  Mobility Radeon HD 5650\n\t\t1025 0386  Mobility Radeon HD 5650\n\t\t1025 0387  Mobility Radeon HD 5650\n\t\t1025 0388  Mobility Radeon HD 5650\n\t\t1025 038b  Mobility Radeon HD 5650\n\t\t1025 038c  Mobility Radeon HD 5650\n\t\t1025 039a  Mobility Radeon HD 5650\n\t\t1025 0411  Mobility Radeon HD 5650\n\t\t1025 0412  Mobility Radeon HD 5650\n\t\t1025 0418  Mobility Radeon HD 5650\n\t\t1025 0419  Mobility Radeon HD 5650\n\t\t1025 0420  Mobility Radeon HD 5650\n\t\t1025 0421  Mobility Radeon HD 5650\n\t\t1025 0425  Mobility Radeon HD 5650\n\t\t1025 042a  Mobility Radeon HD 5650\n\t\t1025 042e  Mobility Radeon HD 5650\n\t\t1025 042f  Mobility Radeon HD 5650\n\t\t1025 0432  Mobility Radeon HD 5650\n\t\t1025 0433  Mobility Radeon HD 5650\n\t\t1025 0442  Mobility Radeon HD 5650\n\t\t1025 044c  Mobility Radeon HD 5650\n\t\t1025 044e  Mobility Radeon HD 5650\n\t\t1025 0451  Mobility Radeon HD 5650\n\t\t1025 0454  Mobility Radeon HD 5650\n\t\t1025 0455  Mobility Radeon HD 5650\n\t\t1025 0475  Mobility Radeon HD 5650\n\t\t1025 0476  Mobility Radeon HD 5650\n\t\t1025 0487  Mobility Radeon HD 5650\n\t\t1025 0489  Mobility Radeon HD 5650\n\t\t1025 0498  Mobility Radeon HD 5650\n\t\t1025 0517  Radeon HD 6550M\n\t\t1025 051a  Radeon HD 6550M\n\t\t1025 051b  Radeon HD 6550M\n\t\t1025 051c  Radeon HD 6550M\n\t\t1025 051d  Radeon HD 6550M\n\t\t1025 0525  Radeon HD 6550M\n\t\t1025 0526  Radeon HD 6550M\n\t\t1025 052b  Radeon HD 6550M\n\t\t1025 052c  Radeon HD 6550M\n\t\t1025 053c  Radeon HD 6550M\n\t\t1025 053d  Radeon HD 6550M\n\t\t1025 053e  Radeon HD 6550M\n\t\t1025 053f  Radeon HD 6550M\n\t\t1025 0607  Radeon HD 6550M\n\t\t1028 041b  Mobility Radeon HD 5650\n\t\t1028 0447  Mobility Radeon HD 5650\n\t\t1028 0448  Mobility Radeon HD 5650\n\t\t1028 0456  Mobility Radeon HD 5650\n\t\t1028 0457  Mobility Radeon HD 5650\n\t\t103c 1436  Mobility Radeon HD 5650\n\t\t103c 1437  Mobility Radeon HD 5650\n\t\t103c 1440  Mobility Radeon HD 5650\n\t\t103c 1448  Mobility Radeon HD 5650\n\t\t103c 1449  Mobility Radeon HD 5650\n\t\t103c 144a  Mobility Radeon HD 5650\n\t\t103c 144b  Mobility Radeon HD 5650\n\t\t103c 147b  Mobility Radeon HD 5650\n\t\t103c 149c  Mobility Radeon HD 5650\n\t\t103c 149e  Mobility Radeon HD 5650\n\t\t103c 1521  Madison Pro [FirePro M5800]\n\t\t1043 1bc2  Mobility Radeon HD 5650\n\t\t104d 9071  Mobility Radeon HD 5650\n\t\t104d 9077  Mobility Radeon HD 5650\n\t\t104d 9081  Mobility Radeon HD 5650\n\t\t1179 fd00  Mobility Radeon HD 5650\n\t\t1179 fd12  Mobility Radeon HD 5650\n\t\t1179 fd1a  Mobility Radeon HD 5650\n\t\t1179 fd30  Mobility Radeon HD 5650\n\t\t1179 fd31  Mobility Radeon HD 5650\n\t\t1179 fd50  Mobility Radeon HD 5650\n\t\t1179 fd52  Radeon HD 6530M\n\t\t1179 fd63  Radeon HD 6530M\n\t\t1179 fd65  Radeon HD 6530M\n\t\t1179 fdd0  Mobility Radeon HD 5650\n\t\t1179 fdd2  Radeon HD 6530M\n\t\t144d c07e  Mobility Radeon HD 5650\n\t\t144d c085  Mobility Radeon HD 5650\n\t\t14c0 0043  Mobility Radeon HD 5650\n\t\t14c0 004d  Mobility Radeon HD 5650\n\t\t17aa 3928  Mobility Radeon HD 5650\n\t\t17aa 3951  Mobility Radeon HD 5650\n\t\t17aa 3977  Radeon HD 6550M\n\t68c7  Pinewood [Mobility Radeon HD 5570/6550A]\n\t\t1462 2241  Mobility Radeon HD 5570\n\t\t1462 2243  Mobility Radeon HD 5570\n\t\t1462 2244  Mobility Radeon HD 5570\n\t\t1462 2245  Radeon HD 6550A\n\t\t1462 2246  Radeon HD 6550A\n\t68c8  Redwood XT GL [FirePro V4800]\n\t68c9  Redwood PRO GL [FirePro V3800]\n\t\t13cc 3d1d  MXRT-2400\n\t68d8  Redwood XT [Radeon HD 5670/5690/5730]\n\t\t1028 68e0  Radeon HD 5670\n\t\t174b 5690  Radeon HD 5690\n\t\t174b 5730  Radeon HD 5730\n\t\t174b e151  Radeon HD 5670\n\t\t1787 3000  Radeon HD 5730\n\t\t17af 3010  Radeon HD 5730\n\t\t17af 3011  Radeon HD 5690\n\t68d9  Redwood PRO [Radeon HD 5550/5570/5630/6510/6610/7570]\n\t\t103c 6870  Radeon HD 5570\n\t\t103c 6872  Radeon HD 5570\n\t\t1043 03ce  Radeon HD 5550\n\t\t1462 2151  Radeon HD 5570\n\t\t1462 2240  Radeon HD 5570\n\t\t148c 3000  Radeon HD 6510\n\t\t148c 3001  Radeon HD 6610\n\t\t1545 5550  Radeon HD 5550\n\t\t1545 7570  Radeon HD 7570\n\t\t1642 3985  Radeon HD 5570\n\t\t1642 3996  Radeon HD 5570\n\t\t174b 3000  Radeon HD 6510\n\t\t174b 6510  Radeon HD 6510\n\t\t174b 6610  Radeon HD 6610\n\t\t174b e142  Radeon HD 5570\n\t\t1787 3000  Radeon HD 6510\n\t\t17af 3000  Radeon HD 6510\n\t\t17af 3010  Radeon HD 5630\n\t68da  Redwood LE [Radeon HD 5550/5570/5630/6390/6490/7570]\n\t\t1462 8071  VR5550-MD1G (Radeon HD 5550)\n\t\t148c 3000  Radeon HD 6390\n\t\t148c 3001  Radeon HD 6490\n\t\t1545 7570  Radeon HD 7570\n\t\t174b 3000  Radeon HD 6390\n\t\t174b 5570  Radeon HD 5570\n\t\t174b 5630  Radeon HD 5630\n\t\t174b 6490  Radeon HD 6490\n\t\t1787 3000  Radeon HD 5630\n\t\t17af 3000  Radeon HD 6390\n\t\t17af 3010  Radeon HD 5630\n\t68de  Redwood\n\t68e0  Park [Mobility Radeon HD 5430/5450/5470]\n\t\t1028 0404  Mobility Radeon HD 5450\n\t\t1028 0414  Mobility Radeon HD 5450\n\t\t1028 0434  Mobility Radeon HD 5450\n\t\t103c 1433  Mobility Radeon HD 5450\n\t\t103c 1434  Mobility Radeon HD 5450\n\t\t103c 1469  Mobility Radeon HD 5450\n\t\t103c 146b  Mobility Radeon HD 5450\n\t\t103c 1486  TouchSmart tm2-2050er discrete GPU (Mobility Radeon HD 5450)\n\t\t103c 1622  Mobility Radeon HD 5450\n\t\t103c 1623  Mobility Radeon HD 5450\n\t\t103c eeee  Mobility Radeon HD 5450\n\t\t104d 9076  Mobility Radeon HD 5450\n\t\t1682 304e  Caicos [Radeon HD 5450]\n\t\t1682 6000  Caicos [Radeon HD 5450]\n\t\t17aa 9e52  FirePro M3800\n\t\t17aa 9e53  FirePro M3800\n\t68e1  Park [Mobility Radeon HD 5430]\n\t\t1043 041f  Caicos [Radeon HD 7350]\n\t\t1043 3000  Caicos [Radeon HD 5450]\n\t\t148c 3000  Caicos [Radeon HD 5450]\n\t\t148c 3001  Caicos [Radeon HD 6230]\n\t\t148c 3002  Caicos [Radeon HD 6250]\n\t\t148c 3003  Caicos [Radeon HD 6350]\n\t\t148c 7350  Caicos [Radeon HD 7350]\n\t\t148c 8350  Caicos [Radeon HD 8350]\n\t\t1545 5450  Caicos [Radeon HD 5450]\n\t\t1545 7350  Caicos [Radeon HD 7350]\n\t\t1682 3000  Caicos [Radeon HD 5450]\n\t\t1682 6000  Caicos [Radeon HD 5450]\n\t\t1682 7350  Caicos [Radeon HD 7350]\n\t\t174b 3000  Caicos [Radeon HD 5450]\n\t\t174b 5470  Caicos [Radeon HD 5470]\n\t\t174b 6000  Caicos [Radeon HD 5450]\n\t\t174b 6230  Caicos [Radeon HD 6230]\n\t\t174b 6350  Caicos [Radeon HD 6350]\n\t\t174b 7350  Caicos [Radeon HD 7350]\n\t\t1787 3000  Caicos [Radeon HD 5450]\n\t\t17af 3000  Caicos [Radeon HD 5450]\n\t\t17af 3001  Caicos [Radeon HD 6230]\n\t\t17af 3014  Caicos [Radeon HD 6350]\n\t\t17af 3015  Caicos [Radeon HD 7350]\n\t\t17af 8350  Caicos [Radeon HD 8350 OEM]\n\t68e4  Robson CE [Radeon HD 6370M/7370M]\n\t\t1019 2386  Radeon HD 6350M\n\t\t1019 2387  Radeon HD 6350M\n\t\t1019 238d  Radeon HD 6370M\n\t\t1019 238e  Radeon HD 6370M\n\t\t1025 0382  Radeon HD 6370M\n\t\t1025 0489  Radeon HD 6370M\n\t\t1025 048a  Radeon HD 6370M\n\t\t1025 048b  Radeon HD 6370M\n\t\t1025 048c  Radeon HD 6370M\n\t\t1028 04c1  Radeon HD 6370M\n\t\t1028 04ca  Radeon HD 6370M\n\t\t1028 04cc  Radeon HD 6370M\n\t\t1028 04cd  Radeon HD 6370M\n\t\t1028 04d7  Radeon HD 6370M\n\t\t103c 1411  Radeon HD 6370M\n\t\t103c 1421  Radeon HD 6370M\n\t\t103c 1426  Radeon HD 6370M\n\t\t103c 1428  Radeon HD 6370M\n\t\t103c 142a  Radeon HD 6370M\n\t\t103c 142b  Radeon HD 6370M\n\t\t103c 143a  Radeon HD 6370M\n\t\t103c 143c  Radeon HD 6370M\n\t\t103c 1445  Radeon HD 6370M\n\t\t103c 162c  Radeon HD 6370M\n\t\t103c 162d  Radeon HD 6370M\n\t\t103c 162e  Radeon HD 6370M\n\t\t103c 162f  Radeon HD 6370M\n\t\t103c 1639  Radeon HD 6370M\n\t\t103c 163a  Radeon HD 6370M\n\t\t103c 163b  Radeon HD 6370M\n\t\t103c 163c  Radeon HD 6370M\n\t\t103c 163d  Radeon HD 6370M\n\t\t103c 163e  Radeon HD 6370M\n\t\t103c 163f  Radeon HD 6370M\n\t\t103c 1641  Radeon HD 6370M\n\t\t103c 1643  Radeon HD 6370M\n\t\t103c 3578  Radeon HD 6370M\n\t\t103c 357a  Radeon HD 6370M\n\t\t103c 3673  Radeon HD 6370M\n\t\t103c 3675  Radeon HD 6370M\n\t\t1043 1c92  Radeon HD 6370M\n\t\t1043 84a1  Radeon HD 6370M\n\t\t1043 84ad  Radeon HD 6370M\n\t\t104d 9081  Radeon HD 6370M\n\t\t1545 7350  Cedar [Radeon HD 7350]\n\t\t1558 4510  Radeon HD 6370M\n\t\t1558 5505  Radeon HD 6370M\n\t\t174b 5450  Cedar [Radeon HD 5450]\n\t\t17aa 21dd  Radeon HD 6370M\n\t\t17aa 21e9  Radeon HD 6370M\n\t\t17aa 3971  Radeon HD 6370M\n\t\t17aa 3972  Radeon HD 7370M\n\t\t17aa 397a  Radeon HD 6370M/7370M\n\t\t17aa 397b  Radeon HD 6370M/7370M\n\t\t17aa 397f  Radeon HD 7370M\n\t68e5  Robson LE [Radeon HD 6330M]\n\t\t1179 fd3c  Radeon HD 6330M\n\t\t1179 fd50  Radeon HD 6330M\n\t\t1179 fd52  Radeon HD 6330M\n\t\t1179 fd63  Radeon HD 6330M\n\t\t1179 fd65  Radeon HD 6330M\n\t\t1179 fd73  Radeon HD 6330M\n\t\t1179 fd75  Radeon HD 6330M\n\t\t1179 fdd0  Radeon HD 6330M\n\t\t1179 fdd2  Radeon HD 6330M\n\t\t1179 fdea  Radeon HD 6330M\n\t\t1179 fdf8  Radeon HD 6330M\n\t\t148c 5450  Cedar [Radeon HD 5450]\n\t\t148c 6350  Cedar [Radeon HD 6350]\n\t\t148c 7350  Cedar [Radeon HD 7350]\n\t\t148c 8350  Cedar [Radeon HD 8350]\n\t\t1545 7350  Cedar [Radeon HD 7350]\n\t68e8  Cedar\n\t68e9  Cedar [ATI FirePro (FireGL) Graphics Adapter]\n\t68f1  Cedar GL [FirePro 2460]\n\t68f2  Cedar GL [FirePro 2270]\n\t68f8  Cedar [Radeon HD 7300 Series]\n\t68f9  Cedar [Radeon HD 5000/6000/7350/8350 Series]\n\t\t1019 0001  Radeon HD 5450\n\t\t1019 0002  Radeon HD 5450\n\t\t1019 0019  Radeon HD 6350\n\t\t1025 0518  Radeon HD 5450\n\t\t1025 0519  Radeon HD 5450\n\t\t1028 010e  XPS 8300\n\t\t1028 2126  Radeon HD 6350\n\t\t103c 2126  Radeon HD 6350\n\t\t103c 2aac  Radeon HD 5450\n\t\t103c 2aae  Radeon HD 5450\n\t\t103c 3580  Radeon HD 5450\n\t\t1043 0386  Radeon HD 5450\n\t\t1043 03c2  EAH5450 SILENT/DI/512MD2 (LP)\n# GV-R545SC-1GI\n\t\t1458 21d8  Radeon HD 5450 1GB DDR3 Silent\n\t\t1462 2130  Radeon HD 5450\n\t\t1462 2131  Radeon HD 5450\n\t\t1462 2133  Radeon HD 6350\n\t\t1462 2180  Radeon HD 5450\n\t\t1462 2181  Radeon HD 5450\n\t\t1462 2182  Radeon HD 6350\n\t\t1462 2183  Radeon HD 6350\n\t\t1462 2230  Radeon HD 5450\n\t\t1462 2231  Radeon HD 5450\n\t\t1462 2495  Radeon HD 6350\n\t\t148c 3001  Radeon HD 5530/6250\n\t\t148c 3002  Radeon HD 6290\n\t\t148c 3003  Radeon HD 6230\n\t\t148c 3004  Radeon HD 6350\n\t\t148c 7350  Radeon HD 7350\n\t\t148c 8350  Radeon HD 8350\n\t\t1545 7350  Radeon HD 7350\n\t\t1642 3983  Radeon HD 5450\n\t\t1642 3984  Radeon HD 6350\n\t\t1642 3987  Radeon HD 6350\n\t\t1642 3997  Radeon HD 5450\n\t\t1642 3a05  Radeon HD 5450\n\t\t1642 3b31  Radeon HD 6350A\n\t\t1682 3270  Radeon HD 7350\n\t\t174b 3000  Radeon HD 6230\n\t\t174b 3987  Radeon HD 6350\n\t\t174b 5470  Radeon HD 5470\n\t\t174b 5490  Radeon HD 5490\n\t\t174b 5530  Radeon HD 5530\n\t\t174b 6230  Radeon HD 6230\n\t\t174b 6250  Radeon HD 6250\n\t\t174b 6290  Radeon HD 6290\n\t\t174b 6350  Radeon HD 6350\n\t\t174b 7350  Radeon HD 7350\n\t\t174b 8350  Radeon HD 8350\n\t\t174b e127  Radeon HD 5450\n\t\t174b e145  Radeon HD 5450\n\t\t174b e153  Radeon HD 5450\n\t\t1787 3000  Radeon HD 5470\n\t\t1787 3001  Radeon HD 5530\n\t\t1787 3002  Radeon HD 5490\n\t\t17aa 3602  Radeon HD 5450\n\t\t17aa 3603  Radeon HD 5450\n\t\t17aa 360f  Radeon HD 5450\n\t\t17aa 3619  Radeon HD 5450\n\t\t17af 3000  Radeon HD 6250\n\t\t17af 3001  Radeon HD 6230\n\t\t17af 3002  Radeon HD 6290\n\t\t17af 3011  Radeon HD 5470\n\t\t17af 3012  Radeon HD 5490\n\t\t17af 3013  Radeon HD 5470\n\t\t17af 3014  Radeon HD 6350\n\t68fa  Cedar [Radeon HD 7350/8350 / R5 220]\n\t\t1019 0019  Radeon HD 7350\n\t\t1019 0021  Radeon HD 7350\n\t\t1019 0022  Radeon HD 7350\n\t\t1019 0026  Radeon HD 8350\n\t\t103c 2adf  Radeon HD 7350A\n\t\t103c 2ae8  Radeon HD 7350A\n\t\t1043 8350  Radeon HD 8350\n\t\t1462 2128  Radeon HD 7350\n\t\t1462 2184  Radeon HD 7350\n\t\t1462 2186  Radeon HD 7350\n\t\t1462 2495  Radeon HD 7350\n\t\t1462 b490  Radeon HD 7350\n\t\t1642 3985  Radeon HD 7350\n\t\t174b 3510  Radeon HD 8350\n\t\t174b 3521  Radeon R5 220\n\t\t174b 3522  Radeon R5 220\n\t\t174b 7350  Radeon HD 7350\n\t\t174b 8153  Radeon HD 8350\n\t\t174b e127  Radeon HD 7350\n\t\t174b e153  Radeon HD 7350\n\t\t174b e180  Radeon HD 7350\n\t\t17af 3015  Radeon HD 7350\n\t68fe  Cedar LE\n\t6900  Topaz XT [Radeon R7 M260/M265 / M340/M360 / M440/M445 / 530/535 / 620/625 Mobile]\n\t\t1025 1056  Radeon R7 M360 / R8 M365DX\n\t\t1028 0640  Radeon R7 M260/M265\n\t\t1028 0643  Radeon R7 M260/M265\n\t\t1028 067f  Radeon R7 M260\n\t\t1028 0767  Radeon R7 M445\n\t\t1028 0810  Radeon 530\n\t\t1028 130a  Radeon R7 M260\n\t\t103c 2263  Radeon R7 M260\n\t\t103c 2269  Radeon R7 M260\n\t\t103c 22c6  Radeon R7 M260\n\t\t103c 22c8  Radeon R7 M260\n\t\t103c 2b45  Radeon R7 A360\n\t\t103c 808c  Radeon R7 M260\n\t\t103c 8099  Radeon R7 M360\n\t\t103c 80b5  Radeon R7 M360\n\t\t103c 80b9  Radeon R7 M360\n\t\t103c 811c  Radeon R7 M340\n\t\t103c 8226  Radeon R7 M440\n\t\t10cf 1906  Radeon R7 M260\n\t\t1170 9979  Radeon R7 M360\n\t\t1179 f903  Radeon R7 M260\n\t\t1179 f922  Radeon R7 M260\n\t\t1179 f923  Radeon R7 M260\n\t\t1179 f934  Radeon R7 M260\n\t\t17aa 3822  Radeon R7 M360\n\t\t17aa 3824  Radeon R7 M360\n\t\t17aa 5021  Radeon R7 M260\n\t6901  Topaz PRO [Radeon R5 M255]\n\t\t103c 1318  Radeon R6 M255DX\n\t6907  Meso XT [Radeon R5 M315]\n\t6920  Amethyst [Radeon R9 M395/ M395X Mac Edition]\n\t6921  Amethyst XT [Radeon R9 M295X / M390X]\n\t6929  Tonga XT GL [FirePro S7150]\n\t692b  Tonga PRO GL [FirePro W7100]\n\t\t13cc 3d2b  MXRT-7600\n\t692f  Tonga XTV GL [FirePro S7150V]\n\t6930  Tonga PRO [Radeon R9 380 4GB]\n\t6938  Tonga XT / Amethyst XT [Radeon R9 380X / R9 M295X]\n\t\t1043 04f5  Radeon R9 380X\n\t\t1043 04f7  Radeon R9 380X\n\t\t106b 013a  Radeon R9 M295X Mac Edition\n\t\t1458 22c8  Radeon R9 380X\n\t\t148c 2350  Radeon R9 380X\n\t\t1682 9385  Radeon R9 380X\n\t\t174b e308  Radeon R9 380X Nitro 4G D5\n\t\t17af 2006  Radeon R9 380X\n\t6939  Tonga PRO [Radeon R9 285/380]\n\t\t1462 2015  Radeon R9 380 Gaming 4G\n\t\t148c 9380  Radeon R9 380\n\t\t174b e308  Radeon R9 380 Nitro 4G D5\n\t\t174b e315  Radeon R9 285\n\t693b  Tonga PRO GL [FirePro W7100 / Barco MXRT-7600]\n\t694c  Polaris 22 XT [Radeon RX Vega M GH]\n\t694e  Polaris 22 XL [Radeon RX Vega M GL]\n\t694f  Polaris 22 MGL XL [Radeon Pro WX Vega M GL]\n\t6980  Polaris12\n\t6981  Lexa XT [Radeon PRO WX 3200]\n\t6985  Lexa XT [Radeon PRO WX 3100]\n\t\t103c 83b5  Radeon PRO WX 3100\n\t6986  Polaris12\n\t6987  Lexa [Radeon 540X/550X/630 / RX 640 / E9171 MCM]\n\t698f  Lexa XT [Radeon PRO WX 3100 / Barco MXRT 4700]\n\t6995  Lexa XT [Radeon PRO WX 2100]\n\t699f  Lexa PRO [Radeon 540/540X/550/550X / RX 540X/550/550X]\n\t\t1028 1720  Radeon RX 550X\n\t\t148c 2380  Lexa XL [Radeon RX 550]\n\t\t17aa 5069  Thinkpad E480/E580\n\t\t1da2 e367  Lexa PRO [Radeon RX 550]\n\t69a0  Vega 12\n\t69a1  Vega 12\n\t69a2  Vega 12\n\t69a3  Vega 12\n\t69af  Vega 12 [Radeon Pro Vega 20]\n\t6fdf  Polaris 20 XL [Radeon RX 580 2048SP]\n\t700f  RS100 AGP Bridge\n\t7010  RS200/RS250 AGP Bridge\n\t7100  R520 [Radeon X1800 XT]\n\t7101  R520/M58 [Mobility Radeon X1800 XT]\n\t7102  R520/M58 [Mobility Radeon X1800]\n\t7104  R520 GL [FireGL V7200 / Barco MXTR-5100]\n\t\t13cc 3d0a  MXRT-5100\n\t7109  R520 [Radeon X1800 XL]\n\t\t1002 0322  All-in-Wonder X1800XL\n\t\t1002 0d02  Radeon X1800 CrossFire Edition\n\t710a  R520 [Radeon X1800 GTO]\n\t\t1002 0b12  Radeon X1800 GTO²\n\t710b  R520 [Radeon X1800 GTO]\n\t710e  R520 GL [FireGL V7300]\n\t\t13cc 3d0c  MXRT-5150\n\t710f  R520 GL [FireGL V7350]\n\t\t13cc 3d0e  MXRT-7100\n\t7120  R520 [Radeon X1800] (Secondary)\n\t7124  R520 GL [FireGL V7200] (Secondary)\n\t\t13cc 3d0b  MXRT-5100 (Secondary)\n\t7129  R520 [Radeon X1800] (Secondary)\n\t\t1002 0323  All-In-Wonder X1800 XL (Secondary)\n\t\t1002 0d03  Radeon X1800 CrossFire Edition (Secondary)\n\t712e  R520 GL [FireGL V7300] (Secondary)\n\t\t13cc 3d0d  MXRT-5150 (Secondary)\n\t712f  R520 GL [FireGL V7350] (Secondary)\n\t\t13cc 3d0f  MXRT-7100 (Secondary)\n\t7140  RV515 [Radeon X1300/X1550/X1600 Series]\n\t7142  RV515 PRO [Radeon X1300/X1550 Series]\n\t\t1002 0322  All-in-Wonder 2006 PCI-E Edition\n\t\t1043 0142  EAX1300PRO/TD/256M\n\t7143  RV505 [Radeon X1300/X1550 Series]\n\t7145  RV515/M54 [Mobility Radeon X1400]\n\t\t17aa 2006  Thinkpad T60 model 2007\n\t7146  RV515 [Radeon X1300/X1550]\n\t\t1002 0322  All-in-Wonder 2006 PCI-E Edition\n\t\t1545 1996  Radeon X1300 512MB PCI-e\n\t7147  RV505 [Radeon X1550 64-bit]\n\t7149  RV515/M52 [Mobility Radeon X1300]\n\t714a  RV515/M52 [Mobility Radeon X1300]\n\t7152  RV515 GL [FireGL V3300]\n\t7153  RV515 GL [FireGL V3350]\n\t715f  RV505 CE [Radeon X1550 64-bit]\n\t7162  RV515 PRO [Radeon X1300/X1550 Series] (Secondary)\n\t\t1002 0323  All-in-Wonder 2006 PCI-E Edition (Secondary)\n\t7163  RV505 [Radeon X1550 Series] (Secondary)\n\t7166  RV515 [Radeon X1300/X1550 Series] (Secondary)\n\t\t1002 0323  All-in-Wonder 2006 PCI-E Edition (Secondary)\n\t\t1545 1997  Radeon X1300 512MB PCI-e (Secondary)\n\t7167  RV515 [Radeon X1550 64-bit] (Secondary)\n\t7172  RV515 GL [FireGL V3300] (Secondary)\n\t7173  RV515 GL [FireGL V3350] (Secondary)\n\t7181  RV516 [Radeon X1600/X1650 Series]\n\t7183  RV516 [Radeon X1300/X1550 Series]\n\t7186  RV516/M64 [Mobility Radeon X1450]\n\t7187  RV516 [Radeon X1300/X1550 Series]\n\t7188  RV516/M64-S [Mobility Radeon X2300]\n\t\t103c 30c1  6910p\n\t718a  RV516/M64 [Mobility Radeon X2300]\n\t718b  RV516/M62 [Mobility Radeon X1350]\n\t\t1071 8209  Medion MIM 2240 Notebook PC [MD98100]\n\t718c  RV516/M62-CSP64 [Mobility Radeon X1350]\n\t718d  RV516/M64-CSP128 [Mobility Radeon X1450]\n\t7193  RV516 [Radeon X1550 Series]\n\t7196  RV516/M62-S [Mobility Radeon X1350]\n\t719b  RV516 GL [FireMV 2250]\n\t\t13cc 3d12  MXRT-1150\n\t\t13cc 3d14  MXRT-2150\n\t719f  RV516 [Radeon X1550 Series]\n\t71a0  RV516 [Radeon X1300/X1550 Series] (Secondary)\n\t71a1  RV516 [Radeon X1600/X1650 Series] (Secondary)\n\t71a3  RV516 [Radeon X1300/X1550 Series] (Secondary)\n\t71a7  RV516 [Radeon X1300/X1550 Series] (Secondary)\n\t71bb  RV516 GL [FireMV 2250] (Secondary)\n\t\t13cc 3d13  MXRT-1150 (Secondary)\n\t\t13cc 3d15  MXRT-2150 (Secondary)\n\t71c0  RV530 [Radeon X1600 XT/X1650 GTO]\n\t\t1002 e160  Radeon X1650 GTO\n\t\t174b e160  Radeon X1650 GTO\n\t71c1  RV535 [Radeon X1650 PRO]\n\t\t174b 0880  Radeon X1700 FSC\n\t71c2  RV530 [Radeon X1600 PRO]\n\t71c3  RV530 [Radeon X1600 PRO]\n\t71c4  RV530/M56 GL [Mobility FireGL V5200]\n\t\t17aa 2007  ThinkPad T60p\n\t71c5  RV530/M56-P [Mobility Radeon X1600]\n\t\t103c 309f  Compaq nx9420 Notebook\n\t\t103c 30a3  Compaq NW8440\n\t\t1043 10b2  A6J-Q008\n\t\t106b 0080  MacBook Pro\n\t71c6  RV530LE [Radeon X1600/X1650 PRO]\n\t71c7  RV535 [Radeon X1650 PRO]\n\t\t1787 3000  PowerColor X1650 PRO AGP\n\t71ce  RV530 [Radeon X1300 XT/X1600 PRO]\n\t71d2  RV530 GL [FireGL V3400]\n\t\t13cc 3d08  MXRT-2100\n\t71d4  RV530/M66 GL [Mobility FireGL V5250]\n\t71d5  RV530/M66-P [Mobility Radeon X1700]\n\t71d6  RV530/M66-XT [Mobility Radeon X1700]\n\t71de  RV530/M66 [Mobility Radeon X1700/X2500]\n\t71e0  RV530 [Radeon X1600] (Secondary)\n\t\t174b e161  Radeon X1600 GTO (Secondary)\n\t71e1  RV535 [Radeon X1650 PRO] (Secondary)\n\t\t174b 0881  Radeon X1700 FSC (Secondary)\n\t71e2  RV530 [Radeon X1600] (Secondary)\n\t71e6  RV530 [Radeon X1650] (Secondary)\n\t71e7  RV535 [Radeon X1650 PRO] (Secondary)\n\t\t1787 3001  Radeon X1650 PRO AGP\n\t71f2  RV530 GL [FireGL V3400] (Secondary)\n\t\t13cc 3d09  MXRT-2100 (Secondary)\n\t7210  RV550/M71 [Mobility Radeon HD 2300]\n\t7211  RV550/M71 [Mobility Radeon X2300 HD]\n\t7240  R580+ [Radeon X1950 XTX]\n\t\t1002 0d02  Radeon X1950 CrossFire Edition\n\t7244  R580+ [Radeon X1950 XT]\n\t7248  R580 [Radeon X1950]\n\t7249  R580 [Radeon X1900 XT]\n\t\t1002 0412  All-In-Wonder X1900\n\t\t1002 0b12  Radeon X1900 XT/XTX\n\t\t1002 0d02  Radeon X1900 CrossFire Edition\n\t\t1043 0160  Radeon X1900 XTX 512 MB GDDR3\n\t724b  R580 [Radeon X1900 GT]\n\t\t1002 0b12  Radeon X1900 (Primary)\n\t\t1002 0b13  Radeon X1900 (Secondary)\n\t724e  R580 GL [FireGL V7350]\n\t7269  R580 [Radeon X1900 XT] (Secondary)\n\t726b  R580 [Radeon X1900 GT] (Secondary)\n\t726e  R580 [AMD Stream Processor] (Secondary)\n\t7280  RV570 [Radeon X1950 PRO]\n\t7288  RV570 [Radeon X1950 GT]\n\t7291  RV560 [Radeon X1650 XT]\n\t\t1462 0810  Radeon X1700 SE\n\t7293  RV560 [Radeon X1650 GT]\n\t72a0  RV570 [Radeon X1950 PRO] (Secondary)\n\t72a8  RV570 [Radeon X1950 GT] (Secondary)\n\t72b1  RV560 [Radeon X1650 XT] (Secondary)\n\t72b3  RV560 [Radeon X1650 GT] (Secondary)\n\t7300  Fiji [Radeon R9 FURY / NANO Series]\n\t\t1002 0b35  FirePro S9300 X2\n\t\t1002 0b36  Radeon R9 FURY X / NANO\n\t\t1002 1b36  Radeon Pro Duo\n\t\t1043 049e  Radeon R9 FURY\n\t\t1043 04a0  Radeon R9 FURY X\n\t\t174b e329  Radeon R9 FURY\n\t7310  Navi 10 [Radeon Pro W5700X]\n\t7312  Navi 10 [Radeon Pro W5700]\n\t7314  Navi 10 USB\n\t7319  Navi 10 [Radeon Pro 5700 XT]\n\t731b  Navi 10 [Radeon Pro 5700]\n\t731e  TDC-150\n\t731f  Navi 10 [Radeon RX 5600 OEM/5600 XT / 5700/5700 XT]\n\t\t1002 0b36  Reference RX 5700 XT\n\t\t1458 2313  Radeon RX 5700 XT Gaming OC\n\t\t1458 231d  Radeon RX 5600 XT/REV 2.0 [Windforce 6GB OC]\n\t\t148c 2398  AXRX 5700 XT 8GBD6-3DHE/OC [PowerColor Red Devil Radeon RX 5700 XT]\n\t\t1682 5701  RX 5700 XT RAW II\n\t\t1849 5102  RX5700 CLD 8GO [ASRock Challenger D RX 5700 OC]\n\t\t1849 5120  Radeon RX 5600 XT\n\t\t1da2 e409  Sapphire Technology Limited Navi 10 [Radeon RX 5600 OEM/5600 XT / 5700/5700 XT]\n\t\t1da2 e410  Sapphire NITRO+ RX 5700 XT\n\t\t1da2 e411  Navi 10 [Radeon RX 5600 OEM/5600 XT / 5700/5700 XT]Navi 10 [Radeon RX 5600 OEM/5600 XT / 5700/5700 XT]\n\t7340  Navi 14 [Radeon RX 5500/5500M / Pro 5500M]\n\t\t106b 0210  Radeon Pro 5300M\n\t7341  Navi 14 [Radeon Pro W5500]\n\t7347  Navi 14 [Radeon Pro W5500M]\n\t734f  Navi 14 [Radeon Pro W5300M]\n\t7360  Navi 12 [Radeon Pro 5600M/V520/BC-160]\n\t7362  Navi 12 [Radeon Pro V520/V540]\n\t7388  Arcturus GL-XL\n\t738c  Arcturus GL-XL [Instinct MI100]\n\t738e  Arcturus GL-XL [Instinct MI100]\n\t73a1  Navi 21 [Radeon Pro V620]\n\t73a2  Navi 21 Pro-XTA [Radeon Pro W6900X]\n\t73a3  Navi 21 GL-XL [Radeon PRO W6800]\n\t73a4  Navi 21 USB\n\t73a5  Navi 21 [Radeon RX 6950 XT]\n# Reference\n\t\t1002 0e3a  Radeon RX 6950 XT\n\t\t1849 5230  Navi 21 [ASRock OC Forumla Radeon RX 6950XT]\n\t\t1849 5238  Navi 21 [ASRock Radeon RX 6950 XT Phantom Gaming OC]\n\t\t1da2 441d  Navi 21 [Sapphire Nitro+ Radeon RX 6950 XT]\n\t\t1eae 6950  Navi 21 [XFX Speedster MERC319 Radeon RX 6950 XT]\n\t73ab  Navi 21 Pro-XLA [Radeon Pro W6800X/Radeon Pro W6800X Duo]\n\t73ae  Navi 21 [Radeon Pro V620 MxGPU]\n\t73af  Navi 21 [Radeon RX 6900 XT]\n\t\t148c 2414  Navi 21 XTXH [PowerColor Red Devil RX 6900 XT Ultimate]\n\t73bf  Navi 21 [Radeon RX 6800/6800 XT / 6900 XT]\n\t\t1002 0e3a  Radeon RX 6900 XT\n\t\t148c 2408  Red Devil AMD Radeon RX 6900 XT\n\t\t1da2 438e  NITRO+ Radeon RX 6800 XT\n\t\t1da2 440f  TOXIC RX 6900 XT\n\t\t1da2 e437  Pulse Radeon RX 6800\n\t\t1eae 6701  Speedster MERC 319 AMD Radeon RX 6800 XT Black\n\t\t1eae 6901  Speedster MERC 319 AMD Radeon RX 6900 XT Black\n\t73c3  Navi 22\n\t73c4  Navi 22 USB\n\t73ce  Navi 22-XL SRIOV MxGPU\n\t73df  Navi 22 [Radeon RX 6700/6700 XT/6750 XT / 6800M/6850M XT]\n\t\t1043 16c2  Radeon RX 6800M\n\t\t1458 2408  Radeon RX 6750 XT GAMING OC 12G\n\t\t1462 3980  Radeon RX 6700 XT Mech 2X 12G [MSI]\n\t\t148c 2409  Red Devil RX 6700 XT\n# Dual fan version\n\t\t1849 5210  Radeon RX 6700 XT Challenger D\n\t\t1849 5219  Radeon RX 6700 XT Challenger D\n\t\t1849 5222  RX 6700 XT Challenger D OC\n# Gaming 1440/QHD Overclock edition with 12 Gb GDDR6 and PCIe 4.0 of Radeon RX 6700 XT by Sapphire PULSE manufactured on autumn 2022 / C1 reviseion\n\t\t1da2 445e  Radeon RX 6700 XT GAMING OC 12G [Sapphire PULSE]\n\t\t1da2 465e  Radeon RX 6750 XT PULSE OC\n\t\t1da2 e445  Sapphire Radeon RX 6700\n\t\t1eae 6601  Speedster QICK 319 RX 6700 XT\n\t\t1eae 661a  Radeon RX 6700 [SPEEDSTER SWFT 309]\n\t73e0  Navi 23\n\t73e1  Navi 23 WKS-XM [Radeon PRO W6600M]\n\t73e3  Navi 23 WKS-XL [Radeon PRO W6600]\n\t73e4  Navi 23 USB\n\t73ef  Navi 23 [Radeon RX 6650 XT / 6700S / 6800S]\n\t\t1458 2405  Navi 23 [Radeon RX 6650 XT]\n# This is the refreshed MSI MECH series card equipped with the same Navi 23 GPU as ID 5021\n\t\t1462 5027  RX 6650XT MECH 2X\n\t\t1849 5236  RX 6650 XT Challenger D OC\n\t73f0  Navi 33 [Radeon RX 7600M XT]\n\t73ff  Navi 23 [Radeon RX 6600/6600 XT/6600M]\n\t\t1462 5021  MSI RX 6600XT MECH 2X\n\t\t1462 5022  RX 6600 MECH 2X\n\t\t148c 2412  PowerColor Red Devil RX 6600 XT\n\t\t1849 5218  Radeon RX 6600 Challenger ITX 8GB\n\t\t1da2 448e  Radeon RX 6600 XT Pulse\n\t7408  Aldebaran/MI200 [Instinct MI250X]\n\t740c  Aldebaran/MI200 [Instinct MI250X/MI250]\n\t740f  Aldebaran/MI200 [Instinct MI210]\n\t7421  Navi 24 [Radeon PRO W6500M]\n\t7422  Navi 24 [Radeon PRO W6400]\n\t7423  Navi 24 [Radeon PRO W6300/W6300M]\n\t7424  Navi 24 [Radeon RX 6300]\n\t743f  Navi 24 [Radeon RX 6400/6500 XT/6500M]\n\t\t1da2 e457  PULSE AMD Radeon RX 6500 XT\n\t7446  Navi 31 USB\n\t7448  Navi 31 [Radeon Pro W7900]\n\t744a  Navi 31 [Radeon Pro W7900 Dual Slot]\n\t744c  Navi 31 [Radeon RX 7900 XT/7900 XTX/7900 GRE/7900M]\n\t\t1002 0e3b  RX 7900 XTX / RX 7900 GRE [XFX]\n\t\t1043 0506  TUF Gaming Radeon RX 7900 XTX OC\n\t\t148c 2425  HELLHOUND RX 7900 GRE\n\t\t1849 5304  Radeon RX 7900 XTX\n\t\t1da2 471e  PULSE RX 7900 XTX\n\t\t1da2 475e  PULSE RX 7900 GRE\n\t\t1da2 e471  NITRO+ RX 7900 XTX Vapor-X\n\t\t1eae 7901  RX-79XMERCB9 [SPEEDSTER MERC 310 RX 7900 XTX]\n\t\t1eae 790a  RX-79GMERCBR [XFX RX 7900 GRE]\n\t745e  Navi 31 [Radeon Pro W7800]\n\t7460  Navi32 GL-XL [AMD Radeon PRO V710]\n\t7461  Navi 32 [AMD Radeon PRO V710]\n\t7470  Navi 32 [Radeon PRO W7700]\n\t747e  Navi 32 [Radeon RX 7700 XT / 7800 XT]\n\t\t148c 2427  RX 7800 XT [Hellhound / Red Devil]\n\t7480  Navi 33 [Radeon RX 7600/7600 XT/7600M XT/7600S/7700S / PRO W7600]\n\t\t1849 5313  RX 7600 Challenger OC\n\t7481  Navi 33 [Radeon Graphics]\n\t7483  Navi 33 [Radeon RX 7600M/7600M XT]\n\t7487  Navi 33 [Radeon Graphics]\n\t7489  Navi 33 [Radeon Pro W7500]\n\t748b  Navi 33 [Radeon Graphics]\n\t7499  Navi 33 [Radeon RX 7400/7300/Pro W7400]\n\t749f  Navi 33 [Radeon RX 7500]\n\t74a0  Aqua Vanjaram [Instinct MI300A]\n\t74a1  Aqua Vanjaram [Instinct MI300X]\n\t74a2  Aqua Vanjaram [Instinct MI308X]\n\t74a5  Aqua Vanjaram [Instinct MI325X]\n\t74a9  Aqua Vanjaram [Instinct MI300X HF]\n\t74b5  Aqua Vanjaram [Instinct MI300X VF]\n\t74b9  Aqua Vanjaram [Instinct MI325X VF]\n\t74bd  Aqua Vanjaram [Instinct MI300X HF]\n\t7550  Navi 48 [Radeon RX 9070/9070 XT/9070 GRE]\n\t\t148c 2435  Reaper Radeon RX 9070 XT 16GB GDDR6 (RX9070XT 16G-A)\n\t\t1da2 e490  Navi 48 XTX [Sapphire Pulse Radeon RX 9070 XT]\n\t7551  Navi 48 [Radeon AI PRO R9700]\n\t7590  Navi 44 [Radeon RX 9060 XT]\n\t7833  RS350 Host Bridge\n\t7834  RS350 [Radeon 9100 PRO/XT IGP]\n\t7835  RS350M [Mobility Radeon 9000 IGP]\n\t7838  RS350 AGP Bridge\n\t7910  RS690 Host Bridge\n\t\t1179 ff50  Satellite P305D-S8995E\n\t\t17f2 5000  KI690-AM2 Motherboard\n\t7911  RS690/RS740 Host Bridge\n\t\t1002 7910  RS690/RS740 Host Bridge\n\t7912  RS690/RS740 PCI to PCI Bridge (Internal gfx)\n\t7913  RS690 PCI to PCI Bridge (PCI Express Graphics Port 0)\n\t7915  RS690 PCI to PCI Bridge (PCI Express Port 1)\n\t7916  RS690 PCI to PCI Bridge (PCI Express Port 2)\n\t7917  RS690 PCI to PCI Bridge (PCI Express Port 3)\n\t\t1002 7910  RS690 PCI to PCI Bridge\n\t7919  RS690 HDMI Audio [Radeon Xpress 1200 Series]\n\t\t1179 7919  Satellite P305D-S8995E\n\t\t17f2 5000  KI690-AM2 Motherboard\n\t791e  RS690 [Radeon X1200]\n\t\t1462 7327  K9AG Neo2\n\t\t17f2 5000  KI690-AM2 Motherboard\n\t791f  RS690M [Radeon Xpress 1200/1250/1270]\n\t\t1179 ff50  Satellite P305D-S8995E\n\t7930  RS600 Host Bridge\n\t7932  RS600 PCI to PCI Bridge (Internal gfx)\n\t7933  RS600 PCI to PCI Bridge (PCI Express Graphics Port 0)\n\t7935  RS600 PCI to PCI Bridge (PCI Express Port 1)\n\t7936  RS600 PCI to PCI Bridge (PCI Express Port 2)\n\t7937  RS690 PCI to PCI Bridge (PCI Express Port 3)\n\t793b  RS600 HDMI Audio [Radeon Xpress 1250]\n\t793f  RS690M [Radeon Xpress 1200/1250/1270] (Secondary)\n\t7941  RS600 [Radeon Xpress 1250]\n\t7942  RS600M [Radeon Xpress 1250]\n\t796e  RS740 [Radeon 2100]\n\t\t105b 0e13  N15235/A74MX mainboard\n\t9400  R600 [Radeon HD 2900 PRO/XT]\n\t\t1002 2552  Radeon HD 2900 XT\n\t\t1002 3000  Radeon HD 2900 PRO\n\t\t1002 3142  HIS Radeon HD 2900XT 512MB GDDR3 VIVO PCIe\n\t9401  R600 [Radeon HD 2900 XT]\n\t9403  R600 [Radeon HD 2900 PRO]\n\t9405  R600 [Radeon HD 2900 GT]\n\t940a  R600 GL [FireGL V8650]\n\t\t13cc 3d16  MXRT-7200\n\t940b  R600 GL [FireGL V8600]\n\t940f  R600 GL [FireGL V7600]\n\t9440  RV770 [Radeon HD 4870]\n\t9441  R700 [Radeon HD 4870 X2]\n\t9442  RV770 [Radeon HD 4850]\n\t\t1002 0502  MSI Radeon HD 4850 512MB GDDR3\n\t\t174b e810  Radeon HD 4850 512MB GDDR3\n\t9443  R700 [Radeon HD 4850 X2]\n\t9444  RV770 GL [FirePro V8750]\n\t9446  RV770 GL [FirePro V7760]\n\t944a  RV770/M98L [Mobility Radeon HD 4850]\n\t944b  RV770/M98 [Mobility Radeon HD 4850 X2]\n\t944c  RV770 LE [Radeon HD 4830]\n\t944e  RV770 CE [Radeon HD 4710]\n\t\t174b 3261  Radeon HD 4810\n\t9450  RV770 GL [FireStream 9270]\n\t9452  RV770 GL [FireStream 9250]\n\t9456  RV770 GL [FirePro V8700]\n\t945a  RV770/M98-XT [Mobility Radeon HD 4870]\n\t9460  RV790 [Radeon HD 4890]\n\t9462  RV790 [Radeon HD 4860]\n\t946a  RV770 GL [FirePro M7750]\n\t9480  RV730/M96 [Mobility Radeon HD 4650/5165]\n\t\t103c 3628  Mobility Radeon HD 4650 [dv6-1190en]\n\t9488  RV730/M96-XT [Mobility Radeon HD 4670]\n\t9489  RV730/M96 GL [Mobility FireGL V5725]\n\t9490  RV730 XT [Radeon HD 4670]\n\t\t174b e880  Radeon HD 4670 512MB GDDR3 Dual DVI-I/TVO\n\t9491  RV730/M96-CSP [Radeon E4690]\n\t9495  RV730 [Radeon HD 4600 AGP Series]\n\t\t1002 0028  Radeon HD 4650/4670 AGP\n\t\t1092 0028  Radeon HD 4670 AGP 512MB DDR2\n\t\t1458 0028  Radeon HD 4650 AGP\n\t\t1682 0028  Radeon HD 4650 AGP\n\t\t174b 0028  Radeon HD 4650 AGP DDR2\n\t9498  RV730 PRO [Radeon HD 4650]\n\t949c  RV730 GL [FirePro V7750]\n\t\t13cc 3d1b  MXRT-7300\n\t949e  RV730 GL [FirePro V5700]\n\t949f  RV730 GL [FirePro V3750]\n\t94a0  RV740/M97 [Mobility Radeon HD 4830]\n\t94a1  RV740/M97-XT [Mobility Radeon HD 4860]\n\t94a3  RV740/M97 GL [FirePro M7740]\n\t94b3  RV740 PRO [Radeon HD 4770]\n\t94b4  RV740 PRO [Radeon HD 4750]\n\t94c1  RV610 [Radeon HD 2400 PRO/XT]\n\t\t1028 0211  Optiplex 755\n\t\t1028 0d02  Optiplex 755\n\t94c3  RV610 [Radeon HD 2400 PRO]\n\t\t1028 0302  Radeon HD 2400 Pro\n\t\t174b e400  Radeon HD 2400 PRO\n\t\t18bc 3550  Radeon HD 2400 PRO\n\t94c4  RV610 LE [Radeon HD 2400 PRO AGP]\n\t94c5  RV610 [Radeon HD 2400 LE]\n\t94c7  RV610 [Radeon HD 2350]\n\t94c8  RV610/M74 [Mobility Radeon HD 2400 XT]\n\t94c9  RV610/M72-S [Mobility Radeon HD 2400]\n\t\t1002 94c9  Radeon HD2400\n\t94cb  RV610 [Radeon E2400]\n\t94cc  RV610 LE [Radeon HD 2400 PRO PCI]\n\t9500  RV670 [Radeon HD 3850 X2]\n\t9501  RV670 [Radeon HD 3870]\n\t\t174b e620  Radeon HD 3870\n\t9504  RV670/M88 [Mobility Radeon HD 3850]\n\t9505  RV670 [Radeon HD 3690/3850]\n\t\t148c 3000  Radeon HD 3850\n\t\t174b 3000  Radeon HD 3690/3850\n\t\t1787 3000  Radeon HD 3690\n\t9506  RV670/M88 [Mobility Radeon HD 3850 X2]\n\t9507  RV670 [Radeon HD 3830]\n\t9508  RV670/M88-XT [Mobility Radeon HD 3870]\n\t9509  RV670/M88 [Mobility Radeon HD 3870 X2]\n\t950f  R680 [Radeon HD 3870 X2]\n\t9511  RV670 GL [FireGL V7700]\n\t9513  RV670 [Radeon HD 3850 X2]\n\t9515  RV670 PRO [Radeon HD 3850 AGP]\n\t9519  RV670 GL [FireStream 9170]\n\t9540  RV710 [Radeon HD 4550]\n\t954f  RV710 [Radeon HD 4350/4550]\n\t\t1462 1618  R4350 MD512H (MS-V161)\n\t9552  RV710/M92 [Mobility Radeon HD 4330/4350/4550]\n\t\t1028 1103  M92 [Mobility Radeon HD 4330]\n# GV-R435OC-512I/FF1\n\t\t1458 21ac  Radeon HD 4350\n# GV-R455HM-512I/F41\n\t\t1458 21ed  Radeon HD 4550\n# 113-100928-J01\n\t\t148c 3000  Radeon HD 4350 Go! Green 512MB GDDR3\n# 113-2E172001-003\n\t\t174b 3000  Radeon HD 4350/4550 HyperMemory DDR2\n\t9553  RV710/M92 [Mobility Radeon HD 4530/4570/5145/530v/540v/545v]\n\t\t1025 015e  Mobility Radeon HD 4570\n\t\t1025 017d  Mobility Radeon HD 4570\n\t\t1025 0205  Mobility Radeon HD 4570 / 545v\n\t\t1025 0206  Mobility Radeon HD 4570\n\t\t1025 0237  Mobility Radeon HD 4570\n\t\t1028 02be  Mobility Radeon HD 4570 / 545v\n\t\t1028 02e8  Mobility Radeon HD 4530\n\t\t103c 143c  Mobility Radeon HD 545v\n\t\t103c 1446  Mobility Radeon HD 545v\n\t\t103c 3624  Mobility Radeon HD 4530\n\t\t103c 3628  Mobility Radeon HD 4530\n\t\t103c 3636  Mobility Radeon HD 4530\n\t\t1043 1b32  Mobility Radeon HD 4570\n\t\t1043 1b42  Mobility Radeon HD 4570\n\t\t104d 9056  Mobility Radeon HD 4570\n\t\t1179 ff82  Satellite L505-13T GPU (Mobility Radeon HD 5145)\n\t\t144d c07f  Mobility Radeon HD 545v\n\t\t144d c571  Mobility Radeon HD 545v\n\t\t1462 1006  Mobility Radeon HD 545v\n\t\t17aa 2129  Mobility Radeon HD 545v\n\t\t17aa 215b  Mobility Radeon HD 545v\n\t\t17aa 21bb  Mobility Radeon HD 545v\n\t9555  RV711/M93 [Mobility Radeon HD 4350/4550/530v/540v/545v / FirePro RG220]\n\t\t103c 1411  ProBook 4720s GPU (Mobility Radeon HD 4350)\n\t9557  RV711/M93 GL [FirePro RG220]\n\t955f  RV710/M92 [Mobility Radeon HD 4330]\n\t9580  RV630 [Radeon HD 2600 PRO]\n\t9581  RV630/M76 [Mobility Radeon HD 2600]\n\t9583  RV630/M76 [Mobility Radeon HD 2600 XT/2700]\n\t\t106b 0083  iMac 7,1\n\t\t1734 1107  Mobility Radeon HD 2700\n\t9586  RV630 XT [Radeon HD 2600 XT AGP]\n\t9587  RV630 PRO [Radeon HD 2600 PRO AGP]\n\t9588  RV630 XT [Radeon HD 2600 XT]\n\t\t1458 216c  Radeon HD 2600 XT, 256MB GDDR3, 2x DVI, TV-out, PCIe (GV-RX26T256H)\n\t9589  RV630 PRO [Radeon HD 2600 PRO]\n\t\t1787 3000  Radeon HD 3610\n\t958a  RV630 [Radeon HD 2600 X2]\n\t958b  RV630/M76 [Mobility Radeon HD 2600 XT]\n\t958c  RV630 GL [FireGL V5600]\n\t\t13cc 3d18  MXRT-5200\n\t958d  RV630 GL [FireGL V3600]\n\t9591  RV635/M86 [Mobility Radeon HD 3650]\n\t\t1002 9591  Mobility Radeon HD 3650\n\t9593  RV635/M86 [Mobility Radeon HD 3670]\n\t9595  RV635/M86 GL [Mobility FireGL V5700]\n\t9596  RV635 PRO [Radeon HD 3650 AGP]\n\t\t1043 0028  EAH3650 SILENT/HTDI/512M/A\n\t9597  RV635 PRO [Radeon HD 3650 AGP]\n\t9598  RV635 [Radeon HD 3650/3750/4570/4580]\n\t\t1002 9598  Mobility Radeon HD 3600\n\t\t1043 01d6  EAH3650 Silent\n\t\t1043 3001  Radeon HD 4570\n\t\t174b 3001  Radeon HD 3750\n\t\t174b 4580  RV635 PRO [Radeon HD 4580]\n\t\t17af 3011  RV635 PRO [Radeon HD 4580]\n\t9599  RV635 PRO [Radeon HD 3650 AGP]\n\t95c0  RV620 PRO [Radeon HD 3470]\n\t\t1002 95c0  Mobility Radeon HD 3470\n\t\t1028 3243  C120D\n\t95c2  RV620/M82 [Mobility Radeon HD 3410/3430]\n\t95c4  RV620/M82 [Mobility Radeon HD 3450/3470]\n\t\t1002 95c4  Mobility Radeon HD 3400\n\t95c5  RV620 LE [Radeon HD 3450]\n\t\t1028 0342  Radeon HD 3450 DMS-59\n\t95c6  RV620 LE [Radeon HD 3450 AGP]\n\t95c9  RV620 LE [Radeon HD 3450 PCI]\n\t95cc  RV620 GL [FirePro V3700]\n\t95cd  RV620 GL [FirePro 2450]\n\t95cf  RV620 GL [FirePro 2260]\n\t960f  RS780 HDMI Audio [Radeon 3000/3100 / HD 3200/3300]\n\t\t1462 7596  760GM-E51(MS-7596) Motherboard\n\t9610  RS780 [Radeon HD 3200]\n\t\t1458 d000  GA-MA78GM-S2H Motherboard\n\t9611  RS780C [Radeon 3100]\n\t9612  RS780M [Mobility Radeon HD 3200]\n\t9613  RS780MC [Mobility Radeon HD 3100]\n\t9614  RS780D [Radeon HD 3300]\n\t9615  RS780E [Radeon HD 3200]\n\t9616  RS780L [Radeon 3000]\n# ID is probably a copy-paste error by a MSI developer from another mainboard, since all other ID numbers on this mainboard including the sub-device of this device has used subsystem ID 1462:7596\n\t\t1462 7501  760GM-E51(MS-7596) Motherboard\n\t9640  Sumo [Radeon HD 6550D]\n\t9641  Sumo [Radeon HD 6620G]\n\t9642  SuperSumo [Radeon HD 6370D]\n\t9643  SuperSumo [Radeon HD 6380G]\n\t9644  SuperSumo [Radeon HD 6410D]\n\t9645  SuperSumo [Radeon HD 6410D]\n\t9647  Sumo [Radeon HD 6520G]\n\t9648  Sumo [Radeon HD 6480G]\n\t9649  SuperSumo [Radeon HD 6480G]\n\t964a  Sumo [Radeon HD 6530D]\n\t964b  Sumo\n\t964c  Sumo\n\t964e  Sumo\n\t964f  Sumo\n\t970f  RS880 HDMI Audio [Radeon HD 4200 Series]\n\t\t1019 2120  A785GM-M\n\t\t1043 83a2  M4A785TD Motherboard\n\t\t1043 843e  M5A88-V EVO\n\t9710  RS880 [Radeon HD 4200]\n\t\t1019 2120  A785GM-M\n\t\t1043 83a2  M4A785TD Motherboard\n\t9712  RS880M [Mobility Radeon HD 4225/4250]\n\t\t103c 1609  ProLiant MicroServer N36L\n\t9713  RS880M [Mobility Radeon HD 4100]\n\t9714  RS880 [Radeon HD 4290]\n\t9715  RS880 [Radeon HD 4250]\n\t\t1043 843e  M5A88-V EVO\n# Radeon HD 6250 too?\n\t9802  Wrestler [Radeon HD 6310]\n\t\t174b 1001  PURE Fusion Mini\n\t9803  Wrestler [Radeon HD 6310]\n\t9804  Wrestler [Radeon HD 6250]\n\t9805  Wrestler [Radeon HD 6250]\n\t9806  Wrestler [Radeon HD 6320]\n\t9807  Wrestler [Radeon HD 6290]\n\t9808  Wrestler [Radeon HD 7340]\n\t9809  Wrestler [Radeon HD 7310]\n\t980a  Wrestler [Radeon HD 7290]\n\t9830  Kabini [Radeon HD 8400 / R3 Series]\n\t\t1043 8623  AM1I-A Motherboard\n\t9831  Kabini [Radeon HD 8400E]\n\t9832  Kabini [Radeon HD 8330]\n\t\t1849 9832  QC5000-ITX/PH\n\t9833  Kabini [Radeon HD 8330E]\n\t9834  Kabini [Radeon HD 8210]\n\t9835  Kabini [Radeon HD 8310E]\n\t9836  Kabini [Radeon HD 8280 / R3 Series]\n\t9837  Kabini [Radeon HD 8280E]\n\t9838  Kabini [Radeon HD 8240 / R3 Series]\n\t9839  Kabini [Radeon HD 8180]\n\t983d  Temash [Radeon HD 8250/8280G]\n\t9840  Kabini HDMI/DP Audio\n\t\t1043 8623  AM1I-A Motherboard\n\t\t1849 9840  QC5000-ITX/PH\n\t9850  Mullins [Radeon R2/R3 Graphics]\n\t9851  Mullins [Radeon R4/R5 Graphics]\n\t\t1179 f928  Beema [Radeon R5 Graphics]\n\t9852  Mullins [Radeon R2 Graphics]\n\t9853  Mullins [Radeon R2 Graphics]\n\t9854  Mullins [Radeon R3E Graphics]\n\t9855  Mullins [Radeon R6 Graphics]\n\t9856  Mullins [Radeon R1E/R2E Graphics]\n\t9857  Mullins [Radeon APU XX-2200M with R2 Graphics]\n\t9858  Mullins\n\t9859  Mullins\n\t985a  Mullins\n\t985b  Mullins\n\t985c  Mullins\n\t985d  Mullins\n\t985e  Mullins\n\t985f  Mullins\n\t9874  Wani [Radeon R5/R6/R7 Graphics]\n\t\t1002 1871  Radeon R5 Graphics\n\t\t1002 1e20  Radeon R7 Graphics\n\t\t1028 06bd  Radeon R6 Graphics\n\t\t103c 2b44  Radeon R6 Graphics\n\t\t103c 8221  Radeon R5 Graphics\n\t\t103c 8223  Radeon R5 Graphics\n\t\t103c 8238  Radeon R7 Graphics\n\t\t103c 8353  Radeon R7 Graphics\n\t\t1458 d000  Radeon R7 Graphics\n\t\t17aa 5113  Radeon R6 Graphics\n\t\t17aa 5116  Radeon R6 Graphics\n\t\t17aa 5118  Radeon R5 Graphics\n\t9890  Amur\n\t98c0  Nolan\n\t98e4  Stoney [Radeon R2/R3/R4/R5 Graphics]\n\t9900  Trinity [Radeon HD 7660G]\n\t\t103c 1985  Pavilion 17-e163sg Notebook PC\n# AMD A10-5800K CPU\n\t9901  Trinity [Radeon HD 7660D]\n\t9902  Trinity HDMI Audio Controller\n\t\t103c 194e  ProBook 455 G1 Notebook\n\t\t103c 1985  Pavilion 17-e163sg Notebook PC\n\t9903  Trinity [Radeon HD 7640G]\n\t\t103c 194e  ProBook 455 G1 Notebook\n\t\t103c 1952  ProBook 455 G1 Notebook\n\t9904  Trinity [Radeon HD 7560D]\n\t9905  Trinity GL [FirePro A300]\n\t9906  Trinity GL [FirePro A320]\n\t9907  Trinity [Radeon HD 7620G]\n\t9908  Trinity [Radeon HD 7600G]\n\t9909  Trinity [Radeon HD 7500G]\n\t990a  Trinity [Radeon HD 7500G]\n\t990b  Richland [Radeon HD 8650G]\n\t990c  Richland [Radeon HD 8670D]\n\t990d  Richland [Radeon HD 8550G]\n\t990e  Richland [Radeon HD 8570D]\n\t990f  Richland [Radeon HD 8610G]\n\t9910  Trinity [Radeon HD 7660G]\n\t9913  Trinity [Radeon HD 7640G]\n\t9917  Trinity [Radeon HD 7620G]\n\t9918  Trinity [Radeon HD 7600G]\n\t9919  Trinity [Radeon HD 7500G]\n\t991e  Bishop [Xbox One S APU]\n\t9920  Liverpool [Playstation 4 APU]\n\t9921  Liverpool HDMI/DP Audio Controller\n\t9922  Starshp\n\t9923  Starsha2 [Kingston/Clayton]\n\t9924  Gladius\n\t9925  Kingston/Clayton/Jupiter/Gladius/Montego HDMI Controller\n\t9926  Jupiter\n\t9990  Trinity 2 [Radeon HD 7520G]\n\t9991  Trinity 2 [Radeon HD 7540D]\n\t9992  Trinity 2 [Radeon HD 7420G]\n\t9993  Trinity 2 [Radeon HD 7480D]\n\t9994  Trinity 2 [Radeon HD 7400G]\n\t9995  Richland [Radeon HD 8450G]\n\t9996  Richland [Radeon HD 8470D]\n\t9997  Richland [Radeon HD 8350G]\n\t9998  Richland [Radeon HD 8370D]\n\t9999  Richland [Radeon HD 8510G]\n\t999a  Richland [Radeon HD 8410G]\n\t999b  Richland [Radeon HD 8310G]\n\t999c  Richland [Radeon HD 8650D]\n# AMD Quad-Core A8-Series APU A8-6500T with Radeon HD 8550D\n\t999d  Richland [Radeon HD 8550D]\n\t99a0  Trinity 2 [Radeon HD 7520G]\n\t99a2  Trinity 2 [Radeon HD 7420G]\n\t99a4  Trinity 2 [Radeon HD 7400G]\n\taa00  R600 HDMI Audio [Radeon HD 2900 GT/PRO/XT]\n\taa08  RV630 HDMI Audio [Radeon HD 2600 PRO/XT / HD 3610]\n\taa10  RV610 HDMI Audio [Radeon HD 2350 PRO / 2400 PRO/XT / HD 3410]\n\t\t174b aa10  Radeon HD 2400 PRO\n\t\t18bc aa10  Radeon HD 2400 PRO\n\taa18  RV670/680 HDMI Audio [Radeon HD 3690/3800 Series]\n\taa20  RV635 HDMI Audio [Radeon HD 3650/3730/3750]\n\taa28  RV620 HDMI Audio [Radeon HD 3450/3470/3550/3570]\n\taa30  RV770 HDMI Audio [Radeon HD 4850/4870]\n\t\t174b aa30  Radeon HD 4850 512MB GDDR3 PCI-E Dual Slot Fansink\n\taa38  RV710/730 HDMI Audio [Radeon HD 4000 series]\n\t\t103c 3628  dv6-1190en\n\taa50  Cypress HDMI Audio [Radeon HD 5830/5850/5870 / 6850/6870 Rebrand]\n\taa58  Juniper HDMI Audio [Radeon HD 5700 Series]\n# 5500, 5600 and mobile 5700 series\n\taa60  Redwood HDMI Audio [Radeon HD 5000 Series]\n\t\t1025 033d  Mobility Radeon HD 5650\n\t\t1025 0347  Aspire 7740G\n\taa68  Cedar HDMI Audio [Radeon HD 5400/6300/7300 Series]\n\t\t1028 aa68  XPS 8300\n\taa80  Cayman/Antilles HDMI Audio [Radeon HD 6930/6950/6970/6990]\n\taa88  Barts HDMI Audio [Radeon HD 6790/6850/6870 / 7720 OEM]\n\taa90  Turks HDMI Audio [Radeon HD 6500/6600 / 6700M Series]\n\t\t1028 04a3  Precision M4600\n\taa98  Caicos HDMI Audio [Radeon HD 6450 / 7450/8450/8490 OEM / R5 230/235/235X OEM]\n\t\t1043 aa98  EAH6450 SILENT/DI/1GD3(LP)\n\t\t174b aa98  Radeon HD 6450 1GB DDR3\n\taaa0  Tahiti HDMI Audio [Radeon HD 7870 XT / 7950/7970]\n\taab0  Oland/Hainan/Cape Verde/Pitcairn HDMI Audio [Radeon HD 7000 Series]\n\taab8  Tiran HDMI Audio\n\taac0  Tobago HDMI Audio [Radeon R7 360 / R9 360 OEM]\n\t\t1043 aac0  R7260X-DC2OC-2GD5\n\taac8  Hawaii HDMI Audio [Radeon R9 290/290X / 390/390X]\n\taad8  Tonga HDMI Audio [Radeon R9 285/380]\n\t\t174b aad8  Radeon R9 285/380 HDMI Audio\n\taae0  Baffin HDMI/DP Audio [Radeon RX 550 640SP / RX 560/560X]\n\taae8  Fiji HDMI/DP Audio [Radeon R9 Nano / FURY/FURY X]\n\taaf0  Ellesmere HDMI Audio [Radeon RX 470/480 / 570/580/590]\n\taaf8  Vega 10 HDMI Audio [Radeon Vega 56/64]\n\tab00  Baffin HDMI/DP Audio [Radeon RX 550 640SP / RX 560/560X]\n\tab08  Polaris 22 HDMI Audio\n\tab10  Lexa HDMI Audio\n\tab18  Vega 12 HDMI Audio\n\tab20  Vega 20 HDMI Audio [Radeon VII]\n\tab28  Navi 21/23 HDMI/DP Audio Controller\n\tab30  Navi 31 HDMI/DP Audio\n\tab38  Navi 10 HDMI Audio\n\tab40  Navi 48 HDMI/DP Audio Controller\n\tac00  Theater 506 World-Wide Analog Decoder\n\tac01  Theater 506 World-Wide Analog Decoder\n\tac02  TV Wonder HD 600 PCIe\n\tac03  Theater 506 PCIe\n\tac04  Theater 506 USB\n\tac05  Theater 506 USB\n\tac06  Theater 506 External USB\n\tac07  Theater 506 External USB\n\tac08  Theater 506A World-Wide Analog Decoder + Demodulator\n\tac09  Theater 506A World-Wide Analog Decoder + Demodulator\n\tac0a  Theater 506A PCIe\n\tac0b  Theater 506A PCIe\n\tac0c  Theater 506A USB\n\tac0d  Theater 506A USB\n\tac0e  Theater 506A External USB\n\tac0f  Theater 506A External USB\n\tac12  Theater HD T507 (DVB-T) TV tuner/capture device\n\tcab0  RS100 Host Bridge\n\tcab2  RS200 Host Bridge\n\tcab3  RS250 Host Bridge\n\tcbb2  RS200 Host Bridge\n1003  ULSI Systems\n\t0201  US201\n1004  VLSI Technology Inc\n\t0005  82C592-FC1\n\t0006  82C593-FC1\n\t0007  82C594-AFC2\n\t0008  82C596/7 [Wildcat]\n\t0009  82C597-AFC2\n\t000c  82C541 [Lynx]\n\t000d  82C543 [Lynx]\n\t0101  82C532\n\t0102  82C534 [Eagle]\n\t0103  82C538\n\t0104  82C535\n\t0105  82C147\n\t0200  82C975\n\t0280  82C925\n\t0304  QSound ThunderBird PCI Audio\n\t\t1004 0304  QSound ThunderBird PCI Audio\n\t\t122d 1206  DSP368 Audio\n\t\t1483 5020  XWave Thunder 3D Audio\n\t0305  QSound ThunderBird PCI Audio Gameport\n\t\t1004 0305  QSound ThunderBird PCI Audio Gameport\n\t\t122d 1207  DSP368 Audio Gameport\n\t\t1483 5021  XWave Thunder 3D Audio Gameport\n\t0306  QSound ThunderBird PCI Audio Support Registers\n\t\t1004 0306  QSound ThunderBird PCI Audio Support Registers\n\t\t122d 1208  DSP368 Audio Support Registers\n\t\t1483 5022  XWave Thunder 3D Audio Support Registers\n\t0307  SAA7785 ThunderBird PCI Audio\n\t\t1004 0703  Philips Rhythmic Edge PSC703\n\t\t1004 0705  Philips Seismic Edge PSC705\n\t\t1004 0706  Philips Acoustic Edge PSC706\n\t0308  SAA7785 ThunderBird PCI Audio Gameport\n\t0702  VAS96011 [Golden Gate II]\n\t0703  Tollgate\n1005  Avance Logic Inc. [ALI]\n\t2064  ALG2032/2064\n\t2128  ALG2364A\n\t2301  ALG2301\n\t2302  ALG2302\n\t2364  ALG2364\n\t2464  ALG2364A\n\t2501  ALG2564A/25128A\n1006  Reply Group\n1007  NetFrame Systems Inc\n1008  Epson\n100a  Phoenix Technologies\n100b  National Semiconductor Corporation\n\t0001  DP83810\n\t0002  87415/87560 IDE\n\t000e  87560 Legacy I/O\n\t000f  FireWire Controller\n\t0011  NS87560 National PCI System I/O\n\t0012  USB Controller\n\t0020  DP83815 (MacPhyter) Ethernet Controller\n\t\t103c 0024  Pavilion ze4400 builtin Network\n\t\t12d9 000c  Aculab E1/T1 PMXc cPCI carrier card\n\t\t1385 f311  FA311 / FA312 (FA311 with WoL HW)\n\t\t1385 f312  FA312 (rev. A1) Fast Ethernet PCI Adapter\n\t0021  PC87200 PCI to ISA Bridge\n\t0022  DP83820 10/100/1000 Ethernet Controller\n\t\t1186 4900  DGE-500T\n\t\t1385 621a  GA621\n\t\t1385 622a  GA622T\n\t0028  Geode GX2 Host Bridge\n\t002a  CS5535 South Bridge\n\t002b  CS5535 ISA bridge\n\t002d  CS5535 IDE\n\t002e  CS5535 Audio\n\t002f  CS5535 USB\n\t0030  Geode GX2 Graphics Processor\n\t0035  DP83065 [Saturn] 10/100/1000 Ethernet Controller\n\t0500  SCx200 Bridge\n\t0501  SCx200 SMI\n\t0502  SCx200, SC1100 IDE controller\n\t\t100b 0502  IDE Controller\n\t0503  SCx200, SC1100 Audio Controller\n\t\t100b 0503  XpressAudio controller\n\t0504  SCx200 Video\n\t0505  SCx200 XBus\n\t0510  SC1100 Bridge\n\t\t100b 0500  GPIO and LPC support bridge\n\t0511  SC1100 SMI & ACPI\n\t\t100b 0501  SC1100 SMI & ACPI bridge\n\t0515  SC1100 XBus\n\t\t100b 0505  SC1100 PCI to XBus bridge\n\td001  87410 IDE\n100c  Tseng Labs Inc\n\t3202  ET4000/W32p rev A\n\t3205  ET4000/W32p rev B\n\t3206  ET4000/W32p rev C\n\t3207  ET4000/W32p rev D\n\t3208  ET6000\n\t4702  ET6300\n100d  AST Research Inc\n100e  Weitek\n\t9000  P9000 Viper\n\t9001  P9000 Viper\n\t9002  P9000 Viper\n\t9100  P9100 Viper Pro/SE\n1010  Video Logic, Ltd.\n1011  Digital Equipment Corporation\n\t0001  DECchip 21050\n\t0002  DECchip 21040 [Tulip]\n\t0004  DECchip 21030 [TGA]\n\t0007  NVRAM [Zephyr NVRAM]\n\t0008  KZPSA [KZPSA]\n\t0009  DECchip 21140 [FasterNet]\n\t\t1025 0310  21140 Fast Ethernet\n\t\t10b8 2001  SMC9332BDT EtherPower 10/100\n\t\t10b8 2002  SMC9332BVT EtherPower T4 10/100\n\t\t10b8 2003  SMC9334BDT EtherPower 10/100 (1-port)\n\t\t1109 2400  ANA-6944A/TX Fast Ethernet\n\t\t1112 2300  RNS2300 Fast Ethernet\n\t\t1112 2320  RNS2320 Fast Ethernet\n\t\t1112 2340  RNS2340 Fast Ethernet\n\t\t1113 1207  EN-1207-TX Fast Ethernet\n\t\t1186 1100  DFE-500TX Fast Ethernet\n\t\t1186 1112  DFE-570TX Fast Ethernet\n\t\t1186 1140  DFE-660 Cardbus Ethernet 10/100\n\t\t1186 1142  DFE-660 Cardbus Ethernet 10/100\n\t\t11f6 0503  Freedomline Fast Ethernet\n\t\t1282 9100  AEF-380TXD Fast Ethernet\n\t\t1385 1100  FA310TX Fast Ethernet\n\t\t2646 0001  KNE100TX Fast Ethernet\n\t000a  21230 Video Codec\n\t000d  PBXGB [TGA2]\n\t000f  PCI-to-PDQ Interface Chip [PFI] FDDI (DEFPA)\n\t\t1011 def1  FDDIcontroller/PCI (DEFPA)\n\t\t103c def1  FDDIcontroller/PCI (3X-DEFPA)\n\t0014  DECchip 21041 [Tulip Pass 3]\n\t\t1186 0100  DE-530+\n\t0016  ATMworks 350 Adapter [OPPO] (DGLPB)\n\t0017  PV-PCI Graphics Controller (ZLXp-L)\n\t0018  Memory Channel interface\n\t0019  DECchip 21142/43\n\t\t1011 500a  DE500A Fast Ethernet\n\t\t1011 500b  DE500B Fast Ethernet\n\t\t1014 0001  10/100 EtherJet Cardbus\n\t\t1025 0315  ALN315 Fast Ethernet\n\t\t1033 800c  PC-9821-CS01 100BASE-TX Interface Card\n\t\t1033 800d  PC-9821NR-B06 100BASE-TX Interface Card\n\t\t103c 125a  10/100Base-TX (PCI) [A5506B]\n\t\t108d 0016  Rapidfire 2327 10/100 Ethernet\n\t\t108d 0017  GoCard 2250 Ethernet 10/100 Cardbus\n\t\t10b8 2005  SMC8032DT Extreme Ethernet 10/100\n\t\t10b8 8034  SMC8034 Extreme Ethernet 10/100\n\t\t10ef 8169  Cardbus Fast Ethernet\n\t\t1109 2a00  ANA-6911A/TX Fast Ethernet\n\t\t1109 2b00  ANA-6911A/TXC Fast Ethernet\n\t\t1109 3000  ANA-6922/TX Fast Ethernet\n\t\t1113 1207  Cheetah Fast Ethernet\n\t\t1113 2220  Cardbus Fast Ethernet\n\t\t115d 0002  Cardbus Ethernet 10/100\n\t\t1179 0203  Fast Ethernet\n\t\t1179 0204  Cardbus Fast Ethernet\n\t\t1186 1100  DFE-500TX Fast Ethernet\n\t\t1186 1101  DFE-500TX Fast Ethernet\n\t\t1186 1102  DFE-500TX Fast Ethernet\n\t\t1186 1112  DFE-570TX Quad Fast Ethernet\n\t\t11f0 4235  21143 [FASTLine-II UTP 10/100]\n\t\t1259 2800  AT-2800Tx Fast Ethernet\n\t\t1266 0004  Eagle Fast EtherMAX\n\t\t12af 0019  NetFlyer Cardbus Fast Ethernet\n\t\t1374 0001  Cardbus Ethernet Card 10/100\n\t\t1374 0002  Cardbus Ethernet Card 10/100\n\t\t1374 0007  Cardbus Ethernet Card 10/100\n\t\t1374 0008  Cardbus Ethernet Card 10/100\n\t\t1385 2100  FA510\n\t\t1395 0001  10/100 Ethernet CardBus PC Card\n\t\t13d1 ab01  EtherFast 10/100 Cardbus (PCMPC200)\n\t\t1498 000a  TPMC880-10 10/100Base-T and 10Base2 PMC Ethernet Adapter\n\t\t1498 000b  TPMC880-11 Single 10/100Base-T PMC Ethernet Adapter\n\t\t1498 000c  TPMC880-12 Single 10Base2 PMC Ethernet Adapter\n\t\t14cb 0100  LNDL-100N 100Base-TX Ethernet PC Card\n\t\t1668 2000  FastNet Pro (PE2000)\n\t\t2646 0001  KNE100TX\n\t\t2646 0002  KNE-CB4TX\n\t\t8086 0001  EtherExpress PRO/100 Mobile CardBus 32\n\t001a  Farallon PN9000SX Gigabit Ethernet\n\t0021  DECchip 21052\n\t0022  DECchip 21150\n\t0023  DECchip 21150\n\t0024  DECchip 21152\n\t0025  DECchip 21153\n\t0026  DECchip 21154\n\t0034  56k Modem Cardbus\n\t\t1374 0003  56k Modem Cardbus\n\t0045  DECchip 21553\n\t0046  DECchip 21554\n\t\t0e11 4050  Smart Array 4200 Controller\n\t\t0e11 4051  Smart Array 4250ES Controller\n\t\t0e11 4058  Smart Array 431 Controller\n\t\t103c 10c2  NetRAID-4M\n\t\t12d9 000a  IP Telephony card\n\t\t4c53 1050  CT7 mainboard\n\t\t4c53 1051  CE7 mainboard\n\t\t9005 0364  5400S (Mustang)\n\t\t9005 0365  5400S (Mustang)\n\t\t9005 1364  Dell PowerEdge RAID Controller 2\n\t\t9005 1365  Dell PowerEdge RAID Controller 2\n\t\te4bf 1000  CC8-1-BLUES\n\t1065  StrongARM DC21285\n\t\t1069 0020  DAC960P / DAC1164P\n1012  Micronics Computers Inc\n1013  Cirrus Logic\n\t0038  GD 7548\n\t0040  GD 7555 Flat Panel GUI Accelerator\n\t004c  GD 7556 Video/Graphics LCD/CRT Ctrlr\n\t00a0  GD 5430/40 [Alpine]\n\t00a2  GD 5432 [Alpine]\n\t00a4  GD 5434-4 [Alpine]\n\t00a8  GD 5434-8 [Alpine]\n\t00ac  GD 5436 [Alpine]\n\t00b0  GD 5440\n\t00b8  GD 5446\n\t\t1af4 1100  QEMU Virtual Machine\n\t00bc  GD 5480\n\t\t1013 00bc  CL-GD5480\n\t00d0  GD 5462\n\t00d2  GD 5462 [Laguna I]\n\t00d4  GD 5464 [Laguna]\n\t00d5  GD 5464 BD [Laguna]\n\t00d6  GD 5465 [Laguna]\n\t\t13ce 8031  Barco Metheus 2 Megapixel, Dual Head\n\t\t13cf 8031  Barco Metheus 2 Megapixel, Dual Head\n\t00e8  GD 5436U\n\t1100  CL 6729\n\t1110  PD 6832 PCMCIA/CardBus Ctrlr\n\t1112  PD 6834 PCMCIA/CardBus Ctrlr\n\t1113  PD 6833 PCMCIA/CardBus Ctrlr\n\t1200  GD 7542 [Nordic]\n\t1202  GD 7543 [Viking]\n\t1204  GD 7541 [Nordic Light]\n\t4000  MD 5620 [CLM Data Fax Voice]\n\t4400  CD 4400\n\t6001  CS 4610/11 [CrystalClear SoundFusion Audio Accelerator]\n\t\t1014 1010  CS4610 SoundFusion Audio Accelerator\n\t6003  CS 4614/22/24/30 [CrystalClear SoundFusion Audio Accelerator]\n\t\t1013 4280  Crystal SoundFusion PCI Audio Accelerator\n\t\t1014 0153  ThinkPad 600X/A20m\n\t\t153b 112e  DMX XFire 1024\n\t\t153b 1136  SiXPack 5.1+\n\t\t1681 0050  Game Theater XP\n\t\t1681 a010  Gamesurround Fortissimo II\n\t\t1681 a011  Gamesurround Fortissimo III 7.1\n\t\t5053 3357  Santa Cruz\n\t6004  CS 4614/22/24 [CrystalClear SoundFusion Audio Accelerator]\n\t6005  Crystal CS4281 PCI Audio\n\t\t1013 4281  Crystal CS4281 PCI Audio\n\t\t10cf 10a8  Crystal CS4281 PCI Audio\n\t\t10cf 10a9  Crystal CS4281 PCI Audio\n\t\t10cf 10aa  Crystal CS4281 PCI Audio\n\t\t10cf 10ab  Crystal CS4281 PCI Audio\n\t\t10cf 10ac  Crystal CS4281 PCI Audio\n\t\t10cf 10ad  Crystal CS4281 PCI Audio\n\t\t10cf 10b4  Crystal CS4281 PCI Audio\n\t\t1179 0001  Crystal CS4281 PCI Audio\n\t\t14c0 000c  Crystal CS4281 PCI Audio\n1014  IBM\n\t0002  PCI to MCA Bridge\n\t0005  Processor to I/O Controller [Alta Lite]\n\t0007  Processor to I/O Controller [Alta MP]\n\t000a  PCI to ISA Bridge (IBM27-82376) [Fire Coral]\n\t0017  CPU to PCI Bridge\n\t0018  TR Auto LANstreamer\n\t001b  GXT-150P\n\t001c  Carrera\n\t001d  SCSI-2 FAST PCI Adapter (82G2675)\n\t0020  GXT1000 Graphics Adapter\n\t0022  PCI to PCI Bridge (IBM27-82351)\n\t002d  Processor to I/O Controller [Python]\n\t002e  SCSI RAID Adapter [ServeRAID]\n\t\t1014 002e  ServeRAID-3x\n\t\t1014 022e  ServeRAID-4H\n\t0031  2 Port Serial Adapter\n# AS400 iSeries PCI sync serial card\n\t\t1014 0031  2721 WAN IOA - 2 Port Sync Serial Adapter\n\t0036  PCI to 32-bit LocalBus Bridge [Miami]\n\t0037  PowerPC to PCI Bridge (IBM27-82660)\n\t003a  CPU to PCI Bridge\n\t003c  GXT250P/GXT255P Graphics Adapter\n\t003e  16/4 Token ring UTP/STP controller\n\t\t1014 003e  Token-Ring Adapter\n\t\t1014 00cd  Token-Ring Adapter + Wake-On-LAN\n\t\t1014 00ce  16/4 Token-Ring Adapter 2\n\t\t1014 00cf  16/4 Token-Ring Adapter Special\n\t\t1014 00e4  High-Speed 100/16/4 Token-Ring Adapter\n\t\t1014 00e5  16/4 Token-Ring Adapter 2 + Wake-On-LAN\n\t\t1014 016d  iSeries 2744 Card\n\t0045  SSA Adapter\n\t0046  MPIC interrupt controller\n\t0047  PCI to PCI Bridge\n\t0048  PCI to PCI Bridge\n\t0049  Warhead SCSI Controller\n\t004e  ATM Controller (14104e00)\n\t004f  ATM Controller (14104f00)\n\t0050  ATM Controller (14105000)\n\t0053  25 MBit ATM Controller\n\t0054  GXT500P/GXT550P Graphics Adapter\n\t0057  MPEG PCI Bridge\n\t0058  SSA Adapter [Advanced SerialRAID/X]\n\t005e  GXT800P Graphics Adapter\n\t007c  ATM Controller (14107c00)\n\t007d  3780IDSP [MWave]\n\t008b  EADS PCI to PCI Bridge\n\t008e  GXT3000P Graphics Adapter\n\t0090  GXT 3000P\n\t\t1014 008e  GXT-3000P\n\t0091  SSA Adapter\n\t0095  20H2999 PCI Docking Bridge\n\t0096  Chukar chipset SCSI controller\n\t\t1014 0097  iSeries 2778 DASD IOA\n\t\t1014 0098  iSeries 2763 DASD IOA\n\t\t1014 0099  iSeries 2748 DASD IOA\n\t009f  PCI 4758 Cryptographic Accelerator\n\t00a5  ATM Controller (1410a500)\n\t00a6  ATM 155MBPS MM Controller (1410a600)\n\t00b7  GXT2000P Graphics Adapter\n\t\t1092 00b8  FireGL1 AGP 32Mb\n\t00b8  GXT2000P Graphics Adapter\n\t00be  ATM 622MBPS Controller (1410be00)\n\t00dc  Advanced Systems Management Adapter (ASMA)\n\t00fc  CPC710 Dual Bridge and Memory Controller (PCI-64)\n\t0105  CPC710 Dual Bridge and Memory Controller (PCI-32)\n\t010f  Remote Supervisor Adapter (RSA)\n\t0142  Yotta Video Compositor Input\n\t\t1014 0143  Yotta Input Controller (ytin)\n\t0144  Yotta Video Compositor Output\n\t\t1014 0145  Yotta Output Controller (ytout)\n\t0156  405GP PLB to PCI Bridge\n\t015e  622Mbps ATM PCI Adapter\n\t0160  64bit/66MHz PCI ATM 155 MMF\n\t016e  GXT4000P Graphics Adapter\n\t0170  GXT6000P Graphics Adapter\n\t\t1092 0172  Fire GL2\n\t\t1092 0173  Fire GL3\n\t\t1092 0174  Fire GL4\n\t\t1092 0184  Fire GL4s\n\t017d  GXT300P Graphics Adapter\n\t0180  Snipe chipset SCSI controller\n\t\t1014 0241  iSeries 2757 DASD IOA\n\t\t1014 0264  Quad Channel PCI-X U320 SCSI RAID Adapter (2780)\n\t0188  EADS-X PCI-X to PCI-X Bridge\n\t01a7  PCI-X to PCI-X Bridge\n\t01bd  ServeRAID Controller\n\t\t1014 01bd  ServeRAID 4Lx\n\t\t1014 01be  ServeRAID-4M\n\t\t1014 01bf  ServeRAID-4L\n\t\t1014 0208  ServeRAID-4Mx\n\t\t1014 020e  ServeRAID-4Lx\n\t\t1014 022e  ServeRAID-4H\n\t\t1014 0258  ServeRAID-5i\n\t\t1014 0259  ServeRAID-5i\n\t01c1  64bit/66MHz PCI ATM 155 UTP\n\t01e6  Cryptographic Accelerator\n\t01ef  PowerPC 440GP PCI Bridge\n\t\t1734 102b  PCEAS PCI-X Dual Port ESCON Adapter\n\t\t1734 10f8  PCEAT PCI-Express Dual Port ESCON Adapter\n\t01ff  10/100 Mbps Ethernet\n\t0219  Multiport Serial Adapter\n\t\t1014 021a  Dual RVX\n\t\t1014 0251  Internal Modem/RVX\n\t\t1014 0252  Quad Internal Modem\n\t021b  GXT6500P Graphics Adapter\n\t021c  GXT4500P Graphics Adapter\n\t0233  GXT135P Graphics Adapter\n# Internal debugging card for CELL based systems\n\t025a  Drone card\n\t028c  Citrine chipset SCSI controller\n\t\t1014 028d  Dual Channel PCI-X DDR SAS RAID Adapter (572E)\n\t\t1014 02be  Dual Channel PCI-X DDR U320 SCSI RAID Adapter (571B)\n\t\t1014 02c0  Dual Channel PCI-X DDR U320 SCSI Adapter (571A)\n\t\t1014 030d  PCI-X DDR Auxiliary Cache Adapter (575B)\n\t02a1  Calgary PCI-X Host Bridge\n\t02bd  Obsidian chipset SCSI controller\n\t\t1014 02c1  PCI-X DDR 3Gb SAS Adapter (572A/572C)\n\t\t1014 02c2  PCI-X DDR 3Gb SAS RAID Adapter (572B/571D)\n\t\t1014 0338  PCI-X DDR Auxiliary Cache Adapter (575C)\n\t0302  Winnipeg PCI-X Host Bridge\n\t0308  CalIOC2 PCI-E Root Port\n\t0311  FC 5740/1954 4-Port 10/100/1000 Base-TX PCI-X Adapter for POWER\n\t0314  ZISC 036 Neural accelerator card\n\t032d  Axon - Cell Companion Chip\n\t\t1014 03a1  PCIe PowerXCell 8i Cell Accelerator Board\n\t0339  Obsidian-E PCI-E SCSI controller\n\t\t1014 030a  PCIe 3Gb SAS RAID Adapter (574E)\n\t\t1014 033a  PCIe 3Gb SAS Adapter (57B3)\n\t\t1014 035c  PCIe x8 Internal 3Gb SAS adapter (57CC)\n\t\t1014 0360  PCI-E Auxiliary Cache Adapter (57B7)\n\t033d  PCI-E IPR SAS Adapter (FPGA)\n\t\t1014 033c  PCIe2 1.8GB Cache 6Gb SAS RAID Adapter Tri-port (57B5)\n\t\t1014 0353  PCIe2 3.1GB Cache 6Gb SAS RAID Enclosure (57C3)\n\t\t1014 0354  PCIe2 6Gb SAS Adapter Dual-port (57C4)\n\t\t1014 0356  PCIe2 1.8GB Cache 6Gb SAS RAID & SSD Adapter (574D)\n\t\t1014 035f  PCIe2 6Gb SAS Adapter Quad-port (57B2)\n\t034a  PCI-E IPR SAS Adapter (ASIC)\n\t\t1014 033b  PCIe2 6Gb SAS RAID Adapter Quad-port (57B4)\n\t\t1014 0355  PCIe2 3.6GB Cache 6Gb SAS RAID Adapter Quad-port (57B1)\n\t\t1014 0357  PCIe2 6Gb SAS Adapter Quad-port (57C6)\n\t\t1014 035d  PCIe3 1.8GB Cache RAID SAS Adapter Quad-port 6GB (57C8)\n\t\t1014 035e  PCIe2 3.6GB Cache 6Gb SAS RAID Adapter Quad-port (57CE)\n\t\t1014 03fb  PCIe3 28GB Cache RAID SAS Enclosure 6Gb x 16 (57D5)\n\t\t1014 03fe  PCIe3 x8 Cache SAS RAID Internal Adapter 6Gb (57D8)\n\t\t1014 03ff  PCIe3 x8 SAS RAID Internal Adapter 6Gb (57D7)\n\t\t1014 0474  PCIe3 x16 Cache SAS RAID Internal Adapter 6Gb (57EB)\n\t\t1014 0475  PCIe3 x16 SAS RAID Internal Adapter 6Gb (57EC)\n\t\t1014 0499  PCIe3 x16 Cache SAS RAID Internal Adapter 6Gb (57ED)\n\t\t1014 049a  PCIe3 x16 SAS RAID Internal Adapter 6Gb (57EE)\n\t\t1014 04c7  PCIe3 x 8 Cache SAS RAID Internal Adapter 6GB(2CCA)\n\t\t1014 04c8  PCIe3 x 8 Cache SAS RAID Internal Adapter 6GB(2CD2)\n\t\t1014 04c9  PCIe3 x 8 Cache SAS RAID Internal Adapter 6GB(2CCD)\n\t03dc  POWER8 Host Bridge (PHB3)\n\t044b  GenWQE Accelerator Adapter\n\t04aa  Flash Adapter 90 (PCIe2 0.9TB)\n\t04c1  POWER9 Host Bridge (PHB4)\n\t04da  PCI-E IPR SAS+ Adapter (ASIC)\n\t\t1014 04fb  PCIe3 x16 20GB Cache 12Gb Quad SAS RAID+ Adapter(580B)\n\t\t1014 04fc  PCIe3 x8 12Gb Quad SAS RAID+ Adapter(580A)\n\t04ed  Internal Shared Memory (ISM) virtual PCI device\n\t0611  4769 Cryptographic Adapter\n\t06a2  4770 Cryptographic Adapter\n\t06a7  Spyre Accelerator\n\t06a8  Spyre Accelerator Virtual Function\n\t3022  QLA3022 Network Adapter\n\t4022  QLA3022 Network Adapter\n\tffff  MPIC-2 interrupt controller\n1015  LSI Logic Corp of Canada\n1016  ICL Personal Systems\n1017  SPEA Software AG\n\t5343  SPEA 3D Accelerator\n1018  Unisys Systems\n1019  Elitegroup Computer Systems\n\t9602  RS780/RS880 PCI to PCI bridge (int gfx)\n101a  AT&T GIS (NCR)\n\t0005  100VG ethernet\n\t0007  BYNET BIC4G/2C/2G\n\t\t101a 0019  BYNET BIC2C\n\t\t101a 001c  BYNET BIC2G\n\t\t101a 001f  BYNET BIC4G\n\t0009  PQS Memory Controller\n\t000a  BYNET BPCI Adapter\n\t000b  BYNET 4 Port BYA Switch (BYA4P)\n\t000c  BYNET 4 Port BYA Switch (BYA4G)\n\t0010  NCR AMC Memory Controller\n\t1dc1  BYNET BIC2M/BIC4M/BYA4M\n\t\t101a 0019  BIC2M\n\t\t101a 001f  BIC4M\n\t\t101a 0ece  BYA4M\n\t1fa8  BYNET Multi-port BIC Adapter (XBIC Based)\n\t\t101a 00c3  BYNET BIC2SE\n101b  Vitesse Semiconductor\n# Maxim VSC452 Super BMC Controller with Video\n\t0452  VSC452 [SuperBMC]\n101c  Western Digital\n\t0193  33C193A\n\t0196  33C196A\n\t0197  33C197A\n\t0296  33C296A\n\t3193  7193\n\t3197  7197\n\t3296  33C296A\n\t4296  34C296\n\t9710  Pipeline 9710\n\t9712  Pipeline 9712\n\tc24a  90C\n# ID for Newly Acquired Storage Products from Vitesse\n101d  Maxim Integrated Products\n101e  American Megatrends Inc.\n\t0009  MegaRAID 428 Ultra RAID Controller (rev 03)\n\t1960  MegaRAID\n\t\t101e 0471  MegaRAID 471 Enterprise 1600 RAID Controller\n\t\t101e 0475  MegaRAID 475 Express 500/500LC RAID Controller\n\t\t101e 0477  MegaRAID 477 Elite 3100 RAID Controller\n\t\t101e 0493  MegaRAID 493 Elite 1600 RAID Controller\n\t\t101e 0494  MegaRAID 494 Elite 1650 RAID Controller\n\t\t101e 0503  MegaRAID 503 Enterprise 1650 RAID Controller\n\t\t101e 0511  MegaRAID 511 i4 IDE RAID Controller\n\t\t101e 0522  MegaRAID 522 i4133 RAID Controller\n\t\t1028 0471  PowerEdge RAID Controller 3/QC\n\t\t1028 0475  PowerEdge RAID Controller 3/SC\n\t\t1028 0493  PowerEdge RAID Controller 3/DC\n\t\t1028 0511  PowerEdge Cost Effective RAID Controller ATA100/4Ch\n\t\t103c 60e7  NetRAID-1M\n\t\t103c 60e8  NetRaid 2M [AMI MegaRaid 493]\n\t9010  MegaRAID 428 Ultra RAID Controller\n\t9030  EIDE Controller\n\t9031  EIDE Controller\n\t9032  EIDE & SCSI Controller\n\t9033  SCSI Controller\n\t9040  Multimedia card\n\t9060  MegaRAID 434 Ultra GT RAID Controller\n\t9063  MegaRAC\n\t\t101e 0767  Dell Remote Assistant Card 2\n101f  PictureTel\n1020  Hitachi Computer Products\n1021  OKI Electric Industry Co. Ltd.\n1022  Advanced Micro Devices, Inc. [AMD]\n\t1100  K8 [Athlon64/Opteron] HyperTransport Technology Configuration\n\t1101  K8 [Athlon64/Opteron] Address Map\n\t1102  K8 [Athlon64/Opteron] DRAM Controller\n\t1103  K8 [Athlon64/Opteron] Miscellaneous Control\n\t1110  Krackan Internal PCIe GPP Bridge 0 to Bus A\n\t1111  Krackan Internal PCIe GPP Bridge 0 to Bus B\n\t1112  Krackan Internal PCIe GPP Bridge 0 to Bus C\n\t1113  Krackan PCIe Dummy Function\n\t1116  Krackan PCIe Dummy Function\n\t1117  Krackan PCIe Dummy Function\n\t1122  Krackan Root Complex\n\t1123  Krackan IOMMU\n\t1200  Family 10h Processor HyperTransport Configuration\n\t1201  Family 10h Processor Address Map\n\t1202  Family 10h Processor DRAM Controller\n\t1203  Family 10h Processor Miscellaneous Control\n\t1204  Family 10h Processor Link Control\n\t1248  Krackan Data Fabric; Function 0\n\t1249  Krackan Data Fabric; Function 1\n\t124a  Krackan Data Fabric; Function 2\n\t124b  Krackan Data Fabric; Function 3\n\t124c  Krackan Data Fabric; Function 4\n\t124d  Krackan Data Fabric; Function 5\n\t124e  Krackan Data Fabric; Function 6\n\t124f  Krackan Data Fabric; Function 7\n\t12b8  Strix Halo Data Fabric; Function 0\n\t12b9  Strix Halo Data Fabric; Function 1\n\t12ba  Strix Halo Data Fabric; Function 2\n\t12bb  Strix Halo Data Fabric; Function 3\n\t12bc  Strix Halo Data Fabric; Function 4\n\t12bd  Strix Halo Data Fabric; Function 5\n\t12be  Strix Halo Data Fabric; Function 6\n\t12bf  Strix Halo Data Fabric; Function 7\n\t12c0  Turin Data Fabric; Function 0\n\t12c1  Turin Data Fabric; Function 1\n\t12c2  Turin Data Fabric; Function 2\n\t12c3  Turin Data Fabric; Function 3\n\t12c4  Turin Data Fabric; Function 4\n\t12c5  Turin Data Fabric; Function 5\n\t12c6  Turin Data Fabric; Function 6\n\t12c7  Turin Data Fabric; Function 7\n\t1300  Family 11h Processor HyperTransport Configuration\n\t1301  Family 11h Processor Address Map\n\t1302  Family 11h Processor DRAM Controller\n\t1303  Family 11h Processor Miscellaneous Control\n\t1304  Family 11h Processor Link Control\n\t1305  Griffin Function 5\n\t1306  Griffin Function 6\n\t1307  Griffin Function 7\n\t1308  Kaveri Audio Controller\n\t1314  Wrestler/Bheem/Ontario/Krishna Audio Controller\n\t13e0  Ariel Root Complex\n\t13e1  Ariel IOMMU\n\t13e2  Ariel PCIe Dummy Host Bridge\n\t13e3  Ariel PCIe GPP Bridge\n\t13e4  Ariel PCIe Dummy Host Bridge\n\t13e5  Ariel Internal PCIe GPP Bridge 0 to Bus A\n\t13e6  Ariel Internal PCIe GPP Bridge 0 to Bus B\n\t13e7  Ariel SMBus Controller\n\t13e8  Ariel LPC Bridge\n\t13e9  Ariel Internal GPU\n\t13ea  Ariel HD Audio Controller\n\t13eb  Ariel HD Audio Coprocessor\n\t13ec  Ariel Cryptographic Coprocessor\n\t13ed  Ariel USB 3.1 Type C: Gen2 x 1port + DP Alt Mode\n\t13ee  Ariel USB 3.1 Type A: Gen2 x 2 ports\n\t13ef  Ariel ZCN/MP4\n\t13f0  Ariel Device 24: Function 0\n\t13f1  Ariel Device 24: Function 1\n\t13f2  Ariel Device 24: Function 2\n\t13f3  Ariel Device 24: Function 3\n\t13f4  Ariel Device 24: Function 4\n\t13f5  Ariel Device 24: Function 5\n\t13f6  Ariel Device 24: Function 6\n\t13f7  Ariel Device 24: Function 7\n\t1400  Family 15h (Models 10h-1fh) Processor Function 0\n\t1401  Family 15h (Models 10h-1fh) Processor Function 1\n\t1402  Family 15h (Models 10h-1fh) Processor Function 2\n\t1403  Family 15h (Models 10h-1fh) Processor Function 3\n\t1404  Family 15h (Models 10h-1fh) Processor Function 4\n\t1405  Family 15h (Models 10h-1fh) Processor Function 5\n\t1410  Family 15h (Models 10h-1fh) Processor Root Complex\n\t\t103c 1985  Pavilion 17-e163sg Notebook PC\n\t1412  Family 15h (Models 10h-1fh) Processor Root Port\n\t\t1022 1234  Trinity A-series APU\n\t1413  Family 15h (Models 10h-1fh) Processor Root Port\n\t1414  Family 15h (Models 10h-1fh) Processor Root Port\n\t\t1022 1234  Trinity A-series APU\n\t1415  Family 15h (Models 10h-1fh) Processor Root Port\n\t1416  Family 15h (Models 10h-1fh) Processor Root Port\n\t1417  Family 15h (Models 10h-1fh) Processor Root Port\n\t1418  Family 15h (Models 10h-1fh) Processor Root Port\n\t1419  Family 15h (Models 10h-1fh) I/O Memory Management Unit\n\t141a  Family 15h (Models 30h-3fh) Processor Function 0\n\t141b  Family 15h (Models 30h-3fh) Processor Function 1\n\t141c  Family 15h (Models 30h-3fh) Processor Function 2\n\t141d  Family 15h (Models 30h-3fh) Processor Function 3\n\t141e  Family 15h (Models 30h-3fh) Processor Function 4\n\t141f  Family 15h (Models 30h-3fh) Processor Function 5\n\t1422  Family 15h (Models 30h-3fh) Processor Root Complex\n\t1423  Family 15h (Models 30h-3fh) I/O Memory Management Unit\n\t1424  Family 15h (Models 30h-3fh) Processor Root Port\n\t1425  Kaveri P2P Bridge for GFX PCIe Port [1:0]\n\t1426  Family 15h (Models 30h-3fh) Processor Root Port\n\t142e  Liverpool Processor HT configuration\n\t142f  Liverpool Processor Address Maps\n\t1430  Liverpool Processor DRAM configuration\n\t1431  Liverpool Processor Misc configuration\n\t1432  Liverpool Processor PM configuration\n\t1433  Liverpool Processor NB Performance Monitor\n\t1434  Liverpool Processor SPLL Configuration\n\t1436  Liverpool Processor Root Complex\n\t1437  Liverpool I/O Memory Management Unit\n\t1438  Liverpool UMI PCIe Dummy Host Bridge\n\t1439  Family 16h Processor Functions 5:1\n\t143a  Kingston/Clayton/Gladius/Montego Root Complex\n\t143b  Kingston/Clayton/Gladius/Montego P2P Bridge for UMI Link\n\t1440  Matisse/Vermeer Data Fabric: Device 18h; Function 0\n\t1441  Matisse/Vermeer Data Fabric: Device 18h; Function 1\n\t1442  Matisse/Vermeer Data Fabric: Device 18h; Function 2\n\t1443  Matisse/Vermeer Data Fabric: Device 18h; Function 3\n\t1444  Matisse/Vermeer Data Fabric: Device 18h; Function 4\n\t1445  Matisse/Vermeer Data Fabric: Device 18h; Function 5\n\t1446  Matisse/Vermeer Data Fabric: Device 18h; Function 6\n\t1447  Matisse/Vermeer Data Fabric: Device 18h; Function 7\n\t1448  Renoir Device 24: Function 0\n\t1449  Renoir Device 24: Function 1\n\t144a  Renoir Device 24: Function 2\n\t144b  Renoir Device 24: Function 3\n\t144c  Renoir Device 24: Function 4\n\t144d  Renoir Device 24: Function 5\n\t144e  Renoir Device 24: Function 6\n\t144f  Renoir Device 24: Function 7\n\t1450  Family 17h (Models 00h-0fh) Root Complex\n\t1451  Family 17h (Models 00h-0fh) I/O Memory Management Unit\n\t1452  Family 17h (Models 00h-1fh) PCIe Dummy Host Bridge\n\t\tea50 ce19  mCOM10-L1900\n\t1453  Family 17h (Models 00h-0fh) PCIe GPP Bridge\n\t1454  Family 17h (Models 00h-0fh) Internal PCIe GPP Bridge 0 to Bus B\n\t1455  Zeppelin/Renoir PCIe Dummy Function\n\t1456  Family 17h (Models 00h-0fh) Platform Security Processor (PSP) 3.0 Device\n\t1457  Family 17h (Models 00h-0fh) HD Audio Controller\n\t1458  XGMAC 10GbE Controller\n\t1459  XGMAC 10GbE Controller\n\t145a  Zeppelin/Raven/Raven2 PCIe Dummy Function\n\t145b  Zeppelin Non-Transparent Bridge\n\t145c  Family 17h (Models 00h-0fh) USB 3.0 Host Controller\n\t145d  Zeppelin Switch Upstream (PCIE SW.US)\n\t145e  Zeppelin Switch Downstream (PCIE SW.DS)\n\t145f  Zeppelin USB 3.0 xHCI Compliant Host Controller\n\t1460  Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 0\n\t1461  Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 1\n\t1462  Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 2\n\t1463  Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 3\n\t1464  Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 4\n\t1465  Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 5\n\t1466  Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 6\n\t1467  Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 7\n\t1468  Zeppelin Cryptographic Coprocessor NTBCCP\n\t1470  Vega 10 PCIe Bridge\n\t1471  Vega 10 PCIe Bridge\n\t1480  Starship/Matisse Root Complex\n\t\t1462 7c37  X570-A PRO motherboard\n\t\t15d9 1b95  H12SSL-i\n\t\t1849 1480  ROME2D32LM3\n\t1481  Starship/Matisse IOMMU\n\t1482  Starship/Matisse PCIe Dummy Host Bridge\n\t1483  Starship/Matisse GPP Bridge\n\t\t01de fff9  Gimlet Baseboard\n\t1484  Starship/Matisse Internal PCIe GPP Bridge 0 to bus[E:B]\n\t1485  Starship/Matisse Reserved SPP\n\t1486  Starship/Matisse Cryptographic Coprocessor PSPCPP\n\t1487  Starship/Matisse HD Audio Controller\n\t\t1462 9c37  X570-A PRO motherboard\n\t1488  Starship Reserved SSP\n\t1489  Starship Reserved SSP\n\t148a  Starship/Matisse PCIe Dummy Function\n\t148b  Starship/Matisse Non-Transparent Bridge\n\t148c  Starship USB 3.0 Host Controller\n\t\t15d9 145c  H12SSL-i\n\t148d  Starship/Matisse Switch Upstream (PCIE SW.US)\n\t148e  Starship/Matisse Switch Downstream (PCIE SW.DS)\n\t148f  Starship Reserved SSP\n\t1490  Starship Device 24; Function 0\n\t1491  Starship Device 24; Function 1\n\t1492  Starship Device 24; Function 2\n\t1493  Starship Device 24; Function 3\n\t1494  Starship Device 24; Function 4\n\t1495  Starship Device 24; Function 5\n\t1496  Starship Device 24; Function 6\n\t1497  Starship Device 24; Function 7\n\t1498  Starship/Matisse PTDMA\n\t1499  Starship/Matisse NVMe\n\t149a  Starship PCIe GPP Bridge [1:0]\n\t149b  Starship Reserved SSP\n\t149c  Matisse USB 3.0 Host Controller\n\t\t1462 7c37  X570-A PRO motherboard\n\t149d  Vangogh CVIP\n\t149e  Genoa/Bergamo IOMMU\n\t149f  Genoa/Bergamo Dummy Host Bridge\n\t14a4  Genoa/Bergamo Root Complex\n\t14a5  Genoa/Bergamo GPP Bridge\n\t14a6  Genoa/Bergamo RCEC\n\t14a7  Genoa/Bergamo Internal PCIe GPP Bridge to Bus [D:B]\n\t14aa  Genoa/Bergamo GPP Bridge\n\t14ab  Genoa/Bergamo GPP Bridge\n\t14ac  Genoa/Bergamo Dummy Function\n\t14ad  Genoa/Bergamo Data Fabric; Function 0\n\t14ae  Genoa/Bergamo Data Fabric; Function 1\n\t14af  Genoa/Bergamo Data Fabric; Function 2\n\t14b0  Genoa/Bergamo Data Fabric; Function 3\n\t14b1  Genoa/Bergamo Data Fabric; Function 4\n\t14b2  Genoa/Bergamo Data Fabric; Function 5\n\t14b3  Genoa/Bergamo Data Fabric; Function 6\n\t14b4  Genoa/Bergamo Data Fabric; Function 7\n\t14b5  Family 17h-19h PCIe Root Complex\n\t14b6  Family 17h-19h IOMMU\n\t14b7  Family 17h-19h PCIe Dummy Host Bridge\n\t14b8  Family 17h-19h PCIe GPP Bridge\n\t14b9  Family 17h-19h Internal PCIe GPP Bridge\n\t14ba  Family 17h-19h PCIe GPP Bridge\n\t14c1  Secondary vNTB\n# Server device\n\t14ca  Genoa CCP/PSP 4.0 Device\n\t14cd  Family 19h USB4/Thunderbolt PCIe tunnel\n\t14d8  Raphael/Granite Ridge Root Complex\n\t14d9  Raphael/Granite Ridge IOMMU\n\t14da  Raphael/Granite Ridge Dummy Host Bridge\n\t14db  Raphael/Granite Ridge GPP Bridge\n\t14dc  SDXI\n\t14dd  Raphael/Granite Ridge Internal GPP Bridge to Bus [C:A]\n\t14de  Raphael/Granite Ridge PCIe Dummy Function\n\t14e0  Raphael/Granite Ridge Data Fabric; Function 0\n\t14e1  Raphael/Granite Ridge Data Fabric; Function 1\n\t14e2  Raphael/Granite Ridge Data Fabric; Function 2\n\t14e3  Raphael/Granite Ridge Data Fabric; Function 3\n\t14e4  Raphael/Granite Ridge Data Fabric; Function 4\n\t14e5  Raphael/Granite Ridge Data Fabric; Function 5\n\t14e6  Raphael/Granite Ridge Data Fabric; Function 6\n\t14e7  Raphael/Granite Ridge Data Fabric; Function 7\n\t14e8  Phoenix Root Complex\n\t14e9  Phoenix IOMMU\n\t14ea  Phoenix Dummy Host Bridge\n\t14eb  Phoenix Internal GPP Bridge to Bus [C:A]\n\t14ec  Phoenix Dummy Function\n\t14ed  Phoenix GPP Bridge\n\t14ee  Phoenix GPP Bridge\n\t14ef  Family 19h USB4/Thunderbolt PCIe tunnel\n\t14f0  Phoenix Data Fabric; Function 0\n\t14f1  Phoenix Data Fabric; Function 1\n\t14f2  Phoenix Data Fabric; Function 2\n\t14f3  Phoenix Data Fabric; Function 3\n\t14f4  Phoenix Data Fabric; Function 4\n\t14f5  Phoenix Data Fabric; Function 5\n\t14f6  Phoenix Data Fabric; Function 6\n\t14f7  Phoenix Data Fabric; Function 7\n\t1502  AMD IPU Device\n\t1507  Strix/Strix Halo Root Complex\n\t1508  Strix/Strix Halo IOMMU\n\t1509  Strix/Strix Halo Dummy Host Bridge\n\t150a  Strix/Strix Halo PCIe USB4 Bridge\n\t150b  Strix/Strix Halo GPP Bridge\n\t150c  Strix/Strix Halo Internal GPP Bridge to Bus [C:A]\n\t150d  Strix/Strix Halo PCIe Dummy Function\n\t1510  Family 14h Processor Root Complex\n\t\t174b 1001  PURE Fusion Mini\n\t1512  Family 14h Processor Root Port\n\t1513  Family 14h Processor Root Port\n\t1514  Family 14h Processor Root Port\n\t1515  Family 14h Processor Root Port\n\t1516  Family 14h Processor Root Port\n\t151c  USB4 Router 0\n\t151d  USB4 Router 1\n\t1530  Family 16h Processor Function 0\n\t1531  Family 16h Processor Function 1\n\t1532  Family 16h Processor Function 2\n\t1533  Family 16h Processor Function 3\n\t1534  Family 16h Processor Function 4\n\t1535  Family 16h Processor Function 5\n\t1536  Family 16h Processor Root Complex\n\t\t1043 8623  AM1I-A Motherboard\n\t\t1849 1536  QC5000-ITX/PH\n\t1537  Kabini/Mullins PSP-Platform Security Processor\n\t1538  Family 16h Processor Function 0\n\t1539  Kabini P2P Bridge for PCIe Ports[4:0]\n\t153a  Turin Root Complex\n\t153b  Turin IOMMU\n\t153c  Turin RCEC\n\t153d  Turin PCIe Dummy Host Bridge\n\t153e  Turin GPP Bridge\n\t\t01de fff8  Cosmo Baseboard\n\t1540  Kryptos/Cato/Garfield/Garfield+/Arlene/Pooky HT Configuration\n\t1541  Kryptos/Cato/Garfield/Garfield+/Arlene/Pooky Address Maps\n\t1542  Kryptos/Cato/Garfield/Garfield+/Arlene/Pooky DRAM Configuration\n\t1543  Kryptos/Cato/Garfield/Garfield+/Arlene/Pooky Miscellaneous Configuration\n\t1544  Kryptos/Cato/Garfield/Garfield+/Arlene/Pooky PM Configuration\n\t1545  Kryptos/Cato/Garfield/Garfield+/Arlene/Pooky NB Performance Monitor\n\t1546  Kryptos/Cato/Garfield/Garfield+/Arlene/Pooky Root Complex\n\t1547  Kryptos/Cato/Garfield/Garfield+/Arlene/Pooky IOMMU\n\t1548  Kryptos/Cato/Garfield/Garfield+/Arlene/Pooky UMI PCIe Dummy Host Bridge\n\t1549  Kryptos/Cato/Garfield/Garfield+ P2P Bridge for PCIe Port [3:0]\n\t154a  Kryptos/Cato/Garfield/Garfield+/Arlene/Pooky Audio Processor\n\t154b  Kryptos/Cato/Garfield/Garfield+/Arlene/Pooky Security Processor\n\t154d  Kryptos/Cato/Garfield/Garfield+/Arlene/Pooky/Anubis HDMI Controller\n\t154f  Anubis Audio Processor\n\t1550  Garfield+/Arlene/Pooky/Anubis SPLL Configuration\n\t1553  Arlene/Pooky P2P Bridge for PCIE (3:0)\n\t1554  Turin GPP Bridge\n\t1555  Turin Internal PCIe GPP Bridge to Bus [D:C]\n\t1556  Turin PCIe Dummy Function\n\t1557  Turin USB 3.1 xHCI\n\t1559  Turin Secondary PCIe Dummy Function\n\t155b  Anubis Root Complex\n\t155c  Anubis IOMMU\n\t155d  Anubis UMI PCIe Dummy Bridge\n\t155e  Anubis P2P Bridge for PCIe Ports [4:0]\n\t1560  Anubis Security Processor\n\t1566  Family 16h (Models 30h-3fh) Processor Root Complex\n\t1567  Mullins IOMMU\n\t156b  Family 16h (Models 30h-3fh) Host Bridge\n\t156e  Turin CCP/ASP\n\t1570  Family 15h (Models 60h-6fh) Processor Function 0\n\t1571  Family 15h (Models 60h-6fh) Processor Function 1\n\t1572  Family 15h (Models 60h-6fh) Processor Function 2\n\t1573  Family 15h (Models 60h-6fh) Processor Function 3\n\t1574  Family 15h (Models 60h-6fh) Processor Function 4\n\t1575  Family 15h (Models 60h-6fh) Processor Function 5\n\t1576  Family 15h (Models 60h-6fh) Processor Root Complex\n\t1577  Family 15h (Models 60h-6fh) I/O Memory Management Unit\n\t1578  Carrizo Platform Security Processor\n\t1579  Carrizo Audio Processor\n\t157a  Family 15h (Models 60h-6fh) Audio Controller\n\t157b  Family 15h (Models 60h-6fh) Host Bridge\n\t157c  Family 15h (Models 60h-6fh) Processor Root Port\n\t157d  Carrizo Audio Dummy Host Bridge\n\t157e  Carrizo Audio Controller\n\t1580  Family 16h (Models 30h-3fh) Processor Function 0\n\t1581  Family 16h (Models 30h-3fh) Processor Function 1\n\t1582  Family 16h (Models 30h-3fh) Processor Function 2\n\t1583  Family 16h (Models 30h-3fh) Processor Function 3\n\t1584  Family 16h (Models 30h-3fh) Processor Function 4\n\t1585  Family 16h (Models 30h-3fh) Processor Function 5\n\t1587  Strix Halo USB 3.1 xHCI\n\t1588  Strix Halo USB 3.1 xHCI\n\t1589  Strix Halo USB 3.1 xHCI\n\t158b  Strix Halo USB 3.1 xHCI\n\t158d  Strix Halo USB4 Host Router\n\t158e  Strix Halo USB4 Host Router\n\t1590  Amur/Nolan HT Configuration\n\t1591  Amur/Nolan Address Maps\n\t1592  Amur/Nolan DRAM Configuration\n\t1593  Amur/Nolan Miscellaneous Configuration\n\t1594  Amur/Nolan PM Configuration\n\t1595  Amur/Nolan NB Performance Monitor\n\t1596  Amur/Nolan Root Complex\n\t1597  Amur/Nolan IOMMU\n\t1598  Amur/Nolan Platform Security Processor\n\t1599  Amur/Nolan PCIe Dummy Host Bridge\n\t159d  Amur Function 6: Gasket\n\t15b0  Stoney HT Configuration\n\t15b1  Stoney Address Maps\n\t15b2  Stoney DRAM Configuration\n\t15b3  Stoney Miscellaneous Configuration\n\t15b4  Stoney PM Configuration\n\t15b5  Stoney NB Performance Monitor\n\t15b6  Raphael/Granite Ridge USB 3.1 xHCI\n\t15b7  Raphael/Granite Ridge USB 3.1 xHCI\n\t15b8  Raphael/Granite Ridge USB 2.0 xHCI\n\t15bc  Stoney PCIe [GFX,GPP] Bridge [4:0]\n\t15be  Stoney Audio Processor\n\t15c4  Phoenix USB4/Thunderbolt NHI controller #1\n\t15c5  Phoenix USB4/Thunderbolt NHI controller #2\n\t15c7  Phoenix CCP/PSP 3.0 Device\n\t15d0  Raven/Raven2 Root Complex\n\t\t103c 8615  Pavilion Laptop 15-cw1xxx\n\t\t1043 876b  PRIME B450M-A Motherboard\n\t\tea50 ce19  mCOM10-L1900\n\t15d1  Raven/Raven2 IOMMU\n\t\t103c 8615  Pavilion Laptop 15-cw1xxx\n\t\t1043 876b  PRIME B450M-A Motherboard\n\t\tea50 ce19  mCOM10-L1900\n\t15d2  Raven/Raven2 PCIe Dummy Host Bridge\n\t15d3  Raven/Raven2 PCIe GPP Bridge [6:0]\n\t\tea50 ce19  mCOM10-L1900\n\t15d4  FireFlight USB 3.1\n\t15d5  FireFlight USB 3.1\n\t15d6  Rembrandt USB4 XHCI controller #5\n\t15d7  Rembrandt USB4 XHCI controller #6\n\t15da  Raven/Raven2 PCIe Dummy Host Bridge\n\t15db  Raven/Raven2 Internal PCIe GPP Bridge 0 to Bus A\n\t\tea50 ce19  mCOM10-L1900\n\t15dc  Raven/Raven2 Internal PCIe GPP Bridge 0 to Bus B\n\t\tea50 ce19  mCOM10-L1900\n\t15de  Raven/Raven2/FireFlight HD Audio Controller\n\t15df  Raven/Raven2/FireFlight/Renoir/Cezanne Platform Security Processor\n\t\t1043 876b  PRIME Motherboard\n\t\t17aa 5124  ThinkPad E595\n\t\tea50 ce19  mCOM10-L1900\n\t15e0  Raven USB 3.1\n\t\t103c 8615  Pavilion Laptop 15-cw1xxx\n\t\t1043 876b  PRIME Motherboard\n\t\t17aa 5124  ThinkPad E595\n\t\tea50 ce19  mCOM10-L1900\n\t15e1  Raven USB 3.1\n\t\t103c 8615  Pavilion Laptop 15-cw1xxx\n\t\t1043 876b  PRIME Motherboard\n\t\t17aa 5124  ThinkPad E595\n\t\tea50 ce19  mCOM10-L1900\n\t15e2  Audio Coprocessor\n\t\t17aa 5124  ThinkPad E595\n\t\tea50 ce19  mCOM10-L1900\n\t15e3  Family 17h/19h/1ah HD Audio Controller\n\t\t103c 8615  Pavilion Laptop 15-cw1xxx\n\t\t103c 8b17  ProBook 445 G9/455 G9\n\t\t1043 86c7  PRIME B450M-A Motherboard\n\t\t17aa 5124  ThinkPad E595\n\t15e4  Sensor Fusion Hub\n\t15e5  Raven2 USB 3.1\n\t\tea50 ce19  mCOM10-L1900\n\t15e6  Raven/Raven2/Renoir Non-Sensor Fusion Hub KMDF driver\n\t\t1022 15e4  Raven/Raven2/Renoir Sensor Fusion Hub\n\t\tea50 ce19  mCOM10-L1900\n\t15e8  Raven/Raven2 Device 24: Function 0\n\t15e9  Raven/Raven2 Device 24: Function 1\n\t15ea  Raven/Raven2 Device 24: Function 2\n\t15eb  Raven/Raven2 Device 24: Function 3\n\t15ec  Raven/Raven2 Device 24: Function 4\n\t15ed  Raven/Raven2 Device 24: Function 5\n\t15ee  Raven/Raven2 Device 24: Function 6\n\t15ef  Raven/Raven2 Device 24: Function 7\n\t15f0  FireFlight Device 24: Function 0\n\t15f1  FireFlight Device 24: Function 1\n\t15f2  FireFlight Device 24: Function 2\n\t15f3  FireFlight Device 24: Function 3\n\t15f4  FireFlight Device 24: Function 4\n\t15f5  FireFlight Device 24: Function 5\n\t15f6  FireFlight Device 24: Function 6\n\t15f7  FireFlight Device 24: Function 7\n\t15f8  FireFlight Root Complex\n\t15f9  FireFlight IOMMU\n\t15fa  FireFlight PCIe Dummy Host Bridge\n\t15fb  FireFlight PCIe GPP Bride 3:0\n\t15fc  FireFlight PCIe Dummy Host Bridge\n\t15fd  FireFlight Internal PCIe GPP Bridge 0 to Bus A\n\t15fe  FireFlight Internal PCIe GPP Bridge 0 to Bus B\n\t15ff  FireFlight Bus A; Device 0: Function 0: Internal GPU\n\t1600  Family 15h Processor Function 0\n\t1601  Family 15h Processor Function 1\n\t1602  Family 15h Processor Function 2\n\t1603  Family 15h Processor Function 3\n\t1604  Family 15h Processor Function 4\n\t1605  Family 15h Processor Function 5\n\t1606  Arden Security Processor\n\t1608  Arden Device 18h: Function 0\n\t1609  Arden Device 18h: Function 1\n\t160a  Arden Device 18h: Function 2\n\t160b  Arden Device 18h: Function 3\n\t160c  Arden Device 18h: Function 4\n\t160d  Arden Device 18h: Function 5\n\t160e  Arden Device 18h: Function 6\n\t160f  Arden Device 18h: Function 7\n\t161a  Rembrandt USB4 XHCI controller #1\n\t161b  Rembrandt USB4 XHCI controller #2\n\t161c  Rembrandt USB4 XHCI controller #7\n\t161d  Rembrandt USB4 XHCI controller #3\n\t161e  Rembrandt USB4 XHCI controller #4\n\t161f  Rembrandt USB4 XHCI controller #8\n\t1620  Anubis HT Configuration\n\t1621  Anubis Address Maps\n\t1622  Anubis DRAM Configuration\n\t1623  Anubis Miscellaneous Configuration\n\t1624  Anubis PM Configuration\n\t1625  Anubis NB Performance Monitor\n\t1626  Arden Root Complex\n\t1627  Arden IOMMU\n\t1628  Arden PCIe Dummy Host Bridge\n\t1629  Arden PCIe GPP Bridge\n\t162a  Arden Internal PCIe GPP Bridge 0 to bus X\n\t162b  Arden PCIe Non-Transparent Bridge\n\t162c  VanGogh USB2\n\t162e  Rembrandt USB4/Thunderbolt NHI controller #1\n\t162f  Rembrandt USB4/Thunderbolt NHI controller #2\n\t1630  Renoir/Cezanne Root Complex\n\t1631  Renoir/Cezanne IOMMU\n\t1632  Renoir PCIe Dummy Host Bridge\n\t1633  Renoir PCIe GPP Bridge\n\t1634  Renoir/Cezanne PCIe GPP Bridge\n\t1635  Renoir Internal PCIe GPP Bridge to Bus\n\t1637  Renoir HD Audio Controller\n\t1639  Renoir/Cezanne USB 3.1\n\t163a  VanGogh USB0\n\t163b  VanGogh USB1\n\t163c  VanGogh SecUSB\n\t163d  VanGogh SecureFunction\n\t163e  VanGogh HSP\n\t1641  Renoir 10GbE Controller Port 0 (XGBE0/1)\n\t1642  Renoir WLAN\n\t1643  Renoir BT\n\t1644  Renoir I2S\n\t1645  VanGogh Root Complex\n\t1646  VanGogh IOMMU\n\t1647  VanGogh PCIe GPP Bridge\n\t1648  VanGogh Internal PCIe GPP Bridge to Bus\n\t1649  Family 19h PSP/CCP\n\t164a  Sensor Fusion Hub\n\t164b  Non-Sensor Fusion Hub\n\t164f  Milan IOMMU\n\t1650  Milan Data Fabric; Function 0\n\t1651  Milan Data Fabric; Function 1\n\t1652  Milan Data Fabric; Function 2\n\t1653  Milan Data Fabric; Function 3\n\t1654  Milan Data Fabric; Function 4\n\t1655  Milan Data Fabric; Function 5\n\t1656  Milan Data Fabric; Function 6\n\t1657  Milan Data Fabric; Function 7\n\t1660  VanGogh Data Fabric; Function 0\n\t1661  VanGogh Data Fabric; Function 1\n\t1662  VanGogh Data Fabric; Function 2\n\t1663  VanGogh Data Fabric; Function 3\n\t1664  VanGogh Data Fabric; Function 4\n\t1665  VanGogh Data Fabric; Function 5\n\t1666  VanGogh Data Fabric; Function 6\n\t1667  VanGogh Data Fabric; Function 7\n\t1668  Pink Sardine USB4/Thunderbolt NHI controller #1\n\t1669  Pink Sardine USB4/Thunderbolt NHI controller #2\n\t166a  Cezanne Data Fabric; Function 0\n\t166b  Cezanne Data Fabric; Function 1\n\t166c  Cezanne Data Fabric; Function 2\n\t166d  Cezanne Data Fabric; Function 3\n\t166e  Cezanne Data Fabric; Function 4\n\t166f  Cezanne Data Fabric; Function 5\n\t1670  Cezanne Data Fabric; Function 6\n\t1671  Cezanne Data Fabric; Function 7\n\t1679  Rembrandt Data Fabric: Device 18h; Function 0\n\t167a  Rembrandt Data Fabric: Device 18h; Function 1\n\t167b  Rembrandt Data Fabric: Device 18h; Function 2\n\t167c  Rembrandt Data Fabric: Device 18h; Function 3\n\t167d  Rembrandt Data Fabric: Device 18h; Function 4\n\t167e  Rembrandt Data Fabric: Device 18h; Function 5\n\t167f  Rembrandt Data Fabric: Device 18h; Function 6\n\t1680  Rembrandt Data Fabric: Device 18h; Function 7\n\t16f8  Strix Data Fabric; Function 0\n\t16f9  Strix Data Fabric; Function 1\n\t16fa  Strix Data Fabric; Function 2\n\t16fb  Strix Data Fabric; Function 3\n\t16fc  Strix Data Fabric; Function 4\n\t16fd  Strix Data Fabric; Function 5\n\t16fe  Strix Data Fabric; Function 6\n\t16ff  Strix Data Fabric; Function 7\n\t1700  Family 12h/14h Processor Function 0\n\t1701  Family 12h/14h Processor Function 1\n\t1702  Family 12h/14h Processor Function 2\n\t1703  Family 12h/14h Processor Function 3\n\t1704  Family 12h/14h Processor Function 4\n\t1705  Family 12h Processor Root Complex\n\t1706  Llano P2P Bridge to external GPU\n\t1707  Family 12h Processor Root Port\n\t1708  Family 12h Processor Root Port\n\t1709  Family 12h Processor Root Port\n\t170a  Family 12h Processor Root Port\n\t170b  Family 12h Processor Root Port\n\t170c  Family 12h Processor Root Port\n\t170d  Family 12h Processor Root Port\n\t1716  Family 12h/14h Processor Function 5\n\t1718  Family 12h/14h Processor Function 6\n\t1719  Family 12h/14h Processor Function 7\n\t17e0  Strix/Krackan/Strix Halo CCP/ASP\n\t17f0  Strix/Krackan/Strix Halo Neural Processing Unit\n\t2000  79C97x [PCnet32 LANCE]\n\t\t1014 2000  NetFinity 10/100 Fast Ethernet\n\t\t1022 2000  PCnet - Fast 79C971\n\t\t103c 104c  Ethernet with LAN remote power Adapter\n\t\t103c 1064  Ethernet with LAN remote power Adapter\n\t\t103c 1065  Ethernet with LAN remote power Adapter\n\t\t103c 106c  Ethernet with LAN remote power Adapter\n\t\t103c 106e  Ethernet with LAN remote power Adapter\n\t\t103c 10ea  Ethernet with LAN remote power Adapter\n\t\t1113 1220  EN1220 10/100 Fast Ethernet\n\t\t1259 2450  AT-2450 10/100 Fast Ethernet\n\t\t1259 2454  AT-2450v4 10Mb Ethernet Adapter\n\t\t1259 2700  AT-2700TX 10/100 Fast Ethernet\n\t\t1259 2701  AT-2700FX 100Mb Ethernet\n\t\t1259 2702  AT-2700FTX (AM79C976KD [PCnet-PRO] chipset) 10/100 Mb Fiber/Copper Fast Ethernet\n\t\t1259 2703  AT-2701FX\n\t\t1259 2704  AT-2701FTX 10/100 Mb Fiber/Copper Fast Ethernet\n\t\t4c53 1000  CC7/CR7/CP7/VC7/VP7/VR7 mainboard\n\t\t4c53 1010  CP5/CR6 mainboard\n\t\t4c53 1020  VR6 mainboard\n\t\t4c53 1030  PC5 mainboard\n\t\t4c53 1040  CL7 mainboard\n\t\t4c53 1060  PC7 mainboard\n# Via AMD's own technical reference on their Am79C978 NICs; https://www.amd.com/system/files/TechDocs/22206.pdf\n\t2001  Am79C978 PCnet Home (HomePNA) 1/10 PCI Ethernet Adapter [Am79C971 PHY]\n\t\t1092 0a78  Multimedia Home Network Adapter\n\t\t1668 0299  ActionLink Home Network Adapter\n\t2003  Am 1771 MBW [Alchemy]\n\t2020  AM53/79C974 [PC-SCSI]\n\t\t1af4 1100  QEMU Virtual Machine\n\t2040  79c974\n\t2080  CS5536 [Geode companion] Host Bridge\n\t2081  Geode LX Video\n\t2082  Geode LX AES Security Block\n\t208f  CS5536 GeodeLink PCI South Bridge\n\t2090  CS5536 [Geode companion] ISA\n\t2091  CS5536 [Geode companion] FLASH\n\t2093  CS5536 [Geode companion] Audio\n\t2094  CS5536 [Geode companion] OHC\n\t2095  CS5536 [Geode companion] EHC\n\t2096  CS5536 [Geode companion] UDC\n\t2097  CS5536 [Geode companion] UOC\n\t209a  CS5536 [Geode companion] IDE\n\t2625  Am79C973 [Lance/PCI PCNet/32]\n\t2627  Am79C975 [Lance/PCI PCNet/32]\n\t3000  ELanSC520 Microcontroller\n\t43a0  Hudson PCI to PCI bridge (PCIE port 0)\n\t43a1  Hudson PCI to PCI bridge (PCIE port 1)\n\t43a2  Hudson PCI to PCI bridge (PCIE port 2)\n\t43a3  Hudson PCI to PCI bridge (PCIE port 3)\n\t43b0  X370 Series Chipset PCIe Upstream Port\n\t\t1849 43c6  Fatal1ty X370 Professional Gaming\n\t43b1  X399 Series Chipset PCIe Bridge\n\t43b4  300 Series Chipset PCIe Port\n\t43b5  X370 Series Chipset SATA Controller\n\t\t1849 43c8  Fatal1ty X370 Professional Gaming\n\t43b6  X399 Series Chipset SATA Controller\n\t43b7  300 Series Chipset SATA Controller\n\t43b8  A320 Chipset SATA Controller [AHCI mode]\n\t43b9  X370 Series Chipset USB 3.1 xHCI Controller\n\t\t1849 43d0  Fatal1ty X370 Professional Gaming\n\t43ba  X399 Series Chipset USB 3.1 xHCI Controller\n\t43bb  300 Series Chipset USB 3.1 xHCI Controller\n\t43bc  A320 USB 3.1 XHCI Host Controller\n\t43c6  400 Series Chipset PCIe Bridge\n\t43c7  400 Series Chipset PCIe Port\n\t43c8  400 Series Chipset SATA Controller\n\t43d5  400 Series Chipset USB 3.1 xHCI Compliant Host Controller\n\t43e9  500 Series Chipset Switch Upstream Port\n\t43ea  500 Series Chipset Switch Downstream Port\n\t43eb  500 Series Chipset SATA Controller\n# or ASM106X Serial ATA Controller\n\t\t1b21 1062  ASM1062 Serial ATA Controller\n\t43ec  A520 Series Chipset USB 3.1 XHCI Controller\n\t43ee  500 Series Chipset USB 3.1 XHCI Controller\n# maybe\n\t\t1b21 1142  ASM1042A USB 3.0 Host Controller\n\t43f4  600 Series Chipset PCIe Switch Upstream Port\n\t43f5  600 Series Chipset PCIe Switch Downstream Port\n\t43f6  600 Series Chipset SATA Controller\n\t43f7  600 Series Chipset USB 3.2 Controller\n\t43fc  800 Series Chipset USB 3.x XHCI Controller\n\t43fd  800 Series Chipset USB 3.x XHCI Controller\n\t57a3  Matisse PCIe GPP Bridge\n\t57a4  Matisse PCIe GPP Bridge\n\t57ad  Matisse Switch Upstream\n\t7006  AMD-751 [Irongate] System Controller\n\t7007  AMD-751 [Irongate] AGP Bridge\n\t700a  AMD-IGR4 AGP Host to PCI Bridge\n\t700b  AMD-IGR4 PCI to PCI Bridge\n\t700c  AMD-760 MP [IGD4-2P] System Controller\n\t700d  AMD-760 MP [IGD4-2P] AGP Bridge\n\t700e  AMD-760 [IGD4-1P] System Controller\n\t700f  AMD-760 [IGD4-1P] AGP Bridge\n\t7400  AMD-755 [Cobra] ISA\n\t7401  AMD-755 [Cobra] IDE\n\t7403  AMD-755 [Cobra] ACPI\n\t7404  AMD-755 [Cobra] USB\n\t7408  AMD-756 [Viper] ISA\n\t7409  AMD-756 [Viper] IDE\n\t740b  AMD-756 [Viper] ACPI\n\t740c  AMD-756 [Viper] USB\n\t7410  AMD-766 [ViperPlus] ISA\n\t7411  AMD-766 [ViperPlus] IDE\n\t7413  AMD-766 [ViperPlus] ACPI\n\t7414  AMD-766 [ViperPlus] USB\n\t7440  AMD-768 [Opus] ISA\n\t\t1043 8044  A7M-D Mainboard\n\t7441  AMD-768 [Opus] IDE\n\t7443  AMD-768 [Opus] ACPI\n\t\t1043 8044  A7M-D Mainboard\n\t7445  AMD-768 [Opus] Audio\n\t7446  AMD-768 [Opus] MC97 Modem\n\t7448  AMD-768 [Opus] PCI\n\t7449  AMD-768 [Opus] USB\n\t7450  AMD-8131 PCI-X Bridge\n\t7451  AMD-8131 PCI-X IOAPIC\n\t7454  AMD-8151 System Controller\n\t7455  AMD-8151 AGP Bridge\n\t7458  AMD-8132 PCI-X Bridge\n\t7459  AMD-8132 PCI-X IOAPIC\n\t7460  AMD-8111 PCI\n\t\t161f 3017  HDAMB\n\t7461  AMD-8111 USB\n\t7462  AMD-8111 Ethernet\n\t7463  AMD-8111 USB EHCI\n\t7464  AMD-8111 USB OHCI\n\t\t161f 3017  HDAMB\n\t7468  AMD-8111 LPC\n\t\t161f 3017  HDAMB\n\t7469  AMD-8111 IDE\n\t\t1022 2b80  AMD-8111 IDE [Quartet]\n\t\t161f 3017  HDAMB\n\t746a  AMD-8111 SMBus 2.0\n\t746b  AMD-8111 ACPI\n\t\t161f 3017  HDAMB\n\t746d  AMD-8111 AC97 Audio\n\t\t161f 3017  HDAMB\n\t746e  AMD-8111 MC97 Modem\n\t756b  AMD-8111 ACPI\n\t7800  FCH SATA Controller [IDE mode]\n\t7801  FCH SATA Controller [AHCI mode]\n\t\t103c 168b  ProBook 4535s Notebook\n\t\t103c 194e  ProBook 455 G1 Notebook\n\t\t1043 8623  AM1I-A Motherboard\n\t\t17aa 3988  Z50-75\n\t\t1849 7801  QC5000-ITX/PH\n\t7802  FCH SATA Controller [RAID mode]\n\t7803  FCH SATA Controller [RAID mode]\n\t7804  FCH SATA Controller [AHCI mode]\n\t\t103c 1985  Pavilion 17-e163sg Notebook PC\n\t7805  FCH SATA Controller [RAID mode]\n\t7806  FCH SD Flash Controller\n\t7807  FCH USB OHCI Controller\n\t\t103c 194e  ProBook 455 G1 Notebook\n\t\t103c 1985  Pavilion 17-e163sg Notebook PC\n\t\t1043 8623  AM1I-A Motherboard\n\t\t17aa 3988  Z50-75\n\t\t1849 7807  QC5000-ITX/PH\n\t7808  FCH USB EHCI Controller\n\t\t103c 194e  ProBook 455 G1 Notebook\n\t\t103c 1985  Pavilion 17-e163sg Notebook PC\n\t\t1043 8623  AM1I-A Motherboard\n\t\t17aa 3988  Z50-75\n\t\t1849 7808  QC5000-ITX/PH\n\t7809  FCH USB OHCI Controller\n\t\t103c 194e  ProBook 455 G1 Notebook\n\t\t17aa 3988  Z50-75\n\t780a  Kabini/Mullins SATA Raid/AHCI Mode (DotHill driver)\n\t780b  FCH SMBus Controller\n\t\t103c 194e  ProBook 455 G1 Notebook\n\t\t103c 1985  Pavilion 17-e163sg Notebook PC\n\t\t1043 8623  AM1I-A Motherboard\n\t\t17aa 3988  Z50-75\n\t\t1849 780b  QC5000-ITX/PH\n\t780c  FCH IDE Controller\n\t780d  FCH Azalia Controller\n\t\t103c 194e  ProBook 455 G1 Notebook\n\t\t103c 1985  Pavilion 17-e163sg Notebook PC\n\t\t1043 8444  F2A85-M Series\n\t\t1043 8576  AM1I-A Motherboard\n\t\t17aa 3988  Z50-75\n\t\t1849 8892  QC5000-ITX/PH\n\t780e  FCH LPC Bridge\n\t\t103c 194e  ProBook 455 G1 Notebook\n\t\t103c 1985  Pavilion 17-e163sg Notebook PC\n\t\t1043 8623  AM1I-A Motherboard\n\t\t17aa 3988  Z50-75\n\t\t1849 780e  QC5000-ITX/PH\n\t780f  FCH PCI Bridge\n\t7812  FCH USB XHCI Controller\n\t7813  FCH SD Flash Controller\n\t7814  FCH USB XHCI Controller\n\t\t103c 194e  ProBook 455 G1 Notebook\n\t\t103c 1985  Pavilion 17-e163sg Notebook PC\n\t\t1043 8623  AM1I-A Motherboard\n\t\t17aa 3988  Z50-75\n\t\t1849 7814  QC5000-ITX/PH\n\t7900  FCH SATA Controller [IDE mode]\n\t7901  FCH SATA Controller [AHCI mode]\n\t\t103c 8615  Pavilion Laptop 15-cw1xxx\n\t\t1043 876b  PRIME Motherboard\n\t\t1462 7c37  X570-A PRO motherboard\n\t\t15d9 7901  H12SSL-i\n\t\tea50 ce19  mCOM10-L1900\n\t7902  FCH SATA Controller [RAID mode]\n\t7903  FCH SATA Controller [RAID mode]\n\t7904  FCH SATA Controller [AHCI mode]\n\t7906  FCH SD Flash Controller\n\t7908  FCH USB EHCI Controller\n\t790b  FCH SMBus Controller\n\t\t103c 8615  Pavilion Laptop 15-cw1xxx\n\t\t103c 8b17  ProBook 445 G9/455 G9\n\t\t1043 876b  PRIME Motherboard\n\t\t1462 7c37  X570-A PRO motherboard\n\t\t15d9 790b  H12SSL-i\n\t\t17aa 5124  ThinkPad E595\n\t\tea50 ce19  mCOM10-L1900\n\t790e  FCH LPC Bridge\n\t\t103c 8615  Pavilion Laptop 15-cw1xxx\n\t\t1043 876b  PRIME B450M-A Motherboard\n\t\t1462 7c37  X570-A PRO motherboard\n\t\t15d9 790e  H12SSL-i\n\t\t17aa 5124  ThinkPad E595\n\t\tea50 ce19  mCOM10-L1900\n\t790f  FCH PCI Bridge\n\t7914  FCH USB XHCI Controller\n\t9600  RS780 Host Bridge\n\t\t1043 82ee  M378A-CM Motherboard\n\t\t1043 82f1  M3A78-EH Motherboard\n\t9601  RS880 Host Bridge\n\t\t1019 2120  A785GM-M\n\t\t1028 0433  Optiplex 580\n\t\t103c 1609  ProLiant MicroServer N36L\n\t\t1043 83a2  M4A785-M Mainboard\n\t\t1043 843e  M5A88-V EVO\n\t9602  RS780/RS880 PCI to PCI bridge (int gfx)\n\t9603  RS780 PCI to PCI bridge (ext gfx port 0)\n\t\t1028 0433  Optiplex 580\n\t\t103c 1609  ProLiant MicroServer N36L\n\t9604  RS780/RS880 PCI to PCI bridge (PCIE port 0)\n\t\t1028 0433  OptiPlex 580\n\t9605  RS780/RS880 PCI to PCI bridge (PCIE port 1)\n\t9606  RS780 PCI to PCI bridge (PCIE port 2)\n\t\t103c 1609  ProLiant MicroServer N36L\n\t9607  RS780/RS880 PCI to PCI bridge (PCIE port 3)\n\t9608  RS780/RS880 PCI to PCI bridge (PCIE port 4)\n\t\t1028 0433  OptiPlex 580\n\t9609  RS780/RS880 PCI to PCI bridge (PCIE port 5)\n\t960a  RS780 PCI to PCI bridge (NB-SB link)\n\t960b  RS780 PCI to PCI bridge (ext gfx port 1)\n# Takes over NVMe PCI ID when RAID is enabled\n\tb000  RAID Bottom Device\n1023  Trident Microsystems\n\t0194  82C194\n\t2000  4DWave DX\n\t2001  4DWave NX\n\t\t122d 1400  Trident PCI288-Q3DII (NX)\n\t2100  CyberBlade XP4m32\n\t2200  XGI Volari XP5\n\t8400  CyberBlade/i7\n\t\t1023 8400  CyberBlade i7 AGP\n\t8420  CyberBlade/i7d\n\t\t0e11 b15a  CyberBlade i7 AGP\n\t8500  CyberBlade/i1\n\t8520  CyberBlade i1\n\t\t0e11 b16e  CyberBlade i1 AGP\n\t\t1023 8520  CyberBlade i1 AGP\n\t8620  CyberBlade/i1\n\t\t1014 0502  ThinkPad R30/T30\n\t\t1014 1025  Travelmate 352TE\n\t8820  CyberBlade XPAi1\n\t9320  TGUI 9320\n\t9350  GUI Accelerator\n\t9360  Flat panel GUI Accelerator\n\t9382  Cyber 9382 [Reference design]\n\t9383  Cyber 9383 [Reference design]\n\t9385  Cyber 9385 [Reference design]\n\t9386  Cyber 9386\n\t9388  Cyber 9388\n\t9397  Cyber 9397\n\t939a  Cyber 9397DVD\n\t9420  TGUI 9420\n\t9430  TGUI 9430\n\t9440  TGUI 9440\n\t9460  TGUI 9460\n\t9470  TGUI 9470\n\t9520  Cyber 9520\n\t9525  Cyber 9525\n\t9540  Cyber 9540\n\t9660  TGUI 9660/938x/968x\n\t9680  TGUI 9680\n\t9682  TGUI 9682\n\t9683  TGUI 9683\n\t9685  ProVIDIA 9685\n\t9750  3DImage 9750\n\t\t1014 9750  3DImage 9750\n\t\t1023 9750  3DImage 9750\n\t9753  TGUI 9753\n\t9754  TGUI 9754\n\t9759  TGUI 975\n\t9783  TGUI 9783\n\t9785  TGUI 9785\n\t9850  3DImage 9850\n\t9880  Blade 3D PCI/AGP\n\t\t1023 9880  Blade 3D\n\t9910  CyberBlade/XP\n\t9930  CyberBlade/XPm\n\t9960  CyberBlade XP2\n1024  Beijing Dajia Internet Information Technology Co.\n\t0101  StreamLake 200 AI-VPU\n\t\t1024 0201  SL200-NP\n\t\t1024 0301  SL200-P\n1025  Acer Incorporated [ALI]\n\t1435  M1435\n\t1445  M1445\n\t1449  M1449\n\t1451  M1451\n\t1461  M1461\n\t1489  M1489\n\t1511  M1511\n\t1512  ALI M1512 Aladdin\n\t1513  M1513\n\t1521  ALI M1521 Aladdin III CPU Bridge\n\t\t10b9 1521  ALI M1521 Aladdin III CPU Bridge\n\t1523  ALI M1523 ISA Bridge\n\t\t10b9 1523  ALI M1523 ISA Bridge\n\t1531  M1531 Northbridge [Aladdin IV/IV+]\n\t1533  M1533 PCI-to-ISA Bridge\n\t\t10b9 1533  ALI M1533 Aladdin IV/V ISA South Bridge\n\t1535  M1535 PCI Bridge + Super I/O + FIR\n\t1541  M1541 Northbridge [Aladdin V]\n\t\t10b9 1541  ALI M1541 Aladdin V/V+ AGP+PCI North Bridge\n\t1542  M1542 Northbridge [Aladdin V]\n\t1543  M1543 PCI-to-ISA Bridge + Super I/O + FIR\n\t1561  M1561 Northbridge [Aladdin 7]\n\t1621  M1621 Northbridge [Aladdin-Pro II]\n\t1631  M1631 Northbridge+3D Graphics [Aladdin TNT2]\n\t1641  M1641 Northbridge [Aladdin-Pro IV]\n\t1647  M1647 [MaGiK1] PCI North Bridge\n\t1671  M1671 Northbridge [ALADDiN-P4]\n\t1672  Northbridge [CyberALADDiN-P4]\n\t3141  M3141\n\t3143  M3143\n\t3145  M3145\n\t3147  M3147\n\t3149  M3149\n\t3151  M3151\n\t3307  M3307 MPEG-I Video Controller\n\t3309  M3309 MPEG-II Video w/ Software Audio Decoder\n\t3321  M3321 MPEG-II Audio/Video Decoder\n\t5212  M4803\n\t5215  ALI PCI EIDE Controller\n\t5217  M5217H\n\t5219  M5219\n\t5225  M5225\n\t5229  M5229\n\t5235  M5235\n\t5237  OHCI USB Controller\n\t5239  EHCI USB Controller\n\t5240  EIDE Controller\n\t5241  PCMCIA Bridge\n\t5242  General Purpose Controller\n\t5243  PCI to PCI Bridge Controller\n\t5244  Floppy Disk Controller\n\t5247  M1541 PCI to PCI Bridge\n\t5251  M5251 P1394 Controller\n\t5427  PCI to AGP Bridge\n\t5451  M5451 PCI AC-Link Controller Audio Device\n\t5453  M5453 PCI AC-Link Controller Modem Device\n\t7101  M7101 PCI PMU Power Management Controller\n\t\t10b9 7101  M7101 PCI PMU Power Management Controller\n# should be 1022:9602\n\t9602  AMD RS780/RS880 PCI to PCI bridge (int gfx)\n1028  Dell\n\t0001  PowerEdge Expandable RAID Controller 2/Si\n\t\t1028 0001  PowerEdge 2400\n\t0002  PowerEdge Expandable RAID Controller 3/Di\n\t\t1028 0002  PowerEdge 4400\n\t\t1028 00d1  PERC 3/DiV [Viper]\n\t\t1028 00d9  PERC 3/DiL [Lexus]\n\t0003  PowerEdge Expandable RAID Controller 3/Si\n\t\t1028 0003  PowerEdge 2450\n# PowerEdge Codename Iguana\n\t0004  PowerEdge Expandable RAID Controller 3/Di [Iguana]\n\t\t1028 0004  PERC 3/DiF [Iguana]\n\t0006  PowerEdge Expandable RAID Controller 3/Di\n\t0007  Remote Access Card III\n\t0008  Remote Access Card III\n\t0009  Remote Access Card III: BMC/SMIC device not present\n\t000a  PowerEdge Expandable RAID Controller 3/Di\n\t\t1028 0106  PERC 3/DiJ [Jaguar]\n\t\t1028 011b  PERC 3/DiD [Dagger]\n\t\t1028 0121  PERC 3/DiB [Boxster]\n\t000c  Embedded Remote Access or ERA/O\n\t000d  Embedded Remote Access: BMC/SMIC device\n\t000e  PowerEdge Expandable RAID controller 4/Di\n\t000f  PowerEdge Expandable RAID controller 4/Di\n\t\t1028 014a  PowerEdge 1750\n\t0010  Remote Access Card 4\n\t0011  Remote Access Card 4 Daughter Card\n\t0012  Remote Access Card 4 Daughter Card Virtual UART\n\t0013  PowerEdge Expandable RAID controller 4\n\t\t1028 016c  PowerEdge Expandable RAID Controller 4e/Si\n\t\t1028 016d  PowerEdge Expandable RAID Controller 4e/Di\n\t\t1028 016e  PowerEdge Expandable RAID Controller 4e/Di\n\t\t1028 016f  PowerEdge Expandable RAID Controller 4e/Di\n\t\t1028 0170  PowerEdge Expandable RAID Controller 4e/Di\n\t0014  Remote Access Card 4 Daughter Card SMIC interface\n\t0015  PowerEdge Expandable RAID controller 5\n\t\t1028 1f01  PERC 5/E Adapter RAID Controller\n\t\t1028 1f02  PERC 5/i Adapter RAID Controller\n\t\t1028 1f03  PERC 5/i Integrated RAID Controller\n\t0016  PowerEdge Expandable RAID controller S300\n\t\t1028 1f24  PERC S300 Controller\n# NV-RAM Adapter used in Dell DR appliances\n\t0073  NV-RAM Adapter\n\t0c46  PERC S160 RAID controller\n\t1028  PCIe Bridge riser\n\t2600  ENT NVMe RT1\n\t\t1028 215e  ENT NVMe RT1 RI 3.84TB\n\t\t1028 215f  ENT NVMe RT1 RI 7.68TB\n\t\t1028 2160  ENT NVMe RT1 FIPS RI 3.84TB\n\t\t1028 2161  ENT NVMe RT1 FIPS RI 7.68TB\n\t9602  RS780/RS880 PCI to PCI bridge (int gfx)\n1029  Siemens Nixdorf IS\n102a  LSI Logic\n\t0000  HYDRA\n\t0010  ASPEN\n\t001f  AHA-2940U2/U2W /7890/7891 SCSI Controllers\n\t\t9005 000f  2940U2W SCSI Controller\n\t\t9005 0106  2940U2W SCSI Controller\n\t\t9005 a180  2940U2W SCSI Controller\n\t00c5  AIC-7899 U160/m SCSI Controller\n\t\t1028 00c5  PowerEdge 2550/2650/4600\n\t00cf  AIC-7899P U160/m\n\t\t1028 0106  PowerEdge 4600\n\t\t1028 0121  PowerEdge 2650\n102b  Matrox Electronics Systems Ltd.\n# DJ: I've a suspicion that 0010 is a duplicate of 0d10.\n\t0010  MGA-I [Impression?]\n\t0100  MGA 1064SG [Mystique]\n\t0518  MGA-II [Athena]\n\t0519  MGA 2064W [Millennium]\n\t051a  MGA 1064SG [Mystique]\n\t\t102b 0100  MGA-1064SG Mystique\n\t\t102b 051a  MGA-1164SG Mystique 220\n\t\t102b 1100  MGA-1084SG Mystique\n\t\t102b 1200  MGA-1084SG Mystique\n\t\t1100 102b  MGA-1084SG Mystique\n\t\t110a 0018  Scenic Pro C5 (D1025)\n\t051b  MGA 2164W [Millennium II]\n\t\t102b 051b  MGA-2164W Millennium II\n\t\t102b 1100  MGA-2164W Millennium II\n\t\t102b 1200  MGA-2164W Millennium II\n\t\t102b 2100  MGA-2164W Millennium II\n\t051e  MGA 1064SG [Mystique] AGP\n\t051f  MGA 2164W [Millennium II] AGP\n\t\t102b 2100  MGA-2164WA [Millennium II A]\n\t0520  MGA G200\n\t\t102b dbc2  G200 Multi-Monitor\n\t\t102b dbc8  G200 Multi-Monitor\n\t\t102b dbe2  G200 Multi-Monitor\n\t\t102b dbe8  G200 Multi-Monitor\n\t\t102b ff03  Millennium G200 SD\n\t\t102b ff04  Marvel G200\n\t0521  MGA G200 AGP\n\t\t1014 ff03  Millennium G200 AGP\n\t\t102b 48e9  Mystique G200 AGP\n\t\t102b 48f8  Millennium G200 SD AGP\n\t\t102b 4a60  Millennium G200 LE AGP\n\t\t102b 4a64  Millennium G200 AGP\n\t\t102b c93c  Millennium G200 AGP\n\t\t102b c9b0  Millennium G200 AGP\n\t\t102b c9bc  Millennium G200 AGP\n\t\t102b ca60  Millennium G250 LE AGP\n\t\t102b ca6c  Millennium G250 AGP\n\t\t102b dbbc  Millennium G200 AGP\n\t\t102b dbc2  Millennium G200 MMS (Dual G200)\n\t\t102b dbc3  G200 Multi-Monitor\n\t\t102b dbc8  Millennium G200 MMS (Dual G200)\n\t\t102b dbd2  G200 Multi-Monitor\n\t\t102b dbd3  G200 Multi-Monitor\n\t\t102b dbd4  G200 Multi-Monitor\n\t\t102b dbd5  G200 Multi-Monitor\n\t\t102b dbd8  G200 Multi-Monitor\n\t\t102b dbd9  G200 Multi-Monitor\n\t\t102b dbe2  Millennium G200 MMS (Quad G200)\n\t\t102b dbe3  G200 Multi-Monitor\n\t\t102b dbe8  Millennium G200 MMS (Quad G200)\n\t\t102b dbf2  G200 Multi-Monitor\n\t\t102b dbf3  G200 Multi-Monitor\n\t\t102b dbf4  G200 Multi-Monitor\n\t\t102b dbf5  G200 Multi-Monitor\n\t\t102b dbf8  G200 Multi-Monitor\n\t\t102b dbf9  G200 Multi-Monitor\n\t\t102b f806  Mystique G200 Video AGP\n\t\t102b ff00  MGA-G200 AGP\n\t\t102b ff02  Mystique G200 AGP\n\t\t102b ff03  Millennium G200A AGP\n\t\t102b ff04  Marvel G200 AGP\n\t\t110a 0032  MGA-G200 AGP\n\t0522  MGA G200e [Pilot] ServerEngines (SEP1)\n\t\t103c 31fa  ProLiant DL140 G3\n\t0525  MGA G400/G450\n\t\t0e11 b16f  MGA-G400 AGP\n\t\t102b 0328  Millennium G400 16Mb SDRAM\n\t\t102b 0338  Millennium G400 16Mb SDRAM\n\t\t102b 0378  Millennium G400 32Mb SDRAM\n\t\t102b 0541  Millennium G450 Dual Head\n\t\t102b 0542  Millennium G450 Dual Head LX\n\t\t102b 0543  Millennium G450 Single Head LX\n\t\t102b 0641  Millennium G450 32Mb SDRAM Dual Head\n\t\t102b 0642  Millennium G450 32Mb SDRAM Dual Head LX\n\t\t102b 0643  Millennium G450 32Mb SDRAM Single Head LX\n\t\t102b 07c0  Millennium G450 Dual Head LE\n\t\t102b 07c1  Millennium G450 SDR Dual Head LE\n\t\t102b 0d41  Millennium G450 Dual Head PCI\n\t\t102b 0d42  Millennium G450 Dual Head LX PCI\n\t\t102b 0d43  Millennium G450 32Mb Dual Head PCI\n\t\t102b 0e00  Marvel G450 eTV\n\t\t102b 0e01  Marvel G450 eTV\n\t\t102b 0e02  Marvel G450 eTV\n\t\t102b 0e03  Marvel G450 eTV\n\t\t102b 0f80  Millennium G450 Low Profile\n\t\t102b 0f81  Millennium G450 Low Profile\n\t\t102b 0f82  Millennium G450 Low Profile DVI\n\t\t102b 0f83  Millennium G450 Low Profile DVI\n\t\t102b 19d8  Millennium G400 16Mb SGRAM\n\t\t102b 19f8  Millennium G400 32Mb SGRAM\n\t\t102b 2159  Millennium G400 Dual Head 16Mb\n\t\t102b 2179  Millennium G400 MAX/Dual Head 32Mb\n\t\t102b 217d  Millennium G400 Dual Head Max\n\t\t102b 23c0  Millennium G450\n\t\t102b 23c1  Millennium G450\n\t\t102b 23c2  Millennium G450 DVI\n\t\t102b 23c3  Millennium G450 DVI\n\t\t102b 2f58  Millennium G400\n\t\t102b 2f78  Millennium G400\n\t\t102b 3693  Marvel G400 AGP\n\t\t102b 5dd0  4Sight II\n\t\t102b 5f50  4Sight II\n\t\t102b 5f51  4Sight II\n\t\t102b 5f52  4Sight II\n\t\t102b 9010  Millennium G400 Dual Head\n\t\t1458 0400  GA-G400\n\t\t1705 0001  Millennium G450 32MB SGRAM\n\t\t1705 0002  Millennium G450 16MB SGRAM\n\t\t1705 0003  Millennium G450 32MB\n\t\t1705 0004  Millennium G450 16MB\n\t0527  Parhelia\n\t\t102b 0840  Parhelia 128Mb\n\t\t102b 0850  Parhelia 256MB\n\t\t102b 0870  MED2mp-DVI\n\t\t102b 0880  P-256 Edge Overlap Controller\n\t0528  Parhelia\n\t\t102b 1020  Parhelia 128MB\n\t\t102b 1030  Parhelia 256 MB Dual DVI\n\t\t102b 1040  MED2mp-DVI\n\t\t102b 1050  Sono S20\n\t\t102b 1060  PJ-30L\n\t\t102b 1070  PJ-40L\n\t\t102b 1421  MED5mp\n\t\t102b 1431  MED3mp-DVI\n\t\t102b 1451  MED5mp-DVI\n\t\t102b 1491  MED2mp-DVI\n\t\t102b 14b1  MED3mp-DVI\n\t\t102b 14c1  MED5mp-DVI\n\t\t102b 14e1  Parhelia PCI 256MB\n\t\t102b 14f1  Parhelia Precision SGT\n\t\t102b 1501  ATC-4MP\n\t\t102b 1511  ATC-4MP\n\t\t102b 1521  TheatreVUE T30\n\t\t102b 1531  TheatreVUE T20\n\t\t102b 1541  MED2mp-DVI\n\t\t102b 1551  MED3mp-DVI\n\t\t102b 1561  MED5mp-DVI\n\t\t102b 1571  Parhelia DL256 PCI\n\t\t102b 1591  Parhelia Precision SDT\n\t\t102b 15a1  MED4mp-DVI\n\t\t102b 2011  Parhelia HR256\n\t\t102b 2021  QID Pro\n\t\t102b 2061  PJ-40LP\n\t\t102b 2081  EWS Quad\n\t\t102b 2411  PPX-OUT8\n\t\t102b 2421  VPX-OUT8\n\t\t102b 2441  PPX-OUT4\n\t\t102b 2451  VPX-OUT4\n\t\t102b 2491  LPX-OUT4\n\t0530  MGA G200EV\n\t0532  MGA G200eW WPCM450\n\t\t1028 0235  PowerEdge R710 MGA G200eW WPCM450\n\t\t1028 0236  PowerEdge R610 MGA G200eW WPCM450\n\t\t1028 0237  PowerEdge T610 MGA G200eW WPCM450\n\t\t1028 0287  PowerEdge M610 MGA G200eW WPCM450\n\t\t1028 028c  PowerEdge R410 MGA G200eW WPCM450\n\t\t1028 028d  PowerEdge T410 MGA G200eW WPCM450\n\t\t1028 029c  PowerEdge M710 MGA G200eW WPCM450\n\t\t1028 02a4  PowerEdge T310 MGA G200eW WPCM450\n\t\t15d9 0605  X8SIL\n\t\t15d9 0624  X9SCM-F Motherboard\n\t\t15d9 066b  X9SRL-F\n\t\t15d9 a811  H8DGU\n\t0533  MGA G200EH\n\t\t103c 3381  iLO4\n\t0534  G200eR2\n\t\t1028 04f7  PowerEdge R320 server\n\t0536  Integrated Matrox G200eW3 Graphics Controller\n\t0538  MGA G200eH3\n\t\t1590 00e4  iLO5 VGA\n\t0540  M91XX\n\t\t102b 2080  M9140 LP PCIe x16\n\t\t102b 20c0  Xenia\n\t\t102b 20c1  Xenia Pro\n\t\t102b 2100  M9120 PCIe x16\n\t\t102b 2140  M9125 PCIe x16\n\t\t102b 2180  M9120 Plus LP PCIe x16\n\t\t102b 21c0  M9120 Plus LP PCIe x1\n\t\t102b 2200  VDA1164 Output Board\n\t\t102b 2240  M9148 LP PCIe x16\n\t\t102b 2241  M9138 LP PCIe x16\n\t\t102b 2280  M9188 ATX PCIe x16\n\t\t102b 22c0  M9128 LP PCIe x16\n\t0550  SV2\n\t\t102b 00c0  MURA-IPX-I4EF\n\t\t102b 00c1  MURA-IPX-I4DF\n\t\t102b 00c3  MURA-IPX-I4DHF\n\t\t102b 00c5  MURA-IPX-I4EHF\n\t0d10  MGA Ultima/Impression\n\t1000  MGA G100 [Productiva]\n\t\t102b ff01  Productiva G100\n\t\t102b ff05  Productiva G100 Multi-Monitor\n\t1001  MGA G100 [Productiva] AGP\n\t\t102b 1001  MGA-G100 AGP\n\t\t102b ff00  MGA-G100 AGP\n\t\t102b ff01  MGA-G100 Productiva AGP\n\t\t102b ff03  Millennium G100 AGP\n\t\t102b ff04  MGA-G100 AGP\n\t\t102b ff05  MGA-G100 Productiva AGP Multi-Monitor\n\t\t110a 001e  MGA-G100 AGP\n\t2007  MGA Mistral\n\t2527  Millennium G550\n\t\t102b 0f42  Matrox G550 Low Profile PCI\n\t\t102b 0f83  Millennium G550\n\t\t102b 0f84  Millennium G550 Dual Head DDR 32Mb\n\t\t102b 1e41  Millennium G550\n\t\t102b 22c0  G550 PCIe\n\t\t102b 2300  Millennium G550 LP PCIE\n\t2537  Millennium P650/P750\n\t\t102b 1820  Millennium P750 64MB\n\t\t102b 1830  Millennium P650 64MB\n\t\t102b 1850  RAD2mp\n\t\t102b 1860  RAD3mp\n\t\t102b 1880  Sono S10\n\t\t102b 1c10  QID 128MB\n\t\t102b 2811  Millennium P650 Low-profile PCI 64MB\n\t\t102b 2821  Millennium P650 Low-profile PCI\n\t\t102b 2841  RAD PCI\n\t\t102b 2851  Spectrum PCI\n\t\t102b 2871  EpicA TC2\n\t\t102b 2c11  QID Low-profile PCI\n\t\t102b 2c21  QID LP PCI LW\n\t\t102b 2c31  QID LP PCI\n\t\t102b 2c41  EpicA TC4\n\t\t102b 3001  Extio F1400\n\t\t102b 3011  Extio F1220\n\t\t102b 3041  RG-200DL\n\t\t102b 3051  RG-400SL\n\t\t102b 3061  Extio F1420\n\t\t102b 3081  Extio F1240\n\t2538  Millennium P650 PCIe\n\t\t102b 0847  RAD PCIe\n\t\t102b 08c7  Millennium P650 PCIe 128MB\n\t\t102b 0907  Millennium P650 PCIe 64MB\n\t\t102b 0947  Parhelia APVe\n\t\t102b 0987  ATC PCIe 4MP\n\t\t102b 1047  Millennium P650 LP PCIe 128MB\n\t\t102b 1087  Millennium P650 LP PCIe 64MB\n\t\t102b 1801  Millennium P650 PCIe x1\n\t\t102b 2538  Parhelia APVe\n\t\t102b 3007  QID Low-profile PCIe\n\t\t102b 3087  Aurora VX3mp\n\t\t102b 30c7  QID LP PCIe\n\t2539  Millennium P690\n\t\t102b 0040  Millennium P690 PCIe x16\n\t\t102b 0042  ONYX\n\t\t102b 0043  SPECTRA\n\t\t102b 0080  Millennium P690 Plus LP PCIe x16\n\t\t102b 0081  Millennium P690 LP PCIe x16\n\t\t102b 0082  RAD LPX PCIe x16\n\t\t102b 00c0  Millennium P690 Plus LP PCI\n\t\t102b 00c2  Millennium P690 LP PCI\n\t\t102b 00c3  RAD LPX PCI\n\t\t102b 0101  Millennium P690 PCI\n\t\t102b 0140  Millennium P690 LP PCIe x1\n\t\t102b 0180  Display Wall IP Decode 128 MB\n\t4164  Morphis QxT frame grabber\n\t43b4  Morphis Qxt encoding engine\n\t4510  Morphis COM port\n\t4536  VIA Framegrabber\n\t4686  Concord GX (customized Intel 82541)\n\t475b  Solios eCL/XCL-B frame grabber\n\t475d  Vio frame grabber family\n\t\t102b 4b90  Vio Duo frame grabber (single channel)\n\t\t102b 4b91  Vio Duo frame grabber\n\t\t102b 4b92  Vio Analog frame grabber\n\t\t102b 4b93  Vio SDI Frame Grabber\n\t\t102b 4b94  Vio DVI-A frame grabber\n\t475f  Solios (single-Full) CL frame grabber\n\t\t102b 475f  Solios eCL/XCL-F frame grabber\n\t\t102b 4d5f  Solios eV-CL (single-Full) frame grabber\n\t\t102b 4e5f  Solios eM-CL (single-Full) frame grabber\n\t47a1  Solios eA/XA frame grabber\n\t\t102b 4be0  Solios eA/XA (single) frame grabber\n\t\t102b 4be1  Solios eA/XA (dual) frame grabber\n\t\t102b 4be2  Solios eA/XA (quad) frame grabber\n\t47a2  Solios COM port\n\t47c1  Solios (dual-Base/single-Medium) CL frame grabber\n\t\t102b 0000  Solios frame grabber\n\t\t102b 4b80  Solios eCL/XCL (single-Medium) frame grabber\n\t\t102b 4b81  Solios eCL/XCL (dual-Base) frame grabber\n\t\t102b 4d80  Solios eV-CL (single-Medium) frame grabber\n\t\t102b 4d81  Solios eV-CL (dual-Base) frame grabber\n\t\t102b 4e80  Solios eM-CL (single-Medium) frame grabber\n\t\t102b 4e81  Solios eM-CL (dual-Base) frame grabber\n\t47c2  Solios COM port\n\t4949  Radient frame grabber family\n\t\t102b 0010  Radient eCL (Single-full) frame grabber\n\t\t102b 0011  Radient eCLV (Single-full) frame grabber\n\t\t102b 0020  Radient eCL (Dual-base) frame grabber\n\t\t102b 0030  Radient eCL (Dual-full) frame grabber\n\t\t102b 0040  Radient eCL (Quad-base) frame grabber\n\t\t102b 0050  Radient eCL (Golden) frame grabber\n\t\t102b 1010  Radient eV-CXP (quad CXP-6) frame grabber\n\t\t102b 1015  Radient eV-CXP (dual CXP-6) frame grabber\n\t\t102b 1020  Radient eV-CXP (quad CXP-3) frame grabber\n\t\t102b 1050  Radient eV-CXP (Golden) frame grabber\n\t4cdc  Morphis JPEG2000 accelerator\n\t4f54  Morphis (e)Quad frame grabber\n\t4fc5  Morphis (e)Dual frame grabber\n\t5e10  Morphis aux I/O\n\t6573  Shark 10/100 Multiport SwitchNIC\n102c  Chips and Technologies\n\t00b8  F64310\n\t00c0  F69000 HiQVideo\n\t\t102c 00c0  F69000 HiQVideo\n\t\t4c53 1000  CC7/CR7/CP7/VC7/VP7/VR7 mainboard\n\t\t4c53 1010  CP5/CR6 mainboard\n\t\t4c53 1020  VR6 mainboard\n\t\t4c53 1030  PC5 mainboard\n\t\t4c53 1050  CT7 mainboard\n\t\t4c53 1051  CE7 mainboard\n\t00d0  F65545\n\t00d8  F65545\n\t00dc  F65548\n\t00e0  F65550\n\t00e4  F65554\n\t00e5  F65555 HiQVPro\n\t\t0e11 b049  Armada 1700 Laptop Display Controller\n\t\t1179 0001  Satellite Pro/Satellite\n\t00f0  F68554\n\t00f4  F68554 HiQVision\n\t00f5  F68555\n\t0c30  F69030\n\t\t4c53 1000  CC7/CR7/CP7/VC7/VP7/VR7 mainboard\n\t\t4c53 1050  CT7 mainboard\n\t\t4c53 1051  CE7 mainboard\n\t\t4c53 1080  CT8 mainboard\n102d  Wyse Technology Inc.\n\t50dc  3328 Audio\n102e  Olivetti Advanced Technology\n102f  Toshiba America\n\t0009  r4x00\n\t000a  TX3927 MIPS RISC PCI Controller\n\t0020  ATM Meteor 155\n\t\t102f 00f8  ATM Meteor 155\n\t0030  TC35815CF PCI 10/100 Mbit Ethernet Controller\n\t0031  TC35815CF PCI 10/100 Mbit Ethernet Controller with WOL\n\t0032  TC35815CF PCI 10/100 Mbit Ethernet Controller on TX4939\n\t0105  TC86C001 [goku-s] IDE\n\t0106  TC86C001 [goku-s] USB 1.1 Host\n\t0107  TC86C001 [goku-s] USB Device Controller\n\t0108  TC86C001 [goku-s] I2C/SIO/GPIO Controller\n\t0180  TX4927/38 MIPS RISC PCI Controller\n\t0181  TX4925 MIPS RISC PCI Controller\n\t0182  TX4937 MIPS RISC PCI Controller\n\t01b4  Celleb platform IDE interface\n\t01b5  SCC USB 2.0 EHCI controller\n\t01b6  SCC USB 1.1 OHCI controller\n1030  TMC Research\n1031  Miro Computer Products AG\n\t5601  DC20 ASIC\n\t5607  Video I/O & motion JPEG compressor\n\t5631  Media 3D\n\t6057  MiroVideo DC10/DC30+\n1032  Compaq\n1033  NEC Corporation\n\t0000  Vr4181A USB Host or Function Control Unit\n\t0001  PCI to 486-like bus Bridge\n\t0002  PCI to VL98 Bridge\n\t0003  ATM Controller\n\t0004  R4000 PCI Bridge\n\t0005  PCI to 486-like bus Bridge\n\t0006  PC-9800 Graphic Accelerator\n\t0007  PCI to UX-Bus Bridge\n\t0008  PC-9800 Graphic Accelerator\n\t0009  PCI to PC9800 Core-Graph Bridge\n\t0016  PCI to VL Bridge\n\t001a  [Nile II]\n\t0021  Vrc4373 [Nile I]\n\t0029  PowerVR PCX1\n\t002a  PowerVR 3D\n\t002c  Star Alpha 2\n\t002d  PCI to C-bus Bridge\n\t0035  OHCI USB Controller\n\t\t1033 0035  USB Controller\n\t\t103c 1293  USB add-in card\n\t\t103c 1294  USB 2.0 add-in card\n\t\t1179 0001  USB\n\t\t1186 0035  DUB-C2 USB 2.0 2-port 32-bit cardbus controller\n\t\t12ee 7000  Root Hub\n\t\t14c2 0105  PTI-205N USB 2.0 Host Controller\n\t\t1799 0001  Root Hub\n\t\t1931 000a  GlobeTrotter Fusion Quad Lite (PPP data)\n\t\t1931 000b  GlobeTrotter Fusion Quad Lite (GSM data)\n\t\t807d 0035  PCI-USB2 (OHCI subsystem)\n\t\t8086 4d44  D850EMV2 motherboard\n\t003b  PCI to C-bus Bridge\n\t003e  NAPCCARD Cardbus Controller\n\t0046  PowerVR PCX2 [midas]\n\t005a  Vrc5074 [Nile 4]\n\t0063  uPD72862 [Firewarden] IEEE1394 OHCI 1.0 Link Controller\n\t0067  PowerVR Neon 250 Chipset\n\t\t1010 0020  PowerVR Neon 250 AGP 32Mb\n\t\t1010 0080  PowerVR Neon 250 AGP 16Mb\n\t\t1010 0088  PowerVR Neon 250 16Mb\n\t\t1010 0090  PowerVR Neon 250 AGP 16Mb\n\t\t1010 0098  PowerVR Neon 250 16Mb\n\t\t1010 00a0  PowerVR Neon 250 AGP 32Mb\n\t\t1010 00a8  PowerVR Neon 250 32Mb\n\t\t1010 0120  PowerVR Neon 250 AGP 32Mb\n\t0072  uPD72874 IEEE1394 OHCI 1.1 3-port PHY-Link Ctrlr\n\t0074  56k Voice Modem\n\t\t1033 8014  RCV56ACF 56k Voice Modem\n\t009b  Vrc5476\n\t00a5  VRC4173\n\t00a6  VRC5477 AC97\n\t00cd  uPD72870 [Firewarden] IEEE1394a OHCI 1.0 Link/3-port PHY Controller\n\t\t12ee 8011  Root hub\n\t00ce  uPD72871 [Firewarden] IEEE1394a OHCI 1.0 Link/1-port PHY Controller\n\t00df  Vr4131\n\t00e0  uPD72010x USB 2.0 Controller\n\t\t1186 f100  DUB-C2 USB 2.0 2-port 32-bit cardbus controller\n\t\t12ee 7001  Root hub\n\t\t14c2 0205  PTI-205N USB 2.0 Host Controller\n\t\t1799 0002  Root Hub\n\t\t807d 1043  PCI-USB2 (EHCI subsystem)\n\t\t8086 4d44  D850EMV2 motherboard\n\t00e7  uPD72873 [Firewarden] IEEE1394a OHCI 1.1 Link/2-port PHY Controller\n\t00f2  uPD72874 [Firewarden] IEEE1394a OHCI 1.1 Link/3-port PHY Controller\n\t00f3  uPD6113x Multimedia Decoder/Processor [EMMA2]\n\t010c  VR7701\n\t0125  uPD720400 PCI Express - PCI/PCI-X Bridge\n\t013a  Dual Tuner/MPEG Encoder\n\t0194  uPD720200 USB 3.0 Host Controller\n\t\t1028 04a3  Precision M4600\n\t\t1028 04b2  Vostro 3350\n\t\t1028 04da  Vostro 3750\n\t\t1043 8413  P8P67 Deluxe Motherboard\n\t\t104d 907a  Vaio VPCF1\n\t\t1af4 1100  QEMU Virtual Machine\n\t\t1b96 0001  USB 3.0 PCIe Card\n\t01e7  uPD72873 [Firewarden] IEEE1394a OHCI 1.1 Link/2-port PHY Controller\n\t01f2  uPD72874 [Firewarden] IEEE1394a OHCI 1.1 Link/3-port PHY Controller\n1034  Framatome Connectors USA Inc.\n1035  Comp. & Comm. Research Lab\n1036  Future Domain Corp.\n\t0000  TMC-18C30 [36C70]\n1037  Hitachi Micro Systems\n1038  AMP, Inc\n1039  Silicon Integrated Systems [SiS]\n\t0001  AGP Port (virtual PCI-to-PCI bridge)\n\t0002  AGP Port (virtual PCI-to-PCI bridge)\n\t0003  AGP Port (virtual PCI-to-PCI bridge)\n\t0004  PCI-to-PCI bridge\n\t\t1039 0000  PCIe x16 port\n\t0006  85C501/2/3\n\t0008  SiS85C503/5513 (LPC Bridge)\n\t0009  5595 Power Management Controller\n\t000a  PCI-to-PCI bridge\n\t\t1039 0000  PCIe x1 port\n\t0016  SiS961/2/3 SMBus controller\n\t0018  SiS85C503/5513 (LPC Bridge)\n\t0163  163 802.11b/g Wireless LAN Adapter\n\t0180  RAID bus controller 180 SATA/PATA  [SiS]\n\t0181  SATA\n\t0182  182 SATA/RAID Controller\n\t\t1734 1095  D2030-A1\n\t0186  AHCI Controller (0106)\n\t0190  190 Ethernet Adapter\n\t0191  191 Gigabit Ethernet Adapter\n\t\t1043 8139  P5SD2-FM/S mainboard\n\t0200  5597/5598/6326 VGA\n\t\t1039 0000  SiS5597 SVGA (Shared RAM)\n\t0204  82C204\n\t0205  SG86C205\n\t0300  300/305 PCI/AGP VGA Display Adapter\n\t\t107d 2720  Leadtek WinFast VR300\n\t0310  315H PCI/AGP VGA Display Adapter\n\t0315  315 PCI/AGP VGA Display Adapter\n\t0325  315PRO PCI/AGP VGA Display Adapter\n\t0330  330 [Xabre] PCI/AGP VGA Display Adapter\n\t0406  85C501/2\n\t0496  SiS85C496 PCI & CPU Memory Controller (PCM)\n\t0530  530 Host\n\t0540  540 Host\n\t0550  550 Host\n\t0597  5513C\n\t0601  85C601\n\t0620  620 Host\n\t0630  630 Host\n\t0633  633 Host\n\t0635  635 Host\n\t0645  SiS645 Host & Memory & AGP Controller\n\t0646  SiS645DX Host & Memory & AGP Controller\n\t0648  645xx\n\t0649  SiS649 Host\n\t0650  650/M650 Host\n\t0651  651 Host\n\t0655  655 Host\n\t0660  660 Host\n\t0661  661FX/M661FX/M661MX Host\n\t0662  662 Host\n\t0671  671MX\n\t0730  730 Host\n\t0733  733 Host\n\t0735  735 Host\n\t0740  740 Host\n\t0741  741/741GX/M741 Host\n\t\t1849 0741  K7S41/K7S41GX motherboard\n\t0745  745 Host\n\t0746  746 Host\n\t0755  755 Host\n\t0760  760/M760 Host\n\t0761  761/M761 Host\n\t\t1734 1099  D2030-A1 Motherboard\n\t0900  SiS900 PCI Fast Ethernet\n\t\t1019 0a14  K7S5A motherboard\n\t\t1039 0900  SiS900 10/100 Ethernet Adapter onboard\n\t\t1043 8035  CUSI-FX motherboard\n\t\t1043 80a7  Motherboard P4S800D-X\n\t\t1462 0900  MS-6701 motherboard\n\t0961  SiS961 [MuTIOL Media IO]\n\t0962  SiS962 [MuTIOL Media IO] LPC Controller\n\t0963  SiS963 [MuTIOL Media IO] LPC Controller\n\t0964  SiS964 [MuTIOL Media IO] LPC Controller\n\t0965  SiS965 [MuTIOL Media IO]\n\t0966  SiS966 [MuTIOL Media IO]\n\t0968  SiS968 [MuTIOL Media IO]\n\t1180  SATA Controller / IDE mode\n\t1182  SATA Controller / RAID mode\n\t\t1039 0180  SiS 966 4-port SATA controller\n\t1183  SATA Controller / IDE mode\n\t\t1039 0180  SiS 966 4-port SATA controller\n\t1184  AHCI Controller / RAID mode\n\t1185  AHCI IDE Controller (0106)\n\t3602  83C602\n\t5107  5107\n\t5300  SiS540 PCI Display Adapter\n\t5315  550 PCI/AGP VGA Display Adapter\n\t5401  486 PCI Chipset\n\t5511  5511/5512\n\t5513  5513 IDE Controller\n\t\t1019 0970  P6STP-FL motherboard\n\t\t1039 5513  SiS5513 EIDE Controller (A,B step)\n\t\t1043 8035  CUSI-FX motherboard\n\t\t1462 7010  MS-6701 motherboard\n\t\t1631 5513  GA-8SIML Rev1.0 Motherboard\n\t\t1734 1095  D2030-A1 Motherboard\n\t5517  5517\n\t5571  5571\n\t5581  5581 Pentium Chipset\n\t5582  5582\n\t5591  5591/5592 Host\n\t5596  5596 Pentium Chipset\n\t5597  5597 [SiS5582]\n\t5600  5600 Host\n\t6204  Video decoder & MPEG interface\n\t6205  VGA Controller\n\t6236  6236 3D-AGP\n\t6300  630/730 PCI/AGP VGA Display Adapter\n\t\t1019 0970  P6STP-FL motherboard\n\t\t1043 8035  CUSI-FX motherboard\n\t\t104d 80e2  VAIO PCV-J200\n\t6306  530/620 PCI/AGP VGA Display Adapter\n\t6325  65x/M650/740 PCI/AGP VGA Display Adapter\n\t\t1039 6325  SiS 651 onboard [Asus P4SC-EA]\n\t\t1631 1004  SiS 651C onboard [Gigabyte GA-8SIML Rev1.0]\n\t6326  86C326 5598/6326\n\t\t1039 6326  SiS6326 GUI Accelerator\n\t\t1092 0a50  SpeedStar A50\n\t\t1092 0a70  SpeedStar A70\n\t\t1092 4910  SpeedStar A70\n\t\t1092 4920  SpeedStar A70\n\t\t10b0 6326  S6110-B (AGP)\n\t\t1569 6326  SiS6326 GUI Accelerator\n\t6330  661/741/760 PCI/AGP or 662/761Gx PCIE VGA Display Adapter\n\t\t1039 6330  [M]661xX/[M]741[GX]/[M]760 PCI/AGP VGA Adapter\n\t\t1043 8113  SiS Real 256E (ASUS P5S800-VM motherboard)\n\t\t1458 d000  SiS661FX GUI 2D/3D Accelerator\n\t\t1734 1099  D2030-A1\n\t6350  770/670 PCIE VGA Display Adapter\n\t6351  771/671 PCIE VGA Display Adapter\n\t7001  USB 1.1 Controller\n\t\t1019 0a14  K7S5A motherboard\n\t\t1039 7000  Onboard USB Controller\n\t\t1462 5470  ECS K7SOM+ motherboard\n\t\t1462 7010  MS-6701 motherboard\n\t\t1734 1095  D2030-A1 Motherboard\n\t7002  USB 2.0 Controller\n\t\t1462 5470  K7SOM+ 5.2C Motherboard\n\t\t1462 7010  MS-6701 motherboard\n\t\t1509 7002  Onboard USB Controller\n\t\t1734 1095  D2030-A1\n\t7007  FireWire Controller\n\t\t1462 701d  MS-6701\n\t7012  SiS7012 AC'97 Sound Controller\n\t\t1019 0f05  A928 (i-Buddie)\n\t\t1039 7012  SiS 7012 onboard [Asus P4SC-EA] AC'97 Sound Controller\n\t\t1043 818f  A8S-X Motherboard\n\t\t13f6 0300  CMI9739(A) on ECS K7S series motherboard\n\t\t1462 5850  MSI 648 Max (MS-6585)\n\t\t1462 7010  MS-6701 motherboard\n\t\t15bd 1001  DFI 661FX motherboard\n\t\t1734 109f  D2030-A1 Motherboard\n\t\t1849 7012  K7S41GX motherboard\n# There are may be different modem codecs here (Intel537 compatible and incompatible)\n\t7013  AC'97 Modem Controller\n\t7016  SiS7016 PCI Fast Ethernet Adapter\n\t\t1039 7016  SiS7016 10/100 Ethernet Adapter\n\t7018  SiS PCI Audio Accelerator\n\t\t1014 01b6  SiS PCI Audio Accelerator\n\t\t1014 01b7  SiS PCI Audio Accelerator\n\t\t1019 7018  SiS PCI Audio Accelerator\n\t\t1025 000e  SiS PCI Audio Accelerator\n\t\t1025 0018  SiS PCI Audio Accelerator\n\t\t1039 7018  SiS PCI Audio Accelerator\n\t\t1043 1453  SiS PCI Audio Accelerator\n\t\t1043 800b  SiS PCI Audio Accelerator\n\t\t104d 80e2  VAIO PCV-J200\n\t\t1054 7018  SiS PCI Audio Accelerator\n\t\t107d 5330  SiS PCI Audio Accelerator\n\t\t107d 5350  SiS PCI Audio Accelerator\n\t\t1170 3209  SiS PCI Audio Accelerator\n\t\t1462 400a  SiS PCI Audio Accelerator\n\t\t14a4 2089  SiS PCI Audio Accelerator\n\t\t14cd 2194  SiS PCI Audio Accelerator\n\t\t14ff 1100  SiS PCI Audio Accelerator\n\t\t152d 8808  SiS PCI Audio Accelerator\n\t\t1558 1103  SiS PCI Audio Accelerator\n\t\t1558 2200  SiS PCI Audio Accelerator\n\t\t1563 7018  SiS PCI Audio Accelerator\n\t\t15c5 0111  SiS PCI Audio Accelerator\n\t\t270f a171  SiS PCI Audio Accelerator\n\t\ta0a0 0022  SiS PCI Audio Accelerator\n\t7019  SiS7019 Audio Accelerator\n\t7502  Azalia Audio Controller\n\t\t1043 81a1  P5SD2-FM/S mainboard\n103a  Seiko Epson Corporation\n103b  Tatung Corp. Of America\n103c  Hewlett-Packard Company\n\t1005  A4977A Visualize EG\n\t1008  Visualize FX\n\t1020  548XX Scope Interface\n\t1028  Tach TL Fibre Channel Host Adapter\n\t1029  Tach XL2 Fibre Channel Host Adapter\n\t\t107e 000f  Interphase 5560 Fibre Channel Adapter\n\t\t9004 9210  1Gb/2Gb Family Fibre Channel Controller\n\t\t9004 9211  1Gb/2Gb Family Fibre Channel Controller\n\t102a  Tach TS Fibre Channel Host Adapter\n\t\t107e 000e  Interphase 5540/5541 Fibre Channel Adapter\n\t\t9004 9110  1Gb/2Gb Family Fibre Channel Controller\n\t\t9004 9111  1Gb/2Gb Family Fibre Channel Controller\n\t1030  J2585A DeskDirect 10/100VG NIC\n\t1031  J2585B HP 10/100VG PCI LAN Adapter\n\t\t103c 1040  J2973A DeskDirect 10BaseT NIC\n\t\t103c 1041  J2585B DeskDirect 10/100VG NIC\n\t\t103c 1042  J2970A DeskDirect 10BaseT/2 NIC\n\t1040  J2973A DeskDirect 10BaseT NIC\n\t1041  J2585B DeskDirect 10/100 NIC\n\t1042  J2970A DeskDirect 10BaseT/2 NIC\n\t1048  Diva Serial [GSP] Multiport UART\n\t\t103c 1049  Tosca Console\n\t\t103c 104a  Tosca Secondary\n\t\t103c 104b  Maestro SP2\n\t\t103c 1223  Superdome Console\n\t\t103c 1226  Keystone SP2\n\t\t103c 1227  Powerbar SP2\n\t\t103c 1282  Everest SP2\n\t\t103c 1301  Diva RMP3\n\t1054  PCI Local Bus Adapter\n\t1064  79C970 PCnet Ethernet Controller\n\t108b  Visualize FXe\n\t10c1  NetServer Smart IRQ Router\n\t10ed  TopTools Remote Control\n\t10f0  rio System Bus Adapter\n\t10f1  rio I/O Controller\n\t1219  NetServer PCI Hot-Plug Controller\n\t121a  NetServer SMIC Controller\n\t121b  NetServer Legacy COM Port Decoder\n\t121c  NetServer PCI COM Port Decoder\n\t1229  zx1 System Bus Adapter\n\t122a  zx1 I/O Controller\n\t122e  PCI-X Local Bus Adapter\n\t127b  sx1000 System Bus Adapter\n\t127c  sx1000 I/O Controller\n\t128d  Diva [GSP] Management Board\n\t1290  Auxiliary Diva Serial Port\n\t\t103c 1291  Diva SP2\n\t1291  Auxiliary Diva Serial Port\n\t12b4  zx1 QuickSilver AGP8x Local Bus Adapter\n\t12eb  sx2000 System Bus Adapter\n\t12ec  sx2000 I/O Controller\n\t12ee  PCI-X 2.0 Local Bus Adapter\n\t1302  RMP-3 Shared Memory Driver\n\t1303  RMP-3 (Remote Management Processor)\n\t22f6  iLO5 Virtual USB Controller\n\t\t1590 00e4  iLO5 Standard Virtual USB Controller\n\t2910  E2910A PCIBus Exerciser\n\t2925  E2925A 32 Bit, 33 MHzPCI Exerciser & Analyzer\n\t3206  Adaptec Embedded Serial ATA HostRAID\n\t3220  Smart Array P600\n\t\t103c 3225  3 Gb/s SAS RAID\n\t3230  Smart Array Controller\n\t\t103c 3223  Smart Array P800\n\t\t103c 3234  P400 SAS Controller\n\t\t103c 3235  P400i SAS Controller\n\t\t103c 3237  E500 SAS Controller\n\t\t103c 323d  P700m SAS Controller\n\t3238  Smart Array E200i (SAS Controller)\n\t\t103c 3211  Smart Array E200i\n\t\t103c 3212  Smart Array E200\n\t3239  Smart Array Gen9 Controllers\n\t\t103c 21bd  P244br\n\t\t103c 21be  P741m\n\t\t103c 21bf  H240ar\n\t\t103c 21c0  P440ar\n\t\t103c 21c1  P840ar\n\t\t103c 21c2  P440\n\t\t103c 21c3  P441\n\t\t103c 21c4  Smart Array\n\t\t103c 21c5  P841\n\t\t103c 21c6  H244br\n\t\t103c 21c7  H240\n\t\t103c 21c8  H241\n\t\t103c 21c9  Smart Array\n\t\t103c 21ca  P246br\n\t\t103c 21cb  P840\n\t\t103c 21cc  Smart Array\n\t\t103c 21cd  P240nr\n\t\t103c 21ce  H240nr\n\t323a  Smart Array G6 controllers\n\t\t103c 3241  Smart Array P212\n\t\t103c 3243  Smart Array P410\n\t\t103c 3245  Smart Array P410i\n\t\t103c 3247  Smart Array P411\n\t\t103c 3249  Smart Array P812\n\t\t103c 324a  Smart Array 712m (Mezzanine RAID controller)\n\t\t103c 324b  Smart Array P711m (Mezzanine RAID controller)\n\t323b  Smart Array Gen8 Controllers\n\t\t103c 3350  P222\n\t\t103c 3351  P420\n\t\t103c 3352  P421\n\t\t103c 3354  P420i\n\t\t103c 3355  P220i\n\t323c  Smart Array Gen8+ Controllers\n\t\t103c 1920  P430i\n\t\t103c 1921  P830i\n\t\t103c 1922  P430\n\t\t103c 1923  P431\n\t\t103c 1924  P830\n\t\t103c 1925  Smart Array\n\t\t103c 1926  P731m\n\t\t103c 1928  P230i\n\t3300  Integrated Lights-Out Standard Virtual USB Controller\n\t\t103c 3304  iLO2\n\t\t103c 3305  iLO2\n\t\t103c 3309  iLO2 GXL/iLO3 GXE\n\t\t103c 330e  iLO3\n\t\t103c 3381  iLO4\n\t3301  Integrated Lights-Out Standard Serial Port\n\t\t103c 3304  iLO2\n\t\t103c 3305  iLO2\n\t\t103c 330e  iLO3\n\t\t103c 3381  iLO4\n# Virtual serial port which is presented on a Java applet\n\t3302  Integrated Lights-Out Standard KCS Interface\n\t\t103c 3304  iLO2\n\t\t103c 3305  iLO2\n\t\t103c 330e  iLO3\n\t\t103c 3381  iLO4\n\t3305  Integrated Lights-Out (iLO2) Controller\n\t3306  Integrated Lights-Out Standard Slave Instrumentation & System Support\n\t\t103c 330e  iLO3\n\t\t103c 3381  iLO4\n\t\t1590 00e4  iLO5\n\t3307  Integrated Lights-Out Standard Management Processor Support and Messaging\n# HP DL380 G6\n\t\t103c 3309  iLO 2\n\t\t103c 330e  iLO3\n\t\t103c 3381  iLO4\n\t3308  Integrated Lights-Out Standard MS Watchdog Timer\n\t\t103c 330e  iLO3\n\t\t103c 3381  iLO4\n\t4030  zx2 System Bus Adapter\n\t4031  zx2 I/O Controller\n\t4037  PCIe Local Bus Adapter\n\t9602  AMD RS780/RS880 PCI to PCI bridge (int gfx)\n\t\t103c 1609  ProLiant MicroServer N36L\n103e  Solliday Engineering\n103f  Synopsys/Logic Modeling Group\n1040  Accelgraphics Inc.\n1041  Computrend\n1042  Micron\n\t1000  PC Tech RZ1000\n\t1001  PC Tech RZ1001\n\t3000  Samurai_0\n\t3010  Samurai_1\n\t3020  Samurai_IDE\n1043  ASUSTeK Computer Inc.\n\t0675  ISDNLink P-IN100-ST-D\n\t\t0675 1704  ISDN Adapter (PCI Bus, D, C)\n\t\t0675 1707  ISDN Adapter (PCI Bus, DV, W)\n\t\t10cf 105e  ISDN Adapter (PCI Bus, DV, W)\n# Should be 1022:9602\n\t9602  AMD RS780/RS880 PCI to PCI bridge (int gfx)\n\t\t1043 83a2  M4A785TD Motherboard\n1044  Adaptec (formerly DPT)\n\t1012  Domino RAID Engine\n\ta400  SmartCache/Raid I-IV Controller\n\ta500  PCI Bridge\n\ta501  SmartRAID V Controller\n\t\t1044 c001  PM1554U2 Ultra2 Single Channel\n\t\t1044 c002  PM1654U2 Ultra2 Single Channel\n\t\t1044 c003  PM1564U3 Ultra3 Single Channel\n\t\t1044 c004  PM1564U3 Ultra3 Dual Channel\n\t\t1044 c005  PM1554U2 Ultra2 Single Channel (NON ACPI)\n\t\t1044 c00a  PM2554U2 Ultra2 Single Channel\n\t\t1044 c00b  PM2654U2 Ultra2 Single Channel\n\t\t1044 c00c  PM2664U3 Ultra3 Single Channel\n\t\t1044 c00d  PM2664U3 Ultra3 Dual Channel\n\t\t1044 c00e  PM2554U2 Ultra2 Single Channel (NON ACPI)\n\t\t1044 c00f  PM2654U2 Ultra2 Single Channel (NON ACPI)\n\t\t1044 c014  PM3754U2 Ultra2 Single Channel (NON ACPI)\n\t\t1044 c015  PM3755U2B Ultra2 Single Channel (NON ACPI)\n\t\t1044 c016  PM3755F Fibre Channel (NON ACPI)\n\t\t1044 c01e  PM3757U2 Ultra2 Single Channel\n\t\t1044 c01f  PM3757U2 Ultra2 Dual Channel\n\t\t1044 c020  PM3767U3 Ultra3 Dual Channel\n\t\t1044 c021  PM3767U3 Ultra3 Quad Channel\n\t\t1044 c028  PM2865U3 Ultra3 Single Channel\n\t\t1044 c029  PM2865U3 Ultra3 Dual Channel\n\t\t1044 c02a  PM2865F Fibre Channel\n\t\t1044 c03c  2000S Ultra3 Single Channel\n\t\t1044 c03d  2000S Ultra3 Dual Channel\n\t\t1044 c03e  2000F Fibre Channel\n\t\t1044 c046  3000S Ultra3 Single Channel\n\t\t1044 c047  3000S Ultra3 Dual Channel\n\t\t1044 c048  3000F Fibre Channel\n\t\t1044 c050  5000S Ultra3 Single Channel\n\t\t1044 c051  5000S Ultra3 Dual Channel\n\t\t1044 c052  5000F Fibre Channel\n\t\t1044 c05a  2400A UDMA Four Channel\n\t\t1044 c05b  2400A UDMA Four Channel DAC\n\t\t1044 c064  3010S Ultra3 Dual Channel\n\t\t1044 c065  3410S Ultra160 Four Channel\n\t\t1044 c066  3010S Fibre Channel\n\ta511  SmartRAID V Controller\n\t\t1044 c032  ASR-2005S I2O Zero Channel\n\t\t1044 c035  ASR-2010S I2O Zero Channel\n\tc066  3010S Ultra3 Dual Channel\n1045  OPTi Inc.\n\ta0f8  82C750 [Vendetta] USB Controller\n\tc101  82C264 GUI Accelerator\n\tc178  92C178\n\tc556  82X556 [Viper]\n\tc557  82C557 [Viper-M]\n\tc558  82C558 [Viper-M ISA+IDE]\n\tc567  82C750 [Vendetta] Host Bridge\n\tc568  82C750 [Vendetta] ISA Bridge\n\tc569  82C579 [Viper XPress+ Chipset]\n\tc621  82C621A PCI IDE Contoller\n\tc700  82C700 [FireStar]\n\tc701  82C700 [FireStar] Host Bridge\n\tc814  82C814 [FireBridge II] Docking Stration Controller\n\tc822  82C822\n\tc824  82C824 [FireFox] 32-Bit PC Card Controller\n\tc825  82C825 [FireBridge II] Docking Stration Controller\n\tc832  82C832\n\tc861  82C861/2/3 [FireLink] PCI-USB Host Bridge\n\tc881  82C881 [FireLink] 1394 OHCI Link Controller\n\tc895  82C895\n\tc935  82С935 [MachOne] Integrated PCI Audio Processor\n\td568  82C700 [FireStar] PCI IDE Controller\n\td721  82C700 [FireStar] PCI IDE Controller\n1046  IPC Corporation, Ltd.\n1047  Genoa Systems Corp\n1048  Elsa AG\n\t0c60  Gladiac MX\n\t0d22  Quadro4 900XGL [ELSA GLoria4 900XGL]\n\t1000  QuickStep 1000\n\t3000  QuickStep 3000\n\t8901  Gloria XL\n\t\t1048 0935  GLoria XL (Virge)\n1049  Fountain Technologies, Inc.\n# nee SGS Thomson Microelectronics\n104a  STMicroelectronics\n\t0000  STLS2F Host Bridge\n\t0008  STG 2000X\n\t0009  STG 1764X\n\t0010  STG4000 [3D Prophet Kyro Series]\n\t\t104a 4018  ST PowerVR Kyro (64MB AGP TVO)\n\t\t1681 0010  PowerVR Kyro II [3D Prophet 4500]\n\t\t1681 0028  3D Prophet 4000XT\n\t\t1681 c010  3D Prophet 4500 TV-Out\n\t\t1681 c069  3D Prophet 4000XT\n\t0201  STPC Vega Northbridge\n\t0209  STPC Consumer/Industrial North- and Southbridge\n\t020a  STPC Atlas/ConsumerS/Consumer IIA Northbridge\n\t020b  STPC Consumer II ISA Bridge\n\t0210  STPC Atlas ISA Bridge\n\t021a  STPC Consumer S Southbridge\n\t021b  STPC Consumer IIA Southbridge\n\t0220  STPC Industrial PCI to PCCard bridge\n\t0228  STPC Atlas IDE\n\t0229  STPC Vega IDE\n\t0230  STPC Atlas/Vega OHCI USB Controller\n\t0238  STPC Vega LAN\n\t0500  ST70137 [Unicorn] ADSL DMT Transceiver\n\t\t104a 0500  BeWAN ADSL PCI st\n\t0564  STPC Client Northbridge\n\t0981  21x4x DEC-Tulip compatible 10/100 Ethernet\n\t1746  STG 1764X\n\t2774  21x4x DEC-Tulip compatible 10/100 Ethernet\n\t3520  MPEG-II decoder card\n\t55cc  STPC Client Southbridge\n104b  BusLogic\n\t0140  BT-946C (old) [multimaster  01]\n\t1040  BT-946C (BA80C30) [MultiMaster 10]\n\t8130  Flashpoint LT\n104c  Texas Instruments\n\t0500  100 MBit LAN Controller\n\t0508  TMS380C2X Compressor Interface\n\t1000  Eagle i/f AS\n\t104c  PCI1510 PC card Cardbus Controller\n\t3d04  TVP4010 [Permedia]\n\t3d07  TVP4020 [Permedia 2]\n\t\t1011 4d10  Comet\n\t\t1040 000f  AccelStar II\n\t\t1040 0011  AccelStar II\n\t\t1048 0a31  WINNER 2000\n\t\t1048 0a32  GLoria Synergy\n\t\t1048 0a34  GLoria Synergy\n\t\t1048 0a35  GLoria Synergy\n\t\t1048 0a36  GLoria Synergy\n\t\t1048 0a43  GLoria Synergy\n\t\t1048 0a44  GLoria Synergy\n\t\t107d 2633  WinFast 3D L2300\n\t\t1092 0126  FIRE GL 1000 PRO\n\t\t1092 0127  FIRE GL 1000 PRO\n\t\t1092 0136  FIRE GL 1000 PRO\n\t\t1092 0141  FIRE GL 1000 PRO\n\t\t1092 0146  FIRE GL 1000 PRO\n\t\t1092 0148  FIRE GL 1000 PRO\n\t\t1092 0149  FIRE GL 1000 PRO\n\t\t1092 0152  FIRE GL 1000 PRO\n\t\t1092 0154  FIRE GL 1000 PRO\n\t\t1092 0155  FIRE GL 1000 PRO\n\t\t1092 0156  FIRE GL 1000 PRO\n\t\t1092 0157  FIRE GL 1000 PRO\n\t\t1097 3d01  Jeronimo Pro\n\t\t1102 100f  Graphics Blaster Extreme\n\t\t3d3d 0100  Reference Permedia 2 3D\n\t8000  PCILynx/PCILynx2 IEEE 1394 Link Layer Controller\n\t\t105e 8003  FireBoard200\n\t\t1443 8003  FireBoard200\n\t\t1443 8005  FireBoard400\n\t\t1443 8006  FireBoard400\n\t\te4bf 1010  CF1-1-SNARE\n\t\te4bf 1020  CF1-2-SNARE\n\t\te4bf 1040  FireCompact400\n\t8009  TSB12LV22 IEEE-1394 Controller\n\t\t104d 8032  8032 OHCI i.LINK (IEEE 1394) Controller\n\t\t1443 8010  FireBoard400-OHCI\n\t8017  PCI4410 FireWire Controller\n\t8019  TSB12LV23 IEEE-1394 Controller\n\t\t11bd 000a  Studio DV500-1394\n\t\t11bd 000e  Studio DV\n\t\t1443 8010  FireBoard400-OHCI\n\t\te4bf 1010  CF2-1-CYMBAL\n\t8020  TSB12LV26 IEEE-1394 Controller (Link)\n\t\t1028 00d8  Precision 530\n\t\t104d 80e2  VAIO PCV-J200\n\t\t11bd 000f  Studio DV500-1394\n\t\t11bd 001c  Excalibur 4.1\n\t\t1443 8010  FireBoard400-OHCI\n\t8021  TSB43AA22 IEEE-1394 Controller (PHY/Link Integrated)\n\t\t104d 80df  Vaio PCG-FX403\n\t\t104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP\n\t8022  TSB43AB22 IEEE-1394a-2000 Controller (PHY/Link) [iOHCI-Lynx]\n\t\t104c 8023  TSB43AB22/A IEEE-1394a-2000 Controller (PHY/Link)\n\t8023  TSB43AB22A IEEE-1394a-2000 Controller (PHY/Link) [iOHCI-Lynx]\n\t\t1028 0168  Precision Workstation 670 Mainboard\n\t\t103c 088c  NC8000 laptop\n\t\t1043 808b  K8N4/A8N Series Mainboard\n\t\t1043 815b  P5W DH Deluxe Motherboard\n\t\t1443 8023  FireCard400\n\t\t8086 5044  Desktop Board DP35DP\n\t8024  TSB43AB23 IEEE-1394a-2000 Controller (PHY/Link)\n\t\t107d 6620  Winfast DV2000 FireWire Controller\n\t\t1443 8024  FireBoard Blue\n\t\t1458 1000  Motherboard\n\t8025  TSB82AA2 IEEE-1394b Link Layer Controller\n\t\t1043 813c  P5P series mainboard\n\t\t1443 8025  FireBoard800\n\t\t1458 1000  GA-K8N Ultra-9 Mainboard\n\t\t1546 8025  FWB-PCI01\n\t\t17fc 8025  GIC3800\n\t8026  TSB43AB21 IEEE-1394a-2000 Controller (PHY/Link)\n\t\t1025 0035  TravelMate 660\n\t\t1025 003c  Aspire 2001WLCi (Compaq CL50 motherboard)\n\t\t103c 0025  XE4500 Notebook\n\t\t103c 006a  NX9500\n\t\t1043 808d  A7V333 mainboard.\n\t8027  PCI4451 IEEE-1394 Controller\n\t\t1028 00e5  Latitude C810\n\t\t1028 00e6  PCI4451 IEEE-1394 Controller (Dell Inspiron 8100)\n\t8029  PCI4510 IEEE-1394 Controller\n\t\t1028 0163  Latitude D505\n\t\t1028 0196  Inspiron 5160\n\t\t1071 8160  MIM2900\n\t802b  PCI7410,7510,7610 OHCI-Lynx Controller\n\t\t1028 0139  Latitude D400\n\t\t1028 014e  PCI7410,7510,7610 OHCI-Lynx Controller (Latitude D800)\n\t802e  PCI7x20 1394a-2000 OHCI Two-Port PHY/Link-Layer Controller\n\t\t1028 018d  Inspiron 700m/710m\n\t8031  PCIxx21/PCIxx11/PCIx515 PC Card Controller\n\t\t1025 0064  Extensa 3000 series laptop\n\t\t1025 0080  Aspire 5024WLMi\n\t\t103c 0934  Compaq nw8240/nx8220\n\t\t103c 0944  Compaq nc6220 Notebook PC\n\t\t103c 099c  NX6110/NC6120\n\t\t103c 308b  MX6125\n\t8032  OHCI Compliant IEEE 1394 Host Controller\n\t\t1025 0064  Extensa 3000 series laptop\n\t\t1025 0080  Aspire 5024WLMi\n\t\t103c 0934  Compaq nw8240/nx8220\n\t\t103c 099c  NX6110/NC6120\n\t\t103c 308b  MX6125\n\t8033  PCIxx21/PCIxx11 Flash Media Controller\n\t\t1025 0064  Extensa 3000 series laptop\n\t\t1025 0080  Aspire 5024WLMi\n\t\t103c 0934  Compaq nw8240/nx8220\n\t\t103c 0944  Compaq nc6220 Notebook PC\n\t\t103c 099c  NX6110/NC6120\n\t\t103c 308b  MX6125\n\t8034  PCIxx21/PCIxx11 SD Host Controller\n\t\t1025 0080  Aspire 5024WLMi\n\t\t103c 0934  Compaq nw8240/nx8220\n\t\t103c 0944  Compaq nc6220 Notebook PC\n\t\t103c 099c  NX6110/NC6120\n\t\t103c 308b  MX6125\n\t8035  PCIxx21/PCIxx11 Smart Card Controller\n\t\t103c 0934  Compaq nw8240/nx8220\n\t\t103c 0944  Compaq nc6220 Notebook PC\n\t\t103c 099c  NX6110/NC6120\n\t8036  PCI6515 Cardbus Controller\n\t8038  PCI6515 SmartCard Controller\n\t8039  PCIxx12 Cardbus Controller\n\t\t103c 309f  Compaq nx9420 Notebook\n\t\t103c 30a1  NC2400\n\t\t103c 30a3  Compaq nw8440\n\t\t104d 902d  VAIO VGN-NR120E\n\t803a  PCIxx12 OHCI Compliant IEEE 1394 Host Controller\n\t\t103c 309f  nx9420\n\t\t103c 30a1  NC2400\n\t\t103c 30a3  Compaq nw8440\n\t\t104d 902d  VAIO VGN-NR120E\n\t803b  PCIxx12 Flash Media Controller\n\t\t103c 309f  nx9420\n\t\t103c 30a3  Compaq nw8440\n\t\t104d 8212  VAIO VGN-N21E\n\t\t104d 902d  VAIO VGN-NR120E\n\t803c  PCIxx12 SDA Standard Compliant SD Host Controller\n\t\t103c 309f  nx9420\n\t\t103c 30a3  Compaq nw8440\n\t803d  PCIxx12 GemCore based SmartCard controller\n\t\t103c 309f  Compaq nx9420 Notebook\n\t\t103c 30a1  NC2400\n\t\t103c 30a3  nc8430\n\t\t103c 30aa  nc6310\n\t8101  TSB43DB42 IEEE-1394a-2000 Controller (PHY/Link)\n\t8201  PCI1620 Firmware Loading Function\n\t8204  PCI7410/7510/7610 PCI Firmware Loading Function\n\t\t1028 0139  Latitude D400\n\t\t1028 014e  Latitude D800\n\t8231  XIO2000(A)/XIO2200A PCI Express-to-PCI Bridge\n\t\t5678 1234  DC-1394 PCIe\n\t8232  XIO3130 PCI Express Switch (Upstream)\n\t8233  XIO3130 PCI Express Switch (Downstream)\n\t8235  XIO2200A IEEE-1394a-2000 Controller (PHY/Link)\n\t\t5678 1234  DC-1394 PCIe\n\t823e  XIO2213A/B/XIO2221 PCI Express to PCI Bridge [Cheetah Express]\n\t823f  XIO2213A/B/XIO2221 IEEE-1394b OHCI Controller [Cheetah Express]\n\t\t1546 803c  FWB-PCIE1X11B\n\t8240  XIO2001 PCI Express-to-PCI Bridge\n\t8241  TUSB73x0 SuperSpeed USB 3.0 xHCI Host Controller\n\t\t1014 04b2  S824 (8286-42A)\n\t8400  ACX 100 22Mbps Wireless Interface\n\t\t1186 3b00  DWL-650+ PC Card cardbus 22Mbs Wireless Adapter [AirPlus]\n\t\t1186 3b01  DWL-520+ 22Mbps PCI Wireless Adapter\n\t\t1395 2201  WL22-PC\n\t\t16ab 8501  WL-8305 IEEE802.11b+ Wireless LAN PCI Adapter\n\t8401  ACX 100 22Mbps Wireless Interface\n\t8888  Multicore DSP+ARM KeyStone II SOC\n\t9000  Wireless Interface (of unknown type)\n\t9065  TMS320DM642\n\t9066  ACX 111 54Mbps Wireless Interface\n\t\t0308 3404  G-102 v1 802.11g Wireless Cardbus Adapter\n\t\t0308 3406  G-162 v2 802.11g Wireless Cardbus Adapter\n\t\t104c 9066  WL212 Sitecom Wireless Network PCI-Card 100M (Version 1)\n# Found in Philips ADSL ANNEX A WLAN Router SNA6500/18 sold by Belgacom\n\t\t104c 9067  TNETW1130GVF\n\t\t104c 9096  Trendnet TEW-412PC Wireless PCI Adapter (Version A)\n\t\t1186 3b04  DWL-G520+ Wireless PCI Adapter\n\t\t1186 3b05  DWL-G650+ AirPlusG+ CardBus Wireless LAN\n\t\t1186 3b08  AirPlus G DWL-G630 Wireless Cardbus Adapter (rev.B1)\n\t\t1385 4c00  WG311v2 802.11g Wireless PCI Adapter\n\t\t13d1 aba0  SWLMP-54108 108Mbps Wireless mini PCI card 802.11g+\n\t\t14ea ab07  GW-NS54GM Wireless Cardbus Adapter\n\t\t16ec 010d  USR5416 802.11g Wireless Turbo PCI Adapter\n\t\t16ec 010e  USR5410 802.11g Wireless Cardbus Adapter\n\t\t1737 0033  WPC54G v2 802.11g Wireless-G Notebook Adapter\n\t\t17cf 0032  G-162 v1 802.11g Wireless Cardbus Adapter\n\t\t17cf 0033  Z-Com XG650 Wireless miniPCI 802.11b/g\n\t\t187e 340b  G-302 v2 802.11g Wireless PCI Adapter\n\t\t187e 340c  G-360 v2 802.11g Wireless PCI Adapter\n\ta001  TDC1570\n\ta100  TDC1561\n\ta102  TNETA1575 HyperSAR Plus w/PCI Host i/f & UTOPIA i/f\n\ta106  TMS320C6414 TMS320C6415 TMS320C6416\n\t\t175c 5000  ASI50xx Audio Adapter\n\t\t175c 6400  ASI6400 Cobranet series\n\t\t175c 8700  ASI87xx Radio Tuner card\n\tac10  PCI1050\n\tac11  PCI1053\n\tac12  PCI1130\n\tac13  PCI1031\n\tac15  PCI1131\n\tac16  PCI1250\n\t\t1014 0092  ThinkPad 600\n\tac17  PCI1220\n\tac18  PCI1260\n\tac19  PCI1221\n\tac1a  PCI1210\n\tac1b  PCI1450\n\t\t0e11 b113  Armada M700\n\t\t1014 0130  ThinkPad 600X/A21m/T20/T22\n\tac1c  PCI1225\n\t\t0e11 b121  Armada E500\n\t\t1028 0088  Latitude CPi A400XT\n\tac1d  PCI1251A\n\tac1e  PCI1211\n\tac1f  PCI1251B\n\tac20  TI 2030\n\tac21  PCI2031\n\tac22  PCI2032 PCI Docking Bridge\n\tac23  PCI2250 PCI-to-PCI Bridge\n\tac28  PCI2050 PCI-to-PCI Bridge\n\tac2c  PCI2060 PCI-to-PCI Bridge\n\tac30  PCI1260 PC card Cardbus Controller\n\tac40  PCI4450 PC card Cardbus Controller\n\tac41  PCI4410 PC card Cardbus Controller\n\tac42  PCI4451 PC card Cardbus Controller\n\t\t1028 00e6  PCI4451 PC card CardBus Controller (Inspiron 8100)\n\tac44  PCI4510 PC card Cardbus Controller\n\t\t1028 0149  Inspiron 5100\n\t\t1028 0163  Latitude D505\n\t\t1028 0196  Inspiron 5160\n\t\t1071 8160  MIM2000\n\tac46  PCI4520 PC card Cardbus Controller\n\t\t1014 0552  ThinkPad\n\tac47  PCI7510 PC card Cardbus Controller\n\t\t1028 0139  Latitude D400\n\t\t1028 013f  Precision M60\n\t\t1028 014e  Latitude D800\n\tac48  PCI7610 PC Card Cardbus Controller\n\tac49  PCI7410 PC Card Cardbus Controller\n\tac4a  PCI7510/7610 CardBus Bridge\n\t\t1028 0139  Latitude D400\n\t\t1028 014e  Latitude D800\n\tac4b  PCI7610 SD/MMC controller\n\tac4c  PCI7610 Memory Stick controller\n\tac50  PCI1410 PC card Cardbus Controller\n\tac51  PCI1420 PC card Cardbus Controller\n\t\t0e11 004e  Evo N600c\n\t\t1014 0148  ThinkPad A20m\n\t\t1014 023b  ThinkPad T23\n\t\t1028 00b1  Latitude C600\n\t\t1028 012a  Latitude C640\n\t\t1033 80cd  Versa Note VXi\n\t\t10cf 1095  Lifebook S-4510/C6155\n\t\te4bf 1000  CP2-2-HIPHOP\n\tac52  PCI1451 PC card Cardbus Controller\n\tac53  PCI1421 PC card Cardbus Controller\n\tac54  PCI1620 PC Card Controller\n\t\t103c 08b0  tc1100 tablet\n\tac55  PCI1520 PC card Cardbus Controller\n\t\t1014 0512  ThinkPad T30/T40\n\t\t103c 0025  XE4500 Notebook\n\tac56  PCI1510 PC card Cardbus Controller\n\t\t1014 0512  ThinkPad R50e\n\t\t1014 0528  ThinkPad R40e\n\t\t17aa 2012  ThinkPad T60/R60 series\n\tac60  PCI2040 PCI to DSP Bridge Controller\n\t\t175c 5100  ASI51xx Audio Adapter\n\t\t175c 6100  ASI61xx Audio Adapter\n\t\t175c 6200  ASI62xx Audio Adapter\n\t\t175c 8800  ASI88xx Audio Adapter\n\t\t186f 3001  WR-G303 PCI radio receiver\n\t\t186f 3005  WR-G305 PCI radio receiver\n\t\t186f 3101  WR-G313 PCI radio receiver\n\t\t186f 3105  WR-G315 PCI radio receiver\n\tac8d  PCI 7620\n\tac8e  PCI7420 CardBus Controller\n\t\t1028 018d  Inspiron 700m/710m\n\tac8f  PCI7420/7620 SD/MS-Pro Controller\n\t\t1028 018d  Inspiron 700m/710m\n\tb001  TMS320C6424\n\tfe00  FireWire Host Controller\n\tfe03  12C01A FireWire Host Controller\n104d  Sony Corporation\n\t8004  DTL-H2500 [Playstation development board]\n\t8009  CXD1947Q i.LINK Controller\n\t800c  DTL-H800 [PS1 sound development board]\n\t800d  DVBK-2000(E) DV Still Image Capture Board\n\t8039  CXD3222 i.LINK Controller\n\t8047  PS2 TOOL MRP\n\t8056  Rockwell HCF 56K modem\n\t808a  Memory Stick Controller\n\t80ff  PS2 Performance Analyzer\n\t814a  PS2 Performance Analyzer\n\t8183  ATHENS [PS3 prototype developer interface card]\n\t81b0  BM-1 [PSP TOOL Board Management Device]\n\t81c3  VO-4 [PSP TOOL Video Output Device]\n\t81ce  SxS Pro memory card\n\t81ff  PS3 TOOL MRP\n\t8200  PS3 TOOL RSX Tracing FPGA\n\t820e  CXD9208GP [PS3 PS2 emulation subsystem adapter]\n# 2nd ID\n\t905c  SxS Pro memory card\n# 2nd ID\n\t907f  SxS Pro+ memory card\n\t908f  Aeolia ACPI\n\t909e  Aeolia Ethernet Controller (Marvell Yukon 2 Family)\n\t909f  Aeolia SATA AHCI Controller\n\t90a0  Aeolia SD/MMC Host Controller\n\t90a1  Aeolia PCI Express Glue and Miscellaneous Devices\n\t90a2  Aeolia DMA Controller\n\t90a3  Aeolia Memory (DDR3/SPM)\n\t90a4  Aeolia USB 3.0 xHCI Host Controller\n\t90bc  SxS Pro+ memory card\n\t90c0  PCIe x8 XAVC Codec Board\n\t90c8  Belize ACPI\n\t90c9  Belize Ethernet Controller\n\t90ca  Belize SATA AHCI Controller\n\t90cb  Belize SD/MMC Host Controller\n\t90cc  Belize PCI Express Glue and Miscellaneous Devices\n\t90cd  Belize DMA Controller\n\t90ce  Belize Memory (DDR3/SPM)\n\t90cf  Belize USB 3.0 xHCI Host Controller\n\t90d7  Baikal ACPI\n\t90d8  Baikal Ethernet Controller\n\t90d9  Baikal SATA AHCI Controller\n\t90da  Baikal SD/MMC Host Controller\n\t90db  Baikal PCI Express Glue and Miscellaneous Devices\n\t90dc  Baikal DMA Controller\n\t90dd  Baikal Memory (DDR3/SPM)\n\t90de  Baikal USB 3.0 xHCI Host Controller\n\t90eb  CXD90062GG\n\t9121  Nextorage NEM-PA NVMe SSD for PlayStation\n104e  Oak Technology, Inc\n\t0017  OTI-64017\n\t0107  OTI-107 [Spitfire]\n\t0109  Video Adapter\n\t0111  OTI-64111 [Spitfire]\n\t0217  OTI-64217\n\t0317  OTI-64317\n104f  Co-time Computer Ltd\n1050  Winbond Electronics Corp\n\t0000  NE2000\n\t0001  W83769F\n\t0033  W89C33D 802.11 a/b/g BB/MAC\n\t0105  W82C105\n\t0628  W83628F/W83629D PCI to ISA Bridge Set\n\t0840  W89C840\n\t\t1050 0001  W89C840 Ethernet Adapter\n\t\t1050 0840  W89C840 Ethernet Adapter\n\t0940  W89C940\n\t5a5a  W89C940 Twisted-pair Ether-LAN Controller With PCI Interface [ELANC-PCI]\n\t6692  W6692 PCI ISDN S/T-Controller\n\t\t1043 1702  ISDN Adapter (PCI Bus, D, W)\n\t\t1043 1703  ISDN Adapter (PCI Bus, DV, W)\n\t\t1043 1707  ISDN Adapter (PCI Bus, DV, W)\n\t\t144f 1702  ISDN Adapter (PCI Bus, D, W)\n\t\t144f 1703  ISDN Adapter (PCI Bus, DV, W)\n\t\t144f 1707  ISDN Adapter (PCI Bus, DV, W)\n\t9921  W99200F MPEG-1 Video Encoder\n\t9922  W99200F/W9922PF MPEG-1/2 Video Encoder\n\t9960  W9960CF Video Codec\n\t9970  W9970CF\n1051  Anigma, Inc.\n1052  ?Young Micro Systems\n1053  Young Micro Systems\n1054  Hitachi, Ltd\n\t3009  2Gbps Fibre Channel to PCI HBA 3009\n\t300a  4Gbps Fibre Channel to PCI-X HBA 300a\n\t300b  4Gbps Fibre Channel to PCI-X HBA 300b\n\t300f  ColdFusion 3 Chipset Processor to I/O Controller\n\t3010  ColdFusion 3 Chipset Memory Controller Hub\n\t3011  ColdFusion 3e Chipset Processor to I/O Controller\n\t3012  ColdFusion 3e Chipset Memory Controller Hub\n\t3017  Unassigned Hitachi Shared FC Device 3017\n\t301b  Virtual VGA Device\n\t301d  PCIe-to-PCIe Bridge with Virtualization IO Assist Feature\n\t3020  FIVE-EX based Fibre Channel to PCIe HBA\n\t302c  M001 PCI Express Switch Upstream Port\n\t302d  M001 PCI Express Switch Downstream Port\n\t3070  Hitachi FIVE-FX Fibre Channel to PCIe HBA\n\t3505  SH7751 PCI Controller (PCIC)\n\t350e  SH7751R PCI Controller (PCIC)\n1055  Microchip Technology / SMSC\n\t7430  LAN7430\n\t7431  LAN7431\n\t\t1059 01a0  RD10055 M.2 Dual 1GbE-T1 40m\n\t9130  SLC90E66 [Victory66] IDE\n\t9460  SLC90E66 [Victory66] ISA\n\t9462  SLC90E66 [Victory66] USB\n\t9463  SLC90E66 [Victory66] ACPI\n\te420  LAN9420/LAN9420i\n1056  ICL\n# Motorola made a mistake and used 1507 instead of 1057 in some chips. Please look at the 1507 entry as well when updating this.\n1057  Motorola\n\t0001  MPC105 [Eagle]\n\t0002  MPC106 [Grackle]\n\t0003  MPC8240 [Kahlua]\n\t0004  MPC107\n\t0006  MPC8245 [Unity]\n\t0008  MPC8540\n\t0009  MPC8560\n\t0012  MPC8548 [PowerQUICC III]\n\t0100  MC145575 [HFC-PCI]\n\t0431  KTI829c 100VG\n\t1073  Nokia N770\n\t1219  Nokia N800\n\t1801  DSP56301 Digital Signal Processor\n\t\t14fb 0101  Transas Radar Imitator Board [RIM]\n\t\t14fb 0102  Transas Radar Imitator Board [RIM-2]\n\t\t14fb 0202  Transas Radar Integrator Board [RIB-2]\n\t\t14fb 0611  1 channel CAN bus Controller [CanPci-1]\n\t\t14fb 0612  2 channels CAN bus Controller [CanPci-2]\n\t\t14fb 0613  3 channels CAN bus Controller [CanPci-3]\n\t\t14fb 0614  4 channels CAN bus Controller [CanPci-4]\n\t\t14fb 0621  1 channel CAN bus Controller [CanPci2-1]\n\t\t14fb 0622  2 channels CAN bus Controller [CanPci2-2]\n\t\t14fb 0810  Transas VTS Radar Integrator Board [RIB-4]\n\t\t175c 4200  ASI4215 Audio Adapter\n\t\t175c 4300  ASI43xx Audio Adapter\n\t\t175c 4400  ASI4401 Audio Adapter\n\t\tecc0 0010  Darla\n\t\tecc0 0020  Gina\n\t\tecc0 0030  Layla rev.0\n\t\tecc0 0031  Layla rev.1\n\t\tecc0 0040  Darla24 rev.0\n\t\tecc0 0041  Darla24 rev.1\n\t\tecc0 0050  Gina24 rev.0\n\t\tecc0 0051  Gina24 rev.1\n\t\tecc0 0070  Mona rev.0\n\t\tecc0 0071  Mona rev.1\n\t\tecc0 0072  Mona rev.2\n\t18c0  MPC8265A/8266/8272\n\t18c1  MPC8271/MPC8272\n\t3052  SM56 Data Fax Modem\n\t3410  DSP56361 Digital Signal Processor\n\t\tecc0 0050  Gina24 rev.0\n\t\tecc0 0051  Gina24 rev.1\n\t\tecc0 0060  Layla24\n\t\tecc0 0070  Mona rev.0\n\t\tecc0 0071  Mona rev.1\n\t\tecc0 0072  Mona rev.2\n\t\tecc0 0080  Mia rev.0\n\t\tecc0 0081  Mia rev.1\n\t\tecc0 0090  Indigo\n\t\tecc0 00a0  Indigo IO\n\t\tecc0 00b0  Indigo DJ\n\t\tecc0 0100  3G\n\t4801  Raven\n\t4802  Falcon\n\t4803  Hawk\n\t4806  CPX8216\n# MPC7410 PowerPC microprocessor and PCI host bridge\n\t480b  MPC7410\n\t4d68  20268\n\t5600  SM56 PCI Modem\n\t\t1057 0300  SM56 PCI Speakerphone Modem\n\t\t1057 0301  SM56 PCI Voice Modem\n\t\t1057 0302  SM56 PCI Fax Modem\n\t\t1057 5600  SM56 PCI Voice modem\n\t\t13d2 0300  SM56 PCI Speakerphone Modem\n\t\t13d2 0301  SM56 PCI Voice modem\n\t\t13d2 0302  SM56 PCI Fax Modem\n\t\t1436 0300  SM56 PCI Speakerphone Modem\n\t\t1436 0301  SM56 PCI Voice modem\n\t\t1436 0302  SM56 PCI Fax Modem\n\t\t144f 100c  SM56 PCI Fax Modem\n\t\t1494 0300  SM56 PCI Speakerphone Modem\n\t\t1494 0301  SM56 PCI Voice modem\n\t\t14c8 0300  SM56 PCI Speakerphone Modem\n\t\t14c8 0302  SM56 PCI Fax Modem\n\t\t1668 0300  SM56 PCI Speakerphone Modem\n\t\t1668 0302  SM56 PCI Fax Modem\n\t5608  Wildcard X100P\n\t5803  MPC5200\n\t5806  MCF54 Coldfire\n\t5808  MPC8220\n\t5809  MPC5200B\n\t6400  MPC190 Security Processor (S1 family, encryption)\n\t6405  MPC184 Security Processor (S1 family)\n1058  Electronics & Telecommunications RSH\n1059  Kontron\n\t0004  FPGA M.2 (K20058)\n\t\t1059 0000  FPGA M.2 (K20058)\n105a  Promise Technology, Inc.\n\t0d30  PDC20265 (FastTrak100 Lite/Ultra100)\n\t\t1043 8042  AV7266-E South Bridge Promise RAID\n\t\t105a 4d33  Ultra100\n\t0d38  20263\n\t\t105a 4d39  Fasttrak66\n\t1275  20275\n\t3318  PDC20318 (SATA150 TX4)\n\t3319  PDC20319 (FastTrak S150 TX4)\n\t\t105a 3319  FastTrak S150 TX4 4 port SATA PCI board\n\t\t8086 3427  S875WP1-E mainboard\n\t3371  PDC20371 (FastTrak S150 TX2plus)\n\t3373  PDC20378 (FastTrak 378/SATA 378)\n\t\t1043 80f5  K8V Deluxe/PC-DL Deluxe motherboard\n\t\t1462 590d  KT6 Delta-FIS2R (MS-6590)\n\t\t1462 702e  K8T NEO FIS2R motherboard\n\t3375  PDC20375 (SATA150 TX2plus)\n\t3376  PDC20376 (FastTrak 376)\n\t\t1043 809e  A7V8X motherboard\n\t3515  PDC40719 [FastTrak TX4300/TX4310]\n\t3519  PDC40519 (FastTrak TX4200)\n\t3570  PDC20771 [FastTrak TX2300]\n\t3571  PDC20571 (FastTrak TX2200)\n\t3574  PDC20579 SATAII 150 IDE Controller\n\t3577  PDC40779 (SATA 300 779)\n\t3d17  PDC40718 (SATA 300 TX4)\n\t3d18  PDC20518/PDC40518 (SATAII 150 TX4)\n\t3d73  PDC40775 (SATA 300 TX2plus)\n\t3d75  PDC20575 (SATAII150 TX2plus)\n\t3f20  PDC42819 [FastTrak TX2650/TX4650]\n\t4302  80333 [SuperTrak EX4350]\n\t4d30  PDC20267 (FastTrak100/Ultra100)\n\t\t105a 4d33  Ultra100\n\t\t105a 4d39  FastTrak100\n\t\t8086 5744  S845WD1-E mainboard\n\t4d33  20246\n\t\t105a 4d33  20246 IDE Controller\n\t4d38  PDC20262 (FastTrak66/Ultra66)\n\t\t105a 4d30  Ultra Device on SuperTrak\n\t\t105a 4d33  Ultra66\n\t\t105a 4d39  FastTrak66\n\t4d68  PDC20268 [Ultra100 TX2]\n\t\t105a 4d68  Ultra100 TX2\n\t4d69  20269\n\t\t105a 4d68  Ultra133TX2\n\t5275  PDC20276 (MBFastTrak133 Lite)\n\t\t1043 807e  A7V333 motherboard.\n\t\t105a 0275  SuperTrak SX6000 IDE\n\t\t105a 1275  MBFastTrak133 Lite (tm) Controller (RAID mode)\n\t\t1458 b001  MBUltra 133\n\t5300  DC5300\n\t6268  PDC20270 (FastTrak100 LP/TX2/TX4)\n\t\t105a 4d68  FastTrak100 TX2\n\t6269  PDC20271 (FastTrak TX2000)\n\t\t105a 6269  FastTrak TX2/TX2000\n\t6300  PDC81731 [FastTrak SX8300]\n\t6621  PDC20621 (FastTrak S150 SX4/FastTrak SX4000 lite)\n\t6622  PDC20621 [SATA150 SX4] 4 Channel IDE RAID Controller\n\t6624  PDC20621 [FastTrak SX4100]\n\t6626  PDC20618 (Ultra 618)\n\t6629  PDC20619 (FastTrak TX4000)\n\t7275  PDC20277 (SBFastTrak133 Lite)\n\t8002  SATAII150 SX8\n\t8350  80333 [SuperTrak EX8350/EX16350], 80331 [SuperTrak EX8300/EX16300]\n\t8650  81384 [SuperTrak EX SAS and SATA RAID Controller]\n\t\t105a 4600  SuperTrak EX4650A\n\t\t105a 4601  SuperTrak EX4650\n\t\t105a 4610  SuperTrak EX4650EL\n\t\t105a 8600  SuperTrak EX8650EL\n\t\t105a 8601  SuperTrak EX8650A\n\t\t105a 8602  SuperTrak EX8654\n\t\t105a 8603  SuperTrak EX8658\n\t\t105a 8604  SuperTrak EX8650\n\t\t105a 8610  SuperTrak EX8650M\n\t\t105a a600  SuperTrak EX12650\n\t\t105a b600  SuperTrak EX16650\n\t\t105a b601  SuperTrak EX16654\n\t\t105a b602  SuperTrak EX16658\n\t8760  PM8010 [SuperTrak EX SAS and SATA 6G RAID Controller]\n\tc350  80333 [SuperTrak EX12350]\n\te350  80333 [SuperTrak EX24350]\n105b  Foxconn International, Inc.\n\t9602  RS780/RS880 PCI to PCI bridge (int gfx)\n\te0c3  T99W175 5G Modem [Snapdragon X55]\n105c  Wipro Infotech Limited\n105d  Number 9 Computer Company\n\t2309  Imagine 128\n\t2339  Imagine 128-II\n\t\t105d 0000  Imagine 128 series 2 4Mb VRAM\n\t\t105d 0001  Imagine 128 series 2 4Mb VRAM\n\t\t105d 0002  Imagine 128 series 2 4Mb VRAM\n\t\t105d 0003  Imagine 128 series 2 4Mb VRAM\n\t\t105d 0004  Imagine 128 series 2 4Mb VRAM\n\t\t105d 0005  Imagine 128 series 2 4Mb VRAM\n\t\t105d 0006  Imagine 128 series 2 4Mb VRAM\n\t\t105d 0007  Imagine 128 series 2 4Mb VRAM\n\t\t105d 0008  Imagine 128 series 2e 4Mb DRAM\n\t\t105d 0009  Imagine 128 series 2e 4Mb DRAM\n\t\t105d 000a  Imagine 128 series 2 8Mb VRAM\n\t\t105d 000b  Imagine 128 series 2 8Mb H-VRAM\n\t\t11a4 000a  Metheus 5 Megapixel\n\t\t13cc 0000  Metheus 5 Megapixel\n\t\t13cc 0004  Metheus 5 Megapixel\n\t\t13cc 0005  Metheus 5 Megapixel\n\t\t13cc 0006  Metheus 5 Megapixel\n\t\t13cc 0008  Metheus 5 Megapixel\n\t\t13cc 0009  Metheus 5 Megapixel\n\t\t13cc 000a  Metheus 5 Megapixel\n\t\t13cc 000c  Metheus 5 Megapixel\n\t493d  Imagine 128 T2R [Ticket to Ride]\n\t\t11a4 000a  Metheus 5 Megapixel, Dual Head\n\t\t11a4 000b  Metheus 5 Megapixel, Dual Head\n\t\t13cc 0002  Metheus 4 Megapixel, Dual Head\n\t\t13cc 0003  Metheus 5 Megapixel, Dual Head\n\t\t13cc 0007  Metheus 5 Megapixel, Dual Head\n\t\t13cc 0008  Metheus 5 Megapixel, Dual Head\n\t\t13cc 0009  Metheus 5 Megapixel, Dual Head\n\t\t13cc 000a  Metheus 5 Megapixel, Dual Head\n\t5348  Revolution 4\n\t\t105d 0037  Revolution IV-FP AGP (For SGI 1600SW)\n\t\t11a4 0028  PVS5600M\n\t\t11a4 0038  PVS5600D\n105e  Vtech Computers Ltd\n105f  Infotronic America Inc\n1060  United Microelectronics [UMC]\n\t0001  UM82C881\n\t0002  UM82C886\n\t0101  UM8673F\n\t0881  UM8881\n\t0886  UM8886F\n\t0891  UM8891A\n\t1001  UM886A\n\t673a  UM8886BF\n\t673b  EIDE Master/DMA\n\t8710  UM8710\n\t886a  UM8886A\n\t8881  UM8881F\n\t8886  UM8886F\n\t888a  UM8886A\n\t8891  UM8891A\n\t9017  UM9017F\n\t9018  UM9018\n\t9026  UM9026\n\te881  UM8881N\n\te886  UM8886N\n\te88a  UM8886N\n\te891  UM8891N\n1061  I.I.T.\n\t0001  AGX016\n\t0002  IIT3204/3501\n1062  Maspar Computer Corp\n1063  Ocean Office Automation\n1064  Alcatel\n\t1102  Dynamite 2840 (ADSL PCI modem)\n1065  Texas Microsystems\n1066  PicoPower Technology\n\t0000  PT80C826\n\t0001  PT86C521 [Vesuvius v1] Host Bridge\n\t0002  PT86C523 [Vesuvius v3] PCI-ISA Bridge Master\n\t0003  PT86C524 [Nile] PCI-to-PCI Bridge\n\t0004  PT86C525 [Nile-II] PCI-to-PCI Bridge\n\t0005  National PC87550 System Controller\n\t8002  PT86C523 [Vesuvius v3] PCI-ISA Bridge Slave\n1067  Mitsubishi Electric\n\t0301  AccelGraphics AccelECLIPSE\n\t0304  AccelGALAXY A2100 [OEM Evans & Sutherland]\n\t0308  Tornado 3000 [OEM Evans & Sutherland]\n\t1002  VG500 [VolumePro Volume Rendering Accelerator]\n1068  Diversified Technology\n1069  Mylex Corporation\n\t0001  DAC960P\n\t0002  DAC960PD\n\t0010  DAC960PG\n\t0020  DAC960LA\n\t0050  AcceleRAID 352/170/160 support Device\n\t\t1069 0050  AcceleRAID 352 support Device\n\t\t1069 0052  AcceleRAID 170 support Device\n\t\t1069 0054  AcceleRAID 160 support Device\n\tb166  AcceleRAID 600/500/400/Sapphire support Device\n\t\t1014 0242  iSeries 2872 DASD IOA\n\t\t1014 0266  Dual Channel PCI-X U320 SCSI Adapter\n\t\t1014 0278  Dual Channel PCI-X U320 SCSI RAID Adapter\n\t\t1014 02d3  Dual Channel PCI-X U320 SCSI Adapter\n\t\t1014 02d4  Dual Channel PCI-X U320 SCSI RAID Adapter\n\t\t1069 0200  AcceleRAID 400, Single Channel, PCI-X, U320, SCSI RAID\n\t\t1069 0202  AcceleRAID Sapphire, Dual Channel, PCI-X, U320, SCSI RAID\n\t\t1069 0204  AcceleRAID 500, Dual Channel, Low-Profile, PCI-X, U320, SCSI RAID\n\t\t1069 0206  AcceleRAID 600, Dual Channel, PCI-X, U320, SCSI RAID\n\tba55  eXtremeRAID 1100 support Device\n\tba56  eXtremeRAID 2000/3000 support Device\n\t\t1069 0030  eXtremeRAID 3000 support Device\n\t\t1069 0040  eXtremeRAID 2000 support Device\n\tba57  eXtremeRAID 4000/5000 support Device\n\t\t1069 0072  eXtremeRAID 5000 support Device\n106a  Aten Research Inc\n106b  Apple Inc.\n\t0001  Bandit PowerPC host bridge\n\t0002  Grand Central I/O\n\t0003  Control Video\n\t0004  PlanB Video-In\n\t0007  O'Hare I/O\n\t000b  Apple Camera\n\t000c  DOS on Mac\n\t000e  Hydra Mac I/O\n\t0010  Heathrow Mac I/O\n\t0017  Paddington Mac I/O\n\t0018  UniNorth FireWire\n\t0019  KeyLargo USB\n\t001e  UniNorth Internal PCI\n\t001f  UniNorth PCI\n\t0020  UniNorth AGP\n\t0021  UniNorth GMAC (Sun GEM)\n\t0022  KeyLargo Mac I/O\n\t0024  UniNorth/Pangea GMAC (Sun GEM)\n\t0025  KeyLargo/Pangea Mac I/O\n\t0026  KeyLargo/Pangea USB\n\t0027  UniNorth/Pangea AGP\n\t0028  UniNorth/Pangea PCI\n\t0029  UniNorth/Pangea Internal PCI\n\t002d  UniNorth 1.5 AGP\n\t002e  UniNorth 1.5 PCI\n\t002f  UniNorth 1.5 Internal PCI\n\t0030  UniNorth/Pangea FireWire\n\t0031  UniNorth 2 FireWire\n\t\t106b 5811  iBook G4 2004\n\t0032  UniNorth 2 GMAC (Sun GEM)\n\t0033  UniNorth 2 ATA/100\n\t0034  UniNorth 2 AGP\n\t0035  UniNorth 2 PCI\n\t0036  UniNorth 2 Internal PCI\n\t003b  UniNorth/Intrepid ATA/100\n\t003e  KeyLargo/Intrepid Mac I/O\n\t003f  KeyLargo/Intrepid USB\n\t\t1af4 1100  QEMU Virtual Machine\n\t0040  K2 KeyLargo USB\n\t0041  K2 KeyLargo Mac/IO\n\t0042  K2 FireWire\n\t0043  K2 ATA/100\n\t0045  K2 HT-PCI Bridge\n\t0046  K2 HT-PCI Bridge\n\t0047  K2 HT-PCI Bridge\n\t0048  K2 HT-PCI Bridge\n\t0049  K2 HT-PCI Bridge\n\t004a  CPC945 HT Bridge\n\t004b  U3 AGP\n\t004c  K2 GMAC (Sun GEM)\n\t004f  Shasta Mac I/O\n\t0050  Shasta IDE\n\t0051  Shasta (Sun GEM)\n\t0052  Shasta Firewire\n\t0053  Shasta PCI Bridge\n\t0054  Shasta PCI Bridge\n\t0055  Shasta PCI Bridge\n\t0056  U4 PCIe\n\t0057  U3 HT Bridge\n\t0058  U3L AGP Bridge\n\t0059  U3H AGP Bridge\n\t005b  CPC945 PCIe Bridge\n\t0066  Intrepid2 AGP Bridge\n\t0067  Intrepid2 PCI Bridge\n\t0068  Intrepid2 PCI Bridge\n\t0069  Intrepid2 ATA/100\n\t006a  Intrepid2 Firewire\n\t006b  Intrepid2 GMAC (Sun GEM)\n\t0074  U4 HT Bridge\n\t100c  Apple Silicon PCI Express Root Port\n\t1010  Apple Silicon USB4/Thunderbolt PCI Express Root Port\n# should be 14e4:1645\n\t1645  Broadcom NetXtreme BCM5701 Gigabit Ethernet\n\t1801  T2 Bridge Controller\n\t1802  T2 Secure Enclave Processor\n\t1803  Apple Audio Device\n\t2001  S1X NVMe Controller\n\t2002  S3ELab NVMe Controller\n\t2003  S3X NVMe Controller\n\t2005  ANS2 NVMe Controller\n106c  Hynix Semiconductor\n\t8139  8139c 100BaseTX Ethernet Controller\n\t8801  Dual Pentium ISA/PCI Motherboard\n\t8802  PowerPC ISA/PCI Motherboard\n\t8803  Dual Window Graphics Accelerator\n\t8804  LAN Controller\n\t8805  100-BaseT LAN\n106d  Sequent Computer Systems\n106e  DFI, Inc\n106f  City Gate Development Ltd\n1070  Daewoo Telecom Ltd\n1071  Mitac\n\t8160  Mitac 8060B Mobile Platform\n1072  GIT Co Ltd\n1073  Yamaha Corporation\n\t0001  3D GUI Accelerator\n\t0002  YGV615 [RPA3 3D-Graphics Controller]\n\t0003  YMF-740\n\t0004  YMF-724\n\t\t1073 0004  YMF724-Based PCI Audio Adapter\n\t0005  DS1 Audio\n\t\t1073 0005  DS-XG PCI Audio CODEC\n\t0006  DS1 Audio\n\t0008  DS1 Audio\n\t\t1073 0008  DS-XG PCI Audio CODEC\n\t000a  DS1L Audio\n\t\t1073 0004  DS-XG PCI Audio CODEC\n\t\t1073 000a  DS-XG PCI Audio CODEC\n\t\t8086 4d55  DS-XG PCI Audio CODEC [Intel MU440EX]\n\t000c  YMF-740C [DS-1L Audio Controller]\n\t\t107a 000c  DS-XG PCI Audio CODEC\n\t000d  YMF-724F [DS-1 Audio Controller]\n\t\t1073 000d  DS-XG PCI Audio CODEC\n\t0010  YMF-744B [DS-1S Audio Controller]\n\t\t1073 0006  DS-XG PCI Audio CODEC\n\t\t1073 0010  DS-XG PCI Audio CODEC\n\t0012  YMF-754 [DS-1E Audio Controller]\n\t\t1073 0012  DS-XG PCI Audio Codec\n\t0020  DS-1 Audio\n\t1000  SW1000XG [XG Factory]\n\t2000  DS2416 Digital Mixing Card\n\t\t1073 2000  DS2416 Digital Mixing Card\n1074  NexGen Microsystems\n\t4e78  82c500/1\n1075  Advanced Integrations Research\n1076  Chaintech Computer Co. Ltd\n1077  QLogic Corp.\n\t1016  ISP10160 Single Channel Ultra3 SCSI Processor\n\t1020  ISP1020/1040 Fast-wide SCSI\n\t1022  ISP1022 Fast-wide SCSI\n\t1080  ISP1080 SCSI Host Adapter\n\t1216  ISP12160 Dual Channel Ultra3 SCSI Processor\n\t\t101e 8471  QLA12160 on AMI MegaRAID\n\t\t101e 8493  QLA12160 on AMI MegaRAID\n\t1240  ISP1240 SCSI Host Adapter\n\t1280  ISP1280 SCSI Host Adapter\n\t1634  FastLinQ QL45000 Series 40GbE Controller\n\t\t1077 e4f1  FastLinQ QL45212H 40GbE Adapter\n\t\t1077 e4f2  FastLinQ QL45211H 40GbE Adapter\n\t\t1077 e4f3  FastLinQ QL45412H 40GbE Adapter\n\t\t1077 e4f4  FastLinQ QL45411H 40GbE Adapter\n\t1644  FastLinQ QL45000 Series 100GbE Controller\n\t\t1077 e4f8  FastLinQ QL45611H 100GbE Adapter\n\t1654  FastLinQ QL45000 Series 50GbE Controller\n\t\t1077 0032  QL45212 Flex 50Gb 2-port Ethernet Adapter\n\t\t1590 0223  Synergy 6810C 25/50Gb Ethernet Adapter\n\t\t1590 0287  Synergy 6820C 25/50Gb CNA\n\t1656  FastLinQ QL45000 Series 25GbE Controller\n\t\t1077 0033  QL45214 Flex 25Gb 4-port Ethernet Adapter\n\t\t1077 02a7  QL45212-DE 25GbE Adapter\n\t\t1077 e4f6  FastLinQ QL45211H 25GbE Adapter\n\t\t1077 e4f7  FastLinQ QL45212H 25GbE Adapter\n\t\t1590 0245  10/20/25GbE 2P 4820c CNA\n\t165c  FastLinQ QL45000 Series 10/25/40/50GbE Controller (FCoE)\n\t\t1077 0034  QL45262 Flex 50Gb 2-port Ethernet Adapter w/ iSCSI/FCoE\n\t\t1077 e4f1  FastLinQ QL45462H 40GbE FCoE Adapter\n\t\t1077 e4f2  FastLinQ QL45461H 40GbE FCoE Adapter\n\t\t1590 0245  10/20/25GbE 2P 4820c CNA FCoE\n\t165e  FastLinQ QL45000 Series 10/25/40/50GbE Controller (iSCSI)\n\t\t1077 0034  QL45262 Flex 50Gb 2-port Ethernet Adapter w/ iSCSI/FCoE\n\t\t1077 e4f1  FastLinQ QL45462H 40GbE iSCSI Adapter\n\t\t1077 e4f2  FastLinQ QL45461H 40GbE iSCSI Adapter\n\t\t1590 0245  10/20/25GbE 2P 4820c CNA iSCSI\n\t1664  FastLinQ QL45000 Series Gigabit Ethernet Controller (SR-IOV VF)\n\t\t1077 e4f1  FastLinQ QL45462H 40GbE Adapter (SR-IOV VF)\n\t\t1077 e4f2  FastLinQ QL45461H 40GbE Adapter (SR-IOV VF)\n\t\t1077 e4f3  FastLinQ QL45412H 40GbE Adapter (SR-IOV VF)\n\t\t1077 e4f4  FastLinQ QL45411H 40GbE Adapter (SR-IOV VF)\n\t\t1077 e4f6  FastLinQ QL45211H 25GbE Adapter (SR-IOV VF)\n\t\t1077 e4f7  FastLinQ QL45212H 25GbE Adapter (SR-IOV VF)\n\t\t1077 e4f8  FastLinQ QL45611H 100GbE Adapter (SR-IOV VF)\n\t\t1590 0245  10/20/25GbE 2P 4820c CNA SRIOV\n\t2020  ISP2020A Fast!SCSI Basic Adapter\n\t2031  ISP8324-based 16Gb Fibre Channel to PCI Express Adapter\n\t\t103c 17e7  SN1000Q 16Gb Single Port Fibre Channel Adapter\n\t\t103c 17e8  SN1000Q 16Gb Dual Port Fibre Channel Adapter\n\t\t103c 1939  QMH2672 16Gb Dual Port Fibre Channel Adapter\n\t\t103c 8002  3830C 16G Fibre Channel Host Bus Adapter\n\t\t1077 0241  QLE2670 16Gb Single Port Fibre Channel Adapter\n\t\t1077 0249  QLE2672 16Gb Dual Port Fibre Channel Adapter\n\t2071  ISP2714-based 16/32Gb Fibre Channel to PCIe Adapter\n\t\t1077 0283  QLE2764 Quad Port 32Gb Fibre Channel to PCIe Adapter\n\t\t1077 029e  QLE2694 Quad Port 16Gb Fibre Channel to PCIe Adapter\n\t\t1077 02a2  QLE2694L Quad Port 16Gb Fibre Channel to PCIe Adapter\n\t\t1077 02ad  QLE2694U Quad Port 16/32Gb Fibre Channel to PCIe Adapter\n\t2081  ISP2814-based 64/32G Fibre Channel to PCIe Controller\n\t\t1077 02e1  QLE2874 Quad Port 64GFC PCIe Gen4 x16 Adapter\n\t\t1077 02e3  QLE2774 Quad Port 32GFC PCIe Gen4 x16 Adapter\n\t2089  ISP2854-based 64/32G Fibre Channel to PCIe Controller with StorCryption\n\t\t1077 02e8  QLE2884 Quad Port 64GFC PCIe Gen4 x16 Adapter with StorCryption\n\t\t1077 02ea  QLE2784 Quad Port 32GFC PCIe Gen4 x16 Adapter with StorCryption\n\t2100  QLA2100 64-bit Fibre Channel Adapter\n\t\t1077 0001  QLA2100 64-bit Fibre Channel Adapter\n\t2200  QLA2200 64-bit Fibre Channel Adapter\n\t\t1077 0002  QLA2200\n\t2261  ISP2722-based 16/32Gb Fibre Channel to PCIe Adapter\n\t\t1077 0299  QLE2740 Single Port 32Gb Fibre Channel to PCIe Adapter\n\t\t1077 029a  QLE2742 Dual Port 32Gb Fibre Channel to PCIe Adapter\n\t\t1077 029b  QLE2690 Single Port 16Gb Fibre Channel to PCIe Adapter\n\t\t1077 029c  QLE2692 Dual Port 16Gb Fibre Channel to PCIe Adapter\n\t\t1077 02a7  QLE2690 Single Port 16Gb FC to PCIe Gen3 x8 Adapter\n\t\t1077 02a8  QLE2692 Dual Port 16Gb FC to PCIe Gen3 x8 Adapter\n\t\t1077 02ab  QLE2740 Single Port 32Gb FC to PCIe Gen3 x8 Adapter\n\t\t1077 02ac  QLE2742 Dual Port 32Gb FC to PCIe Gen3 x8 Adapter\n\t\t1077 02b8  2x16Gb QME2692 FC HBA\n\t\t1077 02b9  2x32Gb QME2742 FC HBA\n\t\t1590 00f9  StoreFabric SN1100Q 16Gb Single Port Fibre Channel Host Bus Adapter\n\t\t1590 00fa  StoreFabric SN1100Q 16Gb Dual Port Fibre Channel Host Bus Adapter\n\t\t1590 0203  StoreFabric SN1600Q 32Gb Single Port Fibre Channel Host Bus Adapter\n\t\t1590 0204  StoreFabric SN1600Q 32Gb Dual Port Fibre Channel Host Bus Adapter\n\t\t1590 022d  5830C 32Gb Dual Port Fibre Channel Adapter\n\t\t193d 100d  NIC-FC680i-Mb-2x16G\n\t2281  ISP2812-based 64/32G Fibre Channel to PCIe Controller\n\t\t1077 02e2  QLE2872 Dual Port 64GFC PCIe Gen4 x8 Adapter\n\t\t1077 02e4  QLE2772 Dual Port 32GFC PCIe Gen4 x8 Adapter\n\t\t1077 02ee  QLE2870 Single Port 64GFC PCIe Gen4 x8 Adapter\n\t\t1077 02f0  QLE2770 Single Port 32GFC PCIe Gen4 x8 Adapter\n\t\t1077 02f2  QLogic 1x32Gb QLE2770 FC HBA\n\t\t1077 02f3  QLogic 2x32Gb QLE2772 FC HBA\n\t\t1590 02d3  SN1610Q - 1P Enhanced 32GFC Single Port Fibre Channel Host Bus Adapter\n\t\t1590 02d4  SN1610Q - 2P Enhanced 32GFC Dual Port Fibre Channel Host Bus Adapter\n\t2289  ISP2852-based 64/32G Fibre Channel to PCIe Controller with StorCryption\n\t\t1077 02e9  QLE2882 Dual Port 64GFC PCIe Gen4 x8 Adapter with StorCryption\n\t\t1077 02eb  QLE2782 Dual Port 32GFC PCIe Gen4 x8 Adapter with StorCryption\n\t\t1077 02ef  QLE2880 Single Port 64GFC PCIe Gen4 x8 Adapter with StorCryption\n\t\t1077 02f1  QLE2780 Single Port 32GFC PCIe Gen4 x8 Adapter with StorCryption\n\t2300  QLA2300 64-bit Fibre Channel Adapter\n\t2312  ISP2312-based 2Gb Fibre Channel to PCI-X HBA\n\t\t103c 0131  2Gb Fibre Channel - Single port [A7538A]\n\t\t103c 12ba  2Gb Fibre Channel - Dual port [A6826A]\n\t2322  ISP2322-based 2Gb Fibre Channel to PCI-X HBA\n\t2422  ISP2422-based 4Gb Fibre Channel to PCI-X HBA\n\t\t103c 12d7  4Gb Fibre Channel [AB379A]\n\t\t103c 12dd  4Gb Fibre Channel [AB429A]\n\t2432  ISP2432-based 4Gb Fibre Channel to PCI Express HBA\n\t\t103c 7040  FC1142SR 4Gb 1-port PCIe Fibre Channel Host Bus Adapter [HPAE311A]\n\t\t1077 0137  QLE2460 Single-Port 4Gbps FC-to-PCI-X/PCIe Host Bus Adapter\n\t\t1077 0138  QLE2462 Dual-Port 4Gbps FC-to-PCI-X/PCIe Host Bus Adapter\n\t2532  ISP2532-based 8Gb Fibre Channel to PCI Express HBA\n\t\t1014 041e  FC EN0Y/EN12 PCIe2 LP 8 Gb 4-port Fibre Channel Adapter for POWER\n\t\t103c 3262  StorageWorks 81Q\n\t\t103c 3263  StorageWorks 82Q\n\t\t1077 015c  QLE2560 PCI Express to 8Gb FC Single Channel\n\t\t1077 015d  QLE2562 PCI Express to 8Gb FC Dual Channel\n\t\t1077 015e  QLE2564 PCI Express to 8Gb FC Quad Channel\n\t\t1077 0167  QME2572 Dual Port FC8 HBA Mezzanine\n\t\t1590 00fc  StoreFabric 84Q 8Gb Quad Port Fibre Channel Host Bus Adapter\n\t2971  ISP2684\n\t2981  32G SFP28 EP2744 Apatter\n\t\t1bd4 00b0  32G SFP28 EP2744 Apatter\n\t3022  ISP4022-based Ethernet NIC\n\t3032  ISP4032-based Ethernet IPv6 NIC\n\t4010  ISP4010-based iSCSI TOE HBA\n\t4022  ISP4022-based iSCSI TOE HBA\n\t4032  ISP4032-based iSCSI TOE IPv6 HBA\n\t5432  SP232-based 4Gb Fibre Channel to PCI Express HBA\n\t6312  SP202-based 2Gb Fibre Channel to PCI-X HBA\n\t6322  SP212-based 2Gb Fibre Channel to PCI-X HBA\n\t7220  IBA7220 InfiniBand HCA\n\t7322  IBA7322 QDR InfiniBand HCA\n\t8000  10GbE Converged Network Adapter (TCP/IP Networking)\n\t8001  10GbE Converged Network Adapter (FCoE)\n\t\t1014 03af  FC 5708/5270 10 Gb FCoE PCIe Dual Port Adapter for POWER\n\t8020  cLOM8214 1/10GbE Controller\n\t\t1028 1f64  QMD8262-k 10G DP bNDC KR\n\t\t103c 3346  CN1000Q Dual Port Converged Network Adapter\n\t\t103c 3733  NC523SFP 10Gb 2-port Server Adapter\n\t\t1077 0203  8200 Series Single Port 10GbE Converged Network Adapter (TCP/IP Networking)\n\t\t1077 0207  8200 Series Dual Port 10GbE Converged Network Adapter (TCP/IP Networking)\n\t\t1077 020b  3200 Series Dual Port 10Gb Intelligent Ethernet Adapter\n\t\t1077 020c  3200 Series Quad Port 1Gb Intelligent Ethernet Adapter\n\t\t1077 020f  3200 Series Single Port 10Gb Intelligent Ethernet Adapter\n\t\t1077 0210  QME8242-k 10GbE Dual Port Mezzanine Card\n\t\t1077 0233  QME8262-k 10GbE Dual Port Mezzanine Card\n\t8021  8200 Series 10GbE Converged Network Adapter (FCoE)\n\t\t103c 3348  CN1000Q Dual Port Converged Network Adapter\n\t\t1077 0211  QME8242-k 10GbE Dual Port Mezzanine Card, FCoE\n\t8022  8200 Series 10GbE Converged Network Adapter (iSCSI)\n\t\t103c 3347  CN1000Q Dual Port Converged Network Adapter\n\t\t1077 0212  QME8242-k 10GbE Dual Port Mezzanine Card, iSCSI\n\t8030  ISP8324 1/10GbE Converged Network Controller\n\t\t1077 0243  8300 Series Single Port 10GbE Converged Network Adapter (TCP/IP Networking)\n\t\t1077 0246  8300 Series Dual Port 10GbE Converged Network Adapter (TCP/IP Networking)\n\t8031  8300 Series 10GbE Converged Network Adapter (FCoE)\n\t8032  8300 Series 10GbE Converged Network Adapter (iSCSI)\n\t8070  FastLinQ QL41000 Series 10/25/40/50GbE Controller\n\t\t1077 0001  10GE 2P QL41162HxRJ-DE Adapter\n\t\t1077 0002  10GE 2P QL41112HxCU-DE Adapter\n\t\t1077 0004  4x10GE QL41164HFCU CNA\n\t\t1077 0005  QLogic 4x10GE QL41164HMRJ CNA\n\t\t1077 0006  QLogic 4x10GE QL41164HMCU CNA\n\t\t1077 0007  QLogic 2x1GE+2x10GE QL41264HMCU CNA\n\t\t1077 0009  QLogic 2x1GE+2x10GE QL41162HMRJ CNA\n\t\t1077 000b  25GE 2P QL41262HxCU-DE Adapter\n\t\t1077 000f  2x25GE QL41262HMKR CNA\n\t\t1077 0010  2x25GE QL41232HMKR NIC\n\t\t1077 0011  FastLinQ QL41212HLCU 25GbE Adapter\n\t\t1077 0012  FastLinQ QL41112H 10GbE Adapter\n\t\t1077 0019  QL41232HOCU - Dual Port 25/10GbE SFP28 OCP Adapter\n\t\t1077 0039  QLogic QL41262 PCIe 25Gb 2-Port SFP28 Ethernet Adapter\n\t\t1077 0053  QLogic 2x25GE QL41232HQCU NIC\n\t\t1077 0054  2x10GE QL41132HQRJ NIC\n\t\t1077 0055  QLogic 2x10GE QL41132HQCU NIC\n\t\t1077 0056  2x10GE QL41132HxRJ NIC\n\t\t1077 0057  2x25GE QL41232HxCU NIC\n\t\t1077 0065  QLogic 4x10GE QL41154HQRJ CNA\n\t\t1077 0066  QLogic 4x10GE QL41154HQCU CNA\n\t\t1077 0068  10GbE 2p SFP+ QL41132HLCU-HC Adapter\n\t\t1077 0069  10GbE 2p BASE-T QL41132HQRJ-HC OCP3 Adapter\n\t\t1077 0070  10GbE 2p BASE-T QL41132HLRJ-HC Adapter\n\t\t1077 0071  10GbE 2p SFP+ QL41132HQCU-HC OCP3 Adapter\n\t\t1077 0072  10GbE 4p SFP+ QL41134HLCU-HC Adapter\n\t\t1077 0073  10/25GbE 2p SFP28 QL41232HQCU-HC OCP3 Adapter\n\t\t1077 0074  10/25GbE 2p SFP28 QL41232HLCU-HC Adapter\n\t\t1590 021a  10GbE 2P QL41162HLRJ-HP Adapter\n\t\t1590 021b  10GbE 2P QL41162HLRJ-HP Adapter\n\t\t1590 021d  10/25GbE 2P QL41222HLCU-HP Adapter\n\t\t1590 021e  10/25GbE 2P QL41162HMRJ-HP Adapter\n\t\t1590 021f  10/25GbE 2P QL41262HMCU-HP Adapter\n\t\t1590 0220  10/25GbE 2P QL41122HLRJ-HP Adapter\n\t\t1590 02bd  10Gb 2P 524SFP+ NIC\n\t\t193d 1030  NIC-ETH681i-Mb-2x25G\n\t\t193d 1032  NIC-ETH682i-Mb-2x25G\n\t8080  FastLinQ QL41000 Series 10/25/40/50GbE Controller (FCoE)\n\t\t1077 0001  10GE 2P QL41162HxRJ-DE Adapter\n\t\t1077 0002  10GE 2P QL41112HxCU-DE Adapter\n\t\t1077 0004  4x10GE QL41164HFCU CNA\n\t\t1077 0005  QLogic 4x10GE QL41164HMRJ CNA\n\t\t1077 0006  QLogic 4x10GE QL41164HMCU CNA\n\t\t1077 0007  QLogic 2x1GE+2x10GE QL41264HMCU CNA\n\t\t1077 0009  QLogic 2x1GE+2x10GE QL41162HMRJ CNA\n\t\t1077 000b  25GE 2P QL41262HxCU-DE Adapter\n\t\t1077 000c  QLogic 2x25GE QL41262HMCU CNA\n\t\t1077 000d  FastLinQ QL41262H 25GbE FCoE Adapter\n\t\t1077 000e  FastLinQ QL41162H 10GbE FCoE Adapter\n\t\t1077 000f  2x25GE QL41262HMKR CNA\n\t\t1590 021a  10GbE 2P QL41162HLRJ-HP Adapter\n\t\t1590 021b  10GbE 2P QL41162HLRJ-HP Adapter\n\t8084  FastLinQ QL41000 Series 10/25/40/50GbE Controller (iSCSI)\n\t\t1077 0001  10GE 2P QL41162HxRJ-DE Adapter\n\t\t1077 0002  10GE 2P QL41112HxCU-DE Adapter\n\t\t1077 0003  4x10GE QL41164HxRJ CNA\n\t\t1077 0004  4x10GE QL41164HFCU CNA\n\t\t1077 0005  QLogic 4x10GE QL41164HMRJ CNA\n\t\t1077 0006  QLogic 4x10GE QL41164HMCU CNA\n\t\t1077 0007  QLogic 2x25GE QL41262HMCU CNA\n\t\t1077 0009  QLogic 2x1GE+2x10GE QL41162HMRJ CNA\n\t\t1077 000b  25GE 2P QL41262HxCU-DE Adapter\n\t\t1077 000c  QLogic 2x25GE QL41262HMCU CNA\n\t\t1077 000d  FastLinQ QL41262H 25GbE iSCSI Adapter\n\t\t1077 000e  FastLinQ QL41162H 10GbE iSCSI Adapter\n\t\t1077 000f  2x25GE QL41262HMKR CNA\n\t\t1077 0065  QLogic 4x10GE QL41154HQRJ CNA\n\t\t1077 0066  QLogic 4x10GE QL41154HQCU CNA\n\t\t1590 021a  10GbE 2P QL41162HLRJ-HP Adapter\n\t\t1590 021b  10GbE 2P QL41162HLRJ-HP Adapter\n\t8090  FastLinQ QL41000 Series Gigabit Ethernet Controller (SR-IOV VF)\n\t\t1077 0001  25GE 2P QL41262HxCU-DE Adapter\n\t\t1077 0002  10GE 2P QL41112HxCU-DE Adapter\n\t\t1077 0003  4x10GE QL41164HxRJ CNA\n\t\t1077 0004  4x10GE QL41164HFCU CNA\n\t\t1077 0005  QLogic 4x10GE QL41164HMRJ CNA\n\t\t1077 0006  QLogic 4x10GE QL41164HMCU CNA\n\t\t1077 0007  QLogic 2x1GE+2x10GE QL41264HMCU CNA\n\t\t1077 0009  QLogic 2x1GE+2x10GE QL41162HMRJ CNA\n\t\t1077 000b  25GE 2P QL41262HxCU-DE Adapter\n\t\t1077 000c  QLogic 2x25GE QL41262HMCU CNA\n\t\t1077 000d  FastLinQ QL41262H 25GbE FCoE Adapter (SR-IOV VF)\n\t\t1077 000e  FastLinQ QL41162H 10GbE iSCSI Adapter (SR-IOV VF)\n\t\t1077 000f  2x25GE QL41262HMKR CNA\n\t\t1077 0010  2x25GE QL41232HMKR NIC\n\t\t1077 0011  FastLinQ QL41212H 25GbE Adapter (SR-IOV VF)\n\t\t1077 0012  FastLinQ QL41112H 10GbE Adapter (SR-IOV VF)\n\t\t1077 0053  QLogic 2x25GE QL41232HQCU NIC\n\t\t1077 0054  QLogic 2x10GE QL41132HQRJ NIC\n\t\t1077 0055  QLogic 2x10GE QL41132HQCU NIC\n\t\t1077 0056  2x10GE QL41132HxRJ NIC\n\t\t1077 0057  2x25GE QL41232HxCU NIC\n\t\t1077 0065  QLogic 4x10GE QL41154HQRJ CNA\n\t\t1077 0066  QLogic 4x10GE QL41154HQCU CNA\n\t\t1590 021a  10GbE 2P QL41162HLRJ-HP Adapter\n\t\t1590 021b  10GbE 2P QL41162HLRJ-HP Adapter\n\t\t1590 021e  10/25GbE 2P QL41162HMRJ-HP Adapter\n\t\t1590 021f  10/25GbE 2P QL41262HMCU-HP Adapter\n\t\t1590 02bd  10Gb 2P 524SFP+ NIC\n\t8430  ISP8324 1/10GbE Converged Network Controller (NIC VF)\n\t8431  8300 Series 10GbE Converged Network Adapter (FCoE VF)\n\t8432  ISP2432M-based 10GbE Converged Network Adapter (CNA)\n1078  Cyrix Corporation\n\t0000  5510 [Grappa]\n\t0001  PCI Master\n\t0002  5520 [Cognac]\n\t0100  5530 Legacy [Kahlua]\n\t0101  5530 SMI [Kahlua]\n\t0102  5530 IDE [Kahlua]\n\t0103  5530 Audio [Kahlua]\n\t0104  5530 Video [Kahlua]\n\t0400  ZFMicro PCI Bridge\n\t0401  ZFMicro Chipset SMI\n\t0402  ZFMicro Chipset IDE\n\t0403  ZFMicro Expansion Bus\n1079  I-Bus\n107a  NetWorth\n# formerly Gateway 2000 / acquired by Acer Inc.\n107b  Gateway, Inc.\n107c  LG Electronics [Lucky Goldstar Co. Ltd]\n107d  LeadTek Research Inc.\n\t0000  P86C850\n107e  Interphase Corporation\n\t0001  5515 ATM Adapter [Flipper]\n\t0002  100 VG AnyLan Controller\n\t0004  5526 Fibre Channel Host Adapter\n\t0005  x526 Fibre Channel Host Adapter\n\t0008  5525/5575 ATM Adapter (155 Mbit) [Atlantic]\n\t9003  5535-4P-BRI-ST\n\t9007  5535-4P-BRI-U\n\t9008  5535-1P-SR\n\t900c  5535-1P-SR-ST\n\t900e  5535-1P-SR-U\n\t9011  5535-1P-PRI\n\t9013  5535-2P-PRI\n\t9023  5536-4P-BRI-ST\n\t9027  5536-4P-BRI-U\n\t9031  5536-1P-PRI\n\t9033  5536-2P-PRI\n107f  Data Technology Corporation\n\t0802  SL82C105\n1080  Contaq Microsystems\n\t0600  82C599\n\tc691  Cypress CY82C691\n\tc693  82c693\n1081  Supermac Technology\n\t0d47  Radius PCI to NuBUS Bridge\n1082  EFA Corporation of America\n1083  Forex Computer Corporation\n\t0001  FR710\n1084  Parador\n1086  J. Bond Computer Systems\n1087  Cache Computer\n1088  Microcomputer Systems (M) Son\n1089  Data General Corporation\n# Formerly Bit3 Computer Corp.\n108a  SBS Technologies\n\t0001  VME Bridge Model 617\n\t0010  VME Bridge Model 618\n\t0040  dataBLIZZARD\n\t3000  VME Bridge Model 2706\n108c  Oakleigh Systems Inc.\n108d  Olicom\n\t0001  Token-Ring 16/4 PCI Adapter (3136/3137)\n\t0002  16/4 Token Ring\n\t0004  RapidFire OC-3139/3140 Token-Ring 16/4 PCI Adapter\n\t\t108d 0004  OC-3139/3140 RapidFire Token-Ring 16/4 Adapter\n\t0005  GoCard 3250 Token-Ring 16/4 CardBus PC Card\n\t0006  OC-3530 RapidFire Token-Ring 100\n\t0007  RapidFire 3141 Token-Ring 16/4 PCI Fiber Adapter\n\t\t108d 0007  OC-3141 RapidFire Token-Ring 16/4 Adapter\n\t0008  RapidFire 3540 HSTR 100/16/4 PCI Adapter\n\t\t108d 0008  OC-3540 RapidFire HSTR 100/16/4 Adapter\n\t0011  OC-2315\n\t0012  OC-2325\n\t0013  OC-2183/2185\n\t0014  OC-2326\n\t0019  OC-2327/2250 10/100 Ethernet Adapter\n\t\t108d 0016  OC-2327 Rapidfire 10/100 Ethernet Adapter\n\t\t108d 0017  OC-2250 GoCard 10/100 Ethernet Adapter\n\t0021  OC-6151/6152 [RapidFire ATM 155]\n\t0022  ATM Adapter\n108e  Oracle/SUN\n\t0001  EBUS\n\t1000  STP2003QFP [PCIO] EBUS\n\t1001  Happy Meal 10/100 Ethernet [hme]\n\t1100  RIO EBUS\n\t\t108e 1100  RIO EBUS on Blade 100 motherboard\n\t1101  RIO 10/100 Ethernet [eri]\n\t\t108e 1101  RIO GEM on Blade 100 motherboard\n\t1102  RIO 1394\n\t\t108e 1102  RIO 1394 on Blade 100 motherboard\n\t1103  RIO USB\n\t\t108e 1103  RIO USB on Blade 100 motherboard\n\t1647  Broadcom 570x 10/100/1000 Ethernet [bge]\n\t1648  Broadcom 570x 10/100/1000 Ethernet [bge]\n\t16a7  Broadcom 570x 10/100/1000 Ethernet [bge]\n\t16a8  Broadcom 570x 10/100/1000 Ethernet [bge]\n\t2bad  GEM 10/100/1000 Ethernet [ge]\n\t5000  Simba Advanced PCI Bridge\n\t\t108e 5000  Netra AX1105-500\n\t5043  SunPCI Co-processor\n\t5ca0  Crypto Accelerator 6000 [mca]\n\t6300  Intel 21554 PCI-PCI bus bridge [db21554]\n\t6301  Intel 21554 PCI-PCI bus bridge [db21554]\n\t6302  Intel 21554 PCI-PCI bus bridge [db21554]\n\t6303  Intel 21554 PCI-PCI bus bridge [db21554]\n\t6310  Intel 21554 PCI-PCI bus bridge [db21554]\n\t6311  Intel 21554 PCI-PCI bus bridge [db21554]\n\t6312  Intel 21554 PCI-PCI bus bridge [db21554]\n\t6313  Intel 21554 PCI-PCI bus bridge [db21554]\n\t6320  Intel 21554 PCI-PCI bus bridge [db21554]\n\t6323  Intel 21554 PCI-PCI bus bridge [db21554]\n\t6330  Intel 21554 PCI-PCI bus bridge [db21554]\n\t6331  Intel 21554 PCI-PCI bus bridge [db21554]\n\t6332  Intel 21554 PCI-PCI bus bridge [db21554]\n\t6333  Intel 21554 PCI-PCI bus bridge [db21554]\n\t6340  Intel 21554 PCI-PCI bus bridge [db21554]\n\t6343  Intel 21554 PCI-PCI bus bridge [db21554]\n\t6350  Intel 21554 PCI-PCI bus bridge [db21554]\n\t6353  Intel 21554 PCI-PCI bus bridge [db21554]\n\t6722  Intel 21554 PCI-PCI bus bridge [db21554]\n\t676e  SunPCiIII\n\t7063  SunPCiII / SunPCiIIpro\n\t8000  Psycho PCI Bus Module\n\t8001  Schizo PCI Bus Module\n\t8002  Schizo+ PCI Bus Module\n\t80f0  PCIe switch [px]\n\t80f8  PCIe switch [px]\n\t9010  PCIe/PCI bridge switch [pxb_plx]\n\t9020  PCIe/PCI bridge switch [pxb_plx]\n\t9102  Davicom Fast Ethernet driver for Davicom DM9102A [dmfe]\n\ta000  Psycho UPA-PCI Bus Module [pcipsy]\n\ta001  Psycho UPA-PCI Bus Module [pcipsy]\n\t\t108e a001  Ultra IIe on Blade 100 motherboard\n\ta801  Schizo Fireplane-PCI bus bridge module [pcisch]\n\taaaa  Multithreaded Shared 10GbE Ethernet Network Controller\n\tabba  Cassini 10/100/1000\n\tabcd  Multithreaded 10-Gigabit Ethernet Network Controller\n\tc416  Sun Fire System/System Controller Interface chip [sbbc]\n108f  Systemsoft\n1090  Compro Computer Services, Inc.\n\t4610  PCI RTOM\n\t4620  GPIO HSD\n1091  Intergraph Corporation\n\t0020  3D graphics processor\n\t0021  3D graphics processor w/Texturing\n\t0040  3D graphics frame buffer\n\t0041  3D graphics frame buffer\n\t0060  Proprietary bus bridge\n\t00e4  Powerstorm 4D50T\n\t0720  Motion JPEG codec\n\t0780  Intense3D Wildcat 3410 (MSMT496)\n\t07a0  Sun Expert3D-Lite Graphics Accelerator\n\t1091  Sun Expert3D Graphics Accelerator\n1092  Diamond Multimedia Systems\n\t0028  Viper V770\n\t\t1092 4a00  Viper V770 32MB\n\t00a0  Speedstar Pro SE\n\t00a8  Speedstar 64\n\t0550  Viper V550\n\t08d4  Supra 2260 Modem\n\t094c  SupraExpress 56i Pro\n\t1001  Video Crunch It 1001 capture card\n\t1092  Viper V330\n\t6120  Maximum DVD\n\t8810  Stealth SE\n\t8811  Stealth 64/SE\n\t8880  Stealth\n\t8881  Stealth\n\t88b0  Stealth 64\n\t88b1  Stealth 64\n\t88c0  Stealth 64\n\t88c1  Stealth 64\n\t88d0  Stealth 64\n\t88d1  Stealth 64\n\t88f0  Stealth 64\n\t88f1  Stealth 64\n\t9999  DMD-I0928-1 \"Monster sound\" sound chip\n1093  National Instruments\n\t0160  PCI-DIO-96\n\t0162  PCI-MIO-16XE-50\n\t0fe1  PXI-8320\n\t1150  PCI-6533 (PCI-DIO-32HS)\n\t1170  PCI-MIO-16XE-10\n\t1180  PCI-MIO-16E-1\n\t1190  PCI-MIO-16E-4\n\t11b0  PXI-6070E\n\t11c0  PXI-6040E\n\t11d0  PXI-6030E\n\t1270  PCI-6032E\n\t1290  PCI-6704\n\t12b0  PCI-6534\n\t1310  PCI-6602\n\t1320  PXI-6533\n\t1330  PCI-6031E\n\t1340  PCI-6033E\n\t1350  PCI-6071E\n\t1360  PXI-6602\n\t13c0  PXI-6508\n\t1490  PXI-6534\n\t14e0  PCI-6110\n\t14f0  PCI-6111\n\t1580  PXI-6031E\n\t15b0  PXI-6071E\n\t1710  PXI-6509\n\t17c0  PXI-5690\n\t17d0  PCI-6503\n\t1870  PCI-6713\n\t1880  PCI-6711\n\t18b0  PCI-6052E\n\t18c0  PXI-6052E\n\t1920  PXI-6704\n\t1930  PCI-6040E\n\t19c0  PCI-4472\n\t1aa0  PXI-4110\n\t1ad0  PCI-6133\n\t1ae0  PXI-6133\n\t1e30  PCI-6624\n\t1e40  PXI-6624\n\t1e50  PXI-5404\n\t2410  PCI-6733\n\t2420  PXI-6733\n\t2430  PCI-6731\n\t2470  PCI-4474\n\t24a0  PCI-4065\n\t24b0  PXI-4200\n\t24f0  PXI-4472\n\t2510  PCI-4472\n\t2520  PCI-4474\n\t27a0  PCI-6123\n\t27b0  PXI-6123\n\t2880  DAQCard-6601\n\t2890  PCI-6036E\n\t28a0  PXI-4461\n\t28b0  PCI-6013\n\t28c0  PCI-6014\n\t28d0  PCI-5122\n\t28e0  PXI-5122\n\t29f0  PXI-7334\n\t2a00  PXI-7344\n\t2a60  PCI-6023E\n\t2a70  PCI-6024E\n\t2a80  PCI-6025E\n\t2ab0  PXI-6025E\n\t2b10  PXI-6527\n\t2b20  PCI-6527\n\t2b80  PXI-6713\n\t2b90  PXI-6711\n\t2c60  PCI-6601\n\t2c70  PXI-6601\n\t2c80  PCI-6035E\n\t2c90  PCI-6703\n\t2ca0  PCI-6034E\n\t2cb0  PCI-7344\n\t2cc0  PXI-6608\n\t2d20  PXI-5600\n\t2db0  PCI-6608\n\t2dc0  PCI-4070\n\t2dd0  PXI-4070\n\t2eb0  PXI-4472\n\t2ec0  PXI-6115\n\t2ed0  PCI-6115\n\t2ee0  PXI-6120\n\t2ef0  PCI-6120\n\t2fd1  PCI-7334\n\t2fd2  PCI-7350\n\t2fd3  PCI-7342\n\t2fd5  PXI-7350\n\t2fd6  PXI-7342\n\t7003  PCI-6551\n\t7004  PXI-6551\n\t700b  PXI-5421\n\t700c  PCI-5421\n\t701a  VXIpc-87xB\n\t701b  VXIpc-770\n\t7023  PXI-2593\n\t7027  PCI-MXI-2 Universal\n\t702c  PXI-7831R\n\t702d  PCI-7831R\n\t702e  PXI-7811R\n\t702f  PCI-7811R\n\t7030  PCI-CAN (Series 2)\n\t7031  PCI-CAN/2 (Series 2)\n\t7032  PCI-CAN/LS (Series 2)\n\t7033  PCI-CAN/LS2 (Series 2)\n\t7034  PCI-CAN/DS (Series 2)\n\t7035  PXI-8460 (Series 2, 1 port)\n\t7036  PXI-8460 (Series 2, 2 ports)\n\t7037  PXI-8461 (Series 2, 1 port)\n\t7038  PXI-8461 (Series 2, 2 ports)\n\t7039  PXI-8462 (Series 2)\n\t703f  PXI-2566\n\t7040  PXI-2567\n\t7044  MXI-4 Connection Monitor\n\t7047  PXI-6653\n\t704c  PXI-2530\n\t704f  PXI-4220\n\t7050  PXI-4204\n\t7055  PXI-7830R\n\t7056  PCI-7830R\n\t705a  PCI-CAN/XS (Series 2)\n\t705b  PCI-CAN/XS2 (Series 2)\n\t705c  PXI-8464 (Series 2, 1 port)\n\t705d  PXI-8464 (Series 2, 2 ports)\n\t705e  cRIO-9102\n\t7060  PXI-5610\n\t7064  PXI-1045 Trigger Routing Module\n\t7065  PXI-6652\n\t7066  PXI-6651\n\t7067  PXI-2529\n\t7068  PCI-CAN/SW (Series 2)\n\t7069  PCI-CAN/SW2 (Series 2)\n\t706a  PXI-8463 (Series 2, 1 port)\n\t706b  PXI-8463 (Series 2, 2 ports)\n\t7073  PCI-6723\n\t7074  PXI-7833R\n\t7075  PXI-6552\n\t7076  PCI-6552\n\t707c  PXI-1428\n\t707e  PXI-4462\n\t7080  PXI-8430/2 (RS-232) Interface\n\t7081  PXI-8431/2 (RS-485) Interface\n\t7083  PCI-7833R\n\t7085  PCI-6509\n\t7086  PXI-6528\n\t7087  PCI-6515\n\t7088  PCI-6514\n\t708c  PXI-2568\n\t708d  PXI-2569\n\t70a9  PCI-6528\n\t70aa  PCI-6229\n\t70ab  PCI-6259\n\t70ac  PCI-6289\n\t70ad  PXI-6251\n\t70ae  PXI-6220\n\t70af  PCI-6221\n\t70b0  PCI-6220\n\t70b1  PXI-6229\n\t70b2  PXI-6259\n\t70b3  PXI-6289\n\t70b4  PCI-6250\n\t70b5  PXI-6221\n\t70b6  PCI-6280\n\t70b7  PCI-6254\n\t70b8  PCI-6251\n\t70b9  PXI-6250\n\t70ba  PXI-6254\n\t70bb  PXI-6280\n\t70bc  PCI-6284\n\t70bd  PCI-6281\n\t70be  PXI-6284\n\t70bf  PXI-6281\n\t70c0  PCI-6143\n\t70c3  PCI-6511\n\t70c4  PXI-7330\n\t70c5  PXI-7340\n\t70c6  PCI-7330\n\t70c7  PCI-7340\n\t70c8  PCI-6513\n\t70c9  PXI-6515\n\t70ca  PCI-1405\n\t70cc  PCI-6512\n\t70cd  PXI-6514\n\t70ce  PXI-1405\n\t70cf  PCIe-GPIB\n\t70d0  PXI-2570\n\t70d1  PXI-6513\n\t70d2  PXI-6512\n\t70d3  PXI-6511\n\t70d4  PCI-6722\n\t70d6  PXI-4072\n\t70d7  PXI-6541\n\t70d8  PXI-6542\n\t70d9  PCI-6541\n\t70da  PCI-6542\n\t70db  PCI-8430/2 (RS-232) Interface\n\t70dc  PCI-8431/2 (RS-485) Interface\n\t70dd  PXI-8430/4 (RS-232) Interface\n\t70de  PXI-8431/4 (RS-485) Interface\n\t70df  PCI-8430/4 (RS-232) Interface\n\t70e0  PCI-8431/4 (RS-485) Interface\n\t70e1  PXI-2532\n\t70e2  PXI-8430/8 (RS-232) Interface\n\t70e3  PXI-8431/8 (RS-485) Interface\n\t70e4  PCI-8430/8 (RS-232) Interface\n\t70e5  PCI-8431/8 (RS-485) Interface\n\t70e6  PXI-8430/16 (RS-232) Interface\n\t70e7  PCI-8430/16 (RS-232) Interface\n\t70e8  PXI-8432/2 (Isolated RS-232) Interface\n\t70e9  PXI-8433/2 (Isolated RS-485) Interface\n\t70ea  PCI-8432/2 (Isolated RS-232) Interface\n\t70eb  PCI-8433/2 (Isolated RS-485) Interface\n\t70ec  PXI-8432/4 (Isolated RS-232) Interface\n\t70ed  PXI-8433/4 (Isolated RS-485) Interface\n\t70ee  PCI-8432/4 (Isolated RS-232) Interface\n\t70ef  PCI-8433/4 (Isolated RS-485) Interface\n\t70f0  PXI-5922\n\t70f1  PCI-5922\n\t70f2  PCI-6224\n\t70f3  PXI-6224\n\t70f6  cRIO-9101\n\t70f7  cRIO-9103\n\t70f8  cRIO-9104\n\t70ff  PXI-6723\n\t7100  PXI-6722\n\t7104  PCIx-1429\n\t7105  PCIe-1429\n\t710a  PXI-4071\n\t710d  PXI-6143\n\t710e  PCIe-GPIB\n\t710f  PXI-5422\n\t7110  PCI-5422\n\t7111  PXI-5441\n\t7119  PXI-6561\n\t711a  PXI-6562\n\t711b  PCI-6561\n\t711c  PCI-6562\n\t7120  PCI-7390\n\t7121  PXI-5122EX\n\t7122  PCI-5122EX\n\t7123  PXIe-5653\n\t7124  PCI-6510\n\t7125  PCI-6516\n\t7126  PCI-6517\n\t7127  PCI-6518\n\t7128  PCI-6519\n\t7137  PXI-2575\n\t713c  PXI-2585\n\t713d  PXI-2586\n\t7142  PXI-4224\n\t7144  PXI-5124\n\t7145  PCI-5124\n\t7146  PCI-6132\n\t7147  PXI-6132\n\t7148  PCI-6122\n\t7149  PXI-6122\n\t714c  PXI-5114\n\t714d  PCI-5114\n\t7150  PXI-2564\n\t7152  PCI-5640R\n\t7156  PXI-1044 Trigger Routing Module\n\t715d  PCI-1426\n\t7167  PXI-5412\n\t7168  PCI-5412\n\t716b  PCI-6230\n\t716c  PCI-6225\n\t716d  PXI-6225\n\t716f  PCI-4461\n\t7170  PCI-4462\n\t7171  PCI-6010\n\t7174  PXI-8360\n\t7177  PXI-6230\n\t717d  PCIe-6251\n\t717f  PCIe-6259\n\t7187  PCI-1410\n\t718b  PCI-6521\n\t718c  PXI-6521\n\t7191  PCI-6154\n\t7193  PXI-7813R\n\t7194  PCI-7813R\n\t7195  PCI-8254R\n\t7197  PXI-5402\n\t7198  PCI-5402\n\t719f  PCIe-6535\n\t71a0  PCIe-6536\n\t71a3  PXI-5650\n\t71a4  PXI-5652\n\t71a5  PXI-2594\n\t71a7  PXI-2595\n\t71a9  PXI-2596\n\t71aa  PXI-2597\n\t71ab  PXI-2598\n\t71ac  PXI-2599\n\t71ad  PCI-GPIB+\n\t71ae  PCIe-1430\n\t71b7  PXI-1056 Trigger Routing Module\n\t71b8  PXI-1045 Trigger Routing Module\n\t71b9  PXI-1044 Trigger Routing Module\n\t71bb  PXI-2584\n\t71bc  PCI-6221 (37-pin)\n\t71bf  PCIe-1427\n\t71c5  PCI-6520\n\t71c6  PXI-2576\n\t71c7  cRIO-9072\n\t71dc  PCI-1588\n\t71e0  PCI-6255\n\t71e1  PXI-6255\n\t71e2  PXI-5406\n\t71e3  PCI-5406\n\t71fc  PXI-4022\n\t7209  PCI-6233\n\t720a  PXI-6233\n\t720b  PCI-6238\n\t720c  PXI-6238\n\t7260  PXI-5142\n\t7261  PCI-5142\n\t726d  PXI-5651\n\t7273  PXI-4461\n\t7274  PXI-4462\n\t7279  PCI-6232\n\t727a  PXI-6232\n\t727b  PCI-6239\n\t727c  PXI-6239\n\t727e  SMBus Controller\n\t\t1093 75ac  PXIe-8388\n\t\t1093 75ad  PXIe-8389\n\t\t1093 7650  PXIe-8381\n\t\t1093 8360  PXIe-8360\n\t\t1093 8370  PXIe-8370\n\t\t1093 8375  PXIe-8375\n\t7281  PCI-6236\n\t7282  PXI-6236\n\t7283  PXI-2554\n\t7288  PXIe-5611\n\t7293  PCIe-8255R\n\t729d  cRIO-9074\n\t72a4  PCIe-4065\n\t72a7  PCIe-6537\n\t72a8  PXI-5152\n\t72a9  PCI-5152\n\t72aa  PXI-5105\n\t72ab  PCI-5105\n\t72b8  PXI-6682\n\t72d0  PXI-2545\n\t72d1  PXI-2546\n\t72d2  PXI-2547\n\t72d3  PXI-2548\n\t72d4  PXI-2549\n\t72d5  PXI-2555\n\t72d6  PXI-2556\n\t72d7  PXI-2557\n\t72d8  PXI-2558\n\t72d9  PXI-2559\n\t72e8  PXIe-6251\n\t72e9  PXIe-6259\n\t72ef  PXI-4498\n\t72f0  PXI-4496\n\t72fb  PXIe-6672\n\t730e  PXI-4130\n\t730f  PXI-5922EX\n\t7310  PCI-5922EX\n\t731c  PXI-2535\n\t731d  PXI-2536\n\t7322  PXIe-6124\n\t7327  PXI-6529\n\t732c  VXI-8360T\n\t7331  PXIe-5602\n\t7332  PXIe-5601\n\t7333  PXI-5900\n\t7335  PXI-2533\n\t7336  PXI-2534\n\t7342  PXI-4461\n\t7349  PXI-5154\n\t734a  PCI-5154\n\t7357  PXI-4065\n\t7359  PXI-4495\n\t7370  PXI-4461\n\t7373  sbRIO-9601\n\t7374  IOtech-9601\n\t7375  sbRIO-9602\n\t7378  sbRIO-9641\n\t737d  PXI-5124EX\n\t7384  PXI-7851R\n\t7385  PXI-7852R\n\t7386  PCIe-7851R\n\t7387  PCIe-7852R\n\t7390  PXI-7841R\n\t7391  PXI-7842R\n\t7392  PXI-7853R\n\t7393  PCIe-7841R\n\t7394  PCIe-7842R\n\t7397  sbRIO-9611\n\t7398  sbRIO-9612\n\t7399  sbRIO-9631\n\t739a  sbRIO-9632\n\t739b  sbRIO-9642\n\t73a1  PXIe-4498\n\t73a2  PXIe-4496\n\t73a5  PXIe-5641R\n\t73a7  PXI-8250 Chassis Monitor Module\n\t73a8  PXI-8511 CAN/LS\n\t73a9  PXI-8511 CAN/LS\n\t73aa  PXI-8512 CAN/HS\n\t73ab  PXI-8512 CAN/HS\n\t73ac  PXI-8513 CAN/XS\n\t73ad  PXI-8513 CAN/XS\n\t73af  PXI-8516 LIN\n\t73b1  PXI-8517 FlexRay\n\t73b2  PXI-8531 CANopen\n\t73b3  PXI-8531 CANopen\n\t73b4  PXI-8532 DeviceNet\n\t73b5  PXI-8532 DeviceNet\n\t73b6  PCI-8511 CAN/LS\n\t73b7  PCI-8511 CAN/LS\n\t73b8  PCI-8512 CAN/HS\n\t73b9  PCI-8512 CAN/HS\n\t73ba  PCI-8513 CAN/XS\n\t73bb  PCI-8513 CAN/XS\n\t73bd  PCI-8516 LIN\n\t73bf  PCI-8517 FlexRay\n\t73c0  PCI-8531 CANopen\n\t73c1  PCI-8531 CANopen\n\t73c2  PCI-8532 DeviceNet\n\t73c3  PCI-8532 DeviceNet\n\t73c5  PXIe-2527\n\t73c6  PXIe-2529\n\t73c8  PXIe-2530\n\t73c9  PXIe-2532\n\t73ca  PXIe-2569\n\t73cb  PXIe-2575\n\t73cc  PXIe-2593\n\t73d5  PXI-7951R\n\t73d6  PXI-7952R\n\t73d7  PXI-7953R\n\t73e1  PXI-7854R\n\t73ec  PXI-7954R\n\t73ed  cRIO-9073\n\t73f0  PXI-5153\n\t73f1  PCI-5153\n\t73f4  PXI-2515\n\t73f6  cRIO-9111\n\t73f7  cRIO-9112\n\t73f8  cRIO-9113\n\t73f9  cRIO-9114\n\t73fa  cRIO-9116\n\t73fb  cRIO-9118\n\t7404  PXI-4132\n\t7405  PXIe-6674T\n\t7406  PXIe-6674\n\t740e  PCIe-8430/16 (RS-232) Interface\n\t740f  PCIe-8430/8 (RS-232) Interface\n\t7410  PCIe-8431/16 (RS-485) Interface\n\t7411  PCIe-8431/8 (RS-485) Interface\n\t7414  PCIe-GPIB+\n\t741c  PXI-5691\n\t741d  PXI-5695\n\t743c  CSC-3059\n\t7448  PXI-2510\n\t7454  PXI-2512\n\t7455  PXI-2514\n\t7456  PXIe-2512\n\t7457  PXIe-2514\n\t745a  PXI-6682H\n\t745e  PXI-5153EX\n\t745f  PCI-5153EX\n\t7460  PXI-5154EX\n\t7461  PCI-5154EX\n\t746d  PXIe-5650\n\t746e  PXIe-5651\n\t746f  PXIe-5652\n\t7472  PXI-2800\n\t7495  PXIe-5603\n\t7497  PXIe-5605\n\t74ae  PXIe-2515\n\t74b4  PXI-2531\n\t74b5  PXIe-2531\n\t74c1  PXIe-8430/16 (RS-232) Interface\n\t74c2  PXIe-8430/8 (RS-232) Interface\n\t74c3  PXIe-8431/16 (RS-485) Interface\n\t74c4  PXIe-8431/8 (RS-485) Interface\n\t74d5  PXIe-5630\n\t74d9  PCIe-8432/2 (Isolated RS-232) Interface\n\t74da  PCIe-8433/2 (Isolated RS-485) Interface\n\t74db  PCIe-8432/4 (Isolated RS-232) Interface\n\t74dc  PCIe-8433/4 (Isolated RS-485) Interface\n\t74e8  NI 9148\n\t7515  PCIe-8430/2 (RS-232) Interface\n\t7516  PCIe-8430/4 (RS-232) Interface\n\t7517  PCIe-8431/2 (RS-485) Interface\n\t7518  PCIe-8431/4 (RS-485) Interface\n\t751b  cRIO-9081\n\t751c  cRIO-9082\n\t7528  PXIe-4497\n\t7529  PXIe-4499\n\t752a  PXIe-4492\n\t7539  NI 9157\n\t753a  NI 9159\n\t7598  PXI-2571\n\t75a4  PXI-4131A\n\t75b1  PCIe-7854R\n\t75ba  PXI-2543\n\t75bb  PXIe-2543\n\t75e5  PXI-6683\n\t75e6  PXI-6683H\n\t75ef  PXIe-5632\n\t761c  VXI-8360LT\n\t761f  PXI-2540\n\t7620  PXIe-2540\n\t7621  PXI-2541\n\t7622  PXIe-2541\n\t7626  NI 9154\n\t7627  NI 9155\n\t7638  PXI-2720\n\t7639  PXI-2722\n\t763a  PXIe-2725\n\t763b  PXIe-2727\n\t763c  PXI-4465\n\t764b  PXIe-2790\n\t764c  PXI-2520\n\t764d  PXI-2521\n\t764e  PXI-2522\n\t764f  PXI-2523\n\t7652  PXIe-4080\n\t7654  PXI-2796\n\t7655  PXI-2797\n\t7656  PXI-2798\n\t7657  PXI-2799\n\t765d  PXI-2542\n\t765e  PXIe-2542\n\t765f  PXI-2544\n\t7660  PXIe-2544\n\t766d  PCIe-6535B\n\t766e  PCIe-6536B\n\t766f  PCIe-6537B\n\t76a3  PXIe-6535B\n\t76a4  PXIe-6536B\n\t76a5  PXIe-6537B\n\t76d8  PXIe-4081\n\t76d9  PXIe-4082\n\t77a8  PXIe-6375\n\t783e  PXI-8368\n\t7882  PXIe-6376\n\t7883  PXIe-6378\n\t799e  PXIe-6386\n\t799f  PXIe-6396\n\t9020  PXI-2501\n\t9030  PXI-2503\n\t9040  PXI-2527\n\t9050  PXI-2565\n\t9060  PXI-2590\n\t9070  PXI-2591\n\t9080  PXI-2580\n\t9090  PCI-4021\n\t90a0  PXI-4021\n\ta001  PCI-MXI-2\n\tb001  PCI-1408\n\tb011  PXI-1408\n\tb021  PCI-1424\n\tb022  PXI-1424\n\tb031  PCI-1413\n\tb041  PCI-1407\n\tb051  PXI-1407\n\tb061  PCI-1411\n\tb071  PCI-1422\n\tb081  PXI-1422\n\tb091  PXI-1411\n\tb0b1  PCI-1409\n\tb0c1  PXI-1409\n\tb0e1  PCI-1428\n\tc4c4  PXIe/PCIe Device\n\t\t1093 728a  PXIe-5421\n\t\t1093 728b  PXIe-5442\n\t\t1093 728d  PXIe-5451\n\t\t1093 72a2  PXIe-5122\n\t\t1093 72da  PXIe-5422\n\t\t1093 72f7  PXIe-6535\n\t\t1093 72f8  PXIe-6536\n\t\t1093 72f9  PXIe-6537\n\t\t1093 730a  PXIe-5142\n\t\t1093 7326  PCIe-6509\n\t\t1093 736c  PXIe-4140\n\t\t1093 738b  PXIe-5622\n\t\t1093 73c4  PXIe-5450\n\t\t1093 73c7  PXIe-6545\n\t\t1093 73d4  PXIe-6544\n\t\t1093 7425  PCIe-6320\n\t\t1093 7427  PCIe-6321\n\t\t1093 7428  PXIe-6323\n\t\t1093 7429  PCIe-6323\n\t\t1093 742a  PXIe-6341\n\t\t1093 742b  PCIe-6341\n\t\t1093 742c  PXIe-6343\n\t\t1093 742d  PCIe-6343\n\t\t1093 742f  PCIe-6351\n\t\t1093 7431  PCIe-6353\n\t\t1093 7432  PXIe-6361\n\t\t1093 7433  PCIe-6361\n\t\t1093 7434  PXIe-6363\n\t\t1093 7435  PCIe-6363\n\t\t1093 7436  PXIe-6356\n\t\t1093 7437  PXIe-6358\n\t\t1093 7438  PXIe-6366\n\t\t1093 7439  PXIe-6368\n\t\t1093 7468  PXIe-5185\n\t\t1093 7469  PXIe-5186\n\t\t1093 7492  PXIe-4300\n\t\t1093 7498  PXIe-6548\n\t\t1093 7499  PXIe-6547\n\t\t1093 74a8  PXIe-4330\n\t\t1093 74a9  PXIe-4331\n\t\t1093 74b1  PXIe-4154\n\t\t1093 74b2  PXIe-4353\n\t\t1093 74b6  PCIe-1433\n\t\t1093 74cd  PXIe-5643R\n\t\t1093 74d0  PXIe-7961R\n\t\t1093 74dd  PXIe-6376\n\t\t1093 74de  PXIe-6378\n\t\t1093 74e2  PXIe-7962R\n\t\t1093 74e3  PXIe-7965R\n\t\t1093 74e5  PXIe-4844\n\t\t1093 74f3  PCIe-5140\n\t\t1093 753c  PXIe-1435\n\t\t1093 7548  PXIe-5622 (25MHz DDC)\n\t\t1093 754d  PCIe-5155\n\t\t1093 7551  PXIe-6556\n\t\t1093 7553  PCIe-1473R\n\t\t1093 7570  PCIe-1474R\n\t\t1093 7571  PXIe-1475R\n\t\t1093 7572  PXIe-1476R\n\t\t1093 75a2  PXIe-5693\n\t\t1093 75a3  PXIe-5694\n\t\t1093 75a5  PXIe-4141\n\t\t1093 75ce  PXIe-7966R\n\t\t1093 75cf  PXIe-4357\n\t\t1093 75d2  PXIe-RevB-5643R\n\t\t1093 75d3  PXIe-5644R\n\t\t1093 75ee  PXIe-5645R\n\t\t1093 7613  PXIe-6555\n\t\t1093 7619  PXIe-5185\n\t\t1093 761a  PXIe-5186\n\t\t1093 7629  PXIe-4142\n\t\t1093 762a  PXIe-4143\n\t\t1093 762b  PXIe-4138\n\t\t1093 762c  PXIe-4144\n\t\t1093 762d  PXIe-4145\n\t\t1093 762e  PXIe-5606\n\t\t1093 7644  PXIe-4841\n\t\t1093 764a  PCIe-8237R-S\n\t\t1093 7652  PXIe-4080\n\t\t1093 7658  PXIe-5162 (4CH)\n\t\t1093 76ab  PXIe-4322\n\t\t1093 76ad  PXIe-4112\n\t\t1093 76ae  PXIe-4113\n\t\t1093 76b5  PXIe-7971R\n\t\t1093 76b6  PXIe-7972R\n\t\t1093 76b7  PXIe-7975R\n\t\t1093 76b8  PXIe-5696\n\t\t1093 76b9  PXIe-5654\n\t\t1093 76c8  PXIe-6614\n\t\t1093 76c9  PXIe-6612\n\t\t1093 76cb  PXIe-5646R\n\t\t1093 76cc  PXIe-5162 (2CH)\n\t\t1093 76ce  CVS-1459\n\t\t1093 76d0  PXIe-5160 (2CH)\n\t\t1093 76d1  PXIe-5160 (4CH)\n\t\t1093 76d8  PXIe-4081\n\t\t1093 76d9  PXIe-4082\n\t\t1093 76dc  PXIe-4610\n\t\t1093 76ec  PXIe-2524\n\t\t1093 76ed  PXIe-2525\n\t\t1093 76ee  PXIe-2526\n\t\t1093 76ef  PXIe-2737\n\t\t1093 76f0  PXIe-2738\n\t\t1093 76f1  PXIe-2739\n\t\t1093 76fb  PCIe-1473R-LX110\n\t\t1093 76fc  PXIe-5105\n\t\t1093 76fd  PXIe-5114\n\t\t1093 76fe  PXIe-5644R\n\t\t1093 76ff  PXIe-5644R\n\t\t1093 7700  PXIe-5644R\n\t\t1093 7701  PXIe-5645R\n\t\t1093 7702  PXIe-5645R\n\t\t1093 7703  PXIe-5645R\n\t\t1093 770c  PXIe-4139\n\t\t1093 7711  PXIe-4464\n\t\t1093 7712  PXIe-4463\n\t\t1093 7716  PCIe-6612\n\t\t1093 771d  Unconfigured CA4 Switch\n\t\t1093 771e  PXIe-4339\n\t\t1093 7735  cRIO-9033\n\t\t1093 773e  PXIe-5624R\n\t\t1093 774b  cRIO-9031\n\t\t1093 774d  cRIO-9034\n\t\t1093 7755  cRIO-9030\n\t\t1093 7768  PXIe-2747\n\t\t1093 7769  PXIe-2748\n\t\t1093 776a  PXIe-2746\n\t\t1093 7777  PXIe-7976R\n\t\t1093 7782  PXIe-5646R\n\t\t1093 7783  PXIe-5646R\n\t\t1093 7784  PXIe-5646R\n\t\t1093 7790  PXIe-5170R (4CH)\n\t\t1093 7791  PXIe-5170R (8CH)\n\t\t1093 7793  PXIe-5171R (8CH)\n\t\t1093 7794  PXIe-5172 (4CH - 325T)\n\t\t1093 7795  PXIe-5172 (8CH - 410T)\n\t\t1093 77a5  PXIe-6345\n\t\t1093 77a6  PXIe-6355\n\t\t1093 77a7  PXIe-6365\n\t\t1093 77a8  PXIe-6375\n\t\t1093 77aa  CVS-1458\n\t\t1093 77ad  IC-3173\n\t\t1093 77b4  PXIe-7820R\n\t\t1093 77b5  PXIe-7821R\n\t\t1093 77b6  PXIe-7822R\n\t\t1093 77b9  cRIO-9038\n\t\t1093 77ba  PXIe-4136\n\t\t1093 77bb  PXIe-4137\n\t\t1093 77c0  PXIe-5624R\n\t\t1093 77c1  PXIe-5624R\n\t\t1093 77c2  PXIe-5624R\n\t\t1093 77ca  PXIe-6738\n\t\t1093 77cb  PXIe-6739\n\t\t1093 77db  cRIO-9035\n\t\t1093 77dc  cRIO-9036\n\t\t1093 77dd  cRIO-9039\n\t\t1093 7802  PXIe-4302\n\t\t1093 7803  PXIe-4303\n\t\t1093 7805  PXIe-4305\n\t\t1093 781e  PXIe-4135\n\t\t1093 7820  PXIe-5164\n\t\t1093 783d  PXIe-6570\n\t\t1093 7851  PXIe-5172 (8CH - 325T)\n\t\t1093 786f  PXIe-4163\n\t\t1093 7881  PXIe-5163\n\t\t1093 788e  PXIe-4304\n\t\t1093 78d5  PXIe-5413 (1CH)\n\t\t1093 78d6  PXIe-5413 (2CH)\n\t\t1093 78d7  PXIe-5423 (1CH)\n\t\t1093 78d8  PXIe-5423 (2CH)\n\t\t1093 78d9  PXIe-5433 (1CH)\n\t\t1093 78da  NI PXIe-5433 (2CH)\n\t\t1093 78f8  NI FlexRIO Module (KU035)\n\t\t1093 78f9  NI FlexRIO Module (KU040)\n\t\t1093 78fa  NI FlexRIO Module (KU060)\n\t\t1093 78ff  PXIe-4162\n\t\t1093 792f  PXIe-4190\n\t\t1093 7935  PXIe-5111\n\t\t1093 7936  PXIe-5110\n\t\t1093 7995  PXIe-7911R\n\t\t1093 7996  PXIe-7912R\n\t\t1093 7997  PXIe-7915R\n\t\t1093 79cd  PXIe-5113\n\t\t1093 79d3  NI FlexRIO PCIe Module (KU035)\n\t\t1093 79d4  NI FlexRIO PCIe Module (KU040)\n\t\t1093 79d5  NI FlexRIO PCIe Module (KU060)\n\t\t1093 79f8  PXIe-6571\n\t\t1093 7a16  PXIe-4147\n\t\t1093 7a9a  PXIe-4137 (40W)\n\t\t1093 7aa4  PXIe-4135 (40W)\n\t\t1093 7aca  PXIe-4051\n\t\t1093 7acb  PXIe-4150\n\t\t1093 7acc  PXIe-4151\n\t\t1093 7ae0  PXIe-4163 (10 pA)\n\t\t1093 7ae1  PXIe-4162 (10 pA)\n\t\t1093 7aef  PXIe-4190 (500 kHz)\n\t\t1093 7b1f  PXIe-6571 (8CH)\n\tc801  PCI-GPIB\n\tc811  PCI-GPIB+\n\tc821  PXI-GPIB\n\tc831  PMC-GPIB\n\tc840  PCI-GPIB\n\td130  PCI-232/2 Interface\n\td140  PCI-232/4 Interface\n\td150  PCI-232/8 Interface\n\td160  PCI-485/2 Interface\n\td170  PCI-485/4 Interface\n\td190  PXI-8422/2 (Isolated RS-232) Interface\n\td1a0  PXI-8422/4 (Isolated RS-232) Interface\n\td1b0  PXI-8423/2 (Isolated RS-485) Interface\n\td1c0  PXI-8423/4 (Isolated RS-485) Interface\n\td1d0  PXI-8420/2 (RS-232) Interface\n\td1e0  PXI-8420/4 (RS-232) Interface\n\td1f0  PXI-8420/8 (RS-232) Interface\n\td1f1  PXI-8420/16 (RS-232) Interface\n\td230  PXI-8421/2 (RS-485) Interface\n\td240  PXI-8421/4 (RS-485) Interface\n\td250  PCI-232/2 (Isolated) Interface\n\td260  PCI-485/2 (Isolated) Interface\n\td270  PCI-232/4 (Isolated) Interface\n\td280  PCI-485/4 (Isolated) Interface\n\td290  PCI-485/8 Interface\n\td2a0  PXI-8421/8 (RS-485) Interface\n\td2b0  PCI-232/16 Interface\n\te111  PCI-CAN\n\te131  PXI-8461 (1 port)\n\te141  PCI-CAN/LS\n\te151  PXI-8460 (1 port)\n\te211  PCI-CAN/2\n\te231  PXI-8461 (2 ports)\n\te241  PCI-CAN/LS2\n\te251  PXI-8460 (2 ports)\n\te261  PCI-CAN/DS\n\te271  PXI-8462\n\tf110  VMEpc-650\n\tf120  VXIpc-650\n\tfe00  VXIpc-87x\n\tfe41  VXIpc-860\n\tfe51  VXIpc-74x\n\tfe61  VXIpc-850\n\tfe70  VXIpc-880\n1094  First International Computers [FIC]\n# nee CMD Technology Inc\n1095  Silicon Image, Inc.\n\t0240  Adaptec AAR-1210SA SATA HostRAID Controller\n\t0242  AAR-1220SA SATA RAID Controller\n\t0640  PCI0640\n\t0643  PCI0643\n\t0646  PCI0646\n\t0647  PCI0647\n\t0648  PCI0648\n\t\t1043 8025  CUBX motherboard\n\t0649  SiI 0649 Ultra ATA/100 PCI to ATA Host Controller\n\t\t0e11 005d  Integrated Ultra ATA-100 Dual Channel Controller\n\t\t0e11 007e  Integrated Ultra ATA-100 IDE RAID Controller\n\t\t101e 0649  AMI MegaRAID IDE 100 Controller\n\t0650  PBC0650A\n\t0670  USB0670\n\t\t1095 0670  USB0670\n\t0673  USB0673\n\t0680  PCI0680 Ultra ATA-133 Host Controller\n\t\t1095 0680  SiI 0680 ATA/133 Controller\n\t\t1095 3680  Winic W-680 (Silicon Image 680 based)\n\t3112  SiI 3112 [SATALink/SATARaid] Serial ATA Controller\n\t\t1095 3112  SiI 3112 SATALink Controller\n\t\t1095 6112  SiI 3112 SATARaid Controller\n\t\t9005 0250  SATAConnect 1205SA Host Controller\n\t3114  SiI 3114 [SATALink/SATARaid] Serial ATA Controller\n\t\t1043 8167  A8N-SLI Deluxe/Premium Mainboard\n\t\t1095 3114  SiI 3114 SATALink Controller\n\t\t1095 6114  SiI 3114 SATARaid Controller\n\t3124  SiI 3124 PCI-X Serial ATA Controller\n\t\t1095 3124  SiI 3124 PCI-X Serial ATA Controller\n\t3132  SiI 3132 Serial ATA Raid II Controller\n\t3512  SiI 3512 [SATALink/SATARaid] Serial ATA Controller\n\t\t1095 3512  SiI 3512 SATALink Controller\n\t\t1095 6512  SiI 3512 SATARaid Controller\n\t3531  SiI 3531 [SATALink/SATARaid] Serial ATA Controller\n\t\t17c0 4083  Medion WIM 2210 Notebook PC [MD96850]\n1096  Alacron\n1097  Appian Technology\n1098  Quantum Designs (H.K.) Ltd\n\t0001  QD-8500\n\t0002  QD-8580\n1099  Samsung Electronics Co., Ltd\n109a  Packard Bell\n109b  Gemlight Computer Ltd.\n109c  Megachips Corporation\n109d  Zida Technologies Ltd.\n109e  Brooktree Corporation\n\t0310  Bt848 Video Capture\n\t032e  Bt878 Video Capture\n\t0350  Bt848 Video Capture\n\t0351  Bt849A Video capture\n\t0369  Bt878 Video Capture\n\t\t1002 0001  TV-Wonder\n\t\t1002 0003  TV-Wonder/VE\n\t036c  Bt879(??) Video Capture\n\t\t13e9 0070  Win/TV (Video Section)\n\t036e  Bt878 Video Capture\n\t\t0000 0001  Euresys Picolo PCIe\n\t\t0000 0002  Euresys PICOLO Pro 2\n\t\t0000 0004  Euresys PICOLO Pro 3E\n\t\t0070 13eb  WinTV Series\n\t\t0070 ff01  Viewcast Osprey 200\n\t\t0071 0101  DigiTV PCI\n\t\t107d 6606  WinFast TV 2000\n\t\t11bd 0012  PCTV pro (TV + FM stereo receiver)\n\t\t11bd 001c  PCTV Sat (DBC receiver)\n\t\t127a 0001  Bt878 Mediastream Controller NTSC\n\t\t127a 0002  Bt878 Mediastream Controller PAL BG\n\t\t127a 0003  Bt878a Mediastream Controller PAL BG\n\t\t127a 0048  Bt878/832 Mediastream Controller\n\t\t144f 3000  MagicTView CPH060 - Video\n\t\t1461 0002  TV98 Series (TV/No FM/Remote)\n\t\t1461 0003  AverMedia UltraTV PCI 350\n\t\t1461 0004  AVerTV WDM Video Capture\n\t\t1461 0761  AverTV DVB-T\n\t\t1461 0771  AverMedia AVerTV DVB-T 771\n\t\t14f1 0001  Bt878 Mediastream Controller NTSC\n\t\t14f1 0002  Bt878 Mediastream Controller PAL BG\n\t\t14f1 0003  Bt878a Mediastream Controller PAL BG\n\t\t14f1 0048  Bt878/832 Mediastream Controller\n\t\t1805 0101  Euresys PICOLO Tetra\n\t\t1805 0102  Euresys PICOLO Tetra\n\t\t1805 0103  Euresys PICOLO Tetra\n\t\t1805 0104  Euresys PICOLO Tetra\n\t\t1805 0105  Euresys PICOLO Tetra\n\t\t1805 0106  Euresys PICOLO Tetra\n\t\t1805 0107  Euresys PICOLO Tetra\n\t\t1805 0108  Euresys PICOLO Tetra\n\t\t1805 0201  Euresys PICOLO Tetra-X\n\t\t1805 0202  Euresys PICOLO Tetra-X\n\t\t1805 0203  Euresys PICOLO Tetra-X\n\t\t1805 0204  Euresys PICOLO Tetra-X\n\t\t1805 0401  Euresys PICOLO Tymo\n\t\t1805 0402  Euresys PICOLO Tymo\n\t\t1805 0403  Euresys PICOLO Tymo\n\t\t1805 0404  Euresys PICOLO Tymo\n\t\t1805 1001  Euresys PICOLO Junior 4\n\t\t1822 0001  VisionPlus DVB card\n\t\t1851 1850  FlyVideo'98 - Video\n\t\t1851 1851  FlyVideo II\n\t\t1852 1852  FlyVideo'98 - Video (with FM Tuner)\n\t\t18ac d500  DViCO FusionHDTV5 Lite\n\t\t270f fc00  Digitop DTT-1000\n# Vendor/ID appear to be randomly chosen\n\t\taa00 1460  Spectra8 CardA Input0\n# Vendor/ID appear to be randomly chosen\n\t\taa01 1461  Spectra8 CardA Input1\n# Vendor/ID appear to be randomly chosen\n\t\taa02 1462  Spectra8 CardA Input2\n# Vendor/ID appear to be randomly chosen\n\t\taa03 1463  Spectra8 CardA Input3\n# Vendor/ID appear to be randomly chosen\n\t\taa04 1464  Spectra8 CardB Input0\n# Vendor/ID appear to be randomly chosen\n\t\taa05 1465  Spectra8 CardB Input1\n# Vendor/ID appear to be randomly chosen\n\t\taa06 1466  Spectra8 CardB Input2\n# Vendor/ID appear to be randomly chosen\n\t\taa07 1467  Spectra8 CardB Input3\n# Vendor/ID appear to be randomly chosen\n\t\taa08 1468  Spectra8 CardC Input0\n# Vendor/ID appear to be randomly chosen\n\t\taa09 1469  Spectra8 CardC Input1\n# Vendor/ID appear to be randomly chosen\n\t\taa0a 146a  Spectra8 CardC Input2\n# Vendor/ID appear to be randomly chosen\n\t\taa0b 146b  Spectra8 CardC Input3\n# Vendor/ID appear to be randomly chosen\n\t\taa0c 146c  Spectra8 CardD Input0\n# Vendor/ID appear to be randomly chosen\n\t\taa0d 146d  Spectra8 CardD Input1\n# Vendor/ID appear to be randomly chosen\n\t\taa0e 146e  Spectra8 CardD Input2\n# Vendor/ID appear to be randomly chosen\n\t\taa0f 146f  Spectra8 CardD Input3\n\t\tbd11 1200  PCTV pro (TV + FM stereo receiver)\n\t036f  Bt879 Video Capture\n\t\t127a 0044  Bt879 Video Capture NTSC\n\t\t127a 0122  Bt879 Video Capture PAL I\n\t\t127a 0144  Bt879 Video Capture NTSC\n\t\t127a 0222  Bt879 Video Capture PAL BG\n\t\t127a 0244  Bt879a Video Capture NTSC\n\t\t127a 0322  Bt879 Video Capture NTSC\n\t\t127a 0422  Bt879 Video Capture NTSC\n\t\t127a 1122  Bt879 Video Capture PAL I\n\t\t127a 1222  Bt879 Video Capture PAL BG\n\t\t127a 1322  Bt879 Video Capture NTSC\n\t\t127a 1522  Bt879a Video Capture PAL I\n\t\t127a 1622  Bt879a Video Capture PAL BG\n\t\t127a 1722  Bt879a Video Capture NTSC\n\t\t14f1 0044  Bt879 Video Capture NTSC\n\t\t14f1 0122  Bt879 Video Capture PAL I\n\t\t14f1 0144  Bt879 Video Capture NTSC\n\t\t14f1 0222  Bt879 Video Capture PAL BG\n\t\t14f1 0244  Bt879a Video Capture NTSC\n\t\t14f1 0322  Bt879 Video Capture NTSC\n\t\t14f1 0422  Bt879 Video Capture NTSC\n\t\t14f1 1122  Bt879 Video Capture PAL I\n\t\t14f1 1222  Bt879 Video Capture PAL BG\n\t\t14f1 1322  Bt879 Video Capture NTSC\n\t\t14f1 1522  Bt879a Video Capture PAL I\n\t\t14f1 1622  Bt879a Video Capture PAL BG\n\t\t14f1 1722  Bt879a Video Capture NTSC\n\t\t1851 1850  FlyVideo'98 - Video\n\t\t1851 1851  FlyVideo II\n\t\t1852 1852  FlyVideo'98 - Video (with FM Tuner)\n\t0370  Bt880 Video Capture\n\t\t1851 1850  FlyVideo'98\n\t\t1851 1851  FlyVideo'98 EZ - video\n\t\t1852 1852  FlyVideo'98 (with FM Tuner)\n\t0878  Bt878 Audio Capture\n\t\t0000 0001  Euresys Picolo PCIe\n\t\t0000 0002  Euresys PICOLO Pro 2 (Audio Section)\n\t\t0000 0004  Euresys PICOLO Pro 3E (Audio Section)\n\t\t0070 13eb  WinTV Series\n\t\t0070 ff01  Viewcast Osprey 200\n\t\t0071 0101  DigiTV PCI\n\t\t1002 0001  TV-Wonder\n\t\t1002 0003  TV-Wonder/VE\n\t\t11bd 0012  PCTV pro (TV + FM stereo receiver, audio section)\n\t\t11bd 001c  PCTV Sat (DBC receiver)\n\t\t127a 0001  Bt878 Video Capture (Audio Section)\n\t\t127a 0002  Bt878 Video Capture (Audio Section)\n\t\t127a 0003  Bt878 Video Capture (Audio Section)\n\t\t127a 0048  Bt878 Video Capture (Audio Section)\n\t\t13e9 0070  Win/TV (Audio Section)\n\t\t144f 3000  MagicTView CPH060 - Audio\n\t\t1461 0002  Avermedia PCTV98 Audio Capture\n\t\t1461 0003  UltraTV PCI 350\n\t\t1461 0004  AVerTV WDM Audio Capture\n\t\t1461 0761  AVerTV DVB-T\n\t\t1461 0771  AverMedia AVerTV DVB-T 771\n\t\t14f1 0001  Bt878 Video Capture (Audio Section)\n\t\t14f1 0002  Bt878 Video Capture (Audio Section)\n\t\t14f1 0003  Bt878 Video Capture (Audio Section)\n\t\t14f1 0048  Bt878 Video Capture (Audio Section)\n\t\t1805 0101  Euresys PICOLO Tetra (Audio Section)\n\t\t1805 0102  Euresys PICOLO Tetra (Audio Section)\n\t\t1805 0103  Euresys PICOLO Tetra (Audio Section)\n\t\t1805 0104  Euresys PICOLO Tetra (Audio Section)\n\t\t1805 0105  Euresys PICOLO Tetra (Audio Section)\n\t\t1805 0106  Euresys PICOLO Tetra (Audio Section)\n\t\t1805 0107  Euresys PICOLO Tetra (Audio Section)\n\t\t1805 0108  Euresys PICOLO Tetra (Audio Section)\n\t\t1805 0201  Euresys PICOLO Tetra-X (Audio Section)\n\t\t1805 0202  Euresys PICOLO Tetra-X (Audio Section)\n\t\t1805 0203  Euresys PICOLO Tetra-X (Audio Section)\n\t\t1805 0204  Euresys PICOLO Tetra-X (Audio Section)\n\t\t1805 0401  Euresys PICOLO Tymo (Audio Section)\n\t\t1805 0402  Euresys PICOLO Tymo (Audio Section)\n\t\t1805 0403  Euresys PICOLO Tymo (Audio Section)\n\t\t1805 0404  Euresys PICOLO Tymo (Audio Section)\n\t\t1805 1001  Euresys PICOLO Junior 4 (Audio Section)\n\t\t1822 0001  VisionPlus DVB Card\n\t\t18ac d500  DViCO FusionHDTV5 Lite\n\t\t270f fc00  Digitop DTT-1000\n\t\tbd11 1200  PCTV pro (TV + FM stereo receiver, audio section)\n\t0879  Bt879 Audio Capture\n\t\t127a 0044  Bt879 Video Capture (Audio Section)\n\t\t127a 0122  Bt879 Video Capture (Audio Section)\n\t\t127a 0144  Bt879 Video Capture (Audio Section)\n\t\t127a 0222  Bt879 Video Capture (Audio Section)\n\t\t127a 0244  Bt879 Video Capture (Audio Section)\n\t\t127a 0322  Bt879 Video Capture (Audio Section)\n\t\t127a 0422  Bt879 Video Capture (Audio Section)\n\t\t127a 1122  Bt879 Video Capture (Audio Section)\n\t\t127a 1222  Bt879 Video Capture (Audio Section)\n\t\t127a 1322  Bt879 Video Capture (Audio Section)\n\t\t127a 1522  Bt879 Video Capture (Audio Section)\n\t\t127a 1622  Bt879 Video Capture (Audio Section)\n\t\t127a 1722  Bt879 Video Capture (Audio Section)\n\t\t14f1 0044  Bt879 Video Capture (Audio Section)\n\t\t14f1 0122  Bt879 Video Capture (Audio Section)\n\t\t14f1 0144  Bt879 Video Capture (Audio Section)\n\t\t14f1 0222  Bt879 Video Capture (Audio Section)\n\t\t14f1 0244  Bt879 Video Capture (Audio Section)\n\t\t14f1 0322  Bt879 Video Capture (Audio Section)\n\t\t14f1 0422  Bt879 Video Capture (Audio Section)\n\t\t14f1 1122  Bt879 Video Capture (Audio Section)\n\t\t14f1 1222  Bt879 Video Capture (Audio Section)\n\t\t14f1 1322  Bt879 Video Capture (Audio Section)\n\t\t14f1 1522  Bt879 Video Capture (Audio Section)\n\t\t14f1 1622  Bt879 Video Capture (Audio Section)\n\t\t14f1 1722  Bt879 Video Capture (Audio Section)\n\t0880  Bt880 Audio Capture\n\t2115  BtV 2115 Mediastream controller\n\t2125  BtV 2125 Mediastream controller\n\t2164  BtV 2164\n\t2165  BtV 2165\n\t8230  Bt8230 ATM Segment/Reassembly Ctrlr (SRC)\n\t8472  Bt8472\n\t8474  Bt8474\n109f  Trigem Computer Inc.\n10a0  Meidensha Corporation\n10a1  Juko Electronics Ind. Co. Ltd\n10a2  Quantum Corporation\n10a3  Everex Systems Inc\n10a4  Globe Manufacturing Sales\n10a5  Smart Link Ltd.\n\t3052  SmartPCI562 56K Modem\n\t5449  SmartPCI561 modem\n10a6  Informtech Industrial Ltd.\n10a7  Benchmarq Microelectronics\n10a8  Sierra Semiconductor\n\t0000  STB Horizon 64\n10a9  Silicon Graphics Intl. Corp.\n\t0001  Crosstalk to PCI Bridge\n\t0002  Linc I/O controller\n\t0003  IOC3 I/O controller\n\t0004  O2 MACE\n\t0005  RAD Audio\n\t0006  HPCEX\n\t0007  RPCEX\n\t0008  DiVO VIP\n\t0009  AceNIC Gigabit Ethernet\n\t\t10a9 8002  AceNIC Gigabit Ethernet\n\t0010  AMP Video I/O\n\t0011  GRIP\n\t0012  SGH PSHAC GSN\n\t0208  SSIM1 SAS Adapter\n\t1001  Magic Carpet\n\t1002  Lithium\n\t1003  Dual JPEG 1\n\t1004  Dual JPEG 2\n\t1005  Dual JPEG 3\n\t1006  Dual JPEG 4\n\t1007  Dual JPEG 5\n\t1008  Cesium\n\t100a  IOC4 I/O controller\n\t1504  SSIM1 Fibre Channel Adapter\n\t2001  Fibre Channel\n\t2002  ASDE\n\t4001  TIO-CE PCI Express Bridge\n\t4002  TIO-CE PCI Express Port\n\t8001  O2 1394\n\t8002  G-net NT\n# PCIe x1 Low Profile\n\t802b  REACT external interrupt controller\n10aa  ACC Microelectronics\n\t0000  ACCM 2188\n\t2051  2051 CPU bridge\n\t5842  2051 ISA bridge\n10ab  Digicom\n10ac  Honeywell IAC\n10ad  Winbond Electronics Corp / Symphony Labs\n\t0001  W83769F\n\t0003  SL82C103\n\t0005  SL82C105\n\t0103  SL82c103\n\t0105  SL82C105/W83C55xF Bus Master IDE\n\t0565  W83C553F/554F ISA bridge\n10ae  Cornerstone Technology\n10af  Micro Computer Systems Inc\n10b0  CardExpert Technology\n10b1  Cabletron Systems Inc\n10b2  Raytheon Company\n10b3  Databook Inc\n\t3106  DB87144\n\tb106  DB87144\n10b4  STB Systems Inc\n\t1b1d  Velocity 128 3D\n\t\t10b4 237e  Velocity 4400\n10b5  PLX Technology, Inc.\n\t0001  i960 PCI bus interface\n\t0557  PCI9030 32-bit 33MHz PCI <-> IOBus Bridge\n\t\t10b5 9030  Digium Tormenta 2 T400P-SS7 or E400P-SS7 Quad T1 or E1 PCI card\n\t1000  PCI9030 32-bit 33MHz PCI <-> IOBus Bridge\n\t\t10b5 9030  ATCOM AT400P Quad T1 PCI card\n\t1024  Acromag, Inc. IndustryPack Carrier Card\n\t1042  Brandywine / jxi2, Inc. - PMC-SyncClock32, IRIG A & B, Nasa 36\n\t106a  Dual OX16C952 4 port serial adapter [Megawolf Romulus/4]\n\t1076  VScom 800 8 port serial adaptor\n\t1077  VScom 400 4 port serial adaptor\n\t1078  VScom 210 2 port serial and 1 port parallel adaptor\n\t1103  VScom 200 2 port serial adaptor\n\t1146  VScom 010 1 port parallel adaptor\n\t1147  VScom 020 2 port parallel adaptor\n\t2000  PCI9030 32-bit 33MHz PCI <-> IOBus Bridge\n\t\t10b5 9030  ATCOM AE400P Quad E1 PCI card\n\t2300  Euresys DOMINO Gamma\n\t2374  Euresys DOMINO Alpha\n\t2491  Euresys GRABLINK Value\n\t2493  Euresys GRABLINK Expert\n\t2540  IXXAT CAN-Interface PC-I 04/PCI\n\t2724  Thales PCSM Security Card\n\t3376  Cosateq 4 Port CAN Card\n\t4000  PCI9030 32-bit 33MHz PCI <-> IOBus Bridge\n\t\t10b5 9030  Tormenta 3 Varion V400P/ATCOM TE400P Quad E1/T1/J1 PCI card\n\t4001  PCI9030 32-bit 33MHz PCI <-> IOBus Bridge\n\t\t10b5 9030  ATCOM A400PE Quad E1 PCI card\n\t4002  PCI9030 32-bit 33MHz PCI <-> IOBus Bridge\n\t\t10b5 9030  ATCOM A400PT Quad T1 PCI card\n\t6140  PCI6140 32-bit 33MHz PCI-to-PCI Bridge\n\t6150  PCI6150 32-bit 33MHz PCI-to-PCI Bridge\n\t6152  PCI6152 32-bit 66MHz PCI-to-PCI Bridge\n\t6154  PCI6154 64-bit 66MHz PCI-to-PCI Bridge\n\t6254  PCI6254 64-bit 66MHz PCI-to-PCI Bridge\n\t6466  PCI6466 64-bit 66MHz PCI-to-PCI Bridge\n\t6520  PCI6520 64-bit 133MHz PCI-X-to-PCI-X Bridge\n\t6540  PCI6540 64-bit 133MHz PCI-X-to-PCI-X Bridge\n\t\t1775 1100  CR11 Single Board Computer\n\t\t4c53 10e0  PSL09 PrPMC\n\t6541  PCI6540/6466 PCI-PCI bridge (non-transparent mode, primary side)\n\t\t1775 1100  CR11 Single Board Computer\n\t\t4c53 10e0  PSL09 PrPMC\n\t6542  PCI6540/6466 PCI-PCI bridge (non-transparent mode, secondary side)\n\t\t1775 1100  CR11 Single Board Computer\n\t\t4c53 10e0  PSL09 PrPMC\n\t8111  PEX 8111 PCI Express-to-PCI Bridge\n\t8112  PEX8112 x1 Lane PCI Express-to-PCI Bridge\n\t8114  PEX 8114 PCI Express-to-PCI/PCI-X Bridge\n\t8311  PEX8311 x1 Lane PCI Express-to-Generic Local Bus Bridge\n\t8505  PEX 8505 5-lane, 5-port PCI Express Switch\n\t8508  PEX 8508 8-lane, 5-port PCI Express Switch\n\t8509  PEX 8509 8-lane, 8-port PCI Express Switch\n\t8512  PEX 8512 12-lane, 5-port PCI Express Switch\n\t8516  PEX 8516  Versatile PCI Express Switch\n\t8517  PEX 8517 16-lane, 5-port PCI Express Switch\n\t8518  PEX 8518 16-lane, 5-port PCI Express Switch\n\t8524  PEX 8524 24-lane, 6-port PCI Express Switch\n\t8525  PEX 8525 24-lane, 5-port PCI Express Switch\n\t8532  PEX 8532  Versatile PCI Express Switch\n\t8533  PEX 8533 32-lane, 6-port PCI Express Switch\n\t8547  PEX 8547 48-lane, 3-port PCI Express Switch\n\t8548  PEX 8548 48-lane, 9-port PCI Express Switch\n\t8603  PEX 8603 3-lane, 3-Port PCI Express Gen 2 (5.0 GT/s) Switch\n\t8604  PEX 8604 4-lane, 4-Port PCI Express Gen 2 (5.0 GT/s) Switch\n\t8605  PEX 8605 PCI Express 4-port Gen2 Switch\n\t8606  PEX 8606 6 Lane, 6 Port PCI Express Gen 2 (5.0 GT/s) Switch\n\t8608  PEX 8608 8-lane, 8-Port PCI Express Gen 2 (5.0 GT/s) Switch\n\t8609  PEX 8609 8-lane, 8-Port PCI Express Gen 2 (5.0 GT/s) Switch with DMA\n\t8612  PEX 8612 12-lane, 4-Port PCI Express Gen 2 (5.0 GT/s) Switch\n\t8613  PEX 8613 12-lane, 3-Port PCI Express Gen 2 (5.0 GT/s) Switch\n\t8614  PEX 8614 12-lane, 12-Port PCI Express Gen 2 (5.0 GT/s) Switch\n\t8615  PEX 8615 12-lane, 12-Port PCI Express Gen 2 (5.0 GT/s) Switch with DMA\n\t8616  PEX 8616 16-lane, 4-Port PCI Express Gen 2 (5.0 GT/s) Switch\n\t8617  PEX 8617 16-lane, 4-Port PCI Express Gen 2 (5.0 GT/s) Switch with P2P\n\t8618  PEX 8618 16-lane, 16-Port PCI Express Gen 2 (5.0 GT/s) Switch\n\t8619  PEX 8619 16-lane, 16-Port PCI Express Gen 2 (5.0 GT/s) Switch with DMA\n\t8624  PEX 8624 24-lane, 6-Port PCI Express Gen 2 (5.0 GT/s) Switch [ExpressLane]\n\t\t13a3 1845  DX1845 Acceleration Card\n\t8625  PEX 8625 24-lane, 24-Port PCI Express Gen 2 (5.0 GT/s) Switch\n\t8632  PEX 8632 32-lane, 12-Port PCI Express Gen 2 (5.0 GT/s) Switch\n\t8636  PEX 8636 36-lane, 24-Port PCI Express Gen 2 (5.0 GT/s) Switch\n\t8647  PEX 8647 48-Lane, 3-Port PCI Express Gen 2 (5.0 GT/s) Switch\n\t8648  PEX 8648 48-lane, 12-Port PCI Express Gen 2 (5.0 GT/s) Switch\n\t8649  PEX 8649 48-lane, 12-Port PCI Express Gen 2 (5.0 GT/s) Switch\n\t8664  PEX 8664 64-lane, 16-Port PCI Express Gen 2 (5.0 GT/s) Switch\n\t8680  PEX 8680 80-lane, 20-Port PCI Express Gen 2 (5.0 GT/s) Multi-Root Switch\n\t8696  PEX 8696 96-lane, 24-Port PCI Express Gen 2 (5.0 GT/s) Multi-Root Switch\n\t8714  PEX 8714 12-Lane, 5-Port PCI Express Gen 3 (8 GT/s) Switch\n\t8717  PEX 8717 16-lane, 8-Port PCI Express Gen 3 (8.0 GT/s) Switch with DMA\n\t8718  PEX 8718 16-Lane, 5-Port PCI Express Gen 3 (8.0 GT/s) Switch\n\t8723  PEX 8723 24-Lane, 6-Port PCI Express Gen 3 (8 GT/s) Switch\n\t8724  PEX 8724 24-Lane, 6-Port PCI Express Gen 3 (8 GT/s) Switch, 19 x 19mm FCBGA\n\t\t4c52 9234  LRNV9324 2-port Built-in 8643 NVMe Exchange Adapter\n\t\t4c52 9524  LRNV9524 2-port M.2 NVMe SSD Exchange Adapter\n\t8725  PEX 8725 24-Lane, 10-Port PCI Express Gen 3 (8.0 GT/s) Multi-Root Switch with DMA\n\t8732  PEX 8732 32-lane, 8-Port PCI Express Gen 3 (8.0 GT/s) Switch\n\t8733  PEX 8733 32-Lane, 19-Port PCI Express Gen 3 (8 GT/s) Switch\n\t8734  PEX 8734 32-lane, 8-Port PCI Express Gen 3 (8.0GT/s) Switch\n\t8747  PEX 8747 48-Lane, 5-Port PCI Express Gen 3 (8.0 GT/s) Switch\n\t\t4c52 9347  LRNV9347L 2-port Built-in 8643 NVMe Switching Adapter\n\t\t4c52 9547  LRNV9547 4-port M.2 NVMe SSD Exchange Adapter\n\t8748  PEX 8748 48-Lane, 12-Port PCI Express Gen 3 (8 GT/s) Switch, 27 x 27mm FCBGA\n\t8749  PEX 8749 48-Lane, 18-Port PCI Express Gen 3 (8.0 GT/s) Multi-Root Switch with DMA\n\t\t4c52 9349  LRNV9349 8-port SFF-8643 NVMe SSD Exchange Adapter\n\t8764  PEX 8764 64-Lane, 16-Port PCI Express Gen 3 (8 GT/s) Switch\n\t8780  PEX 8780 80-Lane, 20-Port PCI Express Gen 3 (8 GT/s) Switch\n\t8796  PEX8796 96-Lane, 24-Port PCIe Gen 3 (8.0 GT/s) Switch\n\t87a0  PEX PCI Express Switch NT0 Port Link Interface\n\t87a1  PEX PCI Express Switch NT1 Port Link Interface\n\t87b0  PEX PCI Express Switch NT0 Port Virtual Interface\n\t\t1093 7761  PXIe-8830mc\n\t87b1  PEX PCI Express Switch NT1 Port Virtual Interface\n\t87d0  PEX PCI Express Switch DMA interface\n\t9016  PLX 9016 8-port serial controller\n\t9030  PCI9030 32-bit 33MHz PCI <-> IOBus Bridge\n\t\t10b5 1205  Becker & Hickl MSA-1000\n\t\t10b5 2695  Hilscher CIF50-PB/DPS Profibus\n\t\t10b5 2862  Alpermann+Velte PCL PCI LV (3V/5V): Timecode Reader Board\n\t\t10b5 2906  Alpermann+Velte PCI TS (3V/5V): Time Synchronisation Board\n\t\t10b5 2940  Alpermann+Velte PCL PCI D (3V/5V): Timecode Reader Board\n\t\t10b5 2977  IXXAT iPC-I XC16/PCI CAN Board\n\t\t10b5 2978  SH ARC-PCIu/SH ARC-PCI104/SH ARC-PCIe SOHARD ARCNET card\n\t\t10b5 3025  Alpermann+Velte PCL PCI L (3V/5V): Timecode Reader Board\n\t\t10b5 3068  Alpermann+Velte PCL PCI HD (3V/5V): Timecode Reader Board\n\t\t10b5 3463  Alpermann+Velte PCL PCI D (v2) (3V/5V): Timecode Reader Board\n\t\t10b5 3591  PLURA PCL PCI L (v2) (3.3V/5V): Time Code Reader Board\n\t\t12fe 0111  CPCI-ASIO4 (ESD 4-port Serial Interface Board)\n\t\t1369 9c01  VX222v2\n\t\t1369 9d01  VX222-Mic\n\t\t1369 9d02  VX222-Mic\n\t\t1369 9e01  PCX924v2\n\t\t1369 9f01  PCX924-Mic\n\t\t1369 9f02  PCX924-Mic\n\t\t1369 a001  PCX22v2\n\t\t1369 a701  LCM220v2\n\t\t1369 a801  LCM200\n\t\t1397 3136  4xS0-ISDN PCI Adapter\n\t\t1397 3137  S2M-E1-ISDN PCI Adapter\n\t\t1518 0200  ThinkIO-C\n\t\t15ed 1002  MCCS 8-port Serial Hot Swap\n\t\t15ed 1003  MCCS 16-port Serial Hot Swap\n# MIL-STD-1553B Board\n\t\te1c5 0001  TE1-PCI\n\t\te1c5 0005  TA1-PCI\n\t\te1c5 0006  TA1-PCI4\n\t9036  9036\n\t9050  PCI <-> IOBus Bridge\n\t\t103c 10b0  82350 PCI GPIB\n\t\t10b5 1067  IXXAT CAN i165\n\t\t10b5 114e  Wasco WITIO PCI168extended\n\t\t10b5 1169  Wasco OPTOIO32standard 32 digital in, 32 digital out\n\t\t10b5 1171  Becker & Hickl PMS-400\n\t\t10b5 1172  IK220 (Heidenhain)\n\t\t10b5 1201  Becker & Hickl SPC-6x0\n\t\t10b5 1202  Becker & Hickl SPC-7x0\n\t\t10b5 1203  Becker & Hickl MSA-300\n\t\t10b5 1206  Becker & Hickl DCC-100\n\t\t10b5 120a  Becker & Hickl STP-340\n\t\t10b5 2036  SatPak GPS\n\t\t10b5 2221  Alpermann+Velte PCL PCI LV: Timecode Reader Board\n\t\t10b5 2273  SH ARC-PCI SOHARD ARCNET card\n\t\t10b5 2431  Alpermann+Velte PCL PCI D: Timecode Reader Board\n\t\t10b5 2905  Alpermann+Velte PCI TS: Time Synchronisation Board\n\t\t10b5 3196  Goramo PLX200SYN sync serial card\n\t\t10b5 9050  PCI-I04 PCI Passive PC/CAN Interface\n\t\t11a9 5334  PDS4\n\t\t12fe 0001  CAN-PCI/331 CAN bus controller\n\t\t1369 8901  PCX11+ PCI\n\t\t1369 8f01  VX222\n\t\t1369 9401  PCX924\n\t\t1369 9501  PCX22\n\t\t1498 0362  TPMC866 8 Channel Serial Card\n\t\t1522 0001  RockForce 4 Port V.90 Data/Fax/Voice Modem\n\t\t1522 0002  RockForce 2 Port V.90 Data/Fax/Voice Modem\n\t\t1522 0003  RockForce 6 Port V.90 Data/Fax/Voice Modem\n\t\t1522 0004  RockForce 8 Port V.90 Data/Fax/Voice Modem\n\t\t1522 0010  RockForce2000 4 Port V.90 Data/Fax/Voice Modem\n\t\t1522 0020  RockForce2000 2 Port V.90 Data/Fax/Voice Modem\n\t\t15ed 1000  Macrolink MCCS 8-port Serial\n\t\t15ed 1001  Macrolink MCCS 16-port Serial\n\t\t15ed 1002  Macrolink MCCS 8-port Serial Hot Swap\n\t\t15ed 1003  Macrolink MCCS 16-port Serial Hot Swap\n\t\t5654 2036  OpenSwitch 6 Telephony card\n\t\t5654 3132  OpenSwitch 12 Telephony card\n\t\t5654 5634  OpenLine4 Telephony Card\n\t\td531 c002  PCIntelliCAN 2xSJA1000 CAN bus\n\t\td84d 4006  EX-4006 1P\n\t\td84d 4008  EX-4008 1P EPP/ECP\n\t\td84d 4014  EX-4014 2P\n\t\td84d 4018  EX-4018 3P EPP/ECP\n\t\td84d 4025  EX-4025 1S(16C550) RS-232\n\t\td84d 4027  EX-4027 1S(16C650) RS-232\n\t\td84d 4028  EX-4028 1S(16C850) RS-232\n\t\td84d 4036  EX-4036 2S(16C650) RS-232\n\t\td84d 4037  EX-4037 2S(16C650) RS-232\n\t\td84d 4038  EX-4038 2S(16C850) RS-232\n\t\td84d 4052  EX-4052 1S(16C550) RS-422/485\n\t\td84d 4053  EX-4053 2S(16C550) RS-422/485\n\t\td84d 4055  EX-4055 4S(16C550) RS-232\n\t\td84d 4058  EX-4055 4S(16C650) RS-232\n\t\td84d 4065  EX-4065 8S(16C550) RS-232\n\t\td84d 4068  EX-4068 8S(16C650) RS-232\n\t\td84d 4078  EX-4078 2S(16C552) RS-232+1P\n\t9052  PCI9052 PCI <-> IOBus Bridge\n\t9054  PCI9054 32-bit 33MHz PCI <-> IOBus Bridge\n\t\t10b5 1171  Becker & Hickl PMS-400A\n\t\t10b5 1208  Becker & Hickl SPC-830\n\t\t10b5 120e  Becker & Hickl SPC-930\n\t\t10b5 120f  Becker & Hickl SPC-150\n\t\t10b5 1210  Becker & Hickl DPC-230\n\t\t10b5 2455  Wessex Techology PHIL-PCI\n\t\t10b5 2696  Innes Corp AM Radcap card\n\t\t10b5 2717  Innes Corp Auricon card\n\t\t10b5 2844  Innes Corp TVS Encoder card\n\t\t12c7 4001  Intel Dialogic DM/V960-4T1 PCI\n\t\t12d9 0002  PCI Prosody Card rev 1.5\n\t\t14b4 d100  Dektec DTA-100\n\t\t14b4 d114  Dektec DTA-120\n\t\t16df 0011  PIKA PrimeNet MM PCI\n\t\t16df 0012  PIKA PrimeNet MM cPCI 8\n\t\t16df 0013  PIKA PrimeNet MM cPCI 8 (without CAS Signaling)\n\t\t16df 0014  PIKA PrimeNet MM cPCI 4\n\t\t16df 0015  PIKA Daytona MM\n\t\t16df 0016  PIKA InLine MM\n\t9056  PCI9056 32-bit 66MHz PCI <-> IOBus Bridge\n\t\t10b5 2979  CellinkBlade 11 - CPCI board VoATM AAL1\n\t\t10b5 3268  IXXAT iPC-I XC16/PCIe CAN Board\n\t\t10b5 3334  Cambridge Pixel HPx Radar Input Card\n\t\t10b5 3352  Alpermann+Velte PCL PCIe HD: Timecode Reader Board\n\t\t10b5 3353  Alpermann+Velte PCL PCIe D: Timecode Reader Board\n\t\t10b5 3354  Plura PCL PCIe LV: Timecode Reader Board\n\t\t10b5 3355  Plura PCL PCIe L: Timecode Reader Board\n\t\t10b5 3415  Plura PCIe TS: Time Synchronisation Board\n\t\t10b5 3493  Plura PCL PCIe 3G: Timecode Reader Board\n\t\t10b5 3565  Cambridge Pixel HPx Radar Output Card\n\t\t1369 c001  LX6464ES\n\t\t1369 c201  LX1616ES\n\t\t14b4 d10a  DekTec DTA-110T\n\t\t14b4 d128  Dektec DTA-140\n\t\t14b4 d140  Dektec DTA-140\n\t\t1a0e 006f  Dektec DTA-111\n\t9060  PCI9060 32-bit 33MHz PCI <-> IOBus Bridge\n\t906d  9060SD\n\t\t125c 0640  Aries 16000P\n\t906e  9060ES\n\t9080  PCI9080 32-bit; 33MHz PCI <-> IOBus Bridge\n\t\t103c 10eb  (Agilent) E2777B 83K Series Optical Communication Interface\n\t\t103c 10ec  (Agilent) E6978-66442 PCI CIC\n\t\t10b5 1123  Sectra KK631 encryption board\n\t\t10b5 9080  9080 [real subsystem ID not set]\n\t\t12d9 0002  PCI Prosody Card\n\t\t12df 4422  4422PCI [\"Do-All\" Telemetry Data Acquisition System]\n\t\t1369 9601  PCX822np\n\t\t1369 a102  PCX822v2\n\t\t1369 a201  PCX442\n\t\t1369 a301  LCM440v2\n\t\t1369 a401  VX822\n\t\t1369 a402  VX822v2\n\t\t1369 a901  LCM420\n\t\t1369 aa01  VX820v2\n\t\t1517 000b  ECSG-1R3ADC-PMC Clock synthesizer\n\t9656  PCI9656 PCI <-> IOBus Bridge\n\t\t1517 000f  ECDR-GC314-PMC Receiver\n\t\t1885 0700  Tsunami FPGA PMC with Altera Stratix S40\n\t\t1885 0701  Tsunami FPGA PMC with Altera Stratix S30\n\t9712  PEX9712 12-Lane, 5-Port PCIe Gen 3 (8.0 GT/s) ExpressFabric Switch\n\t9733  PEX 9733 33-lane, 9-port PCI Express Gen 3 (8.0 GT/s) Switch\n\t\t1d49 0001  ThinkSystem 1610-4P NVMe Switch Adapter\n\t\t1d49 0002  ThinkSystem 810-4P NVMe Switch Adapter\n\t9749  PEX 9749 49-lane, 13-port PCI Express Gen 3 (8.0 GT/s) Switch\n\t\t1d49 0004  ThinkSystem 1610-8P NVMe Switch Adapter\n\t9765  PEX9765 65-Lane, 17-Port PCIe Gen 3 (8.0 GT/s) ExpressFabric Switch\n\t9781  PEX9781 81-Lane, 21-Port PCIe Gen 3 (8.0 GT/s) ExpressFabric Switch\n\t9797  PEX9781 97-Lane, 25-Port PCIe Gen 3 (8.0 GT/s) ExpressFabric Switch\n\ta100  Blackmagic Design DeckLink\n\tbb04  B&B 3PCIOSD1A Isolated PCI Serial\n\tc001  CronyxOmega-PCI (8-port RS232)\n\td00d  PCI9030 32-bit 33MHz PCI <-> IOBus Bridge\n\t\t10b5 9030  Digium Tormenta 2 T400P or E400P Quad T1 or E1 PCI card\n\td33d  PCI9030 32-bit 33MHz PCI <-> IOBus Bridge\n\t\t10b5 9030  Tormenta 3 Varion V401PT Quad T1/J1 PCI card\n\td44d  PCI9030 32-bit 33MHz PCI <-> IOBus Bridge\n\t\t10b5 17f6  Allo CP100P/E 1-port E1/T1/J1 PCI/PCIe card\n\t\t10b5 17f7  Allo CP400P/E 4-port E1/T1/J1 PCI/PCIe card\n\t\t10b5 17f8  Allo CP200P/E 2-port E1/T1/J1 PCI/PCIe card\n\t\t10b5 9030  Tormenta 3 Varion V401PE Quad E1 PCI card\n10b6  Madge Networks\n\t0001  Smart 16/4 PCI Ringnode\n\t0002  Smart 16/4 PCI Ringnode Mk2\n\t\t10b6 0002  Smart 16/4 PCI Ringnode Mk2\n\t\t10b6 0006  16/4 CardBus Adapter\n\t0003  Smart 16/4 PCI Ringnode Mk3\n\t\t0e11 b0fd  Compaq NC4621 PCI, 4/16, WOL\n\t\t10b6 0003  Smart 16/4 PCI Ringnode Mk3\n\t\t10b6 0007  Presto PCI Plus Adapter\n\t0004  Smart 16/4 PCI Ringnode Mk1\n\t0006  16/4 Cardbus Adapter\n\t\t10b6 0006  16/4 CardBus Adapter\n\t0007  Presto PCI Adapter\n\t\t10b6 0007  Presto PCI\n\t0009  Smart 100/16/4 PCI-HS Ringnode\n\t\t10b6 0009  Smart 100/16/4 PCI-HS Ringnode\n\t000a  Token Ring 100/16/4 Ringnode/Ringrunner\n\t\t10b6 000a  Token Ring 100/16/4 Ringnode/Ringrunner\n\t000b  16/4 CardBus Adapter Mk2\n\t\t10b6 0008  16/4 CardBus Adapter Mk2\n\t\t10b6 000b  16/4 Cardbus Adapter Mk2\n\t000c  RapidFire 3140V2 16/4 TR Adapter\n\t\t10b6 000c  RapidFire 3140V2 16/4 TR Adapter\n\t1000  Collage 25/155 ATM Client Adapter\n\t1001  Collage 155 ATM Server Adapter\n10b7  3Com Corporation\n\t0001  3c985 1000BaseSX (SX/TX)\n# wrong ID?\n\t\t9850 0001  3c985B-SX\n\t0013  AR5212 802.11abg NIC (3CRDAG675)\n\t\t10b7 2031  3CRDAG675 11a/b/g Wireless PCI Adapter\n\t0910  3C910-A01\n\t1006  MINI PCI type 3B Data Fax Modem\n\t1007  Mini PCI 56k Winmodem\n\t\t10b7 615b  Mini PCI 56K Modem\n\t\t10b7 615c  Mini PCI 56K Modem\n\t1201  3c982-TXM 10/100baseTX Dual Port A [Hydra]\n\t1202  3c982-TXM 10/100baseTX Dual Port B [Hydra]\n\t1700  3c940 10/100/1000Base-T [Marvell]\n\t\t1043 80eb  A7V600/P4P800/K8V motherboard\n\t\t10b7 0010  3C940 Gigabit LOM Ethernet Adapter\n\t\t10b7 0020  3C941 Gigabit LOM Ethernet Adapter\n\t\t147b 1407  KV8-MAX3 motherboard\n\t3390  3c339 TokenLink Velocity\n\t3590  3c359 TokenLink Velocity XL\n\t\t10b7 3590  TokenLink Velocity XL Adapter (3C359/359B)\n\t4500  3c450 HomePNA [Tornado]\n\t5055  3c555 Laptop Hurricane\n\t5057  3c575 Megahertz 10/100 LAN CardBus [Boomerang]\n\t\t10b7 5a57  3C575 Megahertz 10/100 LAN Cardbus PC Card\n\t5157  3cCFE575BT Megahertz 10/100 LAN CardBus [Cyclone]\n\t\t10b7 5b57  3C575 Megahertz 10/100 LAN Cardbus PC Card\n\t5257  3cCFE575CT CardBus [Cyclone]\n\t\t10b7 5c57  FE575C-3Com 10/100 LAN CardBus-Fast Ethernet\n\t5900  3c590 10BaseT [Vortex]\n\t5920  3c592 EISA 10mbps Demon/Vortex\n\t5950  3c595 100BaseTX [Vortex]\n\t5951  3c595 100BaseT4 [Vortex]\n\t5952  3c595 100Base-MII [Vortex]\n\t5970  3c597 EISA Fast Demon/Vortex\n\t5b57  3c595 Megahertz 10/100 LAN CardBus [Boomerang]\n\t\t10b7 5b57  3C575 Megahertz 10/100 LAN Cardbus PC Card\n\t6000  3CRSHPW796 [OfficeConnect Wireless CardBus]\n\t6001  3com 3CRWE154G72 [Office Connect Wireless LAN Adapter]\n\t6055  3c556 Hurricane CardBus [Cyclone]\n\t6056  3c556B CardBus [Tornado]\n\t\t10b7 6556  10/100 Mini PCI Ethernet Adapter\n\t6560  3cCFE656 CardBus [Cyclone]\n\t\t10b7 656a  3CCFEM656 10/100 LAN+56K Modem CardBus\n\t6561  3cCFEM656 10/100 LAN+56K Modem CardBus\n\t\t10b7 656b  3CCFEM656 10/100 LAN+56K Modem CardBus\n\t6562  3cCFEM656B 10/100 LAN+Winmodem CardBus [Cyclone]\n\t\t10b7 656b  3CCFEM656B 10/100 LAN+56K Modem CardBus\n\t6563  3cCFEM656B 10/100 LAN+56K Modem CardBus\n\t\t10b7 656b  3CCFEM656 10/100 LAN+56K Modem CardBus\n\t6564  3cXFEM656C 10/100 LAN+Winmodem CardBus [Tornado]\n\t7646  3cSOHO100-TX Hurricane\n\t7770  3CRWE777 PCI Wireless Adapter [Airconnect]\n\t7940  3c803 FDDILink UTP Controller\n\t7980  3c804 FDDILink SAS Controller\n\t7990  3c805 FDDILink DAS Controller\n\t80eb  3c940B 10/100/1000Base-T\n\t8811  Token ring\n\t9000  3c900 10BaseT [Boomerang]\n\t9001  3c900 10Mbps Combo [Boomerang]\n\t9004  3c900B-TPO Etherlink XL [Cyclone]\n\t\t10b7 9004  3C900B-TPO Etherlink XL TPO 10Mb\n\t9005  3c900B-Combo Etherlink XL [Cyclone]\n\t\t10b7 9005  3C900B-Combo Etherlink XL Combo\n\t9006  3c900B-TPC Etherlink XL [Cyclone]\n\t900a  3c900B-FL 10base-FL [Cyclone]\n\t9050  3c905 100BaseTX [Boomerang]\n\t9051  3c905 100BaseT4 [Boomerang]\n\t9054  3C905B-TX Fast Etherlink XL PCI\n\t\t10b7 9054  3C905B-TX Fast Etherlink XL PCI\n\t9055  3c905B 100BaseTX [Cyclone]\n\t\t1028 0080  3C905B Fast Etherlink XL 10/100\n\t\t1028 0081  3C905B Fast Etherlink XL 10/100\n\t\t1028 0082  3C905B Fast Etherlink XL 10/100\n\t\t1028 0083  3C905B Fast Etherlink XL 10/100\n\t\t1028 0084  3C905B Fast Etherlink XL 10/100\n\t\t1028 0085  3C905B Fast Etherlink XL 10/100\n\t\t1028 0086  3C905B Fast Etherlink XL 10/100\n\t\t1028 0087  3C905B Fast Etherlink XL 10/100\n\t\t1028 0088  3C905B Fast Etherlink XL 10/100\n\t\t1028 0089  3C905B Fast Etherlink XL 10/100\n\t\t1028 0090  3C905B Fast Etherlink XL 10/100\n\t\t1028 0091  3C905B Fast Etherlink XL 10/100\n\t\t1028 0092  3C905B Fast Etherlink XL 10/100\n\t\t1028 0093  3C905B Fast Etherlink XL 10/100\n\t\t1028 0094  3C905B Fast Etherlink XL 10/100\n\t\t1028 0095  3C905B Fast Etherlink XL 10/100\n\t\t1028 0096  3C905B Fast Etherlink XL 10/100\n\t\t1028 0097  3C905B Fast Etherlink XL 10/100\n\t\t1028 0098  3C905B Fast Etherlink XL 10/100\n\t\t1028 0099  3C905B Fast Etherlink XL 10/100\n\t\t10b7 9055  3C905B Fast Etherlink XL 10/100\n\t9056  3c905B-T4 Fast EtherLink XL [Cyclone]\n\t9058  3c905B Deluxe Etherlink 10/100/BNC [Cyclone]\n\t905a  3c905B-FX Fast Etherlink XL FX 100baseFx [Cyclone]\n\t9200  3c905C-TX/TX-M [Tornado]\n\t\t1028 0095  3C920 Integrated Fast Ethernet Controller\n\t\t1028 0097  3C920 Integrated Fast Ethernet Controller\n\t\t1028 00b4  OptiPlex GX110\n\t\t1028 00d8  Precision 530\n\t\t1028 00fe  Optiplex GX240\n\t\t1028 012a  3C920 Integrated Fast Ethernet Controller [Latitude C640]\n\t\t10b7 1000  3C905CX-TX/TX-M Fast Etherlink for PC Management NIC\n\t\t10b7 7000  10/100 Mini PCI Ethernet Adapter\n\t\t10f1 2466  Tiger MPX S2466 (3C920 Integrated Fast Ethernet Controller)\n\t\t144d c005  X10 Laptop\n\t9201  3C920B-EMB Integrated Fast Ethernet Controller [Tornado]\n\t\t1043 80ab  A7N8X Deluxe onboard 3C920B-EMB Integrated Fast Ethernet Controller\n\t9202  3Com 3C920B-EMB-WNM Integrated Fast Ethernet Controller\n\t9210  3C920B-EMB-WNM Integrated Fast Ethernet Controller\n\t9300  3CSOHO100B-TX 910-A01 [tulip]\n\t9800  3c980-TX Fast Etherlink XL Server Adapter [Cyclone]\n\t\t10b7 9800  3c980-TX Fast Etherlink XL Server Adapter\n\t9805  3c980-C 10/100baseTX NIC [Python-T]\n\t\t10b7 1201  EtherLink Server 10/100 Dual Port A\n\t\t10b7 1202  EtherLink Server 10/100 Dual Port B\n\t\t10b7 9805  3c980 10/100baseTX NIC [Python-T]\n\t\t10f1 2462  Thunder K7 S2462\n\t9900  3C990-TX [Typhoon]\n\t9902  3CR990-TX-95 [Typhoon 56-bit]\n\t9903  3CR990-TX-97 [Typhoon 168-bit]\n\t9904  3C990B-TX-M/3C990BSVR [Typhoon2]\n\t\t10b7 1000  3CR990B-TX-M [Typhoon2]\n\t\t10b7 2000  3CR990BSVR [Typhoon2 Server]\n\t9905  3CR990-FX-95/97/95 [Typhon Fiber]\n\t\t10b7 1101  3CR990-FX-95 [Typhoon Fiber 56-bit]\n\t\t10b7 1102  3CR990-FX-97 [Typhoon Fiber 168-bit]\n\t\t10b7 2101  3CR990-FX-95 Server [Typhoon Fiber 56-bit]\n\t\t10b7 2102  3CR990-FX-97 Server [Typhoon Fiber 168-bit]\n\t9908  3CR990SVR95 [Typhoon Server 56-bit]\n\t9909  3CR990SVR97 [Typhoon Server 168-bit]\n\t990a  3C990SVR [Typhoon Server]\n\t990b  3C990SVR [Typhoon Server]\n10b8  Standard Microsystems Corp [SMC]\n\t0005  83c170 EPIC/100 Fast Ethernet Adapter\n\t\t1055 e000  LANEPIC 10/100 [EVB171Q-PCI]\n\t\t1055 e002  LANEPIC 10/100 [EVB171G-PCI]\n\t\t10b8 a011  EtherPower II 10/100\n\t\t10b8 a014  EtherPower II 10/100\n\t\t10b8 a015  EtherPower II 10/100\n\t\t10b8 a016  EtherPower II 10/100\n\t\t10b8 a017  EtherPower II 10/100\n\t0006  83c175 EPIC/100 Fast Ethernet Adapter\n\t\t1055 e100  LANEPIC Cardbus Fast Ethernet Adapter\n\t\t1055 e102  LANEPIC Cardbus Fast Ethernet Adapter\n\t\t1055 e300  LANEPIC Cardbus Fast Ethernet Adapter\n\t\t1055 e302  LANEPIC Cardbus Fast Ethernet Adapter\n\t\t10b8 a012  LANEPIC Cardbus Fast Ethernet Adapter\n\t\t13a2 8002  LANEPIC Cardbus Fast Ethernet Adapter\n\t\t13a2 8006  LANEPIC Cardbus Fast Ethernet Adapter\n\t1000  FDC 37c665\n\t1001  FDC 37C922\n\ta011  83C170QF\n\tb106  SMC34C90\n# Split off ALi Corporation in 2003\n10b9  ULi Electronics Inc.\n\t0101  CMI8338/C3DX PCI Audio Device\n\t0111  C-Media CMI8738/C3DX Audio Device (OEM)\n\t\t10b9 0111  C-Media CMI8738/C3DX Audio Device (OEM)\n\t0780  Multi-IO Card\n\t0782  Multi-IO Card\n\t1435  M1435\n\t1445  M1445\n\t1449  M1449\n\t1451  M1451\n\t1461  M1461\n\t1489  M1489 Cache-Memory PCI Controller (CMP) [FinALi 486] CPU to PCI bridge\n\t1511  M1511 [Aladdin]\n\t1512  M1512 [Aladdin]\n\t1513  M1513 [Aladdin]\n\t1521  M1521 [Aladdin III]\n\t\t10b9 1521  ALI M1521 Aladdin III CPU Bridge\n\t1523  M1523\n\t\t10b9 1523  ALI M1523 ISA Bridge\n\t1531  M1531 [Aladdin IV]\n\t1533  M1533/M1535/M1543 PCI to ISA Bridge [Aladdin IV/V/V+]\n\t\t1014 053b  ThinkPad R40e\n\t\t10b9 1533  ALi M1533 Aladdin IV/V ISA Bridge\n\t1541  M1541\n\t\t10b9 1541  ALI M1541 Aladdin V/V+ AGP System Controller\n\t1543  M1543\n\t1563  M1563 HyperTransport South Bridge\n\t\t10b9 1563  ASRock 939Dual-SATA2 Motherboard\n\t\t1849 1563  ASRock 939Dual-SATA2 Motherboard\n\t1573  PCI to LPC Controller\n\t1575  M1575 South Bridge\n\t1621  M1621\n\t1631  ALI M1631 PCI North Bridge Aladdin Pro III\n\t1632  M1632M Northbridge+Trident\n\t1641  ALI M1641 PCI North Bridge Aladdin Pro IV\n\t1644  M1644/M1644T Northbridge+Trident\n\t1646  M1646 Northbridge+Trident\n\t1647  M1647 Northbridge [MAGiK 1 / MobileMAGiK 1]\n\t1651  M1651/M1651T Northbridge [Aladdin-Pro 5/5M,Aladdin-Pro 5T/5TM]\n\t1671  M1671 Super P4 Northbridge [AGP4X,PCI and SDR/DDR]\n\t1672  M1672 Northbridge [CyberALADDiN-P4]\n\t1681  M1681 P4 Northbridge [AGP8X,HyperTransport and SDR/DDR]\n\t1687  M1687 K8 Northbridge [AGP8X and HyperTransport]\n\t1689  M1689 K8 Northbridge [Super K8 Single Chip]\n\t1695  M1695 Host Bridge\n\t1697  M1697 HTT Host Bridge\n\t3141  M3141\n\t3143  M3143\n\t3145  M3145\n\t3147  M3147\n\t3149  M3149\n\t3151  M3151\n\t3307  M3307\n\t3309  M3309\n\t3323  M3325 Video/Audio Decoder\n\t5212  M4803\n\t5215  MS4803\n\t5217  M5217H\n\t5219  M5219\n\t5225  M5225\n\t5228  M5228 ALi ATA/RAID Controller\n\t5229  M5229 IDE\n\t\t1014 050f  ThinkPad R30\n\t\t1014 053d  ThinkPad R40e\n\t\t103c 0024  Pavilion ze4400 builtin IDE\n\t\t103c 0025  XE4500 Notebook\n\t\t1043 8053  A7A266 Motherboard IDE\n\t\t1849 5229  ASRock 939Dual-SATA2 Motherboard IDE (PATA)\n\t5235  M5225\n\t5237  USB 1.1 Controller\n\t\t1014 0540  ThinkPad R40e\n\t\t103c 0024  Pavilion ze4400 builtin USB\n\t\t103c 0025  XE4500 Notebook\n\t\t104d 810f  VAIO PCG-U1 USB/OHCI Revision 1.0\n\t\t10b9 5237  M5273 USB OHCI PCI adapter\n\t\t1849 5237  ASRock 939Dual-SATA2 Motherboard\n\t5239  USB 2.0 Controller\n\t\t10b9 5239  M5273 USB PCI adapter\n\t\t1849 5239  ASRock 939Dual-SATA2 Motherboard\n\t5243  M1541 PCI to AGP Controller\n\t5246  AGP8X Controller\n\t5247  PCI to AGP Controller\n\t5249  M5249 HTT to PCI Bridge\n\t524b  PCI Express Root Port\n\t524c  PCI Express Root Port\n\t524d  PCI Express Root Port\n\t524e  PCI Express Root Port\n\t5251  M5251 P1394 OHCI 1.0 Controller\n\t5253  M5253 P1394 OHCI 1.1 Controller\n\t5261  M5261 Ethernet Controller\n\t5263  ULi 1689,1573 integrated ethernet.\n\t5281  ALi M5281 Serial ATA / RAID Host Controller\n\t5287  ULi 5287 SATA\n\t5288  ULi M5288 SATA\n\t\t1043 8056  A8R-MVP Mainboard\n\t5289  ULi 5289 SATA\n\t5450  Lucent Technologies Soft Modem AMR\n\t5451  M5451 PCI AC-Link Controller Audio Device\n\t\t1014 0506  ThinkPad R30\n\t\t1014 053e  ThinkPad R40e\n\t\t103c 0024  Pavilion ze4400 builtin Audio\n\t\t103c 0025  XE4500 Notebook\n\t5453  M5453 PCI AC-Link Controller Modem Device\n\t5455  M5455 PCI AC-Link Controller Audio Device\n\t\t10b9 5455  ASRock 939Dual-SATA2 Motherboard\n\t\t1849 0850  ASRock 939Dual-SATA2 Motherboard\n\t5457  M5457 AC'97 Modem Controller\n\t\t1014 0535  ThinkPad R40e\n\t\t103c 0024  Pavilion ze4400 builtin Modem Device\n\t\t103c 0025  XE4500 Notebook\n\t5459  SmartLink SmartPCI561 56K Modem\n\t545a  SmartLink SmartPCI563 56K Modem\n\t5461  HD Audio Controller\n\t5471  M5471 Memory Stick Controller\n\t5473  M5473 SD-MMC Controller\n\t7101  M7101 Power Management Controller [PMU]\n\t\t1014 0510  ThinkPad R30\n\t\t1014 053c  ThinkPad R40e\n\t\t103c 0024  Pavilion ze4400\n\t\t103c 0025  XE4500 Notebook\n\t\t1849 7101  ASRock 939Dual-SATA2 Motherboard\n10ba  Mitsubishi Electric Corp.\n\t0301  AccelGraphics AccelECLIPSE\n\t0304  AccelGALAXY A2100 [OEM Evans & Sutherland]\n\t0308  Tornado 3000 [OEM Evans & Sutherland]\n\t\t10dd 0024  Tornado 3000\n\t1002  VG500 [VolumePro Volume Rendering Accelerator]\n10bb  Dapha Electronics Corporation\n10bc  Advanced Logic Research\n10bd  Surecom Technology\n\t0e34  NE-34\n10be  Tseng Labs International Co.\n10bf  Most Inc\n10c0  Boca Research Inc.\n\t9135  iX3D Ultimate Rez\n10c1  ICM Co., Ltd.\n10c2  Auspex Systems Inc.\n10c3  Samsung Semiconductors, Inc.\n10c4  Award Software International Inc.\n10c5  Xerox Corporation\n10c6  Rambus Inc.\n10c7  Media Vision\n10c8  Neomagic Corporation\n\t0001  NM2070 [MagicGraph 128]\n\t0002  NM2090 [MagicGraph 128V]\n\t0003  NM2093 [MagicGraph 128ZV]\n\t0004  NM2160 [MagicGraph 128XD]\n\t\t1014 00ba  MagicGraph 128XD\n\t\t1025 1007  MagicGraph 128XD\n\t\t1028 0074  MagicGraph 128XD\n\t\t1028 0075  MagicGraph 128XD\n\t\t1028 007d  MagicGraph 128XD\n\t\t1028 007e  MagicGraph 128XD\n\t\t1033 802f  MagicGraph 128XD\n\t\t104d 801b  MagicGraph 128XD\n\t\t104d 802f  MagicGraph 128XD\n\t\t104d 830b  MagicGraph 128XD\n\t\t10ba 0e00  MagicGraph 128XD\n\t\t10c8 0004  MagicGraph 128XD\n\t\t10cf 1029  MagicGraph 128XD\n\t\t10f7 8308  MagicGraph 128XD\n\t\t10f7 8309  MagicGraph 128XD\n\t\t10f7 830b  MagicGraph 128XD\n\t\t10f7 830d  MagicGraph 128XD\n\t\t10f7 8312  MagicGraph 128XD\n\t0005  NM2200 [MagicGraph 256AV]\n\t\t1014 00dd  ThinkPad 570\n\t\t1028 0088  Latitude CPi A\n\t0006  NM2360 [MagicMedia 256ZX]\n\t\t1014 0152  ThinkPad 600X\n\t0016  NM2380 [MagicMedia 256XL+]\n\t\t10c8 0016  MagicMedia 256XL+\n\t0025  NM2230 [MagicGraph 256AV+]\n\t0083  NM2093 [MagicGraph 128ZV+]\n\t8005  NM2200 [MagicMedia 256AV Audio]\n\t\t0e11 b0d1  MagicMedia 256AV Audio Device on Discovery\n\t\t0e11 b126  MagicMedia 256AV Audio Device on Durango\n\t\t1014 00dd  ThinkPad 390/i1720/i1721\n\t\t1025 1003  MagicMedia 256AV Audio Device on TravelMate 720\n\t\t1028 0088  Latitude CPi A\n\t\t1028 008f  MagicMedia 256AV Audio Device on Colorado Inspiron\n\t\t103c 0007  MagicMedia 256AV Audio Device on Voyager II\n\t\t103c 0008  MagicMedia 256AV Audio Device on Voyager III\n\t\t103c 000d  MagicMedia 256AV Audio Device on Omnibook 900\n\t\t10c8 8005  MagicMedia 256AV Audio Device on FireAnt\n\t\t110a 8005  MagicMedia 256AV Audio Device\n\t\t14c0 0004  MagicMedia 256AV Audio Device\n\t8006  NM2360 [MagicMedia 256ZX Audio]\n\t8016  NM2380 [MagicMedia 256XL+ Audio]\n10c9  Dataexpert Corporation\n10ca  Fujitsu Microelectr., Inc.\n10cb  Omron Corporation\n# nee Mentor ARC Inc\n10cc  Mai Logic Incorporated\n\t0660  Articia S Host Bridge\n\t0661  Articia S PCI Bridge\n10cd  Advanced System Products, Inc\n\t1100  ASC1100\n\t1200  ASC1200 [(abp940) Fast SCSI-II]\n\t1300  ASC1300 / ASC3030 [ABP940-U / ABP960-U / ABP3925]\n\t\t10cd 1310  ASC1300/3030 SCSI adapter\n\t\t1195 1320  Ultra-SCSI CardBus PC Card REX CB31\n\t2300  ABP940-UW\n\t2500  ABP940-U2W\n\t2700  ABP3950-U3W\n10ce  Radius\n# nee Citicorp TTI\n10cf  Fujitsu Limited.\n\t01ef  PCEA4 PCI-Express Dual Port ESCON Adapter\n\t1414  On-board USB 1.1 companion controller\n\t1415  On-board USB 2.0 EHCI controller\n\t1422  E8410 nVidia graphics adapter\n\t142d  HD audio (Realtek ALC262)\n\t1430  82566MM Intel 1Gb copper LAN interface\n\t1623  PCEA4 PCI-Express Dual Port ESCON Adapter\n\t2001  mb86605\n\t200c  MB86613L IEEE1394 OHCI 1.0 Controller\n\t2010  MB86613S IEEE1394 OHCI 1.1 Controller\n\t2019  MB86295S [CORAL P]\n\t201e  MB86296S [CORAL PA]\n\t202b  MB86297A [Carmine Graphics Controller]\n10d1  FuturePlus Systems Corp.\n10d2  Molex Incorporated\n10d3  Jabil Circuit Inc\n10d4  Hualon Microelectronics\n10d5  Autologic Inc.\n10d6  Cetia\n10d7  BCM Advanced Research\n10d8  Advanced Peripherals Labs\n10d9  Macronix, Inc. [MXIC]\n\t0431  MX98715\n\t0512  MX98713\n\t0531  MX987x5\n\t\t1186 1200  DFE-540TX ProFAST 10/100 Adapter\n\t8625  MX86250\n\t8626  Macronix MX86251 + 3Dfx Voodoo Rush\n\t8888  MX86200\n10da  Compaq IPG-Austin\n\t0508  TC4048 Token Ring 4/16\n\t3390  Tl3c3x9\n10db  Rohm LSI Systems, Inc.\n10dc  CERN/ECP/EDU\n\t0001  STAR/RD24 SCI-PCI (PMC)\n\t0002  TAR/RD24 SCI-PCI (PMC)\n\t0021  HIPPI destination\n\t0022  HIPPI source\n\t10dc  ATT2C15-3 FPGA\n10dd  Evans & Sutherland\n\t0100  Lightning 1200\n\t\t10dd 0023  Lightning 1200 15+16M\n10de  NVIDIA Corporation\n\t0008  NV1 [STG2000X-B Series]\n\t0009  NV1 [NV1 Series]\n\t0018  NV3 [Riva 128]\n\t0019  NV3 [Riva 128ZX]\n\t0020  NV4 [Riva TNT]\n\t\t1043 0200  V3400 TNT\n\t\t1048 0c18  Erazor II SGRAM\n\t\t1048 0c19  Erazor II\n\t\t1048 0c1b  Erazor II\n\t\t1048 0c1c  Erazor II\n\t\t1092 0550  Viper V550\n\t\t1092 0552  Viper V550\n\t\t1092 4804  Viper V550\n\t\t1092 4808  Viper V550\n\t\t1092 4810  Viper V550\n\t\t1092 4812  Viper V550\n\t\t1092 4815  Viper V550\n\t\t1092 4820  Viper V550 with TV out\n\t\t1092 4822  Viper V550\n\t\t1092 4904  Viper V550\n\t\t1092 4914  Viper V550\n\t\t1092 8225  Viper V550\n\t\t10b4 273d  Velocity 4400\n\t\t10b4 273e  Velocity 4400\n\t\t10b4 2740  Velocity 4400\n\t\t10de 0020  Riva TNT\n\t\t1102 1015  Graphics Blaster CT6710\n\t\t1102 1016  Graphics Blaster RIVA TNT\n\t0028  NV5 [Riva TNT2 / TNT2 Pro]\n\t\t1043 0200  AGP-V3800 SGRAM\n\t\t1043 0201  AGP-V3800 SDRAM\n\t\t1043 0205  PCI-V3800\n\t\t1043 4000  AGP-V3800PRO\n\t\t1048 0c21  Synergy II\n\t\t1048 0c28  Erazor III\n\t\t1048 0c29  Erazor III\n\t\t1048 0c2a  Erazor III\n\t\t1048 0c2b  Erazor III\n\t\t1048 0c31  Erazor III Pro\n\t\t1048 0c32  Erazor III Pro\n\t\t1048 0c33  Erazor III Pro\n\t\t1048 0c34  Erazor III Pro\n\t\t107d 2134  WinFast 3D S320 II + TV-Out\n\t\t1092 4804  Viper V770\n\t\t1092 4a00  Viper V770\n\t\t1092 4a02  Viper V770 Ultra\n\t\t1092 5a00  RIVA TNT2/TNT2 Pro\n\t\t1092 5a40  Viper V770D AGP\n\t\t1092 6a02  Viper V770 Ultra\n\t\t1092 7a02  Viper V770 Ultra\n\t\t10de 0005  RIVA TNT2 Pro\n\t\t10de 000f  Compaq NVIDIA TNT2 Pro\n\t\t1102 1020  3D Blaster RIVA TNT2\n\t\t1102 1026  3D Blaster RIVA TNT2 Digital\n\t\t1462 8806  MS-8806 AGPhantom Graphics Card\n\t\t14af 5810  Maxi Gamer Xentor\n\t0029  NV5 [Riva TNT2 Ultra]\n\t\t1043 0200  AGP-V3800 Deluxe\n\t\t1043 0201  AGP-V3800 Ultra SDRAM\n\t\t1043 0205  PCI-V3800 Ultra\n\t\t1048 0c2e  Erazor III Ultra\n\t\t1048 0c2f  Erazor III Ultra\n\t\t1048 0c30  Erazor III Ultra\n\t\t1102 1021  3D Blaster RIVA TNT2 Ultra\n\t\t1102 1029  3D Blaster RIVA TNT2 Ultra\n\t\t1102 102f  3D Blaster RIVA TNT2 Ultra\n\t\t14af 5820  Maxi Gamer Xentor 32\n\t\t4843 4f34  Dynamite\n\t002a  NV5 [Riva TNT2]\n\t002b  NV5 [Riva TNT2]\n\t002c  NV5 [Vanta / Vanta LT]\n\t\t1043 0200  AGP-V3800 Combat SDRAM\n\t\t1043 0201  AGP-V3800 Combat\n\t\t1048 0c20  TNT2 Vanta\n\t\t1048 0c21  TNT2 Vanta\n\t\t1048 0c25  TNT2 Vanta 16MB\n\t\t1092 6820  Viper V730\n\t\t1102 1031  CT6938 VANTA 8MB\n\t\t1102 1034  CT6894 VANTA 16MB\n\t\t14af 5008  Maxi Gamer Phoenix 2\n\t002d  NV5 [Riva TNT2 Model 64 / Model 64 Pro]\n\t\t1043 0200  AGP-V3800M\n\t\t1043 0201  AGP-V3800M\n\t\t1048 0c3a  Erazor III LT\n\t\t1048 0c3b  Erazor III LT\n\t\t107d 2137  WinFast 3D S325\n\t\t10de 0006  RIVA TNT2 Model 64/Model 64 Pro\n\t\t10de 001e  M64 AGP4x\n\t\t1102 1023  CT6892 RIVA TNT2 Value\n\t\t1102 1024  CT6932 RIVA TNT2 Value 32Mb\n\t\t1102 102c  CT6931 RIVA TNT2 Value [Jumper]\n\t\t1102 1030  CT6931 RIVA TNT2 Value\n# S26361-D1243-V116\n\t\t110a 006f  GM1000-16\n# S26361-D1243-V216\n\t\t110a 0081  GM1000-16\n\t\t1462 8808  MSI-8808\n\t\t14af 5620  Gamer Cougar Video Edition\n\t\t1554 1041  Pixelview RIVA TNT2 M64\n\t\t1569 002d  Palit Microsystems Daytona TNT2 M64\n\t0034  MCP04 SMBus\n\t0035  MCP04 IDE\n\t0036  MCP04 Serial ATA Controller\n\t0037  MCP04 Ethernet Controller\n\t0038  MCP04 Ethernet Controller\n\t003a  MCP04 AC'97 Audio Controller\n\t003b  MCP04 USB Controller\n\t003c  MCP04 USB Controller\n\t003d  MCP04 PCI Bridge\n\t003e  MCP04 Serial ATA Controller\n\t0040  NV40 [GeForce 6800 Ultra]\n\t0041  NV40 [GeForce 6800]\n\t\t1043 817b  V9999 Gamer Edition\n\t\t107d 2992  WinFast A400\n\t\t1458 310f  Geforce 6800 GV-N6812\n\t0042  NV40 [GeForce 6800 LE]\n\t\t107d 299b  WinFast A400 LE\n\t0043  NV40 [GeForce 6800 XE]\n\t0044  NV40 [GeForce 6800 XT]\n\t0045  NV40 [GeForce 6800 GT]\n\t\t1043 817d  V9999GT\n\t\t1458 3140  GV-N68T256D\n\t0047  NV40 [GeForce 6800 GS]\n\t\t1682 2109  GeForce 6800 GS\n\t0048  NV40 [GeForce 6800 XT]\n\t004e  NV40GL [Quadro FX 4000]\n\t0050  CK804 ISA Bridge\n\t\t1043 815a  K8N4/A8N Series Mainboard\n\t\t10f1 2865  Tomcat K8E (S2865)\n\t\t1458 0c11  GA-K8N Ultra-9 Mainboard\n\t\t1462 7100  MSI K8N Diamond\n\t\t1462 7125  K8N Neo4-F mainboard\n\t\t147b 1c1a  KN8-Ultra Mainboard\n\t\t1565 3402  NF4 AM2L Mainboard\n\t0051  CK804 ISA Bridge\n\t\t1028 0225  PowerEdge T105 ISA Bridge\n\t0052  CK804 SMBus\n\t\t1028 0225  PowerEdge T105 SMBus\n\t\t1043 815a  K8N4/A8N Series Mainboard\n\t\t10f1 2865  Tomcat K8E (S2865)\n\t\t1458 0c11  GA-K8N Ultra-9 Mainboard\n\t\t1462 7100  MSI K8N Diamond\n\t\t1462 7125  K8N Neo4-F mainboard\n\t\t147b 1c1a  KN8-Ultra Mainboard\n\t\t1565 3402  NF4 AM2L Mainboard\n\t0053  CK804 IDE\n\t\t1043 815a  K8N4/A8N Series Mainboard\n\t\t10f1 2865  Tomcat K8E (S2865)\n\t\t1458 5002  GA-K8N Ultra-9 Mainboard\n\t\t1462 7100  MSI K8N Diamond\n\t\t1462 7125  K8N Neo4-F mainboard\n\t\t147b 1c1a  KN8-Ultra Mainboard\n\t\t1565 3402  NF4 AM2L Mainboard\n\t0054  CK804 Serial ATA Controller\n\t\t1028 0225  PowerEdge T105 Serial ATA\n\t\t1043 815a  A8N Series Mainboard\n\t\t10f1 2865  Tomcat K8E (S2865)\n\t\t1458 b003  GA-K8N Ultra-9 Mainboard\n\t\t1462 7100  MSI K8N Diamond\n\t\t1462 7125  K8N Neo4-F mainboard\n\t\t147b 1c1a  KN8-Ultra Mainboard\n\t\t1565 5401  NF4 AM2L Mainboard\n\t0055  CK804 Serial ATA Controller\n\t\t1028 0225  PowerEdge T105 Serial ATA\n\t\t1043 815a  K8N4/A8N Series Mainboard\n\t\t10f1 2865  Tomcat K8E (S2865)\n\t\t1458 b003  GA-K8N Ultra-9 Mainboard\n\t\t1462 7125  K8N Neo4-F mainboard\n\t\t147b 1c1a  KN8-Ultra Mainboard\n\t\t1565 5401  NF4 AM2L Mainboard\n\t0056  CK804 Ethernet Controller\n\t0057  CK804 Ethernet Controller\n\t\t1043 8141  K8N4/A8N Series Mainboard\n\t\t10de cb84  NF4 Lanparty\n\t\t10f1 2865  Tomcat K8E (S2865)\n\t\t1458 e000  GA-K8N Ultra-9 Mainboard\n\t\t1462 7100  MSI K8N Diamond\n\t\t1462 7125  K8N Neo4-F mainboard\n\t\t147b 1c1a  KN8-Ultra Mainboard\n\t\t1565 2501  NF4 AM2L Mainboard\n\t0058  CK804 AC'97 Modem\n\t0059  CK804 AC'97 Audio Controller\n\t\t1043 812a  K8N4/A8N Series Mainboard\n\t\t10f1 2865  Tomcat K8E (S2865)\n\t\t1462 7585  K8N Neo4-F mainboard\n\t\t147b 1c1a  KN8-Ultra Mainboard\n\t\t1565 8211  NF4 AM2L Mainboard\n\t005a  CK804 USB Controller\n\t\t1028 0225  PowerEdge T105 onboard USB\n\t\t1043 815a  K8N4/A8N Series Mainboard\n\t\t10f1 2865  Tomcat K8E (S2865)\n\t\t1458 5004  GA-K8N Ultra-9 Mainboard\n\t\t1462 7100  MSI K8N Diamond\n\t\t1462 7125  K8N Neo4-F mainboard\n\t\t147b 1c1a  KN8-Ultra Mainboard\n\t\t1565 3402  NF4 AM2L Mainboard\n\t005b  CK804 USB Controller\n\t\t1028 0225  PowerEdge T105 onboard USB\n\t\t1043 815a  K8N4/A8N Series Mainboard\n\t\t10f1 2865  Tomcat K8E (S2865)\n\t\t1458 5004  GA-K8N Ultra-9 Mainboard\n\t\t1462 7100  MSI K8N Diamond\n\t\t1462 7125  K8N Neo4-F mainboard\n\t\t147b 1c1a  KN8-Ultra Mainboard\n\t\t1565 3402  NF4 AM2L Mainboard\n\t005c  CK804 PCI Bridge\n\t005d  CK804 PCIE Bridge\n\t005e  CK804 Memory Controller\n\t\t1028 0225  PowerEdge T105 Memory Controller\n\t\t1043 815a  A8N Series Mainboard\n\t\t10de 005e  ECS Elitegroup NFORCE3-A939 motherboard.\n\t\t10f1 2865  Tomcat K8E (S2865)\n\t\t10f1 2891  Thunder K8SRE Mainboard\n\t\t1458 5000  GA-K8N Ultra-9 Mainboard\n\t\t1462 7100  K8N Diamond Mainboard\n\t\t1462 7125  K8N Neo4-F Mainboard\n\t\t147b 1c1a  KN8-Ultra Mainboard\n\t\t1565 3402  NF4 AM2L Mainboard\n\t005f  CK804 Memory Controller\n\t0060  nForce2 ISA Bridge\n\t\t1043 80ad  A7N8X Mainboard\n\t\t147b 1c02  NF7-S/NF7 (nVidia-nForce2) 2.X\n\t\ta0a0 03ba  UK79G-1394 motherboard\n\t0064  nForce2 SMBus (MCP)\n\t\t147b 1c02  NF7-S/NF7 (nVidia-nForce2) 2.X\n\t\ta0a0 03bb  UK79G-1394 motherboard\n\t0065  nForce2 IDE\n\t\t10de 0c11  nForce 2 EIDE Controller\n\t\ta0a0 03b2  UK79G-1394 motherboard\n\t0066  nForce2 Ethernet Controller\n\t\t1043 80a7  A7N8X Mainboard onboard nForce2 Ethernet\n\t\t10de 0c11  nForce MCP-T Networking Adapter\n\t\ta0a0 03b3  UK79G-1394 motherboard\n\t0067  nForce2 USB Controller\n\t\t1043 0c11  A7N8X Mainboard\n\t\ta0a0 03b4  UK79G-1394 motherboard\n\t0068  nForce2 USB Controller\n\t\t1043 0c11  A7N8X Mainboard\n\t\ta0a0 03b4  UK79G-1394 motherboard\n\t006a  nForce2 AC97 Audio Controler (MCP)\n\t\t1043 8095  nForce2 AC97 Audio Controller (MCP)\n\t\ta0a0 0304  UK79G-1394 motherboard\n\t006b  nForce Audio Processing Unit\n\t\t10de 006b  nForce2 MCP Audio Processing Unit\n\t\ta0a0 0304  UK79G-1394 motherboard\n\t006c  nForce2 External PCI Bridge\n\t006d  nForce2 PCI Bridge\n\t006e  nForce2 FireWire (IEEE 1394) Controller\n\t\ta0a0 0306  UK79G-1394 motherboard\n\t0080  MCP2A ISA bridge\n\t\t147b 1c09  NV7 Motherboard\n\t0084  MCP2A SMBus\n\t\t147b 1c09  NV7 Motherboard\n\t0085  MCP2A IDE\n\t\t147b 1c09  NV7 Motherboard\n\t0086  MCP2A Ethernet Controller\n\t0087  MCP2A USB Controller\n\t\t147b 1c09  NV7 Motherboard\n\t0088  MCP2A USB Controller\n\t\t147b 1c09  NV7 Motherboard\n\t008a  MCP2S AC'97 Audio Controller\n\t\t147b 1c09  NV7 Motherboard\n\t008b  MCP2A PCI Bridge\n\t008c  MCP2A Ethernet Controller\n\t008e  nForce2 Serial ATA Controller\n\t0090  G70 [GeForce 7800 GTX]\n\t0091  G70 [GeForce 7800 GTX]\n\t0092  G70 [GeForce 7800 GT]\n\t0093  G70 [GeForce 7800 GS]\n\t0094  High Definition Audio\n\t0095  G70 [GeForce 7800 SLI]\n\t0097  G70 [GeForce GTS 250]\n\t0098  G70M [GeForce Go 7800]\n\t0099  G70M [GeForce Go 7800 GTX]\n\t009d  G70GL [Quadro FX 4500]\n\t00a0  NV0A [Aladdin TNT2 IGP]\n\t\t14af 5810  Maxi Gamer Xentor\n\t00c0  NV41 [GeForce 6800 GS]\n\t00c1  NV41 [GeForce 6800]\n\t00c2  NV41 [GeForce 6800 LE]\n\t00c3  NV41 [GeForce 6800 XT]\n\t00c5  NV41\n\t00c6  NV41\n\t00c7  NV41\n\t00c8  NV41M [GeForce Go 6800]\n\t00c9  NV41M [GeForce Go 6800 Ultra]\n\t00cc  NV41GLM [Quadro FX Go1400]\n\t00cd  NV42GL [Quadro FX 3450/4000 SDI]\n\t\t10de 029b  Quadro FX 3450\n\t00ce  NV41GL [Quadro FX 1400]\n\t00cf  NV41\n\t00d0  nForce3 LPC Bridge\n\t00d1  nForce3 Host Bridge\n\t00d2  nForce3 AGP Bridge\n\t00d3  CK804 Memory Controller\n\t00d4  nForce3 SMBus\n\t00d5  nForce3 IDE\n\t00d6  nForce3 Ethernet\n\t00d7  nForce3 USB 1.1\n\t00d8  nForce3 USB 2.0\n\t00d9  nForce3 Audio\n\t00da  nForce3 Audio\n\t00dd  nForce3 PCI Bridge\n\t00df  CK8S Ethernet Controller\n\t\t1043 80a7  K8N-E\n\t\t105b 0c43  Winfast NF3250K8AA\n\t\t147b 1c0b  NF8 Mainboard\n\t00e0  nForce3 250Gb LPC Bridge\n\t\t1043 813f  K8N-E\n\t\t10de 0c11  Winfast NF3250K8AA\n\t\t1462 7030  K8N Neo-FSR v2.0\n\t\t147b 1c0b  NF8 Mainboard\n\t\t1849 00e0  Motherboard (one of many)\n\t00e1  nForce3 250Gb Host Bridge\n\t\t1043 813f  K8N-E\n\t\t1462 7030  K8N Neo-FSR v2.0\n\t\t147b 1c0b  NF8 Mainboard\n\t\t1849 00e1  Motherboard (one of many)\n\t00e2  nForce3 250Gb AGP Host to PCI Bridge\n\t00e3  nForce3 Serial ATA Controller\n\t\t1043 813f  K8N-E\n\t\t105b 0c43  Winfast NF3250K8AA\n\t\t147b 1c0b  NF8 Mainboard\n\t\t1849 00e3  Motherboard (one of many)\n\t00e4  nForce 250Gb PCI System Management\n\t\t1043 813f  K8N-E\n\t\t105b 0c43  Winfast NF3250K8AA\n\t\t1462 7030  K8N Neo-FSR v2.0\n\t\t147b 1c0b  NF8 Mainboard\n\t\t1849 00e4  Motherboard (one of many)\n\t00e5  CK8S Parallel ATA Controller (v2.5)\n\t\t1043 813f  K8N-E\n\t\t105b 0c43  Winfast NF3250K8AA\n\t\t1462 7030  K8N Neo-FSR v2.0\n\t\t147b 1c0b  NF8 Mainboard\n\t\t1849 00e5  Motherboard (one of many)\n\t\tf849 00e5  Motherboard (one of many)\n\t00e6  CK8S Ethernet Controller\n\t00e7  CK8S USB Controller\n\t\t1043 813f  K8N-E\n\t\t105b 0c43  Winfast NF3250K8AA\n\t\t1462 7030  K8N Neo-FSR v2.0\n\t\t147b 1c0b  NF8 Mainboard\n\t\t1849 00e7  Motherboard (one of many)\n\t00e8  nForce3 EHCI USB 2.0 Controller\n\t\t1043 813f  K8N-E\n\t\t105b 0c43  Winfast NF3250K8AA\n\t\t1462 7030  K8N Neo-FSR v2.0\n\t\t147b 1c0b  NF8 Mainboard\n\t\t1849 00e8  Motherboard (one of many)\n\t00ea  nForce3 250Gb AC'97 Audio Controller\n\t\t1043 819d  K8N-E\n\t\t105b 0c43  Winfast NF3250K8AA\n\t\t1462 b010  K8N Neo-FSR v2.0\n\t\t147b 1c0b  NF8 Mainboard\n\t00ed  nForce3 250Gb PCI-to-PCI Bridge\n\t00ee  nForce3 Serial ATA Controller 2\n\t00f1  NV43 [GeForce 6600 GT]\n\t\t1043 81a6  N6600GT TD 128M AGP\n\t\t1043 81c6  N6600GT TD 128M AGP\n\t\t1458 3150  GV-N66T128VP\n\t\t1554 1191  PixelView PV-N43UA (128KD)\n\t\t1682 2119  GeForce 6600 GT AGP\n\t00f2  NV43 [GeForce 6600]\n\t\t1554 1194  PixelView PV-N43AT (256KD)\n\t\t1682 211c  GeForce 6600 256MB DDR DUAL DVI TV\n\t00f3  NV43 [GeForce 6200]\n\t00f4  NV43 [GeForce 6600 LE]\n\t00f5  G70/G71 [GeForce 7800 GS AGP]\n\t00f6  NV43 [GeForce 6800 GS/XT]\n\t\t1682 217e  XFX GeForce 6800 XTreme 256MB DDR3 AGP\n\t00f8  NV45GL [Quadro FX 3400/4400]\n\t00f9  NV40 [GeForce 6800 GT/GTO/Ultra]\n\t\t10de 00f9  NV40 [GeForce 6800 GT]\n\t\t1682 2120  GEFORCE 6800 GT PCI-E\n\t00fa  NV39 [GeForce PCX 5750]\n\t00fb  NV35 [GeForce PCX 5900]\n\t00fc  NV37GL [Quadro FX 330/GeForce PCX 5300]\n\t00fd  NV37GL [Quadro PCI-E Series]\n\t00fe  NV38GL [Quadro FX 1300]\n\t00ff  NV19 [GeForce PCX 4300]\n\t0100  NV10 [GeForce 256 SDR]\n\t\t1043 0200  AGP-V6600 SGRAM\n\t\t1043 0201  AGP-V6600 SDRAM\n\t\t1043 4008  AGP-V6600 SGRAM\n\t\t1043 4009  AGP-V6600 SDRAM\n\t\t1048 0c41  Erazor X\n\t\t1048 0c43  ERAZOR X PCI\n\t\t1048 0c48  Synergy Force\n\t\t1102 102d  CT6941 GeForce 256\n\t\t14af 5022  3D Prophet SE\n\t0101  NV10 [GeForce 256 DDR]\n\t\t1043 0202  AGP-V6800 DDR\n\t\t1043 400a  AGP-V6800 DDR SGRAM\n\t\t1043 400b  AGP-V6800 DDR SDRAM\n\t\t1048 0c42  Erazor X\n\t\t107d 2822  WinFast GeForce 256\n\t\t1102 102e  CT6970/CT6971\n\t\t14af 5021  3D Prophet DDR-DVI\n\t0103  NV10GL [Quadro]\n\t\t1048 0c40  GLoria II-64\n\t\t1048 0c44  GLoria II\n\t\t1048 0c45  GLoria II\n\t\t1048 0c4a  GLoria II-64 Pro\n\t\t1048 0c4b  GLoria II-64 Pro DVII\n\t\t10a9 9002  VPro VR3\n\t0110  NV11 [GeForce2 MX/MX 400]\n\t\t1043 4015  AGP-V7100 Pro\n\t\t1043 4021  V7100 Deluxe Combo\n\t\t1043 4031  V7100 Pro with TV output\n\t\t1048 0c60  Gladiac MX\n\t\t1048 0c61  Gladiac 511PCI\n\t\t1048 0c63  Gladiac 511TV-OUT 32MB\n\t\t1048 0c64  Gladiac 511TV-OUT 64MB\n\t\t1048 0c65  Gladiac 511TWIN\n\t\t1048 0c66  Gladiac 311\n\t\t10b0 0001  GeForce2 MX Jumbo TV\n\t\t10de 0091  Dell OEM GeForce 2 MX 400\n\t\t10de 00a1  Apple OEM GeForce2 MX\n\t\t1462 8523  MS-8852\n\t\t1462 8817  MSI GeForce2 MX400 Pro32S [MS-8817]\n\t\t14af 7102  3D Prophet II MX\n\t\t14af 7103  3D Prophet II MX Dual-Display\n\t\t1545 0023  Xtasy Rev. B2\n\t\t1554 1081  MVGA-NVG11AM(400)\n\t0111  NV11 [GeForce2 MX200]\n\t0112  NV11M [GeForce2 Go]\n\t0113  NV11GL [Quadro2 MXR/EX/Go]\n\t\t1028 00e5  Quadro2 Go\n\t0140  NV43 [GeForce 6600 GT]\n\t\t1458 3125  GV-NX66T128D\n\t\t1458 3126  GV-NX66T256DE\n\t\t1462 8939  MS-8983\n\t0141  NV43 [GeForce 6600]\n\t\t1043 81b0  EN6600 Silencer\n\t\t107d 593a  LR2A22 128MB TV OUT\n\t\t107d 597b  WINFAST PX6600\n\t\t1458 3124  GV-NX66128DP Turbo Force Edition\n\t0142  NV43 [GeForce 6600 LE]\n\t0143  NV43 [GeForce 6600 VE]\n\t0144  NV43M [GeForce Go 6600]\n\t0145  NV43 [GeForce 6610 XL]\n\t0146  NV43M [GeForce Go6200 TE / 6600 TE]\n\t0147  NV43 [GeForce 6700 XL]\n\t0148  NV43M [GeForce Go 6600]\n\t0149  NV43M [GeForce Go 6600 GT]\n\t014a  NV43 [Quadro NVS 440]\n\t014b  NV43\n\t014d  NV43GL [Quadro FX 550]\n\t014e  NV43GL [Quadro FX 540]\n\t014f  NV43 [GeForce 6200]\n\t0150  NV15 [GeForce2 GTS/Pro]\n\t\t1043 4016  V7700 AGP Video Card\n\t\t1043 402a  AGP-V7700\n\t\t1048 0c50  Gladiac\n\t\t1048 0c52  Gladiac-64\n\t\t107d 2840  WinFast GeForce2 GTS with TV output\n\t\t107d 2842  WinFast GeForce 2 Pro\n\t\t10de 002e  GeForce2 GTS\n\t\t1462 815a  MS-8815\n\t\t1462 8831  Creative GeForce2 Pro\n\t0151  NV15 [GeForce2 Ti]\n\t\t1043 405f  V7700Ti\n\t\t1462 5506  Creative 3D Blaster GeForce2 Titanium\n\t\t1462 8364  MS-8836\n\t0152  NV15 [GeForce2 Ultra]\n\t\t1048 0c56  GLADIAC Ultra\n\t0153  NV15GL [Quadro2 Pro]\n\t0160  NV44 [GeForce 6500]\n\t0161  NV44 [GeForce 6200 TurboCache]\n\t0162  NV44 [GeForce 6200 SE TurboCache]\n\t0163  NV44 [GeForce 6200 LE]\n\t0164  NV44M [GeForce Go 6200]\n\t0165  NV44 [Quadro NVS 285]\n\t0166  NV44M [GeForce Go 6400]\n\t0167  NV44M [GeForce Go 6200]\n\t0168  NV44M [GeForce Go 6400]\n\t0169  NV44 [GeForce 6250]\n\t016a  NV44 [GeForce 7100 GS]\n\t016d  NV44\n\t016e  NV44\n\t016f  NV44\n\t0170  NV17 [GeForce4 MX 460]\n\t\t1462 8630  MS-8863\n\t0171  NV17 [GeForce4 MX 440]\n\t\t10b0 0002  Gainward Pro/600 TV\n\t\t10de 0008  Apple OEM GeForce4 MX 440\n\t\t1462 8661  G4MX440-VTP\n\t\t1462 8730  MX440SES-T (MS-8873)\n\t\t1462 8743  MS-8874\n\t\t1462 8852  GeForce4 MX440 PCI\n\t\t147b 8f00  Abit Siluro GeForce4MX440\n\t0172  NV17 [GeForce4 MX 420]\n\t\t1462 8730  MS-8873\n\t\t1462 8784  MS-8878\n\t0173  NV17 [GeForce4 MX 440-SE]\n\t0174  NV17M [GeForce4 440 Go]\n\t0175  NV17M [GeForce4 420 Go]\n\t0176  NV17M [GeForce4 420 Go 32M]\n\t\t103c 08b0  tc1100 tablet\n\t\t144d c005  X10 Laptop\n\t\t4c53 1090  Cx9 / Vx9 mainboard\n\t0177  NV17M [GeForce4 460 Go]\n\t0178  NV17GL [Quadro4 550 XGL]\n\t0179  NV17M [GeForce4 440 Go 64M]\n\t\t10de 0179  GeForce4 MX (Mac)\n\t017a  NV17GL [Quadro NVS]\n\t017b  NV17GL [Quadro4 550 XGL]\n\t017c  NV17GL [Quadro4 500 GoGL]\n\t017f  NV17\n\t0181  NV18 [GeForce4 MX 440 AGP 8x]\n\t\t1043 8063  GeForce4 MX 440 AGP 8X\n\t\t1043 806f  V9180 Magic\n\t\t1462 8880  MS-StarForce GeForce4 MX 440 with AGP8X\n\t\t1462 8900  MS-8890 GeForce 4 MX440 AGP8X\n\t\t1462 9350  MSI GeForce4 MX T8X with AGP8X\n\t\t147b 8f0d  Siluro GF4 MX-8X\n\t\t1554 1111  PixelView MVGA-NVG18A\n\t0182  NV18 [GeForce4 MX 440SE AGP 8x]\n\t0183  NV18 [GeForce4 MX 420 AGP 8x]\n\t0184  NV18 [GeForce4 MX]\n\t0185  NV18 [GeForce4 MX 4000]\n\t0186  NV18M [GeForce4 448 Go]\n\t0187  NV18M [GeForce4 488 Go]\n\t0188  NV18GL [Quadro4 580 XGL]\n\t0189  NV18 [GeForce4 MX with AGP8X (Mac)]\n\t018a  NV18GL [Quadro NVS 280 SD]\n\t018b  NV18GL [Quadro4 380 XGL]\n\t018c  NV18GL [Quadro NVS 50 PCI]\n\t018d  NV18M [GeForce4 448 Go]\n\t0190  G80 [GeForce 8800 GTS / 8800 GTX]\n\t0191  G80 [GeForce 8800 GTX]\n\t0192  G80 [GeForce 8800 GTS]\n\t0193  G80 [GeForce 8800 GTS]\n\t\t107d 20bd  WinFast PX 8800 GTS TDH\n\t0194  G80 [GeForce 8800 Ultra]\n\t0197  G80GL [Tesla C870]\n\t019d  G80GL [Quadro FX 5600]\n\t019e  G80GL [Quadro FX 4600]\n\t01a0  nForce 220/420 NV1A [GeForce2 MX]\n\t01a4  nForce CPU bridge\n\t01ab  nForce 420 Memory Controller (DDR)\n\t01ac  nForce 220/420 Memory Controller\n\t01ad  nForce 220/420 Memory Controller\n\t01b0  nForce Audio Processing Unit\n\t01b1  nForce AC'97 Audio Controller\n\t01b2  nForce ISA Bridge\n\t01b4  nForce PCI System Management\n\t01b7  nForce AGP to PCI Bridge\n\t01b8  nForce PCI-to-PCI bridge\n\t01bc  nForce IDE\n\t01c1  nForce AC'97 Modem Controller\n\t01c2  nForce USB Controller\n\t01c3  nForce Ethernet Controller\n\t01d0  G72 [GeForce 7350 LE]\n\t01d1  G72 [GeForce 7300 LE]\n\t\t107d 5efa  WinFast PX7300LE-TD128\n\t\t107d 5efb  WinFast PX7300LE-TD256\n\t\t1462 0345  7300LE PCI Express Graphics Adapter\n\t01d2  G72 [GeForce 7550 LE]\n\t01d3  G72 [GeForce 7200 GS / 7300 SE]\n\t\t1043 8203  EN7300SE\n\t\t1043 8250  EN7200GS\n\t01d5  G72\n\t01d6  G72M [GeForce Go 7200]\n\t01d7  G72M [Quadro NVS 110M/GeForce Go 7300]\n\t01d8  G72M [GeForce Go 7400]\n\t\t1028 01d7  XPS M1210\n\t01d9  G72M [GeForce Go 7450]\n\t01da  G72M [Quadro NVS 110M]\n\t01db  G72M [Quadro NVS 120M]\n\t01dc  G72GLM [Quadro FX 350M]\n\t01dd  G72 [GeForce 7500 LE]\n\t01de  G72GL [Quadro FX 350]\n\t\t10de 01dc  Quadro  FX Go350M\n\t01df  G72 [GeForce 7300 GS]\n\t01e0  nForce2 IGP2\n\t\t147b 1c09  NV7 Motherboard\n\t01e8  nForce2 AGP\n\t01ea  nForce2 Memory Controller 0\n\t\ta0a0 03b9  UK79G-1394 motherboard\n\t01eb  nForce2 Memory Controller 1\n\t\ta0a0 03b9  UK79G-1394 motherboard\n\t01ec  nForce2 Memory Controller 2\n\t\ta0a0 03b9  UK79G-1394 motherboard\n\t01ed  nForce2 Memory Controller 3\n\t\ta0a0 03b9  UK79G-1394 motherboard\n\t01ee  nForce2 Memory Controller 4\n\t\t10de 01ee  MSI Delta-L nForce2 memory controller\n\t\ta0a0 03b9  UK79G-1394 motherboard\n\t01ef  nForce2 Memory Controller 5\n\t\ta0a0 03b9  UK79G-1394 motherboard\n\t01f0  NV1F C17 [GeForce4 MX IGP]\n\t\ta0a0 03b5  UK79G-1394 motherboard\n\t0200  NV20 [GeForce3]\n\t\t1043 402f  AGP-V8200 DDR\n\t\t1048 0c70  GLADIAC 920\n\t0201  NV20 [GeForce3 Ti 200]\n\t\t1462 8503  G3Ti200 Pro VT128\n\t0202  NV20 [GeForce3 Ti 500]\n\t\t1043 405b  V8200 T5\n\t\t1545 002f  Xtasy 6964\n\t0203  NV20GL [Quadro DCC]\n\t0211  NV48 [GeForce 6800]\n\t0212  NV48 [GeForce 6800 LE]\n\t0215  NV48 [GeForce 6800 GT]\n\t0218  NV48 [GeForce 6800 XT]\n\t0221  NV44A [GeForce 6200]\n\t\t1043 81e1  N6200/TD/256M/A\n\t\t3842 a341  256A8N341DX\n\t0222  NV44 [GeForce 6200 A-LE]\n\t0224  NV44\n\t0240  C51PV [GeForce 6150]\n\t\t1043 81cd  A8N-VM CSM\n\t\t1462 7207  K8NGM2 series\n\t0241  C51 [GeForce 6150 LE]\n\t0242  C51G [GeForce 6100]\n\t\t105b 0cad  Winfast 6100K8MB\n\t0243  C51 PCI Express Bridge\n\t0244  C51 [GeForce Go 6150]\n\t\t103c 30b5  Presario V3242AU\n\t\t103c 30b7  Presario V6133CL\n\t\t10de 0244  GeForce Go 6150\n\t0245  C51 [Quadro NVS 210S/GeForce 6150LE]\n\t0246  C51 PCI Express Bridge\n\t0247  C51 [GeForce Go 6100]\n\t\t1043 1382  MCP51 PCI-X GeForce Go 6100\n\t0248  C51 PCI Express Bridge\n\t0249  C51 PCI Express Bridge\n\t024a  C51 PCI Express Bridge\n\t024b  C51 PCI Express Bridge\n\t024c  C51 PCI Express Bridge\n\t024d  C51 PCI Express Bridge\n\t024e  C51 PCI Express Bridge\n\t024f  C51 PCI Express Bridge\n\t0250  NV25 [GeForce4 Ti 4600]\n\t0251  NV25 [GeForce4 Ti 4400]\n\t\t1043 8023  v8440 GeForce 4 Ti4400\n\t\t10de 0251  PNY GeForce4 Ti 4400\n\t\t1462 8710  PNY GeForce4 Ti 4400\n\t0252  NV25 [GeForce4 Ti]\n\t0253  NV25 [GeForce4 Ti 4200]\n\t\t107d 2896  WinFast A250 LE TD (Dual VGA/TV-out/DVI)\n\t\t147b 8f09  Siluro (Dual VGA/TV-out/DVI)\n\t0258  NV25GL [Quadro4 900 XGL]\n\t0259  NV25GL [Quadro4 750 XGL]\n\t025b  NV25GL [Quadro4 700 XGL]\n\t0260  MCP51 LPC Bridge\n\t\t103c 2a34  Pavilion a1677c\n\t\t103c 30b7  Presario V6133CL\n\t\t1043 81bc  A8N-VM CSM Mainboard\n\t\t1458 5001  GA-M55plus-S3G\n\t\t1462 7207  K8NGM2 series\n\t0261  MCP51 LPC Bridge\n\t\t105b 0cad  Winfast 6100K8MB\n\t0262  MCP51 LPC Bridge\n\t0263  MCP51 LPC Bridge\n\t0264  MCP51 SMBus\n\t\t103c 2a34  Pavilion a1677c\n\t\t103c 30b7  Presario V6133CL\n\t\t1043 81bc  A8N-VM CSM Mainboard\n\t\t105b 0cad  Winfast 6100K8MB\n\t\t1462 7207  K8NGM2 series\n\t0265  MCP51 IDE\n\t\t103c 2a34  Pavilion a1677c\n\t\t103c 30b7  Presario V6133CL\n\t\t1043 81bc  A8N-VM CSM Mainboard\n\t\t1462 7207  K8NGM2 series\n# Foxconn has used a wrong vendor ID for this one\n\t\tf05b 0cad  Winfast 6100K8MB\n\t0266  MCP51 Serial ATA Controller\n\t\t103c 2a34  Pavilion a1677c\n\t\t103c 30b7  Presario V6133CL\n\t\t1043 81bc  A8N-VM CSM Mainboard\n\t\t1462 7207  K8NGM2 series\n\t0267  MCP51 Serial ATA Controller\n\t\t103c 2a34  Pavilion a1677c\n\t\t1043 81bc  A8N-VM CSM Mainboard\n\t\t1462 7207  K8NGM2 series\n\t0268  MCP51 Ethernet Controller\n\t0269  MCP51 Ethernet Controller\n\t\t103c 2a34  Pavilion a1677c\n\t\t103c 30b7  Presario V6133CL\n\t\t1043 8141  A8N-VM CSM Mainboard\n\t\t1462 7207  K8NGM2 series\n\t026a  MCP51 MCI\n\t026b  MCP51 AC97 Audio Controller\n\t\t105b 0cad  Winfast 6100K8MB\n\t026c  MCP51 High Definition Audio\n\t\t103c 2a34  Pavilion a1677c\n\t\t103c 30b5  Presario V3242AU\n\t\t103c 30b7  Presario V6133CL\n\t\t10de cb84  ASUSTeK Computer Inc. A8N-VM CSM Mainboard\n\t\t1462 7207  K8NGM2 series\n\t026d  MCP51 USB Controller\n\t\t103c 2a34  Pavilion a1677c\n\t\t103c 30b7  Presario V6133CL\n\t\t1043 81bc  A8N-VM CSM Mainboard\n\t\t105b 0cad  Winfast 6100K8MB\n\t\t1462 7207  K8NGM2 series\n\t026e  MCP51 USB Controller\n\t\t103c 2a34  Pavilion a1677c\n\t\t103c 30b7  Presario V6133CL\n\t\t1043 81bc  A8N-VM CSM Mainboard\n\t\t105b 0cad  Winfast 6100K8MB\n\t\t1462 7207  K8NGM2 series\n\t026f  MCP51 PCI Bridge\n\t\t103c 30b7  Presario V6133CL\n\t0270  MCP51 Host Bridge\n\t\t103c 2a34  Pavilion a1677c\n\t\t103c 30b7  Presario V6133CL\n\t\t1043 81bc  A8N-VM CSM Mainboard\n\t\t105b 0cad  Winfast 6100K8MB\n\t\t1458 5001  GA-M55plus-S3G\n\t\t1462 7207  K8NGM2 series\n\t0271  MCP51 PMU\n\t\t103c 30b5  Presario V3242AU\n\t\t103c 30b7  Presario V6133CL\n\t0272  MCP51 Memory Controller 0\n\t\t103c 2a34  Pavilion a1677c\n\t\t105b 0cad  Winfast 6100K8MB\n\t027e  C51 Memory Controller 2\n\t\t103c 2a34  Pavilion a1677c\n\t\t103c 30b7  Presario V6133CL\n\t\t1043 81cd  A8N-VM CSM Mainboard\n\t\t1458 5000  GA-M55plus-S3G\n\t\t1462 7207  K8NGM2 series\n\t027f  C51 Memory Controller 3\n\t\t103c 2a34  Pavilion a1677c\n\t\t103c 30b7  Presario V6133CL\n\t\t1043 81cd  A8N-VM CSM Mainboard\n\t\t1458 5000  GA-M55plus-S3G\n\t\t1462 7207  K8NGM2 series\n\t0280  NV28 [GeForce4 Ti 4800]\n\t0281  NV28 [GeForce4 Ti 4200 AGP 8x]\n\t0282  NV28 [GeForce4 Ti 4800 SE]\n\t0286  NV28M [GeForce4 Ti 4200 Go AGP 8x]\n\t0288  NV28GL [Quadro4 980 XGL]\n\t0289  NV28GL [Quadro4 780 XGL]\n\t028c  NV28GLM [Quadro4 Go700]\n\t0290  G71 [GeForce 7900 GTX]\n\t0291  G71 [GeForce 7900 GT/GTO]\n\t\t10de 042b  NX7900GTO-T2D512E [7900 GTO]\n\t0292  G71 [GeForce 7900 GS]\n\t0293  G71 [GeForce 7900 GX2]\n\t0294  G71 [GeForce 7950 GX2]\n\t0295  G71 [GeForce 7950 GT]\n\t\t1043 8225  GeForce 7950 GT\n\t\t107d 2a68  WinFast PX7950GT TDH\n\t\t1462 0663  NX7950GT-VT2D512EZ-HD\n\t0297  G71M [GeForce Go 7950 GTX]\n\t0298  G71M [GeForce Go 7900 GS]\n\t0299  G71M [GeForce Go 7900 GTX]\n\t029a  G71GLM [Quadro FX 2500M]\n\t029b  G71GLM [Quadro FX 1500M]\n\t029c  G71GL [Quadro FX 5500]\n\t029d  G71GL [Quadro FX 3500]\n\t\t1028 019b  G71GLM [Quadro FX 3500M]\n\t029e  G71GL [Quadro FX 1500]\n\t029f  G71GL [Quadro FX 4500 X2]\n# Xbox Graphics Processing Unit (Integrated). GeForce3 derivative (NV20 < NV2A < NV25).\n\t02a0  NV2A [XGPU]\n\t02a5  MCPX CPU Bridge\n\t02a6  MCPX Memory Controller\n\t02e0  G73 [GeForce 7600 GT AGP]\n\t\t02e0 2249  GF 7600GT 560M 256MB DDR3 DUAL DVI TV\n\t02e1  G73 [GeForce 7600 GS AGP]\n\t\t1682 222b  PV-T73K-UAL3 (256MB)\n\t\t1682 2247  GF 7600GS 512MB DDR2\n\t02e2  G73 [GeForce 7300 GT AGP]\n\t02e3  G71 [GeForce 7900 GS AGP]\n\t02e4  G71 [GeForce 7950 GT AGP]\n\t\t1682 2271  PV-T71A-YDF7 (512MB)\n\t02e5  G71 [GeForce 7600 GS AGP]\n\t02f0  C51 Host Bridge\n\t\t103c 2a34  Pavilion a1677c\n\t\t103c 30b7  Presario V6133CL\n\t\t1043 81cd  A8N-VM CSM Mainboard\n\t\t1462 7207  K8NGM2 series\n\t02f1  C51 Host Bridge\n\t\t1458 5000  GA-M55plus-S3G\n\t02f2  C51 Host Bridge\n\t02f3  C51 Host Bridge\n\t02f4  C51 Host Bridge\n\t02f5  C51 Host Bridge\n\t02f6  C51 Host Bridge\n\t02f7  C51 Host Bridge\n\t02f8  C51 Memory Controller 5\n\t\t103c 2a34  Pavilion a1677c\n\t\t103c 30b7  Presario V6133CL\n\t\t1043 81cd  A8N-VM CSM Mainboard\n\t\t1458 5000  GA-M55plus-S3G\n\t\t1462 7207  K8NGM2 series\n\t02f9  C51 Memory Controller 4\n\t\t103c 2a34  Pavilion a1677c\n\t\t103c 30b7  Presario V6133CL\n\t\t1043 81cd  A8N-VM CSM Mainboard\n\t\t1458 5000  GA-M55plus-S3G\n\t\t1462 7207  K8NGM2 series\n\t02fa  C51 Memory Controller 0\n\t\t103c 2a34  Pavilion a1677c\n\t\t103c 30b7  Presario V6133CL\n\t\t1043 81cd  A8N-VM CSM Mainboard\n\t\t1458 5000  GA-M55plus-S3G\n\t\t1462 7207  K8NGM2 series\n\t02fb  C51 PCI Express Bridge\n\t02fc  C51 PCI Express Bridge\n\t\t103c 30b7  Presario V6133CL\n\t02fd  C51 PCI Express Bridge\n\t\t103c 30b7  Presario V6133CL\n\t02fe  C51 Memory Controller 1\n\t\t103c 2a34  Pavilion a1677c\n\t\t103c 30b7  Presario V6133CL\n\t\t1043 81cd  A8N-VM CSM Mainboard\n\t\t1458 5000  GA-M55plus-S3G\n\t\t1462 7207  K8NGM2 series\n\t02ff  C51 Host Bridge\n\t\t103c 2a34  Pavilion a1677c\n\t\t103c 30b7  Presario V6133CL\n\t\t1043 81cd  A8N-VM CSM Mainboard\n\t\t1458 5000  GA-M55plus-S3G\n\t\t1462 7207  K8NGM2 series\n\t0300  NV30 [GeForce FX]\n\t0301  NV30 [GeForce FX 5800 Ultra]\n\t0302  NV30 [GeForce FX 5800]\n\t0308  NV30GL [Quadro FX 2000]\n\t0309  NV30GL [Quadro FX 1000]\n\t0311  NV31 [GeForce FX 5600 Ultra]\n\t0312  NV31 [GeForce FX 5600]\n\t0314  NV31 [GeForce FX 5600XT]\n\t\t1043 814a  V9560XT/TD\n\t0316  NV31M\n\t0318  NV31GL\n\t031a  NV31M [GeForce FX Go5600]\n\t031b  NV31M [GeForce FX Go5650]\n\t031c  NV31GLM [Quadro FX Go700]\n\t0320  NV34 [GeForce FX 5200]\n\t0321  NV34 [GeForce FX 5200 Ultra]\n\t0322  NV34 [GeForce FX 5200]\n\t\t1043 02fb  V9250 Magic\n\t\t1043 8180  V9520-X/TD/128M\n\t\t107d 2967  WinFast A340T 128MB\n\t\t1462 9110  MS-8911 (FX5200-TD128)\n\t\t1462 9171  MS-8917 (FX5200-T128)\n\t\t1462 9360  MS-8936 (FX5200-T128)\n\t\t1682 1351  GeForce FX 5200\n\t0323  NV34 [GeForce FX 5200LE]\n\t0324  NV34M [GeForce FX Go5200 64M]\n\t\t1028 0196  Inspiron 5160\n\t\t103c 006a  Pavilion ZD7000 laptop\n\t\t1071 8160  MIM2000\n\t0325  NV34M [GeForce FX Go5250]\n\t0326  NV34 [GeForce FX 5500]\n\t\t1458 310d  GeForce FX 5500 128 MB\n\t\t1682 2034  GeForce 5500 256 MB\n\t0327  NV34 [GeForce FX 5100]\n\t0328  NV34M [GeForce FX Go5200 32M/64M]\n\t0329  NV34M [GeForce FX Go5200]\n\t\t10de 0010  Powerbook G4\n\t032a  NV34GL [Quadro NVS 280 PCI]\n\t032b  NV34GL [Quadro FX 500/600 PCI]\n\t032c  NV34M [GeForce FX Go5300 / Go5350]\n\t032d  NV34M [GeForce FX Go5100]\n\t032e  NV34\n\t032f  NV34 [GeForce FX 5200]\n\t0330  NV35 [GeForce FX 5900 Ultra]\n\t\t1043 8137  V9950 Ultra / 256 MB\n\t0331  NV35 [GeForce FX 5900]\n\t\t1043 8145  V9950GE\n\t0332  NV35 [GeForce FX 5900XT]\n\t0333  NV38 [GeForce FX 5950 Ultra]\n\t0334  NV35 [GeForce FX 5900ZT]\n\t\t1462 9373  FX5900ZT-VTD128 (MS-8937)\n\t0338  NV35GL [Quadro FX 3000]\n\t033f  NV35GL [Quadro FX 700]\n\t0341  NV36 [GeForce FX 5700 Ultra]\n\t\t1462 9380  MS-8938 (FX5700U-TD128)\n\t0342  NV36 [GeForce FX 5700]\n\t0343  NV36 [GeForce FX 5700LE]\n\t0344  NV36 [GeForce FX 5700VE]\n\t0347  NV36M [GeForce FX Go5700]\n\t\t103c 006a  NX9500\n\t0348  NV36M [GeForce FX Go5700]\n\t034c  NV36 [Quadro FX Go1000]\n\t034d  NV36\n\t034e  NV36GL [Quadro FX 1100]\n\t0360  MCP55 LPC Bridge\n\t0361  MCP55 LPC Bridge\n\t\t1028 0221  PowerEdge R805 MCP55 LPC Bridge\n\t0362  MCP55 LPC Bridge\n\t\t147b 1c24  KN9 series mainboard\n\t0363  MCP55 LPC Bridge\n\t0364  MCP55 LPC Bridge\n\t\t1028 0221  PowerEdge R805 MCP55 LPC Bridge\n\t0365  MCP55 LPC Bridge\n\t0366  MCP55 LPC Bridge\n\t0367  MCP55 LPC Bridge\n\t0368  MCP55 SMBus Controller\n\t\t1028 020c  PowerEdge M605 MCP55 SMBus\n\t\t1028 0221  PowerEdge R805 MCP55 SMBus\n\t\t147b 1c24  KN9 series mainboard\n\t0369  MCP55 Memory Controller\n\t\t147b 1c24  KN9 series mainboard\n\t036a  MCP55 Memory Controller\n\t036b  MCP55 SMU\n\t036c  MCP55 USB Controller\n\t\t1028 020c  PowerEdge M605 MCP55 USB Controller\n\t\t1028 0221  PowerEdge R805 MCP55 USB Controller\n\t\t147b 1c24  KN9 series mainboard\n\t036d  MCP55 USB Controller\n\t\t1028 020c  PowerEdge M605 MCP55 USB Controller\n\t\t1028 0221  PowerEdge R805 MCP55 USB Controller\n\t\t147b 1c24  KN9 series mainboard\n\t036e  MCP55 IDE\n\t\t147b 1c24  KN9 series mainboard\n\t0370  MCP55 PCI bridge\n\t0371  MCP55 High Definition Audio\n\t\t147b 1c24  KN9 series mainboard\n\t0372  MCP55 Ethernet\n\t0373  MCP55 Ethernet\n\t\t147b 1c24  KN9 series mainboard\n\t0374  MCP55 PCI Express bridge\n\t0375  MCP55 PCI Express bridge\n\t0376  MCP55 PCI Express bridge\n\t0377  MCP55 PCI Express bridge\n\t0378  MCP55 PCI Express bridge\n\t037a  MCP55 Memory Controller\n\t037e  MCP55 SATA Controller\n\t037f  MCP55 SATA Controller\n\t\t1028 0221  PowerEdge R805 MCP55 SATA Controller\n\t\t147b 1c24  KN9 series mainboard\n\t038b  G73 [GeForce 7650 GS]\n\t0390  G73 [GeForce 7650 GS]\n\t0391  G73 [GeForce 7600 GT]\n\t\t1458 3427  GV-NX76T128D-RH\n\t\t1462 0452  NX7600GT-VT2D256E\n\t0392  G73 [GeForce 7600 GS]\n\t\t1462 0622  NX7600GS-T2D256EH\n\t0393  G73 [GeForce 7300 GT]\n\t\t10de 0412  NX7300GT-TD256EH\n\t\t1462 0412  NX7300GT-TD256EH\n\t0394  G73 [GeForce 7600 LE]\n\t0395  G73 [GeForce 7300 GT]\n\t0396  G73\n\t0397  G73M [GeForce Go 7700]\n\t0398  G73M [GeForce Go 7600]\n\t\t1025 006c  Aspire 9814WKMi\n\t0399  G73M [GeForce Go 7600 GT]\n\t039a  G73M [Quadro NVS 300M]\n\t039b  G73M [GeForce Go 7900 SE]\n\t039c  G73GLM [Quadro FX 550M]\n\t\t10de 039c  Quadro FX 560M\n\t039d  G73\n\t039e  G73GL [Quadro FX 560]\n\t039f  G73\n\t03a0  C55 Host Bridge\n\t03a1  C55 Host Bridge\n\t03a2  C55 Host Bridge\n\t03a3  C55 Host Bridge\n\t03a4  C55 Host Bridge\n\t03a5  C55 Host Bridge\n\t03a6  C55 Host Bridge\n\t03a7  C55 Host Bridge\n\t03a8  C55 Memory Controller\n\t03a9  C55 Memory Controller\n\t03aa  C55 Memory Controller\n\t03ab  C55 Memory Controller\n\t03ac  C55 Memory Controller\n\t03ad  C55 Memory Controller\n\t03ae  C55 Memory Controller\n\t03af  C55 Memory Controller\n\t03b0  C55 Memory Controller\n\t03b1  C55 Memory Controller\n\t03b2  C55 Memory Controller\n\t03b3  C55 Memory Controller\n\t03b4  C55 Memory Controller\n\t03b5  C55 Memory Controller\n\t03b6  C55 Memory Controller\n\t03b7  C55 PCI Express bridge\n\t03b8  C55 PCI Express bridge\n\t03b9  C55 PCI Express bridge\n\t03ba  C55 Memory Controller\n\t03bb  C55 PCI Express bridge\n\t03bc  C55 Memory Controller\n\t03d0  C61 [GeForce 6150SE nForce 430]\n\t\t1028 020e  Inspiron 531\n\t03d1  C61 [GeForce 6100 nForce 405]\n\t03d2  C61 [GeForce 6100 nForce 400]\n\t03d5  C61 [GeForce 6100 nForce 420]\n\t03d6  C61 [GeForce 7025 / nForce 630a]\n\t03e0  MCP61 LPC Bridge\n\t\t1028 020e  Inspiron 531\n\t\t1849 03e0  939NF6G-VSTA Board\n\t03e1  MCP61 LPC Bridge\n\t\t1043 83a4  M4N68T series motherboard\n\t03e2  MCP61 Host Bridge\n\t\t1043 83a4  M4N68T series motherboard\n\t03e3  MCP61 LPC Bridge\n\t03e4  MCP61 High Definition Audio\n\t03e5  MCP61 Ethernet\n\t03e6  MCP61 Ethernet\n\t03e7  MCP61 SATA Controller\n\t03e8  MCP61 PCI Express bridge\n\t\t1028 020e  Inspiron 531\n\t\t1849 03e8  939NF6G-VSTA Board\n\t03e9  MCP61 PCI Express bridge\n\t\t1028 020e  Inspiron 531\n\t\t1849 03e9  939NF6G-VSTA Board\n\t03ea  MCP61 Memory Controller\n\t\t1028 020e  Inspiron 531\n\t\t1849 03ea  939NF6G-VSTA Board\n\t03eb  MCP61 SMBus\n\t\t1028 020e  Inspiron 531\n\t\t1043 83a4  M4N68T series motherboard\n\t\t1849 03eb  939NF6G-VSTA Board\n\t03ec  MCP61 IDE\n\t\t1025 0392  ET1350\n\t\t1028 020e  Inspiron 531\n\t\t1043 83a4  M4N68T series motherboard\n\t\t1849 03ec  939NF6G-VSTA Board\n\t03ee  MCP61 Ethernet\n\t03ef  MCP61 Ethernet\n\t\t1025 8000  ET1350\n\t\t1028 020e  Inspiron 531\n\t\t1043 83a4  M4N68T series motherboard\n\t\t1849 03ef  939NF6G-VSTA Board\n\t03f0  MCP61 High Definition Audio\n\t\t1028 020e  Inspiron 531\n\t\t1043 8415  M4N68T series motherboard\n\t\t1849 0888  939NF6G-VSTA Board\n\t03f1  MCP61 USB 1.1 Controller\n\t\t1028 020e  Inspiron 531\n\t\t1043 83a4  M4N68T series motherboard\n\t\t1849 03f1  939NF6G-VSTA Board\n\t03f2  MCP61 USB 2.0 Controller\n\t\t1028 020e  Inspiron 531\n\t\t1043 83a4  M4N68T series motherboard\n\t\t1849 03f2  939NF6G-VSTA Board\n\t03f3  MCP61 PCI bridge\n\t\t1028 020e  Inspiron 531\n\t\t1849 03f3  939NF6G-VSTA Board\n\t03f4  MCP61 SMU\n\t03f5  MCP61 Memory Controller\n\t\t1028 020e  Inspiron 531\n\t\t1043 83a4  M4N68T series motherboard\n\t\t1849 03eb  939NF6G-VSTA Board\n\t03f6  MCP61 SATA Controller\n\t\t1028 020e  Inspiron 531\n\t\t1043 83a4  M4N68T series motherboard\n\t\t1849 03f6  939NF6G-VSTA Board\n\t03f7  MCP61 SATA Controller\n\t0400  G84 [GeForce 8600 GTS]\n\t\t1043 8241  EN8600GTS\n\t0401  G84 [GeForce 8600 GT]\n\t0402  G84 [GeForce 8600 GT]\n\t\t1458 3455  GV-NX86T512H\n\t\t1462 0910  NX8600GT-T2D256EZ\n\t0403  G84 [GeForce 8600 GS]\n\t0404  G84 [GeForce 8400 GS]\n\t\t1462 1230  NX8400GS-TD256E\n\t0405  G84M [GeForce 9500M GS]\n\t0406  G84 [GeForce 8300 GS]\n\t0407  G84M [GeForce 8600M GT]\n\t0408  G84M [GeForce 9650M GS]\n\t0409  G84M [GeForce 8700M GT]\n\t040a  G84GL [Quadro FX 370]\n\t040b  G84GLM [Quadro NVS 320M]\n\t040c  G84GLM [Quadro FX 570M]\n\t\t17aa 20d9  ThinkPad T61p\n\t040d  G84GLM [Quadro FX 1600M]\n\t040e  G84GL [Quadro FX 570]\n\t040f  G84GL [Quadro FX 1700]\n\t0410  G92 [GeForce GT 330]\n\t0414  G92 [GeForce 9800 GT]\n\t0418  G92 [GeForce GT 330 OEM]\n\t0420  G86 [GeForce 8400 SE]\n\t0421  G86 [GeForce 8500 GT]\n\t\t1462 0960  NX8500GT-TD512EH/M2\n\t0422  G86 [GeForce 8400 GS]\n\t0423  G86 [GeForce 8300 GS]\n\t0424  G86 [GeForce 8400 GS]\n\t0425  G86M [GeForce 8600M GS]\n\t\t1025 0121  Aspire 5920G\n\t\t1043 1514  F3SV\n\t0426  G86M [GeForce 8400M GT]\n\t0427  G86M [GeForce 8400M GS]\n\t\t103c 30cc  Pavilion dv6700\n\t\t103c 30cf  Pavilion dv9668eg Laptop\n\t0428  G86M [GeForce 8400M G]\n\t0429  G86M [Quadro NVS 140M]\n\t\t17aa 20d8  ThinkPad T61\n\t042a  G86M [Quadro NVS 130M]\n\t042b  G86M [Quadro NVS 135M]\n\t042c  G86 [GeForce 9400 GT]\n\t042d  G86GLM [Quadro FX 360M]\n\t042e  G86M [GeForce 9300M G]\n\t042f  G86 [Quadro NVS 290]\n\t0440  MCP65 LPC Bridge\n\t0441  MCP65 LPC Bridge\n\t0442  MCP65 LPC Bridge\n\t\t103c 30cf  Pavilion dv9668eg Laptop\n\t0443  MCP65 LPC Bridge\n\t0444  MCP65 Memory Controller\n\t\t103c 30cf  Pavilion dv9668eg Laptop\n\t0445  MCP65 Memory Controller\n\t0446  MCP65 SMBus\n\t\t103c 30cf  Pavilion dv9668eg Laptop\n\t0447  MCP65 SMU\n\t\t103c 30cf  Pavilion dv9500/9600/9700 series\n\t0448  MCP65 IDE\n\t\t103c 30cf  Pavilion dv9668eg Laptop\n\t0449  MCP65 PCI bridge\n\t\t10de cb84  HP Pavilion dv9668eg Laptop\n\t044a  MCP65 High Definition Audio\n\t\t103c 30cf  Pavilion dv9668eg Laptop\n\t044b  MCP65 High Definition Audio\n\t044c  MCP65 AHCI Controller\n\t044d  MCP65 AHCI Controller\n\t044e  MCP65 AHCI Controller\n\t044f  MCP65 AHCI Controller\n\t0450  MCP65 Ethernet\n\t\t103c 30cf  Pavilion dv9668eg Laptop\n\t0451  MCP65 Ethernet\n\t0452  MCP65 Ethernet\n\t0453  MCP65 Ethernet\n\t0454  MCP65 USB 1.1 OHCI Controller\n\t\t103c 30cf  Pavilion dv9668eg Laptop\n\t0455  MCP65 USB 2.0 EHCI Controller\n\t\t103c 30cf  Pavilion dv9668eg Laptop\n\t0456  MCP65 USB Controller\n\t0457  MCP65 USB Controller\n\t0458  MCP65 PCI Express bridge\n\t\t10de 0000  MCP65 PCI Express bridge\n\t0459  MCP65 PCI Express bridge\n\t\t10de 0000  MCP65 PCI Express bridge\n\t045a  MCP65 PCI Express bridge\n\t\t10de 0000  MCP65 PCI Express bridge\n\t045b  MCP65 PCI Express bridge\n\t\t10de 0000  MCP65 PCI Express bridge\n\t045c  MCP65 SATA Controller\n\t045d  MCP65 SATA Controller\n\t\t103c 30cf  Pavilion dv9668eg Laptop\n\t045e  MCP65 SATA Controller\n\t045f  MCP65 SATA Controller\n\t0531  C67 [GeForce 7150M / nForce 630M]\n\t0533  C67 [GeForce 7000M / nForce 610M]\n\t053a  C68 [GeForce 7050 PV / nForce 630a]\n\t053b  C68 [GeForce 7050 PV / nForce 630a]\n\t\t1043 8308  M2N68-AM Motherboard\n\t053e  C68 [GeForce 7025 / nForce 630a]\n\t0541  MCP67 Memory Controller\n\t0542  MCP67 SMBus\n\t\t1043 8308  M2N68-AM Motherboard\n\t0543  MCP67 Co-processor\n\t0547  MCP67 Memory Controller\n\t\t1043 8308  M2N68-AM Motherboard\n\t\t1849 0547  ALiveNF7G-HDready\n\t0548  MCP67 ISA Bridge\n\t\t1043 8308  M2N68-AM Motherboard\n\t054c  MCP67 Ethernet\n\t\t1043 8308  M2N68-AM Motherboard\n\t\t1849 054c  ALiveNF7G-HDready, MCP67 Gigabit Ethernet\n\t054d  MCP67 Ethernet\n\t054e  MCP67 Ethernet\n\t054f  MCP67 Ethernet\n\t0550  MCP67 AHCI Controller\n\t\t1043 8308  M2N68-AM Motherboard\n\t0554  MCP67 AHCI Controller\n\t\t1043 8308  M2N68-AM Motherboard\n\t0555  MCP67 SATA Controller\n\t\t1043 8308  M2N68-AM Motherboard\n\t055c  MCP67 High Definition Audio\n\t\t1043 8290  M2N68-AM Motherboard\n\t055d  MCP67 High Definition Audio\n\t055e  MCP67 OHCI USB 1.1 Controller\n\t\t1043 8308  M2N68-AM Motherboard\n\t055f  MCP67 EHCI USB 2.0 Controller\n\t\t1043 8308  M2N68-AM Motherboard\n\t0560  MCP67 IDE Controller\n\t\tf043 8308  M2N68-AM Motherboard\n\t0561  MCP67 PCI Bridge\n\t0562  MCP67 PCI Express Bridge\n\t\t1849 0562  ALiveNF7G-HDready\n\t0563  MCP67 PCI Express Bridge\n\t0568  MCP78S [GeForce 8200] Memory Controller\n\t\t103c 2a9e  Pavilion p6310f\n\t\t1043 82e8  M3N72-D\n\t\t1462 7508  K9N2GM-FIH\n\t\t1849 0568  K10N78FullHD-hSLI R3.0 Memory Controller\n\t0569  MCP78S [GeForce 8200] PCI Express Bridge\n\t\t103c 2a9e  Pavilion p6310f\n\t\t1043 82e8  M3N72-D\n\t\t1462 7508  K9N2GM-FIH\n\t\t1849 0569  K10N78FullHD-hSLI R3.0 PCI Express Bridge\n\t056a  MCP73 [nForce 630i] USB 2.0 Controller (EHCI)\n\t\t1019 297a  MCP73PVT-SM\n\t\t147b 1c3e  I-N73V motherboard\n\t056c  MCP73 IDE Controller\n\t\t1019 297a  MCP73PVT-SM\n\t\t147b 1c3e  I-N73V motherboard\n\t\t1afa 7150  JW-IN7150-HD\n\t056d  MCP73 PCI Express bridge\n\t\t1019 297a  MCP73PVT-SM\n\t\t10de cb73  MCP73 PCI Bridge\n\t056e  MCP73 PCI Express bridge\n\t\t1019 297a  MCP73PVT-SM\n\t\t10de 0000  MCP73 PCIe x16 port\n\t056f  MCP73 PCI Express bridge\n\t\t1019 297a  MCP73PVT-SM\n\t\t10de 0000  MCP73 PCIe x1 port\n\t05b1  NF200 PCIe 2.0 switch\n\t05b8  NF200 PCIe 2.0 switch for GTX 295\n\t05be  NF200 PCIe 2.0 switch for Quadro Plex S4 / Tesla S870 / Tesla S1070 / Tesla S2050\n\t05e0  GT200b [GeForce GTX 295]\n\t05e1  GT200 [GeForce GTX 280]\n\t05e2  GT200 [GeForce GTX 260]\n\t05e3  GT200b [GeForce GTX 285]\n\t\t1682 2490  GX-285N-ZDF\n\t05e6  GT200b [GeForce GTX 275]\n\t05e7  GT200GL [Tesla C1060 / M1060]\n\t\t10de 0595  Tesla T10 Processor\n\t\t10de 068f  Tesla T10 Processor\n\t\t10de 0697  Tesla M1060\n\t\t10de 0714  Tesla M1060\n\t\t10de 0743  Tesla M1060\n\t05ea  GT200 [GeForce GTX 260]\n\t05eb  GT200 [GeForce GTX 295]\n\t05ed  GT200GL [Quadro Plex 2200 D2]\n\t05f1  GT200 [GeForce GTX 280]\n\t05f2  GT200 [GeForce GTX 260]\n\t05f8  GT200GL [Quadro Plex 2200 S4]\n\t05f9  GT200GL [Quadro CX]\n\t05fd  GT200GL [Quadro FX 5800]\n\t05fe  GT200GL [Quadro FX 4800]\n\t05ff  GT200GL [Quadro FX 3800]\n\t0600  G92 [GeForce 8800 GTS 512]\n\t0601  G92 [GeForce 9800 GT]\n\t0602  G92 [GeForce 8800 GT]\n\t0603  G92 [GeForce GT 230 OEM]\n\t0604  G92 [GeForce 9800 GX2]\n\t0605  G92 [GeForce 9800 GT]\n\t0606  G92 [GeForce 8800 GS]\n\t0607  G92 [GeForce GTS 240]\n\t0608  G92M [GeForce 9800M GTX]\n\t0609  G92M [GeForce 8800M GTS]\n\t\t106b 00a7  GeForce 8800 GS\n\t060a  G92M [GeForce GTX 280M]\n\t060b  G92M [GeForce 9800M GT]\n\t060c  G92M [GeForce 8800M GTX]\n\t060d  G92 [GeForce 8800 GS]\n\t060f  G92M [GeForce GTX 285M]\n\t0610  G92 [GeForce 9600 GSO]\n\t\t1682 2385  GeForce 9600 GSO 768mb\n\t0611  G92 [GeForce 8800 GT]\n\t\t107d 2ab0  Winfast PX8800 GT PCI-E\n\t\t1462 1170  NX8800GT series model V117 2xDVI+TV\n\t\t19da 1040  ZT-88TES2P-FSP\n\t0612  G92 [GeForce 9800 GTX / 9800 GTX+]\n\t0613  G92 [GeForce 9800 GTX+]\n\t0614  G92 [GeForce 9800 GT]\n\t\t107d 2ab3  WinFast PX9800 GT (S-Fanpipe)\n\t0615  G92 [GeForce GTS 250]\n\t\t3842 1150  GeForce GTS 250 P/N 512-P3-1150-TR\n# Overclocked\n\t\t3842 1151  GeForce GTS 250 P/N 512-P3-1151-TR\n\t\t3842 1155  GeForce GTS 250 P/N 01G-P3-1155-TR\n# Overclocked\n\t\t3842 1156  GeForce GTS 250 P/N 01G-P3-1156-TR\n\t0617  G92M [GeForce 9800M GTX]\n\t0618  G92M [GeForce GTX 260M]\n\t0619  G92GL [Quadro FX 4700 X2]\n\t061a  G92GL [Quadro FX 3700]\n\t061b  G92GL [Quadro VX 200]\n\t061c  G92GLM [Quadro FX 3600M]\n\t061d  G92GLM [Quadro FX 2800M]\n\t061e  G92GLM [Quadro FX 3700M]\n\t061f  G92GLM [Quadro FX 3800M]\n\t0620  G94 [GeForce 9800 GT]\n\t0621  G94 [GeForce GT 230]\n\t0622  G94 [GeForce 9600 GT]\n\t\t107d 2ac1  WinFast PX9600GT 1024MB\n\t\t1458 3481  GV-NX96T512HP\n\t0623  G94 [GeForce 9600 GS]\n\t0624  G94 [GeForce 9600 GT Green Edition]\n\t0625  G94 [GeForce 9600 GSO 512]\n\t0626  G94 [GeForce GT 130]\n\t0627  G94 [GeForce GT 140]\n\t0628  G94M [GeForce 9800M GTS]\n\t062a  G94M [GeForce 9700M GTS]\n\t062b  G94M [GeForce 9800M GS]\n\t062c  G94M [GeForce 9800M GTS]\n\t062d  G94 [GeForce 9600 GT]\n\t062e  G94 [GeForce 9600 GT]\n\t\t106b 0605  GeForce GT 130\n\t062f  G94 [GeForce 9800 S]\n\t0630  G94 [GeForce 9600 GT]\n\t0631  G94M [GeForce GTS 160M]\n\t0632  G94M [GeForce GTS 150M]\n\t0633  G94 [GeForce GT 220]\n\t0635  G94 [GeForce 9600 GSO]\n\t0637  G94 [GeForce 9600 GT]\n\t0638  G94GL [Quadro FX 1800]\n\t063a  G94GLM [Quadro FX 2700M]\n\t063f  G94 [GeForce 9600 GE]\n\t0640  G96C [GeForce 9500 GT]\n\t0641  G96C [GeForce 9400 GT]\n\t\t1682 4009  PV-T94G-ZAFG\n\t0642  G96 [D9M-10]\n\t0643  G96 [GeForce 9500 GT]\n\t0644  G96 [GeForce 9500 GS]\n\t\t174b 9600  Geforce 9500GS 512M DDR2 V/D/HDMI\n\t0645  G96C [GeForce 9500 GS]\n\t0646  G96C [GeForce GT 120]\n\t0647  G96CM [GeForce 9600M GT]\n\t0648  G96CM [GeForce 9600M GS]\n\t0649  G96CM [GeForce 9600M GT]\n\t\t1043 202d  GeForce GT 220M\n\t064a  G96M [GeForce 9700M GT]\n\t064b  G96M [GeForce 9500M G]\n\t064c  G96CM [GeForce 9650M GT]\n\t064e  G96C [GeForce 9600 GSO / 9800 GT]\n\t0651  G96CM [GeForce G 110M]\n\t0652  G96CM [GeForce GT 130M]\n\t\t152d 0850  GeForce GT 240M LE\n\t0653  G96CM [GeForce GT 120M]\n\t0654  G96CM [GeForce GT 220M]\n\t\t1043 14a2  GeForce GT 320M\n\t\t1043 14d2  GeForce GT 320M\n\t0655  G96 [GeForce GT 120 Mac Edition]\n\t0656  G96 [GeForce GT 120 Mac Edition]\n\t0658  G96GL [Quadro FX 380]\n\t0659  G96CGL [Quadro FX 580]\n\t065a  G96GLM [Quadro FX 1700M]\n\t065b  G96C [GeForce 9400 GT]\n\t065c  G96GLM [Quadro FX 770M]\n\t065d  G96 [GeForce 9500 GA / 9600 GT / GTS 250]\n\t065f  G96C [GeForce G210]\n\t06c0  GF100 [GeForce GTX 480]\n\t06c4  GF100 [GeForce GTX 465]\n\t06ca  GF100M [GeForce GTX 480M]\n\t06cb  GF100 [GeForce GTX 480]\n\t06cd  GF100 [GeForce GTX 470]\n\t06d0  GF100GL\n\t06d1  GF100GL [Tesla C2050 / C2070]\n\t\t10de 0771  Tesla C2050\n\t\t10de 0772  Tesla C2070\n\t06d2  GF100GL [Tesla M2070]\n\t\t10de 0774  Tesla M2070\n\t\t10de 0830  Tesla M2070\n\t\t10de 0842  Tesla M2070\n\t\t10de 088f  Tesla X2070\n\t\t10de 0908  Tesla M2070\n\t06d8  GF100GL [Quadro 6000]\n\t06d9  GF100GL [Quadro 5000]\n\t06da  GF100GLM [Quadro 5000M]\n\t06dc  GF100GL [Quadro 6000]\n\t06dd  GF100GL [Quadro 4000]\n\t06de  GF100GL [Tesla T20 Processor]\n\t\t10de 0773  Tesla S2050\n\t\t10de 082f  Tesla M2050\n\t\t10de 0840  Tesla X2070\n\t\t10de 0842  Tesla M2050\n\t\t10de 0846  Tesla M2050\n\t\t10de 0866  Tesla M2050\n\t\t10de 0907  Tesla M2050\n\t\t10de 091e  Tesla M2050\n\t06df  GF100GL [Tesla M2070-Q]\n\t\t10de 084d  Tesla M2070-Q\n\t\t10de 087f  Tesla M2070-Q\n\t06e0  G98 [GeForce 9300 GE]\n\t\t107d 5a96  Geforce 9300GE\n\t06e1  G98 [GeForce 9300 GS]\n\t06e2  G98 [GeForce 8400]\n\t06e3  G98 [GeForce 8300 GS]\n\t06e4  G98 [GeForce 8400 GS Rev. 2]\n\t\t1458 3475  GV-NX84S256HE [GeForce 8400 GS]\n\t06e5  G98M [GeForce 9300M GS]\n\t06e6  G98 [GeForce G 100]\n\t06e7  G98 [GeForce 9300 SE]\n\t06e8  G98M [GeForce 9200M GS]\n\t\t103c 360b  GeForce 9200M GE\n\t06e9  G98M [GeForce 9300M GS]\n\t\t1043 19b2  U6V laptop\n\t06ea  G98M [Quadro NVS 150M]\n\t06eb  G98M [Quadro NVS 160M]\n\t06ec  G98M [GeForce G 105M]\n\t06ed  G98 [GeForce 9600 GT / 9800 GT]\n\t06ee  G98 [GeForce 9600 GT / 9800 GT / GT 240]\n\t06ef  G98M [GeForce G 103M]\n\t06f1  G98M [GeForce G 105M]\n\t06f8  G98 [Quadro NVS 420]\n\t06f9  G98GL [Quadro FX 370 LP]\n\t06fa  G98 [Quadro NVS 450]\n\t06fb  G98GLM [Quadro FX 370M]\n\t06fd  G98 [Quadro NVS 295]\n\t06ff  G98 [HICx16 + Graphics]\n\t\t10de 0711  HICx8 + Graphics\n\t0751  MCP78S [GeForce 8200] Memory Controller\n\t\t103c 2a9e  Pavilion p6310f\n\t\t1043 82e8  M3N72-D\n\t\t1462 7508  K9N2GM-FIH\n\t\t1849 0751  K10N78FullHD-hSLI R3.0 Memory Controller\n\t0752  MCP78S [GeForce 8200] SMBus\n\t\t103c 2a9e  Pavilion p6310f\n\t\t1043 82e8  M3N72-D\n\t\t1462 7508  K9N2GM-FIH\n\t\t1849 0752  K10N78FullHD-hSLI R3.0 SMBus\n\t0753  MCP78S [GeForce 8200] Co-Processor\n\t\t103c 2a9e  Pavilion p6310f\n\t\t1043 82e8  M3N72-D\n\t\t1462 7508  K9N2GM-FIH\n\t\t1849 0753  K10N78FullHD-hSLI R3.0 Co-Processor\n\t0754  MCP78S [GeForce 8200] Memory Controller\n\t\t103c 2a9e  Pavilion p6310f\n\t\t1043 82e8  M3N72-D\n\t\t1462 7508  K9N2GM-FIH\n\t\t1849 0754  K10N78FullHD-hSLI R3.0 Memory Controller\n\t0759  MCP78S [GeForce 8200] IDE\n\t\t1043 82e8  M3N72-D\n\t\t1462 7508  K9N2GM-FIH\n\t\t1849 0759  K10N78FullHD-hSLI R3.0 IDE\n\t075a  MCP78S [GeForce 8200] PCI Bridge\n\t\t103c 2a9e  Pavilion p6310f\n\t\t1043 82e8  M3N72-D\n\t\t1849 075a  K10N78FullHD-hSLI R3.0 PCI Bridge\n\t075b  MCP78S [GeForce 8200] PCI Express Bridge\n\t\t103c 2a9e  Pavilion p6310f\n\t\t1043 82e8  M3N72-D\n\t\t1462 7508  K9N2GM-FIH\n\t\t1849 075b  K10N78FullHD-hSLI R3.0 PCI Express Bridge\n\t075c  MCP78S [GeForce 8200] LPC Bridge\n\t\t103c 2a9e  Pavilion p6310f\n\t\t1462 7508  K9N2GM-FIH\n\t\t1849 075c  K10N78FullHD-hSLI R3.0 LPC Bridge\n\t075d  MCP78S [GeForce 8200] LPC Bridge\n\t\t1043 82e8  M3N72-D\n\t0760  MCP77 Ethernet\n\t\t103c 2a9e  Pavilion p6310f\n\t\t1043 82e8  M3N72-D\n\t\t1462 7508  K9N2GM-FIH\n\t\t1849 0760  K10N78FullHD-hSLI R3.0 Ethernet\n\t0761  MCP77 Ethernet\n\t0762  MCP77 Ethernet\n\t0763  MCP77 Ethernet\n\t0774  MCP72XE/MCP72P/MCP78U/MCP78S High Definition Audio\n\t\t103c 2a9e  Pavilion p6310f\n# has a Realtek ALC1200 HDAudio Codec\n\t\t1043 82fe  M3N72-D\n\t\t1462 7508  K9N2GM-FIH\n\t\t1849 3662  K10N78FullHD-hSLI R3.0 High Definition Audio\n\t0778  MCP78S [GeForce 8200] PCI Express Bridge\n\t\t103c 2a9e  Pavilion p6310f\n\t\t1043 82e8  M3N72-D\n\t\t1462 7508  K9N2GM-FIH\n\t\t1849 0778  K10N78FullHD-hSLI R3.0 PCI Express Bridge\n\t077a  MCP78S [GeForce 8200] PCI Bridge\n\t\t103c 2a9e  Pavilion p6310f\n\t\t1043 82e8  M3N72-D\n\t\t1462 7508  K9N2GM-FIH\n\t\t1849 077a  K10N78FullHD-hSLI R3.0 PCI Bridge\n\t077b  MCP78S [GeForce 8200] OHCI USB 1.1 Controller\n\t\t103c 2a9e  Pavilion p6310f\n\t\t1043 82e8  M3N72-D\n\t\t1462 7508  K9N2GM-FIH\n\t\t1849 077b  K10N78FullHD-hSLI R3.0 OHCI USB 1.1 Controller\n\t077c  MCP78S [GeForce 8200] EHCI USB 2.0 Controller\n\t\t103c 2a9e  Pavilion p6310f\n\t\t1043 82e8  M3N72-D\n\t\t1462 7508  K9N2GM-FIH\n\t\t1849 077c  K10N78FullHD-hSLI R3.0 EHCI USB 2.0 Controller\n\t077d  MCP78S [GeForce 8200] OHCI USB 1.1 Controller\n\t\t103c 2a9e  Pavilion p6310f\n\t\t1043 82e8  M3N72-D\n\t\t1462 7508  K9N2GM-FIH\n\t\t1849 077d  K10N78FullHD-hSLI R3.0 OHCI USB 1.1 Controller\n\t077e  MCP78S [GeForce 8200] EHCI USB 2.0 Controller\n\t\t103c 2a9e  Pavilion p6310f\n\t\t1043 82e8  M3N72-D\n\t\t1462 7508  K9N2GM-FIH\n\t\t1849 077e  K10N78FullHD-hSLI R3.0 EHCI USB 2.0 Controller\n\t07c0  MCP73 Host Bridge\n\t\t1afa 7150  JW-IN7150-HD\n\t07c1  MCP73 Host Bridge\n\t\t1019 297a  MCP73PVT-SM\n\t07c2  MCP73 Host Bridge\n\t07c3  MCP73 Host Bridge\n\t\t147b 1c3e  I-N73V motherboard\n\t07c5  MCP73 Host Bridge\n\t07c8  MCP73 Memory Controller\n\t\t1019 297a  MCP73PVT-SM\n\t\t147b 1c3e  I-N73V motherboard\n\t\t1afa 7150  JW-IN7150-HD\n\t07cb  nForce 610i/630i memory controller\n\t\t1019 297a  MCP73PVT-SM\n\t\t147b 1c3e  I-N73V motherboard\n\t\t1afa 7150  JW-IN7150-HD\n\t07cd  nForce 610i/630i memory controller\n\t\t1019 297a  MCP73PVT-SM\n\t\t147b 1c3e  I-N73V motherboard\n\t\t1afa 7150  JW-IN7150-HD\n\t07ce  nForce 610i/630i memory controller\n\t\t1019 297a  MCP73PVT-SM\n\t\t147b 1c3e  I-N73V motherboard\n\t\t1afa 7150  JW-IN7150-HD\n\t07cf  nForce 610i/630i memory controller\n\t\t1019 297a  MCP73PVT-SM\n\t\t147b 1c3e  I-N73V motherboard\n\t\t1afa 7150  JW-IN7150-HD\n\t07d0  nForce 610i/630i memory controller\n\t\t1019 297a  MCP73PVT-SM\n\t\t147b 1c3e  I-N73V motherboard\n\t\t1afa 7150  JW-IN7150-HD\n\t07d1  nForce 610i/630i memory controller\n\t\t1019 297a  MCP73PVT-SM\n\t\t147b 1c3e  I-N73V motherboard\n\t\t1afa 7150  JW-IN7150-HD\n\t07d2  nForce 610i/630i memory controller\n\t\t1019 297a  MCP73PVT-SM\n\t\t147b 1c3e  I-N73V motherboard\n\t\t1afa 7150  JW-IN7150-HD\n\t07d3  nForce 610i/630i memory controller\n\t\t1019 297a  MCP73PVT-SM\n\t\t147b 1c3e  I-N73V motherboard\n\t\t1afa 7150  JW-IN7150-HD\n\t07d6  nForce 610i/630i memory controller\n\t\t1019 297a  MCP73PVT-SM\n\t\t147b 1c3e  I-N73V motherboard\n\t\t1afa 7150  JW-IN7150-HD\n\t07d7  MCP73 LPC Bridge\n\t\t1019 297a  MCP73PVT-SM\n\t\t147b 1c3e  I-N73V motherboard\n\t\t1afa 7150  JW-IN7150-HD\n\t07d8  MCP73 SMBus\n\t\t1019 297a  MCP73PVT-SM\n\t\t147b 1c3e  I-N73V motherboard\n\t\t1afa 7150  JW-IN7150-HD\n\t07d9  MCP73 Memory Controller\n\t\t1019 297a  MCP73PVT-SM\n\t\t147b 1c3e  I-N73V motherboard\n\t\t1afa 7150  JW-IN7150-HD\n\t07da  MCP73 Co-processor\n\t\t1afa 7150  JW-IN7150-HD\n\t07dc  MCP73 Ethernet\n\t\t147b 1c3e  I-N73V motherboard\n\t07dd  MCP73 Ethernet\n\t07de  MCP73 Ethernet\n\t07df  MCP73 Ethernet\n\t07e0  C73 [GeForce 7150 / nForce 630i]\n\t\t1afa 7150  JW-IN7150-HD\n\t07e1  C73 [GeForce 7100 / nForce 630i]\n\t\t1019 297a  MCP73PVT-SM\n\t07e2  C73 [GeForce 7050 / nForce 630i]\n\t07e3  C73 [GeForce 7050 / nForce 610i]\n\t\t147b 1c3e  I-N73V motherboard\n\t07e5  C73 [GeForce 7100 / nForce 620i]\n\t07f0  MCP73 SATA Controller (IDE mode)\n\t\t147b 1c3e  I-N73V motherboard\n\t07f4  GeForce 7100/nForce 630i SATA\n\t\t1019 297a  MCP73PVT-SM\n\t\t147b 1c3e  I-N73V motherboard\n\t07f8  MCP73 SATA RAID Controller\n\t\t147b 1c3e  I-N73V motherboard\n\t07fc  MCP73 High Definition Audio\n\t\t1019 297a  MCP73PVT-SM\n\t\t10de 07fc  MCP73 High Definition Audio\n\t\t147b 1c3e  I-N73V motherboard\n\t07fe  MCP73 OHCI USB 1.1 Controller\n\t\t1019 297a  MCP73PVT-SM\n\t\t147b 1c3e  I-N73V motherboard\n\t\t1afa 7150  JW-IN7150-HD\n\t0840  C77 [GeForce 8200M]\n\t0844  C77 [GeForce 9100M G]\n\t0845  C77 [GeForce 8200M G]\n\t0846  C77 [GeForce 9200]\n\t0847  C78 [GeForce 9100]\n\t\t103c 2a9e  Pavilion p6310f\n\t0848  C77 [GeForce 8300]\n\t0849  C77 [GeForce 8200]\n\t\t1462 7508  K9N2GM-FIH\n\t\t1849 0849  K10N78FullHD-hSLI R3.0 GeForce 8200\n\t084a  C77 [nForce 730a]\n\t084b  C77 [GeForce 8200]\n\t084c  C77 [nForce 780a/980a SLI]\n\t084d  C77 [nForce 750a SLI]\n\t\t1043 82e8  M3N72-D mGPU\n\t084f  C77 [GeForce 8100 / nForce 720a]\n\t0860  C79 [GeForce 9300]\n\t0861  C79 [GeForce 9400]\n\t0862  C79 [GeForce 9400M G]\n\t0863  C79 [GeForce 9400M]\n\t\t106b 00aa  MacBook5,1\n\t0864  C79 [GeForce 9300]\n\t0865  C79 [GeForce 9300 / ION]\n\t0866  C79 [GeForce 9400M G]\n\t\t106b 00b1  GeForce 9400M\n\t0867  C79 [GeForce 9400]\n\t\t106b 00ad  iMac 9,1\n\t0868  C79 [nForce 760i SLI]\n\t0869  MCP7A [GeForce 9400]\n\t086a  C79 [GeForce 9400]\n\t086c  C79 [GeForce 9300 / nForce 730i]\n\t086d  C79 [GeForce 9200]\n\t086e  C79 [GeForce 9100M G]\n\t086f  MCP79 [GeForce 8200M G]\n\t\t1043 16b2  F5GL Notebook\n\t0870  C79 [GeForce 9400M]\n\t0871  C79 [GeForce 9200]\n\t0872  C79 [GeForce G102M]\n\t\t1043 19b4  GeForce G102M\n\t\t1043 1aa2  GeForce G102M\n\t\t1043 1c02  GeForce G102M\n\t\t1043 1c42  GeForce G205M\n\t0873  C79 [GeForce G102M]\n\t\t1043 19b4  GeForce G102M\n\t\t1043 1c12  GeForce G102M\n\t\t1043 1c52  GeForce G205M\n\t0874  C79 [ION]\n\t0876  C79 [GeForce 9400M / ION]\n\t087a  C79 [GeForce 9400]\n\t087d  C79 [ION]\n\t\t19da a123  IONITX-F-E\n\t087e  C79 [ION LE]\n\t087f  C79 [ION LE]\n\t08a0  MCP89 [GeForce 320M]\n\t08a2  MCP89 [GeForce 320M]\n\t08a3  MCP89 [GeForce 320M]\n\t08a4  MCP89 [GeForce 320M]\n\t08a5  MCP89 [GeForce 320M]\n\t0a20  GT216 [GeForce GT 220]\n\t\t1043 8311  ENGT220/DI/1GD3(LP)/V2\n\t0a21  GT216M [GeForce GT 330M]\n\t0a22  GT216 [GeForce 315]\n\t0a23  GT216 [GeForce 210]\n\t0a24  GT216 [GeForce 405]\n\t0a26  GT216 [GeForce 405]\n\t0a27  GT216 [GeForce 405]\n\t0a28  GT216M [GeForce GT 230M]\n\t0a29  GT216M [GeForce GT 330M]\n\t0a2a  GT216M [GeForce GT 230M]\n\t0a2b  GT216M [GeForce GT 330M]\n\t0a2c  GT216M [NVS 5100M]\n\t0a2d  GT216M [GeForce GT 320M]\n\t0a30  GT216 [GeForce 505]\n\t0a32  GT216 [GeForce GT 415]\n\t0a34  GT216M [GeForce GT 240M]\n\t0a35  GT216M [GeForce GT 325M]\n\t0a38  GT216GL [Quadro 400]\n\t0a3c  GT216GLM [Quadro FX 880M]\n\t0a60  GT218 [GeForce G210]\n\t0a62  GT218 [GeForce 205]\n\t0a63  GT218 [GeForce 310]\n\t0a64  GT218 [ION]\n\t0a65  GT218 [GeForce 210]\n\t\t1043 8334  EN210 SILENT\n\t\t1458 36a9  GV-N210D3-1GI (rev. 6.0/6.1)\n\t\t1462 8094  N210 [Geforce 210] PCIe graphics adapter\n\t\t19da 7222  GeForce 210 1GB [Synergy Edition]\n\t0a66  GT218 [GeForce 310]\n\t0a67  GT218 [GeForce 315]\n\t0a68  GT218M [GeForce G 105M]\n\t0a69  GT218M [GeForce G 105M]\n\t0a6a  GT218M [NVS 2100M]\n\t0a6c  GT218M [NVS 3100M]\n\t\t1028 040b  Latitude E6510\n\t\t17aa 2142  ThinkPad T410\n\t0a6e  GT218M [GeForce 305M]\n\t0a6f  GT218M [ION]\n\t0a70  GT218M [GeForce 310M]\n\t0a71  GT218M [GeForce 305M]\n\t0a72  GT218M [GeForce 310M]\n\t0a73  GT218M [GeForce 305M]\n\t0a74  GT218M [GeForce G210M]\n\t\t1b0a 903a  GeForce G210\n\t0a75  GT218M [GeForce 310M]\n\t0a76  GT218M [ION 2]\n\t0a78  GT218GL [Quadro FX 380 LP]\n\t0a7a  GT218M [GeForce 315M]\n\t\t104d 907e  GeForce 315M\n\t\t1179 fc50  GeForce 315M\n\t\t1179 fc61  GeForce 315M\n\t\t1179 fc71  GeForce 315M\n\t\t1179 fc90  GeForce 315M\n\t\t1179 fcc0  GeForce 315M\n\t\t1179 fcd0  GeForce 315M\n\t\t1179 fce2  GeForce 315M\n\t\t1179 fcf2  GeForce 315M\n\t\t1179 fd16  GeForce 315M\n\t\t1179 fd40  GeForce 315M\n\t\t1179 fd50  GeForce 315M\n\t\t1179 fd52  GeForce 315M\n\t\t1179 fd61  GeForce 315M\n\t\t1179 fd71  GeForce 315M\n\t\t1179 fd92  GeForce 315M\n\t\t1179 fd96  GeForce 315M\n\t\t1179 fdd0  GeForce 315M\n\t\t1179 fdd2  GeForce 315M\n\t\t1179 fdfe  GeForce 315M\n\t\t144d c0a2  GeForce 315M\n\t\t144d c0b2  GeForce 315M\n\t\t144d c581  GeForce 315M\n\t\t144d c587  GeForce 315M\n\t\t144d c588  GeForce 315M\n\t\t144d c597  GeForce 315M\n\t\t144d c606  GeForce 315M\n\t\t1462 aa51  GeForce 405\n\t\t1462 aa58  GeForce 405\n\t\t1462 ac71  GeForce 405\n\t\t1462 ac81  GeForce 315M\n\t\t1462 ac82  GeForce 405\n\t\t1462 ae33  GeForce 405\n\t\t1642 3980  GeForce 405\n\t\t17aa 3950  GeForce 405M\n\t\t17aa 397d  GeForce 405M\n\t\t1b0a 2091  GeForce 315M\n\t\t1b0a 90b4  GeForce 405\n\t\t1bfd 0003  GeForce 405\n\t\t1bfd 8006  GeForce 405\n\t\t1bfd 8007  GeForce 315M\n\t0a7b  GT218 [GeForce 505]\n\t0a7c  GT218GLM [Quadro FX 380M]\n\t0a80  MCP79 Host Bridge\n\t0a81  MCP79 Host Bridge\n\t0a82  MCP79 Host Bridge\n\t0a83  MCP79 Host Bridge\n\t0a84  MCP79 Host Bridge\n\t0a85  MCP79 Host Bridge\n\t0a86  MCP79 Host Bridge\n\t0a87  MCP79 Host Bridge\n\t0a88  MCP79 Memory Controller\n\t0a89  MCP79 Memory Controller\n\t0a98  MCP79 Memory Controller\n\t\t1043 1a87  F5GL Notebook\n\t\t10de cb79  iMac 9,1\n\t0aa0  MCP79 PCI Express Bridge\n\t\t1043 1a87  F5GL Notebook\n\t\t10de cb79  Apple iMac 9,1\n\t0aa2  MCP79 SMBus\n\t\t1043 1a87  F5GL Notebook\n\t\t10de cb79  Apple iMac 9,1\n\t\t19da a123  IONITX-F-E\n\t0aa3  MCP79 Co-processor\n\t\t1043 1a87  F5GL Notebook\n\t\t10de cb79  Apple iMac 9,1\n\t\t19da a123  IONITX-F-E\n\t0aa4  MCP79 Memory Controller\n\t\t1043 1a87  F5GL Notebook\n\t\t19da a123  IONITX-F-E\n\t0aa5  MCP79 OHCI USB 1.1 Controller\n\t\t1043 1a87  F5GL Notebook\n\t\t10de cb79  Apple iMac 9,1\n\t\t19da a123  IONITX-F-E\n\t0aa6  MCP79 EHCI USB 2.0 Controller\n\t\t1043 1a87  F5GL Notebook\n\t\t10de cb79  Apple iMac 9,1\n\t\t19da a123  IONITX-F-E\n\t0aa7  MCP79 OHCI USB 1.1 Controller\n\t\t10de cb79  Apple iMac 9,1\n\t\t19da a123  IONITX-F-E\n\t0aa8  MCP79 OHCI USB 1.1 Controller\n\t0aa9  MCP79 EHCI USB 2.0 Controller\n\t\t10de cb79  Apple iMac 9,1\n\t\t19da a123  IONITX-F-E\n\t0aaa  MCP79 EHCI USB 2.0 Controller\n\t0aab  MCP79 PCI Bridge\n\t\t1043 1a87  F5GL Notebook\n\t\t10de cb79  Apple iMac 9,1\n\t0aac  MCP79 LPC Bridge\n\t0aad  MCP79 LPC Bridge\n\t\t19da a123  IONITX-F-E\n\t0aae  MCP79 LPC Bridge\n\t\t1043 1a87  F5GL Notebook\n\t\t10de cb79  Apple iMac 9,1\n\t0aaf  MCP79 LPC Bridge\n\t0ab0  MCP79 Ethernet\n\t\t1043 1215  F5GL Notebook\n\t\t10de cb79  Apple iMac 9,1\n\t\t19da a123  IONITX-F-E\n\t0ab1  MCP79 Ethernet\n\t0ab2  MCP79 Ethernet\n\t0ab3  MCP79 Ethernet\n\t0ab4  MCP79 SATA Controller\n\t\t19da a123  IONITX-F-E\n\t0ab5  MCP79 SATA Controller\n\t0ab6  MCP79 SATA Controller\n\t0ab7  MCP79 SATA Controller\n\t0ab8  MCP79 AHCI Controller\n\t\t1043 1a87  F5GL Notebook\n\t0ab9  MCP79 AHCI Controller\n\t\t10de cb79  Apple iMac 9,1\n\t0aba  MCP79 AHCI Controller\n\t0abb  MCP79 AHCI Controller\n\t0abc  MCP79 RAID Controller\n\t0abd  MCP79 RAID Controller\n\t0abe  MCP79 RAID Controller\n\t0abf  MCP79 RAID Controller\n\t0ac0  MCP79 High Definition Audio\n\t\t1043 1903  F5GL Notebook\n\t\t10de cb79  Apple iMac 9,1\n\t0ac1  MCP79 High Definition Audio\n\t0ac2  MCP79 High Definition Audio\n\t0ac3  MCP79 High Definition Audio\n\t0ac4  MCP79 PCI Express Bridge\n\t\t10de cb79  Apple iMac 9,1\n\t0ac5  MCP79 PCI Express Bridge\n\t0ac6  MCP79 PCI Express Bridge\n\t\t1043 1a87  F5GL Notebook\n\t\t10de cb79  Apple iMac 9,1\n\t0ac7  MCP79 PCI Express Bridge\n\t\t1043 1a87  F5GL Notebook\n\t\t10de cb79  Apple iMac 9,1\n\t0ac8  MCP79 PCI Express Bridge\n\t0ad0  MCP78S [GeForce 8200] SATA Controller (non-AHCI mode)\n\t\t1462 7508  K9N2GM-FIH\n\t\t1849 0ad0  K10N78FullHD-hSLI R3.0 IDE\n\t0ad4  MCP78S [GeForce 8200] AHCI Controller\n\t\t103c 2a9e  Pavilion p6310f\n\t\t1043 82e8  M3N72-D\n\t\t1849 0ad4  K10N78FullHD-hSLI R3.0 AHCI Controller\n\t0ad8  MCP78S [GeForce 8200] SATA Controller (RAID mode)\n\t0be2  GT216 HDMI Audio Controller\n\t\t1043 8311  ENGT220/DI/1GD3(LP)/V2\n\t0be3  High Definition Audio Controller\n\t\t1028 040b  Latitude E6510\n\t\t10de 066d  G98 [GeForce 8400GS]\n\t\t1462 8094  N210 [Geforce 210] PCIe graphics adapter\n\t0be4  High Definition Audio Controller\n\t0be5  GF100 High Definition Audio Controller\n\t0be9  GF106 High Definition Audio Controller\n\t\t1558 8687  CLEVO/KAPOK W860CU\n\t\t3842 1452  GeForce GTS 450\n\t0bea  GF108 High Definition Audio Controller\n\t\t3842 1430  GeForce GT 430\n\t0beb  GF104 High Definition Audio Controller\n\t\t1462 2322  N460GTX Cyclone 1GD5/OC\n\t0bee  GF116 High Definition Audio Controller\n\t0bf0  Tegra2 PCIe x4 Bridge\n\t0bf1  Tegra2 PCIe x2 Bridge\n\t0ca0  GT215 [GeForce GT 330]\n\t0ca2  GT215 [GeForce GT 320]\n\t0ca3  GT215 [GeForce GT 240]\n\t0ca4  GT215 [GeForce GT 340]\n\t0ca5  GT215 [GeForce GT 220]\n\t0ca7  GT215 [GeForce GT 330]\n\t0ca8  GT215M [GeForce GTS 260M]\n\t0ca9  GT215M [GeForce GTS 250M]\n\t0cac  GT215 [GeForce GT 220/315]\n\t0caf  GT215M [GeForce GT 335M]\n\t0cb0  GT215M [GeForce GTS 350M]\n\t0cb1  GT215M [GeForce GTS 360M]\n\t0cbc  GT215GLM [Quadro FX 1800M]\n\t0d60  MCP89 HOST Bridge\n\t0d68  MCP89 Memory Controller\n\t0d69  MCP89 Memory Controller\n\t0d76  MCP89 PCI Express Bridge\n\t0d79  MCP89 SMBus\n\t0d7a  MCP89 Co-Processor\n\t0d7b  MCP89 Memory Controller\n\t0d7d  MCP89 Ethernet\n\t0d80  MCP89 LPC Bridge\n\t0d85  MCP89 SATA Controller\n\t0d88  MCP89 SATA Controller (AHCI mode)\n\t0d89  MCP89 SATA Controller (AHCI mode)\n\t0d8d  MCP89 SATA Controller (RAID mode)\n\t0d94  MCP89 High Definition Audio\n\t0d9c  MCP89 OHCI USB 1.1 Controller\n\t0d9d  MCP89 EHCI USB 2.0 Controller\n\t0dc0  GF106 [GeForce GT 440]\n\t0dc4  GF106 [GeForce GTS 450]\n\t0dc5  GF106 [GeForce GTS 450 OEM]\n\t0dc6  GF106 [GeForce GTS 450 OEM]\n\t0dcd  GF106M [GeForce GT 555M]\n\t0dce  GF106M [GeForce GT 555M]\n\t0dd1  GF106M [GeForce GTX 460M]\n\t\t1558 8687  CLEVO/KAPOK W860CU\n\t0dd2  GF106M [GeForce GT 445M]\n\t0dd3  GF106M [GeForce GT 435M]\n\t0dd6  GF106M [GeForce GT 550M]\n\t0dd8  GF106GL [Quadro 2000]\n\t\t10de 0914  Quadro 2000D\n\t0dda  GF106GLM [Quadro 2000M]\n\t0de0  GF108 [GeForce GT 440]\n\t0de1  GF108 [GeForce GT 430]\n\t\t3842 1430  GeForce GT 430\n\t0de2  GF108 [GeForce GT 420]\n\t0de3  GF108M [GeForce GT 635M]\n\t0de4  GF108 [GeForce GT 520]\n\t0de5  GF108 [GeForce GT 530]\n\t0de7  GF108 [GeForce GT 610]\n\t0de8  GF108M [GeForce GT 620M]\n\t0de9  GF108M [GeForce GT 620M/630M/635M/640M LE]\n\t\t1025 0692  GeForce GT 620M\n\t\t1025 0725  GeForce GT 620M\n\t\t1025 0728  GeForce GT 620M\n\t\t1025 072b  GeForce GT 620M\n\t\t1025 072e  GeForce GT 620M\n\t\t1025 0753  GeForce GT 620M\n\t\t1025 0754  GeForce GT 620M\n\t\t17aa 3977  GeForce GT 640M LE\n\t\t1b0a 20c6  GeForce GT 630M\n\t\t1b0a 2210  GeForce GT 635M\n\t0dea  GF108M [GeForce 610M]\n\t\t17aa 365a  GeForce 615\n\t\t17aa 365b  GeForce 615\n\t\t17aa 365e  GeForce 615\n\t\t17aa 3660  GeForce 615\n\t\t17aa 366c  GeForce 615\n\t0deb  GF108M [GeForce GT 555M]\n\t0dec  GF108M [GeForce GT 525M]\n\t0ded  GF108M [GeForce GT 520M]\n\t0dee  GF108M [GeForce GT 415M]\n\t0def  GF108M [NVS 5400M]\n\t0df0  GF108M [GeForce GT 425M]\n\t0df1  GF108M [GeForce GT 420M]\n\t0df2  GF108M [GeForce GT 435M]\n\t0df3  GF108M [GeForce GT 420M]\n\t0df4  GF108M [GeForce GT 540M]\n\t\t152d 0952  GeForce GT 630M\n\t\t152d 0953  GeForce GT 630M\n\t0df5  GF108M [GeForce GT 525M]\n\t0df6  GF108M [GeForce GT 550M]\n\t0df7  GF108M [GeForce GT 520M]\n\t0df8  GF108GL [Quadro 600]\n\t0df9  GF108GLM [Quadro 500M]\n\t0dfa  GF108GLM [Quadro 1000M]\n\t0dfc  GF108GLM [NVS 5200M]\n\t0e08  GF119 HDMI Audio Controller\n\t\t1043 83a0  ENGT520 SILENT\n# 1024MB with passive cooling (heatsink)\n\t\t10b0 104a  Gainward GeForce GT 610\n\t0e09  GF110 High Definition Audio Controller\n\t0e0a  GK104 HDMI Audio Controller\n\t0e0b  GK106 HDMI Audio Controller\n\t0e0c  GF114 HDMI Audio Controller\n\t0e0f  GK208 HDMI/DP Audio Controller\n\t0e12  TegraK1 PCIe x4 Bridge\n\t0e13  TegraK1 PCIe x1 Bridge\n\t0e1a  GK110 High Definition Audio Controller\n\t0e1b  GK107 HDMI Audio Controller\n\t\t103c 197b  ZBook 15\n\t\t1043 8428  GTX650-DC-1GD5\n\t0e1c  Tegra3+ PCIe x4 Bridge\n\t0e1d  Tegra3+ PCIe x2 Bridge\n\t0e22  GF104 [GeForce GTX 460]\n\t\t1462 2322  N460GTX Cyclone 1GD5/OC\n\t0e23  GF104 [GeForce GTX 460 SE]\n\t0e24  GF104 [GeForce GTX 460 OEM]\n\t0e30  GF104M [GeForce GTX 470M]\n\t0e31  GF104M [GeForce GTX 485M]\n\t0e3a  GF104GLM [Quadro 3000M]\n\t0e3b  GF104GLM [Quadro 4000M]\n\t0f00  GF108 [GeForce GT 630]\n\t0f01  GF108 [GeForce GT 620]\n\t0f02  GF108 [GeForce GT 730]\n\t0f03  GF108 [GeForce GT 610]\n\t0f06  GF108 [GeForce GT 730]\n\t0fa0  GK11x [GK11x_FPGA]\n\t0fa5  GK11x\n\t0fa7  GK11x [Tegra on x86 (PEATRANS)]\n\t0fae  Tegra X1 PCIe x4 Root Complex\n\t0faf  Tegra X1 PCIe x1 Root Complex\n\t0fb0  GM200 High Definition Audio\n\t0fb8  GP108 High Definition Audio Controller\n\t0fb9  GP107GL High Definition Audio Controller\n\t0fba  GM206 High Definition Audio Controller\n\t0fbb  GM204 High Definition Audio Controller\n\t0fbc  GM107 High Definition Audio Controller [GeForce 940MX]\n\t0fc0  GK107 [GeForce GT 640 OEM]\n\t0fc1  GK107 [GeForce GT 640]\n\t0fc2  GK107 [GeForce GT 630 OEM]\n\t0fc4  GK107 [D14P1-15]\n\t0fc5  GK107 [GeForce GT 1030]\n\t0fc6  GK107 [GeForce GTX 650]\n\t\t1043 8428  GTX650-DC-1GD5\n\t0fc8  GK107 [GeForce GT 740]\n\t0fc9  GK107 [GeForce GT 730]\n\t0fcb  GK107 [EXK107]\n\t0fcc  GK107 [GeForce GT 720]\n\t0fcd  GK107M [GeForce GT 755M]\n\t0fce  GK107M [GeForce GT 640M LE]\n\t0fcf  GK107 [GEN3 ESI]\n\t0fd0  GK107 [NB1G]\n\t0fd1  GK107M [GeForce GT 650M]\n\t\t1043 1597  GeForce GT 650M\n\t\t1043 15a7  GeForce GT 650M\n\t\t1043 2103  N56VZ\n\t\t1043 2105  GeForce GT 650M\n\t\t1043 2141  GeForce GT 650M\n\t0fd2  GK107M [GeForce GT 640M]\n\t\t1028 054f  GeForce GT 640M\n\t\t1028 055f  GeForce GT 640M\n\t\t1028 0595  GeForce GT 640M LE\n\t\t1028 05b2  GeForce GT 640M LE\n\t0fd3  GK107M [GeForce GT 640M LE]\n\t0fd4  GK107M [GeForce GTX 660M]\n\t0fd5  GK107M [GeForce GT 650M Mac Edition]\n\t0fd6  GK107M [N13P-GS-W]\n\t0fd7  GK107 [GK107-GTX]\n\t0fd8  GK107M [GeForce GT 640M Mac Edition]\n\t0fd9  GK107M [GeForce GT 645M]\n\t0fda  GK107 [GK107-ES-A1]\n\t0fdb  GK107 [GK107-ESP-A1]\n\t0fdc  GK107 [GK107-INT22-A1]\n\t0fdd  GK107 [GK107-INT11-A1]\n\t0fde  GK107 [GK107-ES-KA-E1]\n\t0fdf  GK107M [GeForce GT 740M]\n\t0fe0  GK107M [GeForce GTX 660M Mac Edition]\n\t0fe1  GK107M [GeForce GT 730M]\n\t0fe2  GK107M [GeForce GT 745M]\n\t0fe3  GK107M [GeForce GT 745M]\n\t\t103c 2b16  GeForce GT 745A\n\t\t17aa 3675  GeForce GT 745A\n\t0fe4  GK107M [GeForce GT 750M]\n\t0fe5  GK107 [GeForce K340 USM]\n\t0fe6  GK107 [GRID K1 NVS USM]\n# GRID K1 USM\n\t0fe7  GK107GL [GRID K100 vGPU]\n\t\t10de 101e  GRID K100\n\t0fe8  GK107M [N14P-GS]\n\t0fe9  GK107M [GeForce GT 750M Mac Edition]\n\t0fea  GK107M [GeForce GT 755M Mac Edition]\n\t0fec  GK107M [GeForce 710A]\n\t0fed  GK107M [GeForce 820M]\n\t0fee  GK107M [GeForce 810M]\n\t0fef  GK107GL [GRID K340]\n\t0ff0  GK107 [NB1Q]\n\t0ff1  GK107 [NVS 1000]\n\t0ff2  GK107GL [GRID K1]\n\t0ff3  GK107GL [Quadro K420]\n\t0ff5  GK107GL [GRID K1 Tesla USM]\n\t0ff6  GK107GLM [Quadro K1100M]\n\t\t103c 197b  ZBook 15\n# GRID K1 Quadro USM\n\t0ff7  GK107GL [GRID K140Q vGPU]\n\t\t10de 1037  GRID K140Q\n\t0ff8  GK107GLM [Quadro K500M]\n\t0ff9  GK107GL [Quadro K2000D]\n\t0ffa  GK107GL [Quadro K600]\n\t0ffb  GK107GLM [Quadro K2000M]\n\t0ffc  GK107GLM [Quadro K1000M]\n\t0ffd  GK107 [NVS 510]\n\t0ffe  GK107GL [Quadro K2000]\n\t0fff  GK107GL [Quadro 410]\n\t1001  GK110B [GeForce GTX TITAN Z]\n\t1003  GK110 [GeForce GTX Titan LE]\n\t1004  GK110 [GeForce GTX 780]\n\t\t3842 0784  GK110B [GeForce GTX 780 SC w/ ACX Cooler]\n\t\t3842 1784  GK110B [GeForce GTX 780 Dual FTW w/ ACX Cooler]\n\t\t3842 1788  GK110B [GeForce GTX 780 Dual Classified w/ ACX Cooler]\n\t1005  GK110 [GeForce GTX TITAN]\n\t\t1043 8451  GTXTITAN-6GD5\n# Reference Model\n\t\t10de 1035  GeForce GTX Titan\n# 06G-P4-2790-KR\n\t\t3842 2790  GeForce GTX Titan\n# 06G-P4-2791-KR\n\t\t3842 2791  GeForce GTX Titan SC\n# 06G-P4-2793-KR\n\t\t3842 2793  GeForce GTX Titan SC Signature\n# 06G-P4-2794-KR\n\t\t3842 2794  GeForce GTX Titan SC Hydro Copper\n# 06G-P4-2795-KR\n\t\t3842 2795  GeForce GTX Titan SC Hydro Copper Signature\n\t1007  GK110 [GeForce GTX 780 Rev. 2]\n\t1008  GK110 [GeForce GTX 780 Ti 6GB]\n\t100a  GK110B [GeForce GTX 780 Ti]\n\t100c  GK110B [GeForce GTX TITAN Black]\n\t101e  GK110GL [Tesla K20X]\n\t101f  GK110GL [Tesla K20]\n\t1020  GK110GL [Tesla K20X]\n\t1021  GK110GL [Tesla K20Xm]\n\t1022  GK110GL [Tesla K20c]\n\t1023  GK110BGL [Tesla K40m]\n\t\t10de 097e  12GB Computational Accelerator\n\t1024  GK180GL [Tesla K40c]\n\t1026  GK110GL [Tesla K20s]\n\t1027  GK110BGL [Tesla K40st]\n\t1028  GK110GL [Tesla K20m]\n\t1029  GK110BGL [Tesla K40s]\n\t102a  GK110BGL [Tesla K40t]\n\t102d  GK210GL [Tesla K80]\n\t102e  GK110BGL [Tesla K40d]\n\t102f  GK110BGL [Tesla Stella Solo]\n\t103a  GK110GL [Quadro K6000]\n\t103c  GK110GL [Quadro K5200]\n\t103f  GK110BGL [Tesla Stella SXM]\n\t1040  GF119 [GeForce GT 520]\n\t\t1043 83a0  ENGT520 SILENT\n\t1042  GF119 [GeForce 510]\n\t1045  GF119\n\t1048  GF119 [GeForce 605]\n\t1049  GF119 [GeForce GT 620 OEM]\n\t104a  GF119 [GeForce GT 610]\n# 1024MB with passive cooling (heatsink)\n\t\t10b0 104a  Gainward GeForce GT 610\n\t104b  GF119 [GeForce GT 625 OEM]\n\t104c  GF119 [GeForce GT 705]\n\t104d  GF119 [GeForce GT 710]\n\t1050  GF119M [GeForce GT 520M]\n\t1051  GF119M [GeForce GT 520MX]\n\t1052  GF119M [GeForce GT 520M]\n\t1054  GF119M [GeForce 410M]\n\t1055  GF119M [GeForce 410M]\n\t1056  GF119M [NVS 4200M]\n\t1057  GF119M [Quadro NVS 4200M]\n\t1058  GF119M [GeForce 610M]\n\t\t103c 2aed  GeForce 610\n\t\t103c 2af1  GeForce 610\n\t\t1043 10ac  GeForce GT 610M\n\t\t1043 10bc  GeForce GT 610M\n\t\t1043 1652  GeForce GT 610M\n\t\t17aa 367a  GeForce 610M\n\t\t17aa 3682  GeForce 800A\n\t\t17aa 3687  GeForce 800A\n\t\t17aa 3692  GeForce 705A\n\t\t17aa 3695  GeForce 800A\n\t\t17aa a117  GeForce 610M\n\t1059  GF119M [GeForce 610M]\n\t105a  GF119M [GeForce 610M]\n\t\t1043 2111  GeForce GT 610M\n\t\t1043 2112  GeForce GT 610M\n\t105b  GF119M [GeForce 705M]\n\t\t103c 2afb  GeForce 705A\n\t\t17aa 309d  GeForce 705A\n\t\t17aa 30b1  GeForce 800A\n\t\t17aa 30f3  GeForce 705A\n\t\t17aa 36a1  GeForce 800A\n\t107c  GF119 [NVS 315]\n\t107d  GF119 [NVS 310]\n\t1080  GF110 [GeForce GTX 580]\n\t1081  GF110 [GeForce GTX 570]\n\t\t10de 087e  Leadtek WinFast GTX 570\n\t1082  GF110 [GeForce GTX 560 Ti OEM]\n\t1084  GF110 [GeForce GTX 560 OEM]\n\t1086  GF110 [GeForce GTX 570 Rev. 2]\n\t1087  GF110 [GeForce GTX 560 Ti 448 Cores]\n\t1088  GF110 [GeForce GTX 590]\n\t1089  GF110 [GeForce GTX 580 Rev. 2]\n\t108b  GF110 [GeForce GTX 580]\n\t108e  GF110GL [Tesla C2090]\n\t1091  GF110GL [Tesla M2090]\n\t\t10de 088e  Tesla X2090\n\t\t10de 0891  Tesla X2090\n\t\t10de 0974  Tesla X2090\n\t\t10de 098d  Tesla X2090\n\t1094  GF110GL [Tesla M2075]\n\t\t10de 0888  Tesla M2075\n\t1096  GF110GL [Tesla C2050 / C2075]\n\t\t10de 0910  Tesla C2075\n\t\t10de 0911  Tesla C2050\n\t109a  GF100GLM [Quadro 5010M]\n\t109b  GF100GL [Quadro 7000]\n\t\t10de 0918  Quadro 7000\n\t10c0  GT218 [GeForce 9300 GS Rev. 2]\n\t10c3  GT218 [GeForce 8400 GS Rev. 3]\n\t10c5  GT218 [GeForce 405]\n\t10d8  GT218 [NVS 300]\n\t10e5  Parker PCIe x4 Root Complex\n\t10e6  Parker PCIe x1 Root Complex\n\t10ef  GP102 HDMI Audio Controller\n\t10f0  GP104 High Definition Audio Controller\n\t10f1  GP106 High Definition Audio Controller\n\t\t1043 85b6  DUAL-GTX1060-O6G [GeForce GTX 1060 6GB Dual]\n\t10f7  TU102 High Definition Audio Controller\n\t10f8  TU104 HD Audio Controller\n\t10f9  TU106 High Definition Audio Controller\n\t\t1043 8673  TURBO-RTX2070-8G\n\t1140  GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M]\n\t\t1019 0799  GeForce 820M\n\t\t1019 999f  GeForce GT 720M\n\t\t1025 0600  GeForce GT 620M\n\t\t1025 0606  GeForce GT 620M\n\t\t1025 064a  GeForce GT 620M\n\t\t1025 064c  GeForce GT 620M\n\t\t1025 067a  GeForce GT 620M\n\t\t1025 0680  GeForce GT 620M\n\t\t1025 0686  GeForce 710M\n\t\t1025 0689  GeForce 710M\n\t\t1025 068b  GeForce 710M\n\t\t1025 068d  GeForce 710M\n\t\t1025 068e  GeForce 710M\n\t\t1025 0691  GeForce 710M\n\t\t1025 0692  GeForce GT 620M\n\t\t1025 0694  GeForce GT 620M\n\t\t1025 0702  GeForce GT 620M\n\t\t1025 0719  GeForce GT 620M\n\t\t1025 0725  GeForce GT 620M\n\t\t1025 0728  GeForce GT 620M\n\t\t1025 072b  GeForce GT 620M\n\t\t1025 072e  GeForce GT 620M\n\t\t1025 0732  GeForce GT 620M\n\t\t1025 0763  GeForce GT 720M\n\t\t1025 0773  GeForce 710M\n\t\t1025 0774  GeForce 710M\n\t\t1025 0776  GeForce GT 720M\n\t\t1025 077a  GeForce 710M\n\t\t1025 077b  GeForce 710M\n\t\t1025 077c  GeForce 710M\n\t\t1025 077d  GeForce 710M\n\t\t1025 077e  GeForce 710M\n\t\t1025 077f  GeForce 710M\n\t\t1025 0781  GeForce GT 720M\n\t\t1025 0798  GeForce GT 720M\n\t\t1025 0799  GeForce GT 720M\n\t\t1025 079b  GeForce GT 720M\n\t\t1025 079c  GeForce GT 720M\n\t\t1025 0807  GeForce GT 720M\n\t\t1025 0821  GeForce GT 720M\n\t\t1025 0823  GeForce GT 720M\n\t\t1025 0830  GeForce GT 720M\n\t\t1025 0833  GeForce GT 720M\n\t\t1025 0837  GeForce GT 720M\n\t\t1025 083e  GeForce 820M\n\t\t1025 0841  GeForce 710M\n\t\t1025 0854  GeForce 820M\n\t\t1025 0855  GeForce 820M\n\t\t1025 0856  GeForce 820M\n\t\t1025 0857  GeForce 820M\n\t\t1025 0858  GeForce 820M\n\t\t1025 0863  GeForce 820M\n\t\t1025 0868  GeForce 820M\n\t\t1025 0869  GeForce 810M\n\t\t1025 0873  GeForce 820M\n\t\t1025 0878  GeForce 820M\n\t\t1025 087b  GeForce 820M\n\t\t1025 087c  GeForce 810M\n\t\t1025 0881  GeForce 820M\n\t\t1025 088a  GeForce 820M\n\t\t1025 089b  GeForce 820M\n\t\t1025 090f  GeForce 820M\n\t\t1025 0921  GeForce 820M\n\t\t1025 092e  GeForce 810M\n\t\t1025 092f  GeForce 820M\n\t\t1025 0932  GeForce 820M\n\t\t1025 093a  GeForce 820M\n\t\t1025 093c  GeForce 820M\n\t\t1025 093f  GeForce 820M\n\t\t1025 0941  GeForce 820M\n\t\t1025 0945  GeForce 820M\n\t\t1025 0954  GeForce 820M\n\t\t1025 0965  GeForce 820M\n\t\t1028 054d  GeForce GT 630M\n\t\t1028 054e  GeForce GT 630M\n\t\t1028 0554  GeForce GT 620M\n\t\t1028 0557  GeForce GT 620M\n\t\t1028 0562  GeForce GT 625M\n\t\t1028 0565  GeForce GT 630M\n\t\t1028 0568  GeForce GT 630M\n\t\t1028 0590  GeForce GT 630M\n\t\t1028 0592  GeForce GT 625M\n\t\t1028 0594  GeForce GT 625M\n\t\t1028 0595  GeForce GT 625M\n\t\t1028 05a2  GeForce GT 625M\n\t\t1028 05b1  GeForce GT 625M\n\t\t1028 05b3  GeForce GT 625M\n\t\t1028 05da  GeForce GT 630M\n\t\t1028 05de  GeForce GT 720M\n\t\t1028 05e0  GeForce GT 720M\n\t\t1028 05e8  GeForce GT 630M\n\t\t1028 05f4  GeForce GT 720M\n\t\t1028 060f  GeForce GT 720M\n\t\t1028 064e  GeForce 820M\n\t\t1028 0652  GeForce 820M\n\t\t1028 0653  GeForce 820M\n\t\t1028 0655  GeForce 820M\n\t\t1028 065e  GeForce 820M\n\t\t1028 0662  GeForce 820M\n\t\t1028 068d  GeForce 820M\n\t\t1028 06ad  GeForce 820M\n\t\t1028 06ae  GeForce 820M\n\t\t1028 06af  GeForce 820M\n\t\t1028 06b0  GeForce 820M\n\t\t1028 06c0  GeForce 820M\n\t\t1028 06c1  GeForce 820M\n\t\t103c 18ef  GeForce GT 630M\n\t\t103c 18f9  GeForce GT 630M\n\t\t103c 18fb  GeForce GT 630M\n\t\t103c 18fd  GeForce GT 630M\n\t\t103c 18ff  GeForce GT 630M\n\t\t103c 218a  GeForce 820M\n\t\t103c 21bb  GeForce 820M\n\t\t103c 21bc  GeForce 820M\n\t\t103c 220e  GeForce 820M\n\t\t103c 2210  GeForce 820M\n\t\t103c 2212  GeForce 820M\n\t\t103c 2214  GeForce 820M\n\t\t103c 2218  GeForce 820M\n\t\t103c 225b  GeForce 820M\n\t\t103c 225d  GeForce 820M\n\t\t103c 226d  GeForce 820M\n\t\t103c 226f  GeForce 820M\n\t\t103c 22d2  GeForce 820M\n\t\t103c 22d9  GeForce 820M\n\t\t103c 2335  GeForce 820M\n\t\t103c 2337  GeForce 820M\n\t\t103c 2aef  GeForce GT 720A\n\t\t103c 2af9  GeForce 710A\n\t\t1043 10dd  NVS 5200M\n\t\t1043 10ed  NVS 5200M\n\t\t1043 11fd  GeForce GT 720M\n\t\t1043 124d  GeForce GT 720M\n\t\t1043 126d  GeForce GT 720M\n\t\t1043 131d  GeForce GT 720M\n\t\t1043 13fd  GeForce GT 720M\n\t\t1043 14c7  GeForce GT 720M\n\t\t1043 1507  GeForce GT 620M\n\t\t1043 15ad  GeForce 820M\n\t\t1043 15ed  GeForce 820M\n\t\t1043 160d  GeForce 820M\n\t\t1043 163d  GeForce 820M\n\t\t1043 166d  GeForce 820M\n\t\t1043 16cd  GeForce 820M\n\t\t1043 16dd  GeForce 820M\n\t\t1043 170d  GeForce 820M\n\t\t1043 176d  GeForce 820M\n\t\t1043 178d  GeForce 820M\n\t\t1043 179d  GeForce 820M\n\t\t1043 17dd  GeForce 820M\n\t\t1043 2132  GeForce GT 620M\n\t\t1043 2136  NVS 5200M\n\t\t1043 21ba  GeForce GT 720M\n\t\t1043 21fa  GeForce GT 720M\n\t\t1043 220a  GeForce GT 720M\n\t\t1043 221a  GeForce GT 720M\n\t\t1043 223a  GeForce GT 710M\n\t\t1043 224a  GeForce GT 710M\n\t\t1043 227a  GeForce 820M\n\t\t1043 228a  GeForce 820M\n\t\t1043 232a  GeForce 820M\n\t\t1043 233a  GeForce 820M\n\t\t1043 235a  GeForce 820M\n\t\t1043 236a  GeForce 820M\n\t\t1043 238a  GeForce 820M\n\t\t1043 8595  GeForce GT 720M\n\t\t1043 85ea  GeForce GT 720M\n\t\t1043 85eb  GeForce 820M\n\t\t1043 85ec  GeForce 820M\n\t\t1043 85ee  GeForce GT 720M\n\t\t1043 85f3  GeForce 820M\n\t\t1043 860e  GeForce 820M\n\t\t1043 861a  GeForce 820M\n\t\t1043 861b  GeForce 820M\n\t\t1043 8628  GeForce 820M\n\t\t1043 8643  GeForce 820M\n\t\t1043 864c  GeForce 820M\n\t\t1043 8652  GeForce 820M\n\t\t1043 8660  GeForce 820M\n\t\t1043 8661  GeForce 820M\n\t\t105b 0dac  GeForce GT 720M\n\t\t105b 0dad  GeForce GT 720M\n\t\t105b 0ef3  GeForce GT 720M\n\t\t1072 152d  GeForce GT 720M\n\t\t10cf 17f5  GeForce GT 720M\n\t\t1179 fa01  GeForce 710M\n\t\t1179 fa02  GeForce 710M\n\t\t1179 fa03  GeForce 710M\n\t\t1179 fa05  GeForce 710M\n\t\t1179 fa11  GeForce 710M\n\t\t1179 fa13  GeForce 710M\n\t\t1179 fa18  GeForce 710M\n\t\t1179 fa19  GeForce 710M\n\t\t1179 fa21  GeForce 710M\n\t\t1179 fa23  GeForce 710M\n\t\t1179 fa2a  GeForce 710M\n\t\t1179 fa32  GeForce 710M\n\t\t1179 fa33  GeForce 710M\n\t\t1179 fa36  GeForce 710M\n\t\t1179 fa38  GeForce 710M\n\t\t1179 fa42  GeForce 710M\n\t\t1179 fa43  GeForce 710M\n\t\t1179 fa45  GeForce 710M\n\t\t1179 fa47  GeForce 710M\n\t\t1179 fa49  GeForce 710M\n\t\t1179 fa58  GeForce 710M\n\t\t1179 fa59  GeForce 710M\n\t\t1179 fa88  GeForce 710M\n\t\t1179 fa89  GeForce 710M\n\t\t144d b092  GeForce GT 620M\n\t\t144d c0d5  GeForce GT 630M\n\t\t144d c0d7  GeForce GT 620M\n\t\t144d c0e2  NVS 5200M\n\t\t144d c0e3  NVS 5200M\n\t\t144d c0e4  NVS 5200M\n\t\t144d c10d  GeForce 820M\n\t\t144d c652  GeForce GT 620M on NP300E5C series laptop\n\t\t144d c709  GeForce 710M\n\t\t144d c711  GeForce 710M\n\t\t144d c736  GeForce 710M\n\t\t144d c737  GeForce 710M\n\t\t144d c745  GeForce 820M\n\t\t144d c750  GeForce 820M\n\t\t1462 10b8  GeForce GT 710M\n\t\t1462 10e9  GeForce GT 720M\n\t\t1462 1116  GeForce 820M\n\t\t1462 aa33  GeForce 720M\n\t\t1462 aaa2  GeForce GT 720M\n\t\t1462 aaa3  GeForce 820M\n\t\t1462 acb2  GeForce GT 720M\n\t\t1462 acc1  GeForce GT 720M\n\t\t1462 ae61  GeForce 720M\n\t\t1462 ae65  GeForce GT 720M\n\t\t1462 ae6a  GeForce 820M\n\t\t1462 ae71  GeForce GT 720M\n\t\t14c0 0083  GeForce 820M\n\t\t152d 0926  GeForce 620M\n\t\t152d 0982  GeForce GT 630M\n\t\t152d 0983  GeForce GT 630M\n\t\t152d 1005  GeForce GT 820M\n\t\t152d 1012  GeForce 710M\n\t\t152d 1019  GeForce 820M\n\t\t152d 1030  GeForce GT 630M\n\t\t152d 1055  GeForce 710M\n\t\t152d 1067  GeForce GT 720M\n\t\t152d 1072  GeForce GT 720M\n\t\t152d 1086  GeForce 820M\n\t\t152d 1092  GeForce 820M\n\t\t17aa 2200  NVS 5200M\n\t\t17aa 2213  GeForce GT 720M\n\t\t17aa 2220  GeForce GT 720M\n\t\t17aa 309c  GeForce GT 720A\n\t\t17aa 30b4  GeForce 820A\n\t\t17aa 30b7  GeForce 720A\n\t\t17aa 30e4  GeForce 820A\n\t\t17aa 361b  GeForce 820A\n\t\t17aa 361c  GeForce 820A\n\t\t17aa 361d  GeForce 820A\n\t\t17aa 3656  GeForce GT 620M\n\t\t17aa 365a  GeForce 705M\n\t\t17aa 365e  GeForce 800M\n\t\t17aa 3661  GeForce 820A\n\t\t17aa 366c  GeForce 800M\n\t\t17aa 3685  GeForce 800M\n\t\t17aa 3686  GeForce 800M\n\t\t17aa 3687  GeForce 705A\n\t\t17aa 3696  GeForce 820A\n\t\t17aa 369b  GeForce 820A\n\t\t17aa 369c  GeForce 820A\n\t\t17aa 369d  GeForce 820A\n\t\t17aa 369e  GeForce 820A\n\t\t17aa 36a9  GeForce 820A\n\t\t17aa 36af  GeForce 820A\n\t\t17aa 36b0  GeForce 820A\n\t\t17aa 36b6  GeForce 820A\n\t\t17aa 3800  GeForce GT 720M\n\t\t17aa 3801  GeForce GT 720M\n\t\t17aa 3802  GeForce GT 720M\n\t\t17aa 3803  GeForce GT 720M\n\t\t17aa 3804  GeForce GT 720M\n\t\t17aa 3806  GeForce GT 720M\n\t\t17aa 3808  GeForce GT 720M\n\t\t17aa 380d  GeForce 820M\n\t\t17aa 380e  GeForce 820M\n\t\t17aa 380f  GeForce 820M\n\t\t17aa 3811  GeForce 820M\n\t\t17aa 3812  GeForce 820M\n\t\t17aa 3813  GeForce 820M\n\t\t17aa 3816  GeForce 820M\n\t\t17aa 3818  GeForce 820M\n\t\t17aa 381a  GeForce 820M\n\t\t17aa 381c  GeForce 820M\n\t\t17aa 3901  GeForce 610M / GT 620M\n\t\t17aa 3902  GeForce 710M\n\t\t17aa 3903  GeForce 610M/710M\n\t\t17aa 3904  GeForce GT 620M/625M\n\t\t17aa 3905  GeForce GT 720M\n\t\t17aa 3907  GeForce 820M\n\t\t17aa 3910  GeForce 720M\n\t\t17aa 3912  GeForce 720M\n\t\t17aa 3913  GeForce 820M\n\t\t17aa 3915  GeForce 820M\n\t\t17aa 3977  GeForce GT 720M\n\t\t17aa 3983  GeForce 610M\n\t\t17aa 5001  GeForce 610M\n\t\t17aa 5003  GeForce GT 720M\n\t\t17aa 5005  GeForce 705M\n\t\t17aa 500d  GeForce GT 620M\n\t\t17aa 5014  GeForce 710M\n\t\t17aa 5017  GeForce 710M\n\t\t17aa 5019  GeForce 710M\n\t\t17aa 501a  GeForce 710M\n\t\t17aa 501f  GeForce GT 720M\n\t\t17aa 5025  GeForce 710M\n\t\t17aa 5027  GeForce 710M\n\t\t17aa 502a  GeForce 710M\n\t\t17aa 502b  GeForce GT 720M\n\t\t17aa 502d  GeForce 710M\n\t\t17aa 502e  GeForce GT 720M\n\t\t17aa 502f  GeForce GT 720M\n\t\t17aa 5030  GeForce 705M\n\t\t17aa 5031  GeForce 705M\n\t\t17aa 5032  GeForce 820M\n\t\t17aa 5033  GeForce 820M\n\t\t17aa 503e  GeForce 710M\n\t\t17aa 503f  GeForce 820M\n\t\t17aa 5040  GeForce 820M\n\t\t1854 0177  GeForce 710M\n\t\t1854 0180  GeForce 710M\n\t\t1854 0190  GeForce GT 720M\n\t\t1854 0192  GeForce GT 720M\n\t\t1854 0224  GeForce 820M\n\t\t1b0a 01c0  GeForce 820M\n\t\t1b0a 20dd  GeForce GT 620M\n\t\t1b0a 20df  GeForce GT 620M\n\t\t1b0a 210e  GeForce 820M\n\t\t1b0a 2202  GeForce GT 720M\n\t\t1b0a 90d7  GeForce 820M\n\t\t1b0a 90dd  GeForce 820M\n\t\t1b50 5530  GeForce 820M\n\t\t1b6c 5531  GeForce GT 720M\n\t\t1bab 0106  GeForce 820M\n\t\t1d05 1013  GeForce 810M\n\t1180  GK104 [GeForce GTX 680]\n\t\t1043 83f1  GTX680-DC2-2GD5\n\t\t3842 3682  GeForce GTX 680 Mac Edition\n\t1182  GK104 [GeForce GTX 760 Ti]\n\t1183  GK104 [GeForce GTX 660 Ti]\n\t1184  GK104 [GeForce GTX 770]\n\t1185  GK104 [GeForce GTX 660 OEM]\n\t\t10de 106f  GK104 [GeForce GTX 760 OEM]\n\t1186  GK104 [GeForce GTX 660 Ti]\n\t1187  GK104 [GeForce GTX 760]\n\t1188  GK104 [GeForce GTX 690]\n\t1189  GK104 [GeForce GTX 670]\n\t\t10de 1074  GK104 [GeForce GTX 760 Ti OEM]\n\t118a  GK104GL [GRID K520]\n\t118b  GK104GL [GRID K2 GeForce USM]\n\t118c  GK104 [GRID K2 NVS USM]\n# GRID K2 USM\n\t118d  GK104GL [GRID K200 vGPU]\n\t\t10de 101d  GRID K200\n\t118e  GK104 [GeForce GTX 760 OEM]\n\t118f  GK104GL [Tesla K10]\n\t1191  GK104 [GeForce GTX 760 Rev. 2]\n\t1193  GK104 [GeForce GTX 760 Ti OEM]\n\t1194  GK104GL [Tesla K8]\n\t1195  GK104 [GeForce GTX 660 Rev. 2]\n\t1198  GK104M [GeForce GTX 880M]\n\t1199  GK104M [GeForce GTX 870M]\n\t119a  GK104M [GeForce GTX 860M]\n\t119d  GK104M [GeForce GTX 775M Mac Edition]\n\t119e  GK104M [GeForce GTX 780M Mac Edition]\n\t119f  GK104M [GeForce GTX 780M]\n\t11a0  GK104M [GeForce GTX 680M]\n\t11a1  GK104M [GeForce GTX 670MX]\n\t11a2  GK104M [GeForce GTX 675MX Mac Edition]\n\t11a3  GK104M [GeForce GTX 680MX]\n\t\t106b 010d  iMac 13,2\n\t11a4  GK104 [GK104-ESA]\n\t11a5  GK104 [GK104-ESA]\n\t11a7  GK104M [GeForce GTX 675MX]\n\t11a8  GK104GLM [Quadro K5100M]\n\t11a9  GK104M [GeForce GTX 870M]\n\t11aa  GK104 [GK104-INT]\n\t11ac  GK104 [GK104-CS]\n\t11af  GK104GLM [GRID IceCube]\n\t11b0  GK104GL [GRID K240Q / K260Q vGPU]\n\t\t10de 101a  GRID K240Q\n\t\t10de 101b  GRID K260Q\n\t11b1  GK104GL [GRID K2 Tesla USM]\n\t11b4  GK104GL [Quadro K4200]\n\t11b6  GK104GLM [Quadro K3100M]\n\t11b7  GK104GLM [Quadro K4100M]\n\t11b8  GK104GLM [Quadro K5100M]\n\t11b9  GK104GLM\n\t11ba  GK104GL [Quadro K5000]\n\t11bb  GK104GL [Quadro 4100]\n\t11bc  GK104GLM [Quadro K5000M]\n\t11bd  GK104GLM [Quadro K4000M]\n\t11be  GK104GLM [Quadro K3000M]\n\t11bf  GK104GL [GRID K2]\n\t11c0  GK106 [GeForce GTX 660]\n\t11c1  GK106 [D14P2-30]\n\t11c2  GK106 [GeForce GTX 650 Ti Boost]\n\t\t1043 845b  GeForce GTX 650 Ti Boost DirectCU II OC\n\t\t1462 2874  GeForce GTX 650 Ti Boost TwinFrozr II OC\n\t\t1569 11c2  GeForce GTX 650 Ti Boost OC\n\t\t19da 1281  GeForce GTX 650 Ti Boost OC\n\t\t3842 3657  GeForce GTX 650 Ti Boost\n\t\t3842 3658  GeForce GTX 650 Ti Boost Superclocked\n\t11c3  GK106 [GeForce GTX 650 Ti OEM]\n\t\t10de 1030  GeForce GTX 650 Ti OEM\n\t11c4  GK106 [GeForce GTX 645 OEM]\n\t11c5  GK106 [GeForce GT 740]\n\t11c6  GK106 [GeForce GTX 650 Ti]\n\t11c7  GK106 [GeForce GTX 750 Ti]\n\t11c8  GK106 [GeForce GTX 650 OEM]\n\t11cb  GK106 [GeForce GT 740]\n\t11d0  GK106 [GK106-INT353]\n\t11d1  GK106 [GK106-INT343]\n\t11d2  GK106 [GK106-INT232]\n\t11d3  GK106 [GK106-ES]\n\t11e0  GK106M [GeForce GTX 770M]\n\t11e1  GK106M [GeForce GTX 765M]\n\t11e2  GK106M [GeForce GTX 765M]\n\t11e3  GK106M [GeForce GTX 760M]\n\t\t17aa 3683  GeForce GTX 760A\n\t11e7  GK106M\n\t11fa  GK106GL [Quadro K4000]\n\t11fc  GK106GLM [Quadro K2100M]\n\t11ff  GK106 [NB1Q]\n\t1200  GF114 [GeForce GTX 560 Ti]\n\t1201  GF114 [GeForce GTX 560]\n\t1202  GF114 [GeForce GTX 560 Ti OEM]\n\t1203  GF114 [GeForce GTX 460 SE v2]\n\t1205  GF114 [GeForce GTX 460 v2]\n\t1206  GF114 [GeForce GTX 555]\n\t1207  GF114 [GeForce GT 645 OEM]\n\t1208  GF114 [GeForce GTX 560 SE]\n\t1210  GF114M [GeForce GTX 570M]\n\t1211  GF114M [GeForce GTX 580M]\n\t1212  GF114M [GeForce GTX 675M]\n\t1213  GF114M [GeForce GTX 670M]\n\t1241  GF116 [GeForce GT 545 OEM]\n\t1243  GF116 [GeForce GT 545]\n\t1244  GF116 [GeForce GTX 550 Ti]\n\t1245  GF116 [GeForce GTS 450 Rev. 2]\n\t1246  GF116M [GeForce GT 550M]\n\t1247  GF116M [GeForce GT 555M/635M]\n\t\t1043 1752  GeForce GT 555M\n\t\t1043 2050  GeForce GT 555M\n\t\t1043 2051  GeForce GT 555M\n\t\t1043 212a  GeForce GT 635M\n\t\t1043 212b  GeForce GT 635M\n\t\t1043 212c  GeForce GT 635M\n\t\t152d 0930  GeForce GT 635M\n\t1248  GF116M [GeForce GT 555M/635M]\n\t\t152d 0930  GeForce GT 635M\n\t\t17c0 10e7  GeForce GT 555M\n\t\t17c0 10e8  GeForce GT 555M\n\t\t17c0 10ea  GeForce GT 555M\n\t\t1854 0890  GeForce GT 555M\n\t\t1854 0891  GeForce GT 555M\n\t\t1854 1795  GeForce GT 555M\n\t\t1854 1796  GeForce GT 555M\n\t\t1854 3005  GeForce GT 555M\n\t1249  GF116 [GeForce GTS 450 Rev. 3]\n\t124b  GF116 [GeForce GT 640 OEM]\n\t124d  GF116M [GeForce GT 555M/635M]\n\t\t1028 0491  GeForce GT 555M\n\t\t1028 0570  GeForce GT 555M\n\t\t1028 0571  GeForce GT 555M\n\t\t1462 108d  GeForce GT 555M\n\t\t1462 10cc  GeForce GT 635M\n\t1251  GF116M [GeForce GT 560M]\n\t1280  GK208 [GeForce GT 635]\n\t1281  GK208 [GeForce GT 710]\n\t1282  GK208 [GeForce GT 640 Rev. 2]\n\t1283  GK208 [D15M2-10]\n\t1284  GK208 [GeForce GT 630 Rev. 2]\n\t1285  GK208 [GK208-100]\n\t1286  GK208 [GeForce GT 720]\n\t1287  GK208B [GeForce GT 730]\n\t1288  GK208B [GeForce GT 720]\n\t1289  GK208 [GeForce GT 710]\n\t128a  GK208B\n\t128b  GK208B [GeForce GT 710]\n\t\t1043 85f7  GT710-SL-1GD5\n\t\t1043 8770  GT710-4H-SL-2GD5\n\t128c  GK208B\n\t1290  GK208M [GeForce GT 730M]\n\t\t103c 2afa  GeForce GT 730A\n\t\t103c 2b04  GeForce GT 730A\n\t\t1043 13ad  GeForce GT 730M\n\t\t1043 13cd  GeForce GT 730M\n\t1291  GK208M [GeForce GT 735M]\n\t1292  GK208M [GeForce GT 740M]\n\t\t17aa 3675  GeForce GT 740A\n\t\t17aa 367c  GeForce GT 740A\n\t\t17aa 3684  GeForce GT 740A\n\t1293  GK208M [GeForce GT 730M]\n\t1294  GK208M [GeForce GT 740M]\n\t1295  GK208M [GeForce 710M]\n\t\t103c 2b0d  GeForce 710A\n\t\t103c 2b0f  GeForce 710A\n\t\t103c 2b11  GeForce 710A\n\t\t103c 2b20  GeForce 810A\n\t\t103c 2b21  GeForce 810A\n\t\t103c 2b22  GeForce 810A\n\t\t17aa 367a  GeForce 805A\n\t\t17aa 367c  GeForce 710A\n\t1296  GK208M [GeForce 825M]\n\t1298  GK208M [GeForce GT 720M]\n\t1299  GK208BM [GeForce 920M]\n\t\t17aa 30bb  GeForce 920A\n\t\t17aa 30df  GeForce 920A\n\t\t17aa 36a7  GeForce 920A\n\t\t17aa 36af  GeForce 920M\n\t129a  GK208BM [GeForce 910M]\n\t12a0  GK208\n\t12ad  GK208 [GK208-ES]\n\t12ae  GK208 [GK208-CS1-C]\n\t12af  GK208 [GK208-INT]\n\t12b0  GK208 [GK208-CS-Q]\n\t12b1  GK208 [GK208 INT]\n\t12b9  GK208GLM [Quadro K610M]\n\t12ba  GK208GLM [Quadro K510M]\n\t130b  GK110 [Q12U-1]\n\t1340  GM108M [GeForce 830M]\n\t\t103c 2b2b  GeForce 830A\n\t1341  GM108M [GeForce 840M]\n\t\t17aa 3697  GeForce 840A\n\t\t17aa 3699  GeForce 840A\n\t\t17aa 369c  GeForce 840A\n\t1344  GM108M [GeForce 845M]\n\t1346  GM108M [GeForce 930M]\n\t1347  GM108M [GeForce 940M]\n\t1348  GM108M [GeForce 945M / 945A]\n\t1349  GM108M [GeForce 930M]\n\t134b  GM108M [GeForce 940MX]\n\t134d  GM108M [GeForce 940MX]\n\t\t17aa 2248  ThinkPad T570\n\t134e  GM108M [GeForce 930MX]\n\t134f  GM108M [GeForce 920MX]\n\t137a  GM108GLM [Quadro K620M / Quadro M500M]\n\t\t17aa 505a  Quadro M500M\n\t137b  GM108GLM [Quadro M520 Mobile]\n\t137d  GM108M [GeForce 940A]\n\t1380  GM107 [GeForce GTX 750 Ti]\n\t1381  GM107 [GeForce GTX 750]\n\t1382  GM107 [GeForce GTX 745]\n\t1389  GM107GL [GRID M30]\n\t1390  GM107M [GeForce 845M]\n\t1391  GM107M [GeForce GTX 850M]\n\t\t17aa 3697  GeForce GTX 850A\n\t\t17aa a125  GeForce GTX 850A\n\t1392  GM107M [GeForce GTX 860M]\n\t1393  GM107M [GeForce 840M]\n\t1398  GM107M [GeForce 845M]\n\t1399  GM107M [GeForce 945M]\n\t139a  GM107M [GeForce GTX 950M]\n\t\t17aa 362c  GeForce GTX 950A\n\t\t17aa 362f  GeForce GTX 950A\n\t\t17aa 363f  GeForce GTX 950A\n\t\t17aa 3640  GeForce GTX 950A\n\t\t17aa 3647  GeForce GTX 950A\n\t\t17aa 36b9  GeForce GTX 950A\n\t139b  GM107M [GeForce GTX 960M]\n\t\t1028 06e4  XPS 15 9550\n\t\t103c 2b4c  GeForce GTX 960A\n\t139c  GM107M [GeForce 940M]\n\t139d  GM107M [GeForce GTX 750 Ti]\n\t13ad  GM204 [GM107 INT52]\n\t13ae  GM204 [GM107 CS1]\n\t13b0  GM107GLM [Quadro M2000M]\n\t13b1  GM107GLM [Quadro M1000M]\n\t13b2  GM107GLM [Quadro M600M]\n\t13b3  GM107GLM [Quadro K2200M]\n\t13b4  GM107GLM [Quadro M620 Mobile]\n\t13b6  GM107GLM [Quadro M1200 Mobile]\n\t13b9  GM107GL [NVS 810]\n\t13ba  GM107GL [Quadro K2200]\n\t13bb  GM107GL [Quadro K620]\n\t13bc  GM107GL [Quadro K1200]\n\t13bd  GM107GL [Tesla M10]\n\t\t10de 110a  GRID M40\n\t\t10de 1160  Tesla M10\n\t\t10de 11d2  GRID M10-8Q\n\t13be  GM204 [GM107 CS1]\n\t13bf  GM204 [GM107 INT52]\n\t13c0  GM204 [GeForce GTX 980]\n\t\t1043 8504  GTX980-4GD5\n\t13c1  GM204\n\t13c2  GM204 [GeForce GTX 970]\n\t13c3  GM204\n\t13c4  GM204 [D17U-20]\n\t13d7  GM204M [GeForce GTX 980M]\n\t13d8  GM204M [GeForce GTX 960 OEM / 970M]\n\t13d9  GM204M [GeForce GTX 965M]\n\t13da  GM204M [GeForce GTX 980 Mobile]\n\t13e4  GM204 [Graphics Device ES-A]\n\t13e7  GM204GL [GeForce GTX 980 Engineering Sample]\n\t13f0  GM204GL [Quadro M5000]\n\t13f1  GM204GL [Quadro M4000]\n\t13f2  GM204GL [Tesla M60]\n\t\t10de 114d  GRID M60-1Q\n\t\t10de 114e  GRID M60-2Q\n\t\t10de 1150  GRID M60-8Q\n\t\t10de 11b0  GRID M60-4A\n\t13f3  GM204GL [Tesla M6]\n\t\t10de 1184  GRID M6-8Q\n\t13f8  GM204GLM [Quadro M5000M / M5000 SE]\n\t13f9  GM204GLM [Quadro M4000M]\n\t13fa  GM204GLM [Quadro M3000M]\n\t\t10de 11c9  Quadro M3000 SE\n\t13fb  GM204GLM [Quadro M5500]\n\t1401  GM206 [GeForce GTX 960]\n\t1402  GM206 [GeForce GTX 950]\n\t1404  GM206 [GeForce GTX 960 FAKE]\n\t1406  GM206 [GeForce GTX 960 OEM]\n\t1407  GM206 [GeForce GTX 750 v2]\n\t1427  GM206M [GeForce GTX 965M]\n\t\t103c 825b  OMEN-17-w001nv\n\t1430  GM206GL [Quadro M2000]\n\t1431  GM206GL [Tesla M4]\n\t1436  GM206GLM [Quadro M2200 Mobile]\n\t15c2  GP100 [CMP 100-100]\n\t15f0  GP100GL [Quadro GP100]\n\t15f1  GP100GL\n\t15f7  GP100GL [Tesla P100 PCIe 12GB]\n\t15f8  GP100GL [Tesla P100 PCIe 16GB]\n\t15f9  GP100GL [Tesla P100 SXM2 16GB]\n\t15fa  GP100GL [DGX Station / PH402 SKU 200]\n\t15fb  GP100GL [GP100 SKU 200]\n\t15fc  GP100GL [Tesla P100-DGXS-16GB]\n\t15ff  GP100GL [GP100 SKU 15ff]\n\t1617  GM204M [GeForce GTX 980M]\n\t1618  GM204M [GeForce GTX 970M]\n\t1619  GM204M [GeForce GTX 965M]\n\t161a  GM204M [GeForce GTX 980 Mobile]\n\t1667  GM204M [GeForce GTX 965M]\n\t1725  GP100\n\t172e  GP100\n\t172f  GP100\n\t174d  GM108M [GeForce MX130]\n\t174e  GM108M [GeForce MX110]\n\t1789  GM107GL [GRID M3-3020]\n\t179c  GM107 [GeForce 940MX]\n\t\t1025 1094  Acer Aspire E5-575G\n\t17c2  GM200 [GeForce GTX TITAN X]\n\t17c8  GM200 [GeForce GTX 980 Ti]\n\t17f0  GM200GL [Quadro M6000]\n\t\t10de 1141  VCA 6000\n\t17f1  GM200GL [Quadro M6000 24GB]\n\t17fd  GM200GL [Tesla M40]\n\t1ad0  Tegra PCIe x8 Endpoint\n\t1ad1  Tegra PCIe x4/x8 Endpoint/Root Complex\n\t1ad2  Tegra PCIe x1 Root Complex\n\t1ad3  Xavier SATA Controller\n\t1ad6  TU102 USB 3.1 Host Controller\n\t1ad7  TU102 USB Type-C UCSI Controller\n\t1ad8  TU104 USB 3.1 Host Controller\n\t1ad9  TU104 USB Type-C UCSI Controller\n\t1ada  TU106 USB 3.1 Host Controller\n\t\t1043 8673  TURBO-RTX2070-8G\n\t1adb  TU106 USB Type-C UCSI Controller\n\t\t1043 8673  TURBO-RTX2070-8G\n\t1aeb  TU116 High Definition Audio Controller\n\t1aec  TU116 USB 3.1 Host Controller\n\t1aed  TU116 USB Type-C UCSI Controller\n\t1aef  GA102 High Definition Audio Controller\n\t1af1  GA100 [A100 NVSwitch]\n\t1b00  GP102 [TITAN X Pascal]\n\t1b01  GP102 [GeForce GTX 1080 Ti 10GB]\n\t1b02  GP102 [TITAN Xp]\n\t1b04  GP102\n\t1b06  GP102 [GeForce GTX 1080 Ti]\n\t1b07  GP102 [P102-100]\n\t1b30  GP102GL [Quadro P6000]\n\t1b38  GP102GL [Tesla P40]\n\t1b39  GP102GL [Tesla P10]\n\t1b70  GP102GL\n\t1b78  GP102GL\n\t1b80  GP104 [GeForce GTX 1080]\n\t1b81  GP104 [GeForce GTX 1070]\n\t1b82  GP104 [GeForce GTX 1070 Ti]\n\t1b83  GP104 [GeForce GTX 1060 6GB]\n\t1b84  GP104 [GeForce GTX 1060 3GB]\n\t1b87  GP104 [P104-100]\n\t1ba0  GP104M [GeForce GTX 1080 Mobile]\n\t1ba1  GP104M [GeForce GTX 1070 Mobile]\n\t\t1458 1651  GeForce GTX 1070 Max-Q\n\t\t1462 11e8  GeForce GTX 1070 Max-Q\n\t\t1462 11e9  GeForce GTX 1070 Max-Q\n\t\t1558 9501  GeForce GTX 1070 Max-Q\n\t1ba2  GP104M [GeForce GTX 1070 Mobile]\n\t1ba9  GP104M\n\t1baa  GP104M\n\t1bad  GP104 [GeForce GTX 1070 Engineering Sample]\n\t1bb0  GP104GL [Quadro P5000]\n\t1bb1  GP104GL [Quadro P4000]\n\t1bb3  GP104GL [Tesla P4]\n\t1bb4  GP104GL [Tesla P6]\n\t1bb5  GP104GLM [Quadro P5200 Mobile]\n\t\t103c 842f  P5200 [Zbook 17 G5 mobile workstation]\n\t1bb6  GP104GLM [Quadro P5000 Mobile]\n\t1bb7  GP104GLM [Quadro P4000 Mobile]\n\t\t1462 11e9  Quadro P4000 Max-Q\n\t1bb8  GP104GLM [Quadro P3000 Mobile]\n\t1bb9  GP104GLM [Quadro P4200 Mobile]\n\t\t103c 842f  P4200 [Zbook 17 G5 mobile workstation]\n\t1bbb  GP104GLM [Quadro P3200 Mobile]\n\t\t103c 842f  P3200 [Zbook 17 G5 moble workstation]\n\t1bc7  GP104 [P104-101]\n\t1be0  GP104BM [GeForce GTX 1080 Mobile]\n\t\t1028 07c0  GeForce GTX 1080 Max-Q\n\t\t1458 355b  GeForce GTX 1080 Max-Q\n\t1be1  GP104BM [GeForce GTX 1070 Mobile]\n\t1c00  GP106\n\t1c01  GP106\n\t1c02  GP106 [GeForce GTX 1060 3GB]\n\t1c03  GP106 [GeForce GTX 1060 6GB]\n\t\t1043 85b6  DUAL-GTX1060-O6G [GeForce GTX 1060 6GB Dual]\n\t1c04  GP106 [GeForce GTX 1060 5GB]\n\t1c06  GP106 [GeForce GTX 1060 6GB Rev. 2]\n\t1c07  GP106 [P106-100]\n\t1c09  GP106 [P106-090]\n\t1c20  GP106M [GeForce GTX 1060 Mobile]\n\t\t17aa 39b9  GeForce GTX 1060 Max-Q 3GB\n\t1c21  GP106M [GeForce GTX 1050 Ti Mobile]\n\t1c22  GP106M [GeForce GTX 1050 Mobile]\n\t1c23  GP106M [GeForce GTX 1060 Mobile Rev. 2]\n\t\t1414 0020  GTX 1060 Mobile\n\t1c2d  GP106M\n\t1c30  GP106GL [Quadro P2000]\n\t1c31  GP106GL [Quadro P2200]\n\t1c35  GP106M [Quadro P2000 Mobile / DRIVE PX 2 AutoChauffeur]\n\t1c36  GP106 [P106M]\n\t1c60  GP106BM [GeForce GTX 1060 Mobile 6GB]\n\t\t103c 8390  GeForce GTX 1060 Max-Q 6GB\n\t1c61  GP106BM [GeForce GTX 1050 Ti Mobile]\n\t1c62  GP106BM [GeForce GTX 1050 Mobile]\n\t1c70  GP106GL\n\t1c81  GP107 [GeForce GTX 1050]\n\t1c82  GP107 [GeForce GTX 1050 Ti]\n\t\t1043 8613  PH-GTX1050TI-4G\n\t\t1458 3763  GV-N105TOC-4GD\n\t1c83  GP107 [GeForce GTX 1050 3GB]\n\t1c8c  GP107M [GeForce GTX 1050 Ti Mobile]\n\t1c8d  GP107M [GeForce GTX 1050 Mobile]\n\t1c8e  GP107M\n\t1c8f  GP107M [GeForce GTX 1050 Ti Max-Q]\n\t1c90  GP107M [GeForce MX150]\n\t1c91  GP107M [GeForce GTX 1050 3 GB Max-Q]\n\t1c92  GP107M [GeForce GTX 1050 Mobile]\n\t1c94  GP107M [GeForce MX350]\n\t1c96  GP107M [GeForce MX350]\n\t1ca7  GP107GL\n\t1ca8  GP107GL\n\t1caa  GP107GL\n\t1cb1  GP107GL [Quadro P1000]\n\t1cb2  GP107GL [Quadro P600]\n\t1cb3  GP107GL [Quadro P400]\n\t1cb6  GP107GL [Quadro P620]\n\t1cba  GP107GLM [Quadro P2000 Mobile]\n\t\t103c 842c  P2000 [Zbook 15 G5 mobile workstation]\n\t\t103c 842f  P2000 [Zbook 17 G5 mobile workstation]\n\t1cbb  GP107GLM [Quadro P1000 Mobile]\n\t\t103c 8429  P1000 [Zbook Studio G5 mobile workstation]\n\t\t103c 842c  P1000 [Zbook 15 G5 mobile workstation]\n\t\t103c 842f  P1000 [Zbook 17 G5 mobile workstation]\n\t\t103c 8451  P1000 [Zbook Studio x360 G5 mobile workstation]\n\t1cbc  GP107GLM [Quadro P600 Mobile]\n\t1cbd  GP107GLM [Quadro P620]\n\t1ccc  GP107BM [GeForce GTX 1050 Ti Mobile]\n\t1ccd  GP107BM [GeForce GTX 1050 Mobile]\n\t1cfa  GP107GL [Quadro P2000]\n\t1cfb  GP107GL [Quadro P1000]\n\t1d01  GP108 [GeForce GT 1030]\n\t1d02  GP108 [GeForce GT 1010]\n\t1d10  GP108M [GeForce MX150]\n\t\t17aa 225e  ThinkPad T480\n\t1d11  GP108M [GeForce MX230]\n\t1d12  GP108M [GeForce MX150]\n\t\t1d72 1701  Mi Notebook Pro [GeForce MX150]\n\t1d13  GP108M [GeForce MX250]\n\t1d16  GP108M [GeForce MX330]\n\t1d33  GP108GLM [Quadro P500 Mobile]\n\t1d34  GP108GLM [Quadro P520]\n\t1d52  GP108BM [GeForce MX250]\n\t1d56  GP108BM [GeForce MX330]\n\t1d81  GV100 [TITAN V]\n\t1d83  GV100 [CMP 100-200]\n\t1d84  GV100 [CMP 100-210]\n\t1db0  GV100GL [Tesla GV100 SXM2-16GB SKU 890]\n\t1db1  GV100GL [Tesla V100 SXM2 16GB]\n\t1db2  GV100GL [Tesla V100 DGXS 16GB]\n\t1db3  GV100GL [Tesla V100 FHHL 16GB]\n\t1db4  GV100GL [Tesla V100 PCIe 16GB]\n\t1db5  GV100GL [Tesla V100 SXM2 32GB]\n\t1db6  GV100GL [Tesla V100 PCIe 32GB]\n\t1db7  GV100GL [Tesla V100 DGXS 32GB]\n\t1db8  GV100GL [Tesla V100 SXM3 32GB]\n\t\t10de 131d  Tesla V100-SXM3-32GB-H\n\t1dba  GV100GL [Quadro GV100]\n\t\t10de 12eb  TITAN V CEO Edition\n\t1dbd  GV100GL [Tesla GV100 DGX1-V]\n\t1dbe  GV100 Engineering Sample\n\t1dc1  GV100 [CMP 100-200]\n\t1df0  GV100GL [Tesla PG500-216]\n\t1df2  GV100GL [Tesla PG503-216]\n\t1df4  GV100 [CMP 100-210]\n\t1df5  GV100GL [Tesla V100 SXM2 16GB]\n\t1df6  GV100GL [Tesla V100S PCIe 32GB]\n\t1e02  TU102 [TITAN RTX]\n\t1e03  TU102 [GeForce RTX 2080 Ti 12GB]\n\t1e04  TU102 [GeForce RTX 2080 Ti]\n\t1e07  TU102 [GeForce RTX 2080 Ti Rev. A]\n\t\t1462 3715  RTX 2080 Ti GAMING X TRIO\n\t1e09  TU102 [CMP 50HX]\n\t1e2d  TU102 [GeForce RTX 2080 Ti Engineering Sample]\n\t1e2e  TU102 [GeForce RTX 2080 Ti 12GB Engineering Sample]\n\t1e30  TU102GL [Quadro RTX 6000/8000]\n\t\t10de 129e  Quadro RTX 8000\n\t\t10de 12ba  Quadro RTX 6000\n\t1e35  TU102GL [Tesla T10]\n\t1e36  TU102GL [Quadro RTX 6000]\n\t1e37  TU102GL [Tesla T10 16GB / GRID RTX T10-2/T10-4/T10-8]\n\t\t10de 1304  Tesla T10 16GB\n\t\t10de 1347  GRID RTX T10-8\n\t\t10de 1348  GRID RTX T10-4\n\t\t10de 1349  GRID RTX T10-2\n\t\t10de 1370  Tesla T10 16GB\n\t\t10de 13a5  GRID RTX T10-8\n\t1e38  TU102GL [Tesla T40 24GB]\n\t1e3c  TU102GL\n\t1e3d  TU102GL\n\t1e3e  TU102GL\n\t1e78  TU102GL [Quadro RTX 6000/8000]\n\t\t10de 13d8  Quadro RTX 8000\n\t\t10de 13d9  Quadro RTX 6000\n\t1e81  TU104 [GeForce RTX 2080 SUPER]\n\t1e82  TU104 [GeForce RTX 2080]\n\t1e84  TU104 [GeForce RTX 2070 SUPER]\n\t1e87  TU104 [GeForce RTX 2080 Rev. A]\n\t1e89  TU104 [GeForce RTX 2060]\n\t1e90  TU104M [GeForce RTX 2080 Mobile]\n\t1e91  TU104M [GeForce RTX 2070 SUPER Mobile / Max-Q]\n\t1e93  TU104M [GeForce RTX 2080 SUPER Mobile / Max-Q]\n\t1eab  TU104M\n\t1eae  TU104M [GeForce GTX 2080 Engineering Sample]\n\t1eb0  TU104GL [Quadro RTX 5000]\n\t1eb1  TU104GL [Quadro RTX 4000]\n\t1eb4  TU104GL [T4G]\n\t1eb5  TU104GLM [Quadro RTX 5000 Mobile / Max-Q]\n\t1eb6  TU104GLM [Quadro RTX 4000 Mobile / Max-Q]\n\t1eb8  TU104GL [Tesla T4]\n\t1eb9  TU104GL\n\t1eba  TU104GL [PG189 SKU600]\n\t1ebe  TU104GL\n\t1ec2  TU104 [GeForce RTX 2070 SUPER]\n\t1ec7  TU104 [GeForce RTX 2070 SUPER]\n\t1ed0  TU104BM [GeForce RTX 2080 Mobile]\n\t1ed1  TU104BM [GeForce RTX 2070 SUPER Mobile / Max-Q]\n\t1ed3  TU104BM [GeForce RTX 2080 SUPER Mobile / Max-Q]\n\t1ef5  TU104GLM [Quadro RTX 5000 Mobile Refresh]\n\t1f02  TU106 [GeForce RTX 2070]\n\t\t1043 8673  TURBO RTX 2070\n\t1f03  TU106 [GeForce RTX 2060 12GB]\n\t1f04  TU106\n\t1f06  TU106 [GeForce RTX 2060 SUPER]\n\t1f07  TU106 [GeForce RTX 2070 Rev. A]\n\t1f08  TU106 [GeForce RTX 2060 Rev. A]\n\t1f09  TU106 [GeForce GTX 1660 SUPER]\n\t1f0a  TU106 [GeForce GTX 1650]\n\t1f0b  TU106 [CMP 40HX]\n\t1f10  TU106M [GeForce RTX 2070 Mobile]\n\t1f11  TU106M [GeForce RTX 2060 Mobile]\n\t1f12  TU106M [GeForce RTX 2060 Max-Q]\n\t1f14  TU106M [GeForce RTX 2070 Mobile / Max-Q Refresh]\n\t1f15  TU106M [GeForce RTX 2060 Mobile]\n\t1f2e  TU106M\n\t1f36  TU106GLM [Quadro RTX 3000 Mobile / Max-Q]\n\t1f42  TU106 [GeForce RTX 2060 SUPER]\n\t1f47  TU106 [GeForce RTX 2060 SUPER]\n\t1f50  TU106BM [GeForce RTX 2070 Mobile / Max-Q]\n\t1f51  TU106BM [GeForce RTX 2060 Mobile]\n\t1f54  TU106BM [GeForce RTX 2070 Mobile]\n\t1f55  TU106BM [GeForce RTX 2060 Mobile]\n\t1f76  TU106GLM [Quadro RTX 3000 Mobile Refresh]\n\t1f81  TU117\n\t1f82  TU117 [GeForce GTX 1650]\n\t1f83  TU117 [GeForce GTX 1630]\n\t1f91  TU117M [GeForce GTX 1650 Mobile / Max-Q]\n\t1f92  TU117M [GeForce GTX 1650 Mobile]\n\t1f94  TU117M [GeForce GTX 1650 Mobile]\n\t1f95  TU117M [GeForce GTX 1650 Ti Mobile]\n\t1f96  TU117M [GeForce GTX 1650 Mobile / Max-Q]\n\t1f97  TU117M [GeForce MX450]\n\t1f98  TU117M [GeForce MX450]\n\t1f99  TU117M [GeForce GTX 1650 Mobile / Max-Q]\n\t1f9c  TU117M [GeForce MX450]\n\t1f9d  TU117M [GeForce GTX 1650 Mobile / Max-Q]\n# via Lenovo 496.90\n\t1f9f  TU117M [GeForce MX550]\n\t1fa0  TU117M [GeForce MX550]\n\t1fa1  TU117M\n\t1fae  TU117GL\n\t1fb0  TU117GLM [Quadro T1000 Mobile]\n\t1fb1  TU117GL [T600]\n\t1fb2  TU117GLM [Quadro T400 Mobile]\n\t1fb6  TU117GLM [T600 Laptop GPU]\n\t\t1028 0b10  Precision 3571\n\t1fb7  TU117GLM [T550 Laptop GPU]\n\t1fb8  TU117GLM [Quadro T2000 Mobile / Max-Q]\n\t1fb9  TU117GLM [Quadro T1000 Mobile]\n\t1fba  TU117GLM [T600 Mobile]\n\t1fbb  TU117GLM [Quadro T500 Mobile]\n\t1fbc  TU117GLM [T1200 Laptop GPU]\n\t1fbf  TU117GL\n\t1fd9  TU117BM [GeForce GTX 1650 Mobile Refresh]\n\t1fdd  TU117BM [GeForce GTX 1650 Mobile Refresh]\n\t1ff0  TU117GL [T1000 8GB]\n\t1ff2  TU117GL [T400 4GB / T400E]\n\t1ff9  TU117GLM [Quadro T1000 Mobile]\n\t2080  GA100\n\t2081  GA100\n\t2082  GA100 [CMP 170HX]\n\t20b0  GA100 [A100 SXM4 40GB]\n\t20b1  GA100 [A100 PCIe 40GB]\n\t20b2  GA100 [A100 SXM4 80GB]\n\t20b3  GA100 [A100-SXM-64GB]\n\t20b4  GA100\n\t20b5  GA100 [A100 PCIe 80GB]\n\t20b6  GA100GL [PG506-232]\n\t20b7  GA100GL [A30 PCIe]\n\t20b8  GA100 [A100X]\n\t20b9  GA100 [A30X]\n\t20bb  GA100 [DRIVE A100 PROD]\n\t20bd  GA100 [A800 SXM4 40GB]\n\t20be  GA100 [GRID A100A]\n\t20bf  GA100 [GRID A100B]\n\t20c0  GA100 [Initial DevID]\n\t20c2  GA100 [CMP 170HX]\n\t20f0  GA100 [A100-PG506-207]\n\t20f1  GA100 [A100 PCIe 40GB]\n\t20f2  GA100 [A100-PG506-217]\n\t20f3  GA100 [A800-SXM4-80GB]\n\t20f5  GA100 [A800 80GB PCIe]\n\t20f6  GA100 [A800 40GB PCIe]\n\t20fd  GA100 [AX800 Converged Accelerator]\n\t20fe  GA100 [INT SKU]\n\t20ff  GA100\n\t2182  TU116 [GeForce GTX 1660 Ti]\n\t2183  TU116\n\t2184  TU116 [GeForce GTX 1660]\n\t2187  TU116 [GeForce GTX 1650 SUPER]\n\t2188  TU116 [GeForce GTX 1650]\n\t2189  TU116 [CMP 30HX]\n\t2191  TU116M [GeForce GTX 1660 Ti Mobile]\n\t2192  TU116M [GeForce GTX 1650 Ti Mobile]\n\t21ae  TU116GL\n\t21bf  TU116GL\n\t21c2  TU116\n\t21c3  TU116\n\t21c4  TU116 [GeForce GTX 1660 SUPER]\n\t21d1  TU116BM [GeForce GTX 1660 Ti Mobile]\n\t2200  GA102\n\t2203  GA102 [GeForce RTX 3090 Ti]\n\t2204  GA102 [GeForce RTX 3090]\n\t\t147d 10de  NVIDIA Geforce RTX 3090 Founders Edition\n\t2205  GA102 [GeForce RTX 3080 Ti 20GB]\n\t2206  GA102 [GeForce RTX 3080]\n\t\t10de 1467  GA102 [GeForce RTX 3080]\n\t\t10de 146d  GA102 [GeForce RTX 3080 20GB]\n\t\t1462 3892  RTX 3080 10GB GAMING X TRIO\n\t2207  GA102 [GeForce RTX 3070 Ti]\n\t2208  GA102 [GeForce RTX 3080 Ti]\n\t220a  GA102 [GeForce RTX 3080 12GB]\n\t220d  GA102 [CMP 90HX]\n\t2216  GA102 [GeForce RTX 3080 Lite Hash Rate]\n\t222b  GA102 [GeForce RTX 3090 Engineering Sample]\n\t222f  GA102 [GeForce RTX 3080 11GB / 12GB Engineering Sample]\n\t2230  GA102GL [RTX A6000]\n\t2231  GA102GL [RTX A5000]\n\t2232  GA102GL [RTX A4500]\n\t2233  GA102GL [RTX A5500]\n\t2235  GA102GL [A40]\n\t2236  GA102GL [A10]\n\t2237  GA102GL [A10G]\n\t2238  GA102GL [A10M]\n\t223f  GA102GL\n\t228b  GA104 High Definition Audio Controller\n\t228e  GA106 High Definition Audio Controller\n\t2291  GA107 High Definition Audio Controller\n\t2296  Tegra PCIe Endpoint Virtual Network\n\t229a  Orin PCIe x8 Root Complex\n\t229c  Orin PCIe x4/x8 Endpoint/Root Complex\n\t229e  Orin PCIe x1 Root Complex\n\t22a3  GH100 [H100 NVSwitch]\n\t22ba  AD102 High Definition Audio Controller\n\t22bc  AD104 High Definition Audio Controller\n\t22bd  AD106M High Definition Audio Controller\n\t22be  AD107 High Definition Audio Controller\n\t22d8  THOR Processor PCI Express Root Port\n\t22e6  THOR Processor PCI Express x16 Controller\n\t2302  GH100\n\t230e  GH100 [H20 NVL16]\n\t2313  GH100 [H100 CNX]\n\t2321  GH100 [H100L 94GB]\n\t2322  GH100 [H800 PCIe]\n\t2324  GH100 [H800]\n\t2328  GH100 [H20B]\n\t2329  GH100 [H20]\n\t232c  GH100 [H20 HBM3e]\n\t2330  GH100 [H100 SXM5 80GB]\n\t2331  GH100 [H100 PCIe]\n\t2335  GH100 [H200 SXM 141GB]\n\t2336  GH100 [H100]\n\t2337  GH100 [H100 SXM5 64GB]\n\t2338  GH100 [H100 SXM5 96GB]\n\t2339  GH100 [H100 SXM5 94GB]\n\t233a  GH100 [H800L 94GB]\n\t233b  GH100 [H200 NVL]\n\t233d  GH100 [H100 96GB]\n\t2342  GH100 [GH200 120GB / 480GB]\n\t2343  GH100\n\t2345  GH100 [GH100-88K-A1]\n\t2348  GH100 [GH200 144G HBM3e]\n\t237f  GH100 [Skinny Joe]\n\t23b0  GH100\n\t23f0  GH100\n\t2414  GA103 [GeForce RTX 3060 Ti]\n\t2420  GA103M [GeForce RTX 3080 Ti Mobile]\n\t2438  GA103GLM [RTX A5500 Laptop GPU]\n\t2460  GA103M [GeForce RTX 3080 Ti Laptop GPU]\n\t2480  GA104 [Reserved Dev ID A]\n\t2482  GA104 [GeForce RTX 3070 Ti]\n\t2483  GA104\n\t2484  GA104 [GeForce RTX 3070]\n\t\t10de 146b  GA104 [GeForce RTX 3070]\n\t\t10de 14ae  GA104 [GeForce RTX 3070 16GB]\n\t2486  GA104 [GeForce RTX 3060 Ti]\n\t\t19da 6630  ZT-A30610H-10M [RTX 3060 Ti Twin Edge OC]\n\t2487  GA104 [GeForce RTX 3060]\n\t2488  GA104 [GeForce RTX 3070 Lite Hash Rate]\n\t2489  GA104 [GeForce RTX 3060 Ti Lite Hash Rate]\n\t248a  GA104 [CMP 70HX]\n\t248c  GA104 [GeForce RTX 3070 Ti]\n\t248d  GA104 [GeForce RTX 3070]\n\t248e  GA104 [GeForce RTX 3060 Ti]\n\t249c  GA104M [GeForce RTX 3080 Mobile / Max-Q 8GB/16GB]\n\t249d  GA104M [GeForce RTX 3070 Mobile / Max-Q]\n\t249f  GA104M\n\t24a0  GA104 [Geforce RTX 3070 Ti Laptop GPU]\n\t24a4  GA104M\n\t24ac  GA104 [GeForce RTX 30x0 Engineering Sample]\n\t24ad  GA104 [GeForce RTX 3060 Engineering Sample]\n\t24af  GA104 [GeForce RTX 3070 Engineering Sample]\n\t24b0  GA104GL [RTX A4000]\n\t24b1  GA104GL [RTX A4000H]\n\t24b6  GA104GLM [RTX A5000 Mobile]\n\t24b7  GA104GLM [RTX A4000 Mobile]\n\t24b8  GA104GLM [RTX A3000 Mobile]\n\t24b9  GA104GLM [RTX A3000 12GB Laptop GPU]\n\t24ba  GA104GLM [RTX A4500 Laptop GPU]\n\t24bb  GA104GLM [RTX A3000 Laptop GPU]\n\t24bf  GA104 [GeForce RTX 3070 Engineering Sample]\n\t24c0  GA104 [Initial Dev ID B]\n\t24c7  GA104 [GeForce RTX 3060 8GB]\n\t24c8  GA104 [GeForce RTX 3070 GDDR6X]\n\t24c9  GA104 [GeForce RTX 3060 Ti GDDR6X]\n\t24dc  GA104M [GeForce RTX 3080 Mobile / Max-Q 8GB/16GB]\n\t24dd  GA104M [GeForce RTX 3070 Mobile / Max-Q]\n\t24df  GA104M\n\t24e0  GA104M [Geforce RTX 3070 Ti Laptop GPU]\n\t24fa  GA104 [RTX A4500 Embedded GPU ]\n\t2501  GA106 [GeForce RTX 3060]\n\t2503  GA106 [GeForce RTX 3060]\n\t2504  GA106 [GeForce RTX 3060 Lite Hash Rate]\n\t2505  GA106\n\t2507  GA106 [Geforce RTX 3050]\n\t2508  GA106 [GeForce RTX 3050 OEM]\n\t2509  GA106 [GeForce RTX 3060 12GB Rev. 2]\n\t2520  GA106M [GeForce RTX 3060 Mobile / Max-Q]\n\t2521  GA106M [GeForce RTX 3060 Laptop GPU]\n\t2523  GA106M [GeForce RTX 3050 Ti Mobile / Max-Q]\n\t252f  GA106 [GeForce RTX 3060 Engineering Sample]\n\t2531  GA106 [RTX A2000]\n\t2544  GA106 [GeForce RTX 3060]\n\t2560  GA106M [GeForce RTX 3060 Mobile / Max-Q]\n\t2561  GA106M [GeForce RTX 3060 Laptop GPU]\n\t2563  GA106M [GeForce RTX 3050 Ti Mobile / Max-Q]\n\t2571  GA106 [RTX A2000 12GB]\n\t2582  GA107 [GeForce RTX 3050 8GB]\n\t2583  GA107 [GeForce RTX 3050 4GB]\n\t2584  GA107 [GeForce RTX 3050 6GB]\n\t25a0  GA107M [GeForce RTX 3050 Ti Mobile]\n\t25a2  GA107M [GeForce RTX 3050 Mobile]\n\t25a3  GA107\n\t25a4  GA107\n\t25a5  GA107M [GeForce RTX 3050 Mobile]\n\t25a6  GA107M [GeForce MX570]\n\t25a7  GA107M [GeForce MX570]\n\t25a9  GA107M [GeForce RTX 2050]\n\t25aa  GA107M [GeForce MX570 A]\n\t25ab  GA107M [GeForce RTX 3050 4GB Laptop GPU]\n\t25ac  GA107BM / GN20-P0-R-K2 [GeForce RTX 3050 6GB Laptop GPU]\n\t25ad  GA107 [GeForce RTX 2050]\n\t25af  GA107 [GeForce RTX 3050 Engineering Sample]\n\t25b0  GA107GL [RTX A1000]\n\t25b2  GA107GL [RTX A400]\n\t25b5  GA107GLM [RTX A4 Mobile]\n# A16 - 25B6 10DE 14A9 / A2 - 25B6 10DE 157E\n\t25b6  GA107GL [A2 / A16]\n\t25b8  GA107GLM [RTX A2000 Mobile]\n\t25b9  GA107GLM [RTX A1000 Laptop GPU]\n\t25ba  GA107GLM [RTX A2000 8GB Laptop GPU]\n\t25bb  GA107GLM [RTX A500 Laptop GPU]\n\t25bc  GA107GLM [RTX A1000 6GB Laptop GPU]\n\t25bd  GA107GLM [RTX A500 Laptop GPU]\n\t25e0  GA107BM [GeForce RTX 3050 Ti Mobile]\n\t25e2  GA107BM [GeForce RTX 3050 Mobile]\n\t25e5  GA107BM [GeForce RTX 3050 Mobile]\n\t25ec  GA107BM / GN20-P0-R-K2 [GeForce RTX 3050 6GB Laptop GPU]\n\t25ed  GA107 [GeForce RTX 2050]\n\t25f9  GA107 [RTX A1000 Embedded GPU ]\n\t25fa  GA107 [RTX A2000 Embedded GPU]\n\t25fb  GA107 [RTX A500 Embedded GPU]\n\t2681  AD102 [RTX TITAN Ada]\n\t2684  AD102 [GeForce RTX 4090]\n\t2685  AD102 [GeForce RTX 4090 D]\n\t2689  AD102 [GeForce RTX 4070 Ti SUPER]\n\t26af  AD102 [PG137]\n\t26b1  AD102GL [RTX 6000 Ada Generation]\n\t26b2  AD102GL [RTX 5000 Ada Generation]\n\t26b3  AD102GL [RTX 5880 Ada Generation]\n\t26b5  AD102GL [L40]\n\t26b7  AD102GL [L20]\n\t26b8  AD102GL [L40G]\n\t26b9  AD102GL [L40S]\n\t26ba  AD102GL [L20]\n\t26bb  AD102GL [L30]\n\t26f5  AD102GL [L40 CNX]\n\t2702  AD103 [GeForce RTX 4080 SUPER]\n\t2703  AD103 [GeForce RTX 4080 SUPER]\n\t2704  AD103 [GeForce RTX 4080]\n\t2705  AD103 [GeForce RTX 4070 Ti SUPER]\n\t2709  AD103 [GeForce RTX 4070]\n\t2717  AD103M / GN21-X11 [GeForce RTX 4090 Laptop GPU]\n\t2730  AD103GLM [RTX 5000 Ada Generation Laptop GPU]\n\t2757  AD103M / GN21-X11 [GeForce RTX 4090 Laptop GPU]\n\t2770  AD103GLM [RTX 5000 Ada Generation Embedded GPU]\n\t2782  AD104 [GeForce RTX 4070 Ti]\n\t2783  AD104 [GeForce RTX 4070 SUPER]\n\t2785  AD104 [AC AD104 20GB]\n\t2786  AD104 [GeForce RTX 4070]\n\t2788  AD104 [GeForce RTX 4060 Ti]\n\t27a0  AD104M [GeForce RTX 4080 Max-Q / Mobile]\n\t27b0  AD104GL [RTX 4000 SFF Ada Generation]\n\t27b1  AD104GL [RTX 4500 Ada Generation]\n\t27b2  AD104GL [RTX 4000 Ada Generation]\n\t27b6  AD104GL [L2]\n\t27b7  AD104GL [L16]\n\t27b8  AD104GL [L4]\n\t27ba  AD104GLM [RTX 4000 Ada Generation Laptop GPU]\n\t27bb  AD104GLM [RTX 3500 Ada Generation Laptop GPU]\n\t27e0  AD104M [GeForce RTX 4080 Max-Q / Mobile]\n\t27fa  AD104GLM [RTX 4000 Ada Generation Embedded GPU]\n\t27fb  AD104GLM [RTX 3500 Ada Generation Embedded GPU]\n\t2803  AD106 [GeForce RTX 4060 Ti]\n\t2805  AD106 [GeForce RTX 4060 Ti 16GB]\n\t2808  AD106 [GeForce RTX 4060]\n\t2820  AD106M [GeForce RTX 4070 Max-Q / Mobile]\n\t2822  AD106M [GeForce RTX 3050 A Laptop GPU]\n\t2838  AD106GLM [RTX 3000 Ada Generation Laptop GPU]\n\t2860  AD106M [GeForce RTX 4070 Max-Q / Mobile]\n\t2878  AD106GLM [RTX 3000 Ada Generation Embedded GPU]\n\t2882  AD107 [GeForce RTX 4060]\n\t28a0  AD107M [GeForce RTX 4060 Max-Q / Mobile]\n\t28a1  AD107M [GeForce RTX 4050 Max-Q / Mobile]\n\t28a3  AD107M [GeForce RTX 3050 A Laptop GPU]\n\t28b0  AD107GL [RTX 2000 / 2000E Ada Generation]\n\t28b8  AD107GLM [RTX 2000 Ada Generation Laptop GPU]\n\t28b9  AD107GLM [RTX 1000 Ada Generation Laptop GPU]\n\t28ba  AD107GLM [RTX 500 Ada Generation Laptop GPU]\n\t28bb  AD107GLM [RTX 500 Ada Generation Laptop GPU]\n\t28e0  AD107M [GeForce RTX 4060 Max-Q / Mobile]\n\t28e1  AD107M [GeForce RTX 4050 Max-Q / Mobile]\n\t28e3  AD107M [GeForce RTX 3050 A Laptop GPU]\n\t28f8  AD107GLM [RTX 2000 Ada Generation Embedded GPU]\n\t2900  GB100 [Reserved Dev ID A]\n\t2901  GB100 [B200]\n\t2920  GB100 [TS4 / B100]\n\t2924  GB100\n\t2925  GB100\n\t293d  GB100\n\t2940  GB100 [Reserved Dev ID B]\n\t2941  GB100 [HGX GB200]\n\t297e  GB100\n\t2980  GB102 [Reserved Dev ID A]\n\t29bc  GB102 [B100]\n\t29c0  GB102 [Reserved Dev ID B]\n\t29f1  GB102\n\t2b00  TA1090SA [THOR]\n\t2b85  GB202 [GeForce RTX 5090]\n\t2b87  GB202 [GeForce RTX 5090 D]\n\t2bb1  GB202GL [RTX PRO 6000 Blackwell Workstation Edition]\n\t2bb3  GB202GL [RTX PRO 5000 Blackwell]\n\t2bb4  GB202GL [RTX PRO 6000 Blackwell Max-Q Workstation Edition]\n\t2bb5  GB202GL [RTX PRO 6000 Blackwell Server Edition]\n\t2c02  GB203 [GeForce RTX 5080]\n\t2c05  GB203 [GeForce RTX 5070 Ti]\n\t2c18  GB203M / GN22 [GeForce RTX 5090 Max-Q / Mobile]\n\t2c19  GB203M / GN22 [GeForce RTX 5080 Max-Q / Mobile]\n\t2c2c  GB6-256(N22W-ES-A1)\n\t2c31  GB203GL [RTX PRO 4500 Blackwell]\n\t2c34  GB203GL [RTX PRO 4000 Blackwell]\n\t2c38  GB203GLM [RTX PRO 5000 Blackwell Generation Laptop GPU]\n\t2c39  GB203GLM [RTX PRO 4000 Blackwell Generation Laptop GPU]\n\t2c58  GB203M / GN22-X11 [GeForce RTX 5090 Max-Q / Mobile]\n\t2c59  GB203M / GN22-X9 [GeForce RTX 5080 Max-Q / Mobile]\n\t2d04  GB206 [GeForce RTX 5060 Ti]\n\t2d05  GB206 [GeForce RTX 5060]\n\t2d18  GB206M [GeForce RTX 5070 Max-Q / Mobile]\n\t2d19  GB206M [GeForce RTX 5060 Max-Q / Mobile]\n\t2d2c  GB6-128 (N22Y-ES-A1)\n\t2d39  GB206GLM [RTX PRO 2000 Blackwell Generation Laptop GPU]\n\t2d58  GB206M [GeForce RTX 5070 Max-Q / Mobile]\n\t2d59  GB206M [GeForce RTX 5060 Max-Q / Mobile]\n\t2d83  GB207 [GeForce RTX 5050]\n\t2d98  GB207M [GeForce RTX 5050 Max-Q / Mobile]\n\t2db8  GB207GLM [RTX PRO 1000 Blackwell Generation Laptop GPU]\n\t2db9  GB207GLM [RTX PRO 500 Blackwell Generation Laptop GPU]\n\t2dd8  GB207M [GeForce RTX 5050 Max-Q / Mobile]\n\t2e2a  GB20B\n\t2f04  GB205 [GeForce RTX 5070]\n\t2f18  GB205M [GeForce RTX 5070 Ti Mobile]\n\t2f38  GB205GLM [RTX PRO 3000 Blackwell Generation Laptop GPU]\n\t2f58  GB205M [GeForce RTX 5070 Ti Mobile]\n\t31c0  GB110\n\t3340  GB120\n10df  Emulex Corporation\n\t0720  OneConnect NIC (Skyhawk)\n\t\t103c 1934  FlexFabric 20Gb 2-port 650M Adapter\n\t\t103c 1935  FlexFabric 20Gb 2-port 650FLB Adapter\n\t\t103c 21d4  StoreFabric CN1200E 10Gb Converged Network Adapter\n\t\t103c 220a  FlexFabric 10Gb 2-port 556FLR-SFP+ Adapter\n\t\t103c 803f  Ethernet 10Gb 2-port 557SFP+ Adapter\n\t\t103c 8144  FlexFabric 10GB 2-port 556FLR-T Adapter\n\t\t17aa 1056  ThinkServer OCm14102-UX-L AnyFabric\n\t\t17aa 1057  ThinkServer OCm14104-UX-L AnyFabric\n\t\t17aa 1059  ThinkServer OCm14104-UT-L AnyFabric\n\t\t17aa 4014  ThinkServer OCm14102-NX-L AnyFabric\n\t0722  OneConnect iSCSI Initiator (Skyhawk)\n\t0723  OneConnect iSCSI Initiator + Target (Skyhawk)\n\t0724  OneConnect FCoE Initiator (Skyhawk)\n\t0728  OneConnect NIC (Skyhawk-VF)\n\t072a  OneConnect iSCSI Initiator (Skyhawk-VF)\n\t072b  OneConnect iSCSI Initiator + Target (Skyhawk-VF)\n\t072c  OneConnect FCoE Initiator (Skyhawk-VF)\n\t1ae5  LP6000 Fibre Channel Host Adapter\n\te100  Proteus-X: LightPulse IOV Fibre Channel Host Adapter\n\te131  LightPulse 8Gb/s PCIe Shared I/O Fibre Channel Adapter\n\te180  Proteus-X: LightPulse IOV Fibre Channel Host Adapter\n\te200  LPe15000/LPe16000 Series 8Gb/16Gb Fibre Channel Adapter\n\t\t1014 03f1  PCIe2 2-Port 16Gb Fibre Channel Adapter for POWER (FC EL5B; CCIN 577F)\n\t\t1014 04e3  PCIe3 4-Port 10GbE SR Adapter for POWER (FC EN15/EN16; CCIN 2CE3)\n\t\t1014 04e4  PCIe3 4-Port 10GbE SFP+ Adapter for POWER (FC EN18; CCIN 2CE4)\n\t\t10df e280  LPe16002B-M6 2-Port 16Gb Fibre Channel Adapter\n\t\t10df e281  LPe16000B-M6 1-Port 16Gb Fibre Channel Adapter\n\t\t10df e282  Flex System FC5054 4-port 16Gb FC Adapter\n\te208  LightPulse 16Gb Fibre Channel Host Adapter (Lancer-VF)\n\te220  OneConnect NIC (Lancer)\n\t\t17aa 1054  ThinkServer LPm16002B-M6-L AnyFabric\n\t\t17aa 1055  ThinkServer LPm16004B-M8-L AnyFabric\n\te240  OneConnect iSCSI Initiator (Lancer)\n\te260  OneConnect FCoE Initiator (Lancer)\n\te268  OneConnect 10Gb FCoE Converged Network Adapter (Lancer-VF)\n\te300  LPe31000/LPe32000 Series 16Gb/32Gb Fibre Channel Adapter\n\t\t1014 0614  PCIe3 4-Port 16Gb Fibre Channel Adapter for POWER (FC EN1C/EN1D; CCIN 578E)\n\t\t1014 0615  PCIe3 2-Port 32Gb Fibre Channel Adapter for POWER (FC EN1A/EN1B; CCIN 578F)\n\t\t1014 06a0  PCIe3 2-Port 16Gb Fibre Channel Adapter for POWER (FC EN1L/EN1M; CCIN 2CFC)\n\t\t10df e300  LPe32002-M2 2-Port 32Gb Fibre Channel Adapter\n\t\t10df e301  LPe32000-M2 1-Port 32Gb Fibre Channel Adapter\n\t\t10df e310  LPe31002-M6 2-Port 16Gb Fibre Channel Adapter\n\t\t10df e311  LPe31000-M6 1-Port 16Gb Fibre Channel Adapter\n\t\t10df e312  LPe31004-M6 4-Port 16Gb Fibre Channel Adapter\n\t\t10df e320  LPe32002-M2-D 2-Port 32Gb Fibre Channel Adapter\n\t\t10df e321  LPe32000-M2-D 1-Port 32Gb Fibre Channel Adapter\n\t\t10df e322  LPe31002-M6-D 2-Port 16Gb Fibre Channel Adapter\n\t\t10df e323  LPe31000-M6-D 1-Port 16Gb Fibre Channel Adapter\n\t\t10df e324  LPm32002-D 2-Port 32Gb Fibre Channel Mezz Card\n\t\t10df e325  LPm31002-D 2-Port 16Gb Fibre Channel Mezz Card\n\t\t10df e330  LPe32002-M2-L 2-Port 32Gb PCIe Fibre Channel Adapter\n\t\t10df e331  LPe32000-M2-L 1-Port 32Gb PCIe Fibre Channel Adapter\n\t\t10df e332  LPe31002-M6-L 2-Port 16Gb PCIe Fibre Channel Adapter\n\t\t10df e333  LPe31000-M6-L 1-Port 16Gb PCIe Fibre Channel Adapter\n\t\t1590 0201  StoreFabric SN1600E 1-Port 32Gb Fibre Channel Adapter\n\t\t1590 0202  StoreFabric SN1600E 2-Port 32Gb Fibre Channel Adapter\n\t\t1590 0213  StoreFabric SN1200E 1-Port 16Gb Fibre Channel Adapter\n\t\t1590 0214  StoreFabric SN1200E 2-Port 16Gb Fibre Channel Adapter\n\t\t1590 022e  Synergy 5330C 2-Port 32Gb Fibre Channel Mezz Card\n\t\t193d 1060  NIC-FC730i-Mb-2P\n\tf011  Saturn: LightPulse Fibre Channel Host Adapter\n\tf015  Saturn: LightPulse Fibre Channel Host Adapter\n\tf085  LP850 Fibre Channel Host Adapter\n\tf095  LP952 Fibre Channel Host Adapter\n\tf098  LP982 Fibre Channel Host Adapter\n\tf0a1  Thor LightPulse Fibre Channel Host Adapter\n\tf0a5  Thor LightPulse Fibre Channel Host Adapter\n\tf0b5  Viper LightPulse Fibre Channel Host Adapter\n\tf0d1  Helios LightPulse Fibre Channel Host Adapter\n\tf0d5  Helios LightPulse Fibre Channel Host Adapter\n\tf0e1  Zephyr LightPulse Fibre Channel Host Adapter\n\tf0e5  Zephyr LightPulse Fibre Channel Host Adapter\n\tf0f5  Neptune LightPulse Fibre Channel Host Adapter\n\tf100  LPe12000 Series 8Gb Fibre Channel Adapter\n\t\t1014 038a  8Gb PCI Express Dual Port FC Adapter for POWER\n\t\t103c 3282  8Gb Dual-port PCI-e FC HBA\n\t\t10df f140  LPe12000-M8-L 1-Port 8Gb PCIe Fibre Channel Adapter\n\t\t10df f141  LPe12002-M8-L 2-Port 8Gb PCIe Fibre Channel Adapter\n\tf111  Saturn-X LightPulse Fibre Channel Host Adapter\n\tf112  Saturn-X LightPulse Fibre Channel Host Adapter\n\tf180  LPSe12002 EmulexSecure Fibre Channel Adapter\n\tf400  LPe35000/LPe36000 Series 32Gb/64Gb Fibre Channel Adapter\n\t\t10df f401  LPe35000-M2 1-Port 32Gb Fibre Channel Adapter\n\t\t10df f402  LPe35002-M2 2-Port 32Gb Fibre Channel Adapter\n\t\t10df f403  LPe36000-M64 1-Port 64Gb Fibre Channel Adapter\n\t\t10df f404  LPe36002-M64 2-Port 64Gb Fibre Channel Adapter\n\t\t10df f405  LPe35004-M2 4-Port 32Gb Fibre Channel Adapter\n\t\t10df f406  LPe35004-X6 4-Port Fibre Channel Adapter\n\t\t10df f410  LPe35002-M2-D 2-Port 32Gb Fibre Channel Adapter\n\t\t10df f411  LPe35000-M2-D 1-Port 32Gb Fibre Channel Adapter\n\t\t10df f418  LPe35000-M2-L 1-Port 32Gb PCIe Fibre Channel Adapter\n\t\t10df f419  LPe35002-M2-L 2-Port 32Gb PCIe Fibre Channel Adapter\n\t\t10df f421  LPe36002-M2-L 2-Port 64Gb PCIe Fibre Channel Adapter\n\t\t10df f422  LPe36002-M64-D 2-Port 64Gb Fibre Channel Adapter\n\t\t1590 02d5  StoreFabric SN1610E 1-Port 32Gb Fibre Channel Adapter\n\t\t1590 02d6  StoreFabric SN1610E 2-Port 32Gb Fibre Channel Adapter\n\tf500  LPe37000/LPe38000 Series 32Gb/64Gb Fibre Channel Adapter\n\t\t1014 06c1  PCIe4 4-Port 32Gb Fibre Channel Adapter for POWER (FC EN1L/EN1M; CCIN 2CFC)\n\t\t1014 06c2  PCIe4 2-Port 64Gb Fibre Channel Adapter for POWER (FC EN1N/EN1P; CCIN 2CFD)\n\t\t1590 0454  Synergy 5331C 32Gb Fibre Channel Host Bus Adapter\n\tf600  LPe37100S/LPe38100S Series 32Gb/64Gb Fibre Channel Adapter\n\tf700  LP7000 Fibre Channel Host Adapter\n\tf701  LP7000 Fibre Channel Host Adapter Alternate ID (JX1:2-3, JX2:1-2)\n\tf800  LP8000 Fibre Channel Host Adapter\n\tf801  LP8000 Fibre Channel Host Adapter Alternate ID (JX1:2-3, JX2:1-2)\n\tf900  LP9000 Fibre Channel Host Adapter\n\tf901  LP9000 Fibre Channel Host Adapter Alternate ID (JX1:2-3, JX2:1-2)\n\tf980  LP9802 Fibre Channel Host Adapter\n\tf981  LP9802 Fibre Channel Host Adapter Alternate ID\n\tf982  LP9802 Fibre Channel Host Adapter Alternate ID\n\tfa00  Thor-X LightPulse Fibre Channel Host Adapter\n\tfb00  Viper LightPulse Fibre Channel Host Adapter\n\tfc00  Thor-X LightPulse Fibre Channel Host Adapter\n\t\t10df fc00  LP10000 LightPulse Fibre Channel Host Adapter\n\tfc10  Helios-X LightPulse Fibre Channel Host Adapter\n\tfc20  Zephyr-X LightPulse Fibre Channel Host Adapter\n\tfc40  Saturn-X: LightPulse Fibre Channel Host Adapter\n\tfc50  Proteus-X: LightPulse IOV Fibre Channel Host Adapter\n\tfd00  Helios-X LightPulse Fibre Channel Host Adapter\n# Also IBM FC 5759 / FC 1910 for POWER\n\t\t10df fd02  LightPulse LP11002 Dual-port 4Gigabit PCI Fibre Channel Adapter\n\tfd11  Helios-X LightPulse Fibre Channel Host Adapter\n\tfd12  Helios-X LightPulse Fibre Channel Host Adapter\n\tfe00  Zephyr-X LightPulse Fibre Channel Host Adapter\n\tfe05  Zephyr-X: LightPulse FCoE Adapter\n\tfe11  Zephyr-X LightPulse Fibre Channel Host Adapter\n\tfe12  Zephyr-X LightPulse FCoE Adapter\n\tff00  Neptune LightPulse Fibre Channel Host Adapter\n10e0  Integrated Micro Solutions Inc.\n\t5026  IMS5026/27/28\n\t5027  IMS5027\n\t5028  IMS5028\n\t8849  IMS8849\n\t8853  IMS8853\n\t9128  IMS9128 [Twin turbo 128]\n10e1  Tekram Technology Co.,Ltd.\n\t0391  TRM-S1040\n\t\t10e1 0391  DC-315U SCSI-3 Host Adapter\n\t690c  DC-690c\n\tdc29  DC-290\n10e2  Aptix Corporation\n10e3  Tundra Semiconductor Corp.\n\t0000  CA91C042 [Universe]\n\t0108  Tsi108 Host Bridge for Single PowerPC\n\t0148  Tsi148 [Tempe]\n\t\t1775 1100  VR11 Single Board Computer\n\t0860  CA91C860 [QSpan]\n\t0862  CA91C862A [QSpan-II]\n\t8111  Tsi381 PCIe to PCI Bridge\n\t8113  89HPEB383 PCIe-to-PCI Bridge\n\t8260  CA91L8200B [Dual PCI PowerSpan II]\n\t8261  CA91L8260B [Single PCI PowerSpan II]\n\ta108  Tsi109 Host Bridge for Dual PowerPC\n10e4  Tandem Computers\n\t8029  Realtek 8029 Network Card\n10e5  Micro Industries Corporation\n10e6  Gainbery Computer Products Inc.\n10e7  Vadem\n10e8  Applied Micro Circuits Corp.\n\t1072  INES GPIB-PCI (AMCC5920 based)\n\t2011  Q-Motion Video Capture/Edit board\n\t4750  S5930 [Matchmaker]\n\t5920  S5920\n\t801d  Roper Scientific PCI TAXI interface\n\t8043  LANai4.x [Myrinet LANai interface chip]\n\t8062  S5933_PARASTATION\n\t807d  S5933 [Matchmaker]\n\t8081  GPIB interface card [IOtech Inc. PCI488]\n\t8088  Kongsberg Spacetec Format Synchronizer\n\t8089  Kongsberg Spacetec Serial Output Board\n\t809c  S5933_HEPC3\n\t80b9  Harmonix Hi-Card P8 (4x active ISDN BRI)\n\t80d7  PCI-9112\n\t80d8  PCI-7200\n\t80d9  PCI-9118\n\t80da  PCI-9812\n\t80fc  APCI1500 Signal processing controller (16 dig. inputs + 16 dig. outputs)\n\t811a  PCI-IEEE1355-DS-DE Interface\n\t814c  Fastcom ESCC-PCI (Commtech, Inc.)\n\t8170  S5933 [Matchmaker] (Chipset Development Tool)\n\t81e6  Multimedia video controller\n\t828d  APCI3001 Signal processing controller (up to 16 analog inputs)\n\t8291  Fastcom 232/8-PCI (Commtech, Inc.)\n\t82c4  Fastcom 422/4-PCI (Commtech, Inc.)\n\t82c5  Fastcom 422/2-PCI (Commtech, Inc.)\n\t82c6  Fastcom IG422/1-PCI (Commtech, Inc.)\n\t82c7  Fastcom IG232/2-PCI (Commtech, Inc.)\n\t82ca  Fastcom 232/4-PCI (Commtech, Inc.)\n\t82db  AJA HDNTV HD SDI Framestore\n\t82e2  Fastcom DIO24H-PCI (Commtech, Inc.)\n\t8406  PCIcanx/PCIcan CAN interface [Kvaser AB]\n\t8407  PCIcan II CAN interface (A1021, PCB-07, PCB-08) [Kvaser AB]\n\t8851  S5933 on Innes Corp FM Radio Capture card\n\te004  X-Gene PCIe bridge\n10e9  Alps Electric Co., Ltd.\n10ea  Integraphics\n\t1680  IGA-1680\n\t1682  IGA-1682\n\t1683  IGA-1683\n\t2000  CyberPro 2000\n\t2010  CyberPro 2000A\n\t5000  CyberPro 5000\n\t5050  CyberPro 5050\n\t5202  CyberPro 5202\n# CyberPro5202 Audio Function\n\t5252  CyberPro5252\n10eb  Artists Graphics\n\t0101  3GA\n\t8111  Twist3 Frame Grabber\n10ec  Realtek Semiconductor Co., Ltd.\n\t0139  RTL-8139/8139C/8139C+ Ethernet Controller\n\t2600  Killer E2600 GbE Controller\n\t3000  Killer E3000 2.5GbE Controller\n\t4321  RTL8852BE 802.11ax PCIe Wireless Network Adapter\n\t5208  RTS5208 PCI Express Card Reader\n\t5209  RTS5209 PCI Express Card Reader\n\t5227  RTS5227 PCI Express Card Reader\n\t\t17aa 220e  ThinkPad T440p\n\t\t17aa 2214  ThinkPad X240\n\t5228  RTS5288 PCIe SD UHS-I Card Reader controller\n\t5229  RTS5229 PCI Express Card Reader\n\t\t1025 0813  Aspire R7-571\n\t\t103c 194e  ProBook 455 G1 Notebook\n\t\t103c 1985  Pavilion 17-e163sg Notebook PC\n\t\t17aa 3832  Yoga 520\n\t522a  RTS522A PCI Express Card Reader\n\t\t103c 8079  EliteBook 840 G3\n\t\t103c 825b  OMEN-17-w001nv\n\t\t17aa 5124  ThinkPad E595\n\t5249  RTS5249 PCI Express Card Reader\n\t\t103c 1909  ZBook 15\n\t524a  RTS524A PCI Express Card Reader\n\t5250  RTS5250 PCI Express Card Reader\n\t525a  RTS525A PCI Express Card Reader\n\t\t1028 06d6  Latitude 7275 tablet\n\t\t1028 06dc  Latitude E7470\n\t\t1028 06e4  XPS 15 9550\n\t\t1028 06e6  Latitude 11 5175 2-in-1\n\t\t1028 09be  Latitude 7410\n\t\t1028 0b10  Precision 3571\n\t\t1028 0c06  Precision 3580\n\t\t17aa 224f  ThinkPad X1 Carbon 5th Gen\n\t5260  RTS5260 PCI Express Card Reader\n\t5261  RTS5261 PCIe SD Express Card Reader controller\n\t5264  RTS5264 PCIe SD UHS-II & SD Express Card Reader controller\n\t5286  RTS5286 PCI Express Card Reader\n\t5287  RTL8411B PCI Express Card Reader\n\t\t1025 1094  Acer Aspire E5-575G\n\t5288  RTS5288 PCI Express Card Reader\n\t5289  RTL8411 PCI Express Card Reader\n\t\t1043 1457  K55A Laptop\n\t5760  RTS5763DL x2 NVMe SSD Controller\n\t5762  RTS5762 NVMe SSD Controller\n\t5763  RTS5763DL NVMe SSD Controller (DRAM-less)\n\t5765  RTS5765DL NVMe SSD Controller (DRAM-less)\n\t5770  RTS5770DL NVMe SSD Controller (DRAM-less)\n\t5771  RTS5771 NVMe SSD Controller (DRAM-less)\n\t5772  RTS5772DL NVMe SSD Controller (DRAM-less)\n\t8029  RTL-8029(AS)\n\t\t10b8 2011  EZ-Card (SMC1208)\n\t\t10ec 8029  RTL-8029(AS)\n\t\t1113 1208  EN1208\n\t\t1186 0300  DE-528\n\t\t1259 2400  AT-2400\n\t\t1af4 1100  QEMU Virtual Machine\n\t8125  RTL8125 2.5GbE Controller\n\t\t4c52 2022  LRES2022PT Single-port 2.5Gb Ethernet Network Adapter\n\t8126  RTL8126 5GbE Controller\n\t8129  RTL-8129\n\t\t10ec 8129  RT8129 Fast Ethernet Adapter\n\t\t11ec 8129  RTL8111/8168 PCIe Gigabit Ethernet (misconfigured)\n\t8136  RTL810xE PCI Express Fast Ethernet controller\n\t\t103c 1985  RTL8106E on Pavilion 17-e163sg Notebook PC\n\t\t103c 2a8c  Compaq 500B Microtower\n\t\t103c 2ab1  Pavilion p6774\n\t\t103c 30cc  Pavilion dv6700\n\t\t1179 ff64  RTL8102E PCI-E Fast Ethernet NIC\n\t\t17c0 1053  RTL8101e Medion WIM 2210 Notebook PC [MD96850]\n\t8137  RTL8104E PCIe Fast Ethernet Controller\n\t8138  RT8139 (B/C) Cardbus Fast Ethernet Adapter\n\t\t10ec 8138  RT8139 (B/C) Fast Ethernet Adapter\n\t8139  RTL-8100/8101L/8139 PCI Fast Ethernet Adapter\n\t\t0357 000a  TTP-Monitoring Card V2.0\n\t\t1025 005a  TravelMate 290\n\t\t1025 8920  ALN-325\n\t\t1025 8921  ALN-325\n\t\t103c 006a  NX9500\n\t\t103c 2a20  Pavilion t3030.de Desktop PC\n\t\t103c 30d9  Presario C700\n\t\t1043 1045  L8400B, L3C/S, X58LE notebook\n\t\t1043 8109  P5P800-MX Mainboard\n\t\t1071 8160  MIM2000\n\t\t10bd 0320  EP-320X-R\n\t\t10ec 8139  RTL-8100/8101L/8139 PCI Fast Ethernet Adapter\n\t\t10f7 8338  Panasonic CF-Y5 laptop\n\t\t1113 ec01  LevelOne FNC-0107TX/FNC-0109TX\n\t\t1186 1104  DFE-520TX Fast Ethernet PCI Adapter (rev. D1)\n\t\t1186 1300  DFE-538TX\n\t\t1186 1320  SN5200\n\t\t1186 8139  DRN-32TX\n\t\t11f6 8139  FN22-3(A) LinxPRO Ethernet Adapter\n\t\t1259 2500  AT-2500TX\n\t\t1259 2503  AT-2500TX/ACPI\n\t\t1385 f31d  FA311 v2\n\t\t1395 2100  AMB2100\n\t\t1429 d010  ND010/ND012\n\t\t1432 9130  EN-9130TX\n\t\t1436 8139  RT8139\n\t\t144d c00c  P30/P35 notebook\n\t\t1458 e000  GA-7VM400M/7VT600 Motherboard\n\t\t1462 0131  MS-1013 Notebook\n\t\t1462 217c  Aspire L250\n\t\t1462 788c  865PE Neo2-V Mainboard\n\t\t146c 1439  FE-1439TX\n\t\t1489 6001  GF100TXRII\n\t\t1489 6002  GF100TXRA\n\t\t149c 139a  LFE-8139ATX\n\t\t149c 8139  LFE-8139TX\n\t\t14cb 0200  LNR-100 Family 10/100 Base-TX Ethernet\n\t\t1565 2300  P4TSV Onboard LAN (RTL8100B)\n\t\t1631 7003  Onboard RTL8111 on GA-8SIML Rev1.0 Mainboard\n\t\t1695 9001  Onboard RTL8101L 10/100 MBit\n\t\t16ec 00ff  USR997900A\n\t\t1799 5000  F5D5000 PCI Card/Desktop Network PCI Card\n\t\t1799 5010  F5D5010 CardBus Notebook Network Card\n\t\t187e 3303  FN312\n\t\t1904 8139  RTL8139D Fast Ethernet Adapter\n\t\t1af4 1100  QEMU Virtual Machine\n\t\t2646 0001  KNE120TX\n\t\t8e2e 7000  KF-230TX\n\t\t8e2e 7100  KF-230TX/2\n\t\ta0a0 0007  ALN-325C\n\t8161  RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller\n\t\t10ec 8168  TP-Link TG-3468 v4.0 Gigabit PCI Express Network Adapter\n\t8167  RTL-8110SC/8169SC Gigabit Ethernet\n\t\t105b 0e10  RTL-8110SC-GR on a N15235/A74MX mainboard\n\t\t1458 e000  GA-MA69G-S3H Motherboard\n\t\t1462 235c  P965 Neo MS-7235 mainboard\n\t\t1462 236c  945P Neo3-F motherboard\n\t8168  RTL8111/8168/8211/8411 PCI Express Gigabit Ethernet Controller\n\t\t1019 8168  RTL8111/8168 PCI Express Gigabit Ethernet controller\n\t\t1025 1094  Acer Aspire E5-575G\n\t\t1028 0283  Vostro 220\n\t\t1028 04b2  Vostro 3350\n\t\t1028 04da  Vostro 3750\n\t\t1028 05d7  Alienware X51 R2\n\t\t1028 06f2  Latitude 3470\n\t\t1028 06f3  Latitude 3570\n\t\t1028 0869  Vostro 3470\n\t\t103c 1611  Pavilion DM1Z-3000\n\t\t103c 1950  ProBook 450/455\n\t\t103c 2a6f  Asus IPIBL-LB Motherboard\n\t\t103c 825b  OMEN-17-w001nv\n\t\t103c 8615  Pavilion Laptop 15-cw1xxx\n\t\t103c 86d4  Pavilion Laptop 15-ec0xxx\n# Rev 29, uses r8169 Driver on Linux\n\t\t103c 8882  HP ProDesk 405 G8 Desktop Mini PC\n\t\t103c 8b17  ProBook 445 G9/455 G9 [RTL8111HSH-CG GbE Controller]\n\t\t1043 11f5  Notebook motherboard (one of many models)\n\t\t1043 16d5  U6V/U31J laptop\n\t\t1043 81aa  P5B\n\t\t1043 82c6  M3A78 Series Motherboard\n\t\t1043 83a3  M4A785/P7P55/AT3IONT-I Motherboard\n\t\t1043 8432  P8P67 and other motherboards\n\t\t1043 8505  P8 series motherboard\n\t\t1043 8554  H81M-C Motherboard\n\t\t1043 859e  AM1I-A Motherboard\n\t\t1043 8677  Onboard RTL8111H Ethernet\n\t\t105b 0d7c  D270S/D250S Motherboard\n\t\t10ec 8168  RTL8111/8168 PCI Express Gigabit Ethernet controller\n\t\t144d c652  RTL8168 on a NP300E5C series laptop\n\t\t1458 e000  Onboard Ethernet\n\t\t1462 238c  Onboard RTL8111b on MSI P965 Platinum Mainboard\n\t\t1462 345c  RTL8111B on MS-7345 Motherboard\n\t\t1462 368c  K9AG Neo2\n\t\t1462 4180  Wind PC MS-7418\n\t\t1462 7522  X58 Pro-E\n\t\t1462 7c37  X570-A PRO motherboard\n\t\t1734 11c0  RTL8211DN on Esprimo P510 D3171 motherboard\n\t\t1775 11cc  CC11/CL11\n\t\t17aa 3098  ThinkCentre E73\n\t\t17aa 3814  Z50-75\n\t\t17aa 3823  Lenovo V130-15IGM Laptop - Type 81HL\n\t\t17aa 5068  Thinkpad E480/E580\n\t\t17aa 5124  ThinkPad E595\n\t\t1849 8168  Motherboard (one of many)\n\t\t7470 3468  TG-3468 Gigabit PCI Express Network Adapter\n\t\t8086 2055  NUC Kit DN2820FYKH\n\t\t8086 d615  Desktop Board D510MO/D525MW\n\t\tea50 ce19  mCOM10-L1900\n\t8169  RTL8169 PCI Gigabit Ethernet Controller\n\t\t1025 0079  Aspire 5024WLMi\n\t\t10bd 3202  EP-320G-TX1 32-bit PCI Gigabit Ethernet Adapter\n\t\t10ec 8169  RTL8169/8110 Family PCI Gigabit Ethernet NIC\n\t\t1259 c107  CG-LAPCIGT\n\t\t1371 434e  ProG-2000L\n\t\t1385 311a  GA311\n\t\t1385 5200  GA511 Gigabit PC Card\n\t\t1458 e000  GA-8I915ME-G Mainboard\n\t\t1462 030c  K8N Neo-FSR v2.0 mainboard\n\t\t1462 065c  Hetis 865GV-E (MS-7065)\n\t\t1462 702c  K8T NEO 2 motherboard\n\t\t1462 7094  K8T Neo2-F V2.0\n\t\t16ec 011f  USR997903\n\t\t1734 1091  D2030-A1\n\t\ta0a0 0449  AK86-L motherboard\n\t816a  RTL8111xP UART #1\n\t\tea50 ce19  mCOM10-L1900\n\t816b  RTL8111xP UART #2\n\t\tea50 ce19  mCOM10-L1900\n\t816c  RTL8111xP IPMI interface\n\t\tea50 ce19  mCOM10-L1900\n\t816d  RTL811x EHCI host controller\n\t\tea50 ce19  mCOM10-L1900\n\t816e  Realtek RealManage BMC\n\t8171  RTL8191SEvA Wireless LAN Controller\n\t8172  RTL8191SEvB Wireless LAN Controller\n\t8173  RTL8192SE Wireless LAN Controller\n\t8174  RTL8192SE Wireless LAN Controller\n\t8176  RTL8188CE 802.11b/g/n WiFi Adapter\n\t\t1043 84b5  PCE-N10\n\t\t1a3b 1139  AW-NE139H Half-size Mini PCIe Card\n\t8177  RTL8191CE PCIe Wireless Network Adapter\n\t8178  RTL8192CE PCIe Wireless Network Adapter\n\t8179  RTL8188EE Wireless Network Adapter\n\t\t103c 197d  RTL8188EE mini-PCIe card\n\t8180  RTL8180L 802.11b MAC\n\t\t1385 4700  MA521 802.11b Wireless PC Card\n\t\t1737 0019  WPC11v4 802.11b Wireless-B Notebook Adapter\n\t8185  RTL-8185 IEEE 802.11a/b/g Wireless LAN Controller\n\t818b  RTL8192EE PCIe Wireless Network Adapter\n\t8190  RTL8190 802.11n PCI Wireless Network Adapter\n\t8191  RTL8192CE PCIe Wireless Network Adapter\n\t8192  RTL8192E/RTL8192SE Wireless LAN Controller\n\t8193  RTL8192DE Wireless LAN Controller\n\t8196  RTL8196 Integrated PCI-e Bridge\n\t8197  SmartLAN56 56K Modem\n\t8199  RTL8187SE Wireless LAN Controller\n\t\t1462 6894  MN54G2 / MS-6894 Wireless Mini PCIe Card\n\t8723  RTL8723AE PCIe Wireless Network Adapter\n\t8812  RTL8812AE 802.11ac PCIe Wireless Network Adapter\n\t8813  RTL8813AE 802.11ac PCIe Wireless Network Adapter\n\t8821  RTL8821AE 802.11ac PCIe Wireless Network Adapter\n\t8852  RTL8852AE 802.11ax PCIe Wireless Network Adapter\n\t8922  RTL8922AE 802.11be PCIe Wireless Network Adapter\n\ta85a  RTL8852AE WiFi 6 802.11ax PCIe Adapter\n\tb520  RTL8852BE-VT PCIe 802.11ax Wireless Network Controller\n\tb723  RTL8723BE PCIe Wireless Network Adapter\n\t\t10ec 8739  Dell Wireless 1801\n\t\t17aa b736  Z50-75\n\tb821  RTL8821CE PCIe 802.11ac Wireless Network Controller\n\tb822  RTL8822BE 802.11a/b/g/n/ac WiFi adapter\n\t\t103c 831b  Realtek RTL8822BE 802.11ac 2x2 Wi-Fi + Bluetooth 4.2 Combo Adapter (MU-MIMO supported)\n\t\t17aa 5124  ThinkPad E595\n\t\t17aa b023  ThinkPad E595\n\tb851  RTL8851BE PCIe 802.11ax Wireless Network Controller\n\tb852  RTL8852BE PCIe 802.11ax Wireless Network Controller\n\tb85b  RTL8852BE PCIe 802.11ax Wireless Network Controller [1T1R]\n\tc821  RTL8821CE 802.11ac PCIe Wireless Network Adapter\n\tc822  RTL8822CE 802.11ac PCIe Wireless Network Adapter\n\tc82f  RTL8822CE 802.11ac PCIe Wireless Network Adapter\n\tc852  RTL8852CE PCIe 802.11ax Wireless Network Controller\n\td723  RTL8723DE 802.11b/g/n PCIe Adapter\n10ed  Ascii Corporation\n\t7310  V7310\n10ee  Xilinx Corporation\n\t0001  EUROCOM for PCI (ECOMP)\n\t0002  Octal E1/T1 for PCI ETP Card\n\t0007  Default PCIe endpoint ID\n\t0205  Wildcard TE205P\n\t0210  Wildcard TE210P\n\t0300  Spartan 3 Designs (Xilinx IP)\n\t0314  Wildcard TE405P/TE410P (1st Gen)\n\t0405  Wildcard TE405P (2nd Gen)\n\t0410  Wildcard TE410P (2nd Gen)\n\t0600  Xilinx 6 Designs (Xilinx IP)\n\t3fc0  RME Digi96\n\t3fc1  RME Digi96/8\n\t3fc2  RME Digi96/8 Pro\n\t3fc3  RME Digi96/8 Pad\n\t3fc4  RME Digi9652 (Hammerfall)\n\t3fc5  RME Hammerfall DSP\n\t3fc6  RME Hammerfall DSP MADI\n\t5000  Alveo U200 XDMA Platform\n\t\t10ee 000e  Alveo card\n\t5004  Alveo U250 XDMA Platform\n\t\t10ee 000e  Alveo card\n\t5005  Alveo U250\n\t500c  Alveo U280 XDMA Platform\n\t\t10ee 000e  Alveo card\n\t5020  Alveo U50 XMDA Platform\n\t\t10ee 000e  Alveo card\n\t505c  Alveo U55C\n\t\t10ee 000e  Alveo card\n\t5074  Alveo X3522, Quad Port, 10/25GbE Adaptable Accelerator Card\n\t5084  Alveo X3522, Quad Port, 10/25GbE Low Latency Network Adapter\n\t6987  SmartSSD\n\t6988  SmartSSD\n\t7011  7-Series FPGA Hard PCIe block (AXI/debug)\n\t7038  FPGA Card XC7VX690T\n\t\t17aa 402f  FPGA XC7VX690T-3FFG1157E\n\t8019  Memory controller\n\t\t1eec 0201  VSEC10232X Dual-port 100Gb/s Etherent PCIe\n\t8380  Ellips ProfiXpress Profibus Master\n\t8381  Ellips Santos Frame Grabber\n\t9134  SmartSSD\n\t9234  SmartSSD\n\t9434  SmartSSD\n\td000  Alveo U200 Golden Image\n\t\t10ee 000e  Alveo card\n\td004  Alveo U250 Golden Image\n\t\t10ee 000e  Alveo card\n\td00c  Alveo U280 Golden Image\n\t\t10ee 000e  Alveo card\n\td020  Alveo U50 Golden Image\n\t\t10ee 000e  Alveo card\n\td154  Copley Controls CAN card (PCI-CAN-02)\n# SED is assigned Xilinx PCI device IDs ebf0 through ebff\n\tebf0  SED Systems Modulator/Demodulator\n\tebf1  SED Systems Audio Interface Card\n\tebf2  SED Systems Common PCI Interface\n\tebf3  SED Systems PCIe-AXI Bridge\n10ef  Racore Computer Products, Inc.\n\t8154  M815x Token Ring Adapter\n10f0  Peritek Corporation\n10f1  Tyan Computer\n\t2865  Tyan Thunder K8E S2865\n\t5300  Tyan S5380 Mainboard\n10f2  Achme Computer, Inc.\n10f3  Alaris, Inc.\n10f4  S-MOS Systems, Inc.\n10f5  NKK Corporation\n\ta001  NDR4000 [NR4600 Bridge]\n10f6  Creative Electronic Systems SA\n10f7  Matsushita Electric Industrial Co., Ltd.\n10f8  Altos India Ltd\n10f9  PC Direct\n10fa  Truevision\n\t000c  TARGA 1000\n10fb  Thesys Gesellschaft fuer Mikroelektronik mbH\n\t186f  TH 6255\n10fc  I-O Data Device, Inc.\n# What's in the cardbus end of a Sony ACR-A01 card, comes with newer Vaio CD-RW drives\n\t0003  Cardbus IDE Controller\n\t0005  Cardbus SCSI CBSC II\n10fd  Soyo Computer, Inc\n10fe  Fast Multimedia AG\n10ff  NCube\n1100  Jazz Multimedia\n1101  Initio Corporation\n\t0002  INI-920 Ultra SCSI Adapter\n\t1060  INI-A100U2W\n\t1622  INI-1623 PCI SATA-II Controller\n\t9100  INI-9100/9100W\n\t9400  INI-940 Fast Wide SCSI Adapter\n\t9401  INI-935 Fast Wide SCSI Adapter\n\t9500  INI-950 SCSI Adapter\n\t9502  INI-950P Ultra Wide SCSI Adapter\n1102  Creative Labs\n\t0002  EMU10k1 [Sound Blaster Live! Series]\n\t\t100a 1102  SB Live! 5.1 Digital OEM SB0220 EMU10K1-JFF\n\t\t1102 0020  CT4670/4850 SBLive! Value\n\t\t1102 0021  CT4620 SBLive!\n\t\t1102 002f  M002/M003 Integrated SBLive!\n\t\t1102 100a  SB0220/0229 SBLive! 5.1 Digital OEM\n\t\t1102 4001  E-mu APS\n\t\t1102 8022  CT4780 SBLive! Value\n\t\t1102 8023  CT4790 SoundBlaster PCI512\n\t\t1102 8024  CT4760 SBLive!\n\t\t1102 8025  CT1140/SB0040 Integrated SBLive!\n\t\t1102 8026  CT4830 SBLive! Value\n\t\t1102 8027  CT4832 SBLive! Value\n\t\t1102 8028  CT4870 SBLive! Value\n\t\t1102 8029  CT4872 SBLive! Value\n\t\t1102 802a  CT4890 SoundBlaster PCI256\n\t\t1102 802b  CT4891 SoundBlaster PCI256\n\t\t1102 8031  CT4831 SBLive! Value\n\t\t1102 8032  CT4871 SBLive! Value\n\t\t1102 8033  CT4893 SoundBlaster PCI256\n\t\t1102 8035  CT0060 SBLive!\n\t\t1102 8040  CT4760 SBLive!\n\t\t1102 8050  CT4750 SoundBlaster PCI512\n\t\t1102 8051  CT4850 SBLive! Value\n\t\t1102 8061  SB060 SBLive! Player 5.1\n\t\t1102 8062  SB0100 SBLive! 5.1\n\t\t1102 8063  DXW Integrated SBLive! 5.1\n\t\t1102 8064  SB0100/SB0102 SBLive! 5.1\n\t\t1102 8065  SB0220/0222 SBLive! 5.1 Digital\n\t\t1102 8066  SB0228 SBLive! 5.1 Digital\n\t\t1102 8067  SB0220 SBLive! 5.1\n\t\t1102 8068  CT0061 SBLive!\n\t\t1102 8069  SB0101 SBLive! 5.1 Value\n\t\t1102 806a  SB0103 SBLive! 5.1\n\t\t1102 806b  SB0105 SBLive! 5.1\n\t\t1102 806c  SB0221 SBLive! 5.1\n\t\t1102 8071  SB0150 SoundBlaster PCI512\n# EMU8008 PCI version of emu8000 chip\n\t0003  SB AWE64(D)\n\t\t1102 0010  CT4600 AWE64D\n\t\t1102 0030  CT4650 AWE64D\n\t\t1102 0031  CT4655 AWE64D\n\t0004  EMU10k2/CA0100/CA0102/CA10200 [Sound Blaster Audigy Series]\n\t\t1102 0040  SB0090 Audigy Player\n# Probably an early engineering sample\n\t\t1102 0041  CT4820 SBLive!2\n\t\t1102 0042  CT0070 Audigy\n\t\t1102 0043  CT0072 Audigy\n\t\t1102 0051  SB0090 Audigy Player/Platinum (EX)\n\t\t1102 0052  SB0162 Audigy ES\n\t\t1102 0053  CT0090/SB0092 Audigy Player/OEM\n\t\t1102 0054  SB0161 Audigy ES\n\t\t1102 0055  SB0192 Audigy\n\t\t1102 0056  SB0191 Audigy\n\t\t1102 0057  SB0091 Audigy\n\t\t1102 0058  SB0095 Audigy Player/OEM\n\t\t1102 0059  SB0230 Audigy\n\t\t1102 005a  SB0231 Audigy\n\t\t1102 005b  SB0232 Audigy\n\t\t1102 005c  SB0238 Audigy\n\t\t1102 1002  SB0240 Audigy 2 Platinum 6.1\n\t\t1102 1003  SB0350 Audigy 2 / SB0243 Audigy 2 OEM\n\t\t1102 1004  SB0242 Audigy 2\n\t\t1102 1005  SB0280 Audigy 2 Platinum Ex\n\t\t1102 1006  SB0245 Audigy 2 OEM\n\t\t1102 1007  SB0240/SB0244 Audigy 2 Platinum\n\t\t1102 1008  SB0320 Audigy 2\n\t\t1102 1009  SB0249 Audigy 2 OEM\n\t\t1102 100a  SB0246 Audigy 2\n\t\t1102 2001  SB0360 Audigy 2 ZS Platinum Pro\n\t\t1102 2002  SB0350 Audigy 2 ZS\n\t\t1102 2003  SB0352 Audigy 2 ZS\n\t\t1102 2004  SB0355 Audigy 2 ZS\n\t\t1102 2005  SB0359 Audigy 2 ZS\n\t\t1102 2006  SB035x Audigy 2 OEM\n\t\t1102 2007  SB0380 Audigy 4 Pro\n\t\t1102 4001  E-MU 1010 [MAEM8810]\n\t\t1102 4002  E-MU 0404\n\t\t1102 4003  E-MU 1010\n\t0005  EMU20k1 [Sound Blaster X-Fi Series]\n\t\t1102 0021  X-Fi Platinum\n\t\t1102 002c  X-Fi XtremeGamer FATAL1TY PRO\n\t\t1102 1003  X-Fi XtremeMusic\n# This chip is also known as CA0103 on Sound Blaster 5.1 SB0680 card.\n\t0006  EMU10k1X / CA0103 [SB Live! OEM / SB 5.1 / Ectiva 5.1]\n\t\t1102 1001  SB0680 Sound Blaster 5.1\n\t\t1102 1003  SB0203 SB Live! 5.1 (Dell)\n\t\t1102 1004  TP0033 Ectiva Audio 5.1\n\t0007  CA0106/CA0111 [SB Live!/Audigy/X-Fi Series]\n\t\t1102 0007  SBLive! 24bit\n\t\t1102 1001  SB0310 Audigy LS\n\t\t1102 1002  SB0312 Audigy LS\n\t\t1102 1006  SB0410 SBLive! 24-bit\n\t\t1102 100a  SB0570 [SB Audigy SE]\n\t\t1102 1012  SB0790 X-Fi XA\n\t\t1102 1013  Soundblaster X-Fi Xtreme Audio\n\t\t1462 1009  K8N Diamond\n\t0008  CA0108/CA10300 [Sound Blaster Audigy Series]\n\t\t1102 0008  EMU0404 Digital Audio System\n\t\t1102 1001  SB0400 Audigy 2 Value\n\t\t1102 1021  SB0610 Audigy 4 Value\n\t\t1102 1022  SBxxx Audigy 2/4 Value\n\t\t1102 1023  SB0612 Audigy 2 LS\n\t\t1102 1024  SB1550 Audigy 5/Rx\n\t\t1102 1101  SBxxxx Audigy 2 SA\n\t\t1102 2001  SB0530 Audigy 2 ZS Notebook\n\t\t1102 2021  SBxxxx Audigy 4 Notebook\n\t\t1102 4002  E-MU 0404\n\t\t1102 4003  E-MU 1010\n\t\t1102 4004  EMU1010 Digital Audio System [MAEM8960]\n\t\t1102 4005  E-MU 0404 [MAEM8984]\n\t\t1102 4007  E-MU 1010 [MAEM8982]\n\t\t1102 4201  E-MU 0202 [MAEM8950]\n\t0009  CA0110 [Sound Blaster X-Fi Xtreme Audio]\n\t\t1102 0010  MB0820 Integrated\n\t\t1102 0018  SB1040 PCI Express\n\t000b  EMU20k2 [Sound Blaster X-Fi Titanium Series]\n\t\t1102 0041  SB0880 [SoundBlaster X-Fi Titanium PCI-e]\n\t\t1102 0062  SB1270 [SoundBlaster X-Fi Titanium HD]\n\t0010  CA0132 Sound Core3D [Sound Blaster AE-7]\n\t\t1102 0081  Sound Blaster AE-7\n\t0012  CA0132 Sound Core3D [Sound Blaster Recon3D / Z-Series / Sound BlasterX AE-5 Plus]\n\t\t1102 0010  SB1570 SB Audigy Fx\n\t\t1102 0191  CA0132 Sound Core3D - CA0113 [ Sound BlasterX AE-5 Plus]\n\t4001  SB Audigy FireWire Port\n\t\t1102 0010  SB Audigy FireWire Port\n\t7002  SB Live! Game Port\n\t\t1102 0020  Gameport Joystick\n\t7003  SB Audigy Game Port\n\t\t1102 0040  SB Audigy Game Port\n\t\t1102 0060  SB Audigy2 MIDI/Game Port\n\t7004  [SB Live! Value] Input device controller\n\t7005  SB Audigy LS Game Port\n\t\t1102 1001  SB0310 Audigy LS MIDI/Game port\n\t\t1102 1002  SB0312 Audigy LS MIDI/Game port\n\t7006  [SB X-Fi Xtreme Audio] CA0110-IBG PCIe to PCI Bridge\n\t8938  Ectiva EV1938\n\t\t1033 80e5  SlimTower-Jim (NEC)\n\t\t1071 7150  Mitac 7150\n\t\t110a 5938  Siemens Scenic Mobile 510PIII\n\t\t13bd 100c  Ceres-C (Sharp, Intel BX)\n\t\t13bd 100d  Sharp, Intel Banister\n\t\t13bd 100e  TwinHead P09S/P09S3 (Sharp)\n\t\t13bd f6f1  Marlin (Sharp)\n\t\t14ff 0e70  P88TE (TWINHEAD INTERNATIONAL Corp)\n\t\t14ff c401  Notebook 9100/9200/2000 (TWINHEAD INTERNATIONAL Corp)\n\t\t156d b400  G400 - Geo (AlphaTop (Taiwan))\n\t\t156d b550  G560  (AlphaTop (Taiwan))\n\t\t156d b560  G560  (AlphaTop (Taiwan))\n\t\t156d b700  G700/U700  (AlphaTop (Taiwan))\n\t\t156d b795  G795  (AlphaTop (Taiwan))\n\t\t156d b797  G797  (AlphaTop (Taiwan))\n# nee Triones Technologies, Inc.\n1103  HighPoint Technologies, Inc.\n\t0003  HPT343/345/346/363\n\t0004  HPT366/368/370/370A/372/372N\n\t\t1103 0001  HPT370A\n\t\t1103 0004  HPT366 UDMA66 (r1) / HPT368 UDMA66 (r2) / HPT370 UDMA100 (r3) / HPT370 UDMA100 RAID (r4)\n\t\t1103 0005  HPT370 UDMA100\n\t\t1103 0006  HPT302/302N\n\t0005  HPT372A/372N\n\t0006  HPT302/302N\n\t0007  HPT371/371N\n\t0008  HPT374\n\t0009  HPT372N\n\t0620  RocketRAID 620 2 Port SATA-III Controller\n\t0622  RocketRAID 622 2 Port SATA-III Controller\n\t0640  RocketRAID 640 4 Port SATA-III Controller\n\t0641  RocketRAID 640L 4 Port SATA-III Controller\n\t0642  RocketRAID 642L SATA-III Controller (2 eSATA ports + 2 internal SATA ports)\n\t0644  RocketRAID 644 4 Port SATA-III Controller (eSATA)\n\t0645  RocketRAID 644L 4 Port SATA-III Controller (eSATA)\n\t0646  RocketRAID 644LS SATA-III Controller (4 eSATA devices connected by 1 SAS cable)\n\t0750  Rocket 750 PCIe Gen2 SATA III Controller\n\t0840  RocketRAID 840 PCIe Gen3 SATA III Controller\n\t1720  RocketRAID 1720 (2x SATA II RAID Controller)\n\t1740  RocketRAID 1740\n\t1742  RocketRAID 1742\n\t2210  RocketRAID 2210 SATA-II Controller\n\t\t11ab 11ab  88SX6042\n\t2300  RocketRAID 230x 4 Port SATA-II Controller\n\t2310  RocketRAID 2310 4 Port SATA-II Controller\n\t2320  RocketRAID 2320 SATA-II Controller\n\t2322  RocketRAID 2322 SATA-II Controller\n\t2340  RocketRAID 2340 16 Port SATA-II Controller\n\t2640  RocketRAID 2640 SAS/SATA Controller\n\t2720  RocketRAID 2720 PCIe Gen2 6Gb/s SAS/SATA Controller\n\t2722  RocketRAID 2722\n# SFF-8087 Mini-SAS 16 port internal\n\t2740  RocketRAID 2740\n# SFF-8088 Mini-SAS 16 port external\n\t2744  RocketRaid 2744\n# SFF-8088 8 port external / SFF-8087 24 port internal\n\t2782  RocketRAID 2782\n\t2840  RocketRAID 2840 PCIe Gen3 6Gb/s SAS/SATA Controller\n\t3120  RocketRAID 3120\n\t3220  RocketRAID 3220\n\t3320  RocketRAID 3320\n\t3520  RocketRAID 3520 PCIe Gen1 8-Port SATA II Controller\n\t3530  RocketRAID 3530 PCIe Gen1 12-Port SATA II Controller\n\t3740  RocketRAID 3740 PCIe Gen3 12Gb/s SAS/SATA Controller\n\t4310  RocketRaid 4310\n\t4320  RocketRAID 4320 SAS Controller\n\t7103  SSD7103 PCIe Gen3 x16 4-Port M.2 NVMe RAID Controller\n\t7105  SSD7105 PCIe Gen3 x16 4-Port M.2 NVMe RAID Controller\n\t7110  SSD7110 PCIe Gen3 x16 NVMe RAID Controller\n\t7505  SSD7505 PCIe Gen4 x16 4-Port M.2 NVMe RAID Controller\n\t7540  SSD7540 PCIe Gen4 x16 8-Port M.2 NVMe RAID Controller\n\t7580  SSD7580 PCIe Gen4 x16 8-Port M.2 NVMe RAID Controller\n1104  RasterOps Corp.\n1105  Sigma Designs, Inc.\n\t1105  REALmagic Xcard MPEG 1/2/3/4 DVD Decoder\n\t8300  REALmagic Hollywood Plus DVD Decoder\n\t8400  EM840x REALmagic DVD/MPEG-2 Audio/Video Decoder\n\t8401  EM8401 REALmagic DVD/MPEG-2 A/V Decoder\n\t8470  EM8470 REALmagic DVD/MPEG-4 A/V Decoder\n\t8471  EM8471 REALmagic DVD/MPEG-4 A/V Decoder\n\t8475  EM8475 REALmagic DVD/MPEG-4 A/V Decoder\n\t\t1105 0001  REALmagic X-Card\n\t8476  EM8476 REALmagic DVD/MPEG-4 A/V Decoder\n\t\t127d 0000  CineView II\n\t8485  EM8485 REALmagic DVD/MPEG-4 A/V Decoder\n\t8486  EM8486 REALmagic DVD/MPEG-4 A/V Decoder\n# Found in Cisco DMP-4305G\n\tc621  EM8621L Digital Media Processor\n\tc622  EM8622L MPEG-4.10 (H.264) and SMPTE 421M (VC-1) A/V Decoder\n1106  VIA Technologies, Inc.\n\t0102  Embedded VIA Ethernet Controller\n\t0130  VT6305 1394.A Controller\n\t0198  P4X600 Host Bridge\n\t0204  K8M800 Host Bridge\n\t0208  PT890 Host Bridge\n\t0238  K8T890 Host Bridge\n\t0258  PT880 Host Bridge\n\t0259  CN333/CN400/PM880 Host Bridge\n\t0269  KT880 Host Bridge\n\t0282  K8T800Pro Host Bridge\n\t\t1043 80a3  A8V Deluxe\n\t0290  K8M890 Host Bridge\n\t0293  PM896 Host Bridge\n\t0296  P4M800 Host Bridge\n\t0305  VT8363/8365 [KT133/KM133]\n\t\t1019 0987  K7VZA Mainboard\n\t\t1043 8033  A7V Mainboard\n\t\t1043 803e  A7V-E Mainboard\n\t\t1043 8042  A7V133/A7V133-C Mainboard\n\t\t147b a401  KT7/KT7-RAID/KT7A/KT7A-RAID Mainboard\n\t0308  PT880 Ultra/PT894 Host Bridge\n\t\t1043 8199  P4V800D-X Mainboard\n\t\t1849 0308  Motherboard\n\t0314  CN700/VN800/P4M800CE/Pro Host Bridge\n\t0324  CX700/VX700 Host Bridge\n\t0327  P4M890 Host Bridge\n\t0336  K8M890CE Host Bridge\n\t0340  PT900 Host Bridge\n\t0351  K8T890CF Host Bridge\n\t0353  VX800/820-Series Chipset Host-Bridge Controller\n\t0364  CN896/VN896/P4M900 Host Bridge\n\t\t1043 81ce  P5VD2-VM mothervoard\n\t0391  VT8371 [KX133]\n\t0409  VX855/VX875 Host Bridge: Host Control\n\t0410  VX900 Series Host Bridge: Host Control\n\t0415  VT6415 PATA IDE Host Controller\n\t\t1043 838f  Motherboard\n\t0419  VN1000 Host Bridge\n\t0501  VT8501 [Apollo MVP4]\n\t0505  VT82C505\n# Shares chip with :0576. The VT82C576M has :1571 instead of :0561.\n\t0561  VT82C576MV\n\t0571  VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE\n\t\t1019 0985  P6VXA Motherboard\n\t\t1019 0a81  L7VTA v1.0 Motherboard (KT400-8235)\n\t\t1043 8052  VT8233A Bus Master ATA100/66/33 IDE\n\t\t1043 808c  A7V8X / A7V333 motherboard\n\t\t1043 80a1  A7V8X-X motherboard rev. 1.01\n\t\t1043 80ed  A7V600/K8V-X/A8V Deluxe motherboard\n\t\t1106 0571  VT82C586/B/VT82C686/A/B/VT8233/A/C/VT8235 PIPC Bus Master IDE\n\t\t1179 0001  Magnia Z310\n\t\t1297 f641  FX41 motherboard\n\t\t1458 5002  GA-7VAX Mainboard\n\t\t1462 5901  KT6 Delta-FIS2R (MS-6590)\n\t\t1462 7020  K8T NEO 2 motherboard\n\t\t1462 7094  K8T Neo2-F V2.0\n\t\t1462 7120  KT4AV motherboard\n\t\t1462 7181  K8MM3-V mainboard\n\t\t147b 1407  KV8-MAX3 motherboard\n# probably all K7VT2/4*/6\n\t\t1849 0571  K7VT series Motherboards\n\t0576  VT82C576 3V [Apollo Master]\n\t0581  CX700/VX700/VX800/820-Series Serial ATA RAID-Controller\n# Upgrade bios to get correct ID: 5324 instead of 0581\n\t\t1106 0581  Wrong IDE ID\n\t0585  VT82C585VP [Apollo VP1/VPX]\n\t0586  VT82C586/A/B PCI-to-ISA [Apollo VP]\n\t\t1106 0000  MVP3 ISA Bridge\n\t0591  VT8237A Integrated SATA RAID Controller\n\t0595  VT82C595 [Apollo VP2]\n\t0596  VT82C596 ISA [Mobile South]\n\t\t1106 0000  VT82C596/A/B PCI to ISA Bridge\n\t\t1458 0596  VT82C596/A/B PCI to ISA Bridge\n\t0597  VT82C597 [Apollo VP3]\n\t0598  VT82C598 [Apollo MVP3]\n\t0601  VT8601 [Apollo ProMedia]\n\t0605  VT8605 [ProSavage PM133]\n\t\t103c 1254  D9840-60001 [Brio BA410 Motherboard]\n\t\t1043 802c  CUV4X mainboard\n\t0680  VT82C680 [Apollo P6]\n\t0686  VT82C686 [Apollo Super South]\n\t\t1019 0985  P6VXA Motherboard\n\t\t103c 1256  D9840-60001 [Brio BA410 Motherboard]\n\t\t1043 802c  CUV4X mainboard\n\t\t1043 8033  A7V Mainboard\n\t\t1043 803e  A7V-E Mainboard\n\t\t1043 8040  A7M266 Mainboard\n\t\t1043 8042  A7V133/A7V133-C Mainboard\n\t\t1106 0000  VT82C686/A PCI to ISA Bridge\n\t\t1106 0686  VT82C686/A PCI to ISA Bridge\n\t\t1179 0001  Magnia Z310\n\t\t147b a702  KG7-Lite Mainboard\n\t0691  VT82C693A/694x [Apollo PRO133x]\n\t\t1019 0985  P6VXA Motherboard\n\t\t1179 0001  Magnia Z310\n\t\t1458 0691  VT82C691 Apollo Pro System Controller\n\t0693  VT82C693 [Apollo Pro Plus]\n\t0698  VT82C693A [Apollo Pro133 AGP]\n\t0709  VX11 Standard Host Bridge\n\t070a  VX11 PCI Express Root Port\n\t070b  VX11 PCI Express Root Port\n\t070c  VX11 PCI Express Root Port\n\t070d  VX11 PCI Express Root Port\n\t070e  VX11 PCI Express Root Port\n\t0926  VT82C926 [Amazon]\n\t1000  VT82C570MV\n\t1106  VT82C570MV\n\t1122  VX800/VX820 Chrome 9 HC3 Integrated Graphics\n\t1204  K8M800 Host Bridge\n\t1208  PT890 Host Bridge\n\t1238  K8T890 Host Bridge\n\t1258  PT880 Host Bridge\n\t1259  CN333/CN400/PM880 Host Bridge\n\t1269  KT880 Host Bridge\n\t1282  K8T800Pro Host Bridge\n\t1290  K8M890 Host Bridge\n\t1293  PM896 Host Bridge\n\t1296  P4M800 Host Bridge\n\t1308  PT894 Host Bridge\n\t1314  CN700/VN800/P4M800CE/Pro Host Bridge\n\t1324  CX700/VX700-Series Error Reporting\n\t1327  P4M890 Host Bridge\n\t1336  K8M890CE Host Bridge\n\t1340  PT900 Host Bridge\n\t1351  VT3351 Host Bridge\n\t1353  VX800/VX820 Error Reporting\n\t1364  CN896/VN896/P4M900 Host Bridge\n\t1409  VX855/VX875 Error Reporting\n\t1410  VX900 Series Error Reporting\n\t1419  VN1000 Host Bridge\n\t1571  VT82C576M/VT82C586\n\t1595  VT82C595/97 [Apollo VP2/97]\n\t1732  VT1732 [Envy24 II] PCI Multi-Channel Audio Controller\n\t2106  VIA Rhine Family Fast Ethernet Adapter (VT6105)\n\t2204  K8M800 Host Bridge\n\t2208  PT890 Host Bridge\n\t2238  K8T890 Host Bridge\n\t2258  PT880 Host Bridge\n\t2259  CN333/CN400/PM880 CPU Host Bridge\n\t2269  KT880 Host Bridge\n\t2282  K8T800Pro Host Bridge\n\t2290  K8M890 Host Bridge\n\t2293  PM896 Host Bridge\n\t2296  P4M800 Host Bridge\n\t2308  PT894 Host Bridge\n\t2314  CN700/VN800/P4M800CE/Pro Host Bridge\n\t2324  CX700/VX700-Series Host Interface Control\n\t2327  P4M890 Host Bridge\n\t2336  K8M890CE Host Bridge\n\t2340  PT900 Host Bridge\n\t2351  VT3351 Host Bridge\n\t2353  VX800/VX820 Host Bus Control\n\t2364  CN896/VN896/P4M900 Host Bridge\n\t2409  VX855/VX875 Host Bus Control\n\t2410  VX900 Series CPU Bus Controller\n\t2419  VN1000 Host Bridge\n\t287a  VT8251 PCI to PCI Bridge\n\t287b  VT8251 Host Bridge\n\t287c  VT8251 PCIE Root Port\n\t287d  VT8251 PCIE Root Port\n\t287e  VT8237/8251/8261 Ultra VLINK Controller\n\t3022  CLE266\n\t3038  VT82xx/62xx/VX700/8x0/900 UHCI USB 1.1 Controller\n\t\t0925 1234  onboard UHCI USB 1.1 Controller\n\t\t1019 0985  P6VXA Motherboard\n\t\t1019 0a81  L7VTA v1.0 Motherboard (KT400-8235)\n\t\t1043 8080  A7V333 motherboard\n\t\t1043 808c  VT62xx USB1.1 4 port controller\n\t\t1043 80a1  A7V8X-X motherboard\n\t\t1043 80ed  A7V600/K8V-X/A8V Deluxe motherboard\n\t\t1106 3038  USB 1.1 UHCI controller\n\t\t1179 0001  Magnia Z310\n\t\t1234 0925  MVP3 USB Controller\n\t\t1458 5004  GA-7VAX Mainboard\n\t\t1462 5901  KT6 Delta-FIS2R (MS-6590)\n\t\t1462 7020  K8T NEO 2 motherboard\n\t\t1462 7094  K8T Neo2-F V2.0\n\t\t1462 7120  KT4AV motherboard\n\t\t1462 7181  K8MM3-V mainboard\n\t\t147b 1407  KV8-MAX3 motherboard\n\t\t182d 201d  CN-029 USB2.0 4 port PCI Card\n# probably all K7VT2/4*/6\n\t\t1849 3038  K7VT series Motherboards\n\t\t19da a179  ZBOX nano VD01\n\t\t1af4 1100  QEMU Virtual Machine\n\t3040  VT82C586B ACPI\n\t3043  VT86C100A [Rhine]\n\t\t10bd 0000  VT86C100A Fast Ethernet Adapter\n\t\t1106 0100  VT86C100A Fast Ethernet Adapter\n\t\t1186 1400  DFE-530TX PCI Fast Ethernet Adapter (rev. A)\n\t3044  VT6306/7/8 [Fire II(M)] IEEE 1394 OHCI Controller\n\t\t0010 0001  IEEE 1394 4port DCST 1394-3+1B\n\t\t1025 005a  TravelMate 290\n\t\t103c 2a20  Pavilion t3030.de Desktop PC\n\t\t103c 2a3b  Media Center PC m7590n\n\t\t1043 808a  A8V/A8N/P4P800/P5SD2 series motherboard\n\t\t1043 81fe  Motherboard\n\t\t1458 1000  GA-7VT600-1394 Motherboard\n\t\t1462 207d  K8NGM2 series motherboard\n\t\t1462 217d  Aspire L250\n\t\t1462 590d  KT6 Delta-FIS2R (MS-6590)\n\t\t1462 702d  K8T NEO 2 motherboard\n\t\t1462 971d  MS-6917\n\t\t153b 1146  Cameo DV Firewire controller\n\t3050  VT82C596 Power Management\n\t3051  VT82C596 Power Management\n\t3053  VT6105M [Rhine-III]\n\t\t1186 1404  DFE-530TX PCI Fast Ethernet Adapter (rev. D)\n\t3057  VT82C686 [Apollo Super ACPI]\n\t\t1019 0985  P6VXA Motherboard\n\t\t1019 0987  K7VZA Motherboard\n\t\t1043 8033  A7V Mainboard\n\t\t1043 803e  A7V-E Mainboard\n\t\t1043 8040  A7M266 Mainboard\n\t\t1043 8042  A7V133/A7V133-C Mainboard\n\t\t1179 0001  Magnia Z310\n\t3058  VT82C686 AC97 Audio Controller\n\t\t0e11 0097  SoundMax Digital Integrated Audio\n\t\t0e11 b194  Soundmax integrated digital audio\n\t\t1019 0985  P6VXA Motherboard\n\t\t1019 0987  K7VZA Motherboard\n\t\t103c 1251  D9840-60001 [Brio BA410 Motherboard]\n\t\t1043 1106  A7V133/A7V133-C Mainboard\n\t\t1106 4511  Onboard Audio on EP7KXA\n\t\t1106 aa03  VT1612A AC'97 Audio Controller\n\t\t11d4 5348  AD1881A audio\n\t\t1458 7600  Onboard Audio\n\t\t1462 3091  MS-6309 Onboard Audio\n\t\t1462 3092  MS-6309 v2.x Mainboard (VIA VT1611A codec)\n\t\t1462 3300  MS-6330 Onboard Audio\n\t\t1462 3400  MS-6340 (VT8363) motherboard\n\t\t15dd 7609  Onboard Audio\n\t3059  VT8233/A/8235/8237 AC97 Audio Controller\n\t\t1019 0a81  L7VTA v1.0 Motherboard (KT400-8235)\n\t\t1019 1841  M811 (VT8367/VT8235/VT6103) [KT333] motherboard\n\t\t1019 1877  K8M800-M2 (V2.0) onboard audio\n\t\t1043 8095  A7V8X Motherboard (Realtek ALC650 codec)\n\t\t1043 80a1  A7V8X-X Motherboard\n\t\t1043 80b0  A7V600/K8V-X/K8V Deluxe motherboard (ADI AD1980 codec [SoundMAX])\n\t\t1043 80f3  SK8V motherboard\n\t\t1043 810d  P5VD1-X (AD1888 codec [SoundMax])\n\t\t1043 812a  A8V Deluxe motherboard (Realtek ALC850 codec)\n\t\t10ec 8168  High Definition Audio\n\t\t1106 3059  L7VMM2 Motherboard\n\t\t1106 4161  K7VT2 motherboard\n\t\t1106 4170  PCPartner P4M800-8237R Motherboard\n\t\t1106 4552  Soyo KT-600 Dragon Plus (Realtek ALC 650)\n\t\t1297 c160  FX41 motherboard (Realtek ALC650 codec)\n\t\t1413 147b  KV8 Pro motherboard onboard audio\n\t\t1458 a002  GA-7VAX Onboard Audio (Realtek ALC650)\n\t\t1462 0080  K8T NEO 2 motherboard\n\t\t1462 3800  KT266 onboard audio\n\t\t1462 5901  KT6 Delta-FIS2R (MS-6590)\n\t\t1462 7181  K8MM3-V mainboard\n\t\t147b 1407  KV8-MAX3 motherboard\n\t\t1695 300c  Realtek ALC655 audio on EP-8KRA series mainboard\n\t\t16f3 4170  J7F2 motherboard\n\t\t1734 1078  Amilo L7300T notebook\n\t\t1849 0850  ASRock 775Dual-880 Pro onboard audio (Realtek ALC850)\n\t\t1849 9739  P4VT8 Mainboard (C-Media CMI9739A codec)\n# probably all K7VT2/4*/6\n\t\t1849 9761  K7VT series Motherboards\n\t\t4005 4710  MSI K7T266 Pro2-RU (MSI-6380 v2) onboard audio (Realtek/ALC 200/200P)\n\t\ta0a0 01b6  AK77-8XN onboard audio\n\t\ta0a0 0342  AK86-L motherboard\n\t3065  VT6102/VT6103 [Rhine-II]\n\t\t1043 80a1  A7V8X-X Motherboard\n\t\t1043 80ed  A7V600-X Motherboard\n\t\t1106 0102  VT6102/6103 [Rhine II] Ethernet Controller\n\t\t1186 1400  DFE-530TX PCI Fast Ethernet Adapter (rev. A)\n\t\t1186 1401  DFE-530TX PCI Fast Ethernet Adapter (rev. B)\n\t\t1186 1402  DFE-530TX PCI Fast Ethernet Adapter (rev. B)\n\t\t13b9 1421  LD-10/100AL PCI Fast Ethernet Adapter (rev.B)\n\t\t1462 7061  MS-7061\n\t\t1462 7181  K8MM3-V mainboard\n\t\t147b 1c09  NV7 Motherboard\n\t\t1695 3005  VT6103\n# probably all K7VT2/4*/6\n\t\t1849 3065  K7VT series Motherboards\n# This hosts more than just the Intel 537 codec, it also hosts PCtel (SIL33) and SmartLink (SIL34) codecs\n\t3068  AC'97 Modem Controller\n\t\t1462 309e  MS-6309 Saturn Motherboard\n\t3074  VT8233 PCI to ISA Bridge\n\t\t1043 8052  VT8233A\n\t3091  VT8633 [Apollo Pro266]\n\t3099  VT8366/A/7 [Apollo KT266/A/333]\n\t\t1019 1841  M811 (VT8367/VT8235/VT6103) [KT333] motherboard\n\t\t1043 8064  A7V266-E Mainboard\n\t\t1043 807f  A7V333 Mainboard\n\t\t1849 3099  K7VT2 motherboard\n\t3101  VT8653 Host Bridge\n\t3102  VT8662 Host Bridge\n\t3103  VT8615 Host Bridge\n\t3104  USB 2.0 EHCI-Compliant Host-Controller\n\t\t0925 1234  onboard EHCI USB 2.0 Controller\n\t\t1019 0a81  L7VTA v1.0 Motherboard (KT400-8235)\n\t\t1043 808c  A7V8X motherboard\n\t\t1043 80a1  A7V8X-X motherboard rev 1.01\n\t\t1043 80ed  A7V600/K8V-X/A8V Deluxe motherboard\n\t\t1106 3104  USB 2.0 EHCI controller\n\t\t1297 f641  FX41 motherboard\n\t\t1458 5004  GA-7VAX Mainboard\n\t\t1462 5901  KT6 Delta-FIS2R (MS-6590)\n\t\t1462 7020  K8T NEO 2 motherboard\n\t\t1462 7094  K8T Neo2-F V2.0\n\t\t1462 7120  KT4AV motherboard\n\t\t1462 7181  K8MM3-V mainboard\n\t\t147b 1407  KV8-MAX3 motherboard\n\t\t182d 201d  CN-029 USB 2.0 4 port PCI Card\n# probably all K7VT2/4*/6\n\t\t1849 3104  K7VT series Motherboards\n\t\t19da a179  ZBOX nano VD01\n\t3106  VT6105/VT6106S [Rhine-III]\n\t\t1106 0105  VT6106S [Rhine-III]\n\t\t1186 1403  DFE-530TX PCI Fast Ethernet Adapter (rev. C)\n\t\t1186 1405  DFE-520TX Fast Ethernet PCI Adapter\n\t\t1186 1406  DFE-530TX+ rev F2\n\t\t1186 1407  DFE-538TX\n\t3108  K8M800/K8N800/K8N800A [S3 UniChrome Pro]\n\t3109  VT8233C PCI to ISA Bridge\n\t3112  VT8361 [KLE133] Host Bridge\n\t3113  VPX/VPX2 PCI to PCI Bridge Controller\n\t3116  VT8375 [KM266/KL266] Host Bridge\n\t\t1297 f641  FX41 motherboard\n\t3118  CN400/PM800/PM880/PN800/PN880 [S3 UniChrome Pro]\n\t3119  VT6120/VT6121/VT6122/VT6130 Gigabit Ethernet Adapter\n\t3122  VT8623 [Apollo CLE266] integrated CastleRock graphics\n\t3123  VT8623 [Apollo CLE266]\n\t3128  VT8753 [P4X266 AGP]\n\t3133  VT3133 Host Bridge\n\t3142  VT6651 WiFi Adapter, 802.11b\n\t3147  VT8233A ISA Bridge\n\t\t1043 808c  A7V333 motherboard\n\t3148  P4M266 Host Bridge\n\t3149  VIA VT6420 SATA RAID Controller\n\t\t1043 80ed  A7V600/K8V Deluxe/K8V-X/A8V Deluxe motherboard\n\t\t1458 b003  GA-7VM400AM(F) Motherboard\n\t\t1462 5901  KT6 Delta-FIS2R (MS-6590)\n\t\t1462 7020  K8T Neo 2 Motherboard\n\t\t1462 7094  K8T Neo2-F V2.0\n\t\t1462 7181  K8MM3-V mainboard\n\t\t147b 1407  KV8-MAX3 motherboard\n\t\t147b 1408  KV7\n\t\t1849 3149  K7VT6 motherboard\n\t\ta0a0 04ad  AK86-L motherboard\n\t3156  P/KN266 Host Bridge\n\t3157  CX700/VX700 [S3 UniChrome Pro]\n\t3164  VT6410 ATA133 RAID controller\n\t\t1043 80f4  P4P800 Mainboard Deluxe ATX\n\t\t1462 7028  915P/G Neo2\n\t3168  P4X333/P4X400/PT800 AGP Bridge\n\t\t1849 3168  P4VT8 Mainboard\n\t3177  VT8235 ISA Bridge\n\t\t1019 0a81  L7VTA v1.0 Motherboard (KT400-8235)\n\t\t1019 1841  M811 (VT8367/VT8235/VT6103) [KT333] motherboard\n\t\t1043 808c  A7V8X motherboard\n\t\t1043 80a1  A7V8X-X motherboard\n\t\t1106 0000  KT4AV motherboard\n\t\t1297 f641  FX41 motherboard\n\t\t1458 5001  GA-7VAX Mainboard\n# probably all K7VT2/4*/6\n\t\t1849 3177  K7VT series Motherboards\n\t3178  ProSavageDDR P4N333 Host Bridge\n\t3188  VT8385 [K8T800 AGP] Host Bridge\n\t\t1043 80a3  K8V Deluxe/K8V-X motherboard\n\t\t147b 1407  KV8-MAX3 motherboard\n\t3189  VT8377 [KT400/KT600 AGP] Host Bridge\n\t\t1043 807f  A7V8X motherboard\n\t\t1106 0000  KT4AV motherboard (KT400A)\n\t\t1458 5000  GA-7VAX Mainboard\n# probably all K7VT2/4*/6\n\t\t1849 3189  K7VT series Motherboards\n\t31b0  VX11 Standard Host Bridge\n\t31b1  VX11 Standard Host Bridge\n\t31b2  VX11 DRAM Controller\n\t31b3  VX11 Power Management Controller\n\t31b4  VX11 I/O APIC\n\t31b5  VX11 Scratch Device\n\t31b7  VX11 Standard Host Bridge\n\t31b8  VX11 PCI to PCI Bridge\n\t3204  K8M800 Host Bridge\n\t3205  VT8378 [KM400/A] Chipset Host Bridge\n\t\t1458 5000  GA-7VM400M Motherboard\n\t3208  PT890 Host Bridge\n\t3213  VPX/VPX2 PCI to PCI Bridge Controller\n\t3218  K8T800M Host Bridge\n\t3227  VT8237 ISA bridge [KT600/K8T800/K8T890/CN700 South]\n\t\t1043 80ed  A7V600/K8V-X/A8V Deluxe motherboard\n\t\t1106 3227  VT8237 ISA bridge\n\t\t1458 5001  GA-7VT600 Motherboard\n\t\t147b 1407  KV8-MAX3 motherboard\n\t\t1849 3227  K7VT4 motherboard\n\t3230  K8M890CE/K8N890CE [Chrome 9]\n\t3238  K8T890 Host Bridge\n\t3249  VT6421 IDE/SATA Controller\n\t\t1106 3249  VT6421 IDE/SATA Controller\n\t324a  CX700/VX700 PCI to PCI Bridge\n\t324b  CX700/VX700 Host Bridge\n\t324e  CX700/VX700 Internal Module Bus\n\t3253  VT6655 WiFi Adapter, 802.11a/b/g\n\t3258  PT880 Host Bridge\n\t3259  CN333/CN400/PM880 Host Bridge\n\t3260  VIA Chrome9 HC IGP\n\t3269  KT880 Host Bridge\n\t3282  K8T800Pro Host Bridge\n\t3287  VT8251 PCI to ISA Bridge\n\t3288  VX900/VT8xxx High Definition Audio Controller\n\t\t19da a179  ZBOX VD01\n\t3290  K8M890 Host Bridge\n\t3296  P4M800 Host Bridge\n\t3324  CX700/VX700-Series DRAM Bus Control\n\t3327  P4M890 Host Bridge\n\t3336  K8M890CE Host Bridge\n\t3337  VT8237A PCI to ISA Bridge\n\t3340  PT900 Host Bridge\n\t3343  P4M890 [S3 UniChrome Pro]\n\t3344  CN700/P4M800 Pro/P4M800 CE/VN800 Graphics [S3 UniChrome Pro]\n\t3349  VT8251 AHCI/SATA 4-Port Controller\n\t3351  VT3351 Host Bridge\n\t3353  VX800/820 PCI to PCI Bridge\n\t3364  CN896/VN896/P4M900 Host Bridge\n\t3365  VT630x IEEE 1394 Host Controller [Fire II/M]\n\t3371  CN896/VN896/P4M900 [Chrome 9 HC]\n\t3372  VT8237S PCI to ISA Bridge\n\t337a  VT8237A PCI to PCI Bridge\n\t337b  VT8237A Host Bridge\n\t3401  VT6325 Firewire Controller\n\t3402  VT8261 PCI to ISA Bridge\n\t3403  VT6315 Series Firewire Controller\n\t\t1043 8374  M5A88-V EVO\n\t\t1043 8384  P8P67 Deluxe Motherboard\n\t3409  VX855/VX875 DRAM Bus Control\n\t3410  VX900 Series DRAM Bus Control\n\t\t19da a179  ZBOX nano VD01\n\t3419  VN1000 Host Bridge\n\t3432  VL800/801 xHCI USB 3.0 Controller\n\t3456  VX11 Standard Host Bridge\n\t345b  VX11 Miscellaneous Bus\n\t3483  VL805/806 xHCI USB 3.0 Controller\n\t365a  VT3365 Card Reader Host Controller\n\t365b  VT3365 SDIO Host Controller\n\t3a01  VX11 Graphics [Chrome 645/640]\n\t401a  VT6325 Card Reader Host Controller\n\t401b  VT6325 SDIO PCI-E Host Controller\n\t4149  VIA VT6420 (ATA133) Controller\n\t4204  K8M800 Host Bridge\n\t4208  PT890 Host Bridge\n\t4238  K8T890 Host Bridge\n\t4258  PT880 Host Bridge\n\t4259  CN333/CN400/PM880 Host Bridge\n\t4269  KT880 Host Bridge\n\t4282  K8T800Pro Host Bridge\n\t4290  K8M890 Host Bridge\n\t4293  PM896 Host Bridge\n\t4296  P4M800 Host Bridge\n\t4308  PT894 Host Bridge\n\t4314  CN700/VN800/P4M800CE/Pro Host Bridge\n\t4324  CX700/VX700-Series Power Management and Testing Control\n\t4327  P4M890 Host Bridge\n\t4336  K8M890CE Host Bridge\n\t4340  PT900 Host Bridge\n\t4351  VT3351 Host Bridge\n\t4353  VX800/VX820 Power Management Control\n\t4364  CN896/VN896/P4M900 Host Bridge\n\t4409  VX855/VX875 Power Management Control\n\t4410  VX900 Series Power Management and Chip Testing Control\n\t\t19da a179  ZBOX nano VD01\n\t4419  VN1000 Host Bridge\n\t5030  VT82C596 ACPI [Apollo PRO]\n\t5122  VX855/VX875 Chrome 9 HCM Integrated Graphics\n\t5208  PT890 I/O APIC Interrupt Controller\n\t5238  K8T890 I/O APIC Interrupt Controller\n\t5287  VT8251 Serial ATA Controller\n\t5290  K8M890 I/O APIC Interrupt Controller\n\t5308  PT894 I/O APIC Interrupt Controller\n\t5324  CX700M2/VX700/VX800/820-Series Serial ATA & EIDE-Controller\n\t5327  P4M890 I/O APIC Interrupt Controller\n\t5336  K8M890CE I/O APIC Interrupt Controller\n\t5337  VT8237A Integrated SATA Controller\n\t5340  PT900 I/O APIC Interrupt Controller\n\t5351  VT3351 I/O APIC Interrupt Controller\n\t5353  VX800/VX820 APIC and Central Traffic Control\n\t5364  CN896/VN896/P4M900 I/O APIC Interrupt Controller\n\t5372  VT8237S SATA Controller\n\t5409  VX855/VX875 APIC and Central Traffic Control\n\t5410  VX900 Series APIC and Central Traffic Control\n\t5419  VN1000 I/O APIC Interrupt Controller\n\t6100  VT85C100A [Rhine II]\n\t6122  VN1000 Graphics [Chrome 520 IGP]\n\t6287  VT8251 AHCI SATA Controller\n\t6290  K8M890CE Host Bridge\n\t6327  P4M890 Security Device\n\t6353  VX800/VX820 Scratch Registers\n\t6364  CN896/VN896/P4M900 Security Device\n\t6409  VX855/VX875 Scratch Registers\n\t6410  VX900 Series Scratch Registers\n\t\t19da a179  ZBOX nano VD01\n\t6419  VN1000 Host Bridge\n\t7122  VX900 Graphics [Chrome9 HD]\n\t7204  K8M800 Host Bridge\n\t7205  KM400/KN400/P4M800 [S3 UniChrome]\n\t\t1458 d000  Gigabyte GA-7VM400(A)M(F) Motherboard\n\t\t1462 7061  MS-7061\n\t7208  PT890 Host Bridge\n\t7238  K8T890 Host Bridge\n\t7258  PT880 Host Bridge\n\t7259  CN333/CN400/PM880 Host Bridge\n\t7269  KT880 Host Bridge\n\t7282  K8T800Pro Host Bridge\n\t7290  K8M890 Host Bridge\n\t7293  PM896 Host Bridge\n\t7296  P4M800 Host Bridge\n\t7308  PT894 Host Bridge\n\t7314  CN700/VN800/P4M800CE/Pro Host Bridge\n\t7324  CX700/VX700-Series North-South Module Interface Control\n\t7327  P4M890 Host Bridge\n\t7336  K8M890CE Host Bridge\n\t7340  PT900 Host Bridge\n\t7351  VT3351 Host Bridge\n\t7353  VX800/VX820 North-South Module Interface Control\n\t7364  CN896/VN896/P4M900 Host Bridge\n\t7372  VT8237S SATA RAID Controller\n\t7409  VX855/VX875 North-South Module Interface Control\n\t7410  VX900 Series North-South Module Interface Control\n\t\t19da a179  ZBOX nano VD01\n\t7419  VN1000 Host Bridge\n\t8231  VT8231 [PCI-to-ISA Bridge]\n\t8235  VT8235 ACPI\n\t8305  VT8363/8365 [KT133/KM133 AGP]\n\t8324  CX700/VX700-Series Bus Control and Power Management\n\t8353  VX800/VX820 Bus Control and Power Management\n\t8391  VT8371 [KX133 AGP]\n\t8400  MVP4\n\t8409  VX855/VX875 Bus Control and Power Management\n\t8410  VX900 Series Bus Control and Power Management\n\t\t19da a179  ZBOX VD01\n\t8500  KLE133/PLE133/PLE133T\n\t8501  VT8501 [Apollo MVP4 AGP]\n\t8596  VT82C596 [Apollo PRO AGP]\n\t8597  VT82C597 [Apollo VP3 AGP]\n\t8598  VT82C598/694x [Apollo MVP3/Pro133x AGP]\n\t\t1019 0985  P6VXA Motherboard\n\t8601  VT8601 [Apollo ProMedia AGP]\n\t8605  VT8605 [PM133 AGP]\n\t8691  VT82C691 [Apollo Pro]\n\t8693  VT82C693 [Apollo Pro Plus] PCI Bridge\n\t8a25  PL133/PL133T [S3 ProSavage]\n\t8a26  KL133/KL133A/KM133/KM133A [S3 ProSavage]\n\t8d01  PN133/PN133T [S3 Twister]\n\t8d04  KM266/P4M266/P4M266A/P4N266 [S3 ProSavageDDR]\n\t9000  VT8261 IDE Controller [StorX IDE Controller - 9000]\n\t9001  VX900 Series Serial-ATA Controller\n\t9040  VT8261 SATA Controller [StorX RAID Controller - 9040]\n\t9041  VX900/VX11 SATA Controller [StorX RAID Controller - 9041]\n\t9082  Standard AHCI 1.0 SATA Controller\n\t9140  VX11 Graphics [Chrome 645/640] HDMI Audio Device\n\t9170  VX900 Graphics [Chrome9 HD] HDMI Audio Device\n\t9201  USB3.0 Controller\n\t9380  Ncore Coprocessor for Centaur CNS\n\t9530  VX800/820/900/VT8261 Series Secure Digital Memory Card Controller\n\t95d0  VX800/820/900 Series SDIO Host Controller\n\ta208  PT890 PCI to PCI Bridge Controller\n\ta238  K8T890 PCI to PCI Bridge Controller\n\ta327  P4M890 PCI to PCI Bridge Controller\n\ta353  VX8xx/900 Series South-North Module Interface Control\n\ta364  CN896/VN896/P4M900 PCI to PCI Bridge Controller\n\ta409  VX855/VX875/VX900 Series USB Device Controller\n\ta410  VX900 Series PCI Express Root Port 0\n\ta419  VN1000 PCI to PCI Bridge\n\tb091  VT8633 [Apollo Pro266 AGP]\n\tb099  VT8366/A/7 [Apollo KT266/A/333 AGP]\n\tb101  VT8653 AGP Bridge\n\tb102  VT8362 AGP Bridge\n\tb103  VT8615 AGP Bridge\n\tb112  VT8361 [KLE133] AGP Bridge\n\tb113  VPX/VPX2 I/O APIC Interrupt Controller\n\tb115  VT8363/8365 [KT133/KM133] PCI Bridge\n\tb168  VT8235 PCI Bridge\n\tb188  VT8237/8251 PCI bridge [K8M890/K8T800/K8T890 South]\n\t\t147b 1407  KV8-MAX3 motherboard\n\tb198  VT8237/CX700/VX700-Series PCI to PCI Bridge\n\tb213  VPX/VPX2 I/O APIC Interrupt Controller\n\tb353  VX855/VX875/VX900 PCI to PCI Bridge\n\tb410  VX900 Series PCI Express Root Port 1\n\tb419  VN1000 Host Bridge\n\tb999  [K8T890 North / VT8237 South] PCI Bridge\n\tc208  PT890 PCI to PCI Bridge Controller\n\tc238  K8T890 PCI to PCI Bridge Controller\n\tc327  P4M890 PCI to PCI Bridge Controller\n\tc340  PT900 PCI to PCI Bridge Controller\n\tc353  VX800/820-Series PCI-Express Root (PCI-to-PCI Virtual Bridge)\n\tc364  CN896/VN896/P4M900 PCI to PCI Bridge Controller\n\tc409  VX855/VX875 EIDE Controller\n\tc410  VX900 Series PCI Express Root Port 2\n\tc419  VN1000 PCI to PCI Bridge\n\td104  VT8237R USB UDCI Controller\n\td208  PT890 PCI to PCI Bridge Controller\n\td213  VPX/VPX2 PCI to PCI Bridge Controller\n\td238  K8T890 PCI to PCI Bridge Controller\n\td340  PT900 PCI to PCI Bridge Controller\n\td410  VX900 Series PCI Express Root Port 3\n\td419  VN1000 PCI to PCI Bridge\n\te208  PT890 PCI to PCI Bridge Controller\n\te238  K8T890 PCI to PCI Bridge Controller\n\te340  PT900 PCI to PCI Bridge Controller\n\te353  VX800/820-Series PCI-Express Root Port 0\n\te410  VX900 Series PCI Express Physical Layer Electrical Sub-block\n\te419  VN1000 PCI to PCI Bridge\n\tf208  PT890 PCI to PCI Bridge Controller\n\tf238  K8T890 PCI to PCI Bridge Controller\n\tf340  PT900 PCI to PCI Bridge Controller\n\tf353  VX800/820-Series PCI-Express Root Port 1\n\tf410  VX900 Series PCI UART Port 0-3\n\tf419  VN1000 PCI to PCI Bridge\n1107  Stratus Computers\n\t0576  VIA VT82C570MV [Apollo] (Wrong vendor ID!)\n1108  Proteon, Inc.\n\t0100  p1690plus_AA\n\t0101  p1690plus_AB\n\t0105  P1690Plus\n\t0108  P1690Plus\n\t0138  P1690Plus\n\t0139  P1690Plus\n\t013c  P1690Plus\n\t013d  P1690Plus\n1109  Cogent Data Technologies, Inc.\n\t1400  EM110TX [EX110TX]\n110a  Siemens AG\n\t0002  Pirahna 2-port\n\t0005  Tulip controller, power management, switch extender\n\t0006  FSC PINC (I/O-APIC)\n\t0015  FSC Multiprocessor Interrupt Controller\n\t001d  FSC Copernicus Management Controller\n\t007b  FSC Remote Service Controller, mailbox device\n\t007c  FSC Remote Service Controller, shared memory device\n\t007d  FSC Remote Service Controller, SMIC device\n\t2101  HST SAPHIR V Primary PCI (ISDN/PMx)\n# Superfastcom-PCI (Commtech, Inc.) or DSCC4 WAN Adapter\n\t2102  DSCC4 PEB/PEF 20534 DMA Supported Serial Communication Controller with 4 Channels\n\t2104  Eicon Diva 2.02 compatible passive ISDN card\n# S30807-Q5474\n\t3101  HiPath 4000 PCI card\n\t3141  SIMATIC NET CP 5611 / 5621\n\t3142  SIMATIC NET CP 5613 / 5614\n\t3143  SIMATIC NET CP 1613\n\t4021  SIMATIC NET CP 5512 (Profibus and MPI Cardbus Adapter)\n\t4029  SIMATIC NET CP 5613 A2\n\t\t110a 4029  SIMATIC NET CP 5613 A2\n\t\t110a c029  SIMATIC NET CP 5614 A2\n\t4035  SIMATIC NET CP 1613 A2\n\t4036  SIMATIC NET CP 1616\n\t4038  SIMATIC NET CP 1604\n\t4069  SIMATIC NET CP 5623\n\t\t110a 4069  SIMATIC NET CP 5623\n\t\t110a c069  SIMATIC NET CP 5624\n\t407c  SIMATIC NET CP 5612\n\t407d  SIMATIC NET CP 5613 A3\n\t407e  SIMATIC NET CP 5622\n\t4083  SIMATIC NET CP 5614 A3\n\t4084  SIMATIC NET CP 1626\n\t4942  FPGA I-Bus Tracer for MBD\n\t6120  SZB6120\n110b  Chromatic Research Inc.\n\t0001  Mpact Media Processor\n\t0004  Mpact 2\n110c  Mini-Max Technology, Inc.\n110d  Znyx Advanced Systems\n110e  CPU Technology\n110f  Ross Technology\n1110  Powerhouse Systems\n\t6037  Firepower Powerized SMP I/O ASIC\n\t6073  Firepower Powerized SMP I/O ASIC\n1111  Santa Cruz Operation\n# Also claimed to be RNS or Rockwell International, current PCISIG records list Osicom\n1112  Osicom Technologies Inc\n\t2200  FDDI Adapter\n\t2300  Fast Ethernet Adapter\n\t2340  4 Port Fast Ethernet Adapter\n\t2400  ATM Adapter\n1113  Accton Technology Corporation\n\t1211  SMC2-1211TX\n\t\t103c 1207  EN-1207D Fast Ethernet Adapter\n\t\t1113 1211  EN-1207D Fast Ethernet Adapter\n\t1216  EN-1216 Ethernet Adapter\n\t\t1113 1216  EN1207F series PCI Fast Ethernet Adapter\n\t\t1113 2220  EN2220A Cardbus Fast Ethernet Adapter\n\t\t1113 2242  EN2242 10/100 Ethernet Mini-PCI Card\n\t\t111a 1020  SpeedStream 1020 PCI 10/100 Ethernet Adaptor [EN-1207F-TX ?]\n\t1217  EN-1217 Ethernet Adapter\n\t5105  10Mbps Network card\n\t9211  EN-1207D Fast Ethernet Adapter\n\t\t1113 9211  EN-1207D Fast Ethernet Adapter\n\t9511  21x4x DEC-Tulip compatible Fast Ethernet\n\td301  CPWNA100 (Philips wireless PCMCIA)\n\tec02  SMC 1244TX v3\n\tee23  SMCWPCIT-G 108Mbps Wireless PCI adapter\n1114  Atmel Corporation\n\t0506  at76c506 802.11b Wireless Network Adaptor\n1115  3D Labs\n1116  Data Translation\n\t0022  DT3001\n\t0023  DT3002\n\t0024  DT3003\n\t0025  DT3004\n\t0026  DT3005\n\t0027  DT3001-PGL\n\t0028  DT3003-PGL\n\t0051  DT322\n\t0060  DT340\n\t0069  DT332\n\t80c2  DT3162\n1117  Datacube, Inc\n\t9500  Max-1C SVGA card\n\t9501  Max-1C image processing\n1118  Berg Electronics\n1119  ICP Vortex Computersysteme GmbH\n\t0000  GDT 6000/6020/6050\n\t0001  GDT 6000B/6010\n\t0002  GDT 6110/6510\n\t0003  GDT 6120/6520\n\t0004  GDT 6530\n\t0005  GDT 6550\n\t0006  GDT 6117/6517\n\t0007  GDT 6127/6527\n\t0008  GDT 6537\n\t0009  GDT 6557/6557-ECC\n\t000a  GDT 6115/6515\n\t000b  GDT 6125/6525\n\t000c  GDT 6535\n\t000d  GDT 6555/6555-ECC\n\t0100  GDT 6117RP/6517RP\n\t0101  GDT 6127RP/6527RP\n\t0102  GDT 6537RP\n\t0103  GDT 6557RP\n\t0104  GDT 6111RP/6511RP\n\t0105  GDT 6121RP/6521RP\n\t0110  GDT 6117RD/6517RD\n\t0111  GDT 6127RD/6527RD\n\t0112  GDT 6537RD\n\t0113  GDT 6557RD\n\t0114  GDT 6111RD/6511RD\n\t0115  GDT 6121RD/6521RD\n\t0118  GDT 6118RD/6518RD/6618RD\n\t0119  GDT 6128RD/6528RD/6628RD\n\t011a  GDT 6538RD/6638RD\n\t011b  GDT 6558RD/6658RD\n\t0120  GDT 6117RP2/6517RP2\n\t0121  GDT 6127RP2/6527RP2\n\t0122  GDT 6537RP2\n\t0123  GDT 6557RP2\n\t0124  GDT 6111RP2/6511RP2\n\t0125  GDT 6121RP2/6521RP2\n\t0136  GDT 6113RS/6513RS\n\t0137  GDT 6123RS/6523RS\n\t0138  GDT 6118RS/6518RS/6618RS\n\t0139  GDT 6128RS/6528RS/6628RS\n\t013a  GDT 6538RS/6638RS\n\t013b  GDT 6558RS/6658RS\n\t013c  GDT 6533RS/6633RS\n\t013d  GDT 6543RS/6643RS\n\t013e  GDT 6553RS/6653RS\n\t013f  GDT 6563RS/6663RS\n\t0166  GDT 7113RN/7513RN/7613RN\n\t0167  GDT 7123RN/7523RN/7623RN\n\t0168  GDT 7118RN/7518RN/7518RN\n\t0169  GDT 7128RN/7528RN/7628RN\n\t016a  GDT 7538RN/7638RN\n\t016b  GDT 7558RN/7658RN\n\t016c  GDT 7533RN/7633RN\n\t016d  GDT 7543RN/7643RN\n\t016e  GDT 7553RN/7653RN\n\t016f  GDT 7563RN/7663RN\n\t01d6  GDT 4x13RZ\n\t01d7  GDT 4x23RZ\n\t01f6  GDT 8x13RZ\n\t01f7  GDT 8x23RZ\n\t01fc  GDT 8x33RZ\n\t01fd  GDT 8x43RZ\n\t01fe  GDT 8x53RZ\n\t01ff  GDT 8x63RZ\n\t0210  GDT 6519RD/6619RD\n\t0211  GDT 6529RD/6629RD\n\t0260  GDT 7519RN/7619RN\n\t0261  GDT 7529RN/7629RN\n\t02ff  GDT MAXRP\n\t0300  GDT NEWRX\n\t0301  GDT NEWRX2\n111a  Efficient Networks, Inc\n\t0000  155P-MF1 (FPGA)\n\t0002  155P-MF1 (ASIC)\n\t0003  ENI-25P ATM\n\t\t111a 0000  ENI-25p Miniport ATM Adapter\n\t0005  SpeedStream (LANAI)\n\t\t111a 0001  ENI-3010 ATM\n\t\t111a 0009  ENI-3060 ADSL (VPI=0)\n\t\t111a 0101  ENI-3010 ATM\n\t\t111a 0109  ENI-3060CO ADSL (VPI=0)\n\t\t111a 0809  ENI-3060 ADSL (VPI=0 or 8)\n\t\t111a 0909  ENI-3060CO ADSL (VPI=0 or 8)\n\t\t111a 0a09  ENI-3060 ADSL (VPI=<0..15>)\n\t0007  SpeedStream ADSL\n\t\t111a 1001  ENI-3061 ADSL [ASIC]\n\t1020  SpeedStream PCI 10/100 Network Card\n\t1203  SpeedStream 1023 Wireless PCI Adapter\n111b  Teledyne Electronic Systems\n111c  Tricord Systems Inc.\n\t0001  Powerbis Bridge\n# now owned by Microchip Technology\n111d  Microsemi / PMC / IDT\n\t0001  IDT77201/77211 155Mbps ATM SAR Controller [NICStAR]\n\t0003  IDT77222/77252 155Mbps ATM MICRO ABR SAR Controller\n\t0004  IDT77V252 155Mbps ATM MICRO ABR SAR Controller\n\t0005  IDT77V222 155Mbps ATM MICRO ABR SAR Controller\n\t8018  PES12N3A 12-lane 3-Port PCI Express Switch\n\t801c  PES24N3A PCI Express Switch\n\t8028  PES4T4 PCI Express Switch\n\t802b  PES8T5A PCI Express Switch\n\t802c  PES16T4 PCI Express Switch\n\t802d  PES16T7 PCI Express Switch\n\t802e  PES24T6 PCI Express Switch\n\t802f  PES32T8 PCI Express Switch\n\t8032  PES48T12 PCI Express Switch\n\t8034  PES16/22/34H16 PCI Express Switch\n\t8035  PES32H8 PCI Express Switch\n\t8036  PES48H12 PCI Express Switch\n\t8037  PES64H16 PCI Express Switch\n\t8039  PES3T3 PCI Express Switch\n\t803a  PES4T4 PCI Express Switch\n\t803c  PES5T5 PCI Express Switch\n\t803d  PES6T5 PCI Express Switch\n\t8048  PES8NT2 PCI Express Switch\n\t8049  PES8NT2 PCI Express Switch\n\t804a  PES8NT2 PCI Express Internal NTB\n\t804b  PES8NT2 PCI Express External NTB\n\t804c  PES16NT2 PCI Express Switch\n\t804d  PES16NT2 PCI Express Switch\n\t804e  PES16NT2 PCI Express Internal NTB\n\t804f  PES16NT2 PCI Express External NTB\n\t8058  PES12NT3 PCI Express Switch\n\t8059  PES12NT3 PCI Express Switch\n\t805a  PES12NT3 PCI Express Internal NTB\n\t805b  PES12NT3 PCI Express External NTB\n\t805c  PES24NT3 PCI Express Switch\n\t805d  PES24NT3 PCI Express Switch\n\t805e  PES24NT3 PCI Express Internal NTB\n\t805f  PES24NT3 PCI Express External NTB\n\t8060  PES16T4G2 PCI Express Gen2 Switch\n\t8061  PES12T3G2 PCI Express Gen2 Switch\n\t8068  PES6T6G2 PCI Express Gen2 Switch\n\t806a  PES24T3G2 PCI Express Gen2 Switch\n\t\t14c1 000c  10G-PCIE2-8B2\n\t806c  PES16T4A/4T4G2 PCI Express Gen2 Switch\n\t806e  PES24T6G2 PCI Express Gen2 Switch\n\t806f  HIO524G2 PCI Express Gen2 Switch\n\t8077  89HPES64H16G2 64-Lane 16-Port PCIe Gen2 System Interconnect Switch\n\t8088  PES32NT8BG2 PCI Express Switch\n\t\t1093 752f  PXIe-8383mc Device\n\t\t1093 7543  PXIe-8383mc System Host\n\t\t1093 755c  PXIe-8364\n\t\t1093 755d  PXIe-8374\n\t\t1093 75ff  PXIe-8383mc DMA\n\t\t1093 7600  PXIe-8383mc DMA\n\t\t1093 7602  PXIe-8384\n# 32-lanes 24-ports Gen.2\n\t808a  89HPES32NT24BG2 PCI Express Switch\n# 32-lanes 24-ports Gen.2\n\t808c  89HPES32NT24AG2 PCI Express Switch\n\t808e  PES24NT24G2 PCI Express Switch\n\t808f  89HPES32NT8AG2 32-Lane 8-Port PCIe Gen2 System Interconnect Switch with Non-Transparent Bridging\n\t8090  89HPES16NT16G2 16-Lane 16-Port PCIe Gen2 System Interconnect Switch\n\t8092  89HPES12NT12G2 12-Lane 12-Port PCIe Gen2 System Interconnect Switch\n\t80cf  F32P08xG3 [PCIe boot mode]\n\t80d2  F32P08xG3 NVMe controller\n111e  Eldec\n111f  Precision Digital Images\n\t4a47  Precision MX Video engine interface\n\t5243  Frame capture bus interface\n# formerly EMC Corporation\n1120  Dell EMC\n\t2306  Unity Fibre Channel Controller\n\t2501  Unity Ethernet Controller\n\t2505  Unity Fibre Channel Controller\n1121  Zilog\n1122  Multi-tech Systems, Inc.\n1123  Excellent Design, Inc.\n1124  Leutron Vision AG\n\t2581  Picport Monochrome\n1125  Eurocore\n1126  Vigra\n1127  FORE Systems Inc\n\t0200  ForeRunner PCA-200 ATM\n\t0210  PCA-200PC\n\t0250  ATM\n\t0300  ForeRunner PCA-200EPC ATM\n\t0310  ATM\n\t0400  ForeRunnerHE ATM Adapter\n\t\t1127 0400  ForeRunnerHE ATM\n1129  Firmworks\n112a  Hermes Electronics Company, Ltd.\n# nee Linotype - Hell AG\n112b  Heidelberger Druckmaschinen AG\n\t0001  SCU5\n112c  Zenith Data Systems\n112d  Ravicad\n112e  Infomedia Microelectronics Inc.\n112f  Dalsa Inc.\n\t0000  MVC IC-PCI\n\t0001  MVC IM-PCI Video frame grabber/processor\n\t0004  PCDig Digital Image Capture\n\t0008  PC-CamLink PCI framegrabber\n1130  Computervision\n1131  Philips Semiconductors\n\t1561  USB 1.1 Host Controller\n\t\t1775 c200  C2K onboard USB 1.1 host controller\n\t1562  USB 2.0 Host Controller\n\t\t1775 c200  C2K onboard USB 2.0 host controller\n\t3400  SmartPCI56(UCB1500) 56K Modem\n\t5400  TriMedia TM1000/1100\n\t\t12ca 0000  BlueICE\n\t5402  TriMedia TM1300\n\t\t1244 0f00  Fritz!Card DSL\n\t\t15eb 1300  DT1300\n\t\t15eb 1302  DT1302\n\t\t15eb 1304  DT1304\n\t\t15eb 1305  DT1305\n\t\t15eb 1306  PMCDT1306\n\t\t15eb 1308  DT1308\n\t\t15eb 1331  DT1301 with SAA7121\n\t\t15eb 1337  DT1301 with SAA7127\n\t\t15eb 2d3d  X3D\n\t\t15eb 7022  PTM1300\n\t5405  TriMedia TM1500\n\t\t1136 0005  LCP-1500\n\t5406  TriMedia TM1700\n\t540b  PNX1005 Media Processor\n\t\t1131 0020  PNXLite PCI Demo Board\n\t7130  SAA7130 Video Broadcast Decoder\n\t\t0000 4016  Behold TV 401\n\t\t0000 4051  Behold TV 405 FM\n\t\t0000 5051  Behold TV 505 RDS\n\t\t0000 505b  Behold TV 505 RDS\n\t\t102b 48d0  Matrox CronosPlus\n\t\t1048 226b  ELSA EX-VISION 300TV\n\t\t107d 6655  WinFast DTV1000S\n\t\t1131 0000  SAA7130-based TV tuner card\n\t\t1131 2001  10MOONS PCI TV CAPTURE CARD\n\t\t1131 2005  Techcom (India) TV Tuner Card (SSD-TV-670)\n\t\t1458 9006  GT-PS700 DVB-S tuner\n\t\t1461 050c  Nagase Sangyo TransGear 3000TV\n\t\t1461 10ff  AVerMedia DVD EZMaker\n\t\t1461 2108  AverMedia AverTV/305\n\t\t1461 2115  AverMedia AverTV Studio 305\n\t\t153b 1152  Terratec Cinergy 200 TV\n\t\t185b c100  Compro VideoMate TV PVR/FM\n\t\t185b c901  Videomate DVB-T200\n\t\t5168 0138  LifeView FlyVIDEO2000\n\t\t5ace 5010  Behold TV 501\n\t\t5ace 5050  Behold TV 505 FM\n\t7133  SAA7131/SAA7133/SAA7135 Video Broadcast Decoder\n\t\t0000 4091  Beholder BeholdTV 409 FM\n\t\t0000 5071  Behold TV 507 RDS\n\t\t0000 507b  Behold TV 507 RDS\n\t\t0000 5201  Behold TV Columbus\n\t\t0070 6701  WinTV HVR-1110\n\t\t1019 4cb5  Elitegroup ECS TVP3XP FM1236 Tuner Card (NTSC,FM)\n\t\t1043 0210  FlyTV mini Asus Digimatrix\n\t\t1043 4843  TV-FM 7133\n\t\t1043 4845  TV-FM 7135\n\t\t1043 4862  P7131 Dual\n\t\t1043 4876  My Cinema-P7131 Hybrid\n\t\t1131 0000  SAA713x-based TV tuner card\n\t\t1131 2001  Proteus Pro [philips reference design]\n\t\t1131 2018  Tiger reference design\n\t\t1131 4ee9  MonsterTV Mobile\n\t\t1131 7133  Pinnacle PCTV 301i\n\t\t11bd 002b  PCTV Stereo\n\t\t11bd 002e  PCTV 110i (saa7133)\n\t\t12ab 0800  PURPLE TV\n\t\t13c2 2804  Technotrend Budget T-3000 Hybrid\n\t\t1421 0335  Instant TV DVB-T Cardbus\n\t\t1421 1370  Instant TV (saa7135)\n\t\t1435 7330  VFG7330\n\t\t1435 7350  VFG7350\n\t\t1458 9001  GC-PTV-TAF Hybrid TV card\n\t\t1458 9002  GT-PTV-TAF-RH DVB-T/Analog TV/FM tuner\n\t\t1458 9003  GT-PTV-AF-RH Analog TV/FM tuner\n\t\t1458 9004  GT-P8000 DVB-T/Analog TV/FM tuner\n\t\t1458 9005  GT-P6000 Analog TV/FM tuner\n\t\t1458 9008  GT-P5100 Analog TV tuner\n\t\t1461 1044  AVerTVHD MCE A180\n\t\t1461 4836  M10D Hybrid DVBT\n\t\t1461 861e  M105 PAL/SECAM/NTSC/FM Tuner\n\t\t1461 a14b  AVerTV Studio 509\n\t\t1461 a836  M115 DVB-T, PAL/SECAM/NTSC Tuner\n\t\t1461 f01d  DVB-T Super 007\n\t\t1461 f31f  Avermedia AVerTV GO 007 FM\n\t\t1461 f936  Hybrid+FM PCI (rev A16D)\n\t\t1462 6231  TV@nywhere Plus\n\t\t1489 0214  LifeView FlyTV Platinum FM\n\t\t14c0 1212  LifeView FlyTV Platinum Mini2\n\t\t153b 1160  Cinergy 250 PCI TV\n\t\t153b 1162  Terratec Cinergy 400 mobile\n\t\t17de 7256  PlusTV All In One PI610 card\n\t\t17de 7350  ATSC 110 Digital / Analog HDTV Tuner\n\t\t17de 7352  ATSC 115 Digital / Analog HDTV Tuner\n\t\t185b c100  VideoMate TV\n\t\t185b c900  VideoMate T750\n\t\t5168 0306  LifeView FlyDVB-T DUO\n\t\t5168 0319  LifeView FlyDVB Trio\n\t\t5168 0502  LifeView FlyDVB-T Duo CardBus\n\t\t5168 0520  LifeView FlyDVB Trio CardBus\n\t\t5168 1502  LifeView FlyTV CardBus\n\t\t5168 2502  LifeView FlyDVB-T CardBus\n\t\t5168 2520  LifeView FlyDVB-S Duo CardBus\n\t\t5168 3502  LifeView FlyDVB-T Hybrid CardBus\n\t\t5168 3520  LifeView FlyDVB Trio N CardBus\n\t\t5ace 5030  Behold TV 503 FM\n\t\t5ace 5090  Behold TV 509 FM\n\t\t5ace 6090  Behold TV 609 FM\n\t\t5ace 6091  Behold TV 609 FM\n\t\t5ace 6092  Behold TV 609 RDS\n\t\t5ace 6093  Behold TV 609 RDS\n\t\t5ace 6190  Behold TV M6\n\t\t5ace 6191  Behold TV M63\n\t\t5ace 6193  Behold TV M6 Extra\n\t\t5ace 6290  Behold TV H6\n\t\t5ace 7090  Behold TV A7\n\t\t5ace 7150  Behold TV H75\n\t\t5ace 7151  Behold TV H75\n\t\t5ace 7190  Behold TV H7\n\t\t5ace 7191  Behold TV H7\n\t\t5ace 7290  Behold TV T7\n\t\t5ace 7591  Behold TV X7\n\t\t5ace 7595  Behold TV X7\n\t7134  SAA7134/SAA7135HL Video Broadcast Decoder\n\t\t0000 4036  Behold TV 403\n\t\t0000 4037  Behold TV 403 FM\n\t\t0000 4071  Behold TV 407 FM\n\t\t1019 4cb4  Elitegroup ECS TVP3XP FM1216 Tuner Card(PAL-BG,FM)\n\t\t1043 0210  Digimatrix TV\n\t\t1043 4840  TV-FM 7134\n\t\t1043 4842  TV-FM 7134\n\t\t1131 0000  SAA713x-based TV tuner card\n\t\t1131 2004  EUROPA V3 reference design\n\t\t1131 4e85  SKNet Monster TV\n\t\t1131 6752  EMPRESS\n\t\t11bd 002b  PCTV Stereo\n\t\t11bd 002d  PCTV 300i DVB-T + PAL\n\t\t1461 2c00  AverTV Hybrid+FM PCI\n\t\t1461 9715  AVerTV Studio 307\n\t\t1461 a70a  Avermedia AVerTV 307\n\t\t1461 a70b  AverMedia M156 / Medion 2819\n\t\t1461 d6ee  Cardbus TV/Radio (E500)\n\t\t1471 b7e9  AVerTV Cardbus plus\n\t\t153b 1142  Terratec Cinergy 400 TV\n\t\t153b 1143  Terratec Cinergy 600 TV\n\t\t153b 1158  Terratec Cinergy 600 TV MK3\n\t\t1540 9524  ProVideo PV952\n\t\t16be 0003  Medion 7134\n\t\t185b c200  Compro VideoMate Gold+ Pal\n\t\t185b c900  Videomate DVB-T300\n\t\t1894 a006  KNC One TV-Station DVR\n\t\t1894 fe01  KNC One TV-Station RDS / Typhoon TV Tuner RDS\n\t\t5168 0138  FLY TV PRIME 34FM\n\t\t5168 0300  FlyDVB-S\n\t\t5ace 5070  Behold TV 507 FM\n\t\t5ace 6070  Behold TV 607 FM\n\t\t5ace 6071  Behold TV 607 FM\n\t\t5ace 6072  Behold TV 607 RDS\n\t\t5ace 6073  Behold TV 607 RDS\n\t7145  SAA7145\n\t7146  SAA7146\n\t\t110a 0000  Fujitsu/Siemens DVB-C card rev1.5\n\t\t110a ffff  Fujitsu/Siemens DVB-C card rev1.5\n\t\t1124 2581  Leutron Vision PicPort\n\t\t1131 4f56  KNC1 DVB-S Budget\n\t\t1131 4f60  Fujitsu-Siemens Activy DVB-S Budget Rev AL\n\t\t1131 4f61  Activy DVB-S Budget Rev GR\n\t\t1131 5f61  Activy DVB-T Budget\n\t\t114b 2003  DVRaptor Video Edit/Capture Card\n\t\t1159 0040  MuTech M-Vision 500 (MV-500 rev. E)\n\t\t1159 0050  MuTech M-Vision 500 (MV-500 rev. F)\n\t\t11bd 0006  DV500 Overlay\n\t\t11bd 000a  DV500 Overlay\n\t\t11bd 000f  DV500 Overlay\n\t\t13c2 0000  Siemens/Technotrend/Hauppauge DVB card rev1.3 or rev1.5\n\t\t13c2 0001  Technotrend/Hauppauge DVB card rev1.3 or rev1.6\n\t\t13c2 0002  Technotrend/Hauppauge DVB card rev2.1\n\t\t13c2 0003  Technotrend/Hauppauge DVB card rev2.1\n\t\t13c2 0004  Technotrend/Hauppauge DVB card rev2.1\n\t\t13c2 0006  Technotrend/Hauppauge DVB card rev1.3 or rev1.6\n\t\t13c2 0008  Technotrend/Hauppauge DVB-T\n\t\t13c2 000a  Octal/Technotrend DVB-C for iTV\n\t\t13c2 000e  Technotrend/Hauppauge DVB card rev2.3\n\t\t13c2 1003  Technotrend-Budget/Hauppauge WinTV-NOVA-S DVB card\n\t\t13c2 1004  Technotrend-Budget/Hauppauge WinTV-NOVA-C DVB card\n\t\t13c2 1005  Technotrend-Budget/Hauppauge WinTV-NOVA-T DVB card\n\t\t13c2 100c  Technotrend-Budget/Hauppauge WinTV-NOVA-CI DVB card\n\t\t13c2 100f  Technotrend-Budget/Hauppauge WinTV-NOVA-CI DVB card\n\t\t13c2 1010  DVB C-1500\n\t\t13c2 1011  Technotrend-Budget/Hauppauge WinTV-NOVA-T DVB card\n\t\t13c2 1012  DVB T-1500\n\t\t13c2 1013  SATELCO Multimedia DVB\n\t\t13c2 1016  WinTV-NOVA-SE DVB card\n\t\t13c2 1018  DVB S-1401\n\t\t13c2 1019  S2-3200\n\t\t13c2 1102  Technotrend/Hauppauge DVB card rev2.1\n\t\t153b 1155  Cinergy 1200 DVB-S\n\t\t153b 1156  Cinergy 1200 DVB-C\n\t\t153b 1157  Cinergy 1200 DVB-T\n\t\t153b 1176  Cinergy 1200 DVB-C (MK3)\n\t\t1894 0020  KNC One DVB-C V1.0\n\t\t1894 0023  TV-Station DVB-C plus\n\t\t1894 0054  TV-Station DVB-S\n\t7160  SAA7160\n\t\t1458 9009  E8000 DVB-T/Analog TV/FM tuner\n\t\t1461 1455  AVerTV Hybrid Speedy PCI-E (H788)\n\t7162  SAA7162\n\t\t11bd 0101  Pinnacle PCTV 7010iX TV Card\n\t7164  SAA7164\n\t\t0070 8800  WinTV HVR-2250\n\t\t0070 8810  WinTV HVR-2250\n\t\t0070 8851  WinTV HVR-2250\n\t\t0070 8853  WinTV HVR-2250\n\t\t0070 8880  WinTV HVR-2250\n\t\t0070 8891  WinTV HVR-2250\n\t\t0070 88a0  WinTV HVR-2250\n\t\t0070 88a1  WinTV HVR-2250\n\t\t0070 8900  WinTV HVR-2200\n\t\t0070 8901  WinTV HVR-2200\n\t\t0070 8940  WinTV HVR-2200 (submodel 89619)\n\t\t0070 8951  WinTV HVR-2200\n\t\t0070 8953  WinTV HVR-2200\n\t\t0070 8980  WinTV HVR-2200\n\t\t0070 8991  WinTV HVR-2200\n\t\t0070 8993  WinTV HVR-2200\n\t\t0070 89a0  WinTV HVR-2200\n\t\t0070 89a1  WinTV HVR-2200\n\t\t0070 f120  WinTV HVR-2205\n\t\t0070 f123  WinTV HVR-2215\n\t7231  SAA7231\n\t\t5ace 8000  Behold TV H8\n\t\t5ace 8001  Behold TV H8\n\t\t5ace 8050  Behold TV H85\n\t\t5ace 8051  Behold TV H85\n\t\t5ace 8100  Behold TV A8\n\t\t5ace 8101  Behold TV A8\n\t\t5ace 8150  Behold TV A85\n\t\t5ace 8151  Behold TV A85\n\t\t5ace 8201  Behold TV T8\n\t9730  SAA9730 Integrated Multimedia and Peripheral Controller\n\t\t1131 0000  Integrated Multimedia and Peripheral Controller\n1132  Mitel Corp.\n1133  Dialogic Corporation\n\t7701  Eiconcard C90\n\t7711  Eiconcard C91\n\t7901  EiconCard S90\n\t7902  EiconCard S90\n\t7911  EiconCard S91\n\t7912  EiconCard S91\n\t7921  Eiconcard S92\n\t7941  EiconCard S94\n\t7942  EiconCard S94\n\t7943  EiconCard S94\n\t7944  EiconCard S94\n\t7945  Eiconcard S94\n\t7948  Eiconcard S94 64bit/66MHz\n\t9711  Eiconcard S91 V2\n\t9911  Eiconcard S91 V2\n\t9941  Eiconcard S94 V2\n\t9a41  Eiconcard S94 PCIe\n\tb921  EiconCard P92\n\tb922  EiconCard P92\n\tb923  EiconCard P92\n\te001  Diva Pro 2.0 S/T\n\te002  Diva 2.0 S/T PCI\n\te003  Diva Pro 2.0 U\n\te004  Diva 2.0 U PCI\n\te005  Diva 2.01 S/T PCI\n\te006  Diva CT S/T PCI\n\te007  Diva CT U PCI\n\te008  Diva CT Lite S/T PCI\n\te009  Diva CT Lite U PCI\n\te00a  Diva ISDN+V.90 PCI\n\te00b  Diva ISDN PCI 2.02\n\te00c  Diva 2.02 PCI U\n\te00d  Diva Pro 3.0 PCI\n\te00e  Diva ISDN+CT S/T PCI Rev 2\n\te010  Diva Server BRI-2M PCI\n\t\t110a 0021  Fujitsu Siemens ISDN S0\n\te011  Diva Server BRI S/T Rev 2\n\te012  Diva Server 4BRI-8M PCI\n\te013  4BRI\n\t\t1133 1300  Diva V-4BRI-8 PCI v2\n\t\t1133 e013  Diva 4BRI-8 PCI v2\n\te014  Diva Server PRI-30M PCI\n\te015  Diva PRI PCI v2\n\te016  Diva Server Voice 4BRI PCI\n\te017  Diva Server Voice 4BRI Rev 2\n\t\t1133 e017  Diva Server Voice 4BRI-8M 2.0 PCI\n\te018  BRI\n\t\t1133 1800  Diva V-BRI-2 PCI v2\n\t\t1133 e018  Diva BRI-2 PCI v2\n\te019  Diva Server Voice PRI Rev 2\n\t\t1133 e019  Diva Server Voice PRI 2.0 PCI\n\te01a  Diva BRI-2FX PCI v2\n\te01b  Diva Server Voice BRI-2M 2.0 PCI\n\t\t1133 e01b  Diva Server Voice BRI-2M 2.0 PCI\n\te01c  PRI\n\t\t1133 1c01  Diva PRI/E1/T1-8 PCI v3\n\t\t1133 1c02  Diva PRI/T1-24 PCI(e) v3\n\t\t1133 1c03  Diva PRI/E1-30 PCI(e) v3\n\t\t1133 1c04  Diva PRI/E1/T1-CTI PCI(e) v3\n\t\t1133 1c05  Diva V-PRI/T1-24 PCI(e) v3\n\t\t1133 1c06  Diva V-PRI/E1-30 PCI(e) v3\n\t\t1133 1c07  Diva Server PRI/E1/T1-8 Cornet NQ\n\t\t1133 1c08  Diva Server PRI/T1-24 Cornet NQ\n\t\t1133 1c09  Diva Server PRI/E1-30 Cornet NQ\n\t\t1133 1c0a  Diva Server PRI/E1/T1 Cornet NQ\n\t\t1133 1c0b  Diva Server V-PRI/T1-24 Cornet NQ\n\t\t1133 1c0c  Diva Server V-PRI/E1-30 Cornet NQ\n\te01e  2PRI\n\t\t1133 1e01  Diva 2PRI/E1/T1-60 PCI v1\n\t\t1133 e01e  Diva V-2PRI/E1/T1-60 PCI v1\n\te020  4PRI\n\t\t1133 2001  Diva 4PRI/E1/T1-120 PCI v1\n\t\t1133 e020  Diva V-4PRI/E1/T1-120 PCI v1\n\te022  Analog-2\n\t\t1133 2200  Diva V-Analog-2 PCI v1\n\t\t1133 e022  Diva Analog-2 PCI v1\n\te024  Analog-4\n\t\t1133 2400  Diva V-Analog-4 PCI v1\n\t\t1133 e024  Diva Analog-4 PCI v1\n\te028  Analog-8\n\t\t1133 2800  Diva V-Analog-8 PCI v1\n\t\t1133 e028  Diva Analog-8 PCI v1\n\te02a  Diva IPM-300 PCI v1\n\te02c  Diva IPM-600 PCI v1\n\te02e  4BRI\n\t\t1133 2e01  Diva V-4BRI-8 PCIe v2\n\t\t1133 e02e  Diva 4BRI-8 PCIe v2\n\te032  BRI\n\t\t1133 3201  Diva V-BRI-2 PCIe v2\n\t\t1133 e032  Diva BRI-2 PCIe v2\n\te034  Diva BRI-CTI PCI v2\n1134  Mercury Computer Systems\n\t0001  Raceway Bridge\n\t0002  Dual PCI to RapidIO Bridge\n\t000b  POET Serial RapidIO Bridge\n\t000d  POET PSDMS Device\n1135  FUJIFILM Business Innovation Corp.\n\t0001  Printer controller\n1136  Momentum Data Systems\n\t0002  PCI-JTAG\n1137  Cisco Systems Inc\n\t0023  VIC 81 PCIe Upstream Port\n\t0040  VIC PCIe Upstream Port\n\t\t1137 004f  VIC 1280 Dual 40Gb Mezzanine\n\t\t1137 0084  VIC 1240 Dual 40Gb MLOM\n\t\t1137 0085  VIC 1225 Dual 10Gb SFP+ PCIe\n\t\t1137 00cd  VIC 1285 Dual 40Gb QSFP+ PCIe\n\t\t1137 00ce  VIC 1225T Dual 10GBaseT PCIe\n\t\t1137 012a  VIC M4308 Dual 40Gb\n\t\t1137 012c  VIC 1340 Dual 40Gb MLOM\n\t\t1137 012e  VIC 1227 Dual 10Gb SFP+ PCIe\n\t\t1137 0137  VIC 1380 Dual 40Gb Mezzanine\n\t\t1137 014d  VIC 1385 Dual 40Gb PCIe\n\t0041  VIC PCIe Downstream Port\n\t0042  VIC Management Controller\n\t\t1137 0047  VIC P81E PCIe Management Controller\n\t\t1137 0085  VIC 1225 PCIe Management Controller\n\t\t1137 00cd  VIC 1285 PCIe Management Controller\n\t\t1137 00ce  VIC 1225T PCIe Management Controller\n\t\t1137 012e  VIC 1227 PCIe Management Controller\n\t\t1137 014d  VIC 1385 PCIe Management Controller\n\t\t1137 0217  VIC 1455 PCIe Management Controller\n\t\t1137 0218  VIC 1457 PCIe Management Controller\n\t0043  VIC Ethernet NIC\n\t\t1137 0047  VIC P81E PCIe Ethernet NIC\n\t\t1137 0048  VIC M81KR Mezzanine Ethernet NIC\n\t\t1137 004f  VIC 1280 Mezzanine Ethernet NIC\n\t\t1137 0084  VIC 1240 MLOM Ethernet NIC\n\t\t1137 0085  VIC 1225 PCIe Ethernet NIC\n\t\t1137 00cd  VIC 1285 PCIe Ethernet NIC\n\t\t1137 00ce  VIC 1225T PCIe Ethernet NIC\n\t\t1137 012a  VIC M4308 Ethernet NIC\n\t\t1137 012c  VIC 1340 MLOM Ethernet NIC\n\t\t1137 012e  VIC 1227 PCIe Ethernet NIC\n\t\t1137 0137  VIC 1380 Mezzanine Ethernet NIC\n\t\t1137 014d  VIC 1385 PCIe Ethernet NIC\n\t\t1137 015d  VIC 1387 MLOM Ethernet NIC\n\t\t1137 0215  VIC 1440 Mezzanine Ethernet NIC\n\t\t1137 0216  VIC 1480 MLOM Ethernet NIC\n\t\t1137 0217  VIC 1455 PCIe Ethernet NIC\n\t\t1137 0218  VIC 1457 MLOM Ethernet NIC\n\t\t1137 0219  VIC 1485 PCIe Ethernet NIC\n\t\t1137 021a  VIC 1487 MLOM Ethernet NIC\n\t\t1137 024a  VIC 1495 PCIe Ethernet NIC\n\t\t1137 024b  VIC 1497 MLOM Ethernet NIC\n\t\t1137 02af  VIC 1467 MLOM Ethernet NIC\n\t\t1137 02b0  VIC 1477 MLOM Ethernet NIC\n\t\t1137 02cf  VIC 14425 MLOM Ethernet NIC\n\t\t1137 02d0  VIC 14825 Mezzanine Ethernet NIC\n\t\t1137 02db  VIC 15231 MLOM Ethernet NIC\n\t\t1137 02dc  VIC 15411 MLOM Ethernet NIC\n\t\t1137 02dd  VIC 15428 MLOM Ethernet NIC\n\t\t1137 02de  VIC 15420 MLOM Ethernet NIC\n\t\t1137 02df  VIC 15230 MLOM Ethernet NIC\n\t\t1137 02e0  VIC 15427 MLOM Ethernet NIC\n\t\t1137 02e1  VIC 15422 Mezzanine Ethernet NIC\n\t\t1137 02e4  VIC 15235 PCIe Ethernet NIC\n\t\t1137 02e8  VIC 15238 MLOM Ethernet NIC\n\t\t1137 02f2  VIC 15425 PCIe Ethernet NIC\n\t\t1137 02f3  VIC 15237 MLOM Ethernet NIC\n\t0044  VIC Ethernet NIC Dynamic\n\t\t1137 0047  VIC P81E PCIe Ethernet NIC Dynamic\n\t\t1137 0048  VIC M81KR Mezzanine Ethernet NIC Dynamic\n\t\t1137 004f  VIC 1280 Mezzanine Ethernet NIC Dynamic\n\t\t1137 0084  VIC 1240 MLOM Ethernet NIC Dynamic\n\t\t1137 0085  VIC 1225 PCIe Ethernet NIC Dynamic\n\t\t1137 00cd  VIC 1285 PCIe Ethernet NIC Dynamic\n\t\t1137 00ce  VIC 1225T PCIe Ethernet NIC Dynamic\n\t\t1137 012a  VIC M4308 Ethernet NIC Dynamic\n\t\t1137 012c  VIC 1340 MLOM Ethernet NIC Dynamic\n\t\t1137 012e  VIC 1227 PCIe Ethernet NIC Dynamic\n\t\t1137 0137  VIC 1380 Mezzanine Ethernet NIC Dynamic\n\t\t1137 014d  VIC 1385 PCIe Ethernet NIC Dynamic\n\t0045  VIC FCoE HBA\n\t\t1137 0047  VIC P81E PCIe FCoE HBA\n\t\t1137 0048  VIC M81KR Mezzanine FCoE HBA\n\t\t1137 004f  VIC 1280 Mezzanine FCoE HBA\n\t\t1137 0084  VIC 1240 MLOM FCoE HBA\n\t\t1137 0085  VIC 1225 PCIe FCoE HBA\n\t\t1137 00cd  VIC 1285 PCIe FCoE HBA\n\t\t1137 00ce  VIC 1225T PCIe FCoE HBA\n\t\t1137 012a  VIC M4308 FCoE HBA\n\t\t1137 012c  VIC 1340 MLOM FCoE HBA\n\t\t1137 012e  VIC 1227 PCIe FCoE HBA\n\t\t1137 0137  VIC 1380 Mezzanine FCoE HBA\n\t\t1137 014d  VIC 1385 PCIe FCoE HBA\n\t0046  VIC SCSI Controller\n\t\t1137 012a  VIC M4308 SCSI Controller\n\t004e  VIC 82 PCIe Upstream Port\n\t0071  VIC SR-IOV VF\n\t007a  VIC 1300 PCIe Upstream Port\n\t\t1137 012a  VIC M4308 Dual 40Gb\n\t\t1137 012c  VIC 1340 Dual 40Gb MLOM\n\t\t1137 0137  VIC 1380 Dual 40Gb Mezzanine\n\t\t1137 014d  VIC 1385 Dual 40Gb PCIe\n\t00cf  VIC Userspace NIC\n\t\t1137 004f  VIC 1280 Mezzanine Userspace NIC\n\t\t1137 0084  VIC 1240 MLOM Userspace NIC\n\t\t1137 0085  VIC 1225 PCIe Userspace NIC\n\t\t1137 00cd  VIC 1285 PCIe Userspace NIC\n\t\t1137 00ce  VIC 1225T PCIe Userspace NIC\n\t\t1137 012a  VIC M4308 Userspace NIC\n\t\t1137 012c  VIC 1340 MLOM Userspace NIC\n\t\t1137 012e  VIC 1227 PCIe Userspace NIC\n\t\t1137 0137  VIC 1380 Mezzanine Userspace NIC\n\t023e  1GigE I350 LOM\n\t02b7  VIC SR-IOV Ethernet VF\n1138  Ziatech Corporation\n\t8905  8905 [STD 32 Bridge]\n1139  Dynamic Pictures, Inc\n\t0001  VGA Compatible 3D Graphics\n113a  FWB Inc\n113b  Network Computing Devices\n113c  Cyclone Microsystems, Inc.\n\t0000  PCI-9060 i960 Bridge\n\t0001  PCI-SDK [PCI i960 Evaluation Platform]\n\t0911  PCI-911 [i960Jx-based Intelligent I/O Controller]\n\t0912  PCI-912 [i960CF-based Intelligent I/O Controller]\n\t0913  PCI-913\n\t0914  PCI-914 [I/O Controller w/ secondary PCI bus]\n113d  Leading Edge Products Inc\n113e  Sanyo Electric Co - Computer Engineering Dept\n113f  Equinox Systems, Inc.\n\t0808  SST-64P Adapter\n\t1010  SST-128P Adapter\n\t80c0  SST-16P DB Adapter\n\t80c4  SST-16P RJ Adapter\n\t80c8  SST-16P Adapter\n\t8888  SST-4P Adapter\n\t9090  SST-8P Adapter\n1140  Intervoice Inc\n1141  Crest Microsystem Inc\n1142  Alliance Semiconductor Corporation\n\t3210  AP6410\n\t6422  ProVideo 6422\n\t6424  ProVideo 6424\n\t6425  ProMotion AT25\n\t643d  ProMotion AT3D\n1143  NetPower, Inc\n1144  Cincinnati Milacron\n\t0001  Noservo controller\n1145  Workbit Corporation\n\t8007  NinjaSCSI-32 Workbit\n\tf007  NinjaSCSI-32 KME\n\tf010  NinjaSCSI-32 Workbit\n\tf012  NinjaSCSI-32 Logitec\n\tf013  NinjaSCSI-32 Logitec\n\tf015  NinjaSCSI-32 Melco\n\tf020  NinjaSCSI-32 Sony PCGA-DVD51\n\tf021  NinjaPATA-32 Delkin Cardbus UDMA\n\tf024  NinjaPATA-32 Delkin Cardbus UDMA\n\tf103  NinjaPATA-32 Delkin Cardbus UDMA\n1146  Force Computers\n1147  Interface Corp\n# Nee Schneider & Koch\n1148  SysKonnect\n\t4000  FDDI Adapter\n\t\t0e11 b03b  Netelligent 100 FDDI DAS Fibre SC\n\t\t0e11 b03c  Netelligent 100 FDDI SAS Fibre SC\n\t\t0e11 b03d  Netelligent 100 FDDI DAS UTP\n\t\t0e11 b03e  Netelligent 100 FDDI SAS UTP\n\t\t0e11 b03f  Netelligent 100 FDDI SAS Fibre MIC\n\t\t1148 5521  FDDI SK-5521 (SK-NET FDDI-UP)\n\t\t1148 5522  FDDI SK-5522 (SK-NET FDDI-UP DAS)\n\t\t1148 5541  FDDI SK-5541 (SK-NET FDDI-FP)\n\t\t1148 5543  FDDI SK-5543 (SK-NET FDDI-LP)\n\t\t1148 5544  FDDI SK-5544 (SK-NET FDDI-LP DAS)\n\t\t1148 5821  FDDI SK-5821 (SK-NET FDDI-UP64)\n\t\t1148 5822  FDDI SK-5822 (SK-NET FDDI-UP64 DAS)\n\t\t1148 5841  FDDI SK-5841 (SK-NET FDDI-FP64)\n\t\t1148 5843  FDDI SK-5843 (SK-NET FDDI-LP64)\n\t\t1148 5844  FDDI SK-5844 (SK-NET FDDI-LP64 DAS)\n\t4200  Token Ring adapter\n\t4300  SK-9872 Gigabit Ethernet Server Adapter (SK-NET GE-ZX dual link)\n\t\t1148 9821  SK-9821 Gigabit Ethernet Server Adapter (SK-NET GE-T)\n\t\t1148 9822  SK-9822 Gigabit Ethernet Server Adapter (SK-NET GE-T dual link)\n\t\t1148 9841  SK-9841 Gigabit Ethernet Server Adapter (SK-NET GE-LX)\n\t\t1148 9842  SK-9842 Gigabit Ethernet Server Adapter (SK-NET GE-LX dual link)\n\t\t1148 9843  SK-9843 Gigabit Ethernet Server Adapter (SK-NET GE-SX)\n\t\t1148 9844  SK-9844 Gigabit Ethernet Server Adapter (SK-NET GE-SX dual link)\n\t\t1148 9861  SK-9861 Gigabit Ethernet Server Adapter (SK-NET GE-SX Volition)\n\t\t1148 9862  SK-9862 Gigabit Ethernet Server Adapter (SK-NET GE-SX Volition dual link)\n\t\t1148 9871  SK-9871 Gigabit Ethernet Server Adapter (SK-NET GE-ZX)\n\t\t1148 9872  SK-9872 Gigabit Ethernet Server Adapter (SK-NET GE-ZX dual link)\n\t\t1259 2970  AT-2970SX Gigabit Ethernet Adapter\n\t\t1259 2971  AT-2970LX Gigabit Ethernet Adapter\n\t\t1259 2972  AT-2970TX Gigabit Ethernet Adapter\n\t\t1259 2973  AT-2971SX Gigabit Ethernet Adapter\n\t\t1259 2974  AT-2971T Gigabit Ethernet Adapter\n\t\t1259 2975  AT-2970SX/2SC Gigabit Ethernet Adapter\n\t\t1259 2976  AT-2970LX/2SC Gigabit Ethernet Adapter\n\t\t1259 2977  AT-2970TX/2TX Gigabit Ethernet Adapter\n\t4320  SK-98xx V2.0 Gigabit Ethernet Adapter [Marvell 88E8001]\n\t\t1148 0121  Marvell RDK-8001 Adapter\n\t\t1148 0221  Marvell RDK-8002 Adapter\n\t\t1148 0321  Marvell RDK-8003 Adapter\n\t\t1148 0421  Marvell RDK-8004 Adapter\n\t\t1148 0621  Marvell RDK-8006 Adapter\n\t\t1148 0721  Marvell RDK-8007 Adapter\n\t\t1148 0821  Marvell RDK-8008 Adapter\n\t\t1148 0921  Marvell RDK-8009 Adapter\n\t\t1148 1121  Marvell RDK-8011 Adapter\n\t\t1148 1221  Marvell RDK-8012 Adapter\n\t\t1148 3221  SK-9521 V2.0 10/100/1000Base-T Adapter\n\t\t1148 5021  SK-9821 V2.0 Gigabit Ethernet 10/100/1000Base-T Adapter\n\t\t1148 5041  SK-9841 V2.0 Gigabit Ethernet 1000Base-LX Adapter\n\t\t1148 5043  SK-9843 V2.0 Gigabit Ethernet 1000Base-SX Adapter\n\t\t1148 5051  SK-9851 V2.0 Gigabit Ethernet 1000Base-SX Adapter\n\t\t1148 5061  SK-9861 V2.0 Gigabit Ethernet 1000Base-SX Adapter\n\t\t1148 5071  SK-9871 V2.0 Gigabit Ethernet 1000Base-ZX Adapter\n\t\t1148 9521  SK-9521 10/100/1000Base-T Adapter\n\t\t1259 2916  AT-2916T\n\t4400  SK-9Dxx Gigabit Ethernet Adapter\n\t4500  SK-9Mxx Gigabit Ethernet Adapter\n\t9000  SK-9Sxx Gigabit Ethernet Server Adapter PCI-X [Marvell 88E8022]\n\t\t1148 2100  SK-9S21 10/100/1000Base-T Server Adapter, PCI-X, Copper RJ-45\n\t\t1148 2200  SK-9S22 10/100/1000Base-T Dual Port Server Adapter, PCI-X, 2 Copper RJ-45\n\t\t1148 2210  SK-9P22 10/100/1000 Base-T Dual Port PMC card\n\t\t1148 2220  TPMC-GBE-CO\n\t\t1148 8100  SK-9S81 1000Base-SX Server Adapter,PCI-X, Fiber SX/LC\n\t\t1148 8200  SK-9S82 1000Base-SX Dual Port Server Adapter, PCI-X, 2 Fiber SX/LC\n\t\t1148 8210  SK-9P82 1000 Base-SX Dual Port PMC card\n\t\t1148 8220  TPMC-GBE-FI\n\t\t1148 9100  SK-9S91 1000Base-LX Server Adapter,PCI-X, Fiber LX/LC\n\t\t1148 9200  SK-9S92 1000Base-LX Dual Port Server Adapter, PCI-X, 2 Fiber LX/LC\n\t\t1259 2973  AT-2971SX v2 Gigabit Adapter\n\t\t1259 2974  AT-2971T v2 Gigabit Adapter\n\t\t1259 2978  AT-2971LX Gigabit Adapter\n\t9843  [Fujitsu] Gigabit Ethernet\n\t9e00  SK-9E21D 10/100/1000Base-T Adapter, Copper RJ-45\n\t\t1148 2100  SK-9E21 Server Adapter\n\t\t1148 21d0  SK-9E21D 10/100/1000Base-T Adapter\n\t\t1148 2200  SK-9E22 Server Adapter\n\t\t1148 8100  SK-9E81 Server Adapter\n\t\t1148 8200  SK-9E82 Server Adapter\n\t\t1148 9100  SK-9E91 Server Adapter\n\t\t1148 9200  SK-9E92 Server Adapter\n\t9e01  SK-9E21M 10/100/1000Base-T Adapter\n1149  Win System Corporation\n114a  VMIC\n\t5565  GE-IP PCI5565,PMC5565 Reflective Memory Node\n\t5579  VMIPCI-5579 (Reflective Memory Card)\n\t5587  VMIPCI-5587 (Reflective Memory Card)\n\t6504  VMIC PCI 7755 FPGA\n\t7587  VMIVME-7587\n114b  Canopus Co., Ltd\n114c  Annabooks\n114d  IC Corporation\n114e  Nikon Systems Inc\n114f  Digi International\n\t0002  AccelePort EPC\n\t0003  RightSwitch SE-6\n\t0004  AccelePort Xem\n\t0005  AccelePort Xr\n\t0006  AccelePort Xr,C/X\n\t0009  AccelePort Xr/J\n\t000a  AccelePort EPC/J\n\t000c  DataFirePRIme T1 (1-port)\n\t000d  SyncPort 2-Port (x.25/FR)\n\t0011  AccelePort 8r EIA-232 (IBM)\n\t0012  AccelePort 8r EIA-422\n\t0013  AccelePort Xr\n\t0014  AccelePort 8r EIA-422\n\t0015  AccelePort Xem\n\t0016  AccelePort EPC/X\n\t0017  AccelePort C/X\n\t001a  DataFirePRIme E1 (1-port)\n\t001b  AccelePort C/X (IBM)\n\t001c  AccelePort Xr (SAIP)\n\t001d  DataFire RAS T1/E1/PRI\n\t\t114f 0050  DataFire RAS E1 Adapter\n\t\t114f 0051  DataFire RAS Dual E1 Adapter\n\t\t114f 0052  DataFire RAS T1 Adapter\n\t\t114f 0053  DataFire RAS Dual T1 Adapter\n\t0023  AccelePort RAS\n\t0024  DataFire RAS B4 ST/U\n\t\t114f 0030  DataFire RAS BRI U Adapter\n\t\t114f 0031  DataFire RAS BRI S/T Adapter\n\t0026  AccelePort 4r 920\n\t0027  AccelePort Xr 920\n\t0028  ClassicBoard 4\n\t0029  ClassicBoard 8\n\t0034  AccelePort 2r 920\n\t0035  DataFire DSP T1/E1/PRI cPCI\n\t0040  AccelePort Xp\n\t\t114f 0042  AccelePort 2p PCI\n\t\t114f 0043  AccelePort 4p PCI\n\t\t114f 0044  AccelePort 8p PCI\n\t\t114f 0045  AccelePort 16p PCI\n\t\t114f 004e  AccelePort 32p PCI\n\t0042  AccelePort 2p\n\t0043  AccelePort 4p\n\t0044  AccelePort 8p\n\t0045  AccelePort 16p\n\t004e  AccelePort 32p\n\t0070  Datafire Micro V IOM2 (Europe)\n\t0071  Datafire Micro V (Europe)\n\t0072  Datafire Micro V IOM2 (North America)\n\t0073  Datafire Micro V (North America)\n\t00b0  Digi Neo 4\n\t00b1  Digi Neo 8\n\t00c8  Digi Neo 2 DB9\n\t00c9  Digi Neo 2 DB9 PRI\n\t00ca  Digi Neo 2 RJ45\n\t00cb  Digi Neo 2 RJ45 PRI\n\t00cc  Digi Neo 1 422\n\t00cd  Digi Neo 1 422 485\n\t00ce  Digi Neo 2 422 485\n\t00d0  ClassicBoard 4 422\n\t00d1  ClassicBoard 8 422\n\t00f1  Digi Neo PCI-E 4 port\n\t00f4  Digi Neo 4 (IBM version)\n\t6001  Avanstar\n1150  Thinking Machines Corp\n1151  JAE Electronics Inc.\n1152  Megatek\n1153  Land Win Electronic Corp\n1154  Melco Inc\n1155  Pine Technology Ltd\n1156  Periscope Engineering\n1157  Avsys Corporation\n1158  Voarx R & D Inc\n\t3011  Tokenet/vg 1001/10m anylan\n\t9050  Lanfleet/Truevalue\n\t9051  Lanfleet/Truevalue\n1159  MuTech Corporation\n\t0001  MV-1000\n\t0002  MV-1500\n115a  Harlequin Ltd\n115b  Parallax Graphics\n115c  Photron Ltd.\n115d  Xircom\n\t0003  Cardbus Ethernet 10/100\n\t\t1014 0181  10/100 EtherJet Cardbus Adapter\n\t\t1014 1181  10/100 EtherJet Cardbus Adapter\n\t\t1014 8181  10/100 EtherJet Cardbus Adapter\n\t\t1014 9181  10/100 EtherJet Cardbus Adapter\n\t\t115d 0181  Cardbus Ethernet 10/100\n\t\t115d 0182  RealPort2 CardBus Ethernet 10/100 (R2BE-100)\n\t\t115d 1181  Cardbus Ethernet 10/100\n\t\t1179 0181  Cardbus Ethernet 10/100\n\t\t8086 8181  EtherExpress PRO/100 Mobile CardBus 32 Adapter\n\t\t8086 9181  EtherExpress PRO/100 Mobile CardBus 32 Adapter\n\t0005  Cardbus Ethernet 10/100\n\t\t1014 0182  10/100 EtherJet Cardbus Adapter\n\t\t1014 1182  10/100 EtherJet Cardbus Adapter\n\t\t115d 0182  Cardbus Ethernet 10/100\n\t\t115d 1182  Cardbus Ethernet 10/100\n\t0007  Cardbus Ethernet 10/100\n\t\t1014 0182  10/100 EtherJet Cardbus Adapter\n\t\t1014 1182  10/100 EtherJet Cardbus Adapter\n\t\t115d 0182  Cardbus Ethernet 10/100\n\t\t115d 1182  Cardbus Ethernet 10/100\n\t000b  Cardbus Ethernet 10/100\n\t\t1014 0183  10/100 EtherJet Cardbus Adapter\n\t\t115d 0183  Cardbus Ethernet 10/100\n\t000c  Mini-PCI V.90 56k Modem\n\t000f  Cardbus Ethernet 10/100\n\t\t1014 0183  10/100 EtherJet Cardbus Adapter\n\t\t115d 0183  Cardbus Ethernet 10/100\n\t00d4  Mini-PCI K56Flex Modem\n\t0101  Cardbus 56k modem\n\t\t115d 1081  Cardbus 56k Modem\n\t0103  Cardbus Ethernet + 56k Modem\n\t\t1014 9181  Cardbus 56k Modem\n\t\t1115 1181  Cardbus Ethernet 100 + 56k Modem\n\t\t115d 1181  CBEM56G-100 Ethernet + 56k Modem\n\t\t8086 9181  PRO/100 LAN + Modem56 CardBus\n115e  Peer Protocols Inc\n115f  Maxtor Corporation\n1160  Megasoft Inc\n1161  PFU Limited\n1162  OA Laboratory Co Ltd\n1163  Rendition\n\t0001  Verite 1000\n\t2000  Verite V2000/V2100/V2200\n\t\t1092 2000  Stealth II S220\n1164  Advanced Peripherals Technologies\n1165  Imagraph Corporation\n\t0001  Motion TPEG Recorder/Player with audio\n# nee ServerWorks\n1166  Broadcom\n\t0000  CMIC-LE\n\t0005  CNB20-LE Host Bridge\n\t0006  CNB20HE Host Bridge\n\t0007  CNB20-LE Host Bridge\n\t0008  CNB20HE Host Bridge\n\t0009  CNB20LE Host Bridge\n\t0010  CIOB30\n\t0011  CMIC-HE\n\t0012  CMIC-WS Host Bridge (GC-LE chipset)\n\t0013  CNB20-HE Host Bridge\n\t0014  CMIC-LE Host Bridge (GC-LE chipset)\n\t0015  CMIC-GC Host Bridge\n\t0016  CMIC-GC Host Bridge\n\t0017  GCNB-LE Host Bridge\n\t0031  HT1100 HPX0 HT Host Bridge\n\t0036  BCM5785 [HT1000] PCI/PCI-X Bridge\n\t0101  CIOB-X2 PCI-X I/O Bridge\n\t0103  EPB PCI-Express to PCI-X Bridge\n\t0104  BCM5785 [HT1000] PCI/PCI-X Bridge\n\t0110  CIOB-E I/O Bridge with Gigabit Ethernet\n\t0130  BCM5780 [HT2000] PCI-X bridge\n\t0132  BCM5780 [HT2000] PCI-Express Bridge\n\t\t1166 0132  HT2000 PCI-Express bridge\n\t0140  HT2100 PCI-Express Bridge\n\t0141  HT2100 PCI-Express Bridge\n\t0142  HT2100 PCI-Express Bridge\n\t0144  HT2100 PCI-Express Bridge\n\t0200  OSB4 South Bridge\n\t0201  CSB5 South Bridge\n\t\t4c53 1080  CT8 mainboard\n\t0203  CSB6 South Bridge\n\t\t1734 1012  PRIMERGY RX/TX series\n\t0205  BCM5785 [HT1000] Legacy South Bridge\n\t0211  OSB4 IDE Controller\n\t0212  CSB5 IDE Controller\n\t\t1028 014a  PowerEdge 1750\n\t\t1028 810b  PowerEdge 1650/2550\n\t\t4c53 1080  CT8 mainboard\n\t0213  CSB6 RAID/IDE Controller\n\t\t1028 4134  PowerEdge 600SC\n\t\t1028 c134  Poweredge SC600\n\t\t1734 1012  PRIMERGY RX/TX series onboard IDE\n\t0214  BCM5785 [HT1000] IDE\n\t\t1028 0205  PowerEdge 2970 HT1000 IDE\n\t0217  CSB6 IDE Controller\n\t\t1028 4134  Poweredge SC600\n\t021b  HT1100 HD Audio\n\t0220  OSB4/CSB5 OHCI USB Controller\n\t\t4c53 1080  CT8 mainboard\n\t0221  CSB6 OHCI USB Controller\n\t\t1734 1012  PRIMERGY RX/TX series onboard OHCI\n\t0223  BCM5785 [HT1000] USB\n\t\t1028 0205  PowerEdge 2970 HT1000 USB Controller\n\t\t1028 020b  PowerEdge T605 HT1000 USB Controller\n\t0225  CSB5 LPC bridge\n\t0227  GCLE-2 Host Bridge\n\t\t1734 1012  PRIMERGY RX/TX series\n\t0230  CSB5 LPC bridge\n\t\t4c53 1080  CT8 mainboard\n\t0234  BCM5785 [HT1000] LPC\n\t\t1028 0205  PowerEdge 2970 HT1000 LPC\n\t\t1028 020b  PowerEdge T605 HT1000 LPC\n\t0235  BCM5785 [HT1000] XIOAPIC0-2\n\t0238  BCM5785 [HT1000] WDTimer\n\t0240  K2 SATA\n\t0241  RAIDCore RC4000\n\t0242  RAIDCore BC4000\n\t024a  BCM5785 [HT1000] SATA (Native SATA Mode)\n\t\t1028 020b  PowerEdge T605 onboard SATA Controller\n# The device starts as 024A, and changes to 024B if set to PATA mode in BIOS\n\t024b  BCM5785 [HT1000] SATA (PATA/IDE Mode)\n\t\t1028 0205  PowerEdge 2970 HT1000 SATA controller\n\t0406  HT1100 PCI-X Bridge\n\t0408  HT1100 Legacy Device\n\t040a  HT1100 ISA-LPC Bridge\n\t\t1028 0223  PowerEdge R905 HT1100 ISA-LPC Bridge\n\t0410  HT1100 SATA Controller (Native SATA Mode)\n\t0411  HT1100 SATA Controller (PATA / IDE Mode)\n\t0412  HT1100 USB OHCI Controller\n\t0414  HT1100 USB EHCI Controller\n\t0416  HT1100 USB EHCI Controller (with Debug Port)\n\t0420  HT1100 PCI-Express Bridge\n\t0421  HT1100 SAS/SATA Controller\n\t0422  HT1100 PCI-Express Bridge\n1167  Mutoh Industries Inc\n1168  Thine Electronics Inc\n1169  Centre for Development of Advanced Computing\n# nee Polaris Communications\n116a  Luminex Software, Inc.\n\t6100  Bus/Tag Channel\n\t6800  Escon Channel\n\t7100  Bus/Tag Channel\n\t7800  Escon Channel\n116b  Connectware Inc\n116c  Intelligent Resources Integrated Systems\n116d  Martin-Marietta\n116e  Electronics for Imaging\n116f  Workstation Technology\n1170  Inventec Corporation\n1171  Loughborough Sound Images Plc\n1172  Altera Corporation\n# Unknown card with Altera ACE EP1K50TC144-2 as the PCI interface and has 4 BNC inputs connected to 4 TL3016 Comparators and one TRS output connected to two LTC1650 DACs\n\t0004  PF5102 board\n\t00a7  Stratix V\n\t0530  Stratix IV\n\t646c  KT-500/KT-521 board\n1173  Adobe Systems, Inc\n1174  Bridgeport Machines\n1175  Mitron Computer Inc.\n1176  SBE Incorporated\n1177  Silicon Engineering\n1178  Alfa, Inc.\n\tafa1  Fast Ethernet Adapter\n1179  Toshiba Corporation\n\t0102  Extended IDE Controller\n\t0103  EX-IDE Type-B\n\t010e  PXP04 NVMe SSD\n\t010f  XG3 NVMe SSD Controller\n\t0110  Cx5 NVMe SSD Controller\n\t\t1028 1ffb  Express Flash NVMe 960G (RI) U.2 (CD5)\n\t\t1028 1ffc  Express Flash NVMe 1.92T (RI) U.2 (CD5)\n\t\t1028 1ffd  Express Flash NVMe 3.84T (RI) U.2 (CD5)\n\t\t1028 1ffe  Express Flash NVMe 7.68T (RI) U.2 (CD5)\n\t\t1179 0001  KIOXIA CM5-R series SSD\n\t\t1179 0021  KIOXIA CD5 series SSD\n\t\t1d49 4039  Thinksystem U.2 CM5 NVMe SSD\n\t\t1d49 403a  Thinksystem AIC CM5 NVMe SSD\n\t0113  BG3 x2 NVMe SSD Controller (DRAM-less)\n\t\t1179 0001  Toshiba KBG30ZMS128G 128GB NVMe SSD\n\t0115  XG4 NVMe SSD Controller\n\t0116  XG5 NVMe SSD Controller\n\t\t1179 0001  XG5 NVMe SSD Controller\n\t0119  XD5 NVMe SSD Controller\n\t011a  XG6 NVMe SSD Controller\n\t0404  DVD Decoder card\n\t0406  Tecra Video Capture device\n\t0407  DVD Decoder card (Version 2)\n\t0601  CPU to PCI bridge\n\t\t1179 0001  Satellite Pro\n\t0602  PCI to ISA bridge\n\t0603  ToPIC95 PCI to CardBus Bridge for Notebooks\n\t0604  PCI-Docking Host bridge\n\t060a  ToPIC95\n\t\t1179 0001  Satellite Pro\n\t060f  ToPIC97\n\t\t1179 0001  Satellite 4010\n\t0617  ToPIC100 PCI to Cardbus Bridge with ZV Support\n\t0618  CPU to PCI and PCI to ISA bridge\n\t0701  FIR Port Type-O\n\t0803  TC6371AF SD Host Controller\n\t0804  TC6371AF SmartMedia Controller\n\t0805  SD TypA Controller\n\t0d01  FIR Port Type-DO\n\t\t1179 0001  FIR Port Type-DO\n\t9602  RS780/RS880 PCI to PCI bridge (int gfx)\n117a  A-Trend Technology\n117b  L G Electronics, Inc.\n117c  ATTO Technology, Inc.\n\t002c  ExpressSAS R380\n\t002d  ExpressSAS R348\n\t0030  Ultra320 SCSI Host Adapter\n\t\t117c 8013  ExpressPCI UL4D\n\t\t117c 8014  ExpressPCI UL4S\n\t\t117c 8027  ExpressPCI UL5D\n\t\t117c 802f  ExpressPCI UL5D Low Profile\n\t0033  SAS Adapter\n\t0041  ExpressSAS R30F\n\t0042  ExpressSAS 6Gb/s SAS/SATA HBA\n\t\t117c 0042  ExpressSAS H680\n\t\t117c 0043  ExpressSAS H608\n\t\t117c 0044  ExpressSAS H60F\n\t\t117c 0045  ExpressSAS H6F0\n\t\t117c 0046  ExpressSAS H644\n\t\t117c 004f  ExpressSAS M608\n\t\t117c 0057  ExpressSAS M680\n\t\t117c 0058  ExpressSAS M644\n\t\t117c 0059  ExpressSAS W608\n\t\t117c 005a  ExpressSAS W680\n\t\t117c 005b  ExpressSAS W644\n\t0049  ExpressSAS 6Gb SAS/SATA RAID Adapter\n\t\t117c 0049  ExpressSAS R680\n\t\t117c 004a  ExpressSAS R608\n\t\t117c 004b  ExpressSAS R60F\n\t\t117c 004c  ExpressSAS R6F0\n\t\t117c 004d  ExpressSAS R644\n\t\t117c 004e  ExpressSAS R648\n\t0064  Celerity FC 16Gb/s Gen 5 Fibre Channel HBA\n\t\t117c 0063  Celerity FC-161E\n\t\t117c 0064  Celerity FC-162E\n\t\t117c 0065  Celerity FC-164E\n\t0094  Celerity FC 16/32Gb/s Gen 6 Fibre Channel HBA\n\t\t117c 0094  Celerity FC-162P\n\t\t117c 00a0  Celerity FC-161P\n\t\t117c 00a1  Celerity FC-164P\n\t\t117c 00a2  Celerity FC-321E\n\t\t117c 00a3  Celerity FC-322E\n\t\t117c 00ac  Celerity FC-324E\n\t\t117c 40a6  ThunderLink TLFC-3162\n\t\t117c 40a7  ThunderLink TLFC-3322\n\t00a5  ExpressSAS 24Gb/s SAS/SATA HBA\n\t\t117c 00d0  ExpressSAS H24F0\n\t\t117c 00d1  ExpressSAS H240F\n\t\t117c 00d2  ExpressSAS H240N\n\t00bb  Celerity FC 32/64Gb/s Gen 7 Fibre Channel HBA\n\t\t117c 00bc  Celerity FC-321P\n\t\t117c 00bd  Celerity FC-322P\n\t\t117c 00be  Celerity FC-324P\n\t\t117c 00c9  Celerity FC-641E\n\t\t117c 00ca  Celerity FC-642E\n\t\t117c 00d4  Celerity FC-644E\n\t00c5  ExpressNVM PCIe Gen4 Switch\n\t\t117c 00c6  ExpressNVM S48F PCIe Gen4\n\t\t117c 00cb  ExpressNVM S4FF PCIe Gen4\n\t00e6  ExpressSAS GT 12Gb/s SAS/SATA HBA\n\t\t117c 00c0  ExpressSAS H1280 GT\n\t\t117c 00c1  ExpressSAS H1208 GT\n\t\t117c 00c2  ExpressSAS H1244 GT\n\t\t117c 00c3  ExpressSAS H12F0 GT\n\t\t117c 00c4  ExpressSAS H120F GT\n\t8013  ExpressPCI UL4D\n\t8014  ExpressPCI UL4S\n\t8027  ExpressPCI UL5D\n\t8070  ExpressSAS 12Gb/s SAS/SATA HBA\n\t\t117c 0070  ExpressSAS H1280\n\t\t117c 0071  ExpressSAS H1208\n\t\t117c 0080  ExpressSAS H1244\n\t\t117c 40ae  ThunderLink TLSH-3128\n\t8072  ExpressSAS 12Gb/s SAS/SATA HBA\n\t\t117c 0072  ExpressSAS H12F0\n\t\t117c 0073  ExpressSAS H120F\n\t\t117c 0081  ExpressSAS H1248\n\t\t117c 0082  ExpressSAS H1288\n117d  Becton & Dickinson\n117e  T/R Systems\n117f  Integrated Circuit Systems\n1180  Ricoh Co Ltd\n\t0465  RL5c465\n\t0466  RL5c466\n\t0475  RL5c475\n\t\t144d c006  vpr Matrix 170B4 CardBus bridge\n\t0476  RL5c476 II\n\t\t1014 0185  ThinkPad A/T/X Series\n\t\t1014 0555  ThinkPad X41\n\t\t1014 056c  ThinkPad Z60t\n\t\t1028 014f  Latitude X300 laptop\n\t\t1028 0188  Inspiron 6000 laptop\n\t\t103c 30c0  Compaq 6710b\n\t\t103c 30c1  Compaq 6910p\n\t\t1043 1017  X58LE\n\t\t1043 1237  A6J-Q008\n\t\t1043 1967  V6800V\n\t\t1043 1987  A4K and Z81K notebooks, possibly others ( mid-2005 machines )\n\t\t104d 80df  Vaio PCG-FX403\n\t\t104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP\n\t\t104d 814e  VAIO GRZ390Z\n\t\t10f7 8338  Panasonic CF-Y5 laptop\n\t\t144d c005  X10 Laptop\n\t\t144d c00c  P30/P35 notebook\n\t\t14ef 0220  PCD-RP-220S\n\t\t17aa 201c  ThinkPad X60/X60s\n\t\t17aa 20c4  ThinkPad T61/R61\n\t\t17aa 20c6  ThinkPad R61/T400\n\t0477  RL5c477\n\t0478  RL5c478\n\t\t1014 0184  ThinkPad A30p\n\t0511  R5C511\n\t0522  R5C522 IEEE 1394 Controller\n\t\t1014 01cf  ThinkPad A30p\n\t\t1043 1967  V6800V\n\t0551  R5C551 IEEE 1394 Controller\n\t\t144d c006  vpr Matrix 170B4\n\t0552  R5C552 IEEE 1394 Controller\n\t\t1014 0511  ThinkPad A/T/X Series\n\t\t1028 014f  Latitude X300 laptop\n\t\t1028 0188  Inspiron 6000 laptop\n\t\t1043 1237  A6J-Q008\n\t\t1043 1757  M2400N laptop\n\t\t144d c005  X10 Laptop\n\t\t144d c00c  P30/P35 notebook\n\t\t17aa 201e  ThinkPad X60/X60s\n\t0554  R5C554\n\t0575  R5C575 SD Bus Host Adapter\n\t0576  R5C576 SD Bus Host Adapter\n\t0592  R5C592 Memory Stick Bus Host Adapter\n\t\t1025 0121  Aspire 5920G\n\t\t1028 01d7  XPS M1210\n\t\t1028 01f3  Inspiron 1420\n\t\t1028 022f  Inspiron 1525\n\t\t103c 1521  HP EliteBook 8540w\n\t\t103c 30b5  Presario V3242AU\n\t\t103c 30b7  Presario V6133CL\n\t\t103c 30cc  Pavilion dv6700\n\t\t103c 30cf  Pavilion dv95xx/96xx/97xx/98xx series\n\t\t1043 1017  X58LE\n\t\t1043 1237  A6J-Q008\n\t\t1043 1967  V6800V\n\t\t104d 9035  VAIO VGN-FW11ZRU\n\t\t144d c018  X20 IV\n\t\t17aa 20ca  ThinkPad T61/T400\n\t0811  R5C811\n\t0822  R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter\n\t\t1014 0556  ThinkPad X40 / X41 / X60s / Z60t\n\t\t1014 0598  ThinkPad Z60m\n\t\t1025 0121  Aspire 5920G\n\t\t1028 0188  Inspiron 6000 laptop\n\t\t1028 01a2  Inspiron 9200\n\t\t1028 01d7  XPS M1210\n\t\t1028 01f3  Inspiron 1420\n\t\t1028 022f  Inspiron 1525\n\t\t103c 03b5  Presario V3242AU\n\t\t103c 30b7  Presario V6133CL\n\t\t103c 30c1  Compaq 6910p\n\t\t103c 30cc  Pavilion dv6700\n\t\t103c 30cf  Pavilion dv9668eg Laptop\n\t\t1043 1017  X58LE\n\t\t1043 1237  A6J-Q008\n\t\t1043 1967  V6800V\n\t\t10f7 8338  Panasonic CF-Y5 laptop\n\t\t144d c018  X20 IV\n\t\t17aa 201d  ThinkPad X60/X60s\n\t\t17aa 20c7  ThinkPad T61\n\t\t17aa 20c8  ThinkPad T400/W500\n\t0832  R5C832 IEEE 1394 Controller\n\t\t1025 0121  Aspire 5920G\n\t\t1028 01d7  XPS M1210\n\t\t1028 01f3  Inspiron 1420\n\t\t1028 022f  Inspiron 1525\n\t\t1028 024d  Latitude E4300\n\t\t103c 30b5  Presario V3242AU\n\t\t103c 30b7  Presario V6133CL\n\t\t103c 30c1  Compaq 6910p\n\t\t103c 30cc  Pavilion dv6700\n\t\t103c 30cf  Pavilion dv9668eg Laptop\n\t\t17aa 20c5  ThinkPad R61\n\t\t17aa 20c7  ThinkPad R61/T400\n\t0841  R5C841 CardBus/SD/SDIO/MMC/MS/MSPro/xD/IEEE1394\n\t0843  R5C843 MMC Host Controller\n\t\t1025 0121  Aspire 5920G\n\t\t1028 01d7  XPS M1210\n\t\t1028 01f3  Inspiron 1420\n\t\t1028 01f5  Inspiron 1501\n\t\t1028 024f  Latitude e6500\n\t\t103c 03b5  Presario V3242AU\n\t\t103c 1521  HP EliteBook 8540w\n\t\t103c 30b7  Presario V6133CL\n\t\t103c 30cf  Pavilion dv9500/9600/9700 series\n\t\t1043 1017  X58LE\n\t\t1183 0843  Alienware Aurora m9700\n\t0852  xD-Picture Card Controller\n\t\t1025 0121  Aspire 5920G\n\t\t1028 01f3  Inspiron 1420\n\t\t1028 022f  Inspiron 1525\n\t\t103c 30b5  Presario V3242AU\n\t\t103c 30b7  Presario V6133CL\n\t\t103c 30cc  Pavilion dv6700\n\t\t103c 30cf  Pavilion dv9668eg Laptop\n\t\t1043 1967  V6800V\n\t\t1180 0852  Pavilion 2410us\n\t\t1324 10cf  P7120\n\t\t17aa 20cb  ThinkPad T400\n\te230  R5U2xx (R5U230 / R5U231 / R5U241) [Memory Stick Host Controller]\n\te476  CardBus bridge\n\t\t1028 040a  Latitude E6410\n\t\t1028 040b  Latitude E6510\n\te822  MMC/SD Host Controller\n\t\t1028 040a  Latitude E6410\n\t\t1028 040b  Latitude E6510\n\t\t17aa 21cf  ThinkPad T520\n\te823  PCIe SDXC/MMC Host Controller\n\t\t17aa 21cf  ThinkPad T520\n\te832  R5C832 PCIe IEEE 1394 Controller\n\t\t1028 040a  Latitude E6410\n\t\t1028 040b  Latitude E6510\n\t\t17aa 21cf  ThinkPad T520\n\te852  PCIe xD-Picture Card Controller\n1181  Telmatics International\n1183  Fujikura Ltd\n1184  Forks Inc\n1185  Dataworld International Ltd\n1186  D-Link System Inc\n\t1002  DL10050 Sundance Ethernet\n\t\t1186 1002  DFE-550TX/FX\n\t\t1186 1012  DFE-580TX\n\t1025  AirPlus Xtreme G DWL-G650 Adapter\n\t1026  AirXpert DWL-AG650 Wireless Cardbus Adapter\n\t1043  AirXpert DWL-AG650 Wireless Cardbus Adapter\n\t1300  RTL8139 Ethernet\n\t\t1186 1300  DFE-538TX 10/100 Ethernet Adapter\n\t\t1186 1301  DFE-530TX+ 10/100 Ethernet Adapter\n\t\t1186 1303  DFE-528TX 10/100 Fast Ethernet PCI Adapter\n\t1340  DFE-690TXD CardBus PC Card\n\t1540  DFE-680TX\n\t1541  DFE-680TXD CardBus PC Card\n\t1561  DRP-32TXD Cardbus PC Card\n\t3300  DWL-510 / DWL-610 802.11b [Realtek RTL8180L]\n\t\t1186 3300  DWL-610 Wireless Cardbus Adapter\n\t\t1186 3301  DWL-510 Wireless PCI Adapter\n\t3a10  AirXpert DWL-AG650 Wireless Cardbus Adapter(rev.B)\n\t3a11  AirXpert DWL-AG520 Wireless PCI Adapter(rev.B)\n\t4000  DL2000-based Gigabit Ethernet\n\t4001  DGE-550SX PCI-X Gigabit Ethernet Adapter\n\t4200  DFE-520TX Fast Ethernet PCI Adapter\n\t\t1186 1103  DFE-520TX Fast Ethernet PCI Adapter (rev. C1)\n\t4300  DGE-528T Gigabit Ethernet Adapter\n\t\t1186 4300  DGE-528T PCI Gigabit Ethernet Adapter\n# rev. B1; RealTek RTL8168E.\n\t\t1186 4b10  DGE-560T PCI Express (x1) Gigabit Ethernet Adapter\n\t4302  DGE-530T Gigabit Ethernet Adapter (rev.C1) [Realtek RTL8169]\n\t4b00  DGE-560T PCI Express Gigabit Ethernet Adapter\n\t4b01  DGE-530T Gigabit Ethernet Adapter (rev 11)\n\t4b02  DGE-560SX PCI Express Gigabit Ethernet Adapter\n\t4b03  DGE-550T Gigabit Ethernet Adapter V.B1\n\t4c00  Gigabit Ethernet Adapter\n\t\t1186 4c00  DGE-530T Gigabit Ethernet Adapter\n\t8400  D-Link DWL-650+ CardBus PC Card\n1187  Advanced Technology Laboratories, Inc.\n1188  Shima Seiki Manufacturing Ltd.\n1189  Matsushita Electronics Co Ltd\n118a  Hilevel Technology\n118b  Hypertec Pty Limited\n118c  Corollary, Inc\n\t0014  PCIB [C-bus II to PCI bus host bridge chip]\n\t1117  Intel 8-way XEON Profusion Chipset [Cache Coherency Filter]\n118d  BitFlow Inc\n\t0001  Raptor-PCI framegrabber\n\t0012  Model 12 Road Runner Frame Grabber\n\t0014  Model 14 Road Runner Frame Grabber\n\t0024  Model 24 Road Runner Frame Grabber\n\t0044  Model 44 Road Runner Frame Grabber\n\t0112  Model 12 Road Runner Frame Grabber\n\t0114  Model 14 Road Runner Frame Grabber\n\t0124  Model 24 Road Runner Frame Grabber\n\t0144  Model 44 Road Runner Frame Grabber\n\t0212  Model 12 Road Runner Frame Grabber\n\t0214  Model 14 Road Runner Frame Grabber\n\t0224  Model 24 Road Runner Frame Grabber\n\t0244  Model 44 Road Runner Frame Grabber\n\t0312  Model 12 Road Runner Frame Grabber\n\t0314  Model 14 Road Runner Frame Grabber\n\t0324  Model 24 Road Runner Frame Grabber\n\t0344  Model 44 Road Runner Frame Grabber\n\tb04e  Claxon CXP4 CoaXPress frame grabber\n118e  Hermstedt GmbH\n118f  Green Logic\n1190  Tripace\n\tc731  TP-910/920/940 PCI Ultra(Wide) SCSI Adapter\n1191  Artop Electronic Corp\n\t0003  SCSI Cache Host Adapter\n\t0004  ATP8400\n\t0005  ATP850UF\n\t0006  ATP860 NO-BIOS\n\t0007  ATP860\n\t0008  ATP865 NO-ROM\n\t0009  ATP865\n\t000a  ATP867-A\n\t000b  ATP867-B\n\t000d  ATP8620\n\t000e  ATP8620\n\t0011  ATP865-B\n\t\t1191 0011  ACARD AEC-6280\n\t8002  AEC6710 SCSI-2 Host Adapter\n\t8010  AEC6712UW SCSI\n\t8020  AEC6712U SCSI\n\t8030  AEC6712S SCSI\n\t8040  AEC6712D SCSI\n\t8050  AEC6712SUW SCSI\n\t8060  AEC6712 SCSI\n\t8080  AEC67160 SCSI\n\t8081  AEC67160S SCSI\n\t808a  AEC67162 2-ch. LVD SCSI\n1192  Densan Company Ltd\n1193  Zeitnet Inc.\n\t0001  1221\n\t0002  1225\n1194  Toucan Technology\n1195  Ratoc System Inc\n1196  Hytec Electronics Ltd\n1197  Gage Applied Sciences, Inc.\n\t010c  CompuScope 82G 8bit 2GS/s Analog Input Card\n1198  Lambda Systems Inc\n1199  Attachmate Corporation\n\t0101  Advanced ISCA/PCI Adapter\n119a  Mind Share, Inc.\n119b  Omega Micro Inc.\n\t1221  82C092G\n119c  Information Technology Inst.\n119d  Bug, Inc. Sapporo Japan\n119e  Fujitsu Microelectronics Ltd.\n\t0001  FireStream 155\n\t0003  FireStream 50\n119f  Bull HN Information Systems\n\t1081  BXI Host Channel Adapter\n# BXI stands for Bull eXascale Interconnect\n\t1101  BXI Host Channel Adapter v1.2\n# BXI stands for Bull eXascale Interconnect\n\t1121  BXI Host Channel Adapter v1.3\n11a0  Convex Computer Corporation\n11a1  Hamamatsu Photonics K.K.\n11a2  Sierra Research and Technology\n11a3  Deuretzbacher GmbH & Co. Eng. KG\n11a4  Barco Graphics NV\n11a5  Microunity Systems Eng. Inc\n11a6  Pure Data Ltd.\n11a7  Power Computing Corp.\n11a8  Systech Corp.\n11a9  InnoSys Inc.\n\t4240  AMCC S933Q Intelligent Serial Card\n11aa  Actel\n# Nee Galileo Technology, Inc.\n11ab  Marvell Technology Group Ltd.\n\t0100  88F3700 [Armada 3700 Family] ARM SoC\n\t0110  88F60x0/88F70x0/88F80x0/CN913x ARM SoC\n\t0146  GT-64010/64010A System Controller\n\t0f53  88E6318 Link Street network controller\n\t11ab  MV88SE614x SATA II PCI-E controller\n\t138f  W8300 802.11 Adapter (rev 07)\n\t1fa6  Marvell W8300 802.11 Adapter\n\t\t1186 3b08  AirPlus G DWL-G630 Wireless Cardbus Adapter (rev.A1)\n\t1fa7  88W8310 and 88W8000G [Libertas] 802.11g client chipset\n\t1faa  88w8335 [Libertas] 802.11b/g Wireless\n\t\t1385 4e00  WG511v2 54 Mbps Wireless PC Card\n\t\t1385 6b00  WG311v3 802.11g Wireless PCI Adapter\n\t\t1737 0040  WPC54G v5 802.11g Wireless-G Notebook Adapter\n\t2211  88SB2211 PCI Express to PCI Bridge\n\t2a01  88W8335 [Libertas] 802.11b/g Wireless\n\t2a02  88W8361 [TopDog] 802.11n Wireless\n\t\t07d1 3b02  DIR-615 rev. A1 Mini PCI Wireless Module\n\t\t1385 7c00  WN511T RangeMax Next 300 Mbps Wireless PC Card\n\t\t1385 7c01  WN511T RangeMax Next 300 Mbps Wireless Notebook Adapter\n\t\t1385 7e00  WN311T RangeMax Next 300 Mbps Wireless PCI Adapter\n\t\t1799 801b  F5D8011 v2 802.11n N1 Wireless Notebook Card\n\t2a08  88W8362e [TopDog] 802.11a/b/g/n Wireless\n\t2a0a  88W8363 [TopDog] 802.11n Wireless\n\t2a0c  88W8363 [TopDog] 802.11n Wireless\n\t2a24  88W8363 [TopDog] 802.11n Wireless\n\t2a2b  88W8687 [TopDog] 802.11b/g Wireless\n\t2a30  88W8687 [TopDog] 802.11b/g Wireless\n\t2a40  88W8366 [TopDog] 802.11n Wireless\n\t2a41  88W8366 [TopDog] 802.11n Wireless\n\t2a42  88W8366 [TopDog] 802.11n Wireless\n\t2a43  88W8366 [TopDog] 802.11n Wireless\n\t2a55  88W8864 [Avastar] 802.11ac Wireless\n\t2b36  88W8764 [Avastar] 802.11n Wireless\n\t2b38  88W8897 [AVASTAR] 802.11ac Wireless\n\t2b40  88W8964 [Avastar] 802.11ac Wireless\n\t4101  OLPC Cafe Controller Secure Digital Controller\n\t4146  GT-64111 System Controller\n\t4320  88E8001 Gigabit Ethernet Controller\n\t\t1019 0f38  Marvell 88E8001 Gigabit Ethernet Controller (ECS)\n\t\t1019 8001  Marvell 88E8001 Gigabit Ethernet Controller (ECS)\n\t\t1043 173c  Marvell 88E8001 Gigabit Ethernet Controller (Asus)\n\t\t1043 811a  Marvell 88E8001 Gigabit Ethernet Controller (Asus)\n\t\t105b 0c19  Marvell 88E8001 Gigabit Ethernet Controller (Foxconn)\n\t\t10b8 b452  EZ Card 1000 (SMC9452TXV.2)\n\t\t11ab 0121  Marvell RDK-8001\n\t\t11ab 0321  Marvell RDK-8003\n\t\t11ab 1021  Marvell RDK-8010\n\t\t11ab 4320  Marvell Yukon Gigabit Ethernet 10/100/1000Baset-T Constroller (Asus)\n\t\t11ab 5021  Marvell Yukon Gigabit Ethernet 10/100/1000Base-T Controller (64 bit)\n\t\t11ab 9521  Marvell Yukon Gigabit Ethernet 10/100/1000Base-T Controller (32 bit)\n\t\t1458 e000  Marvell 88E8001 Gigabit Ethernet Controller (Gigabyte)\n\t\t147b 1406  Marvell 88E8001 Gigabit Ethernet Controller (Abit)\n\t\t15d4 0047  Marvell 88E8001 Gigabit Ethernet Controller (Iwill)\n\t\t1695 9025  Marvell 88E8001 Gigabit Ethernet Controller (Epox)\n\t\t17f2 1c03  Marvell 88E8001 Gigabit Ethernet Controller (Albatron)\n\t\t270f 2803  Marvell 88E8001 Gigabit Ethernet Controller (Chaintech)\n\t4340  88E8021 PCI-X IPMI Gigabit Ethernet Controller\n\t4341  88E8022 PCI-X IPMI Gigabit Ethernet Controller\n\t4342  88E8061 PCI-E IPMI Gigabit Ethernet Controller\n\t4343  88E8062 PCI-E IPMI Gigabit Ethernet Controller\n\t4344  88E8021 PCI-X IPMI Gigabit Ethernet Controller\n\t4345  88E8022 PCI-X IPMI Gigabit Ethernet Controller\n\t4346  88E8061 PCI-E IPMI Gigabit Ethernet Controller\n\t4347  88E8062 PCI-E IPMI Gigabit Ethernet Controller\n\t\t4c53 10d0  Telum ASLP10 PrAMC Gigabit Ethernet\n\t4350  88E8035 PCI-E Fast Ethernet Controller\n\t\t1179 0001  Marvell 88E8035 Fast Ethernet Controller (Toshiba)\n\t\t11ab 3521  Marvell RDK-8035\n\t\t1854 000d  Marvell 88E8035 Fast Ethernet Controller (LGE)\n\t\t1854 000e  Marvell 88E8035 Fast Ethernet Controller (LGE)\n\t\t1854 000f  Marvell 88E8035 Fast Ethernet Controller (LGE)\n\t\t1854 0011  Marvell 88E8035 Fast Ethernet Controller (LGE)\n\t\t1854 0012  Marvell 88E8035 Fast Ethernet Controller (LGE)\n\t\t1854 0016  Marvell 88E8035 Fast Ethernet Controller (LGE)\n\t\t1854 0017  Marvell 88E8035 Fast Ethernet Controller (LGE)\n\t\t1854 0018  Marvell 88E8035 Fast Ethernet Controller (LGE)\n\t\t1854 0019  Marvell 88E8035 Fast Ethernet Controller (LGE)\n\t\t1854 001c  Marvell 88E8035 Fast Ethernet Controller (LGE)\n\t\t1854 001e  Marvell 88E8035 Fast Ethernet Controller (LGE)\n\t\t1854 0020  Marvell 88E8035 Fast Ethernet Controller (LGE)\n\t4351  88E8036 PCI-E Fast Ethernet Controller\n\t\t107b 4009  Marvell 88E8036 Fast Ethernet Controller (Wistron)\n\t\t10f7 8338  Marvell 88E8036 Fast Ethernet Controller (Panasonic)\n\t\t1179 0001  Marvell 88E8036 Fast Ethernet Controller (Toshiba)\n\t\t1179 ff00  Marvell 88E8036 Fast Ethernet Controller (Compal)\n\t\t1179 ff10  Marvell 88E8036 Fast Ethernet Controller (Inventec)\n\t\t11ab 3621  Marvell RDK-8036\n\t\t13d1 ac12  Abocom EFE3K - 10/100 Ethernet Expresscard\n\t\t161f 203d  Marvell 88E8036 Fast Ethernet Controller (Arima)\n\t\t1854 000d  Marvell 88E8036 Fast Ethernet Controller (LGE)\n\t\t1854 000e  Marvell 88E8036 Fast Ethernet Controller (LGE)\n\t\t1854 000f  Marvell 88E8036 Fast Ethernet Controller (LGE)\n\t\t1854 0011  Marvell 88E8036 Fast Ethernet Controller (LGE)\n\t\t1854 0012  Marvell 88E8036 Fast Ethernet Controller (LGE)\n\t\t1854 0016  Marvell 88E8036 Fast Ethernet Controller (LGE)\n\t\t1854 0017  Marvell 88E8036 Fast Ethernet Controller (LGE)\n\t\t1854 0018  Marvell 88E8036 Fast Ethernet Controller (LGE)\n\t\t1854 0019  Marvell 88E8036 Fast Ethernet Controller (LGE)\n\t\t1854 001c  Marvell 88E8036 Fast Ethernet Controller (LGE)\n\t\t1854 001e  Marvell 88E8036 Fast Ethernet Controller (LGE)\n\t\t1854 0020  Marvell 88E8036 Fast Ethernet Controller (LGE)\n\t4352  88E8038 PCI-E Fast Ethernet Controller\n\t4353  88E8039 PCI-E Fast Ethernet Controller\n\t\t104d 902d  VAIO VGN-NR120E\n\t4354  88E8040 PCI-E Fast Ethernet Controller\n\t\t1028 022f  Inspiron 1525\n\t\t144d c06a  R730 Laptop\n\t\t144d c072  Notebook N150P\n\t4355  88E8040T PCI-E Fast Ethernet Controller\n\t\t1179 ff50  Satellite P305D-S8995E\n\t4356  88EC033 PCI-E Fast Ethernet Controller\n\t4357  88E8042 PCI-E Fast Ethernet Controller\n\t435a  88E8048 PCI-E Fast Ethernet Controller\n\t4360  88E8052 PCI-E ASF Gigabit Ethernet Controller\n\t\t1043 8134  Marvell 88E8052 Gigabit Ethernet Controller (Asus)\n\t\t107b 4009  Marvell 88E8052 Gigabit Ethernet Controller (Wistron)\n\t\t11ab 5221  Marvell RDK-8052\n\t\t1458 e000  Marvell 88E8052 Gigabit Ethernet Controller (Gigabyte)\n\t\t1462 052c  Marvell 88E8052 Gigabit Ethernet Controller (MSI)\n\t\t1849 8052  Marvell 88E8052 Gigabit Ethernet Controller (ASRock)\n\t\ta0a0 0509  Marvell 88E8052 Gigabit Ethernet Controller (Aopen)\n\t4361  88E8050 PCI-E ASF Gigabit Ethernet Controller\n\t\t107b 3015  Marvell 88E8050 Gigabit Ethernet Controller (Gateway)\n\t\t11ab 5021  Marvell 88E8050 Gigabit Ethernet Controller (Intel)\n\t\t8086 3063  D925XCVLK mainboard\n\t\t8086 3439  Marvell 88E8050 Gigabit Ethernet Controller (Intel)\n\t4362  88E8053 PCI-E Gigabit Ethernet Controller\n\t\t103c 2a0d  Marvell 88E8053 Gigabit Ethernet Controller (Asus)\n\t\t1043 8142  Marvell 88E8053 Gigabit Ethernet controller PCIe (Asus)\n\t\t109f 3197  Marvell 88E8053 Gigabit Ethernet Controller (Trigem)\n\t\t10f7 8338  Marvell 88E8053 Gigabit Ethernet Controller (Panasonic)\n\t\t10fd a430  Marvell 88E8053 Gigabit Ethernet Controller (SOYO)\n\t\t1179 0001  Marvell 88E8053 Gigabit Ethernet Controller (Toshiba)\n\t\t1179 ff00  Marvell 88E8053 Gigabit Ethernet Controller (Compal)\n\t\t1179 ff10  Marvell 88E8053 Gigabit Ethernet Controller (Inventec)\n\t\t11ab 5321  Marvell RDK-8053\n\t\t1297 c240  Marvell 88E8053 Gigabit Ethernet Controller (Shuttle)\n\t\t1297 c241  Marvell 88E8053 Gigabit Ethernet Controller (Shuttle)\n\t\t1297 c242  Marvell 88E8053 Gigabit Ethernet Controller (Shuttle)\n\t\t1297 c243  Marvell 88E8053 Gigabit Ethernet Controller (Shuttle)\n\t\t1297 c244  Marvell 88E8053 Gigabit Ethernet Controller (Shuttle)\n\t\t13d1 ac11  EGE5K - Giga Ethernet Expresscard\n\t\t1458 e000  Marvell 88E8053 Gigabit Ethernet Controller (Gigabyte)\n\t\t1462 058c  Marvell 88E8053 Gigabit Ethernet Controller (MSI)\n\t\t14c0 0012  Marvell 88E8053 Gigabit Ethernet Controller (Compal)\n\t\t1558 04a0  Marvell 88E8053 Gigabit Ethernet Controller (Clevo)\n\t\t15bd 1003  Marvell 88E8053 Gigabit Ethernet Controller (DFI)\n\t\t161f 203c  Marvell 88E8053 Gigabit Ethernet Controller (Arima)\n\t\t161f 203d  Marvell 88E8053 Gigabit Ethernet Controller (Arima)\n\t\t1695 9029  Marvell 88E8053 Gigabit Ethernet Controller (Epox)\n\t\t17f2 2c08  Marvell 88E8053 Gigabit Ethernet Controller (Albatron)\n\t\t17ff 0585  Marvell 88E8053 Gigabit Ethernet Controller (Quanta)\n\t\t1849 8053  Marvell 88E8053 Gigabit Ethernet Controller (ASRock)\n\t\t1854 000b  Marvell 88E8053 Gigabit Ethernet Controller (LGE)\n\t\t1854 000c  Marvell 88E8053 Gigabit Ethernet Controller (LGE)\n\t\t1854 0010  Marvell 88E8053 Gigabit Ethernet Controller (LGE)\n\t\t1854 0013  Marvell 88E8053 Gigabit Ethernet Controller (LGE)\n\t\t1854 0014  Marvell 88E8053 Gigabit Ethernet Controller (LGE)\n\t\t1854 0015  Marvell 88E8053 Gigabit Ethernet Controller (LGE)\n\t\t1854 001a  Marvell 88E8053 Gigabit Ethernet Controller (LGE)\n\t\t1854 001b  Marvell 88E8053 Gigabit Ethernet Controller (LGE)\n\t\t1854 001d  Marvell 88E8053 Gigabit Ethernet Controller (LGE)\n\t\t1854 001f  Marvell 88E8053 Gigabit Ethernet Controller (LGE)\n\t\t1854 0021  Marvell 88E8053 Gigabit Ethernet Controller (LGE)\n\t\t1854 0022  Marvell 88E8053 Gigabit Ethernet Controller (LGE)\n\t\t270f 2801  Marvell 88E8053 Gigabit Ethernet Controller (Chaintech)\n\t\ta0a0 0506  Marvell 88E8053 Gigabit Ethernet Controller (Aopen)\n\t4363  88E8055 PCI-E Gigabit Ethernet Controller\n\t4364  88E8056 PCI-E Gigabit Ethernet Controller\n\t\t1043 81f8  Motherboard\n\t\t11ba 00ba  8056 Gigabit Ethernet Controller\n\t4365  88E8070 based Ethernet Controller\n\t4366  88EC036 PCI-E Gigabit Ethernet Controller\n\t4367  88EC032 Ethernet Controller\n\t4368  88EC034 Ethernet Controller\n\t4369  88EC042 Ethernet Controller\n\t436a  88E8058 PCI-E Gigabit Ethernet Controller\n\t\t11ab 00ba  Imac 8,1 Wired Ethernet Adapter\n\t436b  88E8071 PCI-E Gigabit Ethernet Controller\n\t436c  88E8072 PCI-E Gigabit Ethernet Controller\n\t436d  88E8055 PCI-E Gigabit Ethernet Controller\n\t4370  88E8075 PCI-E Gigabit Ethernet Controller\n\t4380  88E8057 PCI-E Gigabit Ethernet Controller\n# AVB = \"Audio Video Bridging\"\n\t4381  Yukon Optima 88E8059 [PCIe Gigabit Ethernet Controller with AVB]\n\t\t1259 2803  AT-2814FX\n\t\t1259 2804  AT-2874xx\n\t4611  GT-64115 System Controller\n\t4620  GT-64120/64120A/64121A System Controller\n\t4801  GT-48001\n\t5005  Belkin F5D5005 Gigabit Desktop Network PCI Card\n\t5040  MV88SX5040 4-port SATA I PCI-X Controller\n\t5041  MV88SX5041 4-port SATA I PCI-X Controller\n\t5080  MV88SX5080 8-port SATA I PCI-X Controller\n\t5081  MV88SX5081 8-port SATA I PCI-X Controller\n\t5181  88f5181 [Orion-1] ARM SoC\n\t5182  88f5182 [Orion-NAS] ARM SoC\n\t5281  88f5281 [Orion-2] ARM SoC\n\t6041  MV88SX6041 4-port SATA II PCI-X Controller\n\t6042  88SX6042 PCI-X 4-Port SATA-II\n\t6081  MV88SX6081 8-port SATA II PCI-X Controller\n\t6101  88SE6101/6102 single-port PATA133 interface\n\t\t1043 82e0  P5K PRO Motherboard\n\t6121  88SE6111/6121 SATA II / PATA Controller\n# 6111: 1 SATA port; 6121: 2 SATA ports\n\t\t11ab 6121  88SE6111/6121 1/2 port SATA II + 1 port PATA Controller\n\t6141  88SE614x SATA II PCI-E controller\n\t6145  88SE6145 SATA II PCI-E controller\n\t6180  88F6180 [Kirkwood] ARM SoC\n\t6192  88F6190/6192 [Kirkwood] ARM SoC\n\t6281  88F6281 [Kirkwood] ARM SoC\n# This device ID was used for earlier chips.\n\t6381  MV78xx0 [Discovery Innovation] ARM SoC\n\t6440  88SE63x0 x1, 88SE6440 x4 PCIe SAS/SATA 3Gb/s RAID controller\n\t6450  64560 System Controller\n\t6460  MV64360/64361/64362 System Controller\n\t6480  MV64460/64461/64462 System Controller\n\t\t1775 c200  C2K CompactPCI single board computer\n\t6485  MV64460/64461/64462 System Controller, Revision B\n\t6560  88F6560 [Avanta] ARM SoC\n\t6710  88F6710 [Armada 370] ARM SoC\n\t6820  88F6820 [Armada 385] ARM SoC\n\t6828  88F6828 [Armada 388] ARM SoC\n\t6920  88F6920 [Armada 390] ARM SoC\n\t7042  88SX7042 PCIe 4-port SATA-II controller\n\t\t16b8 434b  Tempo SATA E4P\n\t7810  MV78100 [Discovery Innovation] ARM SoC\n\t7820  MV78200 [Discovery Innovation] ARM SoC\n\t7823  MV78230 [Armada XP] ARM SoC\n\t7846  MV78460 [Armada XP] ARM SoC\n\td40f  Bobcat3 Ethernet Switch\n\tf003  GT-64010 Primary Image Piranha Image Generator\n11ac  Canon Information Systems Research Aust.\n11ad  Lite-On Communications Inc\n\t0002  LNE100TX\n\t\t11ad 0002  LNE100TX\n\t\t11ad 0003  LNE100TX\n\t\t11ad f003  LNE100TX\n\t\t11ad ffff  LNE100TX\n\t\t1385 f004  FA310/TX LAN 10/100 PCI Ethernet Adapter\n\t\t2646 f002  KNE110TX EtheRx Fast Ethernet\n\tc115  LNE100TX [Linksys EtherFast 10/100]\n\t\t11ad c001  LNE100TX [ver 2.0]\n\t\t2646 000b  KNE111TX\n11ae  Aztech System Ltd\n11af  Avid Technology Inc.\n\t0001  Cinema\n\tee21  Digidesign DSP Farm\n\tee40  Digidesign Audiomedia III\n\tee60  Digidesign SampleCell II / II Plus\n11b0  V3 Semiconductor Inc.\n\t0002  V300PSC\n\t0292  V292PBC [Am29030/40 Bridge]\n\t0960  V96xPBC\n\t880a  Deltacast Delta-HD-22\n\tc960  V96DPC\n11b1  Apricot Computers\n11b2  Eastman Kodak\n11b3  Barr Systems Inc.\n11b4  Leitch Technology International\n11b5  Radstone Technology Plc\n11b6  United Video Corp\n11b7  Motorola\n11b8  XPoint Technologies, Inc\n\t0001  Quad PeerMaster\n11b9  Pathlight Technology Inc.\n\tc0ed  SSA Controller\n11ba  Videotron Corp\n11bb  Pyramid Technology\n11bc  Network Peripherals Inc\n\t0001  NP-PCI\n11bd  Pinnacle Systems Inc.\n\t0015  FireWire Controller\n\t0023  Studio 700\n\t002e  PCTV 40i\n\t0040  Royal TS Function 1\n\t\t11bd 0044  PCTV 2000i Dual DVB-T Pro PCI Tuner 1\n\t\t11bd 0045  PCTV Dual Sat Pro PCI 4000i Tuner 1\n\t0041  RoyalTS Function 2\n\t\t11bd 0044  PCTV 2000i Dual DVB-T Pro PCI Tuner 2\n\t\t11bd 0045  PCTV Dual Sat Pro PCI 4000i Tuner 2\n\t0042  Royal TS Function 3\n\t\t11bd 0044  PCTV 2000i Dual DVB-T Pro PCI Common\n\t\t11bd 0045  PCTV Dual Sat Pro PCI 4000i Common\n\t0051  PCTV HD 800i\n\tbede  AV/DV Studio Capture Card\n11be  International Microcircuits Inc\n11bf  Astrodesign, Inc.\n11c0  Hewlett Packard\n# nee Agere Systems nee Lucent Microelectronics\n11c1  LSI Corporation\n\t0440  56k WinModem\n\t\t1033 8015  LT WinModem 56k Data+Fax+Voice+Dsvd\n\t\t1033 8047  LT WinModem 56k Data+Fax+Voice+Dsvd\n\t\t1033 804f  LT WinModem 56k Data+Fax+Voice+Dsvd\n\t\t10cf 102c  LB LT Modem V.90 56k\n\t\t10cf 104a  BIBLO LT Modem 56k\n\t\t10cf 105f  LB2 LT Modem V.90 56k\n\t\t1179 0001  Internal V.90 Modem\n\t\t11c1 0440  LT WinModem 56k Data+Fax+Voice+Dsvd\n\t\t122d 4101  MDP7800-U Modem\n\t\t122d 4102  MDP7800SP-U Modem\n\t\t13e0 0040  LT WinModem 56k Data+Fax+Voice+Dsvd\n\t\t13e0 0440  LT WinModem 56k Data+Fax+Voice+Dsvd\n\t\t13e0 0441  LT WinModem 56k Data+Fax+Voice+Dsvd\n\t\t13e0 0450  LT WinModem 56k Data+Fax+Voice+Dsvd\n\t\t13e0 f100  LT WinModem 56k Data+Fax+Voice+Dsvd\n\t\t13e0 f101  LT WinModem 56k Data+Fax+Voice+Dsvd\n\t\t144d 2101  LT56PV Modem\n\t\t149f 0440  LT WinModem 56k Data+Fax+Voice+Dsvd\n\t0441  56k WinModem\n\t\t1033 804d  LT WinModem 56k Data+Fax\n\t\t1033 8065  LT WinModem 56k Data+Fax\n\t\t1092 0440  Supra 56i\n\t\t1179 0001  Internal V.90 Modem\n\t\t11c1 0440  LT WinModem 56k Data+Fax\n\t\t11c1 0441  LT WinModem 56k Data+Fax\n\t\t122d 4100  MDP7800-U Modem\n\t\t13e0 0040  LT WinModem 56k Data+Fax\n\t\t13e0 0100  LT WinModem 56k Data+Fax\n\t\t13e0 0410  LT WinModem 56k Data+Fax\n\t\t13e0 0420  TelePath Internet 56k WinModem\n\t\t13e0 0440  LT WinModem 56k Data+Fax\n\t\t13e0 0443  LT WinModem 56k Data+Fax\n\t\t13e0 f102  LT WinModem 56k Data+Fax\n\t\t1416 9804  CommWave 56k Modem\n\t\t141d 0440  LT WinModem 56k Data+Fax\n\t\t144f 0441  Lucent 56k V.90 DF Modem\n\t\t144f 0449  Lucent 56k V.90 DF Modem\n\t\t144f 110d  Lucent Win Modem\n\t\t1468 0441  Presario 56k V.90 DF Modem\n\t\t1668 0440  Lucent Win Modem\n\t0442  56k WinModem\n\t\t11c1 0440  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd\n\t\t11c1 0442  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd\n\t\t13e0 0412  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd\n\t\t13e0 0442  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd\n\t\t13fc 2471  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd\n\t\t144d 2104  LT56PT Modem\n\t\t144f 1104  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd\n\t\t149f 0440  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd\n\t\t1668 0440  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd\n\t0443  LT WinModem\n\t0444  LT WinModem\n\t0445  LT WinModem\n\t\t8086 2203  PRO/100+ MiniPCI (probably an Ambit U98.003.C.00 combo card)\n\t\t8086 2204  PRO/100+ MiniPCI on Armada E500\n\t0446  LT WinModem\n\t0447  LT WinModem\n\t0448  WinModem 56k\n\t\t1014 0131  Lucent Win Modem\n\t\t1033 8066  LT WinModem 56k Data+Fax+Voice+Dsvd\n\t\t13e0 0030  56k Voice Modem\n\t\t13e0 0040  LT WinModem 56k Data+Fax+Voice+Dsvd\n# Actiontech eth+modem card as used by Dell &c.\n\t\t1668 2400  LT WinModem 56k (MiniPCI Ethernet+Modem)\n\t0449  L56xM+S [Mars-2] WinModem 56k\n\t\t0e11 b14d  56k V.90 Modem\n\t\t1014 018c  ThinkPad 600X\n\t\t13e0 0020  LT WinModem 56k Data+Fax\n\t\t13e0 0041  TelePath Internet 56k WinModem\n\t\t1436 0440  Lucent Win Modem\n\t\t144f 0449  Lucent 56k V.90 DFi Modem\n\t\t1468 0410  IBM ThinkPad T23\n\t\t1468 0440  Lucent Win Modem\n\t\t1468 0449  Presario 56k V.90 DFi Modem\n\t044a  F-1156IV WinModem (V90, 56KFlex)\n\t\t10cf 1072  LB Global LT Modem\n\t\t13e0 0012  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd\n\t\t13e0 0042  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd\n\t\t144f 1005  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd\n\t044b  LT WinModem\n\t044c  LT WinModem\n\t044d  LT WinModem\n\t044e  LT WinModem\n\t044f  V90 WildWire Modem\n\t0450  LT WinModem\n\t\t1033 80a8  Versa Note Vxi\n\t\t144f 4005  Magnia SG20\n\t\t1468 0450  Evo N600c\n\t0451  LT WinModem\n\t0452  LT WinModem\n\t0453  LT WinModem\n\t0454  LT WinModem\n\t0455  LT WinModem\n\t0456  LT WinModem\n\t0457  LT WinModem\n\t0458  LT WinModem\n\t0459  LT WinModem\n\t045a  LT WinModem\n\t045c  LT WinModem\n\t0461  V90 WildWire Modem\n\t0462  V90 WildWire Modem\n\t0480  Venus Modem (V90, 56KFlex)\n\t048c  V.92 56K WinModem\n# InPorte Home Internal 56k Modem/fax/answering machine/SMS Features\n\t048f  V.92 56k WinModem\n\t0620  Lucent V.92 Data/Fax Modem\n\t2600  StarPro26XX family (SP2601, SP2603, SP2612) DSP\n\t5400  OR3TP12 FPSC\n\t5656  Venus Modem\n\t5801  USB\n\t5802  USS-312 USB Controller\n\t5803  USS-344S USB Controller\n\t5811  FW322/323 [TrueFire] 1394a Controller\n\t\t103c 2a34  Pavilion a1677c\n\t\t103c 2a6f  Asus IPIBL-LB Motherboard\n\t\t103c 2a9e  Pavilion p6310f\n\t\t1043 8294  LSI FW322/323 IEEE 1394a FireWire Controller\n\t\t11bd 000e  LSI FW323\n\t\t8086 524c  D865PERL mainboard\n\t\t9005 0033  Adaptec AFW-2100 (HP) 2102900-R\n\t\tdead 0800  FireWire Host Bus Adapter\n\t5901  FW643 [TrueFire] PCIe 1394b Controller\n\t\t11c1 5900  FW643 [TrueFire] PCIe 1394b Controller\n\t\t1443 0643  FireBoard800-e V.2\n\t\t1546 0643  FWB-PCIE1X2x\n\t5903  FW533 [TrueFire] PCIe 1394a Controller\n\t8110  T8110 H.100/H.110 TDM switch\n\t\t12d9 000c  E1/T1 PMXc cPCI carrier card\n\tab10  WL60010 Wireless LAN MAC\n\tab11  WL60040 Multimode Wireles LAN MAC\n\t\t11c1 ab12  WaveLAN 11abg Cardbus card (Model 1102)\n\t\t11c1 ab13  WaveLAN 11abg MiniPCI card (Model 0512)\n\t\t11c1 ab15  WaveLAN 11abg Cardbus card (Model 1106)\n\t\t11c1 ab16  WaveLAN 11abg MiniPCI card (Model 0516)\n\tab20  ORiNOCO PCI Adapter\n\tab21  Agere Wireless PCI Adapter\n\tab30  Hermes2 Mini-PCI WaveLAN a/b/g\n\t\t14cd 2012  Hermes2 Mini-PCI WaveLAN a/b/g\n\ted00  ET-131x PCI-E Ethernet Controller\n\ted01  ET-131x PCI-E Ethernet Controller\n11c2  Sand Microelectronics\n11c3  NEC Corporation\n11c4  Document Technologies, Inc\n11c5  Shiva Corporation\n11c6  Dainippon Screen Mfg. Co. Ltd\n11c7  D.C.M. Data Systems\n11c8  Dolphin Interconnect Solutions AS\n\t0658  PSB32 SCI-Adapter D31x\n\td665  PSB64 SCI-Adapter D32x\n\td667  PSB66 SCI-Adapter D33x\n11c9  Magma\n\t0010  16-line serial port w/- DMA\n\t0011  4-line serial port w/- DMA\n11ca  LSI Systems, Inc\n11cb  Specialix Research Ltd.\n\t2000  PCI_9050\n\t\t11cb 0200  SX\n\t\t11cb b008  I/O8+\n\t4000  SUPI_1\n\t8000  T225\n11cc  Michels & Kleberhoff Computer GmbH\n11cd  HAL Computer Systems, Inc.\n11ce  Netaccess\n11cf  Pioneer Electronic Corporation\n11d0  Lockheed Martin Federal Systems-Manassas\n11d1  Auravision\n\t01f7  VxP524\n\t01f9  VxP951\n11d2  Intercom Inc.\n11d3  Trancell Systems Inc\n11d4  Analog Devices\n\t1535  Blackfin BF535 processor\n\t1805  SM56 PCI modem\n11d5  Ikon Corporation\n\t0115  10115\n\t0117  10117\n11d6  Tekelec Telecom\n11d7  Trenton Technology, Inc.\n11d8  Image Technologies Development\n11d9  TEC Corporation\n11da  Novell\n11db  Sega Enterprises Ltd\n11dc  Questra Corporation\n11dd  Crosfield Electronics Limited\n11de  Zoran Corporation\n\t6017  miroVIDEO DC30\n\t6057  ZR36057PQC Video cutting chipset\n\t\t1031 7efe  DC10 Plus\n\t\t1031 fc00  MiroVIDEO DC50, Motion JPEG Capture/CODEC Board\n\t\t12f8 8a02  Tekram Video Kit\n\t\t13ca 4231  JPEG/TV Card\n\t6120  ZR36120\n\t\t1328 f001  Cinemaster C DVD Decoder\n\t\t13c2 0000  MediaFocus Satellite TV Card\n\t\t1de1 9fff  Video Kit C210\n11df  New Wave PDG\n11e0  Cray Communications A/S\n11e1  GEC Plessey Semi Inc.\n11e2  Samsung Information Systems America\n11e3  Quicklogic Corporation\n\t0001  COM-ON-AIR Dosch&Amand DECT\n\t0010  QL5032 (PQFP208) [QuickPCI] 33 MHz/32-bit PCI Master/Target with Embedded Programmable Logic and Dual Port SRAM\n\t0011  QL5032 (PBGA256) [QuickPCI] 33 MHz/32-bit PCI Master/Target with Embedded Programmable Logic and Dual Port SRAM\n\t0012  QL5232 (PQFP208) [QuickPCI] 33 MHz/32-bit PCI Master/Target with Embedded Programmable Logic and Dual Port SRAM\n\t\t11e3 1204  Becker & Hickl SPC-130\n\t\t11e3 1207  Becker & Hickl DDG-200\n\t\t11e3 1209  Becker & Hickl SHM-180\n\t\t11e3 120c  Becker & Hickl PMM-428\n\t0013  QL5232 (PBGA456) [QuickPCI] 33 MHz/32-bit PCI Master/Target with Embedded Programmable Logic and Dual Port SRAM\n\t0014  QL5030 (TQFP144) [QuickPCI] 33 MHz/32-bit PCI Target with Embedded Programmable Logic and Dual Port SRAM\n\t0015  QL5130 (TQFP144) [QuickPCI] 33 MHz/32-bit PCI Target with Embedded Programmable Logic and Dual Port SRAM\n\t0016  QL5130 (PQFP208) [QuickPCI] 33 MHz/32-bit PCI Target with Embedded Programmable Logic and Dual Port SRAM\n\t\t11e3 120b  Becker & Hickl DEL-350\n\t0017  QL5130 (PBGA256) [QuickPCI] 33 MHz/32-bit PCI Target with Embedded Programmable Logic and Dual Port SRAM\n\t0019  QL5332 (PQFP208) [QuickPCI] 33 MHz/32-bit PCI Master/Target with Embedded Programmable Logic and Dual Port SRAM\n\t001a  QL5332 (PBGA256) [QuickPCI] 33 MHz/32-bit PCI Master/Target with Embedded Programmable Logic and Dual Port SRAM\n\t001b  QL5432 (PQFP208) [QuickPCI] 33 MHz/32-bit PCI Master/Target with Embedded Programmable Logic and Dual Port SRAM\n\t\t11e3 120d  Becker & Hickl SPC-140\n\t\t11e3 1211  Becker & Hickl GVD-120\n\t\t11e3 1212  Becker & Hickl DDG-210\n\t001c  QL5432 (PBGA456) [QuickPCI] 33 MHz/32-bit PCI Master/Target with Embedded Programmable Logic and Dual Port SRAM\n\t001d  QL5632 (PQFP208) [QuickPCI] 33 MHz/32-bit PCI Master/Target with Embedded Programmable Logic and Dual Port SRAM\n\t001e  QL5632 (PBGA280) [QuickPCI] 33 MHz/32-bit PCI Master/Target with Embedded Programmable Logic and Dual Port SRAM\n\t001f  QL5632 (PBGA484) [QuickPCI] 33 MHz/32-bit PCI Master/Target with Embedded Programmable Logic and Dual Port SRAM\n\t0020  QL5632 (PBGA516) [QuickPCI] 33 MHz/32-bit PCI Master/Target with Embedded Programmable Logic and Dual Port SRAM\n\t0021  QL5732 (PQFP208) [QuickPCI] 33 MHz/32-bit PCI Master/Target with Embedded Programmable Logic and Dual Port SRAM\n\t0022  QL5732 (PBGA280) [QuickPCI] 33 MHz/32-bit PCI Master/Target with Embedded Programmable Logic and Dual Port SRAM\n\t0023  QL5732 (PBGA484) [QuickPCI] 33 MHz/32-bit PCI Master/Target with Embedded Programmable Logic and Dual Port SRAM\n\t0024  QL5732 (PBGA516) [QuickPCI] 33 MHz/32-bit PCI Master/Target with Embedded Programmable Logic and Dual Port SRAM\n\t002d  QL5022 (TQFP144) [QuickPCI] 33 MHz/32-bit PCI Master/Target with Embedded Programmable Logic and Dual Port SRAM\n\t002e  QL5022 (PQFP208) [QuickPCI] 33 MHz/32-bit PCI Master/Target with Embedded Programmable Logic and Dual Port SRAM\n\t002f  QL5020 (TQFP144) [QuickPCI] 33 MHz/32-bit PCI Target with Embedded Programmable Logic and Dual Port SRAM\n\t0030  QL5020 (PQFP208) [QuickPCI] 33 MHz/32-bit PCI Target with Embedded Programmable Logic and Dual Port SRAM\n\t0560  QL5064 Companion Design Demo Board\n\t5030  PC Watchdog\n\t8417  QL5064 [QuickPCI] PCI v2.2 bridge for SMT417 Dual TMS320C6416T PMC Module\n11e4  Second Wave Inc\n11e5  IIX Consulting\n11e6  Mitsui-Zosen System Research\n11e7  Toshiba America, Elec. Company\n11e8  Digital Processing Systems Inc.\n11e9  Highwater Designs Ltd.\n11ea  Elsag Bailey\n11eb  Formation Inc.\n11ec  Coreco Inc\n\t000d  Oculus-F/64P\n\t1800  Cobra/C6\n11ed  Mediamatics\n11ee  Dome Imaging Systems Inc\n11ef  Nicolet Technologies B.V.\n11f0  Compu-Shack\n\t4231  FDDI\n\t4232  FASTline UTP Quattro\n\t4233  FASTline FO\n\t4234  FASTline UTP\n\t4235  FASTline-II UTP\n\t4236  FASTline-II FO\n\t4731  GIGAline\n11f1  Symbios Logic Inc\n11f2  Picture Tel Japan K.K.\n11f3  Keithley Metrabyte\n\t0011  KPCI-PIO24\n\t4200  42x0-SMU\n\t4205  4205-VPU\n\t4215  4200-VPU\n\t4216  422x-PxU\n\t4220  4200-CVU\n\t4221  4210-CVU\n11f4  Kinetic Systems Corporation\n\t2915  CAMAC controller\n11f5  Computing Devices International\n11f6  Compex\n\t0112  ENet100VG4\n\t0113  FreedomLine 100\n\t1401  ReadyLink 2000\n\t2011  RL100-ATX 10/100\n\t\t11f6 2011  RL100-ATX\n\t2201  ReadyLink 100TX (Winbond W89C840)\n\t\t11f6 2011  ReadyLink 100TX\n\t9881  RL100TX Fast Ethernet\n11f7  Scientific Atlanta\n# née PMC-Sierra Inc.\n11f8  Microchip Technology\n\t4036  PM40036 Switchtec PFX 36xG4 Fanout PCIe Switch\n\t4052  PM40052 Switchtec PFX 52xG4 Fanout PCIe Switch\n\t4084  PM40084 Switchtec PFX 84xG4 Fanout PCIe Switch\n\t4128  PM41028 Switchtec PSX 28xG4 Programmable PCIe Switch\n\t5000  PM50100 Switchtec PFX 100xG5 Fanout PCIe Switch\n\t5028  PM50028 Switchtec PFX 28xG5 Fanout PCIe Switch\n\t5036  PM50036 Switchtec PFX 36xG5 Fanout PCIe Switch\n\t5052  PM50052 Switchtec PFX 52xG5 Fanout PCIe Switch\n\t5068  PM50068 Switchtec PFX 68xG5 Fanout PCIe Switch\n\t5084  PM50084 Switchtec PFX 84xG5 Fanout PCIe Switch\n\t5100  PM51100 Switchtec PSX 100xG5 Programmable PCIe Switch\n\t5128  PM51028 Switchtec PSX 28xG5 Programmable PCIe Switch\n\t5136  PM51036 Switchtec PSX 36xG5 Programmable PCIe Switch\n\t5152  PM51052 Switchtec PSX 52xG5 Programmable PCIe Switch\n\t5168  PM51068 Switchtec PSX 68xG5 Programmable PCIe Switch\n\t5184  PM51084 Switchtec PSX 84xG5 Programmable PCIe Switch\n\t5220  BR522x [PMC-Sierra maxRAID SAS Controller]\n\t7364  PM7364 [FREEDM - 32 Frame Engine & Datalink Mgr]\n\t7375  PM7375 [LASAR-155 ATM SAR]\n\t7384  PM7384 [FREEDM - 84P672 Frm Engine & Datalink Mgr]\n\t8000  PM8000  [SPC - SAS Protocol Controller]\n\t8009  PM8009 SPCve 8x6G\n\t8018  PM8018 Adaptec SAS Adaptor ASA-70165H PCIe Gen3 x8 6 Gbps 16-lane 4x SFF-8644\n\t8032  PM8032 Tachyon QE8\n\t\t117c 003a  Celerity FC-81EN Fibre Channel Adapter\n\t\t117c 003b  Celerity FC-82EN Fibre Channel Adapter\n\t\t117c 003c  Celerity FC-84EN Fibre Channel Adapter\n\t\t117c 403b  ThunderLink FC 1082 Fibre Channel Adapter\n\t8053  PM8053 SXP 12G 24-port SAS/SATA expander\n\t8054  PM8054 SXP 12G 36-port SAS/SATA expander\n\t8055  PM8055 SXP 12G 48-port SAS/SATA expander\n\t8056  PM8056 SXP 12G 68-port SAS/SATA expander\n\t8060  PM8060 SRCv 12G eight-port SAS/SATA RoC\n\t8063  PM8063 SRCv 12G 16-port SAS/SATA RoC\n\t8070  PM8070 Tachyon SPCv 12G eight-port SAS/SATA controller\n\t8071  PM8071 Tachyon SPCve 12G eight-port SAS/SATA controller\n\t8072  PM8072 Tachyon SPCv 12G 16-port SAS/SATA controller\n\t8073  PM8073 Tachyon SPCve 12G 16-port SAS/SATA controller\n\t8531  PM8531 PFX 24xG3 PCIe Fanout Switch\n\t8532  PM8532 PFX 32xG3 PCIe Fanout Switch\n\t8533  PM8533 PFX 48xG3 PCIe Fanout Switch\n\t8534  PM8534 PFX 64xG3 PCIe Fanout Switch\n\t8535  PM8535 PFX 80xG3 PCIe Fanout Switch\n\t8536  PM8536 PFX 96xG3 PCIe Fanout Switch\n\t\t1bd4 0081  PM8536 PFX 96xG3 PCIe Fanout Switch\n\t8546  PM8546 B-FEIP PSX 96xG3 PCIe Storage Switch\n\t8562  PM8562 Switchtec PFX-L 32xG3 Fanout-Lite PCIe Gen3 Switch\n11f9  I-Cube Inc\n11fa  Kasan Electronics Company, Ltd.\n11fb  Datel Inc\n11fc  Silicon Magic\n11fd  High Street Consultants\n# nee Comtrol, Inc.\n11fe  Pepperl+Fuchs\n\t0001  RocketPort PCI 32-port w/external I/F\n\t0002  RocketPort PCI 8-port w/external I/F\n\t0003  RocketPort PCI 16-port w/external I/F\n\t0004  RocketPort PCI 4-port w/Quad Cable\n\t0005  RocketPort PCI 8-port w/Octa Cable\n\t0006  RocketPort PCI 8-port w/RJ11 connectors\n\t0007  RocketPort PCI 4-port w/RJ45 connectors\n\t0008  RocketPort PCI 8-port w/DB78 SNI connector (Siemens)\n\t0009  RocketPort PCI 16-port w/DB78 SNI connector (Siemens)\n\t000a  RocketPort PCI Plus 4-port w/Quad Cable\n\t000b  RocketPort PCI Plus 8-port w/Octa Cable\n\t000c  RocketModem II 6-port\n\t000d  RocketModem 4-port\n\t000e  RocketPort PCI Plus 2-port RS-232 w/DB9 connectors\n\t000f  RocketPort PCI Plus 2-port SMPTE w/DB9 connectors\n\t0040  RocketPort INFINITY 8-port w/Octa Cable RJ45\n\t0041  RocketPort INFINITY 32-port w/external I/F\n\t0042  RocketPort INFINITY 8-port w/external I/F\n\t0043  RocketPort INFINITY 16-port w/external I/F\n\t0044  RocketPort INFINITY 4-port w/Quad Cable DB\n\t0045  RocketPort INFINITY 8-port w/Octa Cable DB\n\t0046  RocketPort INFINITY 4-port w/external I/F\n\t0047  RocketPort INFINITY 4J (4-port) w/RJ45 connectors\n\t0048  RocketPort INFINITY 4J (4-port) w/RJ45 connectors\n\t004a  RocketPort INFINITY Plus 4-port\n\t004b  RocketPort INFINITY Plus 8-port\n\t004c  RocketModem INFINITY III 8-port\n\t004d  RocketModem INFINITY III 4-port\n\t004e  RocketPort INFINITY Plus 2-port\n\t004f  RocketPort INFINITY 2-port SMPTE w/DB9 connectors\n\t0050  RocketPort INFINITY Plus 4-port RJ45\n\t0051  RocketPort INFINITY Plus 8-port RJ11\n\t0052  RocketPort INFINITY 8-port SMPTE w/DB9 Connectors\n\t0060  RocketPort EXPRESS 8-port w/Octa Cable\n\t0061  RocketPort EXPRESS 32-port w/external I/F\n\t0062  RocketPort EXPRESS 8-Port w/external I/F\n\t0063  RocketPort EXPRESS 16-port w/external I/F\n\t0064  RocketPort EXPRESS 4-port w/Quad Cable\n\t0065  RocketPort EXPRESS 8-port w/Octa Cable\n\t0066  RocketPort EXPRESS 4-port w/external I/F\n\t0067  RocketPort EXPRESS 4J (4-port) w/RJ45 connectors\n\t0068  RocketPort EXPRESS 8J (8-port) w/RJ11 connectors\n\t006f  RocketPort EXPRESS SMPTE 2-port\n\t0072  RocketPort EXPRESS SMPTE 8-port w/external I/F\n\t0801  RocketPort uPCI 32-port w/external I/F\n\t0802  RocketPort uPCI 8-port w/external I/F\n\t0803  RocketPort uPCI 16-port w/external I/F\n\t0805  RocketPort uPCI 8-port w/Octa Cable\n\t080b  RocketPort Plus uPCI 8-port w/Octa Cable\n\t080c  RocketModem III 8-port\n\t080d  RocketModem III 4-port\n\t080e  RocketPort uPCI 2-port RS232 w/DB9 connectors\n\t080f  RocketPort uPCI SMPTE 2-port\n\t0810  RocketPort Plus uPCI 4J (4-port) w/RJ45 connectors\n\t0811  RocketPort Plus uPCI 8J (8-port) w/RJ11 connectors\n\t0812  RocketPort Plus uPCI 422 8-port\n\t0813  RocketModem IV uPCI 8-port\n\t0814  RocketModem IV uPCI 4-port\n\t0903  RocketPort Compact PCI 16 port w/external I/F\n# 16954 UART\n\t8015  RocketPort 550 4-port\n\t8805  RocketPort uPCI 4-port w/Quad Cable\n\t880b  RocketPort Plus uPCI 4-port w/Quad Cable\n\t8812  RocketPort Plus uPCI 4-port RS422 w/Quad Cable\n11ff  Scion Corporation\n\t0003  AG-5\n1200  CSS Corporation\n1201  Vista Controls Corp\n1202  Network General Corp.\n\t4300  Gigabit Ethernet Adapter\n\t\t1202 9841  SK-9841 LX\n\t\t1202 9842  SK-9841 LX dual link\n\t\t1202 9843  SK-9843 SX\n\t\t1202 9844  SK-9843 SX dual link\n1203  Bayer Corporation, Agfa Division\n1204  Lattice Semiconductor Corporation\n\t1965  SB6501 802.11ad Wireless Network Adapter\n1205  Array Corporation\n1206  Amdahl Corporation\n1208  Parsytec GmbH\n\t4853  HS-Link Device\n1209  SCI Systems Inc\n120a  Synaptel\n120b  Adaptive Solutions\n120c  Technical Corp.\n120d  Compression Labs, Inc.\n120e  Cyclades Corporation\n\t0100  Cyclom-Y below first megabyte\n\t0101  Cyclom-Y above first megabyte\n\t0102  Cyclom-4Y below first megabyte\n\t0103  Cyclom-4Y above first megabyte\n\t0104  Cyclom-8Y below first megabyte\n\t0105  Cyclom-8Y above first megabyte\n\t0200  Cyclades-Z below first megabyte\n\t0201  Cyclades-Z above first megabyte\n\t0300  PC300/RSV or /X21 (2 ports)\n\t0301  PC300/RSV or /X21 (1 port)\n\t0310  PC300/TE (2 ports)\n\t0311  PC300/TE (1 port)\n\t0320  PC300/TE-M (2 ports)\n\t0321  PC300/TE-M (1 port)\n\t0400  PC400\n120f  Essential Communications\n\t0001  Roadrunner serial HIPPI\n1210  Hyperparallel Technologies\n1211  Braintech Inc\n1213  Applied Intelligent Systems, Inc.\n1214  Performance Technologies, Inc.\n1215  Interware Co., Ltd\n1216  Purup Prepress A/S\n1217  O2 Micro, Inc.\n\t00f7  Firewire (IEEE 1394)\n\t\t1071 8209  Medion MIM 2240 Notebook PC [MD98100]\n\t\t1179 ff50  Satellite P305D-S8995E\n\t10f7  1394 OHCI Compliant Host Controller\n\t11f7  OZ600 1394a-2000 Controller\n\t\t1028 04a3  Precision M4600\n\t13f7  1394 OHCI Compliant Host Controller\n\t6729  OZ6729\n\t673a  OZ6730\n\t6832  OZ6832/6833 CardBus Controller [Saturn]\n\t6836  OZ6836/6860 CardBus Controller [Mercury]\n\t6872  OZ6812 CardBus Controller [Challenger]\n\t6925  OZ6922 CardBus Controller\n\t6933  OZ6933/711E1 CardBus/SmartCardBus Controller\n\t\t1025 1016  Travelmate 612 TX\n\t6972  OZ601/6912/711E0 CardBus/SmartCardBus Controller\n\t\t1014 020c  ThinkPad R30\n\t\t1028 0152  Latitude D500\n\t\t1179 0001  Magnia Z310\n\t7110  OZ711Mx 4-in-1 MemoryCardBus Accelerator\n\t\t103c 088c  NC8000 laptop\n\t\t103c 0890  NC6000 laptop\n\t\t1734 106c  Amilo A1645\n\t7112  OZ711EC1/M1 SmartCardBus/MemoryCardBus Controller\n\t7113  OZ711EC1 SmartCardBus Controller\n\t\t1025 0035  TravelMate 660\n\t7114  OZ711M1/MC1 4-in-1 MemoryCardBus Controller\n\t7120  Integrated MMC/SD Controller\n\t\t1071 8209  Medion MIM 2240 Notebook PC [MD98100]\n\t\t1179 ff50  Satellite P305D-S8995E\n\t7130  Integrated MS/xD Controller\n\t\t1071 8209  Medion MIM 2240 Notebook PC [MD98100]\n\t\t1179 ff50  Satellite P305D-S8995E\n\t7134  OZ711MP1/MS1 MemoryCardBus Controller\n\t7135  Cardbus bridge\n\t7136  OZ711SP1 Memory CardBus Controller\n\t71e2  OZ711E2 SmartCardBus Controller\n\t7212  OZ711M2 4-in-1 MemoryCardBus Controller\n\t7213  OZ6933E CardBus Controller\n\t7223  OZ711M3/MC3 4-in-1 MemoryCardBus Controller\n\t\t103c 088c  NC8000 laptop\n\t\t103c 0890  NC6000 laptop\n\t\t10cf 11c4  Lifebook P5020D Laptop\n\t7233  OZ711MP3/MS3 4-in-1 MemoryCardBus Controller\n\t8120  Integrated MMC/SD Controller\n\t8130  Integrated MS/MSPRO/xD Controller\n\t8220  OZ600FJ1/OZ900FJ1 SD/MMC Card Reader Controller\n\t8221  OZ600FJ0/OZ900FJ0/OZ600FJS SD/MMC Card Reader Controller\n\t8320  OZ600RJ1/OZ900RJ1 SD/MMC Card Reader Controller\n\t\t1028 04a3  Precision M4600\n\t8321  OZ600RJ0/OZ900RJ0/OZ600RJS SD/MMC Card Reader Controller\n\t8330  OZ600 MS/xD Controller\n\t\t1028 04a3  Precision M4600\n\t8331  O2 Flash Memory Card\n\t8520  SD/MMC Card Reader Controller\n\t8621  SD/MMC Card Reader Controller\n\t\t17aa 5068  Thinkpad E480/E580\n\t8760  FORESEE E2M2 NVMe SSD\n1218  Hybricon Corp.\n1219  First Virtual Corporation\n121a  3Dfx Interactive, Inc.\n\t0001  Voodoo\n\t0002  Voodoo 2\n\t0003  Voodoo Banshee\n\t\t1092 0003  Monster Fusion\n\t\t1092 4000  Monster Fusion\n\t\t1092 4002  Monster Fusion\n\t\t1092 4801  Monster Fusion AGP\n\t\t1092 4803  Monster Fusion AGP\n\t\t1092 8030  Monster Fusion\n\t\t1092 8035  Monster Fusion AGP\n\t\t10b0 0001  Dragon 4000\n\t\t1102 1017  3D Blaster Banshee PCI (CT6760)\n\t\t1102 1018  3D Blaster Banshee VE\n\t\t121a 0001  Voodoo Banshee AGP\n\t\t121a 0003  Voodoo Banshee AGP SGRAM\n\t\t121a 0004  Voodoo Banshee\n\t\t139c 0016  Raven\n\t\t139c 0017  Raven\n\t\t14af 0002  Maxi Gamer Phoenix\n\t0004  Voodoo Banshee [Velocity 100]\n\t0005  Voodoo 3\n\t\t121a 0004  Voodoo3 AGP\n\t\t121a 0030  Voodoo3 AGP\n\t\t121a 0031  Voodoo3 AGP\n\t\t121a 0034  Voodoo3 AGP\n\t\t121a 0036  Voodoo3 2000 PCI\n\t\t121a 0037  Voodoo3 AGP\n\t\t121a 0038  Voodoo3 AGP\n\t\t121a 003a  Voodoo3 AGP\n\t\t121a 0044  Voodoo3\n\t\t121a 004b  Velocity 100\n\t\t121a 004c  Velocity 200\n\t\t121a 004d  Voodoo3 AGP\n\t\t121a 004e  Voodoo3 AGP\n\t\t121a 0051  Voodoo3 AGP\n\t\t121a 0052  Voodoo3 AGP\n\t\t121a 0057  Voodoo3 3000 PCI\n\t\t121a 0060  Voodoo3 3500 TV (NTSC)\n\t\t121a 0061  Voodoo3 3500 TV (PAL)\n\t\t121a 0062  Voodoo3 3500 TV (SECAM)\n\t0009  Voodoo 4 / Voodoo 5\n\t\t121a 0003  Voodoo5 PCI 5500\n\t\t121a 0009  Voodoo5 AGP 5500/6000\n\t0057  Voodoo 3/3000 [Avenger]\n121b  Advanced Telecommunications Modules\n121c  Nippon Texaco., Ltd\n121d  LiPPERT ADLINK Technology GmbH\n121e  CSPI\n\t0201  Myrinet 2000 Scalable Cluster Interconnect\n121f  Arcus Technology, Inc.\n1220  Ariel Corporation\n\t1220  AMCC 5933 TMS320C80 DSP/Imaging board\n1221  Contec Co., Ltd\n\t9172  PO-64L(PCI)H [Isolated Digital Output Board for PCI]\n\t91a2  PO-32L(PCI)H [Isolated Digital Output Board for PCI]\n\t91c3  DA16-16(LPCI)L [Un-insulated highly precise analog output board for Low Profile PCI]\n\tb152  DIO-96D2-LPCI\n\tc103  ADA16-32/2(PCI)F [High-Speed Analog I/O Board for PCI]\n1222  Ancor Communications, Inc.\n1223  Artesyn Communication Products\n\t0003  PM/Link\n\t0004  PM/T1\n\t0005  PM/E1\n\t0008  PM/SLS\n\t0009  BajaSpan Resource Target\n\t000a  BajaSpan Section 0\n\t000b  BajaSpan Section 1\n\t000c  BajaSpan Section 2\n\t000d  BajaSpan Section 3\n\t000e  PM/PPC\n1224  Interactive Images\n1225  Power I/O, Inc.\n1227  EIZO Rugged Solutions\n\t0006  Raptor GFX 8P\n\t0023  Raptor GFX [1100T]\n\t0045  Raptor 4000-L [Linux version]\n\t004a  Raptor 4000-LR-L [Linux version]\n1228  Norsk Elektro Optikk A/S\n1229  Data Kinesis Inc.\n122a  Integrated Telecom\n122b  LG Industrial Systems Co., Ltd\n122c  Sican GmbH\n122d  Aztech System Ltd\n\t1206  368DSP\n\t1400  Trident PCI288-Q3DII (NX)\n\t50dc  3328 Audio\n\t\t122d 0001  3328 Audio\n\t80da  3328 Audio\n\t\t122d 0001  3328 Audio\n122e  Xyratex\n\t7722  Napatech XL1\n\t7724  Napatech XL2/XA\n\t7729  Napatech XD\n122f  Andrew Corporation\n1230  Fishcamp Engineering\n1231  Woodward McCoach, Inc.\n\t04e1  Desktop PCI Telephony 4\n\t05e1  Desktop PCI Telephony 5/6\n\t0d00  LightParser\n\t0d02  LightParser 2\n\t0d13  Desktop PCI L1/L3 Telephony\n1232  GPT Limited\n1233  Bus-Tech, Inc.\n# nee Risq Modular Systems, Inc.\n1235  SMART Modular Technologies\n\tc241  CXA-4F1W\n\t\t1028 2382  4-DIMM Add In Card\n1236  Sigma Designs Corporation\n\t0000  RealMagic64/GX\n\t6401  REALmagic 64/GX (SD 6425)\n1237  Alta Technology Corporation\n1238  Adtran\n1239  3DO Company\n123a  Visicom Laboratories, Inc.\n123b  Seeq Technology, Inc.\n123c  Century Systems, Inc.\n123d  Engineering Design Team, Inc.\n\t0000  PCI 11W\n\t0047  PCIe4 CDa\n\t004b  PCIe4 CDa 16\n\t009d  VisionLink F1\n\t00a0  PCIe8g3 S5 (10G/40G)\n\t00a3  VisionLink F4\n\t00a9  VisionLink CLS\n\t00ab  PCIe8g3 A5 10G\n\t00b5  PCIe8 RFx SDR\n123e  Simutech, Inc.\n# nee C-Cube Microsystems / acquired by Magnum Semiconductor\n123f  LSI Logic\n\t00e4  MPEG\n\t8120  DVxplore Codec\n\t\t10de 01e1  NVTV PAL\n\t\t10de 01e2  NVTV NTSC\n\t\t10de 01e3  NVTV PAL\n\t\t10de 0248  NVTV NTSC\n\t\t10de 0249  NVTV PAL\n\t\t11bd 0006  DV500 E4\n\t\t11bd 000a  DV500 E4\n\t\t11bd 000f  DV500 E4\n\t\t1809 0016  Emuzed MAUI-III PCI PVR FM TV\n\t8888  Cinemaster C 3.0 DVD Decoder\n\t\t1002 0001  Cinemaster C 3.0 DVD Decoder\n\t\t1002 0002  Cinemaster C 3.0 DVD Decoder\n\t\t1328 0001  Cinemaster C 3.0 DVD Decoder\n1240  Marathon Technologies Corp.\n1241  DSC Communications\n# Formerly Jaycor Networks, Inc.\n1242  JNI Corporation\n\t1560  JNIC-1560 PCI-X Fibre Channel Controller\n\t\t1242 6562  FCX2-6562 Dual Channel PCI-X Fibre Channel Adapter\n\t\t1242 656a  FCX-6562 PCI-X Fibre Channel Adapter\n\t4643  FCI-1063 Fibre Channel Adapter\n\t6562  FCX2-6562 Dual Channel PCI-X Fibre Channel Adapter\n\t656a  FCX-6562 PCI-X Fibre Channel Adapter\n1243  Delphax\n# Audio-Visuelles Marketing und Computersysteme\n1244  AVM GmbH\n\t0700  B1 ISDN\n\t0800  C4 ISDN\n\t0a00  A1 ISDN [Fritz]\n\t\t1244 0a00  FRITZ!Card ISDN Controller\n\t0e00  Fritz!Card PCI v2.0 ISDN\n\t0e80  Fritz!Card PCI v2.1 ISDN\n\t\t1244 0e00  PSB 3100F (AVM KAFKA) [Fritz!Card PCI v2.1]\n\t1100  C2 ISDN\n\t1200  T1 ISDN\n\t2700  Fritz!Card DSL SL\n\t2900  Fritz!Card DSL v2.0\n1245  A.P.D., S.A.\n1246  Dipix Technologies, Inc.\n1247  Xylon Research, Inc.\n1248  Central Data Corporation\n1249  Samsung Electronics Co., Ltd.\n124a  AEG Electrocom GmbH\n124b  SBS/Greenspring Modular I/O\n\t0040  PCI-40A or cPCI-200 Quad IndustryPack carrier\n\t\t124b 9080  PCI9080 Bridge\n124c  Solitron Technologies, Inc.\n124d  Stallion Technologies, Inc.\n\t0000  EasyConnection 8/32\n\t0002  EasyConnection 8/64\n\t0003  EasyIO\n\t0004  EasyConnection/RA\n124e  Cylink\n124f  Infortrend Technology, Inc.\n\t0041  IFT-2000 Series RAID Controller\n1250  Hitachi Microcomputer System Ltd\n1251  VLSI Solutions Oy\n1253  Guzik Technical Enterprises\n1254  Linear Systems Ltd.\n\t0065  DVB Master FD\n\t007c  DVB Master Quad/o\n1255  Optibase Ltd\n\t1110  MPEG Forge\n\t1210  MPEG Fusion\n\t2110  VideoPlex\n\t2120  VideoPlex CC\n\t2130  VideoQuest\n1256  Perceptive Solutions, Inc.\n\t4201  PCI-2220I\n\t4401  PCI-2240I\n\t5201  PCI-2000\n1257  Vertex Networks, Inc.\n1258  Gilbarco, Inc.\n# nee Allied Telesyn International\n1259  Allied Telesis\n\t2560  AT-2560 Fast Ethernet Adapter (i82557B)\n\t2801  AT-2801FX (RTL-8139)\n\ta117  RTL81xx Fast Ethernet\n\ta11e  RTL81xx Fast Ethernet\n\ta120  21x4x DEC-Tulip compatible 10/100 Ethernet\n125a  ABB Power Systems\n125b  Asix Electronics Corporation\n\t1400  AX88141 Fast Ethernet Controller\n\t\t1186 1100  AX8814X Based PCI Fast Ethernet Adapter\n\t9100  AX99100 PCIe to Multi I/O Controller\n\t\ta000 1000  Serial Port\n\t\ta000 2000  Parallel Port\n\t\ta000 6000  SPI\n\t\ta000 7000  Local Bus\n\t\tea50 1c10  RXi2-BP\n125c  Aurora Technologies, Inc.\n\t0101  Saturn 4520P\n\t0640  Aries 16000P\n125d  ESS Technology\n\t0000  ES336H Fax Modem (Early Model)\n\t1948  ES1948 Maestro-1\n\t1968  ES1968 Maestro 2\n\t\t1028 0085  ES1968 Maestro-2 PCI\n\t\t1033 8051  ES1968 Maestro-2 Audiodrive\n\t1969  ES1938/ES1946/ES1969 Solo-1 Audiodrive\n\t\t1014 0162  16 Bit PCI Audio Adapter (37L4457)\n\t\t1014 0166  ES1969 SOLO-1 AudioDrive on IBM Aptiva Mainboard\n\t\t121f 8800  eDio Hi-Live SC1938\n\t\t125d 8888  Solo-1 Audio Adapter\n\t\t125d 8898  ES1938S TTSOLO1-SL [TerraTec 128i PCI]\n\t\t153b 111b  Terratec 128i PCI\n\t1978  ES1978 Maestro 2E\n\t\t0e11 b112  Armada M700/E500\n\t\t1033 803c  ES1978 Maestro-2E Audiodrive\n\t\t1033 8058  ES1978 Maestro-2E Audiodrive\n\t\t1092 4000  Monster Sound MX400\n\t\t1179 0001  ES1978 Maestro-2E Audiodrive\n\t1988  ES1988 Allegro-1\n\t\t0e11 0098  Evo N600c\n\t\t1092 4100  Sonic Impact S100\n\t\t125d 0431  Allegro AudioDrive\n\t\t125d 1988  ESS Allegro-1 Audiodrive\n\t\t125d 1998  Allegro AudioDrive\n\t\t125d 1999  Allegro-1 AudioDrive\n\t1989  ESS Modem\n\t\t125d 1989  ESS Modem\n\t1990  ES1990S Canyon3D 2LE\n\t1992  ES1992S Canyon3D 2\n\t1998  ES1983S Maestro-3i PCI Audio Accelerator\n\t\t1028 00b1  Latitude C600\n\t\t1028 00e5  Latitude C810\n\t\t1028 00e6  ES1983S Maestro-3i (Dell Inspiron 8100)\n\t1999  ES1983S Maestro-3i PCI Modem Accelerator\n\t199a  ES1983S Maestro-3i PCI Audio Accelerator\n\t199b  ES1983S Maestro-3i PCI Modem Accelerator\n\t2808  ES336H Fax Modem (Later Model)\n\t2838  ES2838/2839 SuperLink Modem\n\t2898  ES2898 Modem\n\t\t125d 0424  ES56-PI Data Fax Modem\n\t\t125d 0425  ES56T-PI Data Fax Modem\n\t\t125d 0426  ES56V-PI Data Fax Modem\n\t\t125d 0427  VW-PI Data Fax Modem\n\t\t125d 0428  ES56ST-PI Data Fax Modem\n\t\t125d 0429  ES56SV-PI Data Fax Modem\n\t\t147a c001  ES56-PI Data Fax Modem\n\t\t148d 1030  HCF WV-PI56 [ESS ES56-PI Data Fax Modem]\n\t\t14fe 0428  ES56-PI Data Fax Modem\n\t\t14fe 0429  ES56-PI Data Fax Modem\n125e  Specialvideo Engineering SRL\n125f  Concurrent Technologies, Inc.\n# 4x serial ports, 2x printer ports\n\t2071  CC PMC/232\n# 4x serial ports, 2x printer ports\n\t2084  CC PMC/23P\n# 4x serial ports, RS422\n\t2091  CC PMC/422\n1260  Intersil Corporation\n\t3872  ISL3872 [Prism 3]\n\t\t1468 0202  LAN-Express IEEE 802.11b Wireless LAN\n\t3873  ISL3874 [Prism 2.5]/ISL3872 [Prism 3]\n\t\t10cf 1169  MBH7WM01-8734 802.11b Wireless Mini PCI Card [ISL3874]\n\t\t1186 3501  DWL-520 Wireless PCI Adapter (rev A or B) [ISL3874]\n\t\t1186 3700  DWL-520 Wireless PCI Adapter (rev E1) [ISL3872]\n\t\t1385 4105  MA311 802.11b wireless adapter [ISL3874]\n\t\t1668 0414  HWP01170-01 802.11b PCI Wireless Adapter\n\t\t16a5 1601  AIR.mate PC-400 PCI Wireless LAN Adapter\n\t\t1737 3874  WMP11 v1 802.11b Wireless-B PCI Adapter [ISL3874]\n\t\t4033 7033  PCW200 802.11b Wireless PCI Adapter [ISL3874]\n\t\t8086 2510  M3AWEB Wireless 802.11b MiniPCI Adapter\n\t\t8086 2513  Wireless 802.11b MiniPCI Adapter\n\t3877  ISL3877 [Prism Indigo]\n\t3886  ISL3886 [Prism Javelin/Prism Xbow]\n\t\t17cf 0037  XG-901 and clones Wireless Adapter\n\t3890  ISL3890 [Prism GT/Prism Duette]/ISL3886 [Prism Javelin/Prism Xbow]\n\t\t10b8 2802  SMC2802W V1 Wireless PCI Adapter [ISL3890]\n\t\t10b8 2835  SMC2835W Wireless Cardbus Adapter\n\t\t10b8 a835  SMC2835W V2 Wireless Cardbus Adapter\n\t\t1113 4203  WN4201B\n\t\t1113 8201  T-Com T-Sinus 154pcicard Wireless PCI Adapter\n\t\t1113 b301  T-Sinus 154card Cardbus\n\t\t1113 ee03  SMC2802W V2 Wireless PCI Adapter [ISL3886]\n\t\t1113 ee08  SMC2835W V3 EU Wireless Cardbus Adapter\n\t\t1186 3202  DWL-G650 A1 Wireless Adapter\n\t\t1259 c104  CG-WLCB54GT Wireless Adapter\n\t\t1260 0000  WG511 v1 54 Mbps Wireless PC Card\n\t\t1385 4800  WG511 v2/v3 54 Mbps Wireless PC Card\n\t\t16a5 1605  ALLNET ALL0271 Wireless PCI Adapter\n\t\t17cf 0014  XG-600 and clones Wireless Adapter\n\t\t17cf 0020  XG-900 and clones Wireless Adapter\n\t\t187e 3403  G-110 802.11g Wireless Cardbus Adapter\n\t8130  HMP8130 NTSC/PAL Video Decoder\n\t8131  HMP8131 NTSC/PAL Video Decoder\n# This is probably more likely a HW fault, but I am keeping it for now --mj\n\tffff  ISL3886IK\n\t\t1260 0000  Senao 3054MP+ (J) mini-PCI WLAN 802.11g adapter\n1261  Matsushita-Kotobuki Electronics Industries, Ltd.\n1262  ES Computer Company, Ltd.\n1263  Sonic Solutions\n1264  Aval Nagasaki Corporation\n1265  Casio Computer Co., Ltd.\n1266  Microdyne Corporation\n\t0001  NE10/100 Adapter (i82557B)\n\t1910  NE2000Plus (RT8029) Ethernet Adapter\n\t\t1266 1910  NE2000Plus Ethernet Adapter\n1267  S. A. Telecommunications\n\t5352  PCR2101\n\t5a4b  Telsat Turbo\n1268  Tektronix\n# nee Thomson-CSF/TTM\n1269  Thales\n# MBIM on top of MHI\n\t00b3  5G Data Card [Cinterion MV31-W]\n126a  Lexmark International, Inc.\n126b  Adax, Inc.\n126c  Northern Telecom\n\t1211  10/100BaseTX [RTL81xx]\n\t126c  802.11b Wireless Ethernet Adapter\n126d  Splash Technology, Inc.\n126e  Sumitomo Metal Industries, Ltd.\n126f  Silicon Motion, Inc.\n\t0501  SM501 VoyagerGX Rev. AA\n\t0510  SM501 VoyagerGX Rev. B\n\t0710  SM710 LynxEM\n\t0712  SM712 LynxEM+\n\t0718  SM718 LynxSE+\n\t0720  SM720 Lynx3DM\n\t0730  SM731 Cougar3DR\n\t0750  SM750\n\t0768  SM768\n\t0810  SM810 LynxE\n\t0811  SM811 LynxE\n\t0820  SM820 Lynx3D\n\t0910  SM910\n\t2260  SM2260 NVMe SSD Controller\n\t2261  SM2261XT x2 NVMe SSD Controller (DRAM-less)\n\t2262  SM2262/SM2262EN SSD Controller\n\t2263  SM2263EN/SM2263XT (DRAM-less) NVMe SSD Controllers\n\t2268  SM2268XT (DRAM-less) NVMe SSD Controller\n\t2269  SM2269XT (DRAM-less) NVMe SSD Controller\n\t8366  SM8366 NVMe SSD Controller [MonTitan]\n1270  Olympus Optical Co., Ltd.\n1271  GW Instruments\n1272  Telematics International\n1273  Hughes Network Systems\n\t0002  DirecPC\n1274  Ensoniq\n\t1171  ES1373 / Creative Labs CT5803 [AudioPCI]\n\t1371  ES1371/ES1373 / Creative Labs CT2518\n\t\t0e11 0024  AudioPCI on Motherboard Compaq Deskpro\n\t\t0e11 b1a7  ES1371, ES1373 AudioPCI\n\t\t1033 80ac  ES1371, ES1373 AudioPCI\n\t\t1042 1854  Tazer\n\t\t107b 8054  Tabor2\n\t\t1274 1371  Audio PCI 64V/128/5200 / Creative CT4810/CT5803/CT5806 [Sound Blaster PCI]\n\t\t1274 8001  CT4751 board\n\t\t1462 6470  ES1371, ES1373 AudioPCI On Motherboard MS-6147 1.1A\n\t\t1462 6560  ES1371, ES1373 AudioPCI On Motherboard MS-6156 1.10\n\t\t1462 6630  ES1371, ES1373 AudioPCI On Motherboard MS-6163BX 1.0A\n\t\t1462 6631  ES1371, ES1373 AudioPCI On Motherboard MS-6163VIA 1.0A\n\t\t1462 6632  ES1371, ES1373 AudioPCI On Motherboard MS-6163BX 2.0A\n\t\t1462 6633  ES1371, ES1373 AudioPCI On Motherboard MS-6163VIA 2.0A\n\t\t1462 6820  ES1371, ES1373 AudioPCI On Motherboard MS-6182 1.00\n\t\t1462 6822  ES1371, ES1373 AudioPCI On Motherboard MS-6182 1.00A\n\t\t1462 6830  ES1371, ES1373 AudioPCI On Motherboard MS-6183 1.00\n\t\t1462 6880  ES1371, ES1373 AudioPCI On Motherboard MS-6188 1.00\n\t\t1462 6900  ES1371, ES1373 AudioPCI On Motherboard MS-6190 1.00\n\t\t1462 6910  ES1371, ES1373 AudioPCI On Motherboard MS-6191\n\t\t1462 6930  ES1371, ES1373 AudioPCI On Motherboard MS-6193\n\t\t1462 6990  ES1371, ES1373 AudioPCI On Motherboard MS-6199BX 2.0A\n\t\t1462 6991  ES1371, ES1373 AudioPCI On Motherboard MS-6199VIA 2.0A\n\t\t14a4 2077  ES1371, ES1373 AudioPCI On Motherboard KR639\n\t\t14a4 2105  ES1371, ES1373 AudioPCI On Motherboard MR800\n\t\t14a4 2107  ES1371, ES1373 AudioPCI On Motherboard MR801\n\t\t14a4 2172  ES1371, ES1373 AudioPCI On Motherboard DR739\n\t\t1509 9902  ES1371, ES1373 AudioPCI On Motherboard KW11\n\t\t1509 9903  ES1371, ES1373 AudioPCI On Motherboard KW31\n\t\t1509 9904  ES1371, ES1373 AudioPCI On Motherboard KA11\n\t\t1509 9905  ES1371, ES1373 AudioPCI On Motherboard KC13\n\t\t152d 8801  ES1371, ES1373 AudioPCI On Motherboard CP810E\n\t\t152d 8802  ES1371, ES1373 AudioPCI On Motherboard CP810\n\t\t152d 8803  ES1371, ES1373 AudioPCI On Motherboard P3810E\n\t\t152d 8804  ES1371, ES1373 AudioPCI On Motherboard P3810-S\n\t\t152d 8805  ES1371, ES1373 AudioPCI On Motherboard P3820-S\n\t\t270f 2001  ES1371, ES1373 AudioPCI On Motherboard 6CTR\n\t\t270f 2200  ES1371, ES1373 AudioPCI On Motherboard 6WTX\n\t\t270f 3000  ES1371, ES1373 AudioPCI On Motherboard 6WSV\n\t\t270f 3100  ES1371, ES1373 AudioPCI On Motherboard 6WIV2\n\t\t270f 3102  ES1371, ES1373 AudioPCI On Motherboard 6WIV\n\t\t270f 7060  ES1371, ES1373 AudioPCI On Motherboard 6ASA2\n\t\t8086 4249  ES1371, ES1373 AudioPCI On Motherboard BI440ZX\n\t\t8086 424c  ES1371, ES1373 AudioPCI On Motherboard BL440ZX\n\t\t8086 425a  ES1371, ES1373 AudioPCI On Motherboard BZ440ZX\n\t\t8086 4341  ES1371, ES1373 AudioPCI On Motherboard Cayman\n\t\t8086 4343  ES1371, ES1373 AudioPCI On Motherboard Cape Cod\n\t\t8086 4541  D815EEA Motherboard\n\t\t8086 4649  ES1371, ES1373 AudioPCI On Motherboard Fire Island\n\t\t8086 464a  ES1371, ES1373 AudioPCI On Motherboard FJ440ZX\n\t\t8086 4d4f  ES1371, ES1373 AudioPCI On Motherboard Montreal\n\t\t8086 4f43  ES1371, ES1373 AudioPCI On Motherboard OC440LX\n\t\t8086 5243  ES1371, ES1373 AudioPCI On Motherboard RC440BX\n\t\t8086 5352  ES1371, ES1373 AudioPCI On Motherboard SunRiver\n\t\t8086 5643  ES1371, ES1373 AudioPCI On Motherboard Vancouver\n\t\t8086 5753  ES1371, ES1373 AudioPCI On Motherboard WS440BX\n\t5000  ES1370 [AudioPCI]\n\t5880  5880B / Creative Labs CT5880\n\t\t1274 2000  Creative CT4810 [Sound Blaster AudioPCI 128]\n\t\t1274 2003  Creative SoundBlaster AudioPCI 128\n\t\t1274 5880  Creative CT4750 [Sound Blaster PCI 128]\n\t\t1274 8001  Creative CT4750 [Sound Blaster 16 PCI/PCI 128/4.1 Digital]\n\t\t1458 a000  5880 AudioPCI On Motherboard 6OXET\n\t\t1462 6880  5880 AudioPCI On Motherboard MS-6188 1.00\n\t\t270f 2001  5880 AudioPCI On Motherboard 6CTR\n\t\t270f 2200  5880 AudioPCI On Motherboard 6WTX\n\t\t270f 7040  5880 AudioPCI On Motherboard 6ATA4\n\t8001  CT5880 [AudioPCI]\n\t8002  5880A [AudioPCI]\n1275  Network Appliance Corporation\n1276  Switched Network Technologies, Inc.\n1277  Comstream\n1278  Transtech Parallel Systems Ltd.\n\t0701  TPE3/TM3 PowerPC Node\n\t0710  TPE5 PowerPC PCI board\n\t1100  PMC-FPGA02\n\t1101  TS-C43 card with 4 ADSP-TS101 processors\n1279  Transmeta Corporation\n\t0060  TM8000 Northbridge\n\t0061  TM8000 AGP bridge\n\t0295  Northbridge\n\t0395  LongRun Northbridge\n\t0396  SDRAM controller\n\t0397  BIOS scratchpad\n127a  Rockwell International\n\t1002  HCF 56k Data/Fax Modem\n\t\t1092 094c  SupraExpress 56i PRO [Diamond SUP2380]\n\t\t122d 4002  HPG / MDP3858-U\n\t\t122d 4005  MDP3858-E\n\t\t122d 4007  MDP3858-A/-NZ\n\t\t122d 4012  MDP3858-SA\n\t\t122d 4017  MDP3858-W\n\t\t122d 4018  MDP3858-W\n\t\t127a 1002  Rockwell 56K D/F HCF Modem\n\t1003  HCF 56k Data/Fax Modem\n\t\t0e11 b0bc  229-DF Zephyr\n\t\t0e11 b114  229-DF Cheetah\n\t\t1033 802b  229-DF\n\t\t13df 1003  PCI56RX Modem\n\t\t13e0 0117  IBM\n\t\t13e0 0147  IBM F-1156IV+/R3 Spain V.90 Modem\n\t\t13e0 0197  IBM\n\t\t13e0 01c7  IBM F-1156IV+/R3 WW V.90 Modem\n\t\t13e0 01f7  IBM\n\t\t1436 1003  IBM\n\t\t1436 1103  IBM 5614PM3G V.90 Modem\n\t\t1436 1602  Compaq 229-DF Ducati\n\t1004  HCF 56k Data/Fax/Voice Modem\n\t\t1048 1500  MicroLink 56k Modem\n\t\t10cf 1059  Fujitsu 229-DFRT\n\t1005  HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem\n\t\t1005 127a  AOpen FM56-P\n\t\t1033 8029  229-DFSV\n\t\t1033 8054  Modem\n\t\t10cf 103c  Fujitsu\n\t\t10cf 1055  Fujitsu 229-DFSV\n\t\t10cf 1056  Fujitsu 229-DFSV\n\t\t122d 4003  MDP3858SP-U\n\t\t122d 4006  Packard Bell MDP3858V-E\n\t\t122d 4008  MDP3858SP-A/SP-NZ\n\t\t122d 4009  MDP3858SP-E\n\t\t122d 4010  MDP3858V-U\n\t\t122d 4011  MDP3858SP-SA\n\t\t122d 4013  MDP3858V-A/V-NZ\n\t\t122d 4015  MDP3858SP-W\n\t\t122d 4016  MDP3858V-W\n\t\t122d 4019  MDP3858V-SA\n\t\t13df 1005  PCI56RVP Modem\n\t\t13e0 0187  IBM\n\t\t13e0 01a7  IBM\n\t\t13e0 01b7  IBM DF-1156IV+/R3 Spain V.90 Modem\n\t\t13e0 01d7  IBM DF-1156IV+/R3 WW V.90 Modem\n\t\t1436 1005  IBM\n\t\t1436 1105  IBM\n\t\t1437 1105  IBM 5614PS3G V.90 Modem\n\t1022  HCF 56k Modem\n\t\t1436 1303  M3-5614PM3G V.90 Modem\n\t1023  HCF 56k Data/Fax Modem\n\t\t122d 4020  Packard Bell MDP3858-WE\n\t\t122d 4023  MDP3858-UE\n\t\t13e0 0247  IBM F-1156IV+/R6 Spain V.90 Modem\n\t\t13e0 0297  IBM\n\t\t13e0 02c7  IBM F-1156IV+/R6 WW V.90 Modem\n\t\t1436 1203  IBM\n\t\t1436 1303  IBM\n\t1024  HCF 56k Data/Fax/Voice Modem\n\t1025  HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem\n\t\t10cf 106a  Fujitsu 235-DFSV\n\t\t122d 4021  Packard Bell MDP3858V-WE\n\t\t122d 4022  MDP3858SP-WE\n\t\t122d 4024  MDP3858V-UE\n\t\t122d 4025  MDP3858SP-UE\n\t1026  HCF 56k PCI Speakerphone Modem\n\t1032  HCF 56k Modem\n\t1033  HCF 56k Modem\n\t1034  HCF 56k Modem\n\t1035  HCF 56k PCI Speakerphone Modem\n\t1036  HCF 56k Modem\n\t1085  HCF 56k Volcano PCI Modem\n\t2004  HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem\n\t2005  HCF 56k Data/Fax Modem\n\t\t104d 8044  229-DFSV\n\t\t104d 8045  229-DFSV\n\t\t104d 8055  PBE/Aztech 235W-DFSV\n\t\t104d 8056  235-DFSV\n\t\t104d 805a  Modem\n\t\t104d 805f  Modem\n\t\t104d 8074  Modem\n\t2013  HSF 56k Data/Fax Modem\n\t\t1179 0001  Modem\n\t\t1179 ff00  Modem\n\t2014  HSF 56k Data/Fax/Voice Modem\n\t\t10cf 1057  Fujitsu Citicorp III\n\t\t122d 4050  MSP3880-U\n\t\t122d 4055  MSP3880-W\n\t2015  HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem\n\t\t10cf 1063  Fujitsu\n\t\t10cf 1064  Fujitsu\n\t\t1468 2015  Fujitsu\n\t2016  HSF 56k Data/Fax/Voice/Spkp Modem\n\t\t122d 4051  MSP3880V-W\n\t\t122d 4052  MSP3880SP-W\n\t\t122d 4054  MSP3880V-U\n\t\t122d 4056  MSP3880SP-U\n\t\t122d 4057  MSP3880SP-A\n\t4311  Riptide HSF 56k PCI Modem\n\t\t127a 4311  Ring Modular? Riptide HSF RT HP Dom\n\t\t13e0 0210  HP-GVC\n\t4320  Riptide PCI Audio Controller\n\t\t1235 4320  Riptide PCI Audio Controller\n\t4321  Riptide HCF 56k PCI Modem\n\t\t1235 4321  Hewlett Packard DF\n\t\t1235 4324  Hewlett Packard DF\n\t\t13e0 0210  Hewlett Packard DF\n\t\t144d 2321  Riptide\n\t4322  Riptide PCI Game Controller\n\t\t1235 4322  Riptide PCI Game Controller\n\t8234  RapidFire 616X ATM155 Adapter\n\t\t108d 0022  RapidFire 616X ATM155 Adapter\n\t\t108d 0027  RapidFire 616X ATM155 Adapter\n127b  Pixera Corporation\n127c  Crosspoint Solutions, Inc.\n127d  Vela Research\n127e  Winnov, L.P.\n\t0010  Videum 1000 Plus\n127f  Fujifilm\n1280  Photoscript Group Ltd.\n1281  Yokogawa Electric Corporation\n1282  Davicom Semiconductor, Inc.\n\t6585  DM562P V90 Modem\n\t9009  DM9009 Ethernet Controller\n\t9100  21x4x DEC-Tulip compatible 10/100 Ethernet\n\t9102  DM9102 Fast Ethernet Controller\n# Subsystem ID is main ID reveresed.\n\t\t0291 8212  DM9102A (DM9102AE, SM9102AF) Ethernet 100/10 MBit\n\t9132  Ethernet 100/10 MBit\n1283  Integrated Technology Express, Inc.\n\t673a  IT8330G\n\t8152  IT8152F/G Advanced RISC-to-PCI Companion Chip\n\t8211  ITE 8211F Single Channel UDMA 133\n\t\t1043 8138  P5GD1-VW Mainboard\n\t8212  IT8212 Dual channel ATA RAID controller\n\t\t1283 0001  IT/ITE8212 Dual channel ATA RAID controller\n\t8213  IT8213 IDE Controller\n\t\t1458 b000  GA-EG45M-DS2H Mainboard\n\t8330  IT8330G\n\t8872  IT887xF PCI to ISA I/O chip with SMB, GPIO, Serial or Parallel Port\n\t8888  IT8888F/G PCI to ISA Bridge with SMB [Golden Gate]\n\t8889  IT8889F PCI to ISA Bridge\n\t8892  IT8892E PCIe to PCI Bridge\n\t\t8086 200d  DH61CR motherboard\n\t8893  IT8893E PCIe to PCI Bridge\n\te886  IT8330G\n1284  Sahara Networks, Inc.\n1285  Platform Technologies, Inc.\n\t0100  AGOGO sound chip (aka ESS Maestro 1)\n1286  Mazet GmbH\n1287  M-Pact, Inc.\n\t001e  LS220D DVD Decoder\n\t001f  LS220C DVD Decoder\n1288  Timestep Corporation\n1289  AVC Technology, Inc.\n128a  Asante Technologies, Inc.\n128b  Transwitch Corporation\n128c  Retix Corporation\n128d  G2 Networks, Inc.\n\t0021  ATM155 Adapter\n128e  Hoontech Corporation/Samho Multi Tech Ltd.\n\t0008  ST128 WSS/SB\n\t0009  ST128 SAM9407\n\t000a  ST128 Game Port\n\t000b  ST128 MPU Port\n\t000c  ST128 Ctrl Port\n128f  Tateno Dennou, Inc.\n1290  Sord Computer Corporation\n1291  NCS Computer Italia\n1292  Tritech Microelectronics Inc\n\tfc02  Pyramid3D TR25202\n1293  Media Reality Technology\n1294  Rhetorex, Inc.\n1295  Imagenation Corporation\n\t0800  PXR800\n\t1000  PXD1000\n1296  Kofax Image Products\n1297  Holco Enterprise Co, Ltd/Shuttle Computer\n\t9602  RS780/RS880 PCI to PCI bridge (int gfx)\n1298  Spellcaster Telecommunications Inc.\n1299  Knowledge Technology Lab.\n129a  VMetro, inc.\n\t0615  PBT-615 PCI-X Bus Analyzer\n\t0715  cPCI Bus Analyzer\n\t1100  PMC-FPGA05\n\t1106  XMC-FPGA05F, PCI interface\n\t1107  XMC-FPGA05F, PCIe interface\n\t1108  XMC-FPGA05D, PCI interface\n\t1109  XMC-FPGA05D, PCIe interface\n129b  Image Access\n129c  Jaycor\n129d  Compcore Multimedia, Inc.\n129e  Victor Company of Japan, Ltd.\n129f  OEC Medical Systems, Inc.\n12a0  Allen-Bradley Company\n12a1  Simpact Associates, Inc.\n12a2  Newgen Systems Corporation\n12a3  Lucent Technologies\n\t8105  T8105 H100 Digital Switch\n12a4  NTT Innovative Devices Corporation\n12a5  Vision Dynamics Ltd.\n12a6  Scalable Networks, Inc.\n12a7  AMO GmbH\n12a8  News Datacom\n12a9  Xiotech Corporation\n12aa  SDL Communications, Inc.\n12ab  YUAN High-Tech Development Co., Ltd.\n\t0000  MPG160/Kuroutoshikou ITVC15-STVLP\n\t0002  AU8830 [Vortex2] Based Sound Card With A3D Support\n\t0003  T507 (DVB-T) TV tuner/capture device\n\t2300  Club-3D Zap TV2100\n\t3000  MPG-200C PCI DVD Decoder Card\n\t4789  MPC788 MiniPCI Hybrid TV Tuner\n\tfff3  MPG600/Kuroutoshikou ITVC16-STVLP\n\tffff  MPG600/Kuroutoshikou ITVC16-STVLP\n12ac  Measurex Corporation\n12ad  Multidata GmbH\n12ae  Alteon Networks Inc.\n\t0001  AceNIC Gigabit Ethernet\n\t\t1014 0104  Gigabit Ethernet-SX PCI Adapter\n\t\t12ae 0001  Gigabit Ethernet-SX (Universal)\n\t0002  AceNIC Gigabit Ethernet (Copper)\n\t\t10a9 8002  Acenic Gigabit Ethernet\n\t\t12ae 0002  Gigabit Ethernet-T (3C986-T)\n\t00fa  Farallon PN9100-T Gigabit Ethernet\n12af  TDK Corporation\n\t5831  GBDriver GX1 x2 NVMe SSD Controller (DRAM-less)\n12b0  Jorge Scientific Corp\n12b1  GammaLink\n12b2  General Signal Networks\n12b3  Inter-Face Co Ltd\n12b4  FutureTel Inc\n12b5  Granite Systems Inc.\n12b6  Natural Microsystems\n12b7  Cognex Corporation\n12b8  Korg\n# Nee US Robotics\n12b9  3Com Corp, Modem Division\n\t1006  WinModem\n\t\t12b9 005c  USR 56k Internal Voice WinModem (Model 3472)\n\t\t12b9 005e  USR 56k Internal WinModem (Models 662975)\n\t\t12b9 0062  USR 56k Internal Voice WinModem (Model 662978)\n\t\t12b9 0068  USR 56k Internal Voice WinModem (Model 5690)\n\t\t12b9 007a  USR 56k Internal Voice WinModem (Model 662974)\n\t\t12b9 007f  USR 56k Internal WinModem (Models 5698, 5699)\n\t\t12b9 0080  USR 56k Internal WinModem (Models 2975, 3528)\n\t\t12b9 0081  USR 56k Internal Voice WinModem (Models 2974, 3529)\n\t\t12b9 0091  USR 56k Internal Voice WinModem (Model 2978)\n\t1007  USR 56k Internal WinModem\n\t\t12b9 00a3  USR 56k Internal WinModem (Model 3595)\n\t\t12b9 00c4  U.S. Robotics V.92 Voice Faxmodem (2884A/B/C)\n\t1008  56K FaxModem Model 5610\n\t\t12b9 00a2  USR 56k Internal FAX Modem (Model 2977)\n\t\t12b9 00aa  USR 56k Internal Voice Modem (Model 2976)\n\t\t12b9 00ab  USR 56k Internal Voice Modem (Model 5609)\n\t\t12b9 00ac  USR 56k Internal Voice Modem (Model 3298)\n\t\t12b9 00ad  USR 56k Internal FAX Modem (Model 5610)\n\t\t12b9 00d3  USR 56K Internal V92 FAX Modem (Model 5610)\n\t\t12b9 baba  USR 56K Internal Voice Modem 3CP3298-DEL (Model 5601) [Hawk]\n12ba  BittWare, Inc.\n12bb  Nippon Unisoft Corporation\n12bc  Array Microsystems\n12bd  Computerm Corp.\n12be  Anchor Chips Inc.\n\t3041  AN3041Q CO-MEM\n\t3042  AN3042Q CO-MEM Lite\n\t\t12be 3042  Anchor Chips Lite Evaluation Board\n12bf  Fujifilm Microdevices\n12c0  Infimed\n12c1  GMM Research Corp\n12c2  Mentec Limited\n12c3  Holtek Microelectronics Inc\n\t0058  PCI NE2K Ethernet\n\t5598  PCI NE2K Ethernet\n12c4  Connect Tech Inc\n\t0001  Blue HEAT/PCI 8 (RS232/CL/RJ11)\n\t0002  Blue HEAT/PCI 4 (RS232)\n\t0003  Blue HEAT/PCI 2 (RS232)\n\t0004  Blue HEAT/PCI 8 (UNIV, RS485)\n\t0005  Blue HEAT/PCI 4+4/6+2 (UNIV, RS232/485)\n\t0006  Blue HEAT/PCI 4 (OPTO, RS485)\n\t0007  Blue HEAT/PCI 2+2 (RS232/485)\n\t0008  Blue HEAT/PCI 2 (OPTO, Tx, RS485)\n\t0009  Blue HEAT/PCI 2+6 (RS232/485)\n\t000a  Blue HEAT/PCI 8 (Tx, RS485)\n\t000b  Blue HEAT/PCI 4 (Tx, RS485)\n\t000c  Blue HEAT/PCI 2 (20 MHz, RS485)\n\t000d  Blue HEAT/PCI 2 PTM\n\t0100  NT960/PCI\n\t0201  cPCI Titan - 2 Port\n\t0202  cPCI Titan - 4 Port\n\t0300  CTI PCI UART 2 (RS232)\n\t0301  CTI PCI UART 4 (RS232)\n\t0302  CTI PCI UART 8 (RS232)\n\t0310  CTI PCI UART 1+1 (RS232/485)\n\t0311  CTI PCI UART 2+2 (RS232/485)\n\t0312  CTI PCI UART 4+4 (RS232/485)\n\t0320  CTI PCI UART 2\n\t0321  CTI PCI UART 4\n\t0322  CTI PCI UART 8\n\t0330  CTI PCI UART 2 (RS485)\n\t0331  CTI PCI UART 4 (RS485)\n\t0332  CTI PCI UART 8 (RS485)\n12c5  Picture Elements Incorporated\n\t007e  Imaging/Scanning Subsystem Engine\n\t007f  Imaging/Scanning Subsystem Engine\n\t0081  PCIVST [Grayscale Thresholding Engine]\n\t0085  Video Simulator/Sender\n\t0086  THR2 Multi-scale Thresholder\n12c6  Mitani Corporation\n12c7  Dialogic Corp\n# 12 Line, 6 port, CT-BUS/SC-BUS, loopstart FXO adaptor.\n\t0546  Springware D/120JCT-LS\n# 24 Channel, 1 Port, CT-BUS/SC-BUS, T1/PRI adaptor.\n\t0647  Springware D/240JCT-T1\n# 4 Line, 4 port, CT-BUS/SC-BUS, loopstart FXO adaptor. Revision 01\n\t0676  Springware D/41JCT-LS\n# 48 Channel, 2 Port, CT-BUS/SC-BUS, T1/PRI adaptor.\n\t0685  Springware D/480JCT-2T1\n12c8  G Force Co, Ltd\n12c9  Gigi Operations\n12ca  Integrated Computing Engines\n12cb  Antex Electronics Corporation\n\t0027  SC4 (StudioCard)\n\t002e  StudioCard 2000\n12cc  Pluto Technologies International\n12cd  Aims Lab\n12ce  Netspeed Inc.\n12cf  Prophet Systems, Inc.\n12d0  GDE Systems, Inc.\n12d1  PSITech\n12d2  NVidia / SGS Thomson (Joint Venture)\n\t0008  NV1\n\t0009  DAC64\n\t0018  Riva128\n\t\t1048 0c10  VICTORY Erazor\n\t\t1048 0c15  VICTORY Erazor LT-8\n\t\t107b 8030  STB Velocity 128\n\t\t1092 0350  Viper V330\n\t\t1092 1092  Viper V330\n\t\t10b4 1b1b  STB Velocity 128\n\t\t10b4 1b1d  STB Velocity 128\n\t\t10b4 1b1e  STB Velocity 128, PAL TV-Out\n\t\t10b4 1b20  STB Velocity 128 Sapphire\n\t\t10b4 1b21  STB Velocity 128\n\t\t10b4 1b22  STB Velocity 128 AGP, NTSC TV-Out\n\t\t10b4 1b23  STB Velocity 128 AGP, PAL TV-Out\n\t\t10b4 1b27  STB Velocity 128 DVD\n\t\t10b4 1b88  MVP Pro 128\n\t\t10b4 222a  STB Velocity 128 AGP\n\t\t10b4 2230  STB Velocity 128\n\t\t10b4 2232  STB Velocity 128\n\t\t10b4 2235  STB Velocity 128 AGP\n\t\t2a15 54a3  3DVision-SAGP / 3DexPlorer 3000\n\t0019  Riva128ZX\n\t0020  TNT\n\t0028  TNT2\n\t0029  UTNT2\n\t002c  VTNT2\n\t00a0  ITNT2\n12d3  Vingmed Sound A/S\n12d4  Ulticom (Formerly DGM&S)\n\t0200  T1 Card\n12d5  Equator Technologies Inc\n\t0003  BSP16\n\t1000  BSP15\n12d6  Analogic Corp\n12d7  Biotronic SRL\n# acquired by Diodes Inc.\n12d8  Pericom Semiconductor\n\t01a7  7C21P100 2-port PCI-X to PCI-X Bridge\n# 3Port-3Lane PCI Express Switch GreenPacket Family\n\t0303  PCI Express Switch 3-3\n# PI7C9X20508GP 5Port-8Lane PCI Express Switch GreenPacket Family\n\t0508  PI7C9X20508GP PCI Express Switch 5Port-8Lane\n\t2304  PI7C9X2G304 EL/SL PCIe2 3-Port/4-Lane Packet Switch\n\t2308  PI7C9X2G308GP 3-Ports/8-lane PCIe 2.0 Switch\n\t2404  PI7C9X2G404 EL/SL PCIe2 4-Port/4-Lane Packet Switch\n\t2608  PI7C9X2G608GP PCIe2 6-Port/8-Lane Packet Switch\n\t\tea50 cc10  RXi2-BP\n\t400a  PI7C9X442SL PCIe Bridge Port\n\t400c  PI7C9X440SL PCIe Bridge Port\n\t400e  PI7C9X440SL/PI7C9X442SL USB OHCI Controller\n\t400f  PI7C9X440SL/PI7C9X442SL USB EHCI Controller\n\t71e2  PI7C7300A/PI7C7300D PCI-to-PCI Bridge\n\t71e3  PI7C7300A/PI7C7300D PCI-to-PCI Bridge (Secondary Bus 2)\n\t8140  PI7C8140A PCI-to-PCI Bridge\n\t8148  PI7C8148A/PI7C8148B PCI-to-PCI Bridge\n\t8150  PCI to PCI Bridge\n\t8152  PI7C8152A/PI7C8152B/PI7C8152BI PCI-to-PCI Bridge\n\t8154  PI7C8154A/PI7C8154B/PI7C8154BI PCI-to-PCI Bridge\n\t8619  PI7C9X2G1616PR PCIe2 16-Port/16-Lane Packet Switch\n\tb404  PI7C9X2G404 EV/SV PCIe2 4-Port/4-Lane Packet Switch\n\te110  PI7C9X110 PCIe- to-PCI bridge\n\t\t1775 11cc  CC11/CL11 CompactPCI Bridge\n\te111  PI7C9X111SL PCIe-to-PCI Reversible Bridge\n\te112  PI7C9X112SL PCIe-to-PCI Bridge\n\te113  PI7C9X113SL/PI7C9X118SL PCIe-to-PCI Bridge\n\te130  PCI Express to PCI-XPI7C9X130 PCI-X Bridge\n12d9  Aculab PLC\n\t0002  PCI Prosody\n\t0004  cPCI Prosody\n\t0005  Aculab E1/T1 PCI card\n\t1078  Prosody X class e1000 device\n\t\t12d9 000d  Prosody X PCI\n\t\t12d9 000e  Prosody X cPCI\n12da  True Time Inc.\n12db  Annapolis Micro Systems, Inc\n12dc  Symicron Computer Communication Ltd.\n12dd  Management Graphics\n12de  Rainbow Technologies\n\t0200  CryptoSwift CS200\n12df  SBS Technologies Inc\n12e0  Chase Research\n\t0010  ST16C654 Quad UART\n\t0020  ST16C654 Quad UART\n\t0030  ST16C654 Quad UART\n12e1  Nintendo Co, Ltd\n12e2  Datum Inc. Bancomm-Timing Division\n12e3  Imation Corp - Medical Imaging Systems\n12e4  Brooktrout Technology Inc\n12e5  Apex Semiconductor Inc\n12e6  Cirel Systems\n12e7  Sunsgroup Corporation\n12e8  Crisc Corp\n12e9  GE Spacenet\n12ea  Zuken\n12eb  Aureal Semiconductor\n\t0001  Vortex 1\n\t\t0000 0300  Terasound A3D PCI\n\t\t104d 8036  AU8820 Vortex Digital Audio Processor\n\t\t1092 2000  Sonic Impact A3D\n\t\t1092 2100  Sonic Impact A3D\n\t\t1092 2110  Sonic Impact A3D\n\t\t1092 2200  Sonic Impact A3D\n\t\t122d 1002  SC 338-A3D\n\t\t12eb 0001  AU8820 Vortex Digital Audio Processor\n\t\t5053 3355  Montego\n\t\t50b2 1111  XLerate\n\t0002  Vortex 2\n\t\t104d 8049  AU8830 Vortex 3D Digital Audio Processor\n\t\t104d 807b  AU8830 Vortex 3D Digital Audio Processor\n\t\t1092 3000  Monster Sound II\n\t\t1092 3001  Monster Sound II\n\t\t1092 3002  Monster Sound II\n\t\t1092 3003  Monster Sound II\n\t\t1092 3004  Monster Sound II\n\t\t12eb 0002  AU8830 Vortex 3D Digital Audio Processor\n\t\t12eb 0088  AU8830 Vortex 3D Digital Audio Processor\n\t\t144d 3510  AU8830 Vortex 3D Digital Audio Processor\n\t\t5053 3356  Montego II\n\t0003  AU8810 Vortex Digital Audio Processor\n\t\t104d 8049  AU8810 Vortex Digital Audio Processor\n\t\t104d 8077  AU8810 Vortex Digital Audio Processor\n\t\t109f 1000  AU8810 Vortex Digital Audio Processor\n\t\t12eb 0003  AU8810 Vortex Digital Audio Processor\n\t\t1462 6780  AU8810 Vortex Digital Audio Processor\n\t\t14a4 2073  AU8810 Vortex Digital Audio Processor\n\t\t14a4 2091  AU8810 Vortex Digital Audio Processor\n\t\t14a4 2104  AU8810 Vortex Digital Audio Processor\n\t\t14a4 2106  AU8810 Vortex Digital Audio Processor\n\t8803  Vortex 56k Software Modem\n\t\t12eb 8803  Vortex 56k Software Modem\n12ec  3A International, Inc.\n12ed  Optivision Inc.\n12ee  Orange Micro\n12ef  Vienna Systems\n12f0  Pentek\n12f1  Sorenson Vision Inc\n12f2  Gammagraphx, Inc.\n12f3  Radstone Technology\n12f4  Megatel\n12f5  Forks\n12f6  Dawson France\n12f7  Cognex\n12f8  Electronic Design GmbH\n\t0002  VideoMaker\n12f9  Four Fold Ltd\n12fb  Spectrum Signal Processing\n\t0001  PMC-MAI\n\t00f5  F5 Dakar\n\t02ad  PMC-2MAI\n\t2adc  ePMC-2ADC\n\t3100  PRO-3100\n\t3500  PRO-3500\n\t4d4f  Modena\n\t8120  ePMC-8120\n\tda62  Daytona C6201 PCI (Hurricane)\n\tdb62  Ingliston XBIF\n\tdc62  Ingliston PLX9054\n\tdd62  Ingliston JTAG/ISP\n\teddc  ePMC-MSDDC\n\tfa01  ePMC-FPGA\n12fc  Capital Equipment Corp\n12fd  I2S\n12fe  ESD Electronic System Design GmbH\n12ff  Lexicon\n1300  Harman International Industries Inc\n1302  Computer Sciences Corp\n1303  Innovative Integration\n\t0030  X3-SDF 4-channel XMC acquisition board\n1304  Juniper Networks\n1305  Netphone, Inc\n1306  Duet Technologies\n# Nee ComputerBoards\n1307  Measurement Computing\n\t0001  PCI-DAS1602/16\n\t000b  PCI-DIO48H\n\t000c  PCI-PDISO8\n\t000d  PCI-PDISO16\n\t000f  PCI-DAS1200\n\t0010  PCI-DAS1602/12\n\t0014  PCI-DIO24H\n\t0015  PCI-DIO24H/CTR3\n\t0016  PCI-DIO48H/CTR15\n\t0017  PCI-DIO96H\n\t0018  PCI-CTR05\n\t0019  PCI-DAS1200/JR\n\t001a  PCI-DAS1001\n\t001b  PCI-DAS1002\n\t001c  PCI-DAS1602JR/16\n\t001d  PCI-DAS6402/16\n\t001e  PCI-DAS6402/12\n\t001f  PCI-DAS16/M1\n\t0020  PCI-DDA02/12\n\t0021  PCI-DDA04/12\n\t0022  PCI-DDA08/12\n\t0023  PCI-DDA02/16\n\t0024  PCI-DDA04/16\n\t0025  PCI-DDA08/16\n\t0026  PCI-DAC04/12-HS\n\t0027  PCI-DAC04/16-HS\n\t0028  PCI-DIO24\n\t0029  PCI-DAS08\n\t002c  PCI-INT32\n\t0033  PCI-DUAL-AC5\n\t0034  PCI-DAS-TC\n\t0035  PCI-DAS64/M1/16\n\t0036  PCI-DAS64/M2/16\n\t0037  PCI-DAS64/M3/16\n\t004b  PCI-MDB64\n\t004c  PCI-DAS1000\n\t004d  PCI-QUAD04\n\t0052  PCI-DAS4020/12\n\t0053  PCIM-DDA06/16\n\t0054  PCI-DIO96\n\t0055  CPCI-DIO24H\n\t0056  PCIM-DAS1602/16\n\t0057  PCI-DAS3202/16\n\t0059  PCI-QUAD-AC5\n\t005a  CPCI-DIO96H\n\t005b  CPCI-DIO48H\n\t005d  PCI-DAS6023\n\t005e  PCI-DAS6025\n\t005f  PCI-DAS6030\n\t0060  PCI-DAS6031\n\t0061  PCI-DAS6032\n\t0062  PCI-DAS6033\n\t0063  PCI-DAS6034\n\t0064  PCI-DAS6035\n\t0065  PCI-DAS6040\n\t0066  PCI-DAS6052\n\t0067  PCI-DAS6070\n\t0068  PCI-DAS6071\n\t006e  PCI-CTR10\n\t006f  PCI-DAS6036\n\t0070  PCI-DAC6702\n\t0071  PCI-DAC6703\n\t0074  PCI-CTR20HD\n\t0077  PCI-DIO24/LP\n\t0078  PCI-DAS6013\n\t0079  PCI-DAS6014\n\t007b  PCIM-DAS16JR/16\n\t007e  PCI-DIO24/S\n\t00a5  PCI-2511\n\t00a6  PCI-2513\n\t00a7  PCI-2515\n\t00a8  PCI-2517\n\t00be  PCI-QUAD05\n\t00da  PCIe-DIO96H\n\t00db  PCIe-DIO24\n\t0115  PCIe-DAS1602/16\n1308  Jato Technologies Inc.\n\t0001  NetCelerator Adapter\n\t\t1308 0001  NetCelerator Adapter\n1309  AB Semiconductor Ltd\n130a  Mitsubishi Electric Microcomputer\n130b  Colorgraphic Communications Corp\n130c  Ambex Technologies, Inc\n130d  Accelerix Inc\n130e  Yamatake-Honeywell Co. Ltd\n130f  Advanet Inc\n1310  Gespac\n1311  Videoserver, Inc\n1312  Acuity Imaging, Inc\n1313  Yaskawa Electric Co.\n1315  Wavesat\n1316  Teradyne Inc\n1317  ADMtek\n\t0981  21x4x DEC-Tulip compatible 10/100 Ethernet\n\t0985  NC100 Network Everywhere Fast Ethernet 10/100\n\t\t1734 100c  Scenic N300 ADMtek AN983 10/100 Mbps PCI Adapter\n\t1985  21x4x DEC-Tulip compatible 10/100 Ethernet\n\t\t1385 511a  FA511\n\t\t1395 2103  CB100-EZ (4-LED version)\n\t2850  HSP MicroModem 56\n\t5120  ADM5120 OpenGate System-on-Chip\n\t8201  ADM8211 802.11b Wireless Interface\n\t\t10b8 2635  SMC2635W v1 802.11b Wireless Cardbus Adapter\n\t\t1317 8201  SMC2635W v2 802.11b Wireless Cardbus Adapter\n\t8211  ADM8211 802.11b Wireless Interface\n\t9511  21x4x DEC-Tulip compatible 10/100 Ethernet\n1318  Packet Engines Inc.\n\t0911  GNIC-II PCI Gigabit Ethernet [Hamachi]\n1319  Fortemedia, Inc\n\t0801  Xwave QS3000A [FM801]\n\t\t1319 1319  FM801 PCI Audio\n\t0802  Xwave QS3000A [FM801 game port]\n\t\t1319 1319  FM801 PCI Joystick\n\t1000  FM801 PCI Audio\n\t1001  FM801 PCI Joystick\n131a  Finisar Corp.\n131c  Nippon Electro-Sensory Devices Corp\n131d  Sysmic, Inc.\n131e  Xinex Networks Inc\n131f  Siig Inc\n\t1000  CyberSerial (1-port) 16550\n\t1001  CyberSerial (1-port) 16650\n\t1002  CyberSerial (1-port) 16850\n\t1010  Duet 1S(16550)+1P\n\t1011  Duet 1S(16650)+1P\n\t1012  Duet 1S(16850)+1P\n\t1020  CyberParallel (1-port)\n\t1021  CyberParallel (2-port)\n\t1030  CyberSerial (2-port) 16550\n\t1031  CyberSerial (2-port) 16650\n\t1032  CyberSerial (2-port) 16850\n\t1034  Trio 2S(16550)+1P\n\t1035  Trio 2S(16650)+1P\n\t1036  Trio 2S(16850)+1P\n\t1050  CyberSerial (4-port) 16550\n\t1051  CyberSerial (4-port) 16650\n\t1052  CyberSerial (4-port) 16850\n\t2000  CyberSerial (1-port) 16550\n\t2001  CyberSerial (1-port) 16650\n\t2002  CyberSerial (1-port) 16850\n\t2010  Duet 1S(16550)+1P\n\t2011  Duet 1S(16650)+1P\n\t2012  Duet 1S(16850)+1P\n\t2020  CyberParallel (1-port)\n\t2021  CyberParallel (2-port)\n\t2030  CyberSerial (2-port) 16550\n\t\t131f 2030  PCI Serial Card\n\t2031  CyberSerial (2-port) 16650\n\t2032  CyberSerial (2-port) 16850\n\t2040  Trio 1S(16550)+2P\n\t2041  Trio 1S(16650)+2P\n\t2042  Trio 1S(16850)+2P\n\t2050  CyberSerial (4-port) 16550\n\t2051  CyberSerial (4-port) 16650\n\t2052  CyberSerial (4-port) 16850\n\t2060  Trio 2S(16550)+1P\n\t2061  Trio 2S(16650)+1P\n\t2062  Trio 2S(16850)+1P\n\t2081  CyberSerial (8-port) ST16654\n1320  Crypto AG\n1321  Arcobel Graphics BV\n1322  MTT Co., Ltd\n1323  Dome Inc\n1324  Sphere Communications\n1325  Salix Technologies, Inc\n1326  Seachange international\n1327  Voss scientific\n1328  quadrant international\n1329  Productivity Enhancement\n132a  Microcom Inc.\n132b  Broadband Technologies\n132c  Micrel Inc\n132d  Integrated Silicon Solution, Inc.\n1330  MMC Networks\n1331  RadiSys Corporation\n\t0030  ENP-2611\n\t8200  82600 Host Bridge\n\t8201  82600 IDE\n\t8202  82600 USB\n\t8210  82600 PCI Bridge\n1332  Micro Memory\n\t5415  MM-5415CN PCI Memory Module with Battery Backup\n\t5425  MM-5425CN PCI 64/66 Memory Module with Battery Backup\n\t6140  MM-6140D\n1334  Redcreek Communications, Inc\n1335  Videomail, Inc\n1337  Third Planet Publishing\n1338  BT Electronics\n133a  Vtel Corp\n133b  Softcom Microsystems\n133c  Holontech Corp\n133d  SS Technologies\n133e  Virtual Computer Corp\n133f  SCM Microsystems\n1340  Atalla Corp\n1341  Kyoto Microcomputer Co\n1342  Promax Systems Inc\n1343  Phylon Communications Inc\n# nee Crucial Technology\n1344  Micron Technology Inc\n\t5150  RealSSD P320h\n\t5151  RealSSD P320m\n\t5152  RealSSD P320s\n\t5153  RealSSD P325m\n\t5160  RealSSD P420h\n\t5161  RealSSD P420m\n\t5163  RealSSD P425m\n\t5180  9100 PRO NVMe SSD\n\t5181  9100 MAX NVMe SSD\n\t5188  7100 ECO NVMe SSD\n\t5189  7100 MAX NVMe SSD\n\t5190  9200 ECO NVMe SSD\n\t5191  9200 PRO NVMe SSD\n\t5192  9200 MAX NVMe SSD\n\t5196  9400 PRO NVMe SSD\n\t5197  9400 MAX NVMe SSD\n\t51a2  7300 PRO NVMe SSD\n\t\t1344 2000  960GB U.2\n\t\t1344 3000  1920GB U.2\n\t\t1344 4000  3480GB U.2\n\t\t1344 5000  7680GB U.2\n\t51a3  7300 MAX NVMe SSD\n\t\t1344 1100  400GB M.2\n\t\t1344 2000  800GB U.2\n\t\t1344 2100  800GB M.2\n\t\t1344 3000  1600GB U.2\n\t\t1344 4000  3200GB U.2\n\t\t1344 5000  6400GB U.2\n\t51b1  9300 PRO NVMe SSD\n\t\t1344 4000  3.84TB U.2\n\t\t1344 5000  7.68TB U.2\n\t\t1344 6000  15.36TB U.2\n\t51b2  9300 MAX NVMe SSD\n\t\t1344 4000  3.2TB U.2\n\t\t1344 5000  6.4 TB U.2\n\t\t1344 6000  12.8TB U.2\n\t51b7  7500 PRO NVMe SSD\n\t\t1028 22e7  DC NVMe 7500 U.2 SED RI 15.36TB\n\t\t1028 22e8  DC NVMe 7500 U.2 SED RI 7.68TB\n\t\t1028 22e9  DC NVMe 7500 U.2 SED RI 3.84TB\n\t\t1028 22ea  DC NVMe 7500 U.2 SED RI 1.92TB\n\t\t1028 22eb  DC NVMe 7500 U.2 SED RI 960GB\n\t\t1028 22ec  DC NVMe 7500 U.2 ISE RI 15.36TB\n\t\t1028 22ed  DC NVMe 7500 U.2 ISE RI 7.68TB\n\t\t1028 22ee  DC NVMe 7500 U.2 ISE RI 3.84TB\n\t\t1028 22ef  DC NVMe 7500 U.2 ISE RI 1.92TB\n\t\t1028 22f0  DC NVMe 7500 U.2 ISE RI 960GB\n\t51b8  7500 MAX NVMe SSD\n\t\t1028 22f1  DC NVMe 7500 U.2 ISE MU 12.8TB\n\t\t1028 22f2  DC NVMe 7500 U.2 ISE MU 6.4TB\n\t\t1028 22f3  DC NVMe 7500 U.2 ISE MU 3.2TB\n\t\t1028 22f4  DC NVMe 7500 U.2 ISE MU 1.6TB\n\t\t1028 22f5  DC NVMe 7500 U.2 ISE MU 800GB\n\t51b9  6500 ION NVMe SSD\n\t\t1028 22e6  Ent NVMe 6500 RI 30.72TB\n\t\t1028 22f6  Ent NVMe 6500 RI FIPS 30.72TB\n\t51bb  9550 PRO NVMe SSD\n\t\t1028 2318  MTFDLBQ30T7THA-1BK1JABDA\n\t\t1028 2319  MTFDLBQ15T3THA-1BK1JABDA\n\t\t1028 231a  MTFDLBQ7T6THA-1BK1JABDA\n\t\t1028 231b  MTFDLBQ3T8THA-1BK1JABDA\n\t\t1028 2320  MTFDLAL30T7THA-1BK1JABDA\n\t\t1028 2321  MTFDLAL15T3THA-1BK1JABDA\n\t\t1028 2322  MTFDLAL7T6THA-1BK1JABDA\n\t\t1028 2323  MTFDLAL3T8THA-1BK1JABDA\n\t\t1028 2328  MTFDLAL30T7THA-1BK1DFCDA\n\t\t1028 2329  MTFDLAL15T3THA-1BK1DFCDA\n\t\t1028 232a  MTFDLAL7T6THA-1BK1DFCDA\n\t\t1028 232b  MTFDLAL3T8THA-1BK1DFCDA\n\t\t1028 235c  MTFDLBQ30T7THA-1BK1DFCDA\n\t\t1028 235d  MTFDLBQ15T3THA-1BK1DFCDA\n\t\t1028 235e  MTFDLBQ7T6THA-1BK1DFCDA\n\t\t1028 235f  MTFDLBQ3T8THA-1BK1DFCDA\n\t51bd  9550 MAX NVMe SSD\n\t\t1028 231c  MTFDLBQ25T6THB-1BK1JABDA\n\t\t1028 231d  MTFDLBQ12T8THB-1BK1JABDA\n\t\t1028 231e  MTFDLBQ6T4THB-1BK1JABDA\n\t\t1028 231f  MTFDLBQ3T2THB-1BK1JABDA\n\t\t1028 2324  MTFDLAL25T6THB-1BK1JABDA\n\t\t1028 2325  MTFDLAL12T8THB-1BK1JABDA\n\t\t1028 2326  MTFDLAL6T4THB-1BK1JABDA\n\t\t1028 2327  MTFDLAL3T2THB-1BK1JABDA\n\t\t1028 232c  MTFDLAL25T6THB-1BK1DFCDA\n\t\t1028 232d  MTFDLAL12T8THB-1BK1DFCDA\n\t\t1028 232e  MTFDLAL6T4THB-1BK1DFCDA\n\t\t1028 232f  MTFDLAL3T2THB-1BK1DFCDA\n\t\t1028 2360  MTFDLBQ25T6THB-1BK1DFCDA\n\t\t1028 2361  MTFDLBQ12T8THB-1BK1DFCDA\n\t\t1028 2362  MTFDLBQ6T4THB-1BK1DFCDA\n\t\t1028 2363  MTFDLBQ3T2THB-1BK1DFCDA\n\t51c0  7400 PRO NVMe SSD\n\t\t1028 2162  EC NVMe OPAL 7400 RI M.2 480GB\n\t\t1028 2163  EC NVMe OPAL 7400 RI M.2 960GB\n\t\t1028 2164  EC NVMe ISE 7400 RI M.2 480GB\n\t\t1028 2165  EC NVMe ISE 7400 RI M.2 960GB\n\t\t1028 216c  EC NVMe ISE 7400 RI M.2 110 1.92TB\n\t\t1028 216d  EC NVMe ISE 7400 RI M.2 110 3.84TB\n\t\t1028 216e  EC NVMe OPAL 7400 RI M.2 110 1.92TB\n\t\t1028 216f  EC NVMe OPAL 7400 RI M.2 110 3.84TB\n\t\t1028 2197  EC NVMe OPAL 7400 RI M.2 110 960GB\n\t\t1028 224d  EC NVMe ISE 7400 RI M.2 110 960GB\n\t\t1344 1100  M.2 480GB\n\t\t1344 2000  U.3 960GB\n\t\t1344 2100  M.2 960GB\n\t\t1344 2600  E1.S 960GB\n\t\t1344 2b00  M.2 1920GB\n\t\t1344 2d00  E1.2 1920GB\n\t\t1344 3000  U.3 1920GB\n\t\t1344 3e00  M.2 3840GB\n\t\t1344 3f00  E1.S 3840GB\n\t\t1344 4000  U.3 3840GB\n\t\t1344 5000  U.3 7680GB\n\t51c1  7400 MAX NVMe SSD\n\t\t1028 216a  EC NVMe ISE 7400 MU M.2 80 800GB\n\t\t1028 216b  EC NVMe OPAL 7400 MU M.2 80 800GB\n\t\t1344 1100  M.2 400GB\n\t\t1344 2000  U.3 800GB\n\t\t1344 2100  M.2 800GB\n\t\t1344 2600  E1.S 800GB\n\t\t1344 2b00  M.2 1600GB\n\t\t1344 2d00  E1.S 1600GB\n\t\t1344 3000  U.3 1600GB\n\t\t1344 3e00  M.2 3200GB\n\t\t1344 3f00  E1.S 3200GB\n\t\t1344 4000  U.3 3200GB\n\t\t1344 5000  U.3 6400GB\n\t51c3  7450 PRO NVMe SSD\n\t\t1028 226b  EC NVMe FIPS 7450 RI M.2 110 960GB\n\t\t1028 226c  EC NVMe ISE 7450 RI M.2 80 480GB\n\t\t1028 226d  EC NVMe ISE 7450 RI M.2 80 960GB\n\t\t1028 226e  EC NVMe SED 7450 RI M.2 80 480GB\n\t\t1028 226f  EC NVMe SED 7450 RI M.2 80 960GB\n\t\t1028 2270  EC NVMe FIPS 7450 RI M.2 80 480GB\n\t\t1028 2271  EC NVMe FIPS 7450 RI M.2 80 960GB\n\t\t1028 2273  EC NVMe ISE 7450 RI M.2 110 960GB\n\t\t1028 2274  EC NVMe ISE 7450 RI M.2 110 1920GB\n\t\t1028 2275  EC NVMe ISE 7450 RI M.2 110 3840GB\n\t\t1028 2278  DC NVMe ISE 7450 RI U.2 960GB\n\t\t1028 2279  DC NVMe ISE 7450 RI U.2 1.92TB\n\t\t1028 227a  DC NVMe ISE 7450 RI U.2 3.84TB\n\t\t1028 227b  DC NVMe ISE 7450 RI U.2 7.68TB\n\t\t1028 227c  DC NVMe ISE 7450 RI U.2 15.36TB\n\t\t1028 227d  DC NVMe SED 7450 RI U.2 960GB\n\t\t1028 227e  DC NVMe SED 7450 RI U.2 1.92TB\n\t\t1028 227f  DC NVMe SED 7450 RI U.2 3.84TB\n\t\t1028 2280  DC NVMe SED 7450 RI U.2 7.68TB\n\t\t1028 2281  DC NVMe SED 7450 RI U.2 15.36TB\n\t51c4  7450 MAX NVMe SSD\n\t\t1028 2272  EC NVMe ISE 7450 MU M.2 80 800GB\n\t\t1028 228b  DC NVMe SED 7450 MU U.2 800GB\n\t\t1028 228c  DC NVMe ISE 7450 MU U.2 800GB\n\t\t1028 228d  DC NVMe SED 7450 MU U.2 1.6TB\n\t\t1028 228e  DC NVMe ISE 7450 MU U.2 1.6TB\n\t\t1028 228f  DC NVMe SED 7450 MU U.2 3.2TB\n\t\t1028 2290  DC NVMe ISE 7450 MU U.2 3.2TB\n\t\t1028 2291  DC NVMe SED 7450 MU U.2 6.4TB\n\t\t1028 2292  DC NVMe ISE 7450 MU U.2 6.4TB\n\t\t1028 2293  DC NVMe SED 7450 MU U.2 12.8TB\n\t\t1028 2294  DC NVMe ISE 7450 MU U.2 12.8TB\n\t\t1344 3000  U.3 1600GB [MTFDKCB1T6TFS/MTFDKCC1T6TFS]\n\t51cb  6550 ION NVMe SSD\n\t\t1028 2379  MTFDLBQ61T4THL-1BK1JABDA\n\t\t1028 23a6  MTFDLBQ30T7THL-1BK1JABDA\n\t\t1028 23a7  MTFDLAL61T4THL-1BK1JABDA\n\t\t1028 23a8  MTFDLAL30T7THL-1BK1JABDA\n\t5404  2210 NVMe SSD [Cobain]\n\t5405  2300 NVMe SSD [Santana]\n\t5407  3400 NVMe SSD [Hendrix]\n\t5410  2200S NVMe SSD [Cassandra]\n\t5411  2450 NVMe SSD [HendrixV] (DRAM-less)\n\t5413  2400 NVMe SSD (DRAM-less)\n\t5414  3460 NVMe SSD\n\t5415  3500 NVMe SSD\n\t5416  2550 NVMe SSD (DRAM-less)\n\t5425  2500 NVMe SSD (DRAM-less)\n\t5427  2650 NVMe SSD (DRAM-less)\n\t5428  4600 NVMe SSD\n\t5429  2600 NVMe SSD (DRAM-less)\n\t6001  2100AI NVMe SSD [Nitro]\n1345  Arescom Inc\n1347  Odetics\n1349  Sumitomo Electric Industries, Ltd.\n134a  DTC Technology Corp.\n\t0001  Domex 536\n\t0002  Domex DMX3194UP SCSI Adapter\n134b  ARK Research Corp.\n134c  Chori Joho System Co. Ltd\n134d  PCTel Inc\n\t2189  HSP56 MicroModem\n\t2486  2304WT V.92 MDC Modem\n\t7890  HSP MicroModem 56\n\t\t134d 0001  PCT789 adapter\n\t7891  HSP MicroModem 56\n\t\t134d 0001  HSP MicroModem 56\n\t7892  HSP MicroModem 56\n\t7893  HSP MicroModem 56\n\t7894  HSP MicroModem 56\n\t7895  HSP MicroModem 56\n\t7896  HSP MicroModem 56\n\t7897  HSP MicroModem 56\n134e  CSTI\n134f  Algo System Co Ltd\n1350  Systec Co. Ltd\n1351  Sonix Inc\n# nee Vierling Communication SAS, nee Thales Idatys\n1353  dbeeSet Technology\n\t0002  Proserver\n\t0003  PCI-FUT\n\t0004  PCI-S0\n\t0005  PCI-FUT-S0\n\t0006  OTDU-1U (FPGA Zynq-7000)\n\t0007  OTDU-EX\n1354  Dwave System Inc\n1355  Kratos Analytical Ltd\n1356  The Logical Co\n1359  Prisa Networks\n135a  Brainboxes Ltd\n\t0841  UC-268 4 port RS-232 card\n\t0861  UC-257 2 port RS-232 + LPT card\n\t0862  UC-257 2 port RS-232 + LPT card\n\t0863  UC-257 2 port RS-232 + LPT card\n\t0881  UC-279 8 port RS-232 card\n\t08a1  UC-313 2 port RS-422/485 card\n\t08a2  UC-313 2 port RS-422/485 card\n\t08a3  UC-313 2 port RS-422/485 card\n\t08c1  UC-310 2 port RS-422/485 Opto Isolated card\n\t08e1  UC-302 2 port RS-232 card\n\t08e2  UC-302 2 port RS-232 card\n\t08e3  UC-302 2 port RS-232 card\n\t0901  UC-431 3 port RS-232 card\n\t0921  UC-420 3 + 1 port RS-232 card\n\t0981  UC-475 1 + 1 port RS-232 + LPT card\n\t0982  UC-475 1 + 1 port RS-232 + LPT card\n\t09a1  UC-607 2 port RS-232 card\n\t09a2  UC-607 2 port RS-232 card\n\t09a3  UC-607 2 port RS-232 card\n\t0a61  UC-324 1 port RS-422/485 card\n\t0a81  UC-357 1 port RS-232 + 1 port RS-422/485 card\n\t0a82  UC-357 1 port RS-232 + 1 port RS-422/485 card\n\t0a83  UC-357 1 port RS-232 + 1 port RS-422/485 card\n\t0aa1  UC-246 1 port RS-232 card\n\t0aa2  UC-246 1 port RS-232 card\n\t0ac1  UP-189 Powered 2 port RS-232 card\n\t0ac2  UP-189 Powered 2 port RS-232 card\n\t0ac3  UP-189 Powered 2 port RS-232 card\n\t0b01  UC-346 4 port RS-422/485 card\n\t0b02  UC-346 4 port RS-422/485 card\n\t0b21  UP-200 Powered 2 port RS-232 card\n\t0b22  UP-200 Powered 2 port RS-232 card\n\t0b23  UP-200 Powered 2 port RS-232 card\n\t0ba1  UC-101 1 + 1 port RS-232 card\n\t0ba2  UC-101 1 + 1 port RS-232 card\n\t0ba3  UC-101 1 + 1 port RS-232 card\n\t0bc1  UC-203 1 + 1 port RS-232 + LPT card\n\t0bc2  UC-203 1 + 1 port RS-232 + LPT card\n\t0be1  UC-146 LPT card\n\t0be2  UC-146 LPT card\n\t0c01  UP-869 Powered 2 port RS-232 card\n\t0c02  UP-869 Powered 2 port RS-232 card\n\t0c03  UP-869 Powered 2 port RS-232 card\n\t0c21  UP-880 Powered 2 port RS-232 card\n\t0c22  UP-880 Powered 2 port RS-232 card\n\t0c23  UP-880 Powered 2 port RS-232 card\n\t0c41  UC-368 4 port RS-422/485 Opto Isolated card\n\t0c42  UC-368 4 port RS-422/485 Opto Isolated card\n\t0c43  UC-368 4 port RS-422/485 Opto Isolated card\n\t0ca1  UC-253 2 port RS-232 card\n\t0d21  UC-260 4 port RS-232 card\n\t0d41  UC-836 4 port RS-232 card\n\t0d60  IS-100 1 port RS-232 card\n\t0d80  IS-200 2 port RS-232 card\n\t0da0  IS-300 1 port RS-232 + LPT card\n\t0dc0  IS-400 4 port RS-232 card\n\t0de0  IS-500 LPT card\n\t0e41  PX-279 8 port RS-232 card\n\t0e61  UC-414 3 + 1 port RS-232 + LPT card\n\t4000  PX-420 3 + 1 port RS-232 card\n\t4001  PX-431 3 port RS-232 card\n\t4002  PX-820 Powered 3 + 1 port RS-232 card\n\t4003  PX-831 Powered 3 port RS-232 card\n\t4004  PX-235 1 port RS-232 card\n\t4005  PX-101 1 + 1 port RS-232 card\n\t4006  PX-257 1 + 1 port RS-232 + LPT card (Serial port)\n\t4007  PX-257 1 + 1 port RS-232 + LPT card (LPT port)\n\t4008  PX-835 Powered 1 port RS-232 card\n\t4009  PX-857 Powered 2 port RS-232 card\n\t400a  PX-260 4 port RS-232 card\n\t400b  PX-320 1 port RS-422/485 card\n\t400c  PX-313 2 port RS-422/485 card\n\t400e  PX-310 2 port RS-422/485 Opto Isolated card\n\t400f  PX-346 4 port RS-422/485 card\n\t4010  PX-368 4 port RS-422/485 Opto Isolated card\n\t4011  PX-420 3 + 1 port RS-232 card\n\t4012  PX-431 3 port RS-232 card\n\t4013  PX-820 Powered 3 + 1 port RS-232 card\n\t4014  PX-831 Powered 3 port RS-232 card\n\t4015  PX-257 2 port RS-232 card\n\t4016  PX-235 1 port RS-232 card\n\t4017  PX-835 Powered 1 port RS-232 card\n\t4018  PX-857 Powered 2 port RS-232 card\n\t4019  PX-101 1 + 1 port RS-232 card\n\t401c  PX-146 LPT card\n\t401d  PX-475 1 port RS-232 + LPT card (Serial port)\n\t401e  PX-803 Powered 1 + 1 port RS-232 card\n\t401f  PX-475 1 port RS-232 + LPT card (LPT port)\n\t4020  XC-157 LPT ExpressCard\n\t4021  XC-475 1 port RS-232 + LPT ExpressCard (Serial port)\n\t4022  XC-475 1 port RS-232 + LPT ExpressCard (LPT port)\n\t4026  XC-235 1 port RS-232 ExpressCard\n\t4027  IX-100 1 port RS-232 card\n\t4028  IX-200 2 port RS-232 card\n\t4029  IX-400 4 port RS-232 card\n\t402a  IX-500 LPT card\n\t402c  PX-263 4 port RS-232 + LPT card\n\t4100  PX-272 4 + 1 port RS-232 + LPT card\n135b  Giganet Inc\n135c  Quatech Inc\n\t0010  QSC-100\n\t0020  DSC-100\n\t0030  DSC-200/300\n\t0040  QSC-200/300\n\t0050  ESC-100D\n\t0060  ESC-100M\n\t00f0  MPAC-100 Synchronous Serial Card (Zilog 85230)\n\t0120  QSCP-100\n\t0130  DSCP-100\n\t0140  QSCP-200/300\n\t0150  DSCP-200/300\n\t0170  QSCLP-100\n\t0180  DSCLP-100\n\t0181  DSC-100\n\t0190  SSCLP-100\n\t01a0  QSCLP-200/300\n\t01b0  DSCLP-200/300\n\t01b1  DSC-200/300\n\t01c0  SSCLP-200/300\n\t01e0  ESC(LP)-100\n\t0258  DSPSX-200/300\n135d  ABB Network Partner AB\n135e  Sealevel Systems Inc\n\t5101  Route 56.PCI - Multi-Protocol Serial Interface (Zilog Z16C32)\n\t7101  Single Port RS-232/422/485/530\n\t7201  Dual Port RS-232/422/485 Interface\n\t7202  Dual Port RS-232 Interface\n\t7401  Four Port RS-232 Interface\n\t7402  Four Port RS-422/485 Interface\n\t7801  Eight Port RS-232 Interface\n\t7804  Eight Port RS-232/422/485 Interface\n\t8001  8001 Digital I/O Adapter\n135f  I-Data International A-S\n1360  Meinberg Funkuhren\n\t0101  PCI32 DCF77 Radio Clock\n\t0102  PCI509 DCF77 Radio Clock\n\t0103  PCI510 DCF77 Radio Clock\n\t0104  PCI511 DCF77 Radio Clock\n\t0105  PEX511 DCF77 Radio Clock (PCI Express)\n\t0106  PZF180PEX High Precision DCF77 Radio Clock (PCI Express)\n\t0201  GPS167PCI GPS Receiver\n\t0202  GPS168PCI GPS Receiver\n\t0203  GPS169PCI GPS Receiver\n\t0204  GPS170PCI GPS Receiver\n\t0205  GPS170PEX GPS Receiver (PCI Express)\n\t0206  GPS180PEX GPS Receiver (PCI Express)\n\t0207  GLN180PEX GPS/GLONASS receiver (PCI Express)\n\t0208  GPS180AMC GPS Receiver (PCI Express / MicroTCA / AdvancedMC)\n\t0209  GNS181PEX GNSS receiver (PCI Express)\n\t020a  GPS183PEX GPS Receiver (PCI Express)\n\t020b  GNS183PEX GNSS receiver (PCI Express)\n\t0301  TCR510PCI IRIG Timecode Reader\n\t0302  TCR167PCI IRIG Timecode Reader\n\t0303  TCR511PCI IRIG Timecode Reader\n\t0304  TCR511PEX IRIG Timecode Reader (PCI Express)\n\t0305  TCR170PEX IRIG Timecode Reader (PCI Express)\n\t0306  TCR180PEX IRIG Timecode Reader (PCI Express)\n\t0501  PTP270PEX PTP/IEEE1588 slave card (PCI Express)\n\t0601  FRC511PEX Free Running Clock (PCI Express)\n1361  Soliton Systems K.K.\n1362  Fujifacom Corporation\n1363  Phoenix Technology Ltd\n1364  ATM Communications Inc\n1365  Hypercope GmbH\n1366  Teijin Seiki Co. Ltd\n1367  Hitachi Zosen Corporation\n1368  Skyware Corporation\n1369  Digigram\n136a  High Soft Tech\n\t0004  HST Saphir VII mini PCI\n\t0007  HST Saphir III E MultiLink 4\n\t0008  HST Saphir III E MultiLink 8\n\t000a  HST Saphir III E MultiLink 2\n136b  Kawasaki Steel Corporation\n\tff01  KL5A72002 Motion JPEG\n136c  Adtek System Science Co Ltd\n136d  Gigalabs Inc\n136f  Applied Magic Inc\n1370  ATL Products\n1371  CNet Technology Inc\n\t434e  GigaCard Network Adapter\n\t\t1371 434e  N-Way PCI-Bus Giga-Card 1000/100/10Mbps(L)\n1373  Silicon Vision Inc\n1374  Silicom Ltd.\n\t0024  Silicom Dual port Giga Ethernet BGE Bypass Server Adapter\n\t0025  Silicom Quad port Giga Ethernet BGE Bypass Server Adapter\n\t0026  Silicom Dual port Fiber Giga Ethernet 546 Bypass Server Adapter\n\t0027  Silicom Dual port Fiber LX Giga Ethernet 546 Bypass Server Adapter\n\t0029  Silicom Dual port Copper Giga Ethernet 546GB Bypass Server Adapter\n\t002a  Silicom Dual port Fiber Giga Ethernet 546 TAP/Bypass Server Adapter\n\t002b  Silicom Dual port Copper Fast Ethernet 546 TAP/Bypass Server Adapter (PXE2TBI)\n\t002c  Silicom Quad port Copper Giga Ethernet 546GB Bypass Server Adapter (PXG4BPI)\n\t002d  Silicom Quad port Fiber-SX Giga Ethernet 546GB Bypass Server Adapter (PXG4BPFI)\n\t002e  Silicom Quad port Fiber-LX Giga Ethernet 546GB Bypass Server Adapter (PXG4BPFI-LX)\n\t002f  Silicom Dual port Fiber-SX Giga Ethernet 546GB Low profile Bypass Server Adapter (PXG2BPFIL)\n\t0030  Silicom Dual port Fiber-LX Giga Ethernet 546GB Low profile Bypass Server Adapter\n\t0031  Silicom Quad port Copper Giga Ethernet PCI-E Bypass Server Adapter\n\t0032  Silicom Dual port Copper Fast Ethernet 546 TAP/Bypass Server Adapter\n\t0034  Silicom Dual port Copper Giga Ethernet PCI-E BGE Bypass Server Adapter\n\t0035  Silicom Quad port Copper Giga Ethernet PCI-E BGE Bypass Server Adapter\n\t0036  Silicom Dual port Fiber Giga Ethernet PCI-E BGE Bypass Server Adapter\n\t0037  Silicom Dual port Copper Ethernet PCI-E Intel based Bypass Server Adapter\n\t0038  Silicom Quad port Copper Ethernet PCI-E Intel based Bypass Server Adapter\n\t0039  Silicom Dual port Fiber-SX Ethernet PCI-E Intel based Bypass Server Adapter\n\t003a  Silicom Dual port Fiber-LX Ethernet PCI-E Intel based Bypass Server Adapter\n\t003b  Silicom Dual port Fiber Ethernet PMC Intel based Bypass Server Adapter (PMCX2BPFI)\n\t003c  Silicom Dual port Copper Ethernet PCI-X BGE based Bypass Server Adapter (PXG2BPRB)\n\t003d  2-port Copper GBE Bypass with Caviume 1010 PCI-X\n\t003e  Silicom Dual port Fiber Giga Ethernet PCI-E 571 TAP/Bypass Server Adapter (PEG2TBFI)\n\t003f  Silicom Dual port Copper Giga Ethernet PCI-X 546 TAP/Bypass Server Adapter (PXG2TBI)\n\t0040  Silicom Quad port Fiber-SX Giga Ethernet 571 Bypass Server Adapter (PEG4BPFI)\n\t0042  4-port Copper GBE PMC-X Bypass\n\t0043  Silicom Quad port Fiber-SX Giga Ethernet 546 Bypass Server Adapter (PXG4BPFID)\n\t0045  Silicom 6 port Copper Giga Ethernet 546 Bypass Server Adapter (PXG6BPI)\n\t0046  4-port bypass PCI-E w disconnect low profile\n\t0047  Silicom Dual port Fiber-SX Giga Ethernet 571 Bypass Disconnect Server Adapter (PEG2BPFID)\n\t004a  Silicom Quad port Fiber-LX Giga Ethernet 571 Bypass Server Adapter (PEG4BPFI-LX)\n\t004d  Dual port Copper Giga Ethernet PCI-E Bypass Server Adapter\n\t0401  Gigabit Ethernet ExpressModule Bypass Server Adapter\n\t0420  Gigabit Ethernet ExpressModule Bypass Server Adapter\n\t0460  Gigabit Ethernet Express Module Bypass Server Adapter\n\t0461  Gigabit Ethernet ExpressModule Bypass Server Adapter\n\t0462  Gigabit Ethernet ExpressModule Bypass Server Adapter\n\t0470  Octal-port Copper Gigabit Ethernet Express Module Bypass Server Adapter\n\t0482  Dual-port Fiber (SR) 10 Gigabit Ethernet ExpressModule Bypass Server Adapter\n\t0483  Dual-port Fiber (LR) 10 Gigabit Ethernet ExpressModule Bypass Server Adapter\n1375  Argosystems Inc\n1376  LMC\n1377  Electronic Equipment Production & Distribution GmbH\n1378  Telemann Co. Ltd\n1379  Asahi Kasei Microsystems Co Ltd\n137a  Mark of the Unicorn Inc\n\t0001  PCI-324 Audiowire Interface\n137b  PPT Vision\n137c  Iwatsu Electric Co Ltd\n137d  Dynachip Corporation\n137e  Patriot Scientific Corporation\n137f  Japan Satellite Systems Inc\n1380  Sanritz Automation Co Ltd\n1381  Brains Co. Ltd\n1382  Marian - Electronic & Software\n\t0001  ARC88 audio recording card\n\t2008  Prodif 96 Pro sound system\n\t2048  Prodif Plus sound system\n\t2088  Marc 8 Midi sound system\n\t20c8  Marc A sound system\n\t4008  Marc 2 sound system\n\t4010  Marc 2 Pro sound system\n\t4048  Marc 4 MIDI sound system\n\t4088  Marc 4 Digi sound system\n\t4248  Marc X sound system\n\t4424  TRACE D4 Sound System\n1383  Controlnet Inc\n1384  Reality Simulation Systems Inc\n1385  Netgear\n\t006b  WA301 802.11b Wireless PCI Adapter\n\t4100  MA301 802.11b Wireless PCI Adapter\n\t4601  WAG511 802.11a/b/g Dual Band Wireless PC Card\n\t620a  GA620 Gigabit Ethernet\n\t630a  GA630 Gigabit Ethernet\n1386  Video Domain Technologies\n1387  Systran Corp\n1388  Hitachi Information Technology Co Ltd\n1389  Applicom International\n\t0001  PCI1500PFB [Intelligent fieldbus adaptor]\n138a  Fusion Micromedia Corp\n\t003d  VFS491 Validity Sensor\n138b  Tokimec Inc\n138c  Silicon Reality\n138d  Future Techno Designs pte Ltd\n138e  Basler GmbH\n138f  Patapsco Designs Inc\n1390  Concept Development Inc\n1391  Development Concepts Inc\n1392  Medialight Inc\n1393  Moxa Technologies Co Ltd\n\t0001  UC7000 Serial\n\t1020  CP-102 (2-port RS-232 PCI)\n\t1021  CP-102UL (2-port RS-232 Universal PCI)\n\t1022  CP-102U (2-port RS-232 Universal PCI)\n\t1023  CP-102UF\n\t1024  CP-102E (2-port RS-232 Smart PCI Express Serial Board)\n\t1025  CP-102EL (2-port RS-232 Smart PCI Express Serial Board)\n\t1040  Smartio C104H/PCI\n\t1041  CP104U (4-port RS-232 Universal PCI)\n\t1042  CP104JU (4-port RS-232 Universal PCI)\n\t1043  CP104EL (4-port RS-232 Smart PCI Express)\n\t1044  POS104UL (4-port RS-232 Universal PCI)\n\t1045  CP-104EL-A (4-port RS-232 PCI Express Serial Board)\n\t1080  CB108 (8-port RS-232 PC/104-plus Module)\n\t1140  CT-114 series\n\t1141  Industrio CP-114\n\t1142  CB114 (4-port RS-232/422/485 PC/104-plus Module)\n\t1143  CP-114UL (4-port RS-232/422/485 Smart Universal PCI Serial Board)\n\t1144  CP-114EL (4-port RS-232/422/485 Smart PCI Express Serial Board)\n\t1180  CP118U (8-port RS-232/422/485 Smart Universal PCI)\n\t1181  CP118EL (8-port RS-232/422/485 Smart PCI Express)\n\t1182  CP-118EL-A (8-port RS-232/422/485 PCI Express Serial Board)\n\t1320  CP132 (2-port RS-422/485 PCI)\n\t1321  CP132U (2-Port RS-422/485 Universal PCI)\n\t1322  CP-132EL (2-port RS-422/485 Smart PCI Express Serial Board)\n\t1340  CP134U (4-Port RS-422/485 Universal PCI)\n\t1341  CB134I (4-port RS-422/485 PC/104-plus Module)\n\t1380  CP138U (8-port RS-232/422/485 Smart Universal PCI)\n\t1680  Smartio C168H/PCI\n\t1681  CP-168U V2 Smart Serial Board (8-port RS-232)\n\t1682  CP-168EL (8-port RS-232 Smart PCI Express)\n\t1683  CP-168EL-A (8-port RS-232 PCI Express Serial Board)\n\t2040  Intellio CP-204J\n\t2180  Intellio C218 Turbo PCI\n\t3200  Intellio C320 Turbo PCI\n1394  Level One Communications\n\t0001  LXT1001 Gigabit Ethernet\n\t\t1186 4800  DGE-500SX\n\t\t1394 0001  NetCelerator Adapter\n1395  Ambicom Inc\n1396  Cipher Systems Inc\n1397  Cologne Chip Designs GmbH\n\t08b4  ISDN network Controller [HFC-4S]\n\t\t1397 08b4  HFC-4S [Cologne Chip HFC-4S Eval. Board]\n\t\t1397 b51a  HFC-4S [Allo.com BRI card]\n\t\t1397 b520  HFC-4S [IOB4ST]\n\t\t1397 b540  HFC-4S [Swyx SX2 QuadBri]\n\t\t1397 b550  HFC-4S [Junghanns.NET quadBRI]\n\t\t1397 b556  HFC-4S [Junghanns.NET duoBRI]\n\t\t1397 b559  HFC-4S [Junghanns.NET duoBRI miniPCI]\n\t\t1397 b560  HFC-4S [BeroNet BN4S0]\n\t\t1397 b566  HFC-4S [BeroNet BN2S0]\n\t\t1397 b567  HFC-4S [BeroNet BN1S0 miniPCI]\n\t\t1397 b568  HFC-4S [BeroNet BN4S0 miniPCI]\n\t\t1397 b569  HFC-4S [BeroNet BN2S0 miniPCI]\n\t\t1397 b620  HFC-4S\n\t\t1397 b752  HFC-4S [Junghanns.NET quadBRI PCIe]\n\t\t1397 b761  HFC-4S [BeroNet BN2S0 PCIe]\n\t\t1397 b762  HFC-4S [BeroNet BN4S0 PCIe]\n\t\t1397 e884  HFC-4S [OpenVox B200P]\n\t\t1397 e888  HFC-4S [OpenVox B200P / B400P]\n\t16b8  ISDN network Controller [HFC-8S]\n\t\t1397 16b8  HFC-8S [Cologne Chip HFC-8S Eval. Board]\n\t\t1397 b521  HFC-8S [IOB4ST Recording]\n\t\t1397 b522  HFC-8S [IOB8ST]\n\t\t1397 b552  HFC-8S [Junghanns.NET octoBRI]\n\t\t1397 b55b  HFC-8S [Junghanns.NET octoBRI]\n\t\t1397 b562  HFC-8S [BeroNet BN8S0]\n\t\t1397 b56b  HFC-8S [BeroNet BN8S0+]\n\t\t1397 b622  HFC-8S\n\t\t1397 e998  HFC-8S [OpenVox B800P]\n\t2bd0  ISDN network controller [HFC-PCI]\n\t\t0675 1704  ISDN Adapter (PCI Bus, D, C)\n\t\t0675 1708  ISDN Adapter (PCI Bus, D, C, ACPI)\n\t\t1397 2bd0  ISDN Board\n\t\te4bf 1000  CI1-1-Harp\n\t30b1  ISDN network Controller [HFC-E1]\n\t\t1397 30b1  HFC-E1 [Cologne Chip HFC-E1 Eval. Board]\n\t\t1397 b523  HFC-E1 [IOB1E1]\n\t\t1397 b543  HFC-E1 [Swyx SX2 SinglePRI V2]\n\t\t1397 b544  HFC-E1 [Swyx SX2 DualPRI V2]\n\t\t1397 b553  HFC-E1 [Junghanns.NET singleE1]\n\t\t1397 b554  HFC-E1 [Junghanns.NET doubleE1]\n\t\t1397 b555  HFC-E1 [Junghanns.NET doubleE1 2.0]\n\t\t1397 b55a  HFC-E1 [Junghanns.NET singleE1 miniPCI]\n\t\t1397 b563  HFC-E1 [beroNet BN1E1]\n\t\t1397 b564  HFC-E1 [beroNet BN2E1]\n\t\t1397 b565  HFC-E1 [beroNet BN2E1+]\n\t\t1397 b56a  HFC-E1 [beroNet BN1E1 miniPCI]\n\tb700  ISDN network controller PrimuX S0 [HFC-PCI]\n\tf001  GSM Network Controller [HFC-4GSM]\n1398  Clarion co. Ltd\n1399  Rios systems Co Ltd\n139a  Alacritech Inc\n\t0001  Quad Port 10/100 Server Accelerator\n\t0003  Single Port 10/100 Server Accelerator\n\t0005  Single Port Gigabit Server Accelerator\n139b  Mediasonic Multimedia Systems Ltd\n139c  Quantum 3d Inc\n139d  EPL limited\n139e  Media4\n139f  Aethra s.r.l.\n13a0  Crystal Group Inc\n13a1  Kawasaki Heavy Industries Ltd\n13a2  Ositech Communications Inc\n13a3  Hifn Inc.\n\t0005  7751 Security Processor\n\t0006  6500 Public Key Processor\n\t0007  7811 Security Processor\n\t0012  7951 Security Processor\n\t0014  78XX Security Processor\n\t0016  8065 Security Processor\n\t0017  8165 Security Processor\n\t0018  8154 Security Processor\n\t001d  7956 Security Processor\n\t001f  7855 Security Processor\n\t0020  7955 Security Processor\n\t0026  8155 Security Processor\n\t002e  9630 Compression Processor\n\t002f  9725 Compression and Security Processor\n\t\t13a3 1600  DR1600 Acceleration Card\n\t\t13a3 1605  DR1605 Acceleration Card\n\t\t13a3 1610  DR1610 Acceleration Card\n\t\t13a3 1615  DR1615 Acceleration Card\n\t\t13a3 1620  DR1620 Acceleration Card\n\t\t13a3 1625  DR1625 Acceleration Card\n\t0033  8201 Acceleration Processor\n\t\t13a3 0036  DX1710 Acceleration Card\n\t0034  8202 Acceleration Processor\n\t\t13a3 0036  DX1720 Acceleration Card\n\t0035  8203 Acceleration Processor\n\t\t13a3 0036  DX1730 Acceleration Card\n\t0037  8204 Acceleration Processor\n\t\t13a3 0036  DX1740 Acceleration Card\n\t9240  XR9240 Compression and Security Coprocessor [Panther II]\n\t\t13a3 9200  DX2040 Compression and Security Acceleration Card [Panther II]\n13a4  Rascom Inc\n13a5  Audio Digital Imaging Inc\n13a6  Videonics Inc\n13a7  Teles AG\n13a8  Exar Corp.\n\t0152  XR17C/D152 Dual PCI UART\n\t0154  XR17C154 Quad UART\n\t0158  XR17C158 Octal UART\n\t0252  XR17V252 Dual UART PCI controller\n\t0254  XR17V254 Quad UART PCI controller\n\t0258  XR17V258 Octal UART PCI controller\n\t0352  XR17V3521 Dual PCIe UART\n\t\t4c52 9252  LRUS9252H 2-Port RS232 Serial Adapter\n13a9  Siemens Medical Systems, Ultrasound Group\n13aa  Broadband Networks Inc\n13ab  Arcom Control Systems Ltd\n13ac  Motion Media Technology Ltd\n13ad  Nexus Inc\n13ae  ALD Technology Ltd\n13af  T.Sqware\n13b0  Maxspeed Corp\n13b1  Tamura corporation\n13b2  Techno Chips Co. Ltd\n13b3  Lanart Corporation\n13b4  Wellbean Co Inc\n13b5  ARM\n13b6  Dlog GmbH\n13b7  Logic Devices Inc\n13b8  Nokia Telecommunications oy\n13b9  Elecom Co Ltd\n13ba  Oxford Instruments\n13bb  Sanyo Technosound Co Ltd\n13bc  Bitran Corporation\n13bd  Sharp corporation\n13be  Miroku Jyoho Service Co. Ltd\n13bf  Sharewave Inc\n13c0  Microgate Corporation\n\t0010  SyncLink Adapter v1\n\t0020  SyncLink SCC Adapter\n\t0030  SyncLink Multiport Adapter\n\t0070  SyncLink GT Adapter\n\t0080  SyncLink GT4 Adapter\n\t00a0  SyncLink GT2 Adapter\n\t0210  SyncLink Adapter v2\n13c1  3ware Inc\n\t1000  5xxx/6xxx-series PATA-RAID\n\t1001  7xxx/8xxx-series PATA/SATA-RAID\n\t\t13c1 1001  7xxx/8xxx-series PATA/SATA-RAID\n\t1002  9xxx-series SATA-RAID\n\t1003  9550SX SATA-II RAID PCI-X\n\t1004  9650SE SATA-II RAID PCIe\n\t1005  9690SA SAS/SATA-II RAID PCIe\n\t1010  9750 SAS2/SATA-II RAID PCIe\n13c2  Technotrend Systemtechnik GmbH\n\t000e  Technotrend/Hauppauge DVB card rev2.3\n\t1019  TTechnoTrend-budget DVB S2-3200\n13c3  Janz Computer AG\n13c4  Phase Metrics\n13c5  Alphi Technology Corp\n13c6  Condor Engineering Inc\n\t0520  CEI-520 A429 Card\n\t0620  CEI-620 A429 Card\n\t0820  CEI-820 A429 Card\n\t0830  CEI-830 A429 Card\n\t1004  P-SER Multi-channel PMC to RS-485/422/232 adapter\n13c7  Blue Chip Technology Ltd\n\t0adc  PCI-ADC\n\t0b10  PCI-PIO\n\t0d10  PCI-DIO\n\t524c  PCI-RLY\n\t5744  PCI-WDT\n13c8  Apptech Inc\n13c9  Eaton Corporation\n13ca  Iomega Corporation\n13cb  Yano Electric Co Ltd\n13cc  BARCO\n13cd  Compatible Systems Corporation\n13ce  Cocom A/S\n13cf  Studio Audio & Video Ltd\n13d0  Techsan Electronics Co Ltd\n\t2103  B2C2 FlexCopII DVB chip / Technisat SkyStar2 DVB card\n\t2104  B2C2 FlexCopIII DVB chip / Technisat SkyStar2 DVB card (rev 01)\n\t2200  B2C2 FlexCopIII DVB chip / Technisat SkyStar2 DVB card\n13d1  Abocom Systems Inc\n\tab02  ADMtek Centaur-C rev 17 [D-Link DFE-680TX] CardBus Fast Ethernet Adapter\n\tab03  21x4x DEC-Tulip compatible 10/100 Ethernet\n\tab06  RTL8139 [FE2000VX] CardBus Fast Ethernet Attached Port Adapter\n\tab08  21x4x DEC-Tulip compatible 10/100 Ethernet\n13d2  Shark Multimedia Inc\n13d4  Graphics Microsystems Inc\n13d5  Media 100 Inc\n13d6  K.I. Technology Co Ltd\n13d7  Toshiba Engineering Corporation\n13d8  Phobos corporation\n13d9  Apex PC Solutions Inc\n13da  Intresource Systems pte Ltd\n13db  Janich & Klass Computertechnik GmbH\n13dc  Netboost Corporation\n13dd  Multimedia Bundle Inc\n13de  ABB Robotics Products AB\n13df  E-Tech Inc\n\t0001  PCI56RVP Modem\n\t\t13df 0001  PCI56RVP Modem\n13e0  GVC Corporation\n13e1  Silicom Multimedia Systems Inc\n13e2  Dynamics Research Corporation\n13e3  Nest Inc\n13e4  Calculex Inc\n13e5  Telesoft Design Ltd\n13e6  Argosy research Inc\n13e7  NAC Incorporated\n13e8  Chip Express Corporation\n13e9  Intraserver Technology Inc\n13ea  Dallas Semiconductor\n13eb  Hauppauge Computer Works Inc\n13ec  Zydacron Inc\n\t000a  NPC-RC01 Remote control receiver\n13ed  Raytheion E-Systems\n13ee  Hayes Microcomputer Products Inc\n13ef  Coppercom Inc\n13f0  Sundance Technology Inc / IC Plus Corp\n\t0200  IC Plus IP100A Integrated 10/100 Ethernet MAC + PHY\n\t\t1043 8213  NX1001\n\t0201  ST201 Sundance Ethernet\n\t1021  TC902x Gigabit Ethernet\n\t1023  IP1000 Family Gigabit Ethernet\n\t\t1043 8180  NX1101\n13f1  Oce' - Technologies B.V.\n13f2  Ford Microelectronics Inc\n13f3  Brocade Communications Systems, Inc.\n13f4  Troika Networks, Inc.\n\t1401  Zentai Fibre Channel Adapter\n13f5  Kansai Electric Co. Ltd\n13f6  C-Media Electronics Inc\n\t0011  CMI8738\n\t0100  CM8338A\n\t\t13f6 ffff  CMI8338/C3DX PCI Audio Device\n\t0101  CM8338B\n\t\t13f6 0101  CMI8338-031 PCI Audio Device\n\t0111  CMI8738/CMI8768 PCI Audio\n\t\t1019 0970  P6STP-FL motherboard\n\t\t1043 8035  CUSI-FX motherboard\n\t\t1043 8077  CMI8738 6-channel audio controller\n\t\t1043 80e2  CMI8738 6ch-MX\n\t\t13f6 0111  CMI8738/C3DX PCI Audio Device\n\t\t13f6 9761  Theatron Agrippa\n\t\t153b 1144  Aureon 5.1\n\t\t153b 1170  Aureon 7.1\n\t\t1681 a000  Gamesurround MUSE XL\n\t\t17ab 0604  PSC604 Dynamic Edge\n\t\t17ab 0605  PSC605 Sonic Edge\n\t\t17ab 7777  PSC605 Sonic Edge\n\t\t270f 1103  CT-7NJS Ultra motherboard\n\t\t270f f462  7NJL1 motherboard\n\t\t584d 3731  Digital X-Mystique\n\t\t584d 3741  X-Plosion 7.1\n\t\t584d 3751  X-Raider 7.1\n\t\t584d 3761  X-Mystique 7.1 LP\n\t\t584d 3771  X-Mystique 7.1 LP Value\n\t\t7284 8384  Striker 7.1\n\t0211  CM8738\n\t5011  CM8888 [Oxygen Express]\n\t\t13f6 5011  HDA Controller\n\t8788  CMI8788 [Oxygen HD Audio]\n\t\t1043 8269  Virtuoso 200 (Xonar D2)\n\t\t1043 8275  Virtuoso 100 (Xonar DX)\n\t\t1043 82b7  Virtuoso 200 (Xonar D2X)\n\t\t1043 8314  Virtuoso 200 (Xonar HDAV1.3)\n\t\t1043 8327  Virtuoso 100 (Xonar DX)\n\t\t1043 834f  Virtuoso 100 (Xonar D1)\n\t\t1043 835c  Virtuoso 100 (Xonar Essence STX)\n\t\t1043 835d  Virtuoso 100 (Xonar ST)\n\t\t1043 835e  Virtuoso 200 (Xonar HDAV1.3 Slim)\n\t\t1043 838e  Virtuoso 66 (Xonar DS)\n\t\t1043 8428  Virtuoso 100 (Xonar Xense)\n\t\t1043 8467  CMI8786 (Xonar DG)\n\t\t1043 8521  CMI8786 (Xonar DGX)\n\t\t1043 8522  Xonar DSX\n\t\t1043 85f4  Virtuoso 100 (Xonar Essence STX II)\n\t\t13f6 8782  PCI 2.0 HD Audio\n\t\t13f6 ffff  CMI8787-HG2PCI\n\t\t14c3 1710  HiFier Fantasia\n\t\t14c3 1711  HiFier Serenade\n\t\t14c3 1713  HiFier Serenade III\n\t\t1a58 0910  Barracuda AC-1\n\t\t415a 5431  X-Meridian 7.1\n\t\t5431 017a  X-Meridian 7.1 2G\n\t\t584d 3781  HDA X-Purity 7.1 Platinum\n\t\t7284 9761  CLARO\n\t\t7284 9781  CLARO halo\n\t\t7284 9783  eCLARO\n\t\t7284 9787  CLARO II\n13f7  Wildfire Communications\n13f8  Ad Lib Multimedia Inc\n13f9  NTT Advanced Technology Corp.\n13fa  Pentland Systems Ltd\n13fb  Aydin Corp\n13fc  Computer Peripherals International\n13fd  Micro Science Inc\n13fe  Advantech Co. Ltd\n\t0071  PCIE-1761H, 8-ch Relay and 8-ch Isolated Digital Input Card\n\t1240  PCI-1240 4-channel stepper motor controller card\n\t1600  PCI-16xx series PCI multiport serial board (function 0)\n# This board has two PCI functions, appears as two PCI devices\n\t\t1601 0002  PCI-1601 2-port unisolated RS-422/485\n# This board has two PCI functions, appears as two PCI devices\n\t\t1602 0002  PCI-1602 2-port isolated RS-422/485\n\t\t1612 0004  PCI-1612 4-port RS-232/422/485\n\t1603  PCI-1603 2-port isolated RS-232/current loop\n\t1604  PCI-1604 2-port RS-232\n\t1680  PCI-1680 Rev.A1 2-port CAN-bus with isolation protection\n\t16ff  PCI-16xx series PCI multiport serial board (function 1: RX/TX steering CPLD)\n\t\t1601 0000  PCI-1601 2-port unisolated RS-422/485 PCI communications card\n\t\t1602 0000  PCI-1602 2-port isolated RS-422/485\n\t\t1612 0000  PCI-1612 4-port RS-232/422/485\n\t1711  PCI-1711 16-channel data acquisition card 12-bit, 100kS/s\n\t1713  PCI-1713 32-channel isolated analog input card\n\t1733  PCI-1733 32-channel isolated digital input card\n\t1734  PCI-1734 32-channel isolated digital output card\n\t1752  PCI-1752 64-channel Isolated Digital Output Card\n\t1754  PCI-1754 64-channel Isolated Digital Input Card\n\t1756  PCI-1756 64-ch Isolated Digital I/O PCI Card\n\ta004  PCI-1612 4-port RS-232/422/485\n# FPGA bridge to two SJA1000\n\tc302  MIOe-3680 2-Port CAN-Bus MIOe Module with Isolation Protection\n13ff  Silicon Spice Inc\n1400  Artx Inc\n\t1401  9432 TX\n1401  CR-Systems A/S\n1402  Meilhaus Electronic GmbH\n\t0630  ME-630\n\t0940  ME-94\n\t0950  ME-95\n\t0960  ME-96\n\t1000  ME-1000\n\t100a  ME-1000\n\t100b  ME-1000\n\t1400  ME-1400\n\t140a  ME-1400A\n\t140b  ME-1400B\n\t140c  ME-1400C\n\t140d  ME-1400D\n\t140e  ME-1400E\n\t14ea  ME-1400EA\n\t14eb  ME-1400EB\n\t1604  ME-1600/4U\n\t1608  ME-1600/8U\n\t160c  ME-1600/12U\n\t160f  ME-1600/16U\n\t168f  ME-1600/16U8I\n\t4610  ME-4610\n\t4650  ME-4650\n\t4660  ME-4660\n\t4661  ME-4660I\n\t4662  ME-4660\n\t4663  ME-4660I\n\t4670  ME-4670\n\t4671  ME-4670I\n\t4672  ME-4670S\n\t4673  ME-4670IS\n\t4680  ME-4680\n\t4681  ME-4680I\n\t4682  ME-4680S\n\t4683  ME-4680IS\n\t6004  ME-6000/4\n\t6008  ME-6000/8\n\t600f  ME-6000/16\n\t6014  ME-6000I/4\n\t6018  ME-6000I/8\n\t601f  ME-6000I/16\n\t6034  ME-6000ISLE/4\n\t6038  ME-6000ISLE/8\n\t603f  ME-6000ISLE/16\n\t6044  ME-6000/4/DIO\n\t6048  ME-6000/8/DIO\n\t604f  ME-6000/16/DIO\n\t6054  ME-6000I/4/DIO\n\t6058  ME-6000I/8/DIO\n\t605f  ME-6000I/16/DIO\n\t6074  ME-6000ISLE/4/DIO\n\t6078  ME-6000ISLE/8/DIO\n\t607f  ME-6000ISLE/16/DIO\n\t6104  ME-6100/4\n\t6108  ME-6100/8\n\t610f  ME-6100/16\n\t6114  ME-6100I/4\n\t6118  ME-6100I/8\n\t611f  ME-6100I/16\n\t6134  ME-6100ISLE/4\n\t6138  ME-6100ISLE/8\n\t613f  ME-6100ISLE/16\n\t6144  ME-6100/4/DIO\n\t6148  ME-6100/8/DIO\n\t614f  ME-6100/16/DIO\n\t6154  ME-6100I/4/DIO\n\t6158  ME-6100I/8/DIO\n\t615f  ME-6100I/16/DIO\n\t6174  ME-6100ISLE/4/DIO\n\t6178  ME-6100ISLE/8/DIO\n\t617f  ME-6100ISLE/16/DIO\n\t6259  ME-6200I/9/DIO\n\t6359  ME-6300I/9/DIO\n\t810a  ME-8100A\n\t810b  ME-8100B\n\t820a  ME-8200A\n\t820b  ME-8200B\n1403  Ascor Inc\n1404  Fundamental Software Inc\n1405  Excalibur Systems Inc\n1406  Oce' Printing Systems GmbH\n1407  Lava Computer mfg Inc\n\t0100  Lava Dual Serial\n\t0101  Lava Quatro A\n\t0102  Lava Quatro B\n\t0110  Lava DSerial-PCI Port A\n\t0111  Lava DSerial-PCI Port B\n\t0120  Quattro-PCI A\n\t0121  Quattro-PCI B\n\t0180  Lava Octo A\n\t0181  Lava Octo B\n\t0200  Lava Port Plus\n\t0201  Lava Quad A\n\t0202  Lava Quad B\n\t0220  Lava Quattro PCI Ports A/B\n\t0221  Lava Quattro PCI Ports C/D\n\t0400  Lava 8255-PIO-PCI\n\t0500  Lava Single Serial\n\t0520  Lava RS422-SS-PCI\n\t0600  Lava Port 650\n\t8000  Lava Parallel\n\t8001  Dual parallel port controller A\n\t8002  Lava Dual Parallel port A\n\t8003  Lava Dual Parallel port B\n\t8800  BOCA Research IOPPAR\n1408  Aloka Co. Ltd\n1409  Timedia Technology Co Ltd\n\t7168  PCI2S550 (Dual 16550 UART)\n\t\t1409 0002  SER4036A3V (2x RS232 port)\n\t\t1409 4027  SER4027A (1x RS232 port)\n\t\t1409 4037  SER4037A(L) [SUNIX SUN1889] (2x RS232 port)\n# Single DC-37 connector\n\t\t1409 4056  SER4056A (4x RS232)\n\t\t1409 5027  SER4027D\n\t\t1409 5037  SER4037D (2x RS232 port)\n# Single DC-62 connector\n\t\t1409 5066  SER4066R (8x RS232)\n# 4x 8p8c connectors\n\t\t1409 6056  SER4056D (4x RS232 port)\n\t7268  SUN1888 (Dual IEEE1284 parallel port)\n\t\t1409 0103  PAR4008A\n\t\t1409 0104  PAR4018A\n140a  DSP Research Inc\n# Formerly RAMiX, GE Fanuc, GE Intelligent Platforms\n140b  Abaco Systems, Inc.\n140c  Elmic Systems Inc\n140d  Matsushita Electric Works Ltd\n140e  Goepel Electronic GmbH\n140f  Salient Systems Corp\n1410  Midas lab Inc\n1411  Ikos Systems Inc\n# Nee IC Ensemble Inc.\n1412  VIA Technologies Inc.\n\t1712  ICE1712 [Envy24] PCI Multi-Channel I/O Controller\n\t\t1412 1712  Hoontech ST Audio DSP 24\n\t\t1412 d630  M-Audio Delta 1010\n\t\t1412 d631  M-Audio Delta DiO\n\t\t1412 d632  M-Audio Delta 66\n\t\t1412 d633  M-Audio Delta 44\n\t\t1412 d634  M-Audio Delta Audiophile 2496\n\t\t1412 d635  M-Audio Delta TDIF\n\t\t1412 d637  M-Audio Delta RBUS\n\t\t1412 d638  M-Audio Delta 410\n\t\t1412 d63b  M-Audio Delta 1010LT\n\t\t1412 d63c  Digigram VX442\n\t\t1416 1712  Hoontech ST Audio DSP 24 Media 7.1\n\t\t153b 1115  EWS88 MT\n\t\t153b 1125  EWS88 MT (Master)\n\t\t153b 112b  EWS88 D\n\t\t153b 112c  EWS88 D (Master)\n\t\t153b 1130  EWX 24/96\n\t\t153b 1138  DMX 6fire 24/96\n\t\t153b 1151  PHASE88\n\t\t16ce 1040  Edirol DA-2496\n\t1724  VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller\n\t\t10b0 0200  Hollywood@Home 7.1\n\t\t1412 1724  Albatron PX865PE 7.1\n\t\t1412 3630  M-Audio Revolution 7.1\n\t\t1412 3631  M-Audio Revolution 5.1\n\t\t1412 3632  M-Audio Audiophile 192\n\t\t153b 1145  Aureon 7.1 Space\n\t\t153b 1147  Aureon 5.1 Sky\n\t\t153b 1150  PHASE 22\n\t\t153b 1153  Aureon 7.1 Universe\n\t\t17ab 1906  PSC 724 [Ultimate Edge]\n\t\t270f f641  ZNF3-150\n\t\t270f f645  ZNF3-250\n\t\t3130 4154  MAYA 44 MKII\n1413  Addonics\n1414  Microsoft Corporation\n\t0001  MN-120 (ADMtek Centaur-C based)\n\t0002  MN-130 (ADMtek Centaur-P based)\n# Virtual Video Card Device for Windows Remote Desktop (RDP)\n\t008c  Basic Render Driver\n\t008e  Basic Render Driver\n\t5353  Hyper-V virtual VGA\n\t5801  XMA Decoder (Xenon)\n\t5802  SATA Controller - CdRom (Xenon)\n\t5803  SATA Controller - Disk (Xenon)\n\t5804  OHCI Controller 0 (Xenon)\n\t5805  EHCI Controller 0 (Xenon)\n\t5806  OHCI Controller 1 (Xenon)\n\t5807  EHCI Controller 1 (Xenon)\n\t580a  Fast Ethernet Adapter (Xenon)\n\t580b  Secure Flash Controller (Xenon)\n\t580d  System Management Controller (Xenon)\n\t5811  Xenos GPU (Xenon)\n\t5821  Xenos GPU (Zephyr/Falcon)\n\t5831  Xenos GPU (Jasper)\n\t5841  Xenos GPU (Slim)\n1415  Oxford Semiconductor Ltd\n\t8401  OX9162 Mode 1 (8-bit bus)\n\t8403  OX9162 Mode 0 (parallel port)\n\t9500  OX16PCI954 (Quad 16950 UART) function 0 (Disabled)\n\t9501  OX16PCI954 (Quad 16950 UART) function 0 (Uart)\n\t\t12c4 0201  Titan/cPCI (2 port)\n\t\t12c4 0202  Titan/cPCI (4 port)\n\t\t12c4 0203  Titan/cPCI (8 port)\n\t\t12c4 0210  Titan/104-Plus (8 port, p1-4)\n\t\t131f 2050  CyberPro (4-port)\n# Model IO1085, Part No: JJ-P46012\n\t\t131f 2051  CyberSerial 4S Plus\n\t\t15ed 2000  MCCR Serial p0-3 of 8\n\t\t15ed 2001  MCCR Serial p0-3 of 16\n\t9505  OXuPCI952 (Dual 16C950 UART)\n\t950a  EXSYS EX-41092 Dual 16950 Serial adapter\n\t950b  OXCB950 Cardbus 16950 UART\n\t9510  OX16PCI954 (Quad 16950 UART) function 1 (Disabled)\n\t\t12c4 0200  Titan/cPCI (Unused)\n\t9511  OX16PCI954 (Quad 16950 UART) function 1 (8bit bus)\n\t\t12c4 0211  Titan/104-Plus (8 port, p5-8)\n\t\t15ed 2000  MCCR Serial p4-7 of 8\n\t\t15ed 2001  MCCR Serial p4-15 of 16\n\t9512  OX16PCI954 (Quad 16950 UART) function 1 (32bit bus)\n\t9513  OX16PCI954 (Quad 16950 UART) function 1 (parallel port)\n\t9521  OX16PCI952 (Dual 16950 UART)\n\t9523  OX16PCI952 Integrated Parallel Port\n# Multifunction device with 3 function bits in ID\n\tc000  OXPCIe840 Parallel Port\n\tc004  OXPCIe840 Parallel Port\n\tc006  OXPCIe840 GPIO\n# Multifunction device with reset straps and function bits in ID\n\tc100  OXPCIe952 Parallel Port\n\tc101  OXPCIe952 Legacy 950 UART\n\tc104  OXPCIe952 Parallel Port\n\tc105  OXPCIe952 Legacy 950 UART\n\tc106  OXPCIe952 GPIO\n\tc108  OXPCIe952 Parallel Port\n\tc109  OXPCIe952 Legacy 950 UART\n\tc10c  OXPCIe952 Parallel Port\n\tc10d  OXPCIe952 Legacy 950 UART\n\tc10e  OXPCIe952 GPIO\n\tc110  OXPCIe952 Parallel Port\n\tc114  OXPCIe952 Parallel Port\n\tc118  OXPCIe952 Parallel Port\n\tc11b  OXPCIe952 Native 950 UART\n\tc11c  OXPCIe952 Parallel Port\n\tc11e  OXPCIe952 GPIO\n\tc11f  OXPCIe952 Native 950 UART\n\tc120  OXPCIe952 Legacy 950 UART\n\tc124  OXPCIe952 Legacy 950 UART\n\tc126  OXPCIe952 GPIO\n\tc128  OXPCIe952 Legacy 950 UART\n\tc12c  OXPCIe952 Legacy 950 UART\n\tc12e  OXPCIe952 GPIO\n\tc134  OXPCIe952 GPIO\n\tc138  OXPCIe952 Native 950 UART\n\tc13c  OXPCIe952 GPIO\n\tc13d  OXPCIe952 Native 950 UART\n\tc140  OXPCIe952 Legacy 950 UART #1\n\tc141  OXPCIe952 Legacy 950 UART #2\n\tc144  OXPCIe952 Legacy 950 UART #1\n\tc145  OXPCIe952 Legacy 950 UART #2\n\tc146  OXPCIe952 GPIO\n\tc148  OXPCIe952 Legacy 950 UART #1\n\tc149  OXPCIe952 Legacy 950 UART #2\n\tc14c  OXPCIe952 Legacy 950 UART #1\n\tc14d  OXPCIe952 Legacy 950 UART #2\n\tc14e  OXPCIe952 GPIO\n\tc154  OXPCIe952 GPIO\n\tc158  OXPCIe952 Dual Native 950 UART\n\t\te4bf c504  CP4-SCAT Wireless Technologies Carrier Board\n\t\te4bf d551  DU1-MUSTANG Dual-Port RS-485 Interface\n\tc15c  OXPCIe952 GPIO\n\tc15d  OXPCIe952 Dual Native 950 UART\n# Multifunction device with 4 function bits in ID\n\tc204  OXPCIe954 GPIO\n\tc208  OXPCIe954 Quad Native 950 UART\n\tc20c  OXPCIe954 GPIO\n\tc20d  OXPCIe954 Quad Native 950 UART\n# Multifunction device with 4 function bits in ID\n\tc304  OXPCIe958 GPIO\n\tc308  OXPCIe958 Quad Native 950 UART\n\tc30c  OXPCIe958 GPIO\n\tc30d  OXPCIe958 Quad Native 950 UART\n# Multifunction device with 8 function bits in ID\n\tc530  OXPCIe200 Dual OHCI USB Controller (ULPI/R-ULPI)\n\tc531  OXPCIe200 Dual EHCI USB Controller (ULPI/R-ULPI)\n\tc534  OXPCIe200 Dual OHCI USB Controller (ULPI/R-ULPI)\n\tc535  OXPCIe200 Dual EHCI USB Controller (ULPI/R-ULPI)\n\tc536  OXPCIe200 GPIO\n\tc538  OXPCIe200 Dual OHCI USB Controller (ULPI/R-ULPI)\n\tc539  OXPCIe200 Dual EHCI USB Controller (ULPI/R-ULPI)\n\tc53b  OXPCIe200 Native 950 UART\n\tc53c  OXPCIe200 Dual OHCI USB Controller (ULPI/R-ULPI)\n\tc53d  OXPCIe200 Dual EHCI USB Controller (ULPI/R-ULPI)\n\tc53e  OXPCIe200 GPIO\n\tc53f  OXPCIe200 Native 950 UART\n\tc540  OXPCIe200 Dual OHCI USB Controller (R-ULPI)\n\tc541  OXPCIe200 Dual EHCI USB Controller (R-ULPI)\n\tc544  OXPCIe200 Dual OHCI USB Controller (R-ULPI)\n\tc545  OXPCIe200 Dual EHCI USB Controller (R-ULPI)\n\tc546  OXPCIe200 GPIO\n\tc548  OXPCIe200 Dual OHCI USB Controller (R-ULPI)\n\tc549  OXPCIe200 Dual EHCI USB Controller (R-ULPI)\n\tc54b  OXPCIe200 Native 950 UART\n\tc54c  OXPCIe200 Dual OHCI USB Controller (R-ULPI)\n\tc54d  OXPCIe200 Dual EHCI USB Controller (R-ULPI)\n\tc54e  OXPCIe200 Dual GPIO\n\tc54f  OXPCIe200 Native 950 UART\n\tc560  OXPCIe200 Dual OHCI USB Controller (ULPI/analog)\n\tc561  OXPCIe200 EHCI USB Controller (ULPI)\n\tc564  OXPCIe200 Dual OHCI USB Controller (ULPI/analog)\n\tc565  OXPCIe200 EHCI USB Controller (ULPI)\n\tc566  OXPCIe200 GPIO\n\tc568  OXPCIe200 Dual OHCI USB Controller (ULPI/analog)\n\tc569  OXPCIe200 EHCI USB Controller (ULPI)\n\tc56b  OXPCIe200 Native 950 UART\n\tc56c  OXPCIe200 Dual OHCI USB Controller (ULPI/analog)\n\tc56d  OXPCIe200 EHCI USB Controller (ULPI)\n\tc56e  OXPCIe200 GPIO\n\tc56f  OXPCIe200 Native 950 UART\n\tc570  OXPCIe200 Dual OHCI USB Controller (R-ULPI/analog)\n\tc571  OXPCIe200 EHCI USB Controller (R-ULPI)\n\tc574  OXPCIe200 Dual OHCI USB Controller (R-ULPI/analog)\n\tc575  OXPCIe200 EHCI USB Controller (R-ULPI)\n\tc576  OXPCIe200 GPIO\n\tc578  OXPCIe200 Dual OHCI USB Controller (R-ULPI/analog)\n\tc579  OXPCIe200 EHCI USB Controller (R-ULPI)\n\tc57b  OXPCIe200 Native 950 UART\n\tc57c  OXPCIe200 Dual OHCI USB Controller (R-ULPI/analog)\n\tc57d  OXPCIe200 EHCI USB Controller (R-ULPI)\n\tc57e  OXPCIe200 GPIO\n\tc57f  OXPCIe200 Native 950 UART\n\tc5a0  OXPCIe200 OHCI USB Controller (ULPI)\n\tc5a1  OXPCIe200 EHCI USB Controller (ULPI)\n\tc5a2  OXPCIe200 Programmable Memory Interface\n\tc5a4  OXPCIe200 OHCI USB Controller (ULPI)\n\tc5a5  OXPCIe200 EHCI USB Controller (ULPI)\n\tc5a6  OXPCIe200 Programmable Memory Interface & GPIO\n\tc5a8  OXPCIe200 OHCI USB Controller (ULPI)\n\tc5a9  OXPCIe200 EHCI USB Controller (ULPI)\n\tc5aa  OXPCIe200 Programmable Memory Interface\n\tc5ab  OXPCIe200 Native 950 UART\n\tc5ac  OXPCIe200 OHCI USB Controller (ULPI)\n\tc5ad  OXPCIe200 EHCI USB Controller (ULPI)\n\tc5ae  OXPCIe200 Programmable Memory Interface & GPIO\n\tc5af  OXPCIe200 Native 950 UART\n\tc5b0  OXPCIe200 OHCI USB Controller (R-ULPI)\n\tc5b1  OXPCIe200 EHCI USB Controller (R-ULPI)\n\tc5b2  OXPCIe200 Programmable Memory Interface\n\tc5b4  OXPCIe200 OHCI USB Controller (R-ULPI)\n\tc5b5  OXPCIe200 EHCI USB Controller (R-ULPI)\n\tc5b6  OXPCIe200 Programmable Memory Interface & GPIO\n\tc5b8  OXPCIe200 OHCI USB Controller (R-ULPI)\n\tc5b9  OXPCIe200 EHCI USB Controller (R-ULPI)\n\tc5ba  OXPCIe200 Programmable Memory Interface\n\tc5bb  OXPCIe200 Native 950 UART\n\tc5bc  OXPCIe200 OHCI USB Controller (R-ULPI)\n\tc5bd  OXPCIe200 EHCI USB Controller (R-ULPI)\n\tc5be  OXPCIe200 Programmable Memory Interface & GPIO\n\tc5bf  OXPCIe200 Native 950 UART\n\tc5c0  OXPCIe200 OHCI USB Controller (analog)\n\tc5c2  OXPCIe200 Programmable Memory Interface\n\tc5c4  OXPCIe200 OHCI USB Controller (analog)\n\tc5c6  OXPCIe200 Programmable Memory Interface & GPIO\n\tc5c8  OXPCIe200 OHCI USB Controller (analog)\n\tc5ca  OXPCIe200 Programmable Memory Interface\n\tc5cb  OXPCIe200 Native 950 UART\n\tc5cc  OXPCIe200 OHCI USB Controller (analog)\n\tc5ce  OXPCIe200 Programmable Memory Interface & GPIO\n\tc5cf  OXPCIe200 Native 950 UART\n1416  Multiwave Innovation pte Ltd\n1417  Convergenet Technologies Inc\n1418  Kyushu electronics systems Inc\n1419  Excel Switching Corp\n141a  Apache Micro Peripherals Inc\n141b  Zoom Telephonics Inc\n141d  Digitan Systems Inc\n141e  Fanuc Ltd\n141f  Visiontech Ltd\n1420  Psion Dacom plc\n\t8002  Gold Card NetGlobal 56k+10/100Mb CardBus (Ethernet part)\n\t8003  Gold Card NetGlobal 56k+10/100Mb CardBus (Modem part)\n1421  Ads Technologies Inc\n1422  Ygrec Systems Co Ltd\n1423  Custom Technology Corp.\n1424  Videoserver Connections\n1425  Chelsio Communications Inc\n\t000b  T210 Protocol Engine\n\t000c  T204 Protocol Engine\n\t0022  10GbE Ethernet Adapter\n\t0030  T310 10GbE Single Port Adapter\n\t\t103c 705e  PCIe 10GBase-SR [AD386A]\n\t0031  T320 10GbE Dual Port Adapter\n\t0032  T302 1GbE Dual Port Adapter\n\t0033  T304 1GbE Quad Port Adapter\n\t0034  B320 10GbE Dual Port Adapter\n\t0035  S310-CR 10GbE Single Port Adapter\n\t0036  S320-LP-CR 10GbE Dual Port Adapter\n\t0037  N320-G2-CR 10GbE Dual Port Adapter\n\t4001  T420-CR Unified Wire Ethernet Controller\n\t4002  T422-CR Unified Wire Ethernet Controller\n\t4003  T440-CR Unified Wire Ethernet Controller\n\t4004  T420-BCH Unified Wire Ethernet Controller\n\t4005  T440-BCH Unified Wire Ethernet Controller\n\t4006  T440-CH Unified Wire Ethernet Controller\n\t4007  T420-SO Unified Wire Ethernet Controller\n\t4008  T420-CX Unified Wire Ethernet Controller\n\t4009  T420-BT Unified Wire Ethernet Controller\n\t400a  T404-BT Unified Wire Ethernet Controller\n\t400b  B420-SR Unified Wire Ethernet Controller\n\t400c  B404-BT Unified Wire Ethernet Controller\n\t400d  T480 Unified Wire Ethernet Controller\n\t400e  T440-LP-CR Unified Wire Ethernet Controller\n\t400f  T440 [Amsterdam] Unified Wire Ethernet Controller\n\t4080  T480-4080 T480 Unified Wire Ethernet Controller\n\t4081  T440F-4081 T440-FCoE Unified Wire Ethernet Controller\n\t4082  T420-4082  Unified Wire Ethernet Controller\n\t4083  T420X-4083 Unified Wire Ethernet Controller\n\t4084  T440-4084 Unified Wire Ethernet Controller\n\t4085  T420-4085 SFP+ Unified Wire Ethernet Controller\n\t4086  T440-4086 10Gbase-T Unified Wire Ethernet Controller\n\t4087  T440T-4087 Unified Wire Ethernet Controller\n\t4088  T440-4088 Unified Wire Ethernet Controller\n\t4401  T420-CR Unified Wire Ethernet Controller\n\t4402  T422-CR Unified Wire Ethernet Controller\n\t4403  T440-CR Unified Wire Ethernet Controller\n\t4404  T420-BCH Unified Wire Ethernet Controller\n\t4405  T440-BCH Unified Wire Ethernet Controller\n\t4406  T440-CH Unified Wire Ethernet Controller\n\t4407  T420-SO Unified Wire Ethernet Controller\n\t4408  T420-CX Unified Wire Ethernet Controller\n\t4409  T420-BT Unified Wire Ethernet Controller\n\t440a  T404-BT Unified Wire Ethernet Controller\n\t440b  B420-SR Unified Wire Ethernet Controller\n\t440c  B404-BT Unified Wire Ethernet Controller\n\t440d  T480 Unified Wire Ethernet Controller\n\t440e  T440-LP-CR Unified Wire Ethernet Controller\n\t440f  T440 [Amsterdam] Unified Wire Ethernet Controller\n\t4480  T480-4080 T480 Unified Wire Ethernet Controller\n\t4481  T440F-4081 T440-FCoE Unified Wire Ethernet Controller\n\t4482  T420-4082  Unified Wire Ethernet Controller\n\t4483  T420X-4083 Unified Wire Ethernet Controller\n\t4484  T440-4084 Unified Wire Ethernet Controller\n\t4485  T420-4085 SFP+ Unified Wire Ethernet Controller\n\t4486  T440-4086 10Gbase-T Unified Wire Ethernet Controller\n\t4487  T440T-4087 Unified Wire Ethernet Controller\n\t4488  T440-4088 Unified Wire Ethernet Controller\n\t4501  T420-CR Unified Wire Storage Controller\n\t4502  T422-CR Unified Wire Storage Controller\n\t4503  T440-CR Unified Wire Storage Controller\n\t4504  T420-BCH Unified Wire Storage Controller\n\t4505  T440-BCH Unified Wire Storage Controller\n\t4506  T440-CH Unified Wire Storage Controller\n\t4507  T420-SO Unified Wire Storage Controller\n\t4508  T420-CX Unified Wire Storage Controller\n\t4509  T420-BT Unified Wire Storage Controller\n\t450a  T404-BT Unified Wire Storage Controller\n\t450b  B420-SR Unified Wire Storage Controller\n\t450c  B404-BT Unified Wire Storage Controller\n\t450d  T480 Unified Wire Storage Controller\n\t450e  T440-LP-CR Unified Wire Storage Controller\n\t450f  T440 [Amsterdam] Unified Wire Storage Controller\n\t4580  T480-4080 T480 Unified Wire Storage Controller\n\t4581  T440F-4081 T440-FCoE Unified Wire Storage Controller\n\t4582  T420-4082  Unified Wire Storage Controller\n\t4583  T420X-4083 Unified Wire Storage Controller\n\t4584  T440-4084 Unified Wire Storage Controller\n\t4585  T420-4085 SFP+ Unified Wire Storage Controller\n\t4586  T440-4086 10Gbase-T Unified Wire Storage Controller\n\t4587  T440T-4087 Unified Wire Storage Controller\n\t4588  T440-4088 Unified Wire Storage Controller\n\t4601  T420-CR Unified Wire Storage Controller\n\t4602  T422-CR Unified Wire Storage Controller\n\t4603  T440-CR Unified Wire Storage Controller\n\t4604  T420-BCH Unified Wire Storage Controller\n\t4605  T440-BCH Unified Wire Storage Controller\n\t4606  T440-CH Unified Wire Storage Controller\n\t4607  T420-SO Unified Wire Storage Controller\n\t4608  T420-CX Unified Wire Storage Controller\n\t4609  T420-BT Unified Wire Storage Controller\n\t460a  T404-BT Unified Wire Storage Controller\n\t460b  B420-SR Unified Wire Storage Controller\n\t460c  B404-BT Unified Wire Storage Controller\n\t460d  T480 Unified Wire Storage Controller\n\t460e  T440-LP-CR Unified Wire Storage Controller\n\t460f  T440 [Amsterdam] Unified Wire Storage Controller\n\t4680  T480-4080 T480 Unified Wire Storage Controller\n\t4681  T440F-4081 T440-FCoE Unified Wire Storage Controller\n\t4682  T420-4082  Unified Wire Storage Controller\n\t4683  T420X-4083 Unified Wire Storage Controller\n\t4684  T440-4084 Unified Wire Storage Controller\n\t4685  T420-4085 SFP+ Unified Wire Storage Controller\n\t4686  T440-4086 10Gbase-T Unified Wire Storage Controller\n\t4687  T440T-4087 Unified Wire Storage Controller\n\t4688  T440-4088 Unified Wire Storage Controller\n\t4701  T420-CR Unified Wire Ethernet Controller\n\t4702  T422-CR Unified Wire Ethernet Controller\n\t4703  T440-CR Unified Wire Ethernet Controller\n\t4704  T420-BCH Unified Wire Ethernet Controller\n\t4705  T440-BCH Unified Wire Ethernet Controller\n\t4706  T440-CH Unified Wire Ethernet Controller\n\t4707  T420-SO Unified Wire Ethernet Controller\n\t4708  T420-CX Unified Wire Ethernet Controller\n\t4709  T420-BT Unified Wire Ethernet Controller\n\t470a  T404-BT Unified Wire Ethernet Controller\n\t470b  B420-SR Unified Wire Ethernet Controller\n\t470c  B404-BT Unified Wire Ethernet Controller\n\t470d  T480 Unified Wire Ethernet Controller\n\t470e  T440-LP-CR Unified Wire Ethernet Controller\n\t470f  T440 [Amsterdam] Unified Wire Ethernet Controller\n\t4780  T480-4080 T480 Unified Wire Ethernet Controller\n\t4781  T440F-4081 T440-FCoE Unified Wire Ethernet Controller\n\t4782  T420-4082  Unified Wire Ethernet Controller\n\t4783  T420X-4083 Unified Wire Ethernet Controller\n\t4784  T440-4084 Unified Wire Ethernet Controller\n\t4785  T420-4085 SFP+ Unified Wire Ethernet Controller\n\t4786  T440-4086 10Gbase-T Unified Wire Ethernet Controller\n\t4787  T440T-4087 Unified Wire Ethernet Controller\n\t4788  T440-4088 Unified Wire Ethernet Controller\n\t4801  T420-CR Unified Wire Ethernet Controller [VF]\n\t4802  T422-CR Unified Wire Ethernet Controller [VF]\n\t4803  T440-CR Unified Wire Ethernet Controller [VF]\n\t4804  T420-BCH Unified Wire Ethernet Controller [VF]\n\t4805  T440-BCH Unified Wire Ethernet Controller [VF]\n\t4806  T440-CH Unified Wire Ethernet Controller [VF]\n\t4807  T420-SO Unified Wire Ethernet Controller [VF]\n\t4808  T420-CX Unified Wire Ethernet Controller [VF]\n\t4809  T420-BT Unified Wire Ethernet Controller [VF]\n\t480a  T404-BT Unified Wire Ethernet Controller [VF]\n\t480b  B420-SR Unified Wire Ethernet Controller [VF]\n\t480c  B404-BT Unified Wire Ethernet Controller [VF]\n\t480d  T480 Unified Wire Ethernet Controller [VF]\n\t480e  T440-LP-CR Unified Wire Ethernet Controller [VF]\n\t480f  T440 [Amsterdam] Unified Wire Ethernet Controller [VF]\n\t4880  T480-4080 T480 Unified Wire Ethernet Controller [VF]\n\t4881  T440F-4081 T440-FCoE Unified Wire Ethernet Controller [VF]\n\t4882  T420-4082 Unified Wire Ethernet Controller [VF]\n\t4883  T420X-4083 Unified Wire Ethernet Controller [VF]\n\t4884  T440-4084 Unified Wire Ethernet Controller [VF]\n\t4885  T420-4085 SFP+ Unified Wire Ethernet Controller [VF]\n\t4886  T440-4086 10Gbase-T Unified Wire Ethernet Controller [VF]\n\t4887  T440T-4087 Unified Wire Ethernet Controller [VF]\n\t4888  T440-4088 Unified Wire Ethernet Controller [VF]\n\t5001  T520-CR Unified Wire Ethernet Controller\n\t\t193d 1001  510F-B\n\t5002  T522-CR Unified Wire Ethernet Controller\n\t5003  T540-CR Unified Wire Ethernet Controller\n\t5004  T520-BCH Unified Wire Ethernet Controller\n\t5005  T540-BCH Unified Wire Ethernet Controller\n\t5006  T540-CH Unified Wire Ethernet Controller\n\t5007  T520-SO Unified Wire Ethernet Controller\n\t5008  T520-CX Unified Wire Ethernet Controller\n\t5009  T520-BT Unified Wire Ethernet Controller\n\t500a  T504-BT Unified Wire Ethernet Controller\n\t500b  B520-SR Unified Wire Ethernet Controller\n\t500c  B504-BT Unified Wire Ethernet Controller\n\t500d  T580-CR Unified Wire Ethernet Controller\n\t500e  T540-LP-CR Unified Wire Ethernet Controller\n\t500f  T540 [Amsterdam] Unified Wire Ethernet Controller\n\t5010  T580-LP-CR Unified Wire Ethernet Controller\n\t5011  T520-LL-CR Unified Wire Ethernet Controller\n\t5012  T560-CR Unified Wire Ethernet Controller\n\t5013  T580-CHR Unified Wire Ethernet Controller\n\t5014  T580-SO-CR Unified Wire Ethernet Controller\n\t5015  T502-BT Unified Wire Ethernet Controller\n\t5016  T580-OCP-SO Unified Wire Ethernet Controller\n\t5017  T520-OCP-SO Unified Wire Ethernet Controller\n\t5018  T540-BT Unified Wire Ethernet Controller\n\t5019  T540-LP-BT Unified Wire Ethernet Controller\n\t501a  T540-SO-BT Unified Wire Ethernet Controller\n\t501b  T540-SO-CR Unified Wire Ethernet Controller\n\t5080  T540-5080 Unified Wire Ethernet Controller\n\t5081  T540-5081 Unified Wire Ethernet Controller\n\t5082  T504-5082 Unified Wire Ethernet Controller\n\t5083  T540-5083 Unified Wire Ethernet Controller\n\t5084  T540-5084 Unified Wire Ethernet Controller\n\t5085  T580-5085 Unified Wire Ethernet Controller\n\t5086  T580-5086 Unified Wire Ethernet Controller\n\t5087  T580-5087 Unified Wire Ethernet Controller\n\t5088  T570-5088 Unified Wire Ethernet Controller\n\t5089  T520-5089 Unified Wire Ethernet Controller\n\t5090  T540-5090 Unified Wire Ethernet Controller\n\t5091  T522-5091 Unified Wire Ethernet Controller\n\t5092  T520-5092 Unified Wire Ethernet Controller\n\t5093  T580-5093 Unified Wire Ethernet Controller\n\t5094  T540-5094 Unified Wire Ethernet Controller\n\t5095  T540-5095 Unified Wire Ethernet Controller\n\t5096  T580-5096 Unified Wire Ethernet Controller\n\t5097  T520-5097 Unified Wire Ethernet Controller\n\t5098  T580-5098 Unified Wire Ethernet Controller\n\t5099  T580-5099 Unified Wire Ethernet Controller\n\t509a  T520-509A Unified Wire Ethernet Controller\n\t509b  T540-509B Unified Wire Ethernet Controller\n\t509c  T520-509C Unified Wire Ethernet Controller\n\t509d  T540-509D Unified Wire Ethernet Controller\n\t509e  T520-509E Unified Wire Ethernet Controller\n\t509f  T540-509F Unified Wire Ethernet Controller\n\t50a0  T540-50A0 Unified Wire Ethernet Controller\n\t50a1  T540-50A1 Unified Wire Ethernet Controller\n\t50a2  T580-50A2 Unified Wire Ethernet Controller\n\t50a3  T580-50A3 Unified Wire Ethernet Controller\n\t50a4  T540-50A4 Unified Wire Ethernet Controller\n\t50a5  T522-50A5 Unified Wire Ethernet Controller\n\t50a6  T522-50A6 Unified Wire Ethernet Controller\n\t50a7  T580-50A7 Unified Wire Ethernet Controller\n\t50a8  T580-50A8 Unified Wire Ethernet Controller\n\t50a9  T580-50A9 Unified Wire Ethernet Controller\n\t50aa  T580-50AA Unified Wire Ethernet Controller\n\t50ab  T520-50AB Unified Wire Ethernet Controller\n\t50ac  T540-50AC Unified Wire Ethernet Controller\n\t50ad  T520-50AD Unified Wire Ethernet Controller\n\t50ae  T540-50AE Unified Wire Ethernet Controller\n\t50af  T580-50AF Unified Wire Ethernet Controller\n\t50b0  T520-50B0 Unified Wire Ethernet Controller\n\t5401  T520-CR Unified Wire Ethernet Controller\n\t5402  T522-CR Unified Wire Ethernet Controller\n\t5403  T540-CR Unified Wire Ethernet Controller\n\t5404  T520-BCH Unified Wire Ethernet Controller\n\t5405  T540-BCH Unified Wire Ethernet Controller\n\t5406  T540-CH Unified Wire Ethernet Controller\n\t5407  T520-SO Unified Wire Ethernet Controller\n\t5408  T520-CX Unified Wire Ethernet Controller\n\t5409  T520-BT Unified Wire Ethernet Controller\n\t540a  T504-BT Unified Wire Ethernet Controller\n\t540b  B520-SR Unified Wire Ethernet Controller\n\t540c  B504-BT Unified Wire Ethernet Controller\n\t540d  T580-CR Unified Wire Ethernet Controller\n\t540e  T540-LP-CR Unified Wire Ethernet Controller\n\t540f  T540 [Amsterdam] Unified Wire Ethernet Controller\n\t5410  T580-LP-CR Unified Wire Ethernet Controller\n\t5411  T520-LL-CR Unified Wire Ethernet Controller\n\t5412  T560-CR Unified Wire Ethernet Controller\n\t5413  T580-CHR Unified Wire Ethernet Controller\n\t5414  T580-SO-CR Unified Wire Ethernet Controller\n\t5415  T502-BT Unified Wire Ethernet Controller\n\t5416  T580-OCP-SO Unified Wire Ethernet Controller\n\t5417  T520-OCP-SO Unified Wire Ethernet Controller\n\t5418  T540-BT Unified Wire Ethernet Controller\n\t5419  T540-LP-BT Unified Wire Ethernet Controller\n\t541a  T540-SO-BT Unified Wire Ethernet Controller\n\t541b  T540-SO-CR Unified Wire Ethernet Controller\n\t5480  T540-5080 Unified Wire Ethernet Controller\n\t5481  T540-5081 Unified Wire Ethernet Controller\n\t5482  T504-5082 Unified Wire Ethernet Controller\n\t5483  T540-5083 Unified Wire Ethernet Controller\n\t5484  T540-5084 Unified Wire Ethernet Controller\n\t5485  T580-5085 Unified Wire Ethernet Controller\n\t5486  T580-5086 Unified Wire Ethernet Controller\n\t5487  T580-5087 Unified Wire Ethernet Controller\n\t5488  T570-5088 Unified Wire Ethernet Controller\n\t5489  T520-5089 Unified Wire Ethernet Controller\n\t5490  T540-5090 Unified Wire Ethernet Controller\n\t5491  T522-5091 Unified Wire Ethernet Controller\n\t5492  T520-5092 Unified Wire Ethernet Controller\n\t5493  T580-5093 Unified Wire Ethernet Controller\n\t5494  T540-5094 Unified Wire Ethernet Controller\n\t5495  T540-5095 Unified Wire Ethernet Controller\n\t5496  T580-5096 Unified Wire Ethernet Controller\n\t5497  T520-5097 Unified Wire Ethernet Controller\n\t5498  T580-5098 Unified Wire Ethernet Controller\n\t5499  T580-5099 Unified Wire Ethernet Controller\n\t549a  T520-509A Unified Wire Ethernet Controller\n\t549b  T540-509B Unified Wire Ethernet Controller\n\t549c  T520-509C Unified Wire Ethernet Controller\n\t549d  T540-509D Unified Wire Ethernet Controller\n\t549e  T520-509E Unified Wire Ethernet Controller\n\t549f  T540-509F Unified Wire Ethernet Controller\n\t54a0  T540-50A0 Unified Wire Ethernet Controller\n\t54a1  T540-50A1 Unified Wire Ethernet Controller\n\t54a2  T580-50A2 Unified Wire Ethernet Controller\n\t54a3  T580-50A3 Unified Wire Ethernet Controller\n\t54a4  T540-50A4 Unified Wire Ethernet Controller\n\t54a5  T522-50A5 Unified Wire Ethernet Controller\n\t54a6  T522-50A6 Unified Wire Ethernet Controller\n\t54a7  T580-50A7 Unified Wire Ethernet Controller\n\t54a8  T580-50A8 Unified Wire Ethernet Controller\n\t54a9  T580-50A9 Unified Wire Ethernet Controller\n\t54aa  T580-50AA Unified Wire Ethernet Controller\n\t54ab  T520-50AB Unified Wire Ethernet Controller\n\t54ac  T540-50AC Unified Wire Ethernet Controller\n\t54ad  T520-50AD Unified Wire Ethernet Controller\n\t54ae  T540-50AE Unified Wire Ethernet Controller\n\t54af  T580-50AF Unified Wire Ethernet Controller\n\t54b0  T520-50B0 Unified Wire Ethernet Controller\n\t5501  T520-CR Unified Wire Storage Controller\n\t5502  T522-CR Unified Wire Storage Controller\n\t5503  T540-CR Unified Wire Storage Controller\n\t5504  T520-BCH Unified Wire Storage Controller\n\t5505  T540-BCH Unified Wire Storage Controller\n\t5506  T540-CH Unified Wire Storage Controller\n\t5507  T520-SO Unified Wire Storage Controller\n\t5508  T520-CX Unified Wire Storage Controller\n\t5509  T520-BT Unified Wire Storage Controller\n\t550a  T504-BT Unified Wire Storage Controller\n\t550b  B520-SR Unified Wire Storage Controller\n\t550c  B504-BT Unified Wire Storage Controller\n\t550d  T580-CR Unified Wire Storage Controller\n\t550e  T540-LP-CR Unified Wire Storage Controller\n\t550f  T540 [Amsterdam] Unified Wire Storage Controller\n\t5510  T580-LP-CR Unified Wire Storage Controller\n\t5511  T520-LL-CR Unified Wire Storage Controller\n\t5512  T560-CR Unified Wire Storage Controller\n\t5513  T580-CHR Unified Wire Storage Controller\n\t5514  T580-SO-CR Unified Wire Storage Controller\n\t5515  T502-BT Unified Wire Storage Controller\n\t5516  T580-OCP-SO Unified Wire Storage Controller\n\t5517  T520-OCP-SO Unified Wire Storage Controller\n\t5518  T540-BT Unified Wire Storage Controller\n\t5519  T540-LP-BT Unified Wire Storage Controller\n\t551a  T540-SO-BT Unified Wire Storage Controller\n\t551b  T540-SO-CR Unified Wire Storage Controller\n\t5580  T540-5080 Unified Wire Storage Controller\n\t5581  T540-5081 Unified Wire Storage Controller\n\t5582  T504-5082 Unified Wire Storage Controller\n\t5583  T540-5083 Unified Wire Storage Controller\n\t5584  T540-5084 Unified Wire Storage Controller\n\t5585  T580-5085 Unified Wire Storage Controller\n\t5586  T580-5086 Unified Wire Storage Controller\n\t5587  T580-5087 Unified Wire Storage Controller\n\t5588  T570-5088 Unified Wire Storage Controller\n\t5589  T520-5089 Unified Wire Storage Controller\n\t5590  T540-5090 Unified Wire Storage Controller\n\t5591  T522-5091 Unified Wire Storage Controller\n\t5592  T520-5092 Unified Wire Storage Controller\n\t5593  T580-5093 Unified Wire Storage Controller\n\t5594  T540-5094 Unified Wire Storage Controller\n\t5595  T540-5095 Unified Wire Storage Controller\n\t5596  T580-5096 Unified Wire Storage Controller\n\t5597  T520-5097 Unified Wire Storage Controller\n\t5598  T580-5098 Unified Wire Storage Controller\n\t5599  T580-5099 Unified Wire Storage Controller\n\t559a  T520-509A Unified Wire Storage Controller\n\t559b  T540-509B Unified Wire Storage Controller\n\t559c  T520-509C Unified Wire Storage Controller\n\t559d  T540-509D Unified Wire Storage Controller\n\t559e  T520-509E Unified Wire Storage Controller\n\t559f  T540-509F Unified Wire Storage Controller\n\t55a0  T540-50A0 Unified Wire Storage Controller\n\t55a1  T540-50A1 Unified Wire Storage Controller\n\t55a2  T580-50A2 Unified Wire Storage Controller\n\t55a3  T580-50A3 Unified Wire Storage Controller\n\t55a4  T540-50A4 Unified Wire Storage Controller\n\t55a5  T522-50A5 Unified Wire Storage Controller\n\t55a6  T522-50A6 Unified Wire Storage Controller\n\t55a7  T580-50A7 Unified Wire Storage Controller\n\t55a8  T580-50A8 Unified Wire Storage Controller\n\t55a9  T580-50A9 Unified Wire Storage Controller\n\t55aa  T580-50AA Unified Wire Storage Controller\n\t55ab  T520-50AB Unified Wire Storage Controller\n\t55ac  T540-50AC Unified Wire Storage Controller\n\t55ad  T520-50AD Unified Wire Storage Controller\n\t55ae  T540-50AE Unified Wire Storage Controller\n\t55af  T580-50AF Unified Wire Storage Controller\n\t55b0  T520-50B0 Unified Wire Storage Controller\n\t5601  T520-CR Unified Wire Storage Controller\n\t5602  T522-CR Unified Wire Storage Controller\n\t5603  T540-CR Unified Wire Storage Controller\n\t5604  T520-BCH Unified Wire Storage Controller\n\t5605  T540-BCH Unified Wire Storage Controller\n\t5606  T540-CH Unified Wire Storage Controller\n\t5607  T520-SO Unified Wire Storage Controller\n\t5608  T520-CX Unified Wire Storage Controller\n\t5609  T520-BT Unified Wire Storage Controller\n\t560a  T504-BT Unified Wire Storage Controller\n\t560b  B520-SR Unified Wire Storage Controller\n\t560c  B504-BT Unified Wire Storage Controller\n\t560d  T580-CR Unified Wire Storage Controller\n\t560e  T540-LP-CR Unified Wire Storage Controller\n\t560f  T540 [Amsterdam] Unified Wire Storage Controller\n\t5610  T580-LP-CR Unified Wire Storage Controller\n\t5611  T520-LL-CR Unified Wire Storage Controller\n\t5612  T560-CR Unified Wire Storage Controller\n\t5613  T580-CHR Unified Wire Storage Controller\n\t5614  T580-SO-CR Unified Wire Storage Controller\n\t5615  T502-BT Unified Wire Storage Controller\n\t5616  T580-OCP-SO Unified Wire Storage Controller\n\t5617  T520-OCP-SO Unified Wire Storage Controller\n\t5618  T540-BT Unified Wire Storage Controller\n\t5619  T540-LP-BT Unified Wire Storage Controller\n\t561a  T540-SO-BT Unified Wire Storage Controller\n\t561b  T540-SO-CR Unified Wire Storage Controller\n\t5680  T540-5080 Unified Wire Storage Controller\n\t5681  T540-5081 Unified Wire Storage Controller\n\t5682  T504-5082 Unified Wire Storage Controller\n\t5683  T540-5083 Unified Wire Storage Controller\n\t5684  T540-5084 Unified Wire Storage Controller\n\t5685  T580-5085 Unified Wire Storage Controller\n\t5686  T580-5086 Unified Wire Storage Controller\n\t5687  T580-5087 Unified Wire Storage Controller\n\t5688  T570-5088 Unified Wire Storage Controller\n\t5689  T520-5089 Unified Wire Storage Controller\n\t5690  T540-5090 Unified Wire Storage Controller\n\t5691  T522-5091 Unified Wire Storage Controller\n\t5692  T520-5092 Unified Wire Storage Controller\n\t5693  T580-5093 Unified Wire Storage Controller\n\t5694  T540-5094 Unified Wire Storage Controller\n\t5695  T540-5095 Unified Wire Storage Controller\n\t5696  T580-5096 Unified Wire Storage Controller\n\t5697  T520-5097 Unified Wire Storage Controller\n\t5698  T580-5098 Unified Wire Storage Controller\n\t5699  T580-5099 Unified Wire Storage Controller\n\t569a  T520-509A Unified Wire Storage Controller\n\t569b  T540-509B Unified Wire Storage Controller\n\t569c  T520-509C Unified Wire Storage Controller\n\t569d  T540-509D Unified Wire Storage Controller\n\t569e  T520-509E Unified Wire Storage Controller\n\t569f  T540-509F Unified Wire Storage Controller\n\t56a0  T540-50A0 Unified Wire Storage Controller\n\t56a1  T540-50A1 Unified Wire Storage Controller\n\t56a2  T580-50A2 Unified Wire Storage Controller\n\t56a3  T580-50A3 Unified Wire Storage Controller\n\t56a4  T540-50A4 Unified Wire Storage Controller\n\t56a5  T522-50A5 Unified Wire Storage Controller\n\t56a6  T522-50A6 Unified Wire Storage Controller\n\t56a7  T580-50A7 Unified Wire Storage Controller\n\t56a8  T580-50A8 Unified Wire Storage Controller\n\t56a9  T580-50A9 Unified Wire Storage Controller\n\t56aa  T580-50AA Unified Wire Storage Controller\n\t56ab  T520-50AB Unified Wire Storage Controller\n\t56ac  T540-50AC Unified Wire Storage Controller\n\t56ad  T520-50AD Unified Wire Storage Controller\n\t56ae  T540-50AE Unified Wire Storage Controller\n\t56af  T580-50AF Unified Wire Storage Controller\n\t56b0  T520-50B0 Unified Wire Storage Controller\n\t5701  T520-CR Unified Wire Ethernet Controller\n\t5702  T522-CR Unified Wire Ethernet Controller\n\t5703  T540-CR Unified Wire Ethernet Controller\n\t5704  T520-BCH Unified Wire Ethernet Controller\n\t5705  T540-BCH Unified Wire Ethernet Controller\n\t5706  T540-CH Unified Wire Ethernet Controller\n\t5707  T520-SO Unified Wire Ethernet Controller\n\t5708  T520-CX Unified Wire Ethernet Controller\n\t5709  T520-BT Unified Wire Ethernet Controller\n\t570a  T504-BT Unified Wire Ethernet Controller\n\t570b  B520-SR Unified Wire Ethernet Controller\n\t570c  B504-BT Unified Wire Ethernet Controller\n\t570d  T580-CR Unified Wire Ethernet Controller\n\t570e  T540-LP-CR Unified Wire Ethernet Controller\n\t570f  T540 [Amsterdam] Unified Wire Ethernet Controller\n\t5710  T580-LP-CR Unified Wire Ethernet Controller\n\t5711  T520-LL-CR Unified Wire Ethernet Controller\n\t5712  T560-CR Unified Wire Ethernet Controller\n\t5713  T580-CR Unified Wire Ethernet Controller\n\t5714  T580-SO-CR Unified Wire Ethernet Controller\n\t5715  T502-BT Unified Wire Ethernet Controller\n\t5780  T540-5080 Unified Wire Ethernet Controller\n\t5781  T540-5081 Unified Wire Ethernet Controller\n\t5782  T504-5082 Unified Wire Ethernet Controller\n\t5783  T540-5083 Unified Wire Ethernet Controller\n\t5784  T580-5084 Unified Wire Ethernet Controller\n\t5785  T580-5085 Unified Wire Ethernet Controller\n\t5786  T580-5086 Unified Wire Ethernet Controller\n\t5787  T580-5087 Unified Wire Ethernet Controller\n\t5788  T570-5088 Unified Wire Ethernet Controller\n\t5789  T520-5089 Unified Wire Ethernet Controller\n\t5790  T540-5090 Unified Wire Ethernet Controller\n\t5791  T522-5091 Unified Wire Ethernet Controller\n\t5792  T520-5092 Unified Wire Ethernet Controller\n\t5793  T580-5093 Unified Wire Ethernet Controller\n\t5794  T540-5094 Unified Wire Ethernet Controller\n\t5795  T540-5095 Unified Wire Ethernet Controller\n\t5796  T580-5096 Unified Wire Ethernet Controller\n\t5797  T520-5097 Unified Wire Ethernet Controller\n\t5801  T520-CR Unified Wire Ethernet Controller [VF]\n\t5802  T522-CR Unified Wire Ethernet Controller [VF]\n\t5803  T540-CR Unified Wire Ethernet Controller [VF]\n\t5804  T520-BCH Unified Wire Ethernet Controller [VF]\n\t5805  T540-BCH Unified Wire Ethernet Controller [VF]\n\t5806  T540-CH Unified Wire Ethernet Controller [VF]\n\t5807  T520-SO Unified Wire Ethernet Controller [VF]\n\t5808  T520-CX Unified Wire Ethernet Controller [VF]\n\t5809  T520-BT Unified Wire Ethernet Controller [VF]\n\t580a  T504-BT Unified Wire Ethernet Controller [VF]\n\t580b  B520-SR Unified Wire Ethernet Controller [VF]\n\t580c  B504-BT Unified Wire Ethernet Controller [VF]\n\t580d  T580-CR Unified Wire Ethernet Controller [VF]\n\t580e  T540-LP-CR Unified Wire Ethernet Controller [VF]\n\t580f  T540 [Amsterdam] Unified Wire Ethernet Controller [VF]\n\t5810  T580-LP-CR Unified Wire Ethernet Controller [VF]\n\t5811  T520-LL-CR Unified Wire Ethernet Controller [VF]\n\t5812  T560-CR Unified Wire Ethernet Controller [VF]\n\t5813  T580-CHR Unified Wire Ethernet Controller [VF]\n\t5814  T580-SO-CR Unified Wire Ethernet Controller [VF]\n\t5815  T502-BT Unified Wire Ethernet Controller [VF]\n\t5816  T580-OCP-SO Unified Wire Ethernet Controller [VF]\n\t5817  T520-OCP-SO Unified Wire Ethernet Controller [VF]\n\t5818  T540-BT Unified Wire Ethernet Controller [VF]\n\t5819  T540-LP-BT Unified Wire Ethernet Controller [VF]\n\t581a  T540-SO-BT Unified Wire Ethernet Controller [VF]\n\t581b  T540-SO-CR Unified Wire Ethernet Controller [VF]\n\t5880  T540-5080 Unified Wire Ethernet Controller [VF]\n\t5881  T540-5081 Unified Wire Ethernet Controller [VF]\n\t5882  T504-5082 Unified Wire Ethernet Controller [VF]\n\t5883  T540-5083 Unified Wire Ethernet Controller [VF]\n\t5884  T540-5084 Unified Wire Ethernet Controller [VF]\n\t5885  T580-5085 Unified Wire Ethernet Controller [VF]\n\t5886  T580-5086 Unified Wire Ethernet Controller [VF]\n\t5887  T580-5087 Unified Wire Ethernet Controller [VF]\n\t5888  T570-5088 Unified Wire Ethernet Controller [VF]\n\t5889  T520-5089 Unified Wire Ethernet Controller [VF]\n\t5890  T540-5090 Unified Wire Ethernet Controller [VF]\n\t5891  T522-5091 Unified Wire Ethernet Controller [VF]\n\t5892  T520-5092 Unified Wire Ethernet Controller [VF]\n\t5893  T580-5093 Unified Wire Ethernet Controller [VF]\n\t5894  T540-5094 Unified Wire Ethernet Controller [VF]\n\t5895  T540-5095 Unified Wire Ethernet Controller [VF]\n\t5896  T580-5096 Unified Wire Ethernet Controller [VF]\n\t5897  T520-5097 Unified Wire Ethernet Controller [VF]\n\t5898  T580-5098 Unified Wire Ethernet Controller [VF]\n\t5899  T580-5099 Unified Wire Ethernet Controller [VF]\n\t589a  T520-509A Unified Wire Ethernet Controller [VF]\n\t589b  T540-509B Unified Wire Ethernet Controller [VF]\n\t589c  T520-509C Unified Wire Ethernet Controller [VF]\n\t589d  T540-509D Unified Wire Ethernet Controller [VF]\n\t589e  T520-509E Unified Wire Ethernet Controller [VF]\n\t589f  T540-509F Unified Wire Ethernet Controller [VF]\n\t58a0  T540-50A0 Unified Wire Ethernet Controller [VF]\n\t58a1  T540-50A1 Unified Wire Ethernet Controller [VF]\n\t58a2  T580-50A2 Unified Wire Ethernet Controller [VF]\n\t58a3  T580-50A3 Unified Wire Ethernet Controller [VF]\n\t58a4  T540-50A4 Unified Wire Ethernet Controller [VF]\n\t58a5  T522-50A5 Unified Wire Ethernet Controller [VF]\n\t58a6  T522-50A6 Unified Wire Ethernet Controller [VF]\n\t58a7  T580-50A7 Unified Wire Ethernet Controller [VF]\n\t58a8  T580-50A8 Unified Wire Ethernet Controller [VF]\n\t58a9  T580-50A9 Unified Wire Ethernet Controller [VF]\n\t58aa  T580-50AA Unified Wire Ethernet Controller [VF]\n\t58ab  T520-50AB Unified Wire Ethernet Controller [VF]\n\t58ac  T540-50AC Unified Wire Ethernet Controller [VF]\n\t58ad  T520-50AD Unified Wire Ethernet Controller [VF]\n\t58ae  T540-50AE Unified Wire Ethernet Controller [VF]\n\t58af  T580-50AF Unified Wire Ethernet Controller [VF]\n\t58b0  T520-50B0 Unified Wire Ethernet Controller [VF]\n\t6001  T6225-CR Unified Wire Ethernet Controller\n\t6002  T6225-SO-CR Unified Wire Ethernet Controller\n\t6003  T6425-CR Unified Wire Ethernet Controller\n\t6004  T6425-SO-CR Unified Wire Ethernet Controller\n\t6005  T6225-SO-OCP3 Unified Wire Ethernet Controller\n\t6006  T6225-OCP3 Unified Wire Ethernet Controller\n\t6007  T62100-LP-CR Unified Wire Ethernet Controller\n\t6008  T62100-SO-CR Unified Wire Ethernet Controller\n\t6009  T6210-BT Unified Wire Ethernet Controller\n\t600d  T62100-CR Unified Wire Ethernet Controller\n\t6011  T6225-LL-CR Unified Wire Ethernet Controller\n\t6014  T62100-SO-OCP3 Unified Wire Ethernet Controller\n\t6015  T6201-BT Unified Wire Ethernet Controller\n\t6080  T6225-6080 Unified Wire Ethernet Controller\n\t6081  T62100-6081 Unified Wire Ethernet Controller\n\t6082  T6225-6082 Unified Wire Ethernet Controller\n\t6083  T62100-6083 Unified Wire Ethernet Controller\n\t6084  T64100-6084 Unified Wire Ethernet Controller\n\t6085  T6240-6085 Unified Wire Ethernet Controller\n\t6086  T6225-6086 Unified Wire Ethernet Controller\n\t6087  T6225-6087 Unified Wire Ethernet Controller\n\t6088  T62100-6088 Unified Wire Ethernet Controller\n\t6089  T62100-6089 Unified Wire Ethernet Controller\n\t608a  T62100-608a Unified Wire Ethernet Controller\n\t6092  T62100-KR Unified Wire Ethernet Controller\n\t\t01de fff8  Cosmo Baseboard\n\t\t01de fff9  Gimlet Baseboard\n\t6401  T6225-CR Unified Wire Ethernet Controller\n\t6402  T6225-SO-CR Unified Wire Ethernet Controller\n\t6403  T6425-CR Unified Wire Ethernet Controller\n\t6404  T6425-SO-CR Unified Wire Ethernet Controller\n\t6405  T6225-SO-OCP3 Unified Wire Ethernet Controller\n\t6406  T6225-OCP3 Unified Wire Ethernet Controller\n\t6407  T62100-LP-CR Unified Wire Ethernet Controller\n\t6408  T62100-SO-CR Unified Wire Ethernet Controller\n\t6409  T6210-BT Unified Wire Ethernet Controller\n\t640d  T62100-CR Unified Wire Ethernet Controller\n\t6411  T6225-LL-CR Unified Wire Ethernet Controller\n\t6414  T62100-SO-OCP3 Unified Wire Ethernet Controller\n\t6415  T6201-BT Unified Wire Ethernet Controller\n\t6480  T6225-6080 Unified Wire Ethernet Controller\n\t6481  T62100-6081 Unified Wire Ethernet Controller\n\t6482  T6225-6082 Unified Wire Ethernet Controller\n\t6483  T62100-6083 Unified Wire Ethernet Controller\n\t6484  T64100-6084 Unified Wire Ethernet Controller\n\t6485  T6240-6085 Unified Wire Ethernet Controller\n\t6486  T6225-6086 Unified Wire Ethernet Controller\n\t6487  T6225-6087 Unified Wire Ethernet Controller\n\t6488  T62100-6088 Unified Wire Ethernet Controller\n\t6489  T62100-6089 Unified Wire Ethernet Controller\n\t648a  T62100-608a Unified Wire Ethernet Controller\n\t6492  T62100-KR Unified Wire Ethernet Controller\n\t\t01de fff8  Cosmo Baseboard\n\t\t01de fff9  Gimlet Baseboard\n\t6501  T6225-CR Unified Wire Storage Controller\n\t6502  T6225-SO-CR Unified Wire Storage Controller\n\t6503  T6425-CR Unified Wire Storage Controller\n\t6504  T6425-SO-CR Unified Wire Storage Controller\n\t6505  T6225-SO-OCP3 Unified Wire Storage Controller\n\t6506  T6225-OCP3 Unified Wire Storage Controller\n\t6507  T62100-LP-CR Unified Wire Storage Controller\n\t6508  T62100-SO-CR Unified Wire Storage Controller\n\t6509  T6210-BT Unified Wire Storage Controller\n\t650d  T62100-CR Unified Wire Storage Controller\n\t6511  T6225-LL-CR Unified Wire Storage Controller\n\t6514  T62100-SO-OCP3 Unified Wire Storage Controller\n\t6515  T6201-BT Unified Wire Storage Controller\n\t6580  T6225-6080 Unified Wire Storage Controller\n\t6581  T62100-6081 Unified Wire Storage Controller\n\t6582  T6225-6082 Unified Wire Storage Controller\n\t6583  T62100-6083 Unified Wire Storage Controller\n\t6584  T64100-6084 Unified Wire Storage Controller\n\t6585  T6240-6085 Unified Wire Storage Controller\n\t6586  T6225-6086 Unified Wire Storage Controller\n\t6587  T6225-6087 Unified Wire Storage Controller\n\t6588  T62100-6088 Unified Wire Storage Controller\n\t6589  T62100-6089 Unified Wire Storage Controller\n\t658a  T62100-608a Unified Wire Storage Controller\n\t6592  T62100-KR Unified Wire Storage Controller\n\t6601  T6225-CR Unified Wire Storage Controller\n\t6602  T6225-SO-CR Unified Wire Storage Controller\n\t6603  T6425-CR Unified Wire Storage Controller\n\t6604  T6425-SO-CR Unified Wire Storage Controller\n\t6605  T6225-SO-OCP3 Unified Wire Storage Controller\n\t6606  T6225-OCP3 Unified Wire Storage Controller\n\t6607  T62100-LP-CR Unified Wire Storage Controller\n\t6608  T62100-SO-CR Unified Wire Storage Controller\n\t6609  T6210-BT Unified Wire Storage Controller\n\t660d  T62100-CR Unified Wire Storage Controller\n\t6611  T6225-LL-CR Unified Wire Storage Controller\n\t6614  T62100-SO-OCP3 Unified Wire Storage Controller\n\t6615  T6201-BT Unified Wire Storage Controller\n\t6680  T6225-6080 Unified Wire Storage Controller\n\t6681  T62100-6081 Unified Wire Storage Controller\n\t6682  T6225-6082 Unified Wire Storage Controller\n\t6683  T62100-6083 Unified Wire Storage Controller\n\t6684  T64100-6084 Unified Wire Storage Controller\n\t6685  T6240-6085 Unified Wire Storage Controller\n\t6686  T6225-6086 Unified Wire Storage Controller\n\t6687  T6225-6087 Unified Wire Storage Controller\n\t6688  T62100-6088 Unified Wire Storage Controller\n\t6689  T62100-6089 Unified Wire Storage Controller\n\t668a  T62100-608a Unified Wire Storage Controller\n\t6692  T62100-KR Unified Wire Storage Controller\n\t6801  T6225-CR Unified Wire Ethernet Controller [VF]\n\t6802  T6225-SO-CR Unified Wire Ethernet Controller [VF]\n\t6803  T6425-CR Unified Wire Ethernet Controller [VF]\n\t6804  T6425-SO-CR Unified Wire Ethernet Controller [VF]\n\t6805  T6225-SO-OCP3 Unified Wire Ethernet Controller [VF]\n\t6806  T6225-OCP3 Unified Wire Ethernet Controller [VF]\n\t6807  T62100-LP-CR Unified Wire Ethernet Controller [VF]\n\t6808  T62100-SO-CR Unified Wire Ethernet Controller [VF]\n\t6809  T6210-BT Unified Wire Ethernet Controller [VF]\n\t680d  T62100-CR Unified Wire Ethernet Controller [VF]\n\t6811  T6225-LL-CR Unified Wire Ethernet Controller [VF]\n\t6814  T62100-SO-OCP3 Unified Wire Ethernet Controller [VF]\n\t6815  T6201-BT Unified Wire Ethernet Controller [VF]\n\t6880  T6225-6080 Unified Wire Ethernet Controller [VF]\n\t6881  T62100-6081 Unified Wire Ethernet Controller [VF]\n\t6882  T6225-6082 Unified Wire Ethernet Controller [VF]\n\t6883  T62100-6083 Unified Wire Ethernet Controller [VF]\n\t6884  T64100-6084 Unified Wire Ethernet Controller [VF]\n\t6885  T6240-6085 Unified Wire Ethernet Controller [VF]\n\t6886  T6225-6086 Unified Wire Ethernet Controller [VF]\n\t6887  T6225-6087 Unified Wire Ethernet Controller [VF]\n\t6888  T62100-6088 Unified Wire Ethernet Controller [VF]\n\t6889  T62100-6089 Unified Wire Ethernet Controller [VF]\n\t688a  T62100-608a Unified Wire Ethernet Controller [VF]\n\ta000  PE10K Unified Wire Ethernet Controller\n1426  Storage Technology Corp.\n1427  Better On-Line Solutions\n1428  Edec Co Ltd\n1429  Unex Technology Corp.\n142a  Kingmax Technology Inc\n142b  Radiolan\n142c  Minton Optic Industry Co Ltd\n142d  Pix stream Inc\n142e  Vitec Multimedia\n\t4020  VM2-2 [Video Maker 2] MPEG1/2 Encoder\n\t4337  VM2-2-C7 [Video Maker 2 rev. C7] MPEG1/2 Encoder\n142f  Radicom Research Inc\n1430  ITT Aerospace/Communications Division\n1431  Gilat Satellite Networks\n1432  Edimax Computer Co.\n\t9130  RTL81xx Fast Ethernet\n1433  Eltec Elektronik GmbH\n# Nee Real Time Devices US Inc.\n1435  RTD Embedded Technologies, Inc.\n\t4520  PCI4520\n\t6020  SPM6020\n\t6030  SPM6030\n\t6420  SPM186420\n\t6430  SPM176430\n\t6431  SPM176431\n\t7520  DM7520\n\t7540  SDM7540\n\t7820  DM7820\n1436  CIS Technology Inc\n1437  Nissin Inc Co\n1438  Atmel-dream\n1439  Outsource Engineering & Mfg. Inc\n143a  Stargate Solutions Inc\n143b  Canon Research Center, America\n143c  Amlogic Inc\n143d  Tamarack Microelectronics Inc\n143e  Jones Futurex Inc\n143f  Lightwell Co Ltd - Zax Division\n1440  ALGOL Corp.\n1441  AGIE Ltd\n1442  Phoenix Contact GmbH & Co.\n1443  Unibrain S.A.\n1444  TRW\n1445  Logical DO Ltd\n1446  Graphin Co Ltd\n1447  AIM GmBH\n1448  Alesis Studio Electronics\n1449  TUT Systems Inc\n144a  Adlink Technology\n\t6208  PCI-6208V\n\t7250  PCI-7250\n\t7296  PCI-7296\n\t7432  PCI-7432\n\t7433  PCI-7433\n\t7434  PCI-7434\n\t7841  PCI-7841\n\t8133  PCI-8133\n\t8164  PCI-8164\n\t8554  PCI-8554\n\t9111  PCI-9111\n\t9113  PCI-9113\n\t9114  PCI-9114\n# 2-16 MB SRAM, 4x UART, I2C, misc I/O\n\ta001  ADi-BSEC\n# nee Loronix Information Systems Inc.\n144b  Verint Systems Inc.\n144c  Catalina Research Inc\n144d  Samsung Electronics Co Ltd\n\t1600  S4LN053X01 AHCI SSD Controller(Apple slot)\n\t9602  RS780/RS880 PCI to PCI bridge (int gfx)\n\ta544  Exynos 8890 PCIe Root Complex\n\ta575  Exynos 7420 PCIe Root Complex\n\ta5e3  Exynos 5433 PCIe Root Complex\n\ta800  XP941 PCIe SSD\n\ta801  S4LN058A01[SSUBX] AHCI SSD Controller (Apple slot)\n\ta802  NVMe SSD Controller SM951/PM951\n\t\t144d a801  PM963 2.5\" NVMe PCIe SSD\n\ta804  NVMe SSD Controller SM961/PM961/SM963\n\t\t144d a801  SM963 2.5\" NVMe PCIe SSD\n\ta806  NVMe SSD SM0032L\n\ta808  NVMe SSD Controller SM981/PM981/PM983\n# Used by different variants of SSD 970 EVO and PRO\n\t\t144d a801  SSD 970 EVO/PRO\n\t\t1d49 403b  Thinksystem U.2 PM983 NVMe SSD\n\ta809  NVMe SSD Controller 980 (DRAM-less)\n\ta80a  NVMe SSD Controller PM9A1/PM9A3/980PRO\n\t\t0128 215a  DC NVMe PM9A3 RI U.2 960GB\n\t\t0128 215b  DC NVMe PM9A3 RI U.2 1.92TB\n\t\t0128 215c  DC NVMe PM9A3 RI U.2 3.84TB\n\t\t0128 215d  DC NVMe PM9A3 RI U.2 7.68TB\n\t\t0128 2166  DC NVMe PM9A3 RI 110M.2 960GB\n\t\t0128 2167  DC NVMe PM9A3 RI 110M.2 1.92TB\n\t\t0128 2168  DC NVMe PM9A3 RI 80M.2 480GB\n\t\t0128 2169  DC NVMe PM9A3 RI 80M.2 960GB\n\t\t1028 215a  DC NVMe PM9A3 RI U.2 960GB\n\t\t1028 215b  DC NVMe PM9A3 RI U.2 1.92TB\n\t\t1028 215c  DC NVMe PM9A3 RI U.2 3.84TB\n\t\t1028 215d  Dell DC NVMe PM9A3 RI U.2 7.68TB\n\t\t1028 2166  DC NVMe PM9A3 RI 110M.2 960GB\n\t\t1028 2167  DC NVMe PM9A3 RI 110M.2 1.92TB\n\t\t1028 2168  DC NVMe PM9A3 RI 80M.2 480GB\n\t\t1028 2169  DC NVMe PM9A3 RI 80M.2 960GB\n\t\t1028 2276  DC NVMe PM9A3 RI 110M.2 960GB\n\t\t1028 2277  DC NVMe PM9A3 RI 110M.2 1.92TB\n\t\t1028 512d  DC NVMe PM9A3 RI U.2 7.68TB\n\t\t144d a801  SSD 980 PRO\n\t\t144d a813  General DC NVMe PM9A3\n# Actually 88SS1322 according to techpowerup\n\ta80b  NVMe SSD Controller PM9B1 (DRAM-less)\n\ta80c  NVMe SSD Controller S4LV008[Pascal]\n\ta80d  NVMe SSD Controller PM9C1a (DRAM-less)\n\ta80e  NVMe SSD Controller PM9D3a\n\ta80f  BM9C1 QLC NVME SSD (DRAM-less)\n\ta810  NVMe SSD 9100 PRO [PM9E1]\n\ta811  BM9H1 NVME SSD (DRAM-less)\n\ta820  NVMe SSD Controller 171X\n\t\t1028 1f95  Express Flash NVMe XS1715 SSD 400GB\n\t\t1028 1f96  Express Flash NVMe XS1715 SSD 800GB\n\t\t1028 1f97  Express Flash NVMe XS1715 SSD 1600GB\n\t\t1028 1fa4  Express Flash NVMe SM1715 3.2TB SFF\n\t\t1028 1fa6  Express Flash NVMe SM1715 3.2TB AIC\n\t\t1028 1fba  Express Flash NVMe SM1715 800GB SFF\n\t\t1028 1fbb  Express Flash NVMe SM1715 1.6TB SFF\n\t\t1028 1fbc  Express Flash NVMe SM1715 1.6TB AIC\n\ta821  NVMe SSD Controller 172X\n\t\t1028 1fb7  Express Flash NVMe PM1725 3.2TB SFF\n\t\t1028 1fb8  Express Flash NVMe PM1725 3.2TB AIC\n\t\t1028 1fb9  Express Flash NVMe PM1725 6.4TB AIC\n\t\t1028 1fc1  Express Flash NVMe PM1725 800GB SFF\n\t\t1028 1fc2  Express Flash NVMe PM1725 1.6TB SFF\n\t\t1028 1fc4  Express Flash NVMe PM1725 1.6TB AIC\n\ta822  NVMe SSD Controller 172Xa/172Xb\n\t\t1014 0621  PCIe3 1.6TB NVMe Flash Adapter II x8\n\t\t1014 0622  PCIe3 3.2TB NVMe Flash Adapter II x8\n\t\t1014 0629  PCIe3 6.4TB NVMe Flash Adapter II x8\n\t\t1014 064a  PCIe3 1.6TB NVMe Flash Adapter III x8\n\t\t1014 064b  PCIe3 3.2TB NVMe Flash Adapter III x8\n\t\t1014 064c  PCIe3 6.4TB NVMe Flash Adapter III x8\n\t\t1028 1fd9  Express Flash PM1725a 800GB SFF\n\t\t1028 1fda  Express Flash PM1725a 1.6TB SFF\n\t\t1028 1fdb  Express Flash PM1725a 3.2TB SFF\n\t\t1028 1fdc  Express Flash PM1725a 6.4TB SFF\n\t\t1028 1fdd  Express Flash PM1725a 1.6TB AIC\n\t\t1028 1fde  Express Flash PM1725a 3.2TB AIC\n\t\t1028 1fdf  Express Flash PM1725a 6.4TB AIC\n\t\t1028 1ff3  Express Flash PM1725b 1.6TB SFF\n\t\t1028 1ff4  Express Flash PM1725b 3.2TB SFF\n\t\t1028 1ff5  Express Flash PM1725b 6.4TB SFF\n\t\t1028 1ff6  Express Flash PM1725b 12.8TB SFF\n\t\t1028 1ff7  Express Flash PM1725b 1.6TB AIC\n\t\t1028 1ff8  Express Flash PM1725b 3.2TB AIC\n\t\t1028 1ff9  Express Flash PM1725b 6.4TB AIC\n\t\t1028 1ffa  Express Flash PM1725b 12.8TB AIC\n\ta824  NVMe SSD Controller PM173X\n\t\t1028 2040  EMC PowerEdge Express Flash Ent NVMe AGN MU U.2 Gen4 1.6TB\n\t\t1028 2041  EMC PowerEdge Express Flash Ent NVMe AGN MU U.2 Gen4 3.2TB\n\t\t1028 2042  EMC PowerEdge Express Flash Ent NVMe AGN MU U.2 Gen4 6.4TB\n\t\t1028 2043  EMC PowerEdge Express Flash Ent NVMe AGN MU U.2 Gen4 12.8TB\n\t\t1028 2044  EMC PowerEdge Express Flash Ent NVMe AGN MU AIC Gen4 1.6TB\n\t\t1028 2045  EMC PowerEdge Express Flash Ent NVMe AGN MU AIC Gen4 3.2TB\n\t\t1028 2046  EMC PowerEdge Express Flash Ent NVMe AGN MU AIC Gen4 6.4TB\n\t\t1028 2070  EMC PowerEdge Express Flash Ent NVMe AGN RI U.2 Gen4 1.92TB\n\t\t1028 2071  EMC PowerEdge Express Flash Ent NVMe AGN RI U.2 Gen4 3.84TB\n\t\t1028 2072  EMC PowerEdge Express Flash Ent NVMe AGN RI U.2 Gen4 7.68TB\n\t\t1028 2073  EMC PowerEdge Express Flash Ent NVMe AGN RI U.2 Gen4 15.36TB\n\t\t1028 2074  EMC PowerEdge Express Flash Ent NVMe AGN RI AIC Gen4 1.92TB\n\t\t1028 2075  EMC PowerEdge Express Flash Ent NVMe AGN RI AIC Gen4 3.84TB\n\t\t1028 2076  EMC PowerEdge Express Flash Ent NVMe AGN RI AIC Gen4 7.68TB\n\t\t1028 2090  EMC PowerEdge Express Flash Ent NVMe AGN SED MU U.2 Gen4 1.6TB\n\t\t1028 2091  EMC PowerEdge Express Flash Ent NVMe AGN SED MU U.2 Gen4 3.2TB\n\t\t1028 2092  EMC PowerEdge Express Flash Ent NVMe AGN SED MU U.2 Gen4 6.4TB\n\t\t1028 2093  EMC PowerEdge Express Flash Ent NVMe AGN SED MU U.2 Gen4 12.8TB\n\t\t1028 2094  EMC PowerEdge Express Flash Ent NVMe AGN SED MU AIC Gen4 1.6TB\n\t\t1028 2095  EMC PowerEdge Express Flash Ent NVMe AGN SED MU AIC Gen4 3.2TB\n\t\t1028 2096  EMC PowerEdge Express Flash Ent NVMe AGN SED MU AIC Gen4 6.4TB\n\t\t1028 2097  EMC PowerEdge Express Flash Ent NVMe AGN SED RI U.2 Gen4 1.92TB\n\t\t1028 2098  EMC PowerEdge Express Flash Ent NVMe AGN SED RI U.2 Gen4 3.84TB\n\t\t1028 2099  EMC PowerEdge Express Flash Ent NVMe AGN SED RI U.2 Gen4 7.68TB\n\t\t1028 2118  Ent NVMe v2 AGN FIPS MU U.2 1.6TB\n\t\t1028 2119  Ent NVMe v2 AGN MU U.2 1.6TB\n\t\t1028 2120  Ent NVMe v2 AGN FIPS MU U.2 3.2T\n\t\t1028 2121  Ent NVMe v2 AGN MU U.2 3.2TB\n\t\t1028 2122  Ent NVMe v2 AGN FIPS MU U.2 6.4TB\n\t\t1028 2123  Ent NVMe v2 AGN MU U.2 6.4TB\n\t\t1028 2124  Ent NVMe v2 AGN FIPS MU U.2 6.4TB\n\t\t1028 2125  Ent NVMe v2 AGN MU U.2 12.8TB\n\t\t1028 2126  Ent NVMe v2 AGN FIPS RI U.2 1.92TB\n\t\t1028 2127  Ent NVMe v2 AGN RI U.2 1.92TB\n\t\t1028 2128  Ent NVMe v2 AGN FIPS RI U.2 3.84TB\n\t\t1028 2129  Ent NVMe v2 AGN RI U.2 3.84TB\n\t\t1028 2130  Ent NVMe v2 AGN FIPS RI U.2 7.68TB\n\t\t1028 2131  Ent NVMe v2 AGN RI U.2 7.68TB\n\t\t1028 2132  Ent NVMe v2 AGN FIPS RI U.2 15.36TB\n\t\t1028 2133  Ent NVMe v2 AGN RI U.2 15.36TB\n\ta825  NVMe SSD Controller PM173Xa\n\t\t1028 2178  Ent NVMe FIPS PM1733a RI 1.92TB\n\t\t1028 2179  Ent NVMe PM1733a RI 1.92TB\n\t\t1028 217a  Ent NVMe FIPS PM1733a RI 3.84TB\n\t\t1028 217b  Ent NVMe PM1733a RI 3.84TB\n\t\t1028 217c  Ent NVMe FIPS PM1733a RI 7.68TB\n\t\t1028 217d  Ent NVMe PM1733a RI 7.68TB\n\t\t1028 217e  Ent NVMe FIPS PM1733a RI 15.36TB\n\t\t1028 217f  Ent NVMe PM1733a RI 15.36TB\n\t\t1028 2180  Ent NVMe FIPS PM1735a MU 1.6TB\n\t\t1028 2181  Ent NVMe PM1735a MU 1.6TB\n\t\t1028 2182  Ent NVMe FIPS PM1735a MU 3.2TB\n\t\t1028 2183  Ent NVMe PM1735a MU 3.2TB\n\t\t1028 2184  Ent NVMe FIPS PM1735a MU 6.4TB\n\t\t1028 2185  Ent NVMe PM1735a MU 6.4TB\n\t\t1028 2186  Ent NVMe FIPS PM1735a MU 12.8TB\n\t\t1028 2187  Ent NVMe PM1735a MU 12.8TB\n\t\t1028 226a  Ent NVMe FIPS PM1733a RI 30.72TB\n\ta826  NVMe SSD Controller PM174X\n\t\t1028 2214  NVMe PM1743 RI E3.S 1.92TB\n\t\t1028 2216  NVMe PM1743 RI E3.S 3.84TB\n\t\t1028 2218  NVMe PM1743 RI E3.S 7.68TB\n\t\t1028 221a  NVMe PM1743 RI E3.S 15.36TB\n\t\t1028 221c  NVMe PM1745 MU E3.S 1.6TB\n\t\t1028 221e  NVMe PM1745 MU E3.S 3.2TB\n\t\t1028 2220  NVMe PM1745 MU E3.S 6.4TB\n\t\t1028 2222  NVMe PM1745 MU E3.S 12.8TB\n\t\t1028 224e  NVMe FIPS PM1743 RI U.2 1.92TB\n\t\t1028 224f  NVMe PM1743 RI U.2 1.92TB\n\t\t1028 2250  NVMe FIPS PM1743 RI U.2 3.84TB\n\t\t1028 2251  NVMe PM1743 RI U.2 3.84TB\n\t\t1028 2252  NVMe FIPS PM1743 RI U.2 7.68TB\n\t\t1028 2253  NVMe PM1743 RI U.2 7.68TB\n\t\t1028 2254  NVMe FIPS PM1743 RI U.2 15.36TB\n\t\t1028 2255  NVMe PM1743 RI U.2 15.36TB\n\t\t1028 2258  NVMe FIPS PM1745 MU U.2 1.6TB\n\t\t1028 2259  NVMe PM1745 MU U.2 1.6TB\n\t\t1028 225a  NVMe FIPS PM1745 MU U.2 3.2TB\n\t\t1028 225b  NVMe PM1745 MU U.2 3.2TB\n\t\t1028 225c  NVMe FIPS PM1745 MU U.2 6.4TB\n\t\t1028 225d  NVMe PM1745 MU U.2 6.4TB\n\t\t1028 225e  NVMe FIPS PM1745 MU U.2 12.8TB\n\t\t1028 225f  NVMe PM1745 MU U.2 12.8TB\n\ta900  NVMe SSD Controller PM9DXa\n\t\t1028 230f  DC NVMe PM9D3a RI 80M.2 480GB ISE\n\t\t1028 2310  DC NVMe PM9D3a RI 80M.2 960GB ISE\n\t\t1028 2311  DC NVMe PM9D3a RI 80M.2 1.92TB ISE\n\t\t1028 2341  DC NVMe PM9D3a RI U.2 960GB　\n\t\t1028 2342  DC NVMe PM9D3a RI U.2 1.92TB\n\t\t1028 2343  DC NVMe PM9D3a RI U.2 3.84TB\n\t\t1028 2344  DC NVMe PM9D3a RI U.2 7.68GTB\n\t\t1028 2345  DC NVMe PM9D3a RI U.2 15.36TB\n\t\t1028 2346  DC NVMe FIPS PM9D3a RI U.2 960GB\n\t\t1028 2347  DC NVMe FIPS PM9D3a RI U.2 1.92TB\n\t\t1028 2348  DC NVMe FIPS PM9D3a RI U.2 3.84TB\n\t\t1028 2349  DC NVMe FIPS PM9D3a RI U.2 7.68TB\n\t\t1028 234a  DC NVMe FIPS PM9D3a RI U.2 15.36TB　\n\t\t1028 234d  DC NVMe PM9D3a RI E3s 1.92TB\n\t\t1028 234e  DC NVMe PM9D3a RI E3s 3.84TB　\n\t\t1028 234f  DC NVMe PM9D3a RI E3s 7.68GTB\n\t\t1028 2350  DC NVMe PM9D3a RI E3s 15.36TB\n\t\t1028 2351  DC NVMe FIPS PM9D3a RI E3s 1.92TB\n\t\t1028 2352  DC NVMe FIPS PM9D3a RI E3s 3.84TB\n\t\t1028 2353  DC NVMe FIPS PM9D3a RI E3s 7.68TB\n\t\t1028 2354  DC NVMe FIPS PM9D3a RI E3s 15.36TB\n\t\t1028 2355  DC NVMe PM9D5a MU U.2 800GB\n\t\t1028 2356  DC NVMe PM9D5a MU U.2 1.6TB\n\t\t1028 2357  DC NVMe PM9D5a MU U.2 3.2TB\n\t\t1028 2358  DC NVMe PM9D5a MU U.2 6.4TB\n\t\t1028 2359  DC NVMe PM9D5a MU E3.s 1.6TB\n\t\t1028 235a  DC NVMe PM9D5a MU E3.s 3.2TB\n\t\t1028 235b  DC NVMe PM9D5a MU E3.s 6.4TB\n\taa00  NVMe SSD Controller BM1743\n\t\t1028 2312  NVMe FIPS BM1743 QLC U.2 15.36TB\n\t\t1028 2313  NVMe FIPS BM1743 QLC U.2 30.72TB\n\t\t1028 2314  NVMe FIPS BM1743 QLC U.2 61.44TB\n\t\t1028 2315  NVMe BM1743 QLC U.2 15.36TB\n\t\t1028 2316  NVMe BM1743 QLC U.2 30.72TB\n\t\t1028 2317  NVMe BM1743 QLC U.2 61.44TB\n\t\t1028 2364  NVMe BM1743 QLC U.2 122.88TB\n\t\t1028 2366  MZ3MO15THCLCAD3\n\t\t1028 2367  MZ3MO30THCLFAD3\n\tac00  NVMe SSD Controller PM175x\n\tecec  Exynos 8895 PCIe Root Complex\n144e  OLITEC\n144f  Askey Computer Corp.\n1450  Octave Communications Ind.\n1451  SP3D Chip Design GmBH\n1453  MYCOM Inc\n1454  Altiga Networks\n1455  Logic Plus Plus Inc\n1456  Advanced Hardware Architectures\n1457  Nuera Communications Inc\n1458  Gigabyte Technology Co., Ltd\n\t1002  Aourus Radeon RX6900XT Xtreme Waterforce WB 16G\n\t22e8  Ellesmere [Radeon RX 480]\n\t2425  Radeon RX 9070 GAMING OC 16G\n\t3483  USB 3.0 Controller (VIA VL80x-based xHCI Controller)\n1459  DOOIN Electronics\n145a  Escalate Networks Inc\n145b  PRAIM SRL\n145c  Cryptek\n145d  Gallant Computer Inc\n145e  Aashima Technology B.V.\n145f  Baldor Electric Company\n\t0001  NextMove PCI\n1460  DYNARC INC\n1461  Avermedia Technologies Inc\n\ta3ce  M179\n\ta3cf  M179\n\ta836  M115 DVB-T, PAL/SECAM/NTSC Tuner\n\te836  M115S Hybrid Analog/DVB PAL/SECAM/NTSC Tuner\n\tf436  AVerTV Hybrid+FM\n1462  Micro-Star International Co., Ltd. [MSI]\n\t3483  MSI USB 3.0 (VIA VL80x-based xHCI USB Controller)\n# This is MSI refreshed variant of their MECH series Navi 23 GPU card (73EF)\n\t5027  RX 6650XT MECH 2X\n\t7c56  Realtek Ethernet controller RTL8111H\n\taaf0  Radeon RX 580 Gaming X 8G\n1463  Fast Corporation\n1464  Interactive Circuits & Systems Ltd\n1465  GN NETTEST Telecom DIV.\n1466  Designpro Inc.\n1467  DIGICOM SPA\n1468  AMBIT Microsystem Corp.\n1469  Cleveland Motion Controls\n# formerly IFR.\n146a  Aeroflex\n# 1.5 GHz to 3.0 GHz x 1Hz\n\t3010  3010 RF Synthesizer\n\t3a11  3011A PXI RF Synthesizer\n146b  Parascan Technologies Ltd\n146c  Ruby Tech Corp.\n\t1430  FE-1430TX Fast Ethernet PCI Adapter\n146d  Tachyon, INC.\n146e  Williams Electronics Games, Inc.\n146f  Multi Dimensional Consulting Inc\n1470  Bay Networks\n1471  Integrated Telecom Express Inc\n1472  DAIKIN Industries, Ltd\n1473  ZAPEX Technologies Inc\n1474  Doug Carson & Associates\n1475  PICAZO Communications\n1476  MORTARA Instrument Inc\n1477  Net Insight\n1478  DIATREND Corporation\n1479  TORAY Industries Inc\n147a  FORMOSA Industrial Computing\n147b  ABIT Computer Corp.\n\t1084  IP35 [Dark Raider]\n147c  AWARE, Inc.\n147d  Interworks Computer Products\n147e  Matsushita Graphic Communication Systems, Inc.\n147f  NIHON UNISYS, Ltd.\n1480  SCII Telecom\n1481  BIOPAC Systems Inc\n1482  ISYTEC - Integrierte Systemtechnik GmBH\n\t0001  PCI-16 Host Interface for ITC-16\n1483  LABWAY Corporation\n1484  Logic Corporation\n1485  ERMA - Electronic GmBH\n1486  L3 Communications Telemetry & Instrumentation\n1487  MARQUETTE Medical Systems\n1489  KYE Systems Corporation\n148a  OPTO\n148b  INNOMEDIALOGIC Inc.\n148c  Tul Corporation / PowerColor\n\t2391  Radeon RX 590 [Red Devil]\n\t2398  AXRX 5700 XT 8GBD6-3DHE/OC [PowerColor Red Devil Radeon RX 5700 XT]\n148d  DIGICOM Systems, Inc.\n\t1003  HCF 56k Data/Fax Modem\n148e  OSI Plus Corporation\n148f  Plant Equipment, Inc.\n1490  Stone Microsystems PTY Ltd.\n1491  ZEAL Corporation\n1492  Time Logic Corporation\n1493  MAKER Communications\n1494  WINTOP Technology, Inc.\n1495  TOKAI Communications Industry Co. Ltd\n1496  JOYTECH Computer Co., Ltd.\n1497  SMA Regelsysteme GmBH\n\t1497  SMA Technologie AG\n1498  TEWS Technologies GmbH\n\t0330  TPMC816 2 Channel CAN bus controller.\n\t035d  TPMC861 4-Channel Isolated Serial Interface RS422/RS485\n\t0385  TPMC901 Extended CAN bus with 2/4/6 CAN controller\n\t21cc  TCP460 CompactPCI 16 Channel Serial Interface RS232/RS422\n\t21cd  TCP461 CompactPCI 8 Channel Serial Interface RS232/RS422\n\t3064  TPCI100 (2 Slot IndustryPack PCI Carrier)\n\t30c8  TPCI200 4 Slot IndustryPack PCI Carrier\n\t70c8  TPCE200 4 Slot IndustryPack PCIe Carrier\n\t9177  TXMC375 8 channel RS232/RS422/RS485 programmable serial interface\n1499  EMTEC CO., Ltd\n149a  ANDOR Technology Ltd\n149b  SEIKO Instruments Inc\n149c  OVISLINK Corp.\n149d  NEWTEK Inc\n\t0001  Video Toaster for PC\n149e  Mapletree Networks Inc.\n149f  LECTRON Co Ltd\n14a0  SOFTING GmBH\n14a1  Systembase Co Ltd\n\t4d02  SB16C1052PCI [Multi-2/PCIe RS232]\n14a2  Millennium Engineering Inc\n14a3  Maverick Networks\n14a4  Lite-On Technology Corporation\n\t2100  CA1-8D128 NVMe SSD\n\t21f1  Plextor NVMe SSD\n\t2200  CX2-8B256, CX2-8B512 NVMe SSD\n\t22a0  EP2-KB960 NVMe SSD\n\t22f1  M8Pe Series NVMe SSD\n\t2300  CA3-8D256, CA3-8D512 NVMe SSD\n\t23f1  M9PeG, M9PeGN, M9PeY NVMe SSD\n\t2f00  CAZ-82512 NVMe SSD\n\t3500  CA5-8D512 NVMe SSD\n\t35f1  PLEXTOR PX-256M9PGN+ NVMe SSD\n# Wrong vendor ID used\n\t4318  Broadcom BCM4318 [AirForce One 54g] 802.11g WLAN Controller\n\t5100  CB1-SD256, CB1-SD512 NVMe SSD\n\t9100  CL1-3D256, CL1-8D512 NVMe SSD (DRAM-less)\n14a5  XIONICS Document Technologies Inc\n14a6  INOVA Computers GmBH & Co KG\n14a7  MYTHOS Systems Inc\n14a8  FEATRON Technologies Corporation\n14a9  HIVERTEC Inc\n14aa  Advanced MOS Technology Inc\n# nee Mentor Graphics Corp.\n14ab  Siemens Industry Software Inc.\n14ac  Novaweb Technologies Inc\n14ad  Time Space Radio AB\n14ae  CTI, Inc\n14af  Guillemot Corporation\n\t7102  3D Prophet II MX\n14b0  BST Communication Technology Ltd\n14b1  Nextcom K.K.\n14b2  ENNOVATE Networks Inc\n14b3  XPEED Inc\n\t0000  DSL NIC\n14b4  PHILIPS Business Electronics B.V.\n14b5  Creamware GmBH\n\t0200  Scope\n\t0300  Pulsar\n\t0400  PulsarSRB\n\t0600  Pulsar2\n\t0800  DSP-Board\n\t0900  DSP-Board\n\t0a00  DSP-Board\n\t0b00  DSP-Board\n14b6  Quantum Data Corp.\n14b7  PROXIM Inc\n\t0001  Symphony 4110\n14b8  Techsoft Technology Co Ltd\n14b9  Cisco Aironet Wireless Communications\n\t0001  PC4800\n\t0340  PC4800\n\t0350  350 series 802.11b Wireless LAN Adapter\n\t4500  PC4500\n\t4800  Cisco Aironet 340 802.11b Wireless LAN Adapter/Aironet PC4800\n\ta504  Cisco Aironet Wireless 802.11b\n\ta505  Cisco Aironet CB20a 802.11a Wireless LAN Adapter\n\ta506  Cisco Aironet Mini PCI b/g\n14ba  INTERNIX Inc.\n# ARCNET interface card based on SMSC COM20022 chip and manufactured for SMSC Japan\n\t0600  ARC-PCI/22\n14bb  SEMTECH Corporation\n14bc  Globespan Semiconductor Inc.\n\td002  Pulsar [PCI ADSL Card]\n\td00f  Pulsar [PCI ADSL Card]\n14bd  CARDIO Control N.V.\n14be  L3 Communications\n14bf  SPIDER Communications Inc.\n14c0  COMPAL Electronics Inc\n\t1201  X550 10Gb 2P RJ45 OCP Mezz\n# now owned by CSP, Inc.\n14c1  MYRICOM Inc.\n\t0008  Myri-10G Dual-Protocol NIC\n\t\t14c1 0008  10G-PCIE-8A\n\t\t14c1 0009  10G-PCIE-8A (MSI-X firmware)\n\t\t14c1 000a  10G-PCIE-8B\n\t8043  Myrinet 2000 Scalable Cluster Interconnect\n\t\t103c 1240  Myrinet M2L-PCI64/2-3.0 LANai 7.4 (HP OEM)\n14c2  DTK Computer\n14c3  MEDIATEK Corp.\n\t0608  MT7921K (RZ608) Wi-Fi 6E 80MHz\n\t0616  MT7922 802.11ax PCI Express Wireless Network Adapter\n\t0717  MT7925 (RZ717) Wi-Fi 7 160MHz\n\t4d75  T700 5G Modem [5G Solution 5000]\n\t7603  MT7603E 802.11bgn PCI Express Wireless Network Adapter\n\t7612  MT7612E 802.11acbgn PCI Express Wireless Network Adapter\n\t7615  MT7615E 802.11ac PCI Express Wireless Network Adapter\n\t7630  MT7630e 802.11bgn Wireless Network Adapter\n\t7650  MT7650 802.11ac\n# MT7612E too?\n\t7662  MT7662E 802.11ac PCI Express Wireless Network Adapter\n\t7663  MT7663 802.11ac PCI Express Wireless Network Adapter\n\t7915  MT7915E 802.11ax PCI Express Wireless Network Adapter\n\t7916  MT7905D/MT7975\n# WiFi 6E capable\n\t7922  MT7922 802.11ax PCI Express Wireless Network Adapter\n\t\t1a3b 5300  ASUS PCE-AXE59BT\n\t7961  MT7921 802.11ax PCI Express Wireless Network Adapter\n\t7988  MT7988 PCI Express Host Bridge [Filogic 880]\n\t7990  MT7996 802.11be PCI Express Wireless Network Adapter (Port 0)\n\t7991  MT7996 802.11be PCI Express Wireless Network Adapter (Port 1)\n\t8650  MT7650 Bluetooth\n14c4  IWASAKI Information Systems Co Ltd\n14c5  Automation Products AB\n14c6  Data Race Inc\n14c7  Modular Technology Holdings Ltd\n14c8  Turbocomm Tech. Inc.\n14c9  ODIN Telesystems Inc\n14ca  PE Logic Corp.\n14cb  Billionton Systems Inc\n14cc  NAKAYO Telecommunications Inc\n14cd  Universal Global Scientific Industrial Co.,Ltd\n\t0001  USI-1514-1GbaseT [OCP1]\n\t0002  USI-4227-SFP [OCP2]\n\t0003  USI-X557-10GbaseT [OCP3]\n14ce  Whistle Communications\n14cf  TEK Microsystems Inc.\n14d0  Ericsson Axe R & D\n14d1  Computer Hi-Tech Co Ltd\n14d2  Titan Electronics Inc\n\t8001  VScom 010L 1 port parallel adaptor\n\t8002  VScom 020L 2 port parallel adaptor\n\t8010  VScom 100L 1 port serial adaptor\n\t8011  VScom 110L 1 port serial and 1 port parallel adaptor\n\t8020  VScom 200L 1 or 2 port serial adaptor\n\t8021  VScom 210L 2 port serial and 1 port parallel adaptor\n\t8028  VScom 200I/200I-SI 2-port serial adapter\n\t8040  VScom 400L 4 port serial adaptor\n\t8043  VScom 430L 4-port serial and 3-port parallel adapter\n\t8048  VScom 400I 4-port serial adapter\n\t8080  VScom 800L 8 port serial adaptor\n\t8088  VScom 800I 8-port serial adapter\n\ta000  VScom 010H 1 port parallel adaptor\n\ta001  VScom 100H 1 port serial adaptor\n\ta003  VScom 400H 4 port serial adaptor\n\ta004  VScom 400HF1 4 port serial adaptor\n\ta005  VScom 200H 2 port serial adaptor\n\ta007  VScom PCI800EH (PCIe) 8-port serial adapter Port 1-4\n\ta008  VScom PCI800EH (PCIe) 8-port serial adapter Port 5-8\n\ta009  VScom PCI400EH (PCIe) 4-port serial adapter\n\te001  VScom 010HV2 1 port parallel adaptor\n\te010  VScom 100HV2 1 port serial adaptor\n\te020  VScom 200HV2 2 port serial adaptor\n14d3  CIRTECH (UK) Ltd\n\t0002  DTL-T14000 Rev. 1 [PS2 TOOL CD/DVD Emulator]\n\t0003  DTL-T14000 Rev. 2 [PS2 TOOL CD/DVD Emulator]\n\t0004  DTL-T14000 Rev. 3 [PS2 TOOL CD/DVD Emulator]\n14d4  Panacom Technology Corp\n14d5  Nitsuko Corporation\n14d6  Accusys Inc\n\t6101  ACS-61xxx, PCIe to SAS/SATA RAID HBA\n\t6201  ACS-62xxx, External PCIe to SAS/SATA RAID controller\n14d7  Hirakawa Hewtech Corp\n14d8  HOPF Elektronik GmBH\n# Formerly SiPackets, Inc., formerly API NetWorks, Inc., formerly Alpha Processor, Inc.\n14d9  Alliance Semiconductor Corporation\n\t0010  AP1011/SP1011 HyperTransport-PCI Bridge [Sturgeon]\n\t9000  AS90L10204/10208 HyperTransport to PCI-X Bridge\n14da  National Aerospace Laboratories\n14db  AFAVLAB Technology Inc\n\t2120  TK9902\n\t2182  AFAVLAB Technology Inc. 8-port serial card\n14dc  Amplicon Liveline Ltd\n\t0000  PCI230\n\t0001  PCI242\n\t0002  PCI244\n\t0003  PCI247\n\t0004  PCI248\n\t0005  PCI249\n\t0006  PCI260\n\t0007  PCI224\n\t0008  PCI234\n\t0009  PCI236\n\t000a  PCI272\n\t000b  PCI215\n14dd  Boulder Design Labs Inc\n14de  Applied Integration Corporation\n14df  ASIC Communications Corp\n14e1  INVERTEX\n14e2  INFOLIBRIA\n14e3  AMTELCO\n14e4  Broadcom Inc. and subsidiaries\n\t0576  BCM43224 802.11a/b/g/n\n\t0800  Sentry5 Chipcommon I/O Controller\n\t0804  Sentry5 PCI Bridge\n\t0805  Sentry5 MIPS32 CPU\n\t0806  Sentry5 Ethernet Controller\n\t080b  Sentry5 Crypto Accelerator\n\t080f  Sentry5 DDR/SDR RAM Controller\n\t0811  Sentry5 External Interface Core\n\t0816  BCM3302 Sentry5 MIPS32 CPU\n\t1570  720p FaceTime HD Camera\n\t1600  NetXtreme BCM5752 Gigabit Ethernet PCI Express\n\t\t1028 01c1  Precision 490\n\t\t1028 01c2  Latitude D620\n\t\t103c 3015  PCIe LAN on Motherboard\n\t\t107b 5048  E4500 Onboard\n\t\t1259 2705  AT-2711FX\n\t1601  NetXtreme BCM5752M Gigabit Ethernet PCI Express\n\t1604  BCM5745X NetXtreme-E Ethernet Partition\n\t1605  BCM5745X NetXtreme-E RDMA Partition\n\t1606  BCM5745X NetXtreme-E RDMA Virtual Function\n\t1609  BCM5745X NetXtreme-E Ethernet Virtual Function\n\t1612  BCM70012 Video Decoder [Crystal HD]\n\t1614  BCM57454 NetXtreme-E 10Gb/25Gb/40Gb/50Gb/100Gb Ethernet\n\t\t14e4 d140  NetXtreme-E Quad-port 10GBASE-T Ethernet PCIe Adapter (BCM957454-P410SDBT)\n\t\t14e4 d340  NetXtreme-E Quad-port 10GBASE-T Ethernet OCP 3.0 Adapter (BCM957454-N410SDBT)\n\t1615  BCM70015 Video Decoder [Crystal HD]\n\t1639  NetXtreme II BCM5709 Gigabit Ethernet\n\t\t1028 0235  PowerEdge R710 BCM5709 Gigabit Ethernet\n\t\t1028 0236  PowerEdge R610 BCM5709 Gigabit Ethernet\n\t\t1028 0237  PowerEdge T610 BCM5709 Gigabit Ethernet\n\t\t103c 7055  NC382i Integrated Multi-port PCI Express Gigabit Server Adapter\n\t\t103c 7059  NC382T PCIe Dual Port Multifunction Gigabit Server Adapter\n\t\t10a9 8027  Quad port Gigabit Ethernet Controller\n\t163a  NetXtreme II BCM5709S Gigabit Ethernet\n\t\t1028 027b  PowerEdge M805 Broadcom NetXtreme II BCM5709S\n\t\t1028 029c  PowerEdge M710 BCM5709S Gigabit Ethernet\n\t\t103c 171d  NC382m Dual Port 1GbE Multifunction BL-c Adapter\n\t\t103c 7056  NC382i Integrated Quad Port PCI Express Gigabit Server Adapter\n\t\t1259 2984  AT-2973SX\n\t163b  NetXtreme II BCM5716 Gigabit Ethernet\n\t\t1028 028c  PowerEdge R410 BCM5716 Gigabit Ethernet\n\t\t1028 028d  PowerEdge T410 BCM5716 Gigabit Ethernet\n\t\t1028 02f1  PowerEdge R510 BCM5716 Gigabit Ethernet\n\t163c  NetXtreme II BCM5716S Gigabit Ethernet\n\t163d  NetXtreme II BCM57811 10-Gigabit Ethernet\n\t\t1043 858a  PEB-10G/57811-1S\n\t163e  NetXtreme II BCM57811 10 Gigabit Ethernet Multi Function\n\t163f  NetXtreme II BCM57811 10-Gigabit Ethernet Virtual Function\n\t1641  NetXtreme BCM57787 Gigabit Ethernet PCIe\n\t1642  NetXtreme BCM57764 Gigabit Ethernet PCIe\n\t1643  NetXtreme BCM5725 Gigabit Ethernet PCIe\n\t1644  NetXtreme BCM5700 Gigabit Ethernet\n\t\t1014 0277  Broadcom Vigil B5700 1000Base-T\n\t\t1028 00d1  Broadcom BCM5700\n\t\t1028 0106  Broadcom BCM5700\n\t\t1028 0109  Broadcom BCM5700 1000Base-T\n\t\t1028 010a  Broadcom BCM5700 1000BaseTX\n\t\t10b7 1000  3C996-T 1000Base-T\n\t\t10b7 1001  3C996B-T 1000Base-T\n\t\t10b7 1002  3C996C-T 1000Base-T\n\t\t10b7 1003  3C997-T 1000Base-T Dual Port\n\t\t10b7 1004  3C996-SX 1000Base-SX\n\t\t10b7 1005  3C997-SX 1000Base-SX Dual Port\n\t\t10b7 1008  3C942 Gigabit LOM (31X31)\n\t\t14e4 0002  NetXtreme 1000Base-SX\n\t\t14e4 0003  NetXtreme 1000Base-SX\n\t\t14e4 0004  NetXtreme 1000Base-T\n\t\t14e4 1028  NetXtreme 1000BaseTX\n\t\t14e4 1644  BCM5700 1000Base-T\n\t1645  NetXtreme BCM5701 Gigabit Ethernet\n\t\t0e11 007c  NC7770 Gigabit Server Adapter (PCI-X, 10/100/1000-T)\n\t\t0e11 007d  NC6770 Gigabit Server Adapter (PCI-X, 1000-SX)\n\t\t0e11 0085  NC7780 Gigabit Server Adapter (embedded, WOL)\n\t\t0e11 0099  NC7780 Gigabit Server Adapter (embedded, WOL)\n\t\t0e11 009a  NC7770 Gigabit Server Adapter (PCI-X, 10/100/1000-T)\n\t\t0e11 00c1  NC6770 Gigabit Server Adapter (PCI-X, 1000-SX)\n\t\t1028 0121  Broadcom BCM5701 1000Base-T\n\t\t103c 128a  BCM5701 1000Base-T (HP, OEM 3COM)\n\t\t103c 128b  1000Base-SX (PCI) [A7073A]\n\t\t103c 12a4  Core Lan 1000Base-T\n\t\t103c 12c1  IOX Core Lan 1000Base-T [A7109AX]\n\t\t103c 1300  Core LAN/SCSI Combo [A6794A]\n\t\t10a9 8010  IO9/IO10 Gigabit Ethernet (Copper)\n\t\t10a9 8011  Gigabit Ethernet (Copper)\n\t\t10a9 8012  Gigabit Ethernet (Fiber)\n\t\t10b7 1004  3C996-SX 1000Base-SX\n\t\t10b7 1006  3C996B-T 1000Base-T\n\t\t10b7 1007  3C1000-T 1000Base-T\n\t\t10b7 1008  3C940-BR01 1000Base-T\n\t\t14e4 0001  BCM5701 1000Base-T\n\t\t14e4 0005  BCM5701 1000Base-T\n\t\t14e4 0006  BCM5701 1000Base-T\n\t\t14e4 0007  BCM5701 1000Base-SX\n\t\t14e4 0008  BCM5701 1000Base-T\n\t\t14e4 1645  NetXtreme BCM5701 Gigabit Ethernet\n\t\t14e4 8008  BCM5701 1000Base-T\n\t1646  NetXtreme BCM5702 Gigabit Ethernet\n\t\t0e11 00bb  NC7760 1000BaseTX\n\t\t1028 0126  Broadcom BCM5702 1000BaseTX\n\t\t14e4 8009  BCM5702 1000BaseTX\n\t1647  NetXtreme BCM5703 Gigabit Ethernet\n\t\t0e11 0099  NC7780 1000BaseTX\n\t\t0e11 009a  NC7770 1000BaseTX\n\t\t10a9 8010  IO9 Gigabit Ethernet (Copper)\n\t\t14e4 0009  BCM5703 1000BaseTX\n\t\t14e4 000a  BCM5703 1000BaseSX\n\t\t14e4 000b  BCM5703 1000BaseTX\n\t\t14e4 8009  BCM5703 1000BaseTX\n\t\t14e4 800a  BCM5703 1000BaseTX\n\t1648  NetXtreme BCM5704 Gigabit Ethernet\n\t\t0e11 00cf  NC7772 Gigabit Server Adapter (PCI-X, 10,100,1000-T)\n\t\t0e11 00d0  NC7782 Gigabit Server Adapter (PCI-X, 10,100,1000-T)\n\t\t0e11 00d1  NC7783 Gigabit Server Adapter (PCI-X, 10,100,1000-T)\n\t\t1028 014a  PowerEdge 1750\n\t\t1028 0170  PowerEdge 6850 Broadcom NetXtreme BCM5704\n\t\t103c 310f  NC7782 Gigabit Server Adapter (PCI-X, 10,100,1000-T)\n\t\t10a9 8013  Dual Port Gigabit Ethernet (PCI-X,Copper)\n\t\t10a9 8018  Dual Port Gigabit Ethernet (A330)\n\t\t10a9 801a  Dual Port Gigabit Ethernet (IA-blade)\n\t\t10a9 801b  Quad Port Gigabit Ethernet (PCI-E,Copper)\n\t\t10b7 2000  3C998-T Dual Port 10/100/1000 PCI-X\n\t\t10b7 3000  3C999-T Quad Port 10/100/1000 PCI-X\n\t\t1166 1648  NetXtreme CIOB-E 1000Base-T\n\t\t1734 100b  PRIMERGY RX/TX series onboard LAN\n\t1649  NetXtreme BCM5704S_2 Gigabit Ethernet\n\t164a  NetXtreme II BCM5706 Gigabit Ethernet\n\t\t103c 1709  NC371i Integrated PCI-X Multifunction Gigabit Server Adapter\n\t\t103c 3070  NC380T PCI Express Dual Port Multifunction Gigabit Server Adapter\n\t\t103c 3101  NC370T MultifuNCtion Gigabit Server Adapter\n\t\t103c 3106  NC370i Multifunction Gigabit Server Adapter\n\t164c  NetXtreme II BCM5708 Gigabit Ethernet\n\t\t1028 01f0  PowerEdge R900 Broadcom NetXtreme II BCM5708\n\t\t1028 0205  PowerEdge 2970 Broadcom NetXtreme II BCM5708\n\t\t1028 020b  PowerEdge T605 Broadcom NetXtreme II BCM5708\n\t\t1028 0221  PowerEdge R805 Broadcom NetXtreme II BCM5708\n\t\t1028 0223  PowerEdge R905 Broadcom NetXtreme II BCM5708\n\t\t1028 1f12  PowerEdge R805/R905 Broadcom NetXtreme II BCM5708\n\t\t103c 7037  NC373T PCI Express Multifunction Gigabit Server Adapter\n\t\t103c 7038  NC373i Integrated Multifunction Gigabit Server Adapter\n\t\t103c 7045  NC374m PCI Express Dual Port Multifunction Gigabit Server Adapter\n\t164d  NetXtreme BCM5702FE Gigabit Ethernet\n\t164e  NetXtreme II BCM57710 10-Gigabit PCIe [Everest]\n\t\t103c 171c  NC532m Dual Port 10GbE Multifunction BL-C Adapter\n\t\t103c 7058  NC532i Dual Port 10GbE Multifunction BL-C Adapter\n\t164f  NetXtreme II BCM57711 10-Gigabit PCIe\n\t1650  NetXtreme II BCM57711E 10-Gigabit PCIe\n\t\t103c 171c  NC532m Dual Port 10GbE Multifunction BL-C Adapter\n\t\t103c 7058  NC532i Dual Port 10GbE Multifunction BL-C Adapter\n\t1653  NetXtreme BCM5705 Gigabit Ethernet\n\t\t0e11 00e3  NC7761 Gigabit Server Adapter\n\t\t1734 1073  Primergy Econel 200 D2020 mainboard\n\t1654  NetXtreme BCM5705_2 Gigabit Ethernet\n\t\t0e11 00e3  NC7761 Gigabit Server Adapter\n\t\t103c 3100  NC1020 ProLiant Gigabit Server Adapter 32 PCI\n\t\t103c 3226  NC150T 4-port Gigabit Combo Switch & Adapter\n\t1655  NetXtreme BCM5717 Gigabit Ethernet PCIe\n\t1656  NetXtreme BCM5718 Gigabit Ethernet PCIe\n\t1657  NetXtreme BCM5719 Gigabit Ethernet PCIe\n\t\t1014 0420  FC 5260/5899 4-port 1 GbE Adapter for Power\n\t\t103c 169d  Ethernet 1Gb 4-port 331FLR Adapter\n\t\t103c 22be  Ethernet 1Gb 4-port 331i Adapter\n\t\t103c 3383  Ethernet 1Gb 4-port 331T Adapter\n\t\t14e4 1904  4-port 1Gb Ethernet Adapter\n\t\t14e4 1909  Broadcom NetXtreme 5719 Quad Port Gigabit NIC\n\t\t14e4 d166  BCM95719-P41 4x1GBT Ethernet NIC\n\t\t14e4 d366  BCM95719-N41 4x1GBT Ethernet NIC\n\t\t193d 1025  NIC-ETH330T-LP-4P\n# NIC-ETH330T-3S-4P 4xGE 1000Base-T for OCP3.0\n\t\t193d 1086  NIC-ETH330T-3S-4P\n\t1659  NetXtreme BCM5721 Gigabit Ethernet PCI Express\n\t\t1014 02c6  eServer xSeries server mainboard\n\t\t1028 01e6  PowerEdge 860\n\t\t1028 023c  PowerEdge R200 Broadcom NetXtreme BCM5721\n\t\t103c 170b  NC320m PCI Express Dual Port Gigabit Server Adapter\n\t\t103c 7031  NC320T PCIe Gigabit Server Adapter\n\t\t103c 7032  NC320i PCIe Gigabit Server Adapter\n\t\t1734 1061  PRIMERGY RX/TX S2 series onboard LAN\n\t165a  NetXtreme BCM5722 Gigabit Ethernet PCI Express\n# Dual NIC server\n\t\t1014 0378  System x3350 (Machine type 4192)\n\t\t1028 020f  PowerEdge R300 Broadcom NetXtreme 5722\n\t\t1028 0210  PowerEdge T300 Broadcom NetXtreme 5722\n\t\t1028 0225  PowerEdge T105 Broadcom NetXtreme 5722\n\t\t103c 7051  NC105i PCIe Gigabit Server Adapter\n\t\t103c 7052  NC105T PCIe Gigabit Server Adapter\n\t165b  NetXtreme BCM5723 Gigabit Ethernet PCIe\n\t\t103c 705d  NC107i Integrated PCI Express Gigabit Server Adapter\n\t165c  NetXtreme BCM5724 Gigabit Ethernet PCIe\n\t165d  NetXtreme BCM5705M Gigabit Ethernet\n\t\t1028 865d  Latitude D400\n\t\t14e4 165d  Dell Latitude D600\n\t165e  NetXtreme BCM5705M_2 Gigabit Ethernet\n\t\t103c 088c  NC8000 laptop\n\t\t103c 0890  NC6000 laptop\n\t\t103c 099c  NX6110/NC6120\n\t\t10cf 1279  LifeBook E8010D\n\t165f  NetXtreme BCM5720 Gigabit Ethernet PCIe\n\t\t1028 04f7  PowerEdge R320 server\n\t\t1028 08fd  PowerEdge R6515/R7515 LOM\n\t\t1028 08ff  PowerEdge Rx5xx LOM Board\n\t\t1028 0900  PowerEdge C6525 LOM\n# Dell 5720 LOM\n\t\t1028 0917  PowerEdge C6520 LOM\n\t\t103c 1786  NC332T Adapter\n\t\t103c 193d  NC332i Adapter\n\t\t103c 2133  NC332i Adapter\n\t\t103c 22e8  NC332i Adapter\n\t\t103c 22eb  NC332i Adapter\n\t\t15d9 165f  H12SSL-i\n\t1662  NetXtreme II BCM57712 10 Gigabit Ethernet\n\t1663  NetXtreme II BCM57712 10 Gigabit Ethernet Multi Function\n\t1665  NetXtreme BCM5717 Gigabit Ethernet PCIe\n\t1668  NetXtreme BCM5714 Gigabit Ethernet\n\t\t103c 7039  NC324i PCIe Dual Port Gigabit Server Adapter\n\t1669  NetXtreme 5714S Gigabit Ethernet\n\t166a  NetXtreme BCM5780 Gigabit Ethernet\n\t\t103c 7035  NC325i Integrated Dual port PCIe Express Gigabit Server Adapter\n\t166b  NetXtreme BCM5780S Gigabit Ethernet\n\t166e  570x 10/100 Integrated Controller\n\t166f  NetXtreme II BCM57712 10 Gigabit Ethernet Virtual Function\n\t1672  NetXtreme BCM5754M Gigabit Ethernet PCI Express\n\t1673  NetXtreme BCM5755M Gigabit Ethernet PCI Express\n\t1674  NetXtreme BCM5756ME Gigabit Ethernet PCI Express\n\t1677  NetXtreme BCM5751 Gigabit Ethernet PCI Express\n\t\t1028 0176  Dimension XPS Gen 4\n\t\t1028 0177  Dimension 8400\n\t\t1028 0179  Optiplex GX280\n\t\t1028 0182  Latitude D610\n\t\t1028 0187  Precision M70\n\t\t1028 01a3  Latitude X1\n\t\t1028 01a8  Precision 380\n\t\t1028 01ad  OptiPlex GX620\n\t\t103c 3006  DC7100 SFF(DX878AV)\n\t\t1462 028c  915P/G Neo2\n\t\t1734 105d  Scenic W620\n\t1678  NetXtreme BCM5715 Gigabit Ethernet\n\t\t103c 703e  NC326i PCIe Dual Port Gigabit Server Adapter\n\t1679  NetXtreme BCM5715S Gigabit Ethernet\n\t\t103c 1707  NC326m PCIe Dual Port Adapter\n\t\t103c 170c  NC325m PCIe Quad Port Adapter\n\t\t103c 703c  NC326i PCIe Dual Port Gigabit Server Adapter\n\t167a  NetXtreme BCM5754 Gigabit Ethernet PCI Express\n\t\t1028 01da  OptiPlex 745\n\t\t1028 01de  Precision 390\n\t\t1028 01df  PowerEdge SC440\n\t\t1028 0214  Precision T3400\n\t\t1028 021e  Precision T5400\n\t167b  NetXtreme BCM5755 Gigabit Ethernet PCI Express\n\t\t103c 280a  DC5750 Microtower\n\t167d  NetXtreme BCM5751M Gigabit Ethernet PCI Express\n\t\t1014 0577  ThinkPad X41 / Z60t\n\t\t103c 0934  nx8220\n\t\t103c 0940  Compaq nw8240 Mobile Workstation\n\t\t103c 0944  Compaq nc6220 Notebook PC\n\t\t17aa 2081  ThinkPad R60e\n\t167e  NetXtreme BCM5751F Fast Ethernet PCI Express\n\t167f  NetLink BCM5787F Fast Ethernet PCI Express\n\t1680  NetXtreme BCM5761e Gigabit Ethernet PCIe\n\t1681  NetXtreme BCM5761 Gigabit Ethernet PCIe\n# Integrated on the motherboard\n\t\t1028 0433  OptiPlex 580\n\t1682  NetXtreme BCM57762 Gigabit Ethernet PCIe\n\t\t106b 00f6  Thunderbolt to Gigabit Ethernet Adapter\n\t1683  NetXtreme BCM57767 Gigabit Ethernet PCIe\n\t1684  NetXtreme BCM5764M Gigabit Ethernet PCIe\n\t1685  NetXtreme II BCM57500S Gigabit Ethernet\n\t1686  NetXtreme BCM57766 Gigabit Ethernet PCIe\n\t1687  NetXtreme BCM5762 Gigabit Ethernet PCIe\n\t1688  NetXtreme BCM5761 10/100/1000BASE-T Ethernet\n\t\t1259 2708  AT-2712 FX\n# The Broadcom 57800 device has two 1Gig ports and two 10Gig ports. The subsystem information can be used to differentiate.\n\t168a  NetXtreme II BCM57800 1/10 Gigabit Ethernet\n# SFP+ ports\n\t\t1014 0493  PCIe2 LP 4-Port (10Gb+1GbE) SR+RJ45 Adapter (FC EN0T; CCIN 2CC3)\n# RJ-45 ports\n\t\t1014 0494  PCIe2 LP 4-Port (10Gb+1GbE) SR+RJ45 Adapter (FC EN0T; CCIN 2CC3)\n\t\t1028 1f5c  BCM57800 10-Gigabit Ethernet\n\t\t1028 1f5d  BCM57800 10-Gigabit Ethernet\n\t\t1028 1f67  BCM57800 1-Gigabit Ethernet\n\t\t1028 1f68  BCM57800 1-Gigabit Ethernet\n\t168d  NetXtreme II BCM57840 10/20 Gigabit Ethernet\n\t168e  NetXtreme II BCM57810 10 Gigabit Ethernet\n\t\t1014 0492  PCIe2 2-port 10 GbE BaseT RJ45 Adapter (FC EN0W; CCIN 2CC4)\n\t\t103c 1798  Flex-10 10Gb 2-port 530FLB Adapter [Meru]\n\t\t103c 17a5  Flex-10 10Gb 2-port 530M Adapter\n\t\t103c 18d3  Ethernet 10Gb 2-port 530T Adapter\n\t\t103c 1930  FlexFabric 10Gb 2-port 534FLR-SFP+ Adapter\n\t\t103c 1931  StoreFabric CN1100R Dual Port Converged Network Adapter\n\t\t103c 1932  FlexFabric 10Gb 2-port 534FLB Adapter\n\t\t103c 1933  FlexFabric 10Gb 2-port 534M Adapter\n\t\t103c 193a  FlexFabric 10Gb 2-port 533FLR-T Adapter\n\t\t103c 3382  Ethernet 10Gb 2-port 530FLR-SFP+ Adapter\n\t\t103c 339d  Ethernet 10Gb 2-port 530SFP+ Adapter\n\t\t193d 1003  530F-B\n\t\t193d 1006  530F-L\n\t\t193d 100f  NIC-ETH522i-Mb-2x10G\n\t\t4c52 9812  LREC9812AF Dual-port 10Gb Ethernet Server Adapter\n\t1690  NetXtreme BCM57760 Gigabit Ethernet PCIe\n\t1691  NetLink BCM57788 Gigabit Ethernet PCIe\n\t\t1028 04aa  XPS 8300\n\t1692  NetLink BCM57780 Gigabit Ethernet PCIe\n\t\t1025 033d  Aspire 7740G\n\t1693  NetLink BCM5787M Gigabit Ethernet PCI Express\n\t\t1025 0121  Aspire 5920G\n\t\t103c 30c0  6710b\n\t\t17aa 20d5  ThinkPad R61\n\t1694  NetLink BCM57790 Gigabit Ethernet PCIe\n\t1696  NetXtreme BCM5782 Gigabit Ethernet\n\t\t103c 12bc  d530 CMT (DG746A)\n\t\t14e4 000d  NetXtreme BCM5782 1000Base-T\n\t1698  NetLink BCM5784M Gigabit Ethernet PCIe\n\t1699  NetLink BCM5785 Gigabit Ethernet\n\t169a  NetLink BCM5786 Gigabit Ethernet PCI Express\n\t169b  NetLink BCM5787 Gigabit Ethernet PCI Express\n\t169c  NetXtreme BCM5788 Gigabit Ethernet\n\t\t103c 308b  MX6125\n\t\t103c 30a1  NC2400\n\t\t144d c018  X20\n\t\t1462 590c  KT6 Delta-FIS2R (MS-6590)\n\t169d  NetLink BCM5789 Gigabit Ethernet PCI Express\n\t16a0  NetLink BCM5785 Fast Ethernet\n\t16a1  BCM57840 NetXtreme II 10 Gigabit Ethernet\n\t\t1043 866e  PEB-10G/57840-2T 10GBase-T Network Adapter\n\t\t193d 100b  NIC-ETH521i-Mb-4x10G\n\t\t4c52 9814  LREC9814AF Quad-port 10Gb Ethernet Server Adapter\n\t16a2  BCM57840 NetXtreme II 10/20-Gigabit Ethernet\n\t\t103c 1916  FlexFabric 20Gb 2-port 630FLB Adapter\n\t\t103c 1917  FlexFabric 20Gb 2-port 630M Adapter\n\t\t103c 2231  3820C 10/20Gb Converged Network Adapter\n\t\t103c 22fa  FlexFabric 10Gb 2-port 536FLB Adapter\n\t16a3  NetXtreme BCM57786 Gigabit Ethernet PCIe\n\t16a4  BCM57840 NetXtreme II Ethernet Multi Function\n\t\t103c 1916  NPAR 20Gb 2-port 630FLB Adapter\n\t\t103c 1917  NPAR 20Gb 2-port 630M Adapter\n\t\t103c 2231  3820C 10/20Gb Converged Network Adapter (NPAR 1.5)\n\t\t103c 22fa  FlexFabric 10Gb 2-port 536FLB Adapter (NPAR 1.5)\n# The Broadcom 57800 device has two 1Gig ports and two 10Gig ports. The subsystem information can be used to differentiate.\n\t16a5  NetXtreme II BCM57800 1/10 Gigabit Ethernet Multi Function\n\t\t1028 1f5c  NetXtreme II BCM57800 10-Gigabit Ethernet Multi Function\n\t\t1028 1f5d  NetXtreme II BCM57800 10-Gigabit Ethernet Multi Function\n\t\t1028 1f67  NetXtreme II BCM57800 1-Gigabit Ethernet Multi Function\n\t\t1028 1f68  NetXtreme II BCM57800 1-Gigabit Ethernet Multi Function\n\t16a6  NetXtreme BCM5702X Gigabit Ethernet\n\t\t0e11 00bb  NC7760 Gigabit Server Adapter (PCI-X, 10/100/1000-T)\n\t\t1028 0126  BCM5702 1000Base-T\n\t\t14e4 000c  BCM5702 1000Base-T\n\t\t14e4 8009  BCM5702 1000Base-T\n\t16a7  NetXtreme BCM5703X Gigabit Ethernet\n\t\t0e11 00ca  NC7771 Gigabit Server Adapter (PCI-X, 10,100,1000-T)\n\t\t0e11 00cb  NC7781 Gigabit Server Adapter (PCI-X, 10,100,1000-T)\n\t\t1014 026f  eServer xSeries server mainboard\n\t\t14e4 0009  NetXtreme BCM5703 1000Base-T\n\t\t14e4 000a  NetXtreme BCM5703 1000Base-SX\n\t\t14e4 000b  NetXtreme BCM5703 1000Base-T\n\t\t14e4 800a  NetXtreme BCM5703 1000Base-T\n\t16a8  NetXtreme BCM5704S Gigabit Ethernet\n\t\t103c 132b  PCI-X 1000Mbps Dual-port Built-in\n\t\t10a9 8014  Dual Port Gigabit Ethernet (PCI-X,Fiber)\n\t\t10a9 801c  Quad Port Gigabit Ethernet (PCI-E,Fiber)\n\t\t10b7 2001  3C998-SX Dual Port 1000-SX PCI-X\n# The Broadcom 57800 device has two 1Gig ports and two 10Gig ports. The subsystem information can be used to differentiate.\n\t16a9  NetXtreme II BCM57800 1/10 Gigabit Ethernet Virtual Function\n\t\t1028 1f5c  NetXtreme II BCM57800 10-Gigabit Ethernet Virtual Function\n\t\t1028 1f5d  NetXtreme II BCM57800 10-Gigabit Ethernet Virtual Function\n\t\t1028 1f67  NetXtreme II BCM57800 1-Gigabit Ethernet Virtual Function\n\t\t1028 1f68  NetXtreme II BCM57800 1-Gigabit Ethernet Virtual Function\n\t16aa  NetXtreme II BCM5706S Gigabit Ethernet\n\t\t103c 3102  NC370F MultifuNCtion Gigabit Server Adapter\n\t\t103c 310c  NC370i Multifunction Gigabit Server Adapter\n\t16ab  NetXtreme II BCM57840 10/20 Gigabit Ethernet Multi Function\n\t16ac  NetXtreme II BCM5708S Gigabit Ethernet\n\t\t1014 0304  NetXtreme II BCM5708S Gigabit Ethernet\n\t\t1028 01bb  PowerEdge 1955 Broadcom NetXtreme II BCM5708S\n\t\t1028 020c  PowerEdge M605 Broadcom NetXtreme II BCM5708S\n\t\t103c 1706  NC373m Multifunction Gigabit Server Adapter\n\t\t103c 7038  NC373i PCI Express Multifunction Gigabit Server Adapter\n\t\t103c 703b  NC373i Integrated Multifunction Gigabit Server Adapter\n\t\t103c 703d  NC373F PCI Express Multifunction Gigabit Server Adapter\n\t16ad  NetXtreme II BCM57840 10/20 Gigabit Ethernet Virtual Function\n\t\t103c 1916  FlexFabric 20Gb 2-port 630FLB Adapter\n\t\t103c 1917  FlexFabric 20Gb 2-port 630M Adapter\n\t\t103c 2231  3820C 10/20Gb Converged Network Adapter (SR-IOV VF)\n\t\t103c 22fa  FlexFabric 10Gb 2-port 536FLB Adapter (SR-IOV VF)\n\t16ae  NetXtreme II BCM57810 10 Gigabit Ethernet Multi Function\n\t\t103c 1798  NPAR 10Gb 2-port 530FLB Adapter\n\t\t103c 17a5  NPAR 10Gb 2-port 530M Adapter\n\t\t103c 18d3  NPAR 10Gb 2-port 530T Adapter\n\t\t103c 1930  NPAR 10Gb 2-port 534FLR-SFP+ Adapter\n\t\t103c 1931  NPAR CN1100R Dual Port Converged Network Adapter\n\t\t103c 1932  NPAR 10Gb 2-port 534FLB Adapter\n\t\t103c 1933  NPAR 10Gb 2-port 534M Adapter\n\t\t103c 193a  NPAR 10Gb 2-port 533FLR-T Adapter\n\t\t103c 3382  NPAR 10Gb 2-port 530FLR-SFP+ Adapter\n\t\t103c 339d  NPAR 10Gb 2-port 530SFP+ Adapter\n\t16af  NetXtreme II BCM57810 10 Gigabit Ethernet Virtual Function\n\t\t103c 1798  Flex-10 10Gb 2-port 530FLB Adapter\n\t\t103c 17a5  Flex-10 10Gb 2-port 530M Adapter\n\t\t103c 18d3  Ethernet 10Gb 2-port 530T Adapter\n\t\t103c 1930  FlexFabric 10Gb 2-port 534FLR-SFP+ Adapter\n\t\t103c 1931  StoreFabric CN1100R Dual Port Converged Network Adapter\n\t\t103c 1932  FlexFabric 10Gb 2-port 534FLB Adapter\n\t\t103c 1933  FlexFabric 10Gb 2-port 534M Adapter\n\t\t103c 193a  FlexFabric 10Gb 2-port 533FLR-T Adapter\n\t\t103c 3382  Ethernet 10Gb 2-port 530FLR-SFP+ Adapter\n\t\t103c 339d  Ethernet 10Gb 2-port 530SFP+ Adapter\n\t16b0  NetXtreme BCM57761 Gigabit Ethernet PCIe\n\t16b1  NetLink BCM57781 Gigabit Ethernet PCIe\n\t\t1849 96b1  Z77 Extreme4 motherboard\n\t16b2  NetLink BCM57791 Gigabit Ethernet PCIe\n\t16b3  NetXtreme BCM57786 Gigabit Ethernet PCIe\n\t16b4  NetXtreme BCM57765 Gigabit Ethernet PCIe\n\t16b5  NetLink BCM57785 Gigabit Ethernet PCIe\n\t16b6  NetLink BCM57795 Gigabit Ethernet PCIe\n\t16b7  NetXtreme BCM57782 Gigabit Ethernet PCIe\n\t16bc  BCM57765/57785 SDXC/MMC Card Reader\n\t16be  BCM57765/57785 MS Card Reader\n\t16bf  BCM57765/57785 xD-Picture Card Reader\n\t16c1  NetXtreme-E RDMA Virtual Function\n\t16c6  NetXtreme BCM5702A3 Gigabit Ethernet\n\t\t10b7 1100  3C1000B-T 10/100/1000 PCI\n\t\t14e4 000c  BCM5702 1000Base-T\n\t\t14e4 8009  BCM5702 1000Base-T\n\t16c7  NetXtreme BCM5703 Gigabit Ethernet\n\t\t0e11 00ca  NC7771 Gigabit Server Adapter (PCI-X, 10,100,1000-T)\n\t\t0e11 00cb  NC7781 Gigabit Server Adapter (PCI-X, 10,100,1000-T)\n\t\t103c 12c3  Combo FC/GigE-SX [A9782A]\n\t\t103c 12ca  Combo FC/GigE-T [A9784A]\n\t\t103c 1321  Core I/O LAN/SCSI Combo [AB314A]\n\t\t14e4 0009  NetXtreme BCM5703 1000Base-T\n\t\t14e4 000a  NetXtreme BCM5703 1000Base-SX\n\t16c8  BCM57301 NetXtreme-C 10Gb Ethernet Controller\n\t16c9  BCM57302 NetXtreme-C 10Gb/25Gb Ethernet Controller\n\t16ca  BCM57304 NetXtreme-C 10Gb/25Gb/40Gb/50Gb Ethernet Controller\n\t16cb  NetXtreme-C Ethernet Virtual Function\n\t16cc  BCM57417 NetXtreme-E Ethernet Partition\n\t16ce  BCM57311 NetXtreme-C 10Gb RDMA Ethernet Controller\n\t16cf  BCM57312 NetXtreme-C 10Gb/25Gb RDMA Ethernet Controller\n\t16d0  BCM57402 NetXtreme-E 10Gb Ethernet Controller\n\t16d1  BCM57404 NetXtreme-E 10Gb/25Gb Ethernet Controller\n\t16d2  BCM57406 NetXtreme-E 10GBASE-T Ethernet Controller\n\t16d3  NetXtreme-E Ethernet Virtual Function\n\t16d4  BCM57402 NetXtreme-E Ethernet Partition\n\t16d5  BCM57407 NetXtreme-E 10GBase-T Ethernet Controller\n\t16d6  BCM57412 NetXtreme-E 10Gb RDMA Ethernet Controller\n\t\t1059 01b0  RD10057 10GbE interface\n\t\t117c 00cd  FastFrame N4S2 Dual-port 10Gb Ethernet Adapter\n\t\t14e4 1202  BCM957412M4122C OCP 1x25G Type1 wRoCE\n\t\t14e4 4120  NetXtreme E-Series Advanced Dual-port 10Gb SFP+ Ethernet Network Daughter Card\n\t\t14e4 4126  NetXtreme-E Dual-port 10G SFP+ Ethernet OCP 3.0 Adapter (BCM957412N4120C)\n\t\t152d 8b20  BCM57412 NetXtreme-E 10Gb RDMA Ethernet Controller\n\t\t152d 8b22  BCM57412 NetXtreme-E 25Gb RDMA Ethernet Controller\n# NIC-ETH531F-LP-2P BCM57412 2 x 10G SFP+ Ethernet PCIe Card\n\t\t193d 1024  NIC-ETH531F-LP-2P\n# NIC-ETH531F-3S-2P 2x10GbE SFP+ Adapter for OCP3.0\n\t\t193d 1087  NIC-ETH531F-3S-2P\n\t16d7  BCM57414 NetXtreme-E 10Gb/25Gb RDMA Ethernet Controller\n\t\t117c 00cc  FastFrame N422 Dual-port 25Gb Ethernet Adapter\n\t\t14e4 1402  BCM957414A4142CC 10Gb/25Gb Ethernet PCIe\n\t\t14e4 1404  BCM957414M4142C OCP 2x25G Type1 wRoCE\n\t\t14e4 4140  NetXtreme E-Series Advanced Dual-port 25Gb SFP28 Network Daughter Card\n# BCM957414M4143C\n\t\t14e4 4143  NetXtreme-E Single-port 40Gb/50Gb Ethernet OCP 2.0 Adapter (BCM957414M4143C)\n\t\t14e4 4146  NetXtreme-E Dual-port 25G SFP28 Ethernet OCP 3.0 Adapter (BCM957414N4140C)\n\t\t1590 020e  Ethernet 25Gb 2-port 631SFP28 Adapter\n\t\t1590 0211  Ethernet 25Gb 2-port 631FLR-SFP28 Adapter\n# NIC-ETH630F-LP-2P SFP28 2x25GbE PCIe Network Adapter\n\t\t193d 1033  NIC-ETH630F-LP-2P\n\t\t1bd4 008e  ENFB2251-SP2\n\t\t1bd4 008f  ENPB2251-SP2\n# VSE-225-31S Dual-port 10Gb/25Gb Ethernet PCIe\n\t\t1eec 0101  VSE-225-31S Dual-port 10Gb/25Gb Ethernet PCIe\n\t16d8  BCM57416 NetXtreme-E Dual-Media 10G RDMA Ethernet Controller\n\t\t1028 1feb  NetXtreme-E 10Gb SFP+ Adapter\n\t\t117c 00ce  FastFrame N4T2 Dual-port 10GBASE-T Ethernet Adapter\n\t\t14e4 4163  NetXtreme-E Dual-port 10GBASE-T Ethernet OCP 2.0 Adapter (BCM957416M4163C)\n\t\t14e4 4166  NetXtreme-E Dual-port 10GBASE-T Ethernet OCP 3.0 Adapter (BCM957416N4160C)\n\t\t14e4 d140  BCM957416-P410 4x10GBT Ethernet NIC\n\t\t14e4 d340  BCM957416-N410 4x10GBT Ethernet NIC\n\t\t1590 020c  Ethernet 10Gb 2-port 535T Adapter\n\t\t1590 0212  Ethernet 10Gb 2-port 535FLR-T Adapter\n\t16d9  BCM57417 NetXtreme-E 10GBASE-T RDMA Ethernet Controller\n\t\t108e 4866  Dual Port 10GBase-T Ethernet Controller\n\t16dc  NetXtreme-E Ethernet Virtual Function\n\t16dd  NetLink BCM5781 Gigabit Ethernet PCI Express\n\t16de  BCM57412 NetXtreme-E Ethernet Partition\n\t16df  BCM57314 NetXtreme-C 10Gb/25Gb/40Gb/50Gb RDMA Ethernet Controller\n\t16e1  NetXtreme-C Ethernet Virtual Function\n\t16e2  BCM57417 NetXtreme-E 10Gb/25Gb RDMA Ethernet Controller\n\t\t108e 4866  Dual Port 10Gb/25Gb SFP28 Ethernet Controller\n\t16e3  BCM57416 NetXtreme-E 10Gb RDMA Ethernet Controller\n\t16e5  NetXtreme-C RDMA Virtual Function\n\t16e7  BCM57404 NetXtreme-E Ethernet Partition\n\t16e8  BCM57406 NetXtreme-E Ethernet Partition\n\t16e9  BCM57407 NetXtreme-E 25Gb Ethernet Controller\n\t16eb  BCM57412 NetXtreme-E RDMA Partition\n\t16ec  BCM57414 NetXtreme-E Ethernet Partition\n\t16ed  BCM57414 NetXtreme-E RDMA Partition\n\t16ee  BCM57416 NetXtreme-E Ethernet Partition\n\t16ef  BCM57416 NetXtreme-E RDMA Partition\n\t16f1  BCM57452 NetXtreme-E 10Gb/25Gb/40Gb/50Gb Ethernet\n\t16f3  NetXtreme BCM5727 Gigabit Ethernet PCIe\n\t16f7  NetXtreme BCM5753 Gigabit Ethernet PCI Express\n\t16fd  NetXtreme BCM5753M Gigabit Ethernet PCI Express\n\t\t103c 309f  Compaq nx9420 Notebook\n\t\t103c 30a3  Compaq nw8440\n\t16fe  NetXtreme BCM5753F Fast Ethernet PCI Express\n\t170c  BCM4401-B0 100Base-TX\n\t\t1028 0188  Inspiron 6000 laptop\n\t\t1028 018d  Inspiron 700m/710m\n\t\t1028 0196  Inspiron 5160\n\t\t1028 01af  Inspiron 6400\n\t\t1028 01cd  Inspiron 9400 Laptop\n\t\t1028 01d7  XPS M1210\n\t\t1028 01d8  Inspiron E1405\n\t\t103c 099c  NX6110/NC6120\n\t\t103c 30a2  NX7300 laptop\n\t\t14e4 170c  HP Compaq 6720t Mobile Thin Client\n\t170d  NetXtreme BCM5901 100Base-TX\n\t\t1014 0545  ThinkPad R40e\n\t170e  NetXtreme BCM5901 100Base-TX\n\t1712  NetLink BCM5906 Fast Ethernet PCI Express\n\t1713  NetLink BCM5906M Fast Ethernet PCI Express\n\t\t1028 01f3  Inspiron 1420\n\t\t1028 0209  XPS M1330\n\t\t103c 30c0  Compaq 6710b\n\t\t17aa 3a23  IdeaPad S10e\n\t1750  BCM57508 NetXtreme-E 10Gb/25Gb/40Gb/50Gb/100Gb/200Gb Ethernet\n\t\t117c 00cf  FastFrame N412 Dual-port 100Gb Ethernet Adapter\n\t\t117c 40d6  ThunderLink TLNS-5102 Dual-port 100Gb Ethernet Adapter\n\t\t14e4 2100  NetXtreme-E Dual-port 100G QSFP56 Ethernet PCIe4.0 x16 Adapter (BCM957508-P2100G)\n\t\t14e4 5208  NetXtreme-E Dual-port 100G QSFP56 Ethernet OCP 3.0 Adapter (BCM957508-N2100G)\n\t\t14e4 520a  NetXtreme-E Dual-port 100G DSFP Ethernet OCP 3.0 Adapter (BCM957508-N2100GD)\n\t\t14e4 d124  NetXtreme-E P2100D BCM57508 2x100G QSFP PCIE\n\t\t14e4 d324  NetXtreme-E N2100D BCM57508 2x100G QSFP OCP3.0 Ethernet\n\t\t14e4 df24  NetXtreme-E NGM2100D BCM57508 2x100G KR Mezz Ethernet\n\t1751  BCM57504 NetXtreme-E 10Gb/25Gb/40Gb/50Gb/100Gb Ethernet\n\t\t1028 09d4  PowerEdge XR11/XR12 LOM\n\t\t1028 0b1b  PowerEdge XR5610 LOM\n\t\t117c 00da  FastFrame N424 Quad-port 25Gb Ethernet Adapter\n\t\t14e4 4250  NetXtreme-E Quad-port 25G SFP28 Ethernet PCIe4.0 x16 Adapter (BCM957504-P425G)\n\t\t14e4 5045  NetXtreme-E BCM57504 4x25G OCP3.0\n\t\t14e4 5100  NetXtreme-E Single-port 100G QSFP56 Ethernet OCP 3.0 Adapter (BCM957504-N1100G)\n\t\t14e4 5105  NetXtreme-E Single-port 100G DSFP Ethernet OCP 3.0 Adapter (BCM957504-N1100GD)\n\t\t14e4 5250  NetXtreme-E BCM57504 4x25G KR Mezz\n\t\t14e4 5425  NetXtreme-E Quad-port 25G SFP28 Ethernet OCP 3.0 Adapter (BCM957504-N425G)\n\t\t14e4 d142  NetXtreme-E P425D BCM57504 4x25G SFP28 PCIE\n\t\t1590 0420  HPE Ethernet 25/50Gb 2-port 6310C Adapter\n\t1752  BCM57502 NetXtreme-E 10Gb/25Gb/40Gb/50Gb Ethernet\n\t1760  BCM57608 25Gb/50Gb/100Gb/200Gb/400Gb Ethernet\n\t\t14e4 9110  BCM57608 1x400G PCIe Ethernet NIC\n\t\t14e4 9120  BCM57608 2x200G PCIe Ethernet NIC\n\t\t14e4 9121  BCM57608 2x100G PCIe Ethernet NIC\n\t\t14e4 9125  BCM57608 2x200G PCIe Ethernet NIC\n\t\t14e4 9126  BCM57608 2x100G PCIe Ethernet NIC\n\t\t14e4 9140  BCM57608 1x400G QSFP-DD PCIe Ethernet NIC\n\t\t14e4 9310  BCM57608 1x400G QSFP-DD OCP Ethernet NIC\n\t\t14e4 9311  BCM57608 1x400G OCP Ethernet NIC\n\t\t14e4 9312  BCM57608 1x200G OCP Ethernet NIC\n\t\t14e4 9320  BCM57608 2x200G OCP Ethernet NIC\n\t\t14e4 9325  BCM57608 2x200G OCP Ethernet NIC\n\t\t14e4 9326  BCM57608 2x100G OCP Ethernet NIC\n\t\t14e4 9340  BCM57608 4x100G OCP Ethernet NIC\n\t\t14e4 9345  BCM57608 4x25G OCP Ethernet NIC\n\t\t14e4 d125  BCM57608 2x200G PCIe Ethernet NIC\n\t1800  BCM57502 NetXtreme-E Ethernet Partition\n\t1801  BCM57504 NetXtreme-E Ethernet Partition\n\t\t1590 0420  Ethernet NPAR 6310C Adapter\n\t1802  BCM57508 NetXtreme-E Ethernet Partition\n\t\t14e4 df24  BCM57508 NetXtreme-E NGM2100D 2x100G KR Mezz Ethernet Partition\n\t1803  BCM57502 NetXtreme-E RDMA Partition\n\t1804  BCM57504 NetXtreme-E RDMA Partition\n\t\t1590 0420  Ethernet NPAR RoCE 6310C Adapter\n\t1805  BCM57508 NetXtreme-E RDMA Partition\n\t\t14e4 df24  NetXtreme-E NGM2100D BCM57508 2x100G KR Mezz RDMA Partition\n\t1806  BCM5750X NetXtreme-E Ethernet Virtual Function\n\t\t14e4 df24  BCM57508 NetXtreme-E NGM2100D 2x100G KR Mezz Ethernet Virtual Function\n\t\t1590 0420  Ethernet SRIOV 6310C Adapter\n\t1807  BCM5750X NetXtreme-E RDMA Virtual Function\n\t\t14e4 df24  BCM57508 NetXtreme-E NGM2100D 2x100G KR Mezz RDMA Virtual Function\n\t\t1590 0420  Ethernet SRIOV RoCE 6310C Adapter\n\t1808  BCM5750X NetXtreme-E Ethernet Virtual Function\n\t\t14e4 df24  BCM57508 NetXtreme-E NGM2100D 2x100G KR Mezz Ethernet Virtual Function\n\t1809  BCM5750X NetXtreme-E RDMA Virtual Function\n\t\t14e4 df24  BCM57508 NetXtreme-E NGM2100D 2x100G KR Mezz RDMA Virtual Function\n\t1819  BCM5760X Ethernet Virtual Function\n\t2711  BCM2711 PCIe Bridge\n\t2712  BCM2712 PCIe Bridge\n\t3352  BCM3352\n\t3360  BCM3360\n\t4210  BCM4210 iLine10 HomePNA 2.0\n\t4211  BCM4211 iLine10 HomePNA 2.0 + V.90 56k modem\n\t4212  BCM4212 v.90 56k modem\n\t4220  802-11b/g Wireless PCI controller, packaged as a Linksys WPC54G ver 1.2 PCMCIA card\n\t4222  NetXtreme BCM5753M Gigabit Ethernet PCI Express\n\t4301  BCM4301 802.11b Wireless LAN Controller\n\t\t1028 0407  TrueMobile 1180 Onboard WLAN\n\t\t1043 0120  WL-103b Wireless LAN PC Card\n\t\t16a5 1602  B-300 802.11b Wireless CardBus Adapter\n\t\t1737 4301  WMP11 v2.7 802.11b Wireless-B PCI Adapter\n\t4305  BCM4307 V.90 56k Modem\n\t4306  BCM4306 802.11bg Wireless LAN controller\n\t4307  BCM4306 802.11bg Wireless LAN Controller\n\t4310  BCM4310 Chipcommon I/OController\n\t4311  BCM4311 802.11b/g WLAN\n\t\t1028 0007  Wireless 1390 WLAN Mini-Card\n\t\t1028 0008  Wireless 1390 WLAN ExpressCard\n\t\t103c 1363  BCM4311 802.11b/g Wireless LAN Controller\n\t\t103c 1364  BCM4311 802.11b/g Wireless LAN Controller\n\t\t103c 1365  BCM4311 802.11b/g Wireless LAN Controller\n\t\t103c 1374  BCM4311 802.11b/g Wireless LAN Controller\n\t\t103c 1375  BCM4311 802.11b/g Wireless LAN Controller\n\t\t103c 1376  BCM4311 802.11b/g Wireless LAN Controller\n\t\t103c 1377  BCM4311 802.11b/g Wireless LAN Controller\n\t\t103c 137f  BCM4322 802.11a/b/g/n Wireless LAN Controller\n\t\t103c 1380  BCM4322 802.11a/b/g/n Wireless LAN Controller\n\t\t14e4 4311  BCM94311MCG\n\t4312  BCM4311 802.11a/b/g\n\t\t1028 0007  Wireless 1490 Dual Band WLAN Mini-Card\n\t\t1028 0008  Wireless 1490 Dual Band WLAN ExpressCard\n\t\t103c 135a  Broadcom 802.11a/b/g WLAN\n\t\t103c 135f  Broadcom 802.11a/b/g WLAN\n\t\t103c 1360  Broadcom 802.11a/b/g WLAN\n\t\t103c 1361  Broadcom 802.11a/b/g WLAN\n\t\t103c 1362  Broadcom 802.11a/b/g WLAN\n\t\t103c 1370  Broadcom 802.11a/b/g WLAN\n\t\t103c 1371  Broadcom 802.11a/b/g WLAN\n\t\t103c 1372  Broadcom 802.11a/b/g WLAN\n\t\t103c 1373  Broadcom 802.11a/b/g WLAN\n\t\t103c 30b5  Presario V3242AU\n\t\t106b 0089  AirPort Extreme\n\t\t1371 103c  Broadcom 802.11 Multiband-netwerkadapter(6715s)\n\t4313  BCM4311 802.11a\n\t4315  BCM4312 802.11b/g LP-PHY\n\t\t1028 000b  Wireless 1395 WLAN Mini-Card\n\t\t1028 000c  Wireless 1397 WLAN Mini-Card\n\t\t103c 137c  BCM4312 802.11b/g Wireless LAN Controller\n\t\t103c 137d  BCM4312 802.11b/g Wireless LAN Controller\n\t\t103c 1507  U98Z049.00 Wireless Mini PCIe Card\n\t\t105b e003  T77H030.00 Wireless Mini PCIe Card\n\t\t105b e01b  T77H106.00 Wireless Half-size Mini PCIe Card\n\t4318  BCM4318 [AirForce One 54g] 802.11g Wireless LAN Controller\n\t\t1028 0005  Wireless 1370 WLAN Mini-PCI Card\n\t\t1028 0006  Wireless 1370 WLAN PC Card\n\t\t103c 1355  Broadcom 802.11b/g WLAN\n\t\t103c 1356  Broadcom 802.11b/g WLAN\n\t\t103c 1357  Broadcom 802.11b/g WLAN\n\t\t1043 100f  WL-138G v2 / WL-138gE / WL-100gE\n\t\t1043 120f  A6U notebook embedded card\n\t\t1154 0355  Buffalo WLI2-PCI-G54S High Speed Mode Wireless Adapter\n\t\t1468 0311  Aspire 3022WLMi, 5024WLMi, 5020\n\t\t1468 0312  TravelMate 2410\n\t\t14e4 0449  Gateway 7510GX\n\t\t16ec 0119  U.S.Robotics Wireless MAXg PC Card\n\t\t1737 0042  WMP54GS v1.1 802.11g Wireless-G PCI Adapter with SpeedBooster\n\t\t1737 0048  WPC54G v3 802.11g Wireless-G Notebook Adapter\n\t\t1737 0049  WPC54GS v2 802.11g Wireless-G Notebook Adapter with SpeedBooster\n\t\t1799 7000  F5D7000 v4000 Wireless G Desktop Card\n\t\t1799 7001  F5D7001 v2000 Wireless G Plus Desktop Card\n\t\t1799 7010  F5D7010 v4000 Wireless G Notebook Card\n\t\t1799 7011  F5D7011 v2000 High-Speed Mode Wireless G Notebook Card\n\t4319  BCM4318 [AirForce 54g] 802.11a/b/g PCI Express Transceiver\n\t\t1028 0005  Wireless 1470 Dual Band WLAN Mini-PCI Card\n\t\t1028 0006  Wireless 1470 Dual Band WLAN PC Card\n\t\t103c 1358  Broadcom 802.11a/b/g WLAN\n\t\t103c 1359  Broadcom 802.11a/b/g WLAN\n\t\t103c 135a  Broadcom 802.11a/b/g WLAN\n\t4320  BCM4306 802.11b/g Wireless LAN Controller\n\t\t1028 0001  TrueMobile 1300 WLAN Mini-PCI Card\n\t\t1028 0002  TrueMobile 1300 WLAN PC Card\n\t\t1028 0003  Wireless 1350 WLAN Mini-PCI Card\n\t\t1028 0004  Wireless 1350 WLAN PC Card\n\t\t103c 12f4  Broadcom 802.11b/g WLAN\n\t\t103c 12f8  Broadcom 802.11b/g WLAN\n\t\t103c 12fa  Broadcom 802.11b/g WLAN\n\t\t103c 12fb  Broadcom 802.11b/g WLAN\n\t\t1043 100f  WL-100G\n\t\t1057 7025  WN825G\n\t\t106b 004e  AirPort Extreme\n\t\t1154 0330  Buffalo WLI2-PCI-G54S High Speed Mode Wireless Desktop Adapter\n\t\t144f 7050  eMachines M6805 802.11g Built-in Wireless\n\t\t144f 7051  Sonnet Aria Extreme PCI\n\t\t1737 0013  WMP54G v1 802.11g PCI Adapter\n\t\t1737 0014  WMP54G v2 802.11g PCI Adapter\n\t\t1737 0015  WMP54GS v1.0 802.11g Wireless-G PCI Adapter with SpeedBooster\n\t\t1737 4320  WPC54G v1 / WPC54GS v1 802.11g Wireless-G Notebook Adapter\n\t\t1799 7000  F5D7000 v1000 Wireless G Desktop Card\n\t\t1799 7001  F5D7001 v1000 Wireless G Plus Desktop Card\n\t\t1799 7010  F5D7010 v1000 Wireless G Notebook Card\n\t\t1799 7011  F5D7011 v1000 High-Speed Mode Wireless G Notebook Card\n\t\t185f 1220  TravelMate 290E WLAN Mini-PCI Card\n\t4321  BCM4321 802.11a Wireless Network Controller\n\t4322  BCM4322 802.11bgn Wireless Network Controller\n\t4324  BCM4309 802.11abg Wireless Network Controller\n\t\t1028 0001  Truemobile 1400\n\t\t1028 0002  TrueMobile 1400 Dual Band WLAN PC Card\n\t\t1028 0003  Truemobile 1450 MiniPCI\n\t\t1028 0004  Wireless 1450 Dual Band WLAN PC Card\n\t\t103c 12f9  Broadcom 802.11a/b/g WLAN\n\t\t103c 12fc  Broadcom 802.11a/b/g WLAN\n\t4325  BCM4306 802.11bg Wireless Network Controller\n\t\t1414 0003  Wireless Notebook Adapter MN-720\n\t\t1414 0004  Wireless PCI Adapter MN-730\n\t4326  BCM4307 Chipcommon I/O Controller?\n\t4328  BCM4321 802.11a/b/g/n\n\t\t1028 0009  Wireless 1500 Draft 802.11n WLAN Mini-Card\n\t\t1028 000a  Wireless 1500 Draft 802.11n WLAN Mini-card\n\t\t103c 1366  BCM4321 802.11a/b/g/n Wireless LAN Controller\n\t\t103c 1367  BCM4321 802.11a/b/g/n Wireless LAN Controller\n\t\t103c 1368  BCM4321 802.11a/b/g/n Wireless LAN Controller\n\t\t103c 1369  BCM4321 802.11a/b/g/n Wireless LAN Controller\n\t\t106b 0087  AirPort Extreme\n\t\t106b 0088  AirPort Extreme\n\t\t106b 008b  AirPort Extreme\n\t\t106b 008c  AirPort Extreme\n\t\t106b 0090  AirPort Extreme\n\t\t14e4 4328  BCM4328 802.11a/b/g/n\n\t\t1737 0066  WPC600N v1 802.11a/b/g/n Wireless-N CardBus Adapter\n\t\t1737 0068  WEC600N v1 802.11a/b/g/n Wireless-N ExpressCard\n\t4329  BCM4321 802.11b/g/n\n\t\t1385 7b00  WN511B RangeMax NEXT Wireless Notebook Adapter\n\t\t1385 7d00  WN311B RangeMax Next 270 Mbps Wireless PCI Adapter\n\t\t1737 0058  WPC300N v1 Wireless-N Notebook Adapter\n\t432a  BCM4321 802.11an Wireless Network Controller\n\t432b  BCM4322 802.11a/b/g/n Wireless LAN Controller\n\t\t1028 000d  Wireless 1510 Wireless-N WLAN Mini-Card\n\t\t106b 008d  AirPort Extreme\n\t\t106b 008e  AirPort Extreme\n\t432c  BCM4322 802.11b/g/n\n\t\t1799 d311  Dynex DX-NNBX 802.11n WLAN Cardbus Card\n\t432d  BCM4322 802.11an Wireless Network Controller\n\t4331  BCM4331 802.11a/b/g/n\n\t\t106b 00d6  AirPort Extreme\n\t\t106b 00e4  AirPort Extreme\n\t\t106b 00ef  AirPort Extreme\n\t\t106b 00f4  AirPort Extreme\n\t\t106b 00f5  AirPort Extreme\n\t\t106b 010e  AirPort Extreme\n\t\t106b 010f  AirPort Extreme\n\t4333  Serial (EDGE/GPRS modem part of Option GT Combo Edge)\n\t4344  EDGE/GPRS data and 802.11b/g combo cardbus [GC89]\n\t4350  BCM43222 Wireless Network Adapter\n\t4351  BCM43222 802.11abgn Wireless Network Adapter\n\t4353  BCM43224 802.11a/b/g/n\n\t\t1028 000e  Wireless 1520 Half-size Mini PCIe Card\n\t\t103c 1509  WMIB-275N Half-size Mini PCIe Card\n\t\t106b 0093  AirPort Extreme\n\t\t106b 00d1  AirPort Extreme\n\t\t106b 00e9  AirPort Extreme\n\t\t14e4 04d8  Pegatron UPWL6024\n\t4357  BCM43225 802.11b/g/n\n\t\t105b e021  T77H103.00 Wireless Half-size Mini PCIe Card\n\t4358  BCM43227 802.11b/g/n\n\t4359  BCM43228 802.11a/b/g/n\n\t\t1028 0011  Wireless 1530 Half-size Mini PCIe Card\n\t\t103c 182c  BCM943228HM4L 802.11a/b/g/n 2x2 Wi-Fi Adapter\n\t4360  BCM4360 802.11ac Wireless Network Adapter\n\t4365  BCM43142 802.11b/g/n\n\t\t1028 0016  Wireless 1704 802.11n + BT 4.0\n\t43a0  BCM4360 802.11ac Dual Band Wireless Network Adapter\n\t43a1  BCM4360 802.11ac 2,4G Wireless Network Adapter\n\t43a2  BCM4360 802.11ac 5G Wireless Network Adapter\n\t43a3  BCM4350 802.11ac Wireless Network Adapter\n# Manufactured by Foxconn for Lenovo\n\t\t17aa 075a  00JT494\n\t43a9  BCM43217 802.11b/g/n\n\t43aa  BCM43131 802.11b/g/n\n\t43ae  BCM43162 802.11ac Wireless Network Adapter\n\t43b1  BCM4352 802.11ac Dual Band Wireless Network Adapter\n\t\t1043 85ba  PCE-AC56 Dual-Band Wireless PCI-E Adapter\n\t43ba  BCM43602 802.11ac Wireless LAN SoC\n\t43bb  BCM43602 802.11ac Wireless LAN SoC\n\t43bc  BCM43602 802.11ac Wireless LAN SoC\n\t43d3  BCM43567 802.11ac Wireless Network Adapter\n\t43d9  BCM43570 802.11ac Wireless Network Adapter\n\t43dc  BCM4355 802.11ac Wireless LAN SoC\n\t43df  BCM4354 802.11ac Wireless LAN SoC\n\t43e9  BCM4358 802.11ac Wireless LAN SoC\n\t43ec  BCM4356 802.11ac Wireless Network Adapter\n\t4401  BCM4401 100Base-T\n\t\t1025 0035  TravelMate 660\n\t\t1025 0064  Extensa 3000 series laptop\n\t\t1028 8127  Dimension 2400\n\t\t103c 08b0  tc1100 tablet\n\t\t1043 80a8  A7V8X motherboard\n\t4402  BCM4402 Integrated 10/100BaseT\n\t4403  BCM4402 V.90 56k Modem\n\t4410  BCM4413 iLine32 HomePNA 2.0\n\t4411  BCM4413 V.90 56k modem\n\t4412  BCM4412 10/100BaseT\n\t4415  BCM4359 802.11ac Dual-Band Wireless Network Controller\n\t441f  BCM4361 802.11ac Dual-Band Wireless Network Controller\n\t4420  BCM4361 802.11ac 2.4 GHz Wireless Network Controller\n\t4421  BCM4361 802.11ac 5 GHz Wireless Network Controller\n\t4425  BCM4378 802.11ax Dual Band Wireless Network Adapter\n\t4430  BCM44xx CardBus iLine32 HomePNA 2.0\n\t4432  BCM4432 CardBus 10/100BaseT\n\t4433  BCM4387 802.11ax Dual Band Wireless LAN Controller\n\t4464  BCM4364 802.11ac Wireless Network Adapter\n# brcmfmac reports it as BCM4377/4 but macOS drivers call it BCM4377b\n\t4488  BCM4377b Wireless Network Adapter\n\t449d  BCM43752 802.11ax Dual Band Wireless LAN Controller\n\t4610  BCM4610 Sentry5 PCI to SB Bridge\n\t4611  BCM4610 Sentry5 iLine32 HomePNA 1.0\n\t4612  BCM4610 Sentry5 V.90 56k Modem\n\t4613  BCM4610 Sentry5 Ethernet Controller\n\t4614  BCM4610 Sentry5 External Interface\n\t4615  BCM4610 Sentry5 USB Controller\n\t4704  BCM4704 PCI to SB Bridge\n\t4705  BCM4704 Sentry5 802.11b Wireless LAN Controller\n\t4706  BCM4704 Sentry5 Ethernet Controller\n\t4707  BCM4704 Sentry5 USB Controller\n\t4708  BCM4704 Crypto Accelerator\n\t4710  BCM4710 Sentry5 PCI to SB Bridge\n\t4711  BCM47xx Sentry5 iLine32 HomePNA 2.0\n\t4712  BCM47xx V.92 56k modem\n\t4713  Sentry5 Ethernet Controller\n\t4714  BCM47xx Sentry5 External Interface\n\t4715  BCM47xx Sentry5 USB / Ethernet Controller\n\t4716  BCM47xx Sentry5 USB Host Controller\n\t4717  BCM47xx Sentry5 USB Device Controller\n\t4718  Sentry5 Crypto Accelerator\n\t4719  BCM47xx/53xx RoboSwitch Core\n\t471a  BCM47xx EHCI Host Controller\n\t4720  BCM4712 MIPS CPU\n\t4727  BCM4313 802.11bgn Wireless Network Adapter\n\t\t1028 0010  Inspiron M5010 / XPS 8300\n\t472a  BCM47xx xHCI Host Controller\n\t5365  BCM5365P Sentry5 Host Bridge\n\t5600  BCM5600 StrataSwitch 24+2 Ethernet Switch Controller\n\t5605  BCM5605 StrataSwitch 24+2 Ethernet Switch Controller\n\t5615  BCM5615 StrataSwitch 24+2 Ethernet Switch Controller\n\t5625  BCM5625 StrataSwitch 24+2 Ethernet Switch Controller\n\t5645  BCM5645 StrataSwitch 24+2 Ethernet Switch Controller\n\t5670  BCM5670 8-Port 10GE Ethernet Switch Fabric\n\t5680  BCM5680 G-Switch 8 Port Gigabit Ethernet Switch Controller\n\t5690  BCM5690 12-port Multi-Layer Gigabit Ethernet Switch\n\t5691  BCM5691 GE/10GE 8+2 Gigabit Ethernet Switch Controller\n\t5692  BCM5692 12-port Multi-Layer Gigabit Ethernet Switch\n\t5695  BCM5695 12-port + HiGig Multi-Layer Gigabit Ethernet Switch\n\t5698  BCM5698 12-port Multi-Layer Gigabit Ethernet Switch\n\t5820  BCM5820 Crypto Accelerator\n\t5821  BCM5821 Crypto Accelerator\n\t5822  BCM5822 Crypto Accelerator\n\t5823  BCM5823 Crypto Accelerator\n\t5824  BCM5824 Crypto Accelerator\n\t5840  BCM5840 Crypto Accelerator\n\t5841  BCM5841 Crypto Accelerator\n\t5850  BCM5850 Crypto Accelerator\n\t5e87  Valkyrie offload engine\n\t5e88  Viper Offload Engine\n# Bluetooth PCI function of the BRCM4378 Wireless Network Adapter\n\t5f69  BRCM4378 Bluetooth Controller\n# Bluetooth PCI function of the BRCM4387 Wireless Network Adapter\n\t5f71  BRCM4387 Bluetooth Controller\n# Bluetooth PCI function of the BRCM4377 Wireless Network Adapter\n\t5fa0  BRCM4377 Bluetooth Controller\n\t8411  BCM47xx PCIe Bridge\n\t8602  BCM7400/BCM7405 Serial ATA Controller\n\t9026  CN99xx [ThunderX2] Integrated USB 3.0 xHCI Host Controller\n\t9027  CN99xx [ThunderX2] Integrated AHCI/SATA 3 Host Controller\n\ta8d8  BCM43224/5 Wireless Network Adapter\n\taa52  BCM43602 802.11ac Wireless LAN SoC\n\tb080  BCM56080 Firelight2 Switch ASIC\n\tb302  BCM56302 StrataXGS 24x1GE 2x10GE Switch Controller\n\tb334  BCM56334 StrataXGS 24x1GE 4x10GE Switch Controller\n\tb370  BCM56370 Switch ASIC\n\tb371  BCM56371 Switch ASIC\n\tb372  BCM56372 Switch ASIC\n\tb375  BCM56375 Switch ASIC\n\tb376  BCM56376 Switch ASIC\n\tb377  BCM56377 Switch ASIC\n\tb379  Broadcom BCM56379 Switch ASIC\n\tb470  BCM56470 SWITCH ASIC\n\tb471  BCM56471 SWITCH ASIC\n\tb472  BCM56472 SWITCH ASIC\n\tb800  BCM56800 StrataXGS 10GE Switch Controller\n\tb842  BCM56842 Trident 10GE Switch Controller\n\tb850  BCM56850 Switch ASIC [Trident2]\n\tb880  BCM56880 Switch ASIC\n\tb960  BCM56960 Switch ASIC [Tomahawk]\n\tb990  BCM56990 Switch ASIC [Tomahawk4]\n# Switch ASIC\n\tb991  Tomahawk4\n\tb992  BCM56992 [Tomahawk4]\n\tb993  BCM56993 Switch ASIC [Tomahawk4]\n\tb995  BCM56995 Switch ASIC [Tomahawk4]\n\tb996  BCM56996 106G Switch ASIC [Tomahawk4G]\n\tb998  BCM56998 106G Switch ASIC [Tomahawk4GT]\n\tb999  BCM56999 106G Switch ASIC [Tomahawk4D]\n\tc909  BCM78909 Switch ASIC\n\td802  BCM58802 Stingray 50Gb Ethernet SoC\n\t\t14e4 8021  Stingray Dual-Port 25Gb Ethernet PCIe SmartNIC w16GB DRAM (Part No BCM958802A8046C)\n\t\t14e4 8023  PS410T-H04 NetXtreme-S 4x10G 10GBaseT PCIe SmartNIC\n\t\t14e4 8024  Stingray Dual-Port 25Gb Ethernet PCIe SmartNIC w4GB DRAM (Part No BCM958802A8044C)\n\t\t14e4 8028  Stingray Dual-Port 25Gb Ethernet PCIe SmartNIC w8GB DRAM (Part No BCM958802A8048C)\n\t\t1bb0 0021  HPE SimpliVity Accelerator\n\td804  BCM58804 Stingray 100Gb Ethernet SoC\n\tf800  BCM78800 Switch ASIC [Trident5-X12]\n\tf900  BCM78900 Switch ASIC [Tomahawk5]\n\tf902  BCM78902 Switch ASIC [Tomahawk5T]\n\tf903  BCM78903 Switch ASIC [Tomahawk5]\n\tf905  BCM78905 Switch ASIC [Tomahawk5+]\n\tf910  BCM78910 Switch ASIC [Tomahawk6]\n\tf914  BCM78914 Switch ASIC [Tomahawk6]\n\tf917  BCM78917 Switch ASIC [Tomahawk6]\n14e5  Pixelfusion Ltd\n14e6  SHINING Technology Inc\n14e7  3CX\n14e8  RAYCER Inc\n14e9  GARNETS System CO Ltd\n14ea  Planex Communications, Inc\n\tab06  FNW-3603-TX CardBus Fast Ethernet\n\tab07  RTL81xx RealTek Ethernet\n\tab08  FNW-3602-TX CardBus Fast Ethernet\n14eb  SEIKO EPSON Corp\n# nee ACQIRIS\n14ec  Agilent Technologies\n\t0000  Aciris Digitizer (malformed ID)\n14ed  DATAKINETICS Ltd\n14ee  MASPRO KENKOH Corp\n14ef  CARRY Computer ENG. CO Ltd\n14f0  CANON RESEACH CENTRE FRANCE\n14f1  Conexant Systems, Inc.\n\t1002  HCF 56k Modem\n\t1003  HCF 56k Modem\n\t1004  HCF 56k Modem\n\t1005  HCF 56k Modem\n\t1006  HCF 56k Modem\n\t1022  HCF 56k Modem\n\t1023  HCF 56k Modem\n\t1024  HCF 56k Modem\n\t1025  HCF 56k Modem\n\t1026  HCF 56k Modem\n\t1032  HCF 56k Modem\n\t1033  HCF 56k Data/Fax Modem\n\t\t1033 8077  NEC\n\t\t122d 4027  Dell Zeus - MDP3880-W(B) Data Fax Modem\n\t\t122d 4030  Dell Mercury - MDP3880-U(B) Data Fax Modem\n\t\t122d 4034  Dell Thor - MDP3880-W(U) Data Fax Modem\n\t\t13e0 020d  Dell Copper\n\t\t13e0 020e  Dell Silver\n\t\t13e0 0261  IBM\n\t\t13e0 0290  Compaq Goldwing\n\t\t13e0 02a0  IBM\n\t\t13e0 02b0  IBM\n\t\t13e0 02c0  Compaq Scooter\n\t\t13e0 02d0  IBM\n\t\t144f 1500  IBM P85-DF (1)\n\t\t144f 1501  IBM P85-DF (2)\n\t\t144f 150a  IBM P85-DF (3)\n\t\t144f 150b  IBM P85-DF Low Profile (1)\n\t\t144f 1510  IBM P85-DF Low Profile (2)\n\t1034  HCF 56k Data/Fax/Voice Modem\n\t1035  HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem\n\t\t10cf 1098  Fujitsu P85-DFSV\n\t1036  HCF 56k Data/Fax/Voice/Spkp Modem\n\t\t104d 8067  HCF 56k Modem\n\t\t122d 4029  MDP3880SP-W\n\t\t122d 4031  MDP3880SP-U\n\t\t13e0 0209  Dell Titanium\n\t\t13e0 020a  Dell Graphite\n\t\t13e0 0260  Gateway Red Owl\n\t\t13e0 0270  Gateway White Horse\n\t1052  HCF 56k Data/Fax Modem (Worldwide)\n\t1053  HCF 56k Data/Fax Modem (Worldwide)\n\t1054  HCF 56k Data/Fax/Voice Modem (Worldwide)\n\t1055  HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (Worldwide)\n\t1056  HCF 56k Data/Fax/Voice/Spkp Modem (Worldwide)\n\t\t122d 4035  MDP3900V-W\n\t1057  HCF 56k Data/Fax/Voice/Spkp Modem (Worldwide)\n\t1059  HCF 56k Data/Fax/Voice Modem (Worldwide)\n\t1063  HCF 56k Data/Fax Modem\n\t1064  HCF 56k Data/Fax/Voice Modem\n\t1065  HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem\n\t1066  HCF 56k Data/Fax/Voice/Spkp Modem\n\t\t122d 4033  Dell Athena - MDP3900V-U\n\t1085  HCF V90 56k Data/Fax/Voice/Spkp PCI Modem\n\t10b6  CX06834-11 HCF V.92 56k Data/Fax/Voice/Spkp Modem\n\t1433  HCF 56k Data/Fax Modem\n\t1434  HCF 56k Data/Fax/Voice Modem\n\t1435  HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem\n\t1436  HCF 56k Data/Fax Modem\n\t1453  HCF 56k Data/Fax Modem\n\t\t13e0 0240  IBM\n\t\t13e0 0250  IBM\n\t\t144f 1502  IBM P95-DF (1)\n\t\t144f 1503  IBM P95-DF (2)\n\t1454  HCF 56k Data/Fax/Voice Modem\n\t1455  HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem\n\t1456  HCF 56k Data/Fax/Voice/Spkp Modem\n\t\t122d 4035  Dell Europa - MDP3900V-W\n\t\t122d 4302  Dell MP3930V-W(C) MiniPCI\n\t1610  ADSL AccessRunner PCI Arbitration Device\n\t1611  AccessRunner PCI ADSL Interface Device\n\t1620  AccessRunner V2 PCI ADSL Arbitration Device\n\t1621  AccessRunner V2 PCI ADSL Interface Device\n\t1622  AccessRunner V2 PCI ADSL Yukon WAN Adapter\n\t1803  HCF 56k Modem\n\t\t0e11 0023  623-LAN Grizzly\n\t\t0e11 0043  623-LAN Yogi\n\t1811  MiniPCI Network Adapter\n\t1815  HCF 56k Modem\n\t\t0e11 0022  Grizzly\n\t\t0e11 0042  Yogi\n# Integrated in CX86111/CX86113 processors\n\t1830  CX861xx Integrated Host Bridge\n\t2003  HSF 56k Data/Fax Modem\n\t2004  HSF 56k Data/Fax/Voice Modem\n\t2005  HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem\n\t2006  HSF 56k Data/Fax/Voice/Spkp Modem\n\t2013  HSF 56k Data/Fax Modem\n\t\t0e11 b195  Bear\n\t\t0e11 b196  Seminole 1\n\t\t0e11 b1be  Seminole 2\n\t\t1025 8013  Acer\n\t\t1033 809d  NEC\n\t\t1033 80bc  NEC\n\t\t155d 6793  HP\n\t\t155d 8850  E Machines\n\t2014  HSF 56k Data/Fax/Voice Modem\n\t2015  HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem\n\t2016  HSF 56k Data/Fax/Voice/Spkp Modem\n\t2043  HSF 56k Data/Fax Modem (WorldW SmartDAA)\n\t2044  HSF 56k Data/Fax/Voice Modem (WorldW SmartDAA)\n\t2045  HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (WorldW SmartDAA)\n\t\t14f1 2045  Generic SoftK56\n\t2046  HSF 56k Data/Fax/Voice/Spkp Modem (WorldW SmartDAA)\n\t2063  HSF 56k Data/Fax Modem (SmartDAA)\n\t2064  HSF 56k Data/Fax/Voice Modem (SmartDAA)\n\t2065  HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (SmartDAA)\n\t2066  HSF 56k Data/Fax/Voice/Spkp Modem (SmartDAA)\n\t2093  HSF 56k Modem\n\t\t155d 2f07  Legend\n\t2143  HSF 56k Data/Fax/Cell Modem (Mob WorldW SmartDAA)\n\t2144  HSF 56k Data/Fax/Voice/Cell Modem (Mob WorldW SmartDAA)\n\t2145  HSF 56k Data/Fax/Voice/Spkp (w/HS)/Cell Modem (Mob WorldW SmartDAA)\n\t2146  HSF 56k Data/Fax/Voice/Spkp/Cell Modem (Mob WorldW SmartDAA)\n\t2163  HSF 56k Data/Fax/Cell Modem (Mob SmartDAA)\n\t2164  HSF 56k Data/Fax/Voice/Cell Modem (Mob SmartDAA)\n\t2165  HSF 56k Data/Fax/Voice/Spkp (w/HS)/Cell Modem (Mob SmartDAA)\n\t2166  HSF 56k Data/Fax/Voice/Spkp/Cell Modem (Mob SmartDAA)\n\t2343  HSF 56k Data/Fax CardBus Modem (Mob WorldW SmartDAA)\n\t2344  HSF 56k Data/Fax/Voice CardBus Modem (Mob WorldW SmartDAA)\n\t2345  HSF 56k Data/Fax/Voice/Spkp (w/HS) CardBus Modem (Mob WorldW SmartDAA)\n\t2346  HSF 56k Data/Fax/Voice/Spkp CardBus Modem (Mob WorldW SmartDAA)\n\t2363  HSF 56k Data/Fax CardBus Modem (Mob SmartDAA)\n\t2364  HSF 56k Data/Fax/Voice CardBus Modem (Mob SmartDAA)\n\t2365  HSF 56k Data/Fax/Voice/Spkp (w/HS) CardBus Modem (Mob SmartDAA)\n\t2366  HSF 56k Data/Fax/Voice/Spkp CardBus Modem (Mob SmartDAA)\n\t2443  HSF 56k Data/Fax Modem (Mob WorldW SmartDAA)\n\t\t104d 8075  Modem\n\t\t104d 8083  Modem\n\t\t104d 8097  Modem\n\t2444  HSF 56k Data/Fax/Voice Modem (Mob WorldW SmartDAA)\n\t2445  HSF 56k Data/Fax/Voice/Spkp (w/HS) Modem (Mob WorldW SmartDAA)\n\t2446  HSF 56k Data/Fax/Voice/Spkp Modem (Mob WorldW SmartDAA)\n\t2463  HSF 56k Data/Fax Modem (Mob SmartDAA)\n\t2464  HSF 56k Data/Fax/Voice Modem (Mob SmartDAA)\n\t2465  HSF 56k Data/Fax/Voice/Spkp (w/HS) Modem (Mob SmartDAA)\n\t2466  HSF 56k Data/Fax/Voice/Spkp Modem (Mob SmartDAA)\n\t2702  HSFi modem RD01-D270\n\t\t1028 8d88  SmartHSFi V92 56K PCI Modem\n\t2f00  HSF 56k HSFi Modem\n\t\t13e0 8d84  IBM HSFi V.90\n\t\t13e0 8d85  Compaq Stinger\n\t\t14f1 2004  Dynalink 56PMi\n\t2f02  HSF 56k HSFi Data/Fax\n\t2f11  HSF 56k HSFi Modem\n\t2f20  HSF 56k Data/Fax Modem\n\t\t14f1 200c  Soft Data Fax Modem with SmartCP\n\t\t14f1 200f  Dimension 3000\n\t2f30  SoftV92 SpeakerPhone SoftRing Modem with SmartSP\n\t\t14f1 2014  Devolo MikroLink 56K Modem PCI\n\t2f50  Conexant SoftK56 Data/Fax Modem\n\t510f  Conexant CX 20751/20752\n\t5b7a  CX23418 Single-Chip MPEG-2 Encoder with Integrated Analog Video/Broadcast Audio Decoder\n\t\t0070 7444  WinTV HVR-1600\n\t\t107d 6f34  WinFast DVR3100 H\n\t\t5854 3343  GoTView PCI DVD3 Hybrid\n\t8200  CX25850\n\t8234  RS8234 ATM SAR Controller [ServiceSAR Plus]\n\t8800  CX23880/1/2/3 PCI Video and Audio Decoder\n\t\t0070 2801  Hauppauge WinTV 28xxx (Roslyn) models\n\t\t0070 3400  WinTV 34604\n\t\t0070 3401  Hauppauge WinTV 34xxx models\n\t\t0070 6902  WinTV HVR-4000-HD\n\t\t0070 7801  WinTV HVR-1800 MCE\n\t\t0070 9001  Nova-T DVB-T\n\t\t0070 9002  Nova-T DVB-T Model 909\n\t\t0070 9200  Nova-SE2 DVB-S\n\t\t0070 9202  Nova-S-Plus DVB-S\n\t\t0070 9402  WinTV-HVR1100 DVB-T/Hybrid\n\t\t0070 9600  WinTV 88x Video\n\t\t0070 9802  WinTV-HVR1100 DVB-T/Hybrid (Low Profile)\n\t\t1002 00f8  ATI TV Wonder Pro\n\t\t1002 00f9  ATI TV Wonder\n\t\t1002 a101  HDTV Wonder\n\t\t1043 4823  PVR-416\n\t\t107d 6611  Winfast TV 2000XP Expert\n\t\t107d 6613  Leadtek Winfast 2000XP Expert\n\t\t107d 6620  Leadtek Winfast DV2000\n\t\t107d 663c  Leadtek PVR 2000\n\t\t107d 665f  WinFast DTV1000-T\n\t\t10fc d003  IODATA GV-VCP3/PCI\n\t\t10fc d035  IODATA GV/BCTV7E\n\t\t1421 0334  Instant TV DVB-T PCI\n\t\t1461 000a  AVerTV 303 (M126)\n\t\t1461 000b  AverTV Studio 303 (M126)\n\t\t1461 8011  UltraTV Media Center PCI 550\n\t\t1462 8606  MSI TV-@nywhere Master\n\t\t14c7 0107  GDI Black Gold\n\t\t14f1 0187  Conexant DVB-T reference design\n\t\t14f1 0342  Digital-Logic MICROSPACE Entertainment Center (MEC)\n\t\t153b 1166  Cinergy 1400 DVB-T\n\t\t1540 2580  Provideo PV259\n\t\t1554 4811  PixelView\n\t\t1554 4813  Club 3D  ZAP1000 MCE Edition\n\t\t17de 08a1  KWorld/VStream XPert DVB-T with cx22702\n\t\t17de 08a6  KWorld/VStream XPert DVB-T\n\t\t17de 08b2  KWorld DVB-S 100\n\t\t17de a8a6  digitalnow DNTV Live! DVB-T\n\t\t1805 0111  PICOLO Jet-X Video\n\t\t1805 0112  PICOLO Jet-X Video\n\t\t1805 0113  PICOLO Jet-X Video\n\t\t1805 0114  PICOLO Jet-X Video\n\t\t1822 0025  digitalnow DNTV Live! DVB-T Pro\n\t\t185b e000  VideoMate X500\n\t\t18ac d500  FusionHDTV 5 Gold\n\t\t18ac d810  FusionHDTV 3 Gold-Q\n\t\t18ac d820  FusionHDTV 3 Gold-T\n\t\t18ac db00  FusionHDTV DVB-T1\n\t\t18ac db11  FusionHDTV DVB-T Plus\n\t\t18ac db50  FusionHDTV DVB-T Dual Digital\n\t\t5654 2388  GoTView PCI Hybrid TV Tuner Card\n\t\t7063 3000  pcHDTV HD3000 HDTV\n\t\t7063 5500  pcHDTV HD-5500\n\t8801  CX23880/1/2/3 PCI Video and Audio Decoder [Audio Port]\n\t\t0070 2801  Hauppauge WinTV 28xxx (Roslyn) models\n\t\t185b e000  VideoMate X500\n\t\t5654 2388  GoTView PCI Hybrid Audio AVStream Device\n\t\t7063 5500  pcHDTV HD-5500\n\t8802  CX23880/1/2/3 PCI Video and Audio Decoder [MPEG Port]\n\t\t0070 2801  Hauppauge WinTV 28xxx (Roslyn) models\n\t\t0070 6902  WinTV HVR-4000-HD\n\t\t0070 9002  Nova-T DVB-T Model 909\n\t\t0070 9402  WinTV-HVR1100 DVB-T/Hybrid\n\t\t0070 9600  WinTV 88x MPEG Encoder\n\t\t1043 4823  PVR-416\n\t\t107d 663c  Leadtek PVR 2000\n\t\t107d 665f  WinFast DTV1000-T\n\t\t14f1 0187  Conexant DVB-T reference design\n\t\t17de 08a1  XPert DVB-T PCI BDA DVBT 23880 Transport Stream Capture\n\t\t17de 08a6  KWorld/VStream XPert DVB-T\n\t\t1805 0111  PICOLO Jet-X Jpeg\n\t\t1805 0112  PICOLO Jet-X Jpeg\n\t\t1805 0113  PICOLO Jet-X Jpeg\n\t\t1805 0114  PICOLO Jet-X Jpeg\n\t\t18ac d500  DViCO FusionHDTV5 Gold\n\t\t18ac d810  DViCO FusionHDTV3 Gold-Q\n\t\t18ac d820  DViCO FusionHDTV3 Gold-T\n\t\t18ac db00  DVICO FusionHDTV DVB-T1\n\t\t18ac db10  DVICO FusionHDTV DVB-T Plus\n\t\t5654 2388  GoTView PCI Hybrid TS Capture Device\n\t\t7063 3000  pcHDTV HD3000 HDTV\n\t\t7063 5500  pcHDTV HD-5500\n\t8804  CX23880/1/2/3 PCI Video and Audio Decoder [IR Port]\n\t\t0070 6902  WinTV HVR-4000-HD\n\t\t0070 9002  Nova-T DVB-T Model 909\n\t\t0070 9402  WinTV-HVR1100 DVB-T/Hybrid\n\t\t1805 0111  PICOLO Jet-X Control\n\t\t1805 0112  PICOLO Jet-X Control\n\t\t1805 0113  PICOLO Jet-X Control\n\t\t1805 0114  PICOLO Jet-X Control\n\t\t7063 5500  pcHDTV HD-5500\n\t8811  CX23880/1/2/3 PCI Video and Audio Decoder [Audio Port]\n\t\t0070 3400  WinTV 34604\n\t\t0070 3401  Hauppauge WinTV 34xxx models\n\t\t0070 6902  WinTV HVR-4000-HD\n\t\t0070 9402  WinTV-HVR1100 DVB-T/Hybrid\n\t\t0070 9600  WinTV 88x Audio\n\t\t1462 8606  MSI TV-@nywhere Master\n\t\t18ac d500  DViCO FusionHDTV5 Gold\n\t\t18ac d810  DViCO FusionHDTV3 Gold-Q\n\t\t18ac d820  DViCO FusionHDTV3 Gold-T\n\t\t18ac db00  DVICO FusionHDTV DVB-T1\n\t\t5654 2388  GoTView PCI Hybrid Audio Capture Device\n\t8852  CX23885 PCI Video and Audio Decoder\n\t\t0070 8010  WinTV HVR-1400 ExpressCard\n\t\t0070 f038  WinTV HVR-5525\n\t\t107d 6f22  WinFast PxTV1200\n\t\t12ab d585  PE988J Hybrid ATSC/QAM PCI-E AVS Video Capture (SoftEncoder)\n\t\t13c2 3013  TT-budget CT2-4500 CI\n\t\t1461 c039  AVerTV Hybrid Express (A577)\n\t\t153b 117e  Cinergy T PCIe Dual\n\t\t18ac db78  FusionHDTV DVB-T Dual Express\n\t\t4254 0950  S950\n\t\t4254 0952  S952\n\t\t4254 0982  T982\n\t\t4254 9580  T9580\n\t\t4254 980c  T980C\n\t8880  CX23887/8 PCIe Broadcast Audio and Video Decoder with 3D Comb\n\t\t0070 2259  WinTV HVR-1250\n\t\t0070 6a18  WinTV-quadHD\n\t\t0070 c108  WinTV-HVR-4400-HD model 1278\n\t\t1461 3100  CE310B SD PCIe Video Capture Card\n\t\t5654 2389  GoTView X5 DVD Hybrid PCI-E\n\t\t5654 2390  GoTView X5 3D HYBRID PCI-E\n14f2  MOBILITY Electronics\n\t0120  EV1000 bridge\n\t0121  EV1000 Parallel port\n\t0122  EV1000 Serial port\n\t0123  EV1000 Keyboard controller\n\t0124  EV1000 Mouse controller\n14f3  BroadLogic\n\t2030  2030 DVB-S Satellite Receiver\n\t2035  2035 DVB-S Satellite Receiver\n\t2050  2050 DVB-T Terrestrial (Cable) Receiver\n\t2060  2060 ATSC Terrestrial (Cable) Receiver\n14f4  TOKYO Electronic Industry CO Ltd\n14f5  SOPAC Ltd\n14f6  COYOTE Technologies LLC\n14f7  WOLF Technology Inc\n14f8  AUDIOCODES Inc\n\t2077  TP-240 dual span E1 VoIP PCI card\n14f9  AG COMMUNICATIONS\n14fa  WANDEL & GOLTERMANN\n14fb  TRANSAS MARINE (UK) Ltd\n14fc  Quadrics Ltd\n\t0000  QsNet Elan3 Network Adapter\n\t0001  QsNetII Elan4 Network Adapter\n\t0002  QsNetIII Elan5 Network Adapter\n14fd  JAPAN Computer Industry Inc\n14fe  ARCHTEK TELECOM Corp\n14ff  TWINHEAD INTERNATIONAL Corp\n1500  DELTA Electronics, Inc\n\t1360  RTL81xx RealTek Ethernet\n1501  BANKSOFT CANADA Ltd\n1502  MITSUBISHI ELECTRIC LOGISTICS SUPPORT Co Ltd\n1503  KAWASAKI LSI USA Inc\n1504  KAISER Electronics\n1505  ITA INGENIEURBURO FUR TESTAUFGABEN GmbH\n1506  CHAMELEON Systems Inc\n# Should be HTEC Ltd, but there are no known HTEC chips and 1507 is already used by mistake by Motorola (see vendor ID 1057).\n1507  Motorola ?? / HTEC\n\t0001  MPC105 [Eagle]\n\t0002  MPC106 [Grackle]\n\t0003  MPC8240 [Kahlua]\n\t0100  MC145575 [HFC-PCI]\n\t0431  KTI829c 100VG\n\t4801  Raven\n\t4802  Falcon\n\t4803  Hawk\n\t4806  CPX8216\n1508  HONDA CONNECTORS/MHOTRONICS Inc\n1509  FIRST INTERNATIONAL Computer Inc\n150a  FORVUS RESEARCH Inc\n150b  YAMASHITA Systems Corp\n150c  KYOPAL CO Ltd\n150d  WARPSPPED Inc\n150e  C-PORT Corp\n150f  INTEC GmbH\n1510  BEHAVIOR TECH Computer Corp\n1511  CENTILLIUM Technology Corp\n1512  ROSUN Technologies Inc\n1513  Raychem\n1514  TFL LAN Inc\n1515  Advent design\n1516  MYSON Technology Inc\n\t0800  MTD-8xx 100/10M Ethernet PCI Adapter\n\t0803  SURECOM EP-320X-S 100/10M Ethernet PCI Adapter\n\t\t1320 10bd  SURECOM EP-320X-S 100/10M Ethernet PCI Adapter\n\t0891  MTD-8xx 100/10M Ethernet PCI Adapter\n1517  ECHOTEK Corp\n# old ID, now 1059\n1518  Kontron\n1519  TELEFON AKTIEBOLAGET LM Ericsson\n151a  Globetek\n\t1002  PCI-1002\n\t1004  PCI-1004\n\t1008  PCI-1008\n151b  COMBOX Ltd\n151c  DIGITAL AUDIO LABS Inc\n\t0003  Prodif T 2496\n\t4000  Prodif 88\n151d  Fujitsu Computer Products Of America\n151e  MATRIX Corp\n151f  TOPIC SEMICONDUCTOR Corp\n\t0000  TP560 Data/Fax/Voice 56k modem\n1520  CHAPLET System Inc\n1521  BELL Corp\n1522  MainPine Ltd\n\t0100  PCI <-> IOBus Bridge\n\t\t1522 0200  RockForceDUO 2 Port V.92/V.44 Data/Fax/Voice Modem\n\t\t1522 0300  RockForceQUATRO 4 Port V.92/V.44 Data/Fax/Voice Modem\n\t\t1522 0400  RockForceDUO+ 2 Port V.92/V.44 Data/Fax/Voice Modem\n\t\t1522 0500  RockForceQUATRO+ 4 Port V.92/V.44 Data/Fax/Voice Modem\n\t\t1522 0600  RockForce+ 2 Port V.90 Data/Fax/Voice Modem\n\t\t1522 0700  RockForce+ 4 Port V.90 Data/Fax/Voice Modem\n\t\t1522 0800  RockForceOCTO+ 8 Port V.92/V.44 Data/Fax/Voice Modem\n\t\t1522 0c00  RockForceDUO+ 2 Port V.92/V.44 Data, V.34 Super-G3 Fax, Voice Modem\n\t\t1522 0d00  RockForceQUATRO+ 4 Port V.92/V.44 Data, V.34 Super-G3 Fax, Voice Modem\n\t\t1522 1d00  RockForceOCTO+ 8 Port V.92/V.44 Data, V.34 Super-G3 Fax, Voice Modem\n\t\t1522 2000  RockForceD1 1 Port V.90 Data Modem\n\t\t1522 2100  RockForceF1 1 Port V.34 Super-G3 Fax Modem\n\t\t1522 2200  RockForceD2 2 Port V.90 Data Modem\n\t\t1522 2300  RockForceF2 2 Port V.34 Super-G3 Fax Modem\n\t\t1522 2400  RockForceD4 4 Port V.90 Data Modem\n\t\t1522 2500  RockForceF4 4 Port V.34 Super-G3 Fax Modem\n\t\t1522 2600  RockForceD8 8 Port V.90 Data Modem\n\t\t1522 2700  RockForceF8 8 Port V.34 Super-G3 Fax Modem\n\t\t1522 3000  IQ Express D1 - 1 Port V.92 Data Modem\n\t\t1522 3100  IQ Express F1 - 1 Port V.34 Super-G3 Fax Modem\n\t\t1522 3200  IQ Express D2 - 2 Port V.92 Data Modem\n\t\t1522 3300  IQ Express F2 - 2 Port V.34 Super-G3 Fax Modem\n\t\t1522 3400  IQ Express D4 - 4 Port V.92 Data Modem\n\t\t1522 3500  IQ Express F4 - 4 Port V.34 Super-G3 Fax Modem\n\t\t1522 3c00  IQ Express D8 - 8 Port V.92 Data Modem\n\t\t1522 3d00  IQ Express F8 - 8 Port V.34 Super-G3 Fax Modem\n\t4000  PCI Express UART\n\t\t1522 4001  IQ Express 1-port V.34 Super-G3 Fax\n\t\t1522 4002  IQ Express 2-port V.34 Super-G3 Fax\n\t\t1522 4004  IQ Express 4-port V.34 Super-G3 Fax\n\t\t1522 4008  IQ Express 8-port V.34 Super-G3 Fax\n\t\t1522 4100  IQ Express SideBand\n1523  MUSIC Semiconductors\n1524  ENE Technology Inc\n\t0510  CB710 Memory Card Reader Controller\n\t\t103c 006a  NX9500\n\t0520  FLASH memory: ENE Technology Inc:\n\t0530  ENE PCI Memory Stick Card Reader Controller\n\t0550  ENE PCI Secure Digital Card Reader Controller\n\t0551  SD/MMC Card Reader Controller\n\t0610  PCI Smart Card Reader Controller\n\t0720  Memory Stick Card Reader Controller\n\t0730  ENE PCI Memory Stick Card Reader Controller\n\t0750  ENE PCI SmartMedia / xD Card Reader Controller\n\t0751  ENE PCI Secure Digital / MMC Card Reader Controller\n\t1211  CB1211 Cardbus Controller\n\t1225  CB1225 Cardbus Controller\n\t1410  CB1410 Cardbus Controller\n\t\t1025 003c  CL50 motherboard\n\t\t1025 005a  TravelMate 290\n\t\t103c 30d5  530 Laptop\n\t1411  CB-710/2/4 Cardbus Controller\n\t\t103c 006a  NX9500\n\t1412  CB-712/4 Cardbus Controller\n\t1420  CB1420 Cardbus Controller\n\t1421  CB-720/2/4 Cardbus Controller\n\t1422  CB-722/4 Cardbus Controller\n1525  IMPACT Technologies\n1526  ISS, Inc\n1527  SOLECTRON\n1528  ACKSYS\n# nee American Microsystems Inc\n1529  ON Semiconductor\n152a  QUICKTURN DESIGN Systems\n152b  FLYTECH Technology CO Ltd\n152c  MACRAIGOR Systems LLC\n152d  QUANTA Computer Inc\n152e  MELEC Inc\n152f  PHILIPS - CRYPTO\n1530  ACQIS Technology Inc\n1531  CHRYON Corp\n1532  ECHELON Corp\n\t0020  LonWorks PCLTA-20 PCI LonTalk Adapter\n1533  BALTIMORE\n1534  ROAD Corp\n1535  EVERGREEN Technologies Inc\n1536  ACTIS Computer\n1537  DATALEX COMMUNCATIONS\n1538  ARALION Inc\n\t0303  ARS106S Ultra ATA 133/100/66 Host Controller\n1539  ATELIER INFORMATIQUES et ELECTRONIQUE ETUDES S.A.\n153a  ONO SOKKI\n153b  TERRATEC Electronic GmbH\n\t1144  Aureon 5.1\n# Terratec seems to use several IDs for the same card.\n\t1147  Aureon 5.1 Sky\n\t1158  Philips Semiconductors SAA7134 (rev 01) [Terratec Cinergy 600 TV]\n153c  ANTAL Electronic\n153d  FILANET Corp\n153e  TECHWELL Inc\n153f  MIPS Technologies, Inc.\n\t0001  SOC-it 101 System Controller\n1540  PROVIDEO MULTIMEDIA Co Ltd\n1541  MACHONE Communications\n# nee VIVID Technology Inc.\n1542  Concurrent Real-Time\n\t9260  RCIM-II Real-Time Clock & Interrupt Module\n\t9271  RCIM-III Real-Time Clock & Interrupt Module (PCIe)\n\t9272  Pulse Width Modulator Card\n\t9273  RCIM-IV Real-Time Clock & Interrupt Module (PCIe)\n\t9277  5 Volt Delta Sigma Converter Card\n\t9278  10 Volt Delta Sigma Converter Card\n\t9287  Analog Output Card\n\t9290  FPGA Card\n\t9300  Universal Exhaust Gas Oxygen Sensor Simulator\n\t9310  Digital Programmable Resistor\n\t9320  Arria 10 FPGA Card\n\t9330  Cyclone V FPGA Card\n\t9350  Analog Input Card\n1543  SILICON Laboratories\n\t3052  Intel 537 [Winmodem]\n\t4c22  Si3036 MC'97 DAA\n1544  DCM DATA Systems\n1545  VISIONTEK\n1546  IOI Technology Corp\n1547  MITUTOYO Corp\n1548  JET PROPULSION Laboratory\n1549  INTERCONNECT Systems Solutions\n154a  MAX Technologies Inc\n154b  COMPUTEX Co Ltd\n154c  VISUAL Technology Inc\n154d  PAN INTERNATIONAL Industrial Corp\n154e  SERVOTEST Ltd\n154f  STRATABEAM Technology\n1550  OPEN NETWORK Co Ltd\n1551  SMART Electronic DEVELOPMENT GmBH\n1552  RACAL AIRTECH Ltd\n1553  CHICONY Electronics Co Ltd\n1554  PROLINK Microsystems Corp\n1555  GESYTEC GmBH\n1556  PLDA\n\t1100  PCI Express Core Reference Design\n\t110f  PCI Express Core Reference Design Virtual Function\n\t1110  XpressRich Reference Design\n\t1111  XpressRich-AXI Ref Design\n\t1112  QuickPCIe\n\t1113  XpressSwitch\n\t1114  Inspector\n\t1115  XpressLINK Ref Design\n\t1116  XpressLINK-SOC Ref Design\n\tbe00  PCI Express Bridge\n1557  MEDIASTAR Co Ltd\n1558  CLEVO/KAPOK Computer\n\t9602  RS780/RS880 PCI to PCI bridge (int gfx)\n1559  SI LOGIC Ltd\n155a  INNOMEDIA Inc\n155b  PROTAC INTERNATIONAL Corp\n155c  Cemax-Icon Inc\n155d  Mac System Co Ltd\n155e  LP Elektronik GmbH\n155f  Perle Systems Ltd\n1560  Terayon Communications Systems\n1561  Viewgraphics Inc\n1562  Symbol Technologies\n1563  A-Trend Technology Co Ltd\n1564  Yamakatsu Electronics Industry Co Ltd\n1565  Biostar Microtech Int'l Corp\n1566  Ardent Technologies Inc\n1567  Jungsoft\n1568  DDK Electronics Inc\n1569  Palit Microsystems Inc.\n156a  Avtec Systems\n156b  2wire Inc\n156c  Vidac Electronics GmbH\n156d  Alpha-Top Corp\n156e  Alfa Inc\n156f  M-Systems Flash Disk Pioneers Ltd\n1570  Teledyne Lecroy\n1571  Contemporary Controls\n\ta001  CCSI PCI20-485 ARCnet\n\ta002  CCSI PCI20-485D ARCnet\n\ta003  CCSI PCI20-485X ARCnet\n\ta004  CCSI PCI20-CXB ARCnet\n\ta005  CCSI PCI20-CXS ARCnet\n\ta006  CCSI PCI20-FOG-SMA ARCnet\n\ta007  CCSI PCI20-FOG-ST ARCnet\n\ta008  CCSI PCI20-TB5 ARCnet\n\ta009  CCSI PCI20-5-485 5Mbit ARCnet\n\ta00a  CCSI PCI20-5-485D 5Mbit ARCnet\n\ta00b  CCSI PCI20-5-485X 5Mbit ARCnet\n\ta00c  CCSI PCI20-5-FOG-ST 5Mbit ARCnet\n\ta00d  CCSI PCI20-5-FOG-SMA 5Mbit ARCnet\n\ta201  CCSI PCI22-485 10Mbit ARCnet\n\ta202  CCSI PCI22-485D 10Mbit ARCnet\n\ta203  CCSI PCI22-485X 10Mbit ARCnet\n\ta204  CCSI PCI22-CHB 10Mbit ARCnet\n\ta205  CCSI PCI22-FOG_ST 10Mbit ARCnet\n\ta206  CCSI PCI22-THB 10Mbit ARCnet\n1572  Otis Elevator Company\n1573  Lattice - Vantis\n1574  Fairchild Semiconductor\n1575  Voltaire Advanced Data Security Ltd\n1576  Viewcast COM\n1578  HITT\n\t4d34  VPMK4 [Video Processor Mk IV]\n\t5615  VPMK3 [Video Processor Mk III]\n1579  Dual Technology Corp\n157a  Japan Elecronics Ind Inc\n157b  Star Multimedia Corp\n157c  Eurosoft (UK)\n\t8001  Fix2000 PCI Y2K Compliance Card\n157d  Gemflex Networks\n157e  Transition Networks\n157f  PX Instruments Technology Ltd\n1580  Primex Aerospace Co\n1581  SEH Computertechnik GmbH\n1582  Cytec Corp\n1583  Inet Technologies Inc\n1584  Uniwill Computer Corp\n1585  Logitron\n1586  Lancast Inc\n1587  Konica Corp\n1588  Solidum Systems Corp\n1589  Atlantek Microsystems Pty Ltd\n\t0008  Leutron Vision PicPortExpress CL\n\t0009  Leutron Vision PicPortExpress CL Stereo\n158a  Digalog Systems Inc\n158b  Allied Data Technologies\n158c  Hitachi Semiconductor & Devices Sales Co Ltd\n158d  Point Multimedia Systems\n158e  Lara Technology Inc\n158f  Ditect Coop\n# formerly 3PAR Inc.\n1590  Hewlett Packard Enterprise\n\t0001  Eagle Cluster Manager\n\t0002  Osprey Cluster Manager\n\t0003  Harrier Cluster Manager\n\t0371  Cassini 2 [Slingshot 400Gb]\n\t0372  Cassini 2 [Slingshot 400Gb] SR-IOV VF\n\ta01d  FC044X Fibre Channel HBA\n1591  ARN\n1592  Syba Tech Ltd\n\t0781  Multi-IO Card\n\t0782  Parallel Port Card 2xEPP\n\t0783  Multi-IO Card\n\t0785  Multi-IO Card\n\t0786  Multi-IO Card\n\t0787  Multi-IO Card\n\t0788  Multi-IO Card\n\t078a  Multi-IO Card\n1593  Bops Inc\n1594  Netgame Ltd\n1595  Diva Systems Corp\n1596  Folsom Research Inc\n1597  Memec Design Services\n1598  Granite Microsystems\n1599  Delta Electronics Inc\n159a  General Instrument\n159b  Faraday Technology Corp\n\t4321  StorLink SL3516 (Gemini) Host Bridge\n159c  Stratus Computer Systems\n159d  Ningbo Harrison Electronics Co Ltd\n159e  A-Max Technology Co Ltd\n159f  Galea Network Security\n15a0  Compumaster SRL\n15a1  Geocast Network Systems\n15a2  Catalyst Enterprises Inc\n\t0001  TA700 PCI Bus Analyzer/Exerciser\n15a3  Italtel\n15a4  X-Net OY\n15a5  Toyota Macs Inc\n15a6  Sunlight Ultrasound Technologies Ltd\n15a7  SSE Telecom Inc\n15a8  Shanghai Communications Technologies Center\n15aa  Moreton Bay\n15ab  Bluesteel Networks Inc\n15ac  North Atlantic Instruments\n\t6893  3U OpenVPX Multi-function I/O Board [Model 68C3]\n15ad  VMware\n\t0405  SVGA II Adapter\n\t0406  SVGA II Adapter (Fusion)\n\t0710  SVGA Adapter\n\t0720  VMXNET Ethernet Controller\n\t0740  Virtual Machine Communication Interface\n\t0770  USB2 EHCI Controller\n\t0774  USB1.1 UHCI Controller\n\t0778  USB3 xHCI 0.96 Controller\n\t0779  USB3 xHCI 1.0 Controller\n\t0790  PCI bridge\n\t07a0  PCI Express Root Port\n\t07b0  VMXNET3 Ethernet Controller\n\t07c0  PVSCSI SCSI Controller\n\t07e0  SATA AHCI controller\n\t07f0  NVMe SSD Controller\n\t0801  Virtual Machine Interface\n\t\t15ad 0800  Hypervisor ROM Interface\n\t0820  Paravirtual RDMA controller\n\t1977  HD Audio Controller\n15ae  Amersham Pharmacia Biotech\n15b0  Zoltrix International Ltd\n15b1  Source Technology Inc\n15b2  Mosaid Technologies Inc\n# now NVIDIA\n15b3  Mellanox Technologies\n\t0191  MT25408 [ConnectX IB Flash Recovery]\n\t01f6  MT27500 Family [ConnectX-3 Flash Recovery]\n\t01f8  MT27520 Family [ConnectX-3 Pro Flash Recovery]\n\t01ff  MT27600 Family [Connect-IB Flash Recovery]\n\t0209  MT27700 Family [ConnectX-4 Flash Recovery]\n\t020b  MT27710 Family [ConnectX-4 Lx Flash Recovery]\n\t020d  MT28800 Family [ConnectX-5 Flash Recovery]\n\t020f  MT28908A0 Family [ConnectX-6 Flash Recovery]\n\t0210  MT28908A0 Family [ConnectX-6 Secure Flash Recovery]\n\t0211  MT416842 Family [BlueField SoC Flash Recovery]\n\t0212  MT2892 Family [ConnectX-6 Dx Flash Recovery]\n\t0213  MT2892 Family [ConnectX-6 Dx Secure Flash Recovery]\n\t0214  MT42822 Family [BlueField-2 SoC Flash Recovery]\n\t0215  MT42822 Family [BlueField-2 Secure Flash Recovery]\n\t0216  MT2894 Family [ConnectX-6 Lx Flash Recovery]\n\t0217  MT2894 Family [ConnectX-6 Lx Secure Flash Recovery]\n\t0218  MT2910 Family [ConnectX-7 Flash Recovery]\n\t0219  MT2910 Family [ConnectX-7 Secure Flash Recovery]\n\t021a  MT43162 Family [BlueField-3 Lx SoC Flash Recovery]\n\t021b  MT43162 Family [BlueField-3 Lx Secure Flash Recovery]\n\t021c  MT43244 Family [BlueField-3 SoC Flash Recovery]\n\t021d  MT43244 Family [BlueField-3 Secure Flash Recovery]\n\t021e  CX8 Family [ConnectX-8 Flash Recovery]\n\t021f  CX8 Family [ConnectX-8 Secure Flash Recovery]\n\t0220  BF4 Family Flash Recovery [BlueField-4 SoC Flash Recovery]\n\t0221  BF4 Family Secure Flash Recovery [BlueField-4 Secure Flash Recovery]\n\t0222  CX8 PCIe Switch Family [ConnectX-8 PCIe Switch Flash Recovery]\n\t0223  CX8 PCIe Switch Family [ConnectX-8 PCIe Switch Secure Flash Recovery-RMA]\n\t0224  CX9 Family [ConnectX-9 Flash Recovery]\n\t0225  CX9 Family [ConnectX-9 Secure Flash Recovery-RMA]\n\t0226  CX10 Family [ConnectX-10 Flash Recovery]\n\t0227  CX10 Family [ConnectX-10 Secure Flash Recovery-RMA]\n\t0228  CX9 PCIe Switch Family [ConnectX-9 PCIe Switch Flash Recovery]\n\t0229  CX9 PCIe Switch Family [ConnectX-9 PCIe Switch Secure Flash Recovery-RMA]\n\t024e  MT53100 [Spectrum-2, Flash recovery mode]\n\t024f  MT53100 [Spectrum-2, Secure Flash recovery mode]\n\t0250  Spectrum-3, Flash recovery mode\n\t0251  Spectrum-3, Secure Flash recovery mode\n\t0252  Amos chiplet\n\t0253  Amos GearBox Manager\n\t0254  Spectrum-4, Flash recovery mode\n\t0255  Spectrum-4 RMA\n\t0256  Abir GearBox\n\t0257  Quantum-2 in Flash Recovery Mode\n\t0258  Quantum-2 RMA\n\t0259  Abir Chiplet\n\t025b  Quantum-3 in Flash Recovery Mode\n\t025c  Quantum-3 RMA\n\t025d  Quantum-3CPO in Flash Recovery Mode\n\t025e  Quantum-3CPO RMA\n\t0262  MT27710 [ConnectX-4 Lx Programmable] EN\n\t0263  MT27710 [ConnectX-4 Lx Programmable Virtual Function] EN\n\t0264  Innova-2 Flex Burn image\n\t0270  Spectrum-5 in Flash Recovery Mode\n\t0271  Spectrum-5 RMA\n\t0274  Spectrum-6 in Flash Recovery Mode\n\t0275  Spectrum-6 RMA\n\t0277  Spectrum-6 Tile\n\t0278  Quantum-4 in Flash Recovery Mode\n\t0279  Quantum-4 RMA\n\t027a  Eros Chiplet\n\t027c  Quantum-5 in Flash Recovery Mode\n\t027d  Quantum-5 RMA\n\t0281  NPS-600 Flash Recovery\n\t0282  ArcusE Flash recovery\n\t0283  ArcusE RMA\n\t0284  Sagitta\n\t0285  Sagitta RMA\n\t0286  LibraE Flash Recovery\n\t0287  LibraE RMA\n# Flash recovery\n\t0288  Arcus2\n\t0289  Arcus2 RMA\n\t0290  SagittaZ\n\t0292  Arcus3 Flash Recovery\n\t0293  Arcus3 RMA\n\t0294  Ophy 2.1 (SagittaZ)\n# Sagitta\n\t0296  OPHY2.6\n# Sagitta\n\t0298  OPHY3.0\n# Sagitta\n\t029a  OPHY3.1\n# Sagitta\n\t029c  OPHY3.5\n\t02a0  Quantum-6 in Flash Recovery Mode\n\t02a1  Quantum-6 RMA\n\t02a2  Spectrum-7 in Flash Recovery Mode\n\t02a3  Spectrum-7 RMA\n\t1002  MT25400 Family [ConnectX-2 Virtual Function]\n\t1003  MT27500 Family [ConnectX-3]\n\t\t1014 04b5  PCIe3 40GbE RoCE Converged Host Bus Adapter for Power\n\t\t103c 1777  InfiniBand FDR/EN 10/40Gb Dual Port 544FLR-QSFP Adapter (Rev Cx)\n\t\t103c 17c9  Infiniband QDR/Ethernet 10Gb 2-port 544i Adapter\n\t\t103c 18ce  InfiniBand QDR/EN 10Gb Dual Port 544M Adapter\n\t\t103c 18cf  InfiniBand FDR/EN 10/40Gb Dual Port 544M Adapter\n\t\t103c 18d6  InfiniBand FDR/EN 10/40Gb Dual Port 544QSFP Adapter\n\t\t15b3 0025  ConnectX-3 IB QDR Dual Port Mezzanine Card\n\t\t15b3 0026  ConnectX-3 IB FDR Dual Port Mezzanine Card\n\t\t15b3 0028  ConnectX-3 VPI Dual QSFP+ Port QDR Infiniband 40Gb/s or 10Gb Ethernet\n\t\t15b3 0055  ConnectX-3 10 GbE Single Port SFP+ Adapter\n\t\t15b3 0059  ConnectX-3 VPI IB FDR/40 GbE Single Port QSFP+ Mezzanine Card\n\t\t15b3 0064  ConnectX-3 EN 10/40 GbE Single Port QSFP+ Adapter (MCX313A-BCBT)\n\t\t15b3 0065  ConnectX-3 VPI IB FDR/40 GbE Dual Port QSFP+ Adapter\n\t\t15b3 0066  ConnectX-3 IB FDR10 Dual Port Mezzanine Card\n\t\t15b3 0067  ConnectX-3 VPI IB FDR/40 GbE Single Port QSFP+ Adapter\n\t\t15b3 0071  ConnectX-3 VPI IB FDR/40 GbE Dual Port QSFP+ Mezzanine Card\n\t\t15b3 0078  ConnectX-3 10 GbE Dual Port KR Mezzanine Card\n\t\t15b3 0079  ConnectX-3 40 GbE Dual Port QSFP+ Adapter\n\t\t15b3 0080  ConnectX-3 10 GbE Dual Port SFP+ Adapter\n\t1004  MT27500/MT27520 Family [ConnectX-3/ConnectX-3 Pro Virtual Function]\n\t1005  MT27510 Family\n\t1006  MT27511 Family\n\t1007  MT27520 Family [ConnectX-3 Pro]\n\t\t1014 04eb  2-Port 10GbE NIC and RoCE SR PCIe3\n\t\t103c 22f3  InfiniBand FDR/Ethernet 10Gb/40Gb 2-port 544+QSFP Adapter\n\t\t103c 22f4  InfiniBand FDR/Ethernet 10Gb/40Gb 2-port 544+FLR-QSFP Adapter\n\t\t103c 801f  Ethernet 10G 2-port 546SFP+ Adapter\n\t\t117c 0090  FastFrame NQ41\n\t\t117c 0091  FastFrame NQ42\n\t\t117c 0092  FastFrame NQ11\n\t\t117c 0093  FastFrame NQ12\n\t\t15b3 0006  Mellanox Technologies ConnectX-3 Pro Stand-up dual-port 40GbE MCX314A-BCCT\n\t\t15b3 000c  ConnectX-3 Pro 10 GbE Dual Port SFP+ Adapter revision A1\n\t\t15b3 0078  ConnectX-3 Pro 10 GbE Dual Port KR Mezzanine Card\n\t\t15b3 0079  ConnectX-3 Pro 40 GbE Dual Port QSFP+ Adapter\n\t\t15b3 0080  ConnectX-3 Pro 10 GbE Dual Port SFP+ Adapter\n\t\t193d 1002  520F-B\n\t1009  MT27530 Family\n\t100a  MT27531 Family\n\t100b  MT27540 Family\n\t100c  MT27541 Family\n\t100d  MT27550 Family\n\t100e  MT27551 Family\n\t100f  MT27560 Family\n\t1010  MT27561 Family\n\t1011  MT27600 [Connect-IB]\n\t1012  MT27600 Family [Connect-IB Virtual Function]\n\t1013  MT27700 Family [ConnectX-4]\n\t\t1014 04f7  PCIe3 2-port 100 GbE (NIC and RoCE) QSFP28 Adapter for Power\n\t\t117c 00af  FastFrame N351 Single-port 50Gb Ethernet Adapter\n\t\t117c 00b0  FastFrame N352 Dual-port 50Gb Ethernet Adapter\n\t\t15b3 0003  Mellanox Technologies ConnectX-4 Stand-up single-port 40GbE MCX413A-BCAT\n\t\t15b3 0005  Mellanox Technologies ConnectX-4 Stand-up single-port 40GbE MCX415A-BCAT\n\t\t15b3 0006  MCX416A-BCAT, ConnectX-4 EN, 40/56GbE 2P, PCIe3.0 x16\n\t\t15b3 0007  ConnectX-4 EN network interface card, 40/56GbE dual-port QSFP28, PCIe3.0 x16, tall bracket\n\t\t15b3 0008  ConnectX-4 Stand-up dual-port 100GbE MCX416A-CCAT\n\t\t15b3 0033  ConnectX-4 VPI IB EDR/100 GbE Single Port QSFP28 Adapter\n\t\t15b3 0034  ConnectX-4 VPI IB EDR/100 GbE Dual Port QSFP28 Adapter\n\t\t15b3 0050  ConnectX-4 100 GbE Dual Port QSFP28 Adapter\n\t1014  MT27700 Family [ConnectX-4 Virtual Function]\n\t1015  MT27710 Family [ConnectX-4 Lx]\n\t\t117c 00b4  FastFrame N322 Dual-port 25Gb Ethernet Adapter\n\t\t117c 40b7  ThunderLink TLN3-3252 Dual-port 25Gb Ethernet Adapter\n\t\t117c 40b8  ThunderLink TLN3-3102 Dual-port 10Gb Ethernet Adapter\n\t\t15b3 0001  ConnectX-4 Lx EN network interface card, 25GbE single-port SFP28, PCIe3.0 x8, tall bracket, ROHS R6\n\t\t15b3 0003  Stand-up ConnectX-4 Lx EN, 25GbE dual-port SFP28, PCIe3.0 x8, MCX4121A-ACAT\n\t\t15b3 0004  ConnectX-4 Lx Stand-up dual-port 10GbE MCX4121A-XCAT\n\t\t15b3 0005  Mellanox Technologies ConnectX-4 Lx Stand-up single-port 40GbE MCX4131A-BCAT\n\t\t15b3 0020  MCX4411A-ACQN, ConnectX-4 Lx EN OCP, 1x25Gb\n\t\t15b3 0021  MCX4421A-ACQN ConnectX-4 Lx EN OCP,2x25G\n\t\t15b3 0025  ConnectX-4 Lx 25 GbE Dual Port SFP28 rNDC\n\t\t193d 100a  620F-B\n# NIC-ETH540F-LP-2P SFP+ Ethernet Card\n\t\t193d 1023  NIC-ETH540F-LP-2P\n\t\t193d 1031  NIC-ETH640i-Mb-2x25G\n# NIC-ETH640F-3S-2P OCP3.0 Card\n\t\t193d 1083  NIC-ETH640F-3S-2P\n# NIC-ETH540F-3S-2P OCP3.0 2x10G Card\n\t\t193d 1084  NIC-ETH540F-3S-2P\n\t\t1e81 0c10  25GbE dual-port SFP28, PCIe3.0 x8 [3SC10]\n\t\t1f3f 0c10  25GbE dual-port SFP28, PCIe3.0 x8, 3SC10\n\t1016  MT27710 Family [ConnectX-4 Lx Virtual Function]\n\t1017  MT27800 Family [ConnectX-5]\n\t\t117c 00b1  FastFrame N311 Single-port 10Gb Ethernet Adapter\n\t\t117c 00b2  FastFrame N312 Dual-port 10Gb Ethernet Adapter\n\t\t15b3 0006  ConnectX-5 EN network interface card, 100GbE single-port QSFP28, PCIe3.0 x16, tall bracket; MCX515A-CCAT\n\t\t15b3 0007  Mellanox ConnectX-5 MCX516A-CCAT\n\t\t15b3 0020  ConnectX-5 EN network interface card, 10/25GbE dual-port SFP28, PCIe3.0 x8, tall bracket ; MCX512A-ACAT\n\t\t15b3 0068  ConnectX-5 EN network interface card for OCP2.0, Type 1, with host management, 25GbE dual-port SFP28, PCIe3.0 x8, no bracket Halogen free ; MCX542B-ACAN\n\t\t193d 1051  NIC-IB1040i-Mb-2P\n\t1018  MT27800 Family [ConnectX-5 Virtual Function]\n\t1019  MT28800 Family [ConnectX-5 Ex]\n\t\t1014 0617  PCIe4 x16 2-Port EDR IB-only ConnectX-5 CAPI Capable Adapter [IBM EC64]\n\t\t1014 0635  PCIe4 2-port 100 GbE RoCE x16 adapter [IBM EC66]\n\t\t15b3 0008  ConnectX-5 Ex EN network interface card, 100GbE dual-port QSFP28, PCIe4.0 x16, tall bracket; MCX516A-CDAT\n\t\t15b3 0125  Tencent ConnectX-5 EN Ex network interface card for OCP 3.0, with host management, 50GbE Dual-port QSFP28, PCIe4.0 x16, Thumbscrew (pull-tab) bracket\n\t\t15b3 0126  PCIe4 x16 2-port EDR 100GbE ConnectX-5 CAPI Capable adapter [IBM AJP1]\n\t101a  MT28800 Family [ConnectX-5 Ex Virtual Function]\n\t101b  MT28908 Family [ConnectX-6]\n\t101c  MT28908 Family [ConnectX-6 Virtual Function]\n\t101d  MT2892 Family [ConnectX-6 Dx]\n\t\t193d 1055  NIC-ETH1040F-LP-2P QSFP56 2x100GbE PCIe Network Adapter\n\t101e  ConnectX Family mlx5Gen Virtual Function\n\t101f  MT2894 Family [ConnectX-6 Lx]\n\t\t193d 1035  NIC-ETH641F-LP-2P SFP28 2x25GbE PCIe Network Adapter\n\t\t1bd4 00ac  O252MCX6Lx\n\t\t1bd4 00ae  S252MCX6Lx\n\t\t1f3f 0c11  25GbE dual-port SFP28, PCIe4.0 x8, 3SC1125GbE dual-port SFP28, PCIe4.0 x8, 3SC11\n\t\t1ff9 00ad  ENFM6251-SP2\n\t\t1ff9 00af  ENPM6251-SP2\n\t1020  MT28860\n\t1021  MT2910 Family [ConnectX-7]\n\t1023  CX8 Family [ConnectX-8]\n\t1024  CX8 PCIe Switch Family [ConnectX-8 PCIe Switch]\n\t1025  CX9 Family [ConnectX-9]\n\t1027  CX10 Family [ConnectX-10]\n\t1974  MT28800 Family [ConnectX-5 PCIe Bridge]\n\t1975  MT416842 Family [BlueField SoC PCIe Bridge]\n\t1976  MT28908 Family [ConnectX-6 PCIe Bridge]\n\t1977  MT2892 Family [ConnectX-6 Dx PCIe Bridge]\n\t1978  MT42822 Family [BlueField-2 SoC PCIe Bridge]\n\t1979  MT2910 Family [ConnectX-7 PCIe Bridge]\n\t197a  MT43162 Family [BlueField-3 Lx SoC PCIe Bridge]\n\t197b  MT43244 Family [BlueField-3 SoC PCIe Bridge]\n\t197c  ConnectX/BlueField Family mlx5Gen PCIe Bridge [PCIe Bridge]\n\t197d  CX8 Family [ConnectX-8 PCIe Bridge]\n\t197e  CX9 Family [ConnectX-9 PCIe Bridge]\n\t197f  CX10 Family [ConnectX-10 PCIe Bridge]\n\t2020  MT2892 Family [ConnectX-6 Dx Emulated PCIe Bridge]\n\t2021  MT42822 Family [BlueField-2 SoC Emulated PCIe Bridge]\n\t2023  MT2910 Family [ConnectX-7 Emulated PCIe Bridge]\n\t2024  MT43244 Family [BlueField-3 SoC Emulated PCIe Bridge]\n\t2025  ConnectX/BlueField Family mlx5Gen Emulated PCIe Bridge [Emulated PCIe Bridge]\n\t2100  CX8 Family [CX8 Data Direct Interface]\n\t4117  MT27712A0-FDCF-AE\n\t\t1bd4 0039  SN10XMP2P25\n\t\t1bd4 003a  25G SFP28 SP EO251FM9 Adapter\n\t\t1bd4 004d  SN10XMP2P25,YZPC-01191-101\n\t5274  MT21108 InfiniBridge\n\t5a44  MT23108 InfiniHost\n\t5a45  MT23108 [Infinihost HCA Flash Recovery]\n\t5a46  MT23108 PCI Bridge\n\t5e8c  MT24204 [InfiniHost III Lx HCA]\n\t5e8d  MT25204 [InfiniHost III Lx HCA Flash Recovery]\n\t6001  NVMe SNAP Controller\n\t6274  MT25204 [InfiniHost III Lx HCA]\n\t6278  MT25208 InfiniHost III Ex (Tavor compatibility mode)\n\t6279  MT25208 [InfiniHost III Ex HCA Flash Recovery]\n\t6282  MT25208 [InfiniHost III Ex]\n\t6340  MT25408A0-FCC-SI ConnectX, Dual Port 10Gb/s InfiniBand / 10GigE Adapter IC with PCIe 2.0 x8 2.5GT/s Interface\n\t634a  MT25408A0-FCC-DI ConnectX, Dual Port 20Gb/s InfiniBand / 10GigE Adapter IC with PCIe 2.0 x8 2.5GT/s Interface\n\t\t1014 1014  4X InfiniBand DDR Expansion Card (CFFh) for IBM BladeCenter\n\t6368  MT25448 [ConnectX EN 10GigE, PCIe 2.0 2.5GT/s]\n\t6372  MT25458 ConnectX EN 10GBASE-T PCIe 2.5 GT/s\n\t6732  MT25408A0-FCC-GI ConnectX, Dual Port 20Gb/s InfiniBand / 10GigE Adapter IC with PCIe 2.0 x8 5.0GT/s Interface\n\t673c  MT25408A0-FCC-QI ConnectX, Dual Port 40Gb/s InfiniBand / 10GigE Adapter IC with PCIe 2.0 x8 5.0GT/s Interface\n\t\t1014 0415  PCIe2 2-port 4X InfiniBand QDR Adapter for Power\n\t\t1014 0487  GX++ 1-port 4X IB QDR Adapter for Power 795\n\t\t103c 1782  4X QDR InfiniBand Mezzanine HCA for c-Class BladeSystem\n\t\t15b3 0021  HP InfiniBand 4X QDR CX-2 PCI-e G2 Dual Port HCA\n\t6746  MT26438 [ConnectX VPI PCIe 2.0 5GT/s - IB QDR / 10GigE Virtualization+]\n\t\t103c 1781  NC543i 1-port 4x QDR IB/Flex-10 10Gb Adapter\n\t\t103c 3349  NC543i 2-port 4xQDR IB/10Gb Adapter\n\t6750  MT26448 [ConnectX EN 10GigE, PCIe 2.0 5GT/s]\n\t\t1014 0416  PCIe2 2-Port 10GbE RoCE SFP+ Adapter\n\t\t1014 0461  PCIe2 2-Port 10GbE RoCE SR Adapter\n\t\t15b3 0018  HP 10 GbE PCI-e G2 Dual-Port NIC (rev C1)\n# FC EC26\n\t\t15b3 6572  IBM Flex System EN4132 2-port 10Gb RoCE Adapter\n\t675a  MT26458 ConnectX EN 10GBASE-T PCIe Gen2 5.0 GT/s\n\t6764  MT26468 [ConnectX EN 10GigE, PCIe 2.0 5GT/s Virtualization+]\n\t\t103c 3313  NC542m Dual Port Flex-10 10GbE BLc Adapter\n\t676e  MT26478 [ConnectX EN 40GigE, PCIe 2.0 5GT/s]\n\t6778  MT26488 [ConnectX VPI PCIe 2.0 5GT/s - IB DDR / 10GigE Virtualization+]\n\t7101  NPS-400 configuration and management interface\n\t7102  NPS-400 network interface PF\n\t7103  NPS-400 network interface VF\n\t7121  NPS-600 configuration and management interface\n\t7122  NPS-600 network interface PF\n\t7123  NPS-600 network interface VF\n\t8200  Innova-2 Flex Shell Logic\n\ta2d0  MT416842 BlueField SoC Crypto enabled\n\ta2d1  MT416842 BlueField SoC Crypto disabled\n\ta2d2  MT416842 BlueField integrated ConnectX-5 network controller\n\ta2d3  MT416842 BlueField multicore SoC family VF\n\ta2d4  MT42822 BlueField-2 SoC Crypto enabled\n\ta2d5  MT42822 BlueField-2 SoC Crypto disabled\n\ta2d6  MT42822 BlueField-2 integrated ConnectX-6 Dx network controller\n\ta2d7  MT43162 BlueField-3 Lx SoC Crypto enabled\n\ta2d8  MT43162 BlueField-3 Lx SoC Crypto disabled\n\ta2d9  MT43162 BlueField-3 Lx integrated ConnectX-7 network controller\n\ta2da  MT43244 BlueField-3 SoC Crypto enabled\n\ta2db  MT43244 BlueField-3 SoC Crypto disabled\n\ta2dc  MT43244 BlueField-3 integrated ConnectX-7 network controller\n\ta2dd  BF4 Family Crypto enabled [BlueField-4 SoC Crypto enabled]\n\ta2de  BF4 Family Crypto disabled [BlueField-4 SoC Crypto disabled]\n\ta2df  BF4 Family integrated network controller [BlueField-4 integrated network controller]\n\tb200  ArcusE\n\tb201  LibraE\n\tb202  Arcus2\n\tb203  Arcus3\n\tc2d1  BlueField DPU Family Auxiliary Communication Channel [BlueField Family]\n\tc2d2  MT416842 BlueField SoC management interfac\n\tc2d3  MT42822 BlueField-2 SoC Management Interface\n\tc2d4  MT43162 BlueField-3 Lx SoC Management Interface\n\tc2d5  MT43244 BlueField-3 SoC Management Interface\n\tc2d6  BF4 Family Management Interface [BlueField-4 SoC Management Interface]\n# SwitchX-2, 40GbE switch\n\tc738  MT51136\n\tc739  MT51136 GW\n\tc838  MT52236\n\tc839  MT52236 router\n\tcaf1  ConnectX-4 CAPI Function\n# Spectrum, 100GbE Switch\n\tcb84  MT52100\n\tcf08  Switch-IB2\n\tcf6c  MT53100 [Spectrum-2]\n\tcf70  Spectrum-3\n\tcf80  Spectrum-4\n\tcf82  Spectrum-5\n\tcf84  Spectrum-6\n\tcf86  Spectrum-7\n\td2f0  Quantum HDR (200Gbps) switch\n\td2f2  Quantum-2 NDR (400Gbps) switch\n\td2f4  Quantum-3\n\td2f6  Quantum-3CPO\n\td2f8  Quantum-4\n\td2fa  Quantum-5\n\td2fc  Quantum-6\n15b4  CCI/TRIAD\n15b5  Cimetrics Inc\n15b6  Texas Memory Systems Inc\n\t0001  XP15 DSP Accelerator\n\t0002  XP30 DSP Accelerator\n\t0003  XP00 Data Acquisition Device\n\t0004  XP35 DSP Accelerator\n\t0007  XP100 DSP Accelerator [XP100-T0]\n\t0008  XP100 DSP Accelerator [XP100-T1]\n\t0009  XP100 DSP Accelerator [XP100-E0]\n\t000a  XP100 DSP Accelerator [XP100-E1]\n\t000e  XP100 DSP Accelerator [XP100-0]\n\t000f  XP100 DSP Accelerator [XP100-1]\n\t0010  XP100 DSP Accelerator [XP100-P0]\n\t0011  XP100 DSP Accelerator [XP100-P1]\n\t0012  XP100 DSP Accelerator [XP100-P2]\n\t0013  XP100 DSP Accelerator [XP100-P3]\n\t0014  RamSan Flash SSD\n\t0015  ZBox\n15b7  Sandisk Corp\n\t2001  Skyhawk Series NVME SSD\n\t5001  WD Black NVMe SSD\n\t5002  SanDisk Extreme Pro / WD Black 2018/SN750/PC SN720 NVMe SSD\n\t5003  WD Blue SN500 / PC SN520 x2 M.2 2280 NVMe SSD\n\t5004  PC SN520 x2 M.2 2230 NVMe SSD\n\t5005  PC SN520 x2 M.2 2242 NVMe SSD\n\t5006  SanDisk Extreme Pro / WD Black SN750 / PC SN730 / Red SN700 NVMe SSD\n\t5007  IX SN530 NVMe SSD (DRAM-less)\n\t5008  PC SN530 NVMe SSD (DRAM-less)\n\t5009  SanDisk Ultra 3D / WD PC SN530, IX SN530, Blue SN550 NVMe SSD (DRAM-less)\n\t\t15b7 5009  WD Blue SN550 NVMe SSD\n\t500b  PC SN530 NVMe SSD\n\t\t1414 500b  Xbox Series X\n\t500d  WD Ultrastar DC SN340 NVMe SSD\n\t5011  WD PC SN810 / Black SN850 NVMe SSD\n\t5014  WD PC SN540 / Green SN350 NVMe SSD 1 TB (DRAM-less)\n\t5015  PC SN740 NVMe SSD (DRAM-less)\n\t5016  WD PC SN740 NVMe SSD 512GB (DRAM-less)\n\t5017  WD SN560/SN740/SN770/SN5000 NVMe SSD\n\t5019  WD Green SN350 240GB (DRAM-less) / SN560E NVMe SSD\n\t501a  SanDisk Ultra 3D / WD Blue SN570 NVMe SSD (DRAM-less)\n\t501d  WD Blue SN550 NVMe SSD 2TB (DRAM-less)\n\t501e  PC SN735 / WD_BLACK SN750 SE NVMe SSD (DRAM-less)\n\t501f  WD PC SN735 NVMe SSD 512GB (DRAM-less)\n\t5025  WD Blue SN570 NVMe SSD 2TB\n\t5026  WD PC SN735 NVMe SSD 1TB (DRAM-less)\n\t5028  WD CH SN560 NVMe SSD\n\t5030  WD Black SN850X NVMe SSD\n\t5034  WD PC SN5000S M.2 2230 NVMe SSD (DRAM-less)\n\t5035  WD PC SN5000S M.2 2242 NVMe SSD (DRAM-less)\n\t5036  WD PC SN5000S M.2 2280 NVMe SSD (DRAM-less)\n\t5041  WD Blue SN580 NVMe SSD (DRAM-less)\n\t5042  WD Black SN770M NVMe SSD (DRAM-less)\n\t5044  WD PC SN7100S NVMe SSD (DRAM-less)\n\t5045  WD_BLACK SN7100 NVMe SSD (DRAM-less)\n\t5046  SanDisk Extreme NVMe SSD (DRAM-less)\n\t5049  SN8000S NVMe SSD\n\t504a  WD Blue SN5000 NVMe SSD (DRAM-less)\n\t5050  WD PC SN8050S / WD_BLACK SN8100 NVMe SSD\n15b8  ADDI-DATA GmbH\n\t1001  APCI1516 SP controller (16 digi outputs)\n\t1003  APCI1032 SP controller (32 digi inputs w/ opto coupler)\n\t1004  APCI2032 SP controller (32 digi outputs)\n\t1005  APCI2200 SP controller (8/16 digi outputs (relay))\n\t1006  APCI1564 SP controller (32 digi ins, 32 digi outs)\n\t100a  APCI1696 SP controller (96 TTL I/Os)\n\t3001  APCI3501 SP controller (analog output board)\n\t300f  APCI3600 Noise and vibration measurement board\n\t7001  APCI7420 2-port Serial Controller\n\t7002  APCI7300 Serial Controller\n15b9  Maestro Digital Communications\n15ba  Impacct Technology Corp\n15bb  Portwell Inc\n15bc  Agilent Technologies\n\t0100  HPFC-5600 Tachyon DX2+ FC\n\t0103  QX4 PCI Express quad 4-gigabit Fibre Channel controller\n\t0105  Celerity FC-44XS/FC-42XS/FC-41XS/FC-44ES/FC-42ES/FC-41ES\n\t\t117c 0022  Celerity FC-42XS Fibre Channel Adapter\n\t\t117c 0025  Celerity FC-44ES Fibre Channel Adapter\n\t\t117c 0026  Celerity FC-42ES Fibre Channel Adapter\n\t0500  Infiniium Memory Controller Interface\n\t0501  Infiniium Acquisition System Interface\n\t0507  Infiniium Acquisition System (80000 series)\n\t0508  Infiniium Acquisition Support\n\t0b01  82350B PCI GPIB\n\t1100  E8001-66442 PCI Express CIC\n\t1218  82351A PCI Express GPIB\n\t12d6  82350C PCI GPIB\n\t12d7  82351B PCI Express GPIB\n\t2922  64 Bit, 133MHz PCI-X Exerciser & Protocol Checker\n\t2928  64 Bit, 66MHz PCI Exerciser & Analyzer\n\t2929  64 Bit, 133MHz PCI-X Analyzer & Exerciser\n15bd  DFI Inc\n15be  Sola Electronics\n15bf  High Tech Computer Corp (HTC)\n15c0  BVM Ltd\n15c1  Quantel\n15c2  Newer Technology Inc\n15c3  Taiwan Mycomp Co Ltd\n15c4  EVSX Inc\n15c5  Procomp Informatics Ltd\n\t8010  1394b - 1394 Firewire 3-Port Host Adapter Card\n15c6  Technical University of Budapest\n15c7  Tateyama System Laboratory Co Ltd\n\t0349  Tateyama C-PCI PLC/NC card Rev.01A\n15c8  Penta Media Co Ltd\n15c9  Serome Technology Inc\n15ca  Bitboys OY\n15cb  AG Electronics Ltd\n15cc  Hotrail Inc\n15cd  Dreamtech Co Ltd\n15ce  Genrad Inc\n15cf  Hilscher Gesellschaft für Systemautomation mbH\n\t0000  CIFX PCI/PCIe\n15d1  Infineon Technologies AG\n15d2  FIC (First International Computer Inc)\n15d3  NDS Technologies Israel Ltd\n15d4  Iwill Corp\n15d5  Tatung Co\n15d6  Entridia Corp\n15d7  Rockwell-Collins Inc\n15d8  Cybernetics Technology Co Ltd\n15d9  Super Micro Computer Inc\n\t1b64  SCC-B8SB80-B1\n\t1b9d  Supermicro AOC-S3816L-L16IR\n\t1c6e  Supermicro AOC-SLG4-2H8M2\n15da  Cyberfirm Inc\n15db  Applied Computing Systems Inc\n15dc  Litronic Inc\n\t0001  Argus 300 PCI Cryptography Module\n15dd  Sigmatel Inc\n15de  Malleable Technologies Inc\n15df  Infinilink Corp\n15e0  Cacheflow Inc\n15e1  Voice Technologies Group Inc\n15e2  Quicknet Technologies Inc\n\t0500  PhoneJack-PCI\n15e3  Networth Technologies Inc\n15e4  VSN Systemen BV\n15e5  Valley technologies Inc\n15e6  Agere Inc\n15e7  Get Engineering Corp\n15e8  National Datacomm Corp\n\t0130  Wireless PCI Card\n\t0131  NCP130A2 Wireless NIC\n15e9  Pacific Digital Corp\n\t1841  ADMA-100 DiscStaQ ATA Controller\n15ea  Tokyo Denshi Sekei K.K.\n15eb  DResearch Digital Media Systems GmbH\n15ec  Beckhoff GmbH\n\t3101  FC3101 Profibus DP 1 Channel PCI\n\t5102  FC5102\n15ed  Macrolink Inc\n15ee  In Win Development Inc\n15ef  Intelligent Paradigm Inc\n15f0  B-Tree Systems Inc\n15f1  Times N Systems Inc\n15f2  Diagnostic Instruments Inc\n15f3  Digitmedia Corp\n15f4  Valuesoft\n15f5  Power Micro Research\n15f6  Extreme Packet Device Inc\n15f7  Banctec\n15f8  Koga Electronics Co\n15f9  Zenith Electronics Corp\n15fa  J.P. Axzam Corp\n15fb  Zilog Inc\n15fc  Techsan Electronics Co Ltd\n15fd  N-CUBED.NET\n15fe  Kinpo Electronics Inc\n15ff  Fastpoint Technologies Inc\n1600  Northrop Grumman - Canada Ltd\n1601  Tenta Technology\n1602  Prosys-tec Inc\n1603  Nokia Wireless Communications\n1604  Central System Research Co Ltd\n1605  Pairgain Technologies\n1606  Europop AG\n1607  Lava Semiconductor Manufacturing Inc\n1608  Automated Wagering International\n1609  Scimetric Instruments Inc\n1612  Telesynergy Research Inc.\n1618  Stone Ridge Technology\n\t0001  RDX 11\n\t0002  HFT-01\n\t0400  FarSync T2P (2 port X.21/V.35/V.24)\n\t0440  FarSync T4P (4 port X.21/V.35/V.24)\n\t0610  FarSync T1U (1 port X.21/V.35/V.24)\n\t0620  FarSync T2U (2 port X.21/V.35/V.24)\n\t0640  FarSync T4U (4 port X.21/V.35/V.24)\n\t1610  FarSync TE1 (T1,E1)\n\t2610  FarSync DSL-S1 (SHDSL)\n\t3640  FarSync T4E (4-port X.21/V.35/V.24)\n\t4620  FarSync T2Ue PCI Express (2-port X.21/V.35/V.24)\n\t4640  FarSync T4Ue PCI Express (4-port X.21/V.35/V.24)\n1619  FarSite Communications Ltd\n\t0400  FarSync T2P (2 port X.21/V.35/V.24)\n\t0440  FarSync T4P (4 port X.21/V.35/V.24)\n\t0610  FarSync T1U (1 port X.21/V.35/V.24)\n\t0620  FarSync T2U (2 port X.21/V.35/V.24)\n\t0640  FarSync T4U (4 port X.21/V.35/V.24)\n\t1610  FarSync TE1 (T1,E1)\n\t1612  FarSync TE1 PCI Express (T1,E1)\n\t2610  FarSync DSL-S1 (SHDSL)\n\t3640  FarSync T4E (4-port X.21/V.35/V.24)\n\t4620  FarSync T2Ue PCI Express (2-port X.21/V.35/V.24)\n\t4640  FarSync T4Ue PCI Express (4-port X.21/V.35/V.24)\n\t5621  FarSync T2Ee PCI Express (2 port X.21/V.35/V.24)\n\t5641  FarSync T4Ee PCI Express (4 port X.21/V.35/V.24)\n\t6620  FarSync T2U-PMC PCI Express (2 port X.21/V.35/V.24)\n161f  Rioworks\n1621  Lynx Studio Technology, Inc.\n\t0020  LynxTWO-A\n\t0021  LynxTWO-B\n\t0022  LynxTWO-C\n\t0023  Lynx L22\n\t0024  Lynx AES16\n\t0025  Lynx AES16-SRC\n\t0028  Lynx AES16e\n1626  TDK Semiconductor Corp.\n\t8410  RTL81xx Fast Ethernet\n1629  Kongsberg Spacetec AS\n\t1003  Format synchronizer v3.0\n\t1006  Format synchronizer, model 10500\n\t1007  Format synchronizer, model 21000\n\t2002  Fast Universal Data Output\n\t3100  IO31000 Frame Synchronizer and I/O\n\t3200  IO32000 Frame Synchronizer and I/O\n\t4002  High Rate Demodulator\n\t5001  High Rate FEC\n\t6001  High Rate Demodulator and FEC\n1631  Packard Bell B.V.\n1638  Standard Microsystems Corp [SMC]\n\t1100  SMC2602W EZConnect / Addtron AWA-100 / Eumitcom PCI WL11000\n163c  Smart Link Ltd.\n\t3052  SmartLink SmartPCI562 56K Modem\n\t5449  SmartPCI561 Modem\n1641  MKNet Corp.\n1642  Bitland(ShenZhen) Information Technology Co., Ltd.\n# nee Brocade Communications Systems, Inc.\n1657  Cavium QLogic\n\t0013  425/825/42B/82B 4Gbps/8Gbps PCIe dual port FC HBA\n\t\t103c 1742  82B 8Gbps dual port FC HBA\n\t\t103c 1744  42B 4Gbps dual port FC HBA\n\t\t1657 0014  425/825 4Gbps/8Gbps PCIe dual port FC HBA\n\t0014  1010/1020/1007/1741 10Gbps CNA\n\t\t1657 0014  1010/1020/1007/1741 10Gbps CNA - FCOE\n\t\t1657 0015  1010/1020/1007/1741 10Gbps CNA - LL\n\t0017  415/815/41B/81B 4Gbps/8Gbps PCIe single port FC HBA\n\t\t103c 1741  41B 4Gbps single port FC HBA\n\t\t103c 1743  81B 8Gbps single port FC HBA\n\t\t1657 0014  415/815 4Gbps/8Gbps single port PCIe FC HBA\n\t0021  804 8Gbps FC HBA for HP Bladesystem c-class\n\t0022  BR-1860 Fabric Adapter\n\t\t1657 0022  10Gbps CNA - FCOE\n\t\t1657 0023  10Gbps CNA - LL\n\t\t1657 0024  16Gbps FC HBA\n# Mezz card for IBM\n\t0023  1867/1869 16Gbps FC HBA\n# Same Device_ID used for 410 (1port) and 420 (2 port) HBAs.\n\t0646  400 4Gbps PCIe FC HBA\n165a  Epix Inc\n\tc100  PIXCI(R) CL1 Camera Link Video Capture Board [custom QL5232]\n\td200  PIXCI(R) D2X Digital Video Capture Board [custom QL5232]\n\td300  PIXCI(R) D3X Digital Video Capture Board [custom QL5232]\n\teb01  PIXCI(R) EB1 PCI Camera Link Video Capture Board\n# Gidel Reconfigurable Computing\n165c  Gidel Ltd.\n\t5361  PROCStarII60-1\n\t5362  PROCStarII60-2\n\t5364  PROCStarII60-4\n\t5435  ProcSparkII\n\t5661  ProcE60\n\t56e1  ProcE180\n\t5911  ProcStarIII110-1\n\t5912  ProcStarIII110-2\n\t5913  ProcStarIII110-3\n\t5914  ProcStarIII110-4\n\t5921  ProcStarIII150-1\n\t5922  ProcStarIII150-2\n\t5923  ProcStarIII150-3\n\t5924  ProcStarIII150-4\n\t5931  ProcStarIII260-1\n\t5932  ProcStarIII260-2\n\t5933  ProcStarIII260-3\n\t5934  ProcStarIII260-4\n\t5941  ProcStarIII340-1\n\t5942  ProcStarIII340-2\n\t5943  ProcStarIII340-3\n\t5944  ProcStarIII340-4\n\t5a01  ProceIII80\n\t5a11  ProceIII110\n\t5a21  ProceIII150\n\t5a31  ProceIII260\n\t5a41  ProceIII340\n\t5b51  ProceIV360\n\t5b61  ProceIV530\n\t5b71  ProceIV820\n\t5c01  ProcStarIV80-1\n\t5c02  ProcStarIV80-2\n\t5c03  ProcStarIV80-3\n\t5c04  ProcStarIV80-4\n\t5c11  ProcStarIV110-1\n\t5c12  ProcStarIV110-2\n\t5c13  ProcStarIV110-3\n\t5c14  ProcStarIV110-4\n\t5c51  ProcStarIV360-1\n\t5c52  ProcStarIV360-2\n\t5c53  ProcStarIV360-3\n\t5c54  ProcStarIV360-4\n\t5c61  ProcStarIV530-1\n\t5c62  ProcStarIV530-2\n\t5c63  ProcStarIV530-3\n\t5c64  ProcStarIV530-4\n\t5c71  ProcStarIV820-1\n\t5c72  ProcStarIV820-2\n\t5c73  ProcStarIV820-3\n\t5c74  ProcStarIV820-4\n\t5d01  Proc10480\n\t5d11  Proc104110\n\t5f01  ProceV_A3\n\t5f11  ProceV_A7\n\t5f21  ProceV_AB\n\t5f31  ProceV_D5\n\t5f41  ProceV_D8\n\t6732  Proc6M\n\t6832  Proc12M\n\t7101  Proc10a_27\n\t7111  Proc10a_48\n\t7121  Proc10a_66\n\t7141  Proc10a_115\n\t7181  Proc10a_27S\n\t7191  Proc10a_48S\n\t71a1  Proc10a_66S\n\t71b1  Proc10A\n\t72b1  HawkEye\n\t73b1  Proc10s\n165d  Hsing Tech. Enterprise Co., Ltd.\n165f  Linux Media Labs, LLC\n\t1020  LMLM4 MPEG-4 encoder\n1661  Worldspace Corp.\n1665  EDAX Inc\n# P/N 4035.006.19720\n\t1973  DPP-II FR2 Board\n# P/N 4035.065.20000\n\t2000  SG-IIP Board\n1668  Actiontec Electronics Inc\n\t0100  Mini-PCI bridge\n# Formerly SiByte, Inc.\n166d  Broadcom Corporation\n\t0001  SiByte BCM1125/1125H/1250 System-on-a-Chip PCI\n\t0002  SiByte BCM1125H/1250 System-on-a-Chip HyperTransport\n\t0012  SiByte BCM1280/BCM1480 System-on-a-Chip PCI-X\n\t0014  Sibyte BCM1280/BCM1480 System-on-a-Chip HyperTransport\n1677  B&R Industrial Automation GmbH\n\t104e  5LS172.6 B&R Dual CAN Interface Card\n\t12d7  5LS172.61 B&R Dual CAN Interface Card\n\t20ad  5ACPCI.MFIO-K01 Profibus DP / K-Feldbus / COM\n1678  NetEffect\n\t0100  NE020 10Gb Accelerated Ethernet Adapter (iWARP RNIC)\n1679  Tokyo Electron Device Ltd.\n\t3000  SD Standard host controller [Ellen]\n167b  ZyDAS Technology Corp.\n\t2102  ZyDAS ZD1202\n\t\t187e 3406  ZyAIR B-122 CardBus 11Mbs Wireless LAN Card\n\t\t187e 3407  ZyAIR B-320 802.11b Wireless PCI Adapter\n\t2116  ZD1212B Wireless Adapter\n167d  Samsung Electro-Mechanics Co., Ltd.\n\ta000  MagicLAN SWL-2210P 802.11b [Intersil ISL3874]\n167e  ONNTO Corp.\n1681  Hercules\n1682  XFX Pine Group Inc.\n\t5701  Radeon 5700 XT Thicc III Ultra\n\tc580  Radeon RX 580\n1688  CastleNet Technology Inc.\n\t1170  WLAN 802.11b card\n168a  Utimaco IS GmbH\n\t2086  CryptoServer Se-Series Hardware Security Module\n\tc040  CryptoServer CSe-Series Hardware Security Module\n\tc051  CryptoServer Se-Series Gen2 Hardware Security Module\n\tc070  u.trust Anchor Hardware Security Module cs7.2 Series\n\tc071  u.trust Anchor Hardware Security Module cs7.3 Series\n\tc072  u.trust Anchor Hardware Security Module cs7.3 Series Virtual Function\n# nee Atheros Communications, Inc.\n168c  Qualcomm Atheros\n\t0007  AR5210 Wireless Network Adapter [AR5000 802.11a]\n\t\t1737 0007  WPC54A Wireless PC Card\n\t\t1b47 0100  Harmony 8450CN Wireless CardBus Module\n\t\t1b47 0110  Skyline 4030 / Harmony 8450 802.11a Wireless CardBus Adapter\n\t\t8086 2501  PRO/Wireless 5000 LAN PCI Adapter Module\n\t0011  AR5211 Wireless Network Adapter [AR5001A 802.11a]\n\t0012  AR5211 Wireless Network Adapter [AR5001X 802.11ab]\n\t\t1186 3a03  AirPro DWL-A650 Wireless Cardbus Adapter (rev.B)\n\t\t1186 3a04  AirPro DWL-AB650 Multimode Wireless Cardbus Adapter\n\t\t1186 3a05  AirPro DWL-AB520 Multimode Wireless PCI Adapter\n\t\t126c 8031  2201 Mobile Adapter\n\t\t1385 4400  WAB501 802.11ab Wireless CardBus Card\n\t\t1b47 aa00  8460 802.11ab Wireless CardBus Adapter\n\t0013  AR5212/5213/2414 Wireless Network Adapter\n\t\t0308 3402  AG-100 802.11ag Wireless Cardbus Adapter\n\t\t0308 3405  G-102 v2 802.11g Wireless Cardbus Adapter\n\t\t0308 3408  G-170S 802.11g Wireless CardBus Adapter\n\t\t0e11 00e5  NC6000/NC8000 laptop\n\t\t10b7 6002  3CRWE154A72 802.11abg Cardbus Adapter\n\t\t1113 d301  Philips CPWNA100 Wireless CardBus adapter\n\t\t1113 ee23  SMCWPCIT-G 108Mbps Wireless PCI adapter\n\t\t1154 033b  Buffalo WLI-CB-AMG54\n\t\t1154 034e  Buffalo WLI-CB-AG108HP 802.11abg Cardbus Adapter\n\t\t1186 3202  DWL-G650 (Rev B3,B5) Wireless cardbus adapter\n\t\t1186 3203  AirPlus DWL-G520 Wireless PCI Adapter (rev. A)\n\t\t1186 3a07  AirXpert DWL-AG650 Wireless Cardbus Adapter\n\t\t1186 3a08  AirXpert DWL-AG520 Wireless PCI Adapter\n\t\t1186 3a12  D-Link AirPlus DWL-G650 Wireless Cardbus Adapter(rev.C)\n\t\t1186 3a13  AirPlus DWL-G520 Wireless PCI Adapter (rev. B)\n\t\t1186 3a14  AirPremier AG DWL-AG530 Wireless PCI Adapter (rev.A)\n\t\t1186 3a17  D-Link AirPremier DWL-G680 Wireless Cardbus Adapter\n\t\t1186 3a18  D-Link AirPremier DWL-G550 Wireless PCI Adapter\n\t\t1186 3a1a  WNA-2330 802.11bg Wireless CardBus Adapter\n\t\t1186 3a63  D-Link AirPremier DWL-AG660 Wireless Cardbus Adapter\n\t\t1186 3a93  Conceptronic C54I Wireless 801.11g PCI card\n\t\t1186 3a94  Conceptronic C54C 802.11g Wireless Cardbus Adapter\n\t\t1186 3ab0  Allnet ALL0281 Wireless PCI Card\n\t\t1385 4600  WAG511 802.11a/b/g Dual Band Wireless PC Card\n\t\t1385 4610  WAG511 802.11a/b/g Dual Band Wireless PC Card\n\t\t1385 4900  WG311v1 802.11g Wireless PCI Adapter\n\t\t1385 4a00  WAG311 802.11a/g Wireless PCI Adapter\n\t\t1385 4b00  WG511T 108 Mbps Wireless PC Card (rev.A/B)\n\t\t1385 4d00  WG311T 108 Mbps Wireless PCI Adapter (rev.A2)\n\t\t1385 4f00  WG511U Double 108 Mbps Wireless PC Card\n\t\t1385 5a00  WG311T (rev.A3 v1h3/v1h4) 108 Mbps Wireless PCI Adapter [AR2412]\n\t\t1385 5b00  WG511T 108 Mbps Wireless PC Card (rev.C)\n\t\t1385 5d00  WPN511 RangeMax Wireless PC Card\n\t\t1458 e911  GN-WIAG02\n\t\t1468 0403  U10H014 802.11g Cardbus Adapter\n\t\t1468 0408  ThinkPad 11b/g Wireless LAN Mini PCI Adapter\n\t\t14b7 0a10  8480-WD 802.11abg Cardbus Adapter\n\t\t14b7 0a60  8482-WD ORiNOCO 11a/b/g Wireless PCI Adapter\n\t\t14b7 aa30  8800-FC 802.11bg Cardbus Adapter\n\t\t14b7 aa40  8470-WD 802.11bg Cardbus Adapter\n\t\t14b9 cb21  CB21 802.11a/b/g Cardbus Adapter\n\t\t1668 1026  IBM HighRate 11 a/b/g Wireless CardBus Adapter\n\t\t168c 0013  AirPlus XtremeG DWL-G650 Wireless PCMCIA Adapter\n\t\t168c 1025  DWL-G650B2 Wireless CardBus Adapter\n\t\t168c 1027  Engenius NL-3054CB ARIES b/g CardBus Adapter\n\t\t168c 1042  Ubiquiti Networks SuperRange a/b/g Cardbus Adapter\n\t\t168c 1051  EZ Connect g 802.11g 108Mbps Wireless PCI Adapter\n\t\t168c 2026  Netgate 5354MP ARIES a(108Mb turbo)/b/g MiniPCI Adapter\n\t\t168c 2027  D-Link AirPlus DWL-G520 Wireless PCI Adapter (rev. A)\n\t\t168c 2041  Engenius 5354MP Plus ARIES2 b/g MiniPCI Adapter\n\t\t168c 2042  Engenius 5354MP Plus ARIES2 a/b/g MiniPCI Adapter\n\t\t168c 2051  TRENDnet TEW-443PI Wireless PCI Adapter\n\t\t16a5 160a  BWP712 802.11bg Wireless CardBus Adapter\n\t\t16ab 7302  Trust Speedshare Turbo Pro Wireless PCI Adapter\n\t\t1737 0017  WPC55AG\n\t\t1737 0026  WMP55AG v1.1\n\t\t1737 0035  WPC55AG v1.2 802.11abg Cardbus Adapter\n\t\t1737 0036  WMP55AG v1.2 802.11abg PCI Adapter\n\t\t1799 3000  F6D3000 Dual-Band Wireless A+G Desktop Card\n\t\t1799 3010  F6D3010 Dual-Band Wireless A+G Notebook Card\n\t\t17cf 0042  Z-COMAX Highpower XG-622H (400mw) 802.11b/g mini-PCI Adapter\n\t\t185f 1012  CM9 Wireless a/b/g MiniPCI Adapter\n\t\t185f 2012  Wistron NeWeb WLAN a+b+g model CB9\n\t\ta727 6801  3CRXJK10075 OfficeConnect Wireless 108Mbps 11g XJACK PC Card\n\t001a  AR2413/AR2414 Wireless Network Adapter [AR5005G(S) 802.11bg]\n\t\t1052 168c  Sweex Wireless Lan PC Card 54Mbps\n\t\t1113 ee20  SMC Wireless CardBus Adapter 802.11g (SMCWCB-G EU)\n\t\t1113 ee24  SMC Wireless PCI Card WPCI-G\n\t\t1186 3a15  AirPlus G DWL-G630 Wireless Cardbus Adapter (rev.D1)\n\t\t1186 3a16  AirPlus G DWL-G510 Wireless PCI Adapter(rev.B)\n\t\t1186 3a1c  WNA-1330 Notebook Adapter\n\t\t1186 3a1d  WDA-1320 Desktop Adapter\n\t\t1186 3a23  AirPlus G DWL-G520+A Wireless PCI Adapter\n\t\t1186 3a24  AirPlus G DWL-G650+A Wireless Cardbus Adapter\n\t\t1186 3b08  AirPlus G DWL-G630 Wireless Cardbus Adapter (rev.C1)\n\t\t168c 001a  Belkin FD7000\n\t\t168c 1052  TP-Link TL-WN510G Wireless CardBus Adapter\n\t\t168c 2052  Compex Wireless 802.11 b/g  MiniPCI Adapter, Rev A1 [WLM54G]\n\t\t16ec 0122  Wireless PCI Adapter Model 5418\n\t\t1737 0053  WPC54G v7 802.11g Wireless-G Notebook Adapter\n\t\t1799 700c  F5D7000 v5000 Wireless G Desktop Card\n\t\t1799 701d  F5D7010 v5000 Wireless G Notebook Card\n\t\t17f9 0008  DX-WGNBC 802.11bg Wireless CardBus Adapter\n\t\t17f9 0018  DX-WGDTC 802.11bg Wireless PCI Adapter\n\t001b  AR5413/AR5414 Wireless Network Adapter [AR5006X(S) 802.11abg]\n# Atheros AR5414 32-bit mini-PCI type IIIB\n\t\t0777 1107  UB5 802.11a Wireless Mini PCI Adapter\n\t\t0777 3002  XR2 802.11g Wireless Mini PCI Adapter\n\t\t0777 3005  XR5 802.11a Wireless Mini PCI Adapter\n\t\t0777 3009  XR9 900MHz Wireless Mini PCI Adapter\n\t\t1154 034e  WLI-CB-AG108HP 802.11abg Wireless CardBus Adapter\n\t\t1186 3a19  D-Link AirPremier AG DWL-AG660 Wireless Cardbus Adapter\n\t\t1186 3a22  AirPremier AG DWL-AG530 Wireless PCI Adapter (rev.B)\n\t\t11ad 5001  WN5301A 802.11bg Wireless PCI Adapter\n\t\t1458 e901  GN-WI01HT Wireless a/b/g MiniPCI Adapter\n\t\t168c 001b  Wireless LAN PCI LiteOn\n\t\t168c 1062  IPN-W100CB 802.11abg Wireless CardBus Adapter\n\t\t168c 2062  EnGenius EMP-8602 (400mw) or Compex WLM54AG (SuperAG)\n\t\t168c 2063  EnGenius EMP-8602 (400mw) or Compex WLM54AG\n\t\t17f9 000b  WL-711A 802.11abg Wireless CardBus Adapter\n\t\t17f9 000c  WPIA-112AG 802.11abg Wireless PCI Adapter\n\t\t17f9 000d  PC-686X 802.11abg Wireless Mini PCI Adapter\n\t\t185f 1600  DCMA-82 High Power WLAN 802.11a/b/g mini-PCI Module (Super A/G, eXtended Range, 400mW)\n\t\t1948 3aba  RBTBJ-AW 802.11abg Wireless Cardbus Adapter\n\t\ta727 6804  Wireless 11a/b/g PC Card with XJACK(r) Antenna\n\t001c  AR242x / AR542x Wireless Network Adapter (PCI-Express)\n\t\t0777 3006  SRX 802.11abg Wireless ExpressCard Adapter\n\t\t103c 137a  AR5BXB63 (Foxconn) 802.11bg Mini PCIe NIC\n\t\t106b 0086  AirPort Extreme\n\t\t144f 7106  WLL3140 (Toshiba PA3501U-1MPC) 802.11bg Wireless Mini PCIe Card\n\t\t144f 7128  WLL3141 (Toshiba PA3613U-1MPC) 802.11bg Wireless Mini PCIe Card\n\t\t1468 0428  AR5BXB63 802.11bg NIC\n\t\t1468 042a  AR5007EG 802.11bg NIC\n\t\t147b 1033  AirPace Wi-Fi\n\t\t168c 001c  AR242x 802.11abg NIC (PCI Express)\n\t\t168c 3061  AR5006EGS 802.11bg NIC (2.4GHz, PCI Express)\n\t\t168c 3062  AR5006EXS 802.11abg NIC (2.4/5.0GHz, PCI Express)\n\t\t168c 3063  AR5006EX 802.11abg NIC (2.4/5.0GHz, PCI Express)\n\t\t168c 3065  AR5006EG 802.11bg NIC (2.4GHz, PCI Express)\n\t\t168c 3067  AR242x 802.11abg Wireless PCI Express Adapter (rev 01)\n\t\t1a3b 1026  AW-GE780 802.11bg Wireless Mini PCIe Card\n\t001d  AR2417 Wireless Network Adapter [AR5007G 802.11bg]\n\t\t1799 720b  F5D7000 v8000 Wireless G Desktop Card\n\t\t1799 721b  F5D7010 v8000 Wireless G Notebook Card\n# the name AR5005VL is used for some AR5513 based designs\n\t0020  AR5513 802.11abg Wireless NIC\n\t\t0308 3407  M-102 802.11g Wireless Cardbus Adapter\n\t\t1186 3a67  DWL-G650M Super G MIMO Wireless Notebook Adapter\n\t\t1186 3a68  DWL-G520M Wireless 108G MIMO Desktop Adapter\n\t\t187e 340e  M-302 802.11g Wireless PCI Adapter\n\t\t1976 2003  TEW-601PC 802.11g Wireless CardBus Adapter\n\t0023  AR5416 Wireless Network Adapter [AR5008 802.11(a)bgn]\n\t\t0308 340b  NWD-170N 802.11bgn Wireless CardBus Adapter\n\t\t1154 0365  Buffalo WLP-CB-AG300 802.11abgn Cardbus Adapter\n\t\t1154 0367  WLI-CB-AG301N 802.11abgn Wireless CardBus Adapter\n\t\t1186 3a6a  DWA-642 802.11n RangeBooster N CardBus Adapter\n\t\t1186 3a6b  DWA-547 802.11n RangeBooster N 650 DeskTop Adapter\n\t\t1186 3a6d  DWA-552 802.11n Xtreme N Desktop Adapter (rev A1)\n\t\t1186 3a76  DWA-645 802.11n RangeBooster N 650 Notebook Adapter (rev A1)\n\t\t1737 0059  WPC300N v2 Wireless-N Notebook Adapter\n\t\t1737 0069  WPC100 v1 802.11n RangePlus Wireless Notebook Adapter\n\t\t1737 0072  WMP110 v1 802.11n RangePlus Wireless PCI Adapter\n\t\t1799 8011  F5D8011 v1 802.11n N1 Wireless Notebook Card\n\t\t187e 3411  NWD-370N 802.11n Wireless PCI Adapter\n\t\t1976 2008  TEW-621PC 802.11bgn Wireless CardBus Adapter\n\t0024  AR5418 Wireless Network Adapter [AR5008E 802.11(a)bgn] (PCI-Express)\n\t\t106b 0087  AirPort Extreme\n\t\t1186 3a70  DWA-556 Xtreme N PCI Express Desktop Adapter\n\t0027  AR9160 Wireless Network Adapter [AR9001 802.11(a)bgn]\n\t\t0777 4082  SR71-A 802.11abgn Wireless Mini PCI Adapter\n\t0029  AR922X Wireless Network Adapter\n\t\t0777 4005  SR71-15 802.11an Mini PCI Adapter\n\t\t1186 3a7a  DWA-552 802.11n Xtreme N Desktop Adapter (rev A2)\n\t\t1186 3a7d  DWA-552 802.11n Xtreme N Desktop Adapter (rev A3)\n\t\t168c 0029  AR922X Wireless Network Adapter\n\t\t168c 2096  Compex WLM200NX / Wistron DNMA-92\n\t002a  AR928X Wireless Network Adapter (PCI-Express)\n\t\t0777 4f05  SR71-X 802.11abgn Wireless ExpressCard Adapter [AR9280]\n\t\t103c 3041  AR5BHB92-H 802.11abgn Wireless Half-size Mini PCIe Card [AR9280]\n\t\t103c 3042  AzureWave AW-NE773 802.11abgn Wireless Half-size Mini PCIe Card [AR9280]\n\t\t105b e006  T77H053.00 802.11bgn Wireless Mini PCIe Card [AR9281]\n\t\t105b e01f  T77H047.31 802.11bgn Wireless Half-size Mini PCIe Card [AR9283]\n\t\t106b 008f  AirPort Extreme\n\t\t11ad 6600  WN6600A 802.11bgn Wireless Mini PCIe Card [AR9281]\n\t\t144f 7141  WLL6080 802.11bgn Wireless Mini PCIe Card [AR9281]\n\t\t168c 0203  DW1525 802.11abgn WLAN PCIe Card [AR9280]\n\t\t1a32 0303  EM303 802.11bgn Wireless Mini PCIe Card [AR9281]\n\t\t1a32 0306  EM306 802.11bgn Wireless Half-size Mini PCIe Card [AR9283]\n\t\t1a3b 1067  AW-NE771 802.11bgn Wireless Mini PCIe Card [AR9281]\n\t\t1a3b 1071  AW-NE772 802.11abgn Wireless Mini PCIe Card [AR9280]\n\t\t1a3b 1081  AW-NE773 802.11abgn Wireless Half-size Mini PCIe Card [AR9280]\n\t002b  AR9285 Wireless Network Adapter (PCI-Express)\n\t\t1028 0204  Wireless 1502 802.11bgn Half-size Mini PCIe Card\n\t\t1028 0205  Wireless 1702 802.11bgn Half-size Mini PCIe Card [AR9002WB-1NGCD]\n\t\t103c 303f  U98Z062.10 802.11bgn Wireless Half-size Mini PCIe Card\n\t\t103c 3040  U98Z062.12 802.11bgn Wireless Half-size Mini PCIe Card\n\t\t105b e017  T77H126.00 802.11bgn Wireless Half-size Mini PCIe Card\n\t\t105b e023  T77H121.04 802.11bgn Wireless Half-size Mini PCIe Card\n\t\t105b e025  T77H121.05 802.11bgn Wireless Half-size Mini PCIe Card\n\t\t1113 e811  WN7811A (Toshiba PA3722U-1MPC) 802.11bgn Wireless Half-size Mini PCIe Card\n\t\t185f 30af  DNXA-95 802.11bgn Wireless Half-size Mini PCIe Card\n\t\t1931 0023  Option GTM67x PCIe WiFi Adapter\n\t\t1a3b 1089  AW-NE785 / AW-NE785H 802.11bgn Wireless Full or Half-size Mini PCIe Card\n\t\t1a3b 2c37  AW-NB037H 802.11bgn Wireless Half-size Mini PCIe Card [AR9002WB-1NGCD]\n\t\t1b9a 0401  XW204E 802.11bgn Wireless Half-size Mini PCIe Card\n\t\t1b9a 0c03  WB214E 802.11bgn Wireless Half-size Mini PCIe Card [AR9002WB-1NGCD]\n\t002c  AR2427 802.11bg Wireless Network Adapter (PCI-Express)\n\t002d  AR9227 Wireless Network Adapter\n\t002e  AR9287 Wireless Network Adapter (PCI-Express)\n\t\t105b e034  T77H167.00\n\t0030  AR93xx Wireless Network Adapter\n\t\t103c 1627  AR9380/HB112 802.11abgn 3x3 Wi-Fi Adapter\n\t\t106b 009a  AirPort Extreme\n\t\t1186 3a7e  DWA-566 Wireless N 300 Dual Band PCIe Desktop Adapter\n\t\t1a56 2000  Killer Wireless-N 1102 Half-size Mini PCIe Card [AR9382]\n\t\t1a56 2001  Killer Wireless-N 1103 Half-size Mini PCIe Card [AR9380]\n\t0032  AR9485 Wireless Network Adapter\n\t\t1028 0208  Wireless 1506 WLAN Half Mini-Card\n\t\t103c 1838  AR9485/HB125 802.11bgn 1x1 Wi-Fi Adapter\n\t\t105b e044  Unex DHXA-225\n\t\t144d 410e  AR9485WB-EG 802.11b/g/n mini-PCIe card on a series 3 laptop\n\t\t1a3b 1186  AW-NE186H\n\t0033  AR958x 802.11abgn Wireless Network Adapter\n\t\t168c a120  AR9582 802.11a/n WLAN Mini-PCIe Adapter\n\t0034  AR9462 Wireless Network Adapter\n\t\t1028 020b  Wireless 1601 802.11abgn Adapter\n\t\t1028 0300  Wireless 1802 802.11abgn Adapter\n\t\t1a56 2003  Killer Wireless-N 1202 Half-size Mini PCIe Card\n\t0036  QCA9565 / AR9565 Wireless Network Adapter\n\t\t1028 020e  Vostro 3470\n\t0037  AR9485 Wireless Network Adapter\n# Also used as Gigabyte GC-WB150 on a PCIe-to-mini-PCIe converter\n\t\t1a3b 2100  AW-NB100H 802.11n Wireless Mini PCIe Card\n\t003c  QCA986x/988x 802.11ac Wireless Network Adapter\n\t003e  QCA6174 802.11ac Wireless Network Adapter\n\t\t1a56 143a  Killer 1435 Wireless-AC\n\t\t1a56 1525  Killer N1525 Wireless-AC\n\t\t1a56 1535  Killer Wireless-n/a/ac 1535 Wireless Network Adapter\n\t0040  QCA9980/9990 802.11ac Wireless Network Adapter\n\t0041  QCA6164 802.11ac Wireless Network Adapter\n\t0042  QCA9377 802.11ac Wireless Network Adapter\n\t\t11ad 08a6  Qualcomm Atheros QCA9377 802.11ac Wireless Network Adapter\n# compatible with Lenovo's BIOS lock\n\t\t17aa 0901  Qualcomm Atheros QCA9377 Wireless Network Adapter\n\t0046  QCA9984 802.11ac Wave 2 Wireless Network Adapter\n\t0050  QCA9887 802.11ac Wireless Network Adapter\n\t0207  AR5210 Wireless Network Adapter [AR5000 802.11a]\n\t1014  AR5212 802.11abg NIC\n\t\t1014 058a  ThinkPad 11a/b/g Wireless LAN Mini Express Adapter (AR5BXB6)\n\t9013  AR5002X Wireless Network Adapter\n\tff19  AR5006X Wireless Network Adapter\n\tff1b  AR2425 Wireless Network Adapter [AR5007EG 802.11bg]\n\tff1c  AR5008 Wireless Network Adapter\n\tff1d  AR922x Wireless Network Adapter\n# Found in \"AVM Fritz!Box FON WLAN 7270v3\"\n\t\t168c ee1c  AR9220-AC1A [AVM Fritz!Box FON WLAN 7270 v3]\n1695  EPoX Computer Co., Ltd.\n169c  Netcell Corporation\n\t0044  Revolution Storage Processing Card\n# The right ID is 196d, but they got it nibble-swapped in 2202.\n169d  Club-3D VB (Wrong ID)\n16a5  Tekram Technology Co.,Ltd.\n16ab  Global Sun Technology Inc\n\t1100  GL24110P\n\t1101  PLX9052 PCMCIA-to-PCI Wireless LAN\n\t1102  PCMCIA-to-PCI Wireless Network Bridge\n\t8501  WL-8305 Wireless LAN PCI Adapter\n16ae  SafeNet Inc\n\t0001  SafeXcel 1140\n\t000a  SafeXcel 1841\n\t1141  SafeXcel 1141\n# misused vendor ID 0001\n\t\t0001 0001  SafeXcel 1141 v. 1.1\n\t1841  SafeXcel 1842\n16af  SparkLAN Communications, Inc.\n16b4  Aspex Semiconductor Ltd\n16b8  Sonnet Technologies, Inc.\n16be  Creatix Polymedia GmbH\n16c3  Synopsys, Inc.\n\tabcd  DWC_usb3 / PCIe bridge\n\tabce  DWC_usb3\n\tabcf  DWC_usb31\n\tedda  EPMockUp\n16c6  Micrel-Kendin\n\t8695  Centaur KS8695 ARM processor\n\t8842  KSZ8842-PMQL 2-Port Ethernet Switch\n16c8  Octasic Inc.\n16c9  EONIC B.V. The Netherlands\n16ca  CENATEK Inc\n\t0001  Rocket Drive DL\n# nee Innocore Gaming Ltd., nee Densitron Gaming Ltd., a division of Densitron Technologies\n16cd  Advantech Co. Ltd\n\t0101  DirectPCI SRAM for DPX-11x series\n\t0102  DirectPCI SRAM for DPX-S/C/E-series\n\t0103  DirectPCI ROM for DPX-11x series\n\t0104  DirectPCI ROM for DPX-S/C/E-series\n\t0105  DirectPCI I/O for DPX-114/DPX-115\n\t0106  DirectPCI I/O for DPX-116\n\t0107  DirectPCI I/O for DPX-116U\n\t0108  DirectPCI I/O for DPX-117\n\t0109  DirectPCI I/O for DPX-112\n\t010a  DirectPCI I/O for DPX-C/E-series\n\t010b  DirectPCI I/O for DPX-S series\n16ce  Roland Corp.\n16d5  Acromag, Inc.\n\t0504  PMC-DX504 Reconfigurable FPGA with LVDS I/O\n\t0520  PMC520 Serial Communication, 232 Octal\n\t0521  PMC521 Serial Communication, 422/485 Octal\n\t1020  PMC-AX1020 Reconfigurable FPGA with A/D & D/A\n\t1065  PMC-AX1065 Reconfigurable FPGA with A/D & D/A\n\t2004  PMC-DX2004 Reconfigurable FPGA with LVDS I/O\n\t2020  PMC-AX2020 Reconfigurable FPGA with A/D & D/A\n\t2065  PMC-AX2065 Reconfigurable FPGA with A/D & D/A\n\t3020  PMC-AX3020 Reconfigurable FPGA with A/D & D/A\n\t3065  PMC-AX3065 Reconfigurable FPGA with A/D & D/A\n\t4243  PMC424, APC424, AcPC424 Digital I/O and Counter Timer Module\n\t4248  PMC464, APC464, AcPC464 Digital I/O and Counter Timer Module\n\t424b  PMC-DX2002 Reconfigurable FPGA with Differential I/O\n\t4253  PMC-DX503 Reconfigurable FPGA with TTL and Differential I/O\n\t4312  PMC-CX1002 Reconfigurable Conduction-Cooled FPGA Virtex-II with Differential I/O\n\t4313  PMC-CX1003 Reconfigurable Conduction-Cooled FPGA Virtex-II with CMOS and Differential I/O\n\t4322  PMC-CX2002 Reconfigurable Conduction-Cooled FPGA Virtex-II with Differential I/O\n\t4323  PMC-CX2003 Reconfigurable Conduction-Cooled FPGA Virtex-II with CMOS and Differential I/O\n\t4350  PMC-DX501 Reconfigurable Digital I/O Module\n\t4353  PMC-DX2003 Reconfigurable FPGA with TTL and Differential I/O\n\t4357  PMC-DX502 Reconfigurable Differential I/O Module\n\t4457  PMC730, APC730, AcPC730 Multifunction Module\n\t4471  XMC730 Multi-function I/O module with front I/O\n\t4473  XMC730CC Multi-function I/O module with rear I/O Conduction-cooled\n\t464d  PMC408 32-Channel Digital Input/Output Module\n\t4850  PMC220-16 12-Bit Analog Output Module\n\t4a42  PMC483, APC483, AcPC483 Counter Timer Module\n\t4a50  PMC484, APC484, AcPC484 Counter Timer Module\n\t4a56  PMC230 16-Bit Analog Output Module\n\t4b47  PMC330, APC330, AcPC330 Analog Input Module, 16-bit A/D\n\t4c40  PMC-LX40 Reconfigurable Virtex-4 FPGA with plug-in I/O\n\t4c60  PMC-LX60 Reconfigurable Virtex-4 FPGA with plug-in I/O\n\t4d4d  PMC341, APC341, AcPC341 Analog Input Module, Simultaneous Sample & Hold\n\t4d4e  PMC482, APC482, AcPC482 Counter Timer Board\n\t524d  PMC-DX2001 Reconfigurable FPGA with TTL I/O\n\t5335  PMC-SX35 Reconfigurable Virtex-4 FPGA with plug-in I/O\n\t5456  PMC470 48-Channel Digital Input/Output Module\n\t5601  PMC-VLX85 Reconfigurable Virtex-5 FPGA with plug-in I/O\n\t5602  PMC-VLX110 Reconfigurable Virtex-5 FPGA with plug-in I/O\n\t5603  PMC-VSX95 Reconfigurable Virtex-5 FPGA with plug-in I/O\n\t5604  PMC-VLX155 Reconfigurable Virtex-5 FPGA with plug-in I/O\n\t5605  PMC-VFX70 Reconfigurable Virtex-5 FPGA with plug-in I/O\n\t5606  PMC-VLX155-1M Reconfigurable Virtex-5 FPGA with plug-in I/O\n\t5701  PMC-SLX150: Reconfigurable Spartan-6 FPGA with plug-in I/O\n\t5702  PMC-SLX150-1M: Reconfigurable Spartan-6 FPGA with plug-in I/O\n\t5801  XMC-VLX85 Reconfigurable Virtex-5 FPGA with plug-in I/O\n\t5802  XMC-VLX110 Reconfigurable Virtex-5 FPGA with plug-in I/O\n\t5803  XMC-VSX95 Reconfigurable Virtex-5 FPGA with plug-in I/O\n\t5804  XMC-VLX155 Reconfigurable Virtex-5 FPGA with plug-in I/O\n\t5807  XMC-SLX150: Reconfigurable Spartan-6 FPGA with plug-in I/O\n\t5808  XMC-SLX150-1M: Reconfigurable Spartan-6 FPGA with plug-in I/O\n\t5901  APCe8650 PCI Express IndustryPack Carrier Card\n\t6301  XMC Module with user-configurable Virtex-6 FPGA, 240k logic cells, SFP front I/O\n\t6302  XMC Module with user-configurable Virtex-6 FPGA, 365k logic cells, SFP front I/O\n\t6303  XMC Module with user-configurable Virtex-6 FPGA, 240k logic cells, no front I/O\n\t6304  XMC Module with user-configurable Virtex-6 FPGA, 365k logic cells, no front I/O\n\t7000  XMC-7K325F: User-configurable Kintex-7 FPGA, 325k logic cells plus SFP front I/O\n\t7001  XMC-7K410F: User-configurable Kintex-7 FPGA, 410k logic cells plus SFP front I/O\n\t7002  XMC-7K325AX: User-Configurable Kintex-7 FPGA, 325k logic cells with AXM Plug-In I/O\n\t7003  XMC-7K410AX: User-Configurable Kintex-7 FPGA, 410k logic cells with AXM Plug-In I/O\n\t7004  XMC-7K325CC: User-Configurable Kintex-7 FPGA, 325k logic cells, conduction-cooled\n\t7005  XMC-7K410CC: User-Configurable Kintex-7 FPGA, 410k logic cells, conduction-cooled\n\t7006  XMC-7A200: User-Configurable Artix-7 FPGA, 200k logic cells with Plug-In I/O\n\t7007  XMC-7A200CC: User-Configurable Conduction-Cooled Artix-7 FPGA, with 200k logic cells\n\t7011  AP440-1: 32-Channel Isolated Digital Input Module\n\t7012  AP440-2: 32-Channel Isolated Digital Input Module\n\t7013  AP440-3: 32-Channel Isolated Digital Input Module\n\t7014  AP445: 32-Channel Isolated Digital Output Module\n\t7015  AP471 48-Channel TTL Level Digital Input/Output Module\n\t7016  AP470 48-Channel TTL Level Digital Input/Output Module\n\t7017  AP323 16-bit, 20 or 40 Channel Analog Input Module\n\t7018  AP408: 32-Channel Digital I/O Module\n\t7019  AP341 14-bit, 16-Channel Simultaneous Conversion Analog Input Module\n\t701a  AP220-16 12-Bit, 16-Channel Analog Output Module\n\t701b  AP231-16 16-Bit, 16-Channel Analog Output Module\n\t701c  AP225 12-Bit, 16-Channel Analog Output Module with Waveform Memory\n\t701d  AP235 16-Bit, 16-Channel Analog Output Module with Waveform Memory\n\t7021  APA7-201 Reconfigurable Artix-7 FPGA module 48 TTL channels\n\t7022  APA7-202 Reconfigurable Artix-7 FPGA module 24 RS485 channels\n\t7023  APA7-203 Reconfigurable Artix-7 FPGA module 24 TTL & 12 RS485 channels\n\t7024  APA7-204 Reconfigurable Artix-7 FPGA module 24 LVDS channels\n\t7027  AP418 16-Channel High Voltage Digital Input/Output Module\n\t7029  AP342 14-bit, 12-Channel Isolated Simultaneous Conversion Analog Input Module\n\t702a  AP226 12-Bit, 8-Channel Isolated Analog Output Module\n\t702b  AP236 16-Bit, 8-Channel Isolated Analog Output Module\n\t702c  AP560A Module 4 Independent isolated CAN bus channels\n\t7031  AP441-1: 32-Channel Isolated Digital Input Module\n\t7032  AP441-2: 32-Channel Isolated Digital Input Module\n\t7033  AP441-3: 32-Channel Isolated Digital Input Module\n\t7042  AP482 Counter Timer Module with TTL Level Input/Output\n\t7043  AP483 Counter Timer Module with TTL Level and RS422 Input/Output\n\t7044  AP484 Counter Timer Module with RS422 Input/Output\n\t7051  APA7-501 Reconfigurable Artix-7 52,160 Cell FPGA module 48 TTL channels\n\t7052  APA7-502 Reconfigurable Artix-7 52,160 Cell FPGA module 24 RS485 channels\n\t7053  APA7-503 Reconfigurable Artix-7 52,160 Cell FPGA module 24 TTL & 12 RS485 channels\n\t7054  APA7-504 Reconfigurable Artix-7 52,160 Cell FPGA module 24 LVDS channels\n\t7072  AP731 Multi-function I/O Module with 12-bit DAC\n\t7073  AP730 Multi-function I/O Module 16 Digital I/O 8 Differential Analog In 4 Analog Out\n\t7731  APZU-301 Zynq Ultrascale+ Module 28 TTL channels\n\t7733  APZU-303 Zynq Ultrascale+ Module 20 TTL & 3 RS485/422 channels\n\t7734  APZU-304 Zynq Ultrascale+ Module 14 LVDS channels\n16da  Advantech Co., Ltd.\n\t0011  INES GPIB-PCI\n16df  PIKA Technologies Inc.\n# nee Geotest-MTS\n16e2  Marvin Test Solutions\n\t1034  GX1034 Certification and Verification Module PXI Board\n\t1100  GX1100 Arbitrary Waveform and Function Generator PXI Board\n\t1120  GX1120 Arbitrary Waveform and Function Generator PXI Board\n\t1164  GX1164 Multi-Channel Programmable Resistor PXI Board\n\t1632  GX1632e 32-Channel Arbitrary Analog Output PXIe Board\n\t1648  GX1648 64-Channel Analog Output PXI Board\n\t1649  GX1649 64-Channel Arbitrary Analog Output PXI Board\n\t1838  GX1838 Precision DC Source PXI Board\n\t2065  GX2065 Digital Multimeter PXI Board\n\t2200  GTX2200 High Resolution Universal Time Interval Counter PXI Board\n\t2201  GC2200 High Resolution Universal Time Interval Counter PCI Board\n\t3104  GX3104 4-Channel 20V, 250mA Per Channel SMU PXI Board\n\t3108  GX3108 4-Channel Source Measure Unit PXI Board\n\t3116  GX3116e 16-Channel DUT Power Supply PXIe Board\n\t3348  GX3348 Multi-Channel DC Source and Switch Matrix Board\n\t3500  GX3500 Digital I/O FLEX FPGA Board\n\t3700  GX3700e Digital I/O FLEX FPGA PXIe Board\n\t3701  GX3700 Digital I/O FLEX FPGA PXI Board\n\t3800  GX3800e Digital I/O FLEX FPGA PXIe Board\n\t4943  GX4943 HellFire/Longbow Serial Communication Board\n\t5050  GC5050 Dynamic Digital I/O with Algorithmic Sequencer PCI Board\n\t5055  GX5055 Dynamic Digital I/O with Pin Electronics PXI Board\n\t5083  GX5083 Dynamic Digital I/O with Algorithmic Sequencer PXI Board\n\t5105  GX5105 High-Speed Digital I/O Timing (Master) Module PXI Board\n\t5106  GX5106 High-Speed Digital I/O Cycle Timing (Master) Module PXI Board\n\t5151  GX5150/1 High Speed Digital I/O (50/100MHz) PXI Board\n\t5152  GX5152/3 DSR High Speed Digital Stimulus/Response PXI Board\n\t5250  GX5250 Digital I/O Streaming PXI Board\n\t5280  GX5280 High-Speed Digital I/O PXI Board\n\t5290  GX5290 High-Speed Dynamic Digital I/O PXI Board\n\t5294  GX5294 High-Speed Digital I/O PXI Board\n\t5295  GX5295 Digital I/O with Pin Electronics and PMU PXI Board\n\t5296  GX5296 Digital I/O with Pin Electronics and PMU PXI Board\n\t5550  GX5050 Dynamic Digital I/O with Algorithmic Sequencer PXI Board\n\t5641  GX5641/2 Bi-directional Differential-TTL I/O PXI Board\n\t5731  GX5731 Digital I/O with 128 TTL Channels and 3x32 Customizable Channels PXI Board\n\t5732  GX5732 224-Channel Static Digital I/O PXI Board\n\t5733  GX5733 Digital I/O with 96 TTL Channels and 32 Customizable Channels PXI Board\n\t5960  GX5961/4 Digital I/O Timing/Sync with Pin Electronics and PMU PXI Board\n\t6021  GX6021 20-Channel RF Multiplexer PXI Board\n\t6062  GX6062 60-Channel RF Multiplexer PXI Board\n\t6115  GX6115 15-Channel High Current SPDT Form-C Relay PXI Board\n\t6125  GX6125 25-Channel High-Density SPDT Form-C Relay PXI Board\n\t6138  GX6138 38-Channel SPST Form-A Relay PXI Board\n\t6188  GX6188 104-Channel 8x8 Multiplexer/Matrix PXI Board\n\t6192  GX6192 16, 16x2 High Frequency, High Density Multiplexer PXI Board\n\t6196  GX6196 96-Channel DPST Form-A Relay Carrier PXI Board\n\t6256  GX6256 16, 16x2 Low Frequency, High Density Multiplexer PXI Board\n\t6264  GX6264 128-Channel Scanner/Multiplexer Board\n\t6315  GX6315 45-Channel High Current SPDT Form-C Relay Board\n\t6325  GX6325 75-Channel High-Density SPDT Form-C Relay Board\n\t6338  GX6338 114-Channel SPST Form-A Relay PXI Board\n\t6377  GX6377 Multifunction Switching PXI Board\n\t6384  GX6384 Configurable High-Density Switch Matrix PXI Board\n\t6616  GX6616 6x2:16 Switch Matrix PXI Board\n\t6864  GX6864 Video Switching PXI Board\n\t7400  GX7400 Dual-Output Programmable Power Supply PXI Board\n\t7404  GX7404 Prototyping and Power Interface PXI Board\n\t7777  GX7777 Generic Interface PXI Board\n\t7779  GX7779 Backplane Tester PXI Board\n16e3  European Space Agency\n\t1e0f  LEON2FT Processor\n16e5  Intellon Corp.\n\t6000  INT6000 Ethernet-to-Powerline Bridge [HomePlug AV]\n\t6300  INT6300 Ethernet-to-Powerline Bridge [HomePlug AV]\n16ec  U.S. Robotics\n\t00ed  USR997900\n\t0116  USR997902 10/100/1000 Mbps PCI Network Card\n\t2f00  USR5660A (USR265660A, USR5660A-BP) 56K PCI Faxmodem\n\t3685  Wireless Access PCI Adapter Model 022415\n\t4320  USR997904 10/100/1000 64-bit NIC (Marvell Yukon)\n\tab06  USR997901A 10/100 Cardbus NIC\n16ed  Sycron N. V.\n\t1001  UMIO communication card\n16f2  ETAS GmbH\n\t0200  I/O board\n\t\t16f2 0010  ES53xx I/O board\n16f3  Jetway Information Co., Ltd.\n16f4  Vweb Corp\n\t8000  VW2010\n16f6  VideoTele.com, Inc.\n1702  Internet Machines Corporation (IMC)\n1705  Digital First, Inc.\n170b  NetOctave\n\t0100  NSP2000-SSL crypto accelerator\n170c  YottaYotta Inc.\n1719  EZChip Technologies\n\t1000  NPA Access Network Processor Family\n# Seems to be a 2nd ID for Vitesse Semiconductor\n1725  Vitesse Semiconductor\n\t7174  VSC7174 PCI/PCI-X Serial ATA Host Bus Controller\n172a  Accelerated Encryption\n\t13c8  AEP SureWare Runner 1000V3\n# nee Fujitsu Siemens Computers GmbH\n1734  Fujitsu Technology Solutions\n\t9602  RS780/RS880 PCI to PCI bridge (int gfx)\n1735  Aten International Co. Ltd.\n1737  Linksys\n\t0029  WPG54G ver. 4 PCI Card\n\t1032  Gigabit Network Adapter\n\t\t1737 0015  EG1032 v2 Instant Gigabit Network Adapter\n\t\t1737 0024  EG1032 v3 Instant Gigabit Network Adapter\n\t1064  Gigabit Network Adapter\n\t\t1737 0016  EG1064 v2 Instant Gigabit Network Adapter\n\tab08  21x4x DEC-Tulip compatible 10/100 Ethernet\n\tab09  21x4x DEC-Tulip compatible 10/100 Ethernet\n173b  Altima (nee Broadcom)\n\t0001  AC1002 PCI Gigabit Ethernet controller\n\t03e8  AC1000 Gigabit Ethernet\n\t03e9  AC1001 Gigabit Ethernet\n\t03ea  AC9100 Gigabit Ethernet\n\t\t173b 0001  AC1002\n\t03eb  AC1003 Gigabit Ethernet\n1743  Peppercon AG\n\t8139  ROL/F-100 Fast Ethernet Adapter with ROL\n1745  ViXS Systems, Inc.\n\t2020  XCode II Series\n\t2100  XCode 2100 Series\n\t\t1043 48c9  My Cinema PE6200 Analoog\n1749  RLX Technologies\n174b  PC Partner Limited / Sapphire Technology\n174d  WellX Telecom SA\n175c  AudioScience Inc\n175e  Sanera Systems, Inc.\n1760  TEDIA spol. s r. o.\n\t0101  PCD-7004 Digital Bi-Directional Ports PCI Card\n\t0102  PCD-7104 Digital Input & Output PCI Card\n\t0121  PCT-7303A PC card with IRC counters\n\t0122  PCT-7408A PC card with counters and timers\n\t0123  PCT-7424 PCI card with standard counters\n\t0141  PCA7208AL - Analog Inputs/Outputs\n\t0142  PCA7208AS - Analog inputs/Outputs\n\t0143  PCA7408AL - Analog Inputs/Outputs\n\t0144  PCA7408AS - Analog Inputs/Outputs\n\t0145  PCA-7228AL Multifunction PCI IO card\n\t0146  PCA-7228AS Multifunction PCI IO card\n\t0147  PCA7428AL Multifunction PCI IO card\n\t0148  PCA7428AS Multifunction PCI IO card\n\t0149  PCA7228EL Multifunction PCI IO card with isolated analog inputs\n\t0150  PCA7428EL Multifunction PCI IO card with isolated analog inputs\n\t0151  PCA7628AL - PCI card with analog inputs, counters and DIO\n\t0152  PCA7628AS PCI card with analog inputs, outputs, counters and DIO\n\t0161  PCA7288A PCI card with analog outputs, counters and DIO\n\t0180  PCI1052 Communication card for MicroUnit network\n\t0214  PCT-7424C (F0) PC card with standard counters\n\t0215  PCT-7424C (F1) PC card with standard counters\n\t0216  PCT-7424E (F0) PC card with standard counters\n\t0217  PCT-7424E (F1) PC card with standard counters\n\t0240  PCA7428CL_F0 - analog Inputs\n\t0241  PCA7428CL_F1 - analog Inputs\n\t0242  PCA7428CS_F0 - Analog Inputs/Outputs non isolated\n\t0243  PCA7428CS_F1 - Analog Inputs/Outputs non isolated\n\t0244  PCA7428CE_F0 - Analog Inputs isolated\n\t0245  PCA7428CE_F1 - Analog Inputs isolated\n\t0303  PCD-7006C Digital Input & Output PCI Card\n\t0800  PCD8006 - PCIe digital Inputs/Outputs\n\t0840  PCA-8428 General-purpose multifunctional PCIe card with 8 analog inputs and 2 analog outputs\n\t0841  PCA-8429 General-purpose multifunctional PCIe card with 8 analog inputs\n\t0842  PCA-8438 General-purpose multifunctional PCIe card with 16 analog inputs and 2 analog outputs\n\t0843  PCA-8439 General-purpose multifunctional PCIe card with 16 analog inputs\n\tff00  CTU CAN FD PCIe Card\n1761  Pickering Interfaces Ltd\n1771  InnoVISION Multimedia Ltd.\n1775  General Electric\n177d  Cavium, Inc.\n\t0001  Nitrox XL N1\n\t0003  Nitrox XL N1 Lite\n\t0004  Octeon (and older) FIPS\n\t0005  Octeon CN38XX Network Processor Pass 3.x\n\t0006  RoHS\n\t0010  CN15XX/CN16XX [Nitrox PX]\n\t0011  CNN35XX [Nitrox III]\n\t0012  CNN55XX [Nitrox V]\n\t0020  Octeon CN31XX Network Processor\n\t0030  Octeon CN30XX Network Processor\n\t0040  Octeon CN58XX Network Processor\n\t0050  Octeon CN57XX Network Processor (CN54XX/CN55XX/CN56XX)\n\t0070  Octeon CN50XX Network Processor\n\t0080  Octeon CN52XX Network Processor\n\t0090  Octeon II CN63XX Network Processor\n\t0091  Octeon II CN68XX Network Processor\n\t0092  Octeon II CN65XX Network Processor\n\t0093  Octeon II CN61XX Network Processor\n\t0094  Octeon Fusion CNF71XX Cell processor\n\t0095  Octeon III CN78XX Network Processor\n\t0096  Octeon III CN70XX Network Processor\n\t9700  Octeon III CN73XX Network Processor\n\t9702  CN23XX [LiquidIO II] Intelligent Adapter\n\t\t177d 0003  CN2350 [LiquidIO II] 2-port 10GbE Intelligent adapter\n# This was changed during the production phase to 10GbE adapter.\n\t\t177d 0004  CN2350 [LiquidIO II] 2-port 10GbE Intelligent adapter\n\t\t177d 0005  CN2360 [LiquidIO II] 2-port 10GbE Intelligent adapter\n\t\t177d 0006  CN2360 [LiquidIO II] 2-port 25GbE Intelligent adapter\n\t\t177d 0007  CN2350 [LiquidIO II] 2-port 25GbE Intelligent adapter\n\t\t177d 0008  CN2350 [LiquidIO II] 2-port 10GbE SFP+ Intelligent adapter\n\t\t177d 0009  CN2360 [LiquidIO II] 2-port 10GbE SFP+ Intelligent adapter\n\t\t177d 000a  CN2350 [LiquidIO II] 2-port 10GBASE-T Intelligent adapter\n\t\t177d 000b  CN2360 [LiquidIO II] 2-port 10GBASE-T Intelligent adapter\n\t9703  CN23XX [LiquidIO II] NVMe Controller\n\t9712  CN23XX [LiquidIO II] SRIOV Virtual Function\n\t\t177d 0003  CN2350 [LiquidIO II] 2-port 10GbE SRIOV Virtual Function\n\t\t177d 0004  CN2350 [LiquidIO II] 2-port 10GbE SRIOV Virtual Function\n\t\t177d 0005  CN2360 [LiquidIO II] 2-port 10GbE SRIOV Virtual Function\n\t\t177d 0006  CN2360 [LiquidIO II] 2-port 25GbE SRIOV Virtual Function\n\t\t177d 0007  CN2350 [LiquidIO II] 2-port 25GbE SRIOV Virtual Function\n\t9713  CN23XX [LiquidIO II] NVMe SRIOV Virtual Function\n\t9800  Octeon Fusion CNF75XX Processor\n\ta001  ThunderX MRML(Master RML Bridge to RSL devices)\n\ta002  THUNDERX PCC Bridge\n\t\t177d a102  CN88XX PCC Bridge\n\ta008  THUNDERX SMMU\n\t\t177d a108  CN88XX SMMU\n\ta009  THUNDERX Generic Interrupt Controller\n\ta00a  THUNDERX GPIO Controller\n\ta00b  THUNDERX MPI / SPI Controller\n\ta00c  THUNDERX MIO-PTP Controller\n\ta00d  THUNDERX MIX Network Controller\n\ta00e  THUNDERX Reset Controller\n\ta00f  THUNDERX UART Controller\n\ta010  THUNDERX eMMC/SD Controller\n\ta011  THUNDERX MIO-BOOT Controller\n\ta012  THUNDERX TWSI / I2C Controller\n\ta013  THUNDERX CCPI (Multi-node connect)\n\ta014  THUNDERX Voltage Regulator Module\n\ta015  THUNDERX PCIe Switch Logic Interface\n\ta016  THUNDERX Key Memory\n\ta017  THUNDERX GTI (Global System Timers)\n\ta018  THUNDERX Random Number Generator\n\ta019  THUNDERX DFA\n\ta01a  THUNDERX Zip Coprocessor\n\ta01b  THUNDERX xHCI USB Controller\n\ta01c  THUNDERX AHCI SATA Controller\n\t\t177d a11c  CN88XX AHCI SATA Controller\n\ta01d  THUNDERX RAID Coprocessor\n\ta01e  THUNDERX Network Interface Controller\n\ta01f  THUNDERX Traffic Network Switch\n\ta020  THUNDERX PEM (PCI Express Interface)\n\ta021  THUNDERX L2C (Level-2 Cache Controller)\n\ta022  THUNDERX LMC (DRAM Controller)\n\ta023  THUNDERX OCLA (On-Chip Logic Analyzer)\n\ta024  THUNDERX OSM\n\ta025  THUNDERX GSER (General Serializer/Deserializer)\n\ta026  THUNDERX BGX (Common Ethernet Interface)\n\ta027  THUNDERX IOBN\n\ta029  THUNDERX NCSI (Network Controller Sideband Interface)\n\ta02a  ThunderX SGPIO (Serial GPIO controller for SATA disk lights)\n\ta02b  THUNDERX SMI / MDIO Controller\n\ta02c  THUNDERX DAP (Debug Access Port)\n\ta02d  THUNDERX PCIERC (PCIe Root Complex)\n\ta02e  ThunderX L2C-TAD (Level 2 cache tag and data)\n\ta02f  THUNDERX L2C-CBC\n\ta030  THUNDERX L2C-MCI\n\ta031  THUNDERX MIO-FUS (Fuse Access Controller)\n\ta032  THUNDERX FUSF (Fuse Controller)\n\ta033  THUNDERX Random Number Generator virtual function\n\ta034  THUNDERX Network Interface Controller virtual function\n\ta035  THUNDERX Parallel Bus\n\ta036  ThunderX RAD (RAID acceleration engine) virtual function\n\ta037  THUNDERX ZIP virtual function\n\ta040  THUNDERX CPT Cryptographic Accelerator\n# MAC found on OcteonTx2 series of silicons\n\ta059  Octeon TX2 CGX (MAC)\n# MAC found on Octeon 10 series of silicons\n\ta060  Octeon 10 RPM (MAC)\n# Octeon Tx2 Loopback Interface block\n\ta061  Octeon Tx2 Loopback Interface (LBK)\n# Octeon Tx2 Resource Virtualization Unit Physical Function\n\ta063  Octeon Tx2 RVU Physical Function\n# Octeon Tx2 Resource Virtualization Unit Virtual Function\n\ta064  Octeon Tx2 RVU Virtual Function\n# Octeon Tx2 Resource Virtualization Unit Admin Function\n\ta065  Octeon Tx2 RVU Admin Function\n# PTP Timestamping unit on Octeon 10 silicon series\n\ta09e  Octeon 10 PTP controller\n# Cryptographic Accelerator found on Octeon 10 series of silicons\n\ta0f2  Octeon 10 CPT Cryptographic Accelerator, Physical function\n\ta0f3  Octeon 10 CPT Cryptographic Accelerator, Virtual function\n# Octeon Tx2 System DPI Interface (SDP) Physical Function\n\ta0f6  Octeon Tx2 SDP Physical Function\n# Octeon Tx2 System DPI Interface (SDP) Virtual Function\n\ta0f7  Octeon Tx2 SDP Virtual Function\n\ta0f8  Octeon Tx2 Loopback Interface Virtual Function (LBKVF)\n# Cryptographic Accelerator found on OcteonTx2 series of silicons\n\ta0fd  Octeon Tx2 CPT Cryptographic Accelerator, Physical function\n# Cryptographic Accelerator found on OcteonTx2 series of silicons\n\ta0fe  Octeon Tx2 CPT Cryptographic Accelerator, Virtual function\n\ta100  THUNDERX CN88XX 48 core SoC\n\ta200  OCTEON TX CN81XX/CN80XX\n\ta300  OCTEON TX CN83XX\n\taf00  CN99xx [ThunderX2] Integrated PCI Host bridge\n\taf84  CN99xx [ThunderX2] Integrated PCI Express RP Bridge\n1787  Hightech Information System Ltd.\n1789  Ennyah Technologies Corp.\n# also used by Struck Innovative Systeme for joint developments\n1796  Research Centre Juelich\n\t0001  SIS1100 [Gigabit link]\n\t0002  HOTlink\n\t0003  Counter Timer\n\t0004  CAMAC Controller\n\t0005  PROFIBUS\n\t0006  AMCC HOTlink\n\t0007  LVD Cable Bus\n\t0008  100MHz, 64bit Sequence Generator based on VirtexII\n\t0009  double 14bit-ADC\n\t000a  SIS1100 with N110 TDC\n\t000b  double 14bit-ADC with memory\n\t000d  Synchronisation Slave\n\t000e  SIS1100-eCMC\n\t000f  TDC (GPX)\n\t0010  PCIe Counter Timer\n\t0011  SIS1100-e single link\n\t0012  SIS1100-e quad link\n\t0013  4x2.5GHz SFP to 4 lane PCIe bridge\n\t0014  SIS1100 with GPX piggy back\n\t0015  SIS8100 [Gigabit link, MicroTCA]\n\t0016  SIS1100e with 4 lanes\n\t0017  Quad 14bit, 50MHz ADC with 2.5GHz SFP\n\t0018  SIS8300 4-lane PCI Express, Micro TCA for Physics ADC\n\t0019  SIS SIS8300-Lx MTCA.4 Digitizer\n\t001a  100MHz, 64bit Sequence Generator based on VirtexII\n\t001c  Quad 16bit, 150MHz ADC with 2.5GHz SFP\n\t0030  100MHz, 64bit Sequence Generator based on Spartan6\n\t0031  200MHz 64bit Sequence Generator based on Spartan7\n# nee Techwell, Inc.\n1797  Intersil Techwell\n\t5864  TW5864 multimedia video controller\n\t6801  TW6802 multimedia video card\n\t6802  TW6802 multimedia other device\n\t6810  TW6816 multimedia video controller\n\t6811  TW6816 multimedia video controller\n\t6812  TW6816 multimedia video controller\n\t6813  TW6816 multimedia video controller\n# port 5 of 8\n\t6814  TW6816 multimedia video controller\n# port 6 of 8\n\t6815  TW6816 multimedia video controller\n# port 7 of 8\n\t6816  TW6816 multimedia video controller\n# channel 8 of 8\n\t6817  TW6816 multimedia video controller\n# Example MuniPCI-E card: http://www.commell.com.tw/product/surveillance/MPX-6864.htm\n\t6864  TW6864 multimedia video controller\n1799  Belkin\n\t6001  F5D6001 Wireless PCI Card [Realtek RTL8180]\n\t6020  F5D6020 v3000 Wireless PCMCIA Card [Realtek RTL8180]\n\t6060  F5D6060 Wireless PDA Card\n\t700f  F5D7000 v7000 Wireless G Desktop Card [Realtek RTL8185]\n\t701f  F5D7010 v7000 Wireless G Notebook Card [Realtek RTL8185]\n179a  id Quantique\n\t0001  Quantis PCI 16Mbps\n179c  Data Patterns\n\t0557  DP-PCI-557 [PCI 1553B]\n\t0566  DP-PCI-566 [Intelligent PCI 1553B]\n\t1152  DP-cPCI-1152 (8-channel Isolated ADC Module)\n\t5031  DP-CPCI-5031-Synchro Module\n# cPCI Carrier for Mezzanine Modules\n\t5112  DP-cPCI-5112 [MM-Carrier]\n\t5121  DP-CPCI-5121-IP Carrier\n\t5211  DP-CPCI-5211-IP Carrier\n\t5679  AGE Display Module\n17a0  Genesys Logic, Inc\n\t7163  GL9701 PCIe to PCI Bridge\n\t8083  GL880 USB 1.1 UHCI controller\n\t8084  GL880 USB 2.0 EHCI controller\n\t9750  GL9750 SD Host Controller\n\t9755  GL9755 SD Host Controller\n\t9767  GL9767 SD Host Controller\n\te763  GL9763E eMMC Controller\n17aa  Lenovo\n\t0003  LENSE20256GMSP34MEAT2TA\n\t0004  LENSE20512GMSP34MEAT2TA\n# 250GB nvme ssd from lenovo, can be found in Thinkpad x380 yoga\n\t0005  LENSE30256GMSP34MEAT3TA\n\t0006  LENSE30512GMSP34MEAT3TA\n\t402b  Intel 82599ES 10Gb 2-port Server Adapter X520-2\n\t9602  RS780/RS880 PCI to PCI bridge (int gfx)\n17ab  Phillips Components\n17af  Hightech Information System Ltd.\n17b3  Hawking Technologies\n\tab08  PN672TX 10/100 Ethernet\n17b4  Indra Networks, Inc.\n\t0011  WebEnhance 100 GZIP Compression Card\n\t0012  WebEnhance 200 GZIP Compression Card\n\t0015  WebEnhance 300 GZIP Compression Card\n\t0016  StorCompress 300 GZIP Compression Card\n\t0017  StorSecure 300 GZIP Compression and AES Encryption Card\n17c0  Wistron Corp.\n17c2  Newisys, Inc.\n17c3  Protogate, Inc.\n# nee Airgo Networks, Inc.\n17cb  Qualcomm Technologies, Inc\n\t0001  AGN100 802.11 a/b/g True MIMO Wireless Card\n\t\t1385 5c00  WGM511 Pre-N 802.11g Wireless CardBus Adapter\n\t\t1737 0045  WMP54GX v1 802.11g Wireless-G PCI Adapter with SRX\n\t0002  AGN300 802.11 a/b/g True MIMO Wireless Card\n\t\t1385 6d00  WPNT511 RangeMax 240 Mbps Wireless CardBus Adapter\n\t\t1737 0054  WPC54GX4 v1 802.11g Wireless-G Notebook Adapter with SRX400\n\t0104  APQ8096 PCIe Root Complex [Snapdragon 820]\n\t0105  MSM8998 PCIe Root Complex\n\t0106  SDM850 PCIe Root Complex [Snapdragon 850]\n\t0107  SDM850 PCIe Root Port [Snapdragon 850]\n\t0108  SM8150 PCIe Root Complex\n\t0109  SA8195P PCIe Root Complex\n\t010b  SM8250 PCIe Root Complex [Snapdragon 865/870 5G]\n\t010c  SM8350 PCIe Root Complex [Snapdragon 888]\n\t010e  SC8280XP PCI Express Root Port\n\t0110  SM8475 PCIe Root Complex [Snapdragon 8+ Gen 1]\n\t0111  SC8380XP PCIe Root Complex [Snapdragon X / X Plus / X Elite]\n\t0113  SM8550/SM8650 PCIe Root Complex [Snapdragon 8 Gen 2/Gen 3]\n\t0300  MDM9x35 LTE Modem [Snapdragon X7]\n\t0301  MDM9x45 LTE Modem [Snapdragon X12]\n\t0302  MDM9x55 LTE Modem [Snapdragon X16]\n\t0304  SDX24 [Snapdragon X24 4G]\n\t0306  SDX55 [Snapdragon X55 5G]\n\t0400  Datacenter Technologies QDF2432 PCI Express Root Port\n\t0401  Datacenter Technologies QDF2400 PCI Express Root Port\n\t1000  QCS405 PCIe Root Complex\n\t1003  IPQ6018 PCIe Root Complex\n\t1101  QCA6390 Wireless Network Adapter\n\t1103  QCNFA765 Wireless Network Adapter\n\t1104  QCN6024/9024/9074 Wireless Network Adapter\n\t1107  WCN785x Wi-Fi 7(802.11be) 320MHz 2x2 [FastConnect 7800]\n\t\t105b e0f7  High Band Simultaneous Wireless Network Adapter\n\t1108  IPQ95xx/97xx PCIe Root Port\n\t1109  QCN62xx/92xx Wireless Network Adapter\n17cc  NetChip Technology, Inc\n\t2280  NET2280 PCI to USB 2.0 Hi-Speed Peripheral Controller\n\t2282  NET2282 PCI to USB 2.0 Hi-Speed Peripheral Controller\n17cd  Cadence Design Systems, Inc.\n17cf  Z-Com, Inc.\n17d3  Areca Technology Corp.\n\t1110  ARC-1110 4-Port PCI-X to SATA RAID Controller\n\t1120  ARC-1120 8-Port PCI-X to SATA RAID Controller\n\t1130  ARC-1130 12-Port PCI-X to SATA RAID Controller\n\t1160  ARC-1160 16-Port PCI-X to SATA RAID Controller\n\t1170  ARC-1170 24-Port PCI-X to SATA RAID Controller\n\t1201  ARC-1200 2-Port PCI-Express to SATA II RAID Controller\n\t1203  ARC-1203 2/4/8 Port PCIe 2.0 to SATA 6Gb RAID Controller\n\t1210  ARC-1210 4-Port PCI-Express to SATA RAID Controller\n\t1214  ARC-12x4 PCIe 2.0 to SAS/SATA 6Gb RAID Controller\n\t\t17d3 1214  ARC-1214 4-Port PCIe 2.0 to SAS/SATA 6Gb RAID Controller\n\t\t17d3 1224  ARC-1224 8-Port PCIe 2.0 to SAS/SATA 6Gb RAID Controller\n\t\t17d3 1264  ARC-1264 12/16 Port PCIe 2.0 to SATA 6Gb RAID Controller\n\t\t17d3 1284  ARC-1284 24 Port PCIe 2.0 to SATA 6Gb RAID Controller\n\t1220  ARC-1220 8-Port PCI-Express to SATA RAID Controller\n\t1222  ARC-1222 8-Port PCI-Express to SAS/SATA II RAID Controller\n\t1230  ARC-1230 12-Port PCI-Express to SATA RAID Controller\n\t1260  ARC-1260 16-Port PCI-Express to SATA RAID Controller\n\t1280  ARC-1280/1280ML 24-Port PCI-Express to SATA II RAID Controller\n\t\t17d3 1221  ARC-1221 8-Port PCI-Express to SATA RAID Controller\n\t1300  ARC-1300ix-16 16-Port PCI-Express to SAS Non-RAID Host Adapter\n\t1320  ARC-1320 8/16 Port PCIe 2.0 to SAS/SATA 6Gb Non-RAID Host Adapter\n\t1330  ARC-1330 16 Port PCIe 3.0 to SAS/SATA 12Gb Non-RAID Host Adapter\n\t1680  ARC-1680 series PCIe to SAS/SATA 3Gb RAID Controller\n\t\t17d3 1212  ARC-1212 4-Port PCIe to SAS/SATA II RAID Controller\n\t\t17d3 1222  ARC-1222 8-Port PCIe to SAS/SATA 3Gb RAID Controller\n\t\t17d3 1680  ARC-1680 8/12/16/24 Port PCIe to SAS/SATA 3Gb RAID Controller\n\t1880  ARC-188x series PCIe 2.0/3.0 to SAS/SATA 6/12Gb RAID Controller\n\t\t17d3 1213  ARC-1213 4-Port PCIe 2.0 to SAS/SATA 6Gb RAID Controller\n\t\t17d3 1215  ARC-1215 4-Port PCIe 3.0 to SAS/SATA 6Gb RAID Controller\n\t\t17d3 1216  ARC-1216 4-Port PCIe 3.0 to SAS/SATA 12Gb RAID Controller\n\t\t17d3 1223  ARC-1223 8-Port PCIe 2.0 to SAS/SATA 6Gb RAID Controller\n\t\t17d3 1225  ARC-1225 8-Port PCIe 3.0 to SAS/SATA 6Gb RAID Controller\n\t\t17d3 1226  ARC-1226 8-Port PCIe 3.0 to SAS/SATA 12Gb RAID Controller\n\t\t17d3 1880  ARC-1880 8/12/16/24 Port PCIe 2.0 to SAS/SATA 6Gb RAID Controller\n\t\t17d3 1882  ARC-1882 8/12/16/24 Port PCIe 3.0 to SAS/SATA 6Gb RAID Controller\n\t\t17d3 1883  ARC-1883 8/12/16/24 Port PCIe 3.0 to SAS/SATA 12Gb RAID Controller\n\t1884  ARC-1884 series PCIe 3.0 to SAS/SATA 12/6Gb RAID Controller\n\t1886  ARC-1886 series PCIe 4.0 to NVMe/SAS/SATA 16/12/6Gb RAID Controller\n\t\t17d3 1686  ARC-1686 PCIe 4.0 to NVMe/SAS/SATA 16/12/6Gb RAID Controller\n\t\t17d3 1886  ARC-1886 PCIe 4.0 to NVMe/SAS/SATA 16/12/6Gb RAID Controller\n\t188a  ARC-1886 series PCIe 4.0 to NVMe/SAS/SATA 16/12/6Gb RAID Controller\n\t\t17d3 1217  ARC-1217 4-Port PCIe 4.0 to SAS/SATA 12/6Gb RAID Controller\n\t\t17d3 1227  ARC-1227 8-Port PCIe 4.0 to SAS/SATA 12/6Gb RAID Controller\n\t\t17d3 1686  ARC-1686 PCIe 4.0 to NVMe/SAS/SATA 16/12/6Gb RAID Controller\n\t\t17d3 1688  ARC-1688 PCIe 4.0 to NVMe/SAS/SATA 16/12/6Gb RAID Controller\n\t\t17d3 1886  ARC-1886 PCIe 4.0 to NVMe/SAS/SATA 16/12/6Gb RAID Controller\n# nee Neterion Inc., previously S2io Inc.\n17d5  Exar Corp.\n\t5731  Xframe 10-Gigabit Ethernet PCI-X\n\t5732  Xframe II 10-Gigabit Ethernet PCI-X 2.0\n\t5831  Xframe 10-Gigabit Ethernet PCI-X\n\t\t103c 12d5  PCI-X 133MHz 10GbE SR Fiber\n\t\t10a9 8020  Single Port 10-Gigabit Ethernet (PCI-X, Fiber)\n\t\t10a9 8024  Single Port 10-Gigabit Ethernet (PCI-X, Fiber)\n\t5832  Xframe II 10-Gigabit Ethernet PCI-X 2.0\n\t\t103c 1337  PCI-X 266MHz 10GigE SR [AD385A]\n\t\t10a9 8021  Single Port 10-Gigabit Ethernet II (PCI-X, Fiber)\n\t\t17d5 6020  Xframe II SR\n\t\t17d5 6021  Xframe II SR, Low Profile\n\t\t17d5 6022  Xframe E SR\n\t\t17d5 6420  Xframe II LR\n\t\t17d5 6421  Xframe II LR, Low Profile\n\t\t17d5 6422  Xframe E LR\n\t\t17d5 6c20  Xframe II CX4\n\t\t17d5 6c21  Xframe II CX4, Low Profile\n\t\t17d5 6c22  Xframe E CX4\n\t5833  X3100 Series 10 Gigabit Ethernet PCIe\n\t\t17d5 6030  X3110 Single Port SR\n\t\t17d5 6031  X3120 Dual Port SR\n\t\t17d5 6430  X3110 Single Port LR\n\t\t17d5 6431  X3120 Dual Port LR\n\t\t17d5 7030  X3110 Single Port LRM\n\t\t17d5 7031  X3120 Dual Port LRM\n\t\t17d5 7430  X3110 Single Port 10GBase-T\n\t\t17d5 7431  X3120 Dual Port 10GBase-T\n\t\t17d5 7830  X3110 Single Port 10GBase-CR\n\t\t17d5 7831  X3120 Dual Port 10GBase-CR\n17db  Cray Inc\n\t0101  XT Series [Seastar] 3D Toroidal Router\n\t0501  Cassini 1 [Slingshot 200Gb]\n17de  KWorld Computer Co. Ltd.\n17df  Dini Group\n\t1864  Virtex4 PCI Board w/ QL5064 Bridge [DN7000K10PCI/DN8000K10PCI/DN8000K10PSX/NOTUS]\n\t1865  Virtex4 ASIC Emulator [DN8000K10PCIe]\n\t1866  Virtex4 ASIC Emulator Cable Connection [DN8000K10PCI]\n\t1867  Virtex4 ASIC Emulator Cable Connection [DN8000K10PCIe]\n\t1868  Virtex4 ASIC Emulator [DN8000K10PCIe-8]\n\t1900  Virtex5 PCIe ASIC Emulator [DN9000K10PCIe8T/DN9002K10PCIe8T/DN9200K10PCIe8T/DN7006K10PCIe8T/DN7406K10PCIe8T]\n\t1901  Virtex5 PCIe ASIC Emulator Large BARs [DN9000K10PCIe8T/DN9002K10PCIe8T/DN9200K10PCIe8T/DN7006K10PCIe8T/DN7406K10PCIe8T]\n\t1902  Virtex5 PCIe ASIC Emulator Low Power [Interceptor]\n\t1903  Spartan6 PCIe FPGA Accelerator Board [DNBFCS12PCIe]\n\t1904  Virtex6 PCIe ASIC Emulation Board [DNDUALV6_PCIe4]\n\t1905  Virtex6 PCIe ASIC Emulation Board [DNV6F6PCIe]\n\t1906  Virtex6 PCIe ASIC Emulation Board [DN2076K10]\n\t1907  Virtex6 PCIe ASIC Emulation Board [DNV6F2PCIe]\n\t1908  Virtex6 PCIe ASIC Emulation Board Large BARs[DNV6F2PCIe]\n\t1909  Kintex7 PCIe FPGA Accelerator Board [DNK7F5PCIe]\n\t190a  Virtex7 PCIe ASIC Emulation Board [DNV7F1A]\n\t190b  Stratix5 PCIe ASIC Emulation Board [DNS5GXF2]\n\t190c  Virtex7 PCIe ASIC Emulation Board [DNV7F2A]\n\t190d  Virtex7 PCIe ASIC Emulation Board [DNV7F4A]\n\t190e  Virtex7 PCIe ASIC Emulation Board [DNV7F2B]\n\t190f  KintexUS PCIe MainRef Design [DNPCIE_40G_KU_LL]\n\t1910  VirtexUS ASIC Emulation Board [DNVUF4A]\n\t1911  VirtexUS PCIe ASIC Emulation Board [DNVU_F2PCIe]\n\t1912  KintexUS PCIe MainRef Design [DNPCIe_40G_KU_LL_QSFP]\n\t1913  VirtexUS ASIC Emulation Board [DNVUF1A]\n\t1914  VirtexUS ASIC Emulation Board [DNVUF2A]\n\t1915  Arria10 PCIe MainRef Design [DNPCIe_80G_A10_LL]\n\t1916  VirtexUS PCIe Accelerator Board [DNVUF2_HPC_PCIe]\n\t1917  UltrascalePlus PCIe Accelerator Board [DNPCIe_400G_VU_LL]\n\t1918  VirtexUS+ ASIC Emulation Board [DNVUPF4A]\n\t1919  UltrascalePlus PCIe Accelerator Board [DNPCIe_400G_VUP_HBM_LL]\n\t1a00  Virtex6 PCIe DMA Netlist Design\n\t1a01  Virtex6 PCIe Darklite Design [DNPCIe_HXT_10G_LL]\n\t1a02  Virtex7 PCIe DMA Netlist Design\n\t1a03  Kintex7 PCIe Darklite Design [DNPCIe_K7_10G_LL]\n\t1a05  Stratix5 PCIe Darklite Design [DNS5GX_F2]\n\t1a06  VirtexUS PCIe DMA Netlist Design\n\t1a07  KintexUS PCIe Darklite Design [DNPCIe_40G_KU_LL]\n\t1a08  KintexUS PCIe Darklite Design [DNPCIe_40G_KU_LL_QSFP]\n\t1a09  Arria10 PCIe Darklite Design [DNPCIe_80G_A10_LL]\n\t1a0a  VirtexUS PCIe Darklite Design [DNVUF2_HPC_PCIe]\n\t1a0b  UltrascalePlus PCIe Darklite Design [DNPCIe_400G_VU_LL]\n\t1a0c  KintexUS PCIe DRAM Packet Capture Design [DNPCIe_40G_KU_LL]\n\t1a0d  KintexUS PCIe DRAM Packet Capture Design [DNPCIe_40G_KU_LL_2QSFP]\n\t1a0e  UltrascalePlus PCIe Darklite Design [DNPCIe_400G_VUP_HBM_LL]\n17e4  Sectra AB\n\t0001  KK671 Cardbus encryption board\n\t0002  KK672 Cardbus encryption board\n# nee Entropic Communications Inc.\n17e6  MaxLinear\n\t0010  EN2010 [c.Link] MoCA Network Controller (Coax, PCI interface)\n\t0011  EN2010 [c.Link] MoCA Network Controller (Coax, MPEG interface)\n\t0021  EN2210 [c.Link] MoCA Network Controller (Coax)\n\t0025  EN2510 [c.Link] MoCA Network Controller (Coax, PCIe interface)\n\t0027  EN2710 [c.Link] MoCA 2.0 Network Controller (Coax, PCIe interface)\n\t3700  MoCA 2.0 Network Controller (Coax, PCIe interface)\n\t3710  MoCA 2.5 Network Controller (Coax, PCIe interface)\n17ee  Connect Components Ltd\n17f2  Albatron Corp.\n17f3  RDC Semiconductor, Inc.\n\t1010  R1010 IDE Controller\n\t1011  R1011 IDE Controller\n\t1012  R1012 IDE Controller\n\t1031  PCI/PCI-X to PCI-E Bridge\n# Integrated in Vortex86EX, Vortex86EX2 SoC\n\t1070  CAN Bus Controller\n# Integrated in Vortex86EX, Vortex86EX2 SoCs\n\t1331  Motion Control Interface\n# Found in the Vortex86EX2 SoC\n\t1930  Hybrid Function Control Register\n# IGP = on-chip integrated in the MSTI-PMX-1000 (Vortex86MX).\n\t2010  RDC M2010 VGA-compatible graphics adapter\n\t2012  M2012/R3308 VGA-compatible graphics adapter\n# IGP = on-chip integrated in the Vortex86DX3. Basic 2D accel. UMA architecture.\n\t2015  RDC M2015 VGA-compatible graphics adapter\n\t3010  R3010 HD Audio Controller\n# Found in the Vortex86EX SoC\n\t6011  R6011 ISA Bridge\n# Found in the Vortex86EX2 SoC\n\t6013  R6013 ISA Bridge\n\t6020  R6020 North Bridge\n\t6021  R6021 Host Bridge\n# Integrated in the Vortex86DX2 SoC\n\t6022  R6022 Host Bridge\n# Found in the Vortex86DX3 SoC\n\t6023  R6023 Host Bridge\n# Found in the Vortex86EX SoC\n\t6025  R6025 Host Bridge\n# Found in the Vortex86EX2 SoC\n\t6026  R6026 Host Bridge\n\t6030  R6030 ISA Bridge\n\t6031  R6031 ISA Bridge\n# Found in the Vortex86DX3 SoC\n\t6035  R6035 ISA Bridge\n# Found in MSTI-PMX-1000 (Vortex86MX) SoC.\n\t6036  R6036 ISA Bridge\n\t6040  R6040 MAC Controller\n\t6060  R6060 USB 1.1 Controller\n\t6061  R6061 USB 2.0 Controller\n17f7  Topdek Semiconductor Inc.\n17f9  Gemtek Technology Co., Ltd\n17fc  IOGEAR, Inc.\n17fe  InProComm Inc.\n\t2120  IPN 2120 802.11b\n\t\t1737 0020  WMP11 v4 802.11b Wireless-B PCI Adapter\n\t2220  IPN 2220 802.11g\n\t\t1468 0305  T60N871 802.11g Mini PCI Wireless Adapter\n\t\t1737 0029  WPC54G v4 802.11g Wireless-G Notebook Adapter\n17ff  Benq Corporation\n1800  Qualcore Logic Inc.\n\t1100  Nanospeed Trading Gateway\n1803  ProdaSafe GmbH\n1804  Ralink corp. (wrong ID)\n\t3060  RT3060 Wireless 802.11n 1T/1R\n1805  Euresys S.A.\n\t0201  PICOLO Alert PCI\n\t0202  PICOLO Diligent\n\t0204  PICOLO Alert-RC\n\t0205  PICOLO Alert PCIe\n\t0206  PICOLO Diligent Plus PCIe\n\t0207  PICOLO Alert-RC PCIe\n\t0300  GRABLINK Expert 2\n\t0301  GRABLINK Quickpack ColorScan\n\t0302  GRABLINK Value cPCI\n\t0303  GRABLINK Expert 2 cPCI\n\t0305  GRABLINK Avenue\n\t0306  GRABLINK Quickpack CFA\n\t0307  GRABLINK Express\n\t0308  GRABLINK Quickpack CFA PCIe\n\t0309  GRABLINK Quickpack CFA PCIe (Recovery)\n\t030a  GRABLINK Full\n\t030b  GRABLINK Full (Recovery)\n\t030c  GRABLINK DualBase\n\t030d  GRABLINK DualBase (Recovery)\n\t030e  GRABLINK Base\n\t030f  GRABLINK Base (Recovery)\n\t0310  GRABLINK Full XR\n\t0311  GRABLINK Full XR (Recovery)\n\t0401  DOMINO Iota\n\t0402  DOMINO Alpha 2\n\t0403  DOMINO Harmony\n\t0404  DOMINO Melody\n\t0407  DOMINO Symphony\n\t0408  DOMINO Symphony PCIe\n\t0814  Coaxlink Quad CXP-12\n1809  Lumanate, Inc.\n180c  IEI Integration Corp\n1813  Ambient Technologies Inc\n\t4000  HaM controllerless modem\n\t\t16be 0001  V9x HAM Data Fax Modem\n\t4100  HaM plus Data Fax Modem\n\t\t16be 0002  V9x HAM 1394\n1814  Ralink corp.\n\t0101  Wireless PCI Adapter RT2400 / RT2460\n\t\t1043 0127  WiFi-b add-on Card\n\t\t1371 0010  Minitar MNW2BPCI Wireless PCI Card\n\t\t1462 6828  PC11B2 (MS-6828) Wireless 11b PCI Card\n\t0200  RT2500 802.11g PCI [PC54G2]\n\t0201  RT2500 Wireless 802.11bg\n\t\t1043 130f  WL-130g\n\t\t1186 3c00  DWL-G650X Wireless 11g CardBus Adapter\n\t\t1371 001e  CWC-854 Wireless-G CardBus Adapter\n\t\t1371 001f  CWM-854 Wireless-G Mini PCI Adapter\n\t\t1371 0020  CWP-854 Wireless-G PCI Adapter\n\t\t1458 e381  GN-WMKG 802.11b/g Wireless CardBus Adapter\n\t\t1458 e931  GN-WIKG 802.11b/g mini-PCI Adapter\n\t\t1462 6833  Unknown 802.11g mini-PCI Adapter\n\t\t1462 6835  Wireless 11G CardBus CB54G2\n\t\t1737 0032  WMP54G v4.0 PCI Adapter\n\t\t1799 700a  F5D7000 v2000/v3000 Wireless G Desktop Card\n\t\t1799 701a  F5D7010 v2000/v3000 Wireless G Notebook Card\n\t\t1814 2560  RT2500 Wireless 802.11bg\n\t\t182d 9073  WL-115 Wireless Network PCI Adapter\n\t\t185f 22a0  CN-WF513 Wireless Cardbus Adapter\n\t\t18eb 5312  WL531P IEEE 802.11g PCI Card-EU\n\t\t1948 3c00  C54RC v1 Wireless 11g CardBus Adapter\n\t\t1948 3c01  C54Ri v1 Wireless 11g PCI Adapter\n\t0300  Wireless Adapter Canyon CN-WF511\n\t0301  RT2561/RT61 802.11g PCI\n\t\t1186 3c08  AirPlus G DWL-G630 Wireless Cardbus Adapter (rev.E1)\n\t\t1186 3c09  DWL-G510 Rev C\n\t\t13d1 abe3  miniPCI Pluscom 802.11 a/b/g\n\t\t1458 e933  GN-WI01GS\n\t\t1458 e934  GN-WP01GS\n\t\t1462 b833  MP54G5 (MS-6833B)\n\t\t1737 0055  WMP54G v4.1\n\t\t1799 700e  F5D7000 v6000 Wireless G Desktop Card\n\t\t1799 701e  F5D7010 v6000 Wireless G Notebook Card\n\t\t17f9 0012  AWLC3026T 802.11g Wireless CardBus Adapter\n\t\t1814 2561  EW-7108PCg/EW-7128g\n\t0302  RT2561/RT61 rev B 802.11g\n\t\t1186 3a71  DWA-510 Wireless G Desktop Adapter\n\t\t1186 3c08  AirPlus G DWL-G630 Wireless Cardbus Adapter (rev.E2)\n\t\t1186 3c09  AirPlus G DWL-G510 Wireless Network Adapter (Rev.C)\n\t\t1462 b834  PC54G3 Wireless 11g PCI Card\n\t\t1948 3c23  C54RC v2 Wireless 11g CardBus Adapter\n\t\t1948 3c24  C54Ri v2 Wireless 11g PCI Adapter\n\t0401  RT2600 802.11 MIMO\n\t\t1737 0052  WPC54GR v1 802.11g Wireless-G Notebook Adapter with RangeBooster\n\t\t17f9 0011  WPCR-137G 802.11bg Wireless CardBus Adapter\n\t\t17f9 0016  WPIR-119GH 802.11bg Wireless Desktop Adapter\n\t0601  RT2800 802.11n PCI\n\t\t1799 801c  F5D8011 v3 802.11n N1 Wireless Notebook Card\n\t\t187e 3412  NWD-310N 802.11n Wireless PCI Adapter\n\t0681  RT2890 Wireless 802.11n PCIe\n\t\t1458 e939  GN-WS30N-RH 802.11bgn Mini PCIe Card\n\t0701  RT2760 Wireless 802.11n 1T/2R\n\t\t1737 0074  WMP110 v2 802.11n RangePlus Wireless PCI Adapter\n\t0781  RT2790 Wireless 802.11n 1T/2R PCIe\n\t\t11ad 7600  HP WN7600R\n\t\t1814 2790  RT2790 Wireless 802.11n 1T/2R PCIe\n\t3060  RT3060 Wireless 802.11n 1T/1R\n\t\t1186 3c04  DWA-525 Wireless N 150 Desktop Adapter (rev.A1)\n\t3062  RT3062 Wireless 802.11n 2T/2R\n\t3090  RT3090 Wireless 802.11n 1T/1R PCIe\n\t\t13bd 1057  GN-WS32L-RH Half-size Mini PCIe Card\n\t3091  RT3091 Wireless 802.11n 1T/2R PCIe\n\t3092  RT3092 Wireless 802.11n 2T/2R PCIe\n\t3290  RT3290 Wireless 802.11n 1T/1R PCIe\n\t\t103c 18ec  Ralink RT3290LE 802.11bgn 1x1 Wi-Fi and Bluetooth 4.0 Combo Adapter\n\t3298  RT3290 Bluetooth\n\t\t103c 18ec  Ralink RT3290LE 802.11bgn 1x1 Wi-Fi and Bluetooth 4.0 Combo Adapter\n\t3592  RT3592 Wireless 802.11abgn 2T/2R PCIe\n\t359f  RT3592 PCIe Wireless Network Adapter\n\t5360  RT5360 Wireless 802.11n 1T/1R\n\t\t1186 3c05  DWA-525 Wireless N 150 Desktop Adapter (rev.A2)\n\t\t20f4 703a  TEW-703PI N150 Wireless PCI Adapter\n\t5362  RT5362 PCI 802.11n Wireless Network Adapter\n\t5390  RT5390 Wireless 802.11n 1T/1R PCIe\n\t\t103c 1636  U98Z077.00 Half-size Mini PCIe Card\n\t5392  RT5392 PCIe Wireless Network Adapter\n\t539b  RT5390R 802.11bgn PCIe Wireless Network Adapter\n\t539f  RT5390 [802.11 b/g/n 1T1R G-band PCI Express Single Chip]\n\t\t103c 1637  Pavilion DM1Z-3000 PCIe wireless card\n\t5592  RT5592 PCIe Wireless Network Adapter\n\te932  RT2560F 802.11 b/g PCI\n1815  Devolo AG\n1820  InfiniCon Systems Inc.\n1822  Twinhan Technology Co. Ltd\n\t4e35  Mantis DTV PCI Bridge Controller [Ver 1.0]\n182d  SiteCom Europe BV\n# HFC-based ISDN card\n\t3069  ISDN PCI DC-105V2\n\t9790  WL-121 Wireless Network Adapter 100g+ [Ver.3]\n182e  Raza Microelectronics, Inc.\n\t0008  XLR516 Processor\n# Strange vendor ID used by BCM5785 when in RAID mode\n182f  Broadcom\n# HT1000 uses 3 IDs 1166:024a (Native SATA Mode), 1166:024b (PATA/IDE Mode), 182f:000b (RAID Mode) depends on SATA BIOS setting\n\t000b  BCM5785 [HT1000] SATA (RAID Mode)\n1830  Credence Systems Corporation\n\t8000  CPIn\n\t8001  CPId\n\t8002  CPIx\n\t8003  CPIq\n183b  MikroM GmbH\n\t08a7  MVC100 DVI\n\t08a8  MVC101 SDI\n\t08a9  MVC102 DVI+Audio\n\t08b0  MVC200-DC\n1846  Alcatel-Lucent\n1849  ASRock Incorporation\n\t9602  RS780/RS880 PCI to PCI bridge (int gfx)\n184a  Thales Computers\n\t1100  MAX II cPLD\n1850  Advantest Corporation\n\t0048  EK220-66401 Computer Interface Card\n1851  Microtune, Inc.\n1852  Anritsu Corp.\n1853  SMSC Automotive Infotainment System Group\n1854  LG Electronics, Inc.\n185b  Compro Technology, Inc.\n\t1489  VideoMate Vista T100\n185f  Wistron NeWeb Corp.\n1864  SilverBack\n\t2110  ISNAP 2110\n1867  Topspin Communications\n\t5a44  MT23108 InfiniHost HCA\n\t5a45  MT23108 InfiniHost HCA flash recovery\n\t5a46  MT23108 InfiniHost HCA bridge\n\t6278  MT25208 InfiniHost III Ex (Tavor compatibility mode)\n\t6282  MT25208 InfiniHost III Ex\n186c  Humusoft, s.r.o.\n\t0612  AD612 Data Acquisition Device\n\t0614  MF614 Multifunction I/O Card\n\t0622  AD622 Data Acquisition Device\n\t0624  MF624 Multifunction I/O PCI Card\n\t0625  MF625 3-phase Motor Driver\n\t0634  MF634 Multifunction I/O PCIe Card\n\t0644  MF644 Multifunction I/O Thb Card\n186f  WiNRADiO Communications\n1876  L-3 Communications\n\ta101  VigraWATCH PCI\n\ta102  VigraWATCH PMC\n\ta103  Vigra I/O\n187e  ZyXEL Communications Corporation\n\t3403  ZyAir G-110 802.11g\n\t340e  M-302 802.11g XtremeMIMO\n1885  Avvida Systems Inc.\n1888  Varisys Ltd\n\t0301  VMFX1 FPGA PMC module\n\t0601  VSM2 dual PMC carrier\n\t0710  VS14x series PowerPC PCI board\n\t0720  VS24x series PowerPC PCI board\n188a  Ample Communications, Inc\n1890  Egenera, Inc.\n1894  KNC One\n1896  B&B Electronics Manufacturing Company, Inc.\n\t4202  MIport 3PCIU2 2-port Serial\n\t4204  MIport 3PCIU4 4-port Serial\n\t4208  MIport 3PCIU8 8-port Serial\n\t4211  MIport 3PCIOU1 1-port Isolated Serial\n\t4212  MIport 3PCIOU2 2-port Isolated Serial\n\t4214  MIport 3PCIOU4 4-port Isolated Serial\n\tbb10  3PCI2 2-Port Serial\n\tbb11  3PCIO1 1-Port Isolated Serial\n1897  AMtek\n18a1  Astute Networks Inc.\n18a2  Stretch Inc.\n\t0002  VRC6016 16-Channel PCIe DVR Card\n18a3  AT&T\n18ac  DViCO Corporation\n\td500  FusionHDTV 5\n\td800  FusionHDTV 3 Gold\n\td810  FusionHDTV 3 Gold-Q\n\td820  FusionHDTV 3 Gold-T\n\tdb30  FusionHDTV DVB-T Pro\n\tdb40  FusionHDTV DVB-T Hybrid\n\tdb78  FusionHDTV DVB-T Dual Express\n18b8  Ammasso\n\tb001  AMSO 1100 iWARP/RDMA Gigabit Ethernet Coprocessor\n# formally Info-Tek Corp.\n18bc  GeCube Technologies, Inc.\n18c3  Micronas Semiconductor Holding AG\n\t0720  nGene PCI-Express Multimedia Controller\n\t\t1461 032e  Hybrid M779 PCI-E\n# Nee Octigabay System\n18c8  Cray Inc\n18c9  ARVOO Engineering BV\n18ca  XGI Technology Inc. (eXtreme Graphics Innovation)\n\t0020  Z7/Z9 (XG20 core)\n\t0021  Z9s/Z9m (XG21 core)\n\t0027  Z11/Z11M\n\t0040  Volari V3XT/V5/V8\n\t0047  Volari 8300 (chip: XP10, codename: XG47)\n# should be 182d\n18d2  Sitecom Europe BV (Wrong ID)\n# Sitecom HFC-S based ISDN controller card DC-105v2\n\t3069  DC-105v2 ISDN controller\n18d4  Celestica\n# OCP-TAP\n\t1007  Time Card\n18d8  Dialogue Technology Corp.\n18dd  Artimi Inc\n\t4c6f  Artimi RTMI-100 UWB adapter\n18df  LeWiz Communications\n18e6  MPL AG\n\t0001  OSCI [Octal Serial Communication Interface]\n18eb  Advance Multimedia Internet Technology, Inc.\n18ec  Cesnet, z.s.p.o.\n\t6d05  ML555\n\t\t18ec 0100  NIC (ethernet interfaces)\n\t\t18ec 0200  NIC (szedata2) 4x1G\n\t\t18ec 0201  NIC (szedata2) 2x10G\n\t\t18ec 0300  NIFIC (szedata2) 4x1G\n\t\t18ec 0302  NIFIC (szedata2) 2x10G\n\t\t18ec 4200  Flexible FlowMon (szedata2) 1x10G\n\t\t18ec ff00  Testing design\n\t\t18ec ff01  Boot design\n\tc006  COMBO6\n\t\t18ec d001  COMBO-4MTX\n\t\t18ec d002  COMBO-4SFP\n\t\t18ec d003  COMBO-4SFPRO\n\t\t18ec d004  COMBO-2XFP\n\tc032  COMBO-LXT110\n\t\t18ec 0100  NIC (ethernet interfaces)\n\t\t18ec 0200  NIC (szedata2) 4x1G\n\t\t18ec 0201  NIC (szedata2) 2x10G\n\t\t18ec 0300  NIFIC (szedata2) 4x1G\n\t\t18ec 0302  NIFIC (szedata2) 2x10G\n\t\t18ec 4200  Flexible FlowMon (szedata2) 1x10G\n\t\t18ec ff00  Testing design\n\t\t18ec ff01  Boot design\n\tc045  COMBO6E\n\tc050  COMBO-PTM\n\tc058  COMBO6X\n\t\t18ec d001  COMBO-4MTX\n\t\t18ec d002  COMBO-4SFP\n\t\t18ec d003  COMBO-4SFPRO\n\t\t18ec d004  COMBO-2XFP\n\tc132  COMBO-LXT155\n\t\t18ec 0100  NIC (ethernet interfaces)\n\t\t18ec 0200  NIC (szedata2) 4x1G\n\t\t18ec 0201  NIC (szedata2) 2x10G\n\t\t18ec 0300  NIFIC (szedata2) 4x1G\n\t\t18ec 0302  NIFIC (szedata2) 2x10G\n\t\t18ec 4200  Flexible FlowMon (szedata2) 1x10G\n\t\t18ec ff00  Testing design\n\t\t18ec ff01  Boot design\n\tc232  COMBO-FXT100\n\t\t18ec 0100  NIC (ethernet interfaces)\n\t\t18ec 0200  NIC (szedata2) 4x1G\n\t\t18ec 0201  NIC (szedata2) 2x10G\n\t\t18ec 0300  NIFIC (szedata2) 4x1G\n\t\t18ec 0302  NIFIC (szedata2) 2x10G\n\t\t18ec 4200  Flexible FlowMon (szedata2) 1x10G\n\t\t18ec ff00  Testing design\n\t\t18ec ff01  Boot design\n\tc400  COMBO-400G1\n18ee  Chenming Mold Ind. Corp.\n18f1  Spectrum GmbH\n18f4  Napatech A/S\n\t0031  NT20X Network Adapter\n\t0051  NT20X Capture Card\n\t0061  NT20E Capture Card\n\t0064  NT20E Inline Card\n\t0071  NT4E Capture Card\n\t0074  NT4E Inline Card\n\t0081  NT4E 4-port Expansion Card\n\t0091  NT20X Capture Card [New Rev]\n\t00a1  NT4E-STD Capture Card\n\t00a4  NT4E-STD Inline Card\n# 8 x 1 Gbps / 10 Gbps PCIe Optical Bypass Adapter\n\t00b1  NTBPE Optical Bypass Adapter\n\t00c5  NT20E2 Network Adapter 2x10Gb\n\t00d5  NT40E2-4 Network Adapter 4x10Gb\n\t00e5  NT40E2-1 Network Adapter 1x40Gb\n# 4-Port Adapter for 1 GbE In-Line Bypass Applications\n\t00f5  NT4E2-4T-BP Network Adapter 4x1Gb with Electrical Bypass\n\t0105  NT4E2-4-PTP Network Adapter 4x1Gb\n\t0115  NT20E2-PTP Network Adapter 2x10Gb\n\t0125  NT4E2-4-PTP Network Adapter 4x1Gb\n\t0135  NT20E2-PTP Network Adapter 2x10Gb\n\t0145  NT40E3-4-PTP Network Adapter 4x10Gb\n\t0155  NT100E3-1-PTP Network Adapter 1x100Gb\n\t0165  NT80E3-2-PTP Network Adapter 2x40Gb\n\t0175  NT20E3-2-PTP Network Adapter 2x10Gb\n\t0185  NT40A01 Network Adapter\n\t01a5  NT200A01 Network Adapter\n\t01c5  NT200A02 Network Adapter\n\t01d5  NT50B01 Network Adapter\n\t01e5  NT100A01 Network Adapter\n\t0215  NT400D11 Network Adapter\n\t0225  NT40A11 Network Adapter\n\t0295  NT400D13 Network Adapter\n18f6  NextIO\n\t1000  [Nexsis] Switch Virtual P2P PCIe Bridge\n\t1001  [Texsis] Switch Virtual P2P PCIe Bridge\n\t1050  [Nexsis] Switch Virtual P2P PCI Bridge\n\t1051  [Texsis] Switch Virtual P2P PCI Bridge\n\t2000  [Nexsis] Switch Integrated Mgmt. Endpoint\n\t2001  [Texsis] Switch Integrated Mgmt. Endpoint\n18f7  Commtech, Inc.\n\t0001  ESCC-PCI-335 Serial PCI Adapter [Fastcom]\n\t0002  422/4-PCI-335 Serial PCI Adapter [Fastcom]\n\t0003  232/4-1M-PCI Serial PCI Adapter [Fastcom]\n\t0004  422/2-PCI-335 Serial PCI Adapter [Fastcom]\n\t0005  IGESCC-PCI-ISO/1 Serial PCI Adapter [Fastcom]\n\t000a  232/4-PCI-335 Serial PCI Adapter [Fastcom]\n\t000b  232/8-PCI-335 Serial PCI Adapter [Fastcom]\n\t000f  FSCC Serial PCI Adapter [Fastcom]\n\t0010  GSCC Serial PCI Adapter [Fastcom]\n\t0011  QSSB Serial PCI Adapter [Fastcom]\n\t0014  SuperFSCC Serial PCI Adapter [Fastcom]\n\t0015  SuperFSCC-104-LVDS Serial PC/104+ Adapter [Fastcom]\n\t0016  FSCC-232 RS-232 Serial PCI Adapter [Fastcom]\n# Software UARTs\n\t0017  SuperFSCC-104 Serial PC/104+ Adapter [Fastcom]\n# Software UARTs\n\t0018  SuperFSCC/4 Serial PCI Adapter [Fastcom]\n# Software UARTs\n\t0019  SuperFSCC Serial PCI Adapter [Fastcom]\n\t001a  SuperFSCC-LVDS Serial PCI Adapter [Fastcom]\n# Software UARTs\n\t001b  FSCC/4 Serial PCI Adapter [Fastcom]\n# RS-644 Only\n\t001c  SuperFSCC/4-LVDS Serial PCI Adapter [Fastcom]\n# Software UARTs\n\t001d  FSCC Serial PCI Adapter [Fastcom]\n\t001e  SuperFSCC/4 Serial PCIe Adapter [Fastcom]\n\t001f  SuperFSCC/4 Serial cPCI Adapter [Fastcom]\n\t0020  422/4-PCIe Serial PCIe Adapter [Fastcom]\n\t0021  422/8-PCIe Serial PCIe Adapter [Fastcom]\n# RS-644 Only\n\t0022  SuperFSCC/4-LVDS Serial PCIe Adapter [Fastcom]\n# Software UARTs\n\t0023  SuperFSCC/4 Serial cPCI Adapter [Fastcom]\n# RS-644 Only, Software UARTs\n\t0025  SuperFSCC/4-LVDS Serial PCI Adapter [Fastcom]\n# RS-644 Only, Software UARTs\n\t0026  SuperFSCC-LVDS Serial PCI Adapter [Fastcom]\n# Software UARTs\n\t0027  FSCC/4 Serial PCIe Adapter [Fastcom]\n18fb  Resilience Corporation\n1904  Hangzhou Silan Microelectronics Co., Ltd.\n\t2031  SC92031 PCI Fast Ethernet Adapter\n\t8139  RTL8139D [Realtek] PCI 10/100BaseTX ethernet adaptor\n1905  Micronas USA, Inc.\n# since the merger with NEC Electronics in 2010\n1912  Renesas Electronics Corp.\n\t0002  SH7780 PCI Controller (PCIC)\n\t0011  SH7757 PCIe End-Point [PBI]\n\t0012  SH7757 PCIe-PCI Bridge [PPB]\n\t0013  SH7757 PCIe Switch [PS]\n\t0014  uPD720201 USB 3.0 Host Controller\n\t0015  uPD720202 USB 3.0 Host Controller\n\t\t4c52 9a72  LRSU9A72 2-Port USB 3.0 Exchange Adapter\n\t001a  SH7758 PCIe-PCI Bridge [PPB]\n\t001b  SH7758 PCIe End-Point [PBI]\n\t001d  SH7758 PCIe Switch [PS]\n1919  Soltek Computer Inc.\n1923  Sangoma Technologies Corp.\n\t0040  A200/Remora FXO/FXS Analog AFT card\n\t0100  A104d QUAD T1/E1 AFT card\n\t0300  A101 single-port T1/E1\n\t0400  A104u Quad T1/E1 AFT\n1924  AMD Solarflare\n\t0703  SFC4000 rev A net [Solarstorm]\n\t\t10b8 0102  SMC10GPCIe-10BT (A2) [TigerCard]\n\t\t10b8 0103  SMC10GPCIe-10BT (A3) [TigerCard]\n\t\t10b8 0201  SMC10GPCIe-XFP (A1) [TigerCard]\n\t\t1924 0101  SFE4001-A1\n\t\t1924 0102  SFE4001-A2\n\t\t1924 0103  SFE4001-A3\n\t\t1924 0201  SFE4002-A1\n\t\t1924 0301  SFE4003-A1\n\t\t1924 0302  SFE4003-A2\n\t\t1924 0303  SFE4003-A3\n\t\t1924 0304  SFE4003-A4\n\t\t1924 0500  SFE4005-A0\n\t0710  SFC4000 rev B [Solarstorm]\n\t\t10b8 0103  SMC10GPCIe-10BT (A3) [TigerCard]\n\t\t10b8 0201  SMC10GPCIe-XFP (A1) [TigerCard]\n\t\t1924 0102  SFE4001-A2\n\t\t1924 0103  SFE4001-A3\n\t\t1924 0201  SFE4002-A1\n\t\t1924 0302  SFE4003-A2\n\t\t1924 0303  SFE4003-A3\n\t\t1924 0304  SFE4003-A4\n\t\t1924 0500  SFE4005-A0\n\t\t1924 5102  SFN4111T-A2\n\t\t1924 5103  SFN4111T-R3\n\t\t1924 5104  SFN4111T-R4\n\t\t1924 5105  SFN4111T-R5\n\t\t1924 5201  SFN4112F-R1\n\t\t1924 5202  SFN4112F-R2\n\t0803  SFC9020 10G Ethernet Controller\n\t\t1014 0478  2-port 10GbE Low-Latency (R7)\n\t\t1014 0479  2-port 10GbE OpenOnload (R7)\n\t\t1014 04a7  Solarflare 10Gb Low-latency Dual-port HBA (R7)\n\t\t1014 04a8  Solarflare 10Gb Dual-port HBA (R7)\n\t\t103c 2132  Ethernet 10Gb 2-port 570FLR-SFP+ Adapter (R1)\n\t\t103c 2136  Ethernet 10Gb 2-port 570SFP+ Adapter (R7)\n\t\t1924 1201  SFA6902F-R1 SFP+ AOE Adapter\n\t\t1924 6200  SFN5122F-R0 SFP+ Server Adapter\n\t\t1924 6201  SFN5122F-R1 SFP+ Server Adapter\n\t\t1924 6202  SFN5122F-R2 SFP+ Server Adapter\n\t\t1924 6204  SFN5122F-R4 SFP+ Server Adapter\n\t\t1924 6205  SFN5122F-R5 SFP+ Server Adapter\n\t\t1924 6206  SFN5122F-R6 SFP+ Server Adapter\n\t\t1924 6207  SFN5122F-R7 SFP+ Server Adapter\n\t\t1924 6210  SFN5322F-R0 SFP+ Precision Time Synchronization Server Adapter\n\t\t1924 6211  SFN5322F-R1 SFP+ Precision Time Synchronization Server Adapter\n\t\t1924 6217  SFN5322F-R7 SFP+ Precision Time Synchronization Server Adapter\n\t\t1924 6227  SFN6122F-R7 SFP+ Server Adapter\n\t\t1924 6237  SFN6322F-R7 SFP+ Precision Time Synchronization Server Adapter\n\t\t1924 6501  SFN5802K-R1 Mezzanine Adapter\n\t\t1924 6511  SFN5814H-R1 Mezzanine Adapter\n\t\t1924 6521  SFN5812H-R1 Mezzanine Adapter\n\t\t1924 6562  SFN6832F-R2 SFP+ Mezzanine Adapter\n\t\t1924 6a05  SFN5112F-R5 SFP+ Server Adapter\n\t\t1924 6a06  SFN5112F-R6 SFP+ Server Adapter\n\t\t1924 7206  SFN5162F-R6 SFP+ Server Adapter\n\t\t1924 7207  SFN5162F-R7 SFP+ Server Adapter\n\t\t1924 7a06  SFN5152F-R6 SFP+ Server Adapter\n\t\t1924 7a07  SFN5152F-R7 SFP+ Server Adapter\n\t0813  SFL9021 10GBASE-T Ethernet Controller\n\t\t1924 6100  SFN5121T-R0 10GBASE-T Server Adapter\n\t\t1924 6102  SFN5121T-R2 10GBASE-T Server Adapter\n\t\t1924 6103  SFN5121T-R3 10GBASE-T Server Adapter\n\t\t1924 6104  SFN5121T-R4 10GBASE-T Server Adapter\n\t\t1924 6902  SFN5111T-R2 10GBASE-T Server Adapter\n\t\t1924 6904  SFN5111T-R4 10GBASE-T Server Adapter\n\t\t1924 7104  SFN5161T-R4 10GBASE-T Server Adapter\n\t\t1924 7904  SFN5151T-R4 10GBASE-T Server Adapter\n\t0903  SFC9120 10G Ethernet Controller\n\t\t1014 04cc  SFN7122F-R2 2x10GbE SFP+ Flareon Ultra\n\t\t1924 8002  SFN7122F-R1 SFP+ Server Adapter\n\t\t1924 8003  SFN7x41Q-R1 Flareon Ultra 7000 Series 10/40G Adapter\n\t\t1924 8006  SFN7022F-R1 SFP+ Server Adapter\n\t\t1924 8007  SFN7322F-R2 Precision Time SFP+ Server Adapter\n\t\t1924 8009  SFN7x22F-R2 Flareon Ultra 7000 Series 10G Adapter\n\t\t1924 800a  SFN7x02F-R2 Flareon 7000 Series 10G Adapter\n\t\t1924 800c  SFN7x22F-R3 Flareon Ultra 7000 Series 10G Adapter\n\t\t1924 800d  SFN7x02F-R3 Flareon 7000 Series 10G Adapter\n\t\t1924 8010  SFA7942Q-R1 QSFP+ AOE Adapter\n\t\t1924 8015  SFA7942Q-A5-0-R1 QSFP+ AOE Adapter\n\t0923  SFC9140 10/40G Ethernet Controller\n\t\t1924 800b  SFN7x42Q-R1 Flareon Ultra 7000 Series 10/40G Adapter\n\t\t1924 800e  SFN7x42Q-R2 Flareon Ultra 7000 Series 10/40G Adapter\n\t\t1924 800f  SFN7xx4F-R1 Flareon Ultra 7000 Series 10G Adapter\n\t0a03  SFC9220 10/40G Ethernet Controller\n\t\t1924 8011  SFN8022-R1 8000 Series 10G Adapter\n\t\t1924 8012  SFN8522-R1 8000 Series 10G Adapter\n\t\t1924 8013  SFN8042-R1 8000 Series 10/40G Adapter\n\t\t1924 8014  SFN8542-R1 8000 Series 10/40G Adapter\n\t\t1924 8016  SFN8022-R2 8000 Series 10G Adapter\n\t\t1924 8017  SFN8522-R2 8000 Series 10G Adapter\n\t\t1924 8018  SFN8042-R2 8000 Series 10/40G Adapter\n\t\t1924 8019  SFN8542-R2 8000 Series 10/40G Adapter\n\t\t1924 801a  SFN8722-R1 8000 Series OCP 10G Adapter\n\t\t1924 801b  SFN8522-R3 8000 Series 10G Adapter\n\t\t1924 801c  SFN8042-R3 8000 Series 10/40G Adapter\n\t\t1924 8021  SFN8041-R1 8000 Series 10/40G Adapter\n\t0b03  XtremeScale SFC9250 10/25/40/50/100G Ethernet Controller\n\t\t1924 801d  x2522-R1 2000 Series 10/25G Adapter\n\t\t1924 801e  x2542-R1 2000 Series 40/100G Adapter\n\t\t1924 8022  XtremeScale X2522 10G Network Adapter\n\t\t1924 8024  XtremeScale X2562 OCP 3.0 Dual Port SFP28\n\t\t1924 8027  XtremeScale X2541 PCIe Single Port QSFP28\n\t\t1924 8028  XtremeScale X2522-25G Network Adapter\n\t\t1924 802a  XtremeScale X2542 PCIe Dual Port QSFP28\n\t\t1924 802b  XtremeScale X2552 OCP 2.0 Dual Port SFP28\n\t\t1924 802c  XtremeScale X2522-25G PCIe Dual Port SFP28\n\t\t1924 802d  XtremeScale X2562 OCP 3.0 Dual Port SFP28\n\t0c03  NS9480 1/10/25/40/50/100Gb Ethernet Controller PLUS\n\t\t1924 8031  X4522 Express and Enterprise Ethernet Adapter\n\t\t1924 8032  X4542 Express and Enterprise Ethernet Adapter\n\t1803  SFC9020 10G Ethernet Controller (Virtual Function)\n\t1813  SFL9021 10GBASE-T Ethernet Controller (Virtual Function)\n\t1903  SFC9120 10G Ethernet Controller (Virtual Function)\n\t1923  SFC9140 10/40G Ethernet Controller (Virtual Function)\n\t1a03  SFC9220 10/40G Ethernet Controller (Virtual Function)\n\t1b03  XtremeScale SFC9250 10/25/40/50/100G Ethernet Controller (Virtual Function)\n\t1c03  NS9480 1/10/25/40/50/100Gb Ethernet Controller PLUS (Virtual Function)\n\t2c03  NS9480 1/10/25/40/50/100Gb Ethernet Controller\n\t\t1924 8031  X4522 Enterprise Ethernet Adapter\n\t\t1924 8032  X4542 Enterprise Ethernet Adapter\n\t3c03  NS9480 1/10/25/40/50/100Gb Ethernet Controller (Virtual Function)\n\t6703  SFC4000 rev A iSCSI/Onload [Solarstorm]\n\t\t10b8 0102  SMC10GPCIe-10BT (A2) [TigerCard]\n\t\t10b8 0103  SMC10GPCIe-10BT (A3) [TigerCard]\n\t\t10b8 0201  SMC10GPCIe-XFP (A1) [TigerCard]\n\t\t1924 0101  SFE4001-A1\n\t\t1924 0102  SFE4001-A2\n\t\t1924 0103  SFE4001-A3\n\t\t1924 0201  SFE4002-A1\n\t\t1924 0301  SFE4003-A1\n\t\t1924 0302  SFE4003-A2\n\t\t1924 0303  SFE4003-A3\n\t\t1924 0304  SFE4003-A4\n\t\t1924 0500  SFE4005-A0\n\tc101  EF1-21022T [EtherFabric]\n192a  BiTMICRO Networks Inc.\n\t0008  RAMPART\n192e  TransDimension\n1931  Option N.V.\n\t000c  Qualcomm MSM6275 UMTS chip\n1932  DiBcom\n193c  MAXIM Integrated Products\n193d  New H3C Technologies Co., Ltd.\n193f  AHA Products Group\n\t0001  AHA36x-PCIX\n\t0360  AHA360-PCIe\n\t0363  AHA363-PCIe\n\t0364  AHA364-PCIe\n\t0367  AHA367-PCIe\n\t0370  AHA370-PCIe\n\t0604  AHA604\n\t0605  AHA605\n\t3641  AHA3641\n\t3642  AHA3642\n\t6101  AHA6101\n\t6102  AHA6102\n1942  ClearSpeed Technology plc\n\te511  Advance X620 accelerator card\n\te521  Advance e620 accelerator card\n1945  MERA\n\t6200  PXI/PXIe measurement module\n1947  C-guys, Inc.\n\t4743  CG200 Dual SD/SDIO Host controller device\n1948  Alpha Networks Inc.\n194a  DapTechnology B.V.\n\t1111  FireSpy3850\n\t1112  FireSpy450b\n\t1113  FireSpy450bT\n\t1114  FireSpy850\n\t1115  FireSpy850bT\n\t1200  FireTrac 3460bT\n\t1201  FireTrac 3460bT (fallback firmware)\n\t1202  FireTrac 3460bT\n\t1203  FireTrac 3460bT (fallback firmware)\n# nee Curtis, Inc.\n1954  One Stop Systems, Inc.\n1957  Freescale Semiconductor Inc\n\t0012  MPC8548E\n\t0013  MPC8548\n\t0014  MPC8543E\n\t0015  MPC8543\n\t0018  MPC8547E\n\t0019  MPC8545E\n\t001a  MPC8545\n\t0020  MPC8568E\n\t0021  MPC8568\n\t0022  MPC8567E\n\t0023  MPC8567\n\t0030  MPC8533E\n\t0031  MPC8533\n\t0032  MPC8544E\n\t0033  MPC8544\n\t0040  MPC8572E\n\t0041  MPC8572\n\t0050  MPC8536E\n\t0051  MPC8536\n\t0052  MPC8535E\n\t0053  MPC8535\n\t0060  MPC8569\n\t0061  MPC8569E\n\t0070  P2020E\n\t0071  P2020\n\t0078  P2010E\n\t0079  P2010\n\t0080  MPC8349E\n\t0081  MPC8349\n\t0082  MPC8347E TBGA\n\t0083  MPC8347 TBGA\n\t0084  MPC8347E PBGA\n\t\t110a 4074  SIMATIC NET CP 1628\n\t0085  MPC8347 PBGA\n\t\t110a 4046  SIMATIC NET CP 1623\n\t0086  MPC8343E\n\t0087  MPC8343\n\t00b4  MPC8315E\n\t00b6  MPC8314E\n\t\t1a56 1101  Bigfoot Killer Xeno Pro Gigabit Ethernet Controller\n\t00c2  MPC8379E\n\t00c3  MPC8379\n\t00c4  MPC8378E\n\t00c5  MPC8378\n\t00c6  MPC8377E\n\t00c7  MPC8377\n\t0100  P1020E\n\t0101  P1020\n\t0102  P1021E\n\t0103  P1021\n\t0108  P1011E\n\t0109  P1011\n\t010a  P1012E\n\t010b  P1012\n\t0110  P1022E\n\t0111  P1022\n\t\t1c7f 5200  EB5200\n\t0118  P1013E\n\t0119  P1013\n\t0128  P1010\n\t0400  P4080E\n\t0401  P4080\n\t0408  P4040E\n\t0409  P4040\n\t041f  P3041\n\t0420  QorIQ P5020 Communications Processor with security engine\n\t0421  QorIQ P5020 Communications Processor without security engine\n\t0428  QorIQ P5010 Communications Processor with security engine\n\t0429  QorIQ P5010 Communications Processor without security engine\n\t0440  T4240 with security\n\t0441  T4240 without security\n\t0446  T4160 with security\n\t0447  T4160 without security\n\t0820  T1040 with security\n\t0821  T1040 without security\n\t0824  T1042 with security\n\t0825  T1042 without security\n\t0828  T1020 with security\n\t0829  T1020 without security\n\t082c  T1022 with security\n\t082d  T1022 without security\n\t0830  T2080 with security\n\t0831  T2080 without security\n\t0838  T2081 with security\n\t0839  T2081 without security\n\t580c  MPC5121e\n\t7010  MPC8641 PCI Host Bridge\n\t7011  MPC8641D PCI Host Bridge\n\t7018  MPC8610\n\t81c0  LS1046A PCI Express Bridge\n\tc006  MPC8308\n\t\t1a56 1201  Bigfoot Killer E2100 Gigabit Ethernet Controller\n# PCIe interface for emulator\n\tfc02  RedStone\n# CFI device over PCIe\n\tfc03  CFI\n1958  Faster Technology, LLC.\n1959  PA Semi, Inc\n\ta000  PA6T Core\n\ta001  PWRficient Host Bridge\n\ta002  PWRficient PCI-Express Port\n\ta003  PWRficient SMBus Controller\n\ta004  PWRficient 16550 UART\n\ta005  PWRficient Gigabit Ethernet\n\ta006  PWRficient 10-Gigabit Ethernet\n\ta007  PWRficient DMA Controller\n\ta008  PWRficient LPC/Localbus Interface\n\ta009  PWRficient L2 Cache\n\ta00a  PWRficient DDR2 Memory Controller\n\ta00b  PWRficient SERDES\n\ta00c  PWRficient System/Debug Controller\n\ta00d  PWRficient PCI-Express Internal Endpoint\n1966  Orad Hi-Tec Systems\n\t1975  DVG64 family\n\t1977  DVG128 family\n\t1979  3DVG/UHD3\n\t1980  HDV2/UHD2\n\t\t1234 3160  UHD2LC\n\t\t1234 3300  Legacy UHD2\n\t\t1234 3410  UHD2\n# nee Atheros Communications, Inc. nee Attansic Technology Corp.\n1969  Qualcomm Atheros\n\t1026  AR8121/AR8113/AR8114 Gigabit or Fast Ethernet\n\t\t1043 8304  P5KPL-CM Motherboard\n\t1048  Attansic L1 Gigabit Ethernet\n\t\t1043 8226  P5B-MX/WiFi-AP, P5KPL-VM Motherboard\n\t1062  AR8132 Fast Ethernet\n\t1063  AR8131 Gigabit Ethernet\n\t\t1458 e000  GA-G31M-ES2L Motherboard\n\t\t17c0 10d2  Medion Akoya E7214 Notebook PC [MD98410]\n\t1066  Attansic L2c Gigabit Ethernet\n\t1067  Attansic L1c Gigabit Ethernet\n\t1073  AR8151 v1.0 Gigabit Ethernet\n\t1083  AR8151 v2.0 Gigabit Ethernet\n\t1090  AR8162 Fast Ethernet\n\t\t1043 108d  VivoBook X202E, X202EV\n\t1091  AR8161 Gigabit Ethernet\n\t\t1043 1477  N56VZ\n\t10a0  QCA8172 Fast Ethernet\n\t10a1  QCA8171 Gigabit Ethernet\n\t2010  QCA8175 card reader controller\n\t2048  Attansic L2 Fast Ethernet\n\t2060  AR8152 v1.1 Fast Ethernet\n\t2062  AR8152 v2.0 Fast Ethernet\n\t\t1043 8468  Eee PC 1015PX\n\t3010  QCA8175 SD controller\n# E2200, E2201, E2205\n\te091  Killer E220x Gigabit Ethernet Controller\n\te0a1  Killer E2400 Gigabit Ethernet Controller\n\te0b1  Killer E2500 Gigabit Ethernet Controller\n196a  Sensory Networks Inc.\n\t0101  NodalCore C-1000 Content Classification Accelerator\n\t0102  NodalCore C-2000 Content Classification Accelerator\n\t0105  NodalCore C-3000 Content Classification Accelerator\n196d  Club-3D BV\n196e  PNY\n1971  AGEIA Technologies, Inc.\n\t0000  Physics Processing Unit [PhysX] 100 Series PCI Express Card\n# The PCI and PCIe versions have a different PID\n\t1011  Physics Processing Unit [PhysX] 100 Series PCI Card\n\t\t1043 0001  PhysX P1\n\t1021  Physics Processing Unit [PhysX] 200 Series PCI Express Card\n# nee Eberspaecher Electronics\n1974  Star Electronics GmbH & Co. KG\n\t0009  FlexCard PMC-II\n\t0011  FlexCard PMC-II Ethernet\n\t0018  FlexCard PXIe3\n\t0019  FlexCard PCIe3\n# IO card for std ethernet and automotive ethernet (ieee 1000Base-T1)\n\t001a  FlexCard PXIe Ethernet\n# IO card for std ethernet and automotive ethernet (ieee 1000Base-T1)\n\t001b  FlexCard PCIe Ethernet\n1976  TRENDnet\n1977  Parsec\n197b  JMicron Technology Corp.\n\t0250  JMC250 PCI Express Gigabit Ethernet Controller\n\t0260  JMC260 PCI Express Fast Ethernet Controller\n\t0368  JMB368 IDE controller\n\t0585  JMB58x AHCI SATA controller\n\t2360  JMB360 AHCI Controller\n\t2361  JMB361 AHCI/IDE\n\t\t1462 7235  P965 Neo MS-7235 mainboard\n\t2362  JMB362 SATA Controller\n\t\t1043 8460  P8P67 Deluxe Motherboard\n\t2363  JMB363 SATA/IDE Controller\n\t\t1043 81e4  P5B [JMB363]\n\t\t1458 b000  Motherboard\n\t\t1849 2363  Motherboard (one of many)\n\t2364  JMB364 AHCI Controller\n\t2365  JMB365 AHCI/IDE\n\t2366  JMB366 AHCI/IDE\n\t2368  JMB368 IDE controller\n\t2369  JMB369 Serial ATA Controller\n\t2380  IEEE 1394 Host Controller\n\t2381  Standard SD Host Controller\n\t2382  SD/MMC Host Controller\n\t2383  MS Host Controller\n\t2384  xD Host Controller\n\t2386  Standard SD Host Controller\n\t2387  SD/MMC Host Controller\n\t2388  MS Host Controller\n\t2389  xD Host Controller\n\t2391  Standard SD Host Controller\n\t2392  SD/MMC Host Controller\n\t2393  MS Host Controller\n\t2394  xD Host Controller\n1982  Distant Early Warning Communications Inc\n\t1600  OX16C954 HOST-A\n\t16ff  OX16C954 HOST-B\n1987  Phison Electronics Corporation\n\t5007  E7 NVMe Controller\n\t5008  E8 PCIe3 x2 NVMe Controller\n\t5012  E12 NVMe Controller\n\t5013  PS5013-E13 PCIe3 NVMe Controller (DRAM-less)\n\t5015  PS5015-E15 PCIe3 NVMe Controller (DRAM-less)\n\t5016  E16 PCIe4 NVMe Controller\n\t5018  E18 PCIe4 NVMe Controller\n\t5019  PS5019-E19 PCIe4 NVMe Controller (DRAM-less)\n\t5020  PS5020-E20 (X1) PCIe4 NVMe Controller\n\t5021  PS5021-E21 PCIe4 NVMe Controller (DRAM-less)\n\t5026  PS5026-E26 PCIe5 NVMe Controller\n\t5027  PS5027-E27T PCIe4 NVMe Controller (DRAM-less)\n\t5031  PS5031-E31T PCIe5 NVMe Controller\n\t5302  PS5302-X2 PCIe5 NVMe Controller\n1989  Montilio Inc.\n\t0001  RapidFile Bridge\n\t8001  RapidFile\n198a  Nallatech Ltd.\n1993  Innominate Security Technologies AG\n1998  Toyou Feiji Electronics Co., Ltd.\n1999  A-Logics\n\ta900  AM-7209 Video Processor\n199a  Pulse-LINK, Inc.\n199d  Xsigo Systems\n\t8209  Virtual NIC Device\n\t890a  Virtual HBA Device\n199f  Auvitek\n\t8501  AU85X1 PCI REV1.1\n\t8521  AU8521 TV card\n# nee ServerEngines Corp.\n19a2  Emulex Corporation\n\t0120  x1 PCIe Gen2 Bridge[Pilot4]\n\t0200  BladeEngine 10Gb PCI-E iSCSI adapter\n\t0201  BladeEngine 10Gb PCIe Network Adapter\n\t0211  BladeEngine2 10Gb Gen2 PCIe Network Adapter\n\t0212  BladeEngine2 10Gb Gen2 PCIe iSCSI Adapter\n\t0221  BladeEngine3 10Gb Gen2 PCIe Network Adapter\n\t0222  BladeEngine3 10Gb Gen2 PCIe iSCSI Adapter\n\t0700  OneConnect OCe10100/OCe10102 Series 10 GbE\n\t\t103c 1747  NC550SFP DualPort 10GbE Server Adapter\n\t\t103c 1749  NC550SFP Dual Port Server Adapter\n\t\t103c 174a  NC551m Dual Port FlexFabric 10Gb Adapter\n\t\t103c 174b  StorageWorks NC550 DualPort Converged Network Adapter\n\t\t103c 3314  NC551i Dual Port FlexFabric 10Gb Adapter\n\t0702  OneConnect 10Gb iSCSI Initiator\n\t0704  OneConnect OCe10100/OCe10102 Series 10 GbE CNA\n\t\t10df e602  OneConnect OCe10100 10Gb CNA\n\t\t10df e630  OneConnect OCe10102-FM-E / OCe10102-FX-E for EMC VNX Symmetrix\n\t0710  OneConnect 10Gb NIC (be3)\n# FC 5287 / FC 5284; CCIN 5287\n\t\t1014 03d0  PCIe2 2-port 10GbE SR Adapter for POWER\n# FC 5288 / FC 5286; CCIN 5288\n\t\t1014 03d1  PCIe2 2-port 10GbE SFP+ Copper Adapter for POWER\n\t\t1014 0409  Integrated Multifunction Card with Dual 10GbE SR Optical + Dual 1GbE for Power 750/760\n\t\t1014 040a  Integrated Multifunction Card with Dual 10GbE SR Copper + Dual 1GbE for Power 750/760\n\t\t103c 3315  NC553i 10Gb 2-port FlexFabric Converged Network Adapter\n\t\t103c 3340  NC552SFP 2-port 10Gb Server Adapter\n\t\t103c 3341  NC552m 10Gb 2-port FlexFabric Converged Network Adapter\n\t\t103c 3345  NC553m 10Gb 2-port FlexFabric Converged Network Adapter\n\t\t103c 337b  NC554FLB 10Gb 2-port FlexFabric Converged Network Adapter\n\t\t10df e733  Flex System EN4054 4-port 10Gb Ethernet Mezzanine Adapter\n\t0712  OneConnect 10Gb iSCSI Initiator (be3)\n\t0714  OneConnect 10Gb FCoE Initiator (be3)\n\t\t103c 3315  NC553i 10Gb 2-port FlexFabric Converged Network Adapter\n\t\t103c 337b  NC554FLB 10Gb 2-port FlexFabric Converged Network Adapter\n\t0800  ServerView iRMC HTI\n19a4  Owl Cyber Defense Solutions\n19a8  DAQDATA GmbH\n19ac  Kasten Chase Applied Research\n\t0001  ACA2400 Crypto Accelerator\n19ae  Progeny Systems Corporation\n\t0520  4135 HFT Interface Controller\n\t0521  Decimator\n19ba  ZyXEL Communications Corp.\n\t2330  ZyWALL Turbo Card\n19c1  Exegy Inc.\n# nee NextNet Wireless\n19d1  Motorola Expedience\n19d4  Quixant Limited\n19da  ZOTAC International (MCO) Ltd.\n19de  Pico Computing\n19e2  Vector Informatik GmbH\n19e3  DDRdrive LLC\n\t5801  DDRdrive X1\n\t5808  DDRdrive X8\n\tdd52  DDRdrive X1-30\n19e5  Huawei Technologies Co., Ltd.\n\t0123  ES3000 V3 NVMe PCIe SSD\n\t\t19e5 3022  NVMe SSD ES3600P V3 800GB 2.5\" U.2\n\t\t19e5 3023  NVMe SSD ES3600P V3 1200GB 2.5\" U.2\n\t\t19e5 3024  NVMe SSD ES3600P V3 1600GB 2.5\" U.2\n\t\t19e5 3025  NVMe SSD ES3600P V3 2000GB 2.5\" U.2\n\t\t19e5 3026  NVMe SSD ES3600P V3 3200GB 2.5\" U.2\n\t\t19e5 3033  NVMe SSD ES3600C V3 1200GB HHHL AIC\n\t\t19e5 3034  NVMe SSD ES3600C V3 1600GB HHHL AIC\n\t\t19e5 3036  NVMe SSD ES3600C V3 3200GB HHHL AIC\n\t0200  Hi1822 Family (2*100GE)\n\t\t19e5 d139  Hi1822 SP572 (2*100GE)\n\t\t19e5 d13d  Hi1822 SC371 (2*100GE)\n\t\t19e5 d147  Hi1822 SP573 (2*100GE)\n\t0202  Hi1822 Family (2*32G FC)\n\t\t19e5 d149  Hi1822 SP528 (2*32G FC)\n\t\t19e5 d302  Hi1822 SP521 (2*32G FC)\n\t\t19e5 d304  Hi1822 SP526 (2*32G FC)\n\t0203  Hi1822 Family (2*16G FC)\n\t\t19e5 d148  Hi1822 SP527 (2*16G FC)\n\t\t19e5 d301  Hi1822 SP520 (2*16G FC)\n\t\t19e5 d305  Hi1822 SP525 (2*16G FC)\n\t0204  Hi1822 Family (4*10GE)\n\t0205  Hi1822 Family (2*100GE)\n\t\t19e5 df27  Hi1822 MZ731 MEZZ (2*100GE)\n\t0206  Hi1822 Family (2*25GE)\n\t\t19e5 d138  Hi1822 SP582 (2*25GE)\n\t\t19e5 d13a  Hi1822 SC381 (2*25GE)\n\t\t19e5 d145  Hi1822 SP586 (2*25GE)\n\t0208  Hi1822 Family (2*100GE)\n\t020b  Hi1822 Family (4*25GE)\n\t020c  Hi1822 Family (4*32G FC)\n\t020d  Hi1822 Family (2*40GE)\n\t0210  Hi1822 Family (4*25GE)\n\t\t19e5 df2e  Hi1822 MZ532 MEZZ (4*25GE)\n\t0211  Hi1822 Family (4*25GE)\n\t\t19e5 d12f  Hi1822 SP571 (4*25GE)\n\t\t19e5 d137  Hi1822 SP581 (4*25GE)\n\t\t19e5 d142  Hi1822 SP583 (4*25GE)\n\t0212  Hi1822 Family (2*8G FC)\n\t\t19e5 d303  Hi1822 SP522 (2*8G FC)\n\t\t19e5 d306  Hi1822 SP523 (2*8G FC)\n\t0222  Hi1822 Family\n\t\t19e5 0051  Hi1822 SP681 (2*25/10GE)\n\t\t19e5 0052  Hi1822 SP680 (4*25/10GE)\n\t\t19e5 00a1  Hi1822 SP670 (2*100GE)\n\t1710  iBMA Virtual Network Adapter\n\t1711  Hi171x Series [iBMC Intelligent Management system chip w/VGA support]\n\t1822  Hi1822 Family (4*25GE)\n\t\t19e5 d129  Hi1822 SP570 (4*25GE)\n\t\t19e5 d136  Hi1822 SP580 (4*25GE)\n\t\t19e5 d141  Hi1822 SP583 (4*25GE)\n\t\t19e5 d146  Hi1822 SP585 (4*25GE)\n\t3714  ES3000 V5 NVMe PCIe SSD\n\t\t19e5 5312  NVMe SSD ES3500P V5 2000GB 2.5\" U.2\n\t371e  Hi1822 Family Virtual Bridge\n\t3754  ES3000 V6 NVMe PCIe SSD\n\t\t19e5 6122  NVMe SSD ES3600P V6 1600GB 2.5\" U.2\n\t\t19e5 6123  NVMe SSD ES3600P V6 3200GB 2.5\" U.2\n\t\t19e5 6124  NVMe SSD ES3600P V6 6400GB 2.5\" U.2\n\t\t19e5 6141  NVMe SSD ES3800P V6 800GB 2.5\" U.2\n\t\t19e5 6142  NVMe SSD ES3800P V6 1600GB 2.5\" U.2\n\t\t19e5 6212  NVMe SSD ES3500P V6 1920GB 2.5\" U.2\n\t\t19e5 6213  NVMe SSD ES3500P V6 3840GB 2.5\" U.2\n\t\t19e5 6214  NVMe SSD ES3500P V6 7680GB 2.5\" U.2\n\t\t19e5 6215  NVMe SSD ES3500P V6 15360GB 2.5\" U.2\n\t3758  SP686C RAID Controller Card\n\t\t19e5 0185  RAID SP686C-M-16i 2G\n\t\t19e5 01a1  RAID SP686C-M-40i 2G\n\t\t19e5 01a4  RAID SP686C-M-16i 4G\n\t\t19e5 01a8  RAID SP686C-MH-32i 4G\n\t\t19e5 01ad  RAID SP686C-M-40i 4G\n\t375e  Hi1822 Family Virtual Function\n\t375f  Hi1822 Family Virtual Function\n\t379e  Hi1822 Family Virtual Function\n\t379f  Hi1822 Family Virtual Function\n\t3858  SP186 HBA Controller Card\n\t\t19e5 0120  HBA SP186-M-32i\n\t\t19e5 0125  HBA SP186-M-40i\n\t\t19e5 0180  HBA SP186-M-16i\n\t\t19e5 0188  HBA SP186-M-8i\n\ta120  HiSilicon PCIe Root Port with Gen4\n\ta121  HiSilicon PCI-PCI Bridge\n\ta122  HiSilicon Embedded DMA Engine\n\ta124  HiSilicon Internal SDI Function Engine\n\ta125  HiSilicon SDI Network Controller\n\ta126  HiSilicon SDI NVMe Storage Controller\n\ta127  HiSilicon SDI Accelerator\n\ta12a  HiSilicon Add-on PCI-PCI Bridge\n\ta12d  HiSilicon Embedded PMU\n\ta12e  HiSilicon Embedded PCIe PTT\n\ta220  HNS GE Network Controller\n\ta221  HNS GE/10GE/25GE Network Controller\n\t\t19e5 0454  TM280\n\t\t19e5 04cc  TM210\n\t\t19e5 d14a  TM280 4*25G\n\t\t19e5 d14b  TM210 4*GE\n\ta222  HNS GE/10GE/25GE RDMA Network Controller\n\ta224  HNS GE/10GE/25GE/50GE RDMA Network Controller\n\ta226  HNS GE/10GE/25GE/50GE/100GE RDMA Network Controller\n\ta22a  HiSilicon Network For SDI\n\ta22e  HNS Network Controller (Virtual Function)\n\ta22f  HNS RDMA Network Controller (Virtual Function)\n\ta230  HiSilicon SAS 3.0 HBA\n\ta235  HiSilicon AHCI HBA\n\ta238  HiSilicon USB 3.0 Host Controller\n\ta239  HiSilicon USB 2.0 2-port Host Controller\n\ta23a  HiSilicon USB 2.0 Host Controller\n\ta23b  HiSilicon USB 1.1 Host Controller\n\ta250  HiSilicon ZIP Engine\n\ta251  HiSilicon ZIP Engine(Virtual Function)\n\ta255  HiSilicon SEC Engine\n\ta256  HiSilicon SEC Engine(Virtual Function)\n\ta258  HiSilicon HPRE Engine\n\ta259  HiSilicon HPRE Engine(Virtual Function)\n\ta25a  HiSilicon RDE Engine\n\ta25b  HiSilicon RDE Engine(Virtual Function)\n19e7  NET (Network Equipment Technologies)\n\t1001  STIX DSP Card\n\t1002  STIX - 1 Port T1/E1 Card\n\t1003  STIX - 2 Port T1/E1 Card\n\t1004  STIX - 4 Port T1/E1 Card\n\t1005  STIX - 4 Port FXS Card\n19ee  Netronome Systems, Inc.\n19f1  BFG Tech\n19ff  Eclipse Electronic Systems, Inc.\n1a03  ASPEED Technology, Inc.\n\t1150  AST1150 PCI-to-PCI Bridge\n\t2000  ASPEED Graphics Family\n\t\t15d9 0821  X10DRW-i\n\t\t15d9 0832  X10SRL-F\n\t\t15d9 1b95  H12SSL-i\n1a05  deltaww\n1a07  Kvaser AB\n\t0006  CAN interface PC104+ HS/HS\n\t0007  CAN interface PCIcanx II HS or HS/HS\n\t0008  CAN interface PCIEcan HS or HS/HS\n\t0009  CAN interface PCI104 HS/HS\n1a08  Sierra semiconductor\n\t0000  SC15064\n1a0d  SEAKR Engineering\n1a0e  DekTec Digital Video B.V.\n\t083f  DTA-2111 VHF/UHF Modulator\n\t0860  DTA-2144(B) Quad ASI/SDI in+out\n\t0861  DTA-2145 ASI/SDI in+out with bypass relay\n\t087c  DTA-2172 Dual 3G-SDI/ASI ports\n\t087e  DTA-2174 Quad 3G-SDI/ASI in+out\n\t087f  DTA-2175 3G-SDI/ASI input+output with bypass relay\n\t0882  DTA-2178 Octal 12G-SDI/ASI ports with genlock\n\ta882  DTA-2178-ASI Octal ASI Ports\n\tb87e  DTA-2174B Quad 3G-SDI/ASI ports (1x12G) with genlock\n1a17  Force10 Networks, Inc.\n\t8002  PB-10GE-2P 10GbE Security Card\n1a1d  GFaI e.V.\n\t1a17  Meta Networks MTP-1G IDPS NIC\n1a1e  3Leaf Systems, Inc.\n1a22  Ambric Inc.\n1a29  Fortinet, Inc.\n\t4338  CP8 Content Processor ASIC\n\t43a0  CP9 Content Processor ASIC\n\t4e36  NP6 Network Processor\n\t4e37  NP7 Network Processor\n1a2b  Ascom AG\n\t0000  GESP v1.2\n\t0001  GESP v1.3\n\t0002  ECOMP v1.3\n\t0005  ETP v1.4\n\t000a  ETP-104 v1.1\n\t000e  DSLP-104 v1.1\n# nee Metalink Ltd.\n1a30  Lantiq\n\t0680  MtW8171 [Hyperion II]\n\t0700  Wave300 PSB8224 [Hyperion III]\n\t0710  Wave300 PSB8231 [Hyperion III]\n1a32  Quanta Microsystems, Inc\n1a3b  AzureWave\n\t1112  AR9285 Wireless Network Adapter (PCI-Express)\n1a3e  Micro-Research Finland Oy\n\t132c  MTCA Event Receiver 300\n\t152c  CompactPCI Event Receiver 300\n\t172c  PCI Express Event Receiver 300\n\t192c  CompactPCI Event Receiver TG 300\n\t232c  MTCA Event Master 300\n\t252c  CompactPCI Event Generator 300\n1a41  Tilera Corp.\n\t0001  TILE64 processor\n\t0002  TILEPro processor\n\t0200  TILE-Gx processor\n\t0201  TILE-Gx Processor Virtual Function\n\t2000  TILE-Gx PCI Express Root Port\n1a4a  SLAC National Accelerator Lab TID-AIR\n\t1000  MCOR Power Supply Controller\n\t1010  AMC EVR - Stockholm Timing Board\n\t1020  PGPCard - Gen3 Cameralink Interface\n\t1030  PGPCard - Gen3 GIGe Interface\n\t2000  PGPCard - 4 Lane\n\t2001  PGPCard - 8 Lane Plus EVR\n\t2010  PCI-Express EVR\n\t2011  PCI-Express EVR - TPR Version\n\t2020  PGP-GEN3 PCIe - 8 Lane Plus EVR\n\t2030  AXI Stream DAQ PCIe card\n\t2040  EXO PCIe TEM\n\t3000  COB DTM V1\n\t3001  COB DTM V2\n1a51  Hectronic AB\n1a55  Rohde & Schwarz DVS GmbH\n\t0010  SDStationOEM\n\t0011  SDStationOEM II\n\t0020  Centaurus\n\t0021  Centaurus II\n\t0022  Centaurus II LT\n\t0030  CLIPSTER-VPU 1.x (Hugo)\n\t0040  Hydra Cinema (JPEG)\n\t0050  CLIPSTER-VPU 2.x (DigiLab)\n\t0060  CLIPSTER-DCI 2.x (HydraX)\n\t0061  Atomix\n\t0062  Atomix LT\n\t0063  Atomix HDMI\n\t0064  Atomix STAN\n\t0065  Atomix HDMI STAN\n\t0070  RED Rocket\n\t0090  CinePlay\n# nee Bigfoot Networks, now owned by Intel\n1a56  Rivet Networks\n1a57  Highly Reliable Systems\n1a58  Razer USA Ltd.\n1a5d  Celoxica\n1a5e  Aprius Inc.\n1a5f  System TALKS Inc.\n1a68  VirtenSys Limited\n1a71  XenSource, Inc.\n1a73  Violin Memory, Inc\n\t0001  Mozart [Memory Appliance 1010]\n1a76  Wavesat\n1a77  Lightfleet Corporation\n1a78  Virident Systems Inc.\n\t0031  FlashMAX Drive\n\t\t1a78 0034  FlashMAX PCIe SSD [rev 3]\n\t\t1a78 0037  FlashMAX PCIe SSD [rev 3D]\n\t\t1a78 0038  FlashMAX PCIe SSD [rev 4]\n\t\t1a78 0039  FlashMAX PCIe SSD [rev 4D]\n\t0040  FlashMAX II\n\t0041  FlashMAX II\n\t0042  FlashMAX II\n\t0050  FlashMAX III\n1a84  Commex Technologies\n\t0001  Vulcan SP HT6210 10-Gigabit Ethernet (rev 02)\n# nee MEN Mikro Elektronik\n1a88  Duagon AG\n\t4d45  Multifunction IP core\n1a8a  StarBridge, Inc.\n1a8c  Verigy Pte. Ltd.\n\t1100  E8001-66443 PCI Express CIC\n1a8e  DRS Technologies\n\t2090  Model 2090 PCI Express\n1aa8  Ciprico, Inc.\n\t0009  RAIDCore Controller\n\t000a  RAIDCore Controller\n1aa9  Schweitzer Engineering Laboratories\n\t000d  SEL-3390S8 Serial Adapter\n\t000e  SEL-3390E4 Ethernet Adapter\n\t0014  SEL-3390T Time and Ethernet Adapter\n\t0015  SEL-3350 Mainboard\n\t0016  SEL-3350 Serial Expansion Board\n\t0017  SEL-3350 GPIO Expansion Board\n\t0018  SEL-3390E4 Ethernet Adapter\n\t001c  SEL-3390E4 Ethernet Adapter\n1aab  Silver Creations AG\n\t7750  Sceye 10L\n1aae  Global Velocity, Inc.\n1ab4  Distributed Management Task Force, Inc. (DMTF)\n1ab6  CalDigit, Inc.\n\t6201  RAID Card\n# Parallels VM virtual devices\n1ab8  Parallels, Inc.\n\t4000  Virtual Machine Communication Interface\n\t4005  Accelerated Virtual Video Adapter\n\t4006  Memory Ballooning Controller\n1ab9  Espia Srl\n1ac1  Global Unichip Corp.\n\t089a  Coral Edge TPU\n1ac8  Aeroflex Gaisler\n1acc  Point of View BV\n1ad7  Spectracom Corporation\n\t8000  TSync-PCIe Time Code Processor\n\t9100  TPRO-PCI-66U Timecode Reader/Generator\n\ta000  OCP-TAP [ARTCard]\n1ade  Spin Master Ltd.\n\t1501  Swipetech barcode scanner\n\t3038  PCIe Video Bridge\n\t\t13c2 3016  TT-budget S2-4200 Twin\n\t\t4254 0552  S952 v3\n1ae0  Google, Inc.\n# NVMe drive in GCP\n\t001f  NVMe device\n\t0042  Compute Engine Virtual Ethernet [gVNIC]\n\tabcd  Airbrush Combined Paintbox IPU/Oscar Edge TPU [Pixel Neural Core]\n1ae3  SANBlaze Technology, Inc.\n1ae7  First Wise Media GmbH\n\t0520  HFC-S PCI A [X-TENSIONS XC-520]\n# nee Silicon Software GmbH\n1ae8  Basler AG\n# CameraLink frame grabber for Visual Applets\n\t0751  mE5 marathon VCL\n# CameraLink HS frame grabber\n\t0752  mE5 marathon AF2\n# CoaXpress frame grabber\n\t0753  mE5 marathon ACX QP\n# CameraLink frame grabber\n\t0754  mE5 marathon ACL\n# CoaXpress frame grabber\n\t0755  mE5 marathon ACX SP\n# CoaXpress frame grabber\n\t0756  mE5 marathon ACX DP\n# CoaXpress frame grabber for Visual Applets\n\t0757  mE5 marathon VCX QP\n# CameraLink HS frame grabber for Visual Applets\n\t0758  mE5 marathon VF2\n# CameraLink frame grabber for Visual Applets / AI applications\n\t0759  mE5 marathon VCLx\n# CameraLink frame grabber\n\t0a40  microEnable IV AD1-CL\n# CameraLink frame grabber for Visual Applets\n\t0a41  microEnable IV VD1-CL\n# CameraLink frame grabber\n\t0a42  microEnable IV AD4-CL\n# CameraLink frame grabber for Visual Applets\n\t0a44  microEnable IV VD4-CL\n# CameraLink frame grabber\n\t0a45  microEnable IV AS1-CL\n# CoaXpress frame grabber\n\t0a53  microEnable 5 AQ8-CXP6B\n# CoaXpress frame grabber for Visual Applets\n\t0a54  microEnable 5 VQ8-CXP6B\n# CoaXpress frame grabber for Visual Applets\n\t0a56  microEnable 5 VQ8-CXP6D\n# CoaXpress frame grabber\n\t0a57  microEnable 5 AQ8-CXP6D\n# CameraLink frame grabber for Visual Applets\n\t0a58  microEnable 5 VD8-CL\n# CameraLink frame grabber\n\t0a5a  microEnable 5 AD8-CL\n# CoaXpress frame grabber\n\t0a64  imaWorx CXP-12 Quad\n# OEM product\n\t0b52  mE5 Abacus 4G Base\n# OEM product\n\t0b53  mE5 Abacus 4G Base II\n# OEM product\n\t0b61  mE6 Abacus 4TG\n# CoaXpress frame grabber\n\t0b63  CXP-12 Interface Card 1C\n# CoaXpress frame grabber\n\t0b64  CXP-12 Interface Card 4C\n# CoaXpress frame grabber\n\t0b65  CXP-12 Interface Card 2C\n# CoaXpress Thunderbolt frame grabber\n\t0b66  CXP-12 LightBridge 2C\n# GigE Vision frame grabber\n\t0e42  microEnable IV AQ4-GE\n# GigE Vision frame grabber for Visual Applets\n\t0e44  microEnable IV VQ4-GE\n1ae9  Wilocity Ltd.\n\t0101  Wil6200 PCI Express Upstream Port\n\t0200  Wil6200 PCI Express Port\n\t0201  Wil6200 Wireless PCI Express Port\n\t0301  Wil6200 802.11ad Wireless Network Adapter\n\t0302  Wil6200 802.11ad Wireless Network Adapter\n\t0310  Wil6200 802.11ad Wireless Network Adapter\n1aea  Alcor Micro\n\t6601  AU6601 PCI-E Flash card reader controller\n\t6621  AU6621 PCI-E Flash card reader controller\n\t6625  AU6625 PCI-E Flash card reader controller\n1aec  Wolfson Microelectronics\n# nee Fusion-io\n1aed  SanDisk\n\t1003  ioDimm3 (v1.2)\n\t1005  ioDimm3\n\t\t1014 03c3  High IOPS SSD PCIe Adapter\n\t\t103c 176f  1.28TB MLC PCIe ioDrive Duo\n\t\t103c 1770  5.2TB MLC PCIe ioDrive Octal\n\t\t103c 178b  160GB SLC PCIe ioDrive\n\t\t103c 178c  320GB MLC PCIe ioDrive\n\t\t103c 178d  320GB SLC PCIe ioDrive Duo\n\t\t103c 178e  640GB MLC PCIe ioDrive Duo\n\t1006  ioXtreme\n\t1007  ioXtreme Pro\n\t1008  ioXtreme-2\n\t2001  ioDrive2\n\t3001  ioMemory FHHL\n\t3002  ioMemory HHHL\n\t3003  ioMemory Mezzanine\n1aee  Caustic Graphics Inc.\n# nee Qumranet, Inc.\n1af4  Red Hat, Inc.\n\t1000  Virtio network device\n\t\t01de fffb  Propolis Virtio network device\n\t1001  Virtio block device\n\t\t01de fffa  Propolis Virtio block device\n\t1002  Virtio memory balloon\n\t1003  Virtio console\n\t1004  Virtio SCSI\n\t1005  Virtio RNG\n\t1009  Virtio filesystem\n\t1041  Virtio 1.0 network device\n\t\t1af4 1100  QEMU\n\t1042  Virtio 1.0 block device\n\t\t1af4 1100  QEMU\n\t1043  Virtio 1.0 console\n\t\t1af4 1100  QEMU\n\t1044  Virtio 1.0 RNG\n\t\t1af4 1100  QEMU\n\t1045  Virtio 1.0 balloon\n\t\t1af4 1100  QEMU\n\t1046  Virtio 1.0 ioMemory\n\t\t1af4 1100  QEMU\n\t1047  Virtio 1.0 remote processor messaging\n\t\t1af4 1100  QEMU\n\t1048  Virtio 1.0 SCSI\n\t\t1af4 1100  QEMU\n\t1049  Virtio 9P transport\n\t\t1af4 1100  QEMU\n\t104a  Virtio 1.0 WLAN MAC\n\t\t1af4 1100  QEMU\n\t104b  Virtio 1.0 remoteproc serial link\n\t\t1af4 1100  QEMU\n\t104d  Virtio 1.0 memory balloon\n\t\t1af4 1100  QEMU\n\t1050  Virtio 1.0 GPU\n\t\t1af4 1100  QEMU\n\t1051  Virtio 1.0 clock/timer\n\t\t1af4 1100  QEMU\n\t1052  Virtio 1.0 input\n\t\t1af4 1100  QEMU\n\t1053  Virtio 1.0 socket\n\t\t1af4 1100  QEMU\n\t1054  Virtio 1.0 crypto\n\t\t1af4 1100  QEMU\n\t1055  Virtio 1.0 signal distribution device\n\t\t1af4 1100  QEMU\n\t1056  Virtio 1.0 pstore device\n\t\t1af4 1100  QEMU\n\t1057  Virtio 1.0 IOMMU\n\t\t1af4 1100  QEMU\n\t1058  Virtio 1.0 mem\n\t\t1af4 1100  QEMU\n\t1059  Virtio 1.0 sound\n\t\t1af4 1100  QEMU\n\t105a  Virtio 1.0 file system\n\t\t1af4 1100  QEMU\n\t105b  Virtio 1.0 pmem\n\t\t1af4 1100  QEMU\n\t105c  Virtio 1.0 rpmb\n\t\t1af4 1100  QEMU\n\t105d  Virtio 1.0 mac80211-hwsim\n\t\t1af4 1100  QEMU\n\t105e  Virtio 1.0 video encoder\n\t\t1af4 1100  QEMU\n\t105f  Virtio 1.0 video decoder\n\t\t1af4 1100  QEMU\n\t1060  Virtio 1.0 SCMI\n\t\t1af4 1100  QEMU\n\t1061  Virtio 1.0 nitro secure module\n\t\t1af4 1100  QEMU\n\t1062  Virtio 1.0 I2C adapter\n\t\t1af4 1100  QEMU\n\t1063  Virtio 1.0 watchdog\n\t\t1af4 1100  QEMU\n\t1064  Virtio 1.0 can\n\t\t1af4 1100  QEMU\n\t1065  Virtio 1.0 dmabuf\n\t\t1af4 1100  QEMU\n\t1066  Virtio 1.0 parameter server\n\t\t1af4 1100  QEMU\n\t1067  Virtio 1.0 audio policy\n\t\t1af4 1100  QEMU\n\t1068  Virtio 1.0 Bluetooth\n\t\t1af4 1100  QEMU\n\t1069  Virtio 1.0 GPIO\n\t\t1af4 1100  QEMU\n\t1110  QEMU Inter-VM shared memory device\n\t\t1af4 1100  QEMU\n1af5  Netezza Corp.\n1afa  J & W Electronics Co., Ltd.\n1b00  Montage Technology Co., Ltd.\n\tc001  CXL Memory Expander Controller M88MX5891\n\t\t1ff9 00a2  CXL Memory Expander\n\t\t1ff9 00a4  CXL Memory Expander\n1b03  Magnum Semiconductor, Inc,\n\t6100  DXT/DXTPro Multiformat Broadcast HD/SD Encoder/Decoder/Transcoder\n\t7000  D7 Multiformat Broadcast HD/SD Encoder/Decoder/Transcoder\n1b08  MSC Technologies GmbH\n1b0a  Pegatron\n\t9602  RS780/RS880 PCI to PCI bridge (int gfx)\n1b13  Jaton Corp\n1b1a  K&F Computing Research Co.\n\t0e70  GRAPE\n1b1c  Corsair\n1b21  ASMedia Technology Inc.\n\t0611  ASM1061 Serial ATA Controller\n\t0612  ASM1061/ASM1062 Serial ATA Controller\n\t\t1849 0612  Motherboard\n\t0622  ASM106x Serial ATA AHCI Controller\n\t\t4c52 9661  LRST9661 2-port M.2 SATA3(6Gb/s) Raid Adapter\n\t0624  ASM106x SATA/RAID Controller\n\t0625  106x SATA/RAID Controller\n\t1040  ASM1040 SuperSpeed USB Host Controller\n\t1041  ASM1041 SuperSpeed USB Host Controller\n\t1042  ASM1042 SuperSpeed USB Host Controller\n\t\t1043 1059  K53SM motherboard\n\t\t1043 8488  P8B WS Motherboard\n\t\t1849 1042  Motherboard\n\t1064  ASM1064 Serial ATA Controller\n\t1080  ASM1083/1085 PCIe to PCI Bridge\n\t\t1849 1080  Motherboard\n\t1142  ASM1042A USB 3.0 Host Controller\n\t1164  ASM1164 Serial ATA AHCI Controller\n\t1166  ASM1166 Serial ATA Controller\n\t1182  ASM1182e 2-Port PCIe x1 Gen2 Packet Switch\n\t\t1b21 118f  ASM1182e 2-Port PCIe x1 Gen2 Packet Switch\n\t1184  ASM1184e 4-Port PCIe x1 Gen2 Packet Switch\n\t\t1849 1184  ASM1184e 4-Port PCIe x1 Gen2 Packet Switch\n\t1187  ASM1187e 7-Port PCIe x1 Gen2 Packet Switch\n\t118f  ASM1187e 7-Port PCIe x1 Gen2 Packet Switch\n\t1242  ASM1142 USB 3.1 Host Controller\n\t\t4c52 9a42  LRSU9A42 2-Port Type-A Exchange Adapter\n\t1343  ASM1143 USB 3.1 Host Controller\n\t1806  ASM1806 4-Port PCIe x2 Gen2 Packet Switch\n\t1812  ASM1812 6-Port PCIe x4 Gen2 Packet Switch\n\t1824  ASM1824 12-Port PCIe x8 Gen2 Packet Switch\n\t2142  ASM2142/ASM3142 USB 3.1 Host Controller\n\t\t1462 7a72  H270 PC MATE\n\t2421  ASM4242 PCIe Switch Upstream Port\n\t2423  ASM4242 PCIe Switch Downstream Port\n\t2425  ASM4242 USB 4 / Thunderbolt 3 Host Router\n\t2426  ASM4242 USB 3.2 xHCI Controller\n\t2806  ASM2806 4-Port PCIe x2 Gen3 Packet Switch\n\t2812  ASM2812 6-Port PCIe x4 Gen3 Packet Switch\n\t2824  ASM2824 PCIe Gen3 Packet Switch\n\t3042  ASM3042 USB 3.2 Gen 1 xHCI Controller\n\t3142  ASM3142 USB 3.2 Gen 2x1 xHCI Controller\n\t3241  ASM3241 USB 3.2 Gen 2 Host Controller\n\t3242  ASM3242 USB 3.2 Host Controller\n1b26  Netcope Technologies, a.s.\n\tc132  COMBO-LXT155\n\tc1c0  NFB-100G1-e0\n\tc1c1  NFB-100G1-e1\n\tc250  NFB-200G2-master\n\tc251  NFB-200G2-slave\n\tc2c0  NFB-100G2-e0\n\tc2c1  NFB-100G2-e1\n\tcb20  COMBO-20G\n\tcb40  COMBO-40G\n\tcb80  NFB-40G2\n1b2c  Opal-RT Technologies Inc.\n1b36  Red Hat, Inc.\n\t0001  QEMU PCI-PCI bridge\n\t0002  QEMU PCI 16550A Adapter\n\t\t1af4 1100  QEMU Virtual Machine\n\t0003  QEMU PCI Dual-port 16550A Adapter\n\t\t1af4 1100  QEMU Virtual Machine\n\t0004  QEMU PCI Quad-port 16550A Adapter\n\t\t1af4 1100  QEMU Virtual Machine\n\t0005  QEMU PCI Test Device\n\t\t1af4 1100  QEMU Virtual Machine\n\t0006  PCI Rocker Ethernet switch device\n\t0007  PCI SD Card Host Controller Interface\n\t0008  QEMU PCIe Host bridge\n\t0009  QEMU PCI Expander bridge\n\t000a  PCI-PCI bridge (multiseat)\n\t000b  QEMU PCIe Expander bridge\n\t000c  QEMU PCIe Root port\n\t000d  QEMU XHCI Host Controller\n\t000e  QEMU PCIe-to-PCI bridge\n\t0010  QEMU NVM Express Controller\n\t0011  QEMU PVPanic device\n\t0013  QEMU UFS Host Controller\n\t0100  QXL paravirtual graphic card\n\t\t1af4 1100  QEMU Virtual Machine\n1b37  Signal Processing Devices Sweden AB\n\t0001  ADQ214\n\t0003  ADQ114\n\t0005  ADQ112\n\t000e  ADQ108\n\t000f  ADQDSP\n\t0014  ADQ412\n\t0015  ADQ212\n\t001b  SDR14\n\t001c  ADQ1600\n\t001e  ADQ208\n\t001f  DSU\n\t0020  ADQ14\n\t0023  ADQ7\n\t0026  ADQ8\n\t0031  ADQ3\n\t2014  TX320\n\t2019  S6000\n# now owned by HGST (a Western Digital subsidiary)\n1b39  sTec, Inc.\n\t0001  S1120 PCIe Accelerator SSD\n1b3a  Westar Display Technologies\n\t7589  HRED J2000 - JPEG 2000 Video Codec Device\n1b3e  Teradata Corp.\n\t1fa8  BYNET BIC2SE/X\n\t\t1b3e 00a3  BYNET BIC2SX\n\t\t1b3e 00c3  BYNET BIC2SE\n1b40  Schooner Information Technology, Inc.\n# also used by some PROXIM (14b7) devices erroneously\n1b47  Numascale AS\n\t0601  NumaChip N601\n\t0602  NumaChip N602\n1b4b  Marvell Technology Group Ltd.\n# device 1b4b:0100 reports incorrect vendor id due to hw erratum (correct is 11ab)\n\t0100  88F3700 [Armada 3700 Family] ARM SoC\n\t0640  88SE9128 SATA III 6Gb/s RAID Controller\n\t2241  88NR2241 Non-Volatile memory controller\n\t\t1028 2112  BOSS-N1 Monolithic\n\t\t1028 2113  BOSS-N1 Modular\n\t\t1028 2151  BOSS-N1 Modular ET\n\t\t1028 2196  ROR-N1\n\t\t1028 2286  BOSS-N1 DC-MHS\n\t\t1028 2287  BOSS-N1 Modular DC-MHS\n\t\t1028 23b0  eBOSS-N1 DC-MHS\n\t\t1b4b 2241  Santa Cruz NVMe Host Adapter\n\t\t1b96 4000  WD_BLACK AN1500 NVMe SSD\n\t\t1d49 0306  ThinkSystem M.2 NVMe 2-Bay RAID Enablement Kit\n\t\t1d49 0307  ThinkSystem 7mm NVMe 2-Bay Rear RAID Enablement Kit\n\t\t207d 0800  TrustRAID B310n\n\t\t207d 0801  TrustRAID B260s\n\t\t4c52 9541  LRNV9541 2-port M.2 NVMe Raid Adapter\n\t2b42  88W8997 2.4/5 GHz Dual-Band 2x2 Wi-Fi® 5 (802.11ac) + Bluetooth® 5.3 Solution\n\t2b43  NXP 88W9098 Wi-Fi 6 (ax) MAC #1\n\t2b44  NXP 88W9098 Wi-Fi 6 (ax) MAC #2\n\t2b45  NXP 88W9098 Bluetooth 5.3\n\t9120  88SE9120 SATA 6Gb/s Controller\n\t9122  88SE912x SATA 6Gb/s Controller [AHCI mode]\n\t9123  88SE9123 PCIe SATA 6.0 Gb/s controller\n\t\tdc93 600e  DC-6xxe series SATA 6G controller\n\t9125  88SE9125 PCIe SATA 6.0 Gb/s controller\n\t\t4c52 9615  LRST9615 4-port SATA3(6Gb/s) Exchange Adapter\n\t9128  88SE9128 PCIe SATA 6 Gb/s RAID controller\n\t9130  88SE9128 PCIe SATA 6 Gb/s RAID controller with HyperDuo\n\t\t1043 8438  P8P67 Deluxe Motherboard\n\t9170  88SE9170 PCIe 2.0 x1 2-port SATA 6 Gb/s Controller\n\t9171  88SE9171 PCIe 2.0 x1 1-port SATA 6 Gb/s Controller\n\t9172  88SE9172 SATA 6Gb/s Controller\n\t9178  88SE9170 PCIe SATA 6Gb/s Controller\n\t917a  88SE9172 SATA III 6Gb/s Controller [IDE mode]\n\t9182  88SE9182 PCIe 2.0 x2 2-port SATA 6 Gb/s Controller\n\t9183  88SS9183 PCIe SSD Controller\n\t9186  88SE9186 6Gb/s SATA 6Gb/s Controller [AHCI mode]\n\t918a  88SE9182 PCIe SATA 6 Gb/s controller [IDE mode]\n\t9192  88SE9172 SATA III 6Gb/s RAID Controller\n\t91a0  88SE912x SATA 6Gb/s Controller [IDE mode]\n\t91a3  88SE9128 PCIe SATA 6 Gb/s controller [IDE mode]\n\t91a4  88SE912x IDE Controller\n\t91b0  88SE9172 SATA 6 Gb/s controller [IDE mode]\n\t9215  88SE9215 PCIe 2.0 x1 4-port SATA 6 Gb/s Controller\n\t9220  88SE9220 PCIe 2.0 x2 2-port SATA 6 Gb/s RAID Controller\n\t9230  88SE9230 PCIe 2.0 x2 4-port SATA 6 Gb/s RAID Controller\n\t\t1028 1fd6  BOSS-S1 Adapter\n\t\t1028 1fdf  BOSS-S1 Modular\n\t\t1028 1fe2  BOSS-S1 Adapter\n\t\t1028 2010  BOSS-S2 Adapter\n\t\t1028 2260  BOSS-S1 Modular\n\t\t1028 2261  BOSS-S2 Adapter\n\t\t1bd4 0073  RS0200L6R2iM2\n\t\t1d49 0300  ThinkSystem M.2 with Mirroring Enablement Kit\n\t\t1d49 0301  ThinkSystem SR630 x16 PCIE with 4 SATA ports Riser\n\t\t1d49 0302  ThinkSystem SE350 M.2 SATA 4-Bay Data RAID Mirroring Enablement Kit\n\t\t1d49 0303  ThinkSystem SE350 M.2 SATA 4-Bay Data RAID Mirroring Enablement Kit\n\t\t1d49 0304  ThinkSystem M.2 SATA 2-Bay RAID Enablement Kit\n\t\t1d49 0305  ThinkSystem 7mm SATA 2-Bay Rear RAID Enablement Kit\n\t\t4c52 9630  LRST9630 4-port SATA3(6Gb/s) Raid Adapter\n\t9235  88SE9235 PCIe 2.0 x2 4-port SATA 6 Gb/s Controller\n\t9445  88SE9445 PCIe 2.0 x4 4-Port SAS/SATA 6 Gbps RAID Controller\n\t9480  88SE9480 SAS/SATA 6Gb/s RAID controller\n\t9485  88SE9485 SAS/SATA 6Gb/s controller\n1b4c  GALAX\n1b55  NetUP Inc.\n\t18f6  Dual DVB Universal CI card\n\t18f7  Dual DVB Universal CI card rev 1.4\n\t2a2c  Dual DVB-S2-CI card\n\te2e4  Dual DVB-T/C-CI RF card\n# 2xHDMI and 2xHD-SDI inputs\n\te5f4  MPEG2 and H264 Encoder-Transcoder\n\tf1c4  Dual ASI-RX/TX-CI card\n1b5e  STAR-Dundee Ltd.\n\t0001  SpaceWire PCI Mk2\n\t0002  SpaceWire PCIe Mk1\n\t0003  SpaceWire cPCI Mk2\n\t0004  SpaceWire PXI Recorder Mk1\n\t0005  SpaceWire PXI Interface Mk1\n\t0006  SpaceWire PXI Interface Mk1 with RMAP Target\n\t0008  SpaceWire PXI Router Mk1\n\t000b  SpaceWire PXI Interface Mk2\n\t000c  SpaceWire PXI Interface Mk2 with RMAP Target\n\t000d  SpaceWire PXI Router Mk2\n\t000e  SpaceWire PXI Recorder Mk2\n\t0100  STAR-Ultra PCIe\n\t0102  STAR-Ultra Single-Lane Router\n\t0200  SpaceWire PCIe Mk2\n1b61  Byd Precision Manufacture Co.,Ltd\n1b66  DELTACAST\n\t0007  DELTA-3G-elp-d\n1b6f  Etron Technology, Inc.\n\t7023  EJ168 USB 3.0 Host Controller\n\t\t1458 5007  GA-880GMA-USB3\n\t7052  EJ188/EJ198 USB 3.0 Host Controller\n\t\t1849 7052  QC5000-ITX/PH\n1b73  Fresco Logic\n\t1000  FL1000G USB 3.0 Host Controller\n\t\t1d5c 1000  Anker USB 3.0 Express Card\n\t1009  FL1009 USB 3.0 Host Controller\n\t1100  FL1100 USB 3.0 Host Controller\n\t\t16b8 6e31  Allegro Pro USB 3.0 PCIe\n\t1400  USB 3.0 Host Controller\n1b74  OpenVox Communication Co. Ltd.\n\t0115  D115P/D115E Single-port E1/T1 card\n\td130  D130P/D130E Single-port E1/T1 card (3rd GEN)\n\td210  D210P/D210E Dual-port E1/T1 card(2nd generation)\n\td230  D230 Dual-port E1/T1 card (2nd generation)\n\td410  D410/430 Quad-port E1/T1 card\n\td430  D410/430 Quad-port E1/T1 card\n1b79  Absolute Analysis\n1b85  OCZ Technology Group, Inc.\n\t1021  RevoDrive 3 X2 PCIe SSD 240 GB (Marvell SAS Controller)\n\t1041  RevoDrive 3 X2 PCIe SSD 240 GB (Marvell SAS Controller)\n\t4018  Z Drive 6000/6300 NVME SSD\n\t6018  RD400/400A SSD\n\t8788  RevoDrive Hybrid\n1b94  Signatec / Dynamic Signals Corp\n\te400  PX14400 Dual Xilinx Virtex5 based Digitizer\n1b96  Western Digital\n\t2200  Ultrastar DC SN630 NVMe SSD\n\t2201  Ultrastar DC SN630 NVMe SSD\n\t2300  Ultrastar DC SN840 NVMe SSD\n\t2400  Ultrastar DC SN640 NVMe SSD\n\t2401  Ultrastar DC SN640 NVMe SSD\n\t2402  Ultrastar DC SN640 NVMe SSD\n\t2404  Ultrastar DC SN640 NVMe SSD\n\t2500  Ultrastar DC SN840 NVMe SSD\n\t2600  Ultrastar DC ZN540 ZNS NVMe SSD\n\t2700  Ultrastar DC SN650 NVMe SSD\n\t2701  Ultrastar DC SN650 NVMe SSD\n\t2702  Ultrastar DC SN650 NVMe SSD\n\t2720  Ultrastar DC SN650 NVMe SSD\n\t2721  Ultrastar DC SN650 NVMe SSD\n\t2722  Ultrastar DC SN655 NVMe SSD\n\t2751  Ultrastar DC SN861 NVMe SSD\n\t3001  RapidFlex C2000 NVMe Initiator\n\t3714  PC SN730 NVMe SSD\n\t3734  PC SN730 NVMe SSD\n1b9a  XAVi Technologies Corp.\n1baa  QNAP Systems, Inc.\n1bad  ReFLEX CES\n\tc001  XpressGXA10-LP1150\n\tc002  XpressGXA10-LP1151\n1bb0  SimpliVity Corporation\n\t0002  OmniCube Accelerator OA-3000\n\t0010  OmniCube Accelerator OA-3000-2\n1bb1  Seagate Technology PLC\n\t005d  Nytro PCIe Flash Storage\n\t\t1bb1 6501  Nytro XP6500-8A1536 1.5TB\n# 2TB Nytro PCIe controller\n\t\t1bb1 6502  Nytro XP6500-8A2048\n# 4TB Nytro PCIe controller\n\t\t1bb1 6503  Nytro XP6500-8A4096\n# 2GB DRAM variant of Nytro card\n\t\t1bb1 6511  Nytro XH6550-2GB DRAM\n# 8GB variant of Nytro PCIe controller\n\t\t1bb1 6512  Nytro XH6550-8GB DRAM\n# 1.5 TB Nytro PCIe controller\n\t\t1bb1 6521  Nytro XP6500-8A1536 1.5TB\n# 2TB Nytro PCIe controller\n\t\t1bb1 6522  Nytro XP6500-8A2048\n# 4TB Nytro PCIe controller\n\t\t1bb1 6523  Nytro XP6500-8A4096\n\t0100  Nytro Flash Storage\n\t\t1bb1 0101  Nytro XF1440\n\t\t1bb1 0103  Nytro 5000\n\t\t1bb1 0105  Nytro 5020\n\t\t1bb1 0106  Nytro 5020 TCG\n# Larkspur 2.5\"\n\t\t1bb1 0107  Nytro 5320\n# Larkspur 2.5\" TCG\n\t\t1bb1 0108  Nytro 5320 TCG\n\t\t1bb1 0121  Nytro XM1440\n\t\t1bb1 0123  Nytro 5000\n# Kiowa M.2\n\t\t1bb1 0125  Nytro 5020\n# Kiowa M.2 TCG\n\t\t1bb1 0126  Nytro 5020\n# Larkspur M.2 22110mm\n\t\t1bb1 0127  Nytro 5320 M.2\n# Larkspur M.2 22110mm TCG\n\t\t1bb1 0128  Nytro 5320 M.2 TCG\n# Larkspur M.2 2280mm\n\t\t1bb1 0131  Nytro 5320 M.2\n# Larkspur M.2 2280mm TCG\n\t\t1bb1 0132  Nytro 5320 M.2 TCG\n# Larkspur E1.S\n\t\t1bb1 0141  Nytro 5320 E1.S\n# Larkspur E1.S TCG\n\t\t1bb1 0142  Nytro 5320 E1.S TCG\n# Kersey 2.5\"\n\t\t1bb1 0151  Nytro 5520\n# Kersey 2.5\" TCG\n\t\t1bb1 0152  Nytro 5520 TCG\n# Nytro 5050H (Ebonhawk - High Performance)\n\t\t1bb1 0153  Nytro 5050H\n# Nytro 5050H TCG (Ebonhawk High Performance)\n\t\t1bb1 0154  Nytro 5050H TCG\n# Nytro 5050M (Ebonhawk Mainstream Performance)\n\t\t1bb1 0155  Nytro 5050M\n# Nytro 5050M TCG (Ebonhawk Mainstream Performance)\n\t\t1bb1 0156  Nytro 5050M TCG\n# Nytro 5050M (Ebonhawk Mainstream Performance) - 7mm\n\t\t1bb1 0157  Nytro 5050M 7mm\n# Nytro 5050M (Ebonhawk Mainstream Performance) TCG - 7mm\n\t\t1bb1 0158  Nytro 5050M TCG 7mm\n# Nytro 5060M (Rocinante Mainstream Performance) - 15mm\n\t\t1bb1 0159  Nytro 5060M\n# Nytro 5050M TCG (Rocinante Mainstream Performance) - 15mm\n\t\t1bb1 0160  Nytro 5060M TCG\n# Nytro 5060M 7mm (Rocinante Mainstream Performance)\n\t\t1bb1 0161  Nytro 5060M 7mm\n# Nytro 5060M TCG (Rocinante Mainstream Performance) - 7mm\n\t\t1bb1 0162  Nytro 5060M TCG 7mm\n# Nytro 5060H (Rocinante High Performance)\n\t\t1bb1 0163  Nytro 5060H\n# Nytro 5060H TCG (Rocinante High Performance)\n\t\t1bb1 0164  Nytro 5060H TCG\n# Nytro 5060H (Rocinante - High Performance) - E3.S 1T\n\t\t1bb1 0165  Nytro 5060H E3.S 1T\n# Nytro 5060H (Rocinante - High Performance) - E3.S 1T TCG\n\t\t1bb1 0166  Nytro 5060H E3.S 1T TCG\n# Nytro 5060H (Rocinante - High Performance) - E3.L 1T\n\t\t1bb1 0167  Nytro 5060H E3.L 1T\n# Nytro 5060H (Rocinante - High Performance) - E3.L 1T TCG\n\t\t1bb1 0168  Nytro 5060H E3.L 1T TCG\n# Nytro 5060M (Rocinante Mainstream Performance) - E3.S 1T\n\t\t1bb1 0169  Nytro 5060M E3.S 1T\n# Nytro 5060M (Rocinante Mainstream Performance) - E3.S 1T TCG\n\t\t1bb1 0170  Nytro 5060M E3.S 1T TCG\n# Nytro 5060M (Rocinante Mainstream Performance) - E3.L 1T\n\t\t1bb1 0171  Nytro 5060M E3.L 1T\n# Nytro 5060M (Rocinante Mainstream Performance) - E3.L 1T TCG\n\t\t1bb1 0172  Nytro 5060M E3.L 1T TCG\n# Nytro 5060M (Rocinante Mainstream Performance) - E1.S\n\t\t1bb1 0173  Nytro 5060M E1.S\n# Nytro 5060M (Rocinante Mainstream Performance) - E1.S TCG\n\t\t1bb1 0174  Nytro 5060M E1.S TCG\n# Nytro 5350S (Ebonhawk Single Port) - 15mm\n\t\t1bb1 0175  Nytro 5350S - 15mm\n# Nytro 5350S (Ebonhawk Single Port) TCG - 15mm\n\t\t1bb1 0176  Nytro 5350S TCG - 15mm\n# Nytro 5360S (Rocinante Single Port) - 15mm\n\t\t1bb1 0177  Nytro 5360S - 15mm\n# Nytro 5360S (Rocinante Single Port) TCG - 15mm\n\t\t1bb1 0178  Nytro 5360S TCG - 15mm\n# Nytro 5360S (Rocinante Single Port) - E3.S\n\t\t1bb1 0179  Nytro 5360S - E3.S\n# Nytro 5360S (Rocinante Single Port) TCG - E3.S\n\t\t1bb1 0180  Nytro 5360S TCG - E3.S\n# Nytro 5060H (Rocinante High Performance) non-SED\n\t\t1bb1 0181  Nytro 5060H\n\t\t1bb1 01a1  Nytro XP7102\n\t0155  Nytro 5x50 NVMe SSD\n\t5012  FireCuda/IronWolf 510 SSD\n\t5013  BarraCuda Q5 NVMe SSD (DRAM-less)\n\t5016  FireCuda 520/IronWolf 525 SSD\n\t5018  E18 PCIe SSD\n\t5019  BarraCuda PCIe SSD (DRAM-less)\n# 2TB\n\t5021  FireCuda 520 SSD\n# 1TB\n\t5026  FireCuda 540 SSD\n\t5027  LaCie Rugged SSD Pro5\n\t5100  PCIe Gen3 SSD\n\t5101  PCIe Gen5 SSD\n1bb3  Bluecherry\n\t4304  BC-04120A MPEG4 4 port video encoder / decoder\n\t4309  BC-08240A MPEG4 4 port video encoder / decoder\n\t4310  BC-16480A MPEG4 16 port video encoder / decoder\n\t4e04  BC-04120A 4 port MPEG4 video encoder / decoder\n\t4e09  BC-08240A 8 port MPEG4 video encoder / decoder\n\t4e10  BC-16480A 16 port MPEG4 video encoder / decoder\n\t5304  BC-H04120A 4 port H.264 video and audio encoder / decoder\n\t5308  BC-H08240A 8 port H.264 video and audio encoder / decoder\n\t5310  BC-H16480A 16 port H.264 video and audio encoder / decoder\n1bb5  Quantenna Communications, Inc.\n1bbf  Maxeler Technologies Ltd.\n\t0003  MAX3\n\t0004  MAX4\n1bc0  Innodisk Corporation\n\t1001  PCIe 3TG6-P Controller\n\t1002  PCIe 3TE6 Controller (DRAM-less)\n\t1160  PCIe 3TE2 Controller\n\t1321  PCIe 4TG-P Controller\n\t1322  PCIe 4TE Controller\n\t2262  PCIe 3TG3-P Controller\n\t5208  PCIe 3TE7 Controller\n\t5216  PCIe 3TE8 Controller\n\t5236  PCIe 4TG2-P Controller\n1bcd  Apacer Technology\n\t0120  NVMe SSD Drive 960GB\n\t0180  PB4480 NVMe PCIe SSD (DRAM-less)\n\t0310  NVMe SSD Drive 480GB\n1bcf  NEC Corporation\n\t001c  Vector Engine 1.0\n1bd0  Astronics Corporation\n\t1001  Mx5 PMC/XMC Databus Interface Card\n\t1002  PM1553-5 (PC/104+ MIL-STD-1553 Interface Card)\n\t1004  AB3000 Series Rugged Computer\n\t1005  PE1000 (Multi-Protocol PCIe/104 Interface Card)\n\t1006  webCS Wireless Aircraft Communications Server\n\t1007  AB3000 Series Rugged Computer (Series N)\n\t1008  ME1000 mPCIe Avionics Interface Card\n\t100a  NG1 Series Avionics Converter\n\t100b  LE5 429 Databus Interface Card\n\t100c  LE5 1553 Databus Interface Card\n\t1101  OmniBus II PCIe Multi-Protocol Interface Card\n\t1102  OmniBusBox II Multi-Protocol Interface Core\n\t1103  OmniBus II cPCIe/PXIe Multi-Protocol Interface Card\n\t1200  NG3 Series Mil-Std-1553 Interface\n\t1201  NG3 Series ARINC 429 Interface\n\t1202  NG3 Series Avionics Discrete & Serial Interface\n\t1203  NG3 Series Avionics Discrete Interface\n1bd4  IEIT SYSTEMS Co., Ltd\n\t0911  Arria10_PCIe_F10A1150\n\t1000  NS8600G1U160 NVME SSD\n\t1001  NS8600G1U320 NVME SSD\n\t1002  NS8600G1U640 NVME SSD\n\t1003  NS8500G1U192 NVME SSD\n\t1004  NS8500G1U384 NVME SSD\n\t1005  NS8500G1U768 NVME SSD\n\t1006  NS6610G1U160, NS6510G1U192 NVME SSD\n\t1007  NS6610G1U320, NS6510G1U384 NVME SSD\n\t100c  NS8510G1Uxxx, NS8610G1Uxxx NVME SSD\n\t100e  NS8500G2Uxxxx, NS8600G2Uxxxx NVME SSD\n\t100f  NS6500G2UXXXX,NS6600G2UXXXX NVME SSD\n\t2981  32G SFP28 EP2744 Apatter\n\t\t1bd4 00b0  32G SFP28 EP2744 Apatter\n1bee  IXXAT Automation GmbH\n\t0002  CAN-IB100/PCIe\n\t0003  CAN-IB200/PCIe\n\t0004  CAN-IB120/PCIe Mini\n\t0005  CAN-IB130/PCIe 104\n\t0006  CAN-IB230/PCIe 104\n\t000e  CAN-IB500/PCIe\n\t000f  CAN-IB600/PCIe\n\t0010  CAN-IB300/PCI\n\t0011  CAN-IB400/PCI\n\t0012  CAN-IB520/PCIe Mini\n\t0016  CAN-IB410/PMC\n\t001c  CAN-IB810/PMC\n\t001e  INpact PCIe\n\t001f  INpact PCIe Mini\n\t0029  INpact M.2\n\t002d  CAN-IB630/PCIe 104\n\t002e  CAN-IB640/PCIe\n1bef  Lantiq\n\t0011  MIPS SoC PCI Express Port\n1bf4  VTI Instruments Corporation\n\t0001  SentinelEX\n\t7011  RX0xxx\n1bf5  Greenliant\n\t1000  G7200 series U.2 NVMe SSD\n1bfc  Duagon AG\n1bfd  EeeTOP\n1c00  Nanjing Qinheng Microelectronics Co., Ltd.\n\t2170  CH351 PCIe Parallel Port Adapter\n\t2273  CH351 PCIe Dual Port Serial Adapter\n\t3050  CH382L PCIe Parallel Port Adapter\n\t3250  CH384 Dual Port Serial and Parallel Port Adapter\n\t3252  CH382 PCIe Dual Port Serial Adapter\n# Device ID reused: CH352 is for PCI bus, CH382 for PCIe.\n\t3253  CH352/CH382 PCI/PCIe Dual Port Serial Adapter\n1c09  CSP, Inc.\n\t4254  10G-PCIE3-8D-2S\n\t4255  10G-PCIE3-8D-Q\n\t4256  10G-PCIE3-8D-2S\n\t4258  10G-PCIE3-8E-2S Network Adapter\n\t4260  10G-PCIE3-8E-4S Network Adapter\n\t4261  10G-PCIE3-8E-4S Network Adapter\n\t4262  10G-PCIE3-8E-4S Network Adapter\n\t4263  10G-PCIE3-8E-4S Network Adapter\n\t4264  10G-PCIE3-8E-2S Network Adapter\n\t4265  10G-PCIE3-8E-2S Network Adapter\n\t5000  25G-PCIE3-8A-2S Security Intelligent Adapter\n\t5001  25G-PCIE3-8B-2S Security Intelligent Adapter\n1c1c  Symphony\n\t0001  82C101\n1c1f  SoftLab-NSK\n\t0015  FD842\n\t0019  FD722\n\t001a  FD788\n\t001b  FD720\n\t001c  FD922\n\t001d  Vega\n\t001f  FD940\n\t0020  FD2110\n\t0021  FD722\n\t0022  FD788\n\t0023  FD722-M2\n\t0024  FD722 with bypass\n\t0025  FD922\n\t0026  FD788\n\t0027  FD940\n1c28  Lite-On IT Corp. / Plextor\n\t0122  M6e PCI Express SSD [Marvell 88SS9183]\n# previously Fiberblaze\n1c2c  Silicom Denmark\n\t000a  Capture\n\t000f  SmartNIC\n\t00a0  FBC4G Capture 4x1Gb [Herculaneum]\n\t00a1  FBC4XG Capture 4x10Gb [Ancona]\n\t00a2  FBC8XG Capture 8x10Gb [Livorno]\n\t00a3  FBC2XG Capture 2x10Gb [Genoa]\n\t00a4  FBC4XGG3 Capture 4x10Gb [Livigno]\n\t00a5  FBC2XLG Capture 2x40Gb [Livorno]\n\t00a6  FBC1CG Capture 1x100Gb\n\t00a9  FBC2XGHH Capture 2x10Gb [Latina]\n\t00ad  FBC2CGG3HL Capture 2x100Gb [Padua]\n\t00af  Capture slave device\n\t00e0  PacketMover 2x100Gb [Savona]\n\t00e1  PacketMover 2x100Gb [Tivoli]\n\t00e2  PacketMover 2x100Gb [Mango_04]\n\t00e3  PacketMover 2x10Gb [Tivoli]\n\t00e5  PacketMover 2x10Gb [Corfu]\n\t1000  SmartNIC N5010 4x100Gb\n\t1001  SmartNIC N5011 w/2xE810 4x100Gb\n\t1002  SmartNIC N5013 4x100Gb\n\t1003  SmartNIC N5014 w/2xE810 4x100Gb\n\ta000  FBC2CGG3 Capture 2x40Gb [Mango_02]\n\ta001  FBC2CGG3 Capture 2x100Gb [Mango_02]\n\ta003  FBC2CGG3 Capture 16x10Gb [Mango]\n\ta006  FBC2CGG3 Capture 2x100Gb [Mango]\n\ta007  FBC2CGG3 Capture 2x40Gb [Mango]\n\ta008  FBC2CGG3 Capture 2x25Gb [Mango]\n\ta009  FBC2CGG3 Capture 16x10Gb [Mango]\n\ta00a  FBC2CGG3 Capture 8x10Gb [Mango]\n\ta00e  FB2CG Capture 2x100Gb [Savona]\n\ta00f  FB2CG Capture 2x40Gb [Savona]\n\ta010  FB2CGHH Capture 2x40Gb [Tivoli]\n\ta011  FB2CG Capture 2x25Gb [Savona]\n\ta012  FB2CG Capture 8x10Gb [Savona]\n\ta013  FB2CGHH Capture 2x25Gb [Tivoli]\n\ta014  FB2CGHH Capture 8x10Gb [Tivoli]\n\ta015  FB2CGHH Capture 2x100Gb [Tivoli]\n\ta016  FB2CG Capture 8x25Gb [Savona]\n\ta017  FB2CGHH Capture 8x25Gb [Tivoli] a017\n# Used on V120 VME Crate Controller\n1c32  Highland Technology, Inc.\n1c33  Daktronics, Inc\n1c36  Annapurna Labs Ltd.\n\t0001  Gigabit Ethernet Adapter\n\t0002  SFP+ 10G Ethernet Adapter\n1c3b  Accensus, LLC\n\t0200  Telas2\n# http://www.accensusllc.com/accensustelas2.html\n\t0300  Telas 2.V\n1c44  Enmotus Inc\n\t1100  Fuzedrive NVMe SSD\n\t8000  8000 Storage IO Controller\n# A Western Digital Subsidiary\n1c58  HGST, Inc.\n\t0003  Ultrastar SN100 Series NVMe SSD\n\t\t1014 04f5  PCIe3 1.6TB NVMe Flash Adapter\n\t\t1014 04f6  PCIe3 3.2TB NVMe Flash Adapter\n\t\t1c58 0003  Ultrastar SN100/SN150 NVMe SSD\n\t0023  Ultrastar SN200 Series NVMe SSD\n\t\t1c58 8823  Ultrastar Memory (ME200)\n1c5c  SK hynix\n\t1069  PCB01 NVMe Solid State Drive\n\t1282  PC300 NVMe Solid State Drive 128GB\n\t1283  PC300 NVMe Solid State Drive 256GB\n\t1284  PC300 NVMe Solid State Drive 512GB\n\t1285  PC300 NVMe Solid State Drive 1TB\n\t1327  BC501 NVMe Solid State Drive\n\t1339  BC511 NVMe SSD\n\t1504  PC400 NVMe SSD\n\t1527  PC401 NVMe Solid State Drive 256GB\n\t1627  PC601 NVMe Solid State Drive\n\t1639  PC611 NVMe Solid State Drive\n\t1739  BC701 NVMe Solid State Drive\n\t174a  Gold P31/BC711/PC711 NVMe Solid State Drive\n\t1959  Platinum P41/PC801 NVMe Solid State Drive\n\t1969  PC811 NVMe Solid State Drive\n\t1d59  BC901 NVMe Solid State Drive (DRAM-less)\n\t1f69  PVC10 NVMe Solid State Drive (DRAM-less)\n\t2204  960GB TLC PCIe Gen3 x4 NVMe M.2 22110\n\t2427  PE6010 NVMe Solid State Drive\n\t2429  PE6011 NVMe Solid State Drive\n\t243b  PE6110 NVMe Solid State Drive\n\t\t1c5c 0100  PE6110 NVMe Solid State Drive\n\t2527  PE4010 NVMe Solid State Drive\n\t2839  PE8000 Series NVMe Solid State Drive\n\t\t1028 2143  DC NVMe SED PE8010 RI U.2 960GB\n\t\t1028 2144  DC NVMe PE8010 RI U.2 960GB\n\t\t1028 2145  DC NVMe SED PE8010 RI U.2 1.92TB\n\t\t1028 2146  DC NVMe PE8010 RI U.2 1.92TB\n\t\t1028 2147  DC NVMe SED PE8010 RI U.2 3.84TB\n\t\t1028 2148  DC NVMe PE8010 RI U.2 3.84TB\n\t\t1028 2149  DC NVMe SED PE8010 RI U.2 7.68TB\n\t\t1028 214a  DC NVMe PE8010 RI U.2 7.68TB\n\t\t1c5c 0100  PE8000 Series NVMe Solid State Drive\n\t2849  PE81x0 U.2/3 NVMe Solid State Drive\n\t\t1028 2262  DC NVMe OPAL PE8110 RI U.2 960GB\n\t\t1028 2263  DC NVMe OPAL PE8110 RI U.2 1920GB\n\t\t1028 2264  DC NVMe OPAL PE8110 RI U.2 3840GB\n\t\t1028 2265  DC NVMe OPAL PE8110 RI U.2 7680GB\n\t\t1028 2266  DC NVMe ISE PE8110 RI U.2 960GB\n\t\t1028 2267  DC NVMe ISE PE8110 RI U.2 1920GB\n\t\t1028 2268  DC NVMe ISE PE8110 RI U.2 3840GB\n\t\t1028 2269  DC NVMe ISE PE8110 RI U.2 7680GB\n\t\t1c5c 0101  PE81x0 U.2/3 NVMe Solid State Drive\n\t284a  PE8110 Series NVMe Solid State Drive\n\t2a49  PE9110 Series NVMe Solid State Drive\n\t2a59  PE9010 Series NVMe Solid State Drives\n\t2b59  Px10x0 Series NVMe Solid State Drives\n\t\t1028 2295  NVMe ISE PS1010 RI U.2 1.92TB\n\t\t1028 2296  NVMe ISE PS1010 RI U.2 3.84TB\n\t\t1028 2297  NVMe ISE PS1010 RI U.2 7.68TB\n\t\t1028 2298  NVMe ISE PS1010 RI U.2 15.36TB\n\t\t1028 2299  NVMe ISE PS1030 MU U.2 1.6TB\n\t\t1028 229a  NVMe ISE PS1030 MU U.2 3.2TB\n\t\t1028 229b  NVMe ISE PS1030 MU U.2 6.4TB\n\t\t1028 229c  NVMe ISE PS1030 MU U.2 12.8TB\n\t\t1028 22a7  NVMe ISE PS1010 RI E3.S 1.92TB\n\t\t1028 22a8  NVMe ISE PS1010 RI E3.S 3.84TB\n\t\t1028 22a9  NVMe ISE PS1010 RI E3.S 7.68TB\n\t\t1028 22aa  NVMe ISE PS1010 RI E3.S 15.36TB\n\t\t1028 22ab  NVMe ISE PS1030 MU E3.S 1.6TB\n\t\t1028 22ac  NVMe ISE PS1030 MU E3.S 3.2TB\n\t\t1028 22ad  NVMe ISE PS1030 MU E3.S 6.4TB\n\t\t1028 22ae  NVMe ISE PS1030 MU E3.S 12.8TB\n\t\t1028 22dc  NVMe FIPS PS1010 RI E3.S 1.92TB\n\t\t1028 22dd  NVMe FIPS PS1010 RI E3.S 3.84TB\n\t\t1028 22de  NVMe FIPS PS1010 RI E3.S 7.68TB\n\t\t1028 22df  NVMe FIPS PS1010 RI E3.S 15.36TB\n\t\t1028 22e0  NVMe FIPS PS1030 MU E3.S 1.6TB\n\t\t1028 22e1  NVMe FIPS PS1030 MU E3.S 3.2TB\n\t\t1028 22e2  NVMe FIPS PS1030 MU E3.S 6.4TB\n\t\t1028 22e3  NVMe FIPS PS1030 MU E3.S 12.8TB\n\t\t1028 22f8  NVMe ISE PE1010 RI E3.S 1.92TB\n\t\t1028 22f9  NVMe ISE PE1010 RI E3.S 3.84TB\n\t\t1028 22fa  NVMe ISE PE1010 RI E3.S 7.68TB\n\t\t1028 22fb  NVMe ISE PE1010 RI E3.S 15.36TB\n\t\t1028 22fc  NVMe ISE PE1030 MU E3.S 1.6TB\n\t\t1028 22fd  NVMe ISE PE1030 MU E3.S 3.2TB\n\t\t1028 22fe  NVMe ISE PE1030 MU E3.S 6.4TB\n\t\t1028 22ff  NVMe ISE PE1030 MU E3.S 12.8TB\n1c5f  Beijing Memblaze Technology Co. Ltd.\n\t000d  PBlaze5 520/526\n\t\t1c5f 0220  NVMe SSD PBlaze5 520 1920G AIC\n\t\t1c5f 0221  NVMe SSD PBlaze5 520 1920G 2.5\" U.2\n\t\t1c5f 0230  NVMe SSD PBlaze5 520 3840G AIC\n\t\t1c5f 0231  NVMe SSD PBlaze5 520 3840G 2.5\" U.2\n\t\t1c5f 4220  NVMe SSD PBlaze5 526 1600G AIC\n\t\t1c5f 4221  NVMe SSD PBlaze5 526 1600G 2.5\" U.2\n\t\t1c5f 4230  NVMe SSD PBlaze5 526 3200G AIC\n\t\t1c5f 4231  NVMe SSD PBlaze5 526 3200G 2.5\" U.2\n\t000e  PBlaze6 6530/6531/6541/6630\n\t\t1c5f 0b20  NVMe SSD PBlaze6 6530 1920G AIC\n\t\t1c5f 0b21  NVMe SSD PBlaze6 6530 1920G 2.5\" U.2\n\t\t1c5f 0b25  NVMe SSD PBlaze6 6530 1920G E1.S\n\t\t1c5f 0b27  NVMe SSD PBlaze6 6630 1920G 2.5\" U.2\n\t\t1c5f 0b30  NVMe SSD PBlaze6 6530 3840G AIC\n\t\t1c5f 0b31  NVMe SSD PBlaze6 6530 3840G 2.5\" U.2\n\t\t1c5f 0b35  NVMe SSD PBlaze6 6530 3840G E1.S\n\t\t1c5f 0b37  NVMe SSD PBlaze6 6630 3840G 2.5\" U.2\n\t\t1c5f 0b40  NVMe SSD PBlaze6 6530 7680G AIC\n\t\t1c5f 0b41  NVMe SSD PBlaze6 6530 7680G 2.5\" U.2\n\t\t1c5f 0b47  NVMe SSD PBlaze6 6630 7680G 2.5\" U.2\n\t\t1c5f 1320  NVMe SSD PBlaze6 6531 1920G AIC\n\t\t1c5f 1321  NVMe SSD PBlaze6 6531 1920G 2.5\" U.2\n\t\t1c5f 1330  NVMe SSD PBlaze6 6531 3840G AIC\n\t\t1c5f 1331  NVMe SSD PBlaze6 6531 3840G 2.5\" U.2\n\t\t1c5f 1340  NVMe SSD PBlaze6 6531 7680G AIC\n\t\t1c5f 1341  NVMe SSD PBlaze6 6531 7680G 2.5\" U.2\n\t\t1c5f 1421  NVMe SSD PBlaze6 6541 1920G 2.5\" U.2\n\t\t1c5f 1427  NVMe SSD PBlaze6 6641 1920G 2.5\" U.2(dual port)\n\t\t1c5f 1431  NVMe SSD PBlaze6 6541 3840G 2.5\" U.2\n\t\t1c5f 1437  NVMe SSD PBlaze6 6641 3840G 2.5\" U.2(dual port)\n\t\t1c5f 1441  NVMe SSD PBlaze6 6541 7680G 2.5\" U.2\n\t\t1c5f 1447  NVMe SSD PBlaze6 6641 7680G 2.5\" U.2(dual port)\n\t\t1c5f 4b20  NVMe SSD PBlaze6 6536 1600G AIC\n\t\t1c5f 4b21  NVMe SSD PBlaze6 6536 1600G 2.5\" U.2\n\t\t1c5f 4b25  NVMe SSD PBlaze6 6536 1600G E1.S\n\t\t1c5f 4b27  NVMe SSD PBlaze6 6636 1600G 2.5\" U.2\n\t\t1c5f 4b30  NVMe SSD PBlaze6 6536 3200G AIC\n\t\t1c5f 4b31  NVMe SSD PBlaze6 6536 3200G 2.5\" U.2\n\t\t1c5f 4b35  NVMe SSD PBlaze6 6536 3200G E1.S\n\t\t1c5f 4b37  NVMe SSD PBlaze6 6636 3200G 2.5\" U.2\n\t\t1c5f 4b40  NVMe SSD PBlaze6 6536 6400G AIC\n\t\t1c5f 4b41  NVMe SSD PBlaze6 6536 6400G 2.5\" U.2\n\t\t1c5f 4b47  NVMe SSD PBlaze6 6636 6400G 2.5\" U.2\n\t\t1c5f 5320  NVMe SSD PBlaze6 6537 1600G AIC\n\t\t1c5f 5321  NVMe SSD PBlaze6 6537 1600G 2.5\" U.2\n\t\t1c5f 5330  NVMe SSD PBlaze6 6537 3200G AIC\n\t\t1c5f 5331  NVMe SSD PBlaze6 6537 3200G 2.5\" U.2\n\t\t1c5f 5340  NVMe SSD PBlaze6 6537 6400G AIC\n\t\t1c5f 5341  NVMe SSD PBlaze6 6537 6400G 2.5\" U.2\n\t\t1c5f 5421  NVMe SSD PBlaze6 6547 1600G 2.5\" U.2\n\t\t1c5f 5427  NVMe SSD PBlaze6 6647 1600G 2.5\" U.2(dual port)\n\t\t1c5f 5431  NVMe SSD PBlaze6 6547 3200G 2.5\" U.2\n\t\t1c5f 5437  NVMe SSD PBlaze6 6647 3200G 2.5\" U.2(dual port)\n\t\t1c5f 5441  NVMe SSD PBlaze6 6547 6400G 2.5\" U.2\n\t\t1c5f 5447  NVMe SSD PBlaze6 6647 6400G 2.5\" U.2(dual port)\n\t0027  PBlaze7 7A40/7A46 NVMe SSD\n\t\t1c5f 1421  NVMe SSD PBlaze7 7A40 1920G 2.5\" U.2\n\t\t1c5f 1431  NVMe SSD PBlaze7 7A40 3840G 2.5\" U.2\n\t\t1c5f 1441  NVMe SSD PBlaze7 7A40 7680G 2.5\" U.2\n\t\t1c5f 5431  NVMe SSD PBlaze7 7A46 3200G 2.5\" U.2\n\t\t1c5f 5441  NVMe SSD PBlaze7 7A46 6400G 2.5\" U.2\n\t003d  PBlaze5 920/926\n\t\t1c5f 0a30  NVMe SSD PBlaze5 920 3840G AIC\n\t\t1c5f 0a31  NVMe SSD PBlaze5 920 3840G 2.5\" U.2\n\t\t1c5f 0a40  NVMe SSD PBlaze5 920 7680G AIC\n\t\t1c5f 0a41  NVMe SSD PBlaze5 920 7680G 2.5\" U.2\n\t\t1c5f 4a30  NVMe SSD PBlaze5 926 3200G AIC\n\t\t1c5f 4a31  NVMe SSD PBlaze5 926 3200G 2.5\" U.2\n\t\t1c5f 4a40  NVMe SSD PBlaze5 926 6400G AIC\n\t\t1c5f 4a41  NVMe SSD PBlaze5 926 6400G 2.5\" U.2\n\t003e  PBlaze6 6920/6930\n\t\t1c5f 0a31  NVMe SSD PBlaze6 6920 3840GB 2.5\" U.2\n\t\t1c5f 0a41  NVMe SSD PBlaze6 6920 7680GB 2.5\" U.2\n\t\t1c5f 0b31  NVMe SSD PBlaze6 6930 3840GB 2.5\" U.3\n\t\t1c5f 0b41  NVMe SSD PBlaze6 6930 7680GB 2.5\" U.3\n\t\t1c5f 0b51  NVMe SSD PBlaze6 6930 15360GB 2.5\" U.3\n\t\t1c5f 0b61  NVMe SSD PBlaze6 6930 30720GB 2.5\" U.3\n\t\t1c5f 4a31  NVMe SSD PBlaze6 6920 3200GB 2.5\" U.2\n\t\t1c5f 4a41  NVMe SSD PBlaze6 6920 6400GB 2.5\" U.2\n\t\t1c5f 4b41  NVMe SSD PBlaze6 6936 6400GB 2.5\" U.3\n\t\t1c5f 4b51  NVMe SSD PBlaze6 6936 12800GB 2.5\" U.3\n\t\t1c5f 4b61  NVMe SSD PBlaze6 6936 25600GB 2.5\" U.3\n\t003f  PBlaze7 7940/7946 NVMe SSD\n\t\t1c5f 0431  NVMe SSD PBlaze7 7940 3840G 2.5\" U.2\n\t\t1c5f 0441  NVMe SSD PBlaze7 7940 7680G 2.5\" U.2\n\t\t1c5f 0451  NVMe SSD PBlaze7 7940 15360G 2.5\" U.2\n\t\t1c5f 0c31  NVMe SSD PBlaze7 7940 3840G 2.5\" U.2\n\t\t1c5f 0c41  NVMe SSD PBlaze7 7940 7680G 2.5\" U.2\n\t\t1c5f 0c51  NVMe SSD PBlaze7 7940 15360G 2.5\" U.2\n\t\t1c5f 0c61  NVMe SSD PBlaze7 7940 30720G 2.5\" U.2\n\t\t1c5f 1430  NVMe SSD PBlaze7 7940 3840G AIC\n\t\t1c5f 1431  NVMe SSD PBlaze7 7940 3840G 2.5\" U.2\n\t\t1c5f 1435  NVMe SSD PBlaze7 7940 3840G E1.S\n\t\t1c5f 1440  NVMe SSD PBlaze7 7940 7680G AIC\n\t\t1c5f 1441  NVMe SSD PBlaze7 7940 7680G 2.5\" U.2\n\t\t1c5f 1445  NVMe SSD PBlaze7 7940 7680G E1.S\n\t\t1c5f 1450  NVMe SSD PBlaze7 7940 15360G AIC\n\t\t1c5f 1451  NVMe SSD PBlaze7 7940 15360G 2.5\" U.2\n\t\t1c5f 4431  NVMe SSD PBlaze7 7946 3200G 2.5\" U.2\n\t\t1c5f 4441  NVMe SSD PBlaze7 7946 6400G 2.5\" U.2\n\t\t1c5f 4451  NVMe SSD PBlaze7 7946 12800G 2.5\" U.2\n\t\t1c5f 4c31  NVMe SSD PBlaze7 7946 3200G 2.5\" U.2\n\t\t1c5f 4c41  NVMe SSD PBlaze7 7946 6400G 2.5\" U.2\n\t\t1c5f 4c51  NVMe SSD PBlaze7 7946 12800G 2.5\" U.2\n\t\t1c5f 5430  NVMe SSD PBlaze7 7946 3200G AIC\n\t\t1c5f 5431  NVMe SSD PBlaze7 7946 3200G 2.5\" U.2\n\t\t1c5f 5435  NVMe SSD PBlaze7 7946 3200G E1.S\n\t\t1c5f 5440  NVMe SSD PBlaze7 7946 6400G AIC\n\t\t1c5f 5441  NVMe SSD PBlaze7 7946 6400G 2.5\" U.2\n\t\t1c5f 5445  NVMe SSD PBlaze7 7946 6400G E1.S\n\t\t1c5f 5450  NVMe SSD PBlaze7 7946 12800G AIC\n\t\t1c5f 5451  NVMe SSD PBlaze7 7946 12800G 2.5\" U.2\n\t\t1ea0 2100  TP2510 Series U.2 NVMe Datacenter SSD(3.84TB)\n\t\t1ea0 2101  TP2511 Series U.2 NVMe Datacenter SSD(3.84TB)\n\t\t1ea0 2110  TP2510 Series E3.S NVMe Datacenter SSD(3.84TB)\n\t\t1ea0 2111  TP2511 Series E3.S NVMe Datacenter SSD(3.84TB)\n\t\t1ea0 2200  TP2510 Series U.2 NVMe Datacenter SSD(7.68TB)\n\t\t1ea0 2201  TP2511 Series U.2 NVMe Datacenter SSD(7.68TB)\n\t\t1ea0 2202  TP2310 Series U.2 NVMe Datacenter SSD(7.68TB)\n\t\t1ea0 2210  TP2510 Series E3.S NVMe Datacenter SSD(7.68TB)\n\t\t1ea0 2211  TP2511 Series E3.S NVMe Datacenter SSD(7.68TB)\n\t\t1ea0 2301  TP2511 Series U.2 NVMe Datacenter SSD (15.36TB)\n\t0540  PBlaze4 NVMe SSD\n\t0550  PBlaze5 700/900\n\t0555  PBlaze5 510/516\n\t0557  PBlaze5 910/916\n1c63  Science and Research Centre of Computer Technology (JSC \"NICEVT\")\n\t0008  K1927BB1Ya [EC8430] Angara Interconnection Network Adapter\n# Other World Computing\n1c7a  OWC\n1c7e  TTTech Computertechnik AG\n\t0200  zFAS Debug Port\n1c7f  Elektrobit Austria GmbH\n\t0300  EBX3\n\t5100  EB5100\n\t7200  EB 7200 Automotive logging and replay card\n# This is a EB7200 card compatibly with a EB PCIe driver\n\t7201  EB7200 with EB PCIe Driver Interface\n\t7211  EB7210\n1c8a  TSF5 Corporation\n\t0001  Hunter PCI Express\n1c8c  Mobiveil, Inc.\n1cb0  Shannon Systems\n\t8266  SP4 Series SSD\n\t\t1cb0 2021  SP4 Series OCS U.2 SSD\n\t\t1cb0 2121  SP4 Series ZNS U.2 SSD\n\t\t1cb0 2f21  SP4E Series NVMe U.2 SSD(1920/3840/7680GB)\n\t\t1cb0 2f22  SP4X Series NVMe U.2 SSD(1600/3200/6400GB)\n\td000  Venice NVMe SSD\n\t\t1cb0 2010  Venice-E Series OCS U.2\n\t\t1cb0 2011  Venice Series OCS U.2\n\t\t1cb0 2012  Venice-X Series OCS U.2\n# Venice-E Series NVMe U.2 SSD(1.92T/3.84T/7.68T)\n\t\t1cb0 2f10  Venice-E Series NVMe U.2\n# Venice Series NVMe U.2 SSD(2T/4T/8T)\n\t\t1cb0 2f11  Venice Series NVMe U.2\n# Venice-X Series NVMe U.2 SSD(1.6T/3.2T/6.4T)\n\t\t1cb0 2f12  Venice-X Series NVMe U.2\n\t\t1cb0 a010  Venice-E Series OCS AIC\n\t\t1cb0 a012  Venice-X Series OCS AIC\n# Venice-E Series NVMe AIC SSD(1.92T/3.84T/7.68T)\n\t\t1cb0 af10  Venice-E Series NVMe AIC\n# Venice-X Series NVMe AIC SSD(1.6T/3.2T/6.4T)\n\t\t1cb0 af12  Venice-X Series NVMe AIC\n1cb1  Collion UG & Co.KG\n1cb5  Focusrite Audio Engineering Ltd\n\t0002  Clarett\n1cb8  Dawning Information Industry Co., Ltd.\n1cc1  ADATA Technology Co., Ltd.\n\t1202  IM2P32A8 NVMe SSD (DRAM-less)\n\t1602  LEGEND 900 NVMe SSD (DRAM-less)\n# SX6000LNP\n\t2263  XPG SX6000 Lite NVMe SSD (DRAM-less)\n\t32a8  SM2P32A8 NVMe SSD (DRAM-less)\n\t33f3  IM2P33F3 NVMe SSD (DRAM-less)\n\t33f4  IM2P33F4 NVMe SSD (DRAM-less)\n\t33f8  IM2P33F8 series NVMe SSD (DRAM-less)\n\t41c3  SM2P41C3 NVMe SSD (DRAM-less)\n\t41c8  SM2P41C8 NVMe SSD (DRAM-less)\n\t5236  XPG GAMMIX S70 BLADE NVMe SSD\n\t5350  XPG GAMMIX S50, S50 Lite NVMe SSD\n# PREMIUM NVMe SSD for PlayStation 5\n\t5370  GAMMIX S70 BLADE, PS5 PREMIUM NVMe SSD\n\t5762  FALCON, GAMMIX S41, SPECTRIX S40G NVMe SSD (DRAM-less)\n\t5763  XPG GAMMIX S5 NVMe SSD (DRAM-less)\n\t5766  XPG GAMMIXS1 1L, XPG GAMMIX S5, LEGEND 710 / 740, SWORDFISH NVMe SSD (DRAM-less)\n\t5772  LEGEND 850 LITE NVMe SSD (DRAM-less)\n\t612a  LEGEND 750 NVMe SSD (DRAM-less)\n\t613a  ATOM 50, LEGEND 840 NVMe SSD (DRAM-less)\n\t621a  LEGEND 850 NVMe SSD (DRAM-less)\n\t622a  LEGEND 960 NVMe SSD\n\t623a  LEGEND 710 NVMe SSD (DRAM-less)\n\t624a  LEGEND 700, XPG GAMMIX S20 NVMe SSD (DRAM-less)\n\t625a  LEGEND 850 LITE NVMe SSD (DRAM-less)\n# 1TB\n\t627a  LEGEND 800 NVMe SSD (DRAM-less)\n# 500GB\n\t628a  LEGEND 800 NVMe SSD (DRAM-less)\n\t631a  LEGEND 970 NVMe SSD\n\t633a  LEGEND 900 NVMe SSD (DRAM-less)\n\t634c  LEGEND 820 NVMe SSD (DRAM-less)\n\t635a  XPG GAMMIX S60 NVMe SSD (DRAM-less)\n\t642a  XPG GAMMIX S50 CORE NVMe SSD (DRAM-less)\n\t8201  XPG SX8200 Pro PCIe Gen3x4 M.2 2280 Solid State Drive\n1cc4  Shenzhen Unionmemory Information System Ltd.\n\t1203  NVMe SSD Controller UHXXXa series\n\t\t1cc4 a121  NVMe SSD UHXXXa series U.2 960GB\n\t\t1cc4 a122  NVMe SSD UHXXXa series U.2 1920GB\n\t\t1cc4 a123  NVMe SSD UHXXXa series U.2 3840GB\n\t\t1cc4 a124  NVMe SSD UHXXXa series U.2 7680GB\n\t\t1cc4 a125  NVMe SSD UHXXXa series U.2 15360GB\n\t\t1cc4 a211  NVMe SSD UHXXXa series U.2 800GB\n\t\t1cc4 a212  NVMe SSD UHXXXa series U.2 1600GB\n\t\t1cc4 a213  NVMe SSD UHXXXa series U.2 3200GB\n\t\t1cc4 a214  NVMe SSD UHXXXa series U.2 6400GB\n\t\t1cc4 e122  NVMe SSD UH711a series U.2 1920GB\n\t\t1cc4 e123  NVMe SSD UH711a series U.2 3840GB\n\t\t1cc4 e124  NVMe SSD UH711a series U.2 7680GB\n\t17a9  RPITJ1TBVME2HWD NVMe SSD 1024GB\n\t17aa  AH631 PCIe 3.0 NVMe SSD 512GB\n\t17ab  AH631 PCIe 3.0 NVMe SSD 256GB\n\t2263  AM611 PCIe 3.0 x2 NVMe SSD 256GB\n\t5008  AM610 PCIe 3.0 x2 NVMe SSD 128GB, 256GB\n\t5012  AH530 PCIe 3.0 NVMe SSD 512GB\n\t5212  AM521 PCIe 3.0 NVMe SSD 256GB\n\t6201  AM620 PCIe 3.0 NVMe SSD 128GB\n\t6202  AM620 PCIe 3.0 NVMe SSD 256GB\n\t6203  AM620 PCIe 3.0 NVMe SSD 512GB\n\t6204  AM620 PCIe 3.0 NVMe SSD 1024GB\n\t6302  AM630 PCIe 4.0 NVMe SSD 256GB\n\t6303  AM630 PCIe 4.0 x4 NVMe SSD Controller\n\t6304  AM630 PCIe 4.0 NVMe SSD 1024GB\n\t634c  LEGEND 820 NVMe SSD (DRAM-less)\n\t635a  GAMMIX S60 NVMe SSD (DRAM-less)\n\t660c  AH660 PCIe 4.0 NVMe SSD\n\t6a01  AM620 PCIe 3.0 NVMe SSD 128GB\n\t6a02  AM6A0 PCIe 4.0 NVMe SSD 256GB\n\t6a03  RPETJ512MKP1QDQ PCIe 4.0 NVMe SSD 512GB (DRAM-less)\n\t6a04  AM6A0 PCIe 4.0 NVMe SSD 1024GB (DRAM-less)\n\t6a13  RPJYJ512MKN1QWQ PCIe 4.0 NVMe SSD 512GB (DRAM-less)\n\t6a14  AM6A1 PCIe 4.0 NVMe SSD 1024GB (DRAM-less)\n\t6b04  AM6B0 PCIe 4.0 NVMe SSD\n\t6b13  AM6B1 PCIe 4.0 NVMe SSD 512GB (DRAM-less)\n\t6b14  RPJYJ1T24MLR1HWY PCIe 4.0 NVMe SSD 1024GB (DRAM-less)\n\t8030  NVMe SSD Controller UH8X2X/UH7X2X series\n\t\t1cc4 1122  NVMe SSD UH812a U.2 1.92TB\n\t\t1cc4 1123  NVMe SSD UH812a U.2 3.84TB\n\t\t1cc4 1124  NVMe SSD UH812a U.2 7.68TB\n\t\t1cc4 1125  NVMe SSD UH812a U.2 15.36TB\n\t\t1cc4 1222  NVMe SSD UH812a E3.S 1.92TB\n\t\t1cc4 1223  NVMe SSD UH812a E3.S 3.84TB\n\t\t1cc4 1224  NVMe SSD UH812a E3.S 7.68TB\n\t\t1cc4 1225  NVMe SSD UH812a E3.S 15.36TB\n\t\t1cc4 2112  NVMe SSD UH832a U.2 1.6TB\n\t\t1cc4 2113  NVMe SSD UH832a U.2 3.2TB\n\t\t1cc4 2114  NVMe SSD UH832a U.2 6.4TB\n\t\t1cc4 2115  NVMe SSD UH832a U.2 12.8TB\n\t\t1cc4 2212  NVMe SSD UH832a E3.S 1.6TB\n\t\t1cc4 2213  NVMe SSD UH832a E3.S 3.2TB\n\t\t1cc4 2214  NVMe SSD UH832a E3.S 6.4TB\n\t\t1cc4 2215  NVMe SSD UH832a E3.S 12.8TB\n\t\t1cc4 3122  NVMe SSD UH712a U.2 1.92TB\n\t\t1cc4 3123  NVMe SSD UH712a U.2 3.84TB\n\t\t1cc4 3124  NVMe SSD UH712a U.2 7.68TB\n\t\t1cc4 3125  NVMe SSD UH712a U.2 15.36TB\n\t\t1ea0 4124  NVMe SSD TP3511 U.2 7.68TB\n\t\t1ea0 4125  NVMe SSD TP3511 U.2 15.36TB\n\t\t1ea0 4224  NVMe SSD TP3511 E3.S 7.68TB\n\t\t1ea0 4225  NVMe SSD TP3511 E3.S 15.36TB\n1cc5  Embedded Intelligence, Inc.\n\t0100  PCIe-CAN-02 Dual CAN bus (9-pin male). PCI Express x1.\n\t0101  PCIe-CAN-01 Single CAN bus (9-pin male). PCI Express x1.\n1cc7  Radian Memory Systems Inc.\n\t0200  RMS-200 PCIe NVMe SSD\n\t0250  RMS-250 U.2 NVMe SSD\n1ccf  Zoom Corporation\n\t0001  TAC-2 Thunderbolt Audio Converter\n1cd2  Seskion GmbH\n\t0301  Simulyzer-RT CompactPCI Serial DIO-1 card\n\t0302  Simulyzer-RT CompactPCI Serial PSI5-ECU-1 card\n\t0303  Simulyzer-RT CompactPCI Serial PSI5-SIM-1 card\n\t0304  Simulyzer-RT CompactPCI Serial PWR-ANA-1 card\n\t0305  Simulyzer-RT CompactPCI Serial CAN-1 card\n# supports 8x CAN (-FD) interfaces\n\t0306  Simulyzer-RT CompactPCI Serial CAN-2 card (CAN-FD)\n\t0307  Simulyzer-RT CompactPCI Serial DIO-2 card [Xilinx Zynq UltraScale+]\n\t0308  Simulyzer-RT CompactPCI Serial SENT-DIO-2 card\n# 8-Channel ADC\n\t0309  Simulyzer-RT CompactPCI Serial SN-ADC card\n1cd7  Nanjing Magewell Electronics Co., Ltd.\n\t0002  Pro Capture AIO\n\t0010  Pro Capture Endpoint\n\t0014  PRO CAPTURE AIO 4K PLUS\n\t0015  Pro Capture HDMI 4K +\n\t0017  PRO CAPTURE AIO 4K\n\t0051  Eco Capture Dual HDMI M.2\n\t0052  Eco Capture HDMI 4K M.2\n\t0053  Eco Capture Dual SDI M.2\n\t0054  Eco Capture Quad SDI M.2\n1cdd  secunet Security Networks AG\n1ce4  Exablaze\n\t0001  ExaNIC X4\n\t0002  ExaNIC X2\n\t0003  ExaNIC X10\n\t0004  ExaNIC X10-GM\n\t0005  ExaNIC X40\n\t0006  ExaNIC X10-HPT\n\t0007  ExaNIC X40\n\t0008  ExaNIC V5P\n\t0009  ExaNIC X25\n\t000a  ExaNIC X100\n\t000b  ExaNIC V9P\n\t000c  ExaNIC V9P-3\n\t0100  ExaDISK FX1\n1cf0  Akitio\n1cf2  ZTE Corp.\n\t8036  DH Switch\n\t8040  NEO X510 SRIOV PF Ethernet Controller\n\t8041  NEO X510 SRIOV VF Ethernet Controller Virtual Function\n\t8042  NX I512 VDPA VF Ethernet Controller Virtual Function\n\t8044  NEO X510 MPF Ethernet Controller\n\t8045  NX I512 BOND PF Ethernet Controller\n\t8046  NX I512 OVS PF Ethernet Controller\n\t8047  NEO X510 BOND PF Ethernet Controller\n\t8048  NEO X510 OVS PF Ethernet Controller\n\t8049  NX E312 SRIOV RDMA PF Ethernet Controller\n\t804a  NEO X512 NOF PF Ethernet Controller\n\t804b  NEO X512 SRIOV PF Ethernet Controller\n\t804c  NEO X512 INITIATOR1 PF Ethernet Controller\n\t804d  NEO X512 INITIATOR2 PF Ethernet Controller\n\t804e  NX I512 UPF PF Ethernet Controller\n\t804f  NX I512 UPF VF Ethernet Controller Virtual Function\n\t8060  NX E312 SRIOV RDMA VF Ethernet Controller Virtual Function\n\t8061  NX E310 SRIOV PF Ethernet Controller\n\t8062  NX E310 SRIOV VF Ethernet Controller Virtual Function\n\t8063  NX I510 BOND PF Ethernet Controller\n\t8064  NX I510 OVS PF Ethernet Controller\n\t8065  NX I510 VDPA VF Ethernet Controller Virtual Function\n\t8066  NX I511 SRIOV PF Ethernet Controller\n\t8067  NX I511 OVS PF Ethernet Controller\n\t8068  NX I511 VDPA VF Ethernet Controller Virtual Function\n\t806b  NEO X512 RDMA PF Ethernet Controller\n\t806c  NEO X512 RDMA VF Ethernet Controller Virtual Function\n\t806d  NX I512 RDMA PF Ethernet Controller\n\t806e  NX I512 RDMA VF Ethernet Controller Virtual Function\n\t806f  NX I512 UPF BOND PF Ethernet Controller\n\t807d  NX E312S SRIOV PF Ethernet Controller\n\t807e  NX E316 SRIOV PF Ethernet Controller\n\t807f  NX E316 SRIOV VF Ethernet Controller Virtual Function\n\t8080  NX E311 SRIOV PF Ethernet Controller\n\t8081  NX E311 SRIOV VF Ethernet Controller Virtual Function\n\t8082  NX I511 SRIOV PF Ethernet Controller\n\t8083  NX I511 SRIOV VF Ethernet Controller Virtual Function\n\t8084  NX E310 RDMA PF Ethernet Controller\n\t8085  NX E310 RDMA VF Ethernet Controller Virtual Function\n\t8086  NX I510 SRIOV SEC PF Ethernet Controller\n\t8087  NX I510 SRIOV SEC VF Ethernet Controller Virtual Function\n\t8088  NX E312S SRIOV VF Ethernet Controller Virtual Function\n\t8089  NEO X512 SRIOV PF Ethernet Controller\n\t808a  NEO X512 SRIOV PF Ethernet Controller\n\t80a0  NX E312 PF Ethernet Controller\n\t80a1  NX E312 VF Ethernet Controller Virtual Function\n\t80a2  NX E312S_D SRIOV PF Ethernet Controller\n\t80a3  NX E312S_D SRIOV VF Ethernet Controller Virtual Function\n\t80a4  NX I512 OFFLOAD PF Ethernet Controller\n1cf7  Subspace Dynamics\n1cfa  Corsair Memory, Inc\n1cfd  Mangstor\n\t6300  MX6300 series PCIe x8 NVMe SSD\n1d00  Pure Storage\n1d05  AIstone Global Limited\n\t6027  B760-N2D5 motherboard\n\t7001  H610-N2 motherboard\n1d0f  Amazon.com, Inc.\n\t7064  NeuronDevice (Inferentia)\n\t7164  NeuronDevice (Trainium)\n\t\t1d0f 0000  Trainium\n\t7264  NeuronDevice (Inferentia2)\n\t7364  NeuronDevice (Trainium2)\n\t8061  NVMe EBS Controller\n\tcd01  NVMe SSD Controller\n\tec20  Elastic Network Adapter (ENA)\n\tefa0  Elastic Fabric Adapter (EFA)\n\tefa1  Elastic Fabric Adapter (EFA)\n\tefa2  Elastic Fabric Adapter (EFA)\n\tefa3  Elastic Fabric Adapter (EFA)\n1d17  Zhaoxin\n\t070f  ZX-100 PCI Express Root Port\n\t0710  ZX-100/ZX-200 PCI Express Root Port\n\t0711  ZX-100/ZX-200 PCI Express Root Port\n\t0712  ZX-100/ZX-200 PCI Express Root Port\n\t0713  ZX-100/ZX-200 PCI Express Root Port\n\t0714  ZX-100/ZX-200 PCI Express Root Port\n\t0715  ZX-100/ZX-200 PCI Express Root Port\n\t0716  ZX-D PCI Express Root Port\n\t0717  KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 PCI Express Root Port\n\t0718  KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 PCI Express Root Port\n\t0719  KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 PCI Express Root Port\n\t071a  KX-5000/KX-6000/KX-6000G/KH-40000 PCI Express Root Port\n\t071b  KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 PCI Express Root Port\n\t071c  KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 PCI Express Root Port\n\t071d  KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 PCI Express Root Port\n\t071e  KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 PCI Express Root Port\n\t071f  ZX-200 Upstream Port of PCI Express Switch\n\t0720  ZX-200 PCIE RC6 controller\n\t0721  ZX-200 Downstream Port of PCI Express Switch\n\t0722  ZX-200 PCIE P2C bridge\n\t0731  KH-40000 PCI Express Root Port\n\t0732  KH-40000/KX-7000 PCI Express Root Port\n\t0733  KX-7000 PCIE Express Root Port\n\t0734  KX-7000 PCIE Express Root Port\n\t0735  KX-7000 PCIE Express Root Port\n\t0736  KX-7000 PCIE Express Root Port\n\t0737  KX-7000 PCIE Express Root Port\n\t0738  KX-7000 PCIE Express Root Port\n\t0739  KX-7000 PCIE Express Root Port\n\t073a  KX-7000 PCIE Express Root Port\n\t073b  KX-7000 PCIE Express Root Port\n\t1000  ZX-D Standard Host Bridge\n\t1001  ZX-D/ZX-E/KH-40000/KX-7000 Miscellaneous Bus\n\t1003  ZX-E Standard Host Bridge\n\t1005  KH-40000 Standard Host Bridge\n\t1006  KX-6000G Standard Host Bridge\n\t1007  KX-7000 Standard Host Bridge\n\t3001  ZX-100 Standard Host Bridge\n\t300a  ZX-100 Miscellaneous Bus\n\t3038  ZX-100/ZX-200/KX-6000/KX-6000G/KH-40000/KX-7000 Standard Universal PCI to USB Host Controller\n\t3104  ZX-100/ZX-200/KX-6000/KX-6000G/KH-40000/KX-7000 Standard Enhanced PCI to USB Host Controller\n\t31b0  ZX-100/KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 Standard Host Bridge\n\t31b1  ZX-100/KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 Standard Host Bridge\n\t31b2  ZX-100/KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 DRAM Controller\n\t31b3  ZX-100/KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 Power Management Controller\n\t31b4  ZX-100/KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 I/O APIC\n\t31b5  ZX-100/KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 Scratch Device\n\t31b7  ZX-100/KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 Standard Host Bridge\n\t31b8  ZX-100/ZX-D PCI to PCI Bridge\n\t3200  KX-7000 Host Bridge\n\t3288  ZX-100/KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 High Definition Audio Controller\n\t345b  ZX-100/KX-5000/KX-6000/KX-6000G/KH-40000 Miscellaneous Bus\n\t3a02  ZX-100 C-320 GPU\n\t3a03  ZX-D C-860 GPU\n\t3a04  KX-6000 C-960 GPU\n\t3a05  KX-7000 C-1190 GPU\n\t3b01  KH-40000 OPI Controller\n\t3b02  KH-40000 OPI Controller\n\t3b03  KH-40000 OPI Controller\n\t3b04  KH-40000 OPI Controller\n\t3c00  KH-40000/KX-7000 DRAM Controller\n\t3c02  KX-6000G DRAM Controller\n\t3d01  KX-6000G C-1080 GPU\n\t9002  ZX-100/ZX-200/KH-40000/KX-7000 EIDE Controller\n\t9003  ZX-100/KX-6000/KX-6000G EIDE Controller\n\t9043  KX-6000G/KH-40000/KX-7000 RAID Controller\n\t9045  ZX-100/ZX-D/ZX-E RAID Accelerator 0\n\t9046  ZX-D/ZX-E RAID Accelerator 1\n\t9083  ZX-100/ZX-200/KX-6000/KX-6000G/KH-40000/KX-7000 StorX AHCI Controller\n\t9084  ZX-100 StorX AHCI Controller\n\t9100  ZX-200 Cross bus\n\t9101  ZX-200 Traffic Controller\n\t9141  ZX-100 High Definition Audio Controller\n\t9142  ZX-D High Definition Audio Controller\n\t9144  ZX-E High Definition Audio Controller\n\t9145  KX-6000G High Definition Audio Controller\n\t9146  KX-7000 High Definition Audio Controller\n\t9180  ZX-200 Networking Gigabit Ethernet Adapter\n\t91c1  KH-40000 ZPI Controller\n\t91c2  KH-40000 ZPI Controller\n\t9202  ZX-100 USB eXtensible Host Controller\n\t9203  ZX-200 USB eXtensible Host Controller\n\t9204  KX-6000/KX-6000G/KX-7000 USB3 xHCI Host Controller\n\t9205  KH-40000 USB eXtensible Host Controller\n\t9206  KX-7000 USB4 Contoller\n\t9286  ZX-D eMMC Host Controller\n\t9300  ZX-100/KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 eSPI Host Controller\n\t9500  KX-7000 I2S Controller\n\t9501  KX-7000 I2S Controller\n\t95d0  ZX-100 Universal SD Host Controller\n\tf410  ZX-100/KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 PCI Com Port\n1d18  RME\n\t0001  Fireface UFX+\n# acquired by Intel\n1d1c  Barefoot Networks, Inc.\n\t0001  Tofino 1\n\t0010  Tofino 1\n\t0100  Tofino 2\n\t0110  Tofino 2\n1d1d  CNEX Labs\n\t1f1f  QEMU NVM Express LightNVM Controller\n\t2807  8800 series NVMe SSD\n# CEM Solutions Pvt. Ltd.\n1d21  Allo\n1d22  Baidu Technology\n\t1380  Cloud Storage Device\n\t3684  Kunlun AI Accelerator\n\t3685  Kunlun2 AI Accelerator [VF]\n1d26  Kalray Inc.\n\t0040  Turbocard2 Accelerator\n\t0080  Open Network Interface Card 80G\n\t00c0  Turbocard3 Accelerator\n\t0140  Open Network Interface Card 40G\n\te004  AB01/EMB01 Development Board\n1d2a  KAYA Instruments\n\t1000  Frame grabber\n1d37  NovaSparks\n\t0013  PM3\n\t0014  PM4\n\t0015  PM4edge\n\t0016  PM4edge User Device\n1d40  Techman Electronics (Changshu) Co., Ltd.\n\t5501  XC100C55-xxxx NVME SSD\n\t5c01  XC100C5C-xxxx, XC100E5C-xxxx NVME SSD\n\tb100  PV100C55-xxxx NVME SSD\n1d44  DPT\n\ta400  PM2x24/PM3224\n1d49  Lenovo\n1d4c  Diamanti, Inc.\n1d5c  Fantasia Trading LLC\n1d61  Technobox, Inc.\n1d62  Nebbiolo Technologies\n1d65  Imagine Communications Corp.\n\t04de  Taurus/McKinley\n# nee Celeno Communications\n1d69  Renesas Electronics Corp.\n\t2432  CL2432\n\t2440  CL2440\n\t8000  CL80x0 Wireless Network Adapter\n\t8046  CL8046 Wireless Network Adapter\n1d6a  Aquantia Corp.\n\t0001  AQC107 NBase-T/IEEE 802.3bz Ethernet Controller [AQtion]\n\t\t4c52 6880  LREC6880BT Single-port 10Gb Ethernet Network Adapter\n\t00b1  AQtion AQC100 NBase-T/IEEE 802.3an Ethernet Controller [Atlantic 10G]\n\t\t1043 874a  XG-C100F 10GbE SFP+ Ethernet Adapter\n\t00c0  Antigua NBase-T/IEEE 802.3an Ethernet Controller - Engineering Sample\n\t04c0  AQtion AQC113 NBase-T/IEEE 802.3an Ethernet Controller [Antigua 10G]\n\t\t4c52 1053  LRES1053PT Quad-port 10Gb Ethernet Network Adapter\n\t\t4c52 2051  LRES2051PT Single-port 10Gb Ethernet Network Adapter\n\t07b1  AQtion AQC107 NBase-T/IEEE 802.3an Ethernet Controller [Atlantic 10G]\n# Older revision of QNAP QM2 M.2 2280 PCIe SSD & 10GbE Expansion Card\n\t\t1baa 07b1  QM2-2P10G1TA [QXG 10GbE Network Adapter]\n# Newer revision of QNAP QM2 M.2 2280 PCIe SSD & 10GbE Expansion Card\n\t\t1baa 07b2  QM2-2P10G1TA [QM2 Expansion Adapter]\n\t\t4c52 6880  LREC6880BT Single-port 10Gb Ethernet Network Adapter\n\t08b1  AQC108 NBase-T/IEEE 802.3bz Ethernet Controller [AQtion]\n\t11b1  AQC111 NBase-T/IEEE 802.3bz Ethernet Controller [AQtion]\n\t12b1  AQC112 NBase-T/IEEE 802.3bz Ethernet Controller [AQtion]\n\t12c0  AQtion AQC115C NBase-T/IEEE 802.3bz Ethernet Controller [Antigua 2.5G]\n\t14c0  AQC113C NBase-T/IEEE 802.3an Ethernet Controller [Marvell Scalable mGig]\n\t80b1  AQtion AQC100S NBase-T/IEEE 802.3an Ethernet Controller [Atlantic 10G]\n\t87b1  AQtion AQC107S NBase-T/IEEE 802.3an Ethernet Controller [Atlantic 10G]\n\t\t1c7a de2b  Thunderbolt 10G Ethernet Adapter\n\t93c0  AQtion AQC114CS NBase-T/IEEE 802.3bz Ethernet Controller [Antigua 5G]\n\t94c0  AQtion AQC113CS NBase-T/IEEE 802.3an Ethernet Controller [Antigua 10G]\n\t\t1043 87f5  ProArt X570-CREATOR WIFI\n\t\t1043 8812  ASUS XG-C100C 10G PCI-E Network Adapter\n\td107  AQtion AQC107 NBase-T/IEEE 802.3an Ethernet Controller [Atlantic 10G]\n\t\t1043 8741  XG-C100C\n\td108  AQC108 NBase-T/IEEE 802.3bz Ethernet Controller [AQtion]\n1d6c  Atomic Rules LLC\n\t1001  A5PL-E1\n\t1002  A5PL-E7\n\t1003  S5PEDS-AB\n\t1004  KC705-K325\n\t1005  ZC706-Z045\n\t1006  KCU105-KU040\n\t1007  XUSP3S-VU095 [Jasper]\n\t1008  XUSPL4-VU065 [Mustang UltraScale]\n\t1009  XUSPL4-VU3P [Mustang UltraScale+]\n\t100a  A10PL4-A10GX115\n\t100b  K35-2SFP\n\t100c  K35-4SFP\n\t100d  AR-ARKA-FX0 [Arkville 32B DPDK Data Mover]\n\t\t1d6c 2001  DPDK-Aware Virtual Function [Arkville VF]\n\t100e  AR-ARKA-FX1 [Arkville 64B DPDK Data Mover]\n\t\t1d6c 2001  DPDK-Aware Virtual Function [Arkville VF]\n\t100f  AR-ARKA-FX1 [Arkville 64B DPDK Data Mover for Versal]\n\t1010  AR-ARKA-FX1 [Arkville 64B DPDK Data Mover for Agilex]\n\t1011  AR-MAN-U50 [Manitou Class Accelerator for U50]\n\t1012  AR-MAN-U200 [Manitou Class Accelerator for U200]\n\t1013  AR-MAN-U250 [Manitou Class Accelerator for U250]\n\t1014  AR-MAN-U280 [Manitou Class Accelerator for U280]\n\t1015  AR-ARK-BBDEV-FX0 [Arkville 32B DPDK Baseband Device]\n\t1016  AR-ARK-BBDEV-FX1 [Arkville 64B DPDK Baseband Device]\n\t1017  AR-ARK-FX1 [Arkville 64B Multi-Homed Primary Endpoint]\n\t1018  AR-ARK-FX1 [Arkville 64B Multi-Homed Secondary Endpoint]\n\t1019  AR-ARK-FX1 [Arkville 64B Multi-Homed Tertiary Endpoint]\n\t101a  AR-ARK-SRIOV-FX0 [Arkville 32B Primary Physical Function]\n\t101b  AR-ARK-SRIOV-FX1 [Arkville 64B Primary Physical Function]\n\t101c  AR-ARK-SRIOV-VF [Arkville Virtual Function]\n\t101d  AR-ARK-NIC [Arkville ArkNIC Kernel Path Device]\n\t101e  AR-ARKA-FX1 [Arkville 64B DPDK Data Mover for Agilex R-Tile]\n\t101f  AR-TK242 [2x100GbE Packet Capture Device]\n\t1020  AR-GP-PF [General-Purpose Physical Function]\n\t1021  AR-MGMT-PF [Board-Generic Management Physical Function]\n\t1022  AR-ARKA-FX2 [Arkville 128B DPDK Data Mover for Agilex]\n\t1023  AR-BD-FX1 [BufferDirect Zero-Bounce Data Motion Endpoint]\n\t1024  AR-TK242 [2x10GbE Packet Capture Device]\n\t1025  AR-TK242-FX2 [2x100GbE Gen5 Packet Capture Device]\n\t1026  AR-TK242-FX2 [1x200GbE Gen5 Packet Capture Device]\n\t1027  AR-P2P-DBG [P2P Debug Function]\n\t1028  AR-P2P-ATR [P2P Actor Function]\n\t1029  AR-P2P-UTL [P2P Utility Function]\n\t102a  AR-TK242-FX2 [4x100GbE Gen5 Packet Capture-Replay Device]\n\t102b  AR-ARKV-FX1 [Arkville 128B DPDK Data Mover for Versal/CPM5]\n\t102c  AR-TK242-V80 [Gen5 PCAP Processor]\n\t4200  A5PL-E1-10GETI [10 GbE Ethernet Traffic Instrument]\n1d72  Xiaomi\n1d78  DERA Storage\n\t1512  TAI NVMe Controller\n\t\t1d78 2004  D5437 HHHL 2TB NVMe SSD\n\t\t1d78 2006  D5437 HHHL 4TB NVMe SSD\n\t\t1d78 2008  D5437 HHHL 8TB NVMe SSD\n\t\t1d78 2104  D5437 U.2 2TB NVMe SSD\n\t\t1d78 2106  D5437 U.2 4TB NVMe SSD\n\t\t1d78 2108  D5437 U.2 8TB NVMe SSD\n\t\t1d78 3003  D5457 HHHL 1.6TB NVMe SSD\n\t\t1d78 3005  D5457 HHHL 3.2TB NVMe SSD\n\t\t1d78 3007  D5457 HHHL 6.4TB NVMe SSD\n\t\t1d78 3103  D5457 U.2 1.6TB NVMe SSD\n\t\t1d78 3105  D5457 U.2 3.2TB NVMe SSD\n\t\t1d78 3107  D5457 U.2 6.4TB NVMe SSD\n\t\t1d78 3108  D5437 U.2 7.68TB NVMe SSD\n\t\t1d78 5003  D5447 HHHL 1.6TB NVMe SSD\n\t\t1d78 5004  D5427 HHHL 1.92TB NVMe SSD\n\t\t1d78 5005  D5447 HHHL 3.2TB NVMe SSD\n\t\t1d78 5006  D5427 HHHL 3.84TB NVMe SSD\n\t\t1d78 5007  D5447 HHHL 6.4TB NVMe SSD\n\t\t1d78 5008  D5427 HHHL 7.68TB NVMe SSD\n\t\t1d78 5103  D5447 U.2 1.6TB NVMe SSD\n\t\t1d78 5105  D5447 U.2 3.2TB NVMe SSD\n\t\t1d78 5106  AF3UP34DTCUN3T8B SSD\n\t\t1d78 5107  D5447 U.2 6.4TB NVMe SSD\n\t\t1d78 5114  D5427 U.2 1.92TB NVMe SSD\n\t\t1d78 5116  D5427 U.2 3.84TB NVMe SSD\n\t\t1d78 5118  D5427 U.2 7.68TB NVMe SSD\n\t\t1d78 8107  D5457 U.2 6.4TB NVMe SSD\n\t1513  DERA MENG NVMe Controller\n\t\t1d78 6015  D6456 HHHL 3.2TB NVMe SSD\n\t\t1d78 6016  D6436 HHHL 3.84TB NVMe SSD\n\t\t1d78 6017  D6456 HHHL 6.4TB NVMe SSD\n\t\t1d78 6018  D6436 HHHL 7.68TB NVMe SSD\n\t\t1d78 6105  D6457 U.2 3.2TB NVMe SSD\n\t\t1d78 6106  D6437 U.2 3.84TB NVMe SSD\n\t\t1d78 6107  D6457 U.2 6.4TB NVMe SSD\n\t\t1d78 6108  D6437 U.2 7.68TB NVMe SSD\n\t\t1d78 6115  D6456 U.2 3.2TB NVMe SSD\n\t\t1d78 6116  D6436 U.2 3.84TB NVMe SSD\n\t\t1d78 6117  D6456 U.2 6.4TB NVMe SSD\n\t\t1d78 6118  D6436 U.2 7.68TB NVMe SSD\n\t1515  DERA EMEI NVMe Controller\n\t\t1d78 7002  D7436 HHHL 1.92TB NVMe SSD\n\t\t1d78 7003  D7456 HHHL 1.6TB NVMe SSD\n\t\t1d78 7004  D7436 HHHL 3.84TB NVMe SSD\n\t\t1d78 7005  D7456 HHHL 3.2TB NVMe SSD\n\t\t1d78 7007  D7456 HHHL 6.4TB NVMe SSD\n\t\t1d78 7008  D7436 HHHL 7.68TB NVMe SSD\n\t\t1d78 7009  D7456 HHHL 12.8TB NVMe SSD\n\t\t1d78 700a  D7436 HHHL 15.36TB NVMe SSD\n\t\t1d78 7102  D7436 U.2 15mm 1.92TB NVMe SSD\n\t\t1d78 7103  D7456 U.2 15mm 1.6TB NVMe SSD\n\t\t1d78 7104  D7436 U.2 15mm 3.84TB NVMe SSD\n\t\t1d78 7105  D7456 U.2 15mm 3.2TB NVMe SSD\n\t\t1d78 7107  D7456 U.2 15mm 6.4TB NVMe SSD\n\t\t1d78 7108  D7436 U.2 15mm 7.68TB NVMe SSD\n\t\t1d78 7109  D7456 U.2 15mm 12.8TB NVMe SSD\n\t\t1d78 710a  D7436 U.2 15mm 15.36TB NVMe SSD\n\t\t1d78 7143  D7556 U.2 15mm 1.6TB dual port NVMe SSD\n\t\t1d78 7144  D7536 U.2 15mm 1.92TB dual port NVMe SSD\n\t\t1d78 7145  D7556 U.2 15mm 3.2TB dual port NVMe SSD\n\t\t1d78 7146  D7536 U.2 15mm 3.84TB dual port NVMe SSD\n\t\t1d78 7147  D7556 U.2 15mm 6.4TB dual port NVMe SSD\n\t\t1d78 7148  D7536 U.2 15mm 7.68TB dual port NVMe SSD\n\t\t1d78 7149  D7556 U.2 15mm 12.8TB dual port NVMe SSD\n\t\t1d78 714a  D7536 U.2 15mm 15.36TB dual port NVMe SSD\n\t\t1d78 7202  Aliflash V2 U.2 15mm 1.92TB NVMe SSD\n\t\t1d78 7204  Aliflash V2 U.2 15mm 3.84TB NVMe SSD\n\t\t1d78 7208  Aliflash V2 U.2 15mm 7.68TB NVMe SSD\n\t1516  DERA D8436/D8456 NVMe SSD\n1d79  Transcend Information, Inc.\n\t2262  NVMe PCIe SSD 220S/MTE662T2\n\t2263  NVMe PCIe SSD 110S/112S/120S/MTE300S/MTE400S/MTE652T2 (DRAM-less)\n\t2264  NVMe PCIe SSD 250H\n\t2267  NVMe PCIe SSD 220S/240S/MTE710T\n\t2269  NVMe PCIe SSD 410S (DRAM-less)\n\t5766  NVMe PCIe SSD 110Q (DRAM-less)\n1d7c  Aerotech, Inc.\n# Fiber-optic HyperWire motion control bus from Aerotech.\n\t0001  HyperWire Adapter\n1d82  NETINT Technologies Inc.\n\t0101  Codensity D400 SSD\n\t0102  Codensity D408 PCIe Gen4 NVMe SSD\n\t0202  Codensity T408 Video Encoding-Decoding Accelerator\n\t0401  Quadra Video Processing Unit (VPU)\n\t0411  Quadra Video Processing Unit (VPU) Virtual Function\n# nee Fuzhou Rockchip Electronics Co., Ltd\n1d87  Rockchip Electronics Co., Ltd\n\t0100  RK3399 PCI Express Root Port\n\t1808  RK1808 Neural Network Processor Card\n\t3528  RK3528 PCI Express Root Port\n\t3562  RK3562 PCI Express Root Port\n\t3566  RK3568 Remote Signal Processor\n\t3588  RK3588\n1d89  YEESTOR Microelectronics Co., Ltd\n\t0280  PCIe NVMe SSD\n1d8f  Exegy\n1d92  Abaco Systems Inc.\n1d93  YADRO\n1d94  Chengdu Haiguang IC Design Co., Ltd.\n\t1450  Root Complex\n\t1451  I/O Memory Management Unit\n\t1452  PCIe Dummy Host Bridge\n\t1453  PCIE GPP Bridge\n\t1454  Internal PCIe GPP Bridge 0 to Bus B\n\t1455  PCIe Dummy Function\n\t1456  PSPCCP Command DMA Processor\n\t1458  10 Gb Ethernet Controller Port 0/Port1\n\t1459  10 Gb Ethernet Controller Port 2/Port3\n\t145a  PCIe Dummy Function\n\t145b  PCIE Non-Transparent Bridge\n\t145c  USB3 XHCI\n\t145d  Switch upstream in PCIe\n\t145e  Switch downstream in PCIe\n\t145f  USB 3.0 Host controller\n\t1460  Data Fabric: Device 18h; Function 0\n\t1461  Data Fabric: Device 18h; Function 1\n\t1462  Data Fabric: Device 18h; Function 2\n\t1463  Data Fabric: Device 18h; Function 3\n\t1464  Data Fabric: Device 18h; Function 4\n\t1465  Data Fabric: Device 18h; Function 5\n\t1466  Data Fabric: Device 18h; Function 6\n\t1467  Data Fabric: Device 18h; Function 7\n\t1468  NTBCCP\n\t7901  FCH SATA Controller [AHCI mode]\n\t7904  FCH SATA Controller [AHCI mode]\n\t7906  FCH SD Flash Controller\n\t790b  FCH SMBus Controller\n\t790e  FCH LPC Bridge\n1d95  Graphcore Ltd\n\t0001  Colossus GC2 [C2]\n\t0002  Colossus GC1 [S1]\n1d97  Shenzhen Longsys Electronics Co., Ltd.\n\t1062  Lexar NM710 NVME SSD\n\t1160  FORESEE P900 BGA NVMe SSD (DRAM-less)\n\t1202  Lexar NM610 PRO NVME SSD (DRAM-less)\n\t12e4  ORCA 4836 Series eSSD\n\t1602  Lexar NM790 NVME SSD (DRAM-less)\n\t1d97  Lexar NM620 NVME SSD (DRAM-less)\n\t2263  SM2263EN/SM2263XT-based OEM NVME SSD (DRAM-less)\n\t2269  FORESEE XP2000, Lexar NM760 NVME SSD (DRAM-less)\n\t5216  FORESEE XP1000 / Lexar Professional CFexpress Type B Gold series, NM620 PCIe NVME SSD (DRAM-less)\n\t5220  FORESEE XP2100 NVMe SSD (DRAM-less)\n\t5236  Lexar NM800 PRO NVME SSD\n\t5772  Lexar NQ700 NVME SSD (DRAM-less)\n# nee Facebook, Inc.\n1d9b  Meta Platforms, Inc.\n\t0010  Networking DOM Engine\n\t0011  IO Bridge\n\t0013  Host Network Interface\n\t0400  Time Card\n1da1  Teko Telecom S.r.l.\n1da2  Sapphire Technology Limited\n\t475d  Radeon RX 7800 XT [PULSE]\n\te26a  Radeon R7 250\n\te445  Sapphire Radeon RX 6700\n1da3  Habana Labs Ltd.\n\t0001  HL-1000 AI Inference Accelerator [Goya]\n# PCIe accelerator card for Deep Learning inference tasks\n\t0030  Greco AI Inference Accelerator\n# PCIe accelerator card for Deep Learning training tasks\n\t1000  HL-2000 AI Training Accelerator [Gaudi]\n# PCIe accelerator card for Deep Learning training tasks with secured firmware\n\t1010  HL-2000 AI Training Accelerator [Gaudi secured]\n# PCIe accelerator card for Deep Learning training tasks\n\t1020  Gaudi2 AI Training Accelerator\n\t1060  Gaudi3 AI Training Accelerator\n\t1063  Gaudi3 AI Training Accelerator Add-In Family\n\t\t1da3 1063  HL-338 Gaudi3 AI Accelerator PCIe Add-In Card\n1da8  Corigine, Inc.\n\t3800  Network Flow Processor 3800\n\t3803  Network Flow Processor 3800 Virtual Function\n1dad  Fungible\n\t0108  FC50, FC100, FC200 DPU NVMeoF Adapters\n1db2  ATP ELECTRONICS INC\n1db7  Phytium Technology Co., Ltd.\n\tdc20  [X100 Series]\n\tdc21  VPU Controller [X100 Series]\n\tdc22  DC Controller [X100 Series]\n\tdc23  I2S/DMA Controller [X100 Series]\n\tdc24  NPU Controller [X100 Series]\n\tdc26  SATA Controller [X100 Series]\n\tdc27  USB Controller [X100 Series]\n\tdc29  NANDFLASH Controller [X100 Series]\n\tdc2b  I2S Controller [X100 Series]\n\tdc2c  SPIM Controller [X100 Series]\n\tdc2d  CAN Controller [X100 Series]\n\tdc2e  UART Controller [X100 Series]\n\tdc2f  PWM Controller [X100 Series]\n\tdc30  MIO Controller [X100 Series]\n\tdc31  GPIO Controller [X100 Series]\n\tdc32  SMBUS Controller [X100 Series]\n\tdc34  PS2 Controller [X100 Series]\n\tdc35  LPC Controller [X100 Series]\n\tdc36  LDMA Controller [X100 Series]\n\tdc38  LSD_CFG Controller [X100 Series]\n\tdc3a  SWITCH Controller [X100 Series]\n\tdc3b  MAC Controller [D3000M Series]\n\tdc3c  GPU_DMA Controller [X100 Series]\n\tdc3e  DCController [E2000 Series]\n\tdc3f  SATA Controller [D3000M Series]\n1dbb  NGD Systems, Inc.\n1dbe  INNOGRIT Corporation\n\t5208  NVMe SSD Controller IG5208 [Shasta] (DRAM-less)\n\t5216  NVMe SSD Controller IG5216 [Shasta+] (DRAM-less)\n\t5220  NVMe SSD Controller IG5220 [RainierQX] (DRAM-less)\n\t5222  NVMe SSD Controller IG5222 [RainierX] (DRAM-less)\n\t5236  NVMe SSD Controller IG5236 [RainierPC]\n\t\t1dbe 4001  Dongting-B1 DC SSD M.2 480GB\n\t\t1dbe 4002  Dongting-B1 DC SSD M.2 960GB\n\t5636  NVMe DC SSD IG5636\n\t\t1dbe 0001  Dongting-N1 DC SSD U.2 1600GB\n\t\t1dbe 0002  Dongting-N1 DC SSD U.2 1920GB\n\t\t1dbe 0003  Dongting-N1 DC SSD U.2 3200GB\n\t\t1dbe 0004  Dongting-N1 DC SSD U.2 3840GB\n\t\t1dbe 0005  Dongting-N1 DC SSD U.2 6400GB\n\t\t1dbe 0006  Dongting-N1 DC SSD U.2 7680GB\n\t\t1dbe 1001  Donghu-Z1 DC ZNS SSD U.2 4000GB\n\t\t1dbe 1002  Donghu-Z1 DC ZNS SSD U.2 8000GB\n\t5638  NVMe DC SSD IG5638\n\t\t1dbe 2001  Dongting-N2 DC SSD U.2 1600GB\n\t\t1dbe 2002  Dongting-N2 DC SSD U.2 1920GB\n\t\t1dbe 2003  Dongting-N2 DC SSD U.2 3200GB\n\t\t1dbe 2004  Dongting-N2 DC SSD U.2 3840GB\n\t\t1dbe 2005  Dongting-N2 DC SSD U.2 6400GB\n\t\t1dbe 2006  Dongting-N2 DC SSD U.2 7680GB\n\t\t1dbe 2118  Dongting-N2Q DC QLC SSD U.2 15360GB\n\t\t1dbe 2190  Dongting-N2Q DC QLC SSD U.2 30720GB\n\t\t1dbe 2201  Dongting-N2 2000 DC SSD U.2 1600GB\n\t\t1dbe 2202  Dongting-N2 2000 DC SSD U.2 1920GB\n\t\t1dbe 2203  Dongting-N2 2000 DC SSD U.2 3200GB\n\t\t1dbe 2204  Dongting-N2 2000 DC SSD U.2 3840GB\n\t\t1dbe 2205  Dongting-N2 2000 DC SSD U.2 6400GB\n\t\t1dbe 2206  Dongting-N2 2000 DC SSD U.2 7680GB\n\t\t1dbe 3001  Donghu-Z2 DC ZNS SSD U.2 4000GB\n\t\t1dbe 3002  Donghu-Z2 DC ZNS SSD U.2 8000GB\n\t5666  NVMe SSD Controller IG5666\n\t5668  NVMe PCIe 5.0 DC SSD\n\t\t1dbe 5003  Dongting-N3 DC SSD U.2 3200GB\n\t\t1dbe 5004  Dongting-N3 DC SSD U.2 3840GB\n\t\t1dbe 5005  Dongting-N3 DC SSD U.2 6400GB\n\t\t1dbe 5006  Dongting-N3 DC SSD U.2 7680GB\n\t\t1dbe 5007  Dongting-N3 DC SSD U.2 12800GB\n\t\t1dbe 5008  Dongting-N3 DC SSD U.2 15360GB\n\t\t1dbe 5009  Dongting-N3 DC SSD U.2 25600GB\n\t\t1dbe 5080  Dongting-N3 DC SSD U.2 30720GB\n\t\t1dbe 5118  Dongting-N3Q DC QLC SSD U.2 15360GB\n\t\t1dbe 5190  Dongting-N3Q DC QLC SSD U.2 30720GB\n\t\t1dbe 5192  Dongting-N3Q DC QLC SSD U.2 61440GB\n\t\t1dbe 5803  Dongting-N3 DC SSD E3.S 3200GB\n\t\t1dbe 5804  Dongting-N3 DC SSD E3.S 3840GB\n\t\t1dbe 5805  Dongting-N3 DC SSD E3.S 6400GB\n\t\t1dbe 5806  Dongting-N3 DC SSD E3.S 7680GB\n\t\t1dbe 5807  Dongting-N3 DC SSD E3.S 12800GB\n\t\t1dbe 5808  Dongting-N3 DC SSD E3.S 15360GB\n\t\t1dbe 5809  Dongting-N3 DC SSD E3.S 25600GB\n\t\t1dbe 5880  Dongting-N3 DC SSD E3.S 30720GB\n\t\t1dbe 6116  Dongting-Z3Q DC ZNS SSD U.2 7680GB\n\t5669  NVMe SSD Controller IG5669 [Tacoma]\n1dbf  Guizhou Huaxintong Semiconductor Technology Co., Ltd\n\t0401  StarDragon4800 PCI Express Root Port\n1dc2  Alco Digital Devices Limited\n1dc5  FADU Inc.\n\t4081  FC4121 PCIe 4.0 NVMe controller [DELTA]\n\t6150  FC3081 PCIe 3.0 NVMe controller [BRAVO]\n1dcd  Liqid Inc.\n1dcf  Beijing Sinead Technology Co., Ltd.\n1dd3  Sage Microelectronics Corp.\n1dd4  Swissbit AG\n\t0010  N-10m2 NVMe SSD\n\t0016  N-16\n\t0020  EN-20 BGA NVMe SSD (DRAM-less)\n\t0030  N-30m2 NVMe SSD\n\t0036  N-36m2 NVMe SSD\n\t1200  D1200 NVMe SSD\n\t3000  N3000 NVMe SSD\n\t3002  N3002 NVMe SSD\n\t3602  N3602 NVMe SSD\n\t4131  A1x NVMe SSD Series\n\t4432  D2x NVMe SSD Series\n\t5200  N5200 NVMe SSD\n1dd5  Manli Technology Group Limited\n1dd8  AMD Pensando Systems\n\t0002  DSC2 Elba Upstream Port\n\t\t1dd8 100e  Distributed Services Card\n\t\t1dd8 5001  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card\n\t\t1dd8 5003  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card\n\t\t1dd8 5008  DSC25v2 10/25G 2p 32GB Spl Card\n\t\t1dd8 5009  DSC2-25 10/25G 2p SFP56 DPU\n\t\t1dd8 500a  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R2\n\t\t1dd8 500b  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU\n\t\t1dd8 500c  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R3\n\t\t1dd8 500d  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4\n\t\t1dd8 500e  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R5\n\t\t1dd8 500f  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4-T\n\t0008  DSC3 Salina Upstream Port\n\t\t1dd8 100e  Distributed Services Card\n\t\t1dd8 5200  DSC3-2Q400 100/200/400G 2-port DDR5 128G eMMC G3 Services Card\n\t\t1dd8 5201  POLLARA-1Q400 100/200/400G 1-port Card\n\t1000  DSC Capri Upstream Port\n\t\t1dd8 4000  Naples 100Gb 2-port QSFP28 x16 8GB\n\t\t1dd8 4001  Naples 100Gb 2-port QSFP28 x16 4GB\n\t\t1dd8 4002  Naples 25Gb 2-port SFP28 x8 4GB\n\t\t1dd8 4007  DSP DSC-25 Ent 10/25G OCP3 Card\n\t\t1dd8 4008  DSP DSC-25 10/25G 2p SFP28 Card\n\t\t1dd8 400a  DSC-100 40/100G 2-port 8G RAM 16G eMMC G1 Services Card\n\t\t1dd8 400c  DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card\n\t\t1dd8 400d  DSP DSC-100 Ent 100Gb Card\n\t\t1dd8 400e  DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card\n\t\t1dd8 4014  DSC-100 40/100G 2-port 8G RAM 16G eMMC G1 Services Card\n\t1001  DSC Virtual Downstream Port\n\t\t1dd8 100e  Distributed Services Card\n\t\t1dd8 4000  Naples 100Gb 2-port QSFP28 x16 8GB\n\t\t1dd8 4001  Naples 100Gb 2-port QSFP28 x16 4GB\n\t\t1dd8 4002  Naples 25Gb 2-port SFP28 x8 4GB\n\t\t1dd8 4007  DSP DSC-25 Ent 10/25G OCP3 Card\n\t\t1dd8 4008  DSP DSC-25 10/25G 2p SFP28 Card\n\t\t1dd8 400a  DSC-100 40/100G 2-port 8G RAM 16G eMMC G1 Services Card\n\t\t1dd8 400c  DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card\n\t\t1dd8 400d  DSP DSC-100 Ent 100Gb Card\n\t\t1dd8 400e  DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card\n\t\t1dd8 4014  DSC-100 40/100G 2-port 8G RAM 16G eMMC G1 Services Card\n\t\t1dd8 5001  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card\n\t\t1dd8 5003  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card\n\t\t1dd8 5008  DSC25v2 10/25G 2p 32GB Spl Card\n\t\t1dd8 5009  DSC2-25 10/25G 2p SFP56 DPU\n\t\t1dd8 500a  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R2\n\t\t1dd8 500b  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU\n\t\t1dd8 500c  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R3\n\t\t1dd8 500d  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4\n\t\t1dd8 500e  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R5\n\t\t1dd8 500f  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4-T\n\t\t1dd8 5200  DSC3-2Q400 100/200/400G 2-port DDR5 128G eMMC G3 Services Card\n\t\t1dd8 5201  POLLARA-1Q400 100/200/400G 1-port Card\n\t1002  DSC Ethernet Controller\n\t\t1dd8 100e  Distributed Services Card\n\t\t1dd8 4000  Naples 100Gb 2-port QSFP28 x16 8GB\n\t\t1dd8 4001  Naples 100Gb 2-port QSFP28 x16 4GB\n\t\t1dd8 4002  Naples 25Gb 2-port SFP28 x8 4GB\n\t\t1dd8 4007  DSP DSC-25 Ent 10/25G OCP3 Card\n\t\t1dd8 4008  DSP DSC-25 10/25G 2p SFP28 Card\n\t\t1dd8 400a  DSC-100 40/100G 2-port 8G RAM 16G eMMC G1 Services Card\n\t\t1dd8 400c  DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card\n\t\t1dd8 400d  DSP DSC-100 Ent 100Gb Card\n\t\t1dd8 400e  DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card\n\t\t1dd8 4014  DSC-100 40/100G 2-port 8G RAM 16G eMMC G1 Services Card\n\t\t1dd8 5001  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card\n\t\t1dd8 5003  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card\n\t\t1dd8 5008  DSC25v2 10/25G 2p 32GB Spl Card\n\t\t1dd8 5009  DSC2-25 10/25G 2p SFP56 DPU\n\t\t1dd8 500a  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R2\n\t\t1dd8 500b  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU\n\t\t1dd8 500c  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R3\n\t\t1dd8 500d  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4\n\t\t1dd8 500e  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R5\n\t\t1dd8 500f  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4-T\n\t\t1dd8 5200  DSC3-2Q400 100/200/400G 2-port DDR5 128G eMMC G3 Services Card\n\t\t1dd8 5201  POLLARA-1Q400 100/200/400G 1-port Card\n\t1003  DSC Ethernet Controller VF\n\t\t1dd8 100e  Distributed Services Card\n\t\t1dd8 4000  Naples 100Gb 2-port QSFP28 x16 8GB\n\t\t1dd8 4001  Naples 100Gb 2-port QSFP28 x16 4GB\n\t\t1dd8 4002  Naples 25Gb 2-port SFP28 x8 4GB\n\t\t1dd8 4007  DSP DSC-25 Ent 10/25G OCP3 Card\n\t\t1dd8 4008  DSP DSC-25 10/25G 2p SFP28 Card\n\t\t1dd8 400a  DSC-100 40/100G 2-port 8G RAM 16G eMMC G1 Services Card\n\t\t1dd8 400c  DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card\n\t\t1dd8 400d  DSP DSC-100 Ent 100Gb Card\n\t\t1dd8 400e  DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card\n\t\t1dd8 4014  DSC-100 40/100G 2-port 8G RAM 16G eMMC G1 Services Card\n\t\t1dd8 5001  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card\n\t\t1dd8 5003  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card\n\t\t1dd8 5008  DSC25v2 10/25G 2p 32GB Spl Card\n\t\t1dd8 5009  DSC2-25 10/25G 2p SFP56 DPU\n\t\t1dd8 500a  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R2\n\t\t1dd8 500b  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU\n\t\t1dd8 500c  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R3\n\t\t1dd8 500d  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4\n\t\t1dd8 500e  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R5\n\t\t1dd8 500f  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4-T\n\t\t1dd8 5200  DSC3-2Q400 100/200/400G 2-port DDR5 128G eMMC G3 Services Card\n\t\t1dd8 5201  POLLARA-1Q400 100/200/400G 1-port Card\n\t1004  DSC Management Controller\n\t\t1dd8 100e  Distributed Services Card\n\t\t1dd8 4000  Naples 100Gb 2-port QSFP28 x16 8GB\n\t\t1dd8 4001  Naples 100Gb 2-port QSFP28 x16 4GB\n\t\t1dd8 4002  Naples 25Gb 2-port SFP28 x8 4GB\n\t\t1dd8 4007  DSP DSC-25 Ent 10/25G OCP3 Card\n\t\t1dd8 4008  DSP DSC-25 10/25G 2p SFP28 Card\n\t\t1dd8 400a  DSC-100 40/100G 2-port 8G RAM 16G eMMC G1 Services Card\n\t\t1dd8 400c  DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card\n\t\t1dd8 400d  DSP DSC-100 Ent 100Gb Card\n\t\t1dd8 400e  DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card\n\t\t1dd8 4014  DSC-100 40/100G 2-port 8G RAM 16G eMMC G1 Services Card\n\t\t1dd8 5001  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card\n\t\t1dd8 5003  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card\n\t\t1dd8 5008  DSC25v2 10/25G 2p 32GB Spl Card\n\t\t1dd8 5009  DSC2-25 10/25G 2p SFP56 DPU\n\t\t1dd8 500a  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R2\n\t\t1dd8 500b  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU\n\t\t1dd8 500c  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R3\n\t\t1dd8 500d  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4\n\t\t1dd8 500e  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R5\n\t\t1dd8 500f  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4-T\n\t\t1dd8 5200  DSC3-2Q400 100/200/400G 2-port DDR5 128G eMMC G3 Services Card\n\t\t1dd8 5201  POLLARA-1Q400 100/200/400G 1-port Card\n\t1005  DSC NVMe Controller\n\t\t1dd8 100e  Distributed Services Card\n\t\t1dd8 5001  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card\n\t\t1dd8 5003  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card\n\t\t1dd8 5008  DSC25v2 10/25G 2p 32GB Spl Card\n\t\t1dd8 5009  DSC2-25 10/25G 2p SFP56 DPU\n\t\t1dd8 500a  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R2\n\t\t1dd8 500b  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU\n\t\t1dd8 500c  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R3\n\t\t1dd8 500d  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4\n\t\t1dd8 500e  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R5\n\t\t1dd8 500f  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4-T\n\t\t1dd8 5200  DSC3-2Q400 100/200/400G 2-port DDR5 128G eMMC G3 Services Card\n\t1006  DSC NVMe Controller VF\n\t\t1dd8 100e  Distributed Services Card\n\t\t1dd8 5001  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card\n\t\t1dd8 5003  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card\n\t\t1dd8 5008  DSC25v2 10/25G 2p 32GB Spl Card\n\t\t1dd8 5009  DSC2-25 10/25G 2p SFP56 DPU\n\t\t1dd8 500a  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R2\n\t\t1dd8 500b  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU\n\t\t1dd8 500c  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R3\n\t\t1dd8 500d  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4\n\t\t1dd8 500e  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R5\n\t\t1dd8 500f  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4-T\n\t\t1dd8 5200  DSC3-2Q400 100/200/400G 2-port DDR5 128G eMMC G3 Services Card\n\t1007  DSC Storage Accelerator\n\t\t1dd8 100e  Distributed Services Card\n\t\t1dd8 4000  Naples 100Gb 2-port QSFP28 x16 8GB\n\t\t1dd8 4001  Naples 100Gb 2-port QSFP28 x16 4GB\n\t\t1dd8 4002  Naples 25Gb 2-port SFP28 x8 4GB\n\t\t1dd8 4007  DSP DSC-25 Ent 10/25G OCP3 Card\n\t\t1dd8 4008  DSP DSC-25 10/25G 2p SFP28 Card\n\t\t1dd8 400a  DSC-100 40/100G 2-port 8G RAM 16G eMMC G1 Services Card\n\t\t1dd8 400c  DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card\n\t\t1dd8 400d  DSP DSC-100 Ent 100Gb Card\n\t\t1dd8 400e  DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card\n\t\t1dd8 4014  DSC-100 40/100G 2-port 8G RAM 16G eMMC G1 Services Card\n\t\t1dd8 5001  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card\n\t\t1dd8 5003  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card\n\t\t1dd8 5008  DSC25v2 10/25G 2p 32GB Spl Card\n\t\t1dd8 5009  DSC2-25 10/25G 2p SFP56 DPU\n\t\t1dd8 500a  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R2\n\t\t1dd8 500b  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU\n\t\t1dd8 500c  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R3\n\t\t1dd8 500d  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4\n\t\t1dd8 500e  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R5\n\t\t1dd8 500f  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4-T\n\t1009  DSC Ethernet Controller UPT\n\t\t1dd8 100e  Distributed Services Card\n\t\t1dd8 5001  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card\n\t\t1dd8 5003  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card\n\t\t1dd8 5008  DSC25v2 10/25G 2p 32GB Spl Card\n\t\t1dd8 5009  DSC2-25 10/25G 2p SFP56 DPU\n\t\t1dd8 500a  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R2\n\t\t1dd8 500b  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU\n\t\t1dd8 500c  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R3\n\t\t1dd8 500d  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4\n\t\t1dd8 500e  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R5\n\t\t1dd8 500f  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4-T\n\t100a  DSC Serial Port Controller\n\t\t1dd8 100e  Distributed Services Card\n\t\t1dd8 5001  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card\n\t\t1dd8 5003  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card\n\t\t1dd8 5008  DSC25v2 10/25G 2p 32GB Spl Card\n\t\t1dd8 5009  DSC2-25 10/25G 2p SFP56 DPU\n\t\t1dd8 500a  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R2\n\t\t1dd8 500b  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU\n\t\t1dd8 500c  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R3\n\t\t1dd8 500d  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4\n\t\t1dd8 500e  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R5\n\t\t1dd8 500f  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4-T\n\t100b  DSC vDPA Network Device VF\n\t\t1dd8 100e  Distributed Services Card\n\t\t1dd8 5001  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card\n\t\t1dd8 5003  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card\n\t\t1dd8 5008  DSC25v2 10/25G 2p 32GB Spl Card\n\t\t1dd8 5009  DSC2-25 10/25G 2p SFP56 DPU\n\t\t1dd8 500a  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R2\n\t\t1dd8 500b  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU\n\t\t1dd8 500c  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R3\n\t\t1dd8 500d  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4\n\t\t1dd8 500e  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R5\n\t\t1dd8 500f  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4-T\n\t100c  DSC PDS Core Management\n\t\t1dd8 100e  Distributed Services Card\n\t\t1dd8 5001  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card\n\t\t1dd8 5003  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card\n\t\t1dd8 5008  DSC25v2 10/25G 2p 32GB Spl Card\n\t\t1dd8 5009  DSC2-25 10/25G 2p SFP56 DPU\n\t\t1dd8 500a  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R2\n\t\t1dd8 500b  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU\n\t\t1dd8 500c  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R3\n\t\t1dd8 500d  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4\n\t\t1dd8 500e  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R5\n\t\t1dd8 500f  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4-T\n\t\t1dd8 5200  DSC3-2Q400 100/200/400G 2-port DDR5 128G eMMC G3 Services Card\n\t\t1dd8 5201  POLLARA-1Q400 100/200/400G 1-port Card\n\t100d  DSC Virtio Network Device VF\n\t\t1dd8 100e  Distributed Services Card\n\t\t1dd8 5001  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card\n\t\t1dd8 5003  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card\n\t\t1dd8 5008  DSC25v2 10/25G 2p 32GB Spl Card\n\t\t1dd8 5009  DSC2-25 10/25G 2p SFP56 DPU\n\t\t1dd8 500a  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R2\n\t\t1dd8 500b  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU\n\t\t1dd8 500c  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R3\n\t\t1dd8 500d  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4\n\t\t1dd8 500e  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R5\n\t\t1dd8 500f  DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4-T\n\t\t1dd8 5200  DSC3-2Q400 100/200/400G 2-port DDR5 128G eMMC G3 Services Card\n\t100f  Register/Memory Resource Device\n\t\t1dd8 5201  POLLARA-1Q400 100/200/400G 1-port Card\n\t1012  TAWK IPC Device\n\t\t1dd8 5201  POLLARA-1Q400 100/200/400G 1-port Card\n1ddd  Thorlabs\n1de0  Groq\n\t0000  TSP [GroqChip]\n\t\t1de0 0000  GC1-010X-ES [GroqCard]\n\t\t1de0 c005  GC1-010B [GroqCard]\n\t\t1de0 c006  GC1-0109 [GroqCard]\n\t\t1de0 c007  GC1-0100 [GroqCard]\n1de1  Tekram Technology Co.,Ltd.\n\t0391  TRM-S1040 [DC-315 / DC-395 series]\n\t2020  DC-390 Series SCSI Adapter [AMD Am53C974]\n\t690c  690c\n\tdc29  DC290\n1de4  Raspberry Pi Ltd\n\t0001  RP1 PCIe 2.0 South Bridge\n1de5  Eideticom, Inc\n\t1000  IO Memory Controller\n\t2000  NoLoad Hardware Development Kit\n\t3000  eBPF-based PCIe Accelerator\n1ded  Alibaba (China) Co., Ltd.\n\t107f  Elastic RDMA Adapter\n\t5007  Elastic RDMA Adapter\n\t8000  M1 Root Port\n\t8001  ACC-RCiEP\n\t8002  RCiEP VF\n\t8003  RCEC PF\n\t8004  RCEC VF\n1dee  Biwin Storage Technology Co., Ltd.\n\t1202  HP EX900 Plus NVMe SSD (DRAM-less)\n\t1602  HP FX700 NVMe SSD (DRAM-less)\n\t2262  HP EX950 NVMe SSD\n\t2263  HP EX900 NVMe SSD (DRAM-less)\n\t2500  XCG 2500 Enterprise Gen 4 SSD\n\t4121  PCIe 4.0 SP406/416 NVMe SSD\n\t\t1dee 0000  NVMe SSD SP416 800G 2.5\" U.2\n\t\t1dee 0001  NVMe SSD SP416 1.6T 2.5\" U.2\n\t\t1dee 0002  NVMe SSD SP416 3.2T 2.5\" U.2\n\t\t1dee 0003  NVMe SSD SP416 6.4T 2.5\" U.2\n\t\t1dee 0010  NVMe SSD SP406 960G 2.5\" U.2\n\t\t1dee 0011  NVMe SSD SP406 1.92T 2.5\" U.2\n\t\t1dee 0012  NVMe SSD SP406 3.84T 2.5\" U.2\n\t\t1dee 0013  NVMe SSD SP406 7.68T 2.5\" U.2\n\t5161  BIWIN NVMe SSD SP506/SP516\n\t\t1dee 0001  NVMe SSD SP516 1.6T 2.5\" U.2\n\t\t1dee 0002  NVMe SSD SP516 3.2T 2.5\" U.2\n\t\t1dee 0003  NVMe SSD SP516 6.4T 2.5\" U.2\n\t\t1dee 0004  NVMe SSD SP516 12.8T 2.5\" U.2\n\t\t1dee 0011  NVMe SSD SP506 1.92T 2.5\" U.2\n\t\t1dee 0012  NVMe SSD SP506 3.84T 2.5\" U.2\n\t\t1dee 0013  NVMe SSD SP506 7.68T 2.5\" U.2\n\t\t1dee 0014  NVMe SSD SP506 15.36T 2.5\" U.2\n\t5216  KingSpec NX series NVMe SSD (DRAM-less)\n\t7700  BIWIN NVMe SSD SP50Y/SP51Y\n1def  Ampere Computing, LLC\n\te005  eMAG PCI Express Root Port 0\n\te006  eMAG PCI Express Root Port 1\n\te007  eMAG PCI Express Root Port 2\n\te008  eMAG PCI Express Root Port 3\n\te009  eMAG PCI Express Root Port 4\n\te00a  eMAG PCI Express Root Port 5\n\te00b  eMAG PCI Express Root Port 6\n\te00c  eMAG PCI Express Root Port 7\n# Root Complex A (RCA)\n\te100  Altra PCI Express Root Complex A\n# RCA port 0\n\te101  Altra PCI Express Root Port a0\n# RCA port 1\n\te102  Altra PCI Express Root Port a1\n# RCA port 2\n\te103  Altra PCI Express Root Port a2\n# RAC port 3\n\te104  Altra PCI Express Root Port a3\n# RCA port 4\n\te105  Altra PCI Express Root Port a4\n# RCA port 5\n\te106  Altra PCI Express Root Port a5\n# RCA port 6\n\te107  Altra PCI Express Root Port a6\n# RCA port 7\n\te108  Altra PCI Express Root Port a7\n# Root Complex B (RCB)\n\te110  Altra PCI Express Root Complex B\n# RCB port 0\n\te111  Altra PCI Express Root Port b0\n# RCB port 1\n\te112  Altra PCI Express Root Port b1\n# RCB port 2\n\te113  Altra PCI Express Root Port b2\n# RCB port 3\n\te114  Altra PCI Express Root Port b3\n# RCB port 4\n\te115  Altra PCI Express Root Port b4\n# RCB port 5\n\te116  Altra PCI Express Root Port b5\n# RCB port 6\n\te117  Altra PCI Express Root Port b6\n# RCB port 7\n\te118  Altra PCI Express Root Port b7\n1df3  Ethernity Networks\n\t0201  ACE-NIC40 Programmable Network Accelerator\n\t\t1df3 0001  ENA1040\n\t\t1df3 0002  ENA1044\n\t\t1df3 0003  ENA1044S\n\t0202  ACE-NIC50 Programmable Network Accelerator\n\t\t1df3 0001  ENA2050F\n\t\t1df3 0002  ENA2050FS\n\t0203  ACE-NIC100 Programmable Network Accelerator\n\t\t1df3 0000  Maintenance Mode\n\t\t1df3 0001  ENA2080F\n\t\t1df3 0002  ENA2080FS\n\t\t1df3 0003  ENA2100F\n\t\t1df3 0004  ENA2040F\n\t0204  ACE-NIC-NID Programmable Network Accelerator\n\t\t1df3 0001  ENA1020Z\n\t\t1df3 0002  ENA1020ZS\n\t0205  ACE-NIC250 Programmable Network Accelerator\n\t\t1df3 0000  Maintenance Mode\n\t\t1df3 0001  ENA2250F\n\t0206  ACE-NIC200 Programmable Network Accelerator\n\t\t1df3 0000  Maintenance Mode\n\t\t1df3 0001  ENA2200F\n\t0207  ACE-NIC50RN Programmable Network Accelerator\n\t\t1df3 0000  Maintenance Mode\n\t\t1df3 0001  ENA2050RN\n\t0208  ACE-NIC100RN Programmable Network Accelerator\n\t\t1df3 0000  Maintenance Mode\n\t\t1df3 0001  ENA2100RN\n1df5  Shenzhen TIGO Semiconductor\n\t1202  kimtigo NVMe SSD (DRAM-less)\n\t2263  kimtigo MG931K NVMe SSD (DRAM-less)\n1df7  opencpi.org\n\t0001  ml605\n\t0002  alst4\n\t0003  alst4x\n1df8  V&G Information System Co.,Ltd\n\t3000  PC NVMe SSD\n\t\t1df8 3100  M.2 NVMe Gen3*4 SSD\n\tc000  DC NVMe SSD\n\t\t1df8 c600  Enterprise U.2 NVMe SSD\n\td000  PC NVMe SSD\n\t\t1df8 d100  M.2 NVMe SSD\n\t\t1df8 d201  M.2 NVMe SSD\n\t\t1df8 d600  M.2 NVMe SSD\n1dfa  Astera Labs, Inc.\n1dfc  JSC NT-COM\n\t1181  TDM 8 Port E1/T1/J1 Adapter\n1e0d  SambaNova Systems, Inc\n1e0f  KIOXIA Corporation\n\t0001  NVMe SSD Controller BG4 (DRAM-less)\n\t0007  NVMe SSD Controller Cx6\n\t\t1028 2078  DC NVMe CD6 RI 960GB\n\t\t1028 2079  DC NVMe CD6 RI 1.92TB\n\t\t1028 207a  DC NVMe CD6 RI 3.84TB\n\t\t1028 207b  DC NVMe CD6 RI 7.68TB\n\t\t1028 207c  DC NVMe CD6 RI 15.36TB\n\t\t1028 207e  Dell Ent NVMe CM6 RI 1.92TB\n\t\t1028 207f  Dell Ent NVMe CM6 RI 3.84TB\n\t\t1028 2080  Dell Ent NVMe CM6 RI 7.68TB\n\t\t1028 2081  Dell Ent NVMe CM6 RI 15.36TB\n\t\t1028 2084  Dell Ent NVMe CM6 MU 1.6TB\n\t\t1028 2085  Dell Ent NVMe CM6 MU 3.2TB\n\t\t1028 2086  Dell Ent NVMe CM6 MU 6.4TB\n\t\t1028 210a  Dell Ent NVMe FIPS CM6 RI 1.92TB\n\t\t1028 210b  Dell Ent NVMe FIPS CM6 RI 3.84TB\n\t\t1028 210c  Dell Ent NVMe FIPS CM6 RI 7.68TB\n\t\t1028 210d  Dell Ent NVMe FIPS CM6 RI15.36TB\n\t\t1028 210e  Dell Ent NVMe FIPS CM6 MU 1.6TB\n\t\t1028 210f  Dell Ent NVMe FIPS CM6 MU 3.2TB\n\t\t1028 2110  Dell Ent NVMe FIPS CM6 MU 6.4TB\n\t\t1e0f 0001  Generic NVMe CM6\n\t0008  RD500/Exceria Plus/Exceria Plus G2 NVMe SSD\n\t0009  NVMe SSD\n\t\t1e0f 0001  Toshiba RC500 Series NVMe SSD\n\t\t1e0f 0032  KIOXIA EXCERIA RC10 Series NVMe SSD\n\t000c  NVMe SSD Controller BG5 (DRAM-less)\n\t000d  NVMe SSD Controller XG7\n\t0010  NVMe SSD Controller XG8\n\t0011  NVMe SSD Controller CD7\n\t\t1028 2189  DC NVMe SED CD7 RI 960GB\n\t\t1028 218a  DC NVMe CD7 RI 960GB\n\t\t1028 218b  DC NVMe SED CD7 RI 1.92TB\n\t\t1028 218c  DC NVMe CD7 RI 1.92TB\n\t\t1028 218d  DC NVMe SED CD7 RI 3.84TB\n\t\t1028 218e  DC NVMe CD7 RI 3.84TB\n\t\t1028 218f  DC NVMe SED CD7 RI 7.68TB\n\t\t1028 2190  DC NVMe CD7 RI 7.68TB\n\t\t1028 2191  DC NVMe SED CD7 RI 15.36TB\n\t\t1028 2192  DC NVMe CD7 RI 15.36TB\n\t\t1028 2193  NVMe CD7 E3.S 1.92TB\n\t\t1028 2194  NVMe CD7 E3.S 3.84TB\n\t\t1028 2195  NVMe CD7 E3.S 7.68TB\n\t0013  VMe SSD Controller CM7\n\t\t1028 222d  Ent NVMe CM7 FIPS U.2 RI 30.72TB\n\t\t1028 222e  Ent NVMe CM7 FIPS U.2 RI 15.36TB\n\t\t1028 222f  Ent NVMe CM7 FIPS U.2 RI 7.68TB\n\t\t1028 2230  Ent NVMe CM7 FIPS U.2 RI 3.84TB\n\t\t1028 2231  Ent NVMe CM7 FIPS U.2 RI 1.92TB\n\t\t1028 2232  Ent NVMe CM7 U.2 RI 30.72TB\n\t\t1028 2233  Ent NVMe CM7 U.2 RI 15.36TB\n\t\t1028 2234  Ent NVMe CM7 U.2 RI 7.68TB\n\t\t1028 2235  Ent NVMe CM7 U.2 RI 3.84TB\n\t\t1028 2236  Ent NVMe CM7 U.2 RI 1.92TB\n\t\t1028 2237  Ent NVMe CM7 FIPS U.2 MU 12.8TB\n\t\t1028 2238  Ent NVMe CM7 FIPS U.2 MU 6.4TB\n\t\t1028 2239  Ent NVMe CM7 FIPS U.2 MU 3.2TB\n\t\t1028 223a  Ent NVMe CM7 FIPS U.2 MU 1.6TB\n\t\t1028 223b  Ent NVMe CM7 U.2 MU 12.8TB\n\t\t1028 223c  Ent NVMe CM7 U.2 MU 6.4TB\n\t\t1028 223d  Ent NVMe CM7 U.2 MU 3.2TB\n\t\t1028 223e  Ent NVMe CM7 U.2 MU 1.6TB\n\t\t1028 228c  Ent NVMe CM7 U.2 MU 6.4TB\n\t0014  NVMe SSD Controller CM7 EDSFF\n\t\t1028 223f  Ent NVMe CM7 FIPS E3.S RI 15.36TB\n\t\t1028 2240  Ent NVMe CM7 FIPS E3.S RI 7.68TB\n\t\t1028 2241  Ent NVMe CM7 FIPS E3.S RI 3.84TB\n\t\t1028 2242  Ent NVMe CM7 E3.S RI 15.36TB\n\t\t1028 2243  Ent NVMe CM7 E3.S RI 7.68TB\n\t\t1028 2244  Ent NVMe CM7 E3.S RI 3.84TB\n\t\t1028 2245  Ent NVMe CM7 E3.S RI 1.92TB\n\t\t1028 2246  Ent NVMe CM7 E3.S MU 12.8TB\n\t\t1028 2247  Ent NVMe CM7 E3.S MU 6.4TB\n\t\t1028 2248  Ent NVMe CM7 E3.S MU 3.2TB\n\t\t1028 2249  Ent NVMe CM7 E3.S MU 1.6TB\n\t\t1028 22b7  Ent NVMe CM7 FIPS E3.S MU 1.6TB\n\t\t1028 22b8  Ent NVMe CM7 FIPS E3.S MU 3.2TB\n\t\t1028 22b9  Ent NVMe CM7 FIPS E3.S MU 6.4TB\n\t\t1028 22ba  Ent NVMe CM7 FIPS E3.S MU 12.8TB\n\t0018  Exceria Pro NVMe SSD\n\t001a  NVMe SSD Controller BG6 (DRAM-less)\n\t001b  NVMe SSD Controller EG6 (DRAM-less)\n\t001f  NVMe SSD Controller CD8\n\t\t1028 2223  DC NVMe CD8 U.2 SED 15.36TB\n\t\t1028 2224  DC NVMe CD8 U.2 SED 7.68TB\n\t\t1028 2225  DC NVMe CD8 U.2 SED 3.84TB\n\t\t1028 2226  DC NVMe CD8 U.2 SED 1.92TB\n\t\t1028 2227  DC NVMe CD8 U.2 SED 960GB\n\t\t1028 2228  DC NVMe CD8 U.2 15.36TB\n\t\t1028 2229  DC NVMe CD8 U.2 7.68TB\n\t\t1028 222a  DC NVMe CD8 U.2 3.84TB\n\t\t1028 222b  DC NVMe CD8 U.2 1.92TB\n\t\t1028 222c  DC NVMe CD8 U.2 960GB\n\t0025  NVMe SSD Controller CM7 2.5\"\n\t\t1028 222d  Ent NVMe CM7 FIPS U.2 RI 30.72TB\n\t\t1028 222e  Ent NVMe CM7 FIPS U.2 RI 15.36TB\n\t\t1028 222f  Ent NVMe CM7 FIPS U.2 RI 7.68TB\n\t\t1028 2230  Ent NVMe CM7 FIPS U.2 RI 3.84TB\n\t\t1028 2231  Ent NVMe CM7 FIPS U.2 RI 1.92TB\n\t\t1028 2232  Ent NVMe CM7 U.2 RI 30.72TB\n\t\t1028 2233  Ent NVMe CM7 U.2 RI 15.36TB\n\t\t1028 2234  Ent NVMe CM7 U.2 RI 7.68TB\n\t\t1028 2235  Ent NVMe CM7 U.2 RI 3.84TB\n\t\t1028 2236  Ent NVMe CM7 U.2 RI 1.92TB\n\t\t1028 2237  Ent NVMe CM7 FIPS U.2 MU 12.8TB\n\t\t1028 2238  Ent NVMe CM7 FIPS U.2 MU 6.4TB\n\t\t1028 2239  Ent NVMe CM7 FIPS U.2 MU 3.2TB\n\t\t1028 223a  Ent NVMe CM7 FIPS U.2 MU 1.6TB\n\t\t1028 223b  Ent NVMe CM7 U.2 MU 12.8TB\n\t\t1028 223c  Ent NVMe CM7 U.2 MU 6.4TB\n\t\t1028 223d  Ent NVMe CM7 U.2 MU 3.2TB\n\t\t1028 223e  Ent NVMe CM7 U.2 MU 1.6TB\n\t002a  Exceria Plus G3 NVMe SSD (DRAM-less)\n\t002b  NVMe SSD Controller CD8P\n\t002c  NVMe SSD Controller CD8P EDSFF\n\t\t1028 22bf  DC NVMe CD8P E3.S 15.36TB\n\t\t1028 22c0  DC NVMe CD8P E3.S 7.68TB\n\t\t1028 22c1  DC NVMe CD8P E3.S 3.84TB\n\t\t1028 22c2  DC NVMe CD8P E3.S 1.92TB\n\t\t1028 22c7  DC NVMe CD8P E3.S MU 12.8TB\n\t\t1028 22c8  DC NVMe CD8P E3.S MU 6.4TB\n\t\t1028 22c9  DC NVMe CD8P E3.S MU 3.2TB\n\t\t1028 22ca  DC NVMe CD8P E3.S MU 1.6TB\n\t002e  NVMe SSD Controller XD8\n\t002f  NVMe SSD Controller BG7 (DRAM-less)\n\t0030  NVMe SSD Controller EG7\n\t0031  PCIe 5.0 NVMe SSD Controller XG10\n\t0032  PCIe 4.0 NVMe SSD Controller XG10d\n\t0033  Exceria Plus G4 NVMe SSD (DRAM-less)\n1e17  Arnold & Richter Cine Technik GmbH & Co. Betriebs KG\n1e18  Beijing GuangRunTong Technology Development Co.,Ltd\n1e24  Squirrels Research Labs\n\t0101  Acorn CLE-101\n\t0215  Acorn CLE-215\n\t021f  Acorn CLE-215+\n\t1525  Xilinx BCU-1525\n# VU33P FPGA Accelerator\n\t1533  ForestKitten 33\n# JungleCat VU33P Module\n\t1633  JCM33\n# JungleCat VU35P Module\n\t1635  JCM35\n1e26  Fujitsu Client Computing Limited\n# nee Bitmain Technologies Ltd.\n1e30  Sophgo\n\t1684  BM1684 [Sophon Series Deep Learning Accelerator]\n\t2042  SG2042 Root Complex\n1e36  Shanghai Enflame Technology Co. Ltd\n\t0001  T10 [CloudBlazer]\n\t0002  T11 [CloudBlazer]\n\t0003  T10(QSFP-DD) [CloudBlazer]\n\t0021  T20(32GB) [CloudBlazer]\n\t0022  T20(64GB) [CloudBlazer]\n\t0023  T21(32GB) [CloudBlazer]\n\t0024  T21(64GB) [CloudBlazer]\n\t8001  I20 [CloudBlazer]\n\t8011  I10 [CloudBlazer]\n\t8012  I10L [CloudBlazer]\n# HHHL PCIe card, single slot, 3rd generation from Enflame\n\t8031  S6 [Enflame]\n# HHHL PCIe card, single slot, 3rd generation from Enflame, 24GB device memory\n\t8032  S6 [Enflame]\n# FHFL PCIe card, single slot, 3rd generation from Enflame\n\tc031  S30 [Enflame]\n# FHFL PCIe card, dual slot, 3rd generation from Enflame, 48GB device memory\n\tc032  S90 [Enflame]\n# FHFL PCIe card, dual slot, 3rd generation from Enflame, 48GB device memory\n\tc033  S60G [Enflame]\n# FHFL PCIe card, dual slot, 3rd generation from Enflame, 48GB device memory\n\tc035  S60 [Enflame]\n\tc041  L300 [Enflame]\n\tc042  L600 [Enflame]\n# nee Thinci, Inc\n1e38  Blaize, Inc\n\t0102  Xplorer X1600\n1e39  MEDION AG\n1e3a  Cactus Technologies Limited\n\t2263  270PM6, 270PM7 series NVMe SSD\n1e3b  DapuStor Corporation\n\t0600  NVMe SSD Controller DP600\n\t\t1e3b 0006  Enterprise NVMe SSD U.2 7.68TB (J5000)\n\t\t1e3b 000c  Enterprise NVMe SSD U.2 30.72TB (J5060)\n\t\t1e3b 000d  Enterprise NVMe SSD U.2 61.44TB (J5060)\n\t\t1e3b 000e  Enterprise NVMe SSD U.2 30.72TB (J5060D)\n\t\t1e3b 000f  Enterprise NVMe SSD U.2 61.44TB (J5060D)\n\t\t1e3b 0010  Enterprise NVMe SSD U.2 3.84TB (R5102)\n\t\t1e3b 0013  Enterprise NVMe SSD U.2 3.20TB (R5302)\n\t\t1e3b 0027  Enterprise NVMe SSD U.2 61.44TB (J5060)\n\t\t1e3b 0028  Enterprise NVMe SSD U.2 61.44TB (J5060D)\n\t\t1e3b 0030  Enterprise NVMe SSD U.2 3.84TB (J5100)\n\t\t1e3b 0031  Enterprise NVMe SSD U.2 7.68TB (J5100)\n\t\t1e3b 0032  Enterprise NVMe SSD U.2 15.36TB (J5100)\n\t\t1e3b 0033  Enterprise NVMe SSD U.2 3.20TB (J5300)\n\t\t1e3b 0034  Enterprise NVMe SSD U.2 6.40TB (J5300)\n\t\t1e3b 0035  Enterprise NVMe SSD U.2 12.80TB (J5300)\n\t\t1e3b 0036  Enterprise NVMe SSD AIC 7.68TB (J5110)\n\t\t1e3b 0037  Enterprise NVMe SSD AIC 6.40TB (J5310)\n\t\t1e3b 0038  Enterprise NVMe SSD U.2 3.84TB (J5100D)\n\t\t1e3b 0039  Enterprise NVMe SSD U.2 7.68TB (J5100D)\n\t\t1e3b 003b  Enterprise NVMe SSD U.2 3.20TB (J5300D)\n\t\t1e3b 003c  Enterprise NVMe SSD U.2 6.40TB (J5300D)\n\t\t1e3b 003e  Enterprise NVMe SSD AIC 3.84TB (J5110)\n\t\t1e3b 003f  Enterprise NVMe SSD AIC 3.20TB (J5310)\n\t\t1e3b 004c  Enterprise NVMe SSD U.2 QDP 1.92TB (J5100)\n\t\t1e3b 004d  Enterprise NVMe SSD U.2 QDP 1.60TB (J5300)\n\t\t1e3b 0050  Enterprise NVMe SSD U.2 3.84TB (R5100)\n\t\t1e3b 0051  Enterprise NVMe SSD U.2 7.68TB (R5100)\n\t\t1e3b 0052  Enterprise NVMe SSD U.2 15.36TB (R5100)\n\t\t1e3b 0053  Enterprise NVMe SSD U.2 3.20TB (R5300)\n\t\t1e3b 0054  Enterprise NVMe SSD U.2 6.40TB (R5300)\n\t\t1e3b 0055  Enterprise NVMe SSD U.2 12.80TB (R5300)\n\t\t1e3b 0056  Enterprise NVMe SSD U.2 3.84TB (R5101)\n\t\t1e3b 0059  Enterprise NVMe SSD U.2 3.20TB (R5301)\n\t\t1e3b 0060  Enterprise NVMe SSD U.2 3.84TB (R5100D)\n\t\t1e3b 0061  Enterprise NVMe SSD U.2 7.68TB (R5100D)\n\t\t1e3b 0063  Enterprise NVMe SSD U.2 3.20TB (R5300D)\n\t\t1e3b 0064  Enterprise NVMe SSD U.2 6.40TB (R5300D)\n\t\t1e3b 0066  Enterprise NVMe SSD U.2 3.84TB (R5101D)\n\t\t1e3b 0069  Enterprise NVMe SSD U.2 3.20TB (R5301D)\n\t\t1e3b 006c  Enterprise NVMe SSD U.2 1.92TB (R5101)\n\t\t1e3b 006d  Enterprise NVMe SSD U.2 1.60TB (J5301)\n\t\t1e3b 00b9  Enterprise NVMe SSD U.2 25.60TB\n\t\t1e3b 00be  Enterprise NVMe SSD U.2 30.72TB\n\t\t1e3b 00c1  Enterprise NVMe SSD U.2 25.60TB\n\t\t1e3b 00c4  Enterprise NVMe SSD U.2 30.72TB\n\t\t1e3b 00c7  Enterprise NVMe SSD U.2 25.60TB (J5301)\n\t\t1e3b 00c8  Enterprise NVMe SSD U.2 30.72TB (J5000)\n\t\t1e3b 00c9  Enterprise NVMe SSD U.2 15.36TB (J5000)\n\t\t1e3b 00ca  Enterprise NVMe SSD U.2 3.84TB (J5102)\n\t\t1e3b 00cb  Enterprise NVMe SSD U.2 7.68TB (J5102)\n\t\t1e3b 00cc  Enterprise NVMe SSD U.2 3.84TB (J5101)\n\t\t1e3b 00cd  Enterprise NVMe SSD U.2 7.68TB (J5101)\n\t\t1e3b 00ce  Enterprise NVMe SSD U.2 3.84TB (J5101D)\n\t\t1e3b 00cf  Enterprise NVMe SSD U.2 7.68TB (J5101D)\n\t\t1e3b 00dc  Enterprise NVMe SSD U.2 30.72TB (J5000)\n\t\t1e3b 00dd  Enterprise NVMe SSD U.2 30.72TB(J5000)\n\t\t1e3b 00de  Enterprise NVMe SSD U.2 15.36TB (J5000D)\n\t\t1e3b 00df  Enterprise NVMe SSD U.2 30.72TB (J5000)\n\t\t1e3b 00e7  Enterprise NVMe SSD U.2 30.72TB (J5000D)\n\t\t1e3b 00e8  Enterprise NVMe SSD U.2 3.20TB (J5301)\n\t\t1e3b 00e9  Enterprise NVMe SSD U.2 6.40TB (J5301)\n\t\t1e3b 00ea  Enterprise NVMe SSD U.2 3.20TB (J5301D)\n\t\t1e3b 00eb  Enterprise NVMe SSD U.2 6.40TB (J5301D)\n\t\t1e3b 00ec  Enterprise NVMe SSD U.2 30.72TB (J5101)\n\t\t1e3b 00ed  Enterprise NVMe SSD U.2 30.72TB (R5101)\n\t\t1e3b 00ee  Enterprise NVMe SSD U.2 15.36B (J5101)\n\t\t1e3b 00ef  Enterprise NVMe SSD U.2 12.80TB (J5301)\n\t\t1e3b 00f0  Enterprise NVMe SSD U.2 0.40TB (X2900)\n\t\t1e3b 00f1  Enterprise NVMe SSD U.2 0.80TB (X2900)\n\t\t1e3b 00f2  Enterprise NVMe SSD U.2 1.60TB (X2900)\n\t\t1e3b 00f3  Enterprise NVMe SSD U.2 3.20TB (X2900)\n\t\t1e3b 00f5  Enterprise NVMe SSD U.2 0.40TB (X2900P)\n\t\t1e3b 00f6  Enterprise NVMe SSD U.2 0.80TB (X2900P)\n\t0800  NVMe SSD Controller DP800\n\t\t1e3b 0001  Enterprise NVMe SSD U.2 3.84TB(R6100)\n\t\t1e3b 0007  Enterprise NVMe SSD U.2 15.36TB (R6100)\n\t\t1e3b 000a  Enterprise NVMe SSD U.2 3.20TB (R6300)\n\t\t1e3b 000d  Enterprise NVMe SSD U.2 6.40TB (R6300)\n\t\t1e3b 0010  Enterprise NVMe SSD U.2 12.80TB (R6300)\n\t\t1e3b 0018  Enterprise NVMe SSD U.2 3.84TB (R6100C)\n\t\t1e3b 0019  Enterprise NVMe SSD U.2 7.68TB (R6100C)\n\t\t1e3b 001a  Enterprise NVMe SSD U.2 3.20TB (R6300C)\n\t\t1e3b 001b  Enterprise NVMe SSD U.2 6.40TB (R6300C)\n\t\t1e3b 001c  Enterprise NVMe SSD U.2 7.68TB (R6100)\n\t\t1e3b 001d  Enterprise NVMe SSD U.2 3.84TB (R6101)\n\t1098  Haishen3 NVMe SSD\n\t\t1e3b 0001  Enterprise NVMe SSD U.2 0.8TB (H2100)\n\t\t1e3b 0002  Enterprise NVMe SSD U.2 0.96TB (H2200)\n\t\t1e3b 0004  Enterprise NVMe SSD U.2 1.6TB (H2100)\n\t\t1e3b 0005  Enterprise NVMe SSD U.2 1.92TB (H2200)\n\t\t1e3b 0009  Enterprise NVMe SSD U.2 0.8TB (H3100)\n\t\t1e3b 000a  Enterprise NVMe SSD U.2 0.96TB (H3200)\n\t\t1e3b 000c  Enterprise NVMe SSD U.2 1.6TB (H3100)\n\t\t1e3b 000d  Enterprise NVMe SSD U.2 1.92TB (H3200)\n\t\t1e3b 0014  Enterprise NVMe SSD U.2 3.2TB (H3100)\n\t\t1e3b 0015  Enterprise NVMe SSD U.2 3.84TB (H3200)\n\t\t1e3b 0021  Enterprise NVMe SSD U.2 6.4TB (H3100)\n\t\t1e3b 0022  Enterprise NVMe SSD U.2 7.68TB (H3200)\n\t\t1e3b 0052  Enterprise NVMe SSD U.2 0.8TB (H3900)\n\t\t1e3b 0053  Enterprise NVMe SSD U.2 1.6TB (H3900)\n\t\t1e3b 0059  Enterprise NVMe SSD U.2 0.75TB (H3900)\n\t\t1e3b 0061  Enterprise NVMe SSD HHHL 0.8TB (H2100)\n\t\t1e3b 0062  Enterprise NVMe SSD HHHL 0.96TB (H2200)\n\t\t1e3b 0064  Enterprise NVMe SSD HHHL 1.6TB (H2100)\n\t\t1e3b 0065  Enterprise NVMe SSD HHHL 1.92TB (H2200)\n\t\t1e3b 006c  Enterprise NVMe SSD HHHL 0.8TB (H3100)\n\t\t1e3b 006d  Enterprise NVMe SSD HHHL 0.96TB (H3200)\n\t\t1e3b 006f  Enterprise NVMe SSD HHHL 1.6TB (H3100)\n\t\t1e3b 0070  Enterprise NVMe SSD HHHL 1.92TB (H3200)\n\t\t1e3b 007c  Enterprise NVMe SSD HHHL 3.2TB (H3100)\n\t\t1e3b 007d  Enterprise NVMe SSD HHHL 3.84TB (H3200)\n\t\t1e3b 007f  Enterprise NVMe SSD HHHL 6.4TB (H3100)\n\t\t1e3b 0080  Enterprise NVMe SSD HHHL 7.68TB (H3200)\n\t\t1e3b 008a  Enterprise NVMe SSD HHHL 0.8TB (H3900)\n\t\t1e3b 008b  Enterprise NVMe SSD HHHL 1.6TB (H3900)\n\t\t1e3b 0091  Enterprise NVMe SSD HHHL 0.75TB (H3900)\n\t1321  AdgeStor NVMe SSD\n\t\t1e3b 4000  AdgeStor NVMe SSD M.2 0.48TB\n\t\t1e3b 4001  AdgeStor NVMe SSD M.2 0.96TB\n\t\t1e3b 4002  AdgeStor NVMe SSD M.2 1.92TB\n\t\t1e3b 4100  AdgeStor NVMe SSD M.2 0.48TB\n\t\t1e3b 4101  AdgeStor NVMe SSD M.2 0.96TB\n\t\t1e3b 4102  AdgeStor NVMe SSD M.2 1.92TB\n\t1333  Haishen5 NVMe SSD\n\t\t1e3b 001a  Enterprise NVMe SSD E3.S 1T 3.84TB (H5100)\n\t\t1e3b 001b  Enterprise NVMe SSD E3.S 1T 7.68TB (H5100)\n\t\t1e3b 001d  Enterprise NVMe SSD E3.S 1T 3.2TB (H5300)\n\t\t1e3b 001e  Enterprise NVMe SSD E3.S 1T 6.4TB (H5300)\n\t\t1e3b 0031  Enterprise NVMe SSD U2 3.84TB (H5100)\n\t\t1e3b 0032  Enterprise NVMe SSD U2 7.68TB (H5100)\n\t\t1e3b 0033  Enterprise NVMe SSD U2 15.36TB (H5100)\n\t\t1e3b 0034  Enterprise NVMe SSD U2 3.2TB (H5300)\n\t\t1e3b 0035  Enterprise NVMe SSD U2 6.4TB (H5300)\n\t\t1e3b 0036  Enterprise NVMe SSD U2 12.8TB (H5300)\n\t\t1e3b 004a  Enterprise NVMe SSD E3.S 1T 7.68TB (H5100)\n\t\t1e3b 004b  Enterprise NVMe SSD E3.S 1T 15.36TB (H5100)\n\t\t1e3b 004c  Enterprise NVMe SSD E3.S 1T 6.4TB (H5300)\n\t\t1e3b 004d  Enterprise NVMe SSD E3.S 1T 12.8TB (H5300)\n\t\t1e3b 0081  Enterprise NVMe SSD U.2 3.84TB (H5100)\n\t\t1e3b 0082  Enterprise NVMe SSD U.2 7.68TB (H5100)\n\t\t1e3b 0084  Enterprise NVMe SSD U.2 3.2TB (H5300)\n\t\t1e3b 0085  Enterprise NVMe SSD U.2 6.4TB (H5300)\n\t\t1e3b 008a  Enterprise NVMe SSD U.2 7.68TB (H5100)\n\t\t1e3b 008b  Enterprise NVMe SSD U.2 15.36TB (H5100)\n\t\t1e3b 008c  Enterprise NVMe SSD U.2 30.72TB (H5100)\n\t\t1e3b 008d  Enterprise NVMe SSD U.2 6.4TB (H5300)\n\t\t1e3b 008e  Enterprise NVMe SSD U.2 12.8TB (H5300)\n\t\t1e3b 008f  Enterprise NVMe SSD U.2 25.6TB (H5300)\n\t\t1e3b 0090  Enterprise NVMe SSD E1.S 9.5mm 3.84TB (H5100)\n\t\t1e3b 0091  Enterprise NVMe SSD E1.S 9.5mm 7.68TB (H5100)\n\t\t1e3b 0092  Enterprise NVMe SSD E1.S 9.5mm 3.2TB (H5300)\n\t\t1e3b 0093  Enterprise NVMe SSD E1.S 9.5mm 6.4TB (H5300)\n\t\t1e3b 0094  Enterprise NVMe SSD E1.S 9.5mm 3.84TB (H5100)\n\t\t1e3b 0096  Enterprise NVMe SSD E1.S 9.5mm 3.2TB (H5300)\n\t\t1e3b 0098  Enterprise NVMe SSD E1.S 9.5mm 7.68TB (H5100)\n\t\t1e3b 0099  Enterprise NVMe SSD E1.S 9.5mm 6.4TB (H5300)\n\t\t1e3b 00f0  Enterprise NVMe SSD U2 Mold\n\t3001  Ethernet Controller DN200 for 10GbE SFP+\n\t\t1e3b 3001  Ethernet Network Adapter DN200-X1V for 10GbE SFP+ 2-port\n\t3002  Ethernet Controller DN200 Series Virtual Function\n\t300c  Ethernet RAID Combo Controller DN200C for 1GbE\n\t\t1e3b 300c  Ethernet RAID Combo Adapter DN200C-G2V for 1GbE 4-port\n\t300d  Ethernet RAID Combo Controller DN200C Series Virtual Function\n\t5001  RAID Controller DP808A\n\t5002  RAID Controller DP808AL\n\t50b0  Flexraid6 BootRaid - Type I\n\t50b1  Flexraid6 BootRaid - Type II\n\t\t1e3b 0001  Flexraid6 BootRAID F6100\n\t50c1  Combo Card of BootRaid and Ethernet - Type I\n\t50c2  Combo Card of BootRaid and Ethernet - Type II\n\t50d0  NVME RAID Card DP800\n\t50d1  Flexraid6 NVMeRAID\n1e3d  Burlywood, Inc\n1e43  MaxLinear Inc\n\t8904  MxL8904\n\t8906  MxL8906\n\t8908  MxL8908\n1e44  Valve Software\n# the actual PCI-SIG member is Elektrobit, a daughter company of Continental\n1e48  Continental\n1e49  Yangtze Memory Technologies Co.,Ltd\n\t0001  ZHITAI PC005 NVMe SSD\n\t0021  ZHITAI TiPro5000 NVMe SSD\n\t0041  ZHITAI TiPro7000\n\t0071  ZHITAI TiPlus7100\n\t0081  ZHITAI Ti600 NVMe SSD\n# YMTC\n\t1001  PC005 NVMe SSD\n\t1011  PC210 M.2 2280 NVMe SSD\n\t1013  PC210 M.2 2242 NVMe SSD\n\t1031  PC300 M.2 2280 NVMe SSD (DRAM-less)\n\t1033  PC300 M.2 2242 NVMe SSD (DRAM-less)\n\t1071  PC411 M.2 2280 NVMe SSD (DRAM-less)\n\t1073  PC411 M.2 2242 NVMe SSD (DRAM-less)\n\t1081  PC41Q M.2 2280 NVMe SSD (DRAM-less)\n1e4b  MAXIO Technology (Hangzhou) Ltd.\n\t1001  NVMe SSD Controller MAP1001\n\t1002  NVMe SSD Controller MAP1002 (DRAM-less)\n\t1003  NVMe SSD Controller MAP1003\n\t1201  NVMe SSD Controller MAP1201\n\t1202  NVMe SSD Controller MAP1202 (DRAM-less)\n\t1601  NVMe SSD Controller MAP1601\n\t1602  NVMe SSD Controller MAP1602 (DRAM-less)\n\t1608  NVMe SSD Controller MAP1608 (DRAM-less)\n1e4c  GSI Technology\n\t0010  Associative Processing Unit [Leda]\n\t\t1e4c 0120  SE120\n\t0020  Associative Processing Unit [Leda-2]\n1e50  IP3 Tech (HK) Limited\n1e52  Tenstorrent Inc\n\t401e  Wormhole\n\t\t1e52 0014  n300\n\t\t1e52 0018  n150\n\tb140  Blackhole\n\tfaca  Grayskull\n\t\t1e52 0003  e150\n\t\t1e52 0007  e75\n\t\t1e52 000a  e300\n1e57  Beijing Panyi Technology Co., Ltd\n\t0100  The device has already been deleted.\n\t\t0000 0100  PY8800 64GB Accelerator\n1e59  Oxford Nanopore Technologies\n\t0001  MinION Mk1C\n1e5d  ASR Microelectronics\n\t7000  AI controller A7000\n\t7010  AI controller A7010\n1e60  Hailo Technologies Ltd.\n\t2864  Hailo-8 AI Processor\n\t45c4  Hailo-10H AI Processor\n1e67  Untether AI\n\t0002  runAI200 AI Inference Accelerator\n\t0004  speedAI240 AI Inference Accelerator\n1e68  Jiangsu Xinsheng Intelligent Technology Co., Ltd\n\t8111  EP2000Pro PCIe 3 NVMe SSD (DRAM-less)\n1e6b  Axiado Corp.\n1e6c  Xsight Labs Ltd.\n\t0001  XLX1A256A Switch ASIC\n\t0002  XLX2B128A Switch ASIC\n1e7b  Dataland\n1e7c  Brainchip Inc\n\tbca1  AKD1000 Neural Network Coprocessor [Akida]\n1e7e  Pliops\n\t0200  XDP [Extreme Data Processor PRO 1.0]\n\t9034  XDP [Extreme Data Processor FLEX 1.0]\n1e7f  Jiangsu Huacun Elec. Tech. Co., Ltd.\n\t6002  MMY MMSP350 PCIe 3 NVMe SSD (DRAM-less)\n\t6003  MMY HC512GP3KH2T PCIe 3 NVMe SSD (DRAM-less)\n1e81  Ramaxel Technology(Shenzhen) Limited\n\t1203  NVMe SSD Controller UHXXXa series\n\t\t1e81 a121  NVMe SSD UHXXXa series U.2 960GB\n\t\t1e81 a122  NVMe SSD UHXXXa series U.2 1920GB\n\t\t1e81 a123  NVMe SSD UHXXXa series U.2 3840GB\n\t\t1e81 a124  NVMe SSD UHXXXa series U.2 7680GB\n\t\t1e81 a125  NVMe SSD UHXXXa series U.2 15360GB\n\t\t1e81 a211  NVMe SSD UHXXXa series U.2 800GB\n\t\t1e81 a212  NVMe SSD UHXXXa series U.2 1600GB\n\t\t1e81 a213  NVMe SSD UHXXXa series U.2 3200GB\n\t\t1e81 a214  NVMe SSD UHXXXa series U.2 6400GB\n\t\t1e81 f123  NVMe SSD TP6500 series U.2 3840GB\n\t6206  AM620 NVMe SSD\n1e83  Huaqin Technology Co.Ltd\n1e85  Heitec AG\n1e89  ID Quantique SA\n\t0002  Quantis-PCIe-40M\n\t0003  Quantis-PCIe-240M\n1e93  Beijing Bytedance Network Technology Co., Ltd.\n# aka SED Systems\n1e94  Calian SED\n1e95  Solid State Storage Technology Corporation\n\t1000  XA1-311024 NVMe SSD M.2\n\t1001  CA6-8D512 NVMe SSD M.2\n\t1002  NVMe SSD [3DNAND] 2.5\" U.2 (LJ1)\n\t\t1e95 1101  NVMe SSD [3DNAND] 2.5\" U.2 (LJ1)\n\t\t1ea0 5636  TP1500 Series U.2 NVMe Datacenter SSD\n\t1003  CLR-8W512 NVMe SSD M.2 (DRAM-less)\n\t1005  PLEXTOR M10P(GN) NVMe SSD M.2\n\t1007  CL4-8D512 NVMe SSD M.2 (DRAM-less)\n\t1008  CL5-8D512 NVMe SSD M.2 (DRAM-less)\n\t100c  CL6 Series NVMe SSD M.2 (DRAM-less)\n\t1010  CX3 Series NVMe SSD\n\t\t1e95 0000  M.2 2280 480 GB\n\t\t1e95 0001  M.2 2280 960 GB\n\t\t1e95 0002  M.2 2280 1,920 GB\n\t\t1e95 0003  M.2 2280 3,840 GB\n\t3500  CA5-8D256 NVMe SSD M.2\n\t35f1  PLEXTOR M9PGN Plus NVMe SSD M.2\n\t9100  CL1-3D256-Q11 NVMe SSD M.2\n1e96  Drut Technologies Inc.\n1e9f  Lynxi Technologies Co., Ltd.\n1ea0  Tencent Technology (Shenzhen) Company Limited\n\t2a16  Cloud Intelligent Inference Controller\n\t2a18  Video Transcode Controller\n\t2a20  Cloud Intelligent Inference and Training Controller\n\t2a22  Cloud Intelligent Inference Controller\n\t2a24  Cloud Intelligent Inference Controller\n\t2a26  Cloud Intelligent Inference Controller\n\t2a30  Cloud Video Transcode Controller\n1ea7  Intelliprop, Inc\n\t223a  Typhon+ PCIe to Gen-Z Bridge\n\t224a  IPA-PE224A CXL to Gen-Z Bridge [Sphinx]\n1eab  Hefei DATANG Storage Technology Co.,LTD.\n\t300a  NVMe SSD Controller 300A\n\t300b  NVMe SSD Controller 300B (DRAM-less)\n1eac  Quectel Wireless Solutions Co., Ltd.\n\t1001  EM120R-GL LTE Modem\n\t1002  EM160R-GL LTE Modem\n\t2001  EM120R-GL\n1eae  XFX Limited\n1eb0  Shenzhen Electrical Appliances CO.\n\t1901  NVMe SSD Controller (DRAM-less)\n1eb1  VeriSilicon Inc\n\t1001  Video Accelerator\n1eb4  Quantum Nebula Microelectronics Technology Co.,Ltd.\n\t3401  SSD Contoller\n1eb6  Wuxi Stars Microsystem Technology Co., Ltd\n1eb9  Senscomm Semiconductor, Inc\n\t2020  SCM2625 Wi-Fi6 Network Adapter\n1ebd  EMERGETECH Company Ltd.\n\t0101  Seirios 2063 Video Codec\n1ec6  Vastai Technologies\n\t0100  SV100\n\t\t1ec6 0010  VA1V\n\t\t1ec6 0011  VA1A\n\t\t1ec6 0012  VA1-16G\n\t\t1ec6 0013  VA1E\n\t\t1ec6 0014  VA1L\n\t\t1ec6 0015  VA1-32G\n\t\t1ec6 0020  VA10-32G\n\t\t1ec6 0021  VA12-32G\n\t\t1ec6 0022  VA16\n\t\t1ec6 0023  VA10-64G\n\t\t1ec6 0024  VA10L\n\t\t1ec6 0025  VA12-64G\n\t\t1ec6 0026  VA12-128G\n\t\t1ec6 0030  VE1P\n\t\t1ec6 0031  VE1S\n\t\t1ec6 0032  VE1V\n\t\t1ec6 0033  VE1M\n\t\t1ec6 0034  VE1E\n\t\t1ec6 0035  VE1C\n\t\t1ec6 0036  VE1MT\n\t\t1ec6 003a  VR1S-8G\n\t\t1ec6 003b  VR1S-16G\n\t\t1ec6 003c  VR1M-8G\n\t\t1ec6 003d  VR1M-16G\n\t\t1ec6 003e  VR1MT-8G\n\t\t1ec6 003f  VR1MT-16G\n\t\t1ec6 0040  VA1M\n\t\t1ec6 0041  VA1U\n\t\t1ec6 0050  VAM\n\t0200  SG100\n\t\t1ec6 0060  VG1200\n\t\t1ec6 0061  VG1600\n\t\t1ec6 0062  VG1800\n\t\t1ec6 0063  VG1000-32G\n\t\t1ec6 0064  VG600\n\t\t1ec6 0065  VG800\n\t\t1ec6 0066  VG1000-64G\n\t\t1ec6 0067  VG1000-24G\n\t\t1ec6 0068  VG1000c-24G\n\t\t1ec6 0069  VG1000c-32G\n\t\t1ec6 006a  VG1000c-64G\n\t\t1ec6 006b  VG1000c-16G\n\t\t1ec6 006c  VG1000c-48G\n\t\t1ec6 006d  VG600c\n\t\t1ec6 006e  VG800c\n\t020f  SG100 vGPU\n\t0300  SR100\n# nee Innosilicon Co Ltd\n1ec8  Beijing Fantasy Technology Co., Ltd.\n\t8800  Fantasy I\n\t\t1ec8 12a2  Fantasy I Device\n\t8810  Fantasy I\n\t\t1ec8 12a2  Fantasy I Device\n\t8900  GR308\n\t8902  GR3 Audio\n\t9800  Fantasy II\n\t\t1ec8 12a2  Fantasy II Device\n\t9802  Fantasy II\n\t\t1ec8 12a2  Fantasy II Device\n\t9804  Fantasy II\n\t\t1ec8 12a2  Fantasy II Device\n\t9810  Fantasy II-M\n\t\t1ec8 12a2  Fantasy II Device\n\t9a00  GR316\n1ec9  Wingtech Group(HongKong)Limited\n1eca  Lightmatter\n\t0000  Envise-B\n1ed0  Hosin Global Electronics\n\t2283  Patriot P300 NVMe SSD (DRAM-less)\n1ed2  FuriosaAI, Inc.\n\t0000  Warboy\n\t0001  RNGD\n\t2222  RNGD-S\n1ed3  Yeston\n1ed5  Moore Threads Technology Co.,Ltd\n\t0100  MTT S10\n\t0101  MTT S10\n\t0102  MTT S30\n\t0105  MTT S50\n\t0106  MTT S60\n\t0111  MTT S100\n\t0121  MTT S1000M\n\t0122  MTT S1000\n\t0123  MTT S2000\n\t01ff  MTT HDMI/DP Audio\n\t0200  MTT S80 Engineering Sample\n\t0201  MTT S80\n\t0202  MTT S70\n\t0203  MTT S60\n\t0211  MTT X300\n\t0221  G2S80\n\t0222  MTT S3000\n\t\t1ed5 0001  C3150\n\t0223  G2S4\n\t0225  MTT S3000E\n\t\t1ed5 0001  C3150\n\t0251  G2N10\n\t02ff  MTT HDMI/DP Audio\n\t0300  MTT S90 Engineering Sample\n\t0301  MTT S90\n\t0313  MTT X500\n\t0323  MTT S4000\n\t0327  MTT S4000\n\t0328  MTT S4000\n\t03ff  MTT HDMI/DP Audio\n1ed8  Digiteq Automotive\n\t0101  FG4 PCIe Frame Grabber (T100)\n\t0201  FG4 PCIe Frame Grabber (T200)\n1ed9  Myrtle.ai\n1ee1  Suzhou Kuhan Information Technologies\n\t0050  Aurora NVMe SSD Controller\n\t\t1ee1 0009  Airglow A430 NVMe SSD U.2 1.6TB\n\t\t1ee1 000a  Airglow A430 NVMe SSD U.2 3.2TB\n\t\t1ee1 000b  Airglow A430 NVMe SSD U.2 4.8TB\n\t\t1ee1 0012  Airglow Z400 NVMe ZNS SSD U.2 5.76TB\n1ee4  PETAIO INC\n\t1180  PETA8118 NVMe SSD Series\n\t\t1ee4 0015  NVMe SSD U.2 1.92TB (P8118E)\n\t\t1ee4 0016  NVMe SSD U.2 3.84TB (P8118E)\n\t\t1ee4 0017  NVMe SSD U.2 7.68TB (P8118E)\n\t\t1ee4 0025  NVMe SSD U.2 1.6TB (P8118E)\n\t\t1ee4 0026  NVMe SSD U.2 3.2TB (P8118E)\n\t\t1ee4 0027  NVMe SSD U.2 6.4TB (P8118E)\n\t\t1ee4 0115  NVMe SSD U.2 1.92TB (P8118Z)\n\t\t1ee4 0116  NVMe SSD U.2 3.84TB (P8118Z)\n\t\t1ee4 0117  NVMe SSD U.2 7.68TB (P8118Z)\n\t\t1ee4 0125  NVMe SSD U.2 1.6TB (P8118Z)\n\t\t1ee4 0126  NVMe SSD U.2 3.2TB (P8118Z)\n\t\t1ee4 0127  NVMe SSD U.2 6.4TB (P8118Z)\n\t\t1ee4 0215  NVMe SSD U.2 1.92TB (P8118X)\n\t\t1ee4 0216  NVMe SSD U.2 3.84TB (P8118X)\n\t\t1ee4 0217  NVMe SSD U.2 7.68TB (P8118X)\n\t\t1ee4 0225  NVMe SSD U.2 1.6TB (P8118X)\n\t\t1ee4 0226  NVMe SSD U.2 3.2TB (P8118X)\n\t\t1ee4 0227  NVMe SSD U.2 6.4TB (P8118X)\n\t\t1ee4 0315  NVMe SSD U.2 1.92TB (P8118E4)\n\t\t1ee4 0316  NVMe SSD U.2 3.84TB (P8118E4)\n\t\t1ee4 0317  NVMe SSD U.2 7.68TB (P8118E4)\n\t\t1ee4 0325  NVMe SSD U.2 1.6TB (P8118E4)\n\t\t1ee4 0326  NVMe SSD U.2 3.2TB (P8118E4)\n\t\t1ee4 0327  NVMe SSD U.2 6.4TB (P8118E4)\n\t\t1ee4 0415  NVMe SSD U.2 1.92TB (P8118Z3)\n\t\t1ee4 0416  NVMe SSD U.2 3.84TB (P8118Z3)\n\t\t1ee4 0417  NVMe SSD U.2 7.68TB (P8118Z3)\n\t\t1ee4 0425  NVMe SSD U.2 1.6TB (P8118Z3)\n\t\t1ee4 0426  NVMe SSD U.2 3.2TB (P8118Z3)\n\t\t1ee4 0427  NVMe SSD U.2 6.4TB (P8118Z3)\n\t\t1ee4 0515  NVMe SSD U.2 1.92TB (P8118Z4)\n\t\t1ee4 0516  NVMe SSD U.2 3.84TB (P8118Z4)\n\t\t1ee4 0517  NVMe SSD U.2 7.68TB (P8118Z4)\n\t\t1ee4 0525  NVMe SSD U.2 1.6TB (P8118Z4)\n\t\t1ee4 0526  NVMe SSD U.2 3.2TB (P8118Z4)\n\t\t1ee4 0527  NVMe SSD U.2 6.4TB (P8118Z4)\n\t\t1ee4 0615  NVMe SSD U.2 1.92TB (P8128Z3)\n\t\t1ee4 0616  NVMe SSD U.2 3.84TB (P8128Z3)\n\t\t1ee4 0617  NVMe SSD U.2 7.68TB (P8128Z3)\n\t\t1ee4 0625  NVMe SSD U.2 1.6TB (P8128Z3)\n\t\t1ee4 0626  NVMe SSD U.2 3.2TB (P8128Z3)\n\t\t1ee4 0627  NVMe SSD U.2 6.4TB (P8128Z3)\n\t\t1ee4 3013  NVMe SSD AIC 480GB (P8118E)\n\t\t1ee4 3014  NVMe SSD AIC 960GB (P8118E)\n\t\t1ee4 3015  NVMe SSD AIC 1.92TB (P8118E)\n\t\t1ee4 3016  NVMe SSD AIC 3.84TB (P8118E)\n\t\t1ee4 3017  NVMe SSD AIC 7.68TB (P8118E)\n\t\t1ee4 3025  NVMe SSD AIC 1.6TB (P8118E)\n\t\t1ee4 3026  NVMe SSD AIC 3.2TB (P8118E)\n\t\t1ee4 3027  NVMe SSD AIC 6.4TB (P8118E)\n\t\t1ee4 3113  NVMe SSD AIC 480GB (P8118Z)\n\t\t1ee4 3114  NVMe SSD AIC 960GB (P8118Z)\n\t\t1ee4 3115  NVMe SSD AIC 1.92TB (P8118Z)\n\t\t1ee4 3116  NVMe SSD AIC 3.84TB (P8118Z)\n\t\t1ee4 3117  NVMe SSD AIC 7.68TB (P8118Z)\n\t\t1ee4 3125  NVMe SSD AIC 1.6TB (P8118Z)\n\t\t1ee4 3126  NVMe SSD AIC 3.2TB (P8118Z)\n\t\t1ee4 3127  NVMe SSD AIC 6.4TB (P8118Z)\n\t\t1ee4 3213  NVMe SSD AIC 480GB (P8118X)\n\t\t1ee4 3214  NVMe SSD AIC 960GB (P8118X)\n\t\t1ee4 3215  NVMe SSD AIC 1.92TB (P8118X)\n\t\t1ee4 3216  NVMe SSD AIC 3.84TB (P8118X)\n\t\t1ee4 3217  NVMe SSD AIC 7.68TB (P8118X)\n\t\t1ee4 3225  NVMe SSD AIC 1.6TB (P8118X)\n\t\t1ee4 3226  NVMe SSD AIC 3.2TB (P8118X)\n\t\t1ee4 3227  NVMe SSD AIC 6.4TB (P8118X)\n\t\t1ee4 3315  NVMe SSD AIC 1.92TB (P8118E4)\n\t\t1ee4 3316  NVMe SSD AIC 3.84TB (P8118E4)\n\t\t1ee4 3317  NVMe SSD AIC 7.68TB (P8118E4)\n\t\t1ee4 3325  NVMe SSD AIC 1.6TB (P8118E4)\n\t\t1ee4 3326  NVMe SSD AIC 3.2TB (P8118E4)\n\t\t1ee4 3327  NVMe SSD AIC 6.4TB (P8118E4)\n\t\t1ee4 3415  NVMe SSD AIC 1.92TB (P8118Z3)\n\t\t1ee4 3416  NVMe SSD AIC 3.84TB (P8118Z3)\n\t\t1ee4 3417  NVMe SSD AIC 7.68TB (P8118Z3)\n\t\t1ee4 3425  NVMe SSD AIC 1.6TB (P8118Z3)\n\t\t1ee4 3426  NVMe SSD AIC 3.2TB (P8118Z3)\n\t\t1ee4 3427  NVMe SSD AIC 6.4TB (P8118Z3)\n\t\t1ee4 3515  NVMe SSD AIC 1.92TB (P8118Z4)\n\t\t1ee4 3516  NVMe SSD AIC 3.84TB (P8118Z4)\n\t\t1ee4 3517  NVMe SSD AIC 7.68TB (P8118Z4)\n\t\t1ee4 3525  NVMe SSD AIC 1.6TB (P8118Z4)\n\t\t1ee4 3526  NVMe SSD AIC 3.2TB (P8118Z4)\n\t\t1ee4 3527  NVMe SSD AIC 6.4TB (P8118Z4)\n\t\t1ee4 3615  NVMe SSD AIC 1.92TB (P8128Z3)\n\t\t1ee4 3616  NVMe SSD AIC 3.84TB (P8128Z3)\n\t\t1ee4 3617  NVMe SSD AIC 7.68TB (P8128Z3)\n\t\t1ee4 3625  NVMe SSD AIC 1.6TB (P8128Z3)\n\t\t1ee4 3626  NVMe SSD AIC 3.2TB (P8128Z3)\n\t\t1ee4 3627  NVMe SSD AIC 6.4TB (P8128Z3)\n\t\t1ee4 abcd  NVMe SSD U.2\n\t1181  PETA8118 NVMe E1S Series\n\t\t1ee4 2015  NVMe SSD E1.S 1.92TB (P8118E)\n\t\t1ee4 2016  NVMe SSD E1.S 3.84TB (P8118E)\n\t\t1ee4 2017  NVMe SSD E1.S 7.68TB (P8118E)\n\t\t1ee4 2025  NVMe SSD E1.S 1.6TB (P8118E)\n\t\t1ee4 2026  NVMe SSD E1.S 3.2TB (P8118E)\n\t\t1ee4 2027  NVMe SSD E1.S 6.4TB (P8118E)\n\t\t1ee4 2115  NVMe SSD E1.S 1.92TB (P8118Z)\n\t\t1ee4 2116  NVMe SSD E1.S 3.84TB (P8118Z)\n\t\t1ee4 2117  NVMe SSD E1.S 7.68TB (P8118Z)\n\t\t1ee4 2125  NVMe SSD E1.S 1.6TB (P8118Z)\n\t\t1ee4 2126  NVMe SSD E1.S 3.2TB (P8118Z)\n\t\t1ee4 2127  NVMe SSD E1.S 6.4TB (P8118Z)\n\t\t1ee4 2215  NVMe SSD E1.S 1.92TB (P8118X)\n\t\t1ee4 2216  NVMe SSD E1.S 3.84TB (P8118X)\n\t\t1ee4 2217  NVMe SSD E1.S 7.68TB (P8118X)\n\t\t1ee4 2225  NVMe SSD E1.S 1.6TB (P8118X)\n\t\t1ee4 2226  NVMe SSD E1.S 3.2TB (P8118X)\n\t\t1ee4 2227  NVMe SSD E1.S 6.4TB (P8118X)\n\t\t1ee4 2315  NVMe SSD E1.S 1.92TB (P8118E4)\n\t\t1ee4 2316  NVMe SSD E1.S 3.84TB (P8118E4)\n\t\t1ee4 2317  NVMe SSD E1.S 7.68TB (P8118E4)\n\t\t1ee4 2325  NVMe SSD E1.S 1.6TB (P8118E4)\n\t\t1ee4 2326  NVMe SSD E1.S 3.2TB (P8118E4)\n\t\t1ee4 2327  NVMe SSD E1.S 6.4TB (P8118E4)\n\t\t1ee4 2415  NVMe SSD E1.S 1.92TB (P8118Z3)\n\t\t1ee4 2416  NVMe SSD E1.S 3.84TB (P8118Z3)\n\t\t1ee4 2417  NVMe SSD E1.S 7.68TB (P8118Z3)\n\t\t1ee4 2425  NVMe SSD E1.S 1.6TB (P8118Z3)\n\t\t1ee4 2426  NVMe SSD E1.S 3.2TB (P8118Z3)\n\t\t1ee4 2427  NVMe SSD E1.S 6.4TB (P8118Z3)\n\t\t1ee4 2515  NVMe SSD E1.S 1.92TB (P8118Z4)\n\t\t1ee4 2516  NVMe SSD E1.S 3.84TB (P8118Z4)\n\t\t1ee4 2517  NVMe SSD E1.S 7.68TB (P8118Z4)\n\t\t1ee4 2525  NVMe SSD E1.S 1.6TB (P8118Z4)\n\t\t1ee4 2526  NVMe SSD E1.S 3.2TB (P8118Z4)\n\t\t1ee4 2527  NVMe SSD E1.S 6.4TB (P8118Z4)\n\t\t1ee4 2615  NVMe SSD E1.S 1.92TB (P8128Z3)\n\t\t1ee4 2616  NVMe SSD E1.S 3.84TB (P8128Z3)\n\t\t1ee4 2617  NVMe SSD E1.S 7.68TB (P8128Z3)\n\t\t1ee4 2625  NVMe SSD E1.S 1.6TB (P8128Z3)\n\t\t1ee4 2626  NVMe SSD E1.S 3.2TB (P8128Z3)\n\t\t1ee4 2627  NVMe SSD E1.S 6.4TB (P8128Z3)\n\t1182  PETA8118 NVMe M2 Series\n\t\t1ee4 1013  NVMe SSD M.2 480GB (P8118E)\n\t\t1ee4 1014  NVMe SSD M.2 960GB (P8118E)\n\t\t1ee4 1015  NVMe SSD M.2 1.92TB (P8118E)\n\t\t1ee4 1016  NVMe SSD M.2 3.84TB (P8118E)\n\t\t1ee4 1023  NVMe SSD M.2 400GB (P8118E)\n\t\t1ee4 1024  NVMe SSD M.2 800GB (P8118E)\n\t\t1ee4 1025  NVMe SSD M.2 1.6TB (P8118E)\n\t\t1ee4 1026  NVMe SSD M.2 3.2TB (P8118E)\n\t\t1ee4 1113  NVMe SSD M.2 480GB (P8118Z)\n\t\t1ee4 1114  NVMe SSD M.2 960GB (P8118Z)\n\t\t1ee4 1115  NVMe SSD M.2 1.92TB (P8118Z)\n\t\t1ee4 1116  NVMe SSD M.2 3.84TB (P8118Z)\n\t\t1ee4 1123  NVMe SSD M.2 400GB (P8118Z)\n\t\t1ee4 1124  NVMe SSD M.2 800GB (P8118Z)\n\t\t1ee4 1125  NVMe SSD M.2 1.6TB (P8118Z)\n\t\t1ee4 1126  NVMe SSD M.2 3.2TB (P8118Z)\n\t\t1ee4 1213  NVMe SSD M.2 480GB (P8118X)\n\t\t1ee4 1214  NVMe SSD M.2 960GB (P8118X)\n\t\t1ee4 1215  NVMe SSD M.2 1.92TB (P8118X)\n\t\t1ee4 1216  NVMe SSD M.2 3.84TB (P8118X)\n\t\t1ee4 1223  NVMe SSD M.2 400GB (P8118X)\n\t\t1ee4 1224  NVMe SSD M.2 800GB (P8118X)\n\t\t1ee4 1225  NVMe SSD M.2 1.6TB (P8118X)\n\t\t1ee4 1226  NVMe SSD M.2 3.2TB (P8118X)\n\t\t1ee4 1313  NVMe SSD M.2 480GB (P8118E4)\n\t\t1ee4 1314  NVMe SSD M.2 960GB (P8118E4)\n\t\t1ee4 1315  NVMe SSD M.2 1.92TB (P8118E4)\n\t\t1ee4 1316  NVMe SSD M.2 3.84TB (P8118E4)\n\t\t1ee4 1317  NVMe SSD M.2 7.68TB (P8118E4)\n\t\t1ee4 1323  NVMe SSD M.2 400GB (P8118E4)\n\t\t1ee4 1324  NVMe SSD M.2 800GB (P8118E4)\n\t\t1ee4 1325  NVMe SSD M.2 1.6TB (P8118E4)\n\t\t1ee4 1326  NVMe SSD M.2 3.2TB (P8118E4)\n\t\t1ee4 1327  NVMe SSD M.2 6.4TB (P8118E4)\n\t\t1ee4 1413  NVMe SSD M.2 480GB (P8118Z3)\n\t\t1ee4 1414  NVMe SSD M.2 960GB (P8118Z3)\n\t\t1ee4 1415  NVMe SSD M.2 1.92TB (P8118Z3)\n\t\t1ee4 1416  NVMe SSD M.2 3.84TB (P8118Z3)\n\t\t1ee4 1417  NVMe SSD M.2 7.68TB (P8118Z3)\n\t\t1ee4 1423  NVMe SSD M.2 400GB(P8118Z3)\n\t\t1ee4 1424  NVMe SSD M.2 800GB (P8118Z3)\n\t\t1ee4 1425  NVMe SSD M.2 1.6TB (P8118Z3)\n\t\t1ee4 1426  NVMe SSD M.2 3.2TB (P8118Z3)\n\t\t1ee4 1427  NVMe SSD M.2 6.4TB (P8118Z3)\n\t\t1ee4 1513  NVMe SSD M.2 480GB (P8118Z4)\n\t\t1ee4 1514  NVMe SSD M.2 960GB (P8118Z4)\n\t\t1ee4 1515  NVMe SSD M.2 1.92TB (P8118Z4)\n\t\t1ee4 1516  NVMe SSD M.2 3.84TB (P8118Z4)\n\t\t1ee4 1517  NVMe SSD M.2 7.68TB (P8118Z4)\n\t\t1ee4 1523  NVMe SSD M.2 400GB (P8118Z4)\n\t\t1ee4 1524  NVMe SSD M.2 800GB (P8118Z4)\n\t\t1ee4 1525  NVMe SSD M.2 1.6TB (P8118Z4)\n\t\t1ee4 1526  NVMe SSD M.2 3.2TB (P8118Z4)\n\t\t1ee4 1527  NVMe SSD M.2 6.4TB (P8118Z4)\n\t\t1ee4 1613  NVMe SSD M.2 480GB (P8128Z3)\n\t\t1ee4 1614  NVMe SSD M.2 960GB (P8128Z3)\n\t\t1ee4 1615  NVMe SSD M.2 1.92TB (P8128Z3)\n\t\t1ee4 1616  NVMe SSD M.2 3.84TB (P8128Z3)\n\t\t1ee4 1617  NVMe SSD M.2 7.68TB (P8128Z3)\n\t\t1ee4 1623  NVMe SSD M.2 400GB (P8128Z3)\n\t\t1ee4 1624  NVMe SSD M.2 800GB (P8128Z3)\n\t\t1ee4 1625  NVMe SSD M.2 1.6TB (P8128Z3)\n\t\t1ee4 1626  NVMe SSD M.2 3.2TB (P8128Z3)\n\t\t1ee4 1627  NVMe SSD M.2 6.4TB (P8128Z3)\n1ee9  SUSE LLC\n1eec  Viscore Technologies Ltd\n\t0102  VSE250231S Dual-port 10Gb/25Gb Ethernet PCIe\n\t1eec  VSE250231S Dual-port 10Gb/25Gb Ethernet PCIe\n1eed  XDX Computing Technology Ltd.\n\t10a0  XDX110 Graphic/VGA Controller\n\t10a1  XDX110 Audio Controller\n\t10a2  XDX110M\n\t10a4  XDX E1100\n\t1140  XDX120\n\t1142  XDX120M\n\t1144  XDX E1200\n\t1150  XDX120S\n\t1160  XDX121\n\t1170  XDX121S\n\t11e0  XDX130\n\t11e4  XDX E1300\n\t1320  XDX150\n\t1323  XDX R1500\n\t1324  XDX X1500\n\t1330  XDX150S\n\t1333  XDX R1510\n\t1340  XDX151\n\t1350  XDX151S\n\t1360  XDX151T\n\t13c0  XDX160T\n\t13d0  XDX160S\n\t13d3  XDX R1610\n\t1500  XDX180\n\t1503  XDX R1800\n\t1504  XDX X1800\n\t1510  XDX180S\n\t15a0  XDX190\n\t15a3  XDX R1900\n\t15a4  XDX X1900\n\t15a5  XDX X1900D\n\t15b0  XDX190S\n\t1810  XDX TJ01 Audio\n\t1820  XDX TJ02 Audio\n\t1830  XDX TJ03 Audio\n1ef6  GrAI Matter Labs\n1ef7  Shenzhen Gunnir Technology Development Co., Ltd\n1efb  Flexxon Pte Ltd\n1eff  Rebellions Inc.\n\t1020  RBLN-CA2 (PF)\n\t1021  RBLN-CA2 (VF)\n\t1110  RBLN-CA11 (PF)\n\t1111  RBLN-CA11 (VF)\n\t1120  RBLN-CA12 (PF)\n\t1121  RBLN-CA12 (VF)\n\t1210  RBLN-CA21 (PF)\n\t1211  RBLN-CA21 (VF)\n\t1220  RBLN-CA22 (PF)\n\t1221  RBLN-CA22 (VF)\n\t1250  RBLN-CA25 (PF)\n\t1251  RBLN-CA25 (VF)\n1f02  Beijing Dayu Technology\n1f03  Shenzhen Shichuangyi Electronics Co., Ltd\n\t1202  MAP1202-Based NVMe SSD (DRAM-less)\n\t2262  SM2262EN-based OEM SSD\n\t2263  SM2263XT-Base NVMe SSD\n\t5216  IG5216-based NVMe SSD (DRAM-less)\n\t5220  IG5220-Based NVMe SSD\n\t5236  IG5236-Based NVMe SSD\n\t5636  IG5636-Based NVMe SSD\n1f0a  Motorcomm Microelectronics.\n\t6801  YT6801 Gigabit Ethernet Controller\n1f0d  DeGirum Corp.\n\t0100  AI Accelerator [ORCA]\n1f0f  NebulaMatrix Technology\n\t1041  D1055AS vDPA Ethernet Controller\n\t\t1f0f 0001  D1055AS vDPA Ethernet Controller\n\t1042  D1055AS vDPA Storage Controller\n\t\t1f0f 0001  D1055AS vDPA Storage Controller\n\t1220  D1055AS Ethernet Controller\n\t1221  D1055AS Ethernet Controller\n\t1222  D1055AS Ethernet Controller\n\t1223  D1055AS Ethernet Controller\n\t1600  M16104 Family\n\t\t1f0f 0001  M16104 Family\n\t1601  M16104 Family Virtual Function\n\t\t1f0f 0001  M16104 Family Virtual Function\n\t1a00  M16104 Family\n\t\t1f0f 0001  M16104 Family\n\t1a01  M16104 Family Virtual Function\n\t\t1f0f 0001  M16104 Family Virtual Function\n\t2022  D1055AS PCI Express Switch Upstream Port\n\t3403  M18110 Family\n\t3404  M18110 Lx Family\n\t3405  M18110 Family BASE-T\n\t3406  M18110 Lx Family BASE-T\n\t3407  M18110 Family OCP\n\t3408  M18110 Lx Family OCP\n\t3409  M18110 Family BASE-T OCP\n\t340a  M18110 Lx Family BASE-T OCP\n\t340b  M18000 Family\n\t340c  M18000 Lx Family\n\t340d  M18000 Family BASE-T\n\t340e  M18000 Lx Family BASE-T\n\t340f  M18000 Family OCP\n\t3410  M18000 Lx Family OCP\n\t3411  M18000 Family BASE-T OCP\n\t3412  M18000 Lx Family BASE-T OCP\n\t3413  M18000 Family Virtual Function\n\t9088  D1055AS PCI Express Switch Downstream Port\n1f16  XConn Technologies\n# XConn XC50256 CXL2.0/PCIe5.0 switch\n\tc500  XC50256\n1f17  Zettastone Technology\n1f18  c-payne GmbH\n\t0001  PCIe gen4 Switch Backplane 5x x16 - 4W\n\t0002  PCIe gen4 Switch Backplane 4x x16 - 5W\n\t0101  PCIe gen5 MCIO Switch 100-Lane\n\t0102  PCIe gen5 MCIO Switch 52-Lane\n1f1c  Sophgo Technologies Inc.\n\t1686  BM1684X [Sophon Series Deep Learning Accelerator]\n1f24  xFusion Digital Technologies Co., Ltd.\n\t1058  EP500/EP600 NVMe SSD\n\t\t1f24 1114  EP500 NVMe SSD(RI)\n\t\t1f24 1115  EP600 NVMe SSD(MU)\n1f2e  AzurEngine Technologies\n\t00a1  [AE] AzureBlade Accelerator\n\t00b1  [AE] AzureBlade Accelerator\n\t00c1  [AE] AzureBlade Accelerator\n1f2f  China Mobile (Hangzhou) Information Technology Co.Ltd.\n\t1513  DERA MENG NVMe Controller\n\t\t1f2f 6113  KM660 U.2 1.6TB NVMe SSD\n\t\t1f2f 6114  KM560 U.2 1.92TB NVMe SSD\n\t\t1f2f 6115  KM660 U.2 3.2TB NVMe SSD\n\t\t1f2f 6116  KM560 U.2 3.84TB NVMe SSD\n\t\t1f2f 6118  KM560 U.2 7.68TB NVMe SSD\n1f31  Nextorage\n\t4512  Nextorage NE1N NVMe SSD\n1f3f  3SNIC Ltd\n\t2100  SSSHBA SAS/SATA HBA\n\t\t1f3f 0120  HBA 32 Ports\n\t\t1f3f 0125  HBA 40 Ports\n\t\t1f3f 0180  HBA 16 Ports\n\t\t1f3f 0185  HBA 8 Ports\n\t2200  SSSRAID RAID controller\n\t\t1f3f 0185  RAID Controller 16 Ports with 2G Cache\n\t\t1f3f 01a1  RAID Controller 40 Ports with 2G Cache\n\t\t1f3f 01a4  RAID Controller 16 Ports with 4G Cache\n\t\t1f3f 01a8  RAID Controller 32 Ports with 4G Cache\n\t\t1f3f 01ad  RAID Controller 40 Ports with 4G Cache\n\t9001  SSSNIC Ethernet VF\n\t\t1f3f 1000  Ethernet VF\n\t9002  SSSNIC Ethernet VF Hyper-V\n\t\t1f3f 1000  Ethernet VF Hyper-V\n\t9003  SSSNIC Ethernet SDI VF\n\t\t1f3f 1000  Ethernet SDI VF\n\t9004  SSSNIC Ethernet SDI VF Hyper-V\n\t\t1f3f 1000  Ethernet SDI VF Hyper-V\n\t9008  SSSFC VF\n\t\t1f3f 1000  3SFC VF\n\t9009  SSSFC VF Hyper-V\n\t\t1f3f 1000  3SFC VF Hyper-V\n\t9010  SSSFC FC Controller\n\t\t1f3f 0041  Dual Port 16GE FC to PCIe Gen4 x16 Adapter\n\t\t1f3f 0061  Dual Port 32GE FC to PCIe Gen4 x16 Adapter\n\t9020  SSSNIC Ethernet Network Adapter\n\t\t1f3f 0051  Dual Port 25GE Ethernet Network Adapter\n\t\t1f3f 0052  Quad Port 25GE Ethernet Network Adapter\n\t\t1f3f 00a1  Dual Port 100GE Ethernet Network Adapter\n\t9030  SSSNIC IPU\n\t\t1f3f 0051  Dual Port 25GE IPU\n\t9031  SSSNIC SDI5.0\n\t\t1f3f 0051  Dual Port 25GE SDI5.0lite\n\t\t1f3f 00a1  Dual Port 100GE SDI5.0\n\t9032  SSSNIC SDI5.1\n\t\t1f3f 00a1  Dual Port 100GE SDI5.1\n1f40  Netac Technology Co.,Ltd\n\t0001  PCIe 4 NVMe SSD (DRAM-less)\n\t1202  PCIe 3 NVMe SSD (DRAM-less)\n\t1602  PCIe 4 NVMe SSD (DRAM-less)\n\t1f40  PCIe 4 NVMe SSD (DRAM-less)\n\t2263  PCIe 3 SM based NVMe SSD (DRAM-less)\n\t5216  PCIe 3 NVMe SSD (DRAM-less)\n\t5236  PCIe 4 INNOGRIT based NVMe SSD\n\t5765  PCIe 3 NVMe SSD (DRAM-less)\n1f44  VVDN Technologies Private Limited\n1f47  YUSUR Technology Co., Ltd.\n\t1001  FLEXFLOW-2200T Ethernet Controller\n\t\t1f47 0001  Ethernet 10G 2P FLEXFLOW-2200T\n\t\t1f47 0002  Ethernet 25G 2P FLEXFLOW-2200T\n\t\t1f47 0003  Ethernet 40G 2P FLEXFLOW-2200T\n\t\t1f47 0004  Ethernet 100G 1P FLEXFLOW-2200T\n\t\t1f47 0005  Ethernet 100G 2P FLEXFLOW-2200T\n\t\t1f47 0006  Ethernet 10G 2P FLEXFLOW-2200T\n\t\t1f47 0007  Ethernet 25G 2P FLEXFLOW-2200T\n\t\t1f47 0008  Ethernet 40G 2P FLEXFLOW-2200T\n\t\t1f47 0009  Ethernet 100G 1P FLEXFLOW-2200T\n\t\t1f47 000a  Ethernet 100G 2P FLEXFLOW-2200T\n\t1002  FLEXFLOW-2200T Ethernet Controller [Virtual Function]\n\t1003  FLEXFLOW-2200T Ethernet Controller [MGMT Function]\n\t1004  FLEXFLOW-2200T DATA Offload Engine\n\t1005  CONFLUX-2200P NVMe Controller\n\t1011  FLEXFLOW-2200T Ethernet Controller\n\t\t1f47 0001  Ethernet 10G 2P FLEXFLOW-2200T\n\t\t1f47 0002  Ethernet 25G 2P FLEXFLOW-2200T\n\t\t1f47 0003  Ethernet 40G 2P FLEXFLOW-2200T\n\t\t1f47 0004  Ethernet 100G 1P FLEXFLOW-2200T\n\t\t1f47 0005  Ethernet 100G 2P FLEXFLOW-2200T\n\t\t1f47 0006  Ethernet 10G 2P FLEXFLOW-2200T\n\t\t1f47 0007  Ethernet 25G 2P FLEXFLOW-2200T\n\t\t1f47 0008  Ethernet 40G 2P FLEXFLOW-2200T\n\t\t1f47 0009  Ethernet 100G 1P FLEXFLOW-2200T\n\t\t1f47 000a  Ethernet 100G 2P FLEXFLOW-2200T\n# RDMA-PF\n\t1203  FLEXFLOW-2200T RoCEv2 Network Controller\n# Network Accelerating Card\n\t2018  DPU Card\n# Network Accelerating Card\n\t2020  DPU\n\t3101  FLEXFLOW-2100R Ethernet Controller\n\t\t1f47 0001  Ethernet 10G 2P FLEXFLOW-2100R\n\t\t1f47 0002  Ethernet 25G 2P FLEXFLOW-2100R\n\t\t1f47 0003  Ethernet 50G 2P FLEXFLOW-2100R\n\t\t1f47 0004  Ethernet 100G 2P FLEXFLOW-2100R\n\t\t1f47 0005  Ethernet 10G 2P FLEXFLOW-2100R\n\t\t1f47 0006  Ethernet 25G 2P FLEXFLOW-2100R\n\t\t1f47 0007  Ethernet 50G 2P FLEXFLOW-2100R\n\t\t1f47 0008  Ethernet 100G 2P FLEXFLOW-2100R\n\t3201  FLEXFLOW-2200R Ethernet Controller\n\t\t1f47 0001  Ethernet 10G 2P FLEXFLOW-2200R\n\t\t1f47 0002  Ethernet 25G 2P FLEXFLOW-2200R\n\t\t1f47 0003  Ethernet 50G 2P FLEXFLOW-2200R\n\t\t1f47 0004  Ethernet 100G 2P FLEXFLOW-2200R\n\t\t1f47 0005  Ethernet 10G 2P FLEXFLOW-2200R\n\t\t1f47 0006  Ethernet 25G 2P FLEXFLOW-2200R\n\t\t1f47 0007  Ethernet 50G 2P FLEXFLOW-2200R\n\t\t1f47 0008  Ethernet 100G 2P FLEXFLOW-2200R\n\t3211  FLEXFLOW-2200R Ethernet Controller\n\t\t1f47 0001  Ethernet 10G 2P FLEXFLOW-2200R\n\t\t1f47 0002  Ethernet 25G 2P FLEXFLOW-2200R\n\t\t1f47 0003  Ethernet 50G 2P FLEXFLOW-2200R\n\t\t1f47 0004  Ethernet 100G 2P FLEXFLOW-2200R\n\t\t1f47 0005  Ethernet 10G 2P FLEXFLOW-2200R\n\t\t1f47 0006  Ethernet 25G 2P FLEXFLOW-2200R\n\t\t1f47 0007  Ethernet 50G 2P FLEXFLOW-2200R\n\t\t1f47 0008  Ethernet 100G 2P FLEXFLOW-2200R\n\t4001  CONFLUX-2200E Ethernet Controller\n\t\t1f47 0001  Ethernet 25G 2P CONFLUX-2200E\n\t\t1f47 0002  Ethernet 40G 2P CONFLUX-2200E\n\t\t1f47 0003  Ethernet 100G 1P CONFLUX-2200E\n\t\t1f47 0004  Ethernet 100G 2P CONFLUX-2200E\n\t\t1f47 0005  Ethernet 25G 2P CONFLUX-2200E\n\t\t1f47 0006  Ethernet 40G 2P CONFLUX-2200E\n\t\t1f47 0007  Ethernet 100G 1P CONFLUX-2200E\n\t\t1f47 0008  Ethernet 100G 2P CONFLUX-2200E\n\t4002  CONFLUX-2200E Ethernet Controller [Virtual Function]\n\t4003  CONFLUX-2200E Ethernet Controller [MGMT Function]\n\t4004  CONFLUX-2200E DATA Offload Engine\n\t4203  CONFLUX-2200E RoCEv2 Network Controller\n\t5001  CONFLUX-2200P Ethernet Controller\n\t\t1f47 0001  Ethernet 25G 2P CONFLUX-2200P\n\t\t1f47 0003  Ethernet 100G 2P CONFLUX-2200P\n\t\t1f47 0004  Ethernet 25G 2P CONFLUX-2200P\n\t\t1f47 0006  Ethernet 100G 2P CONFLUX-2200P\n\t\t1f47 0007  Ethernet 25G 2P CONFLUX-2200P\n\t\t1f47 0009  Ethernet 100G 2P CONFLUX-2200P\n\t\t1f47 000a  Ethernet 25G 2P CONFLUX-2200P\n\t\t1f47 000c  Ethernet 100G 2P CONFLUX-2200P\n\t5002  CONFLUX-2200P Ethernet Controller [Virtual Function]\n\t5003  CONFLUX-2200P NVMe Controller\n\t\t1f47 0001  Ethernet 25G 2P CONFLUX-2200P\n\t\t1f47 0003  Ethernet 100G 2P CONFLUX-2200P\n\t\t1f47 0004  Ethernet 25G 2P CONFLUX-2200P\n\t\t1f47 0006  Ethernet 100G 2P CONFLUX-2200P\n\t\t1f47 0007  Ethernet 25G 2P CONFLUX-2200P\n\t\t1f47 0009  Ethernet 100G 2P CONFLUX-2200P\n\t\t1f47 000a  Ethernet 25G 2P CONFLUX-2200P\n\t\t1f47 000c  Ethernet 100G 2P CONFLUX-2200P\n\t5004  CONFLUX-2200P NVMe Controller [Virtual Function]\n\t5005  CONFLUX-2200P Ethernet Controller [MGMT Function]\n\t\t1f47 0001  CONFLUX-2200P Ethernet Controller [MGMT Function]\n\t\t1f47 0002  CONFLUX-2200P Ethernet Controller [MGMT Function] DPU\n\t5006  CONFLUX-2200P Ethernet Controller [YDMI Function]\n\t\t1f47 0001  CONFLUX-2200P Ethernet Controller [YDMI Function]\n\t\t1f47 0002  CONFLUX-2200P Ethernet Controller [YDMI Function] DPU\n\t5007  CONFLUX-2200P DATA OFFLOAD ENGINE\n\t5011  CONFLUX-2200P Ethernet Controller\n\t\t1f47 0004  Ethernet 25G 2P CONFLUX-2200P\n\t\t1f47 0006  Ethernet 100G 2P CONFLUX-2200P\n\t\t1f47 000a  Ethernet 25G 2P CONFLUX-2200P\n\t\t1f47 000c  Ethernet 100G 2P CONFLUX-2200P\n\t5015  CONFLUX-2200P Ethernet Controller [MGMT Function]\n\t\t1f47 0001  CONFLUX-2200P Ethernet Controller [MGMT Function]\n\t\t1f47 0002  CONFLUX-2200P Ethernet Controller [MGMT Function] DPU\n\t5016  CONFLUX-2200P Ethernet Controller [YDMI Function]\n\t\t1f47 0001  CONFLUX-2200P Ethernet Controller [YDMI Function]\n\t\t1f47 0002  CONFLUX-2200P Ethernet Controller [YDMI Function] DPU\n1f4b  Axera Semiconductor Co., Ltd\n1f52  MangoBoost Inc.\n\t1008  Mango GPUBoost - RDMA\n\t1020  Mango NetworkBoost - TCP\n\t1022  Mango StorageBoost - NTI\n\t1023  Mango StorageBoost - NTT\n1f56  SAPEON Inc.\n1f60  Accelecom\n\t0001  XELE-NIC 25K5\n\t0054  XELE-NIC 25K5\n1f67  Yunsilicon Technology\n\t1011  metaConnect SmartNIC Physical Function\n\t1012  metaConnect SmartNIC Virtual Function\n\t1051  metaFusion DPU Physical Function\n\t1052  metaFusion DPU Virtual Function\n\t1059  metaFusion DPU SoC Network Interface\n\t1111  YSA-100 RDMA Ethernet Network Controller\n\t\t1bd4 00b2  O1E2YYSA100\n\t\t1bd4 00b9  O2E1YYSA100\n\t\t1ff9 00b1  ENFY1102-QP2\n\t\t1ff9 00b8  ENFY1202-QP1\n\t\t1ff9 00ba  ENFY1251-SP4\n\t\t1ff9 00bb  ENFY1251-SP4 (Roce)\n\t1112  metaScale SmartNIC Virtual Function\n\t1151  metaVisor DPU Physical Function\n\t1152  metaVisor DPU Virtual Function\n1f6c  CIX Technology Group Co., Ltd.\n\t0001  CIX P1 CD8180 PCI Express Root Port\n1f73  Shenzhen Quanxing Tech Co., Ltd.\n1f7a  Efinix, Inc.\n\t0100  Default ID for Titanium FPGA PCIe Interface (AXI)\n1f82  d-Matrix\n\t0011  Corsair [DMX 1000 Series]\n\t00f1  Jetstream [DMX F1 Transparent NIC]\n1f90  Quside Technologies\n\t7024  QRNG PCIe Device\n\t7025  QRNG PCIe Device\n1f99  Shenzhen Techwinsemi Technology Co., Ltd.\n\t1202  TWSC TE3420 series\n\t1608  PCIe Gen4 x4 M.2 2280\n\t1f88  TE3420 PCIe Gen3 x4 M.2 2280\n\t3420  PCIe Gen3 x4 M.2 2280\n1f9d  Axelera AI\n\t1100  Metis AIPU (rev 02)\n\t11aa  Metis AIPU (rev 01)\n1faa  Hexaflake (Shanghai) Information Technology Co., Ltd.\n\t0c10  Compass C10 PF\n\t0c11  Compass C10 VF\n\t0c80  Compass2 C80 PF\n\t0c81  Compass2 C80 VF\n1fab  Unifabrix Ltd.\n\t0000  Nexus Alpha IVPU\n\t0100  NoX Gamma\n\t01fd  Smart Memory Node Generic CXL Port (T1)\n# UnifabriX Smart Memory Node Generic CXL Port\n\t01fe  Smart Memory Node Generic CXL Port (T2)\n# UnifabriX Smart Memory Node Generic CXL Port\n\t01ff  Smart Memory Node Generic CXL Port (T3)\n\t1b00  MAX Host Device\n1fb0  ICube Corporation Limited\n\t1000  NF1000 Series GPU\n\t\t1fb0 1001  NF1001\n\t\t1fb0 1002  NF1002\n\t\t1fb0 1003  NF1003\n# NF1000 Series GPU\n\t1001  NF1001\n\t\t1fb0 1001  NF1001\n\t\t1fb0 1002  NF1002\n\t\t1fb0 1003  NF1003\n\t2000  NF2000 Series GPU\n\t\t1fb0 2001  NF2001\n\t\t1fb0 2002  NF 2002\n\t\t1fb0 2003  NF 2003\n\t3000  NF3000 Series GPU\n\t\t1fb0 3001  NF3001\n\t\t1fb0 3002  NF3002\n\t\t1fb0 3003  NF3003\n\t4000  NF4000 Series GPU\n\t\t1fb0 4001  NF4001\n\t\t1fb0 4002  NF4002\n\t\t1fb0 4003  NF4003\n\t5000  NF5000 Series GPU\n\t\t1fb0 5001  NF 5001\n\t\t1fb0 5002  NF 5002\n\t\t1fb0 5003  NF5003\n# nee Tumsan Oy\n1fc0  Ascom (Finland) Oy\n\t0300  E2200 Dual E1/Rawpipe Card\n\t0301  C5400 SHDSL/E1 Card\n# nee PathScale, Inc\n1fc1  QLogic, Corp.\n\t000d  IBA6110 InfiniBand HCA\n\t0010  IBA6120 InfiniBand HCA\n1fc9  Tehuti Networks Ltd.\n\t3009  10-Giga TOE SmartNIC\n\t3010  10-Giga TOE SmartNIC\n\t\t0000 3002  10-Giga TOE Single Port XFP SmartNIC\n\t\t0000 3004  10-Giga TOE Single Port SFP+ SmartNIC\n\t\t0000 3008  10-Giga TOE Single Port CX4 SmartNIC\n\t3014  10-Giga TOE SmartNIC 2-Port\n\t\t0000 3003  10-Giga TOE Dual Port XFP Low Profile SmartNIC\n\t\t0000 3005  10-Giga TOE Dual Port SFP+ Low Profile SmartNIC\n\t\t0000 3014  10-Giga TOE Dual Port CX4 Low Profile SmartNIC\n\t3110  10-Giga TOE Single Port SmartNIC\n\t\t0000 3004  10-Giga TOE Single Port SFP+ SmartNIC\n\t3114  10-Giga TOE Dual Port Low Profile SmartNIC\n\t\t0000 3005  10-Giga TOE Dual Port SFP+ Low Profile SmartNIC\n\t\t0000 3011  10-Giga TOE Dual Port SFP+/CX4 Low Profile SmartNIC\n\t\t0000 3012  10-Giga TOE Dual Port CX4/SFP+ Low Profile SmartNIC\n\t\t0000 3014  10-Giga TOE Dual Port CX4 Low Profile SmartNIC\n\t3310  10-Giga TOE SFP+ Single Port SmartNIC\n\t\t0000 3004  10-Giga TOE Single Port SFP+ SmartNIC\n\t3314  10-Giga TOE Dual Port Low Profile SmartNIC\n\t\t0000 3005  10-Giga TOE Dual Port SFP+ Low Profile SmartNIC\n\t\t0000 3011  10-Giga TOE Dual Port SFP+/CX4 Low Profile SmartNIC\n\t\t0000 3012  10-Giga TOE Dual Port CX4/SFP+ Low Profile SmartNIC\n\t\t0000 3014  10-Giga TOE Dual Port CX4 Low Profile SmartNIC\n\t4010  TN4010 Clean SROM\n\t4020  TN9030 10GbE CX4 Ethernet Adapter\n\t\t180c 2040  Mustang-200 10GbE Ethernet Adapter\n\t4022  TN9310 10GbE SFP+ Ethernet Adapter\n\t\t1043 8709  XG-C100F 10GbE SFP+ Ethernet Adapter\n\t\t1186 4d00  DXE-810S 10GbE SFP+ Ethernet Adapter\n\t\t1432 8103  10 Gigabit Ethernet SFP+ PCI Express Adapter\n\t\t1fc9 3015  Ethernet Adapter\n\t4024  TN9210 10GBase-T Ethernet Adapter\n\t4025  TN9510 10GBase-T/NBASE-T Ethernet Adapter\n\t\t105a 7203  SANLink3 NBase-T1\n\t\t1186 2900  DXE-810T 10GBase-T Ethernet Adapter\n\t\t1432 8102  10 Gigabit Ethernet PCI Express Adapter\n\t\t1fc9 3015  Ethernet Adapter\n\t4026  TN9610 10GbE SFP+ Ethernet Adapter\n\t\t4c52 1000  LREC6860AF 10 Gigabit Ethernet Adapter\n\t4027  TN9710P 10GBase-T/NBASE-T Ethernet Adapter\n\t\t1154 0368  LGY-PCIE-MG\n\t\t1432 8104  10 Gigabit Ethernet PCI Express Adapter\n\t\t1546 4027  GE10-PCIE4XG202P 10Gbase-T/NBASE-T Ethernet Adapter\n\t\t1baa 3310  PCIe Expansion Card\n\t\t1fc9 3015  Ethernet Adapter\n\t\t4c52 1001  LREC6860BT 10 Gigabit Ethernet Adapter\n\t4527  TN9710Q 5GBase-T/NBASE-T Ethernet Adapter\n1fcc  StreamLabs\n\tf416  MS416\n\tfb01  MH4LM\n1fce  Cognio Inc.\n\t0001  Spectrum Analyzer PC Card (SAgE)\n1fd4  SUNIX Co., Ltd.\n\t0001  Matrix multiport serial adapter\n\t1999  Multiport serial controller\n1fdd  Wuqi Microelectronics Co., Ltd.\n\t0001  WQ9201 802.11ax PCIe Wireless Network Adapter\n\t1001  WQ9301 802.11ax PCIe Wireless Access Points\n1fde  Kratos Defense & Security Solutions, Inc.\n\t1125  OpenEdge 1125P\n\t2500  OpenEdge 2500P\n1fe0  Allwinmeta Co., Ltd.\n\t1010  AWM 1\n\t2000  AWM 2\n\t2010  AWM 2-M\n1fe1  Beijing ESWIN Computing Technology Co., Ltd.\n\t2030  EIC7700 Root Complex\n1fe4  HippStor Technology\n\t1600  HP600 Series NVMe SSD\n\t\t1fe4 0001  Enterprise NVMe SSD U.2 15.36TB (HP600)\n\t\t1fe4 0003  Enterprise NVMe SSD U.2 12.80TB (HP630)\n\t\t1fe4 0011  Enterprise NVMe SSD U.2 30.72TB (HP620)\n\t\t1fe4 0013  Enterprise NVMe SSD U.2 61.44TB (HP620)\n\t\t1fe4 0075  Enterprise NVMe SSD U.2 3.84TB(HP610)\n\t\t1fe4 0076  Enterprise NVMe SSD U.2 7.68TB(HP610)\n\t\t1fe4 0078  Enterprise NVMe SSD U.2 3.20TB(HP630)\n\t\t1fe4 0079  Enterprise NVMe SSD U.2 6.40TB (HP630)\n1fe9  MemryX\n\t0100  MX3\n# Linkdata Technology (Tianjin) Co., LTD\n1ff2  Linkdata\n\t10a1  NIC1160 Ethernet Controller Family\n\t\t1ff2 0c11  10GE Ethernet Adapter 1160-2X\n\t10a2  NIC1160 Ethernet Controller Virtual Function Family\n\t20a1  IOC2110 Storage Controller\n\t\t1ff2 0a11  2120-16i SATA3/SAS3 HBA Adapter\n\t\t1ff2 0a12  2120-8i SATA3/SAS3 HBA Adapter\n\t20a2  IOC2250 Storage Controller\n\t\t1ff2 0a21  2230-18i Tri-mode HBA Adapter\n\t\t1ff2 0a22  2230-10i Tri-mode HBA Adapter\n\t\t1ff2 0a23  2230-16i Tri-mode HBA Adapter\n\t\t1ff2 0a24  2230-8i Tri-mode HBA Adapter\n\t\t1ff2 0a28  2233-16i Tri-mode HBA Adapter\n\t30a2  ROC3250 Storage Controller\n\t\t1ff2 0b21  3260-18i Tri-mode RAID Adapter\n\t\t1ff2 0b22  3260-10i Tri-mode RAID Adapter\n\t\t1ff2 0b23  3260-16i Tri-mode RAID Adapter\n\t\t1ff2 0b24  3260-8i Tri-mode RAID Adapter\n1ff4  DEEPX Co., Ltd.\n\t0000  DX_M1\n\t0001  DX_M1A\n\t1000  DX_H1\n1ff8  Beijing Gengtu Technology Co.Ltd\n\t2000  GT6910\n\t2010  GT6908\n1ff9  Inagile Electronic Technology Co., LTD\n2000  Smart Link Ltd.\n\t2800  SmartPCI2800 V.92 PCI Soft DFT\n2001  Temporal Research Ltd\n2003  Smart Link Ltd.\n\t8800  LM-I56N\n2004  Smart Link Ltd.\n202c  CAEN S.p.A.\n\t5818  A5818\n2036  Netforward Microelectronics Co., Ltd.\n\t1618  NF1618 PCI Express Ethernet Controller\n\t\t2036 0860  NF1618 Family NX860 (2*25GE)\n\t\t2036 0861  NF1618 Family NX861 (4*25GE)\n\t\t2036 0862  NF1618 Family NX862 (2*50GE)\n\t\t2036 0863  NF1618 Family NX863 (2*100GE)\n\t\t2036 0864  NF1618 Family NX864 (1*200GE)\n\t1619  NF1618 Family Virtual Function\n203b  XTX Markets Technologies Ltd.\n2046  GXMICRO Technology (Shanghai) Co., Ltd.\n2048  Beijing SpaceControl Technology Co.Ltd\n2058  Lime Microsystems Ltd.\n205c  Zhejiang VMing Semiconductor Co., Ltd.\n\t1514  EP9410 U.2 1.92TB NVME SSD\n\t1515  EP9410 U.2 3.84TB NVME SSD\n\t1534  EP9430 U.2 1.6TB NVME SSD\n\t1535  EP9430 U.2 3.2TB NVME SSD\n\t1536  EP9430 U.2 6.4TB NVME SSD\n2061  Unis Flash Memory\n\t4000  E4000 controller\n\t4100  E4100 controller\n\t4200  E4200 NVMe Controller\n\t\t2061 2021  E4200 NVMe SSD 1.6TB PCIe 4.0 U.2\n\t\t2061 2022  E4200 NVMe SSD 1.92TB PCIe 4.0 U.2\n\t\t2061 2023  E4200 NVMe SSD 3.2TB PCIe 4.0 U.2\n\t\t2061 2024  E4200 NVMe SSD 3.84TB PCIe 4.0 U.2\n\t\t2061 2025  E4200 NVMe SSD 6.4TB PCIe 4.0 U.2\n\t\t2061 2026  E4200 NVMe SSD 7.68TB PCIe 4.0 U.2\n\t5100  E5100 NVMe Controller\n\t\t2061 2031  E5100 NVMe SSD 3.2TB PCIe 5.0 U.2\n\t\t2061 2032  E5100 NVMe SSD 3.84TB PCIe 5.0 U.2\n\t\t2061 2033  E5100 NVMe SSD 6.4TB PCIe 5.0 U.2\n\t\t2061 2034  E5100 NVMe SSD 7.68TB PCIe 5.0 U.2\n\t\t2061 2035  E5100 NVMe SSD 12.8TB PCIe 5.0 U.2\n\t\t2061 2036  E5100 NVMe SSD 15.36TB PCIe 5.0 U.2\n\t\t2061 2051  E510Q NVMe SSD 30.72TB PCIe 5.0 U.2\n\t\t2061 2052  E510Q NVMe SSD 61.44TB PCIe 5.0 U.2\n\t\t2061 2053  E510Q NVMe SSD 122.88TB PCIe 5.0 U.2\n\t5200  E5200 NVMe Controller\n\t\t2061 2041  E5200 NVMe SSD 3.2TB PCIe 5.0 U.2\n\t\t2061 2042  E5200 NVMe SSD 3.84TB PCIe 5.0 U.2\n\t\t2061 2043  E5200 NVMe SSD 6.4TB PCIe 5.0 U.2\n\t\t2061 2044  E5200 NVMe SSD 7.68TB PCIe 5.0 U.2\n\t\t2061 2045  E5200 NVMe SSD 12.8TB PCIe 5.0 U.2\n\t\t2061 2046  E5200 NVMe SSD 15.36TB PCIe 5.0 U.2\n\t\t2061 2061  E520Q NVMe SSD 30.72TB PCIe 5.0 U.2\n\t\t2061 2062  E520Q NVMe SSD 61.44TB PCIe 5.0 U.2\n\t\t2061 2063  E520Q NVMe SSD 122.88TB PCIe 5.0 U.2\n2063  Hubei Yangtze Mason Semiconductor Technology Co., Ltd.\n\t1406  ME7000 NVMe SSD\n206d  GigaIO Networks, Inc.\n207d  HRDT\n\t0612  SATA BootRAID Controller\n208a  MICIUS Laboratory\n2094  Shenzhen Wodposit Electronics Co., Ltd.\n\t1281  WPBSNM8-256GTP\n\t1282  WPSBNM8-512GTP\n\t1283  WPBSNM8-1TTP\n\t1284  WPBSNM8-256GMP\n\t1285  WPBSNM8-512GMP\n\t1286  WPBSNM8-2TMP\n\t1287  WPBSNM8-1TMP\n\t1661  WPBSN4M8-512GMP\n\t1662  WPBSN4M8-1TMP\n\t1663  WPBSN4M8-2TMP\n2096  Kaitian Information Technology Co., Ltd.\n\t5401  KCP54(01) 2280 PCIe G4 x4 TLCKCP54(01) 2280 PCIe G4 x4 TLC\n\t5402  KCP54(02) 2280 PCIe G4 x4 TLC\n\t5403  KCP54(03) 2280 PCIe G4 x4 TLC\n\t5404  KCP54(04) 2280 PCIe G4 x4 TLC\n2099  Rolling Wireless S.a.r.l.\n209b  BitIntelligence Technology\n\t1000  TCU Family - TCU-1\n\t1001  TCU Family - TCU-1 Virtual Function\n209f  Mobilint, Inc.\n20a7  EEVengers Inc.\n20a8  Rayson HI-TECH(SZ) Co., Ltd.\n20a9  LDA Technologies Ltd.\n\t1008  NEOTAPX FPGA Accelerator Card\n\t1104  NEOTAPX FPGA Timing Synchronization Card\n20ba  Hangzhou Hikstorage Technology Co., Ltd.\n\t1202  NAND memory controller\n\t\t20ba 1202  NVMe SSD V2000 (DRAM-less)\n20bb  Quantum Machines\n\t0111  OPNIC\n20bc  Xinsheng Technology Co., Ltd.\n\t1001  Smart Network Adapter\n\t\t20bc 1082  Ethernet Network Adapter XS-N1082-2X for 10GbE SFP+ Dual-port\n\t\t20bc 2083  Ethernet Network Adapter XS-N2083-2X for 25GbE SFP28 SFP+ Dual-port ROCEv2\n\t\t20bc 2084  Ethernet Network Adapter XS-N2084-2X for 25GbE SFP28 SFP+ Dual-port ROCEv2\n\t\t20bc 4084  Ethernet Network Adapter XS-N4084-2X for 100GbE QSFP28/56 Dual-port\n\t2001  Solid State Storage\n20d0  Telin Semiconductor (Wuhan) Co., Ltd.\n\t2001  PACIFIC-S1 NVMe SSD\n20d2  Awide Labs LTD.\n\t0200  XRaid [Extreme Performance Compression RAID Accelerator]\n20f4  TRENDnet\n2116  ZyDAS Technology Corp.\n21b4  Hunan Goke Microelectronics Co., Ltd\n21c3  21st Century Computer Corp.\n22b8  Flex-Logix Technologies\n\t22a0  Flex Logix InferX X1 Inference Accelerator\n22db  Missing Link Electronics, Inc.\n\t1200  NVMe Streamer EP ERD\n2304  Colorgraphic Communications Corp.\n2321  Bruker AXS Inc.\n\t0002  Hi-Star PCI Interface\n2348  Racore\n\t2010  8142 100VG/AnyLAN\n256c  Graphics Technology (HK) Co., Ltd.\n\t006d  HS610\n2646  Kingston Technology Company, Inc.\n\t0010  HyperX Predator PCIe AHCI SSD\n\t2262  KC2000/KC2500 NVMe SSD [SM2262EN]\n\t2263  A2000 NVMe SSD [SM2263EN]\n\t5008  A1000/U-SNS8154P3 x2 NVMe SSD [E8]\n\t500a  DC1000B NVMe SSD [E12DC]\n\t500b  DC1000M NVMe SSD [SM2270]\n\t500c  OM8PCP Design-In PCIe 3 NVMe SSD (DRAM-less)\n\t500d  OM3PDP3 NVMe SSD\n\t500e  NV1 NVMe SSD [E13T] (DRAM-less)\n\t500f  NV1 NVMe SSD [SM2263XT] (DRAM-less)\n\t5010  OM8SBP NVMe PCIe SSD (DRAM-less)\n\t5012  DC1500M NVMe SSD [SM2270]\n\t5013  KC3000/FURY Renegade NVMe SSD [E18]\n\t5014  OM8SEP4 Design-In PCIe 4 NVMe SSD (TLC) (DRAM-less)\n\t5016  OM3PGP4 NVMe SSD (DRAM-less)\n\t5017  NV2 NVMe SSD [SM2267XT] (DRAM-less)\n\t5018  OM8SFP4 PCIe 4 NVMe SSD (DRAM-less)\n\t5019  NV2 NVMe SSD [E21T] (DRAM-less)\n# 128GB\n\t501a  OM8PGP4 Design-In PCIe 4 NVMe SSD (TLC) (DRAM-less)\n\t501b  OM8PGP4 NVMe PCIe SSD (DRAM-less)\n\t501c  NV2 NVMe SSD [E19T] (DRAM-less)\n\t501d  NV2 NVMe SSD [TC2200] (DRAM-less)\n\t501e  OM3PGP4 NVMe SSD (DRAM-less)\n\t501f  FURY Renegade NVMe SSD [E18] (Heatsink)\n\t5021  OM8SEP4 Design-In PCIe 4 NVMe SSD (QLC) (DRAM-less)\n\t5022  OM8PGP4 Design-In PCIe 4 NVMe SSD (QLC) (DRAM-less)\n\t5023  NV2 NVMe SSD [SM2269XT] (DRAM-less)\n\t5024  DC2000B NVMe SSD [E18DC]\n\t5025  NV3 NVMe SSD [TC2201] (DRAM-less)\n\t5026  NV3 NVMe SSD [E21T] (DRAM-less)\n\t5027  NV3 NVMe SSD [E27T] (DRAM-less)\n\t5028  NV3 NVMe SSD [SM2268XT2] (DRAM-less)\n\t502a  FURY Renegade G5 NVMe SSD [SM2508]\n\t502b  NV3 NVMe SSD [E29T] (DRAM-less)\n\t502c  DC3000ME NVMe SSD [SC5]\n\t502d  OM8TAP4 PCIe 4 NVMe SSD (QLC) (DRAM-less)\n\t5030  NV3 2230 NVMe SSD [SM2268XT2] (DRAM-less)\n270b  Xantel Corporation\n270f  Chaintech Computer Co. Ltd\n2711  AVID Technology Inc.\n2782  Emdoor Digital Technology Co., Ltd\n2955  Connectix Virtual PC\n\t6e61  OHCI USB 1.1 controller\n2a15  3D Vision(???)\n2a18  Video Transcode Controller\n\t2a22  Video Transcode Controller\n2bd8  ROPEX Industrie-Elektronik GmbH\n3000  Hansol Electronics Inc.\n30c9  Luxvisions Innovation Technology Ltd.\n3100  Dynabook Inc.\n3112  Satelco Ingenieria S.A.\n3130  AUDIOTRAK\n3142  Post Impression Systems.\n31ab  Zonet\n\t1faa  ZEW1602 802.11b/g Wireless Adapter\n328f  Shenzhen EMEET Technology Co., Ltd.\n\t004c  OfficeCore M1A\n\t2019  REC 600 HD Webcam\n3388  Hint Corp\n\t0013  HiNT HC4 PCI to ISDN bridge, Multimedia audio controller\n\t0014  HiNT HC4 PCI to ISDN bridge, Network controller\n\t0020  HB6 Universal PCI-PCI bridge (transparent mode)\n\t0021  HB6 Universal PCI-PCI bridge (non-transparent mode)\n\t\t1775 c200  C2K CompactPCI interface bridge\n\t\t1775 ce90  CE9\n\t\t4c53 1050  CT7 mainboard\n\t\t4c53 1080  CT8 mainboard\n\t\t4c53 1090  Cx9 mainboard\n\t\t4c53 10a0  CA3/CR3 mainboard\n\t\t4c53 3010  PPCI mezzanine (32-bit PMC)\n\t\t4c53 3011  PPCI mezzanine (64-bit PMC)\n\t\t4c53 4000  PMCCARR1 carrier board\n\t0022  HiNT HB4 PCI-PCI Bridge (PCI6150)\n\t0026  HB2 PCI-PCI Bridge\n\t1014  AudioTrak Maya\n\t1018  Audiotrak INCA88\n\t1019  Miditrak 2120\n\t101a  E.Band [AudioTrak Inca88]\n\t101b  E.Band [AudioTrak Inca88]\n\t8011  VXPro II Chipset\n\t\t3388 8011  VXPro II Chipset CPU to PCI Bridge\n\t8012  VXPro II Chipset\n\t\t3388 8012  VXPro II Chipset PCI to ISA Bridge\n\t8013  VXPro II IDE\n\t\t3388 8013  VXPro II Chipset EIDE Controller\n\ta103  Blackmagic Design DeckLink HD Pro\n3411  Quantum Designs (H.K.) Inc\n3442  Bihl+Wiedemann GmbH\n\t1783  AS-i 3.0 cPCI Master\n\t1922  AS-i 3.0 PCI Master\n3475  Arista Networks, Inc.\n34ba  Ice Lake-LP PCI Express Root Port #3\n3513  ARCOM Control Systems Ltd\n3633  DeepCool\n\t0001  AK400 DIGITAL CPU Air Cooler\n\t0002  AK620 DIGITAL CPU Air Cooler\n\t0003  AK500 DIGITAL CPU Air Cooler\n\t0004  AK500S DIGITAL CPU Air Cooler\n\t0005  CH560 DIGITAL PC Case\n\t0006  LS Series (LS520 / LS720 SE DIGITAL) CPU Liquid Cooler\n\t0007  MORPHEUS PC Case\n369a  HighSecLabs, Ltd.\n37d9  ITD Firm ltd.\n\t1138  SCHD-PH-8 Phase detector\n\t1140  VR-12-PCI 12-ch Relay Actuator Card\n\t1141  PCI-485(422) Multi-port Serial Board\n\t1142  PCI-CAN2\n3842  eVga.com. Corp.\n38ef  4Links\n# Wrong ID in board programmed sub-did in place of sub-vid\n393e  Lenovo (wrong ID)\n3d3d  3DLabs\n\t0001  GLINT 300SX\n\t0002  GLINT 500TX\n\t\t0000 0000  GLoria L\n\t0003  GLINT Delta\n\t\t0000 0000  GLoria XL\n\t0004  Permedia\n\t0005  Permedia\n\t0006  GLINT MX\n\t\t0000 0000  GLoria XL\n\t\t1048 0a42  GLoria XXL\n\t0007  3D Extreme\n\t0008  GLINT Gamma G1\n\t\t1048 0a42  GLoria XXL\n\t0009  Permedia II 2D+3D\n\t\t1040 0011  AccelStar II\n\t\t1048 0a42  GLoria XXL\n\t\t13e9 1000  6221L-4U\n\t\t3d3d 0100  AccelStar II 3D Accelerator\n\t\t3d3d 0111  Permedia 3:16\n\t\t3d3d 0114  Santa Ana\n\t\t3d3d 0116  Oxygen GVX1\n\t\t3d3d 0119  Scirocco\n\t\t3d3d 0120  Santa Ana PCL\n\t\t3d3d 0125  Oxygen VX1\n\t\t3d3d 0127  Permedia3 Create!\n\t000a  GLINT R3\n\t\t3d3d 0121  Oxygen VX1\n\t000c  GLINT R3 [Oxygen VX1]\n\t\t3d3d 0144  Oxygen VX1-4X AGP [Permedia 4]\n\t000d  GLint R4 rev A\n\t000e  GLINT Gamma G2\n\t0011  GLint R4 rev B\n\t0012  GLint R5 rev A\n\t0013  GLint R5 rev B\n\t0020  VP10 visual processor\n\t0022  VP10 visual processor\n\t0024  VP9 visual processor\n\t002c  Wildcat Realizm 100/200\n\t0030  Wildcat Realizm 800\n\t0032  Wildcat Realizm 500\n\t0100  Permedia II 2D+3D\n\t07a1  Wildcat III 6210\n\t07a2  Sun XVR-500 Graphics Accelerator\n\t\t3d3d 1047  Sun XVR-600 Graphics Accelerator\n\t07a3  Wildcat IV 7210\n\t1004  Permedia\n\t3d04  Permedia\n\tffff  Glint VGA\n3e08  Sinead Tech Co., Ltd\n4005  Avance Logic Inc.\n\t0300  ALS300 PCI Audio Device\n\t0308  ALS300+ PCI Audio Device\n\t0309  PCI Input Controller\n\t1064  ALG-2064\n\t2064  ALG-2064i\n\t2128  ALG-2364A GUI Accelerator\n\t2301  ALG-2301\n\t2302  ALG-2302\n\t2303  AVG-2302 GUI Accelerator\n\t2364  ALG-2364A\n\t2464  ALG-2464\n\t2501  ALG-2564A/25128A\n\t4000  ALS4000 Audio Chipset\n\t\t4005 4000  ALS4000 Audio Chipset\n\t4710  ALC200/200P\n4033  Addtron Technology Co, Inc.\n\t1360  RTL8139 Ethernet\n4040  NetXen Incorporated\n\t0001  NXB-10GXSR 10-Gigabit Ethernet PCIe Adapter with SR-XFP optical interface\n\t\t103c 7047  NC510F PCIe 10-Gigabit Server Adapter\n\t0002  NXB-10GCX4 10-Gigabit Ethernet PCIe Adapter with CX4 copper interface\n\t\t103c 7048  NC510c PCIe 10-Gigabit Server Adapter\n\t0003  NXB-4GCU Quad Gigabit Ethernet PCIe Adapter with 1000-BASE-T interface\n\t0004  BladeCenter-H 10-Gigabit Ethernet High Speed Daughter Card\n\t0005  NetXen Dual Port 10GbE Multifunction Adapter for c-Class\n\t\t103c 170e  NC512m Dual Port 10GbE Multifunction BL-C Adapter\n\t0024  XG Mgmt\n\t0025  XG Mgmt\n\t0100  NX3031 Multifunction 1/10-Gigabit Server Adapter\n\t\t103c 171b  NC522m Dual Port 10GbE Multifunction BL-c Adapter\n\t\t103c 1740  NC375T PCI Express Quad Port Gigabit Server Adapter\n\t\t103c 3251  NC375i 1G w/NC524SFP 10G Module\n\t\t103c 705a  NC375i Integrated Quad Port Multifunction Gigabit Server Adapter\n\t\t103c 705b  NC522SFP Dual Port 10GbE Server Adapter\n\t\t152d 896b  TG20 Dual Port 10GbE Server/Storage Adapter\n\t\t4040 0124  NX3031 Quad Port Gigabit Server Adapter\n\t\t4040 0126  Dual Port SFP+ 10GbE Server Adapter\n4143  Digital Equipment Corp\n4144  Alpha Data\n\t0044  ADM-XRCIIPro\n4149  AIMOTIVE Kft.\n\td011  HIL camera injector board\n4150  ONA Electroerosion\n\t0001  PCI32TLITE FILSTRUP1 PCI to VME Bridge Controller\n\t0006  PCI32TLITE UART 16550 Opencores\n\t0007  PCI32TLITE CAN Controller Opencores\n415a  Auzentech, Inc.\n416c  Aladdin Knowledge Systems\n\t0100  AladdinCARD\n\t0200  CPC\n4242  Universall Answer Generators\n4254  DVBSky\n4321  Tata Power Strategic Electronics Division\n4348  WCH.CN\n\t2273  CH351 PCI Dual Serial Port Controller\n\t3253  CH352 PCI Dual Serial Port Controller\n\t3453  CH353 PCI Quad Serial Port Controller\n\t5053  CH352 PCI Serial and Parallel Port Controller\n\t7053  CH353 PCI Dual Serial and Parallel Ports Controller\n\t7073  CH356 PCI Quad Serial and Parallel Ports Controller\n\t7173  CH355 PCI Quad Serial Port Controller\n434e  Cornelis Networks\n\t0001  CN5000 HFI Silicon, Dual Port, BGA [discrete]\n\t\t434e 0001  CN5000 HFI Adapter, Single Port, QSFP, x16 PCIe Gen 5, Air-Cooled\n\t\t434e 0002  CN5000 HFI Adapter, Dual Port, QSFP-DD, x16 PCIe Gen 5, Air-Cooled\n\t\t434e 0003  CN5000 HFI Adapter, Single Port, QSFP, x16 PCIe Gen 5, Air-Cooled, Thermally Enhanced\n\t\t434e 0004  CN5000 HFI Adapter, Single Port, QSFP, x16 PCIe Gen 5, Conduction-Cooled\n\t0002  CN6000 HFI Silicon, Dual Port, BGA [discrete]\n\t8001  CN5000 Switch Silicon, 48 Port, BGA\n4444  Internext Compression Inc\n\t0016  iTVC16 (CX23416) Video Decoder\n\t\t0070 0003  WinTV PVR 250\n\t\t0070 0009  WinTV PVR 150\n\t\t0070 0801  WinTV PVR 150\n\t\t0070 0807  WinTV PVR 150\n\t\t0070 4001  WinTV PVR 250\n\t\t0070 4009  WinTV PVR 250\n\t\t0070 4801  WinTV PVR 250\n\t\t0070 4803  WinTV PVR 250\n\t\t0070 8003  WinTV PVR 150\n\t\t0070 8801  WinTV PVR 150\n\t\t0070 c801  WinTV PVR 150\n\t\t0070 e807  WinTV PVR 500 (1st unit)\n\t\t0070 e817  WinTV PVR 500 (2nd unit)\n\t\t0070 ff92  WiNTV PVR-550\n\t\t0270 0801  WinTV PVR 150\n\t\t104d 013d  ENX-26 TV Encoder\n\t\t10fc d038  GV-MVP/RX2W (1st unit)\n\t\t10fc d039  GV-MVP/RX2W (2nd unit)\n\t\t12ab fff3  MPG600\n\t\t12ab ffff  MPG600\n\t\t1461 c00a  M113 PCI Analog TV (PAL/SECAM, Philips FQ1216MK3 tuner)\n\t\t1461 c00b  M113 PCI Analog TV (PAL/SECAM+FM, Philips FM1216MK3 tuner)\n\t\t1461 c00c  M113 PCI Analog TV (NTSC, JAPAN version, Philips FI1286MK2 tuner)\n\t\t1461 c010  M113 PCI Analog TV (NTSC, Philips FI1236MK3 tuner)\n\t\t1461 c011  M113 PCI Analog TV (NTSC+FM, Philips FM1236MK3 tuner)\n\t\t1461 c018  M113 PCI Analog TV (NTSC, Philips FQ1236MK5 tuner)\n\t\t1461 c019  UltraTV 1500 MCE, a.k.a. M113 PCI Analog TV (NTSC+FM, Philips FQ1236MK5 tuner)\n\t\t1461 c01a  M113 PCI Analog TV (PAL/SECAM, Philips FQ1216MK5 tuner)\n\t\t1461 c01b  M113 PCI Analog TV (PAL/SECAM+FM, Philips FM1216MK5 tuner)\n\t\t1461 c030  M113 PCI Analog TV (NTSC-J, Partsnic tuner)\n\t\t1461 c031  M113 PCI Analog TV (NTSC-J+FM, Partsnic tuner)\n\t\t1461 c032  M113 PCI Analog TV (PAL/SECAM, Partsnic tuner)\n\t\t1461 c033  M113 PCI Analog TV (PAL/SECAM+FM, Partsnic tuner)\n\t\t1461 c034  M113 PCI Analog TV (NTSC, Partsnic tuner)\n\t\t1461 c035  M113 PCI Analog TV (NTSC+FM, Partsnic tuner)\n\t\t1461 c03f  C115 PCI video capture card (no tuner)\n\t\t1461 c136  M104 mini-PCI Analog TV\n\t\t1461 c20a  M755 AVerTV Video Capture (PAL/SECAM, Philips FQ1216MK3 tuner)\n\t\t1461 c218  M755 AVerTV Video Capture (NTSC, Philips FQ1236MK5 tuner)\n\t\t1461 c219  M755 AVerTV Video Capture (NTSC+FM, Philips FQ1236MK5 tuner)\n\t\t1461 c21a  M755 AVerTV Video Capture (PAL/SECAM, Philips FQ1216MK5 tuner)\n\t\t1461 c21b  M755 AVerTV Video Capture (PAL/SECAM+FM, Philips FM1216MK5 tuner)\n\t\t1461 c230  M755 AVerTV Video Capture (NTSC-J, Partsnic tuner)\n\t\t1461 c231  M755 AVerTV Video Capture (NTSC-J+FM, Partsnic tuner)\n\t\t1461 c232  M755 AVerTV Video Capture (PAL/SECAM, Partsnic tuner)\n\t\t1461 c233  M755 AVerTV Video Capture (PAL/SECAM+FM, Partsnic tuner)\n\t\t1461 c234  M755 AVerTV Video Capture (NTSC, Partsnic tuner)\n\t\t1461 c235  M755 AVerTV Video Capture (NTSC+FM, Partsnic tuner)\n\t\t1461 c337  E106 AVerMedia AVerTV Video Capture\n\t\t1461 c439  M116 AVerMedia AVerTV MCE 116 Plus (NTSC/PAL/SECAM+FM+REMOTE, Xceive 2028 tuner)\n\t\t1461 c5ff  C755 AVerTV Video Capture card (no tuner)\n\t\t1461 c6ff  C115 PCI video capture card (no tuner)\n\t\t1461 c739  M785 AVerMedia PCI Analog TV (NTSC/PAL/SECAM+FM, Xceive 2028 tuner)\n\t\t9005 0092  VideOh! AVC-2010\n\t\t9005 0093  VideOh! AVC-2410\n\t0803  iTVC15 (CX23415) Video Decoder\n\t\t0070 4000  WinTV PVR-350\n\t\t0070 4001  WinTV PVR-250\n\t\t0070 4800  WinTV PVR-350 (V1)\n\t\t12ab 0000  MPG160\n\t\t1461 a3ce  M179\n\t\t1461 a3cf  M179\n4468  Bridgeport machines\n4594  Cogetec Informatique Inc\n45fb  Baldor Electric Company\n4624  Budker Institute of Nuclear Physics\n\tadc1  ADC200ME High speed ADC\n\tde01  DL200ME High resolution delay line PCI based card\n\tde02  DL200ME Middle resolution delay line PCI based card\n4651  TXIC\n4680  Umax Computer Corp\n4843  Hercules Computer Technology Inc\n4916  RedCreek Communications Inc\n\t1960  RedCreek PCI adapter\n4943  Growth Networks\n494f  ACCES I/O Products, Inc.\n\t0508  PCI-IDO-16A FET Output Card\n\t0518  PCI-IDO-32A FET Output Card\n\t0520  PCI-IDO-48 FET Output Card\n\t0521  PCI-IDO-48A FET Output Card\n\t0703  PCIe-RO-4 Electromechanical Relay Output Card\n\t07d0  PCIe-IDO-24 FET Output Card\n\t0920  PCI-IDI-48 Isolated Digital Input Card\n\t0bd0  PCIe-IDI-24 Isolated Digital Input Card\n\t0c50  PCI-DIO-24H 1x 8255 Digital Input / Output Card\n\t0c51  PCI-DIO-24D 1x 8255 Digital Input / Output Card\n\t0c52  PCIe-DIO-24 1x 8255 Digital Input / Output Card\n\t0c53  PCIe-DIO-24H 8255 Digital Input / Output Card\n\t0c57  mPCIe-DIO-24 8255 Digital Input / Output Card\n\t0c60  PCI-DIO-48H 8255 Digital Input / Output Card\n\t0c61  PCIe-DIO-48 8255 Digital Input / Output Card\n\t0c62  P104-DIO-48 8255 Digital Input / Output Card\n\t0c68  PCI-DIO-72 8255 Digital Input / Output Card\n\t0c69  P104-DIO-96 8255 Digital Input / Output Card\n\t0c70  PCI-DIO-96 8255 Digital Input / Output Card\n\t0c78  PCI-DIO-120 8255 Digital Input / Output Card\n\t0dc8  PCI-IDIO-16 Isolated Digital Input / FET Output Card\n\t0e50  PCI-DIO-24S 8255 Digital Input / Output Card\n\t0e51  PCI-DIO-24H(C) 8255 Digital Input / Output Card\n\t0e52  PCI-DIO-24D(C) 8255 Digital Input / Output Card\n\t0e53  PCIe-DIO-24S 8255 Digital Input / Output Card\n\t0e54  PCIe-DIO-24HS 8255 Digital Input / Output Card\n\t0e55  PCIe-DIO-24DC 8255 Digital Input / Output Card\n\t0e56  PCIe-DIO-24DCS 8255 Digital Input / Output Card\n\t0e57  mPCIe-DIO-24S 8255 Digital Input / Output Card\n\t0e60  PCI-DIO-48S 2x 8255 Digital Input / Output Card\n\t0e61  PCIe-DIO-48S 2x 8255 Digital Input / Output Card\n\t0e62  P104-DIO-48S 2x 8255 Digital Input / Output Card\n\t0f00  PCI-IIRO-8 Isolated Digital / Relay Output Card\n\t0f01  LPCI-IIRO-8 Isolated Digital / Relay Output Card\n\t0f02  PCIe-IIRO-8 Isolated Digital / Relay Output Card\n\t0f08  PCI-IIRO-16 Isolated Digital / Relay Output Card\n\t0f09  PCIe-IIRO-16 Isolated Digital / Relay Output Card\n\t0fc0  PCIe-IDIO-12 Isolated Digital Input / FET Output Card\n\t0fc1  PCIe-IDI-12 Isolated Digital Input Card\n\t0fc2  PCIe-IDO-12 FET Output Card\n\t0fd0  PCIe-IDIO-24 Isolated Digital Input / FET Output Card\n\t1050  PCI-422/485-2 2x RS422/RS484 Card\n\t1051  PCIe-COM-2SRJ 2x RS422/RS484 Card w/RJ45 Connectors\n\t1052  104I-COM-2S 2x RS422/RS484 PCI/104 Board\n\t1053  mPCIe-COM-2S 2x RS422/RS484 PCI Express Mini Card\n\t1058  PCI-COM422/4 4x RS422 Card\n\t1059  PCI-COM485/4 4x RS485 Card\n\t105a  PCIe-COM422-4 4x RS422 Card\n\t105b  PCIe-COM485-4 4x RS485 Card\n\t105c  PCIe-COM-4SRJ 4x RS422/RS485 Card w/RJ45 Connectors\n\t105d  104I-COM-4S 4x RS422/RS484 PCI/104 Board\n\t105e  mPCIe-COM-4S 4x RS422/RS484 PCI Express Mini Card\n\t1068  PCI-COM422/8 8x RS422 Card\n\t1069  PCI-COM485/8 8x RS485 Card\n\t106a  PCIe-COM422-8 8x RS422 Card\n\t106b  PCIe-COM485-8 8x RS485 Card\n\t106c  104I-COM-8S 8x RS422/RS485 PCI/104 Board\n\t1088  PCI-COM232/1 1x RS232 Card\n\t1090  PCI-COM232/2 2x RS232 Card\n\t1091  PCIe-COM232-2RJ 2x RS232 Card w/RJ45 Connectors\n\t1093  mPCIe-COM232-2 2x RS232 PCI Express Mini Card\n\t1098  PCIe-COM232-4 4x RS232 Card\n\t1099  PCIe-COM232-4RJ 4x RS232 Card w/RJ45 Connectors\n\t109b  mPCIe-COM232-4 4x RS232 PCI Express Mini Card\n\t10a8  P104-COM232-8 8x RS232 PC-104+ Board\n\t10a9  PCIe-COM232-8 8x RS232 Card\n\t10c9  PCI-COM-1S 1x RS422/RS485 Card\n\t10d0  PCI-COM2S 2x RS422/RS485 Card\n\t10d1  PCIe-COM-2SMRJ 2x RS232/RS422/RS485 Card w/RJ45 Connectors\n\t10d2  104I-COM-2SM 2x RS232/RS422/RS485 PCI/104 Board\n\t10d3  mPCIe-COM-2SM 2x RS232/RS422/RS485 PCI Express Mini Card\n\t10d8  PCI-COM-4SM 4x RS232/RS422/RS485 Card\n\t10d9  PCIe-COM-4SM 4x RS232/RS422/RS485 Card\n\t10da  PCIe-COM-4SMRJ 4x RS232/RS422/RS485 Card w/RJ45 Connectors\n\t10db  104I-COM-4SM 4x RS232/RS422/RS485 PCI/104 Board\n\t10dc  mPCIe-COM-4SM 4x RS232/RS422/RS485 PCI Express Mini Card\n\t10e8  PCI-COM-8SM 8x RS232/RS422/RS485 Card\n\t10e9  PCIe-COM-8SM 8x RS232/RS422/RS485 Card\n\t10ea  104I-COM-8SM 8x RS232/RS422/RS485 PCI-104 Board\n\t1108  mPCIe-ICM485-1 1x Isolated RS485 PCI Express Mini Card\n\t1110  mPCIe-ICM422-2 2x Isolated RS422 PCI Express Mini Card\n\t1111  mPCIe-ICM485-2 2x Isolated RS485 PCI Express Mini Card\n\t1118  mPCIe-ICM422-4 4x Isolated RS422 PCI Express Mini Card\n\t1119  mPCIe-ICM485-4 4x Isolated RS485 PCI Express Mini Card\n\t1148  PCI-ICM-1S 1x Isolated RS422/RS485 Card\n\t1150  PCI-ICM-2S 2x Isolated RS422/RS485 Card\n\t1152  PCIe-ICM-2S 2x Isolated RS422/RS485 Card\n\t1158  PCI-ICM422/4 4x Isolated RS422 Card\n\t1159  PCI-ICM485/4 4x Isolated RS485 Card\n\t115a  PCIe-ICM-4S 4x Isolated RS422/RS485 Card\n\t1190  PCIe-ICM232-2 2x Isolated RS232 Card\n\t1191  mPCIe-ICM232-2 2x Isolated RS232 PCI Express Mini Card\n\t1198  PCIe-ICM232-4 4x Isolated RS232 Card\n\t1199  mPCIe-ICM232-4 4x Isolated RS422 PCI Express Mini Card\n\t11d0  PCIe-ICM-2SM 2x Isolated RS232/RS422/RS485 Card\n\t11d8  PCIe-ICM-4SM 4x Isolated RS232/RS422/RS485 Card\n\t1250  PCI-WDG-2S Watchdog and 2x Serial Card\n\t12d0  PCI-WDG-IMPAC\n\t2230  PCI-QUAD-8 8x Quadrature Input Card\n\t2231  PCI-QUAD-4 4x Quadrature Input Card\n\t22c0  PCI-WDG-CSM Watchdog Card\n\t25c0  P104-WDG-E Watchdog PC/104+ Board\n\t2c50  PCI-DIO-96CT 96x Digital Input / Output Card\n\t2c58  PCI-DIO-96C3 96x Digital Input / Output Card w/3x 8254 Counter Card\n\t2ee0  PCIe-DIO24S-CTR12 24x Digital Input / Output Card w/4x 8254 Counter Card\n\t2fc0  P104-WDG-CSM Watchdog PC/104+ Board\n\t2fc1  P104-WDG-CSMA Advanced Watchdog PC/104+ Board\n\t5ed0  PCI-DAC\n\t6c90  PCI-DA12-2 2x 12-bit Analog Output Card\n\t6c98  PCI-DA12-4 4x 12-bit Analog Output Card\n\t6ca0  PCI-DA12-6 6x 12-bit Analog Output Card\n\t6ca8  PCI-DA12-8 8x 12-bit Analog Output Card\n\t6ca9  PCI-DA12-8V\n\t6cb0  PCI-DA12-16 16x 12-bit Analog Output Card\n\t6cb1  PCI-DA12-16V\n\t8ef0  P104-FAS16-16\n\taca8  PCI-AI12-16 12-bit 100kHz Analog Input Card\n\taca9  PCI-AI12-16A 12-bit 100kHz Analog Input w/FIFO Card\n\teca8  PCI-AIO12-16 12-bit 100kHz Analog Input w/2x Analog Output and FIFO Card\n\tecaa  PCI-A12-16A 12-bit 100kHz Analog Input w/2x Analog Output and FIFO Card\n\tece8  LPCI-A16-16A 16-bit 500kHz Analog Input low-profile Card\n\tece9  LPCI-AIO16A 16-bit 500kHz Analog Input low-profile Card\n4978  Axil Computer Inc\n4a14  NetVin\n\t5000  NV5000SC\n\t\t4a14 5000  RT8029-Based Ethernet Adapter\n4b10  Buslogic Inc.\n4b43  KonteX Inc.\n4c48  LUNG HWA Electronics\n4c4d  Liquid-Markets GmbH\n# Dev versions of TaSR, not for production.\n\t9998  TaSR\n# First versions of UberNIC, not for production.\n\t9999  UberNIC PoC/testing/dev\n4c52  LR-LINK\n\t1001  Smart Network Adapter\n\t\t4c52 a008  LREG1008PT Single-port 1Gb Smart Ethernet Network Adapter\n\t1002  Smart Network Adapter\n\t\t4c52 a006  LREG1006PT Single-port 1.2Gb Network Security Isolation Adapter\n\t1003  Smart Network Adapter\n\t1004  Smart Network Adapter\n\t\t4c52 b010  LREG1010PF Single-port 10Gb FPGA Network Security Isolation Adapter\n\t\t4c52 b011  LREG1011PF Dual-port 10Gb FPGA Network Security Isolation Adapter\n4c53  SBS Technologies\n\t0000  PLUSTEST device\n\t\t4c53 3000  PLUSTEST card (PC104+)\n\t\t4c53 3001  PLUSTEST card (PMC)\n\t0001  PLUSTEST-MM device\n\t\t4c53 3002  PLUSTEST-MM card (PMC)\n4ca1  Seanix Technology Inc\n4d51  MediaQ Inc.\n\t0200  MQ-200\n4d54  Microtechnica Co Ltd\n4d56  Balluff MV GmbH\n\t0000  [mvHYPERION-CLe/CLb] CameraLink PCI Express x1 Frame Grabber\n\t0001  [mvHYPERION-CLf/CLm] CameraLink PCI Express x4 Frame Grabber\n\t0010  [mvHYPERION-16R16/-32R16] 16 Video Channel PCI Express x4 Frame Grabber\n\t0020  [mvHYPERION-HD-SDI] HD-SDI PCI Express x4 Frame Grabber\n\t0030  [mvHYPERION-HD-SDI-Merger] HD-SDI PCI Express x4 Frame Grabber\n\t7012  [mvBlueNAOS BVS CA-BN] PCIe Gen1 x2 Camera\n\t7014  [mvBlueNAOS BVS CA-BN] PCIe Gen1 x4 Camera\n\t7022  [mvBlueNAOS BVS CA-BN] PCIe Gen2 x2 Camera\n\t7024  [mvBlueNAOS BVS CA-BN] PCIe Gen2 x4 Camera\n4ddc  ILC Data Device Corp\n\t0100  DD-42924I5-300 (ARINC 429 Data Bus)\n\t0300  SB-3620 Motion Feedback Device\n\t0340  SB-3623 Motion Feedback Device\n\t0400  SB-3622 Motion Feedback Device\n\t0500  SB-3621 Motion Feedback Device\n\t0510  SB-3624 Motion Feedback Device\n\t0801  BU-65570I1 MIL-STD-1553 Test and Simulation\n\t0802  BU-65570I2 MIL-STD-1553 Test and Simulation\n\t0811  BU-65572I1 MIL-STD-1553 Test and Simulation\n\t0812  BU-65572I2 MIL-STD-1553 Test and Simulation\n\t0881  BU-65570T1 MIL-STD-1553 Test and Simulation\n\t0882  BU-65570T2 MIL-STD-1553 Test and Simulation\n\t0891  BU-65572T1 MIL-STD-1553 Test and Simulation\n\t0892  BU-65572T2 MIL-STD-1553 Test and Simulation\n\t0901  BU-65565C1 MIL-STD-1553 Data Bus\n\t0902  BU-65565C2 MIL-STD-1553 Data Bus\n\t0903  BU-65565C3 MIL-STD-1553 Data Bus\n\t0904  BU-65565C4 MIL-STD-1553 Data Bus\n\t0b01  BU-65569I1 MIL-STD-1553 Data Bus\n\t0b02  BU-65569I2 MIL-STD-1553 Data Bus\n\t0b03  BU-65569I3 MIL-STD-1553 Data Bus\n\t0b04  BU-65569I4 MIL-STD-1553 Data Bus\n\t0d01  SB-3641 Motion Feedback Device\n\t0d10  SB-365x Motion Feedback Device\n\t2f00  SB-3642 Motion Feedback Device\n\t3000  SB-3644 Motion Feedback Device\n4e4c  NieL TechSolution\n4e58  Nutanix, Inc.\n\t0001  Virtual NVMe Controller\n5045  University of Toronto\n\t4243  BLASTbus PCI Interface Card v1\n5046  GemTek Technology Corporation\n\t1001  PCI Radio\n5053  Voyetra Technologies\n\t2010  Daytona Audio Adapter\n50b2  TerraTec Electronic GmbH\n50ce  System-on-Chip Engineering S.L.\n\t0001  RELY-MIL-XMC-TSN-SWITCH\n\t0100  XMC_AV-Dual-ETH\n\t0101  XMC_AV-ETSN\n\t0102  XMC_AV-AFDX\n5136  S S Technologies\n5143  Qualcomm Inc\n5145  Ensoniq (Old)\n\t3031  Concert AudioPCI\n5168  Animation Technologies Inc.\n\t0300  FlyDVB-S\n\t0301  FlyDVB-T\n5301  Alliance Semiconductor Corp.\n\t0001  ProMotion aT3D\n5333  S3 Graphics Ltd.\n\t0551  Plato/PX (system)\n\t5631  86c325 [ViRGE]\n\t8800  86c866 [Vision 866]\n\t8801  86c964 [Vision 964]\n\t8810  86c764_0 [Trio 32 vers 0]\n\t8811  86c764/765 [Trio32/64/64V+]\n\t8812  86cM65 [Aurora64V+]\n\t8813  86c764_3 [Trio 32/64 vers 3]\n\t8814  86c767 [Trio 64UV+]\n\t8815  86cM65 [Aurora 128]\n\t883d  86c988 [ViRGE/VX]\n\t8870  FireGL\n\t8880  86c868 [Vision 868 VRAM] vers 0\n\t8881  86c868 [Vision 868 VRAM] vers 1\n\t8882  86c868 [Vision 868 VRAM] vers 2\n\t8883  86c868 [Vision 868 VRAM] vers 3\n\t88b0  86c928 [Vision 928 VRAM] vers 0\n\t88b1  86c928 [Vision 928 VRAM] vers 1\n\t88b2  86c928 [Vision 928 VRAM] vers 2\n\t88b3  86c928 [Vision 928 VRAM] vers 3\n\t88c0  86c864 [Vision 864 DRAM] vers 0\n\t88c1  86c864 [Vision 864 DRAM] vers 1\n\t88c2  86c864 [Vision 864-P DRAM] vers 2\n\t88c3  86c864 [Vision 864-P DRAM] vers 3\n\t88d0  86c964 [Vision 964 VRAM] vers 0\n\t88d1  86c964 [Vision 964 VRAM] vers 1\n\t88d2  86c964 [Vision 964-P VRAM] vers 2\n\t88d3  86c964 [Vision 964-P VRAM] vers 3\n\t88f0  86c968 [Vision 968 VRAM] rev 0\n\t88f1  86c968 [Vision 968 VRAM] rev 1\n\t88f2  86c968 [Vision 968 VRAM] rev 2\n\t88f3  86c968 [Vision 968 VRAM] rev 3\n\t8900  86c755 [Trio 64V2/DX]\n\t\t5333 8900  86C775 Trio64V2/DX\n\t8901  86c775/86c785 [Trio 64V2/DX or /GX]\n\t\t5333 8901  86C775 Trio64V2/DX, 86C785 Trio64V2/GX\n\t8902  Plato/PX\n\t8903  Trio 3D business multimedia\n\t8904  86c365, 86c366 [Trio 3D]\n\t\t1014 00db  Integrated Trio3D\n\t\t4843 314a  Terminator 128/3D GLH\n\t\t5333 8904  86C365 Trio3D AGP\n\t8905  Trio 64V+ family\n\t8906  Trio 64V+ family\n\t8907  Trio 64V+ family\n\t8908  Trio 64V+ family\n\t8909  Trio 64V+ family\n\t890a  Trio 64V+ family\n\t890b  Trio 64V+ family\n\t890c  Trio 64V+ family\n\t890d  Trio 64V+ family\n\t890e  Trio 64V+ family\n\t890f  Trio 64V+ family\n\t8a01  86c375 [ViRGE/DX] or 86c385 [ViRGE/GX]\n\t\t0e11 b032  ViRGE/GX\n\t\t10b4 1617  Nitro 3D\n\t\t10b4 1717  Nitro 3D\n\t\t5333 8a01  ViRGE/DX\n\t8a10  ViRGE/GX2\n\t\t1092 8a10  Stealth 3D 4000\n\t8a13  86c360 [Trio 3D/1X], 86c362, 86c368 [Trio 3D/2X]\n\t\t5333 8a13  Trio3D/2X\n\t8a20  86c794 [Savage 3D]\n\t\t5333 8a20  86C391 Savage3D\n\t8a21  86c390 [Savage 3D/MV]\n\t\t5333 8a21  86C390 Savage3D/MV\n\t8a22  Savage 4\n\t\t1033 8068  Savage 4\n\t\t1033 8069  Savage 4\n\t\t1033 8110  Savage 4 LT\n\t\t105d 0018  SR9 8Mb SDRAM\n\t\t105d 002a  SR9 Pro 16Mb SDRAM\n\t\t105d 003a  SR9 Pro 32Mb SDRAM\n\t\t105d 092f  SR9 Pro+ 16Mb SGRAM\n\t\t1092 4207  Stealth III S540\n\t\t1092 4800  Stealth III S540\n\t\t1092 4807  SpeedStar A90\n\t\t1092 4808  Stealth III S540\n\t\t1092 4809  Stealth III S540\n\t\t1092 480e  Stealth III S540\n\t\t1092 4904  Stealth III S520\n\t\t1092 4905  SpeedStar A200\n\t\t1092 4a09  Stealth III S540\n\t\t1092 4a0b  Stealth III S540 Xtreme\n\t\t1092 4a0f  Stealth III S540\n\t\t1092 4e01  Stealth III S540\n\t\t1102 101d  3d Blaster Savage 4\n\t\t1102 101e  3d Blaster Savage 4\n\t\t5333 8100  86C394-397 Savage4 SDRAM 100\n\t\t5333 8110  86C394-397 Savage4 SDRAM 110\n\t\t5333 8125  86C394-397 Savage4 SDRAM 125\n\t\t5333 8143  86C394-397 Savage4 SDRAM 143\n\t\t5333 8a22  86C394-397 Savage4\n\t\t5333 8a2e  86C394-397 Savage4 32bit\n\t\t5333 9125  86C394-397 Savage4 SGRAM 125\n\t\t5333 9143  86C394-397 Savage4 SGRAM 143\n\t8a23  Savage 4\n\t8a25  ProSavage PM133\n\t\t0303 0303  D9840-60001 [Brio BA410 Motherboard]\n\t8a26  ProSavage KM133\n\t8c00  ViRGE/M3\n\t8c01  ViRGE/MX\n\t\t1179 0001  ViRGE/MX\n\t8c02  ViRGE/MX+\n\t8c03  ViRGE/MX+MV\n\t8c10  86C270-294 [SavageMX-MV]\n\t8c11  82C270-294 [SavageMX]\n\t8c12  86C270-294 [SavageIX-MV]\n\t\t1014 017f  ThinkPad T20/T22\n\t\t1179 0001  86C584 SuperSavage/IXC Toshiba\n\t8c13  86C270-294 [SavageIX]\n\t\t1179 0001  Magnia Z310\n\t8c22  SuperSavage MX/128\n\t8c24  SuperSavage MX/64\n\t8c26  SuperSavage MX/64C\n\t8c2a  SuperSavage IX/128 SDR\n\t8c2b  SuperSavage IX/128 DDR\n\t8c2c  SuperSavage IX/64 SDR\n\t8c2d  SuperSavage IX/64 DDR\n\t8c2e  SuperSavage IX/C SDR\n\t\t1014 01fc  ThinkPad T23\n\t8c2f  SuperSavage IX/C DDR\n\t8d01  86C380 [ProSavageDDR K4M266]\n\t8d02  VT8636A [ProSavage KN133] AGP4X VGA Controller (TwisterK)\n\t8d03  VT8751 [ProSavageDDR P4M266]\n\t8d04  VT8375 [ProSavage8 KM266/KL266]\n\t8e00  DeltaChrome\n\t8e26  ProSavage\n\t8e40  2300E Graphics Processor\n\t8e48  Matrix [Chrome S25 / S27]\n\t\t5333 0130  Chrome S27 256M DDR2\n\t9020  86C920 [Chrome 460 ESV]\n\t9043  Chrome 430 GT\n\t9045  Chrome 430 ULP / 435 ULP / 440 GTX\n\t9060  Chrome 530 GT / 5400E\n# Found in VIA Embedded uH4 graphics card\n\t9070  Chrome 5400EW\n\t9102  86C410 [Savage 2000]\n\t\t1092 5932  Viper II Z200\n\t\t1092 5934  Viper II Z200\n\t\t1092 5952  Viper II Z200\n\t\t1092 5954  Viper II Z200\n\t\t1092 5a35  Viper II Z200\n\t\t1092 5a37  Viper II Z200\n\t\t1092 5a55  Viper II Z200\n\t\t1092 5a57  Viper II Z200\n\tca00  SonicVibes\n5431  AuzenTech, Inc.\n544c  Teralogic Inc\n\t0350  TL880-based HDTV/ATSC tuner\n544d  TBS Technologies\n\t6178  DVB Tuner PCIe Card\n\t\t544d 6904  TBS6904 DVB-S2 Quad Tuner PCIe Card\n\t\t544d 6905  TBS6905 DVB-S2 Quad Tuner PCIe Card\n\t\t6205 0001  TBS6205 DVB-T2/T/C Quad TV Tuner PCIe Card\n\t\t6209 0001  TBS6209 DVB-T2/C2/T/C/ISDB-T OctaTV Tuner\n\t\t6590 0001  TBS6590 DVB-S/S2/S2X/T/T2/C/C2/ISDB-T + 2xCI\n\t\t6590 0002  TBS6590SE DVB-S/S2/S2X/T/T2/C/C2 + 2xCI\n\t\t6704 ffff  TBS6704 (Quad ATSC/QAMB)\n\t\t6903 0020  TBS6903x (Dual DVB-S/S2/S2X)\n\t\t6903 0021  TBS6903x (Dual DVB-S/S2/S2X)\n\t\t6903 8888  TBS6903x (Dual DVB-S/S2/S2X)\n\t\t6909 0009  TBS6909x (Octa DVB-S/S2/S2X)\n\t\t6909 0010  TBS6909x (Octa DVB-S/S2/S2X)\n\t\t6909 0019  TBS6909x (Octa DVB-S/S2/S2X)\n\t\t6910 0001  TBS6910 DVB-S/S2 + 2xCI\n\t\t6910 0002  TBS6910SE DVB-S/S2/S2x + 2xCI\n5452  SCANLAB AG\n\t3443  RTC4\n5455  Technische Universitaet Berlin\n\t4458  S5933\n5456  GoTView\n5519  Cnet Technologies, Inc.\n5544  Dunord Technologies\n\t0001  I-30xx Scanner Interface\n5555  Genroco, Inc\n\t0003  TURBOstor HFP-832 [HiPPI NIC]\n\t0004  Torrent QN16e [16-128 Channel MPEG QAM Modulator for DVB-C]\n\t3b00  Epiphan DVI2PCIe video capture card\n5646  Vector Fabrics BV\n5654  VoiceTronix Pty Ltd\n5678  Dawicontrol Computersysteme GmbH\n5700  Netpower\n# alternately Extreme Engineering Solutions, Inc.\n5845  X-ES, Inc.\n584d  AuzenTech Co., Ltd.\n5851  Exacq Technologies\n\t8008  tDVR8008 8-port video capture card\n\t8016  tDVR8016 16-chan video capture card\n\t8032  tDVR8032 32-chan video capture card\n5853  XenSource, Inc.\n\t0001  Xen Platform Device\n\tc000  Citrix XenServer PCI Device for Windows Update\n\tc110  Virtualized HID\n\tc147  Virtualized Graphics Device\n\tc200  XCP-ng Project PCI Device for Windows Update\n5854  GoTView\n5ace  Beholder International Ltd.\n6205  TBS Technologies (wrong ID)\n6209  TBS Technologies (wrong ID)\n631c  SmartInfra Ltd\n\t1652  PXI-1652 Signal Generator\n\t2504  PXI-2504 Signal Interrogator\n6356  UltraStor\n6374  c't Magazin fuer Computertechnik\n\t6773  GPPCI\n6409  Logitec Corp.\n6549  Teradici Corp.\n\t1200  TERA1200 PC-over-IP Host\n6590  TBS Technologies (wrong ID)\n6666  Decision Computer International Co.\n\t0001  PCCOM4\n\t0002  PCCOM8\n\t0004  PCCOM2\n\t0101  PCI 8255/8254 I/O Card\n\t0200  12-bit AD/DA Card\n\t0201  14-bit AD/DA Card\n\t1011  Industrial Card\n\t1021  8 photo couple 8 relay Card\n\t1022  4 photo couple 4 relay Card\n\t1025  16 photo couple 16 relay Card\n\t4000  WatchDog Card\n6688  Zycoo Co., Ltd\n\t1200  CooVox TDM Analog Module\n\t1400  CooVOX TDM GSM Module\n\t1600  CooVOX TDM E1/T1 Module\n\t1800  CooVOX TDM BRI Module\n6704  TBS Technologies (wrong ID)\n6766  Glenfly Tech Co., Ltd.\n\t3d00  Arise-GT-10C0\n\t3d02  Arise1020\n\t3d03  Arise-GT-1040\n\t3d04  Arise1010\n\t3d06  Arise-GT-10C0t\n\t3d07  Arise2030\n\t3d08  Arise2020\n\t3d0e  Arise10D0\n\t3d40  GLF HDMI/DP Audio\n\t3d41  GLF HDMI/DP Audio\n\t3d43  GLF HDMI/DP Audio\n6899  ZT Systems\n# nee Qumranet\n6900  Red Hat, Inc.\n6903  TBS Technologies (wrong ID)\n6909  TBS Technologies (wrong ID)\n6910  TBS Technologies (wrong ID)\n6f67  NOVAIUM Technology\n7063  pcHDTV\n\t2000  HD-2000\n\t3000  HD-3000\n\t5500  HD5500 HDTV\n7284  HT OMEGA Inc.\n7357  IOxOS Technologies SA\n\t7910  7910 [Althea]\n7377  Shenzhen Colorful Yugong Technology and Development Co.\n7401  EndRun Technologies\n\te100  PTP3100 PCIe PTP Slave Clock\n7470  TP-LINK Technologies Co., Ltd.\n7526  HongQin (Beijing) Technology Co., Ltd.\n\t0082  HQ SSD M.2\n\t0083  HQ SSD 2TB M.2 NVMe\n7604  O.N. Electronic Co Ltd.\n78c0  Herrick Technology Laboratories, Inc. [HTL]\n\t0000  HTLv-1 / HTLv-2 / HTLv-13 / HTLv-23\n\t0011  HTLv-53\n7bde  MIDAC Corporation\n7f70  Arrow Lake-S PCH CNVi WiFi\n\t0094  WiFi 6E AX211 160MHz\n7fed  PowerTV\n8008  Quancom Electronic GmbH\n\t0010  WDOG1 [PCI-Watchdog 1]\n\t0011  PWDOG2 [PCI-Watchdog 2]\n\t0015  Clock77/PCI & Clock77/PCIe (DCF-77 receiver)\n# Wrong ID used in subsystem ID of AsusTek PCI-USB2 PCI card.\n807d  Asustek Computer, Inc.\n8080  Chengdu Storeswift Technology Co., Ltd.\n\t4016  CX4016A NVMe SSD Controller\n8086  Intel Corporation\n\t0007  82379AB\n\t0008  Extended Express System Support Controller\n\t0039  21145 Fast Ethernet\n\t0040  Core Processor DRAM Controller\n\t0041  Core Processor PCI Express x16 Root Port\n\t0042  Core Processor Integrated Graphics Controller\n\t0043  Core Processor Secondary PCI Express Root Port\n\t0044  Core Processor DRAM Controller\n\t\t1025 0347  Aspire 7740G\n\t\t1025 0487  TravelMate 5742\n\t\t1028 040a  Latitude E6410\n\t\t144d c06a  R730 Laptop\n\t\t17c0 10d2  Medion Akoya E7214 Notebook PC [MD98410]\n\t\te4bf 50c1  PC1-GROOVE\n\t0045  Core Processor PCI Express x16 Root Port\n\t\t17c0 10d2  Medion Akoya E7214 Notebook PC [MD98410]\n\t0046  Core Processor Integrated Graphics Controller\n\t\t1028 040a  Latitude E6410\n\t\t144d c06a  R730 Laptop\n\t\t17c0 10d9  Medion Akoya E7214 Notebook PC [MD98410]\n\t\te4bf 50c1  PC1-GROOVE\n\t0047  Core Processor Secondary PCI Express Root Port\n\t0048  Core Processor DRAM Controller\n\t0049  Core Processor PCI Express x16 Root Port\n\t004a  Core Processor Integrated Graphics Controller\n\t004b  Core Processor Secondary PCI Express Root Port\n\t0050  Core Processor Thermal Management Controller\n\t0069  Core Processor DRAM Controller\n\t0082  Centrino Advanced-N 6205 [Taylor Peak]\n\t\t8086 1301  Centrino Advanced-N 6205 AGN\n\t\t8086 1306  Centrino Advanced-N 6205 ABG\n\t\t8086 1307  Centrino Advanced-N 6205 BG\n\t\t8086 1321  Centrino Advanced-N 6205 AGN\n\t\t8086 1326  Centrino Advanced-N 6205 ABG\n\t0083  Centrino Wireless-N 1000 [Condor Peak]\n\t\t8086 1205  Centrino Wireless-N 1000 BGN\n\t\t8086 1206  Centrino Wireless-N 1000 BG\n\t\t8086 1225  Centrino Wireless-N 1000 BGN\n\t\t8086 1226  Centrino Wireless-N 1000 BG\n\t\t8086 1305  Centrino Wireless-N 1000 BGN\n\t\t8086 1306  Centrino Wireless-N 1000 BG\n\t\t8086 1325  Centrino Wireless-N 1000 BGN\n\t\t8086 1326  Centrino Wireless-N 1000 BG\n\t0084  Centrino Wireless-N 1000 [Condor Peak]\n\t\t8086 1215  Centrino Wireless-N 1000 BGN\n\t\t8086 1216  Centrino Wireless-N 1000 BG\n\t\t8086 1315  Centrino Wireless-N 1000 BGN\n\t\t8086 1316  Centrino Wireless-N 1000 BG\n\t0085  Centrino Advanced-N 6205 [Taylor Peak]\n\t\t8086 1311  Centrino Advanced-N 6205 (802.11a/b/g/n)\n\t\t8086 1316  Centrino Advanced-N 6205 ABG\n\t0087  Centrino Advanced-N + WiMAX 6250 [Kilmer Peak]\n\t\t8086 1301  Centrino Advanced-N + WiMAX 6250 2x2 AGN\n\t\t8086 1306  Centrino Advanced-N + WiMAX 6250 2x2 ABG\n\t\t8086 1321  Centrino Advanced-N + WiMAX 6250 2x2 AGN\n\t\t8086 1326  Centrino Advanced-N + WiMAX 6250 2x2 ABG\n\t0089  Centrino Advanced-N + WiMAX 6250 [Kilmer Peak]\n\t\t8086 1311  Centrino Advanced-N + WiMAX 6250 2x2 AGN\n\t\t8086 1316  Centrino Advanced-N + WiMAX 6250 2x2 ABG\n\t008a  Centrino Wireless-N 1030 [Rainbow Peak]\n\t\t8086 5305  Centrino Wireless-N 1030 BGN\n\t\t8086 5307  Centrino Wireless-N 1030 BG\n\t\t8086 5325  Centrino Wireless-N 1030 BGN\n\t\t8086 5327  Centrino Wireless-N 1030 BG\n\t008b  Centrino Wireless-N 1030 [Rainbow Peak]\n\t\t8086 5315  Centrino Wireless-N 1030 BGN\n\t\t8086 5317  Centrino Wireless-N 1030 BG\n\t0090  Centrino Advanced-N 6230 [Rainbow Peak]\n\t\t8086 5211  Centrino Advanced-N 6230 AGN\n\t\t8086 5215  Centrino Advanced-N 6230 BGN\n\t\t8086 5216  Centrino Advanced-N 6230 ABG\n\t0091  Centrino Advanced-N 6230 [Rainbow Peak]\n\t\t8086 5201  Centrino Advanced-N 6230 AGN\n\t\t8086 5205  Centrino Advanced-N 6230 BGN\n\t\t8086 5206  Centrino Advanced-N 6230 ABG\n\t\t8086 5207  Centrino Advanced-N 6230 BG\n\t\t8086 5221  Centrino Advanced-N 6230 AGN\n\t\t8086 5225  Centrino Advanced-N 6230 BGN\n\t\t8086 5226  Centrino Advanced-N 6230 ABG\n\t0100  2nd Generation Core Processor Family DRAM Controller\n\t\t1028 04aa  XPS 8300\n\t\t1043 844d  P8P67/P8H67 Series Motherboard\n\t\t1734 11b9  Esprimo P510 D3171 motherboard\n\t\t17aa 3070  ThinkCentre M91p\n\t\t8086 200d  DH61CR motherboard\n\t0101  Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port\n\t\t1028 04b2  Vostro 3350\n\t\t106b 00dc  MacBookPro8,2 [Core i7, 15\", 2011]\n\t\t144d c652  NP300E5C series laptop\n\t0102  2nd Generation Core Processor Family Integrated Graphics Controller\n\t\t1028 04aa  XPS 8300\n\t\t1043 0102  P8H67 Series Motherboard\n\t\t1734 11b9  G640 [Sandy Bridge, HD Graphics] on Esprimo P510 D3171 motherboard\n\t\t17aa 3070  ThinkCentre M91p\n\t0104  2nd Generation Core Processor Family DRAM Controller\n\t\t1028 04a3  Precision M4600\n\t\t1028 04b2  Vostro 3350\n\t\t1028 04da  Vostro 3750\n\t\t106b 00dc  MacBookPro8,2 [Core i7, 15\", 2011]\n\t\t144d c652  NP300E5C series laptop\n\t\t17aa 21cf  ThinkPad T520\n\t0105  Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port\n\t\t106b 00dc  MacBookPro8,2 [Core i7, 15\", 2011]\n\t0106  2nd Generation Core Processor Family Integrated Graphics Controller\n\t0108  Xeon E3-1200 Processor Family DRAM Controller\n\t0109  Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port\n\t010a  Xeon E3-1200 Processor Family Integrated Graphics Controller\n\t010b  Xeon E3-1200/2nd Generation Core Processor Family Integrated Graphics Controller\n\t010c  Xeon E3-1200/2nd Generation Core Processor Family DRAM Controller\n\t010d  Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port\n\t010e  Xeon E3-1200/2nd Generation Core Processor Family Integrated Graphics Controller\n\t0112  2nd Generation Core Processor Family Integrated Graphics Controller\n\t0116  2nd Generation Core Processor Family Integrated Graphics Controller\n\t\t1028 04da  Vostro 3750\n\t\t144d c652  integrated HD 3000 graphics controller on NP300E5C series laptop\n\t0122  2nd Generation Core Processor Family Integrated Graphics Controller\n\t0126  2nd Generation Core Processor Family Integrated Graphics Controller\n\t\t1028 04cc  Vostro 3350\n\t\t17aa 21ce  ThinkPad T420\n\t\t17aa 21cf  ThinkPad T520\n\t0150  Xeon E3-1200 v2/3rd Gen Core processor DRAM Controller\n\t\t1043 84ca  P8 series motherboard\n\t\t1458 d000  Ivy Bridge GT1 [HD Graphics]\n\t\t15d9 0624  X9SCM-F Motherboard\n\t\t1849 0150  Motherboard\n\t0151  Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port\n\t\t1043 1477  N56VZ\n\t\t1043 844d  P8 series motherboard\n\t\t1043 84ca  P8H77-I Motherboard\n\t\t8086 2010  Server Board S1200BTS\n\t0152  Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller\n\t\t1043 84ca  P8H77-I Motherboard\n\t0153  3rd Gen Core Processor Thermal Subsystem\n\t\t1043 1517  Zenbook Prime UX31A\n\t0154  3rd Gen Core processor DRAM Controller\n\t\t1025 0806  Aspire E1-470G\n\t\t1025 0813  Aspire R7-571\n\t\t103c 17f6  ProBook 4540s\n\t\t1043 108d  VivoBook X202EV\n\t\t1043 1477  N56VZ\n\t\t1043 1517  Zenbook Prime UX31A\n\t\t10cf 16bf  LIFEBOOK E752\n\t0155  Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port\n\t\t8086 2010  Server Board S1200BTS\n\t0156  3rd Gen Core processor Graphics Controller\n\t\t1043 108d  VivoBook X202EV\n\t0158  Xeon E3-1200 v2/Ivy Bridge DRAM Controller\n\t\t1043 844d  P8 series motherboard\n\t\t8086 2010  Server Board S1200BT Family\n\t0159  Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port\n\t015a  Xeon E3-1200 v2/Ivy Bridge Graphics Controller\n\t015c  Xeon E3-1200 v2/3rd Gen Core processor DRAM Controller\n\t015d  Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port\n\t\t1043 844d  P8 series motherboard\n\t015e  Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller\n\t0162  IvyBridge GT2 [HD Graphics 4000]\n\t\t1043 84ca  P8 series motherboard\n\t\t1849 0162  Motherboard\n\t0166  3rd Gen Core processor Graphics Controller\n\t\t1043 1517  Zenbook Prime UX31A\n\t\t1043 2103  N56VZ\n\t\t10cf 16c1  LIFEBOOK E752\n\t016a  Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller\n\t\t1043 844d  P8B WS Motherboard\n\t0172  Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller\n\t0176  3rd Gen Core processor Graphics Controller\n\t0201  Arctic Sound\n\t0284  Comet Lake PCH-LP LPC Premium Controller/eSPI Controller\n\t\t1028 09be  Latitude 7410\n\t02a3  Comet Lake PCH-LP SMBus Host Controller\n\t\t1028 09be  Latitude 7410\n\t02a4  Comet Lake SPI (flash) Controller\n\t\t1028 09be  Latitude 7410\n\t02a6  Comet Lake North Peak\n\t02b0  Comet Lake PCI Express Root Port #9\n\t02b1  Comet Lake PCI Express Root Port #10\n\t02b3  Comet Lake PCI Express Root Port #12\n\t02b4  Comet Lake PCI Express Root Port #13\n\t02b5  Comet Lake PCI Express Root Port #14\n\t02b8  Comet Lake PCI Express Root Port #1\n\t02bc  Comet Lake PCI Express Root Port #5\n\t02bf  Comet Lake PCI Express Root Port #8\n\t02c5  Comet Lake Serial IO I2C Host Controller\n\t\t1028 09be  Latitude 7410\n\t02c8  Comet Lake PCH-LP cAVS\n\t\t1028 09be  Latitude 7410\n\t02d3  Comet Lake SATA AHCI Controller\n\t02d7  Comet Lake RAID Controller\n\t02e0  Comet Lake Management Engine Interface\n\t\t1028 09be  Latitude 7410\n\t02e3  Comet Lake AMT SOL Redirection\n\t02e8  Serial IO I2C Host Controller\n\t\t1028 09be  Latitude 7410\n\t02e9  Comet Lake Serial IO I2C Host Controller\n\t\t1028 09be  Latitude 7410\n\t02ea  Comet Lake PCH-LP LPSS: I2C Controller #2\n\t02ed  Comet Lake PCH-LP USB 3.1 xHCI Host Controller\n\t\t1028 09be  Latitude 7410\n\t02ef  Comet Lake PCH-LP Shared SRAM\n\t\t1028 09be  Latitude 7410\n\t02f0  Comet Lake PCH-LP CNVi WiFi\n\t\t8086 0034  Dual Band Wi-Fi 5(802.11ac) Wireless-AC 9560 160MHz 2x2 [Jefferson Peak]\n\t\t8086 0070  Dual Band Wi-Fi 6(802.11ax) AX201 160MHz 2x2 [Harrison Peak]\n\t\t8086 0074  Dual Band Wi-Fi 6(802.11ax) AX201 160MHz 2x2 [Harrison Peak]\n\t\t8086 0234  Dual Band Wi-Fi 5(802.11ac) Wireless-AC 9560 80MHz 2x2 [Jefferson Peak]\n\t\t8086 0264  Dual Band Wi-Fi 5(802.11ac) Wireless-AC 9461 80MHz 1x1 [Jefferson Peak]\n\t\t8086 02a4  Dual Band Wi-Fi 5(802.11ac) Wireless-AC 9462 80MHz 1x1 [Jefferson Peak]\n\t\t8086 4070  Dual Band Wi-Fi 6(802.11ax) AX201 160MHz 2x2 [Harrison Peak]\n\t02f5  Comet Lake PCH-LP SCS3\n\t02f9  Comet Lake Thermal Subsytem\n\t\t1028 09be  Latitude 7410\n\t02fc  Comet Lake Integrated Sensor Solution\n\t\t1028 09be  Latitude 7410\n\t0309  80303 I/O Processor PCI-to-PCI Bridge\n\t030d  80312 I/O Companion Chip PCI-to-PCI Bridge\n\t0326  6700/6702PXH I/OxAPIC Interrupt Controller A\n\t\t103c 3208  ProLiant DL140 G2\n\t\t1775 1100  CR11/VR11 Single Board Computer\n\t0327  6700PXH I/OxAPIC Interrupt Controller B\n\t\t103c 3208  ProLiant DL140 G2\n\t\t1775 1100  CR11/VR11 Single Board Computer\n\t0329  6700PXH PCI Express-to-PCI Bridge A\n\t032a  6700PXH PCI Express-to-PCI Bridge B\n\t032c  6702PXH PCI Express-to-PCI Bridge A\n\t0330  80332 [Dobson] I/O processor (A-Segment Bridge)\n\t0331  80332 [Dobson] I/O processor (A-Segment IOAPIC)\n\t0332  80332 [Dobson] I/O processor (B-Segment Bridge)\n\t0333  80332 [Dobson] I/O processor (B-Segment IOAPIC)\n\t0334  80332 [Dobson] I/O processor (ATU)\n\t0335  80331 [Lindsay] I/O processor (PCI-X Bridge)\n\t0336  80331 [Lindsay] I/O processor (ATU)\n\t0340  41210 [Lanai] Serial to Parallel PCI Bridge (A-Segment Bridge)\n\t0341  41210 [Lanai] Serial to Parallel PCI Bridge (B-Segment Bridge)\n\t0370  80333 Segment-A PCIe Express to PCI-X bridge\n\t0371  80333 A-Bus IOAPIC\n\t0372  80333 Segment-B PCIe Express to PCI-X bridge\n\t0373  80333 B-Bus IOAPIC\n\t0374  80333 Address Translation Unit\n\t0402  Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller\n\t0406  Haswell Integrated Graphics Controller\n\t040a  Xeon E3-1200 v3 Processor Integrated Graphics Controller\n\t0412  Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller\n\t\t1028 05d7  Alienware X51 R2\n\t\t103c 1998  EliteDesk 800 G1\n\t\t17aa 3098  ThinkCentre E73\n\t\t17aa 309f  ThinkCentre M83\n\t0416  4th Gen Core Processor Integrated Graphics Controller\n\t\t17aa 220e  ThinkPad T440p\n\t041a  Xeon E3-1200 v3 Processor Integrated Graphics Controller\n\t041e  4th Generation Core Processor Family Integrated Graphics Controller\n\t0434  DH89XXCC Series QAT\n\t0435  DH895XCC Series QAT\n\t0436  DH8900CC Null Device\n\t0438  DH8900CC Series Gigabit Network Connection\n\t043a  DH8900CC Series Gigabit Fiber Network Connection\n\t043c  DH8900CC Series Gigabit Backplane Network Connection\n\t0440  DH8900CC Series Gigabit SFP Network Connection\n\t0442  DH89XXCC Series QAT Virtual Function\n\t0443  DH895XCC Series QAT Virtual Function\n\t0482  82375EB/SB PCI to EISA Bridge\n\t0483  82424TX/ZX [Saturn] CPU to PCI bridge\n\t0484  82378ZB/IB, 82379AB (SIO, SIO.A) PCI to ISA Bridge\n\t0486  82425EX/ZX [Aries] PCIset with ISA bridge\n\t04a3  82434LX/NX [Mercury/Neptune] Processor to PCI bridge\n\t04d0  82437FX [Triton FX]\n\t0500  E8870 Processor bus control\n\t0501  E8870 Memory controller\n# and registers common to both SPs\n\t0502  E8870 Scalability Port 0\n# and global performance monitoring\n\t0503  E8870 Scalability Port 1\n\t0510  E8870IO Hub Interface Port 0 registers (8-bit compatibility port)\n\t0511  E8870IO Hub Interface Port 1 registers\n\t0512  E8870IO Hub Interface Port 2 registers\n\t0513  E8870IO Hub Interface Port 3 registers\n\t0514  E8870IO Hub Interface Port 4 registers\n\t0515  E8870IO General SIOH registers\n\t0516  E8870IO RAS registers\n\t0530  E8870SP Scalability Port 0 registers\n\t0531  E8870SP Scalability Port 1 registers\n\t0532  E8870SP Scalability Port 2 registers\n\t0533  E8870SP Scalability Port 3 registers\n\t0534  E8870SP Scalability Port 4 registers\n\t0535  E8870SP Scalability Port 5 registers\n# (bi-interleave 0) and global registers that are neither per-port nor per-interleave\n\t0536  E8870SP Interleave registers 0 and 1\n# (bi-interleave 1)\n\t0537  E8870SP Interleave registers 2 and 3\n\t0600  RAID Controller\n\t\t8086 0136  SRCU31L\n\t\t8086 01af  SRCZCR\n\t\t8086 01c1  ICP Vortex GDT8546RZ\n\t\t8086 01f7  SCRU32\n# uninitialized SRCU32 RAID Controller\n\t061f  80303 I/O Processor\n\t0684  H470 Chipset LPC/eSPI Controller\n\t0685  Z490 Chipset LPC/eSPI Controller\n\t0687  Q470 Chipset LPC/eSPI Controller\n\t068d  Comet Lake LPC Controller\n\t068e  WM490 Chipset LPC/eSPI Controller\n\t06a3  Comet Lake PCH SMBus Controller\n\t06a4  Comet Lake PCH SPI Controller\n\t06a8  Comet Lake PCH Serial IO UART Host Controller #0\n\t06a9  Comet Lake PCH Serial IO UART Host Controller #1\n\t06aa  Comet Lake PCH Serial IO SPI Controller #0\n\t06ab  Comet Lake PCH Serial IO SPI Controller #1\n\t06ac  Comet Lake PCI Express Root Port #21\n\t06b0  Comet Lake PCI Express Root Port #9\n\t06b8  Comet Lake PCIe Root Port #1\n\t06ba  Comet Lake PCI Express Root Port #1\n\t06bb  Comet Lake PCI Express Root Port #4\n\t06bd  Comet Lake PCIe Port #6\n\t06be  Comet Lake PCIe Root Port #7\n\t06bf  Comet Lake PCIe Port #8\n\t06c0  Comet Lake PCI Express Root Port #17\n\t06c8  Comet Lake PCH cAVS\n\t06d2  Comet Lake SATA AHCI Controller\n\t06d6  Comet Lake PCH-H RAID\n\t06d7  Comet Lake PCH-H RAID\n\t06e0  Comet Lake HECI Controller\n\t06e3  Comet Lake Keyboard and Text (KT) Redirection\n\t06e8  Comet Lake PCH Serial IO I2C Controller #0\n\t06e9  Comet Lake PCH Serial IO I2C Controller #1\n\t06ea  Comet Lake PCH Serial IO I2C Controller #2\n\t06eb  Comet Lake PCH Serial IO I2C Controller #3\n\t06ed  Comet Lake USB 3.1 xHCI Host Controller\n\t06ef  Comet Lake PCH Shared SRAM\n\t06f0  Comet Lake PCH CNVi WiFi\n\t\t1a56 1651  Dual Band Wi-Fi 6(802.11ax) Killer AX1650s 160MHz 2x2 [Cyclone Peak]\n\t\t1a56 1652  Dual Band Wi-Fi 6(802.11ax) Killer AX1650i 160MHz 2x2 [Cyclone Peak]\n\t\t8086 0034  Dual Band Wi-Fi 5(802.11ac) Wireless-AC 9560 160MHz 2x2 [Jefferson Peak]\n\t\t8086 0074  Dual Band Wi-Fi 6(802.11ax) AX201 160MHz 2x2 [Harrison Peak]\n\t\t8086 02a4  Dual Band Wi-Fi 5(802.11ac) Wireless-AC 9462 80MHz 1x1 [Jefferson Peak]\n\t\t8086 42a4  Dual Band Wi-Fi 5(802.11ac) Wireless-AC 9462 80MHz 1x1 [Jefferson Peak]\n\t06f9  Comet Lake PCH Thermal Controller\n\t06fb  Comet Lake PCH Serial IO SPI Controller #2\n\t06fc  Comet Lake PCH Integrated Sensor Solution\n\t0700  CE Media Processor A/V Bridge\n\t0701  CE Media Processor NAND Flash Controller\n\t0703  CE Media Processor Media Control Unit 1\n\t0704  CE Media Processor Video Capture Interface\n\t0707  CE Media Processor SPI Slave\n\t0708  Atom Processor CE 4100\n\t0709  Atom Processor CE 4200\n\t0800  Moorestown SPI Ctrl 0\n\t0801  Moorestown SPI Ctrl 1\n\t0802  Moorestown I2C 0\n\t0803  Moorestown I2C 1\n\t0804  Moorestown I2C 2\n\t0805  Moorestown Keyboard Ctrl\n\t0806  Moorestown USB Ctrl\n\t0807  Moorestown SD Host Ctrl 0\n\t0808  Moorestown SD Host Ctrl 1\n\t0809  Moorestown NAND Ctrl\n\t080a  Moorestown Audio Ctrl\n\t080b  Moorestown ISP\n\t080c  Moorestown Security Controller\n\t080d  Moorestown External Displays\n\t080e  Moorestown SCU IPC\n\t080f  Moorestown GPIO Controller\n\t0810  Moorestown Power Management Unit\n\t0811  Moorestown OTG Ctrl\n\t0812  Moorestown SPI Ctrl 2\n\t0813  Moorestown SC DMA\n\t0814  Moorestown LPE DMA\n\t0815  Moorestown SSP0\n\t0817  Medfield Serial IO I2C Controller #3\n\t0818  Medfield Serial IO I2C Controller #4\n\t0819  Medfield Serial IO I2C Controller #5\n\t081a  Medfield GPIO Controller [Core]\n\t081b  Medfield Serial IO HSUART Controller #1\n\t081c  Medfield Serial IO HSUART Controller #2\n\t081d  Medfield Serial IO HSUART Controller #3\n\t081e  Medfield Serial IO HSUART DMA Controller\n\t081f  Medfield GPIO Controller [AON]\n\t0820  Medfield SD Host Controller\n\t0821  Medfield SDIO Controller #1\n\t0822  Medfield SDIO Controller #2\n\t0823  Medfield eMMC Controller #0\n\t0824  Medfield eMMC Controller #1\n\t0827  Medfield Serial IO DMA Controller\n\t0828  Medfield Power Management Unit\n\t0829  Medfield USB Device Controller (OTG)\n\t082a  Medfield SCU IPC\n\t082c  Medfield Serial IO I2C Controller #0\n\t082d  Medfield Serial IO I2C Controller #1\n\t082e  Medfield Serial IO I2C Controller #2\n\t0885  Centrino Wireless-N + WiMAX 6150\n\t\t8086 1305  Centrino Wireless-N + WiMAX 6150 BGN\n\t\t8086 1307  Centrino Wireless-N + WiMAX 6150 BG\n\t\t8086 1325  Centrino Wireless-N + WiMAX 6150 BGN\n\t\t8086 1327  Centrino Wireless-N + WiMAX 6150 BG\n\t0886  Centrino Wireless-N + WiMAX 6150\n\t\t8086 1315  Centrino Wireless-N + WiMAX 6150 BGN\n\t\t8086 1317  Centrino Wireless-N + WiMAX 6150 BG\n\t0887  Centrino Wireless-N 2230\n\t\t8086 4062  Centrino Wireless-N 2230 BGN\n\t\t8086 4462  Centrino Wireless-N 2230 BGN\n\t0888  Centrino Wireless-N 2230\n\t\t8086 4262  Centrino Wireless-N 2230 BGN\n\t088e  Centrino Advanced-N 6235\n\t\t8086 4060  Centrino Advanced-N 6235 AGN\n\t\t8086 4460  Centrino Advanced-N 6235 AGN\n\t088f  Centrino Advanced-N 6235\n\t\t8086 4260  Centrino Advanced-N 6235 AGN\n\t0890  Centrino Wireless-N 2200\n\t\t8086 4022  Centrino Wireless-N 2200 BGN\n\t\t8086 4422  Centrino Wireless-N 2200 BGN\n\t\t8086 4822  Centrino Wireless-N 2200 BGN\n\t0891  Centrino Wireless-N 2200\n\t\t8086 4222  Centrino Wireless-N 2200 BGN\n\t0892  Centrino Wireless-N 135\n\t\t8086 0062  Centrino Wireless-N 135 BGN\n\t\t8086 0462  Centrino Wireless-N 135 BGN\n\t0893  Centrino Wireless-N 135\n\t\t8086 0262  Centrino Wireless-N 135 BGN\n\t0894  Centrino Wireless-N 105\n\t\t8086 0022  Centrino Wireless-N 105 BGN\n\t\t8086 0422  Centrino Wireless-N 105 BGN\n\t\t8086 0822  Centrino Wireless-N 105 BGN\n\t0895  Centrino Wireless-N 105\n\t\t8086 0222  Centrino Wireless-N 105 BGN\n\t0896  Centrino Wireless-N 130\n\t\t8086 5005  Centrino Wireless-N 130 BGN\n\t\t8086 5007  Centrino Wireless-N 130 BG\n\t\t8086 5025  Centrino Wireless-N 130 BGN\n\t\t8086 5027  Centrino Wireless-N 130 BG\n\t0897  Centrino Wireless-N 130\n\t\t8086 5015  Centrino Wireless-N 130 BGN\n\t\t8086 5017  Centrino Wireless-N 130 BG\n\t08a7  Quark SoC X1000 SDIO / eMMC Controller\n\t08ae  Centrino Wireless-N 100\n\t\t8086 1005  Centrino Wireless-N 100 BGN\n\t\t8086 1007  Centrino Wireless-N 100 BG\n\t\t8086 1025  Centrino Wireless-N 100 BGN\n\t\t8086 1027  Centrino Wireless-N 100 BG\n\t08af  Centrino Wireless-N 100\n\t\t8086 1015  Centrino Wireless-N 100 BGN\n\t\t8086 1017  Centrino Wireless-N 100 BG\n\t08b1  Wireless 7260\n\t\t8086 4020  Dual Band Wireless-N 7260 [Wilkins Peak 2]\n\t\t8086 402a  Dual Band Wireless-N 7260 [Wilkins Peak 2]\n\t\t8086 4060  Dual Band Wireless-N 7260 [Wilkins Peak 2]\n\t\t8086 4062  Wireless-N 7260 [Wilkins Peak 2]\n\t\t8086 406a  Dual Band Wireless-N 7260 [Wilkins Peak 2]\n\t\t8086 4070  Dual Band Wireless-AC 7260 [Wilkins Peak 2]\n\t\t8086 4072  Dual Band Wireless-AC 7260 [Wilkins Peak 2]\n\t\t8086 4160  Dual Band Wireless-N 7260 [Wilkins Peak 2]\n\t\t8086 4162  Wireless-N 7260 [Wilkins Peak 2]\n\t\t8086 4170  Dual Band Wireless-AC 7260 [Wilkins Peak 2]\n\t\t8086 4420  Dual Band Wireless-N 7260 [Wilkins Peak 2]\n\t\t8086 4460  Dual Band Wireless-N 7260 [Wilkins Peak 2]\n\t\t8086 4462  Wireless-N 7260 [Wilkins Peak 2]\n\t\t8086 446a  Dual Band Wireless-N 7260 [Wilkins Peak 2]\n\t\t8086 4470  Dual Band Wireless-AC 7260 [Wilkins Peak 2]\n\t\t8086 4472  Dual Band Wireless-AC 7260 [Wilkins Peak 2]\n\t\t8086 4560  Dual Band Wireless-N 7260 [Wilkins Peak 2]\n\t\t8086 4570  Dual Band Wireless-AC 7260 [Wilkins Peak 2]\n\t\t8086 486e  Dual Band Wireless-AC 7260 [Wilkins Peak 2]\n\t\t8086 4870  Dual Band Wireless-AC 7260 [Wilkins Peak 2]\n\t\t8086 4a6c  Dual Band Wireless-AC 7260 [Wilkins Peak 2]\n\t\t8086 4a6e  Dual Band Wireless-AC 7260 [Wilkins Peak 2]\n\t\t8086 4a70  Dual Band Wireless-AC 7260 [Wilkins Peak 2]\n\t\t8086 4c60  Dual Band Wireless-AC 7260 [Wilkins Peak 2]\n\t\t8086 4c70  Dual Band Wireless-AC 7260 [Wilkins Peak 2]\n\t\t8086 5070  Dual Band Wireless-AC 7260 [Wilkins Peak 2]\n\t\t8086 5072  Dual Band Wireless-AC 7260 [Wilkins Peak 2]\n\t\t8086 5170  Dual Band Wireless-AC 7260 [Wilkins Peak 2]\n\t\t8086 5770  Dual Band Wireless-AC 7260 [Wilkins Peak 2]\n\t\t8086 c020  Dual Band Wireless-N 7260 [Wilkins Peak 2]\n\t\t8086 c02a  Dual Band Wireless-N 7260 [Wilkins Peak 2]\n\t\t8086 c060  Dual Band Wireless-N 7260 [Wilkins Peak 2]\n\t\t8086 c062  Wireless-N 7260 [Wilkins Peak 2]\n\t\t8086 c06a  Dual Band Wireless-N 7260 [Wilkins Peak 2]\n\t\t8086 c070  Dual Band Wireless-AC 7260 [Wilkins Peak 2]\n\t\t8086 c072  Dual Band Wireless-AC 7260 [Wilkins Peak 2]\n\t\t8086 c160  Dual Band Wireless-N 7260 [Wilkins Peak 2]\n\t\t8086 c162  Wireless-N 7260 [Wilkins Peak 2]\n\t\t8086 c170  Dual Band Wireless-AC 7260 [Wilkins Peak 2]\n\t\t8086 c360  Dual Band Wireless-N 7260 [Wilkins Peak 2]\n\t\t8086 c420  Dual Band Wireless-N 7260 [Wilkins Peak 2]\n\t\t8086 c460  Dual Band Wireless-N 7260 [Wilkins Peak 2]\n\t\t8086 c462  Wireless-N 7260 [Wilkins Peak 2]\n\t\t8086 c470  Dual Band Wireless-AC 7260 [Wilkins Peak 2]\n\t\t8086 c472  Dual Band Wireless-AC 7260 [Wilkins Peak 2]\n\t\t8086 c560  Dual Band Wireless-N 7260 [Wilkins Peak 2]\n\t\t8086 c570  Dual Band Wireless-AC 7260 [Wilkins Peak 2]\n\t\t8086 c760  Dual Band Wireless-N 7260 [Wilkins Peak 2]\n\t\t8086 c770  Dual Band Wireless-AC 7260 [Wilkins Peak 2]\n\t\t8086 cc60  Dual Band Wireless-AC 7260 [Wilkins Peak 2]\n\t\t8086 cc70  Dual Band Wireless-AC 7260 [Wilkins Peak 2]\n\t08b2  Wireless 7260\n\t\t8086 4220  Dual Band Wireless-N 7260 [Wilkins Peak 2]\n\t\t8086 4260  Dual Band Wireless-N 7260 [Wilkins Peak 2]\n\t\t8086 4262  Wireless-N 7260 [Wilkins Peak 2]\n\t\t8086 426a  Dual Band Wireless-N 7260 [Wilkins Peak 2]\n\t\t8086 4270  Wireless-N 7260 [Wilkins Peak 2]\n\t\t8086 4272  Dual Band Wireless-AC 7260 [Wilkins Peak 2]\n\t\t8086 4360  Dual Band Wireless-N 7260 [Wilkins Peak 2]\n\t\t8086 4370  Dual Band Wireless-AC 7260 [Wilkins Peak 2]\n\t\t8086 c220  Dual Band Wireless-N 7260 [Wilkins Peak 2]\n\t\t8086 c260  Dual Band Wireless-N 7260 [Wilkins Peak 2]\n\t\t8086 c262  Wireless-N 7260 [Wilkins Peak 2]\n\t\t8086 c26a  Dual Band Wireless-N 7260 [Wilkins Peak 2]\n\t\t8086 c270  Dual Band Wireless-AC 7260 [Wilkins Peak 2]\n\t\t8086 c272  Dual Band Wireless-AC 7260 [Wilkins Peak 2]\n\t\t8086 c370  Dual Band Wireless-AC 7260 [Wilkins Peak 2]\n\t08b3  Wireless 3160\n\t\t8086 0060  Dual Band Wireless-N 3160 [Wilkins Peak 1]\n\t\t8086 0062  Wireless-N 3160 [Wilkins Peak 1]\n\t\t8086 0070  Dual Band Wireless-AC 3160 [Wilkins Peak 1]\n\t\t8086 0072  Dual Band Wireless-AC 3160 [Wilkins Peak 1]\n\t\t8086 0170  Dual Band Wireless-AC 3160 [Wilkins Peak 1]\n\t\t8086 0172  Dual Band Wireless-AC 3160 [Wilkins Peak 1]\n\t\t8086 0260  Dual Band Wireless-N 3160 [Wilkins Peak 1]\n\t\t8086 0470  Dual Band Wireless-AC 3160 [Wilkins Peak 1]\n\t\t8086 0472  Dual Band Wireless-AC 3160 [Wilkins Peak 1]\n\t\t8086 1070  Dual Band Wireless-AC 3160 [Wilkins Peak 1]\n\t\t8086 1170  Dual Band Wireless-AC 3160 [Wilkins Peak 1]\n\t\t8086 8060  Dual Band Wireless N-3160 [Wilkins Peak 1]\n\t\t8086 8062  Wireless N-3160 [Wilkins Peak 1]\n\t\t8086 8070  Dual Band Wireless AC 3160 [Wilkins Peak 1]\n\t\t8086 8072  Dual Band Wireless AC 3160 [Wilkins Peak 1]\n\t\t8086 8170  Dual Band Wireless AC 3160 [Wilkins Peak 1]\n\t\t8086 8172  Dual Band Wireless AC 3160 [Wilkins Peak 1]\n\t\t8086 8470  Dual Band Wireless AC 3160 [Wilkins Peak 1]\n\t\t8086 8570  Dual Band Wireless AC 3160 [Wilkins Peak 1]\n\t08b4  Wireless 3160\n\t\t8086 0270  Dual Band Wireless-AC 3160 [Wilkins Peak 1]\n\t\t8086 0272  Dual Band Wireless-AC 3160 [Wilkins Peak 1]\n\t\t8086 0370  Dual Band Wireless-AC 3160 [Wilkins Peak 1]\n\t\t8086 8260  Dual Band Wireless AC 3160 [Wilkins Peak 1]\n\t\t8086 8270  Dual Band Wireless AC 3160 [Wilkins Peak 1]\n\t\t8086 8272  Dual Band Wireless AC 3160 [Wilkins Peak 1]\n\t\t8086 8370  Dual Band Wireless AC 3160 [Wilkins Peak 1]\n# PowerVR SGX 545\n\t08cf  Atom Processor Z2760 Integrated Graphics Controller\n\t0931  Atom Processor CE 2600 [Puma 6]\n\t0934  Quark SoC X1000 I2C Controller and GPIO Controller\n\t0935  Quark SoC X1000 SPI Controller\n\t0936  Quark SoC X1000 HS-UART\n\t0937  Quark SoC X1000 10/100 Ethernet MAC\n\t0939  Quark SoC X1000 USB EHCI Host Controller / USB 2.0 Device\n\t093a  Quark SoC X1000 USB OHCI Host Controller\n\t0953  PCIe Data Center SSD\n\t\t8086 3702  DC P3700 SSD\n\t\t8086 3703  DC P3700 SSD [2.5\" SFF]\n\t\t8086 3704  DC P3500 SSD [Add-in Card]\n\t\t8086 3705  DC P3500 SSD [2.5\" SFF]\n\t\t8086 3709  DC P3600 SSD [Add-in Card]\n\t\t8086 370a  DC P3600 SSD [2.5\" SFF]\n\t\t8086 370d  SSD 750 Series [Add-in Card]\n\t\t8086 370e  SSD 750 Series [2.5\" SFF]\n\t0958  Quark SoC X1000 Host Bridge\n\t095a  Wireless 7265\n\t\t8086 1010  Dual Band Wireless-AC 7265 [Stone Peak 2 AC]\n\t\t8086 5000  Dual Band Wireless-N 7265 [Stone Peak 2 AGN]\n\t\t8086 5002  Wireless-N 7265 [Stone Peak 2 BGN]\n\t\t8086 500a  Dual Band Wireless-N 7265 [Stone Peak 2 AGN]\n\t\t8086 5010  Dual Band Wireless-AC 7265 [Stone Peak 2 AC]\n\t\t8086 5012  Dual Band Wireless-AC 7265 [Stone Peak 2 AC]\n\t\t8086 5020  Dual Band Wireless-N 7265 [Stone Peak 2 AGN]\n\t\t8086 502a  Dual Band Wireless-N 7265 [Stone Peak 2 AGN]\n\t\t8086 5090  Dual Band Wireless-AC 7265 [Maple Peak AC]\n\t\t8086 5100  Dual Band Wireless-AC 7265 [Stone Peak 2 AGN]\n\t\t8086 5102  Wireless-N 7265 [Stone Peak 2 BGN]\n\t\t8086 510a  Dual Band Wireless-AC 7265 [Stone Peak 2 AGN]\n\t\t8086 5110  Dual Band Wireless-AC 7265 [Stone Peak 2 AC]\n\t\t8086 5112  Dual Band Wireless-AC 7265 [Stone Peak 2 AC]\n\t\t8086 5190  Dual Band Wireless-AC 7265 [Maple Peak AC]\n\t\t8086 5400  Dual Band Wireless-AC 7265 [Stone Peak 2 AGN]\n\t\t8086 5410  Dual Band Wireless-AC 7265 [Stone Peak 2 AC]\n\t\t8086 5412  Dual Band Wireless-AC 7265 [Stone Peak 2 AC]\n\t\t8086 5420  Dual Band Wireless-N 7265 [Stone Peak 2 AGN]\n\t\t8086 5490  Dual Band Wireless-AC 7265 [Maple Peak AC]\n\t\t8086 5510  Dual Band Wireless-AC 7265 [Stone Peak 2 AC]\n\t\t8086 5590  Dual Band Wireless-AC 7265 [Maple Peak AC]\n\t\t8086 9000  Dual Band Wireless-AC 7265 [Stone Peak 2 AGN]\n\t\t8086 900a  Dual Band Wireless-AC 7265 [Stone Peak 2 AGN]\n\t\t8086 9010  Dual Band Wireless-AC 7265 [Stone Peak 2 AC]\n\t\t8086 9012  Dual Band Wireless-AC 7265 [Stone Peak 2 AC]\n\t\t8086 9110  Dual Band Wireless-AC 7265 [Stone Peak 2 AC]\n\t\t8086 9112  Dual Band Wireless-AC 7265 [Stone Peak 2 AC]\n\t\t8086 9210  Dual Band Wireless-AC 7265 [Stone Peak 2 AC]\n\t\t8086 9310  Dual Band Wireless-AC 7265 [Stone Peak 2 AC]\n\t\t8086 9400  Dual Band Wireless-AC 7265 [Stone Peak 2 AGN]\n\t\t8086 9410  Dual Band Wireless-AC 7265 [Stone Peak 2 AC]\n\t\t8086 9510  Dual Band Wireless-AC 7265 [Stone Peak 2 AC]\n\t095b  Wireless 7265\n\t\t8086 5200  Dual Band Wireless-N 7265 [Stone Peak 2 AGN]\n\t\t8086 5202  Wireless-N 7265 [Stone Peak 2 BGN]\n\t\t8086 520a  Dual Band Wireless-N 7265 [Stone Peak 2 AGN]\n\t\t8086 5210  Dual Band Wireless-AC 7265 [Stone Peak 2 AC]\n\t\t8086 5212  Dual Band Wireless-AC 7265 [Stone Peak 2 AC]\n\t\t8086 5290  Dual Band Wireless-AC 7265 [Maple Peak AC]\n\t\t8086 5302  Wireless-N 7265 [Stone Peak 2 BGN]\n\t\t8086 5310  Dual Band Wireless-AC 7265 [Stone Peak 2 AC]\n\t\t8086 9200  Dual Band Wireless-AC 7265 [Stone Peak 2 AGN]\n\t095e  Quark SoC X1000 Legacy Bridge\n\t0960  80960RP (i960RP) Microprocessor/Bridge\n\t0962  80960RM (i960RM) Bridge\n\t0964  80960RP (i960RP) Microprocessor/Bridge\n\t0975  Optane NVME SSD H10 with Solid State Storage [Teton Glacier]\n\t0998  Ice Lake IEH\n\t09a2  Ice Lake Memory Map/VT-d\n\t09a3  Ice Lake RAS\n\t09a4  Ice Lake Mesh 2 PCIe\n\t09a6  Ice Lake MSM\n\t09a7  Ice Lake PMON MSM\n\t09ab  RST VMD Managed Controller\n\t09ad  Optane NVME SSD H20 with Solid State Storage [Pyramid Glacier]\n\t09c4  PAC with Intel Arria 10 GX FPGA\n\t0a03  Haswell-ULT Thermal Subsystem\n\t0a04  Haswell-ULT DRAM Controller\n\t\t17aa 2214  ThinkPad X240\n\t0a06  Haswell-ULT Integrated Graphics Controller\n\t0a0c  Haswell-ULT HD Audio Controller\n\t\t17aa 2214  ThinkPad X240\n\t0a16  Haswell-ULT Integrated Graphics Controller\n\t\t17aa 2214  ThinkPad X240\n\t0a22  Haswell-ULT Integrated Graphics Controller\n\t0a26  Haswell-ULT Integrated Graphics Controller\n\t0a2a  Haswell-ULT Integrated Graphics Controller\n\t0a2e  Haswell-ULT Integrated Graphics Controller\n\t0a53  DC P3520 SSD\n\t0a54  NVMe Datacenter SSD [3DNAND, Beta Rock Controller]\n\t\t1028 1fe1  Express Flash NVMe 1TB 2.5\" U.2 (P4500)\n\t\t1028 1fe2  Express Flash NVMe 2TB 2.5\" U.2 (P4500)\n\t\t1028 1fe3  Express Flash NVMe 4TB 2.5\" U.2 (P4500)\n\t\t1028 1fe4  Express Flash NVMe 4TB HHHL AIC (P4500)\n\t\t1028 1fee  Express Flash NVMe 1.6TB 2.5\" U.2 (P4610)\n\t\t1028 1fef  Express Flash NVMe 3.2TB 2.5\" U.2 (P4610)\n\t\t1028 1ff0  Express Flash NVMe 6.4TB 2.5\" U.2 (P4610)\n\t\t1028 1fff  Express Flash NVMe 8.0TB 2.5\" U.2 (P4510)\n\t\t1028 2003  Express Flash NVMe 1.0 TB 2.5\" U.2 (P4510)\n\t\t1028 2004  Express Flash NVMe 2.0TB 2.5\" U.2 (P4510)\n\t\t1028 2005  Express Flash NVMe 4.0TB 2.5\" U.2 (P4510)\n\t\t108e 4870  NVMe PCIe 3.0 SSD 6.4TB AIC (P4608)\n\t\t108e 4871  NVMe PCIe 3.0 SSD 6.4TB 2.5-inch (P4600)\n\t\t108e 4879  NVMe PCIe 3.0 SSD v2 6.4TB AIC (P4618)\n\t\t108e 487a  NVMe PCIe 3.0 SSD v2 6.4TB 2.5-inch (P4610)\n\t\t1137 0227  NVMe Datacenter SSD [3DNAND] 1.6TB 2.5\" U.2 (P4600)\n\t\t1137 0228  NVMe Datacenter SSD [3DNAND] 2.0TB 2.5\" U.2 (P4600)\n\t\t1137 0229  NVMe Datacenter SSD [3DNAND] 3.2TB 2.5\" U.2 (P4600)\n\t\t1137 022b  NVMe Datacenter SSD [3DNAND] 1.0TB 2.5\" U.2 (P4500)\n\t\t1137 022c  NVMe Datacenter SSD [3DNAND] 2.0TB 2.5\" U.2 (P4500)\n\t\t1137 022d  NVMe Datacenter SSD [3DNAND] 4.0TB 2.5\" U.2 (P4500)\n\t\t1137 0231  NVMe Datacenter SSD [3DNAND] 0.5TB 2.5\" U.2 (P4501)\n\t\t1137 0232  NVMe Datacenter SSD [3DNAND] 1.0TB 2.5\" U.2 (P4501)\n\t\t1137 0233  NVMe Datacenter SSD [3DNAND] 2.0TB 2.5\" U.2 (P4501)\n\t\t1137 0258  NVMe Datacenter SSD [3DNAND] 1.6TB 2.5\" U.2 (P4610)\n\t\t1137 025a  NVMe Datacenter SSD [3DNAND] 3.2TB 2.5\" U.2 (P4610)\n\t\t1137 025b  NVMe Datacenter SSD [3DNAND] 1.0TB 2.5\" U.2 (P4510)\n\t\t1137 025c  NVMe Datacenter SSD [3DNAND] 2.0TB 2.5\" U.2 (P4510)\n\t\t1137 025d  NVMe Datacenter SSD [3DNAND] 4.0TB 2.5\" U.2 (P4510)\n\t\t1137 025e  NVMe Datacenter SSD [3DNAND] 8.0TB 2.5\" U.2 (P4510)\n\t\t1590 025d  NVMe Datacenter SSD [3DNAND] 1.0TB 2.5\" U.2 (P4500)\n\t\t1590 025e  NVMe Datacenter SSD [3DNAND] 2.0TB 2.5\" U.2 (P4500)\n\t\t1590 025f  NVMe Datacenter SSD [3DNAND] 4.0TB 2.5\" U.2 (P4500)\n\t\t1590 0262  NVMe Datacenter SSD [3DNAND] 1.6TB 2.5\" U.2 (P4600)\n\t\t1590 0264  NVMe Datacenter SSD [3DNAND] 3.2TB 2.5\" U.2 (P4600)\n\t\t1590 0265  NVMe Datacenter SSD [3DNAND] 6.4TB 2.5\" U.2 (P4600)\n\t\t1590 026c  NVMe Datacenter SSD [3DNAND] 4.0TB AIC (P4500)\n\t\t1d49 4702  Thinksystem Intel P4500 NVMe U.2\n\t\t1d49 4704  Thinksystem Intel P4500 NVMe AIC\n\t\t1d49 4712  Thinksystem Intel P4600 NVMe U.2\n\t\t1d49 4714  Thinksystem Intel P4600 NVMe AIC\n\t\t1d49 4802  Thinksystem U.2 P4510 NVMe SSD\n\t\t1d49 4812  Thinksystem U.2 P4610 NVMe SSD\n\t\t8086 4308  SSD D5-P4320 and D5-P4326\n\t\t8086 4702  NVMe Datacenter SSD [3DNAND] SE 2.5\" U.2 (P4500)\n\t\t8086 4704  NVMe Datacenter SSD [3DNAND] SE AIC (P4500)\n\t\t8086 4712  NVMe Datacenter SSD [3DNAND] ME 2.5\" U.2 (P4600)\n\t\t8086 4714  NVMe Datacenter SSD [3DNAND] ME AIC (P4600)\n\t\t8086 4802  NVMe Datacenter SSD [3DNAND] SE 2.5\" U.2 (P4510)\n\t\t8086 4804  NVMe Datacenter SSD [3DNAND] SE AIC (P4510)\n\t\t8086 4805  NVMe Datacenter SSD [3DNAND] SE M.2 (P4511)\n\t\t8086 4812  NVMe Datacenter SSD [3DNAND] ME 2.5\" U.2 (P4610)\n\t\t8086 4814  NVMe Datacenter SSD [3DNAND] ME AIC (P4610)\n\t0a55  NVMe DC SSD [3DNAND, Beta Rock Controller]\n\t\t1028 1fe5  Express Flash NVMe 1.6TB 2.5\" U.2 (P4600)\n\t\t1028 1fe6  Express Flash NVMe 2TB 2.5\" U.2 (P4600)\n\t\t1028 1fe7  Express Flash NVMe 3.2TB 2.5\" U.2 (P4600)\n\t\t1028 1fe8  Express Flash NVMe 2.0TB HHHL AIC (P4600)\n\t\t1028 1fe9  Express Flash NVMe 4.0TB HHHL AIC (P4600)\n\t0b00  Ice Lake CBDMA [QuickData Technology]\n\t0b26  Thunderbolt 4 Bridge [Goshen Ridge 2020]\n\t0b27  Thunderbolt 4 USB Controller [Goshen Ridge 2020]\n\t0b2b  PAC with Intel Stratix 10 SX FPGA [FPGA PAC D5005]\n\t0b60  NVMe DC SSD [3DNAND, Sentinel Rock Controller]\n\t\t1028 2060  NVMe SED MU U.2 1.6TB (P5600)\n\t\t1028 2061  NVMe SED MU U.2 3.2TB (P5600)\n\t\t1028 2062  NVMe SED MU U.2 6.4TB (P5600)\n\t\t1028 2064  NVMe SED RI U.2 1.92TB (P5500)\n\t\t1028 2065  NVMe SED RI U.2 3.84TB (P5500)\n\t\t1028 2066  NVMe SED RI U.2 7.68TB (P5500)\n\t\t1028 209e  NVMe MU U.2 1.6TB (P5600)\n\t\t1028 209f  NVMe MU U.2 3.2TB (P5600)\n\t\t1028 2100  NVMe MU U.2 6.4TB (P5600)\n\t\t1028 2102  NVMe RI U.2 1.92TB (P5500)\n\t\t1028 2103  NVMe RI U.2 3.84TB (P5500)\n\t\t1028 2104  NVMe RI U.2 7.68TB (P5500)\n\t\t1028 219a  NVMe P5316 RI 15.36TB\n\t\t1028 219b  NVMe P5316 RI 30.72TB\n\t\t1028 219c  NVMe SED P5316 RI 15.36\n\t\t1028 219d  NVMe SED P5316 RI 30.72\n\t\t1028 219e  NVMe FIPS P5316 RI 15.36TB\n\t\t1028 219f  NVMe FIPS P5316 RI 30.72\n\t\t8086 8008  NVMe Datacenter SSD [3DNAND] SE 2.5\" U.2 (P5510)\n\t\t8086 8d08  NVMe Datacenter SSD [3DNAND] VE 2.5\" U.2 (P5316)\n\t\t8086 8d1d  NVMe Datacenter SSD [3DNAND] VE E1.L 9.5/18mm (P5316)\n\t\t8086 c008  NVMe Datacenter SSD [3DNAND] SE U.2 15mm (P5530)\n\t0b69  Ponte Vecchio XT (2 Tile) [Data Center GPU Max 1450]\n\t0b6e  Ponte Vecchio XT (1 Tile) [Data Center GPU Max 1100C]\n\t0bd0  Ponte Vecchio XL (2 Tile)\n\t0bd4  Ponte Vecchio XT (2 Tile) [Data Center GPU Max 1550VG]\n\t0bd5  Ponte Vecchio XT (2 Tile) [Data Center GPU Max 1550]\n\t0bd6  Ponte Vecchio XT (2 Tile) [Data Center GPU Max 1550]\n\t0bd7  Ponte Vecchio XT (2 Tile) [Data Center GPU Max 1350]\n\t0bd8  Ponte Vecchio XT (2 Tile) [Data Center GPU Max 1350]\n\t0bd9  Ponte Vecchio XT (1 Tile) [Data Center GPU Max 1100]\n\t0bda  Ponte Vecchio XT (1 Tile) [Data Center GPU Max 1100]\n\t0bdb  Ponte Vecchio XT (1 Tile) [Data Center GPU Max 1100]\n\t0be0  Atom Processor D2xxx/N2xxx Integrated Graphics Controller\n\t0be1  Atom Processor D2xxx/N2xxx Integrated Graphics Controller\n\t\t105b 0d7c  D270S/D250S Motherboard\n\t0be2  Atom Processor D2xxx/N2xxx Integrated Graphics Controller\n\t0be3  Atom Processor D2xxx/N2xxx Integrated Graphics Controller\n\t0be4  Atom Processor D2xxx/N2xxx Integrated Graphics Controller\n\t0be5  Atom Processor D2xxx/N2xxx Integrated Graphics Controller\n\t0be6  Atom Processor D2xxx/N2xxx Integrated Graphics Controller\n\t0be7  Atom Processor D2xxx/N2xxx Integrated Graphics Controller\n\t0be8  Atom Processor D2xxx/N2xxx Integrated Graphics Controller\n\t0be9  Atom Processor D2xxx/N2xxx Integrated Graphics Controller\n\t0bea  Atom Processor D2xxx/N2xxx Integrated Graphics Controller\n\t0beb  Atom Processor D2xxx/N2xxx Integrated Graphics Controller\n\t0bec  Atom Processor D2xxx/N2xxx Integrated Graphics Controller\n\t0bed  Atom Processor D2xxx/N2xxx Integrated Graphics Controller\n\t0bee  Atom Processor D2xxx/N2xxx Integrated Graphics Controller\n\t0bef  Atom Processor D2xxx/N2xxx Integrated Graphics Controller\n\t0bf0  Atom Processor D2xxx/N2xxx DRAM Controller\n\t0bf1  Atom Processor D2xxx/N2xxx DRAM Controller\n\t0bf2  Atom Processor D2xxx/N2xxx DRAM Controller\n\t0bf3  Atom Processor D2xxx/N2xxx DRAM Controller\n\t0bf4  Atom Processor D2xxx/N2xxx DRAM Controller\n\t0bf5  Atom Processor D2xxx/N2xxx DRAM Controller\n\t\t105b 0d7c  D270S/D250S Motherboard\n\t0bf6  Atom Processor D2xxx/N2xxx DRAM Controller\n\t0bf7  Atom Processor D2xxx/N2xxx DRAM Controller\n\t0c00  4th Gen Core Processor DRAM Controller\n\t\t1028 05d7  Alienware X51 R2\n\t\t103c 1998  EliteDesk 800 G1\n\t\t17aa 3098  ThinkCentre E73\n\t\t17aa 309f  ThinkCentre M83\n\t0c01  Xeon E3-1200 v3/4th Gen Core Processor PCI Express x16 Controller\n\t0c04  Xeon E3-1200 v3/4th Gen Core Processor DRAM Controller\n\t\t103c 1909  ZBook 15\n\t\t17aa 220e  ThinkPad T440p\n\t0c05  Xeon E3-1200 v3/4th Gen Core Processor PCI Express x8 Controller\n\t0c08  Xeon E3-1200 v3 Processor DRAM Controller\n\t0c09  Xeon E3-1200 v3/4th Gen Core Processor PCI Express x4 Controller\n\t0c0c  Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller\n\t\t103c 1998  EliteDesk 800 G1\n\t\t17aa 220e  ThinkPad T440p\n\t\t17aa 309f  ThinkCentre M83\n\t0c40  Atom Processor CE 5300\n\t0c46  Atom Processor S1200 PCI Express Root Port 1\n\t0c47  Atom Processor S1200 PCI Express Root Port 2\n\t0c48  Atom Processor S1200 PCI Express Root Port 3\n\t0c49  Atom Processor S1200 PCI Express Root Port 4\n\t0c4e  Atom Processor S1200 NTB Primary\n\t0c50  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QuickData Technology Device\n\t0c51  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QuickData Technology Device\n\t0c52  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QuickData Technology Device\n\t0c53  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QuickData Technology Device\n\t0c54  Atom Processor S1200 Internal\n\t0c55  Atom Processor S1200 DFX 1\n\t0c56  Atom Processor S1200 DFX 2\n\t0c59  Atom Processor S1200 SMBus 2.0 Controller 0\n\t0c5a  Atom Processor S1200 SMBus 2.0 Controller 1\n\t0c5b  Atom Processor S1200 SMBus Controller 2\n\t0c5c  Atom Processor S1200 SMBus Controller 3\n\t0c5d  Atom Processor S1200 SMBus Controller 4\n\t0c5e  Atom Processor S1200 SMBus Controller 5\n\t0c5f  Atom Processor S1200 UART\n\t0c60  Atom Processor S1200 Integrated Legacy Bus\n\t0c70  Atom Processor S1200 Internal\n\t0c71  Atom Processor S1200 Internal\n\t0c72  Atom Processor S1200 Internal\n\t0c73  Atom Processor S1200 Internal\n\t0c74  Atom Processor S1200 Internal\n\t0c75  Atom Processor S1200 Internal\n\t0c76  Atom Processor S1200 Internal\n\t0c77  Atom Processor S1200 Internal\n\t0c78  Atom Processor S1200 Internal\n\t0c79  Atom Processor S1200 Internal\n\t0c7a  Atom Processor S1200 Internal\n\t0c7b  Atom Processor S1200 Internal\n\t0c7c  Atom Processor S1200 Internal\n\t0c7d  Atom Processor S1200 Internal\n\t0c7e  Atom Processor S1200 Internal\n\t0c7f  Atom Processor S1200 Internal\n\t0cf8  Ethernet Controller X710 Intel(R) FPGA Programmable Acceleration Card N3000 for Networking\n\t\t8086 0000  Ethernet Controller X710 Intel(R) FPGA Programmable Acceleration Card N3000 for Networking\n\t\t8086 0001  Ethernet Controller X710 Intel(R) FPGA Programmable Acceleration Card N3000 for Networking\n\t0d00  Crystal Well DRAM Controller\n\t0d01  Crystal Well PCI Express x16 Controller\n\t0d03  Crystal Well Dynamic Platform and Thermal Framework Processor Participant\n\t0d04  Crystal Well DRAM Controller\n\t0d05  Crystal Well PCI Express x8 Controller\n\t0d09  Crystal Well PCI Express x4 Controller\n\t0d0c  Crystal Well HD Audio Controller\n\t0d12  Crystal Well Integrated Graphics Controller\n\t0d16  Crystal Well Integrated Graphics Controller\n\t0d22  Crystal Well Integrated Iris Pro Graphics 5200\n\t0d26  Crystal Well Integrated Graphics Controller\n\t0d36  Crystal Well Integrated Graphics Controller\n\t0d4c  Ethernet Connection (11) I219-LM\n\t0d4d  Ethernet Connection (11) I219-V\n\t\t8086 0d4d  Ethernet Connection (11) I219-V\n\t0d4e  Ethernet Connection (10) I219-LM\n\t0d4f  Ethernet Connection (10) I219-V\n\t0d53  Ethernet Connection (12) I219-LM\n\t0d55  Ethernet Connection (12) I219-V\n\t0d58  Ethernet Controller XXV710 Intel(R) FPGA Programmable Acceleration Card N3000 for Networking\n\t\t8086 0000  Ethernet Controller XXV710 Intel(R) FPGA Programmable Acceleration Card N3000 for Networking\n\t\t8086 0001  Ethernet Controller XXV710 Intel(R) FPGA Programmable Acceleration Card N3000 for Networking\n\t0d9f  Ethernet Controller I225-IT\n\t0dc5  Ethernet Connection (23) I219-LM\n\t\t1028 0c06  Precision 3580\n\t0dc6  Ethernet Connection (23) I219-V\n\t0dcd  Ethernet Connection C825-X\n\t0dd2  Ethernet Network Adapter I710\n\t\t1137 0000  I710T4LG 4x1 GbE RJ45 PCIe NIC\n\t\t1137 02e3  I710T4LG 4x1 GbE RJ45 PCIe NIC\n\t\t8086 0000  Ethernet Network Adapter I710-T4L\n\t\t8086 000d  Ethernet Network Adapter I710-T4L\n\t\t8086 0010  Ethernet Network Adapter I710-T4L for OCP 3.0\n\t\t8086 401a  Ethernet Network Adapter I710-T4L\n\t\t8086 401b  Ethernet Network Adapter I710-T4L for OCP 3.0\n\t0dd5  Ethernet Adaptive Virtual Function\n\t0dda  Ethernet Connection X722 for 10GbE SFP+\n\t\t1bd4 0076  Ethernet Connection F102IX722 for 10GbE SFP\n\t\t1bd4 0082  Ethernet Connection F102IX722 for 10GbE SFP\n\t0e00  Xeon E7 v2/Xeon E5 v2/Core i7 DMI2\n\t\t1028 04f7  Xeon E5 v2 on PowerEdge R320 server\n\t\t15d9 066b  X9SRL-F\n\t0e01  Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port in DMI2 Mode\n\t0e02  Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 1a\n\t\t1028 04f7  Xeon E5 v2 on PowerEdge R320 server\n\t0e03  Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 1b\n\t0e04  Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 2a\n\t0e05  Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 2b\n\t0e06  Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 2c\n\t0e07  Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 2d\n\t0e08  Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 3a\n\t\t1028 04f7  Xeon E5 v2 on PowerEdge R320 server\n\t0e09  Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 3b\n\t0e0a  Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 3c\n\t0e0b  Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 3d\n\t0e10  Xeon E7 v2/Xeon E5 v2/Core i7 IIO Configuration Registers\n\t0e13  Xeon E7 v2/Xeon E5 v2/Core i7 IIO Configuration Registers\n\t0e17  Xeon E7 v2/Xeon E5 v2/Core i7 IIO Configuration Registers\n\t0e18  Xeon E7 v2/Xeon E5 v2/Core i7 IIO Configuration Registers\n\t0e1c  Xeon E7 v2/Xeon E5 v2/Core i7 IIO Configuration Registers\n\t0e1d  Xeon E7 v2/Xeon E5 v2/Core i7 R2PCIe\n\t0e1e  Xeon E7 v2/Xeon E5 v2/Core i7 UBOX Registers\n\t0e1f  Xeon E7 v2/Xeon E5 v2/Core i7 UBOX Registers\n\t0e20  Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 0\n\t\t1028 04f7  Xeon E5 v2 on PowerEdge R320 server\n\t\t15d9 066b  X9SRL-F\n\t0e21  Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 1\n\t\t1028 04f7  Xeon E5 v2 on PowerEdge R320 server\n\t\t15d9 066b  X9SRL-F\n\t0e22  Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 2\n\t\t1028 04f7  Xeon E5 v2 on PowerEdge R320 server\n\t\t15d9 066b  X9SRL-F\n\t0e23  Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 3\n\t\t1028 04f7  Xeon E5 v2 on PowerEdge R320 server\n\t\t15d9 066b  X9SRL-F\n\t0e24  Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 4\n\t\t1028 04f7  Xeon E5 v2 on PowerEdge R320 server\n\t\t15d9 066b  X9SRL-F\n\t0e25  Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 5\n\t\t1028 04f7  Xeon E5 v2 on PowerEdge R320 server\n\t\t15d9 066b  X9SRL-F\n\t0e26  Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 6\n\t\t1028 04f7  Xeon E5 v2 on PowerEdge R320 server\n\t\t15d9 066b  X9SRL-F\n\t0e27  Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 7\n\t\t1028 04f7  Xeon E5 v2 on PowerEdge R320 server\n\t\t15d9 066b  X9SRL-F\n\t0e28  Xeon E7 v2/Xeon E5 v2/Core i7 VTd/Memory Map/Misc\n\t\t1028 04f7  Xeon E5 v2 on PowerEdge R320 server\n\t\t15d9 066b  X9SRL-F\n\t0e29  Xeon E7 v2/Xeon E5 v2/Core i7 Memory Hotplug\n\t0e2a  Xeon E7 v2/Xeon E5 v2/Core i7 IIO RAS\n\t\t1028 04f7  Xeon E5 v2 on PowerEdge R320 server\n\t\t15d9 066b  X9SRL-F\n\t0e2c  Xeon E7 v2/Xeon E5 v2/Core i7 IOAPIC\n\t\t15d9 066b  X9SRL-F\n\t0e2e  Xeon E7 v2/Xeon E5 v2/Core i7 CBDMA\n\t0e2f  Xeon E7 v2/Xeon E5 v2/Core i7 CBDMA\n\t0e30  Xeon E7 v2/Xeon E5 v2/Core i7 Home Agent 0\n\t\t1028 04f7  Xeon E5 v2 on PowerEdge R320 server\n\t0e32  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link 0\n\t0e33  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link 1\n\t0e34  Xeon E7 v2/Xeon E5 v2/Core i7 R2PCIe\n\t\t1028 04f7  Xeon E5 v2 on PowerEdge R320 server\n\t0e36  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Ring Performance Ring Monitoring\n\t\t1028 04f7  Xeon E5 v2 on PowerEdge R320 server\n\t0e37  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Ring Performance Ring Monitoring\n\t0e38  Xeon E7 v2/Xeon E5 v2/Core i7 Home Agent 1\n\t0e3a  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link 2\n\t0e3e  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Ring Performance Ring Monitoring\n\t0e3f  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Ring Performance Ring Monitoring\n\t0e40  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link 2\n\t0e41  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Ring Registers\n\t0e43  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Reut 2\n\t0e44  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Reut 2\n\t0e45  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Agent Register\n\t0e47  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Agent Register\n\t0e60  Xeon E7 v2/Xeon E5 v2/Core i7 Home Agent 1\n\t0e68  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Target Address/Thermal Registers\n\t0e6a  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel Target Address Decoder Registers\n\t0e6b  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel Target Address Decoder Registers\n\t0e6c  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel Target Address Decoder Registers\n\t0e6d  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel Target Address Decoder Registers\n\t0e71  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 RAS Registers\n\t0e74  Xeon E7 v2/Xeon E5 v2/Core i7 R2PCIe\n\t0e75  Xeon E7 v2/Xeon E5 v2/Core i7 R2PCIe\n\t0e77  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Ring Registers\n\t0e79  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 RAS Registers\n\t0e7d  Xeon E7 v2/Xeon E5 v2/Core i7 UBOX Registers\n\t0e7f  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Ring Registers\n\t0e80  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link 0\n\t0e81  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Ring Registers\n\t\t1028 04f7  Xeon E5 v2 on PowerEdge R320 server\n\t0e83  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Reut 0\n\t0e84  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Reut 0\n\t0e85  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Agent Register\n\t0e87  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Registers\n\t0e90  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link 1\n\t0e93  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link 1\n\t0e94  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Reut 1\n\t0e95  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Agent Register\n\t0ea0  Xeon E7 v2/Xeon E5 v2/Core i7 Home Agent 0\n\t\t1028 04f7  Xeon E5 v2 on PowerEdge R320 server\n\t0ea8  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Target Address/Thermal Registers\n\t0eaa  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder Registers\n\t0eab  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder Registers\n\t0eac  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder Registers\n\t0ead  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder Registers\n\t0eae  Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO Registers\n\t0eaf  Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO Registers\n\t0eb0  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 Thermal Control 0\n\t0eb1  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 Thermal Control 1\n\t0eb2  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 ERROR Registers 0\n\t0eb3  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 ERROR Registers 1\n\t0eb4  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 Thermal Control 2\n\t0eb5  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 Thermal Control 3\n\t0eb6  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 ERROR Registers 2\n\t0eb7  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 ERROR Registers 3\n\t0ebc  Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO Registers\n\t0ebe  Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO Registers\n\t0ebf  Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO Registers\n\t0ec0  Xeon E7 v2/Xeon E5 v2/Core i7 Power Control Unit 0\n\t0ec1  Xeon E7 v2/Xeon E5 v2/Core i7 Power Control Unit 1\n\t0ec2  Xeon E7 v2/Xeon E5 v2/Core i7 Power Control Unit 2\n\t0ec3  Xeon E7 v2/Xeon E5 v2/Core i7 Power Control Unit 3\n\t0ec4  Xeon E7 v2/Xeon E5 v2/Core i7 Power Control Unit 4\n\t0ec8  Xeon E7 v2/Xeon E5 v2/Core i7 System Address Decoder\n\t0ec9  Xeon E7 v2/Xeon E5 v2/Core i7 Broadcast Registers\n\t0eca  Xeon E7 v2/Xeon E5 v2/Core i7 Broadcast Registers\n\t0ed8  Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO\n\t0ed9  Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO\n\t0edc  Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO\n\t0edd  Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO\n\t0ede  Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO\n\t0edf  Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO\n\t0ee0  Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers\n\t0ee1  Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers\n\t0ee2  Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers\n\t0ee3  Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers\n\t0ee4  Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers\n\t0ee5  Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers\n\t0ee6  Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers\n\t0ee7  Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers\n\t0ee8  Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers\n\t0ee9  Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers\n\t0eea  Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers\n\t0eeb  Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers\n\t0eec  Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers\n\t0eed  Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers\n\t0eee  Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers\n\t0ef0  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 Thermal Control 0\n\t0ef1  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 Thermal Control 1\n\t0ef2  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 ERROR Registers 0\n\t0ef3  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 ERROR Registers 1\n\t0ef4  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 Thermal Control 2\n\t0ef5  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 Thermal Control 3\n\t0ef6  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 ERROR Registers 2\n\t0ef7  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 ERROR Registers 3\n\t0ef8  Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO\n\t0ef9  Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO\n\t0efa  Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO\n\t0efb  Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO\n\t0efc  Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO\n\t0efd  Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO\n\t0f00  Atom Processor Z36xxx/Z37xxx Series SoC Transaction Register\n\t0f04  Atom Processor Z36xxx/Z37xxx Series High Definition Audio Controller\n\t0f06  Atom Processor Z36xxx/Z37xxx Series LPIO1 DMA Controller\n\t0f08  Atom Processor Z36xxx/Z37xxx Series LPIO1 PWM Controller\n\t0f09  Atom Processor Z36xxx/Z37xxx Series LPIO1 PWM Controller\n\t0f0a  Atom Processor Z36xxx/Z37xxx Series LPIO1 HSUART Controller #1\n\t0f0c  Atom Processor Z36xxx/Z37xxx Series LPIO1 HSUART Controller #2\n\t0f0e  Atom Processor Z36xxx/Z37xxx Series LPIO1 SPI Controller\n\t0f12  Atom Processor E3800/CE2700 Series SMBus Controller\n\t0f14  Atom Processor Z36xxx/Z37xxx Series SDIO Controller\n\t0f15  Atom Processor Z36xxx/Z37xxx Series SDIO Controller\n\t0f16  Atom Processor Z36xxx/Z37xxx Series SDIO Controller\n\t0f18  Atom Processor Z36xxx/Z37xxx Series Trusted Execution Engine\n\t0f1c  Atom Processor Z36xxx/Z37xxx Series Power Control Unit\n\t0f20  Atom Processor E3800 Series SATA IDE Controller\n\t0f21  Atom Processor E3800 Series SATA IDE Controller\n\t0f22  Atom Processor E3800 Series SATA AHCI Controller\n\t0f23  Atom Processor E3800 Series SATA AHCI Controller\n\t0f28  Atom Processor Z36xxx/Z37xxx Series LPE Audio Controller\n\t0f31  Atom Processor Z36xxx/Z37xxx Series Graphics & Display\n\t0f34  Atom Processor Z36xxx/Z37xxx Series USB EHCI\n\t0f35  Atom Processor Z36xxx/Z37xxx, Celeron N2000 Series USB xHCI\n\t\t1025 0936  Aspire ES1\n\t0f37  Atom Processor Z36xxx/Z37xxx Series OTG USB Device\n\t0f38  Atom Processor Z36xxx/Z37xxx Series Camera ISP\n\t0f40  Atom Processor Z36xxx/Z37xxx Series LPIO2 DMA Controller\n\t0f41  Atom Processor Z36xxx/Z37xxx Series LPIO2 I2C Controller #1\n\t0f42  Atom Processor Z36xxx/Z37xxx Series LPIO2 I2C Controller #2\n\t0f43  Atom Processor Z36xxx/Z37xxx Series LPIO2 I2C Controller #3\n\t0f44  Atom Processor Z36xxx/Z37xxx Series LPIO2 I2C Controller #4\n\t0f45  Atom Processor Z36xxx/Z37xxx Series LPIO2 I2C Controller #5\n\t0f46  Atom Processor Z36xxx/Z37xxx Series LPIO2 I2C Controller #6\n\t0f47  Atom Processor Z36xxx/Z37xxx Series LPIO2 I2C Controller #7\n\t0f48  Atom Processor E3800 Series PCI Express Root Port 1\n\t0f4a  Atom Processor E3800 Series PCI Express Root Port 2\n\t0f4c  Atom Processor E3800 Series PCI Express Root Port 3\n\t0f4e  Atom Processor E3800 Series PCI Express Root Port 4\n\t0f50  Atom Processor E3800 Series eMMC 4.5 Controller\n\t1000  82542 Gigabit Ethernet Controller (Fiber)\n\t\t0e11 b0df  NC6132 Gigabit Ethernet Adapter (1000-SX)\n\t\t0e11 b0e0  NC6133 Gigabit Ethernet Adapter (1000-LX)\n\t\t0e11 b123  NC6134 Gigabit Ethernet Adapter (1000-LX)\n\t\t1014 0119  Netfinity Gigabit Ethernet SX Adapter\n\t\t8086 1000  PRO/1000 Gigabit Server Adapter\n\t1001  82543GC Gigabit Ethernet Controller (Fiber)\n\t\t0e11 004a  NC6136 Gigabit Server Adapter\n\t\t1014 01ea  Netfinity Gigabit Ethernet SX Adapter\n\t\t8086 1002  PRO/1000 F Server Adapter\n\t\t8086 1003  PRO/1000 F Server Adapter\n\t1002  Pro 100 LAN+Modem 56 Cardbus II\n\t\t8086 200e  Pro 100 LAN+Modem 56 Cardbus II\n\t\t8086 2013  Pro 100 SR Mobile Combo Adapter\n\t\t8086 2017  Pro 100 S Combo Mobile Adapter\n\t1004  82543GC Gigabit Ethernet Controller (Copper)\n\t\t0e11 0049  NC7132 Gigabit Upgrade Module\n\t\t0e11 b1a4  NC7131 Gigabit Server Adapter\n\t\t1014 10f2  Gigabit Ethernet Server Adapter\n\t\t8086 1004  PRO/1000 T Server Adapter\n\t\t8086 2004  PRO/1000 T Server Adapter\n\t1008  82544EI Gigabit Ethernet Controller (Copper)\n\t\t1014 0269  iSeries 1000/100/10 Ethernet Adapter\n\t\t1028 011b  PowerEdge 1650/2550\n\t\t1028 011c  PRO/1000 XT Network Connection\n\t\t8086 1107  PRO/1000 XT Server Adapter\n\t\t8086 2107  PRO/1000 XT Server Adapter\n\t\t8086 2110  PRO/1000 XT Desktop Adapter\n\t\t8086 3108  PRO/1000 XT Network Connection\n\t1009  82544EI Gigabit Ethernet Controller (Fiber)\n\t\t1014 0268  iSeries Gigabit Ethernet Adapter\n\t\t8086 1109  PRO/1000 XF Server Adapter\n\t\t8086 2109  PRO/1000 XF Server Adapter\n\t100a  82540EM Gigabit Ethernet Controller\n\t100c  82544GC Gigabit Ethernet Controller (Copper)\n\t\t8086 1112  PRO/1000 T Desktop Adapter\n\t\t8086 2112  PRO/1000 T Desktop Adapter\n\t100d  82544GC Gigabit Ethernet Controller (LOM)\n\t\t1028 0123  PRO/1000 XT Network Connection\n\t\t1079 891f  82544GC Based Network Connection\n\t\t4c53 1080  CT8 mainboard\n\t\t8086 110d  82544GC Based Network Connection\n\t100e  82540EM Gigabit Ethernet Controller\n\t\t1014 0265  PRO/1000 MT Network Connection\n\t\t1014 0267  PRO/1000 MT Network Connection\n\t\t1014 026a  PRO/1000 MT Network Connection\n\t\t1028 002e  Optiplex GX260\n\t\t1028 0134  PowerEdge 600SC\n\t\t1028 0151  Optiplex GX270\n\t\t107b 8920  PRO/1000 MT Desktop Adapter\n\t\t1af4 1100  QEMU Virtual Machine\n\t\t8086 001e  PRO/1000 MT Desktop Adapter\n\t\t8086 002e  PRO/1000 MT Desktop Adapter\n\t\t8086 1376  PRO/1000 GT Desktop Adapter\n\t\t8086 1476  PRO/1000 GT Desktop Adapter\n\t100f  82545EM Gigabit Ethernet Controller (Copper)\n\t\t1014 0269  iSeries 1000/100/10 Ethernet Adapter\n\t\t1014 028e  PRO/1000 MT Network Connection\n\t\t15ad 0750  PRO/1000 MT Single Port Adapter\n\t\t8086 1000  PRO/1000 MT Network Connection\n\t\t8086 1001  PRO/1000 MT Server Adapter\n\t1010  82546EB Gigabit Ethernet Controller (Copper)\n\t\t0e11 00db  NC7170 Gigabit Server Adapter\n\t\t1014 027c  PRO/1000 MT Dual Port Network Adapter\n\t\t15ad 0760  PRO/1000 MT Dual Port Adapter\n\t\t18fb 7872  RESlink-X\n\t\t1fc1 0026  Niagara 2260 Bypass Card\n\t\t4c53 1080  CT8 mainboard\n\t\t4c53 10a0  CA3/CR3 mainboard\n\t\t8086 1011  PRO/1000 MT Dual Port Server Adapter\n\t\t8086 1012  PRO/1000 MT Dual Port Server Adapter\n\t\t8086 101a  PRO/1000 MT Dual Port Network Connection\n\t\t8086 3424  SE7501HG2 Mainboard\n\t1011  82545EM Gigabit Ethernet Controller (Fiber)\n\t\t1014 0268  iSeries Gigabit Ethernet Adapter\n\t\t8086 1002  PRO/1000 MF Server Adapter\n\t\t8086 1003  PRO/1000 MF Server Adapter (LX)\n\t1012  82546EB Gigabit Ethernet Controller (Fiber)\n\t\t0e11 00dc  NC6170 Gigabit Server Adapter\n\t\t8086 1012  PRO/1000 MF Dual Port Server Adapter\n\t1013  82541EI Gigabit Ethernet Controller\n\t\t8086 0013  PRO/1000 MT Network Connection\n\t\t8086 1013  PRO/1000 MT Network Connection\n\t\t8086 1113  PRO/1000 MT Desktop Adapter\n\t1014  82541ER Gigabit Ethernet Controller\n\t\t8086 0014  PRO/1000 MT Desktop Connection\n\t\t8086 1014  PRO/1000 MT Network Connection\n\t1015  82540EM Gigabit Ethernet Controller (LOM)\n\t\t8086 1015  PRO/1000 MT Mobile Connection\n\t1016  82540EP Gigabit Ethernet Controller (Mobile)\n\t\t1014 052c  PRO/1000 MT Mobile Connection\n\t\t1179 0001  PRO/1000 MT Mobile Connection\n\t\t8086 1016  PRO/1000 MT Mobile Connection\n\t1017  82540EP Gigabit Ethernet Controller\n\t\t8086 1017  PR0/1000 MT Desktop Connection\n\t1018  82541EI Gigabit Ethernet Controller\n\t\t8086 1018  PRO/1000 MT Mobile Connection\n\t1019  82547EI Gigabit Ethernet Controller\n\t\t1458 1019  GA-8IPE1000 Pro2 motherboard (865PE)\n\t\t1458 e000  Intel Gigabit Ethernet (Kenai II)\n\t\t8086 1019  PRO/1000 CT Desktop Connection\n\t\t8086 301f  D865PERL mainboard\n\t\t8086 3025  D875PBZ motherboard\n\t\t8086 302c  D865GBF Mainboard\n\t\t8086 3427  S875WP1-E mainboard\n\t101a  82547EI Gigabit Ethernet Controller (Mobile)\n\t\t8086 101a  PRO/1000 CT Mobile Connection\n\t101d  82546EB Gigabit Ethernet Controller\n\t\t8086 1000  PRO/1000 MT Quad Port Server Adapter\n\t101e  82540EP Gigabit Ethernet Controller (Mobile)\n\t\t1014 0549  Thinkpad\n\t\t1179 0001  PRO/1000 MT Mobile Connection\n\t\t8086 101e  PRO/1000 MT Mobile Connection\n\t101f  Ethernet Controller V710 for 5GBASE-T\n\t1026  82545GM Gigabit Ethernet Controller\n\t\t1028 0168  Precision Workstation 670 Mainboard\n\t\t1028 0169  Precision 470\n\t\t8086 1000  PRO/1000 MT Server Connection\n\t\t8086 1001  PRO/1000 MT Server Adapter\n\t\t8086 1002  PRO/1000 MT Server Adapter\n\t\t8086 1003  PRO/1000 GT Server Adapter\n\t\t8086 1026  PRO/1000 MT Server Connection\n\t1027  82545GM Gigabit Ethernet Controller\n\t\t103c 3103  NC310F PCI-X Gigabit Server Adapter\n\t\t8086 1001  PRO/1000 MF Server Adapter(LX)\n\t\t8086 1002  PRO/1000 MF Server Adapter(LX)\n\t\t8086 1003  PRO/1000 MF Server Adapter(LX)\n\t\t8086 1027  PRO/1000 MF Server Adapter\n\t1028  82545GM Gigabit Ethernet Controller\n\t\t8086 1028  PRO/1000 MB Server Connection\n\t1029  82559 Ethernet Controller\n\t1030  82559 InBusiness 10/100\n\t1031  82801CAM (ICH3) PRO/100 VE (LOM) Ethernet Controller\n\t\t1014 0209  ThinkPad A/T/X Series\n\t\t104d 80e7  Vaio PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP\n\t\t104d 813c  Vaio PCG-GRV616G\n\t\t107b 5350  EtherExpress PRO/100 VE\n\t\t1179 0001  EtherExpress PRO/100 VE\n\t\t144d c000  EtherExpress PRO/100 VE\n\t\t144d c001  EtherExpress PRO/100 VE\n\t\t144d c003  EtherExpress PRO/100 VE\n\t\t144d c006  vpr Matrix 170B4\n\t1032  82801CAM (ICH3) PRO/100 VE Ethernet Controller\n\t1033  82801CAM (ICH3) PRO/100 VM (LOM) Ethernet Controller\n\t1034  82801CAM (ICH3) PRO/100 VM Ethernet Controller\n\t1035  82801CAM (ICH3)/82562EH (LOM) Ethernet Controller\n\t1036  82801CAM (ICH3) 82562EH Ethernet Controller\n\t1037  82801CAM (ICH3) Chipset Ethernet Controller\n\t1038  82801CAM (ICH3) PRO/100 VM (KM) Ethernet Controller\n\t\t0e11 0098  Evo N600c\n\t1039  82801DB PRO/100 VE (LOM) Ethernet Controller\n\t\t1014 0267  NetVista A30p\n\t\t114a 0582  PC8 onboard ethernet ETH1\n\t103a  82801DB PRO/100 VE (CNR) Ethernet Controller\n\t103b  82801DB PRO/100 VM (LOM) Ethernet Controller\n\t103c  82801DB PRO/100 VM (CNR) Ethernet Controller\n\t103d  82801DB PRO/100 VE (MOB) Ethernet Controller\n\t\t1014 0522  ThinkPad R40\n\t\t1028 2002  Latitude D500\n\t\t8086 103d  82562EZ 10/100 Ethernet Controller\n\t103e  82801DB PRO/100 VM (MOB) Ethernet Controller\n\t1040  536EP Data Fax Modem\n\t\t16be 1040  V.9X DSP Data Fax Modem\n\t1043  PRO/Wireless LAN 2100 3B Mini PCI Adapter\n\t\t103c 08b0  tc1100 tablet\n\t\t8086 2522  Samsung X10/P30 integrated WLAN\n\t\t8086 2527  MIM2000/Centrino\n\t\t8086 2561  Dell Latitude D800\n\t\t8086 2581  Toshiba Satellite M10\n\t1048  82597EX 10GbE Ethernet Controller\n\t\t8086 a01f  PRO/10GbE LR Server Adapter\n\t\t8086 a11f  PRO/10GbE LR Server Adapter\n\t1049  82566MM Gigabit Network Connection\n\t\t103c 30c1  Compaq 6910p\n\t\t17aa 20b9  ThinkPad T61/R61\n\t104a  82566DM Gigabit Network Connection\n\t104b  82566DC Gigabit Network Connection\n\t104c  82562V 10/100 Network Connection\n\t104d  82566MC Gigabit Network Connection\n\t104e  Ethernet Controller X710 for 10 Gigabit SFP+\n\t104f  Ethernet Controller X710 for 10 Gigabit backplane\n\t1050  82562EZ 10/100 Ethernet Controller\n\t\t1014 0287  ThinkCentre S50\n\t\t1028 019d  Dimension 3000\n\t\t1462 728c  865PE Neo2 (MS-6728)\n\t\t1462 758c  MS-6758 (875P Neo)\n\t\t8086 3020  D865PERL mainboard\n\t\t8086 302f  Desktop Board D865GBF\n\t\t8086 3427  S875WP1-E mainboard\n\t1051  82801EB/ER (ICH5/ICH5R) integrated LAN Controller\n\t1052  PRO/100 VM Network Connection\n\t1053  PRO/100 VM Network Connection\n\t1054  PRO/100 VE Network Connection\n\t1055  PRO/100 VM Network Connection\n\t1056  PRO/100 VE Network Connection\n\t1057  PRO/100 VE Network Connection\n\t1059  82551QM Ethernet Controller\n\t105b  82546GB Gigabit Ethernet Controller (Copper)\n\t105e  82571EB/82571GB Gigabit Ethernet Controller D0/D1 (copper applications)\n\t\t103c 7044  NC360T PCI Express Dual Port Gigabit Server Adapter\n\t\t103c 704e  Dual Port 1000Base-T (PCIe) [AD337A]\n\t\t1775 1100  CR11/VR11 Single Board Computer\n\t\t1775 6003  Telum GE-QT\n\t\t18df 1214  2x 1GbE, PCIe x1, dual Intel 82571EB chips\n\t\t8086 005e  PRO/1000 PT Dual Port Server Connection\n\t\t8086 105e  PRO/1000 PT Dual Port Network Connection\n\t\t8086 10d5  82571PT Gigabit PT Quad Port Server ExpressModule\n\t\t8086 115e  PRO/1000 PT Dual Port Server Adapter\n\t\t8086 125e  PRO/1000 PT Dual Port Server Adapter\n\t\t8086 135e  PRO/1000 PT Dual Port Server Adapter\n\t105f  82571EB Gigabit Ethernet Controller\n\t\t103c 704f  Dual Port 1000Base-SX (PCIe) [AD338A]\n\t\t8086 005a  PRO/1000 PF Dual Port Server Adapter\n\t\t8086 115f  PRO/1000 PF Dual Port Server Adapter\n\t\t8086 125f  PRO/1000 PF Dual Port Server Adapter\n\t\t8086 135f  PRO/1000 PF Dual Port Server Adapter\n\t1060  82571EB Gigabit Ethernet Controller\n\t\t8086 0060  PRO/1000 PB Dual Port Server Connection\n\t\t8086 1060  PRO/1000 PB Dual Port Server Connection\n\t1064  82562ET/EZ/GT/GZ - PRO/100 VE (LOM) Ethernet Controller\n\t\t1043 80f8  P5GD1-VW Mainboard\n\t1065  82562ET/EZ/GT/GZ - PRO/100 VE Ethernet Controller\n\t1066  82562 EM/EX/GX - PRO/100 VM (LOM) Ethernet Controller\n\t1067  82562 EM/EX/GX - PRO/100 VM Ethernet Controller\n\t1068  82562ET/EZ/GT/GZ - PRO/100 VE (LOM) Ethernet Controller Mobile\n\t\t103c 30d5  530 Laptop\n\t1069  82562EM/EX/GX - PRO/100 VM (LOM) Ethernet Controller Mobile\n\t106a  82562G - PRO/100 VE (LOM) Ethernet Controller\n\t106b  82562G - PRO/100 VE Ethernet Controller Mobile\n\t1075  82547GI Gigabit Ethernet Controller\n\t\t1028 0165  PowerEdge 750\n\t\t8086 0075  PRO/1000 CT Network Connection\n\t\t8086 1075  PRO/1000 CT Network Connection\n\t1076  82541GI Gigabit Ethernet Controller\n\t\t1028 0165  PRO/1000 MT Network Connection\n\t\t1028 016d  PRO/1000 MT Network Connection\n\t\t1028 019a  PRO/1000 MT Network Connection\n\t\t1028 106d  PRO/1000 MT Network Connection\n\t\t8086 0076  PRO/1000 MT Network Connection\n\t\t8086 1076  PRO/1000 MT Network Connection\n\t\t8086 1176  PRO/1000 MT Desktop Adapter\n\t\t8086 1276  PRO/1000 MT Network Adapter\n\t1077  82541GI Gigabit Ethernet Controller\n\t\t1179 0001  PRO/1000 MT Mobile Connection\n\t\t8086 0077  PRO/1000 MT Mobile Connection\n\t\t8086 1077  PRO/1000 MT Mobile Connection\n\t1078  82541ER Gigabit Ethernet Controller\n\t\t8086 1078  82541ER-based Network Connection\n\t1079  82546GB Gigabit Ethernet Controller\n\t\t103c 12a6  Dual Port 1000Base-T [A9900A]\n\t\t103c 12cf  Core Dual Port 1000Base-T [AB352A]\n\t\t1775 10d0  V5D Single Board Computer Gigabit Ethernet\n\t\t1775 ce90  CE9\n\t\t1fc1 0027  Niagara 2261 Failover NIC\n\t\t4c53 1090  Cx9 / Vx9 mainboard\n\t\t4c53 10b0  CL9 mainboard\n\t\t8086 0079  PRO/1000 MT Dual Port Network Connection\n\t\t8086 1079  PRO/1000 MT Dual Port Network Connection\n\t\t8086 1179  PRO/1000 MT Dual Port Server Adapter\n\t\t8086 117a  PRO/1000 MT Dual Port Server Adapter\n\t107a  82546GB Gigabit Ethernet Controller\n\t\t103c 12a8  Dual Port 1000base-SX [A9899A]\n\t\t8086 107a  PRO/1000 MF Dual Port Server Adapter\n\t\t8086 127a  PRO/1000 MF Dual Port Server Adapter\n\t107b  82546GB Gigabit Ethernet Controller\n\t\t8086 007b  PRO/1000 MB Dual Port Server Connection\n\t\t8086 107b  PRO/1000 MB Dual Port Server Connection\n\t107c  82541PI Gigabit Ethernet Controller\n\t\t8086 1376  PRO/1000 GT Desktop Adapter\n\t\t8086 1476  PRO/1000 GT Desktop Adapter\n\t107d  82572EI Gigabit Ethernet Controller (Copper)\n\t\t8086 1082  PRO/1000 PT Server Adapter\n\t\t8086 1084  PRO/1000 PT Server Adapter\n\t\t8086 1092  PRO/1000 PT Server Adapter\n\t107e  82572EI Gigabit Ethernet Controller (Fiber)\n\t\t8086 1084  PRO/1000 PF Server Adapter\n\t\t8086 1085  PRO/1000 PF Server Adapter\n\t\t8086 1094  PRO/1000 PF Server Adapter\n\t107f  82572EI Gigabit Ethernet Controller\n\t1080  FA82537EP 56K V.92 Data/Fax Modem PCI\n\t1081  631xESB/632xESB LAN Controller Copper\n\t1082  631xESB/632xESB LAN Controller fiber\n\t1083  631xESB/632xESB LAN Controller SERDES\n\t1084  631xESB/632xESB IDE Redirection\n\t1085  631xESB/632xESB Serial Port Redirection\n\t1086  631xESB/632xESB IPMI/KCS0\n\t1087  631xESB/632xESB UHCI Redirection\n\t1089  631xESB/632xESB BT\n\t108a  82546GB Gigabit Ethernet Controller\n\t\t8086 108a  PRO/1000 P Dual Port Server Adapter\n\t\t8086 118a  PRO/1000 P Dual Port Server Adapter\n\t108b  82573V Gigabit Ethernet Controller (Copper)\n\t\t1462 176c  on board on MSI 945P - NEO (MS-7176)\n\t108c  82573E Gigabit Ethernet Controller (Copper)\n\t108e  82573E KCS (Active Management)\n\t108f  Active Management Technology - SOL\n\t1091  PRO/100 VM Network Connection\n\t1092  PRO/100 VE Network Connection\n\t\t1071 8209  Medion MIM 2240 Notebook PC [MD98100]\n\t1093  PRO/100 VM Network Connection\n\t1094  PRO/100 VE Network Connection\n\t1095  PRO/100 VE Network Connection\n\t1096  80003ES2LAN Gigabit Ethernet Controller (Copper)\n\t\t15d9 1096  Motherboard\n\t\t15d9 8680  X7DVL-E-O motherboard\n\t\t8086 3476  S5000PSLSATA Server Board\n\t1097  631xESB/632xESB DPT LAN Controller (Fiber)\n\t1098  80003ES2LAN Gigabit Ethernet Controller (Serdes)\n\t1099  82546GB Gigabit Ethernet Controller (Copper)\n\t\t8086 1099  PRO/1000 GT Quad Port Server Adapter\n\t109a  82573L Gigabit Ethernet Controller\n\t\t1179 ff10  PRO/1000 PL\n\t\t17aa 2001  ThinkPad T60\n\t\t17aa 207e  ThinkPad X60/X60s\n\t\t8086 109a  PRO/1000 PL Network Connection\n\t\t8086 309c  Desktop Board D945GTP\n\t\t8086 30a5  Desktop Board D975XBX\n\t109b  82546GB PRO/1000 GF Quad Port Server Adapter\n\t109e  82597EX 10GbE Ethernet Controller\n\t\t8086 a01f  PRO/10GbE CX4 Server Adapter\n\t\t8086 a11f  PRO/10GbE CX4 Server Adapter\n\t10a0  82571EB PRO/1000 AT Quad Port Bypass Adapter\n\t10a1  82571EB PRO/1000 AF Quad Port Bypass Adapter\n\t10a4  82571EB Gigabit Ethernet Controller\n\t\t8086 10a4  PRO/1000 PT Quad Port Server Adapter\n\t\t8086 11a4  PRO/1000 PT Quad Port Server Adapter\n\t10a5  82571EB Gigabit Ethernet Controller (Fiber)\n\t\t8086 10a5  PRO/1000 PF Quad Port Server Adapter\n\t\t8086 10a6  PRO/1000 PF Quad Port Server Adapter\n\t10a6  82599EB 10-Gigabit Dummy Function\n\t10a7  82575EB Gigabit Network Connection\n\t\t15d9 10a7  X10DRW-i\n\t\t8086 10a8  82575EB Gigabit Riser Card\n\t10a9  82575EB Gigabit Backplane Connection\n\t10b0  82573L PRO/1000 PL Network Connection\n\t10b2  82573V PRO/1000 PM Network Connection\n\t10b3  82573E PRO/1000 PM Network Connection\n\t10b4  82573L PRO/1000 PL Network Connection\n\t10b5  82546GB Gigabit Ethernet Controller (Copper)\n\t\t103c 3109  NC340T PCI-X Quad-port Gigabit Server Adapter\n\t\t8086 1099  PRO/1000 GT Quad Port Server Adapter\n\t\t8086 1199  PRO/1000 GT Quad Port Server Adapter\n\t10b6  82598 10GbE PCI-Express Ethernet Controller\n\t10b9  82572EI Gigabit Ethernet Controller (Copper)\n\t\t103c 704a  110T PCIe Gigabit Server Adapter\n\t\t8086 1083  PRO/1000 PT Desktop Adapter\n\t\t8086 1093  PRO/1000 PT Desktop Adapter\n\t10ba  80003ES2LAN Gigabit Ethernet Controller (Copper)\n\t10bb  80003ES2LAN Gigabit Ethernet Controller (Serdes)\n\t10bc  82571EB/82571GB Gigabit Ethernet Controller (Copper)\n\t\t1014 0368  4-Port 10/100/1000 Base-TX PCI Express Adapter for POWER\n\t\t103c 704b  NC364T PCI Express Quad Port Gigabit Server Adapter\n# 375-3481-01 REV:50\n\t\t108e 11bc  Quad Port Adapter\n\t\t8086 10bc  PRO/1000 PT Quad Port LP Server Adapter\n\t\t8086 11bc  PRO/1000 PT Quad Port LP Server Adapter (Kirkwood Low Profile)\n\t10bd  82566DM-2 Gigabit Network Connection\n\t\t1028 0211  OptiPlex 755\n\t10bf  82567LF Gigabit Network Connection\n\t10c0  82562V-2 10/100 Network Connection\n\t\t1028 020d  Inspiron 530\n\t10c2  82562G-2 10/100 Network Connection\n\t10c3  82562GT-2 10/100 Network Connection\n\t10c4  82562GT 10/100 Network Connection\n\t10c5  82562G 10/100 Network Connection\n\t10c6  82598EB 10-Gigabit AF Dual Port Network Connection\n\t\t8086 a05f  10-Gigabit XF SR Dual Port Server Adapter\n\t\t8086 a15f  10-Gigabit XF SR Dual Port Server Adapter\n\t10c7  82598EB 10-Gigabit AF Network Connection\n\t\t1014 037f  10-Gigabit XF SR Server Adapter\n\t\t1014 0380  10-Gigabit XF LR Server Adapter\n\t\t8086 a05f  10-Gigabit XF SR Server Adapter\n\t\t8086 a15f  10-Gigabit XF SR Server Adapter\n\t\t8086 a16f  10-Gigabit XF SR Server Adapter\n\t10c8  82598EB 10-Gigabit AT Network Connection\n\t\t8086 a10c  10-Gigabit AT Server Adapter\n\t\t8086 a11c  10-Gigabit AT Server Adapter\n\t\t8086 a12c  10-Gigabit AT Server Adapter\n\t10c9  82576 Gigabit Network Connection\n\t\t103c 31ef  NC362i Integrated Dual port Gigabit Server Adapter\n\t\t103c 323f  NC362i Integrated Dual port Gigabit Server Adapter\n\t\t10a9 8028  UV-BaseIO dual-port GbE\n\t\t13a3 0037  DS4100 Secure Multi-Gigabit Server Adapter with Compression\n\t\t15d9 a811  H8DGU\n\t\t4c52 9212  LREC9212PT Dual-port 10Gb Ethernet Network Adapter\n\t\t8086 a01c  Gigabit ET Dual Port Server Adapter\n\t\t8086 a03c  Gigabit ET Dual Port Server Adapter\n\t\t8086 a04c  Gigabit ET Dual Port Server Adapter\n\t10ca  82576 Virtual Function\n\t10cb  82567V Gigabit Network Connection\n\t10cc  82567LM-2 Gigabit Network Connection\n\t10cd  82567LF-2 Gigabit Network Connection\n\t10ce  82567V-2 Gigabit Network Connection\n\t10d3  82574L Gigabit Network Connection\n\t\t103c 1785  NC112i 1-port Ethernet Server Adapter\n\t\t103c 3250  NC112T PCI Express single Port Gigabit Server Adapter\n\t\t1043 8369  Motherboard\n\t\t1093 76e9  PCIe-8233 Ethernet Adapter\n\t\t10a9 8029  Prism XL Single Port Gigabit Ethernet\n\t\t15d9 0605  X8SIL\n\t\t15d9 060a  X7SPA-H/X7SPA-HF Motherboard\n\t\t15d9 060d  C7SIM-Q Motherboard\n\t\t4c52 2201  LRES2201PT Single-port 1Gb Ethernet Network Adapter\n\t\t8086 0001  Gigabit CT2 Desktop Adapter\n\t\t8086 3578  Server Board S1200BTLR\n\t\t8086 357a  Server Board S1200BTS\n\t\t8086 a01f  Gigabit CT Desktop Adapter\n\t\te4bf 50c1  PC1-GROOVE\n\t\te4bf 50c2  PC2-LIMBO\n\t10d4  Matrox Concord GE (customized Intel 82574)\n\t10d5  82571PT Gigabit PT Quad Port Server ExpressModule\n\t10d6  82575GB Gigabit Network Connection\n\t\t8086 10d6  Gigabit VT Quad Port Server Adapter\n\t\t8086 145a  Gigabit VT Quad Port Server Adapter\n\t\t8086 147a  Gigabit VT Quad Port Server Adapter\n\t10d8  82599EB 10 Gigabit Unprogrammed\n\t10d9  82571EB Dual Port Gigabit Mezzanine Adapter\n\t\t103c 1716  NC360m Dual Port 1GbE BL-c Adapter\n\t10da  82571EB Quad Port Gigabit Mezzanine Adapter\n\t\t103c 1717  NC364m Quad Port 1GbE BL-c Adapter\n\t10db  82598EB 10-Gigabit Dual Port Network Connection\n\t10dd  82598EB 10-Gigabit AT CX4 Network Connection\n\t10de  82567LM-3 Gigabit Network Connection\n\t10df  82567LF-3 Gigabit Network Connection\n\t10e1  82598EB 10-Gigabit AF Dual Port Network Connection\n\t\t8086 a15f  10-Gigabit SR Dual Port Express Module\n\t10e2  82575GB Gigabit Network Connection\n\t\t8086 10e2  Gigabit VT Quad Port Server Adapter\n\t10e5  82567LM-4 Gigabit Network Connection\n\t10e6  82576 Gigabit Network Connection\n\t\t8086 a01f  Gigabit EF Dual Port Server Adapter\n\t\t8086 a02f  Gigabit EF Dual Port Server Adapter\n\t10e7  82576 Gigabit Network Connection\n\t\t103c 31ff  NC362i Integrated Dual Port BL-c Gigabit Server Adapter\n\t\t4c52 9701  LREC9701EF Single-port 1Gb Ethernet Network Adapter\n\t10e8  82576 Gigabit Network Connection\n\t\t8086 a02b  Gigabit ET Quad Port Server Adapter\n\t\t8086 a02c  Gigabit ET Quad Port Server Adapter\n\t10ea  82577LM Gigabit Network Connection\n\t\t1028 040a  Latitude E6410\n\t\t1028 040b  Latitude E6510\n\t\te4bf 50c1  PC1-GROOVE\n\t10eb  82577LC Gigabit Network Connection\n\t10ec  82598EB 10-Gigabit AT CX4 Network Connection\n\t\t8086 a01f  10-Gigabit CX4 Dual Port Server Adapter\n\t\t8086 a11f  10-Gigabit CX4 Dual Port Server Adapter\n\t10ed  82599 Ethernet Controller Virtual Function\n\t10ef  82578DM Gigabit Network Connection\n\t\t1028 02da  OptiPlex 980\n\t\t15d9 060d  C7SIM-Q Motherboard\n\t10f0  82578DC Gigabit Network Connection\n\t10f1  82598EB 10-Gigabit AF Dual Port Network Connection\n\t\t8086 a20f  10-Gigabit AF DA Dual Port Server Adapter\n\t\t8086 a21f  10-Gigabit AF DA Dual Port Server Adapter\n\t10f4  82598EB 10-Gigabit AF Network Connection\n\t\t8086 106f  10-Gigabit XF LR Server Adapter\n\t\t8086 a06f  10-Gigabit XF LR Server Adapter\n\t10f5  82567LM Gigabit Network Connection\n\t\t17aa 20ee  ThinkPad T400\n\t10f6  82574L Gigabit Network Connection\n\t10f7  10 Gigabit BR KX4 Dual Port Network Connection\n\t\t108e 7b12  Sun Dual 10GbE PCIe 2.0 FEM\n\t\t8086 000d  Ethernet Mezzanine Adapter X520-KX4-2\n\t10f8  82599 10 Gigabit Dual Port Backplane Connection\n\t\t1028 1f63  10GbE 2P X520k bNDC\n\t\t103c 17d2  Ethernet 10Gb 2-port 560M Adapter\n\t\t103c 18d0  Ethernet 10Gb 2-port 560FLB Adapter\n\t\t1059 0111  T4007 10GbE interface\n\t\t1059 0130  T4009 10GbE interface\n\t\t8086 000c  Ethernet X520 10GbE Dual Port KX4-KR Mezz\n\t10f9  82599 10 Gigabit Dual Port Network Connection\n\t10fb  82599ES 10-Gigabit SFI/SFP+ Network Connection\n\t\t1028 1f72  Ethernet 10G 4P X520/I350 rNDC\n\t\t103c 17d0  Ethernet 10Gb 2-port 560FLR-SFP+ Adapter\n\t\t103c 17d2  Ethernet 10Gb 2-port 560M Adapter\n\t\t103c 17d3  Ethernet 10Gb 2-port 560SFP+ Adapter\n\t\t103c 211b  Ethernet 10Gb 1-port P560FLR-SFP+ Adapter\n\t\t103c 2147  Ethernet 10Gb 1-port 561i Adapter\n\t\t103c 2159  Ethernet 10Gb 2-port 562i Adapter\n\t\t108e 7b11  Ethernet Server Adapter X520-2\n\t\t1170 004c  82599 DP 10G Mezzanine Adapter\n\t\t1374 1a08  PE310G4SPI9/PE310G4SPI9L/PE310G4SPI9LA Quad Port Fiber 10 Gigabit Ethernet PCI Express Server Adapter\n\t\t15d9 0611  AOC-STGN-i2S\n\t\t1734 11a9  10 Gigabit Dual Port Network Connection\n\t\t17aa 1071  ThinkServer X520-2 AnyFabric\n\t\t17aa 4007  82599ES 10-Gigabit SFI/SFP+ Network Connection\n\t\t17aa 402b  82599ES 10Gb 2-port Server Adapter X520-DA2\n\t\t17aa 402f  FPGA Card XC7VX690T-3FFG1157E\n\t\t18d4 0c09  82599ES 10Gb 2-port SFP+ OCP Mezz Card MOP81-I-10GS2\n\t\t193d 1004  560F-B\n\t\t1bd4 001b  10G SFP+ DP ER102Fi4 Rack Adapter\n\t\t1bd4 002f  10G SFP+ DP EP102Fi4A Adapter\n\t\t1bd4 0032  10G SFP+ DP EP102Fi4 Adapter\n\t\t1bd4 0067  F102I82599\n\t\t1f3f 0a00  Dual-port 10-Gigabit SFI/SFP+ Network Connection\n\t\t4c52 1022  LRES1022PF Dual-port 10Gb Ethernet Bypass Network Adapter\n\t\t4c52 1024  LR-LINK LRES9804BF Quad-port 10Gb Ethernet Server Adapter\n\t\t4c52 3002  LRES3002PF Dual-port 10Gb Ethernet Server Adapter for OCP\n\t\t4c52 3012  LRES3012PF Dual-port 10Gb Ethernet Server Adapter for OCP\n\t\t4c52 9801  LREC9801BF Single-port 10Gb Ethernet Server Adapter\n\t\t4c52 9802  LREC9802BF Dual-port 10Gb Ethernet Server Adapter\n\t\t8086 0002  Ethernet Server Adapter X520-DA2\n\t\t8086 0003  Ethernet Server Adapter X520-2\n\t\t8086 0006  Ethernet Server Adapter X520-1\n\t\t8086 0008  Ethernet OCP Server Adapter X520-2\n\t\t8086 000a  Ethernet Server Adapter X520-1\n\t\t8086 000c  Ethernet Server Adapter X520-2\n\t\t8086 10a6  82599ES 10Gb 2 port Server Adapter X520-DA2\n\t\t8086 7a11  Ethernet Server Adapter X520-2\n\t\t8086 7a12  Ethernet Server Adapter X520-2\n\t10fc  82599 10 Gigabit Dual Port Network Connection\n\t10fe  82552 10/100 Network Connection\n\t1107  PRO/1000 MF Server Adapter (LX)\n\t1130  82815 815 Chipset Host Bridge and Memory Controller Hub\n\t\t1025 1016  Travelmate 612 TX\n\t\t1043 8027  CUSL2-C/TUSL2-C Mainboard\n\t\t104d 80df  Vaio PCG-FX403\n\t\t8086 4532  Desktop Board D815EEA2/D815EFV\n\t\t8086 4557  D815EGEW Mainboard\n\t1131  82815 815 Chipset AGP Bridge\n\t1132  82815 Chipset Graphics Controller (CGC)\n\t\t1025 1016  Travelmate 612 TX\n\t\t103c 2001  e-pc 40\n\t\t104d 80df  Vaio PCG-FX403\n\t\t8086 4532  Desktop Board D815EEA2/D815EFV\n\t\t8086 4541  D815EEA Motherboard\n\t\t8086 4557  D815EGEW Mainboard\n\t1133  Thunderbolt 4 Bridge [Maple Ridge 2C 2020]\n\t1134  Thunderbolt 4 NHI [Maple Ridge 2C 2020]\n\t1135  Thunderbolt 4 USB Controller [Maple Ridge 2C 2020]\n\t1136  Thunderbolt 4 Bridge [Maple Ridge 4C 2020]\n\t1137  Thunderbolt 4 NHI [Maple Ridge 4C 2020]\n\t1138  Thunderbolt 4 USB Controller [Maple Ridge 4C 2020]\n\t1161  82806AA PCI64 Hub Advanced Programmable Interrupt Controller\n\t\t8086 1161  82806AA PCI64 Hub APIC\n\t1162  Xscale 80200 Big Endian Companion Chip\n\t1190  Merrifield SD/SDIO/eMMC Controller\n\t1191  Merrifield Serial IO HSUART Controller\n\t1192  Merrifield Serial IO HSUART DMA Controller\n\t1194  Merrifield Serial IO SPI Controller\n\t1195  Merrifield Serial IO I2C Controller\n\t1196  Merrifield Serial IO I2C Controller\n\t1199  Merrifield GPIO Controller\n\t119e  Merrifield USB Device Controller (OTG)\n\t11a0  Merrifield SCU IPC\n\t11a1  Merrifield Power Management Unit\n\t11a2  Merrifield Serial IO DMA Controller\n\t11a5  Merrifield Serial IO PWM Controller\n\t11c3  Quark SoC X1000 PCIe Root Port 0\n\t11c4  Quark SoC X1000 PCIe Root Port 1\n\t11eb  Simics NVMe Controller\n\t1200  IXP1200 Network Processor\n\t\t172a 0000  AEP SSL Accelerator\n\t1209  8255xER/82551IT Fast Ethernet Controller\n\t\t140b 0610  PMC610 quad Ethernet board\n\t\t1af4 1100  QEMU Virtual Machine\n\t\t4c53 1050  CT7 mainboard\n\t\t4c53 1051  CE7 mainboard\n\t\t4c53 1070  PC6 mainboard\n\t1221  82092AA PCI to PCMCIA Bridge\n\t1222  82092AA IDE Controller\n\t1223  SAA7116\n\t1225  82452KX/GX [Orion]\n\t1226  82596 PRO/10 PCI\n\t1227  82865 EtherExpress PRO/100A\n\t1228  82556 EtherExpress PRO/100 Smart\n\t1229  82557/8/9/0/1 Ethernet Pro 100\n\t\t0e11 3001  82559 Fast Ethernet LOM with Alert on LAN*\n\t\t0e11 3002  82559 Fast Ethernet LOM with Alert on LAN*\n\t\t0e11 3003  82559 Fast Ethernet LOM with Alert on LAN*\n\t\t0e11 3004  82559 Fast Ethernet LOM with Alert on LAN*\n\t\t0e11 3005  82559 Fast Ethernet LOM with Alert on LAN*\n\t\t0e11 3006  82559 Fast Ethernet LOM with Alert on LAN*\n\t\t0e11 3007  82559 Fast Ethernet LOM with Alert on LAN*\n\t\t0e11 b01e  NC3120 Fast Ethernet NIC\n\t\t0e11 b01f  NC3122 Fast Ethernet NIC (dual port)\n\t\t0e11 b02f  NC1120 Ethernet NIC\n\t\t0e11 b04a  Netelligent 10/100TX NIC with Wake on LAN\n\t\t0e11 b0c6  NC3161 Fast Ethernet NIC (embedded, WOL)\n\t\t0e11 b0c7  NC3160 Fast Ethernet NIC (embedded)\n\t\t0e11 b0d7  NC3121 Fast Ethernet NIC (WOL)\n\t\t0e11 b0dd  NC3131 Fast Ethernet NIC (dual port)\n\t\t0e11 b0de  NC3132 Fast Ethernet Module (dual port)\n\t\t0e11 b0e1  NC3133 Fast Ethernet Module (100-FX)\n\t\t0e11 b134  NC3163 Fast Ethernet NIC (embedded, WOL)\n\t\t0e11 b13c  NC3162 Fast Ethernet NIC (embedded)\n\t\t0e11 b144  NC3123 Fast Ethernet NIC (WOL)\n\t\t0e11 b163  NC3134 Fast Ethernet NIC (dual port)\n\t\t0e11 b164  NC3135 Fast Ethernet Upgrade Module (dual port)\n\t\t0e11 b1a4  NC7131 Gigabit Server Adapter\n\t\t1014 005c  82558B Ethernet Pro 10/100\n\t\t1014 01bc  82559 Fast Ethernet LAN On Motherboard\n\t\t1014 01f1  10/100 Ethernet Server Adapter\n\t\t1014 01f2  10/100 Ethernet Server Adapter\n\t\t1014 0207  Ethernet Pro/100 S\n\t\t1014 0232  10/100 Dual Port Server Adapter\n\t\t1014 023a  ThinkPad R30\n\t\t1014 105c  Netfinity 10/100\n\t\t1014 2205  ThinkPad A22p\n\t\t1014 305c  10/100 EtherJet Management Adapter\n\t\t1014 405c  10/100 EtherJet Adapter with Alert on LAN\n\t\t1014 505c  10/100 EtherJet Secure Management Adapter\n\t\t1014 605c  10/100 EtherJet Secure Management Adapter\n\t\t1014 705c  10/100 Netfinity 10/100 Ethernet Security Adapter\n\t\t1014 805c  10/100 Netfinity 10/100 Ethernet Security Adapter\n\t\t1028 009b  10/100 Ethernet Server Adapter\n\t\t1028 00ce  10/100 Ethernet Server Adapter\n\t\t1033 8000  PC-9821X-B06\n\t\t1033 8016  PK-UG-X006\n\t\t1033 801f  PK-UG-X006\n\t\t1033 8026  PK-UG-X006\n\t\t1033 8063  82559-based Fast Ethernet Adapter\n\t\t1033 8064  82559-based Fast Ethernet Adapter\n\t\t103c 10c0  NetServer 10/100TX\n\t\t103c 10c3  NetServer 10/100TX\n\t\t103c 10ca  NetServer 10/100TX\n\t\t103c 10cb  NetServer 10/100TX\n\t\t103c 10e3  NetServer 10/100TX\n\t\t103c 10e4  NetServer 10/100TX\n\t\t103c 1200  NetServer 10/100TX\n\t\t108e 10cf  EtherExpress PRO/100(B)\n\t\t10c3 1100  SmartEther100 SC1100\n\t\t10cf 1115  8255x-based Ethernet Adapter (10/100)\n\t\t10cf 1143  8255x-based Ethernet Adapter (10/100)\n\t\t110a 008b  82551QM Fast Ethernet Multifuction PCI/CardBus Controller\n\t\t114a 0582  PC8 onboard ethernet ETH2\n\t\t1179 0001  8255x-based Ethernet Adapter (10/100)\n\t\t1179 0002  PCI FastEther LAN on Docker\n\t\t1179 0003  8255x-based Fast Ethernet\n\t\t1259 2560  AT-2560 100\n\t\t1259 2561  AT-2560 100 FX Ethernet Adapter\n\t\t1266 0001  NE10/100 Adapter\n\t\t13e9 1000  6221L-4U\n\t\t144d 2501  SEM-2000 MiniPCI LAN Adapter\n\t\t144d 2502  SEM-2100IL MiniPCI LAN Adapter\n\t\t1668 1100  EtherExpress PRO/100B (TX) (MiniPCI Ethernet+Modem)\n\t\t1775 1100  CR11/VR11 Single Board Computer\n\t\t1775 ce90  CE9\n\t\t1af4 1100  QEMU Virtual Machine\n\t\t4c53 1080  CT8 mainboard\n\t\t4c53 10e0  PSL09 PrPMC\n\t\t8086 0001  EtherExpress PRO/100B (TX)\n\t\t8086 0002  EtherExpress PRO/100B (T4)\n\t\t8086 0003  EtherExpress PRO/10+\n\t\t8086 0004  EtherExpress PRO/100 WfM\n\t\t8086 0005  82557 10/100\n\t\t8086 0006  82557 10/100 with Wake on LAN\n\t\t8086 0007  82558 10/100 Adapter\n\t\t8086 0008  82558 10/100 with Wake on LAN\n\t\t8086 0009  82558B PRO/100+ PCI (TP)\n\t\t8086 000a  EtherExpress PRO/100+ Management Adapter\n\t\t8086 000b  EtherExpress PRO/100+\n\t\t8086 000c  EtherExpress PRO/100+ Management Adapter\n\t\t8086 000d  EtherExpress PRO/100+ Alert On LAN II* Adapter\n\t\t8086 000e  EtherExpress PRO/100+ Management Adapter with Alert On LAN*\n\t\t8086 000f  EtherExpress PRO/100 Desktop Adapter\n\t\t8086 0010  EtherExpress PRO/100 S Management Adapter\n\t\t8086 0011  EtherExpress PRO/100 S Management Adapter\n\t\t8086 0012  EtherExpress PRO/100 S Advanced Management Adapter (D)\n\t\t8086 0013  EtherExpress PRO/100 S Advanced Management Adapter (E)\n\t\t8086 0030  EtherExpress PRO/100  Management Adapter with Alert On LAN* GC\n\t\t8086 0031  EtherExpress PRO/100 Desktop Adapter\n\t\t8086 0040  EtherExpress PRO/100 S Desktop Adapter\n\t\t8086 0041  EtherExpress PRO/100 S Desktop Adapter\n\t\t8086 0042  EtherExpress PRO/100 Desktop Adapter\n\t\t8086 0050  EtherExpress PRO/100 S Desktop Adapter\n\t\t8086 1009  EtherExpress PRO/100+ Server Adapter\n\t\t8086 100c  EtherExpress PRO/100+ Server Adapter (PILA8470B)\n\t\t8086 1012  EtherExpress PRO/100 S Server Adapter (D)\n\t\t8086 1013  EtherExpress PRO/100 S Server Adapter (E)\n\t\t8086 1015  EtherExpress PRO/100 S Dual Port Server Adapter\n\t\t8086 1017  EtherExpress PRO/100+ Dual Port Server Adapter\n\t\t8086 1030  EtherExpress PRO/100+ Management Adapter with Alert On LAN* G Server\n\t\t8086 1040  EtherExpress PRO/100 S Server Adapter\n\t\t8086 1041  EtherExpress PRO/100 S Server Adapter\n\t\t8086 1042  EtherExpress PRO/100 Server Adapter\n\t\t8086 1050  EtherExpress PRO/100 S Server Adapter\n\t\t8086 1051  EtherExpress PRO/100 Server Adapter\n\t\t8086 1052  EtherExpress PRO/100 Server Adapter\n\t\t8086 10f0  EtherExpress PRO/100+ Dual Port Adapter\n\t\t8086 1229  82557/8/9 [Ethernet Pro 100]\n\t\t8086 2009  EtherExpress PRO/100 S Mobile Adapter\n\t\t8086 200d  EtherExpress PRO/100 Cardbus\n\t\t8086 200e  EtherExpress PRO/100 LAN+V90 Cardbus Modem\n\t\t8086 200f  EtherExpress PRO/100 SR Mobile Adapter\n\t\t8086 2010  EtherExpress PRO/100 S Mobile Combo Adapter\n\t\t8086 2013  EtherExpress PRO/100 SR Mobile Combo Adapter\n\t\t8086 2016  EtherExpress PRO/100 S Mobile Adapter\n\t\t8086 2017  EtherExpress PRO/100 S Combo Mobile Adapter\n\t\t8086 2018  EtherExpress PRO/100 SR Mobile Adapter\n\t\t8086 2019  EtherExpress PRO/100 SR Combo Mobile Adapter\n\t\t8086 2101  EtherExpress PRO/100 P Mobile Adapter\n\t\t8086 2102  EtherExpress PRO/100 SP Mobile Adapter\n\t\t8086 2103  EtherExpress PRO/100 SP Mobile Adapter\n\t\t8086 2104  EtherExpress PRO/100 SP Mobile Adapter\n\t\t8086 2105  EtherExpress PRO/100 SP Mobile Adapter\n\t\t8086 2106  EtherExpress PRO/100 P Mobile Adapter\n\t\t8086 2107  EtherExpress PRO/100 Network Connection\n\t\t8086 2108  EtherExpress PRO/100 Network Connection\n\t\t8086 2200  EtherExpress PRO/100 P Mobile Combo Adapter\n\t\t8086 2201  EtherExpress PRO/100 P Mobile Combo Adapter\n\t\t8086 2202  EtherExpress PRO/100 SP Mobile Combo Adapter\n\t\t8086 2203  EtherExpress PRO/100+ MiniPCI\n\t\t8086 2204  EtherExpress PRO/100+ MiniPCI\n\t\t8086 2205  EtherExpress PRO/100 SP Mobile Combo Adapter\n\t\t8086 2206  EtherExpress PRO/100 SP Mobile Combo Adapter\n\t\t8086 2207  EtherExpress PRO/100 SP Mobile Combo Adapter\n\t\t8086 2208  EtherExpress PRO/100 P Mobile Combo Adapter\n\t\t8086 2402  EtherExpress PRO/100+ MiniPCI\n\t\t8086 2407  EtherExpress PRO/100+ MiniPCI\n\t\t8086 2408  EtherExpress PRO/100+ MiniPCI\n\t\t8086 2409  EtherExpress PRO/100+ MiniPCI\n\t\t8086 240f  EtherExpress PRO/100+ MiniPCI\n\t\t8086 2410  EtherExpress PRO/100+ MiniPCI\n\t\t8086 2411  EtherExpress PRO/100+ MiniPCI\n\t\t8086 2412  EtherExpress PRO/100+ MiniPCI\n\t\t8086 2413  EtherExpress PRO/100+ MiniPCI\n\t\t8086 3000  82559 Fast Ethernet LAN on Motherboard\n\t\t8086 3001  82559 Fast Ethernet LOM with Basic Alert on LAN*\n\t\t8086 3002  82559 Fast Ethernet LOM with Alert on LAN II*\n\t\t8086 3006  EtherExpress PRO/100 S Network Connection\n\t\t8086 3007  EtherExpress PRO/100 S Network Connection\n\t\t8086 3008  EtherExpress PRO/100 Network Connection\n\t\t8086 3010  EtherExpress PRO/100 S Network Connection\n\t\t8086 3011  EtherExpress PRO/100 S Network Connection\n\t\t8086 3012  EtherExpress PRO/100 Network Connection\n\t\t8086 301a  S845WD1-E mainboard\n\t\t8086 3411  SDS2 Mainboard\n\t122d  430FX - 82437FX TSC [Triton I]\n\t122e  82371FB PIIX ISA [Triton I]\n\t1230  82371FB PIIX IDE [Triton I]\n\t1231  DSVD Modem\n\t1234  430MX - 82371MX Mobile PCI I/O IDE Xcelerator (MPIIX)\n\t1235  430MX - 82437MX Mob. System Ctrlr (MTSC) & 82438MX Data Path (MTDP)\n\t1237  440FX - 82441FX PMC [Natoma]\n\t\t01de fffe  Propolis Virtual 440FX\n\t\t1af4 1100  Qemu virtual machine\n\t1239  82371FB PIIX IDE Interface\n\t123b  82380PB PCI to PCI Docking Bridge\n\t123c  82380AB (MISA) Mobile PCI-to-ISA Bridge\n\t123d  683053 Programmable Interrupt Device\n\t123e  82466GX (IHPC) Integrated Hot-Plug Controller (hidden mode)\n\t123f  82466GX Integrated Hot-Plug Controller (IHPC)\n\t1240  82752 (752) AGP Graphics Accelerator\n\t124b  82380FB (MPCI2) Mobile Docking Controller\n\t124c  Ethernet Connection E823-L for backplane\n\t124d  Ethernet Connection E823-L for SFP\n\t124e  Ethernet Connection E823-L/X557-AT 10GBASE-T\n\t124f  Ethernet Connection E823-L 1GbE\n\t1250  430HX - 82439HX TXC [Triton II]\n\t125b  Ethernet Controller I226-LM\n\t125c  Ethernet Controller I226-V\n\t125d  Ethernet Controller I226-IT\n\t12d1  Ethernet Controller E830-CC for backplane\n\t12d2  Ethernet Controller E830-CC for QSFP\n\t\t8086 0001  Ethernet Network Adapter E830-C-Q2\n\t\t8086 0002  Ethernet Network Adapter E830-C-Q2 for OCP 3.0\n\t\t8086 0003  Ethernet Network Adapter E830-CC-Q1\n\t\t8086 0004  Ethernet Network Adapter E830-CC-Q1 for OCP 3.0\n\t12d3  Ethernet Controller E830-CC for SFP\n\t\t8086 0001  Ethernet Network Adapter E830-XXV-2 for OCP 3.0\n\t\t8086 0003  Ethernet Network Adapter E830-XXV-2\n\t\t8086 0004  Ethernet Network Adapter E830-XXV-4 for OCP 3.0\n\t\t8086 0005  Ethernet Network Adapter E830-XXV-8F for OCP 3.0\n\t\t8086 0006  Ethernet Network Adapter E830-XXV-8F\n\t\t8086 0007  Ethernet Network Adapter E830-XXV-4F\n\t12d4  Ethernet Controller E830-CC for SFP-DD\n\t12d5  Ethernet Controller E830-C for backplane\n\t12d8  Ethernet Controller E830-C for QSFP\n\t12da  Ethernet Controller E830-C for SFP\n\t12dc  Ethernet Controller E830-L for backplane\n\t12dd  Ethernet Controller E830-L for QSFP\n\t12de  Ethernet Controller E830-L for SFP\n\t\t8086 0001  Ethernet Network Adapter E830-XXV-2 for OCP 3.0\n\t\t8086 0003  Ethernet Network Adapter E830-XXV-2\n\t1360  82806AA PCI64 Hub PCI Bridge\n\t1361  82806AA PCI64 Hub Controller (HRes)\n\t\t8086 1361  82806AA PCI64 Hub Controller (HRes)\n\t\t8086 8000  82806AA PCI64 Hub Controller (HRes)\n\t1452  Infrastructure Data Path Function\n\t1457  NVMe Data Path Function\n\t145c  Infrastructure Data Path Function\n\t1460  82870P2 P64H2 Hub PCI Bridge\n\t1461  82870P2 P64H2 I/OxAPIC\n\t\t15d9 3480  P4DP6\n\t\t4c53 1090  Cx9/Vx9 mainboard\n\t1462  82870P2 P64H2 Hot Plug Controller\n\t1501  82567V-3 Gigabit Network Connection\n\t1502  82579LM Gigabit Network Connection (Lewisville)\n\t\t1028 04a3  Precision M4600\n\t\t17aa 21ce  ThinkPad T520\n\t\t17aa 3070  ThinkCentre M91p\n\t\t8086 3578  Server Board S1200BTLR\n\t\t8086 357a  Server Board S1200BTS\n\t1503  82579V Gigabit Network Connection\n\t\t1043 849c  P8P67 Deluxe Motherboard\n\t\t10cf 161c  LIFEBOOK E752\n\t\t8086 200d  DH61CR motherboard\n\t1507  Ethernet Express Module X520-P2\n\t1508  82598EB Gigabit BX Network Connection\n\t1509  82580 Gigabit Network Connection\n\t150a  82576NS Gigabit Network Connection\n\t150b  82598EB 10-Gigabit AT2 Server Adapter\n\t\t8086 a10c  82598EB 10-Gigabit AT2 Server Adapter\n\t\t8086 a11c  82598EB 10-Gigabit AT2 Server Adapter\n\t\t8086 a12c  82598EB 10-Gigabit AT2 Server Adapter\n\t150c  82583V Gigabit Network Connection\n\t150d  82576 Gigabit Backplane Connection\n\t\t8086 a10c  Gigabit ET Quad Port Mezzanine Card\n\t150e  82580 Gigabit Network Connection\n\t\t103c 1780  NC365T 4-port Ethernet Server Adapter\n\t\t8086 12a1  Ethernet Server Adapter I340-T4\n\t\t8086 12a2  Ethernet Server Adapter I340-T4\n\t150f  82580 Gigabit Fiber Network Connection\n\t1510  82580 Gigabit Backplane Connection\n\t1511  82580 Gigabit SFP Connection\n\t1513  CV82524 Thunderbolt Controller [Light Ridge 4C 2010]\n\t1514  Ethernet X520 10GbE Dual Port KX4 Mezz\n\t\t8086 000b  Ethernet X520 10GbE Dual Port KX4 Mezz\n\t1515  X540 Ethernet Controller Virtual Function\n\t1516  82580 Gigabit Network Connection\n\t\t8086 12b1  Ethernet Server Adapter I340-T2\n\t\t8086 12b2  Ethernet Server Adapter I340-T2\n\t1517  82599ES 10 Gigabit Network Connection\n\t\t1137 006a  UCS CNA M61KR-I Intel Converged Network Adapter\n\t1518  82576NS SerDes Gigabit Network Connection\n\t151a  DSL2310 Thunderbolt Controller [Eagle Ridge 2C 2011]\n\t151b  CVL2510 Thunderbolt Controller [Light Peak 2C 2010]\n\t151c  82599 10 Gigabit TN Network Connection\n\t\t108e 7b13  Dual 10GBASE-T LP\n\t151d  Ethernet Connection E823-L for QSFP\n\t1520  I350 Ethernet Controller Virtual Function\n\t1521  I350 Gigabit Network Connection\n\t\t1028 0602  Gigabit 2P I350-t LOM\n\t\t1028 0693  Gigabit 2P I350-t LOM\n\t\t1028 06e2  Gigabit 2P I350-t LOM\n\t\t1028 0757  Gigabit I350-t LOM\n\t\t1028 075a  Gigabit I350-t LOM\n\t\t1028 1f60  Gigabit 4P I350-t rNDC\n\t\t1028 1f62  Gigabit 4P X540/I350 rNDC\n\t\t1028 1fa8  Ethernet 10G 4P X550/I350 rNDC\n\t\t1028 1fa9  Ethernet 10G 4P X550 rNDC\n\t\t1028 1faa  Gigabit 4P X550/I350 rNDC\n\t\t1028 ff9a  Gigabit 4P X710/I350 rNDC\n\t\t103c 17d1  Ethernet 1Gb 4-port 366FLR Adapter\n\t\t103c 2003  Ethernet 1Gb 2-port 367i Adapter\n\t\t103c 2226  Ethernet 1Gb 1-port 364i Adapter\n\t\t103c 337f  Ethernet 1Gb 2-port 361i Adapter\n\t\t103c 3380  Ethernet 1Gb 4-port 366i Adapter\n\t\t103c 339e  Ethernet 1Gb 2-port 361T Adapter\n\t\t103c 8157  Ethernet 1Gb 4-port 366T Adapter\n\t\t108e 7b16  Quad Port GbE PCIe 2.0 ExpressModule, UTP\n\t\t108e 7b18  Quad Port GbE PCIe 2.0 Low Profile Adapter, UTP\n\t\t1093 7648  PCIe-8237R Ethernet Adapter\n\t\t1093 7649  PCIe-8236 Ethernet Adapter\n\t\t1093 76b1  PCIe-8237R-S Ethernet Adapter\n\t\t1093 775b  PCIe-8237 Ethernet Adapter\n\t\t10a9 802a  UV2-BaseIO dual-port GbE\n\t\t1137 023e  1GigE I350 LOM\n\t\t15d9 0000  AOC-SGP-i4\n\t\t15d9 0652  Dual Port i350 GbE MicroLP [AOC-CGP-i2]\n\t\t15d9 1521  X10DRW-i\n\t\t17aa 1074  ThinkServer I350-T4 AnyFabric\n\t\t17aa 4005  I350 Gigabit Network Connection\n\t\t18d4 0c07  I350 1Gb 2-port RJ45 OCP Mezz Card MOP41-I-1GT2\n\t\t193d 1005  360T-B\n\t\t193d 1007  360T-L\n# NIC-ETH360T-3S-4P OCP3.0 4x1G Base-T Card\n\t\t193d 1080  NIC-ETH360T-3S-4P\n\t\t1bd4 001d  1G base-T QP EP014Ti1 Adapter\n\t\t1bd4 0035  1G base-T QP EP014Ti1 Adapter\n\t\t1bd4 0066  F014I350\n\t\t1bd4 008a  F012I350\n\t\t1bd4 008d  ENFI1100-T4\n\t\t4c52 0350  I350 1Gb 2-port Ethernet Network Adapter\n\t\t4c52 1350  LREC9222HT Dual-port 1Gb Ethernet Network Adapter\n\t\t4c52 2003  LRES2003PT Dual-port 1Gb Ethernet Network Adapter\n\t\t4c52 2005  LRES2005PT Quad-port 1Gb Ethernet Network Adapter\n\t\t4c52 2006  LRES2006PT Six-port 1Gb Ethernet Network Adapter\n\t\t4c52 2008  LRES2008PT Eight-port 1Gb Ethernet Network Adapter\n\t\t4c52 2018  LRES2018PT Twelve-port 1Gb Ethernet Network Adapter\n\t\t4c52 2202  LRES2202PT Dual-port 1Gb Ethernet Network Adapter\n\t\t4c52 2217  LRES2217PT Dual-port 1Gb Ethernet Network Adapter\n\t\t4c52 3010  LRES3010PF Dual-port 1Gb Ethernet Server Adapter for OCP\n\t\t4c52 3023  LRES3023PT Quad-port 1Gb Ethernet Server Adapter for OCP\n\t\t4c52 3041  LRES3041PT Dual-port 1Gb Ethernet Server Adapter for OCP\n\t\t4c52 4006  LRES4006MT Quad-port 1Gb Ethernet Netwaork Adapter\n\t\t4c52 8001  LRES8001PT Quad-port 1Gb Ethernet Bypass Network Adapter\n\t\t4c52 9712  LREC9712HT Dual-port 1Gb Ethernet Bypass Network Adapter\n\t\t8086 0001  Ethernet Server Adapter I350-T4\n\t\t8086 0002  Ethernet Server Adapter I350-T2\n\t\t8086 0003  Ethernet Network Adapter I350-T4 for OCP NIC 3.0\n\t\t8086 00a1  Ethernet Server Adapter I350-T4\n\t\t8086 00a2  Ethernet Server Adapter I350-T2\n\t\t8086 00a3  Ethernet Network Adapter I350-T4 for OCP NIC 3.0\n\t\t8086 00aa  Ethernet Network Adapter I350-T4 for OCP NIC 3.0\n\t\t8086 4017  Ethernet Network Adapter I350-T4 for OCP NIC 3.0\n\t\t8086 5001  Ethernet Server Adapter I350-T4\n\t\t8086 5002  Ethernet Server Adapter I350-T2\n\t\t8086 5003  Ethernet 1G 4P I350-t OCP\n\t1522  I350 Gigabit Fiber Network Connection\n\t\t108e 7b17  Quad Port GbE PCIe 2.0 ExpressModule, MMF\n\t\t108e 7b19  Dual Port GbE PCIe 2.0 Low Profile Adapter, MMF\n\t\t4c52 1006  LRES1006PF Six-port 1Gb Ethernet Network Adapter\n\t\t4c52 2203  LRES2203PF Dual-port 1Gb Ethernet Network Adapter\n\t\t4c52 8030  LRES8030PF Dual-port 1Gb Ethernet Bypass Network Adapter\n\t\t4c52 9710  LREC9710HF Single-port 1Gb Ethernet Network Adapter\n\t\t4c52 9712  LREC9712HF Dual-port 1Gb Ethernet Network Adapter\n\t\t4c52 9714  LREC9714HF Quad-port 1Gb Ethernet Network Adapter\n\t\t8086 0002  Ethernet Server Adapter I350-T2\n\t\t8086 0003  Ethernet Server Adapter I350-F4\n\t\t8086 0004  Ethernet Server Adapter I350-F2\n\t\t8086 0005  Ethernet Server Adapter I350-F1\n\t\t8086 00a2  Ethernet Server Adapter I350-T2\n\t\t8086 00a3  Ethernet Server Adapter I350-F4\n\t\t8086 00a4  Ethernet Server Adapter I350-F2\n\t1523  I350 Gigabit Backplane Connection\n\t\t1028 0060  Gigabit 2P I350 LOM\n\t\t1028 1f9b  Gigabit 4P I350-t bNDC\n\t\t103c 1784  Ethernet 1Gb 2-port 361FLB Adapter\n\t\t103c 18d1  Ethernet 1Gb 2-port 361FLB Adapter\n\t\t103c 1989  Ethernet 1Gb 2-port 363i Adapter\n\t\t103c 339f  Ethernet 1Gb 4-port 366M Adapter\n\t\t4c52 9714  LREC9714HT Quad-port 10Gb Ethernet Network Adapter\n\t\t8086 1f52  1GbE 4P I350 Mezz\n\t1524  I350 Gigabit Connection\n\t1525  82567V-4 Gigabit Network Connection\n\t1526  82576 Gigabit Network Connection\n\t\t8086 a05c  Gigabit ET2 Quad Port Server Adapter\n\t\t8086 a06c  Gigabit ET2 Quad Port Server Adapter\n\t1527  82580 Gigabit Fiber Network Connection\n\t\t8086 0001  Ethernet Server Adapter I340-F4\n\t\t8086 0002  Ethernet Server Adapter I340-F4\n\t1528  Ethernet Controller 10-Gigabit X540-AT2\n\t\t1028 1f61  Ethernet 10G 4P X540/I350 rNDC\n\t\t103c 192d  561FLR-T 2-port 10Gb Ethernet Adapter\n\t\t103c 2004  Ethernet 10Gb 2-port 561i Adapter\n\t\t103c 211a  Ethernet 10Gb 2-port 561T Adapter\n\t\t108e 4853  Ethernet Controller 10-Gigabit X540-AT2\n\t\t108e 7b14  Sun Dual Port 10 GbE PCIe 2.0 ExpressModule, Base-T\n\t\t108e 7b15  Sun Dual Port 10 GbE PCIe 2.0 Low Profile Adapter, Base-T\n\t\t1137 00bf  Ethernet Converged Network Adapter X540-T2\n\t\t1170 0052  Ethernet Controller 10-Gigabit X540-AT2\n\t\t15d9 0734  AOC-STG-I2T\n\t\t17aa 1073  ThinkServer X540-T2 AnyFabric\n\t\t17aa 4006  Ethernet Controller 10-Gigabit X540-AT2\n\t\t1bd4 001a  10G base-T DP ER102Ti3 Rack Adapter\n\t\t1bd4 0033  10G base-T DP EP102Ti3 Adapter\n\t\t1bd4 0034  10G base-T DP EP102Ti3A Adapter\n\t\t4c52 9802  LREC9802BT Dual-port 10Gb Ethernet Network Adapter\n\t\t8086 0001  Ethernet Converged Network Adapter X540-T2\n\t\t8086 0002  Ethernet Converged Network Adapter X540-T1\n\t\t8086 001a  Ethernet Converged Network Adapter X540-T2\n\t\t8086 00a2  Ethernet Converged Network Adapter X540-T1\n\t\t8086 1f61  Ethernet 10G 4P X540/I350 rNDC\n\t\t8086 5003  Ethernet 10G 2P X540-t Adapter\n\t\t8086 5004  Ethernet 10G 2P X540-t Adapter\n\t1529  82599 10 Gigabit Dual Port Network Connection with FCoE\n\t152a  82599 10 Gigabit Dual Port Backplane Connection with FCoE\n\t152e  82599 Virtual Function\n\t152f  I350 Virtual Function\n\t1530  X540 Virtual Function\n\t1531  I210 Gigabit Unprogrammed\n\t1533  I210 Gigabit Network Connection\n\t\t1028 0758  I210 PCIe 1Gb 1-Port RJ45 LOM\n\t\t1028 0759  I210 PCIe 1Gb 1-Port RJ45 LOM\n\t\t1028 0b35  I210 Gigabit Network Connection\n\t\t103c 0003  Ethernet I210-T1 GbE NIC\n\t\t1059 0180  RD10019 1GbE interface\n\t\t1093 7706  Compact Vision System Ethernet Adapter\n\t\t10a9 802c  UV300 BaseIO single-port GbE\n\t\t10a9 802d  UV3000 BaseIO GbE Network\n\t\t17aa 1059  I210 Gigabit Network Connection\n\t\t17aa 1100  ThinkServer Ethernet Server Adapter\n\t\t17aa 1509  I210 Gigabit Network Connection\n\t\t17aa 404d  I210 PCIe 1Gb 1-Port RJ45 LOM\n\t\t17aa 407a  I210 PCIe 1Gb 1-Port RJ45 LOM\n\t\t4c52 1051  LRES1051PT Dual-port 1Gb Ethernet Network Adapter\n\t\t4c52 1210  LREC9204CT Single-port 1Gb Ethernet Network Adapter\n\t\t4c52 2057  LRES2057PT Dual-port 1Gb Ethernet Network Adapter\n\t\t4c52 2206  LRES2206PT Single-port 1Gb Ethernet Network Adapter\n\t\t4c52 2210  LRES2210PT Single-port 1Gb Ethernet Network Adapter\n\t\t4c52 2211  LRES2211PT Single-port 1Gb Ethernet Network Adapter\n\t\t4c52 2214  LRES2214PT Single-port 1Gb Ethernet Network Adapter\n\t\t4c52 3002  LRES3002PT Dual-port 1Gb Ethernet Network Adapter\n\t\t4c52 3004  LRES3004PT Quad-port 1Gb Ethernet Network Adapter\n\t\t8086 0001  Ethernet Server Adapter I210-T1\n\t\t8086 0002  Ethernet Server Adapter I210-T1\n\t1536  I210 Gigabit Fiber Network Connection\n\t\t4c52 2204  LRES2204PT Single-port 1Gb Ethernet Network Adapter\n\t\t4c52 2212  LRES2212PF Single-port 1Gb Ethernet Network Adapter\n\t\t4c52 2213  LRES2213PF Single-port 1Gb Ethernet Network Adapter\n\t\t4c52 6230  LREC6230PF Single-port 1Gb Ethernet Network Adapter\n\t1537  I210 Gigabit Backplane Connection\n\t\t1059 0110  T4005 1GbE interface\n\t\t1059 0111  T4007 1GbE interface\n\t\t1059 0120  T4008 1GbE interface\n\t\t1059 0130  T4009 1GbE interface\n\t\t1059 0140  T2035 1GbE interface\n\t\t1059 0150  RD-01068 1GbE interface\n\t\t1059 0170  RD-01213 10GbE interface\n\t1538  I210 Gigabit Network Connection\n\t\t1059 0190  RD20057 M.2 Dual 1GbE-T1 15m\n\t1539  I211 Gigabit Network Connection\n\t153a  Ethernet Connection I217-LM\n\t\t1028 0617  Precision T5810\n\t\t103c 1909  ZBook 15\n\t\t103c 1998  EliteDesk 800 G1\n\t\t17aa 220e  ThinkPad T440p\n\t\t17aa 309f  ThinkCentre M83\n\t153b  Ethernet Connection I217-V\n\t1547  DSL3510 Thunderbolt Controller [Cactus Ridge 4C 2012]\n\t1548  DSL3310 Thunderbolt Controller [Cactus Ridge 2C 2012]\n\t1549  DSL2210 Thunderbolt Controller [Port Ridge 1C 2011]\n\t154a  Ethernet Server Adapter X520-4\n\t\t8086 011a  Ethernet Converged Network Adapter X520-4\n\t\t8086 011b  Ethernet Converged Network Adapter X520-4\n\t\t8086 011c  Ethernet Converged Network Adapter X520-4\n\t154c  Ethernet Virtual Function 700 Series\n\t154d  Ethernet 10G 2P X520 Adapter\n\t\t8086 7b11  10GbE 2P X520 Adapter\n\t1557  82599 10 Gigabit Network Connection\n\t\t17aa 4008  82599EN 10 Gigabit Network Connection\n\t\t1bd4 001c  10G SFP+ SP ER101Fi4 Rack Adapter\n\t\t1bd4 0030  10G SFP+ SP EP101Fi4A Adapter\n\t\t8086 0001  Ethernet OCP Server Adapter X520-1\n\t1558  Ethernet Converged Network Adapter X520-Q1\n\t\t8086 011a  Ethernet Converged Network Adapter X520-Q1\n\t\t8086 011b  Ethernet Converged Network Adapter X520-Q1\n\t1559  Ethernet Connection I218-V\n\t155a  Ethernet Connection I218-LM\n\t\t17aa 2214  ThinkPad X240\n\t155c  Ethernet Server Bypass Adapter\n\t\t8086 0001  Ethernet Server Bypass Adapter X540-T2\n\t155d  Ethernet Server Bypass Adapter\n\t\t8086 0001  Ethernet Server Bypass Adapter X520-SR2\n\t\t8086 0002  Ethernet Server Bypass Adapter X520-LR2\n\t1560  Ethernet Controller X540\n\t\t4c52 9801  LREC9801BT Single-port 10Gb Ethernet Network Adapter\n\t1563  Ethernet Controller X550\n\t\t1028 1fa8  Ethernet 10G 4P X550/I350 rNDC\n\t\t1028 1fa9  Ethernet 10G 4P X550 rNDC\n\t\t1137 02b2  X550-TX 10 Gig LOM\n\t\t1137 02b3  X550-TX 10 Gig LOM\n\t\t1170 0001  Intel Ethernet Controller X550-T2 OCP card\n\t\t14c0 1201  X550 10Gb 2P RJ45 OCP Mezz\n\t\t1590 00d1  Ethernet 10Gb 2-port 562T Adapter\n\t\t1590 00d2  Ethernet 10Gb 2-port 562FLR-T Adapter\n\t\t16b8 7217  Twin10G Thunderbolt 3 Edition\n\t\t18d4 0c08  X550 10Gb 2-port RJ45 OCP Mezz Card MOP81-I-10GT2\n\t\t193d 1008  560T-B\n\t\t193d 1009  560T-L\n\t\t193d 1011  UN-NIC-ETH563T-sL-2P\n\t\t4c52 1025  LRES1025PT Dual-port 10Gb Ethernet Network Adapter\n\t\t4c52 9812  LREC9812BT Dual-port 10Gb Ethernet Network Adapter\n\t\t8086 0001  Ethernet Converged Network Adapter X550-T2\n\t\t8086 001a  Ethernet Converged Network Adapter X550-T2\n\t\t8086 001b  Ethernet Server Adapter X550-T2 for OCP\n\t\t8086 001d  Ethernet 10G 2P X550-t Adapter\n\t\t8086 0022  Ethernet Converged Network Adapter X550-T2\n\t1564  X550 Virtual Function\n\t1565  X550 Virtual Function\n\t1566  DSL4410 Thunderbolt NHI [Redwood Ridge 2C 2013]\n\t1567  DSL4410 Thunderbolt Bridge [Redwood Ridge 2C 2013]\n\t1568  DSL4510 Thunderbolt NHI [Redwood Ridge 4C 2013]\n\t1569  DSL4510 Thunderbolt Bridge [Redwood Ridge 4C 2013]\n\t156a  DSL5320 Thunderbolt 2 NHI [Falcon Ridge 2C 2013]\n\t156b  DSL5320 Thunderbolt 2 Bridge [Falcon Ridge 2C 2013]\n\t156c  DSL5520 Thunderbolt 2 NHI [Falcon Ridge 4C 2013]\n\t156d  DSL5520 Thunderbolt 2 Bridge [Falcon Ridge 4C 2013]\n\t156f  Ethernet Connection I219-LM\n\t\t1028 06dc  Latitude E7470\n\t\t103c 8079  EliteBook 840 G3\n\t\t17aa 2247  ThinkPad T570\n\t1570  Ethernet Connection I219-V\n\t1571  Ethernet Virtual Function 700 Series\n\t1572  Ethernet Controller X710 for 10GbE SFP+\n\t\t1028 0000  Ethernet 10G X710 rNDC\n\t\t1028 1f99  Ethernet 10G 4P X710/I350 rNDC\n\t\t1028 1f9c  Ethernet 10G 4P X710 SFP+ rNDC\n\t\t103c 0000  Ethernet 10Gb 562SFP+ Adapter\n\t\t103c 22fc  Ethernet 10Gb 2-port 562FLR-SFP+ Adapter\n\t\t103c 22fd  Ethernet 10Gb 2-port 562SFP+ Adapter\n\t\t1137 0000  Ethernet Converged NIC X710-DA\n\t\t1137 013b  Ethernet Converged NIC X710-DA4\n\t\t1137 020a  Ethernet Converged NIC X710-DA2\n\t\t1590 0000  Ethernet Controller X710 for 10GbE SFP+\n\t\t1590 0225  Ethernet 10GbE 4P 563SFP+ Adapter\n\t\t1590 022f  Ethernet 10Gb 2-port 564i Communication Board\n\t\t17aa 0000  ThinkServer X710 AnyFabric for 10GbE SFP+\n\t\t17aa 4001  ThinkServer X710-4 AnyFabric for 10GbE SFP+\n\t\t17aa 4002  ThinkServer X710-2 AnyFabric for 10GbE SFP+\n\t\t193d 1020  NIC-ETH561F-sL-4x10G\n\t\t193d 1021  NIC-ETH561F-sL-2x10G\n# NIC-ETH561F-3S-2P OCP3.0 2x10G SFP+ Card\n\t\t193d 1081  NIC-ETH561F-3S-2P\n\t\t19e5 d11c  Ethernet 2-port X710 10Gb SFP+ Adapter SP330\n\t\t1bd4 0042  10G SFP+ DP EP102Fi4 Adapter\n\t\t1bd4 0056  Ethernet Network Adapter X710-BM2 for OCP NIC 3.0\n\t\t1bd4 0065  F102IX710\n\t\t1bd4 0074  Ethernet Network Adapter X710-BM2 for lldp\n\t\t1bd4 008b  F102IX710\n\t\t4c52 3003  LRES3003PF Quad-port 10Gb Ethernet Server Adapter for OCP\n\t\t4c52 3007  LRES3007PF Quad-port 10Gb Ethernet Server Adapter for OCP\n\t\t4c52 3039  LRES3039PF Dual-port 10Gb Ethernet Server Adapter for OCP\n\t\t4c52 8003  LRES8003PT Quad-port 10Gb Ethernet Bypass Network Adapter\n\t\t4c52 9804  LREC9804BF Quad-port 10Gb Ethernet Server Adapter\n\t\t4c52 9812  LREC9812BF Dual-port 10Gb Ethernet Server Adapter\n\t\t8086 0000  Ethernet Converged Network Adapter X710\n\t\t8086 0001  Ethernet Converged Network Adapter X710-4\n\t\t8086 0002  Ethernet Converged Network Adapter X710-4\n\t\t8086 0004  Ethernet Converged Network Adapter X710-4\n\t\t8086 0005  Ethernet Converged Network Adapter X710\n\t\t8086 0006  Ethernet Converged Network Adapter X710\n\t\t8086 0007  Ethernet Converged Network Adapter X710-2\n\t\t8086 0008  Ethernet Converged Network Adapter X710-2\n\t\t8086 0009  Ethernet Controller X710 for 10GbE SFP+\n\t\t8086 000a  Ethernet Controller X710 for 10GbE SFP+\n\t\t8086 000b  Ethernet Server Adapter X710-DA2 for OCP\n\t\t8086 000d  Ethernet Controller X710 for 10GbE SFP+\n\t\t8086 000e  Ethernet Server Adapter OCP X710-2\n\t\t8086 000f  Ethernet Server Adapter OCP X710-2\n\t\t8086 0010  Ethernet Converged Network Adapter X710\n\t\t8086 0011  Ethernet Network Adapter X710-2 for OCP NIC 3.0\n\t\t8086 0012  Ethernet Network Adapter X710-4 for OCP NIC 3.0\n\t\t8086 0013  Ethernet 10G 2P X710 OCP\n\t\t8086 0014  Ethernet 10G 4P X710 OCP\n\t\t8086 0015  Ethernet Server Adapter X710-DA2 for OCP\n\t\t8086 00a1  Ethernet Network Adapter X710-2 for OCP NIC 3.0\n\t\t8086 00a2  Ethernet Network Adapter X710-4 for OCP NIC 3.0\n\t\t8086 4005  Ethernet Controller X710 for 10GbE SFP+\n\t\t8086 4006  Ethernet Controller X710 for 10GbE SFP+\n\t\t8086 4007  Ethernet Controller X710 for 10GbE SFP+\n\t1574  Ethernet Controller XL710 Emulation\n\t1575  DSL6340 Thunderbolt 3 NHI [Alpine Ridge 2C 2015]\n\t1576  DSL6340 Thunderbolt 3 Bridge [Alpine Ridge 2C 2015]\n\t1577  DSL6540 Thunderbolt 3 NHI [Alpine Ridge 4C 2015]\n\t1578  DSL6540 Thunderbolt 3 Bridge [Alpine Ridge 4C 2015]\n\t157b  I210 Gigabit Network Connection\n\t\tea50 cc10  RXi2-BP\n\t157c  I210 Gigabit Backplane Connection\n\t157d  DSL5110 Thunderbolt 2 NHI (Low Power) [Win Ridge 2C 2014]\n\t157e  DSL5110 Thunderbolt 2 Bridge (Low Power) [Win Ridge 2C 2014]\n\t1580  Ethernet Controller XL710 for 40GbE backplane\n\t1581  Ethernet Controller X710 for 10GbE backplane\n\t\t1028 0000  Ethernet 10G X710-k bNDC\n\t\t1028 1f98  Ethernet 10G 4P X710-k bNDC\n\t\t1028 1f9e  Ethernet 10G 2P X710-k bNDC\n\t\t1059 0150  RD-01068 10GbE-KR interface\n\t\t1059 0170  RD-01213 10GbE interface\n\t\t1590 0000  Ethernet 2-port 563i Adapter\n\t\t1590 00f8  Ethernet 2-port 563i Adapter\n\t\t193d 100e  NIC-ETH561i-Mb-4x10G\n\t\t8086 0000  Ethernet Converged Network Adapter XL710-Q2\n\t1583  Ethernet Controller XL710 for 40GbE QSFP+\n\t\t1028 0000  Ethernet 40G 2P XL710 QSFP+ rNDC\n\t\t1028 1f9f  Ethernet 40G 2P XL710 QSFP+ rNDC\n\t\t108e 0000  10 Gb/40 Gb Ethernet Adapter\n\t\t108e 7b1b  10 Gb/40 Gb Ethernet Adapter\n\t\t108e 7b1d  10Gb/40Gb Ethernet Adapter\n\t\t1137 0000  Ethernet Converged NIC XL710-QDA2\n\t\t1137 013c  Ethernet Converged NIC XL710-QDA2\n\t\t4c52 3042  LRES3042PF Dual-port 40Gb Ethernet Server Adapter for OCP\n\t\t4c52 9902  LREC9902BF Dual-port 40Gb Ethernet Server Adapter\n\t\t8086 0000  Ethernet Converged Network Adapter XL710-Q2\n\t\t8086 0001  Ethernet Converged Network Adapter XL710-Q2\n\t\t8086 0002  Ethernet Converged Network Adapter XL710-Q2\n\t\t8086 0003  Ethernet I/O Module XL710-Q2\n\t\t8086 0004  Ethernet Server Adapter XL710-Q2OCP\n\t\t8086 0006  Ethernet Converged Network Adapter XL710-Q2\n\t1584  Ethernet Controller XL710 for 40GbE QSFP+\n\t\t4c52 9901  LREC9901BF Single-port 40Gb Ethernet Server Adapter\n\t\t8086 0000  Ethernet Converged Network Adapter XL710-Q1\n\t\t8086 0001  Ethernet Converged Network Adapter XL710-Q1\n\t\t8086 0002  Ethernet Converged Network Adapter XL710-Q1\n\t\t8086 0003  Ethernet I/O Module XL710-Q1\n\t\t8086 0004  Ethernet Server Adapter XL710-Q1OCP\n\t1585  Ethernet Controller X710 for 10GbE QSFP+\n\t1586  Ethernet Controller X710 for 10GBASE-T\n\t\t108e 0000  Ethernet Controller X710 for 10GBASE-T\n\t\t108e 4857  Ethernet Controller X710 for 10GBASE-T\n\t1587  Ethernet Controller XL710 for 20GbE backplane\n\t\t103c 0000  Ethernet 10/20Gb 2-port 660FLB Adapter\n\t\t103c 22fe  Ethernet 10/20Gb 2-port 660FLB Adapter\n\t1588  Ethernet Controller XL710 for 20GbE backplane\n\t\t103c 0000  Ethernet 10/20Gb 2-port 660M Adapter\n\t\t103c 22ff  Ethernet 10/20Gb 2-port 660M Adapter\n\t\t1137 0000  Ethernet Network Adapter XXV710\n\t\t1137 02b4  Ethernet Network Adapter XXV710 OCP 2.0\n\t1589  Ethernet Controller X710/X557-AT 10GBASE-T\n\t\t108e 0000  Quad Port 10GBase-T Adapter\n\t\t108e 7b1c  Quad Port 10GBase-T Adapter\n\t\t4c52 9804  LREC9804BT Quad-port 10Gb Ethernet Network Adapter\n\t\t8086 0000  Ethernet Converged Network Adapter X710-T\n\t\t8086 0001  Ethernet Converged Network Adapter X710-T4\n\t\t8086 0002  Ethernet Converged Network Adapter X710-T4\n\t\t8086 0003  Ethernet Converged Network Adapter X710-T\n\t\t8086 00a0  Ethernet Converged Network Adapter X710-T4\n\t\t8086 1003  Ethernet Converged Network Adapter X710-T\n\t158a  Ethernet Controller XXV710 for 25GbE backplane\n\t\t1590 0000  10/25Gb Ethernet Adapter\n\t\t1590 0286  Synergy 4610C 10/25Gb Ethernet Adapter\n\t\t8086 0000  Ethernet Controller XXV710 for 25GbE backplane\n\t\t8086 000a  Ethernet 25G 2P XXV710 Mezz\n\t158b  Ethernet Controller XXV710 for 25GbE SFP28\n\t\t1137 0000  Ethernet Network Adapter XXV710\n\t\t1137 0225  Ethernet Network Adapter XXV710\n\t\t1137 02b4  Ethernet Network Adapter XXV710 OCP 2.0\n# UEFI PXE Disabled\n\t\t1374 0230  Single Port 25 Gigabit Ethernet PCI Express Server Adapter (PE325G1I71)\n# With UEFI PXE Enabled\n\t\t1374 0231  Single Port 25 Gigabit Ethernet PCI Express Server Adapter (PE325G1I71EU)\n# UEFI PXE Disabled\n\t\t1374 0234  Dual Port 25 Gigabit Ethernet PCI Express Server Adapter (PE325G2I71)\n# With UEFI PXE Enabled\n\t\t1374 0235  Dual Port 25 Gigabit Ethernet PCI Express Server Adapter (PE325G2I71EU)\n# PCIe x8 Bifurcated as x4x4, UEFI PXE Disabled, low profile\n\t\t1374 0238  Quad Port 25 Gigabit Ethernet PCI Express Server Adapter (PE325G4I71L)\n# PCIe x8 Bifurcated as x4x4, UEFI PXE Enabled, low profile\n\t\t1374 0239  Quad Port 25 Gigabit Ethernet PCI Express Server Adapter (PE325G4I71LEU)\n# PCIe x16 Bifurcated as x8x8, UEFI PXE Disabled, low profile\n\t\t1374 023a  Quad Port 25 Gigabit Ethernet PCI Express Server Adapter (PE31625G4I71L)\n# PCIe x16 Bifurcated as x8x8, UEFI PXE Enabled, low profile\n\t\t1374 023b  Quad Port 25 Gigabit Ethernet PCI Express Server Adapter (PE31625G4I71LEU)\n\t\t1590 0000  Ethernet Network Adapter XXV710-2\n\t\t1590 0253  Ethernet 10/25/Gb 2-port 661SFP28 Adapter\n\t\t4c52 3017  LRES3017PF Dual-port 25Gb Ethernet Server Adapter for OCP\n\t\t4c52 8004  LRES8004PT Quad-port 25Gb Ethernet Bypass Network Adapter\n\t\t8086 0000  Ethernet Network Adapter XXV710\n\t\t8086 0001  Ethernet Network Adapter XXV710-2\n\t\t8086 0002  Ethernet Network Adapter XXV710-2\n\t\t8086 0003  Ethernet Network Adapter XXV710-1\n\t\t8086 0004  Ethernet Network Adapter XXV710-1\n\t\t8086 0005  Ethernet Network Adapter OCP XXV710-2\n\t\t8086 0006  Ethernet Network Adapter OCP XXV710-2\n\t\t8086 0007  Ethernet Network Adapter OCP XXV710-1\n\t\t8086 0008  Ethernet Network Adapter OCP XXV710-1\n\t\t8086 0009  Ethernet 25G 2P XXV710 Adapter\n\t\t8086 000a  Ethernet 25G 2P XXV710 OCP\n\t\t8086 000c  Ethernet Network Adapter XXV710-DA2 for OCP 3.0\n\t\t8086 000d  Ethernet 25G 2P XXV710 OCP\n\t\t8086 4001  Ethernet Network Adapter XXV710-2\n\t1591  Ethernet Controller E810-C for backplane\n\t\t8086 bcce  Ethernet Controller E810-C for Intel(R) Open FPGA Stack\n\t1592  Ethernet Controller E810-C for QSFP\n\t\t1137 02bf  E810CQDA2 2x100 GbE QSFP28 PCIe NIC\n\t\t193d 1050  NIC-ETH1060F-LP-2P 2x100GbE Ethernet PCIe Card\n\t\t4c52 1014  LRES1014PF Dual-port 100Gb Ethernet Server Adapter\n\t\t4c52 3026  LRES3026PF Dual-port 100Gb Ethernet Server Adapter for OCP\n\t\t8086 0001  Ethernet Network Adapter E810-C-Q1\n\t\t8086 0002  Ethernet Network Adapter E810-C-Q2\n\t\t8086 0004  Ethernet Network Adapter E810-C-Q2\n\t\t8086 0005  Ethernet Network Adapter E810-C-Q1 for OCP3.0\n\t\t8086 0006  Ethernet Network Adapter E810-C-Q2 for OCP3.0\n\t\t8086 0009  Ethernet Network Adapter E810-C-Q1\n\t\t8086 000a  Ethernet Network Adapter E810-C-Q1 for OCP\n\t\t8086 000b  Ethernet 100G 2P E810-C Adapter\n\t\t8086 000c  Ethernet 100G 2P E810-C OCP\n\t\t8086 000d  Ethernet Network Adapter E810-L-Q2 for OCP 3.0\n\t\t8086 000e  Ethernet Network Adapter E810-2C-Q2\n\t\t8086 000f  Ethernet Network Adapter E810-C-Q2T\n\t\t8086 0010  Ethernet 100G 2P E810-C-stg Adapter\n\t\t8086 0011  Ethernet Network Adapter E810-C-Q1 for OCP3.0\n\t\t8086 0012  Ethernet 100G 2P E810-C-st Adapter\n\t\t8086 0013  Ethernet Network Adapter E810-C-Q1 for OCP 3.0\n\t\t8086 0014  Ethernet 100G 2P E810-2C Adapter\n\t1593  Ethernet Controller E810-C for SFP\n\t\t1137 02c3  E810XXVDA4 4x25/10 GbE SFP28 PCIe NIC\n\t\t1137 02e9  E810XXVDA4TG 4x25/10 GbE SFP28 PCIe NIC\n\t\t1137 02ea  E810XXVDA4T 4x25/10 GbE SFP28 PCIe NIC\n\t\t4c52 1023  LRES1023PF Quad-port 25Gb Ethernet Server Adapter\n\t\t4c52 3027  LRES3027PF Quad-port 25Gb Ethernet Server Adapter for OCP\n\t\t8086 0002  Ethernet Network Adapter E810-L-2\n\t\t8086 0005  Ethernet Network Adapter E810-XXV-4\n\t\t8086 0006  Ethernet Network Adapter E810-XXV-4\n\t\t8086 0007  Ethernet Network Adapter E810-XXV-4\n\t\t8086 0008  Ethernet Network Adapter E810-XXV-2\n\t\t8086 0009  Ethernet Network Adapter E810-XXV-2 for OCP 2.0\n\t\t8086 000a  Ethernet 25G 4P E810-XXV Adapter\n\t\t8086 000c  Ethernet Network Adapter E810-XXV-4 for OCP 3.0\n\t\t8086 000d  Ethernet 25G 4P E810-XXV OCP\n\t\t8086 000e  Ethernet Network Adapter E810-XXV-4T\n\t\t8086 000f  Ethernet 25G 4P E810-XXV-stg Adapter\n\t\t8086 0010  Ethernet 25G 4P E810-XXV-st Adapter\n\t\t8086 0012  Ethernet 25G 4P E810-XXV Adapter\n\t\t8086 4010  Ethernet Network Adapter E810-XXV-4\n\t\t8086 4013  Ethernet Network Adapter E810-XXV-4 for OCP 3.0\n\t\t8086 401c  Ethernet Network Adapter E810-XXV-4 for OCP 3.0\n\t1599  Ethernet Controller E810-XXV for backplane\n\t\t8086 0001  Ethernet 25G 2P E810-XXV-k Mezz\n\t159a  Ethernet Controller E810-XXV for QSFP\n\t159b  Ethernet Controller E810-XXV for SFP\n\t\t1137 02be  E810XXVDA2 2x25/10 GbE SFP28 PCIe NIC\n# NIC-ETH660F-3S-2P 2x25GbE SFP28 Network Adapter for OCP 3.0\n\t\t193d 1085  NIC-ETH660F-3S-2P\n\t\t1bd4 0057  Ethernet Network Adapter E810-XXVAM2\n\t\t1bd4 0058  Ethernet Network Adapter E810-XXVAM2 for OCP 3.0\n\t\t1bd4 006e  Ethernet Network Adapter E810-XXVAM2 for BD\n\t\t1bd4 0083  Ethernet Network Adapter E810-XXVAM2 for lldp\n\t\t1bd4 00a0  S252IE810\n\t\t1eec 0102  VSE-225-41E Dual-port 10Gb/25Gb Etherent PCIe\n\t\t4c52 0003  LRES1021PF Dual-port 25Gb Ethernet Server Adapter\n\t\t4c52 3029  LRES3029PF Dual-port 25Gb Ethernet Server Adapter for OCP\n\t\t8086 0001  Ethernet 25G 2P E810-XXV OCP\n\t\t8086 0002  Ethernet 25G 2P E810-XXV Adapter\n\t\t8086 0003  Ethernet Network Adapter E810-XXV-2\n\t\t8086 0005  Ethernet Network Adapter E810-XXV-2 for OCP 3.0\n\t\t8086 4001  Ethernet Network Adapter E810-XXV-2\n\t\t8086 4002  Ethernet Network Adapter E810-XXV-2 for OCP 3.0\n\t\t8086 4003  Ethernet Network Adapter E810-XXV-2\n\t\t8086 4015  Ethernet Network Adapter E810-XXV-2 for OCP 3.0\n\t15a0  Ethernet Connection (2) I218-LM\n\t15a1  Ethernet Connection (2) I218-V\n\t15a2  Ethernet Connection (3) I218-LM\n\t15a3  Ethernet Connection (3) I218-V\n\t15a4  Ethernet Switch FM10000 Host Interface\n\t15a5  Ethernet Switch FM10000 Host Virtual Interface\n\t15a8  Ethernet Connection X552 Virtual Function\n\t15a9  X552 Virtual Function\n\t15aa  Ethernet Connection X552 10 GbE Backplane\n\t\t1059 0120  T4008 10GbE interface\n\t15ab  Ethernet Connection X552 10 GbE Backplane\n\t\t1059 0150  RD-01068 10GbE interface\n\t\t1059 0170  RD-01213 10GbE interface\n\t15ac  Ethernet Connection X552 10 GbE SFP+\n\t\t1059 0160  RD-01167 10GbE interface\n\t15ad  Ethernet Connection X552/X557-AT 10GBASE-T\n\t15ae  Ethernet Connection X552 1000BASE-T\n\t15b0  Ethernet Connection X552 Backplane\n\t15b4  X553 Virtual Function\n\t15b5  DSL6340 USB 3.1 Controller [Alpine Ridge]\n\t15b6  DSL6540 USB 3.1 Controller [Alpine Ridge]\n\t15b7  Ethernet Connection (2) I219-LM\n\t15b8  Ethernet Connection (2) I219-V\n\t\t1462 7994  H110M ECO/GAMING\n\t\t1462 7a72  H270 PC MATE\n\t15b9  Ethernet Connection (3) I219-LM\n\t15bb  Ethernet Connection (7) I219-LM\n\t15bc  Ethernet Connection (7) I219-V\n\t15bd  Ethernet Connection (6) I219-LM\n\t15be  Ethernet Connection (6) I219-V\n\t15bf  JHL6240 Thunderbolt 3 NHI (Low Power) [Alpine Ridge LP 2016]\n\t15c0  JHL6240 Thunderbolt 3 Bridge (Low Power) [Alpine Ridge LP 2016]\n\t15c1  JHL6240 Thunderbolt 3 USB 3.1 Controller (Low Power) [Alpine Ridge LP 2016]\n\t15c2  Ethernet Connection X553 Backplane\n\t15c3  Ethernet Connection X553 Backplane\n\t15c4  Ethernet Connection X553 10 GbE SFP+\n\t15c5  X553 Virtual Function\n\t15c6  Ethernet Connection X553 1GbE\n\t15c7  Ethernet Connection X553 1GbE\n\t15c8  Ethernet Connection X553/X557-AT 10GBASE-T\n\t15ce  Ethernet Connection X553 10 GbE SFP+\n\t15d0  Ethernet SDI Adapter\n\t\t8086 0001  Ethernet SDI Adapter FM10420-100GbE-QDA2\n\t\t8086 0002  Ethernet SDI Adapter FM10840-MTP2\n\t15d1  Ethernet Controller 10G X550T\n\t\t4c52 9811  LREC9811BT Single-port 10Gb Ethernet Network Adapter\n\t\t8086 0002  Ethernet Converged Network Adapter X550-T1\n\t\t8086 001b  Ethernet Server Adapter X550-T1 for OCP\n\t\t8086 0021  Ethernet Converged Network Adapter X550-T1\n\t\t8086 00a2  Ethernet Converged Network Adapter X550-T1\n\t15d2  JHL6540 Thunderbolt 3 NHI (C step) [Alpine Ridge 4C 2016]\n\t15d3  JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016]\n\t15d4  JHL6540 Thunderbolt 3 USB Controller (C step) [Alpine Ridge 4C 2016]\n\t15d5  Ethernet SDI Adapter FM10420-25GbE-DA2\n\t\t8086 0001  Ethernet SDI Adapter FM10420-25GbE-DA2\n\t15d6  Ethernet Connection (5) I219-V\n\t15d7  Ethernet Connection (4) I219-LM\n\t15d8  Ethernet Connection (4) I219-V\n\t\t17aa 2247  ThinkPad T570\n\t\t17aa 224f  ThinkPad X1 Carbon 5th Gen\n\t\t17aa 225d  ThinkPad T480\n\t15d9  JHL6340 Thunderbolt 3 NHI (C step) [Alpine Ridge 2C 2016]\n\t15da  JHL6340 Thunderbolt 3 Bridge (C step) [Alpine Ridge 2C 2016]\n\t15db  JHL6340 Thunderbolt 3 USB 3.1 Controller (C step) [Alpine Ridge 2C 2016]\n\t15df  Ethernet Connection (8) I219-LM\n\t15e0  Ethernet Connection (8) I219-V\n\t15e1  Ethernet Connection (9) I219-LM\n\t15e2  Ethernet Connection (9) I219-V\n\t15e3  Ethernet Connection (5) I219-LM\n\t15e4  Ethernet Connection X553 1GbE\n\t15e5  Ethernet Connection X553 1GbE\n\t15e7  JHL7540 Thunderbolt 3 Bridge [Titan Ridge 2C 2018]\n\t15e8  JHL7540 Thunderbolt 3 NHI [Titan Ridge 2C 2018]\n\t15e9  JHL7540 Thunderbolt 3 USB Controller [Titan Ridge 2C 2018]\n\t15ea  JHL7540 Thunderbolt 3 Bridge [Titan Ridge 4C 2018]\n\t15eb  JHL7540 Thunderbolt 3 NHI [Titan Ridge 4C 2018]\n\t\t1028 09be  Latitude 7410\n\t15ec  JHL7540 Thunderbolt 3 USB Controller [Titan Ridge 4C 2018]\n\t\t1028 09be  Latitude 7410\n\t15ef  JHL7440 Thunderbolt 3 Bridge [Titan Ridge DD 2018]\n\t15f0  JHL7440 Thunderbolt 3 USB Controller [Titan Ridge DD 2018]\n\t15f2  Ethernet Controller I225-LM\n\t\t4c52 2031  LRES2031PT Single-port 2.5Gb Ethernet Network Adapter\n\t\t8086 0001  Ethernet Network Adapter I225-T1\n\t\t8086 0002  Ethernet Network Adapter I225-T1\n\t15f3  Ethernet Controller I225-V\n\t\t4c52 2031  LRES2031PT Single-port 2.5Gb Ethernet Network Adapter\n\t\t8086 0003  Intel(R) Ethernet Controller (3) I225-V\n\t15f4  Ethernet Connection (15) I219-LM\n\t15f5  Ethernet Connection (15) I219-V\n\t15f6  I210 Gigabit Ethernet Connection\n\t15f9  Ethernet Connection (14) I219-LM\n\t15fa  Ethernet Connection (14) I219-V\n\t15fb  Ethernet Connection (13) I219-LM\n\t15fc  Ethernet Connection (13) I219-V\n\t15ff  Ethernet Controller X710 for 10GBASE-T\n\t\t1014 0000  PCIe3 4-port 10GbE Base-T Adapter\n\t\t108e 0000  Quad Port 10GBase-T Adapter - CP\n\t\t108e 7b1f  Quad Port 10GBase-T Adapter - CP\n\t\t1137 0000  X710TLG GbE RJ45 PCIe NIC\n\t\t1137 02c1  X710T2LG 2x10 GbE RJ45 PCIe NIC\n\t\t1137 02c2  X710T4LG 4x10 GbE RJ45 PCIe NIC\n\t\t1137 02d9  Ethernet Network Adapter X710-T2L OCP 3.0\n\t\t1137 02da  Ethernet Network Adapter X710-T4L OCP 3.0\n# NIC-ETH565T-3S-2P OCP3.0 2x10G Base-T Card\n\t\t193d 1082  NIC-ETH565T-3S-2P\n\t\t4c52 1012  LRES1012PT Dual-port 10Gb Ethernet Network Adapter\n\t\t4c52 3021  LRES3021PT Dual-port 10Gb Ethernet Server Adapter for OCP\n\t\t8086 0000  Ethernet Network Adapter X710-TL\n\t\t8086 0001  Ethernet Network Adapter X710-T4L\n\t\t8086 0002  Ethernet Network Adapter X710-T4L\n\t\t8086 0003  Ethernet Network Adapter X710-T2L\n\t\t8086 0004  Ethernet Network Adapter X710-T2L\n\t\t8086 0005  Ethernet 10G 2P X710-T2L-t Adapter\n\t\t8086 0006  Ethernet 10G 4P X710-T4L-t Adapter\n\t\t8086 0007  Ethernet 10G 2P X710-T2L-t OCP\n\t\t8086 0008  Ethernet 10G 4P X710-T4L-t OCP\n\t\t8086 0009  Ethernet Network Adapter X710-T4L for OCP 3.0\n\t\t8086 000a  Ethernet Network Adapter X710-T4L for OCP 3.0\n\t\t8086 000b  Ethernet Network Adapter X710-T2L for OCP 3.0\n\t\t8086 000c  Ethernet Network Adapter X710-T2L for OCP 3.0\n\t\t8086 000d  Ethernet 10G 2P X710-T2L-t OCP\n\t\t8086 000f  Ethernet Network Adapter X710-T2L for OCP 3.0\n\t\t8086 4009  Ethernet Network Adapter X710-T2L\n\t\t8086 4012  Ethernet Network Adapter X710-T4L for OCP 3.0\n\t\t8086 4018  Ethernet Network Adapter X710-T2L for OCP 3.0\n\t\t8086 4019  Ethernet Network Adapter X710-T4L\n\t1600  Broadwell-U Host Bridge -OPI\n\t1601  Broadwell-U PCI Express x16 Controller\n\t1602  Broadwell-U Integrated Graphics\n\t1603  Broadwell-U Processor Thermal Subsystem\n\t1604  Broadwell-U Host Bridge -OPI\n\t1605  Broadwell-U PCI Express x8 Controller\n\t1606  HD Graphics\n\t1607  Broadwell-U CHAPS Device\n\t1608  Broadwell-U Host Bridge -OPI\n\t1609  Broadwell-U x4 PCIe\n\t160a  Broadwell-U Integrated Graphics\n\t160b  Broadwell-U Integrated Graphics\n\t160c  Broadwell-U Audio Controller\n\t160d  Broadwell-U Integrated Graphics\n\t160e  Broadwell-U Integrated Graphics\n\t160f  Broadwell-U SoftSKU\n\t1610  Broadwell-U Host Bridge - DMI\n\t1612  HD Graphics 5600\n\t1614  Broadwell-U Host Bridge - DMI\n\t1616  HD Graphics 5500\n\t\t103c 2216  ZBook 15u G2 Mobile Workstation\n\t1618  Broadwell-U Host Bridge - DMI\n\t161a  Broadwell-U Integrated Graphics\n\t161b  Broadwell-U Integrated Graphics\n\t161d  Broadwell-U Integrated Graphics\n\t161e  HD Graphics 5300\n\t1622  Iris Pro Graphics 6200\n\t1626  HD Graphics 6000\n\t162a  Iris Pro Graphics P6300\n\t162b  Iris Graphics 6100\n\t162d  Broadwell-U Integrated Graphics\n\t162e  Broadwell-U Integrated Graphics\n\t1632  Broadwell-U Integrated Graphics\n\t1636  Broadwell-U Integrated Graphics\n\t163a  Broadwell-U Integrated Graphics\n\t163b  Broadwell-U Integrated Graphics\n\t163d  Broadwell-U Integrated Graphics\n\t163e  Broadwell-U Integrated Graphics\n\t1889  Ethernet Adaptive Virtual Function\n\t188a  Ethernet Connection E823-C for backplane\n\t188b  Ethernet Connection E823-C for QSFP\n\t188c  Ethernet Connection E823-C for SFP\n\t\t1028 0abd  Ethernet Connection 25G 4P E823-C LOM\n\t\t17aa 405e  E823 25G/10G Ethernet LOM Controller\n\t188d  Ethernet Connection E823-C/X557-AT 10GBASE-T\n\t188e  Ethernet Connection E823-C 1GbE\n\t\t17aa 405f  E823 1G Ethernet LOM Controller\n\t1890  Ethernet Connection E822-C for backplane\n\t1891  Ethernet Connection E822-C for QSFP\n\t1892  Ethernet Connection E822-C for SFP\n\t1893  Ethernet Connection E822-C/X557-AT 10GBASE-T\n\t1894  Ethernet Connection E822-C 1GbE\n\t1897  Ethernet Connection E822-L for backplane\n\t1898  Ethernet Connection E822-L for SFP\n\t1899  Ethernet Connection E822-L/X557-AT 10GBASE-T\n\t189a  Ethernet Connection E822-L 1GbE\n\t18a0  Atom Processor P5xxx Series QAT\n\t18a1  C4XXX Series QAT Virtual Function\n\t18b3  Atom Processor P5xxx Series SATA Controller\n\t18d0  Atom Processor P5xxx Series USB xHCI Controller\n\t18d3  Atom Processor P5xxx Series MEI Controller\n\t18d6  Atom Processor P5xxx Series MEI Controller\n\t18df  Atom Processor P5xxx Series SMBus Controller\n\t18e0  Atom Processor P5xxx Series SPI Controller\n\t18e1  Atom Processor P5xxx Series Trace Hub\n\t18ee  200xx Series QAT\n\t18ef  200xx Series QAT Virtual Function\n\t18f3  Atom Processor P5xxx Series SATA Controller\n\t1900  Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host Bridge/DRAM Registers\n\t1901  6th-10th Gen Core Processor PCIe Controller (x16)\n\t1902  HD Graphics 510\n\t1903  Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Thermal Subsystem\n\t\t1028 06d6  Latitude 7275 tablet\n\t\t1028 06dc  Latitude E7470\n\t\t1028 06e4  XPS 15 9550\n\t\t1028 06e6  Latitude 11 5175 2-in-1\n\t\t1028 09be  Latitude 7410\n\t\t103c 825b  OMEN-17-w001nv\n\t\t17aa 225d  ThinkPad T480\n\t1904  Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host Bridge/DRAM Registers\n\t\t1028 06dc  Latitude E7470\n\t\t1028 06f3  Latitude 3570\n\t\t103c 8079  EliteBook 840 G3\n\t\t17aa 2247  ThinkPad T570\n\t\t17aa 382a  B51-80 Laptop\n\t1905  Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor PCIe Controller (x8)\n\t1906  HD Graphics 510\n\t\t17aa 382a  B51-80 Laptop\n\t1908  Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host Bridge/DRAM Registers\n\t1909  Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor PCIe Controller (x4)\n\t190b  HD Graphics 510\n\t190c  Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host Bridge/DRAM Registers\n\t\t1028 06d6  Latitude 7275 tablet\n\t\t1028 06e6  Latitude 11 5175 2-in-1\n\t190f  Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host Bridge/DRAM Registers\n\t1910  Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host Bridge/DRAM Registers\n\t\t1028 06e4  XPS 15 9550\n\t\t103c 825b  OMEN-17-w001nv\n\t1911  Xeon E3-1200 v5/v6 / E3-1500 v5 / 6th/7th/8th Gen Core Processor Gaussian Mixture Model\n\t\t1028 0869  Vostro 3470\n\t\t1028 09be  Latitude 7410\n\t\t1462 7994  H110M ECO/GAMING\n\t\t1462 7a72  H270 PC MATE\n\t\t17aa 2247  ThinkPad T570\n\t\t17aa 224f  ThinkPad X1 Carbon 5th Gen\n\t\t17aa 225d  ThinkPad T480\n\t1912  HD Graphics 530\n\t1916  Skylake GT2 [HD Graphics 520]\n\t\t1028 06dc  Latitude E7470\n\t\t1028 06f3  Latitude 3570\n\t\t103c 8079  EliteBook 840 G3\n\t\t17aa 2247  ThinkPad T570\n\t1918  Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host Bridge/DRAM Registers\n\t1919  Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Imaging Unit\n\t\t1028 06d6  Latitude 7275 tablet\n\t\t1028 06e6  Latitude 11 5175 2-in-1\n\t191b  HD Graphics 530\n\t\t1028 06e4  XPS 15 9550\n\t\t103c 825b  OMEN-17-w001nv\n\t191d  HD Graphics P530\n\t191e  HD Graphics 515\n\t\t1028 06d6  Latitude 7275 tablet\n\t\t1028 06e6  Latitude 11 5175 2-in-1\n\t191f  Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host Bridge/DRAM Registers\n\t1921  HD Graphics 520\n\t1923  HD Graphics 535\n\t1926  Iris Graphics 540\n\t1927  Iris Graphics 550\n\t192b  Iris Graphics 555\n\t192d  Iris Graphics P555\n\t1932  Iris Pro Graphics 580\n\t193a  Iris Pro Graphics P580\n\t193b  Iris Pro Graphics 580\n\t193d  Iris Pro Graphics P580\n\t1960  80960RP (i960RP) Microprocessor\n\t\t101e 0431  MegaRAID 431 RAID Controller\n\t\t101e 0438  MegaRAID 438 Ultra2 LVD RAID Controller\n\t\t101e 0466  MegaRAID 466 Express Plus RAID Controller\n\t\t101e 0467  MegaRAID 467 Enterprise 1500 RAID Controller\n\t\t101e 0490  MegaRAID 490 Express 300 RAID Controller\n\t\t101e 0762  MegaRAID 762 Express RAID Controller\n\t\t101e 09a0  PowerEdge Expandable RAID Controller 2/SC\n\t\t1028 0467  PowerEdge Expandable RAID Controller 2/DC\n\t\t1028 1111  PowerEdge Expandable RAID Controller 2/SC\n\t\t103c 03a2  MegaRAID\n\t\t103c 10c6  MegaRAID 438, NetRAID-3Si\n\t\t103c 10c7  MegaRAID T5, Integrated NetRAID\n\t\t103c 10cc  MegaRAID, Integrated NetRAID\n\t\t103c 10cd  NetRAID-1Si\n\t\t105a 0000  SuperTrak\n\t\t105a 2168  SuperTrak Pro\n\t\t105a 5168  SuperTrak66/100\n\t\t1111 1111  MegaRAID 466, PowerEdge Expandable RAID Controller 2/SC\n\t\t1111 1112  PowerEdge Expandable RAID Controller 2/SC\n\t\t113c 03a2  MegaRAID\n\t\te4bf 1010  CG1-RADIO\n\t\te4bf 1020  CU2-QUARTET\n\t\te4bf 1040  CU1-CHORUS\n\t\te4bf 3100  CX1-BAND\n\t1962  80960RM (i960RM) Microprocessor\n\t\t105a 0000  SuperTrak SX6000 I2O CPU\n\t1964  80960RN (i960RN) Microprocessor\n\t1980  Atom Processor C3000 Series System Agent\n\t19a1  Atom Processor C3000 Series Error Registers\n\t19a2  Atom Processor C3000 Series Root Complex Event Collector\n\t19a3  Atom Processor C3000 Series Integrated QAT Root Port\n\t19a4  Atom Processor C3000 Series PCI Express Root Port #0\n\t19a5  Atom Processor C3000 Series PCI Express Root Port #1\n\t19a6  Atom Processor C3000 Series PCI Express Root Port #2\n\t19a7  Atom Processor C3000 Series PCI Express Root Port #3\n\t19a8  Atom Processor C3000 Series PCI Express Root Port #4\n\t19a9  Atom Processor C3000 Series PCI Express Root Port #5\n\t19aa  Atom Processor C3000 Series PCI Express Root Port #6\n\t19ab  Atom Processor C3000 Series PCI Express Root Port #7\n\t19ac  Atom Processor C3000 Series SMBus Contoller - Host\n\t19b0  Atom Processor C3000 Series SATA Controller 0\n\t19b1  Atom Processor C3000 Series SATA Controller 0\n\t19b2  Atom Processor C3000 Series SATA Controller 0\n\t19b3  Atom Processor C3000 Series SATA Controller 0\n\t19b4  Atom Processor C3000 Series SATA Controller 0\n\t19b5  Atom Processor C3000 Series SATA Controller 0\n\t19b6  Atom Processor C3000 Series SATA Controller 0\n\t19b7  Atom Processor C3000 Series SATA Controller 0\n\t19be  Atom Processor C3000 Series SATA Controller 0\n\t19bf  Atom Processor C3000 Series SATA Controller 0\n\t19c0  Atom Processor C3000 Series SATA Controller 1\n\t19c1  Atom Processor C3000 Series SATA Controller 1\n\t19c2  Atom Processor C3000 Series SATA Controller 1\n\t19c3  Atom Processor C3000 Series SATA Controller 1\n\t19c4  Atom Processor C3000 Series SATA Controller 1\n\t19c5  Atom Processor C3000 Series SATA Controller 1\n\t19c6  Atom Processor C3000 Series SATA Controller 1\n\t19c7  Atom Processor C3000 Series SATA Controller 1\n\t19ce  Atom Processor C3000 Series SATA Controller 1\n\t19cf  Atom Processor C3000 Series SATA Controller 1\n\t19d0  Atom Processor C3000 Series USB 3.0 xHCI Controller\n\t19d1  Atom Processor C3000 Series Integrated LAN Root Port #0\n\t19d2  Atom Processor C3000 Series Integrated LAN Root Port #1\n\t19d3  Atom Processor C3000 Series ME HECI 1\n\t19d4  Atom Processor C3000 Series ME HECI 2\n\t19d5  Atom Processor C3000 Series ME KT Controller\n\t19d6  Atom Processor C3000 Series ME HECI 3\n\t19d8  Atom Processor C3000 Series HSUART Controller\n\t19db  Atom Processor C3000 Series SD Host Controller\n\t19dc  Atom Processor C3000 Series LPC or eSPI\n\t19dd  Atom Processor C3000 Series Primary to Side Band (P2SB) Bridge\n\t19de  Atom Processor C3000 Series Power Management Controller\n\t19df  Atom Processor C3000 Series SMBus controller\n\t19e0  Atom Processor C3000 Series SPI Controller\n\t19e2  Atom Processor C3000 Series QuickAssist Technology\n\t19e3  Atom Processor C3000 Series QuickAssist Technology Virtual Function\n\t1a12  Timna CPU Graphics\n\t1a1c  Ethernet Connection (17) I219-LM\n\t1a1d  Ethernet Connection (17) I219-V\n\t1a1e  Ethernet Connection (16) I219-LM\n\t\t1028 0b10  Precision 3571\n\t1a1f  Ethernet Connection (16) I219-V\n\t1a21  82840 840 [Carmel] Chipset Host Bridge (Hub A)\n\t1a23  82840 840 [Carmel] Chipset AGP Bridge\n\t1a24  82840 840 [Carmel] Chipset PCI Bridge (Hub B)\n\t1a30  82845 845 [Brookdale] Chipset Host Bridge\n\t\t1028 010e  Optiplex GX240\n\t\t147b 0505  BL7 motherboard\n\t\t15d9 3280  Supermicro P4SBE Mainboard\n\t1a31  82845 845 [Brookdale] Chipset AGP Bridge\n\t1a38  5000 Series Chipset DMA Engine\n\t\t15d9 8680  X7DVL-E-O motherboard\n\t\t8086 3476  S5000PSLSATA Server Board\n\t1a48  82597EX 10GbE Ethernet Controller\n\t\t8086 a01f  PRO/10GbE SR Server Adapter\n\t\t8086 a11f  PRO/10GbE SR Server Adapter\n\t1b48  82597EX 10GbE Ethernet Controller\n\t\t8086 a01f  PRO/10GbE LR Server Adapter\n\t\t8086 a11f  PRO/10GbE LR Server Adapter\n# Also rebranded as Montage IOH M88IO3020\n\t1bcd  Emmitsburg (C740 Family) USB 3.2 Gen 1 xHCI Controller\n\t\t1bd4 00a5  RS0800I5H16i\n\t1bd2  Sapphire Rapids SATA AHCI Controller\n\t1bf2  Sapphire Rapids SATA AHCI Controller\n\t1c00  6 Series/C200 Series Chipset Family Desktop SATA Controller (IDE mode, ports 0-3)\n\t1c01  6 Series/C200 Series Chipset Family Mobile SATA Controller (IDE mode, ports 0-3)\n\t1c02  6 Series/C200 Series Chipset Family 6 port Desktop SATA AHCI Controller\n\t\t1028 04aa  XPS 8300\n\t\t1043 844d  P8 series motherboard\n\t\t17aa 3070  ThinkCentre M91p\n\t\t8086 200d  DH61CR motherboard\n\t\t8086 7270  Server Board S1200BT Family\n\t1c03  6 Series/C200 Series Chipset Family 6 port Mobile SATA AHCI Controller\n\t\t1028 04a3  Precision M4600\n\t\t1028 04b2  Vostro 3350\n\t\t1028 04da  Vostro 3750\n\t\t17aa 21cf  ThinkPad T520\n\t\t8086 7270  Apple MacBookPro8,2 [Core i7, 15\", 2011]\n\t1c04  6 Series/C200 Series Desktop SATA RAID Controller\n\t\t103c 3118  Smart Array B110i SATA RAID Controller\n\t1c05  6 Series/C200 Series Mobile SATA RAID Controller\n\t1c06  Z68 Express Chipset SATA RAID Controller\n\t1c08  6 Series/C200 Series Chipset Family Desktop SATA Controller (IDE mode, ports 4-5)\n\t1c09  6 Series/C200 Series Chipset Family Mobile SATA Controller (IDE mode, ports 4-5)\n\t1c10  6 Series/C200 Series Chipset Family PCI Express Root Port 1\n\t\t1028 04aa  XPS 8300\n\t\t1028 04da  Vostro 3750\n\t\t1043 844d  P8 series motherboard\n\t\t17aa 21cf  ThinkPad T520\n\t\t8086 7270  Server Board S1200BTS / Apple MacBook Pro 8,1/8,2\n\t1c12  6 Series/C200 Series Chipset Family PCI Express Root Port 2\n\t\t1028 04aa  XPS 8300\n\t\t17aa 21cf  ThinkPad T520\n\t\t8086 7270  Apple MacBookPro8,2 [Core i7, 15\", 2011]\n\t1c14  6 Series/C200 Series Chipset Family PCI Express Root Port 3\n\t\t1028 04da  Vostro 3750\n\t\t8086 7270  Apple MacBookPro8,2 [Core i7, 15\", 2011]\n\t1c16  6 Series/C200 Series Chipset Family PCI Express Root Port 4\n\t\t1028 04aa  XPS 8300\n\t\t17aa 21cf  ThinkPad T520\n\t1c18  6 Series/C200 Series Chipset Family PCI Express Root Port 5\n\t\t1028 04da  Vostro 3750\n\t\t17aa 21cf  ThinkPad T520\n\t\t8086 7270  Server Board S1200BTS\n\t1c1a  6 Series/C200 Series Chipset Family PCI Express Root Port 6\n\t\t1028 04da  Vostro 3750\n\t\t1043 844d  P8 series motherboard\n\t1c1c  6 Series/C200 Series Chipset Family PCI Express Root Port 7\n\t1c1e  6 Series/C200 Series Chipset Family PCI Express Root Port 8\n\t\t1043 844d  P8 series motherboard\n\t1c20  6 Series/C200 Series Chipset Family High Definition Audio Controller\n\t\t1028 0490  Alienware M17x R3\n\t\t1028 04a3  Precision M4600\n\t\t1028 04aa  XPS 8300\n\t\t1028 04b2  Vostro 3350\n\t\t1028 04da  Vostro 3750\n# Realtek ALC656\n\t\t103c 2abf  HP Pavilion p6-2100 Desktop PC Series\n\t\t1043 8418  P8P67 Deluxe Motherboard\n\t\t1043 841b  P8H67 Series Motherboard\n\t\t17aa 21cf  ThinkPad T520\n\t\t17aa 3070  ThinkCentre M91p\n# Realtek ALC888 audio codec\n\t\t8086 2008  DQ67SW board\n\t\t8086 200d  DH61CR motherboard\n\t\t8086 7270  Apple MacBookPro8,2 [Core i7, 15\", 2011]\n\t1c22  6 Series/C200 Series Chipset Family SMBus Controller\n\t\t1028 04a3  Precision M4600\n\t\t1028 04aa  XPS 8300\n\t\t1028 04b2  Vostro 3350\n\t\t1028 04da  Vostro 3750\n\t\t1043 844d  P8 series motherboard\n\t\t17aa 21cf  ThinkPad T520\n\t\t17aa 3070  ThinkCentre M91p\n\t\t8086 200d  DH61CR motherboard\n\t\t8086 7270  Server Board S1200BT Family / Apple MacBook Pro 8,1/8,2\n\t1c24  6 Series/C200 Series Chipset Family Thermal Management Controller\n\t1c25  6 Series/C200 Series Chipset Family DMI to PCI Bridge\n\t1c26  6 Series/C200 Series Chipset Family USB Enhanced Host Controller #1\n\t\t1028 04a3  Precision M4600\n\t\t1028 04aa  XPS 8300\n\t\t1028 04b2  Vostro 3350\n\t\t1028 04da  Vostro 3750\n\t\t1043 844d  P8 series motherboard\n\t\t17aa 21cf  ThinkPad T520\n\t\t17aa 3070  ThinkCentre M91p\n\t\t8086 200d  DH61CR motherboard\n\t\t8086 7270  Server Board S1200BT Family / Apple MacBook Pro 8,1/8,2\n\t1c27  6 Series/C200 Series Chipset Family USB Universal Host Controller #1\n\t\t8086 7270  Apple MacBookPro8,2 [Core i7, 15\", 2011]\n\t1c2c  6 Series/C200 Series Chipset Family USB Universal Host Controller #5\n\t\t8086 7270  Apple MacBookPro8,2 [Core i7, 15\", 2011]\n\t1c2d  6 Series/C200 Series Chipset Family USB Enhanced Host Controller #2\n\t\t1028 04a3  Precision M4600\n\t\t1028 04aa  XPS 8300\n\t\t1028 04b2  Vostro 3350\n\t\t1028 04da  Vostro 3750\n\t\t1043 844d  P8 series motherboard\n\t\t17aa 21cf  ThinkPad T520\n\t\t17aa 3070  ThinkCentre M91p\n\t\t8086 200d  DH61CR motherboard\n\t\t8086 7270  Server Board S1200BT Family / Apple MacBook Pro 8,1/8,2\n\t1c33  6 Series/C200 Series Chipset Family LAN Controller\n\t1c35  6 Series/C200 Series Chipset Family VECI Controller\n\t1c3a  6 Series/C200 Series Chipset Family MEI Controller #1\n\t\t1028 0493  Latitude E6420\n\t\t1028 04a3  Precision M4600\n\t\t1028 04aa  XPS 8300\n\t\t1028 04b2  Vostro 3350\n\t\t1028 04da  Vostro 3750\n\t\t1043 844d  P8 series motherboard\n\t\t17aa 21cf  ThinkPad T520\n\t\t17aa 3070  ThinkCentre M91p\n\t\t8086 200d  DH61CR motherboard\n\t\t8086 7270  Apple MacBookPro8,2 [Core i7, 15\", 2011]\n\t1c3b  6 Series/C200 Series Chipset Family MEI Controller #2\n\t1c3c  6 Series/C200 Series Chipset Family IDE-r Controller\n\t1c3d  6 Series/C200 Series Chipset Family KT Controller\n\t\t17aa 3070  ThinkCentre M91p\n\t1c40  6 Series/C200 Series Chipset Family LPC Controller\n\t1c41  Mobile SFF 6 Series Chipset Family LPC Controller\n\t1c42  6 Series/C200 Series Chipset Family LPC Controller\n\t1c43  Mobile 6 Series Chipset Family LPC Controller\n\t1c44  Z68 Express Chipset LPC Controller\n\t1c45  6 Series/C200 Series Chipset Family LPC Controller\n\t1c46  P67 Express Chipset LPC Controller\n\t\t1043 844d  P8P67 Deluxe Motherboard\n\t1c47  UM67 Express Chipset LPC Controller\n\t1c48  6 Series/C200 Series Chipset Family LPC Controller\n\t1c49  HM65 Express Chipset LPC Controller\n\t\t8086 7270  Apple MacBookPro8,2 [Core i7, 15\", 2011]\n\t1c4a  H67 Express Chipset LPC Controller\n\t\t1028 04aa  XPS 8300\n\t\t1043 844d  P8H67 Series Motherboard\n\t1c4b  HM67 Express Chipset LPC Controller\n\t\t1028 04b2  Vostro 3350\n\t\t1028 04da  Vostro 3750\n\t1c4c  Q65 Express Chipset LPC Controller\n\t1c4d  QS67 Express Chipset LPC Controller\n\t1c4e  Q67 Express Chipset LPC Controller\n\t\t17aa 3070  ThinkCentre M91p\n\t1c4f  QM67 Express Chipset LPC Controller\n\t\t1028 04a3  Precision M4600\n\t\t17aa 21cf  ThinkPad T520\n\t1c50  B65 Express Chipset LPC Controller\n\t1c51  6 Series/C200 Series Chipset Family LPC Controller\n\t1c52  C202 Chipset LPC Controller\n\t\t8086 7270  Server Board S1200BTS\n\t1c53  6 Series/C200 Series Chipset Family LPC Controller\n\t1c54  C204 Chipset LPC Controller\n\t1c55  6 Series/C200 Series Chipset Family LPC Controller\n\t1c56  C206 Chipset LPC Controller\n\t\t1043 844d  P8B WS Motherboard\n\t1c57  6 Series/C200 Series Chipset Family LPC Controller\n\t1c58  Upgraded B65 Express Chipset LPC Controller\n\t1c59  Upgraded HM67 Express Chipset LPC Controller\n\t1c5a  Upgraded Q67 Express Chipset LPC Controller\n\t1c5b  6 Series/C200 Series Chipset Family LPC Controller\n\t1c5c  H61 Express Chipset LPC Controller\n\t\t8086 200d  DH61CR motherboard\n\t1c5d  6 Series/C200 Series Chipset Family LPC Controller\n\t1c5e  6 Series/C200 Series Chipset Family LPC Controller\n\t1c5f  6 Series/C200 Series Chipset Family LPC Controller\n\t1d00  C600/X79 series chipset 4-Port SATA IDE Controller\n\t1d02  C600/X79 series chipset 6-Port SATA AHCI Controller\n\t\t1028 04f7  C602J on PowerEdge R320 server\n\t1d04  C600/X79 series chipset SATA RAID Controller\n\t1d06  C600/X79 series chipset SATA Premium RAID Controller\n\t1d08  C600/X79 series chipset 2-Port SATA IDE Controller\n\t1d10  C600/X79 series chipset PCI Express Root Port 1\n\t\t1028 04f7  C602J on PowerEdge R320 server\n\t1d11  C600/X79 series chipset PCI Express Root Port 1\n\t1d12  C600/X79 series chipset PCI Express Root Port 2\n\t1d13  C600/X79 series chipset PCI Express Root Port 2\n\t1d14  C600/X79 series chipset PCI Express Root Port 3\n\t1d15  C600/X79 series chipset PCI Express Root Port 3\n\t1d16  C600/X79 series chipset PCI Express Root Port 4\n\t1d17  C600/X79 series chipset PCI Express Root Port 4\n\t1d18  C600/X79 series chipset PCI Express Root Port 5\n\t\t1028 04f7  C602J on PowerEdge R320 server\n\t1d19  C600/X79 series chipset PCI Express Root Port 5\n\t1d1a  C600/X79 series chipset PCI Express Root Port 6\n\t1d1b  C600/X79 series chipset PCI Express Root Port 6\n\t1d1c  C600/X79 series chipset PCI Express Root Port 7\n\t1d1d  C600/X79 series chipset PCI Express Root Port 7\n\t1d1e  C600/X79 series chipset PCI Express Root Port 8\n\t\t1028 04f7  C602J on PowerEdge R320 server\n\t1d1f  C600/X79 series chipset PCI Express Root Port 8\n\t1d20  C600/X79 series chipset High Definition Audio Controller\n\t1d22  C600/X79 series chipset SMBus Host Controller\n\t\t15d9 066b  X9SRL-F\n\t1d24  C600/X79 series chipset Thermal Management Controller\n\t\t15d9 066b  X9SRL-F\n\t1d25  C600/X79 series chipset DMI to PCI Bridge\n\t1d26  C600/X79 series chipset USB2 Enhanced Host Controller #1\n\t\t1028 04f7  C602J on PowerEdge R320 server\n\t\t15d9 066b  X9SRL-F\n\t1d2d  C600/X79 series chipset USB2 Enhanced Host Controller #2\n\t\t1028 04f7  C602J on PowerEdge R320 server\n\t\t103c 18a9  HP DL360e G8\n\t\t15d9 066b  X9SRL-F\n\t1d33  C600/X79 series chipset LAN Controller\n\t1d35  C600/X79 series chipset VECI Controller\n\t1d3a  C600/X79 series chipset MEI Controller #1\n\t\t1028 04f7  C602J on PowerEdge R320 server\n\t\t15d9 066b  X9SRL-F\n\t1d3b  C600/X79 series chipset MEI Controller #2\n\t\t1028 04f7  C602J on PowerEdge R320 server\n\t\t15d9 066b  X9SRL-F\n\t1d3c  C600/X79 series chipset IDE-r Controller\n\t1d3d  C600/X79 series chipset KT Controller\n\t1d3e  C600/X79 series chipset PCI Express Virtual Root Port\n\t\t1028 04f7  C602J on PowerEdge R320 server\n\t1d3f  C608/C606/X79 series chipset PCI Express Virtual Switch Port\n\t1d40  C600/X79 series chipset LPC Controller\n\t1d41  C600/X79 series chipset LPC Controller\n\t\t1028 04f7  C602J on PowerEdge R320 server\n\t\t15d9 066b  X9SRL-F\n\t1d50  C608 chipset Dual 4-Port SATA/SAS Storage Control Unit\n\t1d54  C600/X79 series chipset Dual 4-Port SATA/SAS Storage Control Unit\n\t1d55  C600/X79 series chipset 4-Port SATA/SAS Storage Control Unit\n\t1d58  C606 chipset Dual 4-Port SATA/SAS Storage Control Unit\n\t1d59  C604/X79 series chipset 4-Port SATA/SAS Storage Control Unit\n\t1d5a  C600/X79 series chipset Dual 4-Port SATA Storage Control Unit\n\t1d5b  C602 chipset 4-Port SATA Storage Control Unit\n\t1d5c  C600/X79 series chipset Dual 4-Port SATA/SAS Storage Control Unit\n\t1d5d  C600/X79 series chipset 4-Port SATA/SAS Storage Control Unit\n\t1d5e  C600/X79 series chipset Dual 4-Port SATA Storage Control Unit\n\t1d5f  C600/X79 series chipset 4-Port SATA Storage Control Unit\n\t1d60  C608 chipset Dual 4-Port SATA/SAS Storage Control Unit\n\t1d64  C600/X79 series chipset Dual 4-Port SATA/SAS Storage Control Unit\n\t1d65  C600/X79 series chipset 4-Port SATA/SAS Storage Control Unit\n\t1d68  C606 chipset Dual 4-Port SATA/SAS Storage Control Unit\n\t1d69  C604/X79 series chipset 4-Port SATA/SAS Storage Control Unit\n\t1d6a  C600/X79 series chipset Dual 4-Port SATA Storage Control Unit\n\t1d6b  C602 chipset 4-Port SATA Storage Control Unit\n\t\t0497 1028  Dell Precision T3600\n\t1d6c  C600/X79 series chipset Dual 4-Port SATA/SAS Storage Control Unit\n\t1d6d  C600/X79 series chipset 4-Port SATA/SAS Storage Control Unit\n\t1d6e  C600/X79 series chipset Dual 4-Port SATA Storage Control Unit\n\t1d6f  C600/X79 series chipset 4-Port SATA Storage Control Unit\n\t1d70  C600/X79 series chipset SMBus Controller 0\n\t1d71  C608/C606/X79 series chipset SMBus Controller 1\n\t1d72  C608 chipset SMBus Controller 2\n\t1d74  C608/C606/X79 series chipset PCI Express Upstream Port\n\t1d76  C600/X79 series chipset Multi-Function Glue\n\t1e00  7 Series/C210 Series Chipset Family 4-port SATA Controller [IDE mode]\n\t\t1734 11d6  B75 [Ivy Bridge] chipset on Esprimo P510 D3171 motherboard\n\t1e01  7 Series Chipset Family 4-port SATA Controller [IDE mode]\n\t\t144d c652  NP300E5C series laptop\n\t1e02  7 Series/C210 Series Chipset Family 6-port SATA Controller [AHCI mode]\n\t\t1043 84ca  P8 series motherboard\n\t\t1734 11d6  B75 [Ivy Bridge] chipset on Esprimo P510 D3171 motherboard\n\t\t1849 1e02  Motherboard\n\t1e03  7 Series Chipset Family 6-port SATA Controller [AHCI mode]\n\t\t1043 108d  VivoBook X202EV\n\t\t1043 1477  N56VZ\n\t\t1043 1517  Zenbook Prime UX31A\n\t\t10cf 16e2  LIFEBOOK E752\n\t\t144d c652  NP300E5C series laptop\n\t1e04  7 Series/C210 Series Chipset Family SATA Controller [RAID mode]\n\t1e05  7 Series Chipset SATA Controller [RAID mode]\n\t1e06  7 Series/C210 Series Chipset Family SATA Controller [RAID mode]\n\t1e07  7 Series Chipset Family SATA Controller [RAID mode]\n\t1e08  7 Series/C210 Series Chipset Family 2-port SATA Controller [IDE mode]\n\t1e09  7 Series Chipset Family 2-port SATA Controller [IDE mode]\n\t\t144d c652  NP300E5C series laptop\n\t1e0e  7 Series/C210 Series Chipset Family SATA Controller [RAID mode]\n\t1e10  7 Series/C216 Chipset Family PCI Express Root Port 1\n\t\t1043 108d  VivoBook X202EV\n\t\t1043 1477  N56VZ\n\t\t1043 1517  Zenbook Prime UX31A\n\t\t1043 84ca  P8H77-I Motherboard\n\t\t10cf 16e9  LIFEBOOK E752\n\t\t144d c652  NP300E5C series laptop\n\t\t1734 11d6  B75 [Ivy Bridge] chipset on Esprimo P510 D3171 motherboard\n\t\t1849 1e10  Motherboard\n\t1e12  7 Series/C210 Series Chipset Family PCI Express Root Port 2\n\t\t1043 108d  VivoBook X202EV\n\t\t1043 1477  N56VZ\n\t\t1043 1517  Zenbook Prime UX31A\n\t1e14  7 Series/C210 Series Chipset Family PCI Express Root Port 3\n\t\t10cf 16e9  LIFEBOOK E752\n\t1e16  7 Series/C216 Chipset Family PCI Express Root Port 4\n\t\t1043 108d  VivoBook X202EV\n\t\t1043 1477  N56VZ\n\t\t144d c652  NP300E5C series laptop\n\t\t1849 1618  Z77 Extreme4 motherboard\n\t1e18  7 Series/C210 Series Chipset Family PCI Express Root Port 5\n\t\t1043 84ca  P8H77-I Motherboard\n\t\t1849 1e18  Motherboard\n\t1e1a  7 Series/C210 Series Chipset Family PCI Express Root Port 6\n\t\t1734 11d6  B75 [Ivy Bridge] chipset on Esprimo P510 D3171 motherboard\n\t\t1849 1e1a  Motherboard\n\t1e1c  7 Series/C210 Series Chipset Family PCI Express Root Port 7\n\t1e1e  7 Series/C210 Series Chipset Family PCI Express Root Port 8\n\t\t10cf 16e9  LIFEBOOK E752\n\t\t1849 1e1e  Motherboard\n\t1e20  7 Series/C216 Chipset Family High Definition Audio Controller\n\t\t1028 054b  XPS One 2710\n\t\t1043 108d  VivoBook X202EV\n\t\t1043 1477  N56VZ\n\t\t1043 1517  Zenbook Prime UX31A\n\t\t1043 8415  P8H77-I Motherboard\n\t\t1043 8445  P8Z77-V LX Motherboard\n\t\t10cf 1757  LIFEBOOK E752\n\t\t144d c652  NP300E5C series laptop\n\t\t1734 11d8  B75 [Ivy Bridge] chipset CX20642 audio controller on Esprimo P510 D3171 motherboard\n\t\t1849 1898  Z77 Extreme4 motherboard\n\t1e22  7 Series/C216 Chipset Family SMBus Controller\n\t\t1043 108d  VivoBook X202EV\n\t\t1043 1477  N56VZ\n\t\t1043 1517  Zenbook Prime UX31A\n\t\t1043 84ca  P8 series motherboard\n\t\t10cf 16e6  LIFEBOOK E752\n\t\t144d c652  NP300E5C series laptop\n\t\t1734 11d6  B75 [Ivy Bridge] chipset on Esprimo P510 D3171 motherboard\n\t\t1849 1e22  Motherboard\n\t1e24  7 Series/C210 Series Chipset Family Thermal Management Controller\n\t\t1043 1517  Zenbook Prime UX31A\n\t1e25  7 Series/C210 Series Chipset Family DMI to PCI Bridge\n\t1e26  7 Series/C216 Chipset Family USB Enhanced Host Controller #1\n\t\t1043 108d  VivoBook X202EV\n\t\t1043 1477  N56VZ\n\t\t1043 1517  Zenbook Prime UX31A\n\t\t1043 84ca  P8 series motherboard\n\t\t10cf 16e8  LIFEBOOK E752\n\t\t144d c652  NP300E5C series laptop\n\t\t1734 11d6  B75 [Ivy Bridge] chipset USB 2.0 controller on Esprimo P510 D3171 motherboard\n\t\t1849 1e26  Motherboard\n\t1e2d  7 Series/C216 Chipset Family USB Enhanced Host Controller #2\n\t\t1043 108d  VivoBook X202EV\n\t\t1043 1477  N56VZ\n\t\t1043 1517  Zenbook Prime UX31A\n\t\t1043 84ca  P8 series motherboard\n\t\t10cf 16e8  LIFEBOOK E752\n\t\t144d c652  NP300E5C series laptop\n\t\t1734 11d6  B75 [Ivy Bridge] chipset USB 2.0 controller on Esprimo P510 D3171 motherboard\n\t\t1849 1e2d  Motherboard\n\t1e31  7 Series/C210 Series Chipset Family USB xHCI Host Controller\n\t\t103c 179b  Elitebook 8470p\n\t\t103c 17ab  ProBook 6570b\n\t\t1043 108d  VivoBook X202EV\n\t\t1043 1477  N56VZ\n\t\t1043 1517  Zenbook Prime UX31A\n\t\t1043 84ca  P8 series motherboard\n\t\t10cf 16ee  LIFEBOOK E752\n\t\t1734 11d6  B75 [Ivy Bridge] chipset USB 3.0 controller on Esprimo P510 D3171 motherboard\n\t\t17aa 21f3  ThinkPad T430\n\t\t1849 1e31  Motherboard\n\t1e33  7 Series/C210 Series Chipset Family LAN Controller\n\t1e3a  7 Series/C216 Chipset Family MEI Controller #1\n\t\t1043 108d  VivoBook X202EV\n\t\t1043 1477  N56VZ\n\t\t1043 1517  Zenbook Prime UX31A\n\t\t1043 84ca  P8 series motherboard\n\t\t10cf 16ea  LIFEBOOK E752\n\t\t144d c652  NP300E5C series laptop\n\t\t1734 11d6  B75 [Ivy Bridge] chipset on Esprimo P510 D3171 motherboard\n\t\t1849 1e3a  Motherboard\n\t1e3b  7 Series/C210 Series Chipset Family MEI Controller #2\n\t1e3c  7 Series/C210 Series Chipset Family IDE-r Controller\n\t1e3d  7 Series/C210 Series Chipset Family KT Controller\n\t1e41  7 Series Chipset Family LPC Controller\n\t1e42  7 Series Chipset Family LPC Controller\n\t1e43  7 Series Chipset Family LPC Controller\n\t1e44  Z77 Express Chipset LPC Controller\n\t\t1043 84ca  P8 series motherboard\n\t\t1849 1e44  Motherboard\n\t1e45  7 Series Chipset Family LPC Controller\n\t1e46  Z75 Express Chipset LPC Controller\n\t1e47  Q77 Express Chipset LPC Controller\n\t1e48  Q75 Express Chipset LPC Controller\n\t1e49  B75 Express Chipset LPC Controller\n\t\t1734 11d6  Esprimo P510 D3171 motherboard\n\t1e4a  H77 Express Chipset LPC Controller\n\t\t1043 84ca  P8H77-I Motherboard\n\t1e4b  7 Series Chipset Family LPC Controller\n\t1e4c  7 Series Chipset Family LPC Controller\n\t1e4d  7 Series Chipset Family LPC Controller\n\t1e4e  7 Series Chipset Family LPC Controller\n\t1e4f  7 Series Chipset Family LPC Controller\n\t1e50  7 Series Chipset Family LPC Controller\n\t1e51  7 Series Chipset Family LPC Controller\n\t1e52  7 Series Chipset Family LPC Controller\n\t1e53  C216 Series Chipset LPC Controller\n\t1e54  7 Series Chipset Family LPC Controller\n\t1e55  QM77 Express Chipset LPC Controller\n\t1e56  QS77 Express Chipset LPC Controller\n\t1e57  HM77 Express Chipset LPC Controller\n\t1e58  UM77 Express Chipset LPC Controller\n\t1e59  HM76 Express Chipset LPC Controller\n\t\t1043 1477  N56VZ\n\t\t1043 1517  Zenbook Prime UX31A\n\t\t10cf 16e0  LIFEBOOK E752\n\t1e5a  7 Series Chipset Family LPC Controller\n\t1e5b  UM77 Express Chipset LPC Controller\n\t1e5c  7 Series Chipset Family LPC Controller\n\t1e5d  HM75 Express Chipset LPC Controller\n\t\t144d c652  NP300E5C series laptop\n\t1e5e  HM70 Express Chipset LPC Controller\n\t\t1043 108d  VivoBook X202EV\n\t1e5f  NM70 Express Chipset LPC Controller\n\t1f00  Atom processor C2000 SoC Transaction Router\n\t1f01  Atom processor C2000 SoC Transaction Router\n\t1f02  Atom processor C2000 SoC Transaction Router\n\t1f03  Atom processor C2000 SoC Transaction Router\n\t1f04  Atom processor C2000 SoC Transaction Router\n\t1f05  Atom processor C2000 SoC Transaction Router\n\t1f06  Atom processor C2000 SoC Transaction Router\n\t1f07  Atom processor C2000 SoC Transaction Router\n\t1f08  Atom processor C2000 SoC Transaction Router\n\t1f09  Atom processor C2000 SoC Transaction Router\n\t1f0a  Atom processor C2000 SoC Transaction Router\n\t1f0b  Atom processor C2000 SoC Transaction Router\n\t1f0c  Atom processor C2000 SoC Transaction Router\n\t1f0d  Atom processor C2000 SoC Transaction Router\n\t1f0e  Atom processor C2000 SoC Transaction Router\n\t1f0f  Atom processor C2000 SoC Transaction Router\n\t1f10  Atom processor C2000 PCIe Root Port 1\n\t1f11  Atom processor C2000 PCIe Root Port 2\n\t1f12  Atom processor C2000 PCIe Root Port 3\n\t1f13  Atom processor C2000 PCIe Root Port 4\n\t1f14  Atom processor C2000 RAS\n\t1f15  Atom processor C2000 SMBus 2.0\n\t1f16  Atom processor C2000 RCEC\n\t1f18  Atom processor C2000 QAT\n\t1f19  Atom processor C2000 QAT\n\t1f20  Atom processor C2000 4-Port IDE SATA2 Controller\n\t1f21  Atom processor C2000 4-Port IDE SATA2 Controller\n\t1f22  Atom processor C2000 AHCI SATA2 Controller\n\t1f23  Atom processor C2000 AHCI SATA2 Controller\n\t1f24  Atom processor C2000 RAID SATA2 Controller\n\t1f25  Atom processor C2000 RAID SATA2 Controller\n\t1f26  Atom processor C2000 RAID SATA2 Controller\n\t1f27  Atom processor C2000 RAID SATA2 Controller\n\t1f2c  Atom processor C2000 USB Enhanced Host Controller\n\t\t0200 1028  Atom C2338 on Dell 0K8Y0N motherboard\n\t1f2e  Atom processor C2000 RAID SATA2 Controller\n\t1f2f  Atom processor C2000 RAID SATA2 Controller\n\t1f30  Atom processor C2000 2-Port IDE SATA3 Controller\n\t1f31  Atom processor C2000 2-Port IDE SATA3 Controller\n\t1f32  Atom processor C2000 AHCI SATA3 Controller\n\t1f33  Atom processor C2000 AHCI SATA3 Controller\n\t1f34  Atom processor C2000 RAID SATA3 Controller\n\t1f35  Atom processor C2000 RAID SATA3 Controller\n\t1f36  Atom processor C2000 RAID SATA3 Controller\n\t1f37  Atom processor C2000 RAID SATA3 Controller\n\t1f38  Atom processor C2000 PCU\n\t1f39  Atom processor C2000 PCU\n\t1f3a  Atom processor C2000 PCU\n\t1f3b  Atom processor C2000 PCU\n\t1f3c  Atom processor C2000 PCU SMBus\n\t1f3d  Atom Processor C2000 PECI SMBus\n\t1f3e  Atom processor C2000 RAID SATA3 Controller\n\t1f3f  Atom processor C2000 RAID SATA3 Controller\n\t1f40  Ethernet Connection I354 1.0 GbE Backplane\n\t\t1028 05f1  Ethernet Connection I354 1.0 GbE Backplane\n\t1f41  Ethernet Connection I354\n\t1f42  Atom processor C2000 GbE\n\t1f44  Atom processor C2000 GbE Virtual Function\n\t1f45  Ethernet Connection I354 2.5 GbE Backplane\n\t2014  Sky Lake-E Ubox Registers\n\t2015  Sky Lake-E Ubox Registers\n\t2016  Sky Lake-E Ubox Registers\n\t2018  Sky Lake-E M2PCI Registers\n\t201a  Sky Lake-E Non-Transparent Bridge Registers\n\t201c  Sky Lake-E Non-Transparent Bridge Registers\n\t201d  Volume Management Device NVMe RAID Controller\n\t2020  Sky Lake-E DMI3 Registers\n\t\t15d9 095d  X11SPM-TF\n\t2021  Sky Lake-E CBDMA Registers\n\t2024  Sky Lake-E MM/Vt-d Configuration Registers\n\t2025  Sky Lake-E RAS\n\t2026  Sky Lake-E IOAPIC\n\t2030  Sky Lake-E PCI Express Root Port A\n\t2031  Sky Lake-E PCI Express Root Port B\n\t2032  Sky Lake-E PCI Express Root Port C\n\t2033  Sky Lake-E PCI Express Root Port D\n\t2034  Sky Lake-E VT-d\n\t2035  Sky Lake-E RAS Configuration Registers\n\t2036  Sky Lake-E IOxAPIC Configuration Registers\n\t2040  Sky Lake-E Integrated Memory Controller\n\t2041  Sky Lake-E Integrated Memory Controller\n\t2042  Sky Lake-E Integrated Memory Controller\n\t2043  Sky Lake-E Integrated Memory Controller\n\t2044  Sky Lake-E Integrated Memory Controller\n\t2045  Sky Lake-E LM Channel 1\n\t2046  Sky Lake-E LMS Channel 1\n\t2047  Sky Lake-E LMDP Channel 1\n\t2048  Sky Lake-E DECS Channel 2\n\t2049  Sky Lake-E LM Channel 2\n\t204a  Sky Lake-E LMS Channel 2\n\t204b  Sky Lake-E LMDP Channel 2\n\t204c  Sky Lake-E M3KTI Registers\n\t204d  Sky Lake-E M3KTI Registers\n\t204e  Sky Lake-E M3KTI Registers\n\t2054  Sky Lake-E CHA Registers\n\t2055  Sky Lake-E CHA Registers\n\t2056  Sky Lake-E CHA Registers\n\t2057  Sky Lake-E CHA Registers\n\t2058  Sky Lake-E KTI 0\n\t2059  Sky Lake-E UPI Registers\n\t2066  Sky Lake-E Integrated Memory Controller\n\t2068  Sky Lake-E DDRIO Registers\n\t2069  Sky Lake-E DDRIO Registers\n\t206a  Sky Lake-E IOxAPIC Configuration Registers\n\t206e  Sky Lake-E DDRIO Registers\n\t206f  Sky Lake-E DDRIO Registers\n\t2078  Sky Lake-E PCU Registers\n\t207a  Sky Lake-E PCU Registers\n\t2080  Sky Lake-E PCU Registers\n\t2081  Sky Lake-E PCU Registers\n\t2082  Sky Lake-E PCU Registers\n\t2083  Sky Lake-E PCU Registers\n\t2084  Sky Lake-E PCU Registers\n\t2085  Sky Lake-E PCU Registers\n\t2086  Sky Lake-E PCU Registers\n\t2088  Sky Lake-E DDRIO Registers\n\t208d  Sky Lake-E CHA Registers\n\t208e  Sky Lake-E CHA Registers\n# Engineering sample GPU\n\t2240  Larrabee\n\t2241  Larrabee\n\t2250  Xeon Phi coprocessor 5100 series\n\t225c  Xeon Phi coprocessor SE10/7120 series\n\t225d  Xeon Phi coprocessor 3120 series\n\t225e  Xeon Phi coprocessor 31S1\n\t2262  Xeon Phi coprocessor 7220\n\t2280  Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series SoC Transaction Register\n\t2284  Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series High Definition Audio Controller\n\t2286  Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series LPIO1 DMA Controller\n\t228a  Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series LPIO1 HSUART Controller #1\n\t228c  Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series LPIO1 HSUART Controller #2\n\t2292  Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx SMBus Controller\n\t2294  Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series MMC Controller\n\t2295  Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series SDIO Controller\n\t2296  Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series SD Controller\n\t2298  Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series Trusted Execution Engine\n\t229c  Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series PCU\n\t22a3  Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series SATA Controller\n\t22a4  Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series SATA AHCI Controller\n\t22a8  Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series Low Power Engine Audio\n\t22b0  Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Integrated Graphics Controller\n\t22b1  Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Integrated Graphics Controller\n\t22b5  Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series USB xHCI Controller\n\t22b8  Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series Imaging Unit\n\t22c0  Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series LPIO2 DMA Controller\n\t22c1  Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series LPIO2 I2C Controller #1\n\t22c2  Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series LPIO2 I2C Controller #2\n\t22c3  Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series LPIO2 I2C Controller #3\n\t22c4  Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series LPIO2 I2C Controller #4\n\t22c5  Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series LPIO2 I2C Controller #5\n\t22c6  Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series LPIO2 I2C Controller #6\n\t22c7  Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series LPIO2 I2C Controller #7\n\t22c8  Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series PCI Express Port #1\n\t22ca  Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series PCI Express Port #2\n\t22cc  Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series PCI Express Port #3\n\t22ce  Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series PCI Express Port #4\n\t22dc  Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series Power Management Controller\n\t2310  DH89xxCC LPC Controller\n\t2323  DH89xxCC 4 Port SATA AHCI Controller\n\t2330  DH89xxCC SMBus Controller\n\t2331  DH89xxCC Chap Counter\n\t2332  DH89xxCC Thermal Subsystem\n\t2334  DH89xxCC USB2 Enhanced Host Controller #1\n\t2335  DH89xxCC USB2 Enhanced Host Controller #1\n\t2342  DH89xxCC PCI Express Root Port #1\n\t2343  DH89xxCC PCI Express Root Port #1\n\t2344  DH89xxCC PCI Express Root Port #2\n\t2345  DH89xxCC PCI Express Root Port #2\n\t2346  DH89xxCC PCI Express Root Port #3\n\t2347  DH89xxCC PCI Express Root Port #3\n\t2348  DH89xxCC PCI Express Root Port #4\n\t2349  DH89xxCC PCI Express Root Port #4\n\t2360  DH89xxCC Watchdog Timer\n\t2364  DH89xxCC MEI 0\n\t2365  DH89xxCC MEI 1\n\t2390  DH895XCC Series LPC Controller\n\t23a1  DH895XCC Series 2-Port SATA Controller [IDE Mode]\n\t23a3  DH895XCC Series 4-Port SATA Controller [AHCI Mode]\n\t23a6  DH895XCC Series 2-Port SATA Controller [IDE Mode]\n\t23b0  DH895XCC Series SMBus Controller\n\t23b1  DH895XCC Series CHAP Counter\n\t23b2  DH895XCC Series Thermal Management Controller\n\t23b4  DH895XCC Series USB2 Enhanced Host Controller #1\n\t23b5  DH895XCC Series USB2 Enhanced Host Controller #1\n\t23c2  DH895XCC Series PCI Express Root Port #1\n\t23c3  DH895XCC Series PCI Express Root Port #1\n\t23c4  DH895XCC Series PCI Express Root Port #2\n\t23c5  DH895XCC Series PCI Express Root Port #2\n\t23c6  CDH895XCC Series PCI Express Root Port #3\n\t23c7  DH895XCC Series PCI Express Root Port #3\n\t23c8  DH895XCC Series PCI Express Root Port #4\n\t23c9  DH895XCC Series PCI Express Root Port #4\n\t23e0  DH895XCC Series Watchdog Timer\n\t23e4  DH895XCC Series MEI Controller #1\n\t23e5  DH895XCC Series MEI Controller #2\n\t2410  82801AA ISA Bridge (LPC)\n\t2411  82801AA IDE Controller\n\t2412  82801AA USB Controller\n\t2413  82801AA SMBus Controller\n\t2415  82801AA AC'97 Audio Controller\n\t\t1028 0095  Precision Workstation 220 Integrated Digital Audio\n\t\t1028 00b4  OptiPlex GX110\n\t\t110a 0051  Activy 2xx\n\t\t11d4 0040  SoundMAX Integrated Digital Audio\n\t\t11d4 0048  SoundMAX Integrated Digital Audio\n\t\t11d4 5340  SoundMAX Integrated Digital Audio\n\t\t1734 1025  Activy 3xx\n\t\t1af4 1100  QEMU Virtual Machine\n\t2416  82801AA AC'97 Modem Controller\n\t2418  82801AA PCI Bridge\n\t2420  82801AB ISA Bridge (LPC)\n\t2421  82801AB IDE Controller\n\t2422  82801AB USB Controller\n\t2423  82801AB SMBus Controller\n\t2425  82801AB AC'97 Audio Controller\n\t\t11d4 0040  SoundMAX Integrated Digital Audio\n\t\t11d4 0048  SoundMAX Integrated Digital Audio\n\t2426  82801AB AC'97 Modem Controller\n\t2428  82801AB PCI Bridge\n\t2440  82801BA ISA Bridge (LPC)\n\t\t8086 5744  S845WD1-E\n\t2442  82801BA/BAM UHCI USB 1.1 Controller #1\n\t\t1014 01c6  Netvista A40/A40p\n\t\t1025 1016  Travelmate 612 TX\n\t\t1028 00c7  Dimension 8100\n\t\t1028 00d8  Precision 530\n\t\t1028 010e  Optiplex GX240\n\t\t103c 126f  e-pc 40\n\t\t1043 8027  CUSL2-C/TUSL2-C Mainboard\n\t\t104d 80df  Vaio PCG-FX403\n\t\t147b 0505  BL7 motherboard\n\t\t147b 0507  TH7II-RAID\n\t\t8086 4532  Desktop Board D815EEA2/D815EFV\n\t\t8086 4557  D815EGEW Mainboard\n\t\t8086 4d44  D850EMV2 motherboard\n\t\t8086 5744  S845WD1-E mainboard\n\t2443  82801BA/BAM SMBus Controller\n\t\t1014 01c6  Netvista A40/A40p\n\t\t1025 1016  Travelmate 612 TX\n\t\t1028 00c7  Dimension 8100\n\t\t1028 00d8  Precision 530\n\t\t1028 010e  Optiplex GX240\n\t\t103c 126f  e-pc 40\n\t\t1043 8027  CUSL2-C/TUSL2-C Mainboard\n\t\t104d 80df  Vaio PCG-FX403\n\t\t147b 0505  BL7 motherboard\n\t\t147b 0507  TH7II-RAID\n\t\t15d9 3280  Supermicro P4SBE Mainboard\n\t\t8086 4532  Desktop Board D815EEA2/D815EFV\n\t\t8086 4557  D815EGEW Mainboard\n\t\t8086 5744  S845WD1-E mainboard\n\t2444  82801BA/BAM UHCI USB 1.1 Controller #2\n\t\t1025 1016  Travelmate 612 TX\n\t\t1028 00c7  Dimension 8100\n\t\t1028 00d8  Precision 530\n\t\t1028 010e  Optiplex GX240\n\t\t103c 126f  e-pc 40\n\t\t1043 8027  CUSL2-C/TUSL2-C Mainboard\n\t\t104d 80df  Vaio PCG-FX403\n\t\t147b 0505  BL7 motherboard\n\t\t147b 0507  TH7II-RAID\n\t\t8086 4532  Desktop Board D815EEA2/D815EFV\n\t\t8086 5744  S845WD1-E mainboard\n\t2445  82801BA/BAM AC'97 Audio Controller\n\t\t0e11 000b  Compaq Deskpro EN Audio\n\t\t0e11 0088  Evo D500\n\t\t1014 01c6  Netvista A40/A40p\n\t\t1025 1016  Travelmate 612 TX\n\t\t1028 00d8  Precision 530\n\t\t103c 126f  e-pc 40\n\t\t104d 80df  Vaio PCG-FX403\n\t\t11d4 5340  AD1885 AC97 codec\n\t\t1462 3370  STAC9721 AC\n\t\t147b 0505  BL7 motherboard\n\t\t147b 0507  TH7II-RAID\n\t\t8086 4557  D815EGEW Mainboard\n\t\t8086 4656  Desktop Board D815EFV\n\t\t8086 4d44  D850EMV2 motherboard\n\t2446  82801BA/BAM AC'97 Modem Controller\n\t\t1025 1016  Travelmate 612 TX\n\t\t104d 80df  Vaio PCG-FX403\n\t2448  82801 Mobile PCI Bridge\n\t\t1028 040a  Latitude E6410\n\t\t1028 040b  Latitude E6510\n\t\t103c 0934  Compaq nw8240 Mobile Workstation\n\t\t103c 0944  Compaq nc6220 Notebook PC\n\t\t103c 099c  NX6110/NC6120\n\t\t103c 309f  Compaq nx9420 Notebook\n\t\t103c 30a3  Compaq nw8440\n\t\t103c 30c1  Compaq 6910p\n\t\t1043 1017  X58LE\n\t\t104d 902d  VAIO VGN-NR120E\n\t\t105b 0d7c  D270S/D250S Motherboard\n\t\t1071 8209  Medion MIM 2240 Notebook PC [MD98100]\n\t\t144d c00c  P30 notebook\n\t\t144d c06a  R730 Laptop\n\t\t144d c072  Notebook N150P\n\t\t1458 5000  GA-D525TUD\n\t\t1734 1055  Amilo M1420\n\t\t17aa 2013  ThinkPad R60e\n\t\t17aa 20ae  ThinkPad T61/R61\n\t\t17aa 20f4  ThinkPad T400\n\t\t17c0 10d2  Medion Akoya E7214 Notebook PC [MD98410]\n\t\t17c0 4083  Medion WIM 2210 Notebook PC [MD96850]\n\t\t8086 544b  Desktop Board D425KT\n\t\te4bf cc47  CCG-RUMBA\n\t2449  82801BA/BAM/CA/CAM Ethernet Controller\n\t\t0e11 0012  EtherExpress PRO/100 VM\n\t\t0e11 0091  EtherExpress PRO/100 VE\n\t\t1014 01ce  EtherExpress PRO/100 VE\n\t\t1014 01dc  EtherExpress PRO/100 VE\n\t\t1014 01eb  EtherExpress PRO/100 VE\n\t\t1014 01ec  EtherExpress PRO/100 VE\n\t\t1014 0202  EtherExpress PRO/100 VE\n\t\t1014 0205  EtherExpress PRO/100 VE\n\t\t1014 0217  EtherExpress PRO/100 VE\n\t\t1014 0234  EtherExpress PRO/100 VE\n\t\t1014 023d  EtherExpress PRO/100 VE\n\t\t1014 0244  EtherExpress PRO/100 VE\n\t\t1014 0245  EtherExpress PRO/100 VE\n\t\t1014 0265  PRO/100 VE Desktop Connection\n\t\t1014 0267  PRO/100 VE Desktop Connection\n\t\t1014 026a  PRO/100 VE Desktop Connection\n\t\t109f 315d  EtherExpress PRO/100 VE\n\t\t109f 3181  EtherExpress PRO/100 VE\n\t\t1179 ff01  PRO/100 VE Network Connection\n\t\t1186 7801  EtherExpress PRO/100 VE\n\t\t144d 2602  HomePNA 1M CNR\n\t\t1af4 1100  QEMU Virtual Machine\n\t\t8086 3010  EtherExpress PRO/100 VE\n\t\t8086 3011  EtherExpress PRO/100 VM\n\t\t8086 3012  82562EH based Phoneline\n\t\t8086 3013  EtherExpress PRO/100 VE\n\t\t8086 3014  EtherExpress PRO/100 VM\n\t\t8086 3015  82562EH based Phoneline\n\t\t8086 3016  EtherExpress PRO/100 P Mobile Combo\n\t\t8086 3017  EtherExpress PRO/100 P Mobile\n\t\t8086 3018  EtherExpress PRO/100\n\t244a  82801BAM IDE U100 Controller\n\t\t1025 1016  Travelmate 612TX\n\t\t104d 80df  Vaio PCG-FX403\n\t244b  82801BA IDE U100 Controller\n\t\t1014 01c6  Netvista A40/A40p\n\t\t1028 00c7  Dimension 8100\n\t\t1028 00d8  Precision 530\n\t\t1028 010e  Optiplex GX240\n\t\t103c 126f  e-pc 40\n\t\t1043 8027  CUSL2-C/TUSL2-C Mainboard\n\t\t147b 0505  BL7 motherboard\n\t\t147b 0507  TH7II-RAID\n\t\t15d9 3280  Supermicro P4SBE Mainboard\n\t\t8086 4532  Desktop Board D815EEA2/D815EFV\n\t\t8086 4557  D815EGEW Mainboard\n\t\t8086 4d44  D850EMV2 motherboard\n\t\t8086 5744  S845WD1-E mainboard\n\t244c  82801BAM ISA Bridge (LPC)\n\t244e  82801 PCI Bridge\n\t\t1014 0267  NetVista A30p\n\t\t1028 020d  Inspiron 530\n\t\t1028 0211  Optiplex 755\n\t\t1028 02da  OptiPlex 980\n\t\t1028 04f7  PowerEdge R320 server\n\t\t103c 130a  Z600 Workstation\n\t\t103c 2a3b  Pavilion A1512X\n\t\t103c 2a6f  Asus IPIBL-LB Motherboard\n\t\t103c 31fe  ProLiant DL140 G3\n\t\t103c 330b  ProLiant ML150 G6 Server\n\t\t1043 81ec  P5B Motherboard\n# same ID possibly also on other ASUS boards\n\t\t1043 8277  P5K PRO Motherboard\n\t\t1043 844d  P8 series motherboard\n\t\t1043 8534  ASUS B85-PLUS\n\t\t1458 5000  Motherboard\n\t\t1462 7345  MS-7345 Motherboard: Intel 82801I/IR [ICH9/ICH9R]\n\t\t1462 7418  Wind PC MS-7418\n\t\t15d9 060d  C7SIM-Q Motherboard\n\t\t15d9 9680  X7DBN Motherboard\n\t\t1734 11d6  B75 [Ivy Bridge] chipset on Esprimo P510 D3171 motherboard\n\t\t1775 11cc  CC11/CL11\n\t\t17aa 3070  ThinkCentre M91p\n\t\t8086 7270  Server Board S1200BTS\n\t2450  82801E ISA Bridge (LPC)\n\t2452  82801E USB Controller\n\t2453  82801E SMBus Controller\n\t2459  82801E Ethernet Controller 0\n\t245b  82801E IDE U100 Controller\n\t245d  82801E Ethernet Controller 1\n\t245e  82801E PCI Bridge\n\t2480  82801CA LPC Interface Controller\n\t2482  82801CA/CAM USB Controller #1\n\t\t0e11 0030  Evo N600c\n\t\t1014 0220  ThinkPad A/T/X Series\n\t\t104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP\n\t\t15d9 3480  P4DP6\n\t\t8086 1958  vpr Matrix 170B4\n\t\t8086 3424  SE7501HG2 Mainboard\n\t\t8086 4541  Latitude C640\n\t2483  82801CA/CAM SMBus Controller\n\t\t1014 0220  ThinkPad A/T/X Series\n\t\t104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP\n\t\t15d9 3480  P4DP6\n\t\t8086 1958  vpr Matrix 170B4\n\t2484  82801CA/CAM USB Controller #2\n\t\t0e11 0030  Evo N600c\n\t\t1014 0220  ThinkPad A/T/X Series\n\t\t104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP\n\t\t15d9 3480  P4DP6\n\t\t8086 1958  vpr Matrix 170B4\n\t2485  82801CA/CAM AC'97 Audio Controller\n\t\t1013 5959  Crystal WMD Audio Codec\n\t\t1014 0222  ThinkPad A30/A30p/T23\n\t\t1014 0508  ThinkPad T30\n\t\t1014 051c  ThinkPad A/T/X Series\n\t\t1043 1583  L3C (SPDIF)\n\t\t1043 1623  L2B (no SPDIF)\n\t\t1043 1643  L3F\n\t\t104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP\n\t\t144d c006  vpr Matrix 170B4\n\t2486  82801CA/CAM AC'97 Modem Controller\n\t\t1014 0223  ThinkPad A/T/X Series\n\t\t1014 0503  ThinkPad R31\n\t\t1014 051a  ThinkPad A/T/X Series\n\t\t101f 1025  620 Series\n\t\t1043 1496  PCtel HSP56 MR\n\t\t104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP\n\t\t134d 4c21  Dell Inspiron 2100 internal modem\n\t\t144d 2115  vpr Matrix 170B4 internal modem\n\t\t14f1 5421  MD56ORD V.92 MDC Modem\n\t2487  82801CA/CAM USB Controller #3\n\t\t0e11 0030  Evo N600c\n\t\t1014 0220  ThinkPad A/T/X Series\n\t\t104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP\n\t\t15d9 3480  P4DP6\n\t\t8086 1958  vpr Matrix 170B4\n\t248a  82801CAM IDE U100 Controller\n\t\t0e11 0030  Evo N600c\n\t\t1014 0220  ThinkPad A/T/X Series\n\t\t104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP\n\t\t8086 1958  vpr Matrix 170B4\n\t\t8086 4541  Latitude C640\n\t248b  82801CA Ultra ATA Storage Controller\n\t\t15d9 3480  P4DP6\n\t248c  82801CAM ISA Bridge (LPC)\n\t24c0  82801DB/DBL (ICH4/ICH4-L) LPC Interface Bridge\n\t\t1014 0267  NetVista A30p\n\t\t1462 5800  845PE Max (MS-6580)\n\t24c1  82801DBL (ICH4-L) IDE Controller\n\t24c2  82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1\n\t\t1014 0267  NetVista A30p\n\t\t1014 052d  ThinkPad\n\t\t1025 005a  TravelMate 290\n\t\t1025 0064  Extensa 3000 series laptop: Intel 82801DBM (ICH4-M)\n\t\t1028 0126  Optiplex GX260\n\t\t1028 0160  Dimension 2400\n\t\t1028 0163  Latitude D505\n\t\t1028 018d  Inspiron 700m/710m\n\t\t1028 0196  Inspiron 5160\n\t\t103c 088c  NC8000 laptop\n\t\t103c 0890  NC6000 laptop\n\t\t103c 08b0  tc1100 tablet\n\t\t1043 8089  P4B533\n\t\t1071 8160  MIM2000\n\t\t114a 0582  PC8 onboard USB 1.x\n\t\t144d c005  X10 Laptop\n\t\t144d c00c  P30/P35 notebook\n\t\t1462 5800  845PE Max (MS-6580)\n\t\t1509 2990  Averatec 5110H laptop\n\t\t1734 1004  D1451 Mainboard (SCENIC N300, i845GV)\n\t\t1734 1055  Amilo M1420\n\t\t4c53 1090  Cx9 / Vx9 mainboard\n\t\t8086 24c2  Latitude X300\n\t\t8086 4541  Latitude D400/D500\n\t\te4bf 0cc9  CC9-SAMBA\n\t\te4bf 0cd2  CD2-BEBOP\n\t24c3  82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller\n\t\t1014 0267  NetVista A30p\n\t\t1014 052d  ThinkPad\n\t\t1025 005a  TravelMate 290\n\t\t1025 0064  Extensa 3000 series laptop: Intel 82801DBM (ICH4-M)\n\t\t1028 0126  Optiplex GX260\n\t\t1028 014f  Latitude X300\n\t\t1028 0160  Dimension 2400\n\t\t1028 018d  Inspiron 700m/710m\n\t\t103c 088c  NC8000 laptop\n\t\t103c 0890  NC6000 laptop\n\t\t103c 08b0  tc1100 tablet\n\t\t1071 8160  MIM2000\n\t\t114a 0582  PC8 onboard SMbus\n\t\t144d c005  X10 Laptop\n\t\t144d c00c  P30/P35 notebook\n\t\t1458 24c2  GA-8PE667 Ultra\n\t\t1462 5800  845PE Max (MS-6580)\n\t\t1734 1004  D1451 Mainboard (SCENIC N300, i845GV)\n\t\t1734 1055  Amilo M1420\n\t\t4c53 1090  Cx9 / Vx9 mainboard\n\t\te4bf 0cc9  CC9-SAMBA\n\t\te4bf 0cd2  CD2-BEBOP\n\t24c4  82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2\n\t\t1014 0267  NetVista A30p\n\t\t1014 052d  ThinkPad\n\t\t1025 005a  TravelMate 290\n\t\t1025 0064  Extensa 3000 series laptop: Intel 82801DBM (ICH4-M)\n\t\t1028 0126  Optiplex GX260\n\t\t1028 0160  Dimension 2400\n\t\t1028 0163  Latitude D505\n\t\t1028 018d  Inspiron 700m/710m\n\t\t1028 0196  Inspiron 5160\n\t\t103c 088c  NC8000 laptop\n\t\t103c 0890  NC6000 laptop\n\t\t103c 08b0  tc1100 tablet\n\t\t1043 8089  P4B533\n\t\t1071 8160  MIM2000\n\t\t144d c00c  P30/P35 notebook\n\t\t1462 5800  845PE Max (MS-6580)\n\t\t1509 2990  Averatec 5110H\n\t\t1734 1004  D1451 Mainboard (SCENIC N300, i845GV)\n\t\t4c53 1090  Cx9 / Vx9 mainboard\n\t\t8086 24c2  Latitude X300\n\t\t8086 4541  Latitude D400/D500\n\t\te4bf 0cc9  CC9-SAMBA\n\t\te4bf 0cd2  CD2-BEBOP\n\t24c5  82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller\n\t\t0e11 00b8  Analog Devices Inc. codec [SoundMAX]\n\t\t1014 0267  NetVista A30p\n\t\t1014 0537  ThinkPad T4x Series\n\t\t1014 055f  Thinkpad R50e model 1634\n\t\t1025 005a  TravelMate 290\n\t\t1025 0064  Extensa 3000 series laptop: Intel 82801DBM (ICH4-M)\n\t\t1028 0139  Latitude D400\n\t\t1028 014f  Latitude X300\n\t\t1028 0152  Latitude D500\n\t\t1028 0160  Dimension 2400\n\t\t1028 0163  Latitude D505\n\t\t1028 018d  Inspiron 700m/710m [SigmaTel STAC9750,51]\n\t\t1028 0196  Inspiron 5160\n\t\t103c 088c  NC8000 laptop\n\t\t103c 0890  NC6000 laptop\n\t\t103c 08b0  tc1100 tablet\n\t\t1043 1713  M2400N/M6800N laptop\n\t\t1043 80b0  P4B533\n\t\t1071 8160  MIM2000\n\t\t1179 0201  Toshiba Tecra M1\n\t\t144d c005  X10 Laptop\n\t\t144d c00c  P30/P35 notebook\n\t\t1458 a002  GA-8PE667 Ultra\n\t\t1462 5800  845PE Max (MS-6580)\n\t\t1734 1005  D1451 (SCENIC N300, i845GV) Sigmatel STAC9750T\n\t\t1734 1055  Amilo M1420\n\t24c6  82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller\n\t\t1014 0524  ThinkPad T4x Series\n\t\t1014 0525  ThinkPad\n\t\t1014 0559  ThinkPad R50e\n\t\t1025 003c  Aspire 2001WLCi (Compal CL50 motherboard) implementation\n\t\t1025 005a  TravelMate 290\n\t\t1025 0064  Extensa 3000 series laptop: Intel 82801DBM (ICH4-M)\n\t\t1028 0196  Inspiron 5160\n\t\t103c 088c  NC8000 laptop\n\t\t103c 0890  NC6000 laptop\n\t\t103c 08b0  tc1100 tablet\n\t\t1043 1716  M2400N laptop\n\t\t1043 1826  M6800N\n\t\t1071 8160  MIM2000\n\t\t134d 4c21  Latitude D500\n\t\t144d 2115  X10 Laptop\n\t\t144d c00c  P30/P35 notebook\n# Conexant HSF Softmodem (CXT22)\n\t\t14f1 5422  D480 MDC V.9x Modem\n\t24c7  82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3\n\t\t1014 0267  NetVista A30p\n\t\t1014 052d  ThinkPad\n\t\t1025 005a  TravelMate 290\n\t\t1025 0064  Extensa 3000 series laptop: Intel 82801DBM (ICH4-M)\n\t\t1028 0126  Optiplex GX260\n\t\t1028 0160  Dimension 2400\n\t\t1028 0163  Latitude D505\n\t\t1028 018d  Inspiron 700m/710m\n\t\t1028 0196  Inspiron 5160\n\t\t103c 088c  NC8000 laptop\n\t\t103c 0890  NC6000 laptop\n\t\t103c 08b0  tc1100 tablet\n\t\t1043 8089  P4B533\n\t\t1071 8160  MIM2000\n\t\t144d c00c  P30/P35 notebook\n\t\t1462 5800  845PE Max (MS-6580)\n\t\t1509 2990  Averatec 5110H\n\t\t1734 1004  D1451 Mainboard (SCENIC N300, i845GV)\n\t\t4c53 1090  Cx9 / Vx9 mainboard\n\t\t8086 24c2  Latitude X300\n\t\t8086 4541  Latitude D400/D500\n\t\te4bf 0cc9  CC9-SAMBA\n\t\te4bf 0cd2  CD2-BEBOP\n\t24ca  82801DBM (ICH4-M) IDE Controller\n\t\t1014 052d  ThinkPad\n\t\t1025 005a  TravelMate 290\n\t\t1025 0064  Extensa 3000 series laptop: Intel 82801DBM (ICH4-M)\n\t\t1028 014f  Latitude X300\n\t\t1028 0163  Latitude D505\n\t\t1028 018d  Inspiron 700m/710m\n\t\t1028 0196  Inspiron 5160\n\t\t103c 088c  NC8000 laptop\n\t\t103c 0890  NC6000 laptop\n\t\t103c 08b0  tc1100 tablet\n\t\t1071 8160  MIM2000\n\t\t144d c005  X10 Laptop\n\t\t144d c00c  P30/P35 notebook\n\t\t1734 1055  Amilo M1420\n\t\t8086 4541  Latitude D400/D500\n\t24cb  82801DB (ICH4) IDE Controller\n\t\t1014 0267  NetVista A30p\n\t\t1028 0126  Optiplex GX260\n\t\t1028 0160  Dimension 2400\n\t\t1043 8089  P4B533\n\t\t114a 0582  PC8 onboard IDE\n\t\t1458 24c2  GA-8PE667 Ultra\n\t\t1462 5800  845PE Max (MS-6580)\n\t\t1734 1004  D1451 Mainboard (SCENIC N300, i845GV)\n\t\t4c53 1090  Cx9 / Vx9 mainboard\n\t\te4bf 0cc9  CC9-SAMBA\n\t\te4bf 0cd2  CD2-BEBOP\n\t24cc  82801DBM (ICH4-M) LPC Interface Bridge\n\t\t144d c00c  P30 notebook\n\t\t1734 1055  Amilo M1420\n\t24cd  82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller\n\t\t1014 0267  NetVista A30p\n\t\t1014 052e  ThinkPad\n\t\t1025 005a  TravelMate 290\n\t\t1025 0064  Extensa 3000 series laptop: Intel 82801DBM (ICH4-M)\n\t\t1028 011d  Latitude D600\n\t\t1028 0126  Optiplex GX260\n\t\t1028 0139  Latitude D400\n\t\t1028 0152  Latitude D500\n\t\t1028 0160  Dimension 2400\n\t\t1028 0163  Latitude D505\n\t\t1028 018d  Inspiron 700m/710m\n\t\t1028 0196  Inspiron 5160\n\t\t103c 088c  NC8000 laptop\n\t\t103c 0890  NC6000 laptop\n\t\t103c 08b0  tc1100 tablet\n\t\t1043 8089  P4B533\n\t\t1071 8160  MIM2000\n\t\t114a 0582  PC8 onboard USB 2.0\n\t\t1179 ff00  Satellite 2430\n\t\t144d c005  X10 Laptop\n\t\t144d c00c  P30/P35 notebook\n\t\t1462 3981  845PE Max (MS-6580)\n\t\t1509 1968  Averatec 5110H\n\t\t1734 1004  D1451 Mainboard (SCENIC N300, i845GV)\n\t\t1734 1055  Amilo M1420\n\t\t1af4 1100  QEMU Virtual Machine\n\t\t4c53 1090  Cx9 / Vx9 mainboard\n\t\t8086 24c2  Latitude X300\n\t\te4bf 0cc9  CC9-SAMBA\n\t\te4bf 0cd2  CD2-BEBOP\n\t24d0  82801EB/ER (ICH5/ICH5R) LPC Interface Bridge\n\t24d1  82801EB (ICH5) SATA Controller\n\t\t1028 0168  Precision Workstation 670 Mainboard\n\t\t1028 0169  Precision 470\n\t\t1028 019a  PowerEdge SC1425\n\t\t103c 12bc  d530 CMT (DG746A)\n\t\t103c 3208  ProLiant DL140 G2\n\t\t1043 80a6  P4P800 series motherboard\n\t\t1458 24d1  GA-8IPE1000 Pro2 motherboard (865PE)\n\t\t1462 7280  865PE Neo2 (MS-6728)\n\t\t1462 7650  Hetis 865GV-E (MS-7065)\n\t\t1565 5200  P4TSV Motherboard (865G)\n\t\t15d9 4580  P4SCE Mainboard\n\t\t8086 3427  S875WP1-E mainboard\n\t\t8086 4246  Desktop Board D865GBF\n\t\t8086 4c43  Desktop Board D865GLC\n\t\t8086 524c  D865PERL mainboard\n\t24d2  82801EB/ER (ICH5/ICH5R) USB UHCI Controller #1\n\t\t1014 0287  ThinkCentre S50\n\t\t1014 02dd  eServer xSeries server mainboard\n\t\t1014 02ed  eServer xSeries server mainboard\n\t\t1028 0168  Precision Workstation 670 Mainboard\n\t\t1028 0169  Precision 470\n\t\t1028 016c  PowerEdge 1850 onboard UHCI\n\t\t1028 016d  PowerEdge 2850 onboard UHCI\n\t\t1028 0170  PowerEdge 6850 onboard UHCI\n\t\t1028 0183  PowerEdge 1800\n\t\t1028 019a  PowerEdge SC1425\n\t\t103c 006a  NX9500\n\t\t103c 12bc  d530 CMT (DG746A)\n\t\t103c 3208  ProLiant DL140 G2\n\t\t1043 80a6  P4P800/P5P800 series motherboard\n\t\t1458 24d2  GA-8IPE1000/8KNXP motherboard\n\t\t1462 7280  865PE Neo2 (MS-6728)\n\t\t1565 3101  P4TSV Motherboard (865G)\n\t\t15d9 4580  P4SCE Mainboard\n\t\t1734 101c  PRIMERGY RX/TX series onboard UHCI\n\t\t8086 3427  S875WP1-E mainboard\n\t\t8086 4246  Desktop Board D865GBF\n\t\t8086 4c43  Desktop Board D865GLC\n\t\t8086 524c  D865PERL mainboard\n\t24d3  82801EB/ER (ICH5/ICH5R) SMBus Controller\n\t\t1014 0287  ThinkCentre S50\n\t\t1014 02dd  eServer xSeries server mainboard\n\t\t1014 02ed  eServer xSeries server mainboard\n\t\t1028 0156  Precision 360\n\t\t1028 0168  Precision Workstation 670 Mainboard\n\t\t1028 0169  Precision 470\n\t\t103c 12bc  d330 uT\n\t\t103c 3208  ProLiant DL140 G2\n\t\t1043 80a6  P4P800/P5P800 series motherboard\n\t\t1458 24d2  GA-8IPE1000 Pro2 motherboard (865PE)\n\t\t1462 7280  865PE Neo2 (MS-6728)\n\t\t1462 7650  Hetis 865GV-E (MS-7065)\n\t\t1565 3101  P4TSV Motherboard (865G)\n\t\t15d9 4580  P4SCE Mainboard\n\t\t1734 101c  PRIMERGY RX/TX S2 series SMBus\n\t\t8086 3427  S875WP1-E mainboard\n\t\t8086 4246  Desktop Board D865GBF\n\t\t8086 4c43  Desktop Board D865GLC\n\t\t8086 524c  D865PERL mainboard\n\t24d4  82801EB/ER (ICH5/ICH5R) USB UHCI Controller #2\n\t\t1014 0287  ThinkCentre S50\n\t\t1014 02dd  eServer xSeries server mainboard\n\t\t1014 02ed  eServer xSeries server mainboard\n\t\t1028 0168  Precision Workstation 670 Mainboard\n\t\t1028 0169  Precision 470\n\t\t1028 016c  PowerEdge 1850 onboard UHCI\n\t\t1028 016d  PowerEdge 2850 onboard UHCI\n\t\t1028 0170  PowerEdge 6850 onboard UHCI\n\t\t1028 0183  PowerEdge 1800\n\t\t1028 019a  PowerEdge SC1425\n\t\t103c 006a  NX9500\n\t\t103c 12bc  d530 CMT (DG746A)\n\t\t103c 3208  ProLiant DL140 G2\n\t\t1043 80a6  P4P800/P5P800 series motherboard\n\t\t1458 24d2  GA-8IPE1000 Pro2 motherboard (865PE)\n\t\t1462 7280  865PE Neo2 (MS-6728)\n\t\t1462 7650  Hetis 865GV-E (MS-7065)\n\t\t1565 3101  P4TSV Motherboard (865G)\n\t\t15d9 4580  P4SCE Mainboard\n\t\t1734 101c  PRIMERGY RX/TX S2 series onboard UHCI\n\t\t8086 3427  S875WP1-E mainboard\n\t\t8086 4246  Desktop Board D865GBF\n\t\t8086 4c43  Desktop Board D865GLC\n\t\t8086 524c  D865PERL mainboard\n\t24d5  82801EB/ER (ICH5/ICH5R) AC'97 Audio Controller\n\t\t100a 147b  Abit IS7-E motherboard\n\t\t1014 0287  ThinkCentre S50\n\t\t1028 0168  Precision Workstation 670 Mainboard\n\t\t1028 0169  Precision 470\n\t\t103c 006a  NX9500\n\t\t103c 12bc  d330 uT\n\t\t1043 80f3  P4P800 series motherboard\n\t\t1043 810f  P5P800-MX Mainboard\n\t\t1458 a002  GA-8IPE1000/8KNXP motherboard\n\t\t1462 0080  865PE Neo2-V (MS-6788) Mainboard\n\t\t1462 7280  865PE Neo2 (MS-6728)\n\t\t1462 7650  Hetis 865GV-E (MS-7065)\n\t\t8086 a000  D865PERL mainboard\n\t\t8086 e000  D865PERL mainboard\n\t\t8086 e001  Desktop Board D865GBF\n\t\t8086 e002  SoundMax Integrated Digital Audio\n\t24d6  82801EB/ER (ICH5/ICH5R) AC'97 Modem Controller\n\t\t103c 006a  NX9500\n\t24d7  82801EB/ER (ICH5/ICH5R) USB UHCI Controller #3\n\t\t1014 0287  ThinkCentre S50\n\t\t1014 02ed  xSeries server mainboard\n\t\t1028 0168  Precision Workstation 670 Mainboard\n\t\t1028 0169  Precision 470\n\t\t1028 016c  PowerEdge 1850 onboard UHCI\n\t\t1028 016d  PowerEdge 2850 onboard UHCI\n\t\t1028 0170  PowerEdge 6850 onboard UHCI\n\t\t1028 0183  PowerEdge 1800\n\t\t103c 006a  NX9500\n\t\t103c 12bc  d530 CMT (DG746A)\n\t\t1043 80a6  P4P800/P5P800 series motherboard\n\t\t1458 24d2  GA-8IPE1000 Pro2 motherboard (865PE)\n\t\t1462 7280  865PE Neo2 (MS-6728)\n\t\t1462 7650  Hetis 865GV-E (MS-7065)\n\t\t1565 3101  P4TSV Motherboard (865G)\n\t\t15d9 4580  P4SCE Mainboard\n\t\t1734 101c  PRIMERGY RX/TX S2 series onboard UHCI\n\t\t8086 3427  S875WP1-E mainboard\n\t\t8086 4246  Desktop Board D865GBF\n\t\t8086 4c43  Desktop Board D865GLC\n\t\t8086 524c  D865PERL mainboard\n\t24db  82801EB/ER (ICH5/ICH5R) IDE Controller\n\t\t1014 0287  ThinkCentre S50\n\t\t1014 02dd  eServer xSeries server mainboard\n\t\t1014 02ed  eServer xSeries server mainboard\n\t\t1028 0168  Precision Workstation 670 Mainboard\n\t\t1028 0169  Precision 470\n\t\t1028 016c  PowerEdge 1850 IDE Controller\n\t\t1028 016d  PowerEdge 2850 IDE Controller\n\t\t1028 0170  PowerEdge 6850 IDE Controller\n\t\t1028 019a  PowerEdge SC1425\n\t\t103c 006a  NX9500\n\t\t103c 12bc  d530 CMT (DG746A)\n\t\t1043 80a6  P4P800/P5P800 series motherboard\n\t\t1458 24d2  GA-8IPE1000 Pro2 motherboard (865PE)\n\t\t1462 7280  865PE Neo2 (MS-6728)\n\t\t1462 7580  MSI 875P\n\t\t1462 7650  Hetis 865GV-E (MS-7065)\n\t\t1565 3101  P4TSV Motherboard (865G)\n\t\t15d9 4580  P4SCE Mainboard\n\t\t1734 101c  PRIMERGY RX/TX S2 series onboard IDE\n\t\t8086 24db  P4C800 Mainboard\n\t\t8086 3427  S875WP1-E mainboard\n\t\t8086 4246  Desktop Board D865GBF\n\t\t8086 4c43  Desktop Board D865GLC\n\t\t8086 524c  D865PERL mainboard\n\t24dc  82801EB (ICH5) LPC Interface Bridge\n\t24dd  82801EB/ER (ICH5/ICH5R) USB2 EHCI Controller\n\t\t1014 0287  ThinkCentre S50\n\t\t1014 02dd  eServer xSeries server mainboard\n\t\t1014 02ed  eServer xSeries server mainboard\n\t\t1028 0168  Precision Workstation 670 Mainboard\n\t\t1028 0169  Precision 470\n\t\t1028 016c  PowerEdge 1850 onboard EHCI\n\t\t1028 016d  PowerEdge 2850 onboard EHCI\n\t\t1028 0170  PowerEdge 6850 onboard EHCI\n\t\t1028 0183  PowerEdge 1800\n\t\t1028 019a  PowerEdge SC1425\n\t\t103c 006a  NX9500\n\t\t103c 12bc  d530 CMT (DG746A)\n\t\t103c 3208  ProLiant DL140 G2\n\t\t1043 80a6  P4P800/P5P800 series motherboard\n\t\t1458 5006  GA-8IPE1000 Pro2 motherboard (865PE)\n\t\t1462 7280  865PE Neo2 (MS-6728)\n\t\t1462 7650  Hetis 865GV-E (MS-7065)\n\t\t8086 3427  S875WP1-E mainboard\n\t\t8086 4246  Desktop Board D865GBF\n\t\t8086 4c43  Desktop Board D865GLC\n\t\t8086 524c  D865PERL mainboard\n\t24de  82801EB/ER (ICH5/ICH5R) USB UHCI Controller #4\n\t\t1014 0287  ThinkCentre S50\n\t\t1014 02ed  xSeries server mainboard\n\t\t1028 0168  Precision Workstation 670 Mainboard\n\t\t1028 0169  Precision 470\n\t\t1043 80a6  P4P800/P5P800 series motherboard\n\t\t1458 24d2  GA-8IPE1000 Pro2 motherboard (865PE)\n\t\t1462 7280  865PE Neo2 (MS-6728)\n\t\t1462 7650  Hetis 865GV-E (MS-7065)\n\t\t1565 3101  P4TSV Motherboard (865G)\n\t\t15d9 4580  P4SCE Mainboard\n\t\t1734 101c  PRIMERGY RX/TX S2 series onboard UHCI\n\t\t8086 3427  S875WP1-E mainboard\n\t\t8086 4246  Desktop Board D865GBF\n\t\t8086 4c43  Desktop Board D865GLC\n\t\t8086 524c  D865PERL mainboard\n\t24df  82801ER (ICH5R) SATA Controller\n\t\t1028 0168  Precision Workstation 670 Mainboard\n\t24f0  Omni-Path HFI Silicon 100 Series [discrete]\n\t\t10a9 802e  Omni-path HFI 100 Series, 1-port A-board\n\t\t10a9 802f  Omni-path HFI 100 Series, 2-port A-board\n\t\t10a9 8030  Omni-path HFI 100 Series, 1-port B-board\n\t\t10a9 8031  Omni-path HFI 100 Series, 2-port B-board\n\t\t1590 00e7  100Gb 1-port OP101 QSFP28 x8 PCIe Gen3 with Intel Omni-Path Adapter\n\t\t1590 00e8  100Gb 1-port OP101 QSFP28 x16 PCIe Gen3 with Intel Omni-Path Adapter\n\t\t1590 021c  Apollo 100Gb 1-port Intel Omni-Path Architecture 860z Mezzanine FIO Adapter\n\t\t15d9 0934  Omni-Path HFI Adapter 100 Series, 1 Port, PCIe x16, SIOM Module\n\t\t15d9 099b  Omni-path HFI Mezz AOC, 1 Port, PCIe x16.\n\t\t1cb8 0001  Omni-Path HFI Adapter 100 Series, 1 Port, PCIe x16, TC4600 QSFP28\n\t\t1cb8 0002  Omni-Path HFI Adapter 100 Series, 1 Port, PCIe x16, TC6600 Fixed Port\n\t\t1cb8 0003  Omni-Path HFI Adapter 100 Series, 2 Port, 2 PCIe x16, Earth Simulation QSFP28\n\t\t1cb8 0004  Omni-Path HFI Adapter 100 Series, 1 Port, PCIe x16, TC4600E QSFP28\n\t\t434e 0001  Omni-Path HFI Adapter 100 Series, 1 Port, OCP 3.0\n\t\t434e 2628  Omni-Path HFI Adapter 100 Series, 1 Port, PCIe x16\n\t\t8086 2628  Omni-Path HFI Adapter 100 Series, 1 Port, PCIe x16\n\t\t8086 2629  Omni-Path HFI Adapter 100 Series, 1 Port, PCIe x8\n\t\t8086 262a  Omni-Path HFI Adapter 100 Series, 2 Ports, Split PCIe x16\n\t\t8086 262d  Omni-Path HFI Adapter 100 Series, 1 Port, PCIe x16, IO Module AHWKPTP100HF\n\t24f1  Omni-Path HFI Silicon 100 Series [integrated]\n\t24f3  Wireless 8260\n\t\t8086 0010  Dual Band Wireless-AC 8260 [Snow Field Peak AC]\n\t\t8086 1010  Dual Band Wireless-AC 8260\n\t24f4  Wireless 8260\n\t\t8086 0030  Dual Band Wireless-AC 8260 [Snow Field Peak AC]\n\t24fb  Dual Band Wireless-AC 3168NGW [Stone Peak]\n\t24fd  Wireless 8265 / 8275\n\t\t8086 0010  Dual Band Wireless-AC 8265 [Windstorm Peak]\n\t\t8086 0150  Dual Band Wireless-AC 8265\n\t\t8086 1010  Dual Band Wireless-AC 8265\n\t\t8086 1130  Dual Band Wireless-AC 8265\n\t2500  82820 820 (Camino) Chipset Host Bridge (MCH)\n\t\t1028 0095  Precision Workstation 220 Chipset\n\t\t1043 801c  P3C-2000 system chipset\n\t2501  82820 820 (Camino) Chipset Host Bridge (MCH)\n\t\t1043 801c  P3C-2000 system chipset\n\t250b  82820 820 (Camino) Chipset Host Bridge\n\t250f  82820 820 (Camino) Chipset AGP Bridge\n\t2520  82805AA MTH Memory Translator Hub\n\t2521  82804AA MRH-S Memory Repeater Hub for SDRAM\n\t2522  NVMe Optane Memory Series\n\t\t8086 3806  Optane Memory 16GB\n\t\t8086 3810  Optane Memory M10 16GB\n\t2525  Optane NVME SSD P1600X Series\n\t2526  Wi-Fi 5(802.11ac) Wireless-AC 9x6x [Thunder Peak]\n\t\t8086 0014  Dual Band Wi-Fi 5 Wireless-AC 9260 160MHz 2x2\n\t\t8086 0210  Dual Band Wi-Fi 5 Wireless-AC 9260 80MHz 2x2\n\t\t8086 0214  Dual Band Wi-Fi 5 Wireless-AC 9260 80MHz 2x2\n\t\t8086 0230  Dual Band Wi-Fi 5 Wireless-AC 9560 80MHz 2x2\n\t\t8086 0234  Dual Band Wi-Fi 5 Wireless-AC 9560 80MHz 2x2\n\t\t8086 0238  Dual Band Wi-Fi 5 Wireless-AC 9560 80MHz 2x2\n\t\t8086 023c  Dual Band Wi-Fi 5 Wireless-AC 9560 80MHz 2x2\n\t\t8086 0260  Dual Band Wi-Fi 5 Wireless-AC 9461 80MHz 1x1\n\t\t8086 0264  Dual Band Wi-Fi 5 Wireless-AC 9461 80MHz 1x1\n\t\t8086 02a0  Dual Band Wi-Fi 5 Wireless-AC 9462 80MHz 1x1\n\t\t8086 02a4  Dual Band Wi-Fi 5 Wireless-AC 9462 80MHz 1x1\n\t2530  82850 850 (Tehama) Chipset Host Bridge (MCH)\n\t\t1028 00c7  Dimension 8100\n\t\t147b 0507  TH7II-RAID\n\t2531  82860 860 (Wombat) Chipset Host Bridge (MCH)\n\t\t1028 00d8  Precision 530\n\t2532  82850 850 (Tehama) Chipset AGP Bridge\n\t2533  82860 860 (Wombat) Chipset AGP Bridge\n\t2534  82860 860 (Wombat) Chipset PCI Bridge\n\t2540  E7500 Memory Controller Hub\n\t\t15d9 3480  P4DP6\n\t2541  E7500/E7501 Host RASUM Controller\n\t\t15d9 3480  P4DP6\n\t\t4c53 1090  Cx9 / Vx9 mainboard\n\t\t8086 3424  SE7501HG2 Mainboard\n\t2543  E7500/E7501 Hub Interface B PCI-to-PCI Bridge\n\t2544  E7500/E7501 Hub Interface B RASUM Controller\n\t\t4c53 1090  Cx9 / Vx9 mainboard\n\t2545  E7500/E7501 Hub Interface C PCI-to-PCI Bridge\n\t2546  E7500/E7501 Hub Interface C RASUM Controller\n\t2547  E7500/E7501 Hub Interface D PCI-to-PCI Bridge\n\t2548  E7500/E7501 Hub Interface D RASUM Controller\n\t254c  E7501 Memory Controller Hub\n\t\t4c53 1090  Cx9 / Vx9 mainboard\n\t\t8086 3424  SE7501HG2 Mainboard\n\t2550  E7505 Memory Controller Hub\n\t2551  E7505/E7205 Series RAS Controller\n\t2552  E7505/E7205 PCI-to-AGP Bridge\n\t2553  E7505 Hub Interface B PCI-to-PCI Bridge\n\t2554  E7505 Hub Interface B PCI-to-PCI Bridge RAS Controller\n\t255d  E7205 Memory Controller Hub\n\t2560  82845G/GL[Brookdale-G]/GE/PE DRAM Controller/Host-Hub Interface\n\t\t1028 0126  Optiplex GX260\n\t\t1458 2560  GA-8PE667 Ultra\n\t\t1462 5800  845PE Max (MS-6580)\n\t2561  82845G/GL[Brookdale-G]/GE/PE Host-to-AGP Bridge\n\t2562  82845G/GL[Brookdale-G]/GE Chipset Integrated Graphics Device\n\t\t0e11 00b9  Evo D510 SFF\n\t\t1014 0267  NetVista A30p\n\t\t1028 0160  Dimension 2400\n\t\t1734 1003  D1521 Mainboard (Fujitsu-Siemens)\n\t\t1734 1004  D1451 Mainboard (SCENIC N300, i845GV)\n\t2570  82865G/PE/P DRAM Controller/Host-Hub Interface\n\t\t103c 006a  NX9500\n\t\t103c 12bc  d330 uT\n\t\t1043 80f2  P4P800/P5P800 series motherboard\n\t\t1458 2570  GA-8IPE1000 Pro2 motherboard (865PE)\n\t2571  82865G/PE/P AGP Bridge\n\t2572  82865G Integrated Graphics Controller\n\t\t1014 0287  ThinkCentre S50\n\t\t1028 019d  Dimension 3000\n\t\t103c 12bc  D530 sff(dc578av)\n\t\t1043 80a5  P5P800-MX Mainboard\n\t\t1462 7650  Hetis 865GV-E (MS-7065)\n\t\t1734 101b  Fujitsu-Siemens Scenic E300 i865GV\n\t\t8086 4246  Desktop Board D865GBF\n\t\t8086 4c43  Desktop Board D865GLC\n\t2573  82865G/PE/P PCI to CSA Bridge\n\t2576  82865G/PE/P Processor to I/O Memory Interface\n\t2578  82875P/E7210 Memory Controller Hub\n\t\t1458 2578  GA-8KNXP motherboard (875P)\n\t\t1462 7580  MS-6758 (875P Neo)\n\t\t15d9 4580  P4SCE Motherboard\n\t2579  82875P Processor to AGP Controller\n\t257b  82875P/E7210 Processor to PCI to CSA Bridge\n\t257e  82875P/E7210 Processor to I/O Memory Interface\n\t2580  82915G/P/GV/GL/PL/910GL Memory Controller Hub\n\t\t1458 2580  GA-8I915ME-G Mainboard\n\t\t1462 7028  915P/G Neo2\n\t\t1734 105b  Scenic W620\n\t2581  82915G/P/GV/GL/PL/910GL PCI Express Root Port\n\t2582  82915G/GV/910GL Integrated Graphics Controller\n\t\t1028 1079  Optiplex GX280\n\t\t103c 3006  DC7100 SFF(DX878AV)\n\t\t1043 2582  P5GD1-VW Mainboard\n\t\t1458 2582  GA-8I915ME-G Mainboard\n\t\t1734 105b  Scenic W620\n\t\t1849 2582  ASRock P4Dual-915GL\n\t2584  82925X/XE Memory Controller Hub\n\t\t1028 0177  Dimension 8400\n\t2585  82925X/XE PCI Express Root Port\n\t2588  E7220/E7221 Memory Controller Hub\n\t2589  E7220/E7221 PCI Express Root Port\n\t258a  E7221 Integrated Graphics Controller\n\t2590  Mobile 915GM/PM/GMS/910GML Express Processor to DRAM Controller\n\t\t1014 0575  ThinkPad X41 / Z60t\n\t\t1028 0182  Latitude C610\n\t\t103c 0934  Compaq nw8240/nx8220\n\t\t103c 0944  Compaq nc6220 Notebook PC\n\t\t103c 099c  NX6110/NC6120\n\t\t1043 82d9  Asus Eee PC 900\n\t\t104d 81b7  Vaio VGN-S3XP\n\t\ta304 81b7  Vaio VGN-S3XP\n\t\te4bf 0ccd  CCD-CALYPSO\n\t\te4bf 0cd3  CD3-JIVE\n\t\te4bf 58b1  XB1\n\t2591  Mobile 915GM/PM Express PCI Express Root Port\n\t\t103c 0934  Compaq nw8240 Mobile Workstation\n\t2592  Mobile 915GM/GMS/910GML Express Graphics Controller\n\t\t1014 0582  ThinkPad X41\n\t\t103c 099c  NX6110/NC6120\n\t\t103c 308a  NC6220\n\t\t1043 1881  GMA 900 915GM Integrated Graphics\n\t\te4bf 0ccd  CCD-CALYPSO\n\t\te4bf 0cd3  CD3-JIVE\n\t\te4bf 58b1  XB1\n\t25a1  6300ESB LPC Interface Controller\n\t25a2  6300ESB PATA Storage Controller\n\t\t1734 1073  Primergy Econel 200 D2020 mainboard\n\t\t1775 10d0  V5D Single Board Computer IDE\n\t\t1775 1100  CR11/VR11 Single Board Computer\n\t\t1775 ce90  CE9\n\t\t4c53 10b0  CL9 mainboard\n\t\t4c53 10e0  PSL09 PrPMC\n\t25a3  6300ESB SATA Storage Controller\n\t\t1734 1073  Primergy Econel 200 D2020 mainboard\n\t\t1775 1100  CR11/VR11 Single Board Computer\n\t\t1775 ce90  CE9\n\t\t4c53 10b0  CL9 mainboard\n\t\t4c53 10d0  Telum ASLP10 Processor AMC\n\t\t4c53 10e0  PSL09 PrPMC\n\t25a4  6300ESB SMBus Controller\n\t\t1734 1073  Primergy Econel 200 D2020 mainboard\n\t\t1775 10d0  V5D Single Board Computer\n\t\t1775 1100  CR11/VR11 Single Board Computer\n\t\t1775 ce90  CE9\n\t\t4c53 10b0  CL9 mainboard\n\t\t4c53 10d0  Telum ASLP10 Processor AMC\n\t\t4c53 10e0  PSL09 PrPMC\n\t25a6  6300ESB AC'97 Audio Controller\n\t\t1775 1100  CR11/VR11 Single Board Computer\n\t\t1775 ce90  CE9\n\t\t4c53 10b0  CL9 mainboard\n\t25a7  6300ESB AC'97 Modem Controller\n\t25a9  6300ESB USB Universal Host Controller\n\t\t1734 1073  Primergy Econel 200 D2020 mainboard\n\t\t1775 10d0  V5D Single Board Computer USB\n\t\t1775 1100  CR11/VR11 Single Board Computer\n\t\t1775 ce90  CE9\n\t\t4c53 10b0  CL9 mainboard\n\t\t4c53 10d0  Telum ASLP10 Processor AMC\n\t\t4c53 10e0  PSL09 PrPMC\n\t25aa  6300ESB USB Universal Host Controller\n\t\t1734 1073  Primergy Econel 200 D2020 mainboard\n\t\t1775 1100  CR11/VR11 Single Board Computer\n\t\t1775 ce90  CE9\n\t\t4c53 10b0  CL9 mainboard\n\t\t4c53 10d0  Telum ASLP10 Processor AMC\n\t\t4c53 10e0  PSL09 PrPMC\n\t25ab  6300ESB Watchdog Timer\n\t\t1734 1073  Primergy Econel 200 D2020 mainboard\n\t\t1775 10d0  V5D Single Board Computer\n\t\t1775 1100  CR11/VR11 Single Board Computer\n\t\t1775 ce90  CE9\n\t\t1af4 1100  QEMU Virtual Machine\n\t\t4c53 10b0  CL9 mainboard\n\t\t4c53 10d0  Telum ASLP10 Processor AMC\n\t\t4c53 10e0  PSL09 PrPMC\n\t25ac  6300ESB I/O Advanced Programmable Interrupt Controller\n\t\t1734 1073  Primergy Econel 200 D2020 mainboard\n\t\t1775 10d0  V5D Single Board Computer\n\t\t1775 1100  CR11/VR11 Single Board Computer\n\t\t1775 ce90  CE9\n\t\t4c53 10b0  CL9 mainboard\n\t\t4c53 10d0  Telum ASLP10 Processor AMC\n\t\t4c53 10e0  PSL09 PrPMC\n\t25ad  6300ESB USB2 Enhanced Host Controller\n\t\t1734 1073  Primergy Econel 200 D2020 mainboard\n\t\t1775 10d0  V5D Single Board Computer USB 2.0\n\t\t1775 1100  CR11/VR11 Single Board Computer\n\t\t1775 ce90  CE9\n\t\t4c53 10b0  CL9 mainboard\n\t\t4c53 10d0  Telum ASLP10 Processor AMC\n\t\t4c53 10e0  PSL09 PrPMC\n\t25ae  6300ESB 64-bit PCI-X Bridge\n\t25b0  6300ESB SATA RAID Controller\n\t\t1775 1100  CR11/VR11 Single Board Computer\n\t\t4c53 10d0  Telum ASLP10 Processor AMC\n\t\t4c53 10e0  PSL09 PrPMC\n\t25c0  5000X Chipset Memory Controller Hub\n\t25d0  5000Z Chipset Memory Controller Hub\n\t25d4  5000V Chipset Memory Controller Hub\n\t\t15d9 8680  X7DVL-E-O motherboard\n\t25d8  5000P Chipset Memory Controller Hub\n\t\t103c 31fd  ProLiant DL360 G5\n\t\t15d9 9680  X7DBN Motherboard\n\t\t8086 3476  S5000PSLSATA Server Board\n\t25e2  5000 Series Chipset PCI Express x4 Port 2\n\t25e3  5000 Series Chipset PCI Express x4 Port 3\n\t25e4  5000 Series Chipset PCI Express x4 Port 4\n\t25e5  5000 Series Chipset PCI Express x4 Port 5\n\t25e6  5000 Series Chipset PCI Express x4 Port 6\n\t25e7  5000 Series Chipset PCI Express x4 Port 7\n\t25f0  5000 Series Chipset FSB Registers\n\t\t1028 01bb  PowerEdge 1955 FSB Registers\n\t\t103c 31fd  ProLiant DL140 G3, DL360 G5\n\t\t15d9 8680  X7DVL-E-O motherboard\n\t\t15d9 9680  X7DBN Motherboard\n\t\t8086 3476  S5000PSLSATA Server Board\n\t25f1  5000 Series Chipset Reserved Registers\n\t\t103c 31fd  ProLiant DL140 G3, DL360 G5\n\t\t15d9 8680  X7DVL-E-O motherboard\n\t\t15d9 9680  X7DBN Motherboard\n\t\t8086 3476  S5000PSLSATA Server Board\n\t25f3  5000 Series Chipset Reserved Registers\n\t\t103c 31fd  ProLiant DL140 G3, DL360 G5\n\t\t15d9 8680  X7DVL-E-O motherboard\n\t\t15d9 9680  X7DBN Motherboard\n\t\t8086 3476  S5000PSLSATA Server Board\n\t25f5  5000 Series Chipset FBD Registers\n\t\t103c 31fd  ProLiant DL140 G3, DL360 G5\n\t\t15d9 8680  X7DVL-E-O motherboard\n\t\t15d9 9680  X7DBN Motherboard\n\t\t8086 3476  S5000PSLSATA Server Board\n\t25f6  5000 Series Chipset FBD Registers\n\t\t103c 31fd  ProLiant DL140 G3, DL360 G5\n\t\t15d9 8680  X7DVL-E-O motherboard\n\t\t15d9 9680  X7DBN Motherboard\n\t\t8086 3476  S5000PSLSATA Server Board\n\t25f7  5000 Series Chipset PCI Express x8 Port 2-3\n\t25f8  5000 Series Chipset PCI Express x8 Port 4-5\n\t25f9  5000 Series Chipset PCI Express x8 Port 6-7\n\t25fa  5000X Chipset PCI Express x16 Port 4-7\n\t2600  E8500/E8501 Hub Interface 1.5\n\t\t1028 0170  PowerEdge 6850 Hub Interface\n\t2601  E8500/E8501 PCI Express x4 Port D\n\t2602  E8500/E8501 PCI Express x4 Port C0\n\t2603  E8500/E8501 PCI Express x4 Port C1\n\t2604  E8500/E8501 PCI Express x4 Port B0\n\t2605  E8500/E8501 PCI Express x4 Port B1\n\t2606  E8500/E8501 PCI Express x4 Port A0\n\t2607  E8500/E8501 PCI Express x4 Port A1\n\t2608  E8500/E8501 PCI Express x8 Port C\n\t2609  E8500/E8501 PCI Express x8 Port B\n\t260a  E8500/E8501 PCI Express x8 Port A\n\t260c  E8500/E8501 IMI Registers\n\t2610  E8500/E8501 FSB Registers\n\t2611  E8500/E8501 Address Mapping Registers\n\t2612  E8500/E8501 RAS Registers\n\t2613  E8500/E8501 Reserved Registers\n\t2614  E8500/E8501 Reserved Registers\n\t2615  E8500/E8501 Miscellaneous Registers\n\t2617  E8500/E8501 Reserved Registers\n\t2618  E8500/E8501 Reserved Registers\n\t2619  E8500/E8501 Reserved Registers\n\t261a  E8500/E8501 Reserved Registers\n\t261b  E8500/E8501 Reserved Registers\n\t261c  E8500/E8501 Reserved Registers\n\t261d  E8500/E8501 Reserved Registers\n\t261e  E8500/E8501 Reserved Registers\n\t2620  E8500/E8501 eXternal Memory Bridge\n\t\t1028 0170  PowerEdge 6850 Memory Bridge\n\t2621  E8500/E8501 XMB Miscellaneous Registers\n\t\t1028 0170  PowerEdge 6850 XMB Registers\n\t2622  E8500/E8501 XMB Memory Interleaving Registers\n\t\t1028 0170  PowerEdge 6850 Memory Interleaving Registers\n\t2623  E8500/E8501 XMB DDR Initialization and Calibration\n\t\t1028 0170  PowerEdge 6850 DDR Initialization and Calibration\n\t2624  E8500/E8501 XMB Reserved Registers\n\t\t1028 0170  PowerEdge 6850 Reserved Registers\n\t2625  E8500/E8501 XMB Reserved Registers\n\t\t1028 0170  PowerEdge 6850 Reserved Registers\n\t2626  E8500/E8501 XMB Reserved Registers\n\t\t1028 0170  PowerEdge 6850 Reserved Registers\n\t2627  E8500/E8501 XMB Reserved Registers\n\t\t1028 0170  PowerEdge 6850 Reserved Registers\n\t2640  82801FB/FR (ICH6/ICH6R) LPC Interface Bridge\n\t\t1462 7028  915P/G Neo2\n\t\t1734 105c  Scenic W620\n\t\te4bf 0ccd  CCD-CALYPSO\n\t\te4bf 0cd3  CD3-JIVE\n\t\te4bf 58b1  XB1\n\t2641  82801FBM (ICH6M) LPC Interface Bridge\n\t\t1014 0568  ThinkPad X41\n\t\t103c 0934  Compaq nw8240/nx8220\n\t\t103c 0944  Compaq nc6220 Notebook PC\n\t\t103c 099c  NX6110/NC6120\n\t2642  82801FW/FRW (ICH6W/ICH6RW) LPC Interface Bridge\n\t2651  82801FB/FW (ICH6/ICH6W) SATA Controller\n\t\t1028 0179  Optiplex GX280\n\t\t1043 2601  P5GD1-VW Mainboard\n\t\t1734 105c  Scenic W620\n\t\t8086 4147  D915GAG Motherboard\n\t\te4bf 0ccd  CCD-CALYPSO\n\t\te4bf 0cd3  CD3-JIVE\n\t\te4bf 58b1  XB1\n\t2652  82801FR/FRW (ICH6R/ICH6RW) SATA Controller\n\t\t1028 0177  Dimension 8400\n\t\t1462 7028  915P/G Neo2\n\t2653  82801FBM (ICH6M) SATA Controller\n\t\t1014 056a  ThinkPad X41\n\t2658  82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #1\n\t\t1014 0565  ThinkPad X41\n\t\t1028 0177  Dimension 8400\n\t\t1028 0179  Optiplex GX280\n\t\t103c 0934  Compaq nw8240/nx8220\n\t\t103c 0944  Compaq nc6220 Notebook PC\n\t\t103c 099c  NX6110/NC6120\n\t\t1043 80a6  P5GD1-VW Mainboard\n\t\t1458 2558  GA-8I915ME-G Mainboard\n\t\t1462 7028  915P/G Neo2\n\t\t1734 105c  Scenic W620\n\t\te4bf 0ccd  CCD-CALYPSO\n\t\te4bf 0cd3  CD3-JIVE\n\t\te4bf 58b1  XB1\n\t2659  82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #2\n\t\t1014 0565  ThinkPad X41\n\t\t1028 0177  Dimension 8400\n\t\t1028 0179  Optiplex GX280\n\t\t103c 0934  Compaq nw8240/nx8220\n\t\t103c 0944  Compaq nc6220 Notebook PC\n\t\t103c 099c  NX6110/NC6120\n\t\t1043 80a6  P5GD1-VW Mainboard\n\t\t1458 2659  GA-8I915ME-G Mainboard\n\t\t1462 7028  915P/G Neo2\n\t\t1734 105c  Scenic W620\n\t\te4bf 0ccd  CCD-CALYPSO\n\t\te4bf 0cd3  CD3-JIVE\n\t\te4bf 58b1  XB1\n\t265a  82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #3\n\t\t1014 0565  ThinkPad X41\n\t\t1028 0177  Dimension 8400\n\t\t1028 0179  Optiplex GX280\n\t\t103c 0934  Compaq nw8240/nx8220\n\t\t103c 0944  Compaq nc6220 Notebook PC\n\t\t103c 099c  NX6110/NC6120\n\t\t1043 80a6  P5GD1-VW Mainboard\n\t\t1458 265a  GA-8I915ME-G Mainboard\n\t\t1462 7028  915P/G Neo2\n\t\t1734 105c  Scenic W620\n\t\te4bf 0ccd  CCD-CALYPSO\n\t\te4bf 0cd3  CD3-JIVE\n\t\te4bf 58b1  XB1\n\t265b  82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #4\n\t\t1014 0565  ThinkPad X41\n\t\t1028 0177  Dimension 8400\n\t\t1028 0179  Optiplex GX280\n\t\t103c 099c  NX6110/NC6120\n\t\t1043 80a6  P5GD1-VW Mainboard\n\t\t1458 265a  GA-8I915ME-G Mainboard\n\t\t1462 7028  915P/G Neo2\n\t\t1734 105c  Scenic W620\n\t\te4bf 0ccd  CCD-CALYPSO\n\t\te4bf 0cd3  CD3-JIVE\n\t\te4bf 58b1  XB1\n\t265c  82801FB/FBM/FR/FW/FRW (ICH6 Family) USB2 EHCI Controller\n\t\t1014 0566  ThinkPad X41\n\t\t1028 0177  Dimension 8400\n\t\t1028 0179  Optiplex GX280\n\t\t103c 0934  Compaq nw8240/nx8220\n\t\t103c 0944  Compaq nc6220 Notebook PC\n\t\t103c 099c  NX6110/NC6120\n\t\t1043 80a6  P5GD1-VW Mainboard\n\t\t1458 5006  GA-8I915ME-G Mainboard\n\t\t1462 7028  915P/G Neo2\n\t\t1734 105c  Scenic W620\n\t\t8086 265c  Dimension 3100\n\t\te4bf 0ccd  CCD-CALYPSO\n\t\te4bf 0cd3  CD3-JIVE\n\t\te4bf 58b1  XB1\n\t2660  82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 1\n\t\t103c 0934  Compaq nw8240 Mobile Workstation\n\t\t103c 0944  Compaq nc6220 Notebook PC\n\t\t103c 099c  NX6110/NC6120\n\t\te4bf 0ccd  CCD-CALYPSO\n\t\te4bf 0cd3  CD3-JIVE\n\t\te4bf 58b1  XB1\n\t2662  82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 2\n\t\t103c 0934  Compaq nw8240 Mobile Workstation\n\t\t103c 0944  Compaq nc6220 Notebook PC\n\t\te4bf 0ccd  CCD-CALYPSO\n\t\te4bf 0cd3  CD3-JIVE\n\t\te4bf 58b1  XB1\n\t2664  82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 3\n\t\te4bf 0ccd  CCD-CALYPSO\n\t\te4bf 0cd3  CD3-JIVE\n\t\te4bf 58b1  XB1\n\t2666  82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 4\n\t\te4bf 0ccd  CCD-CALYPSO\n\t\te4bf 0cd3  CD3-JIVE\n\t\te4bf 58b1  XB1\n\t2668  82801FB/FBM/FR/FW/FRW (ICH6 Family) High Definition Audio Controller\n\t\t1014 05b7  ThinkPad Z60t\n# based on the PTGD1-LA motherboard\n\t\t103c 2a09  PufferM-UL8E\n\t\t1043 1173  A6VC\n\t\t1043 814e  P5GD1-VW Mainboard\n\t\t1462 7028  915P/G Neo2\n\t\t1af4 1100  QEMU Virtual Machine\n\t266a  82801FB/FBM/FR/FW/FRW (ICH6 Family) SMBus Controller\n\t\t1014 056b  ThinkPad X41\n\t\t1028 0177  Dimension 8400\n\t\t1028 0179  Optiplex GX280\n\t\t1043 80a6  P5GD1-VW Mainboard\n\t\t1458 266a  GA-8I915ME-G Mainboard\n\t\t1462 7028  915P/G Neo2\n\t\t1734 105c  Scenic W620\n\t\te4bf 0ccd  CCD-CALYPSO\n\t\te4bf 0cd3  CD3-JIVE\n\t\te4bf 58b1  XB1\n\t266c  82801FB/FBM/FR/FW/FRW (ICH6 Family) LAN Controller\n\t266d  82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Modem Controller\n\t\t1025 006a  Conexant AC'97 CoDec (in Acer TravelMate 2410 serie laptop)\n\t\t103c 0934  Compaq nw8240/nx8220\n\t\t103c 099c  NX6110/NC6120\n\t266e  82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Audio Controller\n\t\t1014 0581  ThinkPad X41 (Analog Devices AD1981B codec)\n\t\t1025 006a  Realtek ALC 655 codec (in Acer TravelMate 2410 serie laptop)\n\t\t1028 0177  Dimension 8400\n\t\t1028 0179  Optiplex GX280\n\t\t1028 0182  Latitude D610 Laptop\n\t\t1028 0187  Precision M70 Laptop\n\t\t1028 0188  Inspiron 6000 laptop\n\t\t103c 0934  Compaq nw8240/nx8220\n\t\t103c 0944  Compaq NC6220\n\t\t103c 099c  NX6110/NC6120\n\t\t103c 3006  DC7100 SFF(DX878AV)\n\t\t1458 a002  GA-8I915ME-G Mainboard\n\t\t152d 0745  Packard Bell A8550 Laptop\n\t\t1734 105a  Scenic W620\n\t266f  82801FB/FBM/FR/FW/FRW (ICH6 Family) IDE Controller\n\t\t1028 0177  Dimension 8400\n\t\t103c 0934  Compaq nw8240/nx8220\n\t\t103c 0944  Compaq nc6220 Notebook PC\n\t\t103c 099c  NX6110/NC6120\n\t\t1043 80a6  P5GD1-VW Mainboard\n\t\t1458 266f  GA-8I915ME-G Mainboard\n\t\t1462 7028  915P/G Neo2\n\t\t1734 105c  Scenic W620\n\t\te4bf 0ccd  CCD-CALYPSO\n\t\te4bf 0cd3  CD3-JIVE\n\t\te4bf 58b1  XB1\n\t2670  631xESB/632xESB/3100 Chipset LPC Interface Controller\n\t\t103c 31fe  ProLiant DL140 G3\n\t\t15d9 8680  X7DVL-E-O motherboard\n\t\t15d9 9680  X7DBN Motherboard\n\t\t8086 3476  S5000PSLSATA Server Board\n\t2680  631xESB/632xESB/3100 Chipset SATA IDE Controller\n\t2681  631xESB/632xESB SATA AHCI Controller\n\t\t103c 31fe  ProLiant DL140 G3\n\t\t15d9 8680  X7DVL-E-O motherboard\n\t\t15d9 9680  X7DBN Motherboard\n\t\t8086 3476  S5000PSLSATA Server Board\n\t2682  631xESB/632xESB SATA RAID Controller\n\t\t103c 31fe  Adaptec Serial ATA HostRAID\n\t2683  631xESB/632xESB SATA RAID Controller\n\t2688  631xESB/632xESB/3100 Chipset UHCI USB Controller #1\n\t\t1028 01bb  PowerEdge 1955 onboard USB\n\t\t1028 01f0  PowerEdge R900 onboard USB\n\t\t103c 31fe  ProLiant DL140 G3, DL360 G5\n\t\t15d9 8680  X7DVL-E-O motherboard\n\t\t15d9 9680  X7DBN Motherboard\n\t\t8086 3476  S5000PSLSATA Server Board\n\t2689  631xESB/632xESB/3100 Chipset UHCI USB Controller #2\n\t\t1028 01bb  PowerEdge 1955 onboard USB\n\t\t1028 01f0  PowerEdge R900 onboard USB\n\t\t103c 31fe  ProLiant DL140 G3, DL360 G5\n\t\t15d9 8680  X7DVL-E-O motherboard\n\t\t15d9 9680  X7DBN Motherboard\n\t\t8086 3476  S5000PSLSATA Server Board\n\t268a  631xESB/632xESB/3100 Chipset UHCI USB Controller #3\n\t\t1028 01f0  PowerEdge R900 onboard USB\n\t\t103c 31fe  ProLiant DL140 G3, DL360 G5\n\t\t15d9 8680  X7DVL-E-O motherboard\n\t\t15d9 9680  X7DBN Motherboard\n\t\t8086 3476  S5000PSLSATA Server Board\n\t268b  631xESB/632xESB/3100 Chipset UHCI USB Controller #4\n\t\t1028 01f0  PowerEdge R900 onboard USB\n\t\t103c 31fe  ProLiant DL360 G5\n\t\t15d9 8680  X7DVL-E-O motherboard\n\t\t8086 3476  S5000PSLSATA Server Board\n\t268c  631xESB/632xESB/3100 Chipset EHCI USB2 Controller\n\t\t1028 01bb  PowerEdge 1955 onboard USB\n\t\t1028 01f0  PowerEdge R900 onboard USB\n\t\t103c 31fe  ProLiant DL140 G3, DL360 G5\n\t\t15d9 8680  X7DVL-E-O motherboard\n\t\t15d9 9680  X7DBN Motherboard\n\t\t8086 3476  S5000PSLSATA Server Board\n\t2690  631xESB/632xESB/3100 Chipset PCI Express Root Port 1\n\t\t103c 31fe  ProLiant DL140 G3\n\t\t15d9 9680  X7DBN Motherboard\n\t2692  631xESB/632xESB/3100 Chipset PCI Express Root Port 2\n\t\t103c 31fe  ProLiant DL140 G3\n\t2694  631xESB/632xESB/3100 Chipset PCI Express Root Port 3\n\t2696  631xESB/632xESB/3100 Chipset PCI Express Root Port 4\n\t2698  631xESB/632xESB AC '97 Audio Controller\n\t2699  631xESB/632xESB AC '97 Modem Controller\n\t269a  631xESB/632xESB High Definition Audio Controller\n\t269b  631xESB/632xESB/3100 Chipset SMBus Controller\n\t\t103c 31fe  ProLiant DL140 G3\n\t\t15d9 8680  X7DVL-E-O motherboard\n\t\t15d9 9680  X7DBN Motherboard\n\t\t8086 3476  S5000PSLSATA Server Board\n\t269e  631xESB/632xESB IDE Controller\n\t\t103c 31fe  ProLiant DL140 G3, DL360 G5\n\t\t15d9 8680  X7DVL-E-O motherboard\n\t\t15d9 9680  X7DBN Motherboard\n\t2700  Optane SSD 900P Series\n\t\t8086 3900  900P Series [Add-in Card]\n\t\t8086 3901  900P Series [2.5\" SFF]\n\t2701  NVMe Datacenter SSD [Optane]\n\t\t1028 2000  Express Flash NVMe [Optane] 375GB 2.5\" U.2 (P4800X)\n\t\t1028 2001  Express Flash NVMe [Optane] 750GB 2.5\" U.2 (P4800X)\n\t\t1028 2002  Express Flash NVMe [Optane] 750GB AIC (P4800X)\n\t\t1028 200a  Express Flash NVMe [Optane] 375GB AIC (P4800X)\n\t\t8086 3904  NVMe Datacenter SSD [Optane] x4 AIC (P4800X)\n\t\t8086 3905  NVMe Datacenter SSD [Optane] 15mm 2.5\" U.2 (P4800X)\n\t2723  Wi-Fi 6 AX200\n\t\t1a56 1654  Killer Wi-Fi 6 AX1650x (AX200NGW)\n\t\t8086 0084  Wi-Fi 6 AX200NGW\n\t2725  Wi-Fi 6E(802.11ax) AX210/AX1675* 2x2 [Typhoon Peak]\n\t\t1a56 1673  Killer AX1675w 160MHz\n\t\t1a56 1674  Killer Wi-Fi 6E AX1675x 160MHz\n\t\t8086 0020  Wi-Fi 6 AX210 160MHz\n\t\t8086 0024  Wi-Fi 6 AX210 160MHz\n\t\t8086 0310  Wi-Fi 6 AX210 160MHz\n\t\t8086 0510  Wi-Fi 6 AX210 160MHz\n\t\t8086 0a10  Wi-Fi 6 AX210 160MHz\n\t\t8086 2020  Wi-Fi 6 AX210 160MHz\n\t\t8086 4020  Wi-Fi 6 AX210 160MHz\n\t\t8086 6020  Wi-Fi 6 AX210 160MHz\n\t\t8086 6024  Wi-Fi 6 AX210 160MHz\n\t\t8086 e020  Wi-Fi 6 AX210 160MHz\n\t\t8086 e024  Wi-Fi 6 AX210 160MHz\n\t272b  Wi-Fi 7(802.11be) AX1775*/AX1790*/BE20*/BE401/BE1750* 2x2\n\t\t8086 00f0  BE200 320MHz [Gale Peak]\n\t\t8086 00f4  BE200 320MHz [Gale Peak]\n\t\t8086 02f4  BE202 160MHz [Misty Peak]\n\t\t8086 40f0  BE200 320MHz [Gale Peak]\n\t\t8086 42f4  BE202 160MHz [Misty Peak]\n\t\t8086 e0f4  BE200 320MHz [Gale Peak]\n\t2770  82945G/GZ/P/PL Memory Controller Hub\n\t\t1028 01ad  OptiPlex GX620\n\t\t103c 2a3b  Pavilion A1512X\n\t\t1043 817a  P5LD2-VM Mainboard\n\t\t107b 5048  E4500\n\t\t1462 7418  Wind PC MS-7418\n\t\t1849 2770  ConRoe1333-D667\n\t\t8086 544e  DeskTop Board D945GTP\n\t2771  82945G/GZ/P/PL PCI Express Root Port\n\t2772  82945G/GZ Integrated Graphics Controller\n\t\t103c 2a3b  Pavilion A1512X\n\t\t1462 7418  Wind PC MS-7418\n\t\t1849 2772  ConRoe1333-D667\n\t\t8086 544e  DeskTop Board D945GTP\n\t\t8086 d605  Desktop Board D945GCCR\n\t2774  82955X Memory Controller Hub\n\t2775  82955X PCI Express Root Port\n\t2776  82945G/GZ Integrated Graphics Controller\n\t2778  E7230/3000/3010 Memory Controller Hub\n\t\t1028 01df  PowerEdge SC440\n\t\t1028 01e6  PowerEdge 860\n\t2779  E7230/3000/3010 PCI Express Root Port\n\t277a  82975X/3010 PCI Express Root Port\n\t277c  82975X Memory Controller Hub\n\t\t1043 8178  P5WDG2 WS Professional motherboard\n\t277d  82975X PCI Express Root Port\n\t2780  82915G/GV/GL/910GL [Grantsdale] Graphics Device\n\t2782  82915G Integrated Graphics Controller\n\t\t1043 2582  P5GD1-VW Mainboard\n\t\t1734 105b  Scenic W620\n\t2792  Mobile 915GM/GMS/910GML Express Graphics Controller\n\t\t1014 0582  ThinkPad X41\n\t\t103c 099c  NX6110/NC6120\n\t\t103c 308a  Compaq nc6220 Notebook PC\n\t\t1043 1881  GMA 900 915GM Integrated Graphics\n\t\te4bf 0ccd  CCD-CALYPSO\n\t\te4bf 0cd3  CD3-JIVE\n\t\te4bf 58b1  XB1\n\t27a0  Mobile 945GM/PM/GMS, 943/940GML and 945GT Express Memory Controller Hub\n\t\t1025 006c  9814 WKMI\n\t\t1028 01d7  XPS M1210\n\t\t103c 309f  Compaq nx9420 Notebook\n\t\t103c 30a1  NC2400\n\t\t103c 30a3  Compaq nw8440\n\t\t103c 30d5  530 Laptop\n\t\t1043 1237  A6J-Q008\n\t\t1071 8209  Medion MIM 2240 Notebook PC [MD98100]\n\t\t17aa 2015  ThinkPad T60\n\t\t17aa 2017  ThinkPad R60/T60/X60 series\n\t27a1  Mobile 945GM/PM/GMS, 943/940GML and 945GT Express PCI Express Root Port\n\t\t103c 309f  Compaq nx9420 Notebook\n\t\t103c 30a3  Compaq nw8440\n\t\t1071 8209  Medion MIM 2240 Notebook PC [MD98100]\n\t27a2  Mobile 945GM/GMS, 943/940GML Express Integrated Graphics Controller\n\t\t103c 30a1  NC2400\n\t\t103c 30d5  530 Laptop\n\t\t17aa 201a  ThinkPad R60/T60/X60 series\n\t\t9902 1584  CCE MPL-D10H120F\n\t27a6  Mobile 945GM/GMS/GME, 943/940GML Express Integrated Graphics Controller\n\t\t103c 30a1  NC2400\n\t\t103c 30d5  530 Laptop\n\t\t1775 11cc  CC11/CL11 integrated graphics (secondary)\n\t\t17aa 201a  ThinkPad R60/T60/X60 series\n\t27ac  Mobile 945GSE Express Memory Controller Hub\n\t\t1775 11cc  CC11/CL11\n\t27ad  Mobile 945GSE Express PCI Express Root Port\n\t27ae  Mobile 945GSE Express Integrated Graphics Controller\n\t\t1775 11cc  CC11/CL11 integrated graphics (primary)\n\t27b0  82801GH (ICH7DH) LPC Interface Bridge\n\t\t103c 2a3b  Pavilion A1512X\n\t\t8086 544e  DeskTop Board D945GTP\n\t27b8  82801GB/GR (ICH7 Family) LPC Interface Bridge\n\t\t1028 01e6  PowerEdge 860\n\t\t103c 2a8c  Compaq 500B Microtower\n\t\t1043 8179  P5B-MX/WiFi-AP, P5KPL-VM Motherboard\n\t\t107b 5048  E4500\n\t\t1462 7418  Wind PC MS-7418\n\t\t1775 11cc  CC11/CL11\n\t\t8086 544e  DeskTop Board D945GTP\n\t27b9  82801GBM (ICH7-M) LPC Interface Bridge\n\t\t1028 01d7  XPS M1210\n\t\t103c 309f  Compaq nx9420 Notebook\n\t\t103c 30a1  NC2400\n\t\t103c 30a3  Compaq nw8440\n\t\t103c 30d5  530 Laptop\n\t\t1071 8209  Medion MIM 2240 Notebook PC [MD98100]\n\t\t10f7 8338  Panasonic CF-Y5 laptop\n\t\t17aa 2009  ThinkPad R60/T60/X60 series\n\t27bc  NM10 Family LPC Controller\n\t\t1043 83ad  Eee PC 1015PX\n\t\t105b 0d7c  D270S/D250S Motherboard\n\t\t144d c072  Notebook N150P\n\t\t1458 5001  GA-D525TUD\n\t\t8086 4f4d  DeskTop Board D510MO\n\t\t8086 544b  Desktop Board D425KT\n\t27bd  82801GHM (ICH7-M DH) LPC Interface Bridge\n\t\t1025 006c  9814 WKMI\n\t27c0  NM10/ICH7 Family SATA Controller [IDE mode]\n\t\t1028 01ad  OptiPlex GX620\n\t\t1028 01df  PowerEdge SC440\n\t\t1028 01e6  PowerEdge 860\n\t\t103c 2a8c  Compaq 500B Microtower\n\t\t1043 8179  P5B-MX/WiFi-AP, P5KPL-VM Motherboard\n\t\t107b 5048  E4500\n\t\t1462 2310  MSI Hetis 945\n\t\t1462 7236  945P Neo3-F Rev. 2.2 motherboard\n\t\t1462 7418  Wind PC MS-7418\n\t\t1775 11cc  CC11/CL11\n\t\t8086 544b  Desktop Board D425KT\n\t\t8086 544e  DeskTop Board D945GTP\n\t27c1  NM10/ICH7 Family SATA Controller [AHCI mode]\n\t\t1028 01df  PowerEdge SC440\n\t\t103c 2a3b  Pavilion A1512X\n\t\t1043 83ad  Eee PC 1015PX\n\t\t105b 0d7c  D270S/D250S Motherboard\n\t\t144d c072  Notebook N150P\n\t\t1458 b005  GA-D525TUD\n\t\t1775 11cc  CC11/CL11\n\t\t8086 4f4d  DeskTop Board D510MO\n\t\t8086 5842  DeskTop Board D975XBX\n\t27c3  82801GR/GDH (ICH7R/ICH7DH) SATA Controller [RAID mode]\n\t\t1775 11cc  CC11/CL11\n\t\t8086 544e  DeskTop Board D945GTP\n\t27c4  82801GBM/GHM (ICH7-M Family) SATA Controller [IDE mode]\n\t\t1025 006c  9814 WKMI\n\t\t1028 01d7  XPS M1210\n\t\t1071 8209  Medion MIM 2240 Notebook PC [MD98100]\n\t\t17aa 200e  ThinkPad T60\n\t27c5  82801GBM/GHM (ICH7-M Family) SATA Controller [AHCI mode]\n\t\t103c 309f  Compaq nx9420 Notebook\n\t\t103c 30a3  Compaq nw8440\n\t\t103c 30d5  530 Laptop\n\t\t17aa 200d  ThinkPad R60/T60/X60 series\n\t27c6  82801GHM (ICH7-M DH) SATA Controller [RAID mode]\n\t27c8  NM10/ICH7 Family USB UHCI Controller #1\n\t\t1025 006c  9814 WKMI\n\t\t1028 01ad  OptiPlex GX620\n\t\t1028 01d7  XPS M1210\n\t\t1028 01df  PowerEdge SC440\n\t\t1028 01e6  PowerEdge 860\n\t\t103c 2a3b  Pavilion A1512X\n\t\t103c 2a8c  Compaq 500B Microtower\n\t\t103c 309f  Compaq nx9420 Notebook\n\t\t103c 30a1  NC2400\n\t\t103c 30a3  Compaq nw8440\n\t\t103c 30d5  530 Laptop\n\t\t1043 1237  A6J-Q008\n\t\t1043 8179  P5B-MX/WiFi-AP, P5KPL-VM, P5LD2-VM Mainboard\n\t\t1043 83ad  Eee PC 1015PX\n\t\t105b 0d7c  D270S/D250S Motherboard\n\t\t1071 8209  Medion MIM 2240 Notebook PC [MD98100]\n\t\t107b 5048  E4500\n\t\t144d c072  Notebook N150P\n\t\t1458 5004  GA-D525TUD\n\t\t1462 7418  Wind PC MS-7418\n\t\t1775 11cc  CC11/CL11\n\t\t17aa 200a  ThinkPad R60/T60/X60 series\n\t\t8086 4f4d  DeskTop Board D510MO\n\t\t8086 544b  Desktop Board D425KT\n\t\t8086 544e  DeskTop Board D945GTP\n\t27c9  NM10/ICH7 Family USB UHCI Controller #2\n\t\t1025 006c  9814 WKMI\n\t\t1028 01ad  OptiPlex GX620\n\t\t1028 01d7  XPS M1210\n\t\t1028 01df  PowerEdge SC440\n\t\t1028 01e6  PowerEdge 860\n\t\t103c 2a3b  Pavilion A1512X\n\t\t103c 2a8c  Compaq 500B Microtower\n\t\t103c 309f  Compaq nx9420 Notebook\n\t\t103c 30a1  NC2400\n\t\t103c 30a3  Compaq nw8440\n\t\t1043 1237  A6J-Q008\n\t\t1043 8179  P5B-MX/WiFi-AP, P5KPL-VM, P5LD2-VM Mainboard\n\t\t1043 83ad  Eee PC 1015PX\n\t\t105b 0d7c  D270S/D250S Motherboard\n\t\t1071 8209  Medion MIM 2240 Notebook PC [MD98100]\n\t\t107b 5048  E4500\n\t\t144d c072  Notebook N150P\n\t\t1458 5004  GA-D525TUD\n\t\t1462 7418  Wind PC MS-7418\n\t\t1775 11cc  CC11/CL11\n\t\t17aa 200a  ThinkPad R60/T60/X60 series\n\t\t8086 4f4d  DeskTop Board D510MO\n\t\t8086 544b  Desktop Board D425KT\n\t\t8086 544e  DeskTop Board D945GTP\n\t27ca  NM10/ICH7 Family USB UHCI Controller #3\n\t\t1025 006c  9814 WKMI\n\t\t1028 01ad  OptiPlex GX620\n\t\t1028 01d7  XPS M1210\n\t\t1028 01df  PowerEdge SC440\n\t\t1028 01e6  PowerEdge 860\n\t\t103c 2a3b  Pavilion A1512X\n\t\t103c 2a8c  Compaq 500B Microtower\n\t\t103c 309f  Compaq nx9420 Notebook\n\t\t103c 30a1  NC2400\n\t\t103c 30a3  Compaq nw8440\n\t\t1043 1237  A6J-Q008\n\t\t1043 8179  P5B-MX/WiFi-AP, P5KPL-VM, P5LD2-VM Mainboard\n\t\t1043 83ad  Eee PC 1015PX\n\t\t105b 0d7c  D270S/D250S Motherboard\n\t\t1071 8209  Medion MIM 2240 Notebook PC [MD98100]\n\t\t107b 5048  E4500\n\t\t144d c072  Notebook N150P\n\t\t1458 5004  GA-D525TUD\n\t\t1462 7418  Wind PC MS-7418\n\t\t1775 11cc  CC11/CL11\n\t\t17aa 200a  ThinkPad R60/T60/X60 series\n\t\t8086 4f4d  DeskTop Board D510MO\n\t\t8086 544e  DeskTop Board D945GTP\n\t27cb  NM10/ICH7 Family USB UHCI Controller #4\n\t\t1025 006c  9814 WKMI\n\t\t1028 01ad  OptiPlex GX620\n\t\t1028 01d7  XPS M1210\n\t\t1028 01df  PowerEdge SC440\n\t\t103c 2a3b  Pavilion A1512X\n\t\t103c 2a8c  Compaq 500B Microtower\n\t\t103c 309f  Compaq nx9420 Notebook\n\t\t103c 30a1  NC2400\n\t\t103c 30a3  Compaq nw8440\n\t\t1043 1237  A6J-Q008\n\t\t1043 8179  P5B-MX/WiFi-AP, P5KPL-VM, P5LD2-VM Mainboard\n\t\t1043 83ad  Eee PC 1015PX\n\t\t105b 0d7c  D270S/D250S Motherboard\n\t\t1071 8209  Medion MIM 2240 Notebook PC [MD98100]\n\t\t107b 5048  E4500\n\t\t144d c072  Notebook N150P\n\t\t1458 5004  GA-D525TUD\n\t\t1462 7418  Wind PC MS-7418\n\t\t1775 11cc  CC11/CL11\n\t\t17aa 200a  ThinkPad R60/T60/X60 series\n\t\t8086 4f4d  DeskTop Board D510MO\n\t\t8086 544e  DeskTop Board D945GTP\n\t27cc  NM10/ICH7 Family USB2 EHCI Controller\n\t\t1025 006c  9814 WKMI\n\t\t1028 01ad  OptiPlex GX620\n\t\t1028 01d7  XPS M1210\n\t\t1028 01df  PowerEdge SC440\n\t\t1028 01e6  PowerEdge 860\n\t\t103c 2a3b  Pavilion A1512X\n\t\t103c 2a8c  Compaq 500B Microtower\n\t\t103c 309f  Compaq nx9420 Notebook\n\t\t103c 30a1  NC2400\n\t\t103c 30a3  Compaq nw8440\n\t\t103c 30d5  530 Laptop\n\t\t1043 1237  A6J-Q008\n\t\t1043 8179  P5B-MX/WiFi-AP, P5KPL-VM, P5LD2-VM Mainboard\n\t\t1043 83ad  Eee PC 1015PX\n\t\t105b 0d7c  D270S/D250S Motherboard\n\t\t1071 8209  Medion MIM 2240 Notebook PC [MD98100]\n\t\t144d c072  Notebook N150P\n\t\t1458 5006  GA-D525TUD\n\t\t1462 7418  Wind PC MS-7418\n\t\t1775 11cc  CC11/CL11\n\t\t17aa 200b  ThinkPad R60/T60/X60 series\n\t\t8086 4f4d  DeskTop Board D510MO\n\t\t8086 544b  Desktop Board D425KT\n\t\t8086 544e  DeskTop Board D945GTP\n\t27d0  NM10/ICH7 Family PCI Express Port 1\n\t\t103c 309f  Compaq nx9420 Notebook\n\t\t103c 30a3  Compaq nw8440\n\t\t1071 8209  Medion MIM 2240 Notebook PC [MD98100]\n\t\t144d c072  Notebook N150P\n\t\t1458 5001  GA-D525TUD\n\t\t1462 7418  Wind PC MS-7418\n\t\t1775 11cc  CC11/CL11\n\t\t17aa 2011  ThinkPad R60e\n\t\t8086 544b  Desktop Board D425KT\n\t27d2  NM10/ICH7 Family PCI Express Port 2\n\t\t103c 309f  Compaq nx9420 Notebook\n\t\t103c 30a3  Compaq nw8440\n\t\t1071 8209  Medion MIM 2240 Notebook PC [MD98100]\n\t\t144d c072  Notebook N150P\n\t\t1462 7418  Wind PC MS-7418\n\t\t1775 11cc  CC11/CL11\n\t\t17aa 2011  ThinkPad R60e\n\t\t8086 544b  Desktop Board D425KT\n\t27d4  NM10/ICH7 Family PCI Express Port 3\n\t\t1071 8209  Medion MIM 2240 Notebook PC [MD98100]\n\t\t144d c072  Notebook N150P\n\t\t1462 7418  Wind PC MS-7418\n\t\t1775 11cc  CC11/CL11\n\t\t17aa 2011  ThinkPad R60e\n\t\t8086 544b  Desktop Board D425KT\n\t27d6  NM10/ICH7 Family PCI Express Port 4\n\t\t103c 30a3  Compaq nw8440\n\t\t1071 8209  Medion MIM 2240 Notebook PC [MD98100]\n\t\t144d c072  Notebook N150P\n\t\t1462 7418  Wind PC MS-7418\n\t\t1775 11cc  CC11/CL11\n\t\t17aa 2011  ThinkPad R60e\n\t\t8086 544b  Desktop Board D425KT\n\t27d8  NM10/ICH7 Family High Definition Audio Controller\n\t\t1025 006c  9814 WKMI\n\t\t1028 01d7  XPS M1210\n\t\t103c 2a3b  Pavilion A1512X\n\t\t103c 2a8c  Compaq 500B Microtower\n\t\t103c 309f  Compaq nx9420 Notebook\n\t\t103c 30a1  NC2400\n\t\t103c 30a3  Compaq nw8440\n\t\t103c 30d5  530 Laptop\n\t\t1043 1123  A6J-Q008\n\t\t1043 13c4  G2P\n\t\t1043 817f  P5LD2-VM Mainboard (Realtek ALC 882 codec)\n\t\t1043 8249  P5B-MX/WiFi-AP\n\t\t1043 8290  P5KPL-VM Motherboard\n\t\t1043 82ea  P5KPL-CM Motherboard\n\t\t1043 8437  Eee PC 1015PX\n\t\t105b 0d7c  D270S/D250S Motherboard\n\t\t1071 8207  Medion MIM 2240 Notebook PC [MD98100]\n\t\t107b 5048  E4500\n\t\t10f7 8338  Panasonic CF-Y5 laptop\n\t\t1179 ff10  Toshiba Satellite A100-796 audio (Realtek ALC861)\n\t\t1179 ff31  AC97 Data Fax SoftModem with SmartCP\n\t\t1447 1043  Asus A8JP (Analog Devices AD1986A)\n\t\t144d c072  Notebook N150P\n\t\t1458 a002  GA-D525TUD (Realtek ALC887)\n\t\t1458 a102  GA-8I945PG-RH Mainboard\n\t\t1462 7418  Wind PC MS-7418\n\t\t152d 0753  Softmodem\n\t\t1734 10ad  Conexant softmodem SmartCP\n\t\t17aa 2010  ThinkPad R60/T60/X60 series\n\t\t17aa 3802  3000 C200 audio [Realtek ALC861VD]\n\t\t8086 1112  DeskTop Board D945GTP\n\t\t8086 27d8  DeskTop Board D945GTP\n\t\t8086 d618  DeskTop Board D510MO\n\t\t8384 7680  STAC9221 HD Audio Codec\n\t27da  NM10/ICH7 Family SMBus Controller\n\t\t1025 006c  9814 WKMI\n\t\t1028 01ad  OptiPlex GX620\n\t\t1028 01d7  XPS M1210\n\t\t1028 01df  PowerEdge SC440\n\t\t1028 01e6  PowerEdge 860\n\t\t103c 2a3b  Pavilion A1512X\n\t\t103c 2a8c  Compaq 500B Microtower\n\t\t1043 8179  P5B-MX/WiFi-AP, P5KPL-VM Motherboard\n\t\t105b 0d7c  D270S/D250S Motherboard\n\t\t1071 8209  Medion MIM 2240 Notebook PC [MD98100]\n\t\t10f7 8338  Panasonic CF-Y5 laptop\n\t\t144d c072  Notebook N150P\n\t\t1458 5001  GA-8I945PG-RH/GA-D525TUD Mainboard\n\t\t1462 7418  Wind PC MS-7418\n\t\t1775 11cc  CC11/CL11\n\t\t17aa 200f  ThinkPad R60/T60/X60 series\n\t\t8086 4f4d  DeskTop Board D510MO\n\t\t8086 544b  Desktop Board D425KT\n\t\t8086 544e  DeskTop Board D945GTP\n\t\t8086 5842  DeskTop Board D975XBX\n\t27dc  NM10/ICH7 Family LAN Controller\n\t\t103c 2a3b  Pavilion A1512X\n\t\t8086 308d  DeskTop Board D945GTP\n\t27dd  82801G (ICH7 Family) AC'97 Modem Controller\n\t27de  82801G (ICH7 Family) AC'97 Audio Controller\n\t\t1028 01ad  OptiPlex GX620\n\t\t1462 7267  Realtek ALC883 Audio Controller\n\t\t1775 11cc  CC11 integrated audio (AD1981BL codec)\n\t27df  82801G (ICH7 Family) IDE Controller\n\t\t1028 01df  PowerEdge SC440\n\t\t1028 01e6  PowerEdge 860\n\t\t103c 2a3b  Pavilion A1512X\n\t\t103c 2a8c  Compaq 500B Microtower\n\t\t103c 309f  Compaq nx9420 Notebook\n\t\t103c 30a1  NC2400\n\t\t103c 30a3  Compaq nw8440\n\t\t103c 30d5  530 Laptop\n\t\t1043 1237  A6J-Q008\n\t\t1043 8179  P5B-MX/WiFi-AP, P5KPL-VM Motherboard\n\t\t107b 5048  E4500\n\t\t10f7 8338  Panasonic CF-Y5 laptop\n\t\t1462 7418  Wind PC MS-7418\n\t\t1775 11cc  CC11/CL11\n\t\t17aa 200c  ThinkPad R60/T60/X60 series\n\t\t8086 544e  DeskTop Board D945GTP\n\t27e0  82801GR/GH/GHM (ICH7 Family) PCI Express Port 5\n\t\t1775 11cc  CC11/CL11\n\t27e2  82801GR/GH/GHM (ICH7 Family) PCI Express Port 6\n\t\t1775 11cc  CC11/CL11\n\t2810  82801HB/HR (ICH8/R) LPC Interface Controller\n\t\t1043 81ec  P5B\n\t2811  82801HEM (ICH8M-E) LPC Interface Controller\n\t\t103c 30c1  Compaq 6910p\n\t\t17aa 20b6  ThinkPad T61/R61\n\t\te4bf cc47  CCG-RUMBA\n\t2812  82801HH (ICH8DH) LPC Interface Controller\n\t2814  82801HO (ICH8DO) LPC Interface Controller\n\t2815  82801HM (ICH8M) LPC Interface Controller\n\t\t1025 0121  Aspire 5920G\n\t\t1028 01f3  Inspiron 1420\n\t\t1028 022f  Inspiron 1525\n\t\t103c 30c0  Compaq 6710b\n\t\t103c 30cc  Pavilion dv6700\n\t\t103c 30d9  Presario C700\n\t\t1043 1017  X58LE\n\t\t104d 9005  Vaio VGN-FZ260E\n\t\t104d 902d  VAIO VGN-NR120E\n\t\t17aa 20a5  ThinkPad R61\n\t\t17c0 4083  Medion WIM 2210 Notebook PC [MD96850]\n\t2820  82801H (ICH8 Family) 4 port SATA Controller [IDE mode]\n\t\t1028 01da  OptiPlex 745\n\t\t1462 7235  P965 Neo MS-7235 mainboard\n\t2821  82801HR/HO/HH (ICH8R/DO/DH) 6 port SATA Controller [AHCI mode]\n\t2822  SATA Controller [RAID mode]\n\t\t1028 020d  Inspiron 530\n\t\t103c 2a6f  Asus IPIBL-LB Motherboard\n\t\t1043 8277  P5K PRO Motherboard: 82801IR [ICH9R]\n\t\t1462 7345  MS-7345 Motherboard: Intel 82801I/IR [ICH9/ICH9R]\n\t2823  sSATA Controller [RAID Mode]\n\t2824  82801HB (ICH8) 4 port SATA Controller [AHCI mode]\n\t\t1043 81ec  P5B\n\t2825  82801HR/HO/HH (ICH8R/DO/DH) 2 port SATA Controller [IDE mode]\n\t\t1028 01da  OptiPlex 745\n\t\t1462 7235  P965 Neo MS-7235 mainboard\n\t2826  SATA Controller [RAID Mode]\n\t\t1d49 0100  Intel RSTe SATA Software RAID\n\t\t1d49 0101  Intel RSTe SATA Software RAID\n\t\t1d49 0102  Intel RSTe SATA Software RAID\n\t\t1d49 0103  Intel RSTe SATA Software RAID\n\t\t1d49 0104  Intel RSTe SATA Software RAID\n\t\t1d49 0105  Intel RSTe SATA Software RAID\n\t2827  sSATA Controller [RAID Mode]\n\t2828  82801HM/HEM (ICH8M/ICH8M-E) SATA Controller [IDE mode]\n\t\t1028 01f3  Inspiron 1420\n\t\t103c 30c0  Compaq 6710b\n\t\t17aa 20a8  ThinkPad R61\n\t\te4bf cc47  CCG-RUMBA\n\t2829  82801HM/HEM (ICH8M/ICH8M-E) SATA Controller [AHCI mode]\n\t\t1025 0121  Aspire 5920G\n\t\t1028 022f  Inspiron 1525\n\t\t103c 30c0  Compaq 6710b\n\t\t103c 30c1  Compaq 6910p\n\t\t103c 30cc  Pavilion dv6700\n\t\t103c 30d9  Presario C700\n\t\t1043 1017  X58LE\n\t\t104d 9005  Vaio VGN-FZ260E\n\t\t104d 902d  VAIO VGN-NR120E\n\t\t17aa 20a7  ThinkPad T61/R61\n\t\t17c0 4083  Medion WIM 2210 Notebook PC [MD96850]\n\t\te4bf cc47  CCG-RUMBA\n\t282a  82801 Mobile SATA Controller [RAID mode]\n\t\t1028 040b  Latitude E6510\n\t\te4bf 50c1  PC1-GROOVE\n\t282f  tSATA Controller [RAID Mode]\n\t2830  82801H (ICH8 Family) USB UHCI Controller #1\n\t\t1025 0121  Aspire 5920G\n\t\t1028 01da  OptiPlex 745\n\t\t1028 01f3  Inspiron 1420\n\t\t1028 022f  Inspiron 1525\n\t\t103c 30c0  Compaq 6710b\n\t\t103c 30c1  Compaq 6910p\n\t\t103c 30cc  Pavilion dv6700\n\t\t103c 30d9  Presario C700\n\t\t1043 1017  X58LE\n\t\t1043 81ec  P5B\n\t\t104d 9005  Vaio VGN-FZ260E\n\t\t104d 902d  VAIO VGN-NR120E\n\t\t1462 7235  P965 Neo MS-7235 mainboard\n\t\t17aa 20aa  ThinkPad T61/R61\n\t\t17c0 4083  Medion WIM 2210 Notebook PC [MD96850]\n\t\te4bf cc47  CCG-RUMBA\n\t2831  82801H (ICH8 Family) USB UHCI Controller #2\n\t\t1025 0121  Aspire 5920G\n\t\t1028 01da  OptiPlex 745\n\t\t1028 01f3  Inspiron 1420\n\t\t1028 022f  Inspiron 1525\n\t\t103c 30c0  Compaq 6710b\n\t\t103c 30c1  Compaq 6910p\n\t\t103c 30cc  Pavilion dv6700\n\t\t103c 30d9  Presario C700\n\t\t1043 1017  X58LE\n\t\t1043 81ec  P5B\n\t\t104d 9005  Vaio VGN-FZ260E\n\t\t104d 902d  VAIO VGN-NR120E\n\t\t1462 7235  P965 Neo MS-7235 mainboard\n\t\t17aa 20aa  ThinkPad T61/R61\n\t\t17c0 4083  Medion WIM 2210 Notebook PC [MD96850]\n\t\te4bf cc47  CCG-RUMBA\n\t2832  82801H (ICH8 Family) USB UHCI Controller #3\n\t\t1025 0121  Aspire 5920G\n\t\t1028 01da  OptiPlex 745\n\t\t1028 01f3  Inspiron 1420\n\t\t1028 022f  Inspiron 1525\n\t\t103c 30c0  Compaq 6710b\n\t\t103c 30c1  Compaq 6910p\n\t\t103c 30cc  Pavilion dv6700\n\t\t103c 30d9  Presario C700\n\t\t1043 1017  X58LE\n\t\t1043 81ec  P5B\n\t\t104d 9005  Vaio VGN-FZ260E\n\t\t104d 902d  VAIO VGN-NR120E\n\t\t17aa 20aa  ThinkPad T61/R61\n\t\t17c0 4083  Medion WIM 2210 Notebook PC [MD96850]\n\t\te4bf cc47  CCG-RUMBA\n\t2833  82801H (ICH8 Family) USB UHCI Controller #4\n\t\t1043 81ec  P5B\n\t2834  82801H (ICH8 Family) USB UHCI Controller #4\n\t\t1025 0121  Aspire 5920G\n\t\t1028 01da  OptiPlex 745\n\t\t1028 01f3  Inspiron 1420\n\t\t1028 022f  Inspiron 1525\n\t\t103c 30c0  Compaq 6710b\n\t\t103c 30c1  Compaq 6910p\n\t\t103c 30cc  Pavilion dv6700\n\t\t1043 1017  X58LE\n\t\t1043 81ec  P5B\n\t\t104d 9005  Vaio VGN-FZ260E\n\t\t104d 902d  VAIO VGN-NR120E\n\t\t1462 7235  P965 Neo MS-7235 mainboard\n\t\t17aa 20aa  ThinkPad T61/R61\n\t\t17c0 4083  Medion WIM 2210 Notebook PC [MD96850]\n\t\te4bf cc47  CCG-RUMBA\n\t2835  82801H (ICH8 Family) USB UHCI Controller #5\n\t\t1025 0121  Aspire 5920G\n\t\t1028 01da  OptiPlex 745\n\t\t1028 01f3  Inspiron 1420\n\t\t1028 022f  Inspiron 1525\n\t\t103c 30c0  Compaq 6710b\n\t\t103c 30c1  Compaq 6910p\n\t\t103c 30cc  Pavilion dv6700\n\t\t1043 1017  X58LE\n\t\t1043 81ec  P5B\n\t\t104d 9005  Vaio VGN-FZ260E\n\t\t104d 902d  VAIO VGN-NR120E\n\t\t17aa 20aa  Thinkpad T61/R61\n\t\t17c0 4083  Medion WIM 2210 Notebook PC [MD96850]\n\t\te4bf cc47  CCG-RUMBA\n\t2836  82801H (ICH8 Family) USB2 EHCI Controller #1\n\t\t1025 0121  Aspire 5920G\n\t\t1028 01da  OptiPlex 745\n\t\t1028 01f3  Inspiron 1420\n\t\t1028 022f  Inspiron 1525\n\t\t103c 30c0  Compaq 6710b\n\t\t103c 30c1  Compaq 6910p\n\t\t103c 30cc  Pavilion dv6700\n\t\t103c 30d9  Presario C700\n\t\t1043 1017  X58LE\n\t\t1043 81ec  P5B\n\t\t104d 9005  Vaio VGN-FZ260E\n\t\t104d 902d  VAIO VGN-NR120E\n\t\t1462 7235  P965 Neo MS-7235 mainboard\n\t\t17aa 20ab  ThinkPad T61/R61\n\t\t17c0 4083  Medion WIM 2210 Notebook PC [MD96850]\n\t\te4bf cc47  CCG-RUMBA\n\t283a  82801H (ICH8 Family) USB2 EHCI Controller #2\n\t\t1025 0121  Aspire 5920G\n\t\t1028 01da  OptiPlex 745\n\t\t1028 01f3  Inspiron 1420\n\t\t1028 022f  Inspiron 1525\n\t\t103c 30c0  Compaq 6710b\n\t\t103c 30c1  Compaq 6910p\n\t\t103c 30cc  Pavilion dv6700\n\t\t1043 1017  X58LE\n\t\t1043 81ec  P5B\n\t\t104d 9005  Vaio VGN-FZ260E\n\t\t104d 902d  VAIO VGN-NR120E\n\t\t17aa 20ab  ThinkPad T61/R61\n\t\t17c0 4083  Medion WIM 2210 Notebook PC [MD96850]\n\t\te4bf cc47  CCG-RUMBA\n\t283e  82801H (ICH8 Family) SMBus Controller\n\t\t1025 0121  Aspire 5920G\n\t\t1028 01da  OptiPlex 745\n\t\t1028 01f3  Inspiron 1420\n\t\t1028 022f  Inspiron 1525\n\t\t103c 30d9  Presario C700\n\t\t1043 1017  X58LE\n\t\t1043 81ec  P5B\n\t\t104d 9005  Vaio VGN-FZ260E\n\t\t104d 9008  Vaio VGN-SZ79SN_C\n\t\t104d 902d  VAIO VGN-NR120E\n\t\t1462 7235  P965 Neo MS-7235 mainboard\n\t\t17aa 20a9  ThinkPad T61/R61\n\t\t17c0 4083  Medion WIM 2210 Notebook PC [MD96850]\n\t\te4bf cc47  CCG-RUMBA\n\t283f  82801H (ICH8 Family) PCI Express Port 1\n\t\t1028 01da  OptiPlex 745\n\t\t103c 30c1  Compaq 6910p\n\t\t1043 1017  X58LE\n\t\t1043 81ec  P5B\n\t\t104d 902d  VAIO VGN-NR120E\n\t\t17aa 20ad  ThinkPad T61/R61\n\t\t17c0 4083  Medion WIM 2210 Notebook PC [MD96850]\n\t2841  82801H (ICH8 Family) PCI Express Port 2\n\t\t103c 30c1  Compaq 6910p\n\t\t1043 1017  X58LE\n\t\t1043 81ec  P5B\n\t\t104d 902d  VAIO VGN-NR120E\n\t\t17aa 20ad  ThinkPad T61/R61\n\t\t17c0 4083  Medion WIM 2210 Notebook PC [MD96850]\n\t2843  82801H (ICH8 Family) PCI Express Port 3\n\t\t1043 1017  X58LE\n\t\t1043 81ec  P5B\n\t\t104d 902d  VAIO VGN-NR120E\n\t\t17aa 20ad  ThinkPad T61/R61\n\t\t17c0 4083  Medion WIM 2210 Notebook PC [MD96850]\n\t2845  82801H (ICH8 Family) PCI Express Port 4\n\t\t1043 1017  X58LE\n\t\t1043 81ec  P5B\n\t\t17aa 20ad  ThinkPad T61/R61\n\t\t17c0 4083  Medion WIM 2210 Notebook PC [MD96850]\n\t2847  82801H (ICH8 Family) PCI Express Port 5\n\t\t1028 01da  OptiPlex 745\n\t\t103c 30c1  Compaq 6910p\n\t\t1043 81ec  P5B\n\t\t17aa 20ad  ThinkPad T61/R61\n\t\t17c0 4083  Medion WIM 2210 Notebook PC [MD96850]\n\t2849  82801H (ICH8 Family) PCI Express Port 6\n\t284b  82801H (ICH8 Family) HD Audio Controller\n\t\t1025 011f  Realtek ALC268 audio codec\n\t\t1025 0121  Aspire 5920G\n\t\t1025 0145  Realtek ALC889 (Aspire 8920G w. Dolby Theater)\n\t\t1028 01da  OptiPlex 745\n\t\t1028 01f3  Inspiron 1420\n\t\t1028 01f9  Latitude D630\n\t\t1028 01ff  Precision M4300\n\t\t1028 022f  Inspiron 1525\n\t\t1028 0256  Studio 1735\n\t\t103c 2802  Compaq dc7700p\n\t\t103c 30c0  Compaq 6710b\n\t\t103c 30c1  Compaq 6910p\n\t\t103c 30cc  Pavilion dv6700\n\t\t1043 1339  M51S series\n\t\t1043 17f3  X58LE\n\t\t1043 81ec  P5B\n\t\t104d 9005  Vaio VGN-FZ260E\n\t\t104d 9008  Vaio VGN-SZ79SN_C\n\t\t104d 9016  Sony VAIO VGN-AR51M\n\t\t104d 902d  VAIO VGN-NR120E\n\t\t14f1 5051  Presario C700\n\t\t17aa 20ac  ThinkPad T61/R61\n\t\t17c0 4088  Medion WIM 2210 Notebook PC [MD96850]\n\t\t8384 7616  Dell Vostro 1400\n\t\te4bf cc47  CCG-RUMBA\n\t284f  82801H (ICH8 Family) Thermal Reporting Device\n\t2850  82801HM/HEM (ICH8M/ICH8M-E) IDE Controller\n\t\t1025 0121  Aspire 5920G\n\t\t1028 01f3  Inspiron 1420\n\t\t1028 022f  Inspiron 1525\n\t\t103c 30c0  Compaq 6710b\n\t\t103c 30c1  Compaq 6910p\n\t\t103c 30cc  Pavilion dv6700\n\t\t103c 30d9  Presario C700\n\t\t1043 1017  X58LE\n\t\t104d 9005  Vaio VGN-FZ260E\n\t\t104d 902d  VAIO VGN-NR120E\n\t\t17aa 20a6  ThinkPad T61/R61\n\t\t17c0 4083  Medion WIM 2210 Notebook PC [MD96850]\n\t\te4bf cc47  CCG-RUMBA\n\t2880  Ice Lake DDRIO Registers\n\t28c0  Volume Management Device NVMe RAID Controller\n\t\t1d49 011a  Intel VROC (VMD NVMe RAID) for ThinkSystem V4 PL\n\t2912  82801IH (ICH9DH) LPC Interface Controller\n\t2914  82801IO (ICH9DO) LPC Interface Controller\n\t\t1028 0211  Optiplex 755\n\t2916  82801IR (ICH9R) LPC Interface Controller\n\t\t1028 020d  Inspiron 530\n\t\t103c 2a6f  Asus IPIBL-LB Motherboard\n\t\t1043 8277  P5K PRO Motherboard\n\t\t1462 7345  MS-7345 Motherboard\n\t\t8086 5044  Desktop Board DP35DP\n\t2917  ICH9M-E LPC Interface Controller\n\t\t17aa 20f5  ThinkPad T400\n\t\te4bf cc4d  CCM-BOOGIE\n\t2918  82801IB (ICH9) LPC Interface Controller\n\t\t1028 0236  PowerEdge R610 82801IB (ICH9) LPC Interface Controller\n\t\t1462 7360  G33/P35 Neo\n\t\t1af4 1100  QEMU Virtual Machine\n\t2919  ICH9M LPC Interface Controller\n\t2920  82801IR/IO/IH (ICH9R/DO/DH) 4 port SATA Controller [IDE mode]\n\t\t1028 020d  Inspiron 530\n\t\t1028 020f  PowerEdge R300 onboard SATA Controller\n\t\t1028 0210  PowerEdge T300 onboard SATA Controller\n\t\t1028 0211  Optiplex 755\n\t\t1028 023c  PowerEdge R200 onboard SATA Controller\n\t\t1043 8277  P5K PRO Motherboard: 82801IR [ICH9R]\n\t\t1462 7345  MS-7345 Motherboard: Intel 82801IR [ICH9R]\n\t2921  82801IB (ICH9) 2 port SATA Controller [IDE mode]\n\t\t1028 0235  PowerEdge R710 SATA IDE Controller\n\t\t1028 0236  PowerEdge R610 SATA IDE Controller\n\t\t1028 0237  PowerEdge T610 SATA IDE Controller\n\t\t1462 7360  G33/P35 Neo\n\t2922  82801IR/IO/IH (ICH9R/DO/DH) 6 port SATA Controller [AHCI mode]\n\t\t1043 8277  P5K PRO Motherboard: 82801IR [ICH9R]\n\t\t1462 7345  MS-7345 Motherboard: Intel 82801IR [ICH9R]\n\t\t1af4 1100  QEMU Virtual Machine\n\t\t8086 5044  Desktop Board DP35DP\n\t2923  82801IB (ICH9) 4 port SATA Controller [AHCI mode]\n\t2925  82801IR/IO (ICH9R/DO) SATA Controller [RAID mode]\n\t\t1734 10e0  System Board D2542\n\t\t8086 2925  System Board D2542\n\t2926  82801I (ICH9 Family) 2 port SATA Controller [IDE mode]\n\t\t1028 020d  Inspiron 530\n\t\t1028 020f  PowerEdge R300 onboard SATA Controller\n\t\t1028 0210  PowerEdge T300 onboard SATA Controller\n\t\t1028 0211  Optiplex 755\n\t\t1043 8277  P5K PRO Motherboard: 82801IR [ICH9R]\n\t\t1462 7345  MS-7345 Motherboard: Intel 82801IR [ICH9R]\n\t\t1462 7360  G33/P35 Neo\n\t2928  82801IBM/IEM (ICH9M/ICH9M-E) 2 port SATA Controller [IDE mode]\n\t2929  82801IBM/IEM (ICH9M/ICH9M-E) 4 port SATA Controller [AHCI mode]\n\t\t103c 3628  dv6-1190en\n\t\t17aa 20f8  ThinkPad T400\n\t\te4bf cc4d  CCM-BOOGIE\n\t292c  82801IEM (ICH9M-E) SATA Controller [RAID mode]\n\t292d  82801IBM/IEM (ICH9M/ICH9M-E) 2 port SATA Controller [IDE mode]\n\t\te4bf cc4d  CCM-BOOGIE\n\t2930  82801I (ICH9 Family) SMBus Controller\n\t\t1028 020d  Inspiron 530\n\t\t1028 0211  Optiplex 755\n\t\t103c 2a6f  Asus IPIBL-LB Motherboard\n\t\t103c 3628  dv6-1190en\n\t\t1043 8277  P5K PRO Motherboard: 82801IR [ICH9R]\n\t\t1462 7345  MS-7345 Motherboard: Intel 82801I/IR [ICH9/ICH9R]\n\t\t1462 7360  G33/P35 Neo\n\t\t17aa 20f9  ThinkPad T400\n\t\t1af4 1100  QEMU Virtual Machine\n\t\t8086 5044  Desktop Board DP35DP\n\t\te4bf cc4d  CCM-BOOGIE\n\t2932  82801I (ICH9 Family) Thermal Subsystem\n\t\t103c 3628  dv6-1190en\n\t2934  82801I (ICH9 Family) USB UHCI Controller #1\n\t\t1028 020d  Inspiron 530\n\t\t1028 020f  PowerEdge R300 onboard UHCI\n\t\t1028 0210  PowerEdge T300 onboard UHCI\n\t\t1028 0211  Optiplex 755\n\t\t1028 0235  PowerEdge R710 USB UHCI Controller\n\t\t1028 0236  PowerEdge R610 USB UHCI Controller\n\t\t1028 0237  PowerEdge T610 USB UHCI Controller\n\t\t1028 023c  PowerEdge R200 onboard UHCI\n\t\t1028 0287  PowerEdge M610 onboard UHCI\n\t\t1028 029c  PowerEdge M710 USB UHCI Controller\n\t\t1028 2011  Optiplex 755\n\t\t103c 2a6f  Asus IPIBL-LB Motherboard\n\t\t1043 8277  P5K PRO Motherboard: 82801IR [ICH9R]\n\t\t1462 7345  MS-7345 Motherboard: Intel 82801I/IR [ICH9/ICH9R]\n\t\t1462 7360  G33/P35 Neo\n\t\t17aa 20f0  ThinkPad T400\n\t\t1af4 1100  QEMU Virtual Machine\n\t\t8086 5044  Desktop Board DP35DP\n\t\te4bf cc4d  CCM-BOOGIE\n\t2935  82801I (ICH9 Family) USB UHCI Controller #2\n\t\t1028 020d  Inspiron 530\n\t\t1028 020f  PowerEdge R300 onboard UHCI\n\t\t1028 0210  PowerEdge T300 onboard UHCI\n\t\t1028 0211  Optiplex 755\n\t\t1028 0235  PowerEdge R710 USB UHCI Controller\n\t\t1028 0236  PowerEdge R610 USB UHCI Controller\n\t\t1028 0237  PowerEdge T610 USB UHCI Controller\n\t\t1028 023c  PowerEdge R200 onboard UHCI\n\t\t1028 0287  PowerEdge M610 onboard UHCI\n\t\t1028 029c  PowerEdge M710 USB UHCI Controller\n\t\t103c 2a6f  Asus IPIBL-LB Motherboard\n\t\t1043 8277  P5K PRO Motherboard: 82801IR [ICH9R]\n\t\t1462 7345  MS-7345 Motherboard: Intel 82801I/IR [ICH9/ICH9R]\n\t\t1462 7360  G33/P35 Neo\n\t\t17aa 20f0  ThinkPad T400\n\t\t1af4 1100  QEMU Virtual Machine\n\t\t8086 5044  Desktop Board DP35DP\n\t\te4bf cc4d  CCM-BOOGIE\n\t2936  82801I (ICH9 Family) USB UHCI Controller #3\n\t\t1028 020d  Inspiron 530\n\t\t1028 020f  PowerEdge R300 onboard UHCI\n\t\t1028 0210  PowerEdge T300 onboard UHCI\n\t\t1028 0211  Optiplex 755\n\t\t1028 0237  PowerEdge T610 USB UHCI Controller\n\t\t1028 023c  PowerEdge R200 onboard UHCI\n\t\t1028 0287  PowerEdge M610 onboard UHCI\n\t\t1028 029c  PowerEdge M710 USB UHCI Controller\n\t\t103c 2a6f  Asus IPIBL-LB Motherboard\n\t\t1043 8277  P5K PRO Motherboard: 82801IR [ICH9R]\n\t\t1462 7345  MS-7345 Motherboard: Intel 82801I/IR [ICH9/ICH9R]\n\t\t1462 7360  G33/P35 Neo\n\t\t17aa 20f0  ThinkPad T400\n\t\t1af4 1100  QEMU Virtual Machine\n\t\t8086 5044  Desktop Board DP35DP\n\t\te4bf cc4d  CCM-BOOGIE\n\t2937  82801I (ICH9 Family) USB UHCI Controller #4\n\t\t1028 020d  Inspiron 530\n\t\t1028 0211  Optiplex 755\n\t\t1028 0235  PowerEdge R710 USB UHCI Controller\n\t\t1028 0236  PowerEdge R610 USB UHCI Controller\n\t\t1028 0237  PowerEdge T610 USB UHCI Controller\n\t\t1028 0287  PowerEdge M610 onboard UHCI\n\t\t1028 029c  PowerEdge M710 USB UHCI Controller\n\t\t1028 2011  Optiplex 755\n\t\t103c 2a6f  Asus IPIBL-LB Motherboard\n\t\t1043 8277  P5K PRO Motherboard: 82801IR [ICH9R]\n\t\t1462 7345  MS-7345 Motherboard: Intel 82801I/IR [ICH9/ICH9R]\n\t\t1462 7360  G33/P35 Neo\n\t\t17aa 20f0  ThinkPad T400\n\t\t1af4 1100  QEMU Virtual Machine\n\t\t8086 2937  Optiplex 755\n\t\t8086 2942  828011 (ICH9 Family ) USB UHCI Controller\n\t\t8086 5044  Desktop Board DP35DP\n\t\te4bf cc4d  CCM-BOOGIE\n\t2938  82801I (ICH9 Family) USB UHCI Controller #5\n\t\t1028 020d  Inspiron 530\n\t\t1028 0211  Optiplex 755\n\t\t1028 0235  PowerEdge R710 USB UHCI Controller\n\t\t1028 0236  PowerEdge R610 USB UHCI Controller\n\t\t1028 0237  PowerEdge T610 USB UHCI Controller\n\t\t1028 0287  PowerEdge M610 onboard UHCI\n\t\t1028 029c  PowerEdge M710 USB UHCI Controller\n\t\t103c 2a6f  Asus IPIBL-LB Motherboard\n\t\t1043 8277  P5K PRO Motherboard: 82801IR [ICH9R]\n\t\t1462 7345  MS-7345 Motherboard: Intel 82801I/IR [ICH9/ICH9R]\n\t\t1462 7360  G33/P35 Neo\n\t\t17aa 20f0  ThinkPad T400\n\t\t1af4 1100  QEMU Virtual Machine\n\t\t8086 2938  Optiplex 755\n\t\t8086 5044  Desktop Board DP35DP\n\t\te4bf cc4d  CCM-BOOGIE\n\t2939  82801I (ICH9 Family) USB UHCI Controller #6\n\t\t1028 020d  Inspiron 530\n\t\t1028 0210  PowerEdge T300 onboard UHCI\n\t\t1028 0237  PowerEdge T610 USB UHCI Controller\n\t\t103c 2a6f  Asus IPIBL-LB Motherboard\n\t\t1043 8277  P5K PRO Motherboard: 82801IR [ICH9R]\n\t\t1462 7345  MS-7345 Motherboard: Intel 82801I/IR [ICH9/ICH9R]\n\t\t1462 7360  G33/P35 Neo\n\t\t17aa 20f0  ThinkPad T400\n\t\t1af4 1100  QEMU Virtual Machine\n\t\t8086 5044  Desktop Board DP35DP\n\t\te4bf cc4d  CCM-BOOGIE\n\t293a  82801I (ICH9 Family) USB2 EHCI Controller #1\n\t\t1028 020d  Inspiron 530\n\t\t1028 020f  PowerEdge R300 onboard EHCI\n\t\t1028 0210  PowerEdge T300 onboard EHCI\n\t\t1028 0211  Optiplex 755\n\t\t1028 0235  PowerEdge R710 USB EHCI Controller\n\t\t1028 0236  PowerEdge R610 USB EHCI Controller\n\t\t1028 0237  PowerEdge T610 USB EHCI Controller\n\t\t1028 023c  PowerEdge R200 onboard EHCI\n\t\t1028 0287  PowerEdge M610 onboard EHCI\n\t\t1028 029c  PowerEdge M710 USB EHCI Controller\n\t\t103c 2a6f  Asus IPIBL-LB Motherboard\n\t\t1043 8277  P5K PRO Motherboard: 82801IR [ICH9R]\n\t\t1462 7345  MS-7345 Motherboard: Intel 82801I/IR [ICH9/ICH9R]\n\t\t1462 7360  G33/P35 Neo\n\t\t17aa 20f1  ThinkPad T400\n\t\t1af4 1100  QEMU Virtual Machine\n\t\t8086 5044  Desktop Board DP35DP\n\t\te4bf cc4d  CCM-BOOGIE\n\t293c  82801I (ICH9 Family) USB2 EHCI Controller #2\n\t\t1028 020d  Inspiron 530\n\t\t1028 0211  Optiplex 755\n\t\t1028 0235  PowerEdge R710 USB EHCI Controller\n\t\t1028 0236  PowerEdge R610 USB EHCI Controller\n\t\t1028 0237  PowerEdge T610 USB EHCI Controller\n\t\t1028 0287  PowerEdge M610 onboard EHCI\n\t\t1028 029c  PowerEdge M710 USB EHCI Controller\n\t\t103c 2a6f  Asus IPIBL-LB Motherboard\n\t\t1043 8277  P5K PRO Motherboard: 82801IR [ICH9R]\n\t\t1462 7345  MS-7345 Motherboard: Intel 82801I/IR [ICH9/ICH9R]\n\t\t1462 7360  G33/P35 Neo\n\t\t17aa 20f1  ThinkPad T400\n\t\t1af4 1100  QEMU Virtual Machine\n\t\t8086 293c  Optiplex 755\n\t\t8086 5044  Desktop Board DP35DP\n\t\te4bf cc4d  CCM-BOOGIE\n\t293e  82801I (ICH9 Family) HD Audio Controller\n\t\t1028 020d  Inspiron 530\n\t\t1028 0211  Optiplex 755\n\t\t103c 2a6f  Asus IPIBL-LB Motherboard\n\t\t103c 3628  dv6-1190en\n\t\t1043 829f  P5K PRO Motherboard: 82801IR [ICH9R]\n\t\t1462 735a  MS-7345 Motherboard: Intel 82801I/IR [ICH9/ICH9R]\n\t\t1462 7360  G33/P35 Neo\n\t\t17aa 20f2  ThinkPad T400\n\t\t1af4 1100  QEMU Virtual Machine\n\t\t8086 293e  Optiplex 755\n\t\t8086 2940  Optiplex 755\n\t\te4bf cc4d  CCM-BOOGIE\n\t2940  82801I (ICH9 Family) PCI Express Port 1\n\t\t1028 020d  Inspiron 530\n\t\t1028 0211  Optiplex 755\n\t\t103c 2a6f  Asus IPIBL-LB Motherboard\n\t\t1043 8277  P5K PRO Motherboard: 82801IR [ICH9R]\n\t\t1462 7345  MS-7345 Motherboard: Intel 82801I/IR [ICH9/ICH9R]\n\t\t17aa 20f3  ThinkPad T400\n\t\t8086 2940  Optiplex 755\n\t2942  82801I (ICH9 Family) PCI Express Port 2\n\t\t1028 020d  Inspiron 530\n\t\t17aa 20f3  ThinkPad T400\n\t2944  82801I (ICH9 Family) PCI Express Port 3\n\t\t1028 020d  Inspiron 530\n\t\t103c 2a6f  Asus IPIBL-LB Motherboard\n\t2946  82801I (ICH9 Family) PCI Express Port 4\n\t\t1028 020d  Inspiron 530\n\t\t17aa 20f3  ThinkPad T400\n\t2948  82801I (ICH9 Family) PCI Express Port 5\n\t\t1028 020d  Inspiron 530\n\t\t1043 8277  P5K PRO Motherboard: 82801IR [ICH9R]\n\t\t1462 7345  MS-7345 Motherboard: Intel 82801I/IR [ICH9/ICH9R]\n\t\t17aa 20f3  ThinkPad T400\n\t294a  82801I (ICH9 Family) PCI Express Port 6\n\t\t1028 020d  Inspiron 530\n\t\t1043 8277  P5K PRO Motherboard: 82801IR [ICH9R]\n\t\t1462 7345  MS-7345 Motherboard: Intel 82801I/IR [ICH9/ICH9R]\n\t294c  82566DC-2 Gigabit Network Connection\n\t\t17aa 302e  82566DM-2 Gigabit Network Connection\n\t2970  82946GZ/PL/GL Memory Controller Hub\n\t\t1043 823b  P5B-MX/WiFi-AP\n\t2971  82946GZ/PL/GL PCI Express Root Port\n\t2972  82946GZ/GL Integrated Graphics Controller\n\t\t1043 823b  P5B-MX/WiFi-AP\n\t2973  82946GZ/GL Integrated Graphics Controller\n\t2974  82946GZ/GL HECI Controller\n\t2975  82946GZ/GL HECI Controller\n\t2976  82946GZ/GL PT IDER Controller\n\t2977  82946GZ/GL KT Controller\n\t2980  82G35 Express DRAM Controller\n\t2981  82G35 Express PCI Express Root Port\n\t2982  82G35 Express Integrated Graphics Controller\n\t2983  82G35 Express Integrated Graphics Controller\n\t2984  82G35 Express HECI Controller\n\t2990  82Q963/Q965 Memory Controller Hub\n\t\t1028 01da  OptiPlex 745\n\t2991  82Q963/Q965 PCI Express Root Port\n\t2992  82Q963/Q965 Integrated Graphics Controller\n\t2993  82Q963/Q965 Integrated Graphics Controller\n\t2994  82Q963/Q965 HECI Controller\n\t2995  82Q963/Q965 HECI Controller\n\t2996  82Q963/Q965 PT IDER Controller\n\t2997  82Q963/Q965 KT Controller\n\t29a0  82P965/G965 Memory Controller Hub\n\t\t1043 81ea  P5B\n\t\t1462 7276  MS-7276 [G965MDH]\n\t29a1  82P965/G965 PCI Express Root Port\n\t29a2  82G965 Integrated Graphics Controller\n\t\t1462 7276  MS-7276 [G965MDH]\n\t29a3  82G965 Integrated Graphics Controller\n\t29a4  82P965/G965 HECI Controller\n\t29a5  82P965/G965 HECI Controller\n\t29a6  82P965/G965 PT IDER Controller\n\t29a7  82P965/G965 KT Controller\n\t29b0  82Q35 Express DRAM Controller\n\t\t1028 0211  OptiPlex 755\n\t29b1  82Q35 Express PCI Express Root Port\n\t\t1028 0211  OptiPlex 755\n\t29b2  82Q35 Express Integrated Graphics Controller\n\t\t1028 0211  OptiPlex 755\n\t29b3  82Q35 Express Integrated Graphics Controller\n\t\t1028 0211  OptiPlex 755\n\t29b4  82Q35 Express MEI Controller\n\t\t1028 0211  OptiPlex 755\n\t29b5  82Q35 Express MEI Controller\n\t29b6  82Q35 Express PT IDER Controller\n\t\t1028 0211  OptiPlex 755\n\t29b7  82Q35 Express Serial KT Controller\n\t\t1028 0211  OptiPlex 755\n\t29c0  82G33/G31/P35/P31 Express DRAM Controller\n\t\t1028 020d  Inspiron 530\n\t\t103c 2a6f  Asus IPIBL-LB Motherboard\n\t\t1043 8276  P5K PRO Motherboard: Intel 82P35 Northbridge\n\t\t1043 82b0  P5KPL-VM Motherboard\n\t\t1462 7345  MS-7345 Motherboard: Intel 82G33/P35 Northbridge\n\t\t1462 7360  G33/P35 Neo\n\t\t1af4 1100  QEMU Virtual Machine\n\t\t8086 5044  Desktop Board DP35DP\n\t29c1  82G33/G31/P35/P31 Express PCI Express Root Port\n\t\t1028 020d  Inspiron 530\n\t\t1043 8276  P5K PRO Motherboard: Intel 82P35 Northbridge\n\t29c2  82G33/G31 Express Integrated Graphics Controller\n\t\t1028 020d  Inspiron 530\n\t\t1043 82b0  P5KPL-VM Motherboard\n\t29c3  82G33/G31 Express Integrated Graphics Controller\n\t\t1028 020d  Inspiron 530\n\t\t1043 82b0  P5KPL-VM Motherboard\n\t29c4  82G33/G31/P35/P31 Express MEI Controller\n\t\t8086 5044  Desktop Board DP35DP\n\t29c5  82G33/G31/P35/P31 Express MEI Controller\n\t29c6  82G33/G31/P35/P31 Express PT IDER Controller\n\t29c7  82G33/G31/P35/P31 Express Serial KT Controller\n\t29cf  Virtual HECI Controller\n\t29d0  82Q33 Express DRAM Controller\n\t29d1  82Q33 Express PCI Express Root Port\n\t29d2  82Q33 Express Integrated Graphics Controller\n\t29d3  82Q33 Express Integrated Graphics Controller\n\t29d4  82Q33 Express MEI Controller\n\t29d5  82Q33 Express MEI Controller\n\t29d6  82Q33 Express PT IDER Controller\n\t29d7  82Q33 Express Serial KT Controller\n\t29e0  82X38/X48 Express DRAM Controller\n\t29e1  82X38/X48 Express Host-Primary PCI Express Bridge\n\t29e4  82X38/X48 Express MEI Controller\n\t29e5  82X38/X48 Express MEI Controller\n\t29e6  82X38/X48 Express PT IDER Controller\n\t29e7  82X38/X48 Express Serial KT Controller\n\t29e9  82X38/X48 Express Host-Secondary PCI Express Bridge\n\t29f0  3200/3210 Chipset DRAM Controller\n\t29f1  3200/3210 Chipset Host-Primary PCI Express Bridge\n\t29f4  3200/3210 Chipset MEI Controller\n\t29f5  3200/3210 Chipset MEI Controller\n\t29f6  3200/3210 Chipset PT IDER Controller\n\t29f7  3200/3210 Chipset Serial KT Controller\n\t29f9  3210 Chipset Host-Secondary PCI Express Bridge\n\t2a00  Mobile PM965/GM965/GL960 Memory Controller Hub\n\t\t1025 0121  Aspire 5920G\n\t\t1028 01f3  Inspiron 1420\n\t\t1028 022f  Inspiron 1525\n\t\t103c 30c0  Compaq 6710b\n\t\t103c 30c1  Compaq 6910p\n\t\t103c 30c5  Compaq 8510p\n\t\t103c 30cc  Pavilion dv6700\n\t\t103c 30d9  Presario C700\n\t\t1043 1017  X58LE\n\t\t104d 9005  Vaio VGN-FZ260E\n\t\t104d 902d  VAIO VGN-NR120E\n\t\t17aa 20b1  ThinkPad T61\n\t\t17aa 20b3  ThinkPad T61/R61\n\t\t17c0 4082  Medion WIM 2210 Notebook PC [MD96850]\n\t\te4bf cc47  CCG-RUMBA\n\t2a01  Mobile PM965/GM965/GL960 PCI Express Root Port\n\t2a02  Mobile GM965/GL960 Integrated Graphics Controller (primary)\n\t\t1028 01f3  Inspiron 1420\n\t\t1028 01f9  Latitude D630\n\t\t1028 022f  Inspiron 1525\n\t\t103c 30c0  Compaq 6710b\n\t\t103c 30d9  Presario C700\n\t\t1043 14e2  X58LE\n\t\t104d 902d  VAIO VGN-NR120E\n\t\t17aa 20b5  GM965 [X3100] on ThinkPad T61/R61\n\t\t17c0 4082  GM965 on Medion WIM 2210 Notebook PC [MD96850]\n\t\te4bf cc47  CCG-RUMBA\n\t2a03  Mobile GM965/GL960 Integrated Graphics Controller (secondary)\n\t\t1028 01f3  Inspiron 1420\n\t\t1028 022f  Inspiron 1525\n\t\t103c 30c0  Compaq 6710b\n\t\t103c 30d9  Presario C700\n\t\t1043 14e2  X58LE\n\t\t104d 902d  VAIO VGN-NR120E\n\t\t17aa 20b5  GM965 [X3100] on ThinkPad T61/R61\n\t\t17c0 4082  GM965 on Medion WIM 2210 Notebook PC [MD96850]\n\t\te4bf cc47  CCG-RUMBA\n\t2a04  Mobile PM965/GM965 MEI Controller\n\t\t103c 30c1  Compaq 6910p\n\t2a05  Mobile PM965/GM965 MEI Controller\n\t2a06  Mobile PM965/GM965 PT IDER Controller\n\t\t103c 30c1  Compaq 6910p\n\t2a07  Mobile PM965/GM965 KT Controller\n\t\t103c 30c1  Compaq 6910p\n\t2a10  Mobile GME965/GLE960 Memory Controller Hub\n\t\te4bf cc47  CCG-RUMBA\n\t2a11  Mobile GME965/GLE960 PCI Express Root Port\n\t2a12  Mobile GME965/GLE960 Integrated Graphics Controller\n\t\te4bf cc47  CCG-RUMBA\n\t2a13  Mobile GME965/GLE960 Integrated Graphics Controller\n\t\te4bf cc47  CCG-RUMBA\n\t2a14  Mobile GME965/GLE960 MEI Controller\n\t2a15  Mobile GME965/GLE960 MEI Controller\n\t2a16  Mobile GME965/GLE960 PT IDER Controller\n\t2a17  Mobile GME965/GLE960 KT Controller\n\t2a40  Mobile 4 Series Chipset Memory Controller Hub\n\t\t17aa 20e0  ThinkPad T400\n\t\te4bf cc4d  CCM-BOOGIE\n\t2a41  Mobile 4 Series Chipset PCI Express Graphics Port\n\t\te4bf cc4d  CCM-BOOGIE\n\t2a42  Mobile 4 Series Chipset Integrated Graphics Controller\n\t\t1028 02aa  Dell Inspiron 1545\n\t\t17aa 20e4  ThinkPad T400\n\t\t17aa 2112  ThinkPad T400\n\t\te4bf cc4d  CCM-BOOGIE\n\t2a43  Mobile 4 Series Chipset Integrated Graphics Controller\n\t\t17aa 20e4  ThinkPad T400\n\t\t17aa 2112  ThinkPad T400\n\t\te4bf cc4d  CCM-BOOGIE\n\t2a44  Mobile 4 Series Chipset MEI Controller\n\t\t17aa 20e6  ThinkPad T400\n\t2a45  Mobile 4 Series Chipset MEI Controller\n\t2a46  Mobile 4 Series Chipset PT IDER Controller\n\t2a47  Mobile 4 Series Chipset AMT SOL Redirection\n\t\t17aa 20ec  ThinkPad T400\n\t2a50  Cantiga MEI Controller\n\t2a51  Cantiga MEI Controller\n\t2a52  Cantiga PT IDER Controller\n\t2a53  Cantiga AMT SOL Redirection\n\t2b00  Xeon Processor E7 Product Family System Configuration Controller 1\n\t2b02  Xeon Processor E7 Product Family System Configuration Controller 2\n\t2b04  Xeon Processor E7 Product Family Power Controller\n\t2b08  Xeon Processor E7 Product Family Caching Agent 0\n\t2b0c  Xeon Processor E7 Product Family Caching Agent 1\n\t2b10  Xeon Processor E7 Product Family QPI Home Agent 0\n\t2b13  Xeon Processor E7 Product Family Memory Controller 0c\n\t2b14  Xeon Processor E7 Product Family Memory Controller 0a\n\t2b16  Xeon Processor E7 Product Family Memory Controller 0b\n\t2b18  Xeon Processor E7 Product Family QPI Home Agent 1\n\t2b1b  Xeon Processor E7 Product Family Memory Controller 1c\n\t2b1c  Xeon Processor E7 Product Family Memory Controller 1a\n\t2b1e  Xeon Processor E7 Product Family Memory Controller 1b\n\t2b20  Xeon Processor E7 Product Family Last Level Cache Coherence Engine 0\n\t2b22  Xeon Processor E7 Product Family System Configuration Controller 3\n\t2b24  Xeon Processor E7 Product Family Last Level Cache Coherence Engine 1\n\t2b28  Xeon Processor E7 Product Family Last Level Cache Coherence Engine 2\n\t2b2a  Xeon Processor E7 Product Family System Configuration Controller 4\n\t2b2c  Xeon Processor E7 Product Family Last Level Cache Coherence Engine 3\n\t2b30  Xeon Processor E7 Product Family Last Level Cache Coherence Engine 4\n\t2b34  Xeon Processor E7 Product Family Last Level Cache Coherence Engine 5\n\t2b38  Xeon Processor E7 Product Family Last Level Cache Coherence Engine 6\n\t2b3c  Xeon Processor E7 Product Family Last Level Cache Coherence Engine 7\n\t2b40  Xeon Processor E7 Product Family QPI Router Port 0-1\n\t2b42  Xeon Processor E7 Product Family QPI Router Port 2-3\n\t2b44  Xeon Processor E7 Product Family QPI Router Port 4-5\n\t2b46  Xeon Processor E7 Product Family QPI Router Port 6-7\n\t2b48  Xeon Processor E7 Product Family Test and Debug 0\n\t2b4c  Xeon Processor E7 Product Family Test and Debug 1\n\t2b50  Xeon Processor E7 Product Family QPI Physical Port 0: REUT control/status\n\t2b52  Xeon Processor E7 Product Family QPI Physical Port 0: Misc. control/status\n\t2b54  Xeon Processor E7 Product Family QPI Physical Port 1: REUT control/status\n\t2b56  Xeon Processor E7 Product Family QPI Physical Port 1: Misc. control/status\n\t2b58  Xeon Processor E7 Product Family QPI Physical Port 2: REUT control/status\n\t2b5a  Xeon Processor E7 Product Family QPI Physical Port 2: Misc. control/status\n\t2b5c  Xeon Processor E7 Product Family QPI Physical Port 3: REUT control/status\n\t2b5e  Xeon Processor E7 Product Family QPI Physical Port 3: Misc. control/status\n\t2b60  Xeon Processor E7 Product Family SMI Physical Port 0: REUT control/status\n\t2b62  Xeon Processor E7 Product Family SMI Physical Port 0: Misc control/status\n\t2b64  Xeon Processor E7 Product Family SMI Physical Port 1: REUT control/status\n\t2b66  Xeon Processor E7 Product Family SMI Physical Port 1: Misc control/status\n\t2b68  Xeon Processor E7 Product Family Last Level Cache Coherence Engine 8\n\t2b6c  Xeon Processor E7 Product Family Last Level Cache Coherence Engine 9\n\t2b80  Atom CE2700 Series [Puma 7]\n\t2b98  Puma 7 Trusted Execution Engine\n\t2bb5  Puma 7 xHCI Controller\n# Synopsys DesignWare Core SuperSpeed USB 3.0 Controller\n\t2bb7  Puma 7 USB Device Controller (OTG)\n\t2bdc  Puma 7 Thermal\n\t2be2  Puma 7 Security Processor\n\t2c01  Xeon 5500/Core i7 QuickPath Architecture System Address Decoder\n\t2c10  Xeon 5500/Core i7 QPI Link 0\n\t2c11  Xeon 5500/Core i7 QPI Physical 0\n\t2c14  Xeon 5500/Core i7 QPI Link 1\n\t2c15  Xeon 5500/Core i7 QPI Physical 1\n\t2c18  Xeon 5500/Core i7 Integrated Memory Controller\n\t2c19  Xeon 5500/Core i7 Integrated Memory Controller Target Address Decoder\n\t2c1a  Xeon 5500/Core i7 Integrated Memory Controller RAS Registers\n\t2c1c  Xeon 5500/Core i7 Integrated Memory Controller Test Registers\n\t2c20  Xeon 5500/Core i7 Integrated Memory Controller Channel 0 Control Registers\n\t2c21  Xeon 5500/Core i7 Integrated Memory Controller Channel 0 Address Registers\n\t2c22  Xeon 5500/Core i7 Integrated Memory Controller Channel 0 Rank Registers\n\t2c23  Xeon 5500/Core i7 Integrated Memory Controller Channel 0 Thermal Control Registers\n\t2c28  Xeon 5500/Core i7 Integrated Memory Controller Channel 1 Control Registers\n\t2c29  Xeon 5500/Core i7 Integrated Memory Controller Channel 1 Address Registers\n\t2c2a  Xeon 5500/Core i7 Integrated Memory Controller Channel 1 Rank Registers\n\t2c2b  Xeon 5500/Core i7 Integrated Memory Controller Channel 1 Thermal Control Registers\n\t2c30  Xeon 5500/Core i7 Integrated Memory Controller Channel 2 Control Registers\n\t2c31  Xeon 5500/Core i7 Integrated Memory Controller Channel 2 Address Registers\n\t2c32  Xeon 5500/Core i7 Integrated Memory Controller Channel 2 Rank Registers\n\t2c33  Xeon 5500/Core i7 Integrated Memory Controller Channel 2 Thermal Control Registers\n\t2c40  Xeon 5500/Core i7 QuickPath Architecture Generic Non-Core Registers\n\t2c41  Xeon 5500/Core i7 QuickPath Architecture Generic Non-Core Registers\n\t2c50  Core Processor QuickPath Architecture Generic Non-Core Registers\n\t2c51  Core Processor QuickPath Architecture Generic Non-Core Registers\n\t2c52  Core Processor QuickPath Architecture Generic Non-Core Registers\n\t2c53  Core Processor QuickPath Architecture Generic Non-Core Registers\n\t2c54  Core Processor QuickPath Architecture Generic Non-Core Registers\n\t2c55  Core Processor QuickPath Architecture Generic Non-Core Registers\n\t2c56  Core Processor QuickPath Architecture Generic Non-Core Registers\n\t2c57  Core Processor QuickPath Architecture Generic Non-Core Registers\n\t2c58  Xeon C5500/C3500 QPI Generic Non-core Registers\n\t2c59  Xeon C5500/C3500 QPI Generic Non-core Registers\n\t2c5a  Xeon C5500/C3500 QPI Generic Non-core Registers\n\t2c5b  Xeon C5500/C3500 QPI Generic Non-core Registers\n\t2c5c  Xeon C5500/C3500 QPI Generic Non-core Registers\n\t2c5d  Xeon C5500/C3500 QPI Generic Non-core Registers\n\t2c5e  Xeon C5500/C3500 QPI Generic Non-core Registers\n\t2c5f  Xeon C5500/C3500 QPI Generic Non-core Registers\n\t2c61  Core Processor QuickPath Architecture Generic Non-core Registers\n\t2c62  Core Processor QuickPath Architecture Generic Non-core Registers\n\t2c70  Xeon 5600 Series QuickPath Architecture Generic Non-core Registers\n\t2c81  Core Processor QuickPath Architecture System Address Decoder\n\t2c90  Core Processor QPI Link 0\n\t2c91  Core Processor QPI Physical 0\n\t2c98  Core Processor Integrated Memory Controller\n\t2c99  Core Processor Integrated Memory Controller Target Address Decoder\n\t2c9a  Core Processor Integrated Memory Controller Test Registers\n\t2c9c  Core Processor Integrated Memory Controller Test Registers\n\t2ca0  Core Processor Integrated Memory Controller Channel 0 Control Registers\n\t2ca1  Core Processor Integrated Memory Controller Channel 0 Address Registers\n\t2ca2  Core Processor Integrated Memory Controller Channel 0 Rank Registers\n\t2ca3  Core Processor Integrated Memory Controller Channel 0 Thermal Control Registers\n\t2ca8  Core Processor Integrated Memory Controller Channel 1 Control Registers\n\t2ca9  Core Processor Integrated Memory Controller Channel 1 Address Registers\n\t2caa  Core Processor Integrated Memory Controller Channel 1 Rank Registers\n\t2cab  Core Processor Integrated Memory Controller Channel 1 Thermal Control Registers\n\t2cc1  Xeon C5500/C3500 QPI System Address Decoder\n\t2cd0  Xeon C5500/C3500 QPI Link 0\n\t2cd1  Xeon C5500/C3500 QPI Physical 0\n\t2cd4  Xeon C5500/C3500 QPI Link 1\n\t2cd5  Xeon C5500/C3500 QPI Physical 1\n\t2cd8  Xeon C5500/C3500 Integrated Memory Controller Registers\n\t2cd9  Xeon C5500/C3500 Integrated Memory Controller Target Address Decoder\n\t2cda  Xeon C5500/C3500 Integrated Memory Controller RAS Registers\n\t2cdc  Xeon C5500/C3500 Integrated Memory Controller Test Registers\n\t2ce0  Xeon C5500/C3500 Integrated Memory Controller Channel 0 Control\n\t2ce1  Xeon C5500/C3500 Integrated Memory Controller Channel 0 Address\n\t2ce2  Xeon C5500/C3500 Integrated Memory Controller Channel 0 Rank\n\t2ce3  Xeon C5500/C3500 Integrated Memory Controller Channel 0 Thermal Control\n\t2ce8  Xeon C5500/C3500 Integrated Memory Controller Channel 1 Control\n\t2ce9  Xeon C5500/C3500 Integrated Memory Controller Channel 1 Address\n\t2cea  Xeon C5500/C3500 Integrated Memory Controller Channel 1 Rank\n\t2ceb  Xeon C5500/C3500 Integrated Memory Controller Channel 1 Thermal Control\n\t2cf0  Xeon C5500/C3500 Integrated Memory Controller Channel 2 Control\n\t2cf1  Xeon C5500/C3500 Integrated Memory Controller Channel 2 Address\n\t2cf2  Xeon C5500/C3500 Integrated Memory Controller Channel 2 Rank\n\t2cf3  Xeon C5500/C3500 Integrated Memory Controller Channel 2 Thermal Control\n\t2d01  Core Processor QuickPath Architecture System Address Decoder\n\t2d10  Core Processor QPI Link 0\n\t2d11  1st Generation Core i3/5/7 Processor QPI Physical 0\n\t2d12  1st Generation Core i3/5/7 Processor Reserved\n\t2d13  1st Generation Core i3/5/7 Processor Reserved\n\t2d81  Xeon 5600 Series QuickPath Architecture System Address Decoder\n\t2d90  Xeon 5600 Series QPI Link 0\n\t2d91  Xeon 5600 Series QPI Physical 0\n\t2d92  Xeon 5600 Series Mirror Port Link 0\n\t2d93  Xeon 5600 Series Mirror Port Link 1\n\t2d94  Xeon 5600 Series QPI Link 1\n\t2d95  Xeon 5600 Series QPI Physical 1\n\t2d98  Xeon 5600 Series Integrated Memory Controller Registers\n\t2d99  Xeon 5600 Series Integrated Memory Controller Target Address Decoder\n\t2d9a  Xeon 5600 Series Integrated Memory Controller RAS Registers\n\t2d9c  Xeon 5600 Series Integrated Memory Controller Test Registers\n\t2da0  Xeon 5600 Series Integrated Memory Controller Channel 0 Control\n\t2da1  Xeon 5600 Series Integrated Memory Controller Channel 0 Address\n\t2da2  Xeon 5600 Series Integrated Memory Controller Channel 0 Rank\n\t2da3  Xeon 5600 Series Integrated Memory Controller Channel 0 Thermal Control\n\t2da8  Xeon 5600 Series Integrated Memory Controller Channel 1 Control\n\t2da9  Xeon 5600 Series Integrated Memory Controller Channel 1 Address\n\t2daa  Xeon 5600 Series Integrated Memory Controller Channel 1 Rank\n\t2dab  Xeon 5600 Series Integrated Memory Controller Channel 1 Thermal Control\n\t2db0  Xeon 5600 Series Integrated Memory Controller Channel 2 Control\n\t2db1  Xeon 5600 Series Integrated Memory Controller Channel 2 Address\n\t2db2  Xeon 5600 Series Integrated Memory Controller Channel 2 Rank\n\t2db3  Xeon 5600 Series Integrated Memory Controller Channel 2 Thermal Control\n\t2e00  4 Series Chipset DRAM Controller\n\t2e01  4 Series Chipset PCI Express Root Port\n\t2e02  4 Series Chipset Integrated Graphics Controller\n\t2e03  4 Series Chipset Integrated Graphics Controller\n\t2e04  4 Series Chipset HECI Controller\n\t2e05  4 Series Chipset HECI Controller\n\t2e06  4 Series Chipset PT IDER Controller\n\t2e07  4 Series Chipset Serial KT Controller\n\t2e10  4 Series Chipset DRAM Controller\n\t2e11  4 Series Chipset PCI Express Root Port\n\t2e12  4 Series Chipset Integrated Graphics Controller\n\t\t17aa 3048  ThinkCentre M6258\n\t2e13  4 Series Chipset Integrated Graphics Controller\n\t2e14  4 Series Chipset HECI Controller\n\t2e15  4 Series Chipset HECI Controller\n\t2e16  4 Series Chipset PT IDER Controller\n\t2e17  4 Series Chipset Serial KT Controller\n\t2e20  4 Series Chipset DRAM Controller\n\t\t1028 0283  Vostro 220\n\t\t1043 82d3  P5Q Deluxe Motherboard\n\t\t1458 5000  GA-EP45-DS5/GA-EG45M-DS2H Motherboard\n\t2e21  4 Series Chipset PCI Express Root Port\n\t\t1043 82d3  P5Q Deluxe Motherboard\n\t\t1458 5000  GA-EP45-DS5 Motherboard\n\t2e22  4 Series Chipset Integrated Graphics Controller\n\t\t1458 d000  GA-EG45M-DS2H Mainboard\n\t2e23  4 Series Chipset Integrated Graphics Controller\n\t\t1458 d000  GA-EG45M-DS2H Mainboard\n\t2e24  4 Series Chipset HECI Controller\n\t2e25  4 Series Chipset HECI Controller\n\t2e26  4 Series Chipset PT IDER Controller\n\t2e27  4 Series Chipset Serial KT Controller\n\t2e29  4 Series Chipset PCI Express Root Port\n\t2e30  4 Series Chipset DRAM Controller\n\t\t103c 2a8c  Compaq 500B Microtower\n\t2e31  4 Series Chipset PCI Express Root Port\n\t2e32  4 Series Chipset Integrated Graphics Controller\n\t\t103c 2a8c  Compaq 500B Microtower\n\t2e33  4 Series Chipset Integrated Graphics Controller\n\t2e34  4 Series Chipset HECI Controller\n\t2e35  4 Series Chipset HECI Controller\n\t2e36  4 Series Chipset PT IDER Controller\n\t2e37  4 Series Chipset Serial KT Controller\n\t2e40  4 Series Chipset DRAM Controller\n\t2e41  4 Series Chipset PCI Express Root Port\n\t2e42  4 Series Chipset Integrated Graphics Controller\n\t2e43  4 Series Chipset Integrated Graphics Controller\n\t2e44  4 Series Chipset HECI Controller\n\t2e45  4 Series Chipset HECI Controller\n\t2e46  4 Series Chipset PT IDER Controller\n\t2e47  4 Series Chipset Serial KT Controller\n\t2e50  CE Media Processor CE3100\n\t2e52  CE Media Processor Clock and Reset Controller\n\t2e58  CE Media Processor Interrupt Controller\n\t2e5a  CE Media Processor CE3100 A/V Bridge\n\t2e5b  Graphics Media Accelerator 500 Graphics\n\t2e5c  CE Media Processor Video Decoder\n\t2e5d  CE Media Processor Transport Stream Interface\n\t2e5e  CE Media Processor Transport Stream Processor 0\n\t2e5f  CE Media Processor Audio DSP\n\t2e60  CE Media Processor Audio Interfaces\n\t2e61  CE Media Processor Video Display Controller\n\t2e62  CE Media Processor Video Processing Unit\n\t2e63  CE Media Processor HDMI Tx Interface\n\t2e64  Atom CE2600/3100/4100/4200/5300 Security Processor\n\t2e65  CE Media Processor Expansion Bus Interface\n\t2e66  CE Media Processor UART\n\t2e67  CE Media Processor General Purpose I/Os\n\t2e68  CE Media Processor I2C Interface\n\t2e69  CE Media Processor Smart Card Interface\n\t2e6a  CE Media Processor SPI Master Interface\n\t2e6e  CE Media Processor Gigabit Ethernet Controller\n\t2e6f  CE Media Processor Media Timing Unit\n\t2e70  CE Media Processor USB\n\t2e71  CE Media Processor SATA\n\t2e73  CE Media Processor CE3100 PCI Express\n\t2e90  4 Series Chipset DRAM Controller\n\t2e91  4 Series Chipset PCI Express Root Port\n\t2e92  4 Series Chipset Integrated Graphics Controller\n\t2e93  4 Series Chipset Integrated Graphics Controller\n\t2e94  4 Series Chipset HECI Controller\n\t2e95  4 Series Chipset HECI Controller\n\t2e96  4 Series Chipset PT IDER Controller\n\t2f00  Xeon E7 v3/Xeon E5 v3/Core i7 DMI2\n\t\t15d9 0821  X10DRW-i\n\t2f01  Xeon E7 v3/Xeon E5 v3/Core i7 PCI Express Root Port 0\n\t2f02  Xeon E7 v3/Xeon E5 v3/Core i7 PCI Express Root Port 1\n\t2f03  Xeon E7 v3/Xeon E5 v3/Core i7 PCI Express Root Port 1\n\t2f04  Xeon E7 v3/Xeon E5 v3/Core i7 PCI Express Root Port 2\n\t2f05  Xeon E7 v3/Xeon E5 v3/Core i7 PCI Express Root Port 2\n\t2f06  Xeon E7 v3/Xeon E5 v3/Core i7 PCI Express Root Port 2\n\t2f07  Xeon E7 v3/Xeon E5 v3/Core i7 PCI Express Root Port 2\n\t2f08  Xeon E7 v3/Xeon E5 v3/Core i7 PCI Express Root Port 3\n\t2f09  Xeon E7 v3/Xeon E5 v3/Core i7 PCI Express Root Port 3\n\t2f0a  Xeon E7 v3/Xeon E5 v3/Core i7 PCI Express Root Port 3\n\t2f0b  Xeon E7 v3/Xeon E5 v3/Core i7 PCI Express Root Port 3\n\t2f0d  Haswell Xeon Non-Transparent Bridge (Back-to-back)\n\t2f0e  Haswell Xeon Non-Transparent Bridge (Primary Side)\n\t2f0f  Haswell Xeon Non-Transparent Bridge (Secondary Side)\n\t2f10  Xeon E7 v3/Xeon E5 v3/Core i7 IIO Debug\n\t2f11  Xeon E7 v3/Xeon E5 v3/Core i7 IIO Debug\n\t2f12  Xeon E7 v3/Xeon E5 v3/Core i7 IIO Debug\n\t2f13  Xeon E7 v3/Xeon E5 v3/Core i7 IIO Debug\n\t2f14  Xeon E7 v3/Xeon E5 v3/Core i7 IIO Debug\n\t2f15  Xeon E7 v3/Xeon E5 v3/Core i7 IIO Debug\n\t2f16  Xeon E7 v3/Xeon E5 v3/Core i7 IIO Debug\n\t2f17  Xeon E7 v3/Xeon E5 v3/Core i7 IIO Debug\n\t2f18  Xeon E7 v3/Xeon E5 v3/Core i7 IIO Debug\n\t2f19  Xeon E7 v3/Xeon E5 v3/Core i7 IIO Debug\n\t2f1a  Xeon E7 v3/Xeon E5 v3/Core i7 IIO Debug\n\t2f1b  Xeon E7 v3/Xeon E5 v3/Core i7 IIO Debug\n\t2f1c  Xeon E7 v3/Xeon E5 v3/Core i7 IIO Debug\n\t2f1d  Xeon E7 v3/Xeon E5 v3/Core i7 PCIe Ring Interface\n\t\t15d9 0821  X10DRW-i\n\t2f1e  Xeon E7 v3/Xeon E5 v3/Core i7 Scratchpad & Semaphore Registers\n\t\t15d9 0821  X10DRW-i\n\t2f1f  Xeon E7 v3/Xeon E5 v3/Core i7 Scratchpad & Semaphore Registers\n\t\t15d9 0821  X10DRW-i\n\t2f20  Xeon E7 v3/Xeon E5 v3/Core i7 DMA Channel 0\n\t\t15d9 0821  X10DRW-i\n\t2f21  Xeon E7 v3/Xeon E5 v3/Core i7 DMA Channel 1\n\t\t15d9 0821  X10DRW-i\n\t2f22  Xeon E7 v3/Xeon E5 v3/Core i7 DMA Channel 2\n\t\t15d9 0821  X10DRW-i\n\t2f23  Xeon E7 v3/Xeon E5 v3/Core i7 DMA Channel 3\n\t\t15d9 0821  X10DRW-i\n\t2f24  Xeon E7 v3/Xeon E5 v3/Core i7 DMA Channel 4\n\t\t15d9 0821  X10DRW-i\n\t2f25  Xeon E7 v3/Xeon E5 v3/Core i7 DMA Channel 5\n\t\t15d9 0821  X10DRW-i\n\t2f26  Xeon E7 v3/Xeon E5 v3/Core i7 DMA Channel 6\n\t\t15d9 0821  X10DRW-i\n\t2f27  Xeon E7 v3/Xeon E5 v3/Core i7 DMA Channel 7\n\t\t15d9 0821  X10DRW-i\n\t2f28  Xeon E7 v3/Xeon E5 v3/Core i7 Address Map, VTd_Misc, System Management\n\t\t15d9 0821  X10DRW-i\n\t2f29  Xeon E7 v3/Xeon E5 v3/Core i7 Hot Plug\n\t\t15d9 0821  X10DRW-i\n\t2f2a  Xeon E7 v3/Xeon E5 v3/Core i7 RAS, Control Status and Global Errors\n\t\t15d9 0821  X10DRW-i\n\t2f2c  Xeon E7 v3/Xeon E5 v3/Core i7 I/O APIC\n\t\t15d9 0821  X10DRW-i\n\t2f2e  Xeon E7 v3/Xeon E5 v3/Core i7 RAID 5/6\n\t2f2f  Xeon E7 v3/Xeon E5 v3/Core i7 RAID 5/6\n\t2f30  Xeon E7 v3/Xeon E5 v3/Core i7 Home Agent 0\n\t\t15d9 0821  X10DRW-i\n\t2f32  Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 0\n\t\t15d9 0821  X10DRW-i\n\t2f33  Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 1\n\t2f34  Xeon E7 v3/Xeon E5 v3/Core i7 PCIe Ring Interface\n\t\t15d9 0821  X10DRW-i\n\t2f36  Xeon E7 v3/Xeon E5 v3/Core i7 R3 QPI Link 0 & 1 Monitoring\n\t\t15d9 0821  X10DRW-i\n\t2f37  Xeon E7 v3/Xeon E5 v3/Core i7 R3 QPI Link 0 & 1 Monitoring\n\t\t15d9 0821  X10DRW-i\n\t2f38  Xeon E7 v3/Xeon E5 v3/Core i7 Home Agent 1\n\t2f39  Xeon E7 v3/Xeon E5 v3/Core i7 I/O Performance Monitoring\n\t2f3a  Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 2\n\t2f3e  Xeon E7 v3/Xeon E5 v3/Core i7 R3 QPI Link 2 Monitoring\n\t2f3f  Xeon E7 v3/Xeon E5 v3/Core i7 R3 QPI Link 2 Monitoring\n\t2f40  Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 2\n\t2f41  Xeon E7 v3/Xeon E5 v3/Core i7 R3 QPI Link 2 Monitoring\n\t2f43  Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 2\n\t2f45  Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 2 Debug\n\t2f46  Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 2 Debug\n\t2f47  Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 2 Debug\n\t2f60  Xeon E7 v3/Xeon E5 v3/Core i7 Home Agent 1\n\t2f68  Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Target Address, Thermal & RAS Registers\n\t2f6a  Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel Target Address Decoder\n\t2f6b  Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel Target Address Decoder\n\t2f6c  Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel Target Address Decoder\n\t2f6d  Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel Target Address Decoder\n\t2f6e  Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO Channel 2/3 Broadcast\n\t2f6f  Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO Global Broadcast\n\t2f70  Xeon E7 v3/Xeon E5 v3/Core i7 Home Agent 0 Debug\n\t2f71  Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Target Address, Thermal & RAS Registers\n\t2f76  Xeon E7 v3/Xeon E5 v3/Core i7 E3 QPI Link Debug\n\t2f78  Xeon E7 v3/Xeon E5 v3/Core i7 Home Agent 1 Debug\n\t2f79  Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Target Address, Thermal & RAS Registers\n\t2f7d  Xeon E7 v3/Xeon E5 v3/Core i7 Scratchpad & Semaphore Registers\n\t\t15d9 0821  X10DRW-i\n\t2f7e  Xeon E7 v3/Xeon E5 v3/Core i7 E3 QPI Link Debug\n\t2f80  Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 0\n\t\t15d9 0821  X10DRW-i\n\t2f81  Xeon E7 v3/Xeon E5 v3/Core i7 R3 QPI Link 0 & 1 Monitoring\n\t\t15d9 0821  X10DRW-i\n\t2f83  Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 0\n\t\t15d9 0821  X10DRW-i\n\t2f85  Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 0 Debug\n\t2f86  Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 0 Debug\n\t2f87  Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 0 Debug\n\t2f88  Xeon E7 v3/Xeon E5 v3/Core i7 VCU\n\t2f8a  Xeon E7 v3/Xeon E5 v3/Core i7 VCU\n\t2f90  Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 1\n\t2f93  Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 1\n\t2f95  Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 1 Debug\n\t2f96  Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 1 Debug\n\t2f98  Xeon E7 v3/Xeon E5 v3/Core i7 Power Control Unit\n\t2f99  Xeon E7 v3/Xeon E5 v3/Core i7 Power Control Unit\n\t2f9a  Xeon E7 v3/Xeon E5 v3/Core i7 Power Control Unit\n\t2f9c  Xeon E7 v3/Xeon E5 v3/Core i7 Power Control Unit\n\t2fa0  Xeon E7 v3/Xeon E5 v3/Core i7 Home Agent 0\n\t\t15d9 0821  X10DRW-i\n\t2fa8  Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Target Address, Thermal & RAS Registers\n\t2faa  Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder\n\t\t15d9 0821  X10DRW-i\n\t2fab  Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder\n\t\t15d9 0821  X10DRW-i\n\t2fac  Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder\n\t\t15d9 0821  X10DRW-i\n\t2fad  Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder\n\t\t15d9 0821  X10DRW-i\n\t2fae  Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO Channel 0/1 Broadcast\n\t2faf  Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO Global Broadcast\n\t2fb0  Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 0 Thermal Control\n\t2fb1  Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 1 Thermal Control\n\t2fb2  Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 0 ERROR Registers\n\t2fb3  Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 1 ERROR Registers\n\t2fb4  Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 2 Thermal Control\n\t2fb5  Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 3 Thermal Control\n\t2fb6  Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 2 ERROR Registers\n\t2fb7  Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 3 ERROR Registers\n\t2fb8  Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO (VMSE) 2 & 3\n\t2fb9  Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO (VMSE) 2 & 3\n\t2fba  Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO (VMSE) 2 & 3\n\t2fbb  Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO (VMSE) 2 & 3\n\t2fbc  Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO (VMSE) 0 & 1\n\t2fbd  Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO (VMSE) 0 & 1\n\t2fbe  Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO (VMSE) 0 & 1\n\t2fbf  Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO (VMSE) 0 & 1\n\t2fc0  Xeon E7 v3/Xeon E5 v3/Core i7 Power Control Unit\n\t2fc1  Xeon E7 v3/Xeon E5 v3/Core i7 Power Control Unit\n\t2fc2  Xeon E7 v3/Xeon E5 v3/Core i7 Power Control Unit\n\t2fc3  Xeon E7 v3/Xeon E5 v3/Core i7 Power Control Unit\n\t2fc4  Xeon E7 v3/Xeon E5 v3/Core i7 Power Control Unit\n\t2fc5  Xeon E7 v3/Xeon E5 v3/Core i7 Power Control Unit\n\t2fd0  Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel 0 Thermal Control\n\t2fd1  Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel 1 Thermal Control\n\t2fd2  Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel 0 ERROR Registers\n\t2fd3  Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel 1 ERROR Registers\n\t2fd4  Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel 2 Thermal Control\n\t2fd5  Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel 3 Thermal Control\n\t2fd6  Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel 2 ERROR Registers\n\t2fd7  Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel 3 ERROR Registers\n\t2fe0  Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers\n\t\t15d9 0821  X10DRW-i\n\t2fe1  Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers\n\t\t15d9 0821  X10DRW-i\n\t2fe2  Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers\n\t\t15d9 0821  X10DRW-i\n\t2fe3  Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers\n\t\t15d9 0821  X10DRW-i\n\t2fe4  Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers\n\t\t15d9 0821  X10DRW-i\n\t2fe5  Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers\n\t\t15d9 0821  X10DRW-i\n\t2fe6  Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers\n\t\t15d9 0821  X10DRW-i\n\t2fe7  Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers\n\t\t15d9 0821  X10DRW-i\n\t2fe8  Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers\n\t2fe9  Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers\n\t2fea  Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers\n\t2feb  Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers\n\t2fec  Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers\n\t2fed  Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers\n\t2fee  Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers\n\t2fef  Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers\n\t2ff0  Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers\n\t2ff1  Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers\n\t2ff2  Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers\n\t2ff3  Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers\n\t2ff4  Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers\n\t2ff5  Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers\n\t2ff6  Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers\n\t2ff7  Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers\n\t2ff8  Xeon E7 v3/Xeon E5 v3/Core i7 Buffered Ring Agent\n\t2ff9  Xeon E7 v3/Xeon E5 v3/Core i7 Buffered Ring Agent\n\t2ffa  Xeon E7 v3/Xeon E5 v3/Core i7 Buffered Ring Agent\n\t2ffb  Xeon E7 v3/Xeon E5 v3/Core i7 Buffered Ring Agent\n\t2ffc  Xeon E7 v3/Xeon E5 v3/Core i7 System Address Decoder & Broadcast Registers\n\t\t15d9 0821  X10DRW-i\n\t2ffd  Xeon E7 v3/Xeon E5 v3/Core i7 System Address Decoder & Broadcast Registers\n\t\t15d9 0821  X10DRW-i\n\t2ffe  Xeon E7 v3/Xeon E5 v3/Core i7 System Address Decoder & Broadcast Registers\n\t\t15d9 0821  X10DRW-i\n\t3101  Killer E3100X 2.5 Gigabit Ethernet Controller\n\t3140  Easel/Monette Hill Image Processor [Pixel Visual Core]\n\t3165  Wireless 3165\n\t\t8086 4010  Dual Band Wireless AC 3165 [Stone Peak 1x1]\n\t\t8086 4210  Dual Band Wireless AC 3165 [Stone Peak 1x1]\n\t3166  Dual Band Wireless-AC 3165 Plus Bluetooth\n\t\t8086 4210  Dual Band Wireless-AC 3165\n\t3184  GeminiLake [UHD Graphics 605]\n\t3185  GeminiLake [UHD Graphics 600]\n\t318c  Celeron/Pentium Silver Processor Dynamic Platform and Thermal Framework Processor Participant\n\t318e  Celeron/Pentium Silver Processor NorthPeak\n\t3190  Celeron/Pentium Silver Processor Gaussian Mixture Model\n\t3192  Gemini Lake P2SB\n\t3196  Unknown P2SB serial controller\n\t3197  Celeron/Pentium Silver Processor PCI-default ISA-bridge\n\t3198  Celeron/Pentium Silver Processor High Definition Audio\n\t\t17aa 380b  V130-15IGM Laptop (Lenovo) - Type 81HL\n\t319a  Celeron/Pentium Silver Processor Trusted Execution Engine Interface\n\t31a2  Celeron/Pentium Silver Processor Integrated Sensor Solution\n\t31a8  Celeron/Pentium Silver Processor USB 3.0 xHCI Controller\n\t\t1849 31a8  Celeron/Pentium Silver Processor USB 3.0 xHCI Controller\n\t31ac  Celeron/Pentium Silver Processor I2C 0\n\t31ae  Celeron/Pentium Silver Processor I2C 1\n\t31b0  Celeron/Pentium Silver Processor I2C 2\n\t31b2  Celeron/Pentium Silver Processor I2C 3\n\t31b4  Celeron/Pentium Silver Processor I2C 4\n\t31b6  Celeron/Pentium Silver Processor I2C 5\n\t31b8  Celeron/Pentium Silver Processor I2C 6\n\t31ba  Celeron/Pentium Silver Processor I2C 7\n\t31bc  Celeron/Pentium Silver Processor Serial IO UART Host Controller\n\t31be  Celeron/Pentium Silver Processor Serial IO UART Host Controller\n\t31c0  Celeron/Pentium Silver Processor Serial IO UART Host Controller\n\t31c2  Celeron/Pentium Silver Processor Serial IO SPI Host Controller\n\t31c4  Celeron/Pentium Silver Processor Serial IO SPI Host Controller\n\t31c6  Celeron/Pentium Silver Processor Serial IO SPI Host Controller\n\t31cc  Celeron/Pentium Silver Processor SDA Standard Compliant SD Host Controller\n\t31d4  Celeron/Pentium Silver Processor Gaussian Mixture Model\n\t31d6  Gemini Lake PCI Express Root Port\n\t31d7  Gemini Lake PCI Express Root Port\n\t31d8  Gemini Lake PCI Express Root Port\n\t31d9  Gemini Lake PCI Express Root Port\n\t31da  Gemini Lake PCI Express Root Port\n\t31db  Gemini Lake PCI Express Root Port\n\t31dc  Gemini Lake PCH CNVi WiFi\n\t\t1a56 1552  Killer(R) Wireless-AC 1550i Wireless Network Adapter (9560NGW)\n\t\t8086 0034  Wireless-AC 9560\n\t31e3  Celeron/Pentium Silver Processor SATA Controller\n\t31e8  Celeron/Pentium Silver Processor LPC Controller\n\t31ee  Celeron/Pentium Silver Processor Serial IO UART Host Controller\n\t31f0  Gemini Lake Host Bridge\n\t3200  GD31244 PCI-X SATA HBA\n\t\t1775 c200  C2K onboard SATA host bus adapter\n\t3310  IOP348 I/O Processor\n\t\t1054 3030  HRA380 Hitachi RAID Adapter to PCIe\n\t\t1054 3034  HRA381 Hitachi RAID Adapter to PCIe\n\t3313  IOP348 I/O Processor (SL8e) in IOC Mode SAS/SATA\n\t331b  IOP348 I/O Processor (SL8x) in IOC Mode SAS/SATA\n\t3331  IOC340 I/O Controller (VV8e) SAS/SATA\n\t3339  IOC340 I/O Controller (VV8x) SAS/SATA\n\t3340  82855PM Processor to I/O Controller\n\t\t1014 0529  Thinkpad T40 series\n\t\t1025 005a  TravelMate 290\n\t\t103c 088c  NC8000 laptop\n\t\t103c 0890  NC6000 laptop\n\t\t103c 08b0  tc1100 tablet\n\t\t144d c005  X10 Laptop\n\t\t144d c00c  P30/P35 notebook\n\t3341  82855PM Processor to AGP Controller\n\t\t144d c00c  P30 notebook\n\t3363  IOC340 I/O Controller in IOC Mode SAS/SATA\n\t3382  81342 [Chevelon] I/O Processor (ATUe)\n\t33c3  IOP348 I/O Processor (SL8De) in IOC Mode SAS/SATA\n\t33cb  IOP348 I/O Processor (SL8Dx) in IOC Mode SAS/SATA\n\t3400  5520/5500/X58 I/O Hub to ESI Port\n\t3401  5520/5500/X58 I/O Hub to ESI Port\n\t3402  5520/5500/X58 I/O Hub to ESI Port\n\t3403  5500 I/O Hub to ESI Port\n\t\t1028 0236  PowerEdge R610 I/O Hub to ESI Port\n\t\t1028 0287  PowerEdge M610 I/O Hub to ESI Port\n\t\t1028 028c  PowerEdge R410 I/O Hub to ESI Port\n\t\t1028 028d  PowerEdge T410 I/O Hub to ESI Port\n\t\t103c 330b  ProLiant ML150 G6 Server\n\t3404  5520/5500/X58 I/O Hub to ESI Port\n\t3405  5520/5500/X58 I/O Hub to ESI Port\n\t3406  5520 I/O Hub to ESI Port\n\t\t103c 330b  ProLiant G6 series\n\t3407  5520/5500/X58 I/O Hub to ESI Port\n\t3408  5520/5500/X58 I/O Hub PCI Express Root Port 1\n\t\t103c 330b  ProLiant G6 series\n\t3409  5520/5500/X58 I/O Hub PCI Express Root Port 2\n\t340a  5520/5500/X58 I/O Hub PCI Express Root Port 3\n\t\t103c 330b  ProLiant ML150 G6 Server\n\t340b  5520/X58 I/O Hub PCI Express Root Port 4\n\t340c  5520/X58 I/O Hub PCI Express Root Port 5\n\t340d  5520/X58 I/O Hub PCI Express Root Port 6\n\t340e  5520/5500/X58 I/O Hub PCI Express Root Port 7\n\t\t103c 330b  ProLiant ML150 G6 Server\n\t340f  5520/5500/X58 I/O Hub PCI Express Root Port 8\n\t3410  7500/5520/5500/X58 I/O Hub PCI Express Root Port 9\n\t3411  7500/5520/5500/X58 I/O Hub PCI Express Root Port 10\n\t3418  7500/5520/5500/X58 Physical Layer Port 0\n\t3419  7500/5520/5500 Physical Layer Port 1\n\t3420  7500/5520/5500/X58 I/O Hub PCI Express Root Port 0\n\t3421  7500/5520/5500/X58 I/O Hub PCI Express Root Port 0\n\t3422  7500/5520/5500/X58 I/O Hub GPIO and Scratch Pad Registers\n\t\t103c 330b  ProLiant G6 series\n\t3423  7500/5520/5500/X58 I/O Hub Control Status and RAS Registers\n\t\t103c 330b  ProLiant G6 series\n\t3425  7500/5520/5500/X58 Physical and Link Layer Registers Port 0\n\t3426  7500/5520/5500/X58 Routing and Protocol Layer Registers Port 0\n\t3427  7500/5520/5500 Physical and Link Layer Registers Port 1\n\t3428  7500/5520/5500 Routing & Protocol Layer Register Port 1\n\t3429  5520/5500/X58 Chipset QuickData Technology Device\n\t342a  5520/5500/X58 Chipset QuickData Technology Device\n\t342b  5520/5500/X58 Chipset QuickData Technology Device\n\t342c  5520/5500/X58 Chipset QuickData Technology Device\n\t342d  7500/5520/5500/X58 I/O Hub I/OxAPIC Interrupt Controller\n\t342e  7500/5520/5500/X58 I/O Hub System Management Registers\n\t\t103c 330b  ProLiant G6 series\n\t342f  7500/5520/5500/X58 Trusted Execution Technology Registers\n\t3430  5520/5500/X58 Chipset QuickData Technology Device\n\t3431  5520/5500/X58 Chipset QuickData Technology Device\n\t3432  5520/5500/X58 Chipset QuickData Technology Device\n\t3433  5520/5500/X58 Chipset QuickData Technology Device\n\t3438  7500/5520/5500/X58 I/O Hub Throttle Registers\n\t3440  Ice Lake UPI Misc\n\t3441  Ice Lake UPI Link/Phy0\n\t3442  Ice Lake UPI Phy0 Registers\n\t3445  Ice Lake UPI Mesh Stop Registers\n\t3446  Ice Lake UPI PMON0 Registers\n\t3447  Ice Lake UPI PMON1 Registers\n\t3448  Ice Lake PCU Registers\n\t344a  Ice Lake Integrated Memory Controller\n\t344b  Ice Lake PCU Registers\n\t344c  Ice Lake CHA Registers\n\t344d  Ice Lake CHA Registers\n\t344f  Ice Lake CHA Registers\n\t3450  Ice Lake Ubox Registers\n\t3451  Ice Lake Ubox Registers\n\t3452  Ice Lake Ubox Registers\n\t3455  Ice Lake Ubox Registers\n\t3456  Ice Lake NorthPeak\n\t3457  Ice Lake CHA Registers\n\t3458  Ice Lake PCU Registers\n\t3459  Ice Lake PCU Registers\n\t345a  Ice Lake PCU Registers\n\t345b  Ice Lake PCU Registers\n\t345c  Ice Lake PCU Registers\n\t345d  Ice Lake PCU Registers\n\t345e  Ice Lake PCU Registers\n\t347a  Ice Lake PCI Express Root Port A\n\t347b  Ice Lake PCI Express Root Port B\n\t347c  Ice Lake PCI Express Root Port C\n\t347d  Ice Lake PCI Express Root Port D\n\t347e  Ice Lake Xeon Non-Transparent Bridge\n\t3482  Ice Lake-LP LPC Controller\n\t34a3  Ice Lake-LP SMBus Controller\n\t34a4  Ice Lake-LP SPI Controller\n\t34a8  Ice Lake-LP Serial IO UART Controller #0\n\t34a9  Ice Lake-LP Serial IO UART Controller #1\n\t34aa  Ice Lake-LP Serial IO SPI Controller #0\n\t34ab  Ice Lake-LP Serial IO SPI Controller #1\n\t34b0  Ice Lake-LP PCI Express Root Port #9\n\t34b1  Ice Lake-LP PCIe Port #10\n\t34b4  Ice Lake-LP PCIe Port #13\n\t34b5  Ice Lake-LP PCIe Port #14\n\t34b7  Ice Lake-LP PCI Express Root Port #16\n\t34b8  Ice Lake-LP PCIe Port #1\n\t34ba  Ice Lake-LP PCI Express Root Port #3\n\t34bb  Ice Lake-LP PCIe Port #4\n\t34bc  Ice Lake-LP PCI Express Root Port #5\n\t34bd  Ice Lake-LP PCIe Port #6\n\t34be  Ice Lake-LP PCIe Port #7\n\t34bf  Ice Lake-LP PCIe Port #8\n\t34c4  Ice Lake-LP SD Host Controller\n\t34c5  Ice Lake-LP Serial IO I2c Controller #4\n\t34c6  Ice Lake-LP Serial IO I2c Controller #5\n\t34c8  Ice Lake-LP Smart Sound Technology Audio Controller\n\t34d3  Ice Lake-LP SATA Controller [AHCI mode]\n\t34e0  Ice Lake-LP Management Engine\n\t34e8  Ice Lake-LP Serial IO I2C Controller #0\n\t34e9  Ice Lake-LP Serial IO I2C Controller #1\n\t34ea  Ice Lake-LP Serial IO I2C Controller #2\n\t34eb  Ice Lake-LP Serial IO I2C Controller #3\n\t34ed  Ice Lake-LP USB 3.1 xHCI Host Controller\n\t34ef  Ice Lake-LP DRAM Controller\n\t34f0  Ice Lake-LP PCH CNVi WiFi\n\t\t1a56 1552  Killer(R) Wireless-AC 1550i Wireless Network Adapter (9560NGW)\n\t\t8086 0074  Wi-Fi 6 AX201\n\t\t8086 0264  Wireless-AC 9461\n\t34f8  Ice Lake-LP SD Controller\n\t34fc  Ice Lake-LP Integrated Sensor Solution\n\t3500  6311ESB/6321ESB PCI Express Upstream Port\n\t\t103c 31fe  ProLiant DL140 G3\n\t\t15d9 9680  X7DBN Motherboard\n\t3501  6310ESB PCI Express Upstream Port\n\t3504  6311ESB/6321ESB I/OxAPIC Interrupt Controller\n\t3505  6310ESB I/OxAPIC Interrupt Controller\n\t350c  6311ESB/6321ESB PCI Express to PCI-X Bridge\n\t\t103c 31fe  ProLiant DL140 G3\n\t\t15d9 9680  X7DBN Motherboard\n\t350d  6310ESB PCI Express to PCI-X Bridge\n\t3510  6311ESB/6321ESB PCI Express Downstream Port E1\n\t\t103c 31fe  ProLiant DL140 G3\n\t\t15d9 9680  X7DBN Motherboard\n\t3511  6310ESB PCI Express Downstream Port E1\n\t3514  6311ESB/6321ESB PCI Express Downstream Port E2\n\t3515  6310ESB PCI Express Downstream Port E2\n\t3518  6311ESB/6321ESB PCI Express Downstream Port E3\n\t\t15d9 9680  X7DBN Motherboard\n\t3519  6310ESB PCI Express Downstream Port E3\n\t3575  82830M/MG/MP Host Bridge\n\t\t0e11 0030  Evo N600c\n\t\t1014 021d  ThinkPad A/T/X Series\n\t\t104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP\n\t3576  82830M/MP AGP Bridge\n\t3577  82830M/MG Integrated Graphics Controller\n\t\t1014 0513  ThinkPad A/T/X Series\n\t3578  82830M/MG/MP Host Bridge\n\t3580  82852/82855 GM/GME/PM/GMV Processor to I/O Controller\n\t\t1014 055c  ThinkPad R50e\n\t\t1025 0064  Extensa 3000 series laptop\n\t\t1028 0139  Latitude D400\n\t\t1028 014f  Latitude X300\n\t\t1028 0152  Latitude D500\n\t\t1028 0163  Latitude D505\n\t\t1028 018d  Inspiron 700m/710m\n\t\t1028 0196  Inspiron 5160\n\t\t114a 0582  PC8\n\t\t1734 1055  Amilo M1420\n\t\t1775 10d0  V5D Single Board Computer\n\t\t1775 ce90  CE9\n\t\t4c53 10b0  CL9 mainboard\n\t\t4c53 10e0  PSL09 PrPMC\n\t\te4bf 0cc9  CC9-SAMBA\n\t\te4bf 0cd2  CD2-BEBOP\n\t3581  82852/82855 GM/GME/PM/GMV Processor to AGP Controller\n\t\t1734 1055  Amilo M1420\n\t3582  82852/855GM Integrated Graphics Device\n\t\t1014 0562  ThinkPad R50e\n\t\t1028 0139  Latitude D400\n\t\t1028 014f  Latitude X300\n\t\t1028 0152  Latitude D500\n\t\t1028 0163  Latitude D505\n\t\t1028 018d  Inspiron 700m/710m\n\t\t114a 0582  PC8 integrated graphics\n\t\t1775 10d0  V5D Single Board Computer VGA\n\t\t1775 ce90  CE9\n\t\t4c53 10b0  CL9 mainboard\n\t\t4c53 10e0  PSL09 PrPMC\n\t\te4bf 0cc9  CC9-SAMBA\n\t\te4bf 0cd2  CD2-BEBOP\n\t3584  82852/82855 GM/GME/PM/GMV Processor to I/O Controller\n\t\t1014 055d  ThinkPad R50e\n\t\t1025 0064  Extensa 3000 series laptop\n\t\t1028 0139  Latitude D400\n\t\t1028 014f  Latitude X300\n\t\t1028 0152  Latitude D500\n\t\t1028 0163  Latitude D505\n\t\t1028 018d  Inspiron 700m/710m\n\t\t1028 0196  Inspiron 5160\n\t\t114a 0582  PC8\n\t\t1734 1055  Amilo M1420\n\t\t1775 10d0  V5D Single Board Computer\n\t\t1775 ce90  CE9\n\t\t4c53 10b0  CL9 mainboard\n\t\t4c53 10e0  PSL09 PrPMC\n\t3585  82852/82855 GM/GME/PM/GMV Processor to I/O Controller\n\t\t1014 055e  ThinkPad R50e\n\t\t1025 0064  Extensa 3000 series laptop\n\t\t1028 0139  Latitude D400\n\t\t1028 014f  Latitude X300\n\t\t1028 0152  Latitude D500\n\t\t1028 0163  Latitude D505\n\t\t1028 018d  Inspiron 700m/710m\n\t\t1028 0196  Inspiron 5160\n\t\t114a 0582  PC8\n\t\t1734 1055  Amilo M1420\n\t\t1775 10d0  V5D Single Board Computer\n\t\t1775 ce90  CE9\n\t\t4c53 10b0  CL9 mainboard\n\t\t4c53 10e0  PSL09 PrPMC\n\t358c  82854 GMCH\n\t358e  82854 GMCH Integrated Graphics Device\n\t3590  E7520 Memory Controller Hub\n\t\t1014 02dd  eServer xSeries server mainboard\n\t\t1028 016c  PowerEdge 1850 Memory Controller Hub\n\t\t1028 016d  PowerEdge 2850 Memory Controller Hub\n\t\t1028 019a  PowerEdge SC1425\n\t\t1734 103e  PRIMERGY RX/TX S2 series\n\t\t1775 1100  CR11/VR11 Single Board Computer\n\t\t4c53 10d0  Telum ASLP10 Processor AMC\n\t3591  E7525/E7520 Error Reporting Registers\n\t\t1014 02dd  eServer xSeries server mainboard\n\t\t1028 0168  Precision Workstation 670 Mainboard\n\t\t1028 0169  Precision 470\n\t\t103c 3208  ProLiant DL140 G2\n\t\t4c53 10d0  Telum ASLP10 Processor AMC\n\t3592  E7320 Memory Controller Hub\n\t\t1734 1073  Primergy Econel 200 D2020 mainboard\n\t3593  E7320 Error Reporting Registers\n\t\t1734 1073  Primergy Econel 200 D2020 mainboard\n\t3594  E7520 DMA Controller\n\t\t1775 1100  CR11/VR11 Single Board Computer\n\t\t4c53 10d0  Telum ASLP10 Processor AMC\n\t3595  E7525/E7520/E7320 PCI Express Port A\n\t\t1775 1100  CR11/VR11 Single Board Computer\n\t3596  E7525/E7520/E7320 PCI Express Port A1\n\t3597  E7525/E7520 PCI Express Port B\n\t\t1775 1100  CR11/VR11 Single Board Computer\n\t3598  E7520 PCI Express Port B1\n\t\t1775 1100  CR11/VR11 Single Board Computer\n\t3599  E7520 PCI Express Port C\n\t\t1775 1100  CR11/VR11 Single Board Computer\n\t359a  E7520 PCI Express Port C1\n\t359b  E7525/E7520/E7320 Extended Configuration Registers\n\t\t1014 02dd  eServer xSeries server mainboard\n\t359e  E7525 Memory Controller Hub\n\t\t1028 0168  Precision Workstation 670 Mainboard\n\t\t1028 0169  Precision 470\n\t35b0  3100 Chipset Memory I/O Controller Hub\n\t35b1  3100 DRAM Controller Error Reporting Registers\n\t35b5  3100 Chipset Enhanced DMA Controller\n\t35b6  3100 Chipset PCI Express Port A\n\t35b7  3100 Chipset PCI Express Port A1\n\t35c8  3100 Extended Configuration Test Overflow Registers\n\t3600  7300 Chipset Memory Controller Hub\n\t3604  7300 Chipset PCI Express Port 1\n\t3605  7300 Chipset PCI Express Port 2\n\t3606  7300 Chipset PCI Express Port 3\n\t3607  7300 Chipset PCI Express Port 4\n\t3608  7300 Chipset PCI Express Port 5\n\t3609  7300 Chipset PCI Express Port 6\n\t360a  7300 Chipset PCI Express Port 7\n\t360b  7300 Chipset QuickData Technology Device\n\t360c  7300 Chipset FSB Registers\n\t\t1028 01f0  PowerEdge R900 7300 Chipset FSB Registers\n\t360d  7300 Chipset Snoop Filter Registers\n\t360e  7300 Chipset Debug and Miscellaneous Registers\n\t360f  7300 Chipset FBD Branch 0 Registers\n\t3610  7300 Chipset FBD Branch 1 Registers\n\t3700  Xeon C5500/C3500 DMI\n\t3701  Xeon C5500/C3500 DMI\n\t3702  Xeon C5500/C3500 DMI\n\t3703  Xeon C5500/C3500 DMI\n\t3704  Xeon C5500/C3500 DMI\n\t3705  Xeon C5500/C3500 DMI\n\t3706  Xeon C5500/C3500 DMI\n\t3707  Xeon C5500/C3500 DMI\n\t3708  Xeon C5500/C3500 DMI\n\t3709  Xeon C5500/C3500 DMI\n\t370a  Xeon C5500/C3500 DMI\n\t370b  Xeon C5500/C3500 DMI\n\t370c  Xeon C5500/C3500 DMI\n\t370d  Xeon C5500/C3500 DMI\n\t370e  Xeon C5500/C3500 DMI\n\t370f  Xeon C5500/C3500 DMI\n\t3710  Xeon C5500/C3500 CB3 DMA\n\t3711  Xeon C5500/C3500 CB3 DMA\n\t3712  Xeon C5500/C3500 CB3 DMA\n\t3713  Xeon C5500/C3500 CB3 DMA\n\t3714  Xeon C5500/C3500 CB3 DMA\n\t3715  Xeon C5500/C3500 CB3 DMA\n\t3716  Xeon C5500/C3500 CB3 DMA\n\t3717  Xeon C5500/C3500 CB3 DMA\n\t3718  Xeon C5500/C3500 CB3 DMA\n\t3719  Xeon C5500/C3500 CB3 DMA\n\t371a  Xeon C5500/C3500 QPI Link\n\t371b  Xeon C5500/C3500 QPI Routing and Protocol\n\t371d  Xeon C5500/C3500 QPI Routing and Protocol\n\t3720  Xeon C5500/C3500 PCI Express Root Port 0\n\t3721  Xeon C5500/C3500 PCI Express Root Port 1\n\t3722  Xeon C5500/C3500 PCI Express Root Port 2\n\t3723  Xeon C5500/C3500 PCI Express Root Port 3\n\t3724  Xeon C5500/C3500 PCI Express Root Port 4\n\t3725  Xeon C5500/C3500 NTB Primary\n\t3726  Xeon C5500/C3500 NTB Primary\n\t3727  Xeon C5500/C3500 NTB Secondary\n\t3728  Xeon C5500/C3500 Core\n\t3729  Xeon C5500/C3500 Core\n\t372a  Xeon C5500/C3500 Core\n\t372b  Xeon C5500/C3500 Core\n\t372c  Xeon C5500/C3500 Reserved\n\t373f  Xeon C5500/C3500 IOxAPIC\n\t37c0  C62x chipset series PCIe x16/x8 Upstream Port\n\t37c2  C62x chipset series PCIe Virtual Switch Port 0\n\t37c3  C62x chipset series PCIe Virtual Switch Port 1\n\t37c4  C62x chipset series PCIe Virtual Switch Port 2\n\t37c5  C62x chipset series PCIe Virtual Switch Port 3\n\t37c8  C62x Chipset series QuickAssist Technology Physical Function 0~2\n\t\t8086 0001  QuickAssist Adapter 8960\n\t\t8086 0002  QuickAssist Adapter 8970\n\t37c9  C62x Chipset QuickAssist Technology Virtual Function\n\t37cc  Ethernet Connection X722\n\t37cd  Ethernet Virtual Function 700 Series\n\t37ce  Ethernet Connection X722 for 10GbE backplane\n\t\t1590 0215  Ethernet 10Gb 2-port 568i Adapter\n\t\t17aa 4023  Intel Ethernet Connection X722 for 10GbE backplane\n\t\t17aa 4025  Ethernet Connection X722 for 10GbE backplane\n\t37cf  Ethernet Connection X722 for 10GbE QSFP+\n\t37d0  Ethernet Connection X722 for 10GbE SFP+\n\t\t17aa 4020  Intel Ethernet Connection X722 for 10G SFP+\n\t\t17aa 4021  Intel Ethernet Connection X722 for 10G SFP+\n\t\t17aa 4022  Ethernet Connection X722 for 10GbE SFP+\n\t\t8086 0001  Ethernet Network Adapter X722-2\n\t\t8086 0002  Ethernet Network Adapter X722-2\n\t\t8086 0003  Ethernet Network Adapter X722-4\n\t\t8086 0004  Ethernet Network Adapter X722-4\n\t37d1  Ethernet Connection X722 for 1GbE\n\t\t14cd 0010  88E1514 Ethernet OCP 2x1G RJ45 Phy Card [USI-1514-1GbaseT]\n\t\t1590 0216  Ethernet 1Gb 2-port 368i Adapter\n\t\t1590 0217  Ethernet 1Gb 2-port 368FLR-MMT Adapter\n\t\t1590 0247  Ethernet 1Gb 4-port 369i Adapter\n\t\t17aa 4020  Ethernet Connection X722 for 1GbE\n\t\t17aa 4021  Ethernet Connection X722 for 1GbE\n\t\t17aa 4022  Ethernet Connection X722 for 1GbE\n\t\t17aa 4024  Ethernet Connection X722 for 1GbE\n\t37d2  Ethernet Connection X722 for 10GBASE-T\n\t\t1059 0180  RD10019 10GbE interface\n\t\t1170 37d2  Ethernet Connection X722 for 10GBASE-T\n\t\t14cd 0030  Ethernet OCP 2x10G RJ45 Phy Card [USI-X557-10GbaseT]\n\t\t1590 0218  Ethernet 10Gb 2-port 568FLR-MMT Adapter\n\t\t17aa 4020  Ethernet Connection X722 for 10GBASE-T\n\t\t17aa 4021  Ethernet Connection X722 for 10GBASE-T\n\t\t17aa 4022  Ethernet Connection X722 for 10GBASE-T\n\t\t17aa 4024  Ethernet Connection X722 for 10GBASE-T\n\t\t17aa 4025  Ethernet Connection X722 for 10GBASE-T\n\t37d3  Ethernet Connection X722 for 10GbE SFP+\n\t\t1590 0219  Ethernet 10Gb 2-port 568FLR-MMSFP+ Adapter\n\t\t17aa 4020  Ethernet Connection X722 for 10GbE SFP+\n\t\t17aa 4021  Ethernet Connection X722 for 10GbE SFP+\n\t\t17aa 4025  Ethernet Connection X722 for 10GbE SFP+\n\t37d4  Ethernet Connection X722 for 10GbE QSFP+\n\t37d9  X722 Hyper-V Virtual Function\n\t3882  Ice Lake LPC Controller\n\t38a4  Ice Lake SPI Controller\n\t38c8  Ice Lake-LP Smart Sound Technology Audio Controller\n\t38e0  Ice Lake Management Engine Interface\n\t3a00  82801JD/DO (ICH10 Family) 4-port SATA IDE Controller\n\t3a02  82801JD/DO (ICH10 Family) SATA AHCI Controller\n\t3a05  82801JD/DO (ICH10 Family) SATA RAID Controller\n\t3a06  82801JD/DO (ICH10 Family) 2-port SATA IDE Controller\n\t3a14  82801JDO (ICH10DO) LPC Interface Controller\n\t3a16  82801JIR (ICH10R) LPC Interface Controller\n\t\t1028 028c  PowerEdge R410 LPC Interface Controller\n\t\t1028 028d  PowerEdge T410 LPC Interface Controller\n\t\t103c 330b  ProLiant G6 series\n\t\t1043 82d4  P5Q Deluxe Motherboard\n\t\t1458 5001  GA-EP45-DS5 Motherboard\n\t3a18  82801JIB (ICH10) LPC Interface Controller\n\t3a1a  82801JD (ICH10D) LPC Interface Controller\n\t3a20  82801JI (ICH10 Family) 4 port SATA IDE Controller #1\n\t\t1028 028c  PowerEdge R410 SATA IDE Controller\n\t\t1028 028d  PowerEdge T410 SATA IDE Controller\n\t3a22  82801JI (ICH10 Family) SATA AHCI Controller\n\t\t103c 330b  ProLiant G6 series\n\t\t1043 82d4  P5Q Deluxe Motherboard\n\t\t1458 b005  GA-EP45-DS5/GA-EG45M-DS2H Motherboard\n\t3a25  82801JIR (ICH10R) SATA RAID Controller\n\t\t1028 028c  PERC S100 Controller (PE R410)\n\t\t1028 028d  PERC S100 Controller (PE T410)\n\t\t1028 02f1  PERC S100 Controller (PE R510)\n\t3a26  82801JI (ICH10 Family) 2 port SATA IDE Controller #2\n\t\t1028 028c  PowerEdge R410 SATA IDE Controller\n\t\t1028 028d  PowerEdge T410 SATA IDE Controller\n\t3a30  82801JI (ICH10 Family) SMBus Controller\n\t\t1043 82d4  P5Q Deluxe Motherboard\n\t\t1458 5001  GA-EP45-DS5/GA-EG45M-DS2H Motherboard\n\t3a32  82801JI (ICH10 Family) Thermal Subsystem\n\t3a34  82801JI (ICH10 Family) USB UHCI Controller #1\n\t\t1028 028c  PowerEdge R410 USB UHCI Controller\n\t\t1028 028d  PowerEdge T410 USB UHCI Controller\n\t\t103c 330b  ProLiant G6 series\n\t\t1043 82d4  P5Q Deluxe Motherboard\n\t\t1458 5004  GA-EP45-DS5 Motherboard\n\t3a35  82801JI (ICH10 Family) USB UHCI Controller #2\n\t\t1028 028c  PowerEdge R410 USB UHCI Controller\n\t\t1028 028d  PowerEdge T410 USB UHCI Controller\n\t\t103c 330b  ProLiant G6 series\n\t\t1043 82d4  P5Q Deluxe Motherboard\n\t\t1458 5004  GA-EP45-DS5 Motherboard\n\t3a36  82801JI (ICH10 Family) USB UHCI Controller #3\n\t\t1028 028c  PowerEdge R410 USB UHCI Controller\n\t\t1028 028d  PowerEdge T410 USB UHCI Controller\n\t\t103c 330b  ProLiant G6 series\n\t\t1043 82d4  P5Q Deluxe Motherboard\n\t\t1458 5004  GA-EP45-DS5 Motherboard\n\t3a37  82801JI (ICH10 Family) USB UHCI Controller #4\n\t\t1028 028c  PowerEdge R410 USB UHCI Controller\n\t\t1028 028d  PowerEdge T410 USB UHCI Controller\n\t\t103c 330b  ProLiant G6 series\n\t\t1043 82d4  P5Q Deluxe Motherboard\n\t\t1458 5004  Motherboard\n\t3a38  82801JI (ICH10 Family) USB UHCI Controller #5\n\t\t1028 028c  PowerEdge R410 USB UHCI Controller\n\t\t1028 028d  PowerEdge T410 USB UHCI Controller\n\t\t103c 330b  ProLiant ML150 G6 Server\n\t\t1043 82d4  P5Q Deluxe Motherboard\n\t\t1458 5004  Motherboard\n\t3a39  82801JI (ICH10 Family) USB UHCI Controller #6\n\t\t1028 028c  PowerEdge R410 USB UHCI Controller\n\t\t1028 028d  PowerEdge T410 USB UHCI Controller\n\t\t103c 330b  ProLiant ML150 G6 Server\n\t\t1043 82d4  P5Q Deluxe Motherboard\n\t\t1458 5004  Motherboard\n\t3a3a  82801JI (ICH10 Family) USB2 EHCI Controller #1\n\t\t1028 028c  PowerEdge R410 USB EHCI Controller\n\t\t1028 028d  PowerEdge T410 USB EHCI Controller\n\t\t103c 330b  ProLiant G6 series\n\t\t1043 82d4  P5Q Deluxe Motherboard\n\t\t1458 5006  GA-EP45-DS5 Motherboard\n\t3a3c  82801JI (ICH10 Family) USB2 EHCI Controller #2\n\t\t1028 028c  PowerEdge R410 USB EHCI Controller\n\t\t1028 028d  PowerEdge T410 USB EHCI Controller\n\t\t103c 330b  ProLiant G6 series\n\t\t1043 82d4  P5Q Deluxe Motherboard\n\t\t1458 5006  Motherboard\n\t3a3e  82801JI (ICH10 Family) HD Audio Controller\n\t\t1043 8311  P5Q Deluxe Motherboard\n\t\t1458 a002  GA-EP45-UD3R Motherboard\n\t\t1458 a102  GA-EP45-DS5/GA-EG45M-DS2H Motherboard\n\t3a40  82801JI (ICH10 Family) PCI Express Root Port 1\n\t\t1028 028c  PowerEdge R410 PCI Express Port 1\n\t\t1028 028d  PowerEdge T410 PCI Express Port 1\n\t\t103c 330b  ProLiant ML150 G6 Server\n\t\t1043 82d4  P5Q Deluxe Motherboard\n\t\t1043 82ea  P6T DeLuxe Motherboard\n\t\t1458 5001  GA-EP45-DS5/GA-EG45M-DS2H Motherboard\n\t3a42  82801JI (ICH10 Family) PCI Express Port 2\n\t3a44  82801JI (ICH10 Family) PCI Express Root Port 3\n\t\t1043 82ea  P6T DeLuxe Motherboard\n\t3a46  82801JI (ICH10 Family) PCI Express Root Port 4\n\t\t1043 82ea  P6T DeLuxe Motherboard\n\t\t1458 5001  GA-EP45-DS5 Motherboard\n\t3a48  82801JI (ICH10 Family) PCI Express Root Port 5\n\t\t103c 330b  ProLiant ML150 G6 Server\n\t\t1043 82ea  P6T Deluxe Motherboard\n\t\t1458 5001  GA-EP45-DS5 Motherboard\n\t3a4a  82801JI (ICH10 Family) PCI Express Root Port 6\n\t\t103c 330b  ProLiant ML150 G6 Server\n\t\t1043 82d4  P5Q Deluxe Motherboard\n\t\t1043 82ea  P6T DeLuxe Motherboard\n\t\t1458 5001  GA-EP45-DS5/GA-EG45M-DS2H Motherboard\n\t3a4c  82801JI (ICH10 Family) Gigabit Ethernet Controller\n\t3a51  82801JDO (ICH10DO) VECI Controller\n\t3a55  82801JD/DO (ICH10 Family) Virtual SATA Controller\n\t3a60  82801JD/DO (ICH10 Family) SMBus Controller\n\t3a62  82801JD/DO (ICH10 Family) Thermal Subsystem\n\t3a64  82801JD/DO (ICH10 Family) USB UHCI Controller #1\n\t3a65  82801JD/DO (ICH10 Family) USB UHCI Controller #2\n\t3a66  82801JD/DO (ICH10 Family) USB UHCI Controller #3\n\t3a67  82801JD/DO (ICH10 Family) USB UHCI Controller #4\n\t3a68  82801JD/DO (ICH10 Family) USB UHCI Controller #5\n\t3a69  82801JD/DO (ICH10 Family) USB UHCI Controller #6\n\t3a6a  82801JD/DO (ICH10 Family) USB2 EHCI Controller #1\n\t3a6c  82801JD/DO (ICH10 Family) USB2 EHCI Controller #2\n\t3a6e  82801JD/DO (ICH10 Family) HD Audio Controller\n\t3a70  82801JD/DO (ICH10 Family) PCI Express Port 1\n\t3a72  82801JD/DO (ICH10 Family) PCI Express Port 2\n\t3a74  82801JD/DO (ICH10 Family) PCI Express Port 3\n\t3a76  82801JD/DO (ICH10 Family) PCI Express Port 4\n\t3a78  82801JD/DO (ICH10 Family) PCI Express Port 5\n\t3a7a  82801JD/DO (ICH10 Family) PCI Express Port 6\n\t3a7c  82801JD/DO (ICH10 Family) Gigabit Ethernet Controller\n\t3b00  5 Series/3400 Series Chipset LPC Interface Controller\n\t3b01  Mobile 5 Series Chipset LPC Interface Controller\n\t3b02  P55 Chipset LPC Interface Controller\n\t3b03  PM55 Chipset LPC Interface Controller\n\t3b04  5 Series Chipset LPC Interface Controller\n\t3b05  Mobile 5 Series Chipset LPC Interface Controller\n\t3b06  H55 Chipset LPC Interface Controller\n\t3b07  QM57 Chipset LPC Interface Controller\n\t\t1028 040a  Latitude E6410\n\t\t1028 040b  Latitude E6510\n\t\te4bf 50c1  PC1-GROOVE\n\t3b08  H57 Chipset LPC Interface Controller\n\t3b09  HM55 Chipset LPC Interface Controller\n\t\t1025 0347  Aspire 7740G\n\t\t144d c06a  R730 Laptop\n\t\t17c0 10d2  Medion Akoya E7214 Notebook PC [MD98410]\n\t3b0a  Q57 Chipset LPC Interface Controller\n\t\t1028 02da  OptiPlex 980\n\t\t15d9 060d  C7SIM-Q Motherboard\n\t3b0b  HM57 Chipset LPC Interface Controller\n\t3b0c  5 Series Chipset LPC Interface Controller\n\t3b0d  5 Series/3400 Series Chipset LPC Interface Controller\n\t3b0e  5 Series/3400 Series Chipset LPC Interface Controller\n\t3b0f  QS57 Chipset LPC Interface Controller\n\t3b10  5 Series/3400 Series Chipset LPC Interface Controller\n\t3b11  5 Series/3400 Series Chipset LPC Interface Controller\n\t3b12  3400 Series Chipset LPC Interface Controller\n\t3b13  5 Series/3400 Series Chipset LPC Interface Controller\n\t3b14  3420 Chipset LPC Interface Controller\n\t\t15d9 0605  X8SIL\n\t3b15  5 Series/3400 Series Chipset LPC Interface Controller\n\t3b16  3450 Chipset LPC Interface Controller\n\t3b17  5 Series/3400 Series Chipset LPC Interface Controller\n\t3b18  5 Series/3400 Series Chipset LPC Interface Controller\n\t3b19  5 Series/3400 Series Chipset LPC Interface Controller\n\t3b1a  5 Series/3400 Series Chipset LPC Interface Controller\n\t3b1b  5 Series/3400 Series Chipset LPC Interface Controller\n\t3b1c  5 Series/3400 Series Chipset LPC Interface Controller\n\t3b1d  5 Series/3400 Series Chipset LPC Interface Controller\n\t3b1e  5 Series/3400 Series Chipset LPC Interface Controller\n\t3b1f  5 Series/3400 Series Chipset LPC Interface Controller\n\t3b20  5 Series/3400 Series Chipset 4 port SATA IDE Controller\n\t3b21  5 Series/3400 Series Chipset 2 port SATA IDE Controller\n\t3b22  5 Series/3400 Series Chipset 6 port SATA AHCI Controller\n\t\t1028 02da  OptiPlex 980\n\t\t15d9 0605  X8SIL\n\t\t15d9 060d  C7SIM-Q Motherboard\n\t3b23  5 Series/3400 Series Chipset 4 port SATA AHCI Controller\n\t3b25  5 Series/3400 Series Chipset SATA RAID Controller\n\t\t103c 3118  Smart Array B110i SATA RAID Controller\n\t3b26  5 Series/3400 Series Chipset 2 port SATA IDE Controller\n\t3b28  5 Series/3400 Series Chipset 4 port SATA IDE Controller\n\t\t144d c06a  R730 Laptop\n\t\t17c0 10d2  Medion Akoya E7214 Notebook PC [MD98410]\n\t3b29  5 Series/3400 Series Chipset 4 port SATA AHCI Controller\n\t\t1025 0347  Aspire 7740G\n\t\t144d c06a  R730 Laptop\n\t\t17c0 10d2  Medion Akoya E7214 Notebook PC [MD98410]\n\t3b2c  5 Series/3400 Series Chipset SATA RAID Controller\n\t3b2d  5 Series/3400 Series Chipset 2 port SATA IDE Controller\n\t\t144d c06a  R730 Laptop\n\t\t17c0 10d2  Medion Akoya E7214 Notebook PC [MD98410]\n\t\te4bf 50c1  PC1-GROOVE\n\t3b2e  5 Series/3400 Series Chipset 4 port SATA IDE Controller\n\t\te4bf 50c1  PC1-GROOVE\n\t3b2f  5 Series/3400 Series Chipset 6 port SATA AHCI Controller\n\t\t1028 040a  Latitude E6410\n\t\t1028 040b  Latitude E6510\n\t\te4bf 50c1  PC1-GROOVE\n\t3b30  5 Series/3400 Series Chipset SMBus Controller\n\t\t1025 0347  Aspire 7740G\n\t\t1028 02da  OptiPlex 980\n\t\t1028 040a  Latitude E6410\n\t\t1028 040b  Latitude E6510\n\t\t1043 3838  P7P55-M Motherboard\n\t\t1043 8383  P7P55-M Motherboard\n\t\t144d c06a  R730 Laptop\n\t\t15d9 0605  X8SIL\n\t\t15d9 060d  C7SIM-Q Motherboard\n\t\t17c0 10d2  Medion Akoya E7214 Notebook PC [MD98410]\n\t\te4bf 50c1  PC1-GROOVE\n\t3b32  5 Series/3400 Series Chipset Thermal Subsystem\n\t\t1025 0347  Aspire 7740G\n\t\t1028 040a  Latitude E6410\n\t\t144d c06a  R730 Laptop\n\t\t17c0 10d2  Medion Akoya E7214 Notebook PC [MD98410]\n\t3b34  5 Series/3400 Series Chipset USB2 Enhanced Host Controller\n\t\t1025 0347  Aspire 7740G\n\t\t1028 02da  OptiPlex 980\n\t\t1028 040a  Latitude E6410\n\t\t1028 040b  Latitude E6510\n\t\t144d c06a  R730 Laptop\n\t\t15d9 0605  X8SIL\n\t\t15d9 060d  C7SIM-Q Motherboard\n\t\t17c0 10d2  Medion Akoya E7214 Notebook PC [MD98410]\n\t\te4bf 50c1  PC1-GROOVE\n\t3b36  5 Series/3400 Series Chipset USB Universal Host Controller\n\t3b37  5 Series/3400 Series Chipset USB Universal Host Controller\n\t3b38  5 Series/3400 Series Chipset USB Universal Host Controller\n\t3b39  5 Series/3400 Series Chipset USB Universal Host Controller\n\t3b3a  5 Series/3400 Series Chipset USB Universal Host Controller\n\t3b3b  5 Series/3400 Series Chipset USB Universal Host Controller\n\t3b3c  5 Series/3400 Series Chipset USB2 Enhanced Host Controller\n\t\t1025 0347  Aspire 7740G\n\t\t1028 02da  OptiPlex 980\n\t\t1028 040a  Latitude E6410\n\t\t1028 040b  Latitude E6510\n\t\t144d c06a  R730 Laptop\n\t\t15d9 0605  X8SIL\n\t\t15d9 060d  C7SIM-Q Motherboard\n\t\t17c0 10d2  Medion Akoya E7214 Notebook PC [MD98410]\n\t\te4bf 50c1  PC1-GROOVE\n\t3b3e  5 Series/3400 Series Chipset USB Universal Host Controller\n\t3b3f  5 Series/3400 Series Chipset USB Universal Host Controller\n\t3b40  5 Series/3400 Series Chipset USB Universal Host Controller\n\t3b41  5 Series/3400 Series Chipset LAN Controller\n\t3b42  5 Series/3400 Series Chipset PCI Express Root Port 1\n\t\t1028 02da  OptiPlex 980\n\t\t1028 040a  Latitude E6410\n\t\t1028 040b  Latitude E6510\n\t\t103c 1521  EliteBook 8540p\n\t\t144d c06a  R730 Laptop\n\t\t15d9 060d  C7SIM-Q Motherboard\n\t\t17c0 10d2  Medion Akoya E7214 Notebook PC [MD98410]\n\t3b44  5 Series/3400 Series Chipset PCI Express Root Port 2\n\t\t1028 040a  Latitude E6410\n\t\t1028 040b  Latitude E6510\n\t\t15d9 060d  C7SIM-Q Motherboard\n\t\t17c0 10d2  Medion Akoya E7214 Notebook PC [MD98410]\n\t3b46  5 Series/3400 Series Chipset PCI Express Root Port 3\n\t\t1028 040a  Latitude E6410\n\t\t1028 040b  Latitude E6510\n\t\t144d c06a  R730 Laptop\n\t\t17c0 10d2  Medion Akoya E7214 Notebook PC [MD98410]\n\t3b48  5 Series/3400 Series Chipset PCI Express Root Port 4\n\t\t1028 040a  Latitude E6410\n\t\t1028 040b  Latitude E6510\n\t\t144d c06a  R730 Laptop\n\t3b4a  5 Series/3400 Series Chipset PCI Express Root Port 5\n\t\t1028 02da  OptiPlex 980\n\t\t17c0 10d2  Medion Akoya E7214 Notebook PC [MD98410]\n\t3b4c  5 Series/3400 Series Chipset PCI Express Root Port 6\n\t3b4e  5 Series/3400 Series Chipset PCI Express Root Port 7\n\t3b50  5 Series/3400 Series Chipset PCI Express Root Port 8\n\t3b53  5 Series/3400 Series Chipset VECI Controller\n\t3b56  5 Series/3400 Series Chipset High Definition Audio\n\t\t1025 0347  Aspire 7740G\n\t\t1028 02da  OptiPlex 980\n\t\t1028 040a  Latitude E6410\n\t\t1028 040b  Latitude E6510\n\t\t1043 1373  G73-series gaming laptop\n\t\t144d c06a  R730 Laptop\n\t\t15d9 060d  C7SIM-Q Motherboard\n\t\t17c0 10d2  Medion Akoya E7214 Notebook PC [MD98410]\n\t\te4bf 50c1  PC1-GROOVE\n\t3b57  5 Series/3400 Series Chipset High Definition Audio\n\t3b64  5 Series/3400 Series Chipset HECI Controller\n\t\t1025 0347  Aspire 7740G\n\t\t15d9 060d  C7SIM-Q Motherboard\n\t\t17c0 10d2  Medion Akoya E7214 Notebook PC [MD98410]\n\t\te4bf 50c1  PC1-GROOVE\n\t3b65  5 Series/3400 Series Chipset HECI Controller\n\t3b66  5 Series/3400 Series Chipset PT IDER Controller\n\t3b67  5 Series/3400 Series Chipset KT Controller\n\t\te4bf 50c1  PC1-GROOVE\n\t3c00  Xeon E5/Core i7 DMI2\n\t3c01  Xeon E5/Core i7 DMI2 in PCI Express Mode\n\t3c02  Xeon E5/Core i7 IIO PCI Express Root Port 1a\n\t3c03  Xeon E5/Core i7 IIO PCI Express Root Port 1b\n\t3c04  Xeon E5/Core i7 IIO PCI Express Root Port 2a\n\t3c05  Xeon E5/Core i7 IIO PCI Express Root Port 2b\n\t3c06  Xeon E5/Core i7 IIO PCI Express Root Port 2c\n\t3c07  Xeon E5/Core i7 IIO PCI Express Root Port 2d\n\t3c08  Xeon E5/Core i7 IIO PCI Express Root Port 3a in PCI Express Mode\n\t3c09  Xeon E5/Core i7 IIO PCI Express Root Port 3b\n\t3c0a  Xeon E5/Core i7 IIO PCI Express Root Port 3c\n\t3c0b  Xeon E5/Core i7 IIO PCI Express Root Port 3d\n\t3c0d  Xeon E5/Core i7 Non-Transparent Bridge\n\t3c0e  Xeon E5/Core i7 Non-Transparent Bridge\n\t3c0f  Xeon E5/Core i7 Non-Transparent Bridge\n\t3c20  Xeon E5/Core i7 DMA Channel 0\n\t3c21  Xeon E5/Core i7 DMA Channel 1\n\t3c22  Xeon E5/Core i7 DMA Channel 2\n\t3c23  Xeon E5/Core i7 DMA Channel 3\n\t3c24  Xeon E5/Core i7 DMA Channel 4\n\t3c25  Xeon E5/Core i7 DMA Channel 5\n\t3c26  Xeon E5/Core i7 DMA Channel 6\n\t3c27  Xeon E5/Core i7 DMA Channel 7\n\t3c28  Xeon E5/Core i7 Address Map, VTd_Misc, System Management\n\t3c2a  Xeon E5/Core i7 Control Status and Global Errors\n\t3c2c  Xeon E5/Core i7 I/O APIC\n\t3c2e  Xeon E5/Core i7 DMA\n\t3c2f  Xeon E5/Core i7 DMA\n\t3c40  Xeon E5/Core i7 IIO Switch and IRP Performance Monitor\n\t3c41  Sandy Bridge QPI Port 0 Performance Monitor\n\t3c42  Sandy Bridge QPI Port 1 Performance Monitor\n\t3c43  Xeon E5/Core i7 Ring to PCI Express Performance Monitor\n\t3c44  Xeon E5/Core i7 Ring to QuickPath Interconnect Link 0 Performance Monitor\n\t3c45  Xeon E5/Core i7 Ring to QuickPath Interconnect Link 1 Performance Monitor\n\t3c46  Xeon E5/Core i7 Processor Home Agent Performance Monitoring\n\t3c71  Xeon E5/Core i7 Integrated Memory Controller RAS Registers\n\t3c80  Xeon E5/Core i7 QPI Link 0\n\t3c83  Xeon E5/Core i7 QPI Link Reut 0\n\t3c84  Xeon E5/Core i7 QPI Link Reut 0\n\t3c86  Sandy Bridge QPI Port 0 DFX Link\n\t3c90  Xeon E5/Core i7 QPI Link 1\n\t3c93  Xeon E5/Core i7 QPI Link Reut 1\n\t3c94  Xeon E5/Core i7 QPI Link Reut 1\n\t3c96  Sandy Bridge QPI Port 1 DFX Link\n\t3ca0  Xeon E5/Core i7 Processor Home Agent\n\t3ca8  Xeon E5/Core i7 Integrated Memory Controller Registers\n\t3caa  Xeon E5/Core i7 Integrated Memory Controller Target Address Decoder 0\n\t3cab  Xeon E5/Core i7 Integrated Memory Controller Target Address Decoder 1\n\t3cac  Xeon E5/Core i7 Integrated Memory Controller Target Address Decoder 2\n\t3cad  Xeon E5/Core i7 Integrated Memory Controller Target Address Decoder 3\n\t3cae  Xeon E5/Core i7 Integrated Memory Controller Target Address Decoder 4\n\t3cb0  Xeon E5/Core i7 Integrated Memory Controller Channel 0-3 Thermal Control 0\n\t3cb1  Xeon E5/Core i7 Integrated Memory Controller Channel 0-3 Thermal Control 1\n\t3cb2  Xeon E5/Core i7 Integrated Memory Controller ERROR Registers 0\n\t3cb3  Xeon E5/Core i7 Integrated Memory Controller ERROR Registers 1\n\t3cb4  Xeon E5/Core i7 Integrated Memory Controller Channel 0-3 Thermal Control 2\n\t3cb5  Xeon E5/Core i7 Integrated Memory Controller Channel 0-3 Thermal Control 3\n\t3cb6  Xeon E5/Core i7 Integrated Memory Controller ERROR Registers 2\n\t3cb7  Xeon E5/Core i7 Integrated Memory Controller ERROR Registers 3\n\t3cb8  Xeon E5/Core i7 DDRIO\n\t3cc0  Xeon E5/Core i7 Power Control Unit 0\n\t3cc1  Xeon E5/Core i7 Power Control Unit 1\n\t3cc2  Xeon E5/Core i7 Power Control Unit 2\n\t3cd0  Xeon E5/Core i7 Power Control Unit 3\n\t3ce0  Xeon E5/Core i7 Interrupt Control Registers\n\t3ce3  Xeon E5/Core i7 Semaphore and Scratchpad Configuration Registers\n\t3ce4  Xeon E5/Core i7 R2PCIe\n\t3ce6  Xeon E5/Core i7 QuickPath Interconnect Agent Ring Registers\n\t3ce8  Xeon E5/Core i7 Unicast Register 0\n\t3ce9  Xeon E5/Core i7 Unicast Register 5\n\t3cea  Xeon E5/Core i7 Unicast Register 1\n\t3ceb  Xeon E5/Core i7 Unicast Register 6\n\t3cec  Xeon E5/Core i7 Unicast Register 3\n\t3ced  Xeon E5/Core i7 Unicast Register 7\n\t3cee  Xeon E5/Core i7 Unicast Register 4\n\t3cef  Xeon E5/Core i7 Unicast Register 8\n\t3cf4  Xeon E5/Core i7 Integrated Memory Controller System Address Decoder 0\n\t3cf5  Xeon E5/Core i7 Integrated Memory Controller System Address Decoder 1\n\t3cf6  Xeon E5/Core i7 System Address Decoder\n\t3e10  8th Gen Core 4-core Processor Host Bridge/DRAM Registers [Coffee Lake H]\n\t3e18  8th Gen Core 4-core Workstation Processor Host Bridge/DRAM Registers [Coffee Lake S]\n\t3e1f  8th Gen Core 4-core Desktop Processor Host Bridge/DRAM Registers [Coffee Lake S]\n\t\t1458 5000  Z370 AORUS Gaming K3-CF\n\t3e20  i9 Core / Xeon E 2200M Coffee Lake Host Bridge / DRAM Registers\n\t3e30  8th/9th Gen Core 8-core Desktop Processor Host Bridge/DRAM Registers [Coffee Lake S]\n\t3e33  8th/9th Gen Core Processor Host Bridge/DRAM Registers [Coffee Lake]\n\t3e34  Coffee Lake HOST and DRAM Controller\n\t3e35  Coffee Lake Host Bridge/DRAM Registers\n\t3e81  8th Gen Core Processor PCIe Controller (x16)\n\t3e85  8th Gen Core Processor PCIe Controller (x8)\n\t3e89  8th Gen Core Processor PCIe Controller (x4)\n\t3e90  CoffeeLake-S GT1 [UHD Graphics 610]\n\t3e91  CoffeeLake-S GT2 [UHD Graphics 630]\n\t3e92  CoffeeLake-S GT2 [UHD Graphics 630]\n\t\t1028 0869  Vostro 3470\n\t3e93  CoffeeLake-S GT1 [UHD Graphics 610]\n\t3e94  Coffee Lake-S GT2 [UHD Graphics P630]\n\t3e96  CoffeeLake-S GT2 [UHD Graphics P630]\n\t3e98  CoffeeLake-S GT2 [UHD Graphics 630]\n\t3e9a  Coffee Lake-S GT2 [UHD Graphics P630]\n\t3e9b  CoffeeLake-H GT2 [UHD Graphics 630]\n\t3e9c  Coffee Lake-S GT1 [UHD Graphics 610]\n\t3ea0  WhiskeyLake-U GT2 [UHD Graphics 620]\n\t\t1028 089e  Inspiron 5482\n\t3ea1  Whiskey Lake-U GT1 [UHD Graphics 610]\n\t3ea5  CoffeeLake-U GT3e [Iris Plus Graphics 655]\n\t3ea6  Coffee Lake-U GT3 [Iris Plus Graphics 645]\n\t3ea8  Coffee Lake-U GT3 [Iris Plus Graphics 655]\n\t3ea9  Coffee Lake-U GT2 [UHD Graphics 620]\n\t3ec2  8th Gen Core Processor Host Bridge/DRAM Registers\n\t\t1028 0869  Vostro 3470\n\t\t1043 8694  PRIME H310M-D\n\t3ec4  8th/9th Gen Core Processor Host Bridge / DRAM Registers\n\t3ec6  8th Gen Core Processor Host Bridge/DRAM Registers\n\t3eca  8th Gen Core Processor Host Bridge/DRAM Registers\n\t3ed0  8th Gen Core Processor Host Bridge/DRAM Registers\n\t4000  5400 Chipset Memory Controller Hub\n\t4001  5400 Chipset Memory Controller Hub\n\t4003  5400 Chipset Memory Controller Hub\n\t4021  5400 Chipset PCI Express Port 1\n\t4022  5400 Chipset PCI Express Port 2\n\t4023  5400 Chipset PCI Express Port 3\n\t4024  5400 Chipset PCI Express Port 4\n\t4025  5400 Chipset PCI Express Port 5\n\t4026  5400 Chipset PCI Express Port 6\n\t4027  5400 Chipset PCI Express Port 7\n\t4028  5400 Chipset PCI Express Port 8\n\t4029  5400 Chipset PCI Express Port 9\n\t402d  5400 Chipset IBIST Registers\n\t402e  5400 Chipset IBIST Registers\n\t402f  5400 Chipset QuickData Technology Device\n\t4030  5400 Chipset FSB Registers\n\t4031  5400 Chipset CE/SF Registers\n\t4032  5400 Chipset IOxAPIC\n\t4035  5400 Chipset FBD Registers\n\t4036  5400 Chipset FBD Registers\n\t4041  NVMe Datacenter SSD [Optane]\n\t4100  Moorestown Graphics and Video\n\t4108  Atom Processor E6xx Integrated Graphics Controller\n\t4109  Atom Processor E6xx Integrated Graphics Controller\n\t410a  Atom Processor E6xx Integrated Graphics Controller\n\t410b  Atom Processor E6xx Integrated Graphics Controller\n\t410c  Atom Processor E6xx Integrated Graphics Controller\n\t410d  Atom Processor E6xx Integrated Graphics Controller\n\t410e  Atom Processor E6xx Integrated Graphics Controller\n\t410f  Atom Processor E6xx Integrated Graphics Controller\n\t4114  Atom Processor E6xx PCI Host Bridge #1\n\t4115  Atom Processor E6xx PCI Host Bridge #2\n\t4116  Atom Processor E6xx PCI Host Bridge #3\n\t4117  Atom Processor E6xx PCI Host Bridge #4\n\t4140  NVMe Datacenter SSD [Optane]\n\t\t1028 2134  NVMe Datacenter SSD [Optane] SED 400GB 2.5\" U.2 (P5800X)\n\t\t1028 2135  NVMe Datacenter SSD [Optane] SED 800GB 2.5\" U.2 (P5800X)\n\t\t1028 2136  NVMe Datacenter SSD [Optane] SED 1.6TB 2.5\" U.2 (P5800X)\n\t\t1028 2137  NVMe Datacenter SSD [Optane] 400GB 2.5\" U.2 (P5800X)\n\t\t1028 2138  NVMe Datacenter SSD [Optane] 800GB 2.5\" U.2 (P5800X)\n\t\t1028 2139  NVMe Datacenter SSD [Optane] 1.6TB 2.5\" U.2 (P5800X)\n\t4220  PRO/Wireless 2200BG [Calexico2] Network Connection\n\t\t103c 0934  Compaq nw8240/nx8220\n\t\t103c 12f6  nc6120/nc6220/nw8240/nx8220\n\t\t8086 2701  WM3B2200BG Mini-PCI Card\n\t\t8086 2712  IBM ThinkPad R50e\n\t\t8086 2721  Dell B130 laptop integrated WLAN\n\t\t8086 2722  Dell Latitude D600\n\t\t8086 2731  Samsung P35 integrated WLAN\n\t4222  PRO/Wireless 3945ABG [Golan] Network Connection\n\t\t103c 135c  PRO/Wireless 3945ABG [Golan] Network Connection\n\t\t8086 1000  PRO/Wireless 3945ABG Network Connection\n\t\t8086 1001  WM3945ABG MOW2\n\t\t8086 1005  PRO/Wireless 3945BG Network Connection\n\t\t8086 1034  PRO/Wireless 3945BG Network Connection\n\t\t8086 1044  PRO/Wireless 3945BG Network Connection\n\t\t8086 1c00  PRO/Wireless 3945ABG Network Connection\n\t4223  PRO/Wireless 2915ABG [Calexico2] Network Connection\n\t\t1000 8086  mPCI 3B Americas/Europe ZZA\n\t\t1001 8086  mPCI 3B Europe ZZE\n\t\t1002 8086  mPCI 3B Japan ZZJ\n\t\t1003 8086  mPCI 3B High-Band ZZH\n\t\t103c 1351  Compaq nc6220\n\t4224  PRO/Wireless 2915ABG [Calexico2] Network Connection\n\t4227  PRO/Wireless 3945ABG [Golan] Network Connection\n\t\t8086 1010  ThinkPad R60e\n\t\t8086 1011  ThinkPad T60/R60e/X60s/R61\n\t\t8086 1014  PRO/Wireless 3945BG Network Connection\n\t4229  PRO/Wireless 4965 AG or AGN [Kedron] Network Connection\n\t\t8086 1100  Vaio VGN-SZ79SN_C\n\t\t8086 1101  PRO/Wireless 4965 AG or AGN\n\t422b  Centrino Ultimate-N 6300\n\t\t8086 1101  Centrino Ultimate-N 6300 3x3 AGN\n\t\t8086 1121  Centrino Ultimate-N 6300 3x3 AGN\n\t422c  Centrino Advanced-N 6200\n\t\t8086 1301  Centrino Advanced-N 6200 2x2 AGN\n\t\t8086 1306  Centrino Advanced-N 6200 2x2 ABG\n\t\t8086 1307  Centrino Advanced-N 6200 2x2 BG\n\t\t8086 1321  Centrino Advanced-N 6200 2x2 AGN\n\t\t8086 1326  Centrino Advanced-N 6200 2x2 ABG\n\t4230  PRO/Wireless 4965 AG or AGN [Kedron] Network Connection\n\t\t8086 1110  Lenovo ThinkPad T51\n\t\t8086 1111  Lenovo ThinkPad T61\n\t4232  WiFi Link 5100\n\t\t8086 1201  WiFi Link 5100 AGN\n\t\t8086 1204  WiFi Link 5100 AGN\n\t\t8086 1205  WiFi Link 5100 BGN\n\t\t8086 1206  WiFi Link 5100 ABG\n\t\t8086 1221  WiFi Link 5100 AGN\n\t\t8086 1224  WiFi Link 5100 AGN\n\t\t8086 1225  WiFi Link 5100 BGN\n\t\t8086 1226  WiFi Link 5100 ABG\n\t\t8086 1301  WiFi Link 5100 AGN\n\t\t8086 1304  WiFi Link 5100 AGN\n\t\t8086 1305  WiFi Link 5100 BGN\n\t\t8086 1306  WiFi Link 5100 ABG\n\t\t8086 1321  WiFi Link 5100 AGN\n\t\t8086 1324  WiFi Link 5100 AGN\n\t\t8086 1325  WiFi Link 5100 BGN\n\t\t8086 1326  WiFi Link 5100 ABG\n\t4235  Ultimate N WiFi Link 5300\n\t4236  Ultimate N WiFi Link 5300\n\t4237  PRO/Wireless 5100 AGN [Shiloh] Network Connection\n\t\t8086 1211  WiFi Link 5100 AGN\n\t\t8086 1214  WiFi Link 5100 AGN\n\t\t8086 1215  WiFi Link 5100 BGN\n\t\t8086 1216  WiFi Link 5100 ABG\n\t\t8086 1311  WiFi Link 5100 AGN\n\t\t8086 1314  WiFi Link 5100 AGN\n\t\t8086 1315  WiFi Link 5100 BGN\n\t\t8086 1316  WiFi Link 5100 ABG\n\t4238  Centrino Ultimate-N 6300\n\t\t8086 1111  Centrino Ultimate-N 6300 3x3 AGN\n\t4239  Centrino Advanced-N 6200\n\t\t8086 1311  Centrino Advanced-N 6200 2x2 AGN\n\t\t8086 1316  Centrino Advanced-N 6200 2x2 ABG\n\t423a  PRO/Wireless 5350 AGN [Echo Peak] Network Connection\n\t423b  PRO/Wireless 5350 AGN [Echo Peak] Network Connection\n\t423c  WiMAX/WiFi Link 5150\n\t\t8086 1201  WiMAX/WiFi Link 5150 AGN\n\t\t8086 1206  WiMAX/WiFi Link 5150 ABG\n\t\t8086 1221  WiMAX/WiFi Link 5150 AGN\n\t\t8086 1301  WiMAX/WiFi Link 5150 AGN\n\t\t8086 1306  WiMAX/WiFi Link 5150 ABG\n\t\t8086 1321  WiMAX/WiFi Link 5150 AGN\n\t423d  WiMAX/WiFi Link 5150\n\t\t8086 1211  WiMAX/WiFi Link 5150 AGN\n\t\t8086 1216  WiMAX/WiFi Link 5150 ABG\n\t\t8086 1311  WiMAX/WiFi Link 5150 AGN\n\t\t8086 1316  WiMAX/WiFi Link 5150 ABG\n\t4384  Q570 LPC/eSPI Controller\n\t4385  Z590 LPC/eSPI Controller\n\t4386  H570 LPC/eSPI Controller\n\t4387  B560 LPC/eSPI Controller\n\t4388  H510 LPC/eSPI Controller\n\t4389  WM590 LPC/eSPI Controller\n\t438a  QM580 LPC/eSPI Controller\n\t438b  HM570 LPC/eSPI Controller\n\t438c  C252 LPC/eSPI Controller\n\t438d  C256 LPC/eSPI Controller\n\t438e  H310D LPC/eSPI Controller\n\t438f  W580 LPC/eSPI Controller\n\t4390  RM590E LPC/eSPI Controller\n\t4391  R580E LPC/eSPI Controller\n\t43a3  Tiger Lake-H SMBus Controller\n\t43a4  Tiger Lake-H SPI Controller\n\t43b0  Tiger Lake-H PCI Express Root Port #9\n\t43b8  Tiger Lake-H PCIe Root Port #1\n\t43ba  Tiger Lake-H PCIe Root Port #3\n\t43bb  Tiger Lake-H PCIe Root Port #4\n\t43bc  Tiger Lake-H PCI Express Root Port #5\n\t43be  11th Gen Core Processor PCIe Root Port #7\n\t43c0  Tiger Lake-H PCIe Root Port #17\n\t43c7  Tiger Lake-H PCIe Root Port #24\n\t43c8  Tiger Lake-H HD Audio Controller\n\t43d3  Tiger Lake SATA AHCI Controller\n\t43e0  Tiger Lake-H Management Engine Interface\n\t43e3  Tiger Lake AMT SOL Redirection\n\t43e8  Tiger Lake-H Serial IO I2C Controller #0\n\t43e9  Tiger Lake-H Serial IO I2C Controller #1\n\t43ed  Tiger Lake-H USB 3.2 Gen 2x1 xHCI Host Controller\n\t43ef  Tiger Lake-H Shared SRAM\n\t43f0  Tiger Lake PCH CNVi WiFi\n\t\t8086 0034  Wireless-AC 9560\n\t\t8086 0074  Wi-Fi 6 AX201 160MHz\n\t\t8086 0264  Wireless-AC 9461\n\t\t8086 02a4  Wireless-AC 9462\n\t43fc  Tiger Lake-H Integrated Sensor Hub\n\t444e  Turbo Memory Controller\n\t4511  Elkhart Lake Gaussian and Neural Accelerator\n\t4538  Elkhart Lake PCI-e Root Complex\n\t4555  Elkhart Lake [UHD Graphics Gen11 16EU]\n\t4571  Elkhart Lake [UHD Graphics Gen11 32EU]\n# Seems to be different than ID 4602\n\t4601  Alder Lake-U15 Host and DRAM Controller\n\t4602  Alder Lake Host and DRAM Controller\n\t460d  12th Gen Core Processor PCI Express x16 Controller #1\n\t4619  Core i9/i7/i5/i3 Host Bridge/DRAM Registers\n\t461b  Alder Lake-N Processor Host Bridge/DRAM Registers\n\t461c  Alder Lake-N Processor Host Bridge/DRAM Registers\n\t461d  Alder Lake Innovation Platform Framework Processor Participant\n\t\t1028 0b10  Precision 3571\n\t461e  Alder Lake-P Thunderbolt 4 USB Controller\n\t\t1028 0b10  Precision 3571\n\t461f  Alder Lake-P Thunderbolt 4 PCI Express Root Port #3\n\t4626  Alder Lake-P Integrated Graphics Controller\n\t4628  Alder Lake-UP3 GT2 [UHD Graphics]\n\t4629  12th Gen Core Processor Host Bridge/DRAM Registers\n\t462a  AlderLake-P [UHD Graphics]\n\t462f  Alder Lake-P Thunderbolt 4 PCI Express Root Port #2\n\t4636  AlderLake-P [UHD Graphics]\n\t4638  AlderLake-P [UHD Graphics]\n\t463a  AlderLake-P [UHD Graphics]\n\t463d  12th Gen Core Processor PCI Express x4 Controller #2\n\t463e  Alder Lake-P Thunderbolt 4 NHI #0\n\t\t1028 0b10  Precision 3571\n\t463f  Alder Lake-P Thunderbolt 4 PCI Express Root Port #1\n\t4641  12th Gen Core Processor Host Bridge/DRAM Registers\n\t\t1028 0b10  Precision 3571\n\t464d  12th Gen Core Processor PCI Express x4 Controller #0\n\t464e  Alder Lake-N Thunderbolt 4 USB Controller\n\t464f  12th Gen Core Processor Gaussian & Neural Accelerator\n\t\t1028 0b10  Precision 3571\n\t4650  12th Gen Core Processor Host Bridge\n\t465d  Alder Lake Imaging Signal Processor\n\t4660  12th Gen Core Processor Host Bridge/DRAM Registers\n\t4668  12th Gen Core Processor Host Bridge/DRAM Registers\n\t466d  Alder Lake-P Thunderbolt 4 NHI #1\n\t466e  Alder Lake-P Thunderbolt 4 PCI Express Root Port #0\n\t467d  Platform Monitoring Technology\n\t467e  GNA Scoring Accelerator\n\t467f  Volume Management Device NVMe RAID Controller\n\t4680  AlderLake-S GT1\n\t4682  Alder Lake-S GT1 [UHD Graphics 730]\n\t4688  Alder Lake-HX GT1 [UHD Graphics 770]\n\t468a  Alder Lake-S [UHD Graphics]\n\t468b  Alder Lake-S [UHD Graphics]\n\t4690  Alder Lake-S GT1 [UHD Graphics 770]\n\t4692  Alder Lake-S GT1 [UHD Graphics 730]\n\t4693  Alder Lake-S GT1 [UHD Graphics 710]\n\t46a0  AlderLake-P GT2\n\t46a1  UHD Graphics\n\t46a3  Alder Lake-P GT1 [UHD Graphics]\n\t46a6  Alder Lake-P GT2 [Iris Xe Graphics]\n\t46a8  Alder Lake-UP3 GT2 [Iris Xe Graphics]\n\t46aa  Alder Lake-UP4 GT2 [Iris Xe Graphics]\n\t46b0  AlderLake-P [Iris Xe Graphics]\n\t46b1  AlderLake-P [Iris Xe Graphics]\n\t46b3  Alder Lake-UP3 GT1 [UHD Graphics]\n\t\t1025 161d  N22C6 [Extensa 15 EX215-55]\n\t46b6  AlderLake-P [Iris Xe Graphics]\n\t46b8  AlderLake-P [Iris Xe Graphics]\n\t46ba  AlderLake-P [Iris Xe Graphics]\n\t46c0  AlderLake-M GT1\n\t46c1  AlderLake-M [Iris Xe Graphics]\n\t46c3  Alder Lake-UP4 GT1 [UHD Graphics]\n\t46d0  Alder Lake-N [UHD Graphics]\n\t46d1  Alder Lake-N [UHD Graphics]\n\t46d2  Alder Lake-N [UHD Graphics]\n\t46d3  Alder Lake-N [Intel Graphics]\n\t46d4  Alder Lake-N [Intel Graphics]\n\t4905  DG1 [Iris Xe MAX Graphics]\n\t4906  DG1 [Iris Xe Pod]\n\t4907  SG1 [Server GPU SG-18M]\n\t\t193d 4000  UN-GPU-XG310-32GB-FHFL\n\t4908  DG1 [Iris Xe Graphics]\n\t4909  DG1 [Iris Xe MAX 100]\n\t4940  4xxx Series QAT\n\t4941  4xxx Series QAT Virtual Function\n\t4942  401xx Series QAT\n\t4943  401xx Series QAT Virtual Function\n\t4944  402xx Series QAT\n\t4945  402xx Series QAT Virtual Function\n\t4946  420xx Series QAT\n\t4947  420xx Series QAT Virtual Function\n\t4b00  Elkhart Lake eSPI Controller\n\t4b23  Elkhart Lake SMBus Controller\n\t4b24  Elkhart Lake SPI (Flash) Controller\n\t4b38  Elkhart Lake PCH PCI Express Root Port #0\n\t4b39  Elkhart Lake PCH PCI Express Root Port #1\n\t4b3c  Elkhart Lake PCIe Root Port #4\n\t4b3e  Elkhart Lake PCH PCI Express Root Port #6\n\t4b4b  Elkhart Lake Serial IO I2C Controller #4\n\t4b4d  Elkhart Lake Serial IO UART Controller #2\n\t4b58  Elkhart Lake High Density Audio bus interface\n\t4b63  Elkhart Lake SATA AHCI\n\t4b70  Elkhart Lake Management Engine Interface\n\t4b7d  Elkhart Lake USB 3.10 XHCI\n\t4b7f  Elkhart Lake PMC SRAM\n\t4c3d  Volume Management Device NVMe RAID Controller\n\t4c8a  RocketLake-S GT1 [UHD Graphics 750]\n\t4c8b  RocketLake-S GT1 [UHD Graphics 730]\n\t4c90  RocketLake-S GT1 [UHD Graphics P750]\n\t4c9a  RocketLake-S [UHD Graphics]\n\t4d87  Jasper Lake eSPI Controller\n\t4da3  Jasper Lake SMBus\n\t4da4  Jasper Lake SPI Controller\n\t4da8  Jasper Lake Serial IO UART Controller #0\n\t4dab  Jasper Lake Serial IO SPI Controller #1\n\t4db8  Jasper Lake PCIe Root Port #1\n\t4db9  Jasper Lake PCIe Root Port #2\n\t4dbc  Jasper Lake PCIe Root Port #5\n\t4dbe  Jasper Lake PCIe Root Port #7\n\t4dc4  Jasper Lake eMMC Controller\n\t4dc5  Jasper Lake Serial IO I2C Host Controller #4\n\t4dc6  Jasper Lake Serial IO I2C Host Controller #5\n\t4dc8  Jasper Lake HD Audio\n\t4dd3  Jasper Lake SATA AHCI Controller\n\t4de0  Management Engine Interface\n\t4de8  Jasper Lake Serial IO I2C Host Controller #0\n\t4de9  Jasper Lake Serial IO I2C Host Controller #1\n\t4dea  Jasper Lake Serial IO I2C Host Controller #2\n\t4deb  Jasper Lake Serial IO I2C Host Controller #3\n\t4ded  Jasper Lake USB 3.1 xHCI Host Controller\n\t4def  Jasper Lake Shared SRAM\n\t4df0  Jasper Lake PCH CNVi WiFi\n\t\t8086 4030  Wireless-AC 9560 160MHz\n\t4df8  Jasper Lake SD Controller\n\t4e03  Dynamic Tuning service\n\t4e11  Gaussian Mixture Model and Neural Network Accelerator (GNA)\n\t4e19  JasperLake IPU\n\t4e22  Processor Transaction Router SKU 2 Core\n\t4e55  JasperLake [UHD Graphics]\n\t4e61  JasperLake [UHD Graphics]\n\t4e71  JasperLake [UHD Graphics]\n\t4f80  DG2 [Intel Xe Graphics]\n\t4f81  DG2 [Intel Xe Graphics]\n\t4f82  DG2 [Intel Xe Graphics]\n\t4f83  DG2 [Intel Xe Graphics]\n\t4f84  DG2 [Intel Xe Graphics]\n\t4f85  DG2 [Intel Xe Graphics]\n\t4f86  DG2 [Intel Xe Graphics]\n\t4f87  DG2 [Intel Xe Graphics]\n\t4f88  DG2 [Intel Xe Graphics]\n\t4f89  ACMP [Xe Graphics]\n\t4f8c  ACMP [Xe Graphics]\n\t4f90  DG2 Audio Controller\n\t4f91  DG2 Audio Controller\n\t4f92  DG2 Audio Controller\n\t5001  LE80578\n\t5002  LE80578 Graphics Processor Unit\n\t5009  LE80578 Video Display Controller\n\t500d  LE80578 Expansion Bus\n\t500e  LE80578 UART Controller\n\t500f  LE80578 General Purpose IO\n\t5010  LE80578 I2C Controller\n\t5012  LE80578 Serial Peripheral Interface Bus\n\t5020  EP80579 Memory Controller Hub\n\t5021  EP80579 DRAM Error Reporting Registers\n\t5023  EP80579 EDMA Controller\n\t5024  EP80579 PCI Express Port PEA0\n\t5025  EP80579 PCI Express Port PEA1\n\t5028  EP80579 S-ATA IDE\n\t5029  EP80579 S-ATA AHCI\n\t502a  EP80579 S-ATA Reserved\n\t502b  EP80579 S-ATA Reserved\n\t502c  EP80579 Integrated Processor ASU\n\t502d  EP80579 Integrated Processor with QuickAssist ASU\n\t502e  EP80579 Reserved\n\t502f  EP80579 Reserved\n\t5030  EP80579 Reserved\n\t5031  EP80579 LPC Bus\n\t5032  EP80579 SMBus Controller\n\t5033  EP80579 USB 1.1 Controller\n\t5035  EP80579 USB 2.0 Controller\n\t5037  EP80579 PCI-PCI Bridge (transparent mode)\n\t5039  EP80579 Controller Area Network (CAN) interface #1\n\t503a  EP80579 Controller Area Network (CAN) interface #2\n\t503b  EP80579 Synchronous Serial Port (SPP)\n\t503c  EP80579 IEEE 1588 Hardware Assist\n\t503d  EP80579 Local Expansion Bus\n\t503e  EP80579 Global Control Unit (GCU)\n\t503f  EP80579 Reserved\n\t5040  EP80579 Integrated Processor Gigabit Ethernet MAC\n\t5041  EP80579 Integrated Processor with QuickAssist Gigabit Ethernet MAC\n\t5042  EP80579 Reserved\n\t5043  EP80579 Reserved\n\t5044  EP80579 Integrated Processor Gigabit Ethernet MAC\n\t5045  EP80579 Integrated Processor with QuickAssist Gigabit Ethernet MAC\n\t5046  EP80579 Reserved\n\t5047  EP80579 Reserved\n\t5048  EP80579 Integrated Processor Gigabit Ethernet MAC\n\t5049  EP80579 Integrated Processor with QuickAssist Gigabit Ethernet MAC\n\t504a  EP80579 Reserved\n\t504b  EP80579 Reserved\n\t504c  EP80579 Integrated Processor with QuickAssist TDM\n\t5181  Alder Lake PCH-P LPC/eSPI Controller\n\t5182  Alder Lake PCH eSPI Controller\n\t\t1028 0b10  Precision 3571\n\t5187  Alder Lake LPC Controller\n\t519d  Raptor Lake LPC/eSPI Controller\n\t\t1028 0c06  Precision 3580\n\t51a3  Alder Lake PCH-P SMBus Host Controller\n\t\t1028 0b10  Precision 3571\n\t\t1028 0c06  Precision 3580\n\t51a4  Alder Lake-P PCH SPI Controller\n\t\t1028 0b10  Precision 3571\n\t\t1028 0c06  Precision 3580\n\t51a8  Alder Lake PCH UART #0\n\t51a9  Alder Lake PCH UART #1\n\t51aa  Alder Lake SPI Controller\n\t51ab  Alder Lake SPI Controller\n\t51b0  Alder Lake PCI Express Root Port #9\n\t51b1  Alder Lake PCI Express x1 Root Port #10\n\t51b2  Alder Lake PCI Express x1 Root Port #11\n\t51b3  Alder Lake PCI Express Root Port #12\n\t51bb  Alder Lake-P PCH PCIe Root Port #4\n\t51bc  Alder Lake PCI Express x4 Root Port #5\n\t51bd  Alder Lake-P PCH PCIe Root Port #6\n\t51bf  Alder Lake PCH-P PCI Express Root Port #9\n\t51c5  Alder Lake-P Serial IO I2C Controller #0\n\t51c6  Alder Lake-P Serial IO I2C Controller #1\n\t51c8  Alder Lake PCH-P High Definition Audio Controller\n\t\t1028 0b10  Precision 3571\n\t51ca  Raptor Lake-P/U/H cAVS\n\t\t1028 0c06  Precision 3580\n\t51cc  Alder Lake Smart Sound Technology Audio Controller\n\t51d3  Alder Lake-P SATA AHCI Controller\n\t\t1028 0b10  Precision 3571\n\t51d8  Alder Lake-P Serial IO I2C Controller #2\n\t51d9  Alder Lake-P Serial IO I2C Controller #3\n\t51e0  Alder Lake PCH HECI Controller\n\t\t1028 0b10  Precision 3571\n\t\t1028 0c06  Precision 3580\n\t51e3  Alder Lake AMT SOL Redirection\n\t\t1028 0b10  Precision 3571\n\t51e8  Alder Lake PCH Serial IO I2C Controller #0\n\t\t1028 0b10  Precision 3571\n\t\t1028 0c06  Precision 3580\n\t51e9  Alder Lake PCH Serial IO I2C Controller #1\n\t\t1028 0b10  Precision 3571\n\t\t1028 0c06  Precision 3580\n\t51ea  Alder Lake PCH Serial IO I2C Controller #2\n\t51eb  Alder Lake PCH Serial IO I2C Controller #3\n\t51ed  Alder Lake PCH USB 3.2 xHCI Host Controller\n\t\t1028 0b10  Precision 3571\n\t\t1028 0c06  Precision 3580\n\t51ef  Alder Lake PCH Shared SRAM\n\t\t1028 0b10  Precision 3571\n\t\t1028 0c06  Precision 3580\n\t51f0  Alder Lake-P PCH CNVi WiFi\n\t\t1a56 1652  Dual Band Wi-Fi 6(802.11ax) Killer AX1650i 160MHz 2x2 [Cyclone Peak]\n\t\t1a56 1671  Dual Band Wi-Fi 6E(802.11ax) AX1675s 160MHz 2x2 [Garfield Peak]\n\t\t1a56 1672  Dual Band Wi-Fi 6E(802.11ax) AX1675i 160MHz 2x2 [Garfield Peak]\n\t\t1a56 1692  Simultaneous Dual Band(Double Connect) Wi-Fi 6E AX1690i 160MHz 2x2 [Garfield Peak]\n\t\t8086 0034  Dual Band Wi-Fi 5(802.11ac) Wireless-AC 9560 160MHz 2x2 [Jefferson Peak]\n\t\t8086 0070  Dual Band Wi-Fi 6(802.11ax) AX201 160MHz 2x2 [Harrison Peak]\n\t\t8086 0074  Dual Band Wi-Fi 6(802.11ax) AX201 160MHz 2x2 [Harrison Peak]\n\t\t8086 0094  Dual Band Wi-Fi 6E(802.11ax) AX211 160MHz 2x2 [Garfield Peak]\n\t\t8086 00b4  Simultaneous Dual Band(Double Connect) Wi-Fi 6E AX411 160MHz 2x2 [Garfield Peak]\n\t\t8086 0234  Dual Band Wi-Fi 5(802.11ac) Wireless-AC 9560 80MHz 2x2 [Jefferson Peak]\n\t\t8086 0244  Single Band Wi-Fi 6(802.11ax) AX101 80MHz 1x1 [Harrison Peak]\n\t\t8086 0264  Dual Band Wi-Fi 5(802.11ac) Wireless-AC 9461 80MHz 1x1 [Jefferson Peak]\n\t\t8086 0274  Dual Band Wi-Fi E(802.11ax) AX203 80MHz 2x2 [Johnson Peak]\n\t\t8086 02a4  Dual Band Wi-Fi 5(802.11ac) Wireless-AC 9462 80MHz 1x1 [Jefferson Peak]\n\t\t8086 4070  Dual Band Wi-Fi 6(802.11ax) AX201 160MHz 2x2 [Harrison Peak]\n\t\t8086 4090  Dual Band Wi-Fi 6E(802.11ax) AX211 160MHz 2x2 [Garfield Peak]\n\t\t8086 42a4  Dual Band Wi-Fi 5(802.11ac) Wireless-AC 9462 80MHz 1x1 [Jefferson Peak]\n\t51f1  Raptor Lake PCH CNVi WiFi\n\t\t8086 4090  Wi-Fi 6E AX211 160MHz\n\t51fc  Alder Lake-P Integrated Sensor Hub\n\t\t1028 0b10  Precision 3571\n\t\t1028 0c06  Precision 3580\n\t5200  EtherExpress PRO/100 Intelligent Server PCI Bridge\n\t5201  EtherExpress PRO/100 Intelligent Server Fast Ethernet Controller\n\t\t8086 0001  EtherExpress PRO/100 Server Ethernet Adapter\n\t530d  80310 (IOP) IO Processor\n\t5481  Alder Lake-N PCH eSPI Controller\n# https://edc.intel.com/content/www/us/en/design/products/platforms/processor-and-core-i3-n-series-datasheet-volume-1-of-2/002/pch-device-and-revision-ids/\n\t54a0  Alder Lake-N P2SB Bridge\n\t54a1  Alder Lake-N Power Management Controller (PMC)\n\t54a3  Alder Lake-N SMBus\n\t54a4  Alder Lake-N SPI (flash) Controller\n\t54a6  Alder Lake-N Intel Trace Hub\n\t54a8  Alder Lake-N Serial IO UART Host Controller\n\t54a9  Alder Lake-N UART Controller\n\t54aa  Alder Lake-N Generic SPI (GSPI) Controller #0\n\t54ab  Alder Lake-N Generic SPI (GSPI) Controller #1\n\t54b0  Alder Lake-N PCI Express Root Port #9\n\t54b1  Alder Lake-N PCI Express Root Port #10\n\t54b2  Alder Lake-N PCI Express Root Port #11\n\t54b3  Alder Lake-N PCI Express Root Port #12\n\t54b8  Alder Lake-N PCI Express Root Port #1\n\t54b9  Alder Lake-N PCI Express Root Port #2\n\t54ba  Alder Lake-N PCI Express Root Port #3\n\t54bb  Alder Lake-N PCI Express Root Port #4\n\t54be  Alder Lake-N PCI Express Root Port #7\n\t54c4  Alder Lake-N eMMC Controller\n\t54c5  Alder Lake-N I2C Controller #4\n\t54c6  Alder Lake-N I2C Controller #5\n\t54c7  Alder Lake-N UART Controller #2\n\t54c8  Alder Lake-N PCH High Definition Audio Controller\n\t54d0  Alder Lake-N Touch Host Controller #0 (THC #0)\n\t54d1  Alder Lake-N Touch Host Controller #1 (THC #1)\n\t54d3  Alder Lake-N SATA AHCI Controller\n\t54da  Alder Lake-N UART Controller #3\n\t54e0  Alder Lake-N PCH HECI Controller\n\t54e1  Alder Lake-N PCH HECI Controller\n\t54e4  Alder Lake-N PCH HECI Controller\n\t54e5  Alder Lake-N PCH HECI Controller\n\t54e8  Alder Lake-N PCH I2C Controller\n\t54e9  Alder Lake-N PCH I2C Controller\n\t54ea  Alder Lake-N PCH I2C Controller\n\t54eb  Alder Lake-N PCH I2C Controller\n\t54ed  Alder Lake-N PCH USB 3.2 Gen 2x1 (10 Gb/s) xHCI Host Controller\n\t54ee  Alder Lake-N USB 3.2 Gen 1x1 (5 Gb/s) Device Controller (xDCI)\n\t54ef  Alder Lake-N PCH Shared SRAM\n\t54f0  Alder Lake-N PCH CNVi WiFi\n\t\t8086 0244  Wi-Fi 6 AX101NGW\n\t54f1  Alder Lake-N PCH CNVi WiFi\n\t54f2  Alder Lake-N PCH CNVi WiFi\n\t54f3  Alder Lake-N PCH CNVi WiFi\n\t54fb  Alder Lake-N Generic SPI (GSPI) Controller #2\n\t54fc  Alder Lake-N Integrated Sensor Hub\n\t54ff  Alder Lake-N UFS Controller\n\t5502  Ethernet Controller (2) I225-LMvP\n\t\t103c 87b9  Thunderbolt Dock G4 PCIe NIC\n\t\t17aa 2303  ThinkPad Universal Thunderbolt 4 Dock PCIe NIC\n\t\t1ab6 0225  TS4 On-Board 2.5GbE Ethernet Adaptor\n\t5690  DG2 [Arc A770M]\n\t5691  DG2 [Arc A730M]\n\t5692  DG2 [Arc A550M]\n\t5693  DG2 [Arc A370M]\n\t5694  DG2 [Arc A350M]\n\t5695  DG2 [Iris Xe MAX A200M]\n\t5696  DG2 [Arc A570M]\n\t5697  DG2 [Arc A530M]\n\t5698  DG2 [Arc Xe Graphics]\n\t56a0  DG2 [Arc A770]\n\t56a1  DG2 [Arc A750]\n\t56a2  DG2 [Arc A580]\n\t56a3  DG2 [Arc Xe Graphics]\n\t56a4  DG2 [Arc Xe Graphics]\n\t56a5  DG2 [Arc A380]\n\t56a6  DG2 [Arc A310]\n\t56a7  DG2 [Arc Xe Graphics]\n\t56a8  DG2 [Arc Xe Graphics]\n\t56a9  DG2 [Arc Xe Graphics]\n\t56b0  DG2 [Arc Pro A30M]\n\t56b1  DG2 [Arc Pro A40/A50]\n\t56b2  DG2 [Arc Pro A60M]\n\t56b3  DG2 [Arc Pro A60]\n\t56ba  DG2 [Arc A380E]\n\t56bb  DG2 [Arc A310E]\n\t56bc  DG2 [Arc A370E]\n\t56bd  DG2 [Arc A350E]\n\t56be  DG2 [Arc A750E]\n\t56bf  DG2 [Arc A580E]\n\t56c0  ATS-M [Data Center GPU Flex 170]\n\t56c1  ATS-M [Data Center GPU Flex 140]\n\t56c2  ATS-M [Data Center GPU Flex 170V]\n\t5780  JHL9580 Thunderbolt 5 80/120G Bridge [Barlow Ridge Host 80G 2023]\n\t5781  JHL9580 Thunderbolt 5 80/120G NHI [Barlow Ridge Host 80G 2023]\n\t5782  JHL9580 Thunderbolt 5 80/120G USB Controller [Barlow Ridge Host 80G 2023]\n\t5783  JHL9540 Thunderbolt 4 Bridge [Barlow Ridge Host 40G 2023]\n\t5784  JHL9540 Thunderbolt 4 NHI [Barlow Ridge Host 40G 2023]\n\t5785  JHL9540 Thunderbolt 4 USB Controller [Barlow Ridge Host 40G 2023]\n\t5786  JHL9480 Thunderbolt 5 80/120G Bridge [Barlow Ridge Hub 80G 2023]\n\t5787  JHL9480 Thunderbolt 5 80/120G USB Controller [Barlow Ridge Hub 80G 2023]\n\t5795  Granite Rapids Chipset LPC Controller\n\t579c  Ethernet Connection E825-C for backplane\n\t579d  Ethernet Connection E825-C for QSFP\n\t579e  Ethernet Connection E825-C for SFP\n\t579f  Ethernet Connection E825-C 10GbE\n\t57a4  JHL9440 Thunderbolt 4 Bridge [Barlow Ridge Hub 40G 2023]\n\t57a5  JHL9440 Thunderbolt 4 USB Controller [Barlow Ridge Hub 40G 2023]\n\t57ad  E610 Virtual Function\n\t57ae  Ethernet Controller E610 Backplane\n\t57af  Ethernet Controller E610 SFP\n\t57b0  Ethernet Controller E610 10GBASE T\n\t\t8086 0001  Ethernet Network Adapter E610-XT4\n\t\t8086 0002  Ethernet Network Adapter E610-XT2\n\t\t8086 0003  Ethernet Network Adapter E610-XT4 for OCP 3.0\n\t\t8086 0004  Ethernet Network Adapter E610-XT2 for OCP 3.0\n\t57b1  Ethernet Controller E610 2.5GBASE T\n\t\t8086 0000  Ethernet Converged Network Adapter E610\n\t\t8086 0002  Ethernet Network Adapter E610-IT4\n\t\t8086 0003  Ethernet Network Adapter E610-IT4 for OCP 3.0\n\t57b2  Ethernet Controller E610 SGMII\n\t5845  QEMU NVM Express Controller\n\t\t1af4 1100  QEMU Virtual Machine\n\t5900  Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers\n\t5901  Xeon E3-1200 v6/7th Gen Core Processor PCIe Controller (x16)\n\t5902  HD Graphics 610\n\t5904  Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers\n\t\t1025 115f  Aspire E5-575G\n\t\t17aa 2247  ThinkPad T570\n\t\t17aa 224f  ThinkPad X1 Carbon 5th Gen\n\t5905  Xeon E3-1200 v6/7th Gen Core Processor PCIe Controller (x8)\n\t5906  HD Graphics 610\n\t5909  Xeon E3-1200 v6/7th Gen Core Processor PCIe Controller (x4)\n\t590b  HD Graphics 610\n\t590c  Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers\n\t590f  Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers\n\t\t1043 8694  H110I-PLUS Motherboard\n\t\t1462 7994  H110M ECO/GAMING\n\t\t1462 7a68  B250 KRAIT GAMING (MS-7A68)\n\t\t1462 7a72  H270 PC MATE\n\t5910  Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers\n\t5911  Xeon E3-1200 v6/7th Gen Core Processor Gaussian Mixture Model\n\t5912  HD Graphics 630\n\t\t1043 8694  H110I-PLUS Motherboard\n\t\t1462 7994  H110M ECO/GAMING\n\t\t1462 7a72  H270 PC MATE\n\t5914  Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers\n\t\t17aa 225d  ThinkPad T480\n\t5916  HD Graphics 620\n\t\t1025 1094  Aspire E5-575G\n\t\t17aa 2248  ThinkPad T570\n\t\t17aa 224f  ThinkPad X1 Carbon 5th Gen\n\t5917  UHD Graphics 620\n\t\t17aa 225d  ThinkPad T480 (20L5)\n\t\t17aa 225e  ThinkPad T480\n\t5918  Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers\n\t591b  HD Graphics 630\n\t591c  UHD Graphics 615\n\t591d  HD Graphics P630\n\t591e  HD Graphics 615\n\t591f  Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers\n\t5921  HD Graphics 620\n\t5923  HD Graphics 635\n\t5926  Iris Plus Graphics 640\n\t5927  Iris Plus Graphics 650\n\t5a84  Apollo Lake [HD Graphics 505]\n\t5a85  HD Graphics 500\n\t5a88  Celeron N3350/Pentium N4200/Atom E3900 Series Imaging Unit\n\t5a98  Celeron N3350/Pentium N4200/Atom E3900 Series Audio Cluster\n\t5a9a  Celeron N3350/Pentium N4200/Atom E3900 Series Trusted Execution Engine\n\t5aa2  Celeron N3350/Pentium N4200/Atom E3900 Series Integrated Sensor Hub\n\t5aa8  Celeron N3350/Pentium N4200/Atom E3900 Series USB xHCI\n\t5aac  Celeron N3350/Pentium N4200/Atom E3900 Series I2C Controller #1\n\t5aae  Celeron N3350/Pentium N4200/Atom E3900 Series I2C Controller #2\n\t5ab0  Celeron N3350/Pentium N4200/Atom E3900 Series I2C Controller #3\n\t5ab2  Celeron N3350/Pentium N4200/Atom E3900 Series I2C Controller #4\n\t5ab4  Celeron N3350/Pentium N4200/Atom E3900 Series I2C Controller #5\n\t5ab6  Celeron N3350/Pentium N4200/Atom E3900 Series I2C Controller #6\n\t5ab8  Celeron N3350/Pentium N4200/Atom E3900 Series I2C Controller #7\n\t5aba  Celeron N3350/Pentium N4200/Atom E3900 Series I2C Controller #8\n\t5abc  Celeron N3350/Pentium N4200/Atom E3900 Series HSUART Controller #1\n\t5abe  Celeron N3350/Pentium N4200/Atom E3900 Series HSUART Controller #2\n\t5ac0  Celeron N3350/Pentium N4200/Atom E3900 Series HSUART Controller #3\n\t5ac2  Celeron N3350/Pentium N4200/Atom E3900 Series SPI Controller #1\n\t5ac4  Celeron N3350/Pentium N4200/Atom E3900 Series SPI Controller #2\n\t5ac6  Celeron N3350/Pentium N4200/Atom E3900 Series SPI Controller #3\n\t5ac8  Celeron N3350/Pentium N4200/Atom E3900 Series PWM Pin Controller\n\t5aca  Celeron N3350/Pentium N4200/Atom E3900 Series SDXC/MMC Host Controller\n\t5acc  Celeron N3350/Pentium N4200/Atom E3900 Series eMMC Controller\n\t5ad0  Celeron N3350/Pentium N4200/Atom E3900 Series SDIO Controller\n\t5ad4  Celeron N3350/Pentium N4200/Atom E3900 Series SMBus Controller\n\t5ad6  Celeron N3350/Pentium N4200/Atom E3900 Series PCI Express Port B #1\n\t5ad7  Celeron N3350/Pentium N4200/Atom E3900 Series PCI Express Port B #2\n\t5ad8  Celeron N3350/Pentium N4200/Atom E3900 Series PCI Express Port A #1\n\t5ad9  Celeron N3350/Pentium N4200/Atom E3900 Series PCI Express Port A #2\n\t5ada  Celeron N3350/Pentium N4200/Atom E3900 Series PCI Express Port A #3\n\t5adb  Celeron N3350/Pentium N4200/Atom E3900 Series PCI Express Port A #4\n\t5ae3  Celeron N3350/Pentium N4200/Atom E3900 Series SATA AHCI Controller\n\t5ae8  Celeron N3350/Pentium N4200/Atom E3900 Series Low Pin Count Interface\n\t5aee  Celeron N3350/Pentium N4200/Atom E3900 Series HSUART Controller #4\n\t5af0  Celeron N3350/Pentium N4200/Atom E3900 Series Host Bridge\n\t641d  Lunar Lake-M Dynamic Tuning Technology\n\t6420  Lunar Lake [Intel Graphics]\n\t643e  Lunar Lake NPU\n\t645d  Lunar Lake IPU\n\t647d  Lunar Lake-M Crashlog and Telemetry\n\t64a0  Lunar Lake [Intel Arc Graphics 130V / 140V]\n\t64b0  Lunar Lake [Intel Graphics]\n\t65c0  5100 Chipset Memory Controller Hub\n\t65e2  5100 Chipset PCI Express x4 Port 2\n\t65e3  5100 Chipset PCI Express x4 Port 3\n\t65e4  5100 Chipset PCI Express x4 Port 4\n\t65e5  5100 Chipset PCI Express x4 Port 5\n\t65e6  5100 Chipset PCI Express x4 Port 6\n\t65e7  5100 Chipset PCI Express x4 Port 7\n\t65f0  5100 Chipset FSB Registers\n\t\t1028 020f  PowerEdge R300\n\t\t1028 0210  PowerEdge T300\n\t65f1  5100 Chipset Reserved Registers\n\t\t1028 0210  PowerEdge T300\n\t65f3  5100 Chipset Reserved Registers\n\t65f5  5100 Chipset DDR Channel 0 Registers\n\t65f6  5100 Chipset DDR Channel 1 Registers\n\t65f7  5100 Chipset PCI Express x8 Port 2-3\n\t65f8  5100 Chipset PCI Express x8 Port 4-5\n\t65f9  5100 Chipset PCI Express x8 Port 6-7\n\t65fa  5100 Chipset PCI Express x16 Port 4-7\n\t65ff  5100 Chipset DMA Engine\n\t6f00  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DMI2\n\t\t15d9 0832  X10SRL-F\n\t6f01  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 0\n\t6f02  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 1\n\t6f03  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 1\n\t6f04  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 2\n\t6f05  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 2\n\t6f06  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 2\n\t6f07  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 2\n\t6f08  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 3\n\t6f09  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 3\n\t6f0a  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 3\n\t6f0b  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 3\n\t6f10  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug\n\t6f11  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug\n\t6f12  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug\n\t6f13  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug\n\t6f14  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug\n\t6f15  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug\n\t6f16  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug\n\t6f17  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug\n\t6f18  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug\n\t6f19  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug\n\t6f1a  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug\n\t6f1b  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug\n\t6f1c  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug\n\t6f1d  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R2PCIe Agent\n\t6f1e  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Ubox\n\t6f1f  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Ubox\n\t6f20  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Crystal Beach DMA Channel 0\n\t\t15d9 0832  X10SRL-F\n\t6f21  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Crystal Beach DMA Channel 1\n\t\t15d9 0832  X10SRL-F\n\t6f22  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Crystal Beach DMA Channel 2\n\t\t15d9 0832  X10SRL-F\n\t6f23  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Crystal Beach DMA Channel 3\n\t\t15d9 0832  X10SRL-F\n\t6f24  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Crystal Beach DMA Channel 4\n\t\t15d9 0832  X10SRL-F\n\t6f25  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Crystal Beach DMA Channel 5\n\t\t15d9 0832  X10SRL-F\n\t6f26  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Crystal Beach DMA Channel 6\n\t\t15d9 0832  X10SRL-F\n\t6f27  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Crystal Beach DMA Channel 7\n\t\t15d9 0832  X10SRL-F\n\t6f28  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Map/VTd_Misc/System Management\n\t\t15d9 0832  X10SRL-F\n\t6f29  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Hot Plug\n\t\t15d9 0832  X10SRL-F\n\t6f2a  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO RAS/Control Status/Global Errors\n\t\t15d9 0832  X10SRL-F\n\t6f2c  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D I/O APIC\n\t\t15d9 0832  X10SRL-F\n\t6f30  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Home Agent 0\n\t6f32  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 0\n\t6f33  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 1\n\t6f34  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R2PCIe Agent\n\t6f36  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R3 QPI Link 0/1\n\t6f37  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R3 QPI Link 0/1\n\t6f38  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Home Agent 1\n\t6f39  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IO Performance Monitoring\n\t6f3a  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 2\n\t6f3e  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R3 QPI Link 2\n\t6f3f  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R3 QPI Link 2\n\t6f40  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 2\n\t6f41  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R3 QPI Link 2\n\t6f43  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 2\n\t6f45  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 2 Debug\n\t6f46  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 2 Debug\n\t6f47  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 2 Debug\n\t6f50  Xeon Processor D Family QuickData Technology Register DMA Channel 0\n\t6f51  Xeon Processor D Family QuickData Technology Register DMA Channel 1\n\t6f52  Xeon Processor D Family QuickData Technology Register DMA Channel 2\n\t6f53  Xeon Processor D Family QuickData Technology Register DMA Channel 3\n\t6f54  Xeon Processor D Family QuickAssist Technology\n\t6f55  Xeon Processor D Family QuickAssist Technology Virtual Fuction\n\t6f60  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Home Agent 1\n\t6f68  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Target Address/Thermal/RAS\n\t6f6a  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Channel Target Address Decoder\n\t6f6b  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Channel Target Address Decoder\n\t6f6c  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Channel Target Address Decoder\n\t6f6d  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Channel Target Address Decoder\n\t6f6e  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 2/3 Broadcast\n\t6f6f  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Global Broadcast\n\t6f70  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Home Agent 0 Debug\n\t6f71  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Target Address/Thermal/RAS\n\t6f76  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R3 QPI Link Debug\n\t6f78  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Home Agent 1 Debug\n\t6f79  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Target Address/Thermal/RAS\n\t6f7d  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Ubox\n\t6f7e  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R3 QPI Link Debug\n\t6f80  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 0\n\t6f81  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R3 QPI Link 0/1\n\t6f83  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 0\n\t6f85  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 0 Debug\n\t6f86  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 0 Debug\n\t6f87  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 0 Debug\n\t6f88  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit\n\t6f8a  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit\n\t6f90  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 1\n\t6f93  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 1\n\t6f95  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 1 Debug\n\t6f96  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 1 Debug\n\t6f98  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit\n\t6f99  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit\n\t6f9a  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit\n\t6f9c  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit\n\t6fa0  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Home Agent 0\n\t6fa8  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Target Address/Thermal/RAS\n\t6faa  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel Target Address Decoder\n\t6fab  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel Target Address Decoder\n\t6fac  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel Target Address Decoder\n\t6fad  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel Target Address Decoder\n\t6fae  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 0/1 Broadcast\n\t6faf  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Global Broadcast\n\t6fb0  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 0 Thermal Control\n\t6fb1  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 1 Thermal Control\n\t6fb2  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 0 Error\n\t6fb3  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 1 Error\n\t6fb4  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 2 Thermal Control\n\t6fb5  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 3 Thermal Control\n\t6fb6  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 2 Error\n\t6fb7  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 3 Error\n\t6fb8  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 2/3 Interface\n\t6fb9  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 2/3 Interface\n\t6fba  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 2/3 Interface\n\t6fbb  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 2/3 Interface\n\t6fbc  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 0/1 Interface\n\t6fbd  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 0/1 Interface\n\t6fbe  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 0/1 Interface\n\t6fbf  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 0/1 Interface\n\t6fc0  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit\n\t6fc1  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit\n\t6fc2  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit\n\t6fc3  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit\n\t6fc4  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit\n\t6fc5  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit\n\t6fc6  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit\n\t6fc7  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit\n\t6fc8  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit\n\t6fc9  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit\n\t6fca  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit\n\t6fcb  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit\n\t6fcc  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit\n\t6fcd  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit\n\t6fce  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit\n\t6fcf  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit\n\t6fd0  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 1 - Channel 0 Thermal Control\n\t6fd1  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 1 - Channel 1 Thermal Control\n\t6fd2  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 1 - Channel 0 Error\n\t6fd3  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 1 - Channel 1 Error\n\t6fd4  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 1 - Channel 2 Thermal Control\n\t6fd5  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 1 - Channel 3 Thermal Control\n\t6fd6  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 1 - Channel 2 Error\n\t6fd7  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 1 - Channel 3 Error\n\t6fe0  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent\n\t6fe1  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent\n\t6fe2  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent\n\t6fe3  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent\n\t6fe4  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent\n\t6fe5  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent\n\t6fe6  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent\n\t6fe7  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent\n\t6fe8  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent\n\t6fe9  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent\n\t6fea  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent\n\t6feb  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent\n\t6fec  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent\n\t6fed  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent\n\t6fee  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent\n\t6fef  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent\n\t6ff0  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent\n\t6ff1  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent\n\t6ff8  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent\n\t6ff9  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent\n\t6ffa  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent\n\t6ffb  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent\n\t6ffc  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent\n\t6ffd  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent\n\t6ffe  Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent\n\t7000  82371SB PIIX3 ISA [Natoma/Triton II]\n\t\t01de fffd  Propolis Virtual PIIX3 ISA Controller\n\t\t1af4 1100  Qemu virtual machine\n\t7010  82371SB PIIX3 IDE [Natoma/Triton II]\n\t\t1af4 1100  Qemu virtual machine\n\t7020  82371SB PIIX3 USB [Natoma/Triton II]\n\t\t1af4 1100  QEMU Virtual Machine\n\t7030  430VX - 82437VX TVX [Triton VX]\n\t7050  Intercast Video Capture Card\n\t7051  PB 642365-003 (Business Video Conferencing Card)\n\t7100  430TX - 82439TX MTXC\n\t7110  82371AB/EB/MB PIIX4 ISA\n\t\t15ad 1976  Virtual Machine Chipset\n\t7111  82371AB/EB/MB PIIX4 IDE\n\t\t15ad 1976  Virtual Machine Chipset\n\t7112  82371AB/EB/MB PIIX4 USB\n\t\t15ad 1976  Virtual Machine Chipset\n\t\t1af4 1100  QEMU Virtual Machine\n\t7113  82371AB/EB/MB PIIX4 ACPI\n\t\t01de fffc  Propolis Virtual PIIX4 PM Controller\n\t\t15ad 1976  Virtual Machine Chipset\n\t\t1af4 1100  Qemu virtual machine\n\t7120  82810 GMCH (Graphics Memory Controller Hub)\n\t\t4c53 1040  CL7 mainboard\n\t\t4c53 1060  PC7 mainboard\n\t7121  82810 (CGC) Chipset Graphics Controller\n\t\t4c53 1040  CL7 mainboard\n\t\t4c53 1060  PC7 mainboard\n\t\t8086 4341  Cayman (CA810) Mainboard\n\t7122  82810 DC-100 (GMCH) Graphics Memory Controller Hub\n\t7123  82810 DC-100 (CGC) Chipset Graphics Controller\n\t7124  82810E DC-133 (GMCH) Graphics Memory Controller Hub\n\t\t1028 00b4  OptiPlex GX110\n\t7125  82810E DC-133 (CGC) Chipset Graphics Controller\n\t\t1028 00b4  OptiPlex GX110\n\t7126  82810 DC-133 System and Graphics Controller\n\t7128  82810-M DC-100 System and Graphics Controller\n\t712a  82810-M DC-133 System and Graphics Controller\n\t7180  440LX/EX - 82443LX/EX Host bridge\n\t7181  440LX/EX - 82443LX/EX AGP bridge\n\t7190  440BX/ZX/DX - 82443BX/ZX/DX Host bridge\n\t\t0e11 0500  Armada 1750 Laptop System Chipset\n\t\t0e11 b110  Armada M700/E500\n\t\t1028 008e  PowerEdge 1300 mainboard\n\t\t1043 803b  CUBX-L/E Mainboard\n\t\t1179 0001  Toshiba Tecra 8100 Laptop System Chipset\n\t\t15ad 1976  Virtual Machine Chipset\n\t\t4c53 1050  CT7 mainboard\n\t\t4c53 1051  CE7 mainboard\n\t7191  440BX/ZX/DX - 82443BX/ZX/DX AGP bridge\n\t\t1028 008e  PowerEdge 1300 mainboard\n\t7192  440BX/ZX/DX - 82443BX/ZX/DX Host bridge (AGP disabled)\n\t\t0e11 0460  Armada 1700 Laptop System Chipset\n\t\t1179 0001  Satellite 4010\n\t\t4c53 1000  CC7/CR7/CP7/VC7/VP7/VR7 mainboard\n\t\t8086 7190  Dell PowerEdge 350\n\t7194  82440MX Host Bridge\n\t\t1033 0000  Versa Note Vxi\n\t\t4c53 10a0  CA3/CR3 mainboard\n\t7195  82440MX AC'97 Audio Controller\n\t\t1033 80cc  Versa Note VXi\n\t\t10cf 1099  QSound_SigmaTel Stac97 PCI Audio\n\t\t11d4 0040  SoundMAX Integrated Digital Audio\n\t\t11d4 0048  SoundMAX Integrated Digital Audio\n\t7196  82440MX AC'97 Modem Controller\n\t7198  82440MX ISA Bridge\n\t7199  82440MX EIDE Controller\n\t719a  82440MX USB Universal Host Controller\n\t719b  82440MX Power Management Controller\n\t71a0  440GX - 82443GX Host bridge\n\t\t4c53 1050  CT7 mainboard\n\t\t4c53 1051  CE7 mainboard\n\t71a1  440GX - 82443GX AGP bridge\n\t71a2  440GX - 82443GX Host bridge (AGP disabled)\n\t\t4c53 1000  CC7/CR7/CP7/VC7/VP7/VR7 mainboard\n\t7360  XMM7360 LTE Advanced Modem\n\t7560  XMM7560 LTE Advanced Pro Modem\n\t7600  82372FB PIIX5 ISA\n\t7601  82372FB PIIX5 IDE\n\t7602  82372FB PIIX5 USB\n\t7603  82372FB PIIX5 SMBus\n\t7725  Arrow Lake-H [PCH Serial IO UART Host Controller]\n\t7726  Arrow Lake-H PCH Serial IO UART Host Controller]\n\t7727  Arrow Lake-H [LPC/eSPI Controller]\n\t7730  Arrow Lake-H [LPC/eSPI Controller]\n\t7746  Arrow Lake-H [LPC/eSPI Controller]\n\t7750  Arrow Lake-H [Serial IO I2C Host Controller]\n\t7751  Arrow Lake-H [Serial IO I2C Host Controller]\n\t7752  Arrow Lake-H [PCH Serial IO UART Host Controller]\n\t7778  Arrow Lake-H [Serial IO I2C Host Controller]\n\t7779  Arrow Lake-H [Serial IO I2C Host Controller]\n\t777a  Arrow Lake-H [Serial IO I2C Host Controller]\n\t777b  Arrow Lake-H [Serial IO I2C Host Controller]\n\t7800  82740 (i740) AGP Graphics Accelerator\n\t\t003d 0008  Starfighter AGP\n\t\t003d 000b  Starfighter AGP\n\t\t1092 0100  Stealth II G460\n\t\t10b4 201a  Lightspeed 740\n\t\t10b4 202f  Lightspeed 740\n\t\t8086 0000  Terminator 2x/i\n\t\t8086 0100  Intel740 Graphics Accelerator\n\t7a04  Raptor Lake LPC/eSPI Controller\n\t7a23  Raptor Lake-S PCH SMBus Controller\n\t7a24  Raptor Lake SPI (flash) Controller\n\t7a27  Raptor Lake-S PCH Shared SRAM\n\t7a30  Raptor Lake PCI Express Root Port #9\n\t7a38  Raptor Lake PCI Express Root Port #1\n\t7a3a  Raptor Point-S PCH - PCI Express Root Port 3\n\t7a3b  Raptor Lake PCI Express Root Port #4\n\t7a40  Raptor Lake PCI Express Root Port #17\n\t7a44  Raptor Lake PCI Express Root Port #21\n\t7a48  Raptor Lake PCI Express Root Port #25\n\t7a4c  Raptor Lake Serial IO I2C Host Controller #0\n\t7a4d  Raptor Lake Serial IO I2C Host Controller #1\n\t7a4e  Raptor Lake Serial IO I2C Host Controller #2\n\t7a50  Raptor Lake High Definition Audio Controller\n\t7a60  Raptor Lake USB 3.2 Gen 2x2 (20 Gb/s) XHCI Host Controller\n\t7a62  Raptor Lake SATA AHCI Controller\n\t7a68  Raptor Lake CSME HECI #1\n\t7a69  Raptor Lake CSME HECI #2\n\t7a70  Raptor Lake-S PCH CNVi WiFi\n\t\t8086 0090  WiFi 6E AX211 160MHz\n# Unlike other PCH components. The eSPI controller is specific to each chipset model\n\t7a84  Z690 Chipset LPC/eSPI Controller\n\t7a85  LPC Controller/eSPI Controller (H670)\n\t7aa3  Alder Lake-S PCH SMBus Controller\n\t7aa4  Alder Lake-S PCH SPI Controller\n\t7aa7  Alder Lake-S PCH Shared SRAM\n\t7aa8  Alder Lake-S PCH Serial IO UART #0\n\t7aab  Alder Lake-S PCH Serial IO SPI Controller #1\n\t7ab0  Alder Lake-S PCH PCI Express Root Port #9\n\t7ab4  Alder Lake-S PCH PCI Express Root Port #13\n\t7ab8  Alder Lake-S PCH PCI Express Root Port #1\n\t7ab9  Alder Lake-S PCH PCI Express Root Port #2\n\t7aba  Alder Lake-S PCH PCI Express Root Port #3\n\t7abc  Alder Lake-S PCH PCI Express Root Port #5\n\t7abd  Alder Lake-S PCH PCI Express Root Port #6\n\t7abf  Alder Lake-S PCH PCI Express Root Port #8\n\t7ac4  Alder Lake-S PCH PCI Express Root Port #21\n\t7ac8  Alder Lake-S PCH PCI Express Root Port #25\n\t7acc  Alder Lake-S PCH Serial IO I2C Controller #0\n\t7acd  Alder Lake-S PCH Serial IO I2C Controller #1\n\t7ace  Alder Lake-S PCH Serial IO I2C Controller #2\n\t7acf  Alder Lake-S PCH Serial IO I2C Controller #3\n\t7ad0  Alder Lake-S HD Audio Controller\n\t7ae0  Alder Lake-S PCH USB 3.2 Gen 2x2 XHCI Controller\n\t7ae1  Alder Lake-S PCH USB 3.2 Gen 1x1 xDCI Controller\n\t7ae2  Alder Lake-S PCH SATA Controller [AHCI Mode]\n\t7ae8  Alder Lake-S PCH HECI Controller #1\n\t7aeb  Alder Lake-S Keyboard and Text (KT) Redirection\n\t7af0  Alder Lake-S PCH CNVi WiFi\n\t\t8086 0034  Wireless-AC 9560\n\t\t8086 0070  Wi-Fi 6 AX201 160MHz\n\t\t8086 0094  Wi-Fi 6 AX201 160MHz\n\t7af8  Alder Lake-S Integrated Sensor Hub\n\t7afc  Alder Lake-S PCH Serial IO I2C Controller #4\n\t7afd  Alder Lake-S PCH Serial IO I2C Controller #5\n\t7d01  Meteor Lake-H 6p+8e cores Host Bridge/DRAM Controller\n\t7d03  Meteor Lake-P Dynamic Tuning Technology\n\t7d0b  Volume Management Device NVMe RAID Controller Intel Corporation\n\t7d0d  Meteor Lake-P Platform Monitoring Technology\n\t7d19  Meteor Lake IPU\n\t7d1d  Meteor Lake NPU\n\t7d40  Meteor Lake-M [Intel Graphics]\n\t7d41  Arrow Lake-U [Intel Graphics]\n\t7d45  Meteor Lake-P [Intel Graphics]\n\t7d51  Arrow Lake-P [Intel Graphics]\n\t7d55  Meteor Lake-P [Intel Arc Graphics]\n\t7d60  Meteor Lake-M [Intel Graphics]\n\t7d67  Arrow Lake-S [Intel Graphics]\n\t7dd1  Arrow Lake-P [Intel Graphics]\n\t7dd5  Meteor Lake-P [Intel Graphics]\n\t7e01  Meteor Lake-P LPC/eSPI Controller\n\t7e02  Meteor Lake-H eSPI Controller\n\t7e22  Meteor Lake-P SMBus Controller\n\t7e23  Meteor Lake-P SPI Controller\n\t7e24  Meteor Lake-P Trace Hub\n\t7e25  Meteor Lake-P Serial IO UART Controller #0\n\t7e26  Meteor Lake-P Serial IO UART Controller #1\n\t7e27  Meteor Lake-P Serial IO SPI Controller #0\n\t7e28  Meteor Lake-P HD Audio Controller\n\t7e30  Meteor Lake-P Serial IO SPI Controller #1\n\t7e3f  Meteor Lake-H/U PCIe Root Port #8\n\t7e40  Meteor Lake PCH CNVi WiFi\n\t\t8086 0094  Wi-Fi 6E AX211 160MHz\n# Refer from Intel Meteor Lake EDS (doc#640228) under its \"Device IDs\" section.\n\t7e45  Meteor Lake-P Integrated Sensor Hub\n\t7e46  Meteor Lake-P Serial IO SPI Controller #2\n\t7e4c  Meteor Lake-P Gaussian & Neural-Network Accelerator\n\t7e4d  Meteor Lake-H/U PCIe Root Port #9\n\t7e50  Meteor Lake-P Serial IO I2C Controller #4\n\t7e51  Meteor Lake-P Serial IO I2C Controller #5\n\t7e52  Meteor Lake-P Serial IO UART Controller #2\n\t7e70  Meteor Lake-P CSME HECI #1\n\t7e73  Meteor Lake-P Keyboard and Text (KT) Redirection\n\t7e78  Meteor Lake-P Serial IO I2C Controller #0\n\t7e79  Meteor Lake-P Serial IO I2C Controller #1\n\t7e7a  Meteor Lake-P Serial IO I2C Controller #2\n\t7e7b  Meteor Lake-P Serial IO I2C Controller #3\n\t7e7d  Meteor Lake-P USB 3.2 Gen 2x1 xHCI Host Controller\n\t7e7e  Meteor Lake-P USB Device Controller\n\t7e7f  Meteor Lake-H/U Shared SRAM\n\t7ec0  Meteor Lake-P Thunderbolt 4 USB Controller\n\t7ec2  Meteor Lake-P Thunderbolt 4 NHI #0\n\t7ec3  Meteor Lake-P Thunderbolt 4 NHI #1\n\t7ec4  Meteor Lake-P Thunderbolt 4 PCI Express Root Port #0\n\t7ec5  Meteor Lake-P Thunderbolt 4 PCI Express Root Port #1\n\t7ec6  Meteor Lake-P Thunderbolt 4 PCI Express Root Port #2\n\t7ec7  Meteor Lake-P Thunderbolt 4 PCI Express Root Port #3\n\t7eca  Meteor Lake-H/U PCIe Root Port #10\n\t7ecc  Meteor Lake-H PCIe Root Port #12\n\t7f70  Arrow Lake-S PCH CNVi WiFi\n\t\t8086 0094  WiFi 6E AX211 160MHz\n\t8002  Trusted Execution Technology Registers\n\t8003  Trusted Execution Technology Registers\n\t8100  US15W/US15X SCH [Poulsbo] Host Bridge\n\t8101  US15L/UL11L SCH [Poulsbo] Host Bridge\n\t8108  US15W/US15X SCH [Poulsbo] Graphics Controller\n\t8109  US15L/UL11L SCH [Poulsbo] Graphics Controller\n\t8110  US15W/US15X/US15L/UL11L SCH [Poulsbo] PCI Express Port 1\n\t8112  US15W/US15X/US15L/UL11L SCH [Poulsbo] PCI Express Port 2\n\t8114  US15W/US15X/US15L/UL11L SCH [Poulsbo] USB UHCI Controller #1\n\t8115  US15W/US15X/US15L/UL11L SCH [Poulsbo] USB UHCI Controller #2\n\t8116  US15W/US15X/US15L/UL11L SCH [Poulsbo] USB UHCI Controller #3\n\t8117  US15W/US15X/US15L/UL11L SCH [Poulsbo] USB EHCI Controller\n\t8118  US15W/US15X/US15L/UL11L SCH [Poulsbo] USB Client Controller\n\t8119  US15W/US15X/US15L/UL11L SCH [Poulsbo] LPC Bridge\n\t811a  US15W/US15X/US15L/UL11L SCH [Poulsbo] IDE Controller\n\t811b  US15W/US15X/US15L/UL11L SCH [Poulsbo] HD Audio Controller\n\t811c  US15W/US15X/US15L/UL11L SCH [Poulsbo] SDIO/MMC Controller #1\n\t811d  US15W/US15X/US15L/UL11L SCH [Poulsbo] SDIO/MMC Controller #2\n\t811e  US15W/US15X/US15L/UL11L SCH [Poulsbo] SDIO/MMC Controller #3\n\t8180  Atom Processor E6xx PCI Express Port 3\n\t8181  Atom Processor E6xx PCI Express Port 4\n\t8182  Atom Processor E6xx Integrated Graphics Controller\n\t8183  Atom Processor E6xx Configuration Unit\n\t8184  Atom Processor E6xx PCI Express Port 1\n\t8185  Atom Processor E6xx PCI Express Port 2\n\t8186  Atom Processor E6xx LPC Bridge\n\t84c4  450KX/GX [Orion] - 82454KX/GX PCI bridge\n\t84c5  450KX/GX [Orion] - 82453KX/GX Memory controller\n\t84ca  450NX - 82451NX Memory & I/O Controller\n\t84cb  450NX - 82454NX/84460GX PCI Expander Bridge\n\t84e0  460GX - 84460GX System Address Controller (SAC)\n\t84e1  460GX - 84460GX System Data Controller (SDC)\n\t84e2  460GX - 84460GX AGP Bridge (GXB function 2)\n\t84e3  460GX - 84460GX Memory Address Controller (MAC)\n\t84e4  460GX - 84460GX Memory Data Controller (MDC)\n\t84e6  460GX - 82466GX Wide and fast PCI eXpander Bridge (WXB)\n\t84ea  460GX - 84460GX AGP Bridge (GXB function 1)\n\t8500  IXP4XX Network Processor (IXP420/421/422/425/IXC1100)\n\t\t1993 0ded  mGuard-PCI AV#2\n\t\t1993 0dee  mGuard-PCI AV#1\n\t\t1993 0def  mGuard-PCI AV#0\n\t8603  Ice Lake-LP Dynamic Tuning Processor Participant\n\t87c0  UHD Graphics 617\n\t87ca  UHD Graphics 617\n\t8800  Platform Controller Hub EG20T PCI Express Port\n\t8801  Platform Controller Hub EG20T Packet Hub\n\t8802  Platform Controller Hub EG20T Gigabit Ethernet Controller\n\t8803  Platform Controller Hub EG20T General Purpose IO Controller\n\t8804  Platform Controller Hub EG20T USB OHCI Controller #4\n\t8805  Platform Controller Hub EG20T USB OHCI Controller #5\n\t8806  Platform Controller Hub EG20T USB OHCI Controller #6\n\t8807  Platform Controller Hub EG20T USB2 EHCI Controller #2\n\t8808  Platform Controller Hub EG20T USB Client Controller\n\t8809  Platform Controller Hub EG20T SDIO Controller #1\n\t880a  Platform Controller Hub EG20T SDIO Controller #2\n\t880b  Platform Controller Hub EG20T SATA AHCI Controller\n\t880c  Platform Controller Hub EG20T USB OHCI Controller #1\n\t880d  Platform Controller Hub EG20T USB OHCI Controller #2\n\t880e  Platform Controller Hub EG20T USB OHCI Controller #3\n\t880f  Platform Controller Hub EG20T USB2 EHCI Controller #1\n\t8810  Platform Controller Hub EG20T DMA Controller #1\n\t8811  Platform Controller Hub EG20T UART Controller 0\n\t8812  Platform Controller Hub EG20T UART Controller 1\n\t8813  Platform Controller Hub EG20T UART Controller 2\n\t8814  Platform Controller Hub EG20T UART Controller 3\n\t8815  Platform Controller Hub EG20T DMA Controller #2\n\t8816  Platform Controller Hub EG20T Serial Peripheral Interface Bus\n\t8817  Platform Controller Hub EG20T I2C Controller\n\t8818  Platform Controller Hub EG20T Controller Area Network (CAN) Controller\n\t8819  Platform Controller Hub EG20T IEEE 1588 Hardware Assist\n\t8a03  Processor Power and Thermal Controller\n\t8a0d  Ice Lake Thunderbolt 3 NHI #1\n\t8a11  GNA Scoring Accelerator Module\n\t8a12  Ice Lake-LP Processor Host Bridge/DRAM Registers\n\t8a13  Ice Lake Thunderbolt 3 USB Controller\n\t8a14  Ice Lake Processor Host Bridge/DRAM Registers\n\t8a17  Ice Lake Thunderbolt 3 NHI #0\n\t8a19  Image Signal Processor\n\t8a1d  Ice Lake Thunderbolt 3 PCI Express Root Port #0\n\t8a1f  Ice Lake Thunderbolt 3 PCI Express Root Port #1\n\t8a21  Ice Lake Thunderbolt 3 PCI Express Root Port #2\n\t8a23  Ice Lake Thunderbolt 3 PCI Express Root Port #3\n\t8a51  Iris Plus Graphics G7 (Ice Lake)\n\t8a52  Iris Plus Graphics G7\n\t8a53  Iris Plus Graphics G7\n\t8a56  Iris Plus Graphics G1 (Ice Lake)\n\t8a58  Ice Lake-Y GT1 [UHD Graphics G1]\n\t8a5a  Iris Plus Graphics G4 (Ice Lake)\n\t8a5c  Iris Plus Graphics G4 (Ice Lake)\n\t8c00  8 Series/C220 Series Chipset Family 4-port SATA Controller 1 [IDE mode]\n\t8c01  8 Series Chipset Family 4-port SATA Controller 1 [IDE mode] - Mobile\n\t8c02  8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode]\n\t\t1028 05d7  Alienware X51 R2\n\t\t103c 1998  EliteDesk 800 G1\n\t\t17aa 3098  ThinkCentre E73\n\t\t17aa 309f  ThinkCentre M83\n\t8c03  8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode]\n\t\t103c 1909  ZBook 15\n\t\t17aa 220e  ThinkPad T440p\n\t8c04  8 Series/C220 Series Chipset Family SATA Controller 1 [RAID mode]\n\t8c05  8 Series/C220 Series Chipset Family SATA Controller 1 [RAID mode]\n\t8c06  8 Series/C220 Series Chipset Family SATA Controller 1 [RAID mode]\n\t8c07  8 Series/C220 Series Chipset Family SATA Controller 1 [RAID mode]\n\t8c08  8 Series/C220 Series Chipset Family 2-port SATA Controller 2 [IDE mode]\n\t8c09  8 Series/C220 Series Chipset Family 2-port SATA Controller 2 [IDE mode]\n\t8c0e  8 Series/C220 Series Chipset Family SATA Controller 1 [RAID mode]\n\t8c0f  8 Series/C220 Series Chipset Family SATA Controller 1 [RAID mode]\n\t8c10  8 Series/C220 Series Chipset Family PCI Express Root Port #1\n\t\t103c 1998  EliteDesk 800 G1\n\t\t1043 8534  ASUS H81I-PLUS\n\t\t17aa 220e  ThinkPad T440p\n\t\t17aa 3098  ThinkCentre E73\n\t8c11  8 Series/C220 Series Chipset Family PCI Express Root Port #1\n\t8c12  8 Series/C220 Series Chipset Family PCI Express Root Port #2\n\t\t103c 1998  EliteDesk 800 G1\n\t\t17aa 220e  ThinkPad T440p\n\t8c13  8 Series/C220 Series Chipset Family PCI Express Root Port #2\n\t8c14  8 Series/C220 Series Chipset Family PCI Express Root Port #3\n\t8c15  8 Series/C220 Series Chipset Family PCI Express Root Port #3\n\t8c16  8 Series/C220 Series Chipset Family PCI Express Root Port #4\n\t8c17  8 Series/C220 Series Chipset Family PCI Express Root Port #4\n\t8c18  8 Series/C220 Series Chipset Family PCI Express Root Port #5\n\t8c19  8 Series/C220 Series Chipset Family PCI Express Root Port #5\n\t8c1a  8 Series/C220 Series Chipset Family PCI Express Root Port #6\n\t\t17aa 3098  ThinkCentre E73\n\t8c1b  8 Series/C220 Series Chipset Family PCI Express Root Port #6\n\t8c1c  8 Series/C220 Series Chipset Family PCI Express Root Port #7\n\t8c1d  8 Series/C220 Series Chipset Family PCI Express Root Port #7\n\t8c1e  8 Series/C220 Series Chipset Family PCI Express Root Port #8\n\t8c1f  8 Series/C220 Series Chipset Family PCI Express Root Port #8\n\t8c20  8 Series/C220 Series Chipset High Definition Audio Controller\n\t\t1028 05d7  Alienware X51 R2\n\t\t103c 1909  ZBook 15\n\t\t103c 1998  EliteDesk 800 G1\n\t\t17aa 220e  ThinkPad T440p\n\t\t17aa 309f  ThinkCentre M83\n\t8c21  8 Series/C220 Series Chipset High Definition Audio Controller\n\t8c22  8 Series/C220 Series Chipset Family SMBus Controller\n\t\t1028 05d7  Alienware X51 R2\n\t\t103c 1909  ZBook 15\n\t\t103c 1998  EliteDesk 800 G1\n\t\t17aa 220e  ThinkPad T440p\n\t\t17aa 3098  ThinkCentre E73\n\t\t17aa 309f  ThinkCentre M83\n\t8c23  8 Series Chipset Family CHAP Counters\n\t8c24  8 Series Chipset Family Thermal Management Controller\n\t8c26  8 Series/C220 Series Chipset Family USB EHCI #1\n\t\t1028 05d7  Alienware X51 R2\n\t\t103c 1909  ZBook 15\n\t\t103c 1998  EliteDesk 800 G1\n\t\t17aa 220e  ThinkPad T440p\n\t\t17aa 2210  ThinkPad T540p\n\t\t17aa 3098  ThinkCentre E73\n\t\t17aa 309f  ThinkCentre M83\n\t\t2210 17aa  ThinkPad T540p\n\t8c2d  8 Series/C220 Series Chipset Family USB EHCI #2\n\t\t1028 05d7  Alienware X51 R2\n\t\t103c 1909  ZBook 15\n\t\t103c 1998  EliteDesk 800 G1\n\t\t17aa 220e  ThinkPad T440p\n\t\t17aa 3098  ThinkCentre E73\n\t\t17aa 309f  ThinkCentre M83\n\t8c31  8 Series/C220 Series Chipset Family USB xHCI\n\t\t1028 05d7  Alienware X51 R2\n\t\t103c 1909  ZBook 15\n\t\t103c 1998  EliteDesk 800 G1\n\t\t17aa 220e  ThinkPad T440p\n\t\t17aa 3098  ThinkCentre E73\n\t\t17aa 309f  ThinkCentre M83\n\t8c33  8 Series/C220 Series Chipset Family LAN Controller\n\t8c34  8 Series/C220 Series Chipset Family NAND Controller\n\t8c3a  8 Series/C220 Series Chipset Family MEI Controller #1\n\t\t1028 05d7  Alienware X51 R2\n\t\t103c 1909  ZBook 15\n\t\t103c 1998  EliteDesk 800 G1\n\t\t17aa 220e  ThinkPad T440p\n\t\t17aa 3098  ThinkCentre E73\n\t\t17aa 309f  ThinkCentre M83\n\t8c3b  8 Series/C220 Series Chipset Family MEI Controller #2\n\t8c3c  8 Series/C220 Series Chipset Family IDE-r Controller\n\t8c3d  8 Series/C220 Series Chipset Family KT Controller\n\t\t103c 1998  EliteDesk 800 G1\n\t8c40  8 Series/C220 Series Chipset Family LPC Controller\n\t8c41  8 Series Chipset Family Mobile Super SKU LPC Controller\n\t8c42  8 Series/C220 Series Chipset Family Desktop Super SKU LPC Controller\n\t8c43  8 Series/C220 Series Chipset Family LPC Controller\n\t8c44  Z87 Express LPC Controller\n\t8c45  8 Series/C220 Series Chipset Family LPC Controller\n\t8c46  Z85 Express LPC Controller\n\t8c47  8 Series/C220 Series Chipset Family LPC Controller\n\t8c48  8 Series/C220 Series Chipset Family LPC Controller\n\t8c49  HM86 Express LPC Controller\n\t8c4a  H87 Express LPC Controller\n\t\t1028 05d7  Alienware X51 R2\n\t8c4b  HM87 Express LPC Controller\n\t8c4c  Q85 Express LPC Controller\n\t\t17aa 309f  ThinkCentre M83\n\t8c4d  8 Series/C220 Series Chipset Family LPC Controller\n\t8c4e  Q87 Express LPC Controller\n\t\t103c 1998  EliteDesk 800 G1\n\t8c4f  QM87 Express LPC Controller\n\t\t103c 1909  ZBook 15\n\t\t17aa 220e  ThinkPad T440p\n\t8c50  B85 Express LPC Controller\n\t8c51  8 Series/C220 Series Chipset Family LPC Controller\n\t8c52  C222 Series Chipset Family Server Essential SKU LPC Controller\n\t8c53  8 Series/C220 Series Chipset Family LPC Controller\n\t8c54  C224 Series Chipset Family Server Standard SKU LPC Controller\n\t8c55  8 Series/C220 Series Chipset Family LPC Controller\n\t8c56  C226 Series Chipset Family Server Advanced SKU LPC Controller\n\t8c57  8 Series/C220 Series Chipset Family LPC Controller\n\t8c58  8 Series/C220 Series Chipset Family WS SKU LPC Controller\n\t8c59  8 Series/C220 Series Chipset Family LPC Controller\n\t8c5a  8 Series/C220 Series Chipset Family LPC Controller\n\t8c5b  8 Series/C220 Series Chipset Family LPC Controller\n\t8c5c  H81 Express LPC Controller\n\t\t17aa 3098  ThinkCentre E73\n\t8c5d  8 Series/C220 Series Chipset Family LPC Controller\n\t8c5e  8 Series/C220 Series Chipset Family LPC Controller\n\t8c5f  8 Series/C220 Series Chipset Family LPC Controller\n\t8c80  9 Series Chipset Family SATA Controller [IDE Mode]\n\t8c81  9 Series Chipset Family SATA Controller [IDE Mode]\n\t8c82  9 Series Chipset Family SATA Controller [AHCI Mode]\n\t8c83  9 Series Chipset Family SATA Controller [AHCI Mode]\n\t8c84  9 Series Chipset Family SATA Controller [RAID Mode]\n\t8c85  9 Series Chipset Family SATA Controller [RAID Mode]\n\t8c86  9 Series Chipset Family SATA Controller [RAID Mode]\n\t8c87  9 Series Chipset Family SATA Controller [RAID Mode]\n\t8c88  9 Series Chipset Family SATA Controller [IDE Mode]\n\t8c89  9 Series Chipset Family SATA Controller [IDE Mode]\n\t8c8e  9 Series Chipset Family SATA Controller [RAID Mode]\n\t8c8f  9 Series Chipset Family SATA Controller [RAID Mode]\n\t8c90  9 Series Chipset Family PCI Express Root Port 1\n\t8c92  9 Series Chipset Family PCI Express Root Port 2\n\t8c94  9 Series Chipset Family PCI Express Root Port 3\n\t8c96  9 Series Chipset Family PCI Express Root Port 4\n\t8c98  9 Series Chipset Family PCI Express Root Port 5\n\t8c9a  9 Series Chipset Family PCI Express Root Port 6\n\t8c9c  9 Series Chipset Family PCI Express Root Port 7\n\t8c9e  9 Series Chipset Family PCI Express Root Port 8\n\t8ca0  9 Series Chipset Family HD Audio Controller\n\t8ca2  9 Series Chipset Family SMBus Controller\n\t8ca4  9 Series Chipset Family Thermal Controller\n\t8ca6  9 Series Chipset Family USB EHCI Controller #1\n\t8cad  9 Series Chipset Family USB EHCI Controller #2\n\t8cb1  9 Series Chipset Family USB xHCI Controller\n\t8cb3  9 Series Chipset Family LAN Controller\n\t8cba  9 Series Chipset Family ME Interface #1\n\t8cbb  9 Series Chipset Family ME Interface #2\n\t8cbc  9 Series Chipset Family IDE-R Controller\n\t8cbd  9 Series Chipset Family KT Controller\n\t8cc1  9 Series Chipset Family LPC Controller\n\t8cc2  9 Series Chipset Family LPC Controller\n\t8cc3  HM97 Chipset LPC Controller\n\t8cc4  Z97 Chipset LPC Controller\n\t8cc5  QM97 Chipset LPC Controller\n\t8cc6  H97 Chipset LPC Controller\n\t8d00  C610/X99 series chipset 4-port SATA Controller [IDE mode]\n\t8d02  C610/X99 series chipset 6-Port SATA Controller [AHCI mode]\n\t\t15d9 0821  X10DRW-i\n\t8d04  C610/X99 series chipset SATA Controller [RAID mode]\n\t8d06  C610/X99 series chipset SATA Controller [RAID mode]\n\t\t17aa 1031  ThinkServer RAID 110i\n\t8d08  C610/X99 series chipset 2-port SATA Controller [IDE mode]\n\t8d0e  C610/X99 series chipset SATA Controller [RAID mode]\n\t8d10  C610/X99 series chipset PCI Express Root Port #1\n\t\t1028 0617  Precision T5810\n\t8d11  C610/X99 series chipset PCI Express Root Port #1\n\t8d12  C610/X99 series chipset PCI Express Root Port #2\n\t\t1028 0617  Precision T5810\n\t8d13  C610/X99 series chipset PCI Express Root Port #2\n\t8d14  C610/X99 series chipset PCI Express Root Port #3\n\t8d15  C610/X99 series chipset PCI Express Root Port #3\n\t8d16  C610/X99 series chipset PCI Express Root Port #4\n\t8d17  C610/X99 series chipset PCI Express Root Port #4\n\t8d18  C610/X99 series chipset PCI Express Root Port #5\n\t8d19  C610/X99 series chipset PCI Express Root Port #5\n\t8d1a  C610/X99 series chipset PCI Express Root Port #6\n\t8d1b  C610/X99 series chipset PCI Express Root Port #6\n\t8d1c  C610/X99 series chipset PCI Express Root Port #7\n\t8d1d  C610/X99 series chipset PCI Express Root Port #7\n\t8d1e  C610/X99 series chipset PCI Express Root Port #8\n\t8d1f  C610/X99 series chipset PCI Express Root Port #8\n\t8d20  C610/X99 series chipset HD Audio Controller\n\t\t1028 0617  Precision T5810\n\t8d21  C610/X99 series chipset HD Audio Controller\n\t8d22  C610/X99 series chipset SMBus Controller\n\t\t1028 0617  Precision T5810\n\t\t15d9 0821  X10DRW-i\n\t\t15d9 0832  X10SRL-F\n\t8d24  C610/X99 series chipset Thermal Subsystem\n\t\t15d9 0821  X10DRW-i\n\t8d26  C610/X99 series chipset USB Enhanced Host Controller #1\n\t\t1028 0617  Precision T5810\n\t\t15d9 0821  X10DRW-i\n\t\t15d9 0832  X10SRL-F\n\t8d2d  C610/X99 series chipset USB Enhanced Host Controller #2\n\t\t1028 0617  Precision T5810\n\t\t15d9 0821  X10DRW-i\n\t\t15d9 0832  X10SRL-F\n\t8d31  C610/X99 series chipset USB xHCI Host Controller\n\t\t1028 0617  Precision T5810\n\t\t15d9 0821  X10DRW-i\n\t\t15d9 0832  X10SRL-F\n\t8d33  C610/X99 series chipset LAN Controller\n\t8d34  C610/X99 series chipset NAND Controller\n\t8d3a  C610/X99 series chipset MEI Controller #1\n\t\t1028 0617  Precision T5810\n\t\t15d9 0821  X10DRW-i\n\t\t15d9 0832  X10SRL-F\n\t8d3b  C610/X99 series chipset MEI Controller #2\n\t\t15d9 0821  X10DRW-i\n\t\t15d9 0832  X10SRL-F\n\t8d3c  C610/X99 series chipset IDE-r Controller\n\t8d3d  C610/X99 series chipset KT Controller\n\t8d40  C610/X99 series chipset LPC Controller\n\t8d41  C610/X99 series chipset LPC Controller\n\t8d42  C610/X99 series chipset LPC Controller\n\t8d43  C610/X99 series chipset LPC Controller\n\t8d44  C610/X99 series chipset LPC Controller\n\t\t1028 0617  Precision T5810\n\t\t15d9 0821  X10DRW-i\n\t\t15d9 0832  X10SRL-F\n\t8d45  C610/X99 series chipset LPC Controller\n\t8d46  C610/X99 series chipset LPC Controller\n\t8d47  C610/X99 series chipset LPC Controller\n\t8d48  C610/X99 series chipset LPC Controller\n\t8d49  C610/X99 series chipset LPC Controller\n\t8d4a  C610/X99 series chipset LPC Controller\n\t8d4b  C610/X99 series chipset LPC Controller\n\t8d4c  C610/X99 series chipset LPC Controller\n\t8d4d  C610/X99 series chipset LPC Controller\n\t8d4e  C610/X99 series chipset LPC Controller\n\t8d4f  C610/X99 series chipset LPC Controller\n\t8d60  C610/X99 series chipset sSATA Controller [IDE mode]\n\t8d62  C610/X99 series chipset sSATA Controller [AHCI mode]\n\t\t1028 0617  Precision T5810\n\t\t15d9 0821  X10DRW-i\n\t8d64  C610/X99 series chipset sSATA Controller [RAID mode]\n\t8d66  C610/X99 series chipset sSATA Controller [RAID mode]\n\t8d68  C610/X99 series chipset sSATA Controller [IDE mode]\n\t8d6e  C610/X99 series chipset sSATA Controller [RAID mode]\n\t8d7c  C610/X99 series chipset SPSR\n\t\t1028 0617  Precision T5810\n\t\t15d9 0821  X10DRW-i\n\t\t15d9 0832  X10SRL-F\n\t8d7d  C610/X99 series chipset MS SMBus 0\n\t8d7e  C610/X99 series chipset MS SMBus 1\n\t8d7f  C610/X99 series chipset MS SMBus 2\n\t9000  IXP2000 Family Network Processor\n\t9001  IXP2400 Network Processor\n\t9002  IXP2300 Network Processor\n\t9004  IXP2800 Network Processor\n\t9621  Integrated RAID\n\t9622  Integrated RAID\n\t9641  Integrated RAID\n\t96a1  Integrated RAID\n\t9840  Lakefield GT2 [UHD Graphics]\n\t9841  Lakefield GT1.5 [UHD Graphics]\n\t9a01  11th Gen Core Processor PCIe Controller #1\n\t9a02  Tiger Lake-UP4 2 cores Host Bridge/DRAM Registers\n\t9a03  TigerLake-LP Dynamic Tuning Processor Participant\n\t9a04  Tiger Lake-UP3 2 cores Host Bridge/DRAM Registers\n\t9a05  11th Gen Core Processor PCIe Controller #2\n\t9a07  11th Gen Core Processor PCIe Controller #3\n\t9a09  11th Gen Core Processor PCIe Controller\n\t9a0b  Volume Management Device NVMe RAID Controller\n\t9a0d  Tigerlake Telemetry Aggregator Driver\n\t9a0f  11th Gen Core Processor PCIe Controller #0\n\t9a11  GNA Scoring Accelerator module\n\t9a12  Tiger Lake-UP4 4 cores Host Bridge/DRAM Registers\n\t9a13  Tiger Lake-LP Thunderbolt 4 USB Controller\n\t9a14  Tiger Lake-UP3/H35 4 cores Host Bridge/DRAM Registers\n\t9a15  Tiger Lake xDCI Controller\n\t9a17  Tiger Lake-H Thunderbolt 4 USB Controller\n\t9a19  Tiger Lake IPU6\n\t9a1b  Tiger Lake-LP Thunderbolt 4 NHI #0\n\t9a1d  Tiger Lake-LP Thunderbolt 4 NHI #1\n\t9a1f  Tiger Lake-H Thunderbolt 4 NHI #0\n\t9a21  Tiger Lake-H Thunderbolt 4 NHI #1\n\t9a23  Tiger Lake-LP Thunderbolt 4 PCI Express Root Port #0\n\t9a25  Tiger Lake-LP Thunderbolt 4 PCI Express Root Port #1\n\t9a26  Tiger Lake-H 6 cores Host Bridge/DRAM Registers\n\t9a27  Tiger Lake-LP Thunderbolt 4 PCI Express Root Port #2\n\t9a29  Tiger Lake-LP Thunderbolt 4 PCI Express Root Port #3\n\t9a2b  Tiger Lake-H Thunderbolt 4 PCI Express Root Port #0\n\t9a2d  Tiger Lake-H Thunderbolt 4 PCI Express Root Port #1\n\t9a2f  Tiger Lake-H Thunderbolt 4 PCI Express Root Port #2\n\t9a31  Tiger Lake-H Thunderbolt 4 PCI Express Root Port #3\n\t9a33  Tiger Lake Trace Hub\n\t9a36  Tiger Lake-H 8 cores Host Bridge/DRAM Registers\n\t9a39  Tiger Lake H IPU6-Slim\n\t9a40  Tiger Lake-UP4 GT2 [Iris Xe Graphics]\n\t9a49  TigerLake-LP GT2 [Iris Xe Graphics]\n\t9a60  TigerLake-H GT1 [UHD Graphics]\n\t9a68  TigerLake-H GT1 [UHD Graphics]\n\t9a70  Tiger Lake-H GT1 [UHD Graphics]\n\t9a78  Tiger Lake-LP GT2 [UHD Graphics G4]\n\t9b21  Comet Lake-U GT2 [UHD Graphics 620]\n\t9b33  Comet Lake-S 6c Host Bridge/DRAM Controller\n\t9b41  CometLake-U GT2 [UHD Graphics]\n\t\t1028 09bd  Latitude 7310\n\t\t1028 09be  Latitude 7410\n\t9b43  10th Gen Core Processor Host Bridge/DRAM Registers\n\t9b44  10th Gen Core Processor Host Bridge/DRAM Registers\n\t9b51  10th Gen Core Processor Host Bridge/DRAM Registers\n\t9b53  Comet Lake-S 6c Host Bridge/DRAM Controller\n\t9b54  10th Gen Core Processor Host Bridge/DRAM Registers\n\t9b61  Comet Lake-U v1 4c Host Bridge/DRAM Controller\n\t\t1028 09be  Latitude 7410\n\t9b63  10th Gen Core Processor Host Bridge/DRAM Registers\n\t9b64  10th Gen Core Processor Host Bridge/DRAM Registers\n\t9ba4  Comet Lake-H GT1 [UHD Graphics 610]\n\t9ba8  CometLake-S GT1 [UHD Graphics 610]\n\t9baa  Comet Lake UHD Graphics\n\t9bac  Comet Lake UHD Graphics\n\t9bc4  CometLake-H GT2 [UHD Graphics]\n\t9bc5  CometLake-S GT2 [UHD Graphics 630]\n\t9bc6  Comet Lake-S GT2 [UHD Graphics P630]\n\t9bc8  CometLake-S GT2 [UHD Graphics 630]\n\t9bca  Comet Lake UHD Graphics\n\t9bcc  Comet Lake UHD Graphics\n\t9be6  Comet Lake-S GT2 [UHD Graphics P630]\n\t9bf6  Coffee Lake-S GT2 [UHD Graphics P630]\n\t9c00  8 Series SATA Controller 1 [IDE mode]\n\t9c01  8 Series SATA Controller 1 [IDE mode]\n\t9c02  8 Series SATA Controller 1 [AHCI mode]\n\t9c03  8 Series SATA Controller 1 [AHCI mode]\n\t\t17aa 2214  ThinkPad X240\n\t9c04  8 Series SATA Controller 1 [RAID mode]\n\t9c05  8 Series SATA Controller 1 [RAID mode]\n\t9c06  8 Series SATA Controller 1 [RAID mode]\n\t9c07  8 Series SATA Controller 1 [RAID mode]\n\t9c08  8 Series SATA Controller 2 [IDE mode]\n\t9c09  8 Series SATA Controller 2 [IDE mode]\n\t9c0a  8 Series SATA Controller [Reserved]\n\t9c0b  8 Series SATA Controller [Reserved]\n\t9c0c  8 Series SATA Controller [Reserved]\n\t9c0d  8 Series SATA Controller [Reserved]\n\t9c0e  8 Series SATA Controller 1 [RAID mode]\n\t9c0f  8 Series SATA Controller 1 [RAID mode]\n\t9c10  8 Series PCI Express Root Port 1\n\t9c11  8 Series PCI Express Root Port 1\n\t9c12  8 Series PCI Express Root Port 2\n\t9c13  8 Series PCI Express Root Port 2\n\t9c14  8 Series PCI Express Root Port 3\n\t9c15  8 Series PCI Express Root Port 3\n\t9c16  8 Series PCI Express Root Port 4\n\t9c17  8 Series PCI Express Root Port 4\n\t9c18  8 Series PCI Express Root Port 5\n\t9c19  8 Series PCI Express Root Port 5\n\t9c1a  8 Series PCI Express Root Port 6\n\t9c1b  8 Series PCI Express Root Port 6\n\t9c1c  8 Series PCI Express Root Port 7\n\t9c1d  8 Series PCI Express Root Port 7\n\t9c1e  8 Series PCI Express Root Port 8\n\t9c1f  8 Series PCI Express Root Port 8\n\t9c20  8 Series HD Audio Controller\n\t\t17aa 2214  ThinkPad X240\n\t9c21  8 Series HD Audio Controller\n\t9c22  8 Series SMBus Controller\n\t\t17aa 2214  ThinkPad X240\n\t9c23  8 Series CHAP Counters\n\t9c24  8 Series Thermal\n\t9c26  8 Series USB EHCI #1\n\t\t17aa 220c  T440s\n\t\t17aa 2214  ThinkPad X240\n\t9c2d  8 Series USB EHCI #2\n\t9c31  8 Series USB xHCI HC\n\t\t17aa 2214  ThinkPad X240\n\t\t8086 7270  Apple MacBookAir6,2 / MacBookPro11,1\n\t9c35  8 Series SDIO Controller\n\t9c36  8 Series Audio DSP Controller\n\t9c3a  8 Series HECI #0\n\t\t17aa 2214  ThinkPad X240\n\t9c3b  8 Series HECI #1\n\t9c3c  8 Series HECI IDER\n\t9c3d  8 Series HECI KT\n\t9c40  8 Series LPC Controller\n\t9c41  8 Series LPC Controller\n\t9c42  8 Series LPC Controller\n\t9c43  8 Series LPC Controller\n\t\t17aa 2214  ThinkPad X240\n\t9c44  8 Series LPC Controller\n\t9c45  8 Series LPC Controller\n\t9c46  8 Series LPC Controller\n\t9c47  8 Series LPC Controller\n\t9c60  8 Series Low Power Sub-System DMA\n\t9c61  8 Series I2C Controller #0\n\t9c62  8 Series I2C Controller #1\n\t9c63  8 Series UART Controller #0\n\t9c64  8 Series UART Controller #1\n\t9c65  8 Series SPI Controller #0\n\t9c66  8 Series SPI Controller #1\n\t9c83  Wildcat Point-LP SATA Controller [AHCI Mode]\n\t9c85  Wildcat Point-LP SATA Controller [RAID Mode]\n\t9c87  Wildcat Point-LP SATA Controller [RAID Mode]\n\t9c8f  Wildcat Point-LP SATA Controller [RAID Mode]\n\t9c90  Wildcat Point-LP PCI Express Root Port #1\n\t9c92  Wildcat Point-LP PCI Express Root Port #2\n\t9c94  Wildcat Point-LP PCI Express Root Port #3\n\t9c96  Wildcat Point-LP PCI Express Root Port #4\n\t9c98  Wildcat Point-LP PCI Express Root Port #5\n\t9c9a  Wildcat Point-LP PCI Express Root Port #6\n\t9ca0  Wildcat Point-LP High Definition Audio Controller\n\t9ca2  Wildcat Point-LP SMBus Controller\n\t9ca4  Wildcat Point-LP Thermal Management Controller\n\t9ca6  Wildcat Point-LP USB EHCI Controller\n\t9cb1  Wildcat Point-LP USB xHCI Controller\n\t9cb5  Wildcat Point-LP Secure Digital IO Controller\n\t9cb6  Wildcat Point-LP Smart Sound Technology Controller\n\t9cba  Wildcat Point-LP MEI Controller #1\n\t9cbb  Wildcat Point-LP MEI Controller #2\n\t9cbc  Wildcat Point-LP IDE-r Controller\n\t9cbd  Wildcat Point-LP KT Controller\n\t9cc1  Wildcat Point-LP LPC Controller\n\t9cc2  Wildcat Point-LP LPC Controller\n\t9cc3  Wildcat Point-LP LPC Controller\n\t9cc5  Wildcat Point-LP LPC Controller\n\t9cc6  Wildcat Point-LP LPC Controller\n\t9cc7  Wildcat Point-LP LPC Controller\n\t9cc9  Wildcat Point-LP LPC Controller\n\t9ce0  Wildcat Point-LP Serial IO DMA Controller\n\t9ce1  Wildcat Point-LP Serial IO I2C Controller #0\n\t9ce2  Wildcat Point-LP Serial IO I2C Controller #1\n\t9ce3  Wildcat Point-LP Serial IO UART Controller #0\n\t9ce4  Wildcat Point-LP Serial IO UART Controller #1\n\t9ce5  Wildcat Point-LP Serial IO GSPI Controller #0\n\t9ce6  Wildcat Point-LP Serial IO GSPI Controller #1\n\t9d03  Sunrise Point-LP SATA Controller [AHCI mode]\n\t\t1025 115f  Acer Aspire E5-575G\n\t\t1028 06dc  Latitude E7470\n\t\t1028 06e6  Latitude 11 5175 2-in-1\n\t\t1028 06f3  Latitude 3570\n\t\t103c 8079  EliteBook 840 G3\n\t\t17aa 225d  ThinkPad T480\n\t\t17aa 382a  B51-80 Laptop\n\t9d10  Sunrise Point-LP PCI Express Root Port #1\n\t9d11  Sunrise Point-LP PCI Express Root Port #2\n\t9d12  Sunrise Point-LP PCI Express Root Port #3\n\t9d13  Sunrise Point-LP PCI Express Root Port #4\n\t9d14  Sunrise Point-LP PCI Express Root Port #5\n\t\t17aa 382a  B51-80 Laptop\n\t9d15  Sunrise Point-LP PCI Express Root Port #6\n\t\t17aa 382a  B51-80 Laptop\n\t9d16  Sunrise Point-LP PCI Express Root Port #7\n\t9d17  Sunrise Point-LP PCI Express Root Port #8\n\t9d18  Sunrise Point-LP PCI Express Root Port #9\n\t\t17aa 2247  ThinkPad T570\n\t\t17aa 382a  B51-80 Laptop\n\t9d19  Sunrise Point-LP PCI Express Root Port #10\n\t9d1a  Sunrise Point-LP PCI Express Root Port #11\n\t9d21  Sunrise Point-LP PMC\n\t\t1025 115f  Acer Aspire E5-575G\n\t\t1028 06d6  Latitude 7275 tablet\n\t\t1028 06dc  Latitude E7470\n\t\t1028 06e6  Latitude 11 5175 2-in-1\n\t\t1028 06f3  Latitude 3570\n\t\t103c 8079  EliteBook 840 G3\n\t\t17aa 2247  ThinkPad T570\n\t\t17aa 224f  ThinkPad X1 Carbon 5th Gen\n\t\t17aa 225d  ThinkPad T480\n\t\t17aa 382a  B51-80 Laptop\n\t9d23  Sunrise Point-LP SMBus\n\t\t1025 115f  Acer Aspire E5-575G\n\t\t1028 06d6  Latitude 7275 tablet\n\t\t1028 06dc  Latitude E7470\n\t\t1028 06e6  Latitude 11 5175 2-in-1\n\t\t1028 06f3  Latitude 3570\n\t\t103c 8079  EliteBook 840 G3\n\t\t17aa 2247  ThinkPad T570\n\t\t17aa 224f  ThinkPad X1 Carbon 5th Gen\n\t\t17aa 225d  ThinkPad T480\n\t\t17aa 382a  B51-80 Laptop\n\t9d27  Sunrise Point-LP Serial IO UART Controller #0\n\t9d28  Sunrise Point-LP Serial IO UART Controller #1\n\t9d29  Sunrise Point-LP Serial IO SPI Controller #0\n\t9d2a  Sunrise Point-LP Serial IO SPI Controller #1\n\t9d2d  Sunrise Point-LP Secure Digital IO Controller\n\t9d2f  Sunrise Point-LP USB 3.0 xHCI Controller\n\t\t1025 115f  Acer Aspire E5-575G\n\t\t1028 06d6  Latitude 7275 tablet\n\t\t1028 06dc  Latitude E7470\n\t\t1028 06e6  Latitude 11 5175 2-in-1\n\t\t1028 06f3  Latitude 3570\n\t\t103c 8079  EliteBook 840 G3\n\t\t17aa 2247  ThinkPad T570\n\t\t17aa 225d  ThinkPad T480\n\t\t17aa 382a  B51-80 Laptop\n\t9d31  Sunrise Point-LP Thermal subsystem\n\t\t1025 115f  Acer Aspire E5-575G\n\t\t1028 06d6  Latitude 7275 tablet\n\t\t1028 06dc  Latitude E7470\n\t\t1028 06e6  Latitude 11 5175 2-in-1\n\t\t1028 06f3  Latitude 3570\n\t\t103c 8079  EliteBook 840 G3\n\t\t17aa 2247  ThinkPad T570\n\t\t17aa 224f  ThinkPad X1 Carbon 5th Gen\n\t\t17aa 225d  ThinkPad T480\n\t\t17aa 382a  B51-80 Laptop\n\t9d32  CSI-2 Host Controller\n\t\t1028 06d6  Latitude 7275 tablet\n\t\t1028 06e6  Latitude 11 5175 2-in-1\n\t9d35  Sunrise Point-LP Integrated Sensor Hub\n\t\t1028 06d6  Latitude 7275 tablet\n\t\t1028 06e6  Latitude 11 5175 2-in-1\n\t9d3a  Sunrise Point-LP CSME HECI #1\n\t\t1025 115f  Acer Aspire E5-575G\n\t\t1028 06d6  Latitude 7275 tablet\n\t\t1028 06dc  Latitude E7470\n\t\t1028 06e6  Latitude 11 5175 2-in-1\n\t\t1028 06f3  Latitude 3570\n\t\t103c 8079  EliteBook 840 G3\n\t\t17aa 2247  ThinkPad T570\n\t\t17aa 224f  ThinkPad X1 Carbon 5th Gen\n\t\t17aa 225d  ThinkPad T480\n\t\t17aa 382a  B51-80 Laptop\n\t9d3d  Sunrise Point-LP Active Management Technology - SOL\n\t\t103c 8079  EliteBook 840 G3\n\t\t17aa 2247  ThinkPad T570\n\t9d3e  iTouch Controller\n\t9d43  Sunrise Point-LP LPC Controller\n\t\t17aa 382a  B51-80 Laptop\n\t9d46  LPC/eSPI Controller\n\t\t1028 06d6  Latitude 7275 tablet\n\t\t1028 06e6  Latitude 11 5175 2-in-1\n\t9d48  Sunrise Point-LP LPC Controller\n\t\t1028 06dc  Latitude E7470\n\t\t1028 06f3  Latitude 3570\n\t\t103c 8079  EliteBook 840 G3\n\t\t17aa 2247  ThinkPad T570\n\t9d4e  Sunrise Point LPC/eSPI Controller\n\t\t17aa 225d  ThinkPad T480\n\t9d50  Sunrise Point LPC Controller\n\t9d56  Sunrise Point-LP LPC Controller\n\t9d58  Sunrise Point-LP LPC Controller\n\t\t1025 115f  Acer Aspire E5-575G\n\t\t17aa 2247  ThinkPad T570\n\t\t17aa 224f  ThinkPad X1 Carbon 5th Gen\n\t9d60  Sunrise Point-LP Serial IO I2C Controller #0\n\t\t1025 115f  Acer Aspire E5-575G\n\t\t1028 06d6  Latitude 7275 tablet\n\t\t1028 06e6  Latitude 11 5175 2-in-1\n\t\t1028 06f3  Latitude 3570\n\t\t103c 8079  EliteBook 840 G3\n\t\t17aa 225d  ThinkPad T480\n\t\t8086 9d60  100 Series PCH/Sunrise Point PCH I2C0 [Skylake/Kaby Lake LPSS I2C]\n\t9d61  Sunrise Point-LP Serial IO I2C Controller #1\n\t\t1028 06d6  Latitude 7275 tablet\n\t\t1028 06e6  Latitude 11 5175 2-in-1\n\t9d62  Sunrise Point-LP Serial IO I2C Controller #2\n\t\t1028 06d6  Latitude 7275 tablet\n\t\t1028 06e6  Latitude 11 5175 2-in-1\n\t9d63  Sunrise Point-LP Serial IO I2C Controller #3\n\t9d64  Sunrise Point-LP Serial IO I2C Controller #4\n\t9d65  Sunrise Point-LP Serial IO I2C Controller #5\n\t9d66  Sunrise Point-LP Serial IO UART Controller #2\n\t9d70  Sunrise Point-LP HD Audio\n\t\t1028 06d6  Latitude 7275 tablet\n\t\t1028 06dc  Latitude E7470\n\t\t1028 06e6  Latitude 11 5175 2-in-1\n\t\t1028 06f3  Latitude 3570\n\t\t103c 8079  EliteBook 840 G3\n\t\t17aa 2247  ThinkPad T570\n\t\t17aa 382a  B51-80 Laptop\n\t9d71  Sunrise Point-LP HD Audio\n\t\t1025 1094  Acer Aspire E5-575G\n\t\t17aa 224f  ThinkPad X1 Carbon 5th Gen\n\t\t17aa 225d  ThinkPad T480\n\t9d84  Cannon Point-LP LPC Controller\n\t\t1028 089e  Inspiron 5482\n\t9da3  Cannon Point-LP SMBus Controller\n\t9da4  Cannon Point-LP SPI Controller\n\t9da8  Cannon Point-LP Serial IO UART Controller #2\n\t9daa  Cannon Point-LP Serial IO SPI Controller\n\t9dab  Cannon Point-LP Serial IO SPI Controller\n\t9db0  Cannon Point-LP PCI Express Root Port #9\n\t9db1  Cannon Point-LP PCI Express Root Port #10\n\t9db2  Cannon Point-LP PCI Express Root Port #1\n\t9db4  Cannon Point-LP PCI Express Root Port #13\n\t\t1028 089e  Inspiron 5482\n\t9db6  Cannon Point-LP PCI Express Root Port #15\n\t9db8  Cannon Point-LP PCI Express Root Port #1\n\t9dbc  Cannon Point-LP PCI Express Root Port #5\n\t9dbe  Cannon Point-LP PCI Express Root Port #7\n\t9dbf  Cannon Point PCI Express Root Port #8\n\t9dc4  Cannon Point-LP SD Host Controller\n\t9dc5  Cannon Point-LP Serial IO I2C Host Controller\n\t9dc8  Cannon Point-LP High Definition Audio Controller\n\t\t1028 089e  Inspiron 5482\n\t9dd3  Cannon Point-LP SATA Controller [AHCI Mode]\n\t9de0  Cannon Point-LP MEI Controller #1\n\t9de3  Cannon Point-LP Keyboard and Text (KT) Redirection\n\t9de8  Cannon Point-LP Serial IO I2C Controller #0\n\t\t1028 089e  Inspiron 5482\n\t9de9  Cannon Point-LP Serial IO I2C Controller #1\n\t\t1028 089e  Inspiron 5482\n\t9ded  Cannon Point-LP USB 3.1 xHCI Controller\n\t9def  Cannon Point-LP Shared SRAM\n\t9df0  Cannon Point-LP CNVi [Wireless-AC]\n\t9df5  BayHubTech Integrated SD controller\n\t9df9  Cannon Point-LP Thermal Controller\n\t9dfc  Cannon Point-LP Integrated Sensor Hub\n\ta000  Atom Processor D4xx/D5xx/N4xx/N5xx DMI Bridge\n\t\t1458 5000  GA-D525TUD\n\t\t8086 4f4d  DeskTop Board D510MO\n\t\t8086 544b  Desktop Board D425KT\n\ta001  Atom Processor D4xx/D5xx/N4xx/N5xx Integrated Graphics Controller\n\t\t1458 d000  GA-D525TUD\n\t\t8086 4f4d  DeskTop Board D510MO\n\t\t8086 544b  Desktop Board D425KT\n\ta002  Atom Processor D4xx/D5xx/N4xx/N5xx Integrated Graphics Controller\n\ta003  Atom Processor D4xx/D5xx/N4xx/N5xx CHAPS counter\n\ta010  Atom Processor D4xx/D5xx/N4xx/N5xx DMI Bridge\n\t\t1043 83ac  Eee PC 1015PX\n\t\t144d c072  Notebook N150P\n\ta011  Atom Processor D4xx/D5xx/N4xx/N5xx Integrated Graphics Controller\n\t\t1043 83ac  Eee PC 1015PX\n\t\t144d c072  Notebook N150P\n\ta012  Atom Processor D4xx/D5xx/N4xx/N5xx Integrated Graphics Controller\n\t\t1043 83ac  Eee PC 1015PX\n\t\t144d c072  Notebook N150P\n\ta013  Atom Processor D4xx/D5xx/N4xx/N5xx CHAPS counter\n\ta082  Tiger Lake-LP LPC Controller\n\ta0a3  Tiger Lake-LP SMBus Controller\n\ta0a4  Tiger Lake-LP SPI Controller\n\ta0a6  Tiger Lake-LP Trace Hub\n\ta0a8  Tiger Lake-LP Serial IO UART Controller #0\n\ta0a9  Tiger Lake-LP Serial IO UART Controller #1\n\ta0ab  Tiger Lake-LP Serial IO SPI Controller #1\n\ta0b0  Tiger Lake-LP PCI Express Root Port #9\n\ta0b1  Tiger Lake-LP PCI Express Root Port #10\n\ta0b3  Tiger Lake-LP PCI Express Root Port #12\n\ta0bc  Tiger Lake-LP PCI Express Root Port #5\n\ta0bd  Tigerlake PCH-LP PCI Express Root Port #6\n\ta0be  Tiger Lake-LP PCI Express Root Port #7\n\ta0bf  Tiger Lake-LP PCI Express Root Port #8\n\ta0c5  Tiger Lake-LP Serial IO I2C Controller #4\n\ta0c6  Tiger Lake-LP Serial IO I2C Controller #5\n\ta0c8  Tiger Lake-LP Smart Sound Technology Audio Controller\n# SATA controller on Intel Tiger Lake based mobile platforms in AHCI mode. Could be found on Panasonic Let's Note CF-SV2.\n\ta0d3  Tiger Lake-LP SATA Controller\n\ta0e0  Tiger Lake-LP Management Engine Interface\n\ta0e3  Tiger Lake-LP Active Management Technology - SOL\n\ta0e8  Tiger Lake-LP Serial IO I2C Controller #0\n\ta0e9  Tiger Lake-LP Serial IO I2C Controller #1\n\ta0ea  Tiger Lake-LP Serial IO I2C Controller #2\n\ta0eb  Tiger Lake-LP Serial IO I2C Controller #3\n\ta0ed  Tiger Lake-LP USB 3.2 Gen 2x1 xHCI Host Controller\n\ta0ef  Tiger Lake-LP Shared SRAM\n\ta0f0  Wi-Fi 6 AX201\n\t\t8086 0244  Wi-Fi 6 AX101NGW\n\ta0fc  Tiger Lake-LP Integrated Sensor Hub\n\ta102  Q170/Q150/B150/H170/H110/Z170/CM236 Chipset SATA Controller [AHCI Mode]\n\t\t1043 8694  H110I-PLUS Motherboard\n\t\t1462 7994  H110M ECO/GAMING\n\ta103  HM170/QM170 Chipset SATA Controller [AHCI Mode]\n\t\t1028 06e4  XPS 15 9550\n\t\t103c 825b  OMEN-17-w001nv\n\ta105  Sunrise Point-H SATA Controller [RAID mode]\n\ta106  Q170/H170/Z170/CM236 Chipset SATA Controller [RAID Mode]\n\ta107  HM170/QM170 Chipset SATA Controller [RAID Mode]\n\ta10f  Sunrise Point-H SATA Controller [RAID mode]\n\ta110  100 Series/C230 Series Chipset Family PCI Express Root Port #1\n\ta111  100 Series/C230 Series Chipset Family PCI Express Root Port #2\n\ta112  100 Series/C230 Series Chipset Family PCI Express Root Port #3\n\ta113  100 Series/C230 Series Chipset Family PCI Express Root Port #4\n\ta114  100 Series/C230 Series Chipset Family PCI Express Root Port #5\n\t\t1043 8694  H110I-PLUS Motherboard\n\ta115  100 Series/C230 Series Chipset Family PCI Express Root Port #6\n\ta116  100 Series/C230 Series Chipset Family PCI Express Root Port #7\n\ta117  100 Series/C230 Series Chipset Family PCI Express Root Port #8\n\ta118  100 Series/C230 Series Chipset Family PCI Express Root Port #9\n\t\t1043 8694  H110I-PLUS Motherboard\n\ta119  100 Series/C230 Series Chipset Family PCI Express Root Port #10\n\t\t1043 8694  H110I-PLUS Motherboard\n\ta11a  100 Series/C230 Series Chipset Family PCI Express Root Port #11\n\ta11b  100 Series/C230 Series Chipset Family PCI Express Root Port #12\n\ta11c  100 Series/C230 Series Chipset Family PCI Express Root Port #13\n\ta11d  100 Series/C230 Series Chipset Family PCI Express Root Port #14\n\ta11e  100 Series/C230 Series Chipset Family PCI Express Root Port #15\n\ta11f  100 Series/C230 Series Chipset Family PCI Express Root Port #16\n\ta120  100 Series/C230 Series Chipset Family P2SB\n\ta121  100 Series/C230 Series Chipset Family Power Management Controller\n\t\t1028 06e4  XPS 15 9550\n\t\t103c 825b  OMEN-17-w001nv\n\t\t1043 8694  H110I-PLUS Motherboard\n\t\t1462 7994  H110M ECO/GAMING\n\ta122  Sunrise Point-H cAVS\n\ta123  100 Series/C230 Series Chipset Family SMBus\n\t\t1028 06e4  XPS 15 9550\n\t\t103c 825b  OMEN-17-w001nv\n\t\t1043 8694  H110I-PLUS Motherboard\n\t\t1462 7994  H110M ECO/GAMING\n\ta124  100 Series/C230 Series Chipset Family SPI Controller\n\ta125  100 Series/C230 Series Chipset Family Gigabit Ethernet Controller\n\ta126  100 Series/C230 Series Chipset Family Trace Hub\n\ta127  100 Series/C230 Series Chipset Family Serial IO UART #0\n\ta128  100 Series/C230 Series Chipset Family Serial IO UART #1\n\ta129  100 Series/C230 Series Chipset Family Serial IO GSPI #0\n\ta12a  100 Series/C230 Series Chipset Family Serial IO GSPI #1\n\ta12f  100 Series/C230 Series Chipset Family USB 3.0 xHCI Controller\n\t\t1028 06e4  XPS 15 9550\n\t\t103c 825b  OMEN-17-w001nv\n\t\t1043 8694  H110I-PLUS Motherboard\n\t\t1462 7994  H110M ECO/GAMING\n\ta130  100 Series/C230 Series Chipset Family USB Device Controller (OTG)\n\ta131  100 Series/C230 Series Chipset Family Thermal Subsystem\n\t\t1028 06e4  XPS 15 9550\n\t\t103c 825b  OMEN-17-w001nv\n\t\t1462 7994  H110M ECO/GAMING\n\ta133  Sunrise Point-H Northpeak ACPI Function\n\ta135  100 Series/C230 Series Chipset Family Integrated Sensor Hub\n\ta13a  100 Series/C230 Series Chipset Family MEI Controller #1\n\t\t1028 06e4  XPS 15 9550\n\t\t103c 825b  OMEN-17-w001nv\n\t\t1043 8694  H110I-PLUS Motherboard\n\t\t1462 7994  H110M ECO/GAMING\n\ta13b  100 Series/C230 Series Chipset Family MEI Controller #2\n\ta13c  100 Series/C230 Series Chipset Family IDE Redirection\n\ta13d  100 Series/C230 Series Chipset Family KT Redirection\n\ta13e  100 Series/C230 Series Chipset Family MEI Controller #3\n\ta140  Sunrise Point-H LPC Controller\n\ta141  Sunrise Point-H LPC Controller\n\ta142  Sunrise Point-H LPC Controller\n\ta143  H110 Chipset LPC/eSPI Controller\n\t\t1043 8694  H110I-PLUS Motherboard\n\t\t1462 7994  H110M ECO/GAMING\n\ta144  H170 Chipset LPC/eSPI Controller\n\ta145  Z170 Chipset LPC/eSPI Controller\n\ta146  Q170 Chipset LPC/eSPI Controller\n\ta147  Q150 Chipset LPC/eSPI Controller\n\ta148  B150 Chipset LPC/eSPI Controller\n\ta149  C236 Chipset LPC/eSPI Controller\n\ta14a  C232 Chipset LPC/eSPI Controller\n\ta14b  Sunrise Point-H LPC Controller\n\ta14c  Sunrise Point-H LPC Controller\n\ta14d  QM170 Chipset LPC/eSPI Controller\n\ta14e  HM170 Chipset LPC/eSPI Controller\n\t\t1028 06e4  XPS 15 9550\n\t\t103c 825b  OMEN-17-w001nv\n\ta14f  Sunrise Point-H LPC Controller\n\ta150  CM236 Chipset LPC/eSPI Controller\n\ta151  Sunrise Point-H LPC Controller\n\ta152  HM175 Chipset LPC/eSPI Controller\n\ta153  QM175 Chipset LPC/eSPI Controller\n\ta154  CM238 Chipset LPC/eSPI Controller\n\ta155  Sunrise Point-H LPC Controller\n\ta156  Sunrise Point-H LPC Controller\n\ta157  Sunrise Point-H LPC Controller\n\ta158  Sunrise Point-H LPC Controller\n\ta159  Sunrise Point-H LPC Controller\n\ta15a  Sunrise Point-H LPC Controller\n\ta15b  Sunrise Point-H LPC Controller\n\ta15c  Sunrise Point-H LPC Controller\n\ta15d  Sunrise Point-H LPC Controller\n\ta15e  Sunrise Point-H LPC Controller\n\ta15f  Sunrise Point-H LPC Controller\n\ta160  100 Series/C230 Series Chipset Family Serial IO I2C Controller #0\n\t\t1028 06e4  XPS 15 9550\n\t\t103c 825b  OMEN-17-w001nv\n\ta161  100 Series/C230 Series Chipset Family Serial IO I2C Controller #1\n\t\t1028 06e4  XPS 15 9550\n\ta162  100 Series/C230 Series Chipset Family Serial IO I2C Controller #2\n\ta163  100 Series/C230 Series Chipset Family Serial IO I2C Controller #3\n\ta166  100 Series/C230 Series Chipset Family Serial IO UART Controller #2\n\ta167  100 Series/C230 Series Chipset Family PCI Express Root Port #17\n\ta168  100 Series/C230 Series Chipset Family PCI Express Root Port #18\n\ta169  100 Series/C230 Series Chipset Family PCI Express Root Port #19\n\ta16a  100 Series/C230 Series Chipset Family PCI Express Root Port #20\n\ta170  100 Series/C230 Series Chipset Family HD Audio Controller\n\t\t1028 06e4  XPS 15 9550\n\t\t103c 825b  OMEN-17-w001nv\n\t\t1043 86c7  H110I-PLUS Motherboard\n\t\t1462 f994  H110M ECO/GAMING\n\ta171  CM238 HD Audio Controller\n\ta182  C620 Series Chipset Family SATA Controller [AHCI mode]\n\ta186  C620 Series Chipset Family SATA Controller [RAID mode]\n\ta190  C620 Series Chipset Family PCI Express Root Port #1\n\ta191  C620 Series Chipset Family PCI Express Root Port #2\n\ta192  C620 Series Chipset Family PCI Express Root Port #3\n\ta193  C620 Series Chipset Family PCI Express Root Port #4\n\ta194  C620 Series Chipset Family PCI Express Root Port #5\n\ta195  C620 Series Chipset Family PCI Express Root Port #6\n\ta196  C620 Series Chipset Family PCI Express Root Port #7\n\ta197  C620 Series Chipset Family PCI Express Root Port #8\n\ta198  C620 Series Chipset Family PCI Express Root Port #9\n\ta199  C620 Series Chipset Family PCI Express Root Port #10\n\ta19a  C620 Series Chipset Family PCI Express Root Port #11\n\ta19b  C620 Series Chipset Family PCI Express Root Port #12\n\ta19c  C620 Series Chipset Family PCI Express Root Port #13\n\ta19d  C620 Series Chipset Family PCI Express Root Port #14\n\ta19e  C620 Series Chipset Family PCI Express Root Port #15\n\ta19f  C620 Series Chipset Family PCI Express Root Port #16\n\ta1a0  C620 Series Chipset Family P2SB\n\ta1a1  C620 Series Chipset Family Power Management Controller\n\t\t15d9 095d  X11SPM-TF\n\ta1a2  C620 Series Chipset Family cAVS\n\ta1a3  C620 Series Chipset Family SMBus\n\t\t15d9 095d  X11SPM-TF\n\ta1a4  C620 Series Chipset Family SPI Controller\n\t\t15d9 095d  X11SPM-TF\n\ta1a6  C620 Series Chipset Family Trace Hub\n\ta1af  C620 Series Chipset Family USB 3.0 xHCI Controller\n\t\t15d9 095d  X11SPM-TF\n\ta1b1  C620 Series Chipset Family Thermal Subsystem\n\t\t15d9 095d  X11SPM-TF\n\ta1ba  C620 Series Chipset Family MEI Controller #1\n\t\t15d9 095d  X11SPM-TF\n\ta1bb  C620 Series Chipset Family MEI Controller #2\n\t\t15d9 095d  X11SPM-TF\n\ta1bc  C620 Series Chipset Family IDE Redirection\n\ta1bd  C620 Series Chipset Family KT Redirection\n\ta1be  C620 Series Chipset Family MEI Controller #3\n\t\t15d9 095d  X11SPM-TF\n\ta1c1  C621 Series Chipset LPC/eSPI Controller\n\ta1c2  C622 Series Chipset LPC/eSPI Controller\n\t\t15d9 095d  X11SPM-TF\n\ta1c3  C624 Series Chipset LPC/eSPI Controller\n\ta1c4  C625 Series Chipset LPC/eSPI Controller\n\ta1c5  C626 Series Chipset LPC/eSPI Controller\n\ta1c6  C627 Series Chipset LPC/eSPI Controller\n\ta1c7  C628 Series Chipset LPC/eSPI Controller\n\ta1d2  C620 Series Chipset Family SSATA Controller [AHCI mode]\n\ta1d6  C620 Series Chipset Family SSATA Controller [RAID mode]\n\ta1e7  C620 Series Chipset Family PCI Express Root Port #17\n\ta1e8  C620 Series Chipset Family PCI Express Root Port #18\n\ta1e9  C620 Series Chipset Family PCI Express Root Port #19\n\ta1ea  C620 Series Chipset Family PCI Express Root Port #20\n\ta1ec  C620 Series Chipset Family MROM 0\n\ta1ed  C620 Series Chipset Family MROM 1\n\ta1f0  C62x HD Audio Controller\n\ta1f8  Lewisburg IE: HECI #1\n\ta1f9  Lewisburg IE: HECI #2\n\ta1fa  Lewisburg IE: IDE-r\n\ta1fb  Lewisburg IE: KT Controller\n\ta1fc  Lewisburg IE: HECI #3\n\ta202  Lewisburg SATA Controller [AHCI mode]\n\ta206  Lewisburg SATA Controller [RAID mode]\n\ta210  Lewisburg PCI Express Root Port\n\ta211  Lewisburg PCI Express Root Port\n\ta212  Lewisburg PCI Express Root Port\n\ta213  Lewisburg PCI Express Root Port\n\ta214  Lewisburg PCI Express Root Port\n\ta215  Lewisburg PCI Express Root Port\n\ta216  Lewisburg PCI Express Root Port\n\ta217  Lewisburg PCI Express Root Port\n\ta218  Lewisburg PCI Express Root Port\n\ta219  Lewisburg PCI Express Root Port\n\ta21a  Lewisburg PCI Express Root Port\n\ta21b  Lewisburg PCI Express Root Port\n\ta21c  Lewisburg PCI Express Root Port\n\ta21d  Lewisburg PCI Express Root Port\n\ta21e  Lewisburg PCI Express Root Port\n\ta21f  Lewisburg PCI Express Root Port\n\ta221  Lewisburg Power Management Controller\n\ta223  Lewisburg SMBus\n\ta224  Lewisburg SPI Controller\n\ta242  Lewisburg LPC or eSPI Controller\n\ta243  Lewisburg LPC or eSPI Controller\n\ta252  Lewisburg SSATA Controller [AHCI mode]\n\ta256  Lewisburg SSATA Controller [RAID mode]\n\ta267  Lewisburg PCI Express Root Port\n\ta268  Lewisburg PCI Express Root Port\n\ta269  Lewisburg PCI Express Root Port\n\ta26a  Lewisburg PCI Express Root Port\n\ta282  200 Series PCH SATA controller [AHCI mode]\n\t\t1462 7a72  H270 PC MATE\n\ta286  200 Series PCH SATA controller [RAID mode]\n\ta290  200 Series PCH PCI Express Root Port #1\n\ta291  200 Series PCH PCI Express Root Port #2\n\ta292  200 Series PCH PCI Express Root Port #3\n\ta293  200 Series PCH PCI Express Root Port #4\n\ta294  200 Series PCH PCI Express Root Port #5\n\t\t1462 7a72  H270 PC MATE\n\ta295  200 Series PCH PCI Express Root Port #6\n\ta296  200 Series PCH PCI Express Root Port #7\n\t\t1462 7a72  H270 PC MATE\n\ta297  200 Series PCH PCI Express Root Port #8\n\ta298  200 Series PCH PCI Express Root Port #9\n\t\t1462 7a72  H270 PC MATE\n\ta299  200 Series PCH PCI Express Root Port #10\n\ta29a  200 Series PCH PCI Express Root Port #11\n\ta29b  200 Series PCH PCI Express Root Port #12\n\ta29c  200 Series PCH PCI Express Root Port #13\n\ta29d  200 Series PCH PCI Express Root Port #14\n\ta29e  200 Series PCH PCI Express Root Port #15\n\ta29f  200 Series PCH PCI Express Root Port #16\n\ta2a0  200 Series/Z370 Chipset Family P2SB\n\ta2a1  200 Series/Z370 Chipset Family Power Management Controller\n\t\t1462 7a72  H270 PC MATE\n\ta2a3  200 Series/Z370 Chipset Family SMBus Controller\n\t\t1462 7a72  H270 PC MATE\n\ta2a4  200 Series/Z370 Chipset Family SPI Controller\n\ta2a5  200 Series/Z370 Chipset Family Gigabit Ethernet Controller\n\ta2a6  200 Series/Z370 Chipset Family Trace Hub\n\ta2a7  200 Series/Z370 Chipset Family Serial IO UART Controller #0\n\ta2a8  200 Series/Z370 Chipset Family Serial IO UART Controller #1\n\ta2a9  200 Series/Z370 Chipset Family Serial IO SPI Controller #0\n\ta2aa  200 Series/Z370 Chipset Family Serial IO SPI Controller #1\n\ta2af  200 Series/Z370 Chipset Family USB 3.0 xHCI Controller\n\t\t1462 7a72  H270 PC MATE\n\ta2b1  200 Series PCH Thermal Subsystem\n\t\t1462 7a72  H270 PC MATE\n\ta2ba  200 Series PCH CSME HECI #1\n\t\t1462 7a72  H270 PC MATE\n\ta2bb  200 Series PCH CSME HECI #2\n# AMT serial over LAN\n\ta2bd  200 Series Chipset Family KT Redirection\n\ta2c4  200 Series PCH LPC Controller (H270)\n\t\t1462 7a72  H270 PC MATE\n\ta2c5  200 Series PCH LPC Controller (Z270)\n\ta2c6  200 Series PCH LPC Controller (Q270)\n\ta2c7  200 Series PCH LPC Controller (Q250)\n\ta2c8  200 Series PCH LPC Controller (B250)\n\ta2c9  Z370 Chipset LPC/eSPI Controller\n\ta2d2  X299 Chipset LPC/eSPI Controller\n\ta2d3  C422 Chipset LPC/eSPI Controller\n\ta2e0  200 Series PCH Serial IO I2C Controller #0\n\ta2e1  200 Series PCH Serial IO I2C Controller #1\n\ta2e2  200 Series PCH Serial IO I2C Controller #2\n\ta2e3  200 Series PCH Serial IO I2C Controller #3\n\ta2e6  200 Series PCH Serial IO UART Controller #2\n\ta2e7  200 Series PCH PCI Express Root Port #17\n\ta2e8  200 Series PCH PCI Express Root Port #18\n\ta2e9  200 Series PCH PCI Express Root Port #19\n\ta2ea  200 Series PCH PCI Express Root Port #20\n\ta2eb  200 Series PCH PCI Express Root Port #21\n\ta2ec  200 Series PCH PCI Express Root Port #22\n\ta2ed  200 Series PCH PCI Express Root Port #23\n\ta2ee  200 Series PCH PCI Express Root Port #24\n\ta2f0  200 Series PCH HD Audio\n\t\t1462 7a72  H270 PC MATE\n\t\t1462 fa72  H270 PC MATE\n\ta303  H310 Chipset LPC/eSPI Controller\n\ta304  H370 Chipset LPC/eSPI Controller\n\t\t1028 0869  Vostro 3470\n\ta305  Z390 Chipset LPC/eSPI Controller\n\ta306  Q370 Chipset LPC/eSPI Controller\n\ta307  Q360 Chipset LPC/eSPI Controller\n\ta308  B360 Chipset LPC/eSPI Controller\n\ta309  C246 Chipset LPC/eSPI Controller\n\ta30a  C242 Chipset LPC/eSPI Controller\n\ta30c  QM370 Chipset LPC/eSPI Controller\n\ta30d  HM370 Chipset LPC/eSPI Controller\n\ta30e  CM246 Chipset LPC/eSPI Controller\n\ta313  Cannon Lake LPC/eSPI Controller\n\ta323  Cannon Lake PCH SMBus Controller\n\t\t1028 0869  Vostro 3470\n\ta324  Cannon Lake PCH SPI Controller\n\t\t1028 0869  Vostro 3470\n\ta328  Cannon Lake PCH Serial IO UART Host Controller\n\ta32b  Cannon Lake PCH SPI Host Controller\n\ta32c  Cannon Lake PCH PCI Express Root Port #21\n\ta32d  Cannon Lake PCH PCI Express Root Port #22\n\ta32e  Cannon Lake PCH PCI Express Root Port #23\n\ta32f  Cannon Lake PCH PCI Express Root Port #24\n\ta330  Cannon Lake PCH PCI Express Root Port #9\n\ta331  Cannon Lake PCH PCI Express Root Port #10\n\ta332  Cannon Lake PCH PCI Express Root Port #11\n\ta333  Cannon Lake PCH PCI Express Root Port #12\n\ta334  Cannon Lake PCH PCI Express Root Port #13\n\ta335  Cannon Lake PCH PCI Express Root Port #14\n\ta336  Cannon Lake PCH PCI Express Root Port #15\n\ta337  Cannon Lake PCH PCI Express Root Port #16\n\ta338  Cannon Lake PCH PCI Express Root Port #1\n\ta339  Cannon Lake PCH PCI Express Root Port #2\n\ta33a  Cannon Lake PCH PCI Express Root Port #3\n\ta33b  Cannon Lake PCH PCI Express Root Port #4\n\ta33c  Cannon Lake PCH PCI Express Root Port #5\n\ta33d  Cannon Lake PCH PCI Express Root Port #6\n\ta33e  Cannon Lake PCH PCI Express Root Port #7\n\ta33f  Cannon Lake PCH PCI Express Root Port #8\n\ta340  Cannon Lake PCH PCI Express Root Port #17\n\ta341  Cannon Lake PCH PCI Express Root Port #18\n\ta342  Cannon Lake PCH PCI Express Root Port #19\n\ta343  Cannon Lake PCH PCI Express Root Port #20\n\ta348  Cannon Lake PCH cAVS\n\t\t1028 0869  Vostro 3470\n\ta352  Cannon Lake PCH SATA AHCI Controller\n\t\t1028 0869  Vostro 3470\n\ta353  Cannon Lake Mobile PCH SATA AHCI Controller\n\ta360  Cannon Lake PCH HECI Controller\n\t\t1028 0869  Vostro 3470\n\ta363  Cannon Lake PCH Active Management Technology - SOL\n\ta364  Cannon Lake PCH HECI Controller #2\n\ta368  Cannon Lake PCH Serial IO I2C Controller #0\n\ta369  Cannon Lake PCH Serial IO I2C Controller #1\n\ta36a  Cannon Lake PCH Serial IO I2C Controller #2\n\ta36b  Cannon Lake PCH Serial IO I2C Controller #3\n\ta36d  Cannon Lake PCH USB 3.1 xHCI Host Controller\n\t\t1028 0869  Vostro 3470\n\ta36f  Cannon Lake PCH Shared SRAM\n\ta370  Cannon Lake PCH CNVi WiFi\n\t\t1a56 1552  Killer(R) Wireless-AC 1550i Wireless Network Adapter (9560NGW)\n\t\t8086 0034  Wireless-AC 9560\n\ta379  Cannon Lake PCH Thermal Controller\n\t\t1028 0869  Vostro 3470\n\ta382  400 Series Chipset Family SATA AHCI Controller\n\ta394  Comet Lake PCI Express Root Port #05\n\ta397  Comet Lake PCI Express Root Port #08\n\ta398  Comet Lake PCI Express Root Port 9\n\ta39a  Comet Lake PCI Express Root Port 11\n\ta3a1  Cannon Lake PCH Power Management Controller\n\ta3a3  Comet Lake PCH-V SMBus Host Controller\n\ta3af  Comet Lake PCH-V USB Controller\n\ta3b1  Comet Lake PCH-V Thermal Subsystem\n\ta3ba  Comet Lake PCH-V HECI Controller\n\ta3c8  B460 Chipset LPC/eSPI Controller\n\ta3da  H410 Chipset LPC/eSPI Controller\n\ta3eb  Comet Lake PCI Express Root Port #21\n\ta3f0  Comet Lake PCH-V cAVS\n\ta620  6400/6402 Advanced Memory Buffer (AMB)\n\ta703  Raptor Lake-S Host Bridge/DRAM Controller\n\ta706  Raptor Lake-P 6p+8e cores Host Bridge/DRAM Controller\n\t\t1028 0c06  Precision 3580\n\ta707  Raptor Lake-P/U 4p+8e cores Host Bridge/DRAM Controller\n\ta708  Raptor Lake-P/U 2p+8e cores Host Bridge/DRAM Controller\n\ta70d  Raptor Lake PCI Express 5.0 Graphics Port (PEG010)\n\ta71d  Raptor Lake Dynamic Platform and Thermal Framework Processor Participant\n\t\t1028 0c06  Precision 3580\n\ta71e  Raptor Lake-P Thunderbolt 4 USB Controller\n\t\t1028 0c06  Precision 3580\n\ta71f  Raptor Lake-P Thunderbolt 4 PCI Express Root Port #1\n\ta720  Raptor Lake-P [UHD Graphics]\n\ta721  Raptor Lake-P [UHD Graphics]\n\ta72f  Raptor Lake-P Thunderbolt 4 PCI Express Root Port #2\n\ta73e  Raptor Lake-P Thunderbolt 4 NHI #0\n\t\t1028 0c06  Precision 3580\n\ta740  Raptor Lake-S 8+12 - Host Bridge/DRAM Controller\n\ta74d  Raptor Lake PCIe 4.0 Graphics Port\n\ta74f  GNA Scoring Accelerator module\n\t\t1028 0c06  Precision 3580\n\ta75d  Raptor Lake IPU\n\ta76d  Raptor Lake-P Thunderbolt 4 NHI #1\n\ta76e  Raptor Lake-P Thunderbolt 4 PCI Express Root Port #0\n\ta77d  Raptor Lake Crashlog and Telemetry\n\t\t1028 0c06  Precision 3580\n\ta77f  Volume Management Device NVMe RAID Controller Intel Corporation\n\ta780  Raptor Lake-S GT1 [UHD Graphics 770]\n\ta781  Raptor Lake-S UHD Graphics\n\ta782  Raptor Lake-S UHD Graphics\n\ta783  Raptor Lake-S UHD Graphics\n\ta788  Raptor Lake-S UHD Graphics\n\ta789  Raptor Lake-S UHD Graphics\n\ta78a  Raptor Lake-S UHD Graphics\n\ta78b  Raptor Lake-S UHD Graphics\n\ta7a0  Raptor Lake-P [Iris Xe Graphics]\n\t\t1028 0c06  Precision 3580\n\ta7a1  Raptor Lake-P [Iris Xe Graphics]\n\ta7a8  Raptor Lake-P [UHD Graphics]\n\ta7a9  Raptor Lake-P [UHD Graphics]\n\ta7aa  Raptor Lake-P [Intel Graphics]\n\ta7ab  Raptor Lake-P [Intel Graphics]\n\ta7ac  Raptor Lake-U [Intel Graphics]\n\ta7ad  Raptor Lake-U [Intel Graphics]\n\ta806  Lunar Lake-M LPC/eSPI Controller\n\ta822  Lunar Lake-M SMbus Controller\n\ta823  Lunar Lake-M SPI Controller\n\ta824  Lunar Lake-M Trace Hub\n\ta825  Lunar Lake-M Serial IO UART Controller #0\n\ta826  Lunar Lake-M Serial IO UART Controller #1\n\ta827  Lunar Lake-M Serial IO SPI Controller #0\n\ta828  Lunar Lake-M HD Audio Controller\n\ta830  Lunar Lake-M Serial IO SPI Controller #1\n\ta831  Lunar Lake-M Thunderbolt 4 USB Controller\n\ta833  Lunar Lake-M Thunderbolt 4 NHI #0\n\ta834  Lunar Lake-M Thunderbolt 4 NHI #1\n\ta838  Lunar Lake-M PCI Express Root Port #1\n\ta839  Lunar Lake-M PCI Express Root Port #2\n\ta83a  Lunar Lake-M PCI Express Root Port #3\n\ta83b  Lunar Lake-M PCI Express Root Port #4\n\ta83c  Lunar Lake-M PCI Express Root Port #5\n\ta83d  Lunar Lake-M PCI Express Root Port #6\n\ta840  BE201 320MHz\n\ta845  Lunar Lake-M Integrated Sensor Hub\n\ta847  Lunar Lake-M UFS Controller\n\ta848  Lunar Lake-M Touch Host Controller #0 ID1\n\ta849  Lunar Lake-M Touch Host Controller #0 ID2\n\ta84a  Lunar Lake-M Touch Host Controller #1 ID1\n\ta84b  Lunar Lake-M Touch Host Controller #1 ID2\n\ta84e  Lunar Lake-M Thunderbolt 4 PCI Express Root Port #0\n\ta84f  Lunar Lake-M Thunderbolt 4 PCI Express Root Port #1\n\ta860  Lunar Lake-M Thunderbolt 4 PCI Express Root Port #2\n\ta870  Lunar Lake-M CSME HECI #1\n\ta873  Lunar Lake-M Keyboard and Text (KT) Redirection\n\ta878  Lunar Lake-M Serial IO I2C Controller #0\n\ta879  Lunar Lake-M Serial IO I2C Controller #1\n\ta87a  Lunar Lake-M Serial IO I2C Controller #2\n\ta87b  Lunar Lake-M Serial IO I2C Controller #3\n\ta87d  Lunar Lake-M USB 3.2 Gen 2x1 xHCI Host Controller\n\ta87f  Lunar Lake-M Shared SRAM\n\tabc0  Omni-Path Fabric Switch Silicon 100 Series\n\tad0b  Volume Management Device NVMe RAID Controller Intel Corporation\n\tad1d  Arrow Lake NPU\n\tb03e  Panther Lake NPU\n\tb080  Panther Lake [Intel Graphics]\n\tb081  Panther Lake [Intel Graphics]\n\tb082  Panther Lake [Intel Graphics]\n\tb083  Panther Lake [Intel Graphics]\n\tb084  Panther Lake [Intel Graphics]\n\tb085  Panther Lake [Intel Graphics]\n\tb086  Panther Lake [Intel Graphics]\n\tb087  Panther Lake [Intel Graphics]\n\tb08f  Panther Lake [Intel Graphics]\n\tb090  Panther Lake [Intel Graphics]\n\tb0a0  Panther Lake [Intel Graphics]\n\tb0b0  Panther Lake [Intel Graphics]\n\tb152  21152 PCI-to-PCI Bridge\n\t\t8086 b152  21152 PCI-to-PCI Bridge\n# observed, and documented in Intel revision note; new mask of 1011:0026\n\tb154  21154 PCI-to-PCI Bridge\n\tb555  21555 Non transparent PCI-to-PCI Bridge\n\t\t12c7 5005  SS7HD PCI Adaptor Card\n\t\t12c7 5006  SS7HDC cPCI Adaptor Card\n\t\t12d9 000a  PCI VoIP Gateway\n\t\t4c53 1050  CT7 mainboard\n\t\t4c53 1051  CE7 mainboard\n\t\te4bf 1000  CC8-1-BLUES\n\tb640  Arrow Lake-H [Intel Graphics]\n\td130  Core Processor DMI\n\t\t15d9 0605  X8SIL\n\td131  Core Processor DMI\n\t\t1028 02da  OptiPlex 980\n\t\t15d9 060d  C7SIM-Q Motherboard\n\td132  Core Processor DMI\n\t\t1028 040b  Latitude E6510\n\td133  Core Processor DMI\n\td134  Core Processor DMI\n\td135  Core Processor DMI\n\td136  Core Processor DMI\n\td137  Core Processor DMI\n\td138  Core Processor PCI Express Root Port 1\n\t\t1028 02da  OptiPlex 980\n\t\t1028 040b  Latitude E6510\n\t\t15d9 060d  C7SIM-Q Motherboard\n\td139  Core Processor PCI Express Root Port 2\n\td13a  Core Processor PCI Express Root Port 3\n\td13b  Core Processor PCI Express Root Port 4\n\td150  Core Processor QPI Link\n\td151  Core Processor QPI Routing and Protocol Registers\n\td155  Core Processor System Management Registers\n\td156  Core Processor Semaphore and Scratchpad Registers\n\td157  Core Processor System Control and Status Registers\n\td158  Core Processor Miscellaneous Registers\n\te202  Battlemage G21 [Intel Graphics]\n\te20b  Battlemage G21 [Arc B580]\n\te20c  Battlemage G21 [Arc B570]\n\te20d  Battlemage G21 [Intel Graphics]\n\te210  Battlemage G21 [Intel Graphics]\n\te211  Battlemage G21 [Intel Graphics]\n\te212  Battlemage G21 [Intel Graphics]\n\te215  Battlemage G21 [Intel Graphics]\n\te216  Battlemage G21 [Intel Graphics]\n\te220  Battlemage G31 [Intel Graphics]\n\te221  Battlemage G31 [Intel Graphics]\n\te222  Battlemage G31 [Intel Graphics]\n\te223  Battlemage G31 [Intel Graphics]\n\tf1a5  SSD 600P Series\n\t\t8086 390a  SSDPEKKW256G7 256GB\n\tf1a6  SSD DC P4101/Pro 7600p/760p/E 6100p Series\n\t\t8086 390b  SSD Pro 7600p/760p/E 6100p Series [NVM Express]\n\tf1a7  SSD 700p Series\n\tf1a8  SSD 660P Series\n\tf1aa  SSD 670p Series [Keystone Harbor]\n\tfaf0  SSD 665p Series [Neptune Harbor Refresh]\n\tfd80  Wildcat Lake [Intel Graphics]\n\tfd81  Wildcat Lake [Intel Graphics]\n8088  Beijing Wangxun Technology Co., Ltd.\n\t0100  WX1860AL-W Gigabit Ethernet Controller\n\t0101  WX1860A2 Gigabit Ethernet Controller\n\t\t4c52 2024  LRES2024PT Dual-port 1Gb Ethernet Network Adapter\n\t\t4c52 2025  LRES2025PT Quad-port 1Gb Ethernet Network Adapter\n\t\t4c52 2027  LRES2027PF Dual-port 1Gb Ethernet Server Adapter\n\t\t4c52 3018  LRES3018PT Dual-port 1Gb Ethernet Server Adapter for OCP\n\t\t8088 0201  Dual-Port Ethernet Network Adaptor SF200T\n\t\t8088 0501  Dual-Port Ethernet Network Adapter SF200T-C101\n\t\t8088 0901  Dual-Port Ethernet Network Adapter SF200T-B401\n\t\t8088 0b01  Dual-Port Ethernet Network Adapter SF200T-B402\n\t\t8088 4201  Dual-Port Ethernet Network Adaptor SF200T (WOL)\n\t\t8088 8201  Dual-Port Ethernet Network Adaptor SF200T (NCSI)\n\t\t8088 c201  Dual-Port Ethernet Network Adaptor SF200T (WOL, NCSI)\n\t0102  WX1860A2S Gigabit Ethernet Controller\n\t\t8088 0210  Dual-Port Ethernet Network Adaptor SF200T-S\n\t0103  WX1860A4 Gigabit Ethernet Controller\n\t\t1bd4 009e  ENPW2100-T4\n\t\t4c52 2028  LRES2028PF Quad-port 1Gb Ethernet Server Adapter\n\t\t4c52 3019  LRES3019PT Quad-port 1Gb Ethernet Server Adapter for OCP\n\t\t8088 0401  Qual-Port Ethernet Network Adaptor SF400T\n\t\t8088 0440  Qual-Port Ethernet Network Adaptor SF400-OCP\n\t\t8088 0a01  Quad-Port Ethernet Network Adapter SF400T-B401\n\t\t8088 0c01  Quad-Port Ethernet Network Adapter SF400T-B402\n\t\t8088 4401  Quad-Port Ethernet Network Adapter SF400T (WOL)\n\t\t8088 8103  Quad-Port Ethernet Network Adaptor SF400T (NCSI)\n\t\t8088 8401  Quad-Port Ethernet Network Adapter SF400T (NCSI)\n\t\t8088 c103  Quad-Port Ethernet Network Adaptor SF400T (WOL, NCSI)\n\t\t8088 c401  Quad-Port Ethernet Network Adapter SF400T (WOL, NCSI)\n\t0104  WX1860A4S Gigabit Ethernet Controller\n\t\t8088 0410  Qual-Port Ethernet Network Adaptor SF400T-S\n\t0105  WX1860AL2 Gigabit Ethernet Controller\n\t\t8088 0202  Dual-Port Ethernet Network Adaptor SF200HT\n\t\t8088 4202  Dual-Port Ethernet Network Adaptor SF200HT (WOL)\n\t\t8088 8202  Dual-Port Ethernet Network Adaptor SF200HT (NCSI)\n\t\t8088 c202  Dual-Port Ethernet Network Adaptor SF200HT (WOL, NCSI)\n\t0106  WX1860AL2S Gigabit Ethernet Controller\n\t\t8088 0220  Dual-Port Ethernet Network Adaptor SF200HT-S\n\t0107  WX1860AL4 Gigabit Ethernet Controller\n\t\t8088 0402  Qual-Port Ethernet Network Adaptor SF400HT\n\t\t8088 4402  Quad-Port Ethernet Network Adaptor SF400HT (WOL)\n\t\t8088 8402  Quad-Port Ethernet Network Adaptor SF400HT (NCSI)\n\t\t8088 c402  Quad-Port Ethernet Network Adaptor SF400HT (WOL, NCSI)\n\t0108  WX1860AL4S Gigabit Ethernet Controller\n\t\t8088 0420  Qual-Port Ethernet Network Adaptor SF400HT-S\n\t0109  WX1860-LC Gigabit Ethernet Controller\n\t010a  WX1860A1 Gigabit Ethernet Controller\n\t\t4c52 2026  LRES2026PF Single-port 1Gb Ethernet Network Adapter\n\t\t4c52 2034  LRES2034PT Single-port 1Gb Ethernet Network Adapter\n\t010b  WX1860AL1 Gigabit Ethernet Controller\n\t\t4c52 2215  LRES2215PT Single-port 1Gb Ethernet Network Adapter\n\t\t8088 0102  Single-Port Ethernet Network Adaptor SF100HT\n\t\t8088 4102  Single-Port Ethernet Network Adaptor SF100HT (WOL)\n\t\t8088 8102  Single-Port Ethernet Network Adaptor SF100HT (NCSI)\n\t\t8088 c102  Single-Port Ethernet Network Adaptor SF100HT (WOL, NCSI)\n\t0111  WX1860A2 Ethernet Controller Virtual Function\n\t0113  WX1860A4 Ethernet Controller Virtual Function\n\t0115  WX1860AL2 Ethernet Controller Virtual Function\n\t0117  WX1860AL4 Ethernet Controller Virtual Function\n\t0119  WX1860-LC Gigabit Ethernet Controller Virtual Function\n\t011a  WX1860A1 Gigabit Ethernet Controller Virtual Function\n\t011b  WX1860AL1 Gigabit Ethernet Controller Virtual Function\n\t1000  Ethernet Controller SP1000A Virtual Function for 10GbE SFP+\n\t1001  Ethernet Controller SP1000A for 10GbE SFP+\n\t\t1bd4 0084  Ethernet Controller SP1000A for 10GbE SFP+(lldp)\n\t\t1bd4 0085  Ethernet Controller SP1000A for 10GBASE-T\n\t\t4c52 1002  LRES1002PF Dual-port 10Gb Ethernet Server Adapter\n\t\t4c52 1003  LRES1003PF Single-port 10Gb Ethernet Server Adapter\n\t\t4c52 3001  LRES3001PF Dual-port 10Gb Ethernet Server Adapter for OCP\n\t\t4c52 8005  LRES8005PF Dual-port 10Gb Ethernet Bypass Network Adapter\n\t\t8088 0000  Ethernet Network Adaptor RP1000 for 10GbE SFP+\n\t\t8088 0300  Ethernet Network Adaptor RP1000-A03 for 10GbE SFP+\n\t\t8088 0400  Ethernet Network Adaptor RP1000-A04 for 10GbE SFP+\n\t2000  Ethernet Controller WX1820AL Virtual Function for 10GbE SFP+\n\t2001  Ethernet Controller WX1820AL for 10GbE SFP+\n\t\t8088 2000  Ethernet Network Adaptor RP2000 for 10GbE SFP+\n\t\t8088 2300  Ethernet Network Adaptor RP2000-A03 for 10GbE SFP+\n\t\t8088 2400  Ethernet Network Adaptor RP2000-A04 for 10GbE SFP+\n\t5025  Ethernet Controller WX5025 for 25GbE SFP28\n\t\t8088 1000  Dual-Port Ethernet Network Adapter FF5025-DDATACXX\n\t5125  Ethernet Controller WX5025AL for 25GbE SFP28\n\t\t8088 3000  Dual-Port Ethernet Network Adapter FF5025-DDATAIXX\n80ee  InnoTek Systemberatung GmbH\n\tbeef  VirtualBox Graphics Adapter\n\tcafe  VirtualBox Guest Service\n8322  Sodick America Corp.\n8384  SigmaTel\n8401  TRENDware International Inc.\n8510  Sietium Semiconductor Co., Ltd.\n\t0201  GenBu02 Series GPU\n\t\t8510 0001  GB2062-PUB-LPDDR\n\t\t8510 0002  GB2062-PCIe-C0\n\t\t8510 0003  GB2062-PCIe-C41\n\t\t8510 0004  GB2062-PCIe-HIEILP4\n\t\t8510 0005  CQ2040-PCIe-C21\n\t\t8510 0007  GB2062-PCIe-C40\n\t\t8510 0008  CQ2040-MXM-M60\n\t\t8510 0009  GB2062-PCIe-C20\n\t\t8510 000b  GB2062-PCIe-HIEILP42\n\t\t8510 000c  CQ2040-PUB\n\t\t8510 0201  GB2062-PUB-DDR\n# nee ScaleMP\n8686  SAP\n\t1010  vSMP Foundation controller [vSMP CTL]\n\t1011  vSMP Foundation MEX/FLX controller [vSMP CTL]\n8800  Trigem Computer Inc.\n\t2008  Video assistant component\n8820  Stryker Corporation\n\t2724  Mako Front Side Motor Controller [cPCI]\n# Wuxi Micro Innovation Integrated Circuit Design Co.,Ltd.\n8848  MUCSE\n\t1000  Ethernet Controller N10 Series for 10GbE or 40GbE (Dual-port)\n\t\t4c52 3032  LRES3032PF Dual-port 10Gb Ethernet Server Adapter for OCP\n\t\t8848 8410  Ethernet Network Adapter N10G-X2-DC for 10GbE SFP+ 2-port\n\t1001  Ethernet Controller N400 Series for 1GbE (Dual-port)\n\t1003  Ethernet Controller N400 Series for 10GbE (Single-port)\n\t\t4c52 1050  LRES1050PF Single-port 10Gb Ethernet Network Adapter\n\t1020  Ethernet Controller N10 Series for 10GbE (Quad-port)\n\t\t4c52 1030  LRES1030PF Quad-port 10Gb Ethernet Server Adapter\n\t\t4c52 1031  LRES1031PF Dual-port 10Gb Ethernet Server Adapter\n\t\t4c52 3031  LRES3031PF Quad-port 10Gb Ethernet Server Adapter for OCP\n\t\t8848 8451  Ethernet Network Adapter N10G-X4-QC for 10GbE SFP+ 4-port\n\t1021  Ethernet Controller N400 Series for 1GbE (Quad-port)\n\t\t4c52 1032  LRES1032PF Quad-port 1Gb Ethernet Network Adapter\n\t\t4c52 1039  LRES1039PT Quad-port 1Gb Ethernet Network Adapter\n\t1060  Ethernet Controller N10 Series for 1GbE or 10GbE (8-port)\n\t1080  Ethernet Controller N10 Series Virtual Function\n\t1081  Ethernet Controller N400 Series Virtual Function\n\t1083  Ethernet Controller N400 Series Virtual Function\n\t8308  Ethernet Controller N500 Series for 1GbE (Quad-port, Copper RJ45)\n# NIC-ETH3M0T-3S-4P Quad-Port RJ45 Adapter for OCP 3.0\n\t\t193d 1088  NIC-ETH3M0T-3S-4P\n\t\t4c52 1048  LRES1048PT Quad-port 1Gb Ethernet Network Adapter\n\t\t4c52 3044  LRES3044PT Quad-port 1Gb Ethernet Server Adapter for OCP\n\t8309  Ethernet Controller N500 Series Virtual Function\n\t8318  Ethernet Controller N500 Series for 1GbE (Dual-port, Copper RJ45)\n\t\t4c52 1049  LRES1049PT Dual-port 1Gb Ethernet Network Adapter\n\t\t4c52 3043  LRES3043PT Dual-port 1Gb Ethernet Server Adapter for OCP\n8866  T-Square Design Inc.\n8888  Silicon Magic\n\t8504  AVMatrix VC42 4-port HDMI Capture\n\t8581  AVMatrix VC12 4K HDMI Capture\n8912  TRX\n# 8c4a is not Winbond but there is a board misprogrammed\n8c4a  Winbond\n\t1980  W89C940 misprogrammed [ne2k]\n8e0e  Computone Corporation\n8e2e  KTI\n\t3000  ET32P2\n9000  C*Core Technology Co., Ltd.\n9004  Adaptec\n\t0078  AHA-2940U_CN\n\t1078  AIC-7810\n\t1160  AIC-1160 [Family Fibre Channel Adapter]\n\t2178  AIC-7821\n\t3860  AHA-2930CU\n\t3b78  AHA-4844W/4844UW\n\t5075  AIC-755x\n\t5078  AIC-7850T/7856T [AVA-2902/4/6 / AHA-2910]\n\t\t9004 7850  AIC-7850T/7856T [AVA-290x / AHA-2910]\n\t5175  AIC-755x\n\t5178  AIC-7851\n\t5275  AIC-755x\n\t5278  AIC-7852\n\t5375  AIC-755x\n\t5378  AIC-7850\n\t5475  AIC-755x\n\t5478  AIC-7850\n\t5575  AVA-2930\n\t5578  AIC-7855\n\t5647  ANA-7711 TCP Offload Engine\n\t\t9004 7710  ANA-7711F TCP Offload Engine - Optical\n\t\t9004 7711  ANA-7711LP TCP Offload Engine - Copper\n\t5675  AIC-755x\n\t5678  AIC-7856\n\t5775  AIC-755x\n\t5778  AIC-7850\n\t5800  AIC-5800\n\t5900  ANA-5910/5930/5940 ATM155 & 25 LAN Adapter\n\t5905  ANA-5910A/5930A/5940A ATM Adapter\n\t6038  AIC-3860\n\t6075  AIC-1480 / APA-1480\n\t\t9004 7560  AIC-1480 / APA-1480 Cardbus\n\t6078  AIC-7860\n\t6178  AIC-7861\n\t\t9004 7861  AHA-2940AU Single\n\t6278  AIC-7860\n\t6378  AIC-7860\n\t6478  AIC-786x\n\t6578  AIC-786x\n\t6678  AIC-786x\n\t6778  AIC-786x\n\t6915  ANA620xx/ANA69011A\n\t\t9004 0008  ANA69011A/TX 10/100\n\t\t9004 0009  ANA69011A/TX 10/100\n\t\t9004 0010  ANA62022 2-port 10/100\n\t\t9004 0018  ANA62044 4-port 10/100\n\t\t9004 0019  ANA62044 4-port 10/100\n\t\t9004 0020  ANA62022 2-port 10/100\n\t\t9004 0028  ANA69011A/TX 10/100\n\t\t9004 8008  ANA69011A/TX 64 bit 10/100\n\t\t9004 8009  ANA69011A/TX 64 bit 10/100\n\t\t9004 8010  ANA62022 2-port 64 bit 10/100\n\t\t9004 8018  ANA62044 4-port 64 bit 10/100\n\t\t9004 8019  ANA62044 4-port 64 bit 10/100\n\t\t9004 8020  ANA62022 2-port 64 bit 10/100\n\t\t9004 8028  ANA69011A/TX 64 bit 10/100\n\t7078  AHA-294x / AIC-7870\n\t7178  AIC-7870P/7871 [AHA-2940/W/S76]\n\t7278  AHA-3940/3940W / AIC-7872\n\t7378  AHA-3985 / AIC-7873\n\t7478  AHA-2944/2944W / AIC-7874\n\t7578  AHA-3944/3944W / AIC-7875\n\t7678  AHA-4944W/UW / AIC-7876\n\t7710  ANA-7711F Network Accelerator Card (NAC) - Optical\n\t7711  ANA-7711C Network Accelerator Card (NAC) - Copper\n\t7778  AIC-787x\n\t7810  AIC-7810\n\t7815  AIC-7815 RAID+Memory Controller IC\n\t\t9004 7815  ARO-1130U2 RAID Controller\n\t\t9004 7840  AIC-7815 RAID+Memory Controller IC\n\t7850  AIC-7850\n\t7855  AHA-2930\n\t7860  AIC-7860\n\t7870  AIC-7870\n\t7871  AHA-2940\n\t7872  AHA-3940\n\t7873  AHA-3980\n\t7874  AHA-2944\n\t7880  AIC-7880P\n\t7890  AIC-7890\n\t7891  AIC-789x\n\t7892  AIC-789x\n\t7893  AIC-789x\n\t7894  AIC-789x\n\t7895  AHA-2940U/UW / AHA-39xx / AIC-7895\n\t\t9004 7890  AHA-2940U/2940UW Dual AHA-394xAU/AUW/AUWD AIC-7895B\n\t\t9004 7891  AHA-2940U/2940UW Dual\n\t\t9004 7892  AHA-3940AU/AUW/AUWD/UWD\n\t\t9004 7894  AHA-3944AUWD\n\t\t9004 7895  AHA-2940U/2940UW Dual AHA-394xAU/AUW/AUWD AIC-7895B\n\t\t9004 7896  AHA-2940U/2940UW Dual AHA-394xAU/AUW/AUWD AIC-7895B\n\t\t9004 7897  AHA-2940U/2940UW Dual AHA-394xAU/AUW/AUWD AIC-7895B\n\t7896  AIC-789x\n\t7897  AIC-789x\n\t8078  AIC-7880U\n\t\t9004 7880  AIC-7880P Ultra/Ultra Wide SCSI Chipset\n\t8178  AIC-7870P/7881U [AHA-2940U/UW/D/S76]\n\t\t9004 7881  AHA-2940UW SCSI Host Adapter\n\t8278  AHA-3940U/UW/UWD / AIC-7882U\n\t8378  AHA-3940U/UW / AIC-7883U\n\t8478  AHA-2944UW / AIC-7884U\n\t8578  AHA-3944U/UWD / AIC-7885\n\t8678  AHA-4944UW / AIC-7886\n\t8778  AHA-2940UW Pro / AIC-788x\n\t\t9004 7887  2940UW Pro Ultra-Wide SCSI Controller\n\t8878  AHA-2930UW / AIC-7888\n\t\t9004 7888  AHA-2930UW SCSI Controller\n\t8b78  ABA-1030\n\tec78  AHA-4944W/UW\n# Acquired by Microchip Technology\n9005  Adaptec\n\t0010  AHA-2940U2/U2W\n\t\t9005 2180  AHA-2940U2 SCSI Controller\n\t\t9005 8100  AHA-2940U2B SCSI Controller\n\t\t9005 a100  AHA-2940U2B SCSI Controller\n\t\t9005 a180  AIC-3860Q [AHA-2940U2W/GE] SCSI Controller\n\t\t9005 e100  AHA-2950U2B SCSI Controller\n\t0011  AHA-2930U2\n\t0013  78902\n\t\t9005 0003  AAA-131U2 Array1000 1 Channel RAID Controller\n\t\t9005 000f  AIC7890_ARO\n\t001f  AHA-2940U2/U2W / 7890/7891\n\t\t9005 000f  2940U2W SCSI Controller\n\t\t9005 a180  2940U2W SCSI Controller\n\t0020  AIC-7890\n\t002f  AIC-7890\n\t0030  AIC-7890\n\t003f  AIC-7890\n\t0050  AHA-3940U2x/395U2x\n\t\t9005 f500  AHA-3950U2B\n\t\t9005 ffff  AHA-3950U2B\n\t0051  AHA-3950U2D\n\t\t9005 b500  AHA-3950U2D\n\t0053  AIC-7896 SCSI Controller\n\t\t9005 ffff  AIC-7896 SCSI Controller mainboard implementation\n\t005f  AIC-7896U2/7897U2\n\t0080  AIC-7892A U160/m\n\t\t0e11 e2a0  Compaq 64-Bit/66MHz Wide Ultra3 SCSI Adapter\n\t\t9005 6220  AHA-29160C\n\t\t9005 62a0  29160N Ultra160 SCSI Controller\n\t\t9005 e220  29160LP Low Profile Ultra160 SCSI Controller\n\t\t9005 e2a0  29160 Ultra160 SCSI Controller\n\t0081  AIC-7892B U160/m\n\t\t9005 62a1  19160 Ultra160 SCSI Controller\n\t0083  AIC-7892D U160/m\n\t008f  AIC-7892P U160/m\n\t\t1179 0001  Magnia Z310\n\t\t15d9 9005  Onboard SCSI Host Adapter\n\t0092  AVC-2010 [VideoH!]\n\t0093  AVC-2410 [VideoH!]\n\t00c0  AHA-3960D / AIC-7899A U160/m\n\t\t0e11 f620  Compaq 64-Bit/66MHz Dual Channel Wide Ultra3 SCSI Adapter\n\t\t9005 f620  AHA-3960D U160/m\n\t00c1  AIC-7899B U160/m\n\t00c3  AIC-7899D U160/m\n\t00c5  RAID subsystem HBA\n\t\t1028 00c5  PowerEdge 2400,2500,2550,4400\n\t00cf  AIC-7899P U160/m\n\t\t1028 00ce  PowerEdge 1400\n\t\t1028 00d1  PowerEdge 2550\n\t\t1028 00d9  PowerEdge 2500\n\t\t10f1 2462  Thunder K7 S2462\n\t\t15d9 9005  Onboard SCSI Host Adapter\n\t\t8086 3411  SDS2 Mainboard\n\t0241  Serial ATA II RAID 1420SA\n\t0242  Serial ATA II RAID 1220SA\n\t0243  Serial ATA II RAID 1430SA\n\t0244  eSATA II RAID 1225SA\n\t0250  ServeRAID Controller\n\t\t1014 0279  ServeRAID 6M\n\t\t1014 028c  ServeRAID 6i/6i+\n\t\t1014 028e  ServeRAID 7k\n\t0279  ServeRAID 6M\n\t0283  AAC-RAID\n\t\t9005 0283  Catapult\n\t0284  AAC-RAID\n\t\t9005 0284  Tomcat\n\t0285  AAC-RAID\n\t\t0e11 0295  SATA 6Ch (Bearcat)\n\t\t1014 02f2  ServeRAID 8i\n\t\t1028 0287  PowerEdge Expandable RAID Controller 320/DC\n\t\t1028 0291  CERC SATA RAID 2 PCI SATA 6ch (DellCorsair)\n\t\t103c 3227  AAR-2610SA\n\t\t108e 0286  Sun StorageTek SAS RAID HBA, Internal\n\t\t108e 0287  STK RAID EXT\n\t\t108e 7aac  STK RAID REM\n\t\t108e 7aae  STK RAID EX\n\t\t15d9 02b5  SMC AOC-USAS-S4i\n\t\t15d9 02b6  SMC AOC-USAS-S8i\n\t\t15d9 02c9  SMC AOC-USAS-S4iR\n\t\t15d9 02ca  SMC AOC-USAS-S8iR\n\t\t15d9 02d2  SMC AOC-USAS-S8i-LP\n\t\t15d9 02d3  SMC AOC-USAS-S8iR-LP\n\t\t17aa 0286  Legend S220 (Legend Crusader)\n\t\t17aa 0287  Legend S230 (Legend Vulcan)\n\t\t9005 0285  2200S (Vulcan)\n\t\t9005 0286  2120S (Crusader)\n\t\t9005 0287  2200S (Vulcan-2m)\n\t\t9005 0288  3230S (Harrier)\n\t\t9005 0289  3240S (Tornado)\n# Some early versions reported 2020S\n\t\t9005 028a  ASR-2020ZCR\n# Some early versions reported 2025S\n\t\t9005 028b  ASR-2025ZCR (Terminator)\n\t\t9005 028e  ASR-2020SA (Skyhawk)\n\t\t9005 028f  ASR-2025SA\n\t\t9005 0290  AAR-2410SA PCI SATA 4ch (Jaguar II)\n\t\t9005 0292  AAR-2810SA PCI SATA 8ch (Corsair-8)\n\t\t9005 0293  AAR-21610SA PCI SATA 16ch (Corsair-16)\n\t\t9005 0294  ESD SO-DIMM PCI-X SATA ZCR (Prowler)\n\t\t9005 0296  ASR-2240S\n\t\t9005 0297  ASR-4005SAS\n\t\t9005 0298  ASR-4000\n\t\t9005 0299  ASR-4800SAS\n\t\t9005 029a  4805SAS\n\t\t9005 02a4  ICP ICP9085LI\n\t\t9005 02a5  ICP ICP5085BR\n\t\t9005 02b5  ASR5800\n\t\t9005 02b6  ASR5805\n\t\t9005 02b7  ASR5808\n\t\t9005 02b8  ICP5445SL\n\t\t9005 02b9  ICP5085SL\n\t\t9005 02ba  ICP5805SL\n\t\t9005 02bb  3405\n\t\t9005 02bc  3805\n\t\t9005 02bd  31205\n\t\t9005 02be  31605\n\t\t9005 02bf  ICP ICP5045BL\n\t\t9005 02c0  ICP ICP5085BL\n\t\t9005 02c1  ICP ICP5125BR\n\t\t9005 02c2  ICP ICP5165BR\n\t\t9005 02c3  51205\n\t\t9005 02c4  51605\n\t\t9005 02c5  ICP ICP5125SL\n\t\t9005 02c6  ICP ICP5165SL\n\t\t9005 02c7  3085\n\t\t9005 02c8  ICP5805BL\n\t\t9005 02ce  51245\n\t\t9005 02cf  51645\n\t\t9005 02d0  52445\n\t\t9005 02d1  5405\n\t\t9005 02d4  ASR-2045\n\t\t9005 02d5  ASR-2405\n\t\t9005 02d6  ASR-2445\n\t\t9005 02d7  ASR-2805\n\t\t9005 02d8  5405G\n\t\t9005 02d9  5445G\n\t\t9005 02da  5805G\n\t\t9005 02db  5085G\n\t\t9005 02dc  51245G\n\t\t9005 02dd  51645G\n\t\t9005 02de  52445G\n\t\t9005 02df  ASR-2045G\n\t\t9005 02e0  ASR-2405G\n\t\t9005 02e1  ASR-2445G\n\t\t9005 02e2  ASR-2805G\n\t0286  AAC-RAID (Rocket)\n\t\t1014 034d  8s\n\t\t1014 9540  ServeRAID 8k/8k-l4\n\t\t1014 9580  ServeRAID 8k/8k-l8\n\t\t9005 028c  ASR-2230S + ASR-2230SLP PCI-X (Lancer)\n\t\t9005 028d  ASR-2130S\n\t\t9005 029b  ASR-2820SA\n\t\t9005 029c  ASR-2620SA\n\t\t9005 029d  ASR-2420SA\n\t\t9005 029e  ICP ICP9024R0\n\t\t9005 029f  ICP ICP9014R0\n\t\t9005 02a0  ICP ICP9047MA\n\t\t9005 02a1  ICP ICP9087MA\n\t\t9005 02a2  3800\n\t\t9005 02a3  ICP ICP5445AU\n\t\t9005 02a4  ICP ICP9085LI\n\t\t9005 02a5  ICP ICP5085BR\n\t\t9005 02a6  ICP9067MA\n\t\t9005 02a7  3805\n\t\t9005 02a8  3400\n\t\t9005 02a9  ICP ICP5085AU\n\t\t9005 02aa  ICP ICP5045AU\n\t\t9005 02ac  1800\n\t\t9005 02b3  2400\n\t\t9005 02b4  ICP ICP5045AL\n\t\t9005 0800  Callisto\n\t028b  Series 6 - 6G SAS/PCIe 2\n\t\t9005 0200  Series 6 Entry Level - ASR-6405E - 4 internal 6G SAS ports\n\t\t9005 0201  Series 6 Entry Level - ASR-6805E - 8 internal 6G SAS ports\n\t\t9005 0300  Series 6 - ASR-6405 - 4 internal 6G SAS ports\n\t\t9005 0301  Series 6 - ASR-6805 - 8 internal 6G SAS ports\n\t\t9005 0302  Series 6 - ASR-6445 - 4 internal and 4 external 6G SAS ports\n\t\t9005 0310  Series 6 Connectors on Top - ASR-6405T - 4 internal 6G SAS ports\n\t\t9005 0311  Series 6 Connectors on Top - ASR-6805T - 8 internal 6G SAS\n\t\t9005 0400  Series 6 - ASR-61205 - 12 internal 6G SAS ports\n\t\t9005 0401  Series 6 - ASR-61605 - 16 internal 6G SAS ports\n\t\t9005 0403  Series 6 - ASR-62405 - 24 internal 6G SAS ports\n\t028c  Series 7 6G SAS/PCIe 3\n\t\t9005 0500  Series 7 - ASR-7805 - 8 internal 6G SAS Port/PCIe 3.0\n\t\t9005 0501  Series 7 - ASR-71605 - 16 internal 6G SAS Port/PCIe 3.0\n\t\t9005 0502  Series 7 - ASR-71685 - 16 internal 8 external 6G SAS Port/PCIe 3.0\n\t\t9005 0503  Series 7 - ASR-72405 - 24 internal 0 external 6G SAS Port/PCIe 3.0\n\t\t9005 0504  Series 7 - ASR-7885 - 8 internal 8 external 6G SAS Port/PCIe 3.0\n\t\t9005 0505  Series 7 Entry Level - ASR-71685E - 16 internal 8 external 6G SAS Port/PCIe 3.0\n\t\t9005 0506  Series 7 Entry Level - ASR-72405E - 24 internal 0 external 6G SAS Port/PCIe 3.0\n\t028d  Series 8 12G SAS/PCIe 3\n\t\t9005 0550  Series 8 - ASR-82405 - 24 internal 0 external 12G SAS Port/PCIe 3.0\n\t\t9005 0551  Series 8 - ASR-81605 - 16 internal 0 external 12G SAS Port/PCIe 3.0\n\t\t9005 0552  Series 8 - ASR-8805 - 8 internal 0 external 12G SAS Port/PCIe 3.0\n\t\t9005 0553  Series 8 - ASR-8085 - 0 internal 8 external 12G SAS Port/PCIe 3.0\n\t\t9005 0554  Series 8 - ASR-8885 - 8 internal 8 external 12G SAS Port/PCIe 3.0\n\t028f  Smart Storage PQI SAS\n\t\t103c 0600  Smart Array P408i-p SR Gen10\n\t\t103c 0601  Smart Array P408e-p SR Gen10\n\t\t103c 0602  Smart Array P408i-a SR Gen10\n\t\t103c 0603  Smart Array P408i-c SR Gen10\n\t\t103c 0650  Smart Array E208i-p SR Gen10\n\t\t103c 0651  Smart Array E208e-p SR Gen10\n\t\t103c 0652  Smart Array E208i-c SR Gen10\n\t\t103c 0654  Smart Array E208i-a SR Gen10\n\t\t103c 0655  Smart Array P408e-m SR Gen10\n\t\t103c 0700  Smart Array P204i-c SR Gen10\n\t\t103c 0701  Smart Array P204i-b SR Gen10\n\t\t103c 1100  Smart Array P816i-a SR Gen10\n\t\t103c 1101  Smart Array P416ie-m SR G10\n\t\t105b 1211  HBA 8238-16i\n\t\t105b 1321  HBA 8242-24i\n\t\t1137 02f8  24G TriMode M1 RAID 4GB FBWC 32D\n\t\t1137 02f9  24G TriMode M1 RAID 4GB FBWC 16D\n\t\t1137 02fa  24G TriMode M1 HBA 16D\n\t\t13fe 8312  SKY-9200 MIC-8312BridgeB\n\t\t152d 8a22  QS-8204-8i\n\t\t152d 8a23  QS-8238-16i\n\t\t152d 8a24  QS-8236-16i\n\t\t152d 8a36  QS-8240-24i\n\t\t152d 8a37  QS-8242-24i\n\t\t1590 0294  SR932i-p Gen10+\n\t\t1590 02dc  SR416i-a Gen10+\n\t\t193d 1104  RAID P2404-Mf-4i-2GB\n\t\t193d 1105  RAID P4408-Mf-8i-2GB\n\t\t193d 1106  RAID P2404-Mf-4i-1GB\n\t\t193d 1107  RAID P4408-Mf-8i-4GB\n\t\t193d 8460  HBA H460-M1\n\t\t193d 8461  HBA H460-B1\n\t\t193d c460  RAID P460-M2\n\t\t193d c461  RAID P460-B2\n\t\t193d f460  RAID P460-M4\n\t\t193d f461  RAID P460-B4\n\t\t19e5 d227  SmartROC-HD SR465C-M 4G\n\t\t19e5 d228  SmartROC SR455C-M 2G\n\t\t19e5 d229  SmartIOC SR155-M\n\t\t19e5 d22a  SmartIOC-HD SR765-M\n\t\t19e5 d22b  SmartROC-e SR455C-ME 4G\n\t\t19e5 d22c  SmartROC SR455C-M 4G\n\t\t1bd4 0045  SMART-HBA 8242-24i\n\t\t1bd4 0046  RAID 8236-16i\n\t\t1bd4 0047  RAID 8240-24i\n\t\t1bd4 0048  SMART-HBA 8238-16i\n\t\t1bd4 004a  PM8222-SHBA\n\t\t1bd4 004b  RAID PM8204-2GB\n\t\t1bd4 004c  RAID PM8204-4GB\n\t\t1bd4 004f  PM8222-HBA\n\t\t1bd4 006b  RS0800M5H24I\n\t\t1bd4 006c  RS0800M5E8i\n\t\t1bd4 006d  RS0800M5H8i\n\t\t1bd4 006f  RS0804M5R16i\n\t\t1bd4 0070  RS0800M5E24i\n\t\t1bd4 0071  RS0800M5H16i\n\t\t1bd4 0072  RS0800M5E16i\n\t\t1bd4 0077  RS0800M5E16iM\n\t\t1bd4 0078  RS0800M5E24iM\n\t\t1bd4 0079  RS0800M5H24iM\n\t\t1bd4 0080  RS0804M5R16iM\n\t\t1bd4 0086  RT0800M7E\n\t\t1bd4 0087  RT0800M7H\n\t\t1bd4 0088  RT0804M7R\n\t\t1bd4 0089  RT0808M7R\n\t\t1cc4 0101  Ramaxel FBGF-RAD PM8204\n\t\t1cc4 0201  Ramaxel FBGF-RAD PM8222\n\t\t1d49 0220  ThinkSystem 4350-8i SAS/SATA 12Gb HBA\n\t\t1d49 0221  ThinkSystem 4350-16i SAS/SATA 12Gb HBA\n\t\t1d49 0520  ThinkSystem RAID 5350-8i PCIe 12Gb Adapter\n\t\t1d49 0522  ThinkSystem RAID 5350-8i PCIe 12Gb Internal Adapter\n\t\t1d49 0620  ThinkSystem RAID 9350-8i 2GB Flash PCIe 12Gb Adapter\n\t\t1d49 0621  ThinkSystem RAID 9350-8i 2GB Flash PCIe 12Gb Internal Adapter\n\t\t1d49 0622  ThinkSystem RAID 9350-16i 4GB Flash PCIe 12Gb Adapter\n\t\t1d49 0623  ThinkSystem RAID 9350-16i 4GB Flash PCIe 12Gb Internal Adapter\n\t\t1f3f 0610  3S610-8i, SAS/SATA 12Gb HBA\n\t\t207d 4140  TrustRAID D3152s-8i\n\t\t207d 4240  TrustRAID D3154s-8i\n\t\t9005 0608  SmartRAID 3162-8i /e\n\t\t9005 0800  SmartRAID 3154-8i\n\t\t9005 0801  SmartRAID 3152-8i\n\t\t9005 0802  SmartRAID 3151-4i\n\t\t9005 0803  SmartRAID 3101-4i\n\t\t9005 0804  SmartRAID 3154-8e\n\t\t9005 0805  SmartRAID 3102-8i\n\t\t9005 0806  SmartRAID 3100\n\t\t9005 0807  SmartRAID 3162-8i\n\t\t9005 0808  SmartRAID 3101E-4i\n\t\t9005 0809  SmartRAID 3102E-8i\n\t\t9005 0900  SmartHBA 2100-8i\n\t\t9005 0901  SmartHBA 2100-4i\n\t\t9005 0902  HBA 1100-8i\n\t\t9005 0903  HBA 1100-4i\n\t\t9005 0904  SmartHBA 2100-8e\n\t\t9005 0905  HBA 1100-8e\n\t\t9005 0906  SmartHBA 2100-4i4e\n\t\t9005 0907  HBA 1100\n\t\t9005 0908  SmartHBA 2100\n\t\t9005 090a  SmartHBA 2100A-8i\n\t\t9005 1200  SmartRAID 3154-24i\n\t\t9005 1201  SmartRAID 3154-8i16e\n\t\t9005 1202  SmartRAID 3154-8i8e\n\t\t9005 1280  HBA 1100-16i\n\t\t9005 1281  HBA 1100-16e\n\t\t9005 1282  SmartHBA 2100-16i\n\t\t9005 1300  HBA 1100-8i8e\n\t\t9005 1301  HBA 1100-24i\n\t\t9005 1302  SmartHBA 2100-8i8e\n\t\t9005 1303  SmartHBA 2100-24i\n\t\t9005 1380  SmartRAID 3154-16i\n\t\t9005 1400  SmartRAID Ultra 3258p-16i /e\n\t\t9005 1402  HBA Ultra 1200p-16i\n\t\t9005 1410  HBA Ultra 1200-16e\n\t\t9005 1430  SmartRAID Ultra 3254-16e /e\n\t\t9005 1441  HBA Ultra 1200p-32i\n\t\t9005 1450  SmartRAID Ultra 3258p-32i /e\n\t\t9005 1462  HBA 1200-8i\n\t\t9005 1471  SmartRAID 3254-16i /e\n\t\t9005 1472  SmartRAID 3258-16i /e\n\t\t9005 1475  SmartRAID 3254-16e /e\n\t\t9005 14a0  SmartRAID 3254-8i\n\t\t9005 14a1  SmartRAID 3204-8i\n\t\t9005 14a2  SmartRAID 3252-8i\n\t\t9005 14a4  SmartRAID 3254-8i /e\n\t\t9005 14a5  SmartRAID 3252-8i /e\n\t\t9005 14a6  SmartRAID 3204-8i /e\n\t\t9005 14c0  SmartHBA 2200-16i\n\t\t9005 14c1  HBA 1200-16i\n\t\t9005 14c3  HBA 1200-16e\n\t\t9005 14c4  HBA 1200-8e\n\t0410  AIC-9410W SAS (Razor HBA RAID)\n\t\t9005 0410  ASC-48300(Spirit RAID)\n\t\t9005 0411  ASC-58300 (Oakmont RAID)\n\t0412  AIC-9410W SAS (Razor HBA non-RAID)\n\t\t9005 0412  ASC-48300 (Spirit non-RAID)\n\t\t9005 0413  ASC-58300 (Oakmont non-RAID)\n\t0415  ASC-58300 SAS (Razor-External HBA RAID)\n\t0416  ASC-58300 SAS (Razor-External HBA non-RAID)\n\t041e  AIC-9410W SAS (Razor ASIC non-RAID)\n\t041f  AIC-9410W SAS (Razor ASIC RAID)\n\t\t9005 041f  AIC-9410W SAS (Razor ASIC RAID)\n\t042f  VSC7250/7251 SAS (Aurora ASIC non-RAID)\n\t0430  AIC-9405W SAS (Razor-Lite HBA RAID)\n\t\t9005 0430  ASC-44300 (Spirit-Lite RAID)\n\t0432  AIC-9405W SAS (Razor-Lite HBA non-RAID)\n\t\t9005 0432  ASC-44300 (Spirit-Lite non-RAID)\n\t043e  AIC-9405W SAS (Razor-Lite ASIC non-RAID)\n\t043f  AIC-9405W SAS (Razor-Lite ASIC RAID)\n\t0450  ASC-1405 Unified Serial HBA\n\t0500  Obsidian chipset SCSI controller\n\t\t1014 02c1  PCI-X DDR 3Gb SAS Adapter (572A/572C)\n\t\t1014 02c2  PCI-X DDR 3Gb SAS RAID Adapter (572B/572D)\n\t0503  Scamp chipset SCSI controller\n\t\t1014 02bf  Quad Channel PCI-X DDR U320 SCSI RAID Adapter (571E)\n\t\t1014 02c3  PCI-X DDR 3Gb SAS RAID Adapter (572F)\n\t\t1014 02d5  Quad Channel PCI-X DDR U320 SCSI RAID Adapter (571F)\n\t0910  AUA-3100B\n\t091e  AUA-3100B\n\t8000  ASC-29320A U320\n\t800f  AIC-7901 U320\n\t8010  ASC-39320 U320\n\t8011  ASC-39320D\n\t\t0e11 00ac  ASC-39320D U320\n\t\t9005 0041  ASC-39320D U320\n\t8012  ASC-29320 U320\n\t8013  ASC-29320B U320\n\t8014  ASC-29320LP U320\n\t8015  ASC-39320B U320\n\t8016  ASC-39320A U320\n\t8017  ASC-29320ALP U320\n\t\t9005 0044  ASC-29320ALP PCIx U320\n\t\t9005 0045  ASC-29320LPE PCIe U320\n\t801c  ASC-39320D U320\n\t801d  AIC-7902B U320\n\t\t1014 02cc  ServeRAID 7e\n\t801e  AIC-7901A U320\n\t801f  AIC-7902 U320\n\t\t1734 1011  PRIMERGY RX300 onboard SCSI\n\t8080  ASC-29320A U320 w/HostRAID\n\t8081  PMC-Sierra PM8001 SAS HBA [Series 6H]\n\t\t9005 0400  Adaptec SAS HBA 6405H\n\t\t9005 0800  Adaptec SAS HBA 6805H\n\t8088  PMC-Sierra PM8018 SAS HBA [Series 7H]\n\t\t9005 0008  Adaptec SAS HBA 7085H\n\t\t9005 0016  Adaptec SAS HBA 70165H\n\t\t9005 0800  Adaptec SAS HBA 7805H\n\t\t9005 1600  Adaptec SAS HBA 71605H\n\t8089  PMC-Sierra PM8019 SAS encryption HBA [Series 7He]\n\t808f  AIC-7901 U320 w/HostRAID\n\t\t1028 0168  Precision Workstation 670 Mainboard\n\t8090  ASC-39320 U320 w/HostRAID\n\t8091  ASC-39320D U320 w/HostRAID\n\t8092  ASC-29320 U320 w/HostRAID\n\t8093  ASC-29320B U320 w/HostRAID\n\t8094  ASC-29320LP U320 w/HostRAID\n\t8095  ASC-39320(B) U320 w/HostRAID\n\t8096  ASC-39320A U320 w/HostRAID\n\t8097  ASC-29320ALP U320 w/HostRAID\n\t809c  ASC-39320D(B) U320 w/HostRAID\n\t809d  AIC-7902(B) U320 w/HostRAID\n\t\t1014 02cc  ServeRAID 7e\n\t809e  AIC-7901A U320 w/HostRAID\n\t809f  AIC-7902 U320 w/HostRAID\n907f  Atronics\n\t2015  IDE-2015PL\n919a  Gigapixel Corp\n9412  Holtek\n\t6565  6565\n9413  Softlogic Co., Ltd.\n\t6010  SOLO6010 MPEG-4 Video encoder/decoder\n\t6110  SOLO6110 H.264 Video encoder/decoder\n9618  JusonTech Corporation\n\t0001  JusonTech Gigabit Ethernet Controller\n9699  Omni Media Technology Inc\n\t6565  6565\n# nee Netmos Technology\n9710  MosChip Semiconductor Technology Ltd.\n\t9250  PCI-to-PCI bridge [MCS9250]\n\t9805  PCI 1 port parallel adapter\n\t9815  PCI 9815 Multi-I/O Controller\n\t\t1000 0020  2P0S (2 port parallel adaptor)\n\t9820  PCI 9820 Multi-I/O Controller\n\t9835  PCI 9835 Multi-I/O Controller\n\t\t1000 0002  2S (16C550 UART)\n\t\t1000 0012  1P2S\n\t9845  PCI 9845 Multi-I/O Controller\n# Serial ports at BAR0-3\n\t\t1000 0004  0P4S (4 port 16550A serial card)\n\t\t1000 0006  0P6S (6 port 16550a serial card)\n# Serial ports at BAR0-3, Parallel port at BAR4\n\t\t1000 0014  1P4S (1 Parallel / 4 16550A Serial Port Adapter)\n\t9855  PCI 9855 Multi-I/O Controller\n# Parallel port at BAR0. Serial ports at BAR2-5\n\t\t1000 0014  1P4S\n# Parallel ports at BAR0,BAR2. Serial ports at BAR4-5\n\t\t1000 0022  2P2S (2 Parallel / 2 16550A Serial Port Adapter)\n\t9865  PCI 9865 Multi-I/O Controller\n\t9900  MCS9900 Multi-I/O Controller\n\t9901  PCIe 9901 Multi-I/O Controller\n\t9904  4-Port PCIe Serial Adapter\n# 2-port Serial 1-port Parallel Adaptor\n\t9912  PCIe 9912 Multi-I/O Controller\n\t9922  MCS9922 PCIe Multi-I/O Controller\n\t9990  MCS9990 PCIe to 4-Port USB 2.0 Host Controller\n# Subsystem ID on a 3c985B-SX network card\n9850  3Com (wrong ID)\n9902  Stargen Inc.\n\t0001  SG2010 PCI over Starfabric Bridge\n\t0002  SG2010 PCI to Starfabric Gateway\n\t0003  SG1010 Starfabric Switch and PCI Bridge\n9999  MetaX Integrated Circuits (Shanghai) Co., Ltd.\n9a11  Tiger Lake-H Gaussian & Neural Accelerator\n9d32  Beijing Starblaze Technology Co. Ltd.\n\t0000  STAR1000 PCIe NVMe SSD Controller\n\t1000  STAR1000 PCIe NVMe SSD Controller\n\t1001  STAR1000P PCIe NVMe SSD Controller\n\t1201  STAR1200C NVMe SSD\n\t1202  STAR1200I NVMe SSD\n\t1203  STAR1200L NVMe SSD\n\t1204  STAR1200E NVMe SSD\n\t1500  STAR1500 PCIe NVMe SSD Controller\n\t1501  STAR1500C NVMe SSD\n\t1502  STAR1500E NVMe SSD\n\t1504  STAR1500L NVMe SSD\n\t1505  STAR1500K NVMe SSD\n# NVMe Gen5 Controller 16ch\n\t1516  STAR1516 PCIe NVMe SSD Controller\n\t2000  STAR2000 NVMe Controller\n\t2001  STAR2000E NVMe SSD\n\t2002  STAR2000C NVMe SSD\n\t2003  STAR2000L NVMe SSD\n\t2004  EAST 2000K SSD\n\t2008  STAR2008 PCIE NVMe SSD Controller\n\t2010  STAR2010 PCIE NVMe Secure SSD Controller\n\tbb5b  Asgard AN3+ NVMe SSD\n\tfc22  Asgard AN3+ NVMe SSD\na000  Asix Electronics Corporation (Wrong ID)\na0a0  AOPEN Inc.\na0f1  UNISYS Corporation\na200  NEC Corporation\na259  Hewlett Packard\na25b  Hewlett Packard GmbH PL24-MKT\na304  Sony\na727  3Com Corporation\n\t0013  3CRPAG175 Wireless PC Card\n\t6803  3CRDAG675B Wireless 11a/b/g Adapter\naa00  iTuner\naa01  iTuner\naa02  iTuner\naa03  iTuner\naa04  iTuner\naa05  iTuner\naa06  iTuner\naa07  iTuner\naa08  iTuner\naa09  iTuner\naa0a  iTuner\naa0b  iTuner\naa0c  iTuner\naa0d  iTuner\naa0e  iTuner\naa0f  iTuner\naa42  Scitex Digital Video\naa55  Ncomputing X300 PCI-Engine\naaaa  Adnaco Technology Inc.\n\t0001  H1 PCIe over fiber optic host controller\n\t0002  R1BP1 PCIe over fiber optic expansion chassis\nabcd  Vadatech Inc.\nac1e  Digital Receiver Technology Inc\nac3d  Actuality Systems\nad00  Alta Data Technologies LLC\naecb  Adrienne Electronics Corporation\n\t6250  VITC/LTC Timecode Reader card [PCI-VLTC/RDR]\naffe  Sirrix AG security technologies\n\t01e1  PCI1E1 1-port ISDN E1 interface\n\t02e1  PCI2E1 2-port ISDN E1 interface\n\t450e  PCI4S0EC 4-port ISDN S0 interface\n\tdead  Sirrix.PCI4S0 4-port ISDN S0 interface\nb100  OpenVox Communication Co. Ltd.\n# Not registered officially\nb10b  Uakron PCI Project\nb1b3  Shiva Europe Limited\nb1d9  ATCOM Technology co., LTD.\nb390  TD3-X3+\n# Pinnacle should be 11bd, but they got it wrong several times --mj\nbd11  Pinnacle Systems, Inc. (Wrong ID)\nbdbd  Blackmagic Design\n\ta106  Multibridge Extreme\n\ta117  Intensity Pro\n\ta11a  DeckLink HD Extreme 2\n\ta11b  DeckLink SDI/Duo/Quad\n\ta11c  DeckLink HD Extreme 3\n\ta11d  DeckLink Studio\n\ta11e  DeckLink Optical Fibre\n\ta120  Decklink Studio 2\n\ta121  DeckLink HD Extreme 3D/3D+\n\ta124  Intensity Extreme\n\ta126  Intensity Shuttle\n\ta127  UltraStudio Express\n\ta129  UltraStudio Mini Recorder\n\ta12a  UltraStudio Mini Monitor\n\ta12d  UltraStudio 4K\n\ta12e  DeckLink 4K Extreme\n\ta12f  DeckLink Mini Monitor\n\ta130  DeckLink Mini Recorder\n\ta132  UltraStudio 4K\n\ta136  DeckLink 4K Extreme 12G\n\ta137  DeckLink Studio 4K\n\ta138  Decklink SDI 4K\n\ta139  Intensity Pro 4K\n\ta13b  DeckLink Micro Recorder\n\ta13d  DeckLink 4K Pro\n\ta13e  UltraStudio 4K Extreme\n\ta13f  DeckLink Quad 2\n\ta140  DeckLink Duo 2\n\ta141  UltraStudio 4K Extreme 3\n\ta142  UltraStudio HD Mini\n\ta143  DeckLink Mini Recorder 4K\n\ta144  DeckLink Mini Monitor 4K\n\ta148  DeckLink SDI Micro\n\ta14b  DeckLink 8K Pro\n\ta14e  DeckLink Quad HDMI Recorder\n\ta1ff  eGPU RX580\nc001  TSI Telsys\nc0a9  Micron/Crucial Technology\n\t2263  P1 NVMe PCIe SSD[Frampton]\n\t5403  P1 NVMe PCIe SSD[Frampton2]\n\t5407  P5 Plus NVMe PCIe SSD\n\t540a  P2 [Nick P2] / P3 / P3 Plus NVMe PCIe SSD (DRAM-less)\n\t5412  P5 NVMe PCIe SSD[SlashP5]\n\t5415  T500 NVMe PCIe SSD\n\t5419  T700 NVMe PCIe SSD\n\t5420  P3 NVMe PCIe SSD (DRAM-less)\n\t5421  P3 Plus NVMe PCIe SSD (DRAM-less)\n\t5426  P310 NVMe PCIe SSD (DRAM-less)\n\t542b  T705 NVMe PCIe SSD\n\t560b  E100 NVMe PCIe SSD (DRAM-less)\nc0de  Motorola\nc0fe  Motion Engineering, Inc.\nca01  I-TEK OptoElectronics Co., LTD.\n\t0212  Vulcan-CL CameraLink Frame Grabber\nca02  I-TEK OptoElectronics Co., LTD.\n\t0213  Vulcan-CXP Frame Grabber\nca3b  Cambrionix Ltd.\nca50  Varian Australia Pty Ltd\ncace  CACE Technologies, Inc.\n\t0001  TurboCap Port A\n\t0002  TurboCap Port B\n\t0023  AirPcap N\ncaed  Canny Edge\n# nee Chrysalis-ITS\ncafe  Thales\n\t0003  Luna K3 Hardware Security Module\n\t0006  Luna PCI-e 3000 Hardware Security Module\n\t0007  Luna K6 Hardware Security Module\n\t0008  Luna K7 Hardware Security Module\ncc53  ScaleFlux Inc.\n\t0001  CSS 1000\n\t0010  CSD 3310\ncccc  Catapult Communications\nccec  Curtiss-Wright Controls Embedded Computing\ncddd  Tyzx, Inc.\n\t0101  DeepSea 1 High Speed Stereo Vision Frame Grabber\n\t0200  DeepSea 2 High Speed Stereo Vision Frame Grabber\ncdfa  NextSilicon Ltd\n\t0007  Maverick\nceba  KEBA AG\ncf86  Spectrum-4TOR\n\t0276  Spectrum-4TOR in Flash Recovery Mode\nd063  SolidRun\n\t1000  SolidNET DPU\n\t1500  Emulated NVMe\nd161  Digium, Inc.\n\t0120  Wildcard TE120P single-span T1/E1/J1 card\n\t0205  Wildcard TE205P/TE207P dual-span T1/E1/J1 card 5.0V\n\t0210  Wildcard TE210P/TE212P dual-span T1/E1/J1 card 3.3V\n\t0220  Wildcard TE220 dual-span T1/E1/J1 card 3.3V (PCI-Express)\n\t0405  Wildcard TE405P/TE407P quad-span T1/E1/J1 card 5.0V\n\t0410  Wildcard TE410P/TE412P quad-span T1/E1/J1 card 3.3V\n\t0420  Wildcard TE420P quad-span T1/E1/J1 card 3.3V (PCI-Express)\n\t0800  Wildcard TDM800P 8-port analog card\n\t1205  Wildcard TE205P/TE207P dual-span T1/E1/J1 card 5.0V (u1)\n\t1220  Wildcard TE220 dual-span T1/E1/J1 card 3.3V (PCI-Express) (5th gen)\n\t1405  Wildcard TE405P/TE407P quad-span T1/E1/J1 card 5.0V (u1)\n\t1410  Wildcard TE410P quad-span T1/E1/J1 card 3.3V (5th Gen)\n\t1420  Wildcard TE420 quad-span T1/E1/J1 card 3.3V (PCI-Express) (5th gen)\n\t1820  Wildcard TE820 octal-span T1/E1/J1 card 3.3V (PCI-Express)\n\t2400  Wildcard TDM2400P 24-port analog card\n\t3400  Wildcard TC400P transcoder base card\n\t8000  Wildcard TE121 single-span T1/E1/J1 card (PCI-Express)\n\t8001  Wildcard TE122 single-span T1/E1/J1 card\n\t8002  Wildcard AEX800 8-port analog card (PCI-Express)\n\t8003  Wildcard AEX2400 24-port analog card (PCI-Express)\n\t8004  Wildcard TCE400P transcoder base card\n\t8005  Wildcard TDM410 4-port analog card\n\t8006  Wildcard AEX410 4-port analog card (PCI-Express)\n\t8007  Hx8 Series 8-port Base Card\n\t8008  Hx8 Series 8-port Base Card (PCI-Express)\n\t800a  Wildcard TE133 single-span T1/E1/J1 card (PCI Express)\n\t800b  Wildcard TE134 single-span T1/E1/J1 card\n\t800c  Wildcard A8A 8-port analog card\n\t800d  Wildcard A8B 8-port analog card (PCI-Express)\n\t800e  Wildcard TE235/TE435 quad-span T1/E1/J1 card (PCI-Express)\n\t800f  Wildcard A4A 4-port analog card\n\t8010  Wildcard A4B 4-port analog card (PCI-Express)\n\t8013  Wildcard TE236/TE436 quad-span T1/E1/J1 card\n\tb410  Wildcard B410 quad-BRI card\nd209  Ultimarc\n\t1500  PAC Drive\n\t15a2  SpinTrak\n\t1601  AimTrak\nd20c  Chengdu BeiZhongWangXin Technology Co., Ltd.\n\t5011  NE5000 Ethernet Controller\n\t\td20c e120  N5 Series 2-port 10GbE Network Adapter\n\t\td20c e140  N5 Series 4-port 10GbE Network Adapter\n\t\td20c e220  N5 Series 2-port 25GbE Network Adapter\n\t\td20c e221  N5S Series 2-port 25GbE Network Adapter\n\t\td20c e22c  N5 Series 2-port 25GbE Network Adapter for OCP\n\t6011  NE6000 Ethernet Controller\n\t\td20c a001  N6S Series Network Adapter\n\t\td20c e221  N6S Series 2-port 25GbE Network Adapter\n\t\td20c e281  N6S Series 8-port 25GbE Network Adapter\n\t\td20c e421  N6S Series 2-port 40GbE Network Adapter\n\t\td20c ea21  N6S Series 2-port 100GbE Network Adapter\nd405  LeapIO\n\t8200  LeapHBA\n\t8201  LeapRAID\nd4d4  Dy4 Systems Inc\n\t0601  PCI Mezzanine Card\nd531  I+ME ACTIA GmbH\nd84d  Exsys\ndada  Datapath Limited\n\t0133  VisionRGB-X2\n\t0139  VisionRGB-E1\n\t0144  VisionSD8\n\t0150  VisionRGB-E2\n\t0151  VisionSD4+1\n\t0159  VisionAV\n\t0161  DGC161\n\t0165  DGC165\n\t0167  DGC167\n\t0168  DGC168\n\t1139  VisionRGB-E1S\n\t1150  VisionRGB-E2S\n\t1151  VisionSD4+1S\n\t1153  VisionDVI-DL\n\t1154  VisionSDI2\ndb10  Diablo Technologies\ndc93  Dawicontrol GmbH\ndcba  Dynamic Engineering\n\t0046  PCIe Altera Cyclone IV\n# VPX format Receiver Controller Board\n\t0047  VPX-RCB\n# PMC Format FPGA design with 8 high speed UART channels\n\t0048  PMC-Biserial-III-BAE9\n\t004e  PC104p-Biserial-III-NVY5\n\t004f  PC104p-Biserial-III-NVY6\n\t0052  PCIeBiSerialDb37 BA22 LVDS IO\n# 8 port 16550 compatible UART, PMC format, RS-232 IO, RTS, CTS, DTR, DSR supported\n\t0066  PMC-OctalUART-232\ndd01  Digital Devices GmbH\n\t0003  Octopus DVB Adapter\n\t\tdd01 0001  Octopus DVB adapter\n\t\tdd01 0002  Octopus LE DVB adapter\n\t\tdd01 0003  Octopus OEM\n\t\tdd01 0004  Octopus V3 DVB adapter\n\t\tdd01 0010  Octopus Mini\n\t\tdd01 0020  Cine S2 V6 DVB adapter\n\t\tdd01 0021  Cine S2 V6.5 DVB adapter\n\t\tdd01 0030  Cine CT V6.1 DVB adapter\n\t\tdd01 db03  Mystique SaTiX-S2 V3 DVB adapter\n\t0006  Cine V7\n\t0007  Max\n\t\tdd01 0023  Max S8 4/8\n\t0011  Octopus CI DVB Adapter\n\t\tdd01 0040  Octopus CI\n\t\tdd01 0041  Octopus CI Single\n\t0012  Octopus Duo CI\n\t0201  Resi DVB-C Modulator\n\t\tdd01 0001  Resi DVB-C Modulator\ndead  Indigita Corporation\ndeaf  Middle Digital Inc.\n\t9050  PC Weasel Virtual VGA\n\t9051  PC Weasel Serial Port\n\t9052  PC Weasel Watchdog Timer\n# formerly SoftHard Technology Ltd.\ndeda  XIMEA\n\t4001  CB or MX camera\n\t4021  MT camera\ne000  Winbond\n\te000  W89C940\ne159  Tiger Jet Network Inc. / ICP DAS\n\t0001  Tiger3XX Modem/ISDN interface\n\t\t0059 0001  128k ISDN-S/T Adapter\n\t\t0059 0003  128k ISDN-U Adapter\n\t\t00a7 0001  TELES.S0/PCI 2.x ISDN Adapter\n\t\t8086 0003  Digium X100P/X101P analogue PSTN FXO interface\n\t\tb100 0003  OpenVox A400P 4-port analog card\n\t\tb1d9 0003  AX400P 4-port analog card\n\t0002  Tiger100APC ISDN chipset\ne1c5  Elcus\ne4bf  EKF Elektronik GmbH\n\t0ccd  CCD-CALYPSO\n\t0cd1  CD1-OPERA\n\t0cd2  CD2-BEBOP\n\t0cd3  CD3-JIVE\n\t50c1  PC1-GROOVE\n\t50c2  PC2-LIMBO\n\t53c1  SC1-ALLEGRO\n\tcc47  CCG-RUMBA\n\tcc4d  CCM-BOOGIE\ne4e4  Xorcom\ne55e  Essence Technology, Inc.\nea01  Eagle Technology\n\t000a  PCI-773 Temperature Card\n\t0032  PCI-730 & PC104P-30 Card\n\t003e  PCI-762 Opto-Isolator Card\n\t0041  PCI-763 Reed Relay Card\n\t0043  PCI-769 Opto-Isolator Reed Relay Combo Card\n\t0046  PCI-766 Analog Output Card\n\t0052  PCI-703 Analog I/O Card\n\t0800  PCI-800 Digital I/O Card\nea50  Emerson Automation Solutions\n# The main chip of all these devices is by Xilinx -> It could also be a Xilinx ID.\nea60  RME\n\t9896  Digi32\n\t9897  Digi32 Pro\n\t9898  Digi32/8\neabb  Aashima Technology B.V.\neace  Endace Measurement Systems, Ltd\n\t3100  DAG 3.10 OC-3/OC-12\n\t3200  DAG 3.2x OC-3/OC-12\n\t320e  DAG 3.2E Fast Ethernet\n\t340e  DAG 3.4E Fast Ethernet\n\t341e  DAG 3.41E Fast Ethernet\n\t3500  DAG 3.5 OC-3/OC-12\n\t351c  DAG 3.5ECM Fast Ethernet\n\t360d  DAG 3.6D DS3\n\t360e  DAG 3.6E Fast Ethernet\n\t368e  DAG 3.6E Gig Ethernet\n\t3707  DAG 3.7T T1/E1/J1\n\t370d  DAG 3.7D DS3/E3\n\t378e  DAG 3.7G Gig Ethernet\n\t3800  DAG 3.8S OC-3/OC-12\n\t4100  DAG 4.10 OC-48\n\t4110  DAG 4.11 OC-48\n\t4220  DAG 4.2 OC-48\n\t422e  DAG 4.2GE Gig Ethernet\n\t4230  DAG 4.2S OC-48\n\t423e  DAG 4.2GE Gig Ethernet\n\t4300  DAG 4.3S OC-48\n\t430e  DAG 4.3GE Gig Ethernet\n\t452e  DAG 4.5G2 Gig Ethernet\n\t454e  DAG 4.5G4 Gig Ethernet\n\t45b8  DAG 4.5Z8 Gig Ethernet\n\t45be  DAG 4.5Z2 Gig Ethernet\n\t520e  DAG 5.2X 10G Ethernet\n\t521a  DAG 5.2SXA 10G Ethernet/OC-192\n\t5400  DAG 5.4S-12 OC-3/OC-12\n\t5401  DAG 5.4SG-48 Gig Ethernet/OC-3/OC-12/OC-48\n\t540a  DAG 5.4GA Gig Ethernet\n\t541a  DAG 5.4SA-12 OC-3/OC-12\n\t542a  DAG 5.4SGA-48 Gig Ethernet/OC-3/OC-12/OC-48\n\t6000  DAG 6.0SE 10G Ethernet/OC-192\n\t6100  DAG 6.1SE 10G Ethernet/OC-192\n\t6200  DAG 6.2SE 10G Ethernet/OC-192\n\t7100  DAG 7.1S OC-3/OC-12\n\t7400  DAG 7.4S OC-3/OC-12\n\t7401  DAG 7.4S48 OC-48\n\t752e  DAG 7.5G2 Gig Ethernet\n\t754e  DAG 7.5G4 Gig Ethernet\n\t8100  DAG 8.1X 10G Ethernet\n\t8101  DAG 8.1SX 10G Ethernet/OC-192\n\t8102  DAG 8.1X 10G Ethernet\n\t820e  DAG 8.2X 10G Ethernet\n\t820f  DAG 8.2X 10G Ethernet (2nd bus)\n\t8400  DAG 8.4I Infiniband x4 SDR\n\t8500  DAG 8.5I Infiniband x4 DDR\n\t9200  DAG 9.2SX2 10G Ethernet\n\t920e  DAG 9.2X2 10G Ethernet\n\t9540  DAG 9.5G4 Gig Ethernet\n\t954f  DAG 9.5G4F Gig Ethernet\n\ta120  DAG 10X2-P 10G Ethernet\n\ta12e  DAG 10X2-S 10G Ethernet\n\ta140  DAG 10X4-P 10/40G Ethernet\n\ta14e  DAG 10X4-S 10/40G Ethernet\n\teace  vDAG virtual device\nec80  Belkin Corporation\n\tec00  F5D6000\necc0  Echo Digital Audio Corporation\nedd8  ARK Logic Inc\n\ta091  1000PV [Stingray]\n\ta099  2000PV [Stingray]\n\ta0a1  2000MT\n\ta0a9  2000MI\nefab  Enfabrica\n# Found on M2N68-AM Motherboard\nf043  ASUSTeK Computer Inc. (Wrong ID)\nf05b  Foxconn International, Inc. (Wrong ID)\nf111  Framework Computer Inc.\nf117  Cerio\n\t00ff  Test Device\n\t1000  Emulated PCIe Switch\n\t1010  Placeholder Device\n\t1020  Pseudo-Device\n\t1030  Test Device\nf15e  SiFive, Inc.\n\t0000  FU740-C000 RISC-V SoC PCI Express x8 to AXI4 Bridge\nf1d0  AJA Video\n\tc0fe  Xena HS/HD-R\n\tc0ff  Kona/Xena 2\n\tcafe  Kona SD\n\tcfee  Xena LS/SD-22-DA/SD-DA\n\tdafe  Corvid 1\n\tdaff  KONA LHi\n\tdb00  IoExpress\n\tdb01  Corvid22\n\tdb02  Kona 3G\n\tdb03  Corvid 3G\n\tdb04  Kona 3G QUAD\n\tdb05  Kona LHe+\n\tdb06  IoXT\n\tdb07  Kona 3G P2P\n\tdb08  Kona 3G QUAD P2P\n\tdb09  Corvid 24\n\tdb11  T-Tap\n\tdcaf  Kona HD\n\tdfee  Xena HD-DA\n\teb07  Io4K\n\teb0a  Io4K UFC\n\teb0b  Kona 4\n\teb0c  Kona 4 UFC\n\teb0d  Corvid 88\n\teb0e  Corvid 44\n\teb16  Corvid HEVC\n\t\t10cf 1049  Corvid HEVC M31\n\teb18  Corvid HB-R\n\teb1a  Kona IP 1SFP\n\teb1c  Kona IP 2SFP\n\teb1d  Io4KPlus\n\teb1e  IoIP\n\teb1f  Kona 5\n\teb23  Kona 1\n\teb24  Kona HDMI\n\teb25  Corvid 44 12g\n\teb26  T-Tap Pro\n\teb27  IoX3\n\teb28  Kona XM\n\teb29  Kona X\n\teb30  Kona IP 25G\n\tefac  Xena SD-MM/SD-22-MM\n\tfacd  Xena HD-MM\nf5f5  F5 Networks, Inc.\n# Subsystem ID for PATA controller on nForce motherboard\nf849  ASRock Incorporation (Wrong ID)\nfa57  Interagon AS\n\t0001  PMC [Pattern Matching Chip]\nfab7  Fabric7 Systems, Inc.\nfe19  TenaFe, Inc.\n\t0001  TC2200/TC2201 NVMe Controller (DRAM-less)\nfebd  Ultraview Corp.\n# Nee Epigram\nfeda  Broadcom Inc\n\ta0fa  BCM4210 iLine10 HomePNA 2.0\n\ta10e  BCM4230 iLine10 HomePNA 2.0\nfede  Fedetec Inc.\n\t0003  TABIC PCI v3\nffe1  Suzhou XiongLi Technology Inc.\n\td200  XL82101/82102 PCI Express Gigabit Ethernet Controller\nfffd  XenSource, Inc.\n\t0101  PCI Event Channel Controller\n# Used in some old VMWare products before they got a real ID assigned\nfffe  VMWare Inc (temporary ID)\n\t0710  Virtual SVGA\nffff  Illegal Vendor ID\n\n\n# List of known device classes, subclasses and programming interfaces\n\n# Syntax:\n# C class\tclass_name\n#\tsubclass\tsubclass_name  \t\t<-- single tab\n#\t\tprog-if  prog-if_name  \t<-- two tabs\n\nC 00  Unclassified device\n\t00  Non-VGA unclassified device\n\t01  VGA compatible unclassified device\n\t05  Image coprocessor\nC 01  Mass storage controller\n\t00  SCSI storage controller\n\t01  IDE interface\n\t\t00  ISA Compatibility mode-only controller\n\t\t05  PCI native mode-only controller\n\t\t0a  ISA Compatibility mode controller, supports both channels switched to PCI native mode\n\t\t0f  PCI native mode controller, supports both channels switched to ISA compatibility mode\n\t\t80  ISA Compatibility mode-only controller, supports bus mastering\n\t\t85  PCI native mode-only controller, supports bus mastering\n\t\t8a  ISA Compatibility mode controller, supports both channels switched to PCI native mode, supports bus mastering\n\t\t8f  PCI native mode controller, supports both channels switched to ISA compatibility mode, supports bus mastering\n\t02  Floppy disk controller\n\t03  IPI bus controller\n\t04  RAID bus controller\n\t05  ATA controller\n\t\t20  ADMA single stepping\n\t\t30  ADMA continuous operation\n\t06  SATA controller\n\t\t00  Vendor specific\n\t\t01  AHCI 1.0\n\t\t02  Serial Storage Bus\n\t07  Serial Attached SCSI controller\n\t\t01  Serial Storage Bus\n\t08  Non-Volatile memory controller\n\t\t01  NVMHCI\n\t\t02  NVM Express\n\t09  Universal Flash Storage controller\n\t\t00  Vendor specific\n\t\t01  UFSHCI\n\t80  Mass storage controller\nC 02  Network controller\n\t00  Ethernet controller\n\t01  Token ring network controller\n\t02  FDDI network controller\n\t03  ATM network controller\n\t04  ISDN controller\n\t05  WorldFip controller\n\t06  PICMG controller\n\t07  Infiniband controller\n\t08  Fabric controller\n\t80  Network controller\nC 03  Display controller\n\t00  VGA compatible controller\n\t\t00  VGA controller\n\t\t01  8514 controller\n\t01  XGA compatible controller\n\t02  3D controller\n\t80  Display controller\nC 04  Multimedia controller\n\t00  Multimedia video controller\n\t01  Multimedia audio controller\n\t02  Computer telephony device\n\t03  Audio device\n\t80  Multimedia controller\nC 05  Memory controller\n\t00  RAM memory\n\t01  FLASH memory\n\t02  CXL\n\t\t00  CXL Memory Device - vendor specific\n\t\t10  CXL Memory Device (CXL 2.x)\n\t80  Memory controller\nC 06  Bridge\n\t00  Host bridge\n\t01  ISA bridge\n\t02  EISA bridge\n\t03  MicroChannel bridge\n\t04  PCI bridge\n\t\t00  Normal decode\n\t\t01  Subtractive decode\n\t05  PCMCIA bridge\n\t06  NuBus bridge\n\t07  CardBus bridge\n\t08  RACEway bridge\n\t\t00  Transparent mode\n\t\t01  Endpoint mode\n\t09  Semi-transparent PCI-to-PCI bridge\n\t\t40  Primary bus towards host CPU\n\t\t80  Secondary bus towards host CPU\n\t0a  InfiniBand to PCI host bridge\n\t80  Bridge\nC 07  Communication controller\n\t00  Serial controller\n\t\t00  8250\n\t\t01  16450\n\t\t02  16550\n\t\t03  16650\n\t\t04  16750\n\t\t05  16850\n\t\t06  16950\n\t01  Parallel controller\n\t\t00  SPP\n\t\t01  BiDir\n\t\t02  ECP\n\t\t03  IEEE1284\n\t\tfe  IEEE1284 Target\n\t02  Multiport serial controller\n\t03  Modem\n\t\t00  Generic\n\t\t01  Hayes/16450\n\t\t02  Hayes/16550\n\t\t03  Hayes/16650\n\t\t04  Hayes/16750\n\t04  GPIB controller\n\t05  Smard Card controller\n\t80  Communication controller\nC 08  Generic system peripheral\n\t00  PIC\n\t\t00  8259\n\t\t01  ISA PIC\n\t\t02  EISA PIC\n\t\t10  IO-APIC\n\t\t20  IO(X)-APIC\n\t01  DMA controller\n\t\t00  8237\n\t\t01  ISA DMA\n\t\t02  EISA DMA\n\t02  Timer\n\t\t00  8254\n\t\t01  ISA Timer\n\t\t02  EISA Timers\n\t\t03  HPET\n\t03  RTC\n\t\t00  Generic\n\t\t01  ISA RTC\n\t04  PCI Hot-plug controller\n\t05  SD Host controller\n\t06  IOMMU\n\t07  Root Complex Event Collector\n\t80  System peripheral\n\t99  Timing Card\n# PTP Grandmaster Source Clock\n\t\t01  TAP Timing Card\nC 09  Input device controller\n\t00  Keyboard controller\n\t01  Digitizer Pen\n\t02  Mouse controller\n\t03  Scanner controller\n\t04  Gameport controller\n\t\t00  Generic\n\t\t10  Extended\n\t80  Input device controller\nC 0a  Docking station\n\t00  Generic Docking Station\n\t80  Docking Station\nC 0b  Processor\n\t00  386\n\t01  486\n\t02  Pentium\n\t10  Alpha\n\t20  Power PC\n\t30  MIPS\n\t40  Co-processor\nC 0c  Serial bus controller\n\t00  FireWire (IEEE 1394)\n\t\t00  Generic\n\t\t10  OHCI\n\t01  ACCESS Bus\n\t02  SSA\n\t03  USB controller\n\t\t00  UHCI\n\t\t10  OHCI\n\t\t20  EHCI\n\t\t30  XHCI\n\t\t40  USB4 Host Interface\n\t\t80  Unspecified\n\t\tfe  USB Device\n\t04  Fibre Channel\n\t05  SMBus\n\t06  InfiniBand\n\t07  IPMI Interface\n\t\t00  SMIC\n\t\t01  KCS\n\t\t02  BT (Block Transfer)\n\t08  SERCOS interface\n\t09  CANBUS\n\t80  Serial bus controller\nC 0d  Wireless controller\n\t00  IRDA controller\n\t01  Consumer IR controller\n\t10  RF controller\n\t11  Bluetooth\n\t12  Broadband\n\t20  802.1a controller\n\t21  802.1b controller\n\t80  Wireless controller\nC 0e  Intelligent controller\n\t00  I2O\nC 0f  Satellite communications controller\n\t01  Satellite TV controller\n\t02  Satellite audio communication controller\n\t03  Satellite voice communication controller\n\t04  Satellite data communication controller\nC 10  Encryption controller\n\t00  Network and computing encryption device\n\t10  Entertainment encryption device\n\t80  Encryption controller\nC 11  Signal processing controller\n\t00  DPIO module\n\t01  Performance counters\n\t10  Communication synchronizer\n\t20  Signal processing management\n\t80  Signal processing controller\nC 12  Processing accelerators\n\t00  Processing accelerators\n\t01  SNIA Smart Data Accelerator Interface (SDXI) controller\nC 13  Non-Essential Instrumentation\nC 40  Coprocessor\nC ff  Unassigned class\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvlib/pkg/pciids/pciids.go",
    "content": "package pciids\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t_ \"embed\" // Fallback is the embedded pci.ids db file\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"strconv\"\n\t\"strings\"\n)\n\n// token what the Lexer retruns.\ntype token int\n\nconst (\n\t// ILLEGAL a token which the Lexer does not understand.\n\tILLEGAL token = iota\n\t// EOF end of file.\n\tEOF\n\t// WS whitespace.\n\tWS\n\t// NEWLINE '\\n'.\n\tNEWLINE\n\t// COMMENT '# something'.\n\tCOMMENT\n\t// VENDOR PCI vendor.\n\tVENDOR\n\t// SUBVENDOR PCI subvendor.\n\tSUBVENDOR\n\t// DEVICE PCI device.\n\tDEVICE\n\t// CLASS PCI class.\n\tCLASS\n\t// SUBCLASS PCI subclass.\n\tSUBCLASS\n\t// PROGIF PCI programming interface.\n\tPROGIF\n)\n\n// literal values from the Lexer.\ntype literal struct {\n\tID      string\n\tname    string\n\tSubName string\n}\n\n// scanner a lexical scanner.\ntype scanner struct {\n\tr        *bufio.Reader\n\tisVendor bool\n}\n\n// newScanner well a new scanner ...\nfunc newScanner(r io.Reader) *scanner {\n\treturn &scanner{r: bufio.NewReader(r)}\n}\n\n// Since the pci.ids is line base we're consuming a whole line rather then only\n// a single rune/char.\nfunc (s *scanner) readline() []byte {\n\tln, err := s.r.ReadBytes('\\n')\n\tif err == io.EOF {\n\t\treturn []byte{'E', 'O', 'F'}\n\t}\n\tif err != nil {\n\t\tfmt.Printf(\"ReadBytes failed with %v\", err)\n\t\treturn []byte{}\n\t}\n\treturn ln\n}\n\nfunc scanClass(line []byte) (token, literal) {\n\tclass := string(line[1:])\n\treturn CLASS, scanEntry([]byte(class), 2)\n}\n\nfunc scanSubVendor(line []byte) (token, literal) {\n\ttrim0 := strings.TrimSpace(string(line))\n\tsubv := string(trim0[:4])\n\ttrim1 := strings.TrimSpace(trim0[4:])\n\tsubd := string(trim1[:4])\n\tsubn := strings.TrimSpace(trim1[4:])\n\n\treturn SUBVENDOR, literal{subv, subd, subn}\n}\n\nfunc scanEntry(line []byte, offset uint) literal {\n\ttrim := strings.TrimSpace(string(line))\n\tid := string(trim[:offset])\n\tname := strings.TrimSpace(trim[offset:])\n\n\treturn literal{id, name, \"\"}\n}\n\nfunc isLeadingOneTab(ln []byte) bool  { return (ln[0] == '\\t') && (ln[1] != '\\t') }\nfunc isLeadingTwoTabs(ln []byte) bool { return (ln[0] == '\\t') && (ln[1] == '\\t') }\n\nfunc isHexDigit(ln []byte) bool  { return (ln[0] >= '0' && ln[0] <= '9') }\nfunc isHexLetter(ln []byte) bool { return (ln[0] >= 'a' && ln[0] <= 'f') }\n\nfunc isVendor(ln []byte) bool    { return isHexDigit(ln) || isHexLetter(ln) }\nfunc isEOF(ln []byte) bool       { return (ln[0] == 'E' && ln[1] == 'O' && ln[2] == 'F') }\nfunc isComment(ln []byte) bool   { return (ln[0] == '#') }\nfunc isSubVendor(ln []byte) bool { return isLeadingTwoTabs(ln) }\nfunc isDevice(ln []byte) bool    { return isLeadingOneTab(ln) }\nfunc isNewline(ln []byte) bool   { return (ln[0] == '\\n') }\n\n// List of known device classes, subclasses and programming interfaces.\nfunc isClass(ln []byte) bool    { return (ln[0] == 'C') }\nfunc isProgIf(ln []byte) bool   { return isLeadingTwoTabs(ln) }\nfunc isSubClass(ln []byte) bool { return isLeadingOneTab(ln) }\n\n// unread places the previously read rune back on the reader.\nfunc (s *scanner) unread() { _ = s.r.UnreadRune() }\n\n// scan returns the next token and literal value.\nfunc (s *scanner) scan() (tok token, lit literal) {\n\n\tline := s.readline()\n\n\tif isEOF(line) {\n\t\treturn EOF, literal{}\n\t}\n\n\tif isNewline(line) {\n\t\treturn NEWLINE, literal{ID: string('\\n')}\n\t}\n\n\tif isComment(line) {\n\t\treturn COMMENT, literal{ID: string(line)}\n\t}\n\n\t// vendors\n\tif isVendor(line) {\n\t\ts.isVendor = true\n\t\treturn VENDOR, scanEntry(line, 4)\n\t}\n\n\tif isSubVendor(line) && s.isVendor {\n\t\treturn scanSubVendor(line)\n\t}\n\n\tif isDevice(line) && s.isVendor {\n\t\treturn DEVICE, scanEntry(line, 4)\n\t}\n\n\t// classes\n\tif isClass(line) {\n\t\ts.isVendor = false\n\t\treturn scanClass(line)\n\t}\n\tif isProgIf(line) && !s.isVendor {\n\t\treturn PROGIF, scanEntry(line, 2)\n\t}\n\n\tif isSubClass(line) && !s.isVendor {\n\t\treturn SUBCLASS, scanEntry(line, 2)\n\t}\n\n\treturn ILLEGAL, literal{ID: string(line)}\n}\n\n// parser reads the tokens returned by the Lexer and constructs the AST.\ntype parser struct {\n\ts   *scanner\n\tbuf struct {\n\t\ttok token\n\t\tlit literal\n\t\tn   int\n\t}\n}\n\n// Various locations of pci.ids for different distributions. These may be more\n// up to date then the embedded pci.ids db.\nvar defaultPCIdbPaths = []string{\n\t\"/usr/share/misc/pci.ids\",   // Ubuntu\n\t\"/usr/local/share/pci.ids\",  // RHEL like with manual update\n\t\"/usr/share/hwdata/pci.ids\", // RHEL like\n\t\"/usr/share/pci.ids\",        // SUSE\n}\n\n// This is a fallback if all of the locations fail\n//\n//go:embed default_pci.ids\nvar defaultPCIdb []byte\n\n// NewDB Parse the PCI DB in its default locations or use the default\n// builtin pci.ids db.\nfunc NewDB(opts ...Option) Interface {\n\tdb := &pcidb{}\n\tfor _, opt := range opts {\n\t\topt(db)\n\t}\n\n\tpcidbs := defaultPCIdbPaths\n\tif db.path != \"\" {\n\t\tpcidbs = append([]string{db.path}, defaultPCIdbPaths...)\n\t}\n\n\treturn newParser(pcidbs).parse()\n}\n\n// Option defines a function for passing options to the NewDB() call.\ntype Option func(*pcidb)\n\n// WithFilePath provides an Option to set the file path\n// for the pciids database used by pciids interface.\n// The file path provided takes precedence over all other\n// paths.\nfunc WithFilePath(path string) Option {\n\treturn func(db *pcidb) {\n\t\tdb.path = path\n\t}\n}\n\n// newParser will attempt to read the db pci.ids from well known places or fall\n// back to an internal db.\nfunc newParser(pcidbs []string) *parser {\n\n\tfor _, db := range pcidbs {\n\t\tfile, err := os.ReadFile(db)\n\t\tif err != nil {\n\t\t\tcontinue\n\t\t}\n\t\treturn newParserFromReader(bufio.NewReader(bytes.NewReader(file)))\n\n\t}\n\t// We're using go embed above to have the byte array\n\t// correctly initialized with the internal shipped db\n\t// if we cannot find an up to date in the filesystem.\n\treturn newParserFromReader(bufio.NewReader(bytes.NewReader(defaultPCIdb)))\n}\n\nfunc newParserFromReader(r *bufio.Reader) *parser {\n\treturn &parser{s: newScanner(r)}\n}\n\nfunc (p *parser) scan() (tok token, lit literal) {\n\n\tif p.buf.n != 0 {\n\t\tp.buf.n = 0\n\t\treturn p.buf.tok, p.buf.lit\n\t}\n\ttok, lit = p.s.scan()\n\tp.buf.tok, p.buf.lit = tok, lit\n\treturn\n}\n\nfunc (p *parser) unscan() { p.buf.n = 1 }\n\nvar _ Interface = (*pcidb)(nil)\n\n// Interface returns textual description of specific attributes of PCI devices.\ntype Interface interface {\n\tGetDeviceName(uint16, uint16) (string, error)\n\tGetClassName(uint32) (string, error)\n}\n\n// GetDeviceName return the textual description of the PCI device.\nfunc (d *pcidb) GetDeviceName(vendorID uint16, deviceID uint16) (string, error) {\n\tvendor, ok := d.vendors[vendorID]\n\tif !ok {\n\t\treturn \"\", fmt.Errorf(\"failed to find vendor with id '%x'\", vendorID)\n\t}\n\n\tdevice, ok := vendor.devices[deviceID]\n\tif !ok {\n\t\treturn \"\", fmt.Errorf(\"failed to find device with id '%x'\", deviceID)\n\t}\n\n\treturn device.name, nil\n}\n\n// GetClassName resturn the textual description of the PCI device class.\nfunc (d *pcidb) GetClassName(classID uint32) (string, error) {\n\tclass, ok := d.classes[classID]\n\tif !ok {\n\t\treturn \"\", fmt.Errorf(\"failed to find class with id '%x'\", classID)\n\t}\n\treturn class.name, nil\n}\n\n// pcidb  The complete set of PCI vendors and  PCI classes.\ntype pcidb struct {\n\tvendors map[uint16]vendor\n\tclasses map[uint32]class\n\tpath    string\n}\n\n// vendor PCI vendors/devices/subVendors/SubDevices.\ntype vendor struct {\n\tname    string\n\tdevices map[uint16]device\n}\n\n// subVendor PCI subVendor.\ntype subVendor struct {\n\tSubDevices map[uint16]SubDevice\n}\n\n// SubDevice PCI SubDevice.\ntype SubDevice struct {\n\tname string\n}\n\n// device PCI device.\ntype device struct {\n\tname       string\n\tsubVendors map[uint16]subVendor\n}\n\n// class PCI classes/subClasses/Programming Interfaces.\ntype class struct {\n\tname       string\n\tsubClasses map[uint32]subClass\n}\n\n// subClass PCI subClass.\ntype subClass struct {\n\tname    string\n\tprogIfs map[uint8]progIf\n}\n\n// progIf PCI Programming Interface.\ntype progIf struct {\n\tname string\n}\n\n// parse parses a PCI IDS entry.\nfunc (p *parser) parse() Interface {\n\n\tdb := &pcidb{\n\t\tvendors: map[uint16]vendor{},\n\t\tclasses: map[uint32]class{},\n\t}\n\n\t// Used for housekeeping, breadcrumb for aggregated types.\n\tvar hkVendor vendor\n\tvar hkDevice device\n\n\tvar hkClass class\n\tvar hkSubClass subClass\n\n\tvar hkFullID uint32 = 0\n\tvar hkFullName [2]string\n\n\tfor {\n\t\ttok, lit := p.scan()\n\n\t\t// We're ignoring COMMENT, NEWLINE.\n\t\t// An EOF will break the loop.\n\t\tif tok == EOF {\n\t\t\tbreak\n\t\t}\n\n\t\t// PCI vendors -------------------------------------------------\n\t\tif tok == VENDOR {\n\t\t\tid, _ := strconv.ParseUint(lit.ID, 16, 16)\n\t\t\tdb.vendors[uint16(id)] = vendor{\n\t\t\t\tname:    lit.name,\n\t\t\t\tdevices: map[uint16]device{},\n\t\t\t}\n\t\t\thkVendor = db.vendors[uint16(id)]\n\t\t}\n\n\t\tif tok == DEVICE {\n\t\t\tid, _ := strconv.ParseUint(lit.ID, 16, 16)\n\t\t\thkVendor.devices[uint16(id)] = device{\n\t\t\t\tname:       lit.name,\n\t\t\t\tsubVendors: map[uint16]subVendor{},\n\t\t\t}\n\t\t\thkDevice = hkVendor.devices[uint16(id)]\n\t\t}\n\n\t\tif tok == SUBVENDOR {\n\t\t\tid, _ := strconv.ParseUint(lit.ID, 16, 16)\n\t\t\thkDevice.subVendors[uint16(id)] = subVendor{\n\t\t\t\tSubDevices: map[uint16]SubDevice{},\n\t\t\t}\n\t\t\tsubvendor := hkDevice.subVendors[uint16(id)]\n\t\t\tsubid, _ := strconv.ParseUint(lit.name, 16, 16)\n\t\t\tsubvendor.SubDevices[uint16(subid)] = SubDevice{\n\t\t\t\tname: lit.SubName,\n\t\t\t}\n\t\t}\n\n\t\t// PCI classes -------------------------------------------------\n\t\tif tok == CLASS {\n\t\t\tid, _ := strconv.ParseUint(lit.ID, 16, 32)\n\t\t\tdb.classes[uint32(id)] = class{\n\t\t\t\tname:       lit.name,\n\t\t\t\tsubClasses: map[uint32]subClass{},\n\t\t\t}\n\t\t\thkClass = db.classes[uint32(id)]\n\n\t\t\thkFullID = uint32(id) << 16\n\t\t\thkFullID &= 0xFFFF0000\n\t\t\thkFullName[0] = fmt.Sprintf(\"%s (%02x)\", lit.name, id)\n\t\t}\n\n\t\tif tok == SUBCLASS {\n\t\t\tid, _ := strconv.ParseUint(lit.ID, 16, 8)\n\t\t\thkClass.subClasses[uint32(id)] = subClass{\n\t\t\t\tname:    lit.name,\n\t\t\t\tprogIfs: map[uint8]progIf{},\n\t\t\t}\n\t\t\thkSubClass = hkClass.subClasses[uint32(id)]\n\n\t\t\t// Clear the last detected subclass.\n\t\t\thkFullID &= 0xFFFF0000\n\t\t\thkFullID |= uint32(id) << 8\n\t\t\t// Clear the last detected prog iface.\n\t\t\thkFullID &= 0xFFFFFF00\n\t\t\thkFullName[1] = fmt.Sprintf(\"%s (%02x)\", lit.name, id)\n\n\t\t\tdb.classes[uint32(hkFullID)] = class{\n\t\t\t\tname: hkFullName[0] + \" | \" + hkFullName[1],\n\t\t\t}\n\t\t}\n\n\t\tif tok == PROGIF {\n\t\t\tid, _ := strconv.ParseUint(lit.ID, 16, 8)\n\t\t\thkSubClass.progIfs[uint8(id)] = progIf{\n\t\t\t\tname: lit.name,\n\t\t\t}\n\n\t\t\tfinalID := hkFullID | uint32(id)\n\n\t\t\tname := fmt.Sprintf(\"%s (%02x)\", lit.name, id)\n\t\t\tfinalName := hkFullName[0] + \" | \" + hkFullName[1] + \" | \" + name\n\n\t\t\tdb.classes[finalID] = class{\n\t\t\t\tname: finalName,\n\t\t\t}\n\t\t}\n\n\t\tif tok == ILLEGAL {\n\t\t\tfmt.Printf(\"warning: illegal token %s %s cannot parse PCI IDS, database may be incomplete \", lit.ID, lit.name)\n\t\t}\n\t}\n\treturn db\n}\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvml/LICENSE",
    "content": "\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvml/pkg/dl/dl.go",
    "content": "// Copyright (c) 2020, NVIDIA CORPORATION.  All rights reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage dl\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"runtime\"\n\t\"strings\"\n\t\"unsafe\"\n)\n\n// #cgo LDFLAGS: -ldl\n// #include <dlfcn.h>\n// #include <stdlib.h>\nimport \"C\"\n\nconst (\n\tRTLD_LAZY     = C.RTLD_LAZY\n\tRTLD_NOW      = C.RTLD_NOW\n\tRTLD_GLOBAL   = C.RTLD_GLOBAL\n\tRTLD_LOCAL    = C.RTLD_LOCAL\n\tRTLD_NODELETE = C.RTLD_NODELETE\n\tRTLD_NOLOAD   = C.RTLD_NOLOAD\n)\n\ntype DynamicLibrary struct {\n\tName   string\n\tFlags  int\n\thandle unsafe.Pointer\n\tpath   string\n}\n\nfunc New(name string, flags int) *DynamicLibrary {\n\treturn (&DynamicLibrary{\n\t\tName:  name,\n\t\tFlags: flags,\n\t}).init()\n}\n\nfunc (dl *DynamicLibrary) reset() {\n\t_ = dl.init()\n}\n\nfunc (dl *DynamicLibrary) init() *DynamicLibrary {\n\tdl.handle = nil\n\tdl.path = func() string {\n\t\tif strings.Contains(dl.Name, \"/\") {\n\t\t\treturn dl.Name\n\t\t}\n\t\treturn \"\"\n\t}()\n\treturn dl\n}\n\nfunc withOSLock(action func() error) error {\n\truntime.LockOSThread()\n\tdefer runtime.UnlockOSThread()\n\n\treturn action()\n}\n\nfunc dlError() error {\n\tlastErr := C.dlerror()\n\tif lastErr == nil {\n\t\treturn nil\n\t}\n\treturn errors.New(C.GoString(lastErr))\n}\n\nfunc (dl *DynamicLibrary) Open() error {\n\tname := C.CString(dl.Name)\n\tdefer C.free(unsafe.Pointer(name))\n\n\tif err := withOSLock(func() error {\n\t\thandle := C.dlopen(name, C.int(dl.Flags))\n\t\tif handle == nil {\n\t\t\treturn dlError()\n\t\t}\n\t\tdl.handle = handle\n\t\treturn nil\n\t}); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc (dl *DynamicLibrary) Close() error {\n\tif dl.handle == nil {\n\t\treturn nil\n\t}\n\tif err := withOSLock(func() error {\n\t\tif C.dlclose(dl.handle) != 0 {\n\t\t\treturn dlError()\n\t\t}\n\t\tdl.reset()\n\t\treturn nil\n\t}); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc (dl *DynamicLibrary) Lookup(symbol string) error {\n\tsym := C.CString(symbol)\n\tdefer C.free(unsafe.Pointer(sym))\n\n\tvar pointer unsafe.Pointer\n\tif err := withOSLock(func() error {\n\t\t// Call dlError() to clear out any previous errors.\n\t\t_ = dlError()\n\t\tpointer = C.dlsym(dl.handle, sym)\n\t\tif pointer == nil {\n\t\t\treturn fmt.Errorf(\"symbol %q not found: %w\", symbol, dlError())\n\t\t}\n\t\treturn nil\n\t}); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvml/pkg/dl/dl_linux.go",
    "content": "/**\n# Copyright (c) NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage dl\n\n// #cgo LDFLAGS: -ldl\n// #define _GNU_SOURCE\n// #include <dlfcn.h>\n// #include <stdlib.h>\n// #include <linux/limits.h>\nimport \"C\"\nimport (\n\t\"fmt\"\n\t\"path/filepath\"\n\t\"unsafe\"\n)\n\nconst (\n\tRTLD_DEEPBIND = C.RTLD_DEEPBIND\n)\n\n// Path returns the path to the loaded library.\n// See https://man7.org/linux/man-pages/man3/dlinfo.3.html\nfunc (dl *DynamicLibrary) Path() (string, error) {\n\tif dl.handle == nil {\n\t\treturn \"\", fmt.Errorf(\"%v not opened\", dl.Name)\n\t}\n\n\tlibParentPathBuffer := C.CBytes(make([]byte, 0, C.PATH_MAX))\n\tdefer C.free(unsafe.Pointer(libParentPathBuffer))\n\n\tvar libPath string\n\tif err := withOSLock(func() error {\n\t\tif dl.path != \"\" {\n\t\t\tlibPath = dl.path\n\t\t\treturn nil\n\t\t}\n\t\t// Call dlError() to clear out any previous errors.\n\t\t_ = dlError()\n\t\tret := C.dlinfo(dl.handle, C.RTLD_DI_ORIGIN, libParentPathBuffer)\n\t\tif ret == -1 {\n\t\t\treturn fmt.Errorf(\"dlinfo call failed: %w\", dlError())\n\t\t}\n\n\t\tlibPath = filepath.Join(C.GoString((*C.char)(libParentPathBuffer)), dl.Name)\n\t\tdl.path = libPath\n\n\t\treturn nil\n\t}); err != nil {\n\t\treturn \"\", err\n\t}\n\treturn libPath, nil\n}\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvml/pkg/dl/dl_other.go",
    "content": "//go:build !linux\n\n/**\n# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n# SPDX-License-Identifier: Apache-2.0\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage dl\n\nimport (\n\t\"fmt\"\n)\n\n// Path is NOT supported on non-Linux platforms.\n// For example, on freebsd (darwin) systems, dladdr should be used instead of\n// dlinfo which is used on linux.\n// See for example: https://github.com/Manu343726/siplasplas/issues/82\n// For now we return an error.\nfunc (dl *DynamicLibrary) Path() (string, error) {\n\treturn \"\", fmt.Errorf(\"not implemented\")\n}\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvml/pkg/nvml/api.go",
    "content": "/**\n# Copyright 2023 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage nvml\n\n// ExtendedInterface defines a set of extensions to the core NVML API.\n//\n// TODO: For now the list of methods in this interface need to be kept in sync\n// with the list of excluded methods for the Interface type in\n// gen/nvml/generateapi.go. In the future we should automate this.\n//\n//go:generate moq -out mock/extendedinterface.go -pkg mock . ExtendedInterface:ExtendedInterface\ntype ExtendedInterface interface {\n\tLookupSymbol(string) error\n}\n\n// libraryOptions hold the paramaters than can be set by a LibraryOption\ntype libraryOptions struct {\n\tpath  string\n\tflags int\n}\n\n// LibraryOption represents a functional option to configure the underlying NVML library\ntype LibraryOption func(*libraryOptions)\n\n// WithLibraryPath provides an option to set the library name to be used by the NVML library.\nfunc WithLibraryPath(path string) LibraryOption {\n\treturn func(o *libraryOptions) {\n\t\to.path = path\n\t}\n}\n\n// SetLibraryOptions applies the specified options to the NVML library.\n// If this is called when a library is already loaded, an error is raised.\nfunc SetLibraryOptions(opts ...LibraryOption) error {\n\tlibnvml.Lock()\n\tdefer libnvml.Unlock()\n\tif libnvml.refcount != 0 {\n\t\treturn errLibraryAlreadyLoaded\n\t}\n\tlibnvml.init(opts...)\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvml/pkg/nvml/cgo_helpers.h",
    "content": "// Copyright (c) 2020, NVIDIA CORPORATION. All rights reserved.\n// \n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n// \n//     http://www.apache.org/licenses/LICENSE-2.0\n// \n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// WARNING: THIS FILE WAS AUTOMATICALLY GENERATED.\n// Code generated by https://git.io/c-for-go. DO NOT EDIT.\n\n#include \"nvml.h\"\n#include <stdlib.h>\n#pragma once\n\n#define __CGOGEN 1\n\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvml/pkg/nvml/cgo_helpers_static.go",
    "content": "// Copyright (c) 2020, NVIDIA CORPORATION.  All rights reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage nvml\n\nimport (\n\t\"unsafe\"\n)\n\nimport \"C\"\n\nvar cgoAllocsUnknown = new(struct{})\n\ntype stringHeader struct {\n\tData unsafe.Pointer\n\tLen  int\n}\n\nfunc clen(n []byte) int {\n\tfor i := 0; i < len(n); i++ {\n\t\tif n[i] == 0 {\n\t\t\treturn i\n\t\t}\n\t}\n\treturn len(n)\n}\n\nfunc uint32SliceToIntSlice(s []uint32) []int {\n\tret := make([]int, len(s))\n\tfor i := range s {\n\t\tret[i] = int(s[i])\n\t}\n\treturn ret\n}\n\nfunc convertSlice[T any, I any](input []T) []I {\n\toutput := make([]I, len(input))\n\tfor i, obj := range input {\n\t\tswitch v := any(obj).(type) {\n\t\tcase I:\n\t\t\toutput[i] = v\n\t\t}\n\t}\n\treturn output\n}\n\n// packPCharString creates a Go string backed by *C.char and avoids copying.\nfunc packPCharString(p *C.char) (raw string) {\n\tif p != nil && *p != 0 {\n\t\th := (*stringHeader)(unsafe.Pointer(&raw))\n\t\th.Data = unsafe.Pointer(p)\n\t\tfor *p != 0 {\n\t\t\tp = (*C.char)(unsafe.Pointer(uintptr(unsafe.Pointer(p)) + 1)) // p++\n\t\t}\n\t\th.Len = int(uintptr(unsafe.Pointer(p)) - uintptr(h.Data))\n\t}\n\treturn\n}\n\n// unpackPCharString represents the data from Go string as *C.char and avoids copying.\nfunc unpackPCharString(str string) (*C.char, *struct{}) {\n\th := (*stringHeader)(unsafe.Pointer(&str))\n\treturn (*C.char)(h.Data), cgoAllocsUnknown\n}\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvml/pkg/nvml/const.go",
    "content": "// Copyright (c) 2020, NVIDIA CORPORATION. All rights reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// WARNING: THIS FILE WAS AUTOMATICALLY GENERATED.\n// Code generated by https://git.io/c-for-go. DO NOT EDIT.\n\npackage nvml\n\n/*\n#cgo linux LDFLAGS: -Wl,--export-dynamic -Wl,--unresolved-symbols=ignore-in-object-files\n#cgo darwin LDFLAGS: -Wl,-undefined,dynamic_lookup\n#cgo CFLAGS: -DNVML_NO_UNVERSIONED_FUNC_DEFS=1\n#include \"nvml.h\"\n#include <stdlib.h>\n#include \"cgo_helpers.h\"\n*/\nimport \"C\"\n\nconst (\n\t// NO_UNVERSIONED_FUNC_DEFS as defined in go-nvml/<predefine>:24\n\tNO_UNVERSIONED_FUNC_DEFS = 1\n\t// API_VERSION as defined in nvml/nvml.h\n\tAPI_VERSION = 13\n\t// API_VERSION_STR as defined in nvml/nvml.h\n\tAPI_VERSION_STR = \"13\"\n\t// VALUE_NOT_AVAILABLE as defined in nvml/nvml.h\n\tVALUE_NOT_AVAILABLE = -1\n\t// DEVICE_PCI_BUS_ID_BUFFER_SIZE as defined in nvml/nvml.h\n\tDEVICE_PCI_BUS_ID_BUFFER_SIZE = 32\n\t// DEVICE_PCI_BUS_ID_BUFFER_V2_SIZE as defined in nvml/nvml.h\n\tDEVICE_PCI_BUS_ID_BUFFER_V2_SIZE = 16\n\t// DEVICE_PCI_BUS_ID_LEGACY_FMT as defined in nvml/nvml.h\n\tDEVICE_PCI_BUS_ID_LEGACY_FMT = \"%04X:%02X:%02X.0\"\n\t// DEVICE_PCI_BUS_ID_FMT as defined in nvml/nvml.h\n\tDEVICE_PCI_BUS_ID_FMT = \"%08X:%02X:%02X.0\"\n\t// NVLINK_MAX_LINKS as defined in nvml/nvml.h\n\tNVLINK_MAX_LINKS = 18\n\t// TOPOLOGY_CPU as defined in nvml/nvml.h\n\tTOPOLOGY_CPU = 0\n\t// MAX_PHYSICAL_BRIDGE as defined in nvml/nvml.h\n\tMAX_PHYSICAL_BRIDGE = 128\n\t// MAX_THERMAL_SENSORS_PER_GPU as defined in nvml/nvml.h\n\tMAX_THERMAL_SENSORS_PER_GPU = 3\n\t// DEVICE_UUID_ASCII_LEN as defined in nvml/nvml.h\n\tDEVICE_UUID_ASCII_LEN = 41\n\t// DEVICE_UUID_BINARY_LEN as defined in nvml/nvml.h\n\tDEVICE_UUID_BINARY_LEN = 16\n\t// FlagDefault as defined in nvml/nvml.h\n\tFlagDefault = 0\n\t// FlagForce as defined in nvml/nvml.h\n\tFlagForce = 1\n\t// SINGLE_BIT_ECC as defined in nvml/nvml.h\n\tSINGLE_BIT_ECC = 0\n\t// DOUBLE_BIT_ECC as defined in nvml/nvml.h\n\tDOUBLE_BIT_ECC = 0\n\t// MAX_GPU_PERF_PSTATES as defined in nvml/nvml.h\n\tMAX_GPU_PERF_PSTATES = 16\n\t// PERF_MODES_BUFFER_SIZE as defined in nvml/nvml.h\n\tPERF_MODES_BUFFER_SIZE = 2048\n\t// POWER_MIZER_MODE_ADAPTIVE as defined in nvml/nvml.h\n\tPOWER_MIZER_MODE_ADAPTIVE = 0\n\t// POWER_MIZER_MODE_PREFER_MAXIMUM_PERFORMANCE as defined in nvml/nvml.h\n\tPOWER_MIZER_MODE_PREFER_MAXIMUM_PERFORMANCE = 1\n\t// POWER_MIZER_MODE_AUTO as defined in nvml/nvml.h\n\tPOWER_MIZER_MODE_AUTO = 2\n\t// POWER_MIZER_MODE_PREFER_CONSISTENT_PERFORMANCE as defined in nvml/nvml.h\n\tPOWER_MIZER_MODE_PREFER_CONSISTENT_PERFORMANCE = 3\n\t// GSP_FIRMWARE_VERSION_BUF_SIZE as defined in nvml/nvml.h\n\tGSP_FIRMWARE_VERSION_BUF_SIZE = 64\n\t// DEVICE_ARCH_KEPLER as defined in nvml/nvml.h\n\tDEVICE_ARCH_KEPLER = 2\n\t// DEVICE_ARCH_MAXWELL as defined in nvml/nvml.h\n\tDEVICE_ARCH_MAXWELL = 3\n\t// DEVICE_ARCH_PASCAL as defined in nvml/nvml.h\n\tDEVICE_ARCH_PASCAL = 4\n\t// DEVICE_ARCH_VOLTA as defined in nvml/nvml.h\n\tDEVICE_ARCH_VOLTA = 5\n\t// DEVICE_ARCH_TURING as defined in nvml/nvml.h\n\tDEVICE_ARCH_TURING = 6\n\t// DEVICE_ARCH_AMPERE as defined in nvml/nvml.h\n\tDEVICE_ARCH_AMPERE = 7\n\t// DEVICE_ARCH_ADA as defined in nvml/nvml.h\n\tDEVICE_ARCH_ADA = 8\n\t// DEVICE_ARCH_HOPPER as defined in nvml/nvml.h\n\tDEVICE_ARCH_HOPPER = 9\n\t// DEVICE_ARCH_BLACKWELL as defined in nvml/nvml.h\n\tDEVICE_ARCH_BLACKWELL = 10\n\t// DEVICE_ARCH_UNKNOWN as defined in nvml/nvml.h\n\tDEVICE_ARCH_UNKNOWN = 4294967295\n\t// BUS_TYPE_UNKNOWN as defined in nvml/nvml.h\n\tBUS_TYPE_UNKNOWN = 0\n\t// BUS_TYPE_PCI as defined in nvml/nvml.h\n\tBUS_TYPE_PCI = 1\n\t// BUS_TYPE_PCIE as defined in nvml/nvml.h\n\tBUS_TYPE_PCIE = 2\n\t// BUS_TYPE_FPCI as defined in nvml/nvml.h\n\tBUS_TYPE_FPCI = 3\n\t// BUS_TYPE_AGP as defined in nvml/nvml.h\n\tBUS_TYPE_AGP = 4\n\t// FAN_POLICY_TEMPERATURE_CONTINOUS_SW as defined in nvml/nvml.h\n\tFAN_POLICY_TEMPERATURE_CONTINOUS_SW = 0\n\t// FAN_POLICY_MANUAL as defined in nvml/nvml.h\n\tFAN_POLICY_MANUAL = 1\n\t// POWER_SOURCE_AC as defined in nvml/nvml.h\n\tPOWER_SOURCE_AC = 0\n\t// POWER_SOURCE_BATTERY as defined in nvml/nvml.h\n\tPOWER_SOURCE_BATTERY = 1\n\t// POWER_SOURCE_UNDERSIZED as defined in nvml/nvml.h\n\tPOWER_SOURCE_UNDERSIZED = 2\n\t// PCIE_LINK_MAX_SPEED_INVALID as defined in nvml/nvml.h\n\tPCIE_LINK_MAX_SPEED_INVALID = 0\n\t// PCIE_LINK_MAX_SPEED_2500MBPS as defined in nvml/nvml.h\n\tPCIE_LINK_MAX_SPEED_2500MBPS = 1\n\t// PCIE_LINK_MAX_SPEED_5000MBPS as defined in nvml/nvml.h\n\tPCIE_LINK_MAX_SPEED_5000MBPS = 2\n\t// PCIE_LINK_MAX_SPEED_8000MBPS as defined in nvml/nvml.h\n\tPCIE_LINK_MAX_SPEED_8000MBPS = 3\n\t// PCIE_LINK_MAX_SPEED_16000MBPS as defined in nvml/nvml.h\n\tPCIE_LINK_MAX_SPEED_16000MBPS = 4\n\t// PCIE_LINK_MAX_SPEED_32000MBPS as defined in nvml/nvml.h\n\tPCIE_LINK_MAX_SPEED_32000MBPS = 5\n\t// PCIE_LINK_MAX_SPEED_64000MBPS as defined in nvml/nvml.h\n\tPCIE_LINK_MAX_SPEED_64000MBPS = 6\n\t// ADAPTIVE_CLOCKING_INFO_STATUS_DISABLED as defined in nvml/nvml.h\n\tADAPTIVE_CLOCKING_INFO_STATUS_DISABLED = 0\n\t// ADAPTIVE_CLOCKING_INFO_STATUS_ENABLED as defined in nvml/nvml.h\n\tADAPTIVE_CLOCKING_INFO_STATUS_ENABLED = 1\n\t// MAX_GPU_UTILIZATIONS as defined in nvml/nvml.h\n\tMAX_GPU_UTILIZATIONS = 8\n\t// PCIE_ATOMICS_CAP_FETCHADD32 as defined in nvml/nvml.h\n\tPCIE_ATOMICS_CAP_FETCHADD32 = 1\n\t// PCIE_ATOMICS_CAP_FETCHADD64 as defined in nvml/nvml.h\n\tPCIE_ATOMICS_CAP_FETCHADD64 = 2\n\t// PCIE_ATOMICS_CAP_SWAP32 as defined in nvml/nvml.h\n\tPCIE_ATOMICS_CAP_SWAP32 = 4\n\t// PCIE_ATOMICS_CAP_SWAP64 as defined in nvml/nvml.h\n\tPCIE_ATOMICS_CAP_SWAP64 = 8\n\t// PCIE_ATOMICS_CAP_CAS32 as defined in nvml/nvml.h\n\tPCIE_ATOMICS_CAP_CAS32 = 16\n\t// PCIE_ATOMICS_CAP_CAS64 as defined in nvml/nvml.h\n\tPCIE_ATOMICS_CAP_CAS64 = 32\n\t// PCIE_ATOMICS_CAP_CAS128 as defined in nvml/nvml.h\n\tPCIE_ATOMICS_CAP_CAS128 = 64\n\t// PCIE_ATOMICS_OPS_MAX as defined in nvml/nvml.h\n\tPCIE_ATOMICS_OPS_MAX = 7\n\t// POWER_SCOPE_GPU as defined in nvml/nvml.h\n\tPOWER_SCOPE_GPU = 0\n\t// POWER_SCOPE_MODULE as defined in nvml/nvml.h\n\tPOWER_SCOPE_MODULE = 1\n\t// POWER_SCOPE_MEMORY as defined in nvml/nvml.h\n\tPOWER_SCOPE_MEMORY = 2\n\t// GRID_LICENSE_EXPIRY_NOT_AVAILABLE as defined in nvml/nvml.h\n\tGRID_LICENSE_EXPIRY_NOT_AVAILABLE = 0\n\t// GRID_LICENSE_EXPIRY_INVALID as defined in nvml/nvml.h\n\tGRID_LICENSE_EXPIRY_INVALID = 1\n\t// GRID_LICENSE_EXPIRY_VALID as defined in nvml/nvml.h\n\tGRID_LICENSE_EXPIRY_VALID = 2\n\t// GRID_LICENSE_EXPIRY_NOT_APPLICABLE as defined in nvml/nvml.h\n\tGRID_LICENSE_EXPIRY_NOT_APPLICABLE = 3\n\t// GRID_LICENSE_EXPIRY_PERMANENT as defined in nvml/nvml.h\n\tGRID_LICENSE_EXPIRY_PERMANENT = 4\n\t// GRID_LICENSE_BUFFER_SIZE as defined in nvml/nvml.h\n\tGRID_LICENSE_BUFFER_SIZE = 128\n\t// VGPU_NAME_BUFFER_SIZE as defined in nvml/nvml.h\n\tVGPU_NAME_BUFFER_SIZE = 64\n\t// GRID_LICENSE_FEATURE_MAX_COUNT as defined in nvml/nvml.h\n\tGRID_LICENSE_FEATURE_MAX_COUNT = 3\n\t// INVALID_VGPU_PLACEMENT_ID as defined in nvml/nvml.h\n\tINVALID_VGPU_PLACEMENT_ID = 65535\n\t// VGPU_PGPU_HETEROGENEOUS_MODE as defined in nvml/nvml.h\n\tVGPU_PGPU_HETEROGENEOUS_MODE = 0\n\t// VGPU_PGPU_HOMOGENEOUS_MODE as defined in nvml/nvml.h\n\tVGPU_PGPU_HOMOGENEOUS_MODE = 1\n\t// VGPU_SCHEDULER_POLICY_UNKNOWN as defined in nvml/nvml.h\n\tVGPU_SCHEDULER_POLICY_UNKNOWN = 0\n\t// VGPU_SCHEDULER_POLICY_BEST_EFFORT as defined in nvml/nvml.h\n\tVGPU_SCHEDULER_POLICY_BEST_EFFORT = 1\n\t// VGPU_SCHEDULER_POLICY_EQUAL_SHARE as defined in nvml/nvml.h\n\tVGPU_SCHEDULER_POLICY_EQUAL_SHARE = 2\n\t// VGPU_SCHEDULER_POLICY_FIXED_SHARE as defined in nvml/nvml.h\n\tVGPU_SCHEDULER_POLICY_FIXED_SHARE = 3\n\t// SUPPORTED_VGPU_SCHEDULER_POLICY_COUNT as defined in nvml/nvml.h\n\tSUPPORTED_VGPU_SCHEDULER_POLICY_COUNT = 3\n\t// SCHEDULER_SW_MAX_LOG_ENTRIES as defined in nvml/nvml.h\n\tSCHEDULER_SW_MAX_LOG_ENTRIES = 200\n\t// VGPU_SCHEDULER_ARR_DEFAULT as defined in nvml/nvml.h\n\tVGPU_SCHEDULER_ARR_DEFAULT = 0\n\t// VGPU_SCHEDULER_ARR_DISABLE as defined in nvml/nvml.h\n\tVGPU_SCHEDULER_ARR_DISABLE = 1\n\t// VGPU_SCHEDULER_ARR_ENABLE as defined in nvml/nvml.h\n\tVGPU_SCHEDULER_ARR_ENABLE = 2\n\t// VGPU_SCHEDULER_ENGINE_TYPE_GRAPHICS as defined in nvml/nvml.h\n\tVGPU_SCHEDULER_ENGINE_TYPE_GRAPHICS = 1\n\t// GRID_LICENSE_STATE_UNKNOWN as defined in nvml/nvml.h\n\tGRID_LICENSE_STATE_UNKNOWN = 0\n\t// GRID_LICENSE_STATE_UNINITIALIZED as defined in nvml/nvml.h\n\tGRID_LICENSE_STATE_UNINITIALIZED = 1\n\t// GRID_LICENSE_STATE_UNLICENSED_UNRESTRICTED as defined in nvml/nvml.h\n\tGRID_LICENSE_STATE_UNLICENSED_UNRESTRICTED = 2\n\t// GRID_LICENSE_STATE_UNLICENSED_RESTRICTED as defined in nvml/nvml.h\n\tGRID_LICENSE_STATE_UNLICENSED_RESTRICTED = 3\n\t// GRID_LICENSE_STATE_UNLICENSED as defined in nvml/nvml.h\n\tGRID_LICENSE_STATE_UNLICENSED = 4\n\t// GRID_LICENSE_STATE_LICENSED as defined in nvml/nvml.h\n\tGRID_LICENSE_STATE_LICENSED = 5\n\t// FI_DEV_ECC_CURRENT as defined in nvml/nvml.h\n\tFI_DEV_ECC_CURRENT = 1\n\t// FI_DEV_ECC_PENDING as defined in nvml/nvml.h\n\tFI_DEV_ECC_PENDING = 2\n\t// FI_DEV_ECC_SBE_VOL_TOTAL as defined in nvml/nvml.h\n\tFI_DEV_ECC_SBE_VOL_TOTAL = 3\n\t// FI_DEV_ECC_DBE_VOL_TOTAL as defined in nvml/nvml.h\n\tFI_DEV_ECC_DBE_VOL_TOTAL = 4\n\t// FI_DEV_ECC_SBE_AGG_TOTAL as defined in nvml/nvml.h\n\tFI_DEV_ECC_SBE_AGG_TOTAL = 5\n\t// FI_DEV_ECC_DBE_AGG_TOTAL as defined in nvml/nvml.h\n\tFI_DEV_ECC_DBE_AGG_TOTAL = 6\n\t// FI_DEV_ECC_SBE_VOL_L1 as defined in nvml/nvml.h\n\tFI_DEV_ECC_SBE_VOL_L1 = 7\n\t// FI_DEV_ECC_DBE_VOL_L1 as defined in nvml/nvml.h\n\tFI_DEV_ECC_DBE_VOL_L1 = 8\n\t// FI_DEV_ECC_SBE_VOL_L2 as defined in nvml/nvml.h\n\tFI_DEV_ECC_SBE_VOL_L2 = 9\n\t// FI_DEV_ECC_DBE_VOL_L2 as defined in nvml/nvml.h\n\tFI_DEV_ECC_DBE_VOL_L2 = 10\n\t// FI_DEV_ECC_SBE_VOL_DEV as defined in nvml/nvml.h\n\tFI_DEV_ECC_SBE_VOL_DEV = 11\n\t// FI_DEV_ECC_DBE_VOL_DEV as defined in nvml/nvml.h\n\tFI_DEV_ECC_DBE_VOL_DEV = 12\n\t// FI_DEV_ECC_SBE_VOL_REG as defined in nvml/nvml.h\n\tFI_DEV_ECC_SBE_VOL_REG = 13\n\t// FI_DEV_ECC_DBE_VOL_REG as defined in nvml/nvml.h\n\tFI_DEV_ECC_DBE_VOL_REG = 14\n\t// FI_DEV_ECC_SBE_VOL_TEX as defined in nvml/nvml.h\n\tFI_DEV_ECC_SBE_VOL_TEX = 15\n\t// FI_DEV_ECC_DBE_VOL_TEX as defined in nvml/nvml.h\n\tFI_DEV_ECC_DBE_VOL_TEX = 16\n\t// FI_DEV_ECC_DBE_VOL_CBU as defined in nvml/nvml.h\n\tFI_DEV_ECC_DBE_VOL_CBU = 17\n\t// FI_DEV_ECC_SBE_AGG_L1 as defined in nvml/nvml.h\n\tFI_DEV_ECC_SBE_AGG_L1 = 18\n\t// FI_DEV_ECC_DBE_AGG_L1 as defined in nvml/nvml.h\n\tFI_DEV_ECC_DBE_AGG_L1 = 19\n\t// FI_DEV_ECC_SBE_AGG_L2 as defined in nvml/nvml.h\n\tFI_DEV_ECC_SBE_AGG_L2 = 20\n\t// FI_DEV_ECC_DBE_AGG_L2 as defined in nvml/nvml.h\n\tFI_DEV_ECC_DBE_AGG_L2 = 21\n\t// FI_DEV_ECC_SBE_AGG_DEV as defined in nvml/nvml.h\n\tFI_DEV_ECC_SBE_AGG_DEV = 22\n\t// FI_DEV_ECC_DBE_AGG_DEV as defined in nvml/nvml.h\n\tFI_DEV_ECC_DBE_AGG_DEV = 23\n\t// FI_DEV_ECC_SBE_AGG_REG as defined in nvml/nvml.h\n\tFI_DEV_ECC_SBE_AGG_REG = 24\n\t// FI_DEV_ECC_DBE_AGG_REG as defined in nvml/nvml.h\n\tFI_DEV_ECC_DBE_AGG_REG = 25\n\t// FI_DEV_ECC_SBE_AGG_TEX as defined in nvml/nvml.h\n\tFI_DEV_ECC_SBE_AGG_TEX = 26\n\t// FI_DEV_ECC_DBE_AGG_TEX as defined in nvml/nvml.h\n\tFI_DEV_ECC_DBE_AGG_TEX = 27\n\t// FI_DEV_ECC_DBE_AGG_CBU as defined in nvml/nvml.h\n\tFI_DEV_ECC_DBE_AGG_CBU = 28\n\t// FI_DEV_RETIRED_SBE as defined in nvml/nvml.h\n\tFI_DEV_RETIRED_SBE = 29\n\t// FI_DEV_RETIRED_DBE as defined in nvml/nvml.h\n\tFI_DEV_RETIRED_DBE = 30\n\t// FI_DEV_RETIRED_PENDING as defined in nvml/nvml.h\n\tFI_DEV_RETIRED_PENDING = 31\n\t// FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L0 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L0 = 32\n\t// FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L1 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L1 = 33\n\t// FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L2 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L2 = 34\n\t// FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L3 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L3 = 35\n\t// FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L4 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L4 = 36\n\t// FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L5 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L5 = 37\n\t// FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_TOTAL as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_TOTAL = 38\n\t// FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L0 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L0 = 39\n\t// FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L1 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L1 = 40\n\t// FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L2 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L2 = 41\n\t// FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L3 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L3 = 42\n\t// FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L4 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L4 = 43\n\t// FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L5 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L5 = 44\n\t// FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_TOTAL as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_TOTAL = 45\n\t// FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L0 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_REPLAY_ERROR_COUNT_L0 = 46\n\t// FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L1 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_REPLAY_ERROR_COUNT_L1 = 47\n\t// FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L2 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_REPLAY_ERROR_COUNT_L2 = 48\n\t// FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L3 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_REPLAY_ERROR_COUNT_L3 = 49\n\t// FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L4 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_REPLAY_ERROR_COUNT_L4 = 50\n\t// FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L5 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_REPLAY_ERROR_COUNT_L5 = 51\n\t// FI_DEV_NVLINK_REPLAY_ERROR_COUNT_TOTAL as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_REPLAY_ERROR_COUNT_TOTAL = 52\n\t// FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L0 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L0 = 53\n\t// FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L1 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L1 = 54\n\t// FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L2 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L2 = 55\n\t// FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L3 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L3 = 56\n\t// FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L4 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L4 = 57\n\t// FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L5 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L5 = 58\n\t// FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_TOTAL as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_RECOVERY_ERROR_COUNT_TOTAL = 59\n\t// FI_DEV_NVLINK_BANDWIDTH_C0_L0 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_BANDWIDTH_C0_L0 = 60\n\t// FI_DEV_NVLINK_BANDWIDTH_C0_L1 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_BANDWIDTH_C0_L1 = 61\n\t// FI_DEV_NVLINK_BANDWIDTH_C0_L2 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_BANDWIDTH_C0_L2 = 62\n\t// FI_DEV_NVLINK_BANDWIDTH_C0_L3 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_BANDWIDTH_C0_L3 = 63\n\t// FI_DEV_NVLINK_BANDWIDTH_C0_L4 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_BANDWIDTH_C0_L4 = 64\n\t// FI_DEV_NVLINK_BANDWIDTH_C0_L5 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_BANDWIDTH_C0_L5 = 65\n\t// FI_DEV_NVLINK_BANDWIDTH_C0_TOTAL as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_BANDWIDTH_C0_TOTAL = 66\n\t// FI_DEV_NVLINK_BANDWIDTH_C1_L0 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_BANDWIDTH_C1_L0 = 67\n\t// FI_DEV_NVLINK_BANDWIDTH_C1_L1 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_BANDWIDTH_C1_L1 = 68\n\t// FI_DEV_NVLINK_BANDWIDTH_C1_L2 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_BANDWIDTH_C1_L2 = 69\n\t// FI_DEV_NVLINK_BANDWIDTH_C1_L3 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_BANDWIDTH_C1_L3 = 70\n\t// FI_DEV_NVLINK_BANDWIDTH_C1_L4 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_BANDWIDTH_C1_L4 = 71\n\t// FI_DEV_NVLINK_BANDWIDTH_C1_L5 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_BANDWIDTH_C1_L5 = 72\n\t// FI_DEV_NVLINK_BANDWIDTH_C1_TOTAL as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_BANDWIDTH_C1_TOTAL = 73\n\t// FI_DEV_PERF_POLICY_POWER as defined in nvml/nvml.h\n\tFI_DEV_PERF_POLICY_POWER = 74\n\t// FI_DEV_PERF_POLICY_THERMAL as defined in nvml/nvml.h\n\tFI_DEV_PERF_POLICY_THERMAL = 75\n\t// FI_DEV_PERF_POLICY_SYNC_BOOST as defined in nvml/nvml.h\n\tFI_DEV_PERF_POLICY_SYNC_BOOST = 76\n\t// FI_DEV_PERF_POLICY_BOARD_LIMIT as defined in nvml/nvml.h\n\tFI_DEV_PERF_POLICY_BOARD_LIMIT = 77\n\t// FI_DEV_PERF_POLICY_LOW_UTILIZATION as defined in nvml/nvml.h\n\tFI_DEV_PERF_POLICY_LOW_UTILIZATION = 78\n\t// FI_DEV_PERF_POLICY_RELIABILITY as defined in nvml/nvml.h\n\tFI_DEV_PERF_POLICY_RELIABILITY = 79\n\t// FI_DEV_PERF_POLICY_TOTAL_APP_CLOCKS as defined in nvml/nvml.h\n\tFI_DEV_PERF_POLICY_TOTAL_APP_CLOCKS = 80\n\t// FI_DEV_PERF_POLICY_TOTAL_BASE_CLOCKS as defined in nvml/nvml.h\n\tFI_DEV_PERF_POLICY_TOTAL_BASE_CLOCKS = 81\n\t// FI_DEV_MEMORY_TEMP as defined in nvml/nvml.h\n\tFI_DEV_MEMORY_TEMP = 82\n\t// FI_DEV_TOTAL_ENERGY_CONSUMPTION as defined in nvml/nvml.h\n\tFI_DEV_TOTAL_ENERGY_CONSUMPTION = 83\n\t// FI_DEV_NVLINK_SPEED_MBPS_L0 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_SPEED_MBPS_L0 = 84\n\t// FI_DEV_NVLINK_SPEED_MBPS_L1 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_SPEED_MBPS_L1 = 85\n\t// FI_DEV_NVLINK_SPEED_MBPS_L2 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_SPEED_MBPS_L2 = 86\n\t// FI_DEV_NVLINK_SPEED_MBPS_L3 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_SPEED_MBPS_L3 = 87\n\t// FI_DEV_NVLINK_SPEED_MBPS_L4 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_SPEED_MBPS_L4 = 88\n\t// FI_DEV_NVLINK_SPEED_MBPS_L5 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_SPEED_MBPS_L5 = 89\n\t// FI_DEV_NVLINK_SPEED_MBPS_COMMON as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_SPEED_MBPS_COMMON = 90\n\t// FI_DEV_NVLINK_LINK_COUNT as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_LINK_COUNT = 91\n\t// FI_DEV_RETIRED_PENDING_SBE as defined in nvml/nvml.h\n\tFI_DEV_RETIRED_PENDING_SBE = 92\n\t// FI_DEV_RETIRED_PENDING_DBE as defined in nvml/nvml.h\n\tFI_DEV_RETIRED_PENDING_DBE = 93\n\t// FI_DEV_PCIE_REPLAY_COUNTER as defined in nvml/nvml.h\n\tFI_DEV_PCIE_REPLAY_COUNTER = 94\n\t// FI_DEV_PCIE_REPLAY_ROLLOVER_COUNTER as defined in nvml/nvml.h\n\tFI_DEV_PCIE_REPLAY_ROLLOVER_COUNTER = 95\n\t// FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L6 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L6 = 96\n\t// FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L7 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L7 = 97\n\t// FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L8 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L8 = 98\n\t// FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L9 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L9 = 99\n\t// FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L10 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L10 = 100\n\t// FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L11 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L11 = 101\n\t// FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L6 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L6 = 102\n\t// FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L7 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L7 = 103\n\t// FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L8 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L8 = 104\n\t// FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L9 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L9 = 105\n\t// FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L10 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L10 = 106\n\t// FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L11 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L11 = 107\n\t// FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L6 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_REPLAY_ERROR_COUNT_L6 = 108\n\t// FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L7 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_REPLAY_ERROR_COUNT_L7 = 109\n\t// FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L8 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_REPLAY_ERROR_COUNT_L8 = 110\n\t// FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L9 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_REPLAY_ERROR_COUNT_L9 = 111\n\t// FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L10 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_REPLAY_ERROR_COUNT_L10 = 112\n\t// FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L11 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_REPLAY_ERROR_COUNT_L11 = 113\n\t// FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L6 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L6 = 114\n\t// FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L7 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L7 = 115\n\t// FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L8 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L8 = 116\n\t// FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L9 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L9 = 117\n\t// FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L10 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L10 = 118\n\t// FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L11 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L11 = 119\n\t// FI_DEV_NVLINK_BANDWIDTH_C0_L6 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_BANDWIDTH_C0_L6 = 120\n\t// FI_DEV_NVLINK_BANDWIDTH_C0_L7 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_BANDWIDTH_C0_L7 = 121\n\t// FI_DEV_NVLINK_BANDWIDTH_C0_L8 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_BANDWIDTH_C0_L8 = 122\n\t// FI_DEV_NVLINK_BANDWIDTH_C0_L9 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_BANDWIDTH_C0_L9 = 123\n\t// FI_DEV_NVLINK_BANDWIDTH_C0_L10 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_BANDWIDTH_C0_L10 = 124\n\t// FI_DEV_NVLINK_BANDWIDTH_C0_L11 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_BANDWIDTH_C0_L11 = 125\n\t// FI_DEV_NVLINK_BANDWIDTH_C1_L6 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_BANDWIDTH_C1_L6 = 126\n\t// FI_DEV_NVLINK_BANDWIDTH_C1_L7 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_BANDWIDTH_C1_L7 = 127\n\t// FI_DEV_NVLINK_BANDWIDTH_C1_L8 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_BANDWIDTH_C1_L8 = 128\n\t// FI_DEV_NVLINK_BANDWIDTH_C1_L9 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_BANDWIDTH_C1_L9 = 129\n\t// FI_DEV_NVLINK_BANDWIDTH_C1_L10 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_BANDWIDTH_C1_L10 = 130\n\t// FI_DEV_NVLINK_BANDWIDTH_C1_L11 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_BANDWIDTH_C1_L11 = 131\n\t// FI_DEV_NVLINK_SPEED_MBPS_L6 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_SPEED_MBPS_L6 = 132\n\t// FI_DEV_NVLINK_SPEED_MBPS_L7 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_SPEED_MBPS_L7 = 133\n\t// FI_DEV_NVLINK_SPEED_MBPS_L8 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_SPEED_MBPS_L8 = 134\n\t// FI_DEV_NVLINK_SPEED_MBPS_L9 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_SPEED_MBPS_L9 = 135\n\t// FI_DEV_NVLINK_SPEED_MBPS_L10 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_SPEED_MBPS_L10 = 136\n\t// FI_DEV_NVLINK_SPEED_MBPS_L11 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_SPEED_MBPS_L11 = 137\n\t// FI_DEV_NVLINK_THROUGHPUT_DATA_TX as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_THROUGHPUT_DATA_TX = 138\n\t// FI_DEV_NVLINK_THROUGHPUT_DATA_RX as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_THROUGHPUT_DATA_RX = 139\n\t// FI_DEV_NVLINK_THROUGHPUT_RAW_TX as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_THROUGHPUT_RAW_TX = 140\n\t// FI_DEV_NVLINK_THROUGHPUT_RAW_RX as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_THROUGHPUT_RAW_RX = 141\n\t// FI_DEV_REMAPPED_COR as defined in nvml/nvml.h\n\tFI_DEV_REMAPPED_COR = 142\n\t// FI_DEV_REMAPPED_UNC as defined in nvml/nvml.h\n\tFI_DEV_REMAPPED_UNC = 143\n\t// FI_DEV_REMAPPED_PENDING as defined in nvml/nvml.h\n\tFI_DEV_REMAPPED_PENDING = 144\n\t// FI_DEV_REMAPPED_FAILURE as defined in nvml/nvml.h\n\tFI_DEV_REMAPPED_FAILURE = 145\n\t// FI_DEV_NVLINK_REMOTE_NVLINK_ID as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_REMOTE_NVLINK_ID = 146\n\t// FI_DEV_NVSWITCH_CONNECTED_LINK_COUNT as defined in nvml/nvml.h\n\tFI_DEV_NVSWITCH_CONNECTED_LINK_COUNT = 147\n\t// FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L0 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L0 = 148\n\t// FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L1 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L1 = 149\n\t// FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L2 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L2 = 150\n\t// FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L3 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L3 = 151\n\t// FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L4 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L4 = 152\n\t// FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L5 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L5 = 153\n\t// FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L6 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L6 = 154\n\t// FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L7 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L7 = 155\n\t// FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L8 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L8 = 156\n\t// FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L9 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L9 = 157\n\t// FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L10 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L10 = 158\n\t// FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L11 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L11 = 159\n\t// FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_TOTAL as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_TOTAL = 160\n\t// FI_DEV_NVLINK_ERROR_DL_REPLAY as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_ERROR_DL_REPLAY = 161\n\t// FI_DEV_NVLINK_ERROR_DL_RECOVERY as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_ERROR_DL_RECOVERY = 162\n\t// FI_DEV_NVLINK_ERROR_DL_CRC as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_ERROR_DL_CRC = 163\n\t// FI_DEV_NVLINK_GET_SPEED as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_GET_SPEED = 164\n\t// FI_DEV_NVLINK_GET_STATE as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_GET_STATE = 165\n\t// FI_DEV_NVLINK_GET_VERSION as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_GET_VERSION = 166\n\t// FI_DEV_NVLINK_GET_POWER_STATE as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_GET_POWER_STATE = 167\n\t// FI_DEV_NVLINK_GET_POWER_THRESHOLD as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_GET_POWER_THRESHOLD = 168\n\t// FI_DEV_PCIE_L0_TO_RECOVERY_COUNTER as defined in nvml/nvml.h\n\tFI_DEV_PCIE_L0_TO_RECOVERY_COUNTER = 169\n\t// FI_DEV_C2C_LINK_COUNT as defined in nvml/nvml.h\n\tFI_DEV_C2C_LINK_COUNT = 170\n\t// FI_DEV_C2C_LINK_GET_STATUS as defined in nvml/nvml.h\n\tFI_DEV_C2C_LINK_GET_STATUS = 171\n\t// FI_DEV_C2C_LINK_GET_MAX_BW as defined in nvml/nvml.h\n\tFI_DEV_C2C_LINK_GET_MAX_BW = 172\n\t// FI_DEV_PCIE_COUNT_CORRECTABLE_ERRORS as defined in nvml/nvml.h\n\tFI_DEV_PCIE_COUNT_CORRECTABLE_ERRORS = 173\n\t// FI_DEV_PCIE_COUNT_NAKS_RECEIVED as defined in nvml/nvml.h\n\tFI_DEV_PCIE_COUNT_NAKS_RECEIVED = 174\n\t// FI_DEV_PCIE_COUNT_RECEIVER_ERROR as defined in nvml/nvml.h\n\tFI_DEV_PCIE_COUNT_RECEIVER_ERROR = 175\n\t// FI_DEV_PCIE_COUNT_BAD_TLP as defined in nvml/nvml.h\n\tFI_DEV_PCIE_COUNT_BAD_TLP = 176\n\t// FI_DEV_PCIE_COUNT_NAKS_SENT as defined in nvml/nvml.h\n\tFI_DEV_PCIE_COUNT_NAKS_SENT = 177\n\t// FI_DEV_PCIE_COUNT_BAD_DLLP as defined in nvml/nvml.h\n\tFI_DEV_PCIE_COUNT_BAD_DLLP = 178\n\t// FI_DEV_PCIE_COUNT_NON_FATAL_ERROR as defined in nvml/nvml.h\n\tFI_DEV_PCIE_COUNT_NON_FATAL_ERROR = 179\n\t// FI_DEV_PCIE_COUNT_FATAL_ERROR as defined in nvml/nvml.h\n\tFI_DEV_PCIE_COUNT_FATAL_ERROR = 180\n\t// FI_DEV_PCIE_COUNT_UNSUPPORTED_REQ as defined in nvml/nvml.h\n\tFI_DEV_PCIE_COUNT_UNSUPPORTED_REQ = 181\n\t// FI_DEV_PCIE_COUNT_LCRC_ERROR as defined in nvml/nvml.h\n\tFI_DEV_PCIE_COUNT_LCRC_ERROR = 182\n\t// FI_DEV_PCIE_COUNT_LANE_ERROR as defined in nvml/nvml.h\n\tFI_DEV_PCIE_COUNT_LANE_ERROR = 183\n\t// FI_DEV_IS_RESETLESS_MIG_SUPPORTED as defined in nvml/nvml.h\n\tFI_DEV_IS_RESETLESS_MIG_SUPPORTED = 184\n\t// FI_DEV_POWER_AVERAGE as defined in nvml/nvml.h\n\tFI_DEV_POWER_AVERAGE = 185\n\t// FI_DEV_POWER_INSTANT as defined in nvml/nvml.h\n\tFI_DEV_POWER_INSTANT = 186\n\t// FI_DEV_POWER_MIN_LIMIT as defined in nvml/nvml.h\n\tFI_DEV_POWER_MIN_LIMIT = 187\n\t// FI_DEV_POWER_MAX_LIMIT as defined in nvml/nvml.h\n\tFI_DEV_POWER_MAX_LIMIT = 188\n\t// FI_DEV_POWER_DEFAULT_LIMIT as defined in nvml/nvml.h\n\tFI_DEV_POWER_DEFAULT_LIMIT = 189\n\t// FI_DEV_POWER_CURRENT_LIMIT as defined in nvml/nvml.h\n\tFI_DEV_POWER_CURRENT_LIMIT = 190\n\t// FI_DEV_ENERGY as defined in nvml/nvml.h\n\tFI_DEV_ENERGY = 191\n\t// FI_DEV_POWER_REQUESTED_LIMIT as defined in nvml/nvml.h\n\tFI_DEV_POWER_REQUESTED_LIMIT = 192\n\t// FI_DEV_TEMPERATURE_SHUTDOWN_TLIMIT as defined in nvml/nvml.h\n\tFI_DEV_TEMPERATURE_SHUTDOWN_TLIMIT = 193\n\t// FI_DEV_TEMPERATURE_SLOWDOWN_TLIMIT as defined in nvml/nvml.h\n\tFI_DEV_TEMPERATURE_SLOWDOWN_TLIMIT = 194\n\t// FI_DEV_TEMPERATURE_MEM_MAX_TLIMIT as defined in nvml/nvml.h\n\tFI_DEV_TEMPERATURE_MEM_MAX_TLIMIT = 195\n\t// FI_DEV_TEMPERATURE_GPU_MAX_TLIMIT as defined in nvml/nvml.h\n\tFI_DEV_TEMPERATURE_GPU_MAX_TLIMIT = 196\n\t// FI_DEV_PCIE_COUNT_TX_BYTES as defined in nvml/nvml.h\n\tFI_DEV_PCIE_COUNT_TX_BYTES = 197\n\t// FI_DEV_PCIE_COUNT_RX_BYTES as defined in nvml/nvml.h\n\tFI_DEV_PCIE_COUNT_RX_BYTES = 198\n\t// FI_DEV_IS_MIG_MODE_INDEPENDENT_MIG_QUERY_CAPABLE as defined in nvml/nvml.h\n\tFI_DEV_IS_MIG_MODE_INDEPENDENT_MIG_QUERY_CAPABLE = 199\n\t// FI_DEV_NVLINK_GET_POWER_THRESHOLD_MAX as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_GET_POWER_THRESHOLD_MAX = 200\n\t// FI_DEV_NVLINK_COUNT_XMIT_PACKETS as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_COUNT_XMIT_PACKETS = 201\n\t// FI_DEV_NVLINK_COUNT_XMIT_BYTES as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_COUNT_XMIT_BYTES = 202\n\t// FI_DEV_NVLINK_COUNT_RCV_PACKETS as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_COUNT_RCV_PACKETS = 203\n\t// FI_DEV_NVLINK_COUNT_RCV_BYTES as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_COUNT_RCV_BYTES = 204\n\t// FI_DEV_NVLINK_COUNT_VL15_DROPPED as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_COUNT_VL15_DROPPED = 205\n\t// FI_DEV_NVLINK_COUNT_MALFORMED_PACKET_ERRORS as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_COUNT_MALFORMED_PACKET_ERRORS = 206\n\t// FI_DEV_NVLINK_COUNT_BUFFER_OVERRUN_ERRORS as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_COUNT_BUFFER_OVERRUN_ERRORS = 207\n\t// FI_DEV_NVLINK_COUNT_RCV_ERRORS as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_COUNT_RCV_ERRORS = 208\n\t// FI_DEV_NVLINK_COUNT_RCV_REMOTE_ERRORS as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_COUNT_RCV_REMOTE_ERRORS = 209\n\t// FI_DEV_NVLINK_COUNT_RCV_GENERAL_ERRORS as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_COUNT_RCV_GENERAL_ERRORS = 210\n\t// FI_DEV_NVLINK_COUNT_LOCAL_LINK_INTEGRITY_ERRORS as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_COUNT_LOCAL_LINK_INTEGRITY_ERRORS = 211\n\t// FI_DEV_NVLINK_COUNT_XMIT_DISCARDS as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_COUNT_XMIT_DISCARDS = 212\n\t// FI_DEV_NVLINK_COUNT_LINK_RECOVERY_SUCCESSFUL_EVENTS as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_COUNT_LINK_RECOVERY_SUCCESSFUL_EVENTS = 213\n\t// FI_DEV_NVLINK_COUNT_LINK_RECOVERY_FAILED_EVENTS as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_COUNT_LINK_RECOVERY_FAILED_EVENTS = 214\n\t// FI_DEV_NVLINK_COUNT_LINK_RECOVERY_EVENTS as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_COUNT_LINK_RECOVERY_EVENTS = 215\n\t// FI_DEV_NVLINK_COUNT_RAW_BER_LANE0 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_COUNT_RAW_BER_LANE0 = 216\n\t// FI_DEV_NVLINK_COUNT_RAW_BER_LANE1 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_COUNT_RAW_BER_LANE1 = 217\n\t// FI_DEV_NVLINK_COUNT_RAW_BER as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_COUNT_RAW_BER = 218\n\t// FI_DEV_NVLINK_COUNT_EFFECTIVE_ERRORS as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_COUNT_EFFECTIVE_ERRORS = 219\n\t// FI_DEV_NVLINK_COUNT_EFFECTIVE_BER as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_COUNT_EFFECTIVE_BER = 220\n\t// FI_DEV_NVLINK_COUNT_SYMBOL_ERRORS as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_COUNT_SYMBOL_ERRORS = 221\n\t// FI_DEV_NVLINK_COUNT_SYMBOL_BER as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_COUNT_SYMBOL_BER = 222\n\t// FI_DEV_NVLINK_GET_POWER_THRESHOLD_MIN as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_GET_POWER_THRESHOLD_MIN = 223\n\t// FI_DEV_NVLINK_GET_POWER_THRESHOLD_UNITS as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_GET_POWER_THRESHOLD_UNITS = 224\n\t// FI_DEV_NVLINK_GET_POWER_THRESHOLD_SUPPORTED as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_GET_POWER_THRESHOLD_SUPPORTED = 225\n\t// FI_DEV_RESET_STATUS as defined in nvml/nvml.h\n\tFI_DEV_RESET_STATUS = 226\n\t// FI_DEV_DRAIN_AND_RESET_STATUS as defined in nvml/nvml.h\n\tFI_DEV_DRAIN_AND_RESET_STATUS = 227\n\t// FI_DEV_PCIE_OUTBOUND_ATOMICS_MASK as defined in nvml/nvml.h\n\tFI_DEV_PCIE_OUTBOUND_ATOMICS_MASK = 228\n\t// FI_DEV_PCIE_INBOUND_ATOMICS_MASK as defined in nvml/nvml.h\n\tFI_DEV_PCIE_INBOUND_ATOMICS_MASK = 229\n\t// FI_DEV_GET_GPU_RECOVERY_ACTION as defined in nvml/nvml.h\n\tFI_DEV_GET_GPU_RECOVERY_ACTION = 230\n\t// FI_DEV_C2C_LINK_ERROR_INTR as defined in nvml/nvml.h\n\tFI_DEV_C2C_LINK_ERROR_INTR = 231\n\t// FI_DEV_C2C_LINK_ERROR_REPLAY as defined in nvml/nvml.h\n\tFI_DEV_C2C_LINK_ERROR_REPLAY = 232\n\t// FI_DEV_C2C_LINK_ERROR_REPLAY_B2B as defined in nvml/nvml.h\n\tFI_DEV_C2C_LINK_ERROR_REPLAY_B2B = 233\n\t// FI_DEV_C2C_LINK_POWER_STATE as defined in nvml/nvml.h\n\tFI_DEV_C2C_LINK_POWER_STATE = 234\n\t// FI_DEV_NVLINK_COUNT_FEC_HISTORY_0 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_COUNT_FEC_HISTORY_0 = 235\n\t// FI_DEV_NVLINK_COUNT_FEC_HISTORY_1 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_COUNT_FEC_HISTORY_1 = 236\n\t// FI_DEV_NVLINK_COUNT_FEC_HISTORY_2 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_COUNT_FEC_HISTORY_2 = 237\n\t// FI_DEV_NVLINK_COUNT_FEC_HISTORY_3 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_COUNT_FEC_HISTORY_3 = 238\n\t// FI_DEV_NVLINK_COUNT_FEC_HISTORY_4 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_COUNT_FEC_HISTORY_4 = 239\n\t// FI_DEV_NVLINK_COUNT_FEC_HISTORY_5 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_COUNT_FEC_HISTORY_5 = 240\n\t// FI_DEV_NVLINK_COUNT_FEC_HISTORY_6 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_COUNT_FEC_HISTORY_6 = 241\n\t// FI_DEV_NVLINK_COUNT_FEC_HISTORY_7 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_COUNT_FEC_HISTORY_7 = 242\n\t// FI_DEV_NVLINK_COUNT_FEC_HISTORY_8 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_COUNT_FEC_HISTORY_8 = 243\n\t// FI_DEV_NVLINK_COUNT_FEC_HISTORY_9 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_COUNT_FEC_HISTORY_9 = 244\n\t// FI_DEV_NVLINK_COUNT_FEC_HISTORY_10 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_COUNT_FEC_HISTORY_10 = 245\n\t// FI_DEV_NVLINK_COUNT_FEC_HISTORY_11 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_COUNT_FEC_HISTORY_11 = 246\n\t// FI_DEV_NVLINK_COUNT_FEC_HISTORY_12 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_COUNT_FEC_HISTORY_12 = 247\n\t// FI_DEV_NVLINK_COUNT_FEC_HISTORY_13 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_COUNT_FEC_HISTORY_13 = 248\n\t// FI_DEV_NVLINK_COUNT_FEC_HISTORY_14 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_COUNT_FEC_HISTORY_14 = 249\n\t// FI_DEV_NVLINK_COUNT_FEC_HISTORY_15 as defined in nvml/nvml.h\n\tFI_DEV_NVLINK_COUNT_FEC_HISTORY_15 = 250\n\t// FI_DEV_CLOCKS_EVENT_REASON_SW_POWER_CAP as defined in nvml/nvml.h\n\tFI_DEV_CLOCKS_EVENT_REASON_SW_POWER_CAP = 74\n\t// FI_DEV_CLOCKS_EVENT_REASON_SYNC_BOOST as defined in nvml/nvml.h\n\tFI_DEV_CLOCKS_EVENT_REASON_SYNC_BOOST = 76\n\t// FI_DEV_CLOCKS_EVENT_REASON_SW_THERM_SLOWDOWN as defined in nvml/nvml.h\n\tFI_DEV_CLOCKS_EVENT_REASON_SW_THERM_SLOWDOWN = 251\n\t// FI_DEV_CLOCKS_EVENT_REASON_HW_THERM_SLOWDOWN as defined in nvml/nvml.h\n\tFI_DEV_CLOCKS_EVENT_REASON_HW_THERM_SLOWDOWN = 252\n\t// FI_DEV_CLOCKS_EVENT_REASON_HW_POWER_BRAKE_SLOWDOWN as defined in nvml/nvml.h\n\tFI_DEV_CLOCKS_EVENT_REASON_HW_POWER_BRAKE_SLOWDOWN = 253\n\t// FI_DEV_POWER_SYNC_BALANCING_FREQ as defined in nvml/nvml.h\n\tFI_DEV_POWER_SYNC_BALANCING_FREQ = 254\n\t// FI_DEV_POWER_SYNC_BALANCING_AF as defined in nvml/nvml.h\n\tFI_DEV_POWER_SYNC_BALANCING_AF = 255\n\t// FI_PWR_SMOOTHING_ENABLED as defined in nvml/nvml.h\n\tFI_PWR_SMOOTHING_ENABLED = 256\n\t// FI_PWR_SMOOTHING_PRIV_LVL as defined in nvml/nvml.h\n\tFI_PWR_SMOOTHING_PRIV_LVL = 257\n\t// FI_PWR_SMOOTHING_IMM_RAMP_DOWN_ENABLED as defined in nvml/nvml.h\n\tFI_PWR_SMOOTHING_IMM_RAMP_DOWN_ENABLED = 258\n\t// FI_PWR_SMOOTHING_APPLIED_TMP_CEIL as defined in nvml/nvml.h\n\tFI_PWR_SMOOTHING_APPLIED_TMP_CEIL = 259\n\t// FI_PWR_SMOOTHING_APPLIED_TMP_FLOOR as defined in nvml/nvml.h\n\tFI_PWR_SMOOTHING_APPLIED_TMP_FLOOR = 260\n\t// FI_PWR_SMOOTHING_MAX_PERCENT_TMP_FLOOR_SETTING as defined in nvml/nvml.h\n\tFI_PWR_SMOOTHING_MAX_PERCENT_TMP_FLOOR_SETTING = 261\n\t// FI_PWR_SMOOTHING_MIN_PERCENT_TMP_FLOOR_SETTING as defined in nvml/nvml.h\n\tFI_PWR_SMOOTHING_MIN_PERCENT_TMP_FLOOR_SETTING = 262\n\t// FI_PWR_SMOOTHING_HW_CIRCUITRY_PERCENT_LIFETIME_REMAINING as defined in nvml/nvml.h\n\tFI_PWR_SMOOTHING_HW_CIRCUITRY_PERCENT_LIFETIME_REMAINING = 263\n\t// FI_PWR_SMOOTHING_MAX_NUM_PRESET_PROFILES as defined in nvml/nvml.h\n\tFI_PWR_SMOOTHING_MAX_NUM_PRESET_PROFILES = 264\n\t// FI_PWR_SMOOTHING_PROFILE_PERCENT_TMP_FLOOR as defined in nvml/nvml.h\n\tFI_PWR_SMOOTHING_PROFILE_PERCENT_TMP_FLOOR = 265\n\t// FI_PWR_SMOOTHING_PROFILE_RAMP_UP_RATE as defined in nvml/nvml.h\n\tFI_PWR_SMOOTHING_PROFILE_RAMP_UP_RATE = 266\n\t// FI_PWR_SMOOTHING_PROFILE_RAMP_DOWN_RATE as defined in nvml/nvml.h\n\tFI_PWR_SMOOTHING_PROFILE_RAMP_DOWN_RATE = 267\n\t// FI_PWR_SMOOTHING_PROFILE_RAMP_DOWN_HYST_VAL as defined in nvml/nvml.h\n\tFI_PWR_SMOOTHING_PROFILE_RAMP_DOWN_HYST_VAL = 268\n\t// FI_PWR_SMOOTHING_ACTIVE_PRESET_PROFILE as defined in nvml/nvml.h\n\tFI_PWR_SMOOTHING_ACTIVE_PRESET_PROFILE = 269\n\t// FI_PWR_SMOOTHING_ADMIN_OVERRIDE_PERCENT_TMP_FLOOR as defined in nvml/nvml.h\n\tFI_PWR_SMOOTHING_ADMIN_OVERRIDE_PERCENT_TMP_FLOOR = 270\n\t// FI_PWR_SMOOTHING_ADMIN_OVERRIDE_RAMP_UP_RATE as defined in nvml/nvml.h\n\tFI_PWR_SMOOTHING_ADMIN_OVERRIDE_RAMP_UP_RATE = 271\n\t// FI_PWR_SMOOTHING_ADMIN_OVERRIDE_RAMP_DOWN_RATE as defined in nvml/nvml.h\n\tFI_PWR_SMOOTHING_ADMIN_OVERRIDE_RAMP_DOWN_RATE = 272\n\t// FI_PWR_SMOOTHING_ADMIN_OVERRIDE_RAMP_DOWN_HYST_VAL as defined in nvml/nvml.h\n\tFI_PWR_SMOOTHING_ADMIN_OVERRIDE_RAMP_DOWN_HYST_VAL = 273\n\t// FI_MAX as defined in nvml/nvml.h\n\tFI_MAX = 274\n\t// NVLINK_LOW_POWER_THRESHOLD_UNIT_100US as defined in nvml/nvml.h\n\tNVLINK_LOW_POWER_THRESHOLD_UNIT_100US = 0\n\t// NVLINK_LOW_POWER_THRESHOLD_UNIT_50US as defined in nvml/nvml.h\n\tNVLINK_LOW_POWER_THRESHOLD_UNIT_50US = 1\n\t// NVLINK_POWER_STATE_HIGH_SPEED as defined in nvml/nvml.h\n\tNVLINK_POWER_STATE_HIGH_SPEED = 0\n\t// NVLINK_POWER_STATE_LOW as defined in nvml/nvml.h\n\tNVLINK_POWER_STATE_LOW = 1\n\t// NVLINK_LOW_POWER_THRESHOLD_MIN as defined in nvml/nvml.h\n\tNVLINK_LOW_POWER_THRESHOLD_MIN = 1\n\t// NVLINK_LOW_POWER_THRESHOLD_MAX as defined in nvml/nvml.h\n\tNVLINK_LOW_POWER_THRESHOLD_MAX = 8191\n\t// NVLINK_LOW_POWER_THRESHOLD_RESET as defined in nvml/nvml.h\n\tNVLINK_LOW_POWER_THRESHOLD_RESET = 4294967295\n\t// NVLINK_LOW_POWER_THRESHOLD_DEFAULT as defined in nvml/nvml.h\n\tNVLINK_LOW_POWER_THRESHOLD_DEFAULT = 4294967295\n\t// C2C_POWER_STATE_FULL_POWER as defined in nvml/nvml.h\n\tC2C_POWER_STATE_FULL_POWER = 0\n\t// C2C_POWER_STATE_LOW_POWER as defined in nvml/nvml.h\n\tC2C_POWER_STATE_LOW_POWER = 1\n\t// EventTypeNone as defined in nvml/nvml.h\n\tEventTypeNone = 0\n\t// EventTypeSingleBitEccError as defined in nvml/nvml.h\n\tEventTypeSingleBitEccError = 1\n\t// EventTypeDoubleBitEccError as defined in nvml/nvml.h\n\tEventTypeDoubleBitEccError = 2\n\t// EventTypePState as defined in nvml/nvml.h\n\tEventTypePState = 4\n\t// EventTypeXidCriticalError as defined in nvml/nvml.h\n\tEventTypeXidCriticalError = 8\n\t// EventTypeClock as defined in nvml/nvml.h\n\tEventTypeClock = 16\n\t// EventTypePowerSourceChange as defined in nvml/nvml.h\n\tEventTypePowerSourceChange = 128\n\t// EventMigConfigChange as defined in nvml/nvml.h\n\tEventMigConfigChange = 256\n\t// EventTypeSingleBitEccErrorStorm as defined in nvml/nvml.h\n\tEventTypeSingleBitEccErrorStorm = 512\n\t// EventTypeDramRetirementEvent as defined in nvml/nvml.h\n\tEventTypeDramRetirementEvent = 1024\n\t// EventTypeDramRetirementFailure as defined in nvml/nvml.h\n\tEventTypeDramRetirementFailure = 2048\n\t// EventTypeNonFatalPoisonError as defined in nvml/nvml.h\n\tEventTypeNonFatalPoisonError = 4096\n\t// EventTypeFatalPoisonError as defined in nvml/nvml.h\n\tEventTypeFatalPoisonError = 8192\n\t// EventTypeGpuUnavailableError as defined in nvml/nvml.h\n\tEventTypeGpuUnavailableError = 16384\n\t// EventTypeGpuRecoveryAction as defined in nvml/nvml.h\n\tEventTypeGpuRecoveryAction = 32768\n\t// EventTypeAll as defined in nvml/nvml.h\n\tEventTypeAll = 65439\n\t// SystemEventTypeGpuDriverUnbind as defined in nvml/nvml.h\n\tSystemEventTypeGpuDriverUnbind = 1\n\t// SystemEventTypeGpuDriverBind as defined in nvml/nvml.h\n\tSystemEventTypeGpuDriverBind = 2\n\t// SystemEventTypeCount as defined in nvml/nvml.h\n\tSystemEventTypeCount = 2\n\t// ClocksEventReasonGpuIdle as defined in nvml/nvml.h\n\tClocksEventReasonGpuIdle = 1\n\t// ClocksEventReasonApplicationsClocksSetting as defined in nvml/nvml.h\n\tClocksEventReasonApplicationsClocksSetting = 2\n\t// ClocksThrottleReasonUserDefinedClocks as defined in nvml/nvml.h\n\tClocksThrottleReasonUserDefinedClocks = 2\n\t// ClocksEventReasonSwPowerCap as defined in nvml/nvml.h\n\tClocksEventReasonSwPowerCap = 4\n\t// ClocksThrottleReasonHwSlowdown as defined in nvml/nvml.h\n\tClocksThrottleReasonHwSlowdown = 8\n\t// ClocksEventReasonSyncBoost as defined in nvml/nvml.h\n\tClocksEventReasonSyncBoost = 16\n\t// ClocksEventReasonSwThermalSlowdown as defined in nvml/nvml.h\n\tClocksEventReasonSwThermalSlowdown = 32\n\t// ClocksThrottleReasonHwThermalSlowdown as defined in nvml/nvml.h\n\tClocksThrottleReasonHwThermalSlowdown = 64\n\t// ClocksThrottleReasonHwPowerBrakeSlowdown as defined in nvml/nvml.h\n\tClocksThrottleReasonHwPowerBrakeSlowdown = 128\n\t// ClocksEventReasonDisplayClockSetting as defined in nvml/nvml.h\n\tClocksEventReasonDisplayClockSetting = 256\n\t// ClocksEventReasonNone as defined in nvml/nvml.h\n\tClocksEventReasonNone = 0\n\t// ClocksEventReasonAll as defined in nvml/nvml.h\n\tClocksEventReasonAll = 511\n\t// ClocksThrottleReasonGpuIdle as defined in nvml/nvml.h\n\tClocksThrottleReasonGpuIdle = 1\n\t// ClocksThrottleReasonApplicationsClocksSetting as defined in nvml/nvml.h\n\tClocksThrottleReasonApplicationsClocksSetting = 2\n\t// ClocksThrottleReasonSyncBoost as defined in nvml/nvml.h\n\tClocksThrottleReasonSyncBoost = 16\n\t// ClocksThrottleReasonSwPowerCap as defined in nvml/nvml.h\n\tClocksThrottleReasonSwPowerCap = 4\n\t// ClocksThrottleReasonSwThermalSlowdown as defined in nvml/nvml.h\n\tClocksThrottleReasonSwThermalSlowdown = 32\n\t// ClocksThrottleReasonDisplayClockSetting as defined in nvml/nvml.h\n\tClocksThrottleReasonDisplayClockSetting = 256\n\t// ClocksThrottleReasonNone as defined in nvml/nvml.h\n\tClocksThrottleReasonNone = 0\n\t// ClocksThrottleReasonAll as defined in nvml/nvml.h\n\tClocksThrottleReasonAll = 511\n\t// NVFBC_SESSION_FLAG_DIFFMAP_ENABLED as defined in nvml/nvml.h\n\tNVFBC_SESSION_FLAG_DIFFMAP_ENABLED = 1\n\t// NVFBC_SESSION_FLAG_CLASSIFICATIONMAP_ENABLED as defined in nvml/nvml.h\n\tNVFBC_SESSION_FLAG_CLASSIFICATIONMAP_ENABLED = 2\n\t// NVFBC_SESSION_FLAG_CAPTURE_WITH_WAIT_NO_WAIT as defined in nvml/nvml.h\n\tNVFBC_SESSION_FLAG_CAPTURE_WITH_WAIT_NO_WAIT = 4\n\t// NVFBC_SESSION_FLAG_CAPTURE_WITH_WAIT_INFINITE as defined in nvml/nvml.h\n\tNVFBC_SESSION_FLAG_CAPTURE_WITH_WAIT_INFINITE = 8\n\t// NVFBC_SESSION_FLAG_CAPTURE_WITH_WAIT_TIMEOUT as defined in nvml/nvml.h\n\tNVFBC_SESSION_FLAG_CAPTURE_WITH_WAIT_TIMEOUT = 16\n\t// CC_SYSTEM_CPU_CAPS_NONE as defined in nvml/nvml.h\n\tCC_SYSTEM_CPU_CAPS_NONE = 0\n\t// CC_SYSTEM_CPU_CAPS_AMD_SEV as defined in nvml/nvml.h\n\tCC_SYSTEM_CPU_CAPS_AMD_SEV = 1\n\t// CC_SYSTEM_CPU_CAPS_INTEL_TDX as defined in nvml/nvml.h\n\tCC_SYSTEM_CPU_CAPS_INTEL_TDX = 2\n\t// CC_SYSTEM_CPU_CAPS_AMD_SEV_SNP as defined in nvml/nvml.h\n\tCC_SYSTEM_CPU_CAPS_AMD_SEV_SNP = 3\n\t// CC_SYSTEM_CPU_CAPS_AMD_SNP_VTOM as defined in nvml/nvml.h\n\tCC_SYSTEM_CPU_CAPS_AMD_SNP_VTOM = 4\n\t// CC_SYSTEM_GPUS_CC_NOT_CAPABLE as defined in nvml/nvml.h\n\tCC_SYSTEM_GPUS_CC_NOT_CAPABLE = 0\n\t// CC_SYSTEM_GPUS_CC_CAPABLE as defined in nvml/nvml.h\n\tCC_SYSTEM_GPUS_CC_CAPABLE = 1\n\t// CC_SYSTEM_DEVTOOLS_MODE_OFF as defined in nvml/nvml.h\n\tCC_SYSTEM_DEVTOOLS_MODE_OFF = 0\n\t// CC_SYSTEM_DEVTOOLS_MODE_ON as defined in nvml/nvml.h\n\tCC_SYSTEM_DEVTOOLS_MODE_ON = 1\n\t// CC_SYSTEM_ENVIRONMENT_UNAVAILABLE as defined in nvml/nvml.h\n\tCC_SYSTEM_ENVIRONMENT_UNAVAILABLE = 0\n\t// CC_SYSTEM_ENVIRONMENT_SIM as defined in nvml/nvml.h\n\tCC_SYSTEM_ENVIRONMENT_SIM = 1\n\t// CC_SYSTEM_ENVIRONMENT_PROD as defined in nvml/nvml.h\n\tCC_SYSTEM_ENVIRONMENT_PROD = 2\n\t// CC_SYSTEM_FEATURE_DISABLED as defined in nvml/nvml.h\n\tCC_SYSTEM_FEATURE_DISABLED = 0\n\t// CC_SYSTEM_FEATURE_ENABLED as defined in nvml/nvml.h\n\tCC_SYSTEM_FEATURE_ENABLED = 1\n\t// CC_SYSTEM_MULTIGPU_NONE as defined in nvml/nvml.h\n\tCC_SYSTEM_MULTIGPU_NONE = 0\n\t// CC_SYSTEM_MULTIGPU_PROTECTED_PCIE as defined in nvml/nvml.h\n\tCC_SYSTEM_MULTIGPU_PROTECTED_PCIE = 1\n\t// CC_SYSTEM_MULTIGPU_NVLE as defined in nvml/nvml.h\n\tCC_SYSTEM_MULTIGPU_NVLE = 2\n\t// CC_ACCEPTING_CLIENT_REQUESTS_FALSE as defined in nvml/nvml.h\n\tCC_ACCEPTING_CLIENT_REQUESTS_FALSE = 0\n\t// CC_ACCEPTING_CLIENT_REQUESTS_TRUE as defined in nvml/nvml.h\n\tCC_ACCEPTING_CLIENT_REQUESTS_TRUE = 1\n\t// GPU_CERT_CHAIN_SIZE as defined in nvml/nvml.h\n\tGPU_CERT_CHAIN_SIZE = 4096\n\t// GPU_ATTESTATION_CERT_CHAIN_SIZE as defined in nvml/nvml.h\n\tGPU_ATTESTATION_CERT_CHAIN_SIZE = 5120\n\t// CC_GPU_CEC_NONCE_SIZE as defined in nvml/nvml.h\n\tCC_GPU_CEC_NONCE_SIZE = 32\n\t// CC_GPU_ATTESTATION_REPORT_SIZE as defined in nvml/nvml.h\n\tCC_GPU_ATTESTATION_REPORT_SIZE = 8192\n\t// CC_GPU_CEC_ATTESTATION_REPORT_SIZE as defined in nvml/nvml.h\n\tCC_GPU_CEC_ATTESTATION_REPORT_SIZE = 4096\n\t// CC_CEC_ATTESTATION_REPORT_NOT_PRESENT as defined in nvml/nvml.h\n\tCC_CEC_ATTESTATION_REPORT_NOT_PRESENT = 0\n\t// CC_CEC_ATTESTATION_REPORT_PRESENT as defined in nvml/nvml.h\n\tCC_CEC_ATTESTATION_REPORT_PRESENT = 1\n\t// CC_KEY_ROTATION_THRESHOLD_ATTACKER_ADVANTAGE_MIN as defined in nvml/nvml.h\n\tCC_KEY_ROTATION_THRESHOLD_ATTACKER_ADVANTAGE_MIN = 50\n\t// CC_KEY_ROTATION_THRESHOLD_ATTACKER_ADVANTAGE_MAX as defined in nvml/nvml.h\n\tCC_KEY_ROTATION_THRESHOLD_ATTACKER_ADVANTAGE_MAX = 65\n\t// GPU_FABRIC_UUID_LEN as defined in nvml/nvml.h\n\tGPU_FABRIC_UUID_LEN = 16\n\t// GPU_FABRIC_STATE_NOT_SUPPORTED as defined in nvml/nvml.h\n\tGPU_FABRIC_STATE_NOT_SUPPORTED = 0\n\t// GPU_FABRIC_STATE_NOT_STARTED as defined in nvml/nvml.h\n\tGPU_FABRIC_STATE_NOT_STARTED = 1\n\t// GPU_FABRIC_STATE_IN_PROGRESS as defined in nvml/nvml.h\n\tGPU_FABRIC_STATE_IN_PROGRESS = 2\n\t// GPU_FABRIC_STATE_COMPLETED as defined in nvml/nvml.h\n\tGPU_FABRIC_STATE_COMPLETED = 3\n\t// GPU_FABRIC_HEALTH_MASK_DEGRADED_BW_NOT_SUPPORTED as defined in nvml/nvml.h\n\tGPU_FABRIC_HEALTH_MASK_DEGRADED_BW_NOT_SUPPORTED = 0\n\t// GPU_FABRIC_HEALTH_MASK_DEGRADED_BW_TRUE as defined in nvml/nvml.h\n\tGPU_FABRIC_HEALTH_MASK_DEGRADED_BW_TRUE = 1\n\t// GPU_FABRIC_HEALTH_MASK_DEGRADED_BW_FALSE as defined in nvml/nvml.h\n\tGPU_FABRIC_HEALTH_MASK_DEGRADED_BW_FALSE = 2\n\t// GPU_FABRIC_HEALTH_MASK_SHIFT_DEGRADED_BW as defined in nvml/nvml.h\n\tGPU_FABRIC_HEALTH_MASK_SHIFT_DEGRADED_BW = 0\n\t// GPU_FABRIC_HEALTH_MASK_WIDTH_DEGRADED_BW as defined in nvml/nvml.h\n\tGPU_FABRIC_HEALTH_MASK_WIDTH_DEGRADED_BW = 3\n\t// GPU_FABRIC_HEALTH_MASK_ROUTE_RECOVERY_NOT_SUPPORTED as defined in nvml/nvml.h\n\tGPU_FABRIC_HEALTH_MASK_ROUTE_RECOVERY_NOT_SUPPORTED = 0\n\t// GPU_FABRIC_HEALTH_MASK_ROUTE_RECOVERY_TRUE as defined in nvml/nvml.h\n\tGPU_FABRIC_HEALTH_MASK_ROUTE_RECOVERY_TRUE = 1\n\t// GPU_FABRIC_HEALTH_MASK_ROUTE_RECOVERY_FALSE as defined in nvml/nvml.h\n\tGPU_FABRIC_HEALTH_MASK_ROUTE_RECOVERY_FALSE = 2\n\t// GPU_FABRIC_HEALTH_MASK_SHIFT_ROUTE_RECOVERY as defined in nvml/nvml.h\n\tGPU_FABRIC_HEALTH_MASK_SHIFT_ROUTE_RECOVERY = 2\n\t// GPU_FABRIC_HEALTH_MASK_WIDTH_ROUTE_RECOVERY as defined in nvml/nvml.h\n\tGPU_FABRIC_HEALTH_MASK_WIDTH_ROUTE_RECOVERY = 3\n\t// GPU_FABRIC_HEALTH_MASK_ROUTE_UNHEALTHY_NOT_SUPPORTED as defined in nvml/nvml.h\n\tGPU_FABRIC_HEALTH_MASK_ROUTE_UNHEALTHY_NOT_SUPPORTED = 0\n\t// GPU_FABRIC_HEALTH_MASK_ROUTE_UNHEALTHY_TRUE as defined in nvml/nvml.h\n\tGPU_FABRIC_HEALTH_MASK_ROUTE_UNHEALTHY_TRUE = 1\n\t// GPU_FABRIC_HEALTH_MASK_ROUTE_UNHEALTHY_FALSE as defined in nvml/nvml.h\n\tGPU_FABRIC_HEALTH_MASK_ROUTE_UNHEALTHY_FALSE = 2\n\t// GPU_FABRIC_HEALTH_MASK_SHIFT_ROUTE_UNHEALTHY as defined in nvml/nvml.h\n\tGPU_FABRIC_HEALTH_MASK_SHIFT_ROUTE_UNHEALTHY = 4\n\t// GPU_FABRIC_HEALTH_MASK_WIDTH_ROUTE_UNHEALTHY as defined in nvml/nvml.h\n\tGPU_FABRIC_HEALTH_MASK_WIDTH_ROUTE_UNHEALTHY = 3\n\t// GPU_FABRIC_HEALTH_MASK_ACCESS_TIMEOUT_RECOVERY_NOT_SUPPORTED as defined in nvml/nvml.h\n\tGPU_FABRIC_HEALTH_MASK_ACCESS_TIMEOUT_RECOVERY_NOT_SUPPORTED = 0\n\t// GPU_FABRIC_HEALTH_MASK_ACCESS_TIMEOUT_RECOVERY_TRUE as defined in nvml/nvml.h\n\tGPU_FABRIC_HEALTH_MASK_ACCESS_TIMEOUT_RECOVERY_TRUE = 1\n\t// GPU_FABRIC_HEALTH_MASK_ACCESS_TIMEOUT_RECOVERY_FALSE as defined in nvml/nvml.h\n\tGPU_FABRIC_HEALTH_MASK_ACCESS_TIMEOUT_RECOVERY_FALSE = 2\n\t// GPU_FABRIC_HEALTH_MASK_SHIFT_ACCESS_TIMEOUT_RECOVERY as defined in nvml/nvml.h\n\tGPU_FABRIC_HEALTH_MASK_SHIFT_ACCESS_TIMEOUT_RECOVERY = 6\n\t// GPU_FABRIC_HEALTH_MASK_WIDTH_ACCESS_TIMEOUT_RECOVERY as defined in nvml/nvml.h\n\tGPU_FABRIC_HEALTH_MASK_WIDTH_ACCESS_TIMEOUT_RECOVERY = 3\n\t// GPU_FABRIC_HEALTH_MASK_INCORRECT_CONFIGURATION_NOT_SUPPORTED as defined in nvml/nvml.h\n\tGPU_FABRIC_HEALTH_MASK_INCORRECT_CONFIGURATION_NOT_SUPPORTED = 0\n\t// GPU_FABRIC_HEALTH_MASK_INCORRECT_CONFIGURATION_NONE as defined in nvml/nvml.h\n\tGPU_FABRIC_HEALTH_MASK_INCORRECT_CONFIGURATION_NONE = 1\n\t// GPU_FABRIC_HEALTH_MASK_INCORRECT_CONFIGURATION_INCORRECT_SYSGUID as defined in nvml/nvml.h\n\tGPU_FABRIC_HEALTH_MASK_INCORRECT_CONFIGURATION_INCORRECT_SYSGUID = 2\n\t// GPU_FABRIC_HEALTH_MASK_INCORRECT_CONFIGURATION_INCORRECT_CHASSIS_SN as defined in nvml/nvml.h\n\tGPU_FABRIC_HEALTH_MASK_INCORRECT_CONFIGURATION_INCORRECT_CHASSIS_SN = 3\n\t// GPU_FABRIC_HEALTH_MASK_INCORRECT_CONFIGURATION_NO_PARTITION as defined in nvml/nvml.h\n\tGPU_FABRIC_HEALTH_MASK_INCORRECT_CONFIGURATION_NO_PARTITION = 4\n\t// GPU_FABRIC_HEALTH_MASK_INCORRECT_CONFIGURATION_INSUFFICIENT_NVLINKS as defined in nvml/nvml.h\n\tGPU_FABRIC_HEALTH_MASK_INCORRECT_CONFIGURATION_INSUFFICIENT_NVLINKS = 5\n\t// GPU_FABRIC_HEALTH_MASK_SHIFT_INCORRECT_CONFIGURATION as defined in nvml/nvml.h\n\tGPU_FABRIC_HEALTH_MASK_SHIFT_INCORRECT_CONFIGURATION = 8\n\t// GPU_FABRIC_HEALTH_MASK_WIDTH_INCORRECT_CONFIGURATION as defined in nvml/nvml.h\n\tGPU_FABRIC_HEALTH_MASK_WIDTH_INCORRECT_CONFIGURATION = 15\n\t// GPU_FABRIC_HEALTH_SUMMARY_NOT_SUPPORTED as defined in nvml/nvml.h\n\tGPU_FABRIC_HEALTH_SUMMARY_NOT_SUPPORTED = 0\n\t// GPU_FABRIC_HEALTH_SUMMARY_HEALTHY as defined in nvml/nvml.h\n\tGPU_FABRIC_HEALTH_SUMMARY_HEALTHY = 1\n\t// GPU_FABRIC_HEALTH_SUMMARY_UNHEALTHY as defined in nvml/nvml.h\n\tGPU_FABRIC_HEALTH_SUMMARY_UNHEALTHY = 2\n\t// GPU_FABRIC_HEALTH_SUMMARY_LIMITED_CAPACITY as defined in nvml/nvml.h\n\tGPU_FABRIC_HEALTH_SUMMARY_LIMITED_CAPACITY = 3\n\t// INIT_FLAG_NO_GPUS as defined in nvml/nvml.h\n\tINIT_FLAG_NO_GPUS = 1\n\t// INIT_FLAG_NO_ATTACH as defined in nvml/nvml.h\n\tINIT_FLAG_NO_ATTACH = 2\n\t// DEVICE_INFOROM_VERSION_BUFFER_SIZE as defined in nvml/nvml.h\n\tDEVICE_INFOROM_VERSION_BUFFER_SIZE = 16\n\t// DEVICE_UUID_BUFFER_SIZE as defined in nvml/nvml.h\n\tDEVICE_UUID_BUFFER_SIZE = 80\n\t// DEVICE_UUID_V2_BUFFER_SIZE as defined in nvml/nvml.h\n\tDEVICE_UUID_V2_BUFFER_SIZE = 96\n\t// DEVICE_PART_NUMBER_BUFFER_SIZE as defined in nvml/nvml.h\n\tDEVICE_PART_NUMBER_BUFFER_SIZE = 80\n\t// SYSTEM_DRIVER_VERSION_BUFFER_SIZE as defined in nvml/nvml.h\n\tSYSTEM_DRIVER_VERSION_BUFFER_SIZE = 80\n\t// SYSTEM_NVML_VERSION_BUFFER_SIZE as defined in nvml/nvml.h\n\tSYSTEM_NVML_VERSION_BUFFER_SIZE = 80\n\t// DEVICE_NAME_BUFFER_SIZE as defined in nvml/nvml.h\n\tDEVICE_NAME_BUFFER_SIZE = 64\n\t// DEVICE_NAME_V2_BUFFER_SIZE as defined in nvml/nvml.h\n\tDEVICE_NAME_V2_BUFFER_SIZE = 96\n\t// DEVICE_SERIAL_BUFFER_SIZE as defined in nvml/nvml.h\n\tDEVICE_SERIAL_BUFFER_SIZE = 30\n\t// DEVICE_VBIOS_VERSION_BUFFER_SIZE as defined in nvml/nvml.h\n\tDEVICE_VBIOS_VERSION_BUFFER_SIZE = 32\n\t// AFFINITY_SCOPE_NODE as defined in nvml/nvml.h\n\tAFFINITY_SCOPE_NODE = 0\n\t// AFFINITY_SCOPE_SOCKET as defined in nvml/nvml.h\n\tAFFINITY_SCOPE_SOCKET = 1\n\t// NVLINK_BER_MANTISSA_SHIFT as defined in nvml/nvml.h\n\tNVLINK_BER_MANTISSA_SHIFT = 8\n\t// NVLINK_BER_MANTISSA_WIDTH as defined in nvml/nvml.h\n\tNVLINK_BER_MANTISSA_WIDTH = 15\n\t// NVLINK_BER_EXP_SHIFT as defined in nvml/nvml.h\n\tNVLINK_BER_EXP_SHIFT = 0\n\t// NVLINK_BER_EXP_WIDTH as defined in nvml/nvml.h\n\tNVLINK_BER_EXP_WIDTH = 255\n\t// NVLINK_STATE_INACTIVE as defined in nvml/nvml.h\n\tNVLINK_STATE_INACTIVE = 0\n\t// NVLINK_STATE_ACTIVE as defined in nvml/nvml.h\n\tNVLINK_STATE_ACTIVE = 1\n\t// NVLINK_STATE_SLEEP as defined in nvml/nvml.h\n\tNVLINK_STATE_SLEEP = 2\n\t// NVLINK_TOTAL_SUPPORTED_BW_MODES as defined in nvml/nvml.h\n\tNVLINK_TOTAL_SUPPORTED_BW_MODES = 23\n\t// NVLINK_FIRMWARE_UCODE_TYPE_MSE as defined in nvml/nvml.h\n\tNVLINK_FIRMWARE_UCODE_TYPE_MSE = 1\n\t// NVLINK_FIRMWARE_UCODE_TYPE_NETIR as defined in nvml/nvml.h\n\tNVLINK_FIRMWARE_UCODE_TYPE_NETIR = 2\n\t// NVLINK_FIRMWARE_UCODE_TYPE_NETIR_UPHY as defined in nvml/nvml.h\n\tNVLINK_FIRMWARE_UCODE_TYPE_NETIR_UPHY = 3\n\t// NVLINK_FIRMWARE_UCODE_TYPE_NETIR_CLN as defined in nvml/nvml.h\n\tNVLINK_FIRMWARE_UCODE_TYPE_NETIR_CLN = 4\n\t// NVLINK_FIRMWARE_UCODE_TYPE_NETIR_DLN as defined in nvml/nvml.h\n\tNVLINK_FIRMWARE_UCODE_TYPE_NETIR_DLN = 5\n\t// NVLINK_FIRMWARE_VERSION_LENGTH as defined in nvml/nvml.h\n\tNVLINK_FIRMWARE_VERSION_LENGTH = 100\n\t// PRM_DATA_MAX_SIZE as defined in nvml/nvml.h\n\tPRM_DATA_MAX_SIZE = 496\n\t// DEVICE_MIG_DISABLE as defined in nvml/nvml.h\n\tDEVICE_MIG_DISABLE = 0\n\t// DEVICE_MIG_ENABLE as defined in nvml/nvml.h\n\tDEVICE_MIG_ENABLE = 1\n\t// GPU_INSTANCE_PROFILE_1_SLICE as defined in nvml/nvml.h\n\tGPU_INSTANCE_PROFILE_1_SLICE = 0\n\t// GPU_INSTANCE_PROFILE_2_SLICE as defined in nvml/nvml.h\n\tGPU_INSTANCE_PROFILE_2_SLICE = 1\n\t// GPU_INSTANCE_PROFILE_3_SLICE as defined in nvml/nvml.h\n\tGPU_INSTANCE_PROFILE_3_SLICE = 2\n\t// GPU_INSTANCE_PROFILE_4_SLICE as defined in nvml/nvml.h\n\tGPU_INSTANCE_PROFILE_4_SLICE = 3\n\t// GPU_INSTANCE_PROFILE_7_SLICE as defined in nvml/nvml.h\n\tGPU_INSTANCE_PROFILE_7_SLICE = 4\n\t// GPU_INSTANCE_PROFILE_8_SLICE as defined in nvml/nvml.h\n\tGPU_INSTANCE_PROFILE_8_SLICE = 5\n\t// GPU_INSTANCE_PROFILE_6_SLICE as defined in nvml/nvml.h\n\tGPU_INSTANCE_PROFILE_6_SLICE = 6\n\t// GPU_INSTANCE_PROFILE_1_SLICE_REV1 as defined in nvml/nvml.h\n\tGPU_INSTANCE_PROFILE_1_SLICE_REV1 = 7\n\t// GPU_INSTANCE_PROFILE_2_SLICE_REV1 as defined in nvml/nvml.h\n\tGPU_INSTANCE_PROFILE_2_SLICE_REV1 = 8\n\t// GPU_INSTANCE_PROFILE_1_SLICE_REV2 as defined in nvml/nvml.h\n\tGPU_INSTANCE_PROFILE_1_SLICE_REV2 = 9\n\t// GPU_INSTANCE_PROFILE_1_SLICE_GFX as defined in nvml/nvml.h\n\tGPU_INSTANCE_PROFILE_1_SLICE_GFX = 10\n\t// GPU_INSTANCE_PROFILE_2_SLICE_GFX as defined in nvml/nvml.h\n\tGPU_INSTANCE_PROFILE_2_SLICE_GFX = 11\n\t// GPU_INSTANCE_PROFILE_4_SLICE_GFX as defined in nvml/nvml.h\n\tGPU_INSTANCE_PROFILE_4_SLICE_GFX = 12\n\t// GPU_INSTANCE_PROFILE_1_SLICE_NO_ME as defined in nvml/nvml.h\n\tGPU_INSTANCE_PROFILE_1_SLICE_NO_ME = 13\n\t// GPU_INSTANCE_PROFILE_2_SLICE_NO_ME as defined in nvml/nvml.h\n\tGPU_INSTANCE_PROFILE_2_SLICE_NO_ME = 14\n\t// GPU_INSTANCE_PROFILE_1_SLICE_ALL_ME as defined in nvml/nvml.h\n\tGPU_INSTANCE_PROFILE_1_SLICE_ALL_ME = 15\n\t// GPU_INSTANCE_PROFILE_2_SLICE_ALL_ME as defined in nvml/nvml.h\n\tGPU_INSTANCE_PROFILE_2_SLICE_ALL_ME = 16\n\t// GPU_INSTANCE_PROFILE_COUNT as defined in nvml/nvml.h\n\tGPU_INSTANCE_PROFILE_COUNT = 17\n\t// GPU_INSTANCE_PROFILE_CAPS_P2P as defined in nvml/nvml.h\n\tGPU_INSTANCE_PROFILE_CAPS_P2P = 1\n\t// GPU_INTSTANCE_PROFILE_CAPS_P2P as defined in nvml/nvml.h\n\tGPU_INTSTANCE_PROFILE_CAPS_P2P = 1\n\t// GPU_INSTANCE_PROFILE_CAPS_GFX as defined in nvml/nvml.h\n\tGPU_INSTANCE_PROFILE_CAPS_GFX = 2\n\t// COMPUTE_INSTANCE_PROFILE_CAPS_GFX as defined in nvml/nvml.h\n\tCOMPUTE_INSTANCE_PROFILE_CAPS_GFX = 1\n\t// COMPUTE_INSTANCE_PROFILE_1_SLICE as defined in nvml/nvml.h\n\tCOMPUTE_INSTANCE_PROFILE_1_SLICE = 0\n\t// COMPUTE_INSTANCE_PROFILE_2_SLICE as defined in nvml/nvml.h\n\tCOMPUTE_INSTANCE_PROFILE_2_SLICE = 1\n\t// COMPUTE_INSTANCE_PROFILE_3_SLICE as defined in nvml/nvml.h\n\tCOMPUTE_INSTANCE_PROFILE_3_SLICE = 2\n\t// COMPUTE_INSTANCE_PROFILE_4_SLICE as defined in nvml/nvml.h\n\tCOMPUTE_INSTANCE_PROFILE_4_SLICE = 3\n\t// COMPUTE_INSTANCE_PROFILE_7_SLICE as defined in nvml/nvml.h\n\tCOMPUTE_INSTANCE_PROFILE_7_SLICE = 4\n\t// COMPUTE_INSTANCE_PROFILE_8_SLICE as defined in nvml/nvml.h\n\tCOMPUTE_INSTANCE_PROFILE_8_SLICE = 5\n\t// COMPUTE_INSTANCE_PROFILE_6_SLICE as defined in nvml/nvml.h\n\tCOMPUTE_INSTANCE_PROFILE_6_SLICE = 6\n\t// COMPUTE_INSTANCE_PROFILE_1_SLICE_REV1 as defined in nvml/nvml.h\n\tCOMPUTE_INSTANCE_PROFILE_1_SLICE_REV1 = 7\n\t// COMPUTE_INSTANCE_PROFILE_COUNT as defined in nvml/nvml.h\n\tCOMPUTE_INSTANCE_PROFILE_COUNT = 8\n\t// COMPUTE_INSTANCE_ENGINE_PROFILE_SHARED as defined in nvml/nvml.h\n\tCOMPUTE_INSTANCE_ENGINE_PROFILE_SHARED = 0\n\t// COMPUTE_INSTANCE_ENGINE_PROFILE_COUNT as defined in nvml/nvml.h\n\tCOMPUTE_INSTANCE_ENGINE_PROFILE_COUNT = 1\n\t// GPM_METRICS_GET_VERSION as defined in nvml/nvml.h\n\tGPM_METRICS_GET_VERSION = 1\n\t// GPM_SUPPORT_VERSION as defined in nvml/nvml.h\n\tGPM_SUPPORT_VERSION = 1\n\t// DEV_CAP_EGM as defined in nvml/nvml.h\n\tDEV_CAP_EGM = 1\n\t// WORKLOAD_POWER_MAX_PROFILES as defined in nvml/nvml.h\n\tWORKLOAD_POWER_MAX_PROFILES = 255\n\t// POWER_SMOOTHING_MAX_NUM_PROFILES as defined in nvml/nvml.h\n\tPOWER_SMOOTHING_MAX_NUM_PROFILES = 5\n\t// POWER_SMOOTHING_NUM_PROFILE_PARAMS as defined in nvml/nvml.h\n\tPOWER_SMOOTHING_NUM_PROFILE_PARAMS = 4\n\t// POWER_SMOOTHING_ADMIN_OVERRIDE_NOT_SET as defined in nvml/nvml.h\n\tPOWER_SMOOTHING_ADMIN_OVERRIDE_NOT_SET = 4294967295\n\t// POWER_SMOOTHING_PROFILE_PARAM_PERCENT_TMP_FLOOR as defined in nvml/nvml.h\n\tPOWER_SMOOTHING_PROFILE_PARAM_PERCENT_TMP_FLOOR = 0\n\t// POWER_SMOOTHING_PROFILE_PARAM_RAMP_UP_RATE as defined in nvml/nvml.h\n\tPOWER_SMOOTHING_PROFILE_PARAM_RAMP_UP_RATE = 1\n\t// POWER_SMOOTHING_PROFILE_PARAM_RAMP_DOWN_RATE as defined in nvml/nvml.h\n\tPOWER_SMOOTHING_PROFILE_PARAM_RAMP_DOWN_RATE = 2\n\t// POWER_SMOOTHING_PROFILE_PARAM_RAMP_DOWN_HYSTERESIS as defined in nvml/nvml.h\n\tPOWER_SMOOTHING_PROFILE_PARAM_RAMP_DOWN_HYSTERESIS = 3\n)\n\n// BridgeChipType as declared in nvml/nvml.h\ntype BridgeChipType int32\n\n// BridgeChipType enumeration from nvml/nvml.h\nconst (\n\tBRIDGE_CHIP_PLX  BridgeChipType = iota\n\tBRIDGE_CHIP_BRO4 BridgeChipType = 1\n)\n\n// NvLinkUtilizationCountUnits as declared in nvml/nvml.h\ntype NvLinkUtilizationCountUnits int32\n\n// NvLinkUtilizationCountUnits enumeration from nvml/nvml.h\nconst (\n\tNVLINK_COUNTER_UNIT_CYCLES   NvLinkUtilizationCountUnits = iota\n\tNVLINK_COUNTER_UNIT_PACKETS  NvLinkUtilizationCountUnits = 1\n\tNVLINK_COUNTER_UNIT_BYTES    NvLinkUtilizationCountUnits = 2\n\tNVLINK_COUNTER_UNIT_RESERVED NvLinkUtilizationCountUnits = 3\n\tNVLINK_COUNTER_UNIT_COUNT    NvLinkUtilizationCountUnits = 4\n)\n\n// NvLinkUtilizationCountPktTypes as declared in nvml/nvml.h\ntype NvLinkUtilizationCountPktTypes int32\n\n// NvLinkUtilizationCountPktTypes enumeration from nvml/nvml.h\nconst (\n\tNVLINK_COUNTER_PKTFILTER_NOP        NvLinkUtilizationCountPktTypes = 1\n\tNVLINK_COUNTER_PKTFILTER_READ       NvLinkUtilizationCountPktTypes = 2\n\tNVLINK_COUNTER_PKTFILTER_WRITE      NvLinkUtilizationCountPktTypes = 4\n\tNVLINK_COUNTER_PKTFILTER_RATOM      NvLinkUtilizationCountPktTypes = 8\n\tNVLINK_COUNTER_PKTFILTER_NRATOM     NvLinkUtilizationCountPktTypes = 16\n\tNVLINK_COUNTER_PKTFILTER_FLUSH      NvLinkUtilizationCountPktTypes = 32\n\tNVLINK_COUNTER_PKTFILTER_RESPDATA   NvLinkUtilizationCountPktTypes = 64\n\tNVLINK_COUNTER_PKTFILTER_RESPNODATA NvLinkUtilizationCountPktTypes = 128\n\tNVLINK_COUNTER_PKTFILTER_ALL        NvLinkUtilizationCountPktTypes = 255\n)\n\n// NvLinkCapability as declared in nvml/nvml.h\ntype NvLinkCapability int32\n\n// NvLinkCapability enumeration from nvml/nvml.h\nconst (\n\tNVLINK_CAP_P2P_SUPPORTED  NvLinkCapability = iota\n\tNVLINK_CAP_SYSMEM_ACCESS  NvLinkCapability = 1\n\tNVLINK_CAP_P2P_ATOMICS    NvLinkCapability = 2\n\tNVLINK_CAP_SYSMEM_ATOMICS NvLinkCapability = 3\n\tNVLINK_CAP_SLI_BRIDGE     NvLinkCapability = 4\n\tNVLINK_CAP_VALID          NvLinkCapability = 5\n\tNVLINK_CAP_COUNT          NvLinkCapability = 6\n)\n\n// NvLinkErrorCounter as declared in nvml/nvml.h\ntype NvLinkErrorCounter int32\n\n// NvLinkErrorCounter enumeration from nvml/nvml.h\nconst (\n\tNVLINK_ERROR_DL_REPLAY   NvLinkErrorCounter = iota\n\tNVLINK_ERROR_DL_RECOVERY NvLinkErrorCounter = 1\n\tNVLINK_ERROR_DL_CRC_FLIT NvLinkErrorCounter = 2\n\tNVLINK_ERROR_DL_CRC_DATA NvLinkErrorCounter = 3\n\tNVLINK_ERROR_DL_ECC_DATA NvLinkErrorCounter = 4\n\tNVLINK_ERROR_COUNT       NvLinkErrorCounter = 5\n)\n\n// IntNvLinkDeviceType as declared in nvml/nvml.h\ntype IntNvLinkDeviceType int32\n\n// IntNvLinkDeviceType enumeration from nvml/nvml.h\nconst (\n\tNVLINK_DEVICE_TYPE_GPU     IntNvLinkDeviceType = iota\n\tNVLINK_DEVICE_TYPE_IBMNPU  IntNvLinkDeviceType = 1\n\tNVLINK_DEVICE_TYPE_SWITCH  IntNvLinkDeviceType = 2\n\tNVLINK_DEVICE_TYPE_UNKNOWN IntNvLinkDeviceType = 255\n)\n\n// GpuTopologyLevel as declared in nvml/nvml.h\ntype GpuTopologyLevel int32\n\n// GpuTopologyLevel enumeration from nvml/nvml.h\nconst (\n\tTOPOLOGY_INTERNAL   GpuTopologyLevel = iota\n\tTOPOLOGY_SINGLE     GpuTopologyLevel = 10\n\tTOPOLOGY_MULTIPLE   GpuTopologyLevel = 20\n\tTOPOLOGY_HOSTBRIDGE GpuTopologyLevel = 30\n\tTOPOLOGY_NODE       GpuTopologyLevel = 40\n\tTOPOLOGY_SYSTEM     GpuTopologyLevel = 50\n)\n\n// GpuP2PStatus as declared in nvml/nvml.h\ntype GpuP2PStatus int32\n\n// GpuP2PStatus enumeration from nvml/nvml.h\nconst (\n\tP2P_STATUS_OK                         GpuP2PStatus = iota\n\tP2P_STATUS_CHIPSET_NOT_SUPPORED       GpuP2PStatus = 1\n\tP2P_STATUS_CHIPSET_NOT_SUPPORTED      GpuP2PStatus = 1\n\tP2P_STATUS_GPU_NOT_SUPPORTED          GpuP2PStatus = 2\n\tP2P_STATUS_IOH_TOPOLOGY_NOT_SUPPORTED GpuP2PStatus = 3\n\tP2P_STATUS_DISABLED_BY_REGKEY         GpuP2PStatus = 4\n\tP2P_STATUS_NOT_SUPPORTED              GpuP2PStatus = 5\n\tP2P_STATUS_UNKNOWN                    GpuP2PStatus = 6\n)\n\n// GpuP2PCapsIndex as declared in nvml/nvml.h\ntype GpuP2PCapsIndex int32\n\n// GpuP2PCapsIndex enumeration from nvml/nvml.h\nconst (\n\tP2P_CAPS_INDEX_READ    GpuP2PCapsIndex = iota\n\tP2P_CAPS_INDEX_WRITE   GpuP2PCapsIndex = 1\n\tP2P_CAPS_INDEX_NVLINK  GpuP2PCapsIndex = 2\n\tP2P_CAPS_INDEX_ATOMICS GpuP2PCapsIndex = 3\n\tP2P_CAPS_INDEX_PCI     GpuP2PCapsIndex = 4\n\tP2P_CAPS_INDEX_PROP    GpuP2PCapsIndex = 4\n\tP2P_CAPS_INDEX_UNKNOWN GpuP2PCapsIndex = 5\n)\n\n// SamplingType as declared in nvml/nvml.h\ntype SamplingType int32\n\n// SamplingType enumeration from nvml/nvml.h\nconst (\n\tTOTAL_POWER_SAMPLES        SamplingType = iota\n\tGPU_UTILIZATION_SAMPLES    SamplingType = 1\n\tMEMORY_UTILIZATION_SAMPLES SamplingType = 2\n\tENC_UTILIZATION_SAMPLES    SamplingType = 3\n\tDEC_UTILIZATION_SAMPLES    SamplingType = 4\n\tPROCESSOR_CLK_SAMPLES      SamplingType = 5\n\tMEMORY_CLK_SAMPLES         SamplingType = 6\n\tMODULE_POWER_SAMPLES       SamplingType = 7\n\tJPG_UTILIZATION_SAMPLES    SamplingType = 8\n\tOFA_UTILIZATION_SAMPLES    SamplingType = 9\n\tSAMPLINGTYPE_COUNT         SamplingType = 10\n)\n\n// PcieUtilCounter as declared in nvml/nvml.h\ntype PcieUtilCounter int32\n\n// PcieUtilCounter enumeration from nvml/nvml.h\nconst (\n\tPCIE_UTIL_TX_BYTES PcieUtilCounter = iota\n\tPCIE_UTIL_RX_BYTES PcieUtilCounter = 1\n\tPCIE_UTIL_COUNT    PcieUtilCounter = 2\n)\n\n// ValueType as declared in nvml/nvml.h\ntype ValueType int32\n\n// ValueType enumeration from nvml/nvml.h\nconst (\n\tVALUE_TYPE_DOUBLE             ValueType = iota\n\tVALUE_TYPE_UNSIGNED_INT       ValueType = 1\n\tVALUE_TYPE_UNSIGNED_LONG      ValueType = 2\n\tVALUE_TYPE_UNSIGNED_LONG_LONG ValueType = 3\n\tVALUE_TYPE_SIGNED_LONG_LONG   ValueType = 4\n\tVALUE_TYPE_SIGNED_INT         ValueType = 5\n\tVALUE_TYPE_UNSIGNED_SHORT     ValueType = 6\n\tVALUE_TYPE_COUNT              ValueType = 7\n)\n\n// PerfPolicyType as declared in nvml/nvml.h\ntype PerfPolicyType int32\n\n// PerfPolicyType enumeration from nvml/nvml.h\nconst (\n\tPERF_POLICY_POWER             PerfPolicyType = iota\n\tPERF_POLICY_THERMAL           PerfPolicyType = 1\n\tPERF_POLICY_SYNC_BOOST        PerfPolicyType = 2\n\tPERF_POLICY_BOARD_LIMIT       PerfPolicyType = 3\n\tPERF_POLICY_LOW_UTILIZATION   PerfPolicyType = 4\n\tPERF_POLICY_RELIABILITY       PerfPolicyType = 5\n\tPERF_POLICY_TOTAL_APP_CLOCKS  PerfPolicyType = 10\n\tPERF_POLICY_TOTAL_BASE_CLOCKS PerfPolicyType = 11\n\tPERF_POLICY_COUNT             PerfPolicyType = 12\n)\n\n// CoolerControl as declared in nvml/nvml.h\ntype CoolerControl int32\n\n// CoolerControl enumeration from nvml/nvml.h\nconst (\n\tTHERMAL_COOLER_SIGNAL_NONE     CoolerControl = iota\n\tTHERMAL_COOLER_SIGNAL_TOGGLE   CoolerControl = 1\n\tTHERMAL_COOLER_SIGNAL_VARIABLE CoolerControl = 2\n\tTHERMAL_COOLER_SIGNAL_COUNT    CoolerControl = 3\n)\n\n// CoolerTarget as declared in nvml/nvml.h\ntype CoolerTarget int32\n\n// CoolerTarget enumeration from nvml/nvml.h\nconst (\n\tTHERMAL_COOLER_TARGET_NONE         CoolerTarget = 1\n\tTHERMAL_COOLER_TARGET_GPU          CoolerTarget = 2\n\tTHERMAL_COOLER_TARGET_MEMORY       CoolerTarget = 4\n\tTHERMAL_COOLER_TARGET_POWER_SUPPLY CoolerTarget = 8\n\tTHERMAL_COOLER_TARGET_GPU_RELATED  CoolerTarget = 14\n)\n\n// EnableState as declared in nvml/nvml.h\ntype EnableState int32\n\n// EnableState enumeration from nvml/nvml.h\nconst (\n\tFEATURE_DISABLED EnableState = iota\n\tFEATURE_ENABLED  EnableState = 1\n)\n\n// BrandType as declared in nvml/nvml.h\ntype BrandType int32\n\n// BrandType enumeration from nvml/nvml.h\nconst (\n\tBRAND_UNKNOWN             BrandType = iota\n\tBRAND_QUADRO              BrandType = 1\n\tBRAND_TESLA               BrandType = 2\n\tBRAND_NVS                 BrandType = 3\n\tBRAND_GRID                BrandType = 4\n\tBRAND_GEFORCE             BrandType = 5\n\tBRAND_TITAN               BrandType = 6\n\tBRAND_NVIDIA_VAPPS        BrandType = 7\n\tBRAND_NVIDIA_VPC          BrandType = 8\n\tBRAND_NVIDIA_VCS          BrandType = 9\n\tBRAND_NVIDIA_VWS          BrandType = 10\n\tBRAND_NVIDIA_CLOUD_GAMING BrandType = 11\n\tBRAND_NVIDIA_VGAMING      BrandType = 11\n\tBRAND_QUADRO_RTX          BrandType = 12\n\tBRAND_NVIDIA_RTX          BrandType = 13\n\tBRAND_NVIDIA              BrandType = 14\n\tBRAND_GEFORCE_RTX         BrandType = 15\n\tBRAND_TITAN_RTX           BrandType = 16\n\tBRAND_COUNT               BrandType = 18\n)\n\n// TemperatureThresholds as declared in nvml/nvml.h\ntype TemperatureThresholds int32\n\n// TemperatureThresholds enumeration from nvml/nvml.h\nconst (\n\tTEMPERATURE_THRESHOLD_SHUTDOWN      TemperatureThresholds = iota\n\tTEMPERATURE_THRESHOLD_SLOWDOWN      TemperatureThresholds = 1\n\tTEMPERATURE_THRESHOLD_MEM_MAX       TemperatureThresholds = 2\n\tTEMPERATURE_THRESHOLD_GPU_MAX       TemperatureThresholds = 3\n\tTEMPERATURE_THRESHOLD_ACOUSTIC_MIN  TemperatureThresholds = 4\n\tTEMPERATURE_THRESHOLD_ACOUSTIC_CURR TemperatureThresholds = 5\n\tTEMPERATURE_THRESHOLD_ACOUSTIC_MAX  TemperatureThresholds = 6\n\tTEMPERATURE_THRESHOLD_GPS_CURR      TemperatureThresholds = 7\n\tTEMPERATURE_THRESHOLD_COUNT         TemperatureThresholds = 8\n)\n\n// TemperatureSensors as declared in nvml/nvml.h\ntype TemperatureSensors int32\n\n// TemperatureSensors enumeration from nvml/nvml.h\nconst (\n\tTEMPERATURE_GPU   TemperatureSensors = iota\n\tTEMPERATURE_COUNT TemperatureSensors = 1\n)\n\n// ComputeMode as declared in nvml/nvml.h\ntype ComputeMode int32\n\n// ComputeMode enumeration from nvml/nvml.h\nconst (\n\tCOMPUTEMODE_DEFAULT           ComputeMode = iota\n\tCOMPUTEMODE_EXCLUSIVE_THREAD  ComputeMode = 1\n\tCOMPUTEMODE_PROHIBITED        ComputeMode = 2\n\tCOMPUTEMODE_EXCLUSIVE_PROCESS ComputeMode = 3\n\tCOMPUTEMODE_COUNT             ComputeMode = 4\n)\n\n// MemoryErrorType as declared in nvml/nvml.h\ntype MemoryErrorType int32\n\n// MemoryErrorType enumeration from nvml/nvml.h\nconst (\n\tMEMORY_ERROR_TYPE_CORRECTED   MemoryErrorType = iota\n\tMEMORY_ERROR_TYPE_UNCORRECTED MemoryErrorType = 1\n\tMEMORY_ERROR_TYPE_COUNT       MemoryErrorType = 2\n)\n\n// NvlinkVersion as declared in nvml/nvml.h\ntype NvlinkVersion int32\n\n// NvlinkVersion enumeration from nvml/nvml.h\nconst (\n\tNVLINK_VERSION_INVALID NvlinkVersion = iota\n\tNVLINK_VERSION_1_0     NvlinkVersion = 1\n\tNVLINK_VERSION_2_0     NvlinkVersion = 2\n\tNVLINK_VERSION_2_2     NvlinkVersion = 3\n\tNVLINK_VERSION_3_0     NvlinkVersion = 4\n\tNVLINK_VERSION_3_1     NvlinkVersion = 5\n\tNVLINK_VERSION_4_0     NvlinkVersion = 6\n\tNVLINK_VERSION_5_0     NvlinkVersion = 7\n)\n\n// EccCounterType as declared in nvml/nvml.h\ntype EccCounterType int32\n\n// EccCounterType enumeration from nvml/nvml.h\nconst (\n\tVOLATILE_ECC           EccCounterType = iota\n\tAGGREGATE_ECC          EccCounterType = 1\n\tECC_COUNTER_TYPE_COUNT EccCounterType = 2\n)\n\n// ClockType as declared in nvml/nvml.h\ntype ClockType int32\n\n// ClockType enumeration from nvml/nvml.h\nconst (\n\tCLOCK_GRAPHICS ClockType = iota\n\tCLOCK_SM       ClockType = 1\n\tCLOCK_MEM      ClockType = 2\n\tCLOCK_VIDEO    ClockType = 3\n\tCLOCK_COUNT    ClockType = 4\n)\n\n// ClockId as declared in nvml/nvml.h\ntype ClockId int32\n\n// ClockId enumeration from nvml/nvml.h\nconst (\n\tCLOCK_ID_CURRENT            ClockId = iota\n\tCLOCK_ID_APP_CLOCK_TARGET   ClockId = 1\n\tCLOCK_ID_APP_CLOCK_DEFAULT  ClockId = 2\n\tCLOCK_ID_CUSTOMER_BOOST_MAX ClockId = 3\n\tCLOCK_ID_COUNT              ClockId = 4\n)\n\n// DriverModel as declared in nvml/nvml.h\ntype DriverModel int32\n\n// DriverModel enumeration from nvml/nvml.h\nconst (\n\tDRIVER_WDDM DriverModel = iota\n\tDRIVER_WDM  DriverModel = 1\n\tDRIVER_MCDM DriverModel = 2\n)\n\n// Pstates as declared in nvml/nvml.h\ntype Pstates int32\n\n// Pstates enumeration from nvml/nvml.h\nconst (\n\tPSTATE_0       Pstates = iota\n\tPSTATE_1       Pstates = 1\n\tPSTATE_2       Pstates = 2\n\tPSTATE_3       Pstates = 3\n\tPSTATE_4       Pstates = 4\n\tPSTATE_5       Pstates = 5\n\tPSTATE_6       Pstates = 6\n\tPSTATE_7       Pstates = 7\n\tPSTATE_8       Pstates = 8\n\tPSTATE_9       Pstates = 9\n\tPSTATE_10      Pstates = 10\n\tPSTATE_11      Pstates = 11\n\tPSTATE_12      Pstates = 12\n\tPSTATE_13      Pstates = 13\n\tPSTATE_14      Pstates = 14\n\tPSTATE_15      Pstates = 15\n\tPSTATE_UNKNOWN Pstates = 32\n)\n\n// GpuOperationMode as declared in nvml/nvml.h\ntype GpuOperationMode int32\n\n// GpuOperationMode enumeration from nvml/nvml.h\nconst (\n\tGOM_ALL_ON  GpuOperationMode = iota\n\tGOM_COMPUTE GpuOperationMode = 1\n\tGOM_LOW_DP  GpuOperationMode = 2\n)\n\n// InforomObject as declared in nvml/nvml.h\ntype InforomObject int32\n\n// InforomObject enumeration from nvml/nvml.h\nconst (\n\tINFOROM_OEM   InforomObject = iota\n\tINFOROM_ECC   InforomObject = 1\n\tINFOROM_POWER InforomObject = 2\n\tINFOROM_DEN   InforomObject = 3\n\tINFOROM_COUNT InforomObject = 4\n)\n\n// Return as declared in nvml/nvml.h\ntype Return int32\n\n// Return enumeration from nvml/nvml.h\nconst (\n\tSUCCESS                         Return = iota\n\tERROR_UNINITIALIZED             Return = 1\n\tERROR_INVALID_ARGUMENT          Return = 2\n\tERROR_NOT_SUPPORTED             Return = 3\n\tERROR_NO_PERMISSION             Return = 4\n\tERROR_ALREADY_INITIALIZED       Return = 5\n\tERROR_NOT_FOUND                 Return = 6\n\tERROR_INSUFFICIENT_SIZE         Return = 7\n\tERROR_INSUFFICIENT_POWER        Return = 8\n\tERROR_DRIVER_NOT_LOADED         Return = 9\n\tERROR_TIMEOUT                   Return = 10\n\tERROR_IRQ_ISSUE                 Return = 11\n\tERROR_LIBRARY_NOT_FOUND         Return = 12\n\tERROR_FUNCTION_NOT_FOUND        Return = 13\n\tERROR_CORRUPTED_INFOROM         Return = 14\n\tERROR_GPU_IS_LOST               Return = 15\n\tERROR_RESET_REQUIRED            Return = 16\n\tERROR_OPERATING_SYSTEM          Return = 17\n\tERROR_LIB_RM_VERSION_MISMATCH   Return = 18\n\tERROR_IN_USE                    Return = 19\n\tERROR_MEMORY                    Return = 20\n\tERROR_NO_DATA                   Return = 21\n\tERROR_VGPU_ECC_NOT_SUPPORTED    Return = 22\n\tERROR_INSUFFICIENT_RESOURCES    Return = 23\n\tERROR_FREQ_NOT_SUPPORTED        Return = 24\n\tERROR_ARGUMENT_VERSION_MISMATCH Return = 25\n\tERROR_DEPRECATED                Return = 26\n\tERROR_NOT_READY                 Return = 27\n\tERROR_GPU_NOT_FOUND             Return = 28\n\tERROR_INVALID_STATE             Return = 29\n\tERROR_RESET_TYPE_NOT_SUPPORTED  Return = 30\n\tERROR_UNKNOWN                   Return = 999\n)\n\n// MemoryLocation as declared in nvml/nvml.h\ntype MemoryLocation int32\n\n// MemoryLocation enumeration from nvml/nvml.h\nconst (\n\tMEMORY_LOCATION_L1_CACHE       MemoryLocation = iota\n\tMEMORY_LOCATION_L2_CACHE       MemoryLocation = 1\n\tMEMORY_LOCATION_DRAM           MemoryLocation = 2\n\tMEMORY_LOCATION_DEVICE_MEMORY  MemoryLocation = 2\n\tMEMORY_LOCATION_REGISTER_FILE  MemoryLocation = 3\n\tMEMORY_LOCATION_TEXTURE_MEMORY MemoryLocation = 4\n\tMEMORY_LOCATION_TEXTURE_SHM    MemoryLocation = 5\n\tMEMORY_LOCATION_CBU            MemoryLocation = 6\n\tMEMORY_LOCATION_SRAM           MemoryLocation = 7\n\tMEMORY_LOCATION_COUNT          MemoryLocation = 8\n)\n\n// PageRetirementCause as declared in nvml/nvml.h\ntype PageRetirementCause int32\n\n// PageRetirementCause enumeration from nvml/nvml.h\nconst (\n\tPAGE_RETIREMENT_CAUSE_MULTIPLE_SINGLE_BIT_ECC_ERRORS PageRetirementCause = iota\n\tPAGE_RETIREMENT_CAUSE_DOUBLE_BIT_ECC_ERROR           PageRetirementCause = 1\n\tPAGE_RETIREMENT_CAUSE_COUNT                          PageRetirementCause = 2\n)\n\n// RestrictedAPI as declared in nvml/nvml.h\ntype RestrictedAPI int32\n\n// RestrictedAPI enumeration from nvml/nvml.h\nconst (\n\tRESTRICTED_API_SET_APPLICATION_CLOCKS  RestrictedAPI = iota\n\tRESTRICTED_API_SET_AUTO_BOOSTED_CLOCKS RestrictedAPI = 1\n\tRESTRICTED_API_COUNT                   RestrictedAPI = 2\n)\n\n// GpuUtilizationDomainId as declared in nvml/nvml.h\ntype GpuUtilizationDomainId int32\n\n// GpuUtilizationDomainId enumeration from nvml/nvml.h\nconst (\n\tGPU_UTILIZATION_DOMAIN_GPU GpuUtilizationDomainId = iota\n\tGPU_UTILIZATION_DOMAIN_FB  GpuUtilizationDomainId = 1\n\tGPU_UTILIZATION_DOMAIN_VID GpuUtilizationDomainId = 2\n\tGPU_UTILIZATION_DOMAIN_BUS GpuUtilizationDomainId = 3\n)\n\n// GpuVirtualizationMode as declared in nvml/nvml.h\ntype GpuVirtualizationMode int32\n\n// GpuVirtualizationMode enumeration from nvml/nvml.h\nconst (\n\tGPU_VIRTUALIZATION_MODE_NONE        GpuVirtualizationMode = iota\n\tGPU_VIRTUALIZATION_MODE_PASSTHROUGH GpuVirtualizationMode = 1\n\tGPU_VIRTUALIZATION_MODE_VGPU        GpuVirtualizationMode = 2\n\tGPU_VIRTUALIZATION_MODE_HOST_VGPU   GpuVirtualizationMode = 3\n\tGPU_VIRTUALIZATION_MODE_HOST_VSGA   GpuVirtualizationMode = 4\n)\n\n// HostVgpuMode as declared in nvml/nvml.h\ntype HostVgpuMode int32\n\n// HostVgpuMode enumeration from nvml/nvml.h\nconst (\n\tHOST_VGPU_MODE_NON_SRIOV HostVgpuMode = iota\n\tHOST_VGPU_MODE_SRIOV     HostVgpuMode = 1\n)\n\n// VgpuVmIdType as declared in nvml/nvml.h\ntype VgpuVmIdType int32\n\n// VgpuVmIdType enumeration from nvml/nvml.h\nconst (\n\tVGPU_VM_ID_DOMAIN_ID VgpuVmIdType = iota\n\tVGPU_VM_ID_UUID      VgpuVmIdType = 1\n)\n\n// VgpuGuestInfoState as declared in nvml/nvml.h\ntype VgpuGuestInfoState int32\n\n// VgpuGuestInfoState enumeration from nvml/nvml.h\nconst (\n\tVGPU_INSTANCE_GUEST_INFO_STATE_UNINITIALIZED VgpuGuestInfoState = iota\n\tVGPU_INSTANCE_GUEST_INFO_STATE_INITIALIZED   VgpuGuestInfoState = 1\n)\n\n// VgpuCapability as declared in nvml/nvml.h\ntype VgpuCapability int32\n\n// VgpuCapability enumeration from nvml/nvml.h\nconst (\n\tVGPU_CAP_NVLINK_P2P           VgpuCapability = iota\n\tVGPU_CAP_GPUDIRECT            VgpuCapability = 1\n\tVGPU_CAP_MULTI_VGPU_EXCLUSIVE VgpuCapability = 2\n\tVGPU_CAP_EXCLUSIVE_TYPE       VgpuCapability = 3\n\tVGPU_CAP_EXCLUSIVE_SIZE       VgpuCapability = 4\n\tVGPU_CAP_COUNT                VgpuCapability = 5\n)\n\n// VgpuDriverCapability as declared in nvml/nvml.h\ntype VgpuDriverCapability int32\n\n// VgpuDriverCapability enumeration from nvml/nvml.h\nconst (\n\tVGPU_DRIVER_CAP_HETEROGENEOUS_MULTI_VGPU VgpuDriverCapability = iota\n\tVGPU_DRIVER_CAP_WARM_UPDATE              VgpuDriverCapability = 1\n\tVGPU_DRIVER_CAP_COUNT                    VgpuDriverCapability = 2\n)\n\n// DeviceVgpuCapability as declared in nvml/nvml.h\ntype DeviceVgpuCapability int32\n\n// DeviceVgpuCapability enumeration from nvml/nvml.h\nconst (\n\tDEVICE_VGPU_CAP_FRACTIONAL_MULTI_VGPU            DeviceVgpuCapability = iota\n\tDEVICE_VGPU_CAP_HETEROGENEOUS_TIMESLICE_PROFILES DeviceVgpuCapability = 1\n\tDEVICE_VGPU_CAP_HETEROGENEOUS_TIMESLICE_SIZES    DeviceVgpuCapability = 2\n\tDEVICE_VGPU_CAP_READ_DEVICE_BUFFER_BW            DeviceVgpuCapability = 3\n\tDEVICE_VGPU_CAP_WRITE_DEVICE_BUFFER_BW           DeviceVgpuCapability = 4\n\tDEVICE_VGPU_CAP_DEVICE_STREAMING                 DeviceVgpuCapability = 5\n\tDEVICE_VGPU_CAP_MINI_QUARTER_GPU                 DeviceVgpuCapability = 6\n\tDEVICE_VGPU_CAP_COMPUTE_MEDIA_ENGINE_GPU         DeviceVgpuCapability = 7\n\tDEVICE_VGPU_CAP_WARM_UPDATE                      DeviceVgpuCapability = 8\n\tDEVICE_VGPU_CAP_HOMOGENEOUS_PLACEMENTS           DeviceVgpuCapability = 9\n\tDEVICE_VGPU_CAP_MIG_TIMESLICING_SUPPORTED        DeviceVgpuCapability = 10\n\tDEVICE_VGPU_CAP_MIG_TIMESLICING_ENABLED          DeviceVgpuCapability = 11\n\tDEVICE_VGPU_CAP_COUNT                            DeviceVgpuCapability = 12\n)\n\n// DeviceGpuRecoveryAction as declared in nvml/nvml.h\ntype DeviceGpuRecoveryAction int32\n\n// DeviceGpuRecoveryAction enumeration from nvml/nvml.h\nconst (\n\tGPU_RECOVERY_ACTION_NONE            DeviceGpuRecoveryAction = iota\n\tGPU_RECOVERY_ACTION_GPU_RESET       DeviceGpuRecoveryAction = 1\n\tGPU_RECOVERY_ACTION_NODE_REBOOT     DeviceGpuRecoveryAction = 2\n\tGPU_RECOVERY_ACTION_DRAIN_P2P       DeviceGpuRecoveryAction = 3\n\tGPU_RECOVERY_ACTION_DRAIN_AND_RESET DeviceGpuRecoveryAction = 4\n)\n\n// FanState as declared in nvml/nvml.h\ntype FanState int32\n\n// FanState enumeration from nvml/nvml.h\nconst (\n\tFAN_NORMAL FanState = iota\n\tFAN_FAILED FanState = 1\n)\n\n// LedColor as declared in nvml/nvml.h\ntype LedColor int32\n\n// LedColor enumeration from nvml/nvml.h\nconst (\n\tLED_COLOR_GREEN LedColor = iota\n\tLED_COLOR_AMBER LedColor = 1\n)\n\n// EncoderType as declared in nvml/nvml.h\ntype EncoderType int32\n\n// EncoderType enumeration from nvml/nvml.h\nconst (\n\tENCODER_QUERY_H264    EncoderType = iota\n\tENCODER_QUERY_HEVC    EncoderType = 1\n\tENCODER_QUERY_AV1     EncoderType = 2\n\tENCODER_QUERY_UNKNOWN EncoderType = 255\n)\n\n// FBCSessionType as declared in nvml/nvml.h\ntype FBCSessionType int32\n\n// FBCSessionType enumeration from nvml/nvml.h\nconst (\n\tFBC_SESSION_TYPE_UNKNOWN FBCSessionType = iota\n\tFBC_SESSION_TYPE_TOSYS   FBCSessionType = 1\n\tFBC_SESSION_TYPE_CUDA    FBCSessionType = 2\n\tFBC_SESSION_TYPE_VID     FBCSessionType = 3\n\tFBC_SESSION_TYPE_HWENC   FBCSessionType = 4\n)\n\n// DetachGpuState as declared in nvml/nvml.h\ntype DetachGpuState int32\n\n// DetachGpuState enumeration from nvml/nvml.h\nconst (\n\tDETACH_GPU_KEEP   DetachGpuState = iota\n\tDETACH_GPU_REMOVE DetachGpuState = 1\n)\n\n// PcieLinkState as declared in nvml/nvml.h\ntype PcieLinkState int32\n\n// PcieLinkState enumeration from nvml/nvml.h\nconst (\n\tPCIE_LINK_KEEP      PcieLinkState = iota\n\tPCIE_LINK_SHUT_DOWN PcieLinkState = 1\n)\n\n// ClockLimitId as declared in nvml/nvml.h\ntype ClockLimitId int32\n\n// ClockLimitId enumeration from nvml/nvml.h\nconst (\n\tCLOCK_LIMIT_ID_RANGE_START ClockLimitId = -256\n\tCLOCK_LIMIT_ID_TDP         ClockLimitId = -255\n\tCLOCK_LIMIT_ID_UNLIMITED   ClockLimitId = -254\n)\n\n// VgpuVmCompatibility as declared in nvml/nvml.h\ntype VgpuVmCompatibility int32\n\n// VgpuVmCompatibility enumeration from nvml/nvml.h\nconst (\n\tVGPU_VM_COMPATIBILITY_NONE      VgpuVmCompatibility = iota\n\tVGPU_VM_COMPATIBILITY_COLD      VgpuVmCompatibility = 1\n\tVGPU_VM_COMPATIBILITY_HIBERNATE VgpuVmCompatibility = 2\n\tVGPU_VM_COMPATIBILITY_SLEEP     VgpuVmCompatibility = 4\n\tVGPU_VM_COMPATIBILITY_LIVE      VgpuVmCompatibility = 8\n)\n\n// VgpuPgpuCompatibilityLimitCode as declared in nvml/nvml.h\ntype VgpuPgpuCompatibilityLimitCode int32\n\n// VgpuPgpuCompatibilityLimitCode enumeration from nvml/nvml.h\nconst (\n\tVGPU_COMPATIBILITY_LIMIT_NONE         VgpuPgpuCompatibilityLimitCode = iota\n\tVGPU_COMPATIBILITY_LIMIT_HOST_DRIVER  VgpuPgpuCompatibilityLimitCode = 1\n\tVGPU_COMPATIBILITY_LIMIT_GUEST_DRIVER VgpuPgpuCompatibilityLimitCode = 2\n\tVGPU_COMPATIBILITY_LIMIT_GPU          VgpuPgpuCompatibilityLimitCode = 4\n\tVGPU_COMPATIBILITY_LIMIT_OTHER        VgpuPgpuCompatibilityLimitCode = -2147483648\n)\n\n// DeviceAddressingModeType as declared in nvml/nvml.h\ntype DeviceAddressingModeType int32\n\n// DeviceAddressingModeType enumeration from nvml/nvml.h\nconst (\n\tDEVICE_ADDRESSING_MODE_NONE DeviceAddressingModeType = iota\n\tDEVICE_ADDRESSING_MODE_HMM  DeviceAddressingModeType = 1\n\tDEVICE_ADDRESSING_MODE_ATS  DeviceAddressingModeType = 2\n)\n\n// ThermalTarget as declared in nvml/nvml.h\ntype ThermalTarget int32\n\n// ThermalTarget enumeration from nvml/nvml.h\nconst (\n\tTHERMAL_TARGET_NONE         ThermalTarget = iota\n\tTHERMAL_TARGET_GPU          ThermalTarget = 1\n\tTHERMAL_TARGET_MEMORY       ThermalTarget = 2\n\tTHERMAL_TARGET_POWER_SUPPLY ThermalTarget = 4\n\tTHERMAL_TARGET_BOARD        ThermalTarget = 8\n\tTHERMAL_TARGET_VCD_BOARD    ThermalTarget = 9\n\tTHERMAL_TARGET_VCD_INLET    ThermalTarget = 10\n\tTHERMAL_TARGET_VCD_OUTLET   ThermalTarget = 11\n\tTHERMAL_TARGET_ALL          ThermalTarget = 15\n\tTHERMAL_TARGET_UNKNOWN      ThermalTarget = -1\n)\n\n// ThermalController as declared in nvml/nvml.h\ntype ThermalController int32\n\n// ThermalController enumeration from nvml/nvml.h\nconst (\n\tTHERMAL_CONTROLLER_NONE            ThermalController = iota\n\tTHERMAL_CONTROLLER_GPU_INTERNAL    ThermalController = 1\n\tTHERMAL_CONTROLLER_ADM1032         ThermalController = 2\n\tTHERMAL_CONTROLLER_ADT7461         ThermalController = 3\n\tTHERMAL_CONTROLLER_MAX6649         ThermalController = 4\n\tTHERMAL_CONTROLLER_MAX1617         ThermalController = 5\n\tTHERMAL_CONTROLLER_LM99            ThermalController = 6\n\tTHERMAL_CONTROLLER_LM89            ThermalController = 7\n\tTHERMAL_CONTROLLER_LM64            ThermalController = 8\n\tTHERMAL_CONTROLLER_G781            ThermalController = 9\n\tTHERMAL_CONTROLLER_ADT7473         ThermalController = 10\n\tTHERMAL_CONTROLLER_SBMAX6649       ThermalController = 11\n\tTHERMAL_CONTROLLER_VBIOSEVT        ThermalController = 12\n\tTHERMAL_CONTROLLER_OS              ThermalController = 13\n\tTHERMAL_CONTROLLER_NVSYSCON_CANOAS ThermalController = 14\n\tTHERMAL_CONTROLLER_NVSYSCON_E551   ThermalController = 15\n\tTHERMAL_CONTROLLER_MAX6649R        ThermalController = 16\n\tTHERMAL_CONTROLLER_ADT7473S        ThermalController = 17\n\tTHERMAL_CONTROLLER_UNKNOWN         ThermalController = -1\n)\n\n// UUIDType as declared in nvml/nvml.h\ntype UUIDType int32\n\n// UUIDType enumeration from nvml/nvml.h\nconst (\n\tUUID_TYPE_NONE   UUIDType = iota\n\tUUID_TYPE_ASCII  UUIDType = 1\n\tUUID_TYPE_BINARY UUIDType = 2\n)\n\n// GridLicenseFeatureCode as declared in nvml/nvml.h\ntype GridLicenseFeatureCode int32\n\n// GridLicenseFeatureCode enumeration from nvml/nvml.h\nconst (\n\tGRID_LICENSE_FEATURE_CODE_UNKNOWN      GridLicenseFeatureCode = iota\n\tGRID_LICENSE_FEATURE_CODE_VGPU         GridLicenseFeatureCode = 1\n\tGRID_LICENSE_FEATURE_CODE_NVIDIA_RTX   GridLicenseFeatureCode = 2\n\tGRID_LICENSE_FEATURE_CODE_VWORKSTATION GridLicenseFeatureCode = 2\n\tGRID_LICENSE_FEATURE_CODE_GAMING       GridLicenseFeatureCode = 3\n\tGRID_LICENSE_FEATURE_CODE_COMPUTE      GridLicenseFeatureCode = 4\n)\n\n// GpmMetricId as declared in nvml/nvml.h\ntype GpmMetricId int32\n\n// GpmMetricId enumeration from nvml/nvml.h\nconst (\n\tGPM_METRIC_GRAPHICS_UTIL               GpmMetricId = 1\n\tGPM_METRIC_SM_UTIL                     GpmMetricId = 2\n\tGPM_METRIC_SM_OCCUPANCY                GpmMetricId = 3\n\tGPM_METRIC_INTEGER_UTIL                GpmMetricId = 4\n\tGPM_METRIC_ANY_TENSOR_UTIL             GpmMetricId = 5\n\tGPM_METRIC_DFMA_TENSOR_UTIL            GpmMetricId = 6\n\tGPM_METRIC_HMMA_TENSOR_UTIL            GpmMetricId = 7\n\tGPM_METRIC_IMMA_TENSOR_UTIL            GpmMetricId = 9\n\tGPM_METRIC_DRAM_BW_UTIL                GpmMetricId = 10\n\tGPM_METRIC_FP64_UTIL                   GpmMetricId = 11\n\tGPM_METRIC_FP32_UTIL                   GpmMetricId = 12\n\tGPM_METRIC_FP16_UTIL                   GpmMetricId = 13\n\tGPM_METRIC_PCIE_TX_PER_SEC             GpmMetricId = 20\n\tGPM_METRIC_PCIE_RX_PER_SEC             GpmMetricId = 21\n\tGPM_METRIC_NVDEC_0_UTIL                GpmMetricId = 30\n\tGPM_METRIC_NVDEC_1_UTIL                GpmMetricId = 31\n\tGPM_METRIC_NVDEC_2_UTIL                GpmMetricId = 32\n\tGPM_METRIC_NVDEC_3_UTIL                GpmMetricId = 33\n\tGPM_METRIC_NVDEC_4_UTIL                GpmMetricId = 34\n\tGPM_METRIC_NVDEC_5_UTIL                GpmMetricId = 35\n\tGPM_METRIC_NVDEC_6_UTIL                GpmMetricId = 36\n\tGPM_METRIC_NVDEC_7_UTIL                GpmMetricId = 37\n\tGPM_METRIC_NVJPG_0_UTIL                GpmMetricId = 40\n\tGPM_METRIC_NVJPG_1_UTIL                GpmMetricId = 41\n\tGPM_METRIC_NVJPG_2_UTIL                GpmMetricId = 42\n\tGPM_METRIC_NVJPG_3_UTIL                GpmMetricId = 43\n\tGPM_METRIC_NVJPG_4_UTIL                GpmMetricId = 44\n\tGPM_METRIC_NVJPG_5_UTIL                GpmMetricId = 45\n\tGPM_METRIC_NVJPG_6_UTIL                GpmMetricId = 46\n\tGPM_METRIC_NVJPG_7_UTIL                GpmMetricId = 47\n\tGPM_METRIC_NVOFA_0_UTIL                GpmMetricId = 50\n\tGPM_METRIC_NVOFA_1_UTIL                GpmMetricId = 51\n\tGPM_METRIC_NVLINK_TOTAL_RX_PER_SEC     GpmMetricId = 60\n\tGPM_METRIC_NVLINK_TOTAL_TX_PER_SEC     GpmMetricId = 61\n\tGPM_METRIC_NVLINK_L0_RX_PER_SEC        GpmMetricId = 62\n\tGPM_METRIC_NVLINK_L0_TX_PER_SEC        GpmMetricId = 63\n\tGPM_METRIC_NVLINK_L1_RX_PER_SEC        GpmMetricId = 64\n\tGPM_METRIC_NVLINK_L1_TX_PER_SEC        GpmMetricId = 65\n\tGPM_METRIC_NVLINK_L2_RX_PER_SEC        GpmMetricId = 66\n\tGPM_METRIC_NVLINK_L2_TX_PER_SEC        GpmMetricId = 67\n\tGPM_METRIC_NVLINK_L3_RX_PER_SEC        GpmMetricId = 68\n\tGPM_METRIC_NVLINK_L3_TX_PER_SEC        GpmMetricId = 69\n\tGPM_METRIC_NVLINK_L4_RX_PER_SEC        GpmMetricId = 70\n\tGPM_METRIC_NVLINK_L4_TX_PER_SEC        GpmMetricId = 71\n\tGPM_METRIC_NVLINK_L5_RX_PER_SEC        GpmMetricId = 72\n\tGPM_METRIC_NVLINK_L5_TX_PER_SEC        GpmMetricId = 73\n\tGPM_METRIC_NVLINK_L6_RX_PER_SEC        GpmMetricId = 74\n\tGPM_METRIC_NVLINK_L6_TX_PER_SEC        GpmMetricId = 75\n\tGPM_METRIC_NVLINK_L7_RX_PER_SEC        GpmMetricId = 76\n\tGPM_METRIC_NVLINK_L7_TX_PER_SEC        GpmMetricId = 77\n\tGPM_METRIC_NVLINK_L8_RX_PER_SEC        GpmMetricId = 78\n\tGPM_METRIC_NVLINK_L8_TX_PER_SEC        GpmMetricId = 79\n\tGPM_METRIC_NVLINK_L9_RX_PER_SEC        GpmMetricId = 80\n\tGPM_METRIC_NVLINK_L9_TX_PER_SEC        GpmMetricId = 81\n\tGPM_METRIC_NVLINK_L10_RX_PER_SEC       GpmMetricId = 82\n\tGPM_METRIC_NVLINK_L10_TX_PER_SEC       GpmMetricId = 83\n\tGPM_METRIC_NVLINK_L11_RX_PER_SEC       GpmMetricId = 84\n\tGPM_METRIC_NVLINK_L11_TX_PER_SEC       GpmMetricId = 85\n\tGPM_METRIC_NVLINK_L12_RX_PER_SEC       GpmMetricId = 86\n\tGPM_METRIC_NVLINK_L12_TX_PER_SEC       GpmMetricId = 87\n\tGPM_METRIC_NVLINK_L13_RX_PER_SEC       GpmMetricId = 88\n\tGPM_METRIC_NVLINK_L13_TX_PER_SEC       GpmMetricId = 89\n\tGPM_METRIC_NVLINK_L14_RX_PER_SEC       GpmMetricId = 90\n\tGPM_METRIC_NVLINK_L14_TX_PER_SEC       GpmMetricId = 91\n\tGPM_METRIC_NVLINK_L15_RX_PER_SEC       GpmMetricId = 92\n\tGPM_METRIC_NVLINK_L15_TX_PER_SEC       GpmMetricId = 93\n\tGPM_METRIC_NVLINK_L16_RX_PER_SEC       GpmMetricId = 94\n\tGPM_METRIC_NVLINK_L16_TX_PER_SEC       GpmMetricId = 95\n\tGPM_METRIC_NVLINK_L17_RX_PER_SEC       GpmMetricId = 96\n\tGPM_METRIC_NVLINK_L17_TX_PER_SEC       GpmMetricId = 97\n\tGPM_METRIC_C2C_TOTAL_TX_PER_SEC        GpmMetricId = 100\n\tGPM_METRIC_C2C_TOTAL_RX_PER_SEC        GpmMetricId = 101\n\tGPM_METRIC_C2C_DATA_TX_PER_SEC         GpmMetricId = 102\n\tGPM_METRIC_C2C_DATA_RX_PER_SEC         GpmMetricId = 103\n\tGPM_METRIC_C2C_LINK0_TOTAL_TX_PER_SEC  GpmMetricId = 104\n\tGPM_METRIC_C2C_LINK0_TOTAL_RX_PER_SEC  GpmMetricId = 105\n\tGPM_METRIC_C2C_LINK0_DATA_TX_PER_SEC   GpmMetricId = 106\n\tGPM_METRIC_C2C_LINK0_DATA_RX_PER_SEC   GpmMetricId = 107\n\tGPM_METRIC_C2C_LINK1_TOTAL_TX_PER_SEC  GpmMetricId = 108\n\tGPM_METRIC_C2C_LINK1_TOTAL_RX_PER_SEC  GpmMetricId = 109\n\tGPM_METRIC_C2C_LINK1_DATA_TX_PER_SEC   GpmMetricId = 110\n\tGPM_METRIC_C2C_LINK1_DATA_RX_PER_SEC   GpmMetricId = 111\n\tGPM_METRIC_C2C_LINK2_TOTAL_TX_PER_SEC  GpmMetricId = 112\n\tGPM_METRIC_C2C_LINK2_TOTAL_RX_PER_SEC  GpmMetricId = 113\n\tGPM_METRIC_C2C_LINK2_DATA_TX_PER_SEC   GpmMetricId = 114\n\tGPM_METRIC_C2C_LINK2_DATA_RX_PER_SEC   GpmMetricId = 115\n\tGPM_METRIC_C2C_LINK3_TOTAL_TX_PER_SEC  GpmMetricId = 116\n\tGPM_METRIC_C2C_LINK3_TOTAL_RX_PER_SEC  GpmMetricId = 117\n\tGPM_METRIC_C2C_LINK3_DATA_TX_PER_SEC   GpmMetricId = 118\n\tGPM_METRIC_C2C_LINK3_DATA_RX_PER_SEC   GpmMetricId = 119\n\tGPM_METRIC_C2C_LINK4_TOTAL_TX_PER_SEC  GpmMetricId = 120\n\tGPM_METRIC_C2C_LINK4_TOTAL_RX_PER_SEC  GpmMetricId = 121\n\tGPM_METRIC_C2C_LINK4_DATA_TX_PER_SEC   GpmMetricId = 122\n\tGPM_METRIC_C2C_LINK4_DATA_RX_PER_SEC   GpmMetricId = 123\n\tGPM_METRIC_C2C_LINK5_TOTAL_TX_PER_SEC  GpmMetricId = 124\n\tGPM_METRIC_C2C_LINK5_TOTAL_RX_PER_SEC  GpmMetricId = 125\n\tGPM_METRIC_C2C_LINK5_DATA_TX_PER_SEC   GpmMetricId = 126\n\tGPM_METRIC_C2C_LINK5_DATA_RX_PER_SEC   GpmMetricId = 127\n\tGPM_METRIC_C2C_LINK6_TOTAL_TX_PER_SEC  GpmMetricId = 128\n\tGPM_METRIC_C2C_LINK6_TOTAL_RX_PER_SEC  GpmMetricId = 129\n\tGPM_METRIC_C2C_LINK6_DATA_TX_PER_SEC   GpmMetricId = 130\n\tGPM_METRIC_C2C_LINK6_DATA_RX_PER_SEC   GpmMetricId = 131\n\tGPM_METRIC_C2C_LINK7_TOTAL_TX_PER_SEC  GpmMetricId = 132\n\tGPM_METRIC_C2C_LINK7_TOTAL_RX_PER_SEC  GpmMetricId = 133\n\tGPM_METRIC_C2C_LINK7_DATA_TX_PER_SEC   GpmMetricId = 134\n\tGPM_METRIC_C2C_LINK7_DATA_RX_PER_SEC   GpmMetricId = 135\n\tGPM_METRIC_C2C_LINK8_TOTAL_TX_PER_SEC  GpmMetricId = 136\n\tGPM_METRIC_C2C_LINK8_TOTAL_RX_PER_SEC  GpmMetricId = 137\n\tGPM_METRIC_C2C_LINK8_DATA_TX_PER_SEC   GpmMetricId = 138\n\tGPM_METRIC_C2C_LINK8_DATA_RX_PER_SEC   GpmMetricId = 139\n\tGPM_METRIC_C2C_LINK9_TOTAL_TX_PER_SEC  GpmMetricId = 140\n\tGPM_METRIC_C2C_LINK9_TOTAL_RX_PER_SEC  GpmMetricId = 141\n\tGPM_METRIC_C2C_LINK9_DATA_TX_PER_SEC   GpmMetricId = 142\n\tGPM_METRIC_C2C_LINK9_DATA_RX_PER_SEC   GpmMetricId = 143\n\tGPM_METRIC_C2C_LINK10_TOTAL_TX_PER_SEC GpmMetricId = 144\n\tGPM_METRIC_C2C_LINK10_TOTAL_RX_PER_SEC GpmMetricId = 145\n\tGPM_METRIC_C2C_LINK10_DATA_TX_PER_SEC  GpmMetricId = 146\n\tGPM_METRIC_C2C_LINK10_DATA_RX_PER_SEC  GpmMetricId = 147\n\tGPM_METRIC_C2C_LINK11_TOTAL_TX_PER_SEC GpmMetricId = 148\n\tGPM_METRIC_C2C_LINK11_TOTAL_RX_PER_SEC GpmMetricId = 149\n\tGPM_METRIC_C2C_LINK11_DATA_TX_PER_SEC  GpmMetricId = 150\n\tGPM_METRIC_C2C_LINK11_DATA_RX_PER_SEC  GpmMetricId = 151\n\tGPM_METRIC_C2C_LINK12_TOTAL_TX_PER_SEC GpmMetricId = 152\n\tGPM_METRIC_C2C_LINK12_TOTAL_RX_PER_SEC GpmMetricId = 153\n\tGPM_METRIC_C2C_LINK12_DATA_TX_PER_SEC  GpmMetricId = 154\n\tGPM_METRIC_C2C_LINK12_DATA_RX_PER_SEC  GpmMetricId = 155\n\tGPM_METRIC_C2C_LINK13_TOTAL_TX_PER_SEC GpmMetricId = 156\n\tGPM_METRIC_C2C_LINK13_TOTAL_RX_PER_SEC GpmMetricId = 157\n\tGPM_METRIC_C2C_LINK13_DATA_TX_PER_SEC  GpmMetricId = 158\n\tGPM_METRIC_C2C_LINK13_DATA_RX_PER_SEC  GpmMetricId = 159\n\tGPM_METRIC_HOSTMEM_CACHE_HIT           GpmMetricId = 160\n\tGPM_METRIC_HOSTMEM_CACHE_MISS          GpmMetricId = 161\n\tGPM_METRIC_PEERMEM_CACHE_HIT           GpmMetricId = 162\n\tGPM_METRIC_PEERMEM_CACHE_MISS          GpmMetricId = 163\n\tGPM_METRIC_DRAM_CACHE_HIT              GpmMetricId = 164\n\tGPM_METRIC_DRAM_CACHE_MISS             GpmMetricId = 165\n\tGPM_METRIC_NVENC_0_UTIL                GpmMetricId = 166\n\tGPM_METRIC_NVENC_1_UTIL                GpmMetricId = 167\n\tGPM_METRIC_NVENC_2_UTIL                GpmMetricId = 168\n\tGPM_METRIC_NVENC_3_UTIL                GpmMetricId = 169\n\tGPM_METRIC_GR0_CTXSW_CYCLES_ELAPSED    GpmMetricId = 170\n\tGPM_METRIC_GR0_CTXSW_CYCLES_ACTIVE     GpmMetricId = 171\n\tGPM_METRIC_GR0_CTXSW_REQUESTS          GpmMetricId = 172\n\tGPM_METRIC_GR0_CTXSW_CYCLES_PER_REQ    GpmMetricId = 173\n\tGPM_METRIC_GR0_CTXSW_ACTIVE_PCT        GpmMetricId = 174\n\tGPM_METRIC_GR1_CTXSW_CYCLES_ELAPSED    GpmMetricId = 175\n\tGPM_METRIC_GR1_CTXSW_CYCLES_ACTIVE     GpmMetricId = 176\n\tGPM_METRIC_GR1_CTXSW_REQUESTS          GpmMetricId = 177\n\tGPM_METRIC_GR1_CTXSW_CYCLES_PER_REQ    GpmMetricId = 178\n\tGPM_METRIC_GR1_CTXSW_ACTIVE_PCT        GpmMetricId = 179\n\tGPM_METRIC_GR2_CTXSW_CYCLES_ELAPSED    GpmMetricId = 180\n\tGPM_METRIC_GR2_CTXSW_CYCLES_ACTIVE     GpmMetricId = 181\n\tGPM_METRIC_GR2_CTXSW_REQUESTS          GpmMetricId = 182\n\tGPM_METRIC_GR2_CTXSW_CYCLES_PER_REQ    GpmMetricId = 183\n\tGPM_METRIC_GR2_CTXSW_ACTIVE_PCT        GpmMetricId = 184\n\tGPM_METRIC_GR3_CTXSW_CYCLES_ELAPSED    GpmMetricId = 185\n\tGPM_METRIC_GR3_CTXSW_CYCLES_ACTIVE     GpmMetricId = 186\n\tGPM_METRIC_GR3_CTXSW_REQUESTS          GpmMetricId = 187\n\tGPM_METRIC_GR3_CTXSW_CYCLES_PER_REQ    GpmMetricId = 188\n\tGPM_METRIC_GR3_CTXSW_ACTIVE_PCT        GpmMetricId = 189\n\tGPM_METRIC_GR4_CTXSW_CYCLES_ELAPSED    GpmMetricId = 190\n\tGPM_METRIC_GR4_CTXSW_CYCLES_ACTIVE     GpmMetricId = 191\n\tGPM_METRIC_GR4_CTXSW_REQUESTS          GpmMetricId = 192\n\tGPM_METRIC_GR4_CTXSW_CYCLES_PER_REQ    GpmMetricId = 193\n\tGPM_METRIC_GR4_CTXSW_ACTIVE_PCT        GpmMetricId = 194\n\tGPM_METRIC_GR5_CTXSW_CYCLES_ELAPSED    GpmMetricId = 195\n\tGPM_METRIC_GR5_CTXSW_CYCLES_ACTIVE     GpmMetricId = 196\n\tGPM_METRIC_GR5_CTXSW_REQUESTS          GpmMetricId = 197\n\tGPM_METRIC_GR5_CTXSW_CYCLES_PER_REQ    GpmMetricId = 198\n\tGPM_METRIC_GR5_CTXSW_ACTIVE_PCT        GpmMetricId = 199\n\tGPM_METRIC_GR6_CTXSW_CYCLES_ELAPSED    GpmMetricId = 200\n\tGPM_METRIC_GR6_CTXSW_CYCLES_ACTIVE     GpmMetricId = 201\n\tGPM_METRIC_GR6_CTXSW_REQUESTS          GpmMetricId = 202\n\tGPM_METRIC_GR6_CTXSW_CYCLES_PER_REQ    GpmMetricId = 203\n\tGPM_METRIC_GR6_CTXSW_ACTIVE_PCT        GpmMetricId = 204\n\tGPM_METRIC_GR7_CTXSW_CYCLES_ELAPSED    GpmMetricId = 205\n\tGPM_METRIC_GR7_CTXSW_CYCLES_ACTIVE     GpmMetricId = 206\n\tGPM_METRIC_GR7_CTXSW_REQUESTS          GpmMetricId = 207\n\tGPM_METRIC_GR7_CTXSW_CYCLES_PER_REQ    GpmMetricId = 208\n\tGPM_METRIC_GR7_CTXSW_ACTIVE_PCT        GpmMetricId = 209\n\tGPM_METRIC_MAX                         GpmMetricId = 210\n)\n\n// PowerProfileType as declared in nvml/nvml.h\ntype PowerProfileType int32\n\n// PowerProfileType enumeration from nvml/nvml.h\nconst (\n\tPOWER_PROFILE_MAX_P         PowerProfileType = iota\n\tPOWER_PROFILE_MAX_Q         PowerProfileType = 1\n\tPOWER_PROFILE_COMPUTE       PowerProfileType = 2\n\tPOWER_PROFILE_MEMORY_BOUND  PowerProfileType = 3\n\tPOWER_PROFILE_NETWORK       PowerProfileType = 4\n\tPOWER_PROFILE_BALANCED      PowerProfileType = 5\n\tPOWER_PROFILE_LLM_INFERENCE PowerProfileType = 6\n\tPOWER_PROFILE_LLM_TRAINING  PowerProfileType = 7\n\tPOWER_PROFILE_RBM           PowerProfileType = 8\n\tPOWER_PROFILE_DCPCIE        PowerProfileType = 9\n\tPOWER_PROFILE_HMMA_SPARSE   PowerProfileType = 10\n\tPOWER_PROFILE_HMMA_DENSE    PowerProfileType = 11\n\tPOWER_PROFILE_SYNC_BALANCED PowerProfileType = 12\n\tPOWER_PROFILE_HPC           PowerProfileType = 13\n\tPOWER_PROFILE_MIG           PowerProfileType = 14\n\tPOWER_PROFILE_MAX           PowerProfileType = 15\n)\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvml/pkg/nvml/const_static.go",
    "content": "// Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage nvml\n\nimport (\n\t\"reflect\"\n)\n\nconst (\n\tSYSTEM_PROCESS_NAME_BUFFER_SIZE = 256\n)\n\nfunc STRUCT_VERSION(data interface{}, version uint32) uint32 {\n\treturn uint32(uint32(reflect.Indirect(reflect.ValueOf(data)).Type().Size()) | (version << uint32(24)))\n}\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvml/pkg/nvml/device.go",
    "content": "// Copyright (c) 2020, NVIDIA CORPORATION.  All rights reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage nvml\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"unsafe\"\n)\n\n// nvmlDeviceHandle attempts to convert a device d to an nvmlDevice.\n// This is required for functions such as GetTopologyCommonAncestor which\n// accept Device arguments that need to be passed to internal nvml* functions\n// as nvmlDevice parameters.\nfunc nvmlDeviceHandle(d Device) nvmlDevice {\n\tvar helper func(val reflect.Value) nvmlDevice\n\thelper = func(val reflect.Value) nvmlDevice {\n\t\tif val.Kind() == reflect.Interface {\n\t\t\tval = val.Elem()\n\t\t}\n\n\t\tif val.Kind() == reflect.Ptr {\n\t\t\tval = val.Elem()\n\t\t}\n\n\t\tif val.Type() == reflect.TypeOf(nvmlDevice{}) {\n\t\t\treturn val.Interface().(nvmlDevice)\n\t\t}\n\n\t\tif val.Kind() != reflect.Struct {\n\t\t\tpanic(fmt.Errorf(\"unable to convert non-struct type %v to nvmlDevice\", val.Kind()))\n\t\t}\n\n\t\tfor i := 0; i < val.Type().NumField(); i++ {\n\t\t\tif !val.Type().Field(i).Anonymous {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif !val.Field(i).Type().Implements(reflect.TypeOf((*Device)(nil)).Elem()) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\treturn helper(val.Field(i))\n\t\t}\n\t\tpanic(fmt.Errorf(\"unable to convert %T to nvmlDevice\", d))\n\t}\n\treturn helper(reflect.ValueOf(d))\n}\n\n// EccBitType\ntype EccBitType = MemoryErrorType\n\n// GpuInstanceInfo includes an interface type for Device instead of nvmlDevice\ntype GpuInstanceInfo struct {\n\tDevice    Device\n\tId        uint32\n\tProfileId uint32\n\tPlacement GpuInstancePlacement\n}\n\nfunc (g nvmlGpuInstanceInfo) convert() GpuInstanceInfo {\n\tout := GpuInstanceInfo{\n\t\tDevice:    g.Device,\n\t\tId:        g.Id,\n\t\tProfileId: g.ProfileId,\n\t\tPlacement: g.Placement,\n\t}\n\treturn out\n}\n\n// ComputeInstanceInfo includes an interface type for Device instead of nvmlDevice\ntype ComputeInstanceInfo struct {\n\tDevice      Device\n\tGpuInstance GpuInstance\n\tId          uint32\n\tProfileId   uint32\n\tPlacement   ComputeInstancePlacement\n}\n\nfunc (c nvmlComputeInstanceInfo) convert() ComputeInstanceInfo {\n\tout := ComputeInstanceInfo{\n\t\tDevice:      c.Device,\n\t\tGpuInstance: c.GpuInstance,\n\t\tId:          c.Id,\n\t\tProfileId:   c.ProfileId,\n\t\tPlacement:   c.Placement,\n\t}\n\treturn out\n}\n\n// nvml.DeviceGetCount()\nfunc (l *library) DeviceGetCount() (int, Return) {\n\tvar deviceCount uint32\n\tret := nvmlDeviceGetCount(&deviceCount)\n\treturn int(deviceCount), ret\n}\n\n// nvml.DeviceGetHandleByIndex()\nfunc (l *library) DeviceGetHandleByIndex(index int) (Device, Return) {\n\tvar device nvmlDevice\n\tret := nvmlDeviceGetHandleByIndex(uint32(index), &device)\n\treturn device, ret\n}\n\n// nvml.DeviceGetHandleBySerial()\n//\n// Deprecated: Use DeviceGetHandleByUUID instead.\nfunc (l *library) DeviceGetHandleBySerial(serial string) (Device, Return) {\n\tvar device nvmlDevice\n\tret := nvmlDeviceGetHandleBySerial(serial+string(rune(0)), &device)\n\treturn device, ret\n}\n\n// nvml.DeviceGetHandleByUUID()\nfunc (l *library) DeviceGetHandleByUUID(uuid string) (Device, Return) {\n\tvar device nvmlDevice\n\tret := nvmlDeviceGetHandleByUUID(uuid+string(rune(0)), &device)\n\treturn device, ret\n}\n\n// nvml.DeviceGetHandleByUUIDV()\nfunc (l *library) DeviceGetHandleByUUIDV(uuid *UUID) (Device, Return) {\n\tvar device nvmlDevice\n\tret := nvmlDeviceGetHandleByUUIDV(uuid, &device)\n\treturn device, ret\n}\n\n// nvml.DeviceGetHandleByPciBusId()\nfunc (l *library) DeviceGetHandleByPciBusId(pciBusId string) (Device, Return) {\n\tvar device nvmlDevice\n\tret := nvmlDeviceGetHandleByPciBusId(pciBusId+string(rune(0)), &device)\n\treturn device, ret\n}\n\n// nvml.DeviceGetName()\nfunc (l *library) DeviceGetName(device Device) (string, Return) {\n\treturn device.GetName()\n}\n\nfunc (device nvmlDevice) GetName() (string, Return) {\n\tname := make([]byte, DEVICE_NAME_V2_BUFFER_SIZE)\n\tret := nvmlDeviceGetName(device, &name[0], DEVICE_NAME_V2_BUFFER_SIZE)\n\treturn string(name[:clen(name)]), ret\n}\n\n// nvml.DeviceGetBrand()\nfunc (l *library) DeviceGetBrand(device Device) (BrandType, Return) {\n\treturn device.GetBrand()\n}\n\nfunc (device nvmlDevice) GetBrand() (BrandType, Return) {\n\tvar brandType BrandType\n\tret := nvmlDeviceGetBrand(device, &brandType)\n\treturn brandType, ret\n}\n\n// nvml.DeviceGetIndex()\nfunc (l *library) DeviceGetIndex(device Device) (int, Return) {\n\treturn device.GetIndex()\n}\n\nfunc (device nvmlDevice) GetIndex() (int, Return) {\n\tvar index uint32\n\tret := nvmlDeviceGetIndex(device, &index)\n\treturn int(index), ret\n}\n\n// nvml.DeviceGetSerial()\nfunc (l *library) DeviceGetSerial(device Device) (string, Return) {\n\treturn device.GetSerial()\n}\n\nfunc (device nvmlDevice) GetSerial() (string, Return) {\n\tserial := make([]byte, DEVICE_SERIAL_BUFFER_SIZE)\n\tret := nvmlDeviceGetSerial(device, &serial[0], DEVICE_SERIAL_BUFFER_SIZE)\n\treturn string(serial[:clen(serial)]), ret\n}\n\n// nvml.DeviceGetCpuAffinity()\nfunc (l *library) DeviceGetCpuAffinity(device Device, numCPUs int) ([]uint, Return) {\n\treturn device.GetCpuAffinity(numCPUs)\n}\n\nfunc (device nvmlDevice) GetCpuAffinity(numCPUs int) ([]uint, Return) {\n\tcpuSetSize := uint32((numCPUs-1)/int(unsafe.Sizeof(uint(0))) + 1)\n\tcpuSet := make([]uint, cpuSetSize)\n\tret := nvmlDeviceGetCpuAffinity(device, cpuSetSize, &cpuSet[0])\n\treturn cpuSet, ret\n}\n\n// nvml.DeviceSetCpuAffinity()\nfunc (l *library) DeviceSetCpuAffinity(device Device) Return {\n\treturn device.SetCpuAffinity()\n}\n\nfunc (device nvmlDevice) SetCpuAffinity() Return {\n\treturn nvmlDeviceSetCpuAffinity(device)\n}\n\n// nvml.DeviceClearCpuAffinity()\nfunc (l *library) DeviceClearCpuAffinity(device Device) Return {\n\treturn device.ClearCpuAffinity()\n}\n\nfunc (device nvmlDevice) ClearCpuAffinity() Return {\n\treturn nvmlDeviceClearCpuAffinity(device)\n}\n\n// nvml.DeviceGetMemoryAffinity()\nfunc (l *library) DeviceGetMemoryAffinity(device Device, numNodes int, scope AffinityScope) ([]uint, Return) {\n\treturn device.GetMemoryAffinity(numNodes, scope)\n}\n\nfunc (device nvmlDevice) GetMemoryAffinity(numNodes int, scope AffinityScope) ([]uint, Return) {\n\tnodeSetSize := uint32((numNodes-1)/int(unsafe.Sizeof(uint(0))) + 1)\n\tnodeSet := make([]uint, nodeSetSize)\n\tret := nvmlDeviceGetMemoryAffinity(device, nodeSetSize, &nodeSet[0], scope)\n\treturn nodeSet, ret\n}\n\n// nvml.DeviceGetCpuAffinityWithinScope()\nfunc (l *library) DeviceGetCpuAffinityWithinScope(device Device, numCPUs int, scope AffinityScope) ([]uint, Return) {\n\treturn device.GetCpuAffinityWithinScope(numCPUs, scope)\n}\n\nfunc (device nvmlDevice) GetCpuAffinityWithinScope(numCPUs int, scope AffinityScope) ([]uint, Return) {\n\tcpuSetSize := uint32((numCPUs-1)/int(unsafe.Sizeof(uint(0))) + 1)\n\tcpuSet := make([]uint, cpuSetSize)\n\tret := nvmlDeviceGetCpuAffinityWithinScope(device, cpuSetSize, &cpuSet[0], scope)\n\treturn cpuSet, ret\n}\n\n// nvml.DeviceGetTopologyCommonAncestor()\nfunc (l *library) DeviceGetTopologyCommonAncestor(device1 Device, device2 Device) (GpuTopologyLevel, Return) {\n\treturn device1.GetTopologyCommonAncestor(device2)\n}\n\nfunc (device1 nvmlDevice) GetTopologyCommonAncestor(device2 Device) (GpuTopologyLevel, Return) {\n\tvar pathInfo GpuTopologyLevel\n\tret := nvmlDeviceGetTopologyCommonAncestorStub(device1, nvmlDeviceHandle(device2), &pathInfo)\n\treturn pathInfo, ret\n}\n\n// nvmlDeviceGetTopologyCommonAncestorStub allows us to override this for testing.\nvar nvmlDeviceGetTopologyCommonAncestorStub = nvmlDeviceGetTopologyCommonAncestor\n\n// nvml.DeviceGetTopologyNearestGpus()\nfunc (l *library) DeviceGetTopologyNearestGpus(device Device, level GpuTopologyLevel) ([]Device, Return) {\n\treturn device.GetTopologyNearestGpus(level)\n}\n\nfunc (device nvmlDevice) GetTopologyNearestGpus(level GpuTopologyLevel) ([]Device, Return) {\n\tvar count uint32\n\tret := nvmlDeviceGetTopologyNearestGpus(device, level, &count, nil)\n\tif ret != SUCCESS {\n\t\treturn nil, ret\n\t}\n\tif count == 0 {\n\t\treturn []Device{}, ret\n\t}\n\tdeviceArray := make([]nvmlDevice, count)\n\tret = nvmlDeviceGetTopologyNearestGpus(device, level, &count, &deviceArray[0])\n\treturn convertSlice[nvmlDevice, Device](deviceArray), ret\n}\n\n// nvml.DeviceGetP2PStatus()\nfunc (l *library) DeviceGetP2PStatus(device1 Device, device2 Device, p2pIndex GpuP2PCapsIndex) (GpuP2PStatus, Return) {\n\treturn device1.GetP2PStatus(device2, p2pIndex)\n}\n\nfunc (device1 nvmlDevice) GetP2PStatus(device2 Device, p2pIndex GpuP2PCapsIndex) (GpuP2PStatus, Return) {\n\tvar p2pStatus GpuP2PStatus\n\tret := nvmlDeviceGetP2PStatus(device1, nvmlDeviceHandle(device2), p2pIndex, &p2pStatus)\n\treturn p2pStatus, ret\n}\n\n// nvml.DeviceGetUUID()\nfunc (l *library) DeviceGetUUID(device Device) (string, Return) {\n\treturn device.GetUUID()\n}\n\nfunc (device nvmlDevice) GetUUID() (string, Return) {\n\tuuid := make([]byte, DEVICE_UUID_V2_BUFFER_SIZE)\n\tret := nvmlDeviceGetUUID(device, &uuid[0], DEVICE_UUID_V2_BUFFER_SIZE)\n\treturn string(uuid[:clen(uuid)]), ret\n}\n\n// nvml.DeviceGetMinorNumber()\nfunc (l *library) DeviceGetMinorNumber(device Device) (int, Return) {\n\treturn device.GetMinorNumber()\n}\n\nfunc (device nvmlDevice) GetMinorNumber() (int, Return) {\n\tvar minorNumber uint32\n\tret := nvmlDeviceGetMinorNumber(device, &minorNumber)\n\treturn int(minorNumber), ret\n}\n\n// nvml.DeviceGetBoardPartNumber()\nfunc (l *library) DeviceGetBoardPartNumber(device Device) (string, Return) {\n\treturn device.GetBoardPartNumber()\n}\n\nfunc (device nvmlDevice) GetBoardPartNumber() (string, Return) {\n\tpartNumber := make([]byte, DEVICE_PART_NUMBER_BUFFER_SIZE)\n\tret := nvmlDeviceGetBoardPartNumber(device, &partNumber[0], DEVICE_PART_NUMBER_BUFFER_SIZE)\n\treturn string(partNumber[:clen(partNumber)]), ret\n}\n\n// nvml.DeviceGetInforomVersion()\nfunc (l *library) DeviceGetInforomVersion(device Device, object InforomObject) (string, Return) {\n\treturn device.GetInforomVersion(object)\n}\n\nfunc (device nvmlDevice) GetInforomVersion(object InforomObject) (string, Return) {\n\tversion := make([]byte, DEVICE_INFOROM_VERSION_BUFFER_SIZE)\n\tret := nvmlDeviceGetInforomVersion(device, object, &version[0], DEVICE_INFOROM_VERSION_BUFFER_SIZE)\n\treturn string(version[:clen(version)]), ret\n}\n\n// nvml.DeviceGetInforomImageVersion()\nfunc (l *library) DeviceGetInforomImageVersion(device Device) (string, Return) {\n\treturn device.GetInforomImageVersion()\n}\n\nfunc (device nvmlDevice) GetInforomImageVersion() (string, Return) {\n\tversion := make([]byte, DEVICE_INFOROM_VERSION_BUFFER_SIZE)\n\tret := nvmlDeviceGetInforomImageVersion(device, &version[0], DEVICE_INFOROM_VERSION_BUFFER_SIZE)\n\treturn string(version[:clen(version)]), ret\n}\n\n// nvml.DeviceGetInforomConfigurationChecksum()\nfunc (l *library) DeviceGetInforomConfigurationChecksum(device Device) (uint32, Return) {\n\treturn device.GetInforomConfigurationChecksum()\n}\n\nfunc (device nvmlDevice) GetInforomConfigurationChecksum() (uint32, Return) {\n\tvar checksum uint32\n\tret := nvmlDeviceGetInforomConfigurationChecksum(device, &checksum)\n\treturn checksum, ret\n}\n\n// nvml.DeviceValidateInforom()\nfunc (l *library) DeviceValidateInforom(device Device) Return {\n\treturn device.ValidateInforom()\n}\n\nfunc (device nvmlDevice) ValidateInforom() Return {\n\treturn nvmlDeviceValidateInforom(device)\n}\n\n// nvml.DeviceGetDisplayMode()\nfunc (l *library) DeviceGetDisplayMode(device Device) (EnableState, Return) {\n\treturn device.GetDisplayMode()\n}\n\nfunc (device nvmlDevice) GetDisplayMode() (EnableState, Return) {\n\tvar display EnableState\n\tret := nvmlDeviceGetDisplayMode(device, &display)\n\treturn display, ret\n}\n\n// nvml.DeviceGetDisplayActive()\nfunc (l *library) DeviceGetDisplayActive(device Device) (EnableState, Return) {\n\treturn device.GetDisplayActive()\n}\n\nfunc (device nvmlDevice) GetDisplayActive() (EnableState, Return) {\n\tvar isActive EnableState\n\tret := nvmlDeviceGetDisplayActive(device, &isActive)\n\treturn isActive, ret\n}\n\n// nvml.DeviceGetPersistenceMode()\nfunc (l *library) DeviceGetPersistenceMode(device Device) (EnableState, Return) {\n\treturn device.GetPersistenceMode()\n}\n\nfunc (device nvmlDevice) GetPersistenceMode() (EnableState, Return) {\n\tvar mode EnableState\n\tret := nvmlDeviceGetPersistenceMode(device, &mode)\n\treturn mode, ret\n}\n\n// nvml.DeviceGetPciInfo()\nfunc (l *library) DeviceGetPciInfo(device Device) (PciInfo, Return) {\n\treturn device.GetPciInfo()\n}\n\nfunc (device nvmlDevice) GetPciInfo() (PciInfo, Return) {\n\tvar pci PciInfo\n\tret := nvmlDeviceGetPciInfo(device, &pci)\n\treturn pci, ret\n}\n\n// nvml.DeviceGetMaxPcieLinkGeneration()\nfunc (l *library) DeviceGetMaxPcieLinkGeneration(device Device) (int, Return) {\n\treturn device.GetMaxPcieLinkGeneration()\n}\n\nfunc (device nvmlDevice) GetMaxPcieLinkGeneration() (int, Return) {\n\tvar maxLinkGen uint32\n\tret := nvmlDeviceGetMaxPcieLinkGeneration(device, &maxLinkGen)\n\treturn int(maxLinkGen), ret\n}\n\n// nvml.DeviceGetMaxPcieLinkWidth()\nfunc (l *library) DeviceGetMaxPcieLinkWidth(device Device) (int, Return) {\n\treturn device.GetMaxPcieLinkWidth()\n}\n\nfunc (device nvmlDevice) GetMaxPcieLinkWidth() (int, Return) {\n\tvar maxLinkWidth uint32\n\tret := nvmlDeviceGetMaxPcieLinkWidth(device, &maxLinkWidth)\n\treturn int(maxLinkWidth), ret\n}\n\n// nvml.DeviceGetCurrPcieLinkGeneration()\nfunc (l *library) DeviceGetCurrPcieLinkGeneration(device Device) (int, Return) {\n\treturn device.GetCurrPcieLinkGeneration()\n}\n\nfunc (device nvmlDevice) GetCurrPcieLinkGeneration() (int, Return) {\n\tvar currLinkGen uint32\n\tret := nvmlDeviceGetCurrPcieLinkGeneration(device, &currLinkGen)\n\treturn int(currLinkGen), ret\n}\n\n// nvml.DeviceGetCurrPcieLinkWidth()\nfunc (l *library) DeviceGetCurrPcieLinkWidth(device Device) (int, Return) {\n\treturn device.GetCurrPcieLinkWidth()\n}\n\nfunc (device nvmlDevice) GetCurrPcieLinkWidth() (int, Return) {\n\tvar currLinkWidth uint32\n\tret := nvmlDeviceGetCurrPcieLinkWidth(device, &currLinkWidth)\n\treturn int(currLinkWidth), ret\n}\n\n// nvml.DeviceGetPcieThroughput()\nfunc (l *library) DeviceGetPcieThroughput(device Device, counter PcieUtilCounter) (uint32, Return) {\n\treturn device.GetPcieThroughput(counter)\n}\n\nfunc (device nvmlDevice) GetPcieThroughput(counter PcieUtilCounter) (uint32, Return) {\n\tvar value uint32\n\tret := nvmlDeviceGetPcieThroughput(device, counter, &value)\n\treturn value, ret\n}\n\n// nvml.DeviceGetPcieReplayCounter()\nfunc (l *library) DeviceGetPcieReplayCounter(device Device) (int, Return) {\n\treturn device.GetPcieReplayCounter()\n}\n\nfunc (device nvmlDevice) GetPcieReplayCounter() (int, Return) {\n\tvar value uint32\n\tret := nvmlDeviceGetPcieReplayCounter(device, &value)\n\treturn int(value), ret\n}\n\n// nvml.nvmlDeviceGetClockInfo()\nfunc (l *library) DeviceGetClockInfo(device Device, clockType ClockType) (uint32, Return) {\n\treturn device.GetClockInfo(clockType)\n}\n\nfunc (device nvmlDevice) GetClockInfo(clockType ClockType) (uint32, Return) {\n\tvar clock uint32\n\tret := nvmlDeviceGetClockInfo(device, clockType, &clock)\n\treturn clock, ret\n}\n\n// nvml.DeviceGetMaxClockInfo()\nfunc (l *library) DeviceGetMaxClockInfo(device Device, clockType ClockType) (uint32, Return) {\n\treturn device.GetMaxClockInfo(clockType)\n}\n\nfunc (device nvmlDevice) GetMaxClockInfo(clockType ClockType) (uint32, Return) {\n\tvar clock uint32\n\tret := nvmlDeviceGetMaxClockInfo(device, clockType, &clock)\n\treturn clock, ret\n}\n\n// nvml.DeviceGetApplicationsClock()\n//\n// Deprecated: Applications clocks are deprecated and will be removed in CUDA 14.0.\nfunc (l *library) DeviceGetApplicationsClock(device Device, clockType ClockType) (uint32, Return) {\n\treturn device.GetApplicationsClock(clockType)\n}\n\n// Deprecated: Applications clocks are deprecated and will be removed in CUDA 14.0.\nfunc (device nvmlDevice) GetApplicationsClock(clockType ClockType) (uint32, Return) {\n\tvar clockMHz uint32\n\tret := nvmlDeviceGetApplicationsClock(device, clockType, &clockMHz)\n\treturn clockMHz, ret\n}\n\n// nvml.DeviceGetDefaultApplicationsClock()\n//\n// Deprecated: Applications clocks are deprecated and will be removed in CUDA 14.0.\nfunc (l *library) DeviceGetDefaultApplicationsClock(device Device, clockType ClockType) (uint32, Return) {\n\treturn device.GetDefaultApplicationsClock(clockType)\n}\n\n// Deprecated: Applications clocks are deprecated and will be removed in CUDA 14.0.\nfunc (device nvmlDevice) GetDefaultApplicationsClock(clockType ClockType) (uint32, Return) {\n\tvar clockMHz uint32\n\tret := nvmlDeviceGetDefaultApplicationsClock(device, clockType, &clockMHz)\n\treturn clockMHz, ret\n}\n\n// nvml.DeviceResetApplicationsClocks()\n//\n// Deprecated: Use DeviceResetMemoryLockedClocks for Memory Clocks and DeviceResetGpuLockedClocks for Graphics Clocks instead\nfunc (l *library) DeviceResetApplicationsClocks(device Device) Return {\n\treturn device.ResetApplicationsClocks()\n}\n\n// Deprecated: Use DeviceResetMemoryLockedClocks for Memory Clocks and DeviceResetGpuLockedClocks for Graphics Clocks instead\nfunc (device nvmlDevice) ResetApplicationsClocks() Return {\n\treturn nvmlDeviceResetApplicationsClocks(device)\n}\n\n// nvml.DeviceGetClock()\nfunc (l *library) DeviceGetClock(device Device, clockType ClockType, clockId ClockId) (uint32, Return) {\n\treturn device.GetClock(clockType, clockId)\n}\n\nfunc (device nvmlDevice) GetClock(clockType ClockType, clockId ClockId) (uint32, Return) {\n\tvar clockMHz uint32\n\tret := nvmlDeviceGetClock(device, clockType, clockId, &clockMHz)\n\treturn clockMHz, ret\n}\n\n// nvml.DeviceGetMaxCustomerBoostClock()\nfunc (l *library) DeviceGetMaxCustomerBoostClock(device Device, clockType ClockType) (uint32, Return) {\n\treturn device.GetMaxCustomerBoostClock(clockType)\n}\n\nfunc (device nvmlDevice) GetMaxCustomerBoostClock(clockType ClockType) (uint32, Return) {\n\tvar clockMHz uint32\n\tret := nvmlDeviceGetMaxCustomerBoostClock(device, clockType, &clockMHz)\n\treturn clockMHz, ret\n}\n\n// nvml.DeviceGetSupportedMemoryClocks()\nfunc (l *library) DeviceGetSupportedMemoryClocks(device Device) (int, uint32, Return) {\n\treturn device.GetSupportedMemoryClocks()\n}\n\nfunc (device nvmlDevice) GetSupportedMemoryClocks() (int, uint32, Return) {\n\tvar count, clocksMHz uint32\n\tret := nvmlDeviceGetSupportedMemoryClocks(device, &count, &clocksMHz)\n\treturn int(count), clocksMHz, ret\n}\n\n// nvml.DeviceGetSupportedGraphicsClocks()\nfunc (l *library) DeviceGetSupportedGraphicsClocks(device Device, memoryClockMHz int) (int, uint32, Return) {\n\treturn device.GetSupportedGraphicsClocks(memoryClockMHz)\n}\n\nfunc (device nvmlDevice) GetSupportedGraphicsClocks(memoryClockMHz int) (int, uint32, Return) {\n\tvar count, clocksMHz uint32\n\tret := nvmlDeviceGetSupportedGraphicsClocks(device, uint32(memoryClockMHz), &count, &clocksMHz)\n\treturn int(count), clocksMHz, ret\n}\n\n// nvml.DeviceGetAutoBoostedClocksEnabled()\nfunc (l *library) DeviceGetAutoBoostedClocksEnabled(device Device) (EnableState, EnableState, Return) {\n\treturn device.GetAutoBoostedClocksEnabled()\n}\n\nfunc (device nvmlDevice) GetAutoBoostedClocksEnabled() (EnableState, EnableState, Return) {\n\tvar isEnabled, defaultIsEnabled EnableState\n\tret := nvmlDeviceGetAutoBoostedClocksEnabled(device, &isEnabled, &defaultIsEnabled)\n\treturn isEnabled, defaultIsEnabled, ret\n}\n\n// nvml.DeviceSetAutoBoostedClocksEnabled()\nfunc (l *library) DeviceSetAutoBoostedClocksEnabled(device Device, enabled EnableState) Return {\n\treturn device.SetAutoBoostedClocksEnabled(enabled)\n}\n\nfunc (device nvmlDevice) SetAutoBoostedClocksEnabled(enabled EnableState) Return {\n\treturn nvmlDeviceSetAutoBoostedClocksEnabled(device, enabled)\n}\n\n// nvml.DeviceSetDefaultAutoBoostedClocksEnabled()\nfunc (l *library) DeviceSetDefaultAutoBoostedClocksEnabled(device Device, enabled EnableState, flags uint32) Return {\n\treturn device.SetDefaultAutoBoostedClocksEnabled(enabled, flags)\n}\n\nfunc (device nvmlDevice) SetDefaultAutoBoostedClocksEnabled(enabled EnableState, flags uint32) Return {\n\treturn nvmlDeviceSetDefaultAutoBoostedClocksEnabled(device, enabled, flags)\n}\n\n// nvml.DeviceGetFanSpeed()\nfunc (l *library) DeviceGetFanSpeed(device Device) (uint32, Return) {\n\treturn device.GetFanSpeed()\n}\n\nfunc (device nvmlDevice) GetFanSpeed() (uint32, Return) {\n\tvar speed uint32\n\tret := nvmlDeviceGetFanSpeed(device, &speed)\n\treturn speed, ret\n}\n\n// nvml.DeviceGetFanSpeed_v2()\nfunc (l *library) DeviceGetFanSpeed_v2(device Device, fan int) (uint32, Return) {\n\treturn device.GetFanSpeed_v2(fan)\n}\n\nfunc (device nvmlDevice) GetFanSpeed_v2(fan int) (uint32, Return) {\n\tvar speed uint32\n\tret := nvmlDeviceGetFanSpeed_v2(device, uint32(fan), &speed)\n\treturn speed, ret\n}\n\n// nvml.DeviceGetNumFans()\nfunc (l *library) DeviceGetNumFans(device Device) (int, Return) {\n\treturn device.GetNumFans()\n}\n\nfunc (device nvmlDevice) GetNumFans() (int, Return) {\n\tvar numFans uint32\n\tret := nvmlDeviceGetNumFans(device, &numFans)\n\treturn int(numFans), ret\n}\n\n// nvml.DeviceGetTemperature()\n//\n// Deprecated: Use DeviceGetTemperatureV instead.\nfunc (l *library) DeviceGetTemperature(device Device, sensorType TemperatureSensors) (uint32, Return) {\n\treturn device.GetTemperature(sensorType)\n}\n\n// Deprecated: Use DeviceGetTemperatureV instead.\nfunc (device nvmlDevice) GetTemperature(sensorType TemperatureSensors) (uint32, Return) {\n\tvar temp uint32\n\tret := nvmlDeviceGetTemperature(device, sensorType, &temp)\n\treturn temp, ret\n}\n\n// nvml.DeviceGetTemperatureThreshold()\nfunc (l *library) DeviceGetTemperatureThreshold(device Device, thresholdType TemperatureThresholds) (uint32, Return) {\n\treturn device.GetTemperatureThreshold(thresholdType)\n}\n\nfunc (device nvmlDevice) GetTemperatureThreshold(thresholdType TemperatureThresholds) (uint32, Return) {\n\tvar temp uint32\n\tret := nvmlDeviceGetTemperatureThreshold(device, thresholdType, &temp)\n\treturn temp, ret\n}\n\n// nvml.DeviceSetTemperatureThreshold()\nfunc (l *library) DeviceSetTemperatureThreshold(device Device, thresholdType TemperatureThresholds, temp int) Return {\n\treturn device.SetTemperatureThreshold(thresholdType, temp)\n}\n\nfunc (device nvmlDevice) SetTemperatureThreshold(thresholdType TemperatureThresholds, temp int) Return {\n\tt := int32(temp)\n\tret := nvmlDeviceSetTemperatureThreshold(device, thresholdType, &t)\n\treturn ret\n}\n\n// nvml.DeviceGetPerformanceState()\nfunc (l *library) DeviceGetPerformanceState(device Device) (Pstates, Return) {\n\treturn device.GetPerformanceState()\n}\n\nfunc (device nvmlDevice) GetPerformanceState() (Pstates, Return) {\n\tvar pState Pstates\n\tret := nvmlDeviceGetPerformanceState(device, &pState)\n\treturn pState, ret\n}\n\n// nvml.DeviceGetCurrentClocksThrottleReasons()\n//\n// Deprecated: Use DeviceGetCurrentClocksEventReasons instead\nfunc (l *library) DeviceGetCurrentClocksThrottleReasons(device Device) (uint64, Return) {\n\treturn device.GetCurrentClocksThrottleReasons()\n}\n\n// Deprecated: Use DeviceGetCurrentClocksEventReasons instead\nfunc (device nvmlDevice) GetCurrentClocksThrottleReasons() (uint64, Return) {\n\tvar clocksThrottleReasons uint64\n\tret := nvmlDeviceGetCurrentClocksThrottleReasons(device, &clocksThrottleReasons)\n\treturn clocksThrottleReasons, ret\n}\n\n// nvml.DeviceGetSupportedClocksThrottleReasons()\n//\n// Deprecated: Use DeviceGetSupportedClocksEventReasons instead\nfunc (l *library) DeviceGetSupportedClocksThrottleReasons(device Device) (uint64, Return) {\n\treturn device.GetSupportedClocksThrottleReasons()\n}\n\n// Deprecated: Use DeviceGetSupportedClocksEventReasons instead\nfunc (device nvmlDevice) GetSupportedClocksThrottleReasons() (uint64, Return) {\n\tvar supportedClocksThrottleReasons uint64\n\tret := nvmlDeviceGetSupportedClocksThrottleReasons(device, &supportedClocksThrottleReasons)\n\treturn supportedClocksThrottleReasons, ret\n}\n\n// nvml.DeviceGetPowerState()\n//\n// Deprecated: Use DeviceGetPerformanceState instead\nfunc (l *library) DeviceGetPowerState(device Device) (Pstates, Return) {\n\treturn device.GetPowerState()\n}\n\n// Deprecated: Use DeviceGetPerformanceState instead\nfunc (device nvmlDevice) GetPowerState() (Pstates, Return) {\n\tvar pState Pstates\n\tret := nvmlDeviceGetPowerState(device, &pState)\n\treturn pState, ret\n}\n\n// nvml.DeviceGetPowerManagementMode()\n//\n// Deprecated: This will be removed in a future version\nfunc (l *library) DeviceGetPowerManagementMode(device Device) (EnableState, Return) {\n\treturn device.GetPowerManagementMode()\n}\n\n// Deprecated: This will be removed in a future version\nfunc (device nvmlDevice) GetPowerManagementMode() (EnableState, Return) {\n\tvar mode EnableState\n\tret := nvmlDeviceGetPowerManagementMode(device, &mode)\n\treturn mode, ret\n}\n\n// nvml.DeviceGetPowerManagementLimit()\nfunc (l *library) DeviceGetPowerManagementLimit(device Device) (uint32, Return) {\n\treturn device.GetPowerManagementLimit()\n}\n\nfunc (device nvmlDevice) GetPowerManagementLimit() (uint32, Return) {\n\tvar limit uint32\n\tret := nvmlDeviceGetPowerManagementLimit(device, &limit)\n\treturn limit, ret\n}\n\n// nvml.DeviceGetPowerManagementLimitConstraints()\nfunc (l *library) DeviceGetPowerManagementLimitConstraints(device Device) (uint32, uint32, Return) {\n\treturn device.GetPowerManagementLimitConstraints()\n}\n\nfunc (device nvmlDevice) GetPowerManagementLimitConstraints() (uint32, uint32, Return) {\n\tvar minLimit, maxLimit uint32\n\tret := nvmlDeviceGetPowerManagementLimitConstraints(device, &minLimit, &maxLimit)\n\treturn minLimit, maxLimit, ret\n}\n\n// nvml.DeviceGetPowerManagementDefaultLimit()\nfunc (l *library) DeviceGetPowerManagementDefaultLimit(device Device) (uint32, Return) {\n\treturn device.GetPowerManagementDefaultLimit()\n}\n\nfunc (device nvmlDevice) GetPowerManagementDefaultLimit() (uint32, Return) {\n\tvar defaultLimit uint32\n\tret := nvmlDeviceGetPowerManagementDefaultLimit(device, &defaultLimit)\n\treturn defaultLimit, ret\n}\n\n// nvml.DeviceGetPowerUsage()\nfunc (l *library) DeviceGetPowerUsage(device Device) (uint32, Return) {\n\treturn device.GetPowerUsage()\n}\n\nfunc (device nvmlDevice) GetPowerUsage() (uint32, Return) {\n\tvar power uint32\n\tret := nvmlDeviceGetPowerUsage(device, &power)\n\treturn power, ret\n}\n\nfunc (l *library) DeviceGetPowerMizerMode_v1(device Device) (DevicePowerMizerModes_v1, Return) {\n\treturn device.GetPowerMizerMode_v1()\n}\n\nfunc (device nvmlDevice) GetPowerMizerMode_v1() (DevicePowerMizerModes_v1, Return) {\n\tvar devicePowerMizerModes DevicePowerMizerModes_v1\n\tret := nvmlDeviceGetPowerMizerMode_v1(device, &devicePowerMizerModes)\n\treturn devicePowerMizerModes, ret\n}\n\n// nvml.DeviceGetTotalEnergyConsumption()\nfunc (l *library) DeviceGetTotalEnergyConsumption(device Device) (uint64, Return) {\n\treturn device.GetTotalEnergyConsumption()\n}\n\nfunc (device nvmlDevice) GetTotalEnergyConsumption() (uint64, Return) {\n\tvar energy uint64\n\tret := nvmlDeviceGetTotalEnergyConsumption(device, &energy)\n\treturn energy, ret\n}\n\n// nvml.DeviceGetEnforcedPowerLimit()\nfunc (l *library) DeviceGetEnforcedPowerLimit(device Device) (uint32, Return) {\n\treturn device.GetEnforcedPowerLimit()\n}\n\nfunc (device nvmlDevice) GetEnforcedPowerLimit() (uint32, Return) {\n\tvar limit uint32\n\tret := nvmlDeviceGetEnforcedPowerLimit(device, &limit)\n\treturn limit, ret\n}\n\n// nvml.DeviceGetGpuOperationMode()\nfunc (l *library) DeviceGetGpuOperationMode(device Device) (GpuOperationMode, GpuOperationMode, Return) {\n\treturn device.GetGpuOperationMode()\n}\n\nfunc (device nvmlDevice) GetGpuOperationMode() (GpuOperationMode, GpuOperationMode, Return) {\n\tvar current, pending GpuOperationMode\n\tret := nvmlDeviceGetGpuOperationMode(device, &current, &pending)\n\treturn current, pending, ret\n}\n\n// nvml.DeviceGetMemoryInfo()\nfunc (l *library) DeviceGetMemoryInfo(device Device) (Memory, Return) {\n\treturn device.GetMemoryInfo()\n}\n\nfunc (device nvmlDevice) GetMemoryInfo() (Memory, Return) {\n\tvar memory Memory\n\tret := nvmlDeviceGetMemoryInfo(device, &memory)\n\treturn memory, ret\n}\n\n// nvml.DeviceGetMemoryInfo_v2()\nfunc (l *library) DeviceGetMemoryInfo_v2(device Device) (Memory_v2, Return) {\n\treturn device.GetMemoryInfo_v2()\n}\n\nfunc (device nvmlDevice) GetMemoryInfo_v2() (Memory_v2, Return) {\n\tvar memory Memory_v2\n\tmemory.Version = STRUCT_VERSION(memory, 2)\n\tret := nvmlDeviceGetMemoryInfo_v2(device, &memory)\n\treturn memory, ret\n}\n\n// nvml.DeviceGetComputeMode()\nfunc (l *library) DeviceGetComputeMode(device Device) (ComputeMode, Return) {\n\treturn device.GetComputeMode()\n}\n\nfunc (device nvmlDevice) GetComputeMode() (ComputeMode, Return) {\n\tvar mode ComputeMode\n\tret := nvmlDeviceGetComputeMode(device, &mode)\n\treturn mode, ret\n}\n\n// nvml.DeviceGetCudaComputeCapability()\nfunc (l *library) DeviceGetCudaComputeCapability(device Device) (int, int, Return) {\n\treturn device.GetCudaComputeCapability()\n}\n\nfunc (device nvmlDevice) GetCudaComputeCapability() (int, int, Return) {\n\tvar major, minor int32\n\tret := nvmlDeviceGetCudaComputeCapability(device, &major, &minor)\n\treturn int(major), int(minor), ret\n}\n\n// nvml.DeviceGetEccMode()\nfunc (l *library) DeviceGetEccMode(device Device) (EnableState, EnableState, Return) {\n\treturn device.GetEccMode()\n}\n\nfunc (device nvmlDevice) GetEccMode() (EnableState, EnableState, Return) {\n\tvar current, pending EnableState\n\tret := nvmlDeviceGetEccMode(device, &current, &pending)\n\treturn current, pending, ret\n}\n\n// nvml.DeviceGetBoardId()\nfunc (l *library) DeviceGetBoardId(device Device) (uint32, Return) {\n\treturn device.GetBoardId()\n}\n\nfunc (device nvmlDevice) GetBoardId() (uint32, Return) {\n\tvar boardId uint32\n\tret := nvmlDeviceGetBoardId(device, &boardId)\n\treturn boardId, ret\n}\n\n// nvml.DeviceGetMultiGpuBoard()\nfunc (l *library) DeviceGetMultiGpuBoard(device Device) (int, Return) {\n\treturn device.GetMultiGpuBoard()\n}\n\nfunc (device nvmlDevice) GetMultiGpuBoard() (int, Return) {\n\tvar multiGpuBool uint32\n\tret := nvmlDeviceGetMultiGpuBoard(device, &multiGpuBool)\n\treturn int(multiGpuBool), ret\n}\n\n// nvml.DeviceGetTotalEccErrors()\nfunc (l *library) DeviceGetTotalEccErrors(device Device, errorType MemoryErrorType, counterType EccCounterType) (uint64, Return) {\n\treturn device.GetTotalEccErrors(errorType, counterType)\n}\n\nfunc (device nvmlDevice) GetTotalEccErrors(errorType MemoryErrorType, counterType EccCounterType) (uint64, Return) {\n\tvar eccCounts uint64\n\tret := nvmlDeviceGetTotalEccErrors(device, errorType, counterType, &eccCounts)\n\treturn eccCounts, ret\n}\n\n// nvml.DeviceGetDetailedEccErrors()\n//\n// Deprecated: See DeviceGetMemoryErrorCounter\nfunc (l *library) DeviceGetDetailedEccErrors(device Device, errorType MemoryErrorType, counterType EccCounterType) (EccErrorCounts, Return) {\n\treturn device.GetDetailedEccErrors(errorType, counterType)\n}\n\n// Deprecated: See DeviceGetMemoryErrorCounter\nfunc (device nvmlDevice) GetDetailedEccErrors(errorType MemoryErrorType, counterType EccCounterType) (EccErrorCounts, Return) {\n\tvar eccCounts EccErrorCounts\n\tret := nvmlDeviceGetDetailedEccErrors(device, errorType, counterType, &eccCounts)\n\treturn eccCounts, ret\n}\n\n// nvml.DeviceGetMemoryErrorCounter()\nfunc (l *library) DeviceGetMemoryErrorCounter(device Device, errorType MemoryErrorType, counterType EccCounterType, locationType MemoryLocation) (uint64, Return) {\n\treturn device.GetMemoryErrorCounter(errorType, counterType, locationType)\n}\n\nfunc (device nvmlDevice) GetMemoryErrorCounter(errorType MemoryErrorType, counterType EccCounterType, locationType MemoryLocation) (uint64, Return) {\n\tvar count uint64\n\tret := nvmlDeviceGetMemoryErrorCounter(device, errorType, counterType, locationType, &count)\n\treturn count, ret\n}\n\n// nvml.DeviceGetUtilizationRates()\nfunc (l *library) DeviceGetUtilizationRates(device Device) (Utilization, Return) {\n\treturn device.GetUtilizationRates()\n}\n\nfunc (device nvmlDevice) GetUtilizationRates() (Utilization, Return) {\n\tvar utilization Utilization\n\tret := nvmlDeviceGetUtilizationRates(device, &utilization)\n\treturn utilization, ret\n}\n\n// nvml.DeviceGetEncoderUtilization()\nfunc (l *library) DeviceGetEncoderUtilization(device Device) (uint32, uint32, Return) {\n\treturn device.GetEncoderUtilization()\n}\n\nfunc (device nvmlDevice) GetEncoderUtilization() (uint32, uint32, Return) {\n\tvar utilization, samplingPeriodUs uint32\n\tret := nvmlDeviceGetEncoderUtilization(device, &utilization, &samplingPeriodUs)\n\treturn utilization, samplingPeriodUs, ret\n}\n\n// nvml.DeviceGetEncoderCapacity()\nfunc (l *library) DeviceGetEncoderCapacity(device Device, encoderQueryType EncoderType) (int, Return) {\n\treturn device.GetEncoderCapacity(encoderQueryType)\n}\n\nfunc (device nvmlDevice) GetEncoderCapacity(encoderQueryType EncoderType) (int, Return) {\n\tvar encoderCapacity uint32\n\tret := nvmlDeviceGetEncoderCapacity(device, encoderQueryType, &encoderCapacity)\n\treturn int(encoderCapacity), ret\n}\n\n// nvml.DeviceGetEncoderStats()\nfunc (l *library) DeviceGetEncoderStats(device Device) (int, uint32, uint32, Return) {\n\treturn device.GetEncoderStats()\n}\n\nfunc (device nvmlDevice) GetEncoderStats() (int, uint32, uint32, Return) {\n\tvar sessionCount, averageFps, averageLatency uint32\n\tret := nvmlDeviceGetEncoderStats(device, &sessionCount, &averageFps, &averageLatency)\n\treturn int(sessionCount), averageFps, averageLatency, ret\n}\n\n// nvml.DeviceGetEncoderSessions()\nfunc (l *library) DeviceGetEncoderSessions(device Device) ([]EncoderSessionInfo, Return) {\n\treturn device.GetEncoderSessions()\n}\n\nfunc (device nvmlDevice) GetEncoderSessions() ([]EncoderSessionInfo, Return) {\n\tvar sessionCount uint32 = 1 // Will be reduced upon returning\n\tfor {\n\t\tsessionInfos := make([]EncoderSessionInfo, sessionCount)\n\t\tret := nvmlDeviceGetEncoderSessions(device, &sessionCount, &sessionInfos[0])\n\t\tif ret == SUCCESS {\n\t\t\treturn sessionInfos[:sessionCount], ret\n\t\t}\n\t\tif ret != ERROR_INSUFFICIENT_SIZE {\n\t\t\treturn nil, ret\n\t\t}\n\t\tsessionCount *= 2\n\t}\n}\n\n// nvml.DeviceGetDecoderUtilization()\nfunc (l *library) DeviceGetDecoderUtilization(device Device) (uint32, uint32, Return) {\n\treturn device.GetDecoderUtilization()\n}\n\nfunc (device nvmlDevice) GetDecoderUtilization() (uint32, uint32, Return) {\n\tvar utilization, samplingPeriodUs uint32\n\tret := nvmlDeviceGetDecoderUtilization(device, &utilization, &samplingPeriodUs)\n\treturn utilization, samplingPeriodUs, ret\n}\n\n// nvml.DeviceGetFBCStats()\nfunc (l *library) DeviceGetFBCStats(device Device) (FBCStats, Return) {\n\treturn device.GetFBCStats()\n}\n\nfunc (device nvmlDevice) GetFBCStats() (FBCStats, Return) {\n\tvar fbcStats FBCStats\n\tret := nvmlDeviceGetFBCStats(device, &fbcStats)\n\treturn fbcStats, ret\n}\n\n// nvml.DeviceGetFBCSessions()\nfunc (l *library) DeviceGetFBCSessions(device Device) ([]FBCSessionInfo, Return) {\n\treturn device.GetFBCSessions()\n}\n\nfunc (device nvmlDevice) GetFBCSessions() ([]FBCSessionInfo, Return) {\n\tvar sessionCount uint32 = 1 // Will be reduced upon returning\n\tfor {\n\t\tsessionInfo := make([]FBCSessionInfo, sessionCount)\n\t\tret := nvmlDeviceGetFBCSessions(device, &sessionCount, &sessionInfo[0])\n\t\tif ret == SUCCESS {\n\t\t\treturn sessionInfo[:sessionCount], ret\n\t\t}\n\t\tif ret != ERROR_INSUFFICIENT_SIZE {\n\t\t\treturn nil, ret\n\t\t}\n\t\tsessionCount *= 2\n\t}\n}\n\n// nvml.DeviceGetDriverModel()\nfunc (l *library) DeviceGetDriverModel(device Device) (DriverModel, DriverModel, Return) {\n\treturn device.GetDriverModel()\n}\n\nfunc (device nvmlDevice) GetDriverModel() (DriverModel, DriverModel, Return) {\n\tvar current, pending DriverModel\n\tret := nvmlDeviceGetDriverModel(device, &current, &pending)\n\treturn current, pending, ret\n}\n\n// nvml.DeviceGetVbiosVersion()\nfunc (l *library) DeviceGetVbiosVersion(device Device) (string, Return) {\n\treturn device.GetVbiosVersion()\n}\n\nfunc (device nvmlDevice) GetVbiosVersion() (string, Return) {\n\tversion := make([]byte, DEVICE_VBIOS_VERSION_BUFFER_SIZE)\n\tret := nvmlDeviceGetVbiosVersion(device, &version[0], DEVICE_VBIOS_VERSION_BUFFER_SIZE)\n\treturn string(version[:clen(version)]), ret\n}\n\n// nvml.DeviceGetBridgeChipInfo()\nfunc (l *library) DeviceGetBridgeChipInfo(device Device) (BridgeChipHierarchy, Return) {\n\treturn device.GetBridgeChipInfo()\n}\n\nfunc (device nvmlDevice) GetBridgeChipInfo() (BridgeChipHierarchy, Return) {\n\tvar bridgeHierarchy BridgeChipHierarchy\n\tret := nvmlDeviceGetBridgeChipInfo(device, &bridgeHierarchy)\n\treturn bridgeHierarchy, ret\n}\n\n// nvml.DeviceGetComputeRunningProcesses()\nfunc deviceGetComputeRunningProcesses_v1(device nvmlDevice) ([]ProcessInfo, Return) {\n\tvar infoCount uint32 = 1 // Will be reduced upon returning\n\tfor {\n\t\tinfos := make([]ProcessInfo_v1, infoCount)\n\t\tret := nvmlDeviceGetComputeRunningProcesses_v1(device, &infoCount, &infos[0])\n\t\tif ret == SUCCESS {\n\t\t\treturn ProcessInfo_v1Slice(infos[:infoCount]).ToProcessInfoSlice(), ret\n\t\t}\n\t\tif ret != ERROR_INSUFFICIENT_SIZE {\n\t\t\treturn nil, ret\n\t\t}\n\t\tinfoCount *= 2\n\t}\n}\n\nfunc deviceGetComputeRunningProcesses_v2(device nvmlDevice) ([]ProcessInfo, Return) {\n\tvar infoCount uint32 = 1 // Will be reduced upon returning\n\tfor {\n\t\tinfos := make([]ProcessInfo_v2, infoCount)\n\t\tret := nvmlDeviceGetComputeRunningProcesses_v2(device, &infoCount, &infos[0])\n\t\tif ret == SUCCESS {\n\t\t\treturn ProcessInfo_v2Slice(infos[:infoCount]).ToProcessInfoSlice(), ret\n\t\t}\n\t\tif ret != ERROR_INSUFFICIENT_SIZE {\n\t\t\treturn nil, ret\n\t\t}\n\t\tinfoCount *= 2\n\t}\n}\n\nfunc deviceGetComputeRunningProcesses_v3(device nvmlDevice) ([]ProcessInfo, Return) {\n\tvar infoCount uint32 = 1 // Will be reduced upon returning\n\tfor {\n\t\tinfos := make([]ProcessInfo, infoCount)\n\t\tret := nvmlDeviceGetComputeRunningProcesses_v3(device, &infoCount, &infos[0])\n\t\tif ret == SUCCESS {\n\t\t\treturn infos[:infoCount], ret\n\t\t}\n\t\tif ret != ERROR_INSUFFICIENT_SIZE {\n\t\t\treturn nil, ret\n\t\t}\n\t\tinfoCount *= 2\n\t}\n}\n\nfunc (l *library) DeviceGetComputeRunningProcesses(device Device) ([]ProcessInfo, Return) {\n\treturn device.GetComputeRunningProcesses()\n}\n\nfunc (device nvmlDevice) GetComputeRunningProcesses() ([]ProcessInfo, Return) {\n\treturn deviceGetComputeRunningProcesses(device)\n}\n\n// nvml.DeviceGetGraphicsRunningProcesses()\nfunc deviceGetGraphicsRunningProcesses_v1(device nvmlDevice) ([]ProcessInfo, Return) {\n\tvar infoCount uint32 = 1 // Will be reduced upon returning\n\tfor {\n\t\tinfos := make([]ProcessInfo_v1, infoCount)\n\t\tret := nvmlDeviceGetGraphicsRunningProcesses_v1(device, &infoCount, &infos[0])\n\t\tif ret == SUCCESS {\n\t\t\treturn ProcessInfo_v1Slice(infos[:infoCount]).ToProcessInfoSlice(), ret\n\t\t}\n\t\tif ret != ERROR_INSUFFICIENT_SIZE {\n\t\t\treturn nil, ret\n\t\t}\n\t\tinfoCount *= 2\n\t}\n}\n\nfunc deviceGetGraphicsRunningProcesses_v2(device nvmlDevice) ([]ProcessInfo, Return) {\n\tvar infoCount uint32 = 1 // Will be reduced upon returning\n\tfor {\n\t\tinfos := make([]ProcessInfo_v2, infoCount)\n\t\tret := nvmlDeviceGetGraphicsRunningProcesses_v2(device, &infoCount, &infos[0])\n\t\tif ret == SUCCESS {\n\t\t\treturn ProcessInfo_v2Slice(infos[:infoCount]).ToProcessInfoSlice(), ret\n\t\t}\n\t\tif ret != ERROR_INSUFFICIENT_SIZE {\n\t\t\treturn nil, ret\n\t\t}\n\t\tinfoCount *= 2\n\t}\n}\n\nfunc deviceGetGraphicsRunningProcesses_v3(device nvmlDevice) ([]ProcessInfo, Return) {\n\tvar infoCount uint32 = 1 // Will be reduced upon returning\n\tfor {\n\t\tinfos := make([]ProcessInfo, infoCount)\n\t\tret := nvmlDeviceGetGraphicsRunningProcesses_v3(device, &infoCount, &infos[0])\n\t\tif ret == SUCCESS {\n\t\t\treturn infos[:infoCount], ret\n\t\t}\n\t\tif ret != ERROR_INSUFFICIENT_SIZE {\n\t\t\treturn nil, ret\n\t\t}\n\t\tinfoCount *= 2\n\t}\n}\n\nfunc (l *library) DeviceGetGraphicsRunningProcesses(device Device) ([]ProcessInfo, Return) {\n\treturn device.GetGraphicsRunningProcesses()\n}\n\nfunc (device nvmlDevice) GetGraphicsRunningProcesses() ([]ProcessInfo, Return) {\n\treturn deviceGetGraphicsRunningProcesses(device)\n}\n\n// nvml.DeviceGetMPSComputeRunningProcesses()\nfunc deviceGetMPSComputeRunningProcesses_v1(device nvmlDevice) ([]ProcessInfo, Return) {\n\tvar infoCount uint32 = 1 // Will be reduced upon returning\n\tfor {\n\t\tinfos := make([]ProcessInfo_v1, infoCount)\n\t\tret := nvmlDeviceGetMPSComputeRunningProcesses_v1(device, &infoCount, &infos[0])\n\t\tif ret == SUCCESS {\n\t\t\treturn ProcessInfo_v1Slice(infos[:infoCount]).ToProcessInfoSlice(), ret\n\t\t}\n\t\tif ret != ERROR_INSUFFICIENT_SIZE {\n\t\t\treturn nil, ret\n\t\t}\n\t\tinfoCount *= 2\n\t}\n}\n\nfunc deviceGetMPSComputeRunningProcesses_v2(device nvmlDevice) ([]ProcessInfo, Return) {\n\tvar infoCount uint32 = 1 // Will be reduced upon returning\n\tfor {\n\t\tinfos := make([]ProcessInfo_v2, infoCount)\n\t\tret := nvmlDeviceGetMPSComputeRunningProcesses_v2(device, &infoCount, &infos[0])\n\t\tif ret == SUCCESS {\n\t\t\treturn ProcessInfo_v2Slice(infos[:infoCount]).ToProcessInfoSlice(), ret\n\t\t}\n\t\tif ret != ERROR_INSUFFICIENT_SIZE {\n\t\t\treturn nil, ret\n\t\t}\n\t\tinfoCount *= 2\n\t}\n}\n\nfunc deviceGetMPSComputeRunningProcesses_v3(device nvmlDevice) ([]ProcessInfo, Return) {\n\tvar infoCount uint32 = 1 // Will be reduced upon returning\n\tfor {\n\t\tinfos := make([]ProcessInfo, infoCount)\n\t\tret := nvmlDeviceGetMPSComputeRunningProcesses_v3(device, &infoCount, &infos[0])\n\t\tif ret == SUCCESS {\n\t\t\treturn infos[:infoCount], ret\n\t\t}\n\t\tif ret != ERROR_INSUFFICIENT_SIZE {\n\t\t\treturn nil, ret\n\t\t}\n\t\tinfoCount *= 2\n\t}\n}\n\nfunc (l *library) DeviceGetMPSComputeRunningProcesses(device Device) ([]ProcessInfo, Return) {\n\treturn device.GetMPSComputeRunningProcesses()\n}\n\nfunc (device nvmlDevice) GetMPSComputeRunningProcesses() ([]ProcessInfo, Return) {\n\treturn deviceGetMPSComputeRunningProcesses(device)\n}\n\n// nvml.DeviceOnSameBoard()\nfunc (l *library) DeviceOnSameBoard(device1 Device, device2 Device) (int, Return) {\n\treturn device1.OnSameBoard(device2)\n}\n\nfunc (device1 nvmlDevice) OnSameBoard(device2 Device) (int, Return) {\n\tvar onSameBoard int32\n\tret := nvmlDeviceOnSameBoard(device1, nvmlDeviceHandle(device2), &onSameBoard)\n\treturn int(onSameBoard), ret\n}\n\n// nvml.DeviceGetAPIRestriction()\nfunc (l *library) DeviceGetAPIRestriction(device Device, apiType RestrictedAPI) (EnableState, Return) {\n\treturn device.GetAPIRestriction(apiType)\n}\n\nfunc (device nvmlDevice) GetAPIRestriction(apiType RestrictedAPI) (EnableState, Return) {\n\tvar isRestricted EnableState\n\tret := nvmlDeviceGetAPIRestriction(device, apiType, &isRestricted)\n\treturn isRestricted, ret\n}\n\n// nvml.DeviceGetSamples()\nfunc (l *library) DeviceGetSamples(device Device, samplingType SamplingType, lastSeenTimestamp uint64) (ValueType, []Sample, Return) {\n\treturn device.GetSamples(samplingType, lastSeenTimestamp)\n}\n\nfunc (device nvmlDevice) GetSamples(samplingType SamplingType, lastSeenTimestamp uint64) (ValueType, []Sample, Return) {\n\tvar sampleValType ValueType\n\tvar sampleCount uint32\n\tret := nvmlDeviceGetSamples(device, samplingType, lastSeenTimestamp, &sampleValType, &sampleCount, nil)\n\tif ret != SUCCESS {\n\t\treturn sampleValType, nil, ret\n\t}\n\tif sampleCount == 0 {\n\t\treturn sampleValType, []Sample{}, ret\n\t}\n\tsamples := make([]Sample, sampleCount)\n\tret = nvmlDeviceGetSamples(device, samplingType, lastSeenTimestamp, &sampleValType, &sampleCount, &samples[0])\n\treturn sampleValType, samples, ret\n}\n\n// nvml.DeviceGetBAR1MemoryInfo()\nfunc (l *library) DeviceGetBAR1MemoryInfo(device Device) (BAR1Memory, Return) {\n\treturn device.GetBAR1MemoryInfo()\n}\n\nfunc (device nvmlDevice) GetBAR1MemoryInfo() (BAR1Memory, Return) {\n\tvar bar1Memory BAR1Memory\n\tret := nvmlDeviceGetBAR1MemoryInfo(device, &bar1Memory)\n\treturn bar1Memory, ret\n}\n\n// nvml.DeviceGetViolationStatus()\n//\n// Deprecated: Use DeviceGetFieldValues instead.\nfunc (l *library) DeviceGetViolationStatus(device Device, perfPolicyType PerfPolicyType) (ViolationTime, Return) {\n\treturn device.GetViolationStatus(perfPolicyType)\n}\n\n// Deprecated: Use DeviceGetFieldValues instead.\nfunc (device nvmlDevice) GetViolationStatus(perfPolicyType PerfPolicyType) (ViolationTime, Return) {\n\tvar violTime ViolationTime\n\tret := nvmlDeviceGetViolationStatus(device, perfPolicyType, &violTime)\n\treturn violTime, ret\n}\n\n// nvml.DeviceGetIrqNum()\nfunc (l *library) DeviceGetIrqNum(device Device) (int, Return) {\n\treturn device.GetIrqNum()\n}\n\nfunc (device nvmlDevice) GetIrqNum() (int, Return) {\n\tvar irqNum uint32\n\tret := nvmlDeviceGetIrqNum(device, &irqNum)\n\treturn int(irqNum), ret\n}\n\n// nvml.DeviceGetNumGpuCores()\nfunc (l *library) DeviceGetNumGpuCores(device Device) (int, Return) {\n\treturn device.GetNumGpuCores()\n}\n\nfunc (device nvmlDevice) GetNumGpuCores() (int, Return) {\n\tvar numCores uint32\n\tret := nvmlDeviceGetNumGpuCores(device, &numCores)\n\treturn int(numCores), ret\n}\n\n// nvml.DeviceGetPowerSource()\nfunc (l *library) DeviceGetPowerSource(device Device) (PowerSource, Return) {\n\treturn device.GetPowerSource()\n}\n\nfunc (device nvmlDevice) GetPowerSource() (PowerSource, Return) {\n\tvar powerSource PowerSource\n\tret := nvmlDeviceGetPowerSource(device, &powerSource)\n\treturn powerSource, ret\n}\n\n// nvml.DeviceGetMemoryBusWidth()\nfunc (l *library) DeviceGetMemoryBusWidth(device Device) (uint32, Return) {\n\treturn device.GetMemoryBusWidth()\n}\n\nfunc (device nvmlDevice) GetMemoryBusWidth() (uint32, Return) {\n\tvar busWidth uint32\n\tret := nvmlDeviceGetMemoryBusWidth(device, &busWidth)\n\treturn busWidth, ret\n}\n\n// nvml.DeviceGetPcieLinkMaxSpeed()\nfunc (l *library) DeviceGetPcieLinkMaxSpeed(device Device) (uint32, Return) {\n\treturn device.GetPcieLinkMaxSpeed()\n}\n\nfunc (device nvmlDevice) GetPcieLinkMaxSpeed() (uint32, Return) {\n\tvar maxSpeed uint32\n\tret := nvmlDeviceGetPcieLinkMaxSpeed(device, &maxSpeed)\n\treturn maxSpeed, ret\n}\n\n// nvml.DeviceGetAdaptiveClockInfoStatus()\nfunc (l *library) DeviceGetAdaptiveClockInfoStatus(device Device) (uint32, Return) {\n\treturn device.GetAdaptiveClockInfoStatus()\n}\n\nfunc (device nvmlDevice) GetAdaptiveClockInfoStatus() (uint32, Return) {\n\tvar adaptiveClockStatus uint32\n\tret := nvmlDeviceGetAdaptiveClockInfoStatus(device, &adaptiveClockStatus)\n\treturn adaptiveClockStatus, ret\n}\n\n// nvml.DeviceGetAccountingMode()\nfunc (l *library) DeviceGetAccountingMode(device Device) (EnableState, Return) {\n\treturn device.GetAccountingMode()\n}\n\nfunc (device nvmlDevice) GetAccountingMode() (EnableState, Return) {\n\tvar mode EnableState\n\tret := nvmlDeviceGetAccountingMode(device, &mode)\n\treturn mode, ret\n}\n\nfunc (l *library) DeviceGetPdi(device Device) (Pdi, Return) {\n\treturn device.GetPdi()\n}\n\nfunc (device nvmlDevice) GetPdi() (Pdi, Return) {\n\tvar pdi Pdi\n\tpdi.Version = STRUCT_VERSION(pdi, 1)\n\tret := nvmlDeviceGetPdi(device, &pdi)\n\treturn pdi, ret\n}\n\n// nvml.DeviceGetAccountingStats()\nfunc (l *library) DeviceGetAccountingStats(device Device, pid uint32) (AccountingStats, Return) {\n\treturn device.GetAccountingStats(pid)\n}\n\nfunc (device nvmlDevice) GetAccountingStats(pid uint32) (AccountingStats, Return) {\n\tvar stats AccountingStats\n\tret := nvmlDeviceGetAccountingStats(device, pid, &stats)\n\treturn stats, ret\n}\n\n// nvml.DeviceGetAccountingPids()\nfunc (l *library) DeviceGetAccountingPids(device Device) ([]int, Return) {\n\treturn device.GetAccountingPids()\n}\n\nfunc (device nvmlDevice) GetAccountingPids() ([]int, Return) {\n\tvar count uint32 = 1 // Will be reduced upon returning\n\tfor {\n\t\tpids := make([]uint32, count)\n\t\tret := nvmlDeviceGetAccountingPids(device, &count, &pids[0])\n\t\tif ret == SUCCESS {\n\t\t\treturn uint32SliceToIntSlice(pids[:count]), ret\n\t\t}\n\t\tif ret != ERROR_INSUFFICIENT_SIZE {\n\t\t\treturn nil, ret\n\t\t}\n\t\tcount *= 2\n\t}\n}\n\n// nvml.DeviceGetAccountingBufferSize()\nfunc (l *library) DeviceGetAccountingBufferSize(device Device) (int, Return) {\n\treturn device.GetAccountingBufferSize()\n}\n\nfunc (device nvmlDevice) GetAccountingBufferSize() (int, Return) {\n\tvar bufferSize uint32\n\tret := nvmlDeviceGetAccountingBufferSize(device, &bufferSize)\n\treturn int(bufferSize), ret\n}\n\n// nvml.DeviceGetRetiredPages()\nfunc (l *library) DeviceGetRetiredPages(device Device, cause PageRetirementCause) ([]uint64, Return) {\n\treturn device.GetRetiredPages(cause)\n}\n\nfunc (device nvmlDevice) GetRetiredPages(cause PageRetirementCause) ([]uint64, Return) {\n\tvar pageCount uint32 = 1 // Will be reduced upon returning\n\tfor {\n\t\taddresses := make([]uint64, pageCount)\n\t\tret := nvmlDeviceGetRetiredPages(device, cause, &pageCount, &addresses[0])\n\t\tif ret == SUCCESS {\n\t\t\treturn addresses[:pageCount], ret\n\t\t}\n\t\tif ret != ERROR_INSUFFICIENT_SIZE {\n\t\t\treturn nil, ret\n\t\t}\n\t\tpageCount *= 2\n\t}\n}\n\n// nvml.DeviceGetRetiredPages_v2()\nfunc (l *library) DeviceGetRetiredPages_v2(device Device, cause PageRetirementCause) ([]uint64, []uint64, Return) {\n\treturn device.GetRetiredPages_v2(cause)\n}\n\nfunc (device nvmlDevice) GetRetiredPages_v2(cause PageRetirementCause) ([]uint64, []uint64, Return) {\n\tvar pageCount uint32 = 1 // Will be reduced upon returning\n\tfor {\n\t\taddresses := make([]uint64, pageCount)\n\t\ttimestamps := make([]uint64, pageCount)\n\t\tret := nvmlDeviceGetRetiredPages_v2(device, cause, &pageCount, &addresses[0], &timestamps[0])\n\t\tif ret == SUCCESS {\n\t\t\treturn addresses[:pageCount], timestamps[:pageCount], ret\n\t\t}\n\t\tif ret != ERROR_INSUFFICIENT_SIZE {\n\t\t\treturn nil, nil, ret\n\t\t}\n\t\tpageCount *= 2\n\t}\n}\n\n// nvml.DeviceGetRetiredPagesPendingStatus()\nfunc (l *library) DeviceGetRetiredPagesPendingStatus(device Device) (EnableState, Return) {\n\treturn device.GetRetiredPagesPendingStatus()\n}\n\nfunc (device nvmlDevice) GetRetiredPagesPendingStatus() (EnableState, Return) {\n\tvar isPending EnableState\n\tret := nvmlDeviceGetRetiredPagesPendingStatus(device, &isPending)\n\treturn isPending, ret\n}\n\n// nvml.DeviceSetPersistenceMode()\nfunc (l *library) DeviceSetPersistenceMode(device Device, mode EnableState) Return {\n\treturn device.SetPersistenceMode(mode)\n}\n\nfunc (device nvmlDevice) SetPersistenceMode(mode EnableState) Return {\n\treturn nvmlDeviceSetPersistenceMode(device, mode)\n}\n\n// nvml.DeviceSetComputeMode()\nfunc (l *library) DeviceSetComputeMode(device Device, mode ComputeMode) Return {\n\treturn device.SetComputeMode(mode)\n}\n\nfunc (device nvmlDevice) SetComputeMode(mode ComputeMode) Return {\n\treturn nvmlDeviceSetComputeMode(device, mode)\n}\n\n// nvml.DeviceSetEccMode()\nfunc (l *library) DeviceSetEccMode(device Device, ecc EnableState) Return {\n\treturn device.SetEccMode(ecc)\n}\n\nfunc (device nvmlDevice) SetEccMode(ecc EnableState) Return {\n\treturn nvmlDeviceSetEccMode(device, ecc)\n}\n\n// nvml.DeviceClearEccErrorCounts()\nfunc (l *library) DeviceClearEccErrorCounts(device Device, counterType EccCounterType) Return {\n\treturn device.ClearEccErrorCounts(counterType)\n}\n\nfunc (device nvmlDevice) ClearEccErrorCounts(counterType EccCounterType) Return {\n\treturn nvmlDeviceClearEccErrorCounts(device, counterType)\n}\n\n// nvml.DeviceSetDriverModel()\nfunc (l *library) DeviceSetDriverModel(device Device, driverModel DriverModel, flags uint32) Return {\n\treturn device.SetDriverModel(driverModel, flags)\n}\n\nfunc (device nvmlDevice) SetDriverModel(driverModel DriverModel, flags uint32) Return {\n\treturn nvmlDeviceSetDriverModel(device, driverModel, flags)\n}\n\n// nvml.DeviceSetGpuLockedClocks()\nfunc (l *library) DeviceSetGpuLockedClocks(device Device, minGpuClockMHz uint32, maxGpuClockMHz uint32) Return {\n\treturn device.SetGpuLockedClocks(minGpuClockMHz, maxGpuClockMHz)\n}\n\nfunc (device nvmlDevice) SetGpuLockedClocks(minGpuClockMHz uint32, maxGpuClockMHz uint32) Return {\n\treturn nvmlDeviceSetGpuLockedClocks(device, minGpuClockMHz, maxGpuClockMHz)\n}\n\n// nvml.DeviceResetGpuLockedClocks()\nfunc (l *library) DeviceResetGpuLockedClocks(device Device) Return {\n\treturn device.ResetGpuLockedClocks()\n}\n\nfunc (device nvmlDevice) ResetGpuLockedClocks() Return {\n\treturn nvmlDeviceResetGpuLockedClocks(device)\n}\n\n// nvmlDeviceSetMemoryLockedClocks()\nfunc (l *library) DeviceSetMemoryLockedClocks(device Device, minMemClockMHz uint32, maxMemClockMHz uint32) Return {\n\treturn device.SetMemoryLockedClocks(minMemClockMHz, maxMemClockMHz)\n}\n\nfunc (device nvmlDevice) SetMemoryLockedClocks(minMemClockMHz uint32, maxMemClockMHz uint32) Return {\n\treturn nvmlDeviceSetMemoryLockedClocks(device, minMemClockMHz, maxMemClockMHz)\n}\n\n// nvmlDeviceResetMemoryLockedClocks()\nfunc (l *library) DeviceResetMemoryLockedClocks(device Device) Return {\n\treturn device.ResetMemoryLockedClocks()\n}\n\nfunc (device nvmlDevice) ResetMemoryLockedClocks() Return {\n\treturn nvmlDeviceResetMemoryLockedClocks(device)\n}\n\n// nvml.DeviceGetClkMonStatus()\nfunc (l *library) DeviceGetClkMonStatus(device Device) (ClkMonStatus, Return) {\n\treturn device.GetClkMonStatus()\n}\n\nfunc (device nvmlDevice) GetClkMonStatus() (ClkMonStatus, Return) {\n\tvar status ClkMonStatus\n\tret := nvmlDeviceGetClkMonStatus(device, &status)\n\treturn status, ret\n}\n\n// nvml.DeviceSetApplicationsClocks()\n//\n// Deprecated:  Use DeviceSetMemoryLockedClocks for Memory Clocks and DeviceSetGpuLockedClocks for Graphics Clocks instead\nfunc (l *library) DeviceSetApplicationsClocks(device Device, memClockMHz uint32, graphicsClockMHz uint32) Return {\n\treturn device.SetApplicationsClocks(memClockMHz, graphicsClockMHz)\n}\n\n// Deprecated:  Use DeviceSetMemoryLockedClocks for Memory Clocks and DeviceSetGpuLockedClocks for Graphics Clocks instead\nfunc (device nvmlDevice) SetApplicationsClocks(memClockMHz uint32, graphicsClockMHz uint32) Return {\n\treturn nvmlDeviceSetApplicationsClocks(device, memClockMHz, graphicsClockMHz)\n}\n\n// nvml.DeviceSetPowerManagementLimit()\nfunc (l *library) DeviceSetPowerManagementLimit(device Device, limit uint32) Return {\n\treturn device.SetPowerManagementLimit(limit)\n}\n\nfunc (device nvmlDevice) SetPowerManagementLimit(limit uint32) Return {\n\treturn nvmlDeviceSetPowerManagementLimit(device, limit)\n}\n\n// nvml.DeviceSetPowerManagementLimit_v2()\nfunc (l *library) DeviceSetPowerManagementLimit_v2(device Device, powerValue *PowerValue_v2) Return {\n\treturn device.SetPowerManagementLimit_v2(powerValue)\n}\n\nfunc (device nvmlDevice) SetPowerManagementLimit_v2(powerValue *PowerValue_v2) Return {\n\treturn nvmlDeviceSetPowerManagementLimit_v2(device, powerValue)\n}\n\n// nvml.DeviceSetGpuOperationMode()\nfunc (l *library) DeviceSetGpuOperationMode(device Device, mode GpuOperationMode) Return {\n\treturn device.SetGpuOperationMode(mode)\n}\n\nfunc (device nvmlDevice) SetGpuOperationMode(mode GpuOperationMode) Return {\n\treturn nvmlDeviceSetGpuOperationMode(device, mode)\n}\n\n// nvml.DeviceSetAPIRestriction()\nfunc (l *library) DeviceSetAPIRestriction(device Device, apiType RestrictedAPI, isRestricted EnableState) Return {\n\treturn device.SetAPIRestriction(apiType, isRestricted)\n}\n\nfunc (device nvmlDevice) SetAPIRestriction(apiType RestrictedAPI, isRestricted EnableState) Return {\n\treturn nvmlDeviceSetAPIRestriction(device, apiType, isRestricted)\n}\n\n// nvml.DeviceSetAccountingMode()\nfunc (l *library) DeviceSetAccountingMode(device Device, mode EnableState) Return {\n\treturn device.SetAccountingMode(mode)\n}\n\nfunc (device nvmlDevice) SetAccountingMode(mode EnableState) Return {\n\treturn nvmlDeviceSetAccountingMode(device, mode)\n}\n\n// nvml.DeviceClearAccountingPids()\nfunc (l *library) DeviceClearAccountingPids(device Device) Return {\n\treturn device.ClearAccountingPids()\n}\n\nfunc (device nvmlDevice) ClearAccountingPids() Return {\n\treturn nvmlDeviceClearAccountingPids(device)\n}\n\n// nvml.DeviceGetNvLinkState()\nfunc (l *library) DeviceGetNvLinkState(device Device, link int) (EnableState, Return) {\n\treturn device.GetNvLinkState(link)\n}\n\nfunc (device nvmlDevice) GetNvLinkState(link int) (EnableState, Return) {\n\tvar isActive EnableState\n\tret := nvmlDeviceGetNvLinkState(device, uint32(link), &isActive)\n\treturn isActive, ret\n}\n\n// nvml.DeviceGetNvLinkVersion()\nfunc (l *library) DeviceGetNvLinkVersion(device Device, link int) (uint32, Return) {\n\treturn device.GetNvLinkVersion(link)\n}\n\nfunc (device nvmlDevice) GetNvLinkVersion(link int) (uint32, Return) {\n\tvar version uint32\n\tret := nvmlDeviceGetNvLinkVersion(device, uint32(link), &version)\n\treturn version, ret\n}\n\n// nvml.DeviceGetNvLinkCapability()\nfunc (l *library) DeviceGetNvLinkCapability(device Device, link int, capability NvLinkCapability) (uint32, Return) {\n\treturn device.GetNvLinkCapability(link, capability)\n}\n\nfunc (device nvmlDevice) GetNvLinkCapability(link int, capability NvLinkCapability) (uint32, Return) {\n\tvar capResult uint32\n\tret := nvmlDeviceGetNvLinkCapability(device, uint32(link), capability, &capResult)\n\treturn capResult, ret\n}\n\n// nvml.DeviceGetNvLinkRemotePciInfo()\nfunc (l *library) DeviceGetNvLinkRemotePciInfo(device Device, link int) (PciInfo, Return) {\n\treturn device.GetNvLinkRemotePciInfo(link)\n}\n\nfunc (device nvmlDevice) GetNvLinkRemotePciInfo(link int) (PciInfo, Return) {\n\tvar pci PciInfo\n\tret := nvmlDeviceGetNvLinkRemotePciInfo(device, uint32(link), &pci)\n\treturn pci, ret\n}\n\n// nvml.DeviceGetNvLinkErrorCounter()\nfunc (l *library) DeviceGetNvLinkErrorCounter(device Device, link int, counter NvLinkErrorCounter) (uint64, Return) {\n\treturn device.GetNvLinkErrorCounter(link, counter)\n}\n\nfunc (device nvmlDevice) GetNvLinkErrorCounter(link int, counter NvLinkErrorCounter) (uint64, Return) {\n\tvar counterValue uint64\n\tret := nvmlDeviceGetNvLinkErrorCounter(device, uint32(link), counter, &counterValue)\n\treturn counterValue, ret\n}\n\n// nvml.DeviceResetNvLinkErrorCounters()\nfunc (l *library) DeviceResetNvLinkErrorCounters(device Device, link int) Return {\n\treturn device.ResetNvLinkErrorCounters(link)\n}\n\nfunc (device nvmlDevice) ResetNvLinkErrorCounters(link int) Return {\n\treturn nvmlDeviceResetNvLinkErrorCounters(device, uint32(link))\n}\n\n// nvml.DeviceSetNvLinkUtilizationControl()\n//\n// Deprecated: Setting utilization counter control is no longer supported.\nfunc (l *library) DeviceSetNvLinkUtilizationControl(device Device, link int, counter int, control *NvLinkUtilizationControl, reset bool) Return {\n\treturn device.SetNvLinkUtilizationControl(link, counter, control, reset)\n}\n\n// Deprecated: Setting utilization counter control is no longer supported.\nfunc (device nvmlDevice) SetNvLinkUtilizationControl(link int, counter int, control *NvLinkUtilizationControl, reset bool) Return {\n\tresetValue := uint32(0)\n\tif reset {\n\t\tresetValue = 1\n\t}\n\treturn nvmlDeviceSetNvLinkUtilizationControl(device, uint32(link), uint32(counter), control, resetValue)\n}\n\n// nvml.DeviceGetNvLinkUtilizationControl()\n//\n// Deprecated: Getting utilization counter control is no longer supported.\nfunc (l *library) DeviceGetNvLinkUtilizationControl(device Device, link int, counter int) (NvLinkUtilizationControl, Return) {\n\treturn device.GetNvLinkUtilizationControl(link, counter)\n}\n\n// Deprecated: Getting utilization counter control is no longer supported.\nfunc (device nvmlDevice) GetNvLinkUtilizationControl(link int, counter int) (NvLinkUtilizationControl, Return) {\n\tvar control NvLinkUtilizationControl\n\tret := nvmlDeviceGetNvLinkUtilizationControl(device, uint32(link), uint32(counter), &control)\n\treturn control, ret\n}\n\n// nvml.DeviceGetNvLinkUtilizationCounter()\n//\n// Deprecated: Use DeviceGetFieldValues with NVML_FI_DEV_NVLINK_THROUGHPUT_* as field values instead.\nfunc (l *library) DeviceGetNvLinkUtilizationCounter(device Device, link int, counter int) (uint64, uint64, Return) {\n\treturn device.GetNvLinkUtilizationCounter(link, counter)\n}\n\n// Deprecated: Use DeviceGetFieldValues with NVML_FI_DEV_NVLINK_THROUGHPUT_* as field values instead.\nfunc (device nvmlDevice) GetNvLinkUtilizationCounter(link int, counter int) (uint64, uint64, Return) {\n\tvar rxCounter, txCounter uint64\n\tret := nvmlDeviceGetNvLinkUtilizationCounter(device, uint32(link), uint32(counter), &rxCounter, &txCounter)\n\treturn rxCounter, txCounter, ret\n}\n\n// nvml.DeviceFreezeNvLinkUtilizationCounter()\n//\n// Deprecated: Freezing NVLINK utilization counters is no longer supported.\nfunc (l *library) DeviceFreezeNvLinkUtilizationCounter(device Device, link int, counter int, freeze EnableState) Return {\n\treturn device.FreezeNvLinkUtilizationCounter(link, counter, freeze)\n}\n\n// Deprecated: Freezing NVLINK utilization counters is no longer supported.\nfunc (device nvmlDevice) FreezeNvLinkUtilizationCounter(link int, counter int, freeze EnableState) Return {\n\treturn nvmlDeviceFreezeNvLinkUtilizationCounter(device, uint32(link), uint32(counter), freeze)\n}\n\n// nvml.DeviceResetNvLinkUtilizationCounter()\n//\n// Deprecated: Resetting NVLINK utilization counters is no longer supported.\nfunc (l *library) DeviceResetNvLinkUtilizationCounter(device Device, link int, counter int) Return {\n\treturn device.ResetNvLinkUtilizationCounter(link, counter)\n}\n\n// Deprecated: Resetting NVLINK utilization counters is no longer supported.\nfunc (device nvmlDevice) ResetNvLinkUtilizationCounter(link int, counter int) Return {\n\treturn nvmlDeviceResetNvLinkUtilizationCounter(device, uint32(link), uint32(counter))\n}\n\n// nvml.DeviceGetNvLinkRemoteDeviceType()\nfunc (l *library) DeviceGetNvLinkRemoteDeviceType(device Device, link int) (IntNvLinkDeviceType, Return) {\n\treturn device.GetNvLinkRemoteDeviceType(link)\n}\n\nfunc (device nvmlDevice) GetNvLinkRemoteDeviceType(link int) (IntNvLinkDeviceType, Return) {\n\tvar nvLinkDeviceType IntNvLinkDeviceType\n\tret := nvmlDeviceGetNvLinkRemoteDeviceType(device, uint32(link), &nvLinkDeviceType)\n\treturn nvLinkDeviceType, ret\n}\n\n// nvml.DeviceRegisterEvents()\nfunc (l *library) DeviceRegisterEvents(device Device, eventTypes uint64, set EventSet) Return {\n\treturn device.RegisterEvents(eventTypes, set)\n}\n\nfunc (device nvmlDevice) RegisterEvents(eventTypes uint64, set EventSet) Return {\n\treturn nvmlDeviceRegisterEvents(device, eventTypes, set.(nvmlEventSet))\n}\n\n// nvmlDeviceGetSupportedEventTypes()\nfunc (l *library) DeviceGetSupportedEventTypes(device Device) (uint64, Return) {\n\treturn device.GetSupportedEventTypes()\n}\n\nfunc (device nvmlDevice) GetSupportedEventTypes() (uint64, Return) {\n\tvar eventTypes uint64\n\tret := nvmlDeviceGetSupportedEventTypes(device, &eventTypes)\n\treturn eventTypes, ret\n}\n\n// nvml.DeviceModifyDrainState()\nfunc (l *library) DeviceModifyDrainState(pciInfo *PciInfo, newState EnableState) Return {\n\treturn nvmlDeviceModifyDrainState(pciInfo, newState)\n}\n\n// nvml.DeviceQueryDrainState()\nfunc (l *library) DeviceQueryDrainState(pciInfo *PciInfo) (EnableState, Return) {\n\tvar currentState EnableState\n\tret := nvmlDeviceQueryDrainState(pciInfo, &currentState)\n\treturn currentState, ret\n}\n\n// nvml.DeviceRemoveGpu()\nfunc (l *library) DeviceRemoveGpu(pciInfo *PciInfo) Return {\n\treturn nvmlDeviceRemoveGpu(pciInfo)\n}\n\n// nvml.DeviceRemoveGpu_v2()\nfunc (l *library) DeviceRemoveGpu_v2(pciInfo *PciInfo, gpuState DetachGpuState, linkState PcieLinkState) Return {\n\treturn nvmlDeviceRemoveGpu_v2(pciInfo, gpuState, linkState)\n}\n\n// nvml.DeviceDiscoverGpus()\nfunc (l *library) DeviceDiscoverGpus() (PciInfo, Return) {\n\tvar pciInfo PciInfo\n\tret := nvmlDeviceDiscoverGpus(&pciInfo)\n\treturn pciInfo, ret\n}\n\n// nvml.DeviceGetFieldValues()\nfunc (l *library) DeviceGetFieldValues(device Device, values []FieldValue) Return {\n\treturn device.GetFieldValues(values)\n}\n\nfunc (device nvmlDevice) GetFieldValues(values []FieldValue) Return {\n\tvaluesCount := len(values)\n\treturn nvmlDeviceGetFieldValues(device, int32(valuesCount), &values[0])\n}\n\n// nvml.DeviceGetVirtualizationMode()\nfunc (l *library) DeviceGetVirtualizationMode(device Device) (GpuVirtualizationMode, Return) {\n\treturn device.GetVirtualizationMode()\n}\n\nfunc (device nvmlDevice) GetVirtualizationMode() (GpuVirtualizationMode, Return) {\n\tvar pVirtualMode GpuVirtualizationMode\n\tret := nvmlDeviceGetVirtualizationMode(device, &pVirtualMode)\n\treturn pVirtualMode, ret\n}\n\n// nvml.DeviceGetHostVgpuMode()\nfunc (l *library) DeviceGetHostVgpuMode(device Device) (HostVgpuMode, Return) {\n\treturn device.GetHostVgpuMode()\n}\n\nfunc (device nvmlDevice) GetHostVgpuMode() (HostVgpuMode, Return) {\n\tvar pHostVgpuMode HostVgpuMode\n\tret := nvmlDeviceGetHostVgpuMode(device, &pHostVgpuMode)\n\treturn pHostVgpuMode, ret\n}\n\n// nvml.DeviceSetVirtualizationMode()\nfunc (l *library) DeviceSetVirtualizationMode(device Device, virtualMode GpuVirtualizationMode) Return {\n\treturn device.SetVirtualizationMode(virtualMode)\n}\n\nfunc (device nvmlDevice) SetVirtualizationMode(virtualMode GpuVirtualizationMode) Return {\n\treturn nvmlDeviceSetVirtualizationMode(device, virtualMode)\n}\n\n// nvml.DeviceGetGridLicensableFeatures()\nfunc (l *library) DeviceGetGridLicensableFeatures(device Device) (GridLicensableFeatures, Return) {\n\treturn device.GetGridLicensableFeatures()\n}\n\nfunc (device nvmlDevice) GetGridLicensableFeatures() (GridLicensableFeatures, Return) {\n\tvar pGridLicensableFeatures GridLicensableFeatures\n\tret := nvmlDeviceGetGridLicensableFeatures(device, &pGridLicensableFeatures)\n\treturn pGridLicensableFeatures, ret\n}\n\n// nvml.DeviceGetProcessUtilization()\nfunc (l *library) DeviceGetProcessUtilization(device Device, lastSeenTimestamp uint64) ([]ProcessUtilizationSample, Return) {\n\treturn device.GetProcessUtilization(lastSeenTimestamp)\n}\n\nfunc (device nvmlDevice) GetProcessUtilization(lastSeenTimestamp uint64) ([]ProcessUtilizationSample, Return) {\n\tvar processSamplesCount uint32\n\tret := nvmlDeviceGetProcessUtilization(device, nil, &processSamplesCount, lastSeenTimestamp)\n\tif ret != ERROR_INSUFFICIENT_SIZE {\n\t\treturn nil, ret\n\t}\n\tif processSamplesCount == 0 {\n\t\treturn []ProcessUtilizationSample{}, ret\n\t}\n\tutilization := make([]ProcessUtilizationSample, processSamplesCount)\n\tret = nvmlDeviceGetProcessUtilization(device, &utilization[0], &processSamplesCount, lastSeenTimestamp)\n\treturn utilization[:processSamplesCount], ret\n}\n\n// nvml.DeviceGetSupportedVgpus()\nfunc (l *library) DeviceGetSupportedVgpus(device Device) ([]VgpuTypeId, Return) {\n\treturn device.GetSupportedVgpus()\n}\n\nfunc (device nvmlDevice) GetSupportedVgpus() ([]VgpuTypeId, Return) {\n\tvar vgpuCount uint32 = 1 // Will be reduced upon returning\n\tfor {\n\t\tvgpuTypeIds := make([]nvmlVgpuTypeId, vgpuCount)\n\t\tret := nvmlDeviceGetSupportedVgpus(device, &vgpuCount, &vgpuTypeIds[0])\n\t\tif ret == SUCCESS {\n\t\t\treturn convertSlice[nvmlVgpuTypeId, VgpuTypeId](vgpuTypeIds[:vgpuCount]), ret\n\t\t}\n\t\tif ret != ERROR_INSUFFICIENT_SIZE {\n\t\t\treturn nil, ret\n\t\t}\n\t\tvgpuCount *= 2\n\t}\n}\n\n// nvml.DeviceGetCreatableVgpus()\nfunc (l *library) DeviceGetCreatableVgpus(device Device) ([]VgpuTypeId, Return) {\n\treturn device.GetCreatableVgpus()\n}\n\nfunc (device nvmlDevice) GetCreatableVgpus() ([]VgpuTypeId, Return) {\n\tvar vgpuCount uint32 = 1 // Will be reduced upon returning\n\tfor {\n\t\tvgpuTypeIds := make([]nvmlVgpuTypeId, vgpuCount)\n\t\tret := nvmlDeviceGetCreatableVgpus(device, &vgpuCount, &vgpuTypeIds[0])\n\t\tif ret == SUCCESS {\n\t\t\treturn convertSlice[nvmlVgpuTypeId, VgpuTypeId](vgpuTypeIds[:vgpuCount]), ret\n\t\t}\n\t\tif ret != ERROR_INSUFFICIENT_SIZE {\n\t\t\treturn nil, ret\n\t\t}\n\t\tvgpuCount *= 2\n\t}\n}\n\n// nvml.DeviceGetActiveVgpus()\nfunc (l *library) DeviceGetActiveVgpus(device Device) ([]VgpuInstance, Return) {\n\treturn device.GetActiveVgpus()\n}\n\nfunc (device nvmlDevice) GetActiveVgpus() ([]VgpuInstance, Return) {\n\tvar vgpuCount uint32 = 1 // Will be reduced upon returning\n\tfor {\n\t\tvgpuInstances := make([]nvmlVgpuInstance, vgpuCount)\n\t\tret := nvmlDeviceGetActiveVgpus(device, &vgpuCount, &vgpuInstances[0])\n\t\tif ret == SUCCESS {\n\t\t\treturn convertSlice[nvmlVgpuInstance, VgpuInstance](vgpuInstances[:vgpuCount]), ret\n\t\t}\n\t\tif ret != ERROR_INSUFFICIENT_SIZE {\n\t\t\treturn nil, ret\n\t\t}\n\t\tvgpuCount *= 2\n\t}\n}\n\n// nvml.DeviceGetVgpuMetadata()\nfunc (l *library) DeviceGetVgpuMetadata(device Device) (VgpuPgpuMetadata, Return) {\n\treturn device.GetVgpuMetadata()\n}\n\nfunc (device nvmlDevice) GetVgpuMetadata() (VgpuPgpuMetadata, Return) {\n\tvar vgpuPgpuMetadata VgpuPgpuMetadata\n\topaqueDataSize := unsafe.Sizeof(vgpuPgpuMetadata.nvmlVgpuPgpuMetadata.OpaqueData)\n\tvgpuPgpuMetadataSize := unsafe.Sizeof(vgpuPgpuMetadata.nvmlVgpuPgpuMetadata) - opaqueDataSize\n\tfor {\n\t\tbufferSize := uint32(vgpuPgpuMetadataSize + opaqueDataSize)\n\t\tbuffer := make([]byte, bufferSize)\n\t\tnvmlVgpuPgpuMetadataPtr := (*nvmlVgpuPgpuMetadata)(unsafe.Pointer(&buffer[0]))\n\t\tret := nvmlDeviceGetVgpuMetadata(device, nvmlVgpuPgpuMetadataPtr, &bufferSize)\n\t\tif ret == SUCCESS {\n\t\t\tvgpuPgpuMetadata.nvmlVgpuPgpuMetadata = *nvmlVgpuPgpuMetadataPtr\n\t\t\tvgpuPgpuMetadata.OpaqueData = buffer[vgpuPgpuMetadataSize:bufferSize]\n\t\t\treturn vgpuPgpuMetadata, ret\n\t\t}\n\t\tif ret != ERROR_INSUFFICIENT_SIZE {\n\t\t\treturn vgpuPgpuMetadata, ret\n\t\t}\n\t\topaqueDataSize = 2 * opaqueDataSize\n\t}\n}\n\n// nvml.DeviceGetPgpuMetadataString()\nfunc (l *library) DeviceGetPgpuMetadataString(device Device) (string, Return) {\n\treturn device.GetPgpuMetadataString()\n}\n\nfunc (device nvmlDevice) GetPgpuMetadataString() (string, Return) {\n\tvar bufferSize uint32 = 1 // Will be reduced upon returning\n\tfor {\n\t\tpgpuMetadata := make([]byte, bufferSize)\n\t\tret := nvmlDeviceGetPgpuMetadataString(device, &pgpuMetadata[0], &bufferSize)\n\t\tif ret == SUCCESS {\n\t\t\treturn string(pgpuMetadata[:clen(pgpuMetadata)]), ret\n\t\t}\n\t\tif ret != ERROR_INSUFFICIENT_SIZE {\n\t\t\treturn \"\", ret\n\t\t}\n\t\tbufferSize *= 2\n\t}\n}\n\n// nvml.DeviceGetVgpuUtilization()\nfunc (l *library) DeviceGetVgpuUtilization(device Device, lastSeenTimestamp uint64) (ValueType, []VgpuInstanceUtilizationSample, Return) {\n\treturn device.GetVgpuUtilization(lastSeenTimestamp)\n}\n\nfunc (device nvmlDevice) GetVgpuUtilization(lastSeenTimestamp uint64) (ValueType, []VgpuInstanceUtilizationSample, Return) {\n\tvar sampleValType ValueType\n\tvar vgpuInstanceSamplesCount uint32 = 1 // Will be reduced upon returning\n\tfor {\n\t\tutilizationSamples := make([]VgpuInstanceUtilizationSample, vgpuInstanceSamplesCount)\n\t\tret := nvmlDeviceGetVgpuUtilization(device, lastSeenTimestamp, &sampleValType, &vgpuInstanceSamplesCount, &utilizationSamples[0])\n\t\tif ret == SUCCESS {\n\t\t\treturn sampleValType, utilizationSamples[:vgpuInstanceSamplesCount], ret\n\t\t}\n\t\tif ret != ERROR_INSUFFICIENT_SIZE {\n\t\t\treturn sampleValType, nil, ret\n\t\t}\n\t\tvgpuInstanceSamplesCount *= 2\n\t}\n}\n\n// nvml.DeviceGetAttributes()\nfunc (l *library) DeviceGetAttributes(device Device) (DeviceAttributes, Return) {\n\treturn device.GetAttributes()\n}\n\nfunc (device nvmlDevice) GetAttributes() (DeviceAttributes, Return) {\n\tvar attributes DeviceAttributes\n\tret := nvmlDeviceGetAttributes(device, &attributes)\n\treturn attributes, ret\n}\n\n// nvml.DeviceGetRemappedRows()\nfunc (l *library) DeviceGetRemappedRows(device Device) (int, int, bool, bool, Return) {\n\treturn device.GetRemappedRows()\n}\n\nfunc (device nvmlDevice) GetRemappedRows() (int, int, bool, bool, Return) {\n\tvar corrRows, uncRows, isPending, failureOccured uint32\n\tret := nvmlDeviceGetRemappedRows(device, &corrRows, &uncRows, &isPending, &failureOccured)\n\treturn int(corrRows), int(uncRows), (isPending != 0), (failureOccured != 0), ret\n}\n\n// nvml.DeviceGetRowRemapperHistogram()\nfunc (l *library) DeviceGetRowRemapperHistogram(device Device) (RowRemapperHistogramValues, Return) {\n\treturn device.GetRowRemapperHistogram()\n}\n\nfunc (device nvmlDevice) GetRowRemapperHistogram() (RowRemapperHistogramValues, Return) {\n\tvar values RowRemapperHistogramValues\n\tret := nvmlDeviceGetRowRemapperHistogram(device, &values)\n\treturn values, ret\n}\n\n// nvml.DeviceGetArchitecture()\nfunc (l *library) DeviceGetArchitecture(device Device) (DeviceArchitecture, Return) {\n\treturn device.GetArchitecture()\n}\n\nfunc (device nvmlDevice) GetArchitecture() (DeviceArchitecture, Return) {\n\tvar arch DeviceArchitecture\n\tret := nvmlDeviceGetArchitecture(device, &arch)\n\treturn arch, ret\n}\n\n// nvml.DeviceGetVgpuProcessUtilization()\nfunc (l *library) DeviceGetVgpuProcessUtilization(device Device, lastSeenTimestamp uint64) ([]VgpuProcessUtilizationSample, Return) {\n\treturn device.GetVgpuProcessUtilization(lastSeenTimestamp)\n}\n\nfunc (device nvmlDevice) GetVgpuProcessUtilization(lastSeenTimestamp uint64) ([]VgpuProcessUtilizationSample, Return) {\n\tvar vgpuProcessSamplesCount uint32 = 1 // Will be reduced upon returning\n\tfor {\n\t\tutilizationSamples := make([]VgpuProcessUtilizationSample, vgpuProcessSamplesCount)\n\t\tret := nvmlDeviceGetVgpuProcessUtilization(device, lastSeenTimestamp, &vgpuProcessSamplesCount, &utilizationSamples[0])\n\t\tif ret == SUCCESS {\n\t\t\treturn utilizationSamples[:vgpuProcessSamplesCount], ret\n\t\t}\n\t\tif ret != ERROR_INSUFFICIENT_SIZE {\n\t\t\treturn nil, ret\n\t\t}\n\t\tvgpuProcessSamplesCount *= 2\n\t}\n}\n\n// nvml.GetExcludedDeviceCount()\nfunc (l *library) GetExcludedDeviceCount() (int, Return) {\n\tvar deviceCount uint32\n\tret := nvmlGetExcludedDeviceCount(&deviceCount)\n\treturn int(deviceCount), ret\n}\n\n// nvml.GetExcludedDeviceInfoByIndex()\nfunc (l *library) GetExcludedDeviceInfoByIndex(index int) (ExcludedDeviceInfo, Return) {\n\tvar info ExcludedDeviceInfo\n\tret := nvmlGetExcludedDeviceInfoByIndex(uint32(index), &info)\n\treturn info, ret\n}\n\nfunc (l *library) DeviceReadWritePRM_v1(device Device, buffer *PRMTLV_v1) Return {\n\treturn device.ReadWritePRM_v1(buffer)\n}\n\nfunc (device nvmlDevice) ReadWritePRM_v1(buffer *PRMTLV_v1) Return {\n\treturn nvmlDeviceReadWritePRM_v1(device, buffer)\n}\n\n// nvml.DeviceSetMigMode()\nfunc (l *library) DeviceSetMigMode(device Device, mode int) (Return, Return) {\n\treturn device.SetMigMode(mode)\n}\n\nfunc (device nvmlDevice) SetMigMode(mode int) (Return, Return) {\n\tvar activationStatus Return\n\tret := nvmlDeviceSetMigMode(device, uint32(mode), &activationStatus)\n\treturn activationStatus, ret\n}\n\n// nvml.DeviceGetMigMode()\nfunc (l *library) DeviceGetMigMode(device Device) (int, int, Return) {\n\treturn device.GetMigMode()\n}\n\nfunc (device nvmlDevice) GetMigMode() (int, int, Return) {\n\tvar currentMode, pendingMode uint32\n\tret := nvmlDeviceGetMigMode(device, &currentMode, &pendingMode)\n\treturn int(currentMode), int(pendingMode), ret\n}\n\n// nvml.DeviceGetGpuInstanceProfileInfo()\nfunc (l *library) DeviceGetGpuInstanceProfileInfo(device Device, profile int) (GpuInstanceProfileInfo, Return) {\n\treturn device.GetGpuInstanceProfileInfo(profile)\n}\n\nfunc (device nvmlDevice) GetGpuInstanceProfileInfo(profile int) (GpuInstanceProfileInfo, Return) {\n\tvar info GpuInstanceProfileInfo\n\tret := nvmlDeviceGetGpuInstanceProfileInfo(device, uint32(profile), &info)\n\treturn info, ret\n}\n\n// nvml.DeviceGetGpuInstanceProfileInfoV()\ntype GpuInstanceProfileInfoHandler struct {\n\tdevice  nvmlDevice\n\tprofile int\n}\n\nfunc (handler GpuInstanceProfileInfoHandler) V1() (GpuInstanceProfileInfo, Return) {\n\treturn DeviceGetGpuInstanceProfileInfo(handler.device, handler.profile)\n}\n\nfunc (handler GpuInstanceProfileInfoHandler) V2() (GpuInstanceProfileInfo_v2, Return) {\n\tvar info GpuInstanceProfileInfo_v2\n\tinfo.Version = STRUCT_VERSION(info, 2)\n\tret := nvmlDeviceGetGpuInstanceProfileInfoV(handler.device, uint32(handler.profile), &info)\n\treturn info, ret\n}\n\nfunc (handler GpuInstanceProfileInfoHandler) V3() (GpuInstanceProfileInfo_v3, Return) {\n\tvar info GpuInstanceProfileInfo_v3\n\tinfo.Version = STRUCT_VERSION(info, 3)\n\tret := nvmlDeviceGetGpuInstanceProfileInfoV(handler.device, uint32(handler.profile), (*GpuInstanceProfileInfo_v2)(unsafe.Pointer(&info)))\n\treturn info, ret\n}\n\nfunc (l *library) DeviceGetGpuInstanceProfileInfoV(device Device, profile int) GpuInstanceProfileInfoHandler {\n\treturn device.GetGpuInstanceProfileInfoV(profile)\n}\n\nfunc (device nvmlDevice) GetGpuInstanceProfileInfoV(profile int) GpuInstanceProfileInfoHandler {\n\treturn GpuInstanceProfileInfoHandler{device, profile}\n}\n\ntype GpuInstanceProfileInfoByIdHandler struct {\n\tdevice    nvmlDevice\n\tprofileId int\n}\n\nfunc (handler GpuInstanceProfileInfoByIdHandler) V2() (GpuInstanceProfileInfo_v2, Return) {\n\tvar info GpuInstanceProfileInfo_v2\n\tinfo.Version = STRUCT_VERSION(info, 2)\n\tret := nvmlDeviceGetGpuInstanceProfileInfoByIdV(handler.device, uint32(handler.profileId), &info)\n\treturn info, ret\n}\n\nfunc (handler GpuInstanceProfileInfoByIdHandler) V3() (GpuInstanceProfileInfo_v3, Return) {\n\tvar info GpuInstanceProfileInfo_v3\n\tinfo.Version = STRUCT_VERSION(info, 3)\n\tret := nvmlDeviceGetGpuInstanceProfileInfoV(handler.device, uint32(handler.profileId), (*GpuInstanceProfileInfo_v2)(unsafe.Pointer(&info)))\n\treturn info, ret\n}\n\nfunc (l *library) DeviceGetGpuInstanceProfileInfoByIdV(device Device, profileId int) GpuInstanceProfileInfoByIdHandler {\n\treturn device.GetGpuInstanceProfileInfoByIdV(profileId)\n}\n\nfunc (device nvmlDevice) GetGpuInstanceProfileInfoByIdV(profileId int) GpuInstanceProfileInfoByIdHandler {\n\treturn GpuInstanceProfileInfoByIdHandler{device, profileId}\n}\n\n// nvml.DeviceGetGpuInstancePossiblePlacements()\nfunc (l *library) DeviceGetGpuInstancePossiblePlacements(device Device, info *GpuInstanceProfileInfo) ([]GpuInstancePlacement, Return) {\n\treturn device.GetGpuInstancePossiblePlacements(info)\n}\n\nfunc (device nvmlDevice) GetGpuInstancePossiblePlacements(info *GpuInstanceProfileInfo) ([]GpuInstancePlacement, Return) {\n\tif info == nil {\n\t\treturn nil, ERROR_INVALID_ARGUMENT\n\t}\n\tvar count uint32\n\tret := nvmlDeviceGetGpuInstancePossiblePlacements(device, info.Id, nil, &count)\n\tif ret != SUCCESS {\n\t\treturn nil, ret\n\t}\n\tif count == 0 {\n\t\treturn []GpuInstancePlacement{}, ret\n\t}\n\tplacements := make([]GpuInstancePlacement, count)\n\tret = nvmlDeviceGetGpuInstancePossiblePlacements(device, info.Id, &placements[0], &count)\n\treturn placements[:count], ret\n}\n\n// nvml.DeviceGetGpuInstanceRemainingCapacity()\nfunc (l *library) DeviceGetGpuInstanceRemainingCapacity(device Device, info *GpuInstanceProfileInfo) (int, Return) {\n\treturn device.GetGpuInstanceRemainingCapacity(info)\n}\n\nfunc (device nvmlDevice) GetGpuInstanceRemainingCapacity(info *GpuInstanceProfileInfo) (int, Return) {\n\tif info == nil {\n\t\treturn 0, ERROR_INVALID_ARGUMENT\n\t}\n\tvar count uint32\n\tret := nvmlDeviceGetGpuInstanceRemainingCapacity(device, info.Id, &count)\n\treturn int(count), ret\n}\n\n// nvml.DeviceCreateGpuInstance()\nfunc (l *library) DeviceCreateGpuInstance(device Device, info *GpuInstanceProfileInfo) (GpuInstance, Return) {\n\treturn device.CreateGpuInstance(info)\n}\n\nfunc (device nvmlDevice) CreateGpuInstance(info *GpuInstanceProfileInfo) (GpuInstance, Return) {\n\tif info == nil {\n\t\treturn nil, ERROR_INVALID_ARGUMENT\n\t}\n\tvar gpuInstance nvmlGpuInstance\n\tret := nvmlDeviceCreateGpuInstance(device, info.Id, &gpuInstance)\n\treturn gpuInstance, ret\n}\n\n// nvml.DeviceCreateGpuInstanceWithPlacement()\nfunc (l *library) DeviceCreateGpuInstanceWithPlacement(device Device, info *GpuInstanceProfileInfo, placement *GpuInstancePlacement) (GpuInstance, Return) {\n\treturn device.CreateGpuInstanceWithPlacement(info, placement)\n}\n\nfunc (device nvmlDevice) CreateGpuInstanceWithPlacement(info *GpuInstanceProfileInfo, placement *GpuInstancePlacement) (GpuInstance, Return) {\n\tif info == nil {\n\t\treturn nil, ERROR_INVALID_ARGUMENT\n\t}\n\tvar gpuInstance nvmlGpuInstance\n\tret := nvmlDeviceCreateGpuInstanceWithPlacement(device, info.Id, placement, &gpuInstance)\n\treturn gpuInstance, ret\n}\n\n// nvml.GpuInstanceDestroy()\nfunc (l *library) GpuInstanceDestroy(gpuInstance GpuInstance) Return {\n\treturn gpuInstance.Destroy()\n}\n\nfunc (gpuInstance nvmlGpuInstance) Destroy() Return {\n\treturn nvmlGpuInstanceDestroy(gpuInstance)\n}\n\n// nvml.DeviceGetGpuInstances()\nfunc (l *library) DeviceGetGpuInstances(device Device, info *GpuInstanceProfileInfo) ([]GpuInstance, Return) {\n\treturn device.GetGpuInstances(info)\n}\n\nfunc (device nvmlDevice) GetGpuInstances(info *GpuInstanceProfileInfo) ([]GpuInstance, Return) {\n\tif info == nil {\n\t\treturn nil, ERROR_INVALID_ARGUMENT\n\t}\n\tvar count = info.InstanceCount\n\tgpuInstances := make([]nvmlGpuInstance, count)\n\tret := nvmlDeviceGetGpuInstances(device, info.Id, &gpuInstances[0], &count)\n\treturn convertSlice[nvmlGpuInstance, GpuInstance](gpuInstances[:count]), ret\n}\n\n// nvml.DeviceGetGpuInstanceById()\nfunc (l *library) DeviceGetGpuInstanceById(device Device, id int) (GpuInstance, Return) {\n\treturn device.GetGpuInstanceById(id)\n}\n\nfunc (device nvmlDevice) GetGpuInstanceById(id int) (GpuInstance, Return) {\n\tvar gpuInstance nvmlGpuInstance\n\tret := nvmlDeviceGetGpuInstanceById(device, uint32(id), &gpuInstance)\n\treturn gpuInstance, ret\n}\n\n// nvml.GpuInstanceGetInfo()\nfunc (l *library) GpuInstanceGetInfo(gpuInstance GpuInstance) (GpuInstanceInfo, Return) {\n\treturn gpuInstance.GetInfo()\n}\n\nfunc (gpuInstance nvmlGpuInstance) GetInfo() (GpuInstanceInfo, Return) {\n\tvar info nvmlGpuInstanceInfo\n\tret := nvmlGpuInstanceGetInfo(gpuInstance, &info)\n\treturn info.convert(), ret\n}\n\n// nvml.GpuInstanceGetComputeInstanceProfileInfo()\nfunc (l *library) GpuInstanceGetComputeInstanceProfileInfo(gpuInstance GpuInstance, profile int, engProfile int) (ComputeInstanceProfileInfo, Return) {\n\treturn gpuInstance.GetComputeInstanceProfileInfo(profile, engProfile)\n}\n\nfunc (gpuInstance nvmlGpuInstance) GetComputeInstanceProfileInfo(profile int, engProfile int) (ComputeInstanceProfileInfo, Return) {\n\tvar info ComputeInstanceProfileInfo\n\tret := nvmlGpuInstanceGetComputeInstanceProfileInfo(gpuInstance, uint32(profile), uint32(engProfile), &info)\n\treturn info, ret\n}\n\n// nvml.GpuInstanceGetComputeInstanceProfileInfoV()\ntype ComputeInstanceProfileInfoHandler struct {\n\tgpuInstance nvmlGpuInstance\n\tprofile     int\n\tengProfile  int\n}\n\nfunc (handler ComputeInstanceProfileInfoHandler) V1() (ComputeInstanceProfileInfo, Return) {\n\treturn GpuInstanceGetComputeInstanceProfileInfo(handler.gpuInstance, handler.profile, handler.engProfile)\n}\n\nfunc (handler ComputeInstanceProfileInfoHandler) V2() (ComputeInstanceProfileInfo_v2, Return) {\n\tvar info ComputeInstanceProfileInfo_v2\n\tinfo.Version = STRUCT_VERSION(info, 2)\n\tret := nvmlGpuInstanceGetComputeInstanceProfileInfoV(handler.gpuInstance, uint32(handler.profile), uint32(handler.engProfile), &info)\n\treturn info, ret\n}\n\nfunc (handler ComputeInstanceProfileInfoHandler) V3() (ComputeInstanceProfileInfo_v3, Return) {\n\tvar info ComputeInstanceProfileInfo_v3\n\tinfo.Version = STRUCT_VERSION(info, 3)\n\tret := nvmlGpuInstanceGetComputeInstanceProfileInfoV(handler.gpuInstance, uint32(handler.profile), uint32(handler.engProfile), (*ComputeInstanceProfileInfo_v2)(unsafe.Pointer(&info)))\n\treturn info, ret\n}\n\nfunc (l *library) GpuInstanceGetComputeInstanceProfileInfoV(gpuInstance GpuInstance, profile int, engProfile int) ComputeInstanceProfileInfoHandler {\n\treturn gpuInstance.GetComputeInstanceProfileInfoV(profile, engProfile)\n}\n\nfunc (gpuInstance nvmlGpuInstance) GetComputeInstanceProfileInfoV(profile int, engProfile int) ComputeInstanceProfileInfoHandler {\n\treturn ComputeInstanceProfileInfoHandler{gpuInstance, profile, engProfile}\n}\n\n// nvml.GpuInstanceGetComputeInstanceRemainingCapacity()\nfunc (l *library) GpuInstanceGetComputeInstanceRemainingCapacity(gpuInstance GpuInstance, info *ComputeInstanceProfileInfo) (int, Return) {\n\treturn gpuInstance.GetComputeInstanceRemainingCapacity(info)\n}\n\nfunc (gpuInstance nvmlGpuInstance) GetComputeInstanceRemainingCapacity(info *ComputeInstanceProfileInfo) (int, Return) {\n\tif info == nil {\n\t\treturn 0, ERROR_INVALID_ARGUMENT\n\t}\n\tvar count uint32\n\tret := nvmlGpuInstanceGetComputeInstanceRemainingCapacity(gpuInstance, info.Id, &count)\n\treturn int(count), ret\n}\n\n// nvml.GpuInstanceCreateComputeInstance()\nfunc (l *library) GpuInstanceCreateComputeInstance(gpuInstance GpuInstance, info *ComputeInstanceProfileInfo) (ComputeInstance, Return) {\n\treturn gpuInstance.CreateComputeInstance(info)\n}\n\nfunc (gpuInstance nvmlGpuInstance) CreateComputeInstance(info *ComputeInstanceProfileInfo) (ComputeInstance, Return) {\n\tif info == nil {\n\t\treturn nil, ERROR_INVALID_ARGUMENT\n\t}\n\tvar computeInstance nvmlComputeInstance\n\tret := nvmlGpuInstanceCreateComputeInstance(gpuInstance, info.Id, &computeInstance)\n\treturn computeInstance, ret\n}\n\n// nvml.ComputeInstanceDestroy()\nfunc (l *library) ComputeInstanceDestroy(computeInstance ComputeInstance) Return {\n\treturn computeInstance.Destroy()\n}\n\nfunc (computeInstance nvmlComputeInstance) Destroy() Return {\n\treturn nvmlComputeInstanceDestroy(computeInstance)\n}\n\n// nvml.GpuInstanceGetComputeInstances()\nfunc (l *library) GpuInstanceGetComputeInstances(gpuInstance GpuInstance, info *ComputeInstanceProfileInfo) ([]ComputeInstance, Return) {\n\treturn gpuInstance.GetComputeInstances(info)\n}\n\nfunc (gpuInstance nvmlGpuInstance) GetComputeInstances(info *ComputeInstanceProfileInfo) ([]ComputeInstance, Return) {\n\tif info == nil {\n\t\treturn nil, ERROR_INVALID_ARGUMENT\n\t}\n\tvar count = info.InstanceCount\n\tcomputeInstances := make([]nvmlComputeInstance, count)\n\tret := nvmlGpuInstanceGetComputeInstances(gpuInstance, info.Id, &computeInstances[0], &count)\n\treturn convertSlice[nvmlComputeInstance, ComputeInstance](computeInstances[:count]), ret\n}\n\n// nvml.GpuInstanceGetComputeInstanceById()\nfunc (l *library) GpuInstanceGetComputeInstanceById(gpuInstance GpuInstance, id int) (ComputeInstance, Return) {\n\treturn gpuInstance.GetComputeInstanceById(id)\n}\n\nfunc (gpuInstance nvmlGpuInstance) GetComputeInstanceById(id int) (ComputeInstance, Return) {\n\tvar computeInstance nvmlComputeInstance\n\tret := nvmlGpuInstanceGetComputeInstanceById(gpuInstance, uint32(id), &computeInstance)\n\treturn computeInstance, ret\n}\n\n// nvml.ComputeInstanceGetInfo()\nfunc (l *library) ComputeInstanceGetInfo(computeInstance ComputeInstance) (ComputeInstanceInfo, Return) {\n\treturn computeInstance.GetInfo()\n}\n\nfunc (computeInstance nvmlComputeInstance) GetInfo() (ComputeInstanceInfo, Return) {\n\tvar info nvmlComputeInstanceInfo\n\tret := nvmlComputeInstanceGetInfo(computeInstance, &info)\n\treturn info.convert(), ret\n}\n\n// nvml.DeviceIsMigDeviceHandle()\nfunc (l *library) DeviceIsMigDeviceHandle(device Device) (bool, Return) {\n\treturn device.IsMigDeviceHandle()\n}\n\nfunc (device nvmlDevice) IsMigDeviceHandle() (bool, Return) {\n\tvar isMigDevice uint32\n\tret := nvmlDeviceIsMigDeviceHandle(device, &isMigDevice)\n\treturn (isMigDevice != 0), ret\n}\n\n// nvml DeviceGetGpuInstanceId()\nfunc (l *library) DeviceGetGpuInstanceId(device Device) (int, Return) {\n\treturn device.GetGpuInstanceId()\n}\n\nfunc (device nvmlDevice) GetGpuInstanceId() (int, Return) {\n\tvar id uint32\n\tret := nvmlDeviceGetGpuInstanceId(device, &id)\n\treturn int(id), ret\n}\n\n// nvml.DeviceGetComputeInstanceId()\nfunc (l *library) DeviceGetComputeInstanceId(device Device) (int, Return) {\n\treturn device.GetComputeInstanceId()\n}\n\nfunc (device nvmlDevice) GetComputeInstanceId() (int, Return) {\n\tvar id uint32\n\tret := nvmlDeviceGetComputeInstanceId(device, &id)\n\treturn int(id), ret\n}\n\n// nvml.DeviceGetMaxMigDeviceCount()\nfunc (l *library) DeviceGetMaxMigDeviceCount(device Device) (int, Return) {\n\treturn device.GetMaxMigDeviceCount()\n}\n\nfunc (device nvmlDevice) GetMaxMigDeviceCount() (int, Return) {\n\tvar count uint32\n\tret := nvmlDeviceGetMaxMigDeviceCount(device, &count)\n\treturn int(count), ret\n}\n\n// nvml.DeviceGetMigDeviceHandleByIndex()\nfunc (l *library) DeviceGetMigDeviceHandleByIndex(device Device, index int) (Device, Return) {\n\treturn device.GetMigDeviceHandleByIndex(index)\n}\n\nfunc (device nvmlDevice) GetMigDeviceHandleByIndex(index int) (Device, Return) {\n\tvar migDevice nvmlDevice\n\tret := nvmlDeviceGetMigDeviceHandleByIndex(device, uint32(index), &migDevice)\n\treturn migDevice, ret\n}\n\n// nvml.DeviceGetDeviceHandleFromMigDeviceHandle()\nfunc (l *library) DeviceGetDeviceHandleFromMigDeviceHandle(migdevice Device) (Device, Return) {\n\treturn migdevice.GetDeviceHandleFromMigDeviceHandle()\n}\n\nfunc (migDevice nvmlDevice) GetDeviceHandleFromMigDeviceHandle() (Device, Return) {\n\tvar device nvmlDevice\n\tret := nvmlDeviceGetDeviceHandleFromMigDeviceHandle(migDevice, &device)\n\treturn device, ret\n}\n\n// nvml.DeviceGetBusType()\nfunc (l *library) DeviceGetBusType(device Device) (BusType, Return) {\n\treturn device.GetBusType()\n}\n\nfunc (device nvmlDevice) GetBusType() (BusType, Return) {\n\tvar busType BusType\n\tret := nvmlDeviceGetBusType(device, &busType)\n\treturn busType, ret\n}\n\n// nvml.DeviceSetDefaultFanSpeed_v2()\nfunc (l *library) DeviceSetDefaultFanSpeed_v2(device Device, fan int) Return {\n\treturn device.SetDefaultFanSpeed_v2(fan)\n}\n\nfunc (device nvmlDevice) SetDefaultFanSpeed_v2(fan int) Return {\n\treturn nvmlDeviceSetDefaultFanSpeed_v2(device, uint32(fan))\n}\n\n// nvml.DeviceGetMinMaxFanSpeed()\nfunc (l *library) DeviceGetMinMaxFanSpeed(device Device) (int, int, Return) {\n\treturn device.GetMinMaxFanSpeed()\n}\n\nfunc (device nvmlDevice) GetMinMaxFanSpeed() (int, int, Return) {\n\tvar minSpeed, maxSpeed uint32\n\tret := nvmlDeviceGetMinMaxFanSpeed(device, &minSpeed, &maxSpeed)\n\treturn int(minSpeed), int(maxSpeed), ret\n}\n\n// nvml.DeviceGetThermalSettings()\nfunc (l *library) DeviceGetThermalSettings(device Device, sensorIndex uint32) (GpuThermalSettings, Return) {\n\treturn device.GetThermalSettings(sensorIndex)\n}\n\nfunc (device nvmlDevice) GetThermalSettings(sensorIndex uint32) (GpuThermalSettings, Return) {\n\tvar pThermalSettings GpuThermalSettings\n\tret := nvmlDeviceGetThermalSettings(device, sensorIndex, &pThermalSettings)\n\treturn pThermalSettings, ret\n}\n\n// nvml.DeviceGetDefaultEccMode()\nfunc (l *library) DeviceGetDefaultEccMode(device Device) (EnableState, Return) {\n\treturn device.GetDefaultEccMode()\n}\n\nfunc (device nvmlDevice) GetDefaultEccMode() (EnableState, Return) {\n\tvar defaultMode EnableState\n\tret := nvmlDeviceGetDefaultEccMode(device, &defaultMode)\n\treturn defaultMode, ret\n}\n\n// nvml.DeviceGetPcieSpeed()\nfunc (l *library) DeviceGetPcieSpeed(device Device) (int, Return) {\n\treturn device.GetPcieSpeed()\n}\n\nfunc (device nvmlDevice) GetPcieSpeed() (int, Return) {\n\tvar pcieSpeed uint32\n\tret := nvmlDeviceGetPcieSpeed(device, &pcieSpeed)\n\treturn int(pcieSpeed), ret\n}\n\n// nvml.DeviceGetGspFirmwareVersion()\nfunc (l *library) DeviceGetGspFirmwareVersion(device Device) (string, Return) {\n\treturn device.GetGspFirmwareVersion()\n}\n\nfunc (device nvmlDevice) GetGspFirmwareVersion() (string, Return) {\n\tversion := make([]byte, GSP_FIRMWARE_VERSION_BUF_SIZE)\n\tret := nvmlDeviceGetGspFirmwareVersion(device, &version[0])\n\treturn string(version[:clen(version)]), ret\n}\n\n// nvml.DeviceGetGspFirmwareMode()\nfunc (l *library) DeviceGetGspFirmwareMode(device Device) (bool, bool, Return) {\n\treturn device.GetGspFirmwareMode()\n}\n\nfunc (device nvmlDevice) GetGspFirmwareMode() (bool, bool, Return) {\n\tvar isEnabled, defaultMode uint32\n\tret := nvmlDeviceGetGspFirmwareMode(device, &isEnabled, &defaultMode)\n\treturn (isEnabled != 0), (defaultMode != 0), ret\n}\n\n// nvml.DeviceGetDynamicPstatesInfo()\nfunc (l *library) DeviceGetDynamicPstatesInfo(device Device) (GpuDynamicPstatesInfo, Return) {\n\treturn device.GetDynamicPstatesInfo()\n}\n\nfunc (device nvmlDevice) GetDynamicPstatesInfo() (GpuDynamicPstatesInfo, Return) {\n\tvar pDynamicPstatesInfo GpuDynamicPstatesInfo\n\tret := nvmlDeviceGetDynamicPstatesInfo(device, &pDynamicPstatesInfo)\n\treturn pDynamicPstatesInfo, ret\n}\n\n// nvml.DeviceSetFanSpeed_v2()\nfunc (l *library) DeviceSetFanSpeed_v2(device Device, fan int, speed int) Return {\n\treturn device.SetFanSpeed_v2(fan, speed)\n}\n\nfunc (device nvmlDevice) SetFanSpeed_v2(fan int, speed int) Return {\n\treturn nvmlDeviceSetFanSpeed_v2(device, uint32(fan), uint32(speed))\n}\n\n// nvml.DeviceGetGpcClkVfOffset()\nfunc (l *library) DeviceGetGpcClkVfOffset(device Device) (int, Return) {\n\treturn device.GetGpcClkVfOffset()\n}\n\nfunc (device nvmlDevice) GetGpcClkVfOffset() (int, Return) {\n\tvar offset int32\n\tret := nvmlDeviceGetGpcClkVfOffset(device, &offset)\n\treturn int(offset), ret\n}\n\n// nvml.DeviceSetGpcClkVfOffset()\n//\n// Deprecated: Use DeviceSetClockOffsets instead.\nfunc (l *library) DeviceSetGpcClkVfOffset(device Device, offset int) Return {\n\treturn device.SetGpcClkVfOffset(offset)\n}\n\n// Deprecated: Use DeviceSetClockOffsets instead.\nfunc (device nvmlDevice) SetGpcClkVfOffset(offset int) Return {\n\treturn nvmlDeviceSetGpcClkVfOffset(device, int32(offset))\n}\n\n// nvml.DeviceGetMinMaxClockOfPState()\nfunc (l *library) DeviceGetMinMaxClockOfPState(device Device, clockType ClockType, pstate Pstates) (uint32, uint32, Return) {\n\treturn device.GetMinMaxClockOfPState(clockType, pstate)\n}\n\nfunc (device nvmlDevice) GetMinMaxClockOfPState(clockType ClockType, pstate Pstates) (uint32, uint32, Return) {\n\tvar minClockMHz, maxClockMHz uint32\n\tret := nvmlDeviceGetMinMaxClockOfPState(device, clockType, pstate, &minClockMHz, &maxClockMHz)\n\treturn minClockMHz, maxClockMHz, ret\n}\n\n// nvml.DeviceGetSupportedPerformanceStates()\nfunc (l *library) DeviceGetSupportedPerformanceStates(device Device) ([]Pstates, Return) {\n\treturn device.GetSupportedPerformanceStates()\n}\n\nfunc (device nvmlDevice) GetSupportedPerformanceStates() ([]Pstates, Return) {\n\tpstates := make([]Pstates, MAX_GPU_PERF_PSTATES)\n\tret := nvmlDeviceGetSupportedPerformanceStates(device, &pstates[0], MAX_GPU_PERF_PSTATES)\n\tfor i := 0; i < MAX_GPU_PERF_PSTATES; i++ {\n\t\tif pstates[i] == PSTATE_UNKNOWN {\n\t\t\treturn pstates[0:i], ret\n\t\t}\n\t}\n\treturn pstates, ret\n}\n\n// nvml.DeviceGetTargetFanSpeed()\nfunc (l *library) DeviceGetTargetFanSpeed(device Device, fan int) (int, Return) {\n\treturn device.GetTargetFanSpeed(fan)\n}\n\nfunc (device nvmlDevice) GetTargetFanSpeed(fan int) (int, Return) {\n\tvar targetSpeed uint32\n\tret := nvmlDeviceGetTargetFanSpeed(device, uint32(fan), &targetSpeed)\n\treturn int(targetSpeed), ret\n}\n\n// nvml.DeviceGetMemClkVfOffset()\nfunc (l *library) DeviceGetMemClkVfOffset(device Device) (int, Return) {\n\treturn device.GetMemClkVfOffset()\n}\n\nfunc (device nvmlDevice) GetMemClkVfOffset() (int, Return) {\n\tvar offset int32\n\tret := nvmlDeviceGetMemClkVfOffset(device, &offset)\n\treturn int(offset), ret\n}\n\n// nvml.DeviceSetMemClkVfOffset()\n//\n// Deprecated: Use DeviceSetMemClkVfOffset instead\nfunc (l *library) DeviceSetMemClkVfOffset(device Device, offset int) Return {\n\treturn device.SetMemClkVfOffset(offset)\n}\n\n// Deprecated: Use DeviceSetMemClkVfOffset instead\nfunc (device nvmlDevice) SetMemClkVfOffset(offset int) Return {\n\treturn nvmlDeviceSetMemClkVfOffset(device, int32(offset))\n}\n\n// nvml.DeviceGetGpcClkMinMaxVfOffset()\nfunc (l *library) DeviceGetGpcClkMinMaxVfOffset(device Device) (int, int, Return) {\n\treturn device.GetGpcClkMinMaxVfOffset()\n}\n\nfunc (device nvmlDevice) GetGpcClkMinMaxVfOffset() (int, int, Return) {\n\tvar minOffset, maxOffset int32\n\tret := nvmlDeviceGetGpcClkMinMaxVfOffset(device, &minOffset, &maxOffset)\n\treturn int(minOffset), int(maxOffset), ret\n}\n\n// nvml.DeviceGetMemClkMinMaxVfOffset()\nfunc (l *library) DeviceGetMemClkMinMaxVfOffset(device Device) (int, int, Return) {\n\treturn device.GetMemClkMinMaxVfOffset()\n}\n\nfunc (device nvmlDevice) GetMemClkMinMaxVfOffset() (int, int, Return) {\n\tvar minOffset, maxOffset int32\n\tret := nvmlDeviceGetMemClkMinMaxVfOffset(device, &minOffset, &maxOffset)\n\treturn int(minOffset), int(maxOffset), ret\n}\n\n// nvml.DeviceGetGpuMaxPcieLinkGeneration()\nfunc (l *library) DeviceGetGpuMaxPcieLinkGeneration(device Device) (int, Return) {\n\treturn device.GetGpuMaxPcieLinkGeneration()\n}\n\nfunc (device nvmlDevice) GetGpuMaxPcieLinkGeneration() (int, Return) {\n\tvar maxLinkGenDevice uint32\n\tret := nvmlDeviceGetGpuMaxPcieLinkGeneration(device, &maxLinkGenDevice)\n\treturn int(maxLinkGenDevice), ret\n}\n\n// nvml.DeviceGetFanControlPolicy_v2()\nfunc (l *library) DeviceGetFanControlPolicy_v2(device Device, fan int) (FanControlPolicy, Return) {\n\treturn device.GetFanControlPolicy_v2(fan)\n}\n\nfunc (device nvmlDevice) GetFanControlPolicy_v2(fan int) (FanControlPolicy, Return) {\n\tvar policy FanControlPolicy\n\tret := nvmlDeviceGetFanControlPolicy_v2(device, uint32(fan), &policy)\n\treturn policy, ret\n}\n\n// nvml.DeviceSetFanControlPolicy()\nfunc (l *library) DeviceSetFanControlPolicy(device Device, fan int, policy FanControlPolicy) Return {\n\treturn device.SetFanControlPolicy(fan, policy)\n}\n\nfunc (device nvmlDevice) SetFanControlPolicy(fan int, policy FanControlPolicy) Return {\n\treturn nvmlDeviceSetFanControlPolicy(device, uint32(fan), policy)\n}\n\n// nvml.DeviceClearFieldValues()\nfunc (l *library) DeviceClearFieldValues(device Device, values []FieldValue) Return {\n\treturn device.ClearFieldValues(values)\n}\n\nfunc (device nvmlDevice) ClearFieldValues(values []FieldValue) Return {\n\tvaluesCount := len(values)\n\treturn nvmlDeviceClearFieldValues(device, int32(valuesCount), &values[0])\n}\n\n// nvml.DeviceGetVgpuCapabilities()\nfunc (l *library) DeviceGetVgpuCapabilities(device Device, capability DeviceVgpuCapability) (bool, Return) {\n\treturn device.GetVgpuCapabilities(capability)\n}\n\nfunc (device nvmlDevice) GetVgpuCapabilities(capability DeviceVgpuCapability) (bool, Return) {\n\tvar capResult uint32\n\tret := nvmlDeviceGetVgpuCapabilities(device, capability, &capResult)\n\treturn (capResult != 0), ret\n}\n\n// nvml.DeviceGetVgpuSchedulerLog()\nfunc (l *library) DeviceGetVgpuSchedulerLog(device Device) (VgpuSchedulerLog, Return) {\n\treturn device.GetVgpuSchedulerLog()\n}\n\nfunc (device nvmlDevice) GetVgpuSchedulerLog() (VgpuSchedulerLog, Return) {\n\tvar pSchedulerLog VgpuSchedulerLog\n\tret := nvmlDeviceGetVgpuSchedulerLog(device, &pSchedulerLog)\n\treturn pSchedulerLog, ret\n}\n\n// nvml.DeviceGetVgpuSchedulerState()\nfunc (l *library) DeviceGetVgpuSchedulerState(device Device) (VgpuSchedulerGetState, Return) {\n\treturn device.GetVgpuSchedulerState()\n}\n\nfunc (device nvmlDevice) GetVgpuSchedulerState() (VgpuSchedulerGetState, Return) {\n\tvar pSchedulerState VgpuSchedulerGetState\n\tret := nvmlDeviceGetVgpuSchedulerState(device, &pSchedulerState)\n\treturn pSchedulerState, ret\n}\n\n// nvml.DeviceSetVgpuSchedulerState()\nfunc (l *library) DeviceSetVgpuSchedulerState(device Device, pSchedulerState *VgpuSchedulerSetState) Return {\n\treturn device.SetVgpuSchedulerState(pSchedulerState)\n}\n\nfunc (device nvmlDevice) SetVgpuSchedulerState(pSchedulerState *VgpuSchedulerSetState) Return {\n\treturn nvmlDeviceSetVgpuSchedulerState(device, pSchedulerState)\n}\n\n// nvml.DeviceGetVgpuSchedulerCapabilities()\nfunc (l *library) DeviceGetVgpuSchedulerCapabilities(device Device) (VgpuSchedulerCapabilities, Return) {\n\treturn device.GetVgpuSchedulerCapabilities()\n}\n\nfunc (device nvmlDevice) GetVgpuSchedulerCapabilities() (VgpuSchedulerCapabilities, Return) {\n\tvar pCapabilities VgpuSchedulerCapabilities\n\tret := nvmlDeviceGetVgpuSchedulerCapabilities(device, &pCapabilities)\n\treturn pCapabilities, ret\n}\n\n// nvml.GpuInstanceGetComputeInstancePossiblePlacements()\nfunc (l *library) GpuInstanceGetComputeInstancePossiblePlacements(gpuInstance GpuInstance, info *ComputeInstanceProfileInfo) ([]ComputeInstancePlacement, Return) {\n\treturn gpuInstance.GetComputeInstancePossiblePlacements(info)\n}\n\nfunc (gpuInstance nvmlGpuInstance) GetComputeInstancePossiblePlacements(info *ComputeInstanceProfileInfo) ([]ComputeInstancePlacement, Return) {\n\tvar count uint32\n\tret := nvmlGpuInstanceGetComputeInstancePossiblePlacements(gpuInstance, info.Id, nil, &count)\n\tif ret != SUCCESS {\n\t\treturn nil, ret\n\t}\n\tif count == 0 {\n\t\treturn []ComputeInstancePlacement{}, ret\n\t}\n\tplacementArray := make([]ComputeInstancePlacement, count)\n\tret = nvmlGpuInstanceGetComputeInstancePossiblePlacements(gpuInstance, info.Id, &placementArray[0], &count)\n\treturn placementArray, ret\n}\n\n// nvml.GpuInstanceCreateComputeInstanceWithPlacement()\nfunc (l *library) GpuInstanceCreateComputeInstanceWithPlacement(gpuInstance GpuInstance, info *ComputeInstanceProfileInfo, placement *ComputeInstancePlacement) (ComputeInstance, Return) {\n\treturn gpuInstance.CreateComputeInstanceWithPlacement(info, placement)\n}\n\nfunc (gpuInstance nvmlGpuInstance) CreateComputeInstanceWithPlacement(info *ComputeInstanceProfileInfo, placement *ComputeInstancePlacement) (ComputeInstance, Return) {\n\tvar computeInstance nvmlComputeInstance\n\tret := nvmlGpuInstanceCreateComputeInstanceWithPlacement(gpuInstance, info.Id, placement, &computeInstance)\n\treturn computeInstance, ret\n}\n\n// nvml.DeviceGetGpuFabricInfo()\n//\n// Deprecated: Use DeviceGetGpuFabricInfoV instead\nfunc (l *library) DeviceGetGpuFabricInfo(device Device) (GpuFabricInfo, Return) {\n\treturn device.GetGpuFabricInfo()\n}\n\n// Deprecated: Use DeviceGetGpuFabricInfoV instead\nfunc (device nvmlDevice) GetGpuFabricInfo() (GpuFabricInfo, Return) {\n\tvar gpuFabricInfo GpuFabricInfo\n\tret := nvmlDeviceGetGpuFabricInfo(device, &gpuFabricInfo)\n\treturn gpuFabricInfo, ret\n}\n\n// nvml.DeviceSetNvLinkDeviceLowPowerThreshold()\nfunc (l *library) DeviceSetNvLinkDeviceLowPowerThreshold(device Device, info *NvLinkPowerThres) Return {\n\treturn device.SetNvLinkDeviceLowPowerThreshold(info)\n}\n\nfunc (device nvmlDevice) SetNvLinkDeviceLowPowerThreshold(info *NvLinkPowerThres) Return {\n\treturn nvmlDeviceSetNvLinkDeviceLowPowerThreshold(device, info)\n}\n\n// nvml.DeviceGetModuleId()\nfunc (l *library) DeviceGetModuleId(device Device) (int, Return) {\n\treturn device.GetModuleId()\n}\n\nfunc (device nvmlDevice) GetModuleId() (int, Return) {\n\tvar moduleID uint32\n\tret := nvmlDeviceGetModuleId(device, &moduleID)\n\treturn int(moduleID), ret\n}\n\n// nvml.DeviceGetCurrentClocksEventReasons()\nfunc (l *library) DeviceGetCurrentClocksEventReasons(device Device) (uint64, Return) {\n\treturn device.GetCurrentClocksEventReasons()\n}\n\nfunc (device nvmlDevice) GetCurrentClocksEventReasons() (uint64, Return) {\n\tvar clocksEventReasons uint64\n\tret := nvmlDeviceGetCurrentClocksEventReasons(device, &clocksEventReasons)\n\treturn clocksEventReasons, ret\n}\n\n// nvml.DeviceGetSupportedClocksEventReasons()\nfunc (l *library) DeviceGetSupportedClocksEventReasons(device Device) (uint64, Return) {\n\treturn device.GetSupportedClocksEventReasons()\n}\n\nfunc (device nvmlDevice) GetSupportedClocksEventReasons() (uint64, Return) {\n\tvar supportedClocksEventReasons uint64\n\tret := nvmlDeviceGetSupportedClocksEventReasons(device, &supportedClocksEventReasons)\n\treturn supportedClocksEventReasons, ret\n}\n\n// nvml.DeviceGetJpgUtilization()\nfunc (l *library) DeviceGetJpgUtilization(device Device) (uint32, uint32, Return) {\n\treturn device.GetJpgUtilization()\n}\n\nfunc (device nvmlDevice) GetJpgUtilization() (uint32, uint32, Return) {\n\tvar utilization, samplingPeriodUs uint32\n\tret := nvmlDeviceGetJpgUtilization(device, &utilization, &samplingPeriodUs)\n\treturn utilization, samplingPeriodUs, ret\n}\n\n// nvml.DeviceGetOfaUtilization()\nfunc (l *library) DeviceGetOfaUtilization(device Device) (uint32, uint32, Return) {\n\treturn device.GetOfaUtilization()\n}\n\nfunc (device nvmlDevice) GetOfaUtilization() (uint32, uint32, Return) {\n\tvar utilization, samplingPeriodUs uint32\n\tret := nvmlDeviceGetOfaUtilization(device, &utilization, &samplingPeriodUs)\n\treturn utilization, samplingPeriodUs, ret\n}\n\n// nvml.DeviceGetRunningProcessDetailList()\nfunc (l *library) DeviceGetRunningProcessDetailList(device Device) (ProcessDetailList, Return) {\n\treturn device.GetRunningProcessDetailList()\n}\n\nfunc (device nvmlDevice) GetRunningProcessDetailList() (ProcessDetailList, Return) {\n\tvar plist ProcessDetailList\n\tplist.Version = STRUCT_VERSION(plist, 1)\n\tret := nvmlDeviceGetRunningProcessDetailList(device, &plist)\n\treturn plist, ret\n}\n\n// nvml.DeviceGetConfComputeMemSizeInfo()\nfunc (l *library) DeviceGetConfComputeMemSizeInfo(device Device) (ConfComputeMemSizeInfo, Return) {\n\treturn device.GetConfComputeMemSizeInfo()\n}\n\nfunc (device nvmlDevice) GetConfComputeMemSizeInfo() (ConfComputeMemSizeInfo, Return) {\n\tvar memInfo ConfComputeMemSizeInfo\n\tret := nvmlDeviceGetConfComputeMemSizeInfo(device, &memInfo)\n\treturn memInfo, ret\n}\n\n// nvml.DeviceGetConfComputeProtectedMemoryUsage()\nfunc (l *library) DeviceGetConfComputeProtectedMemoryUsage(device Device) (Memory, Return) {\n\treturn device.GetConfComputeProtectedMemoryUsage()\n}\n\nfunc (device nvmlDevice) GetConfComputeProtectedMemoryUsage() (Memory, Return) {\n\tvar memory Memory\n\tret := nvmlDeviceGetConfComputeProtectedMemoryUsage(device, &memory)\n\treturn memory, ret\n}\n\n// nvml.DeviceGetConfComputeGpuCertificate()\nfunc (l *library) DeviceGetConfComputeGpuCertificate(device Device) (ConfComputeGpuCertificate, Return) {\n\treturn device.GetConfComputeGpuCertificate()\n}\n\nfunc (device nvmlDevice) GetConfComputeGpuCertificate() (ConfComputeGpuCertificate, Return) {\n\tvar gpuCert ConfComputeGpuCertificate\n\tret := nvmlDeviceGetConfComputeGpuCertificate(device, &gpuCert)\n\treturn gpuCert, ret\n}\n\n// nvml.DeviceGetConfComputeGpuAttestationReport()\nfunc (l *library) DeviceGetConfComputeGpuAttestationReport(device Device, gpuAtstReport *ConfComputeGpuAttestationReport) Return {\n\treturn device.GetConfComputeGpuAttestationReport(gpuAtstReport)\n}\n\nfunc (device nvmlDevice) GetConfComputeGpuAttestationReport(gpuAtstReport *ConfComputeGpuAttestationReport) Return {\n\treturn nvmlDeviceGetConfComputeGpuAttestationReport(device, gpuAtstReport)\n}\n\n// nvml.DeviceSetConfComputeUnprotectedMemSize()\nfunc (l *library) DeviceSetConfComputeUnprotectedMemSize(device Device, sizeKiB uint64) Return {\n\treturn device.SetConfComputeUnprotectedMemSize(sizeKiB)\n}\n\nfunc (device nvmlDevice) SetConfComputeUnprotectedMemSize(sizeKiB uint64) Return {\n\treturn nvmlDeviceSetConfComputeUnprotectedMemSize(device, sizeKiB)\n}\n\n// nvml.DeviceGetC2cModeInfoV()\ntype C2cModeInfoHandler struct {\n\tdevice nvmlDevice\n}\n\nfunc (handler C2cModeInfoHandler) V1() (C2cModeInfo_v1, Return) {\n\tvar c2cModeInfo C2cModeInfo_v1\n\tret := nvmlDeviceGetC2cModeInfoV(handler.device, &c2cModeInfo)\n\treturn c2cModeInfo, ret\n}\n\nfunc (l *library) DeviceGetC2cModeInfoV(device Device) C2cModeInfoHandler {\n\treturn device.GetC2cModeInfoV()\n}\n\nfunc (device nvmlDevice) GetC2cModeInfoV() C2cModeInfoHandler {\n\treturn C2cModeInfoHandler{device}\n}\n\n// nvml.DeviceGetLastBBXFlushTime()\nfunc (l *library) DeviceGetLastBBXFlushTime(device Device) (uint64, uint, Return) {\n\treturn device.GetLastBBXFlushTime()\n}\n\nfunc (device nvmlDevice) GetLastBBXFlushTime() (uint64, uint, Return) {\n\tvar timestamp uint64\n\tvar durationUs uint\n\tret := nvmlDeviceGetLastBBXFlushTime(device, &timestamp, &durationUs)\n\treturn timestamp, durationUs, ret\n}\n\n// nvml.DeviceGetNumaNodeId()\nfunc (l *library) DeviceGetNumaNodeId(device Device) (int, Return) {\n\treturn device.GetNumaNodeId()\n}\n\nfunc (device nvmlDevice) GetNumaNodeId() (int, Return) {\n\tvar node uint32\n\tret := nvmlDeviceGetNumaNodeId(device, &node)\n\treturn int(node), ret\n}\n\nfunc (l *library) DeviceGetAddressingMode(device Device) (DeviceAddressingMode, Return) {\n\treturn device.GetAddressingMode()\n}\n\nfunc (device nvmlDevice) GetAddressingMode() (DeviceAddressingMode, Return) {\n\tvar deviceAddressingMode DeviceAddressingMode\n\tdeviceAddressingMode.Version = STRUCT_VERSION(deviceAddressingMode, 1)\n\tret := nvmlDeviceGetAddressingMode(device, &deviceAddressingMode)\n\treturn deviceAddressingMode, ret\n}\n\nfunc (l *library) DeviceGetRepairStatus(device Device) (RepairStatus, Return) {\n\treturn device.GetRepairStatus()\n}\n\nfunc (device nvmlDevice) GetRepairStatus() (RepairStatus, Return) {\n\tvar repairStatus RepairStatus\n\trepairStatus.Version = STRUCT_VERSION(repairStatus, 1)\n\tret := nvmlDeviceGetRepairStatus(device, &repairStatus)\n\treturn repairStatus, ret\n}\n\n// nvml.DeviceGetPciInfoExt()\nfunc (l *library) DeviceGetPciInfoExt(device Device) (PciInfoExt, Return) {\n\treturn device.GetPciInfoExt()\n}\n\nfunc (device nvmlDevice) GetPciInfoExt() (PciInfoExt, Return) {\n\tvar pciInfo PciInfoExt\n\tpciInfo.Version = STRUCT_VERSION(pciInfo, 1)\n\tret := nvmlDeviceGetPciInfoExt(device, &pciInfo)\n\treturn pciInfo, ret\n}\n\n// nvml.DeviceGetGpuFabricInfoV()\ntype GpuFabricInfoHandler struct {\n\tdevice nvmlDevice\n}\n\nfunc (handler GpuFabricInfoHandler) V1() (GpuFabricInfo, Return) {\n\treturn handler.device.GetGpuFabricInfo()\n}\n\nfunc (handler GpuFabricInfoHandler) V2() (GpuFabricInfo_v2, Return) {\n\tvar info GpuFabricInfo_v2\n\tinfo.Version = STRUCT_VERSION(info, 2)\n\tret := nvmlDeviceGetGpuFabricInfoV(handler.device, (*GpuFabricInfoV)(unsafe.Pointer(&info)))\n\treturn info, ret\n}\n\nfunc (handler GpuFabricInfoHandler) V3() (GpuFabricInfo_v3, Return) {\n\tvar info GpuFabricInfo_v3\n\tinfo.Version = STRUCT_VERSION(info, 3)\n\tret := nvmlDeviceGetGpuFabricInfoV(handler.device, (*GpuFabricInfoV)(unsafe.Pointer(&info)))\n\treturn info, ret\n}\n\nfunc (l *library) DeviceGetGpuFabricInfoV(device Device) GpuFabricInfoHandler {\n\treturn device.GetGpuFabricInfoV()\n}\n\nfunc (device nvmlDevice) GetGpuFabricInfoV() GpuFabricInfoHandler {\n\treturn GpuFabricInfoHandler{device}\n}\n\n// nvml.DeviceGetProcessesUtilizationInfo()\nfunc (l *library) DeviceGetProcessesUtilizationInfo(device Device) (ProcessesUtilizationInfo, Return) {\n\treturn device.GetProcessesUtilizationInfo()\n}\n\nfunc (device nvmlDevice) GetProcessesUtilizationInfo() (ProcessesUtilizationInfo, Return) {\n\tvar processesUtilInfo ProcessesUtilizationInfo\n\tret := nvmlDeviceGetProcessesUtilizationInfo(device, &processesUtilInfo)\n\treturn processesUtilInfo, ret\n}\n\n// nvml.DeviceGetVgpuHeterogeneousMode()\nfunc (l *library) DeviceGetVgpuHeterogeneousMode(device Device) (VgpuHeterogeneousMode, Return) {\n\treturn device.GetVgpuHeterogeneousMode()\n}\n\nfunc (device nvmlDevice) GetVgpuHeterogeneousMode() (VgpuHeterogeneousMode, Return) {\n\tvar heterogeneousMode VgpuHeterogeneousMode\n\theterogeneousMode.Version = STRUCT_VERSION(heterogeneousMode, 1)\n\tret := nvmlDeviceGetVgpuHeterogeneousMode(device, &heterogeneousMode)\n\treturn heterogeneousMode, ret\n}\n\n// nvml.DeviceSetVgpuHeterogeneousMode()\nfunc (l *library) DeviceSetVgpuHeterogeneousMode(device Device, heterogeneousMode VgpuHeterogeneousMode) Return {\n\treturn device.SetVgpuHeterogeneousMode(heterogeneousMode)\n}\n\nfunc (device nvmlDevice) SetVgpuHeterogeneousMode(heterogeneousMode VgpuHeterogeneousMode) Return {\n\tret := nvmlDeviceSetVgpuHeterogeneousMode(device, &heterogeneousMode)\n\treturn ret\n}\n\n// nvml.DeviceGetVgpuTypeSupportedPlacements()\nfunc (l *library) DeviceGetVgpuTypeSupportedPlacements(device Device, vgpuTypeId VgpuTypeId) (VgpuPlacementList, Return) {\n\treturn device.GetVgpuTypeSupportedPlacements(vgpuTypeId)\n}\n\nfunc (device nvmlDevice) GetVgpuTypeSupportedPlacements(vgpuTypeId VgpuTypeId) (VgpuPlacementList, Return) {\n\treturn vgpuTypeId.GetSupportedPlacements(device)\n}\n\nfunc (vgpuTypeId nvmlVgpuTypeId) GetSupportedPlacements(device Device) (VgpuPlacementList, Return) {\n\tvar placementList VgpuPlacementList\n\tplacementList.Version = STRUCT_VERSION(placementList, 1)\n\tret := nvmlDeviceGetVgpuTypeSupportedPlacements(nvmlDeviceHandle(device), vgpuTypeId, &placementList)\n\treturn placementList, ret\n}\n\n// nvml.DeviceGetVgpuTypeCreatablePlacements()\nfunc (l *library) DeviceGetVgpuTypeCreatablePlacements(device Device, vgpuTypeId VgpuTypeId) (VgpuPlacementList, Return) {\n\treturn device.GetVgpuTypeCreatablePlacements(vgpuTypeId)\n}\n\nfunc (device nvmlDevice) GetVgpuTypeCreatablePlacements(vgpuTypeId VgpuTypeId) (VgpuPlacementList, Return) {\n\treturn vgpuTypeId.GetCreatablePlacements(device)\n}\n\nfunc (vgpuTypeId nvmlVgpuTypeId) GetCreatablePlacements(device Device) (VgpuPlacementList, Return) {\n\tvar placementList VgpuPlacementList\n\tplacementList.Version = STRUCT_VERSION(placementList, 1)\n\tret := nvmlDeviceGetVgpuTypeCreatablePlacements(nvmlDeviceHandle(device), vgpuTypeId, &placementList)\n\treturn placementList, ret\n}\n\n// nvml.DeviceSetVgpuCapabilities()\nfunc (l *library) DeviceSetVgpuCapabilities(device Device, capability DeviceVgpuCapability, state EnableState) Return {\n\treturn device.SetVgpuCapabilities(capability, state)\n}\n\nfunc (device nvmlDevice) SetVgpuCapabilities(capability DeviceVgpuCapability, state EnableState) Return {\n\tret := nvmlDeviceSetVgpuCapabilities(device, capability, state)\n\treturn ret\n}\n\n// nvml.DeviceGetVgpuInstancesUtilizationInfo()\nfunc (l *library) DeviceGetVgpuInstancesUtilizationInfo(device Device) (VgpuInstancesUtilizationInfo, Return) {\n\treturn device.GetVgpuInstancesUtilizationInfo()\n}\n\nfunc (device nvmlDevice) GetVgpuInstancesUtilizationInfo() (VgpuInstancesUtilizationInfo, Return) {\n\tvar vgpuUtilInfo VgpuInstancesUtilizationInfo\n\tret := nvmlDeviceGetVgpuInstancesUtilizationInfo(device, &vgpuUtilInfo)\n\treturn vgpuUtilInfo, ret\n}\n\n// nvml.DeviceGetVgpuProcessesUtilizationInfo()\nfunc (l *library) DeviceGetVgpuProcessesUtilizationInfo(device Device) (VgpuProcessesUtilizationInfo, Return) {\n\treturn device.GetVgpuProcessesUtilizationInfo()\n}\n\nfunc (device nvmlDevice) GetVgpuProcessesUtilizationInfo() (VgpuProcessesUtilizationInfo, Return) {\n\tvar vgpuProcUtilInfo VgpuProcessesUtilizationInfo\n\tvgpuProcUtilInfo.Version = STRUCT_VERSION(vgpuProcUtilInfo, 1)\n\tret := nvmlDeviceGetVgpuProcessesUtilizationInfo(device, &vgpuProcUtilInfo)\n\treturn vgpuProcUtilInfo, ret\n}\n\n// nvml.DeviceGetSramEccErrorStatus()\nfunc (l *library) DeviceGetSramEccErrorStatus(device Device) (EccSramErrorStatus, Return) {\n\treturn device.GetSramEccErrorStatus()\n}\n\nfunc (device nvmlDevice) GetSramEccErrorStatus() (EccSramErrorStatus, Return) {\n\tvar status EccSramErrorStatus\n\tstatus.Version = STRUCT_VERSION(status, 1)\n\tret := nvmlDeviceGetSramEccErrorStatus(device, &status)\n\treturn status, ret\n}\n\n// nvml.DeviceGetClockOffsets()\nfunc (l *library) DeviceGetClockOffsets(device Device) (ClockOffset, Return) {\n\treturn device.GetClockOffsets()\n}\n\nfunc (device nvmlDevice) GetClockOffsets() (ClockOffset, Return) {\n\tvar info ClockOffset\n\tinfo.Version = STRUCT_VERSION(info, 1)\n\tret := nvmlDeviceGetClockOffsets(device, &info)\n\treturn info, ret\n}\n\n// nvml.DeviceSetClockOffsets()\nfunc (l *library) DeviceSetClockOffsets(device Device, info ClockOffset) Return {\n\treturn device.SetClockOffsets(info)\n}\n\nfunc (device nvmlDevice) SetClockOffsets(info ClockOffset) Return {\n\treturn nvmlDeviceSetClockOffsets(device, &info)\n}\n\n// nvml.DeviceGetDriverModel_v2()\nfunc (l *library) DeviceGetDriverModel_v2(device Device) (DriverModel, DriverModel, Return) {\n\treturn device.GetDriverModel_v2()\n}\n\nfunc (device nvmlDevice) GetDriverModel_v2() (DriverModel, DriverModel, Return) {\n\tvar current, pending DriverModel\n\tret := nvmlDeviceGetDriverModel_v2(device, &current, &pending)\n\treturn current, pending, ret\n}\n\n// nvml.DeviceGetCapabilities()\nfunc (l *library) DeviceGetCapabilities(device Device) (DeviceCapabilities, Return) {\n\treturn device.GetCapabilities()\n}\n\nfunc (device nvmlDevice) GetCapabilities() (DeviceCapabilities, Return) {\n\tvar caps DeviceCapabilities\n\tcaps.Version = STRUCT_VERSION(caps, 1)\n\tret := nvmlDeviceGetCapabilities(device, &caps)\n\treturn caps, ret\n}\n\n// nvml.DeviceGetFanSpeedRPM()\nfunc (l *library) DeviceGetFanSpeedRPM(device Device) (FanSpeedInfo, Return) {\n\treturn device.GetFanSpeedRPM()\n}\n\nfunc (device nvmlDevice) GetFanSpeedRPM() (FanSpeedInfo, Return) {\n\tvar fanSpeed FanSpeedInfo\n\tfanSpeed.Version = STRUCT_VERSION(fanSpeed, 1)\n\tret := nvmlDeviceGetFanSpeedRPM(device, &fanSpeed)\n\treturn fanSpeed, ret\n}\n\n// nvml.DeviceGetCoolerInfo()\nfunc (l *library) DeviceGetCoolerInfo(device Device) (CoolerInfo, Return) {\n\treturn device.GetCoolerInfo()\n}\n\nfunc (device nvmlDevice) GetCoolerInfo() (CoolerInfo, Return) {\n\tvar coolerInfo CoolerInfo\n\tcoolerInfo.Version = STRUCT_VERSION(coolerInfo, 1)\n\tret := nvmlDeviceGetCoolerInfo(device, &coolerInfo)\n\treturn coolerInfo, ret\n}\n\n// nvml.DeviceGetTemperatureV()\ntype TemperatureHandler struct {\n\tdevice nvmlDevice\n}\n\nfunc (handler TemperatureHandler) V1() (Temperature, Return) {\n\tvar temperature Temperature\n\ttemperature.Version = STRUCT_VERSION(temperature, 1)\n\tret := nvmlDeviceGetTemperatureV(handler.device, &temperature)\n\treturn temperature, ret\n}\n\nfunc (l *library) DeviceGetTemperatureV(device Device) TemperatureHandler {\n\treturn device.GetTemperatureV()\n}\n\nfunc (device nvmlDevice) GetTemperatureV() TemperatureHandler {\n\treturn TemperatureHandler{device}\n}\n\n// nvml.DeviceGetMarginTemperature()\nfunc (l *library) DeviceGetMarginTemperature(device Device) (MarginTemperature, Return) {\n\treturn device.GetMarginTemperature()\n}\n\nfunc (device nvmlDevice) GetMarginTemperature() (MarginTemperature, Return) {\n\tvar marginTemp MarginTemperature\n\tmarginTemp.Version = STRUCT_VERSION(marginTemp, 1)\n\tret := nvmlDeviceGetMarginTemperature(device, &marginTemp)\n\treturn marginTemp, ret\n}\n\n// nvml.DeviceGetPerformanceModes()\nfunc (l *library) DeviceGetPerformanceModes(device Device) (DevicePerfModes, Return) {\n\treturn device.GetPerformanceModes()\n}\n\nfunc (device nvmlDevice) GetPerformanceModes() (DevicePerfModes, Return) {\n\tvar perfModes DevicePerfModes\n\tperfModes.Version = STRUCT_VERSION(perfModes, 1)\n\tret := nvmlDeviceGetPerformanceModes(device, &perfModes)\n\treturn perfModes, ret\n}\n\n// nvml.DeviceGetCurrentClockFreqs()\nfunc (l *library) DeviceGetCurrentClockFreqs(device Device) (DeviceCurrentClockFreqs, Return) {\n\treturn device.GetCurrentClockFreqs()\n}\n\nfunc (device nvmlDevice) GetCurrentClockFreqs() (DeviceCurrentClockFreqs, Return) {\n\tvar currentClockFreqs DeviceCurrentClockFreqs\n\tcurrentClockFreqs.Version = STRUCT_VERSION(currentClockFreqs, 1)\n\tret := nvmlDeviceGetCurrentClockFreqs(device, &currentClockFreqs)\n\treturn currentClockFreqs, ret\n}\n\n// nvml.DeviceGetDramEncryptionMode()\nfunc (l *library) DeviceGetDramEncryptionMode(device Device) (DramEncryptionInfo, DramEncryptionInfo, Return) {\n\treturn device.GetDramEncryptionMode()\n}\n\nfunc (device nvmlDevice) GetDramEncryptionMode() (DramEncryptionInfo, DramEncryptionInfo, Return) {\n\tvar current, pending DramEncryptionInfo\n\tcurrent.Version = STRUCT_VERSION(current, 1)\n\tpending.Version = STRUCT_VERSION(pending, 1)\n\tret := nvmlDeviceGetDramEncryptionMode(device, &current, &pending)\n\treturn current, pending, ret\n}\n\n// nvml.DeviceSetDramEncryptionMode()\nfunc (l *library) DeviceSetDramEncryptionMode(device Device, dramEncryption *DramEncryptionInfo) Return {\n\treturn device.SetDramEncryptionMode(dramEncryption)\n}\n\nfunc (device nvmlDevice) SetDramEncryptionMode(dramEncryption *DramEncryptionInfo) Return {\n\treturn nvmlDeviceSetDramEncryptionMode(device, dramEncryption)\n}\n\n// nvml.DeviceGetPlatformInfo()\nfunc (l *library) DeviceGetPlatformInfo(device Device) (PlatformInfo, Return) {\n\treturn device.GetPlatformInfo()\n}\n\nfunc (device nvmlDevice) GetPlatformInfo() (PlatformInfo, Return) {\n\tvar platformInfo PlatformInfo\n\tplatformInfo.Version = STRUCT_VERSION(platformInfo, 1)\n\tret := nvmlDeviceGetPlatformInfo(device, &platformInfo)\n\treturn platformInfo, ret\n}\n\n// nvml.DeviceGetNvlinkSupportedBwModes()\nfunc (l *library) DeviceGetNvlinkSupportedBwModes(device Device) (NvlinkSupportedBwModes, Return) {\n\treturn device.GetNvlinkSupportedBwModes()\n}\n\nfunc (device nvmlDevice) GetNvlinkSupportedBwModes() (NvlinkSupportedBwModes, Return) {\n\tvar supportedBwMode NvlinkSupportedBwModes\n\tsupportedBwMode.Version = STRUCT_VERSION(supportedBwMode, 1)\n\tret := nvmlDeviceGetNvlinkSupportedBwModes(device, &supportedBwMode)\n\treturn supportedBwMode, ret\n}\n\n// nvml.DeviceGetNvlinkBwMode()\nfunc (l *library) DeviceGetNvlinkBwMode(device Device) (NvlinkGetBwMode, Return) {\n\treturn device.GetNvlinkBwMode()\n}\n\nfunc (device nvmlDevice) GetNvlinkBwMode() (NvlinkGetBwMode, Return) {\n\tvar getBwMode NvlinkGetBwMode\n\tgetBwMode.Version = STRUCT_VERSION(getBwMode, 1)\n\tret := nvmlDeviceGetNvlinkBwMode(device, &getBwMode)\n\treturn getBwMode, ret\n}\n\n// nvml.DeviceSetNvlinkBwMode()\nfunc (l *library) DeviceSetNvlinkBwMode(device Device, setBwMode *NvlinkSetBwMode) Return {\n\treturn device.SetNvlinkBwMode(setBwMode)\n}\n\nfunc (device nvmlDevice) SetNvlinkBwMode(setBwMode *NvlinkSetBwMode) Return {\n\treturn nvmlDeviceSetNvlinkBwMode(device, setBwMode)\n}\n\nfunc (l *library) DeviceGetNvLinkInfo(device Device) NvLinkInfoHandler {\n\treturn device.GetNvLinkInfo()\n}\n\nfunc (device nvmlDevice) GetNvLinkInfo() NvLinkInfoHandler {\n\treturn NvLinkInfoHandler{device}\n}\n\ntype NvLinkInfoHandler struct {\n\tdevice nvmlDevice\n}\n\nfunc (handler NvLinkInfoHandler) V1() (NvLinkInfo_v1, Return) {\n\tvar info NvLinkInfo_v1\n\tinfo.Version = STRUCT_VERSION(info, 1)\n\tret := nvmlDeviceGetNvLinkInfo(handler.device, (*NvLinkInfo)(unsafe.Pointer(&info)))\n\n\treturn info, ret\n}\n\nfunc (handler NvLinkInfoHandler) V2() (NvLinkInfo_v2, Return) {\n\tvar info NvLinkInfo_v2\n\tinfo.Version = STRUCT_VERSION(info, 2)\n\tret := nvmlDeviceGetNvLinkInfo(handler.device, (*NvLinkInfo)(unsafe.Pointer(&info)))\n\n\treturn info, ret\n}\n\n// nvml.DeviceWorkloadPowerProfileGetProfilesInfo()\nfunc (l *library) DeviceWorkloadPowerProfileGetProfilesInfo(device Device) (WorkloadPowerProfileProfilesInfo, Return) {\n\treturn device.WorkloadPowerProfileGetProfilesInfo()\n}\n\nfunc (device nvmlDevice) WorkloadPowerProfileGetProfilesInfo() (WorkloadPowerProfileProfilesInfo, Return) {\n\tvar profilesInfo WorkloadPowerProfileProfilesInfo\n\tprofilesInfo.Version = STRUCT_VERSION(profilesInfo, 1)\n\tret := nvmlDeviceWorkloadPowerProfileGetProfilesInfo(device, &profilesInfo)\n\treturn profilesInfo, ret\n}\n\n// nvml.DeviceWorkloadPowerProfileGetCurrentProfiles()\nfunc (l *library) DeviceWorkloadPowerProfileGetCurrentProfiles(device Device) (WorkloadPowerProfileCurrentProfiles, Return) {\n\treturn device.WorkloadPowerProfileGetCurrentProfiles()\n}\n\nfunc (device nvmlDevice) WorkloadPowerProfileGetCurrentProfiles() (WorkloadPowerProfileCurrentProfiles, Return) {\n\tvar currentProfiles WorkloadPowerProfileCurrentProfiles\n\tcurrentProfiles.Version = STRUCT_VERSION(currentProfiles, 1)\n\tret := nvmlDeviceWorkloadPowerProfileGetCurrentProfiles(device, &currentProfiles)\n\treturn currentProfiles, ret\n}\n\n// nvml.DeviceWorkloadPowerProfileSetRequestedProfiles()\nfunc (l *library) DeviceWorkloadPowerProfileSetRequestedProfiles(device Device, requestedProfiles *WorkloadPowerProfileRequestedProfiles) Return {\n\treturn device.WorkloadPowerProfileSetRequestedProfiles(requestedProfiles)\n}\n\nfunc (device nvmlDevice) WorkloadPowerProfileSetRequestedProfiles(requestedProfiles *WorkloadPowerProfileRequestedProfiles) Return {\n\treturn nvmlDeviceWorkloadPowerProfileSetRequestedProfiles(device, requestedProfiles)\n}\n\n// nvml.DeviceWorkloadPowerProfileClearRequestedProfiles()\nfunc (l *library) DeviceWorkloadPowerProfileClearRequestedProfiles(device Device, requestedProfiles *WorkloadPowerProfileRequestedProfiles) Return {\n\treturn device.WorkloadPowerProfileClearRequestedProfiles(requestedProfiles)\n}\n\nfunc (device nvmlDevice) WorkloadPowerProfileClearRequestedProfiles(requestedProfiles *WorkloadPowerProfileRequestedProfiles) Return {\n\treturn nvmlDeviceWorkloadPowerProfileClearRequestedProfiles(device, requestedProfiles)\n}\n\n// nvml.DevicePowerSmoothingActivatePresetProfile()\nfunc (l *library) DevicePowerSmoothingActivatePresetProfile(device Device, profile *PowerSmoothingProfile) Return {\n\treturn device.PowerSmoothingActivatePresetProfile(profile)\n}\n\nfunc (device nvmlDevice) PowerSmoothingActivatePresetProfile(profile *PowerSmoothingProfile) Return {\n\treturn nvmlDevicePowerSmoothingActivatePresetProfile(device, profile)\n}\n\n// nvml.DevicePowerSmoothingUpdatePresetProfileParam()\nfunc (l *library) DevicePowerSmoothingUpdatePresetProfileParam(device Device, profile *PowerSmoothingProfile) Return {\n\treturn device.PowerSmoothingUpdatePresetProfileParam(profile)\n}\n\nfunc (device nvmlDevice) PowerSmoothingUpdatePresetProfileParam(profile *PowerSmoothingProfile) Return {\n\treturn nvmlDevicePowerSmoothingUpdatePresetProfileParam(device, profile)\n}\n\n// nvml.DevicePowerSmoothingSetState()\nfunc (l *library) DevicePowerSmoothingSetState(device Device, state *PowerSmoothingState) Return {\n\treturn device.PowerSmoothingSetState(state)\n}\n\nfunc (device nvmlDevice) PowerSmoothingSetState(state *PowerSmoothingState) Return {\n\treturn nvmlDevicePowerSmoothingSetState(device, state)\n}\n\nfunc (l *library) DeviceGetSramUniqueUncorrectedEccErrorCounts(device Device, errorCounts *EccSramUniqueUncorrectedErrorCounts) Return {\n\treturn device.GetSramUniqueUncorrectedEccErrorCounts(errorCounts)\n}\n\nfunc (device nvmlDevice) GetSramUniqueUncorrectedEccErrorCounts(errorCounts *EccSramUniqueUncorrectedErrorCounts) Return {\n\treturn nvmlDeviceGetSramUniqueUncorrectedEccErrorCounts(device, errorCounts)\n}\n\n// nvml.GpuInstanceGetCreatableVgpus()\nfunc (l *library) GpuInstanceGetCreatableVgpus(gpuInstance GpuInstance) (VgpuTypeIdInfo, Return) {\n\treturn gpuInstance.GetCreatableVgpus()\n}\n\nfunc (gpuInstance nvmlGpuInstance) GetCreatableVgpus() (VgpuTypeIdInfo, Return) {\n\tvar vgpuTypeIdInfo VgpuTypeIdInfo\n\tvgpuTypeIdInfo.Version = STRUCT_VERSION(vgpuTypeIdInfo, 1)\n\tret := nvmlGpuInstanceGetCreatableVgpus(gpuInstance, &vgpuTypeIdInfo)\n\treturn vgpuTypeIdInfo, ret\n}\n\n// nvml.GpuInstanceGetActiveVgpus()\nfunc (l *library) GpuInstanceGetActiveVgpus(gpuInstance GpuInstance) (ActiveVgpuInstanceInfo, Return) {\n\treturn gpuInstance.GetActiveVgpus()\n}\n\nfunc (gpuInstance nvmlGpuInstance) GetActiveVgpus() (ActiveVgpuInstanceInfo, Return) {\n\tvar activeVgpuInstanceInfo ActiveVgpuInstanceInfo\n\tactiveVgpuInstanceInfo.Version = STRUCT_VERSION(activeVgpuInstanceInfo, 1)\n\tret := nvmlGpuInstanceGetActiveVgpus(gpuInstance, &activeVgpuInstanceInfo)\n\treturn activeVgpuInstanceInfo, ret\n}\n\n// nvml.GpuInstanceSetVgpuSchedulerState()\nfunc (l *library) GpuInstanceSetVgpuSchedulerState(gpuInstance GpuInstance, scheduler *VgpuSchedulerState) Return {\n\treturn gpuInstance.SetVgpuSchedulerState(scheduler)\n}\n\nfunc (gpuInstance nvmlGpuInstance) SetVgpuSchedulerState(scheduler *VgpuSchedulerState) Return {\n\treturn nvmlGpuInstanceSetVgpuSchedulerState(gpuInstance, scheduler)\n}\n\n// nvml.GpuInstanceGetVgpuSchedulerState()\nfunc (l *library) GpuInstanceGetVgpuSchedulerState(gpuInstance GpuInstance) (VgpuSchedulerStateInfo, Return) {\n\treturn gpuInstance.GetVgpuSchedulerState()\n}\n\nfunc (gpuInstance nvmlGpuInstance) GetVgpuSchedulerState() (VgpuSchedulerStateInfo, Return) {\n\tvar schedulerStateInfo VgpuSchedulerStateInfo\n\tschedulerStateInfo.Version = STRUCT_VERSION(schedulerStateInfo, 1)\n\tret := nvmlGpuInstanceGetVgpuSchedulerState(gpuInstance, &schedulerStateInfo)\n\treturn schedulerStateInfo, ret\n}\n\n// nvml.GpuInstanceGetVgpuSchedulerLog()\nfunc (l *library) GpuInstanceGetVgpuSchedulerLog(gpuInstance GpuInstance) (VgpuSchedulerLogInfo, Return) {\n\treturn gpuInstance.GetVgpuSchedulerLog()\n}\n\nfunc (gpuInstance nvmlGpuInstance) GetVgpuSchedulerLog() (VgpuSchedulerLogInfo, Return) {\n\tvar schedulerLogInfo VgpuSchedulerLogInfo\n\tschedulerLogInfo.Version = STRUCT_VERSION(schedulerLogInfo, 1)\n\tret := nvmlGpuInstanceGetVgpuSchedulerLog(gpuInstance, &schedulerLogInfo)\n\treturn schedulerLogInfo, ret\n}\n\n// nvml.GpuInstanceGetVgpuTypeCreatablePlacements()\nfunc (l *library) GpuInstanceGetVgpuTypeCreatablePlacements(gpuInstance GpuInstance) (VgpuCreatablePlacementInfo, Return) {\n\treturn gpuInstance.GetVgpuTypeCreatablePlacements()\n}\n\nfunc (gpuInstance nvmlGpuInstance) GetVgpuTypeCreatablePlacements() (VgpuCreatablePlacementInfo, Return) {\n\tvar creatablePlacementInfo VgpuCreatablePlacementInfo\n\tcreatablePlacementInfo.Version = STRUCT_VERSION(creatablePlacementInfo, 1)\n\tret := nvmlGpuInstanceGetVgpuTypeCreatablePlacements(gpuInstance, &creatablePlacementInfo)\n\treturn creatablePlacementInfo, ret\n}\n\n// nvml.GpuInstanceGetVgpuHeterogeneousMode()\nfunc (l *library) GpuInstanceGetVgpuHeterogeneousMode(gpuInstance GpuInstance) (VgpuHeterogeneousMode, Return) {\n\treturn gpuInstance.GetVgpuHeterogeneousMode()\n}\n\nfunc (gpuInstance nvmlGpuInstance) GetVgpuHeterogeneousMode() (VgpuHeterogeneousMode, Return) {\n\tvar heterogeneousMode VgpuHeterogeneousMode\n\theterogeneousMode.Version = STRUCT_VERSION(heterogeneousMode, 1)\n\tret := nvmlGpuInstanceGetVgpuHeterogeneousMode(gpuInstance, &heterogeneousMode)\n\treturn heterogeneousMode, ret\n}\n\n// nvml.GpuInstanceSetVgpuHeterogeneousMode()\nfunc (l *library) GpuInstanceSetVgpuHeterogeneousMode(gpuInstance GpuInstance, heterogeneousMode *VgpuHeterogeneousMode) Return {\n\treturn gpuInstance.SetVgpuHeterogeneousMode(heterogeneousMode)\n}\n\nfunc (gpuInstance nvmlGpuInstance) SetVgpuHeterogeneousMode(heterogeneousMode *VgpuHeterogeneousMode) Return {\n\treturn nvmlGpuInstanceSetVgpuHeterogeneousMode(gpuInstance, heterogeneousMode)\n}\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvml/pkg/nvml/doc.go",
    "content": "// Copyright (c) 2020, NVIDIA CORPORATION. All rights reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// WARNING: THIS FILE WAS AUTOMATICALLY GENERATED.\n// Code generated by https://git.io/c-for-go. DO NOT EDIT.\n\n/*\nPackage NVML bindings\n*/\npackage nvml\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvml/pkg/nvml/dynamicLibrary_mock.go",
    "content": "// Code generated by moq; DO NOT EDIT.\n// github.com/matryer/moq\n\npackage nvml\n\nimport (\n\t\"sync\"\n)\n\n// Ensure, that dynamicLibraryMock does implement dynamicLibrary.\n// If this is not the case, regenerate this file with moq.\nvar _ dynamicLibrary = &dynamicLibraryMock{}\n\n// dynamicLibraryMock is a mock implementation of dynamicLibrary.\n//\n//\tfunc TestSomethingThatUsesdynamicLibrary(t *testing.T) {\n//\n//\t\t// make and configure a mocked dynamicLibrary\n//\t\tmockeddynamicLibrary := &dynamicLibraryMock{\n//\t\t\tCloseFunc: func() error {\n//\t\t\t\tpanic(\"mock out the Close method\")\n//\t\t\t},\n//\t\t\tLookupFunc: func(s string) error {\n//\t\t\t\tpanic(\"mock out the Lookup method\")\n//\t\t\t},\n//\t\t\tOpenFunc: func() error {\n//\t\t\t\tpanic(\"mock out the Open method\")\n//\t\t\t},\n//\t\t}\n//\n//\t\t// use mockeddynamicLibrary in code that requires dynamicLibrary\n//\t\t// and then make assertions.\n//\n//\t}\ntype dynamicLibraryMock struct {\n\t// CloseFunc mocks the Close method.\n\tCloseFunc func() error\n\n\t// LookupFunc mocks the Lookup method.\n\tLookupFunc func(s string) error\n\n\t// OpenFunc mocks the Open method.\n\tOpenFunc func() error\n\n\t// calls tracks calls to the methods.\n\tcalls struct {\n\t\t// Close holds details about calls to the Close method.\n\t\tClose []struct {\n\t\t}\n\t\t// Lookup holds details about calls to the Lookup method.\n\t\tLookup []struct {\n\t\t\t// S is the s argument value.\n\t\t\tS string\n\t\t}\n\t\t// Open holds details about calls to the Open method.\n\t\tOpen []struct {\n\t\t}\n\t}\n\tlockClose  sync.RWMutex\n\tlockLookup sync.RWMutex\n\tlockOpen   sync.RWMutex\n}\n\n// Close calls CloseFunc.\nfunc (mock *dynamicLibraryMock) Close() error {\n\tcallInfo := struct {\n\t}{}\n\tmock.lockClose.Lock()\n\tmock.calls.Close = append(mock.calls.Close, callInfo)\n\tmock.lockClose.Unlock()\n\tif mock.CloseFunc == nil {\n\t\tvar (\n\t\t\terrOut error\n\t\t)\n\t\treturn errOut\n\t}\n\treturn mock.CloseFunc()\n}\n\n// CloseCalls gets all the calls that were made to Close.\n// Check the length with:\n//\n//\tlen(mockeddynamicLibrary.CloseCalls())\nfunc (mock *dynamicLibraryMock) CloseCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockClose.RLock()\n\tcalls = mock.calls.Close\n\tmock.lockClose.RUnlock()\n\treturn calls\n}\n\n// Lookup calls LookupFunc.\nfunc (mock *dynamicLibraryMock) Lookup(s string) error {\n\tcallInfo := struct {\n\t\tS string\n\t}{\n\t\tS: s,\n\t}\n\tmock.lockLookup.Lock()\n\tmock.calls.Lookup = append(mock.calls.Lookup, callInfo)\n\tmock.lockLookup.Unlock()\n\tif mock.LookupFunc == nil {\n\t\tvar (\n\t\t\terrOut error\n\t\t)\n\t\treturn errOut\n\t}\n\treturn mock.LookupFunc(s)\n}\n\n// LookupCalls gets all the calls that were made to Lookup.\n// Check the length with:\n//\n//\tlen(mockeddynamicLibrary.LookupCalls())\nfunc (mock *dynamicLibraryMock) LookupCalls() []struct {\n\tS string\n} {\n\tvar calls []struct {\n\t\tS string\n\t}\n\tmock.lockLookup.RLock()\n\tcalls = mock.calls.Lookup\n\tmock.lockLookup.RUnlock()\n\treturn calls\n}\n\n// Open calls OpenFunc.\nfunc (mock *dynamicLibraryMock) Open() error {\n\tcallInfo := struct {\n\t}{}\n\tmock.lockOpen.Lock()\n\tmock.calls.Open = append(mock.calls.Open, callInfo)\n\tmock.lockOpen.Unlock()\n\tif mock.OpenFunc == nil {\n\t\tvar (\n\t\t\terrOut error\n\t\t)\n\t\treturn errOut\n\t}\n\treturn mock.OpenFunc()\n}\n\n// OpenCalls gets all the calls that were made to Open.\n// Check the length with:\n//\n//\tlen(mockeddynamicLibrary.OpenCalls())\nfunc (mock *dynamicLibraryMock) OpenCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockOpen.RLock()\n\tcalls = mock.calls.Open\n\tmock.lockOpen.RUnlock()\n\treturn calls\n}\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvml/pkg/nvml/event_set.go",
    "content": "// Copyright (c) 2020, NVIDIA CORPORATION.  All rights reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage nvml\n\n// EventData includes an interface type for Device instead of nvmlDevice\ntype EventData struct {\n\tDevice            Device\n\tEventType         uint64\n\tEventData         uint64\n\tGpuInstanceId     uint32\n\tComputeInstanceId uint32\n}\n\nfunc (e nvmlEventData) convert() EventData {\n\tout := EventData{\n\t\tDevice:            e.Device,\n\t\tEventType:         e.EventType,\n\t\tEventData:         e.EventData,\n\t\tGpuInstanceId:     e.GpuInstanceId,\n\t\tComputeInstanceId: e.ComputeInstanceId,\n\t}\n\treturn out\n}\n\n// nvml.EventSetCreate()\nfunc (l *library) EventSetCreate() (EventSet, Return) {\n\tvar Set nvmlEventSet\n\tret := nvmlEventSetCreate(&Set)\n\treturn Set, ret\n}\n\n// nvml.EventSetWait()\nfunc (l *library) EventSetWait(set EventSet, timeoutms uint32) (EventData, Return) {\n\treturn set.Wait(timeoutms)\n}\n\nfunc (set nvmlEventSet) Wait(timeoutms uint32) (EventData, Return) {\n\tvar data nvmlEventData\n\tret := nvmlEventSetWait(set, &data, timeoutms)\n\treturn data.convert(), ret\n}\n\n// nvml.EventSetFree()\nfunc (l *library) EventSetFree(set EventSet) Return {\n\treturn set.Free()\n}\n\nfunc (set nvmlEventSet) Free() Return {\n\treturn nvmlEventSetFree(set)\n}\n\n// nvml.SystemEventSetCreate()\nfunc (l *library) SystemEventSetCreate(request *SystemEventSetCreateRequest) Return {\n\treturn nvmlSystemEventSetCreate(request)\n}\n\n// nvml.SystemEventSetFree()\nfunc (l *library) SystemEventSetFree(request *SystemEventSetFreeRequest) Return {\n\treturn nvmlSystemEventSetFree(request)\n}\n\n// nvml.SystemRegisterEvents()\nfunc (l *library) SystemRegisterEvents(request *SystemRegisterEventRequest) Return {\n\treturn nvmlSystemRegisterEvents(request)\n}\n\n// nvml.SystemEventSetWait()\nfunc (l *library) SystemEventSetWait(request *SystemEventSetWaitRequest) Return {\n\treturn nvmlSystemEventSetWait(request)\n}\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvml/pkg/nvml/gpm.go",
    "content": "// Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage nvml\n\n// GpmMetricsGetType includes interface types for GpmSample instead of nvmlGpmSample\ntype GpmMetricsGetType struct {\n\tVersion    uint32\n\tNumMetrics uint32\n\tSample1    GpmSample\n\tSample2    GpmSample\n\tMetrics    [210]GpmMetric\n}\n\nfunc (g *GpmMetricsGetType) convert() *nvmlGpmMetricsGetType {\n\tout := &nvmlGpmMetricsGetType{\n\t\tVersion:    g.Version,\n\t\tNumMetrics: g.NumMetrics,\n\t\tSample1:    g.Sample1.(nvmlGpmSample),\n\t\tSample2:    g.Sample2.(nvmlGpmSample),\n\t}\n\tcopy(out.Metrics[:], g.Metrics[:])\n\n\treturn out\n}\n\nfunc (g *nvmlGpmMetricsGetType) convert() *GpmMetricsGetType {\n\tout := &GpmMetricsGetType{\n\t\tVersion:    g.Version,\n\t\tNumMetrics: g.NumMetrics,\n\t\tSample1:    g.Sample1,\n\t\tSample2:    g.Sample2,\n\t}\n\tcopy(out.Metrics[:], g.Metrics[:])\n\n\treturn out\n}\n\n// nvml.GpmMetricsGet()\ntype GpmMetricsGetVType struct {\n\tmetricsGet *GpmMetricsGetType\n}\n\nfunc (l *library) GpmMetricsGetV(metricsGet *GpmMetricsGetType) GpmMetricsGetVType {\n\treturn GpmMetricsGetVType{metricsGet}\n}\n\n// nvmlGpmMetricsGetStub is a stub function that can be overridden for testing.\nvar nvmlGpmMetricsGetStub = nvmlGpmMetricsGet\n\nfunc (metricsGetV GpmMetricsGetVType) V1() Return {\n\tmetricsGetV.metricsGet.Version = 1\n\treturn gpmMetricsGet(metricsGetV.metricsGet)\n}\n\nfunc (l *library) GpmMetricsGet(metricsGet *GpmMetricsGetType) Return {\n\tmetricsGet.Version = GPM_METRICS_GET_VERSION\n\treturn gpmMetricsGet(metricsGet)\n}\n\nfunc gpmMetricsGet(metricsGet *GpmMetricsGetType) Return {\n\tnvmlMetricsGet := metricsGet.convert()\n\tret := nvmlGpmMetricsGetStub(nvmlMetricsGet)\n\t*metricsGet = *nvmlMetricsGet.convert()\n\treturn ret\n}\n\n// nvml.GpmSampleFree()\nfunc (l *library) GpmSampleFree(gpmSample GpmSample) Return {\n\treturn gpmSample.Free()\n}\n\nfunc (gpmSample nvmlGpmSample) Free() Return {\n\treturn nvmlGpmSampleFree(gpmSample)\n}\n\n// nvml.GpmSampleAlloc()\nfunc (l *library) GpmSampleAlloc() (GpmSample, Return) {\n\tvar gpmSample nvmlGpmSample\n\tret := nvmlGpmSampleAlloc(&gpmSample)\n\treturn gpmSample, ret\n}\n\n// nvml.GpmSampleGet()\nfunc (l *library) GpmSampleGet(device Device, gpmSample GpmSample) Return {\n\treturn gpmSample.Get(device)\n}\n\nfunc (device nvmlDevice) GpmSampleGet(gpmSample GpmSample) Return {\n\treturn gpmSample.Get(device)\n}\n\nfunc (gpmSample nvmlGpmSample) Get(device Device) Return {\n\treturn nvmlGpmSampleGet(nvmlDeviceHandle(device), gpmSample)\n}\n\n// nvml.GpmQueryDeviceSupport()\ntype GpmSupportV struct {\n\tdevice nvmlDevice\n}\n\nfunc (l *library) GpmQueryDeviceSupportV(device Device) GpmSupportV {\n\treturn device.GpmQueryDeviceSupportV()\n}\n\nfunc (device nvmlDevice) GpmQueryDeviceSupportV() GpmSupportV {\n\treturn GpmSupportV{device}\n}\n\nfunc (gpmSupportV GpmSupportV) V1() (GpmSupport, Return) {\n\tvar gpmSupport GpmSupport\n\tgpmSupport.Version = STRUCT_VERSION(gpmSupport, 1)\n\tret := nvmlGpmQueryDeviceSupport(gpmSupportV.device, &gpmSupport)\n\treturn gpmSupport, ret\n}\n\nfunc (l *library) GpmQueryDeviceSupport(device Device) (GpmSupport, Return) {\n\treturn device.GpmQueryDeviceSupport()\n}\n\nfunc (device nvmlDevice) GpmQueryDeviceSupport() (GpmSupport, Return) {\n\tvar gpmSupport GpmSupport\n\tgpmSupport.Version = STRUCT_VERSION(gpmSupport, GPM_SUPPORT_VERSION)\n\tret := nvmlGpmQueryDeviceSupport(device, &gpmSupport)\n\treturn gpmSupport, ret\n}\n\n// nvml.GpmMigSampleGet()\nfunc (l *library) GpmMigSampleGet(device Device, gpuInstanceId int, gpmSample GpmSample) Return {\n\treturn gpmSample.MigGet(device, gpuInstanceId)\n}\n\nfunc (device nvmlDevice) GpmMigSampleGet(gpuInstanceId int, gpmSample GpmSample) Return {\n\treturn gpmSample.MigGet(device, gpuInstanceId)\n}\n\nfunc (gpmSample nvmlGpmSample) MigGet(device Device, gpuInstanceId int) Return {\n\treturn nvmlGpmMigSampleGet(nvmlDeviceHandle(device), uint32(gpuInstanceId), gpmSample)\n}\n\n// nvml.GpmQueryIfStreamingEnabled()\nfunc (l *library) GpmQueryIfStreamingEnabled(device Device) (uint32, Return) {\n\treturn device.GpmQueryIfStreamingEnabled()\n}\n\nfunc (device nvmlDevice) GpmQueryIfStreamingEnabled() (uint32, Return) {\n\tvar state uint32\n\tret := nvmlGpmQueryIfStreamingEnabled(device, &state)\n\treturn state, ret\n}\n\n// nvml.GpmSetStreamingEnabled()\nfunc (l *library) GpmSetStreamingEnabled(device Device, state uint32) Return {\n\treturn device.GpmSetStreamingEnabled(state)\n}\n\nfunc (device nvmlDevice) GpmSetStreamingEnabled(state uint32) Return {\n\treturn nvmlGpmSetStreamingEnabled(device, state)\n}\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvml/pkg/nvml/init.go",
    "content": "// Copyright (c) 2020, NVIDIA CORPORATION.  All rights reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage nvml\n\nimport \"C\"\n\n// nvml.Init()\nfunc (l *library) Init() Return {\n\tif err := l.load(); err != nil {\n\t\treturn ERROR_LIBRARY_NOT_FOUND\n\t}\n\treturn nvmlInit()\n}\n\n// nvml.InitWithFlags()\nfunc (l *library) InitWithFlags(flags uint32) Return {\n\tif err := l.load(); err != nil {\n\t\treturn ERROR_LIBRARY_NOT_FOUND\n\t}\n\treturn nvmlInitWithFlags(flags)\n}\n\n// nvml.Shutdown()\nfunc (l *library) Shutdown() Return {\n\tret := nvmlShutdown()\n\tif ret != SUCCESS {\n\t\treturn ret\n\t}\n\n\terr := l.close()\n\tif err != nil {\n\t\treturn ERROR_UNKNOWN\n\t}\n\n\treturn ret\n}\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvml/pkg/nvml/lib.go",
    "content": "/**\n# Copyright 2023 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage nvml\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"sync\"\n\n\t\"github.com/NVIDIA/go-nvml/pkg/dl\"\n)\n\nimport \"C\"\n\nconst (\n\tdefaultNvmlLibraryName      = \"libnvidia-ml.so.1\"\n\tdefaultNvmlLibraryLoadFlags = dl.RTLD_LAZY | dl.RTLD_GLOBAL\n)\n\nvar errLibraryNotLoaded = errors.New(\"library not loaded\")\nvar errLibraryAlreadyLoaded = errors.New(\"library already loaded\")\n\n// dynamicLibrary is an interface for abstacting the underlying library.\n// This also allows for mocking and testing.\n\n//go:generate moq -stub -out dynamicLibrary_mock.go . dynamicLibrary\ntype dynamicLibrary interface {\n\tLookup(string) error\n\tOpen() error\n\tClose() error\n}\n\n// library represents an nvml library.\n// This includes a reference to the underlying DynamicLibrary\ntype library struct {\n\tsync.Mutex\n\tpath     string\n\trefcount refcount\n\tdl       dynamicLibrary\n}\n\nvar _ Interface = (*library)(nil)\n\n// libnvml is a global instance of the nvml library.\nvar libnvml = newLibrary()\n\nfunc New(opts ...LibraryOption) Interface {\n\treturn newLibrary(opts...)\n}\n\nfunc newLibrary(opts ...LibraryOption) *library {\n\tl := &library{}\n\tl.init(opts...)\n\treturn l\n}\n\nfunc (l *library) init(opts ...LibraryOption) {\n\to := libraryOptions{}\n\tfor _, opt := range opts {\n\t\topt(&o)\n\t}\n\n\tif o.path == \"\" {\n\t\to.path = defaultNvmlLibraryName\n\t}\n\tif o.flags == 0 {\n\t\to.flags = defaultNvmlLibraryLoadFlags\n\t}\n\n\tl.path = o.path\n\tl.dl = dl.New(o.path, o.flags)\n}\n\nfunc (l *library) Extensions() ExtendedInterface {\n\treturn l\n}\n\n// LookupSymbol checks whether the specified library symbol exists in the library.\n// Note that this requires that the library be loaded.\nfunc (l *library) LookupSymbol(name string) error {\n\tif l == nil || l.refcount == 0 {\n\t\treturn fmt.Errorf(\"error looking up %s: %w\", name, errLibraryNotLoaded)\n\t}\n\treturn l.dl.Lookup(name)\n}\n\n// load initializes the library and updates the versioned symbols.\n// Multiple calls to an already loaded library will return without error.\nfunc (l *library) load() (rerr error) {\n\tl.Lock()\n\tdefer l.Unlock()\n\n\tdefer func() { l.refcount.IncOnNoError(rerr) }()\n\tif l.refcount > 0 {\n\t\treturn nil\n\t}\n\n\tif err := l.dl.Open(); err != nil {\n\t\treturn fmt.Errorf(\"error opening %s: %w\", l.path, err)\n\t}\n\n\t// Update the errorStringFunc to point to nvml.ErrorString\n\terrorStringFunc = nvmlErrorString\n\n\t// Update all versioned symbols\n\tl.updateVersionedSymbols()\n\n\treturn nil\n}\n\n// close the underlying library and ensure that the global pointer to the\n// library is set to nil to ensure that subsequent calls to open will reinitialize it.\n// Multiple calls to an already closed nvml library will return without error.\nfunc (l *library) close() (rerr error) {\n\tl.Lock()\n\tdefer l.Unlock()\n\n\tdefer func() { l.refcount.DecOnNoError(rerr) }()\n\tif l.refcount != 1 {\n\t\treturn nil\n\t}\n\n\tif err := l.dl.Close(); err != nil {\n\t\treturn fmt.Errorf(\"error closing %s: %w\", l.path, err)\n\t}\n\n\t// Update the errorStringFunc to point to defaultErrorStringFunc\n\terrorStringFunc = defaultErrorStringFunc\n\n\treturn nil\n}\n\n// Default all versioned APIs to v1 (to infer the types)\nvar nvmlInit = nvmlInit_v1\nvar nvmlDeviceGetPciInfo = nvmlDeviceGetPciInfo_v1\nvar nvmlDeviceGetCount = nvmlDeviceGetCount_v1\nvar nvmlDeviceGetHandleByIndex = nvmlDeviceGetHandleByIndex_v1\nvar nvmlDeviceGetHandleByPciBusId = nvmlDeviceGetHandleByPciBusId_v1\nvar nvmlDeviceGetNvLinkRemotePciInfo = nvmlDeviceGetNvLinkRemotePciInfo_v1\nvar nvmlDeviceRemoveGpu = nvmlDeviceRemoveGpu_v1\nvar nvmlDeviceGetGridLicensableFeatures = nvmlDeviceGetGridLicensableFeatures_v1\nvar nvmlEventSetWait = nvmlEventSetWait_v1\nvar nvmlDeviceGetAttributes = nvmlDeviceGetAttributes_v1\nvar nvmlComputeInstanceGetInfo = nvmlComputeInstanceGetInfo_v1\nvar deviceGetComputeRunningProcesses = deviceGetComputeRunningProcesses_v1\nvar deviceGetGraphicsRunningProcesses = deviceGetGraphicsRunningProcesses_v1\nvar deviceGetMPSComputeRunningProcesses = deviceGetMPSComputeRunningProcesses_v1\nvar GetBlacklistDeviceCount = GetExcludedDeviceCount\nvar GetBlacklistDeviceInfoByIndex = GetExcludedDeviceInfoByIndex\nvar nvmlDeviceGetGpuInstancePossiblePlacements = nvmlDeviceGetGpuInstancePossiblePlacements_v1\nvar nvmlVgpuInstanceGetLicenseInfo = nvmlVgpuInstanceGetLicenseInfo_v1\nvar nvmlDeviceGetDriverModel = nvmlDeviceGetDriverModel_v1\n\n// BlacklistDeviceInfo was replaced by ExcludedDeviceInfo\ntype BlacklistDeviceInfo = ExcludedDeviceInfo\n\ntype ProcessInfo_v1Slice []ProcessInfo_v1\ntype ProcessInfo_v2Slice []ProcessInfo_v2\n\nfunc (pis ProcessInfo_v1Slice) ToProcessInfoSlice() []ProcessInfo {\n\tvar newInfos []ProcessInfo\n\tfor _, pi := range pis {\n\t\tinfo := ProcessInfo{\n\t\t\tPid:               pi.Pid,\n\t\t\tUsedGpuMemory:     pi.UsedGpuMemory,\n\t\t\tGpuInstanceId:     0xFFFFFFFF, // GPU instance ID is invalid in v1\n\t\t\tComputeInstanceId: 0xFFFFFFFF, // Compute instance ID is invalid in v1\n\t\t}\n\t\tnewInfos = append(newInfos, info)\n\t}\n\treturn newInfos\n}\n\nfunc (pis ProcessInfo_v2Slice) ToProcessInfoSlice() []ProcessInfo {\n\tvar newInfos []ProcessInfo\n\tfor _, pi := range pis {\n\t\tinfo := ProcessInfo(pi)\n\t\tnewInfos = append(newInfos, info)\n\t}\n\treturn newInfos\n}\n\n// updateVersionedSymbols checks for versioned symbols in the loaded dynamic library.\n// If newer versioned symbols exist, these replace the default `v1` symbols initialized above.\n// When new versioned symbols are added, these would have to be initialized above and have\n// corresponding checks and subsequent assignments added below.\nfunc (l *library) updateVersionedSymbols() {\n\terr := l.dl.Lookup(\"nvmlInit_v2\")\n\tif err == nil {\n\t\tnvmlInit = nvmlInit_v2\n\t}\n\terr = l.dl.Lookup(\"nvmlDeviceGetPciInfo_v2\")\n\tif err == nil {\n\t\tnvmlDeviceGetPciInfo = nvmlDeviceGetPciInfo_v2\n\t}\n\terr = l.dl.Lookup(\"nvmlDeviceGetPciInfo_v3\")\n\tif err == nil {\n\t\tnvmlDeviceGetPciInfo = nvmlDeviceGetPciInfo_v3\n\t}\n\terr = l.dl.Lookup(\"nvmlDeviceGetCount_v2\")\n\tif err == nil {\n\t\tnvmlDeviceGetCount = nvmlDeviceGetCount_v2\n\t}\n\terr = l.dl.Lookup(\"nvmlDeviceGetHandleByIndex_v2\")\n\tif err == nil {\n\t\tnvmlDeviceGetHandleByIndex = nvmlDeviceGetHandleByIndex_v2\n\t}\n\terr = l.dl.Lookup(\"nvmlDeviceGetHandleByPciBusId_v2\")\n\tif err == nil {\n\t\tnvmlDeviceGetHandleByPciBusId = nvmlDeviceGetHandleByPciBusId_v2\n\t}\n\terr = l.dl.Lookup(\"nvmlDeviceGetNvLinkRemotePciInfo_v2\")\n\tif err == nil {\n\t\tnvmlDeviceGetNvLinkRemotePciInfo = nvmlDeviceGetNvLinkRemotePciInfo_v2\n\t}\n\t// Unable to overwrite nvmlDeviceRemoveGpu() because the v2 function takes\n\t// a different set of parameters than the v1 function.\n\t//err = l.dl.Lookup(\"nvmlDeviceRemoveGpu_v2\")\n\t//if err == nil {\n\t//    nvmlDeviceRemoveGpu = nvmlDeviceRemoveGpu_v2\n\t//}\n\terr = l.dl.Lookup(\"nvmlDeviceGetGridLicensableFeatures_v2\")\n\tif err == nil {\n\t\tnvmlDeviceGetGridLicensableFeatures = nvmlDeviceGetGridLicensableFeatures_v2\n\t}\n\terr = l.dl.Lookup(\"nvmlDeviceGetGridLicensableFeatures_v3\")\n\tif err == nil {\n\t\tnvmlDeviceGetGridLicensableFeatures = nvmlDeviceGetGridLicensableFeatures_v3\n\t}\n\terr = l.dl.Lookup(\"nvmlDeviceGetGridLicensableFeatures_v4\")\n\tif err == nil {\n\t\tnvmlDeviceGetGridLicensableFeatures = nvmlDeviceGetGridLicensableFeatures_v4\n\t}\n\terr = l.dl.Lookup(\"nvmlEventSetWait_v2\")\n\tif err == nil {\n\t\tnvmlEventSetWait = nvmlEventSetWait_v2\n\t}\n\terr = l.dl.Lookup(\"nvmlDeviceGetAttributes_v2\")\n\tif err == nil {\n\t\tnvmlDeviceGetAttributes = nvmlDeviceGetAttributes_v2\n\t}\n\terr = l.dl.Lookup(\"nvmlComputeInstanceGetInfo_v2\")\n\tif err == nil {\n\t\tnvmlComputeInstanceGetInfo = nvmlComputeInstanceGetInfo_v2\n\t}\n\terr = l.dl.Lookup(\"nvmlDeviceGetComputeRunningProcesses_v2\")\n\tif err == nil {\n\t\tdeviceGetComputeRunningProcesses = deviceGetComputeRunningProcesses_v2\n\t}\n\terr = l.dl.Lookup(\"nvmlDeviceGetComputeRunningProcesses_v3\")\n\tif err == nil {\n\t\tdeviceGetComputeRunningProcesses = deviceGetComputeRunningProcesses_v3\n\t}\n\terr = l.dl.Lookup(\"nvmlDeviceGetGraphicsRunningProcesses_v2\")\n\tif err == nil {\n\t\tdeviceGetGraphicsRunningProcesses = deviceGetGraphicsRunningProcesses_v2\n\t}\n\terr = l.dl.Lookup(\"nvmlDeviceGetGraphicsRunningProcesses_v3\")\n\tif err == nil {\n\t\tdeviceGetGraphicsRunningProcesses = deviceGetGraphicsRunningProcesses_v3\n\t}\n\terr = l.dl.Lookup(\"nvmlDeviceGetMPSComputeRunningProcesses_v2\")\n\tif err == nil {\n\t\tdeviceGetMPSComputeRunningProcesses = deviceGetMPSComputeRunningProcesses_v2\n\t}\n\terr = l.dl.Lookup(\"nvmlDeviceGetMPSComputeRunningProcesses_v3\")\n\tif err == nil {\n\t\tdeviceGetMPSComputeRunningProcesses = deviceGetMPSComputeRunningProcesses_v3\n\t}\n\terr = l.dl.Lookup(\"nvmlDeviceGetGpuInstancePossiblePlacements_v2\")\n\tif err == nil {\n\t\tnvmlDeviceGetGpuInstancePossiblePlacements = nvmlDeviceGetGpuInstancePossiblePlacements_v2\n\t}\n\terr = l.dl.Lookup(\"nvmlVgpuInstanceGetLicenseInfo_v2\")\n\tif err == nil {\n\t\tnvmlVgpuInstanceGetLicenseInfo = nvmlVgpuInstanceGetLicenseInfo_v2\n\t}\n\terr = l.dl.Lookup(\"nvmlDeviceGetDriverModel_v2\")\n\tif err == nil {\n\t\tnvmlDeviceGetDriverModel = nvmlDeviceGetDriverModel_v2\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvml/pkg/nvml/mock/computeinstance.go",
    "content": "// Code generated by moq; DO NOT EDIT.\n// github.com/matryer/moq\n\npackage mock\n\nimport (\n\t\"github.com/NVIDIA/go-nvml/pkg/nvml\"\n\t\"sync\"\n)\n\n// Ensure, that ComputeInstance does implement nvml.ComputeInstance.\n// If this is not the case, regenerate this file with moq.\nvar _ nvml.ComputeInstance = &ComputeInstance{}\n\n// ComputeInstance is a mock implementation of nvml.ComputeInstance.\n//\n//\tfunc TestSomethingThatUsesComputeInstance(t *testing.T) {\n//\n//\t\t// make and configure a mocked nvml.ComputeInstance\n//\t\tmockedComputeInstance := &ComputeInstance{\n//\t\t\tDestroyFunc: func() nvml.Return {\n//\t\t\t\tpanic(\"mock out the Destroy method\")\n//\t\t\t},\n//\t\t\tGetInfoFunc: func() (nvml.ComputeInstanceInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetInfo method\")\n//\t\t\t},\n//\t\t}\n//\n//\t\t// use mockedComputeInstance in code that requires nvml.ComputeInstance\n//\t\t// and then make assertions.\n//\n//\t}\ntype ComputeInstance struct {\n\t// DestroyFunc mocks the Destroy method.\n\tDestroyFunc func() nvml.Return\n\n\t// GetInfoFunc mocks the GetInfo method.\n\tGetInfoFunc func() (nvml.ComputeInstanceInfo, nvml.Return)\n\n\t// calls tracks calls to the methods.\n\tcalls struct {\n\t\t// Destroy holds details about calls to the Destroy method.\n\t\tDestroy []struct {\n\t\t}\n\t\t// GetInfo holds details about calls to the GetInfo method.\n\t\tGetInfo []struct {\n\t\t}\n\t}\n\tlockDestroy sync.RWMutex\n\tlockGetInfo sync.RWMutex\n}\n\n// Destroy calls DestroyFunc.\nfunc (mock *ComputeInstance) Destroy() nvml.Return {\n\tif mock.DestroyFunc == nil {\n\t\tpanic(\"ComputeInstance.DestroyFunc: method is nil but ComputeInstance.Destroy was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockDestroy.Lock()\n\tmock.calls.Destroy = append(mock.calls.Destroy, callInfo)\n\tmock.lockDestroy.Unlock()\n\treturn mock.DestroyFunc()\n}\n\n// DestroyCalls gets all the calls that were made to Destroy.\n// Check the length with:\n//\n//\tlen(mockedComputeInstance.DestroyCalls())\nfunc (mock *ComputeInstance) DestroyCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockDestroy.RLock()\n\tcalls = mock.calls.Destroy\n\tmock.lockDestroy.RUnlock()\n\treturn calls\n}\n\n// GetInfo calls GetInfoFunc.\nfunc (mock *ComputeInstance) GetInfo() (nvml.ComputeInstanceInfo, nvml.Return) {\n\tif mock.GetInfoFunc == nil {\n\t\tpanic(\"ComputeInstance.GetInfoFunc: method is nil but ComputeInstance.GetInfo was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetInfo.Lock()\n\tmock.calls.GetInfo = append(mock.calls.GetInfo, callInfo)\n\tmock.lockGetInfo.Unlock()\n\treturn mock.GetInfoFunc()\n}\n\n// GetInfoCalls gets all the calls that were made to GetInfo.\n// Check the length with:\n//\n//\tlen(mockedComputeInstance.GetInfoCalls())\nfunc (mock *ComputeInstance) GetInfoCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetInfo.RLock()\n\tcalls = mock.calls.GetInfo\n\tmock.lockGetInfo.RUnlock()\n\treturn calls\n}\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvml/pkg/nvml/mock/device.go",
    "content": "// Code generated by moq; DO NOT EDIT.\n// github.com/matryer/moq\n\npackage mock\n\nimport (\n\t\"github.com/NVIDIA/go-nvml/pkg/nvml\"\n\t\"sync\"\n)\n\n// Ensure, that Device does implement nvml.Device.\n// If this is not the case, regenerate this file with moq.\nvar _ nvml.Device = &Device{}\n\n// Device is a mock implementation of nvml.Device.\n//\n//\tfunc TestSomethingThatUsesDevice(t *testing.T) {\n//\n//\t\t// make and configure a mocked nvml.Device\n//\t\tmockedDevice := &Device{\n//\t\t\tClearAccountingPidsFunc: func() nvml.Return {\n//\t\t\t\tpanic(\"mock out the ClearAccountingPids method\")\n//\t\t\t},\n//\t\t\tClearCpuAffinityFunc: func() nvml.Return {\n//\t\t\t\tpanic(\"mock out the ClearCpuAffinity method\")\n//\t\t\t},\n//\t\t\tClearEccErrorCountsFunc: func(eccCounterType nvml.EccCounterType) nvml.Return {\n//\t\t\t\tpanic(\"mock out the ClearEccErrorCounts method\")\n//\t\t\t},\n//\t\t\tClearFieldValuesFunc: func(fieldValues []nvml.FieldValue) nvml.Return {\n//\t\t\t\tpanic(\"mock out the ClearFieldValues method\")\n//\t\t\t},\n//\t\t\tCreateGpuInstanceFunc: func(gpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo) (nvml.GpuInstance, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the CreateGpuInstance method\")\n//\t\t\t},\n//\t\t\tCreateGpuInstanceWithPlacementFunc: func(gpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo, gpuInstancePlacement *nvml.GpuInstancePlacement) (nvml.GpuInstance, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the CreateGpuInstanceWithPlacement method\")\n//\t\t\t},\n//\t\t\tFreezeNvLinkUtilizationCounterFunc: func(n1 int, n2 int, enableState nvml.EnableState) nvml.Return {\n//\t\t\t\tpanic(\"mock out the FreezeNvLinkUtilizationCounter method\")\n//\t\t\t},\n//\t\t\tGetAPIRestrictionFunc: func(restrictedAPI nvml.RestrictedAPI) (nvml.EnableState, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetAPIRestriction method\")\n//\t\t\t},\n//\t\t\tGetAccountingBufferSizeFunc: func() (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetAccountingBufferSize method\")\n//\t\t\t},\n//\t\t\tGetAccountingModeFunc: func() (nvml.EnableState, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetAccountingMode method\")\n//\t\t\t},\n//\t\t\tGetAccountingPidsFunc: func() ([]int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetAccountingPids method\")\n//\t\t\t},\n//\t\t\tGetAccountingStatsFunc: func(v uint32) (nvml.AccountingStats, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetAccountingStats method\")\n//\t\t\t},\n//\t\t\tGetActiveVgpusFunc: func() ([]nvml.VgpuInstance, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetActiveVgpus method\")\n//\t\t\t},\n//\t\t\tGetAdaptiveClockInfoStatusFunc: func() (uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetAdaptiveClockInfoStatus method\")\n//\t\t\t},\n//\t\t\tGetAddressingModeFunc: func() (nvml.DeviceAddressingMode, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetAddressingMode method\")\n//\t\t\t},\n//\t\t\tGetApplicationsClockFunc: func(clockType nvml.ClockType) (uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetApplicationsClock method\")\n//\t\t\t},\n//\t\t\tGetArchitectureFunc: func() (nvml.DeviceArchitecture, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetArchitecture method\")\n//\t\t\t},\n//\t\t\tGetAttributesFunc: func() (nvml.DeviceAttributes, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetAttributes method\")\n//\t\t\t},\n//\t\t\tGetAutoBoostedClocksEnabledFunc: func() (nvml.EnableState, nvml.EnableState, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetAutoBoostedClocksEnabled method\")\n//\t\t\t},\n//\t\t\tGetBAR1MemoryInfoFunc: func() (nvml.BAR1Memory, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetBAR1MemoryInfo method\")\n//\t\t\t},\n//\t\t\tGetBoardIdFunc: func() (uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetBoardId method\")\n//\t\t\t},\n//\t\t\tGetBoardPartNumberFunc: func() (string, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetBoardPartNumber method\")\n//\t\t\t},\n//\t\t\tGetBrandFunc: func() (nvml.BrandType, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetBrand method\")\n//\t\t\t},\n//\t\t\tGetBridgeChipInfoFunc: func() (nvml.BridgeChipHierarchy, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetBridgeChipInfo method\")\n//\t\t\t},\n//\t\t\tGetBusTypeFunc: func() (nvml.BusType, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetBusType method\")\n//\t\t\t},\n//\t\t\tGetC2cModeInfoVFunc: func() nvml.C2cModeInfoHandler {\n//\t\t\t\tpanic(\"mock out the GetC2cModeInfoV method\")\n//\t\t\t},\n//\t\t\tGetCapabilitiesFunc: func() (nvml.DeviceCapabilities, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetCapabilities method\")\n//\t\t\t},\n//\t\t\tGetClkMonStatusFunc: func() (nvml.ClkMonStatus, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetClkMonStatus method\")\n//\t\t\t},\n//\t\t\tGetClockFunc: func(clockType nvml.ClockType, clockId nvml.ClockId) (uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetClock method\")\n//\t\t\t},\n//\t\t\tGetClockInfoFunc: func(clockType nvml.ClockType) (uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetClockInfo method\")\n//\t\t\t},\n//\t\t\tGetClockOffsetsFunc: func() (nvml.ClockOffset, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetClockOffsets method\")\n//\t\t\t},\n//\t\t\tGetComputeInstanceIdFunc: func() (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetComputeInstanceId method\")\n//\t\t\t},\n//\t\t\tGetComputeModeFunc: func() (nvml.ComputeMode, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetComputeMode method\")\n//\t\t\t},\n//\t\t\tGetComputeRunningProcessesFunc: func() ([]nvml.ProcessInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetComputeRunningProcesses method\")\n//\t\t\t},\n//\t\t\tGetConfComputeGpuAttestationReportFunc: func(confComputeGpuAttestationReport *nvml.ConfComputeGpuAttestationReport) nvml.Return {\n//\t\t\t\tpanic(\"mock out the GetConfComputeGpuAttestationReport method\")\n//\t\t\t},\n//\t\t\tGetConfComputeGpuCertificateFunc: func() (nvml.ConfComputeGpuCertificate, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetConfComputeGpuCertificate method\")\n//\t\t\t},\n//\t\t\tGetConfComputeMemSizeInfoFunc: func() (nvml.ConfComputeMemSizeInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetConfComputeMemSizeInfo method\")\n//\t\t\t},\n//\t\t\tGetConfComputeProtectedMemoryUsageFunc: func() (nvml.Memory, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetConfComputeProtectedMemoryUsage method\")\n//\t\t\t},\n//\t\t\tGetCoolerInfoFunc: func() (nvml.CoolerInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetCoolerInfo method\")\n//\t\t\t},\n//\t\t\tGetCpuAffinityFunc: func(n int) ([]uint, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetCpuAffinity method\")\n//\t\t\t},\n//\t\t\tGetCpuAffinityWithinScopeFunc: func(n int, affinityScope nvml.AffinityScope) ([]uint, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetCpuAffinityWithinScope method\")\n//\t\t\t},\n//\t\t\tGetCreatableVgpusFunc: func() ([]nvml.VgpuTypeId, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetCreatableVgpus method\")\n//\t\t\t},\n//\t\t\tGetCudaComputeCapabilityFunc: func() (int, int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetCudaComputeCapability method\")\n//\t\t\t},\n//\t\t\tGetCurrPcieLinkGenerationFunc: func() (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetCurrPcieLinkGeneration method\")\n//\t\t\t},\n//\t\t\tGetCurrPcieLinkWidthFunc: func() (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetCurrPcieLinkWidth method\")\n//\t\t\t},\n//\t\t\tGetCurrentClockFreqsFunc: func() (nvml.DeviceCurrentClockFreqs, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetCurrentClockFreqs method\")\n//\t\t\t},\n//\t\t\tGetCurrentClocksEventReasonsFunc: func() (uint64, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetCurrentClocksEventReasons method\")\n//\t\t\t},\n//\t\t\tGetCurrentClocksThrottleReasonsFunc: func() (uint64, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetCurrentClocksThrottleReasons method\")\n//\t\t\t},\n//\t\t\tGetDecoderUtilizationFunc: func() (uint32, uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetDecoderUtilization method\")\n//\t\t\t},\n//\t\t\tGetDefaultApplicationsClockFunc: func(clockType nvml.ClockType) (uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetDefaultApplicationsClock method\")\n//\t\t\t},\n//\t\t\tGetDefaultEccModeFunc: func() (nvml.EnableState, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetDefaultEccMode method\")\n//\t\t\t},\n//\t\t\tGetDetailedEccErrorsFunc: func(memoryErrorType nvml.MemoryErrorType, eccCounterType nvml.EccCounterType) (nvml.EccErrorCounts, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetDetailedEccErrors method\")\n//\t\t\t},\n//\t\t\tGetDeviceHandleFromMigDeviceHandleFunc: func() (nvml.Device, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetDeviceHandleFromMigDeviceHandle method\")\n//\t\t\t},\n//\t\t\tGetDisplayActiveFunc: func() (nvml.EnableState, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetDisplayActive method\")\n//\t\t\t},\n//\t\t\tGetDisplayModeFunc: func() (nvml.EnableState, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetDisplayMode method\")\n//\t\t\t},\n//\t\t\tGetDramEncryptionModeFunc: func() (nvml.DramEncryptionInfo, nvml.DramEncryptionInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetDramEncryptionMode method\")\n//\t\t\t},\n//\t\t\tGetDriverModelFunc: func() (nvml.DriverModel, nvml.DriverModel, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetDriverModel method\")\n//\t\t\t},\n//\t\t\tGetDriverModel_v2Func: func() (nvml.DriverModel, nvml.DriverModel, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetDriverModel_v2 method\")\n//\t\t\t},\n//\t\t\tGetDynamicPstatesInfoFunc: func() (nvml.GpuDynamicPstatesInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetDynamicPstatesInfo method\")\n//\t\t\t},\n//\t\t\tGetEccModeFunc: func() (nvml.EnableState, nvml.EnableState, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetEccMode method\")\n//\t\t\t},\n//\t\t\tGetEncoderCapacityFunc: func(encoderType nvml.EncoderType) (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetEncoderCapacity method\")\n//\t\t\t},\n//\t\t\tGetEncoderSessionsFunc: func() ([]nvml.EncoderSessionInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetEncoderSessions method\")\n//\t\t\t},\n//\t\t\tGetEncoderStatsFunc: func() (int, uint32, uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetEncoderStats method\")\n//\t\t\t},\n//\t\t\tGetEncoderUtilizationFunc: func() (uint32, uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetEncoderUtilization method\")\n//\t\t\t},\n//\t\t\tGetEnforcedPowerLimitFunc: func() (uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetEnforcedPowerLimit method\")\n//\t\t\t},\n//\t\t\tGetFBCSessionsFunc: func() ([]nvml.FBCSessionInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetFBCSessions method\")\n//\t\t\t},\n//\t\t\tGetFBCStatsFunc: func() (nvml.FBCStats, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetFBCStats method\")\n//\t\t\t},\n//\t\t\tGetFanControlPolicy_v2Func: func(n int) (nvml.FanControlPolicy, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetFanControlPolicy_v2 method\")\n//\t\t\t},\n//\t\t\tGetFanSpeedFunc: func() (uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetFanSpeed method\")\n//\t\t\t},\n//\t\t\tGetFanSpeedRPMFunc: func() (nvml.FanSpeedInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetFanSpeedRPM method\")\n//\t\t\t},\n//\t\t\tGetFanSpeed_v2Func: func(n int) (uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetFanSpeed_v2 method\")\n//\t\t\t},\n//\t\t\tGetFieldValuesFunc: func(fieldValues []nvml.FieldValue) nvml.Return {\n//\t\t\t\tpanic(\"mock out the GetFieldValues method\")\n//\t\t\t},\n//\t\t\tGetGpcClkMinMaxVfOffsetFunc: func() (int, int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetGpcClkMinMaxVfOffset method\")\n//\t\t\t},\n//\t\t\tGetGpcClkVfOffsetFunc: func() (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetGpcClkVfOffset method\")\n//\t\t\t},\n//\t\t\tGetGpuFabricInfoFunc: func() (nvml.GpuFabricInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetGpuFabricInfo method\")\n//\t\t\t},\n//\t\t\tGetGpuFabricInfoVFunc: func() nvml.GpuFabricInfoHandler {\n//\t\t\t\tpanic(\"mock out the GetGpuFabricInfoV method\")\n//\t\t\t},\n//\t\t\tGetGpuInstanceByIdFunc: func(n int) (nvml.GpuInstance, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetGpuInstanceById method\")\n//\t\t\t},\n//\t\t\tGetGpuInstanceIdFunc: func() (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetGpuInstanceId method\")\n//\t\t\t},\n//\t\t\tGetGpuInstancePossiblePlacementsFunc: func(gpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo) ([]nvml.GpuInstancePlacement, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetGpuInstancePossiblePlacements method\")\n//\t\t\t},\n//\t\t\tGetGpuInstanceProfileInfoFunc: func(n int) (nvml.GpuInstanceProfileInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetGpuInstanceProfileInfo method\")\n//\t\t\t},\n//\t\t\tGetGpuInstanceProfileInfoByIdVFunc: func(n int) nvml.GpuInstanceProfileInfoByIdHandler {\n//\t\t\t\tpanic(\"mock out the GetGpuInstanceProfileInfoByIdV method\")\n//\t\t\t},\n//\t\t\tGetGpuInstanceProfileInfoVFunc: func(n int) nvml.GpuInstanceProfileInfoHandler {\n//\t\t\t\tpanic(\"mock out the GetGpuInstanceProfileInfoV method\")\n//\t\t\t},\n//\t\t\tGetGpuInstanceRemainingCapacityFunc: func(gpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo) (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetGpuInstanceRemainingCapacity method\")\n//\t\t\t},\n//\t\t\tGetGpuInstancesFunc: func(gpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo) ([]nvml.GpuInstance, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetGpuInstances method\")\n//\t\t\t},\n//\t\t\tGetGpuMaxPcieLinkGenerationFunc: func() (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetGpuMaxPcieLinkGeneration method\")\n//\t\t\t},\n//\t\t\tGetGpuOperationModeFunc: func() (nvml.GpuOperationMode, nvml.GpuOperationMode, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetGpuOperationMode method\")\n//\t\t\t},\n//\t\t\tGetGraphicsRunningProcessesFunc: func() ([]nvml.ProcessInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetGraphicsRunningProcesses method\")\n//\t\t\t},\n//\t\t\tGetGridLicensableFeaturesFunc: func() (nvml.GridLicensableFeatures, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetGridLicensableFeatures method\")\n//\t\t\t},\n//\t\t\tGetGspFirmwareModeFunc: func() (bool, bool, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetGspFirmwareMode method\")\n//\t\t\t},\n//\t\t\tGetGspFirmwareVersionFunc: func() (string, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetGspFirmwareVersion method\")\n//\t\t\t},\n//\t\t\tGetHostVgpuModeFunc: func() (nvml.HostVgpuMode, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetHostVgpuMode method\")\n//\t\t\t},\n//\t\t\tGetIndexFunc: func() (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetIndex method\")\n//\t\t\t},\n//\t\t\tGetInforomConfigurationChecksumFunc: func() (uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetInforomConfigurationChecksum method\")\n//\t\t\t},\n//\t\t\tGetInforomImageVersionFunc: func() (string, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetInforomImageVersion method\")\n//\t\t\t},\n//\t\t\tGetInforomVersionFunc: func(inforomObject nvml.InforomObject) (string, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetInforomVersion method\")\n//\t\t\t},\n//\t\t\tGetIrqNumFunc: func() (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetIrqNum method\")\n//\t\t\t},\n//\t\t\tGetJpgUtilizationFunc: func() (uint32, uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetJpgUtilization method\")\n//\t\t\t},\n//\t\t\tGetLastBBXFlushTimeFunc: func() (uint64, uint, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetLastBBXFlushTime method\")\n//\t\t\t},\n//\t\t\tGetMPSComputeRunningProcessesFunc: func() ([]nvml.ProcessInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetMPSComputeRunningProcesses method\")\n//\t\t\t},\n//\t\t\tGetMarginTemperatureFunc: func() (nvml.MarginTemperature, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetMarginTemperature method\")\n//\t\t\t},\n//\t\t\tGetMaxClockInfoFunc: func(clockType nvml.ClockType) (uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetMaxClockInfo method\")\n//\t\t\t},\n//\t\t\tGetMaxCustomerBoostClockFunc: func(clockType nvml.ClockType) (uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetMaxCustomerBoostClock method\")\n//\t\t\t},\n//\t\t\tGetMaxMigDeviceCountFunc: func() (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetMaxMigDeviceCount method\")\n//\t\t\t},\n//\t\t\tGetMaxPcieLinkGenerationFunc: func() (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetMaxPcieLinkGeneration method\")\n//\t\t\t},\n//\t\t\tGetMaxPcieLinkWidthFunc: func() (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetMaxPcieLinkWidth method\")\n//\t\t\t},\n//\t\t\tGetMemClkMinMaxVfOffsetFunc: func() (int, int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetMemClkMinMaxVfOffset method\")\n//\t\t\t},\n//\t\t\tGetMemClkVfOffsetFunc: func() (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetMemClkVfOffset method\")\n//\t\t\t},\n//\t\t\tGetMemoryAffinityFunc: func(n int, affinityScope nvml.AffinityScope) ([]uint, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetMemoryAffinity method\")\n//\t\t\t},\n//\t\t\tGetMemoryBusWidthFunc: func() (uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetMemoryBusWidth method\")\n//\t\t\t},\n//\t\t\tGetMemoryErrorCounterFunc: func(memoryErrorType nvml.MemoryErrorType, eccCounterType nvml.EccCounterType, memoryLocation nvml.MemoryLocation) (uint64, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetMemoryErrorCounter method\")\n//\t\t\t},\n//\t\t\tGetMemoryInfoFunc: func() (nvml.Memory, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetMemoryInfo method\")\n//\t\t\t},\n//\t\t\tGetMemoryInfo_v2Func: func() (nvml.Memory_v2, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetMemoryInfo_v2 method\")\n//\t\t\t},\n//\t\t\tGetMigDeviceHandleByIndexFunc: func(n int) (nvml.Device, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetMigDeviceHandleByIndex method\")\n//\t\t\t},\n//\t\t\tGetMigModeFunc: func() (int, int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetMigMode method\")\n//\t\t\t},\n//\t\t\tGetMinMaxClockOfPStateFunc: func(clockType nvml.ClockType, pstates nvml.Pstates) (uint32, uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetMinMaxClockOfPState method\")\n//\t\t\t},\n//\t\t\tGetMinMaxFanSpeedFunc: func() (int, int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetMinMaxFanSpeed method\")\n//\t\t\t},\n//\t\t\tGetMinorNumberFunc: func() (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetMinorNumber method\")\n//\t\t\t},\n//\t\t\tGetModuleIdFunc: func() (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetModuleId method\")\n//\t\t\t},\n//\t\t\tGetMultiGpuBoardFunc: func() (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetMultiGpuBoard method\")\n//\t\t\t},\n//\t\t\tGetNameFunc: func() (string, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetName method\")\n//\t\t\t},\n//\t\t\tGetNumFansFunc: func() (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetNumFans method\")\n//\t\t\t},\n//\t\t\tGetNumGpuCoresFunc: func() (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetNumGpuCores method\")\n//\t\t\t},\n//\t\t\tGetNumaNodeIdFunc: func() (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetNumaNodeId method\")\n//\t\t\t},\n//\t\t\tGetNvLinkCapabilityFunc: func(n int, nvLinkCapability nvml.NvLinkCapability) (uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetNvLinkCapability method\")\n//\t\t\t},\n//\t\t\tGetNvLinkErrorCounterFunc: func(n int, nvLinkErrorCounter nvml.NvLinkErrorCounter) (uint64, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetNvLinkErrorCounter method\")\n//\t\t\t},\n//\t\t\tGetNvLinkInfoFunc: func() nvml.NvLinkInfoHandler {\n//\t\t\t\tpanic(\"mock out the GetNvLinkInfo method\")\n//\t\t\t},\n//\t\t\tGetNvLinkRemoteDeviceTypeFunc: func(n int) (nvml.IntNvLinkDeviceType, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetNvLinkRemoteDeviceType method\")\n//\t\t\t},\n//\t\t\tGetNvLinkRemotePciInfoFunc: func(n int) (nvml.PciInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetNvLinkRemotePciInfo method\")\n//\t\t\t},\n//\t\t\tGetNvLinkStateFunc: func(n int) (nvml.EnableState, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetNvLinkState method\")\n//\t\t\t},\n//\t\t\tGetNvLinkUtilizationControlFunc: func(n1 int, n2 int) (nvml.NvLinkUtilizationControl, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetNvLinkUtilizationControl method\")\n//\t\t\t},\n//\t\t\tGetNvLinkUtilizationCounterFunc: func(n1 int, n2 int) (uint64, uint64, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetNvLinkUtilizationCounter method\")\n//\t\t\t},\n//\t\t\tGetNvLinkVersionFunc: func(n int) (uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetNvLinkVersion method\")\n//\t\t\t},\n//\t\t\tGetNvlinkBwModeFunc: func() (nvml.NvlinkGetBwMode, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetNvlinkBwMode method\")\n//\t\t\t},\n//\t\t\tGetNvlinkSupportedBwModesFunc: func() (nvml.NvlinkSupportedBwModes, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetNvlinkSupportedBwModes method\")\n//\t\t\t},\n//\t\t\tGetOfaUtilizationFunc: func() (uint32, uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetOfaUtilization method\")\n//\t\t\t},\n//\t\t\tGetP2PStatusFunc: func(device nvml.Device, gpuP2PCapsIndex nvml.GpuP2PCapsIndex) (nvml.GpuP2PStatus, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetP2PStatus method\")\n//\t\t\t},\n//\t\t\tGetPciInfoFunc: func() (nvml.PciInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetPciInfo method\")\n//\t\t\t},\n//\t\t\tGetPciInfoExtFunc: func() (nvml.PciInfoExt, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetPciInfoExt method\")\n//\t\t\t},\n//\t\t\tGetPcieLinkMaxSpeedFunc: func() (uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetPcieLinkMaxSpeed method\")\n//\t\t\t},\n//\t\t\tGetPcieReplayCounterFunc: func() (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetPcieReplayCounter method\")\n//\t\t\t},\n//\t\t\tGetPcieSpeedFunc: func() (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetPcieSpeed method\")\n//\t\t\t},\n//\t\t\tGetPcieThroughputFunc: func(pcieUtilCounter nvml.PcieUtilCounter) (uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetPcieThroughput method\")\n//\t\t\t},\n//\t\t\tGetPdiFunc: func() (nvml.Pdi, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetPdi method\")\n//\t\t\t},\n//\t\t\tGetPerformanceModesFunc: func() (nvml.DevicePerfModes, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetPerformanceModes method\")\n//\t\t\t},\n//\t\t\tGetPerformanceStateFunc: func() (nvml.Pstates, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetPerformanceState method\")\n//\t\t\t},\n//\t\t\tGetPersistenceModeFunc: func() (nvml.EnableState, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetPersistenceMode method\")\n//\t\t\t},\n//\t\t\tGetPgpuMetadataStringFunc: func() (string, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetPgpuMetadataString method\")\n//\t\t\t},\n//\t\t\tGetPlatformInfoFunc: func() (nvml.PlatformInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetPlatformInfo method\")\n//\t\t\t},\n//\t\t\tGetPowerManagementDefaultLimitFunc: func() (uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetPowerManagementDefaultLimit method\")\n//\t\t\t},\n//\t\t\tGetPowerManagementLimitFunc: func() (uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetPowerManagementLimit method\")\n//\t\t\t},\n//\t\t\tGetPowerManagementLimitConstraintsFunc: func() (uint32, uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetPowerManagementLimitConstraints method\")\n//\t\t\t},\n//\t\t\tGetPowerManagementModeFunc: func() (nvml.EnableState, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetPowerManagementMode method\")\n//\t\t\t},\n//\t\t\tGetPowerMizerMode_v1Func: func() (nvml.DevicePowerMizerModes_v1, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetPowerMizerMode_v1 method\")\n//\t\t\t},\n//\t\t\tGetPowerSourceFunc: func() (nvml.PowerSource, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetPowerSource method\")\n//\t\t\t},\n//\t\t\tGetPowerStateFunc: func() (nvml.Pstates, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetPowerState method\")\n//\t\t\t},\n//\t\t\tGetPowerUsageFunc: func() (uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetPowerUsage method\")\n//\t\t\t},\n//\t\t\tGetProcessUtilizationFunc: func(v uint64) ([]nvml.ProcessUtilizationSample, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetProcessUtilization method\")\n//\t\t\t},\n//\t\t\tGetProcessesUtilizationInfoFunc: func() (nvml.ProcessesUtilizationInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetProcessesUtilizationInfo method\")\n//\t\t\t},\n//\t\t\tGetRemappedRowsFunc: func() (int, int, bool, bool, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetRemappedRows method\")\n//\t\t\t},\n//\t\t\tGetRepairStatusFunc: func() (nvml.RepairStatus, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetRepairStatus method\")\n//\t\t\t},\n//\t\t\tGetRetiredPagesFunc: func(pageRetirementCause nvml.PageRetirementCause) ([]uint64, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetRetiredPages method\")\n//\t\t\t},\n//\t\t\tGetRetiredPagesPendingStatusFunc: func() (nvml.EnableState, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetRetiredPagesPendingStatus method\")\n//\t\t\t},\n//\t\t\tGetRetiredPages_v2Func: func(pageRetirementCause nvml.PageRetirementCause) ([]uint64, []uint64, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetRetiredPages_v2 method\")\n//\t\t\t},\n//\t\t\tGetRowRemapperHistogramFunc: func() (nvml.RowRemapperHistogramValues, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetRowRemapperHistogram method\")\n//\t\t\t},\n//\t\t\tGetRunningProcessDetailListFunc: func() (nvml.ProcessDetailList, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetRunningProcessDetailList method\")\n//\t\t\t},\n//\t\t\tGetSamplesFunc: func(samplingType nvml.SamplingType, v uint64) (nvml.ValueType, []nvml.Sample, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetSamples method\")\n//\t\t\t},\n//\t\t\tGetSerialFunc: func() (string, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetSerial method\")\n//\t\t\t},\n//\t\t\tGetSramEccErrorStatusFunc: func() (nvml.EccSramErrorStatus, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetSramEccErrorStatus method\")\n//\t\t\t},\n//\t\t\tGetSramUniqueUncorrectedEccErrorCountsFunc: func(eccSramUniqueUncorrectedErrorCounts *nvml.EccSramUniqueUncorrectedErrorCounts) nvml.Return {\n//\t\t\t\tpanic(\"mock out the GetSramUniqueUncorrectedEccErrorCounts method\")\n//\t\t\t},\n//\t\t\tGetSupportedClocksEventReasonsFunc: func() (uint64, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetSupportedClocksEventReasons method\")\n//\t\t\t},\n//\t\t\tGetSupportedClocksThrottleReasonsFunc: func() (uint64, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetSupportedClocksThrottleReasons method\")\n//\t\t\t},\n//\t\t\tGetSupportedEventTypesFunc: func() (uint64, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetSupportedEventTypes method\")\n//\t\t\t},\n//\t\t\tGetSupportedGraphicsClocksFunc: func(n int) (int, uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetSupportedGraphicsClocks method\")\n//\t\t\t},\n//\t\t\tGetSupportedMemoryClocksFunc: func() (int, uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetSupportedMemoryClocks method\")\n//\t\t\t},\n//\t\t\tGetSupportedPerformanceStatesFunc: func() ([]nvml.Pstates, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetSupportedPerformanceStates method\")\n//\t\t\t},\n//\t\t\tGetSupportedVgpusFunc: func() ([]nvml.VgpuTypeId, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetSupportedVgpus method\")\n//\t\t\t},\n//\t\t\tGetTargetFanSpeedFunc: func(n int) (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetTargetFanSpeed method\")\n//\t\t\t},\n//\t\t\tGetTemperatureFunc: func(temperatureSensors nvml.TemperatureSensors) (uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetTemperature method\")\n//\t\t\t},\n//\t\t\tGetTemperatureThresholdFunc: func(temperatureThresholds nvml.TemperatureThresholds) (uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetTemperatureThreshold method\")\n//\t\t\t},\n//\t\t\tGetTemperatureVFunc: func() nvml.TemperatureHandler {\n//\t\t\t\tpanic(\"mock out the GetTemperatureV method\")\n//\t\t\t},\n//\t\t\tGetThermalSettingsFunc: func(v uint32) (nvml.GpuThermalSettings, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetThermalSettings method\")\n//\t\t\t},\n//\t\t\tGetTopologyCommonAncestorFunc: func(device nvml.Device) (nvml.GpuTopologyLevel, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetTopologyCommonAncestor method\")\n//\t\t\t},\n//\t\t\tGetTopologyNearestGpusFunc: func(gpuTopologyLevel nvml.GpuTopologyLevel) ([]nvml.Device, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetTopologyNearestGpus method\")\n//\t\t\t},\n//\t\t\tGetTotalEccErrorsFunc: func(memoryErrorType nvml.MemoryErrorType, eccCounterType nvml.EccCounterType) (uint64, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetTotalEccErrors method\")\n//\t\t\t},\n//\t\t\tGetTotalEnergyConsumptionFunc: func() (uint64, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetTotalEnergyConsumption method\")\n//\t\t\t},\n//\t\t\tGetUUIDFunc: func() (string, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetUUID method\")\n//\t\t\t},\n//\t\t\tGetUtilizationRatesFunc: func() (nvml.Utilization, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetUtilizationRates method\")\n//\t\t\t},\n//\t\t\tGetVbiosVersionFunc: func() (string, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetVbiosVersion method\")\n//\t\t\t},\n//\t\t\tGetVgpuCapabilitiesFunc: func(deviceVgpuCapability nvml.DeviceVgpuCapability) (bool, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetVgpuCapabilities method\")\n//\t\t\t},\n//\t\t\tGetVgpuHeterogeneousModeFunc: func() (nvml.VgpuHeterogeneousMode, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetVgpuHeterogeneousMode method\")\n//\t\t\t},\n//\t\t\tGetVgpuInstancesUtilizationInfoFunc: func() (nvml.VgpuInstancesUtilizationInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetVgpuInstancesUtilizationInfo method\")\n//\t\t\t},\n//\t\t\tGetVgpuMetadataFunc: func() (nvml.VgpuPgpuMetadata, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetVgpuMetadata method\")\n//\t\t\t},\n//\t\t\tGetVgpuProcessUtilizationFunc: func(v uint64) ([]nvml.VgpuProcessUtilizationSample, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetVgpuProcessUtilization method\")\n//\t\t\t},\n//\t\t\tGetVgpuProcessesUtilizationInfoFunc: func() (nvml.VgpuProcessesUtilizationInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetVgpuProcessesUtilizationInfo method\")\n//\t\t\t},\n//\t\t\tGetVgpuSchedulerCapabilitiesFunc: func() (nvml.VgpuSchedulerCapabilities, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetVgpuSchedulerCapabilities method\")\n//\t\t\t},\n//\t\t\tGetVgpuSchedulerLogFunc: func() (nvml.VgpuSchedulerLog, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetVgpuSchedulerLog method\")\n//\t\t\t},\n//\t\t\tGetVgpuSchedulerStateFunc: func() (nvml.VgpuSchedulerGetState, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetVgpuSchedulerState method\")\n//\t\t\t},\n//\t\t\tGetVgpuTypeCreatablePlacementsFunc: func(vgpuTypeId nvml.VgpuTypeId) (nvml.VgpuPlacementList, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetVgpuTypeCreatablePlacements method\")\n//\t\t\t},\n//\t\t\tGetVgpuTypeSupportedPlacementsFunc: func(vgpuTypeId nvml.VgpuTypeId) (nvml.VgpuPlacementList, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetVgpuTypeSupportedPlacements method\")\n//\t\t\t},\n//\t\t\tGetVgpuUtilizationFunc: func(v uint64) (nvml.ValueType, []nvml.VgpuInstanceUtilizationSample, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetVgpuUtilization method\")\n//\t\t\t},\n//\t\t\tGetViolationStatusFunc: func(perfPolicyType nvml.PerfPolicyType) (nvml.ViolationTime, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetViolationStatus method\")\n//\t\t\t},\n//\t\t\tGetVirtualizationModeFunc: func() (nvml.GpuVirtualizationMode, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetVirtualizationMode method\")\n//\t\t\t},\n//\t\t\tGpmMigSampleGetFunc: func(n int, gpmSample nvml.GpmSample) nvml.Return {\n//\t\t\t\tpanic(\"mock out the GpmMigSampleGet method\")\n//\t\t\t},\n//\t\t\tGpmQueryDeviceSupportFunc: func() (nvml.GpmSupport, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GpmQueryDeviceSupport method\")\n//\t\t\t},\n//\t\t\tGpmQueryDeviceSupportVFunc: func() nvml.GpmSupportV {\n//\t\t\t\tpanic(\"mock out the GpmQueryDeviceSupportV method\")\n//\t\t\t},\n//\t\t\tGpmQueryIfStreamingEnabledFunc: func() (uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GpmQueryIfStreamingEnabled method\")\n//\t\t\t},\n//\t\t\tGpmSampleGetFunc: func(gpmSample nvml.GpmSample) nvml.Return {\n//\t\t\t\tpanic(\"mock out the GpmSampleGet method\")\n//\t\t\t},\n//\t\t\tGpmSetStreamingEnabledFunc: func(v uint32) nvml.Return {\n//\t\t\t\tpanic(\"mock out the GpmSetStreamingEnabled method\")\n//\t\t\t},\n//\t\t\tIsMigDeviceHandleFunc: func() (bool, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the IsMigDeviceHandle method\")\n//\t\t\t},\n//\t\t\tOnSameBoardFunc: func(device nvml.Device) (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the OnSameBoard method\")\n//\t\t\t},\n//\t\t\tPowerSmoothingActivatePresetProfileFunc: func(powerSmoothingProfile *nvml.PowerSmoothingProfile) nvml.Return {\n//\t\t\t\tpanic(\"mock out the PowerSmoothingActivatePresetProfile method\")\n//\t\t\t},\n//\t\t\tPowerSmoothingSetStateFunc: func(powerSmoothingState *nvml.PowerSmoothingState) nvml.Return {\n//\t\t\t\tpanic(\"mock out the PowerSmoothingSetState method\")\n//\t\t\t},\n//\t\t\tPowerSmoothingUpdatePresetProfileParamFunc: func(powerSmoothingProfile *nvml.PowerSmoothingProfile) nvml.Return {\n//\t\t\t\tpanic(\"mock out the PowerSmoothingUpdatePresetProfileParam method\")\n//\t\t\t},\n//\t\t\tReadWritePRM_v1Func: func(pRMTLV_v1 *nvml.PRMTLV_v1) nvml.Return {\n//\t\t\t\tpanic(\"mock out the ReadWritePRM_v1 method\")\n//\t\t\t},\n//\t\t\tRegisterEventsFunc: func(v uint64, eventSet nvml.EventSet) nvml.Return {\n//\t\t\t\tpanic(\"mock out the RegisterEvents method\")\n//\t\t\t},\n//\t\t\tResetApplicationsClocksFunc: func() nvml.Return {\n//\t\t\t\tpanic(\"mock out the ResetApplicationsClocks method\")\n//\t\t\t},\n//\t\t\tResetGpuLockedClocksFunc: func() nvml.Return {\n//\t\t\t\tpanic(\"mock out the ResetGpuLockedClocks method\")\n//\t\t\t},\n//\t\t\tResetMemoryLockedClocksFunc: func() nvml.Return {\n//\t\t\t\tpanic(\"mock out the ResetMemoryLockedClocks method\")\n//\t\t\t},\n//\t\t\tResetNvLinkErrorCountersFunc: func(n int) nvml.Return {\n//\t\t\t\tpanic(\"mock out the ResetNvLinkErrorCounters method\")\n//\t\t\t},\n//\t\t\tResetNvLinkUtilizationCounterFunc: func(n1 int, n2 int) nvml.Return {\n//\t\t\t\tpanic(\"mock out the ResetNvLinkUtilizationCounter method\")\n//\t\t\t},\n//\t\t\tSetAPIRestrictionFunc: func(restrictedAPI nvml.RestrictedAPI, enableState nvml.EnableState) nvml.Return {\n//\t\t\t\tpanic(\"mock out the SetAPIRestriction method\")\n//\t\t\t},\n//\t\t\tSetAccountingModeFunc: func(enableState nvml.EnableState) nvml.Return {\n//\t\t\t\tpanic(\"mock out the SetAccountingMode method\")\n//\t\t\t},\n//\t\t\tSetApplicationsClocksFunc: func(v1 uint32, v2 uint32) nvml.Return {\n//\t\t\t\tpanic(\"mock out the SetApplicationsClocks method\")\n//\t\t\t},\n//\t\t\tSetAutoBoostedClocksEnabledFunc: func(enableState nvml.EnableState) nvml.Return {\n//\t\t\t\tpanic(\"mock out the SetAutoBoostedClocksEnabled method\")\n//\t\t\t},\n//\t\t\tSetClockOffsetsFunc: func(clockOffset nvml.ClockOffset) nvml.Return {\n//\t\t\t\tpanic(\"mock out the SetClockOffsets method\")\n//\t\t\t},\n//\t\t\tSetComputeModeFunc: func(computeMode nvml.ComputeMode) nvml.Return {\n//\t\t\t\tpanic(\"mock out the SetComputeMode method\")\n//\t\t\t},\n//\t\t\tSetConfComputeUnprotectedMemSizeFunc: func(v uint64) nvml.Return {\n//\t\t\t\tpanic(\"mock out the SetConfComputeUnprotectedMemSize method\")\n//\t\t\t},\n//\t\t\tSetCpuAffinityFunc: func() nvml.Return {\n//\t\t\t\tpanic(\"mock out the SetCpuAffinity method\")\n//\t\t\t},\n//\t\t\tSetDefaultAutoBoostedClocksEnabledFunc: func(enableState nvml.EnableState, v uint32) nvml.Return {\n//\t\t\t\tpanic(\"mock out the SetDefaultAutoBoostedClocksEnabled method\")\n//\t\t\t},\n//\t\t\tSetDefaultFanSpeed_v2Func: func(n int) nvml.Return {\n//\t\t\t\tpanic(\"mock out the SetDefaultFanSpeed_v2 method\")\n//\t\t\t},\n//\t\t\tSetDramEncryptionModeFunc: func(dramEncryptionInfo *nvml.DramEncryptionInfo) nvml.Return {\n//\t\t\t\tpanic(\"mock out the SetDramEncryptionMode method\")\n//\t\t\t},\n//\t\t\tSetDriverModelFunc: func(driverModel nvml.DriverModel, v uint32) nvml.Return {\n//\t\t\t\tpanic(\"mock out the SetDriverModel method\")\n//\t\t\t},\n//\t\t\tSetEccModeFunc: func(enableState nvml.EnableState) nvml.Return {\n//\t\t\t\tpanic(\"mock out the SetEccMode method\")\n//\t\t\t},\n//\t\t\tSetFanControlPolicyFunc: func(n int, fanControlPolicy nvml.FanControlPolicy) nvml.Return {\n//\t\t\t\tpanic(\"mock out the SetFanControlPolicy method\")\n//\t\t\t},\n//\t\t\tSetFanSpeed_v2Func: func(n1 int, n2 int) nvml.Return {\n//\t\t\t\tpanic(\"mock out the SetFanSpeed_v2 method\")\n//\t\t\t},\n//\t\t\tSetGpcClkVfOffsetFunc: func(n int) nvml.Return {\n//\t\t\t\tpanic(\"mock out the SetGpcClkVfOffset method\")\n//\t\t\t},\n//\t\t\tSetGpuLockedClocksFunc: func(v1 uint32, v2 uint32) nvml.Return {\n//\t\t\t\tpanic(\"mock out the SetGpuLockedClocks method\")\n//\t\t\t},\n//\t\t\tSetGpuOperationModeFunc: func(gpuOperationMode nvml.GpuOperationMode) nvml.Return {\n//\t\t\t\tpanic(\"mock out the SetGpuOperationMode method\")\n//\t\t\t},\n//\t\t\tSetMemClkVfOffsetFunc: func(n int) nvml.Return {\n//\t\t\t\tpanic(\"mock out the SetMemClkVfOffset method\")\n//\t\t\t},\n//\t\t\tSetMemoryLockedClocksFunc: func(v1 uint32, v2 uint32) nvml.Return {\n//\t\t\t\tpanic(\"mock out the SetMemoryLockedClocks method\")\n//\t\t\t},\n//\t\t\tSetMigModeFunc: func(n int) (nvml.Return, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the SetMigMode method\")\n//\t\t\t},\n//\t\t\tSetNvLinkDeviceLowPowerThresholdFunc: func(nvLinkPowerThres *nvml.NvLinkPowerThres) nvml.Return {\n//\t\t\t\tpanic(\"mock out the SetNvLinkDeviceLowPowerThreshold method\")\n//\t\t\t},\n//\t\t\tSetNvLinkUtilizationControlFunc: func(n1 int, n2 int, nvLinkUtilizationControl *nvml.NvLinkUtilizationControl, b bool) nvml.Return {\n//\t\t\t\tpanic(\"mock out the SetNvLinkUtilizationControl method\")\n//\t\t\t},\n//\t\t\tSetNvlinkBwModeFunc: func(nvlinkSetBwMode *nvml.NvlinkSetBwMode) nvml.Return {\n//\t\t\t\tpanic(\"mock out the SetNvlinkBwMode method\")\n//\t\t\t},\n//\t\t\tSetPersistenceModeFunc: func(enableState nvml.EnableState) nvml.Return {\n//\t\t\t\tpanic(\"mock out the SetPersistenceMode method\")\n//\t\t\t},\n//\t\t\tSetPowerManagementLimitFunc: func(v uint32) nvml.Return {\n//\t\t\t\tpanic(\"mock out the SetPowerManagementLimit method\")\n//\t\t\t},\n//\t\t\tSetPowerManagementLimit_v2Func: func(powerValue_v2 *nvml.PowerValue_v2) nvml.Return {\n//\t\t\t\tpanic(\"mock out the SetPowerManagementLimit_v2 method\")\n//\t\t\t},\n//\t\t\tSetTemperatureThresholdFunc: func(temperatureThresholds nvml.TemperatureThresholds, n int) nvml.Return {\n//\t\t\t\tpanic(\"mock out the SetTemperatureThreshold method\")\n//\t\t\t},\n//\t\t\tSetVgpuCapabilitiesFunc: func(deviceVgpuCapability nvml.DeviceVgpuCapability, enableState nvml.EnableState) nvml.Return {\n//\t\t\t\tpanic(\"mock out the SetVgpuCapabilities method\")\n//\t\t\t},\n//\t\t\tSetVgpuHeterogeneousModeFunc: func(vgpuHeterogeneousMode nvml.VgpuHeterogeneousMode) nvml.Return {\n//\t\t\t\tpanic(\"mock out the SetVgpuHeterogeneousMode method\")\n//\t\t\t},\n//\t\t\tSetVgpuSchedulerStateFunc: func(vgpuSchedulerSetState *nvml.VgpuSchedulerSetState) nvml.Return {\n//\t\t\t\tpanic(\"mock out the SetVgpuSchedulerState method\")\n//\t\t\t},\n//\t\t\tSetVirtualizationModeFunc: func(gpuVirtualizationMode nvml.GpuVirtualizationMode) nvml.Return {\n//\t\t\t\tpanic(\"mock out the SetVirtualizationMode method\")\n//\t\t\t},\n//\t\t\tValidateInforomFunc: func() nvml.Return {\n//\t\t\t\tpanic(\"mock out the ValidateInforom method\")\n//\t\t\t},\n//\t\t\tVgpuTypeGetMaxInstancesFunc: func(vgpuTypeId nvml.VgpuTypeId) (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the VgpuTypeGetMaxInstances method\")\n//\t\t\t},\n//\t\t\tWorkloadPowerProfileClearRequestedProfilesFunc: func(workloadPowerProfileRequestedProfiles *nvml.WorkloadPowerProfileRequestedProfiles) nvml.Return {\n//\t\t\t\tpanic(\"mock out the WorkloadPowerProfileClearRequestedProfiles method\")\n//\t\t\t},\n//\t\t\tWorkloadPowerProfileGetCurrentProfilesFunc: func() (nvml.WorkloadPowerProfileCurrentProfiles, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the WorkloadPowerProfileGetCurrentProfiles method\")\n//\t\t\t},\n//\t\t\tWorkloadPowerProfileGetProfilesInfoFunc: func() (nvml.WorkloadPowerProfileProfilesInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the WorkloadPowerProfileGetProfilesInfo method\")\n//\t\t\t},\n//\t\t\tWorkloadPowerProfileSetRequestedProfilesFunc: func(workloadPowerProfileRequestedProfiles *nvml.WorkloadPowerProfileRequestedProfiles) nvml.Return {\n//\t\t\t\tpanic(\"mock out the WorkloadPowerProfileSetRequestedProfiles method\")\n//\t\t\t},\n//\t\t}\n//\n//\t\t// use mockedDevice in code that requires nvml.Device\n//\t\t// and then make assertions.\n//\n//\t}\ntype Device struct {\n\t// ClearAccountingPidsFunc mocks the ClearAccountingPids method.\n\tClearAccountingPidsFunc func() nvml.Return\n\n\t// ClearCpuAffinityFunc mocks the ClearCpuAffinity method.\n\tClearCpuAffinityFunc func() nvml.Return\n\n\t// ClearEccErrorCountsFunc mocks the ClearEccErrorCounts method.\n\tClearEccErrorCountsFunc func(eccCounterType nvml.EccCounterType) nvml.Return\n\n\t// ClearFieldValuesFunc mocks the ClearFieldValues method.\n\tClearFieldValuesFunc func(fieldValues []nvml.FieldValue) nvml.Return\n\n\t// CreateGpuInstanceFunc mocks the CreateGpuInstance method.\n\tCreateGpuInstanceFunc func(gpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo) (nvml.GpuInstance, nvml.Return)\n\n\t// CreateGpuInstanceWithPlacementFunc mocks the CreateGpuInstanceWithPlacement method.\n\tCreateGpuInstanceWithPlacementFunc func(gpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo, gpuInstancePlacement *nvml.GpuInstancePlacement) (nvml.GpuInstance, nvml.Return)\n\n\t// FreezeNvLinkUtilizationCounterFunc mocks the FreezeNvLinkUtilizationCounter method.\n\tFreezeNvLinkUtilizationCounterFunc func(n1 int, n2 int, enableState nvml.EnableState) nvml.Return\n\n\t// GetAPIRestrictionFunc mocks the GetAPIRestriction method.\n\tGetAPIRestrictionFunc func(restrictedAPI nvml.RestrictedAPI) (nvml.EnableState, nvml.Return)\n\n\t// GetAccountingBufferSizeFunc mocks the GetAccountingBufferSize method.\n\tGetAccountingBufferSizeFunc func() (int, nvml.Return)\n\n\t// GetAccountingModeFunc mocks the GetAccountingMode method.\n\tGetAccountingModeFunc func() (nvml.EnableState, nvml.Return)\n\n\t// GetAccountingPidsFunc mocks the GetAccountingPids method.\n\tGetAccountingPidsFunc func() ([]int, nvml.Return)\n\n\t// GetAccountingStatsFunc mocks the GetAccountingStats method.\n\tGetAccountingStatsFunc func(v uint32) (nvml.AccountingStats, nvml.Return)\n\n\t// GetActiveVgpusFunc mocks the GetActiveVgpus method.\n\tGetActiveVgpusFunc func() ([]nvml.VgpuInstance, nvml.Return)\n\n\t// GetAdaptiveClockInfoStatusFunc mocks the GetAdaptiveClockInfoStatus method.\n\tGetAdaptiveClockInfoStatusFunc func() (uint32, nvml.Return)\n\n\t// GetAddressingModeFunc mocks the GetAddressingMode method.\n\tGetAddressingModeFunc func() (nvml.DeviceAddressingMode, nvml.Return)\n\n\t// GetApplicationsClockFunc mocks the GetApplicationsClock method.\n\tGetApplicationsClockFunc func(clockType nvml.ClockType) (uint32, nvml.Return)\n\n\t// GetArchitectureFunc mocks the GetArchitecture method.\n\tGetArchitectureFunc func() (nvml.DeviceArchitecture, nvml.Return)\n\n\t// GetAttributesFunc mocks the GetAttributes method.\n\tGetAttributesFunc func() (nvml.DeviceAttributes, nvml.Return)\n\n\t// GetAutoBoostedClocksEnabledFunc mocks the GetAutoBoostedClocksEnabled method.\n\tGetAutoBoostedClocksEnabledFunc func() (nvml.EnableState, nvml.EnableState, nvml.Return)\n\n\t// GetBAR1MemoryInfoFunc mocks the GetBAR1MemoryInfo method.\n\tGetBAR1MemoryInfoFunc func() (nvml.BAR1Memory, nvml.Return)\n\n\t// GetBoardIdFunc mocks the GetBoardId method.\n\tGetBoardIdFunc func() (uint32, nvml.Return)\n\n\t// GetBoardPartNumberFunc mocks the GetBoardPartNumber method.\n\tGetBoardPartNumberFunc func() (string, nvml.Return)\n\n\t// GetBrandFunc mocks the GetBrand method.\n\tGetBrandFunc func() (nvml.BrandType, nvml.Return)\n\n\t// GetBridgeChipInfoFunc mocks the GetBridgeChipInfo method.\n\tGetBridgeChipInfoFunc func() (nvml.BridgeChipHierarchy, nvml.Return)\n\n\t// GetBusTypeFunc mocks the GetBusType method.\n\tGetBusTypeFunc func() (nvml.BusType, nvml.Return)\n\n\t// GetC2cModeInfoVFunc mocks the GetC2cModeInfoV method.\n\tGetC2cModeInfoVFunc func() nvml.C2cModeInfoHandler\n\n\t// GetCapabilitiesFunc mocks the GetCapabilities method.\n\tGetCapabilitiesFunc func() (nvml.DeviceCapabilities, nvml.Return)\n\n\t// GetClkMonStatusFunc mocks the GetClkMonStatus method.\n\tGetClkMonStatusFunc func() (nvml.ClkMonStatus, nvml.Return)\n\n\t// GetClockFunc mocks the GetClock method.\n\tGetClockFunc func(clockType nvml.ClockType, clockId nvml.ClockId) (uint32, nvml.Return)\n\n\t// GetClockInfoFunc mocks the GetClockInfo method.\n\tGetClockInfoFunc func(clockType nvml.ClockType) (uint32, nvml.Return)\n\n\t// GetClockOffsetsFunc mocks the GetClockOffsets method.\n\tGetClockOffsetsFunc func() (nvml.ClockOffset, nvml.Return)\n\n\t// GetComputeInstanceIdFunc mocks the GetComputeInstanceId method.\n\tGetComputeInstanceIdFunc func() (int, nvml.Return)\n\n\t// GetComputeModeFunc mocks the GetComputeMode method.\n\tGetComputeModeFunc func() (nvml.ComputeMode, nvml.Return)\n\n\t// GetComputeRunningProcessesFunc mocks the GetComputeRunningProcesses method.\n\tGetComputeRunningProcessesFunc func() ([]nvml.ProcessInfo, nvml.Return)\n\n\t// GetConfComputeGpuAttestationReportFunc mocks the GetConfComputeGpuAttestationReport method.\n\tGetConfComputeGpuAttestationReportFunc func(confComputeGpuAttestationReport *nvml.ConfComputeGpuAttestationReport) nvml.Return\n\n\t// GetConfComputeGpuCertificateFunc mocks the GetConfComputeGpuCertificate method.\n\tGetConfComputeGpuCertificateFunc func() (nvml.ConfComputeGpuCertificate, nvml.Return)\n\n\t// GetConfComputeMemSizeInfoFunc mocks the GetConfComputeMemSizeInfo method.\n\tGetConfComputeMemSizeInfoFunc func() (nvml.ConfComputeMemSizeInfo, nvml.Return)\n\n\t// GetConfComputeProtectedMemoryUsageFunc mocks the GetConfComputeProtectedMemoryUsage method.\n\tGetConfComputeProtectedMemoryUsageFunc func() (nvml.Memory, nvml.Return)\n\n\t// GetCoolerInfoFunc mocks the GetCoolerInfo method.\n\tGetCoolerInfoFunc func() (nvml.CoolerInfo, nvml.Return)\n\n\t// GetCpuAffinityFunc mocks the GetCpuAffinity method.\n\tGetCpuAffinityFunc func(n int) ([]uint, nvml.Return)\n\n\t// GetCpuAffinityWithinScopeFunc mocks the GetCpuAffinityWithinScope method.\n\tGetCpuAffinityWithinScopeFunc func(n int, affinityScope nvml.AffinityScope) ([]uint, nvml.Return)\n\n\t// GetCreatableVgpusFunc mocks the GetCreatableVgpus method.\n\tGetCreatableVgpusFunc func() ([]nvml.VgpuTypeId, nvml.Return)\n\n\t// GetCudaComputeCapabilityFunc mocks the GetCudaComputeCapability method.\n\tGetCudaComputeCapabilityFunc func() (int, int, nvml.Return)\n\n\t// GetCurrPcieLinkGenerationFunc mocks the GetCurrPcieLinkGeneration method.\n\tGetCurrPcieLinkGenerationFunc func() (int, nvml.Return)\n\n\t// GetCurrPcieLinkWidthFunc mocks the GetCurrPcieLinkWidth method.\n\tGetCurrPcieLinkWidthFunc func() (int, nvml.Return)\n\n\t// GetCurrentClockFreqsFunc mocks the GetCurrentClockFreqs method.\n\tGetCurrentClockFreqsFunc func() (nvml.DeviceCurrentClockFreqs, nvml.Return)\n\n\t// GetCurrentClocksEventReasonsFunc mocks the GetCurrentClocksEventReasons method.\n\tGetCurrentClocksEventReasonsFunc func() (uint64, nvml.Return)\n\n\t// GetCurrentClocksThrottleReasonsFunc mocks the GetCurrentClocksThrottleReasons method.\n\tGetCurrentClocksThrottleReasonsFunc func() (uint64, nvml.Return)\n\n\t// GetDecoderUtilizationFunc mocks the GetDecoderUtilization method.\n\tGetDecoderUtilizationFunc func() (uint32, uint32, nvml.Return)\n\n\t// GetDefaultApplicationsClockFunc mocks the GetDefaultApplicationsClock method.\n\tGetDefaultApplicationsClockFunc func(clockType nvml.ClockType) (uint32, nvml.Return)\n\n\t// GetDefaultEccModeFunc mocks the GetDefaultEccMode method.\n\tGetDefaultEccModeFunc func() (nvml.EnableState, nvml.Return)\n\n\t// GetDetailedEccErrorsFunc mocks the GetDetailedEccErrors method.\n\tGetDetailedEccErrorsFunc func(memoryErrorType nvml.MemoryErrorType, eccCounterType nvml.EccCounterType) (nvml.EccErrorCounts, nvml.Return)\n\n\t// GetDeviceHandleFromMigDeviceHandleFunc mocks the GetDeviceHandleFromMigDeviceHandle method.\n\tGetDeviceHandleFromMigDeviceHandleFunc func() (nvml.Device, nvml.Return)\n\n\t// GetDisplayActiveFunc mocks the GetDisplayActive method.\n\tGetDisplayActiveFunc func() (nvml.EnableState, nvml.Return)\n\n\t// GetDisplayModeFunc mocks the GetDisplayMode method.\n\tGetDisplayModeFunc func() (nvml.EnableState, nvml.Return)\n\n\t// GetDramEncryptionModeFunc mocks the GetDramEncryptionMode method.\n\tGetDramEncryptionModeFunc func() (nvml.DramEncryptionInfo, nvml.DramEncryptionInfo, nvml.Return)\n\n\t// GetDriverModelFunc mocks the GetDriverModel method.\n\tGetDriverModelFunc func() (nvml.DriverModel, nvml.DriverModel, nvml.Return)\n\n\t// GetDriverModel_v2Func mocks the GetDriverModel_v2 method.\n\tGetDriverModel_v2Func func() (nvml.DriverModel, nvml.DriverModel, nvml.Return)\n\n\t// GetDynamicPstatesInfoFunc mocks the GetDynamicPstatesInfo method.\n\tGetDynamicPstatesInfoFunc func() (nvml.GpuDynamicPstatesInfo, nvml.Return)\n\n\t// GetEccModeFunc mocks the GetEccMode method.\n\tGetEccModeFunc func() (nvml.EnableState, nvml.EnableState, nvml.Return)\n\n\t// GetEncoderCapacityFunc mocks the GetEncoderCapacity method.\n\tGetEncoderCapacityFunc func(encoderType nvml.EncoderType) (int, nvml.Return)\n\n\t// GetEncoderSessionsFunc mocks the GetEncoderSessions method.\n\tGetEncoderSessionsFunc func() ([]nvml.EncoderSessionInfo, nvml.Return)\n\n\t// GetEncoderStatsFunc mocks the GetEncoderStats method.\n\tGetEncoderStatsFunc func() (int, uint32, uint32, nvml.Return)\n\n\t// GetEncoderUtilizationFunc mocks the GetEncoderUtilization method.\n\tGetEncoderUtilizationFunc func() (uint32, uint32, nvml.Return)\n\n\t// GetEnforcedPowerLimitFunc mocks the GetEnforcedPowerLimit method.\n\tGetEnforcedPowerLimitFunc func() (uint32, nvml.Return)\n\n\t// GetFBCSessionsFunc mocks the GetFBCSessions method.\n\tGetFBCSessionsFunc func() ([]nvml.FBCSessionInfo, nvml.Return)\n\n\t// GetFBCStatsFunc mocks the GetFBCStats method.\n\tGetFBCStatsFunc func() (nvml.FBCStats, nvml.Return)\n\n\t// GetFanControlPolicy_v2Func mocks the GetFanControlPolicy_v2 method.\n\tGetFanControlPolicy_v2Func func(n int) (nvml.FanControlPolicy, nvml.Return)\n\n\t// GetFanSpeedFunc mocks the GetFanSpeed method.\n\tGetFanSpeedFunc func() (uint32, nvml.Return)\n\n\t// GetFanSpeedRPMFunc mocks the GetFanSpeedRPM method.\n\tGetFanSpeedRPMFunc func() (nvml.FanSpeedInfo, nvml.Return)\n\n\t// GetFanSpeed_v2Func mocks the GetFanSpeed_v2 method.\n\tGetFanSpeed_v2Func func(n int) (uint32, nvml.Return)\n\n\t// GetFieldValuesFunc mocks the GetFieldValues method.\n\tGetFieldValuesFunc func(fieldValues []nvml.FieldValue) nvml.Return\n\n\t// GetGpcClkMinMaxVfOffsetFunc mocks the GetGpcClkMinMaxVfOffset method.\n\tGetGpcClkMinMaxVfOffsetFunc func() (int, int, nvml.Return)\n\n\t// GetGpcClkVfOffsetFunc mocks the GetGpcClkVfOffset method.\n\tGetGpcClkVfOffsetFunc func() (int, nvml.Return)\n\n\t// GetGpuFabricInfoFunc mocks the GetGpuFabricInfo method.\n\tGetGpuFabricInfoFunc func() (nvml.GpuFabricInfo, nvml.Return)\n\n\t// GetGpuFabricInfoVFunc mocks the GetGpuFabricInfoV method.\n\tGetGpuFabricInfoVFunc func() nvml.GpuFabricInfoHandler\n\n\t// GetGpuInstanceByIdFunc mocks the GetGpuInstanceById method.\n\tGetGpuInstanceByIdFunc func(n int) (nvml.GpuInstance, nvml.Return)\n\n\t// GetGpuInstanceIdFunc mocks the GetGpuInstanceId method.\n\tGetGpuInstanceIdFunc func() (int, nvml.Return)\n\n\t// GetGpuInstancePossiblePlacementsFunc mocks the GetGpuInstancePossiblePlacements method.\n\tGetGpuInstancePossiblePlacementsFunc func(gpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo) ([]nvml.GpuInstancePlacement, nvml.Return)\n\n\t// GetGpuInstanceProfileInfoFunc mocks the GetGpuInstanceProfileInfo method.\n\tGetGpuInstanceProfileInfoFunc func(n int) (nvml.GpuInstanceProfileInfo, nvml.Return)\n\n\t// GetGpuInstanceProfileInfoByIdVFunc mocks the GetGpuInstanceProfileInfoByIdV method.\n\tGetGpuInstanceProfileInfoByIdVFunc func(n int) nvml.GpuInstanceProfileInfoByIdHandler\n\n\t// GetGpuInstanceProfileInfoVFunc mocks the GetGpuInstanceProfileInfoV method.\n\tGetGpuInstanceProfileInfoVFunc func(n int) nvml.GpuInstanceProfileInfoHandler\n\n\t// GetGpuInstanceRemainingCapacityFunc mocks the GetGpuInstanceRemainingCapacity method.\n\tGetGpuInstanceRemainingCapacityFunc func(gpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo) (int, nvml.Return)\n\n\t// GetGpuInstancesFunc mocks the GetGpuInstances method.\n\tGetGpuInstancesFunc func(gpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo) ([]nvml.GpuInstance, nvml.Return)\n\n\t// GetGpuMaxPcieLinkGenerationFunc mocks the GetGpuMaxPcieLinkGeneration method.\n\tGetGpuMaxPcieLinkGenerationFunc func() (int, nvml.Return)\n\n\t// GetGpuOperationModeFunc mocks the GetGpuOperationMode method.\n\tGetGpuOperationModeFunc func() (nvml.GpuOperationMode, nvml.GpuOperationMode, nvml.Return)\n\n\t// GetGraphicsRunningProcessesFunc mocks the GetGraphicsRunningProcesses method.\n\tGetGraphicsRunningProcessesFunc func() ([]nvml.ProcessInfo, nvml.Return)\n\n\t// GetGridLicensableFeaturesFunc mocks the GetGridLicensableFeatures method.\n\tGetGridLicensableFeaturesFunc func() (nvml.GridLicensableFeatures, nvml.Return)\n\n\t// GetGspFirmwareModeFunc mocks the GetGspFirmwareMode method.\n\tGetGspFirmwareModeFunc func() (bool, bool, nvml.Return)\n\n\t// GetGspFirmwareVersionFunc mocks the GetGspFirmwareVersion method.\n\tGetGspFirmwareVersionFunc func() (string, nvml.Return)\n\n\t// GetHostVgpuModeFunc mocks the GetHostVgpuMode method.\n\tGetHostVgpuModeFunc func() (nvml.HostVgpuMode, nvml.Return)\n\n\t// GetIndexFunc mocks the GetIndex method.\n\tGetIndexFunc func() (int, nvml.Return)\n\n\t// GetInforomConfigurationChecksumFunc mocks the GetInforomConfigurationChecksum method.\n\tGetInforomConfigurationChecksumFunc func() (uint32, nvml.Return)\n\n\t// GetInforomImageVersionFunc mocks the GetInforomImageVersion method.\n\tGetInforomImageVersionFunc func() (string, nvml.Return)\n\n\t// GetInforomVersionFunc mocks the GetInforomVersion method.\n\tGetInforomVersionFunc func(inforomObject nvml.InforomObject) (string, nvml.Return)\n\n\t// GetIrqNumFunc mocks the GetIrqNum method.\n\tGetIrqNumFunc func() (int, nvml.Return)\n\n\t// GetJpgUtilizationFunc mocks the GetJpgUtilization method.\n\tGetJpgUtilizationFunc func() (uint32, uint32, nvml.Return)\n\n\t// GetLastBBXFlushTimeFunc mocks the GetLastBBXFlushTime method.\n\tGetLastBBXFlushTimeFunc func() (uint64, uint, nvml.Return)\n\n\t// GetMPSComputeRunningProcessesFunc mocks the GetMPSComputeRunningProcesses method.\n\tGetMPSComputeRunningProcessesFunc func() ([]nvml.ProcessInfo, nvml.Return)\n\n\t// GetMarginTemperatureFunc mocks the GetMarginTemperature method.\n\tGetMarginTemperatureFunc func() (nvml.MarginTemperature, nvml.Return)\n\n\t// GetMaxClockInfoFunc mocks the GetMaxClockInfo method.\n\tGetMaxClockInfoFunc func(clockType nvml.ClockType) (uint32, nvml.Return)\n\n\t// GetMaxCustomerBoostClockFunc mocks the GetMaxCustomerBoostClock method.\n\tGetMaxCustomerBoostClockFunc func(clockType nvml.ClockType) (uint32, nvml.Return)\n\n\t// GetMaxMigDeviceCountFunc mocks the GetMaxMigDeviceCount method.\n\tGetMaxMigDeviceCountFunc func() (int, nvml.Return)\n\n\t// GetMaxPcieLinkGenerationFunc mocks the GetMaxPcieLinkGeneration method.\n\tGetMaxPcieLinkGenerationFunc func() (int, nvml.Return)\n\n\t// GetMaxPcieLinkWidthFunc mocks the GetMaxPcieLinkWidth method.\n\tGetMaxPcieLinkWidthFunc func() (int, nvml.Return)\n\n\t// GetMemClkMinMaxVfOffsetFunc mocks the GetMemClkMinMaxVfOffset method.\n\tGetMemClkMinMaxVfOffsetFunc func() (int, int, nvml.Return)\n\n\t// GetMemClkVfOffsetFunc mocks the GetMemClkVfOffset method.\n\tGetMemClkVfOffsetFunc func() (int, nvml.Return)\n\n\t// GetMemoryAffinityFunc mocks the GetMemoryAffinity method.\n\tGetMemoryAffinityFunc func(n int, affinityScope nvml.AffinityScope) ([]uint, nvml.Return)\n\n\t// GetMemoryBusWidthFunc mocks the GetMemoryBusWidth method.\n\tGetMemoryBusWidthFunc func() (uint32, nvml.Return)\n\n\t// GetMemoryErrorCounterFunc mocks the GetMemoryErrorCounter method.\n\tGetMemoryErrorCounterFunc func(memoryErrorType nvml.MemoryErrorType, eccCounterType nvml.EccCounterType, memoryLocation nvml.MemoryLocation) (uint64, nvml.Return)\n\n\t// GetMemoryInfoFunc mocks the GetMemoryInfo method.\n\tGetMemoryInfoFunc func() (nvml.Memory, nvml.Return)\n\n\t// GetMemoryInfo_v2Func mocks the GetMemoryInfo_v2 method.\n\tGetMemoryInfo_v2Func func() (nvml.Memory_v2, nvml.Return)\n\n\t// GetMigDeviceHandleByIndexFunc mocks the GetMigDeviceHandleByIndex method.\n\tGetMigDeviceHandleByIndexFunc func(n int) (nvml.Device, nvml.Return)\n\n\t// GetMigModeFunc mocks the GetMigMode method.\n\tGetMigModeFunc func() (int, int, nvml.Return)\n\n\t// GetMinMaxClockOfPStateFunc mocks the GetMinMaxClockOfPState method.\n\tGetMinMaxClockOfPStateFunc func(clockType nvml.ClockType, pstates nvml.Pstates) (uint32, uint32, nvml.Return)\n\n\t// GetMinMaxFanSpeedFunc mocks the GetMinMaxFanSpeed method.\n\tGetMinMaxFanSpeedFunc func() (int, int, nvml.Return)\n\n\t// GetMinorNumberFunc mocks the GetMinorNumber method.\n\tGetMinorNumberFunc func() (int, nvml.Return)\n\n\t// GetModuleIdFunc mocks the GetModuleId method.\n\tGetModuleIdFunc func() (int, nvml.Return)\n\n\t// GetMultiGpuBoardFunc mocks the GetMultiGpuBoard method.\n\tGetMultiGpuBoardFunc func() (int, nvml.Return)\n\n\t// GetNameFunc mocks the GetName method.\n\tGetNameFunc func() (string, nvml.Return)\n\n\t// GetNumFansFunc mocks the GetNumFans method.\n\tGetNumFansFunc func() (int, nvml.Return)\n\n\t// GetNumGpuCoresFunc mocks the GetNumGpuCores method.\n\tGetNumGpuCoresFunc func() (int, nvml.Return)\n\n\t// GetNumaNodeIdFunc mocks the GetNumaNodeId method.\n\tGetNumaNodeIdFunc func() (int, nvml.Return)\n\n\t// GetNvLinkCapabilityFunc mocks the GetNvLinkCapability method.\n\tGetNvLinkCapabilityFunc func(n int, nvLinkCapability nvml.NvLinkCapability) (uint32, nvml.Return)\n\n\t// GetNvLinkErrorCounterFunc mocks the GetNvLinkErrorCounter method.\n\tGetNvLinkErrorCounterFunc func(n int, nvLinkErrorCounter nvml.NvLinkErrorCounter) (uint64, nvml.Return)\n\n\t// GetNvLinkInfoFunc mocks the GetNvLinkInfo method.\n\tGetNvLinkInfoFunc func() nvml.NvLinkInfoHandler\n\n\t// GetNvLinkRemoteDeviceTypeFunc mocks the GetNvLinkRemoteDeviceType method.\n\tGetNvLinkRemoteDeviceTypeFunc func(n int) (nvml.IntNvLinkDeviceType, nvml.Return)\n\n\t// GetNvLinkRemotePciInfoFunc mocks the GetNvLinkRemotePciInfo method.\n\tGetNvLinkRemotePciInfoFunc func(n int) (nvml.PciInfo, nvml.Return)\n\n\t// GetNvLinkStateFunc mocks the GetNvLinkState method.\n\tGetNvLinkStateFunc func(n int) (nvml.EnableState, nvml.Return)\n\n\t// GetNvLinkUtilizationControlFunc mocks the GetNvLinkUtilizationControl method.\n\tGetNvLinkUtilizationControlFunc func(n1 int, n2 int) (nvml.NvLinkUtilizationControl, nvml.Return)\n\n\t// GetNvLinkUtilizationCounterFunc mocks the GetNvLinkUtilizationCounter method.\n\tGetNvLinkUtilizationCounterFunc func(n1 int, n2 int) (uint64, uint64, nvml.Return)\n\n\t// GetNvLinkVersionFunc mocks the GetNvLinkVersion method.\n\tGetNvLinkVersionFunc func(n int) (uint32, nvml.Return)\n\n\t// GetNvlinkBwModeFunc mocks the GetNvlinkBwMode method.\n\tGetNvlinkBwModeFunc func() (nvml.NvlinkGetBwMode, nvml.Return)\n\n\t// GetNvlinkSupportedBwModesFunc mocks the GetNvlinkSupportedBwModes method.\n\tGetNvlinkSupportedBwModesFunc func() (nvml.NvlinkSupportedBwModes, nvml.Return)\n\n\t// GetOfaUtilizationFunc mocks the GetOfaUtilization method.\n\tGetOfaUtilizationFunc func() (uint32, uint32, nvml.Return)\n\n\t// GetP2PStatusFunc mocks the GetP2PStatus method.\n\tGetP2PStatusFunc func(device nvml.Device, gpuP2PCapsIndex nvml.GpuP2PCapsIndex) (nvml.GpuP2PStatus, nvml.Return)\n\n\t// GetPciInfoFunc mocks the GetPciInfo method.\n\tGetPciInfoFunc func() (nvml.PciInfo, nvml.Return)\n\n\t// GetPciInfoExtFunc mocks the GetPciInfoExt method.\n\tGetPciInfoExtFunc func() (nvml.PciInfoExt, nvml.Return)\n\n\t// GetPcieLinkMaxSpeedFunc mocks the GetPcieLinkMaxSpeed method.\n\tGetPcieLinkMaxSpeedFunc func() (uint32, nvml.Return)\n\n\t// GetPcieReplayCounterFunc mocks the GetPcieReplayCounter method.\n\tGetPcieReplayCounterFunc func() (int, nvml.Return)\n\n\t// GetPcieSpeedFunc mocks the GetPcieSpeed method.\n\tGetPcieSpeedFunc func() (int, nvml.Return)\n\n\t// GetPcieThroughputFunc mocks the GetPcieThroughput method.\n\tGetPcieThroughputFunc func(pcieUtilCounter nvml.PcieUtilCounter) (uint32, nvml.Return)\n\n\t// GetPdiFunc mocks the GetPdi method.\n\tGetPdiFunc func() (nvml.Pdi, nvml.Return)\n\n\t// GetPerformanceModesFunc mocks the GetPerformanceModes method.\n\tGetPerformanceModesFunc func() (nvml.DevicePerfModes, nvml.Return)\n\n\t// GetPerformanceStateFunc mocks the GetPerformanceState method.\n\tGetPerformanceStateFunc func() (nvml.Pstates, nvml.Return)\n\n\t// GetPersistenceModeFunc mocks the GetPersistenceMode method.\n\tGetPersistenceModeFunc func() (nvml.EnableState, nvml.Return)\n\n\t// GetPgpuMetadataStringFunc mocks the GetPgpuMetadataString method.\n\tGetPgpuMetadataStringFunc func() (string, nvml.Return)\n\n\t// GetPlatformInfoFunc mocks the GetPlatformInfo method.\n\tGetPlatformInfoFunc func() (nvml.PlatformInfo, nvml.Return)\n\n\t// GetPowerManagementDefaultLimitFunc mocks the GetPowerManagementDefaultLimit method.\n\tGetPowerManagementDefaultLimitFunc func() (uint32, nvml.Return)\n\n\t// GetPowerManagementLimitFunc mocks the GetPowerManagementLimit method.\n\tGetPowerManagementLimitFunc func() (uint32, nvml.Return)\n\n\t// GetPowerManagementLimitConstraintsFunc mocks the GetPowerManagementLimitConstraints method.\n\tGetPowerManagementLimitConstraintsFunc func() (uint32, uint32, nvml.Return)\n\n\t// GetPowerManagementModeFunc mocks the GetPowerManagementMode method.\n\tGetPowerManagementModeFunc func() (nvml.EnableState, nvml.Return)\n\n\t// GetPowerMizerMode_v1Func mocks the GetPowerMizerMode_v1 method.\n\tGetPowerMizerMode_v1Func func() (nvml.DevicePowerMizerModes_v1, nvml.Return)\n\n\t// GetPowerSourceFunc mocks the GetPowerSource method.\n\tGetPowerSourceFunc func() (nvml.PowerSource, nvml.Return)\n\n\t// GetPowerStateFunc mocks the GetPowerState method.\n\tGetPowerStateFunc func() (nvml.Pstates, nvml.Return)\n\n\t// GetPowerUsageFunc mocks the GetPowerUsage method.\n\tGetPowerUsageFunc func() (uint32, nvml.Return)\n\n\t// GetProcessUtilizationFunc mocks the GetProcessUtilization method.\n\tGetProcessUtilizationFunc func(v uint64) ([]nvml.ProcessUtilizationSample, nvml.Return)\n\n\t// GetProcessesUtilizationInfoFunc mocks the GetProcessesUtilizationInfo method.\n\tGetProcessesUtilizationInfoFunc func() (nvml.ProcessesUtilizationInfo, nvml.Return)\n\n\t// GetRemappedRowsFunc mocks the GetRemappedRows method.\n\tGetRemappedRowsFunc func() (int, int, bool, bool, nvml.Return)\n\n\t// GetRepairStatusFunc mocks the GetRepairStatus method.\n\tGetRepairStatusFunc func() (nvml.RepairStatus, nvml.Return)\n\n\t// GetRetiredPagesFunc mocks the GetRetiredPages method.\n\tGetRetiredPagesFunc func(pageRetirementCause nvml.PageRetirementCause) ([]uint64, nvml.Return)\n\n\t// GetRetiredPagesPendingStatusFunc mocks the GetRetiredPagesPendingStatus method.\n\tGetRetiredPagesPendingStatusFunc func() (nvml.EnableState, nvml.Return)\n\n\t// GetRetiredPages_v2Func mocks the GetRetiredPages_v2 method.\n\tGetRetiredPages_v2Func func(pageRetirementCause nvml.PageRetirementCause) ([]uint64, []uint64, nvml.Return)\n\n\t// GetRowRemapperHistogramFunc mocks the GetRowRemapperHistogram method.\n\tGetRowRemapperHistogramFunc func() (nvml.RowRemapperHistogramValues, nvml.Return)\n\n\t// GetRunningProcessDetailListFunc mocks the GetRunningProcessDetailList method.\n\tGetRunningProcessDetailListFunc func() (nvml.ProcessDetailList, nvml.Return)\n\n\t// GetSamplesFunc mocks the GetSamples method.\n\tGetSamplesFunc func(samplingType nvml.SamplingType, v uint64) (nvml.ValueType, []nvml.Sample, nvml.Return)\n\n\t// GetSerialFunc mocks the GetSerial method.\n\tGetSerialFunc func() (string, nvml.Return)\n\n\t// GetSramEccErrorStatusFunc mocks the GetSramEccErrorStatus method.\n\tGetSramEccErrorStatusFunc func() (nvml.EccSramErrorStatus, nvml.Return)\n\n\t// GetSramUniqueUncorrectedEccErrorCountsFunc mocks the GetSramUniqueUncorrectedEccErrorCounts method.\n\tGetSramUniqueUncorrectedEccErrorCountsFunc func(eccSramUniqueUncorrectedErrorCounts *nvml.EccSramUniqueUncorrectedErrorCounts) nvml.Return\n\n\t// GetSupportedClocksEventReasonsFunc mocks the GetSupportedClocksEventReasons method.\n\tGetSupportedClocksEventReasonsFunc func() (uint64, nvml.Return)\n\n\t// GetSupportedClocksThrottleReasonsFunc mocks the GetSupportedClocksThrottleReasons method.\n\tGetSupportedClocksThrottleReasonsFunc func() (uint64, nvml.Return)\n\n\t// GetSupportedEventTypesFunc mocks the GetSupportedEventTypes method.\n\tGetSupportedEventTypesFunc func() (uint64, nvml.Return)\n\n\t// GetSupportedGraphicsClocksFunc mocks the GetSupportedGraphicsClocks method.\n\tGetSupportedGraphicsClocksFunc func(n int) (int, uint32, nvml.Return)\n\n\t// GetSupportedMemoryClocksFunc mocks the GetSupportedMemoryClocks method.\n\tGetSupportedMemoryClocksFunc func() (int, uint32, nvml.Return)\n\n\t// GetSupportedPerformanceStatesFunc mocks the GetSupportedPerformanceStates method.\n\tGetSupportedPerformanceStatesFunc func() ([]nvml.Pstates, nvml.Return)\n\n\t// GetSupportedVgpusFunc mocks the GetSupportedVgpus method.\n\tGetSupportedVgpusFunc func() ([]nvml.VgpuTypeId, nvml.Return)\n\n\t// GetTargetFanSpeedFunc mocks the GetTargetFanSpeed method.\n\tGetTargetFanSpeedFunc func(n int) (int, nvml.Return)\n\n\t// GetTemperatureFunc mocks the GetTemperature method.\n\tGetTemperatureFunc func(temperatureSensors nvml.TemperatureSensors) (uint32, nvml.Return)\n\n\t// GetTemperatureThresholdFunc mocks the GetTemperatureThreshold method.\n\tGetTemperatureThresholdFunc func(temperatureThresholds nvml.TemperatureThresholds) (uint32, nvml.Return)\n\n\t// GetTemperatureVFunc mocks the GetTemperatureV method.\n\tGetTemperatureVFunc func() nvml.TemperatureHandler\n\n\t// GetThermalSettingsFunc mocks the GetThermalSettings method.\n\tGetThermalSettingsFunc func(v uint32) (nvml.GpuThermalSettings, nvml.Return)\n\n\t// GetTopologyCommonAncestorFunc mocks the GetTopologyCommonAncestor method.\n\tGetTopologyCommonAncestorFunc func(device nvml.Device) (nvml.GpuTopologyLevel, nvml.Return)\n\n\t// GetTopologyNearestGpusFunc mocks the GetTopologyNearestGpus method.\n\tGetTopologyNearestGpusFunc func(gpuTopologyLevel nvml.GpuTopologyLevel) ([]nvml.Device, nvml.Return)\n\n\t// GetTotalEccErrorsFunc mocks the GetTotalEccErrors method.\n\tGetTotalEccErrorsFunc func(memoryErrorType nvml.MemoryErrorType, eccCounterType nvml.EccCounterType) (uint64, nvml.Return)\n\n\t// GetTotalEnergyConsumptionFunc mocks the GetTotalEnergyConsumption method.\n\tGetTotalEnergyConsumptionFunc func() (uint64, nvml.Return)\n\n\t// GetUUIDFunc mocks the GetUUID method.\n\tGetUUIDFunc func() (string, nvml.Return)\n\n\t// GetUtilizationRatesFunc mocks the GetUtilizationRates method.\n\tGetUtilizationRatesFunc func() (nvml.Utilization, nvml.Return)\n\n\t// GetVbiosVersionFunc mocks the GetVbiosVersion method.\n\tGetVbiosVersionFunc func() (string, nvml.Return)\n\n\t// GetVgpuCapabilitiesFunc mocks the GetVgpuCapabilities method.\n\tGetVgpuCapabilitiesFunc func(deviceVgpuCapability nvml.DeviceVgpuCapability) (bool, nvml.Return)\n\n\t// GetVgpuHeterogeneousModeFunc mocks the GetVgpuHeterogeneousMode method.\n\tGetVgpuHeterogeneousModeFunc func() (nvml.VgpuHeterogeneousMode, nvml.Return)\n\n\t// GetVgpuInstancesUtilizationInfoFunc mocks the GetVgpuInstancesUtilizationInfo method.\n\tGetVgpuInstancesUtilizationInfoFunc func() (nvml.VgpuInstancesUtilizationInfo, nvml.Return)\n\n\t// GetVgpuMetadataFunc mocks the GetVgpuMetadata method.\n\tGetVgpuMetadataFunc func() (nvml.VgpuPgpuMetadata, nvml.Return)\n\n\t// GetVgpuProcessUtilizationFunc mocks the GetVgpuProcessUtilization method.\n\tGetVgpuProcessUtilizationFunc func(v uint64) ([]nvml.VgpuProcessUtilizationSample, nvml.Return)\n\n\t// GetVgpuProcessesUtilizationInfoFunc mocks the GetVgpuProcessesUtilizationInfo method.\n\tGetVgpuProcessesUtilizationInfoFunc func() (nvml.VgpuProcessesUtilizationInfo, nvml.Return)\n\n\t// GetVgpuSchedulerCapabilitiesFunc mocks the GetVgpuSchedulerCapabilities method.\n\tGetVgpuSchedulerCapabilitiesFunc func() (nvml.VgpuSchedulerCapabilities, nvml.Return)\n\n\t// GetVgpuSchedulerLogFunc mocks the GetVgpuSchedulerLog method.\n\tGetVgpuSchedulerLogFunc func() (nvml.VgpuSchedulerLog, nvml.Return)\n\n\t// GetVgpuSchedulerStateFunc mocks the GetVgpuSchedulerState method.\n\tGetVgpuSchedulerStateFunc func() (nvml.VgpuSchedulerGetState, nvml.Return)\n\n\t// GetVgpuTypeCreatablePlacementsFunc mocks the GetVgpuTypeCreatablePlacements method.\n\tGetVgpuTypeCreatablePlacementsFunc func(vgpuTypeId nvml.VgpuTypeId) (nvml.VgpuPlacementList, nvml.Return)\n\n\t// GetVgpuTypeSupportedPlacementsFunc mocks the GetVgpuTypeSupportedPlacements method.\n\tGetVgpuTypeSupportedPlacementsFunc func(vgpuTypeId nvml.VgpuTypeId) (nvml.VgpuPlacementList, nvml.Return)\n\n\t// GetVgpuUtilizationFunc mocks the GetVgpuUtilization method.\n\tGetVgpuUtilizationFunc func(v uint64) (nvml.ValueType, []nvml.VgpuInstanceUtilizationSample, nvml.Return)\n\n\t// GetViolationStatusFunc mocks the GetViolationStatus method.\n\tGetViolationStatusFunc func(perfPolicyType nvml.PerfPolicyType) (nvml.ViolationTime, nvml.Return)\n\n\t// GetVirtualizationModeFunc mocks the GetVirtualizationMode method.\n\tGetVirtualizationModeFunc func() (nvml.GpuVirtualizationMode, nvml.Return)\n\n\t// GpmMigSampleGetFunc mocks the GpmMigSampleGet method.\n\tGpmMigSampleGetFunc func(n int, gpmSample nvml.GpmSample) nvml.Return\n\n\t// GpmQueryDeviceSupportFunc mocks the GpmQueryDeviceSupport method.\n\tGpmQueryDeviceSupportFunc func() (nvml.GpmSupport, nvml.Return)\n\n\t// GpmQueryDeviceSupportVFunc mocks the GpmQueryDeviceSupportV method.\n\tGpmQueryDeviceSupportVFunc func() nvml.GpmSupportV\n\n\t// GpmQueryIfStreamingEnabledFunc mocks the GpmQueryIfStreamingEnabled method.\n\tGpmQueryIfStreamingEnabledFunc func() (uint32, nvml.Return)\n\n\t// GpmSampleGetFunc mocks the GpmSampleGet method.\n\tGpmSampleGetFunc func(gpmSample nvml.GpmSample) nvml.Return\n\n\t// GpmSetStreamingEnabledFunc mocks the GpmSetStreamingEnabled method.\n\tGpmSetStreamingEnabledFunc func(v uint32) nvml.Return\n\n\t// IsMigDeviceHandleFunc mocks the IsMigDeviceHandle method.\n\tIsMigDeviceHandleFunc func() (bool, nvml.Return)\n\n\t// OnSameBoardFunc mocks the OnSameBoard method.\n\tOnSameBoardFunc func(device nvml.Device) (int, nvml.Return)\n\n\t// PowerSmoothingActivatePresetProfileFunc mocks the PowerSmoothingActivatePresetProfile method.\n\tPowerSmoothingActivatePresetProfileFunc func(powerSmoothingProfile *nvml.PowerSmoothingProfile) nvml.Return\n\n\t// PowerSmoothingSetStateFunc mocks the PowerSmoothingSetState method.\n\tPowerSmoothingSetStateFunc func(powerSmoothingState *nvml.PowerSmoothingState) nvml.Return\n\n\t// PowerSmoothingUpdatePresetProfileParamFunc mocks the PowerSmoothingUpdatePresetProfileParam method.\n\tPowerSmoothingUpdatePresetProfileParamFunc func(powerSmoothingProfile *nvml.PowerSmoothingProfile) nvml.Return\n\n\t// ReadWritePRM_v1Func mocks the ReadWritePRM_v1 method.\n\tReadWritePRM_v1Func func(pRMTLV_v1 *nvml.PRMTLV_v1) nvml.Return\n\n\t// RegisterEventsFunc mocks the RegisterEvents method.\n\tRegisterEventsFunc func(v uint64, eventSet nvml.EventSet) nvml.Return\n\n\t// ResetApplicationsClocksFunc mocks the ResetApplicationsClocks method.\n\tResetApplicationsClocksFunc func() nvml.Return\n\n\t// ResetGpuLockedClocksFunc mocks the ResetGpuLockedClocks method.\n\tResetGpuLockedClocksFunc func() nvml.Return\n\n\t// ResetMemoryLockedClocksFunc mocks the ResetMemoryLockedClocks method.\n\tResetMemoryLockedClocksFunc func() nvml.Return\n\n\t// ResetNvLinkErrorCountersFunc mocks the ResetNvLinkErrorCounters method.\n\tResetNvLinkErrorCountersFunc func(n int) nvml.Return\n\n\t// ResetNvLinkUtilizationCounterFunc mocks the ResetNvLinkUtilizationCounter method.\n\tResetNvLinkUtilizationCounterFunc func(n1 int, n2 int) nvml.Return\n\n\t// SetAPIRestrictionFunc mocks the SetAPIRestriction method.\n\tSetAPIRestrictionFunc func(restrictedAPI nvml.RestrictedAPI, enableState nvml.EnableState) nvml.Return\n\n\t// SetAccountingModeFunc mocks the SetAccountingMode method.\n\tSetAccountingModeFunc func(enableState nvml.EnableState) nvml.Return\n\n\t// SetApplicationsClocksFunc mocks the SetApplicationsClocks method.\n\tSetApplicationsClocksFunc func(v1 uint32, v2 uint32) nvml.Return\n\n\t// SetAutoBoostedClocksEnabledFunc mocks the SetAutoBoostedClocksEnabled method.\n\tSetAutoBoostedClocksEnabledFunc func(enableState nvml.EnableState) nvml.Return\n\n\t// SetClockOffsetsFunc mocks the SetClockOffsets method.\n\tSetClockOffsetsFunc func(clockOffset nvml.ClockOffset) nvml.Return\n\n\t// SetComputeModeFunc mocks the SetComputeMode method.\n\tSetComputeModeFunc func(computeMode nvml.ComputeMode) nvml.Return\n\n\t// SetConfComputeUnprotectedMemSizeFunc mocks the SetConfComputeUnprotectedMemSize method.\n\tSetConfComputeUnprotectedMemSizeFunc func(v uint64) nvml.Return\n\n\t// SetCpuAffinityFunc mocks the SetCpuAffinity method.\n\tSetCpuAffinityFunc func() nvml.Return\n\n\t// SetDefaultAutoBoostedClocksEnabledFunc mocks the SetDefaultAutoBoostedClocksEnabled method.\n\tSetDefaultAutoBoostedClocksEnabledFunc func(enableState nvml.EnableState, v uint32) nvml.Return\n\n\t// SetDefaultFanSpeed_v2Func mocks the SetDefaultFanSpeed_v2 method.\n\tSetDefaultFanSpeed_v2Func func(n int) nvml.Return\n\n\t// SetDramEncryptionModeFunc mocks the SetDramEncryptionMode method.\n\tSetDramEncryptionModeFunc func(dramEncryptionInfo *nvml.DramEncryptionInfo) nvml.Return\n\n\t// SetDriverModelFunc mocks the SetDriverModel method.\n\tSetDriverModelFunc func(driverModel nvml.DriverModel, v uint32) nvml.Return\n\n\t// SetEccModeFunc mocks the SetEccMode method.\n\tSetEccModeFunc func(enableState nvml.EnableState) nvml.Return\n\n\t// SetFanControlPolicyFunc mocks the SetFanControlPolicy method.\n\tSetFanControlPolicyFunc func(n int, fanControlPolicy nvml.FanControlPolicy) nvml.Return\n\n\t// SetFanSpeed_v2Func mocks the SetFanSpeed_v2 method.\n\tSetFanSpeed_v2Func func(n1 int, n2 int) nvml.Return\n\n\t// SetGpcClkVfOffsetFunc mocks the SetGpcClkVfOffset method.\n\tSetGpcClkVfOffsetFunc func(n int) nvml.Return\n\n\t// SetGpuLockedClocksFunc mocks the SetGpuLockedClocks method.\n\tSetGpuLockedClocksFunc func(v1 uint32, v2 uint32) nvml.Return\n\n\t// SetGpuOperationModeFunc mocks the SetGpuOperationMode method.\n\tSetGpuOperationModeFunc func(gpuOperationMode nvml.GpuOperationMode) nvml.Return\n\n\t// SetMemClkVfOffsetFunc mocks the SetMemClkVfOffset method.\n\tSetMemClkVfOffsetFunc func(n int) nvml.Return\n\n\t// SetMemoryLockedClocksFunc mocks the SetMemoryLockedClocks method.\n\tSetMemoryLockedClocksFunc func(v1 uint32, v2 uint32) nvml.Return\n\n\t// SetMigModeFunc mocks the SetMigMode method.\n\tSetMigModeFunc func(n int) (nvml.Return, nvml.Return)\n\n\t// SetNvLinkDeviceLowPowerThresholdFunc mocks the SetNvLinkDeviceLowPowerThreshold method.\n\tSetNvLinkDeviceLowPowerThresholdFunc func(nvLinkPowerThres *nvml.NvLinkPowerThres) nvml.Return\n\n\t// SetNvLinkUtilizationControlFunc mocks the SetNvLinkUtilizationControl method.\n\tSetNvLinkUtilizationControlFunc func(n1 int, n2 int, nvLinkUtilizationControl *nvml.NvLinkUtilizationControl, b bool) nvml.Return\n\n\t// SetNvlinkBwModeFunc mocks the SetNvlinkBwMode method.\n\tSetNvlinkBwModeFunc func(nvlinkSetBwMode *nvml.NvlinkSetBwMode) nvml.Return\n\n\t// SetPersistenceModeFunc mocks the SetPersistenceMode method.\n\tSetPersistenceModeFunc func(enableState nvml.EnableState) nvml.Return\n\n\t// SetPowerManagementLimitFunc mocks the SetPowerManagementLimit method.\n\tSetPowerManagementLimitFunc func(v uint32) nvml.Return\n\n\t// SetPowerManagementLimit_v2Func mocks the SetPowerManagementLimit_v2 method.\n\tSetPowerManagementLimit_v2Func func(powerValue_v2 *nvml.PowerValue_v2) nvml.Return\n\n\t// SetTemperatureThresholdFunc mocks the SetTemperatureThreshold method.\n\tSetTemperatureThresholdFunc func(temperatureThresholds nvml.TemperatureThresholds, n int) nvml.Return\n\n\t// SetVgpuCapabilitiesFunc mocks the SetVgpuCapabilities method.\n\tSetVgpuCapabilitiesFunc func(deviceVgpuCapability nvml.DeviceVgpuCapability, enableState nvml.EnableState) nvml.Return\n\n\t// SetVgpuHeterogeneousModeFunc mocks the SetVgpuHeterogeneousMode method.\n\tSetVgpuHeterogeneousModeFunc func(vgpuHeterogeneousMode nvml.VgpuHeterogeneousMode) nvml.Return\n\n\t// SetVgpuSchedulerStateFunc mocks the SetVgpuSchedulerState method.\n\tSetVgpuSchedulerStateFunc func(vgpuSchedulerSetState *nvml.VgpuSchedulerSetState) nvml.Return\n\n\t// SetVirtualizationModeFunc mocks the SetVirtualizationMode method.\n\tSetVirtualizationModeFunc func(gpuVirtualizationMode nvml.GpuVirtualizationMode) nvml.Return\n\n\t// ValidateInforomFunc mocks the ValidateInforom method.\n\tValidateInforomFunc func() nvml.Return\n\n\t// VgpuTypeGetMaxInstancesFunc mocks the VgpuTypeGetMaxInstances method.\n\tVgpuTypeGetMaxInstancesFunc func(vgpuTypeId nvml.VgpuTypeId) (int, nvml.Return)\n\n\t// WorkloadPowerProfileClearRequestedProfilesFunc mocks the WorkloadPowerProfileClearRequestedProfiles method.\n\tWorkloadPowerProfileClearRequestedProfilesFunc func(workloadPowerProfileRequestedProfiles *nvml.WorkloadPowerProfileRequestedProfiles) nvml.Return\n\n\t// WorkloadPowerProfileGetCurrentProfilesFunc mocks the WorkloadPowerProfileGetCurrentProfiles method.\n\tWorkloadPowerProfileGetCurrentProfilesFunc func() (nvml.WorkloadPowerProfileCurrentProfiles, nvml.Return)\n\n\t// WorkloadPowerProfileGetProfilesInfoFunc mocks the WorkloadPowerProfileGetProfilesInfo method.\n\tWorkloadPowerProfileGetProfilesInfoFunc func() (nvml.WorkloadPowerProfileProfilesInfo, nvml.Return)\n\n\t// WorkloadPowerProfileSetRequestedProfilesFunc mocks the WorkloadPowerProfileSetRequestedProfiles method.\n\tWorkloadPowerProfileSetRequestedProfilesFunc func(workloadPowerProfileRequestedProfiles *nvml.WorkloadPowerProfileRequestedProfiles) nvml.Return\n\n\t// calls tracks calls to the methods.\n\tcalls struct {\n\t\t// ClearAccountingPids holds details about calls to the ClearAccountingPids method.\n\t\tClearAccountingPids []struct {\n\t\t}\n\t\t// ClearCpuAffinity holds details about calls to the ClearCpuAffinity method.\n\t\tClearCpuAffinity []struct {\n\t\t}\n\t\t// ClearEccErrorCounts holds details about calls to the ClearEccErrorCounts method.\n\t\tClearEccErrorCounts []struct {\n\t\t\t// EccCounterType is the eccCounterType argument value.\n\t\t\tEccCounterType nvml.EccCounterType\n\t\t}\n\t\t// ClearFieldValues holds details about calls to the ClearFieldValues method.\n\t\tClearFieldValues []struct {\n\t\t\t// FieldValues is the fieldValues argument value.\n\t\t\tFieldValues []nvml.FieldValue\n\t\t}\n\t\t// CreateGpuInstance holds details about calls to the CreateGpuInstance method.\n\t\tCreateGpuInstance []struct {\n\t\t\t// GpuInstanceProfileInfo is the gpuInstanceProfileInfo argument value.\n\t\t\tGpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo\n\t\t}\n\t\t// CreateGpuInstanceWithPlacement holds details about calls to the CreateGpuInstanceWithPlacement method.\n\t\tCreateGpuInstanceWithPlacement []struct {\n\t\t\t// GpuInstanceProfileInfo is the gpuInstanceProfileInfo argument value.\n\t\t\tGpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo\n\t\t\t// GpuInstancePlacement is the gpuInstancePlacement argument value.\n\t\t\tGpuInstancePlacement *nvml.GpuInstancePlacement\n\t\t}\n\t\t// FreezeNvLinkUtilizationCounter holds details about calls to the FreezeNvLinkUtilizationCounter method.\n\t\tFreezeNvLinkUtilizationCounter []struct {\n\t\t\t// N1 is the n1 argument value.\n\t\t\tN1 int\n\t\t\t// N2 is the n2 argument value.\n\t\t\tN2 int\n\t\t\t// EnableState is the enableState argument value.\n\t\t\tEnableState nvml.EnableState\n\t\t}\n\t\t// GetAPIRestriction holds details about calls to the GetAPIRestriction method.\n\t\tGetAPIRestriction []struct {\n\t\t\t// RestrictedAPI is the restrictedAPI argument value.\n\t\t\tRestrictedAPI nvml.RestrictedAPI\n\t\t}\n\t\t// GetAccountingBufferSize holds details about calls to the GetAccountingBufferSize method.\n\t\tGetAccountingBufferSize []struct {\n\t\t}\n\t\t// GetAccountingMode holds details about calls to the GetAccountingMode method.\n\t\tGetAccountingMode []struct {\n\t\t}\n\t\t// GetAccountingPids holds details about calls to the GetAccountingPids method.\n\t\tGetAccountingPids []struct {\n\t\t}\n\t\t// GetAccountingStats holds details about calls to the GetAccountingStats method.\n\t\tGetAccountingStats []struct {\n\t\t\t// V is the v argument value.\n\t\t\tV uint32\n\t\t}\n\t\t// GetActiveVgpus holds details about calls to the GetActiveVgpus method.\n\t\tGetActiveVgpus []struct {\n\t\t}\n\t\t// GetAdaptiveClockInfoStatus holds details about calls to the GetAdaptiveClockInfoStatus method.\n\t\tGetAdaptiveClockInfoStatus []struct {\n\t\t}\n\t\t// GetAddressingMode holds details about calls to the GetAddressingMode method.\n\t\tGetAddressingMode []struct {\n\t\t}\n\t\t// GetApplicationsClock holds details about calls to the GetApplicationsClock method.\n\t\tGetApplicationsClock []struct {\n\t\t\t// ClockType is the clockType argument value.\n\t\t\tClockType nvml.ClockType\n\t\t}\n\t\t// GetArchitecture holds details about calls to the GetArchitecture method.\n\t\tGetArchitecture []struct {\n\t\t}\n\t\t// GetAttributes holds details about calls to the GetAttributes method.\n\t\tGetAttributes []struct {\n\t\t}\n\t\t// GetAutoBoostedClocksEnabled holds details about calls to the GetAutoBoostedClocksEnabled method.\n\t\tGetAutoBoostedClocksEnabled []struct {\n\t\t}\n\t\t// GetBAR1MemoryInfo holds details about calls to the GetBAR1MemoryInfo method.\n\t\tGetBAR1MemoryInfo []struct {\n\t\t}\n\t\t// GetBoardId holds details about calls to the GetBoardId method.\n\t\tGetBoardId []struct {\n\t\t}\n\t\t// GetBoardPartNumber holds details about calls to the GetBoardPartNumber method.\n\t\tGetBoardPartNumber []struct {\n\t\t}\n\t\t// GetBrand holds details about calls to the GetBrand method.\n\t\tGetBrand []struct {\n\t\t}\n\t\t// GetBridgeChipInfo holds details about calls to the GetBridgeChipInfo method.\n\t\tGetBridgeChipInfo []struct {\n\t\t}\n\t\t// GetBusType holds details about calls to the GetBusType method.\n\t\tGetBusType []struct {\n\t\t}\n\t\t// GetC2cModeInfoV holds details about calls to the GetC2cModeInfoV method.\n\t\tGetC2cModeInfoV []struct {\n\t\t}\n\t\t// GetCapabilities holds details about calls to the GetCapabilities method.\n\t\tGetCapabilities []struct {\n\t\t}\n\t\t// GetClkMonStatus holds details about calls to the GetClkMonStatus method.\n\t\tGetClkMonStatus []struct {\n\t\t}\n\t\t// GetClock holds details about calls to the GetClock method.\n\t\tGetClock []struct {\n\t\t\t// ClockType is the clockType argument value.\n\t\t\tClockType nvml.ClockType\n\t\t\t// ClockId is the clockId argument value.\n\t\t\tClockId nvml.ClockId\n\t\t}\n\t\t// GetClockInfo holds details about calls to the GetClockInfo method.\n\t\tGetClockInfo []struct {\n\t\t\t// ClockType is the clockType argument value.\n\t\t\tClockType nvml.ClockType\n\t\t}\n\t\t// GetClockOffsets holds details about calls to the GetClockOffsets method.\n\t\tGetClockOffsets []struct {\n\t\t}\n\t\t// GetComputeInstanceId holds details about calls to the GetComputeInstanceId method.\n\t\tGetComputeInstanceId []struct {\n\t\t}\n\t\t// GetComputeMode holds details about calls to the GetComputeMode method.\n\t\tGetComputeMode []struct {\n\t\t}\n\t\t// GetComputeRunningProcesses holds details about calls to the GetComputeRunningProcesses method.\n\t\tGetComputeRunningProcesses []struct {\n\t\t}\n\t\t// GetConfComputeGpuAttestationReport holds details about calls to the GetConfComputeGpuAttestationReport method.\n\t\tGetConfComputeGpuAttestationReport []struct {\n\t\t\t// ConfComputeGpuAttestationReport is the confComputeGpuAttestationReport argument value.\n\t\t\tConfComputeGpuAttestationReport *nvml.ConfComputeGpuAttestationReport\n\t\t}\n\t\t// GetConfComputeGpuCertificate holds details about calls to the GetConfComputeGpuCertificate method.\n\t\tGetConfComputeGpuCertificate []struct {\n\t\t}\n\t\t// GetConfComputeMemSizeInfo holds details about calls to the GetConfComputeMemSizeInfo method.\n\t\tGetConfComputeMemSizeInfo []struct {\n\t\t}\n\t\t// GetConfComputeProtectedMemoryUsage holds details about calls to the GetConfComputeProtectedMemoryUsage method.\n\t\tGetConfComputeProtectedMemoryUsage []struct {\n\t\t}\n\t\t// GetCoolerInfo holds details about calls to the GetCoolerInfo method.\n\t\tGetCoolerInfo []struct {\n\t\t}\n\t\t// GetCpuAffinity holds details about calls to the GetCpuAffinity method.\n\t\tGetCpuAffinity []struct {\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t}\n\t\t// GetCpuAffinityWithinScope holds details about calls to the GetCpuAffinityWithinScope method.\n\t\tGetCpuAffinityWithinScope []struct {\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t\t// AffinityScope is the affinityScope argument value.\n\t\t\tAffinityScope nvml.AffinityScope\n\t\t}\n\t\t// GetCreatableVgpus holds details about calls to the GetCreatableVgpus method.\n\t\tGetCreatableVgpus []struct {\n\t\t}\n\t\t// GetCudaComputeCapability holds details about calls to the GetCudaComputeCapability method.\n\t\tGetCudaComputeCapability []struct {\n\t\t}\n\t\t// GetCurrPcieLinkGeneration holds details about calls to the GetCurrPcieLinkGeneration method.\n\t\tGetCurrPcieLinkGeneration []struct {\n\t\t}\n\t\t// GetCurrPcieLinkWidth holds details about calls to the GetCurrPcieLinkWidth method.\n\t\tGetCurrPcieLinkWidth []struct {\n\t\t}\n\t\t// GetCurrentClockFreqs holds details about calls to the GetCurrentClockFreqs method.\n\t\tGetCurrentClockFreqs []struct {\n\t\t}\n\t\t// GetCurrentClocksEventReasons holds details about calls to the GetCurrentClocksEventReasons method.\n\t\tGetCurrentClocksEventReasons []struct {\n\t\t}\n\t\t// GetCurrentClocksThrottleReasons holds details about calls to the GetCurrentClocksThrottleReasons method.\n\t\tGetCurrentClocksThrottleReasons []struct {\n\t\t}\n\t\t// GetDecoderUtilization holds details about calls to the GetDecoderUtilization method.\n\t\tGetDecoderUtilization []struct {\n\t\t}\n\t\t// GetDefaultApplicationsClock holds details about calls to the GetDefaultApplicationsClock method.\n\t\tGetDefaultApplicationsClock []struct {\n\t\t\t// ClockType is the clockType argument value.\n\t\t\tClockType nvml.ClockType\n\t\t}\n\t\t// GetDefaultEccMode holds details about calls to the GetDefaultEccMode method.\n\t\tGetDefaultEccMode []struct {\n\t\t}\n\t\t// GetDetailedEccErrors holds details about calls to the GetDetailedEccErrors method.\n\t\tGetDetailedEccErrors []struct {\n\t\t\t// MemoryErrorType is the memoryErrorType argument value.\n\t\t\tMemoryErrorType nvml.MemoryErrorType\n\t\t\t// EccCounterType is the eccCounterType argument value.\n\t\t\tEccCounterType nvml.EccCounterType\n\t\t}\n\t\t// GetDeviceHandleFromMigDeviceHandle holds details about calls to the GetDeviceHandleFromMigDeviceHandle method.\n\t\tGetDeviceHandleFromMigDeviceHandle []struct {\n\t\t}\n\t\t// GetDisplayActive holds details about calls to the GetDisplayActive method.\n\t\tGetDisplayActive []struct {\n\t\t}\n\t\t// GetDisplayMode holds details about calls to the GetDisplayMode method.\n\t\tGetDisplayMode []struct {\n\t\t}\n\t\t// GetDramEncryptionMode holds details about calls to the GetDramEncryptionMode method.\n\t\tGetDramEncryptionMode []struct {\n\t\t}\n\t\t// GetDriverModel holds details about calls to the GetDriverModel method.\n\t\tGetDriverModel []struct {\n\t\t}\n\t\t// GetDriverModel_v2 holds details about calls to the GetDriverModel_v2 method.\n\t\tGetDriverModel_v2 []struct {\n\t\t}\n\t\t// GetDynamicPstatesInfo holds details about calls to the GetDynamicPstatesInfo method.\n\t\tGetDynamicPstatesInfo []struct {\n\t\t}\n\t\t// GetEccMode holds details about calls to the GetEccMode method.\n\t\tGetEccMode []struct {\n\t\t}\n\t\t// GetEncoderCapacity holds details about calls to the GetEncoderCapacity method.\n\t\tGetEncoderCapacity []struct {\n\t\t\t// EncoderType is the encoderType argument value.\n\t\t\tEncoderType nvml.EncoderType\n\t\t}\n\t\t// GetEncoderSessions holds details about calls to the GetEncoderSessions method.\n\t\tGetEncoderSessions []struct {\n\t\t}\n\t\t// GetEncoderStats holds details about calls to the GetEncoderStats method.\n\t\tGetEncoderStats []struct {\n\t\t}\n\t\t// GetEncoderUtilization holds details about calls to the GetEncoderUtilization method.\n\t\tGetEncoderUtilization []struct {\n\t\t}\n\t\t// GetEnforcedPowerLimit holds details about calls to the GetEnforcedPowerLimit method.\n\t\tGetEnforcedPowerLimit []struct {\n\t\t}\n\t\t// GetFBCSessions holds details about calls to the GetFBCSessions method.\n\t\tGetFBCSessions []struct {\n\t\t}\n\t\t// GetFBCStats holds details about calls to the GetFBCStats method.\n\t\tGetFBCStats []struct {\n\t\t}\n\t\t// GetFanControlPolicy_v2 holds details about calls to the GetFanControlPolicy_v2 method.\n\t\tGetFanControlPolicy_v2 []struct {\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t}\n\t\t// GetFanSpeed holds details about calls to the GetFanSpeed method.\n\t\tGetFanSpeed []struct {\n\t\t}\n\t\t// GetFanSpeedRPM holds details about calls to the GetFanSpeedRPM method.\n\t\tGetFanSpeedRPM []struct {\n\t\t}\n\t\t// GetFanSpeed_v2 holds details about calls to the GetFanSpeed_v2 method.\n\t\tGetFanSpeed_v2 []struct {\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t}\n\t\t// GetFieldValues holds details about calls to the GetFieldValues method.\n\t\tGetFieldValues []struct {\n\t\t\t// FieldValues is the fieldValues argument value.\n\t\t\tFieldValues []nvml.FieldValue\n\t\t}\n\t\t// GetGpcClkMinMaxVfOffset holds details about calls to the GetGpcClkMinMaxVfOffset method.\n\t\tGetGpcClkMinMaxVfOffset []struct {\n\t\t}\n\t\t// GetGpcClkVfOffset holds details about calls to the GetGpcClkVfOffset method.\n\t\tGetGpcClkVfOffset []struct {\n\t\t}\n\t\t// GetGpuFabricInfo holds details about calls to the GetGpuFabricInfo method.\n\t\tGetGpuFabricInfo []struct {\n\t\t}\n\t\t// GetGpuFabricInfoV holds details about calls to the GetGpuFabricInfoV method.\n\t\tGetGpuFabricInfoV []struct {\n\t\t}\n\t\t// GetGpuInstanceById holds details about calls to the GetGpuInstanceById method.\n\t\tGetGpuInstanceById []struct {\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t}\n\t\t// GetGpuInstanceId holds details about calls to the GetGpuInstanceId method.\n\t\tGetGpuInstanceId []struct {\n\t\t}\n\t\t// GetGpuInstancePossiblePlacements holds details about calls to the GetGpuInstancePossiblePlacements method.\n\t\tGetGpuInstancePossiblePlacements []struct {\n\t\t\t// GpuInstanceProfileInfo is the gpuInstanceProfileInfo argument value.\n\t\t\tGpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo\n\t\t}\n\t\t// GetGpuInstanceProfileInfo holds details about calls to the GetGpuInstanceProfileInfo method.\n\t\tGetGpuInstanceProfileInfo []struct {\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t}\n\t\t// GetGpuInstanceProfileInfoByIdV holds details about calls to the GetGpuInstanceProfileInfoByIdV method.\n\t\tGetGpuInstanceProfileInfoByIdV []struct {\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t}\n\t\t// GetGpuInstanceProfileInfoV holds details about calls to the GetGpuInstanceProfileInfoV method.\n\t\tGetGpuInstanceProfileInfoV []struct {\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t}\n\t\t// GetGpuInstanceRemainingCapacity holds details about calls to the GetGpuInstanceRemainingCapacity method.\n\t\tGetGpuInstanceRemainingCapacity []struct {\n\t\t\t// GpuInstanceProfileInfo is the gpuInstanceProfileInfo argument value.\n\t\t\tGpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo\n\t\t}\n\t\t// GetGpuInstances holds details about calls to the GetGpuInstances method.\n\t\tGetGpuInstances []struct {\n\t\t\t// GpuInstanceProfileInfo is the gpuInstanceProfileInfo argument value.\n\t\t\tGpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo\n\t\t}\n\t\t// GetGpuMaxPcieLinkGeneration holds details about calls to the GetGpuMaxPcieLinkGeneration method.\n\t\tGetGpuMaxPcieLinkGeneration []struct {\n\t\t}\n\t\t// GetGpuOperationMode holds details about calls to the GetGpuOperationMode method.\n\t\tGetGpuOperationMode []struct {\n\t\t}\n\t\t// GetGraphicsRunningProcesses holds details about calls to the GetGraphicsRunningProcesses method.\n\t\tGetGraphicsRunningProcesses []struct {\n\t\t}\n\t\t// GetGridLicensableFeatures holds details about calls to the GetGridLicensableFeatures method.\n\t\tGetGridLicensableFeatures []struct {\n\t\t}\n\t\t// GetGspFirmwareMode holds details about calls to the GetGspFirmwareMode method.\n\t\tGetGspFirmwareMode []struct {\n\t\t}\n\t\t// GetGspFirmwareVersion holds details about calls to the GetGspFirmwareVersion method.\n\t\tGetGspFirmwareVersion []struct {\n\t\t}\n\t\t// GetHostVgpuMode holds details about calls to the GetHostVgpuMode method.\n\t\tGetHostVgpuMode []struct {\n\t\t}\n\t\t// GetIndex holds details about calls to the GetIndex method.\n\t\tGetIndex []struct {\n\t\t}\n\t\t// GetInforomConfigurationChecksum holds details about calls to the GetInforomConfigurationChecksum method.\n\t\tGetInforomConfigurationChecksum []struct {\n\t\t}\n\t\t// GetInforomImageVersion holds details about calls to the GetInforomImageVersion method.\n\t\tGetInforomImageVersion []struct {\n\t\t}\n\t\t// GetInforomVersion holds details about calls to the GetInforomVersion method.\n\t\tGetInforomVersion []struct {\n\t\t\t// InforomObject is the inforomObject argument value.\n\t\t\tInforomObject nvml.InforomObject\n\t\t}\n\t\t// GetIrqNum holds details about calls to the GetIrqNum method.\n\t\tGetIrqNum []struct {\n\t\t}\n\t\t// GetJpgUtilization holds details about calls to the GetJpgUtilization method.\n\t\tGetJpgUtilization []struct {\n\t\t}\n\t\t// GetLastBBXFlushTime holds details about calls to the GetLastBBXFlushTime method.\n\t\tGetLastBBXFlushTime []struct {\n\t\t}\n\t\t// GetMPSComputeRunningProcesses holds details about calls to the GetMPSComputeRunningProcesses method.\n\t\tGetMPSComputeRunningProcesses []struct {\n\t\t}\n\t\t// GetMarginTemperature holds details about calls to the GetMarginTemperature method.\n\t\tGetMarginTemperature []struct {\n\t\t}\n\t\t// GetMaxClockInfo holds details about calls to the GetMaxClockInfo method.\n\t\tGetMaxClockInfo []struct {\n\t\t\t// ClockType is the clockType argument value.\n\t\t\tClockType nvml.ClockType\n\t\t}\n\t\t// GetMaxCustomerBoostClock holds details about calls to the GetMaxCustomerBoostClock method.\n\t\tGetMaxCustomerBoostClock []struct {\n\t\t\t// ClockType is the clockType argument value.\n\t\t\tClockType nvml.ClockType\n\t\t}\n\t\t// GetMaxMigDeviceCount holds details about calls to the GetMaxMigDeviceCount method.\n\t\tGetMaxMigDeviceCount []struct {\n\t\t}\n\t\t// GetMaxPcieLinkGeneration holds details about calls to the GetMaxPcieLinkGeneration method.\n\t\tGetMaxPcieLinkGeneration []struct {\n\t\t}\n\t\t// GetMaxPcieLinkWidth holds details about calls to the GetMaxPcieLinkWidth method.\n\t\tGetMaxPcieLinkWidth []struct {\n\t\t}\n\t\t// GetMemClkMinMaxVfOffset holds details about calls to the GetMemClkMinMaxVfOffset method.\n\t\tGetMemClkMinMaxVfOffset []struct {\n\t\t}\n\t\t// GetMemClkVfOffset holds details about calls to the GetMemClkVfOffset method.\n\t\tGetMemClkVfOffset []struct {\n\t\t}\n\t\t// GetMemoryAffinity holds details about calls to the GetMemoryAffinity method.\n\t\tGetMemoryAffinity []struct {\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t\t// AffinityScope is the affinityScope argument value.\n\t\t\tAffinityScope nvml.AffinityScope\n\t\t}\n\t\t// GetMemoryBusWidth holds details about calls to the GetMemoryBusWidth method.\n\t\tGetMemoryBusWidth []struct {\n\t\t}\n\t\t// GetMemoryErrorCounter holds details about calls to the GetMemoryErrorCounter method.\n\t\tGetMemoryErrorCounter []struct {\n\t\t\t// MemoryErrorType is the memoryErrorType argument value.\n\t\t\tMemoryErrorType nvml.MemoryErrorType\n\t\t\t// EccCounterType is the eccCounterType argument value.\n\t\t\tEccCounterType nvml.EccCounterType\n\t\t\t// MemoryLocation is the memoryLocation argument value.\n\t\t\tMemoryLocation nvml.MemoryLocation\n\t\t}\n\t\t// GetMemoryInfo holds details about calls to the GetMemoryInfo method.\n\t\tGetMemoryInfo []struct {\n\t\t}\n\t\t// GetMemoryInfo_v2 holds details about calls to the GetMemoryInfo_v2 method.\n\t\tGetMemoryInfo_v2 []struct {\n\t\t}\n\t\t// GetMigDeviceHandleByIndex holds details about calls to the GetMigDeviceHandleByIndex method.\n\t\tGetMigDeviceHandleByIndex []struct {\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t}\n\t\t// GetMigMode holds details about calls to the GetMigMode method.\n\t\tGetMigMode []struct {\n\t\t}\n\t\t// GetMinMaxClockOfPState holds details about calls to the GetMinMaxClockOfPState method.\n\t\tGetMinMaxClockOfPState []struct {\n\t\t\t// ClockType is the clockType argument value.\n\t\t\tClockType nvml.ClockType\n\t\t\t// Pstates is the pstates argument value.\n\t\t\tPstates nvml.Pstates\n\t\t}\n\t\t// GetMinMaxFanSpeed holds details about calls to the GetMinMaxFanSpeed method.\n\t\tGetMinMaxFanSpeed []struct {\n\t\t}\n\t\t// GetMinorNumber holds details about calls to the GetMinorNumber method.\n\t\tGetMinorNumber []struct {\n\t\t}\n\t\t// GetModuleId holds details about calls to the GetModuleId method.\n\t\tGetModuleId []struct {\n\t\t}\n\t\t// GetMultiGpuBoard holds details about calls to the GetMultiGpuBoard method.\n\t\tGetMultiGpuBoard []struct {\n\t\t}\n\t\t// GetName holds details about calls to the GetName method.\n\t\tGetName []struct {\n\t\t}\n\t\t// GetNumFans holds details about calls to the GetNumFans method.\n\t\tGetNumFans []struct {\n\t\t}\n\t\t// GetNumGpuCores holds details about calls to the GetNumGpuCores method.\n\t\tGetNumGpuCores []struct {\n\t\t}\n\t\t// GetNumaNodeId holds details about calls to the GetNumaNodeId method.\n\t\tGetNumaNodeId []struct {\n\t\t}\n\t\t// GetNvLinkCapability holds details about calls to the GetNvLinkCapability method.\n\t\tGetNvLinkCapability []struct {\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t\t// NvLinkCapability is the nvLinkCapability argument value.\n\t\t\tNvLinkCapability nvml.NvLinkCapability\n\t\t}\n\t\t// GetNvLinkErrorCounter holds details about calls to the GetNvLinkErrorCounter method.\n\t\tGetNvLinkErrorCounter []struct {\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t\t// NvLinkErrorCounter is the nvLinkErrorCounter argument value.\n\t\t\tNvLinkErrorCounter nvml.NvLinkErrorCounter\n\t\t}\n\t\t// GetNvLinkInfo holds details about calls to the GetNvLinkInfo method.\n\t\tGetNvLinkInfo []struct {\n\t\t}\n\t\t// GetNvLinkRemoteDeviceType holds details about calls to the GetNvLinkRemoteDeviceType method.\n\t\tGetNvLinkRemoteDeviceType []struct {\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t}\n\t\t// GetNvLinkRemotePciInfo holds details about calls to the GetNvLinkRemotePciInfo method.\n\t\tGetNvLinkRemotePciInfo []struct {\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t}\n\t\t// GetNvLinkState holds details about calls to the GetNvLinkState method.\n\t\tGetNvLinkState []struct {\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t}\n\t\t// GetNvLinkUtilizationControl holds details about calls to the GetNvLinkUtilizationControl method.\n\t\tGetNvLinkUtilizationControl []struct {\n\t\t\t// N1 is the n1 argument value.\n\t\t\tN1 int\n\t\t\t// N2 is the n2 argument value.\n\t\t\tN2 int\n\t\t}\n\t\t// GetNvLinkUtilizationCounter holds details about calls to the GetNvLinkUtilizationCounter method.\n\t\tGetNvLinkUtilizationCounter []struct {\n\t\t\t// N1 is the n1 argument value.\n\t\t\tN1 int\n\t\t\t// N2 is the n2 argument value.\n\t\t\tN2 int\n\t\t}\n\t\t// GetNvLinkVersion holds details about calls to the GetNvLinkVersion method.\n\t\tGetNvLinkVersion []struct {\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t}\n\t\t// GetNvlinkBwMode holds details about calls to the GetNvlinkBwMode method.\n\t\tGetNvlinkBwMode []struct {\n\t\t}\n\t\t// GetNvlinkSupportedBwModes holds details about calls to the GetNvlinkSupportedBwModes method.\n\t\tGetNvlinkSupportedBwModes []struct {\n\t\t}\n\t\t// GetOfaUtilization holds details about calls to the GetOfaUtilization method.\n\t\tGetOfaUtilization []struct {\n\t\t}\n\t\t// GetP2PStatus holds details about calls to the GetP2PStatus method.\n\t\tGetP2PStatus []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// GpuP2PCapsIndex is the gpuP2PCapsIndex argument value.\n\t\t\tGpuP2PCapsIndex nvml.GpuP2PCapsIndex\n\t\t}\n\t\t// GetPciInfo holds details about calls to the GetPciInfo method.\n\t\tGetPciInfo []struct {\n\t\t}\n\t\t// GetPciInfoExt holds details about calls to the GetPciInfoExt method.\n\t\tGetPciInfoExt []struct {\n\t\t}\n\t\t// GetPcieLinkMaxSpeed holds details about calls to the GetPcieLinkMaxSpeed method.\n\t\tGetPcieLinkMaxSpeed []struct {\n\t\t}\n\t\t// GetPcieReplayCounter holds details about calls to the GetPcieReplayCounter method.\n\t\tGetPcieReplayCounter []struct {\n\t\t}\n\t\t// GetPcieSpeed holds details about calls to the GetPcieSpeed method.\n\t\tGetPcieSpeed []struct {\n\t\t}\n\t\t// GetPcieThroughput holds details about calls to the GetPcieThroughput method.\n\t\tGetPcieThroughput []struct {\n\t\t\t// PcieUtilCounter is the pcieUtilCounter argument value.\n\t\t\tPcieUtilCounter nvml.PcieUtilCounter\n\t\t}\n\t\t// GetPdi holds details about calls to the GetPdi method.\n\t\tGetPdi []struct {\n\t\t}\n\t\t// GetPerformanceModes holds details about calls to the GetPerformanceModes method.\n\t\tGetPerformanceModes []struct {\n\t\t}\n\t\t// GetPerformanceState holds details about calls to the GetPerformanceState method.\n\t\tGetPerformanceState []struct {\n\t\t}\n\t\t// GetPersistenceMode holds details about calls to the GetPersistenceMode method.\n\t\tGetPersistenceMode []struct {\n\t\t}\n\t\t// GetPgpuMetadataString holds details about calls to the GetPgpuMetadataString method.\n\t\tGetPgpuMetadataString []struct {\n\t\t}\n\t\t// GetPlatformInfo holds details about calls to the GetPlatformInfo method.\n\t\tGetPlatformInfo []struct {\n\t\t}\n\t\t// GetPowerManagementDefaultLimit holds details about calls to the GetPowerManagementDefaultLimit method.\n\t\tGetPowerManagementDefaultLimit []struct {\n\t\t}\n\t\t// GetPowerManagementLimit holds details about calls to the GetPowerManagementLimit method.\n\t\tGetPowerManagementLimit []struct {\n\t\t}\n\t\t// GetPowerManagementLimitConstraints holds details about calls to the GetPowerManagementLimitConstraints method.\n\t\tGetPowerManagementLimitConstraints []struct {\n\t\t}\n\t\t// GetPowerManagementMode holds details about calls to the GetPowerManagementMode method.\n\t\tGetPowerManagementMode []struct {\n\t\t}\n\t\t// GetPowerMizerMode_v1 holds details about calls to the GetPowerMizerMode_v1 method.\n\t\tGetPowerMizerMode_v1 []struct {\n\t\t}\n\t\t// GetPowerSource holds details about calls to the GetPowerSource method.\n\t\tGetPowerSource []struct {\n\t\t}\n\t\t// GetPowerState holds details about calls to the GetPowerState method.\n\t\tGetPowerState []struct {\n\t\t}\n\t\t// GetPowerUsage holds details about calls to the GetPowerUsage method.\n\t\tGetPowerUsage []struct {\n\t\t}\n\t\t// GetProcessUtilization holds details about calls to the GetProcessUtilization method.\n\t\tGetProcessUtilization []struct {\n\t\t\t// V is the v argument value.\n\t\t\tV uint64\n\t\t}\n\t\t// GetProcessesUtilizationInfo holds details about calls to the GetProcessesUtilizationInfo method.\n\t\tGetProcessesUtilizationInfo []struct {\n\t\t}\n\t\t// GetRemappedRows holds details about calls to the GetRemappedRows method.\n\t\tGetRemappedRows []struct {\n\t\t}\n\t\t// GetRepairStatus holds details about calls to the GetRepairStatus method.\n\t\tGetRepairStatus []struct {\n\t\t}\n\t\t// GetRetiredPages holds details about calls to the GetRetiredPages method.\n\t\tGetRetiredPages []struct {\n\t\t\t// PageRetirementCause is the pageRetirementCause argument value.\n\t\t\tPageRetirementCause nvml.PageRetirementCause\n\t\t}\n\t\t// GetRetiredPagesPendingStatus holds details about calls to the GetRetiredPagesPendingStatus method.\n\t\tGetRetiredPagesPendingStatus []struct {\n\t\t}\n\t\t// GetRetiredPages_v2 holds details about calls to the GetRetiredPages_v2 method.\n\t\tGetRetiredPages_v2 []struct {\n\t\t\t// PageRetirementCause is the pageRetirementCause argument value.\n\t\t\tPageRetirementCause nvml.PageRetirementCause\n\t\t}\n\t\t// GetRowRemapperHistogram holds details about calls to the GetRowRemapperHistogram method.\n\t\tGetRowRemapperHistogram []struct {\n\t\t}\n\t\t// GetRunningProcessDetailList holds details about calls to the GetRunningProcessDetailList method.\n\t\tGetRunningProcessDetailList []struct {\n\t\t}\n\t\t// GetSamples holds details about calls to the GetSamples method.\n\t\tGetSamples []struct {\n\t\t\t// SamplingType is the samplingType argument value.\n\t\t\tSamplingType nvml.SamplingType\n\t\t\t// V is the v argument value.\n\t\t\tV uint64\n\t\t}\n\t\t// GetSerial holds details about calls to the GetSerial method.\n\t\tGetSerial []struct {\n\t\t}\n\t\t// GetSramEccErrorStatus holds details about calls to the GetSramEccErrorStatus method.\n\t\tGetSramEccErrorStatus []struct {\n\t\t}\n\t\t// GetSramUniqueUncorrectedEccErrorCounts holds details about calls to the GetSramUniqueUncorrectedEccErrorCounts method.\n\t\tGetSramUniqueUncorrectedEccErrorCounts []struct {\n\t\t\t// EccSramUniqueUncorrectedErrorCounts is the eccSramUniqueUncorrectedErrorCounts argument value.\n\t\t\tEccSramUniqueUncorrectedErrorCounts *nvml.EccSramUniqueUncorrectedErrorCounts\n\t\t}\n\t\t// GetSupportedClocksEventReasons holds details about calls to the GetSupportedClocksEventReasons method.\n\t\tGetSupportedClocksEventReasons []struct {\n\t\t}\n\t\t// GetSupportedClocksThrottleReasons holds details about calls to the GetSupportedClocksThrottleReasons method.\n\t\tGetSupportedClocksThrottleReasons []struct {\n\t\t}\n\t\t// GetSupportedEventTypes holds details about calls to the GetSupportedEventTypes method.\n\t\tGetSupportedEventTypes []struct {\n\t\t}\n\t\t// GetSupportedGraphicsClocks holds details about calls to the GetSupportedGraphicsClocks method.\n\t\tGetSupportedGraphicsClocks []struct {\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t}\n\t\t// GetSupportedMemoryClocks holds details about calls to the GetSupportedMemoryClocks method.\n\t\tGetSupportedMemoryClocks []struct {\n\t\t}\n\t\t// GetSupportedPerformanceStates holds details about calls to the GetSupportedPerformanceStates method.\n\t\tGetSupportedPerformanceStates []struct {\n\t\t}\n\t\t// GetSupportedVgpus holds details about calls to the GetSupportedVgpus method.\n\t\tGetSupportedVgpus []struct {\n\t\t}\n\t\t// GetTargetFanSpeed holds details about calls to the GetTargetFanSpeed method.\n\t\tGetTargetFanSpeed []struct {\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t}\n\t\t// GetTemperature holds details about calls to the GetTemperature method.\n\t\tGetTemperature []struct {\n\t\t\t// TemperatureSensors is the temperatureSensors argument value.\n\t\t\tTemperatureSensors nvml.TemperatureSensors\n\t\t}\n\t\t// GetTemperatureThreshold holds details about calls to the GetTemperatureThreshold method.\n\t\tGetTemperatureThreshold []struct {\n\t\t\t// TemperatureThresholds is the temperatureThresholds argument value.\n\t\t\tTemperatureThresholds nvml.TemperatureThresholds\n\t\t}\n\t\t// GetTemperatureV holds details about calls to the GetTemperatureV method.\n\t\tGetTemperatureV []struct {\n\t\t}\n\t\t// GetThermalSettings holds details about calls to the GetThermalSettings method.\n\t\tGetThermalSettings []struct {\n\t\t\t// V is the v argument value.\n\t\t\tV uint32\n\t\t}\n\t\t// GetTopologyCommonAncestor holds details about calls to the GetTopologyCommonAncestor method.\n\t\tGetTopologyCommonAncestor []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// GetTopologyNearestGpus holds details about calls to the GetTopologyNearestGpus method.\n\t\tGetTopologyNearestGpus []struct {\n\t\t\t// GpuTopologyLevel is the gpuTopologyLevel argument value.\n\t\t\tGpuTopologyLevel nvml.GpuTopologyLevel\n\t\t}\n\t\t// GetTotalEccErrors holds details about calls to the GetTotalEccErrors method.\n\t\tGetTotalEccErrors []struct {\n\t\t\t// MemoryErrorType is the memoryErrorType argument value.\n\t\t\tMemoryErrorType nvml.MemoryErrorType\n\t\t\t// EccCounterType is the eccCounterType argument value.\n\t\t\tEccCounterType nvml.EccCounterType\n\t\t}\n\t\t// GetTotalEnergyConsumption holds details about calls to the GetTotalEnergyConsumption method.\n\t\tGetTotalEnergyConsumption []struct {\n\t\t}\n\t\t// GetUUID holds details about calls to the GetUUID method.\n\t\tGetUUID []struct {\n\t\t}\n\t\t// GetUtilizationRates holds details about calls to the GetUtilizationRates method.\n\t\tGetUtilizationRates []struct {\n\t\t}\n\t\t// GetVbiosVersion holds details about calls to the GetVbiosVersion method.\n\t\tGetVbiosVersion []struct {\n\t\t}\n\t\t// GetVgpuCapabilities holds details about calls to the GetVgpuCapabilities method.\n\t\tGetVgpuCapabilities []struct {\n\t\t\t// DeviceVgpuCapability is the deviceVgpuCapability argument value.\n\t\t\tDeviceVgpuCapability nvml.DeviceVgpuCapability\n\t\t}\n\t\t// GetVgpuHeterogeneousMode holds details about calls to the GetVgpuHeterogeneousMode method.\n\t\tGetVgpuHeterogeneousMode []struct {\n\t\t}\n\t\t// GetVgpuInstancesUtilizationInfo holds details about calls to the GetVgpuInstancesUtilizationInfo method.\n\t\tGetVgpuInstancesUtilizationInfo []struct {\n\t\t}\n\t\t// GetVgpuMetadata holds details about calls to the GetVgpuMetadata method.\n\t\tGetVgpuMetadata []struct {\n\t\t}\n\t\t// GetVgpuProcessUtilization holds details about calls to the GetVgpuProcessUtilization method.\n\t\tGetVgpuProcessUtilization []struct {\n\t\t\t// V is the v argument value.\n\t\t\tV uint64\n\t\t}\n\t\t// GetVgpuProcessesUtilizationInfo holds details about calls to the GetVgpuProcessesUtilizationInfo method.\n\t\tGetVgpuProcessesUtilizationInfo []struct {\n\t\t}\n\t\t// GetVgpuSchedulerCapabilities holds details about calls to the GetVgpuSchedulerCapabilities method.\n\t\tGetVgpuSchedulerCapabilities []struct {\n\t\t}\n\t\t// GetVgpuSchedulerLog holds details about calls to the GetVgpuSchedulerLog method.\n\t\tGetVgpuSchedulerLog []struct {\n\t\t}\n\t\t// GetVgpuSchedulerState holds details about calls to the GetVgpuSchedulerState method.\n\t\tGetVgpuSchedulerState []struct {\n\t\t}\n\t\t// GetVgpuTypeCreatablePlacements holds details about calls to the GetVgpuTypeCreatablePlacements method.\n\t\tGetVgpuTypeCreatablePlacements []struct {\n\t\t\t// VgpuTypeId is the vgpuTypeId argument value.\n\t\t\tVgpuTypeId nvml.VgpuTypeId\n\t\t}\n\t\t// GetVgpuTypeSupportedPlacements holds details about calls to the GetVgpuTypeSupportedPlacements method.\n\t\tGetVgpuTypeSupportedPlacements []struct {\n\t\t\t// VgpuTypeId is the vgpuTypeId argument value.\n\t\t\tVgpuTypeId nvml.VgpuTypeId\n\t\t}\n\t\t// GetVgpuUtilization holds details about calls to the GetVgpuUtilization method.\n\t\tGetVgpuUtilization []struct {\n\t\t\t// V is the v argument value.\n\t\t\tV uint64\n\t\t}\n\t\t// GetViolationStatus holds details about calls to the GetViolationStatus method.\n\t\tGetViolationStatus []struct {\n\t\t\t// PerfPolicyType is the perfPolicyType argument value.\n\t\t\tPerfPolicyType nvml.PerfPolicyType\n\t\t}\n\t\t// GetVirtualizationMode holds details about calls to the GetVirtualizationMode method.\n\t\tGetVirtualizationMode []struct {\n\t\t}\n\t\t// GpmMigSampleGet holds details about calls to the GpmMigSampleGet method.\n\t\tGpmMigSampleGet []struct {\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t\t// GpmSample is the gpmSample argument value.\n\t\t\tGpmSample nvml.GpmSample\n\t\t}\n\t\t// GpmQueryDeviceSupport holds details about calls to the GpmQueryDeviceSupport method.\n\t\tGpmQueryDeviceSupport []struct {\n\t\t}\n\t\t// GpmQueryDeviceSupportV holds details about calls to the GpmQueryDeviceSupportV method.\n\t\tGpmQueryDeviceSupportV []struct {\n\t\t}\n\t\t// GpmQueryIfStreamingEnabled holds details about calls to the GpmQueryIfStreamingEnabled method.\n\t\tGpmQueryIfStreamingEnabled []struct {\n\t\t}\n\t\t// GpmSampleGet holds details about calls to the GpmSampleGet method.\n\t\tGpmSampleGet []struct {\n\t\t\t// GpmSample is the gpmSample argument value.\n\t\t\tGpmSample nvml.GpmSample\n\t\t}\n\t\t// GpmSetStreamingEnabled holds details about calls to the GpmSetStreamingEnabled method.\n\t\tGpmSetStreamingEnabled []struct {\n\t\t\t// V is the v argument value.\n\t\t\tV uint32\n\t\t}\n\t\t// IsMigDeviceHandle holds details about calls to the IsMigDeviceHandle method.\n\t\tIsMigDeviceHandle []struct {\n\t\t}\n\t\t// OnSameBoard holds details about calls to the OnSameBoard method.\n\t\tOnSameBoard []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// PowerSmoothingActivatePresetProfile holds details about calls to the PowerSmoothingActivatePresetProfile method.\n\t\tPowerSmoothingActivatePresetProfile []struct {\n\t\t\t// PowerSmoothingProfile is the powerSmoothingProfile argument value.\n\t\t\tPowerSmoothingProfile *nvml.PowerSmoothingProfile\n\t\t}\n\t\t// PowerSmoothingSetState holds details about calls to the PowerSmoothingSetState method.\n\t\tPowerSmoothingSetState []struct {\n\t\t\t// PowerSmoothingState is the powerSmoothingState argument value.\n\t\t\tPowerSmoothingState *nvml.PowerSmoothingState\n\t\t}\n\t\t// PowerSmoothingUpdatePresetProfileParam holds details about calls to the PowerSmoothingUpdatePresetProfileParam method.\n\t\tPowerSmoothingUpdatePresetProfileParam []struct {\n\t\t\t// PowerSmoothingProfile is the powerSmoothingProfile argument value.\n\t\t\tPowerSmoothingProfile *nvml.PowerSmoothingProfile\n\t\t}\n\t\t// ReadWritePRM_v1 holds details about calls to the ReadWritePRM_v1 method.\n\t\tReadWritePRM_v1 []struct {\n\t\t\t// PRMTLV_v1 is the pRMTLV_v1 argument value.\n\t\t\tPRMTLV_v1 *nvml.PRMTLV_v1\n\t\t}\n\t\t// RegisterEvents holds details about calls to the RegisterEvents method.\n\t\tRegisterEvents []struct {\n\t\t\t// V is the v argument value.\n\t\t\tV uint64\n\t\t\t// EventSet is the eventSet argument value.\n\t\t\tEventSet nvml.EventSet\n\t\t}\n\t\t// ResetApplicationsClocks holds details about calls to the ResetApplicationsClocks method.\n\t\tResetApplicationsClocks []struct {\n\t\t}\n\t\t// ResetGpuLockedClocks holds details about calls to the ResetGpuLockedClocks method.\n\t\tResetGpuLockedClocks []struct {\n\t\t}\n\t\t// ResetMemoryLockedClocks holds details about calls to the ResetMemoryLockedClocks method.\n\t\tResetMemoryLockedClocks []struct {\n\t\t}\n\t\t// ResetNvLinkErrorCounters holds details about calls to the ResetNvLinkErrorCounters method.\n\t\tResetNvLinkErrorCounters []struct {\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t}\n\t\t// ResetNvLinkUtilizationCounter holds details about calls to the ResetNvLinkUtilizationCounter method.\n\t\tResetNvLinkUtilizationCounter []struct {\n\t\t\t// N1 is the n1 argument value.\n\t\t\tN1 int\n\t\t\t// N2 is the n2 argument value.\n\t\t\tN2 int\n\t\t}\n\t\t// SetAPIRestriction holds details about calls to the SetAPIRestriction method.\n\t\tSetAPIRestriction []struct {\n\t\t\t// RestrictedAPI is the restrictedAPI argument value.\n\t\t\tRestrictedAPI nvml.RestrictedAPI\n\t\t\t// EnableState is the enableState argument value.\n\t\t\tEnableState nvml.EnableState\n\t\t}\n\t\t// SetAccountingMode holds details about calls to the SetAccountingMode method.\n\t\tSetAccountingMode []struct {\n\t\t\t// EnableState is the enableState argument value.\n\t\t\tEnableState nvml.EnableState\n\t\t}\n\t\t// SetApplicationsClocks holds details about calls to the SetApplicationsClocks method.\n\t\tSetApplicationsClocks []struct {\n\t\t\t// V1 is the v1 argument value.\n\t\t\tV1 uint32\n\t\t\t// V2 is the v2 argument value.\n\t\t\tV2 uint32\n\t\t}\n\t\t// SetAutoBoostedClocksEnabled holds details about calls to the SetAutoBoostedClocksEnabled method.\n\t\tSetAutoBoostedClocksEnabled []struct {\n\t\t\t// EnableState is the enableState argument value.\n\t\t\tEnableState nvml.EnableState\n\t\t}\n\t\t// SetClockOffsets holds details about calls to the SetClockOffsets method.\n\t\tSetClockOffsets []struct {\n\t\t\t// ClockOffset is the clockOffset argument value.\n\t\t\tClockOffset nvml.ClockOffset\n\t\t}\n\t\t// SetComputeMode holds details about calls to the SetComputeMode method.\n\t\tSetComputeMode []struct {\n\t\t\t// ComputeMode is the computeMode argument value.\n\t\t\tComputeMode nvml.ComputeMode\n\t\t}\n\t\t// SetConfComputeUnprotectedMemSize holds details about calls to the SetConfComputeUnprotectedMemSize method.\n\t\tSetConfComputeUnprotectedMemSize []struct {\n\t\t\t// V is the v argument value.\n\t\t\tV uint64\n\t\t}\n\t\t// SetCpuAffinity holds details about calls to the SetCpuAffinity method.\n\t\tSetCpuAffinity []struct {\n\t\t}\n\t\t// SetDefaultAutoBoostedClocksEnabled holds details about calls to the SetDefaultAutoBoostedClocksEnabled method.\n\t\tSetDefaultAutoBoostedClocksEnabled []struct {\n\t\t\t// EnableState is the enableState argument value.\n\t\t\tEnableState nvml.EnableState\n\t\t\t// V is the v argument value.\n\t\t\tV uint32\n\t\t}\n\t\t// SetDefaultFanSpeed_v2 holds details about calls to the SetDefaultFanSpeed_v2 method.\n\t\tSetDefaultFanSpeed_v2 []struct {\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t}\n\t\t// SetDramEncryptionMode holds details about calls to the SetDramEncryptionMode method.\n\t\tSetDramEncryptionMode []struct {\n\t\t\t// DramEncryptionInfo is the dramEncryptionInfo argument value.\n\t\t\tDramEncryptionInfo *nvml.DramEncryptionInfo\n\t\t}\n\t\t// SetDriverModel holds details about calls to the SetDriverModel method.\n\t\tSetDriverModel []struct {\n\t\t\t// DriverModel is the driverModel argument value.\n\t\t\tDriverModel nvml.DriverModel\n\t\t\t// V is the v argument value.\n\t\t\tV uint32\n\t\t}\n\t\t// SetEccMode holds details about calls to the SetEccMode method.\n\t\tSetEccMode []struct {\n\t\t\t// EnableState is the enableState argument value.\n\t\t\tEnableState nvml.EnableState\n\t\t}\n\t\t// SetFanControlPolicy holds details about calls to the SetFanControlPolicy method.\n\t\tSetFanControlPolicy []struct {\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t\t// FanControlPolicy is the fanControlPolicy argument value.\n\t\t\tFanControlPolicy nvml.FanControlPolicy\n\t\t}\n\t\t// SetFanSpeed_v2 holds details about calls to the SetFanSpeed_v2 method.\n\t\tSetFanSpeed_v2 []struct {\n\t\t\t// N1 is the n1 argument value.\n\t\t\tN1 int\n\t\t\t// N2 is the n2 argument value.\n\t\t\tN2 int\n\t\t}\n\t\t// SetGpcClkVfOffset holds details about calls to the SetGpcClkVfOffset method.\n\t\tSetGpcClkVfOffset []struct {\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t}\n\t\t// SetGpuLockedClocks holds details about calls to the SetGpuLockedClocks method.\n\t\tSetGpuLockedClocks []struct {\n\t\t\t// V1 is the v1 argument value.\n\t\t\tV1 uint32\n\t\t\t// V2 is the v2 argument value.\n\t\t\tV2 uint32\n\t\t}\n\t\t// SetGpuOperationMode holds details about calls to the SetGpuOperationMode method.\n\t\tSetGpuOperationMode []struct {\n\t\t\t// GpuOperationMode is the gpuOperationMode argument value.\n\t\t\tGpuOperationMode nvml.GpuOperationMode\n\t\t}\n\t\t// SetMemClkVfOffset holds details about calls to the SetMemClkVfOffset method.\n\t\tSetMemClkVfOffset []struct {\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t}\n\t\t// SetMemoryLockedClocks holds details about calls to the SetMemoryLockedClocks method.\n\t\tSetMemoryLockedClocks []struct {\n\t\t\t// V1 is the v1 argument value.\n\t\t\tV1 uint32\n\t\t\t// V2 is the v2 argument value.\n\t\t\tV2 uint32\n\t\t}\n\t\t// SetMigMode holds details about calls to the SetMigMode method.\n\t\tSetMigMode []struct {\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t}\n\t\t// SetNvLinkDeviceLowPowerThreshold holds details about calls to the SetNvLinkDeviceLowPowerThreshold method.\n\t\tSetNvLinkDeviceLowPowerThreshold []struct {\n\t\t\t// NvLinkPowerThres is the nvLinkPowerThres argument value.\n\t\t\tNvLinkPowerThres *nvml.NvLinkPowerThres\n\t\t}\n\t\t// SetNvLinkUtilizationControl holds details about calls to the SetNvLinkUtilizationControl method.\n\t\tSetNvLinkUtilizationControl []struct {\n\t\t\t// N1 is the n1 argument value.\n\t\t\tN1 int\n\t\t\t// N2 is the n2 argument value.\n\t\t\tN2 int\n\t\t\t// NvLinkUtilizationControl is the nvLinkUtilizationControl argument value.\n\t\t\tNvLinkUtilizationControl *nvml.NvLinkUtilizationControl\n\t\t\t// B is the b argument value.\n\t\t\tB bool\n\t\t}\n\t\t// SetNvlinkBwMode holds details about calls to the SetNvlinkBwMode method.\n\t\tSetNvlinkBwMode []struct {\n\t\t\t// NvlinkSetBwMode is the nvlinkSetBwMode argument value.\n\t\t\tNvlinkSetBwMode *nvml.NvlinkSetBwMode\n\t\t}\n\t\t// SetPersistenceMode holds details about calls to the SetPersistenceMode method.\n\t\tSetPersistenceMode []struct {\n\t\t\t// EnableState is the enableState argument value.\n\t\t\tEnableState nvml.EnableState\n\t\t}\n\t\t// SetPowerManagementLimit holds details about calls to the SetPowerManagementLimit method.\n\t\tSetPowerManagementLimit []struct {\n\t\t\t// V is the v argument value.\n\t\t\tV uint32\n\t\t}\n\t\t// SetPowerManagementLimit_v2 holds details about calls to the SetPowerManagementLimit_v2 method.\n\t\tSetPowerManagementLimit_v2 []struct {\n\t\t\t// PowerValue_v2 is the powerValue_v2 argument value.\n\t\t\tPowerValue_v2 *nvml.PowerValue_v2\n\t\t}\n\t\t// SetTemperatureThreshold holds details about calls to the SetTemperatureThreshold method.\n\t\tSetTemperatureThreshold []struct {\n\t\t\t// TemperatureThresholds is the temperatureThresholds argument value.\n\t\t\tTemperatureThresholds nvml.TemperatureThresholds\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t}\n\t\t// SetVgpuCapabilities holds details about calls to the SetVgpuCapabilities method.\n\t\tSetVgpuCapabilities []struct {\n\t\t\t// DeviceVgpuCapability is the deviceVgpuCapability argument value.\n\t\t\tDeviceVgpuCapability nvml.DeviceVgpuCapability\n\t\t\t// EnableState is the enableState argument value.\n\t\t\tEnableState nvml.EnableState\n\t\t}\n\t\t// SetVgpuHeterogeneousMode holds details about calls to the SetVgpuHeterogeneousMode method.\n\t\tSetVgpuHeterogeneousMode []struct {\n\t\t\t// VgpuHeterogeneousMode is the vgpuHeterogeneousMode argument value.\n\t\t\tVgpuHeterogeneousMode nvml.VgpuHeterogeneousMode\n\t\t}\n\t\t// SetVgpuSchedulerState holds details about calls to the SetVgpuSchedulerState method.\n\t\tSetVgpuSchedulerState []struct {\n\t\t\t// VgpuSchedulerSetState is the vgpuSchedulerSetState argument value.\n\t\t\tVgpuSchedulerSetState *nvml.VgpuSchedulerSetState\n\t\t}\n\t\t// SetVirtualizationMode holds details about calls to the SetVirtualizationMode method.\n\t\tSetVirtualizationMode []struct {\n\t\t\t// GpuVirtualizationMode is the gpuVirtualizationMode argument value.\n\t\t\tGpuVirtualizationMode nvml.GpuVirtualizationMode\n\t\t}\n\t\t// ValidateInforom holds details about calls to the ValidateInforom method.\n\t\tValidateInforom []struct {\n\t\t}\n\t\t// VgpuTypeGetMaxInstances holds details about calls to the VgpuTypeGetMaxInstances method.\n\t\tVgpuTypeGetMaxInstances []struct {\n\t\t\t// VgpuTypeId is the vgpuTypeId argument value.\n\t\t\tVgpuTypeId nvml.VgpuTypeId\n\t\t}\n\t\t// WorkloadPowerProfileClearRequestedProfiles holds details about calls to the WorkloadPowerProfileClearRequestedProfiles method.\n\t\tWorkloadPowerProfileClearRequestedProfiles []struct {\n\t\t\t// WorkloadPowerProfileRequestedProfiles is the workloadPowerProfileRequestedProfiles argument value.\n\t\t\tWorkloadPowerProfileRequestedProfiles *nvml.WorkloadPowerProfileRequestedProfiles\n\t\t}\n\t\t// WorkloadPowerProfileGetCurrentProfiles holds details about calls to the WorkloadPowerProfileGetCurrentProfiles method.\n\t\tWorkloadPowerProfileGetCurrentProfiles []struct {\n\t\t}\n\t\t// WorkloadPowerProfileGetProfilesInfo holds details about calls to the WorkloadPowerProfileGetProfilesInfo method.\n\t\tWorkloadPowerProfileGetProfilesInfo []struct {\n\t\t}\n\t\t// WorkloadPowerProfileSetRequestedProfiles holds details about calls to the WorkloadPowerProfileSetRequestedProfiles method.\n\t\tWorkloadPowerProfileSetRequestedProfiles []struct {\n\t\t\t// WorkloadPowerProfileRequestedProfiles is the workloadPowerProfileRequestedProfiles argument value.\n\t\t\tWorkloadPowerProfileRequestedProfiles *nvml.WorkloadPowerProfileRequestedProfiles\n\t\t}\n\t}\n\tlockClearAccountingPids                        sync.RWMutex\n\tlockClearCpuAffinity                           sync.RWMutex\n\tlockClearEccErrorCounts                        sync.RWMutex\n\tlockClearFieldValues                           sync.RWMutex\n\tlockCreateGpuInstance                          sync.RWMutex\n\tlockCreateGpuInstanceWithPlacement             sync.RWMutex\n\tlockFreezeNvLinkUtilizationCounter             sync.RWMutex\n\tlockGetAPIRestriction                          sync.RWMutex\n\tlockGetAccountingBufferSize                    sync.RWMutex\n\tlockGetAccountingMode                          sync.RWMutex\n\tlockGetAccountingPids                          sync.RWMutex\n\tlockGetAccountingStats                         sync.RWMutex\n\tlockGetActiveVgpus                             sync.RWMutex\n\tlockGetAdaptiveClockInfoStatus                 sync.RWMutex\n\tlockGetAddressingMode                          sync.RWMutex\n\tlockGetApplicationsClock                       sync.RWMutex\n\tlockGetArchitecture                            sync.RWMutex\n\tlockGetAttributes                              sync.RWMutex\n\tlockGetAutoBoostedClocksEnabled                sync.RWMutex\n\tlockGetBAR1MemoryInfo                          sync.RWMutex\n\tlockGetBoardId                                 sync.RWMutex\n\tlockGetBoardPartNumber                         sync.RWMutex\n\tlockGetBrand                                   sync.RWMutex\n\tlockGetBridgeChipInfo                          sync.RWMutex\n\tlockGetBusType                                 sync.RWMutex\n\tlockGetC2cModeInfoV                            sync.RWMutex\n\tlockGetCapabilities                            sync.RWMutex\n\tlockGetClkMonStatus                            sync.RWMutex\n\tlockGetClock                                   sync.RWMutex\n\tlockGetClockInfo                               sync.RWMutex\n\tlockGetClockOffsets                            sync.RWMutex\n\tlockGetComputeInstanceId                       sync.RWMutex\n\tlockGetComputeMode                             sync.RWMutex\n\tlockGetComputeRunningProcesses                 sync.RWMutex\n\tlockGetConfComputeGpuAttestationReport         sync.RWMutex\n\tlockGetConfComputeGpuCertificate               sync.RWMutex\n\tlockGetConfComputeMemSizeInfo                  sync.RWMutex\n\tlockGetConfComputeProtectedMemoryUsage         sync.RWMutex\n\tlockGetCoolerInfo                              sync.RWMutex\n\tlockGetCpuAffinity                             sync.RWMutex\n\tlockGetCpuAffinityWithinScope                  sync.RWMutex\n\tlockGetCreatableVgpus                          sync.RWMutex\n\tlockGetCudaComputeCapability                   sync.RWMutex\n\tlockGetCurrPcieLinkGeneration                  sync.RWMutex\n\tlockGetCurrPcieLinkWidth                       sync.RWMutex\n\tlockGetCurrentClockFreqs                       sync.RWMutex\n\tlockGetCurrentClocksEventReasons               sync.RWMutex\n\tlockGetCurrentClocksThrottleReasons            sync.RWMutex\n\tlockGetDecoderUtilization                      sync.RWMutex\n\tlockGetDefaultApplicationsClock                sync.RWMutex\n\tlockGetDefaultEccMode                          sync.RWMutex\n\tlockGetDetailedEccErrors                       sync.RWMutex\n\tlockGetDeviceHandleFromMigDeviceHandle         sync.RWMutex\n\tlockGetDisplayActive                           sync.RWMutex\n\tlockGetDisplayMode                             sync.RWMutex\n\tlockGetDramEncryptionMode                      sync.RWMutex\n\tlockGetDriverModel                             sync.RWMutex\n\tlockGetDriverModel_v2                          sync.RWMutex\n\tlockGetDynamicPstatesInfo                      sync.RWMutex\n\tlockGetEccMode                                 sync.RWMutex\n\tlockGetEncoderCapacity                         sync.RWMutex\n\tlockGetEncoderSessions                         sync.RWMutex\n\tlockGetEncoderStats                            sync.RWMutex\n\tlockGetEncoderUtilization                      sync.RWMutex\n\tlockGetEnforcedPowerLimit                      sync.RWMutex\n\tlockGetFBCSessions                             sync.RWMutex\n\tlockGetFBCStats                                sync.RWMutex\n\tlockGetFanControlPolicy_v2                     sync.RWMutex\n\tlockGetFanSpeed                                sync.RWMutex\n\tlockGetFanSpeedRPM                             sync.RWMutex\n\tlockGetFanSpeed_v2                             sync.RWMutex\n\tlockGetFieldValues                             sync.RWMutex\n\tlockGetGpcClkMinMaxVfOffset                    sync.RWMutex\n\tlockGetGpcClkVfOffset                          sync.RWMutex\n\tlockGetGpuFabricInfo                           sync.RWMutex\n\tlockGetGpuFabricInfoV                          sync.RWMutex\n\tlockGetGpuInstanceById                         sync.RWMutex\n\tlockGetGpuInstanceId                           sync.RWMutex\n\tlockGetGpuInstancePossiblePlacements           sync.RWMutex\n\tlockGetGpuInstanceProfileInfo                  sync.RWMutex\n\tlockGetGpuInstanceProfileInfoByIdV             sync.RWMutex\n\tlockGetGpuInstanceProfileInfoV                 sync.RWMutex\n\tlockGetGpuInstanceRemainingCapacity            sync.RWMutex\n\tlockGetGpuInstances                            sync.RWMutex\n\tlockGetGpuMaxPcieLinkGeneration                sync.RWMutex\n\tlockGetGpuOperationMode                        sync.RWMutex\n\tlockGetGraphicsRunningProcesses                sync.RWMutex\n\tlockGetGridLicensableFeatures                  sync.RWMutex\n\tlockGetGspFirmwareMode                         sync.RWMutex\n\tlockGetGspFirmwareVersion                      sync.RWMutex\n\tlockGetHostVgpuMode                            sync.RWMutex\n\tlockGetIndex                                   sync.RWMutex\n\tlockGetInforomConfigurationChecksum            sync.RWMutex\n\tlockGetInforomImageVersion                     sync.RWMutex\n\tlockGetInforomVersion                          sync.RWMutex\n\tlockGetIrqNum                                  sync.RWMutex\n\tlockGetJpgUtilization                          sync.RWMutex\n\tlockGetLastBBXFlushTime                        sync.RWMutex\n\tlockGetMPSComputeRunningProcesses              sync.RWMutex\n\tlockGetMarginTemperature                       sync.RWMutex\n\tlockGetMaxClockInfo                            sync.RWMutex\n\tlockGetMaxCustomerBoostClock                   sync.RWMutex\n\tlockGetMaxMigDeviceCount                       sync.RWMutex\n\tlockGetMaxPcieLinkGeneration                   sync.RWMutex\n\tlockGetMaxPcieLinkWidth                        sync.RWMutex\n\tlockGetMemClkMinMaxVfOffset                    sync.RWMutex\n\tlockGetMemClkVfOffset                          sync.RWMutex\n\tlockGetMemoryAffinity                          sync.RWMutex\n\tlockGetMemoryBusWidth                          sync.RWMutex\n\tlockGetMemoryErrorCounter                      sync.RWMutex\n\tlockGetMemoryInfo                              sync.RWMutex\n\tlockGetMemoryInfo_v2                           sync.RWMutex\n\tlockGetMigDeviceHandleByIndex                  sync.RWMutex\n\tlockGetMigMode                                 sync.RWMutex\n\tlockGetMinMaxClockOfPState                     sync.RWMutex\n\tlockGetMinMaxFanSpeed                          sync.RWMutex\n\tlockGetMinorNumber                             sync.RWMutex\n\tlockGetModuleId                                sync.RWMutex\n\tlockGetMultiGpuBoard                           sync.RWMutex\n\tlockGetName                                    sync.RWMutex\n\tlockGetNumFans                                 sync.RWMutex\n\tlockGetNumGpuCores                             sync.RWMutex\n\tlockGetNumaNodeId                              sync.RWMutex\n\tlockGetNvLinkCapability                        sync.RWMutex\n\tlockGetNvLinkErrorCounter                      sync.RWMutex\n\tlockGetNvLinkInfo                              sync.RWMutex\n\tlockGetNvLinkRemoteDeviceType                  sync.RWMutex\n\tlockGetNvLinkRemotePciInfo                     sync.RWMutex\n\tlockGetNvLinkState                             sync.RWMutex\n\tlockGetNvLinkUtilizationControl                sync.RWMutex\n\tlockGetNvLinkUtilizationCounter                sync.RWMutex\n\tlockGetNvLinkVersion                           sync.RWMutex\n\tlockGetNvlinkBwMode                            sync.RWMutex\n\tlockGetNvlinkSupportedBwModes                  sync.RWMutex\n\tlockGetOfaUtilization                          sync.RWMutex\n\tlockGetP2PStatus                               sync.RWMutex\n\tlockGetPciInfo                                 sync.RWMutex\n\tlockGetPciInfoExt                              sync.RWMutex\n\tlockGetPcieLinkMaxSpeed                        sync.RWMutex\n\tlockGetPcieReplayCounter                       sync.RWMutex\n\tlockGetPcieSpeed                               sync.RWMutex\n\tlockGetPcieThroughput                          sync.RWMutex\n\tlockGetPdi                                     sync.RWMutex\n\tlockGetPerformanceModes                        sync.RWMutex\n\tlockGetPerformanceState                        sync.RWMutex\n\tlockGetPersistenceMode                         sync.RWMutex\n\tlockGetPgpuMetadataString                      sync.RWMutex\n\tlockGetPlatformInfo                            sync.RWMutex\n\tlockGetPowerManagementDefaultLimit             sync.RWMutex\n\tlockGetPowerManagementLimit                    sync.RWMutex\n\tlockGetPowerManagementLimitConstraints         sync.RWMutex\n\tlockGetPowerManagementMode                     sync.RWMutex\n\tlockGetPowerMizerMode_v1                       sync.RWMutex\n\tlockGetPowerSource                             sync.RWMutex\n\tlockGetPowerState                              sync.RWMutex\n\tlockGetPowerUsage                              sync.RWMutex\n\tlockGetProcessUtilization                      sync.RWMutex\n\tlockGetProcessesUtilizationInfo                sync.RWMutex\n\tlockGetRemappedRows                            sync.RWMutex\n\tlockGetRepairStatus                            sync.RWMutex\n\tlockGetRetiredPages                            sync.RWMutex\n\tlockGetRetiredPagesPendingStatus               sync.RWMutex\n\tlockGetRetiredPages_v2                         sync.RWMutex\n\tlockGetRowRemapperHistogram                    sync.RWMutex\n\tlockGetRunningProcessDetailList                sync.RWMutex\n\tlockGetSamples                                 sync.RWMutex\n\tlockGetSerial                                  sync.RWMutex\n\tlockGetSramEccErrorStatus                      sync.RWMutex\n\tlockGetSramUniqueUncorrectedEccErrorCounts     sync.RWMutex\n\tlockGetSupportedClocksEventReasons             sync.RWMutex\n\tlockGetSupportedClocksThrottleReasons          sync.RWMutex\n\tlockGetSupportedEventTypes                     sync.RWMutex\n\tlockGetSupportedGraphicsClocks                 sync.RWMutex\n\tlockGetSupportedMemoryClocks                   sync.RWMutex\n\tlockGetSupportedPerformanceStates              sync.RWMutex\n\tlockGetSupportedVgpus                          sync.RWMutex\n\tlockGetTargetFanSpeed                          sync.RWMutex\n\tlockGetTemperature                             sync.RWMutex\n\tlockGetTemperatureThreshold                    sync.RWMutex\n\tlockGetTemperatureV                            sync.RWMutex\n\tlockGetThermalSettings                         sync.RWMutex\n\tlockGetTopologyCommonAncestor                  sync.RWMutex\n\tlockGetTopologyNearestGpus                     sync.RWMutex\n\tlockGetTotalEccErrors                          sync.RWMutex\n\tlockGetTotalEnergyConsumption                  sync.RWMutex\n\tlockGetUUID                                    sync.RWMutex\n\tlockGetUtilizationRates                        sync.RWMutex\n\tlockGetVbiosVersion                            sync.RWMutex\n\tlockGetVgpuCapabilities                        sync.RWMutex\n\tlockGetVgpuHeterogeneousMode                   sync.RWMutex\n\tlockGetVgpuInstancesUtilizationInfo            sync.RWMutex\n\tlockGetVgpuMetadata                            sync.RWMutex\n\tlockGetVgpuProcessUtilization                  sync.RWMutex\n\tlockGetVgpuProcessesUtilizationInfo            sync.RWMutex\n\tlockGetVgpuSchedulerCapabilities               sync.RWMutex\n\tlockGetVgpuSchedulerLog                        sync.RWMutex\n\tlockGetVgpuSchedulerState                      sync.RWMutex\n\tlockGetVgpuTypeCreatablePlacements             sync.RWMutex\n\tlockGetVgpuTypeSupportedPlacements             sync.RWMutex\n\tlockGetVgpuUtilization                         sync.RWMutex\n\tlockGetViolationStatus                         sync.RWMutex\n\tlockGetVirtualizationMode                      sync.RWMutex\n\tlockGpmMigSampleGet                            sync.RWMutex\n\tlockGpmQueryDeviceSupport                      sync.RWMutex\n\tlockGpmQueryDeviceSupportV                     sync.RWMutex\n\tlockGpmQueryIfStreamingEnabled                 sync.RWMutex\n\tlockGpmSampleGet                               sync.RWMutex\n\tlockGpmSetStreamingEnabled                     sync.RWMutex\n\tlockIsMigDeviceHandle                          sync.RWMutex\n\tlockOnSameBoard                                sync.RWMutex\n\tlockPowerSmoothingActivatePresetProfile        sync.RWMutex\n\tlockPowerSmoothingSetState                     sync.RWMutex\n\tlockPowerSmoothingUpdatePresetProfileParam     sync.RWMutex\n\tlockReadWritePRM_v1                            sync.RWMutex\n\tlockRegisterEvents                             sync.RWMutex\n\tlockResetApplicationsClocks                    sync.RWMutex\n\tlockResetGpuLockedClocks                       sync.RWMutex\n\tlockResetMemoryLockedClocks                    sync.RWMutex\n\tlockResetNvLinkErrorCounters                   sync.RWMutex\n\tlockResetNvLinkUtilizationCounter              sync.RWMutex\n\tlockSetAPIRestriction                          sync.RWMutex\n\tlockSetAccountingMode                          sync.RWMutex\n\tlockSetApplicationsClocks                      sync.RWMutex\n\tlockSetAutoBoostedClocksEnabled                sync.RWMutex\n\tlockSetClockOffsets                            sync.RWMutex\n\tlockSetComputeMode                             sync.RWMutex\n\tlockSetConfComputeUnprotectedMemSize           sync.RWMutex\n\tlockSetCpuAffinity                             sync.RWMutex\n\tlockSetDefaultAutoBoostedClocksEnabled         sync.RWMutex\n\tlockSetDefaultFanSpeed_v2                      sync.RWMutex\n\tlockSetDramEncryptionMode                      sync.RWMutex\n\tlockSetDriverModel                             sync.RWMutex\n\tlockSetEccMode                                 sync.RWMutex\n\tlockSetFanControlPolicy                        sync.RWMutex\n\tlockSetFanSpeed_v2                             sync.RWMutex\n\tlockSetGpcClkVfOffset                          sync.RWMutex\n\tlockSetGpuLockedClocks                         sync.RWMutex\n\tlockSetGpuOperationMode                        sync.RWMutex\n\tlockSetMemClkVfOffset                          sync.RWMutex\n\tlockSetMemoryLockedClocks                      sync.RWMutex\n\tlockSetMigMode                                 sync.RWMutex\n\tlockSetNvLinkDeviceLowPowerThreshold           sync.RWMutex\n\tlockSetNvLinkUtilizationControl                sync.RWMutex\n\tlockSetNvlinkBwMode                            sync.RWMutex\n\tlockSetPersistenceMode                         sync.RWMutex\n\tlockSetPowerManagementLimit                    sync.RWMutex\n\tlockSetPowerManagementLimit_v2                 sync.RWMutex\n\tlockSetTemperatureThreshold                    sync.RWMutex\n\tlockSetVgpuCapabilities                        sync.RWMutex\n\tlockSetVgpuHeterogeneousMode                   sync.RWMutex\n\tlockSetVgpuSchedulerState                      sync.RWMutex\n\tlockSetVirtualizationMode                      sync.RWMutex\n\tlockValidateInforom                            sync.RWMutex\n\tlockVgpuTypeGetMaxInstances                    sync.RWMutex\n\tlockWorkloadPowerProfileClearRequestedProfiles sync.RWMutex\n\tlockWorkloadPowerProfileGetCurrentProfiles     sync.RWMutex\n\tlockWorkloadPowerProfileGetProfilesInfo        sync.RWMutex\n\tlockWorkloadPowerProfileSetRequestedProfiles   sync.RWMutex\n}\n\n// ClearAccountingPids calls ClearAccountingPidsFunc.\nfunc (mock *Device) ClearAccountingPids() nvml.Return {\n\tif mock.ClearAccountingPidsFunc == nil {\n\t\tpanic(\"Device.ClearAccountingPidsFunc: method is nil but Device.ClearAccountingPids was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockClearAccountingPids.Lock()\n\tmock.calls.ClearAccountingPids = append(mock.calls.ClearAccountingPids, callInfo)\n\tmock.lockClearAccountingPids.Unlock()\n\treturn mock.ClearAccountingPidsFunc()\n}\n\n// ClearAccountingPidsCalls gets all the calls that were made to ClearAccountingPids.\n// Check the length with:\n//\n//\tlen(mockedDevice.ClearAccountingPidsCalls())\nfunc (mock *Device) ClearAccountingPidsCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockClearAccountingPids.RLock()\n\tcalls = mock.calls.ClearAccountingPids\n\tmock.lockClearAccountingPids.RUnlock()\n\treturn calls\n}\n\n// ClearCpuAffinity calls ClearCpuAffinityFunc.\nfunc (mock *Device) ClearCpuAffinity() nvml.Return {\n\tif mock.ClearCpuAffinityFunc == nil {\n\t\tpanic(\"Device.ClearCpuAffinityFunc: method is nil but Device.ClearCpuAffinity was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockClearCpuAffinity.Lock()\n\tmock.calls.ClearCpuAffinity = append(mock.calls.ClearCpuAffinity, callInfo)\n\tmock.lockClearCpuAffinity.Unlock()\n\treturn mock.ClearCpuAffinityFunc()\n}\n\n// ClearCpuAffinityCalls gets all the calls that were made to ClearCpuAffinity.\n// Check the length with:\n//\n//\tlen(mockedDevice.ClearCpuAffinityCalls())\nfunc (mock *Device) ClearCpuAffinityCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockClearCpuAffinity.RLock()\n\tcalls = mock.calls.ClearCpuAffinity\n\tmock.lockClearCpuAffinity.RUnlock()\n\treturn calls\n}\n\n// ClearEccErrorCounts calls ClearEccErrorCountsFunc.\nfunc (mock *Device) ClearEccErrorCounts(eccCounterType nvml.EccCounterType) nvml.Return {\n\tif mock.ClearEccErrorCountsFunc == nil {\n\t\tpanic(\"Device.ClearEccErrorCountsFunc: method is nil but Device.ClearEccErrorCounts was just called\")\n\t}\n\tcallInfo := struct {\n\t\tEccCounterType nvml.EccCounterType\n\t}{\n\t\tEccCounterType: eccCounterType,\n\t}\n\tmock.lockClearEccErrorCounts.Lock()\n\tmock.calls.ClearEccErrorCounts = append(mock.calls.ClearEccErrorCounts, callInfo)\n\tmock.lockClearEccErrorCounts.Unlock()\n\treturn mock.ClearEccErrorCountsFunc(eccCounterType)\n}\n\n// ClearEccErrorCountsCalls gets all the calls that were made to ClearEccErrorCounts.\n// Check the length with:\n//\n//\tlen(mockedDevice.ClearEccErrorCountsCalls())\nfunc (mock *Device) ClearEccErrorCountsCalls() []struct {\n\tEccCounterType nvml.EccCounterType\n} {\n\tvar calls []struct {\n\t\tEccCounterType nvml.EccCounterType\n\t}\n\tmock.lockClearEccErrorCounts.RLock()\n\tcalls = mock.calls.ClearEccErrorCounts\n\tmock.lockClearEccErrorCounts.RUnlock()\n\treturn calls\n}\n\n// ClearFieldValues calls ClearFieldValuesFunc.\nfunc (mock *Device) ClearFieldValues(fieldValues []nvml.FieldValue) nvml.Return {\n\tif mock.ClearFieldValuesFunc == nil {\n\t\tpanic(\"Device.ClearFieldValuesFunc: method is nil but Device.ClearFieldValues was just called\")\n\t}\n\tcallInfo := struct {\n\t\tFieldValues []nvml.FieldValue\n\t}{\n\t\tFieldValues: fieldValues,\n\t}\n\tmock.lockClearFieldValues.Lock()\n\tmock.calls.ClearFieldValues = append(mock.calls.ClearFieldValues, callInfo)\n\tmock.lockClearFieldValues.Unlock()\n\treturn mock.ClearFieldValuesFunc(fieldValues)\n}\n\n// ClearFieldValuesCalls gets all the calls that were made to ClearFieldValues.\n// Check the length with:\n//\n//\tlen(mockedDevice.ClearFieldValuesCalls())\nfunc (mock *Device) ClearFieldValuesCalls() []struct {\n\tFieldValues []nvml.FieldValue\n} {\n\tvar calls []struct {\n\t\tFieldValues []nvml.FieldValue\n\t}\n\tmock.lockClearFieldValues.RLock()\n\tcalls = mock.calls.ClearFieldValues\n\tmock.lockClearFieldValues.RUnlock()\n\treturn calls\n}\n\n// CreateGpuInstance calls CreateGpuInstanceFunc.\nfunc (mock *Device) CreateGpuInstance(gpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo) (nvml.GpuInstance, nvml.Return) {\n\tif mock.CreateGpuInstanceFunc == nil {\n\t\tpanic(\"Device.CreateGpuInstanceFunc: method is nil but Device.CreateGpuInstance was just called\")\n\t}\n\tcallInfo := struct {\n\t\tGpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo\n\t}{\n\t\tGpuInstanceProfileInfo: gpuInstanceProfileInfo,\n\t}\n\tmock.lockCreateGpuInstance.Lock()\n\tmock.calls.CreateGpuInstance = append(mock.calls.CreateGpuInstance, callInfo)\n\tmock.lockCreateGpuInstance.Unlock()\n\treturn mock.CreateGpuInstanceFunc(gpuInstanceProfileInfo)\n}\n\n// CreateGpuInstanceCalls gets all the calls that were made to CreateGpuInstance.\n// Check the length with:\n//\n//\tlen(mockedDevice.CreateGpuInstanceCalls())\nfunc (mock *Device) CreateGpuInstanceCalls() []struct {\n\tGpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo\n} {\n\tvar calls []struct {\n\t\tGpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo\n\t}\n\tmock.lockCreateGpuInstance.RLock()\n\tcalls = mock.calls.CreateGpuInstance\n\tmock.lockCreateGpuInstance.RUnlock()\n\treturn calls\n}\n\n// CreateGpuInstanceWithPlacement calls CreateGpuInstanceWithPlacementFunc.\nfunc (mock *Device) CreateGpuInstanceWithPlacement(gpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo, gpuInstancePlacement *nvml.GpuInstancePlacement) (nvml.GpuInstance, nvml.Return) {\n\tif mock.CreateGpuInstanceWithPlacementFunc == nil {\n\t\tpanic(\"Device.CreateGpuInstanceWithPlacementFunc: method is nil but Device.CreateGpuInstanceWithPlacement was just called\")\n\t}\n\tcallInfo := struct {\n\t\tGpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo\n\t\tGpuInstancePlacement   *nvml.GpuInstancePlacement\n\t}{\n\t\tGpuInstanceProfileInfo: gpuInstanceProfileInfo,\n\t\tGpuInstancePlacement:   gpuInstancePlacement,\n\t}\n\tmock.lockCreateGpuInstanceWithPlacement.Lock()\n\tmock.calls.CreateGpuInstanceWithPlacement = append(mock.calls.CreateGpuInstanceWithPlacement, callInfo)\n\tmock.lockCreateGpuInstanceWithPlacement.Unlock()\n\treturn mock.CreateGpuInstanceWithPlacementFunc(gpuInstanceProfileInfo, gpuInstancePlacement)\n}\n\n// CreateGpuInstanceWithPlacementCalls gets all the calls that were made to CreateGpuInstanceWithPlacement.\n// Check the length with:\n//\n//\tlen(mockedDevice.CreateGpuInstanceWithPlacementCalls())\nfunc (mock *Device) CreateGpuInstanceWithPlacementCalls() []struct {\n\tGpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo\n\tGpuInstancePlacement   *nvml.GpuInstancePlacement\n} {\n\tvar calls []struct {\n\t\tGpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo\n\t\tGpuInstancePlacement   *nvml.GpuInstancePlacement\n\t}\n\tmock.lockCreateGpuInstanceWithPlacement.RLock()\n\tcalls = mock.calls.CreateGpuInstanceWithPlacement\n\tmock.lockCreateGpuInstanceWithPlacement.RUnlock()\n\treturn calls\n}\n\n// FreezeNvLinkUtilizationCounter calls FreezeNvLinkUtilizationCounterFunc.\nfunc (mock *Device) FreezeNvLinkUtilizationCounter(n1 int, n2 int, enableState nvml.EnableState) nvml.Return {\n\tif mock.FreezeNvLinkUtilizationCounterFunc == nil {\n\t\tpanic(\"Device.FreezeNvLinkUtilizationCounterFunc: method is nil but Device.FreezeNvLinkUtilizationCounter was just called\")\n\t}\n\tcallInfo := struct {\n\t\tN1          int\n\t\tN2          int\n\t\tEnableState nvml.EnableState\n\t}{\n\t\tN1:          n1,\n\t\tN2:          n2,\n\t\tEnableState: enableState,\n\t}\n\tmock.lockFreezeNvLinkUtilizationCounter.Lock()\n\tmock.calls.FreezeNvLinkUtilizationCounter = append(mock.calls.FreezeNvLinkUtilizationCounter, callInfo)\n\tmock.lockFreezeNvLinkUtilizationCounter.Unlock()\n\treturn mock.FreezeNvLinkUtilizationCounterFunc(n1, n2, enableState)\n}\n\n// FreezeNvLinkUtilizationCounterCalls gets all the calls that were made to FreezeNvLinkUtilizationCounter.\n// Check the length with:\n//\n//\tlen(mockedDevice.FreezeNvLinkUtilizationCounterCalls())\nfunc (mock *Device) FreezeNvLinkUtilizationCounterCalls() []struct {\n\tN1          int\n\tN2          int\n\tEnableState nvml.EnableState\n} {\n\tvar calls []struct {\n\t\tN1          int\n\t\tN2          int\n\t\tEnableState nvml.EnableState\n\t}\n\tmock.lockFreezeNvLinkUtilizationCounter.RLock()\n\tcalls = mock.calls.FreezeNvLinkUtilizationCounter\n\tmock.lockFreezeNvLinkUtilizationCounter.RUnlock()\n\treturn calls\n}\n\n// GetAPIRestriction calls GetAPIRestrictionFunc.\nfunc (mock *Device) GetAPIRestriction(restrictedAPI nvml.RestrictedAPI) (nvml.EnableState, nvml.Return) {\n\tif mock.GetAPIRestrictionFunc == nil {\n\t\tpanic(\"Device.GetAPIRestrictionFunc: method is nil but Device.GetAPIRestriction was just called\")\n\t}\n\tcallInfo := struct {\n\t\tRestrictedAPI nvml.RestrictedAPI\n\t}{\n\t\tRestrictedAPI: restrictedAPI,\n\t}\n\tmock.lockGetAPIRestriction.Lock()\n\tmock.calls.GetAPIRestriction = append(mock.calls.GetAPIRestriction, callInfo)\n\tmock.lockGetAPIRestriction.Unlock()\n\treturn mock.GetAPIRestrictionFunc(restrictedAPI)\n}\n\n// GetAPIRestrictionCalls gets all the calls that were made to GetAPIRestriction.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetAPIRestrictionCalls())\nfunc (mock *Device) GetAPIRestrictionCalls() []struct {\n\tRestrictedAPI nvml.RestrictedAPI\n} {\n\tvar calls []struct {\n\t\tRestrictedAPI nvml.RestrictedAPI\n\t}\n\tmock.lockGetAPIRestriction.RLock()\n\tcalls = mock.calls.GetAPIRestriction\n\tmock.lockGetAPIRestriction.RUnlock()\n\treturn calls\n}\n\n// GetAccountingBufferSize calls GetAccountingBufferSizeFunc.\nfunc (mock *Device) GetAccountingBufferSize() (int, nvml.Return) {\n\tif mock.GetAccountingBufferSizeFunc == nil {\n\t\tpanic(\"Device.GetAccountingBufferSizeFunc: method is nil but Device.GetAccountingBufferSize was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetAccountingBufferSize.Lock()\n\tmock.calls.GetAccountingBufferSize = append(mock.calls.GetAccountingBufferSize, callInfo)\n\tmock.lockGetAccountingBufferSize.Unlock()\n\treturn mock.GetAccountingBufferSizeFunc()\n}\n\n// GetAccountingBufferSizeCalls gets all the calls that were made to GetAccountingBufferSize.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetAccountingBufferSizeCalls())\nfunc (mock *Device) GetAccountingBufferSizeCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetAccountingBufferSize.RLock()\n\tcalls = mock.calls.GetAccountingBufferSize\n\tmock.lockGetAccountingBufferSize.RUnlock()\n\treturn calls\n}\n\n// GetAccountingMode calls GetAccountingModeFunc.\nfunc (mock *Device) GetAccountingMode() (nvml.EnableState, nvml.Return) {\n\tif mock.GetAccountingModeFunc == nil {\n\t\tpanic(\"Device.GetAccountingModeFunc: method is nil but Device.GetAccountingMode was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetAccountingMode.Lock()\n\tmock.calls.GetAccountingMode = append(mock.calls.GetAccountingMode, callInfo)\n\tmock.lockGetAccountingMode.Unlock()\n\treturn mock.GetAccountingModeFunc()\n}\n\n// GetAccountingModeCalls gets all the calls that were made to GetAccountingMode.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetAccountingModeCalls())\nfunc (mock *Device) GetAccountingModeCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetAccountingMode.RLock()\n\tcalls = mock.calls.GetAccountingMode\n\tmock.lockGetAccountingMode.RUnlock()\n\treturn calls\n}\n\n// GetAccountingPids calls GetAccountingPidsFunc.\nfunc (mock *Device) GetAccountingPids() ([]int, nvml.Return) {\n\tif mock.GetAccountingPidsFunc == nil {\n\t\tpanic(\"Device.GetAccountingPidsFunc: method is nil but Device.GetAccountingPids was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetAccountingPids.Lock()\n\tmock.calls.GetAccountingPids = append(mock.calls.GetAccountingPids, callInfo)\n\tmock.lockGetAccountingPids.Unlock()\n\treturn mock.GetAccountingPidsFunc()\n}\n\n// GetAccountingPidsCalls gets all the calls that were made to GetAccountingPids.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetAccountingPidsCalls())\nfunc (mock *Device) GetAccountingPidsCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetAccountingPids.RLock()\n\tcalls = mock.calls.GetAccountingPids\n\tmock.lockGetAccountingPids.RUnlock()\n\treturn calls\n}\n\n// GetAccountingStats calls GetAccountingStatsFunc.\nfunc (mock *Device) GetAccountingStats(v uint32) (nvml.AccountingStats, nvml.Return) {\n\tif mock.GetAccountingStatsFunc == nil {\n\t\tpanic(\"Device.GetAccountingStatsFunc: method is nil but Device.GetAccountingStats was just called\")\n\t}\n\tcallInfo := struct {\n\t\tV uint32\n\t}{\n\t\tV: v,\n\t}\n\tmock.lockGetAccountingStats.Lock()\n\tmock.calls.GetAccountingStats = append(mock.calls.GetAccountingStats, callInfo)\n\tmock.lockGetAccountingStats.Unlock()\n\treturn mock.GetAccountingStatsFunc(v)\n}\n\n// GetAccountingStatsCalls gets all the calls that were made to GetAccountingStats.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetAccountingStatsCalls())\nfunc (mock *Device) GetAccountingStatsCalls() []struct {\n\tV uint32\n} {\n\tvar calls []struct {\n\t\tV uint32\n\t}\n\tmock.lockGetAccountingStats.RLock()\n\tcalls = mock.calls.GetAccountingStats\n\tmock.lockGetAccountingStats.RUnlock()\n\treturn calls\n}\n\n// GetActiveVgpus calls GetActiveVgpusFunc.\nfunc (mock *Device) GetActiveVgpus() ([]nvml.VgpuInstance, nvml.Return) {\n\tif mock.GetActiveVgpusFunc == nil {\n\t\tpanic(\"Device.GetActiveVgpusFunc: method is nil but Device.GetActiveVgpus was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetActiveVgpus.Lock()\n\tmock.calls.GetActiveVgpus = append(mock.calls.GetActiveVgpus, callInfo)\n\tmock.lockGetActiveVgpus.Unlock()\n\treturn mock.GetActiveVgpusFunc()\n}\n\n// GetActiveVgpusCalls gets all the calls that were made to GetActiveVgpus.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetActiveVgpusCalls())\nfunc (mock *Device) GetActiveVgpusCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetActiveVgpus.RLock()\n\tcalls = mock.calls.GetActiveVgpus\n\tmock.lockGetActiveVgpus.RUnlock()\n\treturn calls\n}\n\n// GetAdaptiveClockInfoStatus calls GetAdaptiveClockInfoStatusFunc.\nfunc (mock *Device) GetAdaptiveClockInfoStatus() (uint32, nvml.Return) {\n\tif mock.GetAdaptiveClockInfoStatusFunc == nil {\n\t\tpanic(\"Device.GetAdaptiveClockInfoStatusFunc: method is nil but Device.GetAdaptiveClockInfoStatus was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetAdaptiveClockInfoStatus.Lock()\n\tmock.calls.GetAdaptiveClockInfoStatus = append(mock.calls.GetAdaptiveClockInfoStatus, callInfo)\n\tmock.lockGetAdaptiveClockInfoStatus.Unlock()\n\treturn mock.GetAdaptiveClockInfoStatusFunc()\n}\n\n// GetAdaptiveClockInfoStatusCalls gets all the calls that were made to GetAdaptiveClockInfoStatus.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetAdaptiveClockInfoStatusCalls())\nfunc (mock *Device) GetAdaptiveClockInfoStatusCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetAdaptiveClockInfoStatus.RLock()\n\tcalls = mock.calls.GetAdaptiveClockInfoStatus\n\tmock.lockGetAdaptiveClockInfoStatus.RUnlock()\n\treturn calls\n}\n\n// GetAddressingMode calls GetAddressingModeFunc.\nfunc (mock *Device) GetAddressingMode() (nvml.DeviceAddressingMode, nvml.Return) {\n\tif mock.GetAddressingModeFunc == nil {\n\t\tpanic(\"Device.GetAddressingModeFunc: method is nil but Device.GetAddressingMode was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetAddressingMode.Lock()\n\tmock.calls.GetAddressingMode = append(mock.calls.GetAddressingMode, callInfo)\n\tmock.lockGetAddressingMode.Unlock()\n\treturn mock.GetAddressingModeFunc()\n}\n\n// GetAddressingModeCalls gets all the calls that were made to GetAddressingMode.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetAddressingModeCalls())\nfunc (mock *Device) GetAddressingModeCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetAddressingMode.RLock()\n\tcalls = mock.calls.GetAddressingMode\n\tmock.lockGetAddressingMode.RUnlock()\n\treturn calls\n}\n\n// GetApplicationsClock calls GetApplicationsClockFunc.\nfunc (mock *Device) GetApplicationsClock(clockType nvml.ClockType) (uint32, nvml.Return) {\n\tif mock.GetApplicationsClockFunc == nil {\n\t\tpanic(\"Device.GetApplicationsClockFunc: method is nil but Device.GetApplicationsClock was just called\")\n\t}\n\tcallInfo := struct {\n\t\tClockType nvml.ClockType\n\t}{\n\t\tClockType: clockType,\n\t}\n\tmock.lockGetApplicationsClock.Lock()\n\tmock.calls.GetApplicationsClock = append(mock.calls.GetApplicationsClock, callInfo)\n\tmock.lockGetApplicationsClock.Unlock()\n\treturn mock.GetApplicationsClockFunc(clockType)\n}\n\n// GetApplicationsClockCalls gets all the calls that were made to GetApplicationsClock.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetApplicationsClockCalls())\nfunc (mock *Device) GetApplicationsClockCalls() []struct {\n\tClockType nvml.ClockType\n} {\n\tvar calls []struct {\n\t\tClockType nvml.ClockType\n\t}\n\tmock.lockGetApplicationsClock.RLock()\n\tcalls = mock.calls.GetApplicationsClock\n\tmock.lockGetApplicationsClock.RUnlock()\n\treturn calls\n}\n\n// GetArchitecture calls GetArchitectureFunc.\nfunc (mock *Device) GetArchitecture() (nvml.DeviceArchitecture, nvml.Return) {\n\tif mock.GetArchitectureFunc == nil {\n\t\tpanic(\"Device.GetArchitectureFunc: method is nil but Device.GetArchitecture was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetArchitecture.Lock()\n\tmock.calls.GetArchitecture = append(mock.calls.GetArchitecture, callInfo)\n\tmock.lockGetArchitecture.Unlock()\n\treturn mock.GetArchitectureFunc()\n}\n\n// GetArchitectureCalls gets all the calls that were made to GetArchitecture.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetArchitectureCalls())\nfunc (mock *Device) GetArchitectureCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetArchitecture.RLock()\n\tcalls = mock.calls.GetArchitecture\n\tmock.lockGetArchitecture.RUnlock()\n\treturn calls\n}\n\n// GetAttributes calls GetAttributesFunc.\nfunc (mock *Device) GetAttributes() (nvml.DeviceAttributes, nvml.Return) {\n\tif mock.GetAttributesFunc == nil {\n\t\tpanic(\"Device.GetAttributesFunc: method is nil but Device.GetAttributes was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetAttributes.Lock()\n\tmock.calls.GetAttributes = append(mock.calls.GetAttributes, callInfo)\n\tmock.lockGetAttributes.Unlock()\n\treturn mock.GetAttributesFunc()\n}\n\n// GetAttributesCalls gets all the calls that were made to GetAttributes.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetAttributesCalls())\nfunc (mock *Device) GetAttributesCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetAttributes.RLock()\n\tcalls = mock.calls.GetAttributes\n\tmock.lockGetAttributes.RUnlock()\n\treturn calls\n}\n\n// GetAutoBoostedClocksEnabled calls GetAutoBoostedClocksEnabledFunc.\nfunc (mock *Device) GetAutoBoostedClocksEnabled() (nvml.EnableState, nvml.EnableState, nvml.Return) {\n\tif mock.GetAutoBoostedClocksEnabledFunc == nil {\n\t\tpanic(\"Device.GetAutoBoostedClocksEnabledFunc: method is nil but Device.GetAutoBoostedClocksEnabled was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetAutoBoostedClocksEnabled.Lock()\n\tmock.calls.GetAutoBoostedClocksEnabled = append(mock.calls.GetAutoBoostedClocksEnabled, callInfo)\n\tmock.lockGetAutoBoostedClocksEnabled.Unlock()\n\treturn mock.GetAutoBoostedClocksEnabledFunc()\n}\n\n// GetAutoBoostedClocksEnabledCalls gets all the calls that were made to GetAutoBoostedClocksEnabled.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetAutoBoostedClocksEnabledCalls())\nfunc (mock *Device) GetAutoBoostedClocksEnabledCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetAutoBoostedClocksEnabled.RLock()\n\tcalls = mock.calls.GetAutoBoostedClocksEnabled\n\tmock.lockGetAutoBoostedClocksEnabled.RUnlock()\n\treturn calls\n}\n\n// GetBAR1MemoryInfo calls GetBAR1MemoryInfoFunc.\nfunc (mock *Device) GetBAR1MemoryInfo() (nvml.BAR1Memory, nvml.Return) {\n\tif mock.GetBAR1MemoryInfoFunc == nil {\n\t\tpanic(\"Device.GetBAR1MemoryInfoFunc: method is nil but Device.GetBAR1MemoryInfo was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetBAR1MemoryInfo.Lock()\n\tmock.calls.GetBAR1MemoryInfo = append(mock.calls.GetBAR1MemoryInfo, callInfo)\n\tmock.lockGetBAR1MemoryInfo.Unlock()\n\treturn mock.GetBAR1MemoryInfoFunc()\n}\n\n// GetBAR1MemoryInfoCalls gets all the calls that were made to GetBAR1MemoryInfo.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetBAR1MemoryInfoCalls())\nfunc (mock *Device) GetBAR1MemoryInfoCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetBAR1MemoryInfo.RLock()\n\tcalls = mock.calls.GetBAR1MemoryInfo\n\tmock.lockGetBAR1MemoryInfo.RUnlock()\n\treturn calls\n}\n\n// GetBoardId calls GetBoardIdFunc.\nfunc (mock *Device) GetBoardId() (uint32, nvml.Return) {\n\tif mock.GetBoardIdFunc == nil {\n\t\tpanic(\"Device.GetBoardIdFunc: method is nil but Device.GetBoardId was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetBoardId.Lock()\n\tmock.calls.GetBoardId = append(mock.calls.GetBoardId, callInfo)\n\tmock.lockGetBoardId.Unlock()\n\treturn mock.GetBoardIdFunc()\n}\n\n// GetBoardIdCalls gets all the calls that were made to GetBoardId.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetBoardIdCalls())\nfunc (mock *Device) GetBoardIdCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetBoardId.RLock()\n\tcalls = mock.calls.GetBoardId\n\tmock.lockGetBoardId.RUnlock()\n\treturn calls\n}\n\n// GetBoardPartNumber calls GetBoardPartNumberFunc.\nfunc (mock *Device) GetBoardPartNumber() (string, nvml.Return) {\n\tif mock.GetBoardPartNumberFunc == nil {\n\t\tpanic(\"Device.GetBoardPartNumberFunc: method is nil but Device.GetBoardPartNumber was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetBoardPartNumber.Lock()\n\tmock.calls.GetBoardPartNumber = append(mock.calls.GetBoardPartNumber, callInfo)\n\tmock.lockGetBoardPartNumber.Unlock()\n\treturn mock.GetBoardPartNumberFunc()\n}\n\n// GetBoardPartNumberCalls gets all the calls that were made to GetBoardPartNumber.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetBoardPartNumberCalls())\nfunc (mock *Device) GetBoardPartNumberCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetBoardPartNumber.RLock()\n\tcalls = mock.calls.GetBoardPartNumber\n\tmock.lockGetBoardPartNumber.RUnlock()\n\treturn calls\n}\n\n// GetBrand calls GetBrandFunc.\nfunc (mock *Device) GetBrand() (nvml.BrandType, nvml.Return) {\n\tif mock.GetBrandFunc == nil {\n\t\tpanic(\"Device.GetBrandFunc: method is nil but Device.GetBrand was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetBrand.Lock()\n\tmock.calls.GetBrand = append(mock.calls.GetBrand, callInfo)\n\tmock.lockGetBrand.Unlock()\n\treturn mock.GetBrandFunc()\n}\n\n// GetBrandCalls gets all the calls that were made to GetBrand.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetBrandCalls())\nfunc (mock *Device) GetBrandCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetBrand.RLock()\n\tcalls = mock.calls.GetBrand\n\tmock.lockGetBrand.RUnlock()\n\treturn calls\n}\n\n// GetBridgeChipInfo calls GetBridgeChipInfoFunc.\nfunc (mock *Device) GetBridgeChipInfo() (nvml.BridgeChipHierarchy, nvml.Return) {\n\tif mock.GetBridgeChipInfoFunc == nil {\n\t\tpanic(\"Device.GetBridgeChipInfoFunc: method is nil but Device.GetBridgeChipInfo was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetBridgeChipInfo.Lock()\n\tmock.calls.GetBridgeChipInfo = append(mock.calls.GetBridgeChipInfo, callInfo)\n\tmock.lockGetBridgeChipInfo.Unlock()\n\treturn mock.GetBridgeChipInfoFunc()\n}\n\n// GetBridgeChipInfoCalls gets all the calls that were made to GetBridgeChipInfo.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetBridgeChipInfoCalls())\nfunc (mock *Device) GetBridgeChipInfoCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetBridgeChipInfo.RLock()\n\tcalls = mock.calls.GetBridgeChipInfo\n\tmock.lockGetBridgeChipInfo.RUnlock()\n\treturn calls\n}\n\n// GetBusType calls GetBusTypeFunc.\nfunc (mock *Device) GetBusType() (nvml.BusType, nvml.Return) {\n\tif mock.GetBusTypeFunc == nil {\n\t\tpanic(\"Device.GetBusTypeFunc: method is nil but Device.GetBusType was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetBusType.Lock()\n\tmock.calls.GetBusType = append(mock.calls.GetBusType, callInfo)\n\tmock.lockGetBusType.Unlock()\n\treturn mock.GetBusTypeFunc()\n}\n\n// GetBusTypeCalls gets all the calls that were made to GetBusType.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetBusTypeCalls())\nfunc (mock *Device) GetBusTypeCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetBusType.RLock()\n\tcalls = mock.calls.GetBusType\n\tmock.lockGetBusType.RUnlock()\n\treturn calls\n}\n\n// GetC2cModeInfoV calls GetC2cModeInfoVFunc.\nfunc (mock *Device) GetC2cModeInfoV() nvml.C2cModeInfoHandler {\n\tif mock.GetC2cModeInfoVFunc == nil {\n\t\tpanic(\"Device.GetC2cModeInfoVFunc: method is nil but Device.GetC2cModeInfoV was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetC2cModeInfoV.Lock()\n\tmock.calls.GetC2cModeInfoV = append(mock.calls.GetC2cModeInfoV, callInfo)\n\tmock.lockGetC2cModeInfoV.Unlock()\n\treturn mock.GetC2cModeInfoVFunc()\n}\n\n// GetC2cModeInfoVCalls gets all the calls that were made to GetC2cModeInfoV.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetC2cModeInfoVCalls())\nfunc (mock *Device) GetC2cModeInfoVCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetC2cModeInfoV.RLock()\n\tcalls = mock.calls.GetC2cModeInfoV\n\tmock.lockGetC2cModeInfoV.RUnlock()\n\treturn calls\n}\n\n// GetCapabilities calls GetCapabilitiesFunc.\nfunc (mock *Device) GetCapabilities() (nvml.DeviceCapabilities, nvml.Return) {\n\tif mock.GetCapabilitiesFunc == nil {\n\t\tpanic(\"Device.GetCapabilitiesFunc: method is nil but Device.GetCapabilities was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetCapabilities.Lock()\n\tmock.calls.GetCapabilities = append(mock.calls.GetCapabilities, callInfo)\n\tmock.lockGetCapabilities.Unlock()\n\treturn mock.GetCapabilitiesFunc()\n}\n\n// GetCapabilitiesCalls gets all the calls that were made to GetCapabilities.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetCapabilitiesCalls())\nfunc (mock *Device) GetCapabilitiesCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetCapabilities.RLock()\n\tcalls = mock.calls.GetCapabilities\n\tmock.lockGetCapabilities.RUnlock()\n\treturn calls\n}\n\n// GetClkMonStatus calls GetClkMonStatusFunc.\nfunc (mock *Device) GetClkMonStatus() (nvml.ClkMonStatus, nvml.Return) {\n\tif mock.GetClkMonStatusFunc == nil {\n\t\tpanic(\"Device.GetClkMonStatusFunc: method is nil but Device.GetClkMonStatus was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetClkMonStatus.Lock()\n\tmock.calls.GetClkMonStatus = append(mock.calls.GetClkMonStatus, callInfo)\n\tmock.lockGetClkMonStatus.Unlock()\n\treturn mock.GetClkMonStatusFunc()\n}\n\n// GetClkMonStatusCalls gets all the calls that were made to GetClkMonStatus.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetClkMonStatusCalls())\nfunc (mock *Device) GetClkMonStatusCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetClkMonStatus.RLock()\n\tcalls = mock.calls.GetClkMonStatus\n\tmock.lockGetClkMonStatus.RUnlock()\n\treturn calls\n}\n\n// GetClock calls GetClockFunc.\nfunc (mock *Device) GetClock(clockType nvml.ClockType, clockId nvml.ClockId) (uint32, nvml.Return) {\n\tif mock.GetClockFunc == nil {\n\t\tpanic(\"Device.GetClockFunc: method is nil but Device.GetClock was just called\")\n\t}\n\tcallInfo := struct {\n\t\tClockType nvml.ClockType\n\t\tClockId   nvml.ClockId\n\t}{\n\t\tClockType: clockType,\n\t\tClockId:   clockId,\n\t}\n\tmock.lockGetClock.Lock()\n\tmock.calls.GetClock = append(mock.calls.GetClock, callInfo)\n\tmock.lockGetClock.Unlock()\n\treturn mock.GetClockFunc(clockType, clockId)\n}\n\n// GetClockCalls gets all the calls that were made to GetClock.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetClockCalls())\nfunc (mock *Device) GetClockCalls() []struct {\n\tClockType nvml.ClockType\n\tClockId   nvml.ClockId\n} {\n\tvar calls []struct {\n\t\tClockType nvml.ClockType\n\t\tClockId   nvml.ClockId\n\t}\n\tmock.lockGetClock.RLock()\n\tcalls = mock.calls.GetClock\n\tmock.lockGetClock.RUnlock()\n\treturn calls\n}\n\n// GetClockInfo calls GetClockInfoFunc.\nfunc (mock *Device) GetClockInfo(clockType nvml.ClockType) (uint32, nvml.Return) {\n\tif mock.GetClockInfoFunc == nil {\n\t\tpanic(\"Device.GetClockInfoFunc: method is nil but Device.GetClockInfo was just called\")\n\t}\n\tcallInfo := struct {\n\t\tClockType nvml.ClockType\n\t}{\n\t\tClockType: clockType,\n\t}\n\tmock.lockGetClockInfo.Lock()\n\tmock.calls.GetClockInfo = append(mock.calls.GetClockInfo, callInfo)\n\tmock.lockGetClockInfo.Unlock()\n\treturn mock.GetClockInfoFunc(clockType)\n}\n\n// GetClockInfoCalls gets all the calls that were made to GetClockInfo.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetClockInfoCalls())\nfunc (mock *Device) GetClockInfoCalls() []struct {\n\tClockType nvml.ClockType\n} {\n\tvar calls []struct {\n\t\tClockType nvml.ClockType\n\t}\n\tmock.lockGetClockInfo.RLock()\n\tcalls = mock.calls.GetClockInfo\n\tmock.lockGetClockInfo.RUnlock()\n\treturn calls\n}\n\n// GetClockOffsets calls GetClockOffsetsFunc.\nfunc (mock *Device) GetClockOffsets() (nvml.ClockOffset, nvml.Return) {\n\tif mock.GetClockOffsetsFunc == nil {\n\t\tpanic(\"Device.GetClockOffsetsFunc: method is nil but Device.GetClockOffsets was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetClockOffsets.Lock()\n\tmock.calls.GetClockOffsets = append(mock.calls.GetClockOffsets, callInfo)\n\tmock.lockGetClockOffsets.Unlock()\n\treturn mock.GetClockOffsetsFunc()\n}\n\n// GetClockOffsetsCalls gets all the calls that were made to GetClockOffsets.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetClockOffsetsCalls())\nfunc (mock *Device) GetClockOffsetsCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetClockOffsets.RLock()\n\tcalls = mock.calls.GetClockOffsets\n\tmock.lockGetClockOffsets.RUnlock()\n\treturn calls\n}\n\n// GetComputeInstanceId calls GetComputeInstanceIdFunc.\nfunc (mock *Device) GetComputeInstanceId() (int, nvml.Return) {\n\tif mock.GetComputeInstanceIdFunc == nil {\n\t\tpanic(\"Device.GetComputeInstanceIdFunc: method is nil but Device.GetComputeInstanceId was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetComputeInstanceId.Lock()\n\tmock.calls.GetComputeInstanceId = append(mock.calls.GetComputeInstanceId, callInfo)\n\tmock.lockGetComputeInstanceId.Unlock()\n\treturn mock.GetComputeInstanceIdFunc()\n}\n\n// GetComputeInstanceIdCalls gets all the calls that were made to GetComputeInstanceId.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetComputeInstanceIdCalls())\nfunc (mock *Device) GetComputeInstanceIdCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetComputeInstanceId.RLock()\n\tcalls = mock.calls.GetComputeInstanceId\n\tmock.lockGetComputeInstanceId.RUnlock()\n\treturn calls\n}\n\n// GetComputeMode calls GetComputeModeFunc.\nfunc (mock *Device) GetComputeMode() (nvml.ComputeMode, nvml.Return) {\n\tif mock.GetComputeModeFunc == nil {\n\t\tpanic(\"Device.GetComputeModeFunc: method is nil but Device.GetComputeMode was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetComputeMode.Lock()\n\tmock.calls.GetComputeMode = append(mock.calls.GetComputeMode, callInfo)\n\tmock.lockGetComputeMode.Unlock()\n\treturn mock.GetComputeModeFunc()\n}\n\n// GetComputeModeCalls gets all the calls that were made to GetComputeMode.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetComputeModeCalls())\nfunc (mock *Device) GetComputeModeCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetComputeMode.RLock()\n\tcalls = mock.calls.GetComputeMode\n\tmock.lockGetComputeMode.RUnlock()\n\treturn calls\n}\n\n// GetComputeRunningProcesses calls GetComputeRunningProcessesFunc.\nfunc (mock *Device) GetComputeRunningProcesses() ([]nvml.ProcessInfo, nvml.Return) {\n\tif mock.GetComputeRunningProcessesFunc == nil {\n\t\tpanic(\"Device.GetComputeRunningProcessesFunc: method is nil but Device.GetComputeRunningProcesses was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetComputeRunningProcesses.Lock()\n\tmock.calls.GetComputeRunningProcesses = append(mock.calls.GetComputeRunningProcesses, callInfo)\n\tmock.lockGetComputeRunningProcesses.Unlock()\n\treturn mock.GetComputeRunningProcessesFunc()\n}\n\n// GetComputeRunningProcessesCalls gets all the calls that were made to GetComputeRunningProcesses.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetComputeRunningProcessesCalls())\nfunc (mock *Device) GetComputeRunningProcessesCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetComputeRunningProcesses.RLock()\n\tcalls = mock.calls.GetComputeRunningProcesses\n\tmock.lockGetComputeRunningProcesses.RUnlock()\n\treturn calls\n}\n\n// GetConfComputeGpuAttestationReport calls GetConfComputeGpuAttestationReportFunc.\nfunc (mock *Device) GetConfComputeGpuAttestationReport(confComputeGpuAttestationReport *nvml.ConfComputeGpuAttestationReport) nvml.Return {\n\tif mock.GetConfComputeGpuAttestationReportFunc == nil {\n\t\tpanic(\"Device.GetConfComputeGpuAttestationReportFunc: method is nil but Device.GetConfComputeGpuAttestationReport was just called\")\n\t}\n\tcallInfo := struct {\n\t\tConfComputeGpuAttestationReport *nvml.ConfComputeGpuAttestationReport\n\t}{\n\t\tConfComputeGpuAttestationReport: confComputeGpuAttestationReport,\n\t}\n\tmock.lockGetConfComputeGpuAttestationReport.Lock()\n\tmock.calls.GetConfComputeGpuAttestationReport = append(mock.calls.GetConfComputeGpuAttestationReport, callInfo)\n\tmock.lockGetConfComputeGpuAttestationReport.Unlock()\n\treturn mock.GetConfComputeGpuAttestationReportFunc(confComputeGpuAttestationReport)\n}\n\n// GetConfComputeGpuAttestationReportCalls gets all the calls that were made to GetConfComputeGpuAttestationReport.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetConfComputeGpuAttestationReportCalls())\nfunc (mock *Device) GetConfComputeGpuAttestationReportCalls() []struct {\n\tConfComputeGpuAttestationReport *nvml.ConfComputeGpuAttestationReport\n} {\n\tvar calls []struct {\n\t\tConfComputeGpuAttestationReport *nvml.ConfComputeGpuAttestationReport\n\t}\n\tmock.lockGetConfComputeGpuAttestationReport.RLock()\n\tcalls = mock.calls.GetConfComputeGpuAttestationReport\n\tmock.lockGetConfComputeGpuAttestationReport.RUnlock()\n\treturn calls\n}\n\n// GetConfComputeGpuCertificate calls GetConfComputeGpuCertificateFunc.\nfunc (mock *Device) GetConfComputeGpuCertificate() (nvml.ConfComputeGpuCertificate, nvml.Return) {\n\tif mock.GetConfComputeGpuCertificateFunc == nil {\n\t\tpanic(\"Device.GetConfComputeGpuCertificateFunc: method is nil but Device.GetConfComputeGpuCertificate was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetConfComputeGpuCertificate.Lock()\n\tmock.calls.GetConfComputeGpuCertificate = append(mock.calls.GetConfComputeGpuCertificate, callInfo)\n\tmock.lockGetConfComputeGpuCertificate.Unlock()\n\treturn mock.GetConfComputeGpuCertificateFunc()\n}\n\n// GetConfComputeGpuCertificateCalls gets all the calls that were made to GetConfComputeGpuCertificate.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetConfComputeGpuCertificateCalls())\nfunc (mock *Device) GetConfComputeGpuCertificateCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetConfComputeGpuCertificate.RLock()\n\tcalls = mock.calls.GetConfComputeGpuCertificate\n\tmock.lockGetConfComputeGpuCertificate.RUnlock()\n\treturn calls\n}\n\n// GetConfComputeMemSizeInfo calls GetConfComputeMemSizeInfoFunc.\nfunc (mock *Device) GetConfComputeMemSizeInfo() (nvml.ConfComputeMemSizeInfo, nvml.Return) {\n\tif mock.GetConfComputeMemSizeInfoFunc == nil {\n\t\tpanic(\"Device.GetConfComputeMemSizeInfoFunc: method is nil but Device.GetConfComputeMemSizeInfo was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetConfComputeMemSizeInfo.Lock()\n\tmock.calls.GetConfComputeMemSizeInfo = append(mock.calls.GetConfComputeMemSizeInfo, callInfo)\n\tmock.lockGetConfComputeMemSizeInfo.Unlock()\n\treturn mock.GetConfComputeMemSizeInfoFunc()\n}\n\n// GetConfComputeMemSizeInfoCalls gets all the calls that were made to GetConfComputeMemSizeInfo.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetConfComputeMemSizeInfoCalls())\nfunc (mock *Device) GetConfComputeMemSizeInfoCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetConfComputeMemSizeInfo.RLock()\n\tcalls = mock.calls.GetConfComputeMemSizeInfo\n\tmock.lockGetConfComputeMemSizeInfo.RUnlock()\n\treturn calls\n}\n\n// GetConfComputeProtectedMemoryUsage calls GetConfComputeProtectedMemoryUsageFunc.\nfunc (mock *Device) GetConfComputeProtectedMemoryUsage() (nvml.Memory, nvml.Return) {\n\tif mock.GetConfComputeProtectedMemoryUsageFunc == nil {\n\t\tpanic(\"Device.GetConfComputeProtectedMemoryUsageFunc: method is nil but Device.GetConfComputeProtectedMemoryUsage was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetConfComputeProtectedMemoryUsage.Lock()\n\tmock.calls.GetConfComputeProtectedMemoryUsage = append(mock.calls.GetConfComputeProtectedMemoryUsage, callInfo)\n\tmock.lockGetConfComputeProtectedMemoryUsage.Unlock()\n\treturn mock.GetConfComputeProtectedMemoryUsageFunc()\n}\n\n// GetConfComputeProtectedMemoryUsageCalls gets all the calls that were made to GetConfComputeProtectedMemoryUsage.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetConfComputeProtectedMemoryUsageCalls())\nfunc (mock *Device) GetConfComputeProtectedMemoryUsageCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetConfComputeProtectedMemoryUsage.RLock()\n\tcalls = mock.calls.GetConfComputeProtectedMemoryUsage\n\tmock.lockGetConfComputeProtectedMemoryUsage.RUnlock()\n\treturn calls\n}\n\n// GetCoolerInfo calls GetCoolerInfoFunc.\nfunc (mock *Device) GetCoolerInfo() (nvml.CoolerInfo, nvml.Return) {\n\tif mock.GetCoolerInfoFunc == nil {\n\t\tpanic(\"Device.GetCoolerInfoFunc: method is nil but Device.GetCoolerInfo was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetCoolerInfo.Lock()\n\tmock.calls.GetCoolerInfo = append(mock.calls.GetCoolerInfo, callInfo)\n\tmock.lockGetCoolerInfo.Unlock()\n\treturn mock.GetCoolerInfoFunc()\n}\n\n// GetCoolerInfoCalls gets all the calls that were made to GetCoolerInfo.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetCoolerInfoCalls())\nfunc (mock *Device) GetCoolerInfoCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetCoolerInfo.RLock()\n\tcalls = mock.calls.GetCoolerInfo\n\tmock.lockGetCoolerInfo.RUnlock()\n\treturn calls\n}\n\n// GetCpuAffinity calls GetCpuAffinityFunc.\nfunc (mock *Device) GetCpuAffinity(n int) ([]uint, nvml.Return) {\n\tif mock.GetCpuAffinityFunc == nil {\n\t\tpanic(\"Device.GetCpuAffinityFunc: method is nil but Device.GetCpuAffinity was just called\")\n\t}\n\tcallInfo := struct {\n\t\tN int\n\t}{\n\t\tN: n,\n\t}\n\tmock.lockGetCpuAffinity.Lock()\n\tmock.calls.GetCpuAffinity = append(mock.calls.GetCpuAffinity, callInfo)\n\tmock.lockGetCpuAffinity.Unlock()\n\treturn mock.GetCpuAffinityFunc(n)\n}\n\n// GetCpuAffinityCalls gets all the calls that were made to GetCpuAffinity.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetCpuAffinityCalls())\nfunc (mock *Device) GetCpuAffinityCalls() []struct {\n\tN int\n} {\n\tvar calls []struct {\n\t\tN int\n\t}\n\tmock.lockGetCpuAffinity.RLock()\n\tcalls = mock.calls.GetCpuAffinity\n\tmock.lockGetCpuAffinity.RUnlock()\n\treturn calls\n}\n\n// GetCpuAffinityWithinScope calls GetCpuAffinityWithinScopeFunc.\nfunc (mock *Device) GetCpuAffinityWithinScope(n int, affinityScope nvml.AffinityScope) ([]uint, nvml.Return) {\n\tif mock.GetCpuAffinityWithinScopeFunc == nil {\n\t\tpanic(\"Device.GetCpuAffinityWithinScopeFunc: method is nil but Device.GetCpuAffinityWithinScope was just called\")\n\t}\n\tcallInfo := struct {\n\t\tN             int\n\t\tAffinityScope nvml.AffinityScope\n\t}{\n\t\tN:             n,\n\t\tAffinityScope: affinityScope,\n\t}\n\tmock.lockGetCpuAffinityWithinScope.Lock()\n\tmock.calls.GetCpuAffinityWithinScope = append(mock.calls.GetCpuAffinityWithinScope, callInfo)\n\tmock.lockGetCpuAffinityWithinScope.Unlock()\n\treturn mock.GetCpuAffinityWithinScopeFunc(n, affinityScope)\n}\n\n// GetCpuAffinityWithinScopeCalls gets all the calls that were made to GetCpuAffinityWithinScope.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetCpuAffinityWithinScopeCalls())\nfunc (mock *Device) GetCpuAffinityWithinScopeCalls() []struct {\n\tN             int\n\tAffinityScope nvml.AffinityScope\n} {\n\tvar calls []struct {\n\t\tN             int\n\t\tAffinityScope nvml.AffinityScope\n\t}\n\tmock.lockGetCpuAffinityWithinScope.RLock()\n\tcalls = mock.calls.GetCpuAffinityWithinScope\n\tmock.lockGetCpuAffinityWithinScope.RUnlock()\n\treturn calls\n}\n\n// GetCreatableVgpus calls GetCreatableVgpusFunc.\nfunc (mock *Device) GetCreatableVgpus() ([]nvml.VgpuTypeId, nvml.Return) {\n\tif mock.GetCreatableVgpusFunc == nil {\n\t\tpanic(\"Device.GetCreatableVgpusFunc: method is nil but Device.GetCreatableVgpus was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetCreatableVgpus.Lock()\n\tmock.calls.GetCreatableVgpus = append(mock.calls.GetCreatableVgpus, callInfo)\n\tmock.lockGetCreatableVgpus.Unlock()\n\treturn mock.GetCreatableVgpusFunc()\n}\n\n// GetCreatableVgpusCalls gets all the calls that were made to GetCreatableVgpus.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetCreatableVgpusCalls())\nfunc (mock *Device) GetCreatableVgpusCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetCreatableVgpus.RLock()\n\tcalls = mock.calls.GetCreatableVgpus\n\tmock.lockGetCreatableVgpus.RUnlock()\n\treturn calls\n}\n\n// GetCudaComputeCapability calls GetCudaComputeCapabilityFunc.\nfunc (mock *Device) GetCudaComputeCapability() (int, int, nvml.Return) {\n\tif mock.GetCudaComputeCapabilityFunc == nil {\n\t\tpanic(\"Device.GetCudaComputeCapabilityFunc: method is nil but Device.GetCudaComputeCapability was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetCudaComputeCapability.Lock()\n\tmock.calls.GetCudaComputeCapability = append(mock.calls.GetCudaComputeCapability, callInfo)\n\tmock.lockGetCudaComputeCapability.Unlock()\n\treturn mock.GetCudaComputeCapabilityFunc()\n}\n\n// GetCudaComputeCapabilityCalls gets all the calls that were made to GetCudaComputeCapability.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetCudaComputeCapabilityCalls())\nfunc (mock *Device) GetCudaComputeCapabilityCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetCudaComputeCapability.RLock()\n\tcalls = mock.calls.GetCudaComputeCapability\n\tmock.lockGetCudaComputeCapability.RUnlock()\n\treturn calls\n}\n\n// GetCurrPcieLinkGeneration calls GetCurrPcieLinkGenerationFunc.\nfunc (mock *Device) GetCurrPcieLinkGeneration() (int, nvml.Return) {\n\tif mock.GetCurrPcieLinkGenerationFunc == nil {\n\t\tpanic(\"Device.GetCurrPcieLinkGenerationFunc: method is nil but Device.GetCurrPcieLinkGeneration was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetCurrPcieLinkGeneration.Lock()\n\tmock.calls.GetCurrPcieLinkGeneration = append(mock.calls.GetCurrPcieLinkGeneration, callInfo)\n\tmock.lockGetCurrPcieLinkGeneration.Unlock()\n\treturn mock.GetCurrPcieLinkGenerationFunc()\n}\n\n// GetCurrPcieLinkGenerationCalls gets all the calls that were made to GetCurrPcieLinkGeneration.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetCurrPcieLinkGenerationCalls())\nfunc (mock *Device) GetCurrPcieLinkGenerationCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetCurrPcieLinkGeneration.RLock()\n\tcalls = mock.calls.GetCurrPcieLinkGeneration\n\tmock.lockGetCurrPcieLinkGeneration.RUnlock()\n\treturn calls\n}\n\n// GetCurrPcieLinkWidth calls GetCurrPcieLinkWidthFunc.\nfunc (mock *Device) GetCurrPcieLinkWidth() (int, nvml.Return) {\n\tif mock.GetCurrPcieLinkWidthFunc == nil {\n\t\tpanic(\"Device.GetCurrPcieLinkWidthFunc: method is nil but Device.GetCurrPcieLinkWidth was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetCurrPcieLinkWidth.Lock()\n\tmock.calls.GetCurrPcieLinkWidth = append(mock.calls.GetCurrPcieLinkWidth, callInfo)\n\tmock.lockGetCurrPcieLinkWidth.Unlock()\n\treturn mock.GetCurrPcieLinkWidthFunc()\n}\n\n// GetCurrPcieLinkWidthCalls gets all the calls that were made to GetCurrPcieLinkWidth.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetCurrPcieLinkWidthCalls())\nfunc (mock *Device) GetCurrPcieLinkWidthCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetCurrPcieLinkWidth.RLock()\n\tcalls = mock.calls.GetCurrPcieLinkWidth\n\tmock.lockGetCurrPcieLinkWidth.RUnlock()\n\treturn calls\n}\n\n// GetCurrentClockFreqs calls GetCurrentClockFreqsFunc.\nfunc (mock *Device) GetCurrentClockFreqs() (nvml.DeviceCurrentClockFreqs, nvml.Return) {\n\tif mock.GetCurrentClockFreqsFunc == nil {\n\t\tpanic(\"Device.GetCurrentClockFreqsFunc: method is nil but Device.GetCurrentClockFreqs was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetCurrentClockFreqs.Lock()\n\tmock.calls.GetCurrentClockFreqs = append(mock.calls.GetCurrentClockFreqs, callInfo)\n\tmock.lockGetCurrentClockFreqs.Unlock()\n\treturn mock.GetCurrentClockFreqsFunc()\n}\n\n// GetCurrentClockFreqsCalls gets all the calls that were made to GetCurrentClockFreqs.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetCurrentClockFreqsCalls())\nfunc (mock *Device) GetCurrentClockFreqsCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetCurrentClockFreqs.RLock()\n\tcalls = mock.calls.GetCurrentClockFreqs\n\tmock.lockGetCurrentClockFreqs.RUnlock()\n\treturn calls\n}\n\n// GetCurrentClocksEventReasons calls GetCurrentClocksEventReasonsFunc.\nfunc (mock *Device) GetCurrentClocksEventReasons() (uint64, nvml.Return) {\n\tif mock.GetCurrentClocksEventReasonsFunc == nil {\n\t\tpanic(\"Device.GetCurrentClocksEventReasonsFunc: method is nil but Device.GetCurrentClocksEventReasons was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetCurrentClocksEventReasons.Lock()\n\tmock.calls.GetCurrentClocksEventReasons = append(mock.calls.GetCurrentClocksEventReasons, callInfo)\n\tmock.lockGetCurrentClocksEventReasons.Unlock()\n\treturn mock.GetCurrentClocksEventReasonsFunc()\n}\n\n// GetCurrentClocksEventReasonsCalls gets all the calls that were made to GetCurrentClocksEventReasons.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetCurrentClocksEventReasonsCalls())\nfunc (mock *Device) GetCurrentClocksEventReasonsCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetCurrentClocksEventReasons.RLock()\n\tcalls = mock.calls.GetCurrentClocksEventReasons\n\tmock.lockGetCurrentClocksEventReasons.RUnlock()\n\treturn calls\n}\n\n// GetCurrentClocksThrottleReasons calls GetCurrentClocksThrottleReasonsFunc.\nfunc (mock *Device) GetCurrentClocksThrottleReasons() (uint64, nvml.Return) {\n\tif mock.GetCurrentClocksThrottleReasonsFunc == nil {\n\t\tpanic(\"Device.GetCurrentClocksThrottleReasonsFunc: method is nil but Device.GetCurrentClocksThrottleReasons was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetCurrentClocksThrottleReasons.Lock()\n\tmock.calls.GetCurrentClocksThrottleReasons = append(mock.calls.GetCurrentClocksThrottleReasons, callInfo)\n\tmock.lockGetCurrentClocksThrottleReasons.Unlock()\n\treturn mock.GetCurrentClocksThrottleReasonsFunc()\n}\n\n// GetCurrentClocksThrottleReasonsCalls gets all the calls that were made to GetCurrentClocksThrottleReasons.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetCurrentClocksThrottleReasonsCalls())\nfunc (mock *Device) GetCurrentClocksThrottleReasonsCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetCurrentClocksThrottleReasons.RLock()\n\tcalls = mock.calls.GetCurrentClocksThrottleReasons\n\tmock.lockGetCurrentClocksThrottleReasons.RUnlock()\n\treturn calls\n}\n\n// GetDecoderUtilization calls GetDecoderUtilizationFunc.\nfunc (mock *Device) GetDecoderUtilization() (uint32, uint32, nvml.Return) {\n\tif mock.GetDecoderUtilizationFunc == nil {\n\t\tpanic(\"Device.GetDecoderUtilizationFunc: method is nil but Device.GetDecoderUtilization was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetDecoderUtilization.Lock()\n\tmock.calls.GetDecoderUtilization = append(mock.calls.GetDecoderUtilization, callInfo)\n\tmock.lockGetDecoderUtilization.Unlock()\n\treturn mock.GetDecoderUtilizationFunc()\n}\n\n// GetDecoderUtilizationCalls gets all the calls that were made to GetDecoderUtilization.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetDecoderUtilizationCalls())\nfunc (mock *Device) GetDecoderUtilizationCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetDecoderUtilization.RLock()\n\tcalls = mock.calls.GetDecoderUtilization\n\tmock.lockGetDecoderUtilization.RUnlock()\n\treturn calls\n}\n\n// GetDefaultApplicationsClock calls GetDefaultApplicationsClockFunc.\nfunc (mock *Device) GetDefaultApplicationsClock(clockType nvml.ClockType) (uint32, nvml.Return) {\n\tif mock.GetDefaultApplicationsClockFunc == nil {\n\t\tpanic(\"Device.GetDefaultApplicationsClockFunc: method is nil but Device.GetDefaultApplicationsClock was just called\")\n\t}\n\tcallInfo := struct {\n\t\tClockType nvml.ClockType\n\t}{\n\t\tClockType: clockType,\n\t}\n\tmock.lockGetDefaultApplicationsClock.Lock()\n\tmock.calls.GetDefaultApplicationsClock = append(mock.calls.GetDefaultApplicationsClock, callInfo)\n\tmock.lockGetDefaultApplicationsClock.Unlock()\n\treturn mock.GetDefaultApplicationsClockFunc(clockType)\n}\n\n// GetDefaultApplicationsClockCalls gets all the calls that were made to GetDefaultApplicationsClock.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetDefaultApplicationsClockCalls())\nfunc (mock *Device) GetDefaultApplicationsClockCalls() []struct {\n\tClockType nvml.ClockType\n} {\n\tvar calls []struct {\n\t\tClockType nvml.ClockType\n\t}\n\tmock.lockGetDefaultApplicationsClock.RLock()\n\tcalls = mock.calls.GetDefaultApplicationsClock\n\tmock.lockGetDefaultApplicationsClock.RUnlock()\n\treturn calls\n}\n\n// GetDefaultEccMode calls GetDefaultEccModeFunc.\nfunc (mock *Device) GetDefaultEccMode() (nvml.EnableState, nvml.Return) {\n\tif mock.GetDefaultEccModeFunc == nil {\n\t\tpanic(\"Device.GetDefaultEccModeFunc: method is nil but Device.GetDefaultEccMode was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetDefaultEccMode.Lock()\n\tmock.calls.GetDefaultEccMode = append(mock.calls.GetDefaultEccMode, callInfo)\n\tmock.lockGetDefaultEccMode.Unlock()\n\treturn mock.GetDefaultEccModeFunc()\n}\n\n// GetDefaultEccModeCalls gets all the calls that were made to GetDefaultEccMode.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetDefaultEccModeCalls())\nfunc (mock *Device) GetDefaultEccModeCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetDefaultEccMode.RLock()\n\tcalls = mock.calls.GetDefaultEccMode\n\tmock.lockGetDefaultEccMode.RUnlock()\n\treturn calls\n}\n\n// GetDetailedEccErrors calls GetDetailedEccErrorsFunc.\nfunc (mock *Device) GetDetailedEccErrors(memoryErrorType nvml.MemoryErrorType, eccCounterType nvml.EccCounterType) (nvml.EccErrorCounts, nvml.Return) {\n\tif mock.GetDetailedEccErrorsFunc == nil {\n\t\tpanic(\"Device.GetDetailedEccErrorsFunc: method is nil but Device.GetDetailedEccErrors was just called\")\n\t}\n\tcallInfo := struct {\n\t\tMemoryErrorType nvml.MemoryErrorType\n\t\tEccCounterType  nvml.EccCounterType\n\t}{\n\t\tMemoryErrorType: memoryErrorType,\n\t\tEccCounterType:  eccCounterType,\n\t}\n\tmock.lockGetDetailedEccErrors.Lock()\n\tmock.calls.GetDetailedEccErrors = append(mock.calls.GetDetailedEccErrors, callInfo)\n\tmock.lockGetDetailedEccErrors.Unlock()\n\treturn mock.GetDetailedEccErrorsFunc(memoryErrorType, eccCounterType)\n}\n\n// GetDetailedEccErrorsCalls gets all the calls that were made to GetDetailedEccErrors.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetDetailedEccErrorsCalls())\nfunc (mock *Device) GetDetailedEccErrorsCalls() []struct {\n\tMemoryErrorType nvml.MemoryErrorType\n\tEccCounterType  nvml.EccCounterType\n} {\n\tvar calls []struct {\n\t\tMemoryErrorType nvml.MemoryErrorType\n\t\tEccCounterType  nvml.EccCounterType\n\t}\n\tmock.lockGetDetailedEccErrors.RLock()\n\tcalls = mock.calls.GetDetailedEccErrors\n\tmock.lockGetDetailedEccErrors.RUnlock()\n\treturn calls\n}\n\n// GetDeviceHandleFromMigDeviceHandle calls GetDeviceHandleFromMigDeviceHandleFunc.\nfunc (mock *Device) GetDeviceHandleFromMigDeviceHandle() (nvml.Device, nvml.Return) {\n\tif mock.GetDeviceHandleFromMigDeviceHandleFunc == nil {\n\t\tpanic(\"Device.GetDeviceHandleFromMigDeviceHandleFunc: method is nil but Device.GetDeviceHandleFromMigDeviceHandle was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetDeviceHandleFromMigDeviceHandle.Lock()\n\tmock.calls.GetDeviceHandleFromMigDeviceHandle = append(mock.calls.GetDeviceHandleFromMigDeviceHandle, callInfo)\n\tmock.lockGetDeviceHandleFromMigDeviceHandle.Unlock()\n\treturn mock.GetDeviceHandleFromMigDeviceHandleFunc()\n}\n\n// GetDeviceHandleFromMigDeviceHandleCalls gets all the calls that were made to GetDeviceHandleFromMigDeviceHandle.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetDeviceHandleFromMigDeviceHandleCalls())\nfunc (mock *Device) GetDeviceHandleFromMigDeviceHandleCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetDeviceHandleFromMigDeviceHandle.RLock()\n\tcalls = mock.calls.GetDeviceHandleFromMigDeviceHandle\n\tmock.lockGetDeviceHandleFromMigDeviceHandle.RUnlock()\n\treturn calls\n}\n\n// GetDisplayActive calls GetDisplayActiveFunc.\nfunc (mock *Device) GetDisplayActive() (nvml.EnableState, nvml.Return) {\n\tif mock.GetDisplayActiveFunc == nil {\n\t\tpanic(\"Device.GetDisplayActiveFunc: method is nil but Device.GetDisplayActive was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetDisplayActive.Lock()\n\tmock.calls.GetDisplayActive = append(mock.calls.GetDisplayActive, callInfo)\n\tmock.lockGetDisplayActive.Unlock()\n\treturn mock.GetDisplayActiveFunc()\n}\n\n// GetDisplayActiveCalls gets all the calls that were made to GetDisplayActive.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetDisplayActiveCalls())\nfunc (mock *Device) GetDisplayActiveCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetDisplayActive.RLock()\n\tcalls = mock.calls.GetDisplayActive\n\tmock.lockGetDisplayActive.RUnlock()\n\treturn calls\n}\n\n// GetDisplayMode calls GetDisplayModeFunc.\nfunc (mock *Device) GetDisplayMode() (nvml.EnableState, nvml.Return) {\n\tif mock.GetDisplayModeFunc == nil {\n\t\tpanic(\"Device.GetDisplayModeFunc: method is nil but Device.GetDisplayMode was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetDisplayMode.Lock()\n\tmock.calls.GetDisplayMode = append(mock.calls.GetDisplayMode, callInfo)\n\tmock.lockGetDisplayMode.Unlock()\n\treturn mock.GetDisplayModeFunc()\n}\n\n// GetDisplayModeCalls gets all the calls that were made to GetDisplayMode.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetDisplayModeCalls())\nfunc (mock *Device) GetDisplayModeCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetDisplayMode.RLock()\n\tcalls = mock.calls.GetDisplayMode\n\tmock.lockGetDisplayMode.RUnlock()\n\treturn calls\n}\n\n// GetDramEncryptionMode calls GetDramEncryptionModeFunc.\nfunc (mock *Device) GetDramEncryptionMode() (nvml.DramEncryptionInfo, nvml.DramEncryptionInfo, nvml.Return) {\n\tif mock.GetDramEncryptionModeFunc == nil {\n\t\tpanic(\"Device.GetDramEncryptionModeFunc: method is nil but Device.GetDramEncryptionMode was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetDramEncryptionMode.Lock()\n\tmock.calls.GetDramEncryptionMode = append(mock.calls.GetDramEncryptionMode, callInfo)\n\tmock.lockGetDramEncryptionMode.Unlock()\n\treturn mock.GetDramEncryptionModeFunc()\n}\n\n// GetDramEncryptionModeCalls gets all the calls that were made to GetDramEncryptionMode.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetDramEncryptionModeCalls())\nfunc (mock *Device) GetDramEncryptionModeCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetDramEncryptionMode.RLock()\n\tcalls = mock.calls.GetDramEncryptionMode\n\tmock.lockGetDramEncryptionMode.RUnlock()\n\treturn calls\n}\n\n// GetDriverModel calls GetDriverModelFunc.\nfunc (mock *Device) GetDriverModel() (nvml.DriverModel, nvml.DriverModel, nvml.Return) {\n\tif mock.GetDriverModelFunc == nil {\n\t\tpanic(\"Device.GetDriverModelFunc: method is nil but Device.GetDriverModel was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetDriverModel.Lock()\n\tmock.calls.GetDriverModel = append(mock.calls.GetDriverModel, callInfo)\n\tmock.lockGetDriverModel.Unlock()\n\treturn mock.GetDriverModelFunc()\n}\n\n// GetDriverModelCalls gets all the calls that were made to GetDriverModel.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetDriverModelCalls())\nfunc (mock *Device) GetDriverModelCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetDriverModel.RLock()\n\tcalls = mock.calls.GetDriverModel\n\tmock.lockGetDriverModel.RUnlock()\n\treturn calls\n}\n\n// GetDriverModel_v2 calls GetDriverModel_v2Func.\nfunc (mock *Device) GetDriverModel_v2() (nvml.DriverModel, nvml.DriverModel, nvml.Return) {\n\tif mock.GetDriverModel_v2Func == nil {\n\t\tpanic(\"Device.GetDriverModel_v2Func: method is nil but Device.GetDriverModel_v2 was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetDriverModel_v2.Lock()\n\tmock.calls.GetDriverModel_v2 = append(mock.calls.GetDriverModel_v2, callInfo)\n\tmock.lockGetDriverModel_v2.Unlock()\n\treturn mock.GetDriverModel_v2Func()\n}\n\n// GetDriverModel_v2Calls gets all the calls that were made to GetDriverModel_v2.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetDriverModel_v2Calls())\nfunc (mock *Device) GetDriverModel_v2Calls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetDriverModel_v2.RLock()\n\tcalls = mock.calls.GetDriverModel_v2\n\tmock.lockGetDriverModel_v2.RUnlock()\n\treturn calls\n}\n\n// GetDynamicPstatesInfo calls GetDynamicPstatesInfoFunc.\nfunc (mock *Device) GetDynamicPstatesInfo() (nvml.GpuDynamicPstatesInfo, nvml.Return) {\n\tif mock.GetDynamicPstatesInfoFunc == nil {\n\t\tpanic(\"Device.GetDynamicPstatesInfoFunc: method is nil but Device.GetDynamicPstatesInfo was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetDynamicPstatesInfo.Lock()\n\tmock.calls.GetDynamicPstatesInfo = append(mock.calls.GetDynamicPstatesInfo, callInfo)\n\tmock.lockGetDynamicPstatesInfo.Unlock()\n\treturn mock.GetDynamicPstatesInfoFunc()\n}\n\n// GetDynamicPstatesInfoCalls gets all the calls that were made to GetDynamicPstatesInfo.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetDynamicPstatesInfoCalls())\nfunc (mock *Device) GetDynamicPstatesInfoCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetDynamicPstatesInfo.RLock()\n\tcalls = mock.calls.GetDynamicPstatesInfo\n\tmock.lockGetDynamicPstatesInfo.RUnlock()\n\treturn calls\n}\n\n// GetEccMode calls GetEccModeFunc.\nfunc (mock *Device) GetEccMode() (nvml.EnableState, nvml.EnableState, nvml.Return) {\n\tif mock.GetEccModeFunc == nil {\n\t\tpanic(\"Device.GetEccModeFunc: method is nil but Device.GetEccMode was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetEccMode.Lock()\n\tmock.calls.GetEccMode = append(mock.calls.GetEccMode, callInfo)\n\tmock.lockGetEccMode.Unlock()\n\treturn mock.GetEccModeFunc()\n}\n\n// GetEccModeCalls gets all the calls that were made to GetEccMode.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetEccModeCalls())\nfunc (mock *Device) GetEccModeCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetEccMode.RLock()\n\tcalls = mock.calls.GetEccMode\n\tmock.lockGetEccMode.RUnlock()\n\treturn calls\n}\n\n// GetEncoderCapacity calls GetEncoderCapacityFunc.\nfunc (mock *Device) GetEncoderCapacity(encoderType nvml.EncoderType) (int, nvml.Return) {\n\tif mock.GetEncoderCapacityFunc == nil {\n\t\tpanic(\"Device.GetEncoderCapacityFunc: method is nil but Device.GetEncoderCapacity was just called\")\n\t}\n\tcallInfo := struct {\n\t\tEncoderType nvml.EncoderType\n\t}{\n\t\tEncoderType: encoderType,\n\t}\n\tmock.lockGetEncoderCapacity.Lock()\n\tmock.calls.GetEncoderCapacity = append(mock.calls.GetEncoderCapacity, callInfo)\n\tmock.lockGetEncoderCapacity.Unlock()\n\treturn mock.GetEncoderCapacityFunc(encoderType)\n}\n\n// GetEncoderCapacityCalls gets all the calls that were made to GetEncoderCapacity.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetEncoderCapacityCalls())\nfunc (mock *Device) GetEncoderCapacityCalls() []struct {\n\tEncoderType nvml.EncoderType\n} {\n\tvar calls []struct {\n\t\tEncoderType nvml.EncoderType\n\t}\n\tmock.lockGetEncoderCapacity.RLock()\n\tcalls = mock.calls.GetEncoderCapacity\n\tmock.lockGetEncoderCapacity.RUnlock()\n\treturn calls\n}\n\n// GetEncoderSessions calls GetEncoderSessionsFunc.\nfunc (mock *Device) GetEncoderSessions() ([]nvml.EncoderSessionInfo, nvml.Return) {\n\tif mock.GetEncoderSessionsFunc == nil {\n\t\tpanic(\"Device.GetEncoderSessionsFunc: method is nil but Device.GetEncoderSessions was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetEncoderSessions.Lock()\n\tmock.calls.GetEncoderSessions = append(mock.calls.GetEncoderSessions, callInfo)\n\tmock.lockGetEncoderSessions.Unlock()\n\treturn mock.GetEncoderSessionsFunc()\n}\n\n// GetEncoderSessionsCalls gets all the calls that were made to GetEncoderSessions.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetEncoderSessionsCalls())\nfunc (mock *Device) GetEncoderSessionsCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetEncoderSessions.RLock()\n\tcalls = mock.calls.GetEncoderSessions\n\tmock.lockGetEncoderSessions.RUnlock()\n\treturn calls\n}\n\n// GetEncoderStats calls GetEncoderStatsFunc.\nfunc (mock *Device) GetEncoderStats() (int, uint32, uint32, nvml.Return) {\n\tif mock.GetEncoderStatsFunc == nil {\n\t\tpanic(\"Device.GetEncoderStatsFunc: method is nil but Device.GetEncoderStats was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetEncoderStats.Lock()\n\tmock.calls.GetEncoderStats = append(mock.calls.GetEncoderStats, callInfo)\n\tmock.lockGetEncoderStats.Unlock()\n\treturn mock.GetEncoderStatsFunc()\n}\n\n// GetEncoderStatsCalls gets all the calls that were made to GetEncoderStats.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetEncoderStatsCalls())\nfunc (mock *Device) GetEncoderStatsCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetEncoderStats.RLock()\n\tcalls = mock.calls.GetEncoderStats\n\tmock.lockGetEncoderStats.RUnlock()\n\treturn calls\n}\n\n// GetEncoderUtilization calls GetEncoderUtilizationFunc.\nfunc (mock *Device) GetEncoderUtilization() (uint32, uint32, nvml.Return) {\n\tif mock.GetEncoderUtilizationFunc == nil {\n\t\tpanic(\"Device.GetEncoderUtilizationFunc: method is nil but Device.GetEncoderUtilization was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetEncoderUtilization.Lock()\n\tmock.calls.GetEncoderUtilization = append(mock.calls.GetEncoderUtilization, callInfo)\n\tmock.lockGetEncoderUtilization.Unlock()\n\treturn mock.GetEncoderUtilizationFunc()\n}\n\n// GetEncoderUtilizationCalls gets all the calls that were made to GetEncoderUtilization.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetEncoderUtilizationCalls())\nfunc (mock *Device) GetEncoderUtilizationCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetEncoderUtilization.RLock()\n\tcalls = mock.calls.GetEncoderUtilization\n\tmock.lockGetEncoderUtilization.RUnlock()\n\treturn calls\n}\n\n// GetEnforcedPowerLimit calls GetEnforcedPowerLimitFunc.\nfunc (mock *Device) GetEnforcedPowerLimit() (uint32, nvml.Return) {\n\tif mock.GetEnforcedPowerLimitFunc == nil {\n\t\tpanic(\"Device.GetEnforcedPowerLimitFunc: method is nil but Device.GetEnforcedPowerLimit was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetEnforcedPowerLimit.Lock()\n\tmock.calls.GetEnforcedPowerLimit = append(mock.calls.GetEnforcedPowerLimit, callInfo)\n\tmock.lockGetEnforcedPowerLimit.Unlock()\n\treturn mock.GetEnforcedPowerLimitFunc()\n}\n\n// GetEnforcedPowerLimitCalls gets all the calls that were made to GetEnforcedPowerLimit.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetEnforcedPowerLimitCalls())\nfunc (mock *Device) GetEnforcedPowerLimitCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetEnforcedPowerLimit.RLock()\n\tcalls = mock.calls.GetEnforcedPowerLimit\n\tmock.lockGetEnforcedPowerLimit.RUnlock()\n\treturn calls\n}\n\n// GetFBCSessions calls GetFBCSessionsFunc.\nfunc (mock *Device) GetFBCSessions() ([]nvml.FBCSessionInfo, nvml.Return) {\n\tif mock.GetFBCSessionsFunc == nil {\n\t\tpanic(\"Device.GetFBCSessionsFunc: method is nil but Device.GetFBCSessions was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetFBCSessions.Lock()\n\tmock.calls.GetFBCSessions = append(mock.calls.GetFBCSessions, callInfo)\n\tmock.lockGetFBCSessions.Unlock()\n\treturn mock.GetFBCSessionsFunc()\n}\n\n// GetFBCSessionsCalls gets all the calls that were made to GetFBCSessions.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetFBCSessionsCalls())\nfunc (mock *Device) GetFBCSessionsCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetFBCSessions.RLock()\n\tcalls = mock.calls.GetFBCSessions\n\tmock.lockGetFBCSessions.RUnlock()\n\treturn calls\n}\n\n// GetFBCStats calls GetFBCStatsFunc.\nfunc (mock *Device) GetFBCStats() (nvml.FBCStats, nvml.Return) {\n\tif mock.GetFBCStatsFunc == nil {\n\t\tpanic(\"Device.GetFBCStatsFunc: method is nil but Device.GetFBCStats was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetFBCStats.Lock()\n\tmock.calls.GetFBCStats = append(mock.calls.GetFBCStats, callInfo)\n\tmock.lockGetFBCStats.Unlock()\n\treturn mock.GetFBCStatsFunc()\n}\n\n// GetFBCStatsCalls gets all the calls that were made to GetFBCStats.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetFBCStatsCalls())\nfunc (mock *Device) GetFBCStatsCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetFBCStats.RLock()\n\tcalls = mock.calls.GetFBCStats\n\tmock.lockGetFBCStats.RUnlock()\n\treturn calls\n}\n\n// GetFanControlPolicy_v2 calls GetFanControlPolicy_v2Func.\nfunc (mock *Device) GetFanControlPolicy_v2(n int) (nvml.FanControlPolicy, nvml.Return) {\n\tif mock.GetFanControlPolicy_v2Func == nil {\n\t\tpanic(\"Device.GetFanControlPolicy_v2Func: method is nil but Device.GetFanControlPolicy_v2 was just called\")\n\t}\n\tcallInfo := struct {\n\t\tN int\n\t}{\n\t\tN: n,\n\t}\n\tmock.lockGetFanControlPolicy_v2.Lock()\n\tmock.calls.GetFanControlPolicy_v2 = append(mock.calls.GetFanControlPolicy_v2, callInfo)\n\tmock.lockGetFanControlPolicy_v2.Unlock()\n\treturn mock.GetFanControlPolicy_v2Func(n)\n}\n\n// GetFanControlPolicy_v2Calls gets all the calls that were made to GetFanControlPolicy_v2.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetFanControlPolicy_v2Calls())\nfunc (mock *Device) GetFanControlPolicy_v2Calls() []struct {\n\tN int\n} {\n\tvar calls []struct {\n\t\tN int\n\t}\n\tmock.lockGetFanControlPolicy_v2.RLock()\n\tcalls = mock.calls.GetFanControlPolicy_v2\n\tmock.lockGetFanControlPolicy_v2.RUnlock()\n\treturn calls\n}\n\n// GetFanSpeed calls GetFanSpeedFunc.\nfunc (mock *Device) GetFanSpeed() (uint32, nvml.Return) {\n\tif mock.GetFanSpeedFunc == nil {\n\t\tpanic(\"Device.GetFanSpeedFunc: method is nil but Device.GetFanSpeed was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetFanSpeed.Lock()\n\tmock.calls.GetFanSpeed = append(mock.calls.GetFanSpeed, callInfo)\n\tmock.lockGetFanSpeed.Unlock()\n\treturn mock.GetFanSpeedFunc()\n}\n\n// GetFanSpeedCalls gets all the calls that were made to GetFanSpeed.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetFanSpeedCalls())\nfunc (mock *Device) GetFanSpeedCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetFanSpeed.RLock()\n\tcalls = mock.calls.GetFanSpeed\n\tmock.lockGetFanSpeed.RUnlock()\n\treturn calls\n}\n\n// GetFanSpeedRPM calls GetFanSpeedRPMFunc.\nfunc (mock *Device) GetFanSpeedRPM() (nvml.FanSpeedInfo, nvml.Return) {\n\tif mock.GetFanSpeedRPMFunc == nil {\n\t\tpanic(\"Device.GetFanSpeedRPMFunc: method is nil but Device.GetFanSpeedRPM was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetFanSpeedRPM.Lock()\n\tmock.calls.GetFanSpeedRPM = append(mock.calls.GetFanSpeedRPM, callInfo)\n\tmock.lockGetFanSpeedRPM.Unlock()\n\treturn mock.GetFanSpeedRPMFunc()\n}\n\n// GetFanSpeedRPMCalls gets all the calls that were made to GetFanSpeedRPM.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetFanSpeedRPMCalls())\nfunc (mock *Device) GetFanSpeedRPMCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetFanSpeedRPM.RLock()\n\tcalls = mock.calls.GetFanSpeedRPM\n\tmock.lockGetFanSpeedRPM.RUnlock()\n\treturn calls\n}\n\n// GetFanSpeed_v2 calls GetFanSpeed_v2Func.\nfunc (mock *Device) GetFanSpeed_v2(n int) (uint32, nvml.Return) {\n\tif mock.GetFanSpeed_v2Func == nil {\n\t\tpanic(\"Device.GetFanSpeed_v2Func: method is nil but Device.GetFanSpeed_v2 was just called\")\n\t}\n\tcallInfo := struct {\n\t\tN int\n\t}{\n\t\tN: n,\n\t}\n\tmock.lockGetFanSpeed_v2.Lock()\n\tmock.calls.GetFanSpeed_v2 = append(mock.calls.GetFanSpeed_v2, callInfo)\n\tmock.lockGetFanSpeed_v2.Unlock()\n\treturn mock.GetFanSpeed_v2Func(n)\n}\n\n// GetFanSpeed_v2Calls gets all the calls that were made to GetFanSpeed_v2.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetFanSpeed_v2Calls())\nfunc (mock *Device) GetFanSpeed_v2Calls() []struct {\n\tN int\n} {\n\tvar calls []struct {\n\t\tN int\n\t}\n\tmock.lockGetFanSpeed_v2.RLock()\n\tcalls = mock.calls.GetFanSpeed_v2\n\tmock.lockGetFanSpeed_v2.RUnlock()\n\treturn calls\n}\n\n// GetFieldValues calls GetFieldValuesFunc.\nfunc (mock *Device) GetFieldValues(fieldValues []nvml.FieldValue) nvml.Return {\n\tif mock.GetFieldValuesFunc == nil {\n\t\tpanic(\"Device.GetFieldValuesFunc: method is nil but Device.GetFieldValues was just called\")\n\t}\n\tcallInfo := struct {\n\t\tFieldValues []nvml.FieldValue\n\t}{\n\t\tFieldValues: fieldValues,\n\t}\n\tmock.lockGetFieldValues.Lock()\n\tmock.calls.GetFieldValues = append(mock.calls.GetFieldValues, callInfo)\n\tmock.lockGetFieldValues.Unlock()\n\treturn mock.GetFieldValuesFunc(fieldValues)\n}\n\n// GetFieldValuesCalls gets all the calls that were made to GetFieldValues.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetFieldValuesCalls())\nfunc (mock *Device) GetFieldValuesCalls() []struct {\n\tFieldValues []nvml.FieldValue\n} {\n\tvar calls []struct {\n\t\tFieldValues []nvml.FieldValue\n\t}\n\tmock.lockGetFieldValues.RLock()\n\tcalls = mock.calls.GetFieldValues\n\tmock.lockGetFieldValues.RUnlock()\n\treturn calls\n}\n\n// GetGpcClkMinMaxVfOffset calls GetGpcClkMinMaxVfOffsetFunc.\nfunc (mock *Device) GetGpcClkMinMaxVfOffset() (int, int, nvml.Return) {\n\tif mock.GetGpcClkMinMaxVfOffsetFunc == nil {\n\t\tpanic(\"Device.GetGpcClkMinMaxVfOffsetFunc: method is nil but Device.GetGpcClkMinMaxVfOffset was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetGpcClkMinMaxVfOffset.Lock()\n\tmock.calls.GetGpcClkMinMaxVfOffset = append(mock.calls.GetGpcClkMinMaxVfOffset, callInfo)\n\tmock.lockGetGpcClkMinMaxVfOffset.Unlock()\n\treturn mock.GetGpcClkMinMaxVfOffsetFunc()\n}\n\n// GetGpcClkMinMaxVfOffsetCalls gets all the calls that were made to GetGpcClkMinMaxVfOffset.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetGpcClkMinMaxVfOffsetCalls())\nfunc (mock *Device) GetGpcClkMinMaxVfOffsetCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetGpcClkMinMaxVfOffset.RLock()\n\tcalls = mock.calls.GetGpcClkMinMaxVfOffset\n\tmock.lockGetGpcClkMinMaxVfOffset.RUnlock()\n\treturn calls\n}\n\n// GetGpcClkVfOffset calls GetGpcClkVfOffsetFunc.\nfunc (mock *Device) GetGpcClkVfOffset() (int, nvml.Return) {\n\tif mock.GetGpcClkVfOffsetFunc == nil {\n\t\tpanic(\"Device.GetGpcClkVfOffsetFunc: method is nil but Device.GetGpcClkVfOffset was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetGpcClkVfOffset.Lock()\n\tmock.calls.GetGpcClkVfOffset = append(mock.calls.GetGpcClkVfOffset, callInfo)\n\tmock.lockGetGpcClkVfOffset.Unlock()\n\treturn mock.GetGpcClkVfOffsetFunc()\n}\n\n// GetGpcClkVfOffsetCalls gets all the calls that were made to GetGpcClkVfOffset.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetGpcClkVfOffsetCalls())\nfunc (mock *Device) GetGpcClkVfOffsetCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetGpcClkVfOffset.RLock()\n\tcalls = mock.calls.GetGpcClkVfOffset\n\tmock.lockGetGpcClkVfOffset.RUnlock()\n\treturn calls\n}\n\n// GetGpuFabricInfo calls GetGpuFabricInfoFunc.\nfunc (mock *Device) GetGpuFabricInfo() (nvml.GpuFabricInfo, nvml.Return) {\n\tif mock.GetGpuFabricInfoFunc == nil {\n\t\tpanic(\"Device.GetGpuFabricInfoFunc: method is nil but Device.GetGpuFabricInfo was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetGpuFabricInfo.Lock()\n\tmock.calls.GetGpuFabricInfo = append(mock.calls.GetGpuFabricInfo, callInfo)\n\tmock.lockGetGpuFabricInfo.Unlock()\n\treturn mock.GetGpuFabricInfoFunc()\n}\n\n// GetGpuFabricInfoCalls gets all the calls that were made to GetGpuFabricInfo.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetGpuFabricInfoCalls())\nfunc (mock *Device) GetGpuFabricInfoCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetGpuFabricInfo.RLock()\n\tcalls = mock.calls.GetGpuFabricInfo\n\tmock.lockGetGpuFabricInfo.RUnlock()\n\treturn calls\n}\n\n// GetGpuFabricInfoV calls GetGpuFabricInfoVFunc.\nfunc (mock *Device) GetGpuFabricInfoV() nvml.GpuFabricInfoHandler {\n\tif mock.GetGpuFabricInfoVFunc == nil {\n\t\tpanic(\"Device.GetGpuFabricInfoVFunc: method is nil but Device.GetGpuFabricInfoV was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetGpuFabricInfoV.Lock()\n\tmock.calls.GetGpuFabricInfoV = append(mock.calls.GetGpuFabricInfoV, callInfo)\n\tmock.lockGetGpuFabricInfoV.Unlock()\n\treturn mock.GetGpuFabricInfoVFunc()\n}\n\n// GetGpuFabricInfoVCalls gets all the calls that were made to GetGpuFabricInfoV.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetGpuFabricInfoVCalls())\nfunc (mock *Device) GetGpuFabricInfoVCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetGpuFabricInfoV.RLock()\n\tcalls = mock.calls.GetGpuFabricInfoV\n\tmock.lockGetGpuFabricInfoV.RUnlock()\n\treturn calls\n}\n\n// GetGpuInstanceById calls GetGpuInstanceByIdFunc.\nfunc (mock *Device) GetGpuInstanceById(n int) (nvml.GpuInstance, nvml.Return) {\n\tif mock.GetGpuInstanceByIdFunc == nil {\n\t\tpanic(\"Device.GetGpuInstanceByIdFunc: method is nil but Device.GetGpuInstanceById was just called\")\n\t}\n\tcallInfo := struct {\n\t\tN int\n\t}{\n\t\tN: n,\n\t}\n\tmock.lockGetGpuInstanceById.Lock()\n\tmock.calls.GetGpuInstanceById = append(mock.calls.GetGpuInstanceById, callInfo)\n\tmock.lockGetGpuInstanceById.Unlock()\n\treturn mock.GetGpuInstanceByIdFunc(n)\n}\n\n// GetGpuInstanceByIdCalls gets all the calls that were made to GetGpuInstanceById.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetGpuInstanceByIdCalls())\nfunc (mock *Device) GetGpuInstanceByIdCalls() []struct {\n\tN int\n} {\n\tvar calls []struct {\n\t\tN int\n\t}\n\tmock.lockGetGpuInstanceById.RLock()\n\tcalls = mock.calls.GetGpuInstanceById\n\tmock.lockGetGpuInstanceById.RUnlock()\n\treturn calls\n}\n\n// GetGpuInstanceId calls GetGpuInstanceIdFunc.\nfunc (mock *Device) GetGpuInstanceId() (int, nvml.Return) {\n\tif mock.GetGpuInstanceIdFunc == nil {\n\t\tpanic(\"Device.GetGpuInstanceIdFunc: method is nil but Device.GetGpuInstanceId was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetGpuInstanceId.Lock()\n\tmock.calls.GetGpuInstanceId = append(mock.calls.GetGpuInstanceId, callInfo)\n\tmock.lockGetGpuInstanceId.Unlock()\n\treturn mock.GetGpuInstanceIdFunc()\n}\n\n// GetGpuInstanceIdCalls gets all the calls that were made to GetGpuInstanceId.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetGpuInstanceIdCalls())\nfunc (mock *Device) GetGpuInstanceIdCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetGpuInstanceId.RLock()\n\tcalls = mock.calls.GetGpuInstanceId\n\tmock.lockGetGpuInstanceId.RUnlock()\n\treturn calls\n}\n\n// GetGpuInstancePossiblePlacements calls GetGpuInstancePossiblePlacementsFunc.\nfunc (mock *Device) GetGpuInstancePossiblePlacements(gpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo) ([]nvml.GpuInstancePlacement, nvml.Return) {\n\tif mock.GetGpuInstancePossiblePlacementsFunc == nil {\n\t\tpanic(\"Device.GetGpuInstancePossiblePlacementsFunc: method is nil but Device.GetGpuInstancePossiblePlacements was just called\")\n\t}\n\tcallInfo := struct {\n\t\tGpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo\n\t}{\n\t\tGpuInstanceProfileInfo: gpuInstanceProfileInfo,\n\t}\n\tmock.lockGetGpuInstancePossiblePlacements.Lock()\n\tmock.calls.GetGpuInstancePossiblePlacements = append(mock.calls.GetGpuInstancePossiblePlacements, callInfo)\n\tmock.lockGetGpuInstancePossiblePlacements.Unlock()\n\treturn mock.GetGpuInstancePossiblePlacementsFunc(gpuInstanceProfileInfo)\n}\n\n// GetGpuInstancePossiblePlacementsCalls gets all the calls that were made to GetGpuInstancePossiblePlacements.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetGpuInstancePossiblePlacementsCalls())\nfunc (mock *Device) GetGpuInstancePossiblePlacementsCalls() []struct {\n\tGpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo\n} {\n\tvar calls []struct {\n\t\tGpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo\n\t}\n\tmock.lockGetGpuInstancePossiblePlacements.RLock()\n\tcalls = mock.calls.GetGpuInstancePossiblePlacements\n\tmock.lockGetGpuInstancePossiblePlacements.RUnlock()\n\treturn calls\n}\n\n// GetGpuInstanceProfileInfo calls GetGpuInstanceProfileInfoFunc.\nfunc (mock *Device) GetGpuInstanceProfileInfo(n int) (nvml.GpuInstanceProfileInfo, nvml.Return) {\n\tif mock.GetGpuInstanceProfileInfoFunc == nil {\n\t\tpanic(\"Device.GetGpuInstanceProfileInfoFunc: method is nil but Device.GetGpuInstanceProfileInfo was just called\")\n\t}\n\tcallInfo := struct {\n\t\tN int\n\t}{\n\t\tN: n,\n\t}\n\tmock.lockGetGpuInstanceProfileInfo.Lock()\n\tmock.calls.GetGpuInstanceProfileInfo = append(mock.calls.GetGpuInstanceProfileInfo, callInfo)\n\tmock.lockGetGpuInstanceProfileInfo.Unlock()\n\treturn mock.GetGpuInstanceProfileInfoFunc(n)\n}\n\n// GetGpuInstanceProfileInfoCalls gets all the calls that were made to GetGpuInstanceProfileInfo.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetGpuInstanceProfileInfoCalls())\nfunc (mock *Device) GetGpuInstanceProfileInfoCalls() []struct {\n\tN int\n} {\n\tvar calls []struct {\n\t\tN int\n\t}\n\tmock.lockGetGpuInstanceProfileInfo.RLock()\n\tcalls = mock.calls.GetGpuInstanceProfileInfo\n\tmock.lockGetGpuInstanceProfileInfo.RUnlock()\n\treturn calls\n}\n\n// GetGpuInstanceProfileInfoByIdV calls GetGpuInstanceProfileInfoByIdVFunc.\nfunc (mock *Device) GetGpuInstanceProfileInfoByIdV(n int) nvml.GpuInstanceProfileInfoByIdHandler {\n\tif mock.GetGpuInstanceProfileInfoByIdVFunc == nil {\n\t\tpanic(\"Device.GetGpuInstanceProfileInfoByIdVFunc: method is nil but Device.GetGpuInstanceProfileInfoByIdV was just called\")\n\t}\n\tcallInfo := struct {\n\t\tN int\n\t}{\n\t\tN: n,\n\t}\n\tmock.lockGetGpuInstanceProfileInfoByIdV.Lock()\n\tmock.calls.GetGpuInstanceProfileInfoByIdV = append(mock.calls.GetGpuInstanceProfileInfoByIdV, callInfo)\n\tmock.lockGetGpuInstanceProfileInfoByIdV.Unlock()\n\treturn mock.GetGpuInstanceProfileInfoByIdVFunc(n)\n}\n\n// GetGpuInstanceProfileInfoByIdVCalls gets all the calls that were made to GetGpuInstanceProfileInfoByIdV.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetGpuInstanceProfileInfoByIdVCalls())\nfunc (mock *Device) GetGpuInstanceProfileInfoByIdVCalls() []struct {\n\tN int\n} {\n\tvar calls []struct {\n\t\tN int\n\t}\n\tmock.lockGetGpuInstanceProfileInfoByIdV.RLock()\n\tcalls = mock.calls.GetGpuInstanceProfileInfoByIdV\n\tmock.lockGetGpuInstanceProfileInfoByIdV.RUnlock()\n\treturn calls\n}\n\n// GetGpuInstanceProfileInfoV calls GetGpuInstanceProfileInfoVFunc.\nfunc (mock *Device) GetGpuInstanceProfileInfoV(n int) nvml.GpuInstanceProfileInfoHandler {\n\tif mock.GetGpuInstanceProfileInfoVFunc == nil {\n\t\tpanic(\"Device.GetGpuInstanceProfileInfoVFunc: method is nil but Device.GetGpuInstanceProfileInfoV was just called\")\n\t}\n\tcallInfo := struct {\n\t\tN int\n\t}{\n\t\tN: n,\n\t}\n\tmock.lockGetGpuInstanceProfileInfoV.Lock()\n\tmock.calls.GetGpuInstanceProfileInfoV = append(mock.calls.GetGpuInstanceProfileInfoV, callInfo)\n\tmock.lockGetGpuInstanceProfileInfoV.Unlock()\n\treturn mock.GetGpuInstanceProfileInfoVFunc(n)\n}\n\n// GetGpuInstanceProfileInfoVCalls gets all the calls that were made to GetGpuInstanceProfileInfoV.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetGpuInstanceProfileInfoVCalls())\nfunc (mock *Device) GetGpuInstanceProfileInfoVCalls() []struct {\n\tN int\n} {\n\tvar calls []struct {\n\t\tN int\n\t}\n\tmock.lockGetGpuInstanceProfileInfoV.RLock()\n\tcalls = mock.calls.GetGpuInstanceProfileInfoV\n\tmock.lockGetGpuInstanceProfileInfoV.RUnlock()\n\treturn calls\n}\n\n// GetGpuInstanceRemainingCapacity calls GetGpuInstanceRemainingCapacityFunc.\nfunc (mock *Device) GetGpuInstanceRemainingCapacity(gpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo) (int, nvml.Return) {\n\tif mock.GetGpuInstanceRemainingCapacityFunc == nil {\n\t\tpanic(\"Device.GetGpuInstanceRemainingCapacityFunc: method is nil but Device.GetGpuInstanceRemainingCapacity was just called\")\n\t}\n\tcallInfo := struct {\n\t\tGpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo\n\t}{\n\t\tGpuInstanceProfileInfo: gpuInstanceProfileInfo,\n\t}\n\tmock.lockGetGpuInstanceRemainingCapacity.Lock()\n\tmock.calls.GetGpuInstanceRemainingCapacity = append(mock.calls.GetGpuInstanceRemainingCapacity, callInfo)\n\tmock.lockGetGpuInstanceRemainingCapacity.Unlock()\n\treturn mock.GetGpuInstanceRemainingCapacityFunc(gpuInstanceProfileInfo)\n}\n\n// GetGpuInstanceRemainingCapacityCalls gets all the calls that were made to GetGpuInstanceRemainingCapacity.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetGpuInstanceRemainingCapacityCalls())\nfunc (mock *Device) GetGpuInstanceRemainingCapacityCalls() []struct {\n\tGpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo\n} {\n\tvar calls []struct {\n\t\tGpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo\n\t}\n\tmock.lockGetGpuInstanceRemainingCapacity.RLock()\n\tcalls = mock.calls.GetGpuInstanceRemainingCapacity\n\tmock.lockGetGpuInstanceRemainingCapacity.RUnlock()\n\treturn calls\n}\n\n// GetGpuInstances calls GetGpuInstancesFunc.\nfunc (mock *Device) GetGpuInstances(gpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo) ([]nvml.GpuInstance, nvml.Return) {\n\tif mock.GetGpuInstancesFunc == nil {\n\t\tpanic(\"Device.GetGpuInstancesFunc: method is nil but Device.GetGpuInstances was just called\")\n\t}\n\tcallInfo := struct {\n\t\tGpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo\n\t}{\n\t\tGpuInstanceProfileInfo: gpuInstanceProfileInfo,\n\t}\n\tmock.lockGetGpuInstances.Lock()\n\tmock.calls.GetGpuInstances = append(mock.calls.GetGpuInstances, callInfo)\n\tmock.lockGetGpuInstances.Unlock()\n\treturn mock.GetGpuInstancesFunc(gpuInstanceProfileInfo)\n}\n\n// GetGpuInstancesCalls gets all the calls that were made to GetGpuInstances.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetGpuInstancesCalls())\nfunc (mock *Device) GetGpuInstancesCalls() []struct {\n\tGpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo\n} {\n\tvar calls []struct {\n\t\tGpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo\n\t}\n\tmock.lockGetGpuInstances.RLock()\n\tcalls = mock.calls.GetGpuInstances\n\tmock.lockGetGpuInstances.RUnlock()\n\treturn calls\n}\n\n// GetGpuMaxPcieLinkGeneration calls GetGpuMaxPcieLinkGenerationFunc.\nfunc (mock *Device) GetGpuMaxPcieLinkGeneration() (int, nvml.Return) {\n\tif mock.GetGpuMaxPcieLinkGenerationFunc == nil {\n\t\tpanic(\"Device.GetGpuMaxPcieLinkGenerationFunc: method is nil but Device.GetGpuMaxPcieLinkGeneration was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetGpuMaxPcieLinkGeneration.Lock()\n\tmock.calls.GetGpuMaxPcieLinkGeneration = append(mock.calls.GetGpuMaxPcieLinkGeneration, callInfo)\n\tmock.lockGetGpuMaxPcieLinkGeneration.Unlock()\n\treturn mock.GetGpuMaxPcieLinkGenerationFunc()\n}\n\n// GetGpuMaxPcieLinkGenerationCalls gets all the calls that were made to GetGpuMaxPcieLinkGeneration.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetGpuMaxPcieLinkGenerationCalls())\nfunc (mock *Device) GetGpuMaxPcieLinkGenerationCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetGpuMaxPcieLinkGeneration.RLock()\n\tcalls = mock.calls.GetGpuMaxPcieLinkGeneration\n\tmock.lockGetGpuMaxPcieLinkGeneration.RUnlock()\n\treturn calls\n}\n\n// GetGpuOperationMode calls GetGpuOperationModeFunc.\nfunc (mock *Device) GetGpuOperationMode() (nvml.GpuOperationMode, nvml.GpuOperationMode, nvml.Return) {\n\tif mock.GetGpuOperationModeFunc == nil {\n\t\tpanic(\"Device.GetGpuOperationModeFunc: method is nil but Device.GetGpuOperationMode was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetGpuOperationMode.Lock()\n\tmock.calls.GetGpuOperationMode = append(mock.calls.GetGpuOperationMode, callInfo)\n\tmock.lockGetGpuOperationMode.Unlock()\n\treturn mock.GetGpuOperationModeFunc()\n}\n\n// GetGpuOperationModeCalls gets all the calls that were made to GetGpuOperationMode.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetGpuOperationModeCalls())\nfunc (mock *Device) GetGpuOperationModeCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetGpuOperationMode.RLock()\n\tcalls = mock.calls.GetGpuOperationMode\n\tmock.lockGetGpuOperationMode.RUnlock()\n\treturn calls\n}\n\n// GetGraphicsRunningProcesses calls GetGraphicsRunningProcessesFunc.\nfunc (mock *Device) GetGraphicsRunningProcesses() ([]nvml.ProcessInfo, nvml.Return) {\n\tif mock.GetGraphicsRunningProcessesFunc == nil {\n\t\tpanic(\"Device.GetGraphicsRunningProcessesFunc: method is nil but Device.GetGraphicsRunningProcesses was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetGraphicsRunningProcesses.Lock()\n\tmock.calls.GetGraphicsRunningProcesses = append(mock.calls.GetGraphicsRunningProcesses, callInfo)\n\tmock.lockGetGraphicsRunningProcesses.Unlock()\n\treturn mock.GetGraphicsRunningProcessesFunc()\n}\n\n// GetGraphicsRunningProcessesCalls gets all the calls that were made to GetGraphicsRunningProcesses.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetGraphicsRunningProcessesCalls())\nfunc (mock *Device) GetGraphicsRunningProcessesCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetGraphicsRunningProcesses.RLock()\n\tcalls = mock.calls.GetGraphicsRunningProcesses\n\tmock.lockGetGraphicsRunningProcesses.RUnlock()\n\treturn calls\n}\n\n// GetGridLicensableFeatures calls GetGridLicensableFeaturesFunc.\nfunc (mock *Device) GetGridLicensableFeatures() (nvml.GridLicensableFeatures, nvml.Return) {\n\tif mock.GetGridLicensableFeaturesFunc == nil {\n\t\tpanic(\"Device.GetGridLicensableFeaturesFunc: method is nil but Device.GetGridLicensableFeatures was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetGridLicensableFeatures.Lock()\n\tmock.calls.GetGridLicensableFeatures = append(mock.calls.GetGridLicensableFeatures, callInfo)\n\tmock.lockGetGridLicensableFeatures.Unlock()\n\treturn mock.GetGridLicensableFeaturesFunc()\n}\n\n// GetGridLicensableFeaturesCalls gets all the calls that were made to GetGridLicensableFeatures.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetGridLicensableFeaturesCalls())\nfunc (mock *Device) GetGridLicensableFeaturesCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetGridLicensableFeatures.RLock()\n\tcalls = mock.calls.GetGridLicensableFeatures\n\tmock.lockGetGridLicensableFeatures.RUnlock()\n\treturn calls\n}\n\n// GetGspFirmwareMode calls GetGspFirmwareModeFunc.\nfunc (mock *Device) GetGspFirmwareMode() (bool, bool, nvml.Return) {\n\tif mock.GetGspFirmwareModeFunc == nil {\n\t\tpanic(\"Device.GetGspFirmwareModeFunc: method is nil but Device.GetGspFirmwareMode was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetGspFirmwareMode.Lock()\n\tmock.calls.GetGspFirmwareMode = append(mock.calls.GetGspFirmwareMode, callInfo)\n\tmock.lockGetGspFirmwareMode.Unlock()\n\treturn mock.GetGspFirmwareModeFunc()\n}\n\n// GetGspFirmwareModeCalls gets all the calls that were made to GetGspFirmwareMode.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetGspFirmwareModeCalls())\nfunc (mock *Device) GetGspFirmwareModeCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetGspFirmwareMode.RLock()\n\tcalls = mock.calls.GetGspFirmwareMode\n\tmock.lockGetGspFirmwareMode.RUnlock()\n\treturn calls\n}\n\n// GetGspFirmwareVersion calls GetGspFirmwareVersionFunc.\nfunc (mock *Device) GetGspFirmwareVersion() (string, nvml.Return) {\n\tif mock.GetGspFirmwareVersionFunc == nil {\n\t\tpanic(\"Device.GetGspFirmwareVersionFunc: method is nil but Device.GetGspFirmwareVersion was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetGspFirmwareVersion.Lock()\n\tmock.calls.GetGspFirmwareVersion = append(mock.calls.GetGspFirmwareVersion, callInfo)\n\tmock.lockGetGspFirmwareVersion.Unlock()\n\treturn mock.GetGspFirmwareVersionFunc()\n}\n\n// GetGspFirmwareVersionCalls gets all the calls that were made to GetGspFirmwareVersion.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetGspFirmwareVersionCalls())\nfunc (mock *Device) GetGspFirmwareVersionCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetGspFirmwareVersion.RLock()\n\tcalls = mock.calls.GetGspFirmwareVersion\n\tmock.lockGetGspFirmwareVersion.RUnlock()\n\treturn calls\n}\n\n// GetHostVgpuMode calls GetHostVgpuModeFunc.\nfunc (mock *Device) GetHostVgpuMode() (nvml.HostVgpuMode, nvml.Return) {\n\tif mock.GetHostVgpuModeFunc == nil {\n\t\tpanic(\"Device.GetHostVgpuModeFunc: method is nil but Device.GetHostVgpuMode was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetHostVgpuMode.Lock()\n\tmock.calls.GetHostVgpuMode = append(mock.calls.GetHostVgpuMode, callInfo)\n\tmock.lockGetHostVgpuMode.Unlock()\n\treturn mock.GetHostVgpuModeFunc()\n}\n\n// GetHostVgpuModeCalls gets all the calls that were made to GetHostVgpuMode.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetHostVgpuModeCalls())\nfunc (mock *Device) GetHostVgpuModeCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetHostVgpuMode.RLock()\n\tcalls = mock.calls.GetHostVgpuMode\n\tmock.lockGetHostVgpuMode.RUnlock()\n\treturn calls\n}\n\n// GetIndex calls GetIndexFunc.\nfunc (mock *Device) GetIndex() (int, nvml.Return) {\n\tif mock.GetIndexFunc == nil {\n\t\tpanic(\"Device.GetIndexFunc: method is nil but Device.GetIndex was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetIndex.Lock()\n\tmock.calls.GetIndex = append(mock.calls.GetIndex, callInfo)\n\tmock.lockGetIndex.Unlock()\n\treturn mock.GetIndexFunc()\n}\n\n// GetIndexCalls gets all the calls that were made to GetIndex.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetIndexCalls())\nfunc (mock *Device) GetIndexCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetIndex.RLock()\n\tcalls = mock.calls.GetIndex\n\tmock.lockGetIndex.RUnlock()\n\treturn calls\n}\n\n// GetInforomConfigurationChecksum calls GetInforomConfigurationChecksumFunc.\nfunc (mock *Device) GetInforomConfigurationChecksum() (uint32, nvml.Return) {\n\tif mock.GetInforomConfigurationChecksumFunc == nil {\n\t\tpanic(\"Device.GetInforomConfigurationChecksumFunc: method is nil but Device.GetInforomConfigurationChecksum was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetInforomConfigurationChecksum.Lock()\n\tmock.calls.GetInforomConfigurationChecksum = append(mock.calls.GetInforomConfigurationChecksum, callInfo)\n\tmock.lockGetInforomConfigurationChecksum.Unlock()\n\treturn mock.GetInforomConfigurationChecksumFunc()\n}\n\n// GetInforomConfigurationChecksumCalls gets all the calls that were made to GetInforomConfigurationChecksum.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetInforomConfigurationChecksumCalls())\nfunc (mock *Device) GetInforomConfigurationChecksumCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetInforomConfigurationChecksum.RLock()\n\tcalls = mock.calls.GetInforomConfigurationChecksum\n\tmock.lockGetInforomConfigurationChecksum.RUnlock()\n\treturn calls\n}\n\n// GetInforomImageVersion calls GetInforomImageVersionFunc.\nfunc (mock *Device) GetInforomImageVersion() (string, nvml.Return) {\n\tif mock.GetInforomImageVersionFunc == nil {\n\t\tpanic(\"Device.GetInforomImageVersionFunc: method is nil but Device.GetInforomImageVersion was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetInforomImageVersion.Lock()\n\tmock.calls.GetInforomImageVersion = append(mock.calls.GetInforomImageVersion, callInfo)\n\tmock.lockGetInforomImageVersion.Unlock()\n\treturn mock.GetInforomImageVersionFunc()\n}\n\n// GetInforomImageVersionCalls gets all the calls that were made to GetInforomImageVersion.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetInforomImageVersionCalls())\nfunc (mock *Device) GetInforomImageVersionCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetInforomImageVersion.RLock()\n\tcalls = mock.calls.GetInforomImageVersion\n\tmock.lockGetInforomImageVersion.RUnlock()\n\treturn calls\n}\n\n// GetInforomVersion calls GetInforomVersionFunc.\nfunc (mock *Device) GetInforomVersion(inforomObject nvml.InforomObject) (string, nvml.Return) {\n\tif mock.GetInforomVersionFunc == nil {\n\t\tpanic(\"Device.GetInforomVersionFunc: method is nil but Device.GetInforomVersion was just called\")\n\t}\n\tcallInfo := struct {\n\t\tInforomObject nvml.InforomObject\n\t}{\n\t\tInforomObject: inforomObject,\n\t}\n\tmock.lockGetInforomVersion.Lock()\n\tmock.calls.GetInforomVersion = append(mock.calls.GetInforomVersion, callInfo)\n\tmock.lockGetInforomVersion.Unlock()\n\treturn mock.GetInforomVersionFunc(inforomObject)\n}\n\n// GetInforomVersionCalls gets all the calls that were made to GetInforomVersion.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetInforomVersionCalls())\nfunc (mock *Device) GetInforomVersionCalls() []struct {\n\tInforomObject nvml.InforomObject\n} {\n\tvar calls []struct {\n\t\tInforomObject nvml.InforomObject\n\t}\n\tmock.lockGetInforomVersion.RLock()\n\tcalls = mock.calls.GetInforomVersion\n\tmock.lockGetInforomVersion.RUnlock()\n\treturn calls\n}\n\n// GetIrqNum calls GetIrqNumFunc.\nfunc (mock *Device) GetIrqNum() (int, nvml.Return) {\n\tif mock.GetIrqNumFunc == nil {\n\t\tpanic(\"Device.GetIrqNumFunc: method is nil but Device.GetIrqNum was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetIrqNum.Lock()\n\tmock.calls.GetIrqNum = append(mock.calls.GetIrqNum, callInfo)\n\tmock.lockGetIrqNum.Unlock()\n\treturn mock.GetIrqNumFunc()\n}\n\n// GetIrqNumCalls gets all the calls that were made to GetIrqNum.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetIrqNumCalls())\nfunc (mock *Device) GetIrqNumCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetIrqNum.RLock()\n\tcalls = mock.calls.GetIrqNum\n\tmock.lockGetIrqNum.RUnlock()\n\treturn calls\n}\n\n// GetJpgUtilization calls GetJpgUtilizationFunc.\nfunc (mock *Device) GetJpgUtilization() (uint32, uint32, nvml.Return) {\n\tif mock.GetJpgUtilizationFunc == nil {\n\t\tpanic(\"Device.GetJpgUtilizationFunc: method is nil but Device.GetJpgUtilization was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetJpgUtilization.Lock()\n\tmock.calls.GetJpgUtilization = append(mock.calls.GetJpgUtilization, callInfo)\n\tmock.lockGetJpgUtilization.Unlock()\n\treturn mock.GetJpgUtilizationFunc()\n}\n\n// GetJpgUtilizationCalls gets all the calls that were made to GetJpgUtilization.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetJpgUtilizationCalls())\nfunc (mock *Device) GetJpgUtilizationCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetJpgUtilization.RLock()\n\tcalls = mock.calls.GetJpgUtilization\n\tmock.lockGetJpgUtilization.RUnlock()\n\treturn calls\n}\n\n// GetLastBBXFlushTime calls GetLastBBXFlushTimeFunc.\nfunc (mock *Device) GetLastBBXFlushTime() (uint64, uint, nvml.Return) {\n\tif mock.GetLastBBXFlushTimeFunc == nil {\n\t\tpanic(\"Device.GetLastBBXFlushTimeFunc: method is nil but Device.GetLastBBXFlushTime was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetLastBBXFlushTime.Lock()\n\tmock.calls.GetLastBBXFlushTime = append(mock.calls.GetLastBBXFlushTime, callInfo)\n\tmock.lockGetLastBBXFlushTime.Unlock()\n\treturn mock.GetLastBBXFlushTimeFunc()\n}\n\n// GetLastBBXFlushTimeCalls gets all the calls that were made to GetLastBBXFlushTime.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetLastBBXFlushTimeCalls())\nfunc (mock *Device) GetLastBBXFlushTimeCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetLastBBXFlushTime.RLock()\n\tcalls = mock.calls.GetLastBBXFlushTime\n\tmock.lockGetLastBBXFlushTime.RUnlock()\n\treturn calls\n}\n\n// GetMPSComputeRunningProcesses calls GetMPSComputeRunningProcessesFunc.\nfunc (mock *Device) GetMPSComputeRunningProcesses() ([]nvml.ProcessInfo, nvml.Return) {\n\tif mock.GetMPSComputeRunningProcessesFunc == nil {\n\t\tpanic(\"Device.GetMPSComputeRunningProcessesFunc: method is nil but Device.GetMPSComputeRunningProcesses was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetMPSComputeRunningProcesses.Lock()\n\tmock.calls.GetMPSComputeRunningProcesses = append(mock.calls.GetMPSComputeRunningProcesses, callInfo)\n\tmock.lockGetMPSComputeRunningProcesses.Unlock()\n\treturn mock.GetMPSComputeRunningProcessesFunc()\n}\n\n// GetMPSComputeRunningProcessesCalls gets all the calls that were made to GetMPSComputeRunningProcesses.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetMPSComputeRunningProcessesCalls())\nfunc (mock *Device) GetMPSComputeRunningProcessesCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetMPSComputeRunningProcesses.RLock()\n\tcalls = mock.calls.GetMPSComputeRunningProcesses\n\tmock.lockGetMPSComputeRunningProcesses.RUnlock()\n\treturn calls\n}\n\n// GetMarginTemperature calls GetMarginTemperatureFunc.\nfunc (mock *Device) GetMarginTemperature() (nvml.MarginTemperature, nvml.Return) {\n\tif mock.GetMarginTemperatureFunc == nil {\n\t\tpanic(\"Device.GetMarginTemperatureFunc: method is nil but Device.GetMarginTemperature was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetMarginTemperature.Lock()\n\tmock.calls.GetMarginTemperature = append(mock.calls.GetMarginTemperature, callInfo)\n\tmock.lockGetMarginTemperature.Unlock()\n\treturn mock.GetMarginTemperatureFunc()\n}\n\n// GetMarginTemperatureCalls gets all the calls that were made to GetMarginTemperature.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetMarginTemperatureCalls())\nfunc (mock *Device) GetMarginTemperatureCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetMarginTemperature.RLock()\n\tcalls = mock.calls.GetMarginTemperature\n\tmock.lockGetMarginTemperature.RUnlock()\n\treturn calls\n}\n\n// GetMaxClockInfo calls GetMaxClockInfoFunc.\nfunc (mock *Device) GetMaxClockInfo(clockType nvml.ClockType) (uint32, nvml.Return) {\n\tif mock.GetMaxClockInfoFunc == nil {\n\t\tpanic(\"Device.GetMaxClockInfoFunc: method is nil but Device.GetMaxClockInfo was just called\")\n\t}\n\tcallInfo := struct {\n\t\tClockType nvml.ClockType\n\t}{\n\t\tClockType: clockType,\n\t}\n\tmock.lockGetMaxClockInfo.Lock()\n\tmock.calls.GetMaxClockInfo = append(mock.calls.GetMaxClockInfo, callInfo)\n\tmock.lockGetMaxClockInfo.Unlock()\n\treturn mock.GetMaxClockInfoFunc(clockType)\n}\n\n// GetMaxClockInfoCalls gets all the calls that were made to GetMaxClockInfo.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetMaxClockInfoCalls())\nfunc (mock *Device) GetMaxClockInfoCalls() []struct {\n\tClockType nvml.ClockType\n} {\n\tvar calls []struct {\n\t\tClockType nvml.ClockType\n\t}\n\tmock.lockGetMaxClockInfo.RLock()\n\tcalls = mock.calls.GetMaxClockInfo\n\tmock.lockGetMaxClockInfo.RUnlock()\n\treturn calls\n}\n\n// GetMaxCustomerBoostClock calls GetMaxCustomerBoostClockFunc.\nfunc (mock *Device) GetMaxCustomerBoostClock(clockType nvml.ClockType) (uint32, nvml.Return) {\n\tif mock.GetMaxCustomerBoostClockFunc == nil {\n\t\tpanic(\"Device.GetMaxCustomerBoostClockFunc: method is nil but Device.GetMaxCustomerBoostClock was just called\")\n\t}\n\tcallInfo := struct {\n\t\tClockType nvml.ClockType\n\t}{\n\t\tClockType: clockType,\n\t}\n\tmock.lockGetMaxCustomerBoostClock.Lock()\n\tmock.calls.GetMaxCustomerBoostClock = append(mock.calls.GetMaxCustomerBoostClock, callInfo)\n\tmock.lockGetMaxCustomerBoostClock.Unlock()\n\treturn mock.GetMaxCustomerBoostClockFunc(clockType)\n}\n\n// GetMaxCustomerBoostClockCalls gets all the calls that were made to GetMaxCustomerBoostClock.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetMaxCustomerBoostClockCalls())\nfunc (mock *Device) GetMaxCustomerBoostClockCalls() []struct {\n\tClockType nvml.ClockType\n} {\n\tvar calls []struct {\n\t\tClockType nvml.ClockType\n\t}\n\tmock.lockGetMaxCustomerBoostClock.RLock()\n\tcalls = mock.calls.GetMaxCustomerBoostClock\n\tmock.lockGetMaxCustomerBoostClock.RUnlock()\n\treturn calls\n}\n\n// GetMaxMigDeviceCount calls GetMaxMigDeviceCountFunc.\nfunc (mock *Device) GetMaxMigDeviceCount() (int, nvml.Return) {\n\tif mock.GetMaxMigDeviceCountFunc == nil {\n\t\tpanic(\"Device.GetMaxMigDeviceCountFunc: method is nil but Device.GetMaxMigDeviceCount was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetMaxMigDeviceCount.Lock()\n\tmock.calls.GetMaxMigDeviceCount = append(mock.calls.GetMaxMigDeviceCount, callInfo)\n\tmock.lockGetMaxMigDeviceCount.Unlock()\n\treturn mock.GetMaxMigDeviceCountFunc()\n}\n\n// GetMaxMigDeviceCountCalls gets all the calls that were made to GetMaxMigDeviceCount.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetMaxMigDeviceCountCalls())\nfunc (mock *Device) GetMaxMigDeviceCountCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetMaxMigDeviceCount.RLock()\n\tcalls = mock.calls.GetMaxMigDeviceCount\n\tmock.lockGetMaxMigDeviceCount.RUnlock()\n\treturn calls\n}\n\n// GetMaxPcieLinkGeneration calls GetMaxPcieLinkGenerationFunc.\nfunc (mock *Device) GetMaxPcieLinkGeneration() (int, nvml.Return) {\n\tif mock.GetMaxPcieLinkGenerationFunc == nil {\n\t\tpanic(\"Device.GetMaxPcieLinkGenerationFunc: method is nil but Device.GetMaxPcieLinkGeneration was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetMaxPcieLinkGeneration.Lock()\n\tmock.calls.GetMaxPcieLinkGeneration = append(mock.calls.GetMaxPcieLinkGeneration, callInfo)\n\tmock.lockGetMaxPcieLinkGeneration.Unlock()\n\treturn mock.GetMaxPcieLinkGenerationFunc()\n}\n\n// GetMaxPcieLinkGenerationCalls gets all the calls that were made to GetMaxPcieLinkGeneration.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetMaxPcieLinkGenerationCalls())\nfunc (mock *Device) GetMaxPcieLinkGenerationCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetMaxPcieLinkGeneration.RLock()\n\tcalls = mock.calls.GetMaxPcieLinkGeneration\n\tmock.lockGetMaxPcieLinkGeneration.RUnlock()\n\treturn calls\n}\n\n// GetMaxPcieLinkWidth calls GetMaxPcieLinkWidthFunc.\nfunc (mock *Device) GetMaxPcieLinkWidth() (int, nvml.Return) {\n\tif mock.GetMaxPcieLinkWidthFunc == nil {\n\t\tpanic(\"Device.GetMaxPcieLinkWidthFunc: method is nil but Device.GetMaxPcieLinkWidth was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetMaxPcieLinkWidth.Lock()\n\tmock.calls.GetMaxPcieLinkWidth = append(mock.calls.GetMaxPcieLinkWidth, callInfo)\n\tmock.lockGetMaxPcieLinkWidth.Unlock()\n\treturn mock.GetMaxPcieLinkWidthFunc()\n}\n\n// GetMaxPcieLinkWidthCalls gets all the calls that were made to GetMaxPcieLinkWidth.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetMaxPcieLinkWidthCalls())\nfunc (mock *Device) GetMaxPcieLinkWidthCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetMaxPcieLinkWidth.RLock()\n\tcalls = mock.calls.GetMaxPcieLinkWidth\n\tmock.lockGetMaxPcieLinkWidth.RUnlock()\n\treturn calls\n}\n\n// GetMemClkMinMaxVfOffset calls GetMemClkMinMaxVfOffsetFunc.\nfunc (mock *Device) GetMemClkMinMaxVfOffset() (int, int, nvml.Return) {\n\tif mock.GetMemClkMinMaxVfOffsetFunc == nil {\n\t\tpanic(\"Device.GetMemClkMinMaxVfOffsetFunc: method is nil but Device.GetMemClkMinMaxVfOffset was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetMemClkMinMaxVfOffset.Lock()\n\tmock.calls.GetMemClkMinMaxVfOffset = append(mock.calls.GetMemClkMinMaxVfOffset, callInfo)\n\tmock.lockGetMemClkMinMaxVfOffset.Unlock()\n\treturn mock.GetMemClkMinMaxVfOffsetFunc()\n}\n\n// GetMemClkMinMaxVfOffsetCalls gets all the calls that were made to GetMemClkMinMaxVfOffset.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetMemClkMinMaxVfOffsetCalls())\nfunc (mock *Device) GetMemClkMinMaxVfOffsetCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetMemClkMinMaxVfOffset.RLock()\n\tcalls = mock.calls.GetMemClkMinMaxVfOffset\n\tmock.lockGetMemClkMinMaxVfOffset.RUnlock()\n\treturn calls\n}\n\n// GetMemClkVfOffset calls GetMemClkVfOffsetFunc.\nfunc (mock *Device) GetMemClkVfOffset() (int, nvml.Return) {\n\tif mock.GetMemClkVfOffsetFunc == nil {\n\t\tpanic(\"Device.GetMemClkVfOffsetFunc: method is nil but Device.GetMemClkVfOffset was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetMemClkVfOffset.Lock()\n\tmock.calls.GetMemClkVfOffset = append(mock.calls.GetMemClkVfOffset, callInfo)\n\tmock.lockGetMemClkVfOffset.Unlock()\n\treturn mock.GetMemClkVfOffsetFunc()\n}\n\n// GetMemClkVfOffsetCalls gets all the calls that were made to GetMemClkVfOffset.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetMemClkVfOffsetCalls())\nfunc (mock *Device) GetMemClkVfOffsetCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetMemClkVfOffset.RLock()\n\tcalls = mock.calls.GetMemClkVfOffset\n\tmock.lockGetMemClkVfOffset.RUnlock()\n\treturn calls\n}\n\n// GetMemoryAffinity calls GetMemoryAffinityFunc.\nfunc (mock *Device) GetMemoryAffinity(n int, affinityScope nvml.AffinityScope) ([]uint, nvml.Return) {\n\tif mock.GetMemoryAffinityFunc == nil {\n\t\tpanic(\"Device.GetMemoryAffinityFunc: method is nil but Device.GetMemoryAffinity was just called\")\n\t}\n\tcallInfo := struct {\n\t\tN             int\n\t\tAffinityScope nvml.AffinityScope\n\t}{\n\t\tN:             n,\n\t\tAffinityScope: affinityScope,\n\t}\n\tmock.lockGetMemoryAffinity.Lock()\n\tmock.calls.GetMemoryAffinity = append(mock.calls.GetMemoryAffinity, callInfo)\n\tmock.lockGetMemoryAffinity.Unlock()\n\treturn mock.GetMemoryAffinityFunc(n, affinityScope)\n}\n\n// GetMemoryAffinityCalls gets all the calls that were made to GetMemoryAffinity.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetMemoryAffinityCalls())\nfunc (mock *Device) GetMemoryAffinityCalls() []struct {\n\tN             int\n\tAffinityScope nvml.AffinityScope\n} {\n\tvar calls []struct {\n\t\tN             int\n\t\tAffinityScope nvml.AffinityScope\n\t}\n\tmock.lockGetMemoryAffinity.RLock()\n\tcalls = mock.calls.GetMemoryAffinity\n\tmock.lockGetMemoryAffinity.RUnlock()\n\treturn calls\n}\n\n// GetMemoryBusWidth calls GetMemoryBusWidthFunc.\nfunc (mock *Device) GetMemoryBusWidth() (uint32, nvml.Return) {\n\tif mock.GetMemoryBusWidthFunc == nil {\n\t\tpanic(\"Device.GetMemoryBusWidthFunc: method is nil but Device.GetMemoryBusWidth was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetMemoryBusWidth.Lock()\n\tmock.calls.GetMemoryBusWidth = append(mock.calls.GetMemoryBusWidth, callInfo)\n\tmock.lockGetMemoryBusWidth.Unlock()\n\treturn mock.GetMemoryBusWidthFunc()\n}\n\n// GetMemoryBusWidthCalls gets all the calls that were made to GetMemoryBusWidth.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetMemoryBusWidthCalls())\nfunc (mock *Device) GetMemoryBusWidthCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetMemoryBusWidth.RLock()\n\tcalls = mock.calls.GetMemoryBusWidth\n\tmock.lockGetMemoryBusWidth.RUnlock()\n\treturn calls\n}\n\n// GetMemoryErrorCounter calls GetMemoryErrorCounterFunc.\nfunc (mock *Device) GetMemoryErrorCounter(memoryErrorType nvml.MemoryErrorType, eccCounterType nvml.EccCounterType, memoryLocation nvml.MemoryLocation) (uint64, nvml.Return) {\n\tif mock.GetMemoryErrorCounterFunc == nil {\n\t\tpanic(\"Device.GetMemoryErrorCounterFunc: method is nil but Device.GetMemoryErrorCounter was just called\")\n\t}\n\tcallInfo := struct {\n\t\tMemoryErrorType nvml.MemoryErrorType\n\t\tEccCounterType  nvml.EccCounterType\n\t\tMemoryLocation  nvml.MemoryLocation\n\t}{\n\t\tMemoryErrorType: memoryErrorType,\n\t\tEccCounterType:  eccCounterType,\n\t\tMemoryLocation:  memoryLocation,\n\t}\n\tmock.lockGetMemoryErrorCounter.Lock()\n\tmock.calls.GetMemoryErrorCounter = append(mock.calls.GetMemoryErrorCounter, callInfo)\n\tmock.lockGetMemoryErrorCounter.Unlock()\n\treturn mock.GetMemoryErrorCounterFunc(memoryErrorType, eccCounterType, memoryLocation)\n}\n\n// GetMemoryErrorCounterCalls gets all the calls that were made to GetMemoryErrorCounter.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetMemoryErrorCounterCalls())\nfunc (mock *Device) GetMemoryErrorCounterCalls() []struct {\n\tMemoryErrorType nvml.MemoryErrorType\n\tEccCounterType  nvml.EccCounterType\n\tMemoryLocation  nvml.MemoryLocation\n} {\n\tvar calls []struct {\n\t\tMemoryErrorType nvml.MemoryErrorType\n\t\tEccCounterType  nvml.EccCounterType\n\t\tMemoryLocation  nvml.MemoryLocation\n\t}\n\tmock.lockGetMemoryErrorCounter.RLock()\n\tcalls = mock.calls.GetMemoryErrorCounter\n\tmock.lockGetMemoryErrorCounter.RUnlock()\n\treturn calls\n}\n\n// GetMemoryInfo calls GetMemoryInfoFunc.\nfunc (mock *Device) GetMemoryInfo() (nvml.Memory, nvml.Return) {\n\tif mock.GetMemoryInfoFunc == nil {\n\t\tpanic(\"Device.GetMemoryInfoFunc: method is nil but Device.GetMemoryInfo was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetMemoryInfo.Lock()\n\tmock.calls.GetMemoryInfo = append(mock.calls.GetMemoryInfo, callInfo)\n\tmock.lockGetMemoryInfo.Unlock()\n\treturn mock.GetMemoryInfoFunc()\n}\n\n// GetMemoryInfoCalls gets all the calls that were made to GetMemoryInfo.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetMemoryInfoCalls())\nfunc (mock *Device) GetMemoryInfoCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetMemoryInfo.RLock()\n\tcalls = mock.calls.GetMemoryInfo\n\tmock.lockGetMemoryInfo.RUnlock()\n\treturn calls\n}\n\n// GetMemoryInfo_v2 calls GetMemoryInfo_v2Func.\nfunc (mock *Device) GetMemoryInfo_v2() (nvml.Memory_v2, nvml.Return) {\n\tif mock.GetMemoryInfo_v2Func == nil {\n\t\tpanic(\"Device.GetMemoryInfo_v2Func: method is nil but Device.GetMemoryInfo_v2 was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetMemoryInfo_v2.Lock()\n\tmock.calls.GetMemoryInfo_v2 = append(mock.calls.GetMemoryInfo_v2, callInfo)\n\tmock.lockGetMemoryInfo_v2.Unlock()\n\treturn mock.GetMemoryInfo_v2Func()\n}\n\n// GetMemoryInfo_v2Calls gets all the calls that were made to GetMemoryInfo_v2.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetMemoryInfo_v2Calls())\nfunc (mock *Device) GetMemoryInfo_v2Calls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetMemoryInfo_v2.RLock()\n\tcalls = mock.calls.GetMemoryInfo_v2\n\tmock.lockGetMemoryInfo_v2.RUnlock()\n\treturn calls\n}\n\n// GetMigDeviceHandleByIndex calls GetMigDeviceHandleByIndexFunc.\nfunc (mock *Device) GetMigDeviceHandleByIndex(n int) (nvml.Device, nvml.Return) {\n\tif mock.GetMigDeviceHandleByIndexFunc == nil {\n\t\tpanic(\"Device.GetMigDeviceHandleByIndexFunc: method is nil but Device.GetMigDeviceHandleByIndex was just called\")\n\t}\n\tcallInfo := struct {\n\t\tN int\n\t}{\n\t\tN: n,\n\t}\n\tmock.lockGetMigDeviceHandleByIndex.Lock()\n\tmock.calls.GetMigDeviceHandleByIndex = append(mock.calls.GetMigDeviceHandleByIndex, callInfo)\n\tmock.lockGetMigDeviceHandleByIndex.Unlock()\n\treturn mock.GetMigDeviceHandleByIndexFunc(n)\n}\n\n// GetMigDeviceHandleByIndexCalls gets all the calls that were made to GetMigDeviceHandleByIndex.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetMigDeviceHandleByIndexCalls())\nfunc (mock *Device) GetMigDeviceHandleByIndexCalls() []struct {\n\tN int\n} {\n\tvar calls []struct {\n\t\tN int\n\t}\n\tmock.lockGetMigDeviceHandleByIndex.RLock()\n\tcalls = mock.calls.GetMigDeviceHandleByIndex\n\tmock.lockGetMigDeviceHandleByIndex.RUnlock()\n\treturn calls\n}\n\n// GetMigMode calls GetMigModeFunc.\nfunc (mock *Device) GetMigMode() (int, int, nvml.Return) {\n\tif mock.GetMigModeFunc == nil {\n\t\tpanic(\"Device.GetMigModeFunc: method is nil but Device.GetMigMode was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetMigMode.Lock()\n\tmock.calls.GetMigMode = append(mock.calls.GetMigMode, callInfo)\n\tmock.lockGetMigMode.Unlock()\n\treturn mock.GetMigModeFunc()\n}\n\n// GetMigModeCalls gets all the calls that were made to GetMigMode.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetMigModeCalls())\nfunc (mock *Device) GetMigModeCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetMigMode.RLock()\n\tcalls = mock.calls.GetMigMode\n\tmock.lockGetMigMode.RUnlock()\n\treturn calls\n}\n\n// GetMinMaxClockOfPState calls GetMinMaxClockOfPStateFunc.\nfunc (mock *Device) GetMinMaxClockOfPState(clockType nvml.ClockType, pstates nvml.Pstates) (uint32, uint32, nvml.Return) {\n\tif mock.GetMinMaxClockOfPStateFunc == nil {\n\t\tpanic(\"Device.GetMinMaxClockOfPStateFunc: method is nil but Device.GetMinMaxClockOfPState was just called\")\n\t}\n\tcallInfo := struct {\n\t\tClockType nvml.ClockType\n\t\tPstates   nvml.Pstates\n\t}{\n\t\tClockType: clockType,\n\t\tPstates:   pstates,\n\t}\n\tmock.lockGetMinMaxClockOfPState.Lock()\n\tmock.calls.GetMinMaxClockOfPState = append(mock.calls.GetMinMaxClockOfPState, callInfo)\n\tmock.lockGetMinMaxClockOfPState.Unlock()\n\treturn mock.GetMinMaxClockOfPStateFunc(clockType, pstates)\n}\n\n// GetMinMaxClockOfPStateCalls gets all the calls that were made to GetMinMaxClockOfPState.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetMinMaxClockOfPStateCalls())\nfunc (mock *Device) GetMinMaxClockOfPStateCalls() []struct {\n\tClockType nvml.ClockType\n\tPstates   nvml.Pstates\n} {\n\tvar calls []struct {\n\t\tClockType nvml.ClockType\n\t\tPstates   nvml.Pstates\n\t}\n\tmock.lockGetMinMaxClockOfPState.RLock()\n\tcalls = mock.calls.GetMinMaxClockOfPState\n\tmock.lockGetMinMaxClockOfPState.RUnlock()\n\treturn calls\n}\n\n// GetMinMaxFanSpeed calls GetMinMaxFanSpeedFunc.\nfunc (mock *Device) GetMinMaxFanSpeed() (int, int, nvml.Return) {\n\tif mock.GetMinMaxFanSpeedFunc == nil {\n\t\tpanic(\"Device.GetMinMaxFanSpeedFunc: method is nil but Device.GetMinMaxFanSpeed was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetMinMaxFanSpeed.Lock()\n\tmock.calls.GetMinMaxFanSpeed = append(mock.calls.GetMinMaxFanSpeed, callInfo)\n\tmock.lockGetMinMaxFanSpeed.Unlock()\n\treturn mock.GetMinMaxFanSpeedFunc()\n}\n\n// GetMinMaxFanSpeedCalls gets all the calls that were made to GetMinMaxFanSpeed.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetMinMaxFanSpeedCalls())\nfunc (mock *Device) GetMinMaxFanSpeedCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetMinMaxFanSpeed.RLock()\n\tcalls = mock.calls.GetMinMaxFanSpeed\n\tmock.lockGetMinMaxFanSpeed.RUnlock()\n\treturn calls\n}\n\n// GetMinorNumber calls GetMinorNumberFunc.\nfunc (mock *Device) GetMinorNumber() (int, nvml.Return) {\n\tif mock.GetMinorNumberFunc == nil {\n\t\tpanic(\"Device.GetMinorNumberFunc: method is nil but Device.GetMinorNumber was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetMinorNumber.Lock()\n\tmock.calls.GetMinorNumber = append(mock.calls.GetMinorNumber, callInfo)\n\tmock.lockGetMinorNumber.Unlock()\n\treturn mock.GetMinorNumberFunc()\n}\n\n// GetMinorNumberCalls gets all the calls that were made to GetMinorNumber.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetMinorNumberCalls())\nfunc (mock *Device) GetMinorNumberCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetMinorNumber.RLock()\n\tcalls = mock.calls.GetMinorNumber\n\tmock.lockGetMinorNumber.RUnlock()\n\treturn calls\n}\n\n// GetModuleId calls GetModuleIdFunc.\nfunc (mock *Device) GetModuleId() (int, nvml.Return) {\n\tif mock.GetModuleIdFunc == nil {\n\t\tpanic(\"Device.GetModuleIdFunc: method is nil but Device.GetModuleId was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetModuleId.Lock()\n\tmock.calls.GetModuleId = append(mock.calls.GetModuleId, callInfo)\n\tmock.lockGetModuleId.Unlock()\n\treturn mock.GetModuleIdFunc()\n}\n\n// GetModuleIdCalls gets all the calls that were made to GetModuleId.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetModuleIdCalls())\nfunc (mock *Device) GetModuleIdCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetModuleId.RLock()\n\tcalls = mock.calls.GetModuleId\n\tmock.lockGetModuleId.RUnlock()\n\treturn calls\n}\n\n// GetMultiGpuBoard calls GetMultiGpuBoardFunc.\nfunc (mock *Device) GetMultiGpuBoard() (int, nvml.Return) {\n\tif mock.GetMultiGpuBoardFunc == nil {\n\t\tpanic(\"Device.GetMultiGpuBoardFunc: method is nil but Device.GetMultiGpuBoard was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetMultiGpuBoard.Lock()\n\tmock.calls.GetMultiGpuBoard = append(mock.calls.GetMultiGpuBoard, callInfo)\n\tmock.lockGetMultiGpuBoard.Unlock()\n\treturn mock.GetMultiGpuBoardFunc()\n}\n\n// GetMultiGpuBoardCalls gets all the calls that were made to GetMultiGpuBoard.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetMultiGpuBoardCalls())\nfunc (mock *Device) GetMultiGpuBoardCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetMultiGpuBoard.RLock()\n\tcalls = mock.calls.GetMultiGpuBoard\n\tmock.lockGetMultiGpuBoard.RUnlock()\n\treturn calls\n}\n\n// GetName calls GetNameFunc.\nfunc (mock *Device) GetName() (string, nvml.Return) {\n\tif mock.GetNameFunc == nil {\n\t\tpanic(\"Device.GetNameFunc: method is nil but Device.GetName was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetName.Lock()\n\tmock.calls.GetName = append(mock.calls.GetName, callInfo)\n\tmock.lockGetName.Unlock()\n\treturn mock.GetNameFunc()\n}\n\n// GetNameCalls gets all the calls that were made to GetName.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetNameCalls())\nfunc (mock *Device) GetNameCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetName.RLock()\n\tcalls = mock.calls.GetName\n\tmock.lockGetName.RUnlock()\n\treturn calls\n}\n\n// GetNumFans calls GetNumFansFunc.\nfunc (mock *Device) GetNumFans() (int, nvml.Return) {\n\tif mock.GetNumFansFunc == nil {\n\t\tpanic(\"Device.GetNumFansFunc: method is nil but Device.GetNumFans was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetNumFans.Lock()\n\tmock.calls.GetNumFans = append(mock.calls.GetNumFans, callInfo)\n\tmock.lockGetNumFans.Unlock()\n\treturn mock.GetNumFansFunc()\n}\n\n// GetNumFansCalls gets all the calls that were made to GetNumFans.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetNumFansCalls())\nfunc (mock *Device) GetNumFansCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetNumFans.RLock()\n\tcalls = mock.calls.GetNumFans\n\tmock.lockGetNumFans.RUnlock()\n\treturn calls\n}\n\n// GetNumGpuCores calls GetNumGpuCoresFunc.\nfunc (mock *Device) GetNumGpuCores() (int, nvml.Return) {\n\tif mock.GetNumGpuCoresFunc == nil {\n\t\tpanic(\"Device.GetNumGpuCoresFunc: method is nil but Device.GetNumGpuCores was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetNumGpuCores.Lock()\n\tmock.calls.GetNumGpuCores = append(mock.calls.GetNumGpuCores, callInfo)\n\tmock.lockGetNumGpuCores.Unlock()\n\treturn mock.GetNumGpuCoresFunc()\n}\n\n// GetNumGpuCoresCalls gets all the calls that were made to GetNumGpuCores.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetNumGpuCoresCalls())\nfunc (mock *Device) GetNumGpuCoresCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetNumGpuCores.RLock()\n\tcalls = mock.calls.GetNumGpuCores\n\tmock.lockGetNumGpuCores.RUnlock()\n\treturn calls\n}\n\n// GetNumaNodeId calls GetNumaNodeIdFunc.\nfunc (mock *Device) GetNumaNodeId() (int, nvml.Return) {\n\tif mock.GetNumaNodeIdFunc == nil {\n\t\tpanic(\"Device.GetNumaNodeIdFunc: method is nil but Device.GetNumaNodeId was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetNumaNodeId.Lock()\n\tmock.calls.GetNumaNodeId = append(mock.calls.GetNumaNodeId, callInfo)\n\tmock.lockGetNumaNodeId.Unlock()\n\treturn mock.GetNumaNodeIdFunc()\n}\n\n// GetNumaNodeIdCalls gets all the calls that were made to GetNumaNodeId.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetNumaNodeIdCalls())\nfunc (mock *Device) GetNumaNodeIdCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetNumaNodeId.RLock()\n\tcalls = mock.calls.GetNumaNodeId\n\tmock.lockGetNumaNodeId.RUnlock()\n\treturn calls\n}\n\n// GetNvLinkCapability calls GetNvLinkCapabilityFunc.\nfunc (mock *Device) GetNvLinkCapability(n int, nvLinkCapability nvml.NvLinkCapability) (uint32, nvml.Return) {\n\tif mock.GetNvLinkCapabilityFunc == nil {\n\t\tpanic(\"Device.GetNvLinkCapabilityFunc: method is nil but Device.GetNvLinkCapability was just called\")\n\t}\n\tcallInfo := struct {\n\t\tN                int\n\t\tNvLinkCapability nvml.NvLinkCapability\n\t}{\n\t\tN:                n,\n\t\tNvLinkCapability: nvLinkCapability,\n\t}\n\tmock.lockGetNvLinkCapability.Lock()\n\tmock.calls.GetNvLinkCapability = append(mock.calls.GetNvLinkCapability, callInfo)\n\tmock.lockGetNvLinkCapability.Unlock()\n\treturn mock.GetNvLinkCapabilityFunc(n, nvLinkCapability)\n}\n\n// GetNvLinkCapabilityCalls gets all the calls that were made to GetNvLinkCapability.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetNvLinkCapabilityCalls())\nfunc (mock *Device) GetNvLinkCapabilityCalls() []struct {\n\tN                int\n\tNvLinkCapability nvml.NvLinkCapability\n} {\n\tvar calls []struct {\n\t\tN                int\n\t\tNvLinkCapability nvml.NvLinkCapability\n\t}\n\tmock.lockGetNvLinkCapability.RLock()\n\tcalls = mock.calls.GetNvLinkCapability\n\tmock.lockGetNvLinkCapability.RUnlock()\n\treturn calls\n}\n\n// GetNvLinkErrorCounter calls GetNvLinkErrorCounterFunc.\nfunc (mock *Device) GetNvLinkErrorCounter(n int, nvLinkErrorCounter nvml.NvLinkErrorCounter) (uint64, nvml.Return) {\n\tif mock.GetNvLinkErrorCounterFunc == nil {\n\t\tpanic(\"Device.GetNvLinkErrorCounterFunc: method is nil but Device.GetNvLinkErrorCounter was just called\")\n\t}\n\tcallInfo := struct {\n\t\tN                  int\n\t\tNvLinkErrorCounter nvml.NvLinkErrorCounter\n\t}{\n\t\tN:                  n,\n\t\tNvLinkErrorCounter: nvLinkErrorCounter,\n\t}\n\tmock.lockGetNvLinkErrorCounter.Lock()\n\tmock.calls.GetNvLinkErrorCounter = append(mock.calls.GetNvLinkErrorCounter, callInfo)\n\tmock.lockGetNvLinkErrorCounter.Unlock()\n\treturn mock.GetNvLinkErrorCounterFunc(n, nvLinkErrorCounter)\n}\n\n// GetNvLinkErrorCounterCalls gets all the calls that were made to GetNvLinkErrorCounter.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetNvLinkErrorCounterCalls())\nfunc (mock *Device) GetNvLinkErrorCounterCalls() []struct {\n\tN                  int\n\tNvLinkErrorCounter nvml.NvLinkErrorCounter\n} {\n\tvar calls []struct {\n\t\tN                  int\n\t\tNvLinkErrorCounter nvml.NvLinkErrorCounter\n\t}\n\tmock.lockGetNvLinkErrorCounter.RLock()\n\tcalls = mock.calls.GetNvLinkErrorCounter\n\tmock.lockGetNvLinkErrorCounter.RUnlock()\n\treturn calls\n}\n\n// GetNvLinkInfo calls GetNvLinkInfoFunc.\nfunc (mock *Device) GetNvLinkInfo() nvml.NvLinkInfoHandler {\n\tif mock.GetNvLinkInfoFunc == nil {\n\t\tpanic(\"Device.GetNvLinkInfoFunc: method is nil but Device.GetNvLinkInfo was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetNvLinkInfo.Lock()\n\tmock.calls.GetNvLinkInfo = append(mock.calls.GetNvLinkInfo, callInfo)\n\tmock.lockGetNvLinkInfo.Unlock()\n\treturn mock.GetNvLinkInfoFunc()\n}\n\n// GetNvLinkInfoCalls gets all the calls that were made to GetNvLinkInfo.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetNvLinkInfoCalls())\nfunc (mock *Device) GetNvLinkInfoCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetNvLinkInfo.RLock()\n\tcalls = mock.calls.GetNvLinkInfo\n\tmock.lockGetNvLinkInfo.RUnlock()\n\treturn calls\n}\n\n// GetNvLinkRemoteDeviceType calls GetNvLinkRemoteDeviceTypeFunc.\nfunc (mock *Device) GetNvLinkRemoteDeviceType(n int) (nvml.IntNvLinkDeviceType, nvml.Return) {\n\tif mock.GetNvLinkRemoteDeviceTypeFunc == nil {\n\t\tpanic(\"Device.GetNvLinkRemoteDeviceTypeFunc: method is nil but Device.GetNvLinkRemoteDeviceType was just called\")\n\t}\n\tcallInfo := struct {\n\t\tN int\n\t}{\n\t\tN: n,\n\t}\n\tmock.lockGetNvLinkRemoteDeviceType.Lock()\n\tmock.calls.GetNvLinkRemoteDeviceType = append(mock.calls.GetNvLinkRemoteDeviceType, callInfo)\n\tmock.lockGetNvLinkRemoteDeviceType.Unlock()\n\treturn mock.GetNvLinkRemoteDeviceTypeFunc(n)\n}\n\n// GetNvLinkRemoteDeviceTypeCalls gets all the calls that were made to GetNvLinkRemoteDeviceType.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetNvLinkRemoteDeviceTypeCalls())\nfunc (mock *Device) GetNvLinkRemoteDeviceTypeCalls() []struct {\n\tN int\n} {\n\tvar calls []struct {\n\t\tN int\n\t}\n\tmock.lockGetNvLinkRemoteDeviceType.RLock()\n\tcalls = mock.calls.GetNvLinkRemoteDeviceType\n\tmock.lockGetNvLinkRemoteDeviceType.RUnlock()\n\treturn calls\n}\n\n// GetNvLinkRemotePciInfo calls GetNvLinkRemotePciInfoFunc.\nfunc (mock *Device) GetNvLinkRemotePciInfo(n int) (nvml.PciInfo, nvml.Return) {\n\tif mock.GetNvLinkRemotePciInfoFunc == nil {\n\t\tpanic(\"Device.GetNvLinkRemotePciInfoFunc: method is nil but Device.GetNvLinkRemotePciInfo was just called\")\n\t}\n\tcallInfo := struct {\n\t\tN int\n\t}{\n\t\tN: n,\n\t}\n\tmock.lockGetNvLinkRemotePciInfo.Lock()\n\tmock.calls.GetNvLinkRemotePciInfo = append(mock.calls.GetNvLinkRemotePciInfo, callInfo)\n\tmock.lockGetNvLinkRemotePciInfo.Unlock()\n\treturn mock.GetNvLinkRemotePciInfoFunc(n)\n}\n\n// GetNvLinkRemotePciInfoCalls gets all the calls that were made to GetNvLinkRemotePciInfo.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetNvLinkRemotePciInfoCalls())\nfunc (mock *Device) GetNvLinkRemotePciInfoCalls() []struct {\n\tN int\n} {\n\tvar calls []struct {\n\t\tN int\n\t}\n\tmock.lockGetNvLinkRemotePciInfo.RLock()\n\tcalls = mock.calls.GetNvLinkRemotePciInfo\n\tmock.lockGetNvLinkRemotePciInfo.RUnlock()\n\treturn calls\n}\n\n// GetNvLinkState calls GetNvLinkStateFunc.\nfunc (mock *Device) GetNvLinkState(n int) (nvml.EnableState, nvml.Return) {\n\tif mock.GetNvLinkStateFunc == nil {\n\t\tpanic(\"Device.GetNvLinkStateFunc: method is nil but Device.GetNvLinkState was just called\")\n\t}\n\tcallInfo := struct {\n\t\tN int\n\t}{\n\t\tN: n,\n\t}\n\tmock.lockGetNvLinkState.Lock()\n\tmock.calls.GetNvLinkState = append(mock.calls.GetNvLinkState, callInfo)\n\tmock.lockGetNvLinkState.Unlock()\n\treturn mock.GetNvLinkStateFunc(n)\n}\n\n// GetNvLinkStateCalls gets all the calls that were made to GetNvLinkState.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetNvLinkStateCalls())\nfunc (mock *Device) GetNvLinkStateCalls() []struct {\n\tN int\n} {\n\tvar calls []struct {\n\t\tN int\n\t}\n\tmock.lockGetNvLinkState.RLock()\n\tcalls = mock.calls.GetNvLinkState\n\tmock.lockGetNvLinkState.RUnlock()\n\treturn calls\n}\n\n// GetNvLinkUtilizationControl calls GetNvLinkUtilizationControlFunc.\nfunc (mock *Device) GetNvLinkUtilizationControl(n1 int, n2 int) (nvml.NvLinkUtilizationControl, nvml.Return) {\n\tif mock.GetNvLinkUtilizationControlFunc == nil {\n\t\tpanic(\"Device.GetNvLinkUtilizationControlFunc: method is nil but Device.GetNvLinkUtilizationControl was just called\")\n\t}\n\tcallInfo := struct {\n\t\tN1 int\n\t\tN2 int\n\t}{\n\t\tN1: n1,\n\t\tN2: n2,\n\t}\n\tmock.lockGetNvLinkUtilizationControl.Lock()\n\tmock.calls.GetNvLinkUtilizationControl = append(mock.calls.GetNvLinkUtilizationControl, callInfo)\n\tmock.lockGetNvLinkUtilizationControl.Unlock()\n\treturn mock.GetNvLinkUtilizationControlFunc(n1, n2)\n}\n\n// GetNvLinkUtilizationControlCalls gets all the calls that were made to GetNvLinkUtilizationControl.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetNvLinkUtilizationControlCalls())\nfunc (mock *Device) GetNvLinkUtilizationControlCalls() []struct {\n\tN1 int\n\tN2 int\n} {\n\tvar calls []struct {\n\t\tN1 int\n\t\tN2 int\n\t}\n\tmock.lockGetNvLinkUtilizationControl.RLock()\n\tcalls = mock.calls.GetNvLinkUtilizationControl\n\tmock.lockGetNvLinkUtilizationControl.RUnlock()\n\treturn calls\n}\n\n// GetNvLinkUtilizationCounter calls GetNvLinkUtilizationCounterFunc.\nfunc (mock *Device) GetNvLinkUtilizationCounter(n1 int, n2 int) (uint64, uint64, nvml.Return) {\n\tif mock.GetNvLinkUtilizationCounterFunc == nil {\n\t\tpanic(\"Device.GetNvLinkUtilizationCounterFunc: method is nil but Device.GetNvLinkUtilizationCounter was just called\")\n\t}\n\tcallInfo := struct {\n\t\tN1 int\n\t\tN2 int\n\t}{\n\t\tN1: n1,\n\t\tN2: n2,\n\t}\n\tmock.lockGetNvLinkUtilizationCounter.Lock()\n\tmock.calls.GetNvLinkUtilizationCounter = append(mock.calls.GetNvLinkUtilizationCounter, callInfo)\n\tmock.lockGetNvLinkUtilizationCounter.Unlock()\n\treturn mock.GetNvLinkUtilizationCounterFunc(n1, n2)\n}\n\n// GetNvLinkUtilizationCounterCalls gets all the calls that were made to GetNvLinkUtilizationCounter.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetNvLinkUtilizationCounterCalls())\nfunc (mock *Device) GetNvLinkUtilizationCounterCalls() []struct {\n\tN1 int\n\tN2 int\n} {\n\tvar calls []struct {\n\t\tN1 int\n\t\tN2 int\n\t}\n\tmock.lockGetNvLinkUtilizationCounter.RLock()\n\tcalls = mock.calls.GetNvLinkUtilizationCounter\n\tmock.lockGetNvLinkUtilizationCounter.RUnlock()\n\treturn calls\n}\n\n// GetNvLinkVersion calls GetNvLinkVersionFunc.\nfunc (mock *Device) GetNvLinkVersion(n int) (uint32, nvml.Return) {\n\tif mock.GetNvLinkVersionFunc == nil {\n\t\tpanic(\"Device.GetNvLinkVersionFunc: method is nil but Device.GetNvLinkVersion was just called\")\n\t}\n\tcallInfo := struct {\n\t\tN int\n\t}{\n\t\tN: n,\n\t}\n\tmock.lockGetNvLinkVersion.Lock()\n\tmock.calls.GetNvLinkVersion = append(mock.calls.GetNvLinkVersion, callInfo)\n\tmock.lockGetNvLinkVersion.Unlock()\n\treturn mock.GetNvLinkVersionFunc(n)\n}\n\n// GetNvLinkVersionCalls gets all the calls that were made to GetNvLinkVersion.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetNvLinkVersionCalls())\nfunc (mock *Device) GetNvLinkVersionCalls() []struct {\n\tN int\n} {\n\tvar calls []struct {\n\t\tN int\n\t}\n\tmock.lockGetNvLinkVersion.RLock()\n\tcalls = mock.calls.GetNvLinkVersion\n\tmock.lockGetNvLinkVersion.RUnlock()\n\treturn calls\n}\n\n// GetNvlinkBwMode calls GetNvlinkBwModeFunc.\nfunc (mock *Device) GetNvlinkBwMode() (nvml.NvlinkGetBwMode, nvml.Return) {\n\tif mock.GetNvlinkBwModeFunc == nil {\n\t\tpanic(\"Device.GetNvlinkBwModeFunc: method is nil but Device.GetNvlinkBwMode was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetNvlinkBwMode.Lock()\n\tmock.calls.GetNvlinkBwMode = append(mock.calls.GetNvlinkBwMode, callInfo)\n\tmock.lockGetNvlinkBwMode.Unlock()\n\treturn mock.GetNvlinkBwModeFunc()\n}\n\n// GetNvlinkBwModeCalls gets all the calls that were made to GetNvlinkBwMode.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetNvlinkBwModeCalls())\nfunc (mock *Device) GetNvlinkBwModeCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetNvlinkBwMode.RLock()\n\tcalls = mock.calls.GetNvlinkBwMode\n\tmock.lockGetNvlinkBwMode.RUnlock()\n\treturn calls\n}\n\n// GetNvlinkSupportedBwModes calls GetNvlinkSupportedBwModesFunc.\nfunc (mock *Device) GetNvlinkSupportedBwModes() (nvml.NvlinkSupportedBwModes, nvml.Return) {\n\tif mock.GetNvlinkSupportedBwModesFunc == nil {\n\t\tpanic(\"Device.GetNvlinkSupportedBwModesFunc: method is nil but Device.GetNvlinkSupportedBwModes was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetNvlinkSupportedBwModes.Lock()\n\tmock.calls.GetNvlinkSupportedBwModes = append(mock.calls.GetNvlinkSupportedBwModes, callInfo)\n\tmock.lockGetNvlinkSupportedBwModes.Unlock()\n\treturn mock.GetNvlinkSupportedBwModesFunc()\n}\n\n// GetNvlinkSupportedBwModesCalls gets all the calls that were made to GetNvlinkSupportedBwModes.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetNvlinkSupportedBwModesCalls())\nfunc (mock *Device) GetNvlinkSupportedBwModesCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetNvlinkSupportedBwModes.RLock()\n\tcalls = mock.calls.GetNvlinkSupportedBwModes\n\tmock.lockGetNvlinkSupportedBwModes.RUnlock()\n\treturn calls\n}\n\n// GetOfaUtilization calls GetOfaUtilizationFunc.\nfunc (mock *Device) GetOfaUtilization() (uint32, uint32, nvml.Return) {\n\tif mock.GetOfaUtilizationFunc == nil {\n\t\tpanic(\"Device.GetOfaUtilizationFunc: method is nil but Device.GetOfaUtilization was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetOfaUtilization.Lock()\n\tmock.calls.GetOfaUtilization = append(mock.calls.GetOfaUtilization, callInfo)\n\tmock.lockGetOfaUtilization.Unlock()\n\treturn mock.GetOfaUtilizationFunc()\n}\n\n// GetOfaUtilizationCalls gets all the calls that were made to GetOfaUtilization.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetOfaUtilizationCalls())\nfunc (mock *Device) GetOfaUtilizationCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetOfaUtilization.RLock()\n\tcalls = mock.calls.GetOfaUtilization\n\tmock.lockGetOfaUtilization.RUnlock()\n\treturn calls\n}\n\n// GetP2PStatus calls GetP2PStatusFunc.\nfunc (mock *Device) GetP2PStatus(device nvml.Device, gpuP2PCapsIndex nvml.GpuP2PCapsIndex) (nvml.GpuP2PStatus, nvml.Return) {\n\tif mock.GetP2PStatusFunc == nil {\n\t\tpanic(\"Device.GetP2PStatusFunc: method is nil but Device.GetP2PStatus was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice          nvml.Device\n\t\tGpuP2PCapsIndex nvml.GpuP2PCapsIndex\n\t}{\n\t\tDevice:          device,\n\t\tGpuP2PCapsIndex: gpuP2PCapsIndex,\n\t}\n\tmock.lockGetP2PStatus.Lock()\n\tmock.calls.GetP2PStatus = append(mock.calls.GetP2PStatus, callInfo)\n\tmock.lockGetP2PStatus.Unlock()\n\treturn mock.GetP2PStatusFunc(device, gpuP2PCapsIndex)\n}\n\n// GetP2PStatusCalls gets all the calls that were made to GetP2PStatus.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetP2PStatusCalls())\nfunc (mock *Device) GetP2PStatusCalls() []struct {\n\tDevice          nvml.Device\n\tGpuP2PCapsIndex nvml.GpuP2PCapsIndex\n} {\n\tvar calls []struct {\n\t\tDevice          nvml.Device\n\t\tGpuP2PCapsIndex nvml.GpuP2PCapsIndex\n\t}\n\tmock.lockGetP2PStatus.RLock()\n\tcalls = mock.calls.GetP2PStatus\n\tmock.lockGetP2PStatus.RUnlock()\n\treturn calls\n}\n\n// GetPciInfo calls GetPciInfoFunc.\nfunc (mock *Device) GetPciInfo() (nvml.PciInfo, nvml.Return) {\n\tif mock.GetPciInfoFunc == nil {\n\t\tpanic(\"Device.GetPciInfoFunc: method is nil but Device.GetPciInfo was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetPciInfo.Lock()\n\tmock.calls.GetPciInfo = append(mock.calls.GetPciInfo, callInfo)\n\tmock.lockGetPciInfo.Unlock()\n\treturn mock.GetPciInfoFunc()\n}\n\n// GetPciInfoCalls gets all the calls that were made to GetPciInfo.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetPciInfoCalls())\nfunc (mock *Device) GetPciInfoCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetPciInfo.RLock()\n\tcalls = mock.calls.GetPciInfo\n\tmock.lockGetPciInfo.RUnlock()\n\treturn calls\n}\n\n// GetPciInfoExt calls GetPciInfoExtFunc.\nfunc (mock *Device) GetPciInfoExt() (nvml.PciInfoExt, nvml.Return) {\n\tif mock.GetPciInfoExtFunc == nil {\n\t\tpanic(\"Device.GetPciInfoExtFunc: method is nil but Device.GetPciInfoExt was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetPciInfoExt.Lock()\n\tmock.calls.GetPciInfoExt = append(mock.calls.GetPciInfoExt, callInfo)\n\tmock.lockGetPciInfoExt.Unlock()\n\treturn mock.GetPciInfoExtFunc()\n}\n\n// GetPciInfoExtCalls gets all the calls that were made to GetPciInfoExt.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetPciInfoExtCalls())\nfunc (mock *Device) GetPciInfoExtCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetPciInfoExt.RLock()\n\tcalls = mock.calls.GetPciInfoExt\n\tmock.lockGetPciInfoExt.RUnlock()\n\treturn calls\n}\n\n// GetPcieLinkMaxSpeed calls GetPcieLinkMaxSpeedFunc.\nfunc (mock *Device) GetPcieLinkMaxSpeed() (uint32, nvml.Return) {\n\tif mock.GetPcieLinkMaxSpeedFunc == nil {\n\t\tpanic(\"Device.GetPcieLinkMaxSpeedFunc: method is nil but Device.GetPcieLinkMaxSpeed was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetPcieLinkMaxSpeed.Lock()\n\tmock.calls.GetPcieLinkMaxSpeed = append(mock.calls.GetPcieLinkMaxSpeed, callInfo)\n\tmock.lockGetPcieLinkMaxSpeed.Unlock()\n\treturn mock.GetPcieLinkMaxSpeedFunc()\n}\n\n// GetPcieLinkMaxSpeedCalls gets all the calls that were made to GetPcieLinkMaxSpeed.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetPcieLinkMaxSpeedCalls())\nfunc (mock *Device) GetPcieLinkMaxSpeedCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetPcieLinkMaxSpeed.RLock()\n\tcalls = mock.calls.GetPcieLinkMaxSpeed\n\tmock.lockGetPcieLinkMaxSpeed.RUnlock()\n\treturn calls\n}\n\n// GetPcieReplayCounter calls GetPcieReplayCounterFunc.\nfunc (mock *Device) GetPcieReplayCounter() (int, nvml.Return) {\n\tif mock.GetPcieReplayCounterFunc == nil {\n\t\tpanic(\"Device.GetPcieReplayCounterFunc: method is nil but Device.GetPcieReplayCounter was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetPcieReplayCounter.Lock()\n\tmock.calls.GetPcieReplayCounter = append(mock.calls.GetPcieReplayCounter, callInfo)\n\tmock.lockGetPcieReplayCounter.Unlock()\n\treturn mock.GetPcieReplayCounterFunc()\n}\n\n// GetPcieReplayCounterCalls gets all the calls that were made to GetPcieReplayCounter.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetPcieReplayCounterCalls())\nfunc (mock *Device) GetPcieReplayCounterCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetPcieReplayCounter.RLock()\n\tcalls = mock.calls.GetPcieReplayCounter\n\tmock.lockGetPcieReplayCounter.RUnlock()\n\treturn calls\n}\n\n// GetPcieSpeed calls GetPcieSpeedFunc.\nfunc (mock *Device) GetPcieSpeed() (int, nvml.Return) {\n\tif mock.GetPcieSpeedFunc == nil {\n\t\tpanic(\"Device.GetPcieSpeedFunc: method is nil but Device.GetPcieSpeed was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetPcieSpeed.Lock()\n\tmock.calls.GetPcieSpeed = append(mock.calls.GetPcieSpeed, callInfo)\n\tmock.lockGetPcieSpeed.Unlock()\n\treturn mock.GetPcieSpeedFunc()\n}\n\n// GetPcieSpeedCalls gets all the calls that were made to GetPcieSpeed.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetPcieSpeedCalls())\nfunc (mock *Device) GetPcieSpeedCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetPcieSpeed.RLock()\n\tcalls = mock.calls.GetPcieSpeed\n\tmock.lockGetPcieSpeed.RUnlock()\n\treturn calls\n}\n\n// GetPcieThroughput calls GetPcieThroughputFunc.\nfunc (mock *Device) GetPcieThroughput(pcieUtilCounter nvml.PcieUtilCounter) (uint32, nvml.Return) {\n\tif mock.GetPcieThroughputFunc == nil {\n\t\tpanic(\"Device.GetPcieThroughputFunc: method is nil but Device.GetPcieThroughput was just called\")\n\t}\n\tcallInfo := struct {\n\t\tPcieUtilCounter nvml.PcieUtilCounter\n\t}{\n\t\tPcieUtilCounter: pcieUtilCounter,\n\t}\n\tmock.lockGetPcieThroughput.Lock()\n\tmock.calls.GetPcieThroughput = append(mock.calls.GetPcieThroughput, callInfo)\n\tmock.lockGetPcieThroughput.Unlock()\n\treturn mock.GetPcieThroughputFunc(pcieUtilCounter)\n}\n\n// GetPcieThroughputCalls gets all the calls that were made to GetPcieThroughput.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetPcieThroughputCalls())\nfunc (mock *Device) GetPcieThroughputCalls() []struct {\n\tPcieUtilCounter nvml.PcieUtilCounter\n} {\n\tvar calls []struct {\n\t\tPcieUtilCounter nvml.PcieUtilCounter\n\t}\n\tmock.lockGetPcieThroughput.RLock()\n\tcalls = mock.calls.GetPcieThroughput\n\tmock.lockGetPcieThroughput.RUnlock()\n\treturn calls\n}\n\n// GetPdi calls GetPdiFunc.\nfunc (mock *Device) GetPdi() (nvml.Pdi, nvml.Return) {\n\tif mock.GetPdiFunc == nil {\n\t\tpanic(\"Device.GetPdiFunc: method is nil but Device.GetPdi was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetPdi.Lock()\n\tmock.calls.GetPdi = append(mock.calls.GetPdi, callInfo)\n\tmock.lockGetPdi.Unlock()\n\treturn mock.GetPdiFunc()\n}\n\n// GetPdiCalls gets all the calls that were made to GetPdi.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetPdiCalls())\nfunc (mock *Device) GetPdiCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetPdi.RLock()\n\tcalls = mock.calls.GetPdi\n\tmock.lockGetPdi.RUnlock()\n\treturn calls\n}\n\n// GetPerformanceModes calls GetPerformanceModesFunc.\nfunc (mock *Device) GetPerformanceModes() (nvml.DevicePerfModes, nvml.Return) {\n\tif mock.GetPerformanceModesFunc == nil {\n\t\tpanic(\"Device.GetPerformanceModesFunc: method is nil but Device.GetPerformanceModes was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetPerformanceModes.Lock()\n\tmock.calls.GetPerformanceModes = append(mock.calls.GetPerformanceModes, callInfo)\n\tmock.lockGetPerformanceModes.Unlock()\n\treturn mock.GetPerformanceModesFunc()\n}\n\n// GetPerformanceModesCalls gets all the calls that were made to GetPerformanceModes.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetPerformanceModesCalls())\nfunc (mock *Device) GetPerformanceModesCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetPerformanceModes.RLock()\n\tcalls = mock.calls.GetPerformanceModes\n\tmock.lockGetPerformanceModes.RUnlock()\n\treturn calls\n}\n\n// GetPerformanceState calls GetPerformanceStateFunc.\nfunc (mock *Device) GetPerformanceState() (nvml.Pstates, nvml.Return) {\n\tif mock.GetPerformanceStateFunc == nil {\n\t\tpanic(\"Device.GetPerformanceStateFunc: method is nil but Device.GetPerformanceState was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetPerformanceState.Lock()\n\tmock.calls.GetPerformanceState = append(mock.calls.GetPerformanceState, callInfo)\n\tmock.lockGetPerformanceState.Unlock()\n\treturn mock.GetPerformanceStateFunc()\n}\n\n// GetPerformanceStateCalls gets all the calls that were made to GetPerformanceState.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetPerformanceStateCalls())\nfunc (mock *Device) GetPerformanceStateCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetPerformanceState.RLock()\n\tcalls = mock.calls.GetPerformanceState\n\tmock.lockGetPerformanceState.RUnlock()\n\treturn calls\n}\n\n// GetPersistenceMode calls GetPersistenceModeFunc.\nfunc (mock *Device) GetPersistenceMode() (nvml.EnableState, nvml.Return) {\n\tif mock.GetPersistenceModeFunc == nil {\n\t\tpanic(\"Device.GetPersistenceModeFunc: method is nil but Device.GetPersistenceMode was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetPersistenceMode.Lock()\n\tmock.calls.GetPersistenceMode = append(mock.calls.GetPersistenceMode, callInfo)\n\tmock.lockGetPersistenceMode.Unlock()\n\treturn mock.GetPersistenceModeFunc()\n}\n\n// GetPersistenceModeCalls gets all the calls that were made to GetPersistenceMode.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetPersistenceModeCalls())\nfunc (mock *Device) GetPersistenceModeCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetPersistenceMode.RLock()\n\tcalls = mock.calls.GetPersistenceMode\n\tmock.lockGetPersistenceMode.RUnlock()\n\treturn calls\n}\n\n// GetPgpuMetadataString calls GetPgpuMetadataStringFunc.\nfunc (mock *Device) GetPgpuMetadataString() (string, nvml.Return) {\n\tif mock.GetPgpuMetadataStringFunc == nil {\n\t\tpanic(\"Device.GetPgpuMetadataStringFunc: method is nil but Device.GetPgpuMetadataString was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetPgpuMetadataString.Lock()\n\tmock.calls.GetPgpuMetadataString = append(mock.calls.GetPgpuMetadataString, callInfo)\n\tmock.lockGetPgpuMetadataString.Unlock()\n\treturn mock.GetPgpuMetadataStringFunc()\n}\n\n// GetPgpuMetadataStringCalls gets all the calls that were made to GetPgpuMetadataString.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetPgpuMetadataStringCalls())\nfunc (mock *Device) GetPgpuMetadataStringCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetPgpuMetadataString.RLock()\n\tcalls = mock.calls.GetPgpuMetadataString\n\tmock.lockGetPgpuMetadataString.RUnlock()\n\treturn calls\n}\n\n// GetPlatformInfo calls GetPlatformInfoFunc.\nfunc (mock *Device) GetPlatformInfo() (nvml.PlatformInfo, nvml.Return) {\n\tif mock.GetPlatformInfoFunc == nil {\n\t\tpanic(\"Device.GetPlatformInfoFunc: method is nil but Device.GetPlatformInfo was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetPlatformInfo.Lock()\n\tmock.calls.GetPlatformInfo = append(mock.calls.GetPlatformInfo, callInfo)\n\tmock.lockGetPlatformInfo.Unlock()\n\treturn mock.GetPlatformInfoFunc()\n}\n\n// GetPlatformInfoCalls gets all the calls that were made to GetPlatformInfo.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetPlatformInfoCalls())\nfunc (mock *Device) GetPlatformInfoCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetPlatformInfo.RLock()\n\tcalls = mock.calls.GetPlatformInfo\n\tmock.lockGetPlatformInfo.RUnlock()\n\treturn calls\n}\n\n// GetPowerManagementDefaultLimit calls GetPowerManagementDefaultLimitFunc.\nfunc (mock *Device) GetPowerManagementDefaultLimit() (uint32, nvml.Return) {\n\tif mock.GetPowerManagementDefaultLimitFunc == nil {\n\t\tpanic(\"Device.GetPowerManagementDefaultLimitFunc: method is nil but Device.GetPowerManagementDefaultLimit was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetPowerManagementDefaultLimit.Lock()\n\tmock.calls.GetPowerManagementDefaultLimit = append(mock.calls.GetPowerManagementDefaultLimit, callInfo)\n\tmock.lockGetPowerManagementDefaultLimit.Unlock()\n\treturn mock.GetPowerManagementDefaultLimitFunc()\n}\n\n// GetPowerManagementDefaultLimitCalls gets all the calls that were made to GetPowerManagementDefaultLimit.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetPowerManagementDefaultLimitCalls())\nfunc (mock *Device) GetPowerManagementDefaultLimitCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetPowerManagementDefaultLimit.RLock()\n\tcalls = mock.calls.GetPowerManagementDefaultLimit\n\tmock.lockGetPowerManagementDefaultLimit.RUnlock()\n\treturn calls\n}\n\n// GetPowerManagementLimit calls GetPowerManagementLimitFunc.\nfunc (mock *Device) GetPowerManagementLimit() (uint32, nvml.Return) {\n\tif mock.GetPowerManagementLimitFunc == nil {\n\t\tpanic(\"Device.GetPowerManagementLimitFunc: method is nil but Device.GetPowerManagementLimit was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetPowerManagementLimit.Lock()\n\tmock.calls.GetPowerManagementLimit = append(mock.calls.GetPowerManagementLimit, callInfo)\n\tmock.lockGetPowerManagementLimit.Unlock()\n\treturn mock.GetPowerManagementLimitFunc()\n}\n\n// GetPowerManagementLimitCalls gets all the calls that were made to GetPowerManagementLimit.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetPowerManagementLimitCalls())\nfunc (mock *Device) GetPowerManagementLimitCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetPowerManagementLimit.RLock()\n\tcalls = mock.calls.GetPowerManagementLimit\n\tmock.lockGetPowerManagementLimit.RUnlock()\n\treturn calls\n}\n\n// GetPowerManagementLimitConstraints calls GetPowerManagementLimitConstraintsFunc.\nfunc (mock *Device) GetPowerManagementLimitConstraints() (uint32, uint32, nvml.Return) {\n\tif mock.GetPowerManagementLimitConstraintsFunc == nil {\n\t\tpanic(\"Device.GetPowerManagementLimitConstraintsFunc: method is nil but Device.GetPowerManagementLimitConstraints was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetPowerManagementLimitConstraints.Lock()\n\tmock.calls.GetPowerManagementLimitConstraints = append(mock.calls.GetPowerManagementLimitConstraints, callInfo)\n\tmock.lockGetPowerManagementLimitConstraints.Unlock()\n\treturn mock.GetPowerManagementLimitConstraintsFunc()\n}\n\n// GetPowerManagementLimitConstraintsCalls gets all the calls that were made to GetPowerManagementLimitConstraints.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetPowerManagementLimitConstraintsCalls())\nfunc (mock *Device) GetPowerManagementLimitConstraintsCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetPowerManagementLimitConstraints.RLock()\n\tcalls = mock.calls.GetPowerManagementLimitConstraints\n\tmock.lockGetPowerManagementLimitConstraints.RUnlock()\n\treturn calls\n}\n\n// GetPowerManagementMode calls GetPowerManagementModeFunc.\nfunc (mock *Device) GetPowerManagementMode() (nvml.EnableState, nvml.Return) {\n\tif mock.GetPowerManagementModeFunc == nil {\n\t\tpanic(\"Device.GetPowerManagementModeFunc: method is nil but Device.GetPowerManagementMode was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetPowerManagementMode.Lock()\n\tmock.calls.GetPowerManagementMode = append(mock.calls.GetPowerManagementMode, callInfo)\n\tmock.lockGetPowerManagementMode.Unlock()\n\treturn mock.GetPowerManagementModeFunc()\n}\n\n// GetPowerManagementModeCalls gets all the calls that were made to GetPowerManagementMode.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetPowerManagementModeCalls())\nfunc (mock *Device) GetPowerManagementModeCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetPowerManagementMode.RLock()\n\tcalls = mock.calls.GetPowerManagementMode\n\tmock.lockGetPowerManagementMode.RUnlock()\n\treturn calls\n}\n\n// GetPowerMizerMode_v1 calls GetPowerMizerMode_v1Func.\nfunc (mock *Device) GetPowerMizerMode_v1() (nvml.DevicePowerMizerModes_v1, nvml.Return) {\n\tif mock.GetPowerMizerMode_v1Func == nil {\n\t\tpanic(\"Device.GetPowerMizerMode_v1Func: method is nil but Device.GetPowerMizerMode_v1 was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetPowerMizerMode_v1.Lock()\n\tmock.calls.GetPowerMizerMode_v1 = append(mock.calls.GetPowerMizerMode_v1, callInfo)\n\tmock.lockGetPowerMizerMode_v1.Unlock()\n\treturn mock.GetPowerMizerMode_v1Func()\n}\n\n// GetPowerMizerMode_v1Calls gets all the calls that were made to GetPowerMizerMode_v1.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetPowerMizerMode_v1Calls())\nfunc (mock *Device) GetPowerMizerMode_v1Calls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetPowerMizerMode_v1.RLock()\n\tcalls = mock.calls.GetPowerMizerMode_v1\n\tmock.lockGetPowerMizerMode_v1.RUnlock()\n\treturn calls\n}\n\n// GetPowerSource calls GetPowerSourceFunc.\nfunc (mock *Device) GetPowerSource() (nvml.PowerSource, nvml.Return) {\n\tif mock.GetPowerSourceFunc == nil {\n\t\tpanic(\"Device.GetPowerSourceFunc: method is nil but Device.GetPowerSource was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetPowerSource.Lock()\n\tmock.calls.GetPowerSource = append(mock.calls.GetPowerSource, callInfo)\n\tmock.lockGetPowerSource.Unlock()\n\treturn mock.GetPowerSourceFunc()\n}\n\n// GetPowerSourceCalls gets all the calls that were made to GetPowerSource.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetPowerSourceCalls())\nfunc (mock *Device) GetPowerSourceCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetPowerSource.RLock()\n\tcalls = mock.calls.GetPowerSource\n\tmock.lockGetPowerSource.RUnlock()\n\treturn calls\n}\n\n// GetPowerState calls GetPowerStateFunc.\nfunc (mock *Device) GetPowerState() (nvml.Pstates, nvml.Return) {\n\tif mock.GetPowerStateFunc == nil {\n\t\tpanic(\"Device.GetPowerStateFunc: method is nil but Device.GetPowerState was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetPowerState.Lock()\n\tmock.calls.GetPowerState = append(mock.calls.GetPowerState, callInfo)\n\tmock.lockGetPowerState.Unlock()\n\treturn mock.GetPowerStateFunc()\n}\n\n// GetPowerStateCalls gets all the calls that were made to GetPowerState.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetPowerStateCalls())\nfunc (mock *Device) GetPowerStateCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetPowerState.RLock()\n\tcalls = mock.calls.GetPowerState\n\tmock.lockGetPowerState.RUnlock()\n\treturn calls\n}\n\n// GetPowerUsage calls GetPowerUsageFunc.\nfunc (mock *Device) GetPowerUsage() (uint32, nvml.Return) {\n\tif mock.GetPowerUsageFunc == nil {\n\t\tpanic(\"Device.GetPowerUsageFunc: method is nil but Device.GetPowerUsage was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetPowerUsage.Lock()\n\tmock.calls.GetPowerUsage = append(mock.calls.GetPowerUsage, callInfo)\n\tmock.lockGetPowerUsage.Unlock()\n\treturn mock.GetPowerUsageFunc()\n}\n\n// GetPowerUsageCalls gets all the calls that were made to GetPowerUsage.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetPowerUsageCalls())\nfunc (mock *Device) GetPowerUsageCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetPowerUsage.RLock()\n\tcalls = mock.calls.GetPowerUsage\n\tmock.lockGetPowerUsage.RUnlock()\n\treturn calls\n}\n\n// GetProcessUtilization calls GetProcessUtilizationFunc.\nfunc (mock *Device) GetProcessUtilization(v uint64) ([]nvml.ProcessUtilizationSample, nvml.Return) {\n\tif mock.GetProcessUtilizationFunc == nil {\n\t\tpanic(\"Device.GetProcessUtilizationFunc: method is nil but Device.GetProcessUtilization was just called\")\n\t}\n\tcallInfo := struct {\n\t\tV uint64\n\t}{\n\t\tV: v,\n\t}\n\tmock.lockGetProcessUtilization.Lock()\n\tmock.calls.GetProcessUtilization = append(mock.calls.GetProcessUtilization, callInfo)\n\tmock.lockGetProcessUtilization.Unlock()\n\treturn mock.GetProcessUtilizationFunc(v)\n}\n\n// GetProcessUtilizationCalls gets all the calls that were made to GetProcessUtilization.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetProcessUtilizationCalls())\nfunc (mock *Device) GetProcessUtilizationCalls() []struct {\n\tV uint64\n} {\n\tvar calls []struct {\n\t\tV uint64\n\t}\n\tmock.lockGetProcessUtilization.RLock()\n\tcalls = mock.calls.GetProcessUtilization\n\tmock.lockGetProcessUtilization.RUnlock()\n\treturn calls\n}\n\n// GetProcessesUtilizationInfo calls GetProcessesUtilizationInfoFunc.\nfunc (mock *Device) GetProcessesUtilizationInfo() (nvml.ProcessesUtilizationInfo, nvml.Return) {\n\tif mock.GetProcessesUtilizationInfoFunc == nil {\n\t\tpanic(\"Device.GetProcessesUtilizationInfoFunc: method is nil but Device.GetProcessesUtilizationInfo was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetProcessesUtilizationInfo.Lock()\n\tmock.calls.GetProcessesUtilizationInfo = append(mock.calls.GetProcessesUtilizationInfo, callInfo)\n\tmock.lockGetProcessesUtilizationInfo.Unlock()\n\treturn mock.GetProcessesUtilizationInfoFunc()\n}\n\n// GetProcessesUtilizationInfoCalls gets all the calls that were made to GetProcessesUtilizationInfo.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetProcessesUtilizationInfoCalls())\nfunc (mock *Device) GetProcessesUtilizationInfoCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetProcessesUtilizationInfo.RLock()\n\tcalls = mock.calls.GetProcessesUtilizationInfo\n\tmock.lockGetProcessesUtilizationInfo.RUnlock()\n\treturn calls\n}\n\n// GetRemappedRows calls GetRemappedRowsFunc.\nfunc (mock *Device) GetRemappedRows() (int, int, bool, bool, nvml.Return) {\n\tif mock.GetRemappedRowsFunc == nil {\n\t\tpanic(\"Device.GetRemappedRowsFunc: method is nil but Device.GetRemappedRows was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetRemappedRows.Lock()\n\tmock.calls.GetRemappedRows = append(mock.calls.GetRemappedRows, callInfo)\n\tmock.lockGetRemappedRows.Unlock()\n\treturn mock.GetRemappedRowsFunc()\n}\n\n// GetRemappedRowsCalls gets all the calls that were made to GetRemappedRows.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetRemappedRowsCalls())\nfunc (mock *Device) GetRemappedRowsCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetRemappedRows.RLock()\n\tcalls = mock.calls.GetRemappedRows\n\tmock.lockGetRemappedRows.RUnlock()\n\treturn calls\n}\n\n// GetRepairStatus calls GetRepairStatusFunc.\nfunc (mock *Device) GetRepairStatus() (nvml.RepairStatus, nvml.Return) {\n\tif mock.GetRepairStatusFunc == nil {\n\t\tpanic(\"Device.GetRepairStatusFunc: method is nil but Device.GetRepairStatus was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetRepairStatus.Lock()\n\tmock.calls.GetRepairStatus = append(mock.calls.GetRepairStatus, callInfo)\n\tmock.lockGetRepairStatus.Unlock()\n\treturn mock.GetRepairStatusFunc()\n}\n\n// GetRepairStatusCalls gets all the calls that were made to GetRepairStatus.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetRepairStatusCalls())\nfunc (mock *Device) GetRepairStatusCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetRepairStatus.RLock()\n\tcalls = mock.calls.GetRepairStatus\n\tmock.lockGetRepairStatus.RUnlock()\n\treturn calls\n}\n\n// GetRetiredPages calls GetRetiredPagesFunc.\nfunc (mock *Device) GetRetiredPages(pageRetirementCause nvml.PageRetirementCause) ([]uint64, nvml.Return) {\n\tif mock.GetRetiredPagesFunc == nil {\n\t\tpanic(\"Device.GetRetiredPagesFunc: method is nil but Device.GetRetiredPages was just called\")\n\t}\n\tcallInfo := struct {\n\t\tPageRetirementCause nvml.PageRetirementCause\n\t}{\n\t\tPageRetirementCause: pageRetirementCause,\n\t}\n\tmock.lockGetRetiredPages.Lock()\n\tmock.calls.GetRetiredPages = append(mock.calls.GetRetiredPages, callInfo)\n\tmock.lockGetRetiredPages.Unlock()\n\treturn mock.GetRetiredPagesFunc(pageRetirementCause)\n}\n\n// GetRetiredPagesCalls gets all the calls that were made to GetRetiredPages.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetRetiredPagesCalls())\nfunc (mock *Device) GetRetiredPagesCalls() []struct {\n\tPageRetirementCause nvml.PageRetirementCause\n} {\n\tvar calls []struct {\n\t\tPageRetirementCause nvml.PageRetirementCause\n\t}\n\tmock.lockGetRetiredPages.RLock()\n\tcalls = mock.calls.GetRetiredPages\n\tmock.lockGetRetiredPages.RUnlock()\n\treturn calls\n}\n\n// GetRetiredPagesPendingStatus calls GetRetiredPagesPendingStatusFunc.\nfunc (mock *Device) GetRetiredPagesPendingStatus() (nvml.EnableState, nvml.Return) {\n\tif mock.GetRetiredPagesPendingStatusFunc == nil {\n\t\tpanic(\"Device.GetRetiredPagesPendingStatusFunc: method is nil but Device.GetRetiredPagesPendingStatus was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetRetiredPagesPendingStatus.Lock()\n\tmock.calls.GetRetiredPagesPendingStatus = append(mock.calls.GetRetiredPagesPendingStatus, callInfo)\n\tmock.lockGetRetiredPagesPendingStatus.Unlock()\n\treturn mock.GetRetiredPagesPendingStatusFunc()\n}\n\n// GetRetiredPagesPendingStatusCalls gets all the calls that were made to GetRetiredPagesPendingStatus.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetRetiredPagesPendingStatusCalls())\nfunc (mock *Device) GetRetiredPagesPendingStatusCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetRetiredPagesPendingStatus.RLock()\n\tcalls = mock.calls.GetRetiredPagesPendingStatus\n\tmock.lockGetRetiredPagesPendingStatus.RUnlock()\n\treturn calls\n}\n\n// GetRetiredPages_v2 calls GetRetiredPages_v2Func.\nfunc (mock *Device) GetRetiredPages_v2(pageRetirementCause nvml.PageRetirementCause) ([]uint64, []uint64, nvml.Return) {\n\tif mock.GetRetiredPages_v2Func == nil {\n\t\tpanic(\"Device.GetRetiredPages_v2Func: method is nil but Device.GetRetiredPages_v2 was just called\")\n\t}\n\tcallInfo := struct {\n\t\tPageRetirementCause nvml.PageRetirementCause\n\t}{\n\t\tPageRetirementCause: pageRetirementCause,\n\t}\n\tmock.lockGetRetiredPages_v2.Lock()\n\tmock.calls.GetRetiredPages_v2 = append(mock.calls.GetRetiredPages_v2, callInfo)\n\tmock.lockGetRetiredPages_v2.Unlock()\n\treturn mock.GetRetiredPages_v2Func(pageRetirementCause)\n}\n\n// GetRetiredPages_v2Calls gets all the calls that were made to GetRetiredPages_v2.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetRetiredPages_v2Calls())\nfunc (mock *Device) GetRetiredPages_v2Calls() []struct {\n\tPageRetirementCause nvml.PageRetirementCause\n} {\n\tvar calls []struct {\n\t\tPageRetirementCause nvml.PageRetirementCause\n\t}\n\tmock.lockGetRetiredPages_v2.RLock()\n\tcalls = mock.calls.GetRetiredPages_v2\n\tmock.lockGetRetiredPages_v2.RUnlock()\n\treturn calls\n}\n\n// GetRowRemapperHistogram calls GetRowRemapperHistogramFunc.\nfunc (mock *Device) GetRowRemapperHistogram() (nvml.RowRemapperHistogramValues, nvml.Return) {\n\tif mock.GetRowRemapperHistogramFunc == nil {\n\t\tpanic(\"Device.GetRowRemapperHistogramFunc: method is nil but Device.GetRowRemapperHistogram was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetRowRemapperHistogram.Lock()\n\tmock.calls.GetRowRemapperHistogram = append(mock.calls.GetRowRemapperHistogram, callInfo)\n\tmock.lockGetRowRemapperHistogram.Unlock()\n\treturn mock.GetRowRemapperHistogramFunc()\n}\n\n// GetRowRemapperHistogramCalls gets all the calls that were made to GetRowRemapperHistogram.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetRowRemapperHistogramCalls())\nfunc (mock *Device) GetRowRemapperHistogramCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetRowRemapperHistogram.RLock()\n\tcalls = mock.calls.GetRowRemapperHistogram\n\tmock.lockGetRowRemapperHistogram.RUnlock()\n\treturn calls\n}\n\n// GetRunningProcessDetailList calls GetRunningProcessDetailListFunc.\nfunc (mock *Device) GetRunningProcessDetailList() (nvml.ProcessDetailList, nvml.Return) {\n\tif mock.GetRunningProcessDetailListFunc == nil {\n\t\tpanic(\"Device.GetRunningProcessDetailListFunc: method is nil but Device.GetRunningProcessDetailList was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetRunningProcessDetailList.Lock()\n\tmock.calls.GetRunningProcessDetailList = append(mock.calls.GetRunningProcessDetailList, callInfo)\n\tmock.lockGetRunningProcessDetailList.Unlock()\n\treturn mock.GetRunningProcessDetailListFunc()\n}\n\n// GetRunningProcessDetailListCalls gets all the calls that were made to GetRunningProcessDetailList.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetRunningProcessDetailListCalls())\nfunc (mock *Device) GetRunningProcessDetailListCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetRunningProcessDetailList.RLock()\n\tcalls = mock.calls.GetRunningProcessDetailList\n\tmock.lockGetRunningProcessDetailList.RUnlock()\n\treturn calls\n}\n\n// GetSamples calls GetSamplesFunc.\nfunc (mock *Device) GetSamples(samplingType nvml.SamplingType, v uint64) (nvml.ValueType, []nvml.Sample, nvml.Return) {\n\tif mock.GetSamplesFunc == nil {\n\t\tpanic(\"Device.GetSamplesFunc: method is nil but Device.GetSamples was just called\")\n\t}\n\tcallInfo := struct {\n\t\tSamplingType nvml.SamplingType\n\t\tV            uint64\n\t}{\n\t\tSamplingType: samplingType,\n\t\tV:            v,\n\t}\n\tmock.lockGetSamples.Lock()\n\tmock.calls.GetSamples = append(mock.calls.GetSamples, callInfo)\n\tmock.lockGetSamples.Unlock()\n\treturn mock.GetSamplesFunc(samplingType, v)\n}\n\n// GetSamplesCalls gets all the calls that were made to GetSamples.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetSamplesCalls())\nfunc (mock *Device) GetSamplesCalls() []struct {\n\tSamplingType nvml.SamplingType\n\tV            uint64\n} {\n\tvar calls []struct {\n\t\tSamplingType nvml.SamplingType\n\t\tV            uint64\n\t}\n\tmock.lockGetSamples.RLock()\n\tcalls = mock.calls.GetSamples\n\tmock.lockGetSamples.RUnlock()\n\treturn calls\n}\n\n// GetSerial calls GetSerialFunc.\nfunc (mock *Device) GetSerial() (string, nvml.Return) {\n\tif mock.GetSerialFunc == nil {\n\t\tpanic(\"Device.GetSerialFunc: method is nil but Device.GetSerial was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetSerial.Lock()\n\tmock.calls.GetSerial = append(mock.calls.GetSerial, callInfo)\n\tmock.lockGetSerial.Unlock()\n\treturn mock.GetSerialFunc()\n}\n\n// GetSerialCalls gets all the calls that were made to GetSerial.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetSerialCalls())\nfunc (mock *Device) GetSerialCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetSerial.RLock()\n\tcalls = mock.calls.GetSerial\n\tmock.lockGetSerial.RUnlock()\n\treturn calls\n}\n\n// GetSramEccErrorStatus calls GetSramEccErrorStatusFunc.\nfunc (mock *Device) GetSramEccErrorStatus() (nvml.EccSramErrorStatus, nvml.Return) {\n\tif mock.GetSramEccErrorStatusFunc == nil {\n\t\tpanic(\"Device.GetSramEccErrorStatusFunc: method is nil but Device.GetSramEccErrorStatus was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetSramEccErrorStatus.Lock()\n\tmock.calls.GetSramEccErrorStatus = append(mock.calls.GetSramEccErrorStatus, callInfo)\n\tmock.lockGetSramEccErrorStatus.Unlock()\n\treturn mock.GetSramEccErrorStatusFunc()\n}\n\n// GetSramEccErrorStatusCalls gets all the calls that were made to GetSramEccErrorStatus.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetSramEccErrorStatusCalls())\nfunc (mock *Device) GetSramEccErrorStatusCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetSramEccErrorStatus.RLock()\n\tcalls = mock.calls.GetSramEccErrorStatus\n\tmock.lockGetSramEccErrorStatus.RUnlock()\n\treturn calls\n}\n\n// GetSramUniqueUncorrectedEccErrorCounts calls GetSramUniqueUncorrectedEccErrorCountsFunc.\nfunc (mock *Device) GetSramUniqueUncorrectedEccErrorCounts(eccSramUniqueUncorrectedErrorCounts *nvml.EccSramUniqueUncorrectedErrorCounts) nvml.Return {\n\tif mock.GetSramUniqueUncorrectedEccErrorCountsFunc == nil {\n\t\tpanic(\"Device.GetSramUniqueUncorrectedEccErrorCountsFunc: method is nil but Device.GetSramUniqueUncorrectedEccErrorCounts was just called\")\n\t}\n\tcallInfo := struct {\n\t\tEccSramUniqueUncorrectedErrorCounts *nvml.EccSramUniqueUncorrectedErrorCounts\n\t}{\n\t\tEccSramUniqueUncorrectedErrorCounts: eccSramUniqueUncorrectedErrorCounts,\n\t}\n\tmock.lockGetSramUniqueUncorrectedEccErrorCounts.Lock()\n\tmock.calls.GetSramUniqueUncorrectedEccErrorCounts = append(mock.calls.GetSramUniqueUncorrectedEccErrorCounts, callInfo)\n\tmock.lockGetSramUniqueUncorrectedEccErrorCounts.Unlock()\n\treturn mock.GetSramUniqueUncorrectedEccErrorCountsFunc(eccSramUniqueUncorrectedErrorCounts)\n}\n\n// GetSramUniqueUncorrectedEccErrorCountsCalls gets all the calls that were made to GetSramUniqueUncorrectedEccErrorCounts.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetSramUniqueUncorrectedEccErrorCountsCalls())\nfunc (mock *Device) GetSramUniqueUncorrectedEccErrorCountsCalls() []struct {\n\tEccSramUniqueUncorrectedErrorCounts *nvml.EccSramUniqueUncorrectedErrorCounts\n} {\n\tvar calls []struct {\n\t\tEccSramUniqueUncorrectedErrorCounts *nvml.EccSramUniqueUncorrectedErrorCounts\n\t}\n\tmock.lockGetSramUniqueUncorrectedEccErrorCounts.RLock()\n\tcalls = mock.calls.GetSramUniqueUncorrectedEccErrorCounts\n\tmock.lockGetSramUniqueUncorrectedEccErrorCounts.RUnlock()\n\treturn calls\n}\n\n// GetSupportedClocksEventReasons calls GetSupportedClocksEventReasonsFunc.\nfunc (mock *Device) GetSupportedClocksEventReasons() (uint64, nvml.Return) {\n\tif mock.GetSupportedClocksEventReasonsFunc == nil {\n\t\tpanic(\"Device.GetSupportedClocksEventReasonsFunc: method is nil but Device.GetSupportedClocksEventReasons was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetSupportedClocksEventReasons.Lock()\n\tmock.calls.GetSupportedClocksEventReasons = append(mock.calls.GetSupportedClocksEventReasons, callInfo)\n\tmock.lockGetSupportedClocksEventReasons.Unlock()\n\treturn mock.GetSupportedClocksEventReasonsFunc()\n}\n\n// GetSupportedClocksEventReasonsCalls gets all the calls that were made to GetSupportedClocksEventReasons.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetSupportedClocksEventReasonsCalls())\nfunc (mock *Device) GetSupportedClocksEventReasonsCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetSupportedClocksEventReasons.RLock()\n\tcalls = mock.calls.GetSupportedClocksEventReasons\n\tmock.lockGetSupportedClocksEventReasons.RUnlock()\n\treturn calls\n}\n\n// GetSupportedClocksThrottleReasons calls GetSupportedClocksThrottleReasonsFunc.\nfunc (mock *Device) GetSupportedClocksThrottleReasons() (uint64, nvml.Return) {\n\tif mock.GetSupportedClocksThrottleReasonsFunc == nil {\n\t\tpanic(\"Device.GetSupportedClocksThrottleReasonsFunc: method is nil but Device.GetSupportedClocksThrottleReasons was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetSupportedClocksThrottleReasons.Lock()\n\tmock.calls.GetSupportedClocksThrottleReasons = append(mock.calls.GetSupportedClocksThrottleReasons, callInfo)\n\tmock.lockGetSupportedClocksThrottleReasons.Unlock()\n\treturn mock.GetSupportedClocksThrottleReasonsFunc()\n}\n\n// GetSupportedClocksThrottleReasonsCalls gets all the calls that were made to GetSupportedClocksThrottleReasons.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetSupportedClocksThrottleReasonsCalls())\nfunc (mock *Device) GetSupportedClocksThrottleReasonsCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetSupportedClocksThrottleReasons.RLock()\n\tcalls = mock.calls.GetSupportedClocksThrottleReasons\n\tmock.lockGetSupportedClocksThrottleReasons.RUnlock()\n\treturn calls\n}\n\n// GetSupportedEventTypes calls GetSupportedEventTypesFunc.\nfunc (mock *Device) GetSupportedEventTypes() (uint64, nvml.Return) {\n\tif mock.GetSupportedEventTypesFunc == nil {\n\t\tpanic(\"Device.GetSupportedEventTypesFunc: method is nil but Device.GetSupportedEventTypes was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetSupportedEventTypes.Lock()\n\tmock.calls.GetSupportedEventTypes = append(mock.calls.GetSupportedEventTypes, callInfo)\n\tmock.lockGetSupportedEventTypes.Unlock()\n\treturn mock.GetSupportedEventTypesFunc()\n}\n\n// GetSupportedEventTypesCalls gets all the calls that were made to GetSupportedEventTypes.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetSupportedEventTypesCalls())\nfunc (mock *Device) GetSupportedEventTypesCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetSupportedEventTypes.RLock()\n\tcalls = mock.calls.GetSupportedEventTypes\n\tmock.lockGetSupportedEventTypes.RUnlock()\n\treturn calls\n}\n\n// GetSupportedGraphicsClocks calls GetSupportedGraphicsClocksFunc.\nfunc (mock *Device) GetSupportedGraphicsClocks(n int) (int, uint32, nvml.Return) {\n\tif mock.GetSupportedGraphicsClocksFunc == nil {\n\t\tpanic(\"Device.GetSupportedGraphicsClocksFunc: method is nil but Device.GetSupportedGraphicsClocks was just called\")\n\t}\n\tcallInfo := struct {\n\t\tN int\n\t}{\n\t\tN: n,\n\t}\n\tmock.lockGetSupportedGraphicsClocks.Lock()\n\tmock.calls.GetSupportedGraphicsClocks = append(mock.calls.GetSupportedGraphicsClocks, callInfo)\n\tmock.lockGetSupportedGraphicsClocks.Unlock()\n\treturn mock.GetSupportedGraphicsClocksFunc(n)\n}\n\n// GetSupportedGraphicsClocksCalls gets all the calls that were made to GetSupportedGraphicsClocks.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetSupportedGraphicsClocksCalls())\nfunc (mock *Device) GetSupportedGraphicsClocksCalls() []struct {\n\tN int\n} {\n\tvar calls []struct {\n\t\tN int\n\t}\n\tmock.lockGetSupportedGraphicsClocks.RLock()\n\tcalls = mock.calls.GetSupportedGraphicsClocks\n\tmock.lockGetSupportedGraphicsClocks.RUnlock()\n\treturn calls\n}\n\n// GetSupportedMemoryClocks calls GetSupportedMemoryClocksFunc.\nfunc (mock *Device) GetSupportedMemoryClocks() (int, uint32, nvml.Return) {\n\tif mock.GetSupportedMemoryClocksFunc == nil {\n\t\tpanic(\"Device.GetSupportedMemoryClocksFunc: method is nil but Device.GetSupportedMemoryClocks was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetSupportedMemoryClocks.Lock()\n\tmock.calls.GetSupportedMemoryClocks = append(mock.calls.GetSupportedMemoryClocks, callInfo)\n\tmock.lockGetSupportedMemoryClocks.Unlock()\n\treturn mock.GetSupportedMemoryClocksFunc()\n}\n\n// GetSupportedMemoryClocksCalls gets all the calls that were made to GetSupportedMemoryClocks.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetSupportedMemoryClocksCalls())\nfunc (mock *Device) GetSupportedMemoryClocksCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetSupportedMemoryClocks.RLock()\n\tcalls = mock.calls.GetSupportedMemoryClocks\n\tmock.lockGetSupportedMemoryClocks.RUnlock()\n\treturn calls\n}\n\n// GetSupportedPerformanceStates calls GetSupportedPerformanceStatesFunc.\nfunc (mock *Device) GetSupportedPerformanceStates() ([]nvml.Pstates, nvml.Return) {\n\tif mock.GetSupportedPerformanceStatesFunc == nil {\n\t\tpanic(\"Device.GetSupportedPerformanceStatesFunc: method is nil but Device.GetSupportedPerformanceStates was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetSupportedPerformanceStates.Lock()\n\tmock.calls.GetSupportedPerformanceStates = append(mock.calls.GetSupportedPerformanceStates, callInfo)\n\tmock.lockGetSupportedPerformanceStates.Unlock()\n\treturn mock.GetSupportedPerformanceStatesFunc()\n}\n\n// GetSupportedPerformanceStatesCalls gets all the calls that were made to GetSupportedPerformanceStates.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetSupportedPerformanceStatesCalls())\nfunc (mock *Device) GetSupportedPerformanceStatesCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetSupportedPerformanceStates.RLock()\n\tcalls = mock.calls.GetSupportedPerformanceStates\n\tmock.lockGetSupportedPerformanceStates.RUnlock()\n\treturn calls\n}\n\n// GetSupportedVgpus calls GetSupportedVgpusFunc.\nfunc (mock *Device) GetSupportedVgpus() ([]nvml.VgpuTypeId, nvml.Return) {\n\tif mock.GetSupportedVgpusFunc == nil {\n\t\tpanic(\"Device.GetSupportedVgpusFunc: method is nil but Device.GetSupportedVgpus was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetSupportedVgpus.Lock()\n\tmock.calls.GetSupportedVgpus = append(mock.calls.GetSupportedVgpus, callInfo)\n\tmock.lockGetSupportedVgpus.Unlock()\n\treturn mock.GetSupportedVgpusFunc()\n}\n\n// GetSupportedVgpusCalls gets all the calls that were made to GetSupportedVgpus.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetSupportedVgpusCalls())\nfunc (mock *Device) GetSupportedVgpusCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetSupportedVgpus.RLock()\n\tcalls = mock.calls.GetSupportedVgpus\n\tmock.lockGetSupportedVgpus.RUnlock()\n\treturn calls\n}\n\n// GetTargetFanSpeed calls GetTargetFanSpeedFunc.\nfunc (mock *Device) GetTargetFanSpeed(n int) (int, nvml.Return) {\n\tif mock.GetTargetFanSpeedFunc == nil {\n\t\tpanic(\"Device.GetTargetFanSpeedFunc: method is nil but Device.GetTargetFanSpeed was just called\")\n\t}\n\tcallInfo := struct {\n\t\tN int\n\t}{\n\t\tN: n,\n\t}\n\tmock.lockGetTargetFanSpeed.Lock()\n\tmock.calls.GetTargetFanSpeed = append(mock.calls.GetTargetFanSpeed, callInfo)\n\tmock.lockGetTargetFanSpeed.Unlock()\n\treturn mock.GetTargetFanSpeedFunc(n)\n}\n\n// GetTargetFanSpeedCalls gets all the calls that were made to GetTargetFanSpeed.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetTargetFanSpeedCalls())\nfunc (mock *Device) GetTargetFanSpeedCalls() []struct {\n\tN int\n} {\n\tvar calls []struct {\n\t\tN int\n\t}\n\tmock.lockGetTargetFanSpeed.RLock()\n\tcalls = mock.calls.GetTargetFanSpeed\n\tmock.lockGetTargetFanSpeed.RUnlock()\n\treturn calls\n}\n\n// GetTemperature calls GetTemperatureFunc.\nfunc (mock *Device) GetTemperature(temperatureSensors nvml.TemperatureSensors) (uint32, nvml.Return) {\n\tif mock.GetTemperatureFunc == nil {\n\t\tpanic(\"Device.GetTemperatureFunc: method is nil but Device.GetTemperature was just called\")\n\t}\n\tcallInfo := struct {\n\t\tTemperatureSensors nvml.TemperatureSensors\n\t}{\n\t\tTemperatureSensors: temperatureSensors,\n\t}\n\tmock.lockGetTemperature.Lock()\n\tmock.calls.GetTemperature = append(mock.calls.GetTemperature, callInfo)\n\tmock.lockGetTemperature.Unlock()\n\treturn mock.GetTemperatureFunc(temperatureSensors)\n}\n\n// GetTemperatureCalls gets all the calls that were made to GetTemperature.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetTemperatureCalls())\nfunc (mock *Device) GetTemperatureCalls() []struct {\n\tTemperatureSensors nvml.TemperatureSensors\n} {\n\tvar calls []struct {\n\t\tTemperatureSensors nvml.TemperatureSensors\n\t}\n\tmock.lockGetTemperature.RLock()\n\tcalls = mock.calls.GetTemperature\n\tmock.lockGetTemperature.RUnlock()\n\treturn calls\n}\n\n// GetTemperatureThreshold calls GetTemperatureThresholdFunc.\nfunc (mock *Device) GetTemperatureThreshold(temperatureThresholds nvml.TemperatureThresholds) (uint32, nvml.Return) {\n\tif mock.GetTemperatureThresholdFunc == nil {\n\t\tpanic(\"Device.GetTemperatureThresholdFunc: method is nil but Device.GetTemperatureThreshold was just called\")\n\t}\n\tcallInfo := struct {\n\t\tTemperatureThresholds nvml.TemperatureThresholds\n\t}{\n\t\tTemperatureThresholds: temperatureThresholds,\n\t}\n\tmock.lockGetTemperatureThreshold.Lock()\n\tmock.calls.GetTemperatureThreshold = append(mock.calls.GetTemperatureThreshold, callInfo)\n\tmock.lockGetTemperatureThreshold.Unlock()\n\treturn mock.GetTemperatureThresholdFunc(temperatureThresholds)\n}\n\n// GetTemperatureThresholdCalls gets all the calls that were made to GetTemperatureThreshold.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetTemperatureThresholdCalls())\nfunc (mock *Device) GetTemperatureThresholdCalls() []struct {\n\tTemperatureThresholds nvml.TemperatureThresholds\n} {\n\tvar calls []struct {\n\t\tTemperatureThresholds nvml.TemperatureThresholds\n\t}\n\tmock.lockGetTemperatureThreshold.RLock()\n\tcalls = mock.calls.GetTemperatureThreshold\n\tmock.lockGetTemperatureThreshold.RUnlock()\n\treturn calls\n}\n\n// GetTemperatureV calls GetTemperatureVFunc.\nfunc (mock *Device) GetTemperatureV() nvml.TemperatureHandler {\n\tif mock.GetTemperatureVFunc == nil {\n\t\tpanic(\"Device.GetTemperatureVFunc: method is nil but Device.GetTemperatureV was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetTemperatureV.Lock()\n\tmock.calls.GetTemperatureV = append(mock.calls.GetTemperatureV, callInfo)\n\tmock.lockGetTemperatureV.Unlock()\n\treturn mock.GetTemperatureVFunc()\n}\n\n// GetTemperatureVCalls gets all the calls that were made to GetTemperatureV.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetTemperatureVCalls())\nfunc (mock *Device) GetTemperatureVCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetTemperatureV.RLock()\n\tcalls = mock.calls.GetTemperatureV\n\tmock.lockGetTemperatureV.RUnlock()\n\treturn calls\n}\n\n// GetThermalSettings calls GetThermalSettingsFunc.\nfunc (mock *Device) GetThermalSettings(v uint32) (nvml.GpuThermalSettings, nvml.Return) {\n\tif mock.GetThermalSettingsFunc == nil {\n\t\tpanic(\"Device.GetThermalSettingsFunc: method is nil but Device.GetThermalSettings was just called\")\n\t}\n\tcallInfo := struct {\n\t\tV uint32\n\t}{\n\t\tV: v,\n\t}\n\tmock.lockGetThermalSettings.Lock()\n\tmock.calls.GetThermalSettings = append(mock.calls.GetThermalSettings, callInfo)\n\tmock.lockGetThermalSettings.Unlock()\n\treturn mock.GetThermalSettingsFunc(v)\n}\n\n// GetThermalSettingsCalls gets all the calls that were made to GetThermalSettings.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetThermalSettingsCalls())\nfunc (mock *Device) GetThermalSettingsCalls() []struct {\n\tV uint32\n} {\n\tvar calls []struct {\n\t\tV uint32\n\t}\n\tmock.lockGetThermalSettings.RLock()\n\tcalls = mock.calls.GetThermalSettings\n\tmock.lockGetThermalSettings.RUnlock()\n\treturn calls\n}\n\n// GetTopologyCommonAncestor calls GetTopologyCommonAncestorFunc.\nfunc (mock *Device) GetTopologyCommonAncestor(device nvml.Device) (nvml.GpuTopologyLevel, nvml.Return) {\n\tif mock.GetTopologyCommonAncestorFunc == nil {\n\t\tpanic(\"Device.GetTopologyCommonAncestorFunc: method is nil but Device.GetTopologyCommonAncestor was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockGetTopologyCommonAncestor.Lock()\n\tmock.calls.GetTopologyCommonAncestor = append(mock.calls.GetTopologyCommonAncestor, callInfo)\n\tmock.lockGetTopologyCommonAncestor.Unlock()\n\treturn mock.GetTopologyCommonAncestorFunc(device)\n}\n\n// GetTopologyCommonAncestorCalls gets all the calls that were made to GetTopologyCommonAncestor.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetTopologyCommonAncestorCalls())\nfunc (mock *Device) GetTopologyCommonAncestorCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockGetTopologyCommonAncestor.RLock()\n\tcalls = mock.calls.GetTopologyCommonAncestor\n\tmock.lockGetTopologyCommonAncestor.RUnlock()\n\treturn calls\n}\n\n// GetTopologyNearestGpus calls GetTopologyNearestGpusFunc.\nfunc (mock *Device) GetTopologyNearestGpus(gpuTopologyLevel nvml.GpuTopologyLevel) ([]nvml.Device, nvml.Return) {\n\tif mock.GetTopologyNearestGpusFunc == nil {\n\t\tpanic(\"Device.GetTopologyNearestGpusFunc: method is nil but Device.GetTopologyNearestGpus was just called\")\n\t}\n\tcallInfo := struct {\n\t\tGpuTopologyLevel nvml.GpuTopologyLevel\n\t}{\n\t\tGpuTopologyLevel: gpuTopologyLevel,\n\t}\n\tmock.lockGetTopologyNearestGpus.Lock()\n\tmock.calls.GetTopologyNearestGpus = append(mock.calls.GetTopologyNearestGpus, callInfo)\n\tmock.lockGetTopologyNearestGpus.Unlock()\n\treturn mock.GetTopologyNearestGpusFunc(gpuTopologyLevel)\n}\n\n// GetTopologyNearestGpusCalls gets all the calls that were made to GetTopologyNearestGpus.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetTopologyNearestGpusCalls())\nfunc (mock *Device) GetTopologyNearestGpusCalls() []struct {\n\tGpuTopologyLevel nvml.GpuTopologyLevel\n} {\n\tvar calls []struct {\n\t\tGpuTopologyLevel nvml.GpuTopologyLevel\n\t}\n\tmock.lockGetTopologyNearestGpus.RLock()\n\tcalls = mock.calls.GetTopologyNearestGpus\n\tmock.lockGetTopologyNearestGpus.RUnlock()\n\treturn calls\n}\n\n// GetTotalEccErrors calls GetTotalEccErrorsFunc.\nfunc (mock *Device) GetTotalEccErrors(memoryErrorType nvml.MemoryErrorType, eccCounterType nvml.EccCounterType) (uint64, nvml.Return) {\n\tif mock.GetTotalEccErrorsFunc == nil {\n\t\tpanic(\"Device.GetTotalEccErrorsFunc: method is nil but Device.GetTotalEccErrors was just called\")\n\t}\n\tcallInfo := struct {\n\t\tMemoryErrorType nvml.MemoryErrorType\n\t\tEccCounterType  nvml.EccCounterType\n\t}{\n\t\tMemoryErrorType: memoryErrorType,\n\t\tEccCounterType:  eccCounterType,\n\t}\n\tmock.lockGetTotalEccErrors.Lock()\n\tmock.calls.GetTotalEccErrors = append(mock.calls.GetTotalEccErrors, callInfo)\n\tmock.lockGetTotalEccErrors.Unlock()\n\treturn mock.GetTotalEccErrorsFunc(memoryErrorType, eccCounterType)\n}\n\n// GetTotalEccErrorsCalls gets all the calls that were made to GetTotalEccErrors.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetTotalEccErrorsCalls())\nfunc (mock *Device) GetTotalEccErrorsCalls() []struct {\n\tMemoryErrorType nvml.MemoryErrorType\n\tEccCounterType  nvml.EccCounterType\n} {\n\tvar calls []struct {\n\t\tMemoryErrorType nvml.MemoryErrorType\n\t\tEccCounterType  nvml.EccCounterType\n\t}\n\tmock.lockGetTotalEccErrors.RLock()\n\tcalls = mock.calls.GetTotalEccErrors\n\tmock.lockGetTotalEccErrors.RUnlock()\n\treturn calls\n}\n\n// GetTotalEnergyConsumption calls GetTotalEnergyConsumptionFunc.\nfunc (mock *Device) GetTotalEnergyConsumption() (uint64, nvml.Return) {\n\tif mock.GetTotalEnergyConsumptionFunc == nil {\n\t\tpanic(\"Device.GetTotalEnergyConsumptionFunc: method is nil but Device.GetTotalEnergyConsumption was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetTotalEnergyConsumption.Lock()\n\tmock.calls.GetTotalEnergyConsumption = append(mock.calls.GetTotalEnergyConsumption, callInfo)\n\tmock.lockGetTotalEnergyConsumption.Unlock()\n\treturn mock.GetTotalEnergyConsumptionFunc()\n}\n\n// GetTotalEnergyConsumptionCalls gets all the calls that were made to GetTotalEnergyConsumption.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetTotalEnergyConsumptionCalls())\nfunc (mock *Device) GetTotalEnergyConsumptionCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetTotalEnergyConsumption.RLock()\n\tcalls = mock.calls.GetTotalEnergyConsumption\n\tmock.lockGetTotalEnergyConsumption.RUnlock()\n\treturn calls\n}\n\n// GetUUID calls GetUUIDFunc.\nfunc (mock *Device) GetUUID() (string, nvml.Return) {\n\tif mock.GetUUIDFunc == nil {\n\t\tpanic(\"Device.GetUUIDFunc: method is nil but Device.GetUUID was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetUUID.Lock()\n\tmock.calls.GetUUID = append(mock.calls.GetUUID, callInfo)\n\tmock.lockGetUUID.Unlock()\n\treturn mock.GetUUIDFunc()\n}\n\n// GetUUIDCalls gets all the calls that were made to GetUUID.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetUUIDCalls())\nfunc (mock *Device) GetUUIDCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetUUID.RLock()\n\tcalls = mock.calls.GetUUID\n\tmock.lockGetUUID.RUnlock()\n\treturn calls\n}\n\n// GetUtilizationRates calls GetUtilizationRatesFunc.\nfunc (mock *Device) GetUtilizationRates() (nvml.Utilization, nvml.Return) {\n\tif mock.GetUtilizationRatesFunc == nil {\n\t\tpanic(\"Device.GetUtilizationRatesFunc: method is nil but Device.GetUtilizationRates was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetUtilizationRates.Lock()\n\tmock.calls.GetUtilizationRates = append(mock.calls.GetUtilizationRates, callInfo)\n\tmock.lockGetUtilizationRates.Unlock()\n\treturn mock.GetUtilizationRatesFunc()\n}\n\n// GetUtilizationRatesCalls gets all the calls that were made to GetUtilizationRates.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetUtilizationRatesCalls())\nfunc (mock *Device) GetUtilizationRatesCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetUtilizationRates.RLock()\n\tcalls = mock.calls.GetUtilizationRates\n\tmock.lockGetUtilizationRates.RUnlock()\n\treturn calls\n}\n\n// GetVbiosVersion calls GetVbiosVersionFunc.\nfunc (mock *Device) GetVbiosVersion() (string, nvml.Return) {\n\tif mock.GetVbiosVersionFunc == nil {\n\t\tpanic(\"Device.GetVbiosVersionFunc: method is nil but Device.GetVbiosVersion was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetVbiosVersion.Lock()\n\tmock.calls.GetVbiosVersion = append(mock.calls.GetVbiosVersion, callInfo)\n\tmock.lockGetVbiosVersion.Unlock()\n\treturn mock.GetVbiosVersionFunc()\n}\n\n// GetVbiosVersionCalls gets all the calls that were made to GetVbiosVersion.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetVbiosVersionCalls())\nfunc (mock *Device) GetVbiosVersionCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetVbiosVersion.RLock()\n\tcalls = mock.calls.GetVbiosVersion\n\tmock.lockGetVbiosVersion.RUnlock()\n\treturn calls\n}\n\n// GetVgpuCapabilities calls GetVgpuCapabilitiesFunc.\nfunc (mock *Device) GetVgpuCapabilities(deviceVgpuCapability nvml.DeviceVgpuCapability) (bool, nvml.Return) {\n\tif mock.GetVgpuCapabilitiesFunc == nil {\n\t\tpanic(\"Device.GetVgpuCapabilitiesFunc: method is nil but Device.GetVgpuCapabilities was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDeviceVgpuCapability nvml.DeviceVgpuCapability\n\t}{\n\t\tDeviceVgpuCapability: deviceVgpuCapability,\n\t}\n\tmock.lockGetVgpuCapabilities.Lock()\n\tmock.calls.GetVgpuCapabilities = append(mock.calls.GetVgpuCapabilities, callInfo)\n\tmock.lockGetVgpuCapabilities.Unlock()\n\treturn mock.GetVgpuCapabilitiesFunc(deviceVgpuCapability)\n}\n\n// GetVgpuCapabilitiesCalls gets all the calls that were made to GetVgpuCapabilities.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetVgpuCapabilitiesCalls())\nfunc (mock *Device) GetVgpuCapabilitiesCalls() []struct {\n\tDeviceVgpuCapability nvml.DeviceVgpuCapability\n} {\n\tvar calls []struct {\n\t\tDeviceVgpuCapability nvml.DeviceVgpuCapability\n\t}\n\tmock.lockGetVgpuCapabilities.RLock()\n\tcalls = mock.calls.GetVgpuCapabilities\n\tmock.lockGetVgpuCapabilities.RUnlock()\n\treturn calls\n}\n\n// GetVgpuHeterogeneousMode calls GetVgpuHeterogeneousModeFunc.\nfunc (mock *Device) GetVgpuHeterogeneousMode() (nvml.VgpuHeterogeneousMode, nvml.Return) {\n\tif mock.GetVgpuHeterogeneousModeFunc == nil {\n\t\tpanic(\"Device.GetVgpuHeterogeneousModeFunc: method is nil but Device.GetVgpuHeterogeneousMode was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetVgpuHeterogeneousMode.Lock()\n\tmock.calls.GetVgpuHeterogeneousMode = append(mock.calls.GetVgpuHeterogeneousMode, callInfo)\n\tmock.lockGetVgpuHeterogeneousMode.Unlock()\n\treturn mock.GetVgpuHeterogeneousModeFunc()\n}\n\n// GetVgpuHeterogeneousModeCalls gets all the calls that were made to GetVgpuHeterogeneousMode.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetVgpuHeterogeneousModeCalls())\nfunc (mock *Device) GetVgpuHeterogeneousModeCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetVgpuHeterogeneousMode.RLock()\n\tcalls = mock.calls.GetVgpuHeterogeneousMode\n\tmock.lockGetVgpuHeterogeneousMode.RUnlock()\n\treturn calls\n}\n\n// GetVgpuInstancesUtilizationInfo calls GetVgpuInstancesUtilizationInfoFunc.\nfunc (mock *Device) GetVgpuInstancesUtilizationInfo() (nvml.VgpuInstancesUtilizationInfo, nvml.Return) {\n\tif mock.GetVgpuInstancesUtilizationInfoFunc == nil {\n\t\tpanic(\"Device.GetVgpuInstancesUtilizationInfoFunc: method is nil but Device.GetVgpuInstancesUtilizationInfo was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetVgpuInstancesUtilizationInfo.Lock()\n\tmock.calls.GetVgpuInstancesUtilizationInfo = append(mock.calls.GetVgpuInstancesUtilizationInfo, callInfo)\n\tmock.lockGetVgpuInstancesUtilizationInfo.Unlock()\n\treturn mock.GetVgpuInstancesUtilizationInfoFunc()\n}\n\n// GetVgpuInstancesUtilizationInfoCalls gets all the calls that were made to GetVgpuInstancesUtilizationInfo.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetVgpuInstancesUtilizationInfoCalls())\nfunc (mock *Device) GetVgpuInstancesUtilizationInfoCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetVgpuInstancesUtilizationInfo.RLock()\n\tcalls = mock.calls.GetVgpuInstancesUtilizationInfo\n\tmock.lockGetVgpuInstancesUtilizationInfo.RUnlock()\n\treturn calls\n}\n\n// GetVgpuMetadata calls GetVgpuMetadataFunc.\nfunc (mock *Device) GetVgpuMetadata() (nvml.VgpuPgpuMetadata, nvml.Return) {\n\tif mock.GetVgpuMetadataFunc == nil {\n\t\tpanic(\"Device.GetVgpuMetadataFunc: method is nil but Device.GetVgpuMetadata was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetVgpuMetadata.Lock()\n\tmock.calls.GetVgpuMetadata = append(mock.calls.GetVgpuMetadata, callInfo)\n\tmock.lockGetVgpuMetadata.Unlock()\n\treturn mock.GetVgpuMetadataFunc()\n}\n\n// GetVgpuMetadataCalls gets all the calls that were made to GetVgpuMetadata.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetVgpuMetadataCalls())\nfunc (mock *Device) GetVgpuMetadataCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetVgpuMetadata.RLock()\n\tcalls = mock.calls.GetVgpuMetadata\n\tmock.lockGetVgpuMetadata.RUnlock()\n\treturn calls\n}\n\n// GetVgpuProcessUtilization calls GetVgpuProcessUtilizationFunc.\nfunc (mock *Device) GetVgpuProcessUtilization(v uint64) ([]nvml.VgpuProcessUtilizationSample, nvml.Return) {\n\tif mock.GetVgpuProcessUtilizationFunc == nil {\n\t\tpanic(\"Device.GetVgpuProcessUtilizationFunc: method is nil but Device.GetVgpuProcessUtilization was just called\")\n\t}\n\tcallInfo := struct {\n\t\tV uint64\n\t}{\n\t\tV: v,\n\t}\n\tmock.lockGetVgpuProcessUtilization.Lock()\n\tmock.calls.GetVgpuProcessUtilization = append(mock.calls.GetVgpuProcessUtilization, callInfo)\n\tmock.lockGetVgpuProcessUtilization.Unlock()\n\treturn mock.GetVgpuProcessUtilizationFunc(v)\n}\n\n// GetVgpuProcessUtilizationCalls gets all the calls that were made to GetVgpuProcessUtilization.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetVgpuProcessUtilizationCalls())\nfunc (mock *Device) GetVgpuProcessUtilizationCalls() []struct {\n\tV uint64\n} {\n\tvar calls []struct {\n\t\tV uint64\n\t}\n\tmock.lockGetVgpuProcessUtilization.RLock()\n\tcalls = mock.calls.GetVgpuProcessUtilization\n\tmock.lockGetVgpuProcessUtilization.RUnlock()\n\treturn calls\n}\n\n// GetVgpuProcessesUtilizationInfo calls GetVgpuProcessesUtilizationInfoFunc.\nfunc (mock *Device) GetVgpuProcessesUtilizationInfo() (nvml.VgpuProcessesUtilizationInfo, nvml.Return) {\n\tif mock.GetVgpuProcessesUtilizationInfoFunc == nil {\n\t\tpanic(\"Device.GetVgpuProcessesUtilizationInfoFunc: method is nil but Device.GetVgpuProcessesUtilizationInfo was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetVgpuProcessesUtilizationInfo.Lock()\n\tmock.calls.GetVgpuProcessesUtilizationInfo = append(mock.calls.GetVgpuProcessesUtilizationInfo, callInfo)\n\tmock.lockGetVgpuProcessesUtilizationInfo.Unlock()\n\treturn mock.GetVgpuProcessesUtilizationInfoFunc()\n}\n\n// GetVgpuProcessesUtilizationInfoCalls gets all the calls that were made to GetVgpuProcessesUtilizationInfo.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetVgpuProcessesUtilizationInfoCalls())\nfunc (mock *Device) GetVgpuProcessesUtilizationInfoCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetVgpuProcessesUtilizationInfo.RLock()\n\tcalls = mock.calls.GetVgpuProcessesUtilizationInfo\n\tmock.lockGetVgpuProcessesUtilizationInfo.RUnlock()\n\treturn calls\n}\n\n// GetVgpuSchedulerCapabilities calls GetVgpuSchedulerCapabilitiesFunc.\nfunc (mock *Device) GetVgpuSchedulerCapabilities() (nvml.VgpuSchedulerCapabilities, nvml.Return) {\n\tif mock.GetVgpuSchedulerCapabilitiesFunc == nil {\n\t\tpanic(\"Device.GetVgpuSchedulerCapabilitiesFunc: method is nil but Device.GetVgpuSchedulerCapabilities was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetVgpuSchedulerCapabilities.Lock()\n\tmock.calls.GetVgpuSchedulerCapabilities = append(mock.calls.GetVgpuSchedulerCapabilities, callInfo)\n\tmock.lockGetVgpuSchedulerCapabilities.Unlock()\n\treturn mock.GetVgpuSchedulerCapabilitiesFunc()\n}\n\n// GetVgpuSchedulerCapabilitiesCalls gets all the calls that were made to GetVgpuSchedulerCapabilities.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetVgpuSchedulerCapabilitiesCalls())\nfunc (mock *Device) GetVgpuSchedulerCapabilitiesCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetVgpuSchedulerCapabilities.RLock()\n\tcalls = mock.calls.GetVgpuSchedulerCapabilities\n\tmock.lockGetVgpuSchedulerCapabilities.RUnlock()\n\treturn calls\n}\n\n// GetVgpuSchedulerLog calls GetVgpuSchedulerLogFunc.\nfunc (mock *Device) GetVgpuSchedulerLog() (nvml.VgpuSchedulerLog, nvml.Return) {\n\tif mock.GetVgpuSchedulerLogFunc == nil {\n\t\tpanic(\"Device.GetVgpuSchedulerLogFunc: method is nil but Device.GetVgpuSchedulerLog was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetVgpuSchedulerLog.Lock()\n\tmock.calls.GetVgpuSchedulerLog = append(mock.calls.GetVgpuSchedulerLog, callInfo)\n\tmock.lockGetVgpuSchedulerLog.Unlock()\n\treturn mock.GetVgpuSchedulerLogFunc()\n}\n\n// GetVgpuSchedulerLogCalls gets all the calls that were made to GetVgpuSchedulerLog.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetVgpuSchedulerLogCalls())\nfunc (mock *Device) GetVgpuSchedulerLogCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetVgpuSchedulerLog.RLock()\n\tcalls = mock.calls.GetVgpuSchedulerLog\n\tmock.lockGetVgpuSchedulerLog.RUnlock()\n\treturn calls\n}\n\n// GetVgpuSchedulerState calls GetVgpuSchedulerStateFunc.\nfunc (mock *Device) GetVgpuSchedulerState() (nvml.VgpuSchedulerGetState, nvml.Return) {\n\tif mock.GetVgpuSchedulerStateFunc == nil {\n\t\tpanic(\"Device.GetVgpuSchedulerStateFunc: method is nil but Device.GetVgpuSchedulerState was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetVgpuSchedulerState.Lock()\n\tmock.calls.GetVgpuSchedulerState = append(mock.calls.GetVgpuSchedulerState, callInfo)\n\tmock.lockGetVgpuSchedulerState.Unlock()\n\treturn mock.GetVgpuSchedulerStateFunc()\n}\n\n// GetVgpuSchedulerStateCalls gets all the calls that were made to GetVgpuSchedulerState.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetVgpuSchedulerStateCalls())\nfunc (mock *Device) GetVgpuSchedulerStateCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetVgpuSchedulerState.RLock()\n\tcalls = mock.calls.GetVgpuSchedulerState\n\tmock.lockGetVgpuSchedulerState.RUnlock()\n\treturn calls\n}\n\n// GetVgpuTypeCreatablePlacements calls GetVgpuTypeCreatablePlacementsFunc.\nfunc (mock *Device) GetVgpuTypeCreatablePlacements(vgpuTypeId nvml.VgpuTypeId) (nvml.VgpuPlacementList, nvml.Return) {\n\tif mock.GetVgpuTypeCreatablePlacementsFunc == nil {\n\t\tpanic(\"Device.GetVgpuTypeCreatablePlacementsFunc: method is nil but Device.GetVgpuTypeCreatablePlacements was just called\")\n\t}\n\tcallInfo := struct {\n\t\tVgpuTypeId nvml.VgpuTypeId\n\t}{\n\t\tVgpuTypeId: vgpuTypeId,\n\t}\n\tmock.lockGetVgpuTypeCreatablePlacements.Lock()\n\tmock.calls.GetVgpuTypeCreatablePlacements = append(mock.calls.GetVgpuTypeCreatablePlacements, callInfo)\n\tmock.lockGetVgpuTypeCreatablePlacements.Unlock()\n\treturn mock.GetVgpuTypeCreatablePlacementsFunc(vgpuTypeId)\n}\n\n// GetVgpuTypeCreatablePlacementsCalls gets all the calls that were made to GetVgpuTypeCreatablePlacements.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetVgpuTypeCreatablePlacementsCalls())\nfunc (mock *Device) GetVgpuTypeCreatablePlacementsCalls() []struct {\n\tVgpuTypeId nvml.VgpuTypeId\n} {\n\tvar calls []struct {\n\t\tVgpuTypeId nvml.VgpuTypeId\n\t}\n\tmock.lockGetVgpuTypeCreatablePlacements.RLock()\n\tcalls = mock.calls.GetVgpuTypeCreatablePlacements\n\tmock.lockGetVgpuTypeCreatablePlacements.RUnlock()\n\treturn calls\n}\n\n// GetVgpuTypeSupportedPlacements calls GetVgpuTypeSupportedPlacementsFunc.\nfunc (mock *Device) GetVgpuTypeSupportedPlacements(vgpuTypeId nvml.VgpuTypeId) (nvml.VgpuPlacementList, nvml.Return) {\n\tif mock.GetVgpuTypeSupportedPlacementsFunc == nil {\n\t\tpanic(\"Device.GetVgpuTypeSupportedPlacementsFunc: method is nil but Device.GetVgpuTypeSupportedPlacements was just called\")\n\t}\n\tcallInfo := struct {\n\t\tVgpuTypeId nvml.VgpuTypeId\n\t}{\n\t\tVgpuTypeId: vgpuTypeId,\n\t}\n\tmock.lockGetVgpuTypeSupportedPlacements.Lock()\n\tmock.calls.GetVgpuTypeSupportedPlacements = append(mock.calls.GetVgpuTypeSupportedPlacements, callInfo)\n\tmock.lockGetVgpuTypeSupportedPlacements.Unlock()\n\treturn mock.GetVgpuTypeSupportedPlacementsFunc(vgpuTypeId)\n}\n\n// GetVgpuTypeSupportedPlacementsCalls gets all the calls that were made to GetVgpuTypeSupportedPlacements.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetVgpuTypeSupportedPlacementsCalls())\nfunc (mock *Device) GetVgpuTypeSupportedPlacementsCalls() []struct {\n\tVgpuTypeId nvml.VgpuTypeId\n} {\n\tvar calls []struct {\n\t\tVgpuTypeId nvml.VgpuTypeId\n\t}\n\tmock.lockGetVgpuTypeSupportedPlacements.RLock()\n\tcalls = mock.calls.GetVgpuTypeSupportedPlacements\n\tmock.lockGetVgpuTypeSupportedPlacements.RUnlock()\n\treturn calls\n}\n\n// GetVgpuUtilization calls GetVgpuUtilizationFunc.\nfunc (mock *Device) GetVgpuUtilization(v uint64) (nvml.ValueType, []nvml.VgpuInstanceUtilizationSample, nvml.Return) {\n\tif mock.GetVgpuUtilizationFunc == nil {\n\t\tpanic(\"Device.GetVgpuUtilizationFunc: method is nil but Device.GetVgpuUtilization was just called\")\n\t}\n\tcallInfo := struct {\n\t\tV uint64\n\t}{\n\t\tV: v,\n\t}\n\tmock.lockGetVgpuUtilization.Lock()\n\tmock.calls.GetVgpuUtilization = append(mock.calls.GetVgpuUtilization, callInfo)\n\tmock.lockGetVgpuUtilization.Unlock()\n\treturn mock.GetVgpuUtilizationFunc(v)\n}\n\n// GetVgpuUtilizationCalls gets all the calls that were made to GetVgpuUtilization.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetVgpuUtilizationCalls())\nfunc (mock *Device) GetVgpuUtilizationCalls() []struct {\n\tV uint64\n} {\n\tvar calls []struct {\n\t\tV uint64\n\t}\n\tmock.lockGetVgpuUtilization.RLock()\n\tcalls = mock.calls.GetVgpuUtilization\n\tmock.lockGetVgpuUtilization.RUnlock()\n\treturn calls\n}\n\n// GetViolationStatus calls GetViolationStatusFunc.\nfunc (mock *Device) GetViolationStatus(perfPolicyType nvml.PerfPolicyType) (nvml.ViolationTime, nvml.Return) {\n\tif mock.GetViolationStatusFunc == nil {\n\t\tpanic(\"Device.GetViolationStatusFunc: method is nil but Device.GetViolationStatus was just called\")\n\t}\n\tcallInfo := struct {\n\t\tPerfPolicyType nvml.PerfPolicyType\n\t}{\n\t\tPerfPolicyType: perfPolicyType,\n\t}\n\tmock.lockGetViolationStatus.Lock()\n\tmock.calls.GetViolationStatus = append(mock.calls.GetViolationStatus, callInfo)\n\tmock.lockGetViolationStatus.Unlock()\n\treturn mock.GetViolationStatusFunc(perfPolicyType)\n}\n\n// GetViolationStatusCalls gets all the calls that were made to GetViolationStatus.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetViolationStatusCalls())\nfunc (mock *Device) GetViolationStatusCalls() []struct {\n\tPerfPolicyType nvml.PerfPolicyType\n} {\n\tvar calls []struct {\n\t\tPerfPolicyType nvml.PerfPolicyType\n\t}\n\tmock.lockGetViolationStatus.RLock()\n\tcalls = mock.calls.GetViolationStatus\n\tmock.lockGetViolationStatus.RUnlock()\n\treturn calls\n}\n\n// GetVirtualizationMode calls GetVirtualizationModeFunc.\nfunc (mock *Device) GetVirtualizationMode() (nvml.GpuVirtualizationMode, nvml.Return) {\n\tif mock.GetVirtualizationModeFunc == nil {\n\t\tpanic(\"Device.GetVirtualizationModeFunc: method is nil but Device.GetVirtualizationMode was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetVirtualizationMode.Lock()\n\tmock.calls.GetVirtualizationMode = append(mock.calls.GetVirtualizationMode, callInfo)\n\tmock.lockGetVirtualizationMode.Unlock()\n\treturn mock.GetVirtualizationModeFunc()\n}\n\n// GetVirtualizationModeCalls gets all the calls that were made to GetVirtualizationMode.\n// Check the length with:\n//\n//\tlen(mockedDevice.GetVirtualizationModeCalls())\nfunc (mock *Device) GetVirtualizationModeCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetVirtualizationMode.RLock()\n\tcalls = mock.calls.GetVirtualizationMode\n\tmock.lockGetVirtualizationMode.RUnlock()\n\treturn calls\n}\n\n// GpmMigSampleGet calls GpmMigSampleGetFunc.\nfunc (mock *Device) GpmMigSampleGet(n int, gpmSample nvml.GpmSample) nvml.Return {\n\tif mock.GpmMigSampleGetFunc == nil {\n\t\tpanic(\"Device.GpmMigSampleGetFunc: method is nil but Device.GpmMigSampleGet was just called\")\n\t}\n\tcallInfo := struct {\n\t\tN         int\n\t\tGpmSample nvml.GpmSample\n\t}{\n\t\tN:         n,\n\t\tGpmSample: gpmSample,\n\t}\n\tmock.lockGpmMigSampleGet.Lock()\n\tmock.calls.GpmMigSampleGet = append(mock.calls.GpmMigSampleGet, callInfo)\n\tmock.lockGpmMigSampleGet.Unlock()\n\treturn mock.GpmMigSampleGetFunc(n, gpmSample)\n}\n\n// GpmMigSampleGetCalls gets all the calls that were made to GpmMigSampleGet.\n// Check the length with:\n//\n//\tlen(mockedDevice.GpmMigSampleGetCalls())\nfunc (mock *Device) GpmMigSampleGetCalls() []struct {\n\tN         int\n\tGpmSample nvml.GpmSample\n} {\n\tvar calls []struct {\n\t\tN         int\n\t\tGpmSample nvml.GpmSample\n\t}\n\tmock.lockGpmMigSampleGet.RLock()\n\tcalls = mock.calls.GpmMigSampleGet\n\tmock.lockGpmMigSampleGet.RUnlock()\n\treturn calls\n}\n\n// GpmQueryDeviceSupport calls GpmQueryDeviceSupportFunc.\nfunc (mock *Device) GpmQueryDeviceSupport() (nvml.GpmSupport, nvml.Return) {\n\tif mock.GpmQueryDeviceSupportFunc == nil {\n\t\tpanic(\"Device.GpmQueryDeviceSupportFunc: method is nil but Device.GpmQueryDeviceSupport was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGpmQueryDeviceSupport.Lock()\n\tmock.calls.GpmQueryDeviceSupport = append(mock.calls.GpmQueryDeviceSupport, callInfo)\n\tmock.lockGpmQueryDeviceSupport.Unlock()\n\treturn mock.GpmQueryDeviceSupportFunc()\n}\n\n// GpmQueryDeviceSupportCalls gets all the calls that were made to GpmQueryDeviceSupport.\n// Check the length with:\n//\n//\tlen(mockedDevice.GpmQueryDeviceSupportCalls())\nfunc (mock *Device) GpmQueryDeviceSupportCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGpmQueryDeviceSupport.RLock()\n\tcalls = mock.calls.GpmQueryDeviceSupport\n\tmock.lockGpmQueryDeviceSupport.RUnlock()\n\treturn calls\n}\n\n// GpmQueryDeviceSupportV calls GpmQueryDeviceSupportVFunc.\nfunc (mock *Device) GpmQueryDeviceSupportV() nvml.GpmSupportV {\n\tif mock.GpmQueryDeviceSupportVFunc == nil {\n\t\tpanic(\"Device.GpmQueryDeviceSupportVFunc: method is nil but Device.GpmQueryDeviceSupportV was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGpmQueryDeviceSupportV.Lock()\n\tmock.calls.GpmQueryDeviceSupportV = append(mock.calls.GpmQueryDeviceSupportV, callInfo)\n\tmock.lockGpmQueryDeviceSupportV.Unlock()\n\treturn mock.GpmQueryDeviceSupportVFunc()\n}\n\n// GpmQueryDeviceSupportVCalls gets all the calls that were made to GpmQueryDeviceSupportV.\n// Check the length with:\n//\n//\tlen(mockedDevice.GpmQueryDeviceSupportVCalls())\nfunc (mock *Device) GpmQueryDeviceSupportVCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGpmQueryDeviceSupportV.RLock()\n\tcalls = mock.calls.GpmQueryDeviceSupportV\n\tmock.lockGpmQueryDeviceSupportV.RUnlock()\n\treturn calls\n}\n\n// GpmQueryIfStreamingEnabled calls GpmQueryIfStreamingEnabledFunc.\nfunc (mock *Device) GpmQueryIfStreamingEnabled() (uint32, nvml.Return) {\n\tif mock.GpmQueryIfStreamingEnabledFunc == nil {\n\t\tpanic(\"Device.GpmQueryIfStreamingEnabledFunc: method is nil but Device.GpmQueryIfStreamingEnabled was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGpmQueryIfStreamingEnabled.Lock()\n\tmock.calls.GpmQueryIfStreamingEnabled = append(mock.calls.GpmQueryIfStreamingEnabled, callInfo)\n\tmock.lockGpmQueryIfStreamingEnabled.Unlock()\n\treturn mock.GpmQueryIfStreamingEnabledFunc()\n}\n\n// GpmQueryIfStreamingEnabledCalls gets all the calls that were made to GpmQueryIfStreamingEnabled.\n// Check the length with:\n//\n//\tlen(mockedDevice.GpmQueryIfStreamingEnabledCalls())\nfunc (mock *Device) GpmQueryIfStreamingEnabledCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGpmQueryIfStreamingEnabled.RLock()\n\tcalls = mock.calls.GpmQueryIfStreamingEnabled\n\tmock.lockGpmQueryIfStreamingEnabled.RUnlock()\n\treturn calls\n}\n\n// GpmSampleGet calls GpmSampleGetFunc.\nfunc (mock *Device) GpmSampleGet(gpmSample nvml.GpmSample) nvml.Return {\n\tif mock.GpmSampleGetFunc == nil {\n\t\tpanic(\"Device.GpmSampleGetFunc: method is nil but Device.GpmSampleGet was just called\")\n\t}\n\tcallInfo := struct {\n\t\tGpmSample nvml.GpmSample\n\t}{\n\t\tGpmSample: gpmSample,\n\t}\n\tmock.lockGpmSampleGet.Lock()\n\tmock.calls.GpmSampleGet = append(mock.calls.GpmSampleGet, callInfo)\n\tmock.lockGpmSampleGet.Unlock()\n\treturn mock.GpmSampleGetFunc(gpmSample)\n}\n\n// GpmSampleGetCalls gets all the calls that were made to GpmSampleGet.\n// Check the length with:\n//\n//\tlen(mockedDevice.GpmSampleGetCalls())\nfunc (mock *Device) GpmSampleGetCalls() []struct {\n\tGpmSample nvml.GpmSample\n} {\n\tvar calls []struct {\n\t\tGpmSample nvml.GpmSample\n\t}\n\tmock.lockGpmSampleGet.RLock()\n\tcalls = mock.calls.GpmSampleGet\n\tmock.lockGpmSampleGet.RUnlock()\n\treturn calls\n}\n\n// GpmSetStreamingEnabled calls GpmSetStreamingEnabledFunc.\nfunc (mock *Device) GpmSetStreamingEnabled(v uint32) nvml.Return {\n\tif mock.GpmSetStreamingEnabledFunc == nil {\n\t\tpanic(\"Device.GpmSetStreamingEnabledFunc: method is nil but Device.GpmSetStreamingEnabled was just called\")\n\t}\n\tcallInfo := struct {\n\t\tV uint32\n\t}{\n\t\tV: v,\n\t}\n\tmock.lockGpmSetStreamingEnabled.Lock()\n\tmock.calls.GpmSetStreamingEnabled = append(mock.calls.GpmSetStreamingEnabled, callInfo)\n\tmock.lockGpmSetStreamingEnabled.Unlock()\n\treturn mock.GpmSetStreamingEnabledFunc(v)\n}\n\n// GpmSetStreamingEnabledCalls gets all the calls that were made to GpmSetStreamingEnabled.\n// Check the length with:\n//\n//\tlen(mockedDevice.GpmSetStreamingEnabledCalls())\nfunc (mock *Device) GpmSetStreamingEnabledCalls() []struct {\n\tV uint32\n} {\n\tvar calls []struct {\n\t\tV uint32\n\t}\n\tmock.lockGpmSetStreamingEnabled.RLock()\n\tcalls = mock.calls.GpmSetStreamingEnabled\n\tmock.lockGpmSetStreamingEnabled.RUnlock()\n\treturn calls\n}\n\n// IsMigDeviceHandle calls IsMigDeviceHandleFunc.\nfunc (mock *Device) IsMigDeviceHandle() (bool, nvml.Return) {\n\tif mock.IsMigDeviceHandleFunc == nil {\n\t\tpanic(\"Device.IsMigDeviceHandleFunc: method is nil but Device.IsMigDeviceHandle was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockIsMigDeviceHandle.Lock()\n\tmock.calls.IsMigDeviceHandle = append(mock.calls.IsMigDeviceHandle, callInfo)\n\tmock.lockIsMigDeviceHandle.Unlock()\n\treturn mock.IsMigDeviceHandleFunc()\n}\n\n// IsMigDeviceHandleCalls gets all the calls that were made to IsMigDeviceHandle.\n// Check the length with:\n//\n//\tlen(mockedDevice.IsMigDeviceHandleCalls())\nfunc (mock *Device) IsMigDeviceHandleCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockIsMigDeviceHandle.RLock()\n\tcalls = mock.calls.IsMigDeviceHandle\n\tmock.lockIsMigDeviceHandle.RUnlock()\n\treturn calls\n}\n\n// OnSameBoard calls OnSameBoardFunc.\nfunc (mock *Device) OnSameBoard(device nvml.Device) (int, nvml.Return) {\n\tif mock.OnSameBoardFunc == nil {\n\t\tpanic(\"Device.OnSameBoardFunc: method is nil but Device.OnSameBoard was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockOnSameBoard.Lock()\n\tmock.calls.OnSameBoard = append(mock.calls.OnSameBoard, callInfo)\n\tmock.lockOnSameBoard.Unlock()\n\treturn mock.OnSameBoardFunc(device)\n}\n\n// OnSameBoardCalls gets all the calls that were made to OnSameBoard.\n// Check the length with:\n//\n//\tlen(mockedDevice.OnSameBoardCalls())\nfunc (mock *Device) OnSameBoardCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockOnSameBoard.RLock()\n\tcalls = mock.calls.OnSameBoard\n\tmock.lockOnSameBoard.RUnlock()\n\treturn calls\n}\n\n// PowerSmoothingActivatePresetProfile calls PowerSmoothingActivatePresetProfileFunc.\nfunc (mock *Device) PowerSmoothingActivatePresetProfile(powerSmoothingProfile *nvml.PowerSmoothingProfile) nvml.Return {\n\tif mock.PowerSmoothingActivatePresetProfileFunc == nil {\n\t\tpanic(\"Device.PowerSmoothingActivatePresetProfileFunc: method is nil but Device.PowerSmoothingActivatePresetProfile was just called\")\n\t}\n\tcallInfo := struct {\n\t\tPowerSmoothingProfile *nvml.PowerSmoothingProfile\n\t}{\n\t\tPowerSmoothingProfile: powerSmoothingProfile,\n\t}\n\tmock.lockPowerSmoothingActivatePresetProfile.Lock()\n\tmock.calls.PowerSmoothingActivatePresetProfile = append(mock.calls.PowerSmoothingActivatePresetProfile, callInfo)\n\tmock.lockPowerSmoothingActivatePresetProfile.Unlock()\n\treturn mock.PowerSmoothingActivatePresetProfileFunc(powerSmoothingProfile)\n}\n\n// PowerSmoothingActivatePresetProfileCalls gets all the calls that were made to PowerSmoothingActivatePresetProfile.\n// Check the length with:\n//\n//\tlen(mockedDevice.PowerSmoothingActivatePresetProfileCalls())\nfunc (mock *Device) PowerSmoothingActivatePresetProfileCalls() []struct {\n\tPowerSmoothingProfile *nvml.PowerSmoothingProfile\n} {\n\tvar calls []struct {\n\t\tPowerSmoothingProfile *nvml.PowerSmoothingProfile\n\t}\n\tmock.lockPowerSmoothingActivatePresetProfile.RLock()\n\tcalls = mock.calls.PowerSmoothingActivatePresetProfile\n\tmock.lockPowerSmoothingActivatePresetProfile.RUnlock()\n\treturn calls\n}\n\n// PowerSmoothingSetState calls PowerSmoothingSetStateFunc.\nfunc (mock *Device) PowerSmoothingSetState(powerSmoothingState *nvml.PowerSmoothingState) nvml.Return {\n\tif mock.PowerSmoothingSetStateFunc == nil {\n\t\tpanic(\"Device.PowerSmoothingSetStateFunc: method is nil but Device.PowerSmoothingSetState was just called\")\n\t}\n\tcallInfo := struct {\n\t\tPowerSmoothingState *nvml.PowerSmoothingState\n\t}{\n\t\tPowerSmoothingState: powerSmoothingState,\n\t}\n\tmock.lockPowerSmoothingSetState.Lock()\n\tmock.calls.PowerSmoothingSetState = append(mock.calls.PowerSmoothingSetState, callInfo)\n\tmock.lockPowerSmoothingSetState.Unlock()\n\treturn mock.PowerSmoothingSetStateFunc(powerSmoothingState)\n}\n\n// PowerSmoothingSetStateCalls gets all the calls that were made to PowerSmoothingSetState.\n// Check the length with:\n//\n//\tlen(mockedDevice.PowerSmoothingSetStateCalls())\nfunc (mock *Device) PowerSmoothingSetStateCalls() []struct {\n\tPowerSmoothingState *nvml.PowerSmoothingState\n} {\n\tvar calls []struct {\n\t\tPowerSmoothingState *nvml.PowerSmoothingState\n\t}\n\tmock.lockPowerSmoothingSetState.RLock()\n\tcalls = mock.calls.PowerSmoothingSetState\n\tmock.lockPowerSmoothingSetState.RUnlock()\n\treturn calls\n}\n\n// PowerSmoothingUpdatePresetProfileParam calls PowerSmoothingUpdatePresetProfileParamFunc.\nfunc (mock *Device) PowerSmoothingUpdatePresetProfileParam(powerSmoothingProfile *nvml.PowerSmoothingProfile) nvml.Return {\n\tif mock.PowerSmoothingUpdatePresetProfileParamFunc == nil {\n\t\tpanic(\"Device.PowerSmoothingUpdatePresetProfileParamFunc: method is nil but Device.PowerSmoothingUpdatePresetProfileParam was just called\")\n\t}\n\tcallInfo := struct {\n\t\tPowerSmoothingProfile *nvml.PowerSmoothingProfile\n\t}{\n\t\tPowerSmoothingProfile: powerSmoothingProfile,\n\t}\n\tmock.lockPowerSmoothingUpdatePresetProfileParam.Lock()\n\tmock.calls.PowerSmoothingUpdatePresetProfileParam = append(mock.calls.PowerSmoothingUpdatePresetProfileParam, callInfo)\n\tmock.lockPowerSmoothingUpdatePresetProfileParam.Unlock()\n\treturn mock.PowerSmoothingUpdatePresetProfileParamFunc(powerSmoothingProfile)\n}\n\n// PowerSmoothingUpdatePresetProfileParamCalls gets all the calls that were made to PowerSmoothingUpdatePresetProfileParam.\n// Check the length with:\n//\n//\tlen(mockedDevice.PowerSmoothingUpdatePresetProfileParamCalls())\nfunc (mock *Device) PowerSmoothingUpdatePresetProfileParamCalls() []struct {\n\tPowerSmoothingProfile *nvml.PowerSmoothingProfile\n} {\n\tvar calls []struct {\n\t\tPowerSmoothingProfile *nvml.PowerSmoothingProfile\n\t}\n\tmock.lockPowerSmoothingUpdatePresetProfileParam.RLock()\n\tcalls = mock.calls.PowerSmoothingUpdatePresetProfileParam\n\tmock.lockPowerSmoothingUpdatePresetProfileParam.RUnlock()\n\treturn calls\n}\n\n// ReadWritePRM_v1 calls ReadWritePRM_v1Func.\nfunc (mock *Device) ReadWritePRM_v1(pRMTLV_v1 *nvml.PRMTLV_v1) nvml.Return {\n\tif mock.ReadWritePRM_v1Func == nil {\n\t\tpanic(\"Device.ReadWritePRM_v1Func: method is nil but Device.ReadWritePRM_v1 was just called\")\n\t}\n\tcallInfo := struct {\n\t\tPRMTLV_v1 *nvml.PRMTLV_v1\n\t}{\n\t\tPRMTLV_v1: pRMTLV_v1,\n\t}\n\tmock.lockReadWritePRM_v1.Lock()\n\tmock.calls.ReadWritePRM_v1 = append(mock.calls.ReadWritePRM_v1, callInfo)\n\tmock.lockReadWritePRM_v1.Unlock()\n\treturn mock.ReadWritePRM_v1Func(pRMTLV_v1)\n}\n\n// ReadWritePRM_v1Calls gets all the calls that were made to ReadWritePRM_v1.\n// Check the length with:\n//\n//\tlen(mockedDevice.ReadWritePRM_v1Calls())\nfunc (mock *Device) ReadWritePRM_v1Calls() []struct {\n\tPRMTLV_v1 *nvml.PRMTLV_v1\n} {\n\tvar calls []struct {\n\t\tPRMTLV_v1 *nvml.PRMTLV_v1\n\t}\n\tmock.lockReadWritePRM_v1.RLock()\n\tcalls = mock.calls.ReadWritePRM_v1\n\tmock.lockReadWritePRM_v1.RUnlock()\n\treturn calls\n}\n\n// RegisterEvents calls RegisterEventsFunc.\nfunc (mock *Device) RegisterEvents(v uint64, eventSet nvml.EventSet) nvml.Return {\n\tif mock.RegisterEventsFunc == nil {\n\t\tpanic(\"Device.RegisterEventsFunc: method is nil but Device.RegisterEvents was just called\")\n\t}\n\tcallInfo := struct {\n\t\tV        uint64\n\t\tEventSet nvml.EventSet\n\t}{\n\t\tV:        v,\n\t\tEventSet: eventSet,\n\t}\n\tmock.lockRegisterEvents.Lock()\n\tmock.calls.RegisterEvents = append(mock.calls.RegisterEvents, callInfo)\n\tmock.lockRegisterEvents.Unlock()\n\treturn mock.RegisterEventsFunc(v, eventSet)\n}\n\n// RegisterEventsCalls gets all the calls that were made to RegisterEvents.\n// Check the length with:\n//\n//\tlen(mockedDevice.RegisterEventsCalls())\nfunc (mock *Device) RegisterEventsCalls() []struct {\n\tV        uint64\n\tEventSet nvml.EventSet\n} {\n\tvar calls []struct {\n\t\tV        uint64\n\t\tEventSet nvml.EventSet\n\t}\n\tmock.lockRegisterEvents.RLock()\n\tcalls = mock.calls.RegisterEvents\n\tmock.lockRegisterEvents.RUnlock()\n\treturn calls\n}\n\n// ResetApplicationsClocks calls ResetApplicationsClocksFunc.\nfunc (mock *Device) ResetApplicationsClocks() nvml.Return {\n\tif mock.ResetApplicationsClocksFunc == nil {\n\t\tpanic(\"Device.ResetApplicationsClocksFunc: method is nil but Device.ResetApplicationsClocks was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockResetApplicationsClocks.Lock()\n\tmock.calls.ResetApplicationsClocks = append(mock.calls.ResetApplicationsClocks, callInfo)\n\tmock.lockResetApplicationsClocks.Unlock()\n\treturn mock.ResetApplicationsClocksFunc()\n}\n\n// ResetApplicationsClocksCalls gets all the calls that were made to ResetApplicationsClocks.\n// Check the length with:\n//\n//\tlen(mockedDevice.ResetApplicationsClocksCalls())\nfunc (mock *Device) ResetApplicationsClocksCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockResetApplicationsClocks.RLock()\n\tcalls = mock.calls.ResetApplicationsClocks\n\tmock.lockResetApplicationsClocks.RUnlock()\n\treturn calls\n}\n\n// ResetGpuLockedClocks calls ResetGpuLockedClocksFunc.\nfunc (mock *Device) ResetGpuLockedClocks() nvml.Return {\n\tif mock.ResetGpuLockedClocksFunc == nil {\n\t\tpanic(\"Device.ResetGpuLockedClocksFunc: method is nil but Device.ResetGpuLockedClocks was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockResetGpuLockedClocks.Lock()\n\tmock.calls.ResetGpuLockedClocks = append(mock.calls.ResetGpuLockedClocks, callInfo)\n\tmock.lockResetGpuLockedClocks.Unlock()\n\treturn mock.ResetGpuLockedClocksFunc()\n}\n\n// ResetGpuLockedClocksCalls gets all the calls that were made to ResetGpuLockedClocks.\n// Check the length with:\n//\n//\tlen(mockedDevice.ResetGpuLockedClocksCalls())\nfunc (mock *Device) ResetGpuLockedClocksCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockResetGpuLockedClocks.RLock()\n\tcalls = mock.calls.ResetGpuLockedClocks\n\tmock.lockResetGpuLockedClocks.RUnlock()\n\treturn calls\n}\n\n// ResetMemoryLockedClocks calls ResetMemoryLockedClocksFunc.\nfunc (mock *Device) ResetMemoryLockedClocks() nvml.Return {\n\tif mock.ResetMemoryLockedClocksFunc == nil {\n\t\tpanic(\"Device.ResetMemoryLockedClocksFunc: method is nil but Device.ResetMemoryLockedClocks was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockResetMemoryLockedClocks.Lock()\n\tmock.calls.ResetMemoryLockedClocks = append(mock.calls.ResetMemoryLockedClocks, callInfo)\n\tmock.lockResetMemoryLockedClocks.Unlock()\n\treturn mock.ResetMemoryLockedClocksFunc()\n}\n\n// ResetMemoryLockedClocksCalls gets all the calls that were made to ResetMemoryLockedClocks.\n// Check the length with:\n//\n//\tlen(mockedDevice.ResetMemoryLockedClocksCalls())\nfunc (mock *Device) ResetMemoryLockedClocksCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockResetMemoryLockedClocks.RLock()\n\tcalls = mock.calls.ResetMemoryLockedClocks\n\tmock.lockResetMemoryLockedClocks.RUnlock()\n\treturn calls\n}\n\n// ResetNvLinkErrorCounters calls ResetNvLinkErrorCountersFunc.\nfunc (mock *Device) ResetNvLinkErrorCounters(n int) nvml.Return {\n\tif mock.ResetNvLinkErrorCountersFunc == nil {\n\t\tpanic(\"Device.ResetNvLinkErrorCountersFunc: method is nil but Device.ResetNvLinkErrorCounters was just called\")\n\t}\n\tcallInfo := struct {\n\t\tN int\n\t}{\n\t\tN: n,\n\t}\n\tmock.lockResetNvLinkErrorCounters.Lock()\n\tmock.calls.ResetNvLinkErrorCounters = append(mock.calls.ResetNvLinkErrorCounters, callInfo)\n\tmock.lockResetNvLinkErrorCounters.Unlock()\n\treturn mock.ResetNvLinkErrorCountersFunc(n)\n}\n\n// ResetNvLinkErrorCountersCalls gets all the calls that were made to ResetNvLinkErrorCounters.\n// Check the length with:\n//\n//\tlen(mockedDevice.ResetNvLinkErrorCountersCalls())\nfunc (mock *Device) ResetNvLinkErrorCountersCalls() []struct {\n\tN int\n} {\n\tvar calls []struct {\n\t\tN int\n\t}\n\tmock.lockResetNvLinkErrorCounters.RLock()\n\tcalls = mock.calls.ResetNvLinkErrorCounters\n\tmock.lockResetNvLinkErrorCounters.RUnlock()\n\treturn calls\n}\n\n// ResetNvLinkUtilizationCounter calls ResetNvLinkUtilizationCounterFunc.\nfunc (mock *Device) ResetNvLinkUtilizationCounter(n1 int, n2 int) nvml.Return {\n\tif mock.ResetNvLinkUtilizationCounterFunc == nil {\n\t\tpanic(\"Device.ResetNvLinkUtilizationCounterFunc: method is nil but Device.ResetNvLinkUtilizationCounter was just called\")\n\t}\n\tcallInfo := struct {\n\t\tN1 int\n\t\tN2 int\n\t}{\n\t\tN1: n1,\n\t\tN2: n2,\n\t}\n\tmock.lockResetNvLinkUtilizationCounter.Lock()\n\tmock.calls.ResetNvLinkUtilizationCounter = append(mock.calls.ResetNvLinkUtilizationCounter, callInfo)\n\tmock.lockResetNvLinkUtilizationCounter.Unlock()\n\treturn mock.ResetNvLinkUtilizationCounterFunc(n1, n2)\n}\n\n// ResetNvLinkUtilizationCounterCalls gets all the calls that were made to ResetNvLinkUtilizationCounter.\n// Check the length with:\n//\n//\tlen(mockedDevice.ResetNvLinkUtilizationCounterCalls())\nfunc (mock *Device) ResetNvLinkUtilizationCounterCalls() []struct {\n\tN1 int\n\tN2 int\n} {\n\tvar calls []struct {\n\t\tN1 int\n\t\tN2 int\n\t}\n\tmock.lockResetNvLinkUtilizationCounter.RLock()\n\tcalls = mock.calls.ResetNvLinkUtilizationCounter\n\tmock.lockResetNvLinkUtilizationCounter.RUnlock()\n\treturn calls\n}\n\n// SetAPIRestriction calls SetAPIRestrictionFunc.\nfunc (mock *Device) SetAPIRestriction(restrictedAPI nvml.RestrictedAPI, enableState nvml.EnableState) nvml.Return {\n\tif mock.SetAPIRestrictionFunc == nil {\n\t\tpanic(\"Device.SetAPIRestrictionFunc: method is nil but Device.SetAPIRestriction was just called\")\n\t}\n\tcallInfo := struct {\n\t\tRestrictedAPI nvml.RestrictedAPI\n\t\tEnableState   nvml.EnableState\n\t}{\n\t\tRestrictedAPI: restrictedAPI,\n\t\tEnableState:   enableState,\n\t}\n\tmock.lockSetAPIRestriction.Lock()\n\tmock.calls.SetAPIRestriction = append(mock.calls.SetAPIRestriction, callInfo)\n\tmock.lockSetAPIRestriction.Unlock()\n\treturn mock.SetAPIRestrictionFunc(restrictedAPI, enableState)\n}\n\n// SetAPIRestrictionCalls gets all the calls that were made to SetAPIRestriction.\n// Check the length with:\n//\n//\tlen(mockedDevice.SetAPIRestrictionCalls())\nfunc (mock *Device) SetAPIRestrictionCalls() []struct {\n\tRestrictedAPI nvml.RestrictedAPI\n\tEnableState   nvml.EnableState\n} {\n\tvar calls []struct {\n\t\tRestrictedAPI nvml.RestrictedAPI\n\t\tEnableState   nvml.EnableState\n\t}\n\tmock.lockSetAPIRestriction.RLock()\n\tcalls = mock.calls.SetAPIRestriction\n\tmock.lockSetAPIRestriction.RUnlock()\n\treturn calls\n}\n\n// SetAccountingMode calls SetAccountingModeFunc.\nfunc (mock *Device) SetAccountingMode(enableState nvml.EnableState) nvml.Return {\n\tif mock.SetAccountingModeFunc == nil {\n\t\tpanic(\"Device.SetAccountingModeFunc: method is nil but Device.SetAccountingMode was just called\")\n\t}\n\tcallInfo := struct {\n\t\tEnableState nvml.EnableState\n\t}{\n\t\tEnableState: enableState,\n\t}\n\tmock.lockSetAccountingMode.Lock()\n\tmock.calls.SetAccountingMode = append(mock.calls.SetAccountingMode, callInfo)\n\tmock.lockSetAccountingMode.Unlock()\n\treturn mock.SetAccountingModeFunc(enableState)\n}\n\n// SetAccountingModeCalls gets all the calls that were made to SetAccountingMode.\n// Check the length with:\n//\n//\tlen(mockedDevice.SetAccountingModeCalls())\nfunc (mock *Device) SetAccountingModeCalls() []struct {\n\tEnableState nvml.EnableState\n} {\n\tvar calls []struct {\n\t\tEnableState nvml.EnableState\n\t}\n\tmock.lockSetAccountingMode.RLock()\n\tcalls = mock.calls.SetAccountingMode\n\tmock.lockSetAccountingMode.RUnlock()\n\treturn calls\n}\n\n// SetApplicationsClocks calls SetApplicationsClocksFunc.\nfunc (mock *Device) SetApplicationsClocks(v1 uint32, v2 uint32) nvml.Return {\n\tif mock.SetApplicationsClocksFunc == nil {\n\t\tpanic(\"Device.SetApplicationsClocksFunc: method is nil but Device.SetApplicationsClocks was just called\")\n\t}\n\tcallInfo := struct {\n\t\tV1 uint32\n\t\tV2 uint32\n\t}{\n\t\tV1: v1,\n\t\tV2: v2,\n\t}\n\tmock.lockSetApplicationsClocks.Lock()\n\tmock.calls.SetApplicationsClocks = append(mock.calls.SetApplicationsClocks, callInfo)\n\tmock.lockSetApplicationsClocks.Unlock()\n\treturn mock.SetApplicationsClocksFunc(v1, v2)\n}\n\n// SetApplicationsClocksCalls gets all the calls that were made to SetApplicationsClocks.\n// Check the length with:\n//\n//\tlen(mockedDevice.SetApplicationsClocksCalls())\nfunc (mock *Device) SetApplicationsClocksCalls() []struct {\n\tV1 uint32\n\tV2 uint32\n} {\n\tvar calls []struct {\n\t\tV1 uint32\n\t\tV2 uint32\n\t}\n\tmock.lockSetApplicationsClocks.RLock()\n\tcalls = mock.calls.SetApplicationsClocks\n\tmock.lockSetApplicationsClocks.RUnlock()\n\treturn calls\n}\n\n// SetAutoBoostedClocksEnabled calls SetAutoBoostedClocksEnabledFunc.\nfunc (mock *Device) SetAutoBoostedClocksEnabled(enableState nvml.EnableState) nvml.Return {\n\tif mock.SetAutoBoostedClocksEnabledFunc == nil {\n\t\tpanic(\"Device.SetAutoBoostedClocksEnabledFunc: method is nil but Device.SetAutoBoostedClocksEnabled was just called\")\n\t}\n\tcallInfo := struct {\n\t\tEnableState nvml.EnableState\n\t}{\n\t\tEnableState: enableState,\n\t}\n\tmock.lockSetAutoBoostedClocksEnabled.Lock()\n\tmock.calls.SetAutoBoostedClocksEnabled = append(mock.calls.SetAutoBoostedClocksEnabled, callInfo)\n\tmock.lockSetAutoBoostedClocksEnabled.Unlock()\n\treturn mock.SetAutoBoostedClocksEnabledFunc(enableState)\n}\n\n// SetAutoBoostedClocksEnabledCalls gets all the calls that were made to SetAutoBoostedClocksEnabled.\n// Check the length with:\n//\n//\tlen(mockedDevice.SetAutoBoostedClocksEnabledCalls())\nfunc (mock *Device) SetAutoBoostedClocksEnabledCalls() []struct {\n\tEnableState nvml.EnableState\n} {\n\tvar calls []struct {\n\t\tEnableState nvml.EnableState\n\t}\n\tmock.lockSetAutoBoostedClocksEnabled.RLock()\n\tcalls = mock.calls.SetAutoBoostedClocksEnabled\n\tmock.lockSetAutoBoostedClocksEnabled.RUnlock()\n\treturn calls\n}\n\n// SetClockOffsets calls SetClockOffsetsFunc.\nfunc (mock *Device) SetClockOffsets(clockOffset nvml.ClockOffset) nvml.Return {\n\tif mock.SetClockOffsetsFunc == nil {\n\t\tpanic(\"Device.SetClockOffsetsFunc: method is nil but Device.SetClockOffsets was just called\")\n\t}\n\tcallInfo := struct {\n\t\tClockOffset nvml.ClockOffset\n\t}{\n\t\tClockOffset: clockOffset,\n\t}\n\tmock.lockSetClockOffsets.Lock()\n\tmock.calls.SetClockOffsets = append(mock.calls.SetClockOffsets, callInfo)\n\tmock.lockSetClockOffsets.Unlock()\n\treturn mock.SetClockOffsetsFunc(clockOffset)\n}\n\n// SetClockOffsetsCalls gets all the calls that were made to SetClockOffsets.\n// Check the length with:\n//\n//\tlen(mockedDevice.SetClockOffsetsCalls())\nfunc (mock *Device) SetClockOffsetsCalls() []struct {\n\tClockOffset nvml.ClockOffset\n} {\n\tvar calls []struct {\n\t\tClockOffset nvml.ClockOffset\n\t}\n\tmock.lockSetClockOffsets.RLock()\n\tcalls = mock.calls.SetClockOffsets\n\tmock.lockSetClockOffsets.RUnlock()\n\treturn calls\n}\n\n// SetComputeMode calls SetComputeModeFunc.\nfunc (mock *Device) SetComputeMode(computeMode nvml.ComputeMode) nvml.Return {\n\tif mock.SetComputeModeFunc == nil {\n\t\tpanic(\"Device.SetComputeModeFunc: method is nil but Device.SetComputeMode was just called\")\n\t}\n\tcallInfo := struct {\n\t\tComputeMode nvml.ComputeMode\n\t}{\n\t\tComputeMode: computeMode,\n\t}\n\tmock.lockSetComputeMode.Lock()\n\tmock.calls.SetComputeMode = append(mock.calls.SetComputeMode, callInfo)\n\tmock.lockSetComputeMode.Unlock()\n\treturn mock.SetComputeModeFunc(computeMode)\n}\n\n// SetComputeModeCalls gets all the calls that were made to SetComputeMode.\n// Check the length with:\n//\n//\tlen(mockedDevice.SetComputeModeCalls())\nfunc (mock *Device) SetComputeModeCalls() []struct {\n\tComputeMode nvml.ComputeMode\n} {\n\tvar calls []struct {\n\t\tComputeMode nvml.ComputeMode\n\t}\n\tmock.lockSetComputeMode.RLock()\n\tcalls = mock.calls.SetComputeMode\n\tmock.lockSetComputeMode.RUnlock()\n\treturn calls\n}\n\n// SetConfComputeUnprotectedMemSize calls SetConfComputeUnprotectedMemSizeFunc.\nfunc (mock *Device) SetConfComputeUnprotectedMemSize(v uint64) nvml.Return {\n\tif mock.SetConfComputeUnprotectedMemSizeFunc == nil {\n\t\tpanic(\"Device.SetConfComputeUnprotectedMemSizeFunc: method is nil but Device.SetConfComputeUnprotectedMemSize was just called\")\n\t}\n\tcallInfo := struct {\n\t\tV uint64\n\t}{\n\t\tV: v,\n\t}\n\tmock.lockSetConfComputeUnprotectedMemSize.Lock()\n\tmock.calls.SetConfComputeUnprotectedMemSize = append(mock.calls.SetConfComputeUnprotectedMemSize, callInfo)\n\tmock.lockSetConfComputeUnprotectedMemSize.Unlock()\n\treturn mock.SetConfComputeUnprotectedMemSizeFunc(v)\n}\n\n// SetConfComputeUnprotectedMemSizeCalls gets all the calls that were made to SetConfComputeUnprotectedMemSize.\n// Check the length with:\n//\n//\tlen(mockedDevice.SetConfComputeUnprotectedMemSizeCalls())\nfunc (mock *Device) SetConfComputeUnprotectedMemSizeCalls() []struct {\n\tV uint64\n} {\n\tvar calls []struct {\n\t\tV uint64\n\t}\n\tmock.lockSetConfComputeUnprotectedMemSize.RLock()\n\tcalls = mock.calls.SetConfComputeUnprotectedMemSize\n\tmock.lockSetConfComputeUnprotectedMemSize.RUnlock()\n\treturn calls\n}\n\n// SetCpuAffinity calls SetCpuAffinityFunc.\nfunc (mock *Device) SetCpuAffinity() nvml.Return {\n\tif mock.SetCpuAffinityFunc == nil {\n\t\tpanic(\"Device.SetCpuAffinityFunc: method is nil but Device.SetCpuAffinity was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockSetCpuAffinity.Lock()\n\tmock.calls.SetCpuAffinity = append(mock.calls.SetCpuAffinity, callInfo)\n\tmock.lockSetCpuAffinity.Unlock()\n\treturn mock.SetCpuAffinityFunc()\n}\n\n// SetCpuAffinityCalls gets all the calls that were made to SetCpuAffinity.\n// Check the length with:\n//\n//\tlen(mockedDevice.SetCpuAffinityCalls())\nfunc (mock *Device) SetCpuAffinityCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockSetCpuAffinity.RLock()\n\tcalls = mock.calls.SetCpuAffinity\n\tmock.lockSetCpuAffinity.RUnlock()\n\treturn calls\n}\n\n// SetDefaultAutoBoostedClocksEnabled calls SetDefaultAutoBoostedClocksEnabledFunc.\nfunc (mock *Device) SetDefaultAutoBoostedClocksEnabled(enableState nvml.EnableState, v uint32) nvml.Return {\n\tif mock.SetDefaultAutoBoostedClocksEnabledFunc == nil {\n\t\tpanic(\"Device.SetDefaultAutoBoostedClocksEnabledFunc: method is nil but Device.SetDefaultAutoBoostedClocksEnabled was just called\")\n\t}\n\tcallInfo := struct {\n\t\tEnableState nvml.EnableState\n\t\tV           uint32\n\t}{\n\t\tEnableState: enableState,\n\t\tV:           v,\n\t}\n\tmock.lockSetDefaultAutoBoostedClocksEnabled.Lock()\n\tmock.calls.SetDefaultAutoBoostedClocksEnabled = append(mock.calls.SetDefaultAutoBoostedClocksEnabled, callInfo)\n\tmock.lockSetDefaultAutoBoostedClocksEnabled.Unlock()\n\treturn mock.SetDefaultAutoBoostedClocksEnabledFunc(enableState, v)\n}\n\n// SetDefaultAutoBoostedClocksEnabledCalls gets all the calls that were made to SetDefaultAutoBoostedClocksEnabled.\n// Check the length with:\n//\n//\tlen(mockedDevice.SetDefaultAutoBoostedClocksEnabledCalls())\nfunc (mock *Device) SetDefaultAutoBoostedClocksEnabledCalls() []struct {\n\tEnableState nvml.EnableState\n\tV           uint32\n} {\n\tvar calls []struct {\n\t\tEnableState nvml.EnableState\n\t\tV           uint32\n\t}\n\tmock.lockSetDefaultAutoBoostedClocksEnabled.RLock()\n\tcalls = mock.calls.SetDefaultAutoBoostedClocksEnabled\n\tmock.lockSetDefaultAutoBoostedClocksEnabled.RUnlock()\n\treturn calls\n}\n\n// SetDefaultFanSpeed_v2 calls SetDefaultFanSpeed_v2Func.\nfunc (mock *Device) SetDefaultFanSpeed_v2(n int) nvml.Return {\n\tif mock.SetDefaultFanSpeed_v2Func == nil {\n\t\tpanic(\"Device.SetDefaultFanSpeed_v2Func: method is nil but Device.SetDefaultFanSpeed_v2 was just called\")\n\t}\n\tcallInfo := struct {\n\t\tN int\n\t}{\n\t\tN: n,\n\t}\n\tmock.lockSetDefaultFanSpeed_v2.Lock()\n\tmock.calls.SetDefaultFanSpeed_v2 = append(mock.calls.SetDefaultFanSpeed_v2, callInfo)\n\tmock.lockSetDefaultFanSpeed_v2.Unlock()\n\treturn mock.SetDefaultFanSpeed_v2Func(n)\n}\n\n// SetDefaultFanSpeed_v2Calls gets all the calls that were made to SetDefaultFanSpeed_v2.\n// Check the length with:\n//\n//\tlen(mockedDevice.SetDefaultFanSpeed_v2Calls())\nfunc (mock *Device) SetDefaultFanSpeed_v2Calls() []struct {\n\tN int\n} {\n\tvar calls []struct {\n\t\tN int\n\t}\n\tmock.lockSetDefaultFanSpeed_v2.RLock()\n\tcalls = mock.calls.SetDefaultFanSpeed_v2\n\tmock.lockSetDefaultFanSpeed_v2.RUnlock()\n\treturn calls\n}\n\n// SetDramEncryptionMode calls SetDramEncryptionModeFunc.\nfunc (mock *Device) SetDramEncryptionMode(dramEncryptionInfo *nvml.DramEncryptionInfo) nvml.Return {\n\tif mock.SetDramEncryptionModeFunc == nil {\n\t\tpanic(\"Device.SetDramEncryptionModeFunc: method is nil but Device.SetDramEncryptionMode was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDramEncryptionInfo *nvml.DramEncryptionInfo\n\t}{\n\t\tDramEncryptionInfo: dramEncryptionInfo,\n\t}\n\tmock.lockSetDramEncryptionMode.Lock()\n\tmock.calls.SetDramEncryptionMode = append(mock.calls.SetDramEncryptionMode, callInfo)\n\tmock.lockSetDramEncryptionMode.Unlock()\n\treturn mock.SetDramEncryptionModeFunc(dramEncryptionInfo)\n}\n\n// SetDramEncryptionModeCalls gets all the calls that were made to SetDramEncryptionMode.\n// Check the length with:\n//\n//\tlen(mockedDevice.SetDramEncryptionModeCalls())\nfunc (mock *Device) SetDramEncryptionModeCalls() []struct {\n\tDramEncryptionInfo *nvml.DramEncryptionInfo\n} {\n\tvar calls []struct {\n\t\tDramEncryptionInfo *nvml.DramEncryptionInfo\n\t}\n\tmock.lockSetDramEncryptionMode.RLock()\n\tcalls = mock.calls.SetDramEncryptionMode\n\tmock.lockSetDramEncryptionMode.RUnlock()\n\treturn calls\n}\n\n// SetDriverModel calls SetDriverModelFunc.\nfunc (mock *Device) SetDriverModel(driverModel nvml.DriverModel, v uint32) nvml.Return {\n\tif mock.SetDriverModelFunc == nil {\n\t\tpanic(\"Device.SetDriverModelFunc: method is nil but Device.SetDriverModel was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDriverModel nvml.DriverModel\n\t\tV           uint32\n\t}{\n\t\tDriverModel: driverModel,\n\t\tV:           v,\n\t}\n\tmock.lockSetDriverModel.Lock()\n\tmock.calls.SetDriverModel = append(mock.calls.SetDriverModel, callInfo)\n\tmock.lockSetDriverModel.Unlock()\n\treturn mock.SetDriverModelFunc(driverModel, v)\n}\n\n// SetDriverModelCalls gets all the calls that were made to SetDriverModel.\n// Check the length with:\n//\n//\tlen(mockedDevice.SetDriverModelCalls())\nfunc (mock *Device) SetDriverModelCalls() []struct {\n\tDriverModel nvml.DriverModel\n\tV           uint32\n} {\n\tvar calls []struct {\n\t\tDriverModel nvml.DriverModel\n\t\tV           uint32\n\t}\n\tmock.lockSetDriverModel.RLock()\n\tcalls = mock.calls.SetDriverModel\n\tmock.lockSetDriverModel.RUnlock()\n\treturn calls\n}\n\n// SetEccMode calls SetEccModeFunc.\nfunc (mock *Device) SetEccMode(enableState nvml.EnableState) nvml.Return {\n\tif mock.SetEccModeFunc == nil {\n\t\tpanic(\"Device.SetEccModeFunc: method is nil but Device.SetEccMode was just called\")\n\t}\n\tcallInfo := struct {\n\t\tEnableState nvml.EnableState\n\t}{\n\t\tEnableState: enableState,\n\t}\n\tmock.lockSetEccMode.Lock()\n\tmock.calls.SetEccMode = append(mock.calls.SetEccMode, callInfo)\n\tmock.lockSetEccMode.Unlock()\n\treturn mock.SetEccModeFunc(enableState)\n}\n\n// SetEccModeCalls gets all the calls that were made to SetEccMode.\n// Check the length with:\n//\n//\tlen(mockedDevice.SetEccModeCalls())\nfunc (mock *Device) SetEccModeCalls() []struct {\n\tEnableState nvml.EnableState\n} {\n\tvar calls []struct {\n\t\tEnableState nvml.EnableState\n\t}\n\tmock.lockSetEccMode.RLock()\n\tcalls = mock.calls.SetEccMode\n\tmock.lockSetEccMode.RUnlock()\n\treturn calls\n}\n\n// SetFanControlPolicy calls SetFanControlPolicyFunc.\nfunc (mock *Device) SetFanControlPolicy(n int, fanControlPolicy nvml.FanControlPolicy) nvml.Return {\n\tif mock.SetFanControlPolicyFunc == nil {\n\t\tpanic(\"Device.SetFanControlPolicyFunc: method is nil but Device.SetFanControlPolicy was just called\")\n\t}\n\tcallInfo := struct {\n\t\tN                int\n\t\tFanControlPolicy nvml.FanControlPolicy\n\t}{\n\t\tN:                n,\n\t\tFanControlPolicy: fanControlPolicy,\n\t}\n\tmock.lockSetFanControlPolicy.Lock()\n\tmock.calls.SetFanControlPolicy = append(mock.calls.SetFanControlPolicy, callInfo)\n\tmock.lockSetFanControlPolicy.Unlock()\n\treturn mock.SetFanControlPolicyFunc(n, fanControlPolicy)\n}\n\n// SetFanControlPolicyCalls gets all the calls that were made to SetFanControlPolicy.\n// Check the length with:\n//\n//\tlen(mockedDevice.SetFanControlPolicyCalls())\nfunc (mock *Device) SetFanControlPolicyCalls() []struct {\n\tN                int\n\tFanControlPolicy nvml.FanControlPolicy\n} {\n\tvar calls []struct {\n\t\tN                int\n\t\tFanControlPolicy nvml.FanControlPolicy\n\t}\n\tmock.lockSetFanControlPolicy.RLock()\n\tcalls = mock.calls.SetFanControlPolicy\n\tmock.lockSetFanControlPolicy.RUnlock()\n\treturn calls\n}\n\n// SetFanSpeed_v2 calls SetFanSpeed_v2Func.\nfunc (mock *Device) SetFanSpeed_v2(n1 int, n2 int) nvml.Return {\n\tif mock.SetFanSpeed_v2Func == nil {\n\t\tpanic(\"Device.SetFanSpeed_v2Func: method is nil but Device.SetFanSpeed_v2 was just called\")\n\t}\n\tcallInfo := struct {\n\t\tN1 int\n\t\tN2 int\n\t}{\n\t\tN1: n1,\n\t\tN2: n2,\n\t}\n\tmock.lockSetFanSpeed_v2.Lock()\n\tmock.calls.SetFanSpeed_v2 = append(mock.calls.SetFanSpeed_v2, callInfo)\n\tmock.lockSetFanSpeed_v2.Unlock()\n\treturn mock.SetFanSpeed_v2Func(n1, n2)\n}\n\n// SetFanSpeed_v2Calls gets all the calls that were made to SetFanSpeed_v2.\n// Check the length with:\n//\n//\tlen(mockedDevice.SetFanSpeed_v2Calls())\nfunc (mock *Device) SetFanSpeed_v2Calls() []struct {\n\tN1 int\n\tN2 int\n} {\n\tvar calls []struct {\n\t\tN1 int\n\t\tN2 int\n\t}\n\tmock.lockSetFanSpeed_v2.RLock()\n\tcalls = mock.calls.SetFanSpeed_v2\n\tmock.lockSetFanSpeed_v2.RUnlock()\n\treturn calls\n}\n\n// SetGpcClkVfOffset calls SetGpcClkVfOffsetFunc.\nfunc (mock *Device) SetGpcClkVfOffset(n int) nvml.Return {\n\tif mock.SetGpcClkVfOffsetFunc == nil {\n\t\tpanic(\"Device.SetGpcClkVfOffsetFunc: method is nil but Device.SetGpcClkVfOffset was just called\")\n\t}\n\tcallInfo := struct {\n\t\tN int\n\t}{\n\t\tN: n,\n\t}\n\tmock.lockSetGpcClkVfOffset.Lock()\n\tmock.calls.SetGpcClkVfOffset = append(mock.calls.SetGpcClkVfOffset, callInfo)\n\tmock.lockSetGpcClkVfOffset.Unlock()\n\treturn mock.SetGpcClkVfOffsetFunc(n)\n}\n\n// SetGpcClkVfOffsetCalls gets all the calls that were made to SetGpcClkVfOffset.\n// Check the length with:\n//\n//\tlen(mockedDevice.SetGpcClkVfOffsetCalls())\nfunc (mock *Device) SetGpcClkVfOffsetCalls() []struct {\n\tN int\n} {\n\tvar calls []struct {\n\t\tN int\n\t}\n\tmock.lockSetGpcClkVfOffset.RLock()\n\tcalls = mock.calls.SetGpcClkVfOffset\n\tmock.lockSetGpcClkVfOffset.RUnlock()\n\treturn calls\n}\n\n// SetGpuLockedClocks calls SetGpuLockedClocksFunc.\nfunc (mock *Device) SetGpuLockedClocks(v1 uint32, v2 uint32) nvml.Return {\n\tif mock.SetGpuLockedClocksFunc == nil {\n\t\tpanic(\"Device.SetGpuLockedClocksFunc: method is nil but Device.SetGpuLockedClocks was just called\")\n\t}\n\tcallInfo := struct {\n\t\tV1 uint32\n\t\tV2 uint32\n\t}{\n\t\tV1: v1,\n\t\tV2: v2,\n\t}\n\tmock.lockSetGpuLockedClocks.Lock()\n\tmock.calls.SetGpuLockedClocks = append(mock.calls.SetGpuLockedClocks, callInfo)\n\tmock.lockSetGpuLockedClocks.Unlock()\n\treturn mock.SetGpuLockedClocksFunc(v1, v2)\n}\n\n// SetGpuLockedClocksCalls gets all the calls that were made to SetGpuLockedClocks.\n// Check the length with:\n//\n//\tlen(mockedDevice.SetGpuLockedClocksCalls())\nfunc (mock *Device) SetGpuLockedClocksCalls() []struct {\n\tV1 uint32\n\tV2 uint32\n} {\n\tvar calls []struct {\n\t\tV1 uint32\n\t\tV2 uint32\n\t}\n\tmock.lockSetGpuLockedClocks.RLock()\n\tcalls = mock.calls.SetGpuLockedClocks\n\tmock.lockSetGpuLockedClocks.RUnlock()\n\treturn calls\n}\n\n// SetGpuOperationMode calls SetGpuOperationModeFunc.\nfunc (mock *Device) SetGpuOperationMode(gpuOperationMode nvml.GpuOperationMode) nvml.Return {\n\tif mock.SetGpuOperationModeFunc == nil {\n\t\tpanic(\"Device.SetGpuOperationModeFunc: method is nil but Device.SetGpuOperationMode was just called\")\n\t}\n\tcallInfo := struct {\n\t\tGpuOperationMode nvml.GpuOperationMode\n\t}{\n\t\tGpuOperationMode: gpuOperationMode,\n\t}\n\tmock.lockSetGpuOperationMode.Lock()\n\tmock.calls.SetGpuOperationMode = append(mock.calls.SetGpuOperationMode, callInfo)\n\tmock.lockSetGpuOperationMode.Unlock()\n\treturn mock.SetGpuOperationModeFunc(gpuOperationMode)\n}\n\n// SetGpuOperationModeCalls gets all the calls that were made to SetGpuOperationMode.\n// Check the length with:\n//\n//\tlen(mockedDevice.SetGpuOperationModeCalls())\nfunc (mock *Device) SetGpuOperationModeCalls() []struct {\n\tGpuOperationMode nvml.GpuOperationMode\n} {\n\tvar calls []struct {\n\t\tGpuOperationMode nvml.GpuOperationMode\n\t}\n\tmock.lockSetGpuOperationMode.RLock()\n\tcalls = mock.calls.SetGpuOperationMode\n\tmock.lockSetGpuOperationMode.RUnlock()\n\treturn calls\n}\n\n// SetMemClkVfOffset calls SetMemClkVfOffsetFunc.\nfunc (mock *Device) SetMemClkVfOffset(n int) nvml.Return {\n\tif mock.SetMemClkVfOffsetFunc == nil {\n\t\tpanic(\"Device.SetMemClkVfOffsetFunc: method is nil but Device.SetMemClkVfOffset was just called\")\n\t}\n\tcallInfo := struct {\n\t\tN int\n\t}{\n\t\tN: n,\n\t}\n\tmock.lockSetMemClkVfOffset.Lock()\n\tmock.calls.SetMemClkVfOffset = append(mock.calls.SetMemClkVfOffset, callInfo)\n\tmock.lockSetMemClkVfOffset.Unlock()\n\treturn mock.SetMemClkVfOffsetFunc(n)\n}\n\n// SetMemClkVfOffsetCalls gets all the calls that were made to SetMemClkVfOffset.\n// Check the length with:\n//\n//\tlen(mockedDevice.SetMemClkVfOffsetCalls())\nfunc (mock *Device) SetMemClkVfOffsetCalls() []struct {\n\tN int\n} {\n\tvar calls []struct {\n\t\tN int\n\t}\n\tmock.lockSetMemClkVfOffset.RLock()\n\tcalls = mock.calls.SetMemClkVfOffset\n\tmock.lockSetMemClkVfOffset.RUnlock()\n\treturn calls\n}\n\n// SetMemoryLockedClocks calls SetMemoryLockedClocksFunc.\nfunc (mock *Device) SetMemoryLockedClocks(v1 uint32, v2 uint32) nvml.Return {\n\tif mock.SetMemoryLockedClocksFunc == nil {\n\t\tpanic(\"Device.SetMemoryLockedClocksFunc: method is nil but Device.SetMemoryLockedClocks was just called\")\n\t}\n\tcallInfo := struct {\n\t\tV1 uint32\n\t\tV2 uint32\n\t}{\n\t\tV1: v1,\n\t\tV2: v2,\n\t}\n\tmock.lockSetMemoryLockedClocks.Lock()\n\tmock.calls.SetMemoryLockedClocks = append(mock.calls.SetMemoryLockedClocks, callInfo)\n\tmock.lockSetMemoryLockedClocks.Unlock()\n\treturn mock.SetMemoryLockedClocksFunc(v1, v2)\n}\n\n// SetMemoryLockedClocksCalls gets all the calls that were made to SetMemoryLockedClocks.\n// Check the length with:\n//\n//\tlen(mockedDevice.SetMemoryLockedClocksCalls())\nfunc (mock *Device) SetMemoryLockedClocksCalls() []struct {\n\tV1 uint32\n\tV2 uint32\n} {\n\tvar calls []struct {\n\t\tV1 uint32\n\t\tV2 uint32\n\t}\n\tmock.lockSetMemoryLockedClocks.RLock()\n\tcalls = mock.calls.SetMemoryLockedClocks\n\tmock.lockSetMemoryLockedClocks.RUnlock()\n\treturn calls\n}\n\n// SetMigMode calls SetMigModeFunc.\nfunc (mock *Device) SetMigMode(n int) (nvml.Return, nvml.Return) {\n\tif mock.SetMigModeFunc == nil {\n\t\tpanic(\"Device.SetMigModeFunc: method is nil but Device.SetMigMode was just called\")\n\t}\n\tcallInfo := struct {\n\t\tN int\n\t}{\n\t\tN: n,\n\t}\n\tmock.lockSetMigMode.Lock()\n\tmock.calls.SetMigMode = append(mock.calls.SetMigMode, callInfo)\n\tmock.lockSetMigMode.Unlock()\n\treturn mock.SetMigModeFunc(n)\n}\n\n// SetMigModeCalls gets all the calls that were made to SetMigMode.\n// Check the length with:\n//\n//\tlen(mockedDevice.SetMigModeCalls())\nfunc (mock *Device) SetMigModeCalls() []struct {\n\tN int\n} {\n\tvar calls []struct {\n\t\tN int\n\t}\n\tmock.lockSetMigMode.RLock()\n\tcalls = mock.calls.SetMigMode\n\tmock.lockSetMigMode.RUnlock()\n\treturn calls\n}\n\n// SetNvLinkDeviceLowPowerThreshold calls SetNvLinkDeviceLowPowerThresholdFunc.\nfunc (mock *Device) SetNvLinkDeviceLowPowerThreshold(nvLinkPowerThres *nvml.NvLinkPowerThres) nvml.Return {\n\tif mock.SetNvLinkDeviceLowPowerThresholdFunc == nil {\n\t\tpanic(\"Device.SetNvLinkDeviceLowPowerThresholdFunc: method is nil but Device.SetNvLinkDeviceLowPowerThreshold was just called\")\n\t}\n\tcallInfo := struct {\n\t\tNvLinkPowerThres *nvml.NvLinkPowerThres\n\t}{\n\t\tNvLinkPowerThres: nvLinkPowerThres,\n\t}\n\tmock.lockSetNvLinkDeviceLowPowerThreshold.Lock()\n\tmock.calls.SetNvLinkDeviceLowPowerThreshold = append(mock.calls.SetNvLinkDeviceLowPowerThreshold, callInfo)\n\tmock.lockSetNvLinkDeviceLowPowerThreshold.Unlock()\n\treturn mock.SetNvLinkDeviceLowPowerThresholdFunc(nvLinkPowerThres)\n}\n\n// SetNvLinkDeviceLowPowerThresholdCalls gets all the calls that were made to SetNvLinkDeviceLowPowerThreshold.\n// Check the length with:\n//\n//\tlen(mockedDevice.SetNvLinkDeviceLowPowerThresholdCalls())\nfunc (mock *Device) SetNvLinkDeviceLowPowerThresholdCalls() []struct {\n\tNvLinkPowerThres *nvml.NvLinkPowerThres\n} {\n\tvar calls []struct {\n\t\tNvLinkPowerThres *nvml.NvLinkPowerThres\n\t}\n\tmock.lockSetNvLinkDeviceLowPowerThreshold.RLock()\n\tcalls = mock.calls.SetNvLinkDeviceLowPowerThreshold\n\tmock.lockSetNvLinkDeviceLowPowerThreshold.RUnlock()\n\treturn calls\n}\n\n// SetNvLinkUtilizationControl calls SetNvLinkUtilizationControlFunc.\nfunc (mock *Device) SetNvLinkUtilizationControl(n1 int, n2 int, nvLinkUtilizationControl *nvml.NvLinkUtilizationControl, b bool) nvml.Return {\n\tif mock.SetNvLinkUtilizationControlFunc == nil {\n\t\tpanic(\"Device.SetNvLinkUtilizationControlFunc: method is nil but Device.SetNvLinkUtilizationControl was just called\")\n\t}\n\tcallInfo := struct {\n\t\tN1                       int\n\t\tN2                       int\n\t\tNvLinkUtilizationControl *nvml.NvLinkUtilizationControl\n\t\tB                        bool\n\t}{\n\t\tN1:                       n1,\n\t\tN2:                       n2,\n\t\tNvLinkUtilizationControl: nvLinkUtilizationControl,\n\t\tB:                        b,\n\t}\n\tmock.lockSetNvLinkUtilizationControl.Lock()\n\tmock.calls.SetNvLinkUtilizationControl = append(mock.calls.SetNvLinkUtilizationControl, callInfo)\n\tmock.lockSetNvLinkUtilizationControl.Unlock()\n\treturn mock.SetNvLinkUtilizationControlFunc(n1, n2, nvLinkUtilizationControl, b)\n}\n\n// SetNvLinkUtilizationControlCalls gets all the calls that were made to SetNvLinkUtilizationControl.\n// Check the length with:\n//\n//\tlen(mockedDevice.SetNvLinkUtilizationControlCalls())\nfunc (mock *Device) SetNvLinkUtilizationControlCalls() []struct {\n\tN1                       int\n\tN2                       int\n\tNvLinkUtilizationControl *nvml.NvLinkUtilizationControl\n\tB                        bool\n} {\n\tvar calls []struct {\n\t\tN1                       int\n\t\tN2                       int\n\t\tNvLinkUtilizationControl *nvml.NvLinkUtilizationControl\n\t\tB                        bool\n\t}\n\tmock.lockSetNvLinkUtilizationControl.RLock()\n\tcalls = mock.calls.SetNvLinkUtilizationControl\n\tmock.lockSetNvLinkUtilizationControl.RUnlock()\n\treturn calls\n}\n\n// SetNvlinkBwMode calls SetNvlinkBwModeFunc.\nfunc (mock *Device) SetNvlinkBwMode(nvlinkSetBwMode *nvml.NvlinkSetBwMode) nvml.Return {\n\tif mock.SetNvlinkBwModeFunc == nil {\n\t\tpanic(\"Device.SetNvlinkBwModeFunc: method is nil but Device.SetNvlinkBwMode was just called\")\n\t}\n\tcallInfo := struct {\n\t\tNvlinkSetBwMode *nvml.NvlinkSetBwMode\n\t}{\n\t\tNvlinkSetBwMode: nvlinkSetBwMode,\n\t}\n\tmock.lockSetNvlinkBwMode.Lock()\n\tmock.calls.SetNvlinkBwMode = append(mock.calls.SetNvlinkBwMode, callInfo)\n\tmock.lockSetNvlinkBwMode.Unlock()\n\treturn mock.SetNvlinkBwModeFunc(nvlinkSetBwMode)\n}\n\n// SetNvlinkBwModeCalls gets all the calls that were made to SetNvlinkBwMode.\n// Check the length with:\n//\n//\tlen(mockedDevice.SetNvlinkBwModeCalls())\nfunc (mock *Device) SetNvlinkBwModeCalls() []struct {\n\tNvlinkSetBwMode *nvml.NvlinkSetBwMode\n} {\n\tvar calls []struct {\n\t\tNvlinkSetBwMode *nvml.NvlinkSetBwMode\n\t}\n\tmock.lockSetNvlinkBwMode.RLock()\n\tcalls = mock.calls.SetNvlinkBwMode\n\tmock.lockSetNvlinkBwMode.RUnlock()\n\treturn calls\n}\n\n// SetPersistenceMode calls SetPersistenceModeFunc.\nfunc (mock *Device) SetPersistenceMode(enableState nvml.EnableState) nvml.Return {\n\tif mock.SetPersistenceModeFunc == nil {\n\t\tpanic(\"Device.SetPersistenceModeFunc: method is nil but Device.SetPersistenceMode was just called\")\n\t}\n\tcallInfo := struct {\n\t\tEnableState nvml.EnableState\n\t}{\n\t\tEnableState: enableState,\n\t}\n\tmock.lockSetPersistenceMode.Lock()\n\tmock.calls.SetPersistenceMode = append(mock.calls.SetPersistenceMode, callInfo)\n\tmock.lockSetPersistenceMode.Unlock()\n\treturn mock.SetPersistenceModeFunc(enableState)\n}\n\n// SetPersistenceModeCalls gets all the calls that were made to SetPersistenceMode.\n// Check the length with:\n//\n//\tlen(mockedDevice.SetPersistenceModeCalls())\nfunc (mock *Device) SetPersistenceModeCalls() []struct {\n\tEnableState nvml.EnableState\n} {\n\tvar calls []struct {\n\t\tEnableState nvml.EnableState\n\t}\n\tmock.lockSetPersistenceMode.RLock()\n\tcalls = mock.calls.SetPersistenceMode\n\tmock.lockSetPersistenceMode.RUnlock()\n\treturn calls\n}\n\n// SetPowerManagementLimit calls SetPowerManagementLimitFunc.\nfunc (mock *Device) SetPowerManagementLimit(v uint32) nvml.Return {\n\tif mock.SetPowerManagementLimitFunc == nil {\n\t\tpanic(\"Device.SetPowerManagementLimitFunc: method is nil but Device.SetPowerManagementLimit was just called\")\n\t}\n\tcallInfo := struct {\n\t\tV uint32\n\t}{\n\t\tV: v,\n\t}\n\tmock.lockSetPowerManagementLimit.Lock()\n\tmock.calls.SetPowerManagementLimit = append(mock.calls.SetPowerManagementLimit, callInfo)\n\tmock.lockSetPowerManagementLimit.Unlock()\n\treturn mock.SetPowerManagementLimitFunc(v)\n}\n\n// SetPowerManagementLimitCalls gets all the calls that were made to SetPowerManagementLimit.\n// Check the length with:\n//\n//\tlen(mockedDevice.SetPowerManagementLimitCalls())\nfunc (mock *Device) SetPowerManagementLimitCalls() []struct {\n\tV uint32\n} {\n\tvar calls []struct {\n\t\tV uint32\n\t}\n\tmock.lockSetPowerManagementLimit.RLock()\n\tcalls = mock.calls.SetPowerManagementLimit\n\tmock.lockSetPowerManagementLimit.RUnlock()\n\treturn calls\n}\n\n// SetPowerManagementLimit_v2 calls SetPowerManagementLimit_v2Func.\nfunc (mock *Device) SetPowerManagementLimit_v2(powerValue_v2 *nvml.PowerValue_v2) nvml.Return {\n\tif mock.SetPowerManagementLimit_v2Func == nil {\n\t\tpanic(\"Device.SetPowerManagementLimit_v2Func: method is nil but Device.SetPowerManagementLimit_v2 was just called\")\n\t}\n\tcallInfo := struct {\n\t\tPowerValue_v2 *nvml.PowerValue_v2\n\t}{\n\t\tPowerValue_v2: powerValue_v2,\n\t}\n\tmock.lockSetPowerManagementLimit_v2.Lock()\n\tmock.calls.SetPowerManagementLimit_v2 = append(mock.calls.SetPowerManagementLimit_v2, callInfo)\n\tmock.lockSetPowerManagementLimit_v2.Unlock()\n\treturn mock.SetPowerManagementLimit_v2Func(powerValue_v2)\n}\n\n// SetPowerManagementLimit_v2Calls gets all the calls that were made to SetPowerManagementLimit_v2.\n// Check the length with:\n//\n//\tlen(mockedDevice.SetPowerManagementLimit_v2Calls())\nfunc (mock *Device) SetPowerManagementLimit_v2Calls() []struct {\n\tPowerValue_v2 *nvml.PowerValue_v2\n} {\n\tvar calls []struct {\n\t\tPowerValue_v2 *nvml.PowerValue_v2\n\t}\n\tmock.lockSetPowerManagementLimit_v2.RLock()\n\tcalls = mock.calls.SetPowerManagementLimit_v2\n\tmock.lockSetPowerManagementLimit_v2.RUnlock()\n\treturn calls\n}\n\n// SetTemperatureThreshold calls SetTemperatureThresholdFunc.\nfunc (mock *Device) SetTemperatureThreshold(temperatureThresholds nvml.TemperatureThresholds, n int) nvml.Return {\n\tif mock.SetTemperatureThresholdFunc == nil {\n\t\tpanic(\"Device.SetTemperatureThresholdFunc: method is nil but Device.SetTemperatureThreshold was just called\")\n\t}\n\tcallInfo := struct {\n\t\tTemperatureThresholds nvml.TemperatureThresholds\n\t\tN                     int\n\t}{\n\t\tTemperatureThresholds: temperatureThresholds,\n\t\tN:                     n,\n\t}\n\tmock.lockSetTemperatureThreshold.Lock()\n\tmock.calls.SetTemperatureThreshold = append(mock.calls.SetTemperatureThreshold, callInfo)\n\tmock.lockSetTemperatureThreshold.Unlock()\n\treturn mock.SetTemperatureThresholdFunc(temperatureThresholds, n)\n}\n\n// SetTemperatureThresholdCalls gets all the calls that were made to SetTemperatureThreshold.\n// Check the length with:\n//\n//\tlen(mockedDevice.SetTemperatureThresholdCalls())\nfunc (mock *Device) SetTemperatureThresholdCalls() []struct {\n\tTemperatureThresholds nvml.TemperatureThresholds\n\tN                     int\n} {\n\tvar calls []struct {\n\t\tTemperatureThresholds nvml.TemperatureThresholds\n\t\tN                     int\n\t}\n\tmock.lockSetTemperatureThreshold.RLock()\n\tcalls = mock.calls.SetTemperatureThreshold\n\tmock.lockSetTemperatureThreshold.RUnlock()\n\treturn calls\n}\n\n// SetVgpuCapabilities calls SetVgpuCapabilitiesFunc.\nfunc (mock *Device) SetVgpuCapabilities(deviceVgpuCapability nvml.DeviceVgpuCapability, enableState nvml.EnableState) nvml.Return {\n\tif mock.SetVgpuCapabilitiesFunc == nil {\n\t\tpanic(\"Device.SetVgpuCapabilitiesFunc: method is nil but Device.SetVgpuCapabilities was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDeviceVgpuCapability nvml.DeviceVgpuCapability\n\t\tEnableState          nvml.EnableState\n\t}{\n\t\tDeviceVgpuCapability: deviceVgpuCapability,\n\t\tEnableState:          enableState,\n\t}\n\tmock.lockSetVgpuCapabilities.Lock()\n\tmock.calls.SetVgpuCapabilities = append(mock.calls.SetVgpuCapabilities, callInfo)\n\tmock.lockSetVgpuCapabilities.Unlock()\n\treturn mock.SetVgpuCapabilitiesFunc(deviceVgpuCapability, enableState)\n}\n\n// SetVgpuCapabilitiesCalls gets all the calls that were made to SetVgpuCapabilities.\n// Check the length with:\n//\n//\tlen(mockedDevice.SetVgpuCapabilitiesCalls())\nfunc (mock *Device) SetVgpuCapabilitiesCalls() []struct {\n\tDeviceVgpuCapability nvml.DeviceVgpuCapability\n\tEnableState          nvml.EnableState\n} {\n\tvar calls []struct {\n\t\tDeviceVgpuCapability nvml.DeviceVgpuCapability\n\t\tEnableState          nvml.EnableState\n\t}\n\tmock.lockSetVgpuCapabilities.RLock()\n\tcalls = mock.calls.SetVgpuCapabilities\n\tmock.lockSetVgpuCapabilities.RUnlock()\n\treturn calls\n}\n\n// SetVgpuHeterogeneousMode calls SetVgpuHeterogeneousModeFunc.\nfunc (mock *Device) SetVgpuHeterogeneousMode(vgpuHeterogeneousMode nvml.VgpuHeterogeneousMode) nvml.Return {\n\tif mock.SetVgpuHeterogeneousModeFunc == nil {\n\t\tpanic(\"Device.SetVgpuHeterogeneousModeFunc: method is nil but Device.SetVgpuHeterogeneousMode was just called\")\n\t}\n\tcallInfo := struct {\n\t\tVgpuHeterogeneousMode nvml.VgpuHeterogeneousMode\n\t}{\n\t\tVgpuHeterogeneousMode: vgpuHeterogeneousMode,\n\t}\n\tmock.lockSetVgpuHeterogeneousMode.Lock()\n\tmock.calls.SetVgpuHeterogeneousMode = append(mock.calls.SetVgpuHeterogeneousMode, callInfo)\n\tmock.lockSetVgpuHeterogeneousMode.Unlock()\n\treturn mock.SetVgpuHeterogeneousModeFunc(vgpuHeterogeneousMode)\n}\n\n// SetVgpuHeterogeneousModeCalls gets all the calls that were made to SetVgpuHeterogeneousMode.\n// Check the length with:\n//\n//\tlen(mockedDevice.SetVgpuHeterogeneousModeCalls())\nfunc (mock *Device) SetVgpuHeterogeneousModeCalls() []struct {\n\tVgpuHeterogeneousMode nvml.VgpuHeterogeneousMode\n} {\n\tvar calls []struct {\n\t\tVgpuHeterogeneousMode nvml.VgpuHeterogeneousMode\n\t}\n\tmock.lockSetVgpuHeterogeneousMode.RLock()\n\tcalls = mock.calls.SetVgpuHeterogeneousMode\n\tmock.lockSetVgpuHeterogeneousMode.RUnlock()\n\treturn calls\n}\n\n// SetVgpuSchedulerState calls SetVgpuSchedulerStateFunc.\nfunc (mock *Device) SetVgpuSchedulerState(vgpuSchedulerSetState *nvml.VgpuSchedulerSetState) nvml.Return {\n\tif mock.SetVgpuSchedulerStateFunc == nil {\n\t\tpanic(\"Device.SetVgpuSchedulerStateFunc: method is nil but Device.SetVgpuSchedulerState was just called\")\n\t}\n\tcallInfo := struct {\n\t\tVgpuSchedulerSetState *nvml.VgpuSchedulerSetState\n\t}{\n\t\tVgpuSchedulerSetState: vgpuSchedulerSetState,\n\t}\n\tmock.lockSetVgpuSchedulerState.Lock()\n\tmock.calls.SetVgpuSchedulerState = append(mock.calls.SetVgpuSchedulerState, callInfo)\n\tmock.lockSetVgpuSchedulerState.Unlock()\n\treturn mock.SetVgpuSchedulerStateFunc(vgpuSchedulerSetState)\n}\n\n// SetVgpuSchedulerStateCalls gets all the calls that were made to SetVgpuSchedulerState.\n// Check the length with:\n//\n//\tlen(mockedDevice.SetVgpuSchedulerStateCalls())\nfunc (mock *Device) SetVgpuSchedulerStateCalls() []struct {\n\tVgpuSchedulerSetState *nvml.VgpuSchedulerSetState\n} {\n\tvar calls []struct {\n\t\tVgpuSchedulerSetState *nvml.VgpuSchedulerSetState\n\t}\n\tmock.lockSetVgpuSchedulerState.RLock()\n\tcalls = mock.calls.SetVgpuSchedulerState\n\tmock.lockSetVgpuSchedulerState.RUnlock()\n\treturn calls\n}\n\n// SetVirtualizationMode calls SetVirtualizationModeFunc.\nfunc (mock *Device) SetVirtualizationMode(gpuVirtualizationMode nvml.GpuVirtualizationMode) nvml.Return {\n\tif mock.SetVirtualizationModeFunc == nil {\n\t\tpanic(\"Device.SetVirtualizationModeFunc: method is nil but Device.SetVirtualizationMode was just called\")\n\t}\n\tcallInfo := struct {\n\t\tGpuVirtualizationMode nvml.GpuVirtualizationMode\n\t}{\n\t\tGpuVirtualizationMode: gpuVirtualizationMode,\n\t}\n\tmock.lockSetVirtualizationMode.Lock()\n\tmock.calls.SetVirtualizationMode = append(mock.calls.SetVirtualizationMode, callInfo)\n\tmock.lockSetVirtualizationMode.Unlock()\n\treturn mock.SetVirtualizationModeFunc(gpuVirtualizationMode)\n}\n\n// SetVirtualizationModeCalls gets all the calls that were made to SetVirtualizationMode.\n// Check the length with:\n//\n//\tlen(mockedDevice.SetVirtualizationModeCalls())\nfunc (mock *Device) SetVirtualizationModeCalls() []struct {\n\tGpuVirtualizationMode nvml.GpuVirtualizationMode\n} {\n\tvar calls []struct {\n\t\tGpuVirtualizationMode nvml.GpuVirtualizationMode\n\t}\n\tmock.lockSetVirtualizationMode.RLock()\n\tcalls = mock.calls.SetVirtualizationMode\n\tmock.lockSetVirtualizationMode.RUnlock()\n\treturn calls\n}\n\n// ValidateInforom calls ValidateInforomFunc.\nfunc (mock *Device) ValidateInforom() nvml.Return {\n\tif mock.ValidateInforomFunc == nil {\n\t\tpanic(\"Device.ValidateInforomFunc: method is nil but Device.ValidateInforom was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockValidateInforom.Lock()\n\tmock.calls.ValidateInforom = append(mock.calls.ValidateInforom, callInfo)\n\tmock.lockValidateInforom.Unlock()\n\treturn mock.ValidateInforomFunc()\n}\n\n// ValidateInforomCalls gets all the calls that were made to ValidateInforom.\n// Check the length with:\n//\n//\tlen(mockedDevice.ValidateInforomCalls())\nfunc (mock *Device) ValidateInforomCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockValidateInforom.RLock()\n\tcalls = mock.calls.ValidateInforom\n\tmock.lockValidateInforom.RUnlock()\n\treturn calls\n}\n\n// VgpuTypeGetMaxInstances calls VgpuTypeGetMaxInstancesFunc.\nfunc (mock *Device) VgpuTypeGetMaxInstances(vgpuTypeId nvml.VgpuTypeId) (int, nvml.Return) {\n\tif mock.VgpuTypeGetMaxInstancesFunc == nil {\n\t\tpanic(\"Device.VgpuTypeGetMaxInstancesFunc: method is nil but Device.VgpuTypeGetMaxInstances was just called\")\n\t}\n\tcallInfo := struct {\n\t\tVgpuTypeId nvml.VgpuTypeId\n\t}{\n\t\tVgpuTypeId: vgpuTypeId,\n\t}\n\tmock.lockVgpuTypeGetMaxInstances.Lock()\n\tmock.calls.VgpuTypeGetMaxInstances = append(mock.calls.VgpuTypeGetMaxInstances, callInfo)\n\tmock.lockVgpuTypeGetMaxInstances.Unlock()\n\treturn mock.VgpuTypeGetMaxInstancesFunc(vgpuTypeId)\n}\n\n// VgpuTypeGetMaxInstancesCalls gets all the calls that were made to VgpuTypeGetMaxInstances.\n// Check the length with:\n//\n//\tlen(mockedDevice.VgpuTypeGetMaxInstancesCalls())\nfunc (mock *Device) VgpuTypeGetMaxInstancesCalls() []struct {\n\tVgpuTypeId nvml.VgpuTypeId\n} {\n\tvar calls []struct {\n\t\tVgpuTypeId nvml.VgpuTypeId\n\t}\n\tmock.lockVgpuTypeGetMaxInstances.RLock()\n\tcalls = mock.calls.VgpuTypeGetMaxInstances\n\tmock.lockVgpuTypeGetMaxInstances.RUnlock()\n\treturn calls\n}\n\n// WorkloadPowerProfileClearRequestedProfiles calls WorkloadPowerProfileClearRequestedProfilesFunc.\nfunc (mock *Device) WorkloadPowerProfileClearRequestedProfiles(workloadPowerProfileRequestedProfiles *nvml.WorkloadPowerProfileRequestedProfiles) nvml.Return {\n\tif mock.WorkloadPowerProfileClearRequestedProfilesFunc == nil {\n\t\tpanic(\"Device.WorkloadPowerProfileClearRequestedProfilesFunc: method is nil but Device.WorkloadPowerProfileClearRequestedProfiles was just called\")\n\t}\n\tcallInfo := struct {\n\t\tWorkloadPowerProfileRequestedProfiles *nvml.WorkloadPowerProfileRequestedProfiles\n\t}{\n\t\tWorkloadPowerProfileRequestedProfiles: workloadPowerProfileRequestedProfiles,\n\t}\n\tmock.lockWorkloadPowerProfileClearRequestedProfiles.Lock()\n\tmock.calls.WorkloadPowerProfileClearRequestedProfiles = append(mock.calls.WorkloadPowerProfileClearRequestedProfiles, callInfo)\n\tmock.lockWorkloadPowerProfileClearRequestedProfiles.Unlock()\n\treturn mock.WorkloadPowerProfileClearRequestedProfilesFunc(workloadPowerProfileRequestedProfiles)\n}\n\n// WorkloadPowerProfileClearRequestedProfilesCalls gets all the calls that were made to WorkloadPowerProfileClearRequestedProfiles.\n// Check the length with:\n//\n//\tlen(mockedDevice.WorkloadPowerProfileClearRequestedProfilesCalls())\nfunc (mock *Device) WorkloadPowerProfileClearRequestedProfilesCalls() []struct {\n\tWorkloadPowerProfileRequestedProfiles *nvml.WorkloadPowerProfileRequestedProfiles\n} {\n\tvar calls []struct {\n\t\tWorkloadPowerProfileRequestedProfiles *nvml.WorkloadPowerProfileRequestedProfiles\n\t}\n\tmock.lockWorkloadPowerProfileClearRequestedProfiles.RLock()\n\tcalls = mock.calls.WorkloadPowerProfileClearRequestedProfiles\n\tmock.lockWorkloadPowerProfileClearRequestedProfiles.RUnlock()\n\treturn calls\n}\n\n// WorkloadPowerProfileGetCurrentProfiles calls WorkloadPowerProfileGetCurrentProfilesFunc.\nfunc (mock *Device) WorkloadPowerProfileGetCurrentProfiles() (nvml.WorkloadPowerProfileCurrentProfiles, nvml.Return) {\n\tif mock.WorkloadPowerProfileGetCurrentProfilesFunc == nil {\n\t\tpanic(\"Device.WorkloadPowerProfileGetCurrentProfilesFunc: method is nil but Device.WorkloadPowerProfileGetCurrentProfiles was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockWorkloadPowerProfileGetCurrentProfiles.Lock()\n\tmock.calls.WorkloadPowerProfileGetCurrentProfiles = append(mock.calls.WorkloadPowerProfileGetCurrentProfiles, callInfo)\n\tmock.lockWorkloadPowerProfileGetCurrentProfiles.Unlock()\n\treturn mock.WorkloadPowerProfileGetCurrentProfilesFunc()\n}\n\n// WorkloadPowerProfileGetCurrentProfilesCalls gets all the calls that were made to WorkloadPowerProfileGetCurrentProfiles.\n// Check the length with:\n//\n//\tlen(mockedDevice.WorkloadPowerProfileGetCurrentProfilesCalls())\nfunc (mock *Device) WorkloadPowerProfileGetCurrentProfilesCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockWorkloadPowerProfileGetCurrentProfiles.RLock()\n\tcalls = mock.calls.WorkloadPowerProfileGetCurrentProfiles\n\tmock.lockWorkloadPowerProfileGetCurrentProfiles.RUnlock()\n\treturn calls\n}\n\n// WorkloadPowerProfileGetProfilesInfo calls WorkloadPowerProfileGetProfilesInfoFunc.\nfunc (mock *Device) WorkloadPowerProfileGetProfilesInfo() (nvml.WorkloadPowerProfileProfilesInfo, nvml.Return) {\n\tif mock.WorkloadPowerProfileGetProfilesInfoFunc == nil {\n\t\tpanic(\"Device.WorkloadPowerProfileGetProfilesInfoFunc: method is nil but Device.WorkloadPowerProfileGetProfilesInfo was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockWorkloadPowerProfileGetProfilesInfo.Lock()\n\tmock.calls.WorkloadPowerProfileGetProfilesInfo = append(mock.calls.WorkloadPowerProfileGetProfilesInfo, callInfo)\n\tmock.lockWorkloadPowerProfileGetProfilesInfo.Unlock()\n\treturn mock.WorkloadPowerProfileGetProfilesInfoFunc()\n}\n\n// WorkloadPowerProfileGetProfilesInfoCalls gets all the calls that were made to WorkloadPowerProfileGetProfilesInfo.\n// Check the length with:\n//\n//\tlen(mockedDevice.WorkloadPowerProfileGetProfilesInfoCalls())\nfunc (mock *Device) WorkloadPowerProfileGetProfilesInfoCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockWorkloadPowerProfileGetProfilesInfo.RLock()\n\tcalls = mock.calls.WorkloadPowerProfileGetProfilesInfo\n\tmock.lockWorkloadPowerProfileGetProfilesInfo.RUnlock()\n\treturn calls\n}\n\n// WorkloadPowerProfileSetRequestedProfiles calls WorkloadPowerProfileSetRequestedProfilesFunc.\nfunc (mock *Device) WorkloadPowerProfileSetRequestedProfiles(workloadPowerProfileRequestedProfiles *nvml.WorkloadPowerProfileRequestedProfiles) nvml.Return {\n\tif mock.WorkloadPowerProfileSetRequestedProfilesFunc == nil {\n\t\tpanic(\"Device.WorkloadPowerProfileSetRequestedProfilesFunc: method is nil but Device.WorkloadPowerProfileSetRequestedProfiles was just called\")\n\t}\n\tcallInfo := struct {\n\t\tWorkloadPowerProfileRequestedProfiles *nvml.WorkloadPowerProfileRequestedProfiles\n\t}{\n\t\tWorkloadPowerProfileRequestedProfiles: workloadPowerProfileRequestedProfiles,\n\t}\n\tmock.lockWorkloadPowerProfileSetRequestedProfiles.Lock()\n\tmock.calls.WorkloadPowerProfileSetRequestedProfiles = append(mock.calls.WorkloadPowerProfileSetRequestedProfiles, callInfo)\n\tmock.lockWorkloadPowerProfileSetRequestedProfiles.Unlock()\n\treturn mock.WorkloadPowerProfileSetRequestedProfilesFunc(workloadPowerProfileRequestedProfiles)\n}\n\n// WorkloadPowerProfileSetRequestedProfilesCalls gets all the calls that were made to WorkloadPowerProfileSetRequestedProfiles.\n// Check the length with:\n//\n//\tlen(mockedDevice.WorkloadPowerProfileSetRequestedProfilesCalls())\nfunc (mock *Device) WorkloadPowerProfileSetRequestedProfilesCalls() []struct {\n\tWorkloadPowerProfileRequestedProfiles *nvml.WorkloadPowerProfileRequestedProfiles\n} {\n\tvar calls []struct {\n\t\tWorkloadPowerProfileRequestedProfiles *nvml.WorkloadPowerProfileRequestedProfiles\n\t}\n\tmock.lockWorkloadPowerProfileSetRequestedProfiles.RLock()\n\tcalls = mock.calls.WorkloadPowerProfileSetRequestedProfiles\n\tmock.lockWorkloadPowerProfileSetRequestedProfiles.RUnlock()\n\treturn calls\n}\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvml/pkg/nvml/mock/dgxa100/dgxa100.go",
    "content": "/*\n * Copyright (c) 2024, NVIDIA CORPORATION.  All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage dgxa100\n\nimport (\n\t\"fmt\"\n\t\"sync\"\n\n\t\"github.com/google/uuid\"\n\n\t\"github.com/NVIDIA/go-nvml/pkg/nvml\"\n\t\"github.com/NVIDIA/go-nvml/pkg/nvml/mock\"\n)\n\ntype Server struct {\n\tmock.Interface\n\tmock.ExtendedInterface\n\tDevices           [8]nvml.Device\n\tDriverVersion     string\n\tNvmlVersion       string\n\tCudaDriverVersion int\n}\ntype Device struct {\n\tmock.Device\n\tsync.RWMutex\n\tUUID                  string\n\tName                  string\n\tBrand                 nvml.BrandType\n\tArchitecture          nvml.DeviceArchitecture\n\tPciBusID              string\n\tMinor                 int\n\tIndex                 int\n\tCudaComputeCapability CudaComputeCapability\n\tMigMode               int\n\tGpuInstances          map[*GpuInstance]struct{}\n\tGpuInstanceCounter    uint32\n\tMemoryInfo            nvml.Memory\n}\n\ntype GpuInstance struct {\n\tmock.GpuInstance\n\tsync.RWMutex\n\tInfo                   nvml.GpuInstanceInfo\n\tComputeInstances       map[*ComputeInstance]struct{}\n\tComputeInstanceCounter uint32\n}\n\ntype ComputeInstance struct {\n\tmock.ComputeInstance\n\tInfo nvml.ComputeInstanceInfo\n}\n\ntype CudaComputeCapability struct {\n\tMajor int\n\tMinor int\n}\n\nvar _ nvml.Interface = (*Server)(nil)\nvar _ nvml.Device = (*Device)(nil)\nvar _ nvml.GpuInstance = (*GpuInstance)(nil)\nvar _ nvml.ComputeInstance = (*ComputeInstance)(nil)\n\nfunc New() *Server {\n\tserver := &Server{\n\t\tDevices: [8]nvml.Device{\n\t\t\tNewDevice(0),\n\t\t\tNewDevice(1),\n\t\t\tNewDevice(2),\n\t\t\tNewDevice(3),\n\t\t\tNewDevice(4),\n\t\t\tNewDevice(5),\n\t\t\tNewDevice(6),\n\t\t\tNewDevice(7),\n\t\t},\n\t\tDriverVersion:     \"550.54.15\",\n\t\tNvmlVersion:       \"12.550.54.15\",\n\t\tCudaDriverVersion: 12040,\n\t}\n\tserver.setMockFuncs()\n\treturn server\n}\n\nfunc NewDevice(index int) *Device {\n\tdevice := &Device{\n\t\tUUID:         \"GPU-\" + uuid.New().String(),\n\t\tName:         \"Mock NVIDIA A100-SXM4-40GB\",\n\t\tBrand:        nvml.BRAND_NVIDIA,\n\t\tArchitecture: nvml.DEVICE_ARCH_AMPERE,\n\t\tPciBusID:     fmt.Sprintf(\"0000:%02x:00.0\", index),\n\t\tMinor:        index,\n\t\tIndex:        index,\n\t\tCudaComputeCapability: CudaComputeCapability{\n\t\t\tMajor: 8,\n\t\t\tMinor: 0,\n\t\t},\n\t\tGpuInstances:       make(map[*GpuInstance]struct{}),\n\t\tGpuInstanceCounter: 0,\n\t\tMemoryInfo:         nvml.Memory{Total: 42949672960, Free: 0, Used: 0},\n\t}\n\tdevice.setMockFuncs()\n\treturn device\n}\n\nfunc NewGpuInstance(info nvml.GpuInstanceInfo) *GpuInstance {\n\tgi := &GpuInstance{\n\t\tInfo:                   info,\n\t\tComputeInstances:       make(map[*ComputeInstance]struct{}),\n\t\tComputeInstanceCounter: 0,\n\t}\n\tgi.setMockFuncs()\n\treturn gi\n}\n\nfunc NewComputeInstance(info nvml.ComputeInstanceInfo) *ComputeInstance {\n\tci := &ComputeInstance{\n\t\tInfo: info,\n\t}\n\tci.setMockFuncs()\n\treturn ci\n}\n\nfunc (s *Server) setMockFuncs() {\n\ts.ExtensionsFunc = func() nvml.ExtendedInterface {\n\t\treturn s\n\t}\n\n\ts.LookupSymbolFunc = func(symbol string) error {\n\t\treturn nil\n\t}\n\n\ts.InitFunc = func() nvml.Return {\n\t\treturn nvml.SUCCESS\n\t}\n\n\ts.ShutdownFunc = func() nvml.Return {\n\t\treturn nvml.SUCCESS\n\t}\n\n\ts.SystemGetDriverVersionFunc = func() (string, nvml.Return) {\n\t\treturn s.DriverVersion, nvml.SUCCESS\n\t}\n\n\ts.SystemGetNVMLVersionFunc = func() (string, nvml.Return) {\n\t\treturn s.NvmlVersion, nvml.SUCCESS\n\t}\n\n\ts.SystemGetCudaDriverVersionFunc = func() (int, nvml.Return) {\n\t\treturn s.CudaDriverVersion, nvml.SUCCESS\n\t}\n\n\ts.DeviceGetCountFunc = func() (int, nvml.Return) {\n\t\treturn len(s.Devices), nvml.SUCCESS\n\t}\n\n\ts.DeviceGetHandleByIndexFunc = func(index int) (nvml.Device, nvml.Return) {\n\t\tif index < 0 || index >= len(s.Devices) {\n\t\t\treturn nil, nvml.ERROR_INVALID_ARGUMENT\n\t\t}\n\t\treturn s.Devices[index], nvml.SUCCESS\n\t}\n\n\ts.DeviceGetHandleByUUIDFunc = func(uuid string) (nvml.Device, nvml.Return) {\n\t\tfor _, d := range s.Devices {\n\t\t\tif uuid == d.(*Device).UUID {\n\t\t\t\treturn d, nvml.SUCCESS\n\t\t\t}\n\t\t}\n\t\treturn nil, nvml.ERROR_INVALID_ARGUMENT\n\t}\n\n\ts.DeviceGetHandleByPciBusIdFunc = func(busID string) (nvml.Device, nvml.Return) {\n\t\tfor _, d := range s.Devices {\n\t\t\tif busID == d.(*Device).PciBusID {\n\t\t\t\treturn d, nvml.SUCCESS\n\t\t\t}\n\t\t}\n\t\treturn nil, nvml.ERROR_INVALID_ARGUMENT\n\t}\n}\n\nfunc (d *Device) setMockFuncs() {\n\td.GetMinorNumberFunc = func() (int, nvml.Return) {\n\t\treturn d.Minor, nvml.SUCCESS\n\t}\n\n\td.GetIndexFunc = func() (int, nvml.Return) {\n\t\treturn d.Index, nvml.SUCCESS\n\t}\n\n\td.GetCudaComputeCapabilityFunc = func() (int, int, nvml.Return) {\n\t\treturn d.CudaComputeCapability.Major, d.CudaComputeCapability.Minor, nvml.SUCCESS\n\t}\n\n\td.GetUUIDFunc = func() (string, nvml.Return) {\n\t\treturn d.UUID, nvml.SUCCESS\n\t}\n\n\td.GetNameFunc = func() (string, nvml.Return) {\n\t\treturn d.Name, nvml.SUCCESS\n\t}\n\n\td.GetBrandFunc = func() (nvml.BrandType, nvml.Return) {\n\t\treturn d.Brand, nvml.SUCCESS\n\t}\n\n\td.GetArchitectureFunc = func() (nvml.DeviceArchitecture, nvml.Return) {\n\t\treturn d.Architecture, nvml.SUCCESS\n\t}\n\n\td.GetMemoryInfoFunc = func() (nvml.Memory, nvml.Return) {\n\t\treturn d.MemoryInfo, nvml.SUCCESS\n\t}\n\n\td.GetPciInfoFunc = func() (nvml.PciInfo, nvml.Return) {\n\t\tp := nvml.PciInfo{\n\t\t\tPciDeviceId: 0x20B010DE,\n\t\t}\n\t\treturn p, nvml.SUCCESS\n\t}\n\n\td.SetMigModeFunc = func(mode int) (nvml.Return, nvml.Return) {\n\t\td.MigMode = mode\n\t\treturn nvml.SUCCESS, nvml.SUCCESS\n\t}\n\n\td.GetMigModeFunc = func() (int, int, nvml.Return) {\n\t\treturn d.MigMode, d.MigMode, nvml.SUCCESS\n\t}\n\n\td.GetGpuInstanceProfileInfoFunc = func(giProfileId int) (nvml.GpuInstanceProfileInfo, nvml.Return) {\n\t\tif giProfileId < 0 || giProfileId >= nvml.GPU_INSTANCE_PROFILE_COUNT {\n\t\t\treturn nvml.GpuInstanceProfileInfo{}, nvml.ERROR_INVALID_ARGUMENT\n\t\t}\n\n\t\tif _, exists := MIGProfiles.GpuInstanceProfiles[giProfileId]; !exists {\n\t\t\treturn nvml.GpuInstanceProfileInfo{}, nvml.ERROR_NOT_SUPPORTED\n\t\t}\n\n\t\treturn MIGProfiles.GpuInstanceProfiles[giProfileId], nvml.SUCCESS\n\t}\n\n\td.GetGpuInstancePossiblePlacementsFunc = func(info *nvml.GpuInstanceProfileInfo) ([]nvml.GpuInstancePlacement, nvml.Return) {\n\t\treturn MIGPlacements.GpuInstancePossiblePlacements[int(info.Id)], nvml.SUCCESS\n\t}\n\n\td.CreateGpuInstanceFunc = func(info *nvml.GpuInstanceProfileInfo) (nvml.GpuInstance, nvml.Return) {\n\t\td.Lock()\n\t\tdefer d.Unlock()\n\t\tgiInfo := nvml.GpuInstanceInfo{\n\t\t\tDevice:    d,\n\t\t\tId:        d.GpuInstanceCounter,\n\t\t\tProfileId: info.Id,\n\t\t}\n\t\td.GpuInstanceCounter++\n\t\tgi := NewGpuInstance(giInfo)\n\t\td.GpuInstances[gi] = struct{}{}\n\t\treturn gi, nvml.SUCCESS\n\t}\n\n\td.CreateGpuInstanceWithPlacementFunc = func(info *nvml.GpuInstanceProfileInfo, placement *nvml.GpuInstancePlacement) (nvml.GpuInstance, nvml.Return) {\n\t\td.Lock()\n\t\tdefer d.Unlock()\n\t\tgiInfo := nvml.GpuInstanceInfo{\n\t\t\tDevice:    d,\n\t\t\tId:        d.GpuInstanceCounter,\n\t\t\tProfileId: info.Id,\n\t\t\tPlacement: *placement,\n\t\t}\n\t\td.GpuInstanceCounter++\n\t\tgi := NewGpuInstance(giInfo)\n\t\td.GpuInstances[gi] = struct{}{}\n\t\treturn gi, nvml.SUCCESS\n\t}\n\n\td.GetGpuInstancesFunc = func(info *nvml.GpuInstanceProfileInfo) ([]nvml.GpuInstance, nvml.Return) {\n\t\td.RLock()\n\t\tdefer d.RUnlock()\n\t\tvar gis []nvml.GpuInstance\n\t\tfor gi := range d.GpuInstances {\n\t\t\tif gi.Info.ProfileId == info.Id {\n\t\t\t\tgis = append(gis, gi)\n\t\t\t}\n\t\t}\n\t\treturn gis, nvml.SUCCESS\n\t}\n}\n\nfunc (gi *GpuInstance) setMockFuncs() {\n\tgi.GetInfoFunc = func() (nvml.GpuInstanceInfo, nvml.Return) {\n\t\treturn gi.Info, nvml.SUCCESS\n\t}\n\n\tgi.GetComputeInstanceProfileInfoFunc = func(ciProfileId int, ciEngProfileId int) (nvml.ComputeInstanceProfileInfo, nvml.Return) {\n\t\tif ciProfileId < 0 || ciProfileId >= nvml.COMPUTE_INSTANCE_PROFILE_COUNT {\n\t\t\treturn nvml.ComputeInstanceProfileInfo{}, nvml.ERROR_INVALID_ARGUMENT\n\t\t}\n\n\t\tif ciEngProfileId != nvml.COMPUTE_INSTANCE_ENGINE_PROFILE_SHARED {\n\t\t\treturn nvml.ComputeInstanceProfileInfo{}, nvml.ERROR_NOT_SUPPORTED\n\t\t}\n\n\t\tgiProfileId := int(gi.Info.ProfileId)\n\n\t\tif _, exists := MIGProfiles.ComputeInstanceProfiles[giProfileId]; !exists {\n\t\t\treturn nvml.ComputeInstanceProfileInfo{}, nvml.ERROR_NOT_SUPPORTED\n\t\t}\n\n\t\tif _, exists := MIGProfiles.ComputeInstanceProfiles[giProfileId][ciProfileId]; !exists {\n\t\t\treturn nvml.ComputeInstanceProfileInfo{}, nvml.ERROR_NOT_SUPPORTED\n\t\t}\n\n\t\treturn MIGProfiles.ComputeInstanceProfiles[giProfileId][ciProfileId], nvml.SUCCESS\n\t}\n\n\tgi.GetComputeInstancePossiblePlacementsFunc = func(info *nvml.ComputeInstanceProfileInfo) ([]nvml.ComputeInstancePlacement, nvml.Return) {\n\t\treturn MIGPlacements.ComputeInstancePossiblePlacements[int(gi.Info.Id)][int(info.Id)], nvml.SUCCESS\n\t}\n\n\tgi.CreateComputeInstanceFunc = func(info *nvml.ComputeInstanceProfileInfo) (nvml.ComputeInstance, nvml.Return) {\n\t\tgi.Lock()\n\t\tdefer gi.Unlock()\n\t\tciInfo := nvml.ComputeInstanceInfo{\n\t\t\tDevice:      gi.Info.Device,\n\t\t\tGpuInstance: gi,\n\t\t\tId:          gi.ComputeInstanceCounter,\n\t\t\tProfileId:   info.Id,\n\t\t}\n\t\tgi.ComputeInstanceCounter++\n\t\tci := NewComputeInstance(ciInfo)\n\t\tgi.ComputeInstances[ci] = struct{}{}\n\t\treturn ci, nvml.SUCCESS\n\t}\n\n\tgi.GetComputeInstancesFunc = func(info *nvml.ComputeInstanceProfileInfo) ([]nvml.ComputeInstance, nvml.Return) {\n\t\tgi.RLock()\n\t\tdefer gi.RUnlock()\n\t\tvar cis []nvml.ComputeInstance\n\t\tfor ci := range gi.ComputeInstances {\n\t\t\tif ci.Info.ProfileId == info.Id {\n\t\t\t\tcis = append(cis, ci)\n\t\t\t}\n\t\t}\n\t\treturn cis, nvml.SUCCESS\n\t}\n\n\tgi.DestroyFunc = func() nvml.Return {\n\t\td := gi.Info.Device.(*Device)\n\t\td.Lock()\n\t\tdefer d.Unlock()\n\t\tdelete(d.GpuInstances, gi)\n\t\treturn nvml.SUCCESS\n\t}\n}\n\nfunc (ci *ComputeInstance) setMockFuncs() {\n\tci.GetInfoFunc = func() (nvml.ComputeInstanceInfo, nvml.Return) {\n\t\treturn ci.Info, nvml.SUCCESS\n\t}\n\n\tci.DestroyFunc = func() nvml.Return {\n\t\tgi := ci.Info.GpuInstance.(*GpuInstance)\n\t\tgi.Lock()\n\t\tdefer gi.Unlock()\n\t\tdelete(gi.ComputeInstances, ci)\n\t\treturn nvml.SUCCESS\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvml/pkg/nvml/mock/dgxa100/mig-profile.go",
    "content": "/*\n * Copyright (c) 2024, NVIDIA CORPORATION.  All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage dgxa100\n\nimport (\n\t\"github.com/NVIDIA/go-nvml/pkg/nvml\"\n)\n\n// MIGProfiles holds the profile information for GIs and CIs in this mock server.\n// We should consider auto-generating this object in the future.\nvar MIGProfiles = struct {\n\tGpuInstanceProfiles     map[int]nvml.GpuInstanceProfileInfo\n\tComputeInstanceProfiles map[int]map[int]nvml.ComputeInstanceProfileInfo\n}{\n\tGpuInstanceProfiles: map[int]nvml.GpuInstanceProfileInfo{\n\t\tnvml.GPU_INSTANCE_PROFILE_1_SLICE: {\n\t\t\tId:                  nvml.GPU_INSTANCE_PROFILE_1_SLICE,\n\t\t\tIsP2pSupported:      0,\n\t\t\tSliceCount:          1,\n\t\t\tInstanceCount:       7,\n\t\t\tMultiprocessorCount: 14,\n\t\t\tCopyEngineCount:     1,\n\t\t\tDecoderCount:        0,\n\t\t\tEncoderCount:        0,\n\t\t\tJpegCount:           0,\n\t\t\tOfaCount:            0,\n\t\t\tMemorySizeMB:        4864,\n\t\t},\n\t\tnvml.GPU_INSTANCE_PROFILE_1_SLICE_REV1: {\n\t\t\tId:                  nvml.GPU_INSTANCE_PROFILE_1_SLICE_REV1,\n\t\t\tIsP2pSupported:      0,\n\t\t\tSliceCount:          1,\n\t\t\tInstanceCount:       1,\n\t\t\tMultiprocessorCount: 14,\n\t\t\tCopyEngineCount:     1,\n\t\t\tDecoderCount:        1,\n\t\t\tEncoderCount:        0,\n\t\t\tJpegCount:           1,\n\t\t\tOfaCount:            1,\n\t\t\tMemorySizeMB:        4864,\n\t\t},\n\t\tnvml.GPU_INSTANCE_PROFILE_1_SLICE_REV2: {\n\t\t\tId:                  nvml.GPU_INSTANCE_PROFILE_1_SLICE_REV2,\n\t\t\tIsP2pSupported:      0,\n\t\t\tSliceCount:          1,\n\t\t\tInstanceCount:       4,\n\t\t\tMultiprocessorCount: 14,\n\t\t\tCopyEngineCount:     1,\n\t\t\tDecoderCount:        1,\n\t\t\tEncoderCount:        0,\n\t\t\tJpegCount:           0,\n\t\t\tOfaCount:            0,\n\t\t\tMemorySizeMB:        9856,\n\t\t},\n\t\tnvml.GPU_INSTANCE_PROFILE_2_SLICE: {\n\t\t\tId:                  nvml.GPU_INSTANCE_PROFILE_2_SLICE,\n\t\t\tIsP2pSupported:      0,\n\t\t\tSliceCount:          2,\n\t\t\tInstanceCount:       3,\n\t\t\tMultiprocessorCount: 28,\n\t\t\tCopyEngineCount:     2,\n\t\t\tDecoderCount:        1,\n\t\t\tEncoderCount:        0,\n\t\t\tJpegCount:           0,\n\t\t\tOfaCount:            0,\n\t\t\tMemorySizeMB:        9856,\n\t\t},\n\t\tnvml.GPU_INSTANCE_PROFILE_3_SLICE: {\n\t\t\tId:                  nvml.GPU_INSTANCE_PROFILE_3_SLICE,\n\t\t\tIsP2pSupported:      0,\n\t\t\tSliceCount:          3,\n\t\t\tInstanceCount:       2,\n\t\t\tMultiprocessorCount: 42,\n\t\t\tCopyEngineCount:     3,\n\t\t\tDecoderCount:        2,\n\t\t\tEncoderCount:        0,\n\t\t\tJpegCount:           0,\n\t\t\tOfaCount:            0,\n\t\t\tMemorySizeMB:        19968,\n\t\t},\n\t\tnvml.GPU_INSTANCE_PROFILE_4_SLICE: {\n\t\t\tId:                  nvml.GPU_INSTANCE_PROFILE_4_SLICE,\n\t\t\tIsP2pSupported:      0,\n\t\t\tSliceCount:          4,\n\t\t\tInstanceCount:       1,\n\t\t\tMultiprocessorCount: 56,\n\t\t\tCopyEngineCount:     4,\n\t\t\tDecoderCount:        2,\n\t\t\tEncoderCount:        0,\n\t\t\tJpegCount:           0,\n\t\t\tOfaCount:            0,\n\t\t\tMemorySizeMB:        19968,\n\t\t},\n\t\tnvml.GPU_INSTANCE_PROFILE_7_SLICE: {\n\t\t\tId:                  nvml.GPU_INSTANCE_PROFILE_7_SLICE,\n\t\t\tIsP2pSupported:      0,\n\t\t\tSliceCount:          7,\n\t\t\tInstanceCount:       1,\n\t\t\tMultiprocessorCount: 98,\n\t\t\tCopyEngineCount:     7,\n\t\t\tDecoderCount:        5,\n\t\t\tEncoderCount:        0,\n\t\t\tJpegCount:           1,\n\t\t\tOfaCount:            1,\n\t\t\tMemorySizeMB:        40192,\n\t\t},\n\t},\n\tComputeInstanceProfiles: map[int]map[int]nvml.ComputeInstanceProfileInfo{\n\t\tnvml.GPU_INSTANCE_PROFILE_1_SLICE: {\n\t\t\tnvml.COMPUTE_INSTANCE_PROFILE_1_SLICE: {\n\t\t\t\tId:                    nvml.COMPUTE_INSTANCE_PROFILE_1_SLICE,\n\t\t\t\tSliceCount:            1,\n\t\t\t\tInstanceCount:         1,\n\t\t\t\tMultiprocessorCount:   14,\n\t\t\t\tSharedCopyEngineCount: 1,\n\t\t\t\tSharedDecoderCount:    0,\n\t\t\t\tSharedEncoderCount:    0,\n\t\t\t\tSharedJpegCount:       0,\n\t\t\t\tSharedOfaCount:        0,\n\t\t\t},\n\t\t},\n\t\tnvml.GPU_INSTANCE_PROFILE_1_SLICE_REV1: {\n\t\t\tnvml.COMPUTE_INSTANCE_PROFILE_1_SLICE: {\n\t\t\t\tId:                    nvml.COMPUTE_INSTANCE_PROFILE_1_SLICE,\n\t\t\t\tSliceCount:            1,\n\t\t\t\tInstanceCount:         1,\n\t\t\t\tMultiprocessorCount:   14,\n\t\t\t\tSharedCopyEngineCount: 1,\n\t\t\t\tSharedDecoderCount:    1,\n\t\t\t\tSharedEncoderCount:    0,\n\t\t\t\tSharedJpegCount:       1,\n\t\t\t\tSharedOfaCount:        1,\n\t\t\t},\n\t\t},\n\t\tnvml.GPU_INSTANCE_PROFILE_1_SLICE_REV2: {\n\t\t\tnvml.COMPUTE_INSTANCE_PROFILE_1_SLICE: {\n\t\t\t\tId:                    nvml.COMPUTE_INSTANCE_PROFILE_1_SLICE,\n\t\t\t\tSliceCount:            1,\n\t\t\t\tInstanceCount:         1,\n\t\t\t\tMultiprocessorCount:   14,\n\t\t\t\tSharedCopyEngineCount: 1,\n\t\t\t\tSharedDecoderCount:    1,\n\t\t\t\tSharedEncoderCount:    0,\n\t\t\t\tSharedJpegCount:       0,\n\t\t\t\tSharedOfaCount:        0,\n\t\t\t},\n\t\t},\n\t\tnvml.GPU_INSTANCE_PROFILE_2_SLICE: {\n\t\t\tnvml.COMPUTE_INSTANCE_PROFILE_1_SLICE: {\n\t\t\t\tId:                    nvml.COMPUTE_INSTANCE_PROFILE_1_SLICE,\n\t\t\t\tSliceCount:            1,\n\t\t\t\tInstanceCount:         2,\n\t\t\t\tMultiprocessorCount:   14,\n\t\t\t\tSharedCopyEngineCount: 2,\n\t\t\t\tSharedDecoderCount:    1,\n\t\t\t\tSharedEncoderCount:    0,\n\t\t\t\tSharedJpegCount:       0,\n\t\t\t\tSharedOfaCount:        0,\n\t\t\t},\n\t\t\tnvml.COMPUTE_INSTANCE_PROFILE_2_SLICE: {\n\t\t\t\tId:                    nvml.COMPUTE_INSTANCE_PROFILE_2_SLICE,\n\t\t\t\tSliceCount:            2,\n\t\t\t\tInstanceCount:         1,\n\t\t\t\tMultiprocessorCount:   28,\n\t\t\t\tSharedCopyEngineCount: 2,\n\t\t\t\tSharedDecoderCount:    1,\n\t\t\t\tSharedEncoderCount:    0,\n\t\t\t\tSharedJpegCount:       0,\n\t\t\t\tSharedOfaCount:        0,\n\t\t\t},\n\t\t},\n\t\tnvml.GPU_INSTANCE_PROFILE_3_SLICE: {\n\t\t\tnvml.COMPUTE_INSTANCE_PROFILE_1_SLICE: {\n\t\t\t\tId:                    nvml.COMPUTE_INSTANCE_PROFILE_1_SLICE,\n\t\t\t\tSliceCount:            1,\n\t\t\t\tInstanceCount:         3,\n\t\t\t\tMultiprocessorCount:   14,\n\t\t\t\tSharedCopyEngineCount: 3,\n\t\t\t\tSharedDecoderCount:    2,\n\t\t\t\tSharedEncoderCount:    0,\n\t\t\t\tSharedJpegCount:       0,\n\t\t\t\tSharedOfaCount:        0,\n\t\t\t},\n\t\t\tnvml.COMPUTE_INSTANCE_PROFILE_2_SLICE: {\n\t\t\t\tId:                    nvml.COMPUTE_INSTANCE_PROFILE_2_SLICE,\n\t\t\t\tSliceCount:            2,\n\t\t\t\tInstanceCount:         1,\n\t\t\t\tMultiprocessorCount:   28,\n\t\t\t\tSharedCopyEngineCount: 3,\n\t\t\t\tSharedDecoderCount:    2,\n\t\t\t\tSharedEncoderCount:    0,\n\t\t\t\tSharedJpegCount:       0,\n\t\t\t\tSharedOfaCount:        0,\n\t\t\t},\n\t\t\tnvml.COMPUTE_INSTANCE_PROFILE_3_SLICE: {\n\t\t\t\tId:                    nvml.COMPUTE_INSTANCE_PROFILE_3_SLICE,\n\t\t\t\tSliceCount:            3,\n\t\t\t\tInstanceCount:         1,\n\t\t\t\tMultiprocessorCount:   42,\n\t\t\t\tSharedCopyEngineCount: 3,\n\t\t\t\tSharedDecoderCount:    2,\n\t\t\t\tSharedEncoderCount:    0,\n\t\t\t\tSharedJpegCount:       0,\n\t\t\t\tSharedOfaCount:        0,\n\t\t\t},\n\t\t},\n\t\tnvml.GPU_INSTANCE_PROFILE_4_SLICE: {\n\t\t\tnvml.COMPUTE_INSTANCE_PROFILE_1_SLICE: {\n\t\t\t\tId:                    nvml.COMPUTE_INSTANCE_PROFILE_1_SLICE,\n\t\t\t\tSliceCount:            1,\n\t\t\t\tInstanceCount:         4,\n\t\t\t\tMultiprocessorCount:   14,\n\t\t\t\tSharedCopyEngineCount: 4,\n\t\t\t\tSharedDecoderCount:    2,\n\t\t\t\tSharedEncoderCount:    0,\n\t\t\t\tSharedJpegCount:       0,\n\t\t\t\tSharedOfaCount:        0,\n\t\t\t},\n\t\t\tnvml.COMPUTE_INSTANCE_PROFILE_2_SLICE: {\n\t\t\t\tId:                    nvml.COMPUTE_INSTANCE_PROFILE_2_SLICE,\n\t\t\t\tSliceCount:            2,\n\t\t\t\tInstanceCount:         2,\n\t\t\t\tMultiprocessorCount:   28,\n\t\t\t\tSharedCopyEngineCount: 4,\n\t\t\t\tSharedDecoderCount:    2,\n\t\t\t\tSharedEncoderCount:    0,\n\t\t\t\tSharedJpegCount:       0,\n\t\t\t\tSharedOfaCount:        0,\n\t\t\t},\n\t\t\tnvml.COMPUTE_INSTANCE_PROFILE_4_SLICE: {\n\t\t\t\tId:                    nvml.COMPUTE_INSTANCE_PROFILE_4_SLICE,\n\t\t\t\tSliceCount:            4,\n\t\t\t\tInstanceCount:         1,\n\t\t\t\tMultiprocessorCount:   56,\n\t\t\t\tSharedCopyEngineCount: 4,\n\t\t\t\tSharedDecoderCount:    2,\n\t\t\t\tSharedEncoderCount:    0,\n\t\t\t\tSharedJpegCount:       0,\n\t\t\t\tSharedOfaCount:        0,\n\t\t\t},\n\t\t},\n\t\tnvml.GPU_INSTANCE_PROFILE_7_SLICE: {\n\t\t\tnvml.COMPUTE_INSTANCE_PROFILE_1_SLICE: {\n\t\t\t\tId:                    nvml.COMPUTE_INSTANCE_PROFILE_1_SLICE,\n\t\t\t\tSliceCount:            1,\n\t\t\t\tInstanceCount:         7,\n\t\t\t\tMultiprocessorCount:   14,\n\t\t\t\tSharedCopyEngineCount: 7,\n\t\t\t\tSharedDecoderCount:    5,\n\t\t\t\tSharedEncoderCount:    0,\n\t\t\t\tSharedJpegCount:       1,\n\t\t\t\tSharedOfaCount:        1,\n\t\t\t},\n\t\t\tnvml.COMPUTE_INSTANCE_PROFILE_2_SLICE: {\n\t\t\t\tId:                    nvml.COMPUTE_INSTANCE_PROFILE_2_SLICE,\n\t\t\t\tSliceCount:            2,\n\t\t\t\tInstanceCount:         3,\n\t\t\t\tMultiprocessorCount:   28,\n\t\t\t\tSharedCopyEngineCount: 7,\n\t\t\t\tSharedDecoderCount:    5,\n\t\t\t\tSharedEncoderCount:    0,\n\t\t\t\tSharedJpegCount:       1,\n\t\t\t\tSharedOfaCount:        1,\n\t\t\t},\n\t\t\tnvml.COMPUTE_INSTANCE_PROFILE_3_SLICE: {\n\t\t\t\tId:                    nvml.COMPUTE_INSTANCE_PROFILE_3_SLICE,\n\t\t\t\tSliceCount:            3,\n\t\t\t\tInstanceCount:         2,\n\t\t\t\tMultiprocessorCount:   42,\n\t\t\t\tSharedCopyEngineCount: 7,\n\t\t\t\tSharedDecoderCount:    5,\n\t\t\t\tSharedEncoderCount:    0,\n\t\t\t\tSharedJpegCount:       1,\n\t\t\t\tSharedOfaCount:        1,\n\t\t\t},\n\t\t\tnvml.COMPUTE_INSTANCE_PROFILE_4_SLICE: {\n\t\t\t\tId:                    nvml.COMPUTE_INSTANCE_PROFILE_4_SLICE,\n\t\t\t\tSliceCount:            4,\n\t\t\t\tInstanceCount:         1,\n\t\t\t\tMultiprocessorCount:   56,\n\t\t\t\tSharedCopyEngineCount: 7,\n\t\t\t\tSharedDecoderCount:    5,\n\t\t\t\tSharedEncoderCount:    0,\n\t\t\t\tSharedJpegCount:       1,\n\t\t\t\tSharedOfaCount:        1,\n\t\t\t},\n\t\t\tnvml.COMPUTE_INSTANCE_PROFILE_7_SLICE: {\n\t\t\t\tId:                    nvml.COMPUTE_INSTANCE_PROFILE_7_SLICE,\n\t\t\t\tSliceCount:            7,\n\t\t\t\tInstanceCount:         1,\n\t\t\t\tMultiprocessorCount:   98,\n\t\t\t\tSharedCopyEngineCount: 7,\n\t\t\t\tSharedDecoderCount:    5,\n\t\t\t\tSharedEncoderCount:    0,\n\t\t\t\tSharedJpegCount:       1,\n\t\t\t\tSharedOfaCount:        1,\n\t\t\t},\n\t\t},\n\t},\n}\n\n// MIGPlacements holds the placement information for GIs and CIs in this mock server.\n// We should consider auto-generating this object in the future.\nvar MIGPlacements = struct {\n\tGpuInstancePossiblePlacements     map[int][]nvml.GpuInstancePlacement\n\tComputeInstancePossiblePlacements map[int]map[int][]nvml.ComputeInstancePlacement\n}{\n\tGpuInstancePossiblePlacements: map[int][]nvml.GpuInstancePlacement{\n\t\tnvml.GPU_INSTANCE_PROFILE_1_SLICE: {\n\t\t\t{\n\t\t\t\tStart: 0,\n\t\t\t\tSize:  1,\n\t\t\t},\n\t\t\t{\n\t\t\t\tStart: 1,\n\t\t\t\tSize:  1,\n\t\t\t},\n\t\t\t{\n\t\t\t\tStart: 2,\n\t\t\t\tSize:  1,\n\t\t\t},\n\t\t\t{\n\t\t\t\tStart: 3,\n\t\t\t\tSize:  1,\n\t\t\t},\n\t\t\t{\n\t\t\t\tStart: 4,\n\t\t\t\tSize:  1,\n\t\t\t},\n\t\t\t{\n\t\t\t\tStart: 5,\n\t\t\t\tSize:  1,\n\t\t\t},\n\t\t\t{\n\t\t\t\tStart: 6,\n\t\t\t\tSize:  1,\n\t\t\t},\n\t\t},\n\t\tnvml.GPU_INSTANCE_PROFILE_1_SLICE_REV1: {\n\t\t\t{\n\t\t\t\tStart: 0,\n\t\t\t\tSize:  1,\n\t\t\t},\n\t\t\t{\n\t\t\t\tStart: 1,\n\t\t\t\tSize:  1,\n\t\t\t},\n\t\t\t{\n\t\t\t\tStart: 2,\n\t\t\t\tSize:  1,\n\t\t\t},\n\t\t\t{\n\t\t\t\tStart: 3,\n\t\t\t\tSize:  1,\n\t\t\t},\n\t\t\t{\n\t\t\t\tStart: 4,\n\t\t\t\tSize:  1,\n\t\t\t},\n\t\t\t{\n\t\t\t\tStart: 5,\n\t\t\t\tSize:  1,\n\t\t\t},\n\t\t\t{\n\t\t\t\tStart: 6,\n\t\t\t\tSize:  1,\n\t\t\t},\n\t\t},\n\t\tnvml.GPU_INSTANCE_PROFILE_1_SLICE_REV2: {\n\t\t\t{\n\t\t\t\tStart: 0,\n\t\t\t\tSize:  2,\n\t\t\t},\n\t\t\t{\n\t\t\t\tStart: 2,\n\t\t\t\tSize:  2,\n\t\t\t},\n\t\t\t{\n\t\t\t\tStart: 4,\n\t\t\t\tSize:  2,\n\t\t\t},\n\t\t\t{\n\t\t\t\tStart: 6,\n\t\t\t\tSize:  2,\n\t\t\t},\n\t\t},\n\t\tnvml.GPU_INSTANCE_PROFILE_2_SLICE: {\n\t\t\t{\n\t\t\t\tStart: 0,\n\t\t\t\tSize:  2,\n\t\t\t},\n\t\t\t{\n\t\t\t\tStart: 2,\n\t\t\t\tSize:  2,\n\t\t\t},\n\t\t\t{\n\t\t\t\tStart: 4,\n\t\t\t\tSize:  2,\n\t\t\t},\n\t\t},\n\t\tnvml.GPU_INSTANCE_PROFILE_3_SLICE: {\n\t\t\t{\n\t\t\t\tStart: 0,\n\t\t\t\tSize:  4,\n\t\t\t},\n\t\t\t{\n\t\t\t\tStart: 4,\n\t\t\t\tSize:  4,\n\t\t\t},\n\t\t},\n\t\tnvml.GPU_INSTANCE_PROFILE_4_SLICE: {\n\t\t\t{\n\t\t\t\tStart: 0,\n\t\t\t\tSize:  4,\n\t\t\t},\n\t\t},\n\t\tnvml.GPU_INSTANCE_PROFILE_7_SLICE: {\n\t\t\t{\n\t\t\t\tStart: 0,\n\t\t\t\tSize:  8,\n\t\t\t},\n\t\t},\n\t},\n\t// TODO: Fill out ComputeInstancePossiblePlacements\n\tComputeInstancePossiblePlacements: map[int]map[int][]nvml.ComputeInstancePlacement{\n\t\tnvml.GPU_INSTANCE_PROFILE_1_SLICE: {\n\t\t\tnvml.COMPUTE_INSTANCE_PROFILE_1_SLICE: {},\n\t\t},\n\t\tnvml.GPU_INSTANCE_PROFILE_1_SLICE_REV1: {\n\t\t\tnvml.COMPUTE_INSTANCE_PROFILE_1_SLICE: {},\n\t\t},\n\t\tnvml.GPU_INSTANCE_PROFILE_1_SLICE_REV2: {\n\t\t\tnvml.COMPUTE_INSTANCE_PROFILE_1_SLICE: {},\n\t\t},\n\t\tnvml.GPU_INSTANCE_PROFILE_2_SLICE: {\n\t\t\tnvml.COMPUTE_INSTANCE_PROFILE_1_SLICE: {},\n\t\t\tnvml.COMPUTE_INSTANCE_PROFILE_2_SLICE: {},\n\t\t},\n\t\tnvml.GPU_INSTANCE_PROFILE_3_SLICE: {\n\t\t\tnvml.COMPUTE_INSTANCE_PROFILE_1_SLICE: {},\n\t\t\tnvml.COMPUTE_INSTANCE_PROFILE_2_SLICE: {},\n\t\t\tnvml.COMPUTE_INSTANCE_PROFILE_3_SLICE: {},\n\t\t},\n\t\tnvml.GPU_INSTANCE_PROFILE_4_SLICE: {\n\t\t\tnvml.COMPUTE_INSTANCE_PROFILE_1_SLICE: {},\n\t\t\tnvml.COMPUTE_INSTANCE_PROFILE_2_SLICE: {},\n\t\t\tnvml.COMPUTE_INSTANCE_PROFILE_4_SLICE: {},\n\t\t},\n\t\tnvml.GPU_INSTANCE_PROFILE_7_SLICE: {\n\t\t\tnvml.COMPUTE_INSTANCE_PROFILE_1_SLICE: {},\n\t\t\tnvml.COMPUTE_INSTANCE_PROFILE_2_SLICE: {},\n\t\t\tnvml.COMPUTE_INSTANCE_PROFILE_3_SLICE: {},\n\t\t\tnvml.COMPUTE_INSTANCE_PROFILE_4_SLICE: {},\n\t\t\tnvml.COMPUTE_INSTANCE_PROFILE_7_SLICE: {},\n\t\t},\n\t},\n}\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvml/pkg/nvml/mock/eventset.go",
    "content": "// Code generated by moq; DO NOT EDIT.\n// github.com/matryer/moq\n\npackage mock\n\nimport (\n\t\"github.com/NVIDIA/go-nvml/pkg/nvml\"\n\t\"sync\"\n)\n\n// Ensure, that EventSet does implement nvml.EventSet.\n// If this is not the case, regenerate this file with moq.\nvar _ nvml.EventSet = &EventSet{}\n\n// EventSet is a mock implementation of nvml.EventSet.\n//\n//\tfunc TestSomethingThatUsesEventSet(t *testing.T) {\n//\n//\t\t// make and configure a mocked nvml.EventSet\n//\t\tmockedEventSet := &EventSet{\n//\t\t\tFreeFunc: func() nvml.Return {\n//\t\t\t\tpanic(\"mock out the Free method\")\n//\t\t\t},\n//\t\t\tWaitFunc: func(v uint32) (nvml.EventData, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the Wait method\")\n//\t\t\t},\n//\t\t}\n//\n//\t\t// use mockedEventSet in code that requires nvml.EventSet\n//\t\t// and then make assertions.\n//\n//\t}\ntype EventSet struct {\n\t// FreeFunc mocks the Free method.\n\tFreeFunc func() nvml.Return\n\n\t// WaitFunc mocks the Wait method.\n\tWaitFunc func(v uint32) (nvml.EventData, nvml.Return)\n\n\t// calls tracks calls to the methods.\n\tcalls struct {\n\t\t// Free holds details about calls to the Free method.\n\t\tFree []struct {\n\t\t}\n\t\t// Wait holds details about calls to the Wait method.\n\t\tWait []struct {\n\t\t\t// V is the v argument value.\n\t\t\tV uint32\n\t\t}\n\t}\n\tlockFree sync.RWMutex\n\tlockWait sync.RWMutex\n}\n\n// Free calls FreeFunc.\nfunc (mock *EventSet) Free() nvml.Return {\n\tif mock.FreeFunc == nil {\n\t\tpanic(\"EventSet.FreeFunc: method is nil but EventSet.Free was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockFree.Lock()\n\tmock.calls.Free = append(mock.calls.Free, callInfo)\n\tmock.lockFree.Unlock()\n\treturn mock.FreeFunc()\n}\n\n// FreeCalls gets all the calls that were made to Free.\n// Check the length with:\n//\n//\tlen(mockedEventSet.FreeCalls())\nfunc (mock *EventSet) FreeCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockFree.RLock()\n\tcalls = mock.calls.Free\n\tmock.lockFree.RUnlock()\n\treturn calls\n}\n\n// Wait calls WaitFunc.\nfunc (mock *EventSet) Wait(v uint32) (nvml.EventData, nvml.Return) {\n\tif mock.WaitFunc == nil {\n\t\tpanic(\"EventSet.WaitFunc: method is nil but EventSet.Wait was just called\")\n\t}\n\tcallInfo := struct {\n\t\tV uint32\n\t}{\n\t\tV: v,\n\t}\n\tmock.lockWait.Lock()\n\tmock.calls.Wait = append(mock.calls.Wait, callInfo)\n\tmock.lockWait.Unlock()\n\treturn mock.WaitFunc(v)\n}\n\n// WaitCalls gets all the calls that were made to Wait.\n// Check the length with:\n//\n//\tlen(mockedEventSet.WaitCalls())\nfunc (mock *EventSet) WaitCalls() []struct {\n\tV uint32\n} {\n\tvar calls []struct {\n\t\tV uint32\n\t}\n\tmock.lockWait.RLock()\n\tcalls = mock.calls.Wait\n\tmock.lockWait.RUnlock()\n\treturn calls\n}\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvml/pkg/nvml/mock/extendedinterface.go",
    "content": "// Code generated by moq; DO NOT EDIT.\n// github.com/matryer/moq\n\npackage mock\n\nimport (\n\t\"github.com/NVIDIA/go-nvml/pkg/nvml\"\n\t\"sync\"\n)\n\n// Ensure, that ExtendedInterface does implement nvml.ExtendedInterface.\n// If this is not the case, regenerate this file with moq.\nvar _ nvml.ExtendedInterface = &ExtendedInterface{}\n\n// ExtendedInterface is a mock implementation of nvml.ExtendedInterface.\n//\n//\tfunc TestSomethingThatUsesExtendedInterface(t *testing.T) {\n//\n//\t\t// make and configure a mocked nvml.ExtendedInterface\n//\t\tmockedExtendedInterface := &ExtendedInterface{\n//\t\t\tLookupSymbolFunc: func(s string) error {\n//\t\t\t\tpanic(\"mock out the LookupSymbol method\")\n//\t\t\t},\n//\t\t}\n//\n//\t\t// use mockedExtendedInterface in code that requires nvml.ExtendedInterface\n//\t\t// and then make assertions.\n//\n//\t}\ntype ExtendedInterface struct {\n\t// LookupSymbolFunc mocks the LookupSymbol method.\n\tLookupSymbolFunc func(s string) error\n\n\t// calls tracks calls to the methods.\n\tcalls struct {\n\t\t// LookupSymbol holds details about calls to the LookupSymbol method.\n\t\tLookupSymbol []struct {\n\t\t\t// S is the s argument value.\n\t\t\tS string\n\t\t}\n\t}\n\tlockLookupSymbol sync.RWMutex\n}\n\n// LookupSymbol calls LookupSymbolFunc.\nfunc (mock *ExtendedInterface) LookupSymbol(s string) error {\n\tif mock.LookupSymbolFunc == nil {\n\t\tpanic(\"ExtendedInterface.LookupSymbolFunc: method is nil but ExtendedInterface.LookupSymbol was just called\")\n\t}\n\tcallInfo := struct {\n\t\tS string\n\t}{\n\t\tS: s,\n\t}\n\tmock.lockLookupSymbol.Lock()\n\tmock.calls.LookupSymbol = append(mock.calls.LookupSymbol, callInfo)\n\tmock.lockLookupSymbol.Unlock()\n\treturn mock.LookupSymbolFunc(s)\n}\n\n// LookupSymbolCalls gets all the calls that were made to LookupSymbol.\n// Check the length with:\n//\n//\tlen(mockedExtendedInterface.LookupSymbolCalls())\nfunc (mock *ExtendedInterface) LookupSymbolCalls() []struct {\n\tS string\n} {\n\tvar calls []struct {\n\t\tS string\n\t}\n\tmock.lockLookupSymbol.RLock()\n\tcalls = mock.calls.LookupSymbol\n\tmock.lockLookupSymbol.RUnlock()\n\treturn calls\n}\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvml/pkg/nvml/mock/gpmsample.go",
    "content": "// Code generated by moq; DO NOT EDIT.\n// github.com/matryer/moq\n\npackage mock\n\nimport (\n\t\"github.com/NVIDIA/go-nvml/pkg/nvml\"\n\t\"sync\"\n)\n\n// Ensure, that GpmSample does implement nvml.GpmSample.\n// If this is not the case, regenerate this file with moq.\nvar _ nvml.GpmSample = &GpmSample{}\n\n// GpmSample is a mock implementation of nvml.GpmSample.\n//\n//\tfunc TestSomethingThatUsesGpmSample(t *testing.T) {\n//\n//\t\t// make and configure a mocked nvml.GpmSample\n//\t\tmockedGpmSample := &GpmSample{\n//\t\t\tFreeFunc: func() nvml.Return {\n//\t\t\t\tpanic(\"mock out the Free method\")\n//\t\t\t},\n//\t\t\tGetFunc: func(device nvml.Device) nvml.Return {\n//\t\t\t\tpanic(\"mock out the Get method\")\n//\t\t\t},\n//\t\t\tMigGetFunc: func(device nvml.Device, n int) nvml.Return {\n//\t\t\t\tpanic(\"mock out the MigGet method\")\n//\t\t\t},\n//\t\t}\n//\n//\t\t// use mockedGpmSample in code that requires nvml.GpmSample\n//\t\t// and then make assertions.\n//\n//\t}\ntype GpmSample struct {\n\t// FreeFunc mocks the Free method.\n\tFreeFunc func() nvml.Return\n\n\t// GetFunc mocks the Get method.\n\tGetFunc func(device nvml.Device) nvml.Return\n\n\t// MigGetFunc mocks the MigGet method.\n\tMigGetFunc func(device nvml.Device, n int) nvml.Return\n\n\t// calls tracks calls to the methods.\n\tcalls struct {\n\t\t// Free holds details about calls to the Free method.\n\t\tFree []struct {\n\t\t}\n\t\t// Get holds details about calls to the Get method.\n\t\tGet []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// MigGet holds details about calls to the MigGet method.\n\t\tMigGet []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t}\n\t}\n\tlockFree   sync.RWMutex\n\tlockGet    sync.RWMutex\n\tlockMigGet sync.RWMutex\n}\n\n// Free calls FreeFunc.\nfunc (mock *GpmSample) Free() nvml.Return {\n\tif mock.FreeFunc == nil {\n\t\tpanic(\"GpmSample.FreeFunc: method is nil but GpmSample.Free was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockFree.Lock()\n\tmock.calls.Free = append(mock.calls.Free, callInfo)\n\tmock.lockFree.Unlock()\n\treturn mock.FreeFunc()\n}\n\n// FreeCalls gets all the calls that were made to Free.\n// Check the length with:\n//\n//\tlen(mockedGpmSample.FreeCalls())\nfunc (mock *GpmSample) FreeCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockFree.RLock()\n\tcalls = mock.calls.Free\n\tmock.lockFree.RUnlock()\n\treturn calls\n}\n\n// Get calls GetFunc.\nfunc (mock *GpmSample) Get(device nvml.Device) nvml.Return {\n\tif mock.GetFunc == nil {\n\t\tpanic(\"GpmSample.GetFunc: method is nil but GpmSample.Get was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockGet.Lock()\n\tmock.calls.Get = append(mock.calls.Get, callInfo)\n\tmock.lockGet.Unlock()\n\treturn mock.GetFunc(device)\n}\n\n// GetCalls gets all the calls that were made to Get.\n// Check the length with:\n//\n//\tlen(mockedGpmSample.GetCalls())\nfunc (mock *GpmSample) GetCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockGet.RLock()\n\tcalls = mock.calls.Get\n\tmock.lockGet.RUnlock()\n\treturn calls\n}\n\n// MigGet calls MigGetFunc.\nfunc (mock *GpmSample) MigGet(device nvml.Device, n int) nvml.Return {\n\tif mock.MigGetFunc == nil {\n\t\tpanic(\"GpmSample.MigGetFunc: method is nil but GpmSample.MigGet was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t\tN      int\n\t}{\n\t\tDevice: device,\n\t\tN:      n,\n\t}\n\tmock.lockMigGet.Lock()\n\tmock.calls.MigGet = append(mock.calls.MigGet, callInfo)\n\tmock.lockMigGet.Unlock()\n\treturn mock.MigGetFunc(device, n)\n}\n\n// MigGetCalls gets all the calls that were made to MigGet.\n// Check the length with:\n//\n//\tlen(mockedGpmSample.MigGetCalls())\nfunc (mock *GpmSample) MigGetCalls() []struct {\n\tDevice nvml.Device\n\tN      int\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t\tN      int\n\t}\n\tmock.lockMigGet.RLock()\n\tcalls = mock.calls.MigGet\n\tmock.lockMigGet.RUnlock()\n\treturn calls\n}\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvml/pkg/nvml/mock/gpuinstance.go",
    "content": "// Code generated by moq; DO NOT EDIT.\n// github.com/matryer/moq\n\npackage mock\n\nimport (\n\t\"github.com/NVIDIA/go-nvml/pkg/nvml\"\n\t\"sync\"\n)\n\n// Ensure, that GpuInstance does implement nvml.GpuInstance.\n// If this is not the case, regenerate this file with moq.\nvar _ nvml.GpuInstance = &GpuInstance{}\n\n// GpuInstance is a mock implementation of nvml.GpuInstance.\n//\n//\tfunc TestSomethingThatUsesGpuInstance(t *testing.T) {\n//\n//\t\t// make and configure a mocked nvml.GpuInstance\n//\t\tmockedGpuInstance := &GpuInstance{\n//\t\t\tCreateComputeInstanceFunc: func(computeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo) (nvml.ComputeInstance, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the CreateComputeInstance method\")\n//\t\t\t},\n//\t\t\tCreateComputeInstanceWithPlacementFunc: func(computeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo, computeInstancePlacement *nvml.ComputeInstancePlacement) (nvml.ComputeInstance, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the CreateComputeInstanceWithPlacement method\")\n//\t\t\t},\n//\t\t\tDestroyFunc: func() nvml.Return {\n//\t\t\t\tpanic(\"mock out the Destroy method\")\n//\t\t\t},\n//\t\t\tGetActiveVgpusFunc: func() (nvml.ActiveVgpuInstanceInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetActiveVgpus method\")\n//\t\t\t},\n//\t\t\tGetComputeInstanceByIdFunc: func(n int) (nvml.ComputeInstance, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetComputeInstanceById method\")\n//\t\t\t},\n//\t\t\tGetComputeInstancePossiblePlacementsFunc: func(computeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo) ([]nvml.ComputeInstancePlacement, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetComputeInstancePossiblePlacements method\")\n//\t\t\t},\n//\t\t\tGetComputeInstanceProfileInfoFunc: func(n1 int, n2 int) (nvml.ComputeInstanceProfileInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetComputeInstanceProfileInfo method\")\n//\t\t\t},\n//\t\t\tGetComputeInstanceProfileInfoVFunc: func(n1 int, n2 int) nvml.ComputeInstanceProfileInfoHandler {\n//\t\t\t\tpanic(\"mock out the GetComputeInstanceProfileInfoV method\")\n//\t\t\t},\n//\t\t\tGetComputeInstanceRemainingCapacityFunc: func(computeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo) (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetComputeInstanceRemainingCapacity method\")\n//\t\t\t},\n//\t\t\tGetComputeInstancesFunc: func(computeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo) ([]nvml.ComputeInstance, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetComputeInstances method\")\n//\t\t\t},\n//\t\t\tGetCreatableVgpusFunc: func() (nvml.VgpuTypeIdInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetCreatableVgpus method\")\n//\t\t\t},\n//\t\t\tGetInfoFunc: func() (nvml.GpuInstanceInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetInfo method\")\n//\t\t\t},\n//\t\t\tGetVgpuHeterogeneousModeFunc: func() (nvml.VgpuHeterogeneousMode, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetVgpuHeterogeneousMode method\")\n//\t\t\t},\n//\t\t\tGetVgpuSchedulerLogFunc: func() (nvml.VgpuSchedulerLogInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetVgpuSchedulerLog method\")\n//\t\t\t},\n//\t\t\tGetVgpuSchedulerStateFunc: func() (nvml.VgpuSchedulerStateInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetVgpuSchedulerState method\")\n//\t\t\t},\n//\t\t\tGetVgpuTypeCreatablePlacementsFunc: func() (nvml.VgpuCreatablePlacementInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetVgpuTypeCreatablePlacements method\")\n//\t\t\t},\n//\t\t\tSetVgpuHeterogeneousModeFunc: func(vgpuHeterogeneousMode *nvml.VgpuHeterogeneousMode) nvml.Return {\n//\t\t\t\tpanic(\"mock out the SetVgpuHeterogeneousMode method\")\n//\t\t\t},\n//\t\t\tSetVgpuSchedulerStateFunc: func(vgpuSchedulerState *nvml.VgpuSchedulerState) nvml.Return {\n//\t\t\t\tpanic(\"mock out the SetVgpuSchedulerState method\")\n//\t\t\t},\n//\t\t}\n//\n//\t\t// use mockedGpuInstance in code that requires nvml.GpuInstance\n//\t\t// and then make assertions.\n//\n//\t}\ntype GpuInstance struct {\n\t// CreateComputeInstanceFunc mocks the CreateComputeInstance method.\n\tCreateComputeInstanceFunc func(computeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo) (nvml.ComputeInstance, nvml.Return)\n\n\t// CreateComputeInstanceWithPlacementFunc mocks the CreateComputeInstanceWithPlacement method.\n\tCreateComputeInstanceWithPlacementFunc func(computeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo, computeInstancePlacement *nvml.ComputeInstancePlacement) (nvml.ComputeInstance, nvml.Return)\n\n\t// DestroyFunc mocks the Destroy method.\n\tDestroyFunc func() nvml.Return\n\n\t// GetActiveVgpusFunc mocks the GetActiveVgpus method.\n\tGetActiveVgpusFunc func() (nvml.ActiveVgpuInstanceInfo, nvml.Return)\n\n\t// GetComputeInstanceByIdFunc mocks the GetComputeInstanceById method.\n\tGetComputeInstanceByIdFunc func(n int) (nvml.ComputeInstance, nvml.Return)\n\n\t// GetComputeInstancePossiblePlacementsFunc mocks the GetComputeInstancePossiblePlacements method.\n\tGetComputeInstancePossiblePlacementsFunc func(computeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo) ([]nvml.ComputeInstancePlacement, nvml.Return)\n\n\t// GetComputeInstanceProfileInfoFunc mocks the GetComputeInstanceProfileInfo method.\n\tGetComputeInstanceProfileInfoFunc func(n1 int, n2 int) (nvml.ComputeInstanceProfileInfo, nvml.Return)\n\n\t// GetComputeInstanceProfileInfoVFunc mocks the GetComputeInstanceProfileInfoV method.\n\tGetComputeInstanceProfileInfoVFunc func(n1 int, n2 int) nvml.ComputeInstanceProfileInfoHandler\n\n\t// GetComputeInstanceRemainingCapacityFunc mocks the GetComputeInstanceRemainingCapacity method.\n\tGetComputeInstanceRemainingCapacityFunc func(computeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo) (int, nvml.Return)\n\n\t// GetComputeInstancesFunc mocks the GetComputeInstances method.\n\tGetComputeInstancesFunc func(computeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo) ([]nvml.ComputeInstance, nvml.Return)\n\n\t// GetCreatableVgpusFunc mocks the GetCreatableVgpus method.\n\tGetCreatableVgpusFunc func() (nvml.VgpuTypeIdInfo, nvml.Return)\n\n\t// GetInfoFunc mocks the GetInfo method.\n\tGetInfoFunc func() (nvml.GpuInstanceInfo, nvml.Return)\n\n\t// GetVgpuHeterogeneousModeFunc mocks the GetVgpuHeterogeneousMode method.\n\tGetVgpuHeterogeneousModeFunc func() (nvml.VgpuHeterogeneousMode, nvml.Return)\n\n\t// GetVgpuSchedulerLogFunc mocks the GetVgpuSchedulerLog method.\n\tGetVgpuSchedulerLogFunc func() (nvml.VgpuSchedulerLogInfo, nvml.Return)\n\n\t// GetVgpuSchedulerStateFunc mocks the GetVgpuSchedulerState method.\n\tGetVgpuSchedulerStateFunc func() (nvml.VgpuSchedulerStateInfo, nvml.Return)\n\n\t// GetVgpuTypeCreatablePlacementsFunc mocks the GetVgpuTypeCreatablePlacements method.\n\tGetVgpuTypeCreatablePlacementsFunc func() (nvml.VgpuCreatablePlacementInfo, nvml.Return)\n\n\t// SetVgpuHeterogeneousModeFunc mocks the SetVgpuHeterogeneousMode method.\n\tSetVgpuHeterogeneousModeFunc func(vgpuHeterogeneousMode *nvml.VgpuHeterogeneousMode) nvml.Return\n\n\t// SetVgpuSchedulerStateFunc mocks the SetVgpuSchedulerState method.\n\tSetVgpuSchedulerStateFunc func(vgpuSchedulerState *nvml.VgpuSchedulerState) nvml.Return\n\n\t// calls tracks calls to the methods.\n\tcalls struct {\n\t\t// CreateComputeInstance holds details about calls to the CreateComputeInstance method.\n\t\tCreateComputeInstance []struct {\n\t\t\t// ComputeInstanceProfileInfo is the computeInstanceProfileInfo argument value.\n\t\t\tComputeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo\n\t\t}\n\t\t// CreateComputeInstanceWithPlacement holds details about calls to the CreateComputeInstanceWithPlacement method.\n\t\tCreateComputeInstanceWithPlacement []struct {\n\t\t\t// ComputeInstanceProfileInfo is the computeInstanceProfileInfo argument value.\n\t\t\tComputeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo\n\t\t\t// ComputeInstancePlacement is the computeInstancePlacement argument value.\n\t\t\tComputeInstancePlacement *nvml.ComputeInstancePlacement\n\t\t}\n\t\t// Destroy holds details about calls to the Destroy method.\n\t\tDestroy []struct {\n\t\t}\n\t\t// GetActiveVgpus holds details about calls to the GetActiveVgpus method.\n\t\tGetActiveVgpus []struct {\n\t\t}\n\t\t// GetComputeInstanceById holds details about calls to the GetComputeInstanceById method.\n\t\tGetComputeInstanceById []struct {\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t}\n\t\t// GetComputeInstancePossiblePlacements holds details about calls to the GetComputeInstancePossiblePlacements method.\n\t\tGetComputeInstancePossiblePlacements []struct {\n\t\t\t// ComputeInstanceProfileInfo is the computeInstanceProfileInfo argument value.\n\t\t\tComputeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo\n\t\t}\n\t\t// GetComputeInstanceProfileInfo holds details about calls to the GetComputeInstanceProfileInfo method.\n\t\tGetComputeInstanceProfileInfo []struct {\n\t\t\t// N1 is the n1 argument value.\n\t\t\tN1 int\n\t\t\t// N2 is the n2 argument value.\n\t\t\tN2 int\n\t\t}\n\t\t// GetComputeInstanceProfileInfoV holds details about calls to the GetComputeInstanceProfileInfoV method.\n\t\tGetComputeInstanceProfileInfoV []struct {\n\t\t\t// N1 is the n1 argument value.\n\t\t\tN1 int\n\t\t\t// N2 is the n2 argument value.\n\t\t\tN2 int\n\t\t}\n\t\t// GetComputeInstanceRemainingCapacity holds details about calls to the GetComputeInstanceRemainingCapacity method.\n\t\tGetComputeInstanceRemainingCapacity []struct {\n\t\t\t// ComputeInstanceProfileInfo is the computeInstanceProfileInfo argument value.\n\t\t\tComputeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo\n\t\t}\n\t\t// GetComputeInstances holds details about calls to the GetComputeInstances method.\n\t\tGetComputeInstances []struct {\n\t\t\t// ComputeInstanceProfileInfo is the computeInstanceProfileInfo argument value.\n\t\t\tComputeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo\n\t\t}\n\t\t// GetCreatableVgpus holds details about calls to the GetCreatableVgpus method.\n\t\tGetCreatableVgpus []struct {\n\t\t}\n\t\t// GetInfo holds details about calls to the GetInfo method.\n\t\tGetInfo []struct {\n\t\t}\n\t\t// GetVgpuHeterogeneousMode holds details about calls to the GetVgpuHeterogeneousMode method.\n\t\tGetVgpuHeterogeneousMode []struct {\n\t\t}\n\t\t// GetVgpuSchedulerLog holds details about calls to the GetVgpuSchedulerLog method.\n\t\tGetVgpuSchedulerLog []struct {\n\t\t}\n\t\t// GetVgpuSchedulerState holds details about calls to the GetVgpuSchedulerState method.\n\t\tGetVgpuSchedulerState []struct {\n\t\t}\n\t\t// GetVgpuTypeCreatablePlacements holds details about calls to the GetVgpuTypeCreatablePlacements method.\n\t\tGetVgpuTypeCreatablePlacements []struct {\n\t\t}\n\t\t// SetVgpuHeterogeneousMode holds details about calls to the SetVgpuHeterogeneousMode method.\n\t\tSetVgpuHeterogeneousMode []struct {\n\t\t\t// VgpuHeterogeneousMode is the vgpuHeterogeneousMode argument value.\n\t\t\tVgpuHeterogeneousMode *nvml.VgpuHeterogeneousMode\n\t\t}\n\t\t// SetVgpuSchedulerState holds details about calls to the SetVgpuSchedulerState method.\n\t\tSetVgpuSchedulerState []struct {\n\t\t\t// VgpuSchedulerState is the vgpuSchedulerState argument value.\n\t\t\tVgpuSchedulerState *nvml.VgpuSchedulerState\n\t\t}\n\t}\n\tlockCreateComputeInstance                sync.RWMutex\n\tlockCreateComputeInstanceWithPlacement   sync.RWMutex\n\tlockDestroy                              sync.RWMutex\n\tlockGetActiveVgpus                       sync.RWMutex\n\tlockGetComputeInstanceById               sync.RWMutex\n\tlockGetComputeInstancePossiblePlacements sync.RWMutex\n\tlockGetComputeInstanceProfileInfo        sync.RWMutex\n\tlockGetComputeInstanceProfileInfoV       sync.RWMutex\n\tlockGetComputeInstanceRemainingCapacity  sync.RWMutex\n\tlockGetComputeInstances                  sync.RWMutex\n\tlockGetCreatableVgpus                    sync.RWMutex\n\tlockGetInfo                              sync.RWMutex\n\tlockGetVgpuHeterogeneousMode             sync.RWMutex\n\tlockGetVgpuSchedulerLog                  sync.RWMutex\n\tlockGetVgpuSchedulerState                sync.RWMutex\n\tlockGetVgpuTypeCreatablePlacements       sync.RWMutex\n\tlockSetVgpuHeterogeneousMode             sync.RWMutex\n\tlockSetVgpuSchedulerState                sync.RWMutex\n}\n\n// CreateComputeInstance calls CreateComputeInstanceFunc.\nfunc (mock *GpuInstance) CreateComputeInstance(computeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo) (nvml.ComputeInstance, nvml.Return) {\n\tif mock.CreateComputeInstanceFunc == nil {\n\t\tpanic(\"GpuInstance.CreateComputeInstanceFunc: method is nil but GpuInstance.CreateComputeInstance was just called\")\n\t}\n\tcallInfo := struct {\n\t\tComputeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo\n\t}{\n\t\tComputeInstanceProfileInfo: computeInstanceProfileInfo,\n\t}\n\tmock.lockCreateComputeInstance.Lock()\n\tmock.calls.CreateComputeInstance = append(mock.calls.CreateComputeInstance, callInfo)\n\tmock.lockCreateComputeInstance.Unlock()\n\treturn mock.CreateComputeInstanceFunc(computeInstanceProfileInfo)\n}\n\n// CreateComputeInstanceCalls gets all the calls that were made to CreateComputeInstance.\n// Check the length with:\n//\n//\tlen(mockedGpuInstance.CreateComputeInstanceCalls())\nfunc (mock *GpuInstance) CreateComputeInstanceCalls() []struct {\n\tComputeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo\n} {\n\tvar calls []struct {\n\t\tComputeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo\n\t}\n\tmock.lockCreateComputeInstance.RLock()\n\tcalls = mock.calls.CreateComputeInstance\n\tmock.lockCreateComputeInstance.RUnlock()\n\treturn calls\n}\n\n// CreateComputeInstanceWithPlacement calls CreateComputeInstanceWithPlacementFunc.\nfunc (mock *GpuInstance) CreateComputeInstanceWithPlacement(computeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo, computeInstancePlacement *nvml.ComputeInstancePlacement) (nvml.ComputeInstance, nvml.Return) {\n\tif mock.CreateComputeInstanceWithPlacementFunc == nil {\n\t\tpanic(\"GpuInstance.CreateComputeInstanceWithPlacementFunc: method is nil but GpuInstance.CreateComputeInstanceWithPlacement was just called\")\n\t}\n\tcallInfo := struct {\n\t\tComputeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo\n\t\tComputeInstancePlacement   *nvml.ComputeInstancePlacement\n\t}{\n\t\tComputeInstanceProfileInfo: computeInstanceProfileInfo,\n\t\tComputeInstancePlacement:   computeInstancePlacement,\n\t}\n\tmock.lockCreateComputeInstanceWithPlacement.Lock()\n\tmock.calls.CreateComputeInstanceWithPlacement = append(mock.calls.CreateComputeInstanceWithPlacement, callInfo)\n\tmock.lockCreateComputeInstanceWithPlacement.Unlock()\n\treturn mock.CreateComputeInstanceWithPlacementFunc(computeInstanceProfileInfo, computeInstancePlacement)\n}\n\n// CreateComputeInstanceWithPlacementCalls gets all the calls that were made to CreateComputeInstanceWithPlacement.\n// Check the length with:\n//\n//\tlen(mockedGpuInstance.CreateComputeInstanceWithPlacementCalls())\nfunc (mock *GpuInstance) CreateComputeInstanceWithPlacementCalls() []struct {\n\tComputeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo\n\tComputeInstancePlacement   *nvml.ComputeInstancePlacement\n} {\n\tvar calls []struct {\n\t\tComputeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo\n\t\tComputeInstancePlacement   *nvml.ComputeInstancePlacement\n\t}\n\tmock.lockCreateComputeInstanceWithPlacement.RLock()\n\tcalls = mock.calls.CreateComputeInstanceWithPlacement\n\tmock.lockCreateComputeInstanceWithPlacement.RUnlock()\n\treturn calls\n}\n\n// Destroy calls DestroyFunc.\nfunc (mock *GpuInstance) Destroy() nvml.Return {\n\tif mock.DestroyFunc == nil {\n\t\tpanic(\"GpuInstance.DestroyFunc: method is nil but GpuInstance.Destroy was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockDestroy.Lock()\n\tmock.calls.Destroy = append(mock.calls.Destroy, callInfo)\n\tmock.lockDestroy.Unlock()\n\treturn mock.DestroyFunc()\n}\n\n// DestroyCalls gets all the calls that were made to Destroy.\n// Check the length with:\n//\n//\tlen(mockedGpuInstance.DestroyCalls())\nfunc (mock *GpuInstance) DestroyCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockDestroy.RLock()\n\tcalls = mock.calls.Destroy\n\tmock.lockDestroy.RUnlock()\n\treturn calls\n}\n\n// GetActiveVgpus calls GetActiveVgpusFunc.\nfunc (mock *GpuInstance) GetActiveVgpus() (nvml.ActiveVgpuInstanceInfo, nvml.Return) {\n\tif mock.GetActiveVgpusFunc == nil {\n\t\tpanic(\"GpuInstance.GetActiveVgpusFunc: method is nil but GpuInstance.GetActiveVgpus was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetActiveVgpus.Lock()\n\tmock.calls.GetActiveVgpus = append(mock.calls.GetActiveVgpus, callInfo)\n\tmock.lockGetActiveVgpus.Unlock()\n\treturn mock.GetActiveVgpusFunc()\n}\n\n// GetActiveVgpusCalls gets all the calls that were made to GetActiveVgpus.\n// Check the length with:\n//\n//\tlen(mockedGpuInstance.GetActiveVgpusCalls())\nfunc (mock *GpuInstance) GetActiveVgpusCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetActiveVgpus.RLock()\n\tcalls = mock.calls.GetActiveVgpus\n\tmock.lockGetActiveVgpus.RUnlock()\n\treturn calls\n}\n\n// GetComputeInstanceById calls GetComputeInstanceByIdFunc.\nfunc (mock *GpuInstance) GetComputeInstanceById(n int) (nvml.ComputeInstance, nvml.Return) {\n\tif mock.GetComputeInstanceByIdFunc == nil {\n\t\tpanic(\"GpuInstance.GetComputeInstanceByIdFunc: method is nil but GpuInstance.GetComputeInstanceById was just called\")\n\t}\n\tcallInfo := struct {\n\t\tN int\n\t}{\n\t\tN: n,\n\t}\n\tmock.lockGetComputeInstanceById.Lock()\n\tmock.calls.GetComputeInstanceById = append(mock.calls.GetComputeInstanceById, callInfo)\n\tmock.lockGetComputeInstanceById.Unlock()\n\treturn mock.GetComputeInstanceByIdFunc(n)\n}\n\n// GetComputeInstanceByIdCalls gets all the calls that were made to GetComputeInstanceById.\n// Check the length with:\n//\n//\tlen(mockedGpuInstance.GetComputeInstanceByIdCalls())\nfunc (mock *GpuInstance) GetComputeInstanceByIdCalls() []struct {\n\tN int\n} {\n\tvar calls []struct {\n\t\tN int\n\t}\n\tmock.lockGetComputeInstanceById.RLock()\n\tcalls = mock.calls.GetComputeInstanceById\n\tmock.lockGetComputeInstanceById.RUnlock()\n\treturn calls\n}\n\n// GetComputeInstancePossiblePlacements calls GetComputeInstancePossiblePlacementsFunc.\nfunc (mock *GpuInstance) GetComputeInstancePossiblePlacements(computeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo) ([]nvml.ComputeInstancePlacement, nvml.Return) {\n\tif mock.GetComputeInstancePossiblePlacementsFunc == nil {\n\t\tpanic(\"GpuInstance.GetComputeInstancePossiblePlacementsFunc: method is nil but GpuInstance.GetComputeInstancePossiblePlacements was just called\")\n\t}\n\tcallInfo := struct {\n\t\tComputeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo\n\t}{\n\t\tComputeInstanceProfileInfo: computeInstanceProfileInfo,\n\t}\n\tmock.lockGetComputeInstancePossiblePlacements.Lock()\n\tmock.calls.GetComputeInstancePossiblePlacements = append(mock.calls.GetComputeInstancePossiblePlacements, callInfo)\n\tmock.lockGetComputeInstancePossiblePlacements.Unlock()\n\treturn mock.GetComputeInstancePossiblePlacementsFunc(computeInstanceProfileInfo)\n}\n\n// GetComputeInstancePossiblePlacementsCalls gets all the calls that were made to GetComputeInstancePossiblePlacements.\n// Check the length with:\n//\n//\tlen(mockedGpuInstance.GetComputeInstancePossiblePlacementsCalls())\nfunc (mock *GpuInstance) GetComputeInstancePossiblePlacementsCalls() []struct {\n\tComputeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo\n} {\n\tvar calls []struct {\n\t\tComputeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo\n\t}\n\tmock.lockGetComputeInstancePossiblePlacements.RLock()\n\tcalls = mock.calls.GetComputeInstancePossiblePlacements\n\tmock.lockGetComputeInstancePossiblePlacements.RUnlock()\n\treturn calls\n}\n\n// GetComputeInstanceProfileInfo calls GetComputeInstanceProfileInfoFunc.\nfunc (mock *GpuInstance) GetComputeInstanceProfileInfo(n1 int, n2 int) (nvml.ComputeInstanceProfileInfo, nvml.Return) {\n\tif mock.GetComputeInstanceProfileInfoFunc == nil {\n\t\tpanic(\"GpuInstance.GetComputeInstanceProfileInfoFunc: method is nil but GpuInstance.GetComputeInstanceProfileInfo was just called\")\n\t}\n\tcallInfo := struct {\n\t\tN1 int\n\t\tN2 int\n\t}{\n\t\tN1: n1,\n\t\tN2: n2,\n\t}\n\tmock.lockGetComputeInstanceProfileInfo.Lock()\n\tmock.calls.GetComputeInstanceProfileInfo = append(mock.calls.GetComputeInstanceProfileInfo, callInfo)\n\tmock.lockGetComputeInstanceProfileInfo.Unlock()\n\treturn mock.GetComputeInstanceProfileInfoFunc(n1, n2)\n}\n\n// GetComputeInstanceProfileInfoCalls gets all the calls that were made to GetComputeInstanceProfileInfo.\n// Check the length with:\n//\n//\tlen(mockedGpuInstance.GetComputeInstanceProfileInfoCalls())\nfunc (mock *GpuInstance) GetComputeInstanceProfileInfoCalls() []struct {\n\tN1 int\n\tN2 int\n} {\n\tvar calls []struct {\n\t\tN1 int\n\t\tN2 int\n\t}\n\tmock.lockGetComputeInstanceProfileInfo.RLock()\n\tcalls = mock.calls.GetComputeInstanceProfileInfo\n\tmock.lockGetComputeInstanceProfileInfo.RUnlock()\n\treturn calls\n}\n\n// GetComputeInstanceProfileInfoV calls GetComputeInstanceProfileInfoVFunc.\nfunc (mock *GpuInstance) GetComputeInstanceProfileInfoV(n1 int, n2 int) nvml.ComputeInstanceProfileInfoHandler {\n\tif mock.GetComputeInstanceProfileInfoVFunc == nil {\n\t\tpanic(\"GpuInstance.GetComputeInstanceProfileInfoVFunc: method is nil but GpuInstance.GetComputeInstanceProfileInfoV was just called\")\n\t}\n\tcallInfo := struct {\n\t\tN1 int\n\t\tN2 int\n\t}{\n\t\tN1: n1,\n\t\tN2: n2,\n\t}\n\tmock.lockGetComputeInstanceProfileInfoV.Lock()\n\tmock.calls.GetComputeInstanceProfileInfoV = append(mock.calls.GetComputeInstanceProfileInfoV, callInfo)\n\tmock.lockGetComputeInstanceProfileInfoV.Unlock()\n\treturn mock.GetComputeInstanceProfileInfoVFunc(n1, n2)\n}\n\n// GetComputeInstanceProfileInfoVCalls gets all the calls that were made to GetComputeInstanceProfileInfoV.\n// Check the length with:\n//\n//\tlen(mockedGpuInstance.GetComputeInstanceProfileInfoVCalls())\nfunc (mock *GpuInstance) GetComputeInstanceProfileInfoVCalls() []struct {\n\tN1 int\n\tN2 int\n} {\n\tvar calls []struct {\n\t\tN1 int\n\t\tN2 int\n\t}\n\tmock.lockGetComputeInstanceProfileInfoV.RLock()\n\tcalls = mock.calls.GetComputeInstanceProfileInfoV\n\tmock.lockGetComputeInstanceProfileInfoV.RUnlock()\n\treturn calls\n}\n\n// GetComputeInstanceRemainingCapacity calls GetComputeInstanceRemainingCapacityFunc.\nfunc (mock *GpuInstance) GetComputeInstanceRemainingCapacity(computeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo) (int, nvml.Return) {\n\tif mock.GetComputeInstanceRemainingCapacityFunc == nil {\n\t\tpanic(\"GpuInstance.GetComputeInstanceRemainingCapacityFunc: method is nil but GpuInstance.GetComputeInstanceRemainingCapacity was just called\")\n\t}\n\tcallInfo := struct {\n\t\tComputeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo\n\t}{\n\t\tComputeInstanceProfileInfo: computeInstanceProfileInfo,\n\t}\n\tmock.lockGetComputeInstanceRemainingCapacity.Lock()\n\tmock.calls.GetComputeInstanceRemainingCapacity = append(mock.calls.GetComputeInstanceRemainingCapacity, callInfo)\n\tmock.lockGetComputeInstanceRemainingCapacity.Unlock()\n\treturn mock.GetComputeInstanceRemainingCapacityFunc(computeInstanceProfileInfo)\n}\n\n// GetComputeInstanceRemainingCapacityCalls gets all the calls that were made to GetComputeInstanceRemainingCapacity.\n// Check the length with:\n//\n//\tlen(mockedGpuInstance.GetComputeInstanceRemainingCapacityCalls())\nfunc (mock *GpuInstance) GetComputeInstanceRemainingCapacityCalls() []struct {\n\tComputeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo\n} {\n\tvar calls []struct {\n\t\tComputeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo\n\t}\n\tmock.lockGetComputeInstanceRemainingCapacity.RLock()\n\tcalls = mock.calls.GetComputeInstanceRemainingCapacity\n\tmock.lockGetComputeInstanceRemainingCapacity.RUnlock()\n\treturn calls\n}\n\n// GetComputeInstances calls GetComputeInstancesFunc.\nfunc (mock *GpuInstance) GetComputeInstances(computeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo) ([]nvml.ComputeInstance, nvml.Return) {\n\tif mock.GetComputeInstancesFunc == nil {\n\t\tpanic(\"GpuInstance.GetComputeInstancesFunc: method is nil but GpuInstance.GetComputeInstances was just called\")\n\t}\n\tcallInfo := struct {\n\t\tComputeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo\n\t}{\n\t\tComputeInstanceProfileInfo: computeInstanceProfileInfo,\n\t}\n\tmock.lockGetComputeInstances.Lock()\n\tmock.calls.GetComputeInstances = append(mock.calls.GetComputeInstances, callInfo)\n\tmock.lockGetComputeInstances.Unlock()\n\treturn mock.GetComputeInstancesFunc(computeInstanceProfileInfo)\n}\n\n// GetComputeInstancesCalls gets all the calls that were made to GetComputeInstances.\n// Check the length with:\n//\n//\tlen(mockedGpuInstance.GetComputeInstancesCalls())\nfunc (mock *GpuInstance) GetComputeInstancesCalls() []struct {\n\tComputeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo\n} {\n\tvar calls []struct {\n\t\tComputeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo\n\t}\n\tmock.lockGetComputeInstances.RLock()\n\tcalls = mock.calls.GetComputeInstances\n\tmock.lockGetComputeInstances.RUnlock()\n\treturn calls\n}\n\n// GetCreatableVgpus calls GetCreatableVgpusFunc.\nfunc (mock *GpuInstance) GetCreatableVgpus() (nvml.VgpuTypeIdInfo, nvml.Return) {\n\tif mock.GetCreatableVgpusFunc == nil {\n\t\tpanic(\"GpuInstance.GetCreatableVgpusFunc: method is nil but GpuInstance.GetCreatableVgpus was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetCreatableVgpus.Lock()\n\tmock.calls.GetCreatableVgpus = append(mock.calls.GetCreatableVgpus, callInfo)\n\tmock.lockGetCreatableVgpus.Unlock()\n\treturn mock.GetCreatableVgpusFunc()\n}\n\n// GetCreatableVgpusCalls gets all the calls that were made to GetCreatableVgpus.\n// Check the length with:\n//\n//\tlen(mockedGpuInstance.GetCreatableVgpusCalls())\nfunc (mock *GpuInstance) GetCreatableVgpusCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetCreatableVgpus.RLock()\n\tcalls = mock.calls.GetCreatableVgpus\n\tmock.lockGetCreatableVgpus.RUnlock()\n\treturn calls\n}\n\n// GetInfo calls GetInfoFunc.\nfunc (mock *GpuInstance) GetInfo() (nvml.GpuInstanceInfo, nvml.Return) {\n\tif mock.GetInfoFunc == nil {\n\t\tpanic(\"GpuInstance.GetInfoFunc: method is nil but GpuInstance.GetInfo was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetInfo.Lock()\n\tmock.calls.GetInfo = append(mock.calls.GetInfo, callInfo)\n\tmock.lockGetInfo.Unlock()\n\treturn mock.GetInfoFunc()\n}\n\n// GetInfoCalls gets all the calls that were made to GetInfo.\n// Check the length with:\n//\n//\tlen(mockedGpuInstance.GetInfoCalls())\nfunc (mock *GpuInstance) GetInfoCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetInfo.RLock()\n\tcalls = mock.calls.GetInfo\n\tmock.lockGetInfo.RUnlock()\n\treturn calls\n}\n\n// GetVgpuHeterogeneousMode calls GetVgpuHeterogeneousModeFunc.\nfunc (mock *GpuInstance) GetVgpuHeterogeneousMode() (nvml.VgpuHeterogeneousMode, nvml.Return) {\n\tif mock.GetVgpuHeterogeneousModeFunc == nil {\n\t\tpanic(\"GpuInstance.GetVgpuHeterogeneousModeFunc: method is nil but GpuInstance.GetVgpuHeterogeneousMode was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetVgpuHeterogeneousMode.Lock()\n\tmock.calls.GetVgpuHeterogeneousMode = append(mock.calls.GetVgpuHeterogeneousMode, callInfo)\n\tmock.lockGetVgpuHeterogeneousMode.Unlock()\n\treturn mock.GetVgpuHeterogeneousModeFunc()\n}\n\n// GetVgpuHeterogeneousModeCalls gets all the calls that were made to GetVgpuHeterogeneousMode.\n// Check the length with:\n//\n//\tlen(mockedGpuInstance.GetVgpuHeterogeneousModeCalls())\nfunc (mock *GpuInstance) GetVgpuHeterogeneousModeCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetVgpuHeterogeneousMode.RLock()\n\tcalls = mock.calls.GetVgpuHeterogeneousMode\n\tmock.lockGetVgpuHeterogeneousMode.RUnlock()\n\treturn calls\n}\n\n// GetVgpuSchedulerLog calls GetVgpuSchedulerLogFunc.\nfunc (mock *GpuInstance) GetVgpuSchedulerLog() (nvml.VgpuSchedulerLogInfo, nvml.Return) {\n\tif mock.GetVgpuSchedulerLogFunc == nil {\n\t\tpanic(\"GpuInstance.GetVgpuSchedulerLogFunc: method is nil but GpuInstance.GetVgpuSchedulerLog was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetVgpuSchedulerLog.Lock()\n\tmock.calls.GetVgpuSchedulerLog = append(mock.calls.GetVgpuSchedulerLog, callInfo)\n\tmock.lockGetVgpuSchedulerLog.Unlock()\n\treturn mock.GetVgpuSchedulerLogFunc()\n}\n\n// GetVgpuSchedulerLogCalls gets all the calls that were made to GetVgpuSchedulerLog.\n// Check the length with:\n//\n//\tlen(mockedGpuInstance.GetVgpuSchedulerLogCalls())\nfunc (mock *GpuInstance) GetVgpuSchedulerLogCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetVgpuSchedulerLog.RLock()\n\tcalls = mock.calls.GetVgpuSchedulerLog\n\tmock.lockGetVgpuSchedulerLog.RUnlock()\n\treturn calls\n}\n\n// GetVgpuSchedulerState calls GetVgpuSchedulerStateFunc.\nfunc (mock *GpuInstance) GetVgpuSchedulerState() (nvml.VgpuSchedulerStateInfo, nvml.Return) {\n\tif mock.GetVgpuSchedulerStateFunc == nil {\n\t\tpanic(\"GpuInstance.GetVgpuSchedulerStateFunc: method is nil but GpuInstance.GetVgpuSchedulerState was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetVgpuSchedulerState.Lock()\n\tmock.calls.GetVgpuSchedulerState = append(mock.calls.GetVgpuSchedulerState, callInfo)\n\tmock.lockGetVgpuSchedulerState.Unlock()\n\treturn mock.GetVgpuSchedulerStateFunc()\n}\n\n// GetVgpuSchedulerStateCalls gets all the calls that were made to GetVgpuSchedulerState.\n// Check the length with:\n//\n//\tlen(mockedGpuInstance.GetVgpuSchedulerStateCalls())\nfunc (mock *GpuInstance) GetVgpuSchedulerStateCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetVgpuSchedulerState.RLock()\n\tcalls = mock.calls.GetVgpuSchedulerState\n\tmock.lockGetVgpuSchedulerState.RUnlock()\n\treturn calls\n}\n\n// GetVgpuTypeCreatablePlacements calls GetVgpuTypeCreatablePlacementsFunc.\nfunc (mock *GpuInstance) GetVgpuTypeCreatablePlacements() (nvml.VgpuCreatablePlacementInfo, nvml.Return) {\n\tif mock.GetVgpuTypeCreatablePlacementsFunc == nil {\n\t\tpanic(\"GpuInstance.GetVgpuTypeCreatablePlacementsFunc: method is nil but GpuInstance.GetVgpuTypeCreatablePlacements was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetVgpuTypeCreatablePlacements.Lock()\n\tmock.calls.GetVgpuTypeCreatablePlacements = append(mock.calls.GetVgpuTypeCreatablePlacements, callInfo)\n\tmock.lockGetVgpuTypeCreatablePlacements.Unlock()\n\treturn mock.GetVgpuTypeCreatablePlacementsFunc()\n}\n\n// GetVgpuTypeCreatablePlacementsCalls gets all the calls that were made to GetVgpuTypeCreatablePlacements.\n// Check the length with:\n//\n//\tlen(mockedGpuInstance.GetVgpuTypeCreatablePlacementsCalls())\nfunc (mock *GpuInstance) GetVgpuTypeCreatablePlacementsCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetVgpuTypeCreatablePlacements.RLock()\n\tcalls = mock.calls.GetVgpuTypeCreatablePlacements\n\tmock.lockGetVgpuTypeCreatablePlacements.RUnlock()\n\treturn calls\n}\n\n// SetVgpuHeterogeneousMode calls SetVgpuHeterogeneousModeFunc.\nfunc (mock *GpuInstance) SetVgpuHeterogeneousMode(vgpuHeterogeneousMode *nvml.VgpuHeterogeneousMode) nvml.Return {\n\tif mock.SetVgpuHeterogeneousModeFunc == nil {\n\t\tpanic(\"GpuInstance.SetVgpuHeterogeneousModeFunc: method is nil but GpuInstance.SetVgpuHeterogeneousMode was just called\")\n\t}\n\tcallInfo := struct {\n\t\tVgpuHeterogeneousMode *nvml.VgpuHeterogeneousMode\n\t}{\n\t\tVgpuHeterogeneousMode: vgpuHeterogeneousMode,\n\t}\n\tmock.lockSetVgpuHeterogeneousMode.Lock()\n\tmock.calls.SetVgpuHeterogeneousMode = append(mock.calls.SetVgpuHeterogeneousMode, callInfo)\n\tmock.lockSetVgpuHeterogeneousMode.Unlock()\n\treturn mock.SetVgpuHeterogeneousModeFunc(vgpuHeterogeneousMode)\n}\n\n// SetVgpuHeterogeneousModeCalls gets all the calls that were made to SetVgpuHeterogeneousMode.\n// Check the length with:\n//\n//\tlen(mockedGpuInstance.SetVgpuHeterogeneousModeCalls())\nfunc (mock *GpuInstance) SetVgpuHeterogeneousModeCalls() []struct {\n\tVgpuHeterogeneousMode *nvml.VgpuHeterogeneousMode\n} {\n\tvar calls []struct {\n\t\tVgpuHeterogeneousMode *nvml.VgpuHeterogeneousMode\n\t}\n\tmock.lockSetVgpuHeterogeneousMode.RLock()\n\tcalls = mock.calls.SetVgpuHeterogeneousMode\n\tmock.lockSetVgpuHeterogeneousMode.RUnlock()\n\treturn calls\n}\n\n// SetVgpuSchedulerState calls SetVgpuSchedulerStateFunc.\nfunc (mock *GpuInstance) SetVgpuSchedulerState(vgpuSchedulerState *nvml.VgpuSchedulerState) nvml.Return {\n\tif mock.SetVgpuSchedulerStateFunc == nil {\n\t\tpanic(\"GpuInstance.SetVgpuSchedulerStateFunc: method is nil but GpuInstance.SetVgpuSchedulerState was just called\")\n\t}\n\tcallInfo := struct {\n\t\tVgpuSchedulerState *nvml.VgpuSchedulerState\n\t}{\n\t\tVgpuSchedulerState: vgpuSchedulerState,\n\t}\n\tmock.lockSetVgpuSchedulerState.Lock()\n\tmock.calls.SetVgpuSchedulerState = append(mock.calls.SetVgpuSchedulerState, callInfo)\n\tmock.lockSetVgpuSchedulerState.Unlock()\n\treturn mock.SetVgpuSchedulerStateFunc(vgpuSchedulerState)\n}\n\n// SetVgpuSchedulerStateCalls gets all the calls that were made to SetVgpuSchedulerState.\n// Check the length with:\n//\n//\tlen(mockedGpuInstance.SetVgpuSchedulerStateCalls())\nfunc (mock *GpuInstance) SetVgpuSchedulerStateCalls() []struct {\n\tVgpuSchedulerState *nvml.VgpuSchedulerState\n} {\n\tvar calls []struct {\n\t\tVgpuSchedulerState *nvml.VgpuSchedulerState\n\t}\n\tmock.lockSetVgpuSchedulerState.RLock()\n\tcalls = mock.calls.SetVgpuSchedulerState\n\tmock.lockSetVgpuSchedulerState.RUnlock()\n\treturn calls\n}\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvml/pkg/nvml/mock/interface.go",
    "content": "// Code generated by moq; DO NOT EDIT.\n// github.com/matryer/moq\n\npackage mock\n\nimport (\n\t\"github.com/NVIDIA/go-nvml/pkg/nvml\"\n\t\"sync\"\n)\n\n// Ensure, that Interface does implement nvml.Interface.\n// If this is not the case, regenerate this file with moq.\nvar _ nvml.Interface = &Interface{}\n\n// Interface is a mock implementation of nvml.Interface.\n//\n//\tfunc TestSomethingThatUsesInterface(t *testing.T) {\n//\n//\t\t// make and configure a mocked nvml.Interface\n//\t\tmockedInterface := &Interface{\n//\t\t\tComputeInstanceDestroyFunc: func(computeInstance nvml.ComputeInstance) nvml.Return {\n//\t\t\t\tpanic(\"mock out the ComputeInstanceDestroy method\")\n//\t\t\t},\n//\t\t\tComputeInstanceGetInfoFunc: func(computeInstance nvml.ComputeInstance) (nvml.ComputeInstanceInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the ComputeInstanceGetInfo method\")\n//\t\t\t},\n//\t\t\tDeviceClearAccountingPidsFunc: func(device nvml.Device) nvml.Return {\n//\t\t\t\tpanic(\"mock out the DeviceClearAccountingPids method\")\n//\t\t\t},\n//\t\t\tDeviceClearCpuAffinityFunc: func(device nvml.Device) nvml.Return {\n//\t\t\t\tpanic(\"mock out the DeviceClearCpuAffinity method\")\n//\t\t\t},\n//\t\t\tDeviceClearEccErrorCountsFunc: func(device nvml.Device, eccCounterType nvml.EccCounterType) nvml.Return {\n//\t\t\t\tpanic(\"mock out the DeviceClearEccErrorCounts method\")\n//\t\t\t},\n//\t\t\tDeviceClearFieldValuesFunc: func(device nvml.Device, fieldValues []nvml.FieldValue) nvml.Return {\n//\t\t\t\tpanic(\"mock out the DeviceClearFieldValues method\")\n//\t\t\t},\n//\t\t\tDeviceCreateGpuInstanceFunc: func(device nvml.Device, gpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo) (nvml.GpuInstance, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceCreateGpuInstance method\")\n//\t\t\t},\n//\t\t\tDeviceCreateGpuInstanceWithPlacementFunc: func(device nvml.Device, gpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo, gpuInstancePlacement *nvml.GpuInstancePlacement) (nvml.GpuInstance, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceCreateGpuInstanceWithPlacement method\")\n//\t\t\t},\n//\t\t\tDeviceDiscoverGpusFunc: func() (nvml.PciInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceDiscoverGpus method\")\n//\t\t\t},\n//\t\t\tDeviceFreezeNvLinkUtilizationCounterFunc: func(device nvml.Device, n1 int, n2 int, enableState nvml.EnableState) nvml.Return {\n//\t\t\t\tpanic(\"mock out the DeviceFreezeNvLinkUtilizationCounter method\")\n//\t\t\t},\n//\t\t\tDeviceGetAPIRestrictionFunc: func(device nvml.Device, restrictedAPI nvml.RestrictedAPI) (nvml.EnableState, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetAPIRestriction method\")\n//\t\t\t},\n//\t\t\tDeviceGetAccountingBufferSizeFunc: func(device nvml.Device) (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetAccountingBufferSize method\")\n//\t\t\t},\n//\t\t\tDeviceGetAccountingModeFunc: func(device nvml.Device) (nvml.EnableState, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetAccountingMode method\")\n//\t\t\t},\n//\t\t\tDeviceGetAccountingPidsFunc: func(device nvml.Device) ([]int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetAccountingPids method\")\n//\t\t\t},\n//\t\t\tDeviceGetAccountingStatsFunc: func(device nvml.Device, v uint32) (nvml.AccountingStats, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetAccountingStats method\")\n//\t\t\t},\n//\t\t\tDeviceGetActiveVgpusFunc: func(device nvml.Device) ([]nvml.VgpuInstance, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetActiveVgpus method\")\n//\t\t\t},\n//\t\t\tDeviceGetAdaptiveClockInfoStatusFunc: func(device nvml.Device) (uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetAdaptiveClockInfoStatus method\")\n//\t\t\t},\n//\t\t\tDeviceGetAddressingModeFunc: func(device nvml.Device) (nvml.DeviceAddressingMode, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetAddressingMode method\")\n//\t\t\t},\n//\t\t\tDeviceGetApplicationsClockFunc: func(device nvml.Device, clockType nvml.ClockType) (uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetApplicationsClock method\")\n//\t\t\t},\n//\t\t\tDeviceGetArchitectureFunc: func(device nvml.Device) (nvml.DeviceArchitecture, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetArchitecture method\")\n//\t\t\t},\n//\t\t\tDeviceGetAttributesFunc: func(device nvml.Device) (nvml.DeviceAttributes, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetAttributes method\")\n//\t\t\t},\n//\t\t\tDeviceGetAutoBoostedClocksEnabledFunc: func(device nvml.Device) (nvml.EnableState, nvml.EnableState, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetAutoBoostedClocksEnabled method\")\n//\t\t\t},\n//\t\t\tDeviceGetBAR1MemoryInfoFunc: func(device nvml.Device) (nvml.BAR1Memory, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetBAR1MemoryInfo method\")\n//\t\t\t},\n//\t\t\tDeviceGetBoardIdFunc: func(device nvml.Device) (uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetBoardId method\")\n//\t\t\t},\n//\t\t\tDeviceGetBoardPartNumberFunc: func(device nvml.Device) (string, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetBoardPartNumber method\")\n//\t\t\t},\n//\t\t\tDeviceGetBrandFunc: func(device nvml.Device) (nvml.BrandType, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetBrand method\")\n//\t\t\t},\n//\t\t\tDeviceGetBridgeChipInfoFunc: func(device nvml.Device) (nvml.BridgeChipHierarchy, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetBridgeChipInfo method\")\n//\t\t\t},\n//\t\t\tDeviceGetBusTypeFunc: func(device nvml.Device) (nvml.BusType, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetBusType method\")\n//\t\t\t},\n//\t\t\tDeviceGetC2cModeInfoVFunc: func(device nvml.Device) nvml.C2cModeInfoHandler {\n//\t\t\t\tpanic(\"mock out the DeviceGetC2cModeInfoV method\")\n//\t\t\t},\n//\t\t\tDeviceGetCapabilitiesFunc: func(device nvml.Device) (nvml.DeviceCapabilities, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetCapabilities method\")\n//\t\t\t},\n//\t\t\tDeviceGetClkMonStatusFunc: func(device nvml.Device) (nvml.ClkMonStatus, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetClkMonStatus method\")\n//\t\t\t},\n//\t\t\tDeviceGetClockFunc: func(device nvml.Device, clockType nvml.ClockType, clockId nvml.ClockId) (uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetClock method\")\n//\t\t\t},\n//\t\t\tDeviceGetClockInfoFunc: func(device nvml.Device, clockType nvml.ClockType) (uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetClockInfo method\")\n//\t\t\t},\n//\t\t\tDeviceGetClockOffsetsFunc: func(device nvml.Device) (nvml.ClockOffset, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetClockOffsets method\")\n//\t\t\t},\n//\t\t\tDeviceGetComputeInstanceIdFunc: func(device nvml.Device) (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetComputeInstanceId method\")\n//\t\t\t},\n//\t\t\tDeviceGetComputeModeFunc: func(device nvml.Device) (nvml.ComputeMode, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetComputeMode method\")\n//\t\t\t},\n//\t\t\tDeviceGetComputeRunningProcessesFunc: func(device nvml.Device) ([]nvml.ProcessInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetComputeRunningProcesses method\")\n//\t\t\t},\n//\t\t\tDeviceGetConfComputeGpuAttestationReportFunc: func(device nvml.Device, confComputeGpuAttestationReport *nvml.ConfComputeGpuAttestationReport) nvml.Return {\n//\t\t\t\tpanic(\"mock out the DeviceGetConfComputeGpuAttestationReport method\")\n//\t\t\t},\n//\t\t\tDeviceGetConfComputeGpuCertificateFunc: func(device nvml.Device) (nvml.ConfComputeGpuCertificate, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetConfComputeGpuCertificate method\")\n//\t\t\t},\n//\t\t\tDeviceGetConfComputeMemSizeInfoFunc: func(device nvml.Device) (nvml.ConfComputeMemSizeInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetConfComputeMemSizeInfo method\")\n//\t\t\t},\n//\t\t\tDeviceGetConfComputeProtectedMemoryUsageFunc: func(device nvml.Device) (nvml.Memory, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetConfComputeProtectedMemoryUsage method\")\n//\t\t\t},\n//\t\t\tDeviceGetCoolerInfoFunc: func(device nvml.Device) (nvml.CoolerInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetCoolerInfo method\")\n//\t\t\t},\n//\t\t\tDeviceGetCountFunc: func() (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetCount method\")\n//\t\t\t},\n//\t\t\tDeviceGetCpuAffinityFunc: func(device nvml.Device, n int) ([]uint, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetCpuAffinity method\")\n//\t\t\t},\n//\t\t\tDeviceGetCpuAffinityWithinScopeFunc: func(device nvml.Device, n int, affinityScope nvml.AffinityScope) ([]uint, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetCpuAffinityWithinScope method\")\n//\t\t\t},\n//\t\t\tDeviceGetCreatableVgpusFunc: func(device nvml.Device) ([]nvml.VgpuTypeId, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetCreatableVgpus method\")\n//\t\t\t},\n//\t\t\tDeviceGetCudaComputeCapabilityFunc: func(device nvml.Device) (int, int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetCudaComputeCapability method\")\n//\t\t\t},\n//\t\t\tDeviceGetCurrPcieLinkGenerationFunc: func(device nvml.Device) (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetCurrPcieLinkGeneration method\")\n//\t\t\t},\n//\t\t\tDeviceGetCurrPcieLinkWidthFunc: func(device nvml.Device) (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetCurrPcieLinkWidth method\")\n//\t\t\t},\n//\t\t\tDeviceGetCurrentClockFreqsFunc: func(device nvml.Device) (nvml.DeviceCurrentClockFreqs, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetCurrentClockFreqs method\")\n//\t\t\t},\n//\t\t\tDeviceGetCurrentClocksEventReasonsFunc: func(device nvml.Device) (uint64, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetCurrentClocksEventReasons method\")\n//\t\t\t},\n//\t\t\tDeviceGetCurrentClocksThrottleReasonsFunc: func(device nvml.Device) (uint64, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetCurrentClocksThrottleReasons method\")\n//\t\t\t},\n//\t\t\tDeviceGetDecoderUtilizationFunc: func(device nvml.Device) (uint32, uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetDecoderUtilization method\")\n//\t\t\t},\n//\t\t\tDeviceGetDefaultApplicationsClockFunc: func(device nvml.Device, clockType nvml.ClockType) (uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetDefaultApplicationsClock method\")\n//\t\t\t},\n//\t\t\tDeviceGetDefaultEccModeFunc: func(device nvml.Device) (nvml.EnableState, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetDefaultEccMode method\")\n//\t\t\t},\n//\t\t\tDeviceGetDetailedEccErrorsFunc: func(device nvml.Device, memoryErrorType nvml.MemoryErrorType, eccCounterType nvml.EccCounterType) (nvml.EccErrorCounts, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetDetailedEccErrors method\")\n//\t\t\t},\n//\t\t\tDeviceGetDeviceHandleFromMigDeviceHandleFunc: func(device nvml.Device) (nvml.Device, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetDeviceHandleFromMigDeviceHandle method\")\n//\t\t\t},\n//\t\t\tDeviceGetDisplayActiveFunc: func(device nvml.Device) (nvml.EnableState, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetDisplayActive method\")\n//\t\t\t},\n//\t\t\tDeviceGetDisplayModeFunc: func(device nvml.Device) (nvml.EnableState, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetDisplayMode method\")\n//\t\t\t},\n//\t\t\tDeviceGetDramEncryptionModeFunc: func(device nvml.Device) (nvml.DramEncryptionInfo, nvml.DramEncryptionInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetDramEncryptionMode method\")\n//\t\t\t},\n//\t\t\tDeviceGetDriverModelFunc: func(device nvml.Device) (nvml.DriverModel, nvml.DriverModel, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetDriverModel method\")\n//\t\t\t},\n//\t\t\tDeviceGetDriverModel_v2Func: func(device nvml.Device) (nvml.DriverModel, nvml.DriverModel, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetDriverModel_v2 method\")\n//\t\t\t},\n//\t\t\tDeviceGetDynamicPstatesInfoFunc: func(device nvml.Device) (nvml.GpuDynamicPstatesInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetDynamicPstatesInfo method\")\n//\t\t\t},\n//\t\t\tDeviceGetEccModeFunc: func(device nvml.Device) (nvml.EnableState, nvml.EnableState, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetEccMode method\")\n//\t\t\t},\n//\t\t\tDeviceGetEncoderCapacityFunc: func(device nvml.Device, encoderType nvml.EncoderType) (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetEncoderCapacity method\")\n//\t\t\t},\n//\t\t\tDeviceGetEncoderSessionsFunc: func(device nvml.Device) ([]nvml.EncoderSessionInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetEncoderSessions method\")\n//\t\t\t},\n//\t\t\tDeviceGetEncoderStatsFunc: func(device nvml.Device) (int, uint32, uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetEncoderStats method\")\n//\t\t\t},\n//\t\t\tDeviceGetEncoderUtilizationFunc: func(device nvml.Device) (uint32, uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetEncoderUtilization method\")\n//\t\t\t},\n//\t\t\tDeviceGetEnforcedPowerLimitFunc: func(device nvml.Device) (uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetEnforcedPowerLimit method\")\n//\t\t\t},\n//\t\t\tDeviceGetFBCSessionsFunc: func(device nvml.Device) ([]nvml.FBCSessionInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetFBCSessions method\")\n//\t\t\t},\n//\t\t\tDeviceGetFBCStatsFunc: func(device nvml.Device) (nvml.FBCStats, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetFBCStats method\")\n//\t\t\t},\n//\t\t\tDeviceGetFanControlPolicy_v2Func: func(device nvml.Device, n int) (nvml.FanControlPolicy, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetFanControlPolicy_v2 method\")\n//\t\t\t},\n//\t\t\tDeviceGetFanSpeedFunc: func(device nvml.Device) (uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetFanSpeed method\")\n//\t\t\t},\n//\t\t\tDeviceGetFanSpeedRPMFunc: func(device nvml.Device) (nvml.FanSpeedInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetFanSpeedRPM method\")\n//\t\t\t},\n//\t\t\tDeviceGetFanSpeed_v2Func: func(device nvml.Device, n int) (uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetFanSpeed_v2 method\")\n//\t\t\t},\n//\t\t\tDeviceGetFieldValuesFunc: func(device nvml.Device, fieldValues []nvml.FieldValue) nvml.Return {\n//\t\t\t\tpanic(\"mock out the DeviceGetFieldValues method\")\n//\t\t\t},\n//\t\t\tDeviceGetGpcClkMinMaxVfOffsetFunc: func(device nvml.Device) (int, int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetGpcClkMinMaxVfOffset method\")\n//\t\t\t},\n//\t\t\tDeviceGetGpcClkVfOffsetFunc: func(device nvml.Device) (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetGpcClkVfOffset method\")\n//\t\t\t},\n//\t\t\tDeviceGetGpuFabricInfoFunc: func(device nvml.Device) (nvml.GpuFabricInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetGpuFabricInfo method\")\n//\t\t\t},\n//\t\t\tDeviceGetGpuFabricInfoVFunc: func(device nvml.Device) nvml.GpuFabricInfoHandler {\n//\t\t\t\tpanic(\"mock out the DeviceGetGpuFabricInfoV method\")\n//\t\t\t},\n//\t\t\tDeviceGetGpuInstanceByIdFunc: func(device nvml.Device, n int) (nvml.GpuInstance, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetGpuInstanceById method\")\n//\t\t\t},\n//\t\t\tDeviceGetGpuInstanceIdFunc: func(device nvml.Device) (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetGpuInstanceId method\")\n//\t\t\t},\n//\t\t\tDeviceGetGpuInstancePossiblePlacementsFunc: func(device nvml.Device, gpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo) ([]nvml.GpuInstancePlacement, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetGpuInstancePossiblePlacements method\")\n//\t\t\t},\n//\t\t\tDeviceGetGpuInstanceProfileInfoFunc: func(device nvml.Device, n int) (nvml.GpuInstanceProfileInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetGpuInstanceProfileInfo method\")\n//\t\t\t},\n//\t\t\tDeviceGetGpuInstanceProfileInfoByIdVFunc: func(device nvml.Device, n int) nvml.GpuInstanceProfileInfoByIdHandler {\n//\t\t\t\tpanic(\"mock out the DeviceGetGpuInstanceProfileInfoByIdV method\")\n//\t\t\t},\n//\t\t\tDeviceGetGpuInstanceProfileInfoVFunc: func(device nvml.Device, n int) nvml.GpuInstanceProfileInfoHandler {\n//\t\t\t\tpanic(\"mock out the DeviceGetGpuInstanceProfileInfoV method\")\n//\t\t\t},\n//\t\t\tDeviceGetGpuInstanceRemainingCapacityFunc: func(device nvml.Device, gpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo) (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetGpuInstanceRemainingCapacity method\")\n//\t\t\t},\n//\t\t\tDeviceGetGpuInstancesFunc: func(device nvml.Device, gpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo) ([]nvml.GpuInstance, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetGpuInstances method\")\n//\t\t\t},\n//\t\t\tDeviceGetGpuMaxPcieLinkGenerationFunc: func(device nvml.Device) (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetGpuMaxPcieLinkGeneration method\")\n//\t\t\t},\n//\t\t\tDeviceGetGpuOperationModeFunc: func(device nvml.Device) (nvml.GpuOperationMode, nvml.GpuOperationMode, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetGpuOperationMode method\")\n//\t\t\t},\n//\t\t\tDeviceGetGraphicsRunningProcessesFunc: func(device nvml.Device) ([]nvml.ProcessInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetGraphicsRunningProcesses method\")\n//\t\t\t},\n//\t\t\tDeviceGetGridLicensableFeaturesFunc: func(device nvml.Device) (nvml.GridLicensableFeatures, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetGridLicensableFeatures method\")\n//\t\t\t},\n//\t\t\tDeviceGetGspFirmwareModeFunc: func(device nvml.Device) (bool, bool, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetGspFirmwareMode method\")\n//\t\t\t},\n//\t\t\tDeviceGetGspFirmwareVersionFunc: func(device nvml.Device) (string, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetGspFirmwareVersion method\")\n//\t\t\t},\n//\t\t\tDeviceGetHandleByIndexFunc: func(n int) (nvml.Device, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetHandleByIndex method\")\n//\t\t\t},\n//\t\t\tDeviceGetHandleByPciBusIdFunc: func(s string) (nvml.Device, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetHandleByPciBusId method\")\n//\t\t\t},\n//\t\t\tDeviceGetHandleBySerialFunc: func(s string) (nvml.Device, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetHandleBySerial method\")\n//\t\t\t},\n//\t\t\tDeviceGetHandleByUUIDFunc: func(s string) (nvml.Device, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetHandleByUUID method\")\n//\t\t\t},\n//\t\t\tDeviceGetHandleByUUIDVFunc: func(uUID *nvml.UUID) (nvml.Device, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetHandleByUUIDV method\")\n//\t\t\t},\n//\t\t\tDeviceGetHostVgpuModeFunc: func(device nvml.Device) (nvml.HostVgpuMode, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetHostVgpuMode method\")\n//\t\t\t},\n//\t\t\tDeviceGetIndexFunc: func(device nvml.Device) (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetIndex method\")\n//\t\t\t},\n//\t\t\tDeviceGetInforomConfigurationChecksumFunc: func(device nvml.Device) (uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetInforomConfigurationChecksum method\")\n//\t\t\t},\n//\t\t\tDeviceGetInforomImageVersionFunc: func(device nvml.Device) (string, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetInforomImageVersion method\")\n//\t\t\t},\n//\t\t\tDeviceGetInforomVersionFunc: func(device nvml.Device, inforomObject nvml.InforomObject) (string, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetInforomVersion method\")\n//\t\t\t},\n//\t\t\tDeviceGetIrqNumFunc: func(device nvml.Device) (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetIrqNum method\")\n//\t\t\t},\n//\t\t\tDeviceGetJpgUtilizationFunc: func(device nvml.Device) (uint32, uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetJpgUtilization method\")\n//\t\t\t},\n//\t\t\tDeviceGetLastBBXFlushTimeFunc: func(device nvml.Device) (uint64, uint, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetLastBBXFlushTime method\")\n//\t\t\t},\n//\t\t\tDeviceGetMPSComputeRunningProcessesFunc: func(device nvml.Device) ([]nvml.ProcessInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetMPSComputeRunningProcesses method\")\n//\t\t\t},\n//\t\t\tDeviceGetMarginTemperatureFunc: func(device nvml.Device) (nvml.MarginTemperature, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetMarginTemperature method\")\n//\t\t\t},\n//\t\t\tDeviceGetMaxClockInfoFunc: func(device nvml.Device, clockType nvml.ClockType) (uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetMaxClockInfo method\")\n//\t\t\t},\n//\t\t\tDeviceGetMaxCustomerBoostClockFunc: func(device nvml.Device, clockType nvml.ClockType) (uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetMaxCustomerBoostClock method\")\n//\t\t\t},\n//\t\t\tDeviceGetMaxMigDeviceCountFunc: func(device nvml.Device) (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetMaxMigDeviceCount method\")\n//\t\t\t},\n//\t\t\tDeviceGetMaxPcieLinkGenerationFunc: func(device nvml.Device) (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetMaxPcieLinkGeneration method\")\n//\t\t\t},\n//\t\t\tDeviceGetMaxPcieLinkWidthFunc: func(device nvml.Device) (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetMaxPcieLinkWidth method\")\n//\t\t\t},\n//\t\t\tDeviceGetMemClkMinMaxVfOffsetFunc: func(device nvml.Device) (int, int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetMemClkMinMaxVfOffset method\")\n//\t\t\t},\n//\t\t\tDeviceGetMemClkVfOffsetFunc: func(device nvml.Device) (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetMemClkVfOffset method\")\n//\t\t\t},\n//\t\t\tDeviceGetMemoryAffinityFunc: func(device nvml.Device, n int, affinityScope nvml.AffinityScope) ([]uint, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetMemoryAffinity method\")\n//\t\t\t},\n//\t\t\tDeviceGetMemoryBusWidthFunc: func(device nvml.Device) (uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetMemoryBusWidth method\")\n//\t\t\t},\n//\t\t\tDeviceGetMemoryErrorCounterFunc: func(device nvml.Device, memoryErrorType nvml.MemoryErrorType, eccCounterType nvml.EccCounterType, memoryLocation nvml.MemoryLocation) (uint64, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetMemoryErrorCounter method\")\n//\t\t\t},\n//\t\t\tDeviceGetMemoryInfoFunc: func(device nvml.Device) (nvml.Memory, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetMemoryInfo method\")\n//\t\t\t},\n//\t\t\tDeviceGetMemoryInfo_v2Func: func(device nvml.Device) (nvml.Memory_v2, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetMemoryInfo_v2 method\")\n//\t\t\t},\n//\t\t\tDeviceGetMigDeviceHandleByIndexFunc: func(device nvml.Device, n int) (nvml.Device, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetMigDeviceHandleByIndex method\")\n//\t\t\t},\n//\t\t\tDeviceGetMigModeFunc: func(device nvml.Device) (int, int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetMigMode method\")\n//\t\t\t},\n//\t\t\tDeviceGetMinMaxClockOfPStateFunc: func(device nvml.Device, clockType nvml.ClockType, pstates nvml.Pstates) (uint32, uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetMinMaxClockOfPState method\")\n//\t\t\t},\n//\t\t\tDeviceGetMinMaxFanSpeedFunc: func(device nvml.Device) (int, int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetMinMaxFanSpeed method\")\n//\t\t\t},\n//\t\t\tDeviceGetMinorNumberFunc: func(device nvml.Device) (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetMinorNumber method\")\n//\t\t\t},\n//\t\t\tDeviceGetModuleIdFunc: func(device nvml.Device) (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetModuleId method\")\n//\t\t\t},\n//\t\t\tDeviceGetMultiGpuBoardFunc: func(device nvml.Device) (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetMultiGpuBoard method\")\n//\t\t\t},\n//\t\t\tDeviceGetNameFunc: func(device nvml.Device) (string, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetName method\")\n//\t\t\t},\n//\t\t\tDeviceGetNumFansFunc: func(device nvml.Device) (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetNumFans method\")\n//\t\t\t},\n//\t\t\tDeviceGetNumGpuCoresFunc: func(device nvml.Device) (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetNumGpuCores method\")\n//\t\t\t},\n//\t\t\tDeviceGetNumaNodeIdFunc: func(device nvml.Device) (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetNumaNodeId method\")\n//\t\t\t},\n//\t\t\tDeviceGetNvLinkCapabilityFunc: func(device nvml.Device, n int, nvLinkCapability nvml.NvLinkCapability) (uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetNvLinkCapability method\")\n//\t\t\t},\n//\t\t\tDeviceGetNvLinkErrorCounterFunc: func(device nvml.Device, n int, nvLinkErrorCounter nvml.NvLinkErrorCounter) (uint64, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetNvLinkErrorCounter method\")\n//\t\t\t},\n//\t\t\tDeviceGetNvLinkInfoFunc: func(device nvml.Device) nvml.NvLinkInfoHandler {\n//\t\t\t\tpanic(\"mock out the DeviceGetNvLinkInfo method\")\n//\t\t\t},\n//\t\t\tDeviceGetNvLinkRemoteDeviceTypeFunc: func(device nvml.Device, n int) (nvml.IntNvLinkDeviceType, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetNvLinkRemoteDeviceType method\")\n//\t\t\t},\n//\t\t\tDeviceGetNvLinkRemotePciInfoFunc: func(device nvml.Device, n int) (nvml.PciInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetNvLinkRemotePciInfo method\")\n//\t\t\t},\n//\t\t\tDeviceGetNvLinkStateFunc: func(device nvml.Device, n int) (nvml.EnableState, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetNvLinkState method\")\n//\t\t\t},\n//\t\t\tDeviceGetNvLinkUtilizationControlFunc: func(device nvml.Device, n1 int, n2 int) (nvml.NvLinkUtilizationControl, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetNvLinkUtilizationControl method\")\n//\t\t\t},\n//\t\t\tDeviceGetNvLinkUtilizationCounterFunc: func(device nvml.Device, n1 int, n2 int) (uint64, uint64, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetNvLinkUtilizationCounter method\")\n//\t\t\t},\n//\t\t\tDeviceGetNvLinkVersionFunc: func(device nvml.Device, n int) (uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetNvLinkVersion method\")\n//\t\t\t},\n//\t\t\tDeviceGetNvlinkBwModeFunc: func(device nvml.Device) (nvml.NvlinkGetBwMode, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetNvlinkBwMode method\")\n//\t\t\t},\n//\t\t\tDeviceGetNvlinkSupportedBwModesFunc: func(device nvml.Device) (nvml.NvlinkSupportedBwModes, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetNvlinkSupportedBwModes method\")\n//\t\t\t},\n//\t\t\tDeviceGetOfaUtilizationFunc: func(device nvml.Device) (uint32, uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetOfaUtilization method\")\n//\t\t\t},\n//\t\t\tDeviceGetP2PStatusFunc: func(device1 nvml.Device, device2 nvml.Device, gpuP2PCapsIndex nvml.GpuP2PCapsIndex) (nvml.GpuP2PStatus, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetP2PStatus method\")\n//\t\t\t},\n//\t\t\tDeviceGetPciInfoFunc: func(device nvml.Device) (nvml.PciInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetPciInfo method\")\n//\t\t\t},\n//\t\t\tDeviceGetPciInfoExtFunc: func(device nvml.Device) (nvml.PciInfoExt, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetPciInfoExt method\")\n//\t\t\t},\n//\t\t\tDeviceGetPcieLinkMaxSpeedFunc: func(device nvml.Device) (uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetPcieLinkMaxSpeed method\")\n//\t\t\t},\n//\t\t\tDeviceGetPcieReplayCounterFunc: func(device nvml.Device) (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetPcieReplayCounter method\")\n//\t\t\t},\n//\t\t\tDeviceGetPcieSpeedFunc: func(device nvml.Device) (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetPcieSpeed method\")\n//\t\t\t},\n//\t\t\tDeviceGetPcieThroughputFunc: func(device nvml.Device, pcieUtilCounter nvml.PcieUtilCounter) (uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetPcieThroughput method\")\n//\t\t\t},\n//\t\t\tDeviceGetPdiFunc: func(device nvml.Device) (nvml.Pdi, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetPdi method\")\n//\t\t\t},\n//\t\t\tDeviceGetPerformanceModesFunc: func(device nvml.Device) (nvml.DevicePerfModes, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetPerformanceModes method\")\n//\t\t\t},\n//\t\t\tDeviceGetPerformanceStateFunc: func(device nvml.Device) (nvml.Pstates, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetPerformanceState method\")\n//\t\t\t},\n//\t\t\tDeviceGetPersistenceModeFunc: func(device nvml.Device) (nvml.EnableState, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetPersistenceMode method\")\n//\t\t\t},\n//\t\t\tDeviceGetPgpuMetadataStringFunc: func(device nvml.Device) (string, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetPgpuMetadataString method\")\n//\t\t\t},\n//\t\t\tDeviceGetPlatformInfoFunc: func(device nvml.Device) (nvml.PlatformInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetPlatformInfo method\")\n//\t\t\t},\n//\t\t\tDeviceGetPowerManagementDefaultLimitFunc: func(device nvml.Device) (uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetPowerManagementDefaultLimit method\")\n//\t\t\t},\n//\t\t\tDeviceGetPowerManagementLimitFunc: func(device nvml.Device) (uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetPowerManagementLimit method\")\n//\t\t\t},\n//\t\t\tDeviceGetPowerManagementLimitConstraintsFunc: func(device nvml.Device) (uint32, uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetPowerManagementLimitConstraints method\")\n//\t\t\t},\n//\t\t\tDeviceGetPowerManagementModeFunc: func(device nvml.Device) (nvml.EnableState, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetPowerManagementMode method\")\n//\t\t\t},\n//\t\t\tDeviceGetPowerMizerMode_v1Func: func(device nvml.Device) (nvml.DevicePowerMizerModes_v1, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetPowerMizerMode_v1 method\")\n//\t\t\t},\n//\t\t\tDeviceGetPowerSourceFunc: func(device nvml.Device) (nvml.PowerSource, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetPowerSource method\")\n//\t\t\t},\n//\t\t\tDeviceGetPowerStateFunc: func(device nvml.Device) (nvml.Pstates, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetPowerState method\")\n//\t\t\t},\n//\t\t\tDeviceGetPowerUsageFunc: func(device nvml.Device) (uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetPowerUsage method\")\n//\t\t\t},\n//\t\t\tDeviceGetProcessUtilizationFunc: func(device nvml.Device, v uint64) ([]nvml.ProcessUtilizationSample, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetProcessUtilization method\")\n//\t\t\t},\n//\t\t\tDeviceGetProcessesUtilizationInfoFunc: func(device nvml.Device) (nvml.ProcessesUtilizationInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetProcessesUtilizationInfo method\")\n//\t\t\t},\n//\t\t\tDeviceGetRemappedRowsFunc: func(device nvml.Device) (int, int, bool, bool, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetRemappedRows method\")\n//\t\t\t},\n//\t\t\tDeviceGetRepairStatusFunc: func(device nvml.Device) (nvml.RepairStatus, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetRepairStatus method\")\n//\t\t\t},\n//\t\t\tDeviceGetRetiredPagesFunc: func(device nvml.Device, pageRetirementCause nvml.PageRetirementCause) ([]uint64, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetRetiredPages method\")\n//\t\t\t},\n//\t\t\tDeviceGetRetiredPagesPendingStatusFunc: func(device nvml.Device) (nvml.EnableState, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetRetiredPagesPendingStatus method\")\n//\t\t\t},\n//\t\t\tDeviceGetRetiredPages_v2Func: func(device nvml.Device, pageRetirementCause nvml.PageRetirementCause) ([]uint64, []uint64, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetRetiredPages_v2 method\")\n//\t\t\t},\n//\t\t\tDeviceGetRowRemapperHistogramFunc: func(device nvml.Device) (nvml.RowRemapperHistogramValues, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetRowRemapperHistogram method\")\n//\t\t\t},\n//\t\t\tDeviceGetRunningProcessDetailListFunc: func(device nvml.Device) (nvml.ProcessDetailList, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetRunningProcessDetailList method\")\n//\t\t\t},\n//\t\t\tDeviceGetSamplesFunc: func(device nvml.Device, samplingType nvml.SamplingType, v uint64) (nvml.ValueType, []nvml.Sample, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetSamples method\")\n//\t\t\t},\n//\t\t\tDeviceGetSerialFunc: func(device nvml.Device) (string, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetSerial method\")\n//\t\t\t},\n//\t\t\tDeviceGetSramEccErrorStatusFunc: func(device nvml.Device) (nvml.EccSramErrorStatus, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetSramEccErrorStatus method\")\n//\t\t\t},\n//\t\t\tDeviceGetSramUniqueUncorrectedEccErrorCountsFunc: func(device nvml.Device, eccSramUniqueUncorrectedErrorCounts *nvml.EccSramUniqueUncorrectedErrorCounts) nvml.Return {\n//\t\t\t\tpanic(\"mock out the DeviceGetSramUniqueUncorrectedEccErrorCounts method\")\n//\t\t\t},\n//\t\t\tDeviceGetSupportedClocksEventReasonsFunc: func(device nvml.Device) (uint64, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetSupportedClocksEventReasons method\")\n//\t\t\t},\n//\t\t\tDeviceGetSupportedClocksThrottleReasonsFunc: func(device nvml.Device) (uint64, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetSupportedClocksThrottleReasons method\")\n//\t\t\t},\n//\t\t\tDeviceGetSupportedEventTypesFunc: func(device nvml.Device) (uint64, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetSupportedEventTypes method\")\n//\t\t\t},\n//\t\t\tDeviceGetSupportedGraphicsClocksFunc: func(device nvml.Device, n int) (int, uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetSupportedGraphicsClocks method\")\n//\t\t\t},\n//\t\t\tDeviceGetSupportedMemoryClocksFunc: func(device nvml.Device) (int, uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetSupportedMemoryClocks method\")\n//\t\t\t},\n//\t\t\tDeviceGetSupportedPerformanceStatesFunc: func(device nvml.Device) ([]nvml.Pstates, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetSupportedPerformanceStates method\")\n//\t\t\t},\n//\t\t\tDeviceGetSupportedVgpusFunc: func(device nvml.Device) ([]nvml.VgpuTypeId, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetSupportedVgpus method\")\n//\t\t\t},\n//\t\t\tDeviceGetTargetFanSpeedFunc: func(device nvml.Device, n int) (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetTargetFanSpeed method\")\n//\t\t\t},\n//\t\t\tDeviceGetTemperatureFunc: func(device nvml.Device, temperatureSensors nvml.TemperatureSensors) (uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetTemperature method\")\n//\t\t\t},\n//\t\t\tDeviceGetTemperatureThresholdFunc: func(device nvml.Device, temperatureThresholds nvml.TemperatureThresholds) (uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetTemperatureThreshold method\")\n//\t\t\t},\n//\t\t\tDeviceGetTemperatureVFunc: func(device nvml.Device) nvml.TemperatureHandler {\n//\t\t\t\tpanic(\"mock out the DeviceGetTemperatureV method\")\n//\t\t\t},\n//\t\t\tDeviceGetThermalSettingsFunc: func(device nvml.Device, v uint32) (nvml.GpuThermalSettings, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetThermalSettings method\")\n//\t\t\t},\n//\t\t\tDeviceGetTopologyCommonAncestorFunc: func(device1 nvml.Device, device2 nvml.Device) (nvml.GpuTopologyLevel, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetTopologyCommonAncestor method\")\n//\t\t\t},\n//\t\t\tDeviceGetTopologyNearestGpusFunc: func(device nvml.Device, gpuTopologyLevel nvml.GpuTopologyLevel) ([]nvml.Device, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetTopologyNearestGpus method\")\n//\t\t\t},\n//\t\t\tDeviceGetTotalEccErrorsFunc: func(device nvml.Device, memoryErrorType nvml.MemoryErrorType, eccCounterType nvml.EccCounterType) (uint64, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetTotalEccErrors method\")\n//\t\t\t},\n//\t\t\tDeviceGetTotalEnergyConsumptionFunc: func(device nvml.Device) (uint64, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetTotalEnergyConsumption method\")\n//\t\t\t},\n//\t\t\tDeviceGetUUIDFunc: func(device nvml.Device) (string, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetUUID method\")\n//\t\t\t},\n//\t\t\tDeviceGetUtilizationRatesFunc: func(device nvml.Device) (nvml.Utilization, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetUtilizationRates method\")\n//\t\t\t},\n//\t\t\tDeviceGetVbiosVersionFunc: func(device nvml.Device) (string, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetVbiosVersion method\")\n//\t\t\t},\n//\t\t\tDeviceGetVgpuCapabilitiesFunc: func(device nvml.Device, deviceVgpuCapability nvml.DeviceVgpuCapability) (bool, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetVgpuCapabilities method\")\n//\t\t\t},\n//\t\t\tDeviceGetVgpuHeterogeneousModeFunc: func(device nvml.Device) (nvml.VgpuHeterogeneousMode, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetVgpuHeterogeneousMode method\")\n//\t\t\t},\n//\t\t\tDeviceGetVgpuInstancesUtilizationInfoFunc: func(device nvml.Device) (nvml.VgpuInstancesUtilizationInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetVgpuInstancesUtilizationInfo method\")\n//\t\t\t},\n//\t\t\tDeviceGetVgpuMetadataFunc: func(device nvml.Device) (nvml.VgpuPgpuMetadata, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetVgpuMetadata method\")\n//\t\t\t},\n//\t\t\tDeviceGetVgpuProcessUtilizationFunc: func(device nvml.Device, v uint64) ([]nvml.VgpuProcessUtilizationSample, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetVgpuProcessUtilization method\")\n//\t\t\t},\n//\t\t\tDeviceGetVgpuProcessesUtilizationInfoFunc: func(device nvml.Device) (nvml.VgpuProcessesUtilizationInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetVgpuProcessesUtilizationInfo method\")\n//\t\t\t},\n//\t\t\tDeviceGetVgpuSchedulerCapabilitiesFunc: func(device nvml.Device) (nvml.VgpuSchedulerCapabilities, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetVgpuSchedulerCapabilities method\")\n//\t\t\t},\n//\t\t\tDeviceGetVgpuSchedulerLogFunc: func(device nvml.Device) (nvml.VgpuSchedulerLog, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetVgpuSchedulerLog method\")\n//\t\t\t},\n//\t\t\tDeviceGetVgpuSchedulerStateFunc: func(device nvml.Device) (nvml.VgpuSchedulerGetState, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetVgpuSchedulerState method\")\n//\t\t\t},\n//\t\t\tDeviceGetVgpuTypeCreatablePlacementsFunc: func(device nvml.Device, vgpuTypeId nvml.VgpuTypeId) (nvml.VgpuPlacementList, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetVgpuTypeCreatablePlacements method\")\n//\t\t\t},\n//\t\t\tDeviceGetVgpuTypeSupportedPlacementsFunc: func(device nvml.Device, vgpuTypeId nvml.VgpuTypeId) (nvml.VgpuPlacementList, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetVgpuTypeSupportedPlacements method\")\n//\t\t\t},\n//\t\t\tDeviceGetVgpuUtilizationFunc: func(device nvml.Device, v uint64) (nvml.ValueType, []nvml.VgpuInstanceUtilizationSample, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetVgpuUtilization method\")\n//\t\t\t},\n//\t\t\tDeviceGetViolationStatusFunc: func(device nvml.Device, perfPolicyType nvml.PerfPolicyType) (nvml.ViolationTime, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetViolationStatus method\")\n//\t\t\t},\n//\t\t\tDeviceGetVirtualizationModeFunc: func(device nvml.Device) (nvml.GpuVirtualizationMode, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceGetVirtualizationMode method\")\n//\t\t\t},\n//\t\t\tDeviceIsMigDeviceHandleFunc: func(device nvml.Device) (bool, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceIsMigDeviceHandle method\")\n//\t\t\t},\n//\t\t\tDeviceModifyDrainStateFunc: func(pciInfo *nvml.PciInfo, enableState nvml.EnableState) nvml.Return {\n//\t\t\t\tpanic(\"mock out the DeviceModifyDrainState method\")\n//\t\t\t},\n//\t\t\tDeviceOnSameBoardFunc: func(device1 nvml.Device, device2 nvml.Device) (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceOnSameBoard method\")\n//\t\t\t},\n//\t\t\tDevicePowerSmoothingActivatePresetProfileFunc: func(device nvml.Device, powerSmoothingProfile *nvml.PowerSmoothingProfile) nvml.Return {\n//\t\t\t\tpanic(\"mock out the DevicePowerSmoothingActivatePresetProfile method\")\n//\t\t\t},\n//\t\t\tDevicePowerSmoothingSetStateFunc: func(device nvml.Device, powerSmoothingState *nvml.PowerSmoothingState) nvml.Return {\n//\t\t\t\tpanic(\"mock out the DevicePowerSmoothingSetState method\")\n//\t\t\t},\n//\t\t\tDevicePowerSmoothingUpdatePresetProfileParamFunc: func(device nvml.Device, powerSmoothingProfile *nvml.PowerSmoothingProfile) nvml.Return {\n//\t\t\t\tpanic(\"mock out the DevicePowerSmoothingUpdatePresetProfileParam method\")\n//\t\t\t},\n//\t\t\tDeviceQueryDrainStateFunc: func(pciInfo *nvml.PciInfo) (nvml.EnableState, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceQueryDrainState method\")\n//\t\t\t},\n//\t\t\tDeviceReadWritePRM_v1Func: func(device nvml.Device, pRMTLV_v1 *nvml.PRMTLV_v1) nvml.Return {\n//\t\t\t\tpanic(\"mock out the DeviceReadWritePRM_v1 method\")\n//\t\t\t},\n//\t\t\tDeviceRegisterEventsFunc: func(device nvml.Device, v uint64, eventSet nvml.EventSet) nvml.Return {\n//\t\t\t\tpanic(\"mock out the DeviceRegisterEvents method\")\n//\t\t\t},\n//\t\t\tDeviceRemoveGpuFunc: func(pciInfo *nvml.PciInfo) nvml.Return {\n//\t\t\t\tpanic(\"mock out the DeviceRemoveGpu method\")\n//\t\t\t},\n//\t\t\tDeviceRemoveGpu_v2Func: func(pciInfo *nvml.PciInfo, detachGpuState nvml.DetachGpuState, pcieLinkState nvml.PcieLinkState) nvml.Return {\n//\t\t\t\tpanic(\"mock out the DeviceRemoveGpu_v2 method\")\n//\t\t\t},\n//\t\t\tDeviceResetApplicationsClocksFunc: func(device nvml.Device) nvml.Return {\n//\t\t\t\tpanic(\"mock out the DeviceResetApplicationsClocks method\")\n//\t\t\t},\n//\t\t\tDeviceResetGpuLockedClocksFunc: func(device nvml.Device) nvml.Return {\n//\t\t\t\tpanic(\"mock out the DeviceResetGpuLockedClocks method\")\n//\t\t\t},\n//\t\t\tDeviceResetMemoryLockedClocksFunc: func(device nvml.Device) nvml.Return {\n//\t\t\t\tpanic(\"mock out the DeviceResetMemoryLockedClocks method\")\n//\t\t\t},\n//\t\t\tDeviceResetNvLinkErrorCountersFunc: func(device nvml.Device, n int) nvml.Return {\n//\t\t\t\tpanic(\"mock out the DeviceResetNvLinkErrorCounters method\")\n//\t\t\t},\n//\t\t\tDeviceResetNvLinkUtilizationCounterFunc: func(device nvml.Device, n1 int, n2 int) nvml.Return {\n//\t\t\t\tpanic(\"mock out the DeviceResetNvLinkUtilizationCounter method\")\n//\t\t\t},\n//\t\t\tDeviceSetAPIRestrictionFunc: func(device nvml.Device, restrictedAPI nvml.RestrictedAPI, enableState nvml.EnableState) nvml.Return {\n//\t\t\t\tpanic(\"mock out the DeviceSetAPIRestriction method\")\n//\t\t\t},\n//\t\t\tDeviceSetAccountingModeFunc: func(device nvml.Device, enableState nvml.EnableState) nvml.Return {\n//\t\t\t\tpanic(\"mock out the DeviceSetAccountingMode method\")\n//\t\t\t},\n//\t\t\tDeviceSetApplicationsClocksFunc: func(device nvml.Device, v1 uint32, v2 uint32) nvml.Return {\n//\t\t\t\tpanic(\"mock out the DeviceSetApplicationsClocks method\")\n//\t\t\t},\n//\t\t\tDeviceSetAutoBoostedClocksEnabledFunc: func(device nvml.Device, enableState nvml.EnableState) nvml.Return {\n//\t\t\t\tpanic(\"mock out the DeviceSetAutoBoostedClocksEnabled method\")\n//\t\t\t},\n//\t\t\tDeviceSetClockOffsetsFunc: func(device nvml.Device, clockOffset nvml.ClockOffset) nvml.Return {\n//\t\t\t\tpanic(\"mock out the DeviceSetClockOffsets method\")\n//\t\t\t},\n//\t\t\tDeviceSetComputeModeFunc: func(device nvml.Device, computeMode nvml.ComputeMode) nvml.Return {\n//\t\t\t\tpanic(\"mock out the DeviceSetComputeMode method\")\n//\t\t\t},\n//\t\t\tDeviceSetConfComputeUnprotectedMemSizeFunc: func(device nvml.Device, v uint64) nvml.Return {\n//\t\t\t\tpanic(\"mock out the DeviceSetConfComputeUnprotectedMemSize method\")\n//\t\t\t},\n//\t\t\tDeviceSetCpuAffinityFunc: func(device nvml.Device) nvml.Return {\n//\t\t\t\tpanic(\"mock out the DeviceSetCpuAffinity method\")\n//\t\t\t},\n//\t\t\tDeviceSetDefaultAutoBoostedClocksEnabledFunc: func(device nvml.Device, enableState nvml.EnableState, v uint32) nvml.Return {\n//\t\t\t\tpanic(\"mock out the DeviceSetDefaultAutoBoostedClocksEnabled method\")\n//\t\t\t},\n//\t\t\tDeviceSetDefaultFanSpeed_v2Func: func(device nvml.Device, n int) nvml.Return {\n//\t\t\t\tpanic(\"mock out the DeviceSetDefaultFanSpeed_v2 method\")\n//\t\t\t},\n//\t\t\tDeviceSetDramEncryptionModeFunc: func(device nvml.Device, dramEncryptionInfo *nvml.DramEncryptionInfo) nvml.Return {\n//\t\t\t\tpanic(\"mock out the DeviceSetDramEncryptionMode method\")\n//\t\t\t},\n//\t\t\tDeviceSetDriverModelFunc: func(device nvml.Device, driverModel nvml.DriverModel, v uint32) nvml.Return {\n//\t\t\t\tpanic(\"mock out the DeviceSetDriverModel method\")\n//\t\t\t},\n//\t\t\tDeviceSetEccModeFunc: func(device nvml.Device, enableState nvml.EnableState) nvml.Return {\n//\t\t\t\tpanic(\"mock out the DeviceSetEccMode method\")\n//\t\t\t},\n//\t\t\tDeviceSetFanControlPolicyFunc: func(device nvml.Device, n int, fanControlPolicy nvml.FanControlPolicy) nvml.Return {\n//\t\t\t\tpanic(\"mock out the DeviceSetFanControlPolicy method\")\n//\t\t\t},\n//\t\t\tDeviceSetFanSpeed_v2Func: func(device nvml.Device, n1 int, n2 int) nvml.Return {\n//\t\t\t\tpanic(\"mock out the DeviceSetFanSpeed_v2 method\")\n//\t\t\t},\n//\t\t\tDeviceSetGpcClkVfOffsetFunc: func(device nvml.Device, n int) nvml.Return {\n//\t\t\t\tpanic(\"mock out the DeviceSetGpcClkVfOffset method\")\n//\t\t\t},\n//\t\t\tDeviceSetGpuLockedClocksFunc: func(device nvml.Device, v1 uint32, v2 uint32) nvml.Return {\n//\t\t\t\tpanic(\"mock out the DeviceSetGpuLockedClocks method\")\n//\t\t\t},\n//\t\t\tDeviceSetGpuOperationModeFunc: func(device nvml.Device, gpuOperationMode nvml.GpuOperationMode) nvml.Return {\n//\t\t\t\tpanic(\"mock out the DeviceSetGpuOperationMode method\")\n//\t\t\t},\n//\t\t\tDeviceSetMemClkVfOffsetFunc: func(device nvml.Device, n int) nvml.Return {\n//\t\t\t\tpanic(\"mock out the DeviceSetMemClkVfOffset method\")\n//\t\t\t},\n//\t\t\tDeviceSetMemoryLockedClocksFunc: func(device nvml.Device, v1 uint32, v2 uint32) nvml.Return {\n//\t\t\t\tpanic(\"mock out the DeviceSetMemoryLockedClocks method\")\n//\t\t\t},\n//\t\t\tDeviceSetMigModeFunc: func(device nvml.Device, n int) (nvml.Return, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceSetMigMode method\")\n//\t\t\t},\n//\t\t\tDeviceSetNvLinkDeviceLowPowerThresholdFunc: func(device nvml.Device, nvLinkPowerThres *nvml.NvLinkPowerThres) nvml.Return {\n//\t\t\t\tpanic(\"mock out the DeviceSetNvLinkDeviceLowPowerThreshold method\")\n//\t\t\t},\n//\t\t\tDeviceSetNvLinkUtilizationControlFunc: func(device nvml.Device, n1 int, n2 int, nvLinkUtilizationControl *nvml.NvLinkUtilizationControl, b bool) nvml.Return {\n//\t\t\t\tpanic(\"mock out the DeviceSetNvLinkUtilizationControl method\")\n//\t\t\t},\n//\t\t\tDeviceSetNvlinkBwModeFunc: func(device nvml.Device, nvlinkSetBwMode *nvml.NvlinkSetBwMode) nvml.Return {\n//\t\t\t\tpanic(\"mock out the DeviceSetNvlinkBwMode method\")\n//\t\t\t},\n//\t\t\tDeviceSetPersistenceModeFunc: func(device nvml.Device, enableState nvml.EnableState) nvml.Return {\n//\t\t\t\tpanic(\"mock out the DeviceSetPersistenceMode method\")\n//\t\t\t},\n//\t\t\tDeviceSetPowerManagementLimitFunc: func(device nvml.Device, v uint32) nvml.Return {\n//\t\t\t\tpanic(\"mock out the DeviceSetPowerManagementLimit method\")\n//\t\t\t},\n//\t\t\tDeviceSetPowerManagementLimit_v2Func: func(device nvml.Device, powerValue_v2 *nvml.PowerValue_v2) nvml.Return {\n//\t\t\t\tpanic(\"mock out the DeviceSetPowerManagementLimit_v2 method\")\n//\t\t\t},\n//\t\t\tDeviceSetTemperatureThresholdFunc: func(device nvml.Device, temperatureThresholds nvml.TemperatureThresholds, n int) nvml.Return {\n//\t\t\t\tpanic(\"mock out the DeviceSetTemperatureThreshold method\")\n//\t\t\t},\n//\t\t\tDeviceSetVgpuCapabilitiesFunc: func(device nvml.Device, deviceVgpuCapability nvml.DeviceVgpuCapability, enableState nvml.EnableState) nvml.Return {\n//\t\t\t\tpanic(\"mock out the DeviceSetVgpuCapabilities method\")\n//\t\t\t},\n//\t\t\tDeviceSetVgpuHeterogeneousModeFunc: func(device nvml.Device, vgpuHeterogeneousMode nvml.VgpuHeterogeneousMode) nvml.Return {\n//\t\t\t\tpanic(\"mock out the DeviceSetVgpuHeterogeneousMode method\")\n//\t\t\t},\n//\t\t\tDeviceSetVgpuSchedulerStateFunc: func(device nvml.Device, vgpuSchedulerSetState *nvml.VgpuSchedulerSetState) nvml.Return {\n//\t\t\t\tpanic(\"mock out the DeviceSetVgpuSchedulerState method\")\n//\t\t\t},\n//\t\t\tDeviceSetVirtualizationModeFunc: func(device nvml.Device, gpuVirtualizationMode nvml.GpuVirtualizationMode) nvml.Return {\n//\t\t\t\tpanic(\"mock out the DeviceSetVirtualizationMode method\")\n//\t\t\t},\n//\t\t\tDeviceValidateInforomFunc: func(device nvml.Device) nvml.Return {\n//\t\t\t\tpanic(\"mock out the DeviceValidateInforom method\")\n//\t\t\t},\n//\t\t\tDeviceWorkloadPowerProfileClearRequestedProfilesFunc: func(device nvml.Device, workloadPowerProfileRequestedProfiles *nvml.WorkloadPowerProfileRequestedProfiles) nvml.Return {\n//\t\t\t\tpanic(\"mock out the DeviceWorkloadPowerProfileClearRequestedProfiles method\")\n//\t\t\t},\n//\t\t\tDeviceWorkloadPowerProfileGetCurrentProfilesFunc: func(device nvml.Device) (nvml.WorkloadPowerProfileCurrentProfiles, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceWorkloadPowerProfileGetCurrentProfiles method\")\n//\t\t\t},\n//\t\t\tDeviceWorkloadPowerProfileGetProfilesInfoFunc: func(device nvml.Device) (nvml.WorkloadPowerProfileProfilesInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the DeviceWorkloadPowerProfileGetProfilesInfo method\")\n//\t\t\t},\n//\t\t\tDeviceWorkloadPowerProfileSetRequestedProfilesFunc: func(device nvml.Device, workloadPowerProfileRequestedProfiles *nvml.WorkloadPowerProfileRequestedProfiles) nvml.Return {\n//\t\t\t\tpanic(\"mock out the DeviceWorkloadPowerProfileSetRequestedProfiles method\")\n//\t\t\t},\n//\t\t\tErrorStringFunc: func(returnMoqParam nvml.Return) string {\n//\t\t\t\tpanic(\"mock out the ErrorString method\")\n//\t\t\t},\n//\t\t\tEventSetCreateFunc: func() (nvml.EventSet, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the EventSetCreate method\")\n//\t\t\t},\n//\t\t\tEventSetFreeFunc: func(eventSet nvml.EventSet) nvml.Return {\n//\t\t\t\tpanic(\"mock out the EventSetFree method\")\n//\t\t\t},\n//\t\t\tEventSetWaitFunc: func(eventSet nvml.EventSet, v uint32) (nvml.EventData, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the EventSetWait method\")\n//\t\t\t},\n//\t\t\tExtensionsFunc: func() nvml.ExtendedInterface {\n//\t\t\t\tpanic(\"mock out the Extensions method\")\n//\t\t\t},\n//\t\t\tGetExcludedDeviceCountFunc: func() (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetExcludedDeviceCount method\")\n//\t\t\t},\n//\t\t\tGetExcludedDeviceInfoByIndexFunc: func(n int) (nvml.ExcludedDeviceInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetExcludedDeviceInfoByIndex method\")\n//\t\t\t},\n//\t\t\tGetVgpuCompatibilityFunc: func(vgpuMetadata *nvml.VgpuMetadata, vgpuPgpuMetadata *nvml.VgpuPgpuMetadata) (nvml.VgpuPgpuCompatibility, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetVgpuCompatibility method\")\n//\t\t\t},\n//\t\t\tGetVgpuDriverCapabilitiesFunc: func(vgpuDriverCapability nvml.VgpuDriverCapability) (bool, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetVgpuDriverCapabilities method\")\n//\t\t\t},\n//\t\t\tGetVgpuVersionFunc: func() (nvml.VgpuVersion, nvml.VgpuVersion, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetVgpuVersion method\")\n//\t\t\t},\n//\t\t\tGpmMetricsGetFunc: func(gpmMetricsGetType *nvml.GpmMetricsGetType) nvml.Return {\n//\t\t\t\tpanic(\"mock out the GpmMetricsGet method\")\n//\t\t\t},\n//\t\t\tGpmMetricsGetVFunc: func(gpmMetricsGetType *nvml.GpmMetricsGetType) nvml.GpmMetricsGetVType {\n//\t\t\t\tpanic(\"mock out the GpmMetricsGetV method\")\n//\t\t\t},\n//\t\t\tGpmMigSampleGetFunc: func(device nvml.Device, n int, gpmSample nvml.GpmSample) nvml.Return {\n//\t\t\t\tpanic(\"mock out the GpmMigSampleGet method\")\n//\t\t\t},\n//\t\t\tGpmQueryDeviceSupportFunc: func(device nvml.Device) (nvml.GpmSupport, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GpmQueryDeviceSupport method\")\n//\t\t\t},\n//\t\t\tGpmQueryDeviceSupportVFunc: func(device nvml.Device) nvml.GpmSupportV {\n//\t\t\t\tpanic(\"mock out the GpmQueryDeviceSupportV method\")\n//\t\t\t},\n//\t\t\tGpmQueryIfStreamingEnabledFunc: func(device nvml.Device) (uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GpmQueryIfStreamingEnabled method\")\n//\t\t\t},\n//\t\t\tGpmSampleAllocFunc: func() (nvml.GpmSample, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GpmSampleAlloc method\")\n//\t\t\t},\n//\t\t\tGpmSampleFreeFunc: func(gpmSample nvml.GpmSample) nvml.Return {\n//\t\t\t\tpanic(\"mock out the GpmSampleFree method\")\n//\t\t\t},\n//\t\t\tGpmSampleGetFunc: func(device nvml.Device, gpmSample nvml.GpmSample) nvml.Return {\n//\t\t\t\tpanic(\"mock out the GpmSampleGet method\")\n//\t\t\t},\n//\t\t\tGpmSetStreamingEnabledFunc: func(device nvml.Device, v uint32) nvml.Return {\n//\t\t\t\tpanic(\"mock out the GpmSetStreamingEnabled method\")\n//\t\t\t},\n//\t\t\tGpuInstanceCreateComputeInstanceFunc: func(gpuInstance nvml.GpuInstance, computeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo) (nvml.ComputeInstance, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GpuInstanceCreateComputeInstance method\")\n//\t\t\t},\n//\t\t\tGpuInstanceCreateComputeInstanceWithPlacementFunc: func(gpuInstance nvml.GpuInstance, computeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo, computeInstancePlacement *nvml.ComputeInstancePlacement) (nvml.ComputeInstance, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GpuInstanceCreateComputeInstanceWithPlacement method\")\n//\t\t\t},\n//\t\t\tGpuInstanceDestroyFunc: func(gpuInstance nvml.GpuInstance) nvml.Return {\n//\t\t\t\tpanic(\"mock out the GpuInstanceDestroy method\")\n//\t\t\t},\n//\t\t\tGpuInstanceGetActiveVgpusFunc: func(gpuInstance nvml.GpuInstance) (nvml.ActiveVgpuInstanceInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GpuInstanceGetActiveVgpus method\")\n//\t\t\t},\n//\t\t\tGpuInstanceGetComputeInstanceByIdFunc: func(gpuInstance nvml.GpuInstance, n int) (nvml.ComputeInstance, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GpuInstanceGetComputeInstanceById method\")\n//\t\t\t},\n//\t\t\tGpuInstanceGetComputeInstancePossiblePlacementsFunc: func(gpuInstance nvml.GpuInstance, computeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo) ([]nvml.ComputeInstancePlacement, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GpuInstanceGetComputeInstancePossiblePlacements method\")\n//\t\t\t},\n//\t\t\tGpuInstanceGetComputeInstanceProfileInfoFunc: func(gpuInstance nvml.GpuInstance, n1 int, n2 int) (nvml.ComputeInstanceProfileInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GpuInstanceGetComputeInstanceProfileInfo method\")\n//\t\t\t},\n//\t\t\tGpuInstanceGetComputeInstanceProfileInfoVFunc: func(gpuInstance nvml.GpuInstance, n1 int, n2 int) nvml.ComputeInstanceProfileInfoHandler {\n//\t\t\t\tpanic(\"mock out the GpuInstanceGetComputeInstanceProfileInfoV method\")\n//\t\t\t},\n//\t\t\tGpuInstanceGetComputeInstanceRemainingCapacityFunc: func(gpuInstance nvml.GpuInstance, computeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo) (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GpuInstanceGetComputeInstanceRemainingCapacity method\")\n//\t\t\t},\n//\t\t\tGpuInstanceGetComputeInstancesFunc: func(gpuInstance nvml.GpuInstance, computeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo) ([]nvml.ComputeInstance, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GpuInstanceGetComputeInstances method\")\n//\t\t\t},\n//\t\t\tGpuInstanceGetCreatableVgpusFunc: func(gpuInstance nvml.GpuInstance) (nvml.VgpuTypeIdInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GpuInstanceGetCreatableVgpus method\")\n//\t\t\t},\n//\t\t\tGpuInstanceGetInfoFunc: func(gpuInstance nvml.GpuInstance) (nvml.GpuInstanceInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GpuInstanceGetInfo method\")\n//\t\t\t},\n//\t\t\tGpuInstanceGetVgpuHeterogeneousModeFunc: func(gpuInstance nvml.GpuInstance) (nvml.VgpuHeterogeneousMode, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GpuInstanceGetVgpuHeterogeneousMode method\")\n//\t\t\t},\n//\t\t\tGpuInstanceGetVgpuSchedulerLogFunc: func(gpuInstance nvml.GpuInstance) (nvml.VgpuSchedulerLogInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GpuInstanceGetVgpuSchedulerLog method\")\n//\t\t\t},\n//\t\t\tGpuInstanceGetVgpuSchedulerStateFunc: func(gpuInstance nvml.GpuInstance) (nvml.VgpuSchedulerStateInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GpuInstanceGetVgpuSchedulerState method\")\n//\t\t\t},\n//\t\t\tGpuInstanceGetVgpuTypeCreatablePlacementsFunc: func(gpuInstance nvml.GpuInstance) (nvml.VgpuCreatablePlacementInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GpuInstanceGetVgpuTypeCreatablePlacements method\")\n//\t\t\t},\n//\t\t\tGpuInstanceSetVgpuHeterogeneousModeFunc: func(gpuInstance nvml.GpuInstance, vgpuHeterogeneousMode *nvml.VgpuHeterogeneousMode) nvml.Return {\n//\t\t\t\tpanic(\"mock out the GpuInstanceSetVgpuHeterogeneousMode method\")\n//\t\t\t},\n//\t\t\tGpuInstanceSetVgpuSchedulerStateFunc: func(gpuInstance nvml.GpuInstance, vgpuSchedulerState *nvml.VgpuSchedulerState) nvml.Return {\n//\t\t\t\tpanic(\"mock out the GpuInstanceSetVgpuSchedulerState method\")\n//\t\t\t},\n//\t\t\tInitFunc: func() nvml.Return {\n//\t\t\t\tpanic(\"mock out the Init method\")\n//\t\t\t},\n//\t\t\tInitWithFlagsFunc: func(v uint32) nvml.Return {\n//\t\t\t\tpanic(\"mock out the InitWithFlags method\")\n//\t\t\t},\n//\t\t\tSetVgpuVersionFunc: func(vgpuVersion *nvml.VgpuVersion) nvml.Return {\n//\t\t\t\tpanic(\"mock out the SetVgpuVersion method\")\n//\t\t\t},\n//\t\t\tShutdownFunc: func() nvml.Return {\n//\t\t\t\tpanic(\"mock out the Shutdown method\")\n//\t\t\t},\n//\t\t\tSystemEventSetCreateFunc: func(systemEventSetCreateRequest *nvml.SystemEventSetCreateRequest) nvml.Return {\n//\t\t\t\tpanic(\"mock out the SystemEventSetCreate method\")\n//\t\t\t},\n//\t\t\tSystemEventSetFreeFunc: func(systemEventSetFreeRequest *nvml.SystemEventSetFreeRequest) nvml.Return {\n//\t\t\t\tpanic(\"mock out the SystemEventSetFree method\")\n//\t\t\t},\n//\t\t\tSystemEventSetWaitFunc: func(systemEventSetWaitRequest *nvml.SystemEventSetWaitRequest) nvml.Return {\n//\t\t\t\tpanic(\"mock out the SystemEventSetWait method\")\n//\t\t\t},\n//\t\t\tSystemGetConfComputeCapabilitiesFunc: func() (nvml.ConfComputeSystemCaps, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the SystemGetConfComputeCapabilities method\")\n//\t\t\t},\n//\t\t\tSystemGetConfComputeGpusReadyStateFunc: func() (uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the SystemGetConfComputeGpusReadyState method\")\n//\t\t\t},\n//\t\t\tSystemGetConfComputeKeyRotationThresholdInfoFunc: func() (nvml.ConfComputeGetKeyRotationThresholdInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the SystemGetConfComputeKeyRotationThresholdInfo method\")\n//\t\t\t},\n//\t\t\tSystemGetConfComputeSettingsFunc: func() (nvml.SystemConfComputeSettings, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the SystemGetConfComputeSettings method\")\n//\t\t\t},\n//\t\t\tSystemGetConfComputeStateFunc: func() (nvml.ConfComputeSystemState, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the SystemGetConfComputeState method\")\n//\t\t\t},\n//\t\t\tSystemGetCudaDriverVersionFunc: func() (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the SystemGetCudaDriverVersion method\")\n//\t\t\t},\n//\t\t\tSystemGetCudaDriverVersion_v2Func: func() (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the SystemGetCudaDriverVersion_v2 method\")\n//\t\t\t},\n//\t\t\tSystemGetDriverBranchFunc: func() (nvml.SystemDriverBranchInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the SystemGetDriverBranch method\")\n//\t\t\t},\n//\t\t\tSystemGetDriverVersionFunc: func() (string, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the SystemGetDriverVersion method\")\n//\t\t\t},\n//\t\t\tSystemGetHicVersionFunc: func() ([]nvml.HwbcEntry, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the SystemGetHicVersion method\")\n//\t\t\t},\n//\t\t\tSystemGetNVMLVersionFunc: func() (string, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the SystemGetNVMLVersion method\")\n//\t\t\t},\n//\t\t\tSystemGetNvlinkBwModeFunc: func() (uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the SystemGetNvlinkBwMode method\")\n//\t\t\t},\n//\t\t\tSystemGetProcessNameFunc: func(n int) (string, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the SystemGetProcessName method\")\n//\t\t\t},\n//\t\t\tSystemGetTopologyGpuSetFunc: func(n int) ([]nvml.Device, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the SystemGetTopologyGpuSet method\")\n//\t\t\t},\n//\t\t\tSystemRegisterEventsFunc: func(systemRegisterEventRequest *nvml.SystemRegisterEventRequest) nvml.Return {\n//\t\t\t\tpanic(\"mock out the SystemRegisterEvents method\")\n//\t\t\t},\n//\t\t\tSystemSetConfComputeGpusReadyStateFunc: func(v uint32) nvml.Return {\n//\t\t\t\tpanic(\"mock out the SystemSetConfComputeGpusReadyState method\")\n//\t\t\t},\n//\t\t\tSystemSetConfComputeKeyRotationThresholdInfoFunc: func(confComputeSetKeyRotationThresholdInfo nvml.ConfComputeSetKeyRotationThresholdInfo) nvml.Return {\n//\t\t\t\tpanic(\"mock out the SystemSetConfComputeKeyRotationThresholdInfo method\")\n//\t\t\t},\n//\t\t\tSystemSetNvlinkBwModeFunc: func(v uint32) nvml.Return {\n//\t\t\t\tpanic(\"mock out the SystemSetNvlinkBwMode method\")\n//\t\t\t},\n//\t\t\tUnitGetCountFunc: func() (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the UnitGetCount method\")\n//\t\t\t},\n//\t\t\tUnitGetDevicesFunc: func(unit nvml.Unit) ([]nvml.Device, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the UnitGetDevices method\")\n//\t\t\t},\n//\t\t\tUnitGetFanSpeedInfoFunc: func(unit nvml.Unit) (nvml.UnitFanSpeeds, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the UnitGetFanSpeedInfo method\")\n//\t\t\t},\n//\t\t\tUnitGetHandleByIndexFunc: func(n int) (nvml.Unit, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the UnitGetHandleByIndex method\")\n//\t\t\t},\n//\t\t\tUnitGetLedStateFunc: func(unit nvml.Unit) (nvml.LedState, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the UnitGetLedState method\")\n//\t\t\t},\n//\t\t\tUnitGetPsuInfoFunc: func(unit nvml.Unit) (nvml.PSUInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the UnitGetPsuInfo method\")\n//\t\t\t},\n//\t\t\tUnitGetTemperatureFunc: func(unit nvml.Unit, n int) (uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the UnitGetTemperature method\")\n//\t\t\t},\n//\t\t\tUnitGetUnitInfoFunc: func(unit nvml.Unit) (nvml.UnitInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the UnitGetUnitInfo method\")\n//\t\t\t},\n//\t\t\tUnitSetLedStateFunc: func(unit nvml.Unit, ledColor nvml.LedColor) nvml.Return {\n//\t\t\t\tpanic(\"mock out the UnitSetLedState method\")\n//\t\t\t},\n//\t\t\tVgpuInstanceClearAccountingPidsFunc: func(vgpuInstance nvml.VgpuInstance) nvml.Return {\n//\t\t\t\tpanic(\"mock out the VgpuInstanceClearAccountingPids method\")\n//\t\t\t},\n//\t\t\tVgpuInstanceGetAccountingModeFunc: func(vgpuInstance nvml.VgpuInstance) (nvml.EnableState, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the VgpuInstanceGetAccountingMode method\")\n//\t\t\t},\n//\t\t\tVgpuInstanceGetAccountingPidsFunc: func(vgpuInstance nvml.VgpuInstance) ([]int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the VgpuInstanceGetAccountingPids method\")\n//\t\t\t},\n//\t\t\tVgpuInstanceGetAccountingStatsFunc: func(vgpuInstance nvml.VgpuInstance, n int) (nvml.AccountingStats, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the VgpuInstanceGetAccountingStats method\")\n//\t\t\t},\n//\t\t\tVgpuInstanceGetEccModeFunc: func(vgpuInstance nvml.VgpuInstance) (nvml.EnableState, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the VgpuInstanceGetEccMode method\")\n//\t\t\t},\n//\t\t\tVgpuInstanceGetEncoderCapacityFunc: func(vgpuInstance nvml.VgpuInstance) (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the VgpuInstanceGetEncoderCapacity method\")\n//\t\t\t},\n//\t\t\tVgpuInstanceGetEncoderSessionsFunc: func(vgpuInstance nvml.VgpuInstance) (int, nvml.EncoderSessionInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the VgpuInstanceGetEncoderSessions method\")\n//\t\t\t},\n//\t\t\tVgpuInstanceGetEncoderStatsFunc: func(vgpuInstance nvml.VgpuInstance) (int, uint32, uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the VgpuInstanceGetEncoderStats method\")\n//\t\t\t},\n//\t\t\tVgpuInstanceGetFBCSessionsFunc: func(vgpuInstance nvml.VgpuInstance) (int, nvml.FBCSessionInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the VgpuInstanceGetFBCSessions method\")\n//\t\t\t},\n//\t\t\tVgpuInstanceGetFBCStatsFunc: func(vgpuInstance nvml.VgpuInstance) (nvml.FBCStats, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the VgpuInstanceGetFBCStats method\")\n//\t\t\t},\n//\t\t\tVgpuInstanceGetFbUsageFunc: func(vgpuInstance nvml.VgpuInstance) (uint64, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the VgpuInstanceGetFbUsage method\")\n//\t\t\t},\n//\t\t\tVgpuInstanceGetFrameRateLimitFunc: func(vgpuInstance nvml.VgpuInstance) (uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the VgpuInstanceGetFrameRateLimit method\")\n//\t\t\t},\n//\t\t\tVgpuInstanceGetGpuInstanceIdFunc: func(vgpuInstance nvml.VgpuInstance) (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the VgpuInstanceGetGpuInstanceId method\")\n//\t\t\t},\n//\t\t\tVgpuInstanceGetGpuPciIdFunc: func(vgpuInstance nvml.VgpuInstance) (string, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the VgpuInstanceGetGpuPciId method\")\n//\t\t\t},\n//\t\t\tVgpuInstanceGetLicenseInfoFunc: func(vgpuInstance nvml.VgpuInstance) (nvml.VgpuLicenseInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the VgpuInstanceGetLicenseInfo method\")\n//\t\t\t},\n//\t\t\tVgpuInstanceGetLicenseStatusFunc: func(vgpuInstance nvml.VgpuInstance) (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the VgpuInstanceGetLicenseStatus method\")\n//\t\t\t},\n//\t\t\tVgpuInstanceGetMdevUUIDFunc: func(vgpuInstance nvml.VgpuInstance) (string, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the VgpuInstanceGetMdevUUID method\")\n//\t\t\t},\n//\t\t\tVgpuInstanceGetMetadataFunc: func(vgpuInstance nvml.VgpuInstance) (nvml.VgpuMetadata, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the VgpuInstanceGetMetadata method\")\n//\t\t\t},\n//\t\t\tVgpuInstanceGetRuntimeStateSizeFunc: func(vgpuInstance nvml.VgpuInstance) (nvml.VgpuRuntimeState, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the VgpuInstanceGetRuntimeStateSize method\")\n//\t\t\t},\n//\t\t\tVgpuInstanceGetTypeFunc: func(vgpuInstance nvml.VgpuInstance) (nvml.VgpuTypeId, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the VgpuInstanceGetType method\")\n//\t\t\t},\n//\t\t\tVgpuInstanceGetUUIDFunc: func(vgpuInstance nvml.VgpuInstance) (string, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the VgpuInstanceGetUUID method\")\n//\t\t\t},\n//\t\t\tVgpuInstanceGetVmDriverVersionFunc: func(vgpuInstance nvml.VgpuInstance) (string, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the VgpuInstanceGetVmDriverVersion method\")\n//\t\t\t},\n//\t\t\tVgpuInstanceGetVmIDFunc: func(vgpuInstance nvml.VgpuInstance) (string, nvml.VgpuVmIdType, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the VgpuInstanceGetVmID method\")\n//\t\t\t},\n//\t\t\tVgpuInstanceSetEncoderCapacityFunc: func(vgpuInstance nvml.VgpuInstance, n int) nvml.Return {\n//\t\t\t\tpanic(\"mock out the VgpuInstanceSetEncoderCapacity method\")\n//\t\t\t},\n//\t\t\tVgpuTypeGetBAR1InfoFunc: func(vgpuTypeId nvml.VgpuTypeId) (nvml.VgpuTypeBar1Info, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the VgpuTypeGetBAR1Info method\")\n//\t\t\t},\n//\t\t\tVgpuTypeGetCapabilitiesFunc: func(vgpuTypeId nvml.VgpuTypeId, vgpuCapability nvml.VgpuCapability) (bool, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the VgpuTypeGetCapabilities method\")\n//\t\t\t},\n//\t\t\tVgpuTypeGetClassFunc: func(vgpuTypeId nvml.VgpuTypeId) (string, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the VgpuTypeGetClass method\")\n//\t\t\t},\n//\t\t\tVgpuTypeGetDeviceIDFunc: func(vgpuTypeId nvml.VgpuTypeId) (uint64, uint64, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the VgpuTypeGetDeviceID method\")\n//\t\t\t},\n//\t\t\tVgpuTypeGetFrameRateLimitFunc: func(vgpuTypeId nvml.VgpuTypeId) (uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the VgpuTypeGetFrameRateLimit method\")\n//\t\t\t},\n//\t\t\tVgpuTypeGetFramebufferSizeFunc: func(vgpuTypeId nvml.VgpuTypeId) (uint64, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the VgpuTypeGetFramebufferSize method\")\n//\t\t\t},\n//\t\t\tVgpuTypeGetGpuInstanceProfileIdFunc: func(vgpuTypeId nvml.VgpuTypeId) (uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the VgpuTypeGetGpuInstanceProfileId method\")\n//\t\t\t},\n//\t\t\tVgpuTypeGetLicenseFunc: func(vgpuTypeId nvml.VgpuTypeId) (string, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the VgpuTypeGetLicense method\")\n//\t\t\t},\n//\t\t\tVgpuTypeGetMaxInstancesFunc: func(device nvml.Device, vgpuTypeId nvml.VgpuTypeId) (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the VgpuTypeGetMaxInstances method\")\n//\t\t\t},\n//\t\t\tVgpuTypeGetMaxInstancesPerGpuInstanceFunc: func(vgpuTypeMaxInstance *nvml.VgpuTypeMaxInstance) nvml.Return {\n//\t\t\t\tpanic(\"mock out the VgpuTypeGetMaxInstancesPerGpuInstance method\")\n//\t\t\t},\n//\t\t\tVgpuTypeGetMaxInstancesPerVmFunc: func(vgpuTypeId nvml.VgpuTypeId) (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the VgpuTypeGetMaxInstancesPerVm method\")\n//\t\t\t},\n//\t\t\tVgpuTypeGetNameFunc: func(vgpuTypeId nvml.VgpuTypeId) (string, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the VgpuTypeGetName method\")\n//\t\t\t},\n//\t\t\tVgpuTypeGetNumDisplayHeadsFunc: func(vgpuTypeId nvml.VgpuTypeId) (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the VgpuTypeGetNumDisplayHeads method\")\n//\t\t\t},\n//\t\t\tVgpuTypeGetResolutionFunc: func(vgpuTypeId nvml.VgpuTypeId, n int) (uint32, uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the VgpuTypeGetResolution method\")\n//\t\t\t},\n//\t\t}\n//\n//\t\t// use mockedInterface in code that requires nvml.Interface\n//\t\t// and then make assertions.\n//\n//\t}\ntype Interface struct {\n\t// ComputeInstanceDestroyFunc mocks the ComputeInstanceDestroy method.\n\tComputeInstanceDestroyFunc func(computeInstance nvml.ComputeInstance) nvml.Return\n\n\t// ComputeInstanceGetInfoFunc mocks the ComputeInstanceGetInfo method.\n\tComputeInstanceGetInfoFunc func(computeInstance nvml.ComputeInstance) (nvml.ComputeInstanceInfo, nvml.Return)\n\n\t// DeviceClearAccountingPidsFunc mocks the DeviceClearAccountingPids method.\n\tDeviceClearAccountingPidsFunc func(device nvml.Device) nvml.Return\n\n\t// DeviceClearCpuAffinityFunc mocks the DeviceClearCpuAffinity method.\n\tDeviceClearCpuAffinityFunc func(device nvml.Device) nvml.Return\n\n\t// DeviceClearEccErrorCountsFunc mocks the DeviceClearEccErrorCounts method.\n\tDeviceClearEccErrorCountsFunc func(device nvml.Device, eccCounterType nvml.EccCounterType) nvml.Return\n\n\t// DeviceClearFieldValuesFunc mocks the DeviceClearFieldValues method.\n\tDeviceClearFieldValuesFunc func(device nvml.Device, fieldValues []nvml.FieldValue) nvml.Return\n\n\t// DeviceCreateGpuInstanceFunc mocks the DeviceCreateGpuInstance method.\n\tDeviceCreateGpuInstanceFunc func(device nvml.Device, gpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo) (nvml.GpuInstance, nvml.Return)\n\n\t// DeviceCreateGpuInstanceWithPlacementFunc mocks the DeviceCreateGpuInstanceWithPlacement method.\n\tDeviceCreateGpuInstanceWithPlacementFunc func(device nvml.Device, gpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo, gpuInstancePlacement *nvml.GpuInstancePlacement) (nvml.GpuInstance, nvml.Return)\n\n\t// DeviceDiscoverGpusFunc mocks the DeviceDiscoverGpus method.\n\tDeviceDiscoverGpusFunc func() (nvml.PciInfo, nvml.Return)\n\n\t// DeviceFreezeNvLinkUtilizationCounterFunc mocks the DeviceFreezeNvLinkUtilizationCounter method.\n\tDeviceFreezeNvLinkUtilizationCounterFunc func(device nvml.Device, n1 int, n2 int, enableState nvml.EnableState) nvml.Return\n\n\t// DeviceGetAPIRestrictionFunc mocks the DeviceGetAPIRestriction method.\n\tDeviceGetAPIRestrictionFunc func(device nvml.Device, restrictedAPI nvml.RestrictedAPI) (nvml.EnableState, nvml.Return)\n\n\t// DeviceGetAccountingBufferSizeFunc mocks the DeviceGetAccountingBufferSize method.\n\tDeviceGetAccountingBufferSizeFunc func(device nvml.Device) (int, nvml.Return)\n\n\t// DeviceGetAccountingModeFunc mocks the DeviceGetAccountingMode method.\n\tDeviceGetAccountingModeFunc func(device nvml.Device) (nvml.EnableState, nvml.Return)\n\n\t// DeviceGetAccountingPidsFunc mocks the DeviceGetAccountingPids method.\n\tDeviceGetAccountingPidsFunc func(device nvml.Device) ([]int, nvml.Return)\n\n\t// DeviceGetAccountingStatsFunc mocks the DeviceGetAccountingStats method.\n\tDeviceGetAccountingStatsFunc func(device nvml.Device, v uint32) (nvml.AccountingStats, nvml.Return)\n\n\t// DeviceGetActiveVgpusFunc mocks the DeviceGetActiveVgpus method.\n\tDeviceGetActiveVgpusFunc func(device nvml.Device) ([]nvml.VgpuInstance, nvml.Return)\n\n\t// DeviceGetAdaptiveClockInfoStatusFunc mocks the DeviceGetAdaptiveClockInfoStatus method.\n\tDeviceGetAdaptiveClockInfoStatusFunc func(device nvml.Device) (uint32, nvml.Return)\n\n\t// DeviceGetAddressingModeFunc mocks the DeviceGetAddressingMode method.\n\tDeviceGetAddressingModeFunc func(device nvml.Device) (nvml.DeviceAddressingMode, nvml.Return)\n\n\t// DeviceGetApplicationsClockFunc mocks the DeviceGetApplicationsClock method.\n\tDeviceGetApplicationsClockFunc func(device nvml.Device, clockType nvml.ClockType) (uint32, nvml.Return)\n\n\t// DeviceGetArchitectureFunc mocks the DeviceGetArchitecture method.\n\tDeviceGetArchitectureFunc func(device nvml.Device) (nvml.DeviceArchitecture, nvml.Return)\n\n\t// DeviceGetAttributesFunc mocks the DeviceGetAttributes method.\n\tDeviceGetAttributesFunc func(device nvml.Device) (nvml.DeviceAttributes, nvml.Return)\n\n\t// DeviceGetAutoBoostedClocksEnabledFunc mocks the DeviceGetAutoBoostedClocksEnabled method.\n\tDeviceGetAutoBoostedClocksEnabledFunc func(device nvml.Device) (nvml.EnableState, nvml.EnableState, nvml.Return)\n\n\t// DeviceGetBAR1MemoryInfoFunc mocks the DeviceGetBAR1MemoryInfo method.\n\tDeviceGetBAR1MemoryInfoFunc func(device nvml.Device) (nvml.BAR1Memory, nvml.Return)\n\n\t// DeviceGetBoardIdFunc mocks the DeviceGetBoardId method.\n\tDeviceGetBoardIdFunc func(device nvml.Device) (uint32, nvml.Return)\n\n\t// DeviceGetBoardPartNumberFunc mocks the DeviceGetBoardPartNumber method.\n\tDeviceGetBoardPartNumberFunc func(device nvml.Device) (string, nvml.Return)\n\n\t// DeviceGetBrandFunc mocks the DeviceGetBrand method.\n\tDeviceGetBrandFunc func(device nvml.Device) (nvml.BrandType, nvml.Return)\n\n\t// DeviceGetBridgeChipInfoFunc mocks the DeviceGetBridgeChipInfo method.\n\tDeviceGetBridgeChipInfoFunc func(device nvml.Device) (nvml.BridgeChipHierarchy, nvml.Return)\n\n\t// DeviceGetBusTypeFunc mocks the DeviceGetBusType method.\n\tDeviceGetBusTypeFunc func(device nvml.Device) (nvml.BusType, nvml.Return)\n\n\t// DeviceGetC2cModeInfoVFunc mocks the DeviceGetC2cModeInfoV method.\n\tDeviceGetC2cModeInfoVFunc func(device nvml.Device) nvml.C2cModeInfoHandler\n\n\t// DeviceGetCapabilitiesFunc mocks the DeviceGetCapabilities method.\n\tDeviceGetCapabilitiesFunc func(device nvml.Device) (nvml.DeviceCapabilities, nvml.Return)\n\n\t// DeviceGetClkMonStatusFunc mocks the DeviceGetClkMonStatus method.\n\tDeviceGetClkMonStatusFunc func(device nvml.Device) (nvml.ClkMonStatus, nvml.Return)\n\n\t// DeviceGetClockFunc mocks the DeviceGetClock method.\n\tDeviceGetClockFunc func(device nvml.Device, clockType nvml.ClockType, clockId nvml.ClockId) (uint32, nvml.Return)\n\n\t// DeviceGetClockInfoFunc mocks the DeviceGetClockInfo method.\n\tDeviceGetClockInfoFunc func(device nvml.Device, clockType nvml.ClockType) (uint32, nvml.Return)\n\n\t// DeviceGetClockOffsetsFunc mocks the DeviceGetClockOffsets method.\n\tDeviceGetClockOffsetsFunc func(device nvml.Device) (nvml.ClockOffset, nvml.Return)\n\n\t// DeviceGetComputeInstanceIdFunc mocks the DeviceGetComputeInstanceId method.\n\tDeviceGetComputeInstanceIdFunc func(device nvml.Device) (int, nvml.Return)\n\n\t// DeviceGetComputeModeFunc mocks the DeviceGetComputeMode method.\n\tDeviceGetComputeModeFunc func(device nvml.Device) (nvml.ComputeMode, nvml.Return)\n\n\t// DeviceGetComputeRunningProcessesFunc mocks the DeviceGetComputeRunningProcesses method.\n\tDeviceGetComputeRunningProcessesFunc func(device nvml.Device) ([]nvml.ProcessInfo, nvml.Return)\n\n\t// DeviceGetConfComputeGpuAttestationReportFunc mocks the DeviceGetConfComputeGpuAttestationReport method.\n\tDeviceGetConfComputeGpuAttestationReportFunc func(device nvml.Device, confComputeGpuAttestationReport *nvml.ConfComputeGpuAttestationReport) nvml.Return\n\n\t// DeviceGetConfComputeGpuCertificateFunc mocks the DeviceGetConfComputeGpuCertificate method.\n\tDeviceGetConfComputeGpuCertificateFunc func(device nvml.Device) (nvml.ConfComputeGpuCertificate, nvml.Return)\n\n\t// DeviceGetConfComputeMemSizeInfoFunc mocks the DeviceGetConfComputeMemSizeInfo method.\n\tDeviceGetConfComputeMemSizeInfoFunc func(device nvml.Device) (nvml.ConfComputeMemSizeInfo, nvml.Return)\n\n\t// DeviceGetConfComputeProtectedMemoryUsageFunc mocks the DeviceGetConfComputeProtectedMemoryUsage method.\n\tDeviceGetConfComputeProtectedMemoryUsageFunc func(device nvml.Device) (nvml.Memory, nvml.Return)\n\n\t// DeviceGetCoolerInfoFunc mocks the DeviceGetCoolerInfo method.\n\tDeviceGetCoolerInfoFunc func(device nvml.Device) (nvml.CoolerInfo, nvml.Return)\n\n\t// DeviceGetCountFunc mocks the DeviceGetCount method.\n\tDeviceGetCountFunc func() (int, nvml.Return)\n\n\t// DeviceGetCpuAffinityFunc mocks the DeviceGetCpuAffinity method.\n\tDeviceGetCpuAffinityFunc func(device nvml.Device, n int) ([]uint, nvml.Return)\n\n\t// DeviceGetCpuAffinityWithinScopeFunc mocks the DeviceGetCpuAffinityWithinScope method.\n\tDeviceGetCpuAffinityWithinScopeFunc func(device nvml.Device, n int, affinityScope nvml.AffinityScope) ([]uint, nvml.Return)\n\n\t// DeviceGetCreatableVgpusFunc mocks the DeviceGetCreatableVgpus method.\n\tDeviceGetCreatableVgpusFunc func(device nvml.Device) ([]nvml.VgpuTypeId, nvml.Return)\n\n\t// DeviceGetCudaComputeCapabilityFunc mocks the DeviceGetCudaComputeCapability method.\n\tDeviceGetCudaComputeCapabilityFunc func(device nvml.Device) (int, int, nvml.Return)\n\n\t// DeviceGetCurrPcieLinkGenerationFunc mocks the DeviceGetCurrPcieLinkGeneration method.\n\tDeviceGetCurrPcieLinkGenerationFunc func(device nvml.Device) (int, nvml.Return)\n\n\t// DeviceGetCurrPcieLinkWidthFunc mocks the DeviceGetCurrPcieLinkWidth method.\n\tDeviceGetCurrPcieLinkWidthFunc func(device nvml.Device) (int, nvml.Return)\n\n\t// DeviceGetCurrentClockFreqsFunc mocks the DeviceGetCurrentClockFreqs method.\n\tDeviceGetCurrentClockFreqsFunc func(device nvml.Device) (nvml.DeviceCurrentClockFreqs, nvml.Return)\n\n\t// DeviceGetCurrentClocksEventReasonsFunc mocks the DeviceGetCurrentClocksEventReasons method.\n\tDeviceGetCurrentClocksEventReasonsFunc func(device nvml.Device) (uint64, nvml.Return)\n\n\t// DeviceGetCurrentClocksThrottleReasonsFunc mocks the DeviceGetCurrentClocksThrottleReasons method.\n\tDeviceGetCurrentClocksThrottleReasonsFunc func(device nvml.Device) (uint64, nvml.Return)\n\n\t// DeviceGetDecoderUtilizationFunc mocks the DeviceGetDecoderUtilization method.\n\tDeviceGetDecoderUtilizationFunc func(device nvml.Device) (uint32, uint32, nvml.Return)\n\n\t// DeviceGetDefaultApplicationsClockFunc mocks the DeviceGetDefaultApplicationsClock method.\n\tDeviceGetDefaultApplicationsClockFunc func(device nvml.Device, clockType nvml.ClockType) (uint32, nvml.Return)\n\n\t// DeviceGetDefaultEccModeFunc mocks the DeviceGetDefaultEccMode method.\n\tDeviceGetDefaultEccModeFunc func(device nvml.Device) (nvml.EnableState, nvml.Return)\n\n\t// DeviceGetDetailedEccErrorsFunc mocks the DeviceGetDetailedEccErrors method.\n\tDeviceGetDetailedEccErrorsFunc func(device nvml.Device, memoryErrorType nvml.MemoryErrorType, eccCounterType nvml.EccCounterType) (nvml.EccErrorCounts, nvml.Return)\n\n\t// DeviceGetDeviceHandleFromMigDeviceHandleFunc mocks the DeviceGetDeviceHandleFromMigDeviceHandle method.\n\tDeviceGetDeviceHandleFromMigDeviceHandleFunc func(device nvml.Device) (nvml.Device, nvml.Return)\n\n\t// DeviceGetDisplayActiveFunc mocks the DeviceGetDisplayActive method.\n\tDeviceGetDisplayActiveFunc func(device nvml.Device) (nvml.EnableState, nvml.Return)\n\n\t// DeviceGetDisplayModeFunc mocks the DeviceGetDisplayMode method.\n\tDeviceGetDisplayModeFunc func(device nvml.Device) (nvml.EnableState, nvml.Return)\n\n\t// DeviceGetDramEncryptionModeFunc mocks the DeviceGetDramEncryptionMode method.\n\tDeviceGetDramEncryptionModeFunc func(device nvml.Device) (nvml.DramEncryptionInfo, nvml.DramEncryptionInfo, nvml.Return)\n\n\t// DeviceGetDriverModelFunc mocks the DeviceGetDriverModel method.\n\tDeviceGetDriverModelFunc func(device nvml.Device) (nvml.DriverModel, nvml.DriverModel, nvml.Return)\n\n\t// DeviceGetDriverModel_v2Func mocks the DeviceGetDriverModel_v2 method.\n\tDeviceGetDriverModel_v2Func func(device nvml.Device) (nvml.DriverModel, nvml.DriverModel, nvml.Return)\n\n\t// DeviceGetDynamicPstatesInfoFunc mocks the DeviceGetDynamicPstatesInfo method.\n\tDeviceGetDynamicPstatesInfoFunc func(device nvml.Device) (nvml.GpuDynamicPstatesInfo, nvml.Return)\n\n\t// DeviceGetEccModeFunc mocks the DeviceGetEccMode method.\n\tDeviceGetEccModeFunc func(device nvml.Device) (nvml.EnableState, nvml.EnableState, nvml.Return)\n\n\t// DeviceGetEncoderCapacityFunc mocks the DeviceGetEncoderCapacity method.\n\tDeviceGetEncoderCapacityFunc func(device nvml.Device, encoderType nvml.EncoderType) (int, nvml.Return)\n\n\t// DeviceGetEncoderSessionsFunc mocks the DeviceGetEncoderSessions method.\n\tDeviceGetEncoderSessionsFunc func(device nvml.Device) ([]nvml.EncoderSessionInfo, nvml.Return)\n\n\t// DeviceGetEncoderStatsFunc mocks the DeviceGetEncoderStats method.\n\tDeviceGetEncoderStatsFunc func(device nvml.Device) (int, uint32, uint32, nvml.Return)\n\n\t// DeviceGetEncoderUtilizationFunc mocks the DeviceGetEncoderUtilization method.\n\tDeviceGetEncoderUtilizationFunc func(device nvml.Device) (uint32, uint32, nvml.Return)\n\n\t// DeviceGetEnforcedPowerLimitFunc mocks the DeviceGetEnforcedPowerLimit method.\n\tDeviceGetEnforcedPowerLimitFunc func(device nvml.Device) (uint32, nvml.Return)\n\n\t// DeviceGetFBCSessionsFunc mocks the DeviceGetFBCSessions method.\n\tDeviceGetFBCSessionsFunc func(device nvml.Device) ([]nvml.FBCSessionInfo, nvml.Return)\n\n\t// DeviceGetFBCStatsFunc mocks the DeviceGetFBCStats method.\n\tDeviceGetFBCStatsFunc func(device nvml.Device) (nvml.FBCStats, nvml.Return)\n\n\t// DeviceGetFanControlPolicy_v2Func mocks the DeviceGetFanControlPolicy_v2 method.\n\tDeviceGetFanControlPolicy_v2Func func(device nvml.Device, n int) (nvml.FanControlPolicy, nvml.Return)\n\n\t// DeviceGetFanSpeedFunc mocks the DeviceGetFanSpeed method.\n\tDeviceGetFanSpeedFunc func(device nvml.Device) (uint32, nvml.Return)\n\n\t// DeviceGetFanSpeedRPMFunc mocks the DeviceGetFanSpeedRPM method.\n\tDeviceGetFanSpeedRPMFunc func(device nvml.Device) (nvml.FanSpeedInfo, nvml.Return)\n\n\t// DeviceGetFanSpeed_v2Func mocks the DeviceGetFanSpeed_v2 method.\n\tDeviceGetFanSpeed_v2Func func(device nvml.Device, n int) (uint32, nvml.Return)\n\n\t// DeviceGetFieldValuesFunc mocks the DeviceGetFieldValues method.\n\tDeviceGetFieldValuesFunc func(device nvml.Device, fieldValues []nvml.FieldValue) nvml.Return\n\n\t// DeviceGetGpcClkMinMaxVfOffsetFunc mocks the DeviceGetGpcClkMinMaxVfOffset method.\n\tDeviceGetGpcClkMinMaxVfOffsetFunc func(device nvml.Device) (int, int, nvml.Return)\n\n\t// DeviceGetGpcClkVfOffsetFunc mocks the DeviceGetGpcClkVfOffset method.\n\tDeviceGetGpcClkVfOffsetFunc func(device nvml.Device) (int, nvml.Return)\n\n\t// DeviceGetGpuFabricInfoFunc mocks the DeviceGetGpuFabricInfo method.\n\tDeviceGetGpuFabricInfoFunc func(device nvml.Device) (nvml.GpuFabricInfo, nvml.Return)\n\n\t// DeviceGetGpuFabricInfoVFunc mocks the DeviceGetGpuFabricInfoV method.\n\tDeviceGetGpuFabricInfoVFunc func(device nvml.Device) nvml.GpuFabricInfoHandler\n\n\t// DeviceGetGpuInstanceByIdFunc mocks the DeviceGetGpuInstanceById method.\n\tDeviceGetGpuInstanceByIdFunc func(device nvml.Device, n int) (nvml.GpuInstance, nvml.Return)\n\n\t// DeviceGetGpuInstanceIdFunc mocks the DeviceGetGpuInstanceId method.\n\tDeviceGetGpuInstanceIdFunc func(device nvml.Device) (int, nvml.Return)\n\n\t// DeviceGetGpuInstancePossiblePlacementsFunc mocks the DeviceGetGpuInstancePossiblePlacements method.\n\tDeviceGetGpuInstancePossiblePlacementsFunc func(device nvml.Device, gpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo) ([]nvml.GpuInstancePlacement, nvml.Return)\n\n\t// DeviceGetGpuInstanceProfileInfoFunc mocks the DeviceGetGpuInstanceProfileInfo method.\n\tDeviceGetGpuInstanceProfileInfoFunc func(device nvml.Device, n int) (nvml.GpuInstanceProfileInfo, nvml.Return)\n\n\t// DeviceGetGpuInstanceProfileInfoByIdVFunc mocks the DeviceGetGpuInstanceProfileInfoByIdV method.\n\tDeviceGetGpuInstanceProfileInfoByIdVFunc func(device nvml.Device, n int) nvml.GpuInstanceProfileInfoByIdHandler\n\n\t// DeviceGetGpuInstanceProfileInfoVFunc mocks the DeviceGetGpuInstanceProfileInfoV method.\n\tDeviceGetGpuInstanceProfileInfoVFunc func(device nvml.Device, n int) nvml.GpuInstanceProfileInfoHandler\n\n\t// DeviceGetGpuInstanceRemainingCapacityFunc mocks the DeviceGetGpuInstanceRemainingCapacity method.\n\tDeviceGetGpuInstanceRemainingCapacityFunc func(device nvml.Device, gpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo) (int, nvml.Return)\n\n\t// DeviceGetGpuInstancesFunc mocks the DeviceGetGpuInstances method.\n\tDeviceGetGpuInstancesFunc func(device nvml.Device, gpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo) ([]nvml.GpuInstance, nvml.Return)\n\n\t// DeviceGetGpuMaxPcieLinkGenerationFunc mocks the DeviceGetGpuMaxPcieLinkGeneration method.\n\tDeviceGetGpuMaxPcieLinkGenerationFunc func(device nvml.Device) (int, nvml.Return)\n\n\t// DeviceGetGpuOperationModeFunc mocks the DeviceGetGpuOperationMode method.\n\tDeviceGetGpuOperationModeFunc func(device nvml.Device) (nvml.GpuOperationMode, nvml.GpuOperationMode, nvml.Return)\n\n\t// DeviceGetGraphicsRunningProcessesFunc mocks the DeviceGetGraphicsRunningProcesses method.\n\tDeviceGetGraphicsRunningProcessesFunc func(device nvml.Device) ([]nvml.ProcessInfo, nvml.Return)\n\n\t// DeviceGetGridLicensableFeaturesFunc mocks the DeviceGetGridLicensableFeatures method.\n\tDeviceGetGridLicensableFeaturesFunc func(device nvml.Device) (nvml.GridLicensableFeatures, nvml.Return)\n\n\t// DeviceGetGspFirmwareModeFunc mocks the DeviceGetGspFirmwareMode method.\n\tDeviceGetGspFirmwareModeFunc func(device nvml.Device) (bool, bool, nvml.Return)\n\n\t// DeviceGetGspFirmwareVersionFunc mocks the DeviceGetGspFirmwareVersion method.\n\tDeviceGetGspFirmwareVersionFunc func(device nvml.Device) (string, nvml.Return)\n\n\t// DeviceGetHandleByIndexFunc mocks the DeviceGetHandleByIndex method.\n\tDeviceGetHandleByIndexFunc func(n int) (nvml.Device, nvml.Return)\n\n\t// DeviceGetHandleByPciBusIdFunc mocks the DeviceGetHandleByPciBusId method.\n\tDeviceGetHandleByPciBusIdFunc func(s string) (nvml.Device, nvml.Return)\n\n\t// DeviceGetHandleBySerialFunc mocks the DeviceGetHandleBySerial method.\n\tDeviceGetHandleBySerialFunc func(s string) (nvml.Device, nvml.Return)\n\n\t// DeviceGetHandleByUUIDFunc mocks the DeviceGetHandleByUUID method.\n\tDeviceGetHandleByUUIDFunc func(s string) (nvml.Device, nvml.Return)\n\n\t// DeviceGetHandleByUUIDVFunc mocks the DeviceGetHandleByUUIDV method.\n\tDeviceGetHandleByUUIDVFunc func(uUID *nvml.UUID) (nvml.Device, nvml.Return)\n\n\t// DeviceGetHostVgpuModeFunc mocks the DeviceGetHostVgpuMode method.\n\tDeviceGetHostVgpuModeFunc func(device nvml.Device) (nvml.HostVgpuMode, nvml.Return)\n\n\t// DeviceGetIndexFunc mocks the DeviceGetIndex method.\n\tDeviceGetIndexFunc func(device nvml.Device) (int, nvml.Return)\n\n\t// DeviceGetInforomConfigurationChecksumFunc mocks the DeviceGetInforomConfigurationChecksum method.\n\tDeviceGetInforomConfigurationChecksumFunc func(device nvml.Device) (uint32, nvml.Return)\n\n\t// DeviceGetInforomImageVersionFunc mocks the DeviceGetInforomImageVersion method.\n\tDeviceGetInforomImageVersionFunc func(device nvml.Device) (string, nvml.Return)\n\n\t// DeviceGetInforomVersionFunc mocks the DeviceGetInforomVersion method.\n\tDeviceGetInforomVersionFunc func(device nvml.Device, inforomObject nvml.InforomObject) (string, nvml.Return)\n\n\t// DeviceGetIrqNumFunc mocks the DeviceGetIrqNum method.\n\tDeviceGetIrqNumFunc func(device nvml.Device) (int, nvml.Return)\n\n\t// DeviceGetJpgUtilizationFunc mocks the DeviceGetJpgUtilization method.\n\tDeviceGetJpgUtilizationFunc func(device nvml.Device) (uint32, uint32, nvml.Return)\n\n\t// DeviceGetLastBBXFlushTimeFunc mocks the DeviceGetLastBBXFlushTime method.\n\tDeviceGetLastBBXFlushTimeFunc func(device nvml.Device) (uint64, uint, nvml.Return)\n\n\t// DeviceGetMPSComputeRunningProcessesFunc mocks the DeviceGetMPSComputeRunningProcesses method.\n\tDeviceGetMPSComputeRunningProcessesFunc func(device nvml.Device) ([]nvml.ProcessInfo, nvml.Return)\n\n\t// DeviceGetMarginTemperatureFunc mocks the DeviceGetMarginTemperature method.\n\tDeviceGetMarginTemperatureFunc func(device nvml.Device) (nvml.MarginTemperature, nvml.Return)\n\n\t// DeviceGetMaxClockInfoFunc mocks the DeviceGetMaxClockInfo method.\n\tDeviceGetMaxClockInfoFunc func(device nvml.Device, clockType nvml.ClockType) (uint32, nvml.Return)\n\n\t// DeviceGetMaxCustomerBoostClockFunc mocks the DeviceGetMaxCustomerBoostClock method.\n\tDeviceGetMaxCustomerBoostClockFunc func(device nvml.Device, clockType nvml.ClockType) (uint32, nvml.Return)\n\n\t// DeviceGetMaxMigDeviceCountFunc mocks the DeviceGetMaxMigDeviceCount method.\n\tDeviceGetMaxMigDeviceCountFunc func(device nvml.Device) (int, nvml.Return)\n\n\t// DeviceGetMaxPcieLinkGenerationFunc mocks the DeviceGetMaxPcieLinkGeneration method.\n\tDeviceGetMaxPcieLinkGenerationFunc func(device nvml.Device) (int, nvml.Return)\n\n\t// DeviceGetMaxPcieLinkWidthFunc mocks the DeviceGetMaxPcieLinkWidth method.\n\tDeviceGetMaxPcieLinkWidthFunc func(device nvml.Device) (int, nvml.Return)\n\n\t// DeviceGetMemClkMinMaxVfOffsetFunc mocks the DeviceGetMemClkMinMaxVfOffset method.\n\tDeviceGetMemClkMinMaxVfOffsetFunc func(device nvml.Device) (int, int, nvml.Return)\n\n\t// DeviceGetMemClkVfOffsetFunc mocks the DeviceGetMemClkVfOffset method.\n\tDeviceGetMemClkVfOffsetFunc func(device nvml.Device) (int, nvml.Return)\n\n\t// DeviceGetMemoryAffinityFunc mocks the DeviceGetMemoryAffinity method.\n\tDeviceGetMemoryAffinityFunc func(device nvml.Device, n int, affinityScope nvml.AffinityScope) ([]uint, nvml.Return)\n\n\t// DeviceGetMemoryBusWidthFunc mocks the DeviceGetMemoryBusWidth method.\n\tDeviceGetMemoryBusWidthFunc func(device nvml.Device) (uint32, nvml.Return)\n\n\t// DeviceGetMemoryErrorCounterFunc mocks the DeviceGetMemoryErrorCounter method.\n\tDeviceGetMemoryErrorCounterFunc func(device nvml.Device, memoryErrorType nvml.MemoryErrorType, eccCounterType nvml.EccCounterType, memoryLocation nvml.MemoryLocation) (uint64, nvml.Return)\n\n\t// DeviceGetMemoryInfoFunc mocks the DeviceGetMemoryInfo method.\n\tDeviceGetMemoryInfoFunc func(device nvml.Device) (nvml.Memory, nvml.Return)\n\n\t// DeviceGetMemoryInfo_v2Func mocks the DeviceGetMemoryInfo_v2 method.\n\tDeviceGetMemoryInfo_v2Func func(device nvml.Device) (nvml.Memory_v2, nvml.Return)\n\n\t// DeviceGetMigDeviceHandleByIndexFunc mocks the DeviceGetMigDeviceHandleByIndex method.\n\tDeviceGetMigDeviceHandleByIndexFunc func(device nvml.Device, n int) (nvml.Device, nvml.Return)\n\n\t// DeviceGetMigModeFunc mocks the DeviceGetMigMode method.\n\tDeviceGetMigModeFunc func(device nvml.Device) (int, int, nvml.Return)\n\n\t// DeviceGetMinMaxClockOfPStateFunc mocks the DeviceGetMinMaxClockOfPState method.\n\tDeviceGetMinMaxClockOfPStateFunc func(device nvml.Device, clockType nvml.ClockType, pstates nvml.Pstates) (uint32, uint32, nvml.Return)\n\n\t// DeviceGetMinMaxFanSpeedFunc mocks the DeviceGetMinMaxFanSpeed method.\n\tDeviceGetMinMaxFanSpeedFunc func(device nvml.Device) (int, int, nvml.Return)\n\n\t// DeviceGetMinorNumberFunc mocks the DeviceGetMinorNumber method.\n\tDeviceGetMinorNumberFunc func(device nvml.Device) (int, nvml.Return)\n\n\t// DeviceGetModuleIdFunc mocks the DeviceGetModuleId method.\n\tDeviceGetModuleIdFunc func(device nvml.Device) (int, nvml.Return)\n\n\t// DeviceGetMultiGpuBoardFunc mocks the DeviceGetMultiGpuBoard method.\n\tDeviceGetMultiGpuBoardFunc func(device nvml.Device) (int, nvml.Return)\n\n\t// DeviceGetNameFunc mocks the DeviceGetName method.\n\tDeviceGetNameFunc func(device nvml.Device) (string, nvml.Return)\n\n\t// DeviceGetNumFansFunc mocks the DeviceGetNumFans method.\n\tDeviceGetNumFansFunc func(device nvml.Device) (int, nvml.Return)\n\n\t// DeviceGetNumGpuCoresFunc mocks the DeviceGetNumGpuCores method.\n\tDeviceGetNumGpuCoresFunc func(device nvml.Device) (int, nvml.Return)\n\n\t// DeviceGetNumaNodeIdFunc mocks the DeviceGetNumaNodeId method.\n\tDeviceGetNumaNodeIdFunc func(device nvml.Device) (int, nvml.Return)\n\n\t// DeviceGetNvLinkCapabilityFunc mocks the DeviceGetNvLinkCapability method.\n\tDeviceGetNvLinkCapabilityFunc func(device nvml.Device, n int, nvLinkCapability nvml.NvLinkCapability) (uint32, nvml.Return)\n\n\t// DeviceGetNvLinkErrorCounterFunc mocks the DeviceGetNvLinkErrorCounter method.\n\tDeviceGetNvLinkErrorCounterFunc func(device nvml.Device, n int, nvLinkErrorCounter nvml.NvLinkErrorCounter) (uint64, nvml.Return)\n\n\t// DeviceGetNvLinkInfoFunc mocks the DeviceGetNvLinkInfo method.\n\tDeviceGetNvLinkInfoFunc func(device nvml.Device) nvml.NvLinkInfoHandler\n\n\t// DeviceGetNvLinkRemoteDeviceTypeFunc mocks the DeviceGetNvLinkRemoteDeviceType method.\n\tDeviceGetNvLinkRemoteDeviceTypeFunc func(device nvml.Device, n int) (nvml.IntNvLinkDeviceType, nvml.Return)\n\n\t// DeviceGetNvLinkRemotePciInfoFunc mocks the DeviceGetNvLinkRemotePciInfo method.\n\tDeviceGetNvLinkRemotePciInfoFunc func(device nvml.Device, n int) (nvml.PciInfo, nvml.Return)\n\n\t// DeviceGetNvLinkStateFunc mocks the DeviceGetNvLinkState method.\n\tDeviceGetNvLinkStateFunc func(device nvml.Device, n int) (nvml.EnableState, nvml.Return)\n\n\t// DeviceGetNvLinkUtilizationControlFunc mocks the DeviceGetNvLinkUtilizationControl method.\n\tDeviceGetNvLinkUtilizationControlFunc func(device nvml.Device, n1 int, n2 int) (nvml.NvLinkUtilizationControl, nvml.Return)\n\n\t// DeviceGetNvLinkUtilizationCounterFunc mocks the DeviceGetNvLinkUtilizationCounter method.\n\tDeviceGetNvLinkUtilizationCounterFunc func(device nvml.Device, n1 int, n2 int) (uint64, uint64, nvml.Return)\n\n\t// DeviceGetNvLinkVersionFunc mocks the DeviceGetNvLinkVersion method.\n\tDeviceGetNvLinkVersionFunc func(device nvml.Device, n int) (uint32, nvml.Return)\n\n\t// DeviceGetNvlinkBwModeFunc mocks the DeviceGetNvlinkBwMode method.\n\tDeviceGetNvlinkBwModeFunc func(device nvml.Device) (nvml.NvlinkGetBwMode, nvml.Return)\n\n\t// DeviceGetNvlinkSupportedBwModesFunc mocks the DeviceGetNvlinkSupportedBwModes method.\n\tDeviceGetNvlinkSupportedBwModesFunc func(device nvml.Device) (nvml.NvlinkSupportedBwModes, nvml.Return)\n\n\t// DeviceGetOfaUtilizationFunc mocks the DeviceGetOfaUtilization method.\n\tDeviceGetOfaUtilizationFunc func(device nvml.Device) (uint32, uint32, nvml.Return)\n\n\t// DeviceGetP2PStatusFunc mocks the DeviceGetP2PStatus method.\n\tDeviceGetP2PStatusFunc func(device1 nvml.Device, device2 nvml.Device, gpuP2PCapsIndex nvml.GpuP2PCapsIndex) (nvml.GpuP2PStatus, nvml.Return)\n\n\t// DeviceGetPciInfoFunc mocks the DeviceGetPciInfo method.\n\tDeviceGetPciInfoFunc func(device nvml.Device) (nvml.PciInfo, nvml.Return)\n\n\t// DeviceGetPciInfoExtFunc mocks the DeviceGetPciInfoExt method.\n\tDeviceGetPciInfoExtFunc func(device nvml.Device) (nvml.PciInfoExt, nvml.Return)\n\n\t// DeviceGetPcieLinkMaxSpeedFunc mocks the DeviceGetPcieLinkMaxSpeed method.\n\tDeviceGetPcieLinkMaxSpeedFunc func(device nvml.Device) (uint32, nvml.Return)\n\n\t// DeviceGetPcieReplayCounterFunc mocks the DeviceGetPcieReplayCounter method.\n\tDeviceGetPcieReplayCounterFunc func(device nvml.Device) (int, nvml.Return)\n\n\t// DeviceGetPcieSpeedFunc mocks the DeviceGetPcieSpeed method.\n\tDeviceGetPcieSpeedFunc func(device nvml.Device) (int, nvml.Return)\n\n\t// DeviceGetPcieThroughputFunc mocks the DeviceGetPcieThroughput method.\n\tDeviceGetPcieThroughputFunc func(device nvml.Device, pcieUtilCounter nvml.PcieUtilCounter) (uint32, nvml.Return)\n\n\t// DeviceGetPdiFunc mocks the DeviceGetPdi method.\n\tDeviceGetPdiFunc func(device nvml.Device) (nvml.Pdi, nvml.Return)\n\n\t// DeviceGetPerformanceModesFunc mocks the DeviceGetPerformanceModes method.\n\tDeviceGetPerformanceModesFunc func(device nvml.Device) (nvml.DevicePerfModes, nvml.Return)\n\n\t// DeviceGetPerformanceStateFunc mocks the DeviceGetPerformanceState method.\n\tDeviceGetPerformanceStateFunc func(device nvml.Device) (nvml.Pstates, nvml.Return)\n\n\t// DeviceGetPersistenceModeFunc mocks the DeviceGetPersistenceMode method.\n\tDeviceGetPersistenceModeFunc func(device nvml.Device) (nvml.EnableState, nvml.Return)\n\n\t// DeviceGetPgpuMetadataStringFunc mocks the DeviceGetPgpuMetadataString method.\n\tDeviceGetPgpuMetadataStringFunc func(device nvml.Device) (string, nvml.Return)\n\n\t// DeviceGetPlatformInfoFunc mocks the DeviceGetPlatformInfo method.\n\tDeviceGetPlatformInfoFunc func(device nvml.Device) (nvml.PlatformInfo, nvml.Return)\n\n\t// DeviceGetPowerManagementDefaultLimitFunc mocks the DeviceGetPowerManagementDefaultLimit method.\n\tDeviceGetPowerManagementDefaultLimitFunc func(device nvml.Device) (uint32, nvml.Return)\n\n\t// DeviceGetPowerManagementLimitFunc mocks the DeviceGetPowerManagementLimit method.\n\tDeviceGetPowerManagementLimitFunc func(device nvml.Device) (uint32, nvml.Return)\n\n\t// DeviceGetPowerManagementLimitConstraintsFunc mocks the DeviceGetPowerManagementLimitConstraints method.\n\tDeviceGetPowerManagementLimitConstraintsFunc func(device nvml.Device) (uint32, uint32, nvml.Return)\n\n\t// DeviceGetPowerManagementModeFunc mocks the DeviceGetPowerManagementMode method.\n\tDeviceGetPowerManagementModeFunc func(device nvml.Device) (nvml.EnableState, nvml.Return)\n\n\t// DeviceGetPowerMizerMode_v1Func mocks the DeviceGetPowerMizerMode_v1 method.\n\tDeviceGetPowerMizerMode_v1Func func(device nvml.Device) (nvml.DevicePowerMizerModes_v1, nvml.Return)\n\n\t// DeviceGetPowerSourceFunc mocks the DeviceGetPowerSource method.\n\tDeviceGetPowerSourceFunc func(device nvml.Device) (nvml.PowerSource, nvml.Return)\n\n\t// DeviceGetPowerStateFunc mocks the DeviceGetPowerState method.\n\tDeviceGetPowerStateFunc func(device nvml.Device) (nvml.Pstates, nvml.Return)\n\n\t// DeviceGetPowerUsageFunc mocks the DeviceGetPowerUsage method.\n\tDeviceGetPowerUsageFunc func(device nvml.Device) (uint32, nvml.Return)\n\n\t// DeviceGetProcessUtilizationFunc mocks the DeviceGetProcessUtilization method.\n\tDeviceGetProcessUtilizationFunc func(device nvml.Device, v uint64) ([]nvml.ProcessUtilizationSample, nvml.Return)\n\n\t// DeviceGetProcessesUtilizationInfoFunc mocks the DeviceGetProcessesUtilizationInfo method.\n\tDeviceGetProcessesUtilizationInfoFunc func(device nvml.Device) (nvml.ProcessesUtilizationInfo, nvml.Return)\n\n\t// DeviceGetRemappedRowsFunc mocks the DeviceGetRemappedRows method.\n\tDeviceGetRemappedRowsFunc func(device nvml.Device) (int, int, bool, bool, nvml.Return)\n\n\t// DeviceGetRepairStatusFunc mocks the DeviceGetRepairStatus method.\n\tDeviceGetRepairStatusFunc func(device nvml.Device) (nvml.RepairStatus, nvml.Return)\n\n\t// DeviceGetRetiredPagesFunc mocks the DeviceGetRetiredPages method.\n\tDeviceGetRetiredPagesFunc func(device nvml.Device, pageRetirementCause nvml.PageRetirementCause) ([]uint64, nvml.Return)\n\n\t// DeviceGetRetiredPagesPendingStatusFunc mocks the DeviceGetRetiredPagesPendingStatus method.\n\tDeviceGetRetiredPagesPendingStatusFunc func(device nvml.Device) (nvml.EnableState, nvml.Return)\n\n\t// DeviceGetRetiredPages_v2Func mocks the DeviceGetRetiredPages_v2 method.\n\tDeviceGetRetiredPages_v2Func func(device nvml.Device, pageRetirementCause nvml.PageRetirementCause) ([]uint64, []uint64, nvml.Return)\n\n\t// DeviceGetRowRemapperHistogramFunc mocks the DeviceGetRowRemapperHistogram method.\n\tDeviceGetRowRemapperHistogramFunc func(device nvml.Device) (nvml.RowRemapperHistogramValues, nvml.Return)\n\n\t// DeviceGetRunningProcessDetailListFunc mocks the DeviceGetRunningProcessDetailList method.\n\tDeviceGetRunningProcessDetailListFunc func(device nvml.Device) (nvml.ProcessDetailList, nvml.Return)\n\n\t// DeviceGetSamplesFunc mocks the DeviceGetSamples method.\n\tDeviceGetSamplesFunc func(device nvml.Device, samplingType nvml.SamplingType, v uint64) (nvml.ValueType, []nvml.Sample, nvml.Return)\n\n\t// DeviceGetSerialFunc mocks the DeviceGetSerial method.\n\tDeviceGetSerialFunc func(device nvml.Device) (string, nvml.Return)\n\n\t// DeviceGetSramEccErrorStatusFunc mocks the DeviceGetSramEccErrorStatus method.\n\tDeviceGetSramEccErrorStatusFunc func(device nvml.Device) (nvml.EccSramErrorStatus, nvml.Return)\n\n\t// DeviceGetSramUniqueUncorrectedEccErrorCountsFunc mocks the DeviceGetSramUniqueUncorrectedEccErrorCounts method.\n\tDeviceGetSramUniqueUncorrectedEccErrorCountsFunc func(device nvml.Device, eccSramUniqueUncorrectedErrorCounts *nvml.EccSramUniqueUncorrectedErrorCounts) nvml.Return\n\n\t// DeviceGetSupportedClocksEventReasonsFunc mocks the DeviceGetSupportedClocksEventReasons method.\n\tDeviceGetSupportedClocksEventReasonsFunc func(device nvml.Device) (uint64, nvml.Return)\n\n\t// DeviceGetSupportedClocksThrottleReasonsFunc mocks the DeviceGetSupportedClocksThrottleReasons method.\n\tDeviceGetSupportedClocksThrottleReasonsFunc func(device nvml.Device) (uint64, nvml.Return)\n\n\t// DeviceGetSupportedEventTypesFunc mocks the DeviceGetSupportedEventTypes method.\n\tDeviceGetSupportedEventTypesFunc func(device nvml.Device) (uint64, nvml.Return)\n\n\t// DeviceGetSupportedGraphicsClocksFunc mocks the DeviceGetSupportedGraphicsClocks method.\n\tDeviceGetSupportedGraphicsClocksFunc func(device nvml.Device, n int) (int, uint32, nvml.Return)\n\n\t// DeviceGetSupportedMemoryClocksFunc mocks the DeviceGetSupportedMemoryClocks method.\n\tDeviceGetSupportedMemoryClocksFunc func(device nvml.Device) (int, uint32, nvml.Return)\n\n\t// DeviceGetSupportedPerformanceStatesFunc mocks the DeviceGetSupportedPerformanceStates method.\n\tDeviceGetSupportedPerformanceStatesFunc func(device nvml.Device) ([]nvml.Pstates, nvml.Return)\n\n\t// DeviceGetSupportedVgpusFunc mocks the DeviceGetSupportedVgpus method.\n\tDeviceGetSupportedVgpusFunc func(device nvml.Device) ([]nvml.VgpuTypeId, nvml.Return)\n\n\t// DeviceGetTargetFanSpeedFunc mocks the DeviceGetTargetFanSpeed method.\n\tDeviceGetTargetFanSpeedFunc func(device nvml.Device, n int) (int, nvml.Return)\n\n\t// DeviceGetTemperatureFunc mocks the DeviceGetTemperature method.\n\tDeviceGetTemperatureFunc func(device nvml.Device, temperatureSensors nvml.TemperatureSensors) (uint32, nvml.Return)\n\n\t// DeviceGetTemperatureThresholdFunc mocks the DeviceGetTemperatureThreshold method.\n\tDeviceGetTemperatureThresholdFunc func(device nvml.Device, temperatureThresholds nvml.TemperatureThresholds) (uint32, nvml.Return)\n\n\t// DeviceGetTemperatureVFunc mocks the DeviceGetTemperatureV method.\n\tDeviceGetTemperatureVFunc func(device nvml.Device) nvml.TemperatureHandler\n\n\t// DeviceGetThermalSettingsFunc mocks the DeviceGetThermalSettings method.\n\tDeviceGetThermalSettingsFunc func(device nvml.Device, v uint32) (nvml.GpuThermalSettings, nvml.Return)\n\n\t// DeviceGetTopologyCommonAncestorFunc mocks the DeviceGetTopologyCommonAncestor method.\n\tDeviceGetTopologyCommonAncestorFunc func(device1 nvml.Device, device2 nvml.Device) (nvml.GpuTopologyLevel, nvml.Return)\n\n\t// DeviceGetTopologyNearestGpusFunc mocks the DeviceGetTopologyNearestGpus method.\n\tDeviceGetTopologyNearestGpusFunc func(device nvml.Device, gpuTopologyLevel nvml.GpuTopologyLevel) ([]nvml.Device, nvml.Return)\n\n\t// DeviceGetTotalEccErrorsFunc mocks the DeviceGetTotalEccErrors method.\n\tDeviceGetTotalEccErrorsFunc func(device nvml.Device, memoryErrorType nvml.MemoryErrorType, eccCounterType nvml.EccCounterType) (uint64, nvml.Return)\n\n\t// DeviceGetTotalEnergyConsumptionFunc mocks the DeviceGetTotalEnergyConsumption method.\n\tDeviceGetTotalEnergyConsumptionFunc func(device nvml.Device) (uint64, nvml.Return)\n\n\t// DeviceGetUUIDFunc mocks the DeviceGetUUID method.\n\tDeviceGetUUIDFunc func(device nvml.Device) (string, nvml.Return)\n\n\t// DeviceGetUtilizationRatesFunc mocks the DeviceGetUtilizationRates method.\n\tDeviceGetUtilizationRatesFunc func(device nvml.Device) (nvml.Utilization, nvml.Return)\n\n\t// DeviceGetVbiosVersionFunc mocks the DeviceGetVbiosVersion method.\n\tDeviceGetVbiosVersionFunc func(device nvml.Device) (string, nvml.Return)\n\n\t// DeviceGetVgpuCapabilitiesFunc mocks the DeviceGetVgpuCapabilities method.\n\tDeviceGetVgpuCapabilitiesFunc func(device nvml.Device, deviceVgpuCapability nvml.DeviceVgpuCapability) (bool, nvml.Return)\n\n\t// DeviceGetVgpuHeterogeneousModeFunc mocks the DeviceGetVgpuHeterogeneousMode method.\n\tDeviceGetVgpuHeterogeneousModeFunc func(device nvml.Device) (nvml.VgpuHeterogeneousMode, nvml.Return)\n\n\t// DeviceGetVgpuInstancesUtilizationInfoFunc mocks the DeviceGetVgpuInstancesUtilizationInfo method.\n\tDeviceGetVgpuInstancesUtilizationInfoFunc func(device nvml.Device) (nvml.VgpuInstancesUtilizationInfo, nvml.Return)\n\n\t// DeviceGetVgpuMetadataFunc mocks the DeviceGetVgpuMetadata method.\n\tDeviceGetVgpuMetadataFunc func(device nvml.Device) (nvml.VgpuPgpuMetadata, nvml.Return)\n\n\t// DeviceGetVgpuProcessUtilizationFunc mocks the DeviceGetVgpuProcessUtilization method.\n\tDeviceGetVgpuProcessUtilizationFunc func(device nvml.Device, v uint64) ([]nvml.VgpuProcessUtilizationSample, nvml.Return)\n\n\t// DeviceGetVgpuProcessesUtilizationInfoFunc mocks the DeviceGetVgpuProcessesUtilizationInfo method.\n\tDeviceGetVgpuProcessesUtilizationInfoFunc func(device nvml.Device) (nvml.VgpuProcessesUtilizationInfo, nvml.Return)\n\n\t// DeviceGetVgpuSchedulerCapabilitiesFunc mocks the DeviceGetVgpuSchedulerCapabilities method.\n\tDeviceGetVgpuSchedulerCapabilitiesFunc func(device nvml.Device) (nvml.VgpuSchedulerCapabilities, nvml.Return)\n\n\t// DeviceGetVgpuSchedulerLogFunc mocks the DeviceGetVgpuSchedulerLog method.\n\tDeviceGetVgpuSchedulerLogFunc func(device nvml.Device) (nvml.VgpuSchedulerLog, nvml.Return)\n\n\t// DeviceGetVgpuSchedulerStateFunc mocks the DeviceGetVgpuSchedulerState method.\n\tDeviceGetVgpuSchedulerStateFunc func(device nvml.Device) (nvml.VgpuSchedulerGetState, nvml.Return)\n\n\t// DeviceGetVgpuTypeCreatablePlacementsFunc mocks the DeviceGetVgpuTypeCreatablePlacements method.\n\tDeviceGetVgpuTypeCreatablePlacementsFunc func(device nvml.Device, vgpuTypeId nvml.VgpuTypeId) (nvml.VgpuPlacementList, nvml.Return)\n\n\t// DeviceGetVgpuTypeSupportedPlacementsFunc mocks the DeviceGetVgpuTypeSupportedPlacements method.\n\tDeviceGetVgpuTypeSupportedPlacementsFunc func(device nvml.Device, vgpuTypeId nvml.VgpuTypeId) (nvml.VgpuPlacementList, nvml.Return)\n\n\t// DeviceGetVgpuUtilizationFunc mocks the DeviceGetVgpuUtilization method.\n\tDeviceGetVgpuUtilizationFunc func(device nvml.Device, v uint64) (nvml.ValueType, []nvml.VgpuInstanceUtilizationSample, nvml.Return)\n\n\t// DeviceGetViolationStatusFunc mocks the DeviceGetViolationStatus method.\n\tDeviceGetViolationStatusFunc func(device nvml.Device, perfPolicyType nvml.PerfPolicyType) (nvml.ViolationTime, nvml.Return)\n\n\t// DeviceGetVirtualizationModeFunc mocks the DeviceGetVirtualizationMode method.\n\tDeviceGetVirtualizationModeFunc func(device nvml.Device) (nvml.GpuVirtualizationMode, nvml.Return)\n\n\t// DeviceIsMigDeviceHandleFunc mocks the DeviceIsMigDeviceHandle method.\n\tDeviceIsMigDeviceHandleFunc func(device nvml.Device) (bool, nvml.Return)\n\n\t// DeviceModifyDrainStateFunc mocks the DeviceModifyDrainState method.\n\tDeviceModifyDrainStateFunc func(pciInfo *nvml.PciInfo, enableState nvml.EnableState) nvml.Return\n\n\t// DeviceOnSameBoardFunc mocks the DeviceOnSameBoard method.\n\tDeviceOnSameBoardFunc func(device1 nvml.Device, device2 nvml.Device) (int, nvml.Return)\n\n\t// DevicePowerSmoothingActivatePresetProfileFunc mocks the DevicePowerSmoothingActivatePresetProfile method.\n\tDevicePowerSmoothingActivatePresetProfileFunc func(device nvml.Device, powerSmoothingProfile *nvml.PowerSmoothingProfile) nvml.Return\n\n\t// DevicePowerSmoothingSetStateFunc mocks the DevicePowerSmoothingSetState method.\n\tDevicePowerSmoothingSetStateFunc func(device nvml.Device, powerSmoothingState *nvml.PowerSmoothingState) nvml.Return\n\n\t// DevicePowerSmoothingUpdatePresetProfileParamFunc mocks the DevicePowerSmoothingUpdatePresetProfileParam method.\n\tDevicePowerSmoothingUpdatePresetProfileParamFunc func(device nvml.Device, powerSmoothingProfile *nvml.PowerSmoothingProfile) nvml.Return\n\n\t// DeviceQueryDrainStateFunc mocks the DeviceQueryDrainState method.\n\tDeviceQueryDrainStateFunc func(pciInfo *nvml.PciInfo) (nvml.EnableState, nvml.Return)\n\n\t// DeviceReadWritePRM_v1Func mocks the DeviceReadWritePRM_v1 method.\n\tDeviceReadWritePRM_v1Func func(device nvml.Device, pRMTLV_v1 *nvml.PRMTLV_v1) nvml.Return\n\n\t// DeviceRegisterEventsFunc mocks the DeviceRegisterEvents method.\n\tDeviceRegisterEventsFunc func(device nvml.Device, v uint64, eventSet nvml.EventSet) nvml.Return\n\n\t// DeviceRemoveGpuFunc mocks the DeviceRemoveGpu method.\n\tDeviceRemoveGpuFunc func(pciInfo *nvml.PciInfo) nvml.Return\n\n\t// DeviceRemoveGpu_v2Func mocks the DeviceRemoveGpu_v2 method.\n\tDeviceRemoveGpu_v2Func func(pciInfo *nvml.PciInfo, detachGpuState nvml.DetachGpuState, pcieLinkState nvml.PcieLinkState) nvml.Return\n\n\t// DeviceResetApplicationsClocksFunc mocks the DeviceResetApplicationsClocks method.\n\tDeviceResetApplicationsClocksFunc func(device nvml.Device) nvml.Return\n\n\t// DeviceResetGpuLockedClocksFunc mocks the DeviceResetGpuLockedClocks method.\n\tDeviceResetGpuLockedClocksFunc func(device nvml.Device) nvml.Return\n\n\t// DeviceResetMemoryLockedClocksFunc mocks the DeviceResetMemoryLockedClocks method.\n\tDeviceResetMemoryLockedClocksFunc func(device nvml.Device) nvml.Return\n\n\t// DeviceResetNvLinkErrorCountersFunc mocks the DeviceResetNvLinkErrorCounters method.\n\tDeviceResetNvLinkErrorCountersFunc func(device nvml.Device, n int) nvml.Return\n\n\t// DeviceResetNvLinkUtilizationCounterFunc mocks the DeviceResetNvLinkUtilizationCounter method.\n\tDeviceResetNvLinkUtilizationCounterFunc func(device nvml.Device, n1 int, n2 int) nvml.Return\n\n\t// DeviceSetAPIRestrictionFunc mocks the DeviceSetAPIRestriction method.\n\tDeviceSetAPIRestrictionFunc func(device nvml.Device, restrictedAPI nvml.RestrictedAPI, enableState nvml.EnableState) nvml.Return\n\n\t// DeviceSetAccountingModeFunc mocks the DeviceSetAccountingMode method.\n\tDeviceSetAccountingModeFunc func(device nvml.Device, enableState nvml.EnableState) nvml.Return\n\n\t// DeviceSetApplicationsClocksFunc mocks the DeviceSetApplicationsClocks method.\n\tDeviceSetApplicationsClocksFunc func(device nvml.Device, v1 uint32, v2 uint32) nvml.Return\n\n\t// DeviceSetAutoBoostedClocksEnabledFunc mocks the DeviceSetAutoBoostedClocksEnabled method.\n\tDeviceSetAutoBoostedClocksEnabledFunc func(device nvml.Device, enableState nvml.EnableState) nvml.Return\n\n\t// DeviceSetClockOffsetsFunc mocks the DeviceSetClockOffsets method.\n\tDeviceSetClockOffsetsFunc func(device nvml.Device, clockOffset nvml.ClockOffset) nvml.Return\n\n\t// DeviceSetComputeModeFunc mocks the DeviceSetComputeMode method.\n\tDeviceSetComputeModeFunc func(device nvml.Device, computeMode nvml.ComputeMode) nvml.Return\n\n\t// DeviceSetConfComputeUnprotectedMemSizeFunc mocks the DeviceSetConfComputeUnprotectedMemSize method.\n\tDeviceSetConfComputeUnprotectedMemSizeFunc func(device nvml.Device, v uint64) nvml.Return\n\n\t// DeviceSetCpuAffinityFunc mocks the DeviceSetCpuAffinity method.\n\tDeviceSetCpuAffinityFunc func(device nvml.Device) nvml.Return\n\n\t// DeviceSetDefaultAutoBoostedClocksEnabledFunc mocks the DeviceSetDefaultAutoBoostedClocksEnabled method.\n\tDeviceSetDefaultAutoBoostedClocksEnabledFunc func(device nvml.Device, enableState nvml.EnableState, v uint32) nvml.Return\n\n\t// DeviceSetDefaultFanSpeed_v2Func mocks the DeviceSetDefaultFanSpeed_v2 method.\n\tDeviceSetDefaultFanSpeed_v2Func func(device nvml.Device, n int) nvml.Return\n\n\t// DeviceSetDramEncryptionModeFunc mocks the DeviceSetDramEncryptionMode method.\n\tDeviceSetDramEncryptionModeFunc func(device nvml.Device, dramEncryptionInfo *nvml.DramEncryptionInfo) nvml.Return\n\n\t// DeviceSetDriverModelFunc mocks the DeviceSetDriverModel method.\n\tDeviceSetDriverModelFunc func(device nvml.Device, driverModel nvml.DriverModel, v uint32) nvml.Return\n\n\t// DeviceSetEccModeFunc mocks the DeviceSetEccMode method.\n\tDeviceSetEccModeFunc func(device nvml.Device, enableState nvml.EnableState) nvml.Return\n\n\t// DeviceSetFanControlPolicyFunc mocks the DeviceSetFanControlPolicy method.\n\tDeviceSetFanControlPolicyFunc func(device nvml.Device, n int, fanControlPolicy nvml.FanControlPolicy) nvml.Return\n\n\t// DeviceSetFanSpeed_v2Func mocks the DeviceSetFanSpeed_v2 method.\n\tDeviceSetFanSpeed_v2Func func(device nvml.Device, n1 int, n2 int) nvml.Return\n\n\t// DeviceSetGpcClkVfOffsetFunc mocks the DeviceSetGpcClkVfOffset method.\n\tDeviceSetGpcClkVfOffsetFunc func(device nvml.Device, n int) nvml.Return\n\n\t// DeviceSetGpuLockedClocksFunc mocks the DeviceSetGpuLockedClocks method.\n\tDeviceSetGpuLockedClocksFunc func(device nvml.Device, v1 uint32, v2 uint32) nvml.Return\n\n\t// DeviceSetGpuOperationModeFunc mocks the DeviceSetGpuOperationMode method.\n\tDeviceSetGpuOperationModeFunc func(device nvml.Device, gpuOperationMode nvml.GpuOperationMode) nvml.Return\n\n\t// DeviceSetMemClkVfOffsetFunc mocks the DeviceSetMemClkVfOffset method.\n\tDeviceSetMemClkVfOffsetFunc func(device nvml.Device, n int) nvml.Return\n\n\t// DeviceSetMemoryLockedClocksFunc mocks the DeviceSetMemoryLockedClocks method.\n\tDeviceSetMemoryLockedClocksFunc func(device nvml.Device, v1 uint32, v2 uint32) nvml.Return\n\n\t// DeviceSetMigModeFunc mocks the DeviceSetMigMode method.\n\tDeviceSetMigModeFunc func(device nvml.Device, n int) (nvml.Return, nvml.Return)\n\n\t// DeviceSetNvLinkDeviceLowPowerThresholdFunc mocks the DeviceSetNvLinkDeviceLowPowerThreshold method.\n\tDeviceSetNvLinkDeviceLowPowerThresholdFunc func(device nvml.Device, nvLinkPowerThres *nvml.NvLinkPowerThres) nvml.Return\n\n\t// DeviceSetNvLinkUtilizationControlFunc mocks the DeviceSetNvLinkUtilizationControl method.\n\tDeviceSetNvLinkUtilizationControlFunc func(device nvml.Device, n1 int, n2 int, nvLinkUtilizationControl *nvml.NvLinkUtilizationControl, b bool) nvml.Return\n\n\t// DeviceSetNvlinkBwModeFunc mocks the DeviceSetNvlinkBwMode method.\n\tDeviceSetNvlinkBwModeFunc func(device nvml.Device, nvlinkSetBwMode *nvml.NvlinkSetBwMode) nvml.Return\n\n\t// DeviceSetPersistenceModeFunc mocks the DeviceSetPersistenceMode method.\n\tDeviceSetPersistenceModeFunc func(device nvml.Device, enableState nvml.EnableState) nvml.Return\n\n\t// DeviceSetPowerManagementLimitFunc mocks the DeviceSetPowerManagementLimit method.\n\tDeviceSetPowerManagementLimitFunc func(device nvml.Device, v uint32) nvml.Return\n\n\t// DeviceSetPowerManagementLimit_v2Func mocks the DeviceSetPowerManagementLimit_v2 method.\n\tDeviceSetPowerManagementLimit_v2Func func(device nvml.Device, powerValue_v2 *nvml.PowerValue_v2) nvml.Return\n\n\t// DeviceSetTemperatureThresholdFunc mocks the DeviceSetTemperatureThreshold method.\n\tDeviceSetTemperatureThresholdFunc func(device nvml.Device, temperatureThresholds nvml.TemperatureThresholds, n int) nvml.Return\n\n\t// DeviceSetVgpuCapabilitiesFunc mocks the DeviceSetVgpuCapabilities method.\n\tDeviceSetVgpuCapabilitiesFunc func(device nvml.Device, deviceVgpuCapability nvml.DeviceVgpuCapability, enableState nvml.EnableState) nvml.Return\n\n\t// DeviceSetVgpuHeterogeneousModeFunc mocks the DeviceSetVgpuHeterogeneousMode method.\n\tDeviceSetVgpuHeterogeneousModeFunc func(device nvml.Device, vgpuHeterogeneousMode nvml.VgpuHeterogeneousMode) nvml.Return\n\n\t// DeviceSetVgpuSchedulerStateFunc mocks the DeviceSetVgpuSchedulerState method.\n\tDeviceSetVgpuSchedulerStateFunc func(device nvml.Device, vgpuSchedulerSetState *nvml.VgpuSchedulerSetState) nvml.Return\n\n\t// DeviceSetVirtualizationModeFunc mocks the DeviceSetVirtualizationMode method.\n\tDeviceSetVirtualizationModeFunc func(device nvml.Device, gpuVirtualizationMode nvml.GpuVirtualizationMode) nvml.Return\n\n\t// DeviceValidateInforomFunc mocks the DeviceValidateInforom method.\n\tDeviceValidateInforomFunc func(device nvml.Device) nvml.Return\n\n\t// DeviceWorkloadPowerProfileClearRequestedProfilesFunc mocks the DeviceWorkloadPowerProfileClearRequestedProfiles method.\n\tDeviceWorkloadPowerProfileClearRequestedProfilesFunc func(device nvml.Device, workloadPowerProfileRequestedProfiles *nvml.WorkloadPowerProfileRequestedProfiles) nvml.Return\n\n\t// DeviceWorkloadPowerProfileGetCurrentProfilesFunc mocks the DeviceWorkloadPowerProfileGetCurrentProfiles method.\n\tDeviceWorkloadPowerProfileGetCurrentProfilesFunc func(device nvml.Device) (nvml.WorkloadPowerProfileCurrentProfiles, nvml.Return)\n\n\t// DeviceWorkloadPowerProfileGetProfilesInfoFunc mocks the DeviceWorkloadPowerProfileGetProfilesInfo method.\n\tDeviceWorkloadPowerProfileGetProfilesInfoFunc func(device nvml.Device) (nvml.WorkloadPowerProfileProfilesInfo, nvml.Return)\n\n\t// DeviceWorkloadPowerProfileSetRequestedProfilesFunc mocks the DeviceWorkloadPowerProfileSetRequestedProfiles method.\n\tDeviceWorkloadPowerProfileSetRequestedProfilesFunc func(device nvml.Device, workloadPowerProfileRequestedProfiles *nvml.WorkloadPowerProfileRequestedProfiles) nvml.Return\n\n\t// ErrorStringFunc mocks the ErrorString method.\n\tErrorStringFunc func(returnMoqParam nvml.Return) string\n\n\t// EventSetCreateFunc mocks the EventSetCreate method.\n\tEventSetCreateFunc func() (nvml.EventSet, nvml.Return)\n\n\t// EventSetFreeFunc mocks the EventSetFree method.\n\tEventSetFreeFunc func(eventSet nvml.EventSet) nvml.Return\n\n\t// EventSetWaitFunc mocks the EventSetWait method.\n\tEventSetWaitFunc func(eventSet nvml.EventSet, v uint32) (nvml.EventData, nvml.Return)\n\n\t// ExtensionsFunc mocks the Extensions method.\n\tExtensionsFunc func() nvml.ExtendedInterface\n\n\t// GetExcludedDeviceCountFunc mocks the GetExcludedDeviceCount method.\n\tGetExcludedDeviceCountFunc func() (int, nvml.Return)\n\n\t// GetExcludedDeviceInfoByIndexFunc mocks the GetExcludedDeviceInfoByIndex method.\n\tGetExcludedDeviceInfoByIndexFunc func(n int) (nvml.ExcludedDeviceInfo, nvml.Return)\n\n\t// GetVgpuCompatibilityFunc mocks the GetVgpuCompatibility method.\n\tGetVgpuCompatibilityFunc func(vgpuMetadata *nvml.VgpuMetadata, vgpuPgpuMetadata *nvml.VgpuPgpuMetadata) (nvml.VgpuPgpuCompatibility, nvml.Return)\n\n\t// GetVgpuDriverCapabilitiesFunc mocks the GetVgpuDriverCapabilities method.\n\tGetVgpuDriverCapabilitiesFunc func(vgpuDriverCapability nvml.VgpuDriverCapability) (bool, nvml.Return)\n\n\t// GetVgpuVersionFunc mocks the GetVgpuVersion method.\n\tGetVgpuVersionFunc func() (nvml.VgpuVersion, nvml.VgpuVersion, nvml.Return)\n\n\t// GpmMetricsGetFunc mocks the GpmMetricsGet method.\n\tGpmMetricsGetFunc func(gpmMetricsGetType *nvml.GpmMetricsGetType) nvml.Return\n\n\t// GpmMetricsGetVFunc mocks the GpmMetricsGetV method.\n\tGpmMetricsGetVFunc func(gpmMetricsGetType *nvml.GpmMetricsGetType) nvml.GpmMetricsGetVType\n\n\t// GpmMigSampleGetFunc mocks the GpmMigSampleGet method.\n\tGpmMigSampleGetFunc func(device nvml.Device, n int, gpmSample nvml.GpmSample) nvml.Return\n\n\t// GpmQueryDeviceSupportFunc mocks the GpmQueryDeviceSupport method.\n\tGpmQueryDeviceSupportFunc func(device nvml.Device) (nvml.GpmSupport, nvml.Return)\n\n\t// GpmQueryDeviceSupportVFunc mocks the GpmQueryDeviceSupportV method.\n\tGpmQueryDeviceSupportVFunc func(device nvml.Device) nvml.GpmSupportV\n\n\t// GpmQueryIfStreamingEnabledFunc mocks the GpmQueryIfStreamingEnabled method.\n\tGpmQueryIfStreamingEnabledFunc func(device nvml.Device) (uint32, nvml.Return)\n\n\t// GpmSampleAllocFunc mocks the GpmSampleAlloc method.\n\tGpmSampleAllocFunc func() (nvml.GpmSample, nvml.Return)\n\n\t// GpmSampleFreeFunc mocks the GpmSampleFree method.\n\tGpmSampleFreeFunc func(gpmSample nvml.GpmSample) nvml.Return\n\n\t// GpmSampleGetFunc mocks the GpmSampleGet method.\n\tGpmSampleGetFunc func(device nvml.Device, gpmSample nvml.GpmSample) nvml.Return\n\n\t// GpmSetStreamingEnabledFunc mocks the GpmSetStreamingEnabled method.\n\tGpmSetStreamingEnabledFunc func(device nvml.Device, v uint32) nvml.Return\n\n\t// GpuInstanceCreateComputeInstanceFunc mocks the GpuInstanceCreateComputeInstance method.\n\tGpuInstanceCreateComputeInstanceFunc func(gpuInstance nvml.GpuInstance, computeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo) (nvml.ComputeInstance, nvml.Return)\n\n\t// GpuInstanceCreateComputeInstanceWithPlacementFunc mocks the GpuInstanceCreateComputeInstanceWithPlacement method.\n\tGpuInstanceCreateComputeInstanceWithPlacementFunc func(gpuInstance nvml.GpuInstance, computeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo, computeInstancePlacement *nvml.ComputeInstancePlacement) (nvml.ComputeInstance, nvml.Return)\n\n\t// GpuInstanceDestroyFunc mocks the GpuInstanceDestroy method.\n\tGpuInstanceDestroyFunc func(gpuInstance nvml.GpuInstance) nvml.Return\n\n\t// GpuInstanceGetActiveVgpusFunc mocks the GpuInstanceGetActiveVgpus method.\n\tGpuInstanceGetActiveVgpusFunc func(gpuInstance nvml.GpuInstance) (nvml.ActiveVgpuInstanceInfo, nvml.Return)\n\n\t// GpuInstanceGetComputeInstanceByIdFunc mocks the GpuInstanceGetComputeInstanceById method.\n\tGpuInstanceGetComputeInstanceByIdFunc func(gpuInstance nvml.GpuInstance, n int) (nvml.ComputeInstance, nvml.Return)\n\n\t// GpuInstanceGetComputeInstancePossiblePlacementsFunc mocks the GpuInstanceGetComputeInstancePossiblePlacements method.\n\tGpuInstanceGetComputeInstancePossiblePlacementsFunc func(gpuInstance nvml.GpuInstance, computeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo) ([]nvml.ComputeInstancePlacement, nvml.Return)\n\n\t// GpuInstanceGetComputeInstanceProfileInfoFunc mocks the GpuInstanceGetComputeInstanceProfileInfo method.\n\tGpuInstanceGetComputeInstanceProfileInfoFunc func(gpuInstance nvml.GpuInstance, n1 int, n2 int) (nvml.ComputeInstanceProfileInfo, nvml.Return)\n\n\t// GpuInstanceGetComputeInstanceProfileInfoVFunc mocks the GpuInstanceGetComputeInstanceProfileInfoV method.\n\tGpuInstanceGetComputeInstanceProfileInfoVFunc func(gpuInstance nvml.GpuInstance, n1 int, n2 int) nvml.ComputeInstanceProfileInfoHandler\n\n\t// GpuInstanceGetComputeInstanceRemainingCapacityFunc mocks the GpuInstanceGetComputeInstanceRemainingCapacity method.\n\tGpuInstanceGetComputeInstanceRemainingCapacityFunc func(gpuInstance nvml.GpuInstance, computeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo) (int, nvml.Return)\n\n\t// GpuInstanceGetComputeInstancesFunc mocks the GpuInstanceGetComputeInstances method.\n\tGpuInstanceGetComputeInstancesFunc func(gpuInstance nvml.GpuInstance, computeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo) ([]nvml.ComputeInstance, nvml.Return)\n\n\t// GpuInstanceGetCreatableVgpusFunc mocks the GpuInstanceGetCreatableVgpus method.\n\tGpuInstanceGetCreatableVgpusFunc func(gpuInstance nvml.GpuInstance) (nvml.VgpuTypeIdInfo, nvml.Return)\n\n\t// GpuInstanceGetInfoFunc mocks the GpuInstanceGetInfo method.\n\tGpuInstanceGetInfoFunc func(gpuInstance nvml.GpuInstance) (nvml.GpuInstanceInfo, nvml.Return)\n\n\t// GpuInstanceGetVgpuHeterogeneousModeFunc mocks the GpuInstanceGetVgpuHeterogeneousMode method.\n\tGpuInstanceGetVgpuHeterogeneousModeFunc func(gpuInstance nvml.GpuInstance) (nvml.VgpuHeterogeneousMode, nvml.Return)\n\n\t// GpuInstanceGetVgpuSchedulerLogFunc mocks the GpuInstanceGetVgpuSchedulerLog method.\n\tGpuInstanceGetVgpuSchedulerLogFunc func(gpuInstance nvml.GpuInstance) (nvml.VgpuSchedulerLogInfo, nvml.Return)\n\n\t// GpuInstanceGetVgpuSchedulerStateFunc mocks the GpuInstanceGetVgpuSchedulerState method.\n\tGpuInstanceGetVgpuSchedulerStateFunc func(gpuInstance nvml.GpuInstance) (nvml.VgpuSchedulerStateInfo, nvml.Return)\n\n\t// GpuInstanceGetVgpuTypeCreatablePlacementsFunc mocks the GpuInstanceGetVgpuTypeCreatablePlacements method.\n\tGpuInstanceGetVgpuTypeCreatablePlacementsFunc func(gpuInstance nvml.GpuInstance) (nvml.VgpuCreatablePlacementInfo, nvml.Return)\n\n\t// GpuInstanceSetVgpuHeterogeneousModeFunc mocks the GpuInstanceSetVgpuHeterogeneousMode method.\n\tGpuInstanceSetVgpuHeterogeneousModeFunc func(gpuInstance nvml.GpuInstance, vgpuHeterogeneousMode *nvml.VgpuHeterogeneousMode) nvml.Return\n\n\t// GpuInstanceSetVgpuSchedulerStateFunc mocks the GpuInstanceSetVgpuSchedulerState method.\n\tGpuInstanceSetVgpuSchedulerStateFunc func(gpuInstance nvml.GpuInstance, vgpuSchedulerState *nvml.VgpuSchedulerState) nvml.Return\n\n\t// InitFunc mocks the Init method.\n\tInitFunc func() nvml.Return\n\n\t// InitWithFlagsFunc mocks the InitWithFlags method.\n\tInitWithFlagsFunc func(v uint32) nvml.Return\n\n\t// SetVgpuVersionFunc mocks the SetVgpuVersion method.\n\tSetVgpuVersionFunc func(vgpuVersion *nvml.VgpuVersion) nvml.Return\n\n\t// ShutdownFunc mocks the Shutdown method.\n\tShutdownFunc func() nvml.Return\n\n\t// SystemEventSetCreateFunc mocks the SystemEventSetCreate method.\n\tSystemEventSetCreateFunc func(systemEventSetCreateRequest *nvml.SystemEventSetCreateRequest) nvml.Return\n\n\t// SystemEventSetFreeFunc mocks the SystemEventSetFree method.\n\tSystemEventSetFreeFunc func(systemEventSetFreeRequest *nvml.SystemEventSetFreeRequest) nvml.Return\n\n\t// SystemEventSetWaitFunc mocks the SystemEventSetWait method.\n\tSystemEventSetWaitFunc func(systemEventSetWaitRequest *nvml.SystemEventSetWaitRequest) nvml.Return\n\n\t// SystemGetConfComputeCapabilitiesFunc mocks the SystemGetConfComputeCapabilities method.\n\tSystemGetConfComputeCapabilitiesFunc func() (nvml.ConfComputeSystemCaps, nvml.Return)\n\n\t// SystemGetConfComputeGpusReadyStateFunc mocks the SystemGetConfComputeGpusReadyState method.\n\tSystemGetConfComputeGpusReadyStateFunc func() (uint32, nvml.Return)\n\n\t// SystemGetConfComputeKeyRotationThresholdInfoFunc mocks the SystemGetConfComputeKeyRotationThresholdInfo method.\n\tSystemGetConfComputeKeyRotationThresholdInfoFunc func() (nvml.ConfComputeGetKeyRotationThresholdInfo, nvml.Return)\n\n\t// SystemGetConfComputeSettingsFunc mocks the SystemGetConfComputeSettings method.\n\tSystemGetConfComputeSettingsFunc func() (nvml.SystemConfComputeSettings, nvml.Return)\n\n\t// SystemGetConfComputeStateFunc mocks the SystemGetConfComputeState method.\n\tSystemGetConfComputeStateFunc func() (nvml.ConfComputeSystemState, nvml.Return)\n\n\t// SystemGetCudaDriverVersionFunc mocks the SystemGetCudaDriverVersion method.\n\tSystemGetCudaDriverVersionFunc func() (int, nvml.Return)\n\n\t// SystemGetCudaDriverVersion_v2Func mocks the SystemGetCudaDriverVersion_v2 method.\n\tSystemGetCudaDriverVersion_v2Func func() (int, nvml.Return)\n\n\t// SystemGetDriverBranchFunc mocks the SystemGetDriverBranch method.\n\tSystemGetDriverBranchFunc func() (nvml.SystemDriverBranchInfo, nvml.Return)\n\n\t// SystemGetDriverVersionFunc mocks the SystemGetDriverVersion method.\n\tSystemGetDriverVersionFunc func() (string, nvml.Return)\n\n\t// SystemGetHicVersionFunc mocks the SystemGetHicVersion method.\n\tSystemGetHicVersionFunc func() ([]nvml.HwbcEntry, nvml.Return)\n\n\t// SystemGetNVMLVersionFunc mocks the SystemGetNVMLVersion method.\n\tSystemGetNVMLVersionFunc func() (string, nvml.Return)\n\n\t// SystemGetNvlinkBwModeFunc mocks the SystemGetNvlinkBwMode method.\n\tSystemGetNvlinkBwModeFunc func() (uint32, nvml.Return)\n\n\t// SystemGetProcessNameFunc mocks the SystemGetProcessName method.\n\tSystemGetProcessNameFunc func(n int) (string, nvml.Return)\n\n\t// SystemGetTopologyGpuSetFunc mocks the SystemGetTopologyGpuSet method.\n\tSystemGetTopologyGpuSetFunc func(n int) ([]nvml.Device, nvml.Return)\n\n\t// SystemRegisterEventsFunc mocks the SystemRegisterEvents method.\n\tSystemRegisterEventsFunc func(systemRegisterEventRequest *nvml.SystemRegisterEventRequest) nvml.Return\n\n\t// SystemSetConfComputeGpusReadyStateFunc mocks the SystemSetConfComputeGpusReadyState method.\n\tSystemSetConfComputeGpusReadyStateFunc func(v uint32) nvml.Return\n\n\t// SystemSetConfComputeKeyRotationThresholdInfoFunc mocks the SystemSetConfComputeKeyRotationThresholdInfo method.\n\tSystemSetConfComputeKeyRotationThresholdInfoFunc func(confComputeSetKeyRotationThresholdInfo nvml.ConfComputeSetKeyRotationThresholdInfo) nvml.Return\n\n\t// SystemSetNvlinkBwModeFunc mocks the SystemSetNvlinkBwMode method.\n\tSystemSetNvlinkBwModeFunc func(v uint32) nvml.Return\n\n\t// UnitGetCountFunc mocks the UnitGetCount method.\n\tUnitGetCountFunc func() (int, nvml.Return)\n\n\t// UnitGetDevicesFunc mocks the UnitGetDevices method.\n\tUnitGetDevicesFunc func(unit nvml.Unit) ([]nvml.Device, nvml.Return)\n\n\t// UnitGetFanSpeedInfoFunc mocks the UnitGetFanSpeedInfo method.\n\tUnitGetFanSpeedInfoFunc func(unit nvml.Unit) (nvml.UnitFanSpeeds, nvml.Return)\n\n\t// UnitGetHandleByIndexFunc mocks the UnitGetHandleByIndex method.\n\tUnitGetHandleByIndexFunc func(n int) (nvml.Unit, nvml.Return)\n\n\t// UnitGetLedStateFunc mocks the UnitGetLedState method.\n\tUnitGetLedStateFunc func(unit nvml.Unit) (nvml.LedState, nvml.Return)\n\n\t// UnitGetPsuInfoFunc mocks the UnitGetPsuInfo method.\n\tUnitGetPsuInfoFunc func(unit nvml.Unit) (nvml.PSUInfo, nvml.Return)\n\n\t// UnitGetTemperatureFunc mocks the UnitGetTemperature method.\n\tUnitGetTemperatureFunc func(unit nvml.Unit, n int) (uint32, nvml.Return)\n\n\t// UnitGetUnitInfoFunc mocks the UnitGetUnitInfo method.\n\tUnitGetUnitInfoFunc func(unit nvml.Unit) (nvml.UnitInfo, nvml.Return)\n\n\t// UnitSetLedStateFunc mocks the UnitSetLedState method.\n\tUnitSetLedStateFunc func(unit nvml.Unit, ledColor nvml.LedColor) nvml.Return\n\n\t// VgpuInstanceClearAccountingPidsFunc mocks the VgpuInstanceClearAccountingPids method.\n\tVgpuInstanceClearAccountingPidsFunc func(vgpuInstance nvml.VgpuInstance) nvml.Return\n\n\t// VgpuInstanceGetAccountingModeFunc mocks the VgpuInstanceGetAccountingMode method.\n\tVgpuInstanceGetAccountingModeFunc func(vgpuInstance nvml.VgpuInstance) (nvml.EnableState, nvml.Return)\n\n\t// VgpuInstanceGetAccountingPidsFunc mocks the VgpuInstanceGetAccountingPids method.\n\tVgpuInstanceGetAccountingPidsFunc func(vgpuInstance nvml.VgpuInstance) ([]int, nvml.Return)\n\n\t// VgpuInstanceGetAccountingStatsFunc mocks the VgpuInstanceGetAccountingStats method.\n\tVgpuInstanceGetAccountingStatsFunc func(vgpuInstance nvml.VgpuInstance, n int) (nvml.AccountingStats, nvml.Return)\n\n\t// VgpuInstanceGetEccModeFunc mocks the VgpuInstanceGetEccMode method.\n\tVgpuInstanceGetEccModeFunc func(vgpuInstance nvml.VgpuInstance) (nvml.EnableState, nvml.Return)\n\n\t// VgpuInstanceGetEncoderCapacityFunc mocks the VgpuInstanceGetEncoderCapacity method.\n\tVgpuInstanceGetEncoderCapacityFunc func(vgpuInstance nvml.VgpuInstance) (int, nvml.Return)\n\n\t// VgpuInstanceGetEncoderSessionsFunc mocks the VgpuInstanceGetEncoderSessions method.\n\tVgpuInstanceGetEncoderSessionsFunc func(vgpuInstance nvml.VgpuInstance) (int, nvml.EncoderSessionInfo, nvml.Return)\n\n\t// VgpuInstanceGetEncoderStatsFunc mocks the VgpuInstanceGetEncoderStats method.\n\tVgpuInstanceGetEncoderStatsFunc func(vgpuInstance nvml.VgpuInstance) (int, uint32, uint32, nvml.Return)\n\n\t// VgpuInstanceGetFBCSessionsFunc mocks the VgpuInstanceGetFBCSessions method.\n\tVgpuInstanceGetFBCSessionsFunc func(vgpuInstance nvml.VgpuInstance) (int, nvml.FBCSessionInfo, nvml.Return)\n\n\t// VgpuInstanceGetFBCStatsFunc mocks the VgpuInstanceGetFBCStats method.\n\tVgpuInstanceGetFBCStatsFunc func(vgpuInstance nvml.VgpuInstance) (nvml.FBCStats, nvml.Return)\n\n\t// VgpuInstanceGetFbUsageFunc mocks the VgpuInstanceGetFbUsage method.\n\tVgpuInstanceGetFbUsageFunc func(vgpuInstance nvml.VgpuInstance) (uint64, nvml.Return)\n\n\t// VgpuInstanceGetFrameRateLimitFunc mocks the VgpuInstanceGetFrameRateLimit method.\n\tVgpuInstanceGetFrameRateLimitFunc func(vgpuInstance nvml.VgpuInstance) (uint32, nvml.Return)\n\n\t// VgpuInstanceGetGpuInstanceIdFunc mocks the VgpuInstanceGetGpuInstanceId method.\n\tVgpuInstanceGetGpuInstanceIdFunc func(vgpuInstance nvml.VgpuInstance) (int, nvml.Return)\n\n\t// VgpuInstanceGetGpuPciIdFunc mocks the VgpuInstanceGetGpuPciId method.\n\tVgpuInstanceGetGpuPciIdFunc func(vgpuInstance nvml.VgpuInstance) (string, nvml.Return)\n\n\t// VgpuInstanceGetLicenseInfoFunc mocks the VgpuInstanceGetLicenseInfo method.\n\tVgpuInstanceGetLicenseInfoFunc func(vgpuInstance nvml.VgpuInstance) (nvml.VgpuLicenseInfo, nvml.Return)\n\n\t// VgpuInstanceGetLicenseStatusFunc mocks the VgpuInstanceGetLicenseStatus method.\n\tVgpuInstanceGetLicenseStatusFunc func(vgpuInstance nvml.VgpuInstance) (int, nvml.Return)\n\n\t// VgpuInstanceGetMdevUUIDFunc mocks the VgpuInstanceGetMdevUUID method.\n\tVgpuInstanceGetMdevUUIDFunc func(vgpuInstance nvml.VgpuInstance) (string, nvml.Return)\n\n\t// VgpuInstanceGetMetadataFunc mocks the VgpuInstanceGetMetadata method.\n\tVgpuInstanceGetMetadataFunc func(vgpuInstance nvml.VgpuInstance) (nvml.VgpuMetadata, nvml.Return)\n\n\t// VgpuInstanceGetRuntimeStateSizeFunc mocks the VgpuInstanceGetRuntimeStateSize method.\n\tVgpuInstanceGetRuntimeStateSizeFunc func(vgpuInstance nvml.VgpuInstance) (nvml.VgpuRuntimeState, nvml.Return)\n\n\t// VgpuInstanceGetTypeFunc mocks the VgpuInstanceGetType method.\n\tVgpuInstanceGetTypeFunc func(vgpuInstance nvml.VgpuInstance) (nvml.VgpuTypeId, nvml.Return)\n\n\t// VgpuInstanceGetUUIDFunc mocks the VgpuInstanceGetUUID method.\n\tVgpuInstanceGetUUIDFunc func(vgpuInstance nvml.VgpuInstance) (string, nvml.Return)\n\n\t// VgpuInstanceGetVmDriverVersionFunc mocks the VgpuInstanceGetVmDriverVersion method.\n\tVgpuInstanceGetVmDriverVersionFunc func(vgpuInstance nvml.VgpuInstance) (string, nvml.Return)\n\n\t// VgpuInstanceGetVmIDFunc mocks the VgpuInstanceGetVmID method.\n\tVgpuInstanceGetVmIDFunc func(vgpuInstance nvml.VgpuInstance) (string, nvml.VgpuVmIdType, nvml.Return)\n\n\t// VgpuInstanceSetEncoderCapacityFunc mocks the VgpuInstanceSetEncoderCapacity method.\n\tVgpuInstanceSetEncoderCapacityFunc func(vgpuInstance nvml.VgpuInstance, n int) nvml.Return\n\n\t// VgpuTypeGetBAR1InfoFunc mocks the VgpuTypeGetBAR1Info method.\n\tVgpuTypeGetBAR1InfoFunc func(vgpuTypeId nvml.VgpuTypeId) (nvml.VgpuTypeBar1Info, nvml.Return)\n\n\t// VgpuTypeGetCapabilitiesFunc mocks the VgpuTypeGetCapabilities method.\n\tVgpuTypeGetCapabilitiesFunc func(vgpuTypeId nvml.VgpuTypeId, vgpuCapability nvml.VgpuCapability) (bool, nvml.Return)\n\n\t// VgpuTypeGetClassFunc mocks the VgpuTypeGetClass method.\n\tVgpuTypeGetClassFunc func(vgpuTypeId nvml.VgpuTypeId) (string, nvml.Return)\n\n\t// VgpuTypeGetDeviceIDFunc mocks the VgpuTypeGetDeviceID method.\n\tVgpuTypeGetDeviceIDFunc func(vgpuTypeId nvml.VgpuTypeId) (uint64, uint64, nvml.Return)\n\n\t// VgpuTypeGetFrameRateLimitFunc mocks the VgpuTypeGetFrameRateLimit method.\n\tVgpuTypeGetFrameRateLimitFunc func(vgpuTypeId nvml.VgpuTypeId) (uint32, nvml.Return)\n\n\t// VgpuTypeGetFramebufferSizeFunc mocks the VgpuTypeGetFramebufferSize method.\n\tVgpuTypeGetFramebufferSizeFunc func(vgpuTypeId nvml.VgpuTypeId) (uint64, nvml.Return)\n\n\t// VgpuTypeGetGpuInstanceProfileIdFunc mocks the VgpuTypeGetGpuInstanceProfileId method.\n\tVgpuTypeGetGpuInstanceProfileIdFunc func(vgpuTypeId nvml.VgpuTypeId) (uint32, nvml.Return)\n\n\t// VgpuTypeGetLicenseFunc mocks the VgpuTypeGetLicense method.\n\tVgpuTypeGetLicenseFunc func(vgpuTypeId nvml.VgpuTypeId) (string, nvml.Return)\n\n\t// VgpuTypeGetMaxInstancesFunc mocks the VgpuTypeGetMaxInstances method.\n\tVgpuTypeGetMaxInstancesFunc func(device nvml.Device, vgpuTypeId nvml.VgpuTypeId) (int, nvml.Return)\n\n\t// VgpuTypeGetMaxInstancesPerGpuInstanceFunc mocks the VgpuTypeGetMaxInstancesPerGpuInstance method.\n\tVgpuTypeGetMaxInstancesPerGpuInstanceFunc func(vgpuTypeMaxInstance *nvml.VgpuTypeMaxInstance) nvml.Return\n\n\t// VgpuTypeGetMaxInstancesPerVmFunc mocks the VgpuTypeGetMaxInstancesPerVm method.\n\tVgpuTypeGetMaxInstancesPerVmFunc func(vgpuTypeId nvml.VgpuTypeId) (int, nvml.Return)\n\n\t// VgpuTypeGetNameFunc mocks the VgpuTypeGetName method.\n\tVgpuTypeGetNameFunc func(vgpuTypeId nvml.VgpuTypeId) (string, nvml.Return)\n\n\t// VgpuTypeGetNumDisplayHeadsFunc mocks the VgpuTypeGetNumDisplayHeads method.\n\tVgpuTypeGetNumDisplayHeadsFunc func(vgpuTypeId nvml.VgpuTypeId) (int, nvml.Return)\n\n\t// VgpuTypeGetResolutionFunc mocks the VgpuTypeGetResolution method.\n\tVgpuTypeGetResolutionFunc func(vgpuTypeId nvml.VgpuTypeId, n int) (uint32, uint32, nvml.Return)\n\n\t// calls tracks calls to the methods.\n\tcalls struct {\n\t\t// ComputeInstanceDestroy holds details about calls to the ComputeInstanceDestroy method.\n\t\tComputeInstanceDestroy []struct {\n\t\t\t// ComputeInstance is the computeInstance argument value.\n\t\t\tComputeInstance nvml.ComputeInstance\n\t\t}\n\t\t// ComputeInstanceGetInfo holds details about calls to the ComputeInstanceGetInfo method.\n\t\tComputeInstanceGetInfo []struct {\n\t\t\t// ComputeInstance is the computeInstance argument value.\n\t\t\tComputeInstance nvml.ComputeInstance\n\t\t}\n\t\t// DeviceClearAccountingPids holds details about calls to the DeviceClearAccountingPids method.\n\t\tDeviceClearAccountingPids []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceClearCpuAffinity holds details about calls to the DeviceClearCpuAffinity method.\n\t\tDeviceClearCpuAffinity []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceClearEccErrorCounts holds details about calls to the DeviceClearEccErrorCounts method.\n\t\tDeviceClearEccErrorCounts []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// EccCounterType is the eccCounterType argument value.\n\t\t\tEccCounterType nvml.EccCounterType\n\t\t}\n\t\t// DeviceClearFieldValues holds details about calls to the DeviceClearFieldValues method.\n\t\tDeviceClearFieldValues []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// FieldValues is the fieldValues argument value.\n\t\t\tFieldValues []nvml.FieldValue\n\t\t}\n\t\t// DeviceCreateGpuInstance holds details about calls to the DeviceCreateGpuInstance method.\n\t\tDeviceCreateGpuInstance []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// GpuInstanceProfileInfo is the gpuInstanceProfileInfo argument value.\n\t\t\tGpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo\n\t\t}\n\t\t// DeviceCreateGpuInstanceWithPlacement holds details about calls to the DeviceCreateGpuInstanceWithPlacement method.\n\t\tDeviceCreateGpuInstanceWithPlacement []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// GpuInstanceProfileInfo is the gpuInstanceProfileInfo argument value.\n\t\t\tGpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo\n\t\t\t// GpuInstancePlacement is the gpuInstancePlacement argument value.\n\t\t\tGpuInstancePlacement *nvml.GpuInstancePlacement\n\t\t}\n\t\t// DeviceDiscoverGpus holds details about calls to the DeviceDiscoverGpus method.\n\t\tDeviceDiscoverGpus []struct {\n\t\t}\n\t\t// DeviceFreezeNvLinkUtilizationCounter holds details about calls to the DeviceFreezeNvLinkUtilizationCounter method.\n\t\tDeviceFreezeNvLinkUtilizationCounter []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// N1 is the n1 argument value.\n\t\t\tN1 int\n\t\t\t// N2 is the n2 argument value.\n\t\t\tN2 int\n\t\t\t// EnableState is the enableState argument value.\n\t\t\tEnableState nvml.EnableState\n\t\t}\n\t\t// DeviceGetAPIRestriction holds details about calls to the DeviceGetAPIRestriction method.\n\t\tDeviceGetAPIRestriction []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// RestrictedAPI is the restrictedAPI argument value.\n\t\t\tRestrictedAPI nvml.RestrictedAPI\n\t\t}\n\t\t// DeviceGetAccountingBufferSize holds details about calls to the DeviceGetAccountingBufferSize method.\n\t\tDeviceGetAccountingBufferSize []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetAccountingMode holds details about calls to the DeviceGetAccountingMode method.\n\t\tDeviceGetAccountingMode []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetAccountingPids holds details about calls to the DeviceGetAccountingPids method.\n\t\tDeviceGetAccountingPids []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetAccountingStats holds details about calls to the DeviceGetAccountingStats method.\n\t\tDeviceGetAccountingStats []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// V is the v argument value.\n\t\t\tV uint32\n\t\t}\n\t\t// DeviceGetActiveVgpus holds details about calls to the DeviceGetActiveVgpus method.\n\t\tDeviceGetActiveVgpus []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetAdaptiveClockInfoStatus holds details about calls to the DeviceGetAdaptiveClockInfoStatus method.\n\t\tDeviceGetAdaptiveClockInfoStatus []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetAddressingMode holds details about calls to the DeviceGetAddressingMode method.\n\t\tDeviceGetAddressingMode []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetApplicationsClock holds details about calls to the DeviceGetApplicationsClock method.\n\t\tDeviceGetApplicationsClock []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// ClockType is the clockType argument value.\n\t\t\tClockType nvml.ClockType\n\t\t}\n\t\t// DeviceGetArchitecture holds details about calls to the DeviceGetArchitecture method.\n\t\tDeviceGetArchitecture []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetAttributes holds details about calls to the DeviceGetAttributes method.\n\t\tDeviceGetAttributes []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetAutoBoostedClocksEnabled holds details about calls to the DeviceGetAutoBoostedClocksEnabled method.\n\t\tDeviceGetAutoBoostedClocksEnabled []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetBAR1MemoryInfo holds details about calls to the DeviceGetBAR1MemoryInfo method.\n\t\tDeviceGetBAR1MemoryInfo []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetBoardId holds details about calls to the DeviceGetBoardId method.\n\t\tDeviceGetBoardId []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetBoardPartNumber holds details about calls to the DeviceGetBoardPartNumber method.\n\t\tDeviceGetBoardPartNumber []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetBrand holds details about calls to the DeviceGetBrand method.\n\t\tDeviceGetBrand []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetBridgeChipInfo holds details about calls to the DeviceGetBridgeChipInfo method.\n\t\tDeviceGetBridgeChipInfo []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetBusType holds details about calls to the DeviceGetBusType method.\n\t\tDeviceGetBusType []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetC2cModeInfoV holds details about calls to the DeviceGetC2cModeInfoV method.\n\t\tDeviceGetC2cModeInfoV []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetCapabilities holds details about calls to the DeviceGetCapabilities method.\n\t\tDeviceGetCapabilities []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetClkMonStatus holds details about calls to the DeviceGetClkMonStatus method.\n\t\tDeviceGetClkMonStatus []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetClock holds details about calls to the DeviceGetClock method.\n\t\tDeviceGetClock []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// ClockType is the clockType argument value.\n\t\t\tClockType nvml.ClockType\n\t\t\t// ClockId is the clockId argument value.\n\t\t\tClockId nvml.ClockId\n\t\t}\n\t\t// DeviceGetClockInfo holds details about calls to the DeviceGetClockInfo method.\n\t\tDeviceGetClockInfo []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// ClockType is the clockType argument value.\n\t\t\tClockType nvml.ClockType\n\t\t}\n\t\t// DeviceGetClockOffsets holds details about calls to the DeviceGetClockOffsets method.\n\t\tDeviceGetClockOffsets []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetComputeInstanceId holds details about calls to the DeviceGetComputeInstanceId method.\n\t\tDeviceGetComputeInstanceId []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetComputeMode holds details about calls to the DeviceGetComputeMode method.\n\t\tDeviceGetComputeMode []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetComputeRunningProcesses holds details about calls to the DeviceGetComputeRunningProcesses method.\n\t\tDeviceGetComputeRunningProcesses []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetConfComputeGpuAttestationReport holds details about calls to the DeviceGetConfComputeGpuAttestationReport method.\n\t\tDeviceGetConfComputeGpuAttestationReport []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// ConfComputeGpuAttestationReport is the confComputeGpuAttestationReport argument value.\n\t\t\tConfComputeGpuAttestationReport *nvml.ConfComputeGpuAttestationReport\n\t\t}\n\t\t// DeviceGetConfComputeGpuCertificate holds details about calls to the DeviceGetConfComputeGpuCertificate method.\n\t\tDeviceGetConfComputeGpuCertificate []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetConfComputeMemSizeInfo holds details about calls to the DeviceGetConfComputeMemSizeInfo method.\n\t\tDeviceGetConfComputeMemSizeInfo []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetConfComputeProtectedMemoryUsage holds details about calls to the DeviceGetConfComputeProtectedMemoryUsage method.\n\t\tDeviceGetConfComputeProtectedMemoryUsage []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetCoolerInfo holds details about calls to the DeviceGetCoolerInfo method.\n\t\tDeviceGetCoolerInfo []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetCount holds details about calls to the DeviceGetCount method.\n\t\tDeviceGetCount []struct {\n\t\t}\n\t\t// DeviceGetCpuAffinity holds details about calls to the DeviceGetCpuAffinity method.\n\t\tDeviceGetCpuAffinity []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t}\n\t\t// DeviceGetCpuAffinityWithinScope holds details about calls to the DeviceGetCpuAffinityWithinScope method.\n\t\tDeviceGetCpuAffinityWithinScope []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t\t// AffinityScope is the affinityScope argument value.\n\t\t\tAffinityScope nvml.AffinityScope\n\t\t}\n\t\t// DeviceGetCreatableVgpus holds details about calls to the DeviceGetCreatableVgpus method.\n\t\tDeviceGetCreatableVgpus []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetCudaComputeCapability holds details about calls to the DeviceGetCudaComputeCapability method.\n\t\tDeviceGetCudaComputeCapability []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetCurrPcieLinkGeneration holds details about calls to the DeviceGetCurrPcieLinkGeneration method.\n\t\tDeviceGetCurrPcieLinkGeneration []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetCurrPcieLinkWidth holds details about calls to the DeviceGetCurrPcieLinkWidth method.\n\t\tDeviceGetCurrPcieLinkWidth []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetCurrentClockFreqs holds details about calls to the DeviceGetCurrentClockFreqs method.\n\t\tDeviceGetCurrentClockFreqs []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetCurrentClocksEventReasons holds details about calls to the DeviceGetCurrentClocksEventReasons method.\n\t\tDeviceGetCurrentClocksEventReasons []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetCurrentClocksThrottleReasons holds details about calls to the DeviceGetCurrentClocksThrottleReasons method.\n\t\tDeviceGetCurrentClocksThrottleReasons []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetDecoderUtilization holds details about calls to the DeviceGetDecoderUtilization method.\n\t\tDeviceGetDecoderUtilization []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetDefaultApplicationsClock holds details about calls to the DeviceGetDefaultApplicationsClock method.\n\t\tDeviceGetDefaultApplicationsClock []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// ClockType is the clockType argument value.\n\t\t\tClockType nvml.ClockType\n\t\t}\n\t\t// DeviceGetDefaultEccMode holds details about calls to the DeviceGetDefaultEccMode method.\n\t\tDeviceGetDefaultEccMode []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetDetailedEccErrors holds details about calls to the DeviceGetDetailedEccErrors method.\n\t\tDeviceGetDetailedEccErrors []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// MemoryErrorType is the memoryErrorType argument value.\n\t\t\tMemoryErrorType nvml.MemoryErrorType\n\t\t\t// EccCounterType is the eccCounterType argument value.\n\t\t\tEccCounterType nvml.EccCounterType\n\t\t}\n\t\t// DeviceGetDeviceHandleFromMigDeviceHandle holds details about calls to the DeviceGetDeviceHandleFromMigDeviceHandle method.\n\t\tDeviceGetDeviceHandleFromMigDeviceHandle []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetDisplayActive holds details about calls to the DeviceGetDisplayActive method.\n\t\tDeviceGetDisplayActive []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetDisplayMode holds details about calls to the DeviceGetDisplayMode method.\n\t\tDeviceGetDisplayMode []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetDramEncryptionMode holds details about calls to the DeviceGetDramEncryptionMode method.\n\t\tDeviceGetDramEncryptionMode []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetDriverModel holds details about calls to the DeviceGetDriverModel method.\n\t\tDeviceGetDriverModel []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetDriverModel_v2 holds details about calls to the DeviceGetDriverModel_v2 method.\n\t\tDeviceGetDriverModel_v2 []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetDynamicPstatesInfo holds details about calls to the DeviceGetDynamicPstatesInfo method.\n\t\tDeviceGetDynamicPstatesInfo []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetEccMode holds details about calls to the DeviceGetEccMode method.\n\t\tDeviceGetEccMode []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetEncoderCapacity holds details about calls to the DeviceGetEncoderCapacity method.\n\t\tDeviceGetEncoderCapacity []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// EncoderType is the encoderType argument value.\n\t\t\tEncoderType nvml.EncoderType\n\t\t}\n\t\t// DeviceGetEncoderSessions holds details about calls to the DeviceGetEncoderSessions method.\n\t\tDeviceGetEncoderSessions []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetEncoderStats holds details about calls to the DeviceGetEncoderStats method.\n\t\tDeviceGetEncoderStats []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetEncoderUtilization holds details about calls to the DeviceGetEncoderUtilization method.\n\t\tDeviceGetEncoderUtilization []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetEnforcedPowerLimit holds details about calls to the DeviceGetEnforcedPowerLimit method.\n\t\tDeviceGetEnforcedPowerLimit []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetFBCSessions holds details about calls to the DeviceGetFBCSessions method.\n\t\tDeviceGetFBCSessions []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetFBCStats holds details about calls to the DeviceGetFBCStats method.\n\t\tDeviceGetFBCStats []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetFanControlPolicy_v2 holds details about calls to the DeviceGetFanControlPolicy_v2 method.\n\t\tDeviceGetFanControlPolicy_v2 []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t}\n\t\t// DeviceGetFanSpeed holds details about calls to the DeviceGetFanSpeed method.\n\t\tDeviceGetFanSpeed []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetFanSpeedRPM holds details about calls to the DeviceGetFanSpeedRPM method.\n\t\tDeviceGetFanSpeedRPM []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetFanSpeed_v2 holds details about calls to the DeviceGetFanSpeed_v2 method.\n\t\tDeviceGetFanSpeed_v2 []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t}\n\t\t// DeviceGetFieldValues holds details about calls to the DeviceGetFieldValues method.\n\t\tDeviceGetFieldValues []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// FieldValues is the fieldValues argument value.\n\t\t\tFieldValues []nvml.FieldValue\n\t\t}\n\t\t// DeviceGetGpcClkMinMaxVfOffset holds details about calls to the DeviceGetGpcClkMinMaxVfOffset method.\n\t\tDeviceGetGpcClkMinMaxVfOffset []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetGpcClkVfOffset holds details about calls to the DeviceGetGpcClkVfOffset method.\n\t\tDeviceGetGpcClkVfOffset []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetGpuFabricInfo holds details about calls to the DeviceGetGpuFabricInfo method.\n\t\tDeviceGetGpuFabricInfo []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetGpuFabricInfoV holds details about calls to the DeviceGetGpuFabricInfoV method.\n\t\tDeviceGetGpuFabricInfoV []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetGpuInstanceById holds details about calls to the DeviceGetGpuInstanceById method.\n\t\tDeviceGetGpuInstanceById []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t}\n\t\t// DeviceGetGpuInstanceId holds details about calls to the DeviceGetGpuInstanceId method.\n\t\tDeviceGetGpuInstanceId []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetGpuInstancePossiblePlacements holds details about calls to the DeviceGetGpuInstancePossiblePlacements method.\n\t\tDeviceGetGpuInstancePossiblePlacements []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// GpuInstanceProfileInfo is the gpuInstanceProfileInfo argument value.\n\t\t\tGpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo\n\t\t}\n\t\t// DeviceGetGpuInstanceProfileInfo holds details about calls to the DeviceGetGpuInstanceProfileInfo method.\n\t\tDeviceGetGpuInstanceProfileInfo []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t}\n\t\t// DeviceGetGpuInstanceProfileInfoByIdV holds details about calls to the DeviceGetGpuInstanceProfileInfoByIdV method.\n\t\tDeviceGetGpuInstanceProfileInfoByIdV []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t}\n\t\t// DeviceGetGpuInstanceProfileInfoV holds details about calls to the DeviceGetGpuInstanceProfileInfoV method.\n\t\tDeviceGetGpuInstanceProfileInfoV []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t}\n\t\t// DeviceGetGpuInstanceRemainingCapacity holds details about calls to the DeviceGetGpuInstanceRemainingCapacity method.\n\t\tDeviceGetGpuInstanceRemainingCapacity []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// GpuInstanceProfileInfo is the gpuInstanceProfileInfo argument value.\n\t\t\tGpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo\n\t\t}\n\t\t// DeviceGetGpuInstances holds details about calls to the DeviceGetGpuInstances method.\n\t\tDeviceGetGpuInstances []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// GpuInstanceProfileInfo is the gpuInstanceProfileInfo argument value.\n\t\t\tGpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo\n\t\t}\n\t\t// DeviceGetGpuMaxPcieLinkGeneration holds details about calls to the DeviceGetGpuMaxPcieLinkGeneration method.\n\t\tDeviceGetGpuMaxPcieLinkGeneration []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetGpuOperationMode holds details about calls to the DeviceGetGpuOperationMode method.\n\t\tDeviceGetGpuOperationMode []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetGraphicsRunningProcesses holds details about calls to the DeviceGetGraphicsRunningProcesses method.\n\t\tDeviceGetGraphicsRunningProcesses []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetGridLicensableFeatures holds details about calls to the DeviceGetGridLicensableFeatures method.\n\t\tDeviceGetGridLicensableFeatures []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetGspFirmwareMode holds details about calls to the DeviceGetGspFirmwareMode method.\n\t\tDeviceGetGspFirmwareMode []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetGspFirmwareVersion holds details about calls to the DeviceGetGspFirmwareVersion method.\n\t\tDeviceGetGspFirmwareVersion []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetHandleByIndex holds details about calls to the DeviceGetHandleByIndex method.\n\t\tDeviceGetHandleByIndex []struct {\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t}\n\t\t// DeviceGetHandleByPciBusId holds details about calls to the DeviceGetHandleByPciBusId method.\n\t\tDeviceGetHandleByPciBusId []struct {\n\t\t\t// S is the s argument value.\n\t\t\tS string\n\t\t}\n\t\t// DeviceGetHandleBySerial holds details about calls to the DeviceGetHandleBySerial method.\n\t\tDeviceGetHandleBySerial []struct {\n\t\t\t// S is the s argument value.\n\t\t\tS string\n\t\t}\n\t\t// DeviceGetHandleByUUID holds details about calls to the DeviceGetHandleByUUID method.\n\t\tDeviceGetHandleByUUID []struct {\n\t\t\t// S is the s argument value.\n\t\t\tS string\n\t\t}\n\t\t// DeviceGetHandleByUUIDV holds details about calls to the DeviceGetHandleByUUIDV method.\n\t\tDeviceGetHandleByUUIDV []struct {\n\t\t\t// UUID is the uUID argument value.\n\t\t\tUUID *nvml.UUID\n\t\t}\n\t\t// DeviceGetHostVgpuMode holds details about calls to the DeviceGetHostVgpuMode method.\n\t\tDeviceGetHostVgpuMode []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetIndex holds details about calls to the DeviceGetIndex method.\n\t\tDeviceGetIndex []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetInforomConfigurationChecksum holds details about calls to the DeviceGetInforomConfigurationChecksum method.\n\t\tDeviceGetInforomConfigurationChecksum []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetInforomImageVersion holds details about calls to the DeviceGetInforomImageVersion method.\n\t\tDeviceGetInforomImageVersion []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetInforomVersion holds details about calls to the DeviceGetInforomVersion method.\n\t\tDeviceGetInforomVersion []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// InforomObject is the inforomObject argument value.\n\t\t\tInforomObject nvml.InforomObject\n\t\t}\n\t\t// DeviceGetIrqNum holds details about calls to the DeviceGetIrqNum method.\n\t\tDeviceGetIrqNum []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetJpgUtilization holds details about calls to the DeviceGetJpgUtilization method.\n\t\tDeviceGetJpgUtilization []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetLastBBXFlushTime holds details about calls to the DeviceGetLastBBXFlushTime method.\n\t\tDeviceGetLastBBXFlushTime []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetMPSComputeRunningProcesses holds details about calls to the DeviceGetMPSComputeRunningProcesses method.\n\t\tDeviceGetMPSComputeRunningProcesses []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetMarginTemperature holds details about calls to the DeviceGetMarginTemperature method.\n\t\tDeviceGetMarginTemperature []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetMaxClockInfo holds details about calls to the DeviceGetMaxClockInfo method.\n\t\tDeviceGetMaxClockInfo []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// ClockType is the clockType argument value.\n\t\t\tClockType nvml.ClockType\n\t\t}\n\t\t// DeviceGetMaxCustomerBoostClock holds details about calls to the DeviceGetMaxCustomerBoostClock method.\n\t\tDeviceGetMaxCustomerBoostClock []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// ClockType is the clockType argument value.\n\t\t\tClockType nvml.ClockType\n\t\t}\n\t\t// DeviceGetMaxMigDeviceCount holds details about calls to the DeviceGetMaxMigDeviceCount method.\n\t\tDeviceGetMaxMigDeviceCount []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetMaxPcieLinkGeneration holds details about calls to the DeviceGetMaxPcieLinkGeneration method.\n\t\tDeviceGetMaxPcieLinkGeneration []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetMaxPcieLinkWidth holds details about calls to the DeviceGetMaxPcieLinkWidth method.\n\t\tDeviceGetMaxPcieLinkWidth []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetMemClkMinMaxVfOffset holds details about calls to the DeviceGetMemClkMinMaxVfOffset method.\n\t\tDeviceGetMemClkMinMaxVfOffset []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetMemClkVfOffset holds details about calls to the DeviceGetMemClkVfOffset method.\n\t\tDeviceGetMemClkVfOffset []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetMemoryAffinity holds details about calls to the DeviceGetMemoryAffinity method.\n\t\tDeviceGetMemoryAffinity []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t\t// AffinityScope is the affinityScope argument value.\n\t\t\tAffinityScope nvml.AffinityScope\n\t\t}\n\t\t// DeviceGetMemoryBusWidth holds details about calls to the DeviceGetMemoryBusWidth method.\n\t\tDeviceGetMemoryBusWidth []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetMemoryErrorCounter holds details about calls to the DeviceGetMemoryErrorCounter method.\n\t\tDeviceGetMemoryErrorCounter []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// MemoryErrorType is the memoryErrorType argument value.\n\t\t\tMemoryErrorType nvml.MemoryErrorType\n\t\t\t// EccCounterType is the eccCounterType argument value.\n\t\t\tEccCounterType nvml.EccCounterType\n\t\t\t// MemoryLocation is the memoryLocation argument value.\n\t\t\tMemoryLocation nvml.MemoryLocation\n\t\t}\n\t\t// DeviceGetMemoryInfo holds details about calls to the DeviceGetMemoryInfo method.\n\t\tDeviceGetMemoryInfo []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetMemoryInfo_v2 holds details about calls to the DeviceGetMemoryInfo_v2 method.\n\t\tDeviceGetMemoryInfo_v2 []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetMigDeviceHandleByIndex holds details about calls to the DeviceGetMigDeviceHandleByIndex method.\n\t\tDeviceGetMigDeviceHandleByIndex []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t}\n\t\t// DeviceGetMigMode holds details about calls to the DeviceGetMigMode method.\n\t\tDeviceGetMigMode []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetMinMaxClockOfPState holds details about calls to the DeviceGetMinMaxClockOfPState method.\n\t\tDeviceGetMinMaxClockOfPState []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// ClockType is the clockType argument value.\n\t\t\tClockType nvml.ClockType\n\t\t\t// Pstates is the pstates argument value.\n\t\t\tPstates nvml.Pstates\n\t\t}\n\t\t// DeviceGetMinMaxFanSpeed holds details about calls to the DeviceGetMinMaxFanSpeed method.\n\t\tDeviceGetMinMaxFanSpeed []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetMinorNumber holds details about calls to the DeviceGetMinorNumber method.\n\t\tDeviceGetMinorNumber []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetModuleId holds details about calls to the DeviceGetModuleId method.\n\t\tDeviceGetModuleId []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetMultiGpuBoard holds details about calls to the DeviceGetMultiGpuBoard method.\n\t\tDeviceGetMultiGpuBoard []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetName holds details about calls to the DeviceGetName method.\n\t\tDeviceGetName []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetNumFans holds details about calls to the DeviceGetNumFans method.\n\t\tDeviceGetNumFans []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetNumGpuCores holds details about calls to the DeviceGetNumGpuCores method.\n\t\tDeviceGetNumGpuCores []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetNumaNodeId holds details about calls to the DeviceGetNumaNodeId method.\n\t\tDeviceGetNumaNodeId []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetNvLinkCapability holds details about calls to the DeviceGetNvLinkCapability method.\n\t\tDeviceGetNvLinkCapability []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t\t// NvLinkCapability is the nvLinkCapability argument value.\n\t\t\tNvLinkCapability nvml.NvLinkCapability\n\t\t}\n\t\t// DeviceGetNvLinkErrorCounter holds details about calls to the DeviceGetNvLinkErrorCounter method.\n\t\tDeviceGetNvLinkErrorCounter []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t\t// NvLinkErrorCounter is the nvLinkErrorCounter argument value.\n\t\t\tNvLinkErrorCounter nvml.NvLinkErrorCounter\n\t\t}\n\t\t// DeviceGetNvLinkInfo holds details about calls to the DeviceGetNvLinkInfo method.\n\t\tDeviceGetNvLinkInfo []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetNvLinkRemoteDeviceType holds details about calls to the DeviceGetNvLinkRemoteDeviceType method.\n\t\tDeviceGetNvLinkRemoteDeviceType []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t}\n\t\t// DeviceGetNvLinkRemotePciInfo holds details about calls to the DeviceGetNvLinkRemotePciInfo method.\n\t\tDeviceGetNvLinkRemotePciInfo []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t}\n\t\t// DeviceGetNvLinkState holds details about calls to the DeviceGetNvLinkState method.\n\t\tDeviceGetNvLinkState []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t}\n\t\t// DeviceGetNvLinkUtilizationControl holds details about calls to the DeviceGetNvLinkUtilizationControl method.\n\t\tDeviceGetNvLinkUtilizationControl []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// N1 is the n1 argument value.\n\t\t\tN1 int\n\t\t\t// N2 is the n2 argument value.\n\t\t\tN2 int\n\t\t}\n\t\t// DeviceGetNvLinkUtilizationCounter holds details about calls to the DeviceGetNvLinkUtilizationCounter method.\n\t\tDeviceGetNvLinkUtilizationCounter []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// N1 is the n1 argument value.\n\t\t\tN1 int\n\t\t\t// N2 is the n2 argument value.\n\t\t\tN2 int\n\t\t}\n\t\t// DeviceGetNvLinkVersion holds details about calls to the DeviceGetNvLinkVersion method.\n\t\tDeviceGetNvLinkVersion []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t}\n\t\t// DeviceGetNvlinkBwMode holds details about calls to the DeviceGetNvlinkBwMode method.\n\t\tDeviceGetNvlinkBwMode []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetNvlinkSupportedBwModes holds details about calls to the DeviceGetNvlinkSupportedBwModes method.\n\t\tDeviceGetNvlinkSupportedBwModes []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetOfaUtilization holds details about calls to the DeviceGetOfaUtilization method.\n\t\tDeviceGetOfaUtilization []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetP2PStatus holds details about calls to the DeviceGetP2PStatus method.\n\t\tDeviceGetP2PStatus []struct {\n\t\t\t// Device1 is the device1 argument value.\n\t\t\tDevice1 nvml.Device\n\t\t\t// Device2 is the device2 argument value.\n\t\t\tDevice2 nvml.Device\n\t\t\t// GpuP2PCapsIndex is the gpuP2PCapsIndex argument value.\n\t\t\tGpuP2PCapsIndex nvml.GpuP2PCapsIndex\n\t\t}\n\t\t// DeviceGetPciInfo holds details about calls to the DeviceGetPciInfo method.\n\t\tDeviceGetPciInfo []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetPciInfoExt holds details about calls to the DeviceGetPciInfoExt method.\n\t\tDeviceGetPciInfoExt []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetPcieLinkMaxSpeed holds details about calls to the DeviceGetPcieLinkMaxSpeed method.\n\t\tDeviceGetPcieLinkMaxSpeed []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetPcieReplayCounter holds details about calls to the DeviceGetPcieReplayCounter method.\n\t\tDeviceGetPcieReplayCounter []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetPcieSpeed holds details about calls to the DeviceGetPcieSpeed method.\n\t\tDeviceGetPcieSpeed []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetPcieThroughput holds details about calls to the DeviceGetPcieThroughput method.\n\t\tDeviceGetPcieThroughput []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// PcieUtilCounter is the pcieUtilCounter argument value.\n\t\t\tPcieUtilCounter nvml.PcieUtilCounter\n\t\t}\n\t\t// DeviceGetPdi holds details about calls to the DeviceGetPdi method.\n\t\tDeviceGetPdi []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetPerformanceModes holds details about calls to the DeviceGetPerformanceModes method.\n\t\tDeviceGetPerformanceModes []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetPerformanceState holds details about calls to the DeviceGetPerformanceState method.\n\t\tDeviceGetPerformanceState []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetPersistenceMode holds details about calls to the DeviceGetPersistenceMode method.\n\t\tDeviceGetPersistenceMode []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetPgpuMetadataString holds details about calls to the DeviceGetPgpuMetadataString method.\n\t\tDeviceGetPgpuMetadataString []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetPlatformInfo holds details about calls to the DeviceGetPlatformInfo method.\n\t\tDeviceGetPlatformInfo []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetPowerManagementDefaultLimit holds details about calls to the DeviceGetPowerManagementDefaultLimit method.\n\t\tDeviceGetPowerManagementDefaultLimit []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetPowerManagementLimit holds details about calls to the DeviceGetPowerManagementLimit method.\n\t\tDeviceGetPowerManagementLimit []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetPowerManagementLimitConstraints holds details about calls to the DeviceGetPowerManagementLimitConstraints method.\n\t\tDeviceGetPowerManagementLimitConstraints []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetPowerManagementMode holds details about calls to the DeviceGetPowerManagementMode method.\n\t\tDeviceGetPowerManagementMode []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetPowerMizerMode_v1 holds details about calls to the DeviceGetPowerMizerMode_v1 method.\n\t\tDeviceGetPowerMizerMode_v1 []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetPowerSource holds details about calls to the DeviceGetPowerSource method.\n\t\tDeviceGetPowerSource []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetPowerState holds details about calls to the DeviceGetPowerState method.\n\t\tDeviceGetPowerState []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetPowerUsage holds details about calls to the DeviceGetPowerUsage method.\n\t\tDeviceGetPowerUsage []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetProcessUtilization holds details about calls to the DeviceGetProcessUtilization method.\n\t\tDeviceGetProcessUtilization []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// V is the v argument value.\n\t\t\tV uint64\n\t\t}\n\t\t// DeviceGetProcessesUtilizationInfo holds details about calls to the DeviceGetProcessesUtilizationInfo method.\n\t\tDeviceGetProcessesUtilizationInfo []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetRemappedRows holds details about calls to the DeviceGetRemappedRows method.\n\t\tDeviceGetRemappedRows []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetRepairStatus holds details about calls to the DeviceGetRepairStatus method.\n\t\tDeviceGetRepairStatus []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetRetiredPages holds details about calls to the DeviceGetRetiredPages method.\n\t\tDeviceGetRetiredPages []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// PageRetirementCause is the pageRetirementCause argument value.\n\t\t\tPageRetirementCause nvml.PageRetirementCause\n\t\t}\n\t\t// DeviceGetRetiredPagesPendingStatus holds details about calls to the DeviceGetRetiredPagesPendingStatus method.\n\t\tDeviceGetRetiredPagesPendingStatus []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetRetiredPages_v2 holds details about calls to the DeviceGetRetiredPages_v2 method.\n\t\tDeviceGetRetiredPages_v2 []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// PageRetirementCause is the pageRetirementCause argument value.\n\t\t\tPageRetirementCause nvml.PageRetirementCause\n\t\t}\n\t\t// DeviceGetRowRemapperHistogram holds details about calls to the DeviceGetRowRemapperHistogram method.\n\t\tDeviceGetRowRemapperHistogram []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetRunningProcessDetailList holds details about calls to the DeviceGetRunningProcessDetailList method.\n\t\tDeviceGetRunningProcessDetailList []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetSamples holds details about calls to the DeviceGetSamples method.\n\t\tDeviceGetSamples []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// SamplingType is the samplingType argument value.\n\t\t\tSamplingType nvml.SamplingType\n\t\t\t// V is the v argument value.\n\t\t\tV uint64\n\t\t}\n\t\t// DeviceGetSerial holds details about calls to the DeviceGetSerial method.\n\t\tDeviceGetSerial []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetSramEccErrorStatus holds details about calls to the DeviceGetSramEccErrorStatus method.\n\t\tDeviceGetSramEccErrorStatus []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetSramUniqueUncorrectedEccErrorCounts holds details about calls to the DeviceGetSramUniqueUncorrectedEccErrorCounts method.\n\t\tDeviceGetSramUniqueUncorrectedEccErrorCounts []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// EccSramUniqueUncorrectedErrorCounts is the eccSramUniqueUncorrectedErrorCounts argument value.\n\t\t\tEccSramUniqueUncorrectedErrorCounts *nvml.EccSramUniqueUncorrectedErrorCounts\n\t\t}\n\t\t// DeviceGetSupportedClocksEventReasons holds details about calls to the DeviceGetSupportedClocksEventReasons method.\n\t\tDeviceGetSupportedClocksEventReasons []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetSupportedClocksThrottleReasons holds details about calls to the DeviceGetSupportedClocksThrottleReasons method.\n\t\tDeviceGetSupportedClocksThrottleReasons []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetSupportedEventTypes holds details about calls to the DeviceGetSupportedEventTypes method.\n\t\tDeviceGetSupportedEventTypes []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetSupportedGraphicsClocks holds details about calls to the DeviceGetSupportedGraphicsClocks method.\n\t\tDeviceGetSupportedGraphicsClocks []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t}\n\t\t// DeviceGetSupportedMemoryClocks holds details about calls to the DeviceGetSupportedMemoryClocks method.\n\t\tDeviceGetSupportedMemoryClocks []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetSupportedPerformanceStates holds details about calls to the DeviceGetSupportedPerformanceStates method.\n\t\tDeviceGetSupportedPerformanceStates []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetSupportedVgpus holds details about calls to the DeviceGetSupportedVgpus method.\n\t\tDeviceGetSupportedVgpus []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetTargetFanSpeed holds details about calls to the DeviceGetTargetFanSpeed method.\n\t\tDeviceGetTargetFanSpeed []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t}\n\t\t// DeviceGetTemperature holds details about calls to the DeviceGetTemperature method.\n\t\tDeviceGetTemperature []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// TemperatureSensors is the temperatureSensors argument value.\n\t\t\tTemperatureSensors nvml.TemperatureSensors\n\t\t}\n\t\t// DeviceGetTemperatureThreshold holds details about calls to the DeviceGetTemperatureThreshold method.\n\t\tDeviceGetTemperatureThreshold []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// TemperatureThresholds is the temperatureThresholds argument value.\n\t\t\tTemperatureThresholds nvml.TemperatureThresholds\n\t\t}\n\t\t// DeviceGetTemperatureV holds details about calls to the DeviceGetTemperatureV method.\n\t\tDeviceGetTemperatureV []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetThermalSettings holds details about calls to the DeviceGetThermalSettings method.\n\t\tDeviceGetThermalSettings []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// V is the v argument value.\n\t\t\tV uint32\n\t\t}\n\t\t// DeviceGetTopologyCommonAncestor holds details about calls to the DeviceGetTopologyCommonAncestor method.\n\t\tDeviceGetTopologyCommonAncestor []struct {\n\t\t\t// Device1 is the device1 argument value.\n\t\t\tDevice1 nvml.Device\n\t\t\t// Device2 is the device2 argument value.\n\t\t\tDevice2 nvml.Device\n\t\t}\n\t\t// DeviceGetTopologyNearestGpus holds details about calls to the DeviceGetTopologyNearestGpus method.\n\t\tDeviceGetTopologyNearestGpus []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// GpuTopologyLevel is the gpuTopologyLevel argument value.\n\t\t\tGpuTopologyLevel nvml.GpuTopologyLevel\n\t\t}\n\t\t// DeviceGetTotalEccErrors holds details about calls to the DeviceGetTotalEccErrors method.\n\t\tDeviceGetTotalEccErrors []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// MemoryErrorType is the memoryErrorType argument value.\n\t\t\tMemoryErrorType nvml.MemoryErrorType\n\t\t\t// EccCounterType is the eccCounterType argument value.\n\t\t\tEccCounterType nvml.EccCounterType\n\t\t}\n\t\t// DeviceGetTotalEnergyConsumption holds details about calls to the DeviceGetTotalEnergyConsumption method.\n\t\tDeviceGetTotalEnergyConsumption []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetUUID holds details about calls to the DeviceGetUUID method.\n\t\tDeviceGetUUID []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetUtilizationRates holds details about calls to the DeviceGetUtilizationRates method.\n\t\tDeviceGetUtilizationRates []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetVbiosVersion holds details about calls to the DeviceGetVbiosVersion method.\n\t\tDeviceGetVbiosVersion []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetVgpuCapabilities holds details about calls to the DeviceGetVgpuCapabilities method.\n\t\tDeviceGetVgpuCapabilities []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// DeviceVgpuCapability is the deviceVgpuCapability argument value.\n\t\t\tDeviceVgpuCapability nvml.DeviceVgpuCapability\n\t\t}\n\t\t// DeviceGetVgpuHeterogeneousMode holds details about calls to the DeviceGetVgpuHeterogeneousMode method.\n\t\tDeviceGetVgpuHeterogeneousMode []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetVgpuInstancesUtilizationInfo holds details about calls to the DeviceGetVgpuInstancesUtilizationInfo method.\n\t\tDeviceGetVgpuInstancesUtilizationInfo []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetVgpuMetadata holds details about calls to the DeviceGetVgpuMetadata method.\n\t\tDeviceGetVgpuMetadata []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetVgpuProcessUtilization holds details about calls to the DeviceGetVgpuProcessUtilization method.\n\t\tDeviceGetVgpuProcessUtilization []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// V is the v argument value.\n\t\t\tV uint64\n\t\t}\n\t\t// DeviceGetVgpuProcessesUtilizationInfo holds details about calls to the DeviceGetVgpuProcessesUtilizationInfo method.\n\t\tDeviceGetVgpuProcessesUtilizationInfo []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetVgpuSchedulerCapabilities holds details about calls to the DeviceGetVgpuSchedulerCapabilities method.\n\t\tDeviceGetVgpuSchedulerCapabilities []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetVgpuSchedulerLog holds details about calls to the DeviceGetVgpuSchedulerLog method.\n\t\tDeviceGetVgpuSchedulerLog []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetVgpuSchedulerState holds details about calls to the DeviceGetVgpuSchedulerState method.\n\t\tDeviceGetVgpuSchedulerState []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceGetVgpuTypeCreatablePlacements holds details about calls to the DeviceGetVgpuTypeCreatablePlacements method.\n\t\tDeviceGetVgpuTypeCreatablePlacements []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// VgpuTypeId is the vgpuTypeId argument value.\n\t\t\tVgpuTypeId nvml.VgpuTypeId\n\t\t}\n\t\t// DeviceGetVgpuTypeSupportedPlacements holds details about calls to the DeviceGetVgpuTypeSupportedPlacements method.\n\t\tDeviceGetVgpuTypeSupportedPlacements []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// VgpuTypeId is the vgpuTypeId argument value.\n\t\t\tVgpuTypeId nvml.VgpuTypeId\n\t\t}\n\t\t// DeviceGetVgpuUtilization holds details about calls to the DeviceGetVgpuUtilization method.\n\t\tDeviceGetVgpuUtilization []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// V is the v argument value.\n\t\t\tV uint64\n\t\t}\n\t\t// DeviceGetViolationStatus holds details about calls to the DeviceGetViolationStatus method.\n\t\tDeviceGetViolationStatus []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// PerfPolicyType is the perfPolicyType argument value.\n\t\t\tPerfPolicyType nvml.PerfPolicyType\n\t\t}\n\t\t// DeviceGetVirtualizationMode holds details about calls to the DeviceGetVirtualizationMode method.\n\t\tDeviceGetVirtualizationMode []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceIsMigDeviceHandle holds details about calls to the DeviceIsMigDeviceHandle method.\n\t\tDeviceIsMigDeviceHandle []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceModifyDrainState holds details about calls to the DeviceModifyDrainState method.\n\t\tDeviceModifyDrainState []struct {\n\t\t\t// PciInfo is the pciInfo argument value.\n\t\t\tPciInfo *nvml.PciInfo\n\t\t\t// EnableState is the enableState argument value.\n\t\t\tEnableState nvml.EnableState\n\t\t}\n\t\t// DeviceOnSameBoard holds details about calls to the DeviceOnSameBoard method.\n\t\tDeviceOnSameBoard []struct {\n\t\t\t// Device1 is the device1 argument value.\n\t\t\tDevice1 nvml.Device\n\t\t\t// Device2 is the device2 argument value.\n\t\t\tDevice2 nvml.Device\n\t\t}\n\t\t// DevicePowerSmoothingActivatePresetProfile holds details about calls to the DevicePowerSmoothingActivatePresetProfile method.\n\t\tDevicePowerSmoothingActivatePresetProfile []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// PowerSmoothingProfile is the powerSmoothingProfile argument value.\n\t\t\tPowerSmoothingProfile *nvml.PowerSmoothingProfile\n\t\t}\n\t\t// DevicePowerSmoothingSetState holds details about calls to the DevicePowerSmoothingSetState method.\n\t\tDevicePowerSmoothingSetState []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// PowerSmoothingState is the powerSmoothingState argument value.\n\t\t\tPowerSmoothingState *nvml.PowerSmoothingState\n\t\t}\n\t\t// DevicePowerSmoothingUpdatePresetProfileParam holds details about calls to the DevicePowerSmoothingUpdatePresetProfileParam method.\n\t\tDevicePowerSmoothingUpdatePresetProfileParam []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// PowerSmoothingProfile is the powerSmoothingProfile argument value.\n\t\t\tPowerSmoothingProfile *nvml.PowerSmoothingProfile\n\t\t}\n\t\t// DeviceQueryDrainState holds details about calls to the DeviceQueryDrainState method.\n\t\tDeviceQueryDrainState []struct {\n\t\t\t// PciInfo is the pciInfo argument value.\n\t\t\tPciInfo *nvml.PciInfo\n\t\t}\n\t\t// DeviceReadWritePRM_v1 holds details about calls to the DeviceReadWritePRM_v1 method.\n\t\tDeviceReadWritePRM_v1 []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// PRMTLV_v1 is the pRMTLV_v1 argument value.\n\t\t\tPRMTLV_v1 *nvml.PRMTLV_v1\n\t\t}\n\t\t// DeviceRegisterEvents holds details about calls to the DeviceRegisterEvents method.\n\t\tDeviceRegisterEvents []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// V is the v argument value.\n\t\t\tV uint64\n\t\t\t// EventSet is the eventSet argument value.\n\t\t\tEventSet nvml.EventSet\n\t\t}\n\t\t// DeviceRemoveGpu holds details about calls to the DeviceRemoveGpu method.\n\t\tDeviceRemoveGpu []struct {\n\t\t\t// PciInfo is the pciInfo argument value.\n\t\t\tPciInfo *nvml.PciInfo\n\t\t}\n\t\t// DeviceRemoveGpu_v2 holds details about calls to the DeviceRemoveGpu_v2 method.\n\t\tDeviceRemoveGpu_v2 []struct {\n\t\t\t// PciInfo is the pciInfo argument value.\n\t\t\tPciInfo *nvml.PciInfo\n\t\t\t// DetachGpuState is the detachGpuState argument value.\n\t\t\tDetachGpuState nvml.DetachGpuState\n\t\t\t// PcieLinkState is the pcieLinkState argument value.\n\t\t\tPcieLinkState nvml.PcieLinkState\n\t\t}\n\t\t// DeviceResetApplicationsClocks holds details about calls to the DeviceResetApplicationsClocks method.\n\t\tDeviceResetApplicationsClocks []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceResetGpuLockedClocks holds details about calls to the DeviceResetGpuLockedClocks method.\n\t\tDeviceResetGpuLockedClocks []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceResetMemoryLockedClocks holds details about calls to the DeviceResetMemoryLockedClocks method.\n\t\tDeviceResetMemoryLockedClocks []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceResetNvLinkErrorCounters holds details about calls to the DeviceResetNvLinkErrorCounters method.\n\t\tDeviceResetNvLinkErrorCounters []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t}\n\t\t// DeviceResetNvLinkUtilizationCounter holds details about calls to the DeviceResetNvLinkUtilizationCounter method.\n\t\tDeviceResetNvLinkUtilizationCounter []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// N1 is the n1 argument value.\n\t\t\tN1 int\n\t\t\t// N2 is the n2 argument value.\n\t\t\tN2 int\n\t\t}\n\t\t// DeviceSetAPIRestriction holds details about calls to the DeviceSetAPIRestriction method.\n\t\tDeviceSetAPIRestriction []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// RestrictedAPI is the restrictedAPI argument value.\n\t\t\tRestrictedAPI nvml.RestrictedAPI\n\t\t\t// EnableState is the enableState argument value.\n\t\t\tEnableState nvml.EnableState\n\t\t}\n\t\t// DeviceSetAccountingMode holds details about calls to the DeviceSetAccountingMode method.\n\t\tDeviceSetAccountingMode []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// EnableState is the enableState argument value.\n\t\t\tEnableState nvml.EnableState\n\t\t}\n\t\t// DeviceSetApplicationsClocks holds details about calls to the DeviceSetApplicationsClocks method.\n\t\tDeviceSetApplicationsClocks []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// V1 is the v1 argument value.\n\t\t\tV1 uint32\n\t\t\t// V2 is the v2 argument value.\n\t\t\tV2 uint32\n\t\t}\n\t\t// DeviceSetAutoBoostedClocksEnabled holds details about calls to the DeviceSetAutoBoostedClocksEnabled method.\n\t\tDeviceSetAutoBoostedClocksEnabled []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// EnableState is the enableState argument value.\n\t\t\tEnableState nvml.EnableState\n\t\t}\n\t\t// DeviceSetClockOffsets holds details about calls to the DeviceSetClockOffsets method.\n\t\tDeviceSetClockOffsets []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// ClockOffset is the clockOffset argument value.\n\t\t\tClockOffset nvml.ClockOffset\n\t\t}\n\t\t// DeviceSetComputeMode holds details about calls to the DeviceSetComputeMode method.\n\t\tDeviceSetComputeMode []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// ComputeMode is the computeMode argument value.\n\t\t\tComputeMode nvml.ComputeMode\n\t\t}\n\t\t// DeviceSetConfComputeUnprotectedMemSize holds details about calls to the DeviceSetConfComputeUnprotectedMemSize method.\n\t\tDeviceSetConfComputeUnprotectedMemSize []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// V is the v argument value.\n\t\t\tV uint64\n\t\t}\n\t\t// DeviceSetCpuAffinity holds details about calls to the DeviceSetCpuAffinity method.\n\t\tDeviceSetCpuAffinity []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceSetDefaultAutoBoostedClocksEnabled holds details about calls to the DeviceSetDefaultAutoBoostedClocksEnabled method.\n\t\tDeviceSetDefaultAutoBoostedClocksEnabled []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// EnableState is the enableState argument value.\n\t\t\tEnableState nvml.EnableState\n\t\t\t// V is the v argument value.\n\t\t\tV uint32\n\t\t}\n\t\t// DeviceSetDefaultFanSpeed_v2 holds details about calls to the DeviceSetDefaultFanSpeed_v2 method.\n\t\tDeviceSetDefaultFanSpeed_v2 []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t}\n\t\t// DeviceSetDramEncryptionMode holds details about calls to the DeviceSetDramEncryptionMode method.\n\t\tDeviceSetDramEncryptionMode []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// DramEncryptionInfo is the dramEncryptionInfo argument value.\n\t\t\tDramEncryptionInfo *nvml.DramEncryptionInfo\n\t\t}\n\t\t// DeviceSetDriverModel holds details about calls to the DeviceSetDriverModel method.\n\t\tDeviceSetDriverModel []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// DriverModel is the driverModel argument value.\n\t\t\tDriverModel nvml.DriverModel\n\t\t\t// V is the v argument value.\n\t\t\tV uint32\n\t\t}\n\t\t// DeviceSetEccMode holds details about calls to the DeviceSetEccMode method.\n\t\tDeviceSetEccMode []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// EnableState is the enableState argument value.\n\t\t\tEnableState nvml.EnableState\n\t\t}\n\t\t// DeviceSetFanControlPolicy holds details about calls to the DeviceSetFanControlPolicy method.\n\t\tDeviceSetFanControlPolicy []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t\t// FanControlPolicy is the fanControlPolicy argument value.\n\t\t\tFanControlPolicy nvml.FanControlPolicy\n\t\t}\n\t\t// DeviceSetFanSpeed_v2 holds details about calls to the DeviceSetFanSpeed_v2 method.\n\t\tDeviceSetFanSpeed_v2 []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// N1 is the n1 argument value.\n\t\t\tN1 int\n\t\t\t// N2 is the n2 argument value.\n\t\t\tN2 int\n\t\t}\n\t\t// DeviceSetGpcClkVfOffset holds details about calls to the DeviceSetGpcClkVfOffset method.\n\t\tDeviceSetGpcClkVfOffset []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t}\n\t\t// DeviceSetGpuLockedClocks holds details about calls to the DeviceSetGpuLockedClocks method.\n\t\tDeviceSetGpuLockedClocks []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// V1 is the v1 argument value.\n\t\t\tV1 uint32\n\t\t\t// V2 is the v2 argument value.\n\t\t\tV2 uint32\n\t\t}\n\t\t// DeviceSetGpuOperationMode holds details about calls to the DeviceSetGpuOperationMode method.\n\t\tDeviceSetGpuOperationMode []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// GpuOperationMode is the gpuOperationMode argument value.\n\t\t\tGpuOperationMode nvml.GpuOperationMode\n\t\t}\n\t\t// DeviceSetMemClkVfOffset holds details about calls to the DeviceSetMemClkVfOffset method.\n\t\tDeviceSetMemClkVfOffset []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t}\n\t\t// DeviceSetMemoryLockedClocks holds details about calls to the DeviceSetMemoryLockedClocks method.\n\t\tDeviceSetMemoryLockedClocks []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// V1 is the v1 argument value.\n\t\t\tV1 uint32\n\t\t\t// V2 is the v2 argument value.\n\t\t\tV2 uint32\n\t\t}\n\t\t// DeviceSetMigMode holds details about calls to the DeviceSetMigMode method.\n\t\tDeviceSetMigMode []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t}\n\t\t// DeviceSetNvLinkDeviceLowPowerThreshold holds details about calls to the DeviceSetNvLinkDeviceLowPowerThreshold method.\n\t\tDeviceSetNvLinkDeviceLowPowerThreshold []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// NvLinkPowerThres is the nvLinkPowerThres argument value.\n\t\t\tNvLinkPowerThres *nvml.NvLinkPowerThres\n\t\t}\n\t\t// DeviceSetNvLinkUtilizationControl holds details about calls to the DeviceSetNvLinkUtilizationControl method.\n\t\tDeviceSetNvLinkUtilizationControl []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// N1 is the n1 argument value.\n\t\t\tN1 int\n\t\t\t// N2 is the n2 argument value.\n\t\t\tN2 int\n\t\t\t// NvLinkUtilizationControl is the nvLinkUtilizationControl argument value.\n\t\t\tNvLinkUtilizationControl *nvml.NvLinkUtilizationControl\n\t\t\t// B is the b argument value.\n\t\t\tB bool\n\t\t}\n\t\t// DeviceSetNvlinkBwMode holds details about calls to the DeviceSetNvlinkBwMode method.\n\t\tDeviceSetNvlinkBwMode []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// NvlinkSetBwMode is the nvlinkSetBwMode argument value.\n\t\t\tNvlinkSetBwMode *nvml.NvlinkSetBwMode\n\t\t}\n\t\t// DeviceSetPersistenceMode holds details about calls to the DeviceSetPersistenceMode method.\n\t\tDeviceSetPersistenceMode []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// EnableState is the enableState argument value.\n\t\t\tEnableState nvml.EnableState\n\t\t}\n\t\t// DeviceSetPowerManagementLimit holds details about calls to the DeviceSetPowerManagementLimit method.\n\t\tDeviceSetPowerManagementLimit []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// V is the v argument value.\n\t\t\tV uint32\n\t\t}\n\t\t// DeviceSetPowerManagementLimit_v2 holds details about calls to the DeviceSetPowerManagementLimit_v2 method.\n\t\tDeviceSetPowerManagementLimit_v2 []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// PowerValue_v2 is the powerValue_v2 argument value.\n\t\t\tPowerValue_v2 *nvml.PowerValue_v2\n\t\t}\n\t\t// DeviceSetTemperatureThreshold holds details about calls to the DeviceSetTemperatureThreshold method.\n\t\tDeviceSetTemperatureThreshold []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// TemperatureThresholds is the temperatureThresholds argument value.\n\t\t\tTemperatureThresholds nvml.TemperatureThresholds\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t}\n\t\t// DeviceSetVgpuCapabilities holds details about calls to the DeviceSetVgpuCapabilities method.\n\t\tDeviceSetVgpuCapabilities []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// DeviceVgpuCapability is the deviceVgpuCapability argument value.\n\t\t\tDeviceVgpuCapability nvml.DeviceVgpuCapability\n\t\t\t// EnableState is the enableState argument value.\n\t\t\tEnableState nvml.EnableState\n\t\t}\n\t\t// DeviceSetVgpuHeterogeneousMode holds details about calls to the DeviceSetVgpuHeterogeneousMode method.\n\t\tDeviceSetVgpuHeterogeneousMode []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// VgpuHeterogeneousMode is the vgpuHeterogeneousMode argument value.\n\t\t\tVgpuHeterogeneousMode nvml.VgpuHeterogeneousMode\n\t\t}\n\t\t// DeviceSetVgpuSchedulerState holds details about calls to the DeviceSetVgpuSchedulerState method.\n\t\tDeviceSetVgpuSchedulerState []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// VgpuSchedulerSetState is the vgpuSchedulerSetState argument value.\n\t\t\tVgpuSchedulerSetState *nvml.VgpuSchedulerSetState\n\t\t}\n\t\t// DeviceSetVirtualizationMode holds details about calls to the DeviceSetVirtualizationMode method.\n\t\tDeviceSetVirtualizationMode []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// GpuVirtualizationMode is the gpuVirtualizationMode argument value.\n\t\t\tGpuVirtualizationMode nvml.GpuVirtualizationMode\n\t\t}\n\t\t// DeviceValidateInforom holds details about calls to the DeviceValidateInforom method.\n\t\tDeviceValidateInforom []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceWorkloadPowerProfileClearRequestedProfiles holds details about calls to the DeviceWorkloadPowerProfileClearRequestedProfiles method.\n\t\tDeviceWorkloadPowerProfileClearRequestedProfiles []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// WorkloadPowerProfileRequestedProfiles is the workloadPowerProfileRequestedProfiles argument value.\n\t\t\tWorkloadPowerProfileRequestedProfiles *nvml.WorkloadPowerProfileRequestedProfiles\n\t\t}\n\t\t// DeviceWorkloadPowerProfileGetCurrentProfiles holds details about calls to the DeviceWorkloadPowerProfileGetCurrentProfiles method.\n\t\tDeviceWorkloadPowerProfileGetCurrentProfiles []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceWorkloadPowerProfileGetProfilesInfo holds details about calls to the DeviceWorkloadPowerProfileGetProfilesInfo method.\n\t\tDeviceWorkloadPowerProfileGetProfilesInfo []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// DeviceWorkloadPowerProfileSetRequestedProfiles holds details about calls to the DeviceWorkloadPowerProfileSetRequestedProfiles method.\n\t\tDeviceWorkloadPowerProfileSetRequestedProfiles []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// WorkloadPowerProfileRequestedProfiles is the workloadPowerProfileRequestedProfiles argument value.\n\t\t\tWorkloadPowerProfileRequestedProfiles *nvml.WorkloadPowerProfileRequestedProfiles\n\t\t}\n\t\t// ErrorString holds details about calls to the ErrorString method.\n\t\tErrorString []struct {\n\t\t\t// ReturnMoqParam is the returnMoqParam argument value.\n\t\t\tReturnMoqParam nvml.Return\n\t\t}\n\t\t// EventSetCreate holds details about calls to the EventSetCreate method.\n\t\tEventSetCreate []struct {\n\t\t}\n\t\t// EventSetFree holds details about calls to the EventSetFree method.\n\t\tEventSetFree []struct {\n\t\t\t// EventSet is the eventSet argument value.\n\t\t\tEventSet nvml.EventSet\n\t\t}\n\t\t// EventSetWait holds details about calls to the EventSetWait method.\n\t\tEventSetWait []struct {\n\t\t\t// EventSet is the eventSet argument value.\n\t\t\tEventSet nvml.EventSet\n\t\t\t// V is the v argument value.\n\t\t\tV uint32\n\t\t}\n\t\t// Extensions holds details about calls to the Extensions method.\n\t\tExtensions []struct {\n\t\t}\n\t\t// GetExcludedDeviceCount holds details about calls to the GetExcludedDeviceCount method.\n\t\tGetExcludedDeviceCount []struct {\n\t\t}\n\t\t// GetExcludedDeviceInfoByIndex holds details about calls to the GetExcludedDeviceInfoByIndex method.\n\t\tGetExcludedDeviceInfoByIndex []struct {\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t}\n\t\t// GetVgpuCompatibility holds details about calls to the GetVgpuCompatibility method.\n\t\tGetVgpuCompatibility []struct {\n\t\t\t// VgpuMetadata is the vgpuMetadata argument value.\n\t\t\tVgpuMetadata *nvml.VgpuMetadata\n\t\t\t// VgpuPgpuMetadata is the vgpuPgpuMetadata argument value.\n\t\t\tVgpuPgpuMetadata *nvml.VgpuPgpuMetadata\n\t\t}\n\t\t// GetVgpuDriverCapabilities holds details about calls to the GetVgpuDriverCapabilities method.\n\t\tGetVgpuDriverCapabilities []struct {\n\t\t\t// VgpuDriverCapability is the vgpuDriverCapability argument value.\n\t\t\tVgpuDriverCapability nvml.VgpuDriverCapability\n\t\t}\n\t\t// GetVgpuVersion holds details about calls to the GetVgpuVersion method.\n\t\tGetVgpuVersion []struct {\n\t\t}\n\t\t// GpmMetricsGet holds details about calls to the GpmMetricsGet method.\n\t\tGpmMetricsGet []struct {\n\t\t\t// GpmMetricsGetType is the gpmMetricsGetType argument value.\n\t\t\tGpmMetricsGetType *nvml.GpmMetricsGetType\n\t\t}\n\t\t// GpmMetricsGetV holds details about calls to the GpmMetricsGetV method.\n\t\tGpmMetricsGetV []struct {\n\t\t\t// GpmMetricsGetType is the gpmMetricsGetType argument value.\n\t\t\tGpmMetricsGetType *nvml.GpmMetricsGetType\n\t\t}\n\t\t// GpmMigSampleGet holds details about calls to the GpmMigSampleGet method.\n\t\tGpmMigSampleGet []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t\t// GpmSample is the gpmSample argument value.\n\t\t\tGpmSample nvml.GpmSample\n\t\t}\n\t\t// GpmQueryDeviceSupport holds details about calls to the GpmQueryDeviceSupport method.\n\t\tGpmQueryDeviceSupport []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// GpmQueryDeviceSupportV holds details about calls to the GpmQueryDeviceSupportV method.\n\t\tGpmQueryDeviceSupportV []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// GpmQueryIfStreamingEnabled holds details about calls to the GpmQueryIfStreamingEnabled method.\n\t\tGpmQueryIfStreamingEnabled []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// GpmSampleAlloc holds details about calls to the GpmSampleAlloc method.\n\t\tGpmSampleAlloc []struct {\n\t\t}\n\t\t// GpmSampleFree holds details about calls to the GpmSampleFree method.\n\t\tGpmSampleFree []struct {\n\t\t\t// GpmSample is the gpmSample argument value.\n\t\t\tGpmSample nvml.GpmSample\n\t\t}\n\t\t// GpmSampleGet holds details about calls to the GpmSampleGet method.\n\t\tGpmSampleGet []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// GpmSample is the gpmSample argument value.\n\t\t\tGpmSample nvml.GpmSample\n\t\t}\n\t\t// GpmSetStreamingEnabled holds details about calls to the GpmSetStreamingEnabled method.\n\t\tGpmSetStreamingEnabled []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// V is the v argument value.\n\t\t\tV uint32\n\t\t}\n\t\t// GpuInstanceCreateComputeInstance holds details about calls to the GpuInstanceCreateComputeInstance method.\n\t\tGpuInstanceCreateComputeInstance []struct {\n\t\t\t// GpuInstance is the gpuInstance argument value.\n\t\t\tGpuInstance nvml.GpuInstance\n\t\t\t// ComputeInstanceProfileInfo is the computeInstanceProfileInfo argument value.\n\t\t\tComputeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo\n\t\t}\n\t\t// GpuInstanceCreateComputeInstanceWithPlacement holds details about calls to the GpuInstanceCreateComputeInstanceWithPlacement method.\n\t\tGpuInstanceCreateComputeInstanceWithPlacement []struct {\n\t\t\t// GpuInstance is the gpuInstance argument value.\n\t\t\tGpuInstance nvml.GpuInstance\n\t\t\t// ComputeInstanceProfileInfo is the computeInstanceProfileInfo argument value.\n\t\t\tComputeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo\n\t\t\t// ComputeInstancePlacement is the computeInstancePlacement argument value.\n\t\t\tComputeInstancePlacement *nvml.ComputeInstancePlacement\n\t\t}\n\t\t// GpuInstanceDestroy holds details about calls to the GpuInstanceDestroy method.\n\t\tGpuInstanceDestroy []struct {\n\t\t\t// GpuInstance is the gpuInstance argument value.\n\t\t\tGpuInstance nvml.GpuInstance\n\t\t}\n\t\t// GpuInstanceGetActiveVgpus holds details about calls to the GpuInstanceGetActiveVgpus method.\n\t\tGpuInstanceGetActiveVgpus []struct {\n\t\t\t// GpuInstance is the gpuInstance argument value.\n\t\t\tGpuInstance nvml.GpuInstance\n\t\t}\n\t\t// GpuInstanceGetComputeInstanceById holds details about calls to the GpuInstanceGetComputeInstanceById method.\n\t\tGpuInstanceGetComputeInstanceById []struct {\n\t\t\t// GpuInstance is the gpuInstance argument value.\n\t\t\tGpuInstance nvml.GpuInstance\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t}\n\t\t// GpuInstanceGetComputeInstancePossiblePlacements holds details about calls to the GpuInstanceGetComputeInstancePossiblePlacements method.\n\t\tGpuInstanceGetComputeInstancePossiblePlacements []struct {\n\t\t\t// GpuInstance is the gpuInstance argument value.\n\t\t\tGpuInstance nvml.GpuInstance\n\t\t\t// ComputeInstanceProfileInfo is the computeInstanceProfileInfo argument value.\n\t\t\tComputeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo\n\t\t}\n\t\t// GpuInstanceGetComputeInstanceProfileInfo holds details about calls to the GpuInstanceGetComputeInstanceProfileInfo method.\n\t\tGpuInstanceGetComputeInstanceProfileInfo []struct {\n\t\t\t// GpuInstance is the gpuInstance argument value.\n\t\t\tGpuInstance nvml.GpuInstance\n\t\t\t// N1 is the n1 argument value.\n\t\t\tN1 int\n\t\t\t// N2 is the n2 argument value.\n\t\t\tN2 int\n\t\t}\n\t\t// GpuInstanceGetComputeInstanceProfileInfoV holds details about calls to the GpuInstanceGetComputeInstanceProfileInfoV method.\n\t\tGpuInstanceGetComputeInstanceProfileInfoV []struct {\n\t\t\t// GpuInstance is the gpuInstance argument value.\n\t\t\tGpuInstance nvml.GpuInstance\n\t\t\t// N1 is the n1 argument value.\n\t\t\tN1 int\n\t\t\t// N2 is the n2 argument value.\n\t\t\tN2 int\n\t\t}\n\t\t// GpuInstanceGetComputeInstanceRemainingCapacity holds details about calls to the GpuInstanceGetComputeInstanceRemainingCapacity method.\n\t\tGpuInstanceGetComputeInstanceRemainingCapacity []struct {\n\t\t\t// GpuInstance is the gpuInstance argument value.\n\t\t\tGpuInstance nvml.GpuInstance\n\t\t\t// ComputeInstanceProfileInfo is the computeInstanceProfileInfo argument value.\n\t\t\tComputeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo\n\t\t}\n\t\t// GpuInstanceGetComputeInstances holds details about calls to the GpuInstanceGetComputeInstances method.\n\t\tGpuInstanceGetComputeInstances []struct {\n\t\t\t// GpuInstance is the gpuInstance argument value.\n\t\t\tGpuInstance nvml.GpuInstance\n\t\t\t// ComputeInstanceProfileInfo is the computeInstanceProfileInfo argument value.\n\t\t\tComputeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo\n\t\t}\n\t\t// GpuInstanceGetCreatableVgpus holds details about calls to the GpuInstanceGetCreatableVgpus method.\n\t\tGpuInstanceGetCreatableVgpus []struct {\n\t\t\t// GpuInstance is the gpuInstance argument value.\n\t\t\tGpuInstance nvml.GpuInstance\n\t\t}\n\t\t// GpuInstanceGetInfo holds details about calls to the GpuInstanceGetInfo method.\n\t\tGpuInstanceGetInfo []struct {\n\t\t\t// GpuInstance is the gpuInstance argument value.\n\t\t\tGpuInstance nvml.GpuInstance\n\t\t}\n\t\t// GpuInstanceGetVgpuHeterogeneousMode holds details about calls to the GpuInstanceGetVgpuHeterogeneousMode method.\n\t\tGpuInstanceGetVgpuHeterogeneousMode []struct {\n\t\t\t// GpuInstance is the gpuInstance argument value.\n\t\t\tGpuInstance nvml.GpuInstance\n\t\t}\n\t\t// GpuInstanceGetVgpuSchedulerLog holds details about calls to the GpuInstanceGetVgpuSchedulerLog method.\n\t\tGpuInstanceGetVgpuSchedulerLog []struct {\n\t\t\t// GpuInstance is the gpuInstance argument value.\n\t\t\tGpuInstance nvml.GpuInstance\n\t\t}\n\t\t// GpuInstanceGetVgpuSchedulerState holds details about calls to the GpuInstanceGetVgpuSchedulerState method.\n\t\tGpuInstanceGetVgpuSchedulerState []struct {\n\t\t\t// GpuInstance is the gpuInstance argument value.\n\t\t\tGpuInstance nvml.GpuInstance\n\t\t}\n\t\t// GpuInstanceGetVgpuTypeCreatablePlacements holds details about calls to the GpuInstanceGetVgpuTypeCreatablePlacements method.\n\t\tGpuInstanceGetVgpuTypeCreatablePlacements []struct {\n\t\t\t// GpuInstance is the gpuInstance argument value.\n\t\t\tGpuInstance nvml.GpuInstance\n\t\t}\n\t\t// GpuInstanceSetVgpuHeterogeneousMode holds details about calls to the GpuInstanceSetVgpuHeterogeneousMode method.\n\t\tGpuInstanceSetVgpuHeterogeneousMode []struct {\n\t\t\t// GpuInstance is the gpuInstance argument value.\n\t\t\tGpuInstance nvml.GpuInstance\n\t\t\t// VgpuHeterogeneousMode is the vgpuHeterogeneousMode argument value.\n\t\t\tVgpuHeterogeneousMode *nvml.VgpuHeterogeneousMode\n\t\t}\n\t\t// GpuInstanceSetVgpuSchedulerState holds details about calls to the GpuInstanceSetVgpuSchedulerState method.\n\t\tGpuInstanceSetVgpuSchedulerState []struct {\n\t\t\t// GpuInstance is the gpuInstance argument value.\n\t\t\tGpuInstance nvml.GpuInstance\n\t\t\t// VgpuSchedulerState is the vgpuSchedulerState argument value.\n\t\t\tVgpuSchedulerState *nvml.VgpuSchedulerState\n\t\t}\n\t\t// Init holds details about calls to the Init method.\n\t\tInit []struct {\n\t\t}\n\t\t// InitWithFlags holds details about calls to the InitWithFlags method.\n\t\tInitWithFlags []struct {\n\t\t\t// V is the v argument value.\n\t\t\tV uint32\n\t\t}\n\t\t// SetVgpuVersion holds details about calls to the SetVgpuVersion method.\n\t\tSetVgpuVersion []struct {\n\t\t\t// VgpuVersion is the vgpuVersion argument value.\n\t\t\tVgpuVersion *nvml.VgpuVersion\n\t\t}\n\t\t// Shutdown holds details about calls to the Shutdown method.\n\t\tShutdown []struct {\n\t\t}\n\t\t// SystemEventSetCreate holds details about calls to the SystemEventSetCreate method.\n\t\tSystemEventSetCreate []struct {\n\t\t\t// SystemEventSetCreateRequest is the systemEventSetCreateRequest argument value.\n\t\t\tSystemEventSetCreateRequest *nvml.SystemEventSetCreateRequest\n\t\t}\n\t\t// SystemEventSetFree holds details about calls to the SystemEventSetFree method.\n\t\tSystemEventSetFree []struct {\n\t\t\t// SystemEventSetFreeRequest is the systemEventSetFreeRequest argument value.\n\t\t\tSystemEventSetFreeRequest *nvml.SystemEventSetFreeRequest\n\t\t}\n\t\t// SystemEventSetWait holds details about calls to the SystemEventSetWait method.\n\t\tSystemEventSetWait []struct {\n\t\t\t// SystemEventSetWaitRequest is the systemEventSetWaitRequest argument value.\n\t\t\tSystemEventSetWaitRequest *nvml.SystemEventSetWaitRequest\n\t\t}\n\t\t// SystemGetConfComputeCapabilities holds details about calls to the SystemGetConfComputeCapabilities method.\n\t\tSystemGetConfComputeCapabilities []struct {\n\t\t}\n\t\t// SystemGetConfComputeGpusReadyState holds details about calls to the SystemGetConfComputeGpusReadyState method.\n\t\tSystemGetConfComputeGpusReadyState []struct {\n\t\t}\n\t\t// SystemGetConfComputeKeyRotationThresholdInfo holds details about calls to the SystemGetConfComputeKeyRotationThresholdInfo method.\n\t\tSystemGetConfComputeKeyRotationThresholdInfo []struct {\n\t\t}\n\t\t// SystemGetConfComputeSettings holds details about calls to the SystemGetConfComputeSettings method.\n\t\tSystemGetConfComputeSettings []struct {\n\t\t}\n\t\t// SystemGetConfComputeState holds details about calls to the SystemGetConfComputeState method.\n\t\tSystemGetConfComputeState []struct {\n\t\t}\n\t\t// SystemGetCudaDriverVersion holds details about calls to the SystemGetCudaDriverVersion method.\n\t\tSystemGetCudaDriverVersion []struct {\n\t\t}\n\t\t// SystemGetCudaDriverVersion_v2 holds details about calls to the SystemGetCudaDriverVersion_v2 method.\n\t\tSystemGetCudaDriverVersion_v2 []struct {\n\t\t}\n\t\t// SystemGetDriverBranch holds details about calls to the SystemGetDriverBranch method.\n\t\tSystemGetDriverBranch []struct {\n\t\t}\n\t\t// SystemGetDriverVersion holds details about calls to the SystemGetDriverVersion method.\n\t\tSystemGetDriverVersion []struct {\n\t\t}\n\t\t// SystemGetHicVersion holds details about calls to the SystemGetHicVersion method.\n\t\tSystemGetHicVersion []struct {\n\t\t}\n\t\t// SystemGetNVMLVersion holds details about calls to the SystemGetNVMLVersion method.\n\t\tSystemGetNVMLVersion []struct {\n\t\t}\n\t\t// SystemGetNvlinkBwMode holds details about calls to the SystemGetNvlinkBwMode method.\n\t\tSystemGetNvlinkBwMode []struct {\n\t\t}\n\t\t// SystemGetProcessName holds details about calls to the SystemGetProcessName method.\n\t\tSystemGetProcessName []struct {\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t}\n\t\t// SystemGetTopologyGpuSet holds details about calls to the SystemGetTopologyGpuSet method.\n\t\tSystemGetTopologyGpuSet []struct {\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t}\n\t\t// SystemRegisterEvents holds details about calls to the SystemRegisterEvents method.\n\t\tSystemRegisterEvents []struct {\n\t\t\t// SystemRegisterEventRequest is the systemRegisterEventRequest argument value.\n\t\t\tSystemRegisterEventRequest *nvml.SystemRegisterEventRequest\n\t\t}\n\t\t// SystemSetConfComputeGpusReadyState holds details about calls to the SystemSetConfComputeGpusReadyState method.\n\t\tSystemSetConfComputeGpusReadyState []struct {\n\t\t\t// V is the v argument value.\n\t\t\tV uint32\n\t\t}\n\t\t// SystemSetConfComputeKeyRotationThresholdInfo holds details about calls to the SystemSetConfComputeKeyRotationThresholdInfo method.\n\t\tSystemSetConfComputeKeyRotationThresholdInfo []struct {\n\t\t\t// ConfComputeSetKeyRotationThresholdInfo is the confComputeSetKeyRotationThresholdInfo argument value.\n\t\t\tConfComputeSetKeyRotationThresholdInfo nvml.ConfComputeSetKeyRotationThresholdInfo\n\t\t}\n\t\t// SystemSetNvlinkBwMode holds details about calls to the SystemSetNvlinkBwMode method.\n\t\tSystemSetNvlinkBwMode []struct {\n\t\t\t// V is the v argument value.\n\t\t\tV uint32\n\t\t}\n\t\t// UnitGetCount holds details about calls to the UnitGetCount method.\n\t\tUnitGetCount []struct {\n\t\t}\n\t\t// UnitGetDevices holds details about calls to the UnitGetDevices method.\n\t\tUnitGetDevices []struct {\n\t\t\t// Unit is the unit argument value.\n\t\t\tUnit nvml.Unit\n\t\t}\n\t\t// UnitGetFanSpeedInfo holds details about calls to the UnitGetFanSpeedInfo method.\n\t\tUnitGetFanSpeedInfo []struct {\n\t\t\t// Unit is the unit argument value.\n\t\t\tUnit nvml.Unit\n\t\t}\n\t\t// UnitGetHandleByIndex holds details about calls to the UnitGetHandleByIndex method.\n\t\tUnitGetHandleByIndex []struct {\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t}\n\t\t// UnitGetLedState holds details about calls to the UnitGetLedState method.\n\t\tUnitGetLedState []struct {\n\t\t\t// Unit is the unit argument value.\n\t\t\tUnit nvml.Unit\n\t\t}\n\t\t// UnitGetPsuInfo holds details about calls to the UnitGetPsuInfo method.\n\t\tUnitGetPsuInfo []struct {\n\t\t\t// Unit is the unit argument value.\n\t\t\tUnit nvml.Unit\n\t\t}\n\t\t// UnitGetTemperature holds details about calls to the UnitGetTemperature method.\n\t\tUnitGetTemperature []struct {\n\t\t\t// Unit is the unit argument value.\n\t\t\tUnit nvml.Unit\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t}\n\t\t// UnitGetUnitInfo holds details about calls to the UnitGetUnitInfo method.\n\t\tUnitGetUnitInfo []struct {\n\t\t\t// Unit is the unit argument value.\n\t\t\tUnit nvml.Unit\n\t\t}\n\t\t// UnitSetLedState holds details about calls to the UnitSetLedState method.\n\t\tUnitSetLedState []struct {\n\t\t\t// Unit is the unit argument value.\n\t\t\tUnit nvml.Unit\n\t\t\t// LedColor is the ledColor argument value.\n\t\t\tLedColor nvml.LedColor\n\t\t}\n\t\t// VgpuInstanceClearAccountingPids holds details about calls to the VgpuInstanceClearAccountingPids method.\n\t\tVgpuInstanceClearAccountingPids []struct {\n\t\t\t// VgpuInstance is the vgpuInstance argument value.\n\t\t\tVgpuInstance nvml.VgpuInstance\n\t\t}\n\t\t// VgpuInstanceGetAccountingMode holds details about calls to the VgpuInstanceGetAccountingMode method.\n\t\tVgpuInstanceGetAccountingMode []struct {\n\t\t\t// VgpuInstance is the vgpuInstance argument value.\n\t\t\tVgpuInstance nvml.VgpuInstance\n\t\t}\n\t\t// VgpuInstanceGetAccountingPids holds details about calls to the VgpuInstanceGetAccountingPids method.\n\t\tVgpuInstanceGetAccountingPids []struct {\n\t\t\t// VgpuInstance is the vgpuInstance argument value.\n\t\t\tVgpuInstance nvml.VgpuInstance\n\t\t}\n\t\t// VgpuInstanceGetAccountingStats holds details about calls to the VgpuInstanceGetAccountingStats method.\n\t\tVgpuInstanceGetAccountingStats []struct {\n\t\t\t// VgpuInstance is the vgpuInstance argument value.\n\t\t\tVgpuInstance nvml.VgpuInstance\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t}\n\t\t// VgpuInstanceGetEccMode holds details about calls to the VgpuInstanceGetEccMode method.\n\t\tVgpuInstanceGetEccMode []struct {\n\t\t\t// VgpuInstance is the vgpuInstance argument value.\n\t\t\tVgpuInstance nvml.VgpuInstance\n\t\t}\n\t\t// VgpuInstanceGetEncoderCapacity holds details about calls to the VgpuInstanceGetEncoderCapacity method.\n\t\tVgpuInstanceGetEncoderCapacity []struct {\n\t\t\t// VgpuInstance is the vgpuInstance argument value.\n\t\t\tVgpuInstance nvml.VgpuInstance\n\t\t}\n\t\t// VgpuInstanceGetEncoderSessions holds details about calls to the VgpuInstanceGetEncoderSessions method.\n\t\tVgpuInstanceGetEncoderSessions []struct {\n\t\t\t// VgpuInstance is the vgpuInstance argument value.\n\t\t\tVgpuInstance nvml.VgpuInstance\n\t\t}\n\t\t// VgpuInstanceGetEncoderStats holds details about calls to the VgpuInstanceGetEncoderStats method.\n\t\tVgpuInstanceGetEncoderStats []struct {\n\t\t\t// VgpuInstance is the vgpuInstance argument value.\n\t\t\tVgpuInstance nvml.VgpuInstance\n\t\t}\n\t\t// VgpuInstanceGetFBCSessions holds details about calls to the VgpuInstanceGetFBCSessions method.\n\t\tVgpuInstanceGetFBCSessions []struct {\n\t\t\t// VgpuInstance is the vgpuInstance argument value.\n\t\t\tVgpuInstance nvml.VgpuInstance\n\t\t}\n\t\t// VgpuInstanceGetFBCStats holds details about calls to the VgpuInstanceGetFBCStats method.\n\t\tVgpuInstanceGetFBCStats []struct {\n\t\t\t// VgpuInstance is the vgpuInstance argument value.\n\t\t\tVgpuInstance nvml.VgpuInstance\n\t\t}\n\t\t// VgpuInstanceGetFbUsage holds details about calls to the VgpuInstanceGetFbUsage method.\n\t\tVgpuInstanceGetFbUsage []struct {\n\t\t\t// VgpuInstance is the vgpuInstance argument value.\n\t\t\tVgpuInstance nvml.VgpuInstance\n\t\t}\n\t\t// VgpuInstanceGetFrameRateLimit holds details about calls to the VgpuInstanceGetFrameRateLimit method.\n\t\tVgpuInstanceGetFrameRateLimit []struct {\n\t\t\t// VgpuInstance is the vgpuInstance argument value.\n\t\t\tVgpuInstance nvml.VgpuInstance\n\t\t}\n\t\t// VgpuInstanceGetGpuInstanceId holds details about calls to the VgpuInstanceGetGpuInstanceId method.\n\t\tVgpuInstanceGetGpuInstanceId []struct {\n\t\t\t// VgpuInstance is the vgpuInstance argument value.\n\t\t\tVgpuInstance nvml.VgpuInstance\n\t\t}\n\t\t// VgpuInstanceGetGpuPciId holds details about calls to the VgpuInstanceGetGpuPciId method.\n\t\tVgpuInstanceGetGpuPciId []struct {\n\t\t\t// VgpuInstance is the vgpuInstance argument value.\n\t\t\tVgpuInstance nvml.VgpuInstance\n\t\t}\n\t\t// VgpuInstanceGetLicenseInfo holds details about calls to the VgpuInstanceGetLicenseInfo method.\n\t\tVgpuInstanceGetLicenseInfo []struct {\n\t\t\t// VgpuInstance is the vgpuInstance argument value.\n\t\t\tVgpuInstance nvml.VgpuInstance\n\t\t}\n\t\t// VgpuInstanceGetLicenseStatus holds details about calls to the VgpuInstanceGetLicenseStatus method.\n\t\tVgpuInstanceGetLicenseStatus []struct {\n\t\t\t// VgpuInstance is the vgpuInstance argument value.\n\t\t\tVgpuInstance nvml.VgpuInstance\n\t\t}\n\t\t// VgpuInstanceGetMdevUUID holds details about calls to the VgpuInstanceGetMdevUUID method.\n\t\tVgpuInstanceGetMdevUUID []struct {\n\t\t\t// VgpuInstance is the vgpuInstance argument value.\n\t\t\tVgpuInstance nvml.VgpuInstance\n\t\t}\n\t\t// VgpuInstanceGetMetadata holds details about calls to the VgpuInstanceGetMetadata method.\n\t\tVgpuInstanceGetMetadata []struct {\n\t\t\t// VgpuInstance is the vgpuInstance argument value.\n\t\t\tVgpuInstance nvml.VgpuInstance\n\t\t}\n\t\t// VgpuInstanceGetRuntimeStateSize holds details about calls to the VgpuInstanceGetRuntimeStateSize method.\n\t\tVgpuInstanceGetRuntimeStateSize []struct {\n\t\t\t// VgpuInstance is the vgpuInstance argument value.\n\t\t\tVgpuInstance nvml.VgpuInstance\n\t\t}\n\t\t// VgpuInstanceGetType holds details about calls to the VgpuInstanceGetType method.\n\t\tVgpuInstanceGetType []struct {\n\t\t\t// VgpuInstance is the vgpuInstance argument value.\n\t\t\tVgpuInstance nvml.VgpuInstance\n\t\t}\n\t\t// VgpuInstanceGetUUID holds details about calls to the VgpuInstanceGetUUID method.\n\t\tVgpuInstanceGetUUID []struct {\n\t\t\t// VgpuInstance is the vgpuInstance argument value.\n\t\t\tVgpuInstance nvml.VgpuInstance\n\t\t}\n\t\t// VgpuInstanceGetVmDriverVersion holds details about calls to the VgpuInstanceGetVmDriverVersion method.\n\t\tVgpuInstanceGetVmDriverVersion []struct {\n\t\t\t// VgpuInstance is the vgpuInstance argument value.\n\t\t\tVgpuInstance nvml.VgpuInstance\n\t\t}\n\t\t// VgpuInstanceGetVmID holds details about calls to the VgpuInstanceGetVmID method.\n\t\tVgpuInstanceGetVmID []struct {\n\t\t\t// VgpuInstance is the vgpuInstance argument value.\n\t\t\tVgpuInstance nvml.VgpuInstance\n\t\t}\n\t\t// VgpuInstanceSetEncoderCapacity holds details about calls to the VgpuInstanceSetEncoderCapacity method.\n\t\tVgpuInstanceSetEncoderCapacity []struct {\n\t\t\t// VgpuInstance is the vgpuInstance argument value.\n\t\t\tVgpuInstance nvml.VgpuInstance\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t}\n\t\t// VgpuTypeGetBAR1Info holds details about calls to the VgpuTypeGetBAR1Info method.\n\t\tVgpuTypeGetBAR1Info []struct {\n\t\t\t// VgpuTypeId is the vgpuTypeId argument value.\n\t\t\tVgpuTypeId nvml.VgpuTypeId\n\t\t}\n\t\t// VgpuTypeGetCapabilities holds details about calls to the VgpuTypeGetCapabilities method.\n\t\tVgpuTypeGetCapabilities []struct {\n\t\t\t// VgpuTypeId is the vgpuTypeId argument value.\n\t\t\tVgpuTypeId nvml.VgpuTypeId\n\t\t\t// VgpuCapability is the vgpuCapability argument value.\n\t\t\tVgpuCapability nvml.VgpuCapability\n\t\t}\n\t\t// VgpuTypeGetClass holds details about calls to the VgpuTypeGetClass method.\n\t\tVgpuTypeGetClass []struct {\n\t\t\t// VgpuTypeId is the vgpuTypeId argument value.\n\t\t\tVgpuTypeId nvml.VgpuTypeId\n\t\t}\n\t\t// VgpuTypeGetDeviceID holds details about calls to the VgpuTypeGetDeviceID method.\n\t\tVgpuTypeGetDeviceID []struct {\n\t\t\t// VgpuTypeId is the vgpuTypeId argument value.\n\t\t\tVgpuTypeId nvml.VgpuTypeId\n\t\t}\n\t\t// VgpuTypeGetFrameRateLimit holds details about calls to the VgpuTypeGetFrameRateLimit method.\n\t\tVgpuTypeGetFrameRateLimit []struct {\n\t\t\t// VgpuTypeId is the vgpuTypeId argument value.\n\t\t\tVgpuTypeId nvml.VgpuTypeId\n\t\t}\n\t\t// VgpuTypeGetFramebufferSize holds details about calls to the VgpuTypeGetFramebufferSize method.\n\t\tVgpuTypeGetFramebufferSize []struct {\n\t\t\t// VgpuTypeId is the vgpuTypeId argument value.\n\t\t\tVgpuTypeId nvml.VgpuTypeId\n\t\t}\n\t\t// VgpuTypeGetGpuInstanceProfileId holds details about calls to the VgpuTypeGetGpuInstanceProfileId method.\n\t\tVgpuTypeGetGpuInstanceProfileId []struct {\n\t\t\t// VgpuTypeId is the vgpuTypeId argument value.\n\t\t\tVgpuTypeId nvml.VgpuTypeId\n\t\t}\n\t\t// VgpuTypeGetLicense holds details about calls to the VgpuTypeGetLicense method.\n\t\tVgpuTypeGetLicense []struct {\n\t\t\t// VgpuTypeId is the vgpuTypeId argument value.\n\t\t\tVgpuTypeId nvml.VgpuTypeId\n\t\t}\n\t\t// VgpuTypeGetMaxInstances holds details about calls to the VgpuTypeGetMaxInstances method.\n\t\tVgpuTypeGetMaxInstances []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t\t// VgpuTypeId is the vgpuTypeId argument value.\n\t\t\tVgpuTypeId nvml.VgpuTypeId\n\t\t}\n\t\t// VgpuTypeGetMaxInstancesPerGpuInstance holds details about calls to the VgpuTypeGetMaxInstancesPerGpuInstance method.\n\t\tVgpuTypeGetMaxInstancesPerGpuInstance []struct {\n\t\t\t// VgpuTypeMaxInstance is the vgpuTypeMaxInstance argument value.\n\t\t\tVgpuTypeMaxInstance *nvml.VgpuTypeMaxInstance\n\t\t}\n\t\t// VgpuTypeGetMaxInstancesPerVm holds details about calls to the VgpuTypeGetMaxInstancesPerVm method.\n\t\tVgpuTypeGetMaxInstancesPerVm []struct {\n\t\t\t// VgpuTypeId is the vgpuTypeId argument value.\n\t\t\tVgpuTypeId nvml.VgpuTypeId\n\t\t}\n\t\t// VgpuTypeGetName holds details about calls to the VgpuTypeGetName method.\n\t\tVgpuTypeGetName []struct {\n\t\t\t// VgpuTypeId is the vgpuTypeId argument value.\n\t\t\tVgpuTypeId nvml.VgpuTypeId\n\t\t}\n\t\t// VgpuTypeGetNumDisplayHeads holds details about calls to the VgpuTypeGetNumDisplayHeads method.\n\t\tVgpuTypeGetNumDisplayHeads []struct {\n\t\t\t// VgpuTypeId is the vgpuTypeId argument value.\n\t\t\tVgpuTypeId nvml.VgpuTypeId\n\t\t}\n\t\t// VgpuTypeGetResolution holds details about calls to the VgpuTypeGetResolution method.\n\t\tVgpuTypeGetResolution []struct {\n\t\t\t// VgpuTypeId is the vgpuTypeId argument value.\n\t\t\tVgpuTypeId nvml.VgpuTypeId\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t}\n\t}\n\tlockComputeInstanceDestroy                           sync.RWMutex\n\tlockComputeInstanceGetInfo                           sync.RWMutex\n\tlockDeviceClearAccountingPids                        sync.RWMutex\n\tlockDeviceClearCpuAffinity                           sync.RWMutex\n\tlockDeviceClearEccErrorCounts                        sync.RWMutex\n\tlockDeviceClearFieldValues                           sync.RWMutex\n\tlockDeviceCreateGpuInstance                          sync.RWMutex\n\tlockDeviceCreateGpuInstanceWithPlacement             sync.RWMutex\n\tlockDeviceDiscoverGpus                               sync.RWMutex\n\tlockDeviceFreezeNvLinkUtilizationCounter             sync.RWMutex\n\tlockDeviceGetAPIRestriction                          sync.RWMutex\n\tlockDeviceGetAccountingBufferSize                    sync.RWMutex\n\tlockDeviceGetAccountingMode                          sync.RWMutex\n\tlockDeviceGetAccountingPids                          sync.RWMutex\n\tlockDeviceGetAccountingStats                         sync.RWMutex\n\tlockDeviceGetActiveVgpus                             sync.RWMutex\n\tlockDeviceGetAdaptiveClockInfoStatus                 sync.RWMutex\n\tlockDeviceGetAddressingMode                          sync.RWMutex\n\tlockDeviceGetApplicationsClock                       sync.RWMutex\n\tlockDeviceGetArchitecture                            sync.RWMutex\n\tlockDeviceGetAttributes                              sync.RWMutex\n\tlockDeviceGetAutoBoostedClocksEnabled                sync.RWMutex\n\tlockDeviceGetBAR1MemoryInfo                          sync.RWMutex\n\tlockDeviceGetBoardId                                 sync.RWMutex\n\tlockDeviceGetBoardPartNumber                         sync.RWMutex\n\tlockDeviceGetBrand                                   sync.RWMutex\n\tlockDeviceGetBridgeChipInfo                          sync.RWMutex\n\tlockDeviceGetBusType                                 sync.RWMutex\n\tlockDeviceGetC2cModeInfoV                            sync.RWMutex\n\tlockDeviceGetCapabilities                            sync.RWMutex\n\tlockDeviceGetClkMonStatus                            sync.RWMutex\n\tlockDeviceGetClock                                   sync.RWMutex\n\tlockDeviceGetClockInfo                               sync.RWMutex\n\tlockDeviceGetClockOffsets                            sync.RWMutex\n\tlockDeviceGetComputeInstanceId                       sync.RWMutex\n\tlockDeviceGetComputeMode                             sync.RWMutex\n\tlockDeviceGetComputeRunningProcesses                 sync.RWMutex\n\tlockDeviceGetConfComputeGpuAttestationReport         sync.RWMutex\n\tlockDeviceGetConfComputeGpuCertificate               sync.RWMutex\n\tlockDeviceGetConfComputeMemSizeInfo                  sync.RWMutex\n\tlockDeviceGetConfComputeProtectedMemoryUsage         sync.RWMutex\n\tlockDeviceGetCoolerInfo                              sync.RWMutex\n\tlockDeviceGetCount                                   sync.RWMutex\n\tlockDeviceGetCpuAffinity                             sync.RWMutex\n\tlockDeviceGetCpuAffinityWithinScope                  sync.RWMutex\n\tlockDeviceGetCreatableVgpus                          sync.RWMutex\n\tlockDeviceGetCudaComputeCapability                   sync.RWMutex\n\tlockDeviceGetCurrPcieLinkGeneration                  sync.RWMutex\n\tlockDeviceGetCurrPcieLinkWidth                       sync.RWMutex\n\tlockDeviceGetCurrentClockFreqs                       sync.RWMutex\n\tlockDeviceGetCurrentClocksEventReasons               sync.RWMutex\n\tlockDeviceGetCurrentClocksThrottleReasons            sync.RWMutex\n\tlockDeviceGetDecoderUtilization                      sync.RWMutex\n\tlockDeviceGetDefaultApplicationsClock                sync.RWMutex\n\tlockDeviceGetDefaultEccMode                          sync.RWMutex\n\tlockDeviceGetDetailedEccErrors                       sync.RWMutex\n\tlockDeviceGetDeviceHandleFromMigDeviceHandle         sync.RWMutex\n\tlockDeviceGetDisplayActive                           sync.RWMutex\n\tlockDeviceGetDisplayMode                             sync.RWMutex\n\tlockDeviceGetDramEncryptionMode                      sync.RWMutex\n\tlockDeviceGetDriverModel                             sync.RWMutex\n\tlockDeviceGetDriverModel_v2                          sync.RWMutex\n\tlockDeviceGetDynamicPstatesInfo                      sync.RWMutex\n\tlockDeviceGetEccMode                                 sync.RWMutex\n\tlockDeviceGetEncoderCapacity                         sync.RWMutex\n\tlockDeviceGetEncoderSessions                         sync.RWMutex\n\tlockDeviceGetEncoderStats                            sync.RWMutex\n\tlockDeviceGetEncoderUtilization                      sync.RWMutex\n\tlockDeviceGetEnforcedPowerLimit                      sync.RWMutex\n\tlockDeviceGetFBCSessions                             sync.RWMutex\n\tlockDeviceGetFBCStats                                sync.RWMutex\n\tlockDeviceGetFanControlPolicy_v2                     sync.RWMutex\n\tlockDeviceGetFanSpeed                                sync.RWMutex\n\tlockDeviceGetFanSpeedRPM                             sync.RWMutex\n\tlockDeviceGetFanSpeed_v2                             sync.RWMutex\n\tlockDeviceGetFieldValues                             sync.RWMutex\n\tlockDeviceGetGpcClkMinMaxVfOffset                    sync.RWMutex\n\tlockDeviceGetGpcClkVfOffset                          sync.RWMutex\n\tlockDeviceGetGpuFabricInfo                           sync.RWMutex\n\tlockDeviceGetGpuFabricInfoV                          sync.RWMutex\n\tlockDeviceGetGpuInstanceById                         sync.RWMutex\n\tlockDeviceGetGpuInstanceId                           sync.RWMutex\n\tlockDeviceGetGpuInstancePossiblePlacements           sync.RWMutex\n\tlockDeviceGetGpuInstanceProfileInfo                  sync.RWMutex\n\tlockDeviceGetGpuInstanceProfileInfoByIdV             sync.RWMutex\n\tlockDeviceGetGpuInstanceProfileInfoV                 sync.RWMutex\n\tlockDeviceGetGpuInstanceRemainingCapacity            sync.RWMutex\n\tlockDeviceGetGpuInstances                            sync.RWMutex\n\tlockDeviceGetGpuMaxPcieLinkGeneration                sync.RWMutex\n\tlockDeviceGetGpuOperationMode                        sync.RWMutex\n\tlockDeviceGetGraphicsRunningProcesses                sync.RWMutex\n\tlockDeviceGetGridLicensableFeatures                  sync.RWMutex\n\tlockDeviceGetGspFirmwareMode                         sync.RWMutex\n\tlockDeviceGetGspFirmwareVersion                      sync.RWMutex\n\tlockDeviceGetHandleByIndex                           sync.RWMutex\n\tlockDeviceGetHandleByPciBusId                        sync.RWMutex\n\tlockDeviceGetHandleBySerial                          sync.RWMutex\n\tlockDeviceGetHandleByUUID                            sync.RWMutex\n\tlockDeviceGetHandleByUUIDV                           sync.RWMutex\n\tlockDeviceGetHostVgpuMode                            sync.RWMutex\n\tlockDeviceGetIndex                                   sync.RWMutex\n\tlockDeviceGetInforomConfigurationChecksum            sync.RWMutex\n\tlockDeviceGetInforomImageVersion                     sync.RWMutex\n\tlockDeviceGetInforomVersion                          sync.RWMutex\n\tlockDeviceGetIrqNum                                  sync.RWMutex\n\tlockDeviceGetJpgUtilization                          sync.RWMutex\n\tlockDeviceGetLastBBXFlushTime                        sync.RWMutex\n\tlockDeviceGetMPSComputeRunningProcesses              sync.RWMutex\n\tlockDeviceGetMarginTemperature                       sync.RWMutex\n\tlockDeviceGetMaxClockInfo                            sync.RWMutex\n\tlockDeviceGetMaxCustomerBoostClock                   sync.RWMutex\n\tlockDeviceGetMaxMigDeviceCount                       sync.RWMutex\n\tlockDeviceGetMaxPcieLinkGeneration                   sync.RWMutex\n\tlockDeviceGetMaxPcieLinkWidth                        sync.RWMutex\n\tlockDeviceGetMemClkMinMaxVfOffset                    sync.RWMutex\n\tlockDeviceGetMemClkVfOffset                          sync.RWMutex\n\tlockDeviceGetMemoryAffinity                          sync.RWMutex\n\tlockDeviceGetMemoryBusWidth                          sync.RWMutex\n\tlockDeviceGetMemoryErrorCounter                      sync.RWMutex\n\tlockDeviceGetMemoryInfo                              sync.RWMutex\n\tlockDeviceGetMemoryInfo_v2                           sync.RWMutex\n\tlockDeviceGetMigDeviceHandleByIndex                  sync.RWMutex\n\tlockDeviceGetMigMode                                 sync.RWMutex\n\tlockDeviceGetMinMaxClockOfPState                     sync.RWMutex\n\tlockDeviceGetMinMaxFanSpeed                          sync.RWMutex\n\tlockDeviceGetMinorNumber                             sync.RWMutex\n\tlockDeviceGetModuleId                                sync.RWMutex\n\tlockDeviceGetMultiGpuBoard                           sync.RWMutex\n\tlockDeviceGetName                                    sync.RWMutex\n\tlockDeviceGetNumFans                                 sync.RWMutex\n\tlockDeviceGetNumGpuCores                             sync.RWMutex\n\tlockDeviceGetNumaNodeId                              sync.RWMutex\n\tlockDeviceGetNvLinkCapability                        sync.RWMutex\n\tlockDeviceGetNvLinkErrorCounter                      sync.RWMutex\n\tlockDeviceGetNvLinkInfo                              sync.RWMutex\n\tlockDeviceGetNvLinkRemoteDeviceType                  sync.RWMutex\n\tlockDeviceGetNvLinkRemotePciInfo                     sync.RWMutex\n\tlockDeviceGetNvLinkState                             sync.RWMutex\n\tlockDeviceGetNvLinkUtilizationControl                sync.RWMutex\n\tlockDeviceGetNvLinkUtilizationCounter                sync.RWMutex\n\tlockDeviceGetNvLinkVersion                           sync.RWMutex\n\tlockDeviceGetNvlinkBwMode                            sync.RWMutex\n\tlockDeviceGetNvlinkSupportedBwModes                  sync.RWMutex\n\tlockDeviceGetOfaUtilization                          sync.RWMutex\n\tlockDeviceGetP2PStatus                               sync.RWMutex\n\tlockDeviceGetPciInfo                                 sync.RWMutex\n\tlockDeviceGetPciInfoExt                              sync.RWMutex\n\tlockDeviceGetPcieLinkMaxSpeed                        sync.RWMutex\n\tlockDeviceGetPcieReplayCounter                       sync.RWMutex\n\tlockDeviceGetPcieSpeed                               sync.RWMutex\n\tlockDeviceGetPcieThroughput                          sync.RWMutex\n\tlockDeviceGetPdi                                     sync.RWMutex\n\tlockDeviceGetPerformanceModes                        sync.RWMutex\n\tlockDeviceGetPerformanceState                        sync.RWMutex\n\tlockDeviceGetPersistenceMode                         sync.RWMutex\n\tlockDeviceGetPgpuMetadataString                      sync.RWMutex\n\tlockDeviceGetPlatformInfo                            sync.RWMutex\n\tlockDeviceGetPowerManagementDefaultLimit             sync.RWMutex\n\tlockDeviceGetPowerManagementLimit                    sync.RWMutex\n\tlockDeviceGetPowerManagementLimitConstraints         sync.RWMutex\n\tlockDeviceGetPowerManagementMode                     sync.RWMutex\n\tlockDeviceGetPowerMizerMode_v1                       sync.RWMutex\n\tlockDeviceGetPowerSource                             sync.RWMutex\n\tlockDeviceGetPowerState                              sync.RWMutex\n\tlockDeviceGetPowerUsage                              sync.RWMutex\n\tlockDeviceGetProcessUtilization                      sync.RWMutex\n\tlockDeviceGetProcessesUtilizationInfo                sync.RWMutex\n\tlockDeviceGetRemappedRows                            sync.RWMutex\n\tlockDeviceGetRepairStatus                            sync.RWMutex\n\tlockDeviceGetRetiredPages                            sync.RWMutex\n\tlockDeviceGetRetiredPagesPendingStatus               sync.RWMutex\n\tlockDeviceGetRetiredPages_v2                         sync.RWMutex\n\tlockDeviceGetRowRemapperHistogram                    sync.RWMutex\n\tlockDeviceGetRunningProcessDetailList                sync.RWMutex\n\tlockDeviceGetSamples                                 sync.RWMutex\n\tlockDeviceGetSerial                                  sync.RWMutex\n\tlockDeviceGetSramEccErrorStatus                      sync.RWMutex\n\tlockDeviceGetSramUniqueUncorrectedEccErrorCounts     sync.RWMutex\n\tlockDeviceGetSupportedClocksEventReasons             sync.RWMutex\n\tlockDeviceGetSupportedClocksThrottleReasons          sync.RWMutex\n\tlockDeviceGetSupportedEventTypes                     sync.RWMutex\n\tlockDeviceGetSupportedGraphicsClocks                 sync.RWMutex\n\tlockDeviceGetSupportedMemoryClocks                   sync.RWMutex\n\tlockDeviceGetSupportedPerformanceStates              sync.RWMutex\n\tlockDeviceGetSupportedVgpus                          sync.RWMutex\n\tlockDeviceGetTargetFanSpeed                          sync.RWMutex\n\tlockDeviceGetTemperature                             sync.RWMutex\n\tlockDeviceGetTemperatureThreshold                    sync.RWMutex\n\tlockDeviceGetTemperatureV                            sync.RWMutex\n\tlockDeviceGetThermalSettings                         sync.RWMutex\n\tlockDeviceGetTopologyCommonAncestor                  sync.RWMutex\n\tlockDeviceGetTopologyNearestGpus                     sync.RWMutex\n\tlockDeviceGetTotalEccErrors                          sync.RWMutex\n\tlockDeviceGetTotalEnergyConsumption                  sync.RWMutex\n\tlockDeviceGetUUID                                    sync.RWMutex\n\tlockDeviceGetUtilizationRates                        sync.RWMutex\n\tlockDeviceGetVbiosVersion                            sync.RWMutex\n\tlockDeviceGetVgpuCapabilities                        sync.RWMutex\n\tlockDeviceGetVgpuHeterogeneousMode                   sync.RWMutex\n\tlockDeviceGetVgpuInstancesUtilizationInfo            sync.RWMutex\n\tlockDeviceGetVgpuMetadata                            sync.RWMutex\n\tlockDeviceGetVgpuProcessUtilization                  sync.RWMutex\n\tlockDeviceGetVgpuProcessesUtilizationInfo            sync.RWMutex\n\tlockDeviceGetVgpuSchedulerCapabilities               sync.RWMutex\n\tlockDeviceGetVgpuSchedulerLog                        sync.RWMutex\n\tlockDeviceGetVgpuSchedulerState                      sync.RWMutex\n\tlockDeviceGetVgpuTypeCreatablePlacements             sync.RWMutex\n\tlockDeviceGetVgpuTypeSupportedPlacements             sync.RWMutex\n\tlockDeviceGetVgpuUtilization                         sync.RWMutex\n\tlockDeviceGetViolationStatus                         sync.RWMutex\n\tlockDeviceGetVirtualizationMode                      sync.RWMutex\n\tlockDeviceIsMigDeviceHandle                          sync.RWMutex\n\tlockDeviceModifyDrainState                           sync.RWMutex\n\tlockDeviceOnSameBoard                                sync.RWMutex\n\tlockDevicePowerSmoothingActivatePresetProfile        sync.RWMutex\n\tlockDevicePowerSmoothingSetState                     sync.RWMutex\n\tlockDevicePowerSmoothingUpdatePresetProfileParam     sync.RWMutex\n\tlockDeviceQueryDrainState                            sync.RWMutex\n\tlockDeviceReadWritePRM_v1                            sync.RWMutex\n\tlockDeviceRegisterEvents                             sync.RWMutex\n\tlockDeviceRemoveGpu                                  sync.RWMutex\n\tlockDeviceRemoveGpu_v2                               sync.RWMutex\n\tlockDeviceResetApplicationsClocks                    sync.RWMutex\n\tlockDeviceResetGpuLockedClocks                       sync.RWMutex\n\tlockDeviceResetMemoryLockedClocks                    sync.RWMutex\n\tlockDeviceResetNvLinkErrorCounters                   sync.RWMutex\n\tlockDeviceResetNvLinkUtilizationCounter              sync.RWMutex\n\tlockDeviceSetAPIRestriction                          sync.RWMutex\n\tlockDeviceSetAccountingMode                          sync.RWMutex\n\tlockDeviceSetApplicationsClocks                      sync.RWMutex\n\tlockDeviceSetAutoBoostedClocksEnabled                sync.RWMutex\n\tlockDeviceSetClockOffsets                            sync.RWMutex\n\tlockDeviceSetComputeMode                             sync.RWMutex\n\tlockDeviceSetConfComputeUnprotectedMemSize           sync.RWMutex\n\tlockDeviceSetCpuAffinity                             sync.RWMutex\n\tlockDeviceSetDefaultAutoBoostedClocksEnabled         sync.RWMutex\n\tlockDeviceSetDefaultFanSpeed_v2                      sync.RWMutex\n\tlockDeviceSetDramEncryptionMode                      sync.RWMutex\n\tlockDeviceSetDriverModel                             sync.RWMutex\n\tlockDeviceSetEccMode                                 sync.RWMutex\n\tlockDeviceSetFanControlPolicy                        sync.RWMutex\n\tlockDeviceSetFanSpeed_v2                             sync.RWMutex\n\tlockDeviceSetGpcClkVfOffset                          sync.RWMutex\n\tlockDeviceSetGpuLockedClocks                         sync.RWMutex\n\tlockDeviceSetGpuOperationMode                        sync.RWMutex\n\tlockDeviceSetMemClkVfOffset                          sync.RWMutex\n\tlockDeviceSetMemoryLockedClocks                      sync.RWMutex\n\tlockDeviceSetMigMode                                 sync.RWMutex\n\tlockDeviceSetNvLinkDeviceLowPowerThreshold           sync.RWMutex\n\tlockDeviceSetNvLinkUtilizationControl                sync.RWMutex\n\tlockDeviceSetNvlinkBwMode                            sync.RWMutex\n\tlockDeviceSetPersistenceMode                         sync.RWMutex\n\tlockDeviceSetPowerManagementLimit                    sync.RWMutex\n\tlockDeviceSetPowerManagementLimit_v2                 sync.RWMutex\n\tlockDeviceSetTemperatureThreshold                    sync.RWMutex\n\tlockDeviceSetVgpuCapabilities                        sync.RWMutex\n\tlockDeviceSetVgpuHeterogeneousMode                   sync.RWMutex\n\tlockDeviceSetVgpuSchedulerState                      sync.RWMutex\n\tlockDeviceSetVirtualizationMode                      sync.RWMutex\n\tlockDeviceValidateInforom                            sync.RWMutex\n\tlockDeviceWorkloadPowerProfileClearRequestedProfiles sync.RWMutex\n\tlockDeviceWorkloadPowerProfileGetCurrentProfiles     sync.RWMutex\n\tlockDeviceWorkloadPowerProfileGetProfilesInfo        sync.RWMutex\n\tlockDeviceWorkloadPowerProfileSetRequestedProfiles   sync.RWMutex\n\tlockErrorString                                      sync.RWMutex\n\tlockEventSetCreate                                   sync.RWMutex\n\tlockEventSetFree                                     sync.RWMutex\n\tlockEventSetWait                                     sync.RWMutex\n\tlockExtensions                                       sync.RWMutex\n\tlockGetExcludedDeviceCount                           sync.RWMutex\n\tlockGetExcludedDeviceInfoByIndex                     sync.RWMutex\n\tlockGetVgpuCompatibility                             sync.RWMutex\n\tlockGetVgpuDriverCapabilities                        sync.RWMutex\n\tlockGetVgpuVersion                                   sync.RWMutex\n\tlockGpmMetricsGet                                    sync.RWMutex\n\tlockGpmMetricsGetV                                   sync.RWMutex\n\tlockGpmMigSampleGet                                  sync.RWMutex\n\tlockGpmQueryDeviceSupport                            sync.RWMutex\n\tlockGpmQueryDeviceSupportV                           sync.RWMutex\n\tlockGpmQueryIfStreamingEnabled                       sync.RWMutex\n\tlockGpmSampleAlloc                                   sync.RWMutex\n\tlockGpmSampleFree                                    sync.RWMutex\n\tlockGpmSampleGet                                     sync.RWMutex\n\tlockGpmSetStreamingEnabled                           sync.RWMutex\n\tlockGpuInstanceCreateComputeInstance                 sync.RWMutex\n\tlockGpuInstanceCreateComputeInstanceWithPlacement    sync.RWMutex\n\tlockGpuInstanceDestroy                               sync.RWMutex\n\tlockGpuInstanceGetActiveVgpus                        sync.RWMutex\n\tlockGpuInstanceGetComputeInstanceById                sync.RWMutex\n\tlockGpuInstanceGetComputeInstancePossiblePlacements  sync.RWMutex\n\tlockGpuInstanceGetComputeInstanceProfileInfo         sync.RWMutex\n\tlockGpuInstanceGetComputeInstanceProfileInfoV        sync.RWMutex\n\tlockGpuInstanceGetComputeInstanceRemainingCapacity   sync.RWMutex\n\tlockGpuInstanceGetComputeInstances                   sync.RWMutex\n\tlockGpuInstanceGetCreatableVgpus                     sync.RWMutex\n\tlockGpuInstanceGetInfo                               sync.RWMutex\n\tlockGpuInstanceGetVgpuHeterogeneousMode              sync.RWMutex\n\tlockGpuInstanceGetVgpuSchedulerLog                   sync.RWMutex\n\tlockGpuInstanceGetVgpuSchedulerState                 sync.RWMutex\n\tlockGpuInstanceGetVgpuTypeCreatablePlacements        sync.RWMutex\n\tlockGpuInstanceSetVgpuHeterogeneousMode              sync.RWMutex\n\tlockGpuInstanceSetVgpuSchedulerState                 sync.RWMutex\n\tlockInit                                             sync.RWMutex\n\tlockInitWithFlags                                    sync.RWMutex\n\tlockSetVgpuVersion                                   sync.RWMutex\n\tlockShutdown                                         sync.RWMutex\n\tlockSystemEventSetCreate                             sync.RWMutex\n\tlockSystemEventSetFree                               sync.RWMutex\n\tlockSystemEventSetWait                               sync.RWMutex\n\tlockSystemGetConfComputeCapabilities                 sync.RWMutex\n\tlockSystemGetConfComputeGpusReadyState               sync.RWMutex\n\tlockSystemGetConfComputeKeyRotationThresholdInfo     sync.RWMutex\n\tlockSystemGetConfComputeSettings                     sync.RWMutex\n\tlockSystemGetConfComputeState                        sync.RWMutex\n\tlockSystemGetCudaDriverVersion                       sync.RWMutex\n\tlockSystemGetCudaDriverVersion_v2                    sync.RWMutex\n\tlockSystemGetDriverBranch                            sync.RWMutex\n\tlockSystemGetDriverVersion                           sync.RWMutex\n\tlockSystemGetHicVersion                              sync.RWMutex\n\tlockSystemGetNVMLVersion                             sync.RWMutex\n\tlockSystemGetNvlinkBwMode                            sync.RWMutex\n\tlockSystemGetProcessName                             sync.RWMutex\n\tlockSystemGetTopologyGpuSet                          sync.RWMutex\n\tlockSystemRegisterEvents                             sync.RWMutex\n\tlockSystemSetConfComputeGpusReadyState               sync.RWMutex\n\tlockSystemSetConfComputeKeyRotationThresholdInfo     sync.RWMutex\n\tlockSystemSetNvlinkBwMode                            sync.RWMutex\n\tlockUnitGetCount                                     sync.RWMutex\n\tlockUnitGetDevices                                   sync.RWMutex\n\tlockUnitGetFanSpeedInfo                              sync.RWMutex\n\tlockUnitGetHandleByIndex                             sync.RWMutex\n\tlockUnitGetLedState                                  sync.RWMutex\n\tlockUnitGetPsuInfo                                   sync.RWMutex\n\tlockUnitGetTemperature                               sync.RWMutex\n\tlockUnitGetUnitInfo                                  sync.RWMutex\n\tlockUnitSetLedState                                  sync.RWMutex\n\tlockVgpuInstanceClearAccountingPids                  sync.RWMutex\n\tlockVgpuInstanceGetAccountingMode                    sync.RWMutex\n\tlockVgpuInstanceGetAccountingPids                    sync.RWMutex\n\tlockVgpuInstanceGetAccountingStats                   sync.RWMutex\n\tlockVgpuInstanceGetEccMode                           sync.RWMutex\n\tlockVgpuInstanceGetEncoderCapacity                   sync.RWMutex\n\tlockVgpuInstanceGetEncoderSessions                   sync.RWMutex\n\tlockVgpuInstanceGetEncoderStats                      sync.RWMutex\n\tlockVgpuInstanceGetFBCSessions                       sync.RWMutex\n\tlockVgpuInstanceGetFBCStats                          sync.RWMutex\n\tlockVgpuInstanceGetFbUsage                           sync.RWMutex\n\tlockVgpuInstanceGetFrameRateLimit                    sync.RWMutex\n\tlockVgpuInstanceGetGpuInstanceId                     sync.RWMutex\n\tlockVgpuInstanceGetGpuPciId                          sync.RWMutex\n\tlockVgpuInstanceGetLicenseInfo                       sync.RWMutex\n\tlockVgpuInstanceGetLicenseStatus                     sync.RWMutex\n\tlockVgpuInstanceGetMdevUUID                          sync.RWMutex\n\tlockVgpuInstanceGetMetadata                          sync.RWMutex\n\tlockVgpuInstanceGetRuntimeStateSize                  sync.RWMutex\n\tlockVgpuInstanceGetType                              sync.RWMutex\n\tlockVgpuInstanceGetUUID                              sync.RWMutex\n\tlockVgpuInstanceGetVmDriverVersion                   sync.RWMutex\n\tlockVgpuInstanceGetVmID                              sync.RWMutex\n\tlockVgpuInstanceSetEncoderCapacity                   sync.RWMutex\n\tlockVgpuTypeGetBAR1Info                              sync.RWMutex\n\tlockVgpuTypeGetCapabilities                          sync.RWMutex\n\tlockVgpuTypeGetClass                                 sync.RWMutex\n\tlockVgpuTypeGetDeviceID                              sync.RWMutex\n\tlockVgpuTypeGetFrameRateLimit                        sync.RWMutex\n\tlockVgpuTypeGetFramebufferSize                       sync.RWMutex\n\tlockVgpuTypeGetGpuInstanceProfileId                  sync.RWMutex\n\tlockVgpuTypeGetLicense                               sync.RWMutex\n\tlockVgpuTypeGetMaxInstances                          sync.RWMutex\n\tlockVgpuTypeGetMaxInstancesPerGpuInstance            sync.RWMutex\n\tlockVgpuTypeGetMaxInstancesPerVm                     sync.RWMutex\n\tlockVgpuTypeGetName                                  sync.RWMutex\n\tlockVgpuTypeGetNumDisplayHeads                       sync.RWMutex\n\tlockVgpuTypeGetResolution                            sync.RWMutex\n}\n\n// ComputeInstanceDestroy calls ComputeInstanceDestroyFunc.\nfunc (mock *Interface) ComputeInstanceDestroy(computeInstance nvml.ComputeInstance) nvml.Return {\n\tif mock.ComputeInstanceDestroyFunc == nil {\n\t\tpanic(\"Interface.ComputeInstanceDestroyFunc: method is nil but Interface.ComputeInstanceDestroy was just called\")\n\t}\n\tcallInfo := struct {\n\t\tComputeInstance nvml.ComputeInstance\n\t}{\n\t\tComputeInstance: computeInstance,\n\t}\n\tmock.lockComputeInstanceDestroy.Lock()\n\tmock.calls.ComputeInstanceDestroy = append(mock.calls.ComputeInstanceDestroy, callInfo)\n\tmock.lockComputeInstanceDestroy.Unlock()\n\treturn mock.ComputeInstanceDestroyFunc(computeInstance)\n}\n\n// ComputeInstanceDestroyCalls gets all the calls that were made to ComputeInstanceDestroy.\n// Check the length with:\n//\n//\tlen(mockedInterface.ComputeInstanceDestroyCalls())\nfunc (mock *Interface) ComputeInstanceDestroyCalls() []struct {\n\tComputeInstance nvml.ComputeInstance\n} {\n\tvar calls []struct {\n\t\tComputeInstance nvml.ComputeInstance\n\t}\n\tmock.lockComputeInstanceDestroy.RLock()\n\tcalls = mock.calls.ComputeInstanceDestroy\n\tmock.lockComputeInstanceDestroy.RUnlock()\n\treturn calls\n}\n\n// ComputeInstanceGetInfo calls ComputeInstanceGetInfoFunc.\nfunc (mock *Interface) ComputeInstanceGetInfo(computeInstance nvml.ComputeInstance) (nvml.ComputeInstanceInfo, nvml.Return) {\n\tif mock.ComputeInstanceGetInfoFunc == nil {\n\t\tpanic(\"Interface.ComputeInstanceGetInfoFunc: method is nil but Interface.ComputeInstanceGetInfo was just called\")\n\t}\n\tcallInfo := struct {\n\t\tComputeInstance nvml.ComputeInstance\n\t}{\n\t\tComputeInstance: computeInstance,\n\t}\n\tmock.lockComputeInstanceGetInfo.Lock()\n\tmock.calls.ComputeInstanceGetInfo = append(mock.calls.ComputeInstanceGetInfo, callInfo)\n\tmock.lockComputeInstanceGetInfo.Unlock()\n\treturn mock.ComputeInstanceGetInfoFunc(computeInstance)\n}\n\n// ComputeInstanceGetInfoCalls gets all the calls that were made to ComputeInstanceGetInfo.\n// Check the length with:\n//\n//\tlen(mockedInterface.ComputeInstanceGetInfoCalls())\nfunc (mock *Interface) ComputeInstanceGetInfoCalls() []struct {\n\tComputeInstance nvml.ComputeInstance\n} {\n\tvar calls []struct {\n\t\tComputeInstance nvml.ComputeInstance\n\t}\n\tmock.lockComputeInstanceGetInfo.RLock()\n\tcalls = mock.calls.ComputeInstanceGetInfo\n\tmock.lockComputeInstanceGetInfo.RUnlock()\n\treturn calls\n}\n\n// DeviceClearAccountingPids calls DeviceClearAccountingPidsFunc.\nfunc (mock *Interface) DeviceClearAccountingPids(device nvml.Device) nvml.Return {\n\tif mock.DeviceClearAccountingPidsFunc == nil {\n\t\tpanic(\"Interface.DeviceClearAccountingPidsFunc: method is nil but Interface.DeviceClearAccountingPids was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceClearAccountingPids.Lock()\n\tmock.calls.DeviceClearAccountingPids = append(mock.calls.DeviceClearAccountingPids, callInfo)\n\tmock.lockDeviceClearAccountingPids.Unlock()\n\treturn mock.DeviceClearAccountingPidsFunc(device)\n}\n\n// DeviceClearAccountingPidsCalls gets all the calls that were made to DeviceClearAccountingPids.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceClearAccountingPidsCalls())\nfunc (mock *Interface) DeviceClearAccountingPidsCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceClearAccountingPids.RLock()\n\tcalls = mock.calls.DeviceClearAccountingPids\n\tmock.lockDeviceClearAccountingPids.RUnlock()\n\treturn calls\n}\n\n// DeviceClearCpuAffinity calls DeviceClearCpuAffinityFunc.\nfunc (mock *Interface) DeviceClearCpuAffinity(device nvml.Device) nvml.Return {\n\tif mock.DeviceClearCpuAffinityFunc == nil {\n\t\tpanic(\"Interface.DeviceClearCpuAffinityFunc: method is nil but Interface.DeviceClearCpuAffinity was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceClearCpuAffinity.Lock()\n\tmock.calls.DeviceClearCpuAffinity = append(mock.calls.DeviceClearCpuAffinity, callInfo)\n\tmock.lockDeviceClearCpuAffinity.Unlock()\n\treturn mock.DeviceClearCpuAffinityFunc(device)\n}\n\n// DeviceClearCpuAffinityCalls gets all the calls that were made to DeviceClearCpuAffinity.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceClearCpuAffinityCalls())\nfunc (mock *Interface) DeviceClearCpuAffinityCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceClearCpuAffinity.RLock()\n\tcalls = mock.calls.DeviceClearCpuAffinity\n\tmock.lockDeviceClearCpuAffinity.RUnlock()\n\treturn calls\n}\n\n// DeviceClearEccErrorCounts calls DeviceClearEccErrorCountsFunc.\nfunc (mock *Interface) DeviceClearEccErrorCounts(device nvml.Device, eccCounterType nvml.EccCounterType) nvml.Return {\n\tif mock.DeviceClearEccErrorCountsFunc == nil {\n\t\tpanic(\"Interface.DeviceClearEccErrorCountsFunc: method is nil but Interface.DeviceClearEccErrorCounts was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice         nvml.Device\n\t\tEccCounterType nvml.EccCounterType\n\t}{\n\t\tDevice:         device,\n\t\tEccCounterType: eccCounterType,\n\t}\n\tmock.lockDeviceClearEccErrorCounts.Lock()\n\tmock.calls.DeviceClearEccErrorCounts = append(mock.calls.DeviceClearEccErrorCounts, callInfo)\n\tmock.lockDeviceClearEccErrorCounts.Unlock()\n\treturn mock.DeviceClearEccErrorCountsFunc(device, eccCounterType)\n}\n\n// DeviceClearEccErrorCountsCalls gets all the calls that were made to DeviceClearEccErrorCounts.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceClearEccErrorCountsCalls())\nfunc (mock *Interface) DeviceClearEccErrorCountsCalls() []struct {\n\tDevice         nvml.Device\n\tEccCounterType nvml.EccCounterType\n} {\n\tvar calls []struct {\n\t\tDevice         nvml.Device\n\t\tEccCounterType nvml.EccCounterType\n\t}\n\tmock.lockDeviceClearEccErrorCounts.RLock()\n\tcalls = mock.calls.DeviceClearEccErrorCounts\n\tmock.lockDeviceClearEccErrorCounts.RUnlock()\n\treturn calls\n}\n\n// DeviceClearFieldValues calls DeviceClearFieldValuesFunc.\nfunc (mock *Interface) DeviceClearFieldValues(device nvml.Device, fieldValues []nvml.FieldValue) nvml.Return {\n\tif mock.DeviceClearFieldValuesFunc == nil {\n\t\tpanic(\"Interface.DeviceClearFieldValuesFunc: method is nil but Interface.DeviceClearFieldValues was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice      nvml.Device\n\t\tFieldValues []nvml.FieldValue\n\t}{\n\t\tDevice:      device,\n\t\tFieldValues: fieldValues,\n\t}\n\tmock.lockDeviceClearFieldValues.Lock()\n\tmock.calls.DeviceClearFieldValues = append(mock.calls.DeviceClearFieldValues, callInfo)\n\tmock.lockDeviceClearFieldValues.Unlock()\n\treturn mock.DeviceClearFieldValuesFunc(device, fieldValues)\n}\n\n// DeviceClearFieldValuesCalls gets all the calls that were made to DeviceClearFieldValues.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceClearFieldValuesCalls())\nfunc (mock *Interface) DeviceClearFieldValuesCalls() []struct {\n\tDevice      nvml.Device\n\tFieldValues []nvml.FieldValue\n} {\n\tvar calls []struct {\n\t\tDevice      nvml.Device\n\t\tFieldValues []nvml.FieldValue\n\t}\n\tmock.lockDeviceClearFieldValues.RLock()\n\tcalls = mock.calls.DeviceClearFieldValues\n\tmock.lockDeviceClearFieldValues.RUnlock()\n\treturn calls\n}\n\n// DeviceCreateGpuInstance calls DeviceCreateGpuInstanceFunc.\nfunc (mock *Interface) DeviceCreateGpuInstance(device nvml.Device, gpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo) (nvml.GpuInstance, nvml.Return) {\n\tif mock.DeviceCreateGpuInstanceFunc == nil {\n\t\tpanic(\"Interface.DeviceCreateGpuInstanceFunc: method is nil but Interface.DeviceCreateGpuInstance was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice                 nvml.Device\n\t\tGpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo\n\t}{\n\t\tDevice:                 device,\n\t\tGpuInstanceProfileInfo: gpuInstanceProfileInfo,\n\t}\n\tmock.lockDeviceCreateGpuInstance.Lock()\n\tmock.calls.DeviceCreateGpuInstance = append(mock.calls.DeviceCreateGpuInstance, callInfo)\n\tmock.lockDeviceCreateGpuInstance.Unlock()\n\treturn mock.DeviceCreateGpuInstanceFunc(device, gpuInstanceProfileInfo)\n}\n\n// DeviceCreateGpuInstanceCalls gets all the calls that were made to DeviceCreateGpuInstance.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceCreateGpuInstanceCalls())\nfunc (mock *Interface) DeviceCreateGpuInstanceCalls() []struct {\n\tDevice                 nvml.Device\n\tGpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo\n} {\n\tvar calls []struct {\n\t\tDevice                 nvml.Device\n\t\tGpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo\n\t}\n\tmock.lockDeviceCreateGpuInstance.RLock()\n\tcalls = mock.calls.DeviceCreateGpuInstance\n\tmock.lockDeviceCreateGpuInstance.RUnlock()\n\treturn calls\n}\n\n// DeviceCreateGpuInstanceWithPlacement calls DeviceCreateGpuInstanceWithPlacementFunc.\nfunc (mock *Interface) DeviceCreateGpuInstanceWithPlacement(device nvml.Device, gpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo, gpuInstancePlacement *nvml.GpuInstancePlacement) (nvml.GpuInstance, nvml.Return) {\n\tif mock.DeviceCreateGpuInstanceWithPlacementFunc == nil {\n\t\tpanic(\"Interface.DeviceCreateGpuInstanceWithPlacementFunc: method is nil but Interface.DeviceCreateGpuInstanceWithPlacement was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice                 nvml.Device\n\t\tGpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo\n\t\tGpuInstancePlacement   *nvml.GpuInstancePlacement\n\t}{\n\t\tDevice:                 device,\n\t\tGpuInstanceProfileInfo: gpuInstanceProfileInfo,\n\t\tGpuInstancePlacement:   gpuInstancePlacement,\n\t}\n\tmock.lockDeviceCreateGpuInstanceWithPlacement.Lock()\n\tmock.calls.DeviceCreateGpuInstanceWithPlacement = append(mock.calls.DeviceCreateGpuInstanceWithPlacement, callInfo)\n\tmock.lockDeviceCreateGpuInstanceWithPlacement.Unlock()\n\treturn mock.DeviceCreateGpuInstanceWithPlacementFunc(device, gpuInstanceProfileInfo, gpuInstancePlacement)\n}\n\n// DeviceCreateGpuInstanceWithPlacementCalls gets all the calls that were made to DeviceCreateGpuInstanceWithPlacement.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceCreateGpuInstanceWithPlacementCalls())\nfunc (mock *Interface) DeviceCreateGpuInstanceWithPlacementCalls() []struct {\n\tDevice                 nvml.Device\n\tGpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo\n\tGpuInstancePlacement   *nvml.GpuInstancePlacement\n} {\n\tvar calls []struct {\n\t\tDevice                 nvml.Device\n\t\tGpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo\n\t\tGpuInstancePlacement   *nvml.GpuInstancePlacement\n\t}\n\tmock.lockDeviceCreateGpuInstanceWithPlacement.RLock()\n\tcalls = mock.calls.DeviceCreateGpuInstanceWithPlacement\n\tmock.lockDeviceCreateGpuInstanceWithPlacement.RUnlock()\n\treturn calls\n}\n\n// DeviceDiscoverGpus calls DeviceDiscoverGpusFunc.\nfunc (mock *Interface) DeviceDiscoverGpus() (nvml.PciInfo, nvml.Return) {\n\tif mock.DeviceDiscoverGpusFunc == nil {\n\t\tpanic(\"Interface.DeviceDiscoverGpusFunc: method is nil but Interface.DeviceDiscoverGpus was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockDeviceDiscoverGpus.Lock()\n\tmock.calls.DeviceDiscoverGpus = append(mock.calls.DeviceDiscoverGpus, callInfo)\n\tmock.lockDeviceDiscoverGpus.Unlock()\n\treturn mock.DeviceDiscoverGpusFunc()\n}\n\n// DeviceDiscoverGpusCalls gets all the calls that were made to DeviceDiscoverGpus.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceDiscoverGpusCalls())\nfunc (mock *Interface) DeviceDiscoverGpusCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockDeviceDiscoverGpus.RLock()\n\tcalls = mock.calls.DeviceDiscoverGpus\n\tmock.lockDeviceDiscoverGpus.RUnlock()\n\treturn calls\n}\n\n// DeviceFreezeNvLinkUtilizationCounter calls DeviceFreezeNvLinkUtilizationCounterFunc.\nfunc (mock *Interface) DeviceFreezeNvLinkUtilizationCounter(device nvml.Device, n1 int, n2 int, enableState nvml.EnableState) nvml.Return {\n\tif mock.DeviceFreezeNvLinkUtilizationCounterFunc == nil {\n\t\tpanic(\"Interface.DeviceFreezeNvLinkUtilizationCounterFunc: method is nil but Interface.DeviceFreezeNvLinkUtilizationCounter was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice      nvml.Device\n\t\tN1          int\n\t\tN2          int\n\t\tEnableState nvml.EnableState\n\t}{\n\t\tDevice:      device,\n\t\tN1:          n1,\n\t\tN2:          n2,\n\t\tEnableState: enableState,\n\t}\n\tmock.lockDeviceFreezeNvLinkUtilizationCounter.Lock()\n\tmock.calls.DeviceFreezeNvLinkUtilizationCounter = append(mock.calls.DeviceFreezeNvLinkUtilizationCounter, callInfo)\n\tmock.lockDeviceFreezeNvLinkUtilizationCounter.Unlock()\n\treturn mock.DeviceFreezeNvLinkUtilizationCounterFunc(device, n1, n2, enableState)\n}\n\n// DeviceFreezeNvLinkUtilizationCounterCalls gets all the calls that were made to DeviceFreezeNvLinkUtilizationCounter.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceFreezeNvLinkUtilizationCounterCalls())\nfunc (mock *Interface) DeviceFreezeNvLinkUtilizationCounterCalls() []struct {\n\tDevice      nvml.Device\n\tN1          int\n\tN2          int\n\tEnableState nvml.EnableState\n} {\n\tvar calls []struct {\n\t\tDevice      nvml.Device\n\t\tN1          int\n\t\tN2          int\n\t\tEnableState nvml.EnableState\n\t}\n\tmock.lockDeviceFreezeNvLinkUtilizationCounter.RLock()\n\tcalls = mock.calls.DeviceFreezeNvLinkUtilizationCounter\n\tmock.lockDeviceFreezeNvLinkUtilizationCounter.RUnlock()\n\treturn calls\n}\n\n// DeviceGetAPIRestriction calls DeviceGetAPIRestrictionFunc.\nfunc (mock *Interface) DeviceGetAPIRestriction(device nvml.Device, restrictedAPI nvml.RestrictedAPI) (nvml.EnableState, nvml.Return) {\n\tif mock.DeviceGetAPIRestrictionFunc == nil {\n\t\tpanic(\"Interface.DeviceGetAPIRestrictionFunc: method is nil but Interface.DeviceGetAPIRestriction was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice        nvml.Device\n\t\tRestrictedAPI nvml.RestrictedAPI\n\t}{\n\t\tDevice:        device,\n\t\tRestrictedAPI: restrictedAPI,\n\t}\n\tmock.lockDeviceGetAPIRestriction.Lock()\n\tmock.calls.DeviceGetAPIRestriction = append(mock.calls.DeviceGetAPIRestriction, callInfo)\n\tmock.lockDeviceGetAPIRestriction.Unlock()\n\treturn mock.DeviceGetAPIRestrictionFunc(device, restrictedAPI)\n}\n\n// DeviceGetAPIRestrictionCalls gets all the calls that were made to DeviceGetAPIRestriction.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetAPIRestrictionCalls())\nfunc (mock *Interface) DeviceGetAPIRestrictionCalls() []struct {\n\tDevice        nvml.Device\n\tRestrictedAPI nvml.RestrictedAPI\n} {\n\tvar calls []struct {\n\t\tDevice        nvml.Device\n\t\tRestrictedAPI nvml.RestrictedAPI\n\t}\n\tmock.lockDeviceGetAPIRestriction.RLock()\n\tcalls = mock.calls.DeviceGetAPIRestriction\n\tmock.lockDeviceGetAPIRestriction.RUnlock()\n\treturn calls\n}\n\n// DeviceGetAccountingBufferSize calls DeviceGetAccountingBufferSizeFunc.\nfunc (mock *Interface) DeviceGetAccountingBufferSize(device nvml.Device) (int, nvml.Return) {\n\tif mock.DeviceGetAccountingBufferSizeFunc == nil {\n\t\tpanic(\"Interface.DeviceGetAccountingBufferSizeFunc: method is nil but Interface.DeviceGetAccountingBufferSize was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetAccountingBufferSize.Lock()\n\tmock.calls.DeviceGetAccountingBufferSize = append(mock.calls.DeviceGetAccountingBufferSize, callInfo)\n\tmock.lockDeviceGetAccountingBufferSize.Unlock()\n\treturn mock.DeviceGetAccountingBufferSizeFunc(device)\n}\n\n// DeviceGetAccountingBufferSizeCalls gets all the calls that were made to DeviceGetAccountingBufferSize.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetAccountingBufferSizeCalls())\nfunc (mock *Interface) DeviceGetAccountingBufferSizeCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetAccountingBufferSize.RLock()\n\tcalls = mock.calls.DeviceGetAccountingBufferSize\n\tmock.lockDeviceGetAccountingBufferSize.RUnlock()\n\treturn calls\n}\n\n// DeviceGetAccountingMode calls DeviceGetAccountingModeFunc.\nfunc (mock *Interface) DeviceGetAccountingMode(device nvml.Device) (nvml.EnableState, nvml.Return) {\n\tif mock.DeviceGetAccountingModeFunc == nil {\n\t\tpanic(\"Interface.DeviceGetAccountingModeFunc: method is nil but Interface.DeviceGetAccountingMode was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetAccountingMode.Lock()\n\tmock.calls.DeviceGetAccountingMode = append(mock.calls.DeviceGetAccountingMode, callInfo)\n\tmock.lockDeviceGetAccountingMode.Unlock()\n\treturn mock.DeviceGetAccountingModeFunc(device)\n}\n\n// DeviceGetAccountingModeCalls gets all the calls that were made to DeviceGetAccountingMode.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetAccountingModeCalls())\nfunc (mock *Interface) DeviceGetAccountingModeCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetAccountingMode.RLock()\n\tcalls = mock.calls.DeviceGetAccountingMode\n\tmock.lockDeviceGetAccountingMode.RUnlock()\n\treturn calls\n}\n\n// DeviceGetAccountingPids calls DeviceGetAccountingPidsFunc.\nfunc (mock *Interface) DeviceGetAccountingPids(device nvml.Device) ([]int, nvml.Return) {\n\tif mock.DeviceGetAccountingPidsFunc == nil {\n\t\tpanic(\"Interface.DeviceGetAccountingPidsFunc: method is nil but Interface.DeviceGetAccountingPids was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetAccountingPids.Lock()\n\tmock.calls.DeviceGetAccountingPids = append(mock.calls.DeviceGetAccountingPids, callInfo)\n\tmock.lockDeviceGetAccountingPids.Unlock()\n\treturn mock.DeviceGetAccountingPidsFunc(device)\n}\n\n// DeviceGetAccountingPidsCalls gets all the calls that were made to DeviceGetAccountingPids.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetAccountingPidsCalls())\nfunc (mock *Interface) DeviceGetAccountingPidsCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetAccountingPids.RLock()\n\tcalls = mock.calls.DeviceGetAccountingPids\n\tmock.lockDeviceGetAccountingPids.RUnlock()\n\treturn calls\n}\n\n// DeviceGetAccountingStats calls DeviceGetAccountingStatsFunc.\nfunc (mock *Interface) DeviceGetAccountingStats(device nvml.Device, v uint32) (nvml.AccountingStats, nvml.Return) {\n\tif mock.DeviceGetAccountingStatsFunc == nil {\n\t\tpanic(\"Interface.DeviceGetAccountingStatsFunc: method is nil but Interface.DeviceGetAccountingStats was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t\tV      uint32\n\t}{\n\t\tDevice: device,\n\t\tV:      v,\n\t}\n\tmock.lockDeviceGetAccountingStats.Lock()\n\tmock.calls.DeviceGetAccountingStats = append(mock.calls.DeviceGetAccountingStats, callInfo)\n\tmock.lockDeviceGetAccountingStats.Unlock()\n\treturn mock.DeviceGetAccountingStatsFunc(device, v)\n}\n\n// DeviceGetAccountingStatsCalls gets all the calls that were made to DeviceGetAccountingStats.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetAccountingStatsCalls())\nfunc (mock *Interface) DeviceGetAccountingStatsCalls() []struct {\n\tDevice nvml.Device\n\tV      uint32\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t\tV      uint32\n\t}\n\tmock.lockDeviceGetAccountingStats.RLock()\n\tcalls = mock.calls.DeviceGetAccountingStats\n\tmock.lockDeviceGetAccountingStats.RUnlock()\n\treturn calls\n}\n\n// DeviceGetActiveVgpus calls DeviceGetActiveVgpusFunc.\nfunc (mock *Interface) DeviceGetActiveVgpus(device nvml.Device) ([]nvml.VgpuInstance, nvml.Return) {\n\tif mock.DeviceGetActiveVgpusFunc == nil {\n\t\tpanic(\"Interface.DeviceGetActiveVgpusFunc: method is nil but Interface.DeviceGetActiveVgpus was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetActiveVgpus.Lock()\n\tmock.calls.DeviceGetActiveVgpus = append(mock.calls.DeviceGetActiveVgpus, callInfo)\n\tmock.lockDeviceGetActiveVgpus.Unlock()\n\treturn mock.DeviceGetActiveVgpusFunc(device)\n}\n\n// DeviceGetActiveVgpusCalls gets all the calls that were made to DeviceGetActiveVgpus.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetActiveVgpusCalls())\nfunc (mock *Interface) DeviceGetActiveVgpusCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetActiveVgpus.RLock()\n\tcalls = mock.calls.DeviceGetActiveVgpus\n\tmock.lockDeviceGetActiveVgpus.RUnlock()\n\treturn calls\n}\n\n// DeviceGetAdaptiveClockInfoStatus calls DeviceGetAdaptiveClockInfoStatusFunc.\nfunc (mock *Interface) DeviceGetAdaptiveClockInfoStatus(device nvml.Device) (uint32, nvml.Return) {\n\tif mock.DeviceGetAdaptiveClockInfoStatusFunc == nil {\n\t\tpanic(\"Interface.DeviceGetAdaptiveClockInfoStatusFunc: method is nil but Interface.DeviceGetAdaptiveClockInfoStatus was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetAdaptiveClockInfoStatus.Lock()\n\tmock.calls.DeviceGetAdaptiveClockInfoStatus = append(mock.calls.DeviceGetAdaptiveClockInfoStatus, callInfo)\n\tmock.lockDeviceGetAdaptiveClockInfoStatus.Unlock()\n\treturn mock.DeviceGetAdaptiveClockInfoStatusFunc(device)\n}\n\n// DeviceGetAdaptiveClockInfoStatusCalls gets all the calls that were made to DeviceGetAdaptiveClockInfoStatus.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetAdaptiveClockInfoStatusCalls())\nfunc (mock *Interface) DeviceGetAdaptiveClockInfoStatusCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetAdaptiveClockInfoStatus.RLock()\n\tcalls = mock.calls.DeviceGetAdaptiveClockInfoStatus\n\tmock.lockDeviceGetAdaptiveClockInfoStatus.RUnlock()\n\treturn calls\n}\n\n// DeviceGetAddressingMode calls DeviceGetAddressingModeFunc.\nfunc (mock *Interface) DeviceGetAddressingMode(device nvml.Device) (nvml.DeviceAddressingMode, nvml.Return) {\n\tif mock.DeviceGetAddressingModeFunc == nil {\n\t\tpanic(\"Interface.DeviceGetAddressingModeFunc: method is nil but Interface.DeviceGetAddressingMode was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetAddressingMode.Lock()\n\tmock.calls.DeviceGetAddressingMode = append(mock.calls.DeviceGetAddressingMode, callInfo)\n\tmock.lockDeviceGetAddressingMode.Unlock()\n\treturn mock.DeviceGetAddressingModeFunc(device)\n}\n\n// DeviceGetAddressingModeCalls gets all the calls that were made to DeviceGetAddressingMode.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetAddressingModeCalls())\nfunc (mock *Interface) DeviceGetAddressingModeCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetAddressingMode.RLock()\n\tcalls = mock.calls.DeviceGetAddressingMode\n\tmock.lockDeviceGetAddressingMode.RUnlock()\n\treturn calls\n}\n\n// DeviceGetApplicationsClock calls DeviceGetApplicationsClockFunc.\nfunc (mock *Interface) DeviceGetApplicationsClock(device nvml.Device, clockType nvml.ClockType) (uint32, nvml.Return) {\n\tif mock.DeviceGetApplicationsClockFunc == nil {\n\t\tpanic(\"Interface.DeviceGetApplicationsClockFunc: method is nil but Interface.DeviceGetApplicationsClock was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice    nvml.Device\n\t\tClockType nvml.ClockType\n\t}{\n\t\tDevice:    device,\n\t\tClockType: clockType,\n\t}\n\tmock.lockDeviceGetApplicationsClock.Lock()\n\tmock.calls.DeviceGetApplicationsClock = append(mock.calls.DeviceGetApplicationsClock, callInfo)\n\tmock.lockDeviceGetApplicationsClock.Unlock()\n\treturn mock.DeviceGetApplicationsClockFunc(device, clockType)\n}\n\n// DeviceGetApplicationsClockCalls gets all the calls that were made to DeviceGetApplicationsClock.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetApplicationsClockCalls())\nfunc (mock *Interface) DeviceGetApplicationsClockCalls() []struct {\n\tDevice    nvml.Device\n\tClockType nvml.ClockType\n} {\n\tvar calls []struct {\n\t\tDevice    nvml.Device\n\t\tClockType nvml.ClockType\n\t}\n\tmock.lockDeviceGetApplicationsClock.RLock()\n\tcalls = mock.calls.DeviceGetApplicationsClock\n\tmock.lockDeviceGetApplicationsClock.RUnlock()\n\treturn calls\n}\n\n// DeviceGetArchitecture calls DeviceGetArchitectureFunc.\nfunc (mock *Interface) DeviceGetArchitecture(device nvml.Device) (nvml.DeviceArchitecture, nvml.Return) {\n\tif mock.DeviceGetArchitectureFunc == nil {\n\t\tpanic(\"Interface.DeviceGetArchitectureFunc: method is nil but Interface.DeviceGetArchitecture was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetArchitecture.Lock()\n\tmock.calls.DeviceGetArchitecture = append(mock.calls.DeviceGetArchitecture, callInfo)\n\tmock.lockDeviceGetArchitecture.Unlock()\n\treturn mock.DeviceGetArchitectureFunc(device)\n}\n\n// DeviceGetArchitectureCalls gets all the calls that were made to DeviceGetArchitecture.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetArchitectureCalls())\nfunc (mock *Interface) DeviceGetArchitectureCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetArchitecture.RLock()\n\tcalls = mock.calls.DeviceGetArchitecture\n\tmock.lockDeviceGetArchitecture.RUnlock()\n\treturn calls\n}\n\n// DeviceGetAttributes calls DeviceGetAttributesFunc.\nfunc (mock *Interface) DeviceGetAttributes(device nvml.Device) (nvml.DeviceAttributes, nvml.Return) {\n\tif mock.DeviceGetAttributesFunc == nil {\n\t\tpanic(\"Interface.DeviceGetAttributesFunc: method is nil but Interface.DeviceGetAttributes was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetAttributes.Lock()\n\tmock.calls.DeviceGetAttributes = append(mock.calls.DeviceGetAttributes, callInfo)\n\tmock.lockDeviceGetAttributes.Unlock()\n\treturn mock.DeviceGetAttributesFunc(device)\n}\n\n// DeviceGetAttributesCalls gets all the calls that were made to DeviceGetAttributes.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetAttributesCalls())\nfunc (mock *Interface) DeviceGetAttributesCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetAttributes.RLock()\n\tcalls = mock.calls.DeviceGetAttributes\n\tmock.lockDeviceGetAttributes.RUnlock()\n\treturn calls\n}\n\n// DeviceGetAutoBoostedClocksEnabled calls DeviceGetAutoBoostedClocksEnabledFunc.\nfunc (mock *Interface) DeviceGetAutoBoostedClocksEnabled(device nvml.Device) (nvml.EnableState, nvml.EnableState, nvml.Return) {\n\tif mock.DeviceGetAutoBoostedClocksEnabledFunc == nil {\n\t\tpanic(\"Interface.DeviceGetAutoBoostedClocksEnabledFunc: method is nil but Interface.DeviceGetAutoBoostedClocksEnabled was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetAutoBoostedClocksEnabled.Lock()\n\tmock.calls.DeviceGetAutoBoostedClocksEnabled = append(mock.calls.DeviceGetAutoBoostedClocksEnabled, callInfo)\n\tmock.lockDeviceGetAutoBoostedClocksEnabled.Unlock()\n\treturn mock.DeviceGetAutoBoostedClocksEnabledFunc(device)\n}\n\n// DeviceGetAutoBoostedClocksEnabledCalls gets all the calls that were made to DeviceGetAutoBoostedClocksEnabled.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetAutoBoostedClocksEnabledCalls())\nfunc (mock *Interface) DeviceGetAutoBoostedClocksEnabledCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetAutoBoostedClocksEnabled.RLock()\n\tcalls = mock.calls.DeviceGetAutoBoostedClocksEnabled\n\tmock.lockDeviceGetAutoBoostedClocksEnabled.RUnlock()\n\treturn calls\n}\n\n// DeviceGetBAR1MemoryInfo calls DeviceGetBAR1MemoryInfoFunc.\nfunc (mock *Interface) DeviceGetBAR1MemoryInfo(device nvml.Device) (nvml.BAR1Memory, nvml.Return) {\n\tif mock.DeviceGetBAR1MemoryInfoFunc == nil {\n\t\tpanic(\"Interface.DeviceGetBAR1MemoryInfoFunc: method is nil but Interface.DeviceGetBAR1MemoryInfo was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetBAR1MemoryInfo.Lock()\n\tmock.calls.DeviceGetBAR1MemoryInfo = append(mock.calls.DeviceGetBAR1MemoryInfo, callInfo)\n\tmock.lockDeviceGetBAR1MemoryInfo.Unlock()\n\treturn mock.DeviceGetBAR1MemoryInfoFunc(device)\n}\n\n// DeviceGetBAR1MemoryInfoCalls gets all the calls that were made to DeviceGetBAR1MemoryInfo.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetBAR1MemoryInfoCalls())\nfunc (mock *Interface) DeviceGetBAR1MemoryInfoCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetBAR1MemoryInfo.RLock()\n\tcalls = mock.calls.DeviceGetBAR1MemoryInfo\n\tmock.lockDeviceGetBAR1MemoryInfo.RUnlock()\n\treturn calls\n}\n\n// DeviceGetBoardId calls DeviceGetBoardIdFunc.\nfunc (mock *Interface) DeviceGetBoardId(device nvml.Device) (uint32, nvml.Return) {\n\tif mock.DeviceGetBoardIdFunc == nil {\n\t\tpanic(\"Interface.DeviceGetBoardIdFunc: method is nil but Interface.DeviceGetBoardId was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetBoardId.Lock()\n\tmock.calls.DeviceGetBoardId = append(mock.calls.DeviceGetBoardId, callInfo)\n\tmock.lockDeviceGetBoardId.Unlock()\n\treturn mock.DeviceGetBoardIdFunc(device)\n}\n\n// DeviceGetBoardIdCalls gets all the calls that were made to DeviceGetBoardId.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetBoardIdCalls())\nfunc (mock *Interface) DeviceGetBoardIdCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetBoardId.RLock()\n\tcalls = mock.calls.DeviceGetBoardId\n\tmock.lockDeviceGetBoardId.RUnlock()\n\treturn calls\n}\n\n// DeviceGetBoardPartNumber calls DeviceGetBoardPartNumberFunc.\nfunc (mock *Interface) DeviceGetBoardPartNumber(device nvml.Device) (string, nvml.Return) {\n\tif mock.DeviceGetBoardPartNumberFunc == nil {\n\t\tpanic(\"Interface.DeviceGetBoardPartNumberFunc: method is nil but Interface.DeviceGetBoardPartNumber was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetBoardPartNumber.Lock()\n\tmock.calls.DeviceGetBoardPartNumber = append(mock.calls.DeviceGetBoardPartNumber, callInfo)\n\tmock.lockDeviceGetBoardPartNumber.Unlock()\n\treturn mock.DeviceGetBoardPartNumberFunc(device)\n}\n\n// DeviceGetBoardPartNumberCalls gets all the calls that were made to DeviceGetBoardPartNumber.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetBoardPartNumberCalls())\nfunc (mock *Interface) DeviceGetBoardPartNumberCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetBoardPartNumber.RLock()\n\tcalls = mock.calls.DeviceGetBoardPartNumber\n\tmock.lockDeviceGetBoardPartNumber.RUnlock()\n\treturn calls\n}\n\n// DeviceGetBrand calls DeviceGetBrandFunc.\nfunc (mock *Interface) DeviceGetBrand(device nvml.Device) (nvml.BrandType, nvml.Return) {\n\tif mock.DeviceGetBrandFunc == nil {\n\t\tpanic(\"Interface.DeviceGetBrandFunc: method is nil but Interface.DeviceGetBrand was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetBrand.Lock()\n\tmock.calls.DeviceGetBrand = append(mock.calls.DeviceGetBrand, callInfo)\n\tmock.lockDeviceGetBrand.Unlock()\n\treturn mock.DeviceGetBrandFunc(device)\n}\n\n// DeviceGetBrandCalls gets all the calls that were made to DeviceGetBrand.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetBrandCalls())\nfunc (mock *Interface) DeviceGetBrandCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetBrand.RLock()\n\tcalls = mock.calls.DeviceGetBrand\n\tmock.lockDeviceGetBrand.RUnlock()\n\treturn calls\n}\n\n// DeviceGetBridgeChipInfo calls DeviceGetBridgeChipInfoFunc.\nfunc (mock *Interface) DeviceGetBridgeChipInfo(device nvml.Device) (nvml.BridgeChipHierarchy, nvml.Return) {\n\tif mock.DeviceGetBridgeChipInfoFunc == nil {\n\t\tpanic(\"Interface.DeviceGetBridgeChipInfoFunc: method is nil but Interface.DeviceGetBridgeChipInfo was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetBridgeChipInfo.Lock()\n\tmock.calls.DeviceGetBridgeChipInfo = append(mock.calls.DeviceGetBridgeChipInfo, callInfo)\n\tmock.lockDeviceGetBridgeChipInfo.Unlock()\n\treturn mock.DeviceGetBridgeChipInfoFunc(device)\n}\n\n// DeviceGetBridgeChipInfoCalls gets all the calls that were made to DeviceGetBridgeChipInfo.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetBridgeChipInfoCalls())\nfunc (mock *Interface) DeviceGetBridgeChipInfoCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetBridgeChipInfo.RLock()\n\tcalls = mock.calls.DeviceGetBridgeChipInfo\n\tmock.lockDeviceGetBridgeChipInfo.RUnlock()\n\treturn calls\n}\n\n// DeviceGetBusType calls DeviceGetBusTypeFunc.\nfunc (mock *Interface) DeviceGetBusType(device nvml.Device) (nvml.BusType, nvml.Return) {\n\tif mock.DeviceGetBusTypeFunc == nil {\n\t\tpanic(\"Interface.DeviceGetBusTypeFunc: method is nil but Interface.DeviceGetBusType was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetBusType.Lock()\n\tmock.calls.DeviceGetBusType = append(mock.calls.DeviceGetBusType, callInfo)\n\tmock.lockDeviceGetBusType.Unlock()\n\treturn mock.DeviceGetBusTypeFunc(device)\n}\n\n// DeviceGetBusTypeCalls gets all the calls that were made to DeviceGetBusType.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetBusTypeCalls())\nfunc (mock *Interface) DeviceGetBusTypeCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetBusType.RLock()\n\tcalls = mock.calls.DeviceGetBusType\n\tmock.lockDeviceGetBusType.RUnlock()\n\treturn calls\n}\n\n// DeviceGetC2cModeInfoV calls DeviceGetC2cModeInfoVFunc.\nfunc (mock *Interface) DeviceGetC2cModeInfoV(device nvml.Device) nvml.C2cModeInfoHandler {\n\tif mock.DeviceGetC2cModeInfoVFunc == nil {\n\t\tpanic(\"Interface.DeviceGetC2cModeInfoVFunc: method is nil but Interface.DeviceGetC2cModeInfoV was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetC2cModeInfoV.Lock()\n\tmock.calls.DeviceGetC2cModeInfoV = append(mock.calls.DeviceGetC2cModeInfoV, callInfo)\n\tmock.lockDeviceGetC2cModeInfoV.Unlock()\n\treturn mock.DeviceGetC2cModeInfoVFunc(device)\n}\n\n// DeviceGetC2cModeInfoVCalls gets all the calls that were made to DeviceGetC2cModeInfoV.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetC2cModeInfoVCalls())\nfunc (mock *Interface) DeviceGetC2cModeInfoVCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetC2cModeInfoV.RLock()\n\tcalls = mock.calls.DeviceGetC2cModeInfoV\n\tmock.lockDeviceGetC2cModeInfoV.RUnlock()\n\treturn calls\n}\n\n// DeviceGetCapabilities calls DeviceGetCapabilitiesFunc.\nfunc (mock *Interface) DeviceGetCapabilities(device nvml.Device) (nvml.DeviceCapabilities, nvml.Return) {\n\tif mock.DeviceGetCapabilitiesFunc == nil {\n\t\tpanic(\"Interface.DeviceGetCapabilitiesFunc: method is nil but Interface.DeviceGetCapabilities was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetCapabilities.Lock()\n\tmock.calls.DeviceGetCapabilities = append(mock.calls.DeviceGetCapabilities, callInfo)\n\tmock.lockDeviceGetCapabilities.Unlock()\n\treturn mock.DeviceGetCapabilitiesFunc(device)\n}\n\n// DeviceGetCapabilitiesCalls gets all the calls that were made to DeviceGetCapabilities.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetCapabilitiesCalls())\nfunc (mock *Interface) DeviceGetCapabilitiesCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetCapabilities.RLock()\n\tcalls = mock.calls.DeviceGetCapabilities\n\tmock.lockDeviceGetCapabilities.RUnlock()\n\treturn calls\n}\n\n// DeviceGetClkMonStatus calls DeviceGetClkMonStatusFunc.\nfunc (mock *Interface) DeviceGetClkMonStatus(device nvml.Device) (nvml.ClkMonStatus, nvml.Return) {\n\tif mock.DeviceGetClkMonStatusFunc == nil {\n\t\tpanic(\"Interface.DeviceGetClkMonStatusFunc: method is nil but Interface.DeviceGetClkMonStatus was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetClkMonStatus.Lock()\n\tmock.calls.DeviceGetClkMonStatus = append(mock.calls.DeviceGetClkMonStatus, callInfo)\n\tmock.lockDeviceGetClkMonStatus.Unlock()\n\treturn mock.DeviceGetClkMonStatusFunc(device)\n}\n\n// DeviceGetClkMonStatusCalls gets all the calls that were made to DeviceGetClkMonStatus.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetClkMonStatusCalls())\nfunc (mock *Interface) DeviceGetClkMonStatusCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetClkMonStatus.RLock()\n\tcalls = mock.calls.DeviceGetClkMonStatus\n\tmock.lockDeviceGetClkMonStatus.RUnlock()\n\treturn calls\n}\n\n// DeviceGetClock calls DeviceGetClockFunc.\nfunc (mock *Interface) DeviceGetClock(device nvml.Device, clockType nvml.ClockType, clockId nvml.ClockId) (uint32, nvml.Return) {\n\tif mock.DeviceGetClockFunc == nil {\n\t\tpanic(\"Interface.DeviceGetClockFunc: method is nil but Interface.DeviceGetClock was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice    nvml.Device\n\t\tClockType nvml.ClockType\n\t\tClockId   nvml.ClockId\n\t}{\n\t\tDevice:    device,\n\t\tClockType: clockType,\n\t\tClockId:   clockId,\n\t}\n\tmock.lockDeviceGetClock.Lock()\n\tmock.calls.DeviceGetClock = append(mock.calls.DeviceGetClock, callInfo)\n\tmock.lockDeviceGetClock.Unlock()\n\treturn mock.DeviceGetClockFunc(device, clockType, clockId)\n}\n\n// DeviceGetClockCalls gets all the calls that were made to DeviceGetClock.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetClockCalls())\nfunc (mock *Interface) DeviceGetClockCalls() []struct {\n\tDevice    nvml.Device\n\tClockType nvml.ClockType\n\tClockId   nvml.ClockId\n} {\n\tvar calls []struct {\n\t\tDevice    nvml.Device\n\t\tClockType nvml.ClockType\n\t\tClockId   nvml.ClockId\n\t}\n\tmock.lockDeviceGetClock.RLock()\n\tcalls = mock.calls.DeviceGetClock\n\tmock.lockDeviceGetClock.RUnlock()\n\treturn calls\n}\n\n// DeviceGetClockInfo calls DeviceGetClockInfoFunc.\nfunc (mock *Interface) DeviceGetClockInfo(device nvml.Device, clockType nvml.ClockType) (uint32, nvml.Return) {\n\tif mock.DeviceGetClockInfoFunc == nil {\n\t\tpanic(\"Interface.DeviceGetClockInfoFunc: method is nil but Interface.DeviceGetClockInfo was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice    nvml.Device\n\t\tClockType nvml.ClockType\n\t}{\n\t\tDevice:    device,\n\t\tClockType: clockType,\n\t}\n\tmock.lockDeviceGetClockInfo.Lock()\n\tmock.calls.DeviceGetClockInfo = append(mock.calls.DeviceGetClockInfo, callInfo)\n\tmock.lockDeviceGetClockInfo.Unlock()\n\treturn mock.DeviceGetClockInfoFunc(device, clockType)\n}\n\n// DeviceGetClockInfoCalls gets all the calls that were made to DeviceGetClockInfo.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetClockInfoCalls())\nfunc (mock *Interface) DeviceGetClockInfoCalls() []struct {\n\tDevice    nvml.Device\n\tClockType nvml.ClockType\n} {\n\tvar calls []struct {\n\t\tDevice    nvml.Device\n\t\tClockType nvml.ClockType\n\t}\n\tmock.lockDeviceGetClockInfo.RLock()\n\tcalls = mock.calls.DeviceGetClockInfo\n\tmock.lockDeviceGetClockInfo.RUnlock()\n\treturn calls\n}\n\n// DeviceGetClockOffsets calls DeviceGetClockOffsetsFunc.\nfunc (mock *Interface) DeviceGetClockOffsets(device nvml.Device) (nvml.ClockOffset, nvml.Return) {\n\tif mock.DeviceGetClockOffsetsFunc == nil {\n\t\tpanic(\"Interface.DeviceGetClockOffsetsFunc: method is nil but Interface.DeviceGetClockOffsets was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetClockOffsets.Lock()\n\tmock.calls.DeviceGetClockOffsets = append(mock.calls.DeviceGetClockOffsets, callInfo)\n\tmock.lockDeviceGetClockOffsets.Unlock()\n\treturn mock.DeviceGetClockOffsetsFunc(device)\n}\n\n// DeviceGetClockOffsetsCalls gets all the calls that were made to DeviceGetClockOffsets.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetClockOffsetsCalls())\nfunc (mock *Interface) DeviceGetClockOffsetsCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetClockOffsets.RLock()\n\tcalls = mock.calls.DeviceGetClockOffsets\n\tmock.lockDeviceGetClockOffsets.RUnlock()\n\treturn calls\n}\n\n// DeviceGetComputeInstanceId calls DeviceGetComputeInstanceIdFunc.\nfunc (mock *Interface) DeviceGetComputeInstanceId(device nvml.Device) (int, nvml.Return) {\n\tif mock.DeviceGetComputeInstanceIdFunc == nil {\n\t\tpanic(\"Interface.DeviceGetComputeInstanceIdFunc: method is nil but Interface.DeviceGetComputeInstanceId was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetComputeInstanceId.Lock()\n\tmock.calls.DeviceGetComputeInstanceId = append(mock.calls.DeviceGetComputeInstanceId, callInfo)\n\tmock.lockDeviceGetComputeInstanceId.Unlock()\n\treturn mock.DeviceGetComputeInstanceIdFunc(device)\n}\n\n// DeviceGetComputeInstanceIdCalls gets all the calls that were made to DeviceGetComputeInstanceId.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetComputeInstanceIdCalls())\nfunc (mock *Interface) DeviceGetComputeInstanceIdCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetComputeInstanceId.RLock()\n\tcalls = mock.calls.DeviceGetComputeInstanceId\n\tmock.lockDeviceGetComputeInstanceId.RUnlock()\n\treturn calls\n}\n\n// DeviceGetComputeMode calls DeviceGetComputeModeFunc.\nfunc (mock *Interface) DeviceGetComputeMode(device nvml.Device) (nvml.ComputeMode, nvml.Return) {\n\tif mock.DeviceGetComputeModeFunc == nil {\n\t\tpanic(\"Interface.DeviceGetComputeModeFunc: method is nil but Interface.DeviceGetComputeMode was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetComputeMode.Lock()\n\tmock.calls.DeviceGetComputeMode = append(mock.calls.DeviceGetComputeMode, callInfo)\n\tmock.lockDeviceGetComputeMode.Unlock()\n\treturn mock.DeviceGetComputeModeFunc(device)\n}\n\n// DeviceGetComputeModeCalls gets all the calls that were made to DeviceGetComputeMode.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetComputeModeCalls())\nfunc (mock *Interface) DeviceGetComputeModeCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetComputeMode.RLock()\n\tcalls = mock.calls.DeviceGetComputeMode\n\tmock.lockDeviceGetComputeMode.RUnlock()\n\treturn calls\n}\n\n// DeviceGetComputeRunningProcesses calls DeviceGetComputeRunningProcessesFunc.\nfunc (mock *Interface) DeviceGetComputeRunningProcesses(device nvml.Device) ([]nvml.ProcessInfo, nvml.Return) {\n\tif mock.DeviceGetComputeRunningProcessesFunc == nil {\n\t\tpanic(\"Interface.DeviceGetComputeRunningProcessesFunc: method is nil but Interface.DeviceGetComputeRunningProcesses was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetComputeRunningProcesses.Lock()\n\tmock.calls.DeviceGetComputeRunningProcesses = append(mock.calls.DeviceGetComputeRunningProcesses, callInfo)\n\tmock.lockDeviceGetComputeRunningProcesses.Unlock()\n\treturn mock.DeviceGetComputeRunningProcessesFunc(device)\n}\n\n// DeviceGetComputeRunningProcessesCalls gets all the calls that were made to DeviceGetComputeRunningProcesses.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetComputeRunningProcessesCalls())\nfunc (mock *Interface) DeviceGetComputeRunningProcessesCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetComputeRunningProcesses.RLock()\n\tcalls = mock.calls.DeviceGetComputeRunningProcesses\n\tmock.lockDeviceGetComputeRunningProcesses.RUnlock()\n\treturn calls\n}\n\n// DeviceGetConfComputeGpuAttestationReport calls DeviceGetConfComputeGpuAttestationReportFunc.\nfunc (mock *Interface) DeviceGetConfComputeGpuAttestationReport(device nvml.Device, confComputeGpuAttestationReport *nvml.ConfComputeGpuAttestationReport) nvml.Return {\n\tif mock.DeviceGetConfComputeGpuAttestationReportFunc == nil {\n\t\tpanic(\"Interface.DeviceGetConfComputeGpuAttestationReportFunc: method is nil but Interface.DeviceGetConfComputeGpuAttestationReport was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice                          nvml.Device\n\t\tConfComputeGpuAttestationReport *nvml.ConfComputeGpuAttestationReport\n\t}{\n\t\tDevice:                          device,\n\t\tConfComputeGpuAttestationReport: confComputeGpuAttestationReport,\n\t}\n\tmock.lockDeviceGetConfComputeGpuAttestationReport.Lock()\n\tmock.calls.DeviceGetConfComputeGpuAttestationReport = append(mock.calls.DeviceGetConfComputeGpuAttestationReport, callInfo)\n\tmock.lockDeviceGetConfComputeGpuAttestationReport.Unlock()\n\treturn mock.DeviceGetConfComputeGpuAttestationReportFunc(device, confComputeGpuAttestationReport)\n}\n\n// DeviceGetConfComputeGpuAttestationReportCalls gets all the calls that were made to DeviceGetConfComputeGpuAttestationReport.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetConfComputeGpuAttestationReportCalls())\nfunc (mock *Interface) DeviceGetConfComputeGpuAttestationReportCalls() []struct {\n\tDevice                          nvml.Device\n\tConfComputeGpuAttestationReport *nvml.ConfComputeGpuAttestationReport\n} {\n\tvar calls []struct {\n\t\tDevice                          nvml.Device\n\t\tConfComputeGpuAttestationReport *nvml.ConfComputeGpuAttestationReport\n\t}\n\tmock.lockDeviceGetConfComputeGpuAttestationReport.RLock()\n\tcalls = mock.calls.DeviceGetConfComputeGpuAttestationReport\n\tmock.lockDeviceGetConfComputeGpuAttestationReport.RUnlock()\n\treturn calls\n}\n\n// DeviceGetConfComputeGpuCertificate calls DeviceGetConfComputeGpuCertificateFunc.\nfunc (mock *Interface) DeviceGetConfComputeGpuCertificate(device nvml.Device) (nvml.ConfComputeGpuCertificate, nvml.Return) {\n\tif mock.DeviceGetConfComputeGpuCertificateFunc == nil {\n\t\tpanic(\"Interface.DeviceGetConfComputeGpuCertificateFunc: method is nil but Interface.DeviceGetConfComputeGpuCertificate was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetConfComputeGpuCertificate.Lock()\n\tmock.calls.DeviceGetConfComputeGpuCertificate = append(mock.calls.DeviceGetConfComputeGpuCertificate, callInfo)\n\tmock.lockDeviceGetConfComputeGpuCertificate.Unlock()\n\treturn mock.DeviceGetConfComputeGpuCertificateFunc(device)\n}\n\n// DeviceGetConfComputeGpuCertificateCalls gets all the calls that were made to DeviceGetConfComputeGpuCertificate.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetConfComputeGpuCertificateCalls())\nfunc (mock *Interface) DeviceGetConfComputeGpuCertificateCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetConfComputeGpuCertificate.RLock()\n\tcalls = mock.calls.DeviceGetConfComputeGpuCertificate\n\tmock.lockDeviceGetConfComputeGpuCertificate.RUnlock()\n\treturn calls\n}\n\n// DeviceGetConfComputeMemSizeInfo calls DeviceGetConfComputeMemSizeInfoFunc.\nfunc (mock *Interface) DeviceGetConfComputeMemSizeInfo(device nvml.Device) (nvml.ConfComputeMemSizeInfo, nvml.Return) {\n\tif mock.DeviceGetConfComputeMemSizeInfoFunc == nil {\n\t\tpanic(\"Interface.DeviceGetConfComputeMemSizeInfoFunc: method is nil but Interface.DeviceGetConfComputeMemSizeInfo was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetConfComputeMemSizeInfo.Lock()\n\tmock.calls.DeviceGetConfComputeMemSizeInfo = append(mock.calls.DeviceGetConfComputeMemSizeInfo, callInfo)\n\tmock.lockDeviceGetConfComputeMemSizeInfo.Unlock()\n\treturn mock.DeviceGetConfComputeMemSizeInfoFunc(device)\n}\n\n// DeviceGetConfComputeMemSizeInfoCalls gets all the calls that were made to DeviceGetConfComputeMemSizeInfo.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetConfComputeMemSizeInfoCalls())\nfunc (mock *Interface) DeviceGetConfComputeMemSizeInfoCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetConfComputeMemSizeInfo.RLock()\n\tcalls = mock.calls.DeviceGetConfComputeMemSizeInfo\n\tmock.lockDeviceGetConfComputeMemSizeInfo.RUnlock()\n\treturn calls\n}\n\n// DeviceGetConfComputeProtectedMemoryUsage calls DeviceGetConfComputeProtectedMemoryUsageFunc.\nfunc (mock *Interface) DeviceGetConfComputeProtectedMemoryUsage(device nvml.Device) (nvml.Memory, nvml.Return) {\n\tif mock.DeviceGetConfComputeProtectedMemoryUsageFunc == nil {\n\t\tpanic(\"Interface.DeviceGetConfComputeProtectedMemoryUsageFunc: method is nil but Interface.DeviceGetConfComputeProtectedMemoryUsage was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetConfComputeProtectedMemoryUsage.Lock()\n\tmock.calls.DeviceGetConfComputeProtectedMemoryUsage = append(mock.calls.DeviceGetConfComputeProtectedMemoryUsage, callInfo)\n\tmock.lockDeviceGetConfComputeProtectedMemoryUsage.Unlock()\n\treturn mock.DeviceGetConfComputeProtectedMemoryUsageFunc(device)\n}\n\n// DeviceGetConfComputeProtectedMemoryUsageCalls gets all the calls that were made to DeviceGetConfComputeProtectedMemoryUsage.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetConfComputeProtectedMemoryUsageCalls())\nfunc (mock *Interface) DeviceGetConfComputeProtectedMemoryUsageCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetConfComputeProtectedMemoryUsage.RLock()\n\tcalls = mock.calls.DeviceGetConfComputeProtectedMemoryUsage\n\tmock.lockDeviceGetConfComputeProtectedMemoryUsage.RUnlock()\n\treturn calls\n}\n\n// DeviceGetCoolerInfo calls DeviceGetCoolerInfoFunc.\nfunc (mock *Interface) DeviceGetCoolerInfo(device nvml.Device) (nvml.CoolerInfo, nvml.Return) {\n\tif mock.DeviceGetCoolerInfoFunc == nil {\n\t\tpanic(\"Interface.DeviceGetCoolerInfoFunc: method is nil but Interface.DeviceGetCoolerInfo was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetCoolerInfo.Lock()\n\tmock.calls.DeviceGetCoolerInfo = append(mock.calls.DeviceGetCoolerInfo, callInfo)\n\tmock.lockDeviceGetCoolerInfo.Unlock()\n\treturn mock.DeviceGetCoolerInfoFunc(device)\n}\n\n// DeviceGetCoolerInfoCalls gets all the calls that were made to DeviceGetCoolerInfo.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetCoolerInfoCalls())\nfunc (mock *Interface) DeviceGetCoolerInfoCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetCoolerInfo.RLock()\n\tcalls = mock.calls.DeviceGetCoolerInfo\n\tmock.lockDeviceGetCoolerInfo.RUnlock()\n\treturn calls\n}\n\n// DeviceGetCount calls DeviceGetCountFunc.\nfunc (mock *Interface) DeviceGetCount() (int, nvml.Return) {\n\tif mock.DeviceGetCountFunc == nil {\n\t\tpanic(\"Interface.DeviceGetCountFunc: method is nil but Interface.DeviceGetCount was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockDeviceGetCount.Lock()\n\tmock.calls.DeviceGetCount = append(mock.calls.DeviceGetCount, callInfo)\n\tmock.lockDeviceGetCount.Unlock()\n\treturn mock.DeviceGetCountFunc()\n}\n\n// DeviceGetCountCalls gets all the calls that were made to DeviceGetCount.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetCountCalls())\nfunc (mock *Interface) DeviceGetCountCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockDeviceGetCount.RLock()\n\tcalls = mock.calls.DeviceGetCount\n\tmock.lockDeviceGetCount.RUnlock()\n\treturn calls\n}\n\n// DeviceGetCpuAffinity calls DeviceGetCpuAffinityFunc.\nfunc (mock *Interface) DeviceGetCpuAffinity(device nvml.Device, n int) ([]uint, nvml.Return) {\n\tif mock.DeviceGetCpuAffinityFunc == nil {\n\t\tpanic(\"Interface.DeviceGetCpuAffinityFunc: method is nil but Interface.DeviceGetCpuAffinity was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t\tN      int\n\t}{\n\t\tDevice: device,\n\t\tN:      n,\n\t}\n\tmock.lockDeviceGetCpuAffinity.Lock()\n\tmock.calls.DeviceGetCpuAffinity = append(mock.calls.DeviceGetCpuAffinity, callInfo)\n\tmock.lockDeviceGetCpuAffinity.Unlock()\n\treturn mock.DeviceGetCpuAffinityFunc(device, n)\n}\n\n// DeviceGetCpuAffinityCalls gets all the calls that were made to DeviceGetCpuAffinity.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetCpuAffinityCalls())\nfunc (mock *Interface) DeviceGetCpuAffinityCalls() []struct {\n\tDevice nvml.Device\n\tN      int\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t\tN      int\n\t}\n\tmock.lockDeviceGetCpuAffinity.RLock()\n\tcalls = mock.calls.DeviceGetCpuAffinity\n\tmock.lockDeviceGetCpuAffinity.RUnlock()\n\treturn calls\n}\n\n// DeviceGetCpuAffinityWithinScope calls DeviceGetCpuAffinityWithinScopeFunc.\nfunc (mock *Interface) DeviceGetCpuAffinityWithinScope(device nvml.Device, n int, affinityScope nvml.AffinityScope) ([]uint, nvml.Return) {\n\tif mock.DeviceGetCpuAffinityWithinScopeFunc == nil {\n\t\tpanic(\"Interface.DeviceGetCpuAffinityWithinScopeFunc: method is nil but Interface.DeviceGetCpuAffinityWithinScope was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice        nvml.Device\n\t\tN             int\n\t\tAffinityScope nvml.AffinityScope\n\t}{\n\t\tDevice:        device,\n\t\tN:             n,\n\t\tAffinityScope: affinityScope,\n\t}\n\tmock.lockDeviceGetCpuAffinityWithinScope.Lock()\n\tmock.calls.DeviceGetCpuAffinityWithinScope = append(mock.calls.DeviceGetCpuAffinityWithinScope, callInfo)\n\tmock.lockDeviceGetCpuAffinityWithinScope.Unlock()\n\treturn mock.DeviceGetCpuAffinityWithinScopeFunc(device, n, affinityScope)\n}\n\n// DeviceGetCpuAffinityWithinScopeCalls gets all the calls that were made to DeviceGetCpuAffinityWithinScope.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetCpuAffinityWithinScopeCalls())\nfunc (mock *Interface) DeviceGetCpuAffinityWithinScopeCalls() []struct {\n\tDevice        nvml.Device\n\tN             int\n\tAffinityScope nvml.AffinityScope\n} {\n\tvar calls []struct {\n\t\tDevice        nvml.Device\n\t\tN             int\n\t\tAffinityScope nvml.AffinityScope\n\t}\n\tmock.lockDeviceGetCpuAffinityWithinScope.RLock()\n\tcalls = mock.calls.DeviceGetCpuAffinityWithinScope\n\tmock.lockDeviceGetCpuAffinityWithinScope.RUnlock()\n\treturn calls\n}\n\n// DeviceGetCreatableVgpus calls DeviceGetCreatableVgpusFunc.\nfunc (mock *Interface) DeviceGetCreatableVgpus(device nvml.Device) ([]nvml.VgpuTypeId, nvml.Return) {\n\tif mock.DeviceGetCreatableVgpusFunc == nil {\n\t\tpanic(\"Interface.DeviceGetCreatableVgpusFunc: method is nil but Interface.DeviceGetCreatableVgpus was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetCreatableVgpus.Lock()\n\tmock.calls.DeviceGetCreatableVgpus = append(mock.calls.DeviceGetCreatableVgpus, callInfo)\n\tmock.lockDeviceGetCreatableVgpus.Unlock()\n\treturn mock.DeviceGetCreatableVgpusFunc(device)\n}\n\n// DeviceGetCreatableVgpusCalls gets all the calls that were made to DeviceGetCreatableVgpus.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetCreatableVgpusCalls())\nfunc (mock *Interface) DeviceGetCreatableVgpusCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetCreatableVgpus.RLock()\n\tcalls = mock.calls.DeviceGetCreatableVgpus\n\tmock.lockDeviceGetCreatableVgpus.RUnlock()\n\treturn calls\n}\n\n// DeviceGetCudaComputeCapability calls DeviceGetCudaComputeCapabilityFunc.\nfunc (mock *Interface) DeviceGetCudaComputeCapability(device nvml.Device) (int, int, nvml.Return) {\n\tif mock.DeviceGetCudaComputeCapabilityFunc == nil {\n\t\tpanic(\"Interface.DeviceGetCudaComputeCapabilityFunc: method is nil but Interface.DeviceGetCudaComputeCapability was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetCudaComputeCapability.Lock()\n\tmock.calls.DeviceGetCudaComputeCapability = append(mock.calls.DeviceGetCudaComputeCapability, callInfo)\n\tmock.lockDeviceGetCudaComputeCapability.Unlock()\n\treturn mock.DeviceGetCudaComputeCapabilityFunc(device)\n}\n\n// DeviceGetCudaComputeCapabilityCalls gets all the calls that were made to DeviceGetCudaComputeCapability.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetCudaComputeCapabilityCalls())\nfunc (mock *Interface) DeviceGetCudaComputeCapabilityCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetCudaComputeCapability.RLock()\n\tcalls = mock.calls.DeviceGetCudaComputeCapability\n\tmock.lockDeviceGetCudaComputeCapability.RUnlock()\n\treturn calls\n}\n\n// DeviceGetCurrPcieLinkGeneration calls DeviceGetCurrPcieLinkGenerationFunc.\nfunc (mock *Interface) DeviceGetCurrPcieLinkGeneration(device nvml.Device) (int, nvml.Return) {\n\tif mock.DeviceGetCurrPcieLinkGenerationFunc == nil {\n\t\tpanic(\"Interface.DeviceGetCurrPcieLinkGenerationFunc: method is nil but Interface.DeviceGetCurrPcieLinkGeneration was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetCurrPcieLinkGeneration.Lock()\n\tmock.calls.DeviceGetCurrPcieLinkGeneration = append(mock.calls.DeviceGetCurrPcieLinkGeneration, callInfo)\n\tmock.lockDeviceGetCurrPcieLinkGeneration.Unlock()\n\treturn mock.DeviceGetCurrPcieLinkGenerationFunc(device)\n}\n\n// DeviceGetCurrPcieLinkGenerationCalls gets all the calls that were made to DeviceGetCurrPcieLinkGeneration.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetCurrPcieLinkGenerationCalls())\nfunc (mock *Interface) DeviceGetCurrPcieLinkGenerationCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetCurrPcieLinkGeneration.RLock()\n\tcalls = mock.calls.DeviceGetCurrPcieLinkGeneration\n\tmock.lockDeviceGetCurrPcieLinkGeneration.RUnlock()\n\treturn calls\n}\n\n// DeviceGetCurrPcieLinkWidth calls DeviceGetCurrPcieLinkWidthFunc.\nfunc (mock *Interface) DeviceGetCurrPcieLinkWidth(device nvml.Device) (int, nvml.Return) {\n\tif mock.DeviceGetCurrPcieLinkWidthFunc == nil {\n\t\tpanic(\"Interface.DeviceGetCurrPcieLinkWidthFunc: method is nil but Interface.DeviceGetCurrPcieLinkWidth was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetCurrPcieLinkWidth.Lock()\n\tmock.calls.DeviceGetCurrPcieLinkWidth = append(mock.calls.DeviceGetCurrPcieLinkWidth, callInfo)\n\tmock.lockDeviceGetCurrPcieLinkWidth.Unlock()\n\treturn mock.DeviceGetCurrPcieLinkWidthFunc(device)\n}\n\n// DeviceGetCurrPcieLinkWidthCalls gets all the calls that were made to DeviceGetCurrPcieLinkWidth.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetCurrPcieLinkWidthCalls())\nfunc (mock *Interface) DeviceGetCurrPcieLinkWidthCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetCurrPcieLinkWidth.RLock()\n\tcalls = mock.calls.DeviceGetCurrPcieLinkWidth\n\tmock.lockDeviceGetCurrPcieLinkWidth.RUnlock()\n\treturn calls\n}\n\n// DeviceGetCurrentClockFreqs calls DeviceGetCurrentClockFreqsFunc.\nfunc (mock *Interface) DeviceGetCurrentClockFreqs(device nvml.Device) (nvml.DeviceCurrentClockFreqs, nvml.Return) {\n\tif mock.DeviceGetCurrentClockFreqsFunc == nil {\n\t\tpanic(\"Interface.DeviceGetCurrentClockFreqsFunc: method is nil but Interface.DeviceGetCurrentClockFreqs was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetCurrentClockFreqs.Lock()\n\tmock.calls.DeviceGetCurrentClockFreqs = append(mock.calls.DeviceGetCurrentClockFreqs, callInfo)\n\tmock.lockDeviceGetCurrentClockFreqs.Unlock()\n\treturn mock.DeviceGetCurrentClockFreqsFunc(device)\n}\n\n// DeviceGetCurrentClockFreqsCalls gets all the calls that were made to DeviceGetCurrentClockFreqs.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetCurrentClockFreqsCalls())\nfunc (mock *Interface) DeviceGetCurrentClockFreqsCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetCurrentClockFreqs.RLock()\n\tcalls = mock.calls.DeviceGetCurrentClockFreqs\n\tmock.lockDeviceGetCurrentClockFreqs.RUnlock()\n\treturn calls\n}\n\n// DeviceGetCurrentClocksEventReasons calls DeviceGetCurrentClocksEventReasonsFunc.\nfunc (mock *Interface) DeviceGetCurrentClocksEventReasons(device nvml.Device) (uint64, nvml.Return) {\n\tif mock.DeviceGetCurrentClocksEventReasonsFunc == nil {\n\t\tpanic(\"Interface.DeviceGetCurrentClocksEventReasonsFunc: method is nil but Interface.DeviceGetCurrentClocksEventReasons was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetCurrentClocksEventReasons.Lock()\n\tmock.calls.DeviceGetCurrentClocksEventReasons = append(mock.calls.DeviceGetCurrentClocksEventReasons, callInfo)\n\tmock.lockDeviceGetCurrentClocksEventReasons.Unlock()\n\treturn mock.DeviceGetCurrentClocksEventReasonsFunc(device)\n}\n\n// DeviceGetCurrentClocksEventReasonsCalls gets all the calls that were made to DeviceGetCurrentClocksEventReasons.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetCurrentClocksEventReasonsCalls())\nfunc (mock *Interface) DeviceGetCurrentClocksEventReasonsCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetCurrentClocksEventReasons.RLock()\n\tcalls = mock.calls.DeviceGetCurrentClocksEventReasons\n\tmock.lockDeviceGetCurrentClocksEventReasons.RUnlock()\n\treturn calls\n}\n\n// DeviceGetCurrentClocksThrottleReasons calls DeviceGetCurrentClocksThrottleReasonsFunc.\nfunc (mock *Interface) DeviceGetCurrentClocksThrottleReasons(device nvml.Device) (uint64, nvml.Return) {\n\tif mock.DeviceGetCurrentClocksThrottleReasonsFunc == nil {\n\t\tpanic(\"Interface.DeviceGetCurrentClocksThrottleReasonsFunc: method is nil but Interface.DeviceGetCurrentClocksThrottleReasons was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetCurrentClocksThrottleReasons.Lock()\n\tmock.calls.DeviceGetCurrentClocksThrottleReasons = append(mock.calls.DeviceGetCurrentClocksThrottleReasons, callInfo)\n\tmock.lockDeviceGetCurrentClocksThrottleReasons.Unlock()\n\treturn mock.DeviceGetCurrentClocksThrottleReasonsFunc(device)\n}\n\n// DeviceGetCurrentClocksThrottleReasonsCalls gets all the calls that were made to DeviceGetCurrentClocksThrottleReasons.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetCurrentClocksThrottleReasonsCalls())\nfunc (mock *Interface) DeviceGetCurrentClocksThrottleReasonsCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetCurrentClocksThrottleReasons.RLock()\n\tcalls = mock.calls.DeviceGetCurrentClocksThrottleReasons\n\tmock.lockDeviceGetCurrentClocksThrottleReasons.RUnlock()\n\treturn calls\n}\n\n// DeviceGetDecoderUtilization calls DeviceGetDecoderUtilizationFunc.\nfunc (mock *Interface) DeviceGetDecoderUtilization(device nvml.Device) (uint32, uint32, nvml.Return) {\n\tif mock.DeviceGetDecoderUtilizationFunc == nil {\n\t\tpanic(\"Interface.DeviceGetDecoderUtilizationFunc: method is nil but Interface.DeviceGetDecoderUtilization was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetDecoderUtilization.Lock()\n\tmock.calls.DeviceGetDecoderUtilization = append(mock.calls.DeviceGetDecoderUtilization, callInfo)\n\tmock.lockDeviceGetDecoderUtilization.Unlock()\n\treturn mock.DeviceGetDecoderUtilizationFunc(device)\n}\n\n// DeviceGetDecoderUtilizationCalls gets all the calls that were made to DeviceGetDecoderUtilization.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetDecoderUtilizationCalls())\nfunc (mock *Interface) DeviceGetDecoderUtilizationCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetDecoderUtilization.RLock()\n\tcalls = mock.calls.DeviceGetDecoderUtilization\n\tmock.lockDeviceGetDecoderUtilization.RUnlock()\n\treturn calls\n}\n\n// DeviceGetDefaultApplicationsClock calls DeviceGetDefaultApplicationsClockFunc.\nfunc (mock *Interface) DeviceGetDefaultApplicationsClock(device nvml.Device, clockType nvml.ClockType) (uint32, nvml.Return) {\n\tif mock.DeviceGetDefaultApplicationsClockFunc == nil {\n\t\tpanic(\"Interface.DeviceGetDefaultApplicationsClockFunc: method is nil but Interface.DeviceGetDefaultApplicationsClock was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice    nvml.Device\n\t\tClockType nvml.ClockType\n\t}{\n\t\tDevice:    device,\n\t\tClockType: clockType,\n\t}\n\tmock.lockDeviceGetDefaultApplicationsClock.Lock()\n\tmock.calls.DeviceGetDefaultApplicationsClock = append(mock.calls.DeviceGetDefaultApplicationsClock, callInfo)\n\tmock.lockDeviceGetDefaultApplicationsClock.Unlock()\n\treturn mock.DeviceGetDefaultApplicationsClockFunc(device, clockType)\n}\n\n// DeviceGetDefaultApplicationsClockCalls gets all the calls that were made to DeviceGetDefaultApplicationsClock.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetDefaultApplicationsClockCalls())\nfunc (mock *Interface) DeviceGetDefaultApplicationsClockCalls() []struct {\n\tDevice    nvml.Device\n\tClockType nvml.ClockType\n} {\n\tvar calls []struct {\n\t\tDevice    nvml.Device\n\t\tClockType nvml.ClockType\n\t}\n\tmock.lockDeviceGetDefaultApplicationsClock.RLock()\n\tcalls = mock.calls.DeviceGetDefaultApplicationsClock\n\tmock.lockDeviceGetDefaultApplicationsClock.RUnlock()\n\treturn calls\n}\n\n// DeviceGetDefaultEccMode calls DeviceGetDefaultEccModeFunc.\nfunc (mock *Interface) DeviceGetDefaultEccMode(device nvml.Device) (nvml.EnableState, nvml.Return) {\n\tif mock.DeviceGetDefaultEccModeFunc == nil {\n\t\tpanic(\"Interface.DeviceGetDefaultEccModeFunc: method is nil but Interface.DeviceGetDefaultEccMode was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetDefaultEccMode.Lock()\n\tmock.calls.DeviceGetDefaultEccMode = append(mock.calls.DeviceGetDefaultEccMode, callInfo)\n\tmock.lockDeviceGetDefaultEccMode.Unlock()\n\treturn mock.DeviceGetDefaultEccModeFunc(device)\n}\n\n// DeviceGetDefaultEccModeCalls gets all the calls that were made to DeviceGetDefaultEccMode.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetDefaultEccModeCalls())\nfunc (mock *Interface) DeviceGetDefaultEccModeCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetDefaultEccMode.RLock()\n\tcalls = mock.calls.DeviceGetDefaultEccMode\n\tmock.lockDeviceGetDefaultEccMode.RUnlock()\n\treturn calls\n}\n\n// DeviceGetDetailedEccErrors calls DeviceGetDetailedEccErrorsFunc.\nfunc (mock *Interface) DeviceGetDetailedEccErrors(device nvml.Device, memoryErrorType nvml.MemoryErrorType, eccCounterType nvml.EccCounterType) (nvml.EccErrorCounts, nvml.Return) {\n\tif mock.DeviceGetDetailedEccErrorsFunc == nil {\n\t\tpanic(\"Interface.DeviceGetDetailedEccErrorsFunc: method is nil but Interface.DeviceGetDetailedEccErrors was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice          nvml.Device\n\t\tMemoryErrorType nvml.MemoryErrorType\n\t\tEccCounterType  nvml.EccCounterType\n\t}{\n\t\tDevice:          device,\n\t\tMemoryErrorType: memoryErrorType,\n\t\tEccCounterType:  eccCounterType,\n\t}\n\tmock.lockDeviceGetDetailedEccErrors.Lock()\n\tmock.calls.DeviceGetDetailedEccErrors = append(mock.calls.DeviceGetDetailedEccErrors, callInfo)\n\tmock.lockDeviceGetDetailedEccErrors.Unlock()\n\treturn mock.DeviceGetDetailedEccErrorsFunc(device, memoryErrorType, eccCounterType)\n}\n\n// DeviceGetDetailedEccErrorsCalls gets all the calls that were made to DeviceGetDetailedEccErrors.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetDetailedEccErrorsCalls())\nfunc (mock *Interface) DeviceGetDetailedEccErrorsCalls() []struct {\n\tDevice          nvml.Device\n\tMemoryErrorType nvml.MemoryErrorType\n\tEccCounterType  nvml.EccCounterType\n} {\n\tvar calls []struct {\n\t\tDevice          nvml.Device\n\t\tMemoryErrorType nvml.MemoryErrorType\n\t\tEccCounterType  nvml.EccCounterType\n\t}\n\tmock.lockDeviceGetDetailedEccErrors.RLock()\n\tcalls = mock.calls.DeviceGetDetailedEccErrors\n\tmock.lockDeviceGetDetailedEccErrors.RUnlock()\n\treturn calls\n}\n\n// DeviceGetDeviceHandleFromMigDeviceHandle calls DeviceGetDeviceHandleFromMigDeviceHandleFunc.\nfunc (mock *Interface) DeviceGetDeviceHandleFromMigDeviceHandle(device nvml.Device) (nvml.Device, nvml.Return) {\n\tif mock.DeviceGetDeviceHandleFromMigDeviceHandleFunc == nil {\n\t\tpanic(\"Interface.DeviceGetDeviceHandleFromMigDeviceHandleFunc: method is nil but Interface.DeviceGetDeviceHandleFromMigDeviceHandle was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetDeviceHandleFromMigDeviceHandle.Lock()\n\tmock.calls.DeviceGetDeviceHandleFromMigDeviceHandle = append(mock.calls.DeviceGetDeviceHandleFromMigDeviceHandle, callInfo)\n\tmock.lockDeviceGetDeviceHandleFromMigDeviceHandle.Unlock()\n\treturn mock.DeviceGetDeviceHandleFromMigDeviceHandleFunc(device)\n}\n\n// DeviceGetDeviceHandleFromMigDeviceHandleCalls gets all the calls that were made to DeviceGetDeviceHandleFromMigDeviceHandle.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetDeviceHandleFromMigDeviceHandleCalls())\nfunc (mock *Interface) DeviceGetDeviceHandleFromMigDeviceHandleCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetDeviceHandleFromMigDeviceHandle.RLock()\n\tcalls = mock.calls.DeviceGetDeviceHandleFromMigDeviceHandle\n\tmock.lockDeviceGetDeviceHandleFromMigDeviceHandle.RUnlock()\n\treturn calls\n}\n\n// DeviceGetDisplayActive calls DeviceGetDisplayActiveFunc.\nfunc (mock *Interface) DeviceGetDisplayActive(device nvml.Device) (nvml.EnableState, nvml.Return) {\n\tif mock.DeviceGetDisplayActiveFunc == nil {\n\t\tpanic(\"Interface.DeviceGetDisplayActiveFunc: method is nil but Interface.DeviceGetDisplayActive was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetDisplayActive.Lock()\n\tmock.calls.DeviceGetDisplayActive = append(mock.calls.DeviceGetDisplayActive, callInfo)\n\tmock.lockDeviceGetDisplayActive.Unlock()\n\treturn mock.DeviceGetDisplayActiveFunc(device)\n}\n\n// DeviceGetDisplayActiveCalls gets all the calls that were made to DeviceGetDisplayActive.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetDisplayActiveCalls())\nfunc (mock *Interface) DeviceGetDisplayActiveCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetDisplayActive.RLock()\n\tcalls = mock.calls.DeviceGetDisplayActive\n\tmock.lockDeviceGetDisplayActive.RUnlock()\n\treturn calls\n}\n\n// DeviceGetDisplayMode calls DeviceGetDisplayModeFunc.\nfunc (mock *Interface) DeviceGetDisplayMode(device nvml.Device) (nvml.EnableState, nvml.Return) {\n\tif mock.DeviceGetDisplayModeFunc == nil {\n\t\tpanic(\"Interface.DeviceGetDisplayModeFunc: method is nil but Interface.DeviceGetDisplayMode was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetDisplayMode.Lock()\n\tmock.calls.DeviceGetDisplayMode = append(mock.calls.DeviceGetDisplayMode, callInfo)\n\tmock.lockDeviceGetDisplayMode.Unlock()\n\treturn mock.DeviceGetDisplayModeFunc(device)\n}\n\n// DeviceGetDisplayModeCalls gets all the calls that were made to DeviceGetDisplayMode.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetDisplayModeCalls())\nfunc (mock *Interface) DeviceGetDisplayModeCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetDisplayMode.RLock()\n\tcalls = mock.calls.DeviceGetDisplayMode\n\tmock.lockDeviceGetDisplayMode.RUnlock()\n\treturn calls\n}\n\n// DeviceGetDramEncryptionMode calls DeviceGetDramEncryptionModeFunc.\nfunc (mock *Interface) DeviceGetDramEncryptionMode(device nvml.Device) (nvml.DramEncryptionInfo, nvml.DramEncryptionInfo, nvml.Return) {\n\tif mock.DeviceGetDramEncryptionModeFunc == nil {\n\t\tpanic(\"Interface.DeviceGetDramEncryptionModeFunc: method is nil but Interface.DeviceGetDramEncryptionMode was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetDramEncryptionMode.Lock()\n\tmock.calls.DeviceGetDramEncryptionMode = append(mock.calls.DeviceGetDramEncryptionMode, callInfo)\n\tmock.lockDeviceGetDramEncryptionMode.Unlock()\n\treturn mock.DeviceGetDramEncryptionModeFunc(device)\n}\n\n// DeviceGetDramEncryptionModeCalls gets all the calls that were made to DeviceGetDramEncryptionMode.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetDramEncryptionModeCalls())\nfunc (mock *Interface) DeviceGetDramEncryptionModeCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetDramEncryptionMode.RLock()\n\tcalls = mock.calls.DeviceGetDramEncryptionMode\n\tmock.lockDeviceGetDramEncryptionMode.RUnlock()\n\treturn calls\n}\n\n// DeviceGetDriverModel calls DeviceGetDriverModelFunc.\nfunc (mock *Interface) DeviceGetDriverModel(device nvml.Device) (nvml.DriverModel, nvml.DriverModel, nvml.Return) {\n\tif mock.DeviceGetDriverModelFunc == nil {\n\t\tpanic(\"Interface.DeviceGetDriverModelFunc: method is nil but Interface.DeviceGetDriverModel was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetDriverModel.Lock()\n\tmock.calls.DeviceGetDriverModel = append(mock.calls.DeviceGetDriverModel, callInfo)\n\tmock.lockDeviceGetDriverModel.Unlock()\n\treturn mock.DeviceGetDriverModelFunc(device)\n}\n\n// DeviceGetDriverModelCalls gets all the calls that were made to DeviceGetDriverModel.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetDriverModelCalls())\nfunc (mock *Interface) DeviceGetDriverModelCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetDriverModel.RLock()\n\tcalls = mock.calls.DeviceGetDriverModel\n\tmock.lockDeviceGetDriverModel.RUnlock()\n\treturn calls\n}\n\n// DeviceGetDriverModel_v2 calls DeviceGetDriverModel_v2Func.\nfunc (mock *Interface) DeviceGetDriverModel_v2(device nvml.Device) (nvml.DriverModel, nvml.DriverModel, nvml.Return) {\n\tif mock.DeviceGetDriverModel_v2Func == nil {\n\t\tpanic(\"Interface.DeviceGetDriverModel_v2Func: method is nil but Interface.DeviceGetDriverModel_v2 was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetDriverModel_v2.Lock()\n\tmock.calls.DeviceGetDriverModel_v2 = append(mock.calls.DeviceGetDriverModel_v2, callInfo)\n\tmock.lockDeviceGetDriverModel_v2.Unlock()\n\treturn mock.DeviceGetDriverModel_v2Func(device)\n}\n\n// DeviceGetDriverModel_v2Calls gets all the calls that were made to DeviceGetDriverModel_v2.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetDriverModel_v2Calls())\nfunc (mock *Interface) DeviceGetDriverModel_v2Calls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetDriverModel_v2.RLock()\n\tcalls = mock.calls.DeviceGetDriverModel_v2\n\tmock.lockDeviceGetDriverModel_v2.RUnlock()\n\treturn calls\n}\n\n// DeviceGetDynamicPstatesInfo calls DeviceGetDynamicPstatesInfoFunc.\nfunc (mock *Interface) DeviceGetDynamicPstatesInfo(device nvml.Device) (nvml.GpuDynamicPstatesInfo, nvml.Return) {\n\tif mock.DeviceGetDynamicPstatesInfoFunc == nil {\n\t\tpanic(\"Interface.DeviceGetDynamicPstatesInfoFunc: method is nil but Interface.DeviceGetDynamicPstatesInfo was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetDynamicPstatesInfo.Lock()\n\tmock.calls.DeviceGetDynamicPstatesInfo = append(mock.calls.DeviceGetDynamicPstatesInfo, callInfo)\n\tmock.lockDeviceGetDynamicPstatesInfo.Unlock()\n\treturn mock.DeviceGetDynamicPstatesInfoFunc(device)\n}\n\n// DeviceGetDynamicPstatesInfoCalls gets all the calls that were made to DeviceGetDynamicPstatesInfo.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetDynamicPstatesInfoCalls())\nfunc (mock *Interface) DeviceGetDynamicPstatesInfoCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetDynamicPstatesInfo.RLock()\n\tcalls = mock.calls.DeviceGetDynamicPstatesInfo\n\tmock.lockDeviceGetDynamicPstatesInfo.RUnlock()\n\treturn calls\n}\n\n// DeviceGetEccMode calls DeviceGetEccModeFunc.\nfunc (mock *Interface) DeviceGetEccMode(device nvml.Device) (nvml.EnableState, nvml.EnableState, nvml.Return) {\n\tif mock.DeviceGetEccModeFunc == nil {\n\t\tpanic(\"Interface.DeviceGetEccModeFunc: method is nil but Interface.DeviceGetEccMode was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetEccMode.Lock()\n\tmock.calls.DeviceGetEccMode = append(mock.calls.DeviceGetEccMode, callInfo)\n\tmock.lockDeviceGetEccMode.Unlock()\n\treturn mock.DeviceGetEccModeFunc(device)\n}\n\n// DeviceGetEccModeCalls gets all the calls that were made to DeviceGetEccMode.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetEccModeCalls())\nfunc (mock *Interface) DeviceGetEccModeCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetEccMode.RLock()\n\tcalls = mock.calls.DeviceGetEccMode\n\tmock.lockDeviceGetEccMode.RUnlock()\n\treturn calls\n}\n\n// DeviceGetEncoderCapacity calls DeviceGetEncoderCapacityFunc.\nfunc (mock *Interface) DeviceGetEncoderCapacity(device nvml.Device, encoderType nvml.EncoderType) (int, nvml.Return) {\n\tif mock.DeviceGetEncoderCapacityFunc == nil {\n\t\tpanic(\"Interface.DeviceGetEncoderCapacityFunc: method is nil but Interface.DeviceGetEncoderCapacity was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice      nvml.Device\n\t\tEncoderType nvml.EncoderType\n\t}{\n\t\tDevice:      device,\n\t\tEncoderType: encoderType,\n\t}\n\tmock.lockDeviceGetEncoderCapacity.Lock()\n\tmock.calls.DeviceGetEncoderCapacity = append(mock.calls.DeviceGetEncoderCapacity, callInfo)\n\tmock.lockDeviceGetEncoderCapacity.Unlock()\n\treturn mock.DeviceGetEncoderCapacityFunc(device, encoderType)\n}\n\n// DeviceGetEncoderCapacityCalls gets all the calls that were made to DeviceGetEncoderCapacity.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetEncoderCapacityCalls())\nfunc (mock *Interface) DeviceGetEncoderCapacityCalls() []struct {\n\tDevice      nvml.Device\n\tEncoderType nvml.EncoderType\n} {\n\tvar calls []struct {\n\t\tDevice      nvml.Device\n\t\tEncoderType nvml.EncoderType\n\t}\n\tmock.lockDeviceGetEncoderCapacity.RLock()\n\tcalls = mock.calls.DeviceGetEncoderCapacity\n\tmock.lockDeviceGetEncoderCapacity.RUnlock()\n\treturn calls\n}\n\n// DeviceGetEncoderSessions calls DeviceGetEncoderSessionsFunc.\nfunc (mock *Interface) DeviceGetEncoderSessions(device nvml.Device) ([]nvml.EncoderSessionInfo, nvml.Return) {\n\tif mock.DeviceGetEncoderSessionsFunc == nil {\n\t\tpanic(\"Interface.DeviceGetEncoderSessionsFunc: method is nil but Interface.DeviceGetEncoderSessions was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetEncoderSessions.Lock()\n\tmock.calls.DeviceGetEncoderSessions = append(mock.calls.DeviceGetEncoderSessions, callInfo)\n\tmock.lockDeviceGetEncoderSessions.Unlock()\n\treturn mock.DeviceGetEncoderSessionsFunc(device)\n}\n\n// DeviceGetEncoderSessionsCalls gets all the calls that were made to DeviceGetEncoderSessions.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetEncoderSessionsCalls())\nfunc (mock *Interface) DeviceGetEncoderSessionsCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetEncoderSessions.RLock()\n\tcalls = mock.calls.DeviceGetEncoderSessions\n\tmock.lockDeviceGetEncoderSessions.RUnlock()\n\treturn calls\n}\n\n// DeviceGetEncoderStats calls DeviceGetEncoderStatsFunc.\nfunc (mock *Interface) DeviceGetEncoderStats(device nvml.Device) (int, uint32, uint32, nvml.Return) {\n\tif mock.DeviceGetEncoderStatsFunc == nil {\n\t\tpanic(\"Interface.DeviceGetEncoderStatsFunc: method is nil but Interface.DeviceGetEncoderStats was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetEncoderStats.Lock()\n\tmock.calls.DeviceGetEncoderStats = append(mock.calls.DeviceGetEncoderStats, callInfo)\n\tmock.lockDeviceGetEncoderStats.Unlock()\n\treturn mock.DeviceGetEncoderStatsFunc(device)\n}\n\n// DeviceGetEncoderStatsCalls gets all the calls that were made to DeviceGetEncoderStats.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetEncoderStatsCalls())\nfunc (mock *Interface) DeviceGetEncoderStatsCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetEncoderStats.RLock()\n\tcalls = mock.calls.DeviceGetEncoderStats\n\tmock.lockDeviceGetEncoderStats.RUnlock()\n\treturn calls\n}\n\n// DeviceGetEncoderUtilization calls DeviceGetEncoderUtilizationFunc.\nfunc (mock *Interface) DeviceGetEncoderUtilization(device nvml.Device) (uint32, uint32, nvml.Return) {\n\tif mock.DeviceGetEncoderUtilizationFunc == nil {\n\t\tpanic(\"Interface.DeviceGetEncoderUtilizationFunc: method is nil but Interface.DeviceGetEncoderUtilization was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetEncoderUtilization.Lock()\n\tmock.calls.DeviceGetEncoderUtilization = append(mock.calls.DeviceGetEncoderUtilization, callInfo)\n\tmock.lockDeviceGetEncoderUtilization.Unlock()\n\treturn mock.DeviceGetEncoderUtilizationFunc(device)\n}\n\n// DeviceGetEncoderUtilizationCalls gets all the calls that were made to DeviceGetEncoderUtilization.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetEncoderUtilizationCalls())\nfunc (mock *Interface) DeviceGetEncoderUtilizationCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetEncoderUtilization.RLock()\n\tcalls = mock.calls.DeviceGetEncoderUtilization\n\tmock.lockDeviceGetEncoderUtilization.RUnlock()\n\treturn calls\n}\n\n// DeviceGetEnforcedPowerLimit calls DeviceGetEnforcedPowerLimitFunc.\nfunc (mock *Interface) DeviceGetEnforcedPowerLimit(device nvml.Device) (uint32, nvml.Return) {\n\tif mock.DeviceGetEnforcedPowerLimitFunc == nil {\n\t\tpanic(\"Interface.DeviceGetEnforcedPowerLimitFunc: method is nil but Interface.DeviceGetEnforcedPowerLimit was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetEnforcedPowerLimit.Lock()\n\tmock.calls.DeviceGetEnforcedPowerLimit = append(mock.calls.DeviceGetEnforcedPowerLimit, callInfo)\n\tmock.lockDeviceGetEnforcedPowerLimit.Unlock()\n\treturn mock.DeviceGetEnforcedPowerLimitFunc(device)\n}\n\n// DeviceGetEnforcedPowerLimitCalls gets all the calls that were made to DeviceGetEnforcedPowerLimit.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetEnforcedPowerLimitCalls())\nfunc (mock *Interface) DeviceGetEnforcedPowerLimitCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetEnforcedPowerLimit.RLock()\n\tcalls = mock.calls.DeviceGetEnforcedPowerLimit\n\tmock.lockDeviceGetEnforcedPowerLimit.RUnlock()\n\treturn calls\n}\n\n// DeviceGetFBCSessions calls DeviceGetFBCSessionsFunc.\nfunc (mock *Interface) DeviceGetFBCSessions(device nvml.Device) ([]nvml.FBCSessionInfo, nvml.Return) {\n\tif mock.DeviceGetFBCSessionsFunc == nil {\n\t\tpanic(\"Interface.DeviceGetFBCSessionsFunc: method is nil but Interface.DeviceGetFBCSessions was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetFBCSessions.Lock()\n\tmock.calls.DeviceGetFBCSessions = append(mock.calls.DeviceGetFBCSessions, callInfo)\n\tmock.lockDeviceGetFBCSessions.Unlock()\n\treturn mock.DeviceGetFBCSessionsFunc(device)\n}\n\n// DeviceGetFBCSessionsCalls gets all the calls that were made to DeviceGetFBCSessions.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetFBCSessionsCalls())\nfunc (mock *Interface) DeviceGetFBCSessionsCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetFBCSessions.RLock()\n\tcalls = mock.calls.DeviceGetFBCSessions\n\tmock.lockDeviceGetFBCSessions.RUnlock()\n\treturn calls\n}\n\n// DeviceGetFBCStats calls DeviceGetFBCStatsFunc.\nfunc (mock *Interface) DeviceGetFBCStats(device nvml.Device) (nvml.FBCStats, nvml.Return) {\n\tif mock.DeviceGetFBCStatsFunc == nil {\n\t\tpanic(\"Interface.DeviceGetFBCStatsFunc: method is nil but Interface.DeviceGetFBCStats was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetFBCStats.Lock()\n\tmock.calls.DeviceGetFBCStats = append(mock.calls.DeviceGetFBCStats, callInfo)\n\tmock.lockDeviceGetFBCStats.Unlock()\n\treturn mock.DeviceGetFBCStatsFunc(device)\n}\n\n// DeviceGetFBCStatsCalls gets all the calls that were made to DeviceGetFBCStats.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetFBCStatsCalls())\nfunc (mock *Interface) DeviceGetFBCStatsCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetFBCStats.RLock()\n\tcalls = mock.calls.DeviceGetFBCStats\n\tmock.lockDeviceGetFBCStats.RUnlock()\n\treturn calls\n}\n\n// DeviceGetFanControlPolicy_v2 calls DeviceGetFanControlPolicy_v2Func.\nfunc (mock *Interface) DeviceGetFanControlPolicy_v2(device nvml.Device, n int) (nvml.FanControlPolicy, nvml.Return) {\n\tif mock.DeviceGetFanControlPolicy_v2Func == nil {\n\t\tpanic(\"Interface.DeviceGetFanControlPolicy_v2Func: method is nil but Interface.DeviceGetFanControlPolicy_v2 was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t\tN      int\n\t}{\n\t\tDevice: device,\n\t\tN:      n,\n\t}\n\tmock.lockDeviceGetFanControlPolicy_v2.Lock()\n\tmock.calls.DeviceGetFanControlPolicy_v2 = append(mock.calls.DeviceGetFanControlPolicy_v2, callInfo)\n\tmock.lockDeviceGetFanControlPolicy_v2.Unlock()\n\treturn mock.DeviceGetFanControlPolicy_v2Func(device, n)\n}\n\n// DeviceGetFanControlPolicy_v2Calls gets all the calls that were made to DeviceGetFanControlPolicy_v2.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetFanControlPolicy_v2Calls())\nfunc (mock *Interface) DeviceGetFanControlPolicy_v2Calls() []struct {\n\tDevice nvml.Device\n\tN      int\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t\tN      int\n\t}\n\tmock.lockDeviceGetFanControlPolicy_v2.RLock()\n\tcalls = mock.calls.DeviceGetFanControlPolicy_v2\n\tmock.lockDeviceGetFanControlPolicy_v2.RUnlock()\n\treturn calls\n}\n\n// DeviceGetFanSpeed calls DeviceGetFanSpeedFunc.\nfunc (mock *Interface) DeviceGetFanSpeed(device nvml.Device) (uint32, nvml.Return) {\n\tif mock.DeviceGetFanSpeedFunc == nil {\n\t\tpanic(\"Interface.DeviceGetFanSpeedFunc: method is nil but Interface.DeviceGetFanSpeed was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetFanSpeed.Lock()\n\tmock.calls.DeviceGetFanSpeed = append(mock.calls.DeviceGetFanSpeed, callInfo)\n\tmock.lockDeviceGetFanSpeed.Unlock()\n\treturn mock.DeviceGetFanSpeedFunc(device)\n}\n\n// DeviceGetFanSpeedCalls gets all the calls that were made to DeviceGetFanSpeed.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetFanSpeedCalls())\nfunc (mock *Interface) DeviceGetFanSpeedCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetFanSpeed.RLock()\n\tcalls = mock.calls.DeviceGetFanSpeed\n\tmock.lockDeviceGetFanSpeed.RUnlock()\n\treturn calls\n}\n\n// DeviceGetFanSpeedRPM calls DeviceGetFanSpeedRPMFunc.\nfunc (mock *Interface) DeviceGetFanSpeedRPM(device nvml.Device) (nvml.FanSpeedInfo, nvml.Return) {\n\tif mock.DeviceGetFanSpeedRPMFunc == nil {\n\t\tpanic(\"Interface.DeviceGetFanSpeedRPMFunc: method is nil but Interface.DeviceGetFanSpeedRPM was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetFanSpeedRPM.Lock()\n\tmock.calls.DeviceGetFanSpeedRPM = append(mock.calls.DeviceGetFanSpeedRPM, callInfo)\n\tmock.lockDeviceGetFanSpeedRPM.Unlock()\n\treturn mock.DeviceGetFanSpeedRPMFunc(device)\n}\n\n// DeviceGetFanSpeedRPMCalls gets all the calls that were made to DeviceGetFanSpeedRPM.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetFanSpeedRPMCalls())\nfunc (mock *Interface) DeviceGetFanSpeedRPMCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetFanSpeedRPM.RLock()\n\tcalls = mock.calls.DeviceGetFanSpeedRPM\n\tmock.lockDeviceGetFanSpeedRPM.RUnlock()\n\treturn calls\n}\n\n// DeviceGetFanSpeed_v2 calls DeviceGetFanSpeed_v2Func.\nfunc (mock *Interface) DeviceGetFanSpeed_v2(device nvml.Device, n int) (uint32, nvml.Return) {\n\tif mock.DeviceGetFanSpeed_v2Func == nil {\n\t\tpanic(\"Interface.DeviceGetFanSpeed_v2Func: method is nil but Interface.DeviceGetFanSpeed_v2 was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t\tN      int\n\t}{\n\t\tDevice: device,\n\t\tN:      n,\n\t}\n\tmock.lockDeviceGetFanSpeed_v2.Lock()\n\tmock.calls.DeviceGetFanSpeed_v2 = append(mock.calls.DeviceGetFanSpeed_v2, callInfo)\n\tmock.lockDeviceGetFanSpeed_v2.Unlock()\n\treturn mock.DeviceGetFanSpeed_v2Func(device, n)\n}\n\n// DeviceGetFanSpeed_v2Calls gets all the calls that were made to DeviceGetFanSpeed_v2.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetFanSpeed_v2Calls())\nfunc (mock *Interface) DeviceGetFanSpeed_v2Calls() []struct {\n\tDevice nvml.Device\n\tN      int\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t\tN      int\n\t}\n\tmock.lockDeviceGetFanSpeed_v2.RLock()\n\tcalls = mock.calls.DeviceGetFanSpeed_v2\n\tmock.lockDeviceGetFanSpeed_v2.RUnlock()\n\treturn calls\n}\n\n// DeviceGetFieldValues calls DeviceGetFieldValuesFunc.\nfunc (mock *Interface) DeviceGetFieldValues(device nvml.Device, fieldValues []nvml.FieldValue) nvml.Return {\n\tif mock.DeviceGetFieldValuesFunc == nil {\n\t\tpanic(\"Interface.DeviceGetFieldValuesFunc: method is nil but Interface.DeviceGetFieldValues was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice      nvml.Device\n\t\tFieldValues []nvml.FieldValue\n\t}{\n\t\tDevice:      device,\n\t\tFieldValues: fieldValues,\n\t}\n\tmock.lockDeviceGetFieldValues.Lock()\n\tmock.calls.DeviceGetFieldValues = append(mock.calls.DeviceGetFieldValues, callInfo)\n\tmock.lockDeviceGetFieldValues.Unlock()\n\treturn mock.DeviceGetFieldValuesFunc(device, fieldValues)\n}\n\n// DeviceGetFieldValuesCalls gets all the calls that were made to DeviceGetFieldValues.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetFieldValuesCalls())\nfunc (mock *Interface) DeviceGetFieldValuesCalls() []struct {\n\tDevice      nvml.Device\n\tFieldValues []nvml.FieldValue\n} {\n\tvar calls []struct {\n\t\tDevice      nvml.Device\n\t\tFieldValues []nvml.FieldValue\n\t}\n\tmock.lockDeviceGetFieldValues.RLock()\n\tcalls = mock.calls.DeviceGetFieldValues\n\tmock.lockDeviceGetFieldValues.RUnlock()\n\treturn calls\n}\n\n// DeviceGetGpcClkMinMaxVfOffset calls DeviceGetGpcClkMinMaxVfOffsetFunc.\nfunc (mock *Interface) DeviceGetGpcClkMinMaxVfOffset(device nvml.Device) (int, int, nvml.Return) {\n\tif mock.DeviceGetGpcClkMinMaxVfOffsetFunc == nil {\n\t\tpanic(\"Interface.DeviceGetGpcClkMinMaxVfOffsetFunc: method is nil but Interface.DeviceGetGpcClkMinMaxVfOffset was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetGpcClkMinMaxVfOffset.Lock()\n\tmock.calls.DeviceGetGpcClkMinMaxVfOffset = append(mock.calls.DeviceGetGpcClkMinMaxVfOffset, callInfo)\n\tmock.lockDeviceGetGpcClkMinMaxVfOffset.Unlock()\n\treturn mock.DeviceGetGpcClkMinMaxVfOffsetFunc(device)\n}\n\n// DeviceGetGpcClkMinMaxVfOffsetCalls gets all the calls that were made to DeviceGetGpcClkMinMaxVfOffset.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetGpcClkMinMaxVfOffsetCalls())\nfunc (mock *Interface) DeviceGetGpcClkMinMaxVfOffsetCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetGpcClkMinMaxVfOffset.RLock()\n\tcalls = mock.calls.DeviceGetGpcClkMinMaxVfOffset\n\tmock.lockDeviceGetGpcClkMinMaxVfOffset.RUnlock()\n\treturn calls\n}\n\n// DeviceGetGpcClkVfOffset calls DeviceGetGpcClkVfOffsetFunc.\nfunc (mock *Interface) DeviceGetGpcClkVfOffset(device nvml.Device) (int, nvml.Return) {\n\tif mock.DeviceGetGpcClkVfOffsetFunc == nil {\n\t\tpanic(\"Interface.DeviceGetGpcClkVfOffsetFunc: method is nil but Interface.DeviceGetGpcClkVfOffset was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetGpcClkVfOffset.Lock()\n\tmock.calls.DeviceGetGpcClkVfOffset = append(mock.calls.DeviceGetGpcClkVfOffset, callInfo)\n\tmock.lockDeviceGetGpcClkVfOffset.Unlock()\n\treturn mock.DeviceGetGpcClkVfOffsetFunc(device)\n}\n\n// DeviceGetGpcClkVfOffsetCalls gets all the calls that were made to DeviceGetGpcClkVfOffset.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetGpcClkVfOffsetCalls())\nfunc (mock *Interface) DeviceGetGpcClkVfOffsetCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetGpcClkVfOffset.RLock()\n\tcalls = mock.calls.DeviceGetGpcClkVfOffset\n\tmock.lockDeviceGetGpcClkVfOffset.RUnlock()\n\treturn calls\n}\n\n// DeviceGetGpuFabricInfo calls DeviceGetGpuFabricInfoFunc.\nfunc (mock *Interface) DeviceGetGpuFabricInfo(device nvml.Device) (nvml.GpuFabricInfo, nvml.Return) {\n\tif mock.DeviceGetGpuFabricInfoFunc == nil {\n\t\tpanic(\"Interface.DeviceGetGpuFabricInfoFunc: method is nil but Interface.DeviceGetGpuFabricInfo was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetGpuFabricInfo.Lock()\n\tmock.calls.DeviceGetGpuFabricInfo = append(mock.calls.DeviceGetGpuFabricInfo, callInfo)\n\tmock.lockDeviceGetGpuFabricInfo.Unlock()\n\treturn mock.DeviceGetGpuFabricInfoFunc(device)\n}\n\n// DeviceGetGpuFabricInfoCalls gets all the calls that were made to DeviceGetGpuFabricInfo.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetGpuFabricInfoCalls())\nfunc (mock *Interface) DeviceGetGpuFabricInfoCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetGpuFabricInfo.RLock()\n\tcalls = mock.calls.DeviceGetGpuFabricInfo\n\tmock.lockDeviceGetGpuFabricInfo.RUnlock()\n\treturn calls\n}\n\n// DeviceGetGpuFabricInfoV calls DeviceGetGpuFabricInfoVFunc.\nfunc (mock *Interface) DeviceGetGpuFabricInfoV(device nvml.Device) nvml.GpuFabricInfoHandler {\n\tif mock.DeviceGetGpuFabricInfoVFunc == nil {\n\t\tpanic(\"Interface.DeviceGetGpuFabricInfoVFunc: method is nil but Interface.DeviceGetGpuFabricInfoV was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetGpuFabricInfoV.Lock()\n\tmock.calls.DeviceGetGpuFabricInfoV = append(mock.calls.DeviceGetGpuFabricInfoV, callInfo)\n\tmock.lockDeviceGetGpuFabricInfoV.Unlock()\n\treturn mock.DeviceGetGpuFabricInfoVFunc(device)\n}\n\n// DeviceGetGpuFabricInfoVCalls gets all the calls that were made to DeviceGetGpuFabricInfoV.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetGpuFabricInfoVCalls())\nfunc (mock *Interface) DeviceGetGpuFabricInfoVCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetGpuFabricInfoV.RLock()\n\tcalls = mock.calls.DeviceGetGpuFabricInfoV\n\tmock.lockDeviceGetGpuFabricInfoV.RUnlock()\n\treturn calls\n}\n\n// DeviceGetGpuInstanceById calls DeviceGetGpuInstanceByIdFunc.\nfunc (mock *Interface) DeviceGetGpuInstanceById(device nvml.Device, n int) (nvml.GpuInstance, nvml.Return) {\n\tif mock.DeviceGetGpuInstanceByIdFunc == nil {\n\t\tpanic(\"Interface.DeviceGetGpuInstanceByIdFunc: method is nil but Interface.DeviceGetGpuInstanceById was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t\tN      int\n\t}{\n\t\tDevice: device,\n\t\tN:      n,\n\t}\n\tmock.lockDeviceGetGpuInstanceById.Lock()\n\tmock.calls.DeviceGetGpuInstanceById = append(mock.calls.DeviceGetGpuInstanceById, callInfo)\n\tmock.lockDeviceGetGpuInstanceById.Unlock()\n\treturn mock.DeviceGetGpuInstanceByIdFunc(device, n)\n}\n\n// DeviceGetGpuInstanceByIdCalls gets all the calls that were made to DeviceGetGpuInstanceById.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetGpuInstanceByIdCalls())\nfunc (mock *Interface) DeviceGetGpuInstanceByIdCalls() []struct {\n\tDevice nvml.Device\n\tN      int\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t\tN      int\n\t}\n\tmock.lockDeviceGetGpuInstanceById.RLock()\n\tcalls = mock.calls.DeviceGetGpuInstanceById\n\tmock.lockDeviceGetGpuInstanceById.RUnlock()\n\treturn calls\n}\n\n// DeviceGetGpuInstanceId calls DeviceGetGpuInstanceIdFunc.\nfunc (mock *Interface) DeviceGetGpuInstanceId(device nvml.Device) (int, nvml.Return) {\n\tif mock.DeviceGetGpuInstanceIdFunc == nil {\n\t\tpanic(\"Interface.DeviceGetGpuInstanceIdFunc: method is nil but Interface.DeviceGetGpuInstanceId was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetGpuInstanceId.Lock()\n\tmock.calls.DeviceGetGpuInstanceId = append(mock.calls.DeviceGetGpuInstanceId, callInfo)\n\tmock.lockDeviceGetGpuInstanceId.Unlock()\n\treturn mock.DeviceGetGpuInstanceIdFunc(device)\n}\n\n// DeviceGetGpuInstanceIdCalls gets all the calls that were made to DeviceGetGpuInstanceId.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetGpuInstanceIdCalls())\nfunc (mock *Interface) DeviceGetGpuInstanceIdCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetGpuInstanceId.RLock()\n\tcalls = mock.calls.DeviceGetGpuInstanceId\n\tmock.lockDeviceGetGpuInstanceId.RUnlock()\n\treturn calls\n}\n\n// DeviceGetGpuInstancePossiblePlacements calls DeviceGetGpuInstancePossiblePlacementsFunc.\nfunc (mock *Interface) DeviceGetGpuInstancePossiblePlacements(device nvml.Device, gpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo) ([]nvml.GpuInstancePlacement, nvml.Return) {\n\tif mock.DeviceGetGpuInstancePossiblePlacementsFunc == nil {\n\t\tpanic(\"Interface.DeviceGetGpuInstancePossiblePlacementsFunc: method is nil but Interface.DeviceGetGpuInstancePossiblePlacements was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice                 nvml.Device\n\t\tGpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo\n\t}{\n\t\tDevice:                 device,\n\t\tGpuInstanceProfileInfo: gpuInstanceProfileInfo,\n\t}\n\tmock.lockDeviceGetGpuInstancePossiblePlacements.Lock()\n\tmock.calls.DeviceGetGpuInstancePossiblePlacements = append(mock.calls.DeviceGetGpuInstancePossiblePlacements, callInfo)\n\tmock.lockDeviceGetGpuInstancePossiblePlacements.Unlock()\n\treturn mock.DeviceGetGpuInstancePossiblePlacementsFunc(device, gpuInstanceProfileInfo)\n}\n\n// DeviceGetGpuInstancePossiblePlacementsCalls gets all the calls that were made to DeviceGetGpuInstancePossiblePlacements.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetGpuInstancePossiblePlacementsCalls())\nfunc (mock *Interface) DeviceGetGpuInstancePossiblePlacementsCalls() []struct {\n\tDevice                 nvml.Device\n\tGpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo\n} {\n\tvar calls []struct {\n\t\tDevice                 nvml.Device\n\t\tGpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo\n\t}\n\tmock.lockDeviceGetGpuInstancePossiblePlacements.RLock()\n\tcalls = mock.calls.DeviceGetGpuInstancePossiblePlacements\n\tmock.lockDeviceGetGpuInstancePossiblePlacements.RUnlock()\n\treturn calls\n}\n\n// DeviceGetGpuInstanceProfileInfo calls DeviceGetGpuInstanceProfileInfoFunc.\nfunc (mock *Interface) DeviceGetGpuInstanceProfileInfo(device nvml.Device, n int) (nvml.GpuInstanceProfileInfo, nvml.Return) {\n\tif mock.DeviceGetGpuInstanceProfileInfoFunc == nil {\n\t\tpanic(\"Interface.DeviceGetGpuInstanceProfileInfoFunc: method is nil but Interface.DeviceGetGpuInstanceProfileInfo was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t\tN      int\n\t}{\n\t\tDevice: device,\n\t\tN:      n,\n\t}\n\tmock.lockDeviceGetGpuInstanceProfileInfo.Lock()\n\tmock.calls.DeviceGetGpuInstanceProfileInfo = append(mock.calls.DeviceGetGpuInstanceProfileInfo, callInfo)\n\tmock.lockDeviceGetGpuInstanceProfileInfo.Unlock()\n\treturn mock.DeviceGetGpuInstanceProfileInfoFunc(device, n)\n}\n\n// DeviceGetGpuInstanceProfileInfoCalls gets all the calls that were made to DeviceGetGpuInstanceProfileInfo.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetGpuInstanceProfileInfoCalls())\nfunc (mock *Interface) DeviceGetGpuInstanceProfileInfoCalls() []struct {\n\tDevice nvml.Device\n\tN      int\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t\tN      int\n\t}\n\tmock.lockDeviceGetGpuInstanceProfileInfo.RLock()\n\tcalls = mock.calls.DeviceGetGpuInstanceProfileInfo\n\tmock.lockDeviceGetGpuInstanceProfileInfo.RUnlock()\n\treturn calls\n}\n\n// DeviceGetGpuInstanceProfileInfoByIdV calls DeviceGetGpuInstanceProfileInfoByIdVFunc.\nfunc (mock *Interface) DeviceGetGpuInstanceProfileInfoByIdV(device nvml.Device, n int) nvml.GpuInstanceProfileInfoByIdHandler {\n\tif mock.DeviceGetGpuInstanceProfileInfoByIdVFunc == nil {\n\t\tpanic(\"Interface.DeviceGetGpuInstanceProfileInfoByIdVFunc: method is nil but Interface.DeviceGetGpuInstanceProfileInfoByIdV was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t\tN      int\n\t}{\n\t\tDevice: device,\n\t\tN:      n,\n\t}\n\tmock.lockDeviceGetGpuInstanceProfileInfoByIdV.Lock()\n\tmock.calls.DeviceGetGpuInstanceProfileInfoByIdV = append(mock.calls.DeviceGetGpuInstanceProfileInfoByIdV, callInfo)\n\tmock.lockDeviceGetGpuInstanceProfileInfoByIdV.Unlock()\n\treturn mock.DeviceGetGpuInstanceProfileInfoByIdVFunc(device, n)\n}\n\n// DeviceGetGpuInstanceProfileInfoByIdVCalls gets all the calls that were made to DeviceGetGpuInstanceProfileInfoByIdV.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetGpuInstanceProfileInfoByIdVCalls())\nfunc (mock *Interface) DeviceGetGpuInstanceProfileInfoByIdVCalls() []struct {\n\tDevice nvml.Device\n\tN      int\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t\tN      int\n\t}\n\tmock.lockDeviceGetGpuInstanceProfileInfoByIdV.RLock()\n\tcalls = mock.calls.DeviceGetGpuInstanceProfileInfoByIdV\n\tmock.lockDeviceGetGpuInstanceProfileInfoByIdV.RUnlock()\n\treturn calls\n}\n\n// DeviceGetGpuInstanceProfileInfoV calls DeviceGetGpuInstanceProfileInfoVFunc.\nfunc (mock *Interface) DeviceGetGpuInstanceProfileInfoV(device nvml.Device, n int) nvml.GpuInstanceProfileInfoHandler {\n\tif mock.DeviceGetGpuInstanceProfileInfoVFunc == nil {\n\t\tpanic(\"Interface.DeviceGetGpuInstanceProfileInfoVFunc: method is nil but Interface.DeviceGetGpuInstanceProfileInfoV was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t\tN      int\n\t}{\n\t\tDevice: device,\n\t\tN:      n,\n\t}\n\tmock.lockDeviceGetGpuInstanceProfileInfoV.Lock()\n\tmock.calls.DeviceGetGpuInstanceProfileInfoV = append(mock.calls.DeviceGetGpuInstanceProfileInfoV, callInfo)\n\tmock.lockDeviceGetGpuInstanceProfileInfoV.Unlock()\n\treturn mock.DeviceGetGpuInstanceProfileInfoVFunc(device, n)\n}\n\n// DeviceGetGpuInstanceProfileInfoVCalls gets all the calls that were made to DeviceGetGpuInstanceProfileInfoV.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetGpuInstanceProfileInfoVCalls())\nfunc (mock *Interface) DeviceGetGpuInstanceProfileInfoVCalls() []struct {\n\tDevice nvml.Device\n\tN      int\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t\tN      int\n\t}\n\tmock.lockDeviceGetGpuInstanceProfileInfoV.RLock()\n\tcalls = mock.calls.DeviceGetGpuInstanceProfileInfoV\n\tmock.lockDeviceGetGpuInstanceProfileInfoV.RUnlock()\n\treturn calls\n}\n\n// DeviceGetGpuInstanceRemainingCapacity calls DeviceGetGpuInstanceRemainingCapacityFunc.\nfunc (mock *Interface) DeviceGetGpuInstanceRemainingCapacity(device nvml.Device, gpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo) (int, nvml.Return) {\n\tif mock.DeviceGetGpuInstanceRemainingCapacityFunc == nil {\n\t\tpanic(\"Interface.DeviceGetGpuInstanceRemainingCapacityFunc: method is nil but Interface.DeviceGetGpuInstanceRemainingCapacity was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice                 nvml.Device\n\t\tGpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo\n\t}{\n\t\tDevice:                 device,\n\t\tGpuInstanceProfileInfo: gpuInstanceProfileInfo,\n\t}\n\tmock.lockDeviceGetGpuInstanceRemainingCapacity.Lock()\n\tmock.calls.DeviceGetGpuInstanceRemainingCapacity = append(mock.calls.DeviceGetGpuInstanceRemainingCapacity, callInfo)\n\tmock.lockDeviceGetGpuInstanceRemainingCapacity.Unlock()\n\treturn mock.DeviceGetGpuInstanceRemainingCapacityFunc(device, gpuInstanceProfileInfo)\n}\n\n// DeviceGetGpuInstanceRemainingCapacityCalls gets all the calls that were made to DeviceGetGpuInstanceRemainingCapacity.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetGpuInstanceRemainingCapacityCalls())\nfunc (mock *Interface) DeviceGetGpuInstanceRemainingCapacityCalls() []struct {\n\tDevice                 nvml.Device\n\tGpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo\n} {\n\tvar calls []struct {\n\t\tDevice                 nvml.Device\n\t\tGpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo\n\t}\n\tmock.lockDeviceGetGpuInstanceRemainingCapacity.RLock()\n\tcalls = mock.calls.DeviceGetGpuInstanceRemainingCapacity\n\tmock.lockDeviceGetGpuInstanceRemainingCapacity.RUnlock()\n\treturn calls\n}\n\n// DeviceGetGpuInstances calls DeviceGetGpuInstancesFunc.\nfunc (mock *Interface) DeviceGetGpuInstances(device nvml.Device, gpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo) ([]nvml.GpuInstance, nvml.Return) {\n\tif mock.DeviceGetGpuInstancesFunc == nil {\n\t\tpanic(\"Interface.DeviceGetGpuInstancesFunc: method is nil but Interface.DeviceGetGpuInstances was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice                 nvml.Device\n\t\tGpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo\n\t}{\n\t\tDevice:                 device,\n\t\tGpuInstanceProfileInfo: gpuInstanceProfileInfo,\n\t}\n\tmock.lockDeviceGetGpuInstances.Lock()\n\tmock.calls.DeviceGetGpuInstances = append(mock.calls.DeviceGetGpuInstances, callInfo)\n\tmock.lockDeviceGetGpuInstances.Unlock()\n\treturn mock.DeviceGetGpuInstancesFunc(device, gpuInstanceProfileInfo)\n}\n\n// DeviceGetGpuInstancesCalls gets all the calls that were made to DeviceGetGpuInstances.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetGpuInstancesCalls())\nfunc (mock *Interface) DeviceGetGpuInstancesCalls() []struct {\n\tDevice                 nvml.Device\n\tGpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo\n} {\n\tvar calls []struct {\n\t\tDevice                 nvml.Device\n\t\tGpuInstanceProfileInfo *nvml.GpuInstanceProfileInfo\n\t}\n\tmock.lockDeviceGetGpuInstances.RLock()\n\tcalls = mock.calls.DeviceGetGpuInstances\n\tmock.lockDeviceGetGpuInstances.RUnlock()\n\treturn calls\n}\n\n// DeviceGetGpuMaxPcieLinkGeneration calls DeviceGetGpuMaxPcieLinkGenerationFunc.\nfunc (mock *Interface) DeviceGetGpuMaxPcieLinkGeneration(device nvml.Device) (int, nvml.Return) {\n\tif mock.DeviceGetGpuMaxPcieLinkGenerationFunc == nil {\n\t\tpanic(\"Interface.DeviceGetGpuMaxPcieLinkGenerationFunc: method is nil but Interface.DeviceGetGpuMaxPcieLinkGeneration was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetGpuMaxPcieLinkGeneration.Lock()\n\tmock.calls.DeviceGetGpuMaxPcieLinkGeneration = append(mock.calls.DeviceGetGpuMaxPcieLinkGeneration, callInfo)\n\tmock.lockDeviceGetGpuMaxPcieLinkGeneration.Unlock()\n\treturn mock.DeviceGetGpuMaxPcieLinkGenerationFunc(device)\n}\n\n// DeviceGetGpuMaxPcieLinkGenerationCalls gets all the calls that were made to DeviceGetGpuMaxPcieLinkGeneration.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetGpuMaxPcieLinkGenerationCalls())\nfunc (mock *Interface) DeviceGetGpuMaxPcieLinkGenerationCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetGpuMaxPcieLinkGeneration.RLock()\n\tcalls = mock.calls.DeviceGetGpuMaxPcieLinkGeneration\n\tmock.lockDeviceGetGpuMaxPcieLinkGeneration.RUnlock()\n\treturn calls\n}\n\n// DeviceGetGpuOperationMode calls DeviceGetGpuOperationModeFunc.\nfunc (mock *Interface) DeviceGetGpuOperationMode(device nvml.Device) (nvml.GpuOperationMode, nvml.GpuOperationMode, nvml.Return) {\n\tif mock.DeviceGetGpuOperationModeFunc == nil {\n\t\tpanic(\"Interface.DeviceGetGpuOperationModeFunc: method is nil but Interface.DeviceGetGpuOperationMode was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetGpuOperationMode.Lock()\n\tmock.calls.DeviceGetGpuOperationMode = append(mock.calls.DeviceGetGpuOperationMode, callInfo)\n\tmock.lockDeviceGetGpuOperationMode.Unlock()\n\treturn mock.DeviceGetGpuOperationModeFunc(device)\n}\n\n// DeviceGetGpuOperationModeCalls gets all the calls that were made to DeviceGetGpuOperationMode.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetGpuOperationModeCalls())\nfunc (mock *Interface) DeviceGetGpuOperationModeCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetGpuOperationMode.RLock()\n\tcalls = mock.calls.DeviceGetGpuOperationMode\n\tmock.lockDeviceGetGpuOperationMode.RUnlock()\n\treturn calls\n}\n\n// DeviceGetGraphicsRunningProcesses calls DeviceGetGraphicsRunningProcessesFunc.\nfunc (mock *Interface) DeviceGetGraphicsRunningProcesses(device nvml.Device) ([]nvml.ProcessInfo, nvml.Return) {\n\tif mock.DeviceGetGraphicsRunningProcessesFunc == nil {\n\t\tpanic(\"Interface.DeviceGetGraphicsRunningProcessesFunc: method is nil but Interface.DeviceGetGraphicsRunningProcesses was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetGraphicsRunningProcesses.Lock()\n\tmock.calls.DeviceGetGraphicsRunningProcesses = append(mock.calls.DeviceGetGraphicsRunningProcesses, callInfo)\n\tmock.lockDeviceGetGraphicsRunningProcesses.Unlock()\n\treturn mock.DeviceGetGraphicsRunningProcessesFunc(device)\n}\n\n// DeviceGetGraphicsRunningProcessesCalls gets all the calls that were made to DeviceGetGraphicsRunningProcesses.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetGraphicsRunningProcessesCalls())\nfunc (mock *Interface) DeviceGetGraphicsRunningProcessesCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetGraphicsRunningProcesses.RLock()\n\tcalls = mock.calls.DeviceGetGraphicsRunningProcesses\n\tmock.lockDeviceGetGraphicsRunningProcesses.RUnlock()\n\treturn calls\n}\n\n// DeviceGetGridLicensableFeatures calls DeviceGetGridLicensableFeaturesFunc.\nfunc (mock *Interface) DeviceGetGridLicensableFeatures(device nvml.Device) (nvml.GridLicensableFeatures, nvml.Return) {\n\tif mock.DeviceGetGridLicensableFeaturesFunc == nil {\n\t\tpanic(\"Interface.DeviceGetGridLicensableFeaturesFunc: method is nil but Interface.DeviceGetGridLicensableFeatures was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetGridLicensableFeatures.Lock()\n\tmock.calls.DeviceGetGridLicensableFeatures = append(mock.calls.DeviceGetGridLicensableFeatures, callInfo)\n\tmock.lockDeviceGetGridLicensableFeatures.Unlock()\n\treturn mock.DeviceGetGridLicensableFeaturesFunc(device)\n}\n\n// DeviceGetGridLicensableFeaturesCalls gets all the calls that were made to DeviceGetGridLicensableFeatures.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetGridLicensableFeaturesCalls())\nfunc (mock *Interface) DeviceGetGridLicensableFeaturesCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetGridLicensableFeatures.RLock()\n\tcalls = mock.calls.DeviceGetGridLicensableFeatures\n\tmock.lockDeviceGetGridLicensableFeatures.RUnlock()\n\treturn calls\n}\n\n// DeviceGetGspFirmwareMode calls DeviceGetGspFirmwareModeFunc.\nfunc (mock *Interface) DeviceGetGspFirmwareMode(device nvml.Device) (bool, bool, nvml.Return) {\n\tif mock.DeviceGetGspFirmwareModeFunc == nil {\n\t\tpanic(\"Interface.DeviceGetGspFirmwareModeFunc: method is nil but Interface.DeviceGetGspFirmwareMode was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetGspFirmwareMode.Lock()\n\tmock.calls.DeviceGetGspFirmwareMode = append(mock.calls.DeviceGetGspFirmwareMode, callInfo)\n\tmock.lockDeviceGetGspFirmwareMode.Unlock()\n\treturn mock.DeviceGetGspFirmwareModeFunc(device)\n}\n\n// DeviceGetGspFirmwareModeCalls gets all the calls that were made to DeviceGetGspFirmwareMode.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetGspFirmwareModeCalls())\nfunc (mock *Interface) DeviceGetGspFirmwareModeCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetGspFirmwareMode.RLock()\n\tcalls = mock.calls.DeviceGetGspFirmwareMode\n\tmock.lockDeviceGetGspFirmwareMode.RUnlock()\n\treturn calls\n}\n\n// DeviceGetGspFirmwareVersion calls DeviceGetGspFirmwareVersionFunc.\nfunc (mock *Interface) DeviceGetGspFirmwareVersion(device nvml.Device) (string, nvml.Return) {\n\tif mock.DeviceGetGspFirmwareVersionFunc == nil {\n\t\tpanic(\"Interface.DeviceGetGspFirmwareVersionFunc: method is nil but Interface.DeviceGetGspFirmwareVersion was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetGspFirmwareVersion.Lock()\n\tmock.calls.DeviceGetGspFirmwareVersion = append(mock.calls.DeviceGetGspFirmwareVersion, callInfo)\n\tmock.lockDeviceGetGspFirmwareVersion.Unlock()\n\treturn mock.DeviceGetGspFirmwareVersionFunc(device)\n}\n\n// DeviceGetGspFirmwareVersionCalls gets all the calls that were made to DeviceGetGspFirmwareVersion.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetGspFirmwareVersionCalls())\nfunc (mock *Interface) DeviceGetGspFirmwareVersionCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetGspFirmwareVersion.RLock()\n\tcalls = mock.calls.DeviceGetGspFirmwareVersion\n\tmock.lockDeviceGetGspFirmwareVersion.RUnlock()\n\treturn calls\n}\n\n// DeviceGetHandleByIndex calls DeviceGetHandleByIndexFunc.\nfunc (mock *Interface) DeviceGetHandleByIndex(n int) (nvml.Device, nvml.Return) {\n\tif mock.DeviceGetHandleByIndexFunc == nil {\n\t\tpanic(\"Interface.DeviceGetHandleByIndexFunc: method is nil but Interface.DeviceGetHandleByIndex was just called\")\n\t}\n\tcallInfo := struct {\n\t\tN int\n\t}{\n\t\tN: n,\n\t}\n\tmock.lockDeviceGetHandleByIndex.Lock()\n\tmock.calls.DeviceGetHandleByIndex = append(mock.calls.DeviceGetHandleByIndex, callInfo)\n\tmock.lockDeviceGetHandleByIndex.Unlock()\n\treturn mock.DeviceGetHandleByIndexFunc(n)\n}\n\n// DeviceGetHandleByIndexCalls gets all the calls that were made to DeviceGetHandleByIndex.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetHandleByIndexCalls())\nfunc (mock *Interface) DeviceGetHandleByIndexCalls() []struct {\n\tN int\n} {\n\tvar calls []struct {\n\t\tN int\n\t}\n\tmock.lockDeviceGetHandleByIndex.RLock()\n\tcalls = mock.calls.DeviceGetHandleByIndex\n\tmock.lockDeviceGetHandleByIndex.RUnlock()\n\treturn calls\n}\n\n// DeviceGetHandleByPciBusId calls DeviceGetHandleByPciBusIdFunc.\nfunc (mock *Interface) DeviceGetHandleByPciBusId(s string) (nvml.Device, nvml.Return) {\n\tif mock.DeviceGetHandleByPciBusIdFunc == nil {\n\t\tpanic(\"Interface.DeviceGetHandleByPciBusIdFunc: method is nil but Interface.DeviceGetHandleByPciBusId was just called\")\n\t}\n\tcallInfo := struct {\n\t\tS string\n\t}{\n\t\tS: s,\n\t}\n\tmock.lockDeviceGetHandleByPciBusId.Lock()\n\tmock.calls.DeviceGetHandleByPciBusId = append(mock.calls.DeviceGetHandleByPciBusId, callInfo)\n\tmock.lockDeviceGetHandleByPciBusId.Unlock()\n\treturn mock.DeviceGetHandleByPciBusIdFunc(s)\n}\n\n// DeviceGetHandleByPciBusIdCalls gets all the calls that were made to DeviceGetHandleByPciBusId.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetHandleByPciBusIdCalls())\nfunc (mock *Interface) DeviceGetHandleByPciBusIdCalls() []struct {\n\tS string\n} {\n\tvar calls []struct {\n\t\tS string\n\t}\n\tmock.lockDeviceGetHandleByPciBusId.RLock()\n\tcalls = mock.calls.DeviceGetHandleByPciBusId\n\tmock.lockDeviceGetHandleByPciBusId.RUnlock()\n\treturn calls\n}\n\n// DeviceGetHandleBySerial calls DeviceGetHandleBySerialFunc.\nfunc (mock *Interface) DeviceGetHandleBySerial(s string) (nvml.Device, nvml.Return) {\n\tif mock.DeviceGetHandleBySerialFunc == nil {\n\t\tpanic(\"Interface.DeviceGetHandleBySerialFunc: method is nil but Interface.DeviceGetHandleBySerial was just called\")\n\t}\n\tcallInfo := struct {\n\t\tS string\n\t}{\n\t\tS: s,\n\t}\n\tmock.lockDeviceGetHandleBySerial.Lock()\n\tmock.calls.DeviceGetHandleBySerial = append(mock.calls.DeviceGetHandleBySerial, callInfo)\n\tmock.lockDeviceGetHandleBySerial.Unlock()\n\treturn mock.DeviceGetHandleBySerialFunc(s)\n}\n\n// DeviceGetHandleBySerialCalls gets all the calls that were made to DeviceGetHandleBySerial.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetHandleBySerialCalls())\nfunc (mock *Interface) DeviceGetHandleBySerialCalls() []struct {\n\tS string\n} {\n\tvar calls []struct {\n\t\tS string\n\t}\n\tmock.lockDeviceGetHandleBySerial.RLock()\n\tcalls = mock.calls.DeviceGetHandleBySerial\n\tmock.lockDeviceGetHandleBySerial.RUnlock()\n\treturn calls\n}\n\n// DeviceGetHandleByUUID calls DeviceGetHandleByUUIDFunc.\nfunc (mock *Interface) DeviceGetHandleByUUID(s string) (nvml.Device, nvml.Return) {\n\tif mock.DeviceGetHandleByUUIDFunc == nil {\n\t\tpanic(\"Interface.DeviceGetHandleByUUIDFunc: method is nil but Interface.DeviceGetHandleByUUID was just called\")\n\t}\n\tcallInfo := struct {\n\t\tS string\n\t}{\n\t\tS: s,\n\t}\n\tmock.lockDeviceGetHandleByUUID.Lock()\n\tmock.calls.DeviceGetHandleByUUID = append(mock.calls.DeviceGetHandleByUUID, callInfo)\n\tmock.lockDeviceGetHandleByUUID.Unlock()\n\treturn mock.DeviceGetHandleByUUIDFunc(s)\n}\n\n// DeviceGetHandleByUUIDCalls gets all the calls that were made to DeviceGetHandleByUUID.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetHandleByUUIDCalls())\nfunc (mock *Interface) DeviceGetHandleByUUIDCalls() []struct {\n\tS string\n} {\n\tvar calls []struct {\n\t\tS string\n\t}\n\tmock.lockDeviceGetHandleByUUID.RLock()\n\tcalls = mock.calls.DeviceGetHandleByUUID\n\tmock.lockDeviceGetHandleByUUID.RUnlock()\n\treturn calls\n}\n\n// DeviceGetHandleByUUIDV calls DeviceGetHandleByUUIDVFunc.\nfunc (mock *Interface) DeviceGetHandleByUUIDV(uUID *nvml.UUID) (nvml.Device, nvml.Return) {\n\tif mock.DeviceGetHandleByUUIDVFunc == nil {\n\t\tpanic(\"Interface.DeviceGetHandleByUUIDVFunc: method is nil but Interface.DeviceGetHandleByUUIDV was just called\")\n\t}\n\tcallInfo := struct {\n\t\tUUID *nvml.UUID\n\t}{\n\t\tUUID: uUID,\n\t}\n\tmock.lockDeviceGetHandleByUUIDV.Lock()\n\tmock.calls.DeviceGetHandleByUUIDV = append(mock.calls.DeviceGetHandleByUUIDV, callInfo)\n\tmock.lockDeviceGetHandleByUUIDV.Unlock()\n\treturn mock.DeviceGetHandleByUUIDVFunc(uUID)\n}\n\n// DeviceGetHandleByUUIDVCalls gets all the calls that were made to DeviceGetHandleByUUIDV.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetHandleByUUIDVCalls())\nfunc (mock *Interface) DeviceGetHandleByUUIDVCalls() []struct {\n\tUUID *nvml.UUID\n} {\n\tvar calls []struct {\n\t\tUUID *nvml.UUID\n\t}\n\tmock.lockDeviceGetHandleByUUIDV.RLock()\n\tcalls = mock.calls.DeviceGetHandleByUUIDV\n\tmock.lockDeviceGetHandleByUUIDV.RUnlock()\n\treturn calls\n}\n\n// DeviceGetHostVgpuMode calls DeviceGetHostVgpuModeFunc.\nfunc (mock *Interface) DeviceGetHostVgpuMode(device nvml.Device) (nvml.HostVgpuMode, nvml.Return) {\n\tif mock.DeviceGetHostVgpuModeFunc == nil {\n\t\tpanic(\"Interface.DeviceGetHostVgpuModeFunc: method is nil but Interface.DeviceGetHostVgpuMode was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetHostVgpuMode.Lock()\n\tmock.calls.DeviceGetHostVgpuMode = append(mock.calls.DeviceGetHostVgpuMode, callInfo)\n\tmock.lockDeviceGetHostVgpuMode.Unlock()\n\treturn mock.DeviceGetHostVgpuModeFunc(device)\n}\n\n// DeviceGetHostVgpuModeCalls gets all the calls that were made to DeviceGetHostVgpuMode.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetHostVgpuModeCalls())\nfunc (mock *Interface) DeviceGetHostVgpuModeCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetHostVgpuMode.RLock()\n\tcalls = mock.calls.DeviceGetHostVgpuMode\n\tmock.lockDeviceGetHostVgpuMode.RUnlock()\n\treturn calls\n}\n\n// DeviceGetIndex calls DeviceGetIndexFunc.\nfunc (mock *Interface) DeviceGetIndex(device nvml.Device) (int, nvml.Return) {\n\tif mock.DeviceGetIndexFunc == nil {\n\t\tpanic(\"Interface.DeviceGetIndexFunc: method is nil but Interface.DeviceGetIndex was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetIndex.Lock()\n\tmock.calls.DeviceGetIndex = append(mock.calls.DeviceGetIndex, callInfo)\n\tmock.lockDeviceGetIndex.Unlock()\n\treturn mock.DeviceGetIndexFunc(device)\n}\n\n// DeviceGetIndexCalls gets all the calls that were made to DeviceGetIndex.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetIndexCalls())\nfunc (mock *Interface) DeviceGetIndexCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetIndex.RLock()\n\tcalls = mock.calls.DeviceGetIndex\n\tmock.lockDeviceGetIndex.RUnlock()\n\treturn calls\n}\n\n// DeviceGetInforomConfigurationChecksum calls DeviceGetInforomConfigurationChecksumFunc.\nfunc (mock *Interface) DeviceGetInforomConfigurationChecksum(device nvml.Device) (uint32, nvml.Return) {\n\tif mock.DeviceGetInforomConfigurationChecksumFunc == nil {\n\t\tpanic(\"Interface.DeviceGetInforomConfigurationChecksumFunc: method is nil but Interface.DeviceGetInforomConfigurationChecksum was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetInforomConfigurationChecksum.Lock()\n\tmock.calls.DeviceGetInforomConfigurationChecksum = append(mock.calls.DeviceGetInforomConfigurationChecksum, callInfo)\n\tmock.lockDeviceGetInforomConfigurationChecksum.Unlock()\n\treturn mock.DeviceGetInforomConfigurationChecksumFunc(device)\n}\n\n// DeviceGetInforomConfigurationChecksumCalls gets all the calls that were made to DeviceGetInforomConfigurationChecksum.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetInforomConfigurationChecksumCalls())\nfunc (mock *Interface) DeviceGetInforomConfigurationChecksumCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetInforomConfigurationChecksum.RLock()\n\tcalls = mock.calls.DeviceGetInforomConfigurationChecksum\n\tmock.lockDeviceGetInforomConfigurationChecksum.RUnlock()\n\treturn calls\n}\n\n// DeviceGetInforomImageVersion calls DeviceGetInforomImageVersionFunc.\nfunc (mock *Interface) DeviceGetInforomImageVersion(device nvml.Device) (string, nvml.Return) {\n\tif mock.DeviceGetInforomImageVersionFunc == nil {\n\t\tpanic(\"Interface.DeviceGetInforomImageVersionFunc: method is nil but Interface.DeviceGetInforomImageVersion was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetInforomImageVersion.Lock()\n\tmock.calls.DeviceGetInforomImageVersion = append(mock.calls.DeviceGetInforomImageVersion, callInfo)\n\tmock.lockDeviceGetInforomImageVersion.Unlock()\n\treturn mock.DeviceGetInforomImageVersionFunc(device)\n}\n\n// DeviceGetInforomImageVersionCalls gets all the calls that were made to DeviceGetInforomImageVersion.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetInforomImageVersionCalls())\nfunc (mock *Interface) DeviceGetInforomImageVersionCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetInforomImageVersion.RLock()\n\tcalls = mock.calls.DeviceGetInforomImageVersion\n\tmock.lockDeviceGetInforomImageVersion.RUnlock()\n\treturn calls\n}\n\n// DeviceGetInforomVersion calls DeviceGetInforomVersionFunc.\nfunc (mock *Interface) DeviceGetInforomVersion(device nvml.Device, inforomObject nvml.InforomObject) (string, nvml.Return) {\n\tif mock.DeviceGetInforomVersionFunc == nil {\n\t\tpanic(\"Interface.DeviceGetInforomVersionFunc: method is nil but Interface.DeviceGetInforomVersion was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice        nvml.Device\n\t\tInforomObject nvml.InforomObject\n\t}{\n\t\tDevice:        device,\n\t\tInforomObject: inforomObject,\n\t}\n\tmock.lockDeviceGetInforomVersion.Lock()\n\tmock.calls.DeviceGetInforomVersion = append(mock.calls.DeviceGetInforomVersion, callInfo)\n\tmock.lockDeviceGetInforomVersion.Unlock()\n\treturn mock.DeviceGetInforomVersionFunc(device, inforomObject)\n}\n\n// DeviceGetInforomVersionCalls gets all the calls that were made to DeviceGetInforomVersion.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetInforomVersionCalls())\nfunc (mock *Interface) DeviceGetInforomVersionCalls() []struct {\n\tDevice        nvml.Device\n\tInforomObject nvml.InforomObject\n} {\n\tvar calls []struct {\n\t\tDevice        nvml.Device\n\t\tInforomObject nvml.InforomObject\n\t}\n\tmock.lockDeviceGetInforomVersion.RLock()\n\tcalls = mock.calls.DeviceGetInforomVersion\n\tmock.lockDeviceGetInforomVersion.RUnlock()\n\treturn calls\n}\n\n// DeviceGetIrqNum calls DeviceGetIrqNumFunc.\nfunc (mock *Interface) DeviceGetIrqNum(device nvml.Device) (int, nvml.Return) {\n\tif mock.DeviceGetIrqNumFunc == nil {\n\t\tpanic(\"Interface.DeviceGetIrqNumFunc: method is nil but Interface.DeviceGetIrqNum was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetIrqNum.Lock()\n\tmock.calls.DeviceGetIrqNum = append(mock.calls.DeviceGetIrqNum, callInfo)\n\tmock.lockDeviceGetIrqNum.Unlock()\n\treturn mock.DeviceGetIrqNumFunc(device)\n}\n\n// DeviceGetIrqNumCalls gets all the calls that were made to DeviceGetIrqNum.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetIrqNumCalls())\nfunc (mock *Interface) DeviceGetIrqNumCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetIrqNum.RLock()\n\tcalls = mock.calls.DeviceGetIrqNum\n\tmock.lockDeviceGetIrqNum.RUnlock()\n\treturn calls\n}\n\n// DeviceGetJpgUtilization calls DeviceGetJpgUtilizationFunc.\nfunc (mock *Interface) DeviceGetJpgUtilization(device nvml.Device) (uint32, uint32, nvml.Return) {\n\tif mock.DeviceGetJpgUtilizationFunc == nil {\n\t\tpanic(\"Interface.DeviceGetJpgUtilizationFunc: method is nil but Interface.DeviceGetJpgUtilization was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetJpgUtilization.Lock()\n\tmock.calls.DeviceGetJpgUtilization = append(mock.calls.DeviceGetJpgUtilization, callInfo)\n\tmock.lockDeviceGetJpgUtilization.Unlock()\n\treturn mock.DeviceGetJpgUtilizationFunc(device)\n}\n\n// DeviceGetJpgUtilizationCalls gets all the calls that were made to DeviceGetJpgUtilization.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetJpgUtilizationCalls())\nfunc (mock *Interface) DeviceGetJpgUtilizationCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetJpgUtilization.RLock()\n\tcalls = mock.calls.DeviceGetJpgUtilization\n\tmock.lockDeviceGetJpgUtilization.RUnlock()\n\treturn calls\n}\n\n// DeviceGetLastBBXFlushTime calls DeviceGetLastBBXFlushTimeFunc.\nfunc (mock *Interface) DeviceGetLastBBXFlushTime(device nvml.Device) (uint64, uint, nvml.Return) {\n\tif mock.DeviceGetLastBBXFlushTimeFunc == nil {\n\t\tpanic(\"Interface.DeviceGetLastBBXFlushTimeFunc: method is nil but Interface.DeviceGetLastBBXFlushTime was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetLastBBXFlushTime.Lock()\n\tmock.calls.DeviceGetLastBBXFlushTime = append(mock.calls.DeviceGetLastBBXFlushTime, callInfo)\n\tmock.lockDeviceGetLastBBXFlushTime.Unlock()\n\treturn mock.DeviceGetLastBBXFlushTimeFunc(device)\n}\n\n// DeviceGetLastBBXFlushTimeCalls gets all the calls that were made to DeviceGetLastBBXFlushTime.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetLastBBXFlushTimeCalls())\nfunc (mock *Interface) DeviceGetLastBBXFlushTimeCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetLastBBXFlushTime.RLock()\n\tcalls = mock.calls.DeviceGetLastBBXFlushTime\n\tmock.lockDeviceGetLastBBXFlushTime.RUnlock()\n\treturn calls\n}\n\n// DeviceGetMPSComputeRunningProcesses calls DeviceGetMPSComputeRunningProcessesFunc.\nfunc (mock *Interface) DeviceGetMPSComputeRunningProcesses(device nvml.Device) ([]nvml.ProcessInfo, nvml.Return) {\n\tif mock.DeviceGetMPSComputeRunningProcessesFunc == nil {\n\t\tpanic(\"Interface.DeviceGetMPSComputeRunningProcessesFunc: method is nil but Interface.DeviceGetMPSComputeRunningProcesses was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetMPSComputeRunningProcesses.Lock()\n\tmock.calls.DeviceGetMPSComputeRunningProcesses = append(mock.calls.DeviceGetMPSComputeRunningProcesses, callInfo)\n\tmock.lockDeviceGetMPSComputeRunningProcesses.Unlock()\n\treturn mock.DeviceGetMPSComputeRunningProcessesFunc(device)\n}\n\n// DeviceGetMPSComputeRunningProcessesCalls gets all the calls that were made to DeviceGetMPSComputeRunningProcesses.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetMPSComputeRunningProcessesCalls())\nfunc (mock *Interface) DeviceGetMPSComputeRunningProcessesCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetMPSComputeRunningProcesses.RLock()\n\tcalls = mock.calls.DeviceGetMPSComputeRunningProcesses\n\tmock.lockDeviceGetMPSComputeRunningProcesses.RUnlock()\n\treturn calls\n}\n\n// DeviceGetMarginTemperature calls DeviceGetMarginTemperatureFunc.\nfunc (mock *Interface) DeviceGetMarginTemperature(device nvml.Device) (nvml.MarginTemperature, nvml.Return) {\n\tif mock.DeviceGetMarginTemperatureFunc == nil {\n\t\tpanic(\"Interface.DeviceGetMarginTemperatureFunc: method is nil but Interface.DeviceGetMarginTemperature was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetMarginTemperature.Lock()\n\tmock.calls.DeviceGetMarginTemperature = append(mock.calls.DeviceGetMarginTemperature, callInfo)\n\tmock.lockDeviceGetMarginTemperature.Unlock()\n\treturn mock.DeviceGetMarginTemperatureFunc(device)\n}\n\n// DeviceGetMarginTemperatureCalls gets all the calls that were made to DeviceGetMarginTemperature.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetMarginTemperatureCalls())\nfunc (mock *Interface) DeviceGetMarginTemperatureCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetMarginTemperature.RLock()\n\tcalls = mock.calls.DeviceGetMarginTemperature\n\tmock.lockDeviceGetMarginTemperature.RUnlock()\n\treturn calls\n}\n\n// DeviceGetMaxClockInfo calls DeviceGetMaxClockInfoFunc.\nfunc (mock *Interface) DeviceGetMaxClockInfo(device nvml.Device, clockType nvml.ClockType) (uint32, nvml.Return) {\n\tif mock.DeviceGetMaxClockInfoFunc == nil {\n\t\tpanic(\"Interface.DeviceGetMaxClockInfoFunc: method is nil but Interface.DeviceGetMaxClockInfo was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice    nvml.Device\n\t\tClockType nvml.ClockType\n\t}{\n\t\tDevice:    device,\n\t\tClockType: clockType,\n\t}\n\tmock.lockDeviceGetMaxClockInfo.Lock()\n\tmock.calls.DeviceGetMaxClockInfo = append(mock.calls.DeviceGetMaxClockInfo, callInfo)\n\tmock.lockDeviceGetMaxClockInfo.Unlock()\n\treturn mock.DeviceGetMaxClockInfoFunc(device, clockType)\n}\n\n// DeviceGetMaxClockInfoCalls gets all the calls that were made to DeviceGetMaxClockInfo.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetMaxClockInfoCalls())\nfunc (mock *Interface) DeviceGetMaxClockInfoCalls() []struct {\n\tDevice    nvml.Device\n\tClockType nvml.ClockType\n} {\n\tvar calls []struct {\n\t\tDevice    nvml.Device\n\t\tClockType nvml.ClockType\n\t}\n\tmock.lockDeviceGetMaxClockInfo.RLock()\n\tcalls = mock.calls.DeviceGetMaxClockInfo\n\tmock.lockDeviceGetMaxClockInfo.RUnlock()\n\treturn calls\n}\n\n// DeviceGetMaxCustomerBoostClock calls DeviceGetMaxCustomerBoostClockFunc.\nfunc (mock *Interface) DeviceGetMaxCustomerBoostClock(device nvml.Device, clockType nvml.ClockType) (uint32, nvml.Return) {\n\tif mock.DeviceGetMaxCustomerBoostClockFunc == nil {\n\t\tpanic(\"Interface.DeviceGetMaxCustomerBoostClockFunc: method is nil but Interface.DeviceGetMaxCustomerBoostClock was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice    nvml.Device\n\t\tClockType nvml.ClockType\n\t}{\n\t\tDevice:    device,\n\t\tClockType: clockType,\n\t}\n\tmock.lockDeviceGetMaxCustomerBoostClock.Lock()\n\tmock.calls.DeviceGetMaxCustomerBoostClock = append(mock.calls.DeviceGetMaxCustomerBoostClock, callInfo)\n\tmock.lockDeviceGetMaxCustomerBoostClock.Unlock()\n\treturn mock.DeviceGetMaxCustomerBoostClockFunc(device, clockType)\n}\n\n// DeviceGetMaxCustomerBoostClockCalls gets all the calls that were made to DeviceGetMaxCustomerBoostClock.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetMaxCustomerBoostClockCalls())\nfunc (mock *Interface) DeviceGetMaxCustomerBoostClockCalls() []struct {\n\tDevice    nvml.Device\n\tClockType nvml.ClockType\n} {\n\tvar calls []struct {\n\t\tDevice    nvml.Device\n\t\tClockType nvml.ClockType\n\t}\n\tmock.lockDeviceGetMaxCustomerBoostClock.RLock()\n\tcalls = mock.calls.DeviceGetMaxCustomerBoostClock\n\tmock.lockDeviceGetMaxCustomerBoostClock.RUnlock()\n\treturn calls\n}\n\n// DeviceGetMaxMigDeviceCount calls DeviceGetMaxMigDeviceCountFunc.\nfunc (mock *Interface) DeviceGetMaxMigDeviceCount(device nvml.Device) (int, nvml.Return) {\n\tif mock.DeviceGetMaxMigDeviceCountFunc == nil {\n\t\tpanic(\"Interface.DeviceGetMaxMigDeviceCountFunc: method is nil but Interface.DeviceGetMaxMigDeviceCount was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetMaxMigDeviceCount.Lock()\n\tmock.calls.DeviceGetMaxMigDeviceCount = append(mock.calls.DeviceGetMaxMigDeviceCount, callInfo)\n\tmock.lockDeviceGetMaxMigDeviceCount.Unlock()\n\treturn mock.DeviceGetMaxMigDeviceCountFunc(device)\n}\n\n// DeviceGetMaxMigDeviceCountCalls gets all the calls that were made to DeviceGetMaxMigDeviceCount.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetMaxMigDeviceCountCalls())\nfunc (mock *Interface) DeviceGetMaxMigDeviceCountCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetMaxMigDeviceCount.RLock()\n\tcalls = mock.calls.DeviceGetMaxMigDeviceCount\n\tmock.lockDeviceGetMaxMigDeviceCount.RUnlock()\n\treturn calls\n}\n\n// DeviceGetMaxPcieLinkGeneration calls DeviceGetMaxPcieLinkGenerationFunc.\nfunc (mock *Interface) DeviceGetMaxPcieLinkGeneration(device nvml.Device) (int, nvml.Return) {\n\tif mock.DeviceGetMaxPcieLinkGenerationFunc == nil {\n\t\tpanic(\"Interface.DeviceGetMaxPcieLinkGenerationFunc: method is nil but Interface.DeviceGetMaxPcieLinkGeneration was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetMaxPcieLinkGeneration.Lock()\n\tmock.calls.DeviceGetMaxPcieLinkGeneration = append(mock.calls.DeviceGetMaxPcieLinkGeneration, callInfo)\n\tmock.lockDeviceGetMaxPcieLinkGeneration.Unlock()\n\treturn mock.DeviceGetMaxPcieLinkGenerationFunc(device)\n}\n\n// DeviceGetMaxPcieLinkGenerationCalls gets all the calls that were made to DeviceGetMaxPcieLinkGeneration.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetMaxPcieLinkGenerationCalls())\nfunc (mock *Interface) DeviceGetMaxPcieLinkGenerationCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetMaxPcieLinkGeneration.RLock()\n\tcalls = mock.calls.DeviceGetMaxPcieLinkGeneration\n\tmock.lockDeviceGetMaxPcieLinkGeneration.RUnlock()\n\treturn calls\n}\n\n// DeviceGetMaxPcieLinkWidth calls DeviceGetMaxPcieLinkWidthFunc.\nfunc (mock *Interface) DeviceGetMaxPcieLinkWidth(device nvml.Device) (int, nvml.Return) {\n\tif mock.DeviceGetMaxPcieLinkWidthFunc == nil {\n\t\tpanic(\"Interface.DeviceGetMaxPcieLinkWidthFunc: method is nil but Interface.DeviceGetMaxPcieLinkWidth was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetMaxPcieLinkWidth.Lock()\n\tmock.calls.DeviceGetMaxPcieLinkWidth = append(mock.calls.DeviceGetMaxPcieLinkWidth, callInfo)\n\tmock.lockDeviceGetMaxPcieLinkWidth.Unlock()\n\treturn mock.DeviceGetMaxPcieLinkWidthFunc(device)\n}\n\n// DeviceGetMaxPcieLinkWidthCalls gets all the calls that were made to DeviceGetMaxPcieLinkWidth.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetMaxPcieLinkWidthCalls())\nfunc (mock *Interface) DeviceGetMaxPcieLinkWidthCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetMaxPcieLinkWidth.RLock()\n\tcalls = mock.calls.DeviceGetMaxPcieLinkWidth\n\tmock.lockDeviceGetMaxPcieLinkWidth.RUnlock()\n\treturn calls\n}\n\n// DeviceGetMemClkMinMaxVfOffset calls DeviceGetMemClkMinMaxVfOffsetFunc.\nfunc (mock *Interface) DeviceGetMemClkMinMaxVfOffset(device nvml.Device) (int, int, nvml.Return) {\n\tif mock.DeviceGetMemClkMinMaxVfOffsetFunc == nil {\n\t\tpanic(\"Interface.DeviceGetMemClkMinMaxVfOffsetFunc: method is nil but Interface.DeviceGetMemClkMinMaxVfOffset was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetMemClkMinMaxVfOffset.Lock()\n\tmock.calls.DeviceGetMemClkMinMaxVfOffset = append(mock.calls.DeviceGetMemClkMinMaxVfOffset, callInfo)\n\tmock.lockDeviceGetMemClkMinMaxVfOffset.Unlock()\n\treturn mock.DeviceGetMemClkMinMaxVfOffsetFunc(device)\n}\n\n// DeviceGetMemClkMinMaxVfOffsetCalls gets all the calls that were made to DeviceGetMemClkMinMaxVfOffset.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetMemClkMinMaxVfOffsetCalls())\nfunc (mock *Interface) DeviceGetMemClkMinMaxVfOffsetCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetMemClkMinMaxVfOffset.RLock()\n\tcalls = mock.calls.DeviceGetMemClkMinMaxVfOffset\n\tmock.lockDeviceGetMemClkMinMaxVfOffset.RUnlock()\n\treturn calls\n}\n\n// DeviceGetMemClkVfOffset calls DeviceGetMemClkVfOffsetFunc.\nfunc (mock *Interface) DeviceGetMemClkVfOffset(device nvml.Device) (int, nvml.Return) {\n\tif mock.DeviceGetMemClkVfOffsetFunc == nil {\n\t\tpanic(\"Interface.DeviceGetMemClkVfOffsetFunc: method is nil but Interface.DeviceGetMemClkVfOffset was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetMemClkVfOffset.Lock()\n\tmock.calls.DeviceGetMemClkVfOffset = append(mock.calls.DeviceGetMemClkVfOffset, callInfo)\n\tmock.lockDeviceGetMemClkVfOffset.Unlock()\n\treturn mock.DeviceGetMemClkVfOffsetFunc(device)\n}\n\n// DeviceGetMemClkVfOffsetCalls gets all the calls that were made to DeviceGetMemClkVfOffset.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetMemClkVfOffsetCalls())\nfunc (mock *Interface) DeviceGetMemClkVfOffsetCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetMemClkVfOffset.RLock()\n\tcalls = mock.calls.DeviceGetMemClkVfOffset\n\tmock.lockDeviceGetMemClkVfOffset.RUnlock()\n\treturn calls\n}\n\n// DeviceGetMemoryAffinity calls DeviceGetMemoryAffinityFunc.\nfunc (mock *Interface) DeviceGetMemoryAffinity(device nvml.Device, n int, affinityScope nvml.AffinityScope) ([]uint, nvml.Return) {\n\tif mock.DeviceGetMemoryAffinityFunc == nil {\n\t\tpanic(\"Interface.DeviceGetMemoryAffinityFunc: method is nil but Interface.DeviceGetMemoryAffinity was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice        nvml.Device\n\t\tN             int\n\t\tAffinityScope nvml.AffinityScope\n\t}{\n\t\tDevice:        device,\n\t\tN:             n,\n\t\tAffinityScope: affinityScope,\n\t}\n\tmock.lockDeviceGetMemoryAffinity.Lock()\n\tmock.calls.DeviceGetMemoryAffinity = append(mock.calls.DeviceGetMemoryAffinity, callInfo)\n\tmock.lockDeviceGetMemoryAffinity.Unlock()\n\treturn mock.DeviceGetMemoryAffinityFunc(device, n, affinityScope)\n}\n\n// DeviceGetMemoryAffinityCalls gets all the calls that were made to DeviceGetMemoryAffinity.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetMemoryAffinityCalls())\nfunc (mock *Interface) DeviceGetMemoryAffinityCalls() []struct {\n\tDevice        nvml.Device\n\tN             int\n\tAffinityScope nvml.AffinityScope\n} {\n\tvar calls []struct {\n\t\tDevice        nvml.Device\n\t\tN             int\n\t\tAffinityScope nvml.AffinityScope\n\t}\n\tmock.lockDeviceGetMemoryAffinity.RLock()\n\tcalls = mock.calls.DeviceGetMemoryAffinity\n\tmock.lockDeviceGetMemoryAffinity.RUnlock()\n\treturn calls\n}\n\n// DeviceGetMemoryBusWidth calls DeviceGetMemoryBusWidthFunc.\nfunc (mock *Interface) DeviceGetMemoryBusWidth(device nvml.Device) (uint32, nvml.Return) {\n\tif mock.DeviceGetMemoryBusWidthFunc == nil {\n\t\tpanic(\"Interface.DeviceGetMemoryBusWidthFunc: method is nil but Interface.DeviceGetMemoryBusWidth was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetMemoryBusWidth.Lock()\n\tmock.calls.DeviceGetMemoryBusWidth = append(mock.calls.DeviceGetMemoryBusWidth, callInfo)\n\tmock.lockDeviceGetMemoryBusWidth.Unlock()\n\treturn mock.DeviceGetMemoryBusWidthFunc(device)\n}\n\n// DeviceGetMemoryBusWidthCalls gets all the calls that were made to DeviceGetMemoryBusWidth.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetMemoryBusWidthCalls())\nfunc (mock *Interface) DeviceGetMemoryBusWidthCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetMemoryBusWidth.RLock()\n\tcalls = mock.calls.DeviceGetMemoryBusWidth\n\tmock.lockDeviceGetMemoryBusWidth.RUnlock()\n\treturn calls\n}\n\n// DeviceGetMemoryErrorCounter calls DeviceGetMemoryErrorCounterFunc.\nfunc (mock *Interface) DeviceGetMemoryErrorCounter(device nvml.Device, memoryErrorType nvml.MemoryErrorType, eccCounterType nvml.EccCounterType, memoryLocation nvml.MemoryLocation) (uint64, nvml.Return) {\n\tif mock.DeviceGetMemoryErrorCounterFunc == nil {\n\t\tpanic(\"Interface.DeviceGetMemoryErrorCounterFunc: method is nil but Interface.DeviceGetMemoryErrorCounter was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice          nvml.Device\n\t\tMemoryErrorType nvml.MemoryErrorType\n\t\tEccCounterType  nvml.EccCounterType\n\t\tMemoryLocation  nvml.MemoryLocation\n\t}{\n\t\tDevice:          device,\n\t\tMemoryErrorType: memoryErrorType,\n\t\tEccCounterType:  eccCounterType,\n\t\tMemoryLocation:  memoryLocation,\n\t}\n\tmock.lockDeviceGetMemoryErrorCounter.Lock()\n\tmock.calls.DeviceGetMemoryErrorCounter = append(mock.calls.DeviceGetMemoryErrorCounter, callInfo)\n\tmock.lockDeviceGetMemoryErrorCounter.Unlock()\n\treturn mock.DeviceGetMemoryErrorCounterFunc(device, memoryErrorType, eccCounterType, memoryLocation)\n}\n\n// DeviceGetMemoryErrorCounterCalls gets all the calls that were made to DeviceGetMemoryErrorCounter.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetMemoryErrorCounterCalls())\nfunc (mock *Interface) DeviceGetMemoryErrorCounterCalls() []struct {\n\tDevice          nvml.Device\n\tMemoryErrorType nvml.MemoryErrorType\n\tEccCounterType  nvml.EccCounterType\n\tMemoryLocation  nvml.MemoryLocation\n} {\n\tvar calls []struct {\n\t\tDevice          nvml.Device\n\t\tMemoryErrorType nvml.MemoryErrorType\n\t\tEccCounterType  nvml.EccCounterType\n\t\tMemoryLocation  nvml.MemoryLocation\n\t}\n\tmock.lockDeviceGetMemoryErrorCounter.RLock()\n\tcalls = mock.calls.DeviceGetMemoryErrorCounter\n\tmock.lockDeviceGetMemoryErrorCounter.RUnlock()\n\treturn calls\n}\n\n// DeviceGetMemoryInfo calls DeviceGetMemoryInfoFunc.\nfunc (mock *Interface) DeviceGetMemoryInfo(device nvml.Device) (nvml.Memory, nvml.Return) {\n\tif mock.DeviceGetMemoryInfoFunc == nil {\n\t\tpanic(\"Interface.DeviceGetMemoryInfoFunc: method is nil but Interface.DeviceGetMemoryInfo was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetMemoryInfo.Lock()\n\tmock.calls.DeviceGetMemoryInfo = append(mock.calls.DeviceGetMemoryInfo, callInfo)\n\tmock.lockDeviceGetMemoryInfo.Unlock()\n\treturn mock.DeviceGetMemoryInfoFunc(device)\n}\n\n// DeviceGetMemoryInfoCalls gets all the calls that were made to DeviceGetMemoryInfo.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetMemoryInfoCalls())\nfunc (mock *Interface) DeviceGetMemoryInfoCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetMemoryInfo.RLock()\n\tcalls = mock.calls.DeviceGetMemoryInfo\n\tmock.lockDeviceGetMemoryInfo.RUnlock()\n\treturn calls\n}\n\n// DeviceGetMemoryInfo_v2 calls DeviceGetMemoryInfo_v2Func.\nfunc (mock *Interface) DeviceGetMemoryInfo_v2(device nvml.Device) (nvml.Memory_v2, nvml.Return) {\n\tif mock.DeviceGetMemoryInfo_v2Func == nil {\n\t\tpanic(\"Interface.DeviceGetMemoryInfo_v2Func: method is nil but Interface.DeviceGetMemoryInfo_v2 was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetMemoryInfo_v2.Lock()\n\tmock.calls.DeviceGetMemoryInfo_v2 = append(mock.calls.DeviceGetMemoryInfo_v2, callInfo)\n\tmock.lockDeviceGetMemoryInfo_v2.Unlock()\n\treturn mock.DeviceGetMemoryInfo_v2Func(device)\n}\n\n// DeviceGetMemoryInfo_v2Calls gets all the calls that were made to DeviceGetMemoryInfo_v2.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetMemoryInfo_v2Calls())\nfunc (mock *Interface) DeviceGetMemoryInfo_v2Calls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetMemoryInfo_v2.RLock()\n\tcalls = mock.calls.DeviceGetMemoryInfo_v2\n\tmock.lockDeviceGetMemoryInfo_v2.RUnlock()\n\treturn calls\n}\n\n// DeviceGetMigDeviceHandleByIndex calls DeviceGetMigDeviceHandleByIndexFunc.\nfunc (mock *Interface) DeviceGetMigDeviceHandleByIndex(device nvml.Device, n int) (nvml.Device, nvml.Return) {\n\tif mock.DeviceGetMigDeviceHandleByIndexFunc == nil {\n\t\tpanic(\"Interface.DeviceGetMigDeviceHandleByIndexFunc: method is nil but Interface.DeviceGetMigDeviceHandleByIndex was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t\tN      int\n\t}{\n\t\tDevice: device,\n\t\tN:      n,\n\t}\n\tmock.lockDeviceGetMigDeviceHandleByIndex.Lock()\n\tmock.calls.DeviceGetMigDeviceHandleByIndex = append(mock.calls.DeviceGetMigDeviceHandleByIndex, callInfo)\n\tmock.lockDeviceGetMigDeviceHandleByIndex.Unlock()\n\treturn mock.DeviceGetMigDeviceHandleByIndexFunc(device, n)\n}\n\n// DeviceGetMigDeviceHandleByIndexCalls gets all the calls that were made to DeviceGetMigDeviceHandleByIndex.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetMigDeviceHandleByIndexCalls())\nfunc (mock *Interface) DeviceGetMigDeviceHandleByIndexCalls() []struct {\n\tDevice nvml.Device\n\tN      int\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t\tN      int\n\t}\n\tmock.lockDeviceGetMigDeviceHandleByIndex.RLock()\n\tcalls = mock.calls.DeviceGetMigDeviceHandleByIndex\n\tmock.lockDeviceGetMigDeviceHandleByIndex.RUnlock()\n\treturn calls\n}\n\n// DeviceGetMigMode calls DeviceGetMigModeFunc.\nfunc (mock *Interface) DeviceGetMigMode(device nvml.Device) (int, int, nvml.Return) {\n\tif mock.DeviceGetMigModeFunc == nil {\n\t\tpanic(\"Interface.DeviceGetMigModeFunc: method is nil but Interface.DeviceGetMigMode was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetMigMode.Lock()\n\tmock.calls.DeviceGetMigMode = append(mock.calls.DeviceGetMigMode, callInfo)\n\tmock.lockDeviceGetMigMode.Unlock()\n\treturn mock.DeviceGetMigModeFunc(device)\n}\n\n// DeviceGetMigModeCalls gets all the calls that were made to DeviceGetMigMode.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetMigModeCalls())\nfunc (mock *Interface) DeviceGetMigModeCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetMigMode.RLock()\n\tcalls = mock.calls.DeviceGetMigMode\n\tmock.lockDeviceGetMigMode.RUnlock()\n\treturn calls\n}\n\n// DeviceGetMinMaxClockOfPState calls DeviceGetMinMaxClockOfPStateFunc.\nfunc (mock *Interface) DeviceGetMinMaxClockOfPState(device nvml.Device, clockType nvml.ClockType, pstates nvml.Pstates) (uint32, uint32, nvml.Return) {\n\tif mock.DeviceGetMinMaxClockOfPStateFunc == nil {\n\t\tpanic(\"Interface.DeviceGetMinMaxClockOfPStateFunc: method is nil but Interface.DeviceGetMinMaxClockOfPState was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice    nvml.Device\n\t\tClockType nvml.ClockType\n\t\tPstates   nvml.Pstates\n\t}{\n\t\tDevice:    device,\n\t\tClockType: clockType,\n\t\tPstates:   pstates,\n\t}\n\tmock.lockDeviceGetMinMaxClockOfPState.Lock()\n\tmock.calls.DeviceGetMinMaxClockOfPState = append(mock.calls.DeviceGetMinMaxClockOfPState, callInfo)\n\tmock.lockDeviceGetMinMaxClockOfPState.Unlock()\n\treturn mock.DeviceGetMinMaxClockOfPStateFunc(device, clockType, pstates)\n}\n\n// DeviceGetMinMaxClockOfPStateCalls gets all the calls that were made to DeviceGetMinMaxClockOfPState.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetMinMaxClockOfPStateCalls())\nfunc (mock *Interface) DeviceGetMinMaxClockOfPStateCalls() []struct {\n\tDevice    nvml.Device\n\tClockType nvml.ClockType\n\tPstates   nvml.Pstates\n} {\n\tvar calls []struct {\n\t\tDevice    nvml.Device\n\t\tClockType nvml.ClockType\n\t\tPstates   nvml.Pstates\n\t}\n\tmock.lockDeviceGetMinMaxClockOfPState.RLock()\n\tcalls = mock.calls.DeviceGetMinMaxClockOfPState\n\tmock.lockDeviceGetMinMaxClockOfPState.RUnlock()\n\treturn calls\n}\n\n// DeviceGetMinMaxFanSpeed calls DeviceGetMinMaxFanSpeedFunc.\nfunc (mock *Interface) DeviceGetMinMaxFanSpeed(device nvml.Device) (int, int, nvml.Return) {\n\tif mock.DeviceGetMinMaxFanSpeedFunc == nil {\n\t\tpanic(\"Interface.DeviceGetMinMaxFanSpeedFunc: method is nil but Interface.DeviceGetMinMaxFanSpeed was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetMinMaxFanSpeed.Lock()\n\tmock.calls.DeviceGetMinMaxFanSpeed = append(mock.calls.DeviceGetMinMaxFanSpeed, callInfo)\n\tmock.lockDeviceGetMinMaxFanSpeed.Unlock()\n\treturn mock.DeviceGetMinMaxFanSpeedFunc(device)\n}\n\n// DeviceGetMinMaxFanSpeedCalls gets all the calls that were made to DeviceGetMinMaxFanSpeed.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetMinMaxFanSpeedCalls())\nfunc (mock *Interface) DeviceGetMinMaxFanSpeedCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetMinMaxFanSpeed.RLock()\n\tcalls = mock.calls.DeviceGetMinMaxFanSpeed\n\tmock.lockDeviceGetMinMaxFanSpeed.RUnlock()\n\treturn calls\n}\n\n// DeviceGetMinorNumber calls DeviceGetMinorNumberFunc.\nfunc (mock *Interface) DeviceGetMinorNumber(device nvml.Device) (int, nvml.Return) {\n\tif mock.DeviceGetMinorNumberFunc == nil {\n\t\tpanic(\"Interface.DeviceGetMinorNumberFunc: method is nil but Interface.DeviceGetMinorNumber was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetMinorNumber.Lock()\n\tmock.calls.DeviceGetMinorNumber = append(mock.calls.DeviceGetMinorNumber, callInfo)\n\tmock.lockDeviceGetMinorNumber.Unlock()\n\treturn mock.DeviceGetMinorNumberFunc(device)\n}\n\n// DeviceGetMinorNumberCalls gets all the calls that were made to DeviceGetMinorNumber.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetMinorNumberCalls())\nfunc (mock *Interface) DeviceGetMinorNumberCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetMinorNumber.RLock()\n\tcalls = mock.calls.DeviceGetMinorNumber\n\tmock.lockDeviceGetMinorNumber.RUnlock()\n\treturn calls\n}\n\n// DeviceGetModuleId calls DeviceGetModuleIdFunc.\nfunc (mock *Interface) DeviceGetModuleId(device nvml.Device) (int, nvml.Return) {\n\tif mock.DeviceGetModuleIdFunc == nil {\n\t\tpanic(\"Interface.DeviceGetModuleIdFunc: method is nil but Interface.DeviceGetModuleId was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetModuleId.Lock()\n\tmock.calls.DeviceGetModuleId = append(mock.calls.DeviceGetModuleId, callInfo)\n\tmock.lockDeviceGetModuleId.Unlock()\n\treturn mock.DeviceGetModuleIdFunc(device)\n}\n\n// DeviceGetModuleIdCalls gets all the calls that were made to DeviceGetModuleId.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetModuleIdCalls())\nfunc (mock *Interface) DeviceGetModuleIdCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetModuleId.RLock()\n\tcalls = mock.calls.DeviceGetModuleId\n\tmock.lockDeviceGetModuleId.RUnlock()\n\treturn calls\n}\n\n// DeviceGetMultiGpuBoard calls DeviceGetMultiGpuBoardFunc.\nfunc (mock *Interface) DeviceGetMultiGpuBoard(device nvml.Device) (int, nvml.Return) {\n\tif mock.DeviceGetMultiGpuBoardFunc == nil {\n\t\tpanic(\"Interface.DeviceGetMultiGpuBoardFunc: method is nil but Interface.DeviceGetMultiGpuBoard was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetMultiGpuBoard.Lock()\n\tmock.calls.DeviceGetMultiGpuBoard = append(mock.calls.DeviceGetMultiGpuBoard, callInfo)\n\tmock.lockDeviceGetMultiGpuBoard.Unlock()\n\treturn mock.DeviceGetMultiGpuBoardFunc(device)\n}\n\n// DeviceGetMultiGpuBoardCalls gets all the calls that were made to DeviceGetMultiGpuBoard.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetMultiGpuBoardCalls())\nfunc (mock *Interface) DeviceGetMultiGpuBoardCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetMultiGpuBoard.RLock()\n\tcalls = mock.calls.DeviceGetMultiGpuBoard\n\tmock.lockDeviceGetMultiGpuBoard.RUnlock()\n\treturn calls\n}\n\n// DeviceGetName calls DeviceGetNameFunc.\nfunc (mock *Interface) DeviceGetName(device nvml.Device) (string, nvml.Return) {\n\tif mock.DeviceGetNameFunc == nil {\n\t\tpanic(\"Interface.DeviceGetNameFunc: method is nil but Interface.DeviceGetName was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetName.Lock()\n\tmock.calls.DeviceGetName = append(mock.calls.DeviceGetName, callInfo)\n\tmock.lockDeviceGetName.Unlock()\n\treturn mock.DeviceGetNameFunc(device)\n}\n\n// DeviceGetNameCalls gets all the calls that were made to DeviceGetName.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetNameCalls())\nfunc (mock *Interface) DeviceGetNameCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetName.RLock()\n\tcalls = mock.calls.DeviceGetName\n\tmock.lockDeviceGetName.RUnlock()\n\treturn calls\n}\n\n// DeviceGetNumFans calls DeviceGetNumFansFunc.\nfunc (mock *Interface) DeviceGetNumFans(device nvml.Device) (int, nvml.Return) {\n\tif mock.DeviceGetNumFansFunc == nil {\n\t\tpanic(\"Interface.DeviceGetNumFansFunc: method is nil but Interface.DeviceGetNumFans was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetNumFans.Lock()\n\tmock.calls.DeviceGetNumFans = append(mock.calls.DeviceGetNumFans, callInfo)\n\tmock.lockDeviceGetNumFans.Unlock()\n\treturn mock.DeviceGetNumFansFunc(device)\n}\n\n// DeviceGetNumFansCalls gets all the calls that were made to DeviceGetNumFans.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetNumFansCalls())\nfunc (mock *Interface) DeviceGetNumFansCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetNumFans.RLock()\n\tcalls = mock.calls.DeviceGetNumFans\n\tmock.lockDeviceGetNumFans.RUnlock()\n\treturn calls\n}\n\n// DeviceGetNumGpuCores calls DeviceGetNumGpuCoresFunc.\nfunc (mock *Interface) DeviceGetNumGpuCores(device nvml.Device) (int, nvml.Return) {\n\tif mock.DeviceGetNumGpuCoresFunc == nil {\n\t\tpanic(\"Interface.DeviceGetNumGpuCoresFunc: method is nil but Interface.DeviceGetNumGpuCores was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetNumGpuCores.Lock()\n\tmock.calls.DeviceGetNumGpuCores = append(mock.calls.DeviceGetNumGpuCores, callInfo)\n\tmock.lockDeviceGetNumGpuCores.Unlock()\n\treturn mock.DeviceGetNumGpuCoresFunc(device)\n}\n\n// DeviceGetNumGpuCoresCalls gets all the calls that were made to DeviceGetNumGpuCores.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetNumGpuCoresCalls())\nfunc (mock *Interface) DeviceGetNumGpuCoresCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetNumGpuCores.RLock()\n\tcalls = mock.calls.DeviceGetNumGpuCores\n\tmock.lockDeviceGetNumGpuCores.RUnlock()\n\treturn calls\n}\n\n// DeviceGetNumaNodeId calls DeviceGetNumaNodeIdFunc.\nfunc (mock *Interface) DeviceGetNumaNodeId(device nvml.Device) (int, nvml.Return) {\n\tif mock.DeviceGetNumaNodeIdFunc == nil {\n\t\tpanic(\"Interface.DeviceGetNumaNodeIdFunc: method is nil but Interface.DeviceGetNumaNodeId was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetNumaNodeId.Lock()\n\tmock.calls.DeviceGetNumaNodeId = append(mock.calls.DeviceGetNumaNodeId, callInfo)\n\tmock.lockDeviceGetNumaNodeId.Unlock()\n\treturn mock.DeviceGetNumaNodeIdFunc(device)\n}\n\n// DeviceGetNumaNodeIdCalls gets all the calls that were made to DeviceGetNumaNodeId.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetNumaNodeIdCalls())\nfunc (mock *Interface) DeviceGetNumaNodeIdCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetNumaNodeId.RLock()\n\tcalls = mock.calls.DeviceGetNumaNodeId\n\tmock.lockDeviceGetNumaNodeId.RUnlock()\n\treturn calls\n}\n\n// DeviceGetNvLinkCapability calls DeviceGetNvLinkCapabilityFunc.\nfunc (mock *Interface) DeviceGetNvLinkCapability(device nvml.Device, n int, nvLinkCapability nvml.NvLinkCapability) (uint32, nvml.Return) {\n\tif mock.DeviceGetNvLinkCapabilityFunc == nil {\n\t\tpanic(\"Interface.DeviceGetNvLinkCapabilityFunc: method is nil but Interface.DeviceGetNvLinkCapability was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice           nvml.Device\n\t\tN                int\n\t\tNvLinkCapability nvml.NvLinkCapability\n\t}{\n\t\tDevice:           device,\n\t\tN:                n,\n\t\tNvLinkCapability: nvLinkCapability,\n\t}\n\tmock.lockDeviceGetNvLinkCapability.Lock()\n\tmock.calls.DeviceGetNvLinkCapability = append(mock.calls.DeviceGetNvLinkCapability, callInfo)\n\tmock.lockDeviceGetNvLinkCapability.Unlock()\n\treturn mock.DeviceGetNvLinkCapabilityFunc(device, n, nvLinkCapability)\n}\n\n// DeviceGetNvLinkCapabilityCalls gets all the calls that were made to DeviceGetNvLinkCapability.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetNvLinkCapabilityCalls())\nfunc (mock *Interface) DeviceGetNvLinkCapabilityCalls() []struct {\n\tDevice           nvml.Device\n\tN                int\n\tNvLinkCapability nvml.NvLinkCapability\n} {\n\tvar calls []struct {\n\t\tDevice           nvml.Device\n\t\tN                int\n\t\tNvLinkCapability nvml.NvLinkCapability\n\t}\n\tmock.lockDeviceGetNvLinkCapability.RLock()\n\tcalls = mock.calls.DeviceGetNvLinkCapability\n\tmock.lockDeviceGetNvLinkCapability.RUnlock()\n\treturn calls\n}\n\n// DeviceGetNvLinkErrorCounter calls DeviceGetNvLinkErrorCounterFunc.\nfunc (mock *Interface) DeviceGetNvLinkErrorCounter(device nvml.Device, n int, nvLinkErrorCounter nvml.NvLinkErrorCounter) (uint64, nvml.Return) {\n\tif mock.DeviceGetNvLinkErrorCounterFunc == nil {\n\t\tpanic(\"Interface.DeviceGetNvLinkErrorCounterFunc: method is nil but Interface.DeviceGetNvLinkErrorCounter was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice             nvml.Device\n\t\tN                  int\n\t\tNvLinkErrorCounter nvml.NvLinkErrorCounter\n\t}{\n\t\tDevice:             device,\n\t\tN:                  n,\n\t\tNvLinkErrorCounter: nvLinkErrorCounter,\n\t}\n\tmock.lockDeviceGetNvLinkErrorCounter.Lock()\n\tmock.calls.DeviceGetNvLinkErrorCounter = append(mock.calls.DeviceGetNvLinkErrorCounter, callInfo)\n\tmock.lockDeviceGetNvLinkErrorCounter.Unlock()\n\treturn mock.DeviceGetNvLinkErrorCounterFunc(device, n, nvLinkErrorCounter)\n}\n\n// DeviceGetNvLinkErrorCounterCalls gets all the calls that were made to DeviceGetNvLinkErrorCounter.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetNvLinkErrorCounterCalls())\nfunc (mock *Interface) DeviceGetNvLinkErrorCounterCalls() []struct {\n\tDevice             nvml.Device\n\tN                  int\n\tNvLinkErrorCounter nvml.NvLinkErrorCounter\n} {\n\tvar calls []struct {\n\t\tDevice             nvml.Device\n\t\tN                  int\n\t\tNvLinkErrorCounter nvml.NvLinkErrorCounter\n\t}\n\tmock.lockDeviceGetNvLinkErrorCounter.RLock()\n\tcalls = mock.calls.DeviceGetNvLinkErrorCounter\n\tmock.lockDeviceGetNvLinkErrorCounter.RUnlock()\n\treturn calls\n}\n\n// DeviceGetNvLinkInfo calls DeviceGetNvLinkInfoFunc.\nfunc (mock *Interface) DeviceGetNvLinkInfo(device nvml.Device) nvml.NvLinkInfoHandler {\n\tif mock.DeviceGetNvLinkInfoFunc == nil {\n\t\tpanic(\"Interface.DeviceGetNvLinkInfoFunc: method is nil but Interface.DeviceGetNvLinkInfo was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetNvLinkInfo.Lock()\n\tmock.calls.DeviceGetNvLinkInfo = append(mock.calls.DeviceGetNvLinkInfo, callInfo)\n\tmock.lockDeviceGetNvLinkInfo.Unlock()\n\treturn mock.DeviceGetNvLinkInfoFunc(device)\n}\n\n// DeviceGetNvLinkInfoCalls gets all the calls that were made to DeviceGetNvLinkInfo.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetNvLinkInfoCalls())\nfunc (mock *Interface) DeviceGetNvLinkInfoCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetNvLinkInfo.RLock()\n\tcalls = mock.calls.DeviceGetNvLinkInfo\n\tmock.lockDeviceGetNvLinkInfo.RUnlock()\n\treturn calls\n}\n\n// DeviceGetNvLinkRemoteDeviceType calls DeviceGetNvLinkRemoteDeviceTypeFunc.\nfunc (mock *Interface) DeviceGetNvLinkRemoteDeviceType(device nvml.Device, n int) (nvml.IntNvLinkDeviceType, nvml.Return) {\n\tif mock.DeviceGetNvLinkRemoteDeviceTypeFunc == nil {\n\t\tpanic(\"Interface.DeviceGetNvLinkRemoteDeviceTypeFunc: method is nil but Interface.DeviceGetNvLinkRemoteDeviceType was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t\tN      int\n\t}{\n\t\tDevice: device,\n\t\tN:      n,\n\t}\n\tmock.lockDeviceGetNvLinkRemoteDeviceType.Lock()\n\tmock.calls.DeviceGetNvLinkRemoteDeviceType = append(mock.calls.DeviceGetNvLinkRemoteDeviceType, callInfo)\n\tmock.lockDeviceGetNvLinkRemoteDeviceType.Unlock()\n\treturn mock.DeviceGetNvLinkRemoteDeviceTypeFunc(device, n)\n}\n\n// DeviceGetNvLinkRemoteDeviceTypeCalls gets all the calls that were made to DeviceGetNvLinkRemoteDeviceType.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetNvLinkRemoteDeviceTypeCalls())\nfunc (mock *Interface) DeviceGetNvLinkRemoteDeviceTypeCalls() []struct {\n\tDevice nvml.Device\n\tN      int\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t\tN      int\n\t}\n\tmock.lockDeviceGetNvLinkRemoteDeviceType.RLock()\n\tcalls = mock.calls.DeviceGetNvLinkRemoteDeviceType\n\tmock.lockDeviceGetNvLinkRemoteDeviceType.RUnlock()\n\treturn calls\n}\n\n// DeviceGetNvLinkRemotePciInfo calls DeviceGetNvLinkRemotePciInfoFunc.\nfunc (mock *Interface) DeviceGetNvLinkRemotePciInfo(device nvml.Device, n int) (nvml.PciInfo, nvml.Return) {\n\tif mock.DeviceGetNvLinkRemotePciInfoFunc == nil {\n\t\tpanic(\"Interface.DeviceGetNvLinkRemotePciInfoFunc: method is nil but Interface.DeviceGetNvLinkRemotePciInfo was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t\tN      int\n\t}{\n\t\tDevice: device,\n\t\tN:      n,\n\t}\n\tmock.lockDeviceGetNvLinkRemotePciInfo.Lock()\n\tmock.calls.DeviceGetNvLinkRemotePciInfo = append(mock.calls.DeviceGetNvLinkRemotePciInfo, callInfo)\n\tmock.lockDeviceGetNvLinkRemotePciInfo.Unlock()\n\treturn mock.DeviceGetNvLinkRemotePciInfoFunc(device, n)\n}\n\n// DeviceGetNvLinkRemotePciInfoCalls gets all the calls that were made to DeviceGetNvLinkRemotePciInfo.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetNvLinkRemotePciInfoCalls())\nfunc (mock *Interface) DeviceGetNvLinkRemotePciInfoCalls() []struct {\n\tDevice nvml.Device\n\tN      int\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t\tN      int\n\t}\n\tmock.lockDeviceGetNvLinkRemotePciInfo.RLock()\n\tcalls = mock.calls.DeviceGetNvLinkRemotePciInfo\n\tmock.lockDeviceGetNvLinkRemotePciInfo.RUnlock()\n\treturn calls\n}\n\n// DeviceGetNvLinkState calls DeviceGetNvLinkStateFunc.\nfunc (mock *Interface) DeviceGetNvLinkState(device nvml.Device, n int) (nvml.EnableState, nvml.Return) {\n\tif mock.DeviceGetNvLinkStateFunc == nil {\n\t\tpanic(\"Interface.DeviceGetNvLinkStateFunc: method is nil but Interface.DeviceGetNvLinkState was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t\tN      int\n\t}{\n\t\tDevice: device,\n\t\tN:      n,\n\t}\n\tmock.lockDeviceGetNvLinkState.Lock()\n\tmock.calls.DeviceGetNvLinkState = append(mock.calls.DeviceGetNvLinkState, callInfo)\n\tmock.lockDeviceGetNvLinkState.Unlock()\n\treturn mock.DeviceGetNvLinkStateFunc(device, n)\n}\n\n// DeviceGetNvLinkStateCalls gets all the calls that were made to DeviceGetNvLinkState.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetNvLinkStateCalls())\nfunc (mock *Interface) DeviceGetNvLinkStateCalls() []struct {\n\tDevice nvml.Device\n\tN      int\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t\tN      int\n\t}\n\tmock.lockDeviceGetNvLinkState.RLock()\n\tcalls = mock.calls.DeviceGetNvLinkState\n\tmock.lockDeviceGetNvLinkState.RUnlock()\n\treturn calls\n}\n\n// DeviceGetNvLinkUtilizationControl calls DeviceGetNvLinkUtilizationControlFunc.\nfunc (mock *Interface) DeviceGetNvLinkUtilizationControl(device nvml.Device, n1 int, n2 int) (nvml.NvLinkUtilizationControl, nvml.Return) {\n\tif mock.DeviceGetNvLinkUtilizationControlFunc == nil {\n\t\tpanic(\"Interface.DeviceGetNvLinkUtilizationControlFunc: method is nil but Interface.DeviceGetNvLinkUtilizationControl was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t\tN1     int\n\t\tN2     int\n\t}{\n\t\tDevice: device,\n\t\tN1:     n1,\n\t\tN2:     n2,\n\t}\n\tmock.lockDeviceGetNvLinkUtilizationControl.Lock()\n\tmock.calls.DeviceGetNvLinkUtilizationControl = append(mock.calls.DeviceGetNvLinkUtilizationControl, callInfo)\n\tmock.lockDeviceGetNvLinkUtilizationControl.Unlock()\n\treturn mock.DeviceGetNvLinkUtilizationControlFunc(device, n1, n2)\n}\n\n// DeviceGetNvLinkUtilizationControlCalls gets all the calls that were made to DeviceGetNvLinkUtilizationControl.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetNvLinkUtilizationControlCalls())\nfunc (mock *Interface) DeviceGetNvLinkUtilizationControlCalls() []struct {\n\tDevice nvml.Device\n\tN1     int\n\tN2     int\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t\tN1     int\n\t\tN2     int\n\t}\n\tmock.lockDeviceGetNvLinkUtilizationControl.RLock()\n\tcalls = mock.calls.DeviceGetNvLinkUtilizationControl\n\tmock.lockDeviceGetNvLinkUtilizationControl.RUnlock()\n\treturn calls\n}\n\n// DeviceGetNvLinkUtilizationCounter calls DeviceGetNvLinkUtilizationCounterFunc.\nfunc (mock *Interface) DeviceGetNvLinkUtilizationCounter(device nvml.Device, n1 int, n2 int) (uint64, uint64, nvml.Return) {\n\tif mock.DeviceGetNvLinkUtilizationCounterFunc == nil {\n\t\tpanic(\"Interface.DeviceGetNvLinkUtilizationCounterFunc: method is nil but Interface.DeviceGetNvLinkUtilizationCounter was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t\tN1     int\n\t\tN2     int\n\t}{\n\t\tDevice: device,\n\t\tN1:     n1,\n\t\tN2:     n2,\n\t}\n\tmock.lockDeviceGetNvLinkUtilizationCounter.Lock()\n\tmock.calls.DeviceGetNvLinkUtilizationCounter = append(mock.calls.DeviceGetNvLinkUtilizationCounter, callInfo)\n\tmock.lockDeviceGetNvLinkUtilizationCounter.Unlock()\n\treturn mock.DeviceGetNvLinkUtilizationCounterFunc(device, n1, n2)\n}\n\n// DeviceGetNvLinkUtilizationCounterCalls gets all the calls that were made to DeviceGetNvLinkUtilizationCounter.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetNvLinkUtilizationCounterCalls())\nfunc (mock *Interface) DeviceGetNvLinkUtilizationCounterCalls() []struct {\n\tDevice nvml.Device\n\tN1     int\n\tN2     int\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t\tN1     int\n\t\tN2     int\n\t}\n\tmock.lockDeviceGetNvLinkUtilizationCounter.RLock()\n\tcalls = mock.calls.DeviceGetNvLinkUtilizationCounter\n\tmock.lockDeviceGetNvLinkUtilizationCounter.RUnlock()\n\treturn calls\n}\n\n// DeviceGetNvLinkVersion calls DeviceGetNvLinkVersionFunc.\nfunc (mock *Interface) DeviceGetNvLinkVersion(device nvml.Device, n int) (uint32, nvml.Return) {\n\tif mock.DeviceGetNvLinkVersionFunc == nil {\n\t\tpanic(\"Interface.DeviceGetNvLinkVersionFunc: method is nil but Interface.DeviceGetNvLinkVersion was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t\tN      int\n\t}{\n\t\tDevice: device,\n\t\tN:      n,\n\t}\n\tmock.lockDeviceGetNvLinkVersion.Lock()\n\tmock.calls.DeviceGetNvLinkVersion = append(mock.calls.DeviceGetNvLinkVersion, callInfo)\n\tmock.lockDeviceGetNvLinkVersion.Unlock()\n\treturn mock.DeviceGetNvLinkVersionFunc(device, n)\n}\n\n// DeviceGetNvLinkVersionCalls gets all the calls that were made to DeviceGetNvLinkVersion.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetNvLinkVersionCalls())\nfunc (mock *Interface) DeviceGetNvLinkVersionCalls() []struct {\n\tDevice nvml.Device\n\tN      int\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t\tN      int\n\t}\n\tmock.lockDeviceGetNvLinkVersion.RLock()\n\tcalls = mock.calls.DeviceGetNvLinkVersion\n\tmock.lockDeviceGetNvLinkVersion.RUnlock()\n\treturn calls\n}\n\n// DeviceGetNvlinkBwMode calls DeviceGetNvlinkBwModeFunc.\nfunc (mock *Interface) DeviceGetNvlinkBwMode(device nvml.Device) (nvml.NvlinkGetBwMode, nvml.Return) {\n\tif mock.DeviceGetNvlinkBwModeFunc == nil {\n\t\tpanic(\"Interface.DeviceGetNvlinkBwModeFunc: method is nil but Interface.DeviceGetNvlinkBwMode was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetNvlinkBwMode.Lock()\n\tmock.calls.DeviceGetNvlinkBwMode = append(mock.calls.DeviceGetNvlinkBwMode, callInfo)\n\tmock.lockDeviceGetNvlinkBwMode.Unlock()\n\treturn mock.DeviceGetNvlinkBwModeFunc(device)\n}\n\n// DeviceGetNvlinkBwModeCalls gets all the calls that were made to DeviceGetNvlinkBwMode.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetNvlinkBwModeCalls())\nfunc (mock *Interface) DeviceGetNvlinkBwModeCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetNvlinkBwMode.RLock()\n\tcalls = mock.calls.DeviceGetNvlinkBwMode\n\tmock.lockDeviceGetNvlinkBwMode.RUnlock()\n\treturn calls\n}\n\n// DeviceGetNvlinkSupportedBwModes calls DeviceGetNvlinkSupportedBwModesFunc.\nfunc (mock *Interface) DeviceGetNvlinkSupportedBwModes(device nvml.Device) (nvml.NvlinkSupportedBwModes, nvml.Return) {\n\tif mock.DeviceGetNvlinkSupportedBwModesFunc == nil {\n\t\tpanic(\"Interface.DeviceGetNvlinkSupportedBwModesFunc: method is nil but Interface.DeviceGetNvlinkSupportedBwModes was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetNvlinkSupportedBwModes.Lock()\n\tmock.calls.DeviceGetNvlinkSupportedBwModes = append(mock.calls.DeviceGetNvlinkSupportedBwModes, callInfo)\n\tmock.lockDeviceGetNvlinkSupportedBwModes.Unlock()\n\treturn mock.DeviceGetNvlinkSupportedBwModesFunc(device)\n}\n\n// DeviceGetNvlinkSupportedBwModesCalls gets all the calls that were made to DeviceGetNvlinkSupportedBwModes.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetNvlinkSupportedBwModesCalls())\nfunc (mock *Interface) DeviceGetNvlinkSupportedBwModesCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetNvlinkSupportedBwModes.RLock()\n\tcalls = mock.calls.DeviceGetNvlinkSupportedBwModes\n\tmock.lockDeviceGetNvlinkSupportedBwModes.RUnlock()\n\treturn calls\n}\n\n// DeviceGetOfaUtilization calls DeviceGetOfaUtilizationFunc.\nfunc (mock *Interface) DeviceGetOfaUtilization(device nvml.Device) (uint32, uint32, nvml.Return) {\n\tif mock.DeviceGetOfaUtilizationFunc == nil {\n\t\tpanic(\"Interface.DeviceGetOfaUtilizationFunc: method is nil but Interface.DeviceGetOfaUtilization was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetOfaUtilization.Lock()\n\tmock.calls.DeviceGetOfaUtilization = append(mock.calls.DeviceGetOfaUtilization, callInfo)\n\tmock.lockDeviceGetOfaUtilization.Unlock()\n\treturn mock.DeviceGetOfaUtilizationFunc(device)\n}\n\n// DeviceGetOfaUtilizationCalls gets all the calls that were made to DeviceGetOfaUtilization.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetOfaUtilizationCalls())\nfunc (mock *Interface) DeviceGetOfaUtilizationCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetOfaUtilization.RLock()\n\tcalls = mock.calls.DeviceGetOfaUtilization\n\tmock.lockDeviceGetOfaUtilization.RUnlock()\n\treturn calls\n}\n\n// DeviceGetP2PStatus calls DeviceGetP2PStatusFunc.\nfunc (mock *Interface) DeviceGetP2PStatus(device1 nvml.Device, device2 nvml.Device, gpuP2PCapsIndex nvml.GpuP2PCapsIndex) (nvml.GpuP2PStatus, nvml.Return) {\n\tif mock.DeviceGetP2PStatusFunc == nil {\n\t\tpanic(\"Interface.DeviceGetP2PStatusFunc: method is nil but Interface.DeviceGetP2PStatus was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice1         nvml.Device\n\t\tDevice2         nvml.Device\n\t\tGpuP2PCapsIndex nvml.GpuP2PCapsIndex\n\t}{\n\t\tDevice1:         device1,\n\t\tDevice2:         device2,\n\t\tGpuP2PCapsIndex: gpuP2PCapsIndex,\n\t}\n\tmock.lockDeviceGetP2PStatus.Lock()\n\tmock.calls.DeviceGetP2PStatus = append(mock.calls.DeviceGetP2PStatus, callInfo)\n\tmock.lockDeviceGetP2PStatus.Unlock()\n\treturn mock.DeviceGetP2PStatusFunc(device1, device2, gpuP2PCapsIndex)\n}\n\n// DeviceGetP2PStatusCalls gets all the calls that were made to DeviceGetP2PStatus.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetP2PStatusCalls())\nfunc (mock *Interface) DeviceGetP2PStatusCalls() []struct {\n\tDevice1         nvml.Device\n\tDevice2         nvml.Device\n\tGpuP2PCapsIndex nvml.GpuP2PCapsIndex\n} {\n\tvar calls []struct {\n\t\tDevice1         nvml.Device\n\t\tDevice2         nvml.Device\n\t\tGpuP2PCapsIndex nvml.GpuP2PCapsIndex\n\t}\n\tmock.lockDeviceGetP2PStatus.RLock()\n\tcalls = mock.calls.DeviceGetP2PStatus\n\tmock.lockDeviceGetP2PStatus.RUnlock()\n\treturn calls\n}\n\n// DeviceGetPciInfo calls DeviceGetPciInfoFunc.\nfunc (mock *Interface) DeviceGetPciInfo(device nvml.Device) (nvml.PciInfo, nvml.Return) {\n\tif mock.DeviceGetPciInfoFunc == nil {\n\t\tpanic(\"Interface.DeviceGetPciInfoFunc: method is nil but Interface.DeviceGetPciInfo was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetPciInfo.Lock()\n\tmock.calls.DeviceGetPciInfo = append(mock.calls.DeviceGetPciInfo, callInfo)\n\tmock.lockDeviceGetPciInfo.Unlock()\n\treturn mock.DeviceGetPciInfoFunc(device)\n}\n\n// DeviceGetPciInfoCalls gets all the calls that were made to DeviceGetPciInfo.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetPciInfoCalls())\nfunc (mock *Interface) DeviceGetPciInfoCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetPciInfo.RLock()\n\tcalls = mock.calls.DeviceGetPciInfo\n\tmock.lockDeviceGetPciInfo.RUnlock()\n\treturn calls\n}\n\n// DeviceGetPciInfoExt calls DeviceGetPciInfoExtFunc.\nfunc (mock *Interface) DeviceGetPciInfoExt(device nvml.Device) (nvml.PciInfoExt, nvml.Return) {\n\tif mock.DeviceGetPciInfoExtFunc == nil {\n\t\tpanic(\"Interface.DeviceGetPciInfoExtFunc: method is nil but Interface.DeviceGetPciInfoExt was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetPciInfoExt.Lock()\n\tmock.calls.DeviceGetPciInfoExt = append(mock.calls.DeviceGetPciInfoExt, callInfo)\n\tmock.lockDeviceGetPciInfoExt.Unlock()\n\treturn mock.DeviceGetPciInfoExtFunc(device)\n}\n\n// DeviceGetPciInfoExtCalls gets all the calls that were made to DeviceGetPciInfoExt.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetPciInfoExtCalls())\nfunc (mock *Interface) DeviceGetPciInfoExtCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetPciInfoExt.RLock()\n\tcalls = mock.calls.DeviceGetPciInfoExt\n\tmock.lockDeviceGetPciInfoExt.RUnlock()\n\treturn calls\n}\n\n// DeviceGetPcieLinkMaxSpeed calls DeviceGetPcieLinkMaxSpeedFunc.\nfunc (mock *Interface) DeviceGetPcieLinkMaxSpeed(device nvml.Device) (uint32, nvml.Return) {\n\tif mock.DeviceGetPcieLinkMaxSpeedFunc == nil {\n\t\tpanic(\"Interface.DeviceGetPcieLinkMaxSpeedFunc: method is nil but Interface.DeviceGetPcieLinkMaxSpeed was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetPcieLinkMaxSpeed.Lock()\n\tmock.calls.DeviceGetPcieLinkMaxSpeed = append(mock.calls.DeviceGetPcieLinkMaxSpeed, callInfo)\n\tmock.lockDeviceGetPcieLinkMaxSpeed.Unlock()\n\treturn mock.DeviceGetPcieLinkMaxSpeedFunc(device)\n}\n\n// DeviceGetPcieLinkMaxSpeedCalls gets all the calls that were made to DeviceGetPcieLinkMaxSpeed.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetPcieLinkMaxSpeedCalls())\nfunc (mock *Interface) DeviceGetPcieLinkMaxSpeedCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetPcieLinkMaxSpeed.RLock()\n\tcalls = mock.calls.DeviceGetPcieLinkMaxSpeed\n\tmock.lockDeviceGetPcieLinkMaxSpeed.RUnlock()\n\treturn calls\n}\n\n// DeviceGetPcieReplayCounter calls DeviceGetPcieReplayCounterFunc.\nfunc (mock *Interface) DeviceGetPcieReplayCounter(device nvml.Device) (int, nvml.Return) {\n\tif mock.DeviceGetPcieReplayCounterFunc == nil {\n\t\tpanic(\"Interface.DeviceGetPcieReplayCounterFunc: method is nil but Interface.DeviceGetPcieReplayCounter was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetPcieReplayCounter.Lock()\n\tmock.calls.DeviceGetPcieReplayCounter = append(mock.calls.DeviceGetPcieReplayCounter, callInfo)\n\tmock.lockDeviceGetPcieReplayCounter.Unlock()\n\treturn mock.DeviceGetPcieReplayCounterFunc(device)\n}\n\n// DeviceGetPcieReplayCounterCalls gets all the calls that were made to DeviceGetPcieReplayCounter.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetPcieReplayCounterCalls())\nfunc (mock *Interface) DeviceGetPcieReplayCounterCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetPcieReplayCounter.RLock()\n\tcalls = mock.calls.DeviceGetPcieReplayCounter\n\tmock.lockDeviceGetPcieReplayCounter.RUnlock()\n\treturn calls\n}\n\n// DeviceGetPcieSpeed calls DeviceGetPcieSpeedFunc.\nfunc (mock *Interface) DeviceGetPcieSpeed(device nvml.Device) (int, nvml.Return) {\n\tif mock.DeviceGetPcieSpeedFunc == nil {\n\t\tpanic(\"Interface.DeviceGetPcieSpeedFunc: method is nil but Interface.DeviceGetPcieSpeed was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetPcieSpeed.Lock()\n\tmock.calls.DeviceGetPcieSpeed = append(mock.calls.DeviceGetPcieSpeed, callInfo)\n\tmock.lockDeviceGetPcieSpeed.Unlock()\n\treturn mock.DeviceGetPcieSpeedFunc(device)\n}\n\n// DeviceGetPcieSpeedCalls gets all the calls that were made to DeviceGetPcieSpeed.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetPcieSpeedCalls())\nfunc (mock *Interface) DeviceGetPcieSpeedCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetPcieSpeed.RLock()\n\tcalls = mock.calls.DeviceGetPcieSpeed\n\tmock.lockDeviceGetPcieSpeed.RUnlock()\n\treturn calls\n}\n\n// DeviceGetPcieThroughput calls DeviceGetPcieThroughputFunc.\nfunc (mock *Interface) DeviceGetPcieThroughput(device nvml.Device, pcieUtilCounter nvml.PcieUtilCounter) (uint32, nvml.Return) {\n\tif mock.DeviceGetPcieThroughputFunc == nil {\n\t\tpanic(\"Interface.DeviceGetPcieThroughputFunc: method is nil but Interface.DeviceGetPcieThroughput was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice          nvml.Device\n\t\tPcieUtilCounter nvml.PcieUtilCounter\n\t}{\n\t\tDevice:          device,\n\t\tPcieUtilCounter: pcieUtilCounter,\n\t}\n\tmock.lockDeviceGetPcieThroughput.Lock()\n\tmock.calls.DeviceGetPcieThroughput = append(mock.calls.DeviceGetPcieThroughput, callInfo)\n\tmock.lockDeviceGetPcieThroughput.Unlock()\n\treturn mock.DeviceGetPcieThroughputFunc(device, pcieUtilCounter)\n}\n\n// DeviceGetPcieThroughputCalls gets all the calls that were made to DeviceGetPcieThroughput.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetPcieThroughputCalls())\nfunc (mock *Interface) DeviceGetPcieThroughputCalls() []struct {\n\tDevice          nvml.Device\n\tPcieUtilCounter nvml.PcieUtilCounter\n} {\n\tvar calls []struct {\n\t\tDevice          nvml.Device\n\t\tPcieUtilCounter nvml.PcieUtilCounter\n\t}\n\tmock.lockDeviceGetPcieThroughput.RLock()\n\tcalls = mock.calls.DeviceGetPcieThroughput\n\tmock.lockDeviceGetPcieThroughput.RUnlock()\n\treturn calls\n}\n\n// DeviceGetPdi calls DeviceGetPdiFunc.\nfunc (mock *Interface) DeviceGetPdi(device nvml.Device) (nvml.Pdi, nvml.Return) {\n\tif mock.DeviceGetPdiFunc == nil {\n\t\tpanic(\"Interface.DeviceGetPdiFunc: method is nil but Interface.DeviceGetPdi was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetPdi.Lock()\n\tmock.calls.DeviceGetPdi = append(mock.calls.DeviceGetPdi, callInfo)\n\tmock.lockDeviceGetPdi.Unlock()\n\treturn mock.DeviceGetPdiFunc(device)\n}\n\n// DeviceGetPdiCalls gets all the calls that were made to DeviceGetPdi.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetPdiCalls())\nfunc (mock *Interface) DeviceGetPdiCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetPdi.RLock()\n\tcalls = mock.calls.DeviceGetPdi\n\tmock.lockDeviceGetPdi.RUnlock()\n\treturn calls\n}\n\n// DeviceGetPerformanceModes calls DeviceGetPerformanceModesFunc.\nfunc (mock *Interface) DeviceGetPerformanceModes(device nvml.Device) (nvml.DevicePerfModes, nvml.Return) {\n\tif mock.DeviceGetPerformanceModesFunc == nil {\n\t\tpanic(\"Interface.DeviceGetPerformanceModesFunc: method is nil but Interface.DeviceGetPerformanceModes was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetPerformanceModes.Lock()\n\tmock.calls.DeviceGetPerformanceModes = append(mock.calls.DeviceGetPerformanceModes, callInfo)\n\tmock.lockDeviceGetPerformanceModes.Unlock()\n\treturn mock.DeviceGetPerformanceModesFunc(device)\n}\n\n// DeviceGetPerformanceModesCalls gets all the calls that were made to DeviceGetPerformanceModes.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetPerformanceModesCalls())\nfunc (mock *Interface) DeviceGetPerformanceModesCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetPerformanceModes.RLock()\n\tcalls = mock.calls.DeviceGetPerformanceModes\n\tmock.lockDeviceGetPerformanceModes.RUnlock()\n\treturn calls\n}\n\n// DeviceGetPerformanceState calls DeviceGetPerformanceStateFunc.\nfunc (mock *Interface) DeviceGetPerformanceState(device nvml.Device) (nvml.Pstates, nvml.Return) {\n\tif mock.DeviceGetPerformanceStateFunc == nil {\n\t\tpanic(\"Interface.DeviceGetPerformanceStateFunc: method is nil but Interface.DeviceGetPerformanceState was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetPerformanceState.Lock()\n\tmock.calls.DeviceGetPerformanceState = append(mock.calls.DeviceGetPerformanceState, callInfo)\n\tmock.lockDeviceGetPerformanceState.Unlock()\n\treturn mock.DeviceGetPerformanceStateFunc(device)\n}\n\n// DeviceGetPerformanceStateCalls gets all the calls that were made to DeviceGetPerformanceState.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetPerformanceStateCalls())\nfunc (mock *Interface) DeviceGetPerformanceStateCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetPerformanceState.RLock()\n\tcalls = mock.calls.DeviceGetPerformanceState\n\tmock.lockDeviceGetPerformanceState.RUnlock()\n\treturn calls\n}\n\n// DeviceGetPersistenceMode calls DeviceGetPersistenceModeFunc.\nfunc (mock *Interface) DeviceGetPersistenceMode(device nvml.Device) (nvml.EnableState, nvml.Return) {\n\tif mock.DeviceGetPersistenceModeFunc == nil {\n\t\tpanic(\"Interface.DeviceGetPersistenceModeFunc: method is nil but Interface.DeviceGetPersistenceMode was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetPersistenceMode.Lock()\n\tmock.calls.DeviceGetPersistenceMode = append(mock.calls.DeviceGetPersistenceMode, callInfo)\n\tmock.lockDeviceGetPersistenceMode.Unlock()\n\treturn mock.DeviceGetPersistenceModeFunc(device)\n}\n\n// DeviceGetPersistenceModeCalls gets all the calls that were made to DeviceGetPersistenceMode.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetPersistenceModeCalls())\nfunc (mock *Interface) DeviceGetPersistenceModeCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetPersistenceMode.RLock()\n\tcalls = mock.calls.DeviceGetPersistenceMode\n\tmock.lockDeviceGetPersistenceMode.RUnlock()\n\treturn calls\n}\n\n// DeviceGetPgpuMetadataString calls DeviceGetPgpuMetadataStringFunc.\nfunc (mock *Interface) DeviceGetPgpuMetadataString(device nvml.Device) (string, nvml.Return) {\n\tif mock.DeviceGetPgpuMetadataStringFunc == nil {\n\t\tpanic(\"Interface.DeviceGetPgpuMetadataStringFunc: method is nil but Interface.DeviceGetPgpuMetadataString was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetPgpuMetadataString.Lock()\n\tmock.calls.DeviceGetPgpuMetadataString = append(mock.calls.DeviceGetPgpuMetadataString, callInfo)\n\tmock.lockDeviceGetPgpuMetadataString.Unlock()\n\treturn mock.DeviceGetPgpuMetadataStringFunc(device)\n}\n\n// DeviceGetPgpuMetadataStringCalls gets all the calls that were made to DeviceGetPgpuMetadataString.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetPgpuMetadataStringCalls())\nfunc (mock *Interface) DeviceGetPgpuMetadataStringCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetPgpuMetadataString.RLock()\n\tcalls = mock.calls.DeviceGetPgpuMetadataString\n\tmock.lockDeviceGetPgpuMetadataString.RUnlock()\n\treturn calls\n}\n\n// DeviceGetPlatformInfo calls DeviceGetPlatformInfoFunc.\nfunc (mock *Interface) DeviceGetPlatformInfo(device nvml.Device) (nvml.PlatformInfo, nvml.Return) {\n\tif mock.DeviceGetPlatformInfoFunc == nil {\n\t\tpanic(\"Interface.DeviceGetPlatformInfoFunc: method is nil but Interface.DeviceGetPlatformInfo was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetPlatformInfo.Lock()\n\tmock.calls.DeviceGetPlatformInfo = append(mock.calls.DeviceGetPlatformInfo, callInfo)\n\tmock.lockDeviceGetPlatformInfo.Unlock()\n\treturn mock.DeviceGetPlatformInfoFunc(device)\n}\n\n// DeviceGetPlatformInfoCalls gets all the calls that were made to DeviceGetPlatformInfo.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetPlatformInfoCalls())\nfunc (mock *Interface) DeviceGetPlatformInfoCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetPlatformInfo.RLock()\n\tcalls = mock.calls.DeviceGetPlatformInfo\n\tmock.lockDeviceGetPlatformInfo.RUnlock()\n\treturn calls\n}\n\n// DeviceGetPowerManagementDefaultLimit calls DeviceGetPowerManagementDefaultLimitFunc.\nfunc (mock *Interface) DeviceGetPowerManagementDefaultLimit(device nvml.Device) (uint32, nvml.Return) {\n\tif mock.DeviceGetPowerManagementDefaultLimitFunc == nil {\n\t\tpanic(\"Interface.DeviceGetPowerManagementDefaultLimitFunc: method is nil but Interface.DeviceGetPowerManagementDefaultLimit was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetPowerManagementDefaultLimit.Lock()\n\tmock.calls.DeviceGetPowerManagementDefaultLimit = append(mock.calls.DeviceGetPowerManagementDefaultLimit, callInfo)\n\tmock.lockDeviceGetPowerManagementDefaultLimit.Unlock()\n\treturn mock.DeviceGetPowerManagementDefaultLimitFunc(device)\n}\n\n// DeviceGetPowerManagementDefaultLimitCalls gets all the calls that were made to DeviceGetPowerManagementDefaultLimit.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetPowerManagementDefaultLimitCalls())\nfunc (mock *Interface) DeviceGetPowerManagementDefaultLimitCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetPowerManagementDefaultLimit.RLock()\n\tcalls = mock.calls.DeviceGetPowerManagementDefaultLimit\n\tmock.lockDeviceGetPowerManagementDefaultLimit.RUnlock()\n\treturn calls\n}\n\n// DeviceGetPowerManagementLimit calls DeviceGetPowerManagementLimitFunc.\nfunc (mock *Interface) DeviceGetPowerManagementLimit(device nvml.Device) (uint32, nvml.Return) {\n\tif mock.DeviceGetPowerManagementLimitFunc == nil {\n\t\tpanic(\"Interface.DeviceGetPowerManagementLimitFunc: method is nil but Interface.DeviceGetPowerManagementLimit was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetPowerManagementLimit.Lock()\n\tmock.calls.DeviceGetPowerManagementLimit = append(mock.calls.DeviceGetPowerManagementLimit, callInfo)\n\tmock.lockDeviceGetPowerManagementLimit.Unlock()\n\treturn mock.DeviceGetPowerManagementLimitFunc(device)\n}\n\n// DeviceGetPowerManagementLimitCalls gets all the calls that were made to DeviceGetPowerManagementLimit.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetPowerManagementLimitCalls())\nfunc (mock *Interface) DeviceGetPowerManagementLimitCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetPowerManagementLimit.RLock()\n\tcalls = mock.calls.DeviceGetPowerManagementLimit\n\tmock.lockDeviceGetPowerManagementLimit.RUnlock()\n\treturn calls\n}\n\n// DeviceGetPowerManagementLimitConstraints calls DeviceGetPowerManagementLimitConstraintsFunc.\nfunc (mock *Interface) DeviceGetPowerManagementLimitConstraints(device nvml.Device) (uint32, uint32, nvml.Return) {\n\tif mock.DeviceGetPowerManagementLimitConstraintsFunc == nil {\n\t\tpanic(\"Interface.DeviceGetPowerManagementLimitConstraintsFunc: method is nil but Interface.DeviceGetPowerManagementLimitConstraints was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetPowerManagementLimitConstraints.Lock()\n\tmock.calls.DeviceGetPowerManagementLimitConstraints = append(mock.calls.DeviceGetPowerManagementLimitConstraints, callInfo)\n\tmock.lockDeviceGetPowerManagementLimitConstraints.Unlock()\n\treturn mock.DeviceGetPowerManagementLimitConstraintsFunc(device)\n}\n\n// DeviceGetPowerManagementLimitConstraintsCalls gets all the calls that were made to DeviceGetPowerManagementLimitConstraints.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetPowerManagementLimitConstraintsCalls())\nfunc (mock *Interface) DeviceGetPowerManagementLimitConstraintsCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetPowerManagementLimitConstraints.RLock()\n\tcalls = mock.calls.DeviceGetPowerManagementLimitConstraints\n\tmock.lockDeviceGetPowerManagementLimitConstraints.RUnlock()\n\treturn calls\n}\n\n// DeviceGetPowerManagementMode calls DeviceGetPowerManagementModeFunc.\nfunc (mock *Interface) DeviceGetPowerManagementMode(device nvml.Device) (nvml.EnableState, nvml.Return) {\n\tif mock.DeviceGetPowerManagementModeFunc == nil {\n\t\tpanic(\"Interface.DeviceGetPowerManagementModeFunc: method is nil but Interface.DeviceGetPowerManagementMode was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetPowerManagementMode.Lock()\n\tmock.calls.DeviceGetPowerManagementMode = append(mock.calls.DeviceGetPowerManagementMode, callInfo)\n\tmock.lockDeviceGetPowerManagementMode.Unlock()\n\treturn mock.DeviceGetPowerManagementModeFunc(device)\n}\n\n// DeviceGetPowerManagementModeCalls gets all the calls that were made to DeviceGetPowerManagementMode.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetPowerManagementModeCalls())\nfunc (mock *Interface) DeviceGetPowerManagementModeCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetPowerManagementMode.RLock()\n\tcalls = mock.calls.DeviceGetPowerManagementMode\n\tmock.lockDeviceGetPowerManagementMode.RUnlock()\n\treturn calls\n}\n\n// DeviceGetPowerMizerMode_v1 calls DeviceGetPowerMizerMode_v1Func.\nfunc (mock *Interface) DeviceGetPowerMizerMode_v1(device nvml.Device) (nvml.DevicePowerMizerModes_v1, nvml.Return) {\n\tif mock.DeviceGetPowerMizerMode_v1Func == nil {\n\t\tpanic(\"Interface.DeviceGetPowerMizerMode_v1Func: method is nil but Interface.DeviceGetPowerMizerMode_v1 was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetPowerMizerMode_v1.Lock()\n\tmock.calls.DeviceGetPowerMizerMode_v1 = append(mock.calls.DeviceGetPowerMizerMode_v1, callInfo)\n\tmock.lockDeviceGetPowerMizerMode_v1.Unlock()\n\treturn mock.DeviceGetPowerMizerMode_v1Func(device)\n}\n\n// DeviceGetPowerMizerMode_v1Calls gets all the calls that were made to DeviceGetPowerMizerMode_v1.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetPowerMizerMode_v1Calls())\nfunc (mock *Interface) DeviceGetPowerMizerMode_v1Calls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetPowerMizerMode_v1.RLock()\n\tcalls = mock.calls.DeviceGetPowerMizerMode_v1\n\tmock.lockDeviceGetPowerMizerMode_v1.RUnlock()\n\treturn calls\n}\n\n// DeviceGetPowerSource calls DeviceGetPowerSourceFunc.\nfunc (mock *Interface) DeviceGetPowerSource(device nvml.Device) (nvml.PowerSource, nvml.Return) {\n\tif mock.DeviceGetPowerSourceFunc == nil {\n\t\tpanic(\"Interface.DeviceGetPowerSourceFunc: method is nil but Interface.DeviceGetPowerSource was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetPowerSource.Lock()\n\tmock.calls.DeviceGetPowerSource = append(mock.calls.DeviceGetPowerSource, callInfo)\n\tmock.lockDeviceGetPowerSource.Unlock()\n\treturn mock.DeviceGetPowerSourceFunc(device)\n}\n\n// DeviceGetPowerSourceCalls gets all the calls that were made to DeviceGetPowerSource.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetPowerSourceCalls())\nfunc (mock *Interface) DeviceGetPowerSourceCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetPowerSource.RLock()\n\tcalls = mock.calls.DeviceGetPowerSource\n\tmock.lockDeviceGetPowerSource.RUnlock()\n\treturn calls\n}\n\n// DeviceGetPowerState calls DeviceGetPowerStateFunc.\nfunc (mock *Interface) DeviceGetPowerState(device nvml.Device) (nvml.Pstates, nvml.Return) {\n\tif mock.DeviceGetPowerStateFunc == nil {\n\t\tpanic(\"Interface.DeviceGetPowerStateFunc: method is nil but Interface.DeviceGetPowerState was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetPowerState.Lock()\n\tmock.calls.DeviceGetPowerState = append(mock.calls.DeviceGetPowerState, callInfo)\n\tmock.lockDeviceGetPowerState.Unlock()\n\treturn mock.DeviceGetPowerStateFunc(device)\n}\n\n// DeviceGetPowerStateCalls gets all the calls that were made to DeviceGetPowerState.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetPowerStateCalls())\nfunc (mock *Interface) DeviceGetPowerStateCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetPowerState.RLock()\n\tcalls = mock.calls.DeviceGetPowerState\n\tmock.lockDeviceGetPowerState.RUnlock()\n\treturn calls\n}\n\n// DeviceGetPowerUsage calls DeviceGetPowerUsageFunc.\nfunc (mock *Interface) DeviceGetPowerUsage(device nvml.Device) (uint32, nvml.Return) {\n\tif mock.DeviceGetPowerUsageFunc == nil {\n\t\tpanic(\"Interface.DeviceGetPowerUsageFunc: method is nil but Interface.DeviceGetPowerUsage was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetPowerUsage.Lock()\n\tmock.calls.DeviceGetPowerUsage = append(mock.calls.DeviceGetPowerUsage, callInfo)\n\tmock.lockDeviceGetPowerUsage.Unlock()\n\treturn mock.DeviceGetPowerUsageFunc(device)\n}\n\n// DeviceGetPowerUsageCalls gets all the calls that were made to DeviceGetPowerUsage.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetPowerUsageCalls())\nfunc (mock *Interface) DeviceGetPowerUsageCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetPowerUsage.RLock()\n\tcalls = mock.calls.DeviceGetPowerUsage\n\tmock.lockDeviceGetPowerUsage.RUnlock()\n\treturn calls\n}\n\n// DeviceGetProcessUtilization calls DeviceGetProcessUtilizationFunc.\nfunc (mock *Interface) DeviceGetProcessUtilization(device nvml.Device, v uint64) ([]nvml.ProcessUtilizationSample, nvml.Return) {\n\tif mock.DeviceGetProcessUtilizationFunc == nil {\n\t\tpanic(\"Interface.DeviceGetProcessUtilizationFunc: method is nil but Interface.DeviceGetProcessUtilization was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t\tV      uint64\n\t}{\n\t\tDevice: device,\n\t\tV:      v,\n\t}\n\tmock.lockDeviceGetProcessUtilization.Lock()\n\tmock.calls.DeviceGetProcessUtilization = append(mock.calls.DeviceGetProcessUtilization, callInfo)\n\tmock.lockDeviceGetProcessUtilization.Unlock()\n\treturn mock.DeviceGetProcessUtilizationFunc(device, v)\n}\n\n// DeviceGetProcessUtilizationCalls gets all the calls that were made to DeviceGetProcessUtilization.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetProcessUtilizationCalls())\nfunc (mock *Interface) DeviceGetProcessUtilizationCalls() []struct {\n\tDevice nvml.Device\n\tV      uint64\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t\tV      uint64\n\t}\n\tmock.lockDeviceGetProcessUtilization.RLock()\n\tcalls = mock.calls.DeviceGetProcessUtilization\n\tmock.lockDeviceGetProcessUtilization.RUnlock()\n\treturn calls\n}\n\n// DeviceGetProcessesUtilizationInfo calls DeviceGetProcessesUtilizationInfoFunc.\nfunc (mock *Interface) DeviceGetProcessesUtilizationInfo(device nvml.Device) (nvml.ProcessesUtilizationInfo, nvml.Return) {\n\tif mock.DeviceGetProcessesUtilizationInfoFunc == nil {\n\t\tpanic(\"Interface.DeviceGetProcessesUtilizationInfoFunc: method is nil but Interface.DeviceGetProcessesUtilizationInfo was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetProcessesUtilizationInfo.Lock()\n\tmock.calls.DeviceGetProcessesUtilizationInfo = append(mock.calls.DeviceGetProcessesUtilizationInfo, callInfo)\n\tmock.lockDeviceGetProcessesUtilizationInfo.Unlock()\n\treturn mock.DeviceGetProcessesUtilizationInfoFunc(device)\n}\n\n// DeviceGetProcessesUtilizationInfoCalls gets all the calls that were made to DeviceGetProcessesUtilizationInfo.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetProcessesUtilizationInfoCalls())\nfunc (mock *Interface) DeviceGetProcessesUtilizationInfoCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetProcessesUtilizationInfo.RLock()\n\tcalls = mock.calls.DeviceGetProcessesUtilizationInfo\n\tmock.lockDeviceGetProcessesUtilizationInfo.RUnlock()\n\treturn calls\n}\n\n// DeviceGetRemappedRows calls DeviceGetRemappedRowsFunc.\nfunc (mock *Interface) DeviceGetRemappedRows(device nvml.Device) (int, int, bool, bool, nvml.Return) {\n\tif mock.DeviceGetRemappedRowsFunc == nil {\n\t\tpanic(\"Interface.DeviceGetRemappedRowsFunc: method is nil but Interface.DeviceGetRemappedRows was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetRemappedRows.Lock()\n\tmock.calls.DeviceGetRemappedRows = append(mock.calls.DeviceGetRemappedRows, callInfo)\n\tmock.lockDeviceGetRemappedRows.Unlock()\n\treturn mock.DeviceGetRemappedRowsFunc(device)\n}\n\n// DeviceGetRemappedRowsCalls gets all the calls that were made to DeviceGetRemappedRows.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetRemappedRowsCalls())\nfunc (mock *Interface) DeviceGetRemappedRowsCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetRemappedRows.RLock()\n\tcalls = mock.calls.DeviceGetRemappedRows\n\tmock.lockDeviceGetRemappedRows.RUnlock()\n\treturn calls\n}\n\n// DeviceGetRepairStatus calls DeviceGetRepairStatusFunc.\nfunc (mock *Interface) DeviceGetRepairStatus(device nvml.Device) (nvml.RepairStatus, nvml.Return) {\n\tif mock.DeviceGetRepairStatusFunc == nil {\n\t\tpanic(\"Interface.DeviceGetRepairStatusFunc: method is nil but Interface.DeviceGetRepairStatus was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetRepairStatus.Lock()\n\tmock.calls.DeviceGetRepairStatus = append(mock.calls.DeviceGetRepairStatus, callInfo)\n\tmock.lockDeviceGetRepairStatus.Unlock()\n\treturn mock.DeviceGetRepairStatusFunc(device)\n}\n\n// DeviceGetRepairStatusCalls gets all the calls that were made to DeviceGetRepairStatus.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetRepairStatusCalls())\nfunc (mock *Interface) DeviceGetRepairStatusCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetRepairStatus.RLock()\n\tcalls = mock.calls.DeviceGetRepairStatus\n\tmock.lockDeviceGetRepairStatus.RUnlock()\n\treturn calls\n}\n\n// DeviceGetRetiredPages calls DeviceGetRetiredPagesFunc.\nfunc (mock *Interface) DeviceGetRetiredPages(device nvml.Device, pageRetirementCause nvml.PageRetirementCause) ([]uint64, nvml.Return) {\n\tif mock.DeviceGetRetiredPagesFunc == nil {\n\t\tpanic(\"Interface.DeviceGetRetiredPagesFunc: method is nil but Interface.DeviceGetRetiredPages was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice              nvml.Device\n\t\tPageRetirementCause nvml.PageRetirementCause\n\t}{\n\t\tDevice:              device,\n\t\tPageRetirementCause: pageRetirementCause,\n\t}\n\tmock.lockDeviceGetRetiredPages.Lock()\n\tmock.calls.DeviceGetRetiredPages = append(mock.calls.DeviceGetRetiredPages, callInfo)\n\tmock.lockDeviceGetRetiredPages.Unlock()\n\treturn mock.DeviceGetRetiredPagesFunc(device, pageRetirementCause)\n}\n\n// DeviceGetRetiredPagesCalls gets all the calls that were made to DeviceGetRetiredPages.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetRetiredPagesCalls())\nfunc (mock *Interface) DeviceGetRetiredPagesCalls() []struct {\n\tDevice              nvml.Device\n\tPageRetirementCause nvml.PageRetirementCause\n} {\n\tvar calls []struct {\n\t\tDevice              nvml.Device\n\t\tPageRetirementCause nvml.PageRetirementCause\n\t}\n\tmock.lockDeviceGetRetiredPages.RLock()\n\tcalls = mock.calls.DeviceGetRetiredPages\n\tmock.lockDeviceGetRetiredPages.RUnlock()\n\treturn calls\n}\n\n// DeviceGetRetiredPagesPendingStatus calls DeviceGetRetiredPagesPendingStatusFunc.\nfunc (mock *Interface) DeviceGetRetiredPagesPendingStatus(device nvml.Device) (nvml.EnableState, nvml.Return) {\n\tif mock.DeviceGetRetiredPagesPendingStatusFunc == nil {\n\t\tpanic(\"Interface.DeviceGetRetiredPagesPendingStatusFunc: method is nil but Interface.DeviceGetRetiredPagesPendingStatus was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetRetiredPagesPendingStatus.Lock()\n\tmock.calls.DeviceGetRetiredPagesPendingStatus = append(mock.calls.DeviceGetRetiredPagesPendingStatus, callInfo)\n\tmock.lockDeviceGetRetiredPagesPendingStatus.Unlock()\n\treturn mock.DeviceGetRetiredPagesPendingStatusFunc(device)\n}\n\n// DeviceGetRetiredPagesPendingStatusCalls gets all the calls that were made to DeviceGetRetiredPagesPendingStatus.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetRetiredPagesPendingStatusCalls())\nfunc (mock *Interface) DeviceGetRetiredPagesPendingStatusCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetRetiredPagesPendingStatus.RLock()\n\tcalls = mock.calls.DeviceGetRetiredPagesPendingStatus\n\tmock.lockDeviceGetRetiredPagesPendingStatus.RUnlock()\n\treturn calls\n}\n\n// DeviceGetRetiredPages_v2 calls DeviceGetRetiredPages_v2Func.\nfunc (mock *Interface) DeviceGetRetiredPages_v2(device nvml.Device, pageRetirementCause nvml.PageRetirementCause) ([]uint64, []uint64, nvml.Return) {\n\tif mock.DeviceGetRetiredPages_v2Func == nil {\n\t\tpanic(\"Interface.DeviceGetRetiredPages_v2Func: method is nil but Interface.DeviceGetRetiredPages_v2 was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice              nvml.Device\n\t\tPageRetirementCause nvml.PageRetirementCause\n\t}{\n\t\tDevice:              device,\n\t\tPageRetirementCause: pageRetirementCause,\n\t}\n\tmock.lockDeviceGetRetiredPages_v2.Lock()\n\tmock.calls.DeviceGetRetiredPages_v2 = append(mock.calls.DeviceGetRetiredPages_v2, callInfo)\n\tmock.lockDeviceGetRetiredPages_v2.Unlock()\n\treturn mock.DeviceGetRetiredPages_v2Func(device, pageRetirementCause)\n}\n\n// DeviceGetRetiredPages_v2Calls gets all the calls that were made to DeviceGetRetiredPages_v2.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetRetiredPages_v2Calls())\nfunc (mock *Interface) DeviceGetRetiredPages_v2Calls() []struct {\n\tDevice              nvml.Device\n\tPageRetirementCause nvml.PageRetirementCause\n} {\n\tvar calls []struct {\n\t\tDevice              nvml.Device\n\t\tPageRetirementCause nvml.PageRetirementCause\n\t}\n\tmock.lockDeviceGetRetiredPages_v2.RLock()\n\tcalls = mock.calls.DeviceGetRetiredPages_v2\n\tmock.lockDeviceGetRetiredPages_v2.RUnlock()\n\treturn calls\n}\n\n// DeviceGetRowRemapperHistogram calls DeviceGetRowRemapperHistogramFunc.\nfunc (mock *Interface) DeviceGetRowRemapperHistogram(device nvml.Device) (nvml.RowRemapperHistogramValues, nvml.Return) {\n\tif mock.DeviceGetRowRemapperHistogramFunc == nil {\n\t\tpanic(\"Interface.DeviceGetRowRemapperHistogramFunc: method is nil but Interface.DeviceGetRowRemapperHistogram was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetRowRemapperHistogram.Lock()\n\tmock.calls.DeviceGetRowRemapperHistogram = append(mock.calls.DeviceGetRowRemapperHistogram, callInfo)\n\tmock.lockDeviceGetRowRemapperHistogram.Unlock()\n\treturn mock.DeviceGetRowRemapperHistogramFunc(device)\n}\n\n// DeviceGetRowRemapperHistogramCalls gets all the calls that were made to DeviceGetRowRemapperHistogram.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetRowRemapperHistogramCalls())\nfunc (mock *Interface) DeviceGetRowRemapperHistogramCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetRowRemapperHistogram.RLock()\n\tcalls = mock.calls.DeviceGetRowRemapperHistogram\n\tmock.lockDeviceGetRowRemapperHistogram.RUnlock()\n\treturn calls\n}\n\n// DeviceGetRunningProcessDetailList calls DeviceGetRunningProcessDetailListFunc.\nfunc (mock *Interface) DeviceGetRunningProcessDetailList(device nvml.Device) (nvml.ProcessDetailList, nvml.Return) {\n\tif mock.DeviceGetRunningProcessDetailListFunc == nil {\n\t\tpanic(\"Interface.DeviceGetRunningProcessDetailListFunc: method is nil but Interface.DeviceGetRunningProcessDetailList was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetRunningProcessDetailList.Lock()\n\tmock.calls.DeviceGetRunningProcessDetailList = append(mock.calls.DeviceGetRunningProcessDetailList, callInfo)\n\tmock.lockDeviceGetRunningProcessDetailList.Unlock()\n\treturn mock.DeviceGetRunningProcessDetailListFunc(device)\n}\n\n// DeviceGetRunningProcessDetailListCalls gets all the calls that were made to DeviceGetRunningProcessDetailList.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetRunningProcessDetailListCalls())\nfunc (mock *Interface) DeviceGetRunningProcessDetailListCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetRunningProcessDetailList.RLock()\n\tcalls = mock.calls.DeviceGetRunningProcessDetailList\n\tmock.lockDeviceGetRunningProcessDetailList.RUnlock()\n\treturn calls\n}\n\n// DeviceGetSamples calls DeviceGetSamplesFunc.\nfunc (mock *Interface) DeviceGetSamples(device nvml.Device, samplingType nvml.SamplingType, v uint64) (nvml.ValueType, []nvml.Sample, nvml.Return) {\n\tif mock.DeviceGetSamplesFunc == nil {\n\t\tpanic(\"Interface.DeviceGetSamplesFunc: method is nil but Interface.DeviceGetSamples was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice       nvml.Device\n\t\tSamplingType nvml.SamplingType\n\t\tV            uint64\n\t}{\n\t\tDevice:       device,\n\t\tSamplingType: samplingType,\n\t\tV:            v,\n\t}\n\tmock.lockDeviceGetSamples.Lock()\n\tmock.calls.DeviceGetSamples = append(mock.calls.DeviceGetSamples, callInfo)\n\tmock.lockDeviceGetSamples.Unlock()\n\treturn mock.DeviceGetSamplesFunc(device, samplingType, v)\n}\n\n// DeviceGetSamplesCalls gets all the calls that were made to DeviceGetSamples.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetSamplesCalls())\nfunc (mock *Interface) DeviceGetSamplesCalls() []struct {\n\tDevice       nvml.Device\n\tSamplingType nvml.SamplingType\n\tV            uint64\n} {\n\tvar calls []struct {\n\t\tDevice       nvml.Device\n\t\tSamplingType nvml.SamplingType\n\t\tV            uint64\n\t}\n\tmock.lockDeviceGetSamples.RLock()\n\tcalls = mock.calls.DeviceGetSamples\n\tmock.lockDeviceGetSamples.RUnlock()\n\treturn calls\n}\n\n// DeviceGetSerial calls DeviceGetSerialFunc.\nfunc (mock *Interface) DeviceGetSerial(device nvml.Device) (string, nvml.Return) {\n\tif mock.DeviceGetSerialFunc == nil {\n\t\tpanic(\"Interface.DeviceGetSerialFunc: method is nil but Interface.DeviceGetSerial was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetSerial.Lock()\n\tmock.calls.DeviceGetSerial = append(mock.calls.DeviceGetSerial, callInfo)\n\tmock.lockDeviceGetSerial.Unlock()\n\treturn mock.DeviceGetSerialFunc(device)\n}\n\n// DeviceGetSerialCalls gets all the calls that were made to DeviceGetSerial.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetSerialCalls())\nfunc (mock *Interface) DeviceGetSerialCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetSerial.RLock()\n\tcalls = mock.calls.DeviceGetSerial\n\tmock.lockDeviceGetSerial.RUnlock()\n\treturn calls\n}\n\n// DeviceGetSramEccErrorStatus calls DeviceGetSramEccErrorStatusFunc.\nfunc (mock *Interface) DeviceGetSramEccErrorStatus(device nvml.Device) (nvml.EccSramErrorStatus, nvml.Return) {\n\tif mock.DeviceGetSramEccErrorStatusFunc == nil {\n\t\tpanic(\"Interface.DeviceGetSramEccErrorStatusFunc: method is nil but Interface.DeviceGetSramEccErrorStatus was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetSramEccErrorStatus.Lock()\n\tmock.calls.DeviceGetSramEccErrorStatus = append(mock.calls.DeviceGetSramEccErrorStatus, callInfo)\n\tmock.lockDeviceGetSramEccErrorStatus.Unlock()\n\treturn mock.DeviceGetSramEccErrorStatusFunc(device)\n}\n\n// DeviceGetSramEccErrorStatusCalls gets all the calls that were made to DeviceGetSramEccErrorStatus.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetSramEccErrorStatusCalls())\nfunc (mock *Interface) DeviceGetSramEccErrorStatusCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetSramEccErrorStatus.RLock()\n\tcalls = mock.calls.DeviceGetSramEccErrorStatus\n\tmock.lockDeviceGetSramEccErrorStatus.RUnlock()\n\treturn calls\n}\n\n// DeviceGetSramUniqueUncorrectedEccErrorCounts calls DeviceGetSramUniqueUncorrectedEccErrorCountsFunc.\nfunc (mock *Interface) DeviceGetSramUniqueUncorrectedEccErrorCounts(device nvml.Device, eccSramUniqueUncorrectedErrorCounts *nvml.EccSramUniqueUncorrectedErrorCounts) nvml.Return {\n\tif mock.DeviceGetSramUniqueUncorrectedEccErrorCountsFunc == nil {\n\t\tpanic(\"Interface.DeviceGetSramUniqueUncorrectedEccErrorCountsFunc: method is nil but Interface.DeviceGetSramUniqueUncorrectedEccErrorCounts was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice                              nvml.Device\n\t\tEccSramUniqueUncorrectedErrorCounts *nvml.EccSramUniqueUncorrectedErrorCounts\n\t}{\n\t\tDevice:                              device,\n\t\tEccSramUniqueUncorrectedErrorCounts: eccSramUniqueUncorrectedErrorCounts,\n\t}\n\tmock.lockDeviceGetSramUniqueUncorrectedEccErrorCounts.Lock()\n\tmock.calls.DeviceGetSramUniqueUncorrectedEccErrorCounts = append(mock.calls.DeviceGetSramUniqueUncorrectedEccErrorCounts, callInfo)\n\tmock.lockDeviceGetSramUniqueUncorrectedEccErrorCounts.Unlock()\n\treturn mock.DeviceGetSramUniqueUncorrectedEccErrorCountsFunc(device, eccSramUniqueUncorrectedErrorCounts)\n}\n\n// DeviceGetSramUniqueUncorrectedEccErrorCountsCalls gets all the calls that were made to DeviceGetSramUniqueUncorrectedEccErrorCounts.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetSramUniqueUncorrectedEccErrorCountsCalls())\nfunc (mock *Interface) DeviceGetSramUniqueUncorrectedEccErrorCountsCalls() []struct {\n\tDevice                              nvml.Device\n\tEccSramUniqueUncorrectedErrorCounts *nvml.EccSramUniqueUncorrectedErrorCounts\n} {\n\tvar calls []struct {\n\t\tDevice                              nvml.Device\n\t\tEccSramUniqueUncorrectedErrorCounts *nvml.EccSramUniqueUncorrectedErrorCounts\n\t}\n\tmock.lockDeviceGetSramUniqueUncorrectedEccErrorCounts.RLock()\n\tcalls = mock.calls.DeviceGetSramUniqueUncorrectedEccErrorCounts\n\tmock.lockDeviceGetSramUniqueUncorrectedEccErrorCounts.RUnlock()\n\treturn calls\n}\n\n// DeviceGetSupportedClocksEventReasons calls DeviceGetSupportedClocksEventReasonsFunc.\nfunc (mock *Interface) DeviceGetSupportedClocksEventReasons(device nvml.Device) (uint64, nvml.Return) {\n\tif mock.DeviceGetSupportedClocksEventReasonsFunc == nil {\n\t\tpanic(\"Interface.DeviceGetSupportedClocksEventReasonsFunc: method is nil but Interface.DeviceGetSupportedClocksEventReasons was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetSupportedClocksEventReasons.Lock()\n\tmock.calls.DeviceGetSupportedClocksEventReasons = append(mock.calls.DeviceGetSupportedClocksEventReasons, callInfo)\n\tmock.lockDeviceGetSupportedClocksEventReasons.Unlock()\n\treturn mock.DeviceGetSupportedClocksEventReasonsFunc(device)\n}\n\n// DeviceGetSupportedClocksEventReasonsCalls gets all the calls that were made to DeviceGetSupportedClocksEventReasons.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetSupportedClocksEventReasonsCalls())\nfunc (mock *Interface) DeviceGetSupportedClocksEventReasonsCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetSupportedClocksEventReasons.RLock()\n\tcalls = mock.calls.DeviceGetSupportedClocksEventReasons\n\tmock.lockDeviceGetSupportedClocksEventReasons.RUnlock()\n\treturn calls\n}\n\n// DeviceGetSupportedClocksThrottleReasons calls DeviceGetSupportedClocksThrottleReasonsFunc.\nfunc (mock *Interface) DeviceGetSupportedClocksThrottleReasons(device nvml.Device) (uint64, nvml.Return) {\n\tif mock.DeviceGetSupportedClocksThrottleReasonsFunc == nil {\n\t\tpanic(\"Interface.DeviceGetSupportedClocksThrottleReasonsFunc: method is nil but Interface.DeviceGetSupportedClocksThrottleReasons was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetSupportedClocksThrottleReasons.Lock()\n\tmock.calls.DeviceGetSupportedClocksThrottleReasons = append(mock.calls.DeviceGetSupportedClocksThrottleReasons, callInfo)\n\tmock.lockDeviceGetSupportedClocksThrottleReasons.Unlock()\n\treturn mock.DeviceGetSupportedClocksThrottleReasonsFunc(device)\n}\n\n// DeviceGetSupportedClocksThrottleReasonsCalls gets all the calls that were made to DeviceGetSupportedClocksThrottleReasons.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetSupportedClocksThrottleReasonsCalls())\nfunc (mock *Interface) DeviceGetSupportedClocksThrottleReasonsCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetSupportedClocksThrottleReasons.RLock()\n\tcalls = mock.calls.DeviceGetSupportedClocksThrottleReasons\n\tmock.lockDeviceGetSupportedClocksThrottleReasons.RUnlock()\n\treturn calls\n}\n\n// DeviceGetSupportedEventTypes calls DeviceGetSupportedEventTypesFunc.\nfunc (mock *Interface) DeviceGetSupportedEventTypes(device nvml.Device) (uint64, nvml.Return) {\n\tif mock.DeviceGetSupportedEventTypesFunc == nil {\n\t\tpanic(\"Interface.DeviceGetSupportedEventTypesFunc: method is nil but Interface.DeviceGetSupportedEventTypes was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetSupportedEventTypes.Lock()\n\tmock.calls.DeviceGetSupportedEventTypes = append(mock.calls.DeviceGetSupportedEventTypes, callInfo)\n\tmock.lockDeviceGetSupportedEventTypes.Unlock()\n\treturn mock.DeviceGetSupportedEventTypesFunc(device)\n}\n\n// DeviceGetSupportedEventTypesCalls gets all the calls that were made to DeviceGetSupportedEventTypes.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetSupportedEventTypesCalls())\nfunc (mock *Interface) DeviceGetSupportedEventTypesCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetSupportedEventTypes.RLock()\n\tcalls = mock.calls.DeviceGetSupportedEventTypes\n\tmock.lockDeviceGetSupportedEventTypes.RUnlock()\n\treturn calls\n}\n\n// DeviceGetSupportedGraphicsClocks calls DeviceGetSupportedGraphicsClocksFunc.\nfunc (mock *Interface) DeviceGetSupportedGraphicsClocks(device nvml.Device, n int) (int, uint32, nvml.Return) {\n\tif mock.DeviceGetSupportedGraphicsClocksFunc == nil {\n\t\tpanic(\"Interface.DeviceGetSupportedGraphicsClocksFunc: method is nil but Interface.DeviceGetSupportedGraphicsClocks was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t\tN      int\n\t}{\n\t\tDevice: device,\n\t\tN:      n,\n\t}\n\tmock.lockDeviceGetSupportedGraphicsClocks.Lock()\n\tmock.calls.DeviceGetSupportedGraphicsClocks = append(mock.calls.DeviceGetSupportedGraphicsClocks, callInfo)\n\tmock.lockDeviceGetSupportedGraphicsClocks.Unlock()\n\treturn mock.DeviceGetSupportedGraphicsClocksFunc(device, n)\n}\n\n// DeviceGetSupportedGraphicsClocksCalls gets all the calls that were made to DeviceGetSupportedGraphicsClocks.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetSupportedGraphicsClocksCalls())\nfunc (mock *Interface) DeviceGetSupportedGraphicsClocksCalls() []struct {\n\tDevice nvml.Device\n\tN      int\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t\tN      int\n\t}\n\tmock.lockDeviceGetSupportedGraphicsClocks.RLock()\n\tcalls = mock.calls.DeviceGetSupportedGraphicsClocks\n\tmock.lockDeviceGetSupportedGraphicsClocks.RUnlock()\n\treturn calls\n}\n\n// DeviceGetSupportedMemoryClocks calls DeviceGetSupportedMemoryClocksFunc.\nfunc (mock *Interface) DeviceGetSupportedMemoryClocks(device nvml.Device) (int, uint32, nvml.Return) {\n\tif mock.DeviceGetSupportedMemoryClocksFunc == nil {\n\t\tpanic(\"Interface.DeviceGetSupportedMemoryClocksFunc: method is nil but Interface.DeviceGetSupportedMemoryClocks was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetSupportedMemoryClocks.Lock()\n\tmock.calls.DeviceGetSupportedMemoryClocks = append(mock.calls.DeviceGetSupportedMemoryClocks, callInfo)\n\tmock.lockDeviceGetSupportedMemoryClocks.Unlock()\n\treturn mock.DeviceGetSupportedMemoryClocksFunc(device)\n}\n\n// DeviceGetSupportedMemoryClocksCalls gets all the calls that were made to DeviceGetSupportedMemoryClocks.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetSupportedMemoryClocksCalls())\nfunc (mock *Interface) DeviceGetSupportedMemoryClocksCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetSupportedMemoryClocks.RLock()\n\tcalls = mock.calls.DeviceGetSupportedMemoryClocks\n\tmock.lockDeviceGetSupportedMemoryClocks.RUnlock()\n\treturn calls\n}\n\n// DeviceGetSupportedPerformanceStates calls DeviceGetSupportedPerformanceStatesFunc.\nfunc (mock *Interface) DeviceGetSupportedPerformanceStates(device nvml.Device) ([]nvml.Pstates, nvml.Return) {\n\tif mock.DeviceGetSupportedPerformanceStatesFunc == nil {\n\t\tpanic(\"Interface.DeviceGetSupportedPerformanceStatesFunc: method is nil but Interface.DeviceGetSupportedPerformanceStates was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetSupportedPerformanceStates.Lock()\n\tmock.calls.DeviceGetSupportedPerformanceStates = append(mock.calls.DeviceGetSupportedPerformanceStates, callInfo)\n\tmock.lockDeviceGetSupportedPerformanceStates.Unlock()\n\treturn mock.DeviceGetSupportedPerformanceStatesFunc(device)\n}\n\n// DeviceGetSupportedPerformanceStatesCalls gets all the calls that were made to DeviceGetSupportedPerformanceStates.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetSupportedPerformanceStatesCalls())\nfunc (mock *Interface) DeviceGetSupportedPerformanceStatesCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetSupportedPerformanceStates.RLock()\n\tcalls = mock.calls.DeviceGetSupportedPerformanceStates\n\tmock.lockDeviceGetSupportedPerformanceStates.RUnlock()\n\treturn calls\n}\n\n// DeviceGetSupportedVgpus calls DeviceGetSupportedVgpusFunc.\nfunc (mock *Interface) DeviceGetSupportedVgpus(device nvml.Device) ([]nvml.VgpuTypeId, nvml.Return) {\n\tif mock.DeviceGetSupportedVgpusFunc == nil {\n\t\tpanic(\"Interface.DeviceGetSupportedVgpusFunc: method is nil but Interface.DeviceGetSupportedVgpus was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetSupportedVgpus.Lock()\n\tmock.calls.DeviceGetSupportedVgpus = append(mock.calls.DeviceGetSupportedVgpus, callInfo)\n\tmock.lockDeviceGetSupportedVgpus.Unlock()\n\treturn mock.DeviceGetSupportedVgpusFunc(device)\n}\n\n// DeviceGetSupportedVgpusCalls gets all the calls that were made to DeviceGetSupportedVgpus.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetSupportedVgpusCalls())\nfunc (mock *Interface) DeviceGetSupportedVgpusCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetSupportedVgpus.RLock()\n\tcalls = mock.calls.DeviceGetSupportedVgpus\n\tmock.lockDeviceGetSupportedVgpus.RUnlock()\n\treturn calls\n}\n\n// DeviceGetTargetFanSpeed calls DeviceGetTargetFanSpeedFunc.\nfunc (mock *Interface) DeviceGetTargetFanSpeed(device nvml.Device, n int) (int, nvml.Return) {\n\tif mock.DeviceGetTargetFanSpeedFunc == nil {\n\t\tpanic(\"Interface.DeviceGetTargetFanSpeedFunc: method is nil but Interface.DeviceGetTargetFanSpeed was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t\tN      int\n\t}{\n\t\tDevice: device,\n\t\tN:      n,\n\t}\n\tmock.lockDeviceGetTargetFanSpeed.Lock()\n\tmock.calls.DeviceGetTargetFanSpeed = append(mock.calls.DeviceGetTargetFanSpeed, callInfo)\n\tmock.lockDeviceGetTargetFanSpeed.Unlock()\n\treturn mock.DeviceGetTargetFanSpeedFunc(device, n)\n}\n\n// DeviceGetTargetFanSpeedCalls gets all the calls that were made to DeviceGetTargetFanSpeed.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetTargetFanSpeedCalls())\nfunc (mock *Interface) DeviceGetTargetFanSpeedCalls() []struct {\n\tDevice nvml.Device\n\tN      int\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t\tN      int\n\t}\n\tmock.lockDeviceGetTargetFanSpeed.RLock()\n\tcalls = mock.calls.DeviceGetTargetFanSpeed\n\tmock.lockDeviceGetTargetFanSpeed.RUnlock()\n\treturn calls\n}\n\n// DeviceGetTemperature calls DeviceGetTemperatureFunc.\nfunc (mock *Interface) DeviceGetTemperature(device nvml.Device, temperatureSensors nvml.TemperatureSensors) (uint32, nvml.Return) {\n\tif mock.DeviceGetTemperatureFunc == nil {\n\t\tpanic(\"Interface.DeviceGetTemperatureFunc: method is nil but Interface.DeviceGetTemperature was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice             nvml.Device\n\t\tTemperatureSensors nvml.TemperatureSensors\n\t}{\n\t\tDevice:             device,\n\t\tTemperatureSensors: temperatureSensors,\n\t}\n\tmock.lockDeviceGetTemperature.Lock()\n\tmock.calls.DeviceGetTemperature = append(mock.calls.DeviceGetTemperature, callInfo)\n\tmock.lockDeviceGetTemperature.Unlock()\n\treturn mock.DeviceGetTemperatureFunc(device, temperatureSensors)\n}\n\n// DeviceGetTemperatureCalls gets all the calls that were made to DeviceGetTemperature.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetTemperatureCalls())\nfunc (mock *Interface) DeviceGetTemperatureCalls() []struct {\n\tDevice             nvml.Device\n\tTemperatureSensors nvml.TemperatureSensors\n} {\n\tvar calls []struct {\n\t\tDevice             nvml.Device\n\t\tTemperatureSensors nvml.TemperatureSensors\n\t}\n\tmock.lockDeviceGetTemperature.RLock()\n\tcalls = mock.calls.DeviceGetTemperature\n\tmock.lockDeviceGetTemperature.RUnlock()\n\treturn calls\n}\n\n// DeviceGetTemperatureThreshold calls DeviceGetTemperatureThresholdFunc.\nfunc (mock *Interface) DeviceGetTemperatureThreshold(device nvml.Device, temperatureThresholds nvml.TemperatureThresholds) (uint32, nvml.Return) {\n\tif mock.DeviceGetTemperatureThresholdFunc == nil {\n\t\tpanic(\"Interface.DeviceGetTemperatureThresholdFunc: method is nil but Interface.DeviceGetTemperatureThreshold was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice                nvml.Device\n\t\tTemperatureThresholds nvml.TemperatureThresholds\n\t}{\n\t\tDevice:                device,\n\t\tTemperatureThresholds: temperatureThresholds,\n\t}\n\tmock.lockDeviceGetTemperatureThreshold.Lock()\n\tmock.calls.DeviceGetTemperatureThreshold = append(mock.calls.DeviceGetTemperatureThreshold, callInfo)\n\tmock.lockDeviceGetTemperatureThreshold.Unlock()\n\treturn mock.DeviceGetTemperatureThresholdFunc(device, temperatureThresholds)\n}\n\n// DeviceGetTemperatureThresholdCalls gets all the calls that were made to DeviceGetTemperatureThreshold.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetTemperatureThresholdCalls())\nfunc (mock *Interface) DeviceGetTemperatureThresholdCalls() []struct {\n\tDevice                nvml.Device\n\tTemperatureThresholds nvml.TemperatureThresholds\n} {\n\tvar calls []struct {\n\t\tDevice                nvml.Device\n\t\tTemperatureThresholds nvml.TemperatureThresholds\n\t}\n\tmock.lockDeviceGetTemperatureThreshold.RLock()\n\tcalls = mock.calls.DeviceGetTemperatureThreshold\n\tmock.lockDeviceGetTemperatureThreshold.RUnlock()\n\treturn calls\n}\n\n// DeviceGetTemperatureV calls DeviceGetTemperatureVFunc.\nfunc (mock *Interface) DeviceGetTemperatureV(device nvml.Device) nvml.TemperatureHandler {\n\tif mock.DeviceGetTemperatureVFunc == nil {\n\t\tpanic(\"Interface.DeviceGetTemperatureVFunc: method is nil but Interface.DeviceGetTemperatureV was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetTemperatureV.Lock()\n\tmock.calls.DeviceGetTemperatureV = append(mock.calls.DeviceGetTemperatureV, callInfo)\n\tmock.lockDeviceGetTemperatureV.Unlock()\n\treturn mock.DeviceGetTemperatureVFunc(device)\n}\n\n// DeviceGetTemperatureVCalls gets all the calls that were made to DeviceGetTemperatureV.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetTemperatureVCalls())\nfunc (mock *Interface) DeviceGetTemperatureVCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetTemperatureV.RLock()\n\tcalls = mock.calls.DeviceGetTemperatureV\n\tmock.lockDeviceGetTemperatureV.RUnlock()\n\treturn calls\n}\n\n// DeviceGetThermalSettings calls DeviceGetThermalSettingsFunc.\nfunc (mock *Interface) DeviceGetThermalSettings(device nvml.Device, v uint32) (nvml.GpuThermalSettings, nvml.Return) {\n\tif mock.DeviceGetThermalSettingsFunc == nil {\n\t\tpanic(\"Interface.DeviceGetThermalSettingsFunc: method is nil but Interface.DeviceGetThermalSettings was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t\tV      uint32\n\t}{\n\t\tDevice: device,\n\t\tV:      v,\n\t}\n\tmock.lockDeviceGetThermalSettings.Lock()\n\tmock.calls.DeviceGetThermalSettings = append(mock.calls.DeviceGetThermalSettings, callInfo)\n\tmock.lockDeviceGetThermalSettings.Unlock()\n\treturn mock.DeviceGetThermalSettingsFunc(device, v)\n}\n\n// DeviceGetThermalSettingsCalls gets all the calls that were made to DeviceGetThermalSettings.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetThermalSettingsCalls())\nfunc (mock *Interface) DeviceGetThermalSettingsCalls() []struct {\n\tDevice nvml.Device\n\tV      uint32\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t\tV      uint32\n\t}\n\tmock.lockDeviceGetThermalSettings.RLock()\n\tcalls = mock.calls.DeviceGetThermalSettings\n\tmock.lockDeviceGetThermalSettings.RUnlock()\n\treturn calls\n}\n\n// DeviceGetTopologyCommonAncestor calls DeviceGetTopologyCommonAncestorFunc.\nfunc (mock *Interface) DeviceGetTopologyCommonAncestor(device1 nvml.Device, device2 nvml.Device) (nvml.GpuTopologyLevel, nvml.Return) {\n\tif mock.DeviceGetTopologyCommonAncestorFunc == nil {\n\t\tpanic(\"Interface.DeviceGetTopologyCommonAncestorFunc: method is nil but Interface.DeviceGetTopologyCommonAncestor was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice1 nvml.Device\n\t\tDevice2 nvml.Device\n\t}{\n\t\tDevice1: device1,\n\t\tDevice2: device2,\n\t}\n\tmock.lockDeviceGetTopologyCommonAncestor.Lock()\n\tmock.calls.DeviceGetTopologyCommonAncestor = append(mock.calls.DeviceGetTopologyCommonAncestor, callInfo)\n\tmock.lockDeviceGetTopologyCommonAncestor.Unlock()\n\treturn mock.DeviceGetTopologyCommonAncestorFunc(device1, device2)\n}\n\n// DeviceGetTopologyCommonAncestorCalls gets all the calls that were made to DeviceGetTopologyCommonAncestor.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetTopologyCommonAncestorCalls())\nfunc (mock *Interface) DeviceGetTopologyCommonAncestorCalls() []struct {\n\tDevice1 nvml.Device\n\tDevice2 nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice1 nvml.Device\n\t\tDevice2 nvml.Device\n\t}\n\tmock.lockDeviceGetTopologyCommonAncestor.RLock()\n\tcalls = mock.calls.DeviceGetTopologyCommonAncestor\n\tmock.lockDeviceGetTopologyCommonAncestor.RUnlock()\n\treturn calls\n}\n\n// DeviceGetTopologyNearestGpus calls DeviceGetTopologyNearestGpusFunc.\nfunc (mock *Interface) DeviceGetTopologyNearestGpus(device nvml.Device, gpuTopologyLevel nvml.GpuTopologyLevel) ([]nvml.Device, nvml.Return) {\n\tif mock.DeviceGetTopologyNearestGpusFunc == nil {\n\t\tpanic(\"Interface.DeviceGetTopologyNearestGpusFunc: method is nil but Interface.DeviceGetTopologyNearestGpus was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice           nvml.Device\n\t\tGpuTopologyLevel nvml.GpuTopologyLevel\n\t}{\n\t\tDevice:           device,\n\t\tGpuTopologyLevel: gpuTopologyLevel,\n\t}\n\tmock.lockDeviceGetTopologyNearestGpus.Lock()\n\tmock.calls.DeviceGetTopologyNearestGpus = append(mock.calls.DeviceGetTopologyNearestGpus, callInfo)\n\tmock.lockDeviceGetTopologyNearestGpus.Unlock()\n\treturn mock.DeviceGetTopologyNearestGpusFunc(device, gpuTopologyLevel)\n}\n\n// DeviceGetTopologyNearestGpusCalls gets all the calls that were made to DeviceGetTopologyNearestGpus.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetTopologyNearestGpusCalls())\nfunc (mock *Interface) DeviceGetTopologyNearestGpusCalls() []struct {\n\tDevice           nvml.Device\n\tGpuTopologyLevel nvml.GpuTopologyLevel\n} {\n\tvar calls []struct {\n\t\tDevice           nvml.Device\n\t\tGpuTopologyLevel nvml.GpuTopologyLevel\n\t}\n\tmock.lockDeviceGetTopologyNearestGpus.RLock()\n\tcalls = mock.calls.DeviceGetTopologyNearestGpus\n\tmock.lockDeviceGetTopologyNearestGpus.RUnlock()\n\treturn calls\n}\n\n// DeviceGetTotalEccErrors calls DeviceGetTotalEccErrorsFunc.\nfunc (mock *Interface) DeviceGetTotalEccErrors(device nvml.Device, memoryErrorType nvml.MemoryErrorType, eccCounterType nvml.EccCounterType) (uint64, nvml.Return) {\n\tif mock.DeviceGetTotalEccErrorsFunc == nil {\n\t\tpanic(\"Interface.DeviceGetTotalEccErrorsFunc: method is nil but Interface.DeviceGetTotalEccErrors was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice          nvml.Device\n\t\tMemoryErrorType nvml.MemoryErrorType\n\t\tEccCounterType  nvml.EccCounterType\n\t}{\n\t\tDevice:          device,\n\t\tMemoryErrorType: memoryErrorType,\n\t\tEccCounterType:  eccCounterType,\n\t}\n\tmock.lockDeviceGetTotalEccErrors.Lock()\n\tmock.calls.DeviceGetTotalEccErrors = append(mock.calls.DeviceGetTotalEccErrors, callInfo)\n\tmock.lockDeviceGetTotalEccErrors.Unlock()\n\treturn mock.DeviceGetTotalEccErrorsFunc(device, memoryErrorType, eccCounterType)\n}\n\n// DeviceGetTotalEccErrorsCalls gets all the calls that were made to DeviceGetTotalEccErrors.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetTotalEccErrorsCalls())\nfunc (mock *Interface) DeviceGetTotalEccErrorsCalls() []struct {\n\tDevice          nvml.Device\n\tMemoryErrorType nvml.MemoryErrorType\n\tEccCounterType  nvml.EccCounterType\n} {\n\tvar calls []struct {\n\t\tDevice          nvml.Device\n\t\tMemoryErrorType nvml.MemoryErrorType\n\t\tEccCounterType  nvml.EccCounterType\n\t}\n\tmock.lockDeviceGetTotalEccErrors.RLock()\n\tcalls = mock.calls.DeviceGetTotalEccErrors\n\tmock.lockDeviceGetTotalEccErrors.RUnlock()\n\treturn calls\n}\n\n// DeviceGetTotalEnergyConsumption calls DeviceGetTotalEnergyConsumptionFunc.\nfunc (mock *Interface) DeviceGetTotalEnergyConsumption(device nvml.Device) (uint64, nvml.Return) {\n\tif mock.DeviceGetTotalEnergyConsumptionFunc == nil {\n\t\tpanic(\"Interface.DeviceGetTotalEnergyConsumptionFunc: method is nil but Interface.DeviceGetTotalEnergyConsumption was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetTotalEnergyConsumption.Lock()\n\tmock.calls.DeviceGetTotalEnergyConsumption = append(mock.calls.DeviceGetTotalEnergyConsumption, callInfo)\n\tmock.lockDeviceGetTotalEnergyConsumption.Unlock()\n\treturn mock.DeviceGetTotalEnergyConsumptionFunc(device)\n}\n\n// DeviceGetTotalEnergyConsumptionCalls gets all the calls that were made to DeviceGetTotalEnergyConsumption.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetTotalEnergyConsumptionCalls())\nfunc (mock *Interface) DeviceGetTotalEnergyConsumptionCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetTotalEnergyConsumption.RLock()\n\tcalls = mock.calls.DeviceGetTotalEnergyConsumption\n\tmock.lockDeviceGetTotalEnergyConsumption.RUnlock()\n\treturn calls\n}\n\n// DeviceGetUUID calls DeviceGetUUIDFunc.\nfunc (mock *Interface) DeviceGetUUID(device nvml.Device) (string, nvml.Return) {\n\tif mock.DeviceGetUUIDFunc == nil {\n\t\tpanic(\"Interface.DeviceGetUUIDFunc: method is nil but Interface.DeviceGetUUID was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetUUID.Lock()\n\tmock.calls.DeviceGetUUID = append(mock.calls.DeviceGetUUID, callInfo)\n\tmock.lockDeviceGetUUID.Unlock()\n\treturn mock.DeviceGetUUIDFunc(device)\n}\n\n// DeviceGetUUIDCalls gets all the calls that were made to DeviceGetUUID.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetUUIDCalls())\nfunc (mock *Interface) DeviceGetUUIDCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetUUID.RLock()\n\tcalls = mock.calls.DeviceGetUUID\n\tmock.lockDeviceGetUUID.RUnlock()\n\treturn calls\n}\n\n// DeviceGetUtilizationRates calls DeviceGetUtilizationRatesFunc.\nfunc (mock *Interface) DeviceGetUtilizationRates(device nvml.Device) (nvml.Utilization, nvml.Return) {\n\tif mock.DeviceGetUtilizationRatesFunc == nil {\n\t\tpanic(\"Interface.DeviceGetUtilizationRatesFunc: method is nil but Interface.DeviceGetUtilizationRates was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetUtilizationRates.Lock()\n\tmock.calls.DeviceGetUtilizationRates = append(mock.calls.DeviceGetUtilizationRates, callInfo)\n\tmock.lockDeviceGetUtilizationRates.Unlock()\n\treturn mock.DeviceGetUtilizationRatesFunc(device)\n}\n\n// DeviceGetUtilizationRatesCalls gets all the calls that were made to DeviceGetUtilizationRates.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetUtilizationRatesCalls())\nfunc (mock *Interface) DeviceGetUtilizationRatesCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetUtilizationRates.RLock()\n\tcalls = mock.calls.DeviceGetUtilizationRates\n\tmock.lockDeviceGetUtilizationRates.RUnlock()\n\treturn calls\n}\n\n// DeviceGetVbiosVersion calls DeviceGetVbiosVersionFunc.\nfunc (mock *Interface) DeviceGetVbiosVersion(device nvml.Device) (string, nvml.Return) {\n\tif mock.DeviceGetVbiosVersionFunc == nil {\n\t\tpanic(\"Interface.DeviceGetVbiosVersionFunc: method is nil but Interface.DeviceGetVbiosVersion was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetVbiosVersion.Lock()\n\tmock.calls.DeviceGetVbiosVersion = append(mock.calls.DeviceGetVbiosVersion, callInfo)\n\tmock.lockDeviceGetVbiosVersion.Unlock()\n\treturn mock.DeviceGetVbiosVersionFunc(device)\n}\n\n// DeviceGetVbiosVersionCalls gets all the calls that were made to DeviceGetVbiosVersion.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetVbiosVersionCalls())\nfunc (mock *Interface) DeviceGetVbiosVersionCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetVbiosVersion.RLock()\n\tcalls = mock.calls.DeviceGetVbiosVersion\n\tmock.lockDeviceGetVbiosVersion.RUnlock()\n\treturn calls\n}\n\n// DeviceGetVgpuCapabilities calls DeviceGetVgpuCapabilitiesFunc.\nfunc (mock *Interface) DeviceGetVgpuCapabilities(device nvml.Device, deviceVgpuCapability nvml.DeviceVgpuCapability) (bool, nvml.Return) {\n\tif mock.DeviceGetVgpuCapabilitiesFunc == nil {\n\t\tpanic(\"Interface.DeviceGetVgpuCapabilitiesFunc: method is nil but Interface.DeviceGetVgpuCapabilities was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice               nvml.Device\n\t\tDeviceVgpuCapability nvml.DeviceVgpuCapability\n\t}{\n\t\tDevice:               device,\n\t\tDeviceVgpuCapability: deviceVgpuCapability,\n\t}\n\tmock.lockDeviceGetVgpuCapabilities.Lock()\n\tmock.calls.DeviceGetVgpuCapabilities = append(mock.calls.DeviceGetVgpuCapabilities, callInfo)\n\tmock.lockDeviceGetVgpuCapabilities.Unlock()\n\treturn mock.DeviceGetVgpuCapabilitiesFunc(device, deviceVgpuCapability)\n}\n\n// DeviceGetVgpuCapabilitiesCalls gets all the calls that were made to DeviceGetVgpuCapabilities.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetVgpuCapabilitiesCalls())\nfunc (mock *Interface) DeviceGetVgpuCapabilitiesCalls() []struct {\n\tDevice               nvml.Device\n\tDeviceVgpuCapability nvml.DeviceVgpuCapability\n} {\n\tvar calls []struct {\n\t\tDevice               nvml.Device\n\t\tDeviceVgpuCapability nvml.DeviceVgpuCapability\n\t}\n\tmock.lockDeviceGetVgpuCapabilities.RLock()\n\tcalls = mock.calls.DeviceGetVgpuCapabilities\n\tmock.lockDeviceGetVgpuCapabilities.RUnlock()\n\treturn calls\n}\n\n// DeviceGetVgpuHeterogeneousMode calls DeviceGetVgpuHeterogeneousModeFunc.\nfunc (mock *Interface) DeviceGetVgpuHeterogeneousMode(device nvml.Device) (nvml.VgpuHeterogeneousMode, nvml.Return) {\n\tif mock.DeviceGetVgpuHeterogeneousModeFunc == nil {\n\t\tpanic(\"Interface.DeviceGetVgpuHeterogeneousModeFunc: method is nil but Interface.DeviceGetVgpuHeterogeneousMode was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetVgpuHeterogeneousMode.Lock()\n\tmock.calls.DeviceGetVgpuHeterogeneousMode = append(mock.calls.DeviceGetVgpuHeterogeneousMode, callInfo)\n\tmock.lockDeviceGetVgpuHeterogeneousMode.Unlock()\n\treturn mock.DeviceGetVgpuHeterogeneousModeFunc(device)\n}\n\n// DeviceGetVgpuHeterogeneousModeCalls gets all the calls that were made to DeviceGetVgpuHeterogeneousMode.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetVgpuHeterogeneousModeCalls())\nfunc (mock *Interface) DeviceGetVgpuHeterogeneousModeCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetVgpuHeterogeneousMode.RLock()\n\tcalls = mock.calls.DeviceGetVgpuHeterogeneousMode\n\tmock.lockDeviceGetVgpuHeterogeneousMode.RUnlock()\n\treturn calls\n}\n\n// DeviceGetVgpuInstancesUtilizationInfo calls DeviceGetVgpuInstancesUtilizationInfoFunc.\nfunc (mock *Interface) DeviceGetVgpuInstancesUtilizationInfo(device nvml.Device) (nvml.VgpuInstancesUtilizationInfo, nvml.Return) {\n\tif mock.DeviceGetVgpuInstancesUtilizationInfoFunc == nil {\n\t\tpanic(\"Interface.DeviceGetVgpuInstancesUtilizationInfoFunc: method is nil but Interface.DeviceGetVgpuInstancesUtilizationInfo was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetVgpuInstancesUtilizationInfo.Lock()\n\tmock.calls.DeviceGetVgpuInstancesUtilizationInfo = append(mock.calls.DeviceGetVgpuInstancesUtilizationInfo, callInfo)\n\tmock.lockDeviceGetVgpuInstancesUtilizationInfo.Unlock()\n\treturn mock.DeviceGetVgpuInstancesUtilizationInfoFunc(device)\n}\n\n// DeviceGetVgpuInstancesUtilizationInfoCalls gets all the calls that were made to DeviceGetVgpuInstancesUtilizationInfo.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetVgpuInstancesUtilizationInfoCalls())\nfunc (mock *Interface) DeviceGetVgpuInstancesUtilizationInfoCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetVgpuInstancesUtilizationInfo.RLock()\n\tcalls = mock.calls.DeviceGetVgpuInstancesUtilizationInfo\n\tmock.lockDeviceGetVgpuInstancesUtilizationInfo.RUnlock()\n\treturn calls\n}\n\n// DeviceGetVgpuMetadata calls DeviceGetVgpuMetadataFunc.\nfunc (mock *Interface) DeviceGetVgpuMetadata(device nvml.Device) (nvml.VgpuPgpuMetadata, nvml.Return) {\n\tif mock.DeviceGetVgpuMetadataFunc == nil {\n\t\tpanic(\"Interface.DeviceGetVgpuMetadataFunc: method is nil but Interface.DeviceGetVgpuMetadata was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetVgpuMetadata.Lock()\n\tmock.calls.DeviceGetVgpuMetadata = append(mock.calls.DeviceGetVgpuMetadata, callInfo)\n\tmock.lockDeviceGetVgpuMetadata.Unlock()\n\treturn mock.DeviceGetVgpuMetadataFunc(device)\n}\n\n// DeviceGetVgpuMetadataCalls gets all the calls that were made to DeviceGetVgpuMetadata.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetVgpuMetadataCalls())\nfunc (mock *Interface) DeviceGetVgpuMetadataCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetVgpuMetadata.RLock()\n\tcalls = mock.calls.DeviceGetVgpuMetadata\n\tmock.lockDeviceGetVgpuMetadata.RUnlock()\n\treturn calls\n}\n\n// DeviceGetVgpuProcessUtilization calls DeviceGetVgpuProcessUtilizationFunc.\nfunc (mock *Interface) DeviceGetVgpuProcessUtilization(device nvml.Device, v uint64) ([]nvml.VgpuProcessUtilizationSample, nvml.Return) {\n\tif mock.DeviceGetVgpuProcessUtilizationFunc == nil {\n\t\tpanic(\"Interface.DeviceGetVgpuProcessUtilizationFunc: method is nil but Interface.DeviceGetVgpuProcessUtilization was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t\tV      uint64\n\t}{\n\t\tDevice: device,\n\t\tV:      v,\n\t}\n\tmock.lockDeviceGetVgpuProcessUtilization.Lock()\n\tmock.calls.DeviceGetVgpuProcessUtilization = append(mock.calls.DeviceGetVgpuProcessUtilization, callInfo)\n\tmock.lockDeviceGetVgpuProcessUtilization.Unlock()\n\treturn mock.DeviceGetVgpuProcessUtilizationFunc(device, v)\n}\n\n// DeviceGetVgpuProcessUtilizationCalls gets all the calls that were made to DeviceGetVgpuProcessUtilization.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetVgpuProcessUtilizationCalls())\nfunc (mock *Interface) DeviceGetVgpuProcessUtilizationCalls() []struct {\n\tDevice nvml.Device\n\tV      uint64\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t\tV      uint64\n\t}\n\tmock.lockDeviceGetVgpuProcessUtilization.RLock()\n\tcalls = mock.calls.DeviceGetVgpuProcessUtilization\n\tmock.lockDeviceGetVgpuProcessUtilization.RUnlock()\n\treturn calls\n}\n\n// DeviceGetVgpuProcessesUtilizationInfo calls DeviceGetVgpuProcessesUtilizationInfoFunc.\nfunc (mock *Interface) DeviceGetVgpuProcessesUtilizationInfo(device nvml.Device) (nvml.VgpuProcessesUtilizationInfo, nvml.Return) {\n\tif mock.DeviceGetVgpuProcessesUtilizationInfoFunc == nil {\n\t\tpanic(\"Interface.DeviceGetVgpuProcessesUtilizationInfoFunc: method is nil but Interface.DeviceGetVgpuProcessesUtilizationInfo was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetVgpuProcessesUtilizationInfo.Lock()\n\tmock.calls.DeviceGetVgpuProcessesUtilizationInfo = append(mock.calls.DeviceGetVgpuProcessesUtilizationInfo, callInfo)\n\tmock.lockDeviceGetVgpuProcessesUtilizationInfo.Unlock()\n\treturn mock.DeviceGetVgpuProcessesUtilizationInfoFunc(device)\n}\n\n// DeviceGetVgpuProcessesUtilizationInfoCalls gets all the calls that were made to DeviceGetVgpuProcessesUtilizationInfo.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetVgpuProcessesUtilizationInfoCalls())\nfunc (mock *Interface) DeviceGetVgpuProcessesUtilizationInfoCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetVgpuProcessesUtilizationInfo.RLock()\n\tcalls = mock.calls.DeviceGetVgpuProcessesUtilizationInfo\n\tmock.lockDeviceGetVgpuProcessesUtilizationInfo.RUnlock()\n\treturn calls\n}\n\n// DeviceGetVgpuSchedulerCapabilities calls DeviceGetVgpuSchedulerCapabilitiesFunc.\nfunc (mock *Interface) DeviceGetVgpuSchedulerCapabilities(device nvml.Device) (nvml.VgpuSchedulerCapabilities, nvml.Return) {\n\tif mock.DeviceGetVgpuSchedulerCapabilitiesFunc == nil {\n\t\tpanic(\"Interface.DeviceGetVgpuSchedulerCapabilitiesFunc: method is nil but Interface.DeviceGetVgpuSchedulerCapabilities was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetVgpuSchedulerCapabilities.Lock()\n\tmock.calls.DeviceGetVgpuSchedulerCapabilities = append(mock.calls.DeviceGetVgpuSchedulerCapabilities, callInfo)\n\tmock.lockDeviceGetVgpuSchedulerCapabilities.Unlock()\n\treturn mock.DeviceGetVgpuSchedulerCapabilitiesFunc(device)\n}\n\n// DeviceGetVgpuSchedulerCapabilitiesCalls gets all the calls that were made to DeviceGetVgpuSchedulerCapabilities.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetVgpuSchedulerCapabilitiesCalls())\nfunc (mock *Interface) DeviceGetVgpuSchedulerCapabilitiesCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetVgpuSchedulerCapabilities.RLock()\n\tcalls = mock.calls.DeviceGetVgpuSchedulerCapabilities\n\tmock.lockDeviceGetVgpuSchedulerCapabilities.RUnlock()\n\treturn calls\n}\n\n// DeviceGetVgpuSchedulerLog calls DeviceGetVgpuSchedulerLogFunc.\nfunc (mock *Interface) DeviceGetVgpuSchedulerLog(device nvml.Device) (nvml.VgpuSchedulerLog, nvml.Return) {\n\tif mock.DeviceGetVgpuSchedulerLogFunc == nil {\n\t\tpanic(\"Interface.DeviceGetVgpuSchedulerLogFunc: method is nil but Interface.DeviceGetVgpuSchedulerLog was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetVgpuSchedulerLog.Lock()\n\tmock.calls.DeviceGetVgpuSchedulerLog = append(mock.calls.DeviceGetVgpuSchedulerLog, callInfo)\n\tmock.lockDeviceGetVgpuSchedulerLog.Unlock()\n\treturn mock.DeviceGetVgpuSchedulerLogFunc(device)\n}\n\n// DeviceGetVgpuSchedulerLogCalls gets all the calls that were made to DeviceGetVgpuSchedulerLog.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetVgpuSchedulerLogCalls())\nfunc (mock *Interface) DeviceGetVgpuSchedulerLogCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetVgpuSchedulerLog.RLock()\n\tcalls = mock.calls.DeviceGetVgpuSchedulerLog\n\tmock.lockDeviceGetVgpuSchedulerLog.RUnlock()\n\treturn calls\n}\n\n// DeviceGetVgpuSchedulerState calls DeviceGetVgpuSchedulerStateFunc.\nfunc (mock *Interface) DeviceGetVgpuSchedulerState(device nvml.Device) (nvml.VgpuSchedulerGetState, nvml.Return) {\n\tif mock.DeviceGetVgpuSchedulerStateFunc == nil {\n\t\tpanic(\"Interface.DeviceGetVgpuSchedulerStateFunc: method is nil but Interface.DeviceGetVgpuSchedulerState was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetVgpuSchedulerState.Lock()\n\tmock.calls.DeviceGetVgpuSchedulerState = append(mock.calls.DeviceGetVgpuSchedulerState, callInfo)\n\tmock.lockDeviceGetVgpuSchedulerState.Unlock()\n\treturn mock.DeviceGetVgpuSchedulerStateFunc(device)\n}\n\n// DeviceGetVgpuSchedulerStateCalls gets all the calls that were made to DeviceGetVgpuSchedulerState.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetVgpuSchedulerStateCalls())\nfunc (mock *Interface) DeviceGetVgpuSchedulerStateCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetVgpuSchedulerState.RLock()\n\tcalls = mock.calls.DeviceGetVgpuSchedulerState\n\tmock.lockDeviceGetVgpuSchedulerState.RUnlock()\n\treturn calls\n}\n\n// DeviceGetVgpuTypeCreatablePlacements calls DeviceGetVgpuTypeCreatablePlacementsFunc.\nfunc (mock *Interface) DeviceGetVgpuTypeCreatablePlacements(device nvml.Device, vgpuTypeId nvml.VgpuTypeId) (nvml.VgpuPlacementList, nvml.Return) {\n\tif mock.DeviceGetVgpuTypeCreatablePlacementsFunc == nil {\n\t\tpanic(\"Interface.DeviceGetVgpuTypeCreatablePlacementsFunc: method is nil but Interface.DeviceGetVgpuTypeCreatablePlacements was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice     nvml.Device\n\t\tVgpuTypeId nvml.VgpuTypeId\n\t}{\n\t\tDevice:     device,\n\t\tVgpuTypeId: vgpuTypeId,\n\t}\n\tmock.lockDeviceGetVgpuTypeCreatablePlacements.Lock()\n\tmock.calls.DeviceGetVgpuTypeCreatablePlacements = append(mock.calls.DeviceGetVgpuTypeCreatablePlacements, callInfo)\n\tmock.lockDeviceGetVgpuTypeCreatablePlacements.Unlock()\n\treturn mock.DeviceGetVgpuTypeCreatablePlacementsFunc(device, vgpuTypeId)\n}\n\n// DeviceGetVgpuTypeCreatablePlacementsCalls gets all the calls that were made to DeviceGetVgpuTypeCreatablePlacements.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetVgpuTypeCreatablePlacementsCalls())\nfunc (mock *Interface) DeviceGetVgpuTypeCreatablePlacementsCalls() []struct {\n\tDevice     nvml.Device\n\tVgpuTypeId nvml.VgpuTypeId\n} {\n\tvar calls []struct {\n\t\tDevice     nvml.Device\n\t\tVgpuTypeId nvml.VgpuTypeId\n\t}\n\tmock.lockDeviceGetVgpuTypeCreatablePlacements.RLock()\n\tcalls = mock.calls.DeviceGetVgpuTypeCreatablePlacements\n\tmock.lockDeviceGetVgpuTypeCreatablePlacements.RUnlock()\n\treturn calls\n}\n\n// DeviceGetVgpuTypeSupportedPlacements calls DeviceGetVgpuTypeSupportedPlacementsFunc.\nfunc (mock *Interface) DeviceGetVgpuTypeSupportedPlacements(device nvml.Device, vgpuTypeId nvml.VgpuTypeId) (nvml.VgpuPlacementList, nvml.Return) {\n\tif mock.DeviceGetVgpuTypeSupportedPlacementsFunc == nil {\n\t\tpanic(\"Interface.DeviceGetVgpuTypeSupportedPlacementsFunc: method is nil but Interface.DeviceGetVgpuTypeSupportedPlacements was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice     nvml.Device\n\t\tVgpuTypeId nvml.VgpuTypeId\n\t}{\n\t\tDevice:     device,\n\t\tVgpuTypeId: vgpuTypeId,\n\t}\n\tmock.lockDeviceGetVgpuTypeSupportedPlacements.Lock()\n\tmock.calls.DeviceGetVgpuTypeSupportedPlacements = append(mock.calls.DeviceGetVgpuTypeSupportedPlacements, callInfo)\n\tmock.lockDeviceGetVgpuTypeSupportedPlacements.Unlock()\n\treturn mock.DeviceGetVgpuTypeSupportedPlacementsFunc(device, vgpuTypeId)\n}\n\n// DeviceGetVgpuTypeSupportedPlacementsCalls gets all the calls that were made to DeviceGetVgpuTypeSupportedPlacements.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetVgpuTypeSupportedPlacementsCalls())\nfunc (mock *Interface) DeviceGetVgpuTypeSupportedPlacementsCalls() []struct {\n\tDevice     nvml.Device\n\tVgpuTypeId nvml.VgpuTypeId\n} {\n\tvar calls []struct {\n\t\tDevice     nvml.Device\n\t\tVgpuTypeId nvml.VgpuTypeId\n\t}\n\tmock.lockDeviceGetVgpuTypeSupportedPlacements.RLock()\n\tcalls = mock.calls.DeviceGetVgpuTypeSupportedPlacements\n\tmock.lockDeviceGetVgpuTypeSupportedPlacements.RUnlock()\n\treturn calls\n}\n\n// DeviceGetVgpuUtilization calls DeviceGetVgpuUtilizationFunc.\nfunc (mock *Interface) DeviceGetVgpuUtilization(device nvml.Device, v uint64) (nvml.ValueType, []nvml.VgpuInstanceUtilizationSample, nvml.Return) {\n\tif mock.DeviceGetVgpuUtilizationFunc == nil {\n\t\tpanic(\"Interface.DeviceGetVgpuUtilizationFunc: method is nil but Interface.DeviceGetVgpuUtilization was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t\tV      uint64\n\t}{\n\t\tDevice: device,\n\t\tV:      v,\n\t}\n\tmock.lockDeviceGetVgpuUtilization.Lock()\n\tmock.calls.DeviceGetVgpuUtilization = append(mock.calls.DeviceGetVgpuUtilization, callInfo)\n\tmock.lockDeviceGetVgpuUtilization.Unlock()\n\treturn mock.DeviceGetVgpuUtilizationFunc(device, v)\n}\n\n// DeviceGetVgpuUtilizationCalls gets all the calls that were made to DeviceGetVgpuUtilization.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetVgpuUtilizationCalls())\nfunc (mock *Interface) DeviceGetVgpuUtilizationCalls() []struct {\n\tDevice nvml.Device\n\tV      uint64\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t\tV      uint64\n\t}\n\tmock.lockDeviceGetVgpuUtilization.RLock()\n\tcalls = mock.calls.DeviceGetVgpuUtilization\n\tmock.lockDeviceGetVgpuUtilization.RUnlock()\n\treturn calls\n}\n\n// DeviceGetViolationStatus calls DeviceGetViolationStatusFunc.\nfunc (mock *Interface) DeviceGetViolationStatus(device nvml.Device, perfPolicyType nvml.PerfPolicyType) (nvml.ViolationTime, nvml.Return) {\n\tif mock.DeviceGetViolationStatusFunc == nil {\n\t\tpanic(\"Interface.DeviceGetViolationStatusFunc: method is nil but Interface.DeviceGetViolationStatus was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice         nvml.Device\n\t\tPerfPolicyType nvml.PerfPolicyType\n\t}{\n\t\tDevice:         device,\n\t\tPerfPolicyType: perfPolicyType,\n\t}\n\tmock.lockDeviceGetViolationStatus.Lock()\n\tmock.calls.DeviceGetViolationStatus = append(mock.calls.DeviceGetViolationStatus, callInfo)\n\tmock.lockDeviceGetViolationStatus.Unlock()\n\treturn mock.DeviceGetViolationStatusFunc(device, perfPolicyType)\n}\n\n// DeviceGetViolationStatusCalls gets all the calls that were made to DeviceGetViolationStatus.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetViolationStatusCalls())\nfunc (mock *Interface) DeviceGetViolationStatusCalls() []struct {\n\tDevice         nvml.Device\n\tPerfPolicyType nvml.PerfPolicyType\n} {\n\tvar calls []struct {\n\t\tDevice         nvml.Device\n\t\tPerfPolicyType nvml.PerfPolicyType\n\t}\n\tmock.lockDeviceGetViolationStatus.RLock()\n\tcalls = mock.calls.DeviceGetViolationStatus\n\tmock.lockDeviceGetViolationStatus.RUnlock()\n\treturn calls\n}\n\n// DeviceGetVirtualizationMode calls DeviceGetVirtualizationModeFunc.\nfunc (mock *Interface) DeviceGetVirtualizationMode(device nvml.Device) (nvml.GpuVirtualizationMode, nvml.Return) {\n\tif mock.DeviceGetVirtualizationModeFunc == nil {\n\t\tpanic(\"Interface.DeviceGetVirtualizationModeFunc: method is nil but Interface.DeviceGetVirtualizationMode was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceGetVirtualizationMode.Lock()\n\tmock.calls.DeviceGetVirtualizationMode = append(mock.calls.DeviceGetVirtualizationMode, callInfo)\n\tmock.lockDeviceGetVirtualizationMode.Unlock()\n\treturn mock.DeviceGetVirtualizationModeFunc(device)\n}\n\n// DeviceGetVirtualizationModeCalls gets all the calls that were made to DeviceGetVirtualizationMode.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceGetVirtualizationModeCalls())\nfunc (mock *Interface) DeviceGetVirtualizationModeCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceGetVirtualizationMode.RLock()\n\tcalls = mock.calls.DeviceGetVirtualizationMode\n\tmock.lockDeviceGetVirtualizationMode.RUnlock()\n\treturn calls\n}\n\n// DeviceIsMigDeviceHandle calls DeviceIsMigDeviceHandleFunc.\nfunc (mock *Interface) DeviceIsMigDeviceHandle(device nvml.Device) (bool, nvml.Return) {\n\tif mock.DeviceIsMigDeviceHandleFunc == nil {\n\t\tpanic(\"Interface.DeviceIsMigDeviceHandleFunc: method is nil but Interface.DeviceIsMigDeviceHandle was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceIsMigDeviceHandle.Lock()\n\tmock.calls.DeviceIsMigDeviceHandle = append(mock.calls.DeviceIsMigDeviceHandle, callInfo)\n\tmock.lockDeviceIsMigDeviceHandle.Unlock()\n\treturn mock.DeviceIsMigDeviceHandleFunc(device)\n}\n\n// DeviceIsMigDeviceHandleCalls gets all the calls that were made to DeviceIsMigDeviceHandle.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceIsMigDeviceHandleCalls())\nfunc (mock *Interface) DeviceIsMigDeviceHandleCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceIsMigDeviceHandle.RLock()\n\tcalls = mock.calls.DeviceIsMigDeviceHandle\n\tmock.lockDeviceIsMigDeviceHandle.RUnlock()\n\treturn calls\n}\n\n// DeviceModifyDrainState calls DeviceModifyDrainStateFunc.\nfunc (mock *Interface) DeviceModifyDrainState(pciInfo *nvml.PciInfo, enableState nvml.EnableState) nvml.Return {\n\tif mock.DeviceModifyDrainStateFunc == nil {\n\t\tpanic(\"Interface.DeviceModifyDrainStateFunc: method is nil but Interface.DeviceModifyDrainState was just called\")\n\t}\n\tcallInfo := struct {\n\t\tPciInfo     *nvml.PciInfo\n\t\tEnableState nvml.EnableState\n\t}{\n\t\tPciInfo:     pciInfo,\n\t\tEnableState: enableState,\n\t}\n\tmock.lockDeviceModifyDrainState.Lock()\n\tmock.calls.DeviceModifyDrainState = append(mock.calls.DeviceModifyDrainState, callInfo)\n\tmock.lockDeviceModifyDrainState.Unlock()\n\treturn mock.DeviceModifyDrainStateFunc(pciInfo, enableState)\n}\n\n// DeviceModifyDrainStateCalls gets all the calls that were made to DeviceModifyDrainState.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceModifyDrainStateCalls())\nfunc (mock *Interface) DeviceModifyDrainStateCalls() []struct {\n\tPciInfo     *nvml.PciInfo\n\tEnableState nvml.EnableState\n} {\n\tvar calls []struct {\n\t\tPciInfo     *nvml.PciInfo\n\t\tEnableState nvml.EnableState\n\t}\n\tmock.lockDeviceModifyDrainState.RLock()\n\tcalls = mock.calls.DeviceModifyDrainState\n\tmock.lockDeviceModifyDrainState.RUnlock()\n\treturn calls\n}\n\n// DeviceOnSameBoard calls DeviceOnSameBoardFunc.\nfunc (mock *Interface) DeviceOnSameBoard(device1 nvml.Device, device2 nvml.Device) (int, nvml.Return) {\n\tif mock.DeviceOnSameBoardFunc == nil {\n\t\tpanic(\"Interface.DeviceOnSameBoardFunc: method is nil but Interface.DeviceOnSameBoard was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice1 nvml.Device\n\t\tDevice2 nvml.Device\n\t}{\n\t\tDevice1: device1,\n\t\tDevice2: device2,\n\t}\n\tmock.lockDeviceOnSameBoard.Lock()\n\tmock.calls.DeviceOnSameBoard = append(mock.calls.DeviceOnSameBoard, callInfo)\n\tmock.lockDeviceOnSameBoard.Unlock()\n\treturn mock.DeviceOnSameBoardFunc(device1, device2)\n}\n\n// DeviceOnSameBoardCalls gets all the calls that were made to DeviceOnSameBoard.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceOnSameBoardCalls())\nfunc (mock *Interface) DeviceOnSameBoardCalls() []struct {\n\tDevice1 nvml.Device\n\tDevice2 nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice1 nvml.Device\n\t\tDevice2 nvml.Device\n\t}\n\tmock.lockDeviceOnSameBoard.RLock()\n\tcalls = mock.calls.DeviceOnSameBoard\n\tmock.lockDeviceOnSameBoard.RUnlock()\n\treturn calls\n}\n\n// DevicePowerSmoothingActivatePresetProfile calls DevicePowerSmoothingActivatePresetProfileFunc.\nfunc (mock *Interface) DevicePowerSmoothingActivatePresetProfile(device nvml.Device, powerSmoothingProfile *nvml.PowerSmoothingProfile) nvml.Return {\n\tif mock.DevicePowerSmoothingActivatePresetProfileFunc == nil {\n\t\tpanic(\"Interface.DevicePowerSmoothingActivatePresetProfileFunc: method is nil but Interface.DevicePowerSmoothingActivatePresetProfile was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice                nvml.Device\n\t\tPowerSmoothingProfile *nvml.PowerSmoothingProfile\n\t}{\n\t\tDevice:                device,\n\t\tPowerSmoothingProfile: powerSmoothingProfile,\n\t}\n\tmock.lockDevicePowerSmoothingActivatePresetProfile.Lock()\n\tmock.calls.DevicePowerSmoothingActivatePresetProfile = append(mock.calls.DevicePowerSmoothingActivatePresetProfile, callInfo)\n\tmock.lockDevicePowerSmoothingActivatePresetProfile.Unlock()\n\treturn mock.DevicePowerSmoothingActivatePresetProfileFunc(device, powerSmoothingProfile)\n}\n\n// DevicePowerSmoothingActivatePresetProfileCalls gets all the calls that were made to DevicePowerSmoothingActivatePresetProfile.\n// Check the length with:\n//\n//\tlen(mockedInterface.DevicePowerSmoothingActivatePresetProfileCalls())\nfunc (mock *Interface) DevicePowerSmoothingActivatePresetProfileCalls() []struct {\n\tDevice                nvml.Device\n\tPowerSmoothingProfile *nvml.PowerSmoothingProfile\n} {\n\tvar calls []struct {\n\t\tDevice                nvml.Device\n\t\tPowerSmoothingProfile *nvml.PowerSmoothingProfile\n\t}\n\tmock.lockDevicePowerSmoothingActivatePresetProfile.RLock()\n\tcalls = mock.calls.DevicePowerSmoothingActivatePresetProfile\n\tmock.lockDevicePowerSmoothingActivatePresetProfile.RUnlock()\n\treturn calls\n}\n\n// DevicePowerSmoothingSetState calls DevicePowerSmoothingSetStateFunc.\nfunc (mock *Interface) DevicePowerSmoothingSetState(device nvml.Device, powerSmoothingState *nvml.PowerSmoothingState) nvml.Return {\n\tif mock.DevicePowerSmoothingSetStateFunc == nil {\n\t\tpanic(\"Interface.DevicePowerSmoothingSetStateFunc: method is nil but Interface.DevicePowerSmoothingSetState was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice              nvml.Device\n\t\tPowerSmoothingState *nvml.PowerSmoothingState\n\t}{\n\t\tDevice:              device,\n\t\tPowerSmoothingState: powerSmoothingState,\n\t}\n\tmock.lockDevicePowerSmoothingSetState.Lock()\n\tmock.calls.DevicePowerSmoothingSetState = append(mock.calls.DevicePowerSmoothingSetState, callInfo)\n\tmock.lockDevicePowerSmoothingSetState.Unlock()\n\treturn mock.DevicePowerSmoothingSetStateFunc(device, powerSmoothingState)\n}\n\n// DevicePowerSmoothingSetStateCalls gets all the calls that were made to DevicePowerSmoothingSetState.\n// Check the length with:\n//\n//\tlen(mockedInterface.DevicePowerSmoothingSetStateCalls())\nfunc (mock *Interface) DevicePowerSmoothingSetStateCalls() []struct {\n\tDevice              nvml.Device\n\tPowerSmoothingState *nvml.PowerSmoothingState\n} {\n\tvar calls []struct {\n\t\tDevice              nvml.Device\n\t\tPowerSmoothingState *nvml.PowerSmoothingState\n\t}\n\tmock.lockDevicePowerSmoothingSetState.RLock()\n\tcalls = mock.calls.DevicePowerSmoothingSetState\n\tmock.lockDevicePowerSmoothingSetState.RUnlock()\n\treturn calls\n}\n\n// DevicePowerSmoothingUpdatePresetProfileParam calls DevicePowerSmoothingUpdatePresetProfileParamFunc.\nfunc (mock *Interface) DevicePowerSmoothingUpdatePresetProfileParam(device nvml.Device, powerSmoothingProfile *nvml.PowerSmoothingProfile) nvml.Return {\n\tif mock.DevicePowerSmoothingUpdatePresetProfileParamFunc == nil {\n\t\tpanic(\"Interface.DevicePowerSmoothingUpdatePresetProfileParamFunc: method is nil but Interface.DevicePowerSmoothingUpdatePresetProfileParam was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice                nvml.Device\n\t\tPowerSmoothingProfile *nvml.PowerSmoothingProfile\n\t}{\n\t\tDevice:                device,\n\t\tPowerSmoothingProfile: powerSmoothingProfile,\n\t}\n\tmock.lockDevicePowerSmoothingUpdatePresetProfileParam.Lock()\n\tmock.calls.DevicePowerSmoothingUpdatePresetProfileParam = append(mock.calls.DevicePowerSmoothingUpdatePresetProfileParam, callInfo)\n\tmock.lockDevicePowerSmoothingUpdatePresetProfileParam.Unlock()\n\treturn mock.DevicePowerSmoothingUpdatePresetProfileParamFunc(device, powerSmoothingProfile)\n}\n\n// DevicePowerSmoothingUpdatePresetProfileParamCalls gets all the calls that were made to DevicePowerSmoothingUpdatePresetProfileParam.\n// Check the length with:\n//\n//\tlen(mockedInterface.DevicePowerSmoothingUpdatePresetProfileParamCalls())\nfunc (mock *Interface) DevicePowerSmoothingUpdatePresetProfileParamCalls() []struct {\n\tDevice                nvml.Device\n\tPowerSmoothingProfile *nvml.PowerSmoothingProfile\n} {\n\tvar calls []struct {\n\t\tDevice                nvml.Device\n\t\tPowerSmoothingProfile *nvml.PowerSmoothingProfile\n\t}\n\tmock.lockDevicePowerSmoothingUpdatePresetProfileParam.RLock()\n\tcalls = mock.calls.DevicePowerSmoothingUpdatePresetProfileParam\n\tmock.lockDevicePowerSmoothingUpdatePresetProfileParam.RUnlock()\n\treturn calls\n}\n\n// DeviceQueryDrainState calls DeviceQueryDrainStateFunc.\nfunc (mock *Interface) DeviceQueryDrainState(pciInfo *nvml.PciInfo) (nvml.EnableState, nvml.Return) {\n\tif mock.DeviceQueryDrainStateFunc == nil {\n\t\tpanic(\"Interface.DeviceQueryDrainStateFunc: method is nil but Interface.DeviceQueryDrainState was just called\")\n\t}\n\tcallInfo := struct {\n\t\tPciInfo *nvml.PciInfo\n\t}{\n\t\tPciInfo: pciInfo,\n\t}\n\tmock.lockDeviceQueryDrainState.Lock()\n\tmock.calls.DeviceQueryDrainState = append(mock.calls.DeviceQueryDrainState, callInfo)\n\tmock.lockDeviceQueryDrainState.Unlock()\n\treturn mock.DeviceQueryDrainStateFunc(pciInfo)\n}\n\n// DeviceQueryDrainStateCalls gets all the calls that were made to DeviceQueryDrainState.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceQueryDrainStateCalls())\nfunc (mock *Interface) DeviceQueryDrainStateCalls() []struct {\n\tPciInfo *nvml.PciInfo\n} {\n\tvar calls []struct {\n\t\tPciInfo *nvml.PciInfo\n\t}\n\tmock.lockDeviceQueryDrainState.RLock()\n\tcalls = mock.calls.DeviceQueryDrainState\n\tmock.lockDeviceQueryDrainState.RUnlock()\n\treturn calls\n}\n\n// DeviceReadWritePRM_v1 calls DeviceReadWritePRM_v1Func.\nfunc (mock *Interface) DeviceReadWritePRM_v1(device nvml.Device, pRMTLV_v1 *nvml.PRMTLV_v1) nvml.Return {\n\tif mock.DeviceReadWritePRM_v1Func == nil {\n\t\tpanic(\"Interface.DeviceReadWritePRM_v1Func: method is nil but Interface.DeviceReadWritePRM_v1 was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice    nvml.Device\n\t\tPRMTLV_v1 *nvml.PRMTLV_v1\n\t}{\n\t\tDevice:    device,\n\t\tPRMTLV_v1: pRMTLV_v1,\n\t}\n\tmock.lockDeviceReadWritePRM_v1.Lock()\n\tmock.calls.DeviceReadWritePRM_v1 = append(mock.calls.DeviceReadWritePRM_v1, callInfo)\n\tmock.lockDeviceReadWritePRM_v1.Unlock()\n\treturn mock.DeviceReadWritePRM_v1Func(device, pRMTLV_v1)\n}\n\n// DeviceReadWritePRM_v1Calls gets all the calls that were made to DeviceReadWritePRM_v1.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceReadWritePRM_v1Calls())\nfunc (mock *Interface) DeviceReadWritePRM_v1Calls() []struct {\n\tDevice    nvml.Device\n\tPRMTLV_v1 *nvml.PRMTLV_v1\n} {\n\tvar calls []struct {\n\t\tDevice    nvml.Device\n\t\tPRMTLV_v1 *nvml.PRMTLV_v1\n\t}\n\tmock.lockDeviceReadWritePRM_v1.RLock()\n\tcalls = mock.calls.DeviceReadWritePRM_v1\n\tmock.lockDeviceReadWritePRM_v1.RUnlock()\n\treturn calls\n}\n\n// DeviceRegisterEvents calls DeviceRegisterEventsFunc.\nfunc (mock *Interface) DeviceRegisterEvents(device nvml.Device, v uint64, eventSet nvml.EventSet) nvml.Return {\n\tif mock.DeviceRegisterEventsFunc == nil {\n\t\tpanic(\"Interface.DeviceRegisterEventsFunc: method is nil but Interface.DeviceRegisterEvents was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice   nvml.Device\n\t\tV        uint64\n\t\tEventSet nvml.EventSet\n\t}{\n\t\tDevice:   device,\n\t\tV:        v,\n\t\tEventSet: eventSet,\n\t}\n\tmock.lockDeviceRegisterEvents.Lock()\n\tmock.calls.DeviceRegisterEvents = append(mock.calls.DeviceRegisterEvents, callInfo)\n\tmock.lockDeviceRegisterEvents.Unlock()\n\treturn mock.DeviceRegisterEventsFunc(device, v, eventSet)\n}\n\n// DeviceRegisterEventsCalls gets all the calls that were made to DeviceRegisterEvents.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceRegisterEventsCalls())\nfunc (mock *Interface) DeviceRegisterEventsCalls() []struct {\n\tDevice   nvml.Device\n\tV        uint64\n\tEventSet nvml.EventSet\n} {\n\tvar calls []struct {\n\t\tDevice   nvml.Device\n\t\tV        uint64\n\t\tEventSet nvml.EventSet\n\t}\n\tmock.lockDeviceRegisterEvents.RLock()\n\tcalls = mock.calls.DeviceRegisterEvents\n\tmock.lockDeviceRegisterEvents.RUnlock()\n\treturn calls\n}\n\n// DeviceRemoveGpu calls DeviceRemoveGpuFunc.\nfunc (mock *Interface) DeviceRemoveGpu(pciInfo *nvml.PciInfo) nvml.Return {\n\tif mock.DeviceRemoveGpuFunc == nil {\n\t\tpanic(\"Interface.DeviceRemoveGpuFunc: method is nil but Interface.DeviceRemoveGpu was just called\")\n\t}\n\tcallInfo := struct {\n\t\tPciInfo *nvml.PciInfo\n\t}{\n\t\tPciInfo: pciInfo,\n\t}\n\tmock.lockDeviceRemoveGpu.Lock()\n\tmock.calls.DeviceRemoveGpu = append(mock.calls.DeviceRemoveGpu, callInfo)\n\tmock.lockDeviceRemoveGpu.Unlock()\n\treturn mock.DeviceRemoveGpuFunc(pciInfo)\n}\n\n// DeviceRemoveGpuCalls gets all the calls that were made to DeviceRemoveGpu.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceRemoveGpuCalls())\nfunc (mock *Interface) DeviceRemoveGpuCalls() []struct {\n\tPciInfo *nvml.PciInfo\n} {\n\tvar calls []struct {\n\t\tPciInfo *nvml.PciInfo\n\t}\n\tmock.lockDeviceRemoveGpu.RLock()\n\tcalls = mock.calls.DeviceRemoveGpu\n\tmock.lockDeviceRemoveGpu.RUnlock()\n\treturn calls\n}\n\n// DeviceRemoveGpu_v2 calls DeviceRemoveGpu_v2Func.\nfunc (mock *Interface) DeviceRemoveGpu_v2(pciInfo *nvml.PciInfo, detachGpuState nvml.DetachGpuState, pcieLinkState nvml.PcieLinkState) nvml.Return {\n\tif mock.DeviceRemoveGpu_v2Func == nil {\n\t\tpanic(\"Interface.DeviceRemoveGpu_v2Func: method is nil but Interface.DeviceRemoveGpu_v2 was just called\")\n\t}\n\tcallInfo := struct {\n\t\tPciInfo        *nvml.PciInfo\n\t\tDetachGpuState nvml.DetachGpuState\n\t\tPcieLinkState  nvml.PcieLinkState\n\t}{\n\t\tPciInfo:        pciInfo,\n\t\tDetachGpuState: detachGpuState,\n\t\tPcieLinkState:  pcieLinkState,\n\t}\n\tmock.lockDeviceRemoveGpu_v2.Lock()\n\tmock.calls.DeviceRemoveGpu_v2 = append(mock.calls.DeviceRemoveGpu_v2, callInfo)\n\tmock.lockDeviceRemoveGpu_v2.Unlock()\n\treturn mock.DeviceRemoveGpu_v2Func(pciInfo, detachGpuState, pcieLinkState)\n}\n\n// DeviceRemoveGpu_v2Calls gets all the calls that were made to DeviceRemoveGpu_v2.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceRemoveGpu_v2Calls())\nfunc (mock *Interface) DeviceRemoveGpu_v2Calls() []struct {\n\tPciInfo        *nvml.PciInfo\n\tDetachGpuState nvml.DetachGpuState\n\tPcieLinkState  nvml.PcieLinkState\n} {\n\tvar calls []struct {\n\t\tPciInfo        *nvml.PciInfo\n\t\tDetachGpuState nvml.DetachGpuState\n\t\tPcieLinkState  nvml.PcieLinkState\n\t}\n\tmock.lockDeviceRemoveGpu_v2.RLock()\n\tcalls = mock.calls.DeviceRemoveGpu_v2\n\tmock.lockDeviceRemoveGpu_v2.RUnlock()\n\treturn calls\n}\n\n// DeviceResetApplicationsClocks calls DeviceResetApplicationsClocksFunc.\nfunc (mock *Interface) DeviceResetApplicationsClocks(device nvml.Device) nvml.Return {\n\tif mock.DeviceResetApplicationsClocksFunc == nil {\n\t\tpanic(\"Interface.DeviceResetApplicationsClocksFunc: method is nil but Interface.DeviceResetApplicationsClocks was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceResetApplicationsClocks.Lock()\n\tmock.calls.DeviceResetApplicationsClocks = append(mock.calls.DeviceResetApplicationsClocks, callInfo)\n\tmock.lockDeviceResetApplicationsClocks.Unlock()\n\treturn mock.DeviceResetApplicationsClocksFunc(device)\n}\n\n// DeviceResetApplicationsClocksCalls gets all the calls that were made to DeviceResetApplicationsClocks.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceResetApplicationsClocksCalls())\nfunc (mock *Interface) DeviceResetApplicationsClocksCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceResetApplicationsClocks.RLock()\n\tcalls = mock.calls.DeviceResetApplicationsClocks\n\tmock.lockDeviceResetApplicationsClocks.RUnlock()\n\treturn calls\n}\n\n// DeviceResetGpuLockedClocks calls DeviceResetGpuLockedClocksFunc.\nfunc (mock *Interface) DeviceResetGpuLockedClocks(device nvml.Device) nvml.Return {\n\tif mock.DeviceResetGpuLockedClocksFunc == nil {\n\t\tpanic(\"Interface.DeviceResetGpuLockedClocksFunc: method is nil but Interface.DeviceResetGpuLockedClocks was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceResetGpuLockedClocks.Lock()\n\tmock.calls.DeviceResetGpuLockedClocks = append(mock.calls.DeviceResetGpuLockedClocks, callInfo)\n\tmock.lockDeviceResetGpuLockedClocks.Unlock()\n\treturn mock.DeviceResetGpuLockedClocksFunc(device)\n}\n\n// DeviceResetGpuLockedClocksCalls gets all the calls that were made to DeviceResetGpuLockedClocks.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceResetGpuLockedClocksCalls())\nfunc (mock *Interface) DeviceResetGpuLockedClocksCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceResetGpuLockedClocks.RLock()\n\tcalls = mock.calls.DeviceResetGpuLockedClocks\n\tmock.lockDeviceResetGpuLockedClocks.RUnlock()\n\treturn calls\n}\n\n// DeviceResetMemoryLockedClocks calls DeviceResetMemoryLockedClocksFunc.\nfunc (mock *Interface) DeviceResetMemoryLockedClocks(device nvml.Device) nvml.Return {\n\tif mock.DeviceResetMemoryLockedClocksFunc == nil {\n\t\tpanic(\"Interface.DeviceResetMemoryLockedClocksFunc: method is nil but Interface.DeviceResetMemoryLockedClocks was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceResetMemoryLockedClocks.Lock()\n\tmock.calls.DeviceResetMemoryLockedClocks = append(mock.calls.DeviceResetMemoryLockedClocks, callInfo)\n\tmock.lockDeviceResetMemoryLockedClocks.Unlock()\n\treturn mock.DeviceResetMemoryLockedClocksFunc(device)\n}\n\n// DeviceResetMemoryLockedClocksCalls gets all the calls that were made to DeviceResetMemoryLockedClocks.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceResetMemoryLockedClocksCalls())\nfunc (mock *Interface) DeviceResetMemoryLockedClocksCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceResetMemoryLockedClocks.RLock()\n\tcalls = mock.calls.DeviceResetMemoryLockedClocks\n\tmock.lockDeviceResetMemoryLockedClocks.RUnlock()\n\treturn calls\n}\n\n// DeviceResetNvLinkErrorCounters calls DeviceResetNvLinkErrorCountersFunc.\nfunc (mock *Interface) DeviceResetNvLinkErrorCounters(device nvml.Device, n int) nvml.Return {\n\tif mock.DeviceResetNvLinkErrorCountersFunc == nil {\n\t\tpanic(\"Interface.DeviceResetNvLinkErrorCountersFunc: method is nil but Interface.DeviceResetNvLinkErrorCounters was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t\tN      int\n\t}{\n\t\tDevice: device,\n\t\tN:      n,\n\t}\n\tmock.lockDeviceResetNvLinkErrorCounters.Lock()\n\tmock.calls.DeviceResetNvLinkErrorCounters = append(mock.calls.DeviceResetNvLinkErrorCounters, callInfo)\n\tmock.lockDeviceResetNvLinkErrorCounters.Unlock()\n\treturn mock.DeviceResetNvLinkErrorCountersFunc(device, n)\n}\n\n// DeviceResetNvLinkErrorCountersCalls gets all the calls that were made to DeviceResetNvLinkErrorCounters.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceResetNvLinkErrorCountersCalls())\nfunc (mock *Interface) DeviceResetNvLinkErrorCountersCalls() []struct {\n\tDevice nvml.Device\n\tN      int\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t\tN      int\n\t}\n\tmock.lockDeviceResetNvLinkErrorCounters.RLock()\n\tcalls = mock.calls.DeviceResetNvLinkErrorCounters\n\tmock.lockDeviceResetNvLinkErrorCounters.RUnlock()\n\treturn calls\n}\n\n// DeviceResetNvLinkUtilizationCounter calls DeviceResetNvLinkUtilizationCounterFunc.\nfunc (mock *Interface) DeviceResetNvLinkUtilizationCounter(device nvml.Device, n1 int, n2 int) nvml.Return {\n\tif mock.DeviceResetNvLinkUtilizationCounterFunc == nil {\n\t\tpanic(\"Interface.DeviceResetNvLinkUtilizationCounterFunc: method is nil but Interface.DeviceResetNvLinkUtilizationCounter was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t\tN1     int\n\t\tN2     int\n\t}{\n\t\tDevice: device,\n\t\tN1:     n1,\n\t\tN2:     n2,\n\t}\n\tmock.lockDeviceResetNvLinkUtilizationCounter.Lock()\n\tmock.calls.DeviceResetNvLinkUtilizationCounter = append(mock.calls.DeviceResetNvLinkUtilizationCounter, callInfo)\n\tmock.lockDeviceResetNvLinkUtilizationCounter.Unlock()\n\treturn mock.DeviceResetNvLinkUtilizationCounterFunc(device, n1, n2)\n}\n\n// DeviceResetNvLinkUtilizationCounterCalls gets all the calls that were made to DeviceResetNvLinkUtilizationCounter.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceResetNvLinkUtilizationCounterCalls())\nfunc (mock *Interface) DeviceResetNvLinkUtilizationCounterCalls() []struct {\n\tDevice nvml.Device\n\tN1     int\n\tN2     int\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t\tN1     int\n\t\tN2     int\n\t}\n\tmock.lockDeviceResetNvLinkUtilizationCounter.RLock()\n\tcalls = mock.calls.DeviceResetNvLinkUtilizationCounter\n\tmock.lockDeviceResetNvLinkUtilizationCounter.RUnlock()\n\treturn calls\n}\n\n// DeviceSetAPIRestriction calls DeviceSetAPIRestrictionFunc.\nfunc (mock *Interface) DeviceSetAPIRestriction(device nvml.Device, restrictedAPI nvml.RestrictedAPI, enableState nvml.EnableState) nvml.Return {\n\tif mock.DeviceSetAPIRestrictionFunc == nil {\n\t\tpanic(\"Interface.DeviceSetAPIRestrictionFunc: method is nil but Interface.DeviceSetAPIRestriction was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice        nvml.Device\n\t\tRestrictedAPI nvml.RestrictedAPI\n\t\tEnableState   nvml.EnableState\n\t}{\n\t\tDevice:        device,\n\t\tRestrictedAPI: restrictedAPI,\n\t\tEnableState:   enableState,\n\t}\n\tmock.lockDeviceSetAPIRestriction.Lock()\n\tmock.calls.DeviceSetAPIRestriction = append(mock.calls.DeviceSetAPIRestriction, callInfo)\n\tmock.lockDeviceSetAPIRestriction.Unlock()\n\treturn mock.DeviceSetAPIRestrictionFunc(device, restrictedAPI, enableState)\n}\n\n// DeviceSetAPIRestrictionCalls gets all the calls that were made to DeviceSetAPIRestriction.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceSetAPIRestrictionCalls())\nfunc (mock *Interface) DeviceSetAPIRestrictionCalls() []struct {\n\tDevice        nvml.Device\n\tRestrictedAPI nvml.RestrictedAPI\n\tEnableState   nvml.EnableState\n} {\n\tvar calls []struct {\n\t\tDevice        nvml.Device\n\t\tRestrictedAPI nvml.RestrictedAPI\n\t\tEnableState   nvml.EnableState\n\t}\n\tmock.lockDeviceSetAPIRestriction.RLock()\n\tcalls = mock.calls.DeviceSetAPIRestriction\n\tmock.lockDeviceSetAPIRestriction.RUnlock()\n\treturn calls\n}\n\n// DeviceSetAccountingMode calls DeviceSetAccountingModeFunc.\nfunc (mock *Interface) DeviceSetAccountingMode(device nvml.Device, enableState nvml.EnableState) nvml.Return {\n\tif mock.DeviceSetAccountingModeFunc == nil {\n\t\tpanic(\"Interface.DeviceSetAccountingModeFunc: method is nil but Interface.DeviceSetAccountingMode was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice      nvml.Device\n\t\tEnableState nvml.EnableState\n\t}{\n\t\tDevice:      device,\n\t\tEnableState: enableState,\n\t}\n\tmock.lockDeviceSetAccountingMode.Lock()\n\tmock.calls.DeviceSetAccountingMode = append(mock.calls.DeviceSetAccountingMode, callInfo)\n\tmock.lockDeviceSetAccountingMode.Unlock()\n\treturn mock.DeviceSetAccountingModeFunc(device, enableState)\n}\n\n// DeviceSetAccountingModeCalls gets all the calls that were made to DeviceSetAccountingMode.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceSetAccountingModeCalls())\nfunc (mock *Interface) DeviceSetAccountingModeCalls() []struct {\n\tDevice      nvml.Device\n\tEnableState nvml.EnableState\n} {\n\tvar calls []struct {\n\t\tDevice      nvml.Device\n\t\tEnableState nvml.EnableState\n\t}\n\tmock.lockDeviceSetAccountingMode.RLock()\n\tcalls = mock.calls.DeviceSetAccountingMode\n\tmock.lockDeviceSetAccountingMode.RUnlock()\n\treturn calls\n}\n\n// DeviceSetApplicationsClocks calls DeviceSetApplicationsClocksFunc.\nfunc (mock *Interface) DeviceSetApplicationsClocks(device nvml.Device, v1 uint32, v2 uint32) nvml.Return {\n\tif mock.DeviceSetApplicationsClocksFunc == nil {\n\t\tpanic(\"Interface.DeviceSetApplicationsClocksFunc: method is nil but Interface.DeviceSetApplicationsClocks was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t\tV1     uint32\n\t\tV2     uint32\n\t}{\n\t\tDevice: device,\n\t\tV1:     v1,\n\t\tV2:     v2,\n\t}\n\tmock.lockDeviceSetApplicationsClocks.Lock()\n\tmock.calls.DeviceSetApplicationsClocks = append(mock.calls.DeviceSetApplicationsClocks, callInfo)\n\tmock.lockDeviceSetApplicationsClocks.Unlock()\n\treturn mock.DeviceSetApplicationsClocksFunc(device, v1, v2)\n}\n\n// DeviceSetApplicationsClocksCalls gets all the calls that were made to DeviceSetApplicationsClocks.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceSetApplicationsClocksCalls())\nfunc (mock *Interface) DeviceSetApplicationsClocksCalls() []struct {\n\tDevice nvml.Device\n\tV1     uint32\n\tV2     uint32\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t\tV1     uint32\n\t\tV2     uint32\n\t}\n\tmock.lockDeviceSetApplicationsClocks.RLock()\n\tcalls = mock.calls.DeviceSetApplicationsClocks\n\tmock.lockDeviceSetApplicationsClocks.RUnlock()\n\treturn calls\n}\n\n// DeviceSetAutoBoostedClocksEnabled calls DeviceSetAutoBoostedClocksEnabledFunc.\nfunc (mock *Interface) DeviceSetAutoBoostedClocksEnabled(device nvml.Device, enableState nvml.EnableState) nvml.Return {\n\tif mock.DeviceSetAutoBoostedClocksEnabledFunc == nil {\n\t\tpanic(\"Interface.DeviceSetAutoBoostedClocksEnabledFunc: method is nil but Interface.DeviceSetAutoBoostedClocksEnabled was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice      nvml.Device\n\t\tEnableState nvml.EnableState\n\t}{\n\t\tDevice:      device,\n\t\tEnableState: enableState,\n\t}\n\tmock.lockDeviceSetAutoBoostedClocksEnabled.Lock()\n\tmock.calls.DeviceSetAutoBoostedClocksEnabled = append(mock.calls.DeviceSetAutoBoostedClocksEnabled, callInfo)\n\tmock.lockDeviceSetAutoBoostedClocksEnabled.Unlock()\n\treturn mock.DeviceSetAutoBoostedClocksEnabledFunc(device, enableState)\n}\n\n// DeviceSetAutoBoostedClocksEnabledCalls gets all the calls that were made to DeviceSetAutoBoostedClocksEnabled.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceSetAutoBoostedClocksEnabledCalls())\nfunc (mock *Interface) DeviceSetAutoBoostedClocksEnabledCalls() []struct {\n\tDevice      nvml.Device\n\tEnableState nvml.EnableState\n} {\n\tvar calls []struct {\n\t\tDevice      nvml.Device\n\t\tEnableState nvml.EnableState\n\t}\n\tmock.lockDeviceSetAutoBoostedClocksEnabled.RLock()\n\tcalls = mock.calls.DeviceSetAutoBoostedClocksEnabled\n\tmock.lockDeviceSetAutoBoostedClocksEnabled.RUnlock()\n\treturn calls\n}\n\n// DeviceSetClockOffsets calls DeviceSetClockOffsetsFunc.\nfunc (mock *Interface) DeviceSetClockOffsets(device nvml.Device, clockOffset nvml.ClockOffset) nvml.Return {\n\tif mock.DeviceSetClockOffsetsFunc == nil {\n\t\tpanic(\"Interface.DeviceSetClockOffsetsFunc: method is nil but Interface.DeviceSetClockOffsets was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice      nvml.Device\n\t\tClockOffset nvml.ClockOffset\n\t}{\n\t\tDevice:      device,\n\t\tClockOffset: clockOffset,\n\t}\n\tmock.lockDeviceSetClockOffsets.Lock()\n\tmock.calls.DeviceSetClockOffsets = append(mock.calls.DeviceSetClockOffsets, callInfo)\n\tmock.lockDeviceSetClockOffsets.Unlock()\n\treturn mock.DeviceSetClockOffsetsFunc(device, clockOffset)\n}\n\n// DeviceSetClockOffsetsCalls gets all the calls that were made to DeviceSetClockOffsets.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceSetClockOffsetsCalls())\nfunc (mock *Interface) DeviceSetClockOffsetsCalls() []struct {\n\tDevice      nvml.Device\n\tClockOffset nvml.ClockOffset\n} {\n\tvar calls []struct {\n\t\tDevice      nvml.Device\n\t\tClockOffset nvml.ClockOffset\n\t}\n\tmock.lockDeviceSetClockOffsets.RLock()\n\tcalls = mock.calls.DeviceSetClockOffsets\n\tmock.lockDeviceSetClockOffsets.RUnlock()\n\treturn calls\n}\n\n// DeviceSetComputeMode calls DeviceSetComputeModeFunc.\nfunc (mock *Interface) DeviceSetComputeMode(device nvml.Device, computeMode nvml.ComputeMode) nvml.Return {\n\tif mock.DeviceSetComputeModeFunc == nil {\n\t\tpanic(\"Interface.DeviceSetComputeModeFunc: method is nil but Interface.DeviceSetComputeMode was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice      nvml.Device\n\t\tComputeMode nvml.ComputeMode\n\t}{\n\t\tDevice:      device,\n\t\tComputeMode: computeMode,\n\t}\n\tmock.lockDeviceSetComputeMode.Lock()\n\tmock.calls.DeviceSetComputeMode = append(mock.calls.DeviceSetComputeMode, callInfo)\n\tmock.lockDeviceSetComputeMode.Unlock()\n\treturn mock.DeviceSetComputeModeFunc(device, computeMode)\n}\n\n// DeviceSetComputeModeCalls gets all the calls that were made to DeviceSetComputeMode.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceSetComputeModeCalls())\nfunc (mock *Interface) DeviceSetComputeModeCalls() []struct {\n\tDevice      nvml.Device\n\tComputeMode nvml.ComputeMode\n} {\n\tvar calls []struct {\n\t\tDevice      nvml.Device\n\t\tComputeMode nvml.ComputeMode\n\t}\n\tmock.lockDeviceSetComputeMode.RLock()\n\tcalls = mock.calls.DeviceSetComputeMode\n\tmock.lockDeviceSetComputeMode.RUnlock()\n\treturn calls\n}\n\n// DeviceSetConfComputeUnprotectedMemSize calls DeviceSetConfComputeUnprotectedMemSizeFunc.\nfunc (mock *Interface) DeviceSetConfComputeUnprotectedMemSize(device nvml.Device, v uint64) nvml.Return {\n\tif mock.DeviceSetConfComputeUnprotectedMemSizeFunc == nil {\n\t\tpanic(\"Interface.DeviceSetConfComputeUnprotectedMemSizeFunc: method is nil but Interface.DeviceSetConfComputeUnprotectedMemSize was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t\tV      uint64\n\t}{\n\t\tDevice: device,\n\t\tV:      v,\n\t}\n\tmock.lockDeviceSetConfComputeUnprotectedMemSize.Lock()\n\tmock.calls.DeviceSetConfComputeUnprotectedMemSize = append(mock.calls.DeviceSetConfComputeUnprotectedMemSize, callInfo)\n\tmock.lockDeviceSetConfComputeUnprotectedMemSize.Unlock()\n\treturn mock.DeviceSetConfComputeUnprotectedMemSizeFunc(device, v)\n}\n\n// DeviceSetConfComputeUnprotectedMemSizeCalls gets all the calls that were made to DeviceSetConfComputeUnprotectedMemSize.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceSetConfComputeUnprotectedMemSizeCalls())\nfunc (mock *Interface) DeviceSetConfComputeUnprotectedMemSizeCalls() []struct {\n\tDevice nvml.Device\n\tV      uint64\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t\tV      uint64\n\t}\n\tmock.lockDeviceSetConfComputeUnprotectedMemSize.RLock()\n\tcalls = mock.calls.DeviceSetConfComputeUnprotectedMemSize\n\tmock.lockDeviceSetConfComputeUnprotectedMemSize.RUnlock()\n\treturn calls\n}\n\n// DeviceSetCpuAffinity calls DeviceSetCpuAffinityFunc.\nfunc (mock *Interface) DeviceSetCpuAffinity(device nvml.Device) nvml.Return {\n\tif mock.DeviceSetCpuAffinityFunc == nil {\n\t\tpanic(\"Interface.DeviceSetCpuAffinityFunc: method is nil but Interface.DeviceSetCpuAffinity was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceSetCpuAffinity.Lock()\n\tmock.calls.DeviceSetCpuAffinity = append(mock.calls.DeviceSetCpuAffinity, callInfo)\n\tmock.lockDeviceSetCpuAffinity.Unlock()\n\treturn mock.DeviceSetCpuAffinityFunc(device)\n}\n\n// DeviceSetCpuAffinityCalls gets all the calls that were made to DeviceSetCpuAffinity.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceSetCpuAffinityCalls())\nfunc (mock *Interface) DeviceSetCpuAffinityCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceSetCpuAffinity.RLock()\n\tcalls = mock.calls.DeviceSetCpuAffinity\n\tmock.lockDeviceSetCpuAffinity.RUnlock()\n\treturn calls\n}\n\n// DeviceSetDefaultAutoBoostedClocksEnabled calls DeviceSetDefaultAutoBoostedClocksEnabledFunc.\nfunc (mock *Interface) DeviceSetDefaultAutoBoostedClocksEnabled(device nvml.Device, enableState nvml.EnableState, v uint32) nvml.Return {\n\tif mock.DeviceSetDefaultAutoBoostedClocksEnabledFunc == nil {\n\t\tpanic(\"Interface.DeviceSetDefaultAutoBoostedClocksEnabledFunc: method is nil but Interface.DeviceSetDefaultAutoBoostedClocksEnabled was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice      nvml.Device\n\t\tEnableState nvml.EnableState\n\t\tV           uint32\n\t}{\n\t\tDevice:      device,\n\t\tEnableState: enableState,\n\t\tV:           v,\n\t}\n\tmock.lockDeviceSetDefaultAutoBoostedClocksEnabled.Lock()\n\tmock.calls.DeviceSetDefaultAutoBoostedClocksEnabled = append(mock.calls.DeviceSetDefaultAutoBoostedClocksEnabled, callInfo)\n\tmock.lockDeviceSetDefaultAutoBoostedClocksEnabled.Unlock()\n\treturn mock.DeviceSetDefaultAutoBoostedClocksEnabledFunc(device, enableState, v)\n}\n\n// DeviceSetDefaultAutoBoostedClocksEnabledCalls gets all the calls that were made to DeviceSetDefaultAutoBoostedClocksEnabled.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceSetDefaultAutoBoostedClocksEnabledCalls())\nfunc (mock *Interface) DeviceSetDefaultAutoBoostedClocksEnabledCalls() []struct {\n\tDevice      nvml.Device\n\tEnableState nvml.EnableState\n\tV           uint32\n} {\n\tvar calls []struct {\n\t\tDevice      nvml.Device\n\t\tEnableState nvml.EnableState\n\t\tV           uint32\n\t}\n\tmock.lockDeviceSetDefaultAutoBoostedClocksEnabled.RLock()\n\tcalls = mock.calls.DeviceSetDefaultAutoBoostedClocksEnabled\n\tmock.lockDeviceSetDefaultAutoBoostedClocksEnabled.RUnlock()\n\treturn calls\n}\n\n// DeviceSetDefaultFanSpeed_v2 calls DeviceSetDefaultFanSpeed_v2Func.\nfunc (mock *Interface) DeviceSetDefaultFanSpeed_v2(device nvml.Device, n int) nvml.Return {\n\tif mock.DeviceSetDefaultFanSpeed_v2Func == nil {\n\t\tpanic(\"Interface.DeviceSetDefaultFanSpeed_v2Func: method is nil but Interface.DeviceSetDefaultFanSpeed_v2 was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t\tN      int\n\t}{\n\t\tDevice: device,\n\t\tN:      n,\n\t}\n\tmock.lockDeviceSetDefaultFanSpeed_v2.Lock()\n\tmock.calls.DeviceSetDefaultFanSpeed_v2 = append(mock.calls.DeviceSetDefaultFanSpeed_v2, callInfo)\n\tmock.lockDeviceSetDefaultFanSpeed_v2.Unlock()\n\treturn mock.DeviceSetDefaultFanSpeed_v2Func(device, n)\n}\n\n// DeviceSetDefaultFanSpeed_v2Calls gets all the calls that were made to DeviceSetDefaultFanSpeed_v2.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceSetDefaultFanSpeed_v2Calls())\nfunc (mock *Interface) DeviceSetDefaultFanSpeed_v2Calls() []struct {\n\tDevice nvml.Device\n\tN      int\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t\tN      int\n\t}\n\tmock.lockDeviceSetDefaultFanSpeed_v2.RLock()\n\tcalls = mock.calls.DeviceSetDefaultFanSpeed_v2\n\tmock.lockDeviceSetDefaultFanSpeed_v2.RUnlock()\n\treturn calls\n}\n\n// DeviceSetDramEncryptionMode calls DeviceSetDramEncryptionModeFunc.\nfunc (mock *Interface) DeviceSetDramEncryptionMode(device nvml.Device, dramEncryptionInfo *nvml.DramEncryptionInfo) nvml.Return {\n\tif mock.DeviceSetDramEncryptionModeFunc == nil {\n\t\tpanic(\"Interface.DeviceSetDramEncryptionModeFunc: method is nil but Interface.DeviceSetDramEncryptionMode was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice             nvml.Device\n\t\tDramEncryptionInfo *nvml.DramEncryptionInfo\n\t}{\n\t\tDevice:             device,\n\t\tDramEncryptionInfo: dramEncryptionInfo,\n\t}\n\tmock.lockDeviceSetDramEncryptionMode.Lock()\n\tmock.calls.DeviceSetDramEncryptionMode = append(mock.calls.DeviceSetDramEncryptionMode, callInfo)\n\tmock.lockDeviceSetDramEncryptionMode.Unlock()\n\treturn mock.DeviceSetDramEncryptionModeFunc(device, dramEncryptionInfo)\n}\n\n// DeviceSetDramEncryptionModeCalls gets all the calls that were made to DeviceSetDramEncryptionMode.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceSetDramEncryptionModeCalls())\nfunc (mock *Interface) DeviceSetDramEncryptionModeCalls() []struct {\n\tDevice             nvml.Device\n\tDramEncryptionInfo *nvml.DramEncryptionInfo\n} {\n\tvar calls []struct {\n\t\tDevice             nvml.Device\n\t\tDramEncryptionInfo *nvml.DramEncryptionInfo\n\t}\n\tmock.lockDeviceSetDramEncryptionMode.RLock()\n\tcalls = mock.calls.DeviceSetDramEncryptionMode\n\tmock.lockDeviceSetDramEncryptionMode.RUnlock()\n\treturn calls\n}\n\n// DeviceSetDriverModel calls DeviceSetDriverModelFunc.\nfunc (mock *Interface) DeviceSetDriverModel(device nvml.Device, driverModel nvml.DriverModel, v uint32) nvml.Return {\n\tif mock.DeviceSetDriverModelFunc == nil {\n\t\tpanic(\"Interface.DeviceSetDriverModelFunc: method is nil but Interface.DeviceSetDriverModel was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice      nvml.Device\n\t\tDriverModel nvml.DriverModel\n\t\tV           uint32\n\t}{\n\t\tDevice:      device,\n\t\tDriverModel: driverModel,\n\t\tV:           v,\n\t}\n\tmock.lockDeviceSetDriverModel.Lock()\n\tmock.calls.DeviceSetDriverModel = append(mock.calls.DeviceSetDriverModel, callInfo)\n\tmock.lockDeviceSetDriverModel.Unlock()\n\treturn mock.DeviceSetDriverModelFunc(device, driverModel, v)\n}\n\n// DeviceSetDriverModelCalls gets all the calls that were made to DeviceSetDriverModel.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceSetDriverModelCalls())\nfunc (mock *Interface) DeviceSetDriverModelCalls() []struct {\n\tDevice      nvml.Device\n\tDriverModel nvml.DriverModel\n\tV           uint32\n} {\n\tvar calls []struct {\n\t\tDevice      nvml.Device\n\t\tDriverModel nvml.DriverModel\n\t\tV           uint32\n\t}\n\tmock.lockDeviceSetDriverModel.RLock()\n\tcalls = mock.calls.DeviceSetDriverModel\n\tmock.lockDeviceSetDriverModel.RUnlock()\n\treturn calls\n}\n\n// DeviceSetEccMode calls DeviceSetEccModeFunc.\nfunc (mock *Interface) DeviceSetEccMode(device nvml.Device, enableState nvml.EnableState) nvml.Return {\n\tif mock.DeviceSetEccModeFunc == nil {\n\t\tpanic(\"Interface.DeviceSetEccModeFunc: method is nil but Interface.DeviceSetEccMode was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice      nvml.Device\n\t\tEnableState nvml.EnableState\n\t}{\n\t\tDevice:      device,\n\t\tEnableState: enableState,\n\t}\n\tmock.lockDeviceSetEccMode.Lock()\n\tmock.calls.DeviceSetEccMode = append(mock.calls.DeviceSetEccMode, callInfo)\n\tmock.lockDeviceSetEccMode.Unlock()\n\treturn mock.DeviceSetEccModeFunc(device, enableState)\n}\n\n// DeviceSetEccModeCalls gets all the calls that were made to DeviceSetEccMode.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceSetEccModeCalls())\nfunc (mock *Interface) DeviceSetEccModeCalls() []struct {\n\tDevice      nvml.Device\n\tEnableState nvml.EnableState\n} {\n\tvar calls []struct {\n\t\tDevice      nvml.Device\n\t\tEnableState nvml.EnableState\n\t}\n\tmock.lockDeviceSetEccMode.RLock()\n\tcalls = mock.calls.DeviceSetEccMode\n\tmock.lockDeviceSetEccMode.RUnlock()\n\treturn calls\n}\n\n// DeviceSetFanControlPolicy calls DeviceSetFanControlPolicyFunc.\nfunc (mock *Interface) DeviceSetFanControlPolicy(device nvml.Device, n int, fanControlPolicy nvml.FanControlPolicy) nvml.Return {\n\tif mock.DeviceSetFanControlPolicyFunc == nil {\n\t\tpanic(\"Interface.DeviceSetFanControlPolicyFunc: method is nil but Interface.DeviceSetFanControlPolicy was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice           nvml.Device\n\t\tN                int\n\t\tFanControlPolicy nvml.FanControlPolicy\n\t}{\n\t\tDevice:           device,\n\t\tN:                n,\n\t\tFanControlPolicy: fanControlPolicy,\n\t}\n\tmock.lockDeviceSetFanControlPolicy.Lock()\n\tmock.calls.DeviceSetFanControlPolicy = append(mock.calls.DeviceSetFanControlPolicy, callInfo)\n\tmock.lockDeviceSetFanControlPolicy.Unlock()\n\treturn mock.DeviceSetFanControlPolicyFunc(device, n, fanControlPolicy)\n}\n\n// DeviceSetFanControlPolicyCalls gets all the calls that were made to DeviceSetFanControlPolicy.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceSetFanControlPolicyCalls())\nfunc (mock *Interface) DeviceSetFanControlPolicyCalls() []struct {\n\tDevice           nvml.Device\n\tN                int\n\tFanControlPolicy nvml.FanControlPolicy\n} {\n\tvar calls []struct {\n\t\tDevice           nvml.Device\n\t\tN                int\n\t\tFanControlPolicy nvml.FanControlPolicy\n\t}\n\tmock.lockDeviceSetFanControlPolicy.RLock()\n\tcalls = mock.calls.DeviceSetFanControlPolicy\n\tmock.lockDeviceSetFanControlPolicy.RUnlock()\n\treturn calls\n}\n\n// DeviceSetFanSpeed_v2 calls DeviceSetFanSpeed_v2Func.\nfunc (mock *Interface) DeviceSetFanSpeed_v2(device nvml.Device, n1 int, n2 int) nvml.Return {\n\tif mock.DeviceSetFanSpeed_v2Func == nil {\n\t\tpanic(\"Interface.DeviceSetFanSpeed_v2Func: method is nil but Interface.DeviceSetFanSpeed_v2 was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t\tN1     int\n\t\tN2     int\n\t}{\n\t\tDevice: device,\n\t\tN1:     n1,\n\t\tN2:     n2,\n\t}\n\tmock.lockDeviceSetFanSpeed_v2.Lock()\n\tmock.calls.DeviceSetFanSpeed_v2 = append(mock.calls.DeviceSetFanSpeed_v2, callInfo)\n\tmock.lockDeviceSetFanSpeed_v2.Unlock()\n\treturn mock.DeviceSetFanSpeed_v2Func(device, n1, n2)\n}\n\n// DeviceSetFanSpeed_v2Calls gets all the calls that were made to DeviceSetFanSpeed_v2.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceSetFanSpeed_v2Calls())\nfunc (mock *Interface) DeviceSetFanSpeed_v2Calls() []struct {\n\tDevice nvml.Device\n\tN1     int\n\tN2     int\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t\tN1     int\n\t\tN2     int\n\t}\n\tmock.lockDeviceSetFanSpeed_v2.RLock()\n\tcalls = mock.calls.DeviceSetFanSpeed_v2\n\tmock.lockDeviceSetFanSpeed_v2.RUnlock()\n\treturn calls\n}\n\n// DeviceSetGpcClkVfOffset calls DeviceSetGpcClkVfOffsetFunc.\nfunc (mock *Interface) DeviceSetGpcClkVfOffset(device nvml.Device, n int) nvml.Return {\n\tif mock.DeviceSetGpcClkVfOffsetFunc == nil {\n\t\tpanic(\"Interface.DeviceSetGpcClkVfOffsetFunc: method is nil but Interface.DeviceSetGpcClkVfOffset was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t\tN      int\n\t}{\n\t\tDevice: device,\n\t\tN:      n,\n\t}\n\tmock.lockDeviceSetGpcClkVfOffset.Lock()\n\tmock.calls.DeviceSetGpcClkVfOffset = append(mock.calls.DeviceSetGpcClkVfOffset, callInfo)\n\tmock.lockDeviceSetGpcClkVfOffset.Unlock()\n\treturn mock.DeviceSetGpcClkVfOffsetFunc(device, n)\n}\n\n// DeviceSetGpcClkVfOffsetCalls gets all the calls that were made to DeviceSetGpcClkVfOffset.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceSetGpcClkVfOffsetCalls())\nfunc (mock *Interface) DeviceSetGpcClkVfOffsetCalls() []struct {\n\tDevice nvml.Device\n\tN      int\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t\tN      int\n\t}\n\tmock.lockDeviceSetGpcClkVfOffset.RLock()\n\tcalls = mock.calls.DeviceSetGpcClkVfOffset\n\tmock.lockDeviceSetGpcClkVfOffset.RUnlock()\n\treturn calls\n}\n\n// DeviceSetGpuLockedClocks calls DeviceSetGpuLockedClocksFunc.\nfunc (mock *Interface) DeviceSetGpuLockedClocks(device nvml.Device, v1 uint32, v2 uint32) nvml.Return {\n\tif mock.DeviceSetGpuLockedClocksFunc == nil {\n\t\tpanic(\"Interface.DeviceSetGpuLockedClocksFunc: method is nil but Interface.DeviceSetGpuLockedClocks was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t\tV1     uint32\n\t\tV2     uint32\n\t}{\n\t\tDevice: device,\n\t\tV1:     v1,\n\t\tV2:     v2,\n\t}\n\tmock.lockDeviceSetGpuLockedClocks.Lock()\n\tmock.calls.DeviceSetGpuLockedClocks = append(mock.calls.DeviceSetGpuLockedClocks, callInfo)\n\tmock.lockDeviceSetGpuLockedClocks.Unlock()\n\treturn mock.DeviceSetGpuLockedClocksFunc(device, v1, v2)\n}\n\n// DeviceSetGpuLockedClocksCalls gets all the calls that were made to DeviceSetGpuLockedClocks.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceSetGpuLockedClocksCalls())\nfunc (mock *Interface) DeviceSetGpuLockedClocksCalls() []struct {\n\tDevice nvml.Device\n\tV1     uint32\n\tV2     uint32\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t\tV1     uint32\n\t\tV2     uint32\n\t}\n\tmock.lockDeviceSetGpuLockedClocks.RLock()\n\tcalls = mock.calls.DeviceSetGpuLockedClocks\n\tmock.lockDeviceSetGpuLockedClocks.RUnlock()\n\treturn calls\n}\n\n// DeviceSetGpuOperationMode calls DeviceSetGpuOperationModeFunc.\nfunc (mock *Interface) DeviceSetGpuOperationMode(device nvml.Device, gpuOperationMode nvml.GpuOperationMode) nvml.Return {\n\tif mock.DeviceSetGpuOperationModeFunc == nil {\n\t\tpanic(\"Interface.DeviceSetGpuOperationModeFunc: method is nil but Interface.DeviceSetGpuOperationMode was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice           nvml.Device\n\t\tGpuOperationMode nvml.GpuOperationMode\n\t}{\n\t\tDevice:           device,\n\t\tGpuOperationMode: gpuOperationMode,\n\t}\n\tmock.lockDeviceSetGpuOperationMode.Lock()\n\tmock.calls.DeviceSetGpuOperationMode = append(mock.calls.DeviceSetGpuOperationMode, callInfo)\n\tmock.lockDeviceSetGpuOperationMode.Unlock()\n\treturn mock.DeviceSetGpuOperationModeFunc(device, gpuOperationMode)\n}\n\n// DeviceSetGpuOperationModeCalls gets all the calls that were made to DeviceSetGpuOperationMode.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceSetGpuOperationModeCalls())\nfunc (mock *Interface) DeviceSetGpuOperationModeCalls() []struct {\n\tDevice           nvml.Device\n\tGpuOperationMode nvml.GpuOperationMode\n} {\n\tvar calls []struct {\n\t\tDevice           nvml.Device\n\t\tGpuOperationMode nvml.GpuOperationMode\n\t}\n\tmock.lockDeviceSetGpuOperationMode.RLock()\n\tcalls = mock.calls.DeviceSetGpuOperationMode\n\tmock.lockDeviceSetGpuOperationMode.RUnlock()\n\treturn calls\n}\n\n// DeviceSetMemClkVfOffset calls DeviceSetMemClkVfOffsetFunc.\nfunc (mock *Interface) DeviceSetMemClkVfOffset(device nvml.Device, n int) nvml.Return {\n\tif mock.DeviceSetMemClkVfOffsetFunc == nil {\n\t\tpanic(\"Interface.DeviceSetMemClkVfOffsetFunc: method is nil but Interface.DeviceSetMemClkVfOffset was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t\tN      int\n\t}{\n\t\tDevice: device,\n\t\tN:      n,\n\t}\n\tmock.lockDeviceSetMemClkVfOffset.Lock()\n\tmock.calls.DeviceSetMemClkVfOffset = append(mock.calls.DeviceSetMemClkVfOffset, callInfo)\n\tmock.lockDeviceSetMemClkVfOffset.Unlock()\n\treturn mock.DeviceSetMemClkVfOffsetFunc(device, n)\n}\n\n// DeviceSetMemClkVfOffsetCalls gets all the calls that were made to DeviceSetMemClkVfOffset.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceSetMemClkVfOffsetCalls())\nfunc (mock *Interface) DeviceSetMemClkVfOffsetCalls() []struct {\n\tDevice nvml.Device\n\tN      int\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t\tN      int\n\t}\n\tmock.lockDeviceSetMemClkVfOffset.RLock()\n\tcalls = mock.calls.DeviceSetMemClkVfOffset\n\tmock.lockDeviceSetMemClkVfOffset.RUnlock()\n\treturn calls\n}\n\n// DeviceSetMemoryLockedClocks calls DeviceSetMemoryLockedClocksFunc.\nfunc (mock *Interface) DeviceSetMemoryLockedClocks(device nvml.Device, v1 uint32, v2 uint32) nvml.Return {\n\tif mock.DeviceSetMemoryLockedClocksFunc == nil {\n\t\tpanic(\"Interface.DeviceSetMemoryLockedClocksFunc: method is nil but Interface.DeviceSetMemoryLockedClocks was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t\tV1     uint32\n\t\tV2     uint32\n\t}{\n\t\tDevice: device,\n\t\tV1:     v1,\n\t\tV2:     v2,\n\t}\n\tmock.lockDeviceSetMemoryLockedClocks.Lock()\n\tmock.calls.DeviceSetMemoryLockedClocks = append(mock.calls.DeviceSetMemoryLockedClocks, callInfo)\n\tmock.lockDeviceSetMemoryLockedClocks.Unlock()\n\treturn mock.DeviceSetMemoryLockedClocksFunc(device, v1, v2)\n}\n\n// DeviceSetMemoryLockedClocksCalls gets all the calls that were made to DeviceSetMemoryLockedClocks.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceSetMemoryLockedClocksCalls())\nfunc (mock *Interface) DeviceSetMemoryLockedClocksCalls() []struct {\n\tDevice nvml.Device\n\tV1     uint32\n\tV2     uint32\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t\tV1     uint32\n\t\tV2     uint32\n\t}\n\tmock.lockDeviceSetMemoryLockedClocks.RLock()\n\tcalls = mock.calls.DeviceSetMemoryLockedClocks\n\tmock.lockDeviceSetMemoryLockedClocks.RUnlock()\n\treturn calls\n}\n\n// DeviceSetMigMode calls DeviceSetMigModeFunc.\nfunc (mock *Interface) DeviceSetMigMode(device nvml.Device, n int) (nvml.Return, nvml.Return) {\n\tif mock.DeviceSetMigModeFunc == nil {\n\t\tpanic(\"Interface.DeviceSetMigModeFunc: method is nil but Interface.DeviceSetMigMode was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t\tN      int\n\t}{\n\t\tDevice: device,\n\t\tN:      n,\n\t}\n\tmock.lockDeviceSetMigMode.Lock()\n\tmock.calls.DeviceSetMigMode = append(mock.calls.DeviceSetMigMode, callInfo)\n\tmock.lockDeviceSetMigMode.Unlock()\n\treturn mock.DeviceSetMigModeFunc(device, n)\n}\n\n// DeviceSetMigModeCalls gets all the calls that were made to DeviceSetMigMode.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceSetMigModeCalls())\nfunc (mock *Interface) DeviceSetMigModeCalls() []struct {\n\tDevice nvml.Device\n\tN      int\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t\tN      int\n\t}\n\tmock.lockDeviceSetMigMode.RLock()\n\tcalls = mock.calls.DeviceSetMigMode\n\tmock.lockDeviceSetMigMode.RUnlock()\n\treturn calls\n}\n\n// DeviceSetNvLinkDeviceLowPowerThreshold calls DeviceSetNvLinkDeviceLowPowerThresholdFunc.\nfunc (mock *Interface) DeviceSetNvLinkDeviceLowPowerThreshold(device nvml.Device, nvLinkPowerThres *nvml.NvLinkPowerThres) nvml.Return {\n\tif mock.DeviceSetNvLinkDeviceLowPowerThresholdFunc == nil {\n\t\tpanic(\"Interface.DeviceSetNvLinkDeviceLowPowerThresholdFunc: method is nil but Interface.DeviceSetNvLinkDeviceLowPowerThreshold was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice           nvml.Device\n\t\tNvLinkPowerThres *nvml.NvLinkPowerThres\n\t}{\n\t\tDevice:           device,\n\t\tNvLinkPowerThres: nvLinkPowerThres,\n\t}\n\tmock.lockDeviceSetNvLinkDeviceLowPowerThreshold.Lock()\n\tmock.calls.DeviceSetNvLinkDeviceLowPowerThreshold = append(mock.calls.DeviceSetNvLinkDeviceLowPowerThreshold, callInfo)\n\tmock.lockDeviceSetNvLinkDeviceLowPowerThreshold.Unlock()\n\treturn mock.DeviceSetNvLinkDeviceLowPowerThresholdFunc(device, nvLinkPowerThres)\n}\n\n// DeviceSetNvLinkDeviceLowPowerThresholdCalls gets all the calls that were made to DeviceSetNvLinkDeviceLowPowerThreshold.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceSetNvLinkDeviceLowPowerThresholdCalls())\nfunc (mock *Interface) DeviceSetNvLinkDeviceLowPowerThresholdCalls() []struct {\n\tDevice           nvml.Device\n\tNvLinkPowerThres *nvml.NvLinkPowerThres\n} {\n\tvar calls []struct {\n\t\tDevice           nvml.Device\n\t\tNvLinkPowerThres *nvml.NvLinkPowerThres\n\t}\n\tmock.lockDeviceSetNvLinkDeviceLowPowerThreshold.RLock()\n\tcalls = mock.calls.DeviceSetNvLinkDeviceLowPowerThreshold\n\tmock.lockDeviceSetNvLinkDeviceLowPowerThreshold.RUnlock()\n\treturn calls\n}\n\n// DeviceSetNvLinkUtilizationControl calls DeviceSetNvLinkUtilizationControlFunc.\nfunc (mock *Interface) DeviceSetNvLinkUtilizationControl(device nvml.Device, n1 int, n2 int, nvLinkUtilizationControl *nvml.NvLinkUtilizationControl, b bool) nvml.Return {\n\tif mock.DeviceSetNvLinkUtilizationControlFunc == nil {\n\t\tpanic(\"Interface.DeviceSetNvLinkUtilizationControlFunc: method is nil but Interface.DeviceSetNvLinkUtilizationControl was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice                   nvml.Device\n\t\tN1                       int\n\t\tN2                       int\n\t\tNvLinkUtilizationControl *nvml.NvLinkUtilizationControl\n\t\tB                        bool\n\t}{\n\t\tDevice:                   device,\n\t\tN1:                       n1,\n\t\tN2:                       n2,\n\t\tNvLinkUtilizationControl: nvLinkUtilizationControl,\n\t\tB:                        b,\n\t}\n\tmock.lockDeviceSetNvLinkUtilizationControl.Lock()\n\tmock.calls.DeviceSetNvLinkUtilizationControl = append(mock.calls.DeviceSetNvLinkUtilizationControl, callInfo)\n\tmock.lockDeviceSetNvLinkUtilizationControl.Unlock()\n\treturn mock.DeviceSetNvLinkUtilizationControlFunc(device, n1, n2, nvLinkUtilizationControl, b)\n}\n\n// DeviceSetNvLinkUtilizationControlCalls gets all the calls that were made to DeviceSetNvLinkUtilizationControl.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceSetNvLinkUtilizationControlCalls())\nfunc (mock *Interface) DeviceSetNvLinkUtilizationControlCalls() []struct {\n\tDevice                   nvml.Device\n\tN1                       int\n\tN2                       int\n\tNvLinkUtilizationControl *nvml.NvLinkUtilizationControl\n\tB                        bool\n} {\n\tvar calls []struct {\n\t\tDevice                   nvml.Device\n\t\tN1                       int\n\t\tN2                       int\n\t\tNvLinkUtilizationControl *nvml.NvLinkUtilizationControl\n\t\tB                        bool\n\t}\n\tmock.lockDeviceSetNvLinkUtilizationControl.RLock()\n\tcalls = mock.calls.DeviceSetNvLinkUtilizationControl\n\tmock.lockDeviceSetNvLinkUtilizationControl.RUnlock()\n\treturn calls\n}\n\n// DeviceSetNvlinkBwMode calls DeviceSetNvlinkBwModeFunc.\nfunc (mock *Interface) DeviceSetNvlinkBwMode(device nvml.Device, nvlinkSetBwMode *nvml.NvlinkSetBwMode) nvml.Return {\n\tif mock.DeviceSetNvlinkBwModeFunc == nil {\n\t\tpanic(\"Interface.DeviceSetNvlinkBwModeFunc: method is nil but Interface.DeviceSetNvlinkBwMode was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice          nvml.Device\n\t\tNvlinkSetBwMode *nvml.NvlinkSetBwMode\n\t}{\n\t\tDevice:          device,\n\t\tNvlinkSetBwMode: nvlinkSetBwMode,\n\t}\n\tmock.lockDeviceSetNvlinkBwMode.Lock()\n\tmock.calls.DeviceSetNvlinkBwMode = append(mock.calls.DeviceSetNvlinkBwMode, callInfo)\n\tmock.lockDeviceSetNvlinkBwMode.Unlock()\n\treturn mock.DeviceSetNvlinkBwModeFunc(device, nvlinkSetBwMode)\n}\n\n// DeviceSetNvlinkBwModeCalls gets all the calls that were made to DeviceSetNvlinkBwMode.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceSetNvlinkBwModeCalls())\nfunc (mock *Interface) DeviceSetNvlinkBwModeCalls() []struct {\n\tDevice          nvml.Device\n\tNvlinkSetBwMode *nvml.NvlinkSetBwMode\n} {\n\tvar calls []struct {\n\t\tDevice          nvml.Device\n\t\tNvlinkSetBwMode *nvml.NvlinkSetBwMode\n\t}\n\tmock.lockDeviceSetNvlinkBwMode.RLock()\n\tcalls = mock.calls.DeviceSetNvlinkBwMode\n\tmock.lockDeviceSetNvlinkBwMode.RUnlock()\n\treturn calls\n}\n\n// DeviceSetPersistenceMode calls DeviceSetPersistenceModeFunc.\nfunc (mock *Interface) DeviceSetPersistenceMode(device nvml.Device, enableState nvml.EnableState) nvml.Return {\n\tif mock.DeviceSetPersistenceModeFunc == nil {\n\t\tpanic(\"Interface.DeviceSetPersistenceModeFunc: method is nil but Interface.DeviceSetPersistenceMode was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice      nvml.Device\n\t\tEnableState nvml.EnableState\n\t}{\n\t\tDevice:      device,\n\t\tEnableState: enableState,\n\t}\n\tmock.lockDeviceSetPersistenceMode.Lock()\n\tmock.calls.DeviceSetPersistenceMode = append(mock.calls.DeviceSetPersistenceMode, callInfo)\n\tmock.lockDeviceSetPersistenceMode.Unlock()\n\treturn mock.DeviceSetPersistenceModeFunc(device, enableState)\n}\n\n// DeviceSetPersistenceModeCalls gets all the calls that were made to DeviceSetPersistenceMode.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceSetPersistenceModeCalls())\nfunc (mock *Interface) DeviceSetPersistenceModeCalls() []struct {\n\tDevice      nvml.Device\n\tEnableState nvml.EnableState\n} {\n\tvar calls []struct {\n\t\tDevice      nvml.Device\n\t\tEnableState nvml.EnableState\n\t}\n\tmock.lockDeviceSetPersistenceMode.RLock()\n\tcalls = mock.calls.DeviceSetPersistenceMode\n\tmock.lockDeviceSetPersistenceMode.RUnlock()\n\treturn calls\n}\n\n// DeviceSetPowerManagementLimit calls DeviceSetPowerManagementLimitFunc.\nfunc (mock *Interface) DeviceSetPowerManagementLimit(device nvml.Device, v uint32) nvml.Return {\n\tif mock.DeviceSetPowerManagementLimitFunc == nil {\n\t\tpanic(\"Interface.DeviceSetPowerManagementLimitFunc: method is nil but Interface.DeviceSetPowerManagementLimit was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t\tV      uint32\n\t}{\n\t\tDevice: device,\n\t\tV:      v,\n\t}\n\tmock.lockDeviceSetPowerManagementLimit.Lock()\n\tmock.calls.DeviceSetPowerManagementLimit = append(mock.calls.DeviceSetPowerManagementLimit, callInfo)\n\tmock.lockDeviceSetPowerManagementLimit.Unlock()\n\treturn mock.DeviceSetPowerManagementLimitFunc(device, v)\n}\n\n// DeviceSetPowerManagementLimitCalls gets all the calls that were made to DeviceSetPowerManagementLimit.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceSetPowerManagementLimitCalls())\nfunc (mock *Interface) DeviceSetPowerManagementLimitCalls() []struct {\n\tDevice nvml.Device\n\tV      uint32\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t\tV      uint32\n\t}\n\tmock.lockDeviceSetPowerManagementLimit.RLock()\n\tcalls = mock.calls.DeviceSetPowerManagementLimit\n\tmock.lockDeviceSetPowerManagementLimit.RUnlock()\n\treturn calls\n}\n\n// DeviceSetPowerManagementLimit_v2 calls DeviceSetPowerManagementLimit_v2Func.\nfunc (mock *Interface) DeviceSetPowerManagementLimit_v2(device nvml.Device, powerValue_v2 *nvml.PowerValue_v2) nvml.Return {\n\tif mock.DeviceSetPowerManagementLimit_v2Func == nil {\n\t\tpanic(\"Interface.DeviceSetPowerManagementLimit_v2Func: method is nil but Interface.DeviceSetPowerManagementLimit_v2 was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice        nvml.Device\n\t\tPowerValue_v2 *nvml.PowerValue_v2\n\t}{\n\t\tDevice:        device,\n\t\tPowerValue_v2: powerValue_v2,\n\t}\n\tmock.lockDeviceSetPowerManagementLimit_v2.Lock()\n\tmock.calls.DeviceSetPowerManagementLimit_v2 = append(mock.calls.DeviceSetPowerManagementLimit_v2, callInfo)\n\tmock.lockDeviceSetPowerManagementLimit_v2.Unlock()\n\treturn mock.DeviceSetPowerManagementLimit_v2Func(device, powerValue_v2)\n}\n\n// DeviceSetPowerManagementLimit_v2Calls gets all the calls that were made to DeviceSetPowerManagementLimit_v2.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceSetPowerManagementLimit_v2Calls())\nfunc (mock *Interface) DeviceSetPowerManagementLimit_v2Calls() []struct {\n\tDevice        nvml.Device\n\tPowerValue_v2 *nvml.PowerValue_v2\n} {\n\tvar calls []struct {\n\t\tDevice        nvml.Device\n\t\tPowerValue_v2 *nvml.PowerValue_v2\n\t}\n\tmock.lockDeviceSetPowerManagementLimit_v2.RLock()\n\tcalls = mock.calls.DeviceSetPowerManagementLimit_v2\n\tmock.lockDeviceSetPowerManagementLimit_v2.RUnlock()\n\treturn calls\n}\n\n// DeviceSetTemperatureThreshold calls DeviceSetTemperatureThresholdFunc.\nfunc (mock *Interface) DeviceSetTemperatureThreshold(device nvml.Device, temperatureThresholds nvml.TemperatureThresholds, n int) nvml.Return {\n\tif mock.DeviceSetTemperatureThresholdFunc == nil {\n\t\tpanic(\"Interface.DeviceSetTemperatureThresholdFunc: method is nil but Interface.DeviceSetTemperatureThreshold was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice                nvml.Device\n\t\tTemperatureThresholds nvml.TemperatureThresholds\n\t\tN                     int\n\t}{\n\t\tDevice:                device,\n\t\tTemperatureThresholds: temperatureThresholds,\n\t\tN:                     n,\n\t}\n\tmock.lockDeviceSetTemperatureThreshold.Lock()\n\tmock.calls.DeviceSetTemperatureThreshold = append(mock.calls.DeviceSetTemperatureThreshold, callInfo)\n\tmock.lockDeviceSetTemperatureThreshold.Unlock()\n\treturn mock.DeviceSetTemperatureThresholdFunc(device, temperatureThresholds, n)\n}\n\n// DeviceSetTemperatureThresholdCalls gets all the calls that were made to DeviceSetTemperatureThreshold.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceSetTemperatureThresholdCalls())\nfunc (mock *Interface) DeviceSetTemperatureThresholdCalls() []struct {\n\tDevice                nvml.Device\n\tTemperatureThresholds nvml.TemperatureThresholds\n\tN                     int\n} {\n\tvar calls []struct {\n\t\tDevice                nvml.Device\n\t\tTemperatureThresholds nvml.TemperatureThresholds\n\t\tN                     int\n\t}\n\tmock.lockDeviceSetTemperatureThreshold.RLock()\n\tcalls = mock.calls.DeviceSetTemperatureThreshold\n\tmock.lockDeviceSetTemperatureThreshold.RUnlock()\n\treturn calls\n}\n\n// DeviceSetVgpuCapabilities calls DeviceSetVgpuCapabilitiesFunc.\nfunc (mock *Interface) DeviceSetVgpuCapabilities(device nvml.Device, deviceVgpuCapability nvml.DeviceVgpuCapability, enableState nvml.EnableState) nvml.Return {\n\tif mock.DeviceSetVgpuCapabilitiesFunc == nil {\n\t\tpanic(\"Interface.DeviceSetVgpuCapabilitiesFunc: method is nil but Interface.DeviceSetVgpuCapabilities was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice               nvml.Device\n\t\tDeviceVgpuCapability nvml.DeviceVgpuCapability\n\t\tEnableState          nvml.EnableState\n\t}{\n\t\tDevice:               device,\n\t\tDeviceVgpuCapability: deviceVgpuCapability,\n\t\tEnableState:          enableState,\n\t}\n\tmock.lockDeviceSetVgpuCapabilities.Lock()\n\tmock.calls.DeviceSetVgpuCapabilities = append(mock.calls.DeviceSetVgpuCapabilities, callInfo)\n\tmock.lockDeviceSetVgpuCapabilities.Unlock()\n\treturn mock.DeviceSetVgpuCapabilitiesFunc(device, deviceVgpuCapability, enableState)\n}\n\n// DeviceSetVgpuCapabilitiesCalls gets all the calls that were made to DeviceSetVgpuCapabilities.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceSetVgpuCapabilitiesCalls())\nfunc (mock *Interface) DeviceSetVgpuCapabilitiesCalls() []struct {\n\tDevice               nvml.Device\n\tDeviceVgpuCapability nvml.DeviceVgpuCapability\n\tEnableState          nvml.EnableState\n} {\n\tvar calls []struct {\n\t\tDevice               nvml.Device\n\t\tDeviceVgpuCapability nvml.DeviceVgpuCapability\n\t\tEnableState          nvml.EnableState\n\t}\n\tmock.lockDeviceSetVgpuCapabilities.RLock()\n\tcalls = mock.calls.DeviceSetVgpuCapabilities\n\tmock.lockDeviceSetVgpuCapabilities.RUnlock()\n\treturn calls\n}\n\n// DeviceSetVgpuHeterogeneousMode calls DeviceSetVgpuHeterogeneousModeFunc.\nfunc (mock *Interface) DeviceSetVgpuHeterogeneousMode(device nvml.Device, vgpuHeterogeneousMode nvml.VgpuHeterogeneousMode) nvml.Return {\n\tif mock.DeviceSetVgpuHeterogeneousModeFunc == nil {\n\t\tpanic(\"Interface.DeviceSetVgpuHeterogeneousModeFunc: method is nil but Interface.DeviceSetVgpuHeterogeneousMode was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice                nvml.Device\n\t\tVgpuHeterogeneousMode nvml.VgpuHeterogeneousMode\n\t}{\n\t\tDevice:                device,\n\t\tVgpuHeterogeneousMode: vgpuHeterogeneousMode,\n\t}\n\tmock.lockDeviceSetVgpuHeterogeneousMode.Lock()\n\tmock.calls.DeviceSetVgpuHeterogeneousMode = append(mock.calls.DeviceSetVgpuHeterogeneousMode, callInfo)\n\tmock.lockDeviceSetVgpuHeterogeneousMode.Unlock()\n\treturn mock.DeviceSetVgpuHeterogeneousModeFunc(device, vgpuHeterogeneousMode)\n}\n\n// DeviceSetVgpuHeterogeneousModeCalls gets all the calls that were made to DeviceSetVgpuHeterogeneousMode.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceSetVgpuHeterogeneousModeCalls())\nfunc (mock *Interface) DeviceSetVgpuHeterogeneousModeCalls() []struct {\n\tDevice                nvml.Device\n\tVgpuHeterogeneousMode nvml.VgpuHeterogeneousMode\n} {\n\tvar calls []struct {\n\t\tDevice                nvml.Device\n\t\tVgpuHeterogeneousMode nvml.VgpuHeterogeneousMode\n\t}\n\tmock.lockDeviceSetVgpuHeterogeneousMode.RLock()\n\tcalls = mock.calls.DeviceSetVgpuHeterogeneousMode\n\tmock.lockDeviceSetVgpuHeterogeneousMode.RUnlock()\n\treturn calls\n}\n\n// DeviceSetVgpuSchedulerState calls DeviceSetVgpuSchedulerStateFunc.\nfunc (mock *Interface) DeviceSetVgpuSchedulerState(device nvml.Device, vgpuSchedulerSetState *nvml.VgpuSchedulerSetState) nvml.Return {\n\tif mock.DeviceSetVgpuSchedulerStateFunc == nil {\n\t\tpanic(\"Interface.DeviceSetVgpuSchedulerStateFunc: method is nil but Interface.DeviceSetVgpuSchedulerState was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice                nvml.Device\n\t\tVgpuSchedulerSetState *nvml.VgpuSchedulerSetState\n\t}{\n\t\tDevice:                device,\n\t\tVgpuSchedulerSetState: vgpuSchedulerSetState,\n\t}\n\tmock.lockDeviceSetVgpuSchedulerState.Lock()\n\tmock.calls.DeviceSetVgpuSchedulerState = append(mock.calls.DeviceSetVgpuSchedulerState, callInfo)\n\tmock.lockDeviceSetVgpuSchedulerState.Unlock()\n\treturn mock.DeviceSetVgpuSchedulerStateFunc(device, vgpuSchedulerSetState)\n}\n\n// DeviceSetVgpuSchedulerStateCalls gets all the calls that were made to DeviceSetVgpuSchedulerState.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceSetVgpuSchedulerStateCalls())\nfunc (mock *Interface) DeviceSetVgpuSchedulerStateCalls() []struct {\n\tDevice                nvml.Device\n\tVgpuSchedulerSetState *nvml.VgpuSchedulerSetState\n} {\n\tvar calls []struct {\n\t\tDevice                nvml.Device\n\t\tVgpuSchedulerSetState *nvml.VgpuSchedulerSetState\n\t}\n\tmock.lockDeviceSetVgpuSchedulerState.RLock()\n\tcalls = mock.calls.DeviceSetVgpuSchedulerState\n\tmock.lockDeviceSetVgpuSchedulerState.RUnlock()\n\treturn calls\n}\n\n// DeviceSetVirtualizationMode calls DeviceSetVirtualizationModeFunc.\nfunc (mock *Interface) DeviceSetVirtualizationMode(device nvml.Device, gpuVirtualizationMode nvml.GpuVirtualizationMode) nvml.Return {\n\tif mock.DeviceSetVirtualizationModeFunc == nil {\n\t\tpanic(\"Interface.DeviceSetVirtualizationModeFunc: method is nil but Interface.DeviceSetVirtualizationMode was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice                nvml.Device\n\t\tGpuVirtualizationMode nvml.GpuVirtualizationMode\n\t}{\n\t\tDevice:                device,\n\t\tGpuVirtualizationMode: gpuVirtualizationMode,\n\t}\n\tmock.lockDeviceSetVirtualizationMode.Lock()\n\tmock.calls.DeviceSetVirtualizationMode = append(mock.calls.DeviceSetVirtualizationMode, callInfo)\n\tmock.lockDeviceSetVirtualizationMode.Unlock()\n\treturn mock.DeviceSetVirtualizationModeFunc(device, gpuVirtualizationMode)\n}\n\n// DeviceSetVirtualizationModeCalls gets all the calls that were made to DeviceSetVirtualizationMode.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceSetVirtualizationModeCalls())\nfunc (mock *Interface) DeviceSetVirtualizationModeCalls() []struct {\n\tDevice                nvml.Device\n\tGpuVirtualizationMode nvml.GpuVirtualizationMode\n} {\n\tvar calls []struct {\n\t\tDevice                nvml.Device\n\t\tGpuVirtualizationMode nvml.GpuVirtualizationMode\n\t}\n\tmock.lockDeviceSetVirtualizationMode.RLock()\n\tcalls = mock.calls.DeviceSetVirtualizationMode\n\tmock.lockDeviceSetVirtualizationMode.RUnlock()\n\treturn calls\n}\n\n// DeviceValidateInforom calls DeviceValidateInforomFunc.\nfunc (mock *Interface) DeviceValidateInforom(device nvml.Device) nvml.Return {\n\tif mock.DeviceValidateInforomFunc == nil {\n\t\tpanic(\"Interface.DeviceValidateInforomFunc: method is nil but Interface.DeviceValidateInforom was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceValidateInforom.Lock()\n\tmock.calls.DeviceValidateInforom = append(mock.calls.DeviceValidateInforom, callInfo)\n\tmock.lockDeviceValidateInforom.Unlock()\n\treturn mock.DeviceValidateInforomFunc(device)\n}\n\n// DeviceValidateInforomCalls gets all the calls that were made to DeviceValidateInforom.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceValidateInforomCalls())\nfunc (mock *Interface) DeviceValidateInforomCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceValidateInforom.RLock()\n\tcalls = mock.calls.DeviceValidateInforom\n\tmock.lockDeviceValidateInforom.RUnlock()\n\treturn calls\n}\n\n// DeviceWorkloadPowerProfileClearRequestedProfiles calls DeviceWorkloadPowerProfileClearRequestedProfilesFunc.\nfunc (mock *Interface) DeviceWorkloadPowerProfileClearRequestedProfiles(device nvml.Device, workloadPowerProfileRequestedProfiles *nvml.WorkloadPowerProfileRequestedProfiles) nvml.Return {\n\tif mock.DeviceWorkloadPowerProfileClearRequestedProfilesFunc == nil {\n\t\tpanic(\"Interface.DeviceWorkloadPowerProfileClearRequestedProfilesFunc: method is nil but Interface.DeviceWorkloadPowerProfileClearRequestedProfiles was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice                                nvml.Device\n\t\tWorkloadPowerProfileRequestedProfiles *nvml.WorkloadPowerProfileRequestedProfiles\n\t}{\n\t\tDevice:                                device,\n\t\tWorkloadPowerProfileRequestedProfiles: workloadPowerProfileRequestedProfiles,\n\t}\n\tmock.lockDeviceWorkloadPowerProfileClearRequestedProfiles.Lock()\n\tmock.calls.DeviceWorkloadPowerProfileClearRequestedProfiles = append(mock.calls.DeviceWorkloadPowerProfileClearRequestedProfiles, callInfo)\n\tmock.lockDeviceWorkloadPowerProfileClearRequestedProfiles.Unlock()\n\treturn mock.DeviceWorkloadPowerProfileClearRequestedProfilesFunc(device, workloadPowerProfileRequestedProfiles)\n}\n\n// DeviceWorkloadPowerProfileClearRequestedProfilesCalls gets all the calls that were made to DeviceWorkloadPowerProfileClearRequestedProfiles.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceWorkloadPowerProfileClearRequestedProfilesCalls())\nfunc (mock *Interface) DeviceWorkloadPowerProfileClearRequestedProfilesCalls() []struct {\n\tDevice                                nvml.Device\n\tWorkloadPowerProfileRequestedProfiles *nvml.WorkloadPowerProfileRequestedProfiles\n} {\n\tvar calls []struct {\n\t\tDevice                                nvml.Device\n\t\tWorkloadPowerProfileRequestedProfiles *nvml.WorkloadPowerProfileRequestedProfiles\n\t}\n\tmock.lockDeviceWorkloadPowerProfileClearRequestedProfiles.RLock()\n\tcalls = mock.calls.DeviceWorkloadPowerProfileClearRequestedProfiles\n\tmock.lockDeviceWorkloadPowerProfileClearRequestedProfiles.RUnlock()\n\treturn calls\n}\n\n// DeviceWorkloadPowerProfileGetCurrentProfiles calls DeviceWorkloadPowerProfileGetCurrentProfilesFunc.\nfunc (mock *Interface) DeviceWorkloadPowerProfileGetCurrentProfiles(device nvml.Device) (nvml.WorkloadPowerProfileCurrentProfiles, nvml.Return) {\n\tif mock.DeviceWorkloadPowerProfileGetCurrentProfilesFunc == nil {\n\t\tpanic(\"Interface.DeviceWorkloadPowerProfileGetCurrentProfilesFunc: method is nil but Interface.DeviceWorkloadPowerProfileGetCurrentProfiles was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceWorkloadPowerProfileGetCurrentProfiles.Lock()\n\tmock.calls.DeviceWorkloadPowerProfileGetCurrentProfiles = append(mock.calls.DeviceWorkloadPowerProfileGetCurrentProfiles, callInfo)\n\tmock.lockDeviceWorkloadPowerProfileGetCurrentProfiles.Unlock()\n\treturn mock.DeviceWorkloadPowerProfileGetCurrentProfilesFunc(device)\n}\n\n// DeviceWorkloadPowerProfileGetCurrentProfilesCalls gets all the calls that were made to DeviceWorkloadPowerProfileGetCurrentProfiles.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceWorkloadPowerProfileGetCurrentProfilesCalls())\nfunc (mock *Interface) DeviceWorkloadPowerProfileGetCurrentProfilesCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceWorkloadPowerProfileGetCurrentProfiles.RLock()\n\tcalls = mock.calls.DeviceWorkloadPowerProfileGetCurrentProfiles\n\tmock.lockDeviceWorkloadPowerProfileGetCurrentProfiles.RUnlock()\n\treturn calls\n}\n\n// DeviceWorkloadPowerProfileGetProfilesInfo calls DeviceWorkloadPowerProfileGetProfilesInfoFunc.\nfunc (mock *Interface) DeviceWorkloadPowerProfileGetProfilesInfo(device nvml.Device) (nvml.WorkloadPowerProfileProfilesInfo, nvml.Return) {\n\tif mock.DeviceWorkloadPowerProfileGetProfilesInfoFunc == nil {\n\t\tpanic(\"Interface.DeviceWorkloadPowerProfileGetProfilesInfoFunc: method is nil but Interface.DeviceWorkloadPowerProfileGetProfilesInfo was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockDeviceWorkloadPowerProfileGetProfilesInfo.Lock()\n\tmock.calls.DeviceWorkloadPowerProfileGetProfilesInfo = append(mock.calls.DeviceWorkloadPowerProfileGetProfilesInfo, callInfo)\n\tmock.lockDeviceWorkloadPowerProfileGetProfilesInfo.Unlock()\n\treturn mock.DeviceWorkloadPowerProfileGetProfilesInfoFunc(device)\n}\n\n// DeviceWorkloadPowerProfileGetProfilesInfoCalls gets all the calls that were made to DeviceWorkloadPowerProfileGetProfilesInfo.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceWorkloadPowerProfileGetProfilesInfoCalls())\nfunc (mock *Interface) DeviceWorkloadPowerProfileGetProfilesInfoCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockDeviceWorkloadPowerProfileGetProfilesInfo.RLock()\n\tcalls = mock.calls.DeviceWorkloadPowerProfileGetProfilesInfo\n\tmock.lockDeviceWorkloadPowerProfileGetProfilesInfo.RUnlock()\n\treturn calls\n}\n\n// DeviceWorkloadPowerProfileSetRequestedProfiles calls DeviceWorkloadPowerProfileSetRequestedProfilesFunc.\nfunc (mock *Interface) DeviceWorkloadPowerProfileSetRequestedProfiles(device nvml.Device, workloadPowerProfileRequestedProfiles *nvml.WorkloadPowerProfileRequestedProfiles) nvml.Return {\n\tif mock.DeviceWorkloadPowerProfileSetRequestedProfilesFunc == nil {\n\t\tpanic(\"Interface.DeviceWorkloadPowerProfileSetRequestedProfilesFunc: method is nil but Interface.DeviceWorkloadPowerProfileSetRequestedProfiles was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice                                nvml.Device\n\t\tWorkloadPowerProfileRequestedProfiles *nvml.WorkloadPowerProfileRequestedProfiles\n\t}{\n\t\tDevice:                                device,\n\t\tWorkloadPowerProfileRequestedProfiles: workloadPowerProfileRequestedProfiles,\n\t}\n\tmock.lockDeviceWorkloadPowerProfileSetRequestedProfiles.Lock()\n\tmock.calls.DeviceWorkloadPowerProfileSetRequestedProfiles = append(mock.calls.DeviceWorkloadPowerProfileSetRequestedProfiles, callInfo)\n\tmock.lockDeviceWorkloadPowerProfileSetRequestedProfiles.Unlock()\n\treturn mock.DeviceWorkloadPowerProfileSetRequestedProfilesFunc(device, workloadPowerProfileRequestedProfiles)\n}\n\n// DeviceWorkloadPowerProfileSetRequestedProfilesCalls gets all the calls that were made to DeviceWorkloadPowerProfileSetRequestedProfiles.\n// Check the length with:\n//\n//\tlen(mockedInterface.DeviceWorkloadPowerProfileSetRequestedProfilesCalls())\nfunc (mock *Interface) DeviceWorkloadPowerProfileSetRequestedProfilesCalls() []struct {\n\tDevice                                nvml.Device\n\tWorkloadPowerProfileRequestedProfiles *nvml.WorkloadPowerProfileRequestedProfiles\n} {\n\tvar calls []struct {\n\t\tDevice                                nvml.Device\n\t\tWorkloadPowerProfileRequestedProfiles *nvml.WorkloadPowerProfileRequestedProfiles\n\t}\n\tmock.lockDeviceWorkloadPowerProfileSetRequestedProfiles.RLock()\n\tcalls = mock.calls.DeviceWorkloadPowerProfileSetRequestedProfiles\n\tmock.lockDeviceWorkloadPowerProfileSetRequestedProfiles.RUnlock()\n\treturn calls\n}\n\n// ErrorString calls ErrorStringFunc.\nfunc (mock *Interface) ErrorString(returnMoqParam nvml.Return) string {\n\tif mock.ErrorStringFunc == nil {\n\t\tpanic(\"Interface.ErrorStringFunc: method is nil but Interface.ErrorString was just called\")\n\t}\n\tcallInfo := struct {\n\t\tReturnMoqParam nvml.Return\n\t}{\n\t\tReturnMoqParam: returnMoqParam,\n\t}\n\tmock.lockErrorString.Lock()\n\tmock.calls.ErrorString = append(mock.calls.ErrorString, callInfo)\n\tmock.lockErrorString.Unlock()\n\treturn mock.ErrorStringFunc(returnMoqParam)\n}\n\n// ErrorStringCalls gets all the calls that were made to ErrorString.\n// Check the length with:\n//\n//\tlen(mockedInterface.ErrorStringCalls())\nfunc (mock *Interface) ErrorStringCalls() []struct {\n\tReturnMoqParam nvml.Return\n} {\n\tvar calls []struct {\n\t\tReturnMoqParam nvml.Return\n\t}\n\tmock.lockErrorString.RLock()\n\tcalls = mock.calls.ErrorString\n\tmock.lockErrorString.RUnlock()\n\treturn calls\n}\n\n// EventSetCreate calls EventSetCreateFunc.\nfunc (mock *Interface) EventSetCreate() (nvml.EventSet, nvml.Return) {\n\tif mock.EventSetCreateFunc == nil {\n\t\tpanic(\"Interface.EventSetCreateFunc: method is nil but Interface.EventSetCreate was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockEventSetCreate.Lock()\n\tmock.calls.EventSetCreate = append(mock.calls.EventSetCreate, callInfo)\n\tmock.lockEventSetCreate.Unlock()\n\treturn mock.EventSetCreateFunc()\n}\n\n// EventSetCreateCalls gets all the calls that were made to EventSetCreate.\n// Check the length with:\n//\n//\tlen(mockedInterface.EventSetCreateCalls())\nfunc (mock *Interface) EventSetCreateCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockEventSetCreate.RLock()\n\tcalls = mock.calls.EventSetCreate\n\tmock.lockEventSetCreate.RUnlock()\n\treturn calls\n}\n\n// EventSetFree calls EventSetFreeFunc.\nfunc (mock *Interface) EventSetFree(eventSet nvml.EventSet) nvml.Return {\n\tif mock.EventSetFreeFunc == nil {\n\t\tpanic(\"Interface.EventSetFreeFunc: method is nil but Interface.EventSetFree was just called\")\n\t}\n\tcallInfo := struct {\n\t\tEventSet nvml.EventSet\n\t}{\n\t\tEventSet: eventSet,\n\t}\n\tmock.lockEventSetFree.Lock()\n\tmock.calls.EventSetFree = append(mock.calls.EventSetFree, callInfo)\n\tmock.lockEventSetFree.Unlock()\n\treturn mock.EventSetFreeFunc(eventSet)\n}\n\n// EventSetFreeCalls gets all the calls that were made to EventSetFree.\n// Check the length with:\n//\n//\tlen(mockedInterface.EventSetFreeCalls())\nfunc (mock *Interface) EventSetFreeCalls() []struct {\n\tEventSet nvml.EventSet\n} {\n\tvar calls []struct {\n\t\tEventSet nvml.EventSet\n\t}\n\tmock.lockEventSetFree.RLock()\n\tcalls = mock.calls.EventSetFree\n\tmock.lockEventSetFree.RUnlock()\n\treturn calls\n}\n\n// EventSetWait calls EventSetWaitFunc.\nfunc (mock *Interface) EventSetWait(eventSet nvml.EventSet, v uint32) (nvml.EventData, nvml.Return) {\n\tif mock.EventSetWaitFunc == nil {\n\t\tpanic(\"Interface.EventSetWaitFunc: method is nil but Interface.EventSetWait was just called\")\n\t}\n\tcallInfo := struct {\n\t\tEventSet nvml.EventSet\n\t\tV        uint32\n\t}{\n\t\tEventSet: eventSet,\n\t\tV:        v,\n\t}\n\tmock.lockEventSetWait.Lock()\n\tmock.calls.EventSetWait = append(mock.calls.EventSetWait, callInfo)\n\tmock.lockEventSetWait.Unlock()\n\treturn mock.EventSetWaitFunc(eventSet, v)\n}\n\n// EventSetWaitCalls gets all the calls that were made to EventSetWait.\n// Check the length with:\n//\n//\tlen(mockedInterface.EventSetWaitCalls())\nfunc (mock *Interface) EventSetWaitCalls() []struct {\n\tEventSet nvml.EventSet\n\tV        uint32\n} {\n\tvar calls []struct {\n\t\tEventSet nvml.EventSet\n\t\tV        uint32\n\t}\n\tmock.lockEventSetWait.RLock()\n\tcalls = mock.calls.EventSetWait\n\tmock.lockEventSetWait.RUnlock()\n\treturn calls\n}\n\n// Extensions calls ExtensionsFunc.\nfunc (mock *Interface) Extensions() nvml.ExtendedInterface {\n\tif mock.ExtensionsFunc == nil {\n\t\tpanic(\"Interface.ExtensionsFunc: method is nil but Interface.Extensions was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockExtensions.Lock()\n\tmock.calls.Extensions = append(mock.calls.Extensions, callInfo)\n\tmock.lockExtensions.Unlock()\n\treturn mock.ExtensionsFunc()\n}\n\n// ExtensionsCalls gets all the calls that were made to Extensions.\n// Check the length with:\n//\n//\tlen(mockedInterface.ExtensionsCalls())\nfunc (mock *Interface) ExtensionsCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockExtensions.RLock()\n\tcalls = mock.calls.Extensions\n\tmock.lockExtensions.RUnlock()\n\treturn calls\n}\n\n// GetExcludedDeviceCount calls GetExcludedDeviceCountFunc.\nfunc (mock *Interface) GetExcludedDeviceCount() (int, nvml.Return) {\n\tif mock.GetExcludedDeviceCountFunc == nil {\n\t\tpanic(\"Interface.GetExcludedDeviceCountFunc: method is nil but Interface.GetExcludedDeviceCount was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetExcludedDeviceCount.Lock()\n\tmock.calls.GetExcludedDeviceCount = append(mock.calls.GetExcludedDeviceCount, callInfo)\n\tmock.lockGetExcludedDeviceCount.Unlock()\n\treturn mock.GetExcludedDeviceCountFunc()\n}\n\n// GetExcludedDeviceCountCalls gets all the calls that were made to GetExcludedDeviceCount.\n// Check the length with:\n//\n//\tlen(mockedInterface.GetExcludedDeviceCountCalls())\nfunc (mock *Interface) GetExcludedDeviceCountCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetExcludedDeviceCount.RLock()\n\tcalls = mock.calls.GetExcludedDeviceCount\n\tmock.lockGetExcludedDeviceCount.RUnlock()\n\treturn calls\n}\n\n// GetExcludedDeviceInfoByIndex calls GetExcludedDeviceInfoByIndexFunc.\nfunc (mock *Interface) GetExcludedDeviceInfoByIndex(n int) (nvml.ExcludedDeviceInfo, nvml.Return) {\n\tif mock.GetExcludedDeviceInfoByIndexFunc == nil {\n\t\tpanic(\"Interface.GetExcludedDeviceInfoByIndexFunc: method is nil but Interface.GetExcludedDeviceInfoByIndex was just called\")\n\t}\n\tcallInfo := struct {\n\t\tN int\n\t}{\n\t\tN: n,\n\t}\n\tmock.lockGetExcludedDeviceInfoByIndex.Lock()\n\tmock.calls.GetExcludedDeviceInfoByIndex = append(mock.calls.GetExcludedDeviceInfoByIndex, callInfo)\n\tmock.lockGetExcludedDeviceInfoByIndex.Unlock()\n\treturn mock.GetExcludedDeviceInfoByIndexFunc(n)\n}\n\n// GetExcludedDeviceInfoByIndexCalls gets all the calls that were made to GetExcludedDeviceInfoByIndex.\n// Check the length with:\n//\n//\tlen(mockedInterface.GetExcludedDeviceInfoByIndexCalls())\nfunc (mock *Interface) GetExcludedDeviceInfoByIndexCalls() []struct {\n\tN int\n} {\n\tvar calls []struct {\n\t\tN int\n\t}\n\tmock.lockGetExcludedDeviceInfoByIndex.RLock()\n\tcalls = mock.calls.GetExcludedDeviceInfoByIndex\n\tmock.lockGetExcludedDeviceInfoByIndex.RUnlock()\n\treturn calls\n}\n\n// GetVgpuCompatibility calls GetVgpuCompatibilityFunc.\nfunc (mock *Interface) GetVgpuCompatibility(vgpuMetadata *nvml.VgpuMetadata, vgpuPgpuMetadata *nvml.VgpuPgpuMetadata) (nvml.VgpuPgpuCompatibility, nvml.Return) {\n\tif mock.GetVgpuCompatibilityFunc == nil {\n\t\tpanic(\"Interface.GetVgpuCompatibilityFunc: method is nil but Interface.GetVgpuCompatibility was just called\")\n\t}\n\tcallInfo := struct {\n\t\tVgpuMetadata     *nvml.VgpuMetadata\n\t\tVgpuPgpuMetadata *nvml.VgpuPgpuMetadata\n\t}{\n\t\tVgpuMetadata:     vgpuMetadata,\n\t\tVgpuPgpuMetadata: vgpuPgpuMetadata,\n\t}\n\tmock.lockGetVgpuCompatibility.Lock()\n\tmock.calls.GetVgpuCompatibility = append(mock.calls.GetVgpuCompatibility, callInfo)\n\tmock.lockGetVgpuCompatibility.Unlock()\n\treturn mock.GetVgpuCompatibilityFunc(vgpuMetadata, vgpuPgpuMetadata)\n}\n\n// GetVgpuCompatibilityCalls gets all the calls that were made to GetVgpuCompatibility.\n// Check the length with:\n//\n//\tlen(mockedInterface.GetVgpuCompatibilityCalls())\nfunc (mock *Interface) GetVgpuCompatibilityCalls() []struct {\n\tVgpuMetadata     *nvml.VgpuMetadata\n\tVgpuPgpuMetadata *nvml.VgpuPgpuMetadata\n} {\n\tvar calls []struct {\n\t\tVgpuMetadata     *nvml.VgpuMetadata\n\t\tVgpuPgpuMetadata *nvml.VgpuPgpuMetadata\n\t}\n\tmock.lockGetVgpuCompatibility.RLock()\n\tcalls = mock.calls.GetVgpuCompatibility\n\tmock.lockGetVgpuCompatibility.RUnlock()\n\treturn calls\n}\n\n// GetVgpuDriverCapabilities calls GetVgpuDriverCapabilitiesFunc.\nfunc (mock *Interface) GetVgpuDriverCapabilities(vgpuDriverCapability nvml.VgpuDriverCapability) (bool, nvml.Return) {\n\tif mock.GetVgpuDriverCapabilitiesFunc == nil {\n\t\tpanic(\"Interface.GetVgpuDriverCapabilitiesFunc: method is nil but Interface.GetVgpuDriverCapabilities was just called\")\n\t}\n\tcallInfo := struct {\n\t\tVgpuDriverCapability nvml.VgpuDriverCapability\n\t}{\n\t\tVgpuDriverCapability: vgpuDriverCapability,\n\t}\n\tmock.lockGetVgpuDriverCapabilities.Lock()\n\tmock.calls.GetVgpuDriverCapabilities = append(mock.calls.GetVgpuDriverCapabilities, callInfo)\n\tmock.lockGetVgpuDriverCapabilities.Unlock()\n\treturn mock.GetVgpuDriverCapabilitiesFunc(vgpuDriverCapability)\n}\n\n// GetVgpuDriverCapabilitiesCalls gets all the calls that were made to GetVgpuDriverCapabilities.\n// Check the length with:\n//\n//\tlen(mockedInterface.GetVgpuDriverCapabilitiesCalls())\nfunc (mock *Interface) GetVgpuDriverCapabilitiesCalls() []struct {\n\tVgpuDriverCapability nvml.VgpuDriverCapability\n} {\n\tvar calls []struct {\n\t\tVgpuDriverCapability nvml.VgpuDriverCapability\n\t}\n\tmock.lockGetVgpuDriverCapabilities.RLock()\n\tcalls = mock.calls.GetVgpuDriverCapabilities\n\tmock.lockGetVgpuDriverCapabilities.RUnlock()\n\treturn calls\n}\n\n// GetVgpuVersion calls GetVgpuVersionFunc.\nfunc (mock *Interface) GetVgpuVersion() (nvml.VgpuVersion, nvml.VgpuVersion, nvml.Return) {\n\tif mock.GetVgpuVersionFunc == nil {\n\t\tpanic(\"Interface.GetVgpuVersionFunc: method is nil but Interface.GetVgpuVersion was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetVgpuVersion.Lock()\n\tmock.calls.GetVgpuVersion = append(mock.calls.GetVgpuVersion, callInfo)\n\tmock.lockGetVgpuVersion.Unlock()\n\treturn mock.GetVgpuVersionFunc()\n}\n\n// GetVgpuVersionCalls gets all the calls that were made to GetVgpuVersion.\n// Check the length with:\n//\n//\tlen(mockedInterface.GetVgpuVersionCalls())\nfunc (mock *Interface) GetVgpuVersionCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetVgpuVersion.RLock()\n\tcalls = mock.calls.GetVgpuVersion\n\tmock.lockGetVgpuVersion.RUnlock()\n\treturn calls\n}\n\n// GpmMetricsGet calls GpmMetricsGetFunc.\nfunc (mock *Interface) GpmMetricsGet(gpmMetricsGetType *nvml.GpmMetricsGetType) nvml.Return {\n\tif mock.GpmMetricsGetFunc == nil {\n\t\tpanic(\"Interface.GpmMetricsGetFunc: method is nil but Interface.GpmMetricsGet was just called\")\n\t}\n\tcallInfo := struct {\n\t\tGpmMetricsGetType *nvml.GpmMetricsGetType\n\t}{\n\t\tGpmMetricsGetType: gpmMetricsGetType,\n\t}\n\tmock.lockGpmMetricsGet.Lock()\n\tmock.calls.GpmMetricsGet = append(mock.calls.GpmMetricsGet, callInfo)\n\tmock.lockGpmMetricsGet.Unlock()\n\treturn mock.GpmMetricsGetFunc(gpmMetricsGetType)\n}\n\n// GpmMetricsGetCalls gets all the calls that were made to GpmMetricsGet.\n// Check the length with:\n//\n//\tlen(mockedInterface.GpmMetricsGetCalls())\nfunc (mock *Interface) GpmMetricsGetCalls() []struct {\n\tGpmMetricsGetType *nvml.GpmMetricsGetType\n} {\n\tvar calls []struct {\n\t\tGpmMetricsGetType *nvml.GpmMetricsGetType\n\t}\n\tmock.lockGpmMetricsGet.RLock()\n\tcalls = mock.calls.GpmMetricsGet\n\tmock.lockGpmMetricsGet.RUnlock()\n\treturn calls\n}\n\n// GpmMetricsGetV calls GpmMetricsGetVFunc.\nfunc (mock *Interface) GpmMetricsGetV(gpmMetricsGetType *nvml.GpmMetricsGetType) nvml.GpmMetricsGetVType {\n\tif mock.GpmMetricsGetVFunc == nil {\n\t\tpanic(\"Interface.GpmMetricsGetVFunc: method is nil but Interface.GpmMetricsGetV was just called\")\n\t}\n\tcallInfo := struct {\n\t\tGpmMetricsGetType *nvml.GpmMetricsGetType\n\t}{\n\t\tGpmMetricsGetType: gpmMetricsGetType,\n\t}\n\tmock.lockGpmMetricsGetV.Lock()\n\tmock.calls.GpmMetricsGetV = append(mock.calls.GpmMetricsGetV, callInfo)\n\tmock.lockGpmMetricsGetV.Unlock()\n\treturn mock.GpmMetricsGetVFunc(gpmMetricsGetType)\n}\n\n// GpmMetricsGetVCalls gets all the calls that were made to GpmMetricsGetV.\n// Check the length with:\n//\n//\tlen(mockedInterface.GpmMetricsGetVCalls())\nfunc (mock *Interface) GpmMetricsGetVCalls() []struct {\n\tGpmMetricsGetType *nvml.GpmMetricsGetType\n} {\n\tvar calls []struct {\n\t\tGpmMetricsGetType *nvml.GpmMetricsGetType\n\t}\n\tmock.lockGpmMetricsGetV.RLock()\n\tcalls = mock.calls.GpmMetricsGetV\n\tmock.lockGpmMetricsGetV.RUnlock()\n\treturn calls\n}\n\n// GpmMigSampleGet calls GpmMigSampleGetFunc.\nfunc (mock *Interface) GpmMigSampleGet(device nvml.Device, n int, gpmSample nvml.GpmSample) nvml.Return {\n\tif mock.GpmMigSampleGetFunc == nil {\n\t\tpanic(\"Interface.GpmMigSampleGetFunc: method is nil but Interface.GpmMigSampleGet was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice    nvml.Device\n\t\tN         int\n\t\tGpmSample nvml.GpmSample\n\t}{\n\t\tDevice:    device,\n\t\tN:         n,\n\t\tGpmSample: gpmSample,\n\t}\n\tmock.lockGpmMigSampleGet.Lock()\n\tmock.calls.GpmMigSampleGet = append(mock.calls.GpmMigSampleGet, callInfo)\n\tmock.lockGpmMigSampleGet.Unlock()\n\treturn mock.GpmMigSampleGetFunc(device, n, gpmSample)\n}\n\n// GpmMigSampleGetCalls gets all the calls that were made to GpmMigSampleGet.\n// Check the length with:\n//\n//\tlen(mockedInterface.GpmMigSampleGetCalls())\nfunc (mock *Interface) GpmMigSampleGetCalls() []struct {\n\tDevice    nvml.Device\n\tN         int\n\tGpmSample nvml.GpmSample\n} {\n\tvar calls []struct {\n\t\tDevice    nvml.Device\n\t\tN         int\n\t\tGpmSample nvml.GpmSample\n\t}\n\tmock.lockGpmMigSampleGet.RLock()\n\tcalls = mock.calls.GpmMigSampleGet\n\tmock.lockGpmMigSampleGet.RUnlock()\n\treturn calls\n}\n\n// GpmQueryDeviceSupport calls GpmQueryDeviceSupportFunc.\nfunc (mock *Interface) GpmQueryDeviceSupport(device nvml.Device) (nvml.GpmSupport, nvml.Return) {\n\tif mock.GpmQueryDeviceSupportFunc == nil {\n\t\tpanic(\"Interface.GpmQueryDeviceSupportFunc: method is nil but Interface.GpmQueryDeviceSupport was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockGpmQueryDeviceSupport.Lock()\n\tmock.calls.GpmQueryDeviceSupport = append(mock.calls.GpmQueryDeviceSupport, callInfo)\n\tmock.lockGpmQueryDeviceSupport.Unlock()\n\treturn mock.GpmQueryDeviceSupportFunc(device)\n}\n\n// GpmQueryDeviceSupportCalls gets all the calls that were made to GpmQueryDeviceSupport.\n// Check the length with:\n//\n//\tlen(mockedInterface.GpmQueryDeviceSupportCalls())\nfunc (mock *Interface) GpmQueryDeviceSupportCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockGpmQueryDeviceSupport.RLock()\n\tcalls = mock.calls.GpmQueryDeviceSupport\n\tmock.lockGpmQueryDeviceSupport.RUnlock()\n\treturn calls\n}\n\n// GpmQueryDeviceSupportV calls GpmQueryDeviceSupportVFunc.\nfunc (mock *Interface) GpmQueryDeviceSupportV(device nvml.Device) nvml.GpmSupportV {\n\tif mock.GpmQueryDeviceSupportVFunc == nil {\n\t\tpanic(\"Interface.GpmQueryDeviceSupportVFunc: method is nil but Interface.GpmQueryDeviceSupportV was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockGpmQueryDeviceSupportV.Lock()\n\tmock.calls.GpmQueryDeviceSupportV = append(mock.calls.GpmQueryDeviceSupportV, callInfo)\n\tmock.lockGpmQueryDeviceSupportV.Unlock()\n\treturn mock.GpmQueryDeviceSupportVFunc(device)\n}\n\n// GpmQueryDeviceSupportVCalls gets all the calls that were made to GpmQueryDeviceSupportV.\n// Check the length with:\n//\n//\tlen(mockedInterface.GpmQueryDeviceSupportVCalls())\nfunc (mock *Interface) GpmQueryDeviceSupportVCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockGpmQueryDeviceSupportV.RLock()\n\tcalls = mock.calls.GpmQueryDeviceSupportV\n\tmock.lockGpmQueryDeviceSupportV.RUnlock()\n\treturn calls\n}\n\n// GpmQueryIfStreamingEnabled calls GpmQueryIfStreamingEnabledFunc.\nfunc (mock *Interface) GpmQueryIfStreamingEnabled(device nvml.Device) (uint32, nvml.Return) {\n\tif mock.GpmQueryIfStreamingEnabledFunc == nil {\n\t\tpanic(\"Interface.GpmQueryIfStreamingEnabledFunc: method is nil but Interface.GpmQueryIfStreamingEnabled was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockGpmQueryIfStreamingEnabled.Lock()\n\tmock.calls.GpmQueryIfStreamingEnabled = append(mock.calls.GpmQueryIfStreamingEnabled, callInfo)\n\tmock.lockGpmQueryIfStreamingEnabled.Unlock()\n\treturn mock.GpmQueryIfStreamingEnabledFunc(device)\n}\n\n// GpmQueryIfStreamingEnabledCalls gets all the calls that were made to GpmQueryIfStreamingEnabled.\n// Check the length with:\n//\n//\tlen(mockedInterface.GpmQueryIfStreamingEnabledCalls())\nfunc (mock *Interface) GpmQueryIfStreamingEnabledCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockGpmQueryIfStreamingEnabled.RLock()\n\tcalls = mock.calls.GpmQueryIfStreamingEnabled\n\tmock.lockGpmQueryIfStreamingEnabled.RUnlock()\n\treturn calls\n}\n\n// GpmSampleAlloc calls GpmSampleAllocFunc.\nfunc (mock *Interface) GpmSampleAlloc() (nvml.GpmSample, nvml.Return) {\n\tif mock.GpmSampleAllocFunc == nil {\n\t\tpanic(\"Interface.GpmSampleAllocFunc: method is nil but Interface.GpmSampleAlloc was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGpmSampleAlloc.Lock()\n\tmock.calls.GpmSampleAlloc = append(mock.calls.GpmSampleAlloc, callInfo)\n\tmock.lockGpmSampleAlloc.Unlock()\n\treturn mock.GpmSampleAllocFunc()\n}\n\n// GpmSampleAllocCalls gets all the calls that were made to GpmSampleAlloc.\n// Check the length with:\n//\n//\tlen(mockedInterface.GpmSampleAllocCalls())\nfunc (mock *Interface) GpmSampleAllocCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGpmSampleAlloc.RLock()\n\tcalls = mock.calls.GpmSampleAlloc\n\tmock.lockGpmSampleAlloc.RUnlock()\n\treturn calls\n}\n\n// GpmSampleFree calls GpmSampleFreeFunc.\nfunc (mock *Interface) GpmSampleFree(gpmSample nvml.GpmSample) nvml.Return {\n\tif mock.GpmSampleFreeFunc == nil {\n\t\tpanic(\"Interface.GpmSampleFreeFunc: method is nil but Interface.GpmSampleFree was just called\")\n\t}\n\tcallInfo := struct {\n\t\tGpmSample nvml.GpmSample\n\t}{\n\t\tGpmSample: gpmSample,\n\t}\n\tmock.lockGpmSampleFree.Lock()\n\tmock.calls.GpmSampleFree = append(mock.calls.GpmSampleFree, callInfo)\n\tmock.lockGpmSampleFree.Unlock()\n\treturn mock.GpmSampleFreeFunc(gpmSample)\n}\n\n// GpmSampleFreeCalls gets all the calls that were made to GpmSampleFree.\n// Check the length with:\n//\n//\tlen(mockedInterface.GpmSampleFreeCalls())\nfunc (mock *Interface) GpmSampleFreeCalls() []struct {\n\tGpmSample nvml.GpmSample\n} {\n\tvar calls []struct {\n\t\tGpmSample nvml.GpmSample\n\t}\n\tmock.lockGpmSampleFree.RLock()\n\tcalls = mock.calls.GpmSampleFree\n\tmock.lockGpmSampleFree.RUnlock()\n\treturn calls\n}\n\n// GpmSampleGet calls GpmSampleGetFunc.\nfunc (mock *Interface) GpmSampleGet(device nvml.Device, gpmSample nvml.GpmSample) nvml.Return {\n\tif mock.GpmSampleGetFunc == nil {\n\t\tpanic(\"Interface.GpmSampleGetFunc: method is nil but Interface.GpmSampleGet was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice    nvml.Device\n\t\tGpmSample nvml.GpmSample\n\t}{\n\t\tDevice:    device,\n\t\tGpmSample: gpmSample,\n\t}\n\tmock.lockGpmSampleGet.Lock()\n\tmock.calls.GpmSampleGet = append(mock.calls.GpmSampleGet, callInfo)\n\tmock.lockGpmSampleGet.Unlock()\n\treturn mock.GpmSampleGetFunc(device, gpmSample)\n}\n\n// GpmSampleGetCalls gets all the calls that were made to GpmSampleGet.\n// Check the length with:\n//\n//\tlen(mockedInterface.GpmSampleGetCalls())\nfunc (mock *Interface) GpmSampleGetCalls() []struct {\n\tDevice    nvml.Device\n\tGpmSample nvml.GpmSample\n} {\n\tvar calls []struct {\n\t\tDevice    nvml.Device\n\t\tGpmSample nvml.GpmSample\n\t}\n\tmock.lockGpmSampleGet.RLock()\n\tcalls = mock.calls.GpmSampleGet\n\tmock.lockGpmSampleGet.RUnlock()\n\treturn calls\n}\n\n// GpmSetStreamingEnabled calls GpmSetStreamingEnabledFunc.\nfunc (mock *Interface) GpmSetStreamingEnabled(device nvml.Device, v uint32) nvml.Return {\n\tif mock.GpmSetStreamingEnabledFunc == nil {\n\t\tpanic(\"Interface.GpmSetStreamingEnabledFunc: method is nil but Interface.GpmSetStreamingEnabled was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t\tV      uint32\n\t}{\n\t\tDevice: device,\n\t\tV:      v,\n\t}\n\tmock.lockGpmSetStreamingEnabled.Lock()\n\tmock.calls.GpmSetStreamingEnabled = append(mock.calls.GpmSetStreamingEnabled, callInfo)\n\tmock.lockGpmSetStreamingEnabled.Unlock()\n\treturn mock.GpmSetStreamingEnabledFunc(device, v)\n}\n\n// GpmSetStreamingEnabledCalls gets all the calls that were made to GpmSetStreamingEnabled.\n// Check the length with:\n//\n//\tlen(mockedInterface.GpmSetStreamingEnabledCalls())\nfunc (mock *Interface) GpmSetStreamingEnabledCalls() []struct {\n\tDevice nvml.Device\n\tV      uint32\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t\tV      uint32\n\t}\n\tmock.lockGpmSetStreamingEnabled.RLock()\n\tcalls = mock.calls.GpmSetStreamingEnabled\n\tmock.lockGpmSetStreamingEnabled.RUnlock()\n\treturn calls\n}\n\n// GpuInstanceCreateComputeInstance calls GpuInstanceCreateComputeInstanceFunc.\nfunc (mock *Interface) GpuInstanceCreateComputeInstance(gpuInstance nvml.GpuInstance, computeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo) (nvml.ComputeInstance, nvml.Return) {\n\tif mock.GpuInstanceCreateComputeInstanceFunc == nil {\n\t\tpanic(\"Interface.GpuInstanceCreateComputeInstanceFunc: method is nil but Interface.GpuInstanceCreateComputeInstance was just called\")\n\t}\n\tcallInfo := struct {\n\t\tGpuInstance                nvml.GpuInstance\n\t\tComputeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo\n\t}{\n\t\tGpuInstance:                gpuInstance,\n\t\tComputeInstanceProfileInfo: computeInstanceProfileInfo,\n\t}\n\tmock.lockGpuInstanceCreateComputeInstance.Lock()\n\tmock.calls.GpuInstanceCreateComputeInstance = append(mock.calls.GpuInstanceCreateComputeInstance, callInfo)\n\tmock.lockGpuInstanceCreateComputeInstance.Unlock()\n\treturn mock.GpuInstanceCreateComputeInstanceFunc(gpuInstance, computeInstanceProfileInfo)\n}\n\n// GpuInstanceCreateComputeInstanceCalls gets all the calls that were made to GpuInstanceCreateComputeInstance.\n// Check the length with:\n//\n//\tlen(mockedInterface.GpuInstanceCreateComputeInstanceCalls())\nfunc (mock *Interface) GpuInstanceCreateComputeInstanceCalls() []struct {\n\tGpuInstance                nvml.GpuInstance\n\tComputeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo\n} {\n\tvar calls []struct {\n\t\tGpuInstance                nvml.GpuInstance\n\t\tComputeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo\n\t}\n\tmock.lockGpuInstanceCreateComputeInstance.RLock()\n\tcalls = mock.calls.GpuInstanceCreateComputeInstance\n\tmock.lockGpuInstanceCreateComputeInstance.RUnlock()\n\treturn calls\n}\n\n// GpuInstanceCreateComputeInstanceWithPlacement calls GpuInstanceCreateComputeInstanceWithPlacementFunc.\nfunc (mock *Interface) GpuInstanceCreateComputeInstanceWithPlacement(gpuInstance nvml.GpuInstance, computeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo, computeInstancePlacement *nvml.ComputeInstancePlacement) (nvml.ComputeInstance, nvml.Return) {\n\tif mock.GpuInstanceCreateComputeInstanceWithPlacementFunc == nil {\n\t\tpanic(\"Interface.GpuInstanceCreateComputeInstanceWithPlacementFunc: method is nil but Interface.GpuInstanceCreateComputeInstanceWithPlacement was just called\")\n\t}\n\tcallInfo := struct {\n\t\tGpuInstance                nvml.GpuInstance\n\t\tComputeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo\n\t\tComputeInstancePlacement   *nvml.ComputeInstancePlacement\n\t}{\n\t\tGpuInstance:                gpuInstance,\n\t\tComputeInstanceProfileInfo: computeInstanceProfileInfo,\n\t\tComputeInstancePlacement:   computeInstancePlacement,\n\t}\n\tmock.lockGpuInstanceCreateComputeInstanceWithPlacement.Lock()\n\tmock.calls.GpuInstanceCreateComputeInstanceWithPlacement = append(mock.calls.GpuInstanceCreateComputeInstanceWithPlacement, callInfo)\n\tmock.lockGpuInstanceCreateComputeInstanceWithPlacement.Unlock()\n\treturn mock.GpuInstanceCreateComputeInstanceWithPlacementFunc(gpuInstance, computeInstanceProfileInfo, computeInstancePlacement)\n}\n\n// GpuInstanceCreateComputeInstanceWithPlacementCalls gets all the calls that were made to GpuInstanceCreateComputeInstanceWithPlacement.\n// Check the length with:\n//\n//\tlen(mockedInterface.GpuInstanceCreateComputeInstanceWithPlacementCalls())\nfunc (mock *Interface) GpuInstanceCreateComputeInstanceWithPlacementCalls() []struct {\n\tGpuInstance                nvml.GpuInstance\n\tComputeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo\n\tComputeInstancePlacement   *nvml.ComputeInstancePlacement\n} {\n\tvar calls []struct {\n\t\tGpuInstance                nvml.GpuInstance\n\t\tComputeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo\n\t\tComputeInstancePlacement   *nvml.ComputeInstancePlacement\n\t}\n\tmock.lockGpuInstanceCreateComputeInstanceWithPlacement.RLock()\n\tcalls = mock.calls.GpuInstanceCreateComputeInstanceWithPlacement\n\tmock.lockGpuInstanceCreateComputeInstanceWithPlacement.RUnlock()\n\treturn calls\n}\n\n// GpuInstanceDestroy calls GpuInstanceDestroyFunc.\nfunc (mock *Interface) GpuInstanceDestroy(gpuInstance nvml.GpuInstance) nvml.Return {\n\tif mock.GpuInstanceDestroyFunc == nil {\n\t\tpanic(\"Interface.GpuInstanceDestroyFunc: method is nil but Interface.GpuInstanceDestroy was just called\")\n\t}\n\tcallInfo := struct {\n\t\tGpuInstance nvml.GpuInstance\n\t}{\n\t\tGpuInstance: gpuInstance,\n\t}\n\tmock.lockGpuInstanceDestroy.Lock()\n\tmock.calls.GpuInstanceDestroy = append(mock.calls.GpuInstanceDestroy, callInfo)\n\tmock.lockGpuInstanceDestroy.Unlock()\n\treturn mock.GpuInstanceDestroyFunc(gpuInstance)\n}\n\n// GpuInstanceDestroyCalls gets all the calls that were made to GpuInstanceDestroy.\n// Check the length with:\n//\n//\tlen(mockedInterface.GpuInstanceDestroyCalls())\nfunc (mock *Interface) GpuInstanceDestroyCalls() []struct {\n\tGpuInstance nvml.GpuInstance\n} {\n\tvar calls []struct {\n\t\tGpuInstance nvml.GpuInstance\n\t}\n\tmock.lockGpuInstanceDestroy.RLock()\n\tcalls = mock.calls.GpuInstanceDestroy\n\tmock.lockGpuInstanceDestroy.RUnlock()\n\treturn calls\n}\n\n// GpuInstanceGetActiveVgpus calls GpuInstanceGetActiveVgpusFunc.\nfunc (mock *Interface) GpuInstanceGetActiveVgpus(gpuInstance nvml.GpuInstance) (nvml.ActiveVgpuInstanceInfo, nvml.Return) {\n\tif mock.GpuInstanceGetActiveVgpusFunc == nil {\n\t\tpanic(\"Interface.GpuInstanceGetActiveVgpusFunc: method is nil but Interface.GpuInstanceGetActiveVgpus was just called\")\n\t}\n\tcallInfo := struct {\n\t\tGpuInstance nvml.GpuInstance\n\t}{\n\t\tGpuInstance: gpuInstance,\n\t}\n\tmock.lockGpuInstanceGetActiveVgpus.Lock()\n\tmock.calls.GpuInstanceGetActiveVgpus = append(mock.calls.GpuInstanceGetActiveVgpus, callInfo)\n\tmock.lockGpuInstanceGetActiveVgpus.Unlock()\n\treturn mock.GpuInstanceGetActiveVgpusFunc(gpuInstance)\n}\n\n// GpuInstanceGetActiveVgpusCalls gets all the calls that were made to GpuInstanceGetActiveVgpus.\n// Check the length with:\n//\n//\tlen(mockedInterface.GpuInstanceGetActiveVgpusCalls())\nfunc (mock *Interface) GpuInstanceGetActiveVgpusCalls() []struct {\n\tGpuInstance nvml.GpuInstance\n} {\n\tvar calls []struct {\n\t\tGpuInstance nvml.GpuInstance\n\t}\n\tmock.lockGpuInstanceGetActiveVgpus.RLock()\n\tcalls = mock.calls.GpuInstanceGetActiveVgpus\n\tmock.lockGpuInstanceGetActiveVgpus.RUnlock()\n\treturn calls\n}\n\n// GpuInstanceGetComputeInstanceById calls GpuInstanceGetComputeInstanceByIdFunc.\nfunc (mock *Interface) GpuInstanceGetComputeInstanceById(gpuInstance nvml.GpuInstance, n int) (nvml.ComputeInstance, nvml.Return) {\n\tif mock.GpuInstanceGetComputeInstanceByIdFunc == nil {\n\t\tpanic(\"Interface.GpuInstanceGetComputeInstanceByIdFunc: method is nil but Interface.GpuInstanceGetComputeInstanceById was just called\")\n\t}\n\tcallInfo := struct {\n\t\tGpuInstance nvml.GpuInstance\n\t\tN           int\n\t}{\n\t\tGpuInstance: gpuInstance,\n\t\tN:           n,\n\t}\n\tmock.lockGpuInstanceGetComputeInstanceById.Lock()\n\tmock.calls.GpuInstanceGetComputeInstanceById = append(mock.calls.GpuInstanceGetComputeInstanceById, callInfo)\n\tmock.lockGpuInstanceGetComputeInstanceById.Unlock()\n\treturn mock.GpuInstanceGetComputeInstanceByIdFunc(gpuInstance, n)\n}\n\n// GpuInstanceGetComputeInstanceByIdCalls gets all the calls that were made to GpuInstanceGetComputeInstanceById.\n// Check the length with:\n//\n//\tlen(mockedInterface.GpuInstanceGetComputeInstanceByIdCalls())\nfunc (mock *Interface) GpuInstanceGetComputeInstanceByIdCalls() []struct {\n\tGpuInstance nvml.GpuInstance\n\tN           int\n} {\n\tvar calls []struct {\n\t\tGpuInstance nvml.GpuInstance\n\t\tN           int\n\t}\n\tmock.lockGpuInstanceGetComputeInstanceById.RLock()\n\tcalls = mock.calls.GpuInstanceGetComputeInstanceById\n\tmock.lockGpuInstanceGetComputeInstanceById.RUnlock()\n\treturn calls\n}\n\n// GpuInstanceGetComputeInstancePossiblePlacements calls GpuInstanceGetComputeInstancePossiblePlacementsFunc.\nfunc (mock *Interface) GpuInstanceGetComputeInstancePossiblePlacements(gpuInstance nvml.GpuInstance, computeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo) ([]nvml.ComputeInstancePlacement, nvml.Return) {\n\tif mock.GpuInstanceGetComputeInstancePossiblePlacementsFunc == nil {\n\t\tpanic(\"Interface.GpuInstanceGetComputeInstancePossiblePlacementsFunc: method is nil but Interface.GpuInstanceGetComputeInstancePossiblePlacements was just called\")\n\t}\n\tcallInfo := struct {\n\t\tGpuInstance                nvml.GpuInstance\n\t\tComputeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo\n\t}{\n\t\tGpuInstance:                gpuInstance,\n\t\tComputeInstanceProfileInfo: computeInstanceProfileInfo,\n\t}\n\tmock.lockGpuInstanceGetComputeInstancePossiblePlacements.Lock()\n\tmock.calls.GpuInstanceGetComputeInstancePossiblePlacements = append(mock.calls.GpuInstanceGetComputeInstancePossiblePlacements, callInfo)\n\tmock.lockGpuInstanceGetComputeInstancePossiblePlacements.Unlock()\n\treturn mock.GpuInstanceGetComputeInstancePossiblePlacementsFunc(gpuInstance, computeInstanceProfileInfo)\n}\n\n// GpuInstanceGetComputeInstancePossiblePlacementsCalls gets all the calls that were made to GpuInstanceGetComputeInstancePossiblePlacements.\n// Check the length with:\n//\n//\tlen(mockedInterface.GpuInstanceGetComputeInstancePossiblePlacementsCalls())\nfunc (mock *Interface) GpuInstanceGetComputeInstancePossiblePlacementsCalls() []struct {\n\tGpuInstance                nvml.GpuInstance\n\tComputeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo\n} {\n\tvar calls []struct {\n\t\tGpuInstance                nvml.GpuInstance\n\t\tComputeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo\n\t}\n\tmock.lockGpuInstanceGetComputeInstancePossiblePlacements.RLock()\n\tcalls = mock.calls.GpuInstanceGetComputeInstancePossiblePlacements\n\tmock.lockGpuInstanceGetComputeInstancePossiblePlacements.RUnlock()\n\treturn calls\n}\n\n// GpuInstanceGetComputeInstanceProfileInfo calls GpuInstanceGetComputeInstanceProfileInfoFunc.\nfunc (mock *Interface) GpuInstanceGetComputeInstanceProfileInfo(gpuInstance nvml.GpuInstance, n1 int, n2 int) (nvml.ComputeInstanceProfileInfo, nvml.Return) {\n\tif mock.GpuInstanceGetComputeInstanceProfileInfoFunc == nil {\n\t\tpanic(\"Interface.GpuInstanceGetComputeInstanceProfileInfoFunc: method is nil but Interface.GpuInstanceGetComputeInstanceProfileInfo was just called\")\n\t}\n\tcallInfo := struct {\n\t\tGpuInstance nvml.GpuInstance\n\t\tN1          int\n\t\tN2          int\n\t}{\n\t\tGpuInstance: gpuInstance,\n\t\tN1:          n1,\n\t\tN2:          n2,\n\t}\n\tmock.lockGpuInstanceGetComputeInstanceProfileInfo.Lock()\n\tmock.calls.GpuInstanceGetComputeInstanceProfileInfo = append(mock.calls.GpuInstanceGetComputeInstanceProfileInfo, callInfo)\n\tmock.lockGpuInstanceGetComputeInstanceProfileInfo.Unlock()\n\treturn mock.GpuInstanceGetComputeInstanceProfileInfoFunc(gpuInstance, n1, n2)\n}\n\n// GpuInstanceGetComputeInstanceProfileInfoCalls gets all the calls that were made to GpuInstanceGetComputeInstanceProfileInfo.\n// Check the length with:\n//\n//\tlen(mockedInterface.GpuInstanceGetComputeInstanceProfileInfoCalls())\nfunc (mock *Interface) GpuInstanceGetComputeInstanceProfileInfoCalls() []struct {\n\tGpuInstance nvml.GpuInstance\n\tN1          int\n\tN2          int\n} {\n\tvar calls []struct {\n\t\tGpuInstance nvml.GpuInstance\n\t\tN1          int\n\t\tN2          int\n\t}\n\tmock.lockGpuInstanceGetComputeInstanceProfileInfo.RLock()\n\tcalls = mock.calls.GpuInstanceGetComputeInstanceProfileInfo\n\tmock.lockGpuInstanceGetComputeInstanceProfileInfo.RUnlock()\n\treturn calls\n}\n\n// GpuInstanceGetComputeInstanceProfileInfoV calls GpuInstanceGetComputeInstanceProfileInfoVFunc.\nfunc (mock *Interface) GpuInstanceGetComputeInstanceProfileInfoV(gpuInstance nvml.GpuInstance, n1 int, n2 int) nvml.ComputeInstanceProfileInfoHandler {\n\tif mock.GpuInstanceGetComputeInstanceProfileInfoVFunc == nil {\n\t\tpanic(\"Interface.GpuInstanceGetComputeInstanceProfileInfoVFunc: method is nil but Interface.GpuInstanceGetComputeInstanceProfileInfoV was just called\")\n\t}\n\tcallInfo := struct {\n\t\tGpuInstance nvml.GpuInstance\n\t\tN1          int\n\t\tN2          int\n\t}{\n\t\tGpuInstance: gpuInstance,\n\t\tN1:          n1,\n\t\tN2:          n2,\n\t}\n\tmock.lockGpuInstanceGetComputeInstanceProfileInfoV.Lock()\n\tmock.calls.GpuInstanceGetComputeInstanceProfileInfoV = append(mock.calls.GpuInstanceGetComputeInstanceProfileInfoV, callInfo)\n\tmock.lockGpuInstanceGetComputeInstanceProfileInfoV.Unlock()\n\treturn mock.GpuInstanceGetComputeInstanceProfileInfoVFunc(gpuInstance, n1, n2)\n}\n\n// GpuInstanceGetComputeInstanceProfileInfoVCalls gets all the calls that were made to GpuInstanceGetComputeInstanceProfileInfoV.\n// Check the length with:\n//\n//\tlen(mockedInterface.GpuInstanceGetComputeInstanceProfileInfoVCalls())\nfunc (mock *Interface) GpuInstanceGetComputeInstanceProfileInfoVCalls() []struct {\n\tGpuInstance nvml.GpuInstance\n\tN1          int\n\tN2          int\n} {\n\tvar calls []struct {\n\t\tGpuInstance nvml.GpuInstance\n\t\tN1          int\n\t\tN2          int\n\t}\n\tmock.lockGpuInstanceGetComputeInstanceProfileInfoV.RLock()\n\tcalls = mock.calls.GpuInstanceGetComputeInstanceProfileInfoV\n\tmock.lockGpuInstanceGetComputeInstanceProfileInfoV.RUnlock()\n\treturn calls\n}\n\n// GpuInstanceGetComputeInstanceRemainingCapacity calls GpuInstanceGetComputeInstanceRemainingCapacityFunc.\nfunc (mock *Interface) GpuInstanceGetComputeInstanceRemainingCapacity(gpuInstance nvml.GpuInstance, computeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo) (int, nvml.Return) {\n\tif mock.GpuInstanceGetComputeInstanceRemainingCapacityFunc == nil {\n\t\tpanic(\"Interface.GpuInstanceGetComputeInstanceRemainingCapacityFunc: method is nil but Interface.GpuInstanceGetComputeInstanceRemainingCapacity was just called\")\n\t}\n\tcallInfo := struct {\n\t\tGpuInstance                nvml.GpuInstance\n\t\tComputeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo\n\t}{\n\t\tGpuInstance:                gpuInstance,\n\t\tComputeInstanceProfileInfo: computeInstanceProfileInfo,\n\t}\n\tmock.lockGpuInstanceGetComputeInstanceRemainingCapacity.Lock()\n\tmock.calls.GpuInstanceGetComputeInstanceRemainingCapacity = append(mock.calls.GpuInstanceGetComputeInstanceRemainingCapacity, callInfo)\n\tmock.lockGpuInstanceGetComputeInstanceRemainingCapacity.Unlock()\n\treturn mock.GpuInstanceGetComputeInstanceRemainingCapacityFunc(gpuInstance, computeInstanceProfileInfo)\n}\n\n// GpuInstanceGetComputeInstanceRemainingCapacityCalls gets all the calls that were made to GpuInstanceGetComputeInstanceRemainingCapacity.\n// Check the length with:\n//\n//\tlen(mockedInterface.GpuInstanceGetComputeInstanceRemainingCapacityCalls())\nfunc (mock *Interface) GpuInstanceGetComputeInstanceRemainingCapacityCalls() []struct {\n\tGpuInstance                nvml.GpuInstance\n\tComputeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo\n} {\n\tvar calls []struct {\n\t\tGpuInstance                nvml.GpuInstance\n\t\tComputeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo\n\t}\n\tmock.lockGpuInstanceGetComputeInstanceRemainingCapacity.RLock()\n\tcalls = mock.calls.GpuInstanceGetComputeInstanceRemainingCapacity\n\tmock.lockGpuInstanceGetComputeInstanceRemainingCapacity.RUnlock()\n\treturn calls\n}\n\n// GpuInstanceGetComputeInstances calls GpuInstanceGetComputeInstancesFunc.\nfunc (mock *Interface) GpuInstanceGetComputeInstances(gpuInstance nvml.GpuInstance, computeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo) ([]nvml.ComputeInstance, nvml.Return) {\n\tif mock.GpuInstanceGetComputeInstancesFunc == nil {\n\t\tpanic(\"Interface.GpuInstanceGetComputeInstancesFunc: method is nil but Interface.GpuInstanceGetComputeInstances was just called\")\n\t}\n\tcallInfo := struct {\n\t\tGpuInstance                nvml.GpuInstance\n\t\tComputeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo\n\t}{\n\t\tGpuInstance:                gpuInstance,\n\t\tComputeInstanceProfileInfo: computeInstanceProfileInfo,\n\t}\n\tmock.lockGpuInstanceGetComputeInstances.Lock()\n\tmock.calls.GpuInstanceGetComputeInstances = append(mock.calls.GpuInstanceGetComputeInstances, callInfo)\n\tmock.lockGpuInstanceGetComputeInstances.Unlock()\n\treturn mock.GpuInstanceGetComputeInstancesFunc(gpuInstance, computeInstanceProfileInfo)\n}\n\n// GpuInstanceGetComputeInstancesCalls gets all the calls that were made to GpuInstanceGetComputeInstances.\n// Check the length with:\n//\n//\tlen(mockedInterface.GpuInstanceGetComputeInstancesCalls())\nfunc (mock *Interface) GpuInstanceGetComputeInstancesCalls() []struct {\n\tGpuInstance                nvml.GpuInstance\n\tComputeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo\n} {\n\tvar calls []struct {\n\t\tGpuInstance                nvml.GpuInstance\n\t\tComputeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo\n\t}\n\tmock.lockGpuInstanceGetComputeInstances.RLock()\n\tcalls = mock.calls.GpuInstanceGetComputeInstances\n\tmock.lockGpuInstanceGetComputeInstances.RUnlock()\n\treturn calls\n}\n\n// GpuInstanceGetCreatableVgpus calls GpuInstanceGetCreatableVgpusFunc.\nfunc (mock *Interface) GpuInstanceGetCreatableVgpus(gpuInstance nvml.GpuInstance) (nvml.VgpuTypeIdInfo, nvml.Return) {\n\tif mock.GpuInstanceGetCreatableVgpusFunc == nil {\n\t\tpanic(\"Interface.GpuInstanceGetCreatableVgpusFunc: method is nil but Interface.GpuInstanceGetCreatableVgpus was just called\")\n\t}\n\tcallInfo := struct {\n\t\tGpuInstance nvml.GpuInstance\n\t}{\n\t\tGpuInstance: gpuInstance,\n\t}\n\tmock.lockGpuInstanceGetCreatableVgpus.Lock()\n\tmock.calls.GpuInstanceGetCreatableVgpus = append(mock.calls.GpuInstanceGetCreatableVgpus, callInfo)\n\tmock.lockGpuInstanceGetCreatableVgpus.Unlock()\n\treturn mock.GpuInstanceGetCreatableVgpusFunc(gpuInstance)\n}\n\n// GpuInstanceGetCreatableVgpusCalls gets all the calls that were made to GpuInstanceGetCreatableVgpus.\n// Check the length with:\n//\n//\tlen(mockedInterface.GpuInstanceGetCreatableVgpusCalls())\nfunc (mock *Interface) GpuInstanceGetCreatableVgpusCalls() []struct {\n\tGpuInstance nvml.GpuInstance\n} {\n\tvar calls []struct {\n\t\tGpuInstance nvml.GpuInstance\n\t}\n\tmock.lockGpuInstanceGetCreatableVgpus.RLock()\n\tcalls = mock.calls.GpuInstanceGetCreatableVgpus\n\tmock.lockGpuInstanceGetCreatableVgpus.RUnlock()\n\treturn calls\n}\n\n// GpuInstanceGetInfo calls GpuInstanceGetInfoFunc.\nfunc (mock *Interface) GpuInstanceGetInfo(gpuInstance nvml.GpuInstance) (nvml.GpuInstanceInfo, nvml.Return) {\n\tif mock.GpuInstanceGetInfoFunc == nil {\n\t\tpanic(\"Interface.GpuInstanceGetInfoFunc: method is nil but Interface.GpuInstanceGetInfo was just called\")\n\t}\n\tcallInfo := struct {\n\t\tGpuInstance nvml.GpuInstance\n\t}{\n\t\tGpuInstance: gpuInstance,\n\t}\n\tmock.lockGpuInstanceGetInfo.Lock()\n\tmock.calls.GpuInstanceGetInfo = append(mock.calls.GpuInstanceGetInfo, callInfo)\n\tmock.lockGpuInstanceGetInfo.Unlock()\n\treturn mock.GpuInstanceGetInfoFunc(gpuInstance)\n}\n\n// GpuInstanceGetInfoCalls gets all the calls that were made to GpuInstanceGetInfo.\n// Check the length with:\n//\n//\tlen(mockedInterface.GpuInstanceGetInfoCalls())\nfunc (mock *Interface) GpuInstanceGetInfoCalls() []struct {\n\tGpuInstance nvml.GpuInstance\n} {\n\tvar calls []struct {\n\t\tGpuInstance nvml.GpuInstance\n\t}\n\tmock.lockGpuInstanceGetInfo.RLock()\n\tcalls = mock.calls.GpuInstanceGetInfo\n\tmock.lockGpuInstanceGetInfo.RUnlock()\n\treturn calls\n}\n\n// GpuInstanceGetVgpuHeterogeneousMode calls GpuInstanceGetVgpuHeterogeneousModeFunc.\nfunc (mock *Interface) GpuInstanceGetVgpuHeterogeneousMode(gpuInstance nvml.GpuInstance) (nvml.VgpuHeterogeneousMode, nvml.Return) {\n\tif mock.GpuInstanceGetVgpuHeterogeneousModeFunc == nil {\n\t\tpanic(\"Interface.GpuInstanceGetVgpuHeterogeneousModeFunc: method is nil but Interface.GpuInstanceGetVgpuHeterogeneousMode was just called\")\n\t}\n\tcallInfo := struct {\n\t\tGpuInstance nvml.GpuInstance\n\t}{\n\t\tGpuInstance: gpuInstance,\n\t}\n\tmock.lockGpuInstanceGetVgpuHeterogeneousMode.Lock()\n\tmock.calls.GpuInstanceGetVgpuHeterogeneousMode = append(mock.calls.GpuInstanceGetVgpuHeterogeneousMode, callInfo)\n\tmock.lockGpuInstanceGetVgpuHeterogeneousMode.Unlock()\n\treturn mock.GpuInstanceGetVgpuHeterogeneousModeFunc(gpuInstance)\n}\n\n// GpuInstanceGetVgpuHeterogeneousModeCalls gets all the calls that were made to GpuInstanceGetVgpuHeterogeneousMode.\n// Check the length with:\n//\n//\tlen(mockedInterface.GpuInstanceGetVgpuHeterogeneousModeCalls())\nfunc (mock *Interface) GpuInstanceGetVgpuHeterogeneousModeCalls() []struct {\n\tGpuInstance nvml.GpuInstance\n} {\n\tvar calls []struct {\n\t\tGpuInstance nvml.GpuInstance\n\t}\n\tmock.lockGpuInstanceGetVgpuHeterogeneousMode.RLock()\n\tcalls = mock.calls.GpuInstanceGetVgpuHeterogeneousMode\n\tmock.lockGpuInstanceGetVgpuHeterogeneousMode.RUnlock()\n\treturn calls\n}\n\n// GpuInstanceGetVgpuSchedulerLog calls GpuInstanceGetVgpuSchedulerLogFunc.\nfunc (mock *Interface) GpuInstanceGetVgpuSchedulerLog(gpuInstance nvml.GpuInstance) (nvml.VgpuSchedulerLogInfo, nvml.Return) {\n\tif mock.GpuInstanceGetVgpuSchedulerLogFunc == nil {\n\t\tpanic(\"Interface.GpuInstanceGetVgpuSchedulerLogFunc: method is nil but Interface.GpuInstanceGetVgpuSchedulerLog was just called\")\n\t}\n\tcallInfo := struct {\n\t\tGpuInstance nvml.GpuInstance\n\t}{\n\t\tGpuInstance: gpuInstance,\n\t}\n\tmock.lockGpuInstanceGetVgpuSchedulerLog.Lock()\n\tmock.calls.GpuInstanceGetVgpuSchedulerLog = append(mock.calls.GpuInstanceGetVgpuSchedulerLog, callInfo)\n\tmock.lockGpuInstanceGetVgpuSchedulerLog.Unlock()\n\treturn mock.GpuInstanceGetVgpuSchedulerLogFunc(gpuInstance)\n}\n\n// GpuInstanceGetVgpuSchedulerLogCalls gets all the calls that were made to GpuInstanceGetVgpuSchedulerLog.\n// Check the length with:\n//\n//\tlen(mockedInterface.GpuInstanceGetVgpuSchedulerLogCalls())\nfunc (mock *Interface) GpuInstanceGetVgpuSchedulerLogCalls() []struct {\n\tGpuInstance nvml.GpuInstance\n} {\n\tvar calls []struct {\n\t\tGpuInstance nvml.GpuInstance\n\t}\n\tmock.lockGpuInstanceGetVgpuSchedulerLog.RLock()\n\tcalls = mock.calls.GpuInstanceGetVgpuSchedulerLog\n\tmock.lockGpuInstanceGetVgpuSchedulerLog.RUnlock()\n\treturn calls\n}\n\n// GpuInstanceGetVgpuSchedulerState calls GpuInstanceGetVgpuSchedulerStateFunc.\nfunc (mock *Interface) GpuInstanceGetVgpuSchedulerState(gpuInstance nvml.GpuInstance) (nvml.VgpuSchedulerStateInfo, nvml.Return) {\n\tif mock.GpuInstanceGetVgpuSchedulerStateFunc == nil {\n\t\tpanic(\"Interface.GpuInstanceGetVgpuSchedulerStateFunc: method is nil but Interface.GpuInstanceGetVgpuSchedulerState was just called\")\n\t}\n\tcallInfo := struct {\n\t\tGpuInstance nvml.GpuInstance\n\t}{\n\t\tGpuInstance: gpuInstance,\n\t}\n\tmock.lockGpuInstanceGetVgpuSchedulerState.Lock()\n\tmock.calls.GpuInstanceGetVgpuSchedulerState = append(mock.calls.GpuInstanceGetVgpuSchedulerState, callInfo)\n\tmock.lockGpuInstanceGetVgpuSchedulerState.Unlock()\n\treturn mock.GpuInstanceGetVgpuSchedulerStateFunc(gpuInstance)\n}\n\n// GpuInstanceGetVgpuSchedulerStateCalls gets all the calls that were made to GpuInstanceGetVgpuSchedulerState.\n// Check the length with:\n//\n//\tlen(mockedInterface.GpuInstanceGetVgpuSchedulerStateCalls())\nfunc (mock *Interface) GpuInstanceGetVgpuSchedulerStateCalls() []struct {\n\tGpuInstance nvml.GpuInstance\n} {\n\tvar calls []struct {\n\t\tGpuInstance nvml.GpuInstance\n\t}\n\tmock.lockGpuInstanceGetVgpuSchedulerState.RLock()\n\tcalls = mock.calls.GpuInstanceGetVgpuSchedulerState\n\tmock.lockGpuInstanceGetVgpuSchedulerState.RUnlock()\n\treturn calls\n}\n\n// GpuInstanceGetVgpuTypeCreatablePlacements calls GpuInstanceGetVgpuTypeCreatablePlacementsFunc.\nfunc (mock *Interface) GpuInstanceGetVgpuTypeCreatablePlacements(gpuInstance nvml.GpuInstance) (nvml.VgpuCreatablePlacementInfo, nvml.Return) {\n\tif mock.GpuInstanceGetVgpuTypeCreatablePlacementsFunc == nil {\n\t\tpanic(\"Interface.GpuInstanceGetVgpuTypeCreatablePlacementsFunc: method is nil but Interface.GpuInstanceGetVgpuTypeCreatablePlacements was just called\")\n\t}\n\tcallInfo := struct {\n\t\tGpuInstance nvml.GpuInstance\n\t}{\n\t\tGpuInstance: gpuInstance,\n\t}\n\tmock.lockGpuInstanceGetVgpuTypeCreatablePlacements.Lock()\n\tmock.calls.GpuInstanceGetVgpuTypeCreatablePlacements = append(mock.calls.GpuInstanceGetVgpuTypeCreatablePlacements, callInfo)\n\tmock.lockGpuInstanceGetVgpuTypeCreatablePlacements.Unlock()\n\treturn mock.GpuInstanceGetVgpuTypeCreatablePlacementsFunc(gpuInstance)\n}\n\n// GpuInstanceGetVgpuTypeCreatablePlacementsCalls gets all the calls that were made to GpuInstanceGetVgpuTypeCreatablePlacements.\n// Check the length with:\n//\n//\tlen(mockedInterface.GpuInstanceGetVgpuTypeCreatablePlacementsCalls())\nfunc (mock *Interface) GpuInstanceGetVgpuTypeCreatablePlacementsCalls() []struct {\n\tGpuInstance nvml.GpuInstance\n} {\n\tvar calls []struct {\n\t\tGpuInstance nvml.GpuInstance\n\t}\n\tmock.lockGpuInstanceGetVgpuTypeCreatablePlacements.RLock()\n\tcalls = mock.calls.GpuInstanceGetVgpuTypeCreatablePlacements\n\tmock.lockGpuInstanceGetVgpuTypeCreatablePlacements.RUnlock()\n\treturn calls\n}\n\n// GpuInstanceSetVgpuHeterogeneousMode calls GpuInstanceSetVgpuHeterogeneousModeFunc.\nfunc (mock *Interface) GpuInstanceSetVgpuHeterogeneousMode(gpuInstance nvml.GpuInstance, vgpuHeterogeneousMode *nvml.VgpuHeterogeneousMode) nvml.Return {\n\tif mock.GpuInstanceSetVgpuHeterogeneousModeFunc == nil {\n\t\tpanic(\"Interface.GpuInstanceSetVgpuHeterogeneousModeFunc: method is nil but Interface.GpuInstanceSetVgpuHeterogeneousMode was just called\")\n\t}\n\tcallInfo := struct {\n\t\tGpuInstance           nvml.GpuInstance\n\t\tVgpuHeterogeneousMode *nvml.VgpuHeterogeneousMode\n\t}{\n\t\tGpuInstance:           gpuInstance,\n\t\tVgpuHeterogeneousMode: vgpuHeterogeneousMode,\n\t}\n\tmock.lockGpuInstanceSetVgpuHeterogeneousMode.Lock()\n\tmock.calls.GpuInstanceSetVgpuHeterogeneousMode = append(mock.calls.GpuInstanceSetVgpuHeterogeneousMode, callInfo)\n\tmock.lockGpuInstanceSetVgpuHeterogeneousMode.Unlock()\n\treturn mock.GpuInstanceSetVgpuHeterogeneousModeFunc(gpuInstance, vgpuHeterogeneousMode)\n}\n\n// GpuInstanceSetVgpuHeterogeneousModeCalls gets all the calls that were made to GpuInstanceSetVgpuHeterogeneousMode.\n// Check the length with:\n//\n//\tlen(mockedInterface.GpuInstanceSetVgpuHeterogeneousModeCalls())\nfunc (mock *Interface) GpuInstanceSetVgpuHeterogeneousModeCalls() []struct {\n\tGpuInstance           nvml.GpuInstance\n\tVgpuHeterogeneousMode *nvml.VgpuHeterogeneousMode\n} {\n\tvar calls []struct {\n\t\tGpuInstance           nvml.GpuInstance\n\t\tVgpuHeterogeneousMode *nvml.VgpuHeterogeneousMode\n\t}\n\tmock.lockGpuInstanceSetVgpuHeterogeneousMode.RLock()\n\tcalls = mock.calls.GpuInstanceSetVgpuHeterogeneousMode\n\tmock.lockGpuInstanceSetVgpuHeterogeneousMode.RUnlock()\n\treturn calls\n}\n\n// GpuInstanceSetVgpuSchedulerState calls GpuInstanceSetVgpuSchedulerStateFunc.\nfunc (mock *Interface) GpuInstanceSetVgpuSchedulerState(gpuInstance nvml.GpuInstance, vgpuSchedulerState *nvml.VgpuSchedulerState) nvml.Return {\n\tif mock.GpuInstanceSetVgpuSchedulerStateFunc == nil {\n\t\tpanic(\"Interface.GpuInstanceSetVgpuSchedulerStateFunc: method is nil but Interface.GpuInstanceSetVgpuSchedulerState was just called\")\n\t}\n\tcallInfo := struct {\n\t\tGpuInstance        nvml.GpuInstance\n\t\tVgpuSchedulerState *nvml.VgpuSchedulerState\n\t}{\n\t\tGpuInstance:        gpuInstance,\n\t\tVgpuSchedulerState: vgpuSchedulerState,\n\t}\n\tmock.lockGpuInstanceSetVgpuSchedulerState.Lock()\n\tmock.calls.GpuInstanceSetVgpuSchedulerState = append(mock.calls.GpuInstanceSetVgpuSchedulerState, callInfo)\n\tmock.lockGpuInstanceSetVgpuSchedulerState.Unlock()\n\treturn mock.GpuInstanceSetVgpuSchedulerStateFunc(gpuInstance, vgpuSchedulerState)\n}\n\n// GpuInstanceSetVgpuSchedulerStateCalls gets all the calls that were made to GpuInstanceSetVgpuSchedulerState.\n// Check the length with:\n//\n//\tlen(mockedInterface.GpuInstanceSetVgpuSchedulerStateCalls())\nfunc (mock *Interface) GpuInstanceSetVgpuSchedulerStateCalls() []struct {\n\tGpuInstance        nvml.GpuInstance\n\tVgpuSchedulerState *nvml.VgpuSchedulerState\n} {\n\tvar calls []struct {\n\t\tGpuInstance        nvml.GpuInstance\n\t\tVgpuSchedulerState *nvml.VgpuSchedulerState\n\t}\n\tmock.lockGpuInstanceSetVgpuSchedulerState.RLock()\n\tcalls = mock.calls.GpuInstanceSetVgpuSchedulerState\n\tmock.lockGpuInstanceSetVgpuSchedulerState.RUnlock()\n\treturn calls\n}\n\n// Init calls InitFunc.\nfunc (mock *Interface) Init() nvml.Return {\n\tif mock.InitFunc == nil {\n\t\tpanic(\"Interface.InitFunc: method is nil but Interface.Init was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockInit.Lock()\n\tmock.calls.Init = append(mock.calls.Init, callInfo)\n\tmock.lockInit.Unlock()\n\treturn mock.InitFunc()\n}\n\n// InitCalls gets all the calls that were made to Init.\n// Check the length with:\n//\n//\tlen(mockedInterface.InitCalls())\nfunc (mock *Interface) InitCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockInit.RLock()\n\tcalls = mock.calls.Init\n\tmock.lockInit.RUnlock()\n\treturn calls\n}\n\n// InitWithFlags calls InitWithFlagsFunc.\nfunc (mock *Interface) InitWithFlags(v uint32) nvml.Return {\n\tif mock.InitWithFlagsFunc == nil {\n\t\tpanic(\"Interface.InitWithFlagsFunc: method is nil but Interface.InitWithFlags was just called\")\n\t}\n\tcallInfo := struct {\n\t\tV uint32\n\t}{\n\t\tV: v,\n\t}\n\tmock.lockInitWithFlags.Lock()\n\tmock.calls.InitWithFlags = append(mock.calls.InitWithFlags, callInfo)\n\tmock.lockInitWithFlags.Unlock()\n\treturn mock.InitWithFlagsFunc(v)\n}\n\n// InitWithFlagsCalls gets all the calls that were made to InitWithFlags.\n// Check the length with:\n//\n//\tlen(mockedInterface.InitWithFlagsCalls())\nfunc (mock *Interface) InitWithFlagsCalls() []struct {\n\tV uint32\n} {\n\tvar calls []struct {\n\t\tV uint32\n\t}\n\tmock.lockInitWithFlags.RLock()\n\tcalls = mock.calls.InitWithFlags\n\tmock.lockInitWithFlags.RUnlock()\n\treturn calls\n}\n\n// SetVgpuVersion calls SetVgpuVersionFunc.\nfunc (mock *Interface) SetVgpuVersion(vgpuVersion *nvml.VgpuVersion) nvml.Return {\n\tif mock.SetVgpuVersionFunc == nil {\n\t\tpanic(\"Interface.SetVgpuVersionFunc: method is nil but Interface.SetVgpuVersion was just called\")\n\t}\n\tcallInfo := struct {\n\t\tVgpuVersion *nvml.VgpuVersion\n\t}{\n\t\tVgpuVersion: vgpuVersion,\n\t}\n\tmock.lockSetVgpuVersion.Lock()\n\tmock.calls.SetVgpuVersion = append(mock.calls.SetVgpuVersion, callInfo)\n\tmock.lockSetVgpuVersion.Unlock()\n\treturn mock.SetVgpuVersionFunc(vgpuVersion)\n}\n\n// SetVgpuVersionCalls gets all the calls that were made to SetVgpuVersion.\n// Check the length with:\n//\n//\tlen(mockedInterface.SetVgpuVersionCalls())\nfunc (mock *Interface) SetVgpuVersionCalls() []struct {\n\tVgpuVersion *nvml.VgpuVersion\n} {\n\tvar calls []struct {\n\t\tVgpuVersion *nvml.VgpuVersion\n\t}\n\tmock.lockSetVgpuVersion.RLock()\n\tcalls = mock.calls.SetVgpuVersion\n\tmock.lockSetVgpuVersion.RUnlock()\n\treturn calls\n}\n\n// Shutdown calls ShutdownFunc.\nfunc (mock *Interface) Shutdown() nvml.Return {\n\tif mock.ShutdownFunc == nil {\n\t\tpanic(\"Interface.ShutdownFunc: method is nil but Interface.Shutdown was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockShutdown.Lock()\n\tmock.calls.Shutdown = append(mock.calls.Shutdown, callInfo)\n\tmock.lockShutdown.Unlock()\n\treturn mock.ShutdownFunc()\n}\n\n// ShutdownCalls gets all the calls that were made to Shutdown.\n// Check the length with:\n//\n//\tlen(mockedInterface.ShutdownCalls())\nfunc (mock *Interface) ShutdownCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockShutdown.RLock()\n\tcalls = mock.calls.Shutdown\n\tmock.lockShutdown.RUnlock()\n\treturn calls\n}\n\n// SystemEventSetCreate calls SystemEventSetCreateFunc.\nfunc (mock *Interface) SystemEventSetCreate(systemEventSetCreateRequest *nvml.SystemEventSetCreateRequest) nvml.Return {\n\tif mock.SystemEventSetCreateFunc == nil {\n\t\tpanic(\"Interface.SystemEventSetCreateFunc: method is nil but Interface.SystemEventSetCreate was just called\")\n\t}\n\tcallInfo := struct {\n\t\tSystemEventSetCreateRequest *nvml.SystemEventSetCreateRequest\n\t}{\n\t\tSystemEventSetCreateRequest: systemEventSetCreateRequest,\n\t}\n\tmock.lockSystemEventSetCreate.Lock()\n\tmock.calls.SystemEventSetCreate = append(mock.calls.SystemEventSetCreate, callInfo)\n\tmock.lockSystemEventSetCreate.Unlock()\n\treturn mock.SystemEventSetCreateFunc(systemEventSetCreateRequest)\n}\n\n// SystemEventSetCreateCalls gets all the calls that were made to SystemEventSetCreate.\n// Check the length with:\n//\n//\tlen(mockedInterface.SystemEventSetCreateCalls())\nfunc (mock *Interface) SystemEventSetCreateCalls() []struct {\n\tSystemEventSetCreateRequest *nvml.SystemEventSetCreateRequest\n} {\n\tvar calls []struct {\n\t\tSystemEventSetCreateRequest *nvml.SystemEventSetCreateRequest\n\t}\n\tmock.lockSystemEventSetCreate.RLock()\n\tcalls = mock.calls.SystemEventSetCreate\n\tmock.lockSystemEventSetCreate.RUnlock()\n\treturn calls\n}\n\n// SystemEventSetFree calls SystemEventSetFreeFunc.\nfunc (mock *Interface) SystemEventSetFree(systemEventSetFreeRequest *nvml.SystemEventSetFreeRequest) nvml.Return {\n\tif mock.SystemEventSetFreeFunc == nil {\n\t\tpanic(\"Interface.SystemEventSetFreeFunc: method is nil but Interface.SystemEventSetFree was just called\")\n\t}\n\tcallInfo := struct {\n\t\tSystemEventSetFreeRequest *nvml.SystemEventSetFreeRequest\n\t}{\n\t\tSystemEventSetFreeRequest: systemEventSetFreeRequest,\n\t}\n\tmock.lockSystemEventSetFree.Lock()\n\tmock.calls.SystemEventSetFree = append(mock.calls.SystemEventSetFree, callInfo)\n\tmock.lockSystemEventSetFree.Unlock()\n\treturn mock.SystemEventSetFreeFunc(systemEventSetFreeRequest)\n}\n\n// SystemEventSetFreeCalls gets all the calls that were made to SystemEventSetFree.\n// Check the length with:\n//\n//\tlen(mockedInterface.SystemEventSetFreeCalls())\nfunc (mock *Interface) SystemEventSetFreeCalls() []struct {\n\tSystemEventSetFreeRequest *nvml.SystemEventSetFreeRequest\n} {\n\tvar calls []struct {\n\t\tSystemEventSetFreeRequest *nvml.SystemEventSetFreeRequest\n\t}\n\tmock.lockSystemEventSetFree.RLock()\n\tcalls = mock.calls.SystemEventSetFree\n\tmock.lockSystemEventSetFree.RUnlock()\n\treturn calls\n}\n\n// SystemEventSetWait calls SystemEventSetWaitFunc.\nfunc (mock *Interface) SystemEventSetWait(systemEventSetWaitRequest *nvml.SystemEventSetWaitRequest) nvml.Return {\n\tif mock.SystemEventSetWaitFunc == nil {\n\t\tpanic(\"Interface.SystemEventSetWaitFunc: method is nil but Interface.SystemEventSetWait was just called\")\n\t}\n\tcallInfo := struct {\n\t\tSystemEventSetWaitRequest *nvml.SystemEventSetWaitRequest\n\t}{\n\t\tSystemEventSetWaitRequest: systemEventSetWaitRequest,\n\t}\n\tmock.lockSystemEventSetWait.Lock()\n\tmock.calls.SystemEventSetWait = append(mock.calls.SystemEventSetWait, callInfo)\n\tmock.lockSystemEventSetWait.Unlock()\n\treturn mock.SystemEventSetWaitFunc(systemEventSetWaitRequest)\n}\n\n// SystemEventSetWaitCalls gets all the calls that were made to SystemEventSetWait.\n// Check the length with:\n//\n//\tlen(mockedInterface.SystemEventSetWaitCalls())\nfunc (mock *Interface) SystemEventSetWaitCalls() []struct {\n\tSystemEventSetWaitRequest *nvml.SystemEventSetWaitRequest\n} {\n\tvar calls []struct {\n\t\tSystemEventSetWaitRequest *nvml.SystemEventSetWaitRequest\n\t}\n\tmock.lockSystemEventSetWait.RLock()\n\tcalls = mock.calls.SystemEventSetWait\n\tmock.lockSystemEventSetWait.RUnlock()\n\treturn calls\n}\n\n// SystemGetConfComputeCapabilities calls SystemGetConfComputeCapabilitiesFunc.\nfunc (mock *Interface) SystemGetConfComputeCapabilities() (nvml.ConfComputeSystemCaps, nvml.Return) {\n\tif mock.SystemGetConfComputeCapabilitiesFunc == nil {\n\t\tpanic(\"Interface.SystemGetConfComputeCapabilitiesFunc: method is nil but Interface.SystemGetConfComputeCapabilities was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockSystemGetConfComputeCapabilities.Lock()\n\tmock.calls.SystemGetConfComputeCapabilities = append(mock.calls.SystemGetConfComputeCapabilities, callInfo)\n\tmock.lockSystemGetConfComputeCapabilities.Unlock()\n\treturn mock.SystemGetConfComputeCapabilitiesFunc()\n}\n\n// SystemGetConfComputeCapabilitiesCalls gets all the calls that were made to SystemGetConfComputeCapabilities.\n// Check the length with:\n//\n//\tlen(mockedInterface.SystemGetConfComputeCapabilitiesCalls())\nfunc (mock *Interface) SystemGetConfComputeCapabilitiesCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockSystemGetConfComputeCapabilities.RLock()\n\tcalls = mock.calls.SystemGetConfComputeCapabilities\n\tmock.lockSystemGetConfComputeCapabilities.RUnlock()\n\treturn calls\n}\n\n// SystemGetConfComputeGpusReadyState calls SystemGetConfComputeGpusReadyStateFunc.\nfunc (mock *Interface) SystemGetConfComputeGpusReadyState() (uint32, nvml.Return) {\n\tif mock.SystemGetConfComputeGpusReadyStateFunc == nil {\n\t\tpanic(\"Interface.SystemGetConfComputeGpusReadyStateFunc: method is nil but Interface.SystemGetConfComputeGpusReadyState was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockSystemGetConfComputeGpusReadyState.Lock()\n\tmock.calls.SystemGetConfComputeGpusReadyState = append(mock.calls.SystemGetConfComputeGpusReadyState, callInfo)\n\tmock.lockSystemGetConfComputeGpusReadyState.Unlock()\n\treturn mock.SystemGetConfComputeGpusReadyStateFunc()\n}\n\n// SystemGetConfComputeGpusReadyStateCalls gets all the calls that were made to SystemGetConfComputeGpusReadyState.\n// Check the length with:\n//\n//\tlen(mockedInterface.SystemGetConfComputeGpusReadyStateCalls())\nfunc (mock *Interface) SystemGetConfComputeGpusReadyStateCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockSystemGetConfComputeGpusReadyState.RLock()\n\tcalls = mock.calls.SystemGetConfComputeGpusReadyState\n\tmock.lockSystemGetConfComputeGpusReadyState.RUnlock()\n\treturn calls\n}\n\n// SystemGetConfComputeKeyRotationThresholdInfo calls SystemGetConfComputeKeyRotationThresholdInfoFunc.\nfunc (mock *Interface) SystemGetConfComputeKeyRotationThresholdInfo() (nvml.ConfComputeGetKeyRotationThresholdInfo, nvml.Return) {\n\tif mock.SystemGetConfComputeKeyRotationThresholdInfoFunc == nil {\n\t\tpanic(\"Interface.SystemGetConfComputeKeyRotationThresholdInfoFunc: method is nil but Interface.SystemGetConfComputeKeyRotationThresholdInfo was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockSystemGetConfComputeKeyRotationThresholdInfo.Lock()\n\tmock.calls.SystemGetConfComputeKeyRotationThresholdInfo = append(mock.calls.SystemGetConfComputeKeyRotationThresholdInfo, callInfo)\n\tmock.lockSystemGetConfComputeKeyRotationThresholdInfo.Unlock()\n\treturn mock.SystemGetConfComputeKeyRotationThresholdInfoFunc()\n}\n\n// SystemGetConfComputeKeyRotationThresholdInfoCalls gets all the calls that were made to SystemGetConfComputeKeyRotationThresholdInfo.\n// Check the length with:\n//\n//\tlen(mockedInterface.SystemGetConfComputeKeyRotationThresholdInfoCalls())\nfunc (mock *Interface) SystemGetConfComputeKeyRotationThresholdInfoCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockSystemGetConfComputeKeyRotationThresholdInfo.RLock()\n\tcalls = mock.calls.SystemGetConfComputeKeyRotationThresholdInfo\n\tmock.lockSystemGetConfComputeKeyRotationThresholdInfo.RUnlock()\n\treturn calls\n}\n\n// SystemGetConfComputeSettings calls SystemGetConfComputeSettingsFunc.\nfunc (mock *Interface) SystemGetConfComputeSettings() (nvml.SystemConfComputeSettings, nvml.Return) {\n\tif mock.SystemGetConfComputeSettingsFunc == nil {\n\t\tpanic(\"Interface.SystemGetConfComputeSettingsFunc: method is nil but Interface.SystemGetConfComputeSettings was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockSystemGetConfComputeSettings.Lock()\n\tmock.calls.SystemGetConfComputeSettings = append(mock.calls.SystemGetConfComputeSettings, callInfo)\n\tmock.lockSystemGetConfComputeSettings.Unlock()\n\treturn mock.SystemGetConfComputeSettingsFunc()\n}\n\n// SystemGetConfComputeSettingsCalls gets all the calls that were made to SystemGetConfComputeSettings.\n// Check the length with:\n//\n//\tlen(mockedInterface.SystemGetConfComputeSettingsCalls())\nfunc (mock *Interface) SystemGetConfComputeSettingsCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockSystemGetConfComputeSettings.RLock()\n\tcalls = mock.calls.SystemGetConfComputeSettings\n\tmock.lockSystemGetConfComputeSettings.RUnlock()\n\treturn calls\n}\n\n// SystemGetConfComputeState calls SystemGetConfComputeStateFunc.\nfunc (mock *Interface) SystemGetConfComputeState() (nvml.ConfComputeSystemState, nvml.Return) {\n\tif mock.SystemGetConfComputeStateFunc == nil {\n\t\tpanic(\"Interface.SystemGetConfComputeStateFunc: method is nil but Interface.SystemGetConfComputeState was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockSystemGetConfComputeState.Lock()\n\tmock.calls.SystemGetConfComputeState = append(mock.calls.SystemGetConfComputeState, callInfo)\n\tmock.lockSystemGetConfComputeState.Unlock()\n\treturn mock.SystemGetConfComputeStateFunc()\n}\n\n// SystemGetConfComputeStateCalls gets all the calls that were made to SystemGetConfComputeState.\n// Check the length with:\n//\n//\tlen(mockedInterface.SystemGetConfComputeStateCalls())\nfunc (mock *Interface) SystemGetConfComputeStateCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockSystemGetConfComputeState.RLock()\n\tcalls = mock.calls.SystemGetConfComputeState\n\tmock.lockSystemGetConfComputeState.RUnlock()\n\treturn calls\n}\n\n// SystemGetCudaDriverVersion calls SystemGetCudaDriverVersionFunc.\nfunc (mock *Interface) SystemGetCudaDriverVersion() (int, nvml.Return) {\n\tif mock.SystemGetCudaDriverVersionFunc == nil {\n\t\tpanic(\"Interface.SystemGetCudaDriverVersionFunc: method is nil but Interface.SystemGetCudaDriverVersion was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockSystemGetCudaDriverVersion.Lock()\n\tmock.calls.SystemGetCudaDriverVersion = append(mock.calls.SystemGetCudaDriverVersion, callInfo)\n\tmock.lockSystemGetCudaDriverVersion.Unlock()\n\treturn mock.SystemGetCudaDriverVersionFunc()\n}\n\n// SystemGetCudaDriverVersionCalls gets all the calls that were made to SystemGetCudaDriverVersion.\n// Check the length with:\n//\n//\tlen(mockedInterface.SystemGetCudaDriverVersionCalls())\nfunc (mock *Interface) SystemGetCudaDriverVersionCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockSystemGetCudaDriverVersion.RLock()\n\tcalls = mock.calls.SystemGetCudaDriverVersion\n\tmock.lockSystemGetCudaDriverVersion.RUnlock()\n\treturn calls\n}\n\n// SystemGetCudaDriverVersion_v2 calls SystemGetCudaDriverVersion_v2Func.\nfunc (mock *Interface) SystemGetCudaDriverVersion_v2() (int, nvml.Return) {\n\tif mock.SystemGetCudaDriverVersion_v2Func == nil {\n\t\tpanic(\"Interface.SystemGetCudaDriverVersion_v2Func: method is nil but Interface.SystemGetCudaDriverVersion_v2 was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockSystemGetCudaDriverVersion_v2.Lock()\n\tmock.calls.SystemGetCudaDriverVersion_v2 = append(mock.calls.SystemGetCudaDriverVersion_v2, callInfo)\n\tmock.lockSystemGetCudaDriverVersion_v2.Unlock()\n\treturn mock.SystemGetCudaDriverVersion_v2Func()\n}\n\n// SystemGetCudaDriverVersion_v2Calls gets all the calls that were made to SystemGetCudaDriverVersion_v2.\n// Check the length with:\n//\n//\tlen(mockedInterface.SystemGetCudaDriverVersion_v2Calls())\nfunc (mock *Interface) SystemGetCudaDriverVersion_v2Calls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockSystemGetCudaDriverVersion_v2.RLock()\n\tcalls = mock.calls.SystemGetCudaDriverVersion_v2\n\tmock.lockSystemGetCudaDriverVersion_v2.RUnlock()\n\treturn calls\n}\n\n// SystemGetDriverBranch calls SystemGetDriverBranchFunc.\nfunc (mock *Interface) SystemGetDriverBranch() (nvml.SystemDriverBranchInfo, nvml.Return) {\n\tif mock.SystemGetDriverBranchFunc == nil {\n\t\tpanic(\"Interface.SystemGetDriverBranchFunc: method is nil but Interface.SystemGetDriverBranch was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockSystemGetDriverBranch.Lock()\n\tmock.calls.SystemGetDriverBranch = append(mock.calls.SystemGetDriverBranch, callInfo)\n\tmock.lockSystemGetDriverBranch.Unlock()\n\treturn mock.SystemGetDriverBranchFunc()\n}\n\n// SystemGetDriverBranchCalls gets all the calls that were made to SystemGetDriverBranch.\n// Check the length with:\n//\n//\tlen(mockedInterface.SystemGetDriverBranchCalls())\nfunc (mock *Interface) SystemGetDriverBranchCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockSystemGetDriverBranch.RLock()\n\tcalls = mock.calls.SystemGetDriverBranch\n\tmock.lockSystemGetDriverBranch.RUnlock()\n\treturn calls\n}\n\n// SystemGetDriverVersion calls SystemGetDriverVersionFunc.\nfunc (mock *Interface) SystemGetDriverVersion() (string, nvml.Return) {\n\tif mock.SystemGetDriverVersionFunc == nil {\n\t\tpanic(\"Interface.SystemGetDriverVersionFunc: method is nil but Interface.SystemGetDriverVersion was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockSystemGetDriverVersion.Lock()\n\tmock.calls.SystemGetDriverVersion = append(mock.calls.SystemGetDriverVersion, callInfo)\n\tmock.lockSystemGetDriverVersion.Unlock()\n\treturn mock.SystemGetDriverVersionFunc()\n}\n\n// SystemGetDriverVersionCalls gets all the calls that were made to SystemGetDriverVersion.\n// Check the length with:\n//\n//\tlen(mockedInterface.SystemGetDriverVersionCalls())\nfunc (mock *Interface) SystemGetDriverVersionCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockSystemGetDriverVersion.RLock()\n\tcalls = mock.calls.SystemGetDriverVersion\n\tmock.lockSystemGetDriverVersion.RUnlock()\n\treturn calls\n}\n\n// SystemGetHicVersion calls SystemGetHicVersionFunc.\nfunc (mock *Interface) SystemGetHicVersion() ([]nvml.HwbcEntry, nvml.Return) {\n\tif mock.SystemGetHicVersionFunc == nil {\n\t\tpanic(\"Interface.SystemGetHicVersionFunc: method is nil but Interface.SystemGetHicVersion was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockSystemGetHicVersion.Lock()\n\tmock.calls.SystemGetHicVersion = append(mock.calls.SystemGetHicVersion, callInfo)\n\tmock.lockSystemGetHicVersion.Unlock()\n\treturn mock.SystemGetHicVersionFunc()\n}\n\n// SystemGetHicVersionCalls gets all the calls that were made to SystemGetHicVersion.\n// Check the length with:\n//\n//\tlen(mockedInterface.SystemGetHicVersionCalls())\nfunc (mock *Interface) SystemGetHicVersionCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockSystemGetHicVersion.RLock()\n\tcalls = mock.calls.SystemGetHicVersion\n\tmock.lockSystemGetHicVersion.RUnlock()\n\treturn calls\n}\n\n// SystemGetNVMLVersion calls SystemGetNVMLVersionFunc.\nfunc (mock *Interface) SystemGetNVMLVersion() (string, nvml.Return) {\n\tif mock.SystemGetNVMLVersionFunc == nil {\n\t\tpanic(\"Interface.SystemGetNVMLVersionFunc: method is nil but Interface.SystemGetNVMLVersion was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockSystemGetNVMLVersion.Lock()\n\tmock.calls.SystemGetNVMLVersion = append(mock.calls.SystemGetNVMLVersion, callInfo)\n\tmock.lockSystemGetNVMLVersion.Unlock()\n\treturn mock.SystemGetNVMLVersionFunc()\n}\n\n// SystemGetNVMLVersionCalls gets all the calls that were made to SystemGetNVMLVersion.\n// Check the length with:\n//\n//\tlen(mockedInterface.SystemGetNVMLVersionCalls())\nfunc (mock *Interface) SystemGetNVMLVersionCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockSystemGetNVMLVersion.RLock()\n\tcalls = mock.calls.SystemGetNVMLVersion\n\tmock.lockSystemGetNVMLVersion.RUnlock()\n\treturn calls\n}\n\n// SystemGetNvlinkBwMode calls SystemGetNvlinkBwModeFunc.\nfunc (mock *Interface) SystemGetNvlinkBwMode() (uint32, nvml.Return) {\n\tif mock.SystemGetNvlinkBwModeFunc == nil {\n\t\tpanic(\"Interface.SystemGetNvlinkBwModeFunc: method is nil but Interface.SystemGetNvlinkBwMode was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockSystemGetNvlinkBwMode.Lock()\n\tmock.calls.SystemGetNvlinkBwMode = append(mock.calls.SystemGetNvlinkBwMode, callInfo)\n\tmock.lockSystemGetNvlinkBwMode.Unlock()\n\treturn mock.SystemGetNvlinkBwModeFunc()\n}\n\n// SystemGetNvlinkBwModeCalls gets all the calls that were made to SystemGetNvlinkBwMode.\n// Check the length with:\n//\n//\tlen(mockedInterface.SystemGetNvlinkBwModeCalls())\nfunc (mock *Interface) SystemGetNvlinkBwModeCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockSystemGetNvlinkBwMode.RLock()\n\tcalls = mock.calls.SystemGetNvlinkBwMode\n\tmock.lockSystemGetNvlinkBwMode.RUnlock()\n\treturn calls\n}\n\n// SystemGetProcessName calls SystemGetProcessNameFunc.\nfunc (mock *Interface) SystemGetProcessName(n int) (string, nvml.Return) {\n\tif mock.SystemGetProcessNameFunc == nil {\n\t\tpanic(\"Interface.SystemGetProcessNameFunc: method is nil but Interface.SystemGetProcessName was just called\")\n\t}\n\tcallInfo := struct {\n\t\tN int\n\t}{\n\t\tN: n,\n\t}\n\tmock.lockSystemGetProcessName.Lock()\n\tmock.calls.SystemGetProcessName = append(mock.calls.SystemGetProcessName, callInfo)\n\tmock.lockSystemGetProcessName.Unlock()\n\treturn mock.SystemGetProcessNameFunc(n)\n}\n\n// SystemGetProcessNameCalls gets all the calls that were made to SystemGetProcessName.\n// Check the length with:\n//\n//\tlen(mockedInterface.SystemGetProcessNameCalls())\nfunc (mock *Interface) SystemGetProcessNameCalls() []struct {\n\tN int\n} {\n\tvar calls []struct {\n\t\tN int\n\t}\n\tmock.lockSystemGetProcessName.RLock()\n\tcalls = mock.calls.SystemGetProcessName\n\tmock.lockSystemGetProcessName.RUnlock()\n\treturn calls\n}\n\n// SystemGetTopologyGpuSet calls SystemGetTopologyGpuSetFunc.\nfunc (mock *Interface) SystemGetTopologyGpuSet(n int) ([]nvml.Device, nvml.Return) {\n\tif mock.SystemGetTopologyGpuSetFunc == nil {\n\t\tpanic(\"Interface.SystemGetTopologyGpuSetFunc: method is nil but Interface.SystemGetTopologyGpuSet was just called\")\n\t}\n\tcallInfo := struct {\n\t\tN int\n\t}{\n\t\tN: n,\n\t}\n\tmock.lockSystemGetTopologyGpuSet.Lock()\n\tmock.calls.SystemGetTopologyGpuSet = append(mock.calls.SystemGetTopologyGpuSet, callInfo)\n\tmock.lockSystemGetTopologyGpuSet.Unlock()\n\treturn mock.SystemGetTopologyGpuSetFunc(n)\n}\n\n// SystemGetTopologyGpuSetCalls gets all the calls that were made to SystemGetTopologyGpuSet.\n// Check the length with:\n//\n//\tlen(mockedInterface.SystemGetTopologyGpuSetCalls())\nfunc (mock *Interface) SystemGetTopologyGpuSetCalls() []struct {\n\tN int\n} {\n\tvar calls []struct {\n\t\tN int\n\t}\n\tmock.lockSystemGetTopologyGpuSet.RLock()\n\tcalls = mock.calls.SystemGetTopologyGpuSet\n\tmock.lockSystemGetTopologyGpuSet.RUnlock()\n\treturn calls\n}\n\n// SystemRegisterEvents calls SystemRegisterEventsFunc.\nfunc (mock *Interface) SystemRegisterEvents(systemRegisterEventRequest *nvml.SystemRegisterEventRequest) nvml.Return {\n\tif mock.SystemRegisterEventsFunc == nil {\n\t\tpanic(\"Interface.SystemRegisterEventsFunc: method is nil but Interface.SystemRegisterEvents was just called\")\n\t}\n\tcallInfo := struct {\n\t\tSystemRegisterEventRequest *nvml.SystemRegisterEventRequest\n\t}{\n\t\tSystemRegisterEventRequest: systemRegisterEventRequest,\n\t}\n\tmock.lockSystemRegisterEvents.Lock()\n\tmock.calls.SystemRegisterEvents = append(mock.calls.SystemRegisterEvents, callInfo)\n\tmock.lockSystemRegisterEvents.Unlock()\n\treturn mock.SystemRegisterEventsFunc(systemRegisterEventRequest)\n}\n\n// SystemRegisterEventsCalls gets all the calls that were made to SystemRegisterEvents.\n// Check the length with:\n//\n//\tlen(mockedInterface.SystemRegisterEventsCalls())\nfunc (mock *Interface) SystemRegisterEventsCalls() []struct {\n\tSystemRegisterEventRequest *nvml.SystemRegisterEventRequest\n} {\n\tvar calls []struct {\n\t\tSystemRegisterEventRequest *nvml.SystemRegisterEventRequest\n\t}\n\tmock.lockSystemRegisterEvents.RLock()\n\tcalls = mock.calls.SystemRegisterEvents\n\tmock.lockSystemRegisterEvents.RUnlock()\n\treturn calls\n}\n\n// SystemSetConfComputeGpusReadyState calls SystemSetConfComputeGpusReadyStateFunc.\nfunc (mock *Interface) SystemSetConfComputeGpusReadyState(v uint32) nvml.Return {\n\tif mock.SystemSetConfComputeGpusReadyStateFunc == nil {\n\t\tpanic(\"Interface.SystemSetConfComputeGpusReadyStateFunc: method is nil but Interface.SystemSetConfComputeGpusReadyState was just called\")\n\t}\n\tcallInfo := struct {\n\t\tV uint32\n\t}{\n\t\tV: v,\n\t}\n\tmock.lockSystemSetConfComputeGpusReadyState.Lock()\n\tmock.calls.SystemSetConfComputeGpusReadyState = append(mock.calls.SystemSetConfComputeGpusReadyState, callInfo)\n\tmock.lockSystemSetConfComputeGpusReadyState.Unlock()\n\treturn mock.SystemSetConfComputeGpusReadyStateFunc(v)\n}\n\n// SystemSetConfComputeGpusReadyStateCalls gets all the calls that were made to SystemSetConfComputeGpusReadyState.\n// Check the length with:\n//\n//\tlen(mockedInterface.SystemSetConfComputeGpusReadyStateCalls())\nfunc (mock *Interface) SystemSetConfComputeGpusReadyStateCalls() []struct {\n\tV uint32\n} {\n\tvar calls []struct {\n\t\tV uint32\n\t}\n\tmock.lockSystemSetConfComputeGpusReadyState.RLock()\n\tcalls = mock.calls.SystemSetConfComputeGpusReadyState\n\tmock.lockSystemSetConfComputeGpusReadyState.RUnlock()\n\treturn calls\n}\n\n// SystemSetConfComputeKeyRotationThresholdInfo calls SystemSetConfComputeKeyRotationThresholdInfoFunc.\nfunc (mock *Interface) SystemSetConfComputeKeyRotationThresholdInfo(confComputeSetKeyRotationThresholdInfo nvml.ConfComputeSetKeyRotationThresholdInfo) nvml.Return {\n\tif mock.SystemSetConfComputeKeyRotationThresholdInfoFunc == nil {\n\t\tpanic(\"Interface.SystemSetConfComputeKeyRotationThresholdInfoFunc: method is nil but Interface.SystemSetConfComputeKeyRotationThresholdInfo was just called\")\n\t}\n\tcallInfo := struct {\n\t\tConfComputeSetKeyRotationThresholdInfo nvml.ConfComputeSetKeyRotationThresholdInfo\n\t}{\n\t\tConfComputeSetKeyRotationThresholdInfo: confComputeSetKeyRotationThresholdInfo,\n\t}\n\tmock.lockSystemSetConfComputeKeyRotationThresholdInfo.Lock()\n\tmock.calls.SystemSetConfComputeKeyRotationThresholdInfo = append(mock.calls.SystemSetConfComputeKeyRotationThresholdInfo, callInfo)\n\tmock.lockSystemSetConfComputeKeyRotationThresholdInfo.Unlock()\n\treturn mock.SystemSetConfComputeKeyRotationThresholdInfoFunc(confComputeSetKeyRotationThresholdInfo)\n}\n\n// SystemSetConfComputeKeyRotationThresholdInfoCalls gets all the calls that were made to SystemSetConfComputeKeyRotationThresholdInfo.\n// Check the length with:\n//\n//\tlen(mockedInterface.SystemSetConfComputeKeyRotationThresholdInfoCalls())\nfunc (mock *Interface) SystemSetConfComputeKeyRotationThresholdInfoCalls() []struct {\n\tConfComputeSetKeyRotationThresholdInfo nvml.ConfComputeSetKeyRotationThresholdInfo\n} {\n\tvar calls []struct {\n\t\tConfComputeSetKeyRotationThresholdInfo nvml.ConfComputeSetKeyRotationThresholdInfo\n\t}\n\tmock.lockSystemSetConfComputeKeyRotationThresholdInfo.RLock()\n\tcalls = mock.calls.SystemSetConfComputeKeyRotationThresholdInfo\n\tmock.lockSystemSetConfComputeKeyRotationThresholdInfo.RUnlock()\n\treturn calls\n}\n\n// SystemSetNvlinkBwMode calls SystemSetNvlinkBwModeFunc.\nfunc (mock *Interface) SystemSetNvlinkBwMode(v uint32) nvml.Return {\n\tif mock.SystemSetNvlinkBwModeFunc == nil {\n\t\tpanic(\"Interface.SystemSetNvlinkBwModeFunc: method is nil but Interface.SystemSetNvlinkBwMode was just called\")\n\t}\n\tcallInfo := struct {\n\t\tV uint32\n\t}{\n\t\tV: v,\n\t}\n\tmock.lockSystemSetNvlinkBwMode.Lock()\n\tmock.calls.SystemSetNvlinkBwMode = append(mock.calls.SystemSetNvlinkBwMode, callInfo)\n\tmock.lockSystemSetNvlinkBwMode.Unlock()\n\treturn mock.SystemSetNvlinkBwModeFunc(v)\n}\n\n// SystemSetNvlinkBwModeCalls gets all the calls that were made to SystemSetNvlinkBwMode.\n// Check the length with:\n//\n//\tlen(mockedInterface.SystemSetNvlinkBwModeCalls())\nfunc (mock *Interface) SystemSetNvlinkBwModeCalls() []struct {\n\tV uint32\n} {\n\tvar calls []struct {\n\t\tV uint32\n\t}\n\tmock.lockSystemSetNvlinkBwMode.RLock()\n\tcalls = mock.calls.SystemSetNvlinkBwMode\n\tmock.lockSystemSetNvlinkBwMode.RUnlock()\n\treturn calls\n}\n\n// UnitGetCount calls UnitGetCountFunc.\nfunc (mock *Interface) UnitGetCount() (int, nvml.Return) {\n\tif mock.UnitGetCountFunc == nil {\n\t\tpanic(\"Interface.UnitGetCountFunc: method is nil but Interface.UnitGetCount was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockUnitGetCount.Lock()\n\tmock.calls.UnitGetCount = append(mock.calls.UnitGetCount, callInfo)\n\tmock.lockUnitGetCount.Unlock()\n\treturn mock.UnitGetCountFunc()\n}\n\n// UnitGetCountCalls gets all the calls that were made to UnitGetCount.\n// Check the length with:\n//\n//\tlen(mockedInterface.UnitGetCountCalls())\nfunc (mock *Interface) UnitGetCountCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockUnitGetCount.RLock()\n\tcalls = mock.calls.UnitGetCount\n\tmock.lockUnitGetCount.RUnlock()\n\treturn calls\n}\n\n// UnitGetDevices calls UnitGetDevicesFunc.\nfunc (mock *Interface) UnitGetDevices(unit nvml.Unit) ([]nvml.Device, nvml.Return) {\n\tif mock.UnitGetDevicesFunc == nil {\n\t\tpanic(\"Interface.UnitGetDevicesFunc: method is nil but Interface.UnitGetDevices was just called\")\n\t}\n\tcallInfo := struct {\n\t\tUnit nvml.Unit\n\t}{\n\t\tUnit: unit,\n\t}\n\tmock.lockUnitGetDevices.Lock()\n\tmock.calls.UnitGetDevices = append(mock.calls.UnitGetDevices, callInfo)\n\tmock.lockUnitGetDevices.Unlock()\n\treturn mock.UnitGetDevicesFunc(unit)\n}\n\n// UnitGetDevicesCalls gets all the calls that were made to UnitGetDevices.\n// Check the length with:\n//\n//\tlen(mockedInterface.UnitGetDevicesCalls())\nfunc (mock *Interface) UnitGetDevicesCalls() []struct {\n\tUnit nvml.Unit\n} {\n\tvar calls []struct {\n\t\tUnit nvml.Unit\n\t}\n\tmock.lockUnitGetDevices.RLock()\n\tcalls = mock.calls.UnitGetDevices\n\tmock.lockUnitGetDevices.RUnlock()\n\treturn calls\n}\n\n// UnitGetFanSpeedInfo calls UnitGetFanSpeedInfoFunc.\nfunc (mock *Interface) UnitGetFanSpeedInfo(unit nvml.Unit) (nvml.UnitFanSpeeds, nvml.Return) {\n\tif mock.UnitGetFanSpeedInfoFunc == nil {\n\t\tpanic(\"Interface.UnitGetFanSpeedInfoFunc: method is nil but Interface.UnitGetFanSpeedInfo was just called\")\n\t}\n\tcallInfo := struct {\n\t\tUnit nvml.Unit\n\t}{\n\t\tUnit: unit,\n\t}\n\tmock.lockUnitGetFanSpeedInfo.Lock()\n\tmock.calls.UnitGetFanSpeedInfo = append(mock.calls.UnitGetFanSpeedInfo, callInfo)\n\tmock.lockUnitGetFanSpeedInfo.Unlock()\n\treturn mock.UnitGetFanSpeedInfoFunc(unit)\n}\n\n// UnitGetFanSpeedInfoCalls gets all the calls that were made to UnitGetFanSpeedInfo.\n// Check the length with:\n//\n//\tlen(mockedInterface.UnitGetFanSpeedInfoCalls())\nfunc (mock *Interface) UnitGetFanSpeedInfoCalls() []struct {\n\tUnit nvml.Unit\n} {\n\tvar calls []struct {\n\t\tUnit nvml.Unit\n\t}\n\tmock.lockUnitGetFanSpeedInfo.RLock()\n\tcalls = mock.calls.UnitGetFanSpeedInfo\n\tmock.lockUnitGetFanSpeedInfo.RUnlock()\n\treturn calls\n}\n\n// UnitGetHandleByIndex calls UnitGetHandleByIndexFunc.\nfunc (mock *Interface) UnitGetHandleByIndex(n int) (nvml.Unit, nvml.Return) {\n\tif mock.UnitGetHandleByIndexFunc == nil {\n\t\tpanic(\"Interface.UnitGetHandleByIndexFunc: method is nil but Interface.UnitGetHandleByIndex was just called\")\n\t}\n\tcallInfo := struct {\n\t\tN int\n\t}{\n\t\tN: n,\n\t}\n\tmock.lockUnitGetHandleByIndex.Lock()\n\tmock.calls.UnitGetHandleByIndex = append(mock.calls.UnitGetHandleByIndex, callInfo)\n\tmock.lockUnitGetHandleByIndex.Unlock()\n\treturn mock.UnitGetHandleByIndexFunc(n)\n}\n\n// UnitGetHandleByIndexCalls gets all the calls that were made to UnitGetHandleByIndex.\n// Check the length with:\n//\n//\tlen(mockedInterface.UnitGetHandleByIndexCalls())\nfunc (mock *Interface) UnitGetHandleByIndexCalls() []struct {\n\tN int\n} {\n\tvar calls []struct {\n\t\tN int\n\t}\n\tmock.lockUnitGetHandleByIndex.RLock()\n\tcalls = mock.calls.UnitGetHandleByIndex\n\tmock.lockUnitGetHandleByIndex.RUnlock()\n\treturn calls\n}\n\n// UnitGetLedState calls UnitGetLedStateFunc.\nfunc (mock *Interface) UnitGetLedState(unit nvml.Unit) (nvml.LedState, nvml.Return) {\n\tif mock.UnitGetLedStateFunc == nil {\n\t\tpanic(\"Interface.UnitGetLedStateFunc: method is nil but Interface.UnitGetLedState was just called\")\n\t}\n\tcallInfo := struct {\n\t\tUnit nvml.Unit\n\t}{\n\t\tUnit: unit,\n\t}\n\tmock.lockUnitGetLedState.Lock()\n\tmock.calls.UnitGetLedState = append(mock.calls.UnitGetLedState, callInfo)\n\tmock.lockUnitGetLedState.Unlock()\n\treturn mock.UnitGetLedStateFunc(unit)\n}\n\n// UnitGetLedStateCalls gets all the calls that were made to UnitGetLedState.\n// Check the length with:\n//\n//\tlen(mockedInterface.UnitGetLedStateCalls())\nfunc (mock *Interface) UnitGetLedStateCalls() []struct {\n\tUnit nvml.Unit\n} {\n\tvar calls []struct {\n\t\tUnit nvml.Unit\n\t}\n\tmock.lockUnitGetLedState.RLock()\n\tcalls = mock.calls.UnitGetLedState\n\tmock.lockUnitGetLedState.RUnlock()\n\treturn calls\n}\n\n// UnitGetPsuInfo calls UnitGetPsuInfoFunc.\nfunc (mock *Interface) UnitGetPsuInfo(unit nvml.Unit) (nvml.PSUInfo, nvml.Return) {\n\tif mock.UnitGetPsuInfoFunc == nil {\n\t\tpanic(\"Interface.UnitGetPsuInfoFunc: method is nil but Interface.UnitGetPsuInfo was just called\")\n\t}\n\tcallInfo := struct {\n\t\tUnit nvml.Unit\n\t}{\n\t\tUnit: unit,\n\t}\n\tmock.lockUnitGetPsuInfo.Lock()\n\tmock.calls.UnitGetPsuInfo = append(mock.calls.UnitGetPsuInfo, callInfo)\n\tmock.lockUnitGetPsuInfo.Unlock()\n\treturn mock.UnitGetPsuInfoFunc(unit)\n}\n\n// UnitGetPsuInfoCalls gets all the calls that were made to UnitGetPsuInfo.\n// Check the length with:\n//\n//\tlen(mockedInterface.UnitGetPsuInfoCalls())\nfunc (mock *Interface) UnitGetPsuInfoCalls() []struct {\n\tUnit nvml.Unit\n} {\n\tvar calls []struct {\n\t\tUnit nvml.Unit\n\t}\n\tmock.lockUnitGetPsuInfo.RLock()\n\tcalls = mock.calls.UnitGetPsuInfo\n\tmock.lockUnitGetPsuInfo.RUnlock()\n\treturn calls\n}\n\n// UnitGetTemperature calls UnitGetTemperatureFunc.\nfunc (mock *Interface) UnitGetTemperature(unit nvml.Unit, n int) (uint32, nvml.Return) {\n\tif mock.UnitGetTemperatureFunc == nil {\n\t\tpanic(\"Interface.UnitGetTemperatureFunc: method is nil but Interface.UnitGetTemperature was just called\")\n\t}\n\tcallInfo := struct {\n\t\tUnit nvml.Unit\n\t\tN    int\n\t}{\n\t\tUnit: unit,\n\t\tN:    n,\n\t}\n\tmock.lockUnitGetTemperature.Lock()\n\tmock.calls.UnitGetTemperature = append(mock.calls.UnitGetTemperature, callInfo)\n\tmock.lockUnitGetTemperature.Unlock()\n\treturn mock.UnitGetTemperatureFunc(unit, n)\n}\n\n// UnitGetTemperatureCalls gets all the calls that were made to UnitGetTemperature.\n// Check the length with:\n//\n//\tlen(mockedInterface.UnitGetTemperatureCalls())\nfunc (mock *Interface) UnitGetTemperatureCalls() []struct {\n\tUnit nvml.Unit\n\tN    int\n} {\n\tvar calls []struct {\n\t\tUnit nvml.Unit\n\t\tN    int\n\t}\n\tmock.lockUnitGetTemperature.RLock()\n\tcalls = mock.calls.UnitGetTemperature\n\tmock.lockUnitGetTemperature.RUnlock()\n\treturn calls\n}\n\n// UnitGetUnitInfo calls UnitGetUnitInfoFunc.\nfunc (mock *Interface) UnitGetUnitInfo(unit nvml.Unit) (nvml.UnitInfo, nvml.Return) {\n\tif mock.UnitGetUnitInfoFunc == nil {\n\t\tpanic(\"Interface.UnitGetUnitInfoFunc: method is nil but Interface.UnitGetUnitInfo was just called\")\n\t}\n\tcallInfo := struct {\n\t\tUnit nvml.Unit\n\t}{\n\t\tUnit: unit,\n\t}\n\tmock.lockUnitGetUnitInfo.Lock()\n\tmock.calls.UnitGetUnitInfo = append(mock.calls.UnitGetUnitInfo, callInfo)\n\tmock.lockUnitGetUnitInfo.Unlock()\n\treturn mock.UnitGetUnitInfoFunc(unit)\n}\n\n// UnitGetUnitInfoCalls gets all the calls that were made to UnitGetUnitInfo.\n// Check the length with:\n//\n//\tlen(mockedInterface.UnitGetUnitInfoCalls())\nfunc (mock *Interface) UnitGetUnitInfoCalls() []struct {\n\tUnit nvml.Unit\n} {\n\tvar calls []struct {\n\t\tUnit nvml.Unit\n\t}\n\tmock.lockUnitGetUnitInfo.RLock()\n\tcalls = mock.calls.UnitGetUnitInfo\n\tmock.lockUnitGetUnitInfo.RUnlock()\n\treturn calls\n}\n\n// UnitSetLedState calls UnitSetLedStateFunc.\nfunc (mock *Interface) UnitSetLedState(unit nvml.Unit, ledColor nvml.LedColor) nvml.Return {\n\tif mock.UnitSetLedStateFunc == nil {\n\t\tpanic(\"Interface.UnitSetLedStateFunc: method is nil but Interface.UnitSetLedState was just called\")\n\t}\n\tcallInfo := struct {\n\t\tUnit     nvml.Unit\n\t\tLedColor nvml.LedColor\n\t}{\n\t\tUnit:     unit,\n\t\tLedColor: ledColor,\n\t}\n\tmock.lockUnitSetLedState.Lock()\n\tmock.calls.UnitSetLedState = append(mock.calls.UnitSetLedState, callInfo)\n\tmock.lockUnitSetLedState.Unlock()\n\treturn mock.UnitSetLedStateFunc(unit, ledColor)\n}\n\n// UnitSetLedStateCalls gets all the calls that were made to UnitSetLedState.\n// Check the length with:\n//\n//\tlen(mockedInterface.UnitSetLedStateCalls())\nfunc (mock *Interface) UnitSetLedStateCalls() []struct {\n\tUnit     nvml.Unit\n\tLedColor nvml.LedColor\n} {\n\tvar calls []struct {\n\t\tUnit     nvml.Unit\n\t\tLedColor nvml.LedColor\n\t}\n\tmock.lockUnitSetLedState.RLock()\n\tcalls = mock.calls.UnitSetLedState\n\tmock.lockUnitSetLedState.RUnlock()\n\treturn calls\n}\n\n// VgpuInstanceClearAccountingPids calls VgpuInstanceClearAccountingPidsFunc.\nfunc (mock *Interface) VgpuInstanceClearAccountingPids(vgpuInstance nvml.VgpuInstance) nvml.Return {\n\tif mock.VgpuInstanceClearAccountingPidsFunc == nil {\n\t\tpanic(\"Interface.VgpuInstanceClearAccountingPidsFunc: method is nil but Interface.VgpuInstanceClearAccountingPids was just called\")\n\t}\n\tcallInfo := struct {\n\t\tVgpuInstance nvml.VgpuInstance\n\t}{\n\t\tVgpuInstance: vgpuInstance,\n\t}\n\tmock.lockVgpuInstanceClearAccountingPids.Lock()\n\tmock.calls.VgpuInstanceClearAccountingPids = append(mock.calls.VgpuInstanceClearAccountingPids, callInfo)\n\tmock.lockVgpuInstanceClearAccountingPids.Unlock()\n\treturn mock.VgpuInstanceClearAccountingPidsFunc(vgpuInstance)\n}\n\n// VgpuInstanceClearAccountingPidsCalls gets all the calls that were made to VgpuInstanceClearAccountingPids.\n// Check the length with:\n//\n//\tlen(mockedInterface.VgpuInstanceClearAccountingPidsCalls())\nfunc (mock *Interface) VgpuInstanceClearAccountingPidsCalls() []struct {\n\tVgpuInstance nvml.VgpuInstance\n} {\n\tvar calls []struct {\n\t\tVgpuInstance nvml.VgpuInstance\n\t}\n\tmock.lockVgpuInstanceClearAccountingPids.RLock()\n\tcalls = mock.calls.VgpuInstanceClearAccountingPids\n\tmock.lockVgpuInstanceClearAccountingPids.RUnlock()\n\treturn calls\n}\n\n// VgpuInstanceGetAccountingMode calls VgpuInstanceGetAccountingModeFunc.\nfunc (mock *Interface) VgpuInstanceGetAccountingMode(vgpuInstance nvml.VgpuInstance) (nvml.EnableState, nvml.Return) {\n\tif mock.VgpuInstanceGetAccountingModeFunc == nil {\n\t\tpanic(\"Interface.VgpuInstanceGetAccountingModeFunc: method is nil but Interface.VgpuInstanceGetAccountingMode was just called\")\n\t}\n\tcallInfo := struct {\n\t\tVgpuInstance nvml.VgpuInstance\n\t}{\n\t\tVgpuInstance: vgpuInstance,\n\t}\n\tmock.lockVgpuInstanceGetAccountingMode.Lock()\n\tmock.calls.VgpuInstanceGetAccountingMode = append(mock.calls.VgpuInstanceGetAccountingMode, callInfo)\n\tmock.lockVgpuInstanceGetAccountingMode.Unlock()\n\treturn mock.VgpuInstanceGetAccountingModeFunc(vgpuInstance)\n}\n\n// VgpuInstanceGetAccountingModeCalls gets all the calls that were made to VgpuInstanceGetAccountingMode.\n// Check the length with:\n//\n//\tlen(mockedInterface.VgpuInstanceGetAccountingModeCalls())\nfunc (mock *Interface) VgpuInstanceGetAccountingModeCalls() []struct {\n\tVgpuInstance nvml.VgpuInstance\n} {\n\tvar calls []struct {\n\t\tVgpuInstance nvml.VgpuInstance\n\t}\n\tmock.lockVgpuInstanceGetAccountingMode.RLock()\n\tcalls = mock.calls.VgpuInstanceGetAccountingMode\n\tmock.lockVgpuInstanceGetAccountingMode.RUnlock()\n\treturn calls\n}\n\n// VgpuInstanceGetAccountingPids calls VgpuInstanceGetAccountingPidsFunc.\nfunc (mock *Interface) VgpuInstanceGetAccountingPids(vgpuInstance nvml.VgpuInstance) ([]int, nvml.Return) {\n\tif mock.VgpuInstanceGetAccountingPidsFunc == nil {\n\t\tpanic(\"Interface.VgpuInstanceGetAccountingPidsFunc: method is nil but Interface.VgpuInstanceGetAccountingPids was just called\")\n\t}\n\tcallInfo := struct {\n\t\tVgpuInstance nvml.VgpuInstance\n\t}{\n\t\tVgpuInstance: vgpuInstance,\n\t}\n\tmock.lockVgpuInstanceGetAccountingPids.Lock()\n\tmock.calls.VgpuInstanceGetAccountingPids = append(mock.calls.VgpuInstanceGetAccountingPids, callInfo)\n\tmock.lockVgpuInstanceGetAccountingPids.Unlock()\n\treturn mock.VgpuInstanceGetAccountingPidsFunc(vgpuInstance)\n}\n\n// VgpuInstanceGetAccountingPidsCalls gets all the calls that were made to VgpuInstanceGetAccountingPids.\n// Check the length with:\n//\n//\tlen(mockedInterface.VgpuInstanceGetAccountingPidsCalls())\nfunc (mock *Interface) VgpuInstanceGetAccountingPidsCalls() []struct {\n\tVgpuInstance nvml.VgpuInstance\n} {\n\tvar calls []struct {\n\t\tVgpuInstance nvml.VgpuInstance\n\t}\n\tmock.lockVgpuInstanceGetAccountingPids.RLock()\n\tcalls = mock.calls.VgpuInstanceGetAccountingPids\n\tmock.lockVgpuInstanceGetAccountingPids.RUnlock()\n\treturn calls\n}\n\n// VgpuInstanceGetAccountingStats calls VgpuInstanceGetAccountingStatsFunc.\nfunc (mock *Interface) VgpuInstanceGetAccountingStats(vgpuInstance nvml.VgpuInstance, n int) (nvml.AccountingStats, nvml.Return) {\n\tif mock.VgpuInstanceGetAccountingStatsFunc == nil {\n\t\tpanic(\"Interface.VgpuInstanceGetAccountingStatsFunc: method is nil but Interface.VgpuInstanceGetAccountingStats was just called\")\n\t}\n\tcallInfo := struct {\n\t\tVgpuInstance nvml.VgpuInstance\n\t\tN            int\n\t}{\n\t\tVgpuInstance: vgpuInstance,\n\t\tN:            n,\n\t}\n\tmock.lockVgpuInstanceGetAccountingStats.Lock()\n\tmock.calls.VgpuInstanceGetAccountingStats = append(mock.calls.VgpuInstanceGetAccountingStats, callInfo)\n\tmock.lockVgpuInstanceGetAccountingStats.Unlock()\n\treturn mock.VgpuInstanceGetAccountingStatsFunc(vgpuInstance, n)\n}\n\n// VgpuInstanceGetAccountingStatsCalls gets all the calls that were made to VgpuInstanceGetAccountingStats.\n// Check the length with:\n//\n//\tlen(mockedInterface.VgpuInstanceGetAccountingStatsCalls())\nfunc (mock *Interface) VgpuInstanceGetAccountingStatsCalls() []struct {\n\tVgpuInstance nvml.VgpuInstance\n\tN            int\n} {\n\tvar calls []struct {\n\t\tVgpuInstance nvml.VgpuInstance\n\t\tN            int\n\t}\n\tmock.lockVgpuInstanceGetAccountingStats.RLock()\n\tcalls = mock.calls.VgpuInstanceGetAccountingStats\n\tmock.lockVgpuInstanceGetAccountingStats.RUnlock()\n\treturn calls\n}\n\n// VgpuInstanceGetEccMode calls VgpuInstanceGetEccModeFunc.\nfunc (mock *Interface) VgpuInstanceGetEccMode(vgpuInstance nvml.VgpuInstance) (nvml.EnableState, nvml.Return) {\n\tif mock.VgpuInstanceGetEccModeFunc == nil {\n\t\tpanic(\"Interface.VgpuInstanceGetEccModeFunc: method is nil but Interface.VgpuInstanceGetEccMode was just called\")\n\t}\n\tcallInfo := struct {\n\t\tVgpuInstance nvml.VgpuInstance\n\t}{\n\t\tVgpuInstance: vgpuInstance,\n\t}\n\tmock.lockVgpuInstanceGetEccMode.Lock()\n\tmock.calls.VgpuInstanceGetEccMode = append(mock.calls.VgpuInstanceGetEccMode, callInfo)\n\tmock.lockVgpuInstanceGetEccMode.Unlock()\n\treturn mock.VgpuInstanceGetEccModeFunc(vgpuInstance)\n}\n\n// VgpuInstanceGetEccModeCalls gets all the calls that were made to VgpuInstanceGetEccMode.\n// Check the length with:\n//\n//\tlen(mockedInterface.VgpuInstanceGetEccModeCalls())\nfunc (mock *Interface) VgpuInstanceGetEccModeCalls() []struct {\n\tVgpuInstance nvml.VgpuInstance\n} {\n\tvar calls []struct {\n\t\tVgpuInstance nvml.VgpuInstance\n\t}\n\tmock.lockVgpuInstanceGetEccMode.RLock()\n\tcalls = mock.calls.VgpuInstanceGetEccMode\n\tmock.lockVgpuInstanceGetEccMode.RUnlock()\n\treturn calls\n}\n\n// VgpuInstanceGetEncoderCapacity calls VgpuInstanceGetEncoderCapacityFunc.\nfunc (mock *Interface) VgpuInstanceGetEncoderCapacity(vgpuInstance nvml.VgpuInstance) (int, nvml.Return) {\n\tif mock.VgpuInstanceGetEncoderCapacityFunc == nil {\n\t\tpanic(\"Interface.VgpuInstanceGetEncoderCapacityFunc: method is nil but Interface.VgpuInstanceGetEncoderCapacity was just called\")\n\t}\n\tcallInfo := struct {\n\t\tVgpuInstance nvml.VgpuInstance\n\t}{\n\t\tVgpuInstance: vgpuInstance,\n\t}\n\tmock.lockVgpuInstanceGetEncoderCapacity.Lock()\n\tmock.calls.VgpuInstanceGetEncoderCapacity = append(mock.calls.VgpuInstanceGetEncoderCapacity, callInfo)\n\tmock.lockVgpuInstanceGetEncoderCapacity.Unlock()\n\treturn mock.VgpuInstanceGetEncoderCapacityFunc(vgpuInstance)\n}\n\n// VgpuInstanceGetEncoderCapacityCalls gets all the calls that were made to VgpuInstanceGetEncoderCapacity.\n// Check the length with:\n//\n//\tlen(mockedInterface.VgpuInstanceGetEncoderCapacityCalls())\nfunc (mock *Interface) VgpuInstanceGetEncoderCapacityCalls() []struct {\n\tVgpuInstance nvml.VgpuInstance\n} {\n\tvar calls []struct {\n\t\tVgpuInstance nvml.VgpuInstance\n\t}\n\tmock.lockVgpuInstanceGetEncoderCapacity.RLock()\n\tcalls = mock.calls.VgpuInstanceGetEncoderCapacity\n\tmock.lockVgpuInstanceGetEncoderCapacity.RUnlock()\n\treturn calls\n}\n\n// VgpuInstanceGetEncoderSessions calls VgpuInstanceGetEncoderSessionsFunc.\nfunc (mock *Interface) VgpuInstanceGetEncoderSessions(vgpuInstance nvml.VgpuInstance) (int, nvml.EncoderSessionInfo, nvml.Return) {\n\tif mock.VgpuInstanceGetEncoderSessionsFunc == nil {\n\t\tpanic(\"Interface.VgpuInstanceGetEncoderSessionsFunc: method is nil but Interface.VgpuInstanceGetEncoderSessions was just called\")\n\t}\n\tcallInfo := struct {\n\t\tVgpuInstance nvml.VgpuInstance\n\t}{\n\t\tVgpuInstance: vgpuInstance,\n\t}\n\tmock.lockVgpuInstanceGetEncoderSessions.Lock()\n\tmock.calls.VgpuInstanceGetEncoderSessions = append(mock.calls.VgpuInstanceGetEncoderSessions, callInfo)\n\tmock.lockVgpuInstanceGetEncoderSessions.Unlock()\n\treturn mock.VgpuInstanceGetEncoderSessionsFunc(vgpuInstance)\n}\n\n// VgpuInstanceGetEncoderSessionsCalls gets all the calls that were made to VgpuInstanceGetEncoderSessions.\n// Check the length with:\n//\n//\tlen(mockedInterface.VgpuInstanceGetEncoderSessionsCalls())\nfunc (mock *Interface) VgpuInstanceGetEncoderSessionsCalls() []struct {\n\tVgpuInstance nvml.VgpuInstance\n} {\n\tvar calls []struct {\n\t\tVgpuInstance nvml.VgpuInstance\n\t}\n\tmock.lockVgpuInstanceGetEncoderSessions.RLock()\n\tcalls = mock.calls.VgpuInstanceGetEncoderSessions\n\tmock.lockVgpuInstanceGetEncoderSessions.RUnlock()\n\treturn calls\n}\n\n// VgpuInstanceGetEncoderStats calls VgpuInstanceGetEncoderStatsFunc.\nfunc (mock *Interface) VgpuInstanceGetEncoderStats(vgpuInstance nvml.VgpuInstance) (int, uint32, uint32, nvml.Return) {\n\tif mock.VgpuInstanceGetEncoderStatsFunc == nil {\n\t\tpanic(\"Interface.VgpuInstanceGetEncoderStatsFunc: method is nil but Interface.VgpuInstanceGetEncoderStats was just called\")\n\t}\n\tcallInfo := struct {\n\t\tVgpuInstance nvml.VgpuInstance\n\t}{\n\t\tVgpuInstance: vgpuInstance,\n\t}\n\tmock.lockVgpuInstanceGetEncoderStats.Lock()\n\tmock.calls.VgpuInstanceGetEncoderStats = append(mock.calls.VgpuInstanceGetEncoderStats, callInfo)\n\tmock.lockVgpuInstanceGetEncoderStats.Unlock()\n\treturn mock.VgpuInstanceGetEncoderStatsFunc(vgpuInstance)\n}\n\n// VgpuInstanceGetEncoderStatsCalls gets all the calls that were made to VgpuInstanceGetEncoderStats.\n// Check the length with:\n//\n//\tlen(mockedInterface.VgpuInstanceGetEncoderStatsCalls())\nfunc (mock *Interface) VgpuInstanceGetEncoderStatsCalls() []struct {\n\tVgpuInstance nvml.VgpuInstance\n} {\n\tvar calls []struct {\n\t\tVgpuInstance nvml.VgpuInstance\n\t}\n\tmock.lockVgpuInstanceGetEncoderStats.RLock()\n\tcalls = mock.calls.VgpuInstanceGetEncoderStats\n\tmock.lockVgpuInstanceGetEncoderStats.RUnlock()\n\treturn calls\n}\n\n// VgpuInstanceGetFBCSessions calls VgpuInstanceGetFBCSessionsFunc.\nfunc (mock *Interface) VgpuInstanceGetFBCSessions(vgpuInstance nvml.VgpuInstance) (int, nvml.FBCSessionInfo, nvml.Return) {\n\tif mock.VgpuInstanceGetFBCSessionsFunc == nil {\n\t\tpanic(\"Interface.VgpuInstanceGetFBCSessionsFunc: method is nil but Interface.VgpuInstanceGetFBCSessions was just called\")\n\t}\n\tcallInfo := struct {\n\t\tVgpuInstance nvml.VgpuInstance\n\t}{\n\t\tVgpuInstance: vgpuInstance,\n\t}\n\tmock.lockVgpuInstanceGetFBCSessions.Lock()\n\tmock.calls.VgpuInstanceGetFBCSessions = append(mock.calls.VgpuInstanceGetFBCSessions, callInfo)\n\tmock.lockVgpuInstanceGetFBCSessions.Unlock()\n\treturn mock.VgpuInstanceGetFBCSessionsFunc(vgpuInstance)\n}\n\n// VgpuInstanceGetFBCSessionsCalls gets all the calls that were made to VgpuInstanceGetFBCSessions.\n// Check the length with:\n//\n//\tlen(mockedInterface.VgpuInstanceGetFBCSessionsCalls())\nfunc (mock *Interface) VgpuInstanceGetFBCSessionsCalls() []struct {\n\tVgpuInstance nvml.VgpuInstance\n} {\n\tvar calls []struct {\n\t\tVgpuInstance nvml.VgpuInstance\n\t}\n\tmock.lockVgpuInstanceGetFBCSessions.RLock()\n\tcalls = mock.calls.VgpuInstanceGetFBCSessions\n\tmock.lockVgpuInstanceGetFBCSessions.RUnlock()\n\treturn calls\n}\n\n// VgpuInstanceGetFBCStats calls VgpuInstanceGetFBCStatsFunc.\nfunc (mock *Interface) VgpuInstanceGetFBCStats(vgpuInstance nvml.VgpuInstance) (nvml.FBCStats, nvml.Return) {\n\tif mock.VgpuInstanceGetFBCStatsFunc == nil {\n\t\tpanic(\"Interface.VgpuInstanceGetFBCStatsFunc: method is nil but Interface.VgpuInstanceGetFBCStats was just called\")\n\t}\n\tcallInfo := struct {\n\t\tVgpuInstance nvml.VgpuInstance\n\t}{\n\t\tVgpuInstance: vgpuInstance,\n\t}\n\tmock.lockVgpuInstanceGetFBCStats.Lock()\n\tmock.calls.VgpuInstanceGetFBCStats = append(mock.calls.VgpuInstanceGetFBCStats, callInfo)\n\tmock.lockVgpuInstanceGetFBCStats.Unlock()\n\treturn mock.VgpuInstanceGetFBCStatsFunc(vgpuInstance)\n}\n\n// VgpuInstanceGetFBCStatsCalls gets all the calls that were made to VgpuInstanceGetFBCStats.\n// Check the length with:\n//\n//\tlen(mockedInterface.VgpuInstanceGetFBCStatsCalls())\nfunc (mock *Interface) VgpuInstanceGetFBCStatsCalls() []struct {\n\tVgpuInstance nvml.VgpuInstance\n} {\n\tvar calls []struct {\n\t\tVgpuInstance nvml.VgpuInstance\n\t}\n\tmock.lockVgpuInstanceGetFBCStats.RLock()\n\tcalls = mock.calls.VgpuInstanceGetFBCStats\n\tmock.lockVgpuInstanceGetFBCStats.RUnlock()\n\treturn calls\n}\n\n// VgpuInstanceGetFbUsage calls VgpuInstanceGetFbUsageFunc.\nfunc (mock *Interface) VgpuInstanceGetFbUsage(vgpuInstance nvml.VgpuInstance) (uint64, nvml.Return) {\n\tif mock.VgpuInstanceGetFbUsageFunc == nil {\n\t\tpanic(\"Interface.VgpuInstanceGetFbUsageFunc: method is nil but Interface.VgpuInstanceGetFbUsage was just called\")\n\t}\n\tcallInfo := struct {\n\t\tVgpuInstance nvml.VgpuInstance\n\t}{\n\t\tVgpuInstance: vgpuInstance,\n\t}\n\tmock.lockVgpuInstanceGetFbUsage.Lock()\n\tmock.calls.VgpuInstanceGetFbUsage = append(mock.calls.VgpuInstanceGetFbUsage, callInfo)\n\tmock.lockVgpuInstanceGetFbUsage.Unlock()\n\treturn mock.VgpuInstanceGetFbUsageFunc(vgpuInstance)\n}\n\n// VgpuInstanceGetFbUsageCalls gets all the calls that were made to VgpuInstanceGetFbUsage.\n// Check the length with:\n//\n//\tlen(mockedInterface.VgpuInstanceGetFbUsageCalls())\nfunc (mock *Interface) VgpuInstanceGetFbUsageCalls() []struct {\n\tVgpuInstance nvml.VgpuInstance\n} {\n\tvar calls []struct {\n\t\tVgpuInstance nvml.VgpuInstance\n\t}\n\tmock.lockVgpuInstanceGetFbUsage.RLock()\n\tcalls = mock.calls.VgpuInstanceGetFbUsage\n\tmock.lockVgpuInstanceGetFbUsage.RUnlock()\n\treturn calls\n}\n\n// VgpuInstanceGetFrameRateLimit calls VgpuInstanceGetFrameRateLimitFunc.\nfunc (mock *Interface) VgpuInstanceGetFrameRateLimit(vgpuInstance nvml.VgpuInstance) (uint32, nvml.Return) {\n\tif mock.VgpuInstanceGetFrameRateLimitFunc == nil {\n\t\tpanic(\"Interface.VgpuInstanceGetFrameRateLimitFunc: method is nil but Interface.VgpuInstanceGetFrameRateLimit was just called\")\n\t}\n\tcallInfo := struct {\n\t\tVgpuInstance nvml.VgpuInstance\n\t}{\n\t\tVgpuInstance: vgpuInstance,\n\t}\n\tmock.lockVgpuInstanceGetFrameRateLimit.Lock()\n\tmock.calls.VgpuInstanceGetFrameRateLimit = append(mock.calls.VgpuInstanceGetFrameRateLimit, callInfo)\n\tmock.lockVgpuInstanceGetFrameRateLimit.Unlock()\n\treturn mock.VgpuInstanceGetFrameRateLimitFunc(vgpuInstance)\n}\n\n// VgpuInstanceGetFrameRateLimitCalls gets all the calls that were made to VgpuInstanceGetFrameRateLimit.\n// Check the length with:\n//\n//\tlen(mockedInterface.VgpuInstanceGetFrameRateLimitCalls())\nfunc (mock *Interface) VgpuInstanceGetFrameRateLimitCalls() []struct {\n\tVgpuInstance nvml.VgpuInstance\n} {\n\tvar calls []struct {\n\t\tVgpuInstance nvml.VgpuInstance\n\t}\n\tmock.lockVgpuInstanceGetFrameRateLimit.RLock()\n\tcalls = mock.calls.VgpuInstanceGetFrameRateLimit\n\tmock.lockVgpuInstanceGetFrameRateLimit.RUnlock()\n\treturn calls\n}\n\n// VgpuInstanceGetGpuInstanceId calls VgpuInstanceGetGpuInstanceIdFunc.\nfunc (mock *Interface) VgpuInstanceGetGpuInstanceId(vgpuInstance nvml.VgpuInstance) (int, nvml.Return) {\n\tif mock.VgpuInstanceGetGpuInstanceIdFunc == nil {\n\t\tpanic(\"Interface.VgpuInstanceGetGpuInstanceIdFunc: method is nil but Interface.VgpuInstanceGetGpuInstanceId was just called\")\n\t}\n\tcallInfo := struct {\n\t\tVgpuInstance nvml.VgpuInstance\n\t}{\n\t\tVgpuInstance: vgpuInstance,\n\t}\n\tmock.lockVgpuInstanceGetGpuInstanceId.Lock()\n\tmock.calls.VgpuInstanceGetGpuInstanceId = append(mock.calls.VgpuInstanceGetGpuInstanceId, callInfo)\n\tmock.lockVgpuInstanceGetGpuInstanceId.Unlock()\n\treturn mock.VgpuInstanceGetGpuInstanceIdFunc(vgpuInstance)\n}\n\n// VgpuInstanceGetGpuInstanceIdCalls gets all the calls that were made to VgpuInstanceGetGpuInstanceId.\n// Check the length with:\n//\n//\tlen(mockedInterface.VgpuInstanceGetGpuInstanceIdCalls())\nfunc (mock *Interface) VgpuInstanceGetGpuInstanceIdCalls() []struct {\n\tVgpuInstance nvml.VgpuInstance\n} {\n\tvar calls []struct {\n\t\tVgpuInstance nvml.VgpuInstance\n\t}\n\tmock.lockVgpuInstanceGetGpuInstanceId.RLock()\n\tcalls = mock.calls.VgpuInstanceGetGpuInstanceId\n\tmock.lockVgpuInstanceGetGpuInstanceId.RUnlock()\n\treturn calls\n}\n\n// VgpuInstanceGetGpuPciId calls VgpuInstanceGetGpuPciIdFunc.\nfunc (mock *Interface) VgpuInstanceGetGpuPciId(vgpuInstance nvml.VgpuInstance) (string, nvml.Return) {\n\tif mock.VgpuInstanceGetGpuPciIdFunc == nil {\n\t\tpanic(\"Interface.VgpuInstanceGetGpuPciIdFunc: method is nil but Interface.VgpuInstanceGetGpuPciId was just called\")\n\t}\n\tcallInfo := struct {\n\t\tVgpuInstance nvml.VgpuInstance\n\t}{\n\t\tVgpuInstance: vgpuInstance,\n\t}\n\tmock.lockVgpuInstanceGetGpuPciId.Lock()\n\tmock.calls.VgpuInstanceGetGpuPciId = append(mock.calls.VgpuInstanceGetGpuPciId, callInfo)\n\tmock.lockVgpuInstanceGetGpuPciId.Unlock()\n\treturn mock.VgpuInstanceGetGpuPciIdFunc(vgpuInstance)\n}\n\n// VgpuInstanceGetGpuPciIdCalls gets all the calls that were made to VgpuInstanceGetGpuPciId.\n// Check the length with:\n//\n//\tlen(mockedInterface.VgpuInstanceGetGpuPciIdCalls())\nfunc (mock *Interface) VgpuInstanceGetGpuPciIdCalls() []struct {\n\tVgpuInstance nvml.VgpuInstance\n} {\n\tvar calls []struct {\n\t\tVgpuInstance nvml.VgpuInstance\n\t}\n\tmock.lockVgpuInstanceGetGpuPciId.RLock()\n\tcalls = mock.calls.VgpuInstanceGetGpuPciId\n\tmock.lockVgpuInstanceGetGpuPciId.RUnlock()\n\treturn calls\n}\n\n// VgpuInstanceGetLicenseInfo calls VgpuInstanceGetLicenseInfoFunc.\nfunc (mock *Interface) VgpuInstanceGetLicenseInfo(vgpuInstance nvml.VgpuInstance) (nvml.VgpuLicenseInfo, nvml.Return) {\n\tif mock.VgpuInstanceGetLicenseInfoFunc == nil {\n\t\tpanic(\"Interface.VgpuInstanceGetLicenseInfoFunc: method is nil but Interface.VgpuInstanceGetLicenseInfo was just called\")\n\t}\n\tcallInfo := struct {\n\t\tVgpuInstance nvml.VgpuInstance\n\t}{\n\t\tVgpuInstance: vgpuInstance,\n\t}\n\tmock.lockVgpuInstanceGetLicenseInfo.Lock()\n\tmock.calls.VgpuInstanceGetLicenseInfo = append(mock.calls.VgpuInstanceGetLicenseInfo, callInfo)\n\tmock.lockVgpuInstanceGetLicenseInfo.Unlock()\n\treturn mock.VgpuInstanceGetLicenseInfoFunc(vgpuInstance)\n}\n\n// VgpuInstanceGetLicenseInfoCalls gets all the calls that were made to VgpuInstanceGetLicenseInfo.\n// Check the length with:\n//\n//\tlen(mockedInterface.VgpuInstanceGetLicenseInfoCalls())\nfunc (mock *Interface) VgpuInstanceGetLicenseInfoCalls() []struct {\n\tVgpuInstance nvml.VgpuInstance\n} {\n\tvar calls []struct {\n\t\tVgpuInstance nvml.VgpuInstance\n\t}\n\tmock.lockVgpuInstanceGetLicenseInfo.RLock()\n\tcalls = mock.calls.VgpuInstanceGetLicenseInfo\n\tmock.lockVgpuInstanceGetLicenseInfo.RUnlock()\n\treturn calls\n}\n\n// VgpuInstanceGetLicenseStatus calls VgpuInstanceGetLicenseStatusFunc.\nfunc (mock *Interface) VgpuInstanceGetLicenseStatus(vgpuInstance nvml.VgpuInstance) (int, nvml.Return) {\n\tif mock.VgpuInstanceGetLicenseStatusFunc == nil {\n\t\tpanic(\"Interface.VgpuInstanceGetLicenseStatusFunc: method is nil but Interface.VgpuInstanceGetLicenseStatus was just called\")\n\t}\n\tcallInfo := struct {\n\t\tVgpuInstance nvml.VgpuInstance\n\t}{\n\t\tVgpuInstance: vgpuInstance,\n\t}\n\tmock.lockVgpuInstanceGetLicenseStatus.Lock()\n\tmock.calls.VgpuInstanceGetLicenseStatus = append(mock.calls.VgpuInstanceGetLicenseStatus, callInfo)\n\tmock.lockVgpuInstanceGetLicenseStatus.Unlock()\n\treturn mock.VgpuInstanceGetLicenseStatusFunc(vgpuInstance)\n}\n\n// VgpuInstanceGetLicenseStatusCalls gets all the calls that were made to VgpuInstanceGetLicenseStatus.\n// Check the length with:\n//\n//\tlen(mockedInterface.VgpuInstanceGetLicenseStatusCalls())\nfunc (mock *Interface) VgpuInstanceGetLicenseStatusCalls() []struct {\n\tVgpuInstance nvml.VgpuInstance\n} {\n\tvar calls []struct {\n\t\tVgpuInstance nvml.VgpuInstance\n\t}\n\tmock.lockVgpuInstanceGetLicenseStatus.RLock()\n\tcalls = mock.calls.VgpuInstanceGetLicenseStatus\n\tmock.lockVgpuInstanceGetLicenseStatus.RUnlock()\n\treturn calls\n}\n\n// VgpuInstanceGetMdevUUID calls VgpuInstanceGetMdevUUIDFunc.\nfunc (mock *Interface) VgpuInstanceGetMdevUUID(vgpuInstance nvml.VgpuInstance) (string, nvml.Return) {\n\tif mock.VgpuInstanceGetMdevUUIDFunc == nil {\n\t\tpanic(\"Interface.VgpuInstanceGetMdevUUIDFunc: method is nil but Interface.VgpuInstanceGetMdevUUID was just called\")\n\t}\n\tcallInfo := struct {\n\t\tVgpuInstance nvml.VgpuInstance\n\t}{\n\t\tVgpuInstance: vgpuInstance,\n\t}\n\tmock.lockVgpuInstanceGetMdevUUID.Lock()\n\tmock.calls.VgpuInstanceGetMdevUUID = append(mock.calls.VgpuInstanceGetMdevUUID, callInfo)\n\tmock.lockVgpuInstanceGetMdevUUID.Unlock()\n\treturn mock.VgpuInstanceGetMdevUUIDFunc(vgpuInstance)\n}\n\n// VgpuInstanceGetMdevUUIDCalls gets all the calls that were made to VgpuInstanceGetMdevUUID.\n// Check the length with:\n//\n//\tlen(mockedInterface.VgpuInstanceGetMdevUUIDCalls())\nfunc (mock *Interface) VgpuInstanceGetMdevUUIDCalls() []struct {\n\tVgpuInstance nvml.VgpuInstance\n} {\n\tvar calls []struct {\n\t\tVgpuInstance nvml.VgpuInstance\n\t}\n\tmock.lockVgpuInstanceGetMdevUUID.RLock()\n\tcalls = mock.calls.VgpuInstanceGetMdevUUID\n\tmock.lockVgpuInstanceGetMdevUUID.RUnlock()\n\treturn calls\n}\n\n// VgpuInstanceGetMetadata calls VgpuInstanceGetMetadataFunc.\nfunc (mock *Interface) VgpuInstanceGetMetadata(vgpuInstance nvml.VgpuInstance) (nvml.VgpuMetadata, nvml.Return) {\n\tif mock.VgpuInstanceGetMetadataFunc == nil {\n\t\tpanic(\"Interface.VgpuInstanceGetMetadataFunc: method is nil but Interface.VgpuInstanceGetMetadata was just called\")\n\t}\n\tcallInfo := struct {\n\t\tVgpuInstance nvml.VgpuInstance\n\t}{\n\t\tVgpuInstance: vgpuInstance,\n\t}\n\tmock.lockVgpuInstanceGetMetadata.Lock()\n\tmock.calls.VgpuInstanceGetMetadata = append(mock.calls.VgpuInstanceGetMetadata, callInfo)\n\tmock.lockVgpuInstanceGetMetadata.Unlock()\n\treturn mock.VgpuInstanceGetMetadataFunc(vgpuInstance)\n}\n\n// VgpuInstanceGetMetadataCalls gets all the calls that were made to VgpuInstanceGetMetadata.\n// Check the length with:\n//\n//\tlen(mockedInterface.VgpuInstanceGetMetadataCalls())\nfunc (mock *Interface) VgpuInstanceGetMetadataCalls() []struct {\n\tVgpuInstance nvml.VgpuInstance\n} {\n\tvar calls []struct {\n\t\tVgpuInstance nvml.VgpuInstance\n\t}\n\tmock.lockVgpuInstanceGetMetadata.RLock()\n\tcalls = mock.calls.VgpuInstanceGetMetadata\n\tmock.lockVgpuInstanceGetMetadata.RUnlock()\n\treturn calls\n}\n\n// VgpuInstanceGetRuntimeStateSize calls VgpuInstanceGetRuntimeStateSizeFunc.\nfunc (mock *Interface) VgpuInstanceGetRuntimeStateSize(vgpuInstance nvml.VgpuInstance) (nvml.VgpuRuntimeState, nvml.Return) {\n\tif mock.VgpuInstanceGetRuntimeStateSizeFunc == nil {\n\t\tpanic(\"Interface.VgpuInstanceGetRuntimeStateSizeFunc: method is nil but Interface.VgpuInstanceGetRuntimeStateSize was just called\")\n\t}\n\tcallInfo := struct {\n\t\tVgpuInstance nvml.VgpuInstance\n\t}{\n\t\tVgpuInstance: vgpuInstance,\n\t}\n\tmock.lockVgpuInstanceGetRuntimeStateSize.Lock()\n\tmock.calls.VgpuInstanceGetRuntimeStateSize = append(mock.calls.VgpuInstanceGetRuntimeStateSize, callInfo)\n\tmock.lockVgpuInstanceGetRuntimeStateSize.Unlock()\n\treturn mock.VgpuInstanceGetRuntimeStateSizeFunc(vgpuInstance)\n}\n\n// VgpuInstanceGetRuntimeStateSizeCalls gets all the calls that were made to VgpuInstanceGetRuntimeStateSize.\n// Check the length with:\n//\n//\tlen(mockedInterface.VgpuInstanceGetRuntimeStateSizeCalls())\nfunc (mock *Interface) VgpuInstanceGetRuntimeStateSizeCalls() []struct {\n\tVgpuInstance nvml.VgpuInstance\n} {\n\tvar calls []struct {\n\t\tVgpuInstance nvml.VgpuInstance\n\t}\n\tmock.lockVgpuInstanceGetRuntimeStateSize.RLock()\n\tcalls = mock.calls.VgpuInstanceGetRuntimeStateSize\n\tmock.lockVgpuInstanceGetRuntimeStateSize.RUnlock()\n\treturn calls\n}\n\n// VgpuInstanceGetType calls VgpuInstanceGetTypeFunc.\nfunc (mock *Interface) VgpuInstanceGetType(vgpuInstance nvml.VgpuInstance) (nvml.VgpuTypeId, nvml.Return) {\n\tif mock.VgpuInstanceGetTypeFunc == nil {\n\t\tpanic(\"Interface.VgpuInstanceGetTypeFunc: method is nil but Interface.VgpuInstanceGetType was just called\")\n\t}\n\tcallInfo := struct {\n\t\tVgpuInstance nvml.VgpuInstance\n\t}{\n\t\tVgpuInstance: vgpuInstance,\n\t}\n\tmock.lockVgpuInstanceGetType.Lock()\n\tmock.calls.VgpuInstanceGetType = append(mock.calls.VgpuInstanceGetType, callInfo)\n\tmock.lockVgpuInstanceGetType.Unlock()\n\treturn mock.VgpuInstanceGetTypeFunc(vgpuInstance)\n}\n\n// VgpuInstanceGetTypeCalls gets all the calls that were made to VgpuInstanceGetType.\n// Check the length with:\n//\n//\tlen(mockedInterface.VgpuInstanceGetTypeCalls())\nfunc (mock *Interface) VgpuInstanceGetTypeCalls() []struct {\n\tVgpuInstance nvml.VgpuInstance\n} {\n\tvar calls []struct {\n\t\tVgpuInstance nvml.VgpuInstance\n\t}\n\tmock.lockVgpuInstanceGetType.RLock()\n\tcalls = mock.calls.VgpuInstanceGetType\n\tmock.lockVgpuInstanceGetType.RUnlock()\n\treturn calls\n}\n\n// VgpuInstanceGetUUID calls VgpuInstanceGetUUIDFunc.\nfunc (mock *Interface) VgpuInstanceGetUUID(vgpuInstance nvml.VgpuInstance) (string, nvml.Return) {\n\tif mock.VgpuInstanceGetUUIDFunc == nil {\n\t\tpanic(\"Interface.VgpuInstanceGetUUIDFunc: method is nil but Interface.VgpuInstanceGetUUID was just called\")\n\t}\n\tcallInfo := struct {\n\t\tVgpuInstance nvml.VgpuInstance\n\t}{\n\t\tVgpuInstance: vgpuInstance,\n\t}\n\tmock.lockVgpuInstanceGetUUID.Lock()\n\tmock.calls.VgpuInstanceGetUUID = append(mock.calls.VgpuInstanceGetUUID, callInfo)\n\tmock.lockVgpuInstanceGetUUID.Unlock()\n\treturn mock.VgpuInstanceGetUUIDFunc(vgpuInstance)\n}\n\n// VgpuInstanceGetUUIDCalls gets all the calls that were made to VgpuInstanceGetUUID.\n// Check the length with:\n//\n//\tlen(mockedInterface.VgpuInstanceGetUUIDCalls())\nfunc (mock *Interface) VgpuInstanceGetUUIDCalls() []struct {\n\tVgpuInstance nvml.VgpuInstance\n} {\n\tvar calls []struct {\n\t\tVgpuInstance nvml.VgpuInstance\n\t}\n\tmock.lockVgpuInstanceGetUUID.RLock()\n\tcalls = mock.calls.VgpuInstanceGetUUID\n\tmock.lockVgpuInstanceGetUUID.RUnlock()\n\treturn calls\n}\n\n// VgpuInstanceGetVmDriverVersion calls VgpuInstanceGetVmDriverVersionFunc.\nfunc (mock *Interface) VgpuInstanceGetVmDriverVersion(vgpuInstance nvml.VgpuInstance) (string, nvml.Return) {\n\tif mock.VgpuInstanceGetVmDriverVersionFunc == nil {\n\t\tpanic(\"Interface.VgpuInstanceGetVmDriverVersionFunc: method is nil but Interface.VgpuInstanceGetVmDriverVersion was just called\")\n\t}\n\tcallInfo := struct {\n\t\tVgpuInstance nvml.VgpuInstance\n\t}{\n\t\tVgpuInstance: vgpuInstance,\n\t}\n\tmock.lockVgpuInstanceGetVmDriverVersion.Lock()\n\tmock.calls.VgpuInstanceGetVmDriverVersion = append(mock.calls.VgpuInstanceGetVmDriverVersion, callInfo)\n\tmock.lockVgpuInstanceGetVmDriverVersion.Unlock()\n\treturn mock.VgpuInstanceGetVmDriverVersionFunc(vgpuInstance)\n}\n\n// VgpuInstanceGetVmDriverVersionCalls gets all the calls that were made to VgpuInstanceGetVmDriverVersion.\n// Check the length with:\n//\n//\tlen(mockedInterface.VgpuInstanceGetVmDriverVersionCalls())\nfunc (mock *Interface) VgpuInstanceGetVmDriverVersionCalls() []struct {\n\tVgpuInstance nvml.VgpuInstance\n} {\n\tvar calls []struct {\n\t\tVgpuInstance nvml.VgpuInstance\n\t}\n\tmock.lockVgpuInstanceGetVmDriverVersion.RLock()\n\tcalls = mock.calls.VgpuInstanceGetVmDriverVersion\n\tmock.lockVgpuInstanceGetVmDriverVersion.RUnlock()\n\treturn calls\n}\n\n// VgpuInstanceGetVmID calls VgpuInstanceGetVmIDFunc.\nfunc (mock *Interface) VgpuInstanceGetVmID(vgpuInstance nvml.VgpuInstance) (string, nvml.VgpuVmIdType, nvml.Return) {\n\tif mock.VgpuInstanceGetVmIDFunc == nil {\n\t\tpanic(\"Interface.VgpuInstanceGetVmIDFunc: method is nil but Interface.VgpuInstanceGetVmID was just called\")\n\t}\n\tcallInfo := struct {\n\t\tVgpuInstance nvml.VgpuInstance\n\t}{\n\t\tVgpuInstance: vgpuInstance,\n\t}\n\tmock.lockVgpuInstanceGetVmID.Lock()\n\tmock.calls.VgpuInstanceGetVmID = append(mock.calls.VgpuInstanceGetVmID, callInfo)\n\tmock.lockVgpuInstanceGetVmID.Unlock()\n\treturn mock.VgpuInstanceGetVmIDFunc(vgpuInstance)\n}\n\n// VgpuInstanceGetVmIDCalls gets all the calls that were made to VgpuInstanceGetVmID.\n// Check the length with:\n//\n//\tlen(mockedInterface.VgpuInstanceGetVmIDCalls())\nfunc (mock *Interface) VgpuInstanceGetVmIDCalls() []struct {\n\tVgpuInstance nvml.VgpuInstance\n} {\n\tvar calls []struct {\n\t\tVgpuInstance nvml.VgpuInstance\n\t}\n\tmock.lockVgpuInstanceGetVmID.RLock()\n\tcalls = mock.calls.VgpuInstanceGetVmID\n\tmock.lockVgpuInstanceGetVmID.RUnlock()\n\treturn calls\n}\n\n// VgpuInstanceSetEncoderCapacity calls VgpuInstanceSetEncoderCapacityFunc.\nfunc (mock *Interface) VgpuInstanceSetEncoderCapacity(vgpuInstance nvml.VgpuInstance, n int) nvml.Return {\n\tif mock.VgpuInstanceSetEncoderCapacityFunc == nil {\n\t\tpanic(\"Interface.VgpuInstanceSetEncoderCapacityFunc: method is nil but Interface.VgpuInstanceSetEncoderCapacity was just called\")\n\t}\n\tcallInfo := struct {\n\t\tVgpuInstance nvml.VgpuInstance\n\t\tN            int\n\t}{\n\t\tVgpuInstance: vgpuInstance,\n\t\tN:            n,\n\t}\n\tmock.lockVgpuInstanceSetEncoderCapacity.Lock()\n\tmock.calls.VgpuInstanceSetEncoderCapacity = append(mock.calls.VgpuInstanceSetEncoderCapacity, callInfo)\n\tmock.lockVgpuInstanceSetEncoderCapacity.Unlock()\n\treturn mock.VgpuInstanceSetEncoderCapacityFunc(vgpuInstance, n)\n}\n\n// VgpuInstanceSetEncoderCapacityCalls gets all the calls that were made to VgpuInstanceSetEncoderCapacity.\n// Check the length with:\n//\n//\tlen(mockedInterface.VgpuInstanceSetEncoderCapacityCalls())\nfunc (mock *Interface) VgpuInstanceSetEncoderCapacityCalls() []struct {\n\tVgpuInstance nvml.VgpuInstance\n\tN            int\n} {\n\tvar calls []struct {\n\t\tVgpuInstance nvml.VgpuInstance\n\t\tN            int\n\t}\n\tmock.lockVgpuInstanceSetEncoderCapacity.RLock()\n\tcalls = mock.calls.VgpuInstanceSetEncoderCapacity\n\tmock.lockVgpuInstanceSetEncoderCapacity.RUnlock()\n\treturn calls\n}\n\n// VgpuTypeGetBAR1Info calls VgpuTypeGetBAR1InfoFunc.\nfunc (mock *Interface) VgpuTypeGetBAR1Info(vgpuTypeId nvml.VgpuTypeId) (nvml.VgpuTypeBar1Info, nvml.Return) {\n\tif mock.VgpuTypeGetBAR1InfoFunc == nil {\n\t\tpanic(\"Interface.VgpuTypeGetBAR1InfoFunc: method is nil but Interface.VgpuTypeGetBAR1Info was just called\")\n\t}\n\tcallInfo := struct {\n\t\tVgpuTypeId nvml.VgpuTypeId\n\t}{\n\t\tVgpuTypeId: vgpuTypeId,\n\t}\n\tmock.lockVgpuTypeGetBAR1Info.Lock()\n\tmock.calls.VgpuTypeGetBAR1Info = append(mock.calls.VgpuTypeGetBAR1Info, callInfo)\n\tmock.lockVgpuTypeGetBAR1Info.Unlock()\n\treturn mock.VgpuTypeGetBAR1InfoFunc(vgpuTypeId)\n}\n\n// VgpuTypeGetBAR1InfoCalls gets all the calls that were made to VgpuTypeGetBAR1Info.\n// Check the length with:\n//\n//\tlen(mockedInterface.VgpuTypeGetBAR1InfoCalls())\nfunc (mock *Interface) VgpuTypeGetBAR1InfoCalls() []struct {\n\tVgpuTypeId nvml.VgpuTypeId\n} {\n\tvar calls []struct {\n\t\tVgpuTypeId nvml.VgpuTypeId\n\t}\n\tmock.lockVgpuTypeGetBAR1Info.RLock()\n\tcalls = mock.calls.VgpuTypeGetBAR1Info\n\tmock.lockVgpuTypeGetBAR1Info.RUnlock()\n\treturn calls\n}\n\n// VgpuTypeGetCapabilities calls VgpuTypeGetCapabilitiesFunc.\nfunc (mock *Interface) VgpuTypeGetCapabilities(vgpuTypeId nvml.VgpuTypeId, vgpuCapability nvml.VgpuCapability) (bool, nvml.Return) {\n\tif mock.VgpuTypeGetCapabilitiesFunc == nil {\n\t\tpanic(\"Interface.VgpuTypeGetCapabilitiesFunc: method is nil but Interface.VgpuTypeGetCapabilities was just called\")\n\t}\n\tcallInfo := struct {\n\t\tVgpuTypeId     nvml.VgpuTypeId\n\t\tVgpuCapability nvml.VgpuCapability\n\t}{\n\t\tVgpuTypeId:     vgpuTypeId,\n\t\tVgpuCapability: vgpuCapability,\n\t}\n\tmock.lockVgpuTypeGetCapabilities.Lock()\n\tmock.calls.VgpuTypeGetCapabilities = append(mock.calls.VgpuTypeGetCapabilities, callInfo)\n\tmock.lockVgpuTypeGetCapabilities.Unlock()\n\treturn mock.VgpuTypeGetCapabilitiesFunc(vgpuTypeId, vgpuCapability)\n}\n\n// VgpuTypeGetCapabilitiesCalls gets all the calls that were made to VgpuTypeGetCapabilities.\n// Check the length with:\n//\n//\tlen(mockedInterface.VgpuTypeGetCapabilitiesCalls())\nfunc (mock *Interface) VgpuTypeGetCapabilitiesCalls() []struct {\n\tVgpuTypeId     nvml.VgpuTypeId\n\tVgpuCapability nvml.VgpuCapability\n} {\n\tvar calls []struct {\n\t\tVgpuTypeId     nvml.VgpuTypeId\n\t\tVgpuCapability nvml.VgpuCapability\n\t}\n\tmock.lockVgpuTypeGetCapabilities.RLock()\n\tcalls = mock.calls.VgpuTypeGetCapabilities\n\tmock.lockVgpuTypeGetCapabilities.RUnlock()\n\treturn calls\n}\n\n// VgpuTypeGetClass calls VgpuTypeGetClassFunc.\nfunc (mock *Interface) VgpuTypeGetClass(vgpuTypeId nvml.VgpuTypeId) (string, nvml.Return) {\n\tif mock.VgpuTypeGetClassFunc == nil {\n\t\tpanic(\"Interface.VgpuTypeGetClassFunc: method is nil but Interface.VgpuTypeGetClass was just called\")\n\t}\n\tcallInfo := struct {\n\t\tVgpuTypeId nvml.VgpuTypeId\n\t}{\n\t\tVgpuTypeId: vgpuTypeId,\n\t}\n\tmock.lockVgpuTypeGetClass.Lock()\n\tmock.calls.VgpuTypeGetClass = append(mock.calls.VgpuTypeGetClass, callInfo)\n\tmock.lockVgpuTypeGetClass.Unlock()\n\treturn mock.VgpuTypeGetClassFunc(vgpuTypeId)\n}\n\n// VgpuTypeGetClassCalls gets all the calls that were made to VgpuTypeGetClass.\n// Check the length with:\n//\n//\tlen(mockedInterface.VgpuTypeGetClassCalls())\nfunc (mock *Interface) VgpuTypeGetClassCalls() []struct {\n\tVgpuTypeId nvml.VgpuTypeId\n} {\n\tvar calls []struct {\n\t\tVgpuTypeId nvml.VgpuTypeId\n\t}\n\tmock.lockVgpuTypeGetClass.RLock()\n\tcalls = mock.calls.VgpuTypeGetClass\n\tmock.lockVgpuTypeGetClass.RUnlock()\n\treturn calls\n}\n\n// VgpuTypeGetDeviceID calls VgpuTypeGetDeviceIDFunc.\nfunc (mock *Interface) VgpuTypeGetDeviceID(vgpuTypeId nvml.VgpuTypeId) (uint64, uint64, nvml.Return) {\n\tif mock.VgpuTypeGetDeviceIDFunc == nil {\n\t\tpanic(\"Interface.VgpuTypeGetDeviceIDFunc: method is nil but Interface.VgpuTypeGetDeviceID was just called\")\n\t}\n\tcallInfo := struct {\n\t\tVgpuTypeId nvml.VgpuTypeId\n\t}{\n\t\tVgpuTypeId: vgpuTypeId,\n\t}\n\tmock.lockVgpuTypeGetDeviceID.Lock()\n\tmock.calls.VgpuTypeGetDeviceID = append(mock.calls.VgpuTypeGetDeviceID, callInfo)\n\tmock.lockVgpuTypeGetDeviceID.Unlock()\n\treturn mock.VgpuTypeGetDeviceIDFunc(vgpuTypeId)\n}\n\n// VgpuTypeGetDeviceIDCalls gets all the calls that were made to VgpuTypeGetDeviceID.\n// Check the length with:\n//\n//\tlen(mockedInterface.VgpuTypeGetDeviceIDCalls())\nfunc (mock *Interface) VgpuTypeGetDeviceIDCalls() []struct {\n\tVgpuTypeId nvml.VgpuTypeId\n} {\n\tvar calls []struct {\n\t\tVgpuTypeId nvml.VgpuTypeId\n\t}\n\tmock.lockVgpuTypeGetDeviceID.RLock()\n\tcalls = mock.calls.VgpuTypeGetDeviceID\n\tmock.lockVgpuTypeGetDeviceID.RUnlock()\n\treturn calls\n}\n\n// VgpuTypeGetFrameRateLimit calls VgpuTypeGetFrameRateLimitFunc.\nfunc (mock *Interface) VgpuTypeGetFrameRateLimit(vgpuTypeId nvml.VgpuTypeId) (uint32, nvml.Return) {\n\tif mock.VgpuTypeGetFrameRateLimitFunc == nil {\n\t\tpanic(\"Interface.VgpuTypeGetFrameRateLimitFunc: method is nil but Interface.VgpuTypeGetFrameRateLimit was just called\")\n\t}\n\tcallInfo := struct {\n\t\tVgpuTypeId nvml.VgpuTypeId\n\t}{\n\t\tVgpuTypeId: vgpuTypeId,\n\t}\n\tmock.lockVgpuTypeGetFrameRateLimit.Lock()\n\tmock.calls.VgpuTypeGetFrameRateLimit = append(mock.calls.VgpuTypeGetFrameRateLimit, callInfo)\n\tmock.lockVgpuTypeGetFrameRateLimit.Unlock()\n\treturn mock.VgpuTypeGetFrameRateLimitFunc(vgpuTypeId)\n}\n\n// VgpuTypeGetFrameRateLimitCalls gets all the calls that were made to VgpuTypeGetFrameRateLimit.\n// Check the length with:\n//\n//\tlen(mockedInterface.VgpuTypeGetFrameRateLimitCalls())\nfunc (mock *Interface) VgpuTypeGetFrameRateLimitCalls() []struct {\n\tVgpuTypeId nvml.VgpuTypeId\n} {\n\tvar calls []struct {\n\t\tVgpuTypeId nvml.VgpuTypeId\n\t}\n\tmock.lockVgpuTypeGetFrameRateLimit.RLock()\n\tcalls = mock.calls.VgpuTypeGetFrameRateLimit\n\tmock.lockVgpuTypeGetFrameRateLimit.RUnlock()\n\treturn calls\n}\n\n// VgpuTypeGetFramebufferSize calls VgpuTypeGetFramebufferSizeFunc.\nfunc (mock *Interface) VgpuTypeGetFramebufferSize(vgpuTypeId nvml.VgpuTypeId) (uint64, nvml.Return) {\n\tif mock.VgpuTypeGetFramebufferSizeFunc == nil {\n\t\tpanic(\"Interface.VgpuTypeGetFramebufferSizeFunc: method is nil but Interface.VgpuTypeGetFramebufferSize was just called\")\n\t}\n\tcallInfo := struct {\n\t\tVgpuTypeId nvml.VgpuTypeId\n\t}{\n\t\tVgpuTypeId: vgpuTypeId,\n\t}\n\tmock.lockVgpuTypeGetFramebufferSize.Lock()\n\tmock.calls.VgpuTypeGetFramebufferSize = append(mock.calls.VgpuTypeGetFramebufferSize, callInfo)\n\tmock.lockVgpuTypeGetFramebufferSize.Unlock()\n\treturn mock.VgpuTypeGetFramebufferSizeFunc(vgpuTypeId)\n}\n\n// VgpuTypeGetFramebufferSizeCalls gets all the calls that were made to VgpuTypeGetFramebufferSize.\n// Check the length with:\n//\n//\tlen(mockedInterface.VgpuTypeGetFramebufferSizeCalls())\nfunc (mock *Interface) VgpuTypeGetFramebufferSizeCalls() []struct {\n\tVgpuTypeId nvml.VgpuTypeId\n} {\n\tvar calls []struct {\n\t\tVgpuTypeId nvml.VgpuTypeId\n\t}\n\tmock.lockVgpuTypeGetFramebufferSize.RLock()\n\tcalls = mock.calls.VgpuTypeGetFramebufferSize\n\tmock.lockVgpuTypeGetFramebufferSize.RUnlock()\n\treturn calls\n}\n\n// VgpuTypeGetGpuInstanceProfileId calls VgpuTypeGetGpuInstanceProfileIdFunc.\nfunc (mock *Interface) VgpuTypeGetGpuInstanceProfileId(vgpuTypeId nvml.VgpuTypeId) (uint32, nvml.Return) {\n\tif mock.VgpuTypeGetGpuInstanceProfileIdFunc == nil {\n\t\tpanic(\"Interface.VgpuTypeGetGpuInstanceProfileIdFunc: method is nil but Interface.VgpuTypeGetGpuInstanceProfileId was just called\")\n\t}\n\tcallInfo := struct {\n\t\tVgpuTypeId nvml.VgpuTypeId\n\t}{\n\t\tVgpuTypeId: vgpuTypeId,\n\t}\n\tmock.lockVgpuTypeGetGpuInstanceProfileId.Lock()\n\tmock.calls.VgpuTypeGetGpuInstanceProfileId = append(mock.calls.VgpuTypeGetGpuInstanceProfileId, callInfo)\n\tmock.lockVgpuTypeGetGpuInstanceProfileId.Unlock()\n\treturn mock.VgpuTypeGetGpuInstanceProfileIdFunc(vgpuTypeId)\n}\n\n// VgpuTypeGetGpuInstanceProfileIdCalls gets all the calls that were made to VgpuTypeGetGpuInstanceProfileId.\n// Check the length with:\n//\n//\tlen(mockedInterface.VgpuTypeGetGpuInstanceProfileIdCalls())\nfunc (mock *Interface) VgpuTypeGetGpuInstanceProfileIdCalls() []struct {\n\tVgpuTypeId nvml.VgpuTypeId\n} {\n\tvar calls []struct {\n\t\tVgpuTypeId nvml.VgpuTypeId\n\t}\n\tmock.lockVgpuTypeGetGpuInstanceProfileId.RLock()\n\tcalls = mock.calls.VgpuTypeGetGpuInstanceProfileId\n\tmock.lockVgpuTypeGetGpuInstanceProfileId.RUnlock()\n\treturn calls\n}\n\n// VgpuTypeGetLicense calls VgpuTypeGetLicenseFunc.\nfunc (mock *Interface) VgpuTypeGetLicense(vgpuTypeId nvml.VgpuTypeId) (string, nvml.Return) {\n\tif mock.VgpuTypeGetLicenseFunc == nil {\n\t\tpanic(\"Interface.VgpuTypeGetLicenseFunc: method is nil but Interface.VgpuTypeGetLicense was just called\")\n\t}\n\tcallInfo := struct {\n\t\tVgpuTypeId nvml.VgpuTypeId\n\t}{\n\t\tVgpuTypeId: vgpuTypeId,\n\t}\n\tmock.lockVgpuTypeGetLicense.Lock()\n\tmock.calls.VgpuTypeGetLicense = append(mock.calls.VgpuTypeGetLicense, callInfo)\n\tmock.lockVgpuTypeGetLicense.Unlock()\n\treturn mock.VgpuTypeGetLicenseFunc(vgpuTypeId)\n}\n\n// VgpuTypeGetLicenseCalls gets all the calls that were made to VgpuTypeGetLicense.\n// Check the length with:\n//\n//\tlen(mockedInterface.VgpuTypeGetLicenseCalls())\nfunc (mock *Interface) VgpuTypeGetLicenseCalls() []struct {\n\tVgpuTypeId nvml.VgpuTypeId\n} {\n\tvar calls []struct {\n\t\tVgpuTypeId nvml.VgpuTypeId\n\t}\n\tmock.lockVgpuTypeGetLicense.RLock()\n\tcalls = mock.calls.VgpuTypeGetLicense\n\tmock.lockVgpuTypeGetLicense.RUnlock()\n\treturn calls\n}\n\n// VgpuTypeGetMaxInstances calls VgpuTypeGetMaxInstancesFunc.\nfunc (mock *Interface) VgpuTypeGetMaxInstances(device nvml.Device, vgpuTypeId nvml.VgpuTypeId) (int, nvml.Return) {\n\tif mock.VgpuTypeGetMaxInstancesFunc == nil {\n\t\tpanic(\"Interface.VgpuTypeGetMaxInstancesFunc: method is nil but Interface.VgpuTypeGetMaxInstances was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice     nvml.Device\n\t\tVgpuTypeId nvml.VgpuTypeId\n\t}{\n\t\tDevice:     device,\n\t\tVgpuTypeId: vgpuTypeId,\n\t}\n\tmock.lockVgpuTypeGetMaxInstances.Lock()\n\tmock.calls.VgpuTypeGetMaxInstances = append(mock.calls.VgpuTypeGetMaxInstances, callInfo)\n\tmock.lockVgpuTypeGetMaxInstances.Unlock()\n\treturn mock.VgpuTypeGetMaxInstancesFunc(device, vgpuTypeId)\n}\n\n// VgpuTypeGetMaxInstancesCalls gets all the calls that were made to VgpuTypeGetMaxInstances.\n// Check the length with:\n//\n//\tlen(mockedInterface.VgpuTypeGetMaxInstancesCalls())\nfunc (mock *Interface) VgpuTypeGetMaxInstancesCalls() []struct {\n\tDevice     nvml.Device\n\tVgpuTypeId nvml.VgpuTypeId\n} {\n\tvar calls []struct {\n\t\tDevice     nvml.Device\n\t\tVgpuTypeId nvml.VgpuTypeId\n\t}\n\tmock.lockVgpuTypeGetMaxInstances.RLock()\n\tcalls = mock.calls.VgpuTypeGetMaxInstances\n\tmock.lockVgpuTypeGetMaxInstances.RUnlock()\n\treturn calls\n}\n\n// VgpuTypeGetMaxInstancesPerGpuInstance calls VgpuTypeGetMaxInstancesPerGpuInstanceFunc.\nfunc (mock *Interface) VgpuTypeGetMaxInstancesPerGpuInstance(vgpuTypeMaxInstance *nvml.VgpuTypeMaxInstance) nvml.Return {\n\tif mock.VgpuTypeGetMaxInstancesPerGpuInstanceFunc == nil {\n\t\tpanic(\"Interface.VgpuTypeGetMaxInstancesPerGpuInstanceFunc: method is nil but Interface.VgpuTypeGetMaxInstancesPerGpuInstance was just called\")\n\t}\n\tcallInfo := struct {\n\t\tVgpuTypeMaxInstance *nvml.VgpuTypeMaxInstance\n\t}{\n\t\tVgpuTypeMaxInstance: vgpuTypeMaxInstance,\n\t}\n\tmock.lockVgpuTypeGetMaxInstancesPerGpuInstance.Lock()\n\tmock.calls.VgpuTypeGetMaxInstancesPerGpuInstance = append(mock.calls.VgpuTypeGetMaxInstancesPerGpuInstance, callInfo)\n\tmock.lockVgpuTypeGetMaxInstancesPerGpuInstance.Unlock()\n\treturn mock.VgpuTypeGetMaxInstancesPerGpuInstanceFunc(vgpuTypeMaxInstance)\n}\n\n// VgpuTypeGetMaxInstancesPerGpuInstanceCalls gets all the calls that were made to VgpuTypeGetMaxInstancesPerGpuInstance.\n// Check the length with:\n//\n//\tlen(mockedInterface.VgpuTypeGetMaxInstancesPerGpuInstanceCalls())\nfunc (mock *Interface) VgpuTypeGetMaxInstancesPerGpuInstanceCalls() []struct {\n\tVgpuTypeMaxInstance *nvml.VgpuTypeMaxInstance\n} {\n\tvar calls []struct {\n\t\tVgpuTypeMaxInstance *nvml.VgpuTypeMaxInstance\n\t}\n\tmock.lockVgpuTypeGetMaxInstancesPerGpuInstance.RLock()\n\tcalls = mock.calls.VgpuTypeGetMaxInstancesPerGpuInstance\n\tmock.lockVgpuTypeGetMaxInstancesPerGpuInstance.RUnlock()\n\treturn calls\n}\n\n// VgpuTypeGetMaxInstancesPerVm calls VgpuTypeGetMaxInstancesPerVmFunc.\nfunc (mock *Interface) VgpuTypeGetMaxInstancesPerVm(vgpuTypeId nvml.VgpuTypeId) (int, nvml.Return) {\n\tif mock.VgpuTypeGetMaxInstancesPerVmFunc == nil {\n\t\tpanic(\"Interface.VgpuTypeGetMaxInstancesPerVmFunc: method is nil but Interface.VgpuTypeGetMaxInstancesPerVm was just called\")\n\t}\n\tcallInfo := struct {\n\t\tVgpuTypeId nvml.VgpuTypeId\n\t}{\n\t\tVgpuTypeId: vgpuTypeId,\n\t}\n\tmock.lockVgpuTypeGetMaxInstancesPerVm.Lock()\n\tmock.calls.VgpuTypeGetMaxInstancesPerVm = append(mock.calls.VgpuTypeGetMaxInstancesPerVm, callInfo)\n\tmock.lockVgpuTypeGetMaxInstancesPerVm.Unlock()\n\treturn mock.VgpuTypeGetMaxInstancesPerVmFunc(vgpuTypeId)\n}\n\n// VgpuTypeGetMaxInstancesPerVmCalls gets all the calls that were made to VgpuTypeGetMaxInstancesPerVm.\n// Check the length with:\n//\n//\tlen(mockedInterface.VgpuTypeGetMaxInstancesPerVmCalls())\nfunc (mock *Interface) VgpuTypeGetMaxInstancesPerVmCalls() []struct {\n\tVgpuTypeId nvml.VgpuTypeId\n} {\n\tvar calls []struct {\n\t\tVgpuTypeId nvml.VgpuTypeId\n\t}\n\tmock.lockVgpuTypeGetMaxInstancesPerVm.RLock()\n\tcalls = mock.calls.VgpuTypeGetMaxInstancesPerVm\n\tmock.lockVgpuTypeGetMaxInstancesPerVm.RUnlock()\n\treturn calls\n}\n\n// VgpuTypeGetName calls VgpuTypeGetNameFunc.\nfunc (mock *Interface) VgpuTypeGetName(vgpuTypeId nvml.VgpuTypeId) (string, nvml.Return) {\n\tif mock.VgpuTypeGetNameFunc == nil {\n\t\tpanic(\"Interface.VgpuTypeGetNameFunc: method is nil but Interface.VgpuTypeGetName was just called\")\n\t}\n\tcallInfo := struct {\n\t\tVgpuTypeId nvml.VgpuTypeId\n\t}{\n\t\tVgpuTypeId: vgpuTypeId,\n\t}\n\tmock.lockVgpuTypeGetName.Lock()\n\tmock.calls.VgpuTypeGetName = append(mock.calls.VgpuTypeGetName, callInfo)\n\tmock.lockVgpuTypeGetName.Unlock()\n\treturn mock.VgpuTypeGetNameFunc(vgpuTypeId)\n}\n\n// VgpuTypeGetNameCalls gets all the calls that were made to VgpuTypeGetName.\n// Check the length with:\n//\n//\tlen(mockedInterface.VgpuTypeGetNameCalls())\nfunc (mock *Interface) VgpuTypeGetNameCalls() []struct {\n\tVgpuTypeId nvml.VgpuTypeId\n} {\n\tvar calls []struct {\n\t\tVgpuTypeId nvml.VgpuTypeId\n\t}\n\tmock.lockVgpuTypeGetName.RLock()\n\tcalls = mock.calls.VgpuTypeGetName\n\tmock.lockVgpuTypeGetName.RUnlock()\n\treturn calls\n}\n\n// VgpuTypeGetNumDisplayHeads calls VgpuTypeGetNumDisplayHeadsFunc.\nfunc (mock *Interface) VgpuTypeGetNumDisplayHeads(vgpuTypeId nvml.VgpuTypeId) (int, nvml.Return) {\n\tif mock.VgpuTypeGetNumDisplayHeadsFunc == nil {\n\t\tpanic(\"Interface.VgpuTypeGetNumDisplayHeadsFunc: method is nil but Interface.VgpuTypeGetNumDisplayHeads was just called\")\n\t}\n\tcallInfo := struct {\n\t\tVgpuTypeId nvml.VgpuTypeId\n\t}{\n\t\tVgpuTypeId: vgpuTypeId,\n\t}\n\tmock.lockVgpuTypeGetNumDisplayHeads.Lock()\n\tmock.calls.VgpuTypeGetNumDisplayHeads = append(mock.calls.VgpuTypeGetNumDisplayHeads, callInfo)\n\tmock.lockVgpuTypeGetNumDisplayHeads.Unlock()\n\treturn mock.VgpuTypeGetNumDisplayHeadsFunc(vgpuTypeId)\n}\n\n// VgpuTypeGetNumDisplayHeadsCalls gets all the calls that were made to VgpuTypeGetNumDisplayHeads.\n// Check the length with:\n//\n//\tlen(mockedInterface.VgpuTypeGetNumDisplayHeadsCalls())\nfunc (mock *Interface) VgpuTypeGetNumDisplayHeadsCalls() []struct {\n\tVgpuTypeId nvml.VgpuTypeId\n} {\n\tvar calls []struct {\n\t\tVgpuTypeId nvml.VgpuTypeId\n\t}\n\tmock.lockVgpuTypeGetNumDisplayHeads.RLock()\n\tcalls = mock.calls.VgpuTypeGetNumDisplayHeads\n\tmock.lockVgpuTypeGetNumDisplayHeads.RUnlock()\n\treturn calls\n}\n\n// VgpuTypeGetResolution calls VgpuTypeGetResolutionFunc.\nfunc (mock *Interface) VgpuTypeGetResolution(vgpuTypeId nvml.VgpuTypeId, n int) (uint32, uint32, nvml.Return) {\n\tif mock.VgpuTypeGetResolutionFunc == nil {\n\t\tpanic(\"Interface.VgpuTypeGetResolutionFunc: method is nil but Interface.VgpuTypeGetResolution was just called\")\n\t}\n\tcallInfo := struct {\n\t\tVgpuTypeId nvml.VgpuTypeId\n\t\tN          int\n\t}{\n\t\tVgpuTypeId: vgpuTypeId,\n\t\tN:          n,\n\t}\n\tmock.lockVgpuTypeGetResolution.Lock()\n\tmock.calls.VgpuTypeGetResolution = append(mock.calls.VgpuTypeGetResolution, callInfo)\n\tmock.lockVgpuTypeGetResolution.Unlock()\n\treturn mock.VgpuTypeGetResolutionFunc(vgpuTypeId, n)\n}\n\n// VgpuTypeGetResolutionCalls gets all the calls that were made to VgpuTypeGetResolution.\n// Check the length with:\n//\n//\tlen(mockedInterface.VgpuTypeGetResolutionCalls())\nfunc (mock *Interface) VgpuTypeGetResolutionCalls() []struct {\n\tVgpuTypeId nvml.VgpuTypeId\n\tN          int\n} {\n\tvar calls []struct {\n\t\tVgpuTypeId nvml.VgpuTypeId\n\t\tN          int\n\t}\n\tmock.lockVgpuTypeGetResolution.RLock()\n\tcalls = mock.calls.VgpuTypeGetResolution\n\tmock.lockVgpuTypeGetResolution.RUnlock()\n\treturn calls\n}\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvml/pkg/nvml/mock/unit.go",
    "content": "// Code generated by moq; DO NOT EDIT.\n// github.com/matryer/moq\n\npackage mock\n\nimport (\n\t\"github.com/NVIDIA/go-nvml/pkg/nvml\"\n\t\"sync\"\n)\n\n// Ensure, that Unit does implement nvml.Unit.\n// If this is not the case, regenerate this file with moq.\nvar _ nvml.Unit = &Unit{}\n\n// Unit is a mock implementation of nvml.Unit.\n//\n//\tfunc TestSomethingThatUsesUnit(t *testing.T) {\n//\n//\t\t// make and configure a mocked nvml.Unit\n//\t\tmockedUnit := &Unit{\n//\t\t\tGetDevicesFunc: func() ([]nvml.Device, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetDevices method\")\n//\t\t\t},\n//\t\t\tGetFanSpeedInfoFunc: func() (nvml.UnitFanSpeeds, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetFanSpeedInfo method\")\n//\t\t\t},\n//\t\t\tGetLedStateFunc: func() (nvml.LedState, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetLedState method\")\n//\t\t\t},\n//\t\t\tGetPsuInfoFunc: func() (nvml.PSUInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetPsuInfo method\")\n//\t\t\t},\n//\t\t\tGetTemperatureFunc: func(n int) (uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetTemperature method\")\n//\t\t\t},\n//\t\t\tGetUnitInfoFunc: func() (nvml.UnitInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetUnitInfo method\")\n//\t\t\t},\n//\t\t\tSetLedStateFunc: func(ledColor nvml.LedColor) nvml.Return {\n//\t\t\t\tpanic(\"mock out the SetLedState method\")\n//\t\t\t},\n//\t\t}\n//\n//\t\t// use mockedUnit in code that requires nvml.Unit\n//\t\t// and then make assertions.\n//\n//\t}\ntype Unit struct {\n\t// GetDevicesFunc mocks the GetDevices method.\n\tGetDevicesFunc func() ([]nvml.Device, nvml.Return)\n\n\t// GetFanSpeedInfoFunc mocks the GetFanSpeedInfo method.\n\tGetFanSpeedInfoFunc func() (nvml.UnitFanSpeeds, nvml.Return)\n\n\t// GetLedStateFunc mocks the GetLedState method.\n\tGetLedStateFunc func() (nvml.LedState, nvml.Return)\n\n\t// GetPsuInfoFunc mocks the GetPsuInfo method.\n\tGetPsuInfoFunc func() (nvml.PSUInfo, nvml.Return)\n\n\t// GetTemperatureFunc mocks the GetTemperature method.\n\tGetTemperatureFunc func(n int) (uint32, nvml.Return)\n\n\t// GetUnitInfoFunc mocks the GetUnitInfo method.\n\tGetUnitInfoFunc func() (nvml.UnitInfo, nvml.Return)\n\n\t// SetLedStateFunc mocks the SetLedState method.\n\tSetLedStateFunc func(ledColor nvml.LedColor) nvml.Return\n\n\t// calls tracks calls to the methods.\n\tcalls struct {\n\t\t// GetDevices holds details about calls to the GetDevices method.\n\t\tGetDevices []struct {\n\t\t}\n\t\t// GetFanSpeedInfo holds details about calls to the GetFanSpeedInfo method.\n\t\tGetFanSpeedInfo []struct {\n\t\t}\n\t\t// GetLedState holds details about calls to the GetLedState method.\n\t\tGetLedState []struct {\n\t\t}\n\t\t// GetPsuInfo holds details about calls to the GetPsuInfo method.\n\t\tGetPsuInfo []struct {\n\t\t}\n\t\t// GetTemperature holds details about calls to the GetTemperature method.\n\t\tGetTemperature []struct {\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t}\n\t\t// GetUnitInfo holds details about calls to the GetUnitInfo method.\n\t\tGetUnitInfo []struct {\n\t\t}\n\t\t// SetLedState holds details about calls to the SetLedState method.\n\t\tSetLedState []struct {\n\t\t\t// LedColor is the ledColor argument value.\n\t\t\tLedColor nvml.LedColor\n\t\t}\n\t}\n\tlockGetDevices      sync.RWMutex\n\tlockGetFanSpeedInfo sync.RWMutex\n\tlockGetLedState     sync.RWMutex\n\tlockGetPsuInfo      sync.RWMutex\n\tlockGetTemperature  sync.RWMutex\n\tlockGetUnitInfo     sync.RWMutex\n\tlockSetLedState     sync.RWMutex\n}\n\n// GetDevices calls GetDevicesFunc.\nfunc (mock *Unit) GetDevices() ([]nvml.Device, nvml.Return) {\n\tif mock.GetDevicesFunc == nil {\n\t\tpanic(\"Unit.GetDevicesFunc: method is nil but Unit.GetDevices was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetDevices.Lock()\n\tmock.calls.GetDevices = append(mock.calls.GetDevices, callInfo)\n\tmock.lockGetDevices.Unlock()\n\treturn mock.GetDevicesFunc()\n}\n\n// GetDevicesCalls gets all the calls that were made to GetDevices.\n// Check the length with:\n//\n//\tlen(mockedUnit.GetDevicesCalls())\nfunc (mock *Unit) GetDevicesCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetDevices.RLock()\n\tcalls = mock.calls.GetDevices\n\tmock.lockGetDevices.RUnlock()\n\treturn calls\n}\n\n// GetFanSpeedInfo calls GetFanSpeedInfoFunc.\nfunc (mock *Unit) GetFanSpeedInfo() (nvml.UnitFanSpeeds, nvml.Return) {\n\tif mock.GetFanSpeedInfoFunc == nil {\n\t\tpanic(\"Unit.GetFanSpeedInfoFunc: method is nil but Unit.GetFanSpeedInfo was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetFanSpeedInfo.Lock()\n\tmock.calls.GetFanSpeedInfo = append(mock.calls.GetFanSpeedInfo, callInfo)\n\tmock.lockGetFanSpeedInfo.Unlock()\n\treturn mock.GetFanSpeedInfoFunc()\n}\n\n// GetFanSpeedInfoCalls gets all the calls that were made to GetFanSpeedInfo.\n// Check the length with:\n//\n//\tlen(mockedUnit.GetFanSpeedInfoCalls())\nfunc (mock *Unit) GetFanSpeedInfoCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetFanSpeedInfo.RLock()\n\tcalls = mock.calls.GetFanSpeedInfo\n\tmock.lockGetFanSpeedInfo.RUnlock()\n\treturn calls\n}\n\n// GetLedState calls GetLedStateFunc.\nfunc (mock *Unit) GetLedState() (nvml.LedState, nvml.Return) {\n\tif mock.GetLedStateFunc == nil {\n\t\tpanic(\"Unit.GetLedStateFunc: method is nil but Unit.GetLedState was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetLedState.Lock()\n\tmock.calls.GetLedState = append(mock.calls.GetLedState, callInfo)\n\tmock.lockGetLedState.Unlock()\n\treturn mock.GetLedStateFunc()\n}\n\n// GetLedStateCalls gets all the calls that were made to GetLedState.\n// Check the length with:\n//\n//\tlen(mockedUnit.GetLedStateCalls())\nfunc (mock *Unit) GetLedStateCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetLedState.RLock()\n\tcalls = mock.calls.GetLedState\n\tmock.lockGetLedState.RUnlock()\n\treturn calls\n}\n\n// GetPsuInfo calls GetPsuInfoFunc.\nfunc (mock *Unit) GetPsuInfo() (nvml.PSUInfo, nvml.Return) {\n\tif mock.GetPsuInfoFunc == nil {\n\t\tpanic(\"Unit.GetPsuInfoFunc: method is nil but Unit.GetPsuInfo was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetPsuInfo.Lock()\n\tmock.calls.GetPsuInfo = append(mock.calls.GetPsuInfo, callInfo)\n\tmock.lockGetPsuInfo.Unlock()\n\treturn mock.GetPsuInfoFunc()\n}\n\n// GetPsuInfoCalls gets all the calls that were made to GetPsuInfo.\n// Check the length with:\n//\n//\tlen(mockedUnit.GetPsuInfoCalls())\nfunc (mock *Unit) GetPsuInfoCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetPsuInfo.RLock()\n\tcalls = mock.calls.GetPsuInfo\n\tmock.lockGetPsuInfo.RUnlock()\n\treturn calls\n}\n\n// GetTemperature calls GetTemperatureFunc.\nfunc (mock *Unit) GetTemperature(n int) (uint32, nvml.Return) {\n\tif mock.GetTemperatureFunc == nil {\n\t\tpanic(\"Unit.GetTemperatureFunc: method is nil but Unit.GetTemperature was just called\")\n\t}\n\tcallInfo := struct {\n\t\tN int\n\t}{\n\t\tN: n,\n\t}\n\tmock.lockGetTemperature.Lock()\n\tmock.calls.GetTemperature = append(mock.calls.GetTemperature, callInfo)\n\tmock.lockGetTemperature.Unlock()\n\treturn mock.GetTemperatureFunc(n)\n}\n\n// GetTemperatureCalls gets all the calls that were made to GetTemperature.\n// Check the length with:\n//\n//\tlen(mockedUnit.GetTemperatureCalls())\nfunc (mock *Unit) GetTemperatureCalls() []struct {\n\tN int\n} {\n\tvar calls []struct {\n\t\tN int\n\t}\n\tmock.lockGetTemperature.RLock()\n\tcalls = mock.calls.GetTemperature\n\tmock.lockGetTemperature.RUnlock()\n\treturn calls\n}\n\n// GetUnitInfo calls GetUnitInfoFunc.\nfunc (mock *Unit) GetUnitInfo() (nvml.UnitInfo, nvml.Return) {\n\tif mock.GetUnitInfoFunc == nil {\n\t\tpanic(\"Unit.GetUnitInfoFunc: method is nil but Unit.GetUnitInfo was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetUnitInfo.Lock()\n\tmock.calls.GetUnitInfo = append(mock.calls.GetUnitInfo, callInfo)\n\tmock.lockGetUnitInfo.Unlock()\n\treturn mock.GetUnitInfoFunc()\n}\n\n// GetUnitInfoCalls gets all the calls that were made to GetUnitInfo.\n// Check the length with:\n//\n//\tlen(mockedUnit.GetUnitInfoCalls())\nfunc (mock *Unit) GetUnitInfoCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetUnitInfo.RLock()\n\tcalls = mock.calls.GetUnitInfo\n\tmock.lockGetUnitInfo.RUnlock()\n\treturn calls\n}\n\n// SetLedState calls SetLedStateFunc.\nfunc (mock *Unit) SetLedState(ledColor nvml.LedColor) nvml.Return {\n\tif mock.SetLedStateFunc == nil {\n\t\tpanic(\"Unit.SetLedStateFunc: method is nil but Unit.SetLedState was just called\")\n\t}\n\tcallInfo := struct {\n\t\tLedColor nvml.LedColor\n\t}{\n\t\tLedColor: ledColor,\n\t}\n\tmock.lockSetLedState.Lock()\n\tmock.calls.SetLedState = append(mock.calls.SetLedState, callInfo)\n\tmock.lockSetLedState.Unlock()\n\treturn mock.SetLedStateFunc(ledColor)\n}\n\n// SetLedStateCalls gets all the calls that were made to SetLedState.\n// Check the length with:\n//\n//\tlen(mockedUnit.SetLedStateCalls())\nfunc (mock *Unit) SetLedStateCalls() []struct {\n\tLedColor nvml.LedColor\n} {\n\tvar calls []struct {\n\t\tLedColor nvml.LedColor\n\t}\n\tmock.lockSetLedState.RLock()\n\tcalls = mock.calls.SetLedState\n\tmock.lockSetLedState.RUnlock()\n\treturn calls\n}\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvml/pkg/nvml/mock/vgpuinstance.go",
    "content": "// Code generated by moq; DO NOT EDIT.\n// github.com/matryer/moq\n\npackage mock\n\nimport (\n\t\"github.com/NVIDIA/go-nvml/pkg/nvml\"\n\t\"sync\"\n)\n\n// Ensure, that VgpuInstance does implement nvml.VgpuInstance.\n// If this is not the case, regenerate this file with moq.\nvar _ nvml.VgpuInstance = &VgpuInstance{}\n\n// VgpuInstance is a mock implementation of nvml.VgpuInstance.\n//\n//\tfunc TestSomethingThatUsesVgpuInstance(t *testing.T) {\n//\n//\t\t// make and configure a mocked nvml.VgpuInstance\n//\t\tmockedVgpuInstance := &VgpuInstance{\n//\t\t\tClearAccountingPidsFunc: func() nvml.Return {\n//\t\t\t\tpanic(\"mock out the ClearAccountingPids method\")\n//\t\t\t},\n//\t\t\tGetAccountingModeFunc: func() (nvml.EnableState, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetAccountingMode method\")\n//\t\t\t},\n//\t\t\tGetAccountingPidsFunc: func() ([]int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetAccountingPids method\")\n//\t\t\t},\n//\t\t\tGetAccountingStatsFunc: func(n int) (nvml.AccountingStats, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetAccountingStats method\")\n//\t\t\t},\n//\t\t\tGetEccModeFunc: func() (nvml.EnableState, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetEccMode method\")\n//\t\t\t},\n//\t\t\tGetEncoderCapacityFunc: func() (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetEncoderCapacity method\")\n//\t\t\t},\n//\t\t\tGetEncoderSessionsFunc: func() (int, nvml.EncoderSessionInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetEncoderSessions method\")\n//\t\t\t},\n//\t\t\tGetEncoderStatsFunc: func() (int, uint32, uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetEncoderStats method\")\n//\t\t\t},\n//\t\t\tGetFBCSessionsFunc: func() (int, nvml.FBCSessionInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetFBCSessions method\")\n//\t\t\t},\n//\t\t\tGetFBCStatsFunc: func() (nvml.FBCStats, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetFBCStats method\")\n//\t\t\t},\n//\t\t\tGetFbUsageFunc: func() (uint64, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetFbUsage method\")\n//\t\t\t},\n//\t\t\tGetFrameRateLimitFunc: func() (uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetFrameRateLimit method\")\n//\t\t\t},\n//\t\t\tGetGpuInstanceIdFunc: func() (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetGpuInstanceId method\")\n//\t\t\t},\n//\t\t\tGetGpuPciIdFunc: func() (string, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetGpuPciId method\")\n//\t\t\t},\n//\t\t\tGetLicenseInfoFunc: func() (nvml.VgpuLicenseInfo, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetLicenseInfo method\")\n//\t\t\t},\n//\t\t\tGetLicenseStatusFunc: func() (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetLicenseStatus method\")\n//\t\t\t},\n//\t\t\tGetMdevUUIDFunc: func() (string, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetMdevUUID method\")\n//\t\t\t},\n//\t\t\tGetMetadataFunc: func() (nvml.VgpuMetadata, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetMetadata method\")\n//\t\t\t},\n//\t\t\tGetRuntimeStateSizeFunc: func() (nvml.VgpuRuntimeState, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetRuntimeStateSize method\")\n//\t\t\t},\n//\t\t\tGetTypeFunc: func() (nvml.VgpuTypeId, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetType method\")\n//\t\t\t},\n//\t\t\tGetUUIDFunc: func() (string, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetUUID method\")\n//\t\t\t},\n//\t\t\tGetVmDriverVersionFunc: func() (string, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetVmDriverVersion method\")\n//\t\t\t},\n//\t\t\tGetVmIDFunc: func() (string, nvml.VgpuVmIdType, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetVmID method\")\n//\t\t\t},\n//\t\t\tSetEncoderCapacityFunc: func(n int) nvml.Return {\n//\t\t\t\tpanic(\"mock out the SetEncoderCapacity method\")\n//\t\t\t},\n//\t\t}\n//\n//\t\t// use mockedVgpuInstance in code that requires nvml.VgpuInstance\n//\t\t// and then make assertions.\n//\n//\t}\ntype VgpuInstance struct {\n\t// ClearAccountingPidsFunc mocks the ClearAccountingPids method.\n\tClearAccountingPidsFunc func() nvml.Return\n\n\t// GetAccountingModeFunc mocks the GetAccountingMode method.\n\tGetAccountingModeFunc func() (nvml.EnableState, nvml.Return)\n\n\t// GetAccountingPidsFunc mocks the GetAccountingPids method.\n\tGetAccountingPidsFunc func() ([]int, nvml.Return)\n\n\t// GetAccountingStatsFunc mocks the GetAccountingStats method.\n\tGetAccountingStatsFunc func(n int) (nvml.AccountingStats, nvml.Return)\n\n\t// GetEccModeFunc mocks the GetEccMode method.\n\tGetEccModeFunc func() (nvml.EnableState, nvml.Return)\n\n\t// GetEncoderCapacityFunc mocks the GetEncoderCapacity method.\n\tGetEncoderCapacityFunc func() (int, nvml.Return)\n\n\t// GetEncoderSessionsFunc mocks the GetEncoderSessions method.\n\tGetEncoderSessionsFunc func() (int, nvml.EncoderSessionInfo, nvml.Return)\n\n\t// GetEncoderStatsFunc mocks the GetEncoderStats method.\n\tGetEncoderStatsFunc func() (int, uint32, uint32, nvml.Return)\n\n\t// GetFBCSessionsFunc mocks the GetFBCSessions method.\n\tGetFBCSessionsFunc func() (int, nvml.FBCSessionInfo, nvml.Return)\n\n\t// GetFBCStatsFunc mocks the GetFBCStats method.\n\tGetFBCStatsFunc func() (nvml.FBCStats, nvml.Return)\n\n\t// GetFbUsageFunc mocks the GetFbUsage method.\n\tGetFbUsageFunc func() (uint64, nvml.Return)\n\n\t// GetFrameRateLimitFunc mocks the GetFrameRateLimit method.\n\tGetFrameRateLimitFunc func() (uint32, nvml.Return)\n\n\t// GetGpuInstanceIdFunc mocks the GetGpuInstanceId method.\n\tGetGpuInstanceIdFunc func() (int, nvml.Return)\n\n\t// GetGpuPciIdFunc mocks the GetGpuPciId method.\n\tGetGpuPciIdFunc func() (string, nvml.Return)\n\n\t// GetLicenseInfoFunc mocks the GetLicenseInfo method.\n\tGetLicenseInfoFunc func() (nvml.VgpuLicenseInfo, nvml.Return)\n\n\t// GetLicenseStatusFunc mocks the GetLicenseStatus method.\n\tGetLicenseStatusFunc func() (int, nvml.Return)\n\n\t// GetMdevUUIDFunc mocks the GetMdevUUID method.\n\tGetMdevUUIDFunc func() (string, nvml.Return)\n\n\t// GetMetadataFunc mocks the GetMetadata method.\n\tGetMetadataFunc func() (nvml.VgpuMetadata, nvml.Return)\n\n\t// GetRuntimeStateSizeFunc mocks the GetRuntimeStateSize method.\n\tGetRuntimeStateSizeFunc func() (nvml.VgpuRuntimeState, nvml.Return)\n\n\t// GetTypeFunc mocks the GetType method.\n\tGetTypeFunc func() (nvml.VgpuTypeId, nvml.Return)\n\n\t// GetUUIDFunc mocks the GetUUID method.\n\tGetUUIDFunc func() (string, nvml.Return)\n\n\t// GetVmDriverVersionFunc mocks the GetVmDriverVersion method.\n\tGetVmDriverVersionFunc func() (string, nvml.Return)\n\n\t// GetVmIDFunc mocks the GetVmID method.\n\tGetVmIDFunc func() (string, nvml.VgpuVmIdType, nvml.Return)\n\n\t// SetEncoderCapacityFunc mocks the SetEncoderCapacity method.\n\tSetEncoderCapacityFunc func(n int) nvml.Return\n\n\t// calls tracks calls to the methods.\n\tcalls struct {\n\t\t// ClearAccountingPids holds details about calls to the ClearAccountingPids method.\n\t\tClearAccountingPids []struct {\n\t\t}\n\t\t// GetAccountingMode holds details about calls to the GetAccountingMode method.\n\t\tGetAccountingMode []struct {\n\t\t}\n\t\t// GetAccountingPids holds details about calls to the GetAccountingPids method.\n\t\tGetAccountingPids []struct {\n\t\t}\n\t\t// GetAccountingStats holds details about calls to the GetAccountingStats method.\n\t\tGetAccountingStats []struct {\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t}\n\t\t// GetEccMode holds details about calls to the GetEccMode method.\n\t\tGetEccMode []struct {\n\t\t}\n\t\t// GetEncoderCapacity holds details about calls to the GetEncoderCapacity method.\n\t\tGetEncoderCapacity []struct {\n\t\t}\n\t\t// GetEncoderSessions holds details about calls to the GetEncoderSessions method.\n\t\tGetEncoderSessions []struct {\n\t\t}\n\t\t// GetEncoderStats holds details about calls to the GetEncoderStats method.\n\t\tGetEncoderStats []struct {\n\t\t}\n\t\t// GetFBCSessions holds details about calls to the GetFBCSessions method.\n\t\tGetFBCSessions []struct {\n\t\t}\n\t\t// GetFBCStats holds details about calls to the GetFBCStats method.\n\t\tGetFBCStats []struct {\n\t\t}\n\t\t// GetFbUsage holds details about calls to the GetFbUsage method.\n\t\tGetFbUsage []struct {\n\t\t}\n\t\t// GetFrameRateLimit holds details about calls to the GetFrameRateLimit method.\n\t\tGetFrameRateLimit []struct {\n\t\t}\n\t\t// GetGpuInstanceId holds details about calls to the GetGpuInstanceId method.\n\t\tGetGpuInstanceId []struct {\n\t\t}\n\t\t// GetGpuPciId holds details about calls to the GetGpuPciId method.\n\t\tGetGpuPciId []struct {\n\t\t}\n\t\t// GetLicenseInfo holds details about calls to the GetLicenseInfo method.\n\t\tGetLicenseInfo []struct {\n\t\t}\n\t\t// GetLicenseStatus holds details about calls to the GetLicenseStatus method.\n\t\tGetLicenseStatus []struct {\n\t\t}\n\t\t// GetMdevUUID holds details about calls to the GetMdevUUID method.\n\t\tGetMdevUUID []struct {\n\t\t}\n\t\t// GetMetadata holds details about calls to the GetMetadata method.\n\t\tGetMetadata []struct {\n\t\t}\n\t\t// GetRuntimeStateSize holds details about calls to the GetRuntimeStateSize method.\n\t\tGetRuntimeStateSize []struct {\n\t\t}\n\t\t// GetType holds details about calls to the GetType method.\n\t\tGetType []struct {\n\t\t}\n\t\t// GetUUID holds details about calls to the GetUUID method.\n\t\tGetUUID []struct {\n\t\t}\n\t\t// GetVmDriverVersion holds details about calls to the GetVmDriverVersion method.\n\t\tGetVmDriverVersion []struct {\n\t\t}\n\t\t// GetVmID holds details about calls to the GetVmID method.\n\t\tGetVmID []struct {\n\t\t}\n\t\t// SetEncoderCapacity holds details about calls to the SetEncoderCapacity method.\n\t\tSetEncoderCapacity []struct {\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t}\n\t}\n\tlockClearAccountingPids sync.RWMutex\n\tlockGetAccountingMode   sync.RWMutex\n\tlockGetAccountingPids   sync.RWMutex\n\tlockGetAccountingStats  sync.RWMutex\n\tlockGetEccMode          sync.RWMutex\n\tlockGetEncoderCapacity  sync.RWMutex\n\tlockGetEncoderSessions  sync.RWMutex\n\tlockGetEncoderStats     sync.RWMutex\n\tlockGetFBCSessions      sync.RWMutex\n\tlockGetFBCStats         sync.RWMutex\n\tlockGetFbUsage          sync.RWMutex\n\tlockGetFrameRateLimit   sync.RWMutex\n\tlockGetGpuInstanceId    sync.RWMutex\n\tlockGetGpuPciId         sync.RWMutex\n\tlockGetLicenseInfo      sync.RWMutex\n\tlockGetLicenseStatus    sync.RWMutex\n\tlockGetMdevUUID         sync.RWMutex\n\tlockGetMetadata         sync.RWMutex\n\tlockGetRuntimeStateSize sync.RWMutex\n\tlockGetType             sync.RWMutex\n\tlockGetUUID             sync.RWMutex\n\tlockGetVmDriverVersion  sync.RWMutex\n\tlockGetVmID             sync.RWMutex\n\tlockSetEncoderCapacity  sync.RWMutex\n}\n\n// ClearAccountingPids calls ClearAccountingPidsFunc.\nfunc (mock *VgpuInstance) ClearAccountingPids() nvml.Return {\n\tif mock.ClearAccountingPidsFunc == nil {\n\t\tpanic(\"VgpuInstance.ClearAccountingPidsFunc: method is nil but VgpuInstance.ClearAccountingPids was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockClearAccountingPids.Lock()\n\tmock.calls.ClearAccountingPids = append(mock.calls.ClearAccountingPids, callInfo)\n\tmock.lockClearAccountingPids.Unlock()\n\treturn mock.ClearAccountingPidsFunc()\n}\n\n// ClearAccountingPidsCalls gets all the calls that were made to ClearAccountingPids.\n// Check the length with:\n//\n//\tlen(mockedVgpuInstance.ClearAccountingPidsCalls())\nfunc (mock *VgpuInstance) ClearAccountingPidsCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockClearAccountingPids.RLock()\n\tcalls = mock.calls.ClearAccountingPids\n\tmock.lockClearAccountingPids.RUnlock()\n\treturn calls\n}\n\n// GetAccountingMode calls GetAccountingModeFunc.\nfunc (mock *VgpuInstance) GetAccountingMode() (nvml.EnableState, nvml.Return) {\n\tif mock.GetAccountingModeFunc == nil {\n\t\tpanic(\"VgpuInstance.GetAccountingModeFunc: method is nil but VgpuInstance.GetAccountingMode was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetAccountingMode.Lock()\n\tmock.calls.GetAccountingMode = append(mock.calls.GetAccountingMode, callInfo)\n\tmock.lockGetAccountingMode.Unlock()\n\treturn mock.GetAccountingModeFunc()\n}\n\n// GetAccountingModeCalls gets all the calls that were made to GetAccountingMode.\n// Check the length with:\n//\n//\tlen(mockedVgpuInstance.GetAccountingModeCalls())\nfunc (mock *VgpuInstance) GetAccountingModeCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetAccountingMode.RLock()\n\tcalls = mock.calls.GetAccountingMode\n\tmock.lockGetAccountingMode.RUnlock()\n\treturn calls\n}\n\n// GetAccountingPids calls GetAccountingPidsFunc.\nfunc (mock *VgpuInstance) GetAccountingPids() ([]int, nvml.Return) {\n\tif mock.GetAccountingPidsFunc == nil {\n\t\tpanic(\"VgpuInstance.GetAccountingPidsFunc: method is nil but VgpuInstance.GetAccountingPids was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetAccountingPids.Lock()\n\tmock.calls.GetAccountingPids = append(mock.calls.GetAccountingPids, callInfo)\n\tmock.lockGetAccountingPids.Unlock()\n\treturn mock.GetAccountingPidsFunc()\n}\n\n// GetAccountingPidsCalls gets all the calls that were made to GetAccountingPids.\n// Check the length with:\n//\n//\tlen(mockedVgpuInstance.GetAccountingPidsCalls())\nfunc (mock *VgpuInstance) GetAccountingPidsCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetAccountingPids.RLock()\n\tcalls = mock.calls.GetAccountingPids\n\tmock.lockGetAccountingPids.RUnlock()\n\treturn calls\n}\n\n// GetAccountingStats calls GetAccountingStatsFunc.\nfunc (mock *VgpuInstance) GetAccountingStats(n int) (nvml.AccountingStats, nvml.Return) {\n\tif mock.GetAccountingStatsFunc == nil {\n\t\tpanic(\"VgpuInstance.GetAccountingStatsFunc: method is nil but VgpuInstance.GetAccountingStats was just called\")\n\t}\n\tcallInfo := struct {\n\t\tN int\n\t}{\n\t\tN: n,\n\t}\n\tmock.lockGetAccountingStats.Lock()\n\tmock.calls.GetAccountingStats = append(mock.calls.GetAccountingStats, callInfo)\n\tmock.lockGetAccountingStats.Unlock()\n\treturn mock.GetAccountingStatsFunc(n)\n}\n\n// GetAccountingStatsCalls gets all the calls that were made to GetAccountingStats.\n// Check the length with:\n//\n//\tlen(mockedVgpuInstance.GetAccountingStatsCalls())\nfunc (mock *VgpuInstance) GetAccountingStatsCalls() []struct {\n\tN int\n} {\n\tvar calls []struct {\n\t\tN int\n\t}\n\tmock.lockGetAccountingStats.RLock()\n\tcalls = mock.calls.GetAccountingStats\n\tmock.lockGetAccountingStats.RUnlock()\n\treturn calls\n}\n\n// GetEccMode calls GetEccModeFunc.\nfunc (mock *VgpuInstance) GetEccMode() (nvml.EnableState, nvml.Return) {\n\tif mock.GetEccModeFunc == nil {\n\t\tpanic(\"VgpuInstance.GetEccModeFunc: method is nil but VgpuInstance.GetEccMode was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetEccMode.Lock()\n\tmock.calls.GetEccMode = append(mock.calls.GetEccMode, callInfo)\n\tmock.lockGetEccMode.Unlock()\n\treturn mock.GetEccModeFunc()\n}\n\n// GetEccModeCalls gets all the calls that were made to GetEccMode.\n// Check the length with:\n//\n//\tlen(mockedVgpuInstance.GetEccModeCalls())\nfunc (mock *VgpuInstance) GetEccModeCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetEccMode.RLock()\n\tcalls = mock.calls.GetEccMode\n\tmock.lockGetEccMode.RUnlock()\n\treturn calls\n}\n\n// GetEncoderCapacity calls GetEncoderCapacityFunc.\nfunc (mock *VgpuInstance) GetEncoderCapacity() (int, nvml.Return) {\n\tif mock.GetEncoderCapacityFunc == nil {\n\t\tpanic(\"VgpuInstance.GetEncoderCapacityFunc: method is nil but VgpuInstance.GetEncoderCapacity was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetEncoderCapacity.Lock()\n\tmock.calls.GetEncoderCapacity = append(mock.calls.GetEncoderCapacity, callInfo)\n\tmock.lockGetEncoderCapacity.Unlock()\n\treturn mock.GetEncoderCapacityFunc()\n}\n\n// GetEncoderCapacityCalls gets all the calls that were made to GetEncoderCapacity.\n// Check the length with:\n//\n//\tlen(mockedVgpuInstance.GetEncoderCapacityCalls())\nfunc (mock *VgpuInstance) GetEncoderCapacityCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetEncoderCapacity.RLock()\n\tcalls = mock.calls.GetEncoderCapacity\n\tmock.lockGetEncoderCapacity.RUnlock()\n\treturn calls\n}\n\n// GetEncoderSessions calls GetEncoderSessionsFunc.\nfunc (mock *VgpuInstance) GetEncoderSessions() (int, nvml.EncoderSessionInfo, nvml.Return) {\n\tif mock.GetEncoderSessionsFunc == nil {\n\t\tpanic(\"VgpuInstance.GetEncoderSessionsFunc: method is nil but VgpuInstance.GetEncoderSessions was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetEncoderSessions.Lock()\n\tmock.calls.GetEncoderSessions = append(mock.calls.GetEncoderSessions, callInfo)\n\tmock.lockGetEncoderSessions.Unlock()\n\treturn mock.GetEncoderSessionsFunc()\n}\n\n// GetEncoderSessionsCalls gets all the calls that were made to GetEncoderSessions.\n// Check the length with:\n//\n//\tlen(mockedVgpuInstance.GetEncoderSessionsCalls())\nfunc (mock *VgpuInstance) GetEncoderSessionsCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetEncoderSessions.RLock()\n\tcalls = mock.calls.GetEncoderSessions\n\tmock.lockGetEncoderSessions.RUnlock()\n\treturn calls\n}\n\n// GetEncoderStats calls GetEncoderStatsFunc.\nfunc (mock *VgpuInstance) GetEncoderStats() (int, uint32, uint32, nvml.Return) {\n\tif mock.GetEncoderStatsFunc == nil {\n\t\tpanic(\"VgpuInstance.GetEncoderStatsFunc: method is nil but VgpuInstance.GetEncoderStats was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetEncoderStats.Lock()\n\tmock.calls.GetEncoderStats = append(mock.calls.GetEncoderStats, callInfo)\n\tmock.lockGetEncoderStats.Unlock()\n\treturn mock.GetEncoderStatsFunc()\n}\n\n// GetEncoderStatsCalls gets all the calls that were made to GetEncoderStats.\n// Check the length with:\n//\n//\tlen(mockedVgpuInstance.GetEncoderStatsCalls())\nfunc (mock *VgpuInstance) GetEncoderStatsCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetEncoderStats.RLock()\n\tcalls = mock.calls.GetEncoderStats\n\tmock.lockGetEncoderStats.RUnlock()\n\treturn calls\n}\n\n// GetFBCSessions calls GetFBCSessionsFunc.\nfunc (mock *VgpuInstance) GetFBCSessions() (int, nvml.FBCSessionInfo, nvml.Return) {\n\tif mock.GetFBCSessionsFunc == nil {\n\t\tpanic(\"VgpuInstance.GetFBCSessionsFunc: method is nil but VgpuInstance.GetFBCSessions was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetFBCSessions.Lock()\n\tmock.calls.GetFBCSessions = append(mock.calls.GetFBCSessions, callInfo)\n\tmock.lockGetFBCSessions.Unlock()\n\treturn mock.GetFBCSessionsFunc()\n}\n\n// GetFBCSessionsCalls gets all the calls that were made to GetFBCSessions.\n// Check the length with:\n//\n//\tlen(mockedVgpuInstance.GetFBCSessionsCalls())\nfunc (mock *VgpuInstance) GetFBCSessionsCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetFBCSessions.RLock()\n\tcalls = mock.calls.GetFBCSessions\n\tmock.lockGetFBCSessions.RUnlock()\n\treturn calls\n}\n\n// GetFBCStats calls GetFBCStatsFunc.\nfunc (mock *VgpuInstance) GetFBCStats() (nvml.FBCStats, nvml.Return) {\n\tif mock.GetFBCStatsFunc == nil {\n\t\tpanic(\"VgpuInstance.GetFBCStatsFunc: method is nil but VgpuInstance.GetFBCStats was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetFBCStats.Lock()\n\tmock.calls.GetFBCStats = append(mock.calls.GetFBCStats, callInfo)\n\tmock.lockGetFBCStats.Unlock()\n\treturn mock.GetFBCStatsFunc()\n}\n\n// GetFBCStatsCalls gets all the calls that were made to GetFBCStats.\n// Check the length with:\n//\n//\tlen(mockedVgpuInstance.GetFBCStatsCalls())\nfunc (mock *VgpuInstance) GetFBCStatsCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetFBCStats.RLock()\n\tcalls = mock.calls.GetFBCStats\n\tmock.lockGetFBCStats.RUnlock()\n\treturn calls\n}\n\n// GetFbUsage calls GetFbUsageFunc.\nfunc (mock *VgpuInstance) GetFbUsage() (uint64, nvml.Return) {\n\tif mock.GetFbUsageFunc == nil {\n\t\tpanic(\"VgpuInstance.GetFbUsageFunc: method is nil but VgpuInstance.GetFbUsage was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetFbUsage.Lock()\n\tmock.calls.GetFbUsage = append(mock.calls.GetFbUsage, callInfo)\n\tmock.lockGetFbUsage.Unlock()\n\treturn mock.GetFbUsageFunc()\n}\n\n// GetFbUsageCalls gets all the calls that were made to GetFbUsage.\n// Check the length with:\n//\n//\tlen(mockedVgpuInstance.GetFbUsageCalls())\nfunc (mock *VgpuInstance) GetFbUsageCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetFbUsage.RLock()\n\tcalls = mock.calls.GetFbUsage\n\tmock.lockGetFbUsage.RUnlock()\n\treturn calls\n}\n\n// GetFrameRateLimit calls GetFrameRateLimitFunc.\nfunc (mock *VgpuInstance) GetFrameRateLimit() (uint32, nvml.Return) {\n\tif mock.GetFrameRateLimitFunc == nil {\n\t\tpanic(\"VgpuInstance.GetFrameRateLimitFunc: method is nil but VgpuInstance.GetFrameRateLimit was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetFrameRateLimit.Lock()\n\tmock.calls.GetFrameRateLimit = append(mock.calls.GetFrameRateLimit, callInfo)\n\tmock.lockGetFrameRateLimit.Unlock()\n\treturn mock.GetFrameRateLimitFunc()\n}\n\n// GetFrameRateLimitCalls gets all the calls that were made to GetFrameRateLimit.\n// Check the length with:\n//\n//\tlen(mockedVgpuInstance.GetFrameRateLimitCalls())\nfunc (mock *VgpuInstance) GetFrameRateLimitCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetFrameRateLimit.RLock()\n\tcalls = mock.calls.GetFrameRateLimit\n\tmock.lockGetFrameRateLimit.RUnlock()\n\treturn calls\n}\n\n// GetGpuInstanceId calls GetGpuInstanceIdFunc.\nfunc (mock *VgpuInstance) GetGpuInstanceId() (int, nvml.Return) {\n\tif mock.GetGpuInstanceIdFunc == nil {\n\t\tpanic(\"VgpuInstance.GetGpuInstanceIdFunc: method is nil but VgpuInstance.GetGpuInstanceId was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetGpuInstanceId.Lock()\n\tmock.calls.GetGpuInstanceId = append(mock.calls.GetGpuInstanceId, callInfo)\n\tmock.lockGetGpuInstanceId.Unlock()\n\treturn mock.GetGpuInstanceIdFunc()\n}\n\n// GetGpuInstanceIdCalls gets all the calls that were made to GetGpuInstanceId.\n// Check the length with:\n//\n//\tlen(mockedVgpuInstance.GetGpuInstanceIdCalls())\nfunc (mock *VgpuInstance) GetGpuInstanceIdCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetGpuInstanceId.RLock()\n\tcalls = mock.calls.GetGpuInstanceId\n\tmock.lockGetGpuInstanceId.RUnlock()\n\treturn calls\n}\n\n// GetGpuPciId calls GetGpuPciIdFunc.\nfunc (mock *VgpuInstance) GetGpuPciId() (string, nvml.Return) {\n\tif mock.GetGpuPciIdFunc == nil {\n\t\tpanic(\"VgpuInstance.GetGpuPciIdFunc: method is nil but VgpuInstance.GetGpuPciId was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetGpuPciId.Lock()\n\tmock.calls.GetGpuPciId = append(mock.calls.GetGpuPciId, callInfo)\n\tmock.lockGetGpuPciId.Unlock()\n\treturn mock.GetGpuPciIdFunc()\n}\n\n// GetGpuPciIdCalls gets all the calls that were made to GetGpuPciId.\n// Check the length with:\n//\n//\tlen(mockedVgpuInstance.GetGpuPciIdCalls())\nfunc (mock *VgpuInstance) GetGpuPciIdCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetGpuPciId.RLock()\n\tcalls = mock.calls.GetGpuPciId\n\tmock.lockGetGpuPciId.RUnlock()\n\treturn calls\n}\n\n// GetLicenseInfo calls GetLicenseInfoFunc.\nfunc (mock *VgpuInstance) GetLicenseInfo() (nvml.VgpuLicenseInfo, nvml.Return) {\n\tif mock.GetLicenseInfoFunc == nil {\n\t\tpanic(\"VgpuInstance.GetLicenseInfoFunc: method is nil but VgpuInstance.GetLicenseInfo was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetLicenseInfo.Lock()\n\tmock.calls.GetLicenseInfo = append(mock.calls.GetLicenseInfo, callInfo)\n\tmock.lockGetLicenseInfo.Unlock()\n\treturn mock.GetLicenseInfoFunc()\n}\n\n// GetLicenseInfoCalls gets all the calls that were made to GetLicenseInfo.\n// Check the length with:\n//\n//\tlen(mockedVgpuInstance.GetLicenseInfoCalls())\nfunc (mock *VgpuInstance) GetLicenseInfoCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetLicenseInfo.RLock()\n\tcalls = mock.calls.GetLicenseInfo\n\tmock.lockGetLicenseInfo.RUnlock()\n\treturn calls\n}\n\n// GetLicenseStatus calls GetLicenseStatusFunc.\nfunc (mock *VgpuInstance) GetLicenseStatus() (int, nvml.Return) {\n\tif mock.GetLicenseStatusFunc == nil {\n\t\tpanic(\"VgpuInstance.GetLicenseStatusFunc: method is nil but VgpuInstance.GetLicenseStatus was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetLicenseStatus.Lock()\n\tmock.calls.GetLicenseStatus = append(mock.calls.GetLicenseStatus, callInfo)\n\tmock.lockGetLicenseStatus.Unlock()\n\treturn mock.GetLicenseStatusFunc()\n}\n\n// GetLicenseStatusCalls gets all the calls that were made to GetLicenseStatus.\n// Check the length with:\n//\n//\tlen(mockedVgpuInstance.GetLicenseStatusCalls())\nfunc (mock *VgpuInstance) GetLicenseStatusCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetLicenseStatus.RLock()\n\tcalls = mock.calls.GetLicenseStatus\n\tmock.lockGetLicenseStatus.RUnlock()\n\treturn calls\n}\n\n// GetMdevUUID calls GetMdevUUIDFunc.\nfunc (mock *VgpuInstance) GetMdevUUID() (string, nvml.Return) {\n\tif mock.GetMdevUUIDFunc == nil {\n\t\tpanic(\"VgpuInstance.GetMdevUUIDFunc: method is nil but VgpuInstance.GetMdevUUID was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetMdevUUID.Lock()\n\tmock.calls.GetMdevUUID = append(mock.calls.GetMdevUUID, callInfo)\n\tmock.lockGetMdevUUID.Unlock()\n\treturn mock.GetMdevUUIDFunc()\n}\n\n// GetMdevUUIDCalls gets all the calls that were made to GetMdevUUID.\n// Check the length with:\n//\n//\tlen(mockedVgpuInstance.GetMdevUUIDCalls())\nfunc (mock *VgpuInstance) GetMdevUUIDCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetMdevUUID.RLock()\n\tcalls = mock.calls.GetMdevUUID\n\tmock.lockGetMdevUUID.RUnlock()\n\treturn calls\n}\n\n// GetMetadata calls GetMetadataFunc.\nfunc (mock *VgpuInstance) GetMetadata() (nvml.VgpuMetadata, nvml.Return) {\n\tif mock.GetMetadataFunc == nil {\n\t\tpanic(\"VgpuInstance.GetMetadataFunc: method is nil but VgpuInstance.GetMetadata was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetMetadata.Lock()\n\tmock.calls.GetMetadata = append(mock.calls.GetMetadata, callInfo)\n\tmock.lockGetMetadata.Unlock()\n\treturn mock.GetMetadataFunc()\n}\n\n// GetMetadataCalls gets all the calls that were made to GetMetadata.\n// Check the length with:\n//\n//\tlen(mockedVgpuInstance.GetMetadataCalls())\nfunc (mock *VgpuInstance) GetMetadataCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetMetadata.RLock()\n\tcalls = mock.calls.GetMetadata\n\tmock.lockGetMetadata.RUnlock()\n\treturn calls\n}\n\n// GetRuntimeStateSize calls GetRuntimeStateSizeFunc.\nfunc (mock *VgpuInstance) GetRuntimeStateSize() (nvml.VgpuRuntimeState, nvml.Return) {\n\tif mock.GetRuntimeStateSizeFunc == nil {\n\t\tpanic(\"VgpuInstance.GetRuntimeStateSizeFunc: method is nil but VgpuInstance.GetRuntimeStateSize was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetRuntimeStateSize.Lock()\n\tmock.calls.GetRuntimeStateSize = append(mock.calls.GetRuntimeStateSize, callInfo)\n\tmock.lockGetRuntimeStateSize.Unlock()\n\treturn mock.GetRuntimeStateSizeFunc()\n}\n\n// GetRuntimeStateSizeCalls gets all the calls that were made to GetRuntimeStateSize.\n// Check the length with:\n//\n//\tlen(mockedVgpuInstance.GetRuntimeStateSizeCalls())\nfunc (mock *VgpuInstance) GetRuntimeStateSizeCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetRuntimeStateSize.RLock()\n\tcalls = mock.calls.GetRuntimeStateSize\n\tmock.lockGetRuntimeStateSize.RUnlock()\n\treturn calls\n}\n\n// GetType calls GetTypeFunc.\nfunc (mock *VgpuInstance) GetType() (nvml.VgpuTypeId, nvml.Return) {\n\tif mock.GetTypeFunc == nil {\n\t\tpanic(\"VgpuInstance.GetTypeFunc: method is nil but VgpuInstance.GetType was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetType.Lock()\n\tmock.calls.GetType = append(mock.calls.GetType, callInfo)\n\tmock.lockGetType.Unlock()\n\treturn mock.GetTypeFunc()\n}\n\n// GetTypeCalls gets all the calls that were made to GetType.\n// Check the length with:\n//\n//\tlen(mockedVgpuInstance.GetTypeCalls())\nfunc (mock *VgpuInstance) GetTypeCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetType.RLock()\n\tcalls = mock.calls.GetType\n\tmock.lockGetType.RUnlock()\n\treturn calls\n}\n\n// GetUUID calls GetUUIDFunc.\nfunc (mock *VgpuInstance) GetUUID() (string, nvml.Return) {\n\tif mock.GetUUIDFunc == nil {\n\t\tpanic(\"VgpuInstance.GetUUIDFunc: method is nil but VgpuInstance.GetUUID was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetUUID.Lock()\n\tmock.calls.GetUUID = append(mock.calls.GetUUID, callInfo)\n\tmock.lockGetUUID.Unlock()\n\treturn mock.GetUUIDFunc()\n}\n\n// GetUUIDCalls gets all the calls that were made to GetUUID.\n// Check the length with:\n//\n//\tlen(mockedVgpuInstance.GetUUIDCalls())\nfunc (mock *VgpuInstance) GetUUIDCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetUUID.RLock()\n\tcalls = mock.calls.GetUUID\n\tmock.lockGetUUID.RUnlock()\n\treturn calls\n}\n\n// GetVmDriverVersion calls GetVmDriverVersionFunc.\nfunc (mock *VgpuInstance) GetVmDriverVersion() (string, nvml.Return) {\n\tif mock.GetVmDriverVersionFunc == nil {\n\t\tpanic(\"VgpuInstance.GetVmDriverVersionFunc: method is nil but VgpuInstance.GetVmDriverVersion was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetVmDriverVersion.Lock()\n\tmock.calls.GetVmDriverVersion = append(mock.calls.GetVmDriverVersion, callInfo)\n\tmock.lockGetVmDriverVersion.Unlock()\n\treturn mock.GetVmDriverVersionFunc()\n}\n\n// GetVmDriverVersionCalls gets all the calls that were made to GetVmDriverVersion.\n// Check the length with:\n//\n//\tlen(mockedVgpuInstance.GetVmDriverVersionCalls())\nfunc (mock *VgpuInstance) GetVmDriverVersionCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetVmDriverVersion.RLock()\n\tcalls = mock.calls.GetVmDriverVersion\n\tmock.lockGetVmDriverVersion.RUnlock()\n\treturn calls\n}\n\n// GetVmID calls GetVmIDFunc.\nfunc (mock *VgpuInstance) GetVmID() (string, nvml.VgpuVmIdType, nvml.Return) {\n\tif mock.GetVmIDFunc == nil {\n\t\tpanic(\"VgpuInstance.GetVmIDFunc: method is nil but VgpuInstance.GetVmID was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetVmID.Lock()\n\tmock.calls.GetVmID = append(mock.calls.GetVmID, callInfo)\n\tmock.lockGetVmID.Unlock()\n\treturn mock.GetVmIDFunc()\n}\n\n// GetVmIDCalls gets all the calls that were made to GetVmID.\n// Check the length with:\n//\n//\tlen(mockedVgpuInstance.GetVmIDCalls())\nfunc (mock *VgpuInstance) GetVmIDCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetVmID.RLock()\n\tcalls = mock.calls.GetVmID\n\tmock.lockGetVmID.RUnlock()\n\treturn calls\n}\n\n// SetEncoderCapacity calls SetEncoderCapacityFunc.\nfunc (mock *VgpuInstance) SetEncoderCapacity(n int) nvml.Return {\n\tif mock.SetEncoderCapacityFunc == nil {\n\t\tpanic(\"VgpuInstance.SetEncoderCapacityFunc: method is nil but VgpuInstance.SetEncoderCapacity was just called\")\n\t}\n\tcallInfo := struct {\n\t\tN int\n\t}{\n\t\tN: n,\n\t}\n\tmock.lockSetEncoderCapacity.Lock()\n\tmock.calls.SetEncoderCapacity = append(mock.calls.SetEncoderCapacity, callInfo)\n\tmock.lockSetEncoderCapacity.Unlock()\n\treturn mock.SetEncoderCapacityFunc(n)\n}\n\n// SetEncoderCapacityCalls gets all the calls that were made to SetEncoderCapacity.\n// Check the length with:\n//\n//\tlen(mockedVgpuInstance.SetEncoderCapacityCalls())\nfunc (mock *VgpuInstance) SetEncoderCapacityCalls() []struct {\n\tN int\n} {\n\tvar calls []struct {\n\t\tN int\n\t}\n\tmock.lockSetEncoderCapacity.RLock()\n\tcalls = mock.calls.SetEncoderCapacity\n\tmock.lockSetEncoderCapacity.RUnlock()\n\treturn calls\n}\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvml/pkg/nvml/mock/vgputypeid.go",
    "content": "// Code generated by moq; DO NOT EDIT.\n// github.com/matryer/moq\n\npackage mock\n\nimport (\n\t\"github.com/NVIDIA/go-nvml/pkg/nvml\"\n\t\"sync\"\n)\n\n// Ensure, that VgpuTypeId does implement nvml.VgpuTypeId.\n// If this is not the case, regenerate this file with moq.\nvar _ nvml.VgpuTypeId = &VgpuTypeId{}\n\n// VgpuTypeId is a mock implementation of nvml.VgpuTypeId.\n//\n//\tfunc TestSomethingThatUsesVgpuTypeId(t *testing.T) {\n//\n//\t\t// make and configure a mocked nvml.VgpuTypeId\n//\t\tmockedVgpuTypeId := &VgpuTypeId{\n//\t\t\tGetBAR1InfoFunc: func() (nvml.VgpuTypeBar1Info, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetBAR1Info method\")\n//\t\t\t},\n//\t\t\tGetCapabilitiesFunc: func(vgpuCapability nvml.VgpuCapability) (bool, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetCapabilities method\")\n//\t\t\t},\n//\t\t\tGetClassFunc: func() (string, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetClass method\")\n//\t\t\t},\n//\t\t\tGetCreatablePlacementsFunc: func(device nvml.Device) (nvml.VgpuPlacementList, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetCreatablePlacements method\")\n//\t\t\t},\n//\t\t\tGetDeviceIDFunc: func() (uint64, uint64, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetDeviceID method\")\n//\t\t\t},\n//\t\t\tGetFrameRateLimitFunc: func() (uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetFrameRateLimit method\")\n//\t\t\t},\n//\t\t\tGetFramebufferSizeFunc: func() (uint64, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetFramebufferSize method\")\n//\t\t\t},\n//\t\t\tGetGpuInstanceProfileIdFunc: func() (uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetGpuInstanceProfileId method\")\n//\t\t\t},\n//\t\t\tGetLicenseFunc: func() (string, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetLicense method\")\n//\t\t\t},\n//\t\t\tGetMaxInstancesFunc: func(device nvml.Device) (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetMaxInstances method\")\n//\t\t\t},\n//\t\t\tGetMaxInstancesPerVmFunc: func() (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetMaxInstancesPerVm method\")\n//\t\t\t},\n//\t\t\tGetNameFunc: func() (string, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetName method\")\n//\t\t\t},\n//\t\t\tGetNumDisplayHeadsFunc: func() (int, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetNumDisplayHeads method\")\n//\t\t\t},\n//\t\t\tGetResolutionFunc: func(n int) (uint32, uint32, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetResolution method\")\n//\t\t\t},\n//\t\t\tGetSupportedPlacementsFunc: func(device nvml.Device) (nvml.VgpuPlacementList, nvml.Return) {\n//\t\t\t\tpanic(\"mock out the GetSupportedPlacements method\")\n//\t\t\t},\n//\t\t}\n//\n//\t\t// use mockedVgpuTypeId in code that requires nvml.VgpuTypeId\n//\t\t// and then make assertions.\n//\n//\t}\ntype VgpuTypeId struct {\n\t// GetBAR1InfoFunc mocks the GetBAR1Info method.\n\tGetBAR1InfoFunc func() (nvml.VgpuTypeBar1Info, nvml.Return)\n\n\t// GetCapabilitiesFunc mocks the GetCapabilities method.\n\tGetCapabilitiesFunc func(vgpuCapability nvml.VgpuCapability) (bool, nvml.Return)\n\n\t// GetClassFunc mocks the GetClass method.\n\tGetClassFunc func() (string, nvml.Return)\n\n\t// GetCreatablePlacementsFunc mocks the GetCreatablePlacements method.\n\tGetCreatablePlacementsFunc func(device nvml.Device) (nvml.VgpuPlacementList, nvml.Return)\n\n\t// GetDeviceIDFunc mocks the GetDeviceID method.\n\tGetDeviceIDFunc func() (uint64, uint64, nvml.Return)\n\n\t// GetFrameRateLimitFunc mocks the GetFrameRateLimit method.\n\tGetFrameRateLimitFunc func() (uint32, nvml.Return)\n\n\t// GetFramebufferSizeFunc mocks the GetFramebufferSize method.\n\tGetFramebufferSizeFunc func() (uint64, nvml.Return)\n\n\t// GetGpuInstanceProfileIdFunc mocks the GetGpuInstanceProfileId method.\n\tGetGpuInstanceProfileIdFunc func() (uint32, nvml.Return)\n\n\t// GetLicenseFunc mocks the GetLicense method.\n\tGetLicenseFunc func() (string, nvml.Return)\n\n\t// GetMaxInstancesFunc mocks the GetMaxInstances method.\n\tGetMaxInstancesFunc func(device nvml.Device) (int, nvml.Return)\n\n\t// GetMaxInstancesPerVmFunc mocks the GetMaxInstancesPerVm method.\n\tGetMaxInstancesPerVmFunc func() (int, nvml.Return)\n\n\t// GetNameFunc mocks the GetName method.\n\tGetNameFunc func() (string, nvml.Return)\n\n\t// GetNumDisplayHeadsFunc mocks the GetNumDisplayHeads method.\n\tGetNumDisplayHeadsFunc func() (int, nvml.Return)\n\n\t// GetResolutionFunc mocks the GetResolution method.\n\tGetResolutionFunc func(n int) (uint32, uint32, nvml.Return)\n\n\t// GetSupportedPlacementsFunc mocks the GetSupportedPlacements method.\n\tGetSupportedPlacementsFunc func(device nvml.Device) (nvml.VgpuPlacementList, nvml.Return)\n\n\t// calls tracks calls to the methods.\n\tcalls struct {\n\t\t// GetBAR1Info holds details about calls to the GetBAR1Info method.\n\t\tGetBAR1Info []struct {\n\t\t}\n\t\t// GetCapabilities holds details about calls to the GetCapabilities method.\n\t\tGetCapabilities []struct {\n\t\t\t// VgpuCapability is the vgpuCapability argument value.\n\t\t\tVgpuCapability nvml.VgpuCapability\n\t\t}\n\t\t// GetClass holds details about calls to the GetClass method.\n\t\tGetClass []struct {\n\t\t}\n\t\t// GetCreatablePlacements holds details about calls to the GetCreatablePlacements method.\n\t\tGetCreatablePlacements []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// GetDeviceID holds details about calls to the GetDeviceID method.\n\t\tGetDeviceID []struct {\n\t\t}\n\t\t// GetFrameRateLimit holds details about calls to the GetFrameRateLimit method.\n\t\tGetFrameRateLimit []struct {\n\t\t}\n\t\t// GetFramebufferSize holds details about calls to the GetFramebufferSize method.\n\t\tGetFramebufferSize []struct {\n\t\t}\n\t\t// GetGpuInstanceProfileId holds details about calls to the GetGpuInstanceProfileId method.\n\t\tGetGpuInstanceProfileId []struct {\n\t\t}\n\t\t// GetLicense holds details about calls to the GetLicense method.\n\t\tGetLicense []struct {\n\t\t}\n\t\t// GetMaxInstances holds details about calls to the GetMaxInstances method.\n\t\tGetMaxInstances []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t\t// GetMaxInstancesPerVm holds details about calls to the GetMaxInstancesPerVm method.\n\t\tGetMaxInstancesPerVm []struct {\n\t\t}\n\t\t// GetName holds details about calls to the GetName method.\n\t\tGetName []struct {\n\t\t}\n\t\t// GetNumDisplayHeads holds details about calls to the GetNumDisplayHeads method.\n\t\tGetNumDisplayHeads []struct {\n\t\t}\n\t\t// GetResolution holds details about calls to the GetResolution method.\n\t\tGetResolution []struct {\n\t\t\t// N is the n argument value.\n\t\t\tN int\n\t\t}\n\t\t// GetSupportedPlacements holds details about calls to the GetSupportedPlacements method.\n\t\tGetSupportedPlacements []struct {\n\t\t\t// Device is the device argument value.\n\t\t\tDevice nvml.Device\n\t\t}\n\t}\n\tlockGetBAR1Info             sync.RWMutex\n\tlockGetCapabilities         sync.RWMutex\n\tlockGetClass                sync.RWMutex\n\tlockGetCreatablePlacements  sync.RWMutex\n\tlockGetDeviceID             sync.RWMutex\n\tlockGetFrameRateLimit       sync.RWMutex\n\tlockGetFramebufferSize      sync.RWMutex\n\tlockGetGpuInstanceProfileId sync.RWMutex\n\tlockGetLicense              sync.RWMutex\n\tlockGetMaxInstances         sync.RWMutex\n\tlockGetMaxInstancesPerVm    sync.RWMutex\n\tlockGetName                 sync.RWMutex\n\tlockGetNumDisplayHeads      sync.RWMutex\n\tlockGetResolution           sync.RWMutex\n\tlockGetSupportedPlacements  sync.RWMutex\n}\n\n// GetBAR1Info calls GetBAR1InfoFunc.\nfunc (mock *VgpuTypeId) GetBAR1Info() (nvml.VgpuTypeBar1Info, nvml.Return) {\n\tif mock.GetBAR1InfoFunc == nil {\n\t\tpanic(\"VgpuTypeId.GetBAR1InfoFunc: method is nil but VgpuTypeId.GetBAR1Info was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetBAR1Info.Lock()\n\tmock.calls.GetBAR1Info = append(mock.calls.GetBAR1Info, callInfo)\n\tmock.lockGetBAR1Info.Unlock()\n\treturn mock.GetBAR1InfoFunc()\n}\n\n// GetBAR1InfoCalls gets all the calls that were made to GetBAR1Info.\n// Check the length with:\n//\n//\tlen(mockedVgpuTypeId.GetBAR1InfoCalls())\nfunc (mock *VgpuTypeId) GetBAR1InfoCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetBAR1Info.RLock()\n\tcalls = mock.calls.GetBAR1Info\n\tmock.lockGetBAR1Info.RUnlock()\n\treturn calls\n}\n\n// GetCapabilities calls GetCapabilitiesFunc.\nfunc (mock *VgpuTypeId) GetCapabilities(vgpuCapability nvml.VgpuCapability) (bool, nvml.Return) {\n\tif mock.GetCapabilitiesFunc == nil {\n\t\tpanic(\"VgpuTypeId.GetCapabilitiesFunc: method is nil but VgpuTypeId.GetCapabilities was just called\")\n\t}\n\tcallInfo := struct {\n\t\tVgpuCapability nvml.VgpuCapability\n\t}{\n\t\tVgpuCapability: vgpuCapability,\n\t}\n\tmock.lockGetCapabilities.Lock()\n\tmock.calls.GetCapabilities = append(mock.calls.GetCapabilities, callInfo)\n\tmock.lockGetCapabilities.Unlock()\n\treturn mock.GetCapabilitiesFunc(vgpuCapability)\n}\n\n// GetCapabilitiesCalls gets all the calls that were made to GetCapabilities.\n// Check the length with:\n//\n//\tlen(mockedVgpuTypeId.GetCapabilitiesCalls())\nfunc (mock *VgpuTypeId) GetCapabilitiesCalls() []struct {\n\tVgpuCapability nvml.VgpuCapability\n} {\n\tvar calls []struct {\n\t\tVgpuCapability nvml.VgpuCapability\n\t}\n\tmock.lockGetCapabilities.RLock()\n\tcalls = mock.calls.GetCapabilities\n\tmock.lockGetCapabilities.RUnlock()\n\treturn calls\n}\n\n// GetClass calls GetClassFunc.\nfunc (mock *VgpuTypeId) GetClass() (string, nvml.Return) {\n\tif mock.GetClassFunc == nil {\n\t\tpanic(\"VgpuTypeId.GetClassFunc: method is nil but VgpuTypeId.GetClass was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetClass.Lock()\n\tmock.calls.GetClass = append(mock.calls.GetClass, callInfo)\n\tmock.lockGetClass.Unlock()\n\treturn mock.GetClassFunc()\n}\n\n// GetClassCalls gets all the calls that were made to GetClass.\n// Check the length with:\n//\n//\tlen(mockedVgpuTypeId.GetClassCalls())\nfunc (mock *VgpuTypeId) GetClassCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetClass.RLock()\n\tcalls = mock.calls.GetClass\n\tmock.lockGetClass.RUnlock()\n\treturn calls\n}\n\n// GetCreatablePlacements calls GetCreatablePlacementsFunc.\nfunc (mock *VgpuTypeId) GetCreatablePlacements(device nvml.Device) (nvml.VgpuPlacementList, nvml.Return) {\n\tif mock.GetCreatablePlacementsFunc == nil {\n\t\tpanic(\"VgpuTypeId.GetCreatablePlacementsFunc: method is nil but VgpuTypeId.GetCreatablePlacements was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockGetCreatablePlacements.Lock()\n\tmock.calls.GetCreatablePlacements = append(mock.calls.GetCreatablePlacements, callInfo)\n\tmock.lockGetCreatablePlacements.Unlock()\n\treturn mock.GetCreatablePlacementsFunc(device)\n}\n\n// GetCreatablePlacementsCalls gets all the calls that were made to GetCreatablePlacements.\n// Check the length with:\n//\n//\tlen(mockedVgpuTypeId.GetCreatablePlacementsCalls())\nfunc (mock *VgpuTypeId) GetCreatablePlacementsCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockGetCreatablePlacements.RLock()\n\tcalls = mock.calls.GetCreatablePlacements\n\tmock.lockGetCreatablePlacements.RUnlock()\n\treturn calls\n}\n\n// GetDeviceID calls GetDeviceIDFunc.\nfunc (mock *VgpuTypeId) GetDeviceID() (uint64, uint64, nvml.Return) {\n\tif mock.GetDeviceIDFunc == nil {\n\t\tpanic(\"VgpuTypeId.GetDeviceIDFunc: method is nil but VgpuTypeId.GetDeviceID was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetDeviceID.Lock()\n\tmock.calls.GetDeviceID = append(mock.calls.GetDeviceID, callInfo)\n\tmock.lockGetDeviceID.Unlock()\n\treturn mock.GetDeviceIDFunc()\n}\n\n// GetDeviceIDCalls gets all the calls that were made to GetDeviceID.\n// Check the length with:\n//\n//\tlen(mockedVgpuTypeId.GetDeviceIDCalls())\nfunc (mock *VgpuTypeId) GetDeviceIDCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetDeviceID.RLock()\n\tcalls = mock.calls.GetDeviceID\n\tmock.lockGetDeviceID.RUnlock()\n\treturn calls\n}\n\n// GetFrameRateLimit calls GetFrameRateLimitFunc.\nfunc (mock *VgpuTypeId) GetFrameRateLimit() (uint32, nvml.Return) {\n\tif mock.GetFrameRateLimitFunc == nil {\n\t\tpanic(\"VgpuTypeId.GetFrameRateLimitFunc: method is nil but VgpuTypeId.GetFrameRateLimit was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetFrameRateLimit.Lock()\n\tmock.calls.GetFrameRateLimit = append(mock.calls.GetFrameRateLimit, callInfo)\n\tmock.lockGetFrameRateLimit.Unlock()\n\treturn mock.GetFrameRateLimitFunc()\n}\n\n// GetFrameRateLimitCalls gets all the calls that were made to GetFrameRateLimit.\n// Check the length with:\n//\n//\tlen(mockedVgpuTypeId.GetFrameRateLimitCalls())\nfunc (mock *VgpuTypeId) GetFrameRateLimitCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetFrameRateLimit.RLock()\n\tcalls = mock.calls.GetFrameRateLimit\n\tmock.lockGetFrameRateLimit.RUnlock()\n\treturn calls\n}\n\n// GetFramebufferSize calls GetFramebufferSizeFunc.\nfunc (mock *VgpuTypeId) GetFramebufferSize() (uint64, nvml.Return) {\n\tif mock.GetFramebufferSizeFunc == nil {\n\t\tpanic(\"VgpuTypeId.GetFramebufferSizeFunc: method is nil but VgpuTypeId.GetFramebufferSize was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetFramebufferSize.Lock()\n\tmock.calls.GetFramebufferSize = append(mock.calls.GetFramebufferSize, callInfo)\n\tmock.lockGetFramebufferSize.Unlock()\n\treturn mock.GetFramebufferSizeFunc()\n}\n\n// GetFramebufferSizeCalls gets all the calls that were made to GetFramebufferSize.\n// Check the length with:\n//\n//\tlen(mockedVgpuTypeId.GetFramebufferSizeCalls())\nfunc (mock *VgpuTypeId) GetFramebufferSizeCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetFramebufferSize.RLock()\n\tcalls = mock.calls.GetFramebufferSize\n\tmock.lockGetFramebufferSize.RUnlock()\n\treturn calls\n}\n\n// GetGpuInstanceProfileId calls GetGpuInstanceProfileIdFunc.\nfunc (mock *VgpuTypeId) GetGpuInstanceProfileId() (uint32, nvml.Return) {\n\tif mock.GetGpuInstanceProfileIdFunc == nil {\n\t\tpanic(\"VgpuTypeId.GetGpuInstanceProfileIdFunc: method is nil but VgpuTypeId.GetGpuInstanceProfileId was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetGpuInstanceProfileId.Lock()\n\tmock.calls.GetGpuInstanceProfileId = append(mock.calls.GetGpuInstanceProfileId, callInfo)\n\tmock.lockGetGpuInstanceProfileId.Unlock()\n\treturn mock.GetGpuInstanceProfileIdFunc()\n}\n\n// GetGpuInstanceProfileIdCalls gets all the calls that were made to GetGpuInstanceProfileId.\n// Check the length with:\n//\n//\tlen(mockedVgpuTypeId.GetGpuInstanceProfileIdCalls())\nfunc (mock *VgpuTypeId) GetGpuInstanceProfileIdCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetGpuInstanceProfileId.RLock()\n\tcalls = mock.calls.GetGpuInstanceProfileId\n\tmock.lockGetGpuInstanceProfileId.RUnlock()\n\treturn calls\n}\n\n// GetLicense calls GetLicenseFunc.\nfunc (mock *VgpuTypeId) GetLicense() (string, nvml.Return) {\n\tif mock.GetLicenseFunc == nil {\n\t\tpanic(\"VgpuTypeId.GetLicenseFunc: method is nil but VgpuTypeId.GetLicense was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetLicense.Lock()\n\tmock.calls.GetLicense = append(mock.calls.GetLicense, callInfo)\n\tmock.lockGetLicense.Unlock()\n\treturn mock.GetLicenseFunc()\n}\n\n// GetLicenseCalls gets all the calls that were made to GetLicense.\n// Check the length with:\n//\n//\tlen(mockedVgpuTypeId.GetLicenseCalls())\nfunc (mock *VgpuTypeId) GetLicenseCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetLicense.RLock()\n\tcalls = mock.calls.GetLicense\n\tmock.lockGetLicense.RUnlock()\n\treturn calls\n}\n\n// GetMaxInstances calls GetMaxInstancesFunc.\nfunc (mock *VgpuTypeId) GetMaxInstances(device nvml.Device) (int, nvml.Return) {\n\tif mock.GetMaxInstancesFunc == nil {\n\t\tpanic(\"VgpuTypeId.GetMaxInstancesFunc: method is nil but VgpuTypeId.GetMaxInstances was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockGetMaxInstances.Lock()\n\tmock.calls.GetMaxInstances = append(mock.calls.GetMaxInstances, callInfo)\n\tmock.lockGetMaxInstances.Unlock()\n\treturn mock.GetMaxInstancesFunc(device)\n}\n\n// GetMaxInstancesCalls gets all the calls that were made to GetMaxInstances.\n// Check the length with:\n//\n//\tlen(mockedVgpuTypeId.GetMaxInstancesCalls())\nfunc (mock *VgpuTypeId) GetMaxInstancesCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockGetMaxInstances.RLock()\n\tcalls = mock.calls.GetMaxInstances\n\tmock.lockGetMaxInstances.RUnlock()\n\treturn calls\n}\n\n// GetMaxInstancesPerVm calls GetMaxInstancesPerVmFunc.\nfunc (mock *VgpuTypeId) GetMaxInstancesPerVm() (int, nvml.Return) {\n\tif mock.GetMaxInstancesPerVmFunc == nil {\n\t\tpanic(\"VgpuTypeId.GetMaxInstancesPerVmFunc: method is nil but VgpuTypeId.GetMaxInstancesPerVm was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetMaxInstancesPerVm.Lock()\n\tmock.calls.GetMaxInstancesPerVm = append(mock.calls.GetMaxInstancesPerVm, callInfo)\n\tmock.lockGetMaxInstancesPerVm.Unlock()\n\treturn mock.GetMaxInstancesPerVmFunc()\n}\n\n// GetMaxInstancesPerVmCalls gets all the calls that were made to GetMaxInstancesPerVm.\n// Check the length with:\n//\n//\tlen(mockedVgpuTypeId.GetMaxInstancesPerVmCalls())\nfunc (mock *VgpuTypeId) GetMaxInstancesPerVmCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetMaxInstancesPerVm.RLock()\n\tcalls = mock.calls.GetMaxInstancesPerVm\n\tmock.lockGetMaxInstancesPerVm.RUnlock()\n\treturn calls\n}\n\n// GetName calls GetNameFunc.\nfunc (mock *VgpuTypeId) GetName() (string, nvml.Return) {\n\tif mock.GetNameFunc == nil {\n\t\tpanic(\"VgpuTypeId.GetNameFunc: method is nil but VgpuTypeId.GetName was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetName.Lock()\n\tmock.calls.GetName = append(mock.calls.GetName, callInfo)\n\tmock.lockGetName.Unlock()\n\treturn mock.GetNameFunc()\n}\n\n// GetNameCalls gets all the calls that were made to GetName.\n// Check the length with:\n//\n//\tlen(mockedVgpuTypeId.GetNameCalls())\nfunc (mock *VgpuTypeId) GetNameCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetName.RLock()\n\tcalls = mock.calls.GetName\n\tmock.lockGetName.RUnlock()\n\treturn calls\n}\n\n// GetNumDisplayHeads calls GetNumDisplayHeadsFunc.\nfunc (mock *VgpuTypeId) GetNumDisplayHeads() (int, nvml.Return) {\n\tif mock.GetNumDisplayHeadsFunc == nil {\n\t\tpanic(\"VgpuTypeId.GetNumDisplayHeadsFunc: method is nil but VgpuTypeId.GetNumDisplayHeads was just called\")\n\t}\n\tcallInfo := struct {\n\t}{}\n\tmock.lockGetNumDisplayHeads.Lock()\n\tmock.calls.GetNumDisplayHeads = append(mock.calls.GetNumDisplayHeads, callInfo)\n\tmock.lockGetNumDisplayHeads.Unlock()\n\treturn mock.GetNumDisplayHeadsFunc()\n}\n\n// GetNumDisplayHeadsCalls gets all the calls that were made to GetNumDisplayHeads.\n// Check the length with:\n//\n//\tlen(mockedVgpuTypeId.GetNumDisplayHeadsCalls())\nfunc (mock *VgpuTypeId) GetNumDisplayHeadsCalls() []struct {\n} {\n\tvar calls []struct {\n\t}\n\tmock.lockGetNumDisplayHeads.RLock()\n\tcalls = mock.calls.GetNumDisplayHeads\n\tmock.lockGetNumDisplayHeads.RUnlock()\n\treturn calls\n}\n\n// GetResolution calls GetResolutionFunc.\nfunc (mock *VgpuTypeId) GetResolution(n int) (uint32, uint32, nvml.Return) {\n\tif mock.GetResolutionFunc == nil {\n\t\tpanic(\"VgpuTypeId.GetResolutionFunc: method is nil but VgpuTypeId.GetResolution was just called\")\n\t}\n\tcallInfo := struct {\n\t\tN int\n\t}{\n\t\tN: n,\n\t}\n\tmock.lockGetResolution.Lock()\n\tmock.calls.GetResolution = append(mock.calls.GetResolution, callInfo)\n\tmock.lockGetResolution.Unlock()\n\treturn mock.GetResolutionFunc(n)\n}\n\n// GetResolutionCalls gets all the calls that were made to GetResolution.\n// Check the length with:\n//\n//\tlen(mockedVgpuTypeId.GetResolutionCalls())\nfunc (mock *VgpuTypeId) GetResolutionCalls() []struct {\n\tN int\n} {\n\tvar calls []struct {\n\t\tN int\n\t}\n\tmock.lockGetResolution.RLock()\n\tcalls = mock.calls.GetResolution\n\tmock.lockGetResolution.RUnlock()\n\treturn calls\n}\n\n// GetSupportedPlacements calls GetSupportedPlacementsFunc.\nfunc (mock *VgpuTypeId) GetSupportedPlacements(device nvml.Device) (nvml.VgpuPlacementList, nvml.Return) {\n\tif mock.GetSupportedPlacementsFunc == nil {\n\t\tpanic(\"VgpuTypeId.GetSupportedPlacementsFunc: method is nil but VgpuTypeId.GetSupportedPlacements was just called\")\n\t}\n\tcallInfo := struct {\n\t\tDevice nvml.Device\n\t}{\n\t\tDevice: device,\n\t}\n\tmock.lockGetSupportedPlacements.Lock()\n\tmock.calls.GetSupportedPlacements = append(mock.calls.GetSupportedPlacements, callInfo)\n\tmock.lockGetSupportedPlacements.Unlock()\n\treturn mock.GetSupportedPlacementsFunc(device)\n}\n\n// GetSupportedPlacementsCalls gets all the calls that were made to GetSupportedPlacements.\n// Check the length with:\n//\n//\tlen(mockedVgpuTypeId.GetSupportedPlacementsCalls())\nfunc (mock *VgpuTypeId) GetSupportedPlacementsCalls() []struct {\n\tDevice nvml.Device\n} {\n\tvar calls []struct {\n\t\tDevice nvml.Device\n\t}\n\tmock.lockGetSupportedPlacements.RLock()\n\tcalls = mock.calls.GetSupportedPlacements\n\tmock.lockGetSupportedPlacements.RUnlock()\n\treturn calls\n}\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvml/pkg/nvml/nvml.go",
    "content": "// Copyright (c) 2020, NVIDIA CORPORATION. All rights reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// WARNING: THIS FILE WAS AUTOMATICALLY GENERATED.\n// Code generated by https://git.io/c-for-go. DO NOT EDIT.\n\npackage nvml\n\n/*\n#cgo linux LDFLAGS: -Wl,--export-dynamic -Wl,--unresolved-symbols=ignore-in-object-files\n#cgo darwin LDFLAGS: -Wl,-undefined,dynamic_lookup\n#cgo CFLAGS: -DNVML_NO_UNVERSIONED_FUNC_DEFS=1\n#include \"nvml.h\"\n#include <stdlib.h>\n#include \"cgo_helpers.h\"\n*/\nimport \"C\"\nimport \"unsafe\"\n\n// nvmlInit_v2 function as declared in nvml/nvml.h\nfunc nvmlInit_v2() Return {\n\t__ret := C.nvmlInit_v2()\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlInitWithFlags function as declared in nvml/nvml.h\nfunc nvmlInitWithFlags(Flags uint32) Return {\n\tcFlags, _ := (C.uint)(Flags), cgoAllocsUnknown\n\t__ret := C.nvmlInitWithFlags(cFlags)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlShutdown function as declared in nvml/nvml.h\nfunc nvmlShutdown() Return {\n\t__ret := C.nvmlShutdown()\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlErrorString function as declared in nvml/nvml.h\nfunc nvmlErrorString(Result Return) string {\n\tcResult, _ := (C.nvmlReturn_t)(Result), cgoAllocsUnknown\n\t__ret := C.nvmlErrorString(cResult)\n\t__v := packPCharString(__ret)\n\treturn __v\n}\n\n// nvmlSystemGetDriverVersion function as declared in nvml/nvml.h\nfunc nvmlSystemGetDriverVersion(Version *byte, Length uint32) Return {\n\tcVersion, _ := (*C.char)(unsafe.Pointer(Version)), cgoAllocsUnknown\n\tcLength, _ := (C.uint)(Length), cgoAllocsUnknown\n\t__ret := C.nvmlSystemGetDriverVersion(cVersion, cLength)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlSystemGetNVMLVersion function as declared in nvml/nvml.h\nfunc nvmlSystemGetNVMLVersion(Version *byte, Length uint32) Return {\n\tcVersion, _ := (*C.char)(unsafe.Pointer(Version)), cgoAllocsUnknown\n\tcLength, _ := (C.uint)(Length), cgoAllocsUnknown\n\t__ret := C.nvmlSystemGetNVMLVersion(cVersion, cLength)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlSystemGetCudaDriverVersion function as declared in nvml/nvml.h\nfunc nvmlSystemGetCudaDriverVersion(CudaDriverVersion *int32) Return {\n\tcCudaDriverVersion, _ := (*C.int)(unsafe.Pointer(CudaDriverVersion)), cgoAllocsUnknown\n\t__ret := C.nvmlSystemGetCudaDriverVersion(cCudaDriverVersion)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlSystemGetCudaDriverVersion_v2 function as declared in nvml/nvml.h\nfunc nvmlSystemGetCudaDriverVersion_v2(CudaDriverVersion *int32) Return {\n\tcCudaDriverVersion, _ := (*C.int)(unsafe.Pointer(CudaDriverVersion)), cgoAllocsUnknown\n\t__ret := C.nvmlSystemGetCudaDriverVersion_v2(cCudaDriverVersion)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlSystemGetProcessName function as declared in nvml/nvml.h\nfunc nvmlSystemGetProcessName(Pid uint32, Name *byte, Length uint32) Return {\n\tcPid, _ := (C.uint)(Pid), cgoAllocsUnknown\n\tcName, _ := (*C.char)(unsafe.Pointer(Name)), cgoAllocsUnknown\n\tcLength, _ := (C.uint)(Length), cgoAllocsUnknown\n\t__ret := C.nvmlSystemGetProcessName(cPid, cName, cLength)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlSystemGetHicVersion function as declared in nvml/nvml.h\nfunc nvmlSystemGetHicVersion(HwbcCount *uint32, HwbcEntries *HwbcEntry) Return {\n\tcHwbcCount, _ := (*C.uint)(unsafe.Pointer(HwbcCount)), cgoAllocsUnknown\n\tcHwbcEntries, _ := (*C.nvmlHwbcEntry_t)(unsafe.Pointer(HwbcEntries)), cgoAllocsUnknown\n\t__ret := C.nvmlSystemGetHicVersion(cHwbcCount, cHwbcEntries)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlSystemGetTopologyGpuSet function as declared in nvml/nvml.h\nfunc nvmlSystemGetTopologyGpuSet(CpuNumber uint32, Count *uint32, DeviceArray *nvmlDevice) Return {\n\tcCpuNumber, _ := (C.uint)(CpuNumber), cgoAllocsUnknown\n\tcCount, _ := (*C.uint)(unsafe.Pointer(Count)), cgoAllocsUnknown\n\tcDeviceArray, _ := (*C.nvmlDevice_t)(unsafe.Pointer(DeviceArray)), cgoAllocsUnknown\n\t__ret := C.nvmlSystemGetTopologyGpuSet(cCpuNumber, cCount, cDeviceArray)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlSystemGetDriverBranch function as declared in nvml/nvml.h\nfunc nvmlSystemGetDriverBranch(BranchInfo *SystemDriverBranchInfo, Length uint32) Return {\n\tcBranchInfo, _ := (*C.nvmlSystemDriverBranchInfo_t)(unsafe.Pointer(BranchInfo)), cgoAllocsUnknown\n\tcLength, _ := (C.uint)(Length), cgoAllocsUnknown\n\t__ret := C.nvmlSystemGetDriverBranch(cBranchInfo, cLength)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlUnitGetCount function as declared in nvml/nvml.h\nfunc nvmlUnitGetCount(UnitCount *uint32) Return {\n\tcUnitCount, _ := (*C.uint)(unsafe.Pointer(UnitCount)), cgoAllocsUnknown\n\t__ret := C.nvmlUnitGetCount(cUnitCount)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlUnitGetHandleByIndex function as declared in nvml/nvml.h\nfunc nvmlUnitGetHandleByIndex(Index uint32, nvmlUnit *nvmlUnit) Return {\n\tcIndex, _ := (C.uint)(Index), cgoAllocsUnknown\n\tcnvmlUnit, _ := (*C.nvmlUnit_t)(unsafe.Pointer(nvmlUnit)), cgoAllocsUnknown\n\t__ret := C.nvmlUnitGetHandleByIndex(cIndex, cnvmlUnit)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlUnitGetUnitInfo function as declared in nvml/nvml.h\nfunc nvmlUnitGetUnitInfo(nvmlUnit nvmlUnit, Info *UnitInfo) Return {\n\tcnvmlUnit, _ := *(*C.nvmlUnit_t)(unsafe.Pointer(&nvmlUnit)), cgoAllocsUnknown\n\tcInfo, _ := (*C.nvmlUnitInfo_t)(unsafe.Pointer(Info)), cgoAllocsUnknown\n\t__ret := C.nvmlUnitGetUnitInfo(cnvmlUnit, cInfo)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlUnitGetLedState function as declared in nvml/nvml.h\nfunc nvmlUnitGetLedState(nvmlUnit nvmlUnit, State *LedState) Return {\n\tcnvmlUnit, _ := *(*C.nvmlUnit_t)(unsafe.Pointer(&nvmlUnit)), cgoAllocsUnknown\n\tcState, _ := (*C.nvmlLedState_t)(unsafe.Pointer(State)), cgoAllocsUnknown\n\t__ret := C.nvmlUnitGetLedState(cnvmlUnit, cState)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlUnitGetPsuInfo function as declared in nvml/nvml.h\nfunc nvmlUnitGetPsuInfo(nvmlUnit nvmlUnit, Psu *PSUInfo) Return {\n\tcnvmlUnit, _ := *(*C.nvmlUnit_t)(unsafe.Pointer(&nvmlUnit)), cgoAllocsUnknown\n\tcPsu, _ := (*C.nvmlPSUInfo_t)(unsafe.Pointer(Psu)), cgoAllocsUnknown\n\t__ret := C.nvmlUnitGetPsuInfo(cnvmlUnit, cPsu)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlUnitGetTemperature function as declared in nvml/nvml.h\nfunc nvmlUnitGetTemperature(nvmlUnit nvmlUnit, _type uint32, Temp *uint32) Return {\n\tcnvmlUnit, _ := *(*C.nvmlUnit_t)(unsafe.Pointer(&nvmlUnit)), cgoAllocsUnknown\n\tc_type, _ := (C.uint)(_type), cgoAllocsUnknown\n\tcTemp, _ := (*C.uint)(unsafe.Pointer(Temp)), cgoAllocsUnknown\n\t__ret := C.nvmlUnitGetTemperature(cnvmlUnit, c_type, cTemp)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlUnitGetFanSpeedInfo function as declared in nvml/nvml.h\nfunc nvmlUnitGetFanSpeedInfo(nvmlUnit nvmlUnit, FanSpeeds *UnitFanSpeeds) Return {\n\tcnvmlUnit, _ := *(*C.nvmlUnit_t)(unsafe.Pointer(&nvmlUnit)), cgoAllocsUnknown\n\tcFanSpeeds, _ := (*C.nvmlUnitFanSpeeds_t)(unsafe.Pointer(FanSpeeds)), cgoAllocsUnknown\n\t__ret := C.nvmlUnitGetFanSpeedInfo(cnvmlUnit, cFanSpeeds)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlUnitGetDevices function as declared in nvml/nvml.h\nfunc nvmlUnitGetDevices(nvmlUnit nvmlUnit, DeviceCount *uint32, Devices *nvmlDevice) Return {\n\tcnvmlUnit, _ := *(*C.nvmlUnit_t)(unsafe.Pointer(&nvmlUnit)), cgoAllocsUnknown\n\tcDeviceCount, _ := (*C.uint)(unsafe.Pointer(DeviceCount)), cgoAllocsUnknown\n\tcDevices, _ := (*C.nvmlDevice_t)(unsafe.Pointer(Devices)), cgoAllocsUnknown\n\t__ret := C.nvmlUnitGetDevices(cnvmlUnit, cDeviceCount, cDevices)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetCount_v2 function as declared in nvml/nvml.h\nfunc nvmlDeviceGetCount_v2(DeviceCount *uint32) Return {\n\tcDeviceCount, _ := (*C.uint)(unsafe.Pointer(DeviceCount)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetCount_v2(cDeviceCount)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetAttributes_v2 function as declared in nvml/nvml.h\nfunc nvmlDeviceGetAttributes_v2(nvmlDevice nvmlDevice, Attributes *DeviceAttributes) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcAttributes, _ := (*C.nvmlDeviceAttributes_t)(unsafe.Pointer(Attributes)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetAttributes_v2(cnvmlDevice, cAttributes)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetHandleByIndex_v2 function as declared in nvml/nvml.h\nfunc nvmlDeviceGetHandleByIndex_v2(Index uint32, nvmlDevice *nvmlDevice) Return {\n\tcIndex, _ := (C.uint)(Index), cgoAllocsUnknown\n\tcnvmlDevice, _ := (*C.nvmlDevice_t)(unsafe.Pointer(nvmlDevice)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetHandleByIndex_v2(cIndex, cnvmlDevice)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetHandleBySerial function as declared in nvml/nvml.h\nfunc nvmlDeviceGetHandleBySerial(Serial string, nvmlDevice *nvmlDevice) Return {\n\tcSerial, _ := unpackPCharString(Serial)\n\tcnvmlDevice, _ := (*C.nvmlDevice_t)(unsafe.Pointer(nvmlDevice)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetHandleBySerial(cSerial, cnvmlDevice)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetHandleByUUID function as declared in nvml/nvml.h\nfunc nvmlDeviceGetHandleByUUID(Uuid string, nvmlDevice *nvmlDevice) Return {\n\tcUuid, _ := unpackPCharString(Uuid)\n\tcnvmlDevice, _ := (*C.nvmlDevice_t)(unsafe.Pointer(nvmlDevice)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetHandleByUUID(cUuid, cnvmlDevice)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetHandleByUUIDV function as declared in nvml/nvml.h\nfunc nvmlDeviceGetHandleByUUIDV(Uuid *UUID, nvmlDevice *nvmlDevice) Return {\n\tcUuid, _ := (*C.nvmlUUID_t)(unsafe.Pointer(Uuid)), cgoAllocsUnknown\n\tcnvmlDevice, _ := (*C.nvmlDevice_t)(unsafe.Pointer(nvmlDevice)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetHandleByUUIDV(cUuid, cnvmlDevice)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetHandleByPciBusId_v2 function as declared in nvml/nvml.h\nfunc nvmlDeviceGetHandleByPciBusId_v2(PciBusId string, nvmlDevice *nvmlDevice) Return {\n\tcPciBusId, _ := unpackPCharString(PciBusId)\n\tcnvmlDevice, _ := (*C.nvmlDevice_t)(unsafe.Pointer(nvmlDevice)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetHandleByPciBusId_v2(cPciBusId, cnvmlDevice)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetName function as declared in nvml/nvml.h\nfunc nvmlDeviceGetName(nvmlDevice nvmlDevice, Name *byte, Length uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcName, _ := (*C.char)(unsafe.Pointer(Name)), cgoAllocsUnknown\n\tcLength, _ := (C.uint)(Length), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetName(cnvmlDevice, cName, cLength)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetBrand function as declared in nvml/nvml.h\nfunc nvmlDeviceGetBrand(nvmlDevice nvmlDevice, _type *BrandType) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tc_type, _ := (*C.nvmlBrandType_t)(unsafe.Pointer(_type)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetBrand(cnvmlDevice, c_type)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetIndex function as declared in nvml/nvml.h\nfunc nvmlDeviceGetIndex(nvmlDevice nvmlDevice, Index *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcIndex, _ := (*C.uint)(unsafe.Pointer(Index)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetIndex(cnvmlDevice, cIndex)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetSerial function as declared in nvml/nvml.h\nfunc nvmlDeviceGetSerial(nvmlDevice nvmlDevice, Serial *byte, Length uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcSerial, _ := (*C.char)(unsafe.Pointer(Serial)), cgoAllocsUnknown\n\tcLength, _ := (C.uint)(Length), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetSerial(cnvmlDevice, cSerial, cLength)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetModuleId function as declared in nvml/nvml.h\nfunc nvmlDeviceGetModuleId(nvmlDevice nvmlDevice, ModuleId *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcModuleId, _ := (*C.uint)(unsafe.Pointer(ModuleId)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetModuleId(cnvmlDevice, cModuleId)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetC2cModeInfoV function as declared in nvml/nvml.h\nfunc nvmlDeviceGetC2cModeInfoV(nvmlDevice nvmlDevice, C2cModeInfo *C2cModeInfo_v1) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcC2cModeInfo, _ := (*C.nvmlC2cModeInfo_v1_t)(unsafe.Pointer(C2cModeInfo)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetC2cModeInfoV(cnvmlDevice, cC2cModeInfo)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetMemoryAffinity function as declared in nvml/nvml.h\nfunc nvmlDeviceGetMemoryAffinity(nvmlDevice nvmlDevice, NodeSetSize uint32, NodeSet *uint, Scope AffinityScope) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcNodeSetSize, _ := (C.uint)(NodeSetSize), cgoAllocsUnknown\n\tcNodeSet, _ := (*C.ulong)(unsafe.Pointer(NodeSet)), cgoAllocsUnknown\n\tcScope, _ := (C.nvmlAffinityScope_t)(Scope), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetMemoryAffinity(cnvmlDevice, cNodeSetSize, cNodeSet, cScope)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetCpuAffinityWithinScope function as declared in nvml/nvml.h\nfunc nvmlDeviceGetCpuAffinityWithinScope(nvmlDevice nvmlDevice, CpuSetSize uint32, CpuSet *uint, Scope AffinityScope) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcCpuSetSize, _ := (C.uint)(CpuSetSize), cgoAllocsUnknown\n\tcCpuSet, _ := (*C.ulong)(unsafe.Pointer(CpuSet)), cgoAllocsUnknown\n\tcScope, _ := (C.nvmlAffinityScope_t)(Scope), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetCpuAffinityWithinScope(cnvmlDevice, cCpuSetSize, cCpuSet, cScope)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetCpuAffinity function as declared in nvml/nvml.h\nfunc nvmlDeviceGetCpuAffinity(nvmlDevice nvmlDevice, CpuSetSize uint32, CpuSet *uint) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcCpuSetSize, _ := (C.uint)(CpuSetSize), cgoAllocsUnknown\n\tcCpuSet, _ := (*C.ulong)(unsafe.Pointer(CpuSet)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetCpuAffinity(cnvmlDevice, cCpuSetSize, cCpuSet)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceSetCpuAffinity function as declared in nvml/nvml.h\nfunc nvmlDeviceSetCpuAffinity(nvmlDevice nvmlDevice) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceSetCpuAffinity(cnvmlDevice)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceClearCpuAffinity function as declared in nvml/nvml.h\nfunc nvmlDeviceClearCpuAffinity(nvmlDevice nvmlDevice) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceClearCpuAffinity(cnvmlDevice)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetNumaNodeId function as declared in nvml/nvml.h\nfunc nvmlDeviceGetNumaNodeId(nvmlDevice nvmlDevice, Node *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcNode, _ := (*C.uint)(unsafe.Pointer(Node)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetNumaNodeId(cnvmlDevice, cNode)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetAddressingMode function as declared in nvml/nvml.h\nfunc nvmlDeviceGetAddressingMode(nvmlDevice nvmlDevice, Mode *DeviceAddressingMode) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcMode, _ := (*C.nvmlDeviceAddressingMode_t)(unsafe.Pointer(Mode)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetAddressingMode(cnvmlDevice, cMode)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetRepairStatus function as declared in nvml/nvml.h\nfunc nvmlDeviceGetRepairStatus(nvmlDevice nvmlDevice, RepairStatus *RepairStatus) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcRepairStatus, _ := (*C.nvmlRepairStatus_t)(unsafe.Pointer(RepairStatus)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetRepairStatus(cnvmlDevice, cRepairStatus)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetTopologyCommonAncestor function as declared in nvml/nvml.h\nfunc nvmlDeviceGetTopologyCommonAncestor(Device1 nvmlDevice, Device2 nvmlDevice, PathInfo *GpuTopologyLevel) Return {\n\tcDevice1, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&Device1)), cgoAllocsUnknown\n\tcDevice2, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&Device2)), cgoAllocsUnknown\n\tcPathInfo, _ := (*C.nvmlGpuTopologyLevel_t)(unsafe.Pointer(PathInfo)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetTopologyCommonAncestor(cDevice1, cDevice2, cPathInfo)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetTopologyNearestGpus function as declared in nvml/nvml.h\nfunc nvmlDeviceGetTopologyNearestGpus(nvmlDevice nvmlDevice, Level GpuTopologyLevel, Count *uint32, DeviceArray *nvmlDevice) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcLevel, _ := (C.nvmlGpuTopologyLevel_t)(Level), cgoAllocsUnknown\n\tcCount, _ := (*C.uint)(unsafe.Pointer(Count)), cgoAllocsUnknown\n\tcDeviceArray, _ := (*C.nvmlDevice_t)(unsafe.Pointer(DeviceArray)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetTopologyNearestGpus(cnvmlDevice, cLevel, cCount, cDeviceArray)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetP2PStatus function as declared in nvml/nvml.h\nfunc nvmlDeviceGetP2PStatus(Device1 nvmlDevice, Device2 nvmlDevice, P2pIndex GpuP2PCapsIndex, P2pStatus *GpuP2PStatus) Return {\n\tcDevice1, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&Device1)), cgoAllocsUnknown\n\tcDevice2, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&Device2)), cgoAllocsUnknown\n\tcP2pIndex, _ := (C.nvmlGpuP2PCapsIndex_t)(P2pIndex), cgoAllocsUnknown\n\tcP2pStatus, _ := (*C.nvmlGpuP2PStatus_t)(unsafe.Pointer(P2pStatus)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetP2PStatus(cDevice1, cDevice2, cP2pIndex, cP2pStatus)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetUUID function as declared in nvml/nvml.h\nfunc nvmlDeviceGetUUID(nvmlDevice nvmlDevice, Uuid *byte, Length uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcUuid, _ := (*C.char)(unsafe.Pointer(Uuid)), cgoAllocsUnknown\n\tcLength, _ := (C.uint)(Length), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetUUID(cnvmlDevice, cUuid, cLength)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetMinorNumber function as declared in nvml/nvml.h\nfunc nvmlDeviceGetMinorNumber(nvmlDevice nvmlDevice, MinorNumber *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcMinorNumber, _ := (*C.uint)(unsafe.Pointer(MinorNumber)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetMinorNumber(cnvmlDevice, cMinorNumber)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetBoardPartNumber function as declared in nvml/nvml.h\nfunc nvmlDeviceGetBoardPartNumber(nvmlDevice nvmlDevice, PartNumber *byte, Length uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcPartNumber, _ := (*C.char)(unsafe.Pointer(PartNumber)), cgoAllocsUnknown\n\tcLength, _ := (C.uint)(Length), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetBoardPartNumber(cnvmlDevice, cPartNumber, cLength)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetInforomVersion function as declared in nvml/nvml.h\nfunc nvmlDeviceGetInforomVersion(nvmlDevice nvmlDevice, Object InforomObject, Version *byte, Length uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcObject, _ := (C.nvmlInforomObject_t)(Object), cgoAllocsUnknown\n\tcVersion, _ := (*C.char)(unsafe.Pointer(Version)), cgoAllocsUnknown\n\tcLength, _ := (C.uint)(Length), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetInforomVersion(cnvmlDevice, cObject, cVersion, cLength)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetInforomImageVersion function as declared in nvml/nvml.h\nfunc nvmlDeviceGetInforomImageVersion(nvmlDevice nvmlDevice, Version *byte, Length uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcVersion, _ := (*C.char)(unsafe.Pointer(Version)), cgoAllocsUnknown\n\tcLength, _ := (C.uint)(Length), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetInforomImageVersion(cnvmlDevice, cVersion, cLength)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetInforomConfigurationChecksum function as declared in nvml/nvml.h\nfunc nvmlDeviceGetInforomConfigurationChecksum(nvmlDevice nvmlDevice, Checksum *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcChecksum, _ := (*C.uint)(unsafe.Pointer(Checksum)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetInforomConfigurationChecksum(cnvmlDevice, cChecksum)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceValidateInforom function as declared in nvml/nvml.h\nfunc nvmlDeviceValidateInforom(nvmlDevice nvmlDevice) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceValidateInforom(cnvmlDevice)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetLastBBXFlushTime function as declared in nvml/nvml.h\nfunc nvmlDeviceGetLastBBXFlushTime(nvmlDevice nvmlDevice, Timestamp *uint64, DurationUs *uint) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcTimestamp, _ := (*C.ulonglong)(unsafe.Pointer(Timestamp)), cgoAllocsUnknown\n\tcDurationUs, _ := (*C.ulong)(unsafe.Pointer(DurationUs)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetLastBBXFlushTime(cnvmlDevice, cTimestamp, cDurationUs)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetDisplayMode function as declared in nvml/nvml.h\nfunc nvmlDeviceGetDisplayMode(nvmlDevice nvmlDevice, Display *EnableState) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcDisplay, _ := (*C.nvmlEnableState_t)(unsafe.Pointer(Display)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetDisplayMode(cnvmlDevice, cDisplay)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetDisplayActive function as declared in nvml/nvml.h\nfunc nvmlDeviceGetDisplayActive(nvmlDevice nvmlDevice, IsActive *EnableState) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcIsActive, _ := (*C.nvmlEnableState_t)(unsafe.Pointer(IsActive)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetDisplayActive(cnvmlDevice, cIsActive)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetPersistenceMode function as declared in nvml/nvml.h\nfunc nvmlDeviceGetPersistenceMode(nvmlDevice nvmlDevice, Mode *EnableState) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcMode, _ := (*C.nvmlEnableState_t)(unsafe.Pointer(Mode)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetPersistenceMode(cnvmlDevice, cMode)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetPciInfoExt function as declared in nvml/nvml.h\nfunc nvmlDeviceGetPciInfoExt(nvmlDevice nvmlDevice, Pci *PciInfoExt) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcPci, _ := (*C.nvmlPciInfoExt_t)(unsafe.Pointer(Pci)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetPciInfoExt(cnvmlDevice, cPci)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetPciInfo_v3 function as declared in nvml/nvml.h\nfunc nvmlDeviceGetPciInfo_v3(nvmlDevice nvmlDevice, Pci *PciInfo) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcPci, _ := (*C.nvmlPciInfo_t)(unsafe.Pointer(Pci)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetPciInfo_v3(cnvmlDevice, cPci)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetMaxPcieLinkGeneration function as declared in nvml/nvml.h\nfunc nvmlDeviceGetMaxPcieLinkGeneration(nvmlDevice nvmlDevice, MaxLinkGen *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcMaxLinkGen, _ := (*C.uint)(unsafe.Pointer(MaxLinkGen)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetMaxPcieLinkGeneration(cnvmlDevice, cMaxLinkGen)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetGpuMaxPcieLinkGeneration function as declared in nvml/nvml.h\nfunc nvmlDeviceGetGpuMaxPcieLinkGeneration(nvmlDevice nvmlDevice, MaxLinkGenDevice *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcMaxLinkGenDevice, _ := (*C.uint)(unsafe.Pointer(MaxLinkGenDevice)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetGpuMaxPcieLinkGeneration(cnvmlDevice, cMaxLinkGenDevice)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetMaxPcieLinkWidth function as declared in nvml/nvml.h\nfunc nvmlDeviceGetMaxPcieLinkWidth(nvmlDevice nvmlDevice, MaxLinkWidth *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcMaxLinkWidth, _ := (*C.uint)(unsafe.Pointer(MaxLinkWidth)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetMaxPcieLinkWidth(cnvmlDevice, cMaxLinkWidth)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetCurrPcieLinkGeneration function as declared in nvml/nvml.h\nfunc nvmlDeviceGetCurrPcieLinkGeneration(nvmlDevice nvmlDevice, CurrLinkGen *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcCurrLinkGen, _ := (*C.uint)(unsafe.Pointer(CurrLinkGen)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetCurrPcieLinkGeneration(cnvmlDevice, cCurrLinkGen)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetCurrPcieLinkWidth function as declared in nvml/nvml.h\nfunc nvmlDeviceGetCurrPcieLinkWidth(nvmlDevice nvmlDevice, CurrLinkWidth *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcCurrLinkWidth, _ := (*C.uint)(unsafe.Pointer(CurrLinkWidth)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetCurrPcieLinkWidth(cnvmlDevice, cCurrLinkWidth)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetPcieThroughput function as declared in nvml/nvml.h\nfunc nvmlDeviceGetPcieThroughput(nvmlDevice nvmlDevice, Counter PcieUtilCounter, Value *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcCounter, _ := (C.nvmlPcieUtilCounter_t)(Counter), cgoAllocsUnknown\n\tcValue, _ := (*C.uint)(unsafe.Pointer(Value)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetPcieThroughput(cnvmlDevice, cCounter, cValue)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetPcieReplayCounter function as declared in nvml/nvml.h\nfunc nvmlDeviceGetPcieReplayCounter(nvmlDevice nvmlDevice, Value *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcValue, _ := (*C.uint)(unsafe.Pointer(Value)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetPcieReplayCounter(cnvmlDevice, cValue)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetClockInfo function as declared in nvml/nvml.h\nfunc nvmlDeviceGetClockInfo(nvmlDevice nvmlDevice, _type ClockType, Clock *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tc_type, _ := (C.nvmlClockType_t)(_type), cgoAllocsUnknown\n\tcClock, _ := (*C.uint)(unsafe.Pointer(Clock)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetClockInfo(cnvmlDevice, c_type, cClock)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetMaxClockInfo function as declared in nvml/nvml.h\nfunc nvmlDeviceGetMaxClockInfo(nvmlDevice nvmlDevice, _type ClockType, Clock *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tc_type, _ := (C.nvmlClockType_t)(_type), cgoAllocsUnknown\n\tcClock, _ := (*C.uint)(unsafe.Pointer(Clock)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetMaxClockInfo(cnvmlDevice, c_type, cClock)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetGpcClkVfOffset function as declared in nvml/nvml.h\nfunc nvmlDeviceGetGpcClkVfOffset(nvmlDevice nvmlDevice, Offset *int32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcOffset, _ := (*C.int)(unsafe.Pointer(Offset)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetGpcClkVfOffset(cnvmlDevice, cOffset)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetApplicationsClock function as declared in nvml/nvml.h\nfunc nvmlDeviceGetApplicationsClock(nvmlDevice nvmlDevice, ClockType ClockType, ClockMHz *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcClockType, _ := (C.nvmlClockType_t)(ClockType), cgoAllocsUnknown\n\tcClockMHz, _ := (*C.uint)(unsafe.Pointer(ClockMHz)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetApplicationsClock(cnvmlDevice, cClockType, cClockMHz)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetDefaultApplicationsClock function as declared in nvml/nvml.h\nfunc nvmlDeviceGetDefaultApplicationsClock(nvmlDevice nvmlDevice, ClockType ClockType, ClockMHz *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcClockType, _ := (C.nvmlClockType_t)(ClockType), cgoAllocsUnknown\n\tcClockMHz, _ := (*C.uint)(unsafe.Pointer(ClockMHz)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetDefaultApplicationsClock(cnvmlDevice, cClockType, cClockMHz)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetClock function as declared in nvml/nvml.h\nfunc nvmlDeviceGetClock(nvmlDevice nvmlDevice, ClockType ClockType, ClockId ClockId, ClockMHz *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcClockType, _ := (C.nvmlClockType_t)(ClockType), cgoAllocsUnknown\n\tcClockId, _ := (C.nvmlClockId_t)(ClockId), cgoAllocsUnknown\n\tcClockMHz, _ := (*C.uint)(unsafe.Pointer(ClockMHz)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetClock(cnvmlDevice, cClockType, cClockId, cClockMHz)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetMaxCustomerBoostClock function as declared in nvml/nvml.h\nfunc nvmlDeviceGetMaxCustomerBoostClock(nvmlDevice nvmlDevice, ClockType ClockType, ClockMHz *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcClockType, _ := (C.nvmlClockType_t)(ClockType), cgoAllocsUnknown\n\tcClockMHz, _ := (*C.uint)(unsafe.Pointer(ClockMHz)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetMaxCustomerBoostClock(cnvmlDevice, cClockType, cClockMHz)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetSupportedMemoryClocks function as declared in nvml/nvml.h\nfunc nvmlDeviceGetSupportedMemoryClocks(nvmlDevice nvmlDevice, Count *uint32, ClocksMHz *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcCount, _ := (*C.uint)(unsafe.Pointer(Count)), cgoAllocsUnknown\n\tcClocksMHz, _ := (*C.uint)(unsafe.Pointer(ClocksMHz)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetSupportedMemoryClocks(cnvmlDevice, cCount, cClocksMHz)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetSupportedGraphicsClocks function as declared in nvml/nvml.h\nfunc nvmlDeviceGetSupportedGraphicsClocks(nvmlDevice nvmlDevice, MemoryClockMHz uint32, Count *uint32, ClocksMHz *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcMemoryClockMHz, _ := (C.uint)(MemoryClockMHz), cgoAllocsUnknown\n\tcCount, _ := (*C.uint)(unsafe.Pointer(Count)), cgoAllocsUnknown\n\tcClocksMHz, _ := (*C.uint)(unsafe.Pointer(ClocksMHz)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetSupportedGraphicsClocks(cnvmlDevice, cMemoryClockMHz, cCount, cClocksMHz)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetAutoBoostedClocksEnabled function as declared in nvml/nvml.h\nfunc nvmlDeviceGetAutoBoostedClocksEnabled(nvmlDevice nvmlDevice, IsEnabled *EnableState, DefaultIsEnabled *EnableState) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcIsEnabled, _ := (*C.nvmlEnableState_t)(unsafe.Pointer(IsEnabled)), cgoAllocsUnknown\n\tcDefaultIsEnabled, _ := (*C.nvmlEnableState_t)(unsafe.Pointer(DefaultIsEnabled)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetAutoBoostedClocksEnabled(cnvmlDevice, cIsEnabled, cDefaultIsEnabled)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetFanSpeed function as declared in nvml/nvml.h\nfunc nvmlDeviceGetFanSpeed(nvmlDevice nvmlDevice, Speed *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcSpeed, _ := (*C.uint)(unsafe.Pointer(Speed)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetFanSpeed(cnvmlDevice, cSpeed)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetFanSpeed_v2 function as declared in nvml/nvml.h\nfunc nvmlDeviceGetFanSpeed_v2(nvmlDevice nvmlDevice, Fan uint32, Speed *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcFan, _ := (C.uint)(Fan), cgoAllocsUnknown\n\tcSpeed, _ := (*C.uint)(unsafe.Pointer(Speed)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetFanSpeed_v2(cnvmlDevice, cFan, cSpeed)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetFanSpeedRPM function as declared in nvml/nvml.h\nfunc nvmlDeviceGetFanSpeedRPM(nvmlDevice nvmlDevice, FanSpeed *FanSpeedInfo) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcFanSpeed, _ := (*C.nvmlFanSpeedInfo_t)(unsafe.Pointer(FanSpeed)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetFanSpeedRPM(cnvmlDevice, cFanSpeed)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetTargetFanSpeed function as declared in nvml/nvml.h\nfunc nvmlDeviceGetTargetFanSpeed(nvmlDevice nvmlDevice, Fan uint32, TargetSpeed *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcFan, _ := (C.uint)(Fan), cgoAllocsUnknown\n\tcTargetSpeed, _ := (*C.uint)(unsafe.Pointer(TargetSpeed)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetTargetFanSpeed(cnvmlDevice, cFan, cTargetSpeed)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetMinMaxFanSpeed function as declared in nvml/nvml.h\nfunc nvmlDeviceGetMinMaxFanSpeed(nvmlDevice nvmlDevice, MinSpeed *uint32, MaxSpeed *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcMinSpeed, _ := (*C.uint)(unsafe.Pointer(MinSpeed)), cgoAllocsUnknown\n\tcMaxSpeed, _ := (*C.uint)(unsafe.Pointer(MaxSpeed)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetMinMaxFanSpeed(cnvmlDevice, cMinSpeed, cMaxSpeed)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetFanControlPolicy_v2 function as declared in nvml/nvml.h\nfunc nvmlDeviceGetFanControlPolicy_v2(nvmlDevice nvmlDevice, Fan uint32, Policy *FanControlPolicy) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcFan, _ := (C.uint)(Fan), cgoAllocsUnknown\n\tcPolicy, _ := (*C.nvmlFanControlPolicy_t)(unsafe.Pointer(Policy)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetFanControlPolicy_v2(cnvmlDevice, cFan, cPolicy)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetNumFans function as declared in nvml/nvml.h\nfunc nvmlDeviceGetNumFans(nvmlDevice nvmlDevice, NumFans *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcNumFans, _ := (*C.uint)(unsafe.Pointer(NumFans)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetNumFans(cnvmlDevice, cNumFans)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetTemperature function as declared in nvml/nvml.h\nfunc nvmlDeviceGetTemperature(nvmlDevice nvmlDevice, SensorType TemperatureSensors, Temp *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcSensorType, _ := (C.nvmlTemperatureSensors_t)(SensorType), cgoAllocsUnknown\n\tcTemp, _ := (*C.uint)(unsafe.Pointer(Temp)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetTemperature(cnvmlDevice, cSensorType, cTemp)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetCoolerInfo function as declared in nvml/nvml.h\nfunc nvmlDeviceGetCoolerInfo(nvmlDevice nvmlDevice, CoolerInfo *CoolerInfo) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcCoolerInfo, _ := (*C.nvmlCoolerInfo_t)(unsafe.Pointer(CoolerInfo)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetCoolerInfo(cnvmlDevice, cCoolerInfo)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetTemperatureV function as declared in nvml/nvml.h\nfunc nvmlDeviceGetTemperatureV(nvmlDevice nvmlDevice, Temperature *Temperature) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcTemperature, _ := (*C.nvmlTemperature_t)(unsafe.Pointer(Temperature)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetTemperatureV(cnvmlDevice, cTemperature)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetTemperatureThreshold function as declared in nvml/nvml.h\nfunc nvmlDeviceGetTemperatureThreshold(nvmlDevice nvmlDevice, ThresholdType TemperatureThresholds, Temp *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcThresholdType, _ := (C.nvmlTemperatureThresholds_t)(ThresholdType), cgoAllocsUnknown\n\tcTemp, _ := (*C.uint)(unsafe.Pointer(Temp)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetTemperatureThreshold(cnvmlDevice, cThresholdType, cTemp)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetMarginTemperature function as declared in nvml/nvml.h\nfunc nvmlDeviceGetMarginTemperature(nvmlDevice nvmlDevice, MarginTempInfo *MarginTemperature) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcMarginTempInfo, _ := (*C.nvmlMarginTemperature_t)(unsafe.Pointer(MarginTempInfo)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetMarginTemperature(cnvmlDevice, cMarginTempInfo)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetThermalSettings function as declared in nvml/nvml.h\nfunc nvmlDeviceGetThermalSettings(nvmlDevice nvmlDevice, SensorIndex uint32, PThermalSettings *GpuThermalSettings) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcSensorIndex, _ := (C.uint)(SensorIndex), cgoAllocsUnknown\n\tcPThermalSettings, _ := (*C.nvmlGpuThermalSettings_t)(unsafe.Pointer(PThermalSettings)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetThermalSettings(cnvmlDevice, cSensorIndex, cPThermalSettings)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetPerformanceState function as declared in nvml/nvml.h\nfunc nvmlDeviceGetPerformanceState(nvmlDevice nvmlDevice, PState *Pstates) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcPState, _ := (*C.nvmlPstates_t)(unsafe.Pointer(PState)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetPerformanceState(cnvmlDevice, cPState)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetCurrentClocksEventReasons function as declared in nvml/nvml.h\nfunc nvmlDeviceGetCurrentClocksEventReasons(nvmlDevice nvmlDevice, ClocksEventReasons *uint64) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcClocksEventReasons, _ := (*C.ulonglong)(unsafe.Pointer(ClocksEventReasons)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetCurrentClocksEventReasons(cnvmlDevice, cClocksEventReasons)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetCurrentClocksThrottleReasons function as declared in nvml/nvml.h\nfunc nvmlDeviceGetCurrentClocksThrottleReasons(nvmlDevice nvmlDevice, ClocksThrottleReasons *uint64) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcClocksThrottleReasons, _ := (*C.ulonglong)(unsafe.Pointer(ClocksThrottleReasons)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetCurrentClocksThrottleReasons(cnvmlDevice, cClocksThrottleReasons)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetSupportedClocksEventReasons function as declared in nvml/nvml.h\nfunc nvmlDeviceGetSupportedClocksEventReasons(nvmlDevice nvmlDevice, SupportedClocksEventReasons *uint64) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcSupportedClocksEventReasons, _ := (*C.ulonglong)(unsafe.Pointer(SupportedClocksEventReasons)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetSupportedClocksEventReasons(cnvmlDevice, cSupportedClocksEventReasons)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetSupportedClocksThrottleReasons function as declared in nvml/nvml.h\nfunc nvmlDeviceGetSupportedClocksThrottleReasons(nvmlDevice nvmlDevice, SupportedClocksThrottleReasons *uint64) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcSupportedClocksThrottleReasons, _ := (*C.ulonglong)(unsafe.Pointer(SupportedClocksThrottleReasons)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetSupportedClocksThrottleReasons(cnvmlDevice, cSupportedClocksThrottleReasons)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetPowerState function as declared in nvml/nvml.h\nfunc nvmlDeviceGetPowerState(nvmlDevice nvmlDevice, PState *Pstates) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcPState, _ := (*C.nvmlPstates_t)(unsafe.Pointer(PState)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetPowerState(cnvmlDevice, cPState)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetDynamicPstatesInfo function as declared in nvml/nvml.h\nfunc nvmlDeviceGetDynamicPstatesInfo(nvmlDevice nvmlDevice, PDynamicPstatesInfo *GpuDynamicPstatesInfo) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcPDynamicPstatesInfo, _ := (*C.nvmlGpuDynamicPstatesInfo_t)(unsafe.Pointer(PDynamicPstatesInfo)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetDynamicPstatesInfo(cnvmlDevice, cPDynamicPstatesInfo)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetMemClkVfOffset function as declared in nvml/nvml.h\nfunc nvmlDeviceGetMemClkVfOffset(nvmlDevice nvmlDevice, Offset *int32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcOffset, _ := (*C.int)(unsafe.Pointer(Offset)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetMemClkVfOffset(cnvmlDevice, cOffset)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetMinMaxClockOfPState function as declared in nvml/nvml.h\nfunc nvmlDeviceGetMinMaxClockOfPState(nvmlDevice nvmlDevice, _type ClockType, Pstate Pstates, MinClockMHz *uint32, MaxClockMHz *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tc_type, _ := (C.nvmlClockType_t)(_type), cgoAllocsUnknown\n\tcPstate, _ := (C.nvmlPstates_t)(Pstate), cgoAllocsUnknown\n\tcMinClockMHz, _ := (*C.uint)(unsafe.Pointer(MinClockMHz)), cgoAllocsUnknown\n\tcMaxClockMHz, _ := (*C.uint)(unsafe.Pointer(MaxClockMHz)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetMinMaxClockOfPState(cnvmlDevice, c_type, cPstate, cMinClockMHz, cMaxClockMHz)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetSupportedPerformanceStates function as declared in nvml/nvml.h\nfunc nvmlDeviceGetSupportedPerformanceStates(nvmlDevice nvmlDevice, Pstates *Pstates, Size uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcPstates, _ := (*C.nvmlPstates_t)(unsafe.Pointer(Pstates)), cgoAllocsUnknown\n\tcSize, _ := (C.uint)(Size), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetSupportedPerformanceStates(cnvmlDevice, cPstates, cSize)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetGpcClkMinMaxVfOffset function as declared in nvml/nvml.h\nfunc nvmlDeviceGetGpcClkMinMaxVfOffset(nvmlDevice nvmlDevice, MinOffset *int32, MaxOffset *int32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcMinOffset, _ := (*C.int)(unsafe.Pointer(MinOffset)), cgoAllocsUnknown\n\tcMaxOffset, _ := (*C.int)(unsafe.Pointer(MaxOffset)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetGpcClkMinMaxVfOffset(cnvmlDevice, cMinOffset, cMaxOffset)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetMemClkMinMaxVfOffset function as declared in nvml/nvml.h\nfunc nvmlDeviceGetMemClkMinMaxVfOffset(nvmlDevice nvmlDevice, MinOffset *int32, MaxOffset *int32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcMinOffset, _ := (*C.int)(unsafe.Pointer(MinOffset)), cgoAllocsUnknown\n\tcMaxOffset, _ := (*C.int)(unsafe.Pointer(MaxOffset)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetMemClkMinMaxVfOffset(cnvmlDevice, cMinOffset, cMaxOffset)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetClockOffsets function as declared in nvml/nvml.h\nfunc nvmlDeviceGetClockOffsets(nvmlDevice nvmlDevice, Info *ClockOffset) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcInfo, _ := (*C.nvmlClockOffset_t)(unsafe.Pointer(Info)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetClockOffsets(cnvmlDevice, cInfo)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceSetClockOffsets function as declared in nvml/nvml.h\nfunc nvmlDeviceSetClockOffsets(nvmlDevice nvmlDevice, Info *ClockOffset) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcInfo, _ := (*C.nvmlClockOffset_t)(unsafe.Pointer(Info)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceSetClockOffsets(cnvmlDevice, cInfo)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetPerformanceModes function as declared in nvml/nvml.h\nfunc nvmlDeviceGetPerformanceModes(nvmlDevice nvmlDevice, PerfModes *DevicePerfModes) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcPerfModes, _ := (*C.nvmlDevicePerfModes_t)(unsafe.Pointer(PerfModes)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetPerformanceModes(cnvmlDevice, cPerfModes)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetCurrentClockFreqs function as declared in nvml/nvml.h\nfunc nvmlDeviceGetCurrentClockFreqs(nvmlDevice nvmlDevice, CurrentClockFreqs *DeviceCurrentClockFreqs) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcCurrentClockFreqs, _ := (*C.nvmlDeviceCurrentClockFreqs_t)(unsafe.Pointer(CurrentClockFreqs)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetCurrentClockFreqs(cnvmlDevice, cCurrentClockFreqs)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetPowerManagementMode function as declared in nvml/nvml.h\nfunc nvmlDeviceGetPowerManagementMode(nvmlDevice nvmlDevice, Mode *EnableState) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcMode, _ := (*C.nvmlEnableState_t)(unsafe.Pointer(Mode)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetPowerManagementMode(cnvmlDevice, cMode)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetPowerManagementLimit function as declared in nvml/nvml.h\nfunc nvmlDeviceGetPowerManagementLimit(nvmlDevice nvmlDevice, Limit *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcLimit, _ := (*C.uint)(unsafe.Pointer(Limit)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetPowerManagementLimit(cnvmlDevice, cLimit)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetPowerManagementLimitConstraints function as declared in nvml/nvml.h\nfunc nvmlDeviceGetPowerManagementLimitConstraints(nvmlDevice nvmlDevice, MinLimit *uint32, MaxLimit *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcMinLimit, _ := (*C.uint)(unsafe.Pointer(MinLimit)), cgoAllocsUnknown\n\tcMaxLimit, _ := (*C.uint)(unsafe.Pointer(MaxLimit)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetPowerManagementLimitConstraints(cnvmlDevice, cMinLimit, cMaxLimit)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetPowerManagementDefaultLimit function as declared in nvml/nvml.h\nfunc nvmlDeviceGetPowerManagementDefaultLimit(nvmlDevice nvmlDevice, DefaultLimit *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcDefaultLimit, _ := (*C.uint)(unsafe.Pointer(DefaultLimit)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetPowerManagementDefaultLimit(cnvmlDevice, cDefaultLimit)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetPowerUsage function as declared in nvml/nvml.h\nfunc nvmlDeviceGetPowerUsage(nvmlDevice nvmlDevice, Power *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcPower, _ := (*C.uint)(unsafe.Pointer(Power)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetPowerUsage(cnvmlDevice, cPower)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetPowerMizerMode_v1 function as declared in nvml/nvml.h\nfunc nvmlDeviceGetPowerMizerMode_v1(nvmlDevice nvmlDevice, PowerMizerMode *DevicePowerMizerModes_v1) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcPowerMizerMode, _ := (*C.nvmlDevicePowerMizerModes_v1_t)(unsafe.Pointer(PowerMizerMode)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetPowerMizerMode_v1(cnvmlDevice, cPowerMizerMode)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceSetPowerMizerMode_v1 function as declared in nvml/nvml.h\nfunc nvmlDeviceSetPowerMizerMode_v1(nvmlDevice nvmlDevice, PowerMizerMode *DevicePowerMizerModes_v1) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcPowerMizerMode, _ := (*C.nvmlDevicePowerMizerModes_v1_t)(unsafe.Pointer(PowerMizerMode)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceSetPowerMizerMode_v1(cnvmlDevice, cPowerMizerMode)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetTotalEnergyConsumption function as declared in nvml/nvml.h\nfunc nvmlDeviceGetTotalEnergyConsumption(nvmlDevice nvmlDevice, Energy *uint64) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcEnergy, _ := (*C.ulonglong)(unsafe.Pointer(Energy)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetTotalEnergyConsumption(cnvmlDevice, cEnergy)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetEnforcedPowerLimit function as declared in nvml/nvml.h\nfunc nvmlDeviceGetEnforcedPowerLimit(nvmlDevice nvmlDevice, Limit *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcLimit, _ := (*C.uint)(unsafe.Pointer(Limit)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetEnforcedPowerLimit(cnvmlDevice, cLimit)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetGpuOperationMode function as declared in nvml/nvml.h\nfunc nvmlDeviceGetGpuOperationMode(nvmlDevice nvmlDevice, Current *GpuOperationMode, Pending *GpuOperationMode) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcCurrent, _ := (*C.nvmlGpuOperationMode_t)(unsafe.Pointer(Current)), cgoAllocsUnknown\n\tcPending, _ := (*C.nvmlGpuOperationMode_t)(unsafe.Pointer(Pending)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetGpuOperationMode(cnvmlDevice, cCurrent, cPending)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetMemoryInfo function as declared in nvml/nvml.h\nfunc nvmlDeviceGetMemoryInfo(nvmlDevice nvmlDevice, Memory *Memory) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcMemory, _ := (*C.nvmlMemory_t)(unsafe.Pointer(Memory)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetMemoryInfo(cnvmlDevice, cMemory)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetMemoryInfo_v2 function as declared in nvml/nvml.h\nfunc nvmlDeviceGetMemoryInfo_v2(nvmlDevice nvmlDevice, Memory *Memory_v2) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcMemory, _ := (*C.nvmlMemory_v2_t)(unsafe.Pointer(Memory)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetMemoryInfo_v2(cnvmlDevice, cMemory)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetComputeMode function as declared in nvml/nvml.h\nfunc nvmlDeviceGetComputeMode(nvmlDevice nvmlDevice, Mode *ComputeMode) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcMode, _ := (*C.nvmlComputeMode_t)(unsafe.Pointer(Mode)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetComputeMode(cnvmlDevice, cMode)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetCudaComputeCapability function as declared in nvml/nvml.h\nfunc nvmlDeviceGetCudaComputeCapability(nvmlDevice nvmlDevice, Major *int32, Minor *int32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcMajor, _ := (*C.int)(unsafe.Pointer(Major)), cgoAllocsUnknown\n\tcMinor, _ := (*C.int)(unsafe.Pointer(Minor)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetCudaComputeCapability(cnvmlDevice, cMajor, cMinor)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetDramEncryptionMode function as declared in nvml/nvml.h\nfunc nvmlDeviceGetDramEncryptionMode(nvmlDevice nvmlDevice, Current *DramEncryptionInfo, Pending *DramEncryptionInfo) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcCurrent, _ := (*C.nvmlDramEncryptionInfo_t)(unsafe.Pointer(Current)), cgoAllocsUnknown\n\tcPending, _ := (*C.nvmlDramEncryptionInfo_t)(unsafe.Pointer(Pending)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetDramEncryptionMode(cnvmlDevice, cCurrent, cPending)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceSetDramEncryptionMode function as declared in nvml/nvml.h\nfunc nvmlDeviceSetDramEncryptionMode(nvmlDevice nvmlDevice, DramEncryption *DramEncryptionInfo) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcDramEncryption, _ := (*C.nvmlDramEncryptionInfo_t)(unsafe.Pointer(DramEncryption)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceSetDramEncryptionMode(cnvmlDevice, cDramEncryption)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetEccMode function as declared in nvml/nvml.h\nfunc nvmlDeviceGetEccMode(nvmlDevice nvmlDevice, Current *EnableState, Pending *EnableState) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcCurrent, _ := (*C.nvmlEnableState_t)(unsafe.Pointer(Current)), cgoAllocsUnknown\n\tcPending, _ := (*C.nvmlEnableState_t)(unsafe.Pointer(Pending)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetEccMode(cnvmlDevice, cCurrent, cPending)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetDefaultEccMode function as declared in nvml/nvml.h\nfunc nvmlDeviceGetDefaultEccMode(nvmlDevice nvmlDevice, DefaultMode *EnableState) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcDefaultMode, _ := (*C.nvmlEnableState_t)(unsafe.Pointer(DefaultMode)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetDefaultEccMode(cnvmlDevice, cDefaultMode)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetBoardId function as declared in nvml/nvml.h\nfunc nvmlDeviceGetBoardId(nvmlDevice nvmlDevice, BoardId *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcBoardId, _ := (*C.uint)(unsafe.Pointer(BoardId)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetBoardId(cnvmlDevice, cBoardId)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetMultiGpuBoard function as declared in nvml/nvml.h\nfunc nvmlDeviceGetMultiGpuBoard(nvmlDevice nvmlDevice, MultiGpuBool *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcMultiGpuBool, _ := (*C.uint)(unsafe.Pointer(MultiGpuBool)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetMultiGpuBoard(cnvmlDevice, cMultiGpuBool)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetTotalEccErrors function as declared in nvml/nvml.h\nfunc nvmlDeviceGetTotalEccErrors(nvmlDevice nvmlDevice, ErrorType MemoryErrorType, CounterType EccCounterType, EccCounts *uint64) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcErrorType, _ := (C.nvmlMemoryErrorType_t)(ErrorType), cgoAllocsUnknown\n\tcCounterType, _ := (C.nvmlEccCounterType_t)(CounterType), cgoAllocsUnknown\n\tcEccCounts, _ := (*C.ulonglong)(unsafe.Pointer(EccCounts)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetTotalEccErrors(cnvmlDevice, cErrorType, cCounterType, cEccCounts)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetDetailedEccErrors function as declared in nvml/nvml.h\nfunc nvmlDeviceGetDetailedEccErrors(nvmlDevice nvmlDevice, ErrorType MemoryErrorType, CounterType EccCounterType, EccCounts *EccErrorCounts) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcErrorType, _ := (C.nvmlMemoryErrorType_t)(ErrorType), cgoAllocsUnknown\n\tcCounterType, _ := (C.nvmlEccCounterType_t)(CounterType), cgoAllocsUnknown\n\tcEccCounts, _ := (*C.nvmlEccErrorCounts_t)(unsafe.Pointer(EccCounts)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetDetailedEccErrors(cnvmlDevice, cErrorType, cCounterType, cEccCounts)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetMemoryErrorCounter function as declared in nvml/nvml.h\nfunc nvmlDeviceGetMemoryErrorCounter(nvmlDevice nvmlDevice, ErrorType MemoryErrorType, CounterType EccCounterType, LocationType MemoryLocation, Count *uint64) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcErrorType, _ := (C.nvmlMemoryErrorType_t)(ErrorType), cgoAllocsUnknown\n\tcCounterType, _ := (C.nvmlEccCounterType_t)(CounterType), cgoAllocsUnknown\n\tcLocationType, _ := (C.nvmlMemoryLocation_t)(LocationType), cgoAllocsUnknown\n\tcCount, _ := (*C.ulonglong)(unsafe.Pointer(Count)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetMemoryErrorCounter(cnvmlDevice, cErrorType, cCounterType, cLocationType, cCount)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetUtilizationRates function as declared in nvml/nvml.h\nfunc nvmlDeviceGetUtilizationRates(nvmlDevice nvmlDevice, Utilization *Utilization) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcUtilization, _ := (*C.nvmlUtilization_t)(unsafe.Pointer(Utilization)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetUtilizationRates(cnvmlDevice, cUtilization)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetEncoderUtilization function as declared in nvml/nvml.h\nfunc nvmlDeviceGetEncoderUtilization(nvmlDevice nvmlDevice, Utilization *uint32, SamplingPeriodUs *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcUtilization, _ := (*C.uint)(unsafe.Pointer(Utilization)), cgoAllocsUnknown\n\tcSamplingPeriodUs, _ := (*C.uint)(unsafe.Pointer(SamplingPeriodUs)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetEncoderUtilization(cnvmlDevice, cUtilization, cSamplingPeriodUs)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetEncoderCapacity function as declared in nvml/nvml.h\nfunc nvmlDeviceGetEncoderCapacity(nvmlDevice nvmlDevice, EncoderQueryType EncoderType, EncoderCapacity *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcEncoderQueryType, _ := (C.nvmlEncoderType_t)(EncoderQueryType), cgoAllocsUnknown\n\tcEncoderCapacity, _ := (*C.uint)(unsafe.Pointer(EncoderCapacity)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetEncoderCapacity(cnvmlDevice, cEncoderQueryType, cEncoderCapacity)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetEncoderStats function as declared in nvml/nvml.h\nfunc nvmlDeviceGetEncoderStats(nvmlDevice nvmlDevice, SessionCount *uint32, AverageFps *uint32, AverageLatency *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcSessionCount, _ := (*C.uint)(unsafe.Pointer(SessionCount)), cgoAllocsUnknown\n\tcAverageFps, _ := (*C.uint)(unsafe.Pointer(AverageFps)), cgoAllocsUnknown\n\tcAverageLatency, _ := (*C.uint)(unsafe.Pointer(AverageLatency)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetEncoderStats(cnvmlDevice, cSessionCount, cAverageFps, cAverageLatency)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetEncoderSessions function as declared in nvml/nvml.h\nfunc nvmlDeviceGetEncoderSessions(nvmlDevice nvmlDevice, SessionCount *uint32, SessionInfos *EncoderSessionInfo) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcSessionCount, _ := (*C.uint)(unsafe.Pointer(SessionCount)), cgoAllocsUnknown\n\tcSessionInfos, _ := (*C.nvmlEncoderSessionInfo_t)(unsafe.Pointer(SessionInfos)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetEncoderSessions(cnvmlDevice, cSessionCount, cSessionInfos)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetDecoderUtilization function as declared in nvml/nvml.h\nfunc nvmlDeviceGetDecoderUtilization(nvmlDevice nvmlDevice, Utilization *uint32, SamplingPeriodUs *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcUtilization, _ := (*C.uint)(unsafe.Pointer(Utilization)), cgoAllocsUnknown\n\tcSamplingPeriodUs, _ := (*C.uint)(unsafe.Pointer(SamplingPeriodUs)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetDecoderUtilization(cnvmlDevice, cUtilization, cSamplingPeriodUs)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetJpgUtilization function as declared in nvml/nvml.h\nfunc nvmlDeviceGetJpgUtilization(nvmlDevice nvmlDevice, Utilization *uint32, SamplingPeriodUs *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcUtilization, _ := (*C.uint)(unsafe.Pointer(Utilization)), cgoAllocsUnknown\n\tcSamplingPeriodUs, _ := (*C.uint)(unsafe.Pointer(SamplingPeriodUs)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetJpgUtilization(cnvmlDevice, cUtilization, cSamplingPeriodUs)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetOfaUtilization function as declared in nvml/nvml.h\nfunc nvmlDeviceGetOfaUtilization(nvmlDevice nvmlDevice, Utilization *uint32, SamplingPeriodUs *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcUtilization, _ := (*C.uint)(unsafe.Pointer(Utilization)), cgoAllocsUnknown\n\tcSamplingPeriodUs, _ := (*C.uint)(unsafe.Pointer(SamplingPeriodUs)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetOfaUtilization(cnvmlDevice, cUtilization, cSamplingPeriodUs)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetFBCStats function as declared in nvml/nvml.h\nfunc nvmlDeviceGetFBCStats(nvmlDevice nvmlDevice, FbcStats *FBCStats) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcFbcStats, _ := (*C.nvmlFBCStats_t)(unsafe.Pointer(FbcStats)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetFBCStats(cnvmlDevice, cFbcStats)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetFBCSessions function as declared in nvml/nvml.h\nfunc nvmlDeviceGetFBCSessions(nvmlDevice nvmlDevice, SessionCount *uint32, SessionInfo *FBCSessionInfo) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcSessionCount, _ := (*C.uint)(unsafe.Pointer(SessionCount)), cgoAllocsUnknown\n\tcSessionInfo, _ := (*C.nvmlFBCSessionInfo_t)(unsafe.Pointer(SessionInfo)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetFBCSessions(cnvmlDevice, cSessionCount, cSessionInfo)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetDriverModel_v2 function as declared in nvml/nvml.h\nfunc nvmlDeviceGetDriverModel_v2(nvmlDevice nvmlDevice, Current *DriverModel, Pending *DriverModel) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcCurrent, _ := (*C.nvmlDriverModel_t)(unsafe.Pointer(Current)), cgoAllocsUnknown\n\tcPending, _ := (*C.nvmlDriverModel_t)(unsafe.Pointer(Pending)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetDriverModel_v2(cnvmlDevice, cCurrent, cPending)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetVbiosVersion function as declared in nvml/nvml.h\nfunc nvmlDeviceGetVbiosVersion(nvmlDevice nvmlDevice, Version *byte, Length uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcVersion, _ := (*C.char)(unsafe.Pointer(Version)), cgoAllocsUnknown\n\tcLength, _ := (C.uint)(Length), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetVbiosVersion(cnvmlDevice, cVersion, cLength)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetBridgeChipInfo function as declared in nvml/nvml.h\nfunc nvmlDeviceGetBridgeChipInfo(nvmlDevice nvmlDevice, BridgeHierarchy *BridgeChipHierarchy) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcBridgeHierarchy, _ := (*C.nvmlBridgeChipHierarchy_t)(unsafe.Pointer(BridgeHierarchy)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetBridgeChipInfo(cnvmlDevice, cBridgeHierarchy)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetComputeRunningProcesses_v3 function as declared in nvml/nvml.h\nfunc nvmlDeviceGetComputeRunningProcesses_v3(nvmlDevice nvmlDevice, InfoCount *uint32, Infos *ProcessInfo) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcInfoCount, _ := (*C.uint)(unsafe.Pointer(InfoCount)), cgoAllocsUnknown\n\tcInfos, _ := (*C.nvmlProcessInfo_t)(unsafe.Pointer(Infos)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetComputeRunningProcesses_v3(cnvmlDevice, cInfoCount, cInfos)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetGraphicsRunningProcesses_v3 function as declared in nvml/nvml.h\nfunc nvmlDeviceGetGraphicsRunningProcesses_v3(nvmlDevice nvmlDevice, InfoCount *uint32, Infos *ProcessInfo) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcInfoCount, _ := (*C.uint)(unsafe.Pointer(InfoCount)), cgoAllocsUnknown\n\tcInfos, _ := (*C.nvmlProcessInfo_t)(unsafe.Pointer(Infos)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetGraphicsRunningProcesses_v3(cnvmlDevice, cInfoCount, cInfos)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetMPSComputeRunningProcesses_v3 function as declared in nvml/nvml.h\nfunc nvmlDeviceGetMPSComputeRunningProcesses_v3(nvmlDevice nvmlDevice, InfoCount *uint32, Infos *ProcessInfo) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcInfoCount, _ := (*C.uint)(unsafe.Pointer(InfoCount)), cgoAllocsUnknown\n\tcInfos, _ := (*C.nvmlProcessInfo_t)(unsafe.Pointer(Infos)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetMPSComputeRunningProcesses_v3(cnvmlDevice, cInfoCount, cInfos)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetRunningProcessDetailList function as declared in nvml/nvml.h\nfunc nvmlDeviceGetRunningProcessDetailList(nvmlDevice nvmlDevice, Plist *ProcessDetailList) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcPlist, _ := (*C.nvmlProcessDetailList_t)(unsafe.Pointer(Plist)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetRunningProcessDetailList(cnvmlDevice, cPlist)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceOnSameBoard function as declared in nvml/nvml.h\nfunc nvmlDeviceOnSameBoard(Device1 nvmlDevice, Device2 nvmlDevice, OnSameBoard *int32) Return {\n\tcDevice1, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&Device1)), cgoAllocsUnknown\n\tcDevice2, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&Device2)), cgoAllocsUnknown\n\tcOnSameBoard, _ := (*C.int)(unsafe.Pointer(OnSameBoard)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceOnSameBoard(cDevice1, cDevice2, cOnSameBoard)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetAPIRestriction function as declared in nvml/nvml.h\nfunc nvmlDeviceGetAPIRestriction(nvmlDevice nvmlDevice, ApiType RestrictedAPI, IsRestricted *EnableState) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcApiType, _ := (C.nvmlRestrictedAPI_t)(ApiType), cgoAllocsUnknown\n\tcIsRestricted, _ := (*C.nvmlEnableState_t)(unsafe.Pointer(IsRestricted)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetAPIRestriction(cnvmlDevice, cApiType, cIsRestricted)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetSamples function as declared in nvml/nvml.h\nfunc nvmlDeviceGetSamples(nvmlDevice nvmlDevice, _type SamplingType, LastSeenTimeStamp uint64, SampleValType *ValueType, SampleCount *uint32, Samples *Sample) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tc_type, _ := (C.nvmlSamplingType_t)(_type), cgoAllocsUnknown\n\tcLastSeenTimeStamp, _ := (C.ulonglong)(LastSeenTimeStamp), cgoAllocsUnknown\n\tcSampleValType, _ := (*C.nvmlValueType_t)(unsafe.Pointer(SampleValType)), cgoAllocsUnknown\n\tcSampleCount, _ := (*C.uint)(unsafe.Pointer(SampleCount)), cgoAllocsUnknown\n\tcSamples, _ := (*C.nvmlSample_t)(unsafe.Pointer(Samples)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetSamples(cnvmlDevice, c_type, cLastSeenTimeStamp, cSampleValType, cSampleCount, cSamples)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetBAR1MemoryInfo function as declared in nvml/nvml.h\nfunc nvmlDeviceGetBAR1MemoryInfo(nvmlDevice nvmlDevice, Bar1Memory *BAR1Memory) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcBar1Memory, _ := (*C.nvmlBAR1Memory_t)(unsafe.Pointer(Bar1Memory)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetBAR1MemoryInfo(cnvmlDevice, cBar1Memory)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetViolationStatus function as declared in nvml/nvml.h\nfunc nvmlDeviceGetViolationStatus(nvmlDevice nvmlDevice, PerfPolicyType PerfPolicyType, ViolTime *ViolationTime) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcPerfPolicyType, _ := (C.nvmlPerfPolicyType_t)(PerfPolicyType), cgoAllocsUnknown\n\tcViolTime, _ := (*C.nvmlViolationTime_t)(unsafe.Pointer(ViolTime)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetViolationStatus(cnvmlDevice, cPerfPolicyType, cViolTime)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetIrqNum function as declared in nvml/nvml.h\nfunc nvmlDeviceGetIrqNum(nvmlDevice nvmlDevice, IrqNum *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcIrqNum, _ := (*C.uint)(unsafe.Pointer(IrqNum)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetIrqNum(cnvmlDevice, cIrqNum)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetNumGpuCores function as declared in nvml/nvml.h\nfunc nvmlDeviceGetNumGpuCores(nvmlDevice nvmlDevice, NumCores *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcNumCores, _ := (*C.uint)(unsafe.Pointer(NumCores)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetNumGpuCores(cnvmlDevice, cNumCores)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetPowerSource function as declared in nvml/nvml.h\nfunc nvmlDeviceGetPowerSource(nvmlDevice nvmlDevice, PowerSource *PowerSource) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcPowerSource, _ := (*C.nvmlPowerSource_t)(unsafe.Pointer(PowerSource)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetPowerSource(cnvmlDevice, cPowerSource)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetMemoryBusWidth function as declared in nvml/nvml.h\nfunc nvmlDeviceGetMemoryBusWidth(nvmlDevice nvmlDevice, BusWidth *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcBusWidth, _ := (*C.uint)(unsafe.Pointer(BusWidth)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetMemoryBusWidth(cnvmlDevice, cBusWidth)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetPcieLinkMaxSpeed function as declared in nvml/nvml.h\nfunc nvmlDeviceGetPcieLinkMaxSpeed(nvmlDevice nvmlDevice, MaxSpeed *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcMaxSpeed, _ := (*C.uint)(unsafe.Pointer(MaxSpeed)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetPcieLinkMaxSpeed(cnvmlDevice, cMaxSpeed)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetPcieSpeed function as declared in nvml/nvml.h\nfunc nvmlDeviceGetPcieSpeed(nvmlDevice nvmlDevice, PcieSpeed *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcPcieSpeed, _ := (*C.uint)(unsafe.Pointer(PcieSpeed)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetPcieSpeed(cnvmlDevice, cPcieSpeed)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetAdaptiveClockInfoStatus function as declared in nvml/nvml.h\nfunc nvmlDeviceGetAdaptiveClockInfoStatus(nvmlDevice nvmlDevice, AdaptiveClockStatus *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcAdaptiveClockStatus, _ := (*C.uint)(unsafe.Pointer(AdaptiveClockStatus)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetAdaptiveClockInfoStatus(cnvmlDevice, cAdaptiveClockStatus)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetBusType function as declared in nvml/nvml.h\nfunc nvmlDeviceGetBusType(nvmlDevice nvmlDevice, _type *BusType) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tc_type, _ := (*C.nvmlBusType_t)(unsafe.Pointer(_type)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetBusType(cnvmlDevice, c_type)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetGpuFabricInfo function as declared in nvml/nvml.h\nfunc nvmlDeviceGetGpuFabricInfo(nvmlDevice nvmlDevice, GpuFabricInfo *GpuFabricInfo) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcGpuFabricInfo, _ := (*C.nvmlGpuFabricInfo_t)(unsafe.Pointer(GpuFabricInfo)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetGpuFabricInfo(cnvmlDevice, cGpuFabricInfo)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetGpuFabricInfoV function as declared in nvml/nvml.h\nfunc nvmlDeviceGetGpuFabricInfoV(nvmlDevice nvmlDevice, GpuFabricInfo *GpuFabricInfoV) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcGpuFabricInfo, _ := (*C.nvmlGpuFabricInfoV_t)(unsafe.Pointer(GpuFabricInfo)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetGpuFabricInfoV(cnvmlDevice, cGpuFabricInfo)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlSystemGetConfComputeCapabilities function as declared in nvml/nvml.h\nfunc nvmlSystemGetConfComputeCapabilities(Capabilities *ConfComputeSystemCaps) Return {\n\tcCapabilities, _ := (*C.nvmlConfComputeSystemCaps_t)(unsafe.Pointer(Capabilities)), cgoAllocsUnknown\n\t__ret := C.nvmlSystemGetConfComputeCapabilities(cCapabilities)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlSystemGetConfComputeState function as declared in nvml/nvml.h\nfunc nvmlSystemGetConfComputeState(State *ConfComputeSystemState) Return {\n\tcState, _ := (*C.nvmlConfComputeSystemState_t)(unsafe.Pointer(State)), cgoAllocsUnknown\n\t__ret := C.nvmlSystemGetConfComputeState(cState)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetConfComputeMemSizeInfo function as declared in nvml/nvml.h\nfunc nvmlDeviceGetConfComputeMemSizeInfo(nvmlDevice nvmlDevice, MemInfo *ConfComputeMemSizeInfo) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcMemInfo, _ := (*C.nvmlConfComputeMemSizeInfo_t)(unsafe.Pointer(MemInfo)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetConfComputeMemSizeInfo(cnvmlDevice, cMemInfo)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlSystemGetConfComputeGpusReadyState function as declared in nvml/nvml.h\nfunc nvmlSystemGetConfComputeGpusReadyState(IsAcceptingWork *uint32) Return {\n\tcIsAcceptingWork, _ := (*C.uint)(unsafe.Pointer(IsAcceptingWork)), cgoAllocsUnknown\n\t__ret := C.nvmlSystemGetConfComputeGpusReadyState(cIsAcceptingWork)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetConfComputeProtectedMemoryUsage function as declared in nvml/nvml.h\nfunc nvmlDeviceGetConfComputeProtectedMemoryUsage(nvmlDevice nvmlDevice, Memory *Memory) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcMemory, _ := (*C.nvmlMemory_t)(unsafe.Pointer(Memory)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetConfComputeProtectedMemoryUsage(cnvmlDevice, cMemory)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetConfComputeGpuCertificate function as declared in nvml/nvml.h\nfunc nvmlDeviceGetConfComputeGpuCertificate(nvmlDevice nvmlDevice, GpuCert *ConfComputeGpuCertificate) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcGpuCert, _ := (*C.nvmlConfComputeGpuCertificate_t)(unsafe.Pointer(GpuCert)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetConfComputeGpuCertificate(cnvmlDevice, cGpuCert)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetConfComputeGpuAttestationReport function as declared in nvml/nvml.h\nfunc nvmlDeviceGetConfComputeGpuAttestationReport(nvmlDevice nvmlDevice, GpuAtstReport *ConfComputeGpuAttestationReport) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcGpuAtstReport, _ := (*C.nvmlConfComputeGpuAttestationReport_t)(unsafe.Pointer(GpuAtstReport)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetConfComputeGpuAttestationReport(cnvmlDevice, cGpuAtstReport)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlSystemGetConfComputeKeyRotationThresholdInfo function as declared in nvml/nvml.h\nfunc nvmlSystemGetConfComputeKeyRotationThresholdInfo(PKeyRotationThrInfo *ConfComputeGetKeyRotationThresholdInfo) Return {\n\tcPKeyRotationThrInfo, _ := (*C.nvmlConfComputeGetKeyRotationThresholdInfo_t)(unsafe.Pointer(PKeyRotationThrInfo)), cgoAllocsUnknown\n\t__ret := C.nvmlSystemGetConfComputeKeyRotationThresholdInfo(cPKeyRotationThrInfo)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceSetConfComputeUnprotectedMemSize function as declared in nvml/nvml.h\nfunc nvmlDeviceSetConfComputeUnprotectedMemSize(nvmlDevice nvmlDevice, SizeKiB uint64) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcSizeKiB, _ := (C.ulonglong)(SizeKiB), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceSetConfComputeUnprotectedMemSize(cnvmlDevice, cSizeKiB)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlSystemSetConfComputeGpusReadyState function as declared in nvml/nvml.h\nfunc nvmlSystemSetConfComputeGpusReadyState(IsAcceptingWork uint32) Return {\n\tcIsAcceptingWork, _ := (C.uint)(IsAcceptingWork), cgoAllocsUnknown\n\t__ret := C.nvmlSystemSetConfComputeGpusReadyState(cIsAcceptingWork)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlSystemSetConfComputeKeyRotationThresholdInfo function as declared in nvml/nvml.h\nfunc nvmlSystemSetConfComputeKeyRotationThresholdInfo(PKeyRotationThrInfo *ConfComputeSetKeyRotationThresholdInfo) Return {\n\tcPKeyRotationThrInfo, _ := (*C.nvmlConfComputeSetKeyRotationThresholdInfo_t)(unsafe.Pointer(PKeyRotationThrInfo)), cgoAllocsUnknown\n\t__ret := C.nvmlSystemSetConfComputeKeyRotationThresholdInfo(cPKeyRotationThrInfo)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlSystemGetConfComputeSettings function as declared in nvml/nvml.h\nfunc nvmlSystemGetConfComputeSettings(Settings *SystemConfComputeSettings) Return {\n\tcSettings, _ := (*C.nvmlSystemConfComputeSettings_t)(unsafe.Pointer(Settings)), cgoAllocsUnknown\n\t__ret := C.nvmlSystemGetConfComputeSettings(cSettings)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetGspFirmwareVersion function as declared in nvml/nvml.h\nfunc nvmlDeviceGetGspFirmwareVersion(nvmlDevice nvmlDevice, Version *byte) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcVersion, _ := (*C.char)(unsafe.Pointer(Version)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetGspFirmwareVersion(cnvmlDevice, cVersion)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetGspFirmwareMode function as declared in nvml/nvml.h\nfunc nvmlDeviceGetGspFirmwareMode(nvmlDevice nvmlDevice, IsEnabled *uint32, DefaultMode *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcIsEnabled, _ := (*C.uint)(unsafe.Pointer(IsEnabled)), cgoAllocsUnknown\n\tcDefaultMode, _ := (*C.uint)(unsafe.Pointer(DefaultMode)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetGspFirmwareMode(cnvmlDevice, cIsEnabled, cDefaultMode)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetSramEccErrorStatus function as declared in nvml/nvml.h\nfunc nvmlDeviceGetSramEccErrorStatus(nvmlDevice nvmlDevice, Status *EccSramErrorStatus) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcStatus, _ := (*C.nvmlEccSramErrorStatus_t)(unsafe.Pointer(Status)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetSramEccErrorStatus(cnvmlDevice, cStatus)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceSetPowerManagementLimit_v2 function as declared in nvml/nvml.h\nfunc nvmlDeviceSetPowerManagementLimit_v2(nvmlDevice nvmlDevice, PowerValue *PowerValue_v2) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcPowerValue, _ := (*C.nvmlPowerValue_v2_t)(unsafe.Pointer(PowerValue)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceSetPowerManagementLimit_v2(cnvmlDevice, cPowerValue)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetAccountingMode function as declared in nvml/nvml.h\nfunc nvmlDeviceGetAccountingMode(nvmlDevice nvmlDevice, Mode *EnableState) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcMode, _ := (*C.nvmlEnableState_t)(unsafe.Pointer(Mode)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetAccountingMode(cnvmlDevice, cMode)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetAccountingStats function as declared in nvml/nvml.h\nfunc nvmlDeviceGetAccountingStats(nvmlDevice nvmlDevice, Pid uint32, Stats *AccountingStats) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcPid, _ := (C.uint)(Pid), cgoAllocsUnknown\n\tcStats, _ := (*C.nvmlAccountingStats_t)(unsafe.Pointer(Stats)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetAccountingStats(cnvmlDevice, cPid, cStats)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetAccountingPids function as declared in nvml/nvml.h\nfunc nvmlDeviceGetAccountingPids(nvmlDevice nvmlDevice, Count *uint32, Pids *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcCount, _ := (*C.uint)(unsafe.Pointer(Count)), cgoAllocsUnknown\n\tcPids, _ := (*C.uint)(unsafe.Pointer(Pids)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetAccountingPids(cnvmlDevice, cCount, cPids)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetAccountingBufferSize function as declared in nvml/nvml.h\nfunc nvmlDeviceGetAccountingBufferSize(nvmlDevice nvmlDevice, BufferSize *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcBufferSize, _ := (*C.uint)(unsafe.Pointer(BufferSize)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetAccountingBufferSize(cnvmlDevice, cBufferSize)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetRetiredPages function as declared in nvml/nvml.h\nfunc nvmlDeviceGetRetiredPages(nvmlDevice nvmlDevice, Cause PageRetirementCause, PageCount *uint32, Addresses *uint64) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcCause, _ := (C.nvmlPageRetirementCause_t)(Cause), cgoAllocsUnknown\n\tcPageCount, _ := (*C.uint)(unsafe.Pointer(PageCount)), cgoAllocsUnknown\n\tcAddresses, _ := (*C.ulonglong)(unsafe.Pointer(Addresses)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetRetiredPages(cnvmlDevice, cCause, cPageCount, cAddresses)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetRetiredPages_v2 function as declared in nvml/nvml.h\nfunc nvmlDeviceGetRetiredPages_v2(nvmlDevice nvmlDevice, Cause PageRetirementCause, PageCount *uint32, Addresses *uint64, Timestamps *uint64) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcCause, _ := (C.nvmlPageRetirementCause_t)(Cause), cgoAllocsUnknown\n\tcPageCount, _ := (*C.uint)(unsafe.Pointer(PageCount)), cgoAllocsUnknown\n\tcAddresses, _ := (*C.ulonglong)(unsafe.Pointer(Addresses)), cgoAllocsUnknown\n\tcTimestamps, _ := (*C.ulonglong)(unsafe.Pointer(Timestamps)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetRetiredPages_v2(cnvmlDevice, cCause, cPageCount, cAddresses, cTimestamps)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetRetiredPagesPendingStatus function as declared in nvml/nvml.h\nfunc nvmlDeviceGetRetiredPagesPendingStatus(nvmlDevice nvmlDevice, IsPending *EnableState) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcIsPending, _ := (*C.nvmlEnableState_t)(unsafe.Pointer(IsPending)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetRetiredPagesPendingStatus(cnvmlDevice, cIsPending)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetRemappedRows function as declared in nvml/nvml.h\nfunc nvmlDeviceGetRemappedRows(nvmlDevice nvmlDevice, CorrRows *uint32, UncRows *uint32, IsPending *uint32, FailureOccurred *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcCorrRows, _ := (*C.uint)(unsafe.Pointer(CorrRows)), cgoAllocsUnknown\n\tcUncRows, _ := (*C.uint)(unsafe.Pointer(UncRows)), cgoAllocsUnknown\n\tcIsPending, _ := (*C.uint)(unsafe.Pointer(IsPending)), cgoAllocsUnknown\n\tcFailureOccurred, _ := (*C.uint)(unsafe.Pointer(FailureOccurred)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetRemappedRows(cnvmlDevice, cCorrRows, cUncRows, cIsPending, cFailureOccurred)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetRowRemapperHistogram function as declared in nvml/nvml.h\nfunc nvmlDeviceGetRowRemapperHistogram(nvmlDevice nvmlDevice, Values *RowRemapperHistogramValues) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcValues, _ := (*C.nvmlRowRemapperHistogramValues_t)(unsafe.Pointer(Values)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetRowRemapperHistogram(cnvmlDevice, cValues)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetArchitecture function as declared in nvml/nvml.h\nfunc nvmlDeviceGetArchitecture(nvmlDevice nvmlDevice, Arch *DeviceArchitecture) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcArch, _ := (*C.nvmlDeviceArchitecture_t)(unsafe.Pointer(Arch)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetArchitecture(cnvmlDevice, cArch)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetClkMonStatus function as declared in nvml/nvml.h\nfunc nvmlDeviceGetClkMonStatus(nvmlDevice nvmlDevice, Status *ClkMonStatus) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcStatus, _ := (*C.nvmlClkMonStatus_t)(unsafe.Pointer(Status)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetClkMonStatus(cnvmlDevice, cStatus)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetProcessUtilization function as declared in nvml/nvml.h\nfunc nvmlDeviceGetProcessUtilization(nvmlDevice nvmlDevice, Utilization *ProcessUtilizationSample, ProcessSamplesCount *uint32, LastSeenTimeStamp uint64) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcUtilization, _ := (*C.nvmlProcessUtilizationSample_t)(unsafe.Pointer(Utilization)), cgoAllocsUnknown\n\tcProcessSamplesCount, _ := (*C.uint)(unsafe.Pointer(ProcessSamplesCount)), cgoAllocsUnknown\n\tcLastSeenTimeStamp, _ := (C.ulonglong)(LastSeenTimeStamp), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetProcessUtilization(cnvmlDevice, cUtilization, cProcessSamplesCount, cLastSeenTimeStamp)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetProcessesUtilizationInfo function as declared in nvml/nvml.h\nfunc nvmlDeviceGetProcessesUtilizationInfo(nvmlDevice nvmlDevice, ProcesesUtilInfo *ProcessesUtilizationInfo) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcProcesesUtilInfo, _ := (*C.nvmlProcessesUtilizationInfo_t)(unsafe.Pointer(ProcesesUtilInfo)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetProcessesUtilizationInfo(cnvmlDevice, cProcesesUtilInfo)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetPlatformInfo function as declared in nvml/nvml.h\nfunc nvmlDeviceGetPlatformInfo(nvmlDevice nvmlDevice, PlatformInfo *PlatformInfo) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcPlatformInfo, _ := (*C.nvmlPlatformInfo_t)(unsafe.Pointer(PlatformInfo)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetPlatformInfo(cnvmlDevice, cPlatformInfo)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetPdi function as declared in nvml/nvml.h\nfunc nvmlDeviceGetPdi(nvmlDevice nvmlDevice, Pdi *Pdi) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcPdi, _ := (*C.nvmlPdi_t)(unsafe.Pointer(Pdi)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetPdi(cnvmlDevice, cPdi)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlUnitSetLedState function as declared in nvml/nvml.h\nfunc nvmlUnitSetLedState(nvmlUnit nvmlUnit, Color LedColor) Return {\n\tcnvmlUnit, _ := *(*C.nvmlUnit_t)(unsafe.Pointer(&nvmlUnit)), cgoAllocsUnknown\n\tcColor, _ := (C.nvmlLedColor_t)(Color), cgoAllocsUnknown\n\t__ret := C.nvmlUnitSetLedState(cnvmlUnit, cColor)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceSetPersistenceMode function as declared in nvml/nvml.h\nfunc nvmlDeviceSetPersistenceMode(nvmlDevice nvmlDevice, Mode EnableState) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcMode, _ := (C.nvmlEnableState_t)(Mode), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceSetPersistenceMode(cnvmlDevice, cMode)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceSetComputeMode function as declared in nvml/nvml.h\nfunc nvmlDeviceSetComputeMode(nvmlDevice nvmlDevice, Mode ComputeMode) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcMode, _ := (C.nvmlComputeMode_t)(Mode), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceSetComputeMode(cnvmlDevice, cMode)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceSetEccMode function as declared in nvml/nvml.h\nfunc nvmlDeviceSetEccMode(nvmlDevice nvmlDevice, Ecc EnableState) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcEcc, _ := (C.nvmlEnableState_t)(Ecc), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceSetEccMode(cnvmlDevice, cEcc)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceClearEccErrorCounts function as declared in nvml/nvml.h\nfunc nvmlDeviceClearEccErrorCounts(nvmlDevice nvmlDevice, CounterType EccCounterType) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcCounterType, _ := (C.nvmlEccCounterType_t)(CounterType), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceClearEccErrorCounts(cnvmlDevice, cCounterType)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceSetDriverModel function as declared in nvml/nvml.h\nfunc nvmlDeviceSetDriverModel(nvmlDevice nvmlDevice, DriverModel DriverModel, Flags uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcDriverModel, _ := (C.nvmlDriverModel_t)(DriverModel), cgoAllocsUnknown\n\tcFlags, _ := (C.uint)(Flags), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceSetDriverModel(cnvmlDevice, cDriverModel, cFlags)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceSetGpuLockedClocks function as declared in nvml/nvml.h\nfunc nvmlDeviceSetGpuLockedClocks(nvmlDevice nvmlDevice, MinGpuClockMHz uint32, MaxGpuClockMHz uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcMinGpuClockMHz, _ := (C.uint)(MinGpuClockMHz), cgoAllocsUnknown\n\tcMaxGpuClockMHz, _ := (C.uint)(MaxGpuClockMHz), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceSetGpuLockedClocks(cnvmlDevice, cMinGpuClockMHz, cMaxGpuClockMHz)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceResetGpuLockedClocks function as declared in nvml/nvml.h\nfunc nvmlDeviceResetGpuLockedClocks(nvmlDevice nvmlDevice) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceResetGpuLockedClocks(cnvmlDevice)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceSetMemoryLockedClocks function as declared in nvml/nvml.h\nfunc nvmlDeviceSetMemoryLockedClocks(nvmlDevice nvmlDevice, MinMemClockMHz uint32, MaxMemClockMHz uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcMinMemClockMHz, _ := (C.uint)(MinMemClockMHz), cgoAllocsUnknown\n\tcMaxMemClockMHz, _ := (C.uint)(MaxMemClockMHz), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceSetMemoryLockedClocks(cnvmlDevice, cMinMemClockMHz, cMaxMemClockMHz)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceResetMemoryLockedClocks function as declared in nvml/nvml.h\nfunc nvmlDeviceResetMemoryLockedClocks(nvmlDevice nvmlDevice) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceResetMemoryLockedClocks(cnvmlDevice)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceSetApplicationsClocks function as declared in nvml/nvml.h\nfunc nvmlDeviceSetApplicationsClocks(nvmlDevice nvmlDevice, MemClockMHz uint32, GraphicsClockMHz uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcMemClockMHz, _ := (C.uint)(MemClockMHz), cgoAllocsUnknown\n\tcGraphicsClockMHz, _ := (C.uint)(GraphicsClockMHz), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceSetApplicationsClocks(cnvmlDevice, cMemClockMHz, cGraphicsClockMHz)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceResetApplicationsClocks function as declared in nvml/nvml.h\nfunc nvmlDeviceResetApplicationsClocks(nvmlDevice nvmlDevice) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceResetApplicationsClocks(cnvmlDevice)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceSetAutoBoostedClocksEnabled function as declared in nvml/nvml.h\nfunc nvmlDeviceSetAutoBoostedClocksEnabled(nvmlDevice nvmlDevice, Enabled EnableState) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcEnabled, _ := (C.nvmlEnableState_t)(Enabled), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceSetAutoBoostedClocksEnabled(cnvmlDevice, cEnabled)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceSetDefaultAutoBoostedClocksEnabled function as declared in nvml/nvml.h\nfunc nvmlDeviceSetDefaultAutoBoostedClocksEnabled(nvmlDevice nvmlDevice, Enabled EnableState, Flags uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcEnabled, _ := (C.nvmlEnableState_t)(Enabled), cgoAllocsUnknown\n\tcFlags, _ := (C.uint)(Flags), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceSetDefaultAutoBoostedClocksEnabled(cnvmlDevice, cEnabled, cFlags)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceSetDefaultFanSpeed_v2 function as declared in nvml/nvml.h\nfunc nvmlDeviceSetDefaultFanSpeed_v2(nvmlDevice nvmlDevice, Fan uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcFan, _ := (C.uint)(Fan), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceSetDefaultFanSpeed_v2(cnvmlDevice, cFan)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceSetFanControlPolicy function as declared in nvml/nvml.h\nfunc nvmlDeviceSetFanControlPolicy(nvmlDevice nvmlDevice, Fan uint32, Policy FanControlPolicy) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcFan, _ := (C.uint)(Fan), cgoAllocsUnknown\n\tcPolicy, _ := (C.nvmlFanControlPolicy_t)(Policy), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceSetFanControlPolicy(cnvmlDevice, cFan, cPolicy)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceSetTemperatureThreshold function as declared in nvml/nvml.h\nfunc nvmlDeviceSetTemperatureThreshold(nvmlDevice nvmlDevice, ThresholdType TemperatureThresholds, Temp *int32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcThresholdType, _ := (C.nvmlTemperatureThresholds_t)(ThresholdType), cgoAllocsUnknown\n\tcTemp, _ := (*C.int)(unsafe.Pointer(Temp)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceSetTemperatureThreshold(cnvmlDevice, cThresholdType, cTemp)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceSetPowerManagementLimit function as declared in nvml/nvml.h\nfunc nvmlDeviceSetPowerManagementLimit(nvmlDevice nvmlDevice, Limit uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcLimit, _ := (C.uint)(Limit), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceSetPowerManagementLimit(cnvmlDevice, cLimit)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceSetGpuOperationMode function as declared in nvml/nvml.h\nfunc nvmlDeviceSetGpuOperationMode(nvmlDevice nvmlDevice, Mode GpuOperationMode) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcMode, _ := (C.nvmlGpuOperationMode_t)(Mode), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceSetGpuOperationMode(cnvmlDevice, cMode)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceSetAPIRestriction function as declared in nvml/nvml.h\nfunc nvmlDeviceSetAPIRestriction(nvmlDevice nvmlDevice, ApiType RestrictedAPI, IsRestricted EnableState) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcApiType, _ := (C.nvmlRestrictedAPI_t)(ApiType), cgoAllocsUnknown\n\tcIsRestricted, _ := (C.nvmlEnableState_t)(IsRestricted), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceSetAPIRestriction(cnvmlDevice, cApiType, cIsRestricted)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceSetFanSpeed_v2 function as declared in nvml/nvml.h\nfunc nvmlDeviceSetFanSpeed_v2(nvmlDevice nvmlDevice, Fan uint32, Speed uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcFan, _ := (C.uint)(Fan), cgoAllocsUnknown\n\tcSpeed, _ := (C.uint)(Speed), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceSetFanSpeed_v2(cnvmlDevice, cFan, cSpeed)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceSetGpcClkVfOffset function as declared in nvml/nvml.h\nfunc nvmlDeviceSetGpcClkVfOffset(nvmlDevice nvmlDevice, Offset int32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcOffset, _ := (C.int)(Offset), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceSetGpcClkVfOffset(cnvmlDevice, cOffset)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceSetMemClkVfOffset function as declared in nvml/nvml.h\nfunc nvmlDeviceSetMemClkVfOffset(nvmlDevice nvmlDevice, Offset int32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcOffset, _ := (C.int)(Offset), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceSetMemClkVfOffset(cnvmlDevice, cOffset)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceSetAccountingMode function as declared in nvml/nvml.h\nfunc nvmlDeviceSetAccountingMode(nvmlDevice nvmlDevice, Mode EnableState) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcMode, _ := (C.nvmlEnableState_t)(Mode), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceSetAccountingMode(cnvmlDevice, cMode)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceClearAccountingPids function as declared in nvml/nvml.h\nfunc nvmlDeviceClearAccountingPids(nvmlDevice nvmlDevice) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceClearAccountingPids(cnvmlDevice)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetNvLinkState function as declared in nvml/nvml.h\nfunc nvmlDeviceGetNvLinkState(nvmlDevice nvmlDevice, Link uint32, IsActive *EnableState) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcLink, _ := (C.uint)(Link), cgoAllocsUnknown\n\tcIsActive, _ := (*C.nvmlEnableState_t)(unsafe.Pointer(IsActive)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetNvLinkState(cnvmlDevice, cLink, cIsActive)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetNvLinkVersion function as declared in nvml/nvml.h\nfunc nvmlDeviceGetNvLinkVersion(nvmlDevice nvmlDevice, Link uint32, Version *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcLink, _ := (C.uint)(Link), cgoAllocsUnknown\n\tcVersion, _ := (*C.uint)(unsafe.Pointer(Version)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetNvLinkVersion(cnvmlDevice, cLink, cVersion)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetNvLinkCapability function as declared in nvml/nvml.h\nfunc nvmlDeviceGetNvLinkCapability(nvmlDevice nvmlDevice, Link uint32, Capability NvLinkCapability, CapResult *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcLink, _ := (C.uint)(Link), cgoAllocsUnknown\n\tcCapability, _ := (C.nvmlNvLinkCapability_t)(Capability), cgoAllocsUnknown\n\tcCapResult, _ := (*C.uint)(unsafe.Pointer(CapResult)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetNvLinkCapability(cnvmlDevice, cLink, cCapability, cCapResult)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetNvLinkRemotePciInfo_v2 function as declared in nvml/nvml.h\nfunc nvmlDeviceGetNvLinkRemotePciInfo_v2(nvmlDevice nvmlDevice, Link uint32, Pci *PciInfo) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcLink, _ := (C.uint)(Link), cgoAllocsUnknown\n\tcPci, _ := (*C.nvmlPciInfo_t)(unsafe.Pointer(Pci)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetNvLinkRemotePciInfo_v2(cnvmlDevice, cLink, cPci)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetNvLinkErrorCounter function as declared in nvml/nvml.h\nfunc nvmlDeviceGetNvLinkErrorCounter(nvmlDevice nvmlDevice, Link uint32, Counter NvLinkErrorCounter, CounterValue *uint64) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcLink, _ := (C.uint)(Link), cgoAllocsUnknown\n\tcCounter, _ := (C.nvmlNvLinkErrorCounter_t)(Counter), cgoAllocsUnknown\n\tcCounterValue, _ := (*C.ulonglong)(unsafe.Pointer(CounterValue)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetNvLinkErrorCounter(cnvmlDevice, cLink, cCounter, cCounterValue)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceResetNvLinkErrorCounters function as declared in nvml/nvml.h\nfunc nvmlDeviceResetNvLinkErrorCounters(nvmlDevice nvmlDevice, Link uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcLink, _ := (C.uint)(Link), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceResetNvLinkErrorCounters(cnvmlDevice, cLink)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceSetNvLinkUtilizationControl function as declared in nvml/nvml.h\nfunc nvmlDeviceSetNvLinkUtilizationControl(nvmlDevice nvmlDevice, Link uint32, Counter uint32, Control *NvLinkUtilizationControl, Reset uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcLink, _ := (C.uint)(Link), cgoAllocsUnknown\n\tcCounter, _ := (C.uint)(Counter), cgoAllocsUnknown\n\tcControl, _ := (*C.nvmlNvLinkUtilizationControl_t)(unsafe.Pointer(Control)), cgoAllocsUnknown\n\tcReset, _ := (C.uint)(Reset), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceSetNvLinkUtilizationControl(cnvmlDevice, cLink, cCounter, cControl, cReset)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetNvLinkUtilizationControl function as declared in nvml/nvml.h\nfunc nvmlDeviceGetNvLinkUtilizationControl(nvmlDevice nvmlDevice, Link uint32, Counter uint32, Control *NvLinkUtilizationControl) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcLink, _ := (C.uint)(Link), cgoAllocsUnknown\n\tcCounter, _ := (C.uint)(Counter), cgoAllocsUnknown\n\tcControl, _ := (*C.nvmlNvLinkUtilizationControl_t)(unsafe.Pointer(Control)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetNvLinkUtilizationControl(cnvmlDevice, cLink, cCounter, cControl)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetNvLinkUtilizationCounter function as declared in nvml/nvml.h\nfunc nvmlDeviceGetNvLinkUtilizationCounter(nvmlDevice nvmlDevice, Link uint32, Counter uint32, Rxcounter *uint64, Txcounter *uint64) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcLink, _ := (C.uint)(Link), cgoAllocsUnknown\n\tcCounter, _ := (C.uint)(Counter), cgoAllocsUnknown\n\tcRxcounter, _ := (*C.ulonglong)(unsafe.Pointer(Rxcounter)), cgoAllocsUnknown\n\tcTxcounter, _ := (*C.ulonglong)(unsafe.Pointer(Txcounter)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetNvLinkUtilizationCounter(cnvmlDevice, cLink, cCounter, cRxcounter, cTxcounter)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceFreezeNvLinkUtilizationCounter function as declared in nvml/nvml.h\nfunc nvmlDeviceFreezeNvLinkUtilizationCounter(nvmlDevice nvmlDevice, Link uint32, Counter uint32, Freeze EnableState) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcLink, _ := (C.uint)(Link), cgoAllocsUnknown\n\tcCounter, _ := (C.uint)(Counter), cgoAllocsUnknown\n\tcFreeze, _ := (C.nvmlEnableState_t)(Freeze), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceFreezeNvLinkUtilizationCounter(cnvmlDevice, cLink, cCounter, cFreeze)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceResetNvLinkUtilizationCounter function as declared in nvml/nvml.h\nfunc nvmlDeviceResetNvLinkUtilizationCounter(nvmlDevice nvmlDevice, Link uint32, Counter uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcLink, _ := (C.uint)(Link), cgoAllocsUnknown\n\tcCounter, _ := (C.uint)(Counter), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceResetNvLinkUtilizationCounter(cnvmlDevice, cLink, cCounter)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetNvLinkRemoteDeviceType function as declared in nvml/nvml.h\nfunc nvmlDeviceGetNvLinkRemoteDeviceType(nvmlDevice nvmlDevice, Link uint32, PNvLinkDeviceType *IntNvLinkDeviceType) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcLink, _ := (C.uint)(Link), cgoAllocsUnknown\n\tcPNvLinkDeviceType, _ := (*C.nvmlIntNvLinkDeviceType_t)(unsafe.Pointer(PNvLinkDeviceType)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetNvLinkRemoteDeviceType(cnvmlDevice, cLink, cPNvLinkDeviceType)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceSetNvLinkDeviceLowPowerThreshold function as declared in nvml/nvml.h\nfunc nvmlDeviceSetNvLinkDeviceLowPowerThreshold(nvmlDevice nvmlDevice, Info *NvLinkPowerThres) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcInfo, _ := (*C.nvmlNvLinkPowerThres_t)(unsafe.Pointer(Info)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceSetNvLinkDeviceLowPowerThreshold(cnvmlDevice, cInfo)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlSystemSetNvlinkBwMode function as declared in nvml/nvml.h\nfunc nvmlSystemSetNvlinkBwMode(NvlinkBwMode uint32) Return {\n\tcNvlinkBwMode, _ := (C.uint)(NvlinkBwMode), cgoAllocsUnknown\n\t__ret := C.nvmlSystemSetNvlinkBwMode(cNvlinkBwMode)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlSystemGetNvlinkBwMode function as declared in nvml/nvml.h\nfunc nvmlSystemGetNvlinkBwMode(NvlinkBwMode *uint32) Return {\n\tcNvlinkBwMode, _ := (*C.uint)(unsafe.Pointer(NvlinkBwMode)), cgoAllocsUnknown\n\t__ret := C.nvmlSystemGetNvlinkBwMode(cNvlinkBwMode)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetNvlinkSupportedBwModes function as declared in nvml/nvml.h\nfunc nvmlDeviceGetNvlinkSupportedBwModes(nvmlDevice nvmlDevice, SupportedBwMode *NvlinkSupportedBwModes) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcSupportedBwMode, _ := (*C.nvmlNvlinkSupportedBwModes_t)(unsafe.Pointer(SupportedBwMode)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetNvlinkSupportedBwModes(cnvmlDevice, cSupportedBwMode)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetNvlinkBwMode function as declared in nvml/nvml.h\nfunc nvmlDeviceGetNvlinkBwMode(nvmlDevice nvmlDevice, GetBwMode *NvlinkGetBwMode) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcGetBwMode, _ := (*C.nvmlNvlinkGetBwMode_t)(unsafe.Pointer(GetBwMode)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetNvlinkBwMode(cnvmlDevice, cGetBwMode)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceSetNvlinkBwMode function as declared in nvml/nvml.h\nfunc nvmlDeviceSetNvlinkBwMode(nvmlDevice nvmlDevice, SetBwMode *NvlinkSetBwMode) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcSetBwMode, _ := (*C.nvmlNvlinkSetBwMode_t)(unsafe.Pointer(SetBwMode)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceSetNvlinkBwMode(cnvmlDevice, cSetBwMode)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetNvLinkInfo function as declared in nvml/nvml.h\nfunc nvmlDeviceGetNvLinkInfo(nvmlDevice nvmlDevice, Info *NvLinkInfo) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcInfo, _ := (*C.nvmlNvLinkInfo_t)(unsafe.Pointer(Info)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetNvLinkInfo(cnvmlDevice, cInfo)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlEventSetCreate function as declared in nvml/nvml.h\nfunc nvmlEventSetCreate(Set *nvmlEventSet) Return {\n\tcSet, _ := (*C.nvmlEventSet_t)(unsafe.Pointer(Set)), cgoAllocsUnknown\n\t__ret := C.nvmlEventSetCreate(cSet)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceRegisterEvents function as declared in nvml/nvml.h\nfunc nvmlDeviceRegisterEvents(nvmlDevice nvmlDevice, EventTypes uint64, Set nvmlEventSet) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcEventTypes, _ := (C.ulonglong)(EventTypes), cgoAllocsUnknown\n\tcSet, _ := *(*C.nvmlEventSet_t)(unsafe.Pointer(&Set)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceRegisterEvents(cnvmlDevice, cEventTypes, cSet)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetSupportedEventTypes function as declared in nvml/nvml.h\nfunc nvmlDeviceGetSupportedEventTypes(nvmlDevice nvmlDevice, EventTypes *uint64) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcEventTypes, _ := (*C.ulonglong)(unsafe.Pointer(EventTypes)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetSupportedEventTypes(cnvmlDevice, cEventTypes)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlEventSetWait_v2 function as declared in nvml/nvml.h\nfunc nvmlEventSetWait_v2(Set nvmlEventSet, Data *nvmlEventData, Timeoutms uint32) Return {\n\tcSet, _ := *(*C.nvmlEventSet_t)(unsafe.Pointer(&Set)), cgoAllocsUnknown\n\tcData, _ := (*C.nvmlEventData_t)(unsafe.Pointer(Data)), cgoAllocsUnknown\n\tcTimeoutms, _ := (C.uint)(Timeoutms), cgoAllocsUnknown\n\t__ret := C.nvmlEventSetWait_v2(cSet, cData, cTimeoutms)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlEventSetFree function as declared in nvml/nvml.h\nfunc nvmlEventSetFree(Set nvmlEventSet) Return {\n\tcSet, _ := *(*C.nvmlEventSet_t)(unsafe.Pointer(&Set)), cgoAllocsUnknown\n\t__ret := C.nvmlEventSetFree(cSet)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlSystemEventSetCreate function as declared in nvml/nvml.h\nfunc nvmlSystemEventSetCreate(Request *SystemEventSetCreateRequest) Return {\n\tcRequest, _ := (*C.nvmlSystemEventSetCreateRequest_t)(unsafe.Pointer(Request)), cgoAllocsUnknown\n\t__ret := C.nvmlSystemEventSetCreate(cRequest)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlSystemEventSetFree function as declared in nvml/nvml.h\nfunc nvmlSystemEventSetFree(Request *SystemEventSetFreeRequest) Return {\n\tcRequest, _ := (*C.nvmlSystemEventSetFreeRequest_t)(unsafe.Pointer(Request)), cgoAllocsUnknown\n\t__ret := C.nvmlSystemEventSetFree(cRequest)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlSystemRegisterEvents function as declared in nvml/nvml.h\nfunc nvmlSystemRegisterEvents(Request *SystemRegisterEventRequest) Return {\n\tcRequest, _ := (*C.nvmlSystemRegisterEventRequest_t)(unsafe.Pointer(Request)), cgoAllocsUnknown\n\t__ret := C.nvmlSystemRegisterEvents(cRequest)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlSystemEventSetWait function as declared in nvml/nvml.h\nfunc nvmlSystemEventSetWait(Request *SystemEventSetWaitRequest) Return {\n\tcRequest, _ := (*C.nvmlSystemEventSetWaitRequest_t)(unsafe.Pointer(Request)), cgoAllocsUnknown\n\t__ret := C.nvmlSystemEventSetWait(cRequest)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceModifyDrainState function as declared in nvml/nvml.h\nfunc nvmlDeviceModifyDrainState(PciInfo *PciInfo, NewState EnableState) Return {\n\tcPciInfo, _ := (*C.nvmlPciInfo_t)(unsafe.Pointer(PciInfo)), cgoAllocsUnknown\n\tcNewState, _ := (C.nvmlEnableState_t)(NewState), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceModifyDrainState(cPciInfo, cNewState)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceQueryDrainState function as declared in nvml/nvml.h\nfunc nvmlDeviceQueryDrainState(PciInfo *PciInfo, CurrentState *EnableState) Return {\n\tcPciInfo, _ := (*C.nvmlPciInfo_t)(unsafe.Pointer(PciInfo)), cgoAllocsUnknown\n\tcCurrentState, _ := (*C.nvmlEnableState_t)(unsafe.Pointer(CurrentState)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceQueryDrainState(cPciInfo, cCurrentState)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceRemoveGpu_v2 function as declared in nvml/nvml.h\nfunc nvmlDeviceRemoveGpu_v2(PciInfo *PciInfo, GpuState DetachGpuState, LinkState PcieLinkState) Return {\n\tcPciInfo, _ := (*C.nvmlPciInfo_t)(unsafe.Pointer(PciInfo)), cgoAllocsUnknown\n\tcGpuState, _ := (C.nvmlDetachGpuState_t)(GpuState), cgoAllocsUnknown\n\tcLinkState, _ := (C.nvmlPcieLinkState_t)(LinkState), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceRemoveGpu_v2(cPciInfo, cGpuState, cLinkState)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceDiscoverGpus function as declared in nvml/nvml.h\nfunc nvmlDeviceDiscoverGpus(PciInfo *PciInfo) Return {\n\tcPciInfo, _ := (*C.nvmlPciInfo_t)(unsafe.Pointer(PciInfo)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceDiscoverGpus(cPciInfo)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetFieldValues function as declared in nvml/nvml.h\nfunc nvmlDeviceGetFieldValues(nvmlDevice nvmlDevice, ValuesCount int32, Values *FieldValue) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcValuesCount, _ := (C.int)(ValuesCount), cgoAllocsUnknown\n\tcValues, _ := (*C.nvmlFieldValue_t)(unsafe.Pointer(Values)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetFieldValues(cnvmlDevice, cValuesCount, cValues)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceClearFieldValues function as declared in nvml/nvml.h\nfunc nvmlDeviceClearFieldValues(nvmlDevice nvmlDevice, ValuesCount int32, Values *FieldValue) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcValuesCount, _ := (C.int)(ValuesCount), cgoAllocsUnknown\n\tcValues, _ := (*C.nvmlFieldValue_t)(unsafe.Pointer(Values)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceClearFieldValues(cnvmlDevice, cValuesCount, cValues)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetVirtualizationMode function as declared in nvml/nvml.h\nfunc nvmlDeviceGetVirtualizationMode(nvmlDevice nvmlDevice, PVirtualMode *GpuVirtualizationMode) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcPVirtualMode, _ := (*C.nvmlGpuVirtualizationMode_t)(unsafe.Pointer(PVirtualMode)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetVirtualizationMode(cnvmlDevice, cPVirtualMode)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetHostVgpuMode function as declared in nvml/nvml.h\nfunc nvmlDeviceGetHostVgpuMode(nvmlDevice nvmlDevice, PHostVgpuMode *HostVgpuMode) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcPHostVgpuMode, _ := (*C.nvmlHostVgpuMode_t)(unsafe.Pointer(PHostVgpuMode)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetHostVgpuMode(cnvmlDevice, cPHostVgpuMode)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceSetVirtualizationMode function as declared in nvml/nvml.h\nfunc nvmlDeviceSetVirtualizationMode(nvmlDevice nvmlDevice, VirtualMode GpuVirtualizationMode) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcVirtualMode, _ := (C.nvmlGpuVirtualizationMode_t)(VirtualMode), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceSetVirtualizationMode(cnvmlDevice, cVirtualMode)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetVgpuHeterogeneousMode function as declared in nvml/nvml.h\nfunc nvmlDeviceGetVgpuHeterogeneousMode(nvmlDevice nvmlDevice, PHeterogeneousMode *VgpuHeterogeneousMode) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcPHeterogeneousMode, _ := (*C.nvmlVgpuHeterogeneousMode_t)(unsafe.Pointer(PHeterogeneousMode)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetVgpuHeterogeneousMode(cnvmlDevice, cPHeterogeneousMode)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceSetVgpuHeterogeneousMode function as declared in nvml/nvml.h\nfunc nvmlDeviceSetVgpuHeterogeneousMode(nvmlDevice nvmlDevice, PHeterogeneousMode *VgpuHeterogeneousMode) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcPHeterogeneousMode, _ := (*C.nvmlVgpuHeterogeneousMode_t)(unsafe.Pointer(PHeterogeneousMode)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceSetVgpuHeterogeneousMode(cnvmlDevice, cPHeterogeneousMode)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlVgpuInstanceGetPlacementId function as declared in nvml/nvml.h\nfunc nvmlVgpuInstanceGetPlacementId(nvmlVgpuInstance nvmlVgpuInstance, PPlacement *VgpuPlacementId) Return {\n\tcnvmlVgpuInstance, _ := (C.nvmlVgpuInstance_t)(nvmlVgpuInstance), cgoAllocsUnknown\n\tcPPlacement, _ := (*C.nvmlVgpuPlacementId_t)(unsafe.Pointer(PPlacement)), cgoAllocsUnknown\n\t__ret := C.nvmlVgpuInstanceGetPlacementId(cnvmlVgpuInstance, cPPlacement)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetVgpuTypeSupportedPlacements function as declared in nvml/nvml.h\nfunc nvmlDeviceGetVgpuTypeSupportedPlacements(nvmlDevice nvmlDevice, nvmlVgpuTypeId nvmlVgpuTypeId, PPlacementList *VgpuPlacementList) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcnvmlVgpuTypeId, _ := (C.nvmlVgpuTypeId_t)(nvmlVgpuTypeId), cgoAllocsUnknown\n\tcPPlacementList, _ := (*C.nvmlVgpuPlacementList_t)(unsafe.Pointer(PPlacementList)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetVgpuTypeSupportedPlacements(cnvmlDevice, cnvmlVgpuTypeId, cPPlacementList)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetVgpuTypeCreatablePlacements function as declared in nvml/nvml.h\nfunc nvmlDeviceGetVgpuTypeCreatablePlacements(nvmlDevice nvmlDevice, nvmlVgpuTypeId nvmlVgpuTypeId, PPlacementList *VgpuPlacementList) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcnvmlVgpuTypeId, _ := (C.nvmlVgpuTypeId_t)(nvmlVgpuTypeId), cgoAllocsUnknown\n\tcPPlacementList, _ := (*C.nvmlVgpuPlacementList_t)(unsafe.Pointer(PPlacementList)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetVgpuTypeCreatablePlacements(cnvmlDevice, cnvmlVgpuTypeId, cPPlacementList)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlVgpuTypeGetGspHeapSize function as declared in nvml/nvml.h\nfunc nvmlVgpuTypeGetGspHeapSize(nvmlVgpuTypeId nvmlVgpuTypeId, GspHeapSize *uint64) Return {\n\tcnvmlVgpuTypeId, _ := (C.nvmlVgpuTypeId_t)(nvmlVgpuTypeId), cgoAllocsUnknown\n\tcGspHeapSize, _ := (*C.ulonglong)(unsafe.Pointer(GspHeapSize)), cgoAllocsUnknown\n\t__ret := C.nvmlVgpuTypeGetGspHeapSize(cnvmlVgpuTypeId, cGspHeapSize)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlVgpuTypeGetFbReservation function as declared in nvml/nvml.h\nfunc nvmlVgpuTypeGetFbReservation(nvmlVgpuTypeId nvmlVgpuTypeId, FbReservation *uint64) Return {\n\tcnvmlVgpuTypeId, _ := (C.nvmlVgpuTypeId_t)(nvmlVgpuTypeId), cgoAllocsUnknown\n\tcFbReservation, _ := (*C.ulonglong)(unsafe.Pointer(FbReservation)), cgoAllocsUnknown\n\t__ret := C.nvmlVgpuTypeGetFbReservation(cnvmlVgpuTypeId, cFbReservation)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlVgpuInstanceGetRuntimeStateSize function as declared in nvml/nvml.h\nfunc nvmlVgpuInstanceGetRuntimeStateSize(nvmlVgpuInstance nvmlVgpuInstance, PState *VgpuRuntimeState) Return {\n\tcnvmlVgpuInstance, _ := (C.nvmlVgpuInstance_t)(nvmlVgpuInstance), cgoAllocsUnknown\n\tcPState, _ := (*C.nvmlVgpuRuntimeState_t)(unsafe.Pointer(PState)), cgoAllocsUnknown\n\t__ret := C.nvmlVgpuInstanceGetRuntimeStateSize(cnvmlVgpuInstance, cPState)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceSetVgpuCapabilities function as declared in nvml/nvml.h\nfunc nvmlDeviceSetVgpuCapabilities(nvmlDevice nvmlDevice, Capability DeviceVgpuCapability, State EnableState) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcCapability, _ := (C.nvmlDeviceVgpuCapability_t)(Capability), cgoAllocsUnknown\n\tcState, _ := (C.nvmlEnableState_t)(State), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceSetVgpuCapabilities(cnvmlDevice, cCapability, cState)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetGridLicensableFeatures_v4 function as declared in nvml/nvml.h\nfunc nvmlDeviceGetGridLicensableFeatures_v4(nvmlDevice nvmlDevice, PGridLicensableFeatures *GridLicensableFeatures) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcPGridLicensableFeatures, _ := (*C.nvmlGridLicensableFeatures_t)(unsafe.Pointer(PGridLicensableFeatures)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetGridLicensableFeatures_v4(cnvmlDevice, cPGridLicensableFeatures)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlGetVgpuDriverCapabilities function as declared in nvml/nvml.h\nfunc nvmlGetVgpuDriverCapabilities(Capability VgpuDriverCapability, CapResult *uint32) Return {\n\tcCapability, _ := (C.nvmlVgpuDriverCapability_t)(Capability), cgoAllocsUnknown\n\tcCapResult, _ := (*C.uint)(unsafe.Pointer(CapResult)), cgoAllocsUnknown\n\t__ret := C.nvmlGetVgpuDriverCapabilities(cCapability, cCapResult)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetVgpuCapabilities function as declared in nvml/nvml.h\nfunc nvmlDeviceGetVgpuCapabilities(nvmlDevice nvmlDevice, Capability DeviceVgpuCapability, CapResult *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcCapability, _ := (C.nvmlDeviceVgpuCapability_t)(Capability), cgoAllocsUnknown\n\tcCapResult, _ := (*C.uint)(unsafe.Pointer(CapResult)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetVgpuCapabilities(cnvmlDevice, cCapability, cCapResult)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetSupportedVgpus function as declared in nvml/nvml.h\nfunc nvmlDeviceGetSupportedVgpus(nvmlDevice nvmlDevice, VgpuCount *uint32, VgpuTypeIds *nvmlVgpuTypeId) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcVgpuCount, _ := (*C.uint)(unsafe.Pointer(VgpuCount)), cgoAllocsUnknown\n\tcVgpuTypeIds, _ := (*C.nvmlVgpuTypeId_t)(unsafe.Pointer(VgpuTypeIds)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetSupportedVgpus(cnvmlDevice, cVgpuCount, cVgpuTypeIds)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetCreatableVgpus function as declared in nvml/nvml.h\nfunc nvmlDeviceGetCreatableVgpus(nvmlDevice nvmlDevice, VgpuCount *uint32, VgpuTypeIds *nvmlVgpuTypeId) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcVgpuCount, _ := (*C.uint)(unsafe.Pointer(VgpuCount)), cgoAllocsUnknown\n\tcVgpuTypeIds, _ := (*C.nvmlVgpuTypeId_t)(unsafe.Pointer(VgpuTypeIds)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetCreatableVgpus(cnvmlDevice, cVgpuCount, cVgpuTypeIds)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlVgpuTypeGetClass function as declared in nvml/nvml.h\nfunc nvmlVgpuTypeGetClass(nvmlVgpuTypeId nvmlVgpuTypeId, VgpuTypeClass *byte, Size *uint32) Return {\n\tcnvmlVgpuTypeId, _ := (C.nvmlVgpuTypeId_t)(nvmlVgpuTypeId), cgoAllocsUnknown\n\tcVgpuTypeClass, _ := (*C.char)(unsafe.Pointer(VgpuTypeClass)), cgoAllocsUnknown\n\tcSize, _ := (*C.uint)(unsafe.Pointer(Size)), cgoAllocsUnknown\n\t__ret := C.nvmlVgpuTypeGetClass(cnvmlVgpuTypeId, cVgpuTypeClass, cSize)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlVgpuTypeGetName function as declared in nvml/nvml.h\nfunc nvmlVgpuTypeGetName(nvmlVgpuTypeId nvmlVgpuTypeId, VgpuTypeName *byte, Size *uint32) Return {\n\tcnvmlVgpuTypeId, _ := (C.nvmlVgpuTypeId_t)(nvmlVgpuTypeId), cgoAllocsUnknown\n\tcVgpuTypeName, _ := (*C.char)(unsafe.Pointer(VgpuTypeName)), cgoAllocsUnknown\n\tcSize, _ := (*C.uint)(unsafe.Pointer(Size)), cgoAllocsUnknown\n\t__ret := C.nvmlVgpuTypeGetName(cnvmlVgpuTypeId, cVgpuTypeName, cSize)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlVgpuTypeGetGpuInstanceProfileId function as declared in nvml/nvml.h\nfunc nvmlVgpuTypeGetGpuInstanceProfileId(nvmlVgpuTypeId nvmlVgpuTypeId, GpuInstanceProfileId *uint32) Return {\n\tcnvmlVgpuTypeId, _ := (C.nvmlVgpuTypeId_t)(nvmlVgpuTypeId), cgoAllocsUnknown\n\tcGpuInstanceProfileId, _ := (*C.uint)(unsafe.Pointer(GpuInstanceProfileId)), cgoAllocsUnknown\n\t__ret := C.nvmlVgpuTypeGetGpuInstanceProfileId(cnvmlVgpuTypeId, cGpuInstanceProfileId)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlVgpuTypeGetDeviceID function as declared in nvml/nvml.h\nfunc nvmlVgpuTypeGetDeviceID(nvmlVgpuTypeId nvmlVgpuTypeId, DeviceID *uint64, SubsystemID *uint64) Return {\n\tcnvmlVgpuTypeId, _ := (C.nvmlVgpuTypeId_t)(nvmlVgpuTypeId), cgoAllocsUnknown\n\tcDeviceID, _ := (*C.ulonglong)(unsafe.Pointer(DeviceID)), cgoAllocsUnknown\n\tcSubsystemID, _ := (*C.ulonglong)(unsafe.Pointer(SubsystemID)), cgoAllocsUnknown\n\t__ret := C.nvmlVgpuTypeGetDeviceID(cnvmlVgpuTypeId, cDeviceID, cSubsystemID)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlVgpuTypeGetFramebufferSize function as declared in nvml/nvml.h\nfunc nvmlVgpuTypeGetFramebufferSize(nvmlVgpuTypeId nvmlVgpuTypeId, FbSize *uint64) Return {\n\tcnvmlVgpuTypeId, _ := (C.nvmlVgpuTypeId_t)(nvmlVgpuTypeId), cgoAllocsUnknown\n\tcFbSize, _ := (*C.ulonglong)(unsafe.Pointer(FbSize)), cgoAllocsUnknown\n\t__ret := C.nvmlVgpuTypeGetFramebufferSize(cnvmlVgpuTypeId, cFbSize)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlVgpuTypeGetNumDisplayHeads function as declared in nvml/nvml.h\nfunc nvmlVgpuTypeGetNumDisplayHeads(nvmlVgpuTypeId nvmlVgpuTypeId, NumDisplayHeads *uint32) Return {\n\tcnvmlVgpuTypeId, _ := (C.nvmlVgpuTypeId_t)(nvmlVgpuTypeId), cgoAllocsUnknown\n\tcNumDisplayHeads, _ := (*C.uint)(unsafe.Pointer(NumDisplayHeads)), cgoAllocsUnknown\n\t__ret := C.nvmlVgpuTypeGetNumDisplayHeads(cnvmlVgpuTypeId, cNumDisplayHeads)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlVgpuTypeGetResolution function as declared in nvml/nvml.h\nfunc nvmlVgpuTypeGetResolution(nvmlVgpuTypeId nvmlVgpuTypeId, DisplayIndex uint32, Xdim *uint32, Ydim *uint32) Return {\n\tcnvmlVgpuTypeId, _ := (C.nvmlVgpuTypeId_t)(nvmlVgpuTypeId), cgoAllocsUnknown\n\tcDisplayIndex, _ := (C.uint)(DisplayIndex), cgoAllocsUnknown\n\tcXdim, _ := (*C.uint)(unsafe.Pointer(Xdim)), cgoAllocsUnknown\n\tcYdim, _ := (*C.uint)(unsafe.Pointer(Ydim)), cgoAllocsUnknown\n\t__ret := C.nvmlVgpuTypeGetResolution(cnvmlVgpuTypeId, cDisplayIndex, cXdim, cYdim)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlVgpuTypeGetLicense function as declared in nvml/nvml.h\nfunc nvmlVgpuTypeGetLicense(nvmlVgpuTypeId nvmlVgpuTypeId, VgpuTypeLicenseString *byte, Size uint32) Return {\n\tcnvmlVgpuTypeId, _ := (C.nvmlVgpuTypeId_t)(nvmlVgpuTypeId), cgoAllocsUnknown\n\tcVgpuTypeLicenseString, _ := (*C.char)(unsafe.Pointer(VgpuTypeLicenseString)), cgoAllocsUnknown\n\tcSize, _ := (C.uint)(Size), cgoAllocsUnknown\n\t__ret := C.nvmlVgpuTypeGetLicense(cnvmlVgpuTypeId, cVgpuTypeLicenseString, cSize)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlVgpuTypeGetFrameRateLimit function as declared in nvml/nvml.h\nfunc nvmlVgpuTypeGetFrameRateLimit(nvmlVgpuTypeId nvmlVgpuTypeId, FrameRateLimit *uint32) Return {\n\tcnvmlVgpuTypeId, _ := (C.nvmlVgpuTypeId_t)(nvmlVgpuTypeId), cgoAllocsUnknown\n\tcFrameRateLimit, _ := (*C.uint)(unsafe.Pointer(FrameRateLimit)), cgoAllocsUnknown\n\t__ret := C.nvmlVgpuTypeGetFrameRateLimit(cnvmlVgpuTypeId, cFrameRateLimit)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlVgpuTypeGetMaxInstances function as declared in nvml/nvml.h\nfunc nvmlVgpuTypeGetMaxInstances(nvmlDevice nvmlDevice, nvmlVgpuTypeId nvmlVgpuTypeId, VgpuInstanceCount *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcnvmlVgpuTypeId, _ := (C.nvmlVgpuTypeId_t)(nvmlVgpuTypeId), cgoAllocsUnknown\n\tcVgpuInstanceCount, _ := (*C.uint)(unsafe.Pointer(VgpuInstanceCount)), cgoAllocsUnknown\n\t__ret := C.nvmlVgpuTypeGetMaxInstances(cnvmlDevice, cnvmlVgpuTypeId, cVgpuInstanceCount)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlVgpuTypeGetMaxInstancesPerVm function as declared in nvml/nvml.h\nfunc nvmlVgpuTypeGetMaxInstancesPerVm(nvmlVgpuTypeId nvmlVgpuTypeId, VgpuInstanceCountPerVm *uint32) Return {\n\tcnvmlVgpuTypeId, _ := (C.nvmlVgpuTypeId_t)(nvmlVgpuTypeId), cgoAllocsUnknown\n\tcVgpuInstanceCountPerVm, _ := (*C.uint)(unsafe.Pointer(VgpuInstanceCountPerVm)), cgoAllocsUnknown\n\t__ret := C.nvmlVgpuTypeGetMaxInstancesPerVm(cnvmlVgpuTypeId, cVgpuInstanceCountPerVm)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlVgpuTypeGetBAR1Info function as declared in nvml/nvml.h\nfunc nvmlVgpuTypeGetBAR1Info(nvmlVgpuTypeId nvmlVgpuTypeId, Bar1Info *VgpuTypeBar1Info) Return {\n\tcnvmlVgpuTypeId, _ := (C.nvmlVgpuTypeId_t)(nvmlVgpuTypeId), cgoAllocsUnknown\n\tcBar1Info, _ := (*C.nvmlVgpuTypeBar1Info_t)(unsafe.Pointer(Bar1Info)), cgoAllocsUnknown\n\t__ret := C.nvmlVgpuTypeGetBAR1Info(cnvmlVgpuTypeId, cBar1Info)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetActiveVgpus function as declared in nvml/nvml.h\nfunc nvmlDeviceGetActiveVgpus(nvmlDevice nvmlDevice, VgpuCount *uint32, VgpuInstances *nvmlVgpuInstance) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcVgpuCount, _ := (*C.uint)(unsafe.Pointer(VgpuCount)), cgoAllocsUnknown\n\tcVgpuInstances, _ := (*C.nvmlVgpuInstance_t)(unsafe.Pointer(VgpuInstances)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetActiveVgpus(cnvmlDevice, cVgpuCount, cVgpuInstances)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlVgpuInstanceGetVmID function as declared in nvml/nvml.h\nfunc nvmlVgpuInstanceGetVmID(nvmlVgpuInstance nvmlVgpuInstance, VmId *byte, Size uint32, VmIdType *VgpuVmIdType) Return {\n\tcnvmlVgpuInstance, _ := (C.nvmlVgpuInstance_t)(nvmlVgpuInstance), cgoAllocsUnknown\n\tcVmId, _ := (*C.char)(unsafe.Pointer(VmId)), cgoAllocsUnknown\n\tcSize, _ := (C.uint)(Size), cgoAllocsUnknown\n\tcVmIdType, _ := (*C.nvmlVgpuVmIdType_t)(unsafe.Pointer(VmIdType)), cgoAllocsUnknown\n\t__ret := C.nvmlVgpuInstanceGetVmID(cnvmlVgpuInstance, cVmId, cSize, cVmIdType)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlVgpuInstanceGetUUID function as declared in nvml/nvml.h\nfunc nvmlVgpuInstanceGetUUID(nvmlVgpuInstance nvmlVgpuInstance, Uuid *byte, Size uint32) Return {\n\tcnvmlVgpuInstance, _ := (C.nvmlVgpuInstance_t)(nvmlVgpuInstance), cgoAllocsUnknown\n\tcUuid, _ := (*C.char)(unsafe.Pointer(Uuid)), cgoAllocsUnknown\n\tcSize, _ := (C.uint)(Size), cgoAllocsUnknown\n\t__ret := C.nvmlVgpuInstanceGetUUID(cnvmlVgpuInstance, cUuid, cSize)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlVgpuInstanceGetVmDriverVersion function as declared in nvml/nvml.h\nfunc nvmlVgpuInstanceGetVmDriverVersion(nvmlVgpuInstance nvmlVgpuInstance, Version *byte, Length uint32) Return {\n\tcnvmlVgpuInstance, _ := (C.nvmlVgpuInstance_t)(nvmlVgpuInstance), cgoAllocsUnknown\n\tcVersion, _ := (*C.char)(unsafe.Pointer(Version)), cgoAllocsUnknown\n\tcLength, _ := (C.uint)(Length), cgoAllocsUnknown\n\t__ret := C.nvmlVgpuInstanceGetVmDriverVersion(cnvmlVgpuInstance, cVersion, cLength)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlVgpuInstanceGetFbUsage function as declared in nvml/nvml.h\nfunc nvmlVgpuInstanceGetFbUsage(nvmlVgpuInstance nvmlVgpuInstance, FbUsage *uint64) Return {\n\tcnvmlVgpuInstance, _ := (C.nvmlVgpuInstance_t)(nvmlVgpuInstance), cgoAllocsUnknown\n\tcFbUsage, _ := (*C.ulonglong)(unsafe.Pointer(FbUsage)), cgoAllocsUnknown\n\t__ret := C.nvmlVgpuInstanceGetFbUsage(cnvmlVgpuInstance, cFbUsage)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlVgpuInstanceGetLicenseStatus function as declared in nvml/nvml.h\nfunc nvmlVgpuInstanceGetLicenseStatus(nvmlVgpuInstance nvmlVgpuInstance, Licensed *uint32) Return {\n\tcnvmlVgpuInstance, _ := (C.nvmlVgpuInstance_t)(nvmlVgpuInstance), cgoAllocsUnknown\n\tcLicensed, _ := (*C.uint)(unsafe.Pointer(Licensed)), cgoAllocsUnknown\n\t__ret := C.nvmlVgpuInstanceGetLicenseStatus(cnvmlVgpuInstance, cLicensed)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlVgpuInstanceGetType function as declared in nvml/nvml.h\nfunc nvmlVgpuInstanceGetType(nvmlVgpuInstance nvmlVgpuInstance, nvmlVgpuTypeId *nvmlVgpuTypeId) Return {\n\tcnvmlVgpuInstance, _ := (C.nvmlVgpuInstance_t)(nvmlVgpuInstance), cgoAllocsUnknown\n\tcnvmlVgpuTypeId, _ := (*C.nvmlVgpuTypeId_t)(unsafe.Pointer(nvmlVgpuTypeId)), cgoAllocsUnknown\n\t__ret := C.nvmlVgpuInstanceGetType(cnvmlVgpuInstance, cnvmlVgpuTypeId)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlVgpuInstanceGetFrameRateLimit function as declared in nvml/nvml.h\nfunc nvmlVgpuInstanceGetFrameRateLimit(nvmlVgpuInstance nvmlVgpuInstance, FrameRateLimit *uint32) Return {\n\tcnvmlVgpuInstance, _ := (C.nvmlVgpuInstance_t)(nvmlVgpuInstance), cgoAllocsUnknown\n\tcFrameRateLimit, _ := (*C.uint)(unsafe.Pointer(FrameRateLimit)), cgoAllocsUnknown\n\t__ret := C.nvmlVgpuInstanceGetFrameRateLimit(cnvmlVgpuInstance, cFrameRateLimit)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlVgpuInstanceGetEccMode function as declared in nvml/nvml.h\nfunc nvmlVgpuInstanceGetEccMode(nvmlVgpuInstance nvmlVgpuInstance, EccMode *EnableState) Return {\n\tcnvmlVgpuInstance, _ := (C.nvmlVgpuInstance_t)(nvmlVgpuInstance), cgoAllocsUnknown\n\tcEccMode, _ := (*C.nvmlEnableState_t)(unsafe.Pointer(EccMode)), cgoAllocsUnknown\n\t__ret := C.nvmlVgpuInstanceGetEccMode(cnvmlVgpuInstance, cEccMode)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlVgpuInstanceGetEncoderCapacity function as declared in nvml/nvml.h\nfunc nvmlVgpuInstanceGetEncoderCapacity(nvmlVgpuInstance nvmlVgpuInstance, EncoderCapacity *uint32) Return {\n\tcnvmlVgpuInstance, _ := (C.nvmlVgpuInstance_t)(nvmlVgpuInstance), cgoAllocsUnknown\n\tcEncoderCapacity, _ := (*C.uint)(unsafe.Pointer(EncoderCapacity)), cgoAllocsUnknown\n\t__ret := C.nvmlVgpuInstanceGetEncoderCapacity(cnvmlVgpuInstance, cEncoderCapacity)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlVgpuInstanceSetEncoderCapacity function as declared in nvml/nvml.h\nfunc nvmlVgpuInstanceSetEncoderCapacity(nvmlVgpuInstance nvmlVgpuInstance, EncoderCapacity uint32) Return {\n\tcnvmlVgpuInstance, _ := (C.nvmlVgpuInstance_t)(nvmlVgpuInstance), cgoAllocsUnknown\n\tcEncoderCapacity, _ := (C.uint)(EncoderCapacity), cgoAllocsUnknown\n\t__ret := C.nvmlVgpuInstanceSetEncoderCapacity(cnvmlVgpuInstance, cEncoderCapacity)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlVgpuInstanceGetEncoderStats function as declared in nvml/nvml.h\nfunc nvmlVgpuInstanceGetEncoderStats(nvmlVgpuInstance nvmlVgpuInstance, SessionCount *uint32, AverageFps *uint32, AverageLatency *uint32) Return {\n\tcnvmlVgpuInstance, _ := (C.nvmlVgpuInstance_t)(nvmlVgpuInstance), cgoAllocsUnknown\n\tcSessionCount, _ := (*C.uint)(unsafe.Pointer(SessionCount)), cgoAllocsUnknown\n\tcAverageFps, _ := (*C.uint)(unsafe.Pointer(AverageFps)), cgoAllocsUnknown\n\tcAverageLatency, _ := (*C.uint)(unsafe.Pointer(AverageLatency)), cgoAllocsUnknown\n\t__ret := C.nvmlVgpuInstanceGetEncoderStats(cnvmlVgpuInstance, cSessionCount, cAverageFps, cAverageLatency)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlVgpuInstanceGetEncoderSessions function as declared in nvml/nvml.h\nfunc nvmlVgpuInstanceGetEncoderSessions(nvmlVgpuInstance nvmlVgpuInstance, SessionCount *uint32, SessionInfo *EncoderSessionInfo) Return {\n\tcnvmlVgpuInstance, _ := (C.nvmlVgpuInstance_t)(nvmlVgpuInstance), cgoAllocsUnknown\n\tcSessionCount, _ := (*C.uint)(unsafe.Pointer(SessionCount)), cgoAllocsUnknown\n\tcSessionInfo, _ := (*C.nvmlEncoderSessionInfo_t)(unsafe.Pointer(SessionInfo)), cgoAllocsUnknown\n\t__ret := C.nvmlVgpuInstanceGetEncoderSessions(cnvmlVgpuInstance, cSessionCount, cSessionInfo)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlVgpuInstanceGetFBCStats function as declared in nvml/nvml.h\nfunc nvmlVgpuInstanceGetFBCStats(nvmlVgpuInstance nvmlVgpuInstance, FbcStats *FBCStats) Return {\n\tcnvmlVgpuInstance, _ := (C.nvmlVgpuInstance_t)(nvmlVgpuInstance), cgoAllocsUnknown\n\tcFbcStats, _ := (*C.nvmlFBCStats_t)(unsafe.Pointer(FbcStats)), cgoAllocsUnknown\n\t__ret := C.nvmlVgpuInstanceGetFBCStats(cnvmlVgpuInstance, cFbcStats)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlVgpuInstanceGetFBCSessions function as declared in nvml/nvml.h\nfunc nvmlVgpuInstanceGetFBCSessions(nvmlVgpuInstance nvmlVgpuInstance, SessionCount *uint32, SessionInfo *FBCSessionInfo) Return {\n\tcnvmlVgpuInstance, _ := (C.nvmlVgpuInstance_t)(nvmlVgpuInstance), cgoAllocsUnknown\n\tcSessionCount, _ := (*C.uint)(unsafe.Pointer(SessionCount)), cgoAllocsUnknown\n\tcSessionInfo, _ := (*C.nvmlFBCSessionInfo_t)(unsafe.Pointer(SessionInfo)), cgoAllocsUnknown\n\t__ret := C.nvmlVgpuInstanceGetFBCSessions(cnvmlVgpuInstance, cSessionCount, cSessionInfo)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlVgpuInstanceGetGpuInstanceId function as declared in nvml/nvml.h\nfunc nvmlVgpuInstanceGetGpuInstanceId(nvmlVgpuInstance nvmlVgpuInstance, GpuInstanceId *uint32) Return {\n\tcnvmlVgpuInstance, _ := (C.nvmlVgpuInstance_t)(nvmlVgpuInstance), cgoAllocsUnknown\n\tcGpuInstanceId, _ := (*C.uint)(unsafe.Pointer(GpuInstanceId)), cgoAllocsUnknown\n\t__ret := C.nvmlVgpuInstanceGetGpuInstanceId(cnvmlVgpuInstance, cGpuInstanceId)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlVgpuInstanceGetGpuPciId function as declared in nvml/nvml.h\nfunc nvmlVgpuInstanceGetGpuPciId(nvmlVgpuInstance nvmlVgpuInstance, VgpuPciId *byte, Length *uint32) Return {\n\tcnvmlVgpuInstance, _ := (C.nvmlVgpuInstance_t)(nvmlVgpuInstance), cgoAllocsUnknown\n\tcVgpuPciId, _ := (*C.char)(unsafe.Pointer(VgpuPciId)), cgoAllocsUnknown\n\tcLength, _ := (*C.uint)(unsafe.Pointer(Length)), cgoAllocsUnknown\n\t__ret := C.nvmlVgpuInstanceGetGpuPciId(cnvmlVgpuInstance, cVgpuPciId, cLength)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlVgpuTypeGetCapabilities function as declared in nvml/nvml.h\nfunc nvmlVgpuTypeGetCapabilities(nvmlVgpuTypeId nvmlVgpuTypeId, Capability VgpuCapability, CapResult *uint32) Return {\n\tcnvmlVgpuTypeId, _ := (C.nvmlVgpuTypeId_t)(nvmlVgpuTypeId), cgoAllocsUnknown\n\tcCapability, _ := (C.nvmlVgpuCapability_t)(Capability), cgoAllocsUnknown\n\tcCapResult, _ := (*C.uint)(unsafe.Pointer(CapResult)), cgoAllocsUnknown\n\t__ret := C.nvmlVgpuTypeGetCapabilities(cnvmlVgpuTypeId, cCapability, cCapResult)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlVgpuInstanceGetMdevUUID function as declared in nvml/nvml.h\nfunc nvmlVgpuInstanceGetMdevUUID(nvmlVgpuInstance nvmlVgpuInstance, MdevUuid *byte, Size uint32) Return {\n\tcnvmlVgpuInstance, _ := (C.nvmlVgpuInstance_t)(nvmlVgpuInstance), cgoAllocsUnknown\n\tcMdevUuid, _ := (*C.char)(unsafe.Pointer(MdevUuid)), cgoAllocsUnknown\n\tcSize, _ := (C.uint)(Size), cgoAllocsUnknown\n\t__ret := C.nvmlVgpuInstanceGetMdevUUID(cnvmlVgpuInstance, cMdevUuid, cSize)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlGpuInstanceGetCreatableVgpus function as declared in nvml/nvml.h\nfunc nvmlGpuInstanceGetCreatableVgpus(nvmlGpuInstance nvmlGpuInstance, PVgpus *VgpuTypeIdInfo) Return {\n\tcnvmlGpuInstance, _ := *(*C.nvmlGpuInstance_t)(unsafe.Pointer(&nvmlGpuInstance)), cgoAllocsUnknown\n\tcPVgpus, _ := (*C.nvmlVgpuTypeIdInfo_t)(unsafe.Pointer(PVgpus)), cgoAllocsUnknown\n\t__ret := C.nvmlGpuInstanceGetCreatableVgpus(cnvmlGpuInstance, cPVgpus)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlVgpuTypeGetMaxInstancesPerGpuInstance function as declared in nvml/nvml.h\nfunc nvmlVgpuTypeGetMaxInstancesPerGpuInstance(PMaxInstance *VgpuTypeMaxInstance) Return {\n\tcPMaxInstance, _ := (*C.nvmlVgpuTypeMaxInstance_t)(unsafe.Pointer(PMaxInstance)), cgoAllocsUnknown\n\t__ret := C.nvmlVgpuTypeGetMaxInstancesPerGpuInstance(cPMaxInstance)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlGpuInstanceGetActiveVgpus function as declared in nvml/nvml.h\nfunc nvmlGpuInstanceGetActiveVgpus(nvmlGpuInstance nvmlGpuInstance, PVgpuInstanceInfo *ActiveVgpuInstanceInfo) Return {\n\tcnvmlGpuInstance, _ := *(*C.nvmlGpuInstance_t)(unsafe.Pointer(&nvmlGpuInstance)), cgoAllocsUnknown\n\tcPVgpuInstanceInfo, _ := (*C.nvmlActiveVgpuInstanceInfo_t)(unsafe.Pointer(PVgpuInstanceInfo)), cgoAllocsUnknown\n\t__ret := C.nvmlGpuInstanceGetActiveVgpus(cnvmlGpuInstance, cPVgpuInstanceInfo)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlGpuInstanceSetVgpuSchedulerState function as declared in nvml/nvml.h\nfunc nvmlGpuInstanceSetVgpuSchedulerState(nvmlGpuInstance nvmlGpuInstance, PScheduler *VgpuSchedulerState) Return {\n\tcnvmlGpuInstance, _ := *(*C.nvmlGpuInstance_t)(unsafe.Pointer(&nvmlGpuInstance)), cgoAllocsUnknown\n\tcPScheduler, _ := (*C.nvmlVgpuSchedulerState_t)(unsafe.Pointer(PScheduler)), cgoAllocsUnknown\n\t__ret := C.nvmlGpuInstanceSetVgpuSchedulerState(cnvmlGpuInstance, cPScheduler)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlGpuInstanceGetVgpuSchedulerState function as declared in nvml/nvml.h\nfunc nvmlGpuInstanceGetVgpuSchedulerState(nvmlGpuInstance nvmlGpuInstance, PSchedulerStateInfo *VgpuSchedulerStateInfo) Return {\n\tcnvmlGpuInstance, _ := *(*C.nvmlGpuInstance_t)(unsafe.Pointer(&nvmlGpuInstance)), cgoAllocsUnknown\n\tcPSchedulerStateInfo, _ := (*C.nvmlVgpuSchedulerStateInfo_t)(unsafe.Pointer(PSchedulerStateInfo)), cgoAllocsUnknown\n\t__ret := C.nvmlGpuInstanceGetVgpuSchedulerState(cnvmlGpuInstance, cPSchedulerStateInfo)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlGpuInstanceGetVgpuSchedulerLog function as declared in nvml/nvml.h\nfunc nvmlGpuInstanceGetVgpuSchedulerLog(nvmlGpuInstance nvmlGpuInstance, PSchedulerLogInfo *VgpuSchedulerLogInfo) Return {\n\tcnvmlGpuInstance, _ := *(*C.nvmlGpuInstance_t)(unsafe.Pointer(&nvmlGpuInstance)), cgoAllocsUnknown\n\tcPSchedulerLogInfo, _ := (*C.nvmlVgpuSchedulerLogInfo_t)(unsafe.Pointer(PSchedulerLogInfo)), cgoAllocsUnknown\n\t__ret := C.nvmlGpuInstanceGetVgpuSchedulerLog(cnvmlGpuInstance, cPSchedulerLogInfo)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlGpuInstanceGetVgpuTypeCreatablePlacements function as declared in nvml/nvml.h\nfunc nvmlGpuInstanceGetVgpuTypeCreatablePlacements(nvmlGpuInstance nvmlGpuInstance, PCreatablePlacementInfo *VgpuCreatablePlacementInfo) Return {\n\tcnvmlGpuInstance, _ := *(*C.nvmlGpuInstance_t)(unsafe.Pointer(&nvmlGpuInstance)), cgoAllocsUnknown\n\tcPCreatablePlacementInfo, _ := (*C.nvmlVgpuCreatablePlacementInfo_t)(unsafe.Pointer(PCreatablePlacementInfo)), cgoAllocsUnknown\n\t__ret := C.nvmlGpuInstanceGetVgpuTypeCreatablePlacements(cnvmlGpuInstance, cPCreatablePlacementInfo)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlGpuInstanceGetVgpuHeterogeneousMode function as declared in nvml/nvml.h\nfunc nvmlGpuInstanceGetVgpuHeterogeneousMode(nvmlGpuInstance nvmlGpuInstance, PHeterogeneousMode *VgpuHeterogeneousMode) Return {\n\tcnvmlGpuInstance, _ := *(*C.nvmlGpuInstance_t)(unsafe.Pointer(&nvmlGpuInstance)), cgoAllocsUnknown\n\tcPHeterogeneousMode, _ := (*C.nvmlVgpuHeterogeneousMode_t)(unsafe.Pointer(PHeterogeneousMode)), cgoAllocsUnknown\n\t__ret := C.nvmlGpuInstanceGetVgpuHeterogeneousMode(cnvmlGpuInstance, cPHeterogeneousMode)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlGpuInstanceSetVgpuHeterogeneousMode function as declared in nvml/nvml.h\nfunc nvmlGpuInstanceSetVgpuHeterogeneousMode(nvmlGpuInstance nvmlGpuInstance, PHeterogeneousMode *VgpuHeterogeneousMode) Return {\n\tcnvmlGpuInstance, _ := *(*C.nvmlGpuInstance_t)(unsafe.Pointer(&nvmlGpuInstance)), cgoAllocsUnknown\n\tcPHeterogeneousMode, _ := (*C.nvmlVgpuHeterogeneousMode_t)(unsafe.Pointer(PHeterogeneousMode)), cgoAllocsUnknown\n\t__ret := C.nvmlGpuInstanceSetVgpuHeterogeneousMode(cnvmlGpuInstance, cPHeterogeneousMode)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlVgpuInstanceGetMetadata function as declared in nvml/nvml.h\nfunc nvmlVgpuInstanceGetMetadata(nvmlVgpuInstance nvmlVgpuInstance, nvmlVgpuMetadata *nvmlVgpuMetadata, BufferSize *uint32) Return {\n\tcnvmlVgpuInstance, _ := (C.nvmlVgpuInstance_t)(nvmlVgpuInstance), cgoAllocsUnknown\n\tcnvmlVgpuMetadata, _ := (*C.nvmlVgpuMetadata_t)(unsafe.Pointer(nvmlVgpuMetadata)), cgoAllocsUnknown\n\tcBufferSize, _ := (*C.uint)(unsafe.Pointer(BufferSize)), cgoAllocsUnknown\n\t__ret := C.nvmlVgpuInstanceGetMetadata(cnvmlVgpuInstance, cnvmlVgpuMetadata, cBufferSize)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetVgpuMetadata function as declared in nvml/nvml.h\nfunc nvmlDeviceGetVgpuMetadata(nvmlDevice nvmlDevice, PgpuMetadata *nvmlVgpuPgpuMetadata, BufferSize *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcPgpuMetadata, _ := (*C.nvmlVgpuPgpuMetadata_t)(unsafe.Pointer(PgpuMetadata)), cgoAllocsUnknown\n\tcBufferSize, _ := (*C.uint)(unsafe.Pointer(BufferSize)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetVgpuMetadata(cnvmlDevice, cPgpuMetadata, cBufferSize)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlGetVgpuCompatibility function as declared in nvml/nvml.h\nfunc nvmlGetVgpuCompatibility(nvmlVgpuMetadata *nvmlVgpuMetadata, PgpuMetadata *nvmlVgpuPgpuMetadata, CompatibilityInfo *VgpuPgpuCompatibility) Return {\n\tcnvmlVgpuMetadata, _ := (*C.nvmlVgpuMetadata_t)(unsafe.Pointer(nvmlVgpuMetadata)), cgoAllocsUnknown\n\tcPgpuMetadata, _ := (*C.nvmlVgpuPgpuMetadata_t)(unsafe.Pointer(PgpuMetadata)), cgoAllocsUnknown\n\tcCompatibilityInfo, _ := (*C.nvmlVgpuPgpuCompatibility_t)(unsafe.Pointer(CompatibilityInfo)), cgoAllocsUnknown\n\t__ret := C.nvmlGetVgpuCompatibility(cnvmlVgpuMetadata, cPgpuMetadata, cCompatibilityInfo)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetPgpuMetadataString function as declared in nvml/nvml.h\nfunc nvmlDeviceGetPgpuMetadataString(nvmlDevice nvmlDevice, PgpuMetadata *byte, BufferSize *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcPgpuMetadata, _ := (*C.char)(unsafe.Pointer(PgpuMetadata)), cgoAllocsUnknown\n\tcBufferSize, _ := (*C.uint)(unsafe.Pointer(BufferSize)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetPgpuMetadataString(cnvmlDevice, cPgpuMetadata, cBufferSize)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetVgpuSchedulerLog function as declared in nvml/nvml.h\nfunc nvmlDeviceGetVgpuSchedulerLog(nvmlDevice nvmlDevice, PSchedulerLog *VgpuSchedulerLog) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcPSchedulerLog, _ := (*C.nvmlVgpuSchedulerLog_t)(unsafe.Pointer(PSchedulerLog)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetVgpuSchedulerLog(cnvmlDevice, cPSchedulerLog)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetVgpuSchedulerState function as declared in nvml/nvml.h\nfunc nvmlDeviceGetVgpuSchedulerState(nvmlDevice nvmlDevice, PSchedulerState *VgpuSchedulerGetState) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcPSchedulerState, _ := (*C.nvmlVgpuSchedulerGetState_t)(unsafe.Pointer(PSchedulerState)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetVgpuSchedulerState(cnvmlDevice, cPSchedulerState)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetVgpuSchedulerCapabilities function as declared in nvml/nvml.h\nfunc nvmlDeviceGetVgpuSchedulerCapabilities(nvmlDevice nvmlDevice, PCapabilities *VgpuSchedulerCapabilities) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcPCapabilities, _ := (*C.nvmlVgpuSchedulerCapabilities_t)(unsafe.Pointer(PCapabilities)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetVgpuSchedulerCapabilities(cnvmlDevice, cPCapabilities)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceSetVgpuSchedulerState function as declared in nvml/nvml.h\nfunc nvmlDeviceSetVgpuSchedulerState(nvmlDevice nvmlDevice, PSchedulerState *VgpuSchedulerSetState) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcPSchedulerState, _ := (*C.nvmlVgpuSchedulerSetState_t)(unsafe.Pointer(PSchedulerState)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceSetVgpuSchedulerState(cnvmlDevice, cPSchedulerState)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlGetVgpuVersion function as declared in nvml/nvml.h\nfunc nvmlGetVgpuVersion(Supported *VgpuVersion, Current *VgpuVersion) Return {\n\tcSupported, _ := (*C.nvmlVgpuVersion_t)(unsafe.Pointer(Supported)), cgoAllocsUnknown\n\tcCurrent, _ := (*C.nvmlVgpuVersion_t)(unsafe.Pointer(Current)), cgoAllocsUnknown\n\t__ret := C.nvmlGetVgpuVersion(cSupported, cCurrent)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlSetVgpuVersion function as declared in nvml/nvml.h\nfunc nvmlSetVgpuVersion(VgpuVersion *VgpuVersion) Return {\n\tcVgpuVersion, _ := (*C.nvmlVgpuVersion_t)(unsafe.Pointer(VgpuVersion)), cgoAllocsUnknown\n\t__ret := C.nvmlSetVgpuVersion(cVgpuVersion)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetVgpuUtilization function as declared in nvml/nvml.h\nfunc nvmlDeviceGetVgpuUtilization(nvmlDevice nvmlDevice, LastSeenTimeStamp uint64, SampleValType *ValueType, VgpuInstanceSamplesCount *uint32, UtilizationSamples *VgpuInstanceUtilizationSample) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcLastSeenTimeStamp, _ := (C.ulonglong)(LastSeenTimeStamp), cgoAllocsUnknown\n\tcSampleValType, _ := (*C.nvmlValueType_t)(unsafe.Pointer(SampleValType)), cgoAllocsUnknown\n\tcVgpuInstanceSamplesCount, _ := (*C.uint)(unsafe.Pointer(VgpuInstanceSamplesCount)), cgoAllocsUnknown\n\tcUtilizationSamples, _ := (*C.nvmlVgpuInstanceUtilizationSample_t)(unsafe.Pointer(UtilizationSamples)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetVgpuUtilization(cnvmlDevice, cLastSeenTimeStamp, cSampleValType, cVgpuInstanceSamplesCount, cUtilizationSamples)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetVgpuInstancesUtilizationInfo function as declared in nvml/nvml.h\nfunc nvmlDeviceGetVgpuInstancesUtilizationInfo(nvmlDevice nvmlDevice, VgpuUtilInfo *VgpuInstancesUtilizationInfo) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcVgpuUtilInfo, _ := (*C.nvmlVgpuInstancesUtilizationInfo_t)(unsafe.Pointer(VgpuUtilInfo)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetVgpuInstancesUtilizationInfo(cnvmlDevice, cVgpuUtilInfo)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetVgpuProcessUtilization function as declared in nvml/nvml.h\nfunc nvmlDeviceGetVgpuProcessUtilization(nvmlDevice nvmlDevice, LastSeenTimeStamp uint64, VgpuProcessSamplesCount *uint32, UtilizationSamples *VgpuProcessUtilizationSample) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcLastSeenTimeStamp, _ := (C.ulonglong)(LastSeenTimeStamp), cgoAllocsUnknown\n\tcVgpuProcessSamplesCount, _ := (*C.uint)(unsafe.Pointer(VgpuProcessSamplesCount)), cgoAllocsUnknown\n\tcUtilizationSamples, _ := (*C.nvmlVgpuProcessUtilizationSample_t)(unsafe.Pointer(UtilizationSamples)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetVgpuProcessUtilization(cnvmlDevice, cLastSeenTimeStamp, cVgpuProcessSamplesCount, cUtilizationSamples)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetVgpuProcessesUtilizationInfo function as declared in nvml/nvml.h\nfunc nvmlDeviceGetVgpuProcessesUtilizationInfo(nvmlDevice nvmlDevice, VgpuProcUtilInfo *VgpuProcessesUtilizationInfo) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcVgpuProcUtilInfo, _ := (*C.nvmlVgpuProcessesUtilizationInfo_t)(unsafe.Pointer(VgpuProcUtilInfo)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetVgpuProcessesUtilizationInfo(cnvmlDevice, cVgpuProcUtilInfo)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlVgpuInstanceGetAccountingMode function as declared in nvml/nvml.h\nfunc nvmlVgpuInstanceGetAccountingMode(nvmlVgpuInstance nvmlVgpuInstance, Mode *EnableState) Return {\n\tcnvmlVgpuInstance, _ := (C.nvmlVgpuInstance_t)(nvmlVgpuInstance), cgoAllocsUnknown\n\tcMode, _ := (*C.nvmlEnableState_t)(unsafe.Pointer(Mode)), cgoAllocsUnknown\n\t__ret := C.nvmlVgpuInstanceGetAccountingMode(cnvmlVgpuInstance, cMode)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlVgpuInstanceGetAccountingPids function as declared in nvml/nvml.h\nfunc nvmlVgpuInstanceGetAccountingPids(nvmlVgpuInstance nvmlVgpuInstance, Count *uint32, Pids *uint32) Return {\n\tcnvmlVgpuInstance, _ := (C.nvmlVgpuInstance_t)(nvmlVgpuInstance), cgoAllocsUnknown\n\tcCount, _ := (*C.uint)(unsafe.Pointer(Count)), cgoAllocsUnknown\n\tcPids, _ := (*C.uint)(unsafe.Pointer(Pids)), cgoAllocsUnknown\n\t__ret := C.nvmlVgpuInstanceGetAccountingPids(cnvmlVgpuInstance, cCount, cPids)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlVgpuInstanceGetAccountingStats function as declared in nvml/nvml.h\nfunc nvmlVgpuInstanceGetAccountingStats(nvmlVgpuInstance nvmlVgpuInstance, Pid uint32, Stats *AccountingStats) Return {\n\tcnvmlVgpuInstance, _ := (C.nvmlVgpuInstance_t)(nvmlVgpuInstance), cgoAllocsUnknown\n\tcPid, _ := (C.uint)(Pid), cgoAllocsUnknown\n\tcStats, _ := (*C.nvmlAccountingStats_t)(unsafe.Pointer(Stats)), cgoAllocsUnknown\n\t__ret := C.nvmlVgpuInstanceGetAccountingStats(cnvmlVgpuInstance, cPid, cStats)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlVgpuInstanceClearAccountingPids function as declared in nvml/nvml.h\nfunc nvmlVgpuInstanceClearAccountingPids(nvmlVgpuInstance nvmlVgpuInstance) Return {\n\tcnvmlVgpuInstance, _ := (C.nvmlVgpuInstance_t)(nvmlVgpuInstance), cgoAllocsUnknown\n\t__ret := C.nvmlVgpuInstanceClearAccountingPids(cnvmlVgpuInstance)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlVgpuInstanceGetLicenseInfo_v2 function as declared in nvml/nvml.h\nfunc nvmlVgpuInstanceGetLicenseInfo_v2(nvmlVgpuInstance nvmlVgpuInstance, LicenseInfo *VgpuLicenseInfo) Return {\n\tcnvmlVgpuInstance, _ := (C.nvmlVgpuInstance_t)(nvmlVgpuInstance), cgoAllocsUnknown\n\tcLicenseInfo, _ := (*C.nvmlVgpuLicenseInfo_t)(unsafe.Pointer(LicenseInfo)), cgoAllocsUnknown\n\t__ret := C.nvmlVgpuInstanceGetLicenseInfo_v2(cnvmlVgpuInstance, cLicenseInfo)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlGetExcludedDeviceCount function as declared in nvml/nvml.h\nfunc nvmlGetExcludedDeviceCount(DeviceCount *uint32) Return {\n\tcDeviceCount, _ := (*C.uint)(unsafe.Pointer(DeviceCount)), cgoAllocsUnknown\n\t__ret := C.nvmlGetExcludedDeviceCount(cDeviceCount)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlGetExcludedDeviceInfoByIndex function as declared in nvml/nvml.h\nfunc nvmlGetExcludedDeviceInfoByIndex(Index uint32, Info *ExcludedDeviceInfo) Return {\n\tcIndex, _ := (C.uint)(Index), cgoAllocsUnknown\n\tcInfo, _ := (*C.nvmlExcludedDeviceInfo_t)(unsafe.Pointer(Info)), cgoAllocsUnknown\n\t__ret := C.nvmlGetExcludedDeviceInfoByIndex(cIndex, cInfo)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceReadWritePRM_v1 function as declared in nvml/nvml.h\nfunc nvmlDeviceReadWritePRM_v1(nvmlDevice nvmlDevice, Buffer *PRMTLV_v1) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcBuffer, _ := (*C.nvmlPRMTLV_v1_t)(unsafe.Pointer(Buffer)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceReadWritePRM_v1(cnvmlDevice, cBuffer)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceSetMigMode function as declared in nvml/nvml.h\nfunc nvmlDeviceSetMigMode(nvmlDevice nvmlDevice, Mode uint32, ActivationStatus *Return) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcMode, _ := (C.uint)(Mode), cgoAllocsUnknown\n\tcActivationStatus, _ := (*C.nvmlReturn_t)(unsafe.Pointer(ActivationStatus)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceSetMigMode(cnvmlDevice, cMode, cActivationStatus)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetMigMode function as declared in nvml/nvml.h\nfunc nvmlDeviceGetMigMode(nvmlDevice nvmlDevice, CurrentMode *uint32, PendingMode *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcCurrentMode, _ := (*C.uint)(unsafe.Pointer(CurrentMode)), cgoAllocsUnknown\n\tcPendingMode, _ := (*C.uint)(unsafe.Pointer(PendingMode)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetMigMode(cnvmlDevice, cCurrentMode, cPendingMode)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetGpuInstanceProfileInfo function as declared in nvml/nvml.h\nfunc nvmlDeviceGetGpuInstanceProfileInfo(nvmlDevice nvmlDevice, Profile uint32, Info *GpuInstanceProfileInfo) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcProfile, _ := (C.uint)(Profile), cgoAllocsUnknown\n\tcInfo, _ := (*C.nvmlGpuInstanceProfileInfo_t)(unsafe.Pointer(Info)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetGpuInstanceProfileInfo(cnvmlDevice, cProfile, cInfo)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetGpuInstanceProfileInfoV function as declared in nvml/nvml.h\nfunc nvmlDeviceGetGpuInstanceProfileInfoV(nvmlDevice nvmlDevice, Profile uint32, Info *GpuInstanceProfileInfo_v2) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcProfile, _ := (C.uint)(Profile), cgoAllocsUnknown\n\tcInfo, _ := (*C.nvmlGpuInstanceProfileInfo_v2_t)(unsafe.Pointer(Info)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetGpuInstanceProfileInfoV(cnvmlDevice, cProfile, cInfo)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetGpuInstanceProfileInfoByIdV function as declared in nvml/nvml.h\nfunc nvmlDeviceGetGpuInstanceProfileInfoByIdV(nvmlDevice nvmlDevice, ProfileId uint32, Info *GpuInstanceProfileInfo_v2) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcProfileId, _ := (C.uint)(ProfileId), cgoAllocsUnknown\n\tcInfo, _ := (*C.nvmlGpuInstanceProfileInfo_v2_t)(unsafe.Pointer(Info)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetGpuInstanceProfileInfoByIdV(cnvmlDevice, cProfileId, cInfo)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetGpuInstancePossiblePlacements_v2 function as declared in nvml/nvml.h\nfunc nvmlDeviceGetGpuInstancePossiblePlacements_v2(nvmlDevice nvmlDevice, ProfileId uint32, Placements *GpuInstancePlacement, Count *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcProfileId, _ := (C.uint)(ProfileId), cgoAllocsUnknown\n\tcPlacements, _ := (*C.nvmlGpuInstancePlacement_t)(unsafe.Pointer(Placements)), cgoAllocsUnknown\n\tcCount, _ := (*C.uint)(unsafe.Pointer(Count)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetGpuInstancePossiblePlacements_v2(cnvmlDevice, cProfileId, cPlacements, cCount)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetGpuInstanceRemainingCapacity function as declared in nvml/nvml.h\nfunc nvmlDeviceGetGpuInstanceRemainingCapacity(nvmlDevice nvmlDevice, ProfileId uint32, Count *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcProfileId, _ := (C.uint)(ProfileId), cgoAllocsUnknown\n\tcCount, _ := (*C.uint)(unsafe.Pointer(Count)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetGpuInstanceRemainingCapacity(cnvmlDevice, cProfileId, cCount)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceCreateGpuInstance function as declared in nvml/nvml.h\nfunc nvmlDeviceCreateGpuInstance(nvmlDevice nvmlDevice, ProfileId uint32, nvmlGpuInstance *nvmlGpuInstance) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcProfileId, _ := (C.uint)(ProfileId), cgoAllocsUnknown\n\tcnvmlGpuInstance, _ := (*C.nvmlGpuInstance_t)(unsafe.Pointer(nvmlGpuInstance)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceCreateGpuInstance(cnvmlDevice, cProfileId, cnvmlGpuInstance)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceCreateGpuInstanceWithPlacement function as declared in nvml/nvml.h\nfunc nvmlDeviceCreateGpuInstanceWithPlacement(nvmlDevice nvmlDevice, ProfileId uint32, Placement *GpuInstancePlacement, nvmlGpuInstance *nvmlGpuInstance) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcProfileId, _ := (C.uint)(ProfileId), cgoAllocsUnknown\n\tcPlacement, _ := (*C.nvmlGpuInstancePlacement_t)(unsafe.Pointer(Placement)), cgoAllocsUnknown\n\tcnvmlGpuInstance, _ := (*C.nvmlGpuInstance_t)(unsafe.Pointer(nvmlGpuInstance)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceCreateGpuInstanceWithPlacement(cnvmlDevice, cProfileId, cPlacement, cnvmlGpuInstance)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlGpuInstanceDestroy function as declared in nvml/nvml.h\nfunc nvmlGpuInstanceDestroy(nvmlGpuInstance nvmlGpuInstance) Return {\n\tcnvmlGpuInstance, _ := *(*C.nvmlGpuInstance_t)(unsafe.Pointer(&nvmlGpuInstance)), cgoAllocsUnknown\n\t__ret := C.nvmlGpuInstanceDestroy(cnvmlGpuInstance)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetGpuInstances function as declared in nvml/nvml.h\nfunc nvmlDeviceGetGpuInstances(nvmlDevice nvmlDevice, ProfileId uint32, GpuInstances *nvmlGpuInstance, Count *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcProfileId, _ := (C.uint)(ProfileId), cgoAllocsUnknown\n\tcGpuInstances, _ := (*C.nvmlGpuInstance_t)(unsafe.Pointer(GpuInstances)), cgoAllocsUnknown\n\tcCount, _ := (*C.uint)(unsafe.Pointer(Count)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetGpuInstances(cnvmlDevice, cProfileId, cGpuInstances, cCount)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetGpuInstanceById function as declared in nvml/nvml.h\nfunc nvmlDeviceGetGpuInstanceById(nvmlDevice nvmlDevice, Id uint32, nvmlGpuInstance *nvmlGpuInstance) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcId, _ := (C.uint)(Id), cgoAllocsUnknown\n\tcnvmlGpuInstance, _ := (*C.nvmlGpuInstance_t)(unsafe.Pointer(nvmlGpuInstance)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetGpuInstanceById(cnvmlDevice, cId, cnvmlGpuInstance)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlGpuInstanceGetInfo function as declared in nvml/nvml.h\nfunc nvmlGpuInstanceGetInfo(nvmlGpuInstance nvmlGpuInstance, Info *nvmlGpuInstanceInfo) Return {\n\tcnvmlGpuInstance, _ := *(*C.nvmlGpuInstance_t)(unsafe.Pointer(&nvmlGpuInstance)), cgoAllocsUnknown\n\tcInfo, _ := (*C.nvmlGpuInstanceInfo_t)(unsafe.Pointer(Info)), cgoAllocsUnknown\n\t__ret := C.nvmlGpuInstanceGetInfo(cnvmlGpuInstance, cInfo)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlGpuInstanceGetComputeInstanceProfileInfo function as declared in nvml/nvml.h\nfunc nvmlGpuInstanceGetComputeInstanceProfileInfo(nvmlGpuInstance nvmlGpuInstance, Profile uint32, EngProfile uint32, Info *ComputeInstanceProfileInfo) Return {\n\tcnvmlGpuInstance, _ := *(*C.nvmlGpuInstance_t)(unsafe.Pointer(&nvmlGpuInstance)), cgoAllocsUnknown\n\tcProfile, _ := (C.uint)(Profile), cgoAllocsUnknown\n\tcEngProfile, _ := (C.uint)(EngProfile), cgoAllocsUnknown\n\tcInfo, _ := (*C.nvmlComputeInstanceProfileInfo_t)(unsafe.Pointer(Info)), cgoAllocsUnknown\n\t__ret := C.nvmlGpuInstanceGetComputeInstanceProfileInfo(cnvmlGpuInstance, cProfile, cEngProfile, cInfo)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlGpuInstanceGetComputeInstanceProfileInfoV function as declared in nvml/nvml.h\nfunc nvmlGpuInstanceGetComputeInstanceProfileInfoV(nvmlGpuInstance nvmlGpuInstance, Profile uint32, EngProfile uint32, Info *ComputeInstanceProfileInfo_v2) Return {\n\tcnvmlGpuInstance, _ := *(*C.nvmlGpuInstance_t)(unsafe.Pointer(&nvmlGpuInstance)), cgoAllocsUnknown\n\tcProfile, _ := (C.uint)(Profile), cgoAllocsUnknown\n\tcEngProfile, _ := (C.uint)(EngProfile), cgoAllocsUnknown\n\tcInfo, _ := (*C.nvmlComputeInstanceProfileInfo_v2_t)(unsafe.Pointer(Info)), cgoAllocsUnknown\n\t__ret := C.nvmlGpuInstanceGetComputeInstanceProfileInfoV(cnvmlGpuInstance, cProfile, cEngProfile, cInfo)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlGpuInstanceGetComputeInstanceRemainingCapacity function as declared in nvml/nvml.h\nfunc nvmlGpuInstanceGetComputeInstanceRemainingCapacity(nvmlGpuInstance nvmlGpuInstance, ProfileId uint32, Count *uint32) Return {\n\tcnvmlGpuInstance, _ := *(*C.nvmlGpuInstance_t)(unsafe.Pointer(&nvmlGpuInstance)), cgoAllocsUnknown\n\tcProfileId, _ := (C.uint)(ProfileId), cgoAllocsUnknown\n\tcCount, _ := (*C.uint)(unsafe.Pointer(Count)), cgoAllocsUnknown\n\t__ret := C.nvmlGpuInstanceGetComputeInstanceRemainingCapacity(cnvmlGpuInstance, cProfileId, cCount)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlGpuInstanceGetComputeInstancePossiblePlacements function as declared in nvml/nvml.h\nfunc nvmlGpuInstanceGetComputeInstancePossiblePlacements(nvmlGpuInstance nvmlGpuInstance, ProfileId uint32, Placements *ComputeInstancePlacement, Count *uint32) Return {\n\tcnvmlGpuInstance, _ := *(*C.nvmlGpuInstance_t)(unsafe.Pointer(&nvmlGpuInstance)), cgoAllocsUnknown\n\tcProfileId, _ := (C.uint)(ProfileId), cgoAllocsUnknown\n\tcPlacements, _ := (*C.nvmlComputeInstancePlacement_t)(unsafe.Pointer(Placements)), cgoAllocsUnknown\n\tcCount, _ := (*C.uint)(unsafe.Pointer(Count)), cgoAllocsUnknown\n\t__ret := C.nvmlGpuInstanceGetComputeInstancePossiblePlacements(cnvmlGpuInstance, cProfileId, cPlacements, cCount)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlGpuInstanceCreateComputeInstance function as declared in nvml/nvml.h\nfunc nvmlGpuInstanceCreateComputeInstance(nvmlGpuInstance nvmlGpuInstance, ProfileId uint32, nvmlComputeInstance *nvmlComputeInstance) Return {\n\tcnvmlGpuInstance, _ := *(*C.nvmlGpuInstance_t)(unsafe.Pointer(&nvmlGpuInstance)), cgoAllocsUnknown\n\tcProfileId, _ := (C.uint)(ProfileId), cgoAllocsUnknown\n\tcnvmlComputeInstance, _ := (*C.nvmlComputeInstance_t)(unsafe.Pointer(nvmlComputeInstance)), cgoAllocsUnknown\n\t__ret := C.nvmlGpuInstanceCreateComputeInstance(cnvmlGpuInstance, cProfileId, cnvmlComputeInstance)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlGpuInstanceCreateComputeInstanceWithPlacement function as declared in nvml/nvml.h\nfunc nvmlGpuInstanceCreateComputeInstanceWithPlacement(nvmlGpuInstance nvmlGpuInstance, ProfileId uint32, Placement *ComputeInstancePlacement, nvmlComputeInstance *nvmlComputeInstance) Return {\n\tcnvmlGpuInstance, _ := *(*C.nvmlGpuInstance_t)(unsafe.Pointer(&nvmlGpuInstance)), cgoAllocsUnknown\n\tcProfileId, _ := (C.uint)(ProfileId), cgoAllocsUnknown\n\tcPlacement, _ := (*C.nvmlComputeInstancePlacement_t)(unsafe.Pointer(Placement)), cgoAllocsUnknown\n\tcnvmlComputeInstance, _ := (*C.nvmlComputeInstance_t)(unsafe.Pointer(nvmlComputeInstance)), cgoAllocsUnknown\n\t__ret := C.nvmlGpuInstanceCreateComputeInstanceWithPlacement(cnvmlGpuInstance, cProfileId, cPlacement, cnvmlComputeInstance)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlComputeInstanceDestroy function as declared in nvml/nvml.h\nfunc nvmlComputeInstanceDestroy(nvmlComputeInstance nvmlComputeInstance) Return {\n\tcnvmlComputeInstance, _ := *(*C.nvmlComputeInstance_t)(unsafe.Pointer(&nvmlComputeInstance)), cgoAllocsUnknown\n\t__ret := C.nvmlComputeInstanceDestroy(cnvmlComputeInstance)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlGpuInstanceGetComputeInstances function as declared in nvml/nvml.h\nfunc nvmlGpuInstanceGetComputeInstances(nvmlGpuInstance nvmlGpuInstance, ProfileId uint32, ComputeInstances *nvmlComputeInstance, Count *uint32) Return {\n\tcnvmlGpuInstance, _ := *(*C.nvmlGpuInstance_t)(unsafe.Pointer(&nvmlGpuInstance)), cgoAllocsUnknown\n\tcProfileId, _ := (C.uint)(ProfileId), cgoAllocsUnknown\n\tcComputeInstances, _ := (*C.nvmlComputeInstance_t)(unsafe.Pointer(ComputeInstances)), cgoAllocsUnknown\n\tcCount, _ := (*C.uint)(unsafe.Pointer(Count)), cgoAllocsUnknown\n\t__ret := C.nvmlGpuInstanceGetComputeInstances(cnvmlGpuInstance, cProfileId, cComputeInstances, cCount)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlGpuInstanceGetComputeInstanceById function as declared in nvml/nvml.h\nfunc nvmlGpuInstanceGetComputeInstanceById(nvmlGpuInstance nvmlGpuInstance, Id uint32, nvmlComputeInstance *nvmlComputeInstance) Return {\n\tcnvmlGpuInstance, _ := *(*C.nvmlGpuInstance_t)(unsafe.Pointer(&nvmlGpuInstance)), cgoAllocsUnknown\n\tcId, _ := (C.uint)(Id), cgoAllocsUnknown\n\tcnvmlComputeInstance, _ := (*C.nvmlComputeInstance_t)(unsafe.Pointer(nvmlComputeInstance)), cgoAllocsUnknown\n\t__ret := C.nvmlGpuInstanceGetComputeInstanceById(cnvmlGpuInstance, cId, cnvmlComputeInstance)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlComputeInstanceGetInfo_v2 function as declared in nvml/nvml.h\nfunc nvmlComputeInstanceGetInfo_v2(nvmlComputeInstance nvmlComputeInstance, Info *nvmlComputeInstanceInfo) Return {\n\tcnvmlComputeInstance, _ := *(*C.nvmlComputeInstance_t)(unsafe.Pointer(&nvmlComputeInstance)), cgoAllocsUnknown\n\tcInfo, _ := (*C.nvmlComputeInstanceInfo_t)(unsafe.Pointer(Info)), cgoAllocsUnknown\n\t__ret := C.nvmlComputeInstanceGetInfo_v2(cnvmlComputeInstance, cInfo)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceIsMigDeviceHandle function as declared in nvml/nvml.h\nfunc nvmlDeviceIsMigDeviceHandle(nvmlDevice nvmlDevice, IsMigDevice *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcIsMigDevice, _ := (*C.uint)(unsafe.Pointer(IsMigDevice)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceIsMigDeviceHandle(cnvmlDevice, cIsMigDevice)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetGpuInstanceId function as declared in nvml/nvml.h\nfunc nvmlDeviceGetGpuInstanceId(nvmlDevice nvmlDevice, Id *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcId, _ := (*C.uint)(unsafe.Pointer(Id)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetGpuInstanceId(cnvmlDevice, cId)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetComputeInstanceId function as declared in nvml/nvml.h\nfunc nvmlDeviceGetComputeInstanceId(nvmlDevice nvmlDevice, Id *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcId, _ := (*C.uint)(unsafe.Pointer(Id)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetComputeInstanceId(cnvmlDevice, cId)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetMaxMigDeviceCount function as declared in nvml/nvml.h\nfunc nvmlDeviceGetMaxMigDeviceCount(nvmlDevice nvmlDevice, Count *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcCount, _ := (*C.uint)(unsafe.Pointer(Count)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetMaxMigDeviceCount(cnvmlDevice, cCount)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetMigDeviceHandleByIndex function as declared in nvml/nvml.h\nfunc nvmlDeviceGetMigDeviceHandleByIndex(nvmlDevice nvmlDevice, Index uint32, MigDevice *nvmlDevice) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcIndex, _ := (C.uint)(Index), cgoAllocsUnknown\n\tcMigDevice, _ := (*C.nvmlDevice_t)(unsafe.Pointer(MigDevice)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetMigDeviceHandleByIndex(cnvmlDevice, cIndex, cMigDevice)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetDeviceHandleFromMigDeviceHandle function as declared in nvml/nvml.h\nfunc nvmlDeviceGetDeviceHandleFromMigDeviceHandle(MigDevice nvmlDevice, nvmlDevice *nvmlDevice) Return {\n\tcMigDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&MigDevice)), cgoAllocsUnknown\n\tcnvmlDevice, _ := (*C.nvmlDevice_t)(unsafe.Pointer(nvmlDevice)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetDeviceHandleFromMigDeviceHandle(cMigDevice, cnvmlDevice)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlGpmMetricsGet function as declared in nvml/nvml.h\nfunc nvmlGpmMetricsGet(MetricsGet *nvmlGpmMetricsGetType) Return {\n\tcMetricsGet, _ := (*C.nvmlGpmMetricsGet_t)(unsafe.Pointer(MetricsGet)), cgoAllocsUnknown\n\t__ret := C.nvmlGpmMetricsGet(cMetricsGet)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlGpmSampleFree function as declared in nvml/nvml.h\nfunc nvmlGpmSampleFree(nvmlGpmSample nvmlGpmSample) Return {\n\tcnvmlGpmSample, _ := *(*C.nvmlGpmSample_t)(unsafe.Pointer(&nvmlGpmSample)), cgoAllocsUnknown\n\t__ret := C.nvmlGpmSampleFree(cnvmlGpmSample)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlGpmSampleAlloc function as declared in nvml/nvml.h\nfunc nvmlGpmSampleAlloc(nvmlGpmSample *nvmlGpmSample) Return {\n\tcnvmlGpmSample, _ := (*C.nvmlGpmSample_t)(unsafe.Pointer(nvmlGpmSample)), cgoAllocsUnknown\n\t__ret := C.nvmlGpmSampleAlloc(cnvmlGpmSample)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlGpmSampleGet function as declared in nvml/nvml.h\nfunc nvmlGpmSampleGet(nvmlDevice nvmlDevice, nvmlGpmSample nvmlGpmSample) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcnvmlGpmSample, _ := *(*C.nvmlGpmSample_t)(unsafe.Pointer(&nvmlGpmSample)), cgoAllocsUnknown\n\t__ret := C.nvmlGpmSampleGet(cnvmlDevice, cnvmlGpmSample)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlGpmMigSampleGet function as declared in nvml/nvml.h\nfunc nvmlGpmMigSampleGet(nvmlDevice nvmlDevice, GpuInstanceId uint32, nvmlGpmSample nvmlGpmSample) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcGpuInstanceId, _ := (C.uint)(GpuInstanceId), cgoAllocsUnknown\n\tcnvmlGpmSample, _ := *(*C.nvmlGpmSample_t)(unsafe.Pointer(&nvmlGpmSample)), cgoAllocsUnknown\n\t__ret := C.nvmlGpmMigSampleGet(cnvmlDevice, cGpuInstanceId, cnvmlGpmSample)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlGpmQueryDeviceSupport function as declared in nvml/nvml.h\nfunc nvmlGpmQueryDeviceSupport(nvmlDevice nvmlDevice, GpmSupport *GpmSupport) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcGpmSupport, _ := (*C.nvmlGpmSupport_t)(unsafe.Pointer(GpmSupport)), cgoAllocsUnknown\n\t__ret := C.nvmlGpmQueryDeviceSupport(cnvmlDevice, cGpmSupport)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlGpmQueryIfStreamingEnabled function as declared in nvml/nvml.h\nfunc nvmlGpmQueryIfStreamingEnabled(nvmlDevice nvmlDevice, State *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcState, _ := (*C.uint)(unsafe.Pointer(State)), cgoAllocsUnknown\n\t__ret := C.nvmlGpmQueryIfStreamingEnabled(cnvmlDevice, cState)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlGpmSetStreamingEnabled function as declared in nvml/nvml.h\nfunc nvmlGpmSetStreamingEnabled(nvmlDevice nvmlDevice, State uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcState, _ := (C.uint)(State), cgoAllocsUnknown\n\t__ret := C.nvmlGpmSetStreamingEnabled(cnvmlDevice, cState)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetCapabilities function as declared in nvml/nvml.h\nfunc nvmlDeviceGetCapabilities(nvmlDevice nvmlDevice, Caps *DeviceCapabilities) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcCaps, _ := (*C.nvmlDeviceCapabilities_t)(unsafe.Pointer(Caps)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetCapabilities(cnvmlDevice, cCaps)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceWorkloadPowerProfileGetProfilesInfo function as declared in nvml/nvml.h\nfunc nvmlDeviceWorkloadPowerProfileGetProfilesInfo(nvmlDevice nvmlDevice, ProfilesInfo *WorkloadPowerProfileProfilesInfo) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcProfilesInfo, _ := (*C.nvmlWorkloadPowerProfileProfilesInfo_t)(unsafe.Pointer(ProfilesInfo)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceWorkloadPowerProfileGetProfilesInfo(cnvmlDevice, cProfilesInfo)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceWorkloadPowerProfileGetCurrentProfiles function as declared in nvml/nvml.h\nfunc nvmlDeviceWorkloadPowerProfileGetCurrentProfiles(nvmlDevice nvmlDevice, CurrentProfiles *WorkloadPowerProfileCurrentProfiles) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcCurrentProfiles, _ := (*C.nvmlWorkloadPowerProfileCurrentProfiles_t)(unsafe.Pointer(CurrentProfiles)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceWorkloadPowerProfileGetCurrentProfiles(cnvmlDevice, cCurrentProfiles)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceWorkloadPowerProfileSetRequestedProfiles function as declared in nvml/nvml.h\nfunc nvmlDeviceWorkloadPowerProfileSetRequestedProfiles(nvmlDevice nvmlDevice, RequestedProfiles *WorkloadPowerProfileRequestedProfiles) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcRequestedProfiles, _ := (*C.nvmlWorkloadPowerProfileRequestedProfiles_t)(unsafe.Pointer(RequestedProfiles)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceWorkloadPowerProfileSetRequestedProfiles(cnvmlDevice, cRequestedProfiles)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceWorkloadPowerProfileClearRequestedProfiles function as declared in nvml/nvml.h\nfunc nvmlDeviceWorkloadPowerProfileClearRequestedProfiles(nvmlDevice nvmlDevice, RequestedProfiles *WorkloadPowerProfileRequestedProfiles) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcRequestedProfiles, _ := (*C.nvmlWorkloadPowerProfileRequestedProfiles_t)(unsafe.Pointer(RequestedProfiles)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceWorkloadPowerProfileClearRequestedProfiles(cnvmlDevice, cRequestedProfiles)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDevicePowerSmoothingActivatePresetProfile function as declared in nvml/nvml.h\nfunc nvmlDevicePowerSmoothingActivatePresetProfile(nvmlDevice nvmlDevice, Profile *PowerSmoothingProfile) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcProfile, _ := (*C.nvmlPowerSmoothingProfile_t)(unsafe.Pointer(Profile)), cgoAllocsUnknown\n\t__ret := C.nvmlDevicePowerSmoothingActivatePresetProfile(cnvmlDevice, cProfile)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDevicePowerSmoothingUpdatePresetProfileParam function as declared in nvml/nvml.h\nfunc nvmlDevicePowerSmoothingUpdatePresetProfileParam(nvmlDevice nvmlDevice, Profile *PowerSmoothingProfile) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcProfile, _ := (*C.nvmlPowerSmoothingProfile_t)(unsafe.Pointer(Profile)), cgoAllocsUnknown\n\t__ret := C.nvmlDevicePowerSmoothingUpdatePresetProfileParam(cnvmlDevice, cProfile)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDevicePowerSmoothingSetState function as declared in nvml/nvml.h\nfunc nvmlDevicePowerSmoothingSetState(nvmlDevice nvmlDevice, State *PowerSmoothingState) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcState, _ := (*C.nvmlPowerSmoothingState_t)(unsafe.Pointer(State)), cgoAllocsUnknown\n\t__ret := C.nvmlDevicePowerSmoothingSetState(cnvmlDevice, cState)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetSramUniqueUncorrectedEccErrorCounts function as declared in nvml/nvml.h\nfunc nvmlDeviceGetSramUniqueUncorrectedEccErrorCounts(nvmlDevice nvmlDevice, ErrorCounts *EccSramUniqueUncorrectedErrorCounts) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcErrorCounts, _ := (*C.nvmlEccSramUniqueUncorrectedErrorCounts_t)(unsafe.Pointer(ErrorCounts)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetSramUniqueUncorrectedEccErrorCounts(cnvmlDevice, cErrorCounts)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlInit_v1 function as declared in nvml/nvml.h\nfunc nvmlInit_v1() Return {\n\t__ret := C.nvmlInit()\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetCount_v1 function as declared in nvml/nvml.h\nfunc nvmlDeviceGetCount_v1(DeviceCount *uint32) Return {\n\tcDeviceCount, _ := (*C.uint)(unsafe.Pointer(DeviceCount)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetCount(cDeviceCount)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetHandleByIndex_v1 function as declared in nvml/nvml.h\nfunc nvmlDeviceGetHandleByIndex_v1(Index uint32, nvmlDevice *nvmlDevice) Return {\n\tcIndex, _ := (C.uint)(Index), cgoAllocsUnknown\n\tcnvmlDevice, _ := (*C.nvmlDevice_t)(unsafe.Pointer(nvmlDevice)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetHandleByIndex(cIndex, cnvmlDevice)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetHandleByPciBusId_v1 function as declared in nvml/nvml.h\nfunc nvmlDeviceGetHandleByPciBusId_v1(PciBusId string, nvmlDevice *nvmlDevice) Return {\n\tcPciBusId, _ := unpackPCharString(PciBusId)\n\tcnvmlDevice, _ := (*C.nvmlDevice_t)(unsafe.Pointer(nvmlDevice)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetHandleByPciBusId(cPciBusId, cnvmlDevice)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetPciInfo_v1 function as declared in nvml/nvml.h\nfunc nvmlDeviceGetPciInfo_v1(nvmlDevice nvmlDevice, Pci *PciInfo) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcPci, _ := (*C.nvmlPciInfo_t)(unsafe.Pointer(Pci)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetPciInfo(cnvmlDevice, cPci)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetPciInfo_v2 function as declared in nvml/nvml.h\nfunc nvmlDeviceGetPciInfo_v2(nvmlDevice nvmlDevice, Pci *PciInfo) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcPci, _ := (*C.nvmlPciInfo_t)(unsafe.Pointer(Pci)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetPciInfo_v2(cnvmlDevice, cPci)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetNvLinkRemotePciInfo_v1 function as declared in nvml/nvml.h\nfunc nvmlDeviceGetNvLinkRemotePciInfo_v1(nvmlDevice nvmlDevice, Link uint32, Pci *PciInfo) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcLink, _ := (C.uint)(Link), cgoAllocsUnknown\n\tcPci, _ := (*C.nvmlPciInfo_t)(unsafe.Pointer(Pci)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetNvLinkRemotePciInfo(cnvmlDevice, cLink, cPci)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetGridLicensableFeatures_v1 function as declared in nvml/nvml.h\nfunc nvmlDeviceGetGridLicensableFeatures_v1(nvmlDevice nvmlDevice, PGridLicensableFeatures *GridLicensableFeatures) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcPGridLicensableFeatures, _ := (*C.nvmlGridLicensableFeatures_t)(unsafe.Pointer(PGridLicensableFeatures)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetGridLicensableFeatures(cnvmlDevice, cPGridLicensableFeatures)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetGridLicensableFeatures_v2 function as declared in nvml/nvml.h\nfunc nvmlDeviceGetGridLicensableFeatures_v2(nvmlDevice nvmlDevice, PGridLicensableFeatures *GridLicensableFeatures) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcPGridLicensableFeatures, _ := (*C.nvmlGridLicensableFeatures_t)(unsafe.Pointer(PGridLicensableFeatures)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetGridLicensableFeatures_v2(cnvmlDevice, cPGridLicensableFeatures)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetGridLicensableFeatures_v3 function as declared in nvml/nvml.h\nfunc nvmlDeviceGetGridLicensableFeatures_v3(nvmlDevice nvmlDevice, PGridLicensableFeatures *GridLicensableFeatures) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcPGridLicensableFeatures, _ := (*C.nvmlGridLicensableFeatures_t)(unsafe.Pointer(PGridLicensableFeatures)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetGridLicensableFeatures_v3(cnvmlDevice, cPGridLicensableFeatures)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceRemoveGpu_v1 function as declared in nvml/nvml.h\nfunc nvmlDeviceRemoveGpu_v1(PciInfo *PciInfo) Return {\n\tcPciInfo, _ := (*C.nvmlPciInfo_t)(unsafe.Pointer(PciInfo)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceRemoveGpu(cPciInfo)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlEventSetWait_v1 function as declared in nvml/nvml.h\nfunc nvmlEventSetWait_v1(Set nvmlEventSet, Data *nvmlEventData, Timeoutms uint32) Return {\n\tcSet, _ := *(*C.nvmlEventSet_t)(unsafe.Pointer(&Set)), cgoAllocsUnknown\n\tcData, _ := (*C.nvmlEventData_t)(unsafe.Pointer(Data)), cgoAllocsUnknown\n\tcTimeoutms, _ := (C.uint)(Timeoutms), cgoAllocsUnknown\n\t__ret := C.nvmlEventSetWait(cSet, cData, cTimeoutms)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetAttributes_v1 function as declared in nvml/nvml.h\nfunc nvmlDeviceGetAttributes_v1(nvmlDevice nvmlDevice, Attributes *DeviceAttributes) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcAttributes, _ := (*C.nvmlDeviceAttributes_t)(unsafe.Pointer(Attributes)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetAttributes(cnvmlDevice, cAttributes)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlComputeInstanceGetInfo_v1 function as declared in nvml/nvml.h\nfunc nvmlComputeInstanceGetInfo_v1(nvmlComputeInstance nvmlComputeInstance, Info *nvmlComputeInstanceInfo) Return {\n\tcnvmlComputeInstance, _ := *(*C.nvmlComputeInstance_t)(unsafe.Pointer(&nvmlComputeInstance)), cgoAllocsUnknown\n\tcInfo, _ := (*C.nvmlComputeInstanceInfo_t)(unsafe.Pointer(Info)), cgoAllocsUnknown\n\t__ret := C.nvmlComputeInstanceGetInfo(cnvmlComputeInstance, cInfo)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetComputeRunningProcesses_v1 function as declared in nvml/nvml.h\nfunc nvmlDeviceGetComputeRunningProcesses_v1(nvmlDevice nvmlDevice, InfoCount *uint32, Infos *ProcessInfo_v1) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcInfoCount, _ := (*C.uint)(unsafe.Pointer(InfoCount)), cgoAllocsUnknown\n\tcInfos, _ := (*C.nvmlProcessInfo_v1_t)(unsafe.Pointer(Infos)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetComputeRunningProcesses(cnvmlDevice, cInfoCount, cInfos)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetComputeRunningProcesses_v2 function as declared in nvml/nvml.h\nfunc nvmlDeviceGetComputeRunningProcesses_v2(nvmlDevice nvmlDevice, InfoCount *uint32, Infos *ProcessInfo_v2) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcInfoCount, _ := (*C.uint)(unsafe.Pointer(InfoCount)), cgoAllocsUnknown\n\tcInfos, _ := (*C.nvmlProcessInfo_v2_t)(unsafe.Pointer(Infos)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetComputeRunningProcesses_v2(cnvmlDevice, cInfoCount, cInfos)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetGraphicsRunningProcesses_v1 function as declared in nvml/nvml.h\nfunc nvmlDeviceGetGraphicsRunningProcesses_v1(nvmlDevice nvmlDevice, InfoCount *uint32, Infos *ProcessInfo_v1) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcInfoCount, _ := (*C.uint)(unsafe.Pointer(InfoCount)), cgoAllocsUnknown\n\tcInfos, _ := (*C.nvmlProcessInfo_v1_t)(unsafe.Pointer(Infos)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetGraphicsRunningProcesses(cnvmlDevice, cInfoCount, cInfos)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetGraphicsRunningProcesses_v2 function as declared in nvml/nvml.h\nfunc nvmlDeviceGetGraphicsRunningProcesses_v2(nvmlDevice nvmlDevice, InfoCount *uint32, Infos *ProcessInfo_v2) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcInfoCount, _ := (*C.uint)(unsafe.Pointer(InfoCount)), cgoAllocsUnknown\n\tcInfos, _ := (*C.nvmlProcessInfo_v2_t)(unsafe.Pointer(Infos)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetGraphicsRunningProcesses_v2(cnvmlDevice, cInfoCount, cInfos)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetMPSComputeRunningProcesses_v1 function as declared in nvml/nvml.h\nfunc nvmlDeviceGetMPSComputeRunningProcesses_v1(nvmlDevice nvmlDevice, InfoCount *uint32, Infos *ProcessInfo_v1) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcInfoCount, _ := (*C.uint)(unsafe.Pointer(InfoCount)), cgoAllocsUnknown\n\tcInfos, _ := (*C.nvmlProcessInfo_v1_t)(unsafe.Pointer(Infos)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetMPSComputeRunningProcesses(cnvmlDevice, cInfoCount, cInfos)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetMPSComputeRunningProcesses_v2 function as declared in nvml/nvml.h\nfunc nvmlDeviceGetMPSComputeRunningProcesses_v2(nvmlDevice nvmlDevice, InfoCount *uint32, Infos *ProcessInfo_v2) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcInfoCount, _ := (*C.uint)(unsafe.Pointer(InfoCount)), cgoAllocsUnknown\n\tcInfos, _ := (*C.nvmlProcessInfo_v2_t)(unsafe.Pointer(Infos)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetMPSComputeRunningProcesses_v2(cnvmlDevice, cInfoCount, cInfos)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetGpuInstancePossiblePlacements_v1 function as declared in nvml/nvml.h\nfunc nvmlDeviceGetGpuInstancePossiblePlacements_v1(nvmlDevice nvmlDevice, ProfileId uint32, Placements *GpuInstancePlacement, Count *uint32) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcProfileId, _ := (C.uint)(ProfileId), cgoAllocsUnknown\n\tcPlacements, _ := (*C.nvmlGpuInstancePlacement_t)(unsafe.Pointer(Placements)), cgoAllocsUnknown\n\tcCount, _ := (*C.uint)(unsafe.Pointer(Count)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetGpuInstancePossiblePlacements(cnvmlDevice, cProfileId, cPlacements, cCount)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlVgpuInstanceGetLicenseInfo_v1 function as declared in nvml/nvml.h\nfunc nvmlVgpuInstanceGetLicenseInfo_v1(nvmlVgpuInstance nvmlVgpuInstance, LicenseInfo *VgpuLicenseInfo) Return {\n\tcnvmlVgpuInstance, _ := (C.nvmlVgpuInstance_t)(nvmlVgpuInstance), cgoAllocsUnknown\n\tcLicenseInfo, _ := (*C.nvmlVgpuLicenseInfo_t)(unsafe.Pointer(LicenseInfo)), cgoAllocsUnknown\n\t__ret := C.nvmlVgpuInstanceGetLicenseInfo(cnvmlVgpuInstance, cLicenseInfo)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n\n// nvmlDeviceGetDriverModel_v1 function as declared in nvml/nvml.h\nfunc nvmlDeviceGetDriverModel_v1(nvmlDevice nvmlDevice, Current *DriverModel, Pending *DriverModel) Return {\n\tcnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown\n\tcCurrent, _ := (*C.nvmlDriverModel_t)(unsafe.Pointer(Current)), cgoAllocsUnknown\n\tcPending, _ := (*C.nvmlDriverModel_t)(unsafe.Pointer(Pending)), cgoAllocsUnknown\n\t__ret := C.nvmlDeviceGetDriverModel(cnvmlDevice, cCurrent, cPending)\n\t__v := (Return)(__ret)\n\treturn __v\n}\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvml/pkg/nvml/nvml.h",
    "content": "/*** NVML VERSION: 13.0.39 ***/\n/*** From https://developer.download.nvidia.com/compute/cuda/redist/cuda_nvml_dev/linux-x86_64/cuda_nvml_dev-linux-x86_64-13.0.39-archive.tar.xz ***/\n/*\n * Copyright 1993-2025 NVIDIA Corporation.  All rights reserved.\n *\n * NOTICE TO USER:\n *\n * This source code is subject to NVIDIA ownership rights under U.S. and\n * international Copyright laws.  Users and possessors of this source code\n * are hereby granted a nonexclusive, royalty-free license to use this code\n * in individual and commercial software.\n *\n * NVIDIA MAKES NO REPRESENTATION ABOUT THE SUITABILITY OF THIS SOURCE\n * CODE FOR ANY PURPOSE.  IT IS PROVIDED \"AS IS\" WITHOUT EXPRESS OR\n * IMPLIED WARRANTY OF ANY KIND.  NVIDIA DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOURCE CODE, INCLUDING ALL IMPLIED WARRANTIES OF\n * MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE.\n * IN NO EVENT SHALL NVIDIA BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL,\n * OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\n * OF USE, DATA OR PROFITS,  WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE\n * OR OTHER TORTIOUS ACTION,  ARISING OUT OF OR IN CONNECTION WITH THE USE\n * OR PERFORMANCE OF THIS SOURCE CODE.\n *\n * U.S. Government End Users.   This source code is a \"commercial item\" as\n * that term is defined at  48 C.F.R. 2.101 (OCT 1995), consisting  of\n * \"commercial computer  software\"  and \"commercial computer software\n * documentation\" as such terms are  used in 48 C.F.R. 12.212 (SEPT 1995)\n * and is provided to the U.S. Government only as a commercial end item.\n * Consistent with 48 C.F.R.12.212 and 48 C.F.R. 227.7202-1 through\n * 227.7202-4 (JUNE 1995), all U.S. Government End Users acquire the\n * source code with only those rights set forth herein.\n *\n * Any use of this source code in individual and commercial software must\n * include, in the user documentation and internal comments to the code,\n * the above Disclaimer and U.S. Government End Users Notice.\n */\n\n/*\nNVML API Reference\n\nThe NVIDIA Management Library (NVML) is a C-based programmatic interface for monitoring and\nmanaging various states within NVIDIA Tesla &tm; GPUs. It is intended to be a platform for building\n3rd party applications, and is also the underlying library for the NVIDIA-supported nvidia-smi\ntool. NVML is thread-safe so it is safe to make simultaneous NVML calls from multiple threads.\n\nAPI Documentation\n\nSupported platforms:\n- Windows:     Windows Server 2008 R2 64bit, Windows Server 2012 R2 64bit, Windows 7 64bit, Windows 8 64bit, Windows 10 64bit\n- Linux:       32-bit and 64-bit\n- Hypervisors: Windows Server 2008R2/2012 Hyper-V 64bit, Citrix XenServer 6.2 SP1+, VMware ESX 5.1/5.5\n\nSupported products:\n- Full Support\n    - All Tesla products, starting with the Fermi architecture\n    - All Quadro products, starting with the Fermi architecture\n    - All vGPU Software products, starting with the Kepler architecture\n    - Selected GeForce Titan products\n- Limited Support\n    - All Geforce products, starting with the Fermi architecture\n\nThe NVML library can be found at \\%ProgramW6432\\%\\\\\"NVIDIA Corporation\"\\\\NVSMI\\\\ on Windows. It is\nnot be added to the system path by default. To dynamically link to NVML, add this path to the PATH\nenvironmental variable. To dynamically load NVML, call LoadLibrary with this path.\n\nOn Linux the NVML library will be found on the standard library path. For 64 bit Linux, both the 32 bit\nand 64 bit NVML libraries will be installed.\n\nOnline documentation for this library is available at http://docs.nvidia.com/deploy/nvml-api/index.html\n*/\n\n#ifndef __nvml_nvml_h__\n#define __nvml_nvml_h__\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/*\n * On Windows, set up methods for DLL export\n * define NVML_STATIC_IMPORT when using nvml_loader library\n */\n#if defined _WINDOWS\n    #if !defined NVML_STATIC_IMPORT\n        #if defined NVML_LIB_EXPORT\n            #define DECLDIR __declspec(dllexport)\n        #else\n            #define DECLDIR __declspec(dllimport)\n        #endif\n    #else\n        #define DECLDIR\n    #endif\n#else\n    #define DECLDIR\n#endif\n\n/*\n * Deprecation definition. Starting CUDA 13.1 this will change to:\n * #if defined _WINDOWS\n *    #define DEPRECATED(ver) __declspec(deprecated)\n * #else\n *    #define DEPRECATED(ver) __attribute__((deprecated))\n * #endif\n */\n#define DEPRECATED(ver) /* nop in CUDA 13.0, enabled in CUDA 13.1 */\n\n    #define NVML_MCDM_SUPPORT\n\n/**\n * NVML API versioning support\n */\n#define NVML_API_VERSION            13\n#define NVML_API_VERSION_STR        \"13\"\n/**\n * Defining NVML_NO_UNVERSIONED_FUNC_DEFS will disable \"auto upgrading\" of APIs.\n * e.g. the user will have to call nvmlInit_v2 instead of nvmlInit. Enable this\n * guard if you need to support older versions of the API\n */\n#ifndef NVML_NO_UNVERSIONED_FUNC_DEFS\n    #define nvmlInit                                    nvmlInit_v2\n    #define nvmlDeviceGetPciInfo                        nvmlDeviceGetPciInfo_v3\n    #define nvmlDeviceGetCount                          nvmlDeviceGetCount_v2\n    #define nvmlDeviceGetHandleByIndex                  nvmlDeviceGetHandleByIndex_v2\n    #define nvmlDeviceGetHandleByPciBusId               nvmlDeviceGetHandleByPciBusId_v2\n    #define nvmlDeviceGetNvLinkRemotePciInfo            nvmlDeviceGetNvLinkRemotePciInfo_v2\n    #define nvmlDeviceRemoveGpu                         nvmlDeviceRemoveGpu_v2\n    #define nvmlDeviceGetGridLicensableFeatures         nvmlDeviceGetGridLicensableFeatures_v4\n    #define nvmlEventSetWait                            nvmlEventSetWait_v2\n    #define nvmlDeviceGetAttributes                     nvmlDeviceGetAttributes_v2\n    #define nvmlComputeInstanceGetInfo                  nvmlComputeInstanceGetInfo_v2\n    #define nvmlDeviceGetComputeRunningProcesses        nvmlDeviceGetComputeRunningProcesses_v3\n    #define nvmlDeviceGetGraphicsRunningProcesses       nvmlDeviceGetGraphicsRunningProcesses_v3\n    #define nvmlDeviceGetMPSComputeRunningProcesses     nvmlDeviceGetMPSComputeRunningProcesses_v3\n    #define nvmlBlacklistDeviceInfo_t                   nvmlExcludedDeviceInfo_t\n    #define nvmlGetBlacklistDeviceCount                 nvmlGetExcludedDeviceCount\n    #define nvmlGetBlacklistDeviceInfoByIndex           nvmlGetExcludedDeviceInfoByIndex\n    #define nvmlDeviceGetGpuInstancePossiblePlacements  nvmlDeviceGetGpuInstancePossiblePlacements_v2\n    #define nvmlVgpuInstanceGetLicenseInfo              nvmlVgpuInstanceGetLicenseInfo_v2\n    #define nvmlDeviceGetDriverModel                    nvmlDeviceGetDriverModel_v2\n#endif // #ifndef NVML_NO_UNVERSIONED_FUNC_DEFS\n\n#define NVML_STRUCT_VERSION(data, ver) (unsigned int)(sizeof(nvml ## data ## _v ## ver ## _t) | \\\n                                                      (ver << 24U))\n\n/***************************************************************************************************/\n/** @defgroup nvmlDeviceStructs Device Structs\n *  @{\n */\n/***************************************************************************************************/\n\n/**\n * Special constant that some fields take when they are not available.\n * Used when only part of the struct is not available.\n *\n * Each structure explicitly states when to check for this value.\n */\n#define NVML_VALUE_NOT_AVAILABLE (-1)\n\ntypedef struct\n{\n    struct nvmlDevice_st* handle;\n} nvmlDevice_t;\n\ntypedef struct\n{\n    struct nvmlGpuInstance_st* handle;\n} nvmlGpuInstance_t;\n\n/**\n * Buffer size guaranteed to be large enough for pci bus id\n */\n#define NVML_DEVICE_PCI_BUS_ID_BUFFER_SIZE      32\n\n/**\n * Buffer size guaranteed to be large enough for pci bus id for \\p busIdLegacy\n */\n#define NVML_DEVICE_PCI_BUS_ID_BUFFER_V2_SIZE   16\n\n/**\n * PCI information about a GPU device.\n */\ntypedef struct\n{\n    unsigned int version;            //!< The version number of this struct\n    unsigned int domain;             //!< The PCI domain on which the device's bus resides, 0 to 0xffffffff\n    unsigned int bus;                //!< The bus on which the device resides, 0 to 0xff\n    unsigned int device;             //!< The device's id on the bus, 0 to 31\n\n    unsigned int pciDeviceId;        //!< The combined 16-bit device id and 16-bit vendor id\n    unsigned int pciSubSystemId;     //!< The 32-bit Sub System Device ID\n\n    unsigned int baseClass;          //!< The 8-bit PCI base class code\n    unsigned int subClass;           //!< The 8-bit PCI sub class code\n\n    char busId[NVML_DEVICE_PCI_BUS_ID_BUFFER_SIZE]; //!< The tuple domain:bus:device.function PCI identifier (&amp; NULL terminator)\n} nvmlPciInfoExt_v1_t;\ntypedef nvmlPciInfoExt_v1_t  nvmlPciInfoExt_t;\n#define nvmlPciInfoExt_v1 NVML_STRUCT_VERSION(PciInfoExt, 1)\n\n/**\n * PCI information about a GPU device.\n */\ntypedef struct nvmlPciInfo_st\n{\n    char busIdLegacy[NVML_DEVICE_PCI_BUS_ID_BUFFER_V2_SIZE]; //!< The legacy tuple domain:bus:device.function PCI identifier (&amp; NULL terminator)\n    unsigned int domain;             //!< The PCI domain on which the device's bus resides, 0 to 0xffffffff\n    unsigned int bus;                //!< The bus on which the device resides, 0 to 0xff\n    unsigned int device;             //!< The device's id on the bus, 0 to 31\n    unsigned int pciDeviceId;        //!< The combined 16-bit device id and 16-bit vendor id\n\n    // Added in NVML 2.285 API\n    unsigned int pciSubSystemId;     //!< The 32-bit Sub System Device ID\n\n    char busId[NVML_DEVICE_PCI_BUS_ID_BUFFER_SIZE]; //!< The tuple domain:bus:device.function PCI identifier (&amp; NULL terminator)\n} nvmlPciInfo_t;\n\n/**\n * PCI format string for \\p busIdLegacy\n */\n#define NVML_DEVICE_PCI_BUS_ID_LEGACY_FMT           \"%04X:%02X:%02X.0\"\n\n/**\n * PCI format string for \\p busId\n */\n#define NVML_DEVICE_PCI_BUS_ID_FMT                  \"%08X:%02X:%02X.0\"\n\n/**\n * Utility macro for filling the pci bus id format from a nvmlPciInfo_t\n */\n#define NVML_DEVICE_PCI_BUS_ID_FMT_ARGS(pciInfo)    (pciInfo)->domain, \\\n                                                    (pciInfo)->bus,    \\\n                                                    (pciInfo)->device\n\n/**\n * Detailed ECC error counts for a device.\n *\n * @deprecated  Different GPU families can have different memory error counters\n *              See \\ref nvmlDeviceGetMemoryErrorCounter\n */\ntypedef struct nvmlEccErrorCounts_st\n{\n    unsigned long long l1Cache;      //!< L1 cache errors\n    unsigned long long l2Cache;      //!< L2 cache errors\n    unsigned long long deviceMemory; //!< Device memory errors\n    unsigned long long registerFile; //!< Register file errors\n} nvmlEccErrorCounts_t;\n\n/**\n * Utilization information for a device.\n * Each sample period may be between 1 second and 1/6 second, depending on the product being queried.\n */\ntypedef struct nvmlUtilization_st\n{\n    unsigned int gpu;                //!< Percent of time over the past sample period during which one or more kernels was executing on the GPU\n    unsigned int memory;             //!< Percent of time over the past sample period during which global (device) memory was being read or written\n} nvmlUtilization_t;\n\n/**\n * Memory allocation information for a device (v1).\n * The total amount is equal to the sum of the amounts of free and used memory.\n */\ntypedef struct nvmlMemory_st\n{\n    unsigned long long total;        //!< Total physical device memory (in bytes)\n    unsigned long long free;         //!< Unallocated device memory (in bytes)\n    unsigned long long used;         //!< Sum of Reserved and Allocated device memory (in bytes).\n                                     //!< Note that the driver/GPU always sets aside a small amount of memory for bookkeeping\n} nvmlMemory_t;\n\n/**\n * Memory allocation information for a device (v2).\n *\n * Version 2 adds versioning for the struct and the amount of system-reserved memory as an output.\n */\ntypedef struct nvmlMemory_v2_st\n{\n    unsigned int version;            //!< Structure format version (must be 2)\n    unsigned long long total;        //!< Total physical device memory (in bytes)\n    unsigned long long reserved;     //!< Device memory (in bytes) reserved for system use (driver or firmware)\n    unsigned long long free;         //!< Unallocated device memory (in bytes)\n    unsigned long long used;         //!< Allocated device memory (in bytes).\n} nvmlMemory_v2_t;\n\n#define nvmlMemory_v2 NVML_STRUCT_VERSION(Memory, 2)\n\n/**\n * BAR1 Memory allocation Information for a device\n */\ntypedef struct nvmlBAR1Memory_st\n{\n    unsigned long long bar1Total;    //!< Total BAR1 Memory (in bytes)\n    unsigned long long bar1Free;     //!< Unallocated BAR1 Memory (in bytes)\n    unsigned long long bar1Used;     //!< Allocated Used Memory (in bytes)\n}nvmlBAR1Memory_t;\n\n/**\n * Information about running compute processes on the GPU, legacy version\n * for older versions of the API.\n */\ntypedef struct nvmlProcessInfo_v1_st\n{\n    unsigned int        pid;                //!< Process ID\n    unsigned long long  usedGpuMemory;      //!< Amount of used GPU memory in bytes.\n                                            //! Under WDDM, \\ref NVML_VALUE_NOT_AVAILABLE is always reported\n                                            //! because Windows KMD manages all the memory and not the NVIDIA driver\n} nvmlProcessInfo_v1_t;\n\n/**\n * Information about running compute processes on the GPU\n */\ntypedef struct nvmlProcessInfo_v2_st\n{\n    unsigned int        pid;                //!< Process ID\n    unsigned long long  usedGpuMemory;      //!< Amount of used GPU memory in bytes.\n                                            //! Under WDDM, \\ref NVML_VALUE_NOT_AVAILABLE is always reported\n                                            //! because Windows KMD manages all the memory and not the NVIDIA driver\n    unsigned int        gpuInstanceId;      //!< If MIG is enabled, stores a valid GPU instance ID. gpuInstanceId is set to\n                                            //  0xFFFFFFFF otherwise.\n    unsigned int        computeInstanceId;  //!< If MIG is enabled, stores a valid compute instance ID. computeInstanceId is set to\n                                            //  0xFFFFFFFF otherwise.\n} nvmlProcessInfo_v2_t, nvmlProcessInfo_t;\n\n/**\n * Information about running process on the GPU with protected memory\n */\ntypedef struct\n{\n    unsigned int        pid;                      //!< Process ID\n    unsigned long long  usedGpuMemory;            //!< Amount of used GPU memory in bytes.\n                                                  //! Under WDDM, \\ref NVML_VALUE_NOT_AVAILABLE is always reported\n                                                  //! because Windows KMD manages all the memory and not the NVIDIA driver\n    unsigned int        gpuInstanceId;            //!< If MIG is enabled, stores a valid GPU instance ID. gpuInstanceId is\n                                                  //  set to 0xFFFFFFFF otherwise.\n    unsigned int        computeInstanceId;        //!< If MIG is enabled, stores a valid compute instance ID. computeInstanceId\n                                                  //  is set to 0xFFFFFFFF otherwise.\n    unsigned long long  usedGpuCcProtectedMemory; //!< Amount of used GPU conf compute protected memory in bytes.\n} nvmlProcessDetail_v1_t;\n\n/**\n * Information about all running processes on the GPU for the given mode\n */\ntypedef struct\n{\n    unsigned int           version;             //!< Struct version, MUST be nvmlProcessDetailList_v1\n    unsigned int           mode;                //!< Process mode(Compute/Graphics/MPSCompute)\n    unsigned int           numProcArrayEntries; //!< Number of process entries in procArray\n    nvmlProcessDetail_v1_t *procArray;          //!< Process array\n} nvmlProcessDetailList_v1_t;\n\ntypedef nvmlProcessDetailList_v1_t nvmlProcessDetailList_t;\n\n/**\n * nvmlProcessDetailList version\n */\n#define nvmlProcessDetailList_v1 NVML_STRUCT_VERSION(ProcessDetailList, 1)\n\ntypedef struct nvmlDeviceAttributes_st\n{\n    unsigned int multiprocessorCount;       //!< Streaming Multiprocessor count\n    unsigned int sharedCopyEngineCount;     //!< Shared Copy Engine count\n    unsigned int sharedDecoderCount;        //!< Shared Decoder Engine count\n    unsigned int sharedEncoderCount;        //!< Shared Encoder Engine count\n    unsigned int sharedJpegCount;           //!< Shared JPEG Engine count\n    unsigned int sharedOfaCount;            //!< Shared OFA Engine count\n    unsigned int gpuInstanceSliceCount;     //!< GPU instance slice count\n    unsigned int computeInstanceSliceCount; //!< Compute instance slice count\n    unsigned long long memorySizeMB;        //!< Device memory size (in MiB)\n} nvmlDeviceAttributes_t;\n\n/**\n * C2C Mode information for a device\n */\ntypedef struct\n{\n    unsigned int isC2cEnabled;\n} nvmlC2cModeInfo_v1_t;\n\n#define nvmlC2cModeInfo_v1 NVML_STRUCT_VERSION(C2cModeInfo, 1)\n\n/**\n * Enum to represent device addressing mode values\n */\ntypedef enum\n{\n    NVML_DEVICE_ADDRESSING_MODE_NONE = 0,       //!< No active mode\n    NVML_DEVICE_ADDRESSING_MODE_HMM  = 1,       //!< Heterogeneous Memory Management mode\n    NVML_DEVICE_ADDRESSING_MODE_ATS  = 2,       //!< Address Translation Services mode\n} nvmlDeviceAddressingModeType_t;\n\n/**\n * Struct to represent device addressing mode information\n */\ntypedef struct\n{\n    unsigned int version;                           //!< API version\n    unsigned int value;                             //!< One of \\ref nvmlDeviceAddressingModeType_t\n} nvmlDeviceAddressingMode_v1_t;\ntypedef nvmlDeviceAddressingMode_v1_t nvmlDeviceAddressingMode_t;\n\n#define nvmlDeviceAddressingMode_v1 NVML_STRUCT_VERSION(DeviceAddressingMode, 1)\n\n/**\n * Struct to represent the NVML repair status\n */\ntypedef struct\n{\n   unsigned int version;                //!< API version number\n   unsigned int bChannelRepairPending; //!< Reference to \\a unsigned int\n   unsigned int bTpcRepairPending;     //!< Reference to \\a unsigned int\n} nvmlRepairStatus_v1_t;\ntypedef nvmlRepairStatus_v1_t nvmlRepairStatus_t;\n\n#define nvmlRepairStatus_v1 NVML_STRUCT_VERSION(RepairStatus, 1)\n\n/**\n * Possible values that classify the remap availability for each bank. The max\n * field will contain the number of banks that have maximum remap availability\n * (all reserved rows are available). None means that there are no reserved\n * rows available.\n */\ntypedef struct nvmlRowRemapperHistogramValues_st\n{\n    unsigned int max;\n    unsigned int high;\n    unsigned int partial;\n    unsigned int low;\n    unsigned int none;\n} nvmlRowRemapperHistogramValues_t;\n\n/**\n * Enum to represent type of bridge chip\n */\ntypedef enum nvmlBridgeChipType_enum\n{\n    NVML_BRIDGE_CHIP_PLX = 0,\n    NVML_BRIDGE_CHIP_BRO4 = 1\n}nvmlBridgeChipType_t;\n\n/**\n * Maximum number of NvLink links supported\n */\n#define NVML_NVLINK_MAX_LINKS 18\n\n/**\n * Enum to represent the NvLink utilization counter packet units\n */\ntypedef enum nvmlNvLinkUtilizationCountUnits_enum\n{\n    NVML_NVLINK_COUNTER_UNIT_CYCLES =  0,     // count by cycles\n    NVML_NVLINK_COUNTER_UNIT_PACKETS = 1,     // count by packets\n    NVML_NVLINK_COUNTER_UNIT_BYTES   = 2,     // count by bytes\n    NVML_NVLINK_COUNTER_UNIT_RESERVED = 3,    // count reserved for internal use\n    // this must be last\n    NVML_NVLINK_COUNTER_UNIT_COUNT\n} nvmlNvLinkUtilizationCountUnits_t;\n\n/**\n * Enum to represent the NvLink utilization counter packet types to count\n *  ** this is ONLY applicable with the units as packets or bytes\n *  ** as specified in \\a nvmlNvLinkUtilizationCountUnits_t\n *  ** all packet filter descriptions are target GPU centric\n *  ** these can be \"OR'd\" together\n */\ntypedef enum nvmlNvLinkUtilizationCountPktTypes_enum\n{\n    NVML_NVLINK_COUNTER_PKTFILTER_NOP        = 0x1,     // no operation packets\n    NVML_NVLINK_COUNTER_PKTFILTER_READ       = 0x2,     // read packets\n    NVML_NVLINK_COUNTER_PKTFILTER_WRITE      = 0x4,     // write packets\n    NVML_NVLINK_COUNTER_PKTFILTER_RATOM      = 0x8,     // reduction atomic requests\n    NVML_NVLINK_COUNTER_PKTFILTER_NRATOM     = 0x10,    // non-reduction atomic requests\n    NVML_NVLINK_COUNTER_PKTFILTER_FLUSH      = 0x20,    // flush requests\n    NVML_NVLINK_COUNTER_PKTFILTER_RESPDATA   = 0x40,    // responses with data\n    NVML_NVLINK_COUNTER_PKTFILTER_RESPNODATA = 0x80,    // responses without data\n    NVML_NVLINK_COUNTER_PKTFILTER_ALL        = 0xFF     // all packets\n} nvmlNvLinkUtilizationCountPktTypes_t;\n\n/**\n * Struct to define the NVLINK counter controls\n */\ntypedef struct nvmlNvLinkUtilizationControl_st\n{\n    nvmlNvLinkUtilizationCountUnits_t units;\n    nvmlNvLinkUtilizationCountPktTypes_t pktfilter;\n} nvmlNvLinkUtilizationControl_t;\n\n/**\n * Enum to represent NvLink queryable capabilities\n */\ntypedef enum nvmlNvLinkCapability_enum\n{\n    NVML_NVLINK_CAP_P2P_SUPPORTED = 0,     // P2P over NVLink is supported\n    NVML_NVLINK_CAP_SYSMEM_ACCESS = 1,     // Access to system memory is supported\n    NVML_NVLINK_CAP_P2P_ATOMICS   = 2,     // P2P atomics are supported\n    NVML_NVLINK_CAP_SYSMEM_ATOMICS= 3,     // System memory atomics are supported\n    NVML_NVLINK_CAP_SLI_BRIDGE    = 4,     // SLI is supported over this link\n    NVML_NVLINK_CAP_VALID         = 5,     // Link is supported on this device\n    // should be last\n    NVML_NVLINK_CAP_COUNT\n} nvmlNvLinkCapability_t;\n\n/**\n * Enum to represent NvLink queryable error counters\n */\ntypedef enum nvmlNvLinkErrorCounter_enum\n{\n    NVML_NVLINK_ERROR_DL_REPLAY   = 0,     // Data link transmit replay error counter\n    NVML_NVLINK_ERROR_DL_RECOVERY = 1,     // Data link transmit recovery error counter\n    NVML_NVLINK_ERROR_DL_CRC_FLIT = 2,     // Data link receive flow control digit CRC error counter\n    NVML_NVLINK_ERROR_DL_CRC_DATA = 3,     // Data link receive data CRC error counter\n    NVML_NVLINK_ERROR_DL_ECC_DATA = 4,     // Data link receive data ECC error counter\n\n    // this must be last\n    NVML_NVLINK_ERROR_COUNT\n} nvmlNvLinkErrorCounter_t;\n\n/**\n * Enum to represent NvLink's remote device type\n */\ntypedef enum nvmlIntNvLinkDeviceType_enum\n{\n    NVML_NVLINK_DEVICE_TYPE_GPU     = 0x00,\n    NVML_NVLINK_DEVICE_TYPE_IBMNPU  = 0x01,\n    NVML_NVLINK_DEVICE_TYPE_SWITCH  = 0x02,\n    NVML_NVLINK_DEVICE_TYPE_UNKNOWN = 0xFF\n} nvmlIntNvLinkDeviceType_t;\n\n/**\n * Represents level relationships within a system between two GPUs\n * The enums are spaced to allow for future relationships\n */\ntypedef enum nvmlGpuLevel_enum\n{\n    NVML_TOPOLOGY_INTERNAL           = 0, // e.g. Tesla K80\n    NVML_TOPOLOGY_SINGLE             = 10, // all devices that only need traverse a single PCIe switch\n    NVML_TOPOLOGY_MULTIPLE           = 20, // all devices that need not traverse a host bridge\n    NVML_TOPOLOGY_HOSTBRIDGE         = 30, // all devices that are connected to the same host bridge\n    NVML_TOPOLOGY_NODE               = 40, // all devices that are connected to the same NUMA node but possibly multiple host bridges\n    NVML_TOPOLOGY_SYSTEM             = 50  // all devices in the system\n\n    // there is purposefully no COUNT here because of the need for spacing above\n} nvmlGpuTopologyLevel_t;\n\n/* Compatibility for CPU->NODE renaming */\n#define NVML_TOPOLOGY_CPU NVML_TOPOLOGY_NODE\n\n/* P2P Capability Index Status*/\ntypedef enum nvmlGpuP2PStatus_enum\n{\n    NVML_P2P_STATUS_OK     = 0,\n    NVML_P2P_STATUS_CHIPSET_NOT_SUPPORED,\n    NVML_P2P_STATUS_CHIPSET_NOT_SUPPORTED = NVML_P2P_STATUS_CHIPSET_NOT_SUPPORED,\n    NVML_P2P_STATUS_GPU_NOT_SUPPORTED,\n    NVML_P2P_STATUS_IOH_TOPOLOGY_NOT_SUPPORTED,\n    NVML_P2P_STATUS_DISABLED_BY_REGKEY,\n    NVML_P2P_STATUS_NOT_SUPPORTED,\n    NVML_P2P_STATUS_UNKNOWN\n\n} nvmlGpuP2PStatus_t;\n\n/* P2P Capability Index*/\ntypedef enum nvmlGpuP2PCapsIndex_enum\n{\n    NVML_P2P_CAPS_INDEX_READ = 0,\n    NVML_P2P_CAPS_INDEX_WRITE = 1,\n    NVML_P2P_CAPS_INDEX_NVLINK = 2,\n    NVML_P2P_CAPS_INDEX_ATOMICS = 3,\n    NVML_P2P_CAPS_INDEX_PCI = 4,\n    /*\n     * DO NOT USE! NVML_P2P_CAPS_INDEX_PROP is deprecated.\n     * Use NVML_P2P_CAPS_INDEX_PCI instead.\n     */\n    NVML_P2P_CAPS_INDEX_PROP = NVML_P2P_CAPS_INDEX_PCI,\n    NVML_P2P_CAPS_INDEX_UNKNOWN = 5,\n}nvmlGpuP2PCapsIndex_t;\n\n/**\n * Maximum limit on Physical Bridges per Board\n */\n#define NVML_MAX_PHYSICAL_BRIDGE                         (128)\n\n/**\n * Information about the Bridge Chip Firmware\n */\ntypedef struct nvmlBridgeChipInfo_st\n{\n    nvmlBridgeChipType_t type;                  //!< Type of Bridge Chip\n    unsigned int fwVersion;                     //!< Firmware Version. 0=Version is unavailable\n}nvmlBridgeChipInfo_t;\n\n/**\n * This structure stores the complete Hierarchy of the Bridge Chip within the board. The immediate\n * bridge is stored at index 0 of bridgeInfoList, parent to immediate bridge is at index 1 and so forth.\n */\ntypedef struct nvmlBridgeChipHierarchy_st\n{\n    unsigned char  bridgeCount;                 //!< Number of Bridge Chips on the Board\n    nvmlBridgeChipInfo_t bridgeChipInfo[NVML_MAX_PHYSICAL_BRIDGE]; //!< Hierarchy of Bridge Chips on the board\n}nvmlBridgeChipHierarchy_t;\n\n/**\n *  Represents Type of Sampling Event\n */\ntypedef enum nvmlSamplingType_enum\n{\n    NVML_TOTAL_POWER_SAMPLES        = 0, //!< To represent total power drawn by GPU\n    NVML_GPU_UTILIZATION_SAMPLES    = 1, //!< To represent percent of time during which one or more kernels was executing on the GPU\n    NVML_MEMORY_UTILIZATION_SAMPLES = 2, //!< To represent percent of time during which global (device) memory was being read or written\n    NVML_ENC_UTILIZATION_SAMPLES    = 3, //!< To represent percent of time during which NVENC remains busy\n    NVML_DEC_UTILIZATION_SAMPLES    = 4, //!< To represent percent of time during which NVDEC remains busy\n    NVML_PROCESSOR_CLK_SAMPLES      = 5, //!< To represent processor clock samples\n    NVML_MEMORY_CLK_SAMPLES         = 6, //!< To represent memory clock samples\n    NVML_MODULE_POWER_SAMPLES       = 7, //!< To represent module power samples for total module starting Grace Hopper\n    NVML_JPG_UTILIZATION_SAMPLES    = 8, //!< To represent percent of time during which NVJPG remains busy\n    NVML_OFA_UTILIZATION_SAMPLES    = 9, //!< To represent percent of time during which NVOFA remains busy\n\n    // Keep this last\n    NVML_SAMPLINGTYPE_COUNT\n}nvmlSamplingType_t;\n\n/**\n * Represents the queryable PCIe utilization counters\n */\ntypedef enum nvmlPcieUtilCounter_enum\n{\n    NVML_PCIE_UTIL_TX_BYTES             = 0, // 1KB granularity\n    NVML_PCIE_UTIL_RX_BYTES             = 1, // 1KB granularity\n\n    // Keep this last\n    NVML_PCIE_UTIL_COUNT\n} nvmlPcieUtilCounter_t;\n\n/**\n * Represents the type for sample value returned\n */\ntypedef enum nvmlValueType_enum\n{\n    NVML_VALUE_TYPE_DOUBLE = 0,\n    NVML_VALUE_TYPE_UNSIGNED_INT = 1,\n    NVML_VALUE_TYPE_UNSIGNED_LONG = 2,\n    NVML_VALUE_TYPE_UNSIGNED_LONG_LONG = 3,\n    NVML_VALUE_TYPE_SIGNED_LONG_LONG = 4,\n    NVML_VALUE_TYPE_SIGNED_INT = 5,\n    NVML_VALUE_TYPE_UNSIGNED_SHORT = 6,\n\n    // Keep this last\n    NVML_VALUE_TYPE_COUNT\n}nvmlValueType_t;\n\n/**\n * Union to represent different types of Value\n */\ntypedef union nvmlValue_st\n{\n    double dVal;                    //!< If the value is double\n    int siVal;                      //!< If the value is signed int\n    unsigned int uiVal;             //!< If the value is unsigned int\n    unsigned long ulVal;            //!< If the value is unsigned long\n    unsigned long long ullVal;      //!< If the value is unsigned long long\n    signed long long sllVal;        //!< If the value is signed long long\n    unsigned short usVal;           //!< If the value is unsigned short\n}nvmlValue_t;\n\n/**\n * Information for Sample\n */\ntypedef struct nvmlSample_st\n{\n    unsigned long long timeStamp;       //!< CPU Timestamp in microseconds\n    nvmlValue_t sampleValue;            //!< Sample Value\n}nvmlSample_t;\n\n/**\n * Represents type of perf policy for which violation times can be queried\n */\ntypedef enum nvmlPerfPolicyType_enum\n{\n    NVML_PERF_POLICY_POWER = 0,              //!< How long did power violations cause the GPU to be below application clocks\n    NVML_PERF_POLICY_THERMAL = 1,            //!< How long did thermal violations cause the GPU to be below application clocks\n    NVML_PERF_POLICY_SYNC_BOOST = 2,         //!< How long did sync boost cause the GPU to be below application clocks\n    NVML_PERF_POLICY_BOARD_LIMIT = 3,        //!< How long did the board limit cause the GPU to be below application clocks\n    NVML_PERF_POLICY_LOW_UTILIZATION = 4,    //!< How long did low utilization cause the GPU to be below application clocks\n    NVML_PERF_POLICY_RELIABILITY = 5,        //!< How long did the board reliability limit cause the GPU to be below application clocks\n\n    NVML_PERF_POLICY_TOTAL_APP_CLOCKS = 10,  //!< Total time the GPU was held below application clocks by any limiter (0 - 5 above)\n    NVML_PERF_POLICY_TOTAL_BASE_CLOCKS = 11, //!< Total time the GPU was held below base clocks\n\n    // Keep this last\n    NVML_PERF_POLICY_COUNT\n}nvmlPerfPolicyType_t;\n\n/**\n * Struct to hold perf policy violation status data\n */\ntypedef struct nvmlViolationTime_st\n{\n    unsigned long long referenceTime;  //!< referenceTime represents CPU timestamp in microseconds\n    unsigned long long violationTime;  //!< violationTime in Nanoseconds\n}nvmlViolationTime_t;\n\n#define NVML_MAX_THERMAL_SENSORS_PER_GPU  3\n\n/**\n * Represents the thermal sensor targets\n */\ntypedef enum\n{\n    NVML_THERMAL_TARGET_NONE          = 0,\n    NVML_THERMAL_TARGET_GPU           = 1,     //!< GPU core temperature requires NvPhysicalGpuHandle\n    NVML_THERMAL_TARGET_MEMORY        = 2,     //!< GPU memory temperature requires NvPhysicalGpuHandle\n    NVML_THERMAL_TARGET_POWER_SUPPLY  = 4,     //!< GPU power supply temperature requires NvPhysicalGpuHandle\n    NVML_THERMAL_TARGET_BOARD         = 8,     //!< GPU board ambient temperature requires NvPhysicalGpuHandle\n    NVML_THERMAL_TARGET_VCD_BOARD     = 9,     //!< Visual Computing Device Board temperature requires NvVisualComputingDeviceHandle\n    NVML_THERMAL_TARGET_VCD_INLET     = 10,    //!< Visual Computing Device Inlet temperature requires NvVisualComputingDeviceHandle\n    NVML_THERMAL_TARGET_VCD_OUTLET    = 11,    //!< Visual Computing Device Outlet temperature requires NvVisualComputingDeviceHandle\n\n    NVML_THERMAL_TARGET_ALL           = 15,\n    NVML_THERMAL_TARGET_UNKNOWN       = -1,\n} nvmlThermalTarget_t;\n\n/**\n * Represents the thermal sensor controllers\n */\ntypedef enum\n{\n    NVML_THERMAL_CONTROLLER_NONE = 0,\n    NVML_THERMAL_CONTROLLER_GPU_INTERNAL,\n    NVML_THERMAL_CONTROLLER_ADM1032,\n    NVML_THERMAL_CONTROLLER_ADT7461,\n    NVML_THERMAL_CONTROLLER_MAX6649,\n    NVML_THERMAL_CONTROLLER_MAX1617,\n    NVML_THERMAL_CONTROLLER_LM99,\n    NVML_THERMAL_CONTROLLER_LM89,\n    NVML_THERMAL_CONTROLLER_LM64,\n    NVML_THERMAL_CONTROLLER_G781,\n    NVML_THERMAL_CONTROLLER_ADT7473,\n    NVML_THERMAL_CONTROLLER_SBMAX6649,\n    NVML_THERMAL_CONTROLLER_VBIOSEVT,\n    NVML_THERMAL_CONTROLLER_OS,\n    NVML_THERMAL_CONTROLLER_NVSYSCON_CANOAS,\n    NVML_THERMAL_CONTROLLER_NVSYSCON_E551,\n    NVML_THERMAL_CONTROLLER_MAX6649R,\n    NVML_THERMAL_CONTROLLER_ADT7473S,\n    NVML_THERMAL_CONTROLLER_UNKNOWN = -1,\n} nvmlThermalController_t;\n\n/**\n * Struct to hold the thermal sensor settings\n */\ntypedef struct\n{\n    unsigned int   count;\n    struct\n    {\n        nvmlThermalController_t controller;\n        int defaultMinTemp;\n        int defaultMaxTemp;\n        int currentTemp;\n        nvmlThermalTarget_t target;\n    } sensor[NVML_MAX_THERMAL_SENSORS_PER_GPU];\n\n} nvmlGpuThermalSettings_t;\n\n/**\n * Cooler control type\n */\ntypedef enum nvmlCoolerControl_enum\n{\n    NVML_THERMAL_COOLER_SIGNAL_NONE        = 0,    //!< This cooler has no control signal.\n    NVML_THERMAL_COOLER_SIGNAL_TOGGLE      = 1,    //!< This cooler can only be toggled either ON or OFF (eg a switch).\n    NVML_THERMAL_COOLER_SIGNAL_VARIABLE    = 2,    //!< This cooler's level can be adjusted from some minimum to some maximum (eg a knob).\n\n    // Keep this last\n    NVML_THERMAL_COOLER_SIGNAL_COUNT\n} nvmlCoolerControl_t;\n\n/**\n * Cooler's target\n */\ntypedef enum nvmlCoolerTarget_enum\n{\n    NVML_THERMAL_COOLER_TARGET_NONE          = 1 << 0,    //!< This cooler cools nothing.\n    NVML_THERMAL_COOLER_TARGET_GPU           = 1 << 1,    //!< This cooler can cool the GPU.\n    NVML_THERMAL_COOLER_TARGET_MEMORY        = 1 << 2,    //!< This cooler can cool the memory.\n    NVML_THERMAL_COOLER_TARGET_POWER_SUPPLY  = 1 << 3,    //!< This cooler can cool the power supply.\n    NVML_THERMAL_COOLER_TARGET_GPU_RELATED   = (NVML_THERMAL_COOLER_TARGET_GPU | NVML_THERMAL_COOLER_TARGET_MEMORY | NVML_THERMAL_COOLER_TARGET_POWER_SUPPLY)    //!< This cooler cools all of the components related to its target gpu. GPU_RELATED = GPU | MEMORY | POWER_SUPPLY\n} nvmlCoolerTarget_t;\n\ntypedef struct\n{\n    unsigned int version;              //!< the API version number\n    unsigned int index;                //!< the cooler index\n    nvmlCoolerControl_t signalType;    //!< OUT: the cooler's control signal characteristics\n    nvmlCoolerTarget_t target;         //!< OUT: the target that cooler cools\n} nvmlCoolerInfo_v1_t;\ntypedef nvmlCoolerInfo_v1_t nvmlCoolerInfo_t;\n\n#define nvmlCoolerInfo_v1 NVML_STRUCT_VERSION(CoolerInfo, 1)\n\n/**\n * UUID length in ASCII format\n */\n#define NVML_DEVICE_UUID_ASCII_LEN  41\n\n/**\n * UUID length in binary format\n */\n#define NVML_DEVICE_UUID_BINARY_LEN 16\n\n/**\n * Enum to represent different UUID types\n */\ntypedef enum\n{\n    NVML_UUID_TYPE_NONE   = 0,                          //!< Undefined type\n    NVML_UUID_TYPE_ASCII  = 1,                          //!< ASCII format type\n    NVML_UUID_TYPE_BINARY = 2,                          //!< Binary format type\n} nvmlUUIDType_t;\n\n/**\n * Union to represent different UUID values\n */\ntypedef union\n{\n    char str[NVML_DEVICE_UUID_ASCII_LEN];               //!< ASCII format value\n    unsigned char bytes[NVML_DEVICE_UUID_BINARY_LEN];   //!< Binary format value\n} nvmlUUIDValue_t;\n\n/**\n * Struct to represent NVML UUID information\n */\ntypedef struct\n{\n   unsigned int version;                                //!< API version number\n   unsigned int type;                                   //!< One of \\p nvmlUUIDType_t\n   nvmlUUIDValue_t value;                               //!< One of \\p nvmlUUIDValue_t, to be set based on the UUID format\n} nvmlUUID_v1_t;\ntypedef nvmlUUID_v1_t nvmlUUID_t;\n\n#define nvmlUUID_v1 NVML_STRUCT_VERSION(UUID, 1)\n\n/**\n * Struct to represent the NVML PDI information\n */\ntypedef struct\n{\n   unsigned int version;                //!< API version number\n   unsigned long long value;            //!< 64-bit PDI value\n} nvmlPdi_v1_t;\ntypedef nvmlPdi_v1_t nvmlPdi_t;\n\n#define nvmlPdi_v1 NVML_STRUCT_VERSION(Pdi, 1)\n\n/** @} */\n\n/***************************************************************************************************/\n/** @defgroup nvmlDeviceEnumvs Device Enums\n *  @{\n */\n/***************************************************************************************************/\n\n/**\n * Generic enable/disable enum.\n */\ntypedef enum nvmlEnableState_enum\n{\n    NVML_FEATURE_DISABLED    = 0,     //!< Feature disabled\n    NVML_FEATURE_ENABLED     = 1      //!< Feature enabled\n} nvmlEnableState_t;\n\n//! Generic flag used to specify the default behavior of some functions. See description of particular functions for details.\n#define nvmlFlagDefault     0x00\n//! Generic flag used to force some behavior. See description of particular functions for details.\n#define nvmlFlagForce       0x01\n\n/**\n * DRAM Encryption Info\n */\ntypedef struct\n{\n    unsigned int version;              //!< IN - the API version number\n    nvmlEnableState_t encryptionState; //!< IN/OUT - DRAM Encryption state\n} nvmlDramEncryptionInfo_v1_t;\ntypedef nvmlDramEncryptionInfo_v1_t nvmlDramEncryptionInfo_t;\n\n#define nvmlDramEncryptionInfo_v1 NVML_STRUCT_VERSION(DramEncryptionInfo, 1)\n\n/**\n *  * The Brand of the GPU\n *   */\ntypedef enum nvmlBrandType_enum\n{\n    NVML_BRAND_UNKNOWN              = 0,\n    NVML_BRAND_QUADRO               = 1,\n    NVML_BRAND_TESLA                = 2,\n    NVML_BRAND_NVS                  = 3,\n    NVML_BRAND_GRID                 = 4,   // Deprecated from API reporting. Keeping definition for backward compatibility.\n    NVML_BRAND_GEFORCE              = 5,\n    NVML_BRAND_TITAN                = 6,\n    NVML_BRAND_NVIDIA_VAPPS         = 7,   // NVIDIA Virtual Applications\n    NVML_BRAND_NVIDIA_VPC           = 8,   // NVIDIA Virtual PC\n    NVML_BRAND_NVIDIA_VCS           = 9,   // NVIDIA Virtual Compute Server\n    NVML_BRAND_NVIDIA_VWS           = 10,  // NVIDIA RTX Virtual Workstation\n    NVML_BRAND_NVIDIA_CLOUD_GAMING  = 11,  // NVIDIA Cloud Gaming\n    NVML_BRAND_NVIDIA_VGAMING       = NVML_BRAND_NVIDIA_CLOUD_GAMING,  // Deprecated from API reporting. Keeping definition for backward compatibility.\n    NVML_BRAND_QUADRO_RTX           = 12,\n    NVML_BRAND_NVIDIA_RTX           = 13,\n    NVML_BRAND_NVIDIA               = 14,\n    NVML_BRAND_GEFORCE_RTX          = 15,  // Unused\n    NVML_BRAND_TITAN_RTX            = 16,  // Unused\n    // Keep this last\n    NVML_BRAND_COUNT                = 18,\n} nvmlBrandType_t;\n\n/**\n * Temperature thresholds.\n */\ntypedef enum nvmlTemperatureThresholds_enum\n{\n    NVML_TEMPERATURE_THRESHOLD_SHUTDOWN      = 0, // Temperature at which the GPU will\n                                                  // shut down for HW protection\n    NVML_TEMPERATURE_THRESHOLD_SLOWDOWN      = 1, // Temperature at which the GPU will\n                                                  // begin HW slowdown\n    NVML_TEMPERATURE_THRESHOLD_MEM_MAX       = 2, // Memory Temperature at which the GPU will\n                                                  // begin SW slowdown\n    NVML_TEMPERATURE_THRESHOLD_GPU_MAX       = 3, // GPU Temperature at which the GPU\n                                                  // can be throttled below base clock\n    NVML_TEMPERATURE_THRESHOLD_ACOUSTIC_MIN  = 4, // Minimum GPU Temperature that can be\n                                                  // set as acoustic threshold\n    NVML_TEMPERATURE_THRESHOLD_ACOUSTIC_CURR = 5, // Current temperature that is set as\n                                                  // acoustic threshold.\n    NVML_TEMPERATURE_THRESHOLD_ACOUSTIC_MAX  = 6, // Maximum GPU temperature that can be\n                                                  // set as acoustic threshold.\n    NVML_TEMPERATURE_THRESHOLD_GPS_CURR      = 7, // Current temperature that is set as\n                                                  // gps threshold.\n    // Keep this last\n    NVML_TEMPERATURE_THRESHOLD_COUNT\n} nvmlTemperatureThresholds_t;\n\n/**\n * Temperature sensors.\n */\ntypedef enum nvmlTemperatureSensors_enum\n{\n    NVML_TEMPERATURE_GPU      = 0,    //!< Temperature sensor for the GPU die\n\n    // Keep this last\n    NVML_TEMPERATURE_COUNT\n} nvmlTemperatureSensors_t;\n\n/**\n * Margin temperature values\n */\ntypedef struct\n{\n    unsigned int version;  //!< The version number of this struct\n    int marginTemperature; //!< The margin temperature value\n} nvmlMarginTemperature_v1_t;\n\ntypedef nvmlMarginTemperature_v1_t nvmlMarginTemperature_t;\n\n#define nvmlMarginTemperature_v1 NVML_STRUCT_VERSION(MarginTemperature, 1)\n\n/**\n * Compute mode.\n *\n * NVML_COMPUTEMODE_EXCLUSIVE_PROCESS was added in CUDA 4.0.\n * Earlier CUDA versions supported a single exclusive mode,\n * which is equivalent to NVML_COMPUTEMODE_EXCLUSIVE_THREAD in CUDA 4.0 and beyond.\n */\ntypedef enum nvmlComputeMode_enum\n{\n    NVML_COMPUTEMODE_DEFAULT           = 0,  //!< Default compute mode -- multiple contexts per device\n    NVML_COMPUTEMODE_EXCLUSIVE_THREAD  = 1,  //!< Support Removed\n    NVML_COMPUTEMODE_PROHIBITED        = 2,  //!< Compute-prohibited mode -- no contexts per device\n    NVML_COMPUTEMODE_EXCLUSIVE_PROCESS = 3,  //!< Compute-exclusive-process mode -- only one context per device, usable from multiple threads at a time\n\n    // Keep this last\n    NVML_COMPUTEMODE_COUNT\n} nvmlComputeMode_t;\n\n/**\n * Max Clock Monitors available\n */\n#define MAX_CLK_DOMAINS            32\n\n/**\n * Clock Monitor error types\n */\ntypedef struct nvmlClkMonFaultInfo_struct {\n    /**\n     * The Domain which faulted\n     */\n    unsigned int   clkApiDomain;\n\n    /**\n     * Faults Information\n     */\n    unsigned int   clkDomainFaultMask;\n} nvmlClkMonFaultInfo_t;\n\n/**\n * Clock Monitor Status\n */\ntypedef struct nvmlClkMonStatus_status {\n    /**\n     * Fault status Indicator\n     */\n    unsigned int  bGlobalStatus;\n\n    /**\n     * Total faulted domain numbers\n     */\n    unsigned int   clkMonListSize;\n\n    /**\n     * The fault Information structure\n     */\n    nvmlClkMonFaultInfo_t clkMonList[MAX_CLK_DOMAINS];\n} nvmlClkMonStatus_t;\n\n/**\n * ECC bit types.\n *\n * @deprecated See \\ref nvmlMemoryErrorType_t for a more flexible type\n */\n#define nvmlEccBitType_t nvmlMemoryErrorType_t\n\n/**\n * Single bit ECC errors\n *\n * @deprecated Mapped to \\ref NVML_MEMORY_ERROR_TYPE_CORRECTED\n */\n#define NVML_SINGLE_BIT_ECC NVML_MEMORY_ERROR_TYPE_CORRECTED\n\n/**\n * Double bit ECC errors\n *\n * @deprecated Mapped to \\ref NVML_MEMORY_ERROR_TYPE_UNCORRECTED\n */\n#define NVML_DOUBLE_BIT_ECC NVML_MEMORY_ERROR_TYPE_UNCORRECTED\n\n/**\n * Memory error types\n */\ntypedef enum nvmlMemoryErrorType_enum\n{\n    /**\n     * A memory error that was corrected\n     *\n     * For ECC errors, these are single bit errors\n     * For Texture memory, these are errors fixed by resend\n     */\n    NVML_MEMORY_ERROR_TYPE_CORRECTED = 0,\n    /**\n     * A memory error that was not corrected\n     *\n     * For ECC errors, these are double bit errors\n     * For Texture memory, these are errors where the resend fails\n     */\n    NVML_MEMORY_ERROR_TYPE_UNCORRECTED = 1,\n\n    // Keep this last\n    NVML_MEMORY_ERROR_TYPE_COUNT //!< Count of memory error types\n\n} nvmlMemoryErrorType_t;\n\n/**\n * Represents Nvlink Version\n */\ntypedef enum nvmlNvlinkVersion_enum\n{\n    NVML_NVLINK_VERSION_INVALID = 0,\n    NVML_NVLINK_VERSION_1_0     = 1,\n    NVML_NVLINK_VERSION_2_0     = 2,\n    NVML_NVLINK_VERSION_2_2     = 3,\n    NVML_NVLINK_VERSION_3_0     = 4,\n    NVML_NVLINK_VERSION_3_1     = 5,\n    NVML_NVLINK_VERSION_4_0     = 6,\n    NVML_NVLINK_VERSION_5_0     = 7,\n}nvmlNvlinkVersion_t;\n\n/**\n * ECC counter types.\n *\n * Note: Volatile counts are reset each time the driver loads. On Windows this is once per boot. On Linux this can be more frequent.\n *       On Linux the driver unloads when no active clients exist. If persistence mode is enabled or there is always a driver\n *       client active (e.g. X11), then Linux also sees per-boot behavior. If not, volatile counts are reset each time a compute app\n *       is run.\n */\ntypedef enum nvmlEccCounterType_enum\n{\n    NVML_VOLATILE_ECC      = 0,      //!< Volatile counts are reset each time the driver loads.\n    NVML_AGGREGATE_ECC     = 1,      //!< Aggregate counts persist across reboots (i.e. for the lifetime of the device)\n\n    // Keep this last\n    NVML_ECC_COUNTER_TYPE_COUNT      //!< Count of memory counter types\n} nvmlEccCounterType_t;\n\n/**\n * Clock types.\n *\n * All speeds are in Mhz.\n */\ntypedef enum nvmlClockType_enum\n{\n    NVML_CLOCK_GRAPHICS  = 0,        //!< Graphics clock domain\n    NVML_CLOCK_SM        = 1,        //!< SM clock domain\n    NVML_CLOCK_MEM       = 2,        //!< Memory clock domain\n    NVML_CLOCK_VIDEO     = 3,        //!< Video encoder/decoder clock domain\n\n    // Keep this last\n    NVML_CLOCK_COUNT //!< Count of clock types\n} nvmlClockType_t;\n\n/**\n * Clock Ids.  These are used in combination with nvmlClockType_t\n * to specify a single clock value.\n */\ntypedef enum nvmlClockId_enum\n{\n    NVML_CLOCK_ID_CURRENT            = 0,   //!< Current actual clock value\n    NVML_CLOCK_ID_APP_CLOCK_TARGET   = 1,   //!< Target application clock.\n                                            //!< Deprecated, do not use.\n    NVML_CLOCK_ID_APP_CLOCK_DEFAULT  = 2,   //!< Default application clock target\n                                            //!< Deprecated, do not use.\n    NVML_CLOCK_ID_CUSTOMER_BOOST_MAX = 3,   //!< OEM-defined maximum clock rate\n\n    //Keep this last\n    NVML_CLOCK_ID_COUNT //!< Count of Clock Ids.\n} nvmlClockId_t;\n\n/**\n * Driver models.\n *\n * Windows only.\n */\n\ntypedef enum nvmlDriverModel_enum\n{\n    NVML_DRIVER_WDDM      = 0,       //!< WDDM driver model -- GPU treated as a display device\n    NVML_DRIVER_WDM       = 1,       //!< WDM (TCC) model (deprecated) -- GPU treated as a generic compute device\n    NVML_DRIVER_MCDM      = 2        //!< MCDM driver model -- GPU treated as a Microsoft compute device\n} nvmlDriverModel_t;\n\n#define NVML_MAX_GPU_PERF_PSTATES 16\n\n/**\n * Allowed PStates.\n */\ntypedef enum nvmlPStates_enum\n{\n    NVML_PSTATE_0               = 0,       //!< Performance state 0 -- Maximum Performance\n    NVML_PSTATE_1               = 1,       //!< Performance state 1\n    NVML_PSTATE_2               = 2,       //!< Performance state 2\n    NVML_PSTATE_3               = 3,       //!< Performance state 3\n    NVML_PSTATE_4               = 4,       //!< Performance state 4\n    NVML_PSTATE_5               = 5,       //!< Performance state 5\n    NVML_PSTATE_6               = 6,       //!< Performance state 6\n    NVML_PSTATE_7               = 7,       //!< Performance state 7\n    NVML_PSTATE_8               = 8,       //!< Performance state 8\n    NVML_PSTATE_9               = 9,       //!< Performance state 9\n    NVML_PSTATE_10              = 10,      //!< Performance state 10\n    NVML_PSTATE_11              = 11,      //!< Performance state 11\n    NVML_PSTATE_12              = 12,      //!< Performance state 12\n    NVML_PSTATE_13              = 13,      //!< Performance state 13\n    NVML_PSTATE_14              = 14,      //!< Performance state 14\n    NVML_PSTATE_15              = 15,      //!< Performance state 15 -- Minimum Performance\n    NVML_PSTATE_UNKNOWN         = 32       //!< Unknown performance state\n} nvmlPstates_t;\n\n/**\n * Clock offset info.\n */\ntypedef struct\n{\n    unsigned int version; //!< The version number of this struct\n    nvmlClockType_t type;\n    nvmlPstates_t pstate;\n    int clockOffsetMHz;\n    int minClockOffsetMHz;\n    int maxClockOffsetMHz;\n} nvmlClockOffset_v1_t;\n\ntypedef nvmlClockOffset_v1_t nvmlClockOffset_t;\n\n#define nvmlClockOffset_v1 NVML_STRUCT_VERSION(ClockOffset, 1)\n\n/**\n * Fan speed info.\n */\ntypedef struct\n{\n    unsigned int version; //!< the API version number\n    unsigned int fan;     //!< the fan index\n    unsigned int speed;   //!< OUT: the fan speed in RPM\n} nvmlFanSpeedInfo_v1_t;\ntypedef nvmlFanSpeedInfo_v1_t nvmlFanSpeedInfo_t;\n\n#define nvmlFanSpeedInfo_v1 NVML_STRUCT_VERSION(FanSpeedInfo, 1)\n\n#define NVML_PERF_MODES_BUFFER_SIZE       2048\n\n/**\n * Device performance modes string\n */\ntypedef struct\n{\n    unsigned int version;                          //!< the API version number\n    char         str[NVML_PERF_MODES_BUFFER_SIZE]; //!< OUT: the performance modes string.\n} nvmlDevicePerfModes_v1_t;\ntypedef nvmlDevicePerfModes_v1_t nvmlDevicePerfModes_t;\n\n#define nvmlDevicePerfModes_v1 NVML_STRUCT_VERSION(DevicePerfModes, 1)\n\n/**\n * Device current clocks string\n */\ntypedef struct\n{\n    unsigned int version;                          //!< the API version number\n    char         str[NVML_PERF_MODES_BUFFER_SIZE]; //!< OUT: the current clock frequency string.\n} nvmlDeviceCurrentClockFreqs_v1_t;\ntypedef nvmlDeviceCurrentClockFreqs_v1_t nvmlDeviceCurrentClockFreqs_t;\n\n#define nvmlDeviceCurrentClockFreqs_v1 NVML_STRUCT_VERSION(DeviceCurrentClockFreqs, 1)\n\n/**\n * Device powerMizer modes\n */\n#define    NVML_POWER_MIZER_MODE_ADAPTIVE                      0  //!< adjust GPU clocks based on GPU utilization\n#define    NVML_POWER_MIZER_MODE_PREFER_MAXIMUM_PERFORMANCE    1  //!< raise GPU clocks to favor maximum performance,\n                                                                  //!< to the extent that thermal and other constraints allow\n#define    NVML_POWER_MIZER_MODE_AUTO                          2  //!< PowerMizer mode is driver controlled.\n#define    NVML_POWER_MIZER_MODE_PREFER_CONSISTENT_PERFORMANCE 3  //!< lock to GPU base clocks\n\ntypedef struct\n{\n    unsigned int currentMode; //!< OUT: the current powermizer mode\n    unsigned int mode;        //!< IN: the powermizer mode to set\n    unsigned int supportedPowerMizerModes; //!< OUT: Bitmask of supported powermizer modes\n} nvmlDevicePowerMizerModes_v1_t;\n\n/**\n * GPU Operation Mode\n *\n * GOM allows to reduce power usage and optimize GPU throughput by disabling GPU features.\n *\n * Each GOM is designed to meet specific user needs.\n */\ntypedef enum nvmlGom_enum\n{\n    NVML_GOM_ALL_ON                    = 0, //!< Everything is enabled and running at full speed\n\n    NVML_GOM_COMPUTE                   = 1, //!< Designed for running only compute tasks. Graphics operations\n                                            //!< are not allowed\n\n    NVML_GOM_LOW_DP                    = 2  //!< Designed for running graphics applications that don't require\n                                            //!< high bandwidth double precision\n} nvmlGpuOperationMode_t;\n\n/**\n * Available infoROM objects.\n */\ntypedef enum nvmlInforomObject_enum\n{\n    NVML_INFOROM_OEM            = 0,       //!< An object defined by OEM\n    NVML_INFOROM_ECC            = 1,       //!< The ECC object determining the level of ECC support\n    NVML_INFOROM_POWER          = 2,       //!< The power management object\n    NVML_INFOROM_DEN            = 3,       //!< DRAM Encryption object\n    // Keep this last\n    NVML_INFOROM_COUNT                     //!< This counts the number of infoROM objects the driver knows about\n} nvmlInforomObject_t;\n\n/**\n * Return values for NVML API calls.\n */\ntypedef enum nvmlReturn_enum\n{\n    // cppcheck-suppress *\n    NVML_SUCCESS = 0,                          //!< The operation was successful\n    NVML_ERROR_UNINITIALIZED = 1,              //!< NVML was not first initialized with nvmlInit()\n    NVML_ERROR_INVALID_ARGUMENT = 2,           //!< A supplied argument is invalid\n    NVML_ERROR_NOT_SUPPORTED = 3,              //!< The requested operation is not available on target device\n    NVML_ERROR_NO_PERMISSION = 4,              //!< The current user does not have permission for operation\n    NVML_ERROR_ALREADY_INITIALIZED = 5,        //!< Deprecated: Multiple initializations are now allowed through ref counting\n    NVML_ERROR_NOT_FOUND = 6,                  //!< A query to find an object was unsuccessful\n    NVML_ERROR_INSUFFICIENT_SIZE = 7,          //!< An input argument is not large enough\n    NVML_ERROR_INSUFFICIENT_POWER = 8,         //!< A device's external power cables are not properly attached\n    NVML_ERROR_DRIVER_NOT_LOADED = 9,          //!< NVIDIA driver is not loaded\n    NVML_ERROR_TIMEOUT = 10,                   //!< User provided timeout passed\n    NVML_ERROR_IRQ_ISSUE = 11,                 //!< NVIDIA Kernel detected an interrupt issue with a GPU\n    NVML_ERROR_LIBRARY_NOT_FOUND = 12,         //!< NVML Shared Library couldn't be found or loaded\n    NVML_ERROR_FUNCTION_NOT_FOUND = 13,        //!< Local version of NVML doesn't implement this function\n    NVML_ERROR_CORRUPTED_INFOROM = 14,         //!< infoROM is corrupted\n    NVML_ERROR_GPU_IS_LOST = 15,               //!< The GPU has fallen off the bus or has otherwise become inaccessible\n    NVML_ERROR_RESET_REQUIRED = 16,            //!< The GPU requires a reset before it can be used again\n    NVML_ERROR_OPERATING_SYSTEM = 17,          //!< The GPU control device has been blocked by the operating system/cgroups\n    NVML_ERROR_LIB_RM_VERSION_MISMATCH = 18,   //!< RM detects a driver/library version mismatch\n    NVML_ERROR_IN_USE = 19,                    //!< An operation cannot be performed because the GPU is currently in use\n    NVML_ERROR_MEMORY = 20,                    //!< Insufficient memory\n    NVML_ERROR_NO_DATA = 21,                   //!< No data\n    NVML_ERROR_VGPU_ECC_NOT_SUPPORTED = 22,    //!< The requested vgpu operation is not available on target device, becasue ECC is enabled\n    NVML_ERROR_INSUFFICIENT_RESOURCES = 23,    //!< Ran out of critical resources, other than memory\n    NVML_ERROR_FREQ_NOT_SUPPORTED = 24,        //!< Ran out of critical resources, other than memory\n    NVML_ERROR_ARGUMENT_VERSION_MISMATCH = 25, //!< The provided version is invalid/unsupported\n    NVML_ERROR_DEPRECATED  = 26,               //!< The requested functionality has been deprecated\n    NVML_ERROR_NOT_READY = 27,                 //!< The system is not ready for the request\n    NVML_ERROR_GPU_NOT_FOUND = 28,             //!< No GPUs were found\n    NVML_ERROR_INVALID_STATE = 29,             //!< Resource not in correct state to perform requested operation\n    NVML_ERROR_RESET_TYPE_NOT_SUPPORTED = 30,       //!< Reset not supported for given device/parameters\n    NVML_ERROR_UNKNOWN = 999                   //!< An internal driver error occurred\n} nvmlReturn_t;\n\n/**\n * See \\ref nvmlDeviceGetMemoryErrorCounter\n */\ntypedef enum nvmlMemoryLocation_enum\n{\n    NVML_MEMORY_LOCATION_L1_CACHE        = 0,    //!< GPU L1 Cache\n    NVML_MEMORY_LOCATION_L2_CACHE        = 1,    //!< GPU L2 Cache\n    NVML_MEMORY_LOCATION_DRAM            = 2,    //!< Turing+ DRAM\n    NVML_MEMORY_LOCATION_DEVICE_MEMORY   = 2,    //!< GPU Device Memory\n    NVML_MEMORY_LOCATION_REGISTER_FILE   = 3,    //!< GPU Register File\n    NVML_MEMORY_LOCATION_TEXTURE_MEMORY  = 4,    //!< GPU Texture Memory\n    NVML_MEMORY_LOCATION_TEXTURE_SHM     = 5,    //!< Shared memory\n    NVML_MEMORY_LOCATION_CBU             = 6,    //!< CBU\n    NVML_MEMORY_LOCATION_SRAM            = 7,    //!< Turing+ SRAM\n    // Keep this last\n    NVML_MEMORY_LOCATION_COUNT              //!< This counts the number of memory locations the driver knows about\n} nvmlMemoryLocation_t;\n\n/**\n * Causes for page retirement\n */\ntypedef enum nvmlPageRetirementCause_enum\n{\n    NVML_PAGE_RETIREMENT_CAUSE_MULTIPLE_SINGLE_BIT_ECC_ERRORS = 0, //!< Page was retired due to multiple single bit ECC error\n    NVML_PAGE_RETIREMENT_CAUSE_DOUBLE_BIT_ECC_ERROR = 1,           //!< Page was retired due to double bit ECC error\n\n    // Keep this last\n    NVML_PAGE_RETIREMENT_CAUSE_COUNT\n} nvmlPageRetirementCause_t;\n\n/**\n * API types that allow changes to default permission restrictions\n */\ntypedef enum nvmlRestrictedAPI_enum\n{\n    NVML_RESTRICTED_API_SET_APPLICATION_CLOCKS = 0,   //!< APIs that change application clocks, see nvmlDeviceSetApplicationsClocks\n                                                      //!< and see nvmlDeviceResetApplicationsClocks.\n                                                      //!< Deprecated, keeping definition for backward compatibility.\n    NVML_RESTRICTED_API_SET_AUTO_BOOSTED_CLOCKS = 1,  //!< APIs that enable/disable Auto Boosted clocks\n                                                      //!< see nvmlDeviceSetAutoBoostedClocksEnabled\n    // Keep this last\n    NVML_RESTRICTED_API_COUNT\n} nvmlRestrictedAPI_t;\n\n/**\n * Structure to store utilization value and process Id\n */\ntypedef struct nvmlProcessUtilizationSample_st\n{\n    unsigned int        pid;            //!< PID of process\n    unsigned long long  timeStamp;      //!< CPU Timestamp in microseconds\n    unsigned int        smUtil;         //!< SM (3D/Compute) Util Value\n    unsigned int        memUtil;        //!< Frame Buffer Memory Util Value\n    unsigned int        encUtil;        //!< Encoder Util Value\n    unsigned int        decUtil;        //!< Decoder Util Value\n} nvmlProcessUtilizationSample_t;\n\n/**\n * Structure to store utilization value and process Id -- version 1\n */\ntypedef struct\n{\n    unsigned long long  timeStamp;      //!< CPU Timestamp in microseconds\n    unsigned int        pid;            //!< PID of process\n    unsigned int        smUtil;         //!< SM (3D/Compute) Util Value\n    unsigned int        memUtil;        //!< Frame Buffer Memory Util Value\n    unsigned int        encUtil;        //!< Encoder Util Value\n    unsigned int        decUtil;        //!< Decoder Util Value\n    unsigned int        jpgUtil;        //!< Jpeg Util Value\n    unsigned int        ofaUtil;        //!< Ofa Util Value\n} nvmlProcessUtilizationInfo_v1_t;\n\n/**\n * Structure to store utilization and process ID for each running process -- version 1\n */\ntypedef struct\n{\n    unsigned int version;                           //!< The version number of this struct\n    unsigned int processSamplesCount;               //!< Caller-supplied array size, and returns number of processes running\n    unsigned long long lastSeenTimeStamp;           //!< Return only samples with timestamp greater than lastSeenTimeStamp\n    nvmlProcessUtilizationInfo_v1_t *procUtilArray; //!< The array (allocated by caller) of the utilization of GPU SM, framebuffer, video encoder, video decoder, JPEG, and OFA\n} nvmlProcessesUtilizationInfo_v1_t;\ntypedef nvmlProcessesUtilizationInfo_v1_t nvmlProcessesUtilizationInfo_t;\n#define nvmlProcessesUtilizationInfo_v1 NVML_STRUCT_VERSION(ProcessesUtilizationInfo, 1)\n\n/**\n * Structure to store SRAM uncorrectable error counters\n */\ntypedef struct\n{\n    unsigned int version;                                   //!< the API version number\n    unsigned long long aggregateUncParity;                  //!< aggregate uncorrectable parity error count\n    unsigned long long aggregateUncSecDed;                  //!< aggregate uncorrectable SEC-DED error count\n    unsigned long long aggregateCor;                        //!< aggregate correctable error count\n    unsigned long long volatileUncParity;                   //!< volatile uncorrectable parity error count\n    unsigned long long volatileUncSecDed;                   //!< volatile uncorrectable SEC-DED error count\n    unsigned long long volatileCor;                         //!< volatile correctable error count\n    unsigned long long aggregateUncBucketL2;                //!< aggregate uncorrectable error count for L2 cache bucket\n    unsigned long long aggregateUncBucketSm;                //!< aggregate uncorrectable error count for SM bucket\n    unsigned long long aggregateUncBucketPcie;              //!< aggregate uncorrectable error count for PCIE bucket\n    unsigned long long aggregateUncBucketMcu;               //!< aggregate uncorrectable error count for Microcontroller bucket\n    unsigned long long aggregateUncBucketOther;             //!< aggregate uncorrectable error count for Other bucket\n    unsigned int bThresholdExceeded;                        //!< if the error threshold of field diag is exceeded\n} nvmlEccSramErrorStatus_v1_t;\n\ntypedef nvmlEccSramErrorStatus_v1_t nvmlEccSramErrorStatus_t;\n#define nvmlEccSramErrorStatus_v1 NVML_STRUCT_VERSION(EccSramErrorStatus, 1)\n\n/**\n * Structure to store platform information\n *\n * @deprecated  The nvmlPlatformInfo_v1_t will be deprecated in the subsequent releases.\n *              Use nvmlPlatformInfo_v2_t\n */\ntypedef struct\n{\n    unsigned int version;                       //!< the API version number\n    unsigned char ibGuid[16];                   //!< Infiniband GUID reported by platform (for Blackwell, ibGuid is 8 bytes so indices 8-15 are zero)\n    unsigned char rackGuid[16];                 //!< GUID of the rack containing this GPU (for Blackwell rackGuid is 13 bytes so indices 13-15 are zero)\n    unsigned char chassisPhysicalSlotNumber;    //!< The slot number in the rack containing this GPU (includes switches)\n    unsigned char computeSlotIndex;             //!< The index within the compute slots in the rack containing this GPU (does not include switches)\n    unsigned char nodeIndex;                    //!< Index of the node within the slot containing this GPU\n    unsigned char peerType;                     //!< Platform indicated NVLink-peer type (e.g. switch present or not)\n    unsigned char moduleId;                     //!< ID of this GPU within the node\n} nvmlPlatformInfo_v1_t;\n#define nvmlPlatformInfo_v1 NVML_STRUCT_VERSION(PlatformInfo, 1)\n\n/**\n * Structure to store platform information (v2)\n */\ntypedef struct\n{\n    unsigned int version;                       //!< the API version number\n    unsigned char ibGuid[16];                   //!< Infiniband GUID reported by platform (for Blackwell, ibGuid is 8 bytes so indices 8-15 are zero)\n    unsigned char chassisSerialNumber[16];      //!< Serial number of the chassis containing this GPU (for Blackwell it is 13 bytes so indices 13-15 are zero)\n    unsigned char slotNumber;                   //!< The slot number in the chassis containing this GPU (includes switches)\n    unsigned char trayIndex;                    //!< The tray index within the compute slots in the chassis containing this GPU (does not include switches)\n    unsigned char hostId;                       //!< Index of the node within the slot containing this GPU\n    unsigned char peerType;                     //!< Platform indicated NVLink-peer type (e.g. switch present or not)\n    unsigned char moduleId;                     //!< ID of this GPU within the node\n} nvmlPlatformInfo_v2_t;\n\ntypedef nvmlPlatformInfo_v2_t nvmlPlatformInfo_t;\n#define nvmlPlatformInfo_v2 NVML_STRUCT_VERSION(PlatformInfo, 2)\n\ntypedef struct\n{\n    unsigned int unit;                                      //!< the SRAM unit index\n    unsigned int location;                                  //!< the error location within the SRAM unit\n    unsigned int sublocation;                               //!< the error sublocation within the SRAM unit\n    unsigned int extlocation;                               //!< the error extlocation within the SRAM unit\n    unsigned int address;                                   //!< the error address within the SRAM unit\n    unsigned int isParity;                                  //!< if the SRAM error is parity or not\n    unsigned int count;                                     //!< the error count at the same SRAM address\n} nvmlEccSramUniqueUncorrectedErrorEntry_v1_t;\n\ntypedef struct\n{\n    unsigned int version;                                   //!< the API version number\n    unsigned int entryCount;                                //!< the number of error count entries\n    nvmlEccSramUniqueUncorrectedErrorEntry_v1_t *entries;   //!< pointer to caller-supplied buffer to return the SRAM unique uncorrected ECC error count entries\n} nvmlEccSramUniqueUncorrectedErrorCounts_v1_t;\n\ntypedef nvmlEccSramUniqueUncorrectedErrorCounts_v1_t nvmlEccSramUniqueUncorrectedErrorCounts_t;\n#define nvmlEccSramUniqueUncorrectedErrorCounts_v1 NVML_STRUCT_VERSION(EccSramUniqueUncorrectedErrorCounts, 1)\n\n/**\n * GSP firmware\n */\n#define NVML_GSP_FIRMWARE_VERSION_BUF_SIZE 0x40\n\n/**\n * Simplified chip architecture\n */\n#define NVML_DEVICE_ARCH_KEPLER    2 // Devices based on the NVIDIA Kepler architecture\n#define NVML_DEVICE_ARCH_MAXWELL   3 // Devices based on the NVIDIA Maxwell architecture\n#define NVML_DEVICE_ARCH_PASCAL    4 // Devices based on the NVIDIA Pascal architecture\n#define NVML_DEVICE_ARCH_VOLTA     5 // Devices based on the NVIDIA Volta architecture\n#define NVML_DEVICE_ARCH_TURING    6 // Devices based on the NVIDIA Turing architecture\n#define NVML_DEVICE_ARCH_AMPERE    7 // Devices based on the NVIDIA Ampere architecture\n#define NVML_DEVICE_ARCH_ADA       8 // Devices based on the NVIDIA Ada architecture\n#define NVML_DEVICE_ARCH_HOPPER    9 // Devices based on the NVIDIA Hopper architecture\n\n#define NVML_DEVICE_ARCH_BLACKWELL 10 // Devices based on the NVIDIA Blackwell architecture\n\n#define NVML_DEVICE_ARCH_UNKNOWN   0xffffffff // Anything else, presumably something newer\n\ntypedef unsigned int nvmlDeviceArchitecture_t;\n\n/**\n * PCI bus types\n */\n#define NVML_BUS_TYPE_UNKNOWN  0\n#define NVML_BUS_TYPE_PCI      1\n#define NVML_BUS_TYPE_PCIE     2\n#define NVML_BUS_TYPE_FPCI     3\n#define NVML_BUS_TYPE_AGP      4\n\ntypedef unsigned int nvmlBusType_t;\n\n/**\n * Device Power Modes\n */\n\n/**\n * Device Fan control policy\n */\n#define NVML_FAN_POLICY_TEMPERATURE_CONTINOUS_SW 0\n#define NVML_FAN_POLICY_MANUAL                   1\n\ntypedef unsigned int nvmlFanControlPolicy_t;\n\n/**\n * Device Power Source\n */\n#define NVML_POWER_SOURCE_AC         0x00000000\n#define NVML_POWER_SOURCE_BATTERY    0x00000001\n#define NVML_POWER_SOURCE_UNDERSIZED 0x00000002\n\ntypedef unsigned int nvmlPowerSource_t;\n\n/**\n * Device PCIE link Max Speed\n */\n#define NVML_PCIE_LINK_MAX_SPEED_INVALID   0x00000000\n#define NVML_PCIE_LINK_MAX_SPEED_2500MBPS  0x00000001\n#define NVML_PCIE_LINK_MAX_SPEED_5000MBPS  0x00000002\n#define NVML_PCIE_LINK_MAX_SPEED_8000MBPS  0x00000003\n#define NVML_PCIE_LINK_MAX_SPEED_16000MBPS 0x00000004\n#define NVML_PCIE_LINK_MAX_SPEED_32000MBPS 0x00000005\n#define NVML_PCIE_LINK_MAX_SPEED_64000MBPS 0x00000006\n\n/**\n * Adaptive clocking status\n */\n#define NVML_ADAPTIVE_CLOCKING_INFO_STATUS_DISABLED 0x00000000\n#define NVML_ADAPTIVE_CLOCKING_INFO_STATUS_ENABLED  0x00000001\n\n#define NVML_MAX_GPU_UTILIZATIONS 8\n\n/**\n * Represents the GPU utilization domains\n */\ntypedef enum nvmlGpuUtilizationDomainId_t\n{\n    NVML_GPU_UTILIZATION_DOMAIN_GPU    = 0, //!< Graphics engine domain\n    NVML_GPU_UTILIZATION_DOMAIN_FB     = 1, //!< Frame buffer domain\n    NVML_GPU_UTILIZATION_DOMAIN_VID    = 2, //!< Video engine domain\n    NVML_GPU_UTILIZATION_DOMAIN_BUS    = 3, //!< Bus interface domain\n} nvmlGpuUtilizationDomainId_t;\n\ntypedef struct nvmlGpuDynamicPstatesInfo_st\n{\n    unsigned int       flags;          //!< Reserved for future use\n    struct\n    {\n        unsigned int   bIsPresent;     //!< Set if this utilization domain is present on this GPU\n        unsigned int   percentage;     //!< Percentage of time where the domain is considered busy in the last 1-second interval\n        unsigned int   incThreshold;   //!< Utilization threshold that can trigger a perf-increasing P-State change when crossed\n        unsigned int   decThreshold;   //!< Utilization threshold that can trigger a perf-decreasing P-State change when crossed\n    } utilization[NVML_MAX_GPU_UTILIZATIONS];\n} nvmlGpuDynamicPstatesInfo_t;\n\n/*\n * PCIe outbound/inbound atomic operations capability\n */\n#define NVML_PCIE_ATOMICS_CAP_FETCHADD32  0x01\n#define NVML_PCIE_ATOMICS_CAP_FETCHADD64  0x02\n#define NVML_PCIE_ATOMICS_CAP_SWAP32      0x04\n#define NVML_PCIE_ATOMICS_CAP_SWAP64      0x08\n#define NVML_PCIE_ATOMICS_CAP_CAS32       0x10\n#define NVML_PCIE_ATOMICS_CAP_CAS64       0x20\n#define NVML_PCIE_ATOMICS_CAP_CAS128      0x40\n#define NVML_PCIE_ATOMICS_OPS_MAX         7\n\n/**\n * Device Scope - This is useful to retrieve the telemetry at GPU and module (e.g. GPU + CPU) level\n */\n#define NVML_POWER_SCOPE_GPU     0U    //!< Targets only GPU\n#define NVML_POWER_SCOPE_MODULE  1U    //!< Targets the whole module\n#define NVML_POWER_SCOPE_MEMORY  2U    //!< Targets the GPU Memory\n\ntypedef unsigned char nvmlPowerScopeType_t;\n\n/**\n * Contains the power management limit\n */\ntypedef struct\n{\n    unsigned int         version;       //!< Structure format version (must be 1)\n    nvmlPowerScopeType_t powerScope;    //!< [in]  Device type: GPU or Total Module\n    unsigned int         powerValueMw;  //!< [out] Power value to retrieve or set in milliwatts\n} nvmlPowerValue_v2_t;\n\n#define nvmlPowerValue_v2 NVML_STRUCT_VERSION(PowerValue, 2)\n\n/** @} */\n\n/***************************************************************************************************/\n/** @addtogroup virtualGPU vGPU Enums, Constants, Structs\n *  @{\n */\n/***************************************************************************************************/\n/** @defgroup nvmlVirtualGpuEnums vGPU Enums\n *  @{\n */\n/***************************************************************************************************/\n\n/*!\n * GPU virtualization mode types.\n */\ntypedef enum nvmlGpuVirtualizationMode {\n    NVML_GPU_VIRTUALIZATION_MODE_NONE = 0,  //!< Represents Bare Metal GPU\n    NVML_GPU_VIRTUALIZATION_MODE_PASSTHROUGH = 1,  //!< Device is associated with GPU-Passthorugh\n    NVML_GPU_VIRTUALIZATION_MODE_VGPU = 2,  //!< Device is associated with vGPU inside virtual machine.\n    NVML_GPU_VIRTUALIZATION_MODE_HOST_VGPU = 3,  //!< Device is associated with VGX hypervisor in vGPU mode\n    NVML_GPU_VIRTUALIZATION_MODE_HOST_VSGA = 4   //!< Device is associated with VGX hypervisor in vSGA mode\n} nvmlGpuVirtualizationMode_t;\n\n/**\n * Host vGPU modes\n */\ntypedef enum nvmlHostVgpuMode_enum\n{\n    NVML_HOST_VGPU_MODE_NON_SRIOV    = 0,     //!< Non SR-IOV mode\n    NVML_HOST_VGPU_MODE_SRIOV        = 1      //!< SR-IOV mode\n} nvmlHostVgpuMode_t;\n\n/*!\n * Types of VM identifiers\n */\ntypedef enum nvmlVgpuVmIdType {\n    NVML_VGPU_VM_ID_DOMAIN_ID = 0, //!< VM ID represents DOMAIN ID\n    NVML_VGPU_VM_ID_UUID = 1       //!< VM ID represents UUID\n} nvmlVgpuVmIdType_t;\n\n/**\n * vGPU GUEST info state\n */\ntypedef enum nvmlVgpuGuestInfoState_enum\n{\n    NVML_VGPU_INSTANCE_GUEST_INFO_STATE_UNINITIALIZED = 0,  //!< Guest-dependent fields uninitialized\n    NVML_VGPU_INSTANCE_GUEST_INFO_STATE_INITIALIZED   = 1   //!< Guest-dependent fields initialized\n} nvmlVgpuGuestInfoState_t;\n\n/**\n * vGPU software licensable features\n */\ntypedef enum {\n    NVML_GRID_LICENSE_FEATURE_CODE_UNKNOWN      = 0,                                         //!< Unknown\n    NVML_GRID_LICENSE_FEATURE_CODE_VGPU         = 1,                                         //!< Virtual GPU\n    NVML_GRID_LICENSE_FEATURE_CODE_NVIDIA_RTX   = 2,                                         //!< Nvidia RTX\n    NVML_GRID_LICENSE_FEATURE_CODE_VWORKSTATION = NVML_GRID_LICENSE_FEATURE_CODE_NVIDIA_RTX, //!< Deprecated, do not use.\n    NVML_GRID_LICENSE_FEATURE_CODE_GAMING       = 3,                                         //!< Gaming\n    NVML_GRID_LICENSE_FEATURE_CODE_COMPUTE      = 4                                          //!< Compute\n} nvmlGridLicenseFeatureCode_t;\n\n/**\n * Status codes for license expiry\n */\n#define NVML_GRID_LICENSE_EXPIRY_NOT_AVAILABLE   0   //!< Expiry information not available\n#define NVML_GRID_LICENSE_EXPIRY_INVALID         1   //!< Invalid expiry or error fetching expiry\n#define NVML_GRID_LICENSE_EXPIRY_VALID           2   //!< Valid expiry\n#define NVML_GRID_LICENSE_EXPIRY_NOT_APPLICABLE  3   //!< Expiry not applicable\n#define NVML_GRID_LICENSE_EXPIRY_PERMANENT       4   //!< Permanent expiry\n\n/**\n * vGPU queryable capabilities\n */\ntypedef enum nvmlVgpuCapability_enum\n{\n    NVML_VGPU_CAP_NVLINK_P2P                    = 0,  //!< P2P over NVLink is supported\n    NVML_VGPU_CAP_GPUDIRECT                     = 1,  //!< GPUDirect capability is supported\n    NVML_VGPU_CAP_MULTI_VGPU_EXCLUSIVE          = 2,  //!< vGPU profile cannot be mixed with other vGPU profiles in same VM\n    NVML_VGPU_CAP_EXCLUSIVE_TYPE                = 3,  //!< vGPU profile cannot run on a GPU alongside other profiles of different type\n    NVML_VGPU_CAP_EXCLUSIVE_SIZE                = 4,  //!< vGPU profile cannot run on a GPU alongside other profiles of different size\n    // Keep this last\n    NVML_VGPU_CAP_COUNT\n} nvmlVgpuCapability_t;\n\n/**\n* vGPU driver queryable capabilities\n*/\ntypedef enum nvmlVgpuDriverCapability_enum\n{\n    NVML_VGPU_DRIVER_CAP_HETEROGENEOUS_MULTI_VGPU = 0,      //!< Supports mixing of different vGPU profiles within one guest VM\n    NVML_VGPU_DRIVER_CAP_WARM_UPDATE              = 1,      //!< Supports FSR and warm update of vGPU host driver without terminating the running guest VM\n    // Keep this last\n    NVML_VGPU_DRIVER_CAP_COUNT\n} nvmlVgpuDriverCapability_t;\n\n/**\n* Device vGPU queryable capabilities\n*/\ntypedef enum nvmlDeviceVgpuCapability_enum\n{\n    NVML_DEVICE_VGPU_CAP_FRACTIONAL_MULTI_VGPU            = 0,    //!< Query whether the fractional vGPU profiles on this GPU can be used in multi-vGPU configurations\n    NVML_DEVICE_VGPU_CAP_HETEROGENEOUS_TIMESLICE_PROFILES = 1,    //!< Query whether the GPU support concurrent execution of timesliced vGPU profiles of differing types\n    NVML_DEVICE_VGPU_CAP_HETEROGENEOUS_TIMESLICE_SIZES    = 2,    //!< Query whether the GPU support concurrent execution of timesliced vGPU profiles of differing framebuffer sizes\n    NVML_DEVICE_VGPU_CAP_READ_DEVICE_BUFFER_BW            = 3,    //!< Query the GPU's read_device_buffer expected bandwidth capacity in megabytes per second\n    NVML_DEVICE_VGPU_CAP_WRITE_DEVICE_BUFFER_BW           = 4,    //!< Query the GPU's write_device_buffer expected bandwidth capacity in megabytes per second\n    NVML_DEVICE_VGPU_CAP_DEVICE_STREAMING                 = 5,    //!< Query whether the vGPU profiles on the GPU supports migration data streaming\n    NVML_DEVICE_VGPU_CAP_MINI_QUARTER_GPU                 = 6,    //!< Set/Get support for mini-quarter vGPU profiles\n    NVML_DEVICE_VGPU_CAP_COMPUTE_MEDIA_ENGINE_GPU         = 7,    //!< Set/Get support for compute media engine vGPU profiles\n    NVML_DEVICE_VGPU_CAP_WARM_UPDATE                      = 8,    //!< Query whether the GPU supports FSR and warm update\n    NVML_DEVICE_VGPU_CAP_HOMOGENEOUS_PLACEMENTS           = 9,    //!< Query whether the GPU supports reporting of placements of timesliced vGPU profiles with identical framebuffer sizes\n    NVML_DEVICE_VGPU_CAP_MIG_TIMESLICING_SUPPORTED        = 10,   //!< Query whether the GPU supports timesliced vGPU on MIG\n    NVML_DEVICE_VGPU_CAP_MIG_TIMESLICING_ENABLED          = 11,   //!< Set/Get MIG timesliced mode reporting, without impacting the underlying functionality\n    // Keep this last\n    NVML_DEVICE_VGPU_CAP_COUNT\n} nvmlDeviceVgpuCapability_t;\n\n/** @} */\n\n/***************************************************************************************************/\n\n/** @defgroup nvmlVgpuConstants vGPU Constants\n *  @{\n */\n/***************************************************************************************************/\n\n/**\n * Buffer size guaranteed to be large enough for \\ref nvmlVgpuTypeGetLicense\n */\n#define NVML_GRID_LICENSE_BUFFER_SIZE       128\n\n#define NVML_VGPU_NAME_BUFFER_SIZE          64\n\n#define NVML_GRID_LICENSE_FEATURE_MAX_COUNT 3\n\n#define INVALID_GPU_INSTANCE_PROFILE_ID     0xFFFFFFFF\n\n#define INVALID_GPU_INSTANCE_ID             0xFFFFFFFF\n\n#define NVML_INVALID_VGPU_PLACEMENT_ID      0xFFFF\n\n/*!\n * Macros for vGPU instance's virtualization capabilities bitfield.\n */\n#define NVML_VGPU_VIRTUALIZATION_CAP_MIGRATION         0:0\n#define NVML_VGPU_VIRTUALIZATION_CAP_MIGRATION_NO      0x0\n#define NVML_VGPU_VIRTUALIZATION_CAP_MIGRATION_YES     0x1\n\n/*!\n * Macros for pGPU's virtualization capabilities bitfield.\n */\n#define NVML_VGPU_PGPU_VIRTUALIZATION_CAP_MIGRATION         0:0\n#define NVML_VGPU_PGPU_VIRTUALIZATION_CAP_MIGRATION_NO      0x0\n#define NVML_VGPU_PGPU_VIRTUALIZATION_CAP_MIGRATION_YES     0x1\n\n/**\n * Macros to indicate the vGPU mode of the GPU.\n */\n#define NVML_VGPU_PGPU_HETEROGENEOUS_MODE    0\n#define NVML_VGPU_PGPU_HOMOGENEOUS_MODE      1\n\n/** @} */\n\n/***************************************************************************************************/\n/** @defgroup nvmlVgpuStructs vGPU Structs\n *  @{\n */\n/***************************************************************************************************/\n\ntypedef unsigned int nvmlVgpuTypeId_t;\n\ntypedef unsigned int nvmlVgpuInstance_t;\n\n/**\n * Structure to store the vGPU heterogeneous mode of device -- version 1\n */\ntypedef struct\n{\n    unsigned int version;               //!< The version number of this struct\n    unsigned int mode;                  //!< The vGPU heterogeneous mode\n} nvmlVgpuHeterogeneousMode_v1_t;\ntypedef nvmlVgpuHeterogeneousMode_v1_t nvmlVgpuHeterogeneousMode_t;\n#define nvmlVgpuHeterogeneousMode_v1 NVML_STRUCT_VERSION(VgpuHeterogeneousMode, 1)\n\n/**\n * Structure to store the placement ID of vGPU instance -- version 1\n */\ntypedef struct\n{\n    unsigned int version;               //!< The version number of this struct\n    unsigned int placementId;           //!< Placement ID of the active vGPU instance\n} nvmlVgpuPlacementId_v1_t;\ntypedef nvmlVgpuPlacementId_v1_t nvmlVgpuPlacementId_t;\n#define nvmlVgpuPlacementId_v1 NVML_STRUCT_VERSION(VgpuPlacementId, 1)\n\n/**\n * Structure to store the list of vGPU placements -- version 1\n */\ntypedef struct\n{\n    unsigned int version;               //!< The version number of this struct\n    unsigned int placementSize;         //!< The number of slots occupied by the vGPU type\n    unsigned int count;                 //!< Count of placement IDs fetched\n    unsigned int *placementIds;         //!< Placement IDs for the vGPU type\n} nvmlVgpuPlacementList_v1_t;\n#define nvmlVgpuPlacementList_v1 NVML_STRUCT_VERSION(VgpuPlacementList, 1)\n\n/**\n * Structure to store the list of vGPU placements -- version 2\n */\ntypedef struct\n{\n    unsigned int version;               //!< IN: The version number of this struct\n    unsigned int placementSize;         //!< OUT: The number of slots occupied by the vGPU type\n    unsigned int count;                 //!< IN/OUT: Count of the placement IDs\n    unsigned int *placementIds;         //!< IN/OUT: Placement IDs for the vGPU type\n    unsigned int mode;                  //!< IN: The vGPU mode. Either NVML_VGPU_PGPU_HETEROGENEOUS_MODE or NVML_VGPU_PGPU_HOMOGENEOUS_MODE\n} nvmlVgpuPlacementList_v2_t;\ntypedef nvmlVgpuPlacementList_v2_t nvmlVgpuPlacementList_t;\n#define nvmlVgpuPlacementList_v2 NVML_STRUCT_VERSION(VgpuPlacementList, 2)\n\n/**\n * Structure to store BAR1 size information of vGPU type -- Version 1\n */\ntypedef struct\n{\n    unsigned int version;               //!< The version number of this struct\n    unsigned long long  bar1Size;       //!< BAR1 size in megabytes\n} nvmlVgpuTypeBar1Info_v1_t;\ntypedef nvmlVgpuTypeBar1Info_v1_t nvmlVgpuTypeBar1Info_t;\n#define nvmlVgpuTypeBar1Info_v1 NVML_STRUCT_VERSION(VgpuTypeBar1Info, 1)\n\n/**\n * Structure to store Utilization Value and vgpuInstance\n */\ntypedef struct nvmlVgpuInstanceUtilizationSample_st\n{\n    nvmlVgpuInstance_t  vgpuInstance;       //!< vGPU Instance\n    unsigned long long  timeStamp;          //!< CPU Timestamp in microseconds\n    nvmlValue_t         smUtil;             //!< SM (3D/Compute) Util Value\n    nvmlValue_t         memUtil;            //!< Frame Buffer Memory Util Value\n    nvmlValue_t         encUtil;            //!< Encoder Util Value\n    nvmlValue_t         decUtil;            //!< Decoder Util Value\n} nvmlVgpuInstanceUtilizationSample_t;\n\n/**\n * Structure to store Utilization Value and vgpuInstance Info -- Version 1\n */\ntypedef struct\n{\n    unsigned long long  timeStamp;          //!< CPU Timestamp in microseconds\n    nvmlVgpuInstance_t  vgpuInstance;       //!< vGPU Instance\n    nvmlValue_t         smUtil;             //!< SM (3D/Compute) Util Value\n    nvmlValue_t         memUtil;            //!< Frame Buffer Memory Util Value\n    nvmlValue_t         encUtil;            //!< Encoder Util Value\n    nvmlValue_t         decUtil;            //!< Decoder Util Value\n    nvmlValue_t         jpgUtil;            //!< Jpeg Util Value\n    nvmlValue_t         ofaUtil;            //!< Ofa Util Value\n} nvmlVgpuInstanceUtilizationInfo_v1_t;\n\n/**\n * Structure to store recent utilization for vGPU instances running on a device -- version 1\n */\ntypedef struct\n{\n    unsigned int version;                                   //!< The version number of this struct\n    nvmlValueType_t sampleValType;                          //!< Hold the type of returned sample values\n    unsigned int vgpuInstanceCount;                         //!< Hold the number of vGPU instances\n    unsigned long long lastSeenTimeStamp;                   //!< Return only samples with timestamp greater than lastSeenTimeStamp\n    nvmlVgpuInstanceUtilizationInfo_v1_t *vgpuUtilArray;    //!< The array (allocated by caller) in which vGPU utilization are returned\n} nvmlVgpuInstancesUtilizationInfo_v1_t;\ntypedef nvmlVgpuInstancesUtilizationInfo_v1_t nvmlVgpuInstancesUtilizationInfo_t;\n#define nvmlVgpuInstancesUtilizationInfo_v1 NVML_STRUCT_VERSION(VgpuInstancesUtilizationInfo, 1)\n\n/**\n * Structure to store Utilization Value, vgpuInstance and subprocess information\n */\ntypedef struct nvmlVgpuProcessUtilizationSample_st\n{\n    nvmlVgpuInstance_t  vgpuInstance;                               //!< vGPU Instance\n    unsigned int        pid;                                        //!< PID of process running within the vGPU VM\n    char                processName[NVML_VGPU_NAME_BUFFER_SIZE];    //!< Name of process running within the vGPU VM\n    unsigned long long  timeStamp;                                  //!< CPU Timestamp in microseconds\n    unsigned int        smUtil;                                     //!< SM (3D/Compute) Util Value\n    unsigned int        memUtil;                                    //!< Frame Buffer Memory Util Value\n    unsigned int        encUtil;                                    //!< Encoder Util Value\n    unsigned int        decUtil;                                    //!< Decoder Util Value\n} nvmlVgpuProcessUtilizationSample_t;\n\n/**\n * Structure to store Utilization Value, vgpuInstance and subprocess information for process running on vGPU instance -- version 1\n */\ntypedef struct\n{\n    char                processName[NVML_VGPU_NAME_BUFFER_SIZE];    //!< Name of process running within the vGPU VM\n    unsigned long long  timeStamp;                                  //!< CPU Timestamp in microseconds\n    nvmlVgpuInstance_t  vgpuInstance;                               //!< vGPU Instance\n    unsigned int        pid;                                        //!< PID of process running within the vGPU VM\n    unsigned int        smUtil;                                     //!< SM (3D/Compute) Util Value\n    unsigned int        memUtil;                                    //!< Frame Buffer Memory Util Value\n    unsigned int        encUtil;                                    //!< Encoder Util Value\n    unsigned int        decUtil;                                    //!< Decoder Util Value\n    unsigned int        jpgUtil;                                    //!< Jpeg Util Value\n    unsigned int        ofaUtil;                                    //!< Ofa Util Value\n} nvmlVgpuProcessUtilizationInfo_v1_t;\n\n/**\n * Structure to store recent utilization, vgpuInstance and subprocess information for processes running on vGPU instances active on a device -- version 1\n */\ntypedef struct\n{\n    unsigned int version;                                   //!< The version number of this struct\n    unsigned int vgpuProcessCount;                          //!< Hold the number of processes running on vGPU instances\n    unsigned long long lastSeenTimeStamp;                   //!< Return only samples with timestamp greater than lastSeenTimeStamp\n    nvmlVgpuProcessUtilizationInfo_v1_t *vgpuProcUtilArray; //!< The array (allocated by caller) in which utilization of processes running on vGPU instances are returned\n} nvmlVgpuProcessesUtilizationInfo_v1_t;\ntypedef nvmlVgpuProcessesUtilizationInfo_v1_t nvmlVgpuProcessesUtilizationInfo_t;\n#define nvmlVgpuProcessesUtilizationInfo_v1 NVML_STRUCT_VERSION(VgpuProcessesUtilizationInfo, 1)\n\n/**\n * Structure to store the information of vGPU runtime state -- version 1\n */\ntypedef struct\n{\n    unsigned int version;               //!< IN:  The version number of this struct\n    unsigned long long size;            //!< OUT: The runtime state size of the vGPU instance\n} nvmlVgpuRuntimeState_v1_t;\ntypedef nvmlVgpuRuntimeState_v1_t nvmlVgpuRuntimeState_t;\n#define nvmlVgpuRuntimeState_v1 NVML_STRUCT_VERSION(VgpuRuntimeState, 1)\n\n/**\n * vGPU scheduler policies\n */\n#define NVML_VGPU_SCHEDULER_POLICY_UNKNOWN      0\n#define NVML_VGPU_SCHEDULER_POLICY_BEST_EFFORT  1\n#define NVML_VGPU_SCHEDULER_POLICY_EQUAL_SHARE  2\n#define NVML_VGPU_SCHEDULER_POLICY_FIXED_SHARE  3\n\n#define NVML_SUPPORTED_VGPU_SCHEDULER_POLICY_COUNT 3\n\n#define NVML_SCHEDULER_SW_MAX_LOG_ENTRIES 200\n\n#define NVML_VGPU_SCHEDULER_ARR_DEFAULT   0\n#define NVML_VGPU_SCHEDULER_ARR_DISABLE   1\n#define NVML_VGPU_SCHEDULER_ARR_ENABLE    2\n\n/**\n * vGPU scheduler engine types\n */\n#define NVML_VGPU_SCHEDULER_ENGINE_TYPE_GRAPHICS  1\n\n/**\n * Union to represent the vGPU Scheduler Parameters\n */\ntypedef union\n{\n    struct\n    {\n        unsigned int    avgFactor;          //!< Average factor in compensating the timeslice for Adaptive Round Robin mode\n        unsigned int    timeslice;          //!< The timeslice in ns for each software run list as configured, or the default value otherwise\n    } vgpuSchedDataWithARR;\n\n    struct\n    {\n        unsigned int    timeslice;          //!< The timeslice in ns for each software run list as configured, or the default value otherwise\n    } vgpuSchedData;\n\n} nvmlVgpuSchedulerParams_t;\n\n/**\n * Structure to store the state and logs of a software runlist\n */\ntypedef struct nvmlVgpuSchedulerLogEntries_st\n{\n    unsigned long long          timestamp;                  //!< Timestamp in ns when this software runlist was preeempted\n    unsigned long long          timeRunTotal;               //!< Total time in ns this software runlist has run\n    unsigned long long          timeRun;                    //!< Time in ns this software runlist ran before preemption\n    unsigned int                swRunlistId;                //!< Software runlist Id\n    unsigned long long          targetTimeSlice;            //!< The actual timeslice after deduction\n    unsigned long long          cumulativePreemptionTime;   //!< Preemption time in ns for this SW runlist\n} nvmlVgpuSchedulerLogEntry_t;\n\n/**\n * Structure to store a vGPU software scheduler log\n */\ntypedef struct nvmlVgpuSchedulerLog_st\n{\n    unsigned int                engineId;                                       //!< Engine whose software runlist log entries are fetched\n    unsigned int                schedulerPolicy;                                //!< Scheduler policy\n    unsigned int                arrMode;                                        //!< Adaptive Round Robin scheduler mode. One of the NVML_VGPU_SCHEDULER_ARR_*.\n    nvmlVgpuSchedulerParams_t   schedulerParams;\n    unsigned int                entriesCount;                                   //!< Count of log entries fetched\n    nvmlVgpuSchedulerLogEntry_t logEntries[NVML_SCHEDULER_SW_MAX_LOG_ENTRIES];\n} nvmlVgpuSchedulerLog_t;\n\n/**\n * Structure to store the vGPU scheduler state\n */\ntypedef struct nvmlVgpuSchedulerGetState_st\n{\n    unsigned int                schedulerPolicy;    //!< Scheduler policy\n    unsigned int                arrMode;            //!< Adaptive Round Robin scheduler mode. One of the NVML_VGPU_SCHEDULER_ARR_*.\n    nvmlVgpuSchedulerParams_t   schedulerParams;\n} nvmlVgpuSchedulerGetState_t;\n\n/**\n * Union to represent the vGPU Scheduler set Parameters\n */\ntypedef union\n{\n    struct\n    {\n        unsigned int    avgFactor;          //!< Average factor in compensating the timeslice for Adaptive Round Robin mode\n        unsigned int    frequency;          //!< Frequency for Adaptive Round Robin mode\n    } vgpuSchedDataWithARR;\n\n    struct\n    {\n        unsigned int    timeslice;          //!< The timeslice in ns(Nanoseconds) for each software run list as configured, or the default value otherwise\n    } vgpuSchedData;\n\n} nvmlVgpuSchedulerSetParams_t;\n\n/**\n * Structure to set the vGPU scheduler state\n */\ntypedef struct nvmlVgpuSchedulerSetState_st\n{\n    unsigned int                    schedulerPolicy;    //!< Scheduler policy\n    unsigned int                    enableARRMode;      //!< Adaptive Round Robin scheduler\n    nvmlVgpuSchedulerSetParams_t    schedulerParams;\n} nvmlVgpuSchedulerSetState_t;\n\n/**\n * Structure to store the vGPU scheduler capabilities\n */\ntypedef struct nvmlVgpuSchedulerCapabilities_st\n{\n    unsigned int        supportedSchedulers[NVML_SUPPORTED_VGPU_SCHEDULER_POLICY_COUNT]; //!< List the supported vGPU schedulers on the device\n    unsigned int        maxTimeslice;                                                    //!< Maximum timeslice value in ns\n    unsigned int        minTimeslice;                                                    //!< Minimum timeslice value in ns\n    unsigned int        isArrModeSupported;                                              //!< Flag to check Adaptive Round Robin mode enabled/disabled.\n    unsigned int        maxFrequencyForARR;                                              //!< Maximum frequency for Adaptive Round Robin mode\n    unsigned int        minFrequencyForARR;                                              //!< Minimum frequency for Adaptive Round Robin mode\n    unsigned int        maxAvgFactorForARR;                                              //!< Maximum averaging factor for Adaptive Round Robin mode\n    unsigned int        minAvgFactorForARR;                                              //!< Minimum averaging factor for Adaptive Round Robin mode\n} nvmlVgpuSchedulerCapabilities_t;\n\n/**\n * Structure to store the vGPU license expiry details\n */\ntypedef struct nvmlVgpuLicenseExpiry_st\n{\n    unsigned int    year;        //!< Year of license expiry\n    unsigned short  month;       //!< Month of license expiry\n    unsigned short  day;         //!< Day of license expiry\n    unsigned short  hour;        //!< Hour of license expiry\n    unsigned short  min;         //!< Minutes of license expiry\n    unsigned short  sec;         //!< Seconds of license expiry\n    unsigned char   status;      //!< License expiry status\n} nvmlVgpuLicenseExpiry_t;\n\n/**\n * vGPU license state\n */\n#define NVML_GRID_LICENSE_STATE_UNKNOWN                 0   //!< Unknown state\n#define NVML_GRID_LICENSE_STATE_UNINITIALIZED           1   //!< Uninitialized state\n#define NVML_GRID_LICENSE_STATE_UNLICENSED_UNRESTRICTED 2   //!< Unlicensed unrestricted state\n#define NVML_GRID_LICENSE_STATE_UNLICENSED_RESTRICTED   3   //!< Unlicensed restricted state\n#define NVML_GRID_LICENSE_STATE_UNLICENSED              4   //!< Unlicensed state\n#define NVML_GRID_LICENSE_STATE_LICENSED                5   //!< Licensed state\n\ntypedef struct nvmlVgpuLicenseInfo_st\n{\n    unsigned char               isLicensed;     //!< License status\n    nvmlVgpuLicenseExpiry_t     licenseExpiry;  //!< License expiry information\n    unsigned int                currentState;   //!< Current license state\n} nvmlVgpuLicenseInfo_t;\n\n/**\n * Structure to store license expiry date and time values\n */\ntypedef struct nvmlGridLicenseExpiry_st\n{\n    unsigned int   year;        //!< Year value of license expiry\n    unsigned short month;       //!< Month value of license expiry\n    unsigned short day;         //!< Day value of license expiry\n    unsigned short hour;        //!< Hour value of license expiry\n    unsigned short min;         //!< Minutes value of license expiry\n    unsigned short sec;         //!< Seconds value of license expiry\n    unsigned char  status;      //!< License expiry status\n} nvmlGridLicenseExpiry_t;\n\n/**\n * Structure containing vGPU software licensable feature information\n */\ntypedef struct nvmlGridLicensableFeature_st\n{\n    nvmlGridLicenseFeatureCode_t    featureCode;                                 //!< Licensed feature code\n    unsigned int                    featureState;                                //!< Non-zero if feature is currently licensed, otherwise zero\n    char                            licenseInfo[NVML_GRID_LICENSE_BUFFER_SIZE];  //!< Deprecated.\n    char                            productName[NVML_GRID_LICENSE_BUFFER_SIZE];  //!< Product name of feature\n    unsigned int                    featureEnabled;                              //!< Non-zero if feature is enabled, otherwise zero\n    nvmlGridLicenseExpiry_t         licenseExpiry;                               //!< License expiry structure containing date and time\n} nvmlGridLicensableFeature_t;\n\n/**\n * Structure to store vGPU software licensable features\n */\ntypedef struct nvmlGridLicensableFeatures_st\n{\n    int                         isGridLicenseSupported;                                       //!< Non-zero if vGPU Software Licensing is supported on the system, otherwise zero\n    unsigned int                licensableFeaturesCount;                                      //!< Entries returned in \\a gridLicensableFeatures array\n    nvmlGridLicensableFeature_t gridLicensableFeatures[NVML_GRID_LICENSE_FEATURE_MAX_COUNT];  //!< Array of vGPU software licensable features.\n} nvmlGridLicensableFeatures_t;\n\n/**\n * Enum describing the GPU Recovery Action\n */\ntypedef enum nvmlDeviceGpuRecoveryAction_s  {\n    NVML_GPU_RECOVERY_ACTION_NONE = 0,\n    NVML_GPU_RECOVERY_ACTION_GPU_RESET = 1,\n    NVML_GPU_RECOVERY_ACTION_NODE_REBOOT = 2,\n    NVML_GPU_RECOVERY_ACTION_DRAIN_P2P = 3,\n    NVML_GPU_RECOVERY_ACTION_DRAIN_AND_RESET = 4,\n} nvmlDeviceGpuRecoveryAction_t;\n\n/**\n * Structure to store the vGPU type IDs -- version 1\n */\ntypedef struct\n{\n    unsigned int        version;            //!< IN: The version number of this struct\n    unsigned int        vgpuCount;          //!< IN/OUT: Number of vGPU types\n    nvmlVgpuTypeId_t    *vgpuTypeIds;       //!< OUT: List of vGPU type IDs\n} nvmlVgpuTypeIdInfo_v1_t;\ntypedef nvmlVgpuTypeIdInfo_v1_t nvmlVgpuTypeIdInfo_t;\n#define nvmlVgpuTypeIdInfo_v1 NVML_STRUCT_VERSION(VgpuTypeIdInfo, 1)\n\n/**\n * Structure to store the maximum number of possible vGPU type IDs -- version 1\n */\ntypedef struct\n{\n    unsigned int        version;            //!< IN: The version number of this struct\n    nvmlVgpuTypeId_t    vgpuTypeId;         //!< IN: Handle to vGPU type\n    unsigned int        maxInstancePerGI;   //!< OUT: Maximum number of vGPU instances per GPU instance\n} nvmlVgpuTypeMaxInstance_v1_t;\ntypedef nvmlVgpuTypeMaxInstance_v1_t nvmlVgpuTypeMaxInstance_t;\n#define nvmlVgpuTypeMaxInstance_v1 NVML_STRUCT_VERSION(VgpuTypeMaxInstance, 1)\n\n/**\n * Structure to store active vGPU instance information -- Version 1\n */\ntypedef struct\n{\n    unsigned int       version;          //!< IN: The version number of this struct\n    unsigned int       vgpuCount;        //!< IN/OUT: Count of the active vGPU instances\n    nvmlVgpuInstance_t *vgpuInstances;   //!< IN/OUT: list of active vGPU instances\n} nvmlActiveVgpuInstanceInfo_v1_t;\ntypedef nvmlActiveVgpuInstanceInfo_v1_t nvmlActiveVgpuInstanceInfo_t;\n#define nvmlActiveVgpuInstanceInfo_v1 NVML_STRUCT_VERSION(ActiveVgpuInstanceInfo, 1)\n\n/**\n * Structure to set vGPU scheduler state information -- version 1\n */\ntypedef struct\n{\n    unsigned int                    version;            //!< IN: The version number of this struct\n    unsigned int                    engineId;           //!< IN: One of NVML_VGPU_SCHEDULER_ENGINE_TYPE_*.\n    unsigned int                    schedulerPolicy;    //!< IN: Scheduler policy\n    unsigned int                    enableARRMode;      //!< IN: Adaptive Round Robin scheduler\n    nvmlVgpuSchedulerSetParams_t    schedulerParams;    //!< IN: vGPU Scheduler Parameters\n} nvmlVgpuSchedulerState_v1_t;\ntypedef nvmlVgpuSchedulerState_v1_t nvmlVgpuSchedulerState_t;\n#define nvmlVgpuSchedulerState_v1 NVML_STRUCT_VERSION(VgpuSchedulerState, 1)\n\n/**\n * Structure to store vGPU scheduler state information -- Version 1\n */\ntypedef struct\n{\n    unsigned int                version;             //!< IN:  The version number of this struct\n    unsigned int                engineId;            //!< IN:  Engine whose software scheduler state info is fetched. One of NVML_VGPU_SCHEDULER_ENGINE_TYPE_*.\n    unsigned int                schedulerPolicy;     //!< OUT: Scheduler policy\n    unsigned int                arrMode;             //!< OUT: Adaptive Round Robin scheduler mode. One of the NVML_VGPU_SCHEDULER_ARR_*.\n    nvmlVgpuSchedulerParams_t   schedulerParams;     //!< OUT: vGPU Scheduler Parameters\n} nvmlVgpuSchedulerStateInfo_v1_t;\ntypedef nvmlVgpuSchedulerStateInfo_v1_t nvmlVgpuSchedulerStateInfo_t;\n#define nvmlVgpuSchedulerStateInfo_v1 NVML_STRUCT_VERSION(VgpuSchedulerStateInfo, 1)\n\n/**\n * Structure to store vGPU scheduler log information -- Version 1\n */\ntypedef struct\n{\n    unsigned int                version;                                       //!< IN: The version number of this struct\n    unsigned int                engineId;                                      //!< IN: Engine whose software runlist log entries are fetched. One of One of NVML_VGPU_SCHEDULER_ENGINE_TYPE_*.\n    unsigned int                schedulerPolicy;                               //!< OUT: Scheduler policy\n    unsigned int                arrMode;                                       //!< OUT: Adaptive Round Robin scheduler mode. One of the NVML_VGPU_SCHEDULER_ARR_*.\n    nvmlVgpuSchedulerParams_t   schedulerParams;                               //!< OUT: vGPU Scheduler Parameters\n    unsigned int                entriesCount;                                  //!< OUT: Count of log entries fetched\n    nvmlVgpuSchedulerLogEntry_t logEntries[NVML_SCHEDULER_SW_MAX_LOG_ENTRIES]; //!< OUT: Structure to store the state and logs of a software runlist\n} nvmlVgpuSchedulerLogInfo_v1_t;\ntypedef nvmlVgpuSchedulerLogInfo_v1_t nvmlVgpuSchedulerLogInfo_t;\n#define nvmlVgpuSchedulerLogInfo_v1 NVML_STRUCT_VERSION(VgpuSchedulerLogInfo, 1)\n\n/**\n * Structure to store creatable vGPU placement information -- version 1\n */\ntypedef struct\n{\n    unsigned int     version;               //!< IN: The version number of this struct\n    nvmlVgpuTypeId_t vgpuTypeId;            //!< IN: Handle to vGPU type\n    unsigned int     count;                 //!< IN/OUT: Count of the placement IDs\n    unsigned int     *placementIds;         //!< IN/OUT: Placement IDs for the vGPU type\n    unsigned int     placementSize;         //!< OUT: The number of slots occupied by the vGPU type\n} nvmlVgpuCreatablePlacementInfo_v1_t;\ntypedef nvmlVgpuCreatablePlacementInfo_v1_t nvmlVgpuCreatablePlacementInfo_t;\n#define nvmlVgpuCreatablePlacementInfo_v1 NVML_STRUCT_VERSION(VgpuCreatablePlacementInfo, 1)\n\n/** @} */\n/** @} */\n\n/***************************************************************************************************/\n/** @defgroup nvmlFieldValueEnums Field Value Enums\n *  @{\n */\n/***************************************************************************************************/\n\n/**\n * Field Identifiers.\n *\n * All Identifiers pertain to a device. Each ID is only used once and is guaranteed never to change.\n */\n#define NVML_FI_DEV_ECC_CURRENT           1   //!< Current ECC mode. 1=Active. 0=Inactive\n#define NVML_FI_DEV_ECC_PENDING           2   //!< Pending ECC mode. 1=Active. 0=Inactive\n/* ECC Count Totals */\n#define NVML_FI_DEV_ECC_SBE_VOL_TOTAL     3   //!< Total single bit volatile ECC errors\n#define NVML_FI_DEV_ECC_DBE_VOL_TOTAL     4   //!< Total double bit volatile ECC errors\n#define NVML_FI_DEV_ECC_SBE_AGG_TOTAL     5   //!< Total single bit aggregate (persistent) ECC errors\n#define NVML_FI_DEV_ECC_DBE_AGG_TOTAL     6   //!< Total double bit aggregate (persistent) ECC errors\n/* Individual ECC locations */\n#define NVML_FI_DEV_ECC_SBE_VOL_L1        7   //!< L1 cache single bit volatile ECC errors\n#define NVML_FI_DEV_ECC_DBE_VOL_L1        8   //!< L1 cache double bit volatile ECC errors\n#define NVML_FI_DEV_ECC_SBE_VOL_L2        9   //!< L2 cache single bit volatile ECC errors\n#define NVML_FI_DEV_ECC_DBE_VOL_L2        10  //!< L2 cache double bit volatile ECC errors\n#define NVML_FI_DEV_ECC_SBE_VOL_DEV       11  //!< Device memory single bit volatile ECC errors\n#define NVML_FI_DEV_ECC_DBE_VOL_DEV       12  //!< Device memory double bit volatile ECC errors\n#define NVML_FI_DEV_ECC_SBE_VOL_REG       13  //!< Register file single bit volatile ECC errors\n#define NVML_FI_DEV_ECC_DBE_VOL_REG       14  //!< Register file double bit volatile ECC errors\n#define NVML_FI_DEV_ECC_SBE_VOL_TEX       15  //!< Texture memory single bit volatile ECC errors\n#define NVML_FI_DEV_ECC_DBE_VOL_TEX       16  //!< Texture memory double bit volatile ECC errors\n#define NVML_FI_DEV_ECC_DBE_VOL_CBU       17  //!< CBU double bit volatile ECC errors\n#define NVML_FI_DEV_ECC_SBE_AGG_L1        18  //!< L1 cache single bit aggregate (persistent) ECC errors\n#define NVML_FI_DEV_ECC_DBE_AGG_L1        19  //!< L1 cache double bit aggregate (persistent) ECC errors\n#define NVML_FI_DEV_ECC_SBE_AGG_L2        20  //!< L2 cache single bit aggregate (persistent) ECC errors\n#define NVML_FI_DEV_ECC_DBE_AGG_L2        21  //!< L2 cache double bit aggregate (persistent) ECC errors\n#define NVML_FI_DEV_ECC_SBE_AGG_DEV       22  //!< Device memory single bit aggregate (persistent) ECC errors\n#define NVML_FI_DEV_ECC_DBE_AGG_DEV       23  //!< Device memory double bit aggregate (persistent) ECC errors\n#define NVML_FI_DEV_ECC_SBE_AGG_REG       24  //!< Register File single bit aggregate (persistent) ECC errors\n#define NVML_FI_DEV_ECC_DBE_AGG_REG       25  //!< Register File double bit aggregate (persistent) ECC errors\n#define NVML_FI_DEV_ECC_SBE_AGG_TEX       26  //!< Texture memory single bit aggregate (persistent) ECC errors\n#define NVML_FI_DEV_ECC_DBE_AGG_TEX       27  //!< Texture memory double bit aggregate (persistent) ECC errors\n#define NVML_FI_DEV_ECC_DBE_AGG_CBU       28  //!< CBU double bit aggregate ECC errors\n\n/* Page Retirement */\n#define NVML_FI_DEV_RETIRED_SBE           29  //!< Number of retired pages because of single bit errors\n#define NVML_FI_DEV_RETIRED_DBE           30  //!< Number of retired pages because of double bit errors\n#define NVML_FI_DEV_RETIRED_PENDING       31  //!< If any pages are pending retirement. 1=yes. 0=no.\n\n/**\n * NVLink Flit Error Counters\n *\n * Link ID needs to be specified in the scopeId field in nvmlFieldValue_t.\n */\n#define NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L0    32 //!< NVLink flow control CRC  Error Counter for Lane 0\n#define NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L1    33 //!< NVLink flow control CRC  Error Counter for Lane 1\n#define NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L2    34 //!< NVLink flow control CRC  Error Counter for Lane 2\n#define NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L3    35 //!< NVLink flow control CRC  Error Counter for Lane 3\n#define NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L4    36 //!< NVLink flow control CRC  Error Counter for Lane 4\n#define NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L5    37 //!< NVLink flow control CRC  Error Counter for Lane 5\n#define NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_TOTAL 38 //!< NVLink flow control CRC  Error Counter total for all Lanes\n\n/**\n * NVLink CRC Data Error Counters\n *\n * Link ID needs to be specified in the scopeId field in nvmlFieldValue_t.\n */\n#define NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L0    39 //!< NVLink data CRC Error Counter for Lane 0\n#define NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L1    40 //!< NVLink data CRC Error Counter for Lane 1\n#define NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L2    41 //!< NVLink data CRC Error Counter for Lane 2\n#define NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L3    42 //!< NVLink data CRC Error Counter for Lane 3\n#define NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L4    43 //!< NVLink data CRC Error Counter for Lane 4\n#define NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L5    44 //!< NVLink data CRC Error Counter for Lane 5\n#define NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_TOTAL 45 //!< NvLink data CRC Error Counter total for all Lanes\n\n/**\n * NVLink Replay Error Counters\n *\n * Link ID needs to be specified in the scopeId field in nvmlFieldValue_t.\n */\n#define NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L0      46 //!< NVLink Replay Error Counter for Lane 0\n#define NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L1      47 //!< NVLink Replay Error Counter for Lane 1\n#define NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L2      48 //!< NVLink Replay Error Counter for Lane 2\n#define NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L3      49 //!< NVLink Replay Error Counter for Lane 3\n#define NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L4      50 //!< NVLink Replay Error Counter for Lane 4\n#define NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L5      51 //!< NVLink Replay Error Counter for Lane 5\n#define NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_TOTAL   52 //!< NVLink Replay Error Counter total for all Lanes\n\n/**\n * NVLink Recovery Error Counters\n *\n * Link ID needs to be specified in the scopeId field in nvmlFieldValue_t.\n */\n#define NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L0    53 //!< NVLink Recovery Error Counter for Lane 0\n#define NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L1    54 //!< NVLink Recovery Error Counter for Lane 1\n#define NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L2    55 //!< NVLink Recovery Error Counter for Lane 2\n#define NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L3    56 //!< NVLink Recovery Error Counter for Lane 3\n#define NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L4    57 //!< NVLink Recovery Error Counter for Lane 4\n#define NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L5    58 //!< NVLink Recovery Error Counter for Lane 5\n#define NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_TOTAL 59 //!< NVLink Recovery Error Counter total for all Lanes\n\n/* NvLink Bandwidth Counters */\n/*\n * NVML_FI_DEV_NVLINK_BANDWIDTH_* field values are now deprecated.\n * Please use the following field values instead:\n * NVML_FI_DEV_NVLINK_THROUGHPUT_DATA_TX\n * NVML_FI_DEV_NVLINK_THROUGHPUT_DATA_RX\n * NVML_FI_DEV_NVLINK_THROUGHPUT_RAW_TX\n * NVML_FI_DEV_NVLINK_THROUGHPUT_RAW_RX\n */\n#define NVML_FI_DEV_NVLINK_BANDWIDTH_C0_L0     60 //!< NVLink Bandwidth Counter for Counter Set 0, Lane 0\n#define NVML_FI_DEV_NVLINK_BANDWIDTH_C0_L1     61 //!< NVLink Bandwidth Counter for Counter Set 0, Lane 1\n#define NVML_FI_DEV_NVLINK_BANDWIDTH_C0_L2     62 //!< NVLink Bandwidth Counter for Counter Set 0, Lane 2\n#define NVML_FI_DEV_NVLINK_BANDWIDTH_C0_L3     63 //!< NVLink Bandwidth Counter for Counter Set 0, Lane 3\n#define NVML_FI_DEV_NVLINK_BANDWIDTH_C0_L4     64 //!< NVLink Bandwidth Counter for Counter Set 0, Lane 4\n#define NVML_FI_DEV_NVLINK_BANDWIDTH_C0_L5     65 //!< NVLink Bandwidth Counter for Counter Set 0, Lane 5\n#define NVML_FI_DEV_NVLINK_BANDWIDTH_C0_TOTAL  66 //!< NVLink Bandwidth Counter Total for Counter Set 0, All Lanes\n\n/* NvLink Bandwidth Counters */\n#define NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L0     67 //!< NVLink Bandwidth Counter for Counter Set 1, Lane 0\n#define NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L1     68 //!< NVLink Bandwidth Counter for Counter Set 1, Lane 1\n#define NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L2     69 //!< NVLink Bandwidth Counter for Counter Set 1, Lane 2\n#define NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L3     70 //!< NVLink Bandwidth Counter for Counter Set 1, Lane 3\n#define NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L4     71 //!< NVLink Bandwidth Counter for Counter Set 1, Lane 4\n#define NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L5     72 //!< NVLink Bandwidth Counter for Counter Set 1, Lane 5\n#define NVML_FI_DEV_NVLINK_BANDWIDTH_C1_TOTAL  73 //!< NVLink Bandwidth Counter Total for Counter Set 1, All Lanes\n\n/* NVML Perf Policy Counters */\n#define NVML_FI_DEV_PERF_POLICY_POWER              74   //!< Perf Policy Counter for Power Policy\n#define NVML_FI_DEV_PERF_POLICY_THERMAL            75   //!< Perf Policy Counter for Thermal Policy\n#define NVML_FI_DEV_PERF_POLICY_SYNC_BOOST         76   //!< Perf Policy Counter for Sync boost Policy\n#define NVML_FI_DEV_PERF_POLICY_BOARD_LIMIT        77   //!< Perf Policy Counter for Board Limit\n#define NVML_FI_DEV_PERF_POLICY_LOW_UTILIZATION    78   //!< Perf Policy Counter for Low GPU Utilization Policy\n#define NVML_FI_DEV_PERF_POLICY_RELIABILITY        79   //!< Perf Policy Counter for Reliability Policy\n#define NVML_FI_DEV_PERF_POLICY_TOTAL_APP_CLOCKS   80   //!< Perf Policy Counter for Total App Clock Policy\n#define NVML_FI_DEV_PERF_POLICY_TOTAL_BASE_CLOCKS  81   //!< Perf Policy Counter for Total Base Clocks Policy\n\n/* Memory temperatures */\n#define NVML_FI_DEV_MEMORY_TEMP  82 //!< Memory temperature for the device\n\n/* Energy Counter */\n#define NVML_FI_DEV_TOTAL_ENERGY_CONSUMPTION 83 //!< Total energy consumption for the GPU in mJ since the driver was last reloaded\n\n/**\n * NVLink Speed\n *\n * Link ID needs to be specified in the scopeId field in nvmlFieldValue_t.\n */\n#define NVML_FI_DEV_NVLINK_SPEED_MBPS_L0     84  //!< NVLink Speed in MBps for Link 0\n#define NVML_FI_DEV_NVLINK_SPEED_MBPS_L1     85  //!< NVLink Speed in MBps for Link 1\n#define NVML_FI_DEV_NVLINK_SPEED_MBPS_L2     86  //!< NVLink Speed in MBps for Link 2\n#define NVML_FI_DEV_NVLINK_SPEED_MBPS_L3     87  //!< NVLink Speed in MBps for Link 3\n#define NVML_FI_DEV_NVLINK_SPEED_MBPS_L4     88  //!< NVLink Speed in MBps for Link 4\n#define NVML_FI_DEV_NVLINK_SPEED_MBPS_L5     89  //!< NVLink Speed in MBps for Link 5\n#define NVML_FI_DEV_NVLINK_SPEED_MBPS_COMMON 90  //!< Common NVLink Speed in MBps for active links\n\n#define NVML_FI_DEV_NVLINK_LINK_COUNT        91  //!< Number of NVLinks present on the device\n\n#define NVML_FI_DEV_RETIRED_PENDING_SBE      92  //!< If any pages are pending retirement due to SBE. 1=yes. 0=no.\n#define NVML_FI_DEV_RETIRED_PENDING_DBE      93  //!< If any pages are pending retirement due to DBE. 1=yes. 0=no.\n\n#define NVML_FI_DEV_PCIE_REPLAY_COUNTER             94  //!< PCIe replay counter\n#define NVML_FI_DEV_PCIE_REPLAY_ROLLOVER_COUNTER    95  //!< PCIe replay rollover counter\n\n/**\n * NVLink Flit Error Counters\n *\n * Link ID needs to be specified in the scopeId field in nvmlFieldValue_t.\n */\n#define NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L6     96 //!< NVLink flow control CRC  Error Counter for Lane 6\n#define NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L7     97 //!< NVLink flow control CRC  Error Counter for Lane 7\n#define NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L8     98 //!< NVLink flow control CRC  Error Counter for Lane 8\n#define NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L9     99 //!< NVLink flow control CRC  Error Counter for Lane 9\n#define NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L10   100 //!< NVLink flow control CRC  Error Counter for Lane 10\n#define NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L11   101 //!< NVLink flow control CRC  Error Counter for Lane 11\n\n/**\n * NVLink CRC Data Error Counters\n *\n * Link ID needs to be specified in the scopeId field in nvmlFieldValue_t.\n */\n#define NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L6    102 //!< NVLink data CRC Error Counter for Lane 6\n#define NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L7    103 //!< NVLink data CRC Error Counter for Lane 7\n#define NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L8    104 //!< NVLink data CRC Error Counter for Lane 8\n#define NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L9    105 //!< NVLink data CRC Error Counter for Lane 9\n#define NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L10   106 //!< NVLink data CRC Error Counter for Lane 10\n#define NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L11   107 //!< NVLink data CRC Error Counter for Lane 11\n\n/**\n * NVLink Replay Error Counters\n *\n * Link ID needs to be specified in the scopeId field in nvmlFieldValue_t.\n */\n#define NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L6      108 //!< NVLink Replay Error Counter for Lane 6\n#define NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L7      109 //!< NVLink Replay Error Counter for Lane 7\n#define NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L8      110 //!< NVLink Replay Error Counter for Lane 8\n#define NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L9      111 //!< NVLink Replay Error Counter for Lane 9\n#define NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L10     112 //!< NVLink Replay Error Counter for Lane 10\n#define NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L11     113 //!< NVLink Replay Error Counter for Lane 11\n\n/**\n * NVLink Recovery Error Counters\n *\n * Link ID needs to be specified in the scopeId field in nvmlFieldValue_t.\n */\n#define NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L6    114 //!< NVLink Recovery Error Counter for Lane 6\n#define NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L7    115 //!< NVLink Recovery Error Counter for Lane 7\n#define NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L8    116 //!< NVLink Recovery Error Counter for Lane 8\n#define NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L9    117 //!< NVLink Recovery Error Counter for Lane 9\n#define NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L10   118 //!< NVLink Recovery Error Counter for Lane 10\n#define NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L11   119 //!< NVLink Recovery Error Counter for Lane 11\n\n/* NvLink Bandwidth Counters */\n/*\n * NVML_FI_DEV_NVLINK_BANDWIDTH_* field values are now deprecated.\n * Please use the following field values instead:\n * NVML_FI_DEV_NVLINK_THROUGHPUT_DATA_TX\n * NVML_FI_DEV_NVLINK_THROUGHPUT_DATA_RX\n * NVML_FI_DEV_NVLINK_THROUGHPUT_RAW_TX\n * NVML_FI_DEV_NVLINK_THROUGHPUT_RAW_RX\n */\n#define NVML_FI_DEV_NVLINK_BANDWIDTH_C0_L6     120 //!< NVLink Bandwidth Counter for Counter Set 0, Lane 6\n#define NVML_FI_DEV_NVLINK_BANDWIDTH_C0_L7     121 //!< NVLink Bandwidth Counter for Counter Set 0, Lane 7\n#define NVML_FI_DEV_NVLINK_BANDWIDTH_C0_L8     122 //!< NVLink Bandwidth Counter for Counter Set 0, Lane 8\n#define NVML_FI_DEV_NVLINK_BANDWIDTH_C0_L9     123 //!< NVLink Bandwidth Counter for Counter Set 0, Lane 9\n#define NVML_FI_DEV_NVLINK_BANDWIDTH_C0_L10    124 //!< NVLink Bandwidth Counter for Counter Set 0, Lane 10\n#define NVML_FI_DEV_NVLINK_BANDWIDTH_C0_L11    125 //!< NVLink Bandwidth Counter for Counter Set 0, Lane 11\n\n/* NvLink Bandwidth Counters */\n#define NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L6     126 //!< NVLink Bandwidth Counter for Counter Set 1, Lane 6\n#define NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L7     127 //!< NVLink Bandwidth Counter for Counter Set 1, Lane 7\n#define NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L8     128 //!< NVLink Bandwidth Counter for Counter Set 1, Lane 8\n#define NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L9     129 //!< NVLink Bandwidth Counter for Counter Set 1, Lane 9\n#define NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L10    130 //!< NVLink Bandwidth Counter for Counter Set 1, Lane 10\n#define NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L11    131 //!< NVLink Bandwidth Counter for Counter Set 1, Lane 11\n\n/**\n * NVLink Speed\n *\n * Link ID needs to be specified in the scopeId field in nvmlFieldValue_t.\n */\n#define NVML_FI_DEV_NVLINK_SPEED_MBPS_L6     132  //!< NVLink Speed in MBps for Link 6\n#define NVML_FI_DEV_NVLINK_SPEED_MBPS_L7     133  //!< NVLink Speed in MBps for Link 7\n#define NVML_FI_DEV_NVLINK_SPEED_MBPS_L8     134  //!< NVLink Speed in MBps for Link 8\n#define NVML_FI_DEV_NVLINK_SPEED_MBPS_L9     135  //!< NVLink Speed in MBps for Link 9\n#define NVML_FI_DEV_NVLINK_SPEED_MBPS_L10    136  //!< NVLink Speed in MBps for Link 10\n#define NVML_FI_DEV_NVLINK_SPEED_MBPS_L11    137  //!< NVLink Speed in MBps for Link 11\n\n/**\n * NVLink throughput counters field values\n *\n * Link ID needs to be specified in the scopeId field in nvmlFieldValue_t.\n * A scopeId of UINT_MAX returns aggregate value summed up across all links\n * for the specified counter type in fieldId.\n */\n#define NVML_FI_DEV_NVLINK_THROUGHPUT_DATA_TX      138 //!< NVLink TX Data throughput in KiB\n#define NVML_FI_DEV_NVLINK_THROUGHPUT_DATA_RX      139 //!< NVLink RX Data throughput in KiB\n#define NVML_FI_DEV_NVLINK_THROUGHPUT_RAW_TX       140 //!< NVLink TX Data + protocol overhead in KiB\n#define NVML_FI_DEV_NVLINK_THROUGHPUT_RAW_RX       141 //!< NVLink RX Data + protocol overhead in KiB\n\n/* Row Remapper */\n#define NVML_FI_DEV_REMAPPED_COR        142 //!< Number of remapped rows due to correctable errors\n#define NVML_FI_DEV_REMAPPED_UNC        143 //!< Number of remapped rows due to uncorrectable errors\n#define NVML_FI_DEV_REMAPPED_PENDING    144 //!< If any rows are pending remapping. 1=yes 0=no\n#define NVML_FI_DEV_REMAPPED_FAILURE    145 //!< If any rows failed to be remapped 1=yes 0=no\n\n/**\n * Remote device NVLink ID\n *\n * Link ID needs to be specified in the scopeId field in nvmlFieldValue_t.\n */\n#define NVML_FI_DEV_NVLINK_REMOTE_NVLINK_ID     146 //!< Remote device NVLink ID\n\n/**\n * NVSwitch: connected NVLink count\n */\n#define NVML_FI_DEV_NVSWITCH_CONNECTED_LINK_COUNT   147  //!< Number of NVLinks connected to NVSwitch\n\n/* NvLink ECC Data Error Counters\n *\n * Lane ID needs to be specified in the scopeId field in nvmlFieldValue_t.\n *\n */\n#define NVML_FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L0    148 //!< NVLink data ECC Error Counter for Link 0\n#define NVML_FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L1    149 //!< NVLink data ECC Error Counter for Link 1\n#define NVML_FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L2    150 //!< NVLink data ECC Error Counter for Link 2\n#define NVML_FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L3    151 //!< NVLink data ECC Error Counter for Link 3\n#define NVML_FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L4    152 //!< NVLink data ECC Error Counter for Link 4\n#define NVML_FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L5    153 //!< NVLink data ECC Error Counter for Link 5\n#define NVML_FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L6    154 //!< NVLink data ECC Error Counter for Link 6\n#define NVML_FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L7    155 //!< NVLink data ECC Error Counter for Link 7\n#define NVML_FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L8    156 //!< NVLink data ECC Error Counter for Link 8\n#define NVML_FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L9    157 //!< NVLink data ECC Error Counter for Link 9\n#define NVML_FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L10   158 //!< NVLink data ECC Error Counter for Link 10\n#define NVML_FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L11   159 //!< NVLink data ECC Error Counter for Link 11\n#define NVML_FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_TOTAL 160 //!< NVLink data ECC Error Counter total for all Links\n\n/**\n * NVLink Error Replay\n *\n * Link ID needs to be specified in the scopeId field in nvmlFieldValue_t.\n */\n#define NVML_FI_DEV_NVLINK_ERROR_DL_REPLAY            161 //!< NVLink Replay Error Counter\n                                                          //!< This is unsupported for Blackwell+.\n                                                          //!< Please use NVML_FI_DEV_NVLINK_COUNT_LINK_RECOVERY_*\n/**\n * NVLink Recovery Error Counter\n *\n * Link ID needs to be specified in the scopeId field in nvmlFieldValue_t.\n */\n#define NVML_FI_DEV_NVLINK_ERROR_DL_RECOVERY          162 //!< NVLink Recovery Error Counter\n                                                          //!< This is unsupported for Blackwell+\n                                                          //!< Please use NVML_FI_DEV_NVLINK_COUNT_LINK_RECOVERY_*\n\n/**\n * NVLink Recovery Error CRC Counter\n *\n * Link ID needs to be specified in the scopeId field in nvmlFieldValue_t.\n */\n#define NVML_FI_DEV_NVLINK_ERROR_DL_CRC               163 //!< NVLink CRC Error Counter\n                                                          //!< This is unsupported for Blackwell+\n                                                          //!< Please use NVML_FI_DEV_NVLINK_COUNT_LINK_RECOVERY_*\n\n/**\n * NVLink Speed, State and Version field id 164, 165, and 166\n *\n * Link ID needs to be specified in the scopeId field in nvmlFieldValue_t.\n */\n#define NVML_FI_DEV_NVLINK_GET_SPEED                  164 //!< NVLink Speed in MBps\n#define NVML_FI_DEV_NVLINK_GET_STATE                  165 //!< NVLink State - Active,Inactive\n#define NVML_FI_DEV_NVLINK_GET_VERSION                166 //!< NVLink Version\n\n#define NVML_FI_DEV_NVLINK_GET_POWER_STATE            167 //!< NVLink Power state. 0=HIGH_SPEED 1=LOW_SPEED\n#define NVML_FI_DEV_NVLINK_GET_POWER_THRESHOLD        168 //!< NVLink length of idle period (units can be found from\n                                                          //!< NVML_FI_DEV_NVLINK_GET_POWER_THRESHOLD_UNITS) before\n                                                          //!< transitioning links to sleep state\n\n#define NVML_FI_DEV_PCIE_L0_TO_RECOVERY_COUNTER       169 //!< Device PEX error recovery counter\n\n#define NVML_FI_DEV_C2C_LINK_COUNT                    170 //!< Number of C2C Links present on the device\n#define NVML_FI_DEV_C2C_LINK_GET_STATUS               171 //!< C2C Link Status 0=INACTIVE 1=ACTIVE\n#define NVML_FI_DEV_C2C_LINK_GET_MAX_BW               172 //!< C2C Link Speed in MBps for active links\n\n#define NVML_FI_DEV_PCIE_COUNT_CORRECTABLE_ERRORS     173 //!< PCIe Correctable Errors Counter\n#define NVML_FI_DEV_PCIE_COUNT_NAKS_RECEIVED          174 //!< PCIe NAK Receive Counter\n#define NVML_FI_DEV_PCIE_COUNT_RECEIVER_ERROR         175 //!< PCIe Receiver Error Counter\n#define NVML_FI_DEV_PCIE_COUNT_BAD_TLP                176 //!< PCIe Bad TLP Counter\n#define NVML_FI_DEV_PCIE_COUNT_NAKS_SENT              177 //!< PCIe NAK Send Counter\n#define NVML_FI_DEV_PCIE_COUNT_BAD_DLLP               178 //!< PCIe Bad DLLP Counter\n#define NVML_FI_DEV_PCIE_COUNT_NON_FATAL_ERROR        179 //!< PCIe Non Fatal Error Counter\n#define NVML_FI_DEV_PCIE_COUNT_FATAL_ERROR            180 //!< PCIe Fatal Error Counter\n#define NVML_FI_DEV_PCIE_COUNT_UNSUPPORTED_REQ        181 //!< PCIe Unsupported Request Counter\n#define NVML_FI_DEV_PCIE_COUNT_LCRC_ERROR             182 //!< PCIe LCRC Error Counter\n#define NVML_FI_DEV_PCIE_COUNT_LANE_ERROR             183 //!< PCIe Per Lane Error Counter.\n\n#define NVML_FI_DEV_IS_RESETLESS_MIG_SUPPORTED        184 //!< Device's Restless MIG Capability\n\n/**\n * Retrieves power usage for this GPU in milliwatts.\n * It is only available if power management mode is supported. See \\ref nvmlDeviceGetPowerManagementMode and\n * \\ref nvmlDeviceGetPowerUsage.\n *\n * scopeId needs to be specified. It signifies:\n * 0 - GPU Only Scope - Metrics for GPU are retrieved\n * 1 - Module scope - Metrics for the module (e.g. CPU + GPU) are retrieved.\n * Note: CPU here refers to NVIDIA CPU (e.g. Grace). x86 or non-NVIDIA ARM is not supported\n */\n#define NVML_FI_DEV_POWER_AVERAGE                     185 //!< GPU power averaged over 1 sec interval, supported on Ampere (except GA100) or newer architectures.\n#define NVML_FI_DEV_POWER_INSTANT                     186 //!< Current GPU power, supported on all architectures.\n#define NVML_FI_DEV_POWER_MIN_LIMIT                   187 //!< Minimum power limit in milliwatts.\n#define NVML_FI_DEV_POWER_MAX_LIMIT                   188 //!< Maximum power limit in milliwatts.\n#define NVML_FI_DEV_POWER_DEFAULT_LIMIT               189 //!< Default power limit in milliwatts (limit which device boots with).\n#define NVML_FI_DEV_POWER_CURRENT_LIMIT               190 //!< Limit currently enforced in milliwatts (This includes other limits set elsewhere. E.g. Out-of-band).\n#define NVML_FI_DEV_ENERGY                            191 //!< Total energy consumption (in mJ) since the driver was last reloaded. Same as \\ref NVML_FI_DEV_TOTAL_ENERGY_CONSUMPTION for the GPU.\n#define NVML_FI_DEV_POWER_REQUESTED_LIMIT             192 //!< Power limit requested by NVML or any other userspace client.\n\n/**\n * GPU T.Limit temperature thresholds in degree Celsius\n *\n * These fields are supported on Ada and later architectures and supersedes \\ref nvmlDeviceGetTemperatureThreshold.\n */\n#define NVML_FI_DEV_TEMPERATURE_SHUTDOWN_TLIMIT       193 //!< T.Limit temperature after which GPU may shut down for HW protection\n#define NVML_FI_DEV_TEMPERATURE_SLOWDOWN_TLIMIT       194 //!< T.Limit temperature after which GPU may begin HW slowdown\n#define NVML_FI_DEV_TEMPERATURE_MEM_MAX_TLIMIT        195 //!< T.Limit temperature after which GPU may begin SW slowdown due to memory temperature\n#define NVML_FI_DEV_TEMPERATURE_GPU_MAX_TLIMIT        196 //!< T.Limit temperature after which GPU may be throttled below base clock\n\n#define NVML_FI_DEV_PCIE_COUNT_TX_BYTES               197 //!< PCIe transmit bytes. Value can be wrapped.\n#define NVML_FI_DEV_PCIE_COUNT_RX_BYTES               198 //!< PCIe receive bytes. Value can be wrapped.\n\n#define NVML_FI_DEV_IS_MIG_MODE_INDEPENDENT_MIG_QUERY_CAPABLE   199 //!< MIG mode independent, MIG query capable device. 1=yes. 0=no.\n\n#define NVML_FI_DEV_NVLINK_GET_POWER_THRESHOLD_MAX              200 //!< Max Nvlink Power Threshold. See NVML_FI_DEV_NVLINK_GET_POWER_THRESHOLD\n\n/**\n * NVLink counter field id 201-225\n *\n * Link ID needs to be specified in the scopeId field in nvmlFieldValue_t.\n */\n#define NVML_FI_DEV_NVLINK_COUNT_XMIT_PACKETS                    201 //!<Total Tx packets on the link in NVLink5\n#define NVML_FI_DEV_NVLINK_COUNT_XMIT_BYTES                      202 //!<Total Tx bytes on the link in NVLink5\n#define NVML_FI_DEV_NVLINK_COUNT_RCV_PACKETS                     203 //!<Total Rx packets on the link in NVLink5\n#define NVML_FI_DEV_NVLINK_COUNT_RCV_BYTES                       204 //!<Total Rx bytes on the link in NVLink5\n#define NVML_FI_DEV_NVLINK_COUNT_VL15_DROPPED                    205 //!<Deprecated, do not use\n#define NVML_FI_DEV_NVLINK_COUNT_MALFORMED_PACKET_ERRORS         206 //!<Number of packets Rx on a link where packets are malformed\n#define NVML_FI_DEV_NVLINK_COUNT_BUFFER_OVERRUN_ERRORS           207 //!<Number of packets that were discarded on Rx due to buffer overrun\n#define NVML_FI_DEV_NVLINK_COUNT_RCV_ERRORS                      208 //!<Total number of packets with errors Rx on a link\n#define NVML_FI_DEV_NVLINK_COUNT_RCV_REMOTE_ERRORS               209 //!<Total number of packets Rx - stomp/EBP marker\n#define NVML_FI_DEV_NVLINK_COUNT_RCV_GENERAL_ERRORS              210 //!<Total number of packets Rx with header mismatch\n#define NVML_FI_DEV_NVLINK_COUNT_LOCAL_LINK_INTEGRITY_ERRORS     211 //!<Total number of times that the count of local errors exceeded a threshold\n#define NVML_FI_DEV_NVLINK_COUNT_XMIT_DISCARDS                   212 //!<Total number of tx error packets that were discarded\n\n#define NVML_FI_DEV_NVLINK_COUNT_LINK_RECOVERY_SUCCESSFUL_EVENTS 213 //!<Number of times link went from Up to recovery, succeeded and link came back up\n#define NVML_FI_DEV_NVLINK_COUNT_LINK_RECOVERY_FAILED_EVENTS     214 //!<Number of times link went from Up to recovery, failed and link was declared down\n#define NVML_FI_DEV_NVLINK_COUNT_LINK_RECOVERY_EVENTS            215 //!<Number of times link went from Up to recovery, irrespective of the result\n\n#define NVML_FI_DEV_NVLINK_COUNT_RAW_BER_LANE0                   216 //!<Deprecated, do not use\n#define NVML_FI_DEV_NVLINK_COUNT_RAW_BER_LANE1                   217 //!<Deprecated, do not use\n#define NVML_FI_DEV_NVLINK_COUNT_RAW_BER                         218 //!<Deprecated, do not use\n#define NVML_FI_DEV_NVLINK_COUNT_EFFECTIVE_ERRORS                219 //!<Sum of the number of errors in each Nvlink packet\n\n/**\n * NVLink Effective BER\n *\n * Bit [0:7]:  BER Exponent value\n * Bit [8:11]: BER MANTISSA value\n * Use macro NVML_NVLINK_ERROR_COUNTER_BER_GET to extract the two fields\n */\n#define NVML_FI_DEV_NVLINK_COUNT_EFFECTIVE_BER                   220 //!<Effective BER for effective errors\n#define NVML_FI_DEV_NVLINK_COUNT_SYMBOL_ERRORS                   221 //!<Number of errors in rx symbols\n\n/**\n * NVLink Symbol BER\n *\n * Bit [0:7]:  BER Exponent value\n * Bit [8:11]: BER MANTISSA value\n * Use macro NVML_NVLINK_ERROR_COUNTER_BER_GET to extract the two fields\n */\n#define NVML_FI_DEV_NVLINK_COUNT_SYMBOL_BER                      222 //!<BER for symbol errors\n\n#define NVML_FI_DEV_NVLINK_GET_POWER_THRESHOLD_MIN               223 //!< Min Nvlink Power Threshold. See NVML_FI_DEV_NVLINK_GET_POWER_THRESHOLD\n#define NVML_FI_DEV_NVLINK_GET_POWER_THRESHOLD_UNITS             224 //!< Values are in the form NVML_NVLINK_LOW_POWER_THRESHOLD_UNIT_*\n#define NVML_FI_DEV_NVLINK_GET_POWER_THRESHOLD_SUPPORTED         225 //!< Determine if Nvlink Power Threshold feature is supported\n\n#define NVML_FI_DEV_RESET_STATUS                                 226 //!< Depracated, do not use (use NVML_FI_DEV_GET_GPU_RECOVERY_ACTION instead)\n#define NVML_FI_DEV_DRAIN_AND_RESET_STATUS                       227 //!< Deprecated, do not use (use NVML_FI_DEV_GET_GPU_RECOVERY_ACTION instead)\n#define NVML_FI_DEV_PCIE_OUTBOUND_ATOMICS_MASK                   228\n#define NVML_FI_DEV_PCIE_INBOUND_ATOMICS_MASK                    229\n#define NVML_FI_DEV_GET_GPU_RECOVERY_ACTION                      230 //!< GPU Recovery action - None/Reset/Reboot/Drain P2P/Drain and Reset\n#define NVML_FI_DEV_C2C_LINK_ERROR_INTR                          231 //!< C2C Link CRC Error Counter\n#define NVML_FI_DEV_C2C_LINK_ERROR_REPLAY                        232 //!< C2C Link Replay Error Counter\n#define NVML_FI_DEV_C2C_LINK_ERROR_REPLAY_B2B                    233 //!< C2C Link Back to Back Replay Error Counter\n#define NVML_FI_DEV_C2C_LINK_POWER_STATE                         234 //!< C2C Link Power state. See NVML_C2C_POWER_STATE_*\n/**\n * NVLink counter field id 235-250\n *\n * Link ID needs to be specified in the scopeId field in nvmlFieldValue_t.\n */\n#define NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_0                   235 //!< Count of symbol errors that are corrected - bin 0\n#define NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_1                   236 //!< Count of symbol errors that are corrected - bin 1\n#define NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_2                   237 //!< Count of symbol errors that are corrected - bin 2\n#define NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_3                   238 //!< Count of symbol errors that are corrected - bin 3\n#define NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_4                   239 //!< Count of symbol errors that are corrected - bin 4\n#define NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_5                   240 //!< Count of symbol errors that are corrected - bin 5\n#define NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_6                   241 //!< Count of symbol errors that are corrected - bin 6\n#define NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_7                   242 //!< Count of symbol errors that are corrected - bin 7\n#define NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_8                   243 //!< Count of symbol errors that are corrected - bin 8\n#define NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_9                   244 //!< Count of symbol errors that are corrected - bin 9\n#define NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_10                  245 //!< Count of symbol errors that are corrected - bin 10\n#define NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_11                  246 //!< Count of symbol errors that are corrected - bin 11\n#define NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_12                  247 //!< Count of symbol errors that are corrected - bin 12\n#define NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_13                  248 //!< Count of symbol errors that are corrected - bin 13\n#define NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_14                  249 //!< Count of symbol errors that are corrected - bin 14\n#define NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_15                  250 //!< Count of symbol errors that are corrected - bin 15\n/**\n * Field values for Clock Throttle Reason Counters\n * All counters are in nanoseconds\n */\n#define NVML_FI_DEV_CLOCKS_EVENT_REASON_SW_POWER_CAP             NVML_FI_DEV_PERF_POLICY_POWER      //!< Throttling to not exceed currently set power limits in ns\n#define NVML_FI_DEV_CLOCKS_EVENT_REASON_SYNC_BOOST               NVML_FI_DEV_PERF_POLICY_SYNC_BOOST //!< Throttling to match minimum possible clock across Sync Boost Group in ns\n#define NVML_FI_DEV_CLOCKS_EVENT_REASON_SW_THERM_SLOWDOWN        251 //!< Throttling to ensure ((GPU temp < GPU Max Operating Temp) && (Memory Temp < Memory Max Operating Temp)) in ns\n#define NVML_FI_DEV_CLOCKS_EVENT_REASON_HW_THERM_SLOWDOWN        252 //!< Throttling due to temperature being too high (reducing core clocks by a factor of 2 or more) in ns\n#define NVML_FI_DEV_CLOCKS_EVENT_REASON_HW_POWER_BRAKE_SLOWDOWN  253 //!< Throttling due to external power brake assertion trigger (reducing core clocks by a factor of 2 or more) in ns\n#define NVML_FI_DEV_POWER_SYNC_BALANCING_FREQ                    254 //!< Accumulated frequency of the GPU to be used for averaging\n#define NVML_FI_DEV_POWER_SYNC_BALANCING_AF                      255 //!< Accumulated activity factor of the GPU to be used for averaging\n/* Power Smoothing */\n#define NVML_FI_PWR_SMOOTHING_ENABLED                                   256 //!< Enablement (0/DISABLED or 1/ENABLED)\n#define NVML_FI_PWR_SMOOTHING_PRIV_LVL                                  257 //!< Current privilege level\n#define NVML_FI_PWR_SMOOTHING_IMM_RAMP_DOWN_ENABLED                     258 //!< Immediate ramp down enablement (0/DISABLED or 1/ENABLED)\n#define NVML_FI_PWR_SMOOTHING_APPLIED_TMP_CEIL                          259 //!< Applied TMP ceiling value in Watts\n#define NVML_FI_PWR_SMOOTHING_APPLIED_TMP_FLOOR                         260 //!< Applied TMP floor value in Watts\n#define NVML_FI_PWR_SMOOTHING_MAX_PERCENT_TMP_FLOOR_SETTING             261 //!< Max % TMP Floor value\n#define NVML_FI_PWR_SMOOTHING_MIN_PERCENT_TMP_FLOOR_SETTING             262 //!< Min % TMP Floor value\n#define NVML_FI_PWR_SMOOTHING_HW_CIRCUITRY_PERCENT_LIFETIME_REMAINING   263 //!< HW Circuitry % lifetime remaining\n#define NVML_FI_PWR_SMOOTHING_MAX_NUM_PRESET_PROFILES                   264 //!< Max number of preset profiles\n#define NVML_FI_PWR_SMOOTHING_PROFILE_PERCENT_TMP_FLOOR                 265 //!< % TMP floor for a given profile\n#define NVML_FI_PWR_SMOOTHING_PROFILE_RAMP_UP_RATE                      266 //!< Ramp up rate in mW/s for a given profile\n#define NVML_FI_PWR_SMOOTHING_PROFILE_RAMP_DOWN_RATE                    267 //!< Ramp down rate in mW/s for a given profile\n#define NVML_FI_PWR_SMOOTHING_PROFILE_RAMP_DOWN_HYST_VAL                268 //!< Ramp down hysteresis value in ms for a given profile\n#define NVML_FI_PWR_SMOOTHING_ACTIVE_PRESET_PROFILE                     269 //!< Active preset profile number\n#define NVML_FI_PWR_SMOOTHING_ADMIN_OVERRIDE_PERCENT_TMP_FLOOR          270 //!< % TMP floor for a given profile\n#define NVML_FI_PWR_SMOOTHING_ADMIN_OVERRIDE_RAMP_UP_RATE               271 //!< Ramp up rate in mW/s for a given profile\n#define NVML_FI_PWR_SMOOTHING_ADMIN_OVERRIDE_RAMP_DOWN_RATE             272 //!< Ramp down rate in mW/s for a given profile\n#define NVML_FI_PWR_SMOOTHING_ADMIN_OVERRIDE_RAMP_DOWN_HYST_VAL         273 //!< Ramp down hysteresis value in ms for a given profile\n#define NVML_FI_MAX                                              274 //!< One greater than the largest field ID defined above\n\n/**\n * NVML_FI_DEV_NVLINK_GET_POWER_THRESHOLD_UNITS\n */\n#define NVML_NVLINK_LOW_POWER_THRESHOLD_UNIT_100US 0x0\n#define NVML_NVLINK_LOW_POWER_THRESHOLD_UNIT_50US  0x1\n\n/**\n * NVML_NVLINK_POWER_STATES\n */\n#define NVML_NVLINK_POWER_STATE_HIGH_SPEED    0x0\n#define NVML_NVLINK_POWER_STATE_LOW           0x1\n\n/*\n * NVML_NVLINK_LOW_POWER_THRESHOLD_MIN will be deprecated.\n * Use the NVML Field Value NVML_FI_DEV_NVLINK_GET_POWER_THRESHOLD_MIN\n * to get the correct Min Low Power Threshold.\n */\n#define NVML_NVLINK_LOW_POWER_THRESHOLD_MIN   0x1\n/*\n * NVML_NVLINK_LOW_POWER_THRESHOLD_MAX will be deprecated.\n * Use the NVML Field Value NVML_FI_DEV_NVLINK_GET_POWER_THRESHOLD_MAX\n * to get the correct Max Low Power Threshold.\n */\n#define NVML_NVLINK_LOW_POWER_THRESHOLD_MAX   0x1FFF\n#define NVML_NVLINK_LOW_POWER_THRESHOLD_RESET 0xFFFFFFFF\n#define NVML_NVLINK_LOW_POWER_THRESHOLD_DEFAULT NVML_NVLINK_LOW_POWER_THRESHOLD_RESET\n\n/* Structure containing Low Power parameters */\ntypedef struct nvmlNvLinkPowerThres_st\n{\n    unsigned int lowPwrThreshold;           //!< Low power threshold\n                                            //   Units can be obtained from\n                                            //   NVML_FI_DEV_NVLINK_GET_POWER_THRESHOLD_UNITS\n} nvmlNvLinkPowerThres_t;\n\n/*\n * NVML_FI_DEV_C2C_LINK_POWER_STATE\n */\n#define NVML_C2C_POWER_STATE_FULL_POWER 0\n#define NVML_C2C_POWER_STATE_LOW_POWER 1\n\n/**\n * Information for a Field Value Sample\n */\ntypedef struct nvmlFieldValue_st\n{\n    unsigned int fieldId;       //!< ID of the NVML field to retrieve. This must be set before any call that uses this struct. See the constants starting with NVML_FI_ above.\n    unsigned int scopeId;       //!< Scope ID can represent data used by NVML depending on fieldId's context. For example, for NVLink throughput counter data, scopeId can represent linkId.\n    long long timestamp;        //!< CPU Timestamp of this value in microseconds since 1970\n    long long latencyUsec;      //!< How long this field value took to update (in usec) within NVML. This may be averaged across several fields that are serviced by the same driver call.\n    nvmlValueType_t valueType;  //!< Type of the value stored in value\n    nvmlReturn_t nvmlReturn;    //!< Return code for retrieving this value. This must be checked before looking at value, as value is undefined if nvmlReturn != NVML_SUCCESS\n    nvmlValue_t value;          //!< Value for this field. This is only valid if nvmlReturn == NVML_SUCCESS\n} nvmlFieldValue_t;\n\n\n/** @} */\n\n/***************************************************************************************************/\n/** @defgroup nvmlUnitStructs Unit Structs\n *  @{\n */\n/***************************************************************************************************/\n\ntypedef struct\n{\n    struct nvmlUnit_st* handle;\n} nvmlUnit_t;\n\n/**\n * Description of HWBC entry\n */\ntypedef struct nvmlHwbcEntry_st\n{\n    unsigned int hwbcId;\n    char firmwareVersion[32];\n} nvmlHwbcEntry_t;\n\n/**\n * Fan state enum.\n */\ntypedef enum nvmlFanState_enum\n{\n    NVML_FAN_NORMAL       = 0,     //!< Fan is working properly\n    NVML_FAN_FAILED       = 1      //!< Fan has failed\n} nvmlFanState_t;\n\n/**\n * Led color enum.\n */\ntypedef enum nvmlLedColor_enum\n{\n    NVML_LED_COLOR_GREEN       = 0,     //!< GREEN, indicates good health\n    NVML_LED_COLOR_AMBER       = 1      //!< AMBER, indicates problem\n} nvmlLedColor_t;\n\n\n/**\n * LED states for an S-class unit.\n */\ntypedef struct nvmlLedState_st\n{\n    char cause[256];               //!< If amber, a text description of the cause\n    nvmlLedColor_t color;          //!< GREEN or AMBER\n} nvmlLedState_t;\n\n/**\n * Static S-class unit info.\n */\ntypedef struct nvmlUnitInfo_st\n{\n    char name[96];                      //!< Product name\n    char id[96];                        //!< Product identifier\n    char serial[96];                    //!< Product serial number\n    char firmwareVersion[96];           //!< Firmware version\n} nvmlUnitInfo_t;\n\n/**\n * Power usage information for an S-class unit.\n * The power supply state is a human readable string that equals \"Normal\" or contains\n * a combination of \"Abnormal\" plus one or more of the following:\n *\n *    - High voltage\n *    - Fan failure\n *    - Heatsink temperature\n *    - Current limit\n *    - Voltage below UV alarm threshold\n *    - Low-voltage\n *    - SI2C remote off command\n *    - MOD_DISABLE input\n *    - Short pin transition\n*/\ntypedef struct nvmlPSUInfo_st\n{\n    char state[256];                 //!< The power supply state\n    unsigned int current;            //!< PSU current (A)\n    unsigned int voltage;            //!< PSU voltage (V)\n    unsigned int power;              //!< PSU power draw (W)\n} nvmlPSUInfo_t;\n\n/**\n * Fan speed reading for a single fan in an S-class unit.\n */\ntypedef struct nvmlUnitFanInfo_st\n{\n    unsigned int speed;              //!< Fan speed (RPM)\n    nvmlFanState_t state;            //!< Flag that indicates whether fan is working properly\n} nvmlUnitFanInfo_t;\n\n/**\n * Fan speed readings for an entire S-class unit.\n */\ntypedef struct nvmlUnitFanSpeeds_st\n{\n    nvmlUnitFanInfo_t fans[24];      //!< Fan speed data for each fan\n    unsigned int count;              //!< Number of fans in unit\n} nvmlUnitFanSpeeds_t;\n\n/** @} */\n\n/***************************************************************************************************/\n/** @addtogroup nvmlEvents\n *  @{\n */\n/***************************************************************************************************/\n\n/**\n * Handle to an event set\n */\ntypedef struct\n{\n    struct nvmlEventSet_st* handle;\n} nvmlEventSet_t;\n\n/** @defgroup nvmlEventType Event Types\n * @{\n * Event Types which user can be notified about.\n * See description of particular functions for details.\n *\n * See \\ref nvmlDeviceRegisterEvents and \\ref nvmlDeviceGetSupportedEventTypes to check which devices\n * support each event.\n *\n * Types can be combined with bitwise or operator '|' when passed to \\ref nvmlDeviceRegisterEvents\n */\n//! Mask with no events\n#define nvmlEventTypeNone                       0x0000000000000000LL\n\n//! Event about single bit ECC errors\n/**\n * \\note A corrected texture memory error is not an ECC error, so it does not generate a single bit event\n */\n#define nvmlEventTypeSingleBitEccError          0x0000000000000001LL\n\n//! Event about double bit ECC errors\n/**\n * \\note An uncorrected texture memory error is not an ECC error, so it does not generate a double bit event\n */\n#define nvmlEventTypeDoubleBitEccError          0x0000000000000002LL\n\n//! Event about PState changes\n/**\n *  \\note On Fermi architecture PState changes are also an indicator that GPU is throttling down due to\n *  no work being executed on the GPU, power capping or thermal capping. In a typical situation,\n *  Fermi-based GPU should stay in P0 for the duration of the execution of the compute process.\n */\n#define nvmlEventTypePState                     0x0000000000000004LL\n\n//! Event that Xid critical error occurred\n#define nvmlEventTypeXidCriticalError           0x0000000000000008LL\n\n//! Event about clock changes\n/**\n * Kepler only\n */\n#define nvmlEventTypeClock                      0x0000000000000010LL\n\n//! Event about AC/Battery power source changes\n#define nvmlEventTypePowerSourceChange          0x0000000000000080LL\n\n//! Event about MIG configuration changes\n#define nvmlEventMigConfigChange                0x0000000000000100LL\n\n//! Event about single bit ECC error storm\n#define nvmlEventTypeSingleBitEccErrorStorm     0x0000000000000200LL\n\n//! Event about DRAM retirement event\n#define nvmlEventTypeDramRetirementEvent        0x0000000000000400LL\n\n//! Event about DRAM retirement failure\n#define nvmlEventTypeDramRetirementFailure      0x0000000000000800LL\n\n//! Event for Non Fatal Poison\n#define nvmlEventTypeNonFatalPoisonError        0x0000000000001000LL\n\n//! Event for Fatal Poison\n#define nvmlEventTypeFatalPoisonError           0x0000000000002000LL\n\n//! Event for GPU Unavailable\n#define nvmlEventTypeGpuUnavailableError        0x0000000000004000LL\n\n//! Event for GPU Recovery Action\n#define nvmlEventTypeGpuRecoveryAction          0x0000000000008000LL\n\n//! Mask of all events\n#define nvmlEventTypeAll (nvmlEventTypeNone    \\\n        | nvmlEventTypeSingleBitEccError       \\\n        | nvmlEventTypeDoubleBitEccError       \\\n        | nvmlEventTypePState                  \\\n        | nvmlEventTypeClock                   \\\n        | nvmlEventTypeXidCriticalError        \\\n        | nvmlEventTypePowerSourceChange       \\\n        | nvmlEventMigConfigChange             \\\n        | nvmlEventTypeSingleBitEccErrorStorm  \\\n        | nvmlEventTypeDramRetirementEvent     \\\n        | nvmlEventTypeDramRetirementFailure   \\\n        | nvmlEventTypeNonFatalPoisonError     \\\n        | nvmlEventTypeFatalPoisonError        \\\n        | nvmlEventTypeGpuUnavailableError     \\\n        | nvmlEventTypeGpuRecoveryAction)\n\n/** @} */\n\n/**\n * Information about occurred event\n */\ntypedef struct nvmlEventData_st\n{\n    nvmlDevice_t        device;             //!< Specific device where the event occurred\n    unsigned long long  eventType;          //!< Information about what specific event occurred\n    unsigned long long  eventData;          //!< Stores Xid error for the device in the event of nvmlEventTypeXidCriticalError,\n                                            //   eventData is 0 for any other event. eventData is set as 999 for unknown Xid error.\n    unsigned int        gpuInstanceId;      //!< If MIG is enabled and nvmlEventTypeXidCriticalError event is attributable to a GPU\n                                            //   instance, stores a valid GPU instance ID. gpuInstanceId is set to 0xFFFFFFFF\n                                            //   otherwise.\n    unsigned int        computeInstanceId;  //!< If MIG is enabled and nvmlEventTypeXidCriticalError event is attributable to a\n                                            //   compute instance, stores a valid compute instance ID. computeInstanceId is set to\n                                            //   0xFFFFFFFF otherwise.\n} nvmlEventData_t;\n\n/**\n * System Event Set\n */\ntypedef struct\n{\n    struct nvmlSystemEventSet_st* handle;\n} nvmlSystemEventSet_t;\n\n//! System Event for GPU Driver Unbind\n#define nvmlSystemEventTypeGpuDriverUnbind  0x0000000000000001LL //!< Bitmask value of Driver Unbind System Event\n#define nvmlSystemEventTypeGpuDriverBind    0x0000000000000002LL //!< Bitmask value of Driver Bind System Event\n\n#define nvmlSystemEventTypeCount 2\n\n/**\n * nvmlSystemEventSetCreateRequest\n */\ntypedef struct\n{\n    unsigned int version;                   //!< the API version number\n    nvmlSystemEventSet_t set;               //!< system event set\n} nvmlSystemEventSetCreateRequest_v1_t;\ntypedef nvmlSystemEventSetCreateRequest_v1_t nvmlSystemEventSetCreateRequest_t;\n#define nvmlSystemEventSetCreateRequest_v1 NVML_STRUCT_VERSION(SystemEventSetCreateRequest, 1)\n\n/**\n * nvmlSystemEventSetFreeRequest\n */\ntypedef struct\n{\n    unsigned int version;                   //!< the API version number\n    nvmlSystemEventSet_t set;               //!< system event set\n} nvmlSystemEventSetFreeRequest_v1_t;\ntypedef nvmlSystemEventSetFreeRequest_v1_t nvmlSystemEventSetFreeRequest_t;\n#define nvmlSystemEventSetFreeRequest_v1 NVML_STRUCT_VERSION(SystemEventSetFreeRequest, 1)\n\n/**\n * nvmlSystemRegisterEventRequest\n */\ntypedef struct\n{\n    unsigned int version;                   //!< the API version number\n    unsigned long long eventTypes;          //!< Bitmask of \\ref nvmlEventType to record\n                                            //!< For example eventTypes = (nvmlEventTypeBind | nvmlEventTypeUnbind)\n                                            //!< to listen to both Bind and Unbind events.\n    nvmlSystemEventSet_t set;               //!< Set to which add new event types\n} nvmlSystemRegisterEventRequest_v1_t;\ntypedef nvmlSystemRegisterEventRequest_v1_t nvmlSystemRegisterEventRequest_t;\n#define nvmlSystemRegisterEventRequest_v1 NVML_STRUCT_VERSION(SystemRegisterEventRequest, 1)\n\n/**\n * nvmlSystemEventData_v1_t\n */\ntypedef struct\n{\n    unsigned long long  eventType;           //!< Information about what specific system event occurred\n    unsigned int gpuId;                      //!< gpuId in PCI format\n} nvmlSystemEventData_v1_t;\n\n/**\n * nvmlSystemEventSetWait\n */\ntypedef struct\n{\n    unsigned int version;                   //!< input/output: the API version number\n    unsigned int timeoutms;                 //!< input: time to sleep waiting for event.\n                                            //!< If timeoutms is zero, skip waiting for event.\n    nvmlSystemEventSet_t set;               //!< input: system event set\n    nvmlSystemEventData_v1_t *data;         //!< input/output: array of event data, owned by caller\n    unsigned int dataSize;                  //!< input: the size of data array\n    unsigned int numEvent;                  //!< output: number of event collected.\n} nvmlSystemEventSetWaitRequest_v1_t;\ntypedef nvmlSystemEventSetWaitRequest_v1_t nvmlSystemEventSetWaitRequest_t;\n#define nvmlSystemEventSetWaitRequest_v1 NVML_STRUCT_VERSION(SystemEventSetWaitRequest, 1)\n\n/** @} */\n\n/***************************************************************************************************/\n/** @addtogroup nvmlClocksEventReasons\n *  @{\n */\n/***************************************************************************************************/\n\n/** Nothing is running on the GPU and the clocks are dropping to Idle state\n * \\note This limiter may be removed in a later release\n */\n#define nvmlClocksEventReasonGpuIdle                   0x0000000000000001LL\n\n/*\n * @deprecated No longer used\n */\n#define nvmlClocksEventReasonApplicationsClocksSetting 0x0000000000000002LL\n\n/**\n * @deprecated Renamed to \\ref nvmlClocksThrottleReasonApplicationsClocksSetting\n *             as the name describes the situation more accurately.\n */\n#define nvmlClocksThrottleReasonUserDefinedClocks         nvmlClocksEventReasonApplicationsClocksSetting\n\n/** The clocks have been optimized to ensure not to exceed currently set power limits\n *\n * @see nvmlDeviceGetPowerUsage\n * @see nvmlDeviceSetPowerManagementLimit\n * @see nvmlDeviceGetPowerManagementLimit\n */\n#define nvmlClocksEventReasonSwPowerCap                0x0000000000000004LL\n\n/** HW Slowdown (reducing the core clocks by a factor of 2 or more) is engaged\n *\n * This is an indicator of:\n *   - temperature being too high\n *   - External Power Brake Assertion is triggered (e.g. by the system power supply)\n *   - Power draw is too high and Fast Trigger protection is reducing the clocks\n *   - May be also reported during PState or clock change\n *      - This behavior may be removed in a later release.\n *\n * @see nvmlDeviceGetTemperature\n * @see nvmlDeviceGetTemperatureThreshold\n * @see nvmlDeviceGetPowerUsage\n */\n#define nvmlClocksThrottleReasonHwSlowdown                0x0000000000000008LL\n\n/** Sync Boost\n *\n * This GPU has been added to a Sync boost group with nvidia-smi or DCGM in\n * order to maximize performance per watt. All GPUs in the sync boost group\n * will boost to the minimum possible clocks across the entire group. Look at\n * the throttle reasons for other GPUs in the system to see why those GPUs are\n * holding this one at lower clocks.\n *\n */\n#define nvmlClocksEventReasonSyncBoost                 0x0000000000000010LL\n\n/** SW Thermal Slowdown\n *\n * The current clocks have been optimized to ensure the the following is true:\n *  - Current GPU temperature does not exceed GPU Max Operating Temperature\n *  - Current memory temperature does not exceeed Memory Max Operating Temperature\n *\n */\n#define nvmlClocksEventReasonSwThermalSlowdown         0x0000000000000020LL\n\n/** HW Thermal Slowdown (reducing the core clocks by a factor of 2 or more) is engaged\n *\n * This is an indicator of:\n *   - temperature being too high\n *\n * @see nvmlDeviceGetTemperature\n * @see nvmlDeviceGetTemperatureThreshold\n * @see nvmlDeviceGetPowerUsage\n */\n#define nvmlClocksThrottleReasonHwThermalSlowdown         0x0000000000000040LL\n\n/** HW Power Brake Slowdown (reducing the core clocks by a factor of 2 or more) is engaged\n *\n * This is an indicator of:\n *   - External Power Brake Assertion being triggered (e.g. by the system power supply)\n *\n * @see nvmlDeviceGetTemperature\n * @see nvmlDeviceGetTemperatureThreshold\n * @see nvmlDeviceGetPowerUsage\n */\n#define nvmlClocksThrottleReasonHwPowerBrakeSlowdown      0x0000000000000080LL\n\n/** GPU clocks are limited by current setting of Display clocks\n *\n * @see bug 1997531\n */\n#define nvmlClocksEventReasonDisplayClockSetting       0x0000000000000100LL\n\n/** Bit mask representing no clocks throttling\n *\n * Clocks are as high as possible.\n * */\n#define nvmlClocksEventReasonNone                      0x0000000000000000LL\n\n/** Bit mask representing all supported clocks throttling reasons\n * New reasons might be added to this list in the future\n */\n#define nvmlClocksEventReasonAll (nvmlClocksThrottleReasonNone \\\n      | nvmlClocksEventReasonGpuIdle                           \\\n      | nvmlClocksEventReasonApplicationsClocksSetting         \\\n      | nvmlClocksEventReasonSwPowerCap                        \\\n      | nvmlClocksThrottleReasonHwSlowdown                        \\\n      | nvmlClocksEventReasonSyncBoost                         \\\n      | nvmlClocksEventReasonSwThermalSlowdown                 \\\n      | nvmlClocksThrottleReasonHwThermalSlowdown                 \\\n      | nvmlClocksThrottleReasonHwPowerBrakeSlowdown              \\\n      | nvmlClocksEventReasonDisplayClockSetting               \\\n)\n\n/**\n * @deprecated Use \\ref nvmlClocksEventReasonGpuIdle instead\n */\n#define nvmlClocksThrottleReasonGpuIdle                      nvmlClocksEventReasonGpuIdle\n/**\n * @deprecated\n */\n#define nvmlClocksThrottleReasonApplicationsClocksSetting    nvmlClocksEventReasonApplicationsClocksSetting\n/**\n * @deprecated Use \\ref nvmlClocksEventReasonSyncBoost instead\n */\n#define nvmlClocksThrottleReasonSyncBoost                    nvmlClocksEventReasonSyncBoost\n/**\n * @deprecated Use \\ref nvmlClocksEventReasonSwPowerCap instead\n */\n#define nvmlClocksThrottleReasonSwPowerCap                   nvmlClocksEventReasonSwPowerCap\n/**\n * @deprecated Use \\ref nvmlClocksEventReasonSwThermalSlowdown instead\n */\n#define nvmlClocksThrottleReasonSwThermalSlowdown            nvmlClocksEventReasonSwThermalSlowdown\n/**\n * @deprecated Use \\ref nvmlClocksEventReasonDisplayClockSetting instead\n */\n#define nvmlClocksThrottleReasonDisplayClockSetting          nvmlClocksEventReasonDisplayClockSetting\n/**\n * @deprecated Use \\ref nvmlClocksEventReasonNone instead\n */\n#define nvmlClocksThrottleReasonNone                         nvmlClocksEventReasonNone\n/**\n * @deprecated Use \\ref nvmlClocksEventReasonAll instead\n */\n#define nvmlClocksThrottleReasonAll                          nvmlClocksEventReasonAll\n/** @} */\n\n/***************************************************************************************************/\n/** @defgroup nvmlAccountingStats Accounting Statistics\n *  @{\n *\n *  Set of APIs designed to provide per process information about usage of GPU.\n *\n *  @note All accounting statistics and accounting mode live in nvidia driver and reset\n *        to default (Disabled) when driver unloads.\n *        It is advised to run with persistence mode enabled.\n *\n *  @note Enabling accounting mode has no negative impact on the GPU performance.\n */\n/***************************************************************************************************/\n\n/**\n * Describes accounting statistics of a process.\n */\ntypedef struct nvmlAccountingStats_st {\n    unsigned int gpuUtilization;                //!< Percent of time over the process's lifetime during which one or more kernels was executing on the GPU.\n                                                //! Utilization stats just like returned by \\ref nvmlDeviceGetUtilizationRates but for the life time of a\n                                                //! process (not just the last sample period).\n                                                //! Set to NVML_VALUE_NOT_AVAILABLE if nvmlDeviceGetUtilizationRates is not supported\n\n    unsigned int memoryUtilization;             //!< Percent of time over the process's lifetime during which global (device) memory was being read or written.\n                                                //! Set to NVML_VALUE_NOT_AVAILABLE if nvmlDeviceGetUtilizationRates is not supported\n\n    unsigned long long maxMemoryUsage;          //!< Maximum total memory in bytes that was ever allocated by the process.\n                                                //! Set to NVML_VALUE_NOT_AVAILABLE if nvmlProcessInfo_t->usedGpuMemory is not supported\n\n\n    unsigned long long time;                    //!< Amount of time in ms during which the compute context was active. The time is reported as 0 if\n                                                //!< the process is not terminated\n\n    unsigned long long startTime;               //!< CPU Timestamp in usec representing start time for the process\n\n    unsigned int isRunning;                     //!< Flag to represent if the process is running (1 for running, 0 for terminated)\n\n    unsigned int reserved[5];                   //!< Reserved for future use\n} nvmlAccountingStats_t;\n\n/** @} */\n\n/***************************************************************************************************/\n/** @defgroup nvmlEncoderStructs Encoder Structs\n *  @{\n */\n/***************************************************************************************************/\n\n/**\n * Represents type of encoder for capacity can be queried\n */\ntypedef enum nvmlEncoderQueryType_enum\n{\n    NVML_ENCODER_QUERY_H264     = 0x00,        //!< H264 encoder\n    NVML_ENCODER_QUERY_HEVC     = 0x01,        //!< HEVC encoder\n    NVML_ENCODER_QUERY_AV1      = 0x02,        //!< AV1 encoder\n    NVML_ENCODER_QUERY_UNKNOWN  = 0xFF         //!< Unknown encoder\n}nvmlEncoderType_t;\n\n/**\n * Structure to hold encoder session data\n */\ntypedef struct nvmlEncoderSessionInfo_st\n{\n    unsigned int       sessionId;       //!< Unique session ID\n    unsigned int       pid;             //!< Owning process ID\n    nvmlVgpuInstance_t vgpuInstance;    //!< Owning vGPU instance ID (only valid on vGPU hosts, otherwise zero)\n    nvmlEncoderType_t  codecType;       //!< Video encoder type\n    unsigned int       hResolution;     //!< Current encode horizontal resolution\n    unsigned int       vResolution;     //!< Current encode vertical resolution\n    unsigned int       averageFps;      //!< Moving average encode frames per second\n    unsigned int       averageLatency;  //!< Moving average encode latency in microseconds\n}nvmlEncoderSessionInfo_t;\n\n/** @} */\n\n/***************************************************************************************************/\n/** @defgroup nvmlFBCStructs Frame Buffer Capture Structures\n*  @{\n*/\n/***************************************************************************************************/\n\n/**\n * Represents frame buffer capture session type\n */\ntypedef enum nvmlFBCSessionType_enum\n{\n    NVML_FBC_SESSION_TYPE_UNKNOWN = 0,     //!< Unknown\n    NVML_FBC_SESSION_TYPE_TOSYS,           //!< ToSys\n    NVML_FBC_SESSION_TYPE_CUDA,            //!< Cuda\n    NVML_FBC_SESSION_TYPE_VID,             //!< Vid\n    NVML_FBC_SESSION_TYPE_HWENC            //!< HEnc\n} nvmlFBCSessionType_t;\n\n/**\n * Structure to hold frame buffer capture sessions stats\n */\ntypedef struct nvmlFBCStats_st\n{\n    unsigned int      sessionsCount;    //!< Total no of sessions\n    unsigned int      averageFPS;       //!< Moving average new frames captured per second\n    unsigned int      averageLatency;   //!< Moving average new frame capture latency in microseconds\n} nvmlFBCStats_t;\n\n#define NVML_NVFBC_SESSION_FLAG_DIFFMAP_ENABLED                0x00000001    //!< Bit specifying differential map state.\n#define NVML_NVFBC_SESSION_FLAG_CLASSIFICATIONMAP_ENABLED      0x00000002    //!< Bit specifying classification map state.\n#define NVML_NVFBC_SESSION_FLAG_CAPTURE_WITH_WAIT_NO_WAIT      0x00000004    //!< Bit specifying if capture was requested as non-blocking call.\n#define NVML_NVFBC_SESSION_FLAG_CAPTURE_WITH_WAIT_INFINITE     0x00000008    //!< Bit specifying if capture was requested as blocking call.\n#define NVML_NVFBC_SESSION_FLAG_CAPTURE_WITH_WAIT_TIMEOUT      0x00000010    //!< Bit specifying if capture was requested as blocking call with timeout period.\n\n/**\n * Structure to hold FBC session data\n */\ntypedef struct nvmlFBCSessionInfo_st\n{\n    unsigned int          sessionId;                           //!< Unique session ID\n    unsigned int          pid;                                 //!< Owning process ID\n    nvmlVgpuInstance_t    vgpuInstance;                        //!< Owning vGPU instance ID (only valid on vGPU hosts, otherwise zero)\n    unsigned int          displayOrdinal;                      //!< Display identifier\n    nvmlFBCSessionType_t  sessionType;                         //!< Type of frame buffer capture session\n    unsigned int          sessionFlags;                        //!< Session flags (one or more of NVML_NVFBC_SESSION_FLAG_XXX).\n    unsigned int          hMaxResolution;                      //!< Max horizontal resolution supported by the capture session\n    unsigned int          vMaxResolution;                      //!< Max vertical resolution supported by the capture session\n    unsigned int          hResolution;                         //!< Horizontal resolution requested by caller in capture call\n    unsigned int          vResolution;                         //!< Vertical resolution requested by caller in capture call\n    unsigned int          averageFPS;                          //!< Moving average new frames captured per second\n    unsigned int          averageLatency;                      //!< Moving average new frame capture latency in microseconds\n} nvmlFBCSessionInfo_t;\n\n/** @} */\n\n/***************************************************************************************************/\n/** @defgroup nvmlDrainDefs Drain State definitions\n *  @{\n */\n/***************************************************************************************************/\n\n/**\n *  Is the GPU device to be removed from the kernel by nvmlDeviceRemoveGpu()\n */\ntypedef enum nvmlDetachGpuState_enum\n{\n    NVML_DETACH_GPU_KEEP         = 0,\n    NVML_DETACH_GPU_REMOVE\n} nvmlDetachGpuState_t;\n\n/**\n *  Parent bridge PCIe link state requested by nvmlDeviceRemoveGpu()\n */\ntypedef enum nvmlPcieLinkState_enum\n{\n    NVML_PCIE_LINK_KEEP         = 0,\n    NVML_PCIE_LINK_SHUT_DOWN\n} nvmlPcieLinkState_t;\n\n/** @} */\n\n/***************************************************************************************************/\n/** @defgroup nvmlConfidentialComputingDefs Confidential Computing definitions\n *  @{\n */\n/***************************************************************************************************/\n/**\n * Confidential Compute CPU Capabilities values\n */\n#define NVML_CC_SYSTEM_CPU_CAPS_NONE         0\n#define NVML_CC_SYSTEM_CPU_CAPS_AMD_SEV      1\n#define NVML_CC_SYSTEM_CPU_CAPS_INTEL_TDX    2\n#define NVML_CC_SYSTEM_CPU_CAPS_AMD_SEV_SNP  3\n#define NVML_CC_SYSTEM_CPU_CAPS_AMD_SNP_VTOM 4\n\n/**\n * Confidenial Compute GPU Capabilities values\n */\n#define NVML_CC_SYSTEM_GPUS_CC_NOT_CAPABLE 0\n#define NVML_CC_SYSTEM_GPUS_CC_CAPABLE     1\n\ntypedef struct nvmlConfComputeSystemCaps_st {\n    unsigned int cpuCaps;\n    unsigned int gpusCaps;\n} nvmlConfComputeSystemCaps_t;\n\n/**\n * Confidential Compute DevTools Mode values\n */\n#define NVML_CC_SYSTEM_DEVTOOLS_MODE_OFF 0\n#define NVML_CC_SYSTEM_DEVTOOLS_MODE_ON  1\n\n/**\n * Confidential Compute Environment values\n */\n#define NVML_CC_SYSTEM_ENVIRONMENT_UNAVAILABLE 0\n#define NVML_CC_SYSTEM_ENVIRONMENT_SIM         1\n#define NVML_CC_SYSTEM_ENVIRONMENT_PROD        2\n\n/**\n * Confidential Compute Feature Status values\n */\n#define NVML_CC_SYSTEM_FEATURE_DISABLED 0\n#define NVML_CC_SYSTEM_FEATURE_ENABLED  1\n\ntypedef struct nvmlConfComputeSystemState_st {\n    unsigned int environment;\n    unsigned int ccFeature;\n    unsigned int devToolsMode;\n} nvmlConfComputeSystemState_t;\n\n/**\n * Confidential Compute Multigpu mode values\n */\n#define NVML_CC_SYSTEM_MULTIGPU_NONE           0\n#define NVML_CC_SYSTEM_MULTIGPU_PROTECTED_PCIE 1\n#define NVML_CC_SYSTEM_MULTIGPU_NVLE           2\n\n/**\n * Confidential Compute System settings\n */\ntypedef struct {\n    unsigned int version;\n    unsigned int environment;\n    unsigned int ccFeature;\n    unsigned int devToolsMode;\n    unsigned int multiGpuMode;\n} nvmlSystemConfComputeSettings_v1_t;\n\ntypedef nvmlSystemConfComputeSettings_v1_t nvmlSystemConfComputeSettings_t;\n#define nvmlSystemConfComputeSettings_v1 NVML_STRUCT_VERSION(SystemConfComputeSettings, 1)\n\n/**\n * Protected memory size\n */\ntypedef struct\nnvmlConfComputeMemSizeInfo_st\n{\n    unsigned long long protectedMemSizeKib;\n    unsigned long long unprotectedMemSizeKib;\n} nvmlConfComputeMemSizeInfo_t;\n\n/**\n * Confidential Compute GPUs/System Ready State values\n */\n#define NVML_CC_ACCEPTING_CLIENT_REQUESTS_FALSE 0\n#define NVML_CC_ACCEPTING_CLIENT_REQUESTS_TRUE  1\n\n/**\n * GPU Certificate Details\n */\n#define NVML_GPU_CERT_CHAIN_SIZE 0x1000\n#define NVML_GPU_ATTESTATION_CERT_CHAIN_SIZE 0x1400\n\ntypedef struct nvmlConfComputeGpuCertificate_st {\n    unsigned int certChainSize;\n    unsigned int attestationCertChainSize;\n    unsigned char certChain[NVML_GPU_CERT_CHAIN_SIZE];\n    unsigned char attestationCertChain[NVML_GPU_ATTESTATION_CERT_CHAIN_SIZE];\n} nvmlConfComputeGpuCertificate_t;\n\n/**\n * GPU Attestation Report\n */\n#define NVML_CC_GPU_CEC_NONCE_SIZE 0x20\n#define NVML_CC_GPU_ATTESTATION_REPORT_SIZE 0x2000\n#define NVML_CC_GPU_CEC_ATTESTATION_REPORT_SIZE 0x1000\n#define NVML_CC_CEC_ATTESTATION_REPORT_NOT_PRESENT 0\n#define NVML_CC_CEC_ATTESTATION_REPORT_PRESENT 1\n#define NVML_CC_KEY_ROTATION_THRESHOLD_ATTACKER_ADVANTAGE_MIN 50\n#define NVML_CC_KEY_ROTATION_THRESHOLD_ATTACKER_ADVANTAGE_MAX 65\n\ntypedef struct nvmlConfComputeGpuAttestationReport_st {\n    unsigned int isCecAttestationReportPresent;                                   //!< output\n    unsigned int attestationReportSize;                                           //!< output\n    unsigned int cecAttestationReportSize;                                        //!< output\n    unsigned char nonce[NVML_CC_GPU_CEC_NONCE_SIZE];                              //!< input: spdm supports 32 bytes on nonce\n    unsigned char attestationReport[NVML_CC_GPU_ATTESTATION_REPORT_SIZE];         //!< output\n    unsigned char cecAttestationReport[NVML_CC_GPU_CEC_ATTESTATION_REPORT_SIZE];  //!< output\n} nvmlConfComputeGpuAttestationReport_t;\n\ntypedef struct nvmlConfComputeSetKeyRotationThresholdInfo_st {\n    unsigned int version;\n    unsigned long long maxAttackerAdvantage;\n} nvmlConfComputeSetKeyRotationThresholdInfo_v1_t;\n\ntypedef nvmlConfComputeSetKeyRotationThresholdInfo_v1_t nvmlConfComputeSetKeyRotationThresholdInfo_t;\n#define nvmlConfComputeSetKeyRotationThresholdInfo_v1 \\\n        NVML_STRUCT_VERSION(ConfComputeSetKeyRotationThresholdInfo, 1)\n\ntypedef struct nvmlConfComputeGetKeyRotationThresholdInfo_st {\n    unsigned int version;\n    unsigned long long attackerAdvantage;\n} nvmlConfComputeGetKeyRotationThresholdInfo_v1_t;\n\ntypedef nvmlConfComputeGetKeyRotationThresholdInfo_v1_t nvmlConfComputeGetKeyRotationThresholdInfo_t;\n#define nvmlConfComputeGetKeyRotationThresholdInfo_v1 \\\n        NVML_STRUCT_VERSION(ConfComputeGetKeyRotationThresholdInfo, 1)\n\n/** @} */\n\n/***************************************************************************************************/\n/** @defgroup nvmlFabricDefs Fabric definitions\n *  @{\n */\n/***************************************************************************************************/\n\n#define NVML_GPU_FABRIC_UUID_LEN 16 //!< Length of Fabric UUID\n\n/**\n * Fabric Probe States\n */\n#define NVML_GPU_FABRIC_STATE_NOT_SUPPORTED 0 //!< Fabric Probe State not supported\n#define NVML_GPU_FABRIC_STATE_NOT_STARTED   1 //!< Fabric Probe has not started\n#define NVML_GPU_FABRIC_STATE_IN_PROGRESS   2 //!< Fabric Probe in progress\n#define NVML_GPU_FABRIC_STATE_COMPLETED     3 //!< Fabric Probe State completed\n\n/**\n * Probe State of GPU registration process\n */\ntypedef unsigned char nvmlGpuFabricState_t;\n\n/**\n * Contains the device fabric information\n */\ntypedef struct\n{\n    unsigned char        clusterUuid[NVML_GPU_FABRIC_UUID_LEN]; //!< Uuid of the cluster to which this GPU belongs\n    nvmlReturn_t         status;                                //!< Error status, if any. Must be checked only if state returns \"complete\".\n    unsigned int         cliqueId;                              //!< ID of the fabric clique to which this GPU belongs\n    nvmlGpuFabricState_t state;                                 //!< Current state of GPU registration process. See NVML_GPU_FABRIC_STATE_*\n} nvmlGpuFabricInfo_t;\n\n/**\n * Fabric Degraded BW\n */\n#define NVML_GPU_FABRIC_HEALTH_MASK_DEGRADED_BW_NOT_SUPPORTED 0 //!< Fabric Health Mask: Degraded Bandwidth not supported\n#define NVML_GPU_FABRIC_HEALTH_MASK_DEGRADED_BW_TRUE          1 //!< Fabric Health Mask: Bandwidth degraded\n#define NVML_GPU_FABRIC_HEALTH_MASK_DEGRADED_BW_FALSE         2 //!< Fabric Health Mask: Bandwidth not degraded\n\n#define NVML_GPU_FABRIC_HEALTH_MASK_SHIFT_DEGRADED_BW 0         //!< Fabric Health Mask Bit Shift for Degraded Bandwidth\n#define NVML_GPU_FABRIC_HEALTH_MASK_WIDTH_DEGRADED_BW 0x3       //!< Fabric Health Mask Width for Degraded Bandwidth\n\n/**\n * Fabric Route Recovery\n */\n#define NVML_GPU_FABRIC_HEALTH_MASK_ROUTE_RECOVERY_NOT_SUPPORTED 0 //!< Fabric Health Mask: Route Recovery not supported\n#define NVML_GPU_FABRIC_HEALTH_MASK_ROUTE_RECOVERY_TRUE          1 //!< Fabric Health Mask: Route Recovery in progress\n#define NVML_GPU_FABRIC_HEALTH_MASK_ROUTE_RECOVERY_FALSE         2 //!< Fabric Health Mask: Route Recovery not in progress\n\n#define NVML_GPU_FABRIC_HEALTH_MASK_SHIFT_ROUTE_RECOVERY 2         //!< Fabric Health Mask Bit Shift for Route Recovery\n#define NVML_GPU_FABRIC_HEALTH_MASK_WIDTH_ROUTE_RECOVERY 0x3       //!< Fabric Health Mask Width for Route Recovery\n\n/**\n * Nvlink Fabric Route Unhealthy\n */\n#define NVML_GPU_FABRIC_HEALTH_MASK_ROUTE_UNHEALTHY_NOT_SUPPORTED 0 //!< Fabric Health Mask: Route Unhealthy not supported\n#define NVML_GPU_FABRIC_HEALTH_MASK_ROUTE_UNHEALTHY_TRUE          1 //!< Fabric Health Mask: Route is unhealthy\n#define NVML_GPU_FABRIC_HEALTH_MASK_ROUTE_UNHEALTHY_FALSE         2 //!< Fabric Health Mask: Route is healthy\n\n#define NVML_GPU_FABRIC_HEALTH_MASK_SHIFT_ROUTE_UNHEALTHY 4         //!< Fabric Health Mask Bit Shift for Route Unhealthy\n#define NVML_GPU_FABRIC_HEALTH_MASK_WIDTH_ROUTE_UNHEALTHY 0x3       //!< Fabric Health Mask Width for Route Unhealthy\n\n/**\n * Fabric Access Timeout Recovery\n */\n#define NVML_GPU_FABRIC_HEALTH_MASK_ACCESS_TIMEOUT_RECOVERY_NOT_SUPPORTED 0 //!< Fabric Health Mask: Access Timeout Recovery not supported\n#define NVML_GPU_FABRIC_HEALTH_MASK_ACCESS_TIMEOUT_RECOVERY_TRUE          1 //!< Fabric Health Mask: Access Timeout Recovery in progress\n#define NVML_GPU_FABRIC_HEALTH_MASK_ACCESS_TIMEOUT_RECOVERY_FALSE         2 //!< Fabric Health Mask: Access Timeout Recovery not in progress\n\n#define NVML_GPU_FABRIC_HEALTH_MASK_SHIFT_ACCESS_TIMEOUT_RECOVERY 6         //!< Fabric Health Mask Bit Shift for Access Timeout Recovery\n#define NVML_GPU_FABRIC_HEALTH_MASK_WIDTH_ACCESS_TIMEOUT_RECOVERY 0x3       //!< Fabric Health Mask Width for Access Timeout Recovery\n\n/**\n * Fabric Incorrect Configuration\n */\n#define NVML_GPU_FABRIC_HEALTH_MASK_INCORRECT_CONFIGURATION_NOT_SUPPORTED        0 //!< Fabric Health Mask: Incorrect Configuration not supported\n#define NVML_GPU_FABRIC_HEALTH_MASK_INCORRECT_CONFIGURATION_NONE                 1 //!< Fabric Health Mask: Correct Configuration\n#define NVML_GPU_FABRIC_HEALTH_MASK_INCORRECT_CONFIGURATION_INCORRECT_SYSGUID    2 //!< Fabric Health Mask: Incorrect Configuration - SysGUID\n#define NVML_GPU_FABRIC_HEALTH_MASK_INCORRECT_CONFIGURATION_INCORRECT_CHASSIS_SN 3 //!< Fabric Health Mask: Incorrect Configuration - Chassis Serial Number\n#define NVML_GPU_FABRIC_HEALTH_MASK_INCORRECT_CONFIGURATION_NO_PARTITION         4 //!< Fabric Health Mask: Incorrect Configuration - No Partition\n#define NVML_GPU_FABRIC_HEALTH_MASK_INCORRECT_CONFIGURATION_INSUFFICIENT_NVLINKS 5 //!< Fabric Health Mask: Incorrect Configuration - Insufficient Nvlinks\n\n#define NVML_GPU_FABRIC_HEALTH_MASK_SHIFT_INCORRECT_CONFIGURATION 8                //!< Fabric Health Mask Bit Shift for Incorrect Configuration\n#define NVML_GPU_FABRIC_HEALTH_MASK_WIDTH_INCORRECT_CONFIGURATION 0xf              //!< Fabric Health Mask Width for Incorrect Configuration\n\n/**\n * Fabric Health\n */\n#define NVML_GPU_FABRIC_HEALTH_SUMMARY_NOT_SUPPORTED 0    //!< Fabric Health Summary: Not supported\n#define NVML_GPU_FABRIC_HEALTH_SUMMARY_HEALTHY 1          //!< Fabric Health Summary: Healthy\n#define NVML_GPU_FABRIC_HEALTH_SUMMARY_UNHEALTHY 2        //!< Fabric Health Summary: Unhealthy\n#define NVML_GPU_FABRIC_HEALTH_SUMMARY_LIMITED_CAPACITY 3 //!< Fabric Health Summary: Limited Capacity\n\n/**\n * GPU Fabric Health Status Mask for various fields can be obtained\n * using the below macro.\n * Ex - NVML_GPU_FABRIC_HEALTH_GET(var, _DEGRADED_BW)\n */\n#define NVML_GPU_FABRIC_HEALTH_GET(var, type)             \\\n    (((var) >> NVML_GPU_FABRIC_HEALTH_MASK_SHIFT##type) & \\\n     (NVML_GPU_FABRIC_HEALTH_MASK_WIDTH##type))\n\n/**\n * GPU Fabric Health Status Mask for various fields can be tested\n * using the below macro.\n * Ex - NVML_GPU_FABRIC_HEALTH_TEST(var, _DEGRADED_BW, _TRUE)\n */\n#define NVML_GPU_FABRIC_HEALTH_TEST(var, type, val) \\\n    (NVML_GPU_FABRIC_HEALTH_GET(var, type) ==       \\\n     NVML_GPU_FABRIC_HEALTH_MASK##type##val)\n\n/**\n* GPU Fabric information (v2).\n*\n* @deprecated  nvmlGpuFabricInfo_v2_t is deprecated and will be removed in a future release.\n*              Use nvmlGpuFabricInfo_v3_t instead\n*\n* Version 2 adds the \\ref nvmlGpuFabricInfo_v2_t.version field\n* to the start of the structure, and the \\ref nvmlGpuFabricInfo_v2_t.healthMask\n* field to the end. This structure is not backwards-compatible with\n* \\ref nvmlGpuFabricInfo_t.\n*/\ntypedef struct\n{\n    unsigned int         version;                               //!< Structure version identifier (set to nvmlGpuFabricInfo_v2)\n    unsigned char        clusterUuid[NVML_GPU_FABRIC_UUID_LEN]; //!< Uuid of the cluster to which this GPU belongs\n    nvmlReturn_t         status;                                //!< Probe Error status, if any. Must be checked only if Probe state returns \"complete\".\n    unsigned int         cliqueId;                              //!< ID of the fabric clique to which this GPU belongs\n    nvmlGpuFabricState_t state;                                 //!< Current Probe State of GPU registration process. See NVML_GPU_FABRIC_STATE_*\n    unsigned int         healthMask;                            //!< GPU Fabric health Status Mask. See NVML_GPU_FABRIC_HEALTH_MASK_*\n} nvmlGpuFabricInfo_v2_t;\n\n/**\n* Version identifier value for \\ref nvmlGpuFabricInfo_v2_t.version.\n*/\n#define nvmlGpuFabricInfo_v2 NVML_STRUCT_VERSION(GpuFabricInfo, 2)\n\n/**\n* GPU Fabric information (v3).\n*/\ntypedef struct\n{\n    unsigned int         version;                               //!< Structure version identifier (set to nvmlGpuFabricInfo_v2)\n    unsigned char        clusterUuid[NVML_GPU_FABRIC_UUID_LEN]; //!< Uuid of the cluster to which this GPU belongs\n    nvmlReturn_t         status;                                //!< Probe Error status, if any. Must be checked only if Probe state returns \"complete\".\n    unsigned int         cliqueId;                              //!< ID of the fabric clique to which this GPU belongs\n    nvmlGpuFabricState_t state;                                 //!< Current Probe State of GPU registration process. See NVML_GPU_FABRIC_STATE_*\n    unsigned int         healthMask;                            //!< GPU Fabric health Status Mask. See NVML_GPU_FABRIC_HEALTH_MASK_*\n    unsigned char        healthSummary;                         //!< GPU Fabric health summary. See NVML_GPU_FABRIC_HEALTH_SUMMARY_*\n} nvmlGpuFabricInfo_v3_t;\n\ntypedef nvmlGpuFabricInfo_v3_t nvmlGpuFabricInfoV_t;\n\n/**\n* Version identifier value for \\ref nvmlGpuFabricInfo_v3_t.version.\n*/\n#define nvmlGpuFabricInfo_v3 NVML_STRUCT_VERSION(GpuFabricInfo, 3)\n\n/** @} */\n\n/***************************************************************************************************/\n/** @defgroup nvmlInitializationAndCleanup Initialization and Cleanup\n * This chapter describes the methods that handle NVML initialization and cleanup.\n * It is the user's responsibility to call \\ref nvmlInit_v2() before calling any other methods, and\n * nvmlShutdown() once NVML is no longer being used.\n *  @{\n */\n/***************************************************************************************************/\n\n#define NVML_INIT_FLAG_NO_GPUS      1   //!< Don't fail nvmlInit() when no GPUs are found\n#define NVML_INIT_FLAG_NO_ATTACH    2   //!< Don't attach GPUs\n\n/**\n * Initialize NVML, but don't initialize any GPUs yet.\n *\n * \\note nvmlInit_v3 introduces a \"flags\" argument, that allows passing boolean values\n *       modifying the behaviour of nvmlInit().\n * \\note In NVML 5.319 new nvmlInit_v2 has replaced nvmlInit\"_v1\" (default in NVML 4.304 and older) that\n *       did initialize all GPU devices in the system.\n *\n * This allows NVML to communicate with a GPU\n * when other GPUs in the system are unstable or in a bad state.  When using this API, GPUs are\n * discovered and initialized in nvmlDeviceGetHandleBy* functions instead.\n *\n * \\note To contrast nvmlInit_v2 with nvmlInit\"_v1\", NVML 4.304 nvmlInit\"_v1\" will fail when any detected GPU is in\n *       a bad or unstable state.\n *\n * For all products.\n *\n * This method, should be called once before invoking any other methods in the library.\n * A reference count of the number of initializations is maintained.  Shutdown only occurs\n * when the reference count reaches zero.\n *\n * @return\n *         - \\ref NVML_SUCCESS                   if NVML has been properly initialized\n *         - \\ref NVML_ERROR_DRIVER_NOT_LOADED   if NVIDIA driver is not running\n *         - \\ref NVML_ERROR_NO_PERMISSION       if NVML does not have permission to talk to the driver\n *         - \\ref NVML_ERROR_UNKNOWN             on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlInit_v2(void);\n\n/**\n * nvmlInitWithFlags is a variant of nvmlInit(), that allows passing a set of boolean values\n *       modifying the behaviour of nvmlInit().\n *       Other than the \"flags\" parameter it is completely similar to \\ref nvmlInit_v2.\n *\n * For all products.\n *\n * @param flags                                 behaviour modifier flags\n *\n * @return\n *         - \\ref NVML_SUCCESS                   if NVML has been properly initialized\n *         - \\ref NVML_ERROR_DRIVER_NOT_LOADED   if NVIDIA driver is not running\n *         - \\ref NVML_ERROR_NO_PERMISSION       if NVML does not have permission to talk to the driver\n *         - \\ref NVML_ERROR_UNKNOWN             on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlInitWithFlags(unsigned int flags);\n\n/**\n * Shut down NVML by releasing all GPU resources previously allocated with \\ref nvmlInit_v2().\n *\n * For all products.\n *\n * This method should be called after NVML work is done, once for each call to \\ref nvmlInit_v2()\n * A reference count of the number of initializations is maintained.  Shutdown only occurs\n * when the reference count reaches zero.  For backwards compatibility, no error is reported if\n * nvmlShutdown() is called more times than nvmlInit().\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if NVML has been properly shut down\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlShutdown(void);\n\n/** @} */\n\n/***************************************************************************************************/\n/** @defgroup nvmlErrorReporting Error reporting\n * This chapter describes helper functions for error reporting routines.\n *  @{\n */\n/***************************************************************************************************/\n\n/**\n * Helper method for converting NVML error codes into readable strings.\n *\n * For all products.\n *\n * @param result                               NVML error code to convert\n *\n * @return String representation of the error.\n *\n */\nconst DECLDIR char* nvmlErrorString(nvmlReturn_t result);\n/** @} */\n\n\n/***************************************************************************************************/\n/** @defgroup nvmlConstants Constants\n *  @{\n */\n/***************************************************************************************************/\n\n/**\n * Buffer size guaranteed to be large enough for \\ref nvmlDeviceGetInforomVersion and \\ref nvmlDeviceGetInforomImageVersion\n */\n#define NVML_DEVICE_INFOROM_VERSION_BUFFER_SIZE       16\n\n/**\n * Buffer size guaranteed to be large enough for storing GPU identifiers.\n */\n#define NVML_DEVICE_UUID_BUFFER_SIZE                  80\n\n/**\n * Buffer size guaranteed to be large enough for \\ref nvmlDeviceGetUUID\n */\n#define NVML_DEVICE_UUID_V2_BUFFER_SIZE               96\n\n/**\n * Buffer size guaranteed to be large enough for \\ref nvmlDeviceGetBoardPartNumber\n */\n#define NVML_DEVICE_PART_NUMBER_BUFFER_SIZE           80\n\n/**\n * Buffer size guaranteed to be large enough for \\ref nvmlSystemGetDriverVersion\n */\n#define NVML_SYSTEM_DRIVER_VERSION_BUFFER_SIZE        80\n\n/**\n * Buffer size guaranteed to be large enough for \\ref nvmlSystemGetNVMLVersion\n */\n#define NVML_SYSTEM_NVML_VERSION_BUFFER_SIZE          80\n\n/**\n * Buffer size guaranteed to be large enough for storing GPU device names.\n */\n#define NVML_DEVICE_NAME_BUFFER_SIZE                  64\n\n/**\n * Buffer size guaranteed to be large enough for \\ref nvmlDeviceGetName\n */\n#define NVML_DEVICE_NAME_V2_BUFFER_SIZE               96\n\n/**\n * Buffer size guaranteed to be large enough for \\ref nvmlDeviceGetSerial\n */\n#define NVML_DEVICE_SERIAL_BUFFER_SIZE                30\n\n/**\n * Buffer size guaranteed to be large enough for \\ref nvmlDeviceGetVbiosVersion\n */\n#define NVML_DEVICE_VBIOS_VERSION_BUFFER_SIZE         32\n\n/** @} */\n\n/***************************************************************************************************/\n/** @defgroup nvmlSystemQueries System Queries\n * This chapter describes the queries that NVML can perform against the local system. These queries\n * are not device-specific.\n *  @{\n */\n/***************************************************************************************************/\n\n/**\n * Retrieves the version of the system's graphics driver.\n *\n * For all products.\n *\n * The version identifier is an alphanumeric string.  It will not exceed 80 characters in length\n * (including the NULL terminator).  See \\ref nvmlConstants::NVML_SYSTEM_DRIVER_VERSION_BUFFER_SIZE.\n *\n * @param version                              Reference in which to return the version identifier\n * @param length                               The maximum allowed length of the string returned in \\a version\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a version has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a version is NULL\n *         - \\ref NVML_ERROR_INSUFFICIENT_SIZE if \\a length is too small\n */\nnvmlReturn_t DECLDIR nvmlSystemGetDriverVersion(char *version, unsigned int length);\n\n/**\n * Retrieves the version of the NVML library.\n *\n * For all products.\n *\n * The version identifier is an alphanumeric string.  It will not exceed 80 characters in length\n * (including the NULL terminator).  See \\ref nvmlConstants::NVML_SYSTEM_NVML_VERSION_BUFFER_SIZE.\n *\n * @param version                              Reference in which to return the version identifier\n * @param length                               The maximum allowed length of the string returned in \\a version\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a version has been set\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a version is NULL\n *         - \\ref NVML_ERROR_INSUFFICIENT_SIZE if \\a length is too small\n */\nnvmlReturn_t DECLDIR nvmlSystemGetNVMLVersion(char *version, unsigned int length);\n\n/**\n * Retrieves the version of the CUDA driver.\n *\n * For all products.\n *\n * The CUDA driver version returned will be retreived from the currently installed version of CUDA.\n * If the cuda library is not found, this function will return a known supported version number.\n *\n * @param cudaDriverVersion                    Reference in which to return the version identifier\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a cudaDriverVersion has been set\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a cudaDriverVersion is NULL\n */\nnvmlReturn_t DECLDIR nvmlSystemGetCudaDriverVersion(int *cudaDriverVersion);\n\n/**\n * Retrieves the version of the CUDA driver from the shared library.\n *\n * For all products.\n *\n * The returned CUDA driver version by calling cuDriverGetVersion()\n *\n * @param cudaDriverVersion                    Reference in which to return the version identifier\n *\n * @return\n *         - \\ref NVML_SUCCESS                  if \\a cudaDriverVersion has been set\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT   if \\a cudaDriverVersion is NULL\n *         - \\ref NVML_ERROR_LIBRARY_NOT_FOUND  if \\a libcuda.so.1 or libcuda.dll is not found\n *         - \\ref NVML_ERROR_FUNCTION_NOT_FOUND if \\a cuDriverGetVersion() is not found in the shared library\n */\nnvmlReturn_t DECLDIR nvmlSystemGetCudaDriverVersion_v2(int *cudaDriverVersion);\n\n/**\n * Macros for converting the CUDA driver version number to Major and Minor version numbers.\n */\n#define NVML_CUDA_DRIVER_VERSION_MAJOR(v) ((v)/1000)\n#define NVML_CUDA_DRIVER_VERSION_MINOR(v) (((v)%1000)/10)\n\n/**\n * Gets name of the process with provided process id\n *\n * For all products.\n *\n * Returned process name is cropped to provided length.\n * name string is encoded in ANSI.\n *\n * @param pid                                  The identifier of the process\n * @param name                                 Reference in which to return the process name\n * @param length                               The maximum allowed length of the string returned in \\a name\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a name has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a name is NULL or \\a length is 0.\n *         - \\ref NVML_ERROR_NOT_FOUND         if process doesn't exists\n *         - \\ref NVML_ERROR_NO_PERMISSION     if the user doesn't have permission to perform this operation\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlSystemGetProcessName(unsigned int pid, char *name, unsigned int length);\n\n/**\n * Retrieves the IDs and firmware versions for any Host Interface Cards (HICs) in the system.\n *\n * For S-class products.\n *\n * The \\a hwbcCount argument is expected to be set to the size of the input \\a hwbcEntries array.\n * The HIC must be connected to an S-class system for it to be reported by this function.\n *\n * @param hwbcCount                            Size of hwbcEntries array\n * @param hwbcEntries                          Array holding information about hwbc\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a hwbcCount and \\a hwbcEntries have been populated\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if either \\a hwbcCount or \\a hwbcEntries is NULL\n *         - \\ref NVML_ERROR_INSUFFICIENT_SIZE if \\a hwbcCount indicates that the \\a hwbcEntries array is too small\n */\nnvmlReturn_t DECLDIR nvmlSystemGetHicVersion(unsigned int *hwbcCount, nvmlHwbcEntry_t *hwbcEntries);\n\n/**\n * Retrieve the set of GPUs that have a CPU affinity with the given CPU number\n * For all products.\n * Supported on Linux only.\n *\n * @param cpuNumber                            The CPU number\n * @param count                                When zero, is set to the number of matching GPUs such that \\a deviceArray\n *                                             can be malloc'd.  When non-zero, \\a deviceArray will be filled with \\a count\n *                                             number of device handles.\n * @param deviceArray                          An array of device handles for GPUs found with affinity to \\a cpuNumber\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a deviceArray or \\a count (if initially zero) has been set\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a cpuNumber, or \\a count is invalid, or \\a deviceArray is NULL with a non-zero \\a count\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device or OS does not support this feature\n *         - \\ref NVML_ERROR_UNKNOWN           an error has occurred in underlying topology discovery\n */\nnvmlReturn_t DECLDIR nvmlSystemGetTopologyGpuSet(unsigned int cpuNumber, unsigned int *count, nvmlDevice_t *deviceArray);\n\n/**\n * Structure to store Driver branch information\n */\ntypedef struct\n{\n    unsigned int version;                                           //!< The version number of this struct\n    char         branch[NVML_SYSTEM_DRIVER_VERSION_BUFFER_SIZE];    //!< driver branch\n} nvmlSystemDriverBranchInfo_v1_t;\ntypedef nvmlSystemDriverBranchInfo_v1_t nvmlSystemDriverBranchInfo_t;\n#define nvmlSystemDriverBranchInfo_v1 NVML_STRUCT_VERSION(SystemDriverBranchInfo, 1)\n\n/**\n * Retrieves the driver branch of the NVIDIA driver installed on the system.\n *\n * For all products.\n *\n * The branch identifier is an alphanumeric string.  It will not exceed 80 characters in length\n * (including the NULL terminator).  See \\ref nvmlConstants::NVML_SYSTEM_DRIVER_VERSION_BUFFER_SIZE.\n *\n * @param branchInfo                            Pointer to the driver branch information structure \\a nvmlSystemDriverBranchInfo_t\n * @param length                                The maximum allowed length of the driver branch string\n *\n * @return\n *         - \\ref NVML_SUCCESS                 successful completion\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a branchInfo is NULL\n *         - \\ref NVML_ERROR_INSUFFICIENT_SIZE if \\a length is too small\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlSystemGetDriverBranch(nvmlSystemDriverBranchInfo_t *branchInfo, unsigned int length);\n\n\n/** @} */\n\n/***************************************************************************************************/\n/** @defgroup nvmlUnitQueries Unit Queries\n * This chapter describes that queries that NVML can perform against each unit. For S-class systems only.\n * In each case the device is identified with an nvmlUnit_t handle. This handle is obtained by\n * calling \\ref nvmlUnitGetHandleByIndex().\n *  @{\n */\n/***************************************************************************************************/\n\n /**\n * Retrieves the number of units in the system.\n *\n * For S-class products.\n *\n * @param unitCount                            Reference in which to return the number of units\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a unitCount has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a unitCount is NULL\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlUnitGetCount(unsigned int *unitCount);\n\n/**\n * Acquire the handle for a particular unit, based on its index.\n *\n * For S-class products.\n *\n * Valid indices are derived from the \\a unitCount returned by \\ref nvmlUnitGetCount().\n *   For example, if \\a unitCount is 2 the valid indices are 0 and 1, corresponding to UNIT 0 and UNIT 1.\n *\n * The order in which NVML enumerates units has no guarantees of consistency between reboots.\n *\n * @param index                                The index of the target unit, >= 0 and < \\a unitCount\n * @param unit                                 Reference in which to return the unit handle\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a unit has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a index is invalid or \\a unit is NULL\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlUnitGetHandleByIndex(unsigned int index, nvmlUnit_t *unit);\n\n/**\n * Retrieves the static information associated with a unit.\n *\n * For S-class products.\n *\n * See \\ref nvmlUnitInfo_t for details on available unit info.\n *\n * @param unit                                 The identifier of the target unit\n * @param info                                 Reference in which to return the unit information\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a info has been populated\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a unit is invalid or \\a info is NULL\n */\nnvmlReturn_t DECLDIR nvmlUnitGetUnitInfo(nvmlUnit_t unit, nvmlUnitInfo_t *info);\n\n/**\n * Retrieves the LED state associated with this unit.\n *\n * For S-class products.\n *\n * See \\ref nvmlLedState_t for details on allowed states.\n *\n * @param unit                                 The identifier of the target unit\n * @param state                                Reference in which to return the current LED state\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a state has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a unit is invalid or \\a state is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if this is not an S-class product\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n *\n * @see nvmlUnitSetLedState()\n */\nnvmlReturn_t DECLDIR nvmlUnitGetLedState(nvmlUnit_t unit, nvmlLedState_t *state);\n\n/**\n * Retrieves the PSU stats for the unit.\n *\n * For S-class products.\n *\n * See \\ref nvmlPSUInfo_t for details on available PSU info.\n *\n * @param unit                                 The identifier of the target unit\n * @param psu                                  Reference in which to return the PSU information\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a psu has been populated\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a unit is invalid or \\a psu is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if this is not an S-class product\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlUnitGetPsuInfo(nvmlUnit_t unit, nvmlPSUInfo_t *psu);\n\n/**\n * Retrieves the temperature readings for the unit, in degrees C.\n *\n * For S-class products.\n *\n * Depending on the product, readings may be available for intake (type=0),\n * exhaust (type=1) and board (type=2).\n *\n * @param unit                                 The identifier of the target unit\n * @param type                                 The type of reading to take\n * @param temp                                 Reference in which to return the intake temperature\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a temp has been populated\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a unit or \\a type is invalid or \\a temp is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if this is not an S-class product\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlUnitGetTemperature(nvmlUnit_t unit, unsigned int type, unsigned int *temp);\n\n/**\n * Retrieves the fan speed readings for the unit.\n *\n * For S-class products.\n *\n * See \\ref nvmlUnitFanSpeeds_t for details on available fan speed info.\n *\n * @param unit                                 The identifier of the target unit\n * @param fanSpeeds                            Reference in which to return the fan speed information\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a fanSpeeds has been populated\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a unit is invalid or \\a fanSpeeds is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if this is not an S-class product\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlUnitGetFanSpeedInfo(nvmlUnit_t unit, nvmlUnitFanSpeeds_t *fanSpeeds);\n\n/**\n * Retrieves the set of GPU devices that are attached to the specified unit.\n *\n * For S-class products.\n *\n * The \\a deviceCount argument is expected to be set to the size of the input \\a devices array.\n *\n * @param unit                                 The identifier of the target unit\n * @param deviceCount                          Reference in which to provide the \\a devices array size, and\n *                                             to return the number of attached GPU devices\n * @param devices                              Reference in which to return the references to the attached GPU devices\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a deviceCount and \\a devices have been populated\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INSUFFICIENT_SIZE if \\a deviceCount indicates that the \\a devices array is too small\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a unit is invalid, either of \\a deviceCount or \\a devices is NULL\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlUnitGetDevices(nvmlUnit_t unit, unsigned int *deviceCount, nvmlDevice_t *devices);\n\n/** @} */\n\n/***************************************************************************************************/\n/** @defgroup nvmlDeviceQueries Device Queries\n * This chapter describes that queries that NVML can perform against each device.\n * In each case the device is identified with an nvmlDevice_t handle. This handle is obtained by\n * calling one of \\ref nvmlDeviceGetHandleByIndex_v2(), \\ref nvmlDeviceGetHandleBySerial(),\n * \\ref nvmlDeviceGetHandleByPciBusId_v2(). or \\ref nvmlDeviceGetHandleByUUID().\n *  @{\n */\n/***************************************************************************************************/\n\n /**\n * Retrieves the number of compute devices in the system. A compute device is a single GPU.\n *\n * For all products.\n *\n * Note: New nvmlDeviceGetCount_v2 (default in NVML 5.319) returns count of all devices in the system\n *       even if nvmlDeviceGetHandleByIndex_v2 returns NVML_ERROR_NO_PERMISSION for such device.\n *       Update your code to handle this error, or use NVML 4.304 or older nvml header file.\n *       For backward binary compatibility reasons _v1 version of the API is still present in the shared\n *       library.\n *       Old _v1 version of nvmlDeviceGetCount doesn't count devices that NVML has no permission to talk to.\n *\n * @param deviceCount                          Reference in which to return the number of accessible devices\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a deviceCount has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a deviceCount is NULL\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetCount_v2(unsigned int *deviceCount);\n\n/**\n * Get attributes (engine counts etc.) for the given NVML device handle.\n *\n * @note This API currently only supports MIG device handles.\n *\n * For Ampere &tm; or newer fully supported devices.\n * Supported on Linux only.\n *\n * @param device                               NVML device handle\n * @param attributes                           Device attributes\n *\n * @return\n *        - \\ref NVML_SUCCESS                  if \\a device attributes were successfully retrieved\n *        - \\ref NVML_ERROR_INVALID_ARGUMENT   if \\a device handle is invalid\n *        - \\ref NVML_ERROR_UNINITIALIZED      if the library has not been successfully initialized\n *        - \\ref NVML_ERROR_NOT_SUPPORTED      if this query is not supported by the device\n *        - \\ref NVML_ERROR_UNKNOWN            on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetAttributes_v2(nvmlDevice_t device, nvmlDeviceAttributes_t *attributes);\n\n/**\n * Acquire the handle for a particular device, based on its index.\n *\n * For all products.\n *\n * Valid indices are derived from the \\a accessibleDevices count returned by\n *   \\ref nvmlDeviceGetCount_v2(). For example, if \\a accessibleDevices is 2 the valid indices\n *   are 0 and 1, corresponding to GPU 0 and GPU 1.\n *\n * The order in which NVML enumerates devices has no guarantees of consistency between reboots. For that reason it\n *   is recommended that devices be looked up by their PCI ids or UUID. See\n *   \\ref nvmlDeviceGetHandleByUUID() and \\ref nvmlDeviceGetHandleByPciBusId_v2().\n *\n * Note: The NVML index may not correlate with other APIs, such as the CUDA device index.\n *\n * Starting from NVML 5, this API causes NVML to initialize the target GPU\n * NVML may initialize additional GPUs if:\n *  - The target GPU is an SLI slave\n *\n * Note: New nvmlDeviceGetCount_v2 (default in NVML 5.319) returns count of all devices in the system\n *       even if nvmlDeviceGetHandleByIndex_v2 returns NVML_ERROR_NO_PERMISSION for such device.\n *       Update your code to handle this error, or use NVML 4.304 or older nvml header file.\n *       For backward binary compatibility reasons _v1 version of the API is still present in the shared\n *       library.\n *       Old _v1 version of nvmlDeviceGetCount doesn't count devices that NVML has no permission to talk to.\n *\n *       This means that nvmlDeviceGetHandleByIndex_v2 and _v1 can return different devices for the same index.\n *       If you don't touch macros that map old (_v1) versions to _v2 versions at the top of the file you don't\n *       need to worry about that.\n *\n * @param index                                The index of the target GPU, >= 0 and < \\a accessibleDevices\n * @param device                               Reference in which to return the device handle\n *\n * @return\n *         - \\ref NVML_SUCCESS                  if \\a device has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED      if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT   if \\a index is invalid or \\a device is NULL\n *         - \\ref NVML_ERROR_INSUFFICIENT_POWER if any attached devices have improperly attached external power cables\n *         - \\ref NVML_ERROR_NO_PERMISSION      if the user doesn't have permission to talk to this device\n *         - \\ref NVML_ERROR_IRQ_ISSUE          if NVIDIA kernel detected an interrupt issue with the attached GPUs\n *         - \\ref NVML_ERROR_GPU_IS_LOST        if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN            on any unexpected error\n *\n * @see nvmlDeviceGetIndex\n * @see nvmlDeviceGetCount\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetHandleByIndex_v2(unsigned int index, nvmlDevice_t *device);\n\n/**\n * Acquire the handle for a particular device, based on its board serial number.\n *\n * For Fermi &tm; or newer fully supported devices.\n *\n * This number corresponds to the value printed directly on the board, and to the value returned by\n *   \\ref nvmlDeviceGetSerial().\n *\n * @deprecated Since more than one GPU can exist on a single board this function is deprecated in favor\n *             of \\ref nvmlDeviceGetHandleByUUID.\n *             For dual GPU boards this function will return NVML_ERROR_INVALID_ARGUMENT.\n *\n * Starting from NVML 5, this API causes NVML to initialize the target GPU\n * NVML may initialize additional GPUs as it searches for the target GPU\n *\n * @param serial                               The board serial number of the target GPU\n * @param device                               Reference in which to return the device handle\n *\n * @return\n *         - \\ref NVML_SUCCESS                  if \\a device has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED      if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT   if \\a serial is invalid, \\a device is NULL or more than one\n *                                              device has the same serial (dual GPU boards)\n *         - \\ref NVML_ERROR_NOT_FOUND          if \\a serial does not match a valid device on the system\n *         - \\ref NVML_ERROR_INSUFFICIENT_POWER if any attached devices have improperly attached external power cables\n *         - \\ref NVML_ERROR_IRQ_ISSUE          if NVIDIA kernel detected an interrupt issue with the attached GPUs\n *         - \\ref NVML_ERROR_GPU_IS_LOST        if any GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN            on any unexpected error\n *\n * @see nvmlDeviceGetSerial\n * @see nvmlDeviceGetHandleByUUID\n */\nDEPRECATED(13.0) nvmlReturn_t DECLDIR nvmlDeviceGetHandleBySerial(const char *serial, nvmlDevice_t *device);\n\n/**\n * Acquire the handle for a particular device, based on its globally unique immutable UUID (in ASCII format) associated with each device.\n *\n * For all products.\n *\n * @param uuid                                 The UUID of the target GPU or MIG instance\n * @param device                               Reference in which to return the device handle or MIG device handle\n *\n * Starting from NVML 5, this API causes NVML to initialize the target GPU\n * NVML may initialize additional GPUs as it searches for the target GPU\n *\n * @return\n *         - \\ref NVML_SUCCESS                  if \\a device has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED      if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT   if \\a uuid is invalid or \\a device is null\n *         - \\ref NVML_ERROR_NOT_FOUND          if \\a uuid does not match a valid device on the system\n *         - \\ref NVML_ERROR_INSUFFICIENT_POWER if any attached devices have improperly attached external power cables\n *         - \\ref NVML_ERROR_IRQ_ISSUE          if NVIDIA kernel detected an interrupt issue with the attached GPUs\n *         - \\ref NVML_ERROR_GPU_IS_LOST        if any GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN            on any unexpected error\n *\n * @see nvmlDeviceGetUUID\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetHandleByUUID(const char *uuid, nvmlDevice_t *device);\n\n/**\n * Acquire the handle for a particular device, based on its globally unique immutable UUID (in either ASCII or binary format) associated with each device.\n * See \\ref nvmlUUID_v1_t for more information on the UUID struct. The caller must set the appropriate version prior to calling this API.\n *\n * For all products.\n *\n * @param[in] uuid                                  The UUID of the target GPU or MIG instance\n * @param[out] device                               Reference in which to return the device handle or MIG device handle\n *\n * This API causes NVML to initialize the target GPU\n * NVML may initialize additional GPUs as it searches for the target GPU\n *\n * @return\n *         - \\ref NVML_SUCCESS                          if \\a device has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED              if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT           if \\a uuid is invalid, \\a device is null or \\a uuid->type is invalid\n *         - \\ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH  if the provided version is invalid/unsupported\n *         - \\ref NVML_ERROR_NOT_FOUND                  if \\a uuid does not match a valid device on the system\n *         - \\ref NVML_ERROR_GPU_IS_LOST                if any GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN                    on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetHandleByUUIDV(const nvmlUUID_t *uuid, nvmlDevice_t *device);\n\n/**\n * Acquire the handle for a particular device, based on its PCI bus id.\n *\n * For all products.\n *\n * This value corresponds to the nvmlPciInfo_t::busId returned by \\ref nvmlDeviceGetPciInfo_v3().\n *\n * Starting from NVML 5, this API causes NVML to initialize the target GPU\n * NVML may initialize additional GPUs if:\n *  - The target GPU is an SLI slave\n *\n * \\note NVML 4.304 and older version of nvmlDeviceGetHandleByPciBusId\"_v1\" returns NVML_ERROR_NOT_FOUND\n *       instead of NVML_ERROR_NO_PERMISSION.\n *\n * @param pciBusId                             The PCI bus id of the target GPU\n *                                             Accept the following formats (all numbers in hexadecimal):\n *                                               domain:bus:device.function in format %x:%x:%x.%x\n *                                               domain:bus:device in format %x:%x:%x\n *                                               bus:device.function in format %x:%x.%x\n *\n * @param device                               Reference in which to return the device handle\n *\n * @return\n *         - \\ref NVML_SUCCESS                  if \\a device has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED      if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT   if \\a pciBusId is invalid or \\a device is NULL\n *         - \\ref NVML_ERROR_NOT_FOUND          if \\a pciBusId does not match a valid device on the system\n *         - \\ref NVML_ERROR_INSUFFICIENT_POWER if the attached device has improperly attached external power cables\n *         - \\ref NVML_ERROR_NO_PERMISSION      if the user doesn't have permission to talk to this device\n *         - \\ref NVML_ERROR_IRQ_ISSUE          if NVIDIA kernel detected an interrupt issue with the attached GPUs\n *         - \\ref NVML_ERROR_GPU_IS_LOST        if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN            on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetHandleByPciBusId_v2(const char *pciBusId, nvmlDevice_t *device);\n\n/**\n * Retrieves the name of this device.\n *\n * For all products.\n *\n * The name is an alphanumeric string that denotes a particular product, e.g. Tesla &tm; C2070. It will not\n * exceed 96 characters in length (including the NULL terminator).  See \\ref\n * nvmlConstants::NVML_DEVICE_NAME_V2_BUFFER_SIZE.\n *\n * When used with MIG device handles the API returns MIG device names which can be used to identify devices\n * based on their attributes.\n *\n * @param device                               The identifier of the target device\n * @param name                                 Reference in which to return the product name\n * @param length                               The maximum allowed length of the string returned in \\a name\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a name has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid, or \\a name is NULL\n *         - \\ref NVML_ERROR_INSUFFICIENT_SIZE if \\a length is too small\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetName(nvmlDevice_t device, char *name, unsigned int length);\n\n/**\n * Retrieves the brand of this device.\n *\n * For all products.\n *\n * The type is a member of \\ref nvmlBrandType_t defined above.\n *\n * @param device                               The identifier of the target device\n * @param type                                 Reference in which to return the product brand type\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a name has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid, or \\a type is NULL\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetBrand(nvmlDevice_t device, nvmlBrandType_t *type);\n\n/**\n * Retrieves the NVML index of this device.\n *\n * For all products.\n *\n * Valid indices are derived from the \\a accessibleDevices count returned by\n *   \\ref nvmlDeviceGetCount_v2(). For example, if \\a accessibleDevices is 2 the valid indices\n *   are 0 and 1, corresponding to GPU 0 and GPU 1.\n *\n * The order in which NVML enumerates devices has no guarantees of consistency between reboots. For that reason it\n *   is recommended that devices be looked up by their PCI ids or GPU UUID. See\n *   \\ref nvmlDeviceGetHandleByPciBusId_v2() and \\ref nvmlDeviceGetHandleByUUID().\n *\n * When used with MIG device handles this API returns indices that can be\n * passed to \\ref nvmlDeviceGetMigDeviceHandleByIndex to retrieve an identical handle.\n * MIG device indices are unique within a device.\n *\n * Note: The NVML index may not correlate with other APIs, such as the CUDA device index.\n *\n * @param device                               The identifier of the target device\n * @param index                                Reference in which to return the NVML index of the device\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a index has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid, or \\a index is NULL\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n *\n * @see nvmlDeviceGetHandleByIndex()\n * @see nvmlDeviceGetCount()\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetIndex(nvmlDevice_t device, unsigned int *index);\n\n/**\n * Retrieves the globally unique board serial number associated with this device's board.\n *\n * For all products with an inforom.\n *\n * The serial number is an alphanumeric string that will not exceed 30 characters (including the NULL terminator).\n * This number matches the serial number tag that is physically attached to the board.  See \\ref\n * nvmlConstants::NVML_DEVICE_SERIAL_BUFFER_SIZE.\n *\n * @param device                               The identifier of the target device\n * @param serial                               Reference in which to return the board/module serial number\n * @param length                               The maximum allowed length of the string returned in \\a serial\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a serial has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid, or \\a serial is NULL\n *         - \\ref NVML_ERROR_INSUFFICIENT_SIZE if \\a length is too small\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support this feature\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetSerial(nvmlDevice_t device, char *serial, unsigned int length);\n\n/**\n * Get a unique identifier for the device module on the baseboard\n *\n * This API retrieves a unique identifier for each GPU module that exists on a given baseboard.\n * For non-baseboard products, this ID would always be 0.\n *\n * @param device                               The identifier of the target device\n * @param moduleId                             Unique identifier for the GPU module\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a moduleId has been successfully retrieved\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device or \\a moduleId is invalid\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetModuleId(nvmlDevice_t device, unsigned int *moduleId);\n\n/**\n * Retrieves the Device's C2C Mode information\n *\n * @param device                               The identifier of the target device\n * @param c2cModeInfo                          Output struct containing the device's C2C Mode info\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a C2C Mode Infor query is successful\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid, or \\a serial is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support this feature\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetC2cModeInfoV(nvmlDevice_t device, nvmlC2cModeInfo_v1_t *c2cModeInfo);\n\n/***************************************************************************************************/\n\n/** @defgroup nvmlAffinity CPU and Memory Affinity\n *  This chapter describes NVML operations that are associated with CPU and memory\n *  affinity.\n *  @{\n */\n/***************************************************************************************************/\n\n//! Scope of NUMA node for affinity queries\n#define NVML_AFFINITY_SCOPE_NODE     0\n//! Scope of processor socket for affinity queries\n#define NVML_AFFINITY_SCOPE_SOCKET   1\n\ntypedef unsigned int nvmlAffinityScope_t;\n\n/**\n * Retrieves an array of unsigned ints (sized to nodeSetSize) of bitmasks with\n * the ideal memory affinity within node or socket for the device.\n * For example, if NUMA node 0, 1 are ideal within the socket for the device and nodeSetSize ==  1,\n *     result[0] = 0x3\n *\n * \\note If requested scope is not applicable to the target topology, the API\n *       will fall back to reporting the memory affinity for the immediate non-I/O\n *       ancestor of the device.\n *\n * For Kepler &tm; or newer fully supported devices.\n * Supported on Linux only.\n *\n * @param device                               The identifier of the target device\n * @param nodeSetSize                          The size of the nodeSet array that is safe to access\n * @param nodeSet                              Array reference in which to return a bitmask of NODEs, 64 NODEs per\n *                                             unsigned long on 64-bit machines, 32 on 32-bit machines\n * @param scope                                Scope that change the default behavior\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a NUMA node Affinity has been filled\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid, nodeSetSize == 0, nodeSet is NULL or scope is invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support this feature\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\n\nnvmlReturn_t DECLDIR nvmlDeviceGetMemoryAffinity(nvmlDevice_t device, unsigned int nodeSetSize, unsigned long *nodeSet, nvmlAffinityScope_t scope);\n\n/**\n * Retrieves an array of unsigned ints (sized to cpuSetSize) of bitmasks with the\n * ideal CPU affinity within node or socket for the device.\n * For example, if processors 0, 1, 32, and 33 are ideal for the device and cpuSetSize == 2,\n *     result[0] = 0x3, result[1] = 0x3\n *\n * \\note If requested scope is not applicable to the target topology, the API\n *       will fall back to reporting the CPU affinity for the immediate non-I/O\n *       ancestor of the device.\n *\n * For Kepler &tm; or newer fully supported devices.\n * Supported on Linux only.\n *\n * @param device                               The identifier of the target device\n * @param cpuSetSize                           The size of the cpuSet array that is safe to access\n * @param cpuSet                               Array reference in which to return a bitmask of CPUs, 64 CPUs per\n *                                                 unsigned long on 64-bit machines, 32 on 32-bit machines\n * @param scope                                Scope that change the default behavior\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a cpuAffinity has been filled\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid, cpuSetSize == 0, cpuSet is NULL or sope is invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support this feature\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\n\nnvmlReturn_t DECLDIR nvmlDeviceGetCpuAffinityWithinScope(nvmlDevice_t device, unsigned int cpuSetSize, unsigned long *cpuSet, nvmlAffinityScope_t scope);\n\n/**\n * Retrieves an array of unsigned ints (sized to cpuSetSize) of bitmasks with the ideal CPU affinity for the device\n * For example, if processors 0, 1, 32, and 33 are ideal for the device and cpuSetSize == 2,\n *     result[0] = 0x3, result[1] = 0x3\n * This is equivalent to calling \\ref nvmlDeviceGetCpuAffinityWithinScope with \\ref NVML_AFFINITY_SCOPE_NODE.\n *\n * For Kepler &tm; or newer fully supported devices.\n * Supported on Linux only.\n *\n * @param device                               The identifier of the target device\n * @param cpuSetSize                           The size of the cpuSet array that is safe to access\n * @param cpuSet                               Array reference in which to return a bitmask of CPUs, 64 CPUs per\n *                                                 unsigned long on 64-bit machines, 32 on 32-bit machines\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a cpuAffinity has been filled\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid, cpuSetSize == 0, or cpuSet is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support this feature\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetCpuAffinity(nvmlDevice_t device, unsigned int cpuSetSize, unsigned long *cpuSet);\n\n/**\n * Sets the ideal affinity for the calling thread and device using the guidelines\n * given in nvmlDeviceGetCpuAffinity().  Note, this is a change as of version 8.0.\n * Older versions set the affinity for a calling process and all children.\n * Currently supports up to 1024 processors.\n *\n * For Kepler &tm; or newer fully supported devices.\n * Supported on Linux only.\n *\n * @param device                               The identifier of the target device\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if the calling process has been successfully bound\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support this feature\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceSetCpuAffinity(nvmlDevice_t device);\n\n/**\n * Clear all affinity bindings for the calling thread.  Note, this is a change as of version\n * 8.0 as older versions cleared the affinity for a calling process and all children.\n *\n * For Kepler &tm; or newer fully supported devices.\n * Supported on Linux only.\n *\n * @param device                               The identifier of the target device\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if the calling process has been successfully unbound\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceClearCpuAffinity(nvmlDevice_t device);\n\n/**\n * Get the NUMA node of the given GPU device.\n * This only applies to platforms where the GPUs are NUMA nodes.\n *\n * @param[in]      device                  The device handle\n * @param[out]     node                    NUMA node ID of the device\n *\n * @returns\n *         - \\ref NVML_SUCCESS                  if the NUMA node is retrieved successfully\n *         - \\ref NVML_ERROR_NOT_SUPPORTED      if request is not supported on the current platform\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT   if \\a device \\a node is invalid\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetNumaNodeId(nvmlDevice_t device, unsigned int *node);\n\n/**\n * Get the addressing mode for a given GPU. Addressing modes can be one of:\n * 1. HMM:  System allocated memory (malloc, mmap) is addressable from the device (GPU),\n *          via software-based mirroring of the CPU's page tables, on the GPU.\n * 2. ATS:  System allocated memory (malloc, mmap) is addressable from the device (GPU),\n *          via Address Translation Services. This means that there is (effectively)\n *          a single set of page tables, and the CPU and GPU both use them.\n * 3. None: Neither HMM nor ATS is active.\n *\n * %TURING_OR_NEWER%\n * Supported on Linux only.\n *\n * @param[in]      device                  The device handle\n * @param[out]     mode                    Pointer to addressing mode of the device\n *\n * @returns\n *         - \\ref NVML_SUCCESS                          if \\a mode is retrieved successfully\n *         - \\ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH  if the provided version is invalid/unsupported\n *         - \\ref NVML_ERROR_NOT_SUPPORTED              if request is not supported on the current platform\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT           if \\a device \\a node is invalid\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetAddressingMode(nvmlDevice_t device, nvmlDeviceAddressingMode_t *mode);\n\n/**\n * Get the repair status for TPC/Channel repair\n *\n * For Ampere &tm; or newer fully supported devices.\n *\n * @param[in] device                               The identifier of the target device\n * @param[out] repairStatus                         Reference to \\a nvmlRepairStatus_t\n *\n * @return\n *         - \\ref NVML_SUCCESS                          if the query was successful\n *         - \\ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH  if the provided version is invalid/unsupported\n *         - \\ref NVML_ERROR_UNINITIALIZED              if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT           if \\a device is invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED              if the device does not support this feature\n *         - \\ref NVML_ERROR_UNKNOWN                    on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetRepairStatus(nvmlDevice_t device, nvmlRepairStatus_t *repairStatus);\n\n/**\n * Retrieve the common ancestor for two devices\n * For all products.\n * Supported on Linux only.\n *\n * @param device1                              The identifier of the first device\n * @param device2                              The identifier of the second device\n * @param pathInfo                             A \\ref nvmlGpuTopologyLevel_t that gives the path type\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a pathInfo has been set\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device1, or \\a device2 is invalid, or \\a pathInfo is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device or OS does not support this feature\n *         - \\ref NVML_ERROR_UNKNOWN           an error has occurred in underlying topology discovery\n */\n\n/** @} */\nnvmlReturn_t DECLDIR nvmlDeviceGetTopologyCommonAncestor(nvmlDevice_t device1, nvmlDevice_t device2, nvmlGpuTopologyLevel_t *pathInfo);\n\n/**\n * Retrieve the set of GPUs that are nearest to a given device at a specific interconnectivity level\n * For all products.\n * Supported on Linux only.\n *\n * @param device                               The identifier of the first device\n * @param level                                The \\ref nvmlGpuTopologyLevel_t level to search for other GPUs\n * @param count                                When zero, is set to the number of matching GPUs such that \\a deviceArray\n *                                             can be malloc'd.  When non-zero, \\a deviceArray will be filled with \\a count\n *                                             number of device handles.\n * @param deviceArray                          An array of device handles for GPUs found at \\a level\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a deviceArray or \\a count (if initially zero) has been set\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device, \\a level, or \\a count is invalid, or \\a deviceArray is NULL with a non-zero \\a count\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device or OS does not support this feature\n *         - \\ref NVML_ERROR_UNKNOWN           an error has occurred in underlying topology discovery\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetTopologyNearestGpus(nvmlDevice_t device, nvmlGpuTopologyLevel_t level, unsigned int *count, nvmlDevice_t *deviceArray);\n\n/**\n * Retrieve the status for a given p2p capability index between a given pair of GPU\n *\n * @param device1                              The first device\n * @param device2                              The second device\n * @param p2pIndex                             p2p Capability Index being looked for between \\a device1 and \\a device2\n * @param p2pStatus                            Reference in which to return the status of the \\a p2pIndex\n *                                             between \\a device1 and \\a device2\n * @return\n *         - \\ref NVML_SUCCESS         if \\a p2pStatus has been populated\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT     if \\a device1 or \\a device2 or \\a p2pIndex is invalid or \\a p2pStatus is NULL\n *         - \\ref NVML_ERROR_UNKNOWN              on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetP2PStatus(nvmlDevice_t device1, nvmlDevice_t device2, nvmlGpuP2PCapsIndex_t p2pIndex,nvmlGpuP2PStatus_t *p2pStatus);\n\n/**\n * Retrieves the globally unique immutable UUID associated with this device, as a 5 part hexadecimal string,\n * that augments the immutable, board serial identifier.\n *\n * For all products.\n *\n * The UUID is a globally unique identifier. It is the only available identifier for pre-Fermi-architecture products.\n * It does NOT correspond to any identifier printed on the board.  It will not exceed 96 characters in length\n * (including the NULL terminator).  See \\ref nvmlConstants::NVML_DEVICE_UUID_V2_BUFFER_SIZE.\n *\n * When used with MIG device handles the API returns globally unique UUIDs which can be used to identify MIG\n * devices across both GPU and MIG devices. UUIDs are immutable for the lifetime of a MIG device.\n *\n * @param device                               The identifier of the target device\n * @param uuid                                 Reference in which to return the GPU UUID\n * @param length                               The maximum allowed length of the string returned in \\a uuid\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a uuid has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid, or \\a uuid is NULL\n *         - \\ref NVML_ERROR_INSUFFICIENT_SIZE if \\a length is too small\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support this feature\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetUUID(nvmlDevice_t device, char *uuid, unsigned int length);\n\n/**\n * Retrieves minor number for the device. The minor number for the device is such that the Nvidia device node file for\n * each GPU will have the form /dev/nvidia[minor number].\n *\n * For all products.\n * Supported only for Linux\n *\n * @param device                                The identifier of the target device\n * @param minorNumber                           Reference in which to return the minor number for the device\n * @return\n *         - \\ref NVML_SUCCESS                 if the minor number is successfully retrieved\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a minorNumber is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if this query is not supported by the device\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetMinorNumber(nvmlDevice_t device, unsigned int *minorNumber);\n\n/**\n * Retrieves the the device board part number which is programmed into the board's InfoROM\n *\n * For all products.\n *\n * @param device                                Identifier of the target device\n * @param partNumber                            Reference to the buffer to return\n * @param length                                Length of the buffer reference\n *\n * @return\n *         - \\ref NVML_SUCCESS                  if \\a partNumber has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED      if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_NOT_SUPPORTED      if the needed VBIOS fields have not been filled\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT   if \\a device is invalid or \\a serial is NULL\n *         - \\ref NVML_ERROR_GPU_IS_LOST        if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN            on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetBoardPartNumber(nvmlDevice_t device, char* partNumber, unsigned int length);\n\n/**\n * Retrieves the version information for the device's infoROM object.\n *\n * For all products with an inforom.\n *\n * Fermi and higher parts have non-volatile on-board memory for persisting device info, such as aggregate\n * ECC counts. The version of the data structures in this memory may change from time to time. It will not\n * exceed 16 characters in length (including the NULL terminator).\n * See \\ref nvmlConstants::NVML_DEVICE_INFOROM_VERSION_BUFFER_SIZE.\n *\n * See \\ref nvmlInforomObject_t for details on the available infoROM objects.\n *\n * @param device                               The identifier of the target device\n * @param object                               The target infoROM object\n * @param version                              Reference in which to return the infoROM version\n * @param length                               The maximum allowed length of the string returned in \\a version\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a version has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a version is NULL\n *         - \\ref NVML_ERROR_INSUFFICIENT_SIZE if \\a length is too small\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not have an infoROM\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n *\n * @see nvmlDeviceGetInforomImageVersion\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetInforomVersion(nvmlDevice_t device, nvmlInforomObject_t object, char *version, unsigned int length);\n\n/**\n * Retrieves the global infoROM image version\n *\n * For all products with an inforom.\n *\n * Image version just like VBIOS version uniquely describes the exact version of the infoROM flashed on the board\n * in contrast to infoROM object version which is only an indicator of supported features.\n * Version string will not exceed 16 characters in length (including the NULL terminator).\n * See \\ref nvmlConstants::NVML_DEVICE_INFOROM_VERSION_BUFFER_SIZE.\n *\n * @param device                               The identifier of the target device\n * @param version                              Reference in which to return the infoROM image version\n * @param length                               The maximum allowed length of the string returned in \\a version\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a version has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a version is NULL\n *         - \\ref NVML_ERROR_INSUFFICIENT_SIZE if \\a length is too small\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not have an infoROM\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n *\n * @see nvmlDeviceGetInforomVersion\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetInforomImageVersion(nvmlDevice_t device, char *version, unsigned int length);\n\n/**\n * Retrieves the checksum of the configuration stored in the device's infoROM.\n *\n * For all products with an inforom.\n *\n * Can be used to make sure that two GPUs have the exact same configuration.\n * Current checksum takes into account configuration stored in PWR and ECC infoROM objects.\n * Checksum can change between driver releases or when user changes configuration (e.g. disable/enable ECC)\n *\n * @param device                               The identifier of the target device\n * @param checksum                             Reference in which to return the infoROM configuration checksum\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a checksum has been set\n *         - \\ref NVML_ERROR_CORRUPTED_INFOROM if the device's checksum couldn't be retrieved due to infoROM corruption\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a checksum is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support this feature\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetInforomConfigurationChecksum(nvmlDevice_t device, unsigned int *checksum);\n\n/**\n * Reads the infoROM from the flash and verifies the checksums.\n *\n * For all products with an inforom.\n *\n * @param device                               The identifier of the target device\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if infoROM is not corrupted\n *         - \\ref NVML_ERROR_CORRUPTED_INFOROM if the device's infoROM is corrupted\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support this feature\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceValidateInforom(nvmlDevice_t device);\n\n/**\n * Retrieves the timestamp and the duration of the last flush of the BBX (blackbox) infoROM object during the current run.\n *\n * For all products with an inforom.\n *\n * @param device                               The identifier of the target device\n * @param timestamp                            The start timestamp of the last BBX Flush\n * @param durationUs                           The duration (us) of the last BBX Flush\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a timestamp and \\a durationUs are successfully retrieved\n *         - \\ref NVML_ERROR_NOT_READY         if the BBX object has not been flushed yet\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not have an infoROM\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n *\n * @see nvmlDeviceGetInforomVersion\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetLastBBXFlushTime(nvmlDevice_t device, unsigned long long *timestamp,\n                                                   unsigned long *durationUs);\n\n/**\n * Retrieves the display mode for the device.\n *\n * For all products.\n *\n * This method indicates whether a physical display (e.g. monitor) is currently connected to\n * any of the device's connectors.\n *\n * See \\ref nvmlEnableState_t for details on allowed modes.\n *\n * @param device                               The identifier of the target device\n * @param display                              Reference in which to return the display mode\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a display has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a display is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support this feature\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetDisplayMode(nvmlDevice_t device, nvmlEnableState_t *display);\n\n/**\n * Retrieves the display active state for the device.\n *\n * For all products.\n *\n * This method indicates whether a display is initialized on the device.\n * For example whether X Server is attached to this device and has allocated memory for the screen.\n *\n * Display can be active even when no monitor is physically attached.\n *\n * See \\ref nvmlEnableState_t for details on allowed modes.\n *\n * @param device                               The identifier of the target device\n * @param isActive                             Reference in which to return the display active state\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a isActive has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a isActive is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support this feature\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetDisplayActive(nvmlDevice_t device, nvmlEnableState_t *isActive);\n\n/**\n * Retrieves the persistence mode associated with this device.\n *\n * For all products.\n * For Linux only.\n *\n * When driver persistence mode is enabled the driver software state is not torn down when the last\n * client disconnects. By default this feature is disabled.\n *\n * See \\ref nvmlEnableState_t for details on allowed modes.\n *\n * @param device                               The identifier of the target device\n * @param mode                                 Reference in which to return the current driver persistence mode\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a mode has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a mode is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support this feature\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n *\n * @see nvmlDeviceSetPersistenceMode()\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetPersistenceMode(nvmlDevice_t device, nvmlEnableState_t *mode);\n\n/**\n * Retrieves PCI attributes of this device.\n *\n * For all products.\n *\n * See \\ref nvmlPciInfoExt_v1_t for details on the available PCI info.\n *\n * @param device                               The identifier of the target device\n * @param pci                                  Reference in which to return the PCI info\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a pci has been populated\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a pci is NULL\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetPciInfoExt(nvmlDevice_t device, nvmlPciInfoExt_t *pci);\n\n/**\n * Retrieves the PCI attributes of this device.\n *\n * For all products.\n *\n * See \\ref nvmlPciInfo_t for details on the available PCI info.\n *\n * @param device                               The identifier of the target device\n * @param pci                                  Reference in which to return the PCI info\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a pci has been populated\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a pci is NULL\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetPciInfo_v3(nvmlDevice_t device, nvmlPciInfo_t *pci);\n\n/**\n * Retrieves the maximum PCIe link generation possible with this device and system\n *\n * I.E. for a generation 2 PCIe device attached to a generation 1 PCIe bus the max link generation this function will\n * report is generation 1.\n *\n * For Fermi &tm; or newer fully supported devices.\n *\n * @param device                               The identifier of the target device\n * @param maxLinkGen                           Reference in which to return the max PCIe link generation\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a maxLinkGen has been populated\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a maxLinkGen is null\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if PCIe link information is not available\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetMaxPcieLinkGeneration(nvmlDevice_t device, unsigned int *maxLinkGen);\n\n/**\n * Retrieves the maximum PCIe link generation supported by this device\n *\n * For Fermi &tm; or newer fully supported devices.\n *\n * @param device                               The identifier of the target device\n * @param maxLinkGenDevice                     Reference in which to return the max PCIe link generation\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a maxLinkGenDevice has been populated\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a maxLinkGenDevice is null\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if PCIe link information is not available\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetGpuMaxPcieLinkGeneration(nvmlDevice_t device, unsigned int *maxLinkGenDevice);\n\n/**\n * Retrieves the maximum PCIe link width possible with this device and system\n *\n * I.E. for a device with a 16x PCIe bus width attached to a 8x PCIe system bus this function will report\n * a max link width of 8.\n *\n * For Fermi &tm; or newer fully supported devices.\n *\n * @param device                               The identifier of the target device\n * @param maxLinkWidth                         Reference in which to return the max PCIe link generation\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a maxLinkWidth has been populated\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a maxLinkWidth is null\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if PCIe link information is not available\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetMaxPcieLinkWidth(nvmlDevice_t device, unsigned int *maxLinkWidth);\n\n/**\n * Retrieves the current PCIe link generation\n *\n * For Fermi &tm; or newer fully supported devices.\n *\n * @param device                               The identifier of the target device\n * @param currLinkGen                          Reference in which to return the current PCIe link generation\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a currLinkGen has been populated\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a currLinkGen is null\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if PCIe link information is not available\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetCurrPcieLinkGeneration(nvmlDevice_t device, unsigned int *currLinkGen);\n\n/**\n * Retrieves the current PCIe link width\n *\n * For Fermi &tm; or newer fully supported devices.\n *\n * @param device                               The identifier of the target device\n * @param currLinkWidth                        Reference in which to return the current PCIe link generation\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a currLinkWidth has been populated\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a currLinkWidth is null\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if PCIe link information is not available\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetCurrPcieLinkWidth(nvmlDevice_t device, unsigned int *currLinkWidth);\n\n/**\n * Retrieve PCIe utilization information.\n * This function is querying a byte counter over a 20ms interval and thus is the\n *   PCIe throughput over that interval.\n *\n * For Maxwell &tm; or newer fully supported devices.\n *\n * This method is not supported in virtual machines running virtual GPU (vGPU).\n *\n * @param device                               The identifier of the target device\n * @param counter                              The specific counter that should be queried \\ref nvmlPcieUtilCounter_t\n * @param value                                Reference in which to return throughput in KB/s\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a value has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device or \\a counter is invalid, or \\a value is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support this feature\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetPcieThroughput(nvmlDevice_t device, nvmlPcieUtilCounter_t counter, unsigned int *value);\n\n/**\n * Retrieve the PCIe replay counter.\n *\n * For Kepler &tm; or newer fully supported devices.\n *\n * @param device                               The identifier of the target device\n * @param value                                Reference in which to return the counter's value\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a value has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid, or \\a value is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support this feature\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetPcieReplayCounter(nvmlDevice_t device, unsigned int *value);\n\n/**\n * Retrieves the current clock speeds for the device.\n *\n * For Fermi &tm; or newer fully supported devices.\n *\n * See \\ref nvmlClockType_t for details on available clock information.\n *\n * @param device                               The identifier of the target device\n * @param type                                 Identify which clock domain to query\n * @param clock                                Reference in which to return the clock speed in MHz\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a clock has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a clock is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device cannot report the specified clock\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetClockInfo(nvmlDevice_t device, nvmlClockType_t type, unsigned int *clock);\n\n/**\n * Retrieves the maximum clock speeds for the device.\n *\n * For Fermi &tm; or newer fully supported devices.\n *\n * See \\ref nvmlClockType_t for details on available clock information.\n *\n * \\note On GPUs from Fermi family current P0 clocks (reported by \\ref nvmlDeviceGetClockInfo) can differ from max clocks\n *       by few MHz.\n *\n * @param device                               The identifier of the target device\n * @param type                                 Identify which clock domain to query\n * @param clock                                Reference in which to return the clock speed in MHz\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a clock has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a clock is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device cannot report the specified clock\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetMaxClockInfo(nvmlDevice_t device, nvmlClockType_t type, unsigned int *clock);\n\n/**\n * Retrieve the GPCCLK VF offset value\n * @param[in]   device                         The identifier of the target device\n * @param[out]  offset                         The retrieved GPCCLK VF offset value\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a offset has been successfully queried\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a offset is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support this feature\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetGpcClkVfOffset(nvmlDevice_t device, int *offset);\n\n/**\n * @deprecated Applications clocks are deprecated and will be removed in CUDA 14.0.\n */\nDEPRECATED(13.0) nvmlReturn_t DECLDIR nvmlDeviceGetApplicationsClock(nvmlDevice_t device, nvmlClockType_t clockType, unsigned int *clockMHz);\n\n/**\n * @deprecated Applications clocks are deprecated and will be removed in CUDA 14.0.\n */\nDEPRECATED(13.0) nvmlReturn_t DECLDIR nvmlDeviceGetDefaultApplicationsClock(nvmlDevice_t device, nvmlClockType_t clockType, unsigned int *clockMHz);\n\n/**\n * Retrieves the clock speed for the clock specified by the clock type and clock ID.\n *\n * For Kepler &tm; or newer fully supported devices.\n *\n * @param device                               The identifier of the target device\n * @param clockType                            Identify which clock domain to query\n * @param clockId                              Identify which clock in the domain to query\n * @param clockMHz                             Reference in which to return the clock in MHz\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a clockMHz has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a clockMHz is NULL or \\a clockType is invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support this feature\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetClock(nvmlDevice_t device, nvmlClockType_t clockType, nvmlClockId_t clockId, unsigned int *clockMHz);\n\n/**\n * Retrieves the customer defined maximum boost clock speed specified by the given clock type.\n *\n * For Pascal &tm; or newer fully supported devices.\n *\n * @param device                               The identifier of the target device\n * @param clockType                            Identify which clock domain to query\n * @param clockMHz                             Reference in which to return the clock in MHz\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a clockMHz has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a clockMHz is NULL or \\a clockType is invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device or the \\a clockType on this device does not support this feature\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetMaxCustomerBoostClock(nvmlDevice_t device, nvmlClockType_t clockType, unsigned int *clockMHz);\n\n/**\n * Retrieves the list of possible memory clocks that can be used as an argument for \\ref nvmlDeviceSetMemoryLockedClocks.\n *\n * For Kepler &tm; or newer fully supported devices.\n *\n * @param device                               The identifier of the target device\n * @param count                                Reference in which to provide the \\a clocksMHz array size, and\n *                                             to return the number of elements\n * @param clocksMHz                            Reference in which to return the clock in MHz\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a count and \\a clocksMHz have been populated\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a count is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support this feature\n *         - \\ref NVML_ERROR_INSUFFICIENT_SIZE if \\a count is too small (\\a count is set to the number of\n *                                                required elements)\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n *\n * @see nvmlDeviceSetMemoryLockedClocks\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetSupportedMemoryClocks(nvmlDevice_t device, unsigned int *count, unsigned int *clocksMHz);\n\n/**\n * Retrieves the list of possible graphics clocks that can be used as an argument for \\ref nvmlDeviceSetGpuLockedClocks.\n *\n * For Kepler &tm; or newer fully supported devices.\n *\n * @param device                               The identifier of the target device\n * @param memoryClockMHz                       Memory clock for which to return possible graphics clocks\n * @param count                                Reference in which to provide the \\a clocksMHz array size, and\n *                                             to return the number of elements\n * @param clocksMHz                            Reference in which to return the clocks in MHz\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a count and \\a clocksMHz have been populated\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_NOT_FOUND         if the specified \\a memoryClockMHz is not a supported frequency\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a clock is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support this feature\n *         - \\ref NVML_ERROR_INSUFFICIENT_SIZE if \\a count is too small\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n *\n * @see nvmlDeviceSetGpuLockedClocks\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetSupportedGraphicsClocks(nvmlDevice_t device, unsigned int memoryClockMHz, unsigned int *count, unsigned int *clocksMHz);\n\n/**\n * Retrieve the current state of Auto Boosted clocks on a device and store it in \\a isEnabled\n *\n * For Kepler &tm; or newer fully supported devices.\n *\n * Auto Boosted clocks are enabled by default on some hardware, allowing the GPU to run at higher clock rates\n * to maximize performance as thermal limits allow.\n *\n * On Pascal and newer hardware, Auto Aoosted clocks are controlled through application clocks.\n * Use \\ref nvmlDeviceSetApplicationsClocks and \\ref nvmlDeviceResetApplicationsClocks to control Auto Boost\n * behavior.\n *\n * @param device                               The identifier of the target device\n * @param isEnabled                            Where to store the current state of Auto Boosted clocks of the target device\n * @param defaultIsEnabled                     Where to store the default Auto Boosted clocks behavior of the target device that the device will\n *                                                 revert to when no applications are using the GPU\n *\n * @return\n *         - \\ref NVML_SUCCESS                 If \\a isEnabled has been been set with the Auto Boosted clocks state of \\a device\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a isEnabled is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support Auto Boosted clocks\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n *\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetAutoBoostedClocksEnabled(nvmlDevice_t device, nvmlEnableState_t *isEnabled, nvmlEnableState_t *defaultIsEnabled);\n\n/**\n * Retrieves the intended operating speed of the device's fan.\n *\n * Note: The reported speed is the intended fan speed.  If the fan is physically blocked and unable to spin, the\n * output will not match the actual fan speed.\n *\n * For all discrete products with dedicated fans.\n *\n * The fan speed is expressed as a percentage of the product's maximum noise tolerance fan speed.\n * This value may exceed 100% in certain cases.\n *\n * @param device                               The identifier of the target device\n * @param speed                                Reference in which to return the fan speed percentage\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a speed has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a speed is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not have a fan\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetFanSpeed(nvmlDevice_t device, unsigned int *speed);\n\n/**\n * Retrieves the intended operating speed of the device's specified fan.\n *\n * Note: The reported speed is the intended fan speed. If the fan is physically blocked and unable to spin, the\n * output will not match the actual fan speed.\n *\n * For all discrete products with dedicated fans.\n *\n * The fan speed is expressed as a percentage of the product's maximum noise tolerance fan speed.\n * This value may exceed 100% in certain cases.\n *\n * @param device                                The identifier of the target device\n * @param fan                                   The index of the target fan, zero indexed.\n * @param speed                                 Reference in which to return the fan speed percentage\n *\n * @return\n *        - \\ref NVML_SUCCESS                   if \\a speed has been set\n *        - \\ref NVML_ERROR_UNINITIALIZED       if the library has not been successfully initialized\n *        - \\ref NVML_ERROR_INVALID_ARGUMENT    if \\a device is invalid, \\a fan is not an acceptable index, or \\a speed is NULL\n *        - \\ref NVML_ERROR_NOT_SUPPORTED       if the device does not have a fan or is newer than Maxwell\n *        - \\ref NVML_ERROR_GPU_IS_LOST         if the target GPU has fallen off the bus or is otherwise inaccessible\n *        - \\ref NVML_ERROR_UNKNOWN             on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetFanSpeed_v2(nvmlDevice_t device, unsigned int fan, unsigned int * speed);\n\n/**\n * Retrieves the intended operating speed in rotations per minute (RPM) of the device's specified fan.\n *\n * For Maxwell &tm; or newer fully supported devices.\n *\n * For all discrete products with dedicated fans.\n *\n * Note: The reported speed is the intended fan speed. If the fan is physically blocked and unable to spin, the\n * output will not match the actual fan speed.\n *\n * @param device                               The identifier of the target device\n * @param fanSpeed                             Structure specifying the index of the target fan (input) and\n *                                             retrieved fan speed value (output)\n *\n * @return\n *         - \\ref NVML_SUCCESS                         If everything worked\n *         - \\ref NVML_ERROR_UNINITIALIZED             If the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT          If \\a device is invalid, \\a fan is not an acceptable\n *                                                          index, or \\a speed is NULL\n *         - \\ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH If the provided version is invalid/unsupported\n *         - \\ref NVML_ERROR_NOT_SUPPORTED             If the \\a device does not support this feature\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetFanSpeedRPM(nvmlDevice_t device, nvmlFanSpeedInfo_t *fanSpeed);\n\n/**\n * Retrieves the intended target speed of the device's specified fan.\n *\n * Normally, the driver dynamically adjusts the fan based on\n * the needs of the GPU.  But when user set fan speed using nvmlDeviceSetFanSpeed_v2,\n * the driver will attempt to make the fan achieve the setting in\n * nvmlDeviceSetFanSpeed_v2.  The actual current speed of the fan\n * is reported in nvmlDeviceGetFanSpeed_v2.\n *\n * For all discrete products with dedicated fans.\n *\n * The fan speed is expressed as a percentage of the product's maximum noise tolerance fan speed.\n * This value may exceed 100% in certain cases.\n *\n * @param device                                The identifier of the target device\n * @param fan                                   The index of the target fan, zero indexed.\n * @param targetSpeed                           Reference in which to return the fan speed percentage\n *\n * @return\n *        - \\ref NVML_SUCCESS                   if \\a speed has been set\n *        - \\ref NVML_ERROR_UNINITIALIZED       if the library has not been successfully initialized\n *        - \\ref NVML_ERROR_INVALID_ARGUMENT    if \\a device is invalid, \\a fan is not an acceptable index, or \\a speed is NULL\n *        - \\ref NVML_ERROR_NOT_SUPPORTED       if the device does not have a fan or is newer than Maxwell\n *        - \\ref NVML_ERROR_GPU_IS_LOST         if the target GPU has fallen off the bus or is otherwise inaccessible\n *        - \\ref NVML_ERROR_UNKNOWN             on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetTargetFanSpeed(nvmlDevice_t device, unsigned int fan, unsigned int *targetSpeed);\n\n/**\n * Retrieves the min and max fan speed that user can set for the GPU fan.\n *\n * For all cuda-capable discrete products with fans\n *\n * @param device                        The identifier of the target device\n * @param minSpeed                      The minimum speed allowed to set\n * @param maxSpeed                      The maximum speed allowed to set\n *\n * return\n *         NVML_SUCCESS                 if speed has been adjusted\n *         NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         NVML_ERROR_INVALID_ARGUMENT  if device is invalid\n *         NVML_ERROR_NOT_SUPPORTED     if the device does not support this\n *                                      (doesn't have fans)\n *         NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetMinMaxFanSpeed(nvmlDevice_t device, unsigned int * minSpeed,\n                                                 unsigned int * maxSpeed);\n\n/**\n * Gets current fan control policy.\n *\n * For Maxwell &tm; or newer fully supported devices.\n *\n * For all cuda-capable discrete products with fans\n *\n * device                               The identifier of the target \\a device\n * policy                               Reference in which to return the fan control \\a policy\n *\n * return\n *         NVML_SUCCESS                 if \\a policy has been populated\n *         NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a policy is null or the \\a fan given doesn't reference\n *                                            a fan that exists.\n *         NVML_ERROR_NOT_SUPPORTED     if the \\a device is older than Maxwell\n *         NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetFanControlPolicy_v2(nvmlDevice_t device, unsigned int fan,\n                                                      nvmlFanControlPolicy_t *policy);\n\n/**\n * Retrieves the number of fans on the device.\n *\n * For all discrete products with dedicated fans.\n *\n * @param device                               The identifier of the target device\n * @param numFans                              The number of fans\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a fan number query was successful\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a numFans is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not have a fan\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetNumFans(nvmlDevice_t device, unsigned int *numFans);\n\n/**\n * @deprecated Use \\ref nvmlDeviceGetTemperatureV instead\n */\nDEPRECATED(13.0) nvmlReturn_t DECLDIR nvmlDeviceGetTemperature(nvmlDevice_t device, nvmlTemperatureSensors_t sensorType, unsigned int *temp);\n\n/**\n * Retrieves the cooler's information.\n * Returns a cooler's control signal characteristics.  The possible types are restricted, Variable and Toggle.\n * See \\ref nvmlCoolerControl_t for details on available signal types.\n * Returns objects that cooler cools. Targets may be GPU, Memory, Power Supply or All of these.\n * See \\ref nvmlCoolerTarget_t for details on available targets.\n *\n * For Maxwell &tm; or newer fully supported devices.\n *\n * For all discrete products with dedicated fans.\n *\n * @param[in]  device                               The identifier of the target device\n * @param[out] coolerInfo                           Structure specifying the cooler's control signal characteristics (out)\n *                                                  and the target that cooler cools (out)\n *\n * @return\n *         - \\ref NVML_SUCCESS                         If everything worked\n *         - \\ref NVML_ERROR_UNINITIALIZED             If the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT          If \\a device is invalid, \\a signalType or \\a target is NULL\n *         - \\ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH If the provided version is invalid/unsupported\n *         - \\ref NVML_ERROR_NOT_SUPPORTED             If the \\a device does not support this feature\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetCoolerInfo(nvmlDevice_t device, nvmlCoolerInfo_t *coolerInfo);\n\n/**\n * Structure used to encapsulate temperature info\n */\ntypedef struct\n{\n    unsigned int version;\n    nvmlTemperatureSensors_t sensorType;\n    int temperature;\n} nvmlTemperature_v1_t;\n\ntypedef nvmlTemperature_v1_t nvmlTemperature_t;\n\n#define nvmlTemperature_v1 NVML_STRUCT_VERSION(Temperature, 1)\n\n/**\n * Retrieves the current temperature readings (in degrees C) for the given device.\n *\n * For all products.\n *\n * @param[in]       device                      Target device identifier.\n * @param[in,out]   temperature                 Structure specifying the sensor type (input) and retrieved\n *                                              temperature value (output).\n *\n * @return\n *         - \\ref NVML_SUCCESS                  if \\a temp has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED      if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT   if \\a device is invalid, \\a sensorType is invalid or \\a temp is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED      if the device does not have the specified sensor\n *         - \\ref NVML_ERROR_GPU_IS_LOST        if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN            on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetTemperatureV(nvmlDevice_t device, nvmlTemperature_t *temperature);\n\n\n/**\n * Retrieves the temperature threshold for the GPU with the specified threshold type in degrees C.\n *\n * For Kepler &tm; or newer fully supported devices.\n *\n * See \\ref nvmlTemperatureThresholds_t for details on available temperature thresholds.\n *\n * Note: This API is no longer the preferred interface for retrieving the following temperature thresholds\n * on Ada and later architectures: NVML_TEMPERATURE_THRESHOLD_SHUTDOWN, NVML_TEMPERATURE_THRESHOLD_SLOWDOWN,\n * NVML_TEMPERATURE_THRESHOLD_MEM_MAX and NVML_TEMPERATURE_THRESHOLD_GPU_MAX.\n *\n * Support for reading these temperature thresholds for Ada and later architectures would be removed from this\n * API in future releases. Please use \\ref nvmlDeviceGetFieldValues with NVML_FI_DEV_TEMPERATURE_* fields to retrieve\n * temperature thresholds on these architectures.\n *\n * @param device                               The identifier of the target device\n * @param thresholdType                        The type of threshold value queried\n * @param temp                                 Reference in which to return the temperature reading\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a temp has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid, \\a thresholdType is invalid or \\a temp is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not have a temperature sensor or is unsupported\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetTemperatureThreshold(nvmlDevice_t device, nvmlTemperatureThresholds_t thresholdType, unsigned int *temp);\n\n/**\n * Retrieves the thermal margin temperature (distance to nearest slowdown threshold).\n *\n * @param[in]     device                                The identifier of the target device\n * @param[in,out] marginTempInfo                        Versioned structure in which to return the temperature reading\n *\n * @returns\n *         - \\ref NVML_SUCCESS                           if the margin temperature was retrieved successfully\n *         - \\ref NVML_ERROR_NOT_SUPPORTED               if request is not supported on the current platform\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT            if \\a device is invalid or \\a temperature is NULL\n *         - \\ref NVML_ERROR_GPU_IS_LOST                 if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH   if the right versioned structure is not used\n *         - \\ref NVML_ERROR_UNKNOWN                     on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetMarginTemperature(nvmlDevice_t device, nvmlMarginTemperature_t *marginTempInfo);\n\n/**\n * Used to execute a list of thermal system instructions.\n *\n * @param device                               The identifier of the target device\n * @param sensorIndex                          The index of the thermal sensor\n * @param pThermalSettings                     Reference in which to return the thermal sensor information\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a pThermalSettings has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a pThermalSettings is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support this feature\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetThermalSettings(nvmlDevice_t device, unsigned int sensorIndex, nvmlGpuThermalSettings_t *pThermalSettings);\n\n/**\n * Retrieves the current performance state for the device.\n *\n * For Fermi &tm; or newer fully supported devices.\n *\n * See \\ref nvmlPstates_t for details on allowed performance states.\n *\n * @param device                               The identifier of the target device\n * @param pState                               Reference in which to return the performance state reading\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a pState has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a pState is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support this feature\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetPerformanceState(nvmlDevice_t device, nvmlPstates_t *pState);\n\n/**\n * Retrieves current clocks event reasons.\n *\n * For all fully supported products.\n *\n * \\note More than one bit can be enabled at the same time. Multiple reasons can be affecting clocks at once.\n *\n * @param device                                The identifier of the target device\n * @param clocksEventReasons                    Reference in which to return bitmask of active clocks event\n *                                                  reasons\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a clocksEventReasons has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a clocksEventReasons is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support this feature\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n *\n * @see nvmlClocksEventReasons\n * @see nvmlDeviceGetSupportedClocksEventReasons\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetCurrentClocksEventReasons(nvmlDevice_t device, unsigned long long *clocksEventReasons);\n\n/**\n * @deprecated Use \\ref nvmlDeviceGetCurrentClocksEventReasons instead\n */\nDEPRECATED(13.0) nvmlReturn_t DECLDIR nvmlDeviceGetCurrentClocksThrottleReasons(nvmlDevice_t device, unsigned long long *clocksThrottleReasons);\n\n/**\n * Retrieves bitmask of supported clocks event reasons that can be returned by\n * \\ref nvmlDeviceGetCurrentClocksEventReasons\n *\n * For all fully supported products.\n *\n * This method is not supported in virtual machines running virtual GPU (vGPU).\n *\n * @param device                               The identifier of the target device\n * @param supportedClocksEventReasons       Reference in which to return bitmask of supported\n *                                              clocks event reasons\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a supportedClocksEventReasons has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a supportedClocksEventReasons is NULL\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n *\n * @see nvmlClocksEventReasons\n * @see nvmlDeviceGetCurrentClocksEventReasons\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetSupportedClocksEventReasons(nvmlDevice_t device, unsigned long long *supportedClocksEventReasons);\n\n/**\n * @deprecated Use \\ref nvmlDeviceGetSupportedClocksEventReasons instead\n */\nDEPRECATED(13.0) nvmlReturn_t DECLDIR nvmlDeviceGetSupportedClocksThrottleReasons(nvmlDevice_t device, unsigned long long *supportedClocksThrottleReasons);\n\n/**\n * @deprecated Use \\ref nvmlDeviceGetPerformanceState. This function exposes an incorrect generalization.\n *\n * Retrieve the current performance state for the device.\n *\n * For Fermi &tm; or newer fully supported devices.\n *\n * See \\ref nvmlPstates_t for details on allowed performance states.\n *\n * @param device                               The identifier of the target device\n * @param pState                               Reference in which to return the performance state reading\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a pState has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a pState is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support this feature\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nDEPRECATED(13.0) nvmlReturn_t DECLDIR nvmlDeviceGetPowerState(nvmlDevice_t device, nvmlPstates_t *pState);\n\n/**\n * Retrieve performance monitor samples from the associated subdevice.\n *\n * @param device\n * @param pDynamicPstatesInfo\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a pDynamicPstatesInfo has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a pDynamicPstatesInfo is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support this feature\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetDynamicPstatesInfo(nvmlDevice_t device, nvmlGpuDynamicPstatesInfo_t *pDynamicPstatesInfo);\n\n/**\n * Retrieve the MemClk (Memory Clock) VF offset value.\n * @param[in]   device                         The identifier of the target device\n * @param[out]  offset                         The retrieved MemClk VF offset value\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a offset has been successfully queried\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a offset is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support this feature\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetMemClkVfOffset(nvmlDevice_t device, int *offset);\n\n/**\n * Retrieve min and max clocks of some clock domain for a given PState\n *\n * @param device                               The identifier of the target device\n * @param type                                 Clock domain\n * @param pstate                               PState to query\n * @param minClockMHz                          Reference in which to return min clock frequency\n * @param maxClockMHz                          Reference in which to return max clock frequency\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if everything worked\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device, \\a type or \\a pstate are invalid or both\n *                                                  \\a minClockMHz and \\a maxClockMHz are NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support this feature\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetMinMaxClockOfPState(nvmlDevice_t device, nvmlClockType_t type, nvmlPstates_t pstate,\n                                                      unsigned int * minClockMHz, unsigned int * maxClockMHz);\n\n/**\n * Get all supported Performance States (P-States) for the device.\n *\n * The returned array would contain a contiguous list of valid P-States supported by\n * the device. If the number of supported P-States is fewer than the size of the array\n * supplied missing elements would contain \\a NVML_PSTATE_UNKNOWN.\n *\n * The number of elements in the returned list will never exceed \\a NVML_MAX_GPU_PERF_PSTATES.\n *\n * @param device                               The identifier of the target device\n * @param pstates                              Container to return the list of performance states\n *                                             supported by device\n * @param size                                 Size of the supplied \\a pstates array in bytes\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a pstates array has been retrieved\n *         - \\ref NVML_ERROR_INSUFFICIENT_SIZE if the the container supplied was not large enough to\n *                                             hold the resulting list\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device or \\a pstates is invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support performance state readings\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetSupportedPerformanceStates(nvmlDevice_t device,\n                                                             nvmlPstates_t *pstates, unsigned int size);\n\n/**\n * Retrieve the GPCCLK min max VF offset value.\n * @param[in]   device                         The identifier of the target device\n * @param[out]  minOffset                      The retrieved GPCCLK VF min offset value\n * @param[out]  maxOffset                      The retrieved GPCCLK VF max offset value\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a offset has been successfully queried\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a offset is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support this feature\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetGpcClkMinMaxVfOffset(nvmlDevice_t device,\n                                                       int *minOffset, int *maxOffset);\n\n/**\n * Retrieve the MemClk (Memory Clock) min max VF offset value.\n * @param[in]   device                         The identifier of the target device\n * @param[out]  minOffset                      The retrieved MemClk VF min offset value\n * @param[out]  maxOffset                      The retrieved MemClk VF max offset value\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a offset has been successfully queried\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a offset is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support this feature\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetMemClkMinMaxVfOffset(nvmlDevice_t device,\n                                                       int *minOffset, int *maxOffset);\n\n/**\n * Retrieve min, max and current clock offset of some clock domain for a given PState\n *\n * For Maxwell &tm; or newer fully supported devices.\n *\n * Note: \\ref nvmlDeviceGetGpcClkVfOffset, \\ref nvmlDeviceGetMemClkVfOffset, \\ref nvmlDeviceGetGpcClkMinMaxVfOffset and\n *       \\ref nvmlDeviceGetMemClkMinMaxVfOffset will be deprecated in a future release.\n         Use \\ref nvmlDeviceGetClockOffsets instead.\n *\n * @param device                               The identifier of the target device\n * @param info                                 Structure specifying the clock type (input) and the pstate (input)\n *                                             retrieved clock offset value (output), min clock offset (output)\n *                                             and max clock offset (output)\n *\n * @return\n *         - \\ref NVML_SUCCESS                         If everything worked\n *         - \\ref NVML_ERROR_UNINITIALIZED             If the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT          If \\a device, \\a type or \\a pstate are invalid or both\n *                                                             \\a minClockOffsetMHz and \\a maxClockOffsetMHz are NULL\n *         - \\ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH If the provided version is invalid/unsupported\n *         - \\ref NVML_ERROR_NOT_SUPPORTED             If the device does not support this feature\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetClockOffsets(nvmlDevice_t device, nvmlClockOffset_t *info);\n\n/**\n * Control current clock offset of some clock domain for a given PState\n *\n * For Maxwell &tm; or newer fully supported devices.\n *\n * Requires privileged user.\n *\n * @param device                               The identifier of the target device\n * @param info                                 Structure specifying the clock type (input), the pstate (input)\n *                                             and clock offset value (input)\n *\n * @return\n *         - \\ref NVML_SUCCESS                         If everything worked\n *         - \\ref NVML_ERROR_UNINITIALIZED             If the library has not been successfully initialized\n *         - \\ref NVML_ERROR_NO_PERMISSION             If the user doesn't have permission to perform this operation\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT          If \\a device, \\a type or \\a pstate are invalid or both\n *                                                             \\a clockOffsetMHz is out of allowed range.\n *         - \\ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH If the provided version is invalid/unsupported\n *         - \\ref NVML_ERROR_NOT_SUPPORTED             If the device does not support this feature\n */\nnvmlReturn_t DECLDIR nvmlDeviceSetClockOffsets(nvmlDevice_t device, nvmlClockOffset_t *info);\n\n/**\n * Retrieves a performance mode string with all the\n * performance modes defined for this device along with their associated\n * GPU Clock and Memory Clock values.\n * Not all tokens will be reported on all GPUs, and additional tokens\n * may be added in the future.\n * For backwards compatibility we still provide nvclock and memclock;\n * those are the same as nvclockmin and memclockmin.\n *\n * Note: These clock values take into account the offset\n * set by clients through /ref nvmlDeviceSetClockOffsets.\n *\n * Maximum available Pstate (P15) shows the minimum performance level (0) and vice versa.\n *\n * Each performance modes are returned as a comma-separated list of\n * \"token=value\" pairs.  Each set of performance mode tokens are separated\n * by a \";\".  Valid tokens:\n *\n *    Token                    Value\n *   \"perf\"                    unsigned int   - the Performance level\n *   \"nvclock\"                 unsigned int   - the GPU clocks (in MHz) for the perf level\n *   \"nvclockmin\"              unsigned int   - the GPU clocks min (in MHz) for the perf level\n *   \"nvclockmax\"              unsigned int   - the GPU clocks max (in MHz) for the perf level\n *   \"nvclockeditable\"         unsigned int   - if the GPU clock domain is editable for the perf level\n *   \"memclock\"                unsigned int   - the memory clocks (in MHz) for the perf level\n *   \"memclockmin\"             unsigned int   - the memory clocks min (in MHz) for the perf level\n *   \"memclockmax\"             unsigned int   - the memory clocks max (in MHz) for the perf level\n *   \"memclockeditable\"        unsigned int   - if the memory clock domain is editable for the perf level\n *   \"memtransferrate\"         unsigned int   - the memory transfer rate (in MHz) for the perf level\n *   \"memtransferratemin\"      unsigned int   - the memory transfer rate min (in MHz) for the perf level\n *   \"memtransferratemax\"      unsigned int   - the memory transfer rate max (in MHz) for the perf level\n *   \"memtransferrateeditable\" unsigned int   - if the memory transfer rate is editable for the perf level\n *\n * Example:\n *\n * perf=0, nvclock=324, nvclockmin=324, nvclockmax=324, nvclockeditable=0,\n * memclock=324, memclockmin=324, memclockmax=324, memclockeditable=0,\n * memtransferrate=648, memtransferratemin=648, memtransferratemax=648,\n * memtransferrateeditable=0 ;\n * perf=1, nvclock=324, nvclockmin=324, nvclockmax=640, nvclockeditable=0,\n * memclock=810, memclockmin=810, memclockmax=810, memclockeditable=0,\n * memtransferrate=1620, memtransferrate=1620, memtransferrate=1620,\n * memtransferrateeditable=0 ;\n *\n *\n * @param device                               The identifier of the target device\n * @param perfModes                            Reference in which to return the performance level string\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a perfModes has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid, or \\a name is NULL\n *         - \\ref NVML_ERROR_INSUFFICIENT_SIZE if \\a length is too small\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetPerformanceModes(nvmlDevice_t device, nvmlDevicePerfModes_t *perfModes);\n\n/**\n * Retrieves a string with the associated current GPU Clock and Memory Clock values.\n *\n * Not all tokens will be reported on all GPUs, and additional tokens\n * may be added in the future.\n *\n * Note: These clock values take into account the offset\n * set by clients through /ref nvmlDeviceSetClockOffsets.\n *\n * Clock values are returned as a comma-separated list of\n * \"token=value\" pairs.\n * Valid tokens:\n *\n *    Token                    Value\n *   \"perf\"                    unsigned int   - the Performance level\n *   \"nvclock\"                 unsigned int   - the GPU clocks (in MHz) for the perf level\n *   \"nvclockmin\"              unsigned int   - the GPU clocks min (in MHz) for the perf level\n *   \"nvclockmax\"              unsigned int   - the GPU clocks max (in MHz) for the perf level\n *   \"nvclockeditable\"         unsigned int   - if the GPU clock domain is editable for the perf level\n *   \"memclock\"                unsigned int   - the memory clocks (in MHz) for the perf level\n *   \"memclockmin\"             unsigned int   - the memory clocks min (in MHz) for the perf level\n *   \"memclockmax\"             unsigned int   - the memory clocks max (in MHz) for the perf level\n *   \"memclockeditable\"        unsigned int   - if the memory clock domain is editable for the perf level\n *   \"memtransferrate\"         unsigned int   - the memory transfer rate (in MHz) for the perf level\n *   \"memtransferratemin\"      unsigned int   - the memory transfer rate min (in MHz) for the perf level\n *   \"memtransferratemax\"      unsigned int   - the memory transfer rate max (in MHz) for the perf level\n *   \"memtransferrateeditable\" unsigned int   - if the memory transfer rate is editable for the perf level\n *\n * Example:\n *\n * nvclock=324, nvclockmin=324, nvclockmax=324, nvclockeditable=0,\n * memclock=324, memclockmin=324, memclockmax=324, memclockeditable=0,\n * memtransferrate=648, memtransferratemin=648, memtransferratemax=648,\n * memtransferrateeditable=0 ;\n *\n *\n * @param device                               The identifier of the target device\n * @param currentClockFreqs                    Reference in which to return the performance level string\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a currentClockFreqs has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid, or \\a name is NULL\n *         - \\ref NVML_ERROR_INSUFFICIENT_SIZE if \\a length is too small\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetCurrentClockFreqs(nvmlDevice_t device, nvmlDeviceCurrentClockFreqs_t *currentClockFreqs);\n\n/**\n * @deprecated This API has been deprecated.\n *\n * Retrieves the power management mode associated with this device.\n *\n * For products from the Fermi family.\n *     - Requires \\a NVML_INFOROM_POWER version 3.0 or higher.\n *\n * For from the Kepler or newer families.\n *     - Does not require \\a NVML_INFOROM_POWER object.\n *\n * This flag indicates whether any power management algorithm is currently active on the device. An\n * enabled state does not necessarily mean the device is being actively throttled -- only that\n * that the driver will do so if the appropriate conditions are met.\n *\n * See \\ref nvmlEnableState_t for details on allowed modes.\n *\n * @param device                               The identifier of the target device\n * @param mode                                 Reference in which to return the current power management mode\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a mode has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a mode is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support this feature\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nDEPRECATED(13.0) nvmlReturn_t DECLDIR nvmlDeviceGetPowerManagementMode(nvmlDevice_t device, nvmlEnableState_t *mode);\n\n/**\n * Retrieves the power management limit associated with this device.\n *\n * For Fermi &tm; or newer fully supported devices.\n *\n * The power limit defines the upper boundary for the card's power draw. If\n * the card's total power draw reaches this limit the power management algorithm kicks in.\n *\n * This reading is only available if power management mode is supported.\n * See \\ref nvmlDeviceGetPowerManagementMode.\n *\n * @param device                               The identifier of the target device\n * @param limit                                Reference in which to return the power management limit in milliwatts\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a limit has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a limit is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support this feature\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetPowerManagementLimit(nvmlDevice_t device, unsigned int *limit);\n\n/**\n * Retrieves information about possible values of power management limits on this device.\n *\n * For Kepler &tm; or newer fully supported devices.\n *\n * @param device                               The identifier of the target device\n * @param minLimit                             Reference in which to return the minimum power management limit in milliwatts\n * @param maxLimit                             Reference in which to return the maximum power management limit in milliwatts\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a minLimit and \\a maxLimit have been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a minLimit or \\a maxLimit is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support this feature\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n *\n * @see nvmlDeviceSetPowerManagementLimit\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetPowerManagementLimitConstraints(nvmlDevice_t device, unsigned int *minLimit, unsigned int *maxLimit);\n\n/**\n * Retrieves default power management limit on this device, in milliwatts.\n * Default power management limit is a power management limit that the device boots with.\n *\n * For Kepler &tm; or newer fully supported devices.\n *\n * @param device                               The identifier of the target device\n * @param defaultLimit                         Reference in which to return the default power management limit in milliwatts\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a defaultLimit has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a defaultLimit is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support this feature\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetPowerManagementDefaultLimit(nvmlDevice_t device, unsigned int *defaultLimit);\n\n/**\n * Retrieves power usage for this GPU in milliwatts and its associated circuitry (e.g. memory)\n *\n * For Fermi &tm; or newer fully supported devices.\n *\n * On Fermi and Kepler GPUs the reading is accurate to within +/- 5% of current power draw. On Ampere\n * (except GA100) or newer GPUs, the API returns power averaged over 1 sec interval. On GA100 and\n * older architectures, instantaneous power is returned.\n *\n * See \\ref NVML_FI_DEV_POWER_AVERAGE and \\ref NVML_FI_DEV_POWER_INSTANT to query specific power\n * values.\n *\n * It is only available if power management mode is supported. See \\ref nvmlDeviceGetPowerManagementMode.\n *\n * @param device                               The identifier of the target device\n * @param power                                Reference in which to return the power usage information\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a power has been populated\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a power is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support power readings\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetPowerUsage(nvmlDevice_t device, unsigned int *power);\n\n/**\n * Retrieves current power mizer mode on this device.\n *\n * PowerMizerMode provides a hint to the driver as to how to manage the performance of the GPU.\n *\n * For Maxwell &tm; or newer fully supported devices.\n *\n * @param device                               The identifier of the target device\n * @param powerMizerMode                       Reference in which to return the power mizer mode\n * @param supportedPowerMizerModes             Reference in which to return the bitmask of supported power mizer modes on this device.\n *                                             The supported modes can be combined using the bitwise OR operator '|'.\n *                                             For example, if a device supports all PowerMizer modes, the bitmask would be:\n *                                             supportedPowerMizerModes = ((1 << NVML_POWER_MIZER_MODE_ADAPTIVE) |\n *                                                                         (1 << NVML_POWER_MIZER_MODE_PREFER_MAXIMUM_PERFORMANCE) |\n *                                                                         (1 << NVML_POWER_MIZER_MODE_AUTO) |\n *                                                                         (1 << NVML_POWER_MIZER_MODE_PREFER_CONSISTENT_PERFORMANCE));\n *                                             This bitmask can be used to check which power mizer modes are available on the device by performing\n *                                             a bitwise AND operation with the specific mode you want to check.\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a powerMizerMode has been populated\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a powerMizerMode is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support powerMizerMode readings\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\n\nnvmlReturn_t DECLDIR nvmlDeviceGetPowerMizerMode_v1(nvmlDevice_t device, nvmlDevicePowerMizerModes_v1_t *powerMizerMode);\n\n/**\n * Sets the new power mizer mode.\n *\n * For Maxwell &tm; or newer fully supported devices.\n *\n * @param device                               The identifier of the target device\n * @param powerMizerMode                       Reference in which to set the power mizer mode.\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a powerMizerMode has been populated\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a powerMizerMode is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support powerMizerMode readings\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\n\nnvmlReturn_t DECLDIR nvmlDeviceSetPowerMizerMode_v1(nvmlDevice_t device, nvmlDevicePowerMizerModes_v1_t *powerMizerMode);\n\n\n/**\n * Retrieves total energy consumption for this GPU in millijoules (mJ) since the driver was last reloaded\n *\n * For Volta &tm; or newer fully supported devices.\n *\n * @param device                               The identifier of the target device\n * @param energy                               Reference in which to return the energy consumption information\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a energy has been populated\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a energy is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support energy readings\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetTotalEnergyConsumption(nvmlDevice_t device, unsigned long long *energy);\n\n/**\n * Get the effective power limit that the driver enforces after taking into account all limiters\n *\n * Note: This can be different from the \\ref nvmlDeviceGetPowerManagementLimit if other limits are set elsewhere\n * This includes the out of band power limit interface\n *\n * For Kepler &tm; or newer fully supported devices.\n *\n * @param device                           The device to communicate with\n * @param limit                            Reference in which to return the power management limit in milliwatts\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a limit has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a limit is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support this feature\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetEnforcedPowerLimit(nvmlDevice_t device, unsigned int *limit);\n\n/**\n * Retrieves the current GOM and pending GOM (the one that GPU will switch to after reboot).\n *\n * For GK110 M-class and X-class Tesla &tm; products from the Kepler family.\n * Modes \\ref NVML_GOM_LOW_DP and \\ref NVML_GOM_ALL_ON are supported on fully supported GeForce products.\n * Not supported on Quadro &reg; and Tesla &tm; C-class products.\n *\n * @param device                               The identifier of the target device\n * @param current                              Reference in which to return the current GOM\n * @param pending                              Reference in which to return the pending GOM\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a mode has been populated\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a current or \\a pending is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support this feature\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n *\n * @see nvmlGpuOperationMode_t\n * @see nvmlDeviceSetGpuOperationMode\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetGpuOperationMode(nvmlDevice_t device, nvmlGpuOperationMode_t *current, nvmlGpuOperationMode_t *pending);\n\n/**\n * Retrieves the amount of used, free, reserved and total memory available on the device, in bytes.\n * The reserved amount is supported on version 2 only.\n *\n * For all products.\n *\n * Enabling ECC reduces the amount of total available memory, due to the extra required parity bits.\n * Under WDDM most device memory is allocated and managed on startup by Windows.\n *\n * Under Linux and Windows TCC, the reported amount of used memory is equal to the sum of memory allocated\n * by all active channels on the device.\n *\n * See \\ref nvmlMemory_v2_t for details on available memory info.\n *\n * @note In MIG mode, if device handle is provided, the API returns aggregate\n *       information, only if the caller has appropriate privileges. Per-instance\n *       information can be queried by using specific MIG device handles.\n *\n * @note nvmlDeviceGetMemoryInfo_v2 adds additional memory information.\n *\n * @note On systems where GPUs are NUMA nodes, the accuracy of FB memory utilization\n *       provided by this API depends on the memory accounting of the operating system.\n *       This is because FB memory is managed by the operating system instead of the NVIDIA GPU driver.\n *       Typically, pages allocated from FB memory are not released even after\n *       the process terminates to enhance performance. In scenarios where\n *       the operating system is under memory pressure, it may resort to utilizing FB memory.\n *       Such actions can result in discrepancies in the accuracy of memory reporting.\n *\n * @param device                               The identifier of the target device\n * @param memory                               Reference in which to return the memory information\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a memory has been populated\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_NO_PERMISSION     if the user doesn't have permission to perform this operation\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a memory is NULL\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetMemoryInfo(nvmlDevice_t device, nvmlMemory_t *memory);\n\n/**\n * nvmlDeviceGetMemoryInfo_v2 accounts separately for reserved memory and includes it in the used memory amount.\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetMemoryInfo_v2(nvmlDevice_t device, nvmlMemory_v2_t *memory);\n\n/**\n * Retrieves the current compute mode for the device.\n *\n * For all products.\n *\n * See \\ref nvmlComputeMode_t for details on allowed compute modes.\n *\n * @param device                               The identifier of the target device\n * @param mode                                 Reference in which to return the current compute mode\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a mode has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a mode is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support this feature\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n *\n * @see nvmlDeviceSetComputeMode()\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetComputeMode(nvmlDevice_t device, nvmlComputeMode_t *mode);\n\n/**\n * Retrieves the CUDA compute capability of the device.\n *\n * For all products.\n *\n * Returns the major and minor compute capability version numbers of the\n * device.  The major and minor versions are equivalent to the\n * CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MINOR and\n * CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MAJOR attributes that would be\n * returned by CUDA's cuDeviceGetAttribute().\n *\n * @param device                               The identifier of the target device\n * @param major                                Reference in which to return the major CUDA compute capability\n * @param minor                                Reference in which to return the minor CUDA compute capability\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a major and \\a minor have been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a major or \\a minor are NULL\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetCudaComputeCapability(nvmlDevice_t device, int *major, int *minor);\n\n/**\n * Retrieves the current and pending DRAM Encryption modes for the device.\n *\n * %BLACKWELL_OR_NEWER%\n * Only applicable to devices that support DRAM Encryption\n * Requires \\a NVML_INFOROM_DEN version 1.0 or higher.\n *\n * Changing DRAM Encryption modes requires a reboot. The \"pending\" DRAM Encryption mode refers to the target mode following\n * the next reboot.\n *\n * See \\ref nvmlEnableState_t for details on allowed modes.\n *\n * @param device                               The identifier of the target device\n * @param current                              Reference in which to return the current DRAM Encryption mode\n * @param pending                              Reference in which to return the pending DRAM Encryption mode\n *\n * @return\n *         - \\ref NVML_SUCCESS                         if \\a current and \\a pending have been set\n *         - \\ref NVML_ERROR_UNINITIALIZED             if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT          if \\a device is invalid or either \\a current or \\a pending is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED             if the device does not support this feature\n *         - \\ref NVML_ERROR_GPU_IS_LOST               if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH if the argument version is not supported\n *         - \\ref NVML_ERROR_UNKNOWN                   on any unexpected error\n *\n * @see nvmlDeviceSetDramEncryptionMode()\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetDramEncryptionMode(nvmlDevice_t device, nvmlDramEncryptionInfo_t *current, nvmlDramEncryptionInfo_t *pending);\n\n/**\n * Set the DRAM Encryption mode for the device.\n *\n * For Kepler &tm; or newer fully supported devices.\n * Only applicable to devices that support DRAM Encryption.\n * Requires \\a NVML_INFOROM_DEN version 1.0 or higher.\n * Requires root/admin permissions.\n *\n * The DRAM Encryption mode determines whether the GPU enables its DRAM Encryption support.\n *\n * This operation takes effect after the next reboot.\n *\n * See \\ref nvmlEnableState_t for details on available modes.\n *\n * @param device                               The identifier of the target device\n * @param dramEncryption                       The target DRAM Encryption mode\n *\n * @return\n *         - \\ref NVML_SUCCESS                         if the DRAM Encryption mode was set\n *         - \\ref NVML_ERROR_UNINITIALIZED             if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT          if \\a device is invalid or \\a DRAM Encryption is invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED             if the device does not support this feature\n *         - \\ref NVML_ERROR_NO_PERMISSION             if the user doesn't have permission to perform this operation\n *         - \\ref NVML_ERROR_GPU_IS_LOST               if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH if the argument version is not supported\n *         - \\ref NVML_ERROR_UNKNOWN                   on any unexpected error\n *\n * @see nvmlDeviceGetDramEncryptionMode()\n */\nnvmlReturn_t DECLDIR nvmlDeviceSetDramEncryptionMode(nvmlDevice_t device, const nvmlDramEncryptionInfo_t *dramEncryption);\n\n/**\n * Retrieves the current and pending ECC modes for the device.\n *\n * For Fermi &tm; or newer fully supported devices.\n * Only applicable to devices with ECC.\n * Requires \\a NVML_INFOROM_ECC version 1.0 or higher.\n *\n * Changing ECC modes requires a reboot. The \"pending\" ECC mode refers to the target mode following\n * the next reboot.\n *\n * See \\ref nvmlEnableState_t for details on allowed modes.\n *\n * @param device                               The identifier of the target device\n * @param current                              Reference in which to return the current ECC mode\n * @param pending                              Reference in which to return the pending ECC mode\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a current and \\a pending have been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or either \\a current or \\a pending is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support this feature\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n *\n * @see nvmlDeviceSetEccMode()\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetEccMode(nvmlDevice_t device, nvmlEnableState_t *current, nvmlEnableState_t *pending);\n\n/**\n * Retrieves the default ECC modes for the device.\n *\n * For Fermi &tm; or newer fully supported devices.\n * Only applicable to devices with ECC.\n * Requires \\a NVML_INFOROM_ECC version 1.0 or higher.\n *\n * See \\ref nvmlEnableState_t for details on allowed modes.\n *\n * @param device                               The identifier of the target device\n * @param defaultMode                          Reference in which to return the default ECC mode\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a current and \\a pending have been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a default is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support this feature\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n *\n * @see nvmlDeviceSetEccMode()\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetDefaultEccMode(nvmlDevice_t device, nvmlEnableState_t *defaultMode);\n\n/**\n * Retrieves the device boardId from 0-N.\n * Devices with the same boardId indicate GPUs connected to the same PLX.  Use in conjunction with\n *  \\ref nvmlDeviceGetMultiGpuBoard() to decide if they are on the same board as well.\n *  The boardId returned is a unique ID for the current configuration.  Uniqueness and ordering across\n *  reboots and system configurations is not guaranteed (i.e. if a Tesla K40c returns 0x100 and\n *  the two GPUs on a Tesla K10 in the same system returns 0x200 it is not guaranteed they will\n *  always return those values but they will always be different from each other).\n *\n *\n * For Fermi &tm; or newer fully supported devices.\n *\n * @param device                               The identifier of the target device\n * @param boardId                              Reference in which to return the device's board ID\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a boardId has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a boardId is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support this feature\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetBoardId(nvmlDevice_t device, unsigned int *boardId);\n\n/**\n * Retrieves whether the device is on a Multi-GPU Board\n * Devices that are on multi-GPU boards will set \\a multiGpuBool to a non-zero value.\n *\n * For Fermi &tm; or newer fully supported devices.\n *\n * @param device                               The identifier of the target device\n * @param multiGpuBool                         Reference in which to return a zero or non-zero value\n *                                                 to indicate whether the device is on a multi GPU board\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a multiGpuBool has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a multiGpuBool is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support this feature\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetMultiGpuBoard(nvmlDevice_t device, unsigned int *multiGpuBool);\n\n/**\n * Retrieves the total ECC error counts for the device.\n *\n * For Fermi &tm; or newer fully supported devices.\n * Only applicable to devices with ECC.\n * Requires \\a NVML_INFOROM_ECC version 1.0 or higher.\n * Requires ECC Mode to be enabled.\n *\n * The total error count is the sum of errors across each of the separate memory systems, i.e. the total set of\n * errors across the entire device.\n *\n * See \\ref nvmlMemoryErrorType_t for a description of available error types.\\n\n * See \\ref nvmlEccCounterType_t for a description of available counter types.\n *\n * @param device                               The identifier of the target device\n * @param errorType                            Flag that specifies the type of the errors.\n * @param counterType                          Flag that specifies the counter-type of the errors.\n * @param eccCounts                            Reference in which to return the specified ECC errors\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a eccCounts has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device, \\a errorType or \\a counterType is invalid, or \\a eccCounts is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support this feature\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n *\n * @see nvmlDeviceClearEccErrorCounts()\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetTotalEccErrors(nvmlDevice_t device, nvmlMemoryErrorType_t errorType, nvmlEccCounterType_t counterType, unsigned long long *eccCounts);\n\n/**\n * Retrieves the detailed ECC error counts for the device.\n *\n * @deprecated   This API supports only a fixed set of ECC error locations\n *               On different GPU architectures different locations are supported\n *               See \\ref nvmlDeviceGetMemoryErrorCounter\n *\n * For Fermi &tm; or newer fully supported devices.\n * Only applicable to devices with ECC.\n * Requires \\a NVML_INFOROM_ECC version 2.0 or higher to report aggregate location-based ECC counts.\n * Requires \\a NVML_INFOROM_ECC version 1.0 or higher to report all other ECC counts.\n * Requires ECC Mode to be enabled.\n *\n * Detailed errors provide separate ECC counts for specific parts of the memory system.\n *\n * Reports zero for unsupported ECC error counters when a subset of ECC error counters are supported.\n *\n * See \\ref nvmlMemoryErrorType_t for a description of available bit types.\\n\n * See \\ref nvmlEccCounterType_t for a description of available counter types.\\n\n * See \\ref nvmlEccErrorCounts_t for a description of provided detailed ECC counts.\n *\n * @param device                               The identifier of the target device\n * @param errorType                            Flag that specifies the type of the errors.\n * @param counterType                          Flag that specifies the counter-type of the errors.\n * @param eccCounts                            Reference in which to return the specified ECC errors\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a eccCounts has been populated\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device, \\a errorType or \\a counterType is invalid, or \\a eccCounts is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support this feature\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n *\n * @see nvmlDeviceClearEccErrorCounts()\n */\nDEPRECATED(13.0) nvmlReturn_t DECLDIR nvmlDeviceGetDetailedEccErrors(nvmlDevice_t device, nvmlMemoryErrorType_t errorType, nvmlEccCounterType_t counterType, nvmlEccErrorCounts_t *eccCounts);\n\n/**\n * Retrieves the requested memory error counter for the device.\n *\n * For Fermi &tm; or newer fully supported devices.\n * Requires \\a NVML_INFOROM_ECC version 2.0 or higher to report aggregate location-based memory error counts.\n * Requires \\a NVML_INFOROM_ECC version 1.0 or higher to report all other memory error counts.\n *\n * Only applicable to devices with ECC.\n *\n * Requires ECC Mode to be enabled.\n *\n * @note On MIG-enabled GPUs, per instance information can be queried using specific\n *       MIG device handles. Per instance information is currently only supported for\n *       non-DRAM uncorrectable volatile errors. Querying volatile errors using device\n *       handles is currently not supported.\n *\n * See \\ref nvmlMemoryErrorType_t for a description of available memory error types.\\n\n * See \\ref nvmlEccCounterType_t for a description of available counter types.\\n\n * See \\ref nvmlMemoryLocation_t for a description of available counter locations.\\n\n *\n * @param device                               The identifier of the target device\n * @param errorType                            Flag that specifies the type of error.\n * @param counterType                          Flag that specifies the counter-type of the errors.\n * @param locationType                         Specifies the location of the counter.\n * @param count                                Reference in which to return the ECC counter\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a count has been populated\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device, \\a bitTyp,e \\a counterType or \\a locationType is\n *                                             invalid, or \\a count is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support ECC error reporting in the specified memory\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetMemoryErrorCounter(nvmlDevice_t device, nvmlMemoryErrorType_t errorType,\n                                                   nvmlEccCounterType_t counterType,\n                                                   nvmlMemoryLocation_t locationType, unsigned long long *count);\n\n/**\n * Retrieves the current utilization rates for the device's major subsystems.\n *\n * For Fermi &tm; or newer fully supported devices.\n *\n * See \\ref nvmlUtilization_t for details on available utilization rates.\n *\n * \\note During driver initialization when ECC is enabled one can see high GPU and Memory Utilization readings.\n *       This is caused by ECC Memory Scrubbing mechanism that is performed during driver initialization.\n *\n * @note On MIG-enabled GPUs, querying device utilization rates is not currently supported.\n *\n * @param device                               The identifier of the target device\n * @param utilization                          Reference in which to return the utilization information\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a utilization has been populated\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a utilization is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support this feature\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetUtilizationRates(nvmlDevice_t device, nvmlUtilization_t *utilization);\n\n/**\n * Retrieves the current utilization and sampling size in microseconds for the Encoder\n *\n * For Kepler &tm; or newer fully supported devices.\n *\n * @note On MIG-enabled GPUs, querying encoder utilization is not currently supported.\n *\n * @param device                               The identifier of the target device\n * @param utilization                          Reference to an unsigned int for encoder utilization info\n * @param samplingPeriodUs                     Reference to an unsigned int for the sampling period in US\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a utilization has been populated\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid, \\a utilization is NULL, or \\a samplingPeriodUs is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support this feature\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetEncoderUtilization(nvmlDevice_t device, unsigned int *utilization, unsigned int *samplingPeriodUs);\n\n/**\n * Retrieves the current capacity of the device's encoder, as a percentage of maximum encoder capacity with valid values in the range 0-100.\n *\n * For Maxwell &tm; or newer fully supported devices.\n *\n * @param device                            The identifier of the target device\n * @param encoderQueryType                  Type of encoder to query\n * @param encoderCapacity                   Reference to an unsigned int for the encoder capacity\n *\n * @return\n *         - \\ref NVML_SUCCESS                  if \\a encoderCapacity is fetched\n *         - \\ref NVML_ERROR_UNINITIALIZED      if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT   if \\a encoderCapacity is NULL, or \\a device or \\a encoderQueryType\n *                                              are invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED      if device does not support the encoder specified in \\a encodeQueryType\n *         - \\ref NVML_ERROR_GPU_IS_LOST        if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN            on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetEncoderCapacity (nvmlDevice_t device, nvmlEncoderType_t encoderQueryType, unsigned int *encoderCapacity);\n\n/**\n * Retrieves the current encoder statistics for a given device.\n *\n * For Maxwell &tm; or newer fully supported devices.\n *\n * @param device                            The identifier of the target device\n * @param sessionCount                      Reference to an unsigned int for count of active encoder sessions\n * @param averageFps                        Reference to an unsigned int for trailing average FPS of all active sessions\n * @param averageLatency                    Reference to an unsigned int for encode latency in microseconds\n *\n * @return\n *         - \\ref NVML_SUCCESS                  if \\a sessionCount, \\a averageFps and \\a averageLatency is fetched\n *         - \\ref NVML_ERROR_UNINITIALIZED      if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT   if \\a sessionCount, or \\a device or \\a averageFps,\n *                                              or \\a averageLatency is NULL\n *         - \\ref NVML_ERROR_GPU_IS_LOST        if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN            on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetEncoderStats (nvmlDevice_t device, unsigned int *sessionCount,\n                                                unsigned int *averageFps, unsigned int *averageLatency);\n\n/**\n * Retrieves information about active encoder sessions on a target device.\n *\n * An array of active encoder sessions is returned in the caller-supplied buffer pointed at by \\a sessionInfos. The\n * array element count is passed in \\a sessionCount, and \\a sessionCount is used to return the number of sessions\n * written to the buffer.\n *\n * If the supplied buffer is not large enough to accommodate the active session array, the function returns\n * NVML_ERROR_INSUFFICIENT_SIZE, with the element count of nvmlEncoderSessionInfo_t array required in \\a sessionCount.\n * To query the number of active encoder sessions, call this function with *sessionCount = 0.  The code will return\n * NVML_SUCCESS with number of active encoder sessions updated in *sessionCount.\n *\n * For Maxwell &tm; or newer fully supported devices.\n *\n * @param device                            The identifier of the target device\n * @param sessionCount                      Reference to caller supplied array size, and returns the number of sessions.\n * @param sessionInfos                      Reference in which to return the session information\n *\n * @return\n *         - \\ref NVML_SUCCESS                  if \\a sessionInfos is fetched\n *         - \\ref NVML_ERROR_UNINITIALIZED      if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INSUFFICIENT_SIZE  if \\a sessionCount is too small, array element count is returned in \\a sessionCount\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT   if \\a sessionCount is NULL.\n *         - \\ref NVML_ERROR_GPU_IS_LOST        if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_NOT_SUPPORTED      if this query is not supported by \\a device\n *         - \\ref NVML_ERROR_UNKNOWN            on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetEncoderSessions(nvmlDevice_t device, unsigned int *sessionCount, nvmlEncoderSessionInfo_t *sessionInfos);\n\n/**\n * Retrieves the current utilization and sampling size in microseconds for the Decoder\n *\n * For Kepler &tm; or newer fully supported devices.\n *\n * @note On MIG-enabled GPUs, querying decoder utilization is not currently supported.\n *\n * @param device                               The identifier of the target device\n * @param utilization                          Reference to an unsigned int for decoder utilization info\n * @param samplingPeriodUs                     Reference to an unsigned int for the sampling period in US\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a utilization has been populated\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid, \\a utilization is NULL, or \\a samplingPeriodUs is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support this feature\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetDecoderUtilization(nvmlDevice_t device, unsigned int *utilization, unsigned int *samplingPeriodUs);\n\n/**\n * Retrieves the current utilization and sampling size in microseconds for the JPG\n *\n * %TURING_OR_NEWER%\n *\n * @note On MIG-enabled GPUs, querying decoder utilization is not currently supported.\n *\n * @param device                               The identifier of the target device\n * @param utilization                          Reference to an unsigned int for jpg utilization info\n * @param samplingPeriodUs                     Reference to an unsigned int for the sampling period in US\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a utilization has been populated\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid, \\a utilization is NULL, or \\a samplingPeriodUs is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support this feature\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetJpgUtilization(nvmlDevice_t device, unsigned int *utilization, unsigned int *samplingPeriodUs);\n\n/**\n * Retrieves the current utilization and sampling size in microseconds for the OFA (Optical Flow Accelerator)\n *\n * %TURING_OR_NEWER%\n *\n * @note On MIG-enabled GPUs, querying decoder utilization is not currently supported.\n *\n * @param device                               The identifier of the target device\n * @param utilization                          Reference to an unsigned int for ofa utilization info\n * @param samplingPeriodUs                     Reference to an unsigned int for the sampling period in US\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a utilization has been populated\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid, \\a utilization is NULL, or \\a samplingPeriodUs is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support this feature\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetOfaUtilization(nvmlDevice_t device, unsigned int *utilization, unsigned int *samplingPeriodUs);\n\n/**\n* Retrieves the active frame buffer capture sessions statistics for a given device.\n*\n* For Maxwell &tm; or newer fully supported devices.\n*\n* @param device                            The identifier of the target device\n* @param fbcStats                          Reference to nvmlFBCStats_t structure containing NvFBC stats\n*\n* @return\n*         - \\ref NVML_SUCCESS                  if \\a fbcStats is fetched\n*         - \\ref NVML_ERROR_UNINITIALIZED      if the library has not been successfully initialized\n*         - \\ref NVML_ERROR_INVALID_ARGUMENT   if \\a fbcStats is NULL\n*         - \\ref NVML_ERROR_GPU_IS_LOST        if the target GPU has fallen off the bus or is otherwise inaccessible\n*         - \\ref NVML_ERROR_UNKNOWN            on any unexpected error\n*/\nnvmlReturn_t DECLDIR nvmlDeviceGetFBCStats(nvmlDevice_t device, nvmlFBCStats_t *fbcStats);\n\n/**\n* Retrieves information about active frame buffer capture sessions on a target device.\n*\n* An array of active FBC sessions is returned in the caller-supplied buffer pointed at by \\a sessionInfo. The\n* array element count is passed in \\a sessionCount, and \\a sessionCount is used to return the number of sessions\n* written to the buffer.\n*\n* If the supplied buffer is not large enough to accommodate the active session array, the function returns\n* NVML_ERROR_INSUFFICIENT_SIZE, with the element count of nvmlFBCSessionInfo_t array required in \\a sessionCount.\n* To query the number of active FBC sessions, call this function with *sessionCount = 0.  The code will return\n* NVML_SUCCESS with number of active FBC sessions updated in *sessionCount.\n*\n* For Maxwell &tm; or newer fully supported devices.\n*\n* @note hResolution, vResolution, averageFPS and averageLatency data for a FBC session returned in \\a sessionInfo may\n*       be zero if there are no new frames captured since the session started.\n*\n* @param device                            The identifier of the target device\n* @param sessionCount                      Reference to caller supplied array size, and returns the number of sessions.\n* @param sessionInfo                       Reference in which to return the session information\n*\n* @return\n*         - \\ref NVML_SUCCESS                  if \\a sessionInfo is fetched\n*         - \\ref NVML_ERROR_UNINITIALIZED      if the library has not been successfully initialized\n*         - \\ref NVML_ERROR_INSUFFICIENT_SIZE  if \\a sessionCount is too small, array element count is returned in \\a sessionCount\n*         - \\ref NVML_ERROR_INVALID_ARGUMENT   if \\a sessionCount is NULL.\n*         - \\ref NVML_ERROR_GPU_IS_LOST        if the target GPU has fallen off the bus or is otherwise inaccessible\n*         - \\ref NVML_ERROR_UNKNOWN            on any unexpected error\n*/\nnvmlReturn_t DECLDIR nvmlDeviceGetFBCSessions(nvmlDevice_t device, unsigned int *sessionCount, nvmlFBCSessionInfo_t *sessionInfo);\n\n/**\n * Retrieves the current and pending driver model for the device.\n *\n * For Kepler &tm; or newer fully supported devices.\n * For windows only.\n *\n * On Windows platforms the device driver can run in either WDDM, MCDM or WDM (TCC) modes. If a display is attached\n * to the device it must run in WDDM mode. MCDM mode is preferred if a display is not attached. TCC mode is deprecated.\n *\n * See \\ref nvmlDriverModel_t for details on available driver models.\n *\n * @param device                               The identifier of the target device\n * @param current                              Reference in which to return the current driver model\n * @param pending                              Reference in which to return the pending driver model\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if either \\a current and/or \\a pending have been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or both \\a current and \\a pending are NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the platform is not windows\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n *\n * @see nvmlDeviceSetDriverModel_v2()\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetDriverModel_v2(nvmlDevice_t device, nvmlDriverModel_t *current, nvmlDriverModel_t *pending);\n\n/**\n * Get VBIOS version of the device.\n *\n * For all products.\n *\n * The VBIOS version may change from time to time. It will not exceed 32 characters in length\n * (including the NULL terminator).  See \\ref nvmlConstants::NVML_DEVICE_VBIOS_VERSION_BUFFER_SIZE.\n *\n * @param device                               The identifier of the target device\n * @param version                              Reference to which to return the VBIOS version\n * @param length                               The maximum allowed length of the string returned in \\a version\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a version has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid, or \\a version is NULL\n *         - \\ref NVML_ERROR_INSUFFICIENT_SIZE if \\a length is too small\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetVbiosVersion(nvmlDevice_t device, char *version, unsigned int length);\n\n/**\n * Get Bridge Chip Information for all the bridge chips on the board.\n *\n * For all fully supported products.\n * Only applicable to multi-GPU products.\n *\n * @param device                                The identifier of the target device\n * @param bridgeHierarchy                       Reference to the returned bridge chip Hierarchy\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if bridge chip exists\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid, or \\a bridgeInfo is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if bridge chip not supported on the device\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n *\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetBridgeChipInfo(nvmlDevice_t device, nvmlBridgeChipHierarchy_t *bridgeHierarchy);\n\n/**\n * Get information about processes with a compute context on a device\n *\n * For Fermi &tm; or newer fully supported devices.\n *\n * This function returns information only about compute running processes (e.g. CUDA application which have\n * active context). Any graphics applications (e.g. using OpenGL, DirectX) won't be listed by this function.\n *\n * To query the current number of running compute processes, call this function with *infoCount = 0. The\n * return code will be NVML_ERROR_INSUFFICIENT_SIZE, or NVML_SUCCESS if none are running. For this call\n * \\a infos is allowed to be NULL.\n *\n * The usedGpuMemory field returned is all of the memory used by the application.\n *\n * Keep in mind that information returned by this call is dynamic and the number of elements might change in\n * time. Allocate more space for \\a infos table in case new compute processes are spawned.\n *\n * @note In MIG mode, if device handle is provided, the API returns aggregate information, only if\n *       the caller has appropriate privileges. Per-instance information can be queried by using\n *       specific MIG device handles.\n *       Querying per-instance information using MIG device handles is not supported if the device is in vGPU Host virtualization mode.\n *\n * @param device                               The device handle or MIG device handle\n * @param infoCount                            Reference in which to provide the \\a infos array size, and\n *                                             to return the number of returned elements\n * @param infos                                Reference in which to return the process information\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a infoCount and \\a infos have been populated\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INSUFFICIENT_SIZE if \\a infoCount indicates that the \\a infos array is too small\n *                                             \\a infoCount will contain minimal amount of space necessary for\n *                                             the call to complete\n *         - \\ref NVML_ERROR_NO_PERMISSION     if the user doesn't have permission to perform this operation\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid, either of \\a infoCount or \\a infos is NULL\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if this query is not supported by \\a device\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n *\n * @see \\ref nvmlSystemGetProcessName\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetComputeRunningProcesses_v3(nvmlDevice_t device, unsigned int *infoCount, nvmlProcessInfo_t *infos);\n\n/**\n * Get information about processes with a graphics context on a device\n *\n * For Kepler &tm; or newer fully supported devices.\n *\n * This function returns information only about graphics based processes\n * (eg. applications using OpenGL, DirectX)\n *\n * To query the current number of running graphics processes, call this function with *infoCount = 0. The\n * return code will be NVML_ERROR_INSUFFICIENT_SIZE, or NVML_SUCCESS if none are running. For this call\n * \\a infos is allowed to be NULL.\n *\n * The usedGpuMemory field returned is all of the memory used by the application.\n *\n * Keep in mind that information returned by this call is dynamic and the number of elements might change in\n * time. Allocate more space for \\a infos table in case new graphics processes are spawned.\n *\n * @note In MIG mode, if device handle is provided, the API returns aggregate information, only if\n *       the caller has appropriate privileges. Per-instance information can be queried by using\n *       specific MIG device handles.\n *       Querying per-instance information using MIG device handles is not supported if the device is in vGPU Host virtualization mode.\n *\n * @param device                               The device handle or MIG device handle\n * @param infoCount                            Reference in which to provide the \\a infos array size, and\n *                                             to return the number of returned elements\n * @param infos                                Reference in which to return the process information\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a infoCount and \\a infos have been populated\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INSUFFICIENT_SIZE if \\a infoCount indicates that the \\a infos array is too small\n *                                             \\a infoCount will contain minimal amount of space necessary for\n *                                             the call to complete\n *         - \\ref NVML_ERROR_NO_PERMISSION     if the user doesn't have permission to perform this operation\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid, either of \\a infoCount or \\a infos is NULL\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if this query is not supported by \\a device\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n *\n * @see \\ref nvmlSystemGetProcessName\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetGraphicsRunningProcesses_v3(nvmlDevice_t device, unsigned int *infoCount, nvmlProcessInfo_t *infos);\n\n/**\n * Get information about processes with a Multi-Process Service (MPS) compute context on a device\n *\n * For Volta &tm; or newer fully supported devices.\n *\n * This function returns information only about compute running processes (e.g. CUDA application which have\n * active context) utilizing MPS. Any graphics applications (e.g. using OpenGL, DirectX) won't be listed by\n * this function.\n *\n * To query the current number of running compute processes, call this function with *infoCount = 0. The\n * return code will be NVML_ERROR_INSUFFICIENT_SIZE, or NVML_SUCCESS if none are running. For this call\n * \\a infos is allowed to be NULL.\n *\n * The usedGpuMemory field returned is all of the memory used by the application.\n *\n * Keep in mind that information returned by this call is dynamic and the number of elements might change in\n * time. Allocate more space for \\a infos table in case new compute processes are spawned.\n *\n * @note In MIG mode, if device handle is provided, the API returns aggregate information, only if\n *       the caller has appropriate privileges. Per-instance information can be queried by using\n *       specific MIG device handles.\n *       Querying per-instance information using MIG device handles is not supported if the device is in vGPU Host virtualization mode.\n *\n * @param device                               The device handle or MIG device handle\n * @param infoCount                            Reference in which to provide the \\a infos array size, and\n *                                             to return the number of returned elements\n * @param infos                                Reference in which to return the process information\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a infoCount and \\a infos have been populated\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INSUFFICIENT_SIZE if \\a infoCount indicates that the \\a infos array is too small\n *                                             \\a infoCount will contain minimal amount of space necessary for\n *                                             the call to complete\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid, either of \\a infoCount or \\a infos is NULL\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if this query is not supported by \\a device\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n *\n * @see \\ref nvmlSystemGetProcessName\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetMPSComputeRunningProcesses_v3(nvmlDevice_t device, unsigned int *infoCount, nvmlProcessInfo_t *infos);\n\n/**\n * Get information about running processes on a device for input context\n *\n * For Hopper &tm; or newer fully supported devices.\n *\n * This function returns information only about running processes (e.g. CUDA application which have\n * active context).\n *\n * To determine the size of the \\a plist->procArray array to allocate, call the function with\n * \\a plist->numProcArrayEntries set to zero and \\a plist->procArray set to NULL. The return\n * code will be either NVML_ERROR_INSUFFICIENT_SIZE (if there are valid processes of type\n * \\a plist->mode to report on, in which case the \\a plist->numProcArrayEntries field will\n * indicate the required number of entries in the array) or NVML_SUCCESS (if no processes of type\n * \\a plist->mode exist).\n *\n * The usedGpuMemory field returned is all of the memory used by the application.\n * The usedGpuCcProtectedMemory field returned is all of the protected memory used by the application.\n *\n * Keep in mind that information returned by this call is dynamic and the number of elements might change in\n * time. Allocate more space for \\a plist->procArray table in case new processes are spawned.\n *\n * @note In MIG mode, if device handle is provided, the API returns aggregate information, only if\n *       the caller has appropriate privileges. Per-instance information can be queried by using\n *       specific MIG device handles.\n *       Querying per-instance information using MIG device handles is not supported if the device is in\n *       vGPU Host virtualization mode.\n *       Protected memory usage is currently not available in MIG mode and in windows.\n *\n * @param device                               The device handle or MIG device handle\n * @param plist                                Reference in which to process detail list\n * \\a plist->version                       The api version\n * \\a plist->mode                          The process mode\n * \\a plist->procArray                     Reference in which to return the process information\n * \\a plist->numProcArrayEntries           Proc array size of returned entries\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a plist->numprocArrayEntries and \\a plist->procArray have been populated\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INSUFFICIENT_SIZE if \\a plist->numprocArrayEntries indicates that the \\a plist->procArray is too small\n *                                             \\a plist->numprocArrayEntries will contain minimal amount of space necessary for\n *                                             the call to complete\n *         - \\ref NVML_ERROR_NO_PERMISSION     if the user doesn't have permission to perform this operation\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid, \\a plist is NULL, \\a plist->version is invalid,\n *                                             \\a plist->mode is invalid,\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if this query is not supported by \\a device\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n *\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetRunningProcessDetailList(nvmlDevice_t device, nvmlProcessDetailList_t *plist);\n\n/**\n * Check if the GPU devices are on the same physical board.\n *\n * For all fully supported products.\n *\n * @param device1                               The first GPU device\n * @param device2                               The second GPU device\n * @param onSameBoard                           Reference in which to return the status.\n *                                              Non-zero indicates that the GPUs are on the same board.\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a onSameBoard has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a dev1 or \\a dev2 are invalid or \\a onSameBoard is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if this check is not supported by the device\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the either GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceOnSameBoard(nvmlDevice_t device1, nvmlDevice_t device2, int *onSameBoard);\n\n/**\n * Retrieves the root/admin permissions on the target API. See \\a nvmlRestrictedAPI_t for the list of supported APIs.\n * If an API is restricted only root users can call that API. See \\a nvmlDeviceSetAPIRestriction to change current permissions.\n *\n * For all fully supported products.\n *\n * @param device                               The identifier of the target device\n * @param apiType                              Target API type for this operation\n * @param isRestricted                         Reference in which to return the current restriction\n *                                             NVML_FEATURE_ENABLED indicates that the API is root-only\n *                                             NVML_FEATURE_DISABLED indicates that the API is accessible to all users\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a isRestricted has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid, \\a apiType incorrect or \\a isRestricted is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if this query is not supported by the device or the device does not support\n *                                                 the feature that is being queried (E.G. Enabling/disabling Auto Boosted clocks is\n *                                                 not supported by the device)\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n *\n * @see nvmlRestrictedAPI_t\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetAPIRestriction(nvmlDevice_t device, nvmlRestrictedAPI_t apiType, nvmlEnableState_t *isRestricted);\n\n/**\n * Gets recent samples for the GPU.\n *\n * For Kepler &tm; or newer fully supported devices.\n *\n * Based on type, this method can be used to fetch the power, utilization or clock samples maintained in the buffer by\n * the driver.\n *\n * Power, Utilization and Clock samples are returned as type \"unsigned int\" for the union nvmlValue_t.\n *\n * To get the size of samples that user needs to allocate, the method is invoked with samples set to NULL.\n * The returned samplesCount will provide the number of samples that can be queried. The user needs to\n * allocate the buffer with size as samplesCount * sizeof(nvmlSample_t).\n *\n * lastSeenTimeStamp represents CPU timestamp in microseconds. Set it to 0 to fetch all the samples maintained by the\n * underlying buffer. Set lastSeenTimeStamp to one of the timeStamps retrieved from the date of the previous query\n * to get more recent samples.\n *\n * This method fetches the number of entries which can be accommodated in the provided samples array, and the\n * reference samplesCount is updated to indicate how many samples were actually retrieved. The advantage of using this\n * method for samples in contrast to polling via existing methods is to get get higher frequency data at lower polling cost.\n *\n * @note On MIG-enabled GPUs, querying the following sample types, NVML_GPU_UTILIZATION_SAMPLES, NVML_MEMORY_UTILIZATION_SAMPLES\n *       NVML_ENC_UTILIZATION_SAMPLES and NVML_DEC_UTILIZATION_SAMPLES, is not currently supported.\n *\n * @param device                        The identifier for the target device\n * @param type                          Type of sampling event\n * @param lastSeenTimeStamp             Return only samples with timestamp greater than lastSeenTimeStamp.\n * @param sampleValType                 Output parameter to represent the type of sample value as described in nvmlSampleVal_t\n * @param sampleCount                   Reference to provide the number of elements which can be queried in samples array\n * @param samples                       Reference in which samples are returned\n\n * @return\n *         - \\ref NVML_SUCCESS                 if samples are successfully retrieved\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid, \\a samplesCount is NULL or\n *                                             reference to \\a sampleCount is 0 for non null \\a samples\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if this query is not supported by the device\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_NOT_FOUND         if sample entries are not found\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetSamples(nvmlDevice_t device, nvmlSamplingType_t type, unsigned long long lastSeenTimeStamp,\n        nvmlValueType_t *sampleValType, unsigned int *sampleCount, nvmlSample_t *samples);\n\n/**\n * Gets Total, Available and Used size of BAR1 memory.\n *\n * BAR1 is used to map the FB (device memory) so that it can be directly accessed by the CPU or by 3rd party\n * devices (peer-to-peer on the PCIE bus).\n *\n * @note In MIG mode, if device handle is provided, the API returns aggregate\n *       information, only if the caller has appropriate privileges. Per-instance\n *       information can be queried by using specific MIG device handles.\n *\n * For Kepler &tm; or newer fully supported devices.\n *\n * @param device                               The identifier of the target device\n * @param bar1Memory                           Reference in which BAR1 memory\n *                                             information is returned.\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if BAR1 memory is successfully retrieved\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid, \\a bar1Memory is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if this query is not supported by the device\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n *\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetBAR1MemoryInfo(nvmlDevice_t device, nvmlBAR1Memory_t *bar1Memory);\n\n/**\n * @deprecated Use \\ref nvmlDeviceGetFieldValues to query this data.\n * This API will be removed in CUDA 14.0.\n *\n * Translations are as follows:\n\n *\n * NVML_PERF_POLICY_POWER             -> NVML_FI_DEV_CLOCKS_EVENT_REASON_SW_POWER_CAP\n * NVML_PERF_POLICY_THERMAL           -> NVML_FI_DEV_CLOCKS_EVENT_REASON_SW_THERM_SLOWDOWN\n * NVML_PERF_POLICY_SYNC_BOOST        -> NVML_FI_DEV_CLOCKS_EVENT_REASON_SYNC_BOOST\n * NVML_PERF_POLICY_BOARD_LIMIT       -> NVML_FI_DEV_PERF_POLICY_BOARD_LIMIT\n * NVML_PERF_POLICY_LOW_UTILIZATION   -> NVML_FI_DEV_PERF_POLICY_LOW_UTILIZATION\n * NVML_PERF_POLICY_RELIABILITY       -> NVML_FI_DEV_PERF_POLICY_RELIABILITY\n * NVML_PERF_POLICY_TOTAL_APP_CLOCKS  -> DEPRECATED, Do not use\n * NVML_PERF_POLICY_TOTAL_BASE_CLOCKS -> NVML_FI_DEV_PERF_POLICY_TOTAL_BASE_CLOCKS\n */\nDEPRECATED(13.0) nvmlReturn_t DECLDIR nvmlDeviceGetViolationStatus(nvmlDevice_t device, nvmlPerfPolicyType_t perfPolicyType, nvmlViolationTime_t *violTime);\n\n/**\n * Gets the device's interrupt number\n *\n * @param device                               The identifier of the target device\n * @param irqNum                               The interrupt number associated with the specified device\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if irq number is successfully retrieved\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid, or \\a irqNum is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if this query is not supported by the device\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetIrqNum(nvmlDevice_t device, unsigned int *irqNum);\n\n/**\n * Gets the device's core count\n *\n * @note On MIG-enabled GPUs, querying the device's core count is currently not supported using this API.\n *       Please use \\ref nvmlDeviceGetGpuInstanceProfileInfo to fetch the MIG device's core count.\n *\n * @param device                               The identifier of the target device\n * @param numCores                             The number of cores for the specified device\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if GPU core count is successfully retrieved\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid, or \\a numCores is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if this query is not supported by the device or a mig device.\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetNumGpuCores(nvmlDevice_t device, unsigned int *numCores);\n\n/**\n * Gets the devices power source\n *\n * @param device                               The identifier of the target device\n * @param powerSource                          The power source of the device\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if the current power source was successfully retrieved\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid, or \\a powerSource is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if this query is not supported by the device\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetPowerSource(nvmlDevice_t device, nvmlPowerSource_t *powerSource);\n\n/**\n * Gets the device's memory bus width\n *\n * @param device                               The identifier of the target device\n * @param busWidth                             The devices's memory bus width\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if the memory bus width is successfully retrieved\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid, or \\a busWidth is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if this query is not supported by the device\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetMemoryBusWidth(nvmlDevice_t device, unsigned int *busWidth);\n\n/**\n * Gets the device's PCIE Max Link speed in MBPS\n *\n * @param device                               The identifier of the target device\n * @param maxSpeed                             The devices's PCIE Max Link speed in MBPS\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if PCIe Max Link Speed is successfully retrieved\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid, or \\a maxSpeed is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if this query is not supported by the device\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetPcieLinkMaxSpeed(nvmlDevice_t device, unsigned int *maxSpeed);\n\n/**\n * Gets the device's PCIe Link speed in Mbps\n *\n * @param device                               The identifier of the target device\n * @param pcieSpeed                            The devices's PCIe Max Link speed in Mbps\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a pcieSpeed has been retrieved\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a pcieSpeed is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support PCIe speed getting\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetPcieSpeed(nvmlDevice_t device, unsigned int *pcieSpeed);\n\n/**\n * Gets the device's Adaptive Clock status\n *\n * @param device                               The identifier of the target device\n * @param adaptiveClockStatus                  The current adaptive clocking status, either\n *                                             NVML_ADAPTIVE_CLOCKING_INFO_STATUS_DISABLED\n *                                             or NVML_ADAPTIVE_CLOCKING_INFO_STATUS_ENABLED\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if the current adaptive clocking status is successfully retrieved\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid, or \\a adaptiveClockStatus is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if this query is not supported by the device\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetAdaptiveClockInfoStatus(nvmlDevice_t device, unsigned int *adaptiveClockStatus);\n\n/**\n * Get the type of the GPU Bus (PCIe, PCI, ...)\n *\n * @param device                               The identifier of the target device\n * @param type                                 The PCI Bus type\n *\n * return\n *         - \\ref NVML_SUCCESS                 if the bus \\a type is successfully retreived\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a type is NULL\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetBusType(nvmlDevice_t device, nvmlBusType_t *type);\n\n\n /**\n * @deprecated Will be deprecated in a future release. Use \\ref nvmlDeviceGetGpuFabricInfoV instead\n *\n * Get fabric information associated with the device.\n *\n * For Hopper &tm; or newer fully supported devices.\n *\n * On Hopper + NVSwitch systems, GPU is registered with the NVIDIA Fabric Manager\n * Upon successful registration, the GPU is added to the NVLink fabric to enable\n * peer-to-peer communication.\n * This API reports the current state of the GPU in the NVLink fabric\n * along with other useful information.\n *\n *\n * @param device                               The identifier of the target device\n * @param gpuFabricInfo                        Information about GPU fabric state\n *\n * @return\n *         - \\ref NVML_SUCCESS                 Upon success\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     If \\a device doesn't support gpu fabric\n */\nDEPRECATED(13.0) nvmlReturn_t DECLDIR nvmlDeviceGetGpuFabricInfo(nvmlDevice_t device, nvmlGpuFabricInfo_t *gpuFabricInfo);\n\n/**\n* Versioned wrapper around \\ref nvmlDeviceGetGpuFabricInfo that accepts a versioned\n* \\ref nvmlGpuFabricInfo_v2_t or later output structure.\n*\n* @note The caller must set the \\ref nvmlGpuFabricInfoV_t.version field to the\n* appropriate version prior to calling this function. For example:\n* \\code\n*     nvmlGpuFabricInfoV_t fabricInfo =\n*         { .version = nvmlGpuFabricInfo_v2 };\n*     nvmlReturn_t result = nvmlDeviceGetGpuFabricInfoV(device,&fabricInfo);\n* \\endcode\n*\n* For Hopper &tm; or newer fully supported devices.\n*\n* @param device                               The identifier of the target device\n* @param gpuFabricInfo                        Information about GPU fabric state\n*\n* @return\n*         - \\ref NVML_SUCCESS                 Upon success\n*         - \\ref NVML_ERROR_NOT_SUPPORTED     If \\a device doesn't support gpu fabric\n*/\nnvmlReturn_t DECLDIR nvmlDeviceGetGpuFabricInfoV(nvmlDevice_t device,\n                                                 nvmlGpuFabricInfoV_t *gpuFabricInfo);\n\n/**\n * Get Conf Computing System capabilities.\n *\n * For Ampere &tm; or newer fully supported devices.\n * Supported on Linux, Windows TCC.\n *\n * @param capabilities                         System CC capabilities\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a capabilities were successfully queried\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a capabilities is invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if this query is not supported by the device\n */\nnvmlReturn_t DECLDIR nvmlSystemGetConfComputeCapabilities(nvmlConfComputeSystemCaps_t *capabilities);\n\n/**\n * Get Conf Computing System State.\n *\n * For Ampere &tm; or newer fully supported devices.\n * Supported on Linux, Windows TCC.\n *\n * @param state                                System CC State\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a state were successfully queried\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a state is invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if this query is not supported by the device\n */\nnvmlReturn_t DECLDIR nvmlSystemGetConfComputeState(nvmlConfComputeSystemState_t *state);\n\n/**\n * Get Conf Computing Protected and Unprotected Memory Sizes.\n *\n * For Ampere &tm; or newer fully supported devices.\n * Supported on Linux, Windows TCC.\n *\n * @param device                               Device handle\n * @param memInfo                              Protected/Unprotected Memory sizes\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a memInfo were successfully queried\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a memInfo or \\a device is invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if this query is not supported by the device\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetConfComputeMemSizeInfo(nvmlDevice_t device, nvmlConfComputeMemSizeInfo_t *memInfo);\n\n/**\n * Get Conf Computing GPUs ready state.\n *\n * For Ampere &tm; or newer fully supported devices.\n * Supported on Linux, Windows TCC.\n *\n * @param isAcceptingWork                      Returns GPU current work accepting state,\n *                                             NVML_CC_ACCEPTING_CLIENT_REQUESTS_TRUE or\n *                                             NVML_CC_ACCEPTING_CLIENT_REQUESTS_FALSE\n *\n * return\n *         - \\ref NVML_SUCCESS                 if \\a current GPUs ready state were successfully queried\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a isAcceptingWork is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if this query is not supported by the device\n */\nnvmlReturn_t DECLDIR nvmlSystemGetConfComputeGpusReadyState(unsigned int *isAcceptingWork);\n\n/**\n * Get Conf Computing protected memory usage.\n *\n * For Ampere &tm; or newer fully supported devices.\n * Supported on Linux, Windows TCC.\n *\n * @param device                               The identifier of the target device\n * @param memory                               Reference in which to return the memory information\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a memory has been populated\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a memory is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if this query is not supported by the device\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetConfComputeProtectedMemoryUsage(nvmlDevice_t device, nvmlMemory_t *memory);\n\n/**\n * Get Conf Computing GPU certificate details.\n *\n * For Ampere &tm; or newer fully supported devices.\n * Supported on Linux, Windows TCC.\n *\n * @param device                               The identifier of the target device\n * @param gpuCert                              Reference in which to return the gpu certificate information\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a gpu certificate info has been populated\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a memory is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if this query is not supported by the device\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetConfComputeGpuCertificate(nvmlDevice_t device,\n                                                            nvmlConfComputeGpuCertificate_t *gpuCert);\n\n/**\n * Get Conf Computing GPU attestation report.\n *\n * For Ampere &tm; or newer fully supported devices.\n * Supported on Linux, Windows TCC.\n *\n * @param device                               The identifier of the target device\n * @param gpuAtstReport                        Reference in which to return the gpu attestation report\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a gpu attestation report has been populated\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a memory is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if this query is not supported by the device\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetConfComputeGpuAttestationReport(nvmlDevice_t device,\n                                                                  nvmlConfComputeGpuAttestationReport_t *gpuAtstReport);\n/**\n * Get Conf Computing key rotation threshold detail.\n *\n * For Hopper &tm; or newer fully supported devices.\n * Supported on Linux, Windows TCC.\n *\n * @param pKeyRotationThrInfo                  Reference in which to return the key rotation threshold data\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a gpu key rotation threshold info has been populated\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a memory is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if this query is not supported by the device\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlSystemGetConfComputeKeyRotationThresholdInfo(\n                          nvmlConfComputeGetKeyRotationThresholdInfo_t *pKeyRotationThrInfo);\n\n/**\n * Set Conf Computing Unprotected Memory Size.\n *\n * For Ampere &tm; or newer fully supported devices.\n * Supported on Linux, Windows TCC.\n *\n * @param device                               Device Handle\n * @param sizeKiB                              Unprotected Memory size to be set in KiB\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a sizeKiB successfully set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if this query is not supported by the device\n */\nnvmlReturn_t DECLDIR nvmlDeviceSetConfComputeUnprotectedMemSize(nvmlDevice_t device, unsigned long long sizeKiB);\n\n/**\n * Set Conf Computing GPUs ready state.\n *\n * For Ampere &tm; or newer fully supported devices.\n * Supported on Linux, Windows TCC.\n *\n * @param isAcceptingWork                      GPU accepting new work, NVML_CC_ACCEPTING_CLIENT_REQUESTS_TRUE or\n *                                             NVML_CC_ACCEPTING_CLIENT_REQUESTS_FALSE\n *\n * return\n *         - \\ref NVML_SUCCESS                 if \\a current GPUs ready state is successfully set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a isAcceptingWork is invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if this query is not supported by the device\n */\nnvmlReturn_t DECLDIR nvmlSystemSetConfComputeGpusReadyState(unsigned int isAcceptingWork);\n\n/**\n * Set Conf Computing key rotation threshold.\n *\n * For Hopper &tm; or newer fully supported devices.\n * Supported on Linux, Windows TCC.\n *\n * This function is to set the confidential compute key rotation threshold parameters.\n * \\a pKeyRotationThrInfo->maxAttackerAdvantage should be in the range from\n * NVML_CC_KEY_ROTATION_THRESHOLD_ATTACKER_ADVANTAGE_MIN to NVML_CC_KEY_ROTATION_THRESHOLD_ATTACKER_ADVANTAGE_MAX.\n * Default value is 60.\n *\n * @param pKeyRotationThrInfo                  Reference to the key rotation threshold data\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a key rotation threashold max attacker advantage has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a memory is NULL\n *         - \\ref NVML_ERROR_INVALID_STATE     if confidential compute GPU ready state is enabled\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if this query is not supported by the device\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlSystemSetConfComputeKeyRotationThresholdInfo(\n                          nvmlConfComputeSetKeyRotationThresholdInfo_t *pKeyRotationThrInfo);\n\n/**\n * Get Conf Computing System Settings.\n *\n * For Hopper &tm; or newer fully supported devices.\n * Supported on Linux, Windows TCC.\n *\n * @param settings                                     System CC settings\n *\n * @return\n *         - \\ref NVML_SUCCESS                         If the query is success\n *         - \\ref NVML_ERROR_UNINITIALIZED             If the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT          If \\a device is invalid or \\a counters is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED             If the device does not support this feature\n *         - \\ref NVML_ERROR_GPU_IS_LOST               If the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH If the provided version is invalid/unsupported\n *         - \\ref NVML_ERROR_UNKNOWN                   On any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlSystemGetConfComputeSettings(nvmlSystemConfComputeSettings_t *settings);\n\n/**\n * Retrieve GSP firmware version.\n *\n * The caller passes in buffer via \\a version and corresponding GSP firmware numbered version\n * is returned with the same parameter in string format.\n *\n * @param device                               Device handle\n * @param version                              The retrieved GSP firmware version\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if GSP firmware version is sucessfully retrieved\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or GSP \\a version pointer is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if GSP firmware is not enabled for GPU\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetGspFirmwareVersion(nvmlDevice_t device, char *version);\n\n/**\n * Retrieve GSP firmware mode.\n *\n * The caller passes in integer pointers. GSP firmware enablement and default mode information is returned with\n * corresponding parameters. The return value in \\a isEnabled and \\a defaultMode should be treated as boolean.\n *\n * @param device                               Device handle\n * @param isEnabled                            Pointer to specify if GSP firmware is enabled\n * @param defaultMode                          Pointer to specify if GSP firmware is supported by default on \\a device\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if GSP firmware mode is sucessfully retrieved\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or any of \\a isEnabled or \\a defaultMode is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if GSP firmware is not enabled for GPU\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetGspFirmwareMode(nvmlDevice_t device, unsigned int *isEnabled, unsigned int *defaultMode);\n\n/**\n * Get SRAM ECC error status of this device.\n *\n * For Ampere &tm; or newer fully supported devices.\n * Requires root/admin permissions.\n *\n * See \\ref nvmlEccSramErrorStatus_v1_t for more information on the struct.\n *\n * @param device                               The identifier of the target device\n * @param status                               Returns SRAM ECC error status\n *\n * @return\n *         - \\ref NVML_SUCCESS                          If \\a limit has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED              If the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT           If \\a device is invalid or \\a counters is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED              If the device does not support this feature\n *         - \\ref NVML_ERROR_GPU_IS_LOST                If the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH  If the version of \\a nvmlEccSramErrorStatus_t is invalid\n *         - \\ref NVML_ERROR_UNKNOWN                    On any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetSramEccErrorStatus(nvmlDevice_t device,\n                                                     nvmlEccSramErrorStatus_t *status);\n\n/**\n * Set new power limit of this device.\n *\n * For Kepler &tm; or newer fully supported devices.\n * Requires root/admin permissions.\n *\n * See \\ref nvmlDeviceGetPowerManagementLimitConstraints to check the allowed ranges of values.\n *\n * See \\ref nvmlPowerValue_v2_t for more information on the struct.\n *\n * \\note Limit is not persistent across reboots or driver unloads.\n * Enable persistent mode to prevent driver from unloading when no application is using the device.\n *\n * This API replaces nvmlDeviceSetPowerManagementLimit. It can be used as a drop-in replacement for the older version.\n *\n * @param device                               The identifier of the target device\n * @param powerValue                           Power management limit in milliwatts to set\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a limit has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a powerValue is NULL or contains invalid values\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support this feature\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n *\n * @see NVML_FI_DEV_POWER_AVERAGE\n * @see NVML_FI_DEV_POWER_INSTANT\n * @see NVML_FI_DEV_POWER_MIN_LIMIT\n * @see NVML_FI_DEV_POWER_MAX_LIMIT\n * @see NVML_FI_DEV_POWER_CURRENT_LIMIT\n */\nnvmlReturn_t DECLDIR nvmlDeviceSetPowerManagementLimit_v2(nvmlDevice_t device, nvmlPowerValue_v2_t *powerValue);\n\n/**\n * @} // @defgroup nvmlDeviceQueries Device Queries\n */\n\n/** @addtogroup nvmlAccountingStats\n *  @{\n */\n\n/**\n * Queries the state of per process accounting mode.\n *\n * For Kepler &tm; or newer fully supported devices.\n *\n * See \\ref nvmlDeviceGetAccountingStats for more details.\n * See \\ref nvmlDeviceSetAccountingMode\n *\n * @param device                               The identifier of the target device\n * @param mode                                 Reference in which to return the current accounting mode\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if the mode has been successfully retrieved\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a mode are NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device doesn't support this feature\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetAccountingMode(nvmlDevice_t device, nvmlEnableState_t *mode);\n\n/**\n * Queries process's accounting stats.\n *\n * For Kepler &tm; or newer fully supported devices.\n *\n * Accounting stats capture GPU utilization and other statistics across the lifetime of a process.\n * Accounting stats can be queried during life time of the process and after its termination.\n * The time field in \\ref nvmlAccountingStats_t is reported as 0 during the lifetime of the process and\n * updated to actual running time after its termination.\n * Accounting stats are kept in a circular buffer, newly created processes overwrite information about old\n * processes.\n *\n * See \\ref nvmlAccountingStats_t for description of each returned metric.\n * List of processes that can be queried can be retrieved from \\ref nvmlDeviceGetAccountingPids.\n *\n * @note Accounting Mode needs to be on. See \\ref nvmlDeviceGetAccountingMode.\n * @note Only compute and graphics applications stats can be queried. Monitoring applications stats can't be\n *         queried since they don't contribute to GPU utilization.\n * @note In case of pid collision stats of only the latest process (that terminated last) will be reported\n *\n * @warning On Kepler devices per process statistics are accurate only if there's one process running on a GPU.\n *\n * @param device                               The identifier of the target device\n * @param pid                                  Process Id of the target process to query stats for\n * @param stats                                Reference in which to return the process's accounting stats\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if stats have been successfully retrieved\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a stats are NULL\n *         - \\ref NVML_ERROR_NOT_FOUND         if process stats were not found\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if \\a device doesn't support this feature or accounting mode is disabled\n *                                              or on vGPU host.\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n *\n * @see nvmlDeviceGetAccountingBufferSize\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetAccountingStats(nvmlDevice_t device, unsigned int pid, nvmlAccountingStats_t *stats);\n\n/**\n * Queries list of processes that can be queried for accounting stats. The list of processes returned\n * can be in running or terminated state.\n *\n * For Kepler &tm; or newer fully supported devices.\n *\n * To query the number of processes under Accounting Mode, call this function with *count = 0 and pids=NULL.\n * The return code will be NVML_ERROR_INSUFFICIENT_SIZE with an updated count value indicating the number of processes.\n *\n * For more details see \\ref nvmlDeviceGetAccountingStats.\n *\n * @note In case of PID collision some processes might not be accessible before the circular buffer is full.\n *\n * @param device                               The identifier of the target device\n * @param count                                Reference in which to provide the \\a pids array size, and\n *                                               to return the number of elements ready to be queried\n * @param pids                                 Reference in which to return list of process ids\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if pids were successfully retrieved\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a count is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if \\a device doesn't support this feature or accounting mode is disabled\n *                                              or on vGPU host.\n *         - \\ref NVML_ERROR_INSUFFICIENT_SIZE if \\a count is too small (\\a count is set to\n *                                                 expected value)\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n *\n * @see nvmlDeviceGetAccountingBufferSize\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetAccountingPids(nvmlDevice_t device, unsigned int *count, unsigned int *pids);\n\n/**\n * Returns the number of processes that the circular buffer with accounting pids can hold.\n *\n * For Kepler &tm; or newer fully supported devices.\n *\n * This is the maximum number of processes that accounting information will be stored for before information\n * about oldest processes will get overwritten by information about new processes.\n *\n * @param device                               The identifier of the target device\n * @param bufferSize                           Reference in which to provide the size (in number of elements)\n *                                               of the circular buffer for accounting stats.\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if buffer size was successfully retrieved\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a bufferSize is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device doesn't support this feature or accounting mode is disabled\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n *\n * @see nvmlDeviceGetAccountingStats\n * @see nvmlDeviceGetAccountingPids\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetAccountingBufferSize(nvmlDevice_t device, unsigned int *bufferSize);\n\n/** @} */\n\n/** @addtogroup nvmlDeviceQueries\n *  @{\n */\n\n/**\n * Returns the list of retired pages by source, including pages that are pending retirement\n * The address information provided from this API is the hardware address of the page that was retired.  Note\n * that this does not match the virtual address used in CUDA, but will match the address information in Xid 63\n *\n * For Kepler &tm; or newer fully supported devices.\n *\n * @param device                            The identifier of the target device\n * @param cause                             Filter page addresses by cause of retirement\n * @param pageCount                         Reference in which to provide the \\a addresses buffer size, and\n *                                          to return the number of retired pages that match \\a cause\n *                                          Set to 0 to query the size without allocating an \\a addresses buffer\n * @param addresses                         Buffer to write the page addresses into\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a pageCount was populated and \\a addresses was filled\n *         - \\ref NVML_ERROR_INSUFFICIENT_SIZE if \\a pageCount indicates the buffer is not large enough to store all the\n *                                             matching page addresses.  \\a pageCount is set to the needed size.\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid, \\a pageCount is NULL, \\a cause is invalid, or\n *                                             \\a addresses is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device doesn't support this feature\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetRetiredPages(nvmlDevice_t device, nvmlPageRetirementCause_t cause,\n    unsigned int *pageCount, unsigned long long *addresses);\n\n/**\n * Returns the list of retired pages by source, including pages that are pending retirement\n * The address information provided from this API is the hardware address of the page that was retired.  Note\n * that this does not match the virtual address used in CUDA, but will match the address information in Xid 63\n *\n * \\note nvmlDeviceGetRetiredPages_v2 adds an additional timestamps parameter to return the time of each page's\n *       retirement. This is supported for Pascal and newer architecture.\n *\n * For Kepler &tm; or newer fully supported devices.\n *\n * @param device                            The identifier of the target device\n * @param cause                             Filter page addresses by cause of retirement\n * @param pageCount                         Reference in which to provide the \\a addresses buffer size, and\n *                                          to return the number of retired pages that match \\a cause\n *                                          Set to 0 to query the size without allocating an \\a addresses buffer\n * @param addresses                         Buffer to write the page addresses into\n * @param timestamps                        Buffer to write the timestamps of page retirement, additional for _v2\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a pageCount was populated and \\a addresses was filled\n *         - \\ref NVML_ERROR_INSUFFICIENT_SIZE if \\a pageCount indicates the buffer is not large enough to store all the\n *                                             matching page addresses.  \\a pageCount is set to the needed size.\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid, \\a pageCount is NULL, \\a cause is invalid, or\n *                                             \\a addresses is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device doesn't support this feature\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetRetiredPages_v2(nvmlDevice_t device, nvmlPageRetirementCause_t cause,\n    unsigned int *pageCount, unsigned long long *addresses, unsigned long long *timestamps);\n\n/**\n * Check if any pages are pending retirement and need a reboot to fully retire.\n *\n * For Kepler &tm; or newer fully supported devices.\n *\n * @param device                            The identifier of the target device\n * @param isPending                         Reference in which to return the pending status\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a isPending was populated\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a isPending is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device doesn't support this feature\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetRetiredPagesPendingStatus(nvmlDevice_t device, nvmlEnableState_t *isPending);\n\n/**\n * Get number of remapped rows. The number of rows reported will be based on\n * the cause of the remapping. isPending indicates whether or not there are\n * pending remappings. A reset will be required to actually remap the row.\n * failureOccurred will be set if a row remapping ever failed in the past. A\n * pending remapping won't affect future work on the GPU since\n * error-containment and dynamic page blacklisting will take care of that.\n *\n * @note On MIG-enabled GPUs with active instances, querying the number of\n * remapped rows is not supported\n *\n * For Ampere &tm; or newer fully supported devices.\n *\n * @param device                               The identifier of the target device\n * @param corrRows                             Reference for number of rows remapped due to correctable errors\n * @param uncRows                              Reference for number of rows remapped due to uncorrectable errors\n * @param isPending                            Reference for whether or not remappings are pending\n * @param failureOccurred                      Reference that is set when a remapping has failed in the past\n *\n * @return\n *         - \\ref NVML_SUCCESS                 Upon success\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  If \\a corrRows, \\a uncRows, \\a isPending or \\a failureOccurred is invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     If MIG is enabled or if the device doesn't support this feature\n *         - \\ref NVML_ERROR_UNKNOWN           Unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetRemappedRows(nvmlDevice_t device, unsigned int *corrRows, unsigned int *uncRows,\n                                               unsigned int *isPending, unsigned int *failureOccurred);\n\n/**\n * Get the row remapper histogram. Returns the remap availability for each bank\n * on the GPU.\n *\n * @param device                               Device handle\n * @param values                               Histogram values\n *\n * @return\n *        - \\ref NVML_SUCCESS                  On success\n *        - \\ref NVML_ERROR_UNKNOWN            On any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetRowRemapperHistogram(nvmlDevice_t device, nvmlRowRemapperHistogramValues_t *values);\n\n/**\n * Get architecture for device\n *\n * @param device                               The identifier of the target device\n * @param arch                                 Reference where architecture is returned, if call successful.\n *                                             Set to NVML_DEVICE_ARCH_* upon success\n *\n * @return\n *         - \\ref NVML_SUCCESS                 Upon success\n *         - \\ref NVML_ERROR_UNINITIALIZED     If library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  If \\a device or \\a arch (output refererence) are invalid\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetArchitecture(nvmlDevice_t device, nvmlDeviceArchitecture_t *arch);\n\n/**\n * Retrieves the frequency monitor fault status for the device.\n *\n * For Ampere &tm; or newer fully supported devices.\n * Requires root user.\n *\n * See \\ref nvmlClkMonStatus_t for details on decoding the status output.\n *\n * @param device                               The identifier of the target device\n * @param status                               Reference in which to return the clkmon fault status\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a status has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a status is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support this feature\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n *\n * @see nvmlDeviceGetClkMonStatus()\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetClkMonStatus(nvmlDevice_t device, nvmlClkMonStatus_t *status);\n\n/**\n * Retrieves the current utilization and process ID\n *\n * For Maxwell &tm; or newer fully supported devices.\n *\n * Reads recent utilization of GPU SM (3D/Compute), framebuffer, video encoder, and video decoder for processes running.\n * Utilization values are returned as an array of utilization sample structures in the caller-supplied buffer pointed at\n * by \\a utilization. One utilization sample structure is returned per process running, that had some non-zero utilization\n * during the last sample period. It includes the CPU timestamp at which  the samples were recorded. Individual utilization values\n * are returned as \"unsigned int\" values. If no valid sample entries are found since the lastSeenTimeStamp, NVML_ERROR_NOT_FOUND\n * is returned.\n *\n * To read utilization values, first determine the size of buffer required to hold the samples by invoking the function with\n * \\a utilization set to NULL. The caller should allocate a buffer of size\n * processSamplesCount * sizeof(nvmlProcessUtilizationSample_t). Invoke the function again with the allocated buffer passed\n * in \\a utilization, and \\a processSamplesCount set to the number of entries the buffer is sized for.\n *\n * On successful return, the function updates \\a processSamplesCount with the number of process utilization sample\n * structures that were actually written. This may differ from a previously read value as instances are created or\n * destroyed.\n *\n * lastSeenTimeStamp represents the CPU timestamp in microseconds at which utilization samples were last read. Set it to 0\n * to read utilization based on all the samples maintained by the driver's internal sample buffer. Set lastSeenTimeStamp\n * to a timeStamp retrieved from a previous query to read utilization since the previous query.\n *\n * @note On MIG-enabled GPUs, querying process utilization is not currently supported.\n *\n * @param device                    The identifier of the target device\n * @param utilization               Pointer to caller-supplied buffer in which guest process utilization samples are returned\n * @param processSamplesCount       Pointer to caller-supplied array size, and returns number of processes running\n * @param lastSeenTimeStamp         Return only samples with timestamp greater than lastSeenTimeStamp.\n\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a utilization has been populated\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid, \\a utilization is NULL, or \\a samplingPeriodUs is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support this feature\n *         - \\ref NVML_ERROR_NOT_FOUND         if sample entries are not found\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetProcessUtilization(nvmlDevice_t device, nvmlProcessUtilizationSample_t *utilization,\n                                              unsigned int *processSamplesCount, unsigned long long lastSeenTimeStamp);\n\n/**\n * Retrieves the recent utilization and process ID for all running processes\n *\n * For Maxwell &tm; or newer fully supported devices.\n *\n * Reads recent utilization of GPU SM (3D/Compute), framebuffer, video encoder, and video decoder, jpeg decoder, OFA (Optical Flow Accelerator)\n * for all running processes. Utilization values are returned as an array of utilization sample structures in the caller-supplied buffer pointed at\n * by \\a procesesUtilInfo->procUtilArray. One utilization sample structure is returned per process running, that had some non-zero utilization\n * during the last sample period. It includes the CPU timestamp at which  the samples were recorded. Individual utilization values\n * are returned as \"unsigned int\" values.\n *\n * The caller should allocate a buffer of size processSamplesCount * sizeof(nvmlProcessUtilizationInfo_t). If the buffer is too small, the API will\n * return \\a NVML_ERROR_INSUFFICIENT_SIZE, with the recommended minimal buffer size at \\a procesesUtilInfo->processSamplesCount. The caller should\n * invoke the function again with the allocated buffer passed in \\a procesesUtilInfo->procUtilArray, and \\a procesesUtilInfo->processSamplesCount\n * set to the number no less than the recommended value by the previous API return.\n *\n * On successful return, the function updates \\a procesesUtilInfo->processSamplesCount with the number of process utilization info structures\n * that were actually written. This may differ from a previously read value as instances are created or destroyed.\n *\n * \\a procesesUtilInfo->lastSeenTimeStamp represents the CPU timestamp in microseconds at which utilization samples were last read. Set it to 0\n * to read utilization based on all the samples maintained by the driver's internal sample buffer. Set \\a procesesUtilInfo->lastSeenTimeStamp\n * to a timeStamp retrieved from a previous query to read utilization since the previous query.\n *\n * \\a procesesUtilInfo->version is the version number of the structure nvmlProcessesUtilizationInfo_t, the caller should set the correct version\n * number to retrieve the specific version of processes utilization information.\n *\n * @note On MIG-enabled GPUs, querying process utilization is not currently supported.\n *\n * @param device                    The identifier of the target device\n * @param procesesUtilInfo          Pointer to the caller-provided structure of nvmlProcessesUtilizationInfo_t.\n\n * @return\n *         - \\ref NVML_SUCCESS                          If \\a procesesUtilInfo->procUtilArray has been populated\n *         - \\ref NVML_ERROR_UNINITIALIZED              If the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT           If \\a device is invalid, or \\a procesesUtilInfo is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED              If the device does not support this feature\n *         - \\ref NVML_ERROR_NOT_FOUND                  If sample entries are not found\n *         - \\ref NVML_ERROR_GPU_IS_LOST                If the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH  If the version of \\a procesesUtilInfo is invalid\n *         - \\ref NVML_ERROR_INSUFFICIENT_SIZE          If \\a procesesUtilInfo->procUtilArray is NULL, or the buffer size of procesesUtilInfo->procUtilArray is too small.\n *                                                      The caller should check the minimul array size from the returned procesesUtilInfo->processSamplesCount, and call\n *                                                      the function again with a buffer no smaller than procesesUtilInfo->processSamplesCount * sizeof(nvmlProcessUtilizationInfo_t)\n *         - \\ref NVML_ERROR_UNKNOWN                    On any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetProcessesUtilizationInfo(nvmlDevice_t device, nvmlProcessesUtilizationInfo_t *procesesUtilInfo);\n\n/**\n * Get platform information of this device.\n *\n * %BLACKWELL_OR_NEWER%\n *\n * See \\ref nvmlPlatformInfo_v2_t for more information on the struct.\n *\n * @param device                               The identifier of the target device\n * @param platformInfo                         Pointer to the caller-provided structure of nvmlPlatformInfo_t.\n *\n * @return\n *         - \\ref NVML_SUCCESS                          If \\a platformInfo has been retrieved\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT           If \\a device is invalid or \\a platformInfo is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED              If the device does not support this feature\n *         - \\ref NVML_ERROR_MEMORY                     if system memory is insufficient\n *         - \\ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH  If the version of \\a nvmlPlatformInfo_t is invalid\n *         - \\ref NVML_ERROR_UNKNOWN                    On any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetPlatformInfo(nvmlDevice_t device, nvmlPlatformInfo_t *platformInfo);\n\n/**\n * Retrieves the Per Device Identifier (PDI) associated with this device.\n *\n * For Pascal &tm; or newer fully supported devices.\n *\n * See \\ref nvmlPdi_v1_t for more information on the struct.\n *\n * @param[in]  device                              The identifier of the target device\n * @param[out] pdi                                 Reference to the caller-provided structure to return the GPU PDI\n *\n * @return\n *         - \\ref NVML_SUCCESS                          if \\a pdi has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED              if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT           if \\a device is invalid, or \\a pdi is NULL\n *         - \\ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH  if the version is invalid/unsupported\n *         - \\ref NVML_ERROR_NOT_SUPPORTED              if the device does not support this feature\n *         - \\ref NVML_ERROR_GPU_IS_LOST                if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN                    on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetPdi(nvmlDevice_t device, nvmlPdi_t *pdi);\n\n/** @} */\n\n/***************************************************************************************************/\n/** @defgroup nvmlUnitCommands Unit Commands\n *  This chapter describes NVML operations that change the state of the unit. For S-class products.\n *  Each of these requires root/admin access. Non-admin users will see an NVML_ERROR_NO_PERMISSION\n *  error code when invoking any of these methods.\n *  @{\n */\n/***************************************************************************************************/\n\n/**\n * Set the LED state for the unit. The LED can be either green (0) or amber (1).\n *\n * For S-class products.\n * Requires root/admin permissions.\n *\n * This operation takes effect immediately.\n *\n *\n * <b>Current S-Class products don't provide unique LEDs for each unit. As such, both front\n * and back LEDs will be toggled in unison regardless of which unit is specified with this command.</b>\n *\n * See \\ref nvmlLedColor_t for available colors.\n *\n * @param unit                                 The identifier of the target unit\n * @param color                                The target LED color\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if the LED color has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a unit or \\a color is invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if this is not an S-class product\n *         - \\ref NVML_ERROR_NO_PERMISSION     if the user doesn't have permission to perform this operation\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n *\n * @see nvmlUnitGetLedState()\n */\nnvmlReturn_t DECLDIR nvmlUnitSetLedState(nvmlUnit_t unit, nvmlLedColor_t color);\n\n/** @} */\n\n/***************************************************************************************************/\n/** @defgroup nvmlDeviceCommands Device Commands\n *  This chapter describes NVML operations that change the state of the device.\n *  Each of these requires root/admin access. Non-admin users will see an NVML_ERROR_NO_PERMISSION\n *  error code when invoking any of these methods.\n *  @{\n */\n/***************************************************************************************************/\n\n/**\n * Set the persistence mode for the device.\n *\n * For all products.\n * For Linux only.\n * Requires root/admin permissions.\n *\n * The persistence mode determines whether the GPU driver software is torn down after the last client\n * exits.\n *\n * This operation takes effect immediately. It is not persistent across reboots. After each reboot the\n * persistence mode is reset to \"Disabled\".\n *\n * See \\ref nvmlEnableState_t for available modes.\n *\n * After calling this API with mode set to NVML_FEATURE_DISABLED on a device that has its own NUMA\n * memory, the given device handle will no longer be valid, and to continue to interact with this\n * device, a new handle should be obtained from one of the nvmlDeviceGetHandleBy*() APIs. This\n * limitation is currently only applicable to devices that have a coherent NVLink connection to\n * system memory.\n *\n * @param device                               The identifier of the target device\n * @param mode                                 The target persistence mode\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if the persistence mode was set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a mode is invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support this feature\n *         - \\ref NVML_ERROR_NO_PERMISSION     if the user doesn't have permission to perform this operation\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n *\n * @see nvmlDeviceGetPersistenceMode()\n */\nnvmlReturn_t DECLDIR nvmlDeviceSetPersistenceMode(nvmlDevice_t device, nvmlEnableState_t mode);\n\n/**\n * Set the compute mode for the device.\n *\n * For all products.\n * Requires root/admin permissions.\n *\n * The compute mode determines whether a GPU can be used for compute operations and whether it can\n * be shared across contexts.\n *\n * This operation takes effect immediately. Under Linux it is not persistent across reboots and\n * always resets to \"Default\". Under windows it is persistent.\n *\n * Under windows compute mode may only be set to DEFAULT when running in WDDM\n *\n * @note On MIG-enabled GPUs, compute mode would be set to DEFAULT and changing it is not supported.\n *\n * See \\ref nvmlComputeMode_t for details on available compute modes.\n *\n * @param device                               The identifier of the target device\n * @param mode                                 The target compute mode\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if the compute mode was set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a mode is invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support this feature\n *         - \\ref NVML_ERROR_NO_PERMISSION     if the user doesn't have permission to perform this operation\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n *\n * @see nvmlDeviceGetComputeMode()\n */\nnvmlReturn_t DECLDIR nvmlDeviceSetComputeMode(nvmlDevice_t device, nvmlComputeMode_t mode);\n\n/**\n * Set the ECC mode for the device.\n *\n * For Kepler &tm; or newer fully supported devices.\n * Only applicable to devices with ECC.\n * Requires \\a NVML_INFOROM_ECC version 1.0 or higher.\n * Requires root/admin permissions.\n *\n * The ECC mode determines whether the GPU enables its ECC support.\n *\n * This operation takes effect after the next reboot.\n *\n * See \\ref nvmlEnableState_t for details on available modes.\n *\n * @param device                               The identifier of the target device\n * @param ecc                                  The target ECC mode\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if the ECC mode was set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a ecc is invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support this feature\n *         - \\ref NVML_ERROR_NO_PERMISSION     if the user doesn't have permission to perform this operation\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n *\n * @see nvmlDeviceGetEccMode()\n */\nnvmlReturn_t DECLDIR nvmlDeviceSetEccMode(nvmlDevice_t device, nvmlEnableState_t ecc);\n\n/**\n * Clear the ECC error and other memory error counts for the device.\n *\n * For Kepler &tm; or newer fully supported devices.\n * Only applicable to devices with ECC.\n * Requires \\a NVML_INFOROM_ECC version 2.0 or higher to clear aggregate location-based ECC counts.\n * Requires \\a NVML_INFOROM_ECC version 1.0 or higher to clear all other ECC counts.\n * Requires root/admin permissions.\n * Requires ECC Mode to be enabled.\n *\n * Sets all of the specified ECC counters to 0, including both detailed and total counts.\n *\n * This operation takes effect immediately.\n *\n * See \\ref nvmlMemoryErrorType_t for details on available counter types.\n *\n * @param device                               The identifier of the target device\n * @param counterType                          Flag that indicates which type of errors should be cleared.\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if the error counts were cleared\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a counterType is invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support this feature\n *         - \\ref NVML_ERROR_NO_PERMISSION     if the user doesn't have permission to perform this operation\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n *\n * @see\n *      - nvmlDeviceGetDetailedEccErrors()\n *      - nvmlDeviceGetTotalEccErrors()\n */\nnvmlReturn_t DECLDIR nvmlDeviceClearEccErrorCounts(nvmlDevice_t device, nvmlEccCounterType_t counterType);\n\n/**\n * Set the driver model for the device.\n *\n * For Fermi &tm; or newer fully supported devices.\n * For windows only.\n * Requires root/admin permissions.\n *\n * On Windows platforms the device driver can run in either WDDM or WDM (TCC) mode. If a display is attached\n * to the device it must run in WDDM mode.\n *\n * It is possible to force the change to WDM (TCC) while the display is still attached with a force flag (nvmlFlagForce).\n * This should only be done if the host is subsequently powered down and the display is detached from the device\n * before the next reboot.\n *\n * This operation takes effect after the next reboot.\n *\n * Windows driver model may only be set to WDDM when running in DEFAULT compute mode.\n *\n * Change driver model to WDDM is not supported when GPU doesn't support graphics acceleration or\n * will not support it after reboot. See \\ref nvmlDeviceSetGpuOperationMode.\n *\n * See \\ref nvmlDriverModel_t for details on available driver models.\n * See \\ref nvmlFlagDefault and \\ref nvmlFlagForce\n *\n * @param device                               The identifier of the target device\n * @param driverModel                          The target driver model\n * @param flags                                Flags that change the default behavior\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if the driver model has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a driverModel is invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the platform is not windows or the device does not support this feature\n *         - \\ref NVML_ERROR_NO_PERMISSION     if the user doesn't have permission to perform this operation\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n *\n * @see nvmlDeviceGetDriverModel()\n */\nnvmlReturn_t DECLDIR nvmlDeviceSetDriverModel(nvmlDevice_t device, nvmlDriverModel_t driverModel, unsigned int flags);\n\ntypedef enum nvmlClockLimitId_enum {\n    NVML_CLOCK_LIMIT_ID_RANGE_START = 0xffffff00,\n    NVML_CLOCK_LIMIT_ID_TDP,\n    NVML_CLOCK_LIMIT_ID_UNLIMITED\n} nvmlClockLimitId_t;\n\n/**\n * Set clocks that device will lock to.\n *\n * Sets the clocks that the device will be running at to the value in the range of minGpuClockMHz to maxGpuClockMHz.\n *\n * Can be used as a setting to request constant performance.\n *\n * This can be called with a pair of integer clock frequencies in MHz, or a pair of /ref nvmlClockLimitId_t values.\n * See the table below for valid combinations of these values.\n *\n * minGpuClock | maxGpuClock | Effect\n * ------------+-------------+--------------------------------------------------\n *     tdp     |     tdp     | Lock clock to TDP\n *  unlimited  |     tdp     | Upper bound is TDP but clock may drift below this\n *     tdp     |  unlimited  | Lower bound is TDP but clock may boost above this\n *  unlimited  |  unlimited  | Unlocked (== nvmlDeviceResetGpuLockedClocks)\n *\n * If one arg takes one of these values, the other must be one of these values as\n * well. Mixed numeric and symbolic calls return NVML_ERROR_INVALID_ARGUMENT.\n *\n * Requires root/admin permissions.\n *\n * After system reboot or driver reload GPU clocks go back to their default value.\n * See \\ref nvmlDeviceResetGpuLockedClocks.\n *\n * For Volta &tm; or newer fully supported devices.\n *\n * @param device                               The identifier of the target device\n * @param minGpuClockMHz                       Requested minimum gpu clock in MHz\n * @param maxGpuClockMHz                       Requested maximum gpu clock in MHz\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if new settings were successfully set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a minGpuClockMHz and \\a maxGpuClockMHz\n *                                                 is not a valid clock combination\n *         - \\ref NVML_ERROR_NO_PERMISSION     if the user doesn't have permission to perform this operation\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device doesn't support this feature\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceSetGpuLockedClocks(nvmlDevice_t device, unsigned int minGpuClockMHz, unsigned int maxGpuClockMHz);\n\n/**\n * Resets the gpu clock to the default value\n *\n * This is the gpu clock that will be used after system reboot or driver reload.\n * Default values are idle clocks.\n *\n * @see nvmlDeviceSetGpuLockedClocks\n *\n * For Volta &tm; or newer fully supported devices.\n *\n * @param device                               The identifier of the target device\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if new settings were successfully set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support this feature\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceResetGpuLockedClocks(nvmlDevice_t device);\n\n/**\n * Set memory clocks that device will lock to.\n *\n * Sets the device's memory clocks to the value in the range of minMemClockMHz to maxMemClockMHz.\n *\n * Can be used as a setting to request constant performance.\n *\n * Requires root/admin permissions.\n *\n * After system reboot or driver reload memory clocks go back to their default value.\n * See \\ref nvmlDeviceResetMemoryLockedClocks.\n *\n * For Ampere &tm; or newer fully supported devices.\n *\n * @param device                               The identifier of the target device\n * @param minMemClockMHz                       Requested minimum memory clock in MHz\n * @param maxMemClockMHz                       Requested maximum memory clock in MHz\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if new settings were successfully set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a minGpuClockMHz and \\a maxGpuClockMHz\n *                                                 is not a valid clock combination\n *         - \\ref NVML_ERROR_NO_PERMISSION     if the user doesn't have permission to perform this operation\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device doesn't support this feature\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceSetMemoryLockedClocks(nvmlDevice_t device, unsigned int minMemClockMHz, unsigned int maxMemClockMHz);\n\n/**\n * Resets the memory clock to the default value\n *\n * This is the memory clock that will be used after system reboot or driver reload.\n * Default values are idle clocks.\n *\n * @see nvmlDeviceSetMemoryLockedClocks\n *\n * For Ampere &tm; or newer fully supported devices.\n *\n * @param device                               The identifier of the target device\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if new settings were successfully set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support this feature\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceResetMemoryLockedClocks(nvmlDevice_t device);\n\n/**\n * @deprecated Applications clocks are deprecated and will be removed in CUDA 14.0.\n *\n * Please use \\ref nvmlDeviceSetMemoryLockedClocks for Memory Clocks and\n * \\ref nvmlDeviceSetGpuLockedClocks for Graphics Clocks.\n */\nDEPRECATED(13.0) nvmlReturn_t DECLDIR nvmlDeviceSetApplicationsClocks(nvmlDevice_t device, unsigned int memClockMHz, unsigned int graphicsClockMHz);\n\n/**\n * @deprecated Applications clocks are deprecated and will be removed in CUDA 14.0.\n *\n * Please use \\ref nvmlDeviceResetMemoryLockedClocks for Memory Clocks and\n * \\ref nvmlDeviceResetGpuLockedClocks for Graphics Clocks.\n */\nDEPRECATED(13.0) nvmlReturn_t DECLDIR nvmlDeviceResetApplicationsClocks(nvmlDevice_t device);\n\n/**\n * Try to set the current state of Auto Boosted clocks on a device.\n *\n * For Kepler &tm; or newer fully supported devices.\n *\n * Auto Boosted clocks are enabled by default on some hardware, allowing the GPU to run at higher clock rates\n * to maximize performance as thermal limits allow. Auto Boosted clocks should be disabled if fixed clock\n * rates are desired.\n *\n * Non-root users may use this API by default but can be restricted by root from using this API by calling\n * \\ref nvmlDeviceSetAPIRestriction with apiType=NVML_RESTRICTED_API_SET_AUTO_BOOSTED_CLOCKS.\n * Note: Persistence Mode is required to modify current Auto Boost settings, therefore, it must be enabled.\n *\n * On Pascal and newer hardware, Auto Boosted clocks are controlled through application clocks.\n * Use \\ref nvmlDeviceSetApplicationsClocks and \\ref nvmlDeviceResetApplicationsClocks to control Auto Boost\n * behavior.\n *\n * @param device                               The identifier of the target device\n * @param enabled                              What state to try to set Auto Boosted clocks of the target device to\n *\n * @return\n *         - \\ref NVML_SUCCESS                 If the Auto Boosted clocks were successfully set to the state specified by \\a enabled\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support Auto Boosted clocks\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n *\n */\nnvmlReturn_t DECLDIR nvmlDeviceSetAutoBoostedClocksEnabled(nvmlDevice_t device, nvmlEnableState_t enabled);\n\n/**\n * Try to set the default state of Auto Boosted clocks on a device. This is the default state that Auto Boosted clocks will\n * return to when no compute running processes (e.g. CUDA application which have an active context) are running\n *\n * For Kepler &tm; or newer non-GeForce fully supported devices and Maxwell or newer GeForce devices.\n * Requires root/admin permissions.\n *\n * Auto Boosted clocks are enabled by default on some hardware, allowing the GPU to run at higher clock rates\n * to maximize performance as thermal limits allow. Auto Boosted clocks should be disabled if fixed clock\n * rates are desired.\n *\n * On Pascal and newer hardware, Auto Boosted clocks are controlled through application clocks.\n * Use \\ref nvmlDeviceSetApplicationsClocks and \\ref nvmlDeviceResetApplicationsClocks to control Auto Boost\n * behavior.\n *\n * @param device                               The identifier of the target device\n * @param enabled                              What state to try to set default Auto Boosted clocks of the target device to\n * @param flags                                Flags that change the default behavior. Currently Unused.\n *\n * @return\n *         - \\ref NVML_SUCCESS                 If the Auto Boosted clock's default state was successfully set to the state specified by \\a enabled\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_NO_PERMISSION     If the calling user does not have permission to change Auto Boosted clock's default state.\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support Auto Boosted clocks\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n *\n */\nnvmlReturn_t DECLDIR nvmlDeviceSetDefaultAutoBoostedClocksEnabled(nvmlDevice_t device, nvmlEnableState_t enabled, unsigned int flags);\n\n/**\n * Sets the speed of the fan control policy to default.\n *\n * For all cuda-capable discrete products with fans\n *\n * @param device                        The identifier of the target device\n * @param fan                           The index of the fan, starting at zero\n *\n * return\n *         NVML_SUCCESS                 if speed has been adjusted\n *         NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         NVML_ERROR_INVALID_ARGUMENT  if device is invalid\n *         NVML_ERROR_NOT_SUPPORTED     if the device does not support this\n *                                      (doesn't have fans)\n *         NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceSetDefaultFanSpeed_v2(nvmlDevice_t device, unsigned int fan);\n\n/**\n * Sets current fan control policy.\n *\n * For Maxwell &tm; or newer fully supported devices.\n *\n * Requires privileged user.\n *\n * For all cuda-capable discrete products with fans\n *\n * device                               The identifier of the target \\a device\n * policy                               The fan control \\a policy to set\n *\n * return\n *         NVML_SUCCESS                 if \\a policy has been set\n *         NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a policy is null or the \\a fan given doesn't reference\n *                                            a fan that exists.\n *         NVML_ERROR_NOT_SUPPORTED     if the \\a device is older than Maxwell\n *         NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceSetFanControlPolicy(nvmlDevice_t device, unsigned int fan,\n                                                   nvmlFanControlPolicy_t policy);\n\n/**\n * Sets the temperature threshold for the GPU with the specified threshold type in degrees C.\n *\n * For Maxwell &tm; or newer fully supported devices.\n *\n * See \\ref nvmlTemperatureThresholds_t for details on available temperature thresholds.\n *\n * @param device                               The identifier of the target device\n * @param thresholdType                        The type of threshold value to be set\n * @param temp                                 Reference which hold the value to be set\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a temp has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid, \\a thresholdType is invalid or \\a temp is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not have a temperature sensor or is unsupported\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceSetTemperatureThreshold(nvmlDevice_t device, nvmlTemperatureThresholds_t thresholdType, int *temp);\n\n/**\n * Set new power limit of this device.\n *\n * For Kepler &tm; or newer fully supported devices.\n * Requires root/admin permissions.\n *\n * See \\ref nvmlDeviceGetPowerManagementLimitConstraints to check the allowed ranges of values.\n *\n * \\note Limit is not persistent across reboots or driver unloads.\n * Enable persistent mode to prevent driver from unloading when no application is using the device.\n *\n * @param device                               The identifier of the target device\n * @param limit                                Power management limit in milliwatts to set\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a limit has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a defaultLimit is out of range\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support this feature\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n *\n * @see nvmlDeviceGetPowerManagementLimitConstraints\n * @see nvmlDeviceGetPowerManagementDefaultLimit\n */\nnvmlReturn_t DECLDIR nvmlDeviceSetPowerManagementLimit(nvmlDevice_t device, unsigned int limit);\n\n/**\n * Sets new GOM. See \\a nvmlGpuOperationMode_t for details.\n *\n * For GK110 M-class and X-class Tesla &tm; products from the Kepler family.\n * Modes \\ref NVML_GOM_LOW_DP and \\ref NVML_GOM_ALL_ON are supported on fully supported GeForce products.\n * Not supported on Quadro &reg; and Tesla &tm; C-class products.\n * Requires root/admin permissions.\n *\n * Changing GOMs requires a reboot.\n * The reboot requirement might be removed in the future.\n *\n * Compute only GOMs don't support graphics acceleration. Under windows switching to these GOMs when\n * pending driver model is WDDM is not supported. See \\ref nvmlDeviceSetDriverModel.\n *\n * @param device                               The identifier of the target device\n * @param mode                                 Target GOM\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a mode has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a mode incorrect\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support GOM or specific mode\n *         - \\ref NVML_ERROR_NO_PERMISSION     if the user doesn't have permission to perform this operation\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n *\n * @see nvmlGpuOperationMode_t\n * @see nvmlDeviceGetGpuOperationMode\n */\nnvmlReturn_t DECLDIR nvmlDeviceSetGpuOperationMode(nvmlDevice_t device, nvmlGpuOperationMode_t mode);\n\n/**\n * Changes the root/admin restructions on certain APIs. See \\a nvmlRestrictedAPI_t for the list of supported APIs.\n * This method can be used by a root/admin user to give non-root/admin access to certain otherwise-restricted APIs.\n * The new setting lasts for the lifetime of the NVIDIA driver; it is not persistent. See \\a nvmlDeviceGetAPIRestriction\n * to query the current restriction settings.\n *\n * For Kepler &tm; or newer fully supported devices.\n * Requires root/admin permissions.\n *\n * @param device                               The identifier of the target device\n * @param apiType                              Target API type for this operation\n * @param isRestricted                         The target restriction\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a isRestricted has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a apiType incorrect\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support changing API restrictions or the device does not support\n *                                                 the feature that api restrictions are being set for (E.G. Enabling/disabling auto\n *                                                 boosted clocks is not supported by the device)\n *         - \\ref NVML_ERROR_NO_PERMISSION     if the user doesn't have permission to perform this operation\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n *\n * @see nvmlRestrictedAPI_t\n */\nnvmlReturn_t DECLDIR nvmlDeviceSetAPIRestriction(nvmlDevice_t device, nvmlRestrictedAPI_t apiType, nvmlEnableState_t isRestricted);\n\n/**\n * Sets the speed of a specified fan.\n *\n * WARNING: This function changes the fan control policy to manual. It means that YOU have to monitor\n *          the temperature and adjust the fan speed accordingly.\n *          If you set the fan speed too low you can burn your GPU!\n *          Use nvmlDeviceSetDefaultFanSpeed_v2 to restore default control policy.\n *\n * For all cuda-capable discrete products with fans that are Maxwell or Newer.\n *\n * device                                The identifier of the target device\n * fan                                   The index of the fan, starting at zero\n * speed                                 The target speed of the fan [0-100] in % of max speed\n *\n * return\n *        NVML_SUCCESS                   if the fan speed has been set\n *        NVML_ERROR_UNINITIALIZED       if the library has not been successfully initialized\n *        NVML_ERROR_INVALID_ARGUMENT    if the device is not valid, or the speed is outside acceptable ranges,\n *                                              or if the fan index doesn't reference an actual fan.\n *        NVML_ERROR_NOT_SUPPORTED       if the device is older than Maxwell.\n *        NVML_ERROR_UNKNOWN             if there was an unexpected error.\n */\nnvmlReturn_t DECLDIR nvmlDeviceSetFanSpeed_v2(nvmlDevice_t device, unsigned int fan, unsigned int speed);\n\n/**\n * @deprecated Will be deprecated in a future release. Use \\ref nvmlDeviceSetClockOffsets instead. It works\n *             on Maxwell onwards GPU architectures.\n *\n * Set the GPCCLK VF offset value\n * @param[in]   device                         The identifier of the target device\n * @param[in]   offset                         The GPCCLK VF offset value to set\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a offset has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a offset is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support this feature\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nDEPRECATED(13.0) nvmlReturn_t DECLDIR nvmlDeviceSetGpcClkVfOffset(nvmlDevice_t device, int offset);\n\n/**\n * @deprecated Will be deprecated in a future release. Use \\ref nvmlDeviceSetClockOffsets instead. It works\n *             on Maxwell onwards GPU architectures.\n *\n * Set the MemClk (Memory Clock) VF offset value. It requires elevated privileges.\n * @param[in]   device                         The identifier of the target device\n * @param[in]   offset                         The MemClk VF offset value to set\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a offset has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a offset is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support this feature\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nDEPRECATED(13.0) nvmlReturn_t DECLDIR nvmlDeviceSetMemClkVfOffset(nvmlDevice_t device, int offset);\n\n/**\n * @}\n */\n\n/** @addtogroup nvmlAccountingStats\n *  @{\n */\n\n/**\n * Enables or disables per process accounting.\n *\n * For Kepler &tm; or newer fully supported devices.\n * Requires root/admin permissions.\n *\n * @note This setting is not persistent and will default to disabled after driver unloads.\n *       Enable persistence mode to be sure the setting doesn't switch off to disabled.\n *\n * @note Enabling accounting mode has no negative impact on the GPU performance.\n *\n * @note Disabling accounting clears all accounting pids information.\n *\n * @note On MIG-enabled GPUs, accounting mode would be set to DISABLED and changing it is not supported.\n *\n * See \\ref nvmlDeviceGetAccountingMode\n * See \\ref nvmlDeviceGetAccountingStats\n * See \\ref nvmlDeviceClearAccountingPids\n *\n * @param device                               The identifier of the target device\n * @param mode                                 The target accounting mode\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if the new mode has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device or \\a mode are invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device doesn't support this feature\n *         - \\ref NVML_ERROR_NO_PERMISSION     if the user doesn't have permission to perform this operation\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceSetAccountingMode(nvmlDevice_t device, nvmlEnableState_t mode);\n\n/**\n * Clears accounting information about all processes that have already terminated.\n *\n * For Kepler &tm; or newer fully supported devices.\n * Requires root/admin permissions.\n *\n * See \\ref nvmlDeviceGetAccountingMode\n * See \\ref nvmlDeviceGetAccountingStats\n * See \\ref nvmlDeviceSetAccountingMode\n *\n * @param device                               The identifier of the target device\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if accounting information has been cleared\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device are invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device doesn't support this feature\n *         - \\ref NVML_ERROR_NO_PERMISSION     if the user doesn't have permission to perform this operation\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceClearAccountingPids(nvmlDevice_t device);\n\n/** @} */ // @addtogroup nvmlAccountingStats\n\n/***************************************************************************************************/\n/** @defgroup NvLink NvLink Methods\n * This chapter describes methods that NVML can perform on NVLINK enabled devices.\n *  @{\n */\n/***************************************************************************************************/\n\n#define NVML_NVLINK_BER_MANTISSA_SHIFT 8\n#define NVML_NVLINK_BER_MANTISSA_WIDTH 0xf\n\n#define NVML_NVLINK_BER_EXP_SHIFT 0\n#define NVML_NVLINK_BER_EXP_WIDTH 0xff\n\n/**\n * Nvlink Error counter BER can be obtained using the below macros\n * Ex - NVML_NVLINK_ERROR_COUNTER_BER_GET(var, BER_MANTISSA)\n */\n#define NVML_NVLINK_ERROR_COUNTER_BER_GET(var, type) \\\n    (((var) >> NVML_NVLINK_##type##_SHIFT) &         \\\n    (NVML_NVLINK_##type##_WIDTH))                    \\\n\n/*\n * NVML_FI_DEV_NVLINK_GET_STATE state enums\n */\n#define NVML_NVLINK_STATE_INACTIVE 0x0\n#define NVML_NVLINK_STATE_ACTIVE   0x1\n#define NVML_NVLINK_STATE_SLEEP    0x2\n\n#define NVML_NVLINK_TOTAL_SUPPORTED_BW_MODES 23\n\ntypedef struct\n{\n    unsigned int version;\n    unsigned char bwModes[NVML_NVLINK_TOTAL_SUPPORTED_BW_MODES];\n    unsigned char totalBwModes;\n} nvmlNvlinkSupportedBwModes_v1_t;\ntypedef nvmlNvlinkSupportedBwModes_v1_t nvmlNvlinkSupportedBwModes_t;\n#define nvmlNvlinkSupportedBwModes_v1 NVML_STRUCT_VERSION(NvlinkSupportedBwModes, 1)\n\ntypedef struct\n{\n    unsigned int version;\n    unsigned int bIsBest;\n    unsigned char bwMode;\n} nvmlNvlinkGetBwMode_v1_t;\ntypedef nvmlNvlinkGetBwMode_v1_t nvmlNvlinkGetBwMode_t;\n#define nvmlNvlinkGetBwMode_v1 NVML_STRUCT_VERSION(NvlinkGetBwMode, 1)\n\ntypedef struct\n{\n    unsigned int version;\n    unsigned int bSetBest;\n    unsigned char bwMode;\n} nvmlNvlinkSetBwMode_v1_t;\ntypedef nvmlNvlinkSetBwMode_v1_t nvmlNvlinkSetBwMode_t;\n#define nvmlNvlinkSetBwMode_v1 NVML_STRUCT_VERSION(NvlinkSetBwMode, 1)\n\n/**\n * Struct to represent per device NVLINK information v1\n */\ntypedef struct\n{\n    unsigned int version;              //!< IN - the API version number\n    unsigned int isNvleEnabled;        //!< OUT - NVLINK encryption enablement\n} nvmlNvLinkInfo_v1_t;\n#define nvmlNvLinkInfo_v1 NVML_STRUCT_VERSION(NvLinkInfo, 1)\n\n#define NVML_NVLINK_FIRMWARE_UCODE_TYPE_MSE        0x1\n#define NVML_NVLINK_FIRMWARE_UCODE_TYPE_NETIR      0x2\n#define NVML_NVLINK_FIRMWARE_UCODE_TYPE_NETIR_UPHY 0x3\n#define NVML_NVLINK_FIRMWARE_UCODE_TYPE_NETIR_CLN  0x4\n#define NVML_NVLINK_FIRMWARE_UCODE_TYPE_NETIR_DLN  0x5\n#define NVML_NVLINK_FIRMWARE_VERSION_LENGTH        100\n\n/**\n * Struct to represent NVLINK firmware Semantic versioning and ucode type\n */\ntypedef struct\n{\n    unsigned char ucodeType;\n    unsigned int major;\n    unsigned int minor;\n    unsigned int subMinor;\n} nvmlNvlinkFirmwareVersion_t;\n\n/**\n * Struct to represent NVLINK firmware information\n */\ntypedef struct\n{\n    nvmlNvlinkFirmwareVersion_t firmwareVersion[NVML_NVLINK_FIRMWARE_VERSION_LENGTH]; //!< OUT - NVLINK firmware version\n    unsigned int numValidEntries;                                                     //!< OUT - Number of valid firmware entries\n} nvmlNvlinkFirmwareInfo_t;\n\n/**\n * Struct to represent per device NVLINK information v2\n */\ntypedef struct\n{\n    unsigned int version;                  //!< IN - the API version number\n    unsigned int isNvleEnabled;            //!< OUT - NVLINK encryption enablement\n    nvmlNvlinkFirmwareInfo_t firmwareInfo; //!< OUT - NVLINK Firmware info\n} nvmlNvLinkInfo_v2_t;\ntypedef nvmlNvLinkInfo_v2_t nvmlNvLinkInfo_t;\n#define nvmlNvLinkInfo_v2 NVML_STRUCT_VERSION(NvLinkInfo, 2)\n\n/**\n * Retrieves the state of the device's NvLink for the link specified\n *\n * For Pascal &tm; or newer fully supported devices.\n *\n * @param device                               The identifier of the target device\n * @param link                                 Specifies the NvLink link to be queried\n * @param isActive                             \\a nvmlEnableState_t where NVML_FEATURE_ENABLED indicates that\n *                                             the link is active and NVML_FEATURE_DISABLED indicates it\n *                                             is inactive\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a isActive has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device or \\a link is invalid or \\a isActive is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device doesn't support this feature\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetNvLinkState(nvmlDevice_t device, unsigned int link, nvmlEnableState_t *isActive);\n\n/**\n * Retrieves the version of the device's NvLink for the link specified\n *\n * For Pascal &tm; or newer fully supported devices.\n *\n * @param device                               The identifier of the target device\n * @param link                                 Specifies the NvLink link to be queried\n * @param version                              Requested NvLink version from nvmlNvlinkVersion_t\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a version has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device or \\a link is invalid or \\a version is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device doesn't support this feature\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetNvLinkVersion(nvmlDevice_t device, unsigned int link, unsigned int *version);\n\n/**\n * Retrieves the requested capability from the device's NvLink for the link specified\n * Please refer to the \\a nvmlNvLinkCapability_t structure for the specific caps that can be queried\n * The return value should be treated as a boolean.\n *\n * For Pascal &tm; or newer fully supported devices.\n *\n * @param device                               The identifier of the target device\n * @param link                                 Specifies the NvLink link to be queried\n * @param capability                           Specifies the \\a nvmlNvLinkCapability_t to be queried\n * @param capResult                            A boolean for the queried capability indicating that feature is available\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a capResult has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device, \\a link, or \\a capability is invalid or \\a capResult is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device doesn't support this feature\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetNvLinkCapability(nvmlDevice_t device, unsigned int link,\n                                                   nvmlNvLinkCapability_t capability, unsigned int *capResult);\n\n/**\n * Retrieves the PCI information for the remote node on a NvLink link\n * Note: pciSubSystemId is not filled in this function and is indeterminate\n *\n * For Pascal &tm; or newer fully supported devices.\n *\n * @param device                               The identifier of the target device\n * @param link                                 Specifies the NvLink link to be queried\n * @param pci                                  \\a nvmlPciInfo_t of the remote node for the specified link\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a pci has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device or \\a link is invalid or \\a pci is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device doesn't support this feature\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetNvLinkRemotePciInfo_v2(nvmlDevice_t device, unsigned int link, nvmlPciInfo_t *pci);\n\n/**\n * Retrieves the specified error counter value\n * Please refer to \\a nvmlNvLinkErrorCounter_t for error counters that are available\n *\n * For Pascal &tm; or newer fully supported devices.\n *\n * @param device                               The identifier of the target device\n * @param link                                 Specifies the NvLink link to be queried\n * @param counter                              Specifies the NvLink counter to be queried\n * @param counterValue                         Returned counter value\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a counter has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device, \\a link, or \\a counter is invalid or \\a counterValue is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device doesn't support this feature\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetNvLinkErrorCounter(nvmlDevice_t device, unsigned int link,\n                                                     nvmlNvLinkErrorCounter_t counter, unsigned long long *counterValue);\n\n/**\n * Resets all error counters to zero\n * Please refer to \\a nvmlNvLinkErrorCounter_t for the list of error counters that are reset\n *\n * For Pascal &tm; or newer fully supported devices.\n *\n * @param device                               The identifier of the target device\n * @param link                                 Specifies the NvLink link to be queried\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if the reset is successful\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device or \\a link is invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device doesn't support this feature\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceResetNvLinkErrorCounters(nvmlDevice_t device, unsigned int link);\n\n/**\n * @deprecated Setting utilization counter control is no longer supported.\n *\n * Set the NVLINK utilization counter control information for the specified counter, 0 or 1.\n * Please refer to \\a nvmlNvLinkUtilizationControl_t for the structure definition.  Performs a reset\n * of the counters if the reset parameter is non-zero.\n *\n * For Pascal &tm; or newer fully supported devices.\n *\n * @param device                               The identifier of the target device\n * @param counter                              Specifies the counter that should be set (0 or 1).\n * @param link                                 Specifies the NvLink link to be queried\n * @param control                              A reference to the \\a nvmlNvLinkUtilizationControl_t to set\n * @param reset                                Resets the counters on set if non-zero\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if the control has been set successfully\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device, \\a counter, \\a link, or \\a control is invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device doesn't support this feature\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nDEPRECATED(13.0) nvmlReturn_t DECLDIR nvmlDeviceSetNvLinkUtilizationControl(nvmlDevice_t device, unsigned int link, unsigned int counter,\n                                                           nvmlNvLinkUtilizationControl_t *control, unsigned int reset);\n\n/**\n * @deprecated Getting utilization counter control is no longer supported.\n *\n * Get the NVLINK utilization counter control information for the specified counter, 0 or 1.\n * Please refer to \\a nvmlNvLinkUtilizationControl_t for the structure definition\n *\n * For Pascal &tm; or newer fully supported devices.\n *\n * @param device                               The identifier of the target device\n * @param counter                              Specifies the counter that should be set (0 or 1).\n * @param link                                 Specifies the NvLink link to be queried\n * @param control                              A reference to the \\a nvmlNvLinkUtilizationControl_t to place information\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if the control has been set successfully\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device, \\a counter, \\a link, or \\a control is invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device doesn't support this feature\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nDEPRECATED(13.0) nvmlReturn_t DECLDIR nvmlDeviceGetNvLinkUtilizationControl(nvmlDevice_t device, unsigned int link, unsigned int counter,\n                                                           nvmlNvLinkUtilizationControl_t *control);\n\n\n/**\n * @deprecated Use \\ref nvmlDeviceGetFieldValues with NVML_FI_DEV_NVLINK_THROUGHPUT_* as field values instead.\n *\n * Retrieve the NVLINK utilization counter based on the current control for a specified counter.\n * In general it is good practice to use \\a nvmlDeviceSetNvLinkUtilizationControl\n *  before reading the utilization counters as they have no default state\n *\n * For Pascal &tm; or newer fully supported devices.\n *\n * @param device                               The identifier of the target device\n * @param link                                 Specifies the NvLink link to be queried\n * @param counter                              Specifies the counter that should be read (0 or 1).\n * @param rxcounter                            Receive counter return value\n * @param txcounter                            Transmit counter return value\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a rxcounter and \\a txcounter have been successfully set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device, \\a counter, or \\a link is invalid or \\a rxcounter or \\a txcounter are NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device doesn't support this feature\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nDEPRECATED(13.0) nvmlReturn_t DECLDIR nvmlDeviceGetNvLinkUtilizationCounter(nvmlDevice_t device, unsigned int link, unsigned int counter,\n                                                           unsigned long long *rxcounter, unsigned long long *txcounter);\n\n/**\n * @deprecated Freezing NVLINK utilization counters is no longer supported.\n *\n * Freeze the NVLINK utilization counters\n * Both the receive and transmit counters are operated on by this function\n *\n * For Pascal &tm; or newer fully supported devices.\n *\n * @param device                               The identifier of the target device\n * @param link                                 Specifies the NvLink link to be queried\n * @param counter                              Specifies the counter that should be frozen (0 or 1).\n * @param freeze                               NVML_FEATURE_ENABLED = freeze the receive and transmit counters\n *                                             NVML_FEATURE_DISABLED = unfreeze the receive and transmit counters\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if counters were successfully frozen or unfrozen\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device, \\a link, \\a counter, or \\a freeze is invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device doesn't support this feature\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nDEPRECATED(13.0) nvmlReturn_t DECLDIR nvmlDeviceFreezeNvLinkUtilizationCounter (nvmlDevice_t device, unsigned int link,\n                                            unsigned int counter, nvmlEnableState_t freeze);\n\n/**\n * @deprecated Resetting NVLINK utilization counters is no longer supported.\n *\n * Reset the NVLINK utilization counters\n * Both the receive and transmit counters are operated on by this function\n *\n * For Pascal &tm; or newer fully supported devices.\n *\n * @param device                               The identifier of the target device\n * @param link                                 Specifies the NvLink link to be reset\n * @param counter                              Specifies the counter that should be reset (0 or 1)\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if counters were successfully reset\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device, \\a link, or \\a counter is invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device doesn't support this feature\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nDEPRECATED(13.0) nvmlReturn_t DECLDIR nvmlDeviceResetNvLinkUtilizationCounter (nvmlDevice_t device, unsigned int link, unsigned int counter);\n\n/**\n* Get the NVLink device type of the remote device connected over the given link.\n*\n* @param device                                The device handle of the target GPU\n* @param link                                  The NVLink link index on the target GPU\n* @param pNvLinkDeviceType                     Pointer in which the output remote device type is returned\n*\n* @return\n*         - \\ref NVML_SUCCESS                  if \\a pNvLinkDeviceType has been set\n*         - \\ref NVML_ERROR_UNINITIALIZED      if the library has not been successfully initialized\n*         - \\ref NVML_ERROR_NOT_SUPPORTED      if NVLink is not supported\n*         - \\ref NVML_ERROR_INVALID_ARGUMENT   if \\a device or \\a link is invalid, or\n*                                              \\a pNvLinkDeviceType is NULL\n*         - \\ref NVML_ERROR_GPU_IS_LOST        if the target GPU has fallen off the bus or is\n*                                              otherwise inaccessible\n*         - \\ref NVML_ERROR_UNKNOWN            on any unexpected error\n*/\nnvmlReturn_t DECLDIR nvmlDeviceGetNvLinkRemoteDeviceType(nvmlDevice_t device, unsigned int link, nvmlIntNvLinkDeviceType_t *pNvLinkDeviceType);\n\n/**\n * Set NvLink Low Power Threshold for device.\n *\n * For Hopper &tm; or newer fully supported devices.\n *\n * @param device                               The identifier of the target device\n * @param info                                 Reference to \\a nvmlNvLinkPowerThres_t struct\n *                                             input parameters\n *\n * @return\n *        - \\ref NVML_SUCCESS                 if the \\a Threshold is successfully set\n *        - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *        - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a Threshold is not within range\n *        - \\ref NVML_ERROR_NOT_READY         if an internal driver setting prevents the threshold from being used\n *        - \\ref NVML_ERROR_NOT_SUPPORTED     if this query is not supported by the device\n *\n **/\nnvmlReturn_t DECLDIR nvmlDeviceSetNvLinkDeviceLowPowerThreshold(nvmlDevice_t device, nvmlNvLinkPowerThres_t *info);\n\n/**\n * Set the global nvlink bandwith mode\n *\n * @param nvlinkBwMode             nvlink bandwidth mode\n * @return\n *         - \\ref NVML_SUCCESS                on success\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT if an invalid argument is provided\n *         - \\ref NVML_ERROR_IN_USE           if P2P object exists\n *         - \\ref NVML_ERROR_NOT_SUPPORTED    if GPU is not Hopper or newer architecture.\n *         - \\ref NVML_ERROR_NO_PERMISSION    if not root user\n */\nnvmlReturn_t DECLDIR nvmlSystemSetNvlinkBwMode(unsigned int nvlinkBwMode);\n\n/**\n * Get the global nvlink bandwith mode\n *\n * @param nvlinkBwMode             reference of nvlink bandwidth mode\n * @return\n *         - \\ref NVML_SUCCESS                on success\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT if an invalid pointer is provided\n *         - \\ref NVML_ERROR_NOT_SUPPORTED    if GPU is not Hopper or newer architecture.\n *         - \\ref NVML_ERROR_NO_PERMISSION    if not root user\n */\nnvmlReturn_t DECLDIR nvmlSystemGetNvlinkBwMode(unsigned int *nvlinkBwMode);\n\n/**\n * Get the supported NvLink Reduced Bandwidth Modes of the device\n *\n * %BLACKWELL_OR_NEWER%\n *\n * @param device                                      The identifier of the target device\n * @param supportedBwMode                             Reference to \\a nvmlNvlinkSupportedBwModes_t\n *\n * @return\n *        - \\ref NVML_SUCCESS                         if the query was successful\n *        - \\ref NVML_ERROR_INVALID_ARGUMENT          if device is invalid or supportedBwMode is NULL\n *        - \\ref NVML_ERROR_NOT_SUPPORTED             if this feature is not supported by the device\n *        - \\ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH if the version specified is not supported\n **/\nnvmlReturn_t DECLDIR nvmlDeviceGetNvlinkSupportedBwModes(nvmlDevice_t device,\n                                                         nvmlNvlinkSupportedBwModes_t *supportedBwMode);\n\n/**\n * Get the NvLink Reduced Bandwidth Mode for the device\n *\n * %BLACKWELL_OR_NEWER%\n *\n * @param device                                      The identifier of the target device\n * @param getBwMode                                   Reference to \\a nvmlNvlinkGetBwMode_t\n *\n * @return\n *        - \\ref NVML_SUCCESS                         if the query was successful\n *        - \\ref NVML_ERROR_INVALID_ARGUMENT          if device is invalid or getBwMode is NULL\n *        - \\ref NVML_ERROR_NOT_SUPPORTED             if this feature is not supported by the device\n *        - \\ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH if the version specified is not supported\n **/\nnvmlReturn_t DECLDIR nvmlDeviceGetNvlinkBwMode(nvmlDevice_t device,\n                                               nvmlNvlinkGetBwMode_t *getBwMode);\n\n/**\n * Set the NvLink Reduced Bandwidth Mode for the device\n *\n * %BLACKWELL_OR_NEWER%\n *\n * @param device                                      The identifier of the target device\n * @param setBwMode                                   Reference to \\a nvmlNvlinkSetBwMode_t\n *\n * @return\n *        - \\ref NVML_SUCCESS                         if the Bandwidth mode was successfully set\n *        - \\ref NVML_ERROR_INVALID_ARGUMENT          if device is invalid or setBwMode is NULL\n *        - \\ref NVML_ERROR_NO_PERMISSION             if user does not have permission to change Bandwidth mode\n *        - \\ref NVML_ERROR_NOT_SUPPORTED             if this feature is not supported by the device\n *        - \\ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH if the version specified is not supported\n **/\nnvmlReturn_t DECLDIR nvmlDeviceSetNvlinkBwMode(nvmlDevice_t device,\n                                               nvmlNvlinkSetBwMode_t *setBwMode);\n\n/**\n * Query NVLINK information associated with this device.\n *\n * @param[in]  device                              The identifier of the target device\n * @param[out] info                                Reference to \\a nvmlNvLinkInfo_t\n *\n * @return\n *         - \\ref NVML_SUCCESS                          if query is success\n *         - \\ref NVML_ERROR_UNINITIALIZED              if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT           if \\a device is invalid, or \\a info is NULL\n *         - \\ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH  if the version is invalid/unsupported\n *         - \\ref NVML_ERROR_NOT_SUPPORTED              if the device does not support this feature\n *         - \\ref NVML_ERROR_GPU_IS_LOST                if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN                    on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetNvLinkInfo(nvmlDevice_t device, nvmlNvLinkInfo_t *info);\n\n/** @} */ // @defgroup NvLink NvLink Methods\n\n/***************************************************************************************************/\n/** @defgroup nvmlEvents Event Handling Methods\n * This chapter describes methods that NVML can perform against each device to register and wait for\n * some event to occur.\n *  @{\n */\n/***************************************************************************************************/\n\n/**\n * Create an empty set of events.\n * Event set should be freed by \\ref nvmlEventSetFree\n *\n * For Fermi &tm; or newer fully supported devices.\n * @param set                                  Reference in which to return the event handle\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if the event has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a set is NULL\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n *\n * @see nvmlEventSetFree\n */\nnvmlReturn_t DECLDIR nvmlEventSetCreate(nvmlEventSet_t *set);\n\n/**\n * Starts recording of events on a specified devices and add the events to specified \\ref nvmlEventSet_t\n *\n * For Fermi &tm; or newer fully supported devices.\n * ECC events are available only on ECC-enabled devices (see \\ref nvmlDeviceGetTotalEccErrors)\n * Power capping events are available only on Power Management enabled devices (see \\ref nvmlDeviceGetPowerManagementMode)\n *\n * For Linux only.\n *\n * This call starts recording of events on specific device.\n * All events that occurred before this call are not recorded.\n * Checking if some event occurred can be done with \\ref nvmlEventSetWait_v2\n *\n * If function reports NVML_ERROR_UNKNOWN, event set is in undefined state and should be freed.\n * If function reports NVML_ERROR_NOT_SUPPORTED, event set can still be used. None of the requested eventTypes\n *     are registered in that case.\n *\n * @param device                               The identifier of the target device\n * @param eventTypes                           Bitmask of \\ref nvmlEventType to record\n * @param set                                  Set to which add new event types\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if the event has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a eventTypes is invalid or \\a set is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the platform does not support this feature or some of requested event types\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n *\n * @see nvmlEventType\n * @see nvmlDeviceGetSupportedEventTypes\n * @see nvmlEventSetWait\n * @see nvmlEventSetFree\n */\nnvmlReturn_t DECLDIR nvmlDeviceRegisterEvents(nvmlDevice_t device, unsigned long long eventTypes, nvmlEventSet_t set);\n\n/**\n * Returns information about events supported on device\n *\n * For Fermi &tm; or newer fully supported devices.\n *\n * Events are not supported on Windows. So this function returns an empty mask in \\a eventTypes on Windows.\n *\n * @param device                               The identifier of the target device\n * @param eventTypes                           Reference in which to return bitmask of supported events\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if the eventTypes has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a eventType is NULL\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n *\n * @see nvmlEventType\n * @see nvmlDeviceRegisterEvents\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetSupportedEventTypes(nvmlDevice_t device, unsigned long long *eventTypes);\n\n/**\n * Waits on events and delivers events\n *\n * For Fermi &tm; or newer fully supported devices.\n *\n * If some events are ready to be delivered at the time of the call, function returns immediately.\n * If there are no events ready to be delivered, function sleeps till event arrives\n * but not longer than specified timeout. This function in certain conditions can return before\n * specified timeout passes (e.g. when interrupt arrives)\n *\n * On Windows, in case of Xid error, the function returns the most recent Xid error type seen by the system.\n * If there are multiple Xid errors generated before nvmlEventSetWait is invoked then the last seen Xid error\n * type is returned for all Xid error events.\n *\n * On Linux, every Xid error event would return the associated event data and other information if applicable.\n *\n * In MIG mode, if device handle is provided, the API reports all the events for the available instances,\n * only if the caller has appropriate privileges. In absence of required privileges, only the events which\n * affect all the instances (i.e. whole device) are reported.\n *\n * This API does not currently support per-instance event reporting using MIG device handles.\n *\n * @param set                                  Reference to set of events to wait on\n * @param data                                 Reference in which to return event data\n * @param timeoutms                            Maximum amount of wait time in milliseconds for registered event\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if the data has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a data is NULL\n *         - \\ref NVML_ERROR_TIMEOUT           if no event arrived in specified timeout or interrupt arrived\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if a GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n *\n * @see nvmlEventType\n * @see nvmlDeviceRegisterEvents\n */\nnvmlReturn_t DECLDIR nvmlEventSetWait_v2(nvmlEventSet_t set, nvmlEventData_t * data, unsigned int timeoutms);\n\n/**\n * Releases events in the set\n *\n * For Fermi &tm; or newer fully supported devices.\n *\n * @param set                                  Reference to events to be released\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if the event has been successfully released\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n *\n * @see nvmlDeviceRegisterEvents\n */\nnvmlReturn_t DECLDIR nvmlEventSetFree(nvmlEventSet_t set);\n\n/**\n * Create an empty set of system events.\n * Event set should be freed by \\ref nvmlSystemEventSetFree\n *\n * For Fermi &tm; or newer fully supported devices.\n * @param request                              Reference to nvmlSystemEventSetCreateRequest_t\n *\n * @return\n *         - \\ref NVML_SUCCESS                         if the event has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED             if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT          if request is NULL\n *         - \\ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH for unsupported version\n *         - \\ref NVML_ERROR_UNKNOWN                   on any unexpected error\n *\n * @see nvmlSystemEventSetFree\n */\nnvmlReturn_t DECLDIR nvmlSystemEventSetCreate(nvmlSystemEventSetCreateRequest_t *request);\n\n/**\n * Releases system event set\n *\n * For Fermi &tm; or newer fully supported devices.\n *\n * @param request                                  Reference to nvmlSystemEventSetFreeRequest_t\n *\n * @return\n *         - \\ref NVML_SUCCESS                         if the event has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED             if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT          if request is NULL\n *         - \\ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH for unsupported version\n *         - \\ref NVML_ERROR_UNKNOWN                   on any unexpected error\n *\n * @see nvmlDeviceRegisterEvents\n */\nnvmlReturn_t DECLDIR nvmlSystemEventSetFree(nvmlSystemEventSetFreeRequest_t *request);\n\n/**\n * Starts recording of events on system and add the events to specified \\ref nvmlSystemEventSet_t\n *\n * For Linux only.\n *\n * This call starts recording of events on specific device.\n * All events that occurred before this call are not recorded.\n * Checking if some event occurred can be done with \\ref nvmlSystemEventSetWait\n *\n * If function reports NVML_ERROR_UNKNOWN, event set is in undefined state and should be freed.\n * If function reports NVML_ERROR_NOT_SUPPORTED, event set can still be used. None of the requested eventTypes\n *     are registered in that case.\n *\n * @param request                              Reference to the struct nvmlSystemRegisterEventRequest_t\n *\n * @return\n *         - \\ref NVML_SUCCESS                         if the event has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED             if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT          if request is NULL\n *         - \\ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH for unsupported version\n *         - \\ref NVML_ERROR_UNKNOWN                   on any unexpected error\n *\n * @see nvmlSystemEventType\n * @see nvmlSystemEventSetWait\n * @see nvmlEventSetFree\n */\nnvmlReturn_t DECLDIR nvmlSystemRegisterEvents(nvmlSystemRegisterEventRequest_t *request);\n\n/**\n * Waits on system events and delivers events\n *\n * For Fermi &tm; or newer fully supported devices.\n *\n * If some events are ready to be delivered at the time of the call, function returns immediately.\n * If there are no events ready to be delivered, function sleeps till event arrives\n * but not longer than specified timeout. This function in certain conditions can return before\n * specified timeout passes (e.g. when interrupt arrives)\n *\n * if the return request->numEvent equals to request->dataSize, there might be outstanding\n * event, it is recommended to call nvmlSystemEventSetWait again to query all the events.\n *\n * @param request                              Reference in which to nvmlSystemEventSetWaitRequest_t\n *\n * @return\n *         - \\ref NVML_SUCCESS                         if the event has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED             if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT          if request is NULL\n *         - \\ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH for unsupported version\n *         - \\ref NVML_ERROR_TIMEOUT                   if no event notification after timeoutms\n *         - \\ref NVML_ERROR_UNKNOWN                   on any unexpected error\n *\n * @see nvmlSystemEventType\n * @see nvmlSystemRegisterEvents\n */\nnvmlReturn_t DECLDIR nvmlSystemEventSetWait(nvmlSystemEventSetWaitRequest_t *request);\n\n/** @} */\n\n/***************************************************************************************************/\n/** @defgroup nvmlZPI Drain states\n * This chapter describes methods that NVML can perform against each device to control their drain state\n * and recognition by NVML and NVIDIA kernel driver. These methods can be used with out-of-band tools to\n * power on/off GPUs, enable robust reset scenarios, etc.\n *  @{\n */\n/***************************************************************************************************/\n\n/**\n * Modify the drain state of a GPU.  This method forces a GPU to no longer accept new incoming requests.\n * Any new NVML process will no longer see this GPU.  Persistence mode for this GPU must be turned off before\n * this call is made.\n * Must be called as administrator.\n * For Linux only.\n *\n * For Pascal &tm; or newer fully supported devices.\n * Some Kepler devices supported.\n *\n * @param pciInfo                              The PCI address of the GPU drain state to be modified\n * @param newState                             The drain state that should be entered, see \\ref nvmlEnableState_t\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if counters were successfully reset\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a nvmlIndex or \\a newState is invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device doesn't support this feature\n *         - \\ref NVML_ERROR_NO_PERMISSION     if the calling process has insufficient permissions to perform operation\n *         - \\ref NVML_ERROR_IN_USE            if the device has persistence mode turned on\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceModifyDrainState (nvmlPciInfo_t *pciInfo, nvmlEnableState_t newState);\n\n/**\n * Query the drain state of a GPU.  This method is used to check if a GPU is in a currently draining\n * state.\n * For Linux only.\n *\n * For Pascal &tm; or newer fully supported devices.\n * Some Kepler devices supported.\n *\n * @param pciInfo                              The PCI address of the GPU drain state to be queried\n * @param currentState                         The current drain state for this GPU, see \\ref nvmlEnableState_t\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if counters were successfully reset\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a nvmlIndex or \\a currentState is invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device doesn't support this feature\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceQueryDrainState (nvmlPciInfo_t *pciInfo, nvmlEnableState_t *currentState);\n\n/**\n * This method will remove the specified GPU from the view of both NVML and the NVIDIA kernel driver\n * as long as no other processes are attached. If other processes are attached, this call will return\n * NVML_ERROR_IN_USE and the GPU will be returned to its original \"draining\" state. Note: the\n * only situation where a process can still be attached after nvmlDeviceModifyDrainState() is called\n * to initiate the draining state is if that process was using, and is still using, a GPU before the\n * call was made. Also note, persistence mode counts as an attachment to the GPU thus it must be disabled\n * prior to this call.\n *\n * For long-running NVML processes please note that this will change the enumeration of current GPUs.\n * For example, if there are four GPUs present and GPU1 is removed, the new enumeration will be 0-2.\n * Also, device handles after the removed GPU will not be valid and must be re-established.\n * Must be run as administrator.\n * For Linux only.\n *\n * For Pascal &tm; or newer fully supported devices.\n * Some Kepler devices supported.\n *\n * @param pciInfo                              The PCI address of the GPU to be removed\n * @param gpuState                             Whether the GPU is to be removed, from the OS\n *                                             see \\ref nvmlDetachGpuState_t\n * @param linkState                            Requested upstream PCIe link state, see \\ref nvmlPcieLinkState_t\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if counters were successfully reset\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a nvmlIndex is invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device doesn't support this feature\n *         - \\ref NVML_ERROR_IN_USE            if the device is still in use and cannot be removed\n */\nnvmlReturn_t DECLDIR nvmlDeviceRemoveGpu_v2(nvmlPciInfo_t *pciInfo, nvmlDetachGpuState_t gpuState, nvmlPcieLinkState_t linkState);\n\n/**\n * Request the OS and the NVIDIA kernel driver to rediscover a portion of the PCI subsystem looking for GPUs that\n * were previously removed. The portion of the PCI tree can be narrowed by specifying a domain, bus, and device.\n * If all are zeroes then the entire PCI tree will be searched.  Please note that for long-running NVML processes\n * the enumeration will change based on how many GPUs are discovered and where they are inserted in bus order.\n *\n * In addition, all newly discovered GPUs will be initialized and their ECC scrubbed which may take several seconds\n * per GPU. Also, all device handles are no longer guaranteed to be valid post discovery.\n *\n * Must be run as administrator.\n * For Linux only.\n *\n * For Pascal &tm; or newer fully supported devices.\n * Some Kepler devices supported.\n *\n * @param pciInfo                              The PCI tree to be searched.  Only the domain, bus, and device\n *                                             fields are used in this call.\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if counters were successfully reset\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a pciInfo is invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the operating system does not support this feature\n *         - \\ref NVML_ERROR_OPERATING_SYSTEM  if the operating system is denying this feature\n *         - \\ref NVML_ERROR_NO_PERMISSION     if the calling process has insufficient permissions to perform operation\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceDiscoverGpus (nvmlPciInfo_t *pciInfo);\n\n/** @} */\n\n/***************************************************************************************************/\n/** @defgroup nvmlFieldValueQueries Field Value Queries\n *  This chapter describes NVML operations that are associated with retrieving Field Values from NVML\n *  @{\n */\n/***************************************************************************************************/\n\n/**\n * Request values for a list of fields for a device. This API allows multiple fields to be queried at once.\n * If any of the underlying fieldIds are populated by the same driver call, the results for those field IDs\n * will be populated from a single call rather than making a driver call for each fieldId.\n *\n * @param device                               The device handle of the GPU to request field values for\n * @param valuesCount                          Number of entries in values that should be retrieved\n * @param values                               Array of \\a valuesCount structures to hold field values.\n *                                             Each value's fieldId must be populated prior to this call\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if any values in \\a values were populated. Note that you must\n *                                             check the nvmlReturn field of each value for each individual\n *                                             status\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a values is NULL\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetFieldValues(nvmlDevice_t device, int valuesCount, nvmlFieldValue_t *values);\n\n/**\n * Clear values for a list of fields for a device. This API allows multiple fields to be cleared at once.\n *\n * @param device                               The device handle of the GPU to request field values for\n * @param valuesCount                          Number of entries in values that should be cleared\n * @param values                               Array of \\a valuesCount structures to hold field values.\n *                                             Each value's fieldId must be populated prior to this call\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if any values in \\a values were cleared. Note that you must\n *                                             check the nvmlReturn field of each value for each individual\n *                                             status\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid or \\a values is NULL\n */\nnvmlReturn_t DECLDIR nvmlDeviceClearFieldValues(nvmlDevice_t device, int valuesCount, nvmlFieldValue_t *values);\n\n/** @} */\n\n/***************************************************************************************************/\n/** @defgroup nvmlVirtualGpuQueries vGPU APIs\n * This chapter describes operations that are associated with NVIDIA vGPU Software products.\n *  @{\n */\n/***************************************************************************************************/\n\n/**\n * This method is used to get the virtualization mode corresponding to the GPU.\n *\n * For Kepler &tm; or newer fully supported devices.\n *\n * @param device                    Identifier of the target device\n * @param pVirtualMode              Reference to virtualization mode. One of NVML_GPU_VIRTUALIZATION_?\n *\n * @return\n *         - \\ref NVML_SUCCESS                  if \\a pVirtualMode is fetched\n *         - \\ref NVML_ERROR_UNINITIALIZED      if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT   if \\a device is invalid or \\a pVirtualMode is NULL\n *         - \\ref NVML_ERROR_GPU_IS_LOST        if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN            on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetVirtualizationMode(nvmlDevice_t device, nvmlGpuVirtualizationMode_t *pVirtualMode);\n\n/**\n * Queries if SR-IOV host operation is supported on a vGPU supported device.\n *\n * Checks whether SR-IOV host capability is supported by the device and the\n * driver, and indicates device is in SR-IOV mode if both of these conditions\n * are true.\n *\n * @param device                                The identifier of the target device\n * @param pHostVgpuMode                         Reference in which to return the current vGPU mode\n *\n * @return\n *         - \\ref NVML_SUCCESS                  if device's vGPU mode has been successfully retrieved\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT   if \\a device handle is 0 or \\a pVgpuMode is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED      if \\a device doesn't support this feature.\n *         - \\ref NVML_ERROR_UNKNOWN            if any unexpected error occurred\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetHostVgpuMode(nvmlDevice_t device, nvmlHostVgpuMode_t *pHostVgpuMode);\n\n/**\n * This method is used to set the virtualization mode corresponding to the GPU.\n *\n * For Kepler &tm; or newer fully supported devices.\n *\n * @param device                    Identifier of the target device\n * @param virtualMode               virtualization mode. One of NVML_GPU_VIRTUALIZATION_?\n *\n * @return\n *         - \\ref NVML_SUCCESS                  if \\a virtualMode is set\n *         - \\ref NVML_ERROR_UNINITIALIZED      if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT   if \\a device is invalid or \\a virtualMode is NULL\n *         - \\ref NVML_ERROR_GPU_IS_LOST        if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_NOT_SUPPORTED      if setting of virtualization mode is not supported.\n *         - \\ref NVML_ERROR_NO_PERMISSION      if setting of virtualization mode is not allowed for this client.\n */\nnvmlReturn_t DECLDIR nvmlDeviceSetVirtualizationMode(nvmlDevice_t device, nvmlGpuVirtualizationMode_t virtualMode);\n\n/**\n * Get the vGPU heterogeneous mode for the device.\n *\n * When in heterogeneous mode, a vGPU can concurrently host timesliced vGPUs with differing framebuffer sizes.\n *\n * On successful return, the function returns \\a pHeterogeneousMode->mode with the current vGPU heterogeneous mode.\n * \\a pHeterogeneousMode->version is the version number of the structure nvmlVgpuHeterogeneousMode_t, the caller should\n * set the correct version number to retrieve the vGPU heterogeneous mode.\n * \\a pHeterogeneousMode->mode can either be \\ref NVML_FEATURE_ENABLED or \\ref NVML_FEATURE_DISABLED.\n *\n * @param device                               The identifier of the target device\n * @param pHeterogeneousMode                   Pointer to the caller-provided structure of nvmlVgpuHeterogeneousMode_t\n *\n * @return\n *         - \\ref NVML_SUCCESS                          Upon success\n *         - \\ref NVML_ERROR_UNINITIALIZED              If library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT           If \\a device is invalid or \\a pHeterogeneousMode is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED              If MIG is enabled or \\a device doesn't support this feature\n *         - \\ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH  If the version of \\a pHeterogeneousMode is invalid\n *         - \\ref NVML_ERROR_UNKNOWN                    On any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetVgpuHeterogeneousMode(nvmlDevice_t device, nvmlVgpuHeterogeneousMode_t *pHeterogeneousMode);\n\n/**\n * Enable or disable vGPU heterogeneous mode for the device.\n *\n * When in heterogeneous mode, a vGPU can concurrently host timesliced vGPUs with differing framebuffer sizes.\n *\n * API would return an appropriate error code upon unsuccessful activation. For example, the heterogeneous mode\n * set will fail with error \\ref NVML_ERROR_IN_USE if any vGPU instance is active on the device. The caller of this API\n * is expected to shutdown the vGPU VMs and retry setting the \\a mode.\n * On KVM platform, setting heterogeneous mode is allowed, if no MDEV device is created on the device, else will fail\n * with same error \\ref NVML_ERROR_IN_USE.\n * On successful return, the function updates the vGPU heterogeneous mode with the user provided \\a pHeterogeneousMode->mode.\n * \\a pHeterogeneousMode->version is the version number of the structure nvmlVgpuHeterogeneousMode_t, the caller should\n * set the correct version number to set the vGPU heterogeneous mode.\n *\n * @param device                               Identifier of the target device\n * @param pHeterogeneousMode                   Pointer to the caller-provided structure of nvmlVgpuHeterogeneousMode_t\n *\n * @return\n *         - \\ref NVML_SUCCESS                          Upon success\n *         - \\ref NVML_ERROR_UNINITIALIZED              If library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT           If \\a device or \\a pHeterogeneousMode is NULL or \\a pHeterogeneousMode->mode is invalid\n *         - \\ref NVML_ERROR_IN_USE                     If the \\a device is in use\n *         - \\ref NVML_ERROR_NO_PERMISSION              If user doesn't have permission to perform the operation\n *         - \\ref NVML_ERROR_NOT_SUPPORTED              If MIG is enabled or \\a device doesn't support this feature\n *         - \\ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH  If the version of \\a pHeterogeneousMode is invalid\n *         - \\ref NVML_ERROR_UNKNOWN                    On any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceSetVgpuHeterogeneousMode(nvmlDevice_t device, const nvmlVgpuHeterogeneousMode_t *pHeterogeneousMode);\n\n/**\n * Query the placement ID of active vGPU instance.\n *\n * When in vGPU heterogeneous mode, this function returns a valid placement ID as \\a pPlacement->placementId\n * else NVML_INVALID_VGPU_PLACEMENT_ID is returned.\n * \\a pPlacement->version is the version number of the structure nvmlVgpuPlacementId_t, the caller should\n * set the correct version number to get placement id of the vGPU instance \\a vgpuInstance.\n *\n * @param vgpuInstance                         Identifier of the target vGPU instance\n * @param pPlacement                           Pointer to vGPU placement ID structure \\a nvmlVgpuPlacementId_t\n *\n * @return\n *         - \\ref NVML_SUCCESS                          If information is successfully retrieved\n *         - \\ref NVML_ERROR_NOT_FOUND                  If \\a vgpuInstance does not match a valid active vGPU instance\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT           If \\a vgpuInstance is invalid or \\a pPlacement is NULL\n *         - \\ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH  If the version of \\a pPlacement is invalid\n *         - \\ref NVML_ERROR_UNKNOWN                    On any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlVgpuInstanceGetPlacementId(nvmlVgpuInstance_t vgpuInstance, nvmlVgpuPlacementId_t *pPlacement);\n\n/**\n * Query the supported vGPU placement ID of the vGPU type.\n *\n * The function returns an array of supported vGPU placement IDs for the specified vGPU type ID in the buffer provided\n * by the caller at \\a pPlacementList->placementIds. The required memory for the placementIds array must be allocated\n * based on the maximum number of vGPU type instances, which is retrievable through \\ref nvmlVgpuTypeGetMaxInstances().\n * If the provided count by the caller is insufficient, the function will return NVML_ERROR_INSUFFICIENT_SIZE along with\n * the number of required entries in \\a pPlacementList->count. The caller should then reallocate a buffer with the size\n * of pPlacementList->count * sizeof(pPlacementList->placementIds) and invoke the function again.\n *\n * To obtain a list of homogeneous placement IDs, the caller needs to set \\a pPlacementList->mode to NVML_VGPU_PGPU_HOMOGENEOUS_MODE.\n * For heterogeneous placement IDs, \\a pPlacementList->mode should be set to NVML_VGPU_PGPU_HETEROGENEOUS_MODE.\n * By default, a list of heterogeneous placement IDs is returned.\n *\n * @param device                               Identifier of the target device\n * @param vgpuTypeId                           Handle to vGPU type. The vGPU type ID\n * @param pPlacementList                       Pointer to the vGPU placement structure \\a nvmlVgpuPlacementList_t\n *\n * @return\n *         - \\ref NVML_SUCCESS                          Upon success\n *         - \\ref NVML_ERROR_UNINITIALIZED              If library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT           If \\a device or \\a vgpuTypeId is invalid or \\a pPlacementList is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED              If \\a device or \\a vgpuTypeId isn't supported\n *         - \\ref NVML_ERROR_NO_PERMISSION              If user doesn't have permission to perform the operation\n *         - \\ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH  If the version of \\a pPlacementList is invalid\n *         - \\ref NVML_ERROR_INSUFFICIENT_SIZE          If the buffer is small, element count is returned in \\a pPlacementList->count\n *         - \\ref NVML_ERROR_UNKNOWN                    On any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetVgpuTypeSupportedPlacements(nvmlDevice_t device, nvmlVgpuTypeId_t vgpuTypeId, nvmlVgpuPlacementList_t *pPlacementList);\n\n/**\n * Query the creatable vGPU placement ID of the vGPU type.\n *\n * An array of creatable vGPU placement IDs for the vGPU type ID indicated by \\a vgpuTypeId is returned in the\n * caller-supplied buffer of \\a pPlacementList->placementIds. Memory needed for the placementIds array should be\n * allocated based on maximum instances of a vGPU type which can be queried via \\ref nvmlVgpuTypeGetMaxInstances().\n * If the provided count by the caller is insufficient, the function will return NVML_ERROR_INSUFFICIENT_SIZE along with\n * the number of required entries in \\a pPlacementList->count. The caller should then reallocate a buffer with the size\n * of pPlacementList->count * sizeof(pPlacementList->placementIds) and invoke the function again.\n *\n * The creatable vGPU placement IDs may differ over time, as there may be restrictions on what type of vGPU the\n * vGPU instance is running.\n *\n * @param device                               The identifier of the target device\n * @param vgpuTypeId                           Handle to vGPU type. The vGPU type ID\n * @param pPlacementList                       Pointer to the list of vGPU placement structure \\a nvmlVgpuPlacementList_t\n *\n * @return\n *         - \\ref NVML_SUCCESS                          Upon success\n *         - \\ref NVML_ERROR_UNINITIALIZED              If library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT           If \\a device or \\a vgpuTypeId is invalid or \\a pPlacementList is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED              If MIG is enabled or \\a device or \\a vgpuTypeId isn't supported\n *         - \\ref NVML_ERROR_NO_PERMISSION              If user doesn't have permission to perform the operation\n *         - \\ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH  If the version of \\a pPlacementList is invalid\n *         - \\ref NVML_ERROR_UNKNOWN                    On any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetVgpuTypeCreatablePlacements(nvmlDevice_t device, nvmlVgpuTypeId_t vgpuTypeId, nvmlVgpuPlacementList_t *pPlacementList);\n\n/**\n * Retrieve the static GSP heap size of the vGPU type in bytes\n *\n * @param vgpuTypeId                           Handle to vGPU type\n * @param gspHeapSize                          Reference to return the GSP heap size value\n * @return\n *         - \\ref NVML_SUCCESS                 Successful completion\n *         - \\ref NVML_ERROR_UNINITIALIZED     If the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  If \\a vgpuTypeId is invalid, or \\a gspHeapSize is NULL\n *         - \\ref NVML_ERROR_UNKNOWN           On any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlVgpuTypeGetGspHeapSize(nvmlVgpuTypeId_t vgpuTypeId, unsigned long long *gspHeapSize);\n\n/**\n * Retrieve the static framebuffer reservation of the vGPU type in bytes\n *\n * @param vgpuTypeId                           Handle to vGPU type\n * @param fbReservation                        Reference to return the framebuffer reservation\n * @return\n *         - \\ref NVML_SUCCESS                 Successful completion\n *         - \\ref NVML_ERROR_UNINITIALIZED     If the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  If \\a vgpuTypeId is invalid, or \\a fbReservation is NULL\n *         - \\ref NVML_ERROR_UNKNOWN           On any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlVgpuTypeGetFbReservation(nvmlVgpuTypeId_t vgpuTypeId, unsigned long long *fbReservation);\n\n/**\n * Retrieve the currently used runtime state size of the vGPU instance\n *\n * This size represents the maximum in-memory data size utilized by a vGPU instance during standard operation.\n * This measurement is exclusive of frame buffer (FB) data size assigned to the vGPU instance.\n *\n * For Maxwell &tm; or newer fully supported devices.\n *\n * @param vgpuInstance                         Identifier of the target vGPU instance\n * @param pState                               Pointer to the vGPU runtime state's structure \\a nvmlVgpuRuntimeState_t\n *\n * @return\n *         - \\ref NVML_SUCCESS                          If information is successfully retrieved\n *         - \\ref NVML_ERROR_UNINITIALIZED              If the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT           If \\a vgpuInstance is invalid, or \\a pState is NULL\n *         - \\ref NVML_ERROR_NOT_FOUND                  If \\a vgpuInstance does not match a valid active vGPU instance on the system\n *         - \\ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH  If the version of \\a pState is invalid\n *         - \\ref NVML_ERROR_UNKNOWN                    On any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlVgpuInstanceGetRuntimeStateSize(nvmlVgpuInstance_t vgpuInstance, nvmlVgpuRuntimeState_t *pState);\n\n/**\n * Set the desirable vGPU capability of a device\n *\n * Refer to the \\a nvmlDeviceVgpuCapability_t structure for the specific capabilities that can be set.\n * See \\ref nvmlEnableState_t for available state.\n *\n * @param device                               The identifier of the target device\n * @param capability                           Specifies the \\a nvmlDeviceVgpuCapability_t to be set\n * @param state                                The target capability mode\n *\n * @return\n *      - \\ref NVML_SUCCESS                    Successful completion\n *      - \\ref NVML_ERROR_UNINITIALIZED        If the library has not been successfully initialized\n *      - \\ref NVML_ERROR_INVALID_ARGUMENT     If \\a device is invalid, or \\a capability is invalid, or \\a state is invalid\n *      - \\ref NVML_ERROR_NOT_SUPPORTED        The API is not supported in current state, or \\a device not in vGPU mode\n *      - \\ref NVML_ERROR_UNKNOWN              On any unexpected error\n*/\nnvmlReturn_t DECLDIR nvmlDeviceSetVgpuCapabilities(nvmlDevice_t device, nvmlDeviceVgpuCapability_t capability, nvmlEnableState_t state);\n\n/**\n * Retrieve the vGPU Software licensable features.\n *\n * Identifies whether the system supports vGPU Software Licensing. If it does, return the list of licensable feature(s)\n * and their current license status.\n *\n * @param device                    Identifier of the target device\n * @param pGridLicensableFeatures   Pointer to structure in which vGPU software licensable features are returned\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if licensable features are successfully retrieved\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a pGridLicensableFeatures is NULL\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetGridLicensableFeatures_v4(nvmlDevice_t device, nvmlGridLicensableFeatures_t *pGridLicensableFeatures);\n\n/** @} */\n\n/***************************************************************************************************/\n/** @defgroup nvmlVgpu vGPU Management\n * @{\n *\n * This chapter describes APIs supporting NVIDIA vGPU.\n */\n/***************************************************************************************************/\n\n/**\n * Retrieve the requested vGPU driver capability.\n *\n * Refer to the \\a nvmlVgpuDriverCapability_t structure for the specific capabilities that can be queried.\n * The return value in \\a capResult should be treated as a boolean, with a non-zero value indicating that the capability\n * is supported.\n *\n * For Maxwell &tm; or newer fully supported devices.\n *\n * @param capability      Specifies the \\a nvmlVgpuDriverCapability_t to be queried\n * @param capResult       A boolean for the queried capability indicating that feature is supported\n *\n * @return\n *      - \\ref NVML_SUCCESS                      successful completion\n *      - \\ref NVML_ERROR_UNINITIALIZED          if the library has not been successfully initialized\n *      - \\ref NVML_ERROR_INVALID_ARGUMENT       if \\a capability is invalid, or \\a capResult is NULL\n *      - \\ref NVML_ERROR_NOT_SUPPORTED          the API is not supported in current state or \\a devices not in vGPU mode\n *      - \\ref NVML_ERROR_UNKNOWN                on any unexpected error\n*/\nnvmlReturn_t DECLDIR nvmlGetVgpuDriverCapabilities(nvmlVgpuDriverCapability_t capability, unsigned int *capResult);\n\n/**\n * Retrieve the requested vGPU capability for GPU.\n *\n * Refer to the \\a nvmlDeviceVgpuCapability_t structure for the specific capabilities that can be queried.\n * The return value in \\a capResult reports a non-zero value indicating that the capability\n * is supported, and also reports the capability's data based on the queried capability.\n *\n * For Maxwell &tm; or newer fully supported devices.\n *\n * @param device     The identifier of the target device\n * @param capability Specifies the \\a nvmlDeviceVgpuCapability_t to be queried\n * @param capResult  Specifies that the queried capability is supported, and also returns capability's data\n *\n * @return\n *      - \\ref NVML_SUCCESS                      successful completion\n *      - \\ref NVML_ERROR_UNINITIALIZED          if the library has not been successfully initialized\n *      - \\ref NVML_ERROR_INVALID_ARGUMENT       if \\a device is invalid, or \\a capability is invalid, or \\a capResult is NULL\n *      - \\ref NVML_ERROR_NOT_SUPPORTED          the API is not supported in current state or \\a device not in vGPU mode\n *      - \\ref NVML_ERROR_UNKNOWN                on any unexpected error\n*/\nnvmlReturn_t DECLDIR nvmlDeviceGetVgpuCapabilities(nvmlDevice_t device, nvmlDeviceVgpuCapability_t capability, unsigned int *capResult);\n\n/**\n * Retrieve the supported vGPU types on a physical GPU (device).\n *\n * An array of supported vGPU types for the physical GPU indicated by \\a device is returned in the caller-supplied buffer\n * pointed at by \\a vgpuTypeIds. The element count of nvmlVgpuTypeId_t array is passed in \\a vgpuCount, and \\a vgpuCount\n * is used to return the number of vGPU types written to the buffer.\n *\n * If the supplied buffer is not large enough to accommodate the vGPU type array, the function returns\n * NVML_ERROR_INSUFFICIENT_SIZE, with the element count of nvmlVgpuTypeId_t array required in \\a vgpuCount.\n * To query the number of vGPU types supported for the GPU, call this function with *vgpuCount = 0.\n * The code will return NVML_ERROR_INSUFFICIENT_SIZE, or NVML_SUCCESS if no vGPU types are supported.\n *\n * @param device                   The identifier of the target device\n * @param vgpuCount                Pointer to caller-supplied array size, and returns number of vGPU types\n * @param vgpuTypeIds              Pointer to caller-supplied array in which to return list of vGPU types\n *\n * @return\n *         - \\ref NVML_SUCCESS                      successful completion\n *         - \\ref NVML_ERROR_INSUFFICIENT_SIZE      \\a vgpuTypeIds buffer is too small, array element count is returned in \\a vgpuCount\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT       if \\a vgpuCount is NULL or \\a device is invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED          if vGPU is not supported by the device\n *         - \\ref NVML_ERROR_UNKNOWN                on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetSupportedVgpus(nvmlDevice_t device, unsigned int *vgpuCount, nvmlVgpuTypeId_t *vgpuTypeIds);\n\n/**\n * Retrieve the currently creatable vGPU types on a physical GPU (device).\n *\n * An array of creatable vGPU types for the physical GPU indicated by \\a device is returned in the caller-supplied buffer\n * pointed at by \\a vgpuTypeIds. The element count of nvmlVgpuTypeId_t array is passed in \\a vgpuCount, and \\a vgpuCount\n * is used to return the number of vGPU types written to the buffer.\n *\n * The creatable vGPU types for a device may differ over time, as there may be restrictions on what type of vGPU types\n * can concurrently run on a device.  For example, if only one vGPU type is allowed at a time on a device, then the creatable\n * list will be restricted to whatever vGPU type is already running on the device.\n *\n * If the supplied buffer is not large enough to accommodate the vGPU type array, the function returns\n * NVML_ERROR_INSUFFICIENT_SIZE, with the element count of nvmlVgpuTypeId_t array required in \\a vgpuCount.\n * To query the number of vGPU types that can be created for the GPU, call this function with *vgpuCount = 0.\n * The code will return NVML_ERROR_INSUFFICIENT_SIZE, or NVML_SUCCESS if no vGPU types are creatable.\n *\n * @param device                   The identifier of the target device\n * @param vgpuCount                Pointer to caller-supplied array size, and returns number of vGPU types\n * @param vgpuTypeIds              Pointer to caller-supplied array in which to return list of vGPU types\n *\n * @return\n *         - \\ref NVML_SUCCESS                      successful completion\n *         - \\ref NVML_ERROR_INSUFFICIENT_SIZE      \\a vgpuTypeIds buffer is too small, array element count is returned in \\a vgpuCount\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT       if \\a vgpuCount is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED          if vGPU is not supported by the device\n *         - \\ref NVML_ERROR_UNKNOWN                on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetCreatableVgpus(nvmlDevice_t device, unsigned int *vgpuCount, nvmlVgpuTypeId_t *vgpuTypeIds);\n\n/**\n * Retrieve the class of a vGPU type. It will not exceed 64 characters in length (including the NUL terminator).\n * See \\ref nvmlConstants::NVML_DEVICE_NAME_BUFFER_SIZE.\n *\n * For Kepler &tm; or newer fully supported devices.\n *\n * @param vgpuTypeId               Handle to vGPU type\n * @param vgpuTypeClass            Pointer to string array to return class in\n * @param size                     Size of string\n *\n * @return\n *         - \\ref NVML_SUCCESS                   successful completion\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT    if \\a vgpuTypeId is invalid, or \\a vgpuTypeClass is NULL\n *         - \\ref NVML_ERROR_INSUFFICIENT_SIZE   if \\a size is too small\n *         - \\ref NVML_ERROR_UNKNOWN             on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlVgpuTypeGetClass(nvmlVgpuTypeId_t vgpuTypeId, char *vgpuTypeClass, unsigned int *size);\n\n/**\n * Retrieve the vGPU type name.\n *\n * The name is an alphanumeric string that denotes a particular vGPU, e.g. GRID M60-2Q. It will not\n * exceed 64 characters in length (including the NUL terminator).  See \\ref\n * nvmlConstants::NVML_DEVICE_NAME_BUFFER_SIZE.\n *\n * For Kepler &tm; or newer fully supported devices.\n *\n * @param vgpuTypeId               Handle to vGPU type\n * @param vgpuTypeName             Pointer to buffer to return name\n * @param size                     Size of buffer\n *\n * @return\n *         - \\ref NVML_SUCCESS                 successful completion\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a vgpuTypeId is invalid, or \\a name is NULL\n *         - \\ref NVML_ERROR_INSUFFICIENT_SIZE if \\a size is too small\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlVgpuTypeGetName(nvmlVgpuTypeId_t vgpuTypeId, char *vgpuTypeName, unsigned int *size);\n\n/**\n * Retrieve the GPU Instance Profile ID for the given vGPU type ID.\n * The API will return a valid GPU Instance Profile ID for the MIG capable vGPU types, else INVALID_GPU_INSTANCE_PROFILE_ID is\n * returned.\n *\n * For Kepler &tm; or newer fully supported devices.\n *\n * @param vgpuTypeId               Handle to vGPU type\n * @param gpuInstanceProfileId     GPU Instance Profile ID\n *\n * @return\n *         - \\ref NVML_SUCCESS                 successful completion\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if \\a device is not in vGPU Host virtualization mode\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a vgpuTypeId is invalid, or \\a gpuInstanceProfileId is NULL\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlVgpuTypeGetGpuInstanceProfileId(nvmlVgpuTypeId_t vgpuTypeId, unsigned int *gpuInstanceProfileId);\n\n/**\n * Retrieve the device ID of a vGPU type.\n *\n * For Kepler &tm; or newer fully supported devices.\n *\n * @param vgpuTypeId               Handle to vGPU type\n * @param deviceID                 Device ID and vendor ID of the device contained in single 32 bit value\n * @param subsystemID              Subsystem ID and subsystem vendor ID of the device contained in single 32 bit value\n *\n * @return\n *         - \\ref NVML_SUCCESS                 successful completion\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a vgpuTypeId is invalid, or \\a deviceId or \\a subsystemID are NULL\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlVgpuTypeGetDeviceID(nvmlVgpuTypeId_t vgpuTypeId, unsigned long long *deviceID, unsigned long long *subsystemID);\n\n/**\n * Retrieve the vGPU framebuffer size in bytes.\n *\n * For Kepler &tm; or newer fully supported devices.\n *\n * @param vgpuTypeId               Handle to vGPU type\n * @param fbSize                   Pointer to framebuffer size in bytes\n *\n * @return\n *         - \\ref NVML_SUCCESS                 successful completion\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a vgpuTypeId is invalid, or \\a fbSize is NULL\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlVgpuTypeGetFramebufferSize(nvmlVgpuTypeId_t vgpuTypeId, unsigned long long *fbSize);\n\n/**\n * Retrieve count of vGPU's supported display heads.\n *\n * For Kepler &tm; or newer fully supported devices.\n *\n * @param vgpuTypeId               Handle to vGPU type\n * @param numDisplayHeads          Pointer to number of display heads\n *\n * @return\n *         - \\ref NVML_SUCCESS                 successful completion\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a vgpuTypeId is invalid, or \\a numDisplayHeads is NULL\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlVgpuTypeGetNumDisplayHeads(nvmlVgpuTypeId_t vgpuTypeId, unsigned int *numDisplayHeads);\n\n/**\n * Retrieve vGPU display head's maximum supported resolution.\n *\n * For Kepler &tm; or newer fully supported devices.\n *\n * @param vgpuTypeId               Handle to vGPU type\n * @param displayIndex             Zero-based index of display head\n * @param xdim                     Pointer to maximum number of pixels in X dimension\n * @param ydim                     Pointer to maximum number of pixels in Y dimension\n *\n * @return\n *         - \\ref NVML_SUCCESS                 successful completion\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a vgpuTypeId is invalid, or \\a xdim or \\a ydim are NULL, or \\a displayIndex\n *                                             is out of range.\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlVgpuTypeGetResolution(nvmlVgpuTypeId_t vgpuTypeId, unsigned int displayIndex, unsigned int *xdim, unsigned int *ydim);\n\n/**\n * Retrieve license requirements for a vGPU type\n *\n * The license type and version required to run the specified vGPU type is returned as an alphanumeric string, in the form\n * \"<license name>,<version>\", for example \"GRID-Virtual-PC,2.0\". If a vGPU is runnable with* more than one type of license,\n * the licenses are delimited by a semicolon, for example \"GRID-Virtual-PC,2.0;GRID-Virtual-WS,2.0;GRID-Virtual-WS-Ext,2.0\".\n *\n * The total length of the returned string will not exceed 128 characters, including the NUL terminator.\n * See \\ref nvmlVgpuConstants::NVML_GRID_LICENSE_BUFFER_SIZE.\n *\n * For Kepler &tm; or newer fully supported devices.\n *\n * @param vgpuTypeId               Handle to vGPU type\n * @param vgpuTypeLicenseString    Pointer to buffer to return license info\n * @param size                     Size of \\a vgpuTypeLicenseString buffer\n *\n * @return\n *         - \\ref NVML_SUCCESS                 successful completion\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a vgpuTypeId is invalid, or \\a vgpuTypeLicenseString is NULL\n *         - \\ref NVML_ERROR_INSUFFICIENT_SIZE if \\a size is too small\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlVgpuTypeGetLicense(nvmlVgpuTypeId_t vgpuTypeId, char *vgpuTypeLicenseString, unsigned int size);\n\n/**\n * Retrieve the static frame rate limit value of the vGPU type\n *\n * For Kepler &tm; or newer fully supported devices.\n *\n * @param vgpuTypeId               Handle to vGPU type\n * @param frameRateLimit           Reference to return the frame rate limit value\n * @return\n *         - \\ref NVML_SUCCESS                 successful completion\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if frame rate limiter is turned off for the vGPU type\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a vgpuTypeId is invalid, or \\a frameRateLimit is NULL\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlVgpuTypeGetFrameRateLimit(nvmlVgpuTypeId_t vgpuTypeId, unsigned int *frameRateLimit);\n\n/**\n * Retrieve the maximum number of vGPU instances creatable on a device for given vGPU type\n *\n * For Kepler &tm; or newer fully supported devices.\n *\n * @param device                   The identifier of the target device\n * @param vgpuTypeId               Handle to vGPU type\n * @param vgpuInstanceCount        Pointer to get the max number of vGPU instances\n *                                 that can be created on a deicve for given vgpuTypeId\n * @return\n *         - \\ref NVML_SUCCESS                 successful completion\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a vgpuTypeId is invalid or is not supported on target device,\n *                                             or \\a vgpuInstanceCount is NULL\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlVgpuTypeGetMaxInstances(nvmlDevice_t device, nvmlVgpuTypeId_t vgpuTypeId, unsigned int *vgpuInstanceCount);\n\n/**\n * Retrieve the maximum number of vGPU instances supported per VM for given vGPU type\n *\n * For Kepler &tm; or newer fully supported devices.\n *\n * @param vgpuTypeId               Handle to vGPU type\n * @param vgpuInstanceCountPerVm   Pointer to get the max number of vGPU instances supported per VM for given \\a vgpuTypeId\n * @return\n *         - \\ref NVML_SUCCESS                 successful completion\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a vgpuTypeId is invalid, or \\a vgpuInstanceCountPerVm is NULL\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlVgpuTypeGetMaxInstancesPerVm(nvmlVgpuTypeId_t vgpuTypeId, unsigned int *vgpuInstanceCountPerVm);\n\n/**\n * Retrieve the BAR1 info for given vGPU type.\n *\n * For Maxwell &tm; or newer fully supported devices.\n *\n * @param vgpuTypeId               Handle to vGPU type\n * @param bar1Info                 Pointer to the vGPU type BAR1 information structure \\a nvmlVgpuTypeBar1Info_t\n *\n * @return\n *         - \\ref NVML_SUCCESS                 successful completion\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a vgpuTypeId is invalid, or \\a bar1Info is NULL\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlVgpuTypeGetBAR1Info(nvmlVgpuTypeId_t vgpuTypeId, nvmlVgpuTypeBar1Info_t *bar1Info);\n\n/**\n * Retrieve the active vGPU instances on a device.\n *\n * An array of active vGPU instances is returned in the caller-supplied buffer pointed at by \\a vgpuInstances. The\n * array element count is passed in \\a vgpuCount, and \\a vgpuCount is used to return the number of vGPU instances\n * written to the buffer.\n *\n * If the supplied buffer is not large enough to accommodate the vGPU instance array, the function returns\n * NVML_ERROR_INSUFFICIENT_SIZE, with the element count of nvmlVgpuInstance_t array required in \\a vgpuCount.\n * To query the number of active vGPU instances, call this function with *vgpuCount = 0.  The code will return\n * NVML_ERROR_INSUFFICIENT_SIZE, or NVML_SUCCESS if no vGPU Types are supported.\n *\n * For Kepler &tm; or newer fully supported devices.\n *\n * @param device                   The identifier of the target device\n * @param vgpuCount                Pointer which passes in the array size as well as get\n *                                 back the number of types\n * @param vgpuInstances            Pointer to array in which to return list of vGPU instances\n *\n * @return\n *         - \\ref NVML_SUCCESS                  successful completion\n *         - \\ref NVML_ERROR_UNINITIALIZED      if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT   if \\a device is invalid, or \\a vgpuCount is NULL\n *         - \\ref NVML_ERROR_INSUFFICIENT_SIZE  if \\a size is too small\n *         - \\ref NVML_ERROR_NOT_SUPPORTED      if vGPU is not supported by the device\n *         - \\ref NVML_ERROR_UNKNOWN            on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetActiveVgpus(nvmlDevice_t device, unsigned int *vgpuCount, nvmlVgpuInstance_t *vgpuInstances);\n\n/**\n * Retrieve the VM ID associated with a vGPU instance.\n *\n * The VM ID is returned as a string, not exceeding 80 characters in length (including the NUL terminator).\n * See \\ref nvmlConstants::NVML_DEVICE_UUID_BUFFER_SIZE.\n *\n * The format of the VM ID varies by platform, and is indicated by the type identifier returned in \\a vmIdType.\n *\n * For Kepler &tm; or newer fully supported devices.\n *\n * @param vgpuInstance             Identifier of the target vGPU instance\n * @param vmId                     Pointer to caller-supplied buffer to hold VM ID\n * @param size                     Size of buffer in bytes\n * @param vmIdType                 Pointer to hold VM ID type\n *\n * @return\n *         - \\ref NVML_SUCCESS                 successful completion\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a vmId or \\a vmIdType is NULL, or \\a vgpuInstance is 0\n *         - \\ref NVML_ERROR_NOT_FOUND         if \\a vgpuInstance does not match a valid active vGPU instance on the system\n *         - \\ref NVML_ERROR_INSUFFICIENT_SIZE if \\a size is too small\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlVgpuInstanceGetVmID(nvmlVgpuInstance_t vgpuInstance, char *vmId, unsigned int size, nvmlVgpuVmIdType_t *vmIdType);\n\n/**\n * Retrieve the UUID of a vGPU instance.\n *\n * The UUID is a globally unique identifier associated with the vGPU, and is returned as a 5-part hexadecimal string,\n * not exceeding 80 characters in length (including the NULL terminator).\n * See \\ref nvmlConstants::NVML_DEVICE_UUID_BUFFER_SIZE.\n *\n * For Kepler &tm; or newer fully supported devices.\n *\n * @param vgpuInstance             Identifier of the target vGPU instance\n * @param uuid                     Pointer to caller-supplied buffer to hold vGPU UUID\n * @param size                     Size of buffer in bytes\n *\n * @return\n *         - \\ref NVML_SUCCESS                 successful completion\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a vgpuInstance is 0, or \\a uuid is NULL\n *         - \\ref NVML_ERROR_NOT_FOUND         if \\a vgpuInstance does not match a valid active vGPU instance on the system\n *         - \\ref NVML_ERROR_INSUFFICIENT_SIZE if \\a size is too small\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlVgpuInstanceGetUUID(nvmlVgpuInstance_t vgpuInstance, char *uuid, unsigned int size);\n\n/**\n * Retrieve the NVIDIA driver version installed in the VM associated with a vGPU.\n *\n * The version is returned as an alphanumeric string in the caller-supplied buffer \\a version. The length of the version\n * string will not exceed 80 characters in length (including the NUL terminator).\n * See \\ref nvmlConstants::NVML_SYSTEM_DRIVER_VERSION_BUFFER_SIZE.\n *\n * nvmlVgpuInstanceGetVmDriverVersion() may be called at any time for a vGPU instance. The guest VM driver version is\n * returned as \"Not Available\" if no NVIDIA driver is installed in the VM, or the VM has not yet booted to the point where the\n * NVIDIA driver is loaded and initialized.\n *\n * For Kepler &tm; or newer fully supported devices.\n *\n * @param vgpuInstance             Identifier of the target vGPU instance\n * @param version                  Caller-supplied buffer to return driver version string\n * @param length                   Size of \\a version buffer\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a version has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a vgpuInstance is 0\n *         - \\ref NVML_ERROR_NOT_FOUND         if \\a vgpuInstance does not match a valid active vGPU instance on the system\n *         - \\ref NVML_ERROR_INSUFFICIENT_SIZE if \\a length is too small\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlVgpuInstanceGetVmDriverVersion(nvmlVgpuInstance_t vgpuInstance, char* version, unsigned int length);\n\n/**\n * Retrieve the framebuffer usage in bytes.\n *\n * Framebuffer usage is the amont of vGPU framebuffer memory that is currently in use by the VM.\n *\n * For Kepler &tm; or newer fully supported devices.\n *\n * @param vgpuInstance             The identifier of the target instance\n * @param fbUsage                  Pointer to framebuffer usage in bytes\n *\n * @return\n *         - \\ref NVML_SUCCESS                 successful completion\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a vgpuInstance is 0, or \\a fbUsage is NULL\n *         - \\ref NVML_ERROR_NOT_FOUND         if \\a vgpuInstance does not match a valid active vGPU instance on the system\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlVgpuInstanceGetFbUsage(nvmlVgpuInstance_t vgpuInstance, unsigned long long *fbUsage);\n\n/**\n * @deprecated Use \\ref nvmlVgpuInstanceGetLicenseInfo_v2.\n *\n * Retrieve the current licensing state of the vGPU instance.\n *\n * If the vGPU is currently licensed, \\a licensed is set to 1, otherwise it is set to 0.\n *\n * For Kepler &tm; or newer fully supported devices.\n *\n * @param vgpuInstance             Identifier of the target vGPU instance\n * @param licensed                 Reference to return the licensing status\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a licensed has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a vgpuInstance is 0, or \\a licensed is NULL\n *         - \\ref NVML_ERROR_NOT_FOUND         if \\a vgpuInstance does not match a valid active vGPU instance on the system\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nDEPRECATED(13.0) nvmlReturn_t DECLDIR nvmlVgpuInstanceGetLicenseStatus(nvmlVgpuInstance_t vgpuInstance, unsigned int *licensed);\n\n/**\n * Retrieve the vGPU type of a vGPU instance.\n *\n * Returns the vGPU type ID of vgpu assigned to the vGPU instance.\n *\n * For Kepler &tm; or newer fully supported devices.\n *\n * @param vgpuInstance             Identifier of the target vGPU instance\n * @param vgpuTypeId               Reference to return the vgpuTypeId\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a vgpuTypeId has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a vgpuInstance is 0, or \\a vgpuTypeId is NULL\n *         - \\ref NVML_ERROR_NOT_FOUND         if \\a vgpuInstance does not match a valid active vGPU instance on the system\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlVgpuInstanceGetType(nvmlVgpuInstance_t vgpuInstance, nvmlVgpuTypeId_t *vgpuTypeId);\n\n/**\n * Retrieve the frame rate limit set for the vGPU instance.\n *\n * Returns the value of the frame rate limit set for the vGPU instance\n *\n * For Kepler &tm; or newer fully supported devices.\n *\n * @param vgpuInstance             Identifier of the target vGPU instance\n * @param frameRateLimit           Reference to return the frame rate limit\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a frameRateLimit has been set\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if frame rate limiter is turned off for the vGPU type\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a vgpuInstance is 0, or \\a frameRateLimit is NULL\n *         - \\ref NVML_ERROR_NOT_FOUND         if \\a vgpuInstance does not match a valid active vGPU instance on the system\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlVgpuInstanceGetFrameRateLimit(nvmlVgpuInstance_t vgpuInstance, unsigned int *frameRateLimit);\n\n/**\n * Retrieve the current ECC mode of vGPU instance.\n *\n * @param vgpuInstance            The identifier of the target vGPU instance\n * @param eccMode                 Reference in which to return the current ECC mode\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if the vgpuInstance's ECC mode has been successfully retrieved\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a vgpuInstance is 0, or \\a mode is NULL\n *         - \\ref NVML_ERROR_NOT_FOUND         if \\a vgpuInstance does not match a valid active vGPU instance on the system\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the vGPU doesn't support this feature\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlVgpuInstanceGetEccMode(nvmlVgpuInstance_t vgpuInstance, nvmlEnableState_t *eccMode);\n\n/**\n * Retrieve the encoder capacity of a vGPU instance, as a percentage of maximum encoder capacity with valid values in the range 0-100.\n *\n * For Maxwell &tm; or newer fully supported devices.\n *\n * @param vgpuInstance             Identifier of the target vGPU instance\n * @param encoderCapacity          Reference to an unsigned int for the encoder capacity\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a encoderCapacity has been retrieved\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a vgpuInstance is 0, or \\a encoderQueryType is invalid\n *         - \\ref NVML_ERROR_NOT_FOUND         if \\a vgpuInstance does not match a valid active vGPU instance on the system\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlVgpuInstanceGetEncoderCapacity(nvmlVgpuInstance_t vgpuInstance, unsigned int *encoderCapacity);\n\n/**\n * Set the encoder capacity of a vGPU instance, as a percentage of maximum encoder capacity with valid values in the range 0-100.\n *\n * For Maxwell &tm; or newer fully supported devices.\n *\n * @param vgpuInstance             Identifier of the target vGPU instance\n * @param encoderCapacity          Unsigned int for the encoder capacity value\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a encoderCapacity has been set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a vgpuInstance is 0, or \\a encoderCapacity is out of range of 0-100.\n *         - \\ref NVML_ERROR_NOT_FOUND         if \\a vgpuInstance does not match a valid active vGPU instance on the system\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlVgpuInstanceSetEncoderCapacity(nvmlVgpuInstance_t vgpuInstance, unsigned int  encoderCapacity);\n\n/**\n * Retrieves the current encoder statistics of a vGPU Instance\n *\n * For Maxwell &tm; or newer fully supported devices.\n *\n * @param vgpuInstance                      Identifier of the target vGPU instance\n * @param sessionCount                      Reference to an unsigned int for count of active encoder sessions\n * @param averageFps                        Reference to an unsigned int for trailing average FPS of all active sessions\n * @param averageLatency                    Reference to an unsigned int for encode latency in microseconds\n *\n * @return\n *         - \\ref NVML_SUCCESS                  if \\a sessionCount, \\a averageFps and \\a averageLatency is fetched\n *         - \\ref NVML_ERROR_UNINITIALIZED      if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT   if \\a sessionCount , or \\a averageFps or \\a averageLatency is NULL\n *                                              or \\a vgpuInstance is 0.\n *         - \\ref NVML_ERROR_NOT_FOUND          if \\a vgpuInstance does not match a valid active vGPU instance on the system\n *         - \\ref NVML_ERROR_UNKNOWN            on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlVgpuInstanceGetEncoderStats(nvmlVgpuInstance_t vgpuInstance, unsigned int *sessionCount,\n                                                     unsigned int *averageFps, unsigned int *averageLatency);\n\n/**\n * Retrieves information about all active encoder sessions on a vGPU Instance.\n *\n * An array of active encoder sessions is returned in the caller-supplied buffer pointed at by \\a sessionInfo. The\n * array element count is passed in \\a sessionCount, and \\a sessionCount is used to return the number of sessions\n * written to the buffer.\n *\n * If the supplied buffer is not large enough to accommodate the active session array, the function returns\n * NVML_ERROR_INSUFFICIENT_SIZE, with the element count of nvmlEncoderSessionInfo_t array required in \\a sessionCount.\n * To query the number of active encoder sessions, call this function with *sessionCount = 0. The code will return\n * NVML_SUCCESS with number of active encoder sessions updated in *sessionCount.\n *\n * For Maxwell &tm; or newer fully supported devices.\n *\n * @param vgpuInstance                      Identifier of the target vGPU instance\n * @param sessionCount                      Reference to caller supplied array size, and returns\n *                                          the number of sessions.\n * @param sessionInfo                       Reference to caller supplied array in which the list\n *                                          of session information us returned.\n *\n * @return\n *         - \\ref NVML_SUCCESS                  if \\a sessionInfo is fetched\n *         - \\ref NVML_ERROR_UNINITIALIZED      if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INSUFFICIENT_SIZE  if \\a sessionCount is too small, array element count is\n                                                returned in \\a sessionCount\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT   if \\a sessionCount is NULL, or \\a vgpuInstance is 0.\n *         - \\ref NVML_ERROR_NOT_FOUND          if \\a vgpuInstance does not match a valid active vGPU instance on the system\n *         - \\ref NVML_ERROR_UNKNOWN            on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlVgpuInstanceGetEncoderSessions(nvmlVgpuInstance_t vgpuInstance, unsigned int *sessionCount, nvmlEncoderSessionInfo_t *sessionInfo);\n\n/**\n* Retrieves the active frame buffer capture sessions statistics of a vGPU Instance\n*\n* For Maxwell &tm; or newer fully supported devices.\n*\n* @param vgpuInstance                      Identifier of the target vGPU instance\n* @param fbcStats                          Reference to nvmlFBCStats_t structure containing NvFBC stats\n*\n* @return\n*         - \\ref NVML_SUCCESS                  if \\a fbcStats is fetched\n*         - \\ref NVML_ERROR_UNINITIALIZED      if the library has not been successfully initialized\n*         - \\ref NVML_ERROR_INVALID_ARGUMENT   if \\a vgpuInstance is 0, or \\a fbcStats is NULL\n*         - \\ref NVML_ERROR_NOT_FOUND          if \\a vgpuInstance does not match a valid active vGPU instance on the system\n*         - \\ref NVML_ERROR_UNKNOWN            on any unexpected error\n*/\nnvmlReturn_t DECLDIR nvmlVgpuInstanceGetFBCStats(nvmlVgpuInstance_t vgpuInstance, nvmlFBCStats_t *fbcStats);\n\n/**\n* Retrieves information about active frame buffer capture sessions on a vGPU Instance.\n*\n* An array of active FBC sessions is returned in the caller-supplied buffer pointed at by \\a sessionInfo. The\n* array element count is passed in \\a sessionCount, and \\a sessionCount is used to return the number of sessions\n* written to the buffer.\n*\n* If the supplied buffer is not large enough to accommodate the active session array, the function returns\n* NVML_ERROR_INSUFFICIENT_SIZE, with the element count of nvmlFBCSessionInfo_t array required in \\a sessionCount.\n* To query the number of active FBC sessions, call this function with *sessionCount = 0.  The code will return\n* NVML_SUCCESS with number of active FBC sessions updated in *sessionCount.\n*\n* For Maxwell &tm; or newer fully supported devices.\n*\n* @note hResolution, vResolution, averageFPS and averageLatency data for a FBC session returned in \\a sessionInfo may\n*       be zero if there are no new frames captured since the session started.\n*\n* @param vgpuInstance                      Identifier of the target vGPU instance\n* @param sessionCount                      Reference to caller supplied array size, and returns the number of sessions.\n* @param sessionInfo                       Reference in which to return the session information\n*\n* @return\n*         - \\ref NVML_SUCCESS                  if \\a sessionInfo is fetched\n*         - \\ref NVML_ERROR_UNINITIALIZED      if the library has not been successfully initialized\n*         - \\ref NVML_ERROR_INVALID_ARGUMENT   if \\a vgpuInstance is 0, or \\a sessionCount is NULL.\n*         - \\ref NVML_ERROR_NOT_FOUND          if \\a vgpuInstance does not match a valid active vGPU instance on the system\n*         - \\ref NVML_ERROR_INSUFFICIENT_SIZE  if \\a sessionCount is too small, array element count is returned in \\a sessionCount\n*         - \\ref NVML_ERROR_UNKNOWN            on any unexpected error\n*/\nnvmlReturn_t DECLDIR nvmlVgpuInstanceGetFBCSessions(nvmlVgpuInstance_t vgpuInstance, unsigned int *sessionCount, nvmlFBCSessionInfo_t *sessionInfo);\n\n/**\n* Retrieve the GPU Instance ID for the given vGPU Instance.\n* The API will return a valid GPU Instance ID for MIG backed vGPU Instance, else INVALID_GPU_INSTANCE_ID is returned.\n*\n* For Kepler &tm; or newer fully supported devices.\n*\n* @param vgpuInstance                      Identifier of the target vGPU instance\n* @param gpuInstanceId                     GPU Instance ID\n*\n* @return\n*         - \\ref NVML_SUCCESS                  successful completion\n*         - \\ref NVML_ERROR_UNINITIALIZED      if the library has not been successfully initialized\n*         - \\ref NVML_ERROR_INVALID_ARGUMENT   if \\a vgpuInstance is 0, or \\a gpuInstanceId is NULL.\n*         - \\ref NVML_ERROR_NOT_FOUND          if \\a vgpuInstance does not match a valid active vGPU instance on the system\n*         - \\ref NVML_ERROR_UNKNOWN            on any unexpected error\n*/\nnvmlReturn_t DECLDIR nvmlVgpuInstanceGetGpuInstanceId(nvmlVgpuInstance_t vgpuInstance, unsigned int *gpuInstanceId);\n\n/**\n* Retrieves the PCI Id of the given vGPU Instance i.e. the PCI Id of the GPU as seen inside the VM.\n*\n* The vGPU PCI id is returned as \"00000000:00:00.0\" if NVIDIA driver is not installed on the vGPU instance.\n*\n* @param vgpuInstance                         Identifier of the target vGPU instance\n* @param vgpuPciId                            Caller-supplied buffer to return vGPU PCI Id string\n* @param length                               Size of the vgpuPciId buffer\n*\n* @return\n*         - \\ref NVML_SUCCESS                 if vGPU PCI Id is sucessfully retrieved\n*         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n*         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a vgpuInstance is 0, or \\a vgpuPciId is NULL\n*         - \\ref NVML_ERROR_NOT_FOUND         if \\a vgpuInstance does not match a valid active vGPU instance on the system\n*         - \\ref NVML_ERROR_DRIVER_NOT_LOADED if NVIDIA driver is not running on the vGPU instance\n*         - \\ref NVML_ERROR_INSUFFICIENT_SIZE if \\a length is too small, \\a length is set to required length\n*         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n*/\nnvmlReturn_t DECLDIR nvmlVgpuInstanceGetGpuPciId(nvmlVgpuInstance_t vgpuInstance, char *vgpuPciId, unsigned int *length);\n\n/**\n* Retrieve the requested capability for a given vGPU type. Refer to the \\a nvmlVgpuCapability_t structure\n* for the specific capabilities that can be queried. The return value in \\a capResult should be treated as\n* a boolean, with a non-zero value indicating that the capability is supported.\n*\n* For Maxwell &tm; or newer fully supported devices.\n*\n* @param vgpuTypeId                           Handle to vGPU type\n* @param capability                           Specifies the \\a nvmlVgpuCapability_t to be queried\n* @param capResult                            A boolean for the queried capability indicating that feature is supported\n*\n* @return\n*         - \\ref NVML_SUCCESS                 successful completion\n*         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n*         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a vgpuTypeId is invalid, or \\a capability is invalid, or \\a capResult is NULL\n*         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n*/\nnvmlReturn_t DECLDIR nvmlVgpuTypeGetCapabilities(nvmlVgpuTypeId_t vgpuTypeId, nvmlVgpuCapability_t capability, unsigned int *capResult);\n\n/**\n * Retrieve the MDEV UUID of a vGPU instance.\n *\n * The MDEV UUID is a globally unique identifier of the mdev device assigned to the VM, and is returned as a 5-part hexadecimal string,\n * not exceeding 80 characters in length (including the NULL terminator).\n * MDEV UUID is displayed only on KVM platform.\n * See \\ref nvmlConstants::NVML_DEVICE_UUID_BUFFER_SIZE.\n *\n * For Maxwell &tm; or newer fully supported devices.\n *\n * @param vgpuInstance             Identifier of the target vGPU instance\n * @param mdevUuid                 Pointer to caller-supplied buffer to hold MDEV UUID\n * @param size                     Size of buffer in bytes\n *\n * @return\n *         - \\ref NVML_SUCCESS                 successful completion\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     on any hypervisor other than KVM\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a vgpuInstance is 0, or \\a mdevUuid is NULL\n *         - \\ref NVML_ERROR_NOT_FOUND         if \\a vgpuInstance does not match a valid active vGPU instance on the system\n *         - \\ref NVML_ERROR_INSUFFICIENT_SIZE if \\a size is too small\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlVgpuInstanceGetMdevUUID(nvmlVgpuInstance_t vgpuInstance, char *mdevUuid, unsigned int size);\n\n/**\n * Query the currently creatable vGPU types on a specific GPU Instance.\n *\n * The function returns an array of vGPU types that can be created for a specified GPU instance. This array is stored\n * in a caller-supplied buffer, with the buffer's element count passed through \\a pVgpus->vgpuCount. The number of\n * vGPU types written to the buffer is indicated by \\a pVgpus->vgpuCount. If the buffer is too small to hold the vGPU\n * type array, the function returns NVML_ERROR_INSUFFICIENT_SIZE and updates \\a pVgpus->vgpuCount with the required\n * element count.\n *\n * To determine the creatable vGPUs for a GPU Instance, invoke this function with \\a pVgpus->vgpuCount set to 0 and\n * \\a pVgpus->vgpuTypeIds as NULL. This will result in NVML_ERROR_INSUFFICIENT_SIZE being returned, along with the\n * count value in \\a pVgpus->vgpuCount.\n *\n * The creatable vGPU types may differ over time, as there may be restrictions on what type of vGPUs can concurrently\n * run on the device.\n *\n * @param gpuInstance                          The GPU instance handle\n * @param pVgpus                               Pointer to the caller-provided structure of nvmlVgpuTypeIdInfo_t\n *\n * @return\n *         - \\ref NVML_SUCCESS                          Upon success\n *         - \\ref NVML_ERROR_UNINITIALIZED              If library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT           If \\a gpuInstance is NULL or invalid, or \\a pVgpus is NULL\n *                                                      or GPU Instance Id is invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED              If not on a vGPU host or an unsupported GPU\n *         - \\ref NVML_ERROR_INSUFFICIENT_SIZE          If \\a pVgpus->vgpuTypeIds buffer is small\n *         - \\ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH  If the version of \\a pVgpus is invalid\n *         - \\ref NVML_ERROR_UNKNOWN                    On any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlGpuInstanceGetCreatableVgpus(nvmlGpuInstance_t gpuInstance, nvmlVgpuTypeIdInfo_t *pVgpus);\n\n/**\n * Retrieve the maximum number of vGPU instances per GPU instance for given vGPU type\n *\n * @param pMaxInstance                         Pointer to the caller-provided structure of nvmlVgpuTypeMaxInstance_t\n *\n * @return\n *         - \\ref NVML_SUCCESS                          Upon success\n *         - \\ref NVML_ERROR_UNINITIALIZED              If library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT           If \\a pMaxInstance is NULL or \\a pMaxInstance->vgpuTypeId is invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED              If not on a vGPU host or an unsupported GPU or non-MIG vGPU type\n *         - \\ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH  If the version of \\a pMaxInstance is invalid\n *         - \\ref NVML_ERROR_UNKNOWN                    On any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlVgpuTypeGetMaxInstancesPerGpuInstance(nvmlVgpuTypeMaxInstance_t *pMaxInstance);\n\n/**\n * Retrieve the active vGPU instances within a GPU instance.\n *\n * An array of active vGPU instances is returned in the caller-supplied buffer pointed\n * at by \\a pVgpuInstanceInfo->vgpuInstances. The array element count is passed in\n * \\a pVgpuInstanceInfo->vgpuCount, and \\a pVgpuInstanceInfo->vgpuCount is used to return\n * the number of vGPU instances written to the buffer.\n *\n * If the supplied buffer is not large enough to accommodate the vGPU instance array,\n * the function returns NVML_ERROR_INSUFFICIENT_SIZE, with the element count of\n * nvmlVgpuInstance_t array required in \\a pVgpuInstanceInfo->vgpuCount. To query the\n * number of active vGPU instances, call this function with pVgpuInstanceInfo->vgpuCount = 0\n * and pVgpuInstanceInfo->vgpuTypeIds = NULL. The code will return NVML_ERROR_INSUFFICIENT_SIZE,\n * or NVML_SUCCESS if no vGPU Types are active.\n *\n * @param gpuInstance          The GPU instance handle\n * @param pVgpuInstanceInfo    Pointer to the vGPU instance information structure \\a nvmlActiveVgpuInstanceInfo_t\n *\n * @return\n *         - \\ref NVML_SUCCESS                          Successful completion\n *         - \\ref NVML_ERROR_UNINITIALIZED              If the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT           If \\a gpuInstance is NULL or invalid, or \\a pVgpuInstanceInfo is NULL\n *                                                      or GPU Instance Id is invalid\n *         - \\ref NVML_ERROR_INSUFFICIENT_SIZE          \\a pVgpuInstanceInfo->vgpuTypeIds buffer is too small,\n *                                                      array element count is returned in \\a pVgpuInstanceInfo->vgpuCount\n *         - \\ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH  If the version of \\a pVgpuInstanceInfo is invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED              If not on a vGPU host or an unsupported GPU\n *         - \\ref NVML_ERROR_UNKNOWN                    On any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlGpuInstanceGetActiveVgpus(nvmlGpuInstance_t gpuInstance, nvmlActiveVgpuInstanceInfo_t *pVgpuInstanceInfo);\n\n/**\n * Set vGPU scheduler state for the given GPU instance\n *\n * %GB20X_OR_NEWER%\n *\n * Scheduler state and params will be allowed to set only when no VM is running within the GPU instance.\n * In \\a nvmlVgpuSchedulerState_t, IFF enableARRMode is enabled then provide the avgFactor and frequency\n * as input. If enableARRMode is disabled then provide timeslice as input.\n *\n * The scheduler state change won't persist across module load/unload and GPU Instance creation/deletion.\n *\n * @param gpuInstance                          The GPU instance handle\n * @param pScheduler                           Pointer to the caller-provided structure of nvmlVgpuSchedulerState_t\n *\n * @return\n *         - \\ref NVML_SUCCESS                          Upon success\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT           If \\a gpuInstance is NULL or invalid, or \\a pScheduler is NULL\n *                                                      or GPU Instance Id is invalid\n *         - \\ref NVML_ERROR_RESET_REQUIRED             If setting the state failed with fatal error, reboot is required\n *         - \\ref NVML_ERROR_NOT_SUPPORTED              If not on a vGPU host or an unsupported GPU or if any vGPU instance exists\n *         - \\ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH  If the version of \\a pScheduler is invalid\n *         - \\ref NVML_ERROR_UNKNOWN                    On any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlGpuInstanceSetVgpuSchedulerState(nvmlGpuInstance_t gpuInstance, nvmlVgpuSchedulerState_t *pScheduler);\n\n/**\n * Returns the vGPU scheduler state for the given GPU instance.\n * The information returned in \\a nvmlVgpuSchedulerStateInfo_t is not relevant if the BEST EFFORT policy is set.\n *\n * %GB20X_OR_NEWER%\n *\n * @param gpuInstance                The GPU instance handle\n * @param pSchedulerStateInfo        Reference in which \\a pSchedulerStateInfo is returned\n *\n * @return\n *         - \\ref NVML_SUCCESS                          vGPU scheduler state is successfully obtained\n *         - \\ref NVML_ERROR_UNINITIALIZED              If library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT           If \\a gpuInstance is NULL or invalid, or \\a pSchedulerStateInfo is NULL\n *                                                      or GPU Instance Id is invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED              If not on a vGPU host or an unsupported GPU\n *         - \\ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH  If the version of \\a pSchedulerStateInfo is invalid\n *         - \\ref NVML_ERROR_UNKNOWN                    on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlGpuInstanceGetVgpuSchedulerState(nvmlGpuInstance_t gpuInstance, nvmlVgpuSchedulerStateInfo_t *pSchedulerStateInfo);\n\n/**\n * Returns the vGPU scheduler logs for the given GPU instance.\n * \\a pSchedulerLogInfo points to a caller-allocated structure to contain the logs. The number of elements returned will\n * never exceed \\a NVML_SCHEDULER_SW_MAX_LOG_ENTRIES.\n *\n * To get the entire logs, call the function atleast 5 times a second.\n *\n * %GB20X_OR_NEWER%\n *\n * @param gpuInstance               The GPU instance handle\n * @param pSchedulerLogInfo         Reference in which \\a pSchedulerLogInfo is written\n *\n * @return\n *         - \\ref NVML_SUCCESS                          vGPU scheduler logs are successfully obtained\n *         - \\ref NVML_ERROR_UNINITIALIZED              If library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT           If \\a gpuInstance is NULL or invalid, or \\a pSchedulerLogInfo is NULL\n *                                                      or GPU Instance Id is invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED              If not on a vGPU host or an unsupported GPU\n *         - \\ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH  If the version of \\a pSchedulerLogInfo is invalid\n *         - \\ref NVML_ERROR_UNKNOWN                    on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlGpuInstanceGetVgpuSchedulerLog(nvmlGpuInstance_t gpuInstance, nvmlVgpuSchedulerLogInfo_t *pSchedulerLogInfo);\n\n/**\n * Query the creatable vGPU placement ID of the vGPU type within a GPU instance.\n *\n * %GB20X_OR_NEWER%\n *\n * An array of creatable vGPU placement IDs for the vGPU type ID indicated by \\a pCreatablePlacementInfo->vgpuTypeId\n * is returned in the caller-supplied buffer of \\a pCreatablePlacementInfo->placementIds. Memory needed for the\n * placementIds array should be allocated based on maximum instances of a vGPU type per GPU instance which can be\n * queried via \\ref nvmlVgpuTypeGetMaxInstancesPerGpuInstance().\n * If the provided count by the caller is insufficient, the function will return NVML_ERROR_INSUFFICIENT_SIZE along with\n * the number of required entries in \\a pCreatablePlacementInfo->count. The caller should then reallocate a buffer with the size\n * of pCreatablePlacementInfo->count * sizeof(pCreatablePlacementInfo->placementIds) and invoke the function again.\n * The creatable vGPU placement IDs may differ over time, as there may be restrictions on what type of vGPU the\n * vGPU instance is running.\n *\n * @param gpuInstance                The GPU instance handle\n * @param pCreatablePlacementInfo    Pointer to the list of vGPU creatable placement structure \\a nvmlVgpuCreatablePlacementInfo_t\n *\n * @return\n *         - \\ref NVML_SUCCESS                          Successful completion\n *         - \\ref NVML_ERROR_UNINITIALIZED              If the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT           If \\a gpuInstance is NULL or invalid, or \\a pCreatablePlacementInfo is NULL\n *                                                      or GPU Instance Id is invalid\n *         - \\ref NVML_ERROR_INSUFFICIENT_SIZE          If the buffer is small, element count is returned in \\a pCreatablePlacementInfo->count\n *         - \\ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH  If the version of \\a pCreatablePlacementInfo is invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED              If not on a vGPU host or an unsupported GPU or vGPU heterogeneous mode is not enabled\n *         - \\ref NVML_ERROR_UNKNOWN                    On any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlGpuInstanceGetVgpuTypeCreatablePlacements(nvmlGpuInstance_t gpuInstance, nvmlVgpuCreatablePlacementInfo_t *pCreatablePlacementInfo);\n\n/**\n * Get the vGPU heterogeneous mode for the GPU instance.\n *\n * When in heterogeneous mode, a vGPU can concurrently host timesliced vGPUs with differing framebuffer sizes.\n *\n * On successful return, the function returns \\a pHeterogeneousMode->mode with the current vGPU heterogeneous mode.\n * \\a pHeterogeneousMode->version is the version number of the structure nvmlVgpuHeterogeneousMode_t, the caller should\n * set the correct version number to retrieve the vGPU heterogeneous mode.\n * \\a pHeterogeneousMode->mode can either be \\ref NVML_FEATURE_ENABLED or \\ref NVML_FEATURE_DISABLED.\n *\n * %GB20X_OR_NEWER%\n *\n * @param gpuInstance               The GPU instance handle\n * @param pHeterogeneousMode        Pointer to the caller-provided structure of nvmlVgpuHeterogeneousMode_t\n *\n * @return\n *         - \\ref NVML_SUCCESS                          Upon success\n *         - \\ref NVML_ERROR_UNINITIALIZED              If library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT           If \\a gpuInstance is NULL or invalid, or \\a pHeterogeneousMode is NULL\n *                                                      or GPU Instance Id is invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED              If not on a vGPU host or an unsupported GPU or not in MIG mode\n *         - \\ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH  If the version of \\a pHeterogeneousMode is invalid\n *         - \\ref NVML_ERROR_UNKNOWN                    On any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlGpuInstanceGetVgpuHeterogeneousMode(nvmlGpuInstance_t gpuInstance, nvmlVgpuHeterogeneousMode_t *pHeterogeneousMode);\n\n/**\n * Enable or disable vGPU heterogeneous mode for the GPU instance.\n *\n * When in heterogeneous mode, a vGPU can concurrently host timesliced vGPUs with differing framebuffer sizes.\n *\n * API would return an appropriate error code upon unsuccessful activation. For example, the heterogeneous mode\n * set will fail with error \\ref NVML_ERROR_IN_USE if any vGPU instance is active within the GPU instance.\n * The caller of this API is expected to shutdown the vGPU VMs and retry setting the \\a mode.\n * On successful return, the function updates the vGPU heterogeneous mode with the user provided \\a pHeterogeneousMode->mode.\n * \\a pHeterogeneousMode->version is the version number of the structure nvmlVgpuHeterogeneousMode_t, the caller should\n * set the correct version number to set the vGPU heterogeneous mode.\n *\n * @param gpuInstance               The GPU instance handle\n * @param pHeterogeneousMode        Pointer to the caller-provided structure of nvmlVgpuHeterogeneousMode_t\n *\n * @return\n *         - \\ref NVML_SUCCESS                          Upon success\n *         - \\ref NVML_ERROR_UNINITIALIZED              If library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT           If \\a gpuInstance  is NULL or invalid,\n *                                                      or \\a pHeterogeneousMode is NULL or \\a pHeterogeneousMode->mode is invalid\n *                                                      or GPU Instance Id is invalid\n *         - \\ref NVML_ERROR_IN_USE                     If the \\a gpuInstance is in use\n *         - \\ref NVML_ERROR_NOT_SUPPORTED              If not on a vGPU host or an unsupported GPU\n *         - \\ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH  If the version of \\a pHeterogeneousMode is invalid\n *         - \\ref NVML_ERROR_UNKNOWN                    On any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlGpuInstanceSetVgpuHeterogeneousMode(nvmlGpuInstance_t gpuInstance, const nvmlVgpuHeterogeneousMode_t *pHeterogeneousMode);\n\n/** @} */\n\n/***************************************************************************************************/\n/** @defgroup nvmlVgpuMigration vGPU Migration\n * This chapter describes operations that are associated with vGPU Migration.\n *  @{\n */\n/***************************************************************************************************/\n\n/**\n * Structure representing range of vGPU versions.\n */\ntypedef struct nvmlVgpuVersion_st\n{\n    unsigned int minVersion; //!< Minimum vGPU version.\n    unsigned int maxVersion; //!< Maximum vGPU version.\n} nvmlVgpuVersion_t;\n\n/**\n * vGPU metadata structure.\n */\ntypedef struct nvmlVgpuMetadata_st\n{\n    unsigned int             version;                                                    //!< Current version of the structure\n    unsigned int             revision;                                                   //!< Current revision of the structure\n    nvmlVgpuGuestInfoState_t guestInfoState;                                             //!< Current state of Guest-dependent fields\n    char                     guestDriverVersion[NVML_SYSTEM_DRIVER_VERSION_BUFFER_SIZE]; //!< Version of driver installed in guest\n    char                     hostDriverVersion[NVML_SYSTEM_DRIVER_VERSION_BUFFER_SIZE];  //!< Version of driver installed in host\n    unsigned int             reserved[6];                                                //!< Reserved for internal use\n    unsigned int             vgpuVirtualizationCaps;                                     //!< vGPU virtualization capabilities bitfield\n    unsigned int             guestVgpuVersion;                                           //!< vGPU version of guest driver\n    unsigned int             opaqueDataSize;                                             //!< Size of opaque data field in bytes\n    char                     opaqueData[4];                                              //!< Opaque data\n} nvmlVgpuMetadata_t;\n\n/**\n * Physical GPU metadata structure\n */\ntypedef struct nvmlVgpuPgpuMetadata_st\n{\n    unsigned int            version;                                                    //!< Current version of the structure\n    unsigned int            revision;                                                   //!< Current revision of the structure\n    char                    hostDriverVersion[NVML_SYSTEM_DRIVER_VERSION_BUFFER_SIZE];  //!< Host driver version\n    unsigned int            pgpuVirtualizationCaps;                                     //!< Pgpu virtualization capabilities bitfield\n    unsigned int            reserved[5];                                                //!< Reserved for internal use\n    nvmlVgpuVersion_t       hostSupportedVgpuRange;                                     //!< vGPU version range supported by host driver\n    unsigned int            opaqueDataSize;                                             //!< Size of opaque data field in bytes\n    char                    opaqueData[4];                                              //!< Opaque data\n} nvmlVgpuPgpuMetadata_t;\n\n/**\n * vGPU VM compatibility codes\n */\ntypedef enum nvmlVgpuVmCompatibility_enum\n{\n    NVML_VGPU_VM_COMPATIBILITY_NONE         = 0x0,    //!< vGPU is not runnable\n    NVML_VGPU_VM_COMPATIBILITY_COLD         = 0x1,    //!< vGPU is runnable from a cold / powered-off state (ACPI S5)\n    NVML_VGPU_VM_COMPATIBILITY_HIBERNATE    = 0x2,    //!< vGPU is runnable from a hibernated state (ACPI S4)\n    NVML_VGPU_VM_COMPATIBILITY_SLEEP        = 0x4,    //!< vGPU is runnable from a sleeped state (ACPI S3)\n    NVML_VGPU_VM_COMPATIBILITY_LIVE         = 0x8     //!< vGPU is runnable from a live/paused (ACPI S0)\n} nvmlVgpuVmCompatibility_t;\n\n/**\n *  vGPU-pGPU compatibility limit codes\n */\ntypedef enum nvmlVgpuPgpuCompatibilityLimitCode_enum\n{\n    NVML_VGPU_COMPATIBILITY_LIMIT_NONE          = 0x0,           //!< Compatibility is not limited.\n    NVML_VGPU_COMPATIBILITY_LIMIT_HOST_DRIVER   = 0x1,           //!< ompatibility is limited by host driver version.\n    NVML_VGPU_COMPATIBILITY_LIMIT_GUEST_DRIVER  = 0x2,           //!< Compatibility is limited by guest driver version.\n    NVML_VGPU_COMPATIBILITY_LIMIT_GPU           = 0x4,           //!< Compatibility is limited by GPU hardware.\n    NVML_VGPU_COMPATIBILITY_LIMIT_OTHER         = 0x80000000     //!< Compatibility is limited by an undefined factor.\n} nvmlVgpuPgpuCompatibilityLimitCode_t;\n\n/**\n * vGPU-pGPU compatibility structure\n */\ntypedef struct nvmlVgpuPgpuCompatibility_st\n{\n    nvmlVgpuVmCompatibility_t               vgpuVmCompatibility;    //!< Compatibility of vGPU VM. See \\ref nvmlVgpuVmCompatibility_t\n    nvmlVgpuPgpuCompatibilityLimitCode_t    compatibilityLimitCode; //!< Limiting factor for vGPU-pGPU compatibility. See \\ref nvmlVgpuPgpuCompatibilityLimitCode_t\n} nvmlVgpuPgpuCompatibility_t;\n\n/**\n * Returns vGPU metadata structure for a running vGPU. The structure contains information about the vGPU and its associated VM\n * such as the currently installed NVIDIA guest driver version, together with host driver version and an opaque data section\n * containing internal state.\n *\n * nvmlVgpuInstanceGetMetadata() may be called at any time for a vGPU instance. Some fields in the returned structure are\n * dependent on information obtained from the guest VM, which may not yet have reached a state where that information\n * is available. The current state of these dependent fields is reflected in the info structure's \\ref nvmlVgpuGuestInfoState_t field.\n *\n * The VMM may choose to read and save the vGPU's VM info as persistent metadata associated with the VM, and provide\n * it to Virtual GPU Manager when creating a vGPU for subsequent instances of the VM.\n *\n * The caller passes in a buffer via \\a vgpuMetadata, with the size of the buffer in \\a bufferSize. If the vGPU Metadata structure\n * is too large to fit in the supplied buffer, the function returns NVML_ERROR_INSUFFICIENT_SIZE with the size needed\n * in \\a bufferSize.\n *\n * @param vgpuInstance             vGPU instance handle\n * @param vgpuMetadata             Pointer to caller-supplied buffer into which vGPU metadata is written\n * @param bufferSize               Size of vgpuMetadata buffer\n *\n * @return\n *         - \\ref NVML_SUCCESS                   vGPU metadata structure was successfully returned\n *         - \\ref NVML_ERROR_INSUFFICIENT_SIZE   vgpuMetadata buffer is too small, required size is returned in \\a bufferSize\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT    if \\a bufferSize is NULL or \\a vgpuInstance is 0; if \\a vgpuMetadata is NULL and the value of \\a bufferSize is not 0.\n *         - \\ref NVML_ERROR_NOT_FOUND           if \\a vgpuInstance does not match a valid active vGPU instance on the system\n *         - \\ref NVML_ERROR_UNKNOWN             on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlVgpuInstanceGetMetadata(nvmlVgpuInstance_t vgpuInstance, nvmlVgpuMetadata_t *vgpuMetadata, unsigned int *bufferSize);\n\n/**\n * Returns a vGPU metadata structure for the physical GPU indicated by \\a device. The structure contains information about\n * the GPU and the currently installed NVIDIA host driver version that's controlling it, together with an opaque data section\n * containing internal state.\n *\n * The caller passes in a buffer via \\a pgpuMetadata, with the size of the buffer in \\a bufferSize. If the \\a pgpuMetadata\n * structure is too large to fit in the supplied buffer, the function returns NVML_ERROR_INSUFFICIENT_SIZE with the size needed\n * in \\a bufferSize.\n *\n * @param device                The identifier of the target device\n * @param pgpuMetadata          Pointer to caller-supplied buffer into which \\a pgpuMetadata is written\n * @param bufferSize            Pointer to size of \\a pgpuMetadata buffer\n *\n * @return\n *         - \\ref NVML_SUCCESS                   GPU metadata structure was successfully returned\n *         - \\ref NVML_ERROR_INSUFFICIENT_SIZE   pgpuMetadata buffer is too small, required size is returned in \\a bufferSize\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT    if \\a bufferSize is NULL or \\a device is invalid; if \\a pgpuMetadata is NULL and the value of \\a bufferSize is not 0.\n *         - \\ref NVML_ERROR_NOT_SUPPORTED       vGPU is not supported by the system\n *         - \\ref NVML_ERROR_UNKNOWN             on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetVgpuMetadata(nvmlDevice_t device, nvmlVgpuPgpuMetadata_t *pgpuMetadata, unsigned int *bufferSize);\n\n/**\n * Takes a vGPU instance metadata structure read from \\ref nvmlVgpuInstanceGetMetadata(), and a vGPU metadata structure for a\n * physical GPU read from \\ref nvmlDeviceGetVgpuMetadata(), and returns compatibility information of the vGPU instance and the\n * physical GPU.\n *\n * The caller passes in a buffer via \\a compatibilityInfo, into which a compatibility information structure is written. The\n * structure defines the states in which the vGPU / VM may be booted on the physical GPU. If the vGPU / VM compatibility\n * with the physical GPU is limited, a limit code indicates the factor limiting compatability.\n * (see \\ref nvmlVgpuPgpuCompatibilityLimitCode_t for details).\n *\n * Note: vGPU compatibility does not take into account dynamic capacity conditions that may limit a system's ability to\n *       boot a given vGPU or associated VM.\n *\n * @param vgpuMetadata          Pointer to caller-supplied vGPU metadata structure\n * @param pgpuMetadata          Pointer to caller-supplied GPU metadata structure\n * @param compatibilityInfo     Pointer to caller-supplied buffer to hold compatibility info\n *\n * @return\n *         - \\ref NVML_SUCCESS                   vGPU metadata structure was successfully returned\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT    If \\a vgpuMetadata or \\a pgpuMetadata or \\a bufferSize are NULL\n *         - \\ref NVML_ERROR_UNKNOWN             On any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlGetVgpuCompatibility(nvmlVgpuMetadata_t *vgpuMetadata, nvmlVgpuPgpuMetadata_t *pgpuMetadata, nvmlVgpuPgpuCompatibility_t *compatibilityInfo);\n\n/**\n * Returns the properties of the physical GPU indicated by the device in an ascii-encoded string format.\n *\n * The caller passes in a buffer via \\a pgpuMetadata, with the size of the buffer in \\a bufferSize. If the\n * string is too large to fit in the supplied buffer, the function returns NVML_ERROR_INSUFFICIENT_SIZE with the size needed\n * in \\a bufferSize.\n *\n * @param device                The identifier of the target device\n * @param pgpuMetadata          Pointer to caller-supplied buffer into which \\a pgpuMetadata is written\n * @param bufferSize            Pointer to size of \\a pgpuMetadata buffer\n *\n * @return\n *         - \\ref NVML_SUCCESS                   GPU metadata structure was successfully returned\n *         - \\ref NVML_ERROR_INSUFFICIENT_SIZE   \\a pgpuMetadata buffer is too small, required size is returned in \\a bufferSize\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT    If \\a bufferSize is NULL or \\a device is invalid; if \\a pgpuMetadata is NULL and the value of \\a bufferSize is not 0.\n *         - \\ref NVML_ERROR_NOT_SUPPORTED       If vGPU is not supported by the system\n *         - \\ref NVML_ERROR_UNKNOWN             On any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetPgpuMetadataString(nvmlDevice_t device, char *pgpuMetadata, unsigned int *bufferSize);\n\n/**\n * Returns the vGPU Software scheduler logs.\n * \\a pSchedulerLog points to a caller-allocated structure to contain the logs. The number of elements returned will\n * never exceed \\a NVML_SCHEDULER_SW_MAX_LOG_ENTRIES.\n *\n * To get the entire logs, call the function atleast 5 times a second.\n *\n * For Pascal &tm; or newer fully supported devices.\n *\n * @param device                The identifier of the target \\a device\n * @param pSchedulerLog         Reference in which \\a pSchedulerLog is written\n *\n * @return\n *         - \\ref NVML_SUCCESS                   vGPU scheduler logs were successfully obtained\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT    If \\a pSchedulerLog is NULL or \\a device is invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED       If MIG is enabled or \\a device not in vGPU host mode\n *         - \\ref NVML_ERROR_UNKNOWN             On any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetVgpuSchedulerLog(nvmlDevice_t device, nvmlVgpuSchedulerLog_t *pSchedulerLog);\n\n/**\n * Returns the vGPU scheduler state.\n * The information returned in \\a nvmlVgpuSchedulerGetState_t is not relevant if the BEST EFFORT policy is set.\n *\n * For Pascal &tm; or newer fully supported devices.\n *\n * @param device                The identifier of the target \\a device\n * @param pSchedulerState       Reference in which \\a pSchedulerState is returned\n *\n * @return\n *         - \\ref NVML_SUCCESS                   vGPU scheduler state is successfully obtained\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT    If \\a pSchedulerState is NULL or \\a device is invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED       If MIG is enabled or \\a device not in vGPU host mode\n *         - \\ref NVML_ERROR_UNKNOWN             On any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetVgpuSchedulerState(nvmlDevice_t device, nvmlVgpuSchedulerGetState_t *pSchedulerState);\n\n/**\n * Returns the vGPU scheduler capabilities.\n * The list of supported vGPU schedulers returned in \\a nvmlVgpuSchedulerCapabilities_t is from\n * the NVML_VGPU_SCHEDULER_POLICY_*. This list enumerates the supported scheduler policies\n * if the engine is Graphics type.\n * The other values in \\a nvmlVgpuSchedulerCapabilities_t are also applicable if the engine is\n * Graphics type. For other engine types, it is BEST EFFORT policy.\n * If ARR is supported and enabled, scheduling frequency and averaging factor are applicable\n * else timeSlice is applicable.\n *\n * For Pascal &tm; or newer fully supported devices.\n *\n * @param device                The identifier of the target \\a device\n * @param pCapabilities         Reference in which \\a pCapabilities is written\n *\n * @return\n *         - \\ref NVML_SUCCESS                   vGPU scheduler capabilities were successfully obtained\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT    If \\a pCapabilities is NULL or \\a device is invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED       The API is not supported in current state or \\a device not in vGPU host mode\n *         - \\ref NVML_ERROR_UNKNOWN             On any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetVgpuSchedulerCapabilities(nvmlDevice_t device, nvmlVgpuSchedulerCapabilities_t *pCapabilities);\n\n/**\n * Sets the vGPU scheduler state.\n *\n * For Pascal &tm; or newer fully supported devices.\n *\n * The scheduler state change won't persist across module load/unload.\n * Scheduler state and params will be allowed to set only when no VM is running.\n * In \\a nvmlVgpuSchedulerSetState_t, IFF enableARRMode is enabled then\n * provide avgFactorForARR and frequency as input. If enableARRMode is disabled\n * then provide timeslice as input.\n *\n * @param device                The identifier of the target \\a device\n * @param pSchedulerState       vGPU \\a pSchedulerState to set\n *\n * @return\n *         - \\ref NVML_SUCCESS                  vGPU scheduler state has been successfully set\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT   If \\a pSchedulerState is NULL or \\a device is invalid\n *         - \\ref NVML_ERROR_RESET_REQUIRED     If setting \\a pSchedulerState failed with fatal error,\n *                                              reboot is required to overcome from this error.\n *         - \\ref NVML_ERROR_NOT_SUPPORTED      If MIG is enabled or \\a device not in vGPU host mode\n *                                              or if any vGPU instance currently exists on the \\a device\n *         - \\ref NVML_ERROR_UNKNOWN            On any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceSetVgpuSchedulerState(nvmlDevice_t device, nvmlVgpuSchedulerSetState_t *pSchedulerState);\n\n/*\n * Virtual GPU (vGPU) version\n *\n * The NVIDIA vGPU Manager and the guest drivers are tagged with a range of supported vGPU versions. This determines the range of NVIDIA guest driver versions that\n * are compatible for vGPU feature support with a given NVIDIA vGPU Manager. For vGPU feature support, the range of supported versions for the NVIDIA vGPU Manager\n * and the guest driver must overlap. Otherwise, the guest driver fails to load in the VM.\n *\n * When the NVIDIA guest driver loads, either when the VM is booted or when the driver is installed or upgraded, a negotiation occurs between the guest driver\n * and the NVIDIA vGPU Manager to select the highest mutually compatible vGPU version. The negotiated vGPU version stays the same across VM migration.\n */\n\n/**\n * Query the ranges of supported vGPU versions.\n *\n * This function gets the linear range of supported vGPU versions that is preset for the NVIDIA vGPU Manager and the range set by an administrator.\n * If the preset range has not been overridden by \\ref nvmlSetVgpuVersion, both ranges are the same.\n *\n * The caller passes pointers to the following \\ref nvmlVgpuVersion_t structures, into which the NVIDIA vGPU Manager writes the ranges:\n * 1. \\a supported structure that represents the preset range of vGPU versions supported by the NVIDIA vGPU Manager.\n * 2. \\a current structure that represents the range of supported vGPU versions set by an administrator. By default, this range is the same as the preset range.\n *\n * @param supported  Pointer to the structure in which the preset range of vGPU versions supported by the NVIDIA vGPU Manager is written\n * @param current    Pointer to the structure in which the range of supported vGPU versions set by an administrator is written\n *\n * @return\n * - \\ref NVML_SUCCESS                 The vGPU version range structures were successfully obtained.\n * - \\ref NVML_ERROR_NOT_SUPPORTED     The API is not supported.\n * - \\ref NVML_ERROR_INVALID_ARGUMENT  The \\a supported parameter or the \\a current parameter is NULL.\n * - \\ref NVML_ERROR_UNKNOWN           An error occurred while the data was being fetched.\n */\nnvmlReturn_t DECLDIR nvmlGetVgpuVersion(nvmlVgpuVersion_t *supported, nvmlVgpuVersion_t *current);\n\n/**\n * Override the preset range of vGPU versions supported by the NVIDIA vGPU Manager with a range set by an administrator.\n *\n * This function configures the NVIDIA vGPU Manager with a range of supported vGPU versions set by an administrator. This range must be a subset of the\n * preset range that the NVIDIA vGPU Manager supports. The custom range set by an administrator takes precedence over the preset range and is advertised to\n * the guest VM for negotiating the vGPU version. See \\ref nvmlGetVgpuVersion for details of how to query the preset range of versions supported.\n *\n * This function takes a pointer to vGPU version range structure \\ref nvmlVgpuVersion_t as input to override the preset vGPU version range that the NVIDIA vGPU Manager supports.\n *\n * After host system reboot or driver reload, the range of supported versions reverts to the range that is preset for the NVIDIA vGPU Manager.\n *\n * @note 1. The range set by the administrator must be a subset of the preset range that the NVIDIA vGPU Manager supports. Otherwise, an error is returned.\n *       2. If the range of supported guest driver versions does not overlap the range set by the administrator, the guest driver fails to load.\n *       3. If the range of supported guest driver versions overlaps the range set by the administrator, the guest driver will load with a negotiated\n *          vGPU version that is the maximum value in the overlapping range.\n *       4. No VMs must be running on the host when this function is called. If a VM is running on the host, the call to this function fails.\n *\n * @param vgpuVersion   Pointer to a caller-supplied range of supported vGPU versions.\n *\n * @return\n * - \\ref NVML_SUCCESS                 The preset range of supported vGPU versions was successfully overridden.\n * - \\ref NVML_ERROR_NOT_SUPPORTED     The API is not supported.\n * - \\ref NVML_ERROR_IN_USE            The range was not overridden because a VM is running on the host.\n * - \\ref NVML_ERROR_INVALID_ARGUMENT  The \\a vgpuVersion parameter specifies a range that is outside the range supported by the NVIDIA vGPU Manager or if \\a vgpuVersion is NULL.\n */\nnvmlReturn_t DECLDIR nvmlSetVgpuVersion(nvmlVgpuVersion_t *vgpuVersion);\n\n/** @} */ // @defgroup nvmlVgpuMigration vGPU Migration\n\n/***************************************************************************************************/\n/** @defgroup nvmlUtil vGPU Utilization and Accounting\n * This chapter describes operations that are associated with vGPU Utilization and Accounting.\n *  @{\n */\n/***************************************************************************************************/\n\n/**\n * Retrieves current utilization for vGPUs on a physical GPU (device).\n *\n * For Kepler &tm; or newer fully supported devices.\n *\n * Reads recent utilization of GPU SM (3D/Compute), framebuffer, video encoder, and video decoder for vGPU instances running\n * on a device. Utilization values are returned as an array of utilization sample structures in the caller-supplied buffer\n * pointed at by \\a utilizationSamples. One utilization sample structure is returned per vGPU instance, and includes the\n * CPU timestamp at which the samples were recorded. Individual utilization values are returned as \"unsigned int\" values\n * in nvmlValue_t unions. The function sets the caller-supplied \\a sampleValType to NVML_VALUE_TYPE_UNSIGNED_INT to\n * indicate the returned value type.\n *\n * To read utilization values, first determine the size of buffer required to hold the samples by invoking the function with\n * \\a utilizationSamples set to NULL. The function will return NVML_ERROR_INSUFFICIENT_SIZE, with the current vGPU instance\n * count in \\a vgpuInstanceSamplesCount, or NVML_SUCCESS if the current vGPU instance count is zero. The caller should allocate\n * a buffer of size vgpuInstanceSamplesCount * sizeof(nvmlVgpuInstanceUtilizationSample_t). Invoke the function again with\n * the allocated buffer passed in \\a utilizationSamples, and \\a vgpuInstanceSamplesCount set to the number of entries the\n * buffer is sized for.\n *\n * On successful return, the function updates \\a vgpuInstanceSampleCount with the number of vGPU utilization sample\n * structures that were actually written. This may differ from a previously read value as vGPU instances are created or\n * destroyed.\n *\n * lastSeenTimeStamp represents the CPU timestamp in microseconds at which utilization samples were last read. Set it to 0\n * to read utilization based on all the samples maintained by the driver's internal sample buffer. Set lastSeenTimeStamp\n * to a timeStamp retrieved from a previous query to read utilization since the previous query.\n *\n * @param device                        The identifier for the target device\n * @param lastSeenTimeStamp             Return only samples with timestamp greater than lastSeenTimeStamp.\n * @param sampleValType                 Pointer to caller-supplied buffer to hold the type of returned sample values\n * @param vgpuInstanceSamplesCount      Pointer to caller-supplied array size, and returns number of vGPU instances\n * @param utilizationSamples            Pointer to caller-supplied buffer in which vGPU utilization samples are returned\n\n * @return\n *         - \\ref NVML_SUCCESS                 if utilization samples are successfully retrieved\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid, \\a vgpuInstanceSamplesCount or \\a sampleValType is\n *                                             NULL, or a sample count of 0 is passed with a non-NULL \\a utilizationSamples\n *         - \\ref NVML_ERROR_INSUFFICIENT_SIZE if supplied \\a vgpuInstanceSamplesCount is too small to return samples for all\n *                                             vGPU instances currently executing on the device\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if vGPU is not supported by the device\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_NOT_FOUND         if sample entries are not found\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetVgpuUtilization(nvmlDevice_t device, unsigned long long lastSeenTimeStamp,\n                                                  nvmlValueType_t *sampleValType, unsigned int *vgpuInstanceSamplesCount,\n                                                  nvmlVgpuInstanceUtilizationSample_t *utilizationSamples);\n\n/**\n * Retrieves recent utilization for vGPU instances running on a physical GPU (device).\n *\n * For Kepler &tm; or newer fully supported devices.\n *\n * Reads recent utilization of GPU SM (3D/Compute), framebuffer, video encoder, video decoder, jpeg decoder, and OFA for vGPU\n * instances running on a device. Utilization values are returned as an array of utilization sample structures in the caller-supplied\n * buffer pointed at by \\a vgpuUtilInfo->vgpuUtilArray. One utilization sample structure is returned per vGPU instance, and includes the\n * CPU timestamp at which the samples were recorded. Individual utilization values are returned as \"unsigned int\" values\n * in nvmlValue_t unions. The function sets the caller-supplied \\a vgpuUtilInfo->sampleValType to NVML_VALUE_TYPE_UNSIGNED_INT to\n * indicate the returned value type.\n *\n * To read utilization values, first determine the size of buffer required to hold the samples by invoking the function with\n * \\a vgpuUtilInfo->vgpuUtilArray set to NULL. The function will return NVML_ERROR_INSUFFICIENT_SIZE, with the current vGPU instance\n * count in \\a vgpuUtilInfo->vgpuInstanceCount, or NVML_SUCCESS if the current vGPU instance count is zero. The caller should allocate\n * a buffer of size vgpuUtilInfo->vgpuInstanceCount * sizeof(nvmlVgpuInstanceUtilizationInfo_t). Invoke the function again with\n * the allocated buffer passed in \\a vgpuUtilInfo->vgpuUtilArray, and \\a vgpuUtilInfo->vgpuInstanceCount set to the number of entries the\n * buffer is sized for.\n *\n * On successful return, the function updates \\a vgpuUtilInfo->vgpuInstanceCount with the number of vGPU utilization sample\n * structures that were actually written. This may differ from a previously read value as vGPU instances are created or\n * destroyed.\n *\n * \\a vgpuUtilInfo->lastSeenTimeStamp represents the CPU timestamp in microseconds at which utilization samples were last read. Set it to 0\n * to read utilization based on all the samples maintained by the driver's internal sample buffer. Set \\a vgpuUtilInfo->lastSeenTimeStamp\n * to a timeStamp retrieved from a previous query to read utilization since the previous query.\n *\n * @param device                        The identifier for the target device\n * @param vgpuUtilInfo                  Pointer to the caller-provided structure of nvmlVgpuInstancesUtilizationInfo_t\n\n * @return\n *         - \\ref NVML_SUCCESS                          If utilization samples are successfully retrieved\n *         - \\ref NVML_ERROR_UNINITIALIZED              If the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT           If \\a device is invalid, \\a vgpuUtilInfo is NULL, or \\a vgpuUtilInfo->vgpuInstanceCount is 0\n *         - \\ref NVML_ERROR_NOT_SUPPORTED              If vGPU is not supported by the device\n *         - \\ref NVML_ERROR_GPU_IS_LOST                If the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH  If the version of \\a vgpuUtilInfo is invalid\n *         - \\ref NVML_ERROR_INSUFFICIENT_SIZE          If \\a vgpuUtilInfo->vgpuUtilArray is NULL, or the buffer size of vgpuUtilInfo->vgpuInstanceCount is too small.\n *                                                      The caller should check the current vGPU instance count from the returned vgpuUtilInfo->vgpuInstanceCount, and call\n *                                                      the function again with a buffer of size vgpuUtilInfo->vgpuInstanceCount * sizeof(nvmlVgpuInstanceUtilizationInfo_t)\n *         - \\ref NVML_ERROR_NOT_FOUND                  If sample entries are not found\n *         - \\ref NVML_ERROR_UNKNOWN                    On any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetVgpuInstancesUtilizationInfo(nvmlDevice_t device,\n                                                               nvmlVgpuInstancesUtilizationInfo_t *vgpuUtilInfo);\n\n/**\n * Retrieves current utilization for processes running on vGPUs on a physical GPU (device).\n *\n * For Maxwell &tm; or newer fully supported devices.\n *\n * Reads recent utilization of GPU SM (3D/Compute), framebuffer, video encoder, and video decoder for processes running on\n * vGPU instances active on a device. Utilization values are returned as an array of utilization sample structures in the\n * caller-supplied buffer pointed at by \\a utilizationSamples. One utilization sample structure is returned per process running\n * on vGPU instances, that had some non-zero utilization during the last sample period. It includes the CPU timestamp at which\n * the samples were recorded. Individual utilization values are returned as \"unsigned int\" values.\n *\n * To read utilization values, first determine the size of buffer required to hold the samples by invoking the function with\n * \\a utilizationSamples set to NULL. The function will return NVML_ERROR_INSUFFICIENT_SIZE, with the current vGPU instance\n * count in \\a vgpuProcessSamplesCount. The caller should allocate a buffer of size\n * vgpuProcessSamplesCount * sizeof(nvmlVgpuProcessUtilizationSample_t). Invoke the function again with\n * the allocated buffer passed in \\a utilizationSamples, and \\a vgpuProcessSamplesCount set to the number of entries the\n * buffer is sized for.\n *\n * On successful return, the function updates \\a vgpuSubProcessSampleCount with the number of vGPU sub process utilization sample\n * structures that were actually written. This may differ from a previously read value depending on the number of processes that are active\n * in any given sample period.\n *\n * lastSeenTimeStamp represents the CPU timestamp in microseconds at which utilization samples were last read. Set it to 0\n * to read utilization based on all the samples maintained by the driver's internal sample buffer. Set lastSeenTimeStamp\n * to a timeStamp retrieved from a previous query to read utilization since the previous query.\n *\n * @param device                        The identifier for the target device\n * @param lastSeenTimeStamp             Return only samples with timestamp greater than lastSeenTimeStamp.\n * @param vgpuProcessSamplesCount       Pointer to caller-supplied array size, and returns number of processes running on vGPU instances\n * @param utilizationSamples            Pointer to caller-supplied buffer in which vGPU sub process utilization samples are returned\n\n * @return\n *         - \\ref NVML_SUCCESS                 if utilization samples are successfully retrieved\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid, \\a vgpuProcessSamplesCount or a sample count of 0 is\n *                                             passed with a non-NULL \\a utilizationSamples\n *         - \\ref NVML_ERROR_INSUFFICIENT_SIZE if supplied \\a vgpuProcessSamplesCount is too small to return samples for all\n *                                             vGPU instances currently executing on the device\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if vGPU is not supported by the device\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_NOT_FOUND         if sample entries are not found\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetVgpuProcessUtilization(nvmlDevice_t device, unsigned long long lastSeenTimeStamp,\n                                                         unsigned int *vgpuProcessSamplesCount,\n                                                         nvmlVgpuProcessUtilizationSample_t *utilizationSamples);\n\n/**\n * Retrieves recent utilization for processes running on vGPU instances on a physical GPU (device).\n *\n * For Maxwell &tm; or newer fully supported devices.\n *\n * Reads recent utilization of GPU SM (3D/Compute), framebuffer, video encoder, video decoder, jpeg decoder, and OFA for processes running\n * on vGPU instances active on a device. Utilization values are returned as an array of utilization sample structures in the caller-supplied\n * buffer pointed at by \\a vgpuProcUtilInfo->vgpuProcUtilArray. One utilization sample structure is returned per process running\n * on vGPU instances, that had some non-zero utilization during the last sample period. It includes the CPU timestamp at which\n * the samples were recorded. Individual utilization values are returned as \"unsigned int\" values.\n *\n * To read utilization values, first determine the size of buffer required to hold the samples by invoking the function with\n * \\a vgpuProcUtilInfo->vgpuProcUtilArray set to NULL. The function will return NVML_ERROR_INSUFFICIENT_SIZE, with the current processes' count\n * running on vGPU instances in \\a vgpuProcUtilInfo->vgpuProcessCount. The caller should allocate a buffer of size\n * vgpuProcUtilInfo->vgpuProcessCount * sizeof(nvmlVgpuProcessUtilizationSample_t). Invoke the function again with the allocated buffer passed\n * in \\a vgpuProcUtilInfo->vgpuProcUtilArray, and \\a vgpuProcUtilInfo->vgpuProcessCount set to the number of entries the buffer is sized for.\n *\n * On successful return, the function updates \\a vgpuProcUtilInfo->vgpuProcessCount with the number of vGPU sub process utilization sample\n * structures that were actually written. This may differ from a previously read value depending on the number of processes that are active\n * in any given sample period.\n *\n * vgpuProcUtilInfo->lastSeenTimeStamp represents the CPU timestamp in microseconds at which utilization samples were last read. Set it to 0\n * to read utilization based on all the samples maintained by the driver's internal sample buffer. Set vgpuProcUtilInfo->lastSeenTimeStamp\n * to a timeStamp retrieved from a previous query to read utilization since the previous query.\n *\n * @param device                        The identifier for the target device\n * @param vgpuProcUtilInfo              Pointer to the caller-provided structure of nvmlVgpuProcessesUtilizationInfo_t\n\n * @return\n *         - \\ref NVML_SUCCESS                          If utilization samples are successfully retrieved\n *         - \\ref NVML_ERROR_UNINITIALIZED              If the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT           If \\a device is invalid, or \\a vgpuProcUtilInfo is null\n *         - \\ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH  If the version of \\a vgpuProcUtilInfo is invalid\n *         - \\ref NVML_ERROR_INSUFFICIENT_SIZE          If \\a vgpuProcUtilInfo->vgpuProcUtilArray is null, or supplied \\a vgpuProcUtilInfo->vgpuProcessCount\n *                                                      is too small to return samples for all processes on vGPU instances currently executing on the device.\n *                                                      The caller should check the current processes count from the returned \\a vgpuProcUtilInfo->vgpuProcessCount,\n *                                                      and call the function again with a buffer of size\n *                                                      vgpuProcUtilInfo->vgpuProcessCount * sizeof(nvmlVgpuProcessUtilizationSample_t)\n *         - \\ref NVML_ERROR_NOT_SUPPORTED              If vGPU is not supported by the device\n *         - \\ref NVML_ERROR_GPU_IS_LOST                If the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_NOT_FOUND                  If sample entries are not found\n *         - \\ref NVML_ERROR_UNKNOWN                    On any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetVgpuProcessesUtilizationInfo(nvmlDevice_t device, nvmlVgpuProcessesUtilizationInfo_t *vgpuProcUtilInfo);\n\n/**\n * Queries the state of per process accounting mode on vGPU.\n *\n * For Maxwell &tm; or newer fully supported devices.\n *\n * @param vgpuInstance            The identifier of the target vGPU instance\n * @param mode                    Reference in which to return the current accounting mode\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if the mode has been successfully retrieved\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a vgpuInstance is 0, or \\a mode is NULL\n *         - \\ref NVML_ERROR_NOT_FOUND         if \\a vgpuInstance does not match a valid active vGPU instance on the system\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the vGPU doesn't support this feature\n *         - \\ref NVML_ERROR_DRIVER_NOT_LOADED if NVIDIA driver is not running on the vGPU instance\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlVgpuInstanceGetAccountingMode(nvmlVgpuInstance_t vgpuInstance, nvmlEnableState_t *mode);\n\n/**\n * Queries list of processes running on vGPU that can be queried for accounting stats. The list of processes\n * returned can be in running or terminated state.\n *\n * For Maxwell &tm; or newer fully supported devices.\n *\n * To just query the maximum number of processes that can be queried, call this function with *count = 0 and\n * pids=NULL. The return code will be NVML_ERROR_INSUFFICIENT_SIZE, or NVML_SUCCESS if list is empty.\n *\n * For more details see \\ref nvmlVgpuInstanceGetAccountingStats.\n *\n * @note In case of PID collision some processes might not be accessible before the circular buffer is full.\n *\n * @param vgpuInstance            The identifier of the target vGPU instance\n * @param count                   Reference in which to provide the \\a pids array size, and\n *                                to return the number of elements ready to be queried\n * @param pids                    Reference in which to return list of process ids\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if pids were successfully retrieved\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a vgpuInstance is 0, or \\a count is NULL\n *         - \\ref NVML_ERROR_NOT_FOUND         if \\a vgpuInstance does not match a valid active vGPU instance on the system\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the vGPU doesn't support this feature or accounting mode is disabled\n *         - \\ref NVML_ERROR_INSUFFICIENT_SIZE if \\a count is too small (\\a count is set to expected value)\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n *\n * @see nvmlVgpuInstanceGetAccountingPids\n */\nnvmlReturn_t DECLDIR nvmlVgpuInstanceGetAccountingPids(nvmlVgpuInstance_t vgpuInstance, unsigned int *count, unsigned int *pids);\n\n/**\n * Queries process's accounting stats.\n *\n * For Maxwell &tm; or newer fully supported devices.\n *\n * Accounting stats capture GPU utilization and other statistics across the lifetime of a process, and\n * can be queried during life time of the process or after its termination.\n * The time field in \\ref nvmlAccountingStats_t is reported as 0 during the lifetime of the process and\n * updated to actual running time after its termination.\n * Accounting stats are kept in a circular buffer, newly created processes overwrite information about old\n * processes.\n *\n * See \\ref nvmlAccountingStats_t for description of each returned metric.\n * List of processes that can be queried can be retrieved from \\ref nvmlVgpuInstanceGetAccountingPids.\n *\n * @note Accounting Mode needs to be on. See \\ref nvmlVgpuInstanceGetAccountingMode.\n * @note Only compute and graphics applications stats can be queried. Monitoring applications stats can't be\n *         queried since they don't contribute to GPU utilization.\n * @note In case of pid collision stats of only the latest process (that terminated last) will be reported\n *\n * @param vgpuInstance            The identifier of the target vGPU instance\n * @param pid                     Process Id of the target process to query stats for\n * @param stats                   Reference in which to return the process's accounting stats\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if stats have been successfully retrieved\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a vgpuInstance is 0, or \\a stats is NULL\n *         - \\ref NVML_ERROR_NOT_FOUND         if \\a vgpuInstance does not match a valid active vGPU instance on the system\n *                                             or \\a stats is not found\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the vGPU doesn't support this feature or accounting mode is disabled\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlVgpuInstanceGetAccountingStats(nvmlVgpuInstance_t vgpuInstance, unsigned int pid, nvmlAccountingStats_t *stats);\n\n/**\n * Clears accounting information of the vGPU instance that have already terminated.\n *\n * For Maxwell &tm; or newer fully supported devices.\n * Requires root/admin permissions.\n *\n * @note Accounting Mode needs to be on. See \\ref nvmlVgpuInstanceGetAccountingMode.\n * @note Only compute and graphics applications stats are reported and can be cleared since monitoring applications\n *         stats don't contribute to GPU utilization.\n *\n * @param vgpuInstance            The identifier of the target vGPU instance\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if accounting information has been cleared\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a vgpuInstance is invalid\n *         - \\ref NVML_ERROR_NO_PERMISSION     if the user doesn't have permission to perform this operation\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the vGPU doesn't support this feature or accounting mode is disabled\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlVgpuInstanceClearAccountingPids(nvmlVgpuInstance_t vgpuInstance);\n\n/**\n * Query the license information of the vGPU instance.\n *\n * For Maxwell &tm; or newer fully supported devices.\n *\n * @param vgpuInstance              Identifier of the target vGPU instance\n * @param licenseInfo               Pointer to vGPU license information structure\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if information is successfully retrieved\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a vgpuInstance is 0, or \\a licenseInfo is NULL\n *         - \\ref NVML_ERROR_NOT_FOUND         if \\a vgpuInstance does not match a valid active vGPU instance on the system\n *         - \\ref NVML_ERROR_DRIVER_NOT_LOADED if NVIDIA driver is not running on the vGPU instance\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlVgpuInstanceGetLicenseInfo_v2(nvmlVgpuInstance_t vgpuInstance, nvmlVgpuLicenseInfo_t *licenseInfo);\n/** @} */\n\n/***************************************************************************************************/\n/** @defgroup nvmlExcludedGpuQueries Excluded GPU Queries\n * This chapter describes NVML operations that are associated with excluded GPUs.\n *  @{\n */\n/***************************************************************************************************/\n\n/**\n * Excluded GPU device information\n **/\ntypedef struct nvmlExcludedDeviceInfo_st\n{\n    nvmlPciInfo_t pciInfo;                   //!< The PCI information for the excluded GPU\n    char uuid[NVML_DEVICE_UUID_BUFFER_SIZE]; //!< The ASCII string UUID for the excluded GPU\n} nvmlExcludedDeviceInfo_t;\n\n /**\n * Retrieves the number of excluded GPU devices in the system.\n *\n * For all products.\n *\n * @param deviceCount                          Reference in which to return the number of excluded devices\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a deviceCount has been set\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a deviceCount is NULL\n */\nnvmlReturn_t DECLDIR nvmlGetExcludedDeviceCount(unsigned int *deviceCount);\n\n/**\n * Acquire the device information for an excluded GPU device, based on its index.\n *\n * For all products.\n *\n * Valid indices are derived from the \\a deviceCount returned by\n *   \\ref nvmlGetExcludedDeviceCount(). For example, if \\a deviceCount is 2 the valid indices\n *   are 0 and 1, corresponding to GPU 0 and GPU 1.\n *\n * @param index                                The index of the target GPU, >= 0 and < \\a deviceCount\n * @param info                                 Reference in which to return the device information\n *\n * @return\n *         - \\ref NVML_SUCCESS                  if \\a device has been set\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT   if \\a index is invalid or \\a info is NULL\n *\n * @see nvmlGetExcludedDeviceCount\n */\nnvmlReturn_t DECLDIR nvmlGetExcludedDeviceInfoByIndex(unsigned int index, nvmlExcludedDeviceInfo_t *info);\n\n/** @} */\n\n/***************************************************************************************************/\n/** @defgroup nvmlGPUPRMAccess PRM Access\n * This chapter describes NVML operations that are associated with PRM register reads\n *  @{\n */\n/***************************************************************************************************/\n\n#define NVML_PRM_DATA_MAX_SIZE 496\n/**\n * Main PRM input structure\n */\ntypedef struct\n{\n    /* I/O parameters */\n    unsigned dataSize;                                  //!< Size of the input TLV data.\n    unsigned status;                                    //!< OUT: status of the PRM command\n    union {\n        /* Input data in TLV format */\n        unsigned char inData[NVML_PRM_DATA_MAX_SIZE];   //!< IN: Input data in TLV format\n        /* Output data in TLV format */\n        unsigned char outData[NVML_PRM_DATA_MAX_SIZE];  //!< OUT: Output PRM data in TLV format\n    };\n} nvmlPRMTLV_v1_t;\n\n/**\n * Read or write a GPU PRM register. The input is assumed to be in TLV format in\n * network byte order.\n *\n * %BLACKWELL_OR_NEWER%\n *\n * Supported on Linux only.\n *\n * @param device                                        Identifer of target GPU device\n * @param buffer                                        Structure holding the input data in TLV format as well as\n *                                                      the PRM register contents in TLV format (in the case of a successful\n *                                                      read operation).\n *                                                      Note: the input data and any returned data shall be in network byte order.\n *\n * @return\n *        - \\ref NVML_SUCCESS                           on success\n *        - \\ref NVML_ERROR_INVALID_ARGUMENT            if \\p device or \\p buffer are invalid\n *        - \\ref NVML_ERROR_NO_PERMISSION               if user does not have permission to perform this operation\n *        - \\ref NVML_ERROR_NOT_SUPPORTED               if this feature is not supported by the device\n *        - \\ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH   if the version specified in \\p buffer is not supported\n */\nnvmlReturn_t DECLDIR nvmlDeviceReadWritePRM_v1(nvmlDevice_t device, nvmlPRMTLV_v1_t *buffer);\n\n/** @} */\n\n/***************************************************************************************************/\n/** @defgroup nvmlMultiInstanceGPU Multi Instance GPU Management\n * This chapter describes NVML operations that are associated with Multi Instance GPU management.\n *  @{\n */\n/***************************************************************************************************/\n\n/**\n * Disable Multi Instance GPU mode.\n */\n#define NVML_DEVICE_MIG_DISABLE 0x0\n\n/**\n * Enable Multi Instance GPU mode.\n */\n#define NVML_DEVICE_MIG_ENABLE 0x1\n\n/**\n * GPU instance profiles.\n *\n * These macros should be passed to \\ref nvmlDeviceGetGpuInstanceProfileInfo to retrieve the\n * detailed information about a GPU instance such as profile ID, engine counts.\n */\n#define NVML_GPU_INSTANCE_PROFILE_1_SLICE      0x0\n#define NVML_GPU_INSTANCE_PROFILE_2_SLICE      0x1\n#define NVML_GPU_INSTANCE_PROFILE_3_SLICE      0x2\n#define NVML_GPU_INSTANCE_PROFILE_4_SLICE      0x3\n#define NVML_GPU_INSTANCE_PROFILE_7_SLICE      0x4\n#define NVML_GPU_INSTANCE_PROFILE_8_SLICE      0x5\n#define NVML_GPU_INSTANCE_PROFILE_6_SLICE      0x6\n// 1_SLICE profile with at least one (if supported at all) of Decoder, Encoder, JPEG, OFA engines.\n#define NVML_GPU_INSTANCE_PROFILE_1_SLICE_REV1 0x7\n// 2_SLICE profile with at least one (if supported at all) of Decoder, Encoder, JPEG, OFA engines.\n#define NVML_GPU_INSTANCE_PROFILE_2_SLICE_REV1 0x8\n// 1_SLICE profile with twice the amount of memory resources.\n#define NVML_GPU_INSTANCE_PROFILE_1_SLICE_REV2 0x9\n// 1_SLICE gfx capable profile\n#define NVML_GPU_INSTANCE_PROFILE_1_SLICE_GFX      0x0A\n// 2_SLICE gfx capable profile\n#define NVML_GPU_INSTANCE_PROFILE_2_SLICE_GFX      0x0B\n// 4_SLICE gfx capable profile\n#define NVML_GPU_INSTANCE_PROFILE_4_SLICE_GFX      0x0C\n// 1_SLICE profile with none of Decode, Encoder, JPEG, OFA engines.\n#define NVML_GPU_INSTANCE_PROFILE_1_SLICE_NO_ME    0x0D\n// 2_SLICE profile with none of Decode, Encoder, JPEG, OFA engines.\n#define NVML_GPU_INSTANCE_PROFILE_2_SLICE_NO_ME    0x0E\n// 1_SLICE profile with all of GPU Decode, Encoder, JPEG, OFA engines.\n// Allocation of instance of this profile prevents allocation of\n// all but _NO_ME profiles.\n#define NVML_GPU_INSTANCE_PROFILE_1_SLICE_ALL_ME   0x0F\n// 2_SLICE profile with all of GPU Decode, Encoder, JPEG, OFA engines.\n// Allocation of instance of this profile prevents allocation of\n// all but _NO_ME profiles.\n#define NVML_GPU_INSTANCE_PROFILE_2_SLICE_ALL_ME   0x10\n#define NVML_GPU_INSTANCE_PROFILE_COUNT            0x11\n\n/**\n * MIG GPU instance profile capability.\n *\n * Bit field values representing MIG profile capabilities\n * \\ref nvmlGpuInstanceProfileInfo_v3_t.capabilities\n */\n#define NVML_GPU_INSTANCE_PROFILE_CAPS_P2P     0x1\n#define NVML_GPU_INTSTANCE_PROFILE_CAPS_P2P    0x1  //!< Deprecated, do not use\n#define NVML_GPU_INSTANCE_PROFILE_CAPS_GFX     0x2\n\n/**\n * MIG compute instance profile capability.\n *\n * Bit field values representing MIG profile capabilities\n * \\ref nvmlComputeInstanceProfileInfo_v3_t.capabilities\n */\n#define NVML_COMPUTE_INSTANCE_PROFILE_CAPS_GFX 0x1\n\ntypedef struct nvmlGpuInstancePlacement_st\n{\n    unsigned int start;               //!< Index of first occupied memory slice\n    unsigned int size;                //!< Number of memory slices occupied\n} nvmlGpuInstancePlacement_t;\n\n/**\n * GPU instance profile information.\n */\ntypedef struct nvmlGpuInstanceProfileInfo_st\n{\n    unsigned int id;                  //!< Unique profile ID within the device\n    unsigned int isP2pSupported;      //!< Peer-to-Peer support\n    unsigned int sliceCount;          //!< GPU Slice count\n    unsigned int instanceCount;       //!< GPU instance count\n    unsigned int multiprocessorCount; //!< Streaming Multiprocessor count\n    unsigned int copyEngineCount;     //!< Copy Engine count\n    unsigned int decoderCount;        //!< Decoder Engine count\n    unsigned int encoderCount;        //!< Encoder Engine count\n    unsigned int jpegCount;           //!< JPEG Engine count\n    unsigned int ofaCount;            //!< OFA Engine count\n    unsigned long long memorySizeMB;  //!< Memory size in MBytes\n} nvmlGpuInstanceProfileInfo_t;\n\n/**\n * GPU instance profile information (v2).\n *\n * Version 2 adds the \\ref nvmlGpuInstanceProfileInfo_v2_t.version field\n * to the start of the structure, and the \\ref nvmlGpuInstanceProfileInfo_v2_t.name\n * field to the end. This structure is not backwards-compatible with\n * \\ref nvmlGpuInstanceProfileInfo_t.\n */\ntypedef struct nvmlGpuInstanceProfileInfo_v2_st\n{\n    unsigned int version;                       //!< Structure version identifier (set to \\ref nvmlGpuInstanceProfileInfo_v2)\n    unsigned int id;                            //!< Unique profile ID within the device\n    unsigned int isP2pSupported;                //!< Peer-to-Peer support\n    unsigned int sliceCount;                    //!< GPU Slice count\n    unsigned int instanceCount;                 //!< GPU instance count\n    unsigned int multiprocessorCount;           //!< Streaming Multiprocessor count\n    unsigned int copyEngineCount;               //!< Copy Engine count\n    unsigned int decoderCount;                  //!< Decoder Engine count\n    unsigned int encoderCount;                  //!< Encoder Engine count\n    unsigned int jpegCount;                     //!< JPEG Engine count\n    unsigned int ofaCount;                      //!< OFA Engine count\n    unsigned long long memorySizeMB;            //!< Memory size in MBytes\n    char name[NVML_DEVICE_NAME_V2_BUFFER_SIZE]; //!< Profile name\n} nvmlGpuInstanceProfileInfo_v2_t;\n\n/**\n * Version identifier value for \\ref nvmlGpuInstanceProfileInfo_v2_t.version.\n */\n#define nvmlGpuInstanceProfileInfo_v2 NVML_STRUCT_VERSION(GpuInstanceProfileInfo, 2)\n\n/**\n * GPU instance profile information (v3).\n *\n * Version 3 removes isP2pSupported field and adds the \\ref nvmlGpuInstanceProfileInfo_v3_t.capabilities\n * field \\ref nvmlGpuInstanceProfileInfo_t.\n */\ntypedef struct nvmlGpuInstanceProfileInfo_v3_st\n{\n    unsigned int version;                       //!< Structure version identifier (set to \\ref nvmlGpuInstanceProfileInfo_v3)\n    unsigned int id;                            //!< Unique profile ID within the device\n    unsigned int sliceCount;                    //!< GPU Slice count\n    unsigned int instanceCount;                 //!< GPU instance count\n    unsigned int multiprocessorCount;           //!< Streaming Multiprocessor count\n    unsigned int copyEngineCount;               //!< Copy Engine count\n    unsigned int decoderCount;                  //!< Decoder Engine count\n    unsigned int encoderCount;                  //!< Encoder Engine count\n    unsigned int jpegCount;                     //!< JPEG Engine count\n    unsigned int ofaCount;                      //!< OFA Engine count\n    unsigned long long memorySizeMB;            //!< Memory size in MBytes\n    char name[NVML_DEVICE_NAME_V2_BUFFER_SIZE]; //!< Profile name\n    unsigned int capabilities;                  //!< Additional capabilities\n} nvmlGpuInstanceProfileInfo_v3_t;\n\n/**\n * Version identifier value for \\ref nvmlGpuInstanceProfileInfo_v3_t.version.\n */\n#define nvmlGpuInstanceProfileInfo_v3 NVML_STRUCT_VERSION(GpuInstanceProfileInfo, 3)\n\ntypedef struct nvmlGpuInstanceInfo_st\n{\n    nvmlDevice_t device;                      //!< Parent device\n    unsigned int id;                          //!< Unique instance ID within the device\n    unsigned int profileId;                   //!< Unique profile ID within the device\n    nvmlGpuInstancePlacement_t placement;     //!< Placement for this instance\n} nvmlGpuInstanceInfo_t;\n\n/**\n * Compute instance profiles.\n *\n * These macros should be passed to \\ref nvmlGpuInstanceGetComputeInstanceProfileInfo to retrieve the\n * detailed information about a compute instance such as profile ID, engine counts\n */\n#define NVML_COMPUTE_INSTANCE_PROFILE_1_SLICE       0x0\n#define NVML_COMPUTE_INSTANCE_PROFILE_2_SLICE       0x1\n#define NVML_COMPUTE_INSTANCE_PROFILE_3_SLICE       0x2\n#define NVML_COMPUTE_INSTANCE_PROFILE_4_SLICE       0x3\n#define NVML_COMPUTE_INSTANCE_PROFILE_7_SLICE       0x4\n#define NVML_COMPUTE_INSTANCE_PROFILE_8_SLICE       0x5\n#define NVML_COMPUTE_INSTANCE_PROFILE_6_SLICE       0x6\n#define NVML_COMPUTE_INSTANCE_PROFILE_1_SLICE_REV1  0x7\n#define NVML_COMPUTE_INSTANCE_PROFILE_COUNT         0x8\n\n#define NVML_COMPUTE_INSTANCE_ENGINE_PROFILE_SHARED 0x0 //!< All the engines except multiprocessors would be shared\n#define NVML_COMPUTE_INSTANCE_ENGINE_PROFILE_COUNT  0x1\n\ntypedef struct nvmlComputeInstancePlacement_st\n{\n    unsigned int start;                 //!< Index of first occupied compute slice\n    unsigned int size;                  //!< Number of compute slices occupied\n} nvmlComputeInstancePlacement_t;\n\n/**\n * Compute instance profile information.\n */\ntypedef struct nvmlComputeInstanceProfileInfo_st\n{\n    unsigned int id;                    //!< Unique profile ID within the GPU instance\n    unsigned int sliceCount;            //!< GPU Slice count\n    unsigned int instanceCount;         //!< Compute instance count\n    unsigned int multiprocessorCount;   //!< Streaming Multiprocessor count\n    unsigned int sharedCopyEngineCount; //!< Shared Copy Engine count\n    unsigned int sharedDecoderCount;    //!< Shared Decoder Engine count\n    unsigned int sharedEncoderCount;    //!< Shared Encoder Engine count\n    unsigned int sharedJpegCount;       //!< Shared JPEG Engine count\n    unsigned int sharedOfaCount;        //!< Shared OFA Engine count\n} nvmlComputeInstanceProfileInfo_t;\n\n/**\n * Compute instance profile information (v2).\n *\n * Version 2 adds the \\ref nvmlComputeInstanceProfileInfo_v2_t.version field\n * to the start of the structure, and the \\ref nvmlComputeInstanceProfileInfo_v2_t.name\n * field to the end. This structure is not backwards-compatible with\n * \\ref nvmlComputeInstanceProfileInfo_t.\n */\ntypedef struct nvmlComputeInstanceProfileInfo_v2_st\n{\n    unsigned int version;                       //!< Structure version identifier (set to \\ref nvmlComputeInstanceProfileInfo_v2)\n    unsigned int id;                            //!< Unique profile ID within the GPU instance\n    unsigned int sliceCount;                    //!< GPU Slice count\n    unsigned int instanceCount;                 //!< Compute instance count\n    unsigned int multiprocessorCount;           //!< Streaming Multiprocessor count\n    unsigned int sharedCopyEngineCount;         //!< Shared Copy Engine count\n    unsigned int sharedDecoderCount;            //!< Shared Decoder Engine count\n    unsigned int sharedEncoderCount;            //!< Shared Encoder Engine count\n    unsigned int sharedJpegCount;               //!< Shared JPEG Engine count\n    unsigned int sharedOfaCount;                //!< Shared OFA Engine count\n    char name[NVML_DEVICE_NAME_V2_BUFFER_SIZE]; //!< Profile name\n} nvmlComputeInstanceProfileInfo_v2_t;\n\n/**\n * Version identifier value for \\ref nvmlComputeInstanceProfileInfo_v2_t.version.\n */\n#define nvmlComputeInstanceProfileInfo_v2 NVML_STRUCT_VERSION(ComputeInstanceProfileInfo, 2)\n\n/**\n * Compute instance profile information (v3).\n *\n * Version 3 adds the \\ref nvmlComputeInstanceProfileInfo_v3_t.capabilities field\n * \\ref nvmlComputeInstanceProfileInfo_t.\n */\ntypedef struct nvmlComputeInstanceProfileInfo_v3_st\n{\n    unsigned int version;                       //!< Structure version identifier (set to \\ref nvmlComputeInstanceProfileInfo_v3)\n    unsigned int id;                            //!< Unique profile ID within the GPU instance\n    unsigned int sliceCount;                    //!< GPU Slice count\n    unsigned int instanceCount;                 //!< Compute instance count\n    unsigned int multiprocessorCount;           //!< Streaming Multiprocessor count\n    unsigned int sharedCopyEngineCount;         //!< Shared Copy Engine count\n    unsigned int sharedDecoderCount;            //!< Shared Decoder Engine count\n    unsigned int sharedEncoderCount;            //!< Shared Encoder Engine count\n    unsigned int sharedJpegCount;               //!< Shared JPEG Engine count\n    unsigned int sharedOfaCount;                //!< Shared OFA Engine count\n    char name[NVML_DEVICE_NAME_V2_BUFFER_SIZE]; //!< Profile name\n    unsigned int capabilities;                  //!< Additional capabilities\n} nvmlComputeInstanceProfileInfo_v3_t;\n\n/**\n * Version identifier value for \\ref nvmlComputeInstanceProfileInfo_v3_t.version.\n */\n#define nvmlComputeInstanceProfileInfo_v3 NVML_STRUCT_VERSION(ComputeInstanceProfileInfo, 3)\n\ntypedef struct nvmlComputeInstanceInfo_st\n{\n    nvmlDevice_t device;                      //!< Parent device\n    nvmlGpuInstance_t gpuInstance;            //!< Parent GPU instance\n    unsigned int id;                          //!< Unique instance ID within the GPU instance\n    unsigned int profileId;                   //!< Unique profile ID within the GPU instance\n    nvmlComputeInstancePlacement_t placement; //!< Placement for this instance within the GPU instance's compute slice range {0, sliceCount}\n} nvmlComputeInstanceInfo_t;\n\ntypedef struct\n{\n    struct nvmlComputeInstance_st* handle;\n} nvmlComputeInstance_t;\n\n/**\n * Set MIG mode for the device.\n *\n * For Ampere &tm; or newer fully supported devices.\n * Requires root user.\n *\n * This mode determines whether a GPU instance can be created.\n *\n * This API may unbind or reset the device to activate the requested mode. Thus, the attributes associated with the\n * device, such as minor number, might change. The caller of this API is expected to query such attributes again.\n *\n * On certain platforms like pass-through virtualization, where reset functionality may not be exposed directly, VM\n * reboot is required. \\a activationStatus would return \\ref NVML_ERROR_RESET_REQUIRED for such cases.\n *\n * \\a activationStatus would return the appropriate error code upon unsuccessful activation. For example, if device\n * unbind fails because the device isn't idle, \\ref NVML_ERROR_IN_USE would be returned. The caller of this API\n * is expected to idle the device and retry setting the \\a mode.\n *\n * @note On Windows, only disabling MIG mode is supported. \\a activationStatus would return \\ref\n *       NVML_ERROR_NOT_SUPPORTED as GPU reset is not supported on Windows through this API.\n *\n * @param device                               The identifier of the target device\n * @param mode                                 The mode to be set, \\ref NVML_DEVICE_MIG_DISABLE or\n *                                             \\ref NVML_DEVICE_MIG_ENABLE\n * @param activationStatus                     The activationStatus status\n *\n * @return\n *         - \\ref NVML_SUCCESS                 Upon success\n *         - \\ref NVML_ERROR_UNINITIALIZED     If library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  If \\a device,\\a mode or \\a activationStatus are invalid\n *         - \\ref NVML_ERROR_NO_PERMISSION     If user doesn't have permission to perform the operation\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     If \\a device doesn't support MIG mode\n */\nnvmlReturn_t DECLDIR nvmlDeviceSetMigMode(nvmlDevice_t device, unsigned int mode, nvmlReturn_t *activationStatus);\n\n/**\n * Get MIG mode for the device.\n *\n * For Ampere &tm; or newer fully supported devices.\n *\n * Changing MIG modes may require device unbind or reset. The \"pending\" MIG mode refers to the target mode following the\n * next activation trigger.\n *\n * @param device                               The identifier of the target device\n * @param currentMode                          Returns the current mode, \\ref NVML_DEVICE_MIG_DISABLE or\n *                                             \\ref NVML_DEVICE_MIG_ENABLE\n * @param pendingMode                          Returns the pending mode, \\ref NVML_DEVICE_MIG_DISABLE or\n *                                             \\ref NVML_DEVICE_MIG_ENABLE\n *\n * @return\n *         - \\ref NVML_SUCCESS                 Upon success\n *         - \\ref NVML_ERROR_UNINITIALIZED     If library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  If \\a device, \\a currentMode or \\a pendingMode are invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     If \\a device doesn't support MIG mode\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetMigMode(nvmlDevice_t device, unsigned int *currentMode, unsigned int *pendingMode);\n\n/**\n * Get GPU instance profile information\n *\n * Information provided by this API is immutable throughout the lifetime of a MIG mode.\n *\n * @note This API can be used to enumerate all MIG profiles supported by NVML in a forward compatible\n * way by invoking it on \\a profile values starting from 0, until the API returns \\ref NVML_ERROR_INVALID_ARGUMENT.\n *\n * For Ampere &tm; or newer fully supported devices.\n * Supported on Linux only.\n *\n * @param device                               The identifier of the target device\n * @param profile                              One of the NVML_GPU_INSTANCE_PROFILE_*\n * @param info                                 Returns detailed profile information\n *\n * @return\n *         - \\ref NVML_SUCCESS                 Upon success\n *         - \\ref NVML_ERROR_UNINITIALIZED     If library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  If \\a device, \\a profile or \\a info are invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     If \\a device doesn't support MIG or \\a profile isn't supported\n *         - \\ref NVML_ERROR_NO_PERMISSION     If user doesn't have permission to perform the operation\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetGpuInstanceProfileInfo(nvmlDevice_t device, unsigned int profile,\n                                                         nvmlGpuInstanceProfileInfo_t *info);\n\n/**\n * Versioned wrapper around \\ref nvmlDeviceGetGpuInstanceProfileInfo that accepts a versioned\n * \\ref nvmlGpuInstanceProfileInfo_v2_t or later output structure.\n *\n * @note The caller must set the \\ref nvmlGpuInstanceProfileInfo_v2_t.version field to the\n * appropriate version prior to calling this function. For example:\n * \\code\n *     nvmlGpuInstanceProfileInfo_v2_t profileInfo =\n *         { .version = nvmlGpuInstanceProfileInfo_v2 };\n *     nvmlReturn_t result = nvmlDeviceGetGpuInstanceProfileInfoV(device,\n *                                                                profile,\n *                                                                &profileInfo);\n * \\endcode\n *\n * For Ampere &tm; or newer fully supported devices.\n * Supported on Linux only.\n *\n * @param device                               The identifier of the target device\n * @param profile                              One of the NVML_GPU_INSTANCE_PROFILE_*\n * @param info                                 Returns detailed profile information\n *\n * @return\n *         - \\ref NVML_SUCCESS                 Upon success\n *         - \\ref NVML_ERROR_UNINITIALIZED     If library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  If \\a device, \\a profile, \\a info, or \\a info->version are invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     If \\a device doesn't have MIG mode enabled or \\a profile isn't supported\n *         - \\ref NVML_ERROR_NO_PERMISSION     If user doesn't have permission to perform the operation\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetGpuInstanceProfileInfoV(nvmlDevice_t device, unsigned int profile,\n                                                          nvmlGpuInstanceProfileInfo_v2_t *info);\n\n/**\n * GPU instance profile query function that accepts profile ID, instead of profile name.\n * It accepts a versioned \\ref nvmlGpuInstanceProfileInfo_v2_t or later output structure.\n *\n * @note The caller must set the \\ref nvmlGpuInstanceProfileInfo_v2_t.version field to the\n * appropriate version prior to calling this function. For example:\n * \\code\n *     nvmlGpuInstanceProfileInfo_v2_t profileInfo =\n *         { .version = nvmlGpuInstanceProfileInfo_v2 };\n *     nvmlReturn_t result = nvmlDeviceGetGpuInstanceProfileInfoV(device,\n *                                                                profile,\n *                                                                &profileInfo);\n * \\endcode\n *\n * For Ampere &tm; or newer fully supported devices.\n * Supported on Linux only.\n *\n * @param device                               The identifier of the target device\n * @param profileId                            One of the profile IDs.\n * @param info                                 Returns detailed profile information\n *\n * @return\n *         - \\ref NVML_SUCCESS                 Upon success\n *         - \\ref NVML_ERROR_UNINITIALIZED     If library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  If \\a device, \\a profileId, \\a info, or \\a info->version are invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     If \\a device doesn't have MIG mode enabled or \\a profile isn't supported\n *         - \\ref NVML_ERROR_NO_PERMISSION     If user doesn't have permission to perform the operation\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetGpuInstanceProfileInfoByIdV(nvmlDevice_t device, unsigned int profileId,\n                                                              nvmlGpuInstanceProfileInfo_v2_t *info);\n\n/**\n * Get GPU instance placements.\n *\n * A placement represents the location of a GPU instance within a device. This API only returns all the possible\n * placements for the given profile regardless of whether MIG is enabled or not.\n * A created GPU instance occupies memory slices described by its placement. Creation of new GPU instance will\n * fail if there is overlap with the already occupied memory slices.\n *\n * For Ampere &tm; or newer fully supported devices.\n * Supported on Linux only.\n * Requires privileged user.\n *\n * @param device                               The identifier of the target device\n * @param profileId                            The GPU instance profile ID. See \\ref nvmlDeviceGetGpuInstanceProfileInfo\n * @param placements                           Returns placements allowed for the profile. Can be NULL to discover number\n *                                             of allowed placements for this profile. If non-NULL must be large enough\n *                                             to accommodate the placements supported by the profile.\n * @param count                                Returns number of allowed placemenets for the profile.\n *\n * @return\n *         - \\ref NVML_SUCCESS                 Upon success\n *         - \\ref NVML_ERROR_UNINITIALIZED     If library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  If \\a device, \\a profileId or \\a count are invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     If \\a device doesn't support MIG or \\a profileId isn't supported\n *         - \\ref NVML_ERROR_NO_PERMISSION     If user doesn't have permission to perform the operation\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetGpuInstancePossiblePlacements_v2(nvmlDevice_t device, unsigned int profileId,\n                                                                   nvmlGpuInstancePlacement_t *placements,\n                                                                   unsigned int *count);\n\n/**\n * Get GPU instance profile capacity.\n *\n * For Ampere &tm; or newer fully supported devices.\n * Supported on Linux only.\n * Requires privileged user.\n *\n * @param device                               The identifier of the target device\n * @param profileId                            The GPU instance profile ID. See \\ref nvmlDeviceGetGpuInstanceProfileInfo\n * @param count                                Returns remaining instance count for the profile ID\n *\n * @return\n *         - \\ref NVML_SUCCESS                 Upon success\n *         - \\ref NVML_ERROR_UNINITIALIZED     If library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  If \\a device, \\a profileId or \\a count are invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     If \\a device doesn't have MIG mode enabled or \\a profileId isn't supported\n *         - \\ref NVML_ERROR_NO_PERMISSION     If user doesn't have permission to perform the operation\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetGpuInstanceRemainingCapacity(nvmlDevice_t device, unsigned int profileId,\n                                                               unsigned int *count);\n\n/**\n * Create GPU instance.\n *\n * For Ampere &tm; or newer fully supported devices.\n * Supported on Linux only.\n * Requires privileged user.\n *\n * If the parent device is unbound, reset or the GPU instance is destroyed explicitly, the GPU instance handle would\n * become invalid. The GPU instance must be recreated to acquire a valid handle.\n *\n * @param device                               The identifier of the target device\n * @param profileId                            The GPU instance profile ID. See \\ref nvmlDeviceGetGpuInstanceProfileInfo\n * @param gpuInstance                          Returns the GPU instance handle\n *\n * @return\n *         - \\ref NVML_SUCCESS                       Upon success\n *         - \\ref NVML_ERROR_UNINITIALIZED           If library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT        If \\a device, \\a profile, \\a profileId or \\a gpuInstance are invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED           If \\a device doesn't have MIG mode enabled or in vGPU guest\n *         - \\ref NVML_ERROR_NO_PERMISSION           If user doesn't have permission to perform the operation\n *         - \\ref NVML_ERROR_INSUFFICIENT_RESOURCES  If the requested GPU instance could not be created\n */\nnvmlReturn_t DECLDIR nvmlDeviceCreateGpuInstance(nvmlDevice_t device, unsigned int profileId,\n                                                 nvmlGpuInstance_t *gpuInstance);\n\n/**\n * Create GPU instance with the specified placement.\n *\n * For Ampere &tm; or newer fully supported devices.\n * Supported on Linux only.\n * Requires privileged user.\n *\n * If the parent device is unbound, reset or the GPU instance is destroyed explicitly, the GPU instance handle would\n * become invalid. The GPU instance must be recreated to acquire a valid handle.\n *\n * @param device                               The identifier of the target device\n * @param profileId                            The GPU instance profile ID. See \\ref nvmlDeviceGetGpuInstanceProfileInfo\n * @param placement                            The requested placement. See \\ref nvmlDeviceGetGpuInstancePossiblePlacements_v2\n * @param gpuInstance                          Returns the GPU instance handle\n *\n * @return\n *         - \\ref NVML_SUCCESS                       Upon success\n *         - \\ref NVML_ERROR_UNINITIALIZED           If library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT        If \\a device, \\a profile, \\a profileId, \\a placement or \\a gpuInstance\n *                                                   are invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED           If \\a device doesn't have MIG mode enabled or in vGPU guest\n *         - \\ref NVML_ERROR_NO_PERMISSION           If user doesn't have permission to perform the operation\n *         - \\ref NVML_ERROR_INSUFFICIENT_RESOURCES  If the requested GPU instance could not be created\n */\nnvmlReturn_t DECLDIR nvmlDeviceCreateGpuInstanceWithPlacement(nvmlDevice_t device, unsigned int profileId,\n                                                              const nvmlGpuInstancePlacement_t *placement,\n                                                              nvmlGpuInstance_t *gpuInstance);\n/**\n * Destroy GPU instance.\n *\n * For Ampere &tm; or newer fully supported devices.\n * Supported on Linux only.\n * Requires privileged user.\n *\n * @param gpuInstance                          The GPU instance handle\n *\n * @return\n *         - \\ref NVML_SUCCESS                 Upon success\n *         - \\ref NVML_ERROR_UNINITIALIZED     If library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  If \\a gpuInstance is invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     If \\a device doesn't have MIG mode enabled or in vGPU guest\n *         - \\ref NVML_ERROR_NO_PERMISSION     If user doesn't have permission to perform the operation\n *         - \\ref NVML_ERROR_IN_USE            If the GPU instance is in use. This error would be returned if processes\n *                                             (e.g. CUDA application) or compute instances are active on the\n *                                             GPU instance.\n */\nnvmlReturn_t DECLDIR nvmlGpuInstanceDestroy(nvmlGpuInstance_t gpuInstance);\n\n/**\n * Get GPU instances for given profile ID.\n *\n * For Ampere &tm; or newer fully supported devices.\n * Supported on Linux only.\n * Requires privileged user.\n *\n * @param device                               The identifier of the target device\n * @param profileId                            The GPU instance profile ID. See \\ref nvmlDeviceGetGpuInstanceProfileInfo\n * @param gpuInstances                         Returns pre-exiting GPU instances, the buffer must be large enough to\n *                                             accommodate the instances supported by the profile.\n *                                             See \\ref nvmlDeviceGetGpuInstanceProfileInfo\n * @param count                                The count of returned GPU instances\n *\n * @return\n *         - \\ref NVML_SUCCESS                 Upon success\n *         - \\ref NVML_ERROR_UNINITIALIZED     If library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  If \\a device, \\a profileId, \\a gpuInstances or \\a count are invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     If \\a device doesn't have MIG mode enabled\n *         - \\ref NVML_ERROR_NO_PERMISSION     If user doesn't have permission to perform the operation\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetGpuInstances(nvmlDevice_t device, unsigned int profileId,\n                                               nvmlGpuInstance_t *gpuInstances, unsigned int *count);\n\n/**\n * Get GPU instances for given instance ID.\n *\n * For Ampere &tm; or newer fully supported devices.\n * Supported on Linux only.\n * Requires privileged user.\n *\n * @param device                               The identifier of the target device\n * @param id                                   The GPU instance ID\n * @param gpuInstance                          Returns GPU instance\n *\n * @return\n *         - \\ref NVML_SUCCESS                 Upon success\n *         - \\ref NVML_ERROR_UNINITIALIZED     If library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  If \\a device, \\a id or \\a gpuInstance are invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     If \\a device doesn't have MIG mode enabled\n *         - \\ref NVML_ERROR_NO_PERMISSION     If user doesn't have permission to perform the operation\n *         - \\ref NVML_ERROR_NOT_FOUND         If the GPU instance is not found.\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetGpuInstanceById(nvmlDevice_t device, unsigned int id, nvmlGpuInstance_t *gpuInstance);\n\n/**\n * Get GPU instance information.\n *\n * For Ampere &tm; or newer fully supported devices.\n * Supported on Linux only.\n *\n * @param gpuInstance                          The GPU instance handle\n * @param info                                 Return GPU instance information\n *\n * @return\n *         - \\ref NVML_SUCCESS                 Upon success\n *         - \\ref NVML_ERROR_UNINITIALIZED     If library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  If \\a gpuInstance or \\a info are invalid\n *         - \\ref NVML_ERROR_NO_PERMISSION     If user doesn't have permission to perform the operation\n */\nnvmlReturn_t DECLDIR nvmlGpuInstanceGetInfo(nvmlGpuInstance_t gpuInstance, nvmlGpuInstanceInfo_t *info);\n\n/**\n * Get compute instance profile information.\n *\n * Information provided by this API is immutable throughout the lifetime of a MIG mode.\n *\n * @note This API can be used to enumerate all MIG profiles supported by NVML in a forward compatible\n * way by invoking it on \\a profile values starting from 0, until the API returns \\ref NVML_ERROR_INVALID_ARGUMENT.\n *\n * For Ampere &tm; or newer fully supported devices.\n * Supported on Linux only.\n *\n * @param gpuInstance                          The identifier of the target GPU instance\n * @param profile                              One of the NVML_COMPUTE_INSTANCE_PROFILE_*\n * @param engProfile                           One of the NVML_COMPUTE_INSTANCE_ENGINE_PROFILE_*\n * @param info                                 Returns detailed profile information\n *\n * @return\n *         - \\ref NVML_SUCCESS                 Upon success\n *         - \\ref NVML_ERROR_UNINITIALIZED     If library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  If \\a gpuInstance, \\a profile, \\a engProfile or \\a info are invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     If \\a profile isn't supported\n *         - \\ref NVML_ERROR_NO_PERMISSION     If user doesn't have permission to perform the operation\n */\nnvmlReturn_t DECLDIR nvmlGpuInstanceGetComputeInstanceProfileInfo(nvmlGpuInstance_t gpuInstance, unsigned int profile,\n                                                                  unsigned int engProfile,\n                                                                  nvmlComputeInstanceProfileInfo_t *info);\n\n/**\n * Versioned wrapper around \\ref nvmlGpuInstanceGetComputeInstanceProfileInfo that accepts a versioned\n * \\ref nvmlComputeInstanceProfileInfo_v2_t or later output structure.\n *\n * @note The caller must set the \\ref nvmlGpuInstanceProfileInfo_v2_t.version field to the\n * appropriate version prior to calling this function. For example:\n * \\code\n *     nvmlComputeInstanceProfileInfo_v2_t profileInfo =\n *         { .version = nvmlComputeInstanceProfileInfo_v2 };\n *     nvmlReturn_t result = nvmlGpuInstanceGetComputeInstanceProfileInfoV(gpuInstance,\n *                                                                         profile,\n *                                                                         engProfile,\n *                                                                         &profileInfo);\n * \\endcode\n *\n * For Ampere &tm; or newer fully supported devices.\n * Supported on Linux only.\n *\n * @param gpuInstance                          The identifier of the target GPU instance\n * @param profile                              One of the NVML_COMPUTE_INSTANCE_PROFILE_*\n * @param engProfile                           One of the NVML_COMPUTE_INSTANCE_ENGINE_PROFILE_*\n * @param info                                 Returns detailed profile information\n *\n * @return\n *         - \\ref NVML_SUCCESS                 Upon success\n *         - \\ref NVML_ERROR_UNINITIALIZED     If library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  If \\a gpuInstance, \\a profile, \\a engProfile, \\a info, or \\a info->version are invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     If \\a profile isn't supported\n *         - \\ref NVML_ERROR_NO_PERMISSION     If user doesn't have permission to perform the operation\n */\nnvmlReturn_t DECLDIR nvmlGpuInstanceGetComputeInstanceProfileInfoV(nvmlGpuInstance_t gpuInstance, unsigned int profile,\n                                                                   unsigned int engProfile,\n                                                                   nvmlComputeInstanceProfileInfo_v2_t *info);\n\n/**\n * Get compute instance profile capacity.\n *\n * For Ampere &tm; or newer fully supported devices.\n * Supported on Linux only.\n * Requires privileged user.\n *\n * @param gpuInstance                          The identifier of the target GPU instance\n * @param profileId                            The compute instance profile ID.\n *                                             See \\ref nvmlGpuInstanceGetComputeInstanceProfileInfo\n * @param count                                Returns remaining instance count for the profile ID\n *\n * @return\n *         - \\ref NVML_SUCCESS                 Upon success\n *         - \\ref NVML_ERROR_UNINITIALIZED     If library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  If \\a gpuInstance, \\a profileId or \\a availableCount are invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     If \\a profileId isn't supported\n *         - \\ref NVML_ERROR_NO_PERMISSION     If user doesn't have permission to perform the operation\n */\nnvmlReturn_t DECLDIR nvmlGpuInstanceGetComputeInstanceRemainingCapacity(nvmlGpuInstance_t gpuInstance,\n                                                                        unsigned int profileId, unsigned int *count);\n\n/**\n * Get compute instance placements.\n *\n * For Ampere &tm; or newer fully supported devices.\n * Supported on Linux only.\n * Requires privileged user.\n *\n * A placement represents the location of a compute instance within a GPU instance. This API only returns all the possible\n * placements for the given profile.\n * A created compute instance occupies compute slices described by its placement. Creation of new compute instance will\n * fail if there is overlap with the already occupied compute slices.\n *\n * @param gpuInstance                          The identifier of the target GPU instance\n * @param profileId                            The compute instance profile ID. See \\ref  nvmlGpuInstanceGetComputeInstanceProfileInfo\n * @param placements                           Returns placements allowed for the profile. Can be NULL to discover number\n *                                             of allowed placements for this profile. If non-NULL must be large enough\n *                                             to accommodate the placements supported by the profile.\n * @param count                                Returns number of allowed placemenets for the profile.\n *\n * @return\n *         - \\ref NVML_SUCCESS                 Upon success\n *         - \\ref NVML_ERROR_UNINITIALIZED     If library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  If \\a gpuInstance, \\a profileId or \\a count are invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     If \\a device doesn't have MIG mode enabled or \\a profileId isn't supported\n *         - \\ref NVML_ERROR_NO_PERMISSION     If user doesn't have permission to perform the operation\n */\nnvmlReturn_t DECLDIR nvmlGpuInstanceGetComputeInstancePossiblePlacements(nvmlGpuInstance_t gpuInstance,\n                                                                         unsigned int profileId,\n                                                                         nvmlComputeInstancePlacement_t *placements,\n                                                                         unsigned int *count);\n\n/**\n * Create compute instance.\n *\n * For Ampere &tm; or newer fully supported devices.\n * Supported on Linux only.\n * Requires privileged user.\n *\n * If the parent device is unbound, reset or the parent GPU instance is destroyed or the compute instance is destroyed\n * explicitly, the compute instance handle would become invalid. The compute instance must be recreated to acquire\n * a valid handle.\n *\n * @param gpuInstance                          The identifier of the target GPU instance\n * @param profileId                            The compute instance profile ID.\n *                                             See \\ref nvmlGpuInstanceGetComputeInstanceProfileInfo\n * @param computeInstance                      Returns the compute instance handle\n *\n * @return\n *         - \\ref NVML_SUCCESS                       Upon success\n *         - \\ref NVML_ERROR_UNINITIALIZED           If library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT        If \\a gpuInstance, \\a profile, \\a profileId or \\a computeInstance\n *                                                   are invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED           If \\a profileId isn't supported\n *         - \\ref NVML_ERROR_NO_PERMISSION           If user doesn't have permission to perform the operation\n *         - \\ref NVML_ERROR_INSUFFICIENT_RESOURCES  If the requested compute instance could not be created\n */\nnvmlReturn_t DECLDIR nvmlGpuInstanceCreateComputeInstance(nvmlGpuInstance_t gpuInstance, unsigned int profileId,\n                                                          nvmlComputeInstance_t *computeInstance);\n\n/**\n * Create compute instance with the specified placement.\n *\n * For Ampere &tm; or newer fully supported devices.\n * Supported on Linux only.\n * Requires privileged user.\n *\n * If the parent device is unbound, reset or the parent GPU instance is destroyed or the compute instance is destroyed\n * explicitly, the compute instance handle would become invalid. The compute instance must be recreated to acquire\n * a valid handle.\n *\n * @param gpuInstance                          The identifier of the target GPU instance\n * @param profileId                            The compute instance profile ID.\n *                                             See \\ref nvmlGpuInstanceGetComputeInstanceProfileInfo\n * @param placement                            The requested placement. See \\ref nvmlGpuInstanceGetComputeInstancePossiblePlacements\n * @param computeInstance                      Returns the compute instance handle\n *\n * @return\n *         - \\ref NVML_SUCCESS                       Upon success\n *         - \\ref NVML_ERROR_UNINITIALIZED           If library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT        If \\a gpuInstance, \\a profile, \\a profileId or \\a computeInstance\n *                                                   are invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED           If \\a profileId isn't supported\n *         - \\ref NVML_ERROR_NO_PERMISSION           If user doesn't have permission to perform the operation\n *         - \\ref NVML_ERROR_INSUFFICIENT_RESOURCES  If the requested compute instance could not be created\n */\nnvmlReturn_t DECLDIR nvmlGpuInstanceCreateComputeInstanceWithPlacement(nvmlGpuInstance_t gpuInstance, unsigned int profileId,\n                                                                       const nvmlComputeInstancePlacement_t *placement,\n                                                                       nvmlComputeInstance_t *computeInstance);\n\n/**\n * Destroy compute instance.\n *\n * For Ampere &tm; or newer fully supported devices.\n * Supported on Linux only.\n * Requires privileged user.\n *\n * @param computeInstance                      The compute instance handle\n *\n * @return\n *         - \\ref NVML_SUCCESS                 Upon success\n *         - \\ref NVML_ERROR_UNINITIALIZED     If library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  If \\a computeInstance is invalid\n *         - \\ref NVML_ERROR_NO_PERMISSION     If user doesn't have permission to perform the operation\n *         - \\ref NVML_ERROR_IN_USE            If the compute instance is in use. This error would be returned if\n *                                             processes (e.g. CUDA application) are active on the compute instance.\n */\nnvmlReturn_t DECLDIR nvmlComputeInstanceDestroy(nvmlComputeInstance_t computeInstance);\n\n/**\n * Get compute instances for given profile ID.\n *\n * For Ampere &tm; or newer fully supported devices.\n * Supported on Linux only.\n * Requires privileged user.\n *\n * @param gpuInstance                          The identifier of the target GPU instance\n * @param profileId                            The compute instance profile ID.\n *                                             See \\ref nvmlGpuInstanceGetComputeInstanceProfileInfo\n * @param computeInstances                     Returns pre-exiting compute instances, the buffer must be large enough to\n *                                             accommodate the instances supported by the profile.\n *                                             See \\ref nvmlGpuInstanceGetComputeInstanceProfileInfo\n * @param count                                The count of returned compute instances\n *\n * @return\n *         - \\ref NVML_SUCCESS                 Upon success\n *         - \\ref NVML_ERROR_UNINITIALIZED     If library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  If \\a gpuInstance, \\a profileId, \\a computeInstances or \\a count\n *                                             are invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     If \\a profileId isn't supported\n *         - \\ref NVML_ERROR_NO_PERMISSION     If user doesn't have permission to perform the operation\n */\nnvmlReturn_t DECLDIR nvmlGpuInstanceGetComputeInstances(nvmlGpuInstance_t gpuInstance, unsigned int profileId,\n                                                        nvmlComputeInstance_t *computeInstances, unsigned int *count);\n\n/**\n * Get compute instance for given instance ID.\n *\n * For Ampere &tm; or newer fully supported devices.\n * Supported on Linux only.\n * Requires privileged user.\n *\n * @param gpuInstance                          The identifier of the target GPU instance\n * @param id                                   The compute instance ID\n * @param computeInstance                      Returns compute instance\n *\n * @return\n *         - \\ref NVML_SUCCESS                 Upon success\n *         - \\ref NVML_ERROR_UNINITIALIZED     If library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  If \\a device, \\a ID or \\a computeInstance are invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     If \\a device doesn't have MIG mode enabled\n *         - \\ref NVML_ERROR_NO_PERMISSION     If user doesn't have permission to perform the operation\n *         - \\ref NVML_ERROR_NOT_FOUND         If the compute instance is not found.\n */\nnvmlReturn_t DECLDIR nvmlGpuInstanceGetComputeInstanceById(nvmlGpuInstance_t gpuInstance, unsigned int id,\n                                                           nvmlComputeInstance_t *computeInstance);\n\n/**\n * Get compute instance information.\n *\n * For Ampere &tm; or newer fully supported devices.\n * Supported on Linux only.\n *\n * @param computeInstance                      The compute instance handle\n * @param info                                 Return compute instance information\n *\n * @return\n *         - \\ref NVML_SUCCESS                 Upon success\n *         - \\ref NVML_ERROR_UNINITIALIZED     If library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  If \\a computeInstance or \\a info are invalid\n *         - \\ref NVML_ERROR_NO_PERMISSION     If user doesn't have permission to perform the operation\n */\nnvmlReturn_t DECLDIR nvmlComputeInstanceGetInfo_v2(nvmlComputeInstance_t computeInstance, nvmlComputeInstanceInfo_t *info);\n\n/**\n * Test if the given handle refers to a MIG device.\n *\n * A MIG device handle is an NVML abstraction which maps to a MIG compute instance.\n * These overloaded references can be used (with some restrictions) interchangeably\n * with a GPU device handle to execute queries at a per-compute instance granularity.\n *\n * For Ampere &tm; or newer fully supported devices.\n * Supported on Linux only.\n *\n * @param device                               NVML handle to test\n * @param isMigDevice                          True when handle refers to a MIG device\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a device status was successfully retrieved\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device handle or \\a isMigDevice reference is invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if this check is not supported by the device\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceIsMigDeviceHandle(nvmlDevice_t device, unsigned int *isMigDevice);\n\n/**\n * Get GPU instance ID for the given MIG device handle.\n *\n * GPU instance IDs are unique per device and remain valid until the GPU instance is destroyed.\n *\n * For Ampere &tm; or newer fully supported devices.\n * Supported on Linux only.\n *\n * @param device                               Target MIG device handle\n * @param id                                   GPU instance ID\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if instance ID was successfully retrieved\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device or \\a id reference is invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if this query is not supported by the device\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetGpuInstanceId(nvmlDevice_t device, unsigned int *id);\n\n/**\n * Get compute instance ID for the given MIG device handle.\n *\n * Compute instance IDs are unique per GPU instance and remain valid until the compute instance\n * is destroyed.\n *\n * For Ampere &tm; or newer fully supported devices.\n * Supported on Linux only.\n *\n * @param device                               Target MIG device handle\n * @param id                                   Compute instance ID\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if instance ID was successfully retrieved\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device or \\a id reference is invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if this query is not supported by the device\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetComputeInstanceId(nvmlDevice_t device, unsigned int *id);\n\n/**\n * Get the maximum number of MIG devices that can exist under a given parent NVML device.\n *\n * Returns zero if MIG is not supported or enabled.\n *\n * For Ampere &tm; or newer fully supported devices.\n * Supported on Linux only.\n *\n * @param device                               Target device handle\n * @param count                                Count of MIG devices\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a count was successfully retrieved\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device or \\a count reference is invalid\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetMaxMigDeviceCount(nvmlDevice_t device, unsigned int *count);\n\n/**\n * Get MIG device handle for the given index under its parent NVML device.\n *\n * If the compute instance is destroyed either explicitly or by destroying,\n * resetting or unbinding the parent GPU instance or the GPU device itself\n * the MIG device handle would remain invalid and must be requested again\n * using this API. Handles may be reused and their properties can change in\n * the process.\n *\n * For Ampere &tm; or newer fully supported devices.\n * Supported on Linux only.\n *\n * @param device                               Reference to the parent GPU device handle\n * @param index                                Index of the MIG device\n * @param migDevice                            Reference to the MIG device handle\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a migDevice handle was successfully created\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device, \\a index or \\a migDevice reference is invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if this query is not supported by the device\n *         - \\ref NVML_ERROR_NOT_FOUND         if no valid MIG device was found at \\a index\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetMigDeviceHandleByIndex(nvmlDevice_t device, unsigned int index,\n                                                         nvmlDevice_t *migDevice);\n\n/**\n * Get parent device handle from a MIG device handle.\n *\n * For Ampere &tm; or newer fully supported devices.\n * Supported on Linux only.\n *\n * @param migDevice                            MIG device handle\n * @param device                               Device handle\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a device handle was successfully created\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a migDevice or \\a device is invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if this query is not supported by the device\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetDeviceHandleFromMigDeviceHandle(nvmlDevice_t migDevice, nvmlDevice_t *device);\n\n/** @} */ // @defgroup nvmlMultiInstanceGPU\n\n\n/***************************************************************************************************/\n/** @defgroup GPM NVML GPM\n *  @{\n */\n/***************************************************************************************************/\n/** @defgroup nvmlGpmEnums GPM Enums\n *  @{\n */\n/***************************************************************************************************/\n\n/**\n * GPM Metric Identifiers\n */\ntypedef enum\n{\n    NVML_GPM_METRIC_GRAPHICS_UTIL               = 1,    //!< Percentage of time any compute/graphics app was active on the GPU. 0.0 - 100.0\n    NVML_GPM_METRIC_SM_UTIL                     = 2,    //!< Percentage of SMs that were busy. 0.0 - 100.0\n    NVML_GPM_METRIC_SM_OCCUPANCY                = 3,    //!< Percentage of warps that were active vs theoretical maximum. 0.0 - 100.0\n    NVML_GPM_METRIC_INTEGER_UTIL                = 4,    //!< Percentage of time the GPU's SMs were doing integer operations. 0.0 - 100.0\n    NVML_GPM_METRIC_ANY_TENSOR_UTIL             = 5,    //!< Percentage of time the GPU's SMs were doing ANY tensor operations. 0.0 - 100.0\n    NVML_GPM_METRIC_DFMA_TENSOR_UTIL            = 6,    //!< Percentage of time the GPU's SMs were doing DFMA tensor operations. 0.0 - 100.0\n    NVML_GPM_METRIC_HMMA_TENSOR_UTIL            = 7,    //!< Percentage of time the GPU's SMs were doing HMMA tensor operations. 0.0 - 100.0\n    NVML_GPM_METRIC_IMMA_TENSOR_UTIL            = 9,    //!< Percentage of time the GPU's SMs were doing IMMA tensor operations. 0.0 - 100.0\n    NVML_GPM_METRIC_DRAM_BW_UTIL                = 10,   //!< Percentage of DRAM bw used vs theoretical maximum. 0.0 - 100.0 */\n    NVML_GPM_METRIC_FP64_UTIL                   = 11,   //!< Percentage of time the GPU's SMs were doing non-tensor FP64 math. 0.0 - 100.0\n    NVML_GPM_METRIC_FP32_UTIL                   = 12,   //!< Percentage of time the GPU's SMs were doing non-tensor FP32 math. 0.0 - 100.0\n    NVML_GPM_METRIC_FP16_UTIL                   = 13,   //!< Percentage of time the GPU's SMs were doing non-tensor FP16 math. 0.0 - 100.0\n    NVML_GPM_METRIC_PCIE_TX_PER_SEC             = 20,   //!< PCIe traffic from this GPU in MiB/sec\n    NVML_GPM_METRIC_PCIE_RX_PER_SEC             = 21,   //!< PCIe traffic to this GPU in MiB/sec\n    NVML_GPM_METRIC_NVDEC_0_UTIL                = 30,   //!< Percent utilization of NVDEC 0. 0.0 - 100.0\n    NVML_GPM_METRIC_NVDEC_1_UTIL                = 31,   //!< Percent utilization of NVDEC 1. 0.0 - 100.0\n    NVML_GPM_METRIC_NVDEC_2_UTIL                = 32,   //!< Percent utilization of NVDEC 2. 0.0 - 100.0\n    NVML_GPM_METRIC_NVDEC_3_UTIL                = 33,   //!< Percent utilization of NVDEC 3. 0.0 - 100.0\n    NVML_GPM_METRIC_NVDEC_4_UTIL                = 34,   //!< Percent utilization of NVDEC 4. 0.0 - 100.0\n    NVML_GPM_METRIC_NVDEC_5_UTIL                = 35,   //!< Percent utilization of NVDEC 5. 0.0 - 100.0\n    NVML_GPM_METRIC_NVDEC_6_UTIL                = 36,   //!< Percent utilization of NVDEC 6. 0.0 - 100.0\n    NVML_GPM_METRIC_NVDEC_7_UTIL                = 37,   //!< Percent utilization of NVDEC 7. 0.0 - 100.0\n    NVML_GPM_METRIC_NVJPG_0_UTIL                = 40,   //!< Percent utilization of NVJPG 0. 0.0 - 100.0\n    NVML_GPM_METRIC_NVJPG_1_UTIL                = 41,   //!< Percent utilization of NVJPG 1. 0.0 - 100.0\n    NVML_GPM_METRIC_NVJPG_2_UTIL                = 42,   //!< Percent utilization of NVJPG 2. 0.0 - 100.0\n    NVML_GPM_METRIC_NVJPG_3_UTIL                = 43,   //!< Percent utilization of NVJPG 3. 0.0 - 100.0\n    NVML_GPM_METRIC_NVJPG_4_UTIL                = 44,   //!< Percent utilization of NVJPG 4. 0.0 - 100.0\n    NVML_GPM_METRIC_NVJPG_5_UTIL                = 45,   //!< Percent utilization of NVJPG 5. 0.0 - 100.0\n    NVML_GPM_METRIC_NVJPG_6_UTIL                = 46,   //!< Percent utilization of NVJPG 6. 0.0 - 100.0\n    NVML_GPM_METRIC_NVJPG_7_UTIL                = 47,   //!< Percent utilization of NVJPG 7. 0.0 - 100.0\n    NVML_GPM_METRIC_NVOFA_0_UTIL                = 50,   //!< Percent utilization of NVOFA 0. 0.0 - 100.0\n    NVML_GPM_METRIC_NVOFA_1_UTIL                = 51,   //!< Percent utilization of NVOFA 1. 0.0 - 100.0\n    NVML_GPM_METRIC_NVLINK_TOTAL_RX_PER_SEC     = 60,   //!< NvLink read bandwidth for all links in MiB/sec\n    NVML_GPM_METRIC_NVLINK_TOTAL_TX_PER_SEC     = 61,   //!< NvLink write bandwidth for all links in MiB/sec\n    NVML_GPM_METRIC_NVLINK_L0_RX_PER_SEC        = 62,   //!< NvLink read bandwidth for link 0 in MiB/sec\n    NVML_GPM_METRIC_NVLINK_L0_TX_PER_SEC        = 63,   //!< NvLink write bandwidth for link 0 in MiB/sec\n    NVML_GPM_METRIC_NVLINK_L1_RX_PER_SEC        = 64,   //!< NvLink read bandwidth for link 1 in MiB/sec\n    NVML_GPM_METRIC_NVLINK_L1_TX_PER_SEC        = 65,   //!< NvLink write bandwidth for link 1 in MiB/sec\n    NVML_GPM_METRIC_NVLINK_L2_RX_PER_SEC        = 66,   //!< NvLink read bandwidth for link 2 in MiB/sec\n    NVML_GPM_METRIC_NVLINK_L2_TX_PER_SEC        = 67,   //!< NvLink write bandwidth for link 2 in MiB/sec\n    NVML_GPM_METRIC_NVLINK_L3_RX_PER_SEC        = 68,   //!< NvLink read bandwidth for link 3 in MiB/sec\n    NVML_GPM_METRIC_NVLINK_L3_TX_PER_SEC        = 69,   //!< NvLink write bandwidth for link 3 in MiB/sec\n    NVML_GPM_METRIC_NVLINK_L4_RX_PER_SEC        = 70,   //!< NvLink read bandwidth for link 4 in MiB/sec\n    NVML_GPM_METRIC_NVLINK_L4_TX_PER_SEC        = 71,   //!< NvLink write bandwidth for link 4 in MiB/sec\n    NVML_GPM_METRIC_NVLINK_L5_RX_PER_SEC        = 72,   //!< NvLink read bandwidth for link 5 in MiB/sec\n    NVML_GPM_METRIC_NVLINK_L5_TX_PER_SEC        = 73,   //!< NvLink write bandwidth for link 5 in MiB/sec\n    NVML_GPM_METRIC_NVLINK_L6_RX_PER_SEC        = 74,   //!< NvLink read bandwidth for link 6 in MiB/sec\n    NVML_GPM_METRIC_NVLINK_L6_TX_PER_SEC        = 75,   //!< NvLink write bandwidth for link 6 in MiB/sec\n    NVML_GPM_METRIC_NVLINK_L7_RX_PER_SEC        = 76,   //!< NvLink read bandwidth for link 7 in MiB/sec\n    NVML_GPM_METRIC_NVLINK_L7_TX_PER_SEC        = 77,   //!< NvLink write bandwidth for link 7 in MiB/sec\n    NVML_GPM_METRIC_NVLINK_L8_RX_PER_SEC        = 78,   //!< NvLink read bandwidth for link 8 in MiB/sec\n    NVML_GPM_METRIC_NVLINK_L8_TX_PER_SEC        = 79,   //!< NvLink write bandwidth for link 8 in MiB/sec\n    NVML_GPM_METRIC_NVLINK_L9_RX_PER_SEC        = 80,   //!< NvLink read bandwidth for link 9 in MiB/sec\n    NVML_GPM_METRIC_NVLINK_L9_TX_PER_SEC        = 81,   //!< NvLink write bandwidth for link 9 in MiB/sec\n    NVML_GPM_METRIC_NVLINK_L10_RX_PER_SEC       = 82,   //!< NvLink read bandwidth for link 10 in MiB/sec\n    NVML_GPM_METRIC_NVLINK_L10_TX_PER_SEC       = 83,   //!< NvLink write bandwidth for link 10 in MiB/sec\n    NVML_GPM_METRIC_NVLINK_L11_RX_PER_SEC       = 84,   //!< NvLink read bandwidth for link 11 in MiB/sec\n    NVML_GPM_METRIC_NVLINK_L11_TX_PER_SEC       = 85,   //!< NvLink write bandwidth for link 11 in MiB/sec\n    NVML_GPM_METRIC_NVLINK_L12_RX_PER_SEC       = 86,   //!< NvLink read bandwidth for link 12 in MiB/sec\n    NVML_GPM_METRIC_NVLINK_L12_TX_PER_SEC       = 87,   //!< NvLink write bandwidth for link 12 in MiB/sec\n    NVML_GPM_METRIC_NVLINK_L13_RX_PER_SEC       = 88,   //!< NvLink read bandwidth for link 13 in MiB/sec\n    NVML_GPM_METRIC_NVLINK_L13_TX_PER_SEC       = 89,   //!< NvLink write bandwidth for link 13 in MiB/sec\n    NVML_GPM_METRIC_NVLINK_L14_RX_PER_SEC       = 90,   //!< NvLink read bandwidth for link 14 in MiB/sec\n    NVML_GPM_METRIC_NVLINK_L14_TX_PER_SEC       = 91,   //!< NvLink write bandwidth for link 14 in MiB/sec\n    NVML_GPM_METRIC_NVLINK_L15_RX_PER_SEC       = 92,   //!< NvLink read bandwidth for link 15 in MiB/sec\n    NVML_GPM_METRIC_NVLINK_L15_TX_PER_SEC       = 93,   //!< NvLink write bandwidth for link 15 in MiB/sec\n    NVML_GPM_METRIC_NVLINK_L16_RX_PER_SEC       = 94,   //!< NvLink read bandwidth for link 16 in MiB/sec\n    NVML_GPM_METRIC_NVLINK_L16_TX_PER_SEC       = 95,   //!< NvLink write bandwidth for link 16 in MiB/sec\n    NVML_GPM_METRIC_NVLINK_L17_RX_PER_SEC       = 96,   //!< NvLink read bandwidth for link 17 in MiB/sec\n    NVML_GPM_METRIC_NVLINK_L17_TX_PER_SEC       = 97,   //!< NvLink write bandwidth for link 17 in MiB/sec\n    //Put new metrics for BLACKWELL here...\n    NVML_GPM_METRIC_C2C_TOTAL_TX_PER_SEC        = 100,\n    NVML_GPM_METRIC_C2C_TOTAL_RX_PER_SEC        = 101,\n    NVML_GPM_METRIC_C2C_DATA_TX_PER_SEC         = 102,\n    NVML_GPM_METRIC_C2C_DATA_RX_PER_SEC         = 103,\n    NVML_GPM_METRIC_C2C_LINK0_TOTAL_TX_PER_SEC  = 104,\n    NVML_GPM_METRIC_C2C_LINK0_TOTAL_RX_PER_SEC  = 105,\n    NVML_GPM_METRIC_C2C_LINK0_DATA_TX_PER_SEC   = 106,\n    NVML_GPM_METRIC_C2C_LINK0_DATA_RX_PER_SEC   = 107,\n    NVML_GPM_METRIC_C2C_LINK1_TOTAL_TX_PER_SEC  = 108,\n    NVML_GPM_METRIC_C2C_LINK1_TOTAL_RX_PER_SEC  = 109,\n    NVML_GPM_METRIC_C2C_LINK1_DATA_TX_PER_SEC   = 110,\n    NVML_GPM_METRIC_C2C_LINK1_DATA_RX_PER_SEC   = 111,\n    NVML_GPM_METRIC_C2C_LINK2_TOTAL_TX_PER_SEC  = 112,\n    NVML_GPM_METRIC_C2C_LINK2_TOTAL_RX_PER_SEC  = 113,\n    NVML_GPM_METRIC_C2C_LINK2_DATA_TX_PER_SEC   = 114,\n    NVML_GPM_METRIC_C2C_LINK2_DATA_RX_PER_SEC   = 115,\n    NVML_GPM_METRIC_C2C_LINK3_TOTAL_TX_PER_SEC  = 116,\n    NVML_GPM_METRIC_C2C_LINK3_TOTAL_RX_PER_SEC  = 117,\n    NVML_GPM_METRIC_C2C_LINK3_DATA_TX_PER_SEC   = 118,\n    NVML_GPM_METRIC_C2C_LINK3_DATA_RX_PER_SEC   = 119,\n    NVML_GPM_METRIC_C2C_LINK4_TOTAL_TX_PER_SEC  = 120,\n    NVML_GPM_METRIC_C2C_LINK4_TOTAL_RX_PER_SEC  = 121,\n    NVML_GPM_METRIC_C2C_LINK4_DATA_TX_PER_SEC   = 122,\n    NVML_GPM_METRIC_C2C_LINK4_DATA_RX_PER_SEC   = 123,\n    NVML_GPM_METRIC_C2C_LINK5_TOTAL_TX_PER_SEC  = 124,\n    NVML_GPM_METRIC_C2C_LINK5_TOTAL_RX_PER_SEC  = 125,\n    NVML_GPM_METRIC_C2C_LINK5_DATA_TX_PER_SEC   = 126,\n    NVML_GPM_METRIC_C2C_LINK5_DATA_RX_PER_SEC   = 127,\n    NVML_GPM_METRIC_C2C_LINK6_TOTAL_TX_PER_SEC  = 128,\n    NVML_GPM_METRIC_C2C_LINK6_TOTAL_RX_PER_SEC  = 129,\n    NVML_GPM_METRIC_C2C_LINK6_DATA_TX_PER_SEC   = 130,\n    NVML_GPM_METRIC_C2C_LINK6_DATA_RX_PER_SEC   = 131,\n    NVML_GPM_METRIC_C2C_LINK7_TOTAL_TX_PER_SEC  = 132,\n    NVML_GPM_METRIC_C2C_LINK7_TOTAL_RX_PER_SEC  = 133,\n    NVML_GPM_METRIC_C2C_LINK7_DATA_TX_PER_SEC   = 134,\n    NVML_GPM_METRIC_C2C_LINK7_DATA_RX_PER_SEC   = 135,\n    NVML_GPM_METRIC_C2C_LINK8_TOTAL_TX_PER_SEC  = 136,\n    NVML_GPM_METRIC_C2C_LINK8_TOTAL_RX_PER_SEC  = 137,\n    NVML_GPM_METRIC_C2C_LINK8_DATA_TX_PER_SEC   = 138,\n    NVML_GPM_METRIC_C2C_LINK8_DATA_RX_PER_SEC   = 139,\n    NVML_GPM_METRIC_C2C_LINK9_TOTAL_TX_PER_SEC  = 140,\n    NVML_GPM_METRIC_C2C_LINK9_TOTAL_RX_PER_SEC  = 141,\n    NVML_GPM_METRIC_C2C_LINK9_DATA_TX_PER_SEC   = 142,\n    NVML_GPM_METRIC_C2C_LINK9_DATA_RX_PER_SEC   = 143,\n    NVML_GPM_METRIC_C2C_LINK10_TOTAL_TX_PER_SEC = 144,\n    NVML_GPM_METRIC_C2C_LINK10_TOTAL_RX_PER_SEC = 145,\n    NVML_GPM_METRIC_C2C_LINK10_DATA_TX_PER_SEC  = 146,\n    NVML_GPM_METRIC_C2C_LINK10_DATA_RX_PER_SEC  = 147,\n    NVML_GPM_METRIC_C2C_LINK11_TOTAL_TX_PER_SEC = 148,\n    NVML_GPM_METRIC_C2C_LINK11_TOTAL_RX_PER_SEC = 149,\n    NVML_GPM_METRIC_C2C_LINK11_DATA_TX_PER_SEC  = 150,\n    NVML_GPM_METRIC_C2C_LINK11_DATA_RX_PER_SEC  = 151,\n    NVML_GPM_METRIC_C2C_LINK12_TOTAL_TX_PER_SEC = 152,\n    NVML_GPM_METRIC_C2C_LINK12_TOTAL_RX_PER_SEC = 153,\n    NVML_GPM_METRIC_C2C_LINK12_DATA_TX_PER_SEC  = 154,\n    NVML_GPM_METRIC_C2C_LINK12_DATA_RX_PER_SEC  = 155,\n    NVML_GPM_METRIC_C2C_LINK13_TOTAL_TX_PER_SEC = 156,\n    NVML_GPM_METRIC_C2C_LINK13_TOTAL_RX_PER_SEC = 157,\n    NVML_GPM_METRIC_C2C_LINK13_DATA_TX_PER_SEC  = 158,\n    NVML_GPM_METRIC_C2C_LINK13_DATA_RX_PER_SEC  = 159,\n    NVML_GPM_METRIC_HOSTMEM_CACHE_HIT           = 160,\n    NVML_GPM_METRIC_HOSTMEM_CACHE_MISS          = 161,\n    NVML_GPM_METRIC_PEERMEM_CACHE_HIT           = 162,\n    NVML_GPM_METRIC_PEERMEM_CACHE_MISS          = 163,\n    NVML_GPM_METRIC_DRAM_CACHE_HIT              = 164,\n    NVML_GPM_METRIC_DRAM_CACHE_MISS             = 165,\n    NVML_GPM_METRIC_NVENC_0_UTIL                = 166,\n    NVML_GPM_METRIC_NVENC_1_UTIL                = 167,\n    NVML_GPM_METRIC_NVENC_2_UTIL                = 168,\n    NVML_GPM_METRIC_NVENC_3_UTIL                = 169,\n    NVML_GPM_METRIC_GR0_CTXSW_CYCLES_ELAPSED    = 170,\n    NVML_GPM_METRIC_GR0_CTXSW_CYCLES_ACTIVE     = 171,\n    NVML_GPM_METRIC_GR0_CTXSW_REQUESTS          = 172,\n    NVML_GPM_METRIC_GR0_CTXSW_CYCLES_PER_REQ    = 173,\n    NVML_GPM_METRIC_GR0_CTXSW_ACTIVE_PCT        = 174,\n    NVML_GPM_METRIC_GR1_CTXSW_CYCLES_ELAPSED    = 175,\n    NVML_GPM_METRIC_GR1_CTXSW_CYCLES_ACTIVE     = 176,\n    NVML_GPM_METRIC_GR1_CTXSW_REQUESTS          = 177,\n    NVML_GPM_METRIC_GR1_CTXSW_CYCLES_PER_REQ    = 178,\n    NVML_GPM_METRIC_GR1_CTXSW_ACTIVE_PCT        = 179,\n    NVML_GPM_METRIC_GR2_CTXSW_CYCLES_ELAPSED    = 180,\n    NVML_GPM_METRIC_GR2_CTXSW_CYCLES_ACTIVE     = 181,\n    NVML_GPM_METRIC_GR2_CTXSW_REQUESTS          = 182,\n    NVML_GPM_METRIC_GR2_CTXSW_CYCLES_PER_REQ    = 183,\n    NVML_GPM_METRIC_GR2_CTXSW_ACTIVE_PCT        = 184,\n    NVML_GPM_METRIC_GR3_CTXSW_CYCLES_ELAPSED    = 185,\n    NVML_GPM_METRIC_GR3_CTXSW_CYCLES_ACTIVE     = 186,\n    NVML_GPM_METRIC_GR3_CTXSW_REQUESTS          = 187,\n    NVML_GPM_METRIC_GR3_CTXSW_CYCLES_PER_REQ    = 188,\n    NVML_GPM_METRIC_GR3_CTXSW_ACTIVE_PCT        = 189,\n    NVML_GPM_METRIC_GR4_CTXSW_CYCLES_ELAPSED    = 190,\n    NVML_GPM_METRIC_GR4_CTXSW_CYCLES_ACTIVE     = 191,\n    NVML_GPM_METRIC_GR4_CTXSW_REQUESTS          = 192,\n    NVML_GPM_METRIC_GR4_CTXSW_CYCLES_PER_REQ    = 193,\n    NVML_GPM_METRIC_GR4_CTXSW_ACTIVE_PCT        = 194,\n    NVML_GPM_METRIC_GR5_CTXSW_CYCLES_ELAPSED    = 195,\n    NVML_GPM_METRIC_GR5_CTXSW_CYCLES_ACTIVE     = 196,\n    NVML_GPM_METRIC_GR5_CTXSW_REQUESTS          = 197,\n    NVML_GPM_METRIC_GR5_CTXSW_CYCLES_PER_REQ    = 198,\n    NVML_GPM_METRIC_GR5_CTXSW_ACTIVE_PCT        = 199,\n    NVML_GPM_METRIC_GR6_CTXSW_CYCLES_ELAPSED    = 200,\n    NVML_GPM_METRIC_GR6_CTXSW_CYCLES_ACTIVE     = 201,\n    NVML_GPM_METRIC_GR6_CTXSW_REQUESTS          = 202,\n    NVML_GPM_METRIC_GR6_CTXSW_CYCLES_PER_REQ    = 203,\n    NVML_GPM_METRIC_GR6_CTXSW_ACTIVE_PCT        = 204,\n    NVML_GPM_METRIC_GR7_CTXSW_CYCLES_ELAPSED    = 205,\n    NVML_GPM_METRIC_GR7_CTXSW_CYCLES_ACTIVE     = 206,\n    NVML_GPM_METRIC_GR7_CTXSW_REQUESTS          = 207,\n    NVML_GPM_METRIC_GR7_CTXSW_CYCLES_PER_REQ    = 208,\n    NVML_GPM_METRIC_GR7_CTXSW_ACTIVE_PCT        = 209,\n    NVML_GPM_METRIC_MAX                         = 210,  //!< Maximum value above +1. Note that changing this should also change NVML_GPM_METRICS_GET_VERSION due to struct size change\n} nvmlGpmMetricId_t;\n\n/** @} */ // @defgroup nvmlGpmEnums\n\n\n/***************************************************************************************************/\n/** @defgroup nvmlGpmStructs GPM Structs\n *  @{\n */\n/***************************************************************************************************/\n\n/**\n * Handle to an allocated GPM sample allocated with nvmlGpmSampleAlloc(). Free this with nvmlGpmSampleFree().\n */\ntypedef struct\n{\n    struct nvmlGpmSample_st* handle;\n} nvmlGpmSample_t;\n\n/**\n * GPM metric information.\n */\ntypedef struct\n{\n    unsigned int metricId;   //!<  IN: NVML_GPM_METRIC_? define of which metric to retrieve\n    nvmlReturn_t nvmlReturn; //!<  OUT: Status of this metric. If this is nonzero, then value is not valid\n    double value;            //!<  OUT: Value of this metric. Is only valid if nvmlReturn is 0 (NVML_SUCCESS)\n    struct\n    {\n        char *shortName;\n        char *longName;\n        char *unit;\n    } metricInfo;            //!< OUT: Metric name and unit. Those can be NULL if not defined\n} nvmlGpmMetric_t;\n\n/**\n * GPM buffer information.\n */\ntypedef struct\n{\n    unsigned int version;                              //!< IN: Set to NVML_GPM_METRICS_GET_VERSION\n    unsigned int numMetrics;                           //!< IN: How many metrics to retrieve in metrics[]\n    nvmlGpmSample_t sample1;                           //!< IN: Sample buffer\n    nvmlGpmSample_t sample2;                           //!< IN: Sample buffer\n    nvmlGpmMetric_t metrics[NVML_GPM_METRIC_MAX];      //!< IN/OUT: Array of metrics. Set metricId on call. See nvmlReturn and value on return\n} nvmlGpmMetricsGet_t;\n\n#define NVML_GPM_METRICS_GET_VERSION 1\n\n/**\n * GPM device information.\n */\ntypedef struct\n{\n    unsigned int version;           //!< IN: Set to NVML_GPM_SUPPORT_VERSION\n    unsigned int isSupportedDevice; //!< OUT: Indicates device support\n} nvmlGpmSupport_t;\n\n#define NVML_GPM_SUPPORT_VERSION 1\n\n/** @} */ // @defgroup nvmlGPMStructs\n\n/***************************************************************************************************/\n/** @defgroup nvmlGpmFunctions GPM Functions\n *  @{\n */\n/***************************************************************************************************/\n\n/**\n * Calculate GPM metrics from two samples.\n *\n * For Hopper &tm; or newer fully supported devices.\n *\n * To retrieve metrics, the user must first allocate the two sample buffers at \\a metricsGet->sample1\n * and \\a metricsGet->sample2 by calling \\a nvmlGpmSampleAlloc(). Next, the user should fill in the ID of each metric\n * in \\a metricsGet->metrics[i].metricId and specify the total number of metrics to retrieve in \\a metricsGet->numMetrics,\n * The version should be set to NVML_GPM_METRICS_GET_VERSION in \\a metricsGet->version. The user then calls the\n * \\a nvmlGpmSampleGet() API twice to obtain 2 samples of counters. \\note that the interval between these\n * two \\a nvmlGpmSampleGet() calls should be greater than 100ms due to the internal sample refresh rate.\n * Finally, the user calls \\a nvmlGpmMetricsGet to retrieve the metrics, which will be stored at \\a metricsGet->metrics\n *\n * @param metricsGet             IN/OUT: populated \\a nvmlGpmMetricsGet_t struct\n *\n * @return\n *         - \\ref NVML_SUCCESS on success\n *         - Nonzero NVML_ERROR_? enum on error\n */\nnvmlReturn_t DECLDIR nvmlGpmMetricsGet(nvmlGpmMetricsGet_t *metricsGet);\n\n\n/**\n * Free an allocated sample buffer that was allocated with \\ref nvmlGpmSampleAlloc()\n *\n * For Hopper &tm; or newer fully supported devices.\n *\n * @param gpmSample              Sample to free\n *\n * @return\n *         - \\ref NVML_SUCCESS                on success\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT if an invalid pointer is provided\n */\nnvmlReturn_t DECLDIR nvmlGpmSampleFree(nvmlGpmSample_t gpmSample);\n\n\n/**\n * Allocate a sample buffer to be used with NVML GPM . You will need to allocate\n * at least two of these buffers to use with the NVML GPM feature\n *\n * For Hopper &tm; or newer fully supported devices.\n *\n * @param gpmSample             Where  the allocated sample will be stored\n *\n * @return\n *         - \\ref NVML_SUCCESS                on success\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT if an invalid pointer is provided\n *         - \\ref NVML_ERROR_MEMORY           if system memory is insufficient\n */\nnvmlReturn_t DECLDIR nvmlGpmSampleAlloc(nvmlGpmSample_t *gpmSample);\n\n/**\n * Read a sample of GPM metrics into the provided \\a gpmSample buffer. After\n * two samples are gathered, you can call nvmlGpmMetricGet on those samples to\n * retrive metrics\n *\n * For Hopper &tm; or newer fully supported devices.\n *\n * @note The interval between two \\a nvmlGpmSampleGet() calls should be greater than 100ms due to\n * the internal sample refresh rate.\n *\n * @param device                Device to get samples for\n * @param gpmSample             Buffer to read samples into\n *\n * @return\n *         - \\ref NVML_SUCCESS on success\n *         - Nonzero NVML_ERROR_? enum on error\n */\nnvmlReturn_t DECLDIR nvmlGpmSampleGet(nvmlDevice_t device, nvmlGpmSample_t gpmSample);\n\n/**\n * Read a sample of GPM metrics into the provided \\a gpmSample buffer for a MIG GPU Instance.\n *\n * After two samples are gathered, you can call nvmlGpmMetricGet on those\n * samples to retrive metrics\n *\n * For Hopper &tm; or newer fully supported devices.\n *\n * @note The interval between two \\a nvmlGpmMigSampleGet() calls should be greater than 100ms due to\n * the internal sample refresh rate.\n *\n * @param device                Device to get samples for\n * @param gpuInstanceId         MIG GPU Instance ID\n * @param gpmSample             Buffer to read samples into\n *\n * @return\n *         - \\ref NVML_SUCCESS on success\n *         - Nonzero NVML_ERROR_? enum on error\n */\nnvmlReturn_t DECLDIR nvmlGpmMigSampleGet(nvmlDevice_t device, unsigned int gpuInstanceId, nvmlGpmSample_t gpmSample);\n\n/**\n * Indicate whether the supplied device supports GPM\n *\n * For Hopper &tm; or newer fully supported devices.\n *\n * @param device                NVML device to query for\n * @param gpmSupport            Structure to indicate GPM support \\a nvmlGpmSupport_t. Indicates\n *                              GPM support per system for the supplied device\n *\n * @return\n *         - NVML_SUCCESS on success\n *         - Nonzero NVML_ERROR_? enum if there is an error in processing the query\n */\nnvmlReturn_t DECLDIR nvmlGpmQueryDeviceSupport(nvmlDevice_t device, nvmlGpmSupport_t *gpmSupport);\n\n/* GPM Stream State */\n/**\n * Get GPM stream state.\n *\n * For Hopper &tm; or newer fully supported devices.\n * Supported on Linux, Windows TCC.\n *\n * @param device                               The identifier of the target device\n * @param state                                Returns GPM stream state\n *                                             NVML_FEATURE_DISABLED or NVML_FEATURE_ENABLED\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a current GPM stream state were successfully queried\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a  device is invalid or \\a state is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if this query is not supported by the device\n */\nnvmlReturn_t DECLDIR nvmlGpmQueryIfStreamingEnabled(nvmlDevice_t device, unsigned int *state);\n\n/**\n * Set GPM stream state.\n *\n * For Hopper &tm; or newer fully supported devices.\n * Supported on Linux, Windows TCC.\n *\n * @param device                               The identifier of the target device\n * @param state                                GPM stream state,\n *                                             NVML_FEATURE_DISABLED or NVML_FEATURE_ENABLED\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a current GPM stream state is successfully set\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if this query is not supported by the device\n */\nnvmlReturn_t DECLDIR nvmlGpmSetStreamingEnabled(nvmlDevice_t device, unsigned int state);\n\n/** @} */ // @defgroup nvmlGpmFunctions\n/** @} */ // @defgroup GPM\n\n#define NVML_DEV_CAP_EGM (1 << 0) // Extended GPU memory\n/**\n * Device capabilities\n */\ntypedef struct\n{\n    unsigned int version;               //!< the API version number\n    unsigned int capMask;               //!< OUT: Bit mask of capabilities.\n} nvmlDeviceCapabilities_v1_t;\ntypedef nvmlDeviceCapabilities_v1_t nvmlDeviceCapabilities_t;\n#define nvmlDeviceCapabilities_v1 NVML_STRUCT_VERSION(DeviceCapabilities, 1)\n\n/**\n * Get device capabilities\n *\n * See \\ref  nvmlDeviceCapabilities_v1_t for more information on the struct.\n *\n * @param device                               The identifier of the target device\n * @param caps                                 Returns GPU's capabilities\n *\n * @return\n *         - \\ref NVML_SUCCESS                         If the query is success\n *         - \\ref NVML_ERROR_UNINITIALIZED             If the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT          If \\a device is invalid or \\a counters is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED             If the device does not support this feature\n *         - \\ref NVML_ERROR_GPU_IS_LOST               If the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH If the provided version is invalid/unsupported\n *         - \\ref NVML_ERROR_UNKNOWN                   On any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetCapabilities(nvmlDevice_t device,\n                                               nvmlDeviceCapabilities_t *caps);\n\n\n/*\n * Generic bitmask to hold 255 bits, represented by 8 elements of 32 bits\n */\n#define NVML_255_MASK_BITS_PER_ELEM     32\n#define NVML_255_MASK_NUM_ELEMS         8\n#define NVML_255_MASK_BIT_SET(index, nvmlMask)                          \\\n    nvmlMask.mask[index / NVML_255_MASK_BITS_PER_ELEM] |= (1 << (index % NVML_255_MASK_BITS_PER_ELEM))\n\n#define NVML_255_MASK_BIT_GET(index, nvmlMask)                          \\\n    nvmlMask.mask[index / NVML_255_MASK_BITS_PER_ELEM] & (1 << (index % NVML_255_MASK_BITS_PER_ELEM))\n\n#define NVML_255_MASK_BIT_SET_PTR(index, nvmlMask)                          \\\n    nvmlMask->mask[index / NVML_255_MASK_BITS_PER_ELEM] |= (1 << (index % NVML_255_MASK_BITS_PER_ELEM))\n\n#define NVML_255_MASK_BIT_GET_PTR(index, nvmlMask)                          \\\n    nvmlMask->mask[index / NVML_255_MASK_BITS_PER_ELEM] & (1 << (index % NVML_255_MASK_BITS_PER_ELEM))\n\ntypedef struct\n{\n     unsigned int mask[NVML_255_MASK_NUM_ELEMS];     //<! Array to hold 255 bits\n} nvmlMask255_t;\n\n/***************************************************************************************************/\n/** @defgroup nvmlPowerProfiles Power Profile Information\n *  @{\n */\n/***************************************************************************************************/\n#define NVML_WORKLOAD_POWER_MAX_PROFILES        (255)\ntypedef enum\n{\n    NVML_POWER_PROFILE_MAX_P            = 0,\n    NVML_POWER_PROFILE_MAX_Q            = 1,\n    NVML_POWER_PROFILE_COMPUTE          = 2,\n    NVML_POWER_PROFILE_MEMORY_BOUND     = 3,\n    NVML_POWER_PROFILE_NETWORK          = 4,\n    NVML_POWER_PROFILE_BALANCED         = 5,\n    NVML_POWER_PROFILE_LLM_INFERENCE    = 6,\n    NVML_POWER_PROFILE_LLM_TRAINING     = 7,\n    NVML_POWER_PROFILE_RBM              = 8,\n    NVML_POWER_PROFILE_DCPCIE           = 9,\n    NVML_POWER_PROFILE_HMMA_SPARSE      = 10,\n    NVML_POWER_PROFILE_HMMA_DENSE       = 11,\n    NVML_POWER_PROFILE_SYNC_BALANCED    = 12,\n    NVML_POWER_PROFILE_HPC              = 13,\n    NVML_POWER_PROFILE_MIG              = 14,\n\n    NVML_POWER_PROFILE_MAX              = 15,\n} nvmlPowerProfileType_t;\n\n/**\n * Profile Metadata\n */\ntypedef struct\n{\n    unsigned int    version;            //!< the API version number\n    unsigned int    profileId;          //!< Performance Profile Id to provide semantic name such as compute, Memory, Max-Q...\n    unsigned int    priority;           //!< Priority of the profile\n    nvmlMask255_t   conflictingMask;    //!< Mask of conflicting performance profiles\n} nvmlWorkloadPowerProfileInfo_v1_t;\ntypedef nvmlWorkloadPowerProfileInfo_v1_t nvmlWorkloadPowerProfileInfo_t;\n#define nvmlWorkloadPowerProfileInfo_v1 NVML_STRUCT_VERSION(WorkloadPowerProfileInfo, 1)\n\n/**\n * Profiles Info\n */\ntypedef struct\n{\n    unsigned int              version;                                              //!< the API version number\n    nvmlMask255_t             perfProfilesMask;                                     //!< Mask bit set to true for each valid performance profile\n    nvmlWorkloadPowerProfileInfo_t perfProfile[NVML_WORKLOAD_POWER_MAX_PROFILES];   //!< Array of performance profile info parameters\n} nvmlWorkloadPowerProfileProfilesInfo_v1_t;\ntypedef nvmlWorkloadPowerProfileProfilesInfo_v1_t nvmlWorkloadPowerProfileProfilesInfo_t;\n#define nvmlWorkloadPowerProfileProfilesInfo_v1 NVML_STRUCT_VERSION(WorkloadPowerProfileProfilesInfo, 1)\n\n/**\n * Current Profiles\n */\ntypedef struct\n{\n    unsigned int            version;\n    nvmlMask255_t           perfProfilesMask;       //!< Mask bit set to true for each valid performance profile\n    nvmlMask255_t           requestedProfilesMask;  //!< Mask of currently requested performance profiles\n    nvmlMask255_t           enforcedProfilesMask;   //!< Mask of currently enforced performance profiles post all arbitrations among the requested profiles.\n} nvmlWorkloadPowerProfileCurrentProfiles_v1_t;\ntypedef nvmlWorkloadPowerProfileCurrentProfiles_v1_t nvmlWorkloadPowerProfileCurrentProfiles_t;\n#define nvmlWorkloadPowerProfileCurrentProfiles_v1 NVML_STRUCT_VERSION(WorkloadPowerProfileCurrentProfiles, 1)\n\n/**\n * Requested Profiles\n */\ntypedef struct\n{\n    unsigned int version;                   //!< the API version number\n    nvmlMask255_t requestedProfilesMask;    //!< Mask of 255 bits, each bit representing index of respective perf profile\n} nvmlWorkloadPowerProfileRequestedProfiles_v1_t;\ntypedef nvmlWorkloadPowerProfileRequestedProfiles_v1_t nvmlWorkloadPowerProfileRequestedProfiles_t;\n#define nvmlWorkloadPowerProfileRequestedProfiles_v1 NVML_STRUCT_VERSION(WorkloadPowerProfileRequestedProfiles, 1)\n\n/**\n * Get Performance Profiles Information\n *\n * %BLACKWELL_OR_NEWER%\n * See \\ref nvmlWorkloadPowerProfileProfilesInfo_v1_t for more information on the struct.\n * The mask \\a perfProfilesMask is bitmask of all supported mode indices where the\n * mode is supported if the index is 1. Each supported mode will have a corresponding\n * entry in the \\a perfProfile array which will contain the \\a profileId, the\n * \\a priority of this mode, where the lower the value, the higher the priority,\n * and a \\a conflictingMask, where each bit set in the mask corresponds to a different\n * profile which cannot be used in conjunction with the given profile.\n *\n * @param device                               The identifier of the target device\n * @param profilesInfo                         Reference to struct \\a nvmlWorkloadPowerProfileProfilesInfo_t\n *\n * @return\n *         - \\ref NVML_SUCCESS                         If the query is successful\n *         - \\ref NVML_ERROR_INSUFFICIENT_SIZE         If struct is fully allocated\n *         - \\ref NVML_ERROR_UNINITIALIZED             If the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT          If \\a device is invalid or \\a pointer to struct is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED             If the device does not support this feature\n *         - \\ref NVML_ERROR_GPU_IS_LOST               If the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH If the provided version is invalid/unsupported\n *         - \\ref NVML_ERROR_UNKNOWN                   On any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceWorkloadPowerProfileGetProfilesInfo(nvmlDevice_t device,\n                                                                   nvmlWorkloadPowerProfileProfilesInfo_t *profilesInfo);\n/**\n * Get Current Performance Profiles\n *\n * %BLACKWELL_OR_NEWER%\n * See \\ref nvmlWorkloadPowerProfileCurrentProfiles_v1_t for more information on the struct.\n * This API returns a stuct which contains the current \\a perfProfilesMask,\n * \\a requestedProfilesMask and \\a enforcedProfilesMask. Each bit set in each\n * bitmasks indicates the profile is supported, currently requested or currently\n * engaged, respectively.\n *\n * @param device                The identifier of the target device\n * @param currentProfiles       Reference to struct \\a nvmlWorkloadPowerProfileCurrentProfiles_v1_t\n *\n * @return\n *         - \\ref NVML_SUCCESS                         If the query is successful\n *         - \\ref NVML_ERROR_UNINITIALIZED             If the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT          If \\a device is invalid or the pointer to struct is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED             If the device does not support this feature\n *         - \\ref NVML_ERROR_GPU_IS_LOST               If the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH If the provided version is invalid/unsupported\n *         - \\ref NVML_ERROR_UNKNOWN                   On any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceWorkloadPowerProfileGetCurrentProfiles(nvmlDevice_t device,\n                                                                      nvmlWorkloadPowerProfileCurrentProfiles_t *currentProfiles);\n/**\n * Set Requested Performance Profiles\n *\n * %BLACKWELL_OR_NEWER%\n * See \\ref nvmlWorkloadPowerProfileRequestedProfiles_v1_t for more information on the struct.\n * Reuqest one or more performance profiles be activated using the input bitmask\n * \\a requestedProfilesMask, where each bit set corresponds to a supported bit from\n * the \\a perfProfilesMask. These profiles will be added to existing list of\n * currently requested profiles.\n * Requires root/admin permissions.\n *\n * @param device                The identifier of the target device\n * @param requestedProfiles     Reference to struct \\a nvmlWorkloadPowerProfileRequestedProfiles_v1_t\n *\n * @return\n *         - \\ref NVML_SUCCESS                         If the query is successful\n *         - \\ref NVML_ERROR_UNINITIALIZED             If the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT          If \\a device is invalid or \\a pointer to struct is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED             If the device does not support this feature\n *         - \\ref NVML_ERROR_GPU_IS_LOST               If the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH If the provided version is invalid/unsupported\n *         - \\ref NVML_ERROR_UNKNOWN                   On any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceWorkloadPowerProfileSetRequestedProfiles(nvmlDevice_t device,\n                                                                        nvmlWorkloadPowerProfileRequestedProfiles_t *requestedProfiles);\n/**\n * Clear Requested Performance Profiles\n *\n * %BLACKWELL_OR_NEWER%\n * See \\ref nvmlWorkloadPowerProfileRequestedProfiles_v1_t for more information on the struct.\n * Clear one or more performance profiles be using the input bitmask\n * \\a requestedProfilesMask, where each bit set corresponds to a supported bit from\n * the \\a perfProfilesMask. These profiles will be removed from the existing list of\n * currently requested profiles.\n * Requires root/admin permissions.\n *\n * @param device                The identifier of the target device\n * @param requestedProfiles     Reference to struct \\a nvmlWorkloadPowerProfileRequestedProfiles_v1_t\n *\n * @return\n *         - \\ref NVML_SUCCESS                         If the query is successful\n *         - \\ref NVML_ERROR_UNINITIALIZED             If the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT          If \\a device is invalid or \\a pointer to struct is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED             If the device does not support this feature\n *         - \\ref NVML_ERROR_GPU_IS_LOST               If the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH If the provided version is invalid/unsupported\n *         - \\ref NVML_ERROR_UNKNOWN                   On any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceWorkloadPowerProfileClearRequestedProfiles(nvmlDevice_t device,\n                                                                          nvmlWorkloadPowerProfileRequestedProfiles_t *requestedProfiles);\n/** @} */ // @defgroup\n\n/***************************************************************************************************/\n/** @defgroup nvmlPowerSmoothing Power Smoothing Information\n *  @{\n */\n/***************************************************************************************************/\n#define NVML_POWER_SMOOTHING_IDX_FROM_FIELD_VAL(field_val)  \\\n (field_val - NVML_FI_PWR_SMOOTHING_ENABLED)\n\n#define NVML_POWER_SMOOTHING_MAX_NUM_PROFILES                   5\n#define NVML_POWER_SMOOTHING_NUM_PROFILE_PARAMS                 4\n#define NVML_POWER_SMOOTHING_ADMIN_OVERRIDE_NOT_SET             0xFFFFFFFFU\n#define NVML_POWER_SMOOTHING_PROFILE_PARAM_PERCENT_TMP_FLOOR    0\n#define NVML_POWER_SMOOTHING_PROFILE_PARAM_RAMP_UP_RATE         1\n#define NVML_POWER_SMOOTHING_PROFILE_PARAM_RAMP_DOWN_RATE       2\n#define NVML_POWER_SMOOTHING_PROFILE_PARAM_RAMP_DOWN_HYSTERESIS 3\n\n/**\n * Power Smoothing Structure for Profile information\n */\ntypedef struct\n{\n    unsigned int version; //!< the API version number\n\n    unsigned int profileId; //!< The requested profile ID\n    unsigned int paramId;   //!< The requested paramater ID\n    double value;           //!< The requested value for the given parameter\n} nvmlPowerSmoothingProfile_v1_t;\ntypedef nvmlPowerSmoothingProfile_v1_t  nvmlPowerSmoothingProfile_t;\n#define nvmlPowerSmoothingProfile_v1 NVML_STRUCT_VERSION(PowerSmoothingProfile, 1)\n\n/**\n * Power Smoothing Structure for Feature Enablement\n */\ntypedef struct\n{\n    unsigned int version;       //!< the API version number\n    nvmlEnableState_t state;    //!< 0/Disabled or 1/Enabled\n} nvmlPowerSmoothingState_v1_t;\ntypedef nvmlPowerSmoothingState_v1_t  nvmlPowerSmoothingState_t;\n#define nvmlPowerSmoothingState_v1 NVML_STRUCT_VERSION(PowerSmoothingState, 1)\n\n/**\n * Activiate a specific preset profile for datacenter power smoothing.\n * The API only sets the active preset profile based on the input profileId,\n * and ignores the other parameters of the structure.\n * Requires root/admin permissions.\n *\n * %BLACKWELL_OR_NEWER%\n *\n * @param device                                The identifier of the target device\n * @param profile                               Reference to \\ref nvmlPowerSmoothingProfile_v1_t.\n *                                              Note that only \\a profile->profileId is used and\n *                                              the rest of the structure is ignored.\n *\n * @return\n *        - \\ref NVML_SUCCESS                   if the Desired Profile was successfully set\n *        - \\ref NVML_ERROR_INVALID_ARGUMENT    if device is invalid or structure was NULL\n *        - \\ref NVML_ERROR_NO_PERMISSION       if user does not have permission to change the profile number\n *        - \\ref NVML_ERROR_NOT_SUPPORTED       if this feature is not supported by the device\n *\n **/\nnvmlReturn_t DECLDIR nvmlDevicePowerSmoothingActivatePresetProfile(nvmlDevice_t device,\n                                                                   nvmlPowerSmoothingProfile_t *profile);\n\n/**\n * Update the value of a specific profile parameter contained within \\ref nvmlPowerSmoothingProfile_v1_t.\n * Requires root/admin permissions.\n *\n * %BLACKWELL_OR_NEWER%\n *\n * NVML_POWER_SMOOTHING_PROFILE_PARAM_PERCENT_TMP_FLOOR expects a value as a percentage from 00.00-100.00%\n * NVML_POWER_SMOOTHING_PROFILE_PARAM_RAMP_UP_RATE expects a value in W/s\n * NVML_POWER_SMOOTHING_PROFILE_PARAM_RAMP_DOWN_RATE expects a value in W/s\n * NVML_POWER_SMOOTHING_PROFILE_PARAM_RAMP_DOWN_HYSTERESIS expects a value in ms\n *\n * @param device                                      The identifier of the target device\n * @param profile                                     Reference to \\ref nvmlPowerSmoothingProfile_v1_t struct\n *\n * @return\n *        - \\ref NVML_SUCCESS                         if the Active Profile was successfully set\n *        - \\ref NVML_ERROR_INVALID_ARGUMENT          if device is invalid or profile parameter/value was invalid\n *        - \\ref NVML_ERROR_NO_PERMISSION             if user does not have permission to change any profile parameters\n *        - \\ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH if the structure version is not supported\n *\n **/\nnvmlReturn_t DECLDIR nvmlDevicePowerSmoothingUpdatePresetProfileParam(nvmlDevice_t device,\n                                                                      nvmlPowerSmoothingProfile_t *profile);\n/**\n * Enable or disable the Power Smoothing Feature.\n * Requires root/admin permissions.\n *\n * %BLACKWELL_OR_NEWER%\n *\n * See \\ref nvmlEnableState_t for details on allowed states\n *\n * @param device                                      The identifier of the target device\n * @param state                                       Reference to \\ref nvmlPowerSmoothingState_v1_t\n *\n * @return\n *        - \\ref NVML_SUCCESS                         if the feature state was successfully set\n *        - \\ref NVML_ERROR_INVALID_ARGUMENT          if device is invalid or state is NULL\n *        - \\ref NVML_ERROR_NO_PERMISSION             if user does not have permission to change feature state\n *        - \\ref NVML_ERROR_NOT_SUPPORTED             if this feature is not supported by the device\n *\n **/\nnvmlReturn_t  DECLDIR nvmlDevicePowerSmoothingSetState(nvmlDevice_t device,\n                                                       nvmlPowerSmoothingState_t *state);\n/** @} */ // @defgroup\n\n/**\n * Retrieves the counts of SRAM unique uncorrected ECC errors\n *\n * %BLACKWELL_OR_NEWER%\n *\n * Reads SRAM unique uncorrected ECC error counts. The total number of unique errors is returned by\n * \\a errorCounts->entryCount. Error counts are returned as an array of in the caller-supplied buffer pointed at by\n * \\a errorCounts->entries. Each error count entry holds the location/address of the unique error, the error count and\n * whether the error is parity or not.\n *\n * To read SRAM unique uncorrected ECC error counts, first determine the size of buffer required to hold the error\n * counts by invoking the function with \\a errorCounts->entries set to NULL. The required array size is returned in\n * \\a errorCounts->entryCount. The caller should allocate a buffer of size \"errorCounts->entryCount *\n * sizeof(nvmlEccSramUniqueUncorrectedErrorCounts_t)\". Invoke the function again with the allocated buffer passed in\n * \\a errorCounts->entries. This time \\a errorCounts->entryCount will be taken as the entry array size that caller\n * allocates for \\a errorCounts->entries.\n *\n * On successful return of the second query, the function updates \\a errorCounts->entries with all unique errors. This\n * may fail if \\a errorCounts->entryCount is smaller than the actual number of unique errors. This can happen in cases\n * like new errors occur since the previous query of \\a errorCounts->entryCount. No matter the query succeeds or not,\n * the latest number of unique errors will be returned in \\a errorCounts->entryCount.\n *\n * @note The query is only supported when ECC mode is enabled.\n *\n * @param device                    The identifier of the target device\n * @param errorCounts               Pointer to caller-supplied array which returns the unique error count entries\n *\n * @return\n *         - \\ref NVML_SUCCESS                 if \\a utilization has been populated\n *         - \\ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized\n *         - \\ref NVML_ERROR_INVALID_ARGUMENT  if \\a device is invalid, \\a errorCounts->entryCount is NULL\n *         - \\ref NVML_ERROR_NOT_SUPPORTED     if the device does not support this feature or ECC mods is not enabled\n *         - \\ref NVML_ERROR_INSUFFICIENT_SIZE if the allocated error entry array is not big enough\n *         - \\ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible\n *         - \\ref NVML_ERROR_UNKNOWN           on any unexpected error\n */\nnvmlReturn_t DECLDIR nvmlDeviceGetSramUniqueUncorrectedEccErrorCounts(nvmlDevice_t device,\n                                                                      nvmlEccSramUniqueUncorrectedErrorCounts_t *errorCounts);\n\n/**\n * NVML API versioning support\n */\n\n#ifdef NVML_NO_UNVERSIONED_FUNC_DEFS\nnvmlReturn_t DECLDIR nvmlInit(void);\nnvmlReturn_t DECLDIR nvmlDeviceGetCount(unsigned int *deviceCount);\nnvmlReturn_t DECLDIR nvmlDeviceGetHandleByIndex(unsigned int index, nvmlDevice_t *device);\nnvmlReturn_t DECLDIR nvmlDeviceGetHandleByPciBusId(const char *pciBusId, nvmlDevice_t *device);\nnvmlReturn_t DECLDIR nvmlDeviceGetPciInfo(nvmlDevice_t device, nvmlPciInfo_t *pci);\nnvmlReturn_t DECLDIR nvmlDeviceGetPciInfo_v2(nvmlDevice_t device, nvmlPciInfo_t *pci);\nnvmlReturn_t DECLDIR nvmlDeviceGetNvLinkRemotePciInfo(nvmlDevice_t device, unsigned int link, nvmlPciInfo_t *pci);\nnvmlReturn_t DECLDIR nvmlDeviceGetGridLicensableFeatures(nvmlDevice_t device, nvmlGridLicensableFeatures_t *pGridLicensableFeatures);\nnvmlReturn_t DECLDIR nvmlDeviceGetGridLicensableFeatures_v2(nvmlDevice_t device, nvmlGridLicensableFeatures_t *pGridLicensableFeatures);\nnvmlReturn_t DECLDIR nvmlDeviceGetGridLicensableFeatures_v3(nvmlDevice_t device, nvmlGridLicensableFeatures_t *pGridLicensableFeatures);\nnvmlReturn_t DECLDIR nvmlDeviceRemoveGpu(nvmlPciInfo_t *pciInfo);\nnvmlReturn_t DECLDIR nvmlEventSetWait(nvmlEventSet_t set, nvmlEventData_t * data, unsigned int timeoutms);\nnvmlReturn_t DECLDIR nvmlDeviceGetAttributes(nvmlDevice_t device, nvmlDeviceAttributes_t *attributes);\nnvmlReturn_t DECLDIR nvmlComputeInstanceGetInfo(nvmlComputeInstance_t computeInstance, nvmlComputeInstanceInfo_t *info);\nnvmlReturn_t DECLDIR nvmlDeviceGetComputeRunningProcesses(nvmlDevice_t device, unsigned int *infoCount, nvmlProcessInfo_v1_t *infos);\nnvmlReturn_t DECLDIR nvmlDeviceGetComputeRunningProcesses_v2(nvmlDevice_t device, unsigned int *infoCount, nvmlProcessInfo_v2_t *infos);\nnvmlReturn_t DECLDIR nvmlDeviceGetGraphicsRunningProcesses(nvmlDevice_t device, unsigned int *infoCount, nvmlProcessInfo_v1_t *infos);\nnvmlReturn_t DECLDIR nvmlDeviceGetGraphicsRunningProcesses_v2(nvmlDevice_t device, unsigned int *infoCount, nvmlProcessInfo_v2_t *infos);\nnvmlReturn_t DECLDIR nvmlDeviceGetMPSComputeRunningProcesses(nvmlDevice_t device, unsigned int *infoCount, nvmlProcessInfo_v1_t *infos);\nnvmlReturn_t DECLDIR nvmlDeviceGetMPSComputeRunningProcesses_v2(nvmlDevice_t device, unsigned int *infoCount, nvmlProcessInfo_v2_t *infos);\nnvmlReturn_t DECLDIR nvmlDeviceGetGpuInstancePossiblePlacements(nvmlDevice_t device, unsigned int profileId, nvmlGpuInstancePlacement_t *placements, unsigned int *count);\nnvmlReturn_t DECLDIR nvmlVgpuInstanceGetLicenseInfo(nvmlVgpuInstance_t vgpuInstance, nvmlVgpuLicenseInfo_t *licenseInfo);\nnvmlReturn_t DECLDIR nvmlDeviceGetDriverModel(nvmlDevice_t device, nvmlDriverModel_t *current, nvmlDriverModel_t *pending);\n#endif // #ifdef NVML_NO_UNVERSIONED_FUNC_DEFS\n\n#if defined(NVML_NO_UNVERSIONED_FUNC_DEFS)\n// We don't define APIs to run new versions if this guard is present so there is\n// no need to undef\n#elif defined(__NVML_API_VERSION_INTERNAL)\n#undef nvmlDeviceGetGraphicsRunningProcesses\n#undef nvmlDeviceGetComputeRunningProcesses\n#undef nvmlDeviceGetMPSComputeRunningProcesses\n#undef nvmlDeviceGetAttributes\n#undef nvmlComputeInstanceGetInfo\n#undef nvmlEventSetWait\n#undef nvmlDeviceGetGridLicensableFeatures\n#undef nvmlDeviceRemoveGpu\n#undef nvmlDeviceGetNvLinkRemotePciInfo\n#undef nvmlDeviceGetPciInfo\n#undef nvmlDeviceGetCount\n#undef nvmlDeviceGetHandleByIndex\n#undef nvmlDeviceGetHandleByPciBusId\n#undef nvmlInit\n#undef nvmlBlacklistDeviceInfo_t\n#undef nvmlGetBlacklistDeviceCount\n#undef nvmlGetBlacklistDeviceInfoByIndex\n#undef nvmlDeviceGetGpuInstancePossiblePlacements\n#undef nvmlVgpuInstanceGetLicenseInfo\n#undef nvmlDeviceGetDriverModel\n#undef nvmlDeviceSetPowerManagementLimit\n\n#endif\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvml/pkg/nvml/refcount.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\npackage nvml\n\ntype refcount int\n\nfunc (r *refcount) IncOnNoError(err error) {\n\tif err == nil {\n\t\t(*r)++\n\t}\n}\n\nfunc (r *refcount) DecOnNoError(err error) {\n\tif err == nil && (*r) > 0 {\n\t\t(*r)--\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvml/pkg/nvml/return.go",
    "content": "// Copyright (c) 2020, NVIDIA CORPORATION.  All rights reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage nvml\n\nimport (\n\t\"fmt\"\n)\n\n// nvml.ErrorString()\nfunc (l *library) ErrorString(r Return) string {\n\treturn r.Error()\n}\n\n// String returns the string representation of a Return.\nfunc (r Return) String() string {\n\treturn r.Error()\n}\n\n// Error returns the string representation of a Return.\nfunc (r Return) Error() string {\n\treturn errorStringFunc(r)\n}\n\n// Assigned to nvml.ErrorString if the system nvml library is in use.\nvar errorStringFunc = defaultErrorStringFunc\n\n// defaultErrorStringFunc provides a basic nvmlErrorString implementation.\n// This allows the nvml.ErrorString function to be used even if the NVML library\n// is not loaded.\nvar defaultErrorStringFunc = func(r Return) string {\n\tswitch r {\n\tcase SUCCESS:\n\t\treturn \"SUCCESS\"\n\tcase ERROR_UNINITIALIZED:\n\t\treturn \"ERROR_UNINITIALIZED\"\n\tcase ERROR_INVALID_ARGUMENT:\n\t\treturn \"ERROR_INVALID_ARGUMENT\"\n\tcase ERROR_NOT_SUPPORTED:\n\t\treturn \"ERROR_NOT_SUPPORTED\"\n\tcase ERROR_NO_PERMISSION:\n\t\treturn \"ERROR_NO_PERMISSION\"\n\tcase ERROR_ALREADY_INITIALIZED:\n\t\treturn \"ERROR_ALREADY_INITIALIZED\"\n\tcase ERROR_NOT_FOUND:\n\t\treturn \"ERROR_NOT_FOUND\"\n\tcase ERROR_INSUFFICIENT_SIZE:\n\t\treturn \"ERROR_INSUFFICIENT_SIZE\"\n\tcase ERROR_INSUFFICIENT_POWER:\n\t\treturn \"ERROR_INSUFFICIENT_POWER\"\n\tcase ERROR_DRIVER_NOT_LOADED:\n\t\treturn \"ERROR_DRIVER_NOT_LOADED\"\n\tcase ERROR_TIMEOUT:\n\t\treturn \"ERROR_TIMEOUT\"\n\tcase ERROR_IRQ_ISSUE:\n\t\treturn \"ERROR_IRQ_ISSUE\"\n\tcase ERROR_LIBRARY_NOT_FOUND:\n\t\treturn \"ERROR_LIBRARY_NOT_FOUND\"\n\tcase ERROR_FUNCTION_NOT_FOUND:\n\t\treturn \"ERROR_FUNCTION_NOT_FOUND\"\n\tcase ERROR_CORRUPTED_INFOROM:\n\t\treturn \"ERROR_CORRUPTED_INFOROM\"\n\tcase ERROR_GPU_IS_LOST:\n\t\treturn \"ERROR_GPU_IS_LOST\"\n\tcase ERROR_RESET_REQUIRED:\n\t\treturn \"ERROR_RESET_REQUIRED\"\n\tcase ERROR_OPERATING_SYSTEM:\n\t\treturn \"ERROR_OPERATING_SYSTEM\"\n\tcase ERROR_LIB_RM_VERSION_MISMATCH:\n\t\treturn \"ERROR_LIB_RM_VERSION_MISMATCH\"\n\tcase ERROR_IN_USE:\n\t\treturn \"ERROR_IN_USE\"\n\tcase ERROR_MEMORY:\n\t\treturn \"ERROR_MEMORY\"\n\tcase ERROR_NO_DATA:\n\t\treturn \"ERROR_NO_DATA\"\n\tcase ERROR_VGPU_ECC_NOT_SUPPORTED:\n\t\treturn \"ERROR_VGPU_ECC_NOT_SUPPORTED\"\n\tcase ERROR_INSUFFICIENT_RESOURCES:\n\t\treturn \"ERROR_INSUFFICIENT_RESOURCES\"\n\tcase ERROR_FREQ_NOT_SUPPORTED:\n\t\treturn \"ERROR_FREQ_NOT_SUPPORTED\"\n\tcase ERROR_ARGUMENT_VERSION_MISMATCH:\n\t\treturn \"ERROR_ARGUMENT_VERSION_MISMATCH\"\n\tcase ERROR_DEPRECATED:\n\t\treturn \"ERROR_DEPRECATED\"\n\tcase ERROR_UNKNOWN:\n\t\treturn \"ERROR_UNKNOWN\"\n\tdefault:\n\t\treturn fmt.Sprintf(\"unknown return value: %d\", r)\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvml/pkg/nvml/system.go",
    "content": "// Copyright (c) 2020, NVIDIA CORPORATION.  All rights reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage nvml\n\n// nvml.SystemGetDriverVersion()\nfunc (l *library) SystemGetDriverVersion() (string, Return) {\n\tVersion := make([]byte, SYSTEM_DRIVER_VERSION_BUFFER_SIZE)\n\tret := nvmlSystemGetDriverVersion(&Version[0], SYSTEM_DRIVER_VERSION_BUFFER_SIZE)\n\treturn string(Version[:clen(Version)]), ret\n}\n\n// nvml.SystemGetNVMLVersion()\nfunc (l *library) SystemGetNVMLVersion() (string, Return) {\n\tVersion := make([]byte, SYSTEM_NVML_VERSION_BUFFER_SIZE)\n\tret := nvmlSystemGetNVMLVersion(&Version[0], SYSTEM_NVML_VERSION_BUFFER_SIZE)\n\treturn string(Version[:clen(Version)]), ret\n}\n\n// nvml.SystemGetCudaDriverVersion()\nfunc (l *library) SystemGetCudaDriverVersion() (int, Return) {\n\tvar CudaDriverVersion int32\n\tret := nvmlSystemGetCudaDriverVersion(&CudaDriverVersion)\n\treturn int(CudaDriverVersion), ret\n}\n\n// nvml.SystemGetCudaDriverVersion_v2()\nfunc (l *library) SystemGetCudaDriverVersion_v2() (int, Return) {\n\tvar CudaDriverVersion int32\n\tret := nvmlSystemGetCudaDriverVersion_v2(&CudaDriverVersion)\n\treturn int(CudaDriverVersion), ret\n}\n\n// nvml.SystemGetProcessName()\nfunc (l *library) SystemGetProcessName(pid int) (string, Return) {\n\tname := make([]byte, SYSTEM_PROCESS_NAME_BUFFER_SIZE)\n\tret := nvmlSystemGetProcessName(uint32(pid), &name[0], SYSTEM_PROCESS_NAME_BUFFER_SIZE)\n\treturn string(name[:clen(name)]), ret\n}\n\n// nvml.SystemGetHicVersion()\nfunc (l *library) SystemGetHicVersion() ([]HwbcEntry, Return) {\n\tvar hwbcCount uint32 = 1 // Will be reduced upon returning\n\tfor {\n\t\thwbcEntries := make([]HwbcEntry, hwbcCount)\n\t\tret := nvmlSystemGetHicVersion(&hwbcCount, &hwbcEntries[0])\n\t\tif ret == SUCCESS {\n\t\t\treturn hwbcEntries[:hwbcCount], ret\n\t\t}\n\t\tif ret != ERROR_INSUFFICIENT_SIZE {\n\t\t\treturn nil, ret\n\t\t}\n\t\thwbcCount *= 2\n\t}\n}\n\n// nvml.SystemGetTopologyGpuSet()\nfunc (l *library) SystemGetTopologyGpuSet(cpuNumber int) ([]Device, Return) {\n\tvar count uint32\n\tret := nvmlSystemGetTopologyGpuSet(uint32(cpuNumber), &count, nil)\n\tif ret != SUCCESS {\n\t\treturn nil, ret\n\t}\n\tif count == 0 {\n\t\treturn []Device{}, ret\n\t}\n\tdeviceArray := make([]nvmlDevice, count)\n\tret = nvmlSystemGetTopologyGpuSet(uint32(cpuNumber), &count, &deviceArray[0])\n\treturn convertSlice[nvmlDevice, Device](deviceArray), ret\n}\n\n// nvml.SystemGetConfComputeCapabilities()\nfunc (l *library) SystemGetConfComputeCapabilities() (ConfComputeSystemCaps, Return) {\n\tvar capabilities ConfComputeSystemCaps\n\tret := nvmlSystemGetConfComputeCapabilities(&capabilities)\n\treturn capabilities, ret\n}\n\n// nvml.SystemGetConfComputeState()\nfunc (l *library) SystemGetConfComputeState() (ConfComputeSystemState, Return) {\n\tvar state ConfComputeSystemState\n\tret := nvmlSystemGetConfComputeState(&state)\n\treturn state, ret\n}\n\n// nvml.SystemGetConfComputeGpusReadyState()\nfunc (l *library) SystemGetConfComputeGpusReadyState() (uint32, Return) {\n\tvar isAcceptingWork uint32\n\tret := nvmlSystemGetConfComputeGpusReadyState(&isAcceptingWork)\n\treturn isAcceptingWork, ret\n}\n\n// nvml.SystemSetConfComputeGpusReadyState()\nfunc (l *library) SystemSetConfComputeGpusReadyState(isAcceptingWork uint32) Return {\n\treturn nvmlSystemSetConfComputeGpusReadyState(isAcceptingWork)\n}\n\n// nvml.SystemSetNvlinkBwMode()\nfunc (l *library) SystemSetNvlinkBwMode(nvlinkBwMode uint32) Return {\n\treturn nvmlSystemSetNvlinkBwMode(nvlinkBwMode)\n}\n\n// nvml.SystemGetNvlinkBwMode()\nfunc (l *library) SystemGetNvlinkBwMode() (uint32, Return) {\n\tvar nvlinkBwMode uint32\n\tret := nvmlSystemGetNvlinkBwMode(&nvlinkBwMode)\n\treturn nvlinkBwMode, ret\n}\n\n// nvml.SystemGetConfComputeKeyRotationThresholdInfo()\nfunc (l *library) SystemGetConfComputeKeyRotationThresholdInfo() (ConfComputeGetKeyRotationThresholdInfo, Return) {\n\tvar keyRotationThresholdInfo ConfComputeGetKeyRotationThresholdInfo\n\tkeyRotationThresholdInfo.Version = STRUCT_VERSION(keyRotationThresholdInfo, 1)\n\tret := nvmlSystemGetConfComputeKeyRotationThresholdInfo(&keyRotationThresholdInfo)\n\treturn keyRotationThresholdInfo, ret\n}\n\n// nvml.SystemGetConfComputeSettings()\nfunc (l *library) SystemGetConfComputeSettings() (SystemConfComputeSettings, Return) {\n\tvar settings SystemConfComputeSettings\n\tsettings.Version = STRUCT_VERSION(settings, 1)\n\tret := nvmlSystemGetConfComputeSettings(&settings)\n\treturn settings, ret\n}\n\n// nvml.SystemSetConfComputeKeyRotationThresholdInfo()\nfunc (l *library) SystemSetConfComputeKeyRotationThresholdInfo(keyRotationThresholdInfo ConfComputeSetKeyRotationThresholdInfo) Return {\n\treturn nvmlSystemSetConfComputeKeyRotationThresholdInfo(&keyRotationThresholdInfo)\n}\n\n// nvml.SystemGetDriverBranch()\nfunc (l *library) SystemGetDriverBranch() (SystemDriverBranchInfo, Return) {\n\tvar branchInfo SystemDriverBranchInfo\n\tbranchInfo.Version = STRUCT_VERSION(branchInfo, 1)\n\tret := nvmlSystemGetDriverBranch(&branchInfo, SYSTEM_DRIVER_VERSION_BUFFER_SIZE)\n\treturn branchInfo, ret\n}\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvml/pkg/nvml/types_gen.go",
    "content": "// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs types.go\n\npackage nvml\n\nimport \"unsafe\"\n\ntype nvmlDevice struct {\n\tHandle *_Ctype_struct_nvmlDevice_st\n}\n\ntype nvmlGpuInstance struct {\n\tHandle *_Ctype_struct_nvmlGpuInstance_st\n}\n\ntype PciInfoExt_v1 struct {\n\tVersion        uint32\n\tDomain         uint32\n\tBus            uint32\n\tDevice         uint32\n\tPciDeviceId    uint32\n\tPciSubSystemId uint32\n\tBaseClass      uint32\n\tSubClass       uint32\n\tBusId          [32]uint8\n}\n\ntype PciInfoExt struct {\n\tVersion        uint32\n\tDomain         uint32\n\tBus            uint32\n\tDevice         uint32\n\tPciDeviceId    uint32\n\tPciSubSystemId uint32\n\tBaseClass      uint32\n\tSubClass       uint32\n\tBusId          [32]uint8\n}\n\ntype PciInfo struct {\n\tBusIdLegacy    [16]uint8\n\tDomain         uint32\n\tBus            uint32\n\tDevice         uint32\n\tPciDeviceId    uint32\n\tPciSubSystemId uint32\n\tBusId          [32]uint8\n}\n\ntype EccErrorCounts struct {\n\tL1Cache      uint64\n\tL2Cache      uint64\n\tDeviceMemory uint64\n\tRegisterFile uint64\n}\n\ntype Utilization struct {\n\tGpu    uint32\n\tMemory uint32\n}\n\ntype Memory struct {\n\tTotal uint64\n\tFree  uint64\n\tUsed  uint64\n}\n\ntype Memory_v2 struct {\n\tVersion  uint32\n\tTotal    uint64\n\tReserved uint64\n\tFree     uint64\n\tUsed     uint64\n}\n\ntype BAR1Memory struct {\n\tBar1Total uint64\n\tBar1Free  uint64\n\tBar1Used  uint64\n}\n\ntype ProcessInfo_v1 struct {\n\tPid           uint32\n\tUsedGpuMemory uint64\n}\n\ntype ProcessInfo_v2 struct {\n\tPid               uint32\n\tUsedGpuMemory     uint64\n\tGpuInstanceId     uint32\n\tComputeInstanceId uint32\n}\n\ntype ProcessInfo struct {\n\tPid               uint32\n\tUsedGpuMemory     uint64\n\tGpuInstanceId     uint32\n\tComputeInstanceId uint32\n}\n\ntype ProcessDetail_v1 struct {\n\tPid                      uint32\n\tUsedGpuMemory            uint64\n\tGpuInstanceId            uint32\n\tComputeInstanceId        uint32\n\tUsedGpuCcProtectedMemory uint64\n}\n\ntype ProcessDetailList_v1 struct {\n\tVersion             uint32\n\tMode                uint32\n\tNumProcArrayEntries uint32\n\tProcArray           *ProcessDetail_v1\n}\n\ntype ProcessDetailList struct {\n\tVersion             uint32\n\tMode                uint32\n\tNumProcArrayEntries uint32\n\tProcArray           *ProcessDetail_v1\n}\n\ntype DeviceAttributes struct {\n\tMultiprocessorCount       uint32\n\tSharedCopyEngineCount     uint32\n\tSharedDecoderCount        uint32\n\tSharedEncoderCount        uint32\n\tSharedJpegCount           uint32\n\tSharedOfaCount            uint32\n\tGpuInstanceSliceCount     uint32\n\tComputeInstanceSliceCount uint32\n\tMemorySizeMB              uint64\n}\n\ntype C2cModeInfo_v1 struct {\n\tIsC2cEnabled uint32\n}\n\ntype DeviceAddressingMode_v1 struct {\n\tVersion uint32\n\tValue   uint32\n}\n\ntype DeviceAddressingMode struct {\n\tVersion uint32\n\tValue   uint32\n}\n\ntype RepairStatus_v1 struct {\n\tVersion               uint32\n\tBChannelRepairPending uint32\n\tBTpcRepairPending     uint32\n}\n\ntype RepairStatus struct {\n\tVersion               uint32\n\tBChannelRepairPending uint32\n\tBTpcRepairPending     uint32\n}\n\ntype RowRemapperHistogramValues struct {\n\tMax     uint32\n\tHigh    uint32\n\tPartial uint32\n\tLow     uint32\n\tNone    uint32\n}\n\ntype NvLinkUtilizationControl struct {\n\tUnits     uint32\n\tPktfilter uint32\n}\n\ntype BridgeChipInfo struct {\n\tType      uint32\n\tFwVersion uint32\n}\n\ntype BridgeChipHierarchy struct {\n\tBridgeCount    uint8\n\tBridgeChipInfo [128]BridgeChipInfo\n}\n\nconst sizeofValue = unsafe.Sizeof([8]byte{})\n\ntype Value [sizeofValue]byte\n\ntype Sample struct {\n\tTimeStamp   uint64\n\tSampleValue [8]byte\n}\n\ntype ViolationTime struct {\n\tReferenceTime uint64\n\tViolationTime uint64\n}\n\ntype GpuThermalSettings struct {\n\tCount  uint32\n\tSensor [3]_Ctype_struct___28\n}\n\ntype CoolerInfo_v1 struct {\n\tVersion    uint32\n\tIndex      uint32\n\tSignalType uint32\n\tTarget     uint32\n}\n\ntype CoolerInfo struct {\n\tVersion    uint32\n\tIndex      uint32\n\tSignalType uint32\n\tTarget     uint32\n}\n\nconst sizeofUUIDValue = unsafe.Sizeof([41]byte{})\n\ntype UUIDValue [sizeofUUIDValue]byte\n\ntype UUID_v1 struct {\n\tVersion   uint32\n\tType      uint32\n\tValue     [41]byte\n\tPad_cgo_0 [3]byte\n}\n\ntype UUID struct {\n\tVersion   uint32\n\tType      uint32\n\tValue     [41]byte\n\tPad_cgo_0 [3]byte\n}\n\ntype Pdi_v1 struct {\n\tVersion uint32\n\tValue   uint64\n}\n\ntype Pdi struct {\n\tVersion uint32\n\tValue   uint64\n}\n\ntype DramEncryptionInfo_v1 struct {\n\tVersion         uint32\n\tEncryptionState uint32\n}\n\ntype DramEncryptionInfo struct {\n\tVersion         uint32\n\tEncryptionState uint32\n}\n\ntype MarginTemperature_v1 struct {\n\tVersion           uint32\n\tMarginTemperature int32\n}\n\ntype MarginTemperature struct {\n\tVersion           uint32\n\tMarginTemperature int32\n}\n\ntype ClkMonFaultInfo struct {\n\tClkApiDomain       uint32\n\tClkDomainFaultMask uint32\n}\n\ntype ClkMonStatus struct {\n\tBGlobalStatus  uint32\n\tClkMonListSize uint32\n\tClkMonList     [32]ClkMonFaultInfo\n}\n\ntype ClockOffset_v1 struct {\n\tVersion           uint32\n\tType              uint32\n\tPstate            uint32\n\tClockOffsetMHz    int32\n\tMinClockOffsetMHz int32\n\tMaxClockOffsetMHz int32\n}\n\ntype ClockOffset struct {\n\tVersion           uint32\n\tType              uint32\n\tPstate            uint32\n\tClockOffsetMHz    int32\n\tMinClockOffsetMHz int32\n\tMaxClockOffsetMHz int32\n}\n\ntype FanSpeedInfo_v1 struct {\n\tVersion uint32\n\tFan     uint32\n\tSpeed   uint32\n}\n\ntype FanSpeedInfo struct {\n\tVersion uint32\n\tFan     uint32\n\tSpeed   uint32\n}\n\ntype DevicePerfModes_v1 struct {\n\tVersion uint32\n\tStr     [2048]uint8\n}\n\ntype DevicePerfModes struct {\n\tVersion uint32\n\tStr     [2048]uint8\n}\n\ntype DeviceCurrentClockFreqs_v1 struct {\n\tVersion uint32\n\tStr     [2048]uint8\n}\n\ntype DeviceCurrentClockFreqs struct {\n\tVersion uint32\n\tStr     [2048]uint8\n}\n\ntype DevicePowerMizerModes_v1 struct {\n\tCurrentMode              uint32\n\tMode                     uint32\n\tSupportedPowerMizerModes uint32\n}\n\ntype ProcessUtilizationSample struct {\n\tPid       uint32\n\tTimeStamp uint64\n\tSmUtil    uint32\n\tMemUtil   uint32\n\tEncUtil   uint32\n\tDecUtil   uint32\n}\n\ntype ProcessUtilizationInfo_v1 struct {\n\tTimeStamp uint64\n\tPid       uint32\n\tSmUtil    uint32\n\tMemUtil   uint32\n\tEncUtil   uint32\n\tDecUtil   uint32\n\tJpgUtil   uint32\n\tOfaUtil   uint32\n\tPad_cgo_0 [4]byte\n}\n\ntype ProcessesUtilizationInfo_v1 struct {\n\tVersion             uint32\n\tProcessSamplesCount uint32\n\tLastSeenTimeStamp   uint64\n\tProcUtilArray       *ProcessUtilizationInfo_v1\n}\n\ntype ProcessesUtilizationInfo struct {\n\tVersion             uint32\n\tProcessSamplesCount uint32\n\tLastSeenTimeStamp   uint64\n\tProcUtilArray       *ProcessUtilizationInfo_v1\n}\n\ntype EccSramErrorStatus_v1 struct {\n\tVersion                 uint32\n\tAggregateUncParity      uint64\n\tAggregateUncSecDed      uint64\n\tAggregateCor            uint64\n\tVolatileUncParity       uint64\n\tVolatileUncSecDed       uint64\n\tVolatileCor             uint64\n\tAggregateUncBucketL2    uint64\n\tAggregateUncBucketSm    uint64\n\tAggregateUncBucketPcie  uint64\n\tAggregateUncBucketMcu   uint64\n\tAggregateUncBucketOther uint64\n\tBThresholdExceeded      uint32\n\tPad_cgo_0               [4]byte\n}\n\ntype EccSramErrorStatus struct {\n\tVersion                 uint32\n\tAggregateUncParity      uint64\n\tAggregateUncSecDed      uint64\n\tAggregateCor            uint64\n\tVolatileUncParity       uint64\n\tVolatileUncSecDed       uint64\n\tVolatileCor             uint64\n\tAggregateUncBucketL2    uint64\n\tAggregateUncBucketSm    uint64\n\tAggregateUncBucketPcie  uint64\n\tAggregateUncBucketMcu   uint64\n\tAggregateUncBucketOther uint64\n\tBThresholdExceeded      uint32\n\tPad_cgo_0               [4]byte\n}\n\ntype PlatformInfo_v1 struct {\n\tVersion                   uint32\n\tIbGuid                    [16]uint8\n\tRackGuid                  [16]uint8\n\tChassisPhysicalSlotNumber uint8\n\tComputeSlotIndex          uint8\n\tNodeIndex                 uint8\n\tPeerType                  uint8\n\tModuleId                  uint8\n\tPad_cgo_0                 [3]byte\n}\n\ntype PlatformInfo_v2 struct {\n\tVersion             uint32\n\tIbGuid              [16]uint8\n\tChassisSerialNumber [16]uint8\n\tSlotNumber          uint8\n\tTrayIndex           uint8\n\tHostId              uint8\n\tPeerType            uint8\n\tModuleId            uint8\n\tPad_cgo_0           [3]byte\n}\n\ntype PlatformInfo struct {\n\tVersion             uint32\n\tIbGuid              [16]uint8\n\tChassisSerialNumber [16]uint8\n\tSlotNumber          uint8\n\tTrayIndex           uint8\n\tHostId              uint8\n\tPeerType            uint8\n\tModuleId            uint8\n\tPad_cgo_0           [3]byte\n}\n\ntype EccSramUniqueUncorrectedErrorEntry_v1 struct {\n\tUnit        uint32\n\tLocation    uint32\n\tSublocation uint32\n\tExtlocation uint32\n\tAddress     uint32\n\tIsParity    uint32\n\tCount       uint32\n}\n\ntype EccSramUniqueUncorrectedErrorCounts_v1 struct {\n\tVersion    uint32\n\tEntryCount uint32\n\tEntries    *EccSramUniqueUncorrectedErrorEntry_v1\n}\n\ntype EccSramUniqueUncorrectedErrorCounts struct {\n\tVersion    uint32\n\tEntryCount uint32\n\tEntries    *EccSramUniqueUncorrectedErrorEntry_v1\n}\n\ntype DeviceArchitecture uint32\n\ntype BusType uint32\n\ntype FanControlPolicy uint32\n\ntype PowerSource uint32\n\ntype GpuDynamicPstatesInfo struct {\n\tFlags       uint32\n\tUtilization [8]_Ctype_struct___23\n}\n\ntype PowerScopeType byte\n\ntype PowerValue_v2 struct {\n\tVersion      uint32\n\tPowerScope   uint8\n\tPowerValueMw uint32\n}\n\ntype nvmlVgpuTypeId uint32\n\ntype nvmlVgpuInstance uint32\n\ntype VgpuHeterogeneousMode_v1 struct {\n\tVersion uint32\n\tMode    uint32\n}\n\ntype VgpuHeterogeneousMode struct {\n\tVersion uint32\n\tMode    uint32\n}\n\ntype VgpuPlacementId_v1 struct {\n\tVersion     uint32\n\tPlacementId uint32\n}\n\ntype VgpuPlacementId struct {\n\tVersion     uint32\n\tPlacementId uint32\n}\n\ntype VgpuPlacementList_v1 struct {\n\tVersion       uint32\n\tPlacementSize uint32\n\tCount         uint32\n\tPlacementIds  *uint32\n}\n\ntype VgpuPlacementList_v2 struct {\n\tVersion       uint32\n\tPlacementSize uint32\n\tCount         uint32\n\tPlacementIds  *uint32\n\tMode          uint32\n\tPad_cgo_0     [4]byte\n}\n\ntype VgpuPlacementList struct {\n\tVersion       uint32\n\tPlacementSize uint32\n\tCount         uint32\n\tPlacementIds  *uint32\n\tMode          uint32\n\tPad_cgo_0     [4]byte\n}\n\ntype VgpuTypeBar1Info_v1 struct {\n\tVersion  uint32\n\tBar1Size uint64\n}\n\ntype VgpuTypeBar1Info struct {\n\tVersion  uint32\n\tBar1Size uint64\n}\n\ntype VgpuInstanceUtilizationSample struct {\n\tVgpuInstance uint32\n\tTimeStamp    uint64\n\tSmUtil       [8]byte\n\tMemUtil      [8]byte\n\tEncUtil      [8]byte\n\tDecUtil      [8]byte\n}\n\ntype VgpuInstanceUtilizationInfo_v1 struct {\n\tTimeStamp    uint64\n\tVgpuInstance uint32\n\tPad_cgo_0    [4]byte\n\tSmUtil       [8]byte\n\tMemUtil      [8]byte\n\tEncUtil      [8]byte\n\tDecUtil      [8]byte\n\tJpgUtil      [8]byte\n\tOfaUtil      [8]byte\n}\n\ntype VgpuInstancesUtilizationInfo_v1 struct {\n\tVersion           uint32\n\tSampleValType     uint32\n\tVgpuInstanceCount uint32\n\tLastSeenTimeStamp uint64\n\tVgpuUtilArray     *VgpuInstanceUtilizationInfo_v1\n}\n\ntype VgpuInstancesUtilizationInfo struct {\n\tVersion           uint32\n\tSampleValType     uint32\n\tVgpuInstanceCount uint32\n\tLastSeenTimeStamp uint64\n\tVgpuUtilArray     *VgpuInstanceUtilizationInfo_v1\n}\n\ntype VgpuProcessUtilizationSample struct {\n\tVgpuInstance uint32\n\tPid          uint32\n\tProcessName  [64]uint8\n\tTimeStamp    uint64\n\tSmUtil       uint32\n\tMemUtil      uint32\n\tEncUtil      uint32\n\tDecUtil      uint32\n}\n\ntype VgpuProcessUtilizationInfo_v1 struct {\n\tProcessName  [64]uint8\n\tTimeStamp    uint64\n\tVgpuInstance uint32\n\tPid          uint32\n\tSmUtil       uint32\n\tMemUtil      uint32\n\tEncUtil      uint32\n\tDecUtil      uint32\n\tJpgUtil      uint32\n\tOfaUtil      uint32\n}\n\ntype VgpuProcessesUtilizationInfo_v1 struct {\n\tVersion           uint32\n\tVgpuProcessCount  uint32\n\tLastSeenTimeStamp uint64\n\tVgpuProcUtilArray *VgpuProcessUtilizationInfo_v1\n}\n\ntype VgpuProcessesUtilizationInfo struct {\n\tVersion           uint32\n\tVgpuProcessCount  uint32\n\tLastSeenTimeStamp uint64\n\tVgpuProcUtilArray *VgpuProcessUtilizationInfo_v1\n}\n\ntype VgpuRuntimeState_v1 struct {\n\tVersion uint32\n\tSize    uint64\n}\n\ntype VgpuRuntimeState struct {\n\tVersion uint32\n\tSize    uint64\n}\n\nconst sizeofVgpuSchedulerParams = unsafe.Sizeof([8]byte{})\n\ntype VgpuSchedulerParams [sizeofVgpuSchedulerParams]byte\n\ntype VgpuSchedulerLogEntry struct {\n\tTimestamp                uint64\n\tTimeRunTotal             uint64\n\tTimeRun                  uint64\n\tSwRunlistId              uint32\n\tTargetTimeSlice          uint64\n\tCumulativePreemptionTime uint64\n}\n\ntype VgpuSchedulerLog struct {\n\tEngineId        uint32\n\tSchedulerPolicy uint32\n\tArrMode         uint32\n\tSchedulerParams [8]byte\n\tEntriesCount    uint32\n\tLogEntries      [200]VgpuSchedulerLogEntry\n}\n\ntype VgpuSchedulerGetState struct {\n\tSchedulerPolicy uint32\n\tArrMode         uint32\n\tSchedulerParams [8]byte\n}\n\nconst sizeofVgpuSchedulerSetParams = unsafe.Sizeof([8]byte{})\n\ntype VgpuSchedulerSetParams [sizeofVgpuSchedulerSetParams]byte\n\ntype VgpuSchedulerSetState struct {\n\tSchedulerPolicy uint32\n\tEnableARRMode   uint32\n\tSchedulerParams [8]byte\n}\n\ntype VgpuSchedulerCapabilities struct {\n\tSupportedSchedulers [3]uint32\n\tMaxTimeslice        uint32\n\tMinTimeslice        uint32\n\tIsArrModeSupported  uint32\n\tMaxFrequencyForARR  uint32\n\tMinFrequencyForARR  uint32\n\tMaxAvgFactorForARR  uint32\n\tMinAvgFactorForARR  uint32\n}\n\ntype VgpuLicenseExpiry struct {\n\tYear      uint32\n\tMonth     uint16\n\tDay       uint16\n\tHour      uint16\n\tMin       uint16\n\tSec       uint16\n\tStatus    uint8\n\tPad_cgo_0 [1]byte\n}\n\ntype VgpuLicenseInfo struct {\n\tIsLicensed    uint8\n\tLicenseExpiry VgpuLicenseExpiry\n\tCurrentState  uint32\n}\n\ntype GridLicenseExpiry struct {\n\tYear      uint32\n\tMonth     uint16\n\tDay       uint16\n\tHour      uint16\n\tMin       uint16\n\tSec       uint16\n\tStatus    uint8\n\tPad_cgo_0 [1]byte\n}\n\ntype GridLicensableFeature struct {\n\tFeatureCode    uint32\n\tFeatureState   uint32\n\tLicenseInfo    [128]uint8\n\tProductName    [128]uint8\n\tFeatureEnabled uint32\n\tLicenseExpiry  GridLicenseExpiry\n}\n\ntype GridLicensableFeatures struct {\n\tIsGridLicenseSupported  int32\n\tLicensableFeaturesCount uint32\n\tGridLicensableFeatures  [3]GridLicensableFeature\n}\n\ntype VgpuTypeIdInfo_v1 struct {\n\tVersion     uint32\n\tVgpuCount   uint32\n\tVgpuTypeIds *uint32\n}\n\ntype VgpuTypeIdInfo struct {\n\tVersion     uint32\n\tVgpuCount   uint32\n\tVgpuTypeIds *uint32\n}\n\ntype VgpuTypeMaxInstance_v1 struct {\n\tVersion          uint32\n\tVgpuTypeId       uint32\n\tMaxInstancePerGI uint32\n}\n\ntype VgpuTypeMaxInstance struct {\n\tVersion          uint32\n\tVgpuTypeId       uint32\n\tMaxInstancePerGI uint32\n}\n\ntype ActiveVgpuInstanceInfo_v1 struct {\n\tVersion       uint32\n\tVgpuCount     uint32\n\tVgpuInstances *uint32\n}\n\ntype ActiveVgpuInstanceInfo struct {\n\tVersion       uint32\n\tVgpuCount     uint32\n\tVgpuInstances *uint32\n}\n\ntype VgpuSchedulerState_v1 struct {\n\tVersion         uint32\n\tEngineId        uint32\n\tSchedulerPolicy uint32\n\tEnableARRMode   uint32\n\tSchedulerParams [8]byte\n}\n\ntype VgpuSchedulerState struct {\n\tVersion         uint32\n\tEngineId        uint32\n\tSchedulerPolicy uint32\n\tEnableARRMode   uint32\n\tSchedulerParams [8]byte\n}\n\ntype VgpuSchedulerStateInfo_v1 struct {\n\tVersion         uint32\n\tEngineId        uint32\n\tSchedulerPolicy uint32\n\tArrMode         uint32\n\tSchedulerParams [8]byte\n}\n\ntype VgpuSchedulerStateInfo struct {\n\tVersion         uint32\n\tEngineId        uint32\n\tSchedulerPolicy uint32\n\tArrMode         uint32\n\tSchedulerParams [8]byte\n}\n\ntype VgpuSchedulerLogInfo_v1 struct {\n\tVersion         uint32\n\tEngineId        uint32\n\tSchedulerPolicy uint32\n\tArrMode         uint32\n\tSchedulerParams [8]byte\n\tEntriesCount    uint32\n\tLogEntries      [200]VgpuSchedulerLogEntry\n}\n\ntype VgpuSchedulerLogInfo struct {\n\tVersion         uint32\n\tEngineId        uint32\n\tSchedulerPolicy uint32\n\tArrMode         uint32\n\tSchedulerParams [8]byte\n\tEntriesCount    uint32\n\tLogEntries      [200]VgpuSchedulerLogEntry\n}\n\ntype VgpuCreatablePlacementInfo_v1 struct {\n\tVersion       uint32\n\tVgpuTypeId    uint32\n\tCount         uint32\n\tPlacementIds  *uint32\n\tPlacementSize uint32\n\tPad_cgo_0     [4]byte\n}\n\ntype VgpuCreatablePlacementInfo struct {\n\tVersion       uint32\n\tVgpuTypeId    uint32\n\tCount         uint32\n\tPlacementIds  *uint32\n\tPlacementSize uint32\n\tPad_cgo_0     [4]byte\n}\n\ntype NvLinkPowerThres struct {\n\tLowPwrThreshold uint32\n}\n\ntype FieldValue struct {\n\tFieldId     uint32\n\tScopeId     uint32\n\tTimestamp   int64\n\tLatencyUsec int64\n\tValueType   uint32\n\tNvmlReturn  uint32\n\tValue       [8]byte\n}\n\ntype nvmlUnit struct {\n\tHandle *_Ctype_struct_nvmlUnit_st\n}\n\ntype HwbcEntry struct {\n\tHwbcId          uint32\n\tFirmwareVersion [32]uint8\n}\n\ntype LedState struct {\n\tCause [256]uint8\n\tColor uint32\n}\n\ntype UnitInfo struct {\n\tName            [96]uint8\n\tId              [96]uint8\n\tSerial          [96]uint8\n\tFirmwareVersion [96]uint8\n}\n\ntype PSUInfo struct {\n\tState   [256]uint8\n\tCurrent uint32\n\tVoltage uint32\n\tPower   uint32\n}\n\ntype UnitFanInfo struct {\n\tSpeed uint32\n\tState uint32\n}\n\ntype UnitFanSpeeds struct {\n\tFans  [24]UnitFanInfo\n\tCount uint32\n}\n\ntype nvmlEventSet struct {\n\tHandle *_Ctype_struct_nvmlEventSet_st\n}\n\ntype nvmlEventData struct {\n\tDevice            nvmlDevice\n\tEventType         uint64\n\tEventData         uint64\n\tGpuInstanceId     uint32\n\tComputeInstanceId uint32\n}\n\ntype SystemEventSet struct {\n\tHandle *_Ctype_struct_nvmlSystemEventSet_st\n}\n\ntype SystemEventSetCreateRequest_v1 struct {\n\tVersion uint32\n\tSet     SystemEventSet\n}\n\ntype SystemEventSetCreateRequest struct {\n\tVersion uint32\n\tSet     SystemEventSet\n}\n\ntype SystemEventSetFreeRequest_v1 struct {\n\tVersion uint32\n\tSet     SystemEventSet\n}\n\ntype SystemEventSetFreeRequest struct {\n\tVersion uint32\n\tSet     SystemEventSet\n}\n\ntype SystemRegisterEventRequest_v1 struct {\n\tVersion    uint32\n\tEventTypes uint64\n\tSet        SystemEventSet\n}\n\ntype SystemRegisterEventRequest struct {\n\tVersion    uint32\n\tEventTypes uint64\n\tSet        SystemEventSet\n}\n\ntype SystemEventData_v1 struct {\n\tEventType uint64\n\tGpuId     uint32\n\tPad_cgo_0 [4]byte\n}\n\ntype SystemEventSetWaitRequest_v1 struct {\n\tVersion   uint32\n\tTimeoutms uint32\n\tSet       SystemEventSet\n\tData      *SystemEventData_v1\n\tDataSize  uint32\n\tNumEvent  uint32\n}\n\ntype SystemEventSetWaitRequest struct {\n\tVersion   uint32\n\tTimeoutms uint32\n\tSet       SystemEventSet\n\tData      *SystemEventData_v1\n\tDataSize  uint32\n\tNumEvent  uint32\n}\n\ntype AccountingStats struct {\n\tGpuUtilization    uint32\n\tMemoryUtilization uint32\n\tMaxMemoryUsage    uint64\n\tTime              uint64\n\tStartTime         uint64\n\tIsRunning         uint32\n\tReserved          [5]uint32\n}\n\ntype EncoderSessionInfo struct {\n\tSessionId      uint32\n\tPid            uint32\n\tVgpuInstance   uint32\n\tCodecType      uint32\n\tHResolution    uint32\n\tVResolution    uint32\n\tAverageFps     uint32\n\tAverageLatency uint32\n}\n\ntype FBCStats struct {\n\tSessionsCount  uint32\n\tAverageFPS     uint32\n\tAverageLatency uint32\n}\n\ntype FBCSessionInfo struct {\n\tSessionId      uint32\n\tPid            uint32\n\tVgpuInstance   uint32\n\tDisplayOrdinal uint32\n\tSessionType    uint32\n\tSessionFlags   uint32\n\tHMaxResolution uint32\n\tVMaxResolution uint32\n\tHResolution    uint32\n\tVResolution    uint32\n\tAverageFPS     uint32\n\tAverageLatency uint32\n}\n\ntype ConfComputeSystemCaps struct {\n\tCpuCaps  uint32\n\tGpusCaps uint32\n}\n\ntype ConfComputeSystemState struct {\n\tEnvironment  uint32\n\tCcFeature    uint32\n\tDevToolsMode uint32\n}\n\ntype SystemConfComputeSettings_v1 struct {\n\tVersion      uint32\n\tEnvironment  uint32\n\tCcFeature    uint32\n\tDevToolsMode uint32\n\tMultiGpuMode uint32\n}\n\ntype SystemConfComputeSettings struct {\n\tVersion      uint32\n\tEnvironment  uint32\n\tCcFeature    uint32\n\tDevToolsMode uint32\n\tMultiGpuMode uint32\n}\n\ntype ConfComputeMemSizeInfo struct {\n\tProtectedMemSizeKib   uint64\n\tUnprotectedMemSizeKib uint64\n}\n\ntype ConfComputeGpuCertificate struct {\n\tCertChainSize            uint32\n\tAttestationCertChainSize uint32\n\tCertChain                [4096]uint8\n\tAttestationCertChain     [5120]uint8\n}\n\ntype ConfComputeGpuAttestationReport struct {\n\tIsCecAttestationReportPresent uint32\n\tAttestationReportSize         uint32\n\tCecAttestationReportSize      uint32\n\tNonce                         [32]uint8\n\tAttestationReport             [8192]uint8\n\tCecAttestationReport          [4096]uint8\n}\n\ntype ConfComputeSetKeyRotationThresholdInfo_v1 struct {\n\tVersion              uint32\n\tMaxAttackerAdvantage uint64\n}\n\ntype ConfComputeSetKeyRotationThresholdInfo struct {\n\tVersion              uint32\n\tMaxAttackerAdvantage uint64\n}\n\ntype ConfComputeGetKeyRotationThresholdInfo_v1 struct {\n\tVersion           uint32\n\tAttackerAdvantage uint64\n}\n\ntype ConfComputeGetKeyRotationThresholdInfo struct {\n\tVersion           uint32\n\tAttackerAdvantage uint64\n}\n\ntype GpuFabricState byte\n\ntype GpuFabricInfo struct {\n\tClusterUuid [16]uint8\n\tStatus      uint32\n\tCliqueId    uint32\n\tState       uint8\n\tPad_cgo_0   [3]byte\n}\n\ntype GpuFabricInfo_v2 struct {\n\tVersion     uint32\n\tClusterUuid [16]uint8\n\tStatus      uint32\n\tCliqueId    uint32\n\tState       uint8\n\tHealthMask  uint32\n}\n\ntype GpuFabricInfo_v3 struct {\n\tVersion       uint32\n\tClusterUuid   [16]uint8\n\tStatus        uint32\n\tCliqueId      uint32\n\tState         uint8\n\tHealthMask    uint32\n\tHealthSummary uint8\n\tPad_cgo_0     [3]byte\n}\n\ntype GpuFabricInfoV struct {\n\tVersion       uint32\n\tClusterUuid   [16]uint8\n\tStatus        uint32\n\tCliqueId      uint32\n\tState         uint8\n\tHealthMask    uint32\n\tHealthSummary uint8\n\tPad_cgo_0     [3]byte\n}\n\ntype SystemDriverBranchInfo_v1 struct {\n\tVersion uint32\n\tBranch  [80]uint8\n}\n\ntype SystemDriverBranchInfo struct {\n\tVersion uint32\n\tBranch  [80]uint8\n}\n\ntype AffinityScope uint32\n\ntype Temperature_v1 struct {\n\tVersion     uint32\n\tSensorType  uint32\n\tTemperature int32\n}\n\ntype Temperature struct {\n\tVersion     uint32\n\tSensorType  uint32\n\tTemperature int32\n}\n\ntype NvlinkSupportedBwModes_v1 struct {\n\tVersion      uint32\n\tBwModes      [23]uint8\n\tTotalBwModes uint8\n}\n\ntype NvlinkSupportedBwModes struct {\n\tVersion      uint32\n\tBwModes      [23]uint8\n\tTotalBwModes uint8\n}\n\ntype NvlinkGetBwMode_v1 struct {\n\tVersion   uint32\n\tBIsBest   uint32\n\tBwMode    uint8\n\tPad_cgo_0 [3]byte\n}\n\ntype NvlinkGetBwMode struct {\n\tVersion   uint32\n\tBIsBest   uint32\n\tBwMode    uint8\n\tPad_cgo_0 [3]byte\n}\n\ntype NvlinkSetBwMode_v1 struct {\n\tVersion   uint32\n\tBSetBest  uint32\n\tBwMode    uint8\n\tPad_cgo_0 [3]byte\n}\n\ntype NvlinkSetBwMode struct {\n\tVersion   uint32\n\tBSetBest  uint32\n\tBwMode    uint8\n\tPad_cgo_0 [3]byte\n}\n\ntype NvLinkInfo_v1 struct {\n\tVersion       uint32\n\tIsNvleEnabled uint32\n}\n\ntype NvlinkFirmwareVersion struct {\n\tUcodeType uint8\n\tMajor     uint32\n\tMinor     uint32\n\tSubMinor  uint32\n}\n\ntype NvlinkFirmwareInfo struct {\n\tFirmwareVersion [100]NvlinkFirmwareVersion\n\tNumValidEntries uint32\n}\n\ntype NvLinkInfo_v2 struct {\n\tVersion       uint32\n\tIsNvleEnabled uint32\n\tFirmwareInfo  NvlinkFirmwareInfo\n}\n\ntype NvLinkInfo struct {\n\tVersion       uint32\n\tIsNvleEnabled uint32\n\tFirmwareInfo  NvlinkFirmwareInfo\n}\n\ntype VgpuVersion struct {\n\tMinVersion uint32\n\tMaxVersion uint32\n}\n\ntype nvmlVgpuMetadata struct {\n\tVersion                uint32\n\tRevision               uint32\n\tGuestInfoState         uint32\n\tGuestDriverVersion     [80]uint8\n\tHostDriverVersion      [80]uint8\n\tReserved               [6]uint32\n\tVgpuVirtualizationCaps uint32\n\tGuestVgpuVersion       uint32\n\tOpaqueDataSize         uint32\n\tOpaqueData             [4]uint8\n}\n\ntype nvmlVgpuPgpuMetadata struct {\n\tVersion                uint32\n\tRevision               uint32\n\tHostDriverVersion      [80]uint8\n\tPgpuVirtualizationCaps uint32\n\tReserved               [5]uint32\n\tHostSupportedVgpuRange VgpuVersion\n\tOpaqueDataSize         uint32\n\tOpaqueData             [4]uint8\n}\n\ntype VgpuPgpuCompatibility struct {\n\tVgpuVmCompatibility    uint32\n\tCompatibilityLimitCode uint32\n}\n\ntype ExcludedDeviceInfo struct {\n\tPciInfo PciInfo\n\tUuid    [80]uint8\n}\n\ntype PRMTLV_v1 struct {\n\tDataSize uint32\n\tStatus   uint32\n\tInData   [496]uint8\n}\n\ntype GpuInstancePlacement struct {\n\tStart uint32\n\tSize  uint32\n}\n\ntype GpuInstanceProfileInfo struct {\n\tId                  uint32\n\tIsP2pSupported      uint32\n\tSliceCount          uint32\n\tInstanceCount       uint32\n\tMultiprocessorCount uint32\n\tCopyEngineCount     uint32\n\tDecoderCount        uint32\n\tEncoderCount        uint32\n\tJpegCount           uint32\n\tOfaCount            uint32\n\tMemorySizeMB        uint64\n}\n\ntype GpuInstanceProfileInfo_v2 struct {\n\tVersion             uint32\n\tId                  uint32\n\tIsP2pSupported      uint32\n\tSliceCount          uint32\n\tInstanceCount       uint32\n\tMultiprocessorCount uint32\n\tCopyEngineCount     uint32\n\tDecoderCount        uint32\n\tEncoderCount        uint32\n\tJpegCount           uint32\n\tOfaCount            uint32\n\tMemorySizeMB        uint64\n\tName                [96]uint8\n}\n\ntype GpuInstanceProfileInfo_v3 struct {\n\tVersion             uint32\n\tId                  uint32\n\tSliceCount          uint32\n\tInstanceCount       uint32\n\tMultiprocessorCount uint32\n\tCopyEngineCount     uint32\n\tDecoderCount        uint32\n\tEncoderCount        uint32\n\tJpegCount           uint32\n\tOfaCount            uint32\n\tMemorySizeMB        uint64\n\tName                [96]uint8\n\tCapabilities        uint32\n\tPad_cgo_0           [4]byte\n}\n\ntype nvmlGpuInstanceInfo struct {\n\tDevice    nvmlDevice\n\tId        uint32\n\tProfileId uint32\n\tPlacement GpuInstancePlacement\n}\n\ntype ComputeInstancePlacement struct {\n\tStart uint32\n\tSize  uint32\n}\n\ntype ComputeInstanceProfileInfo struct {\n\tId                    uint32\n\tSliceCount            uint32\n\tInstanceCount         uint32\n\tMultiprocessorCount   uint32\n\tSharedCopyEngineCount uint32\n\tSharedDecoderCount    uint32\n\tSharedEncoderCount    uint32\n\tSharedJpegCount       uint32\n\tSharedOfaCount        uint32\n}\n\ntype ComputeInstanceProfileInfo_v2 struct {\n\tVersion               uint32\n\tId                    uint32\n\tSliceCount            uint32\n\tInstanceCount         uint32\n\tMultiprocessorCount   uint32\n\tSharedCopyEngineCount uint32\n\tSharedDecoderCount    uint32\n\tSharedEncoderCount    uint32\n\tSharedJpegCount       uint32\n\tSharedOfaCount        uint32\n\tName                  [96]uint8\n}\n\ntype ComputeInstanceProfileInfo_v3 struct {\n\tVersion               uint32\n\tId                    uint32\n\tSliceCount            uint32\n\tInstanceCount         uint32\n\tMultiprocessorCount   uint32\n\tSharedCopyEngineCount uint32\n\tSharedDecoderCount    uint32\n\tSharedEncoderCount    uint32\n\tSharedJpegCount       uint32\n\tSharedOfaCount        uint32\n\tName                  [96]uint8\n\tCapabilities          uint32\n}\n\ntype nvmlComputeInstanceInfo struct {\n\tDevice      nvmlDevice\n\tGpuInstance nvmlGpuInstance\n\tId          uint32\n\tProfileId   uint32\n\tPlacement   ComputeInstancePlacement\n}\n\ntype nvmlComputeInstance struct {\n\tHandle *_Ctype_struct_nvmlComputeInstance_st\n}\n\ntype nvmlGpmSample struct {\n\tHandle *_Ctype_struct_nvmlGpmSample_st\n}\n\ntype GpmMetric struct {\n\tMetricId   uint32\n\tNvmlReturn uint32\n\tValue      float64\n\tMetricInfo _Ctype_struct___19\n}\n\ntype nvmlGpmMetricsGetType struct {\n\tVersion    uint32\n\tNumMetrics uint32\n\tSample1    nvmlGpmSample\n\tSample2    nvmlGpmSample\n\tMetrics    [210]GpmMetric\n}\n\ntype GpmSupport struct {\n\tVersion           uint32\n\tIsSupportedDevice uint32\n}\n\ntype DeviceCapabilities_v1 struct {\n\tVersion uint32\n\tCapMask uint32\n}\n\ntype DeviceCapabilities struct {\n\tVersion uint32\n\tCapMask uint32\n}\n\ntype Mask255 struct {\n\tMask [8]uint32\n}\n\ntype WorkloadPowerProfileInfo_v1 struct {\n\tVersion         uint32\n\tProfileId       uint32\n\tPriority        uint32\n\tConflictingMask Mask255\n}\n\ntype WorkloadPowerProfileInfo struct {\n\tVersion         uint32\n\tProfileId       uint32\n\tPriority        uint32\n\tConflictingMask Mask255\n}\n\ntype WorkloadPowerProfileProfilesInfo_v1 struct {\n\tVersion          uint32\n\tPerfProfilesMask Mask255\n\tPerfProfile      [255]WorkloadPowerProfileInfo\n}\n\ntype WorkloadPowerProfileProfilesInfo struct {\n\tVersion          uint32\n\tPerfProfilesMask Mask255\n\tPerfProfile      [255]WorkloadPowerProfileInfo\n}\n\ntype WorkloadPowerProfileCurrentProfiles_v1 struct {\n\tVersion               uint32\n\tPerfProfilesMask      Mask255\n\tRequestedProfilesMask Mask255\n\tEnforcedProfilesMask  Mask255\n}\n\ntype WorkloadPowerProfileCurrentProfiles struct {\n\tVersion               uint32\n\tPerfProfilesMask      Mask255\n\tRequestedProfilesMask Mask255\n\tEnforcedProfilesMask  Mask255\n}\n\ntype WorkloadPowerProfileRequestedProfiles_v1 struct {\n\tVersion               uint32\n\tRequestedProfilesMask Mask255\n}\n\ntype WorkloadPowerProfileRequestedProfiles struct {\n\tVersion               uint32\n\tRequestedProfilesMask Mask255\n}\n\ntype PowerSmoothingProfile_v1 struct {\n\tVersion   uint32\n\tProfileId uint32\n\tParamId   uint32\n\tValue     float64\n}\n\ntype PowerSmoothingProfile struct {\n\tVersion   uint32\n\tProfileId uint32\n\tParamId   uint32\n\tValue     float64\n}\n\ntype PowerSmoothingState_v1 struct {\n\tVersion uint32\n\tState   uint32\n}\n\ntype PowerSmoothingState struct {\n\tVersion uint32\n\tState   uint32\n}\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvml/pkg/nvml/unit.go",
    "content": "// Copyright (c) 2020, NVIDIA CORPORATION.  All rights reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage nvml\n\n// nvml.UnitGetCount()\nfunc (l *library) UnitGetCount() (int, Return) {\n\tvar UnitCount uint32\n\tret := nvmlUnitGetCount(&UnitCount)\n\treturn int(UnitCount), ret\n}\n\n// nvml.UnitGetHandleByIndex()\nfunc (l *library) UnitGetHandleByIndex(index int) (Unit, Return) {\n\tvar unit nvmlUnit\n\tret := nvmlUnitGetHandleByIndex(uint32(index), &unit)\n\treturn unit, ret\n}\n\n// nvml.UnitGetUnitInfo()\nfunc (l *library) UnitGetUnitInfo(unit Unit) (UnitInfo, Return) {\n\treturn unit.GetUnitInfo()\n}\n\nfunc (unit nvmlUnit) GetUnitInfo() (UnitInfo, Return) {\n\tvar info UnitInfo\n\tret := nvmlUnitGetUnitInfo(unit, &info)\n\treturn info, ret\n}\n\n// nvml.UnitGetLedState()\nfunc (l *library) UnitGetLedState(unit Unit) (LedState, Return) {\n\treturn unit.GetLedState()\n}\n\nfunc (unit nvmlUnit) GetLedState() (LedState, Return) {\n\tvar state LedState\n\tret := nvmlUnitGetLedState(unit, &state)\n\treturn state, ret\n}\n\n// nvml.UnitGetPsuInfo()\nfunc (l *library) UnitGetPsuInfo(unit Unit) (PSUInfo, Return) {\n\treturn unit.GetPsuInfo()\n}\n\nfunc (unit nvmlUnit) GetPsuInfo() (PSUInfo, Return) {\n\tvar psu PSUInfo\n\tret := nvmlUnitGetPsuInfo(unit, &psu)\n\treturn psu, ret\n}\n\n// nvml.UnitGetTemperature()\nfunc (l *library) UnitGetTemperature(unit Unit, ttype int) (uint32, Return) {\n\treturn unit.GetTemperature(ttype)\n}\n\nfunc (unit nvmlUnit) GetTemperature(ttype int) (uint32, Return) {\n\tvar temp uint32\n\tret := nvmlUnitGetTemperature(unit, uint32(ttype), &temp)\n\treturn temp, ret\n}\n\n// nvml.UnitGetFanSpeedInfo()\nfunc (l *library) UnitGetFanSpeedInfo(unit Unit) (UnitFanSpeeds, Return) {\n\treturn unit.GetFanSpeedInfo()\n}\n\nfunc (unit nvmlUnit) GetFanSpeedInfo() (UnitFanSpeeds, Return) {\n\tvar fanSpeeds UnitFanSpeeds\n\tret := nvmlUnitGetFanSpeedInfo(unit, &fanSpeeds)\n\treturn fanSpeeds, ret\n}\n\n// nvml.UnitGetDevices()\nfunc (l *library) UnitGetDevices(unit Unit) ([]Device, Return) {\n\treturn unit.GetDevices()\n}\n\nfunc (unit nvmlUnit) GetDevices() ([]Device, Return) {\n\tvar deviceCount uint32 = 1 // Will be reduced upon returning\n\tfor {\n\t\tdevices := make([]nvmlDevice, deviceCount)\n\t\tret := nvmlUnitGetDevices(unit, &deviceCount, &devices[0])\n\t\tif ret == SUCCESS {\n\t\t\treturn convertSlice[nvmlDevice, Device](devices[:deviceCount]), ret\n\t\t}\n\t\tif ret != ERROR_INSUFFICIENT_SIZE {\n\t\t\treturn nil, ret\n\t\t}\n\t\tdeviceCount *= 2\n\t}\n}\n\n// nvml.UnitSetLedState()\nfunc (l *library) UnitSetLedState(unit Unit, color LedColor) Return {\n\treturn unit.SetLedState(color)\n}\n\nfunc (unit nvmlUnit) SetLedState(color LedColor) Return {\n\treturn nvmlUnitSetLedState(unit, color)\n}\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvml/pkg/nvml/vgpu.go",
    "content": "// Copyright (c) 2020, NVIDIA CORPORATION.  All rights reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage nvml\n\nimport (\n\t\"unsafe\"\n)\n\n// nvml.VgpuMetadata\ntype VgpuMetadata struct {\n\tnvmlVgpuMetadata\n\tOpaqueData []byte\n}\n\n// nvml.VgpuPgpuMetadata\ntype VgpuPgpuMetadata struct {\n\tnvmlVgpuPgpuMetadata\n\tOpaqueData []byte\n}\n\n// nvml.VgpuTypeGetClass()\nfunc (l *library) VgpuTypeGetClass(vgpuTypeId VgpuTypeId) (string, Return) {\n\treturn vgpuTypeId.GetClass()\n}\n\nfunc (vgpuTypeId nvmlVgpuTypeId) GetClass() (string, Return) {\n\tvar size uint32 = DEVICE_NAME_BUFFER_SIZE\n\tvgpuTypeClass := make([]byte, DEVICE_NAME_BUFFER_SIZE)\n\tret := nvmlVgpuTypeGetClass(vgpuTypeId, &vgpuTypeClass[0], &size)\n\treturn string(vgpuTypeClass[:clen(vgpuTypeClass)]), ret\n}\n\n// nvml.VgpuTypeGetName()\nfunc (l *library) VgpuTypeGetName(vgpuTypeId VgpuTypeId) (string, Return) {\n\treturn vgpuTypeId.GetName()\n}\n\nfunc (vgpuTypeId nvmlVgpuTypeId) GetName() (string, Return) {\n\tvar size uint32 = DEVICE_NAME_BUFFER_SIZE\n\tvgpuTypeName := make([]byte, DEVICE_NAME_BUFFER_SIZE)\n\tret := nvmlVgpuTypeGetName(vgpuTypeId, &vgpuTypeName[0], &size)\n\treturn string(vgpuTypeName[:clen(vgpuTypeName)]), ret\n}\n\n// nvml.VgpuTypeGetGpuInstanceProfileId()\nfunc (l *library) VgpuTypeGetGpuInstanceProfileId(vgpuTypeId VgpuTypeId) (uint32, Return) {\n\treturn vgpuTypeId.GetGpuInstanceProfileId()\n}\n\nfunc (vgpuTypeId nvmlVgpuTypeId) GetGpuInstanceProfileId() (uint32, Return) {\n\tvar size uint32\n\tret := nvmlVgpuTypeGetGpuInstanceProfileId(vgpuTypeId, &size)\n\treturn size, ret\n}\n\n// nvml.VgpuTypeGetDeviceID()\nfunc (l *library) VgpuTypeGetDeviceID(vgpuTypeId VgpuTypeId) (uint64, uint64, Return) {\n\treturn vgpuTypeId.GetDeviceID()\n}\n\nfunc (vgpuTypeId nvmlVgpuTypeId) GetDeviceID() (uint64, uint64, Return) {\n\tvar deviceID, subsystemID uint64\n\tret := nvmlVgpuTypeGetDeviceID(vgpuTypeId, &deviceID, &subsystemID)\n\treturn deviceID, subsystemID, ret\n}\n\n// nvml.VgpuTypeGetFramebufferSize()\nfunc (l *library) VgpuTypeGetFramebufferSize(vgpuTypeId VgpuTypeId) (uint64, Return) {\n\treturn vgpuTypeId.GetFramebufferSize()\n}\n\nfunc (vgpuTypeId nvmlVgpuTypeId) GetFramebufferSize() (uint64, Return) {\n\tvar fbSize uint64\n\tret := nvmlVgpuTypeGetFramebufferSize(vgpuTypeId, &fbSize)\n\treturn fbSize, ret\n}\n\n// nvml.VgpuTypeGetNumDisplayHeads()\nfunc (l *library) VgpuTypeGetNumDisplayHeads(vgpuTypeId VgpuTypeId) (int, Return) {\n\treturn vgpuTypeId.GetNumDisplayHeads()\n}\n\nfunc (vgpuTypeId nvmlVgpuTypeId) GetNumDisplayHeads() (int, Return) {\n\tvar numDisplayHeads uint32\n\tret := nvmlVgpuTypeGetNumDisplayHeads(vgpuTypeId, &numDisplayHeads)\n\treturn int(numDisplayHeads), ret\n}\n\n// nvml.VgpuTypeGetResolution()\nfunc (l *library) VgpuTypeGetResolution(vgpuTypeId VgpuTypeId, displayIndex int) (uint32, uint32, Return) {\n\treturn vgpuTypeId.GetResolution(displayIndex)\n}\n\nfunc (vgpuTypeId nvmlVgpuTypeId) GetResolution(displayIndex int) (uint32, uint32, Return) {\n\tvar xdim, ydim uint32\n\tret := nvmlVgpuTypeGetResolution(vgpuTypeId, uint32(displayIndex), &xdim, &ydim)\n\treturn xdim, ydim, ret\n}\n\n// nvml.VgpuTypeGetLicense()\nfunc (l *library) VgpuTypeGetLicense(vgpuTypeId VgpuTypeId) (string, Return) {\n\treturn vgpuTypeId.GetLicense()\n}\n\nfunc (vgpuTypeId nvmlVgpuTypeId) GetLicense() (string, Return) {\n\tvgpuTypeLicenseString := make([]byte, GRID_LICENSE_BUFFER_SIZE)\n\tret := nvmlVgpuTypeGetLicense(vgpuTypeId, &vgpuTypeLicenseString[0], GRID_LICENSE_BUFFER_SIZE)\n\treturn string(vgpuTypeLicenseString[:clen(vgpuTypeLicenseString)]), ret\n}\n\n// nvml.VgpuTypeGetFrameRateLimit()\nfunc (l *library) VgpuTypeGetFrameRateLimit(vgpuTypeId VgpuTypeId) (uint32, Return) {\n\treturn vgpuTypeId.GetFrameRateLimit()\n}\n\nfunc (vgpuTypeId nvmlVgpuTypeId) GetFrameRateLimit() (uint32, Return) {\n\tvar frameRateLimit uint32\n\tret := nvmlVgpuTypeGetFrameRateLimit(vgpuTypeId, &frameRateLimit)\n\treturn frameRateLimit, ret\n}\n\n// nvml.VgpuTypeGetMaxInstances()\nfunc (l *library) VgpuTypeGetMaxInstances(device Device, vgpuTypeId VgpuTypeId) (int, Return) {\n\treturn vgpuTypeId.GetMaxInstances(device)\n}\n\nfunc (device nvmlDevice) VgpuTypeGetMaxInstances(vgpuTypeId VgpuTypeId) (int, Return) {\n\treturn vgpuTypeId.GetMaxInstances(device)\n}\n\nfunc (vgpuTypeId nvmlVgpuTypeId) GetMaxInstances(device Device) (int, Return) {\n\tvar vgpuInstanceCount uint32\n\tret := nvmlVgpuTypeGetMaxInstances(nvmlDeviceHandle(device), vgpuTypeId, &vgpuInstanceCount)\n\treturn int(vgpuInstanceCount), ret\n}\n\n// nvml.VgpuTypeGetMaxInstancesPerVm()\nfunc (l *library) VgpuTypeGetMaxInstancesPerVm(vgpuTypeId VgpuTypeId) (int, Return) {\n\treturn vgpuTypeId.GetMaxInstancesPerVm()\n}\n\nfunc (vgpuTypeId nvmlVgpuTypeId) GetMaxInstancesPerVm() (int, Return) {\n\tvar vgpuInstanceCountPerVm uint32\n\tret := nvmlVgpuTypeGetMaxInstancesPerVm(vgpuTypeId, &vgpuInstanceCountPerVm)\n\treturn int(vgpuInstanceCountPerVm), ret\n}\n\n// nvml.VgpuInstanceGetVmID()\nfunc (l *library) VgpuInstanceGetVmID(vgpuInstance VgpuInstance) (string, VgpuVmIdType, Return) {\n\treturn vgpuInstance.GetVmID()\n}\n\nfunc (vgpuInstance nvmlVgpuInstance) GetVmID() (string, VgpuVmIdType, Return) {\n\tvar vmIdType VgpuVmIdType\n\tvmId := make([]byte, DEVICE_UUID_BUFFER_SIZE)\n\tret := nvmlVgpuInstanceGetVmID(vgpuInstance, &vmId[0], DEVICE_UUID_BUFFER_SIZE, &vmIdType)\n\treturn string(vmId[:clen(vmId)]), vmIdType, ret\n}\n\n// nvml.VgpuInstanceGetUUID()\nfunc (l *library) VgpuInstanceGetUUID(vgpuInstance VgpuInstance) (string, Return) {\n\treturn vgpuInstance.GetUUID()\n}\n\nfunc (vgpuInstance nvmlVgpuInstance) GetUUID() (string, Return) {\n\tuuid := make([]byte, DEVICE_UUID_BUFFER_SIZE)\n\tret := nvmlVgpuInstanceGetUUID(vgpuInstance, &uuid[0], DEVICE_UUID_BUFFER_SIZE)\n\treturn string(uuid[:clen(uuid)]), ret\n}\n\n// nvml.VgpuInstanceGetVmDriverVersion()\nfunc (l *library) VgpuInstanceGetVmDriverVersion(vgpuInstance VgpuInstance) (string, Return) {\n\treturn vgpuInstance.GetVmDriverVersion()\n}\n\nfunc (vgpuInstance nvmlVgpuInstance) GetVmDriverVersion() (string, Return) {\n\tversion := make([]byte, SYSTEM_DRIVER_VERSION_BUFFER_SIZE)\n\tret := nvmlVgpuInstanceGetVmDriverVersion(vgpuInstance, &version[0], SYSTEM_DRIVER_VERSION_BUFFER_SIZE)\n\treturn string(version[:clen(version)]), ret\n}\n\n// nvml.VgpuInstanceGetFbUsage()\nfunc (l *library) VgpuInstanceGetFbUsage(vgpuInstance VgpuInstance) (uint64, Return) {\n\treturn vgpuInstance.GetFbUsage()\n}\n\nfunc (vgpuInstance nvmlVgpuInstance) GetFbUsage() (uint64, Return) {\n\tvar fbUsage uint64\n\tret := nvmlVgpuInstanceGetFbUsage(vgpuInstance, &fbUsage)\n\treturn fbUsage, ret\n}\n\n// nvml.VgpuInstanceGetLicenseInfo()\nfunc (l *library) VgpuInstanceGetLicenseInfo(vgpuInstance VgpuInstance) (VgpuLicenseInfo, Return) {\n\treturn vgpuInstance.GetLicenseInfo()\n}\n\nfunc (vgpuInstance nvmlVgpuInstance) GetLicenseInfo() (VgpuLicenseInfo, Return) {\n\tvar licenseInfo VgpuLicenseInfo\n\tret := nvmlVgpuInstanceGetLicenseInfo(vgpuInstance, &licenseInfo)\n\treturn licenseInfo, ret\n}\n\n// nvml.VgpuInstanceGetLicenseStatus()\n//\n// Deprecated: Use VgpuInstanceGetLicenseInfo instead.\nfunc (l *library) VgpuInstanceGetLicenseStatus(vgpuInstance VgpuInstance) (int, Return) {\n\treturn vgpuInstance.GetLicenseStatus()\n}\n\nfunc (vgpuInstance nvmlVgpuInstance) GetLicenseStatus() (int, Return) {\n\tvar licensed uint32\n\tret := nvmlVgpuInstanceGetLicenseStatus(vgpuInstance, &licensed)\n\treturn int(licensed), ret\n}\n\n// nvml.VgpuInstanceGetType()\nfunc (l *library) VgpuInstanceGetType(vgpuInstance VgpuInstance) (VgpuTypeId, Return) {\n\treturn vgpuInstance.GetType()\n}\n\nfunc (vgpuInstance nvmlVgpuInstance) GetType() (VgpuTypeId, Return) {\n\tvar vgpuTypeId nvmlVgpuTypeId\n\tret := nvmlVgpuInstanceGetType(vgpuInstance, &vgpuTypeId)\n\treturn vgpuTypeId, ret\n}\n\n// nvml.VgpuInstanceGetFrameRateLimit()\nfunc (l *library) VgpuInstanceGetFrameRateLimit(vgpuInstance VgpuInstance) (uint32, Return) {\n\treturn vgpuInstance.GetFrameRateLimit()\n}\n\nfunc (vgpuInstance nvmlVgpuInstance) GetFrameRateLimit() (uint32, Return) {\n\tvar frameRateLimit uint32\n\tret := nvmlVgpuInstanceGetFrameRateLimit(vgpuInstance, &frameRateLimit)\n\treturn frameRateLimit, ret\n}\n\n// nvml.VgpuInstanceGetEccMode()\nfunc (l *library) VgpuInstanceGetEccMode(vgpuInstance VgpuInstance) (EnableState, Return) {\n\treturn vgpuInstance.GetEccMode()\n}\n\nfunc (vgpuInstance nvmlVgpuInstance) GetEccMode() (EnableState, Return) {\n\tvar eccMode EnableState\n\tret := nvmlVgpuInstanceGetEccMode(vgpuInstance, &eccMode)\n\treturn eccMode, ret\n}\n\n// nvml.VgpuInstanceGetEncoderCapacity()\nfunc (l *library) VgpuInstanceGetEncoderCapacity(vgpuInstance VgpuInstance) (int, Return) {\n\treturn vgpuInstance.GetEncoderCapacity()\n}\n\nfunc (vgpuInstance nvmlVgpuInstance) GetEncoderCapacity() (int, Return) {\n\tvar encoderCapacity uint32\n\tret := nvmlVgpuInstanceGetEncoderCapacity(vgpuInstance, &encoderCapacity)\n\treturn int(encoderCapacity), ret\n}\n\n// nvml.VgpuInstanceSetEncoderCapacity()\nfunc (l *library) VgpuInstanceSetEncoderCapacity(vgpuInstance VgpuInstance, encoderCapacity int) Return {\n\treturn vgpuInstance.SetEncoderCapacity(encoderCapacity)\n}\n\nfunc (vgpuInstance nvmlVgpuInstance) SetEncoderCapacity(encoderCapacity int) Return {\n\treturn nvmlVgpuInstanceSetEncoderCapacity(vgpuInstance, uint32(encoderCapacity))\n}\n\n// nvml.VgpuInstanceGetEncoderStats()\nfunc (l *library) VgpuInstanceGetEncoderStats(vgpuInstance VgpuInstance) (int, uint32, uint32, Return) {\n\treturn vgpuInstance.GetEncoderStats()\n}\n\nfunc (vgpuInstance nvmlVgpuInstance) GetEncoderStats() (int, uint32, uint32, Return) {\n\tvar sessionCount, averageFps, averageLatency uint32\n\tret := nvmlVgpuInstanceGetEncoderStats(vgpuInstance, &sessionCount, &averageFps, &averageLatency)\n\treturn int(sessionCount), averageFps, averageLatency, ret\n}\n\n// nvml.VgpuInstanceGetEncoderSessions()\nfunc (l *library) VgpuInstanceGetEncoderSessions(vgpuInstance VgpuInstance) (int, EncoderSessionInfo, Return) {\n\treturn vgpuInstance.GetEncoderSessions()\n}\n\nfunc (vgpuInstance nvmlVgpuInstance) GetEncoderSessions() (int, EncoderSessionInfo, Return) {\n\tvar sessionCount uint32\n\tvar sessionInfo EncoderSessionInfo\n\tret := nvmlVgpuInstanceGetEncoderSessions(vgpuInstance, &sessionCount, &sessionInfo)\n\treturn int(sessionCount), sessionInfo, ret\n}\n\n// nvml.VgpuInstanceGetFBCStats()\nfunc (l *library) VgpuInstanceGetFBCStats(vgpuInstance VgpuInstance) (FBCStats, Return) {\n\treturn vgpuInstance.GetFBCStats()\n}\n\nfunc (vgpuInstance nvmlVgpuInstance) GetFBCStats() (FBCStats, Return) {\n\tvar fbcStats FBCStats\n\tret := nvmlVgpuInstanceGetFBCStats(vgpuInstance, &fbcStats)\n\treturn fbcStats, ret\n}\n\n// nvml.VgpuInstanceGetFBCSessions()\nfunc (l *library) VgpuInstanceGetFBCSessions(vgpuInstance VgpuInstance) (int, FBCSessionInfo, Return) {\n\treturn vgpuInstance.GetFBCSessions()\n}\n\nfunc (vgpuInstance nvmlVgpuInstance) GetFBCSessions() (int, FBCSessionInfo, Return) {\n\tvar sessionCount uint32\n\tvar sessionInfo FBCSessionInfo\n\tret := nvmlVgpuInstanceGetFBCSessions(vgpuInstance, &sessionCount, &sessionInfo)\n\treturn int(sessionCount), sessionInfo, ret\n}\n\n// nvml.VgpuInstanceGetGpuInstanceId()\nfunc (l *library) VgpuInstanceGetGpuInstanceId(vgpuInstance VgpuInstance) (int, Return) {\n\treturn vgpuInstance.GetGpuInstanceId()\n}\n\nfunc (vgpuInstance nvmlVgpuInstance) GetGpuInstanceId() (int, Return) {\n\tvar gpuInstanceId uint32\n\tret := nvmlVgpuInstanceGetGpuInstanceId(vgpuInstance, &gpuInstanceId)\n\treturn int(gpuInstanceId), ret\n}\n\n// nvml.VgpuInstanceGetGpuPciId()\nfunc (l *library) VgpuInstanceGetGpuPciId(vgpuInstance VgpuInstance) (string, Return) {\n\treturn vgpuInstance.GetGpuPciId()\n}\n\nfunc (vgpuInstance nvmlVgpuInstance) GetGpuPciId() (string, Return) {\n\tvar length uint32 = 1 // Will be reduced upon returning\n\tfor {\n\t\tvgpuPciId := make([]byte, length)\n\t\tret := nvmlVgpuInstanceGetGpuPciId(vgpuInstance, &vgpuPciId[0], &length)\n\t\tif ret == SUCCESS {\n\t\t\treturn string(vgpuPciId[:clen(vgpuPciId)]), ret\n\t\t}\n\t\tif ret != ERROR_INSUFFICIENT_SIZE {\n\t\t\treturn \"\", ret\n\t\t}\n\t\tlength *= 2\n\t}\n}\n\n// nvml.VgpuInstanceGetMetadata()\nfunc (l *library) VgpuInstanceGetMetadata(vgpuInstance VgpuInstance) (VgpuMetadata, Return) {\n\treturn vgpuInstance.GetMetadata()\n}\n\nfunc (vgpuInstance nvmlVgpuInstance) GetMetadata() (VgpuMetadata, Return) {\n\tvar vgpuMetadata VgpuMetadata\n\topaqueDataSize := unsafe.Sizeof(vgpuMetadata.nvmlVgpuMetadata.OpaqueData)\n\tvgpuMetadataSize := unsafe.Sizeof(vgpuMetadata.nvmlVgpuMetadata) - opaqueDataSize\n\tfor {\n\t\tbufferSize := uint32(vgpuMetadataSize + opaqueDataSize)\n\t\tbuffer := make([]byte, bufferSize)\n\t\tnvmlVgpuMetadataPtr := (*nvmlVgpuMetadata)(unsafe.Pointer(&buffer[0]))\n\t\tret := nvmlVgpuInstanceGetMetadata(vgpuInstance, nvmlVgpuMetadataPtr, &bufferSize)\n\t\tif ret == SUCCESS {\n\t\t\tvgpuMetadata.nvmlVgpuMetadata = *nvmlVgpuMetadataPtr\n\t\t\tvgpuMetadata.OpaqueData = buffer[vgpuMetadataSize:bufferSize]\n\t\t\treturn vgpuMetadata, ret\n\t\t}\n\t\tif ret != ERROR_INSUFFICIENT_SIZE {\n\t\t\treturn vgpuMetadata, ret\n\t\t}\n\t\topaqueDataSize = 2 * opaqueDataSize\n\t}\n}\n\n// nvml.VgpuInstanceGetAccountingMode()\nfunc (l *library) VgpuInstanceGetAccountingMode(vgpuInstance VgpuInstance) (EnableState, Return) {\n\treturn vgpuInstance.GetAccountingMode()\n}\n\nfunc (vgpuInstance nvmlVgpuInstance) GetAccountingMode() (EnableState, Return) {\n\tvar mode EnableState\n\tret := nvmlVgpuInstanceGetAccountingMode(vgpuInstance, &mode)\n\treturn mode, ret\n}\n\n// nvml.VgpuInstanceGetAccountingPids()\nfunc (l *library) VgpuInstanceGetAccountingPids(vgpuInstance VgpuInstance) ([]int, Return) {\n\treturn vgpuInstance.GetAccountingPids()\n}\n\nfunc (vgpuInstance nvmlVgpuInstance) GetAccountingPids() ([]int, Return) {\n\tvar count uint32 = 1 // Will be reduced upon returning\n\tfor {\n\t\tpids := make([]uint32, count)\n\t\tret := nvmlVgpuInstanceGetAccountingPids(vgpuInstance, &count, &pids[0])\n\t\tif ret == SUCCESS {\n\t\t\treturn uint32SliceToIntSlice(pids[:count]), ret\n\t\t}\n\t\tif ret != ERROR_INSUFFICIENT_SIZE {\n\t\t\treturn nil, ret\n\t\t}\n\t\tcount *= 2\n\t}\n}\n\n// nvml.VgpuInstanceGetAccountingStats()\nfunc (l *library) VgpuInstanceGetAccountingStats(vgpuInstance VgpuInstance, pid int) (AccountingStats, Return) {\n\treturn vgpuInstance.GetAccountingStats(pid)\n}\n\nfunc (vgpuInstance nvmlVgpuInstance) GetAccountingStats(pid int) (AccountingStats, Return) {\n\tvar stats AccountingStats\n\tret := nvmlVgpuInstanceGetAccountingStats(vgpuInstance, uint32(pid), &stats)\n\treturn stats, ret\n}\n\n// nvml.GetVgpuCompatibility()\nfunc (l *library) GetVgpuCompatibility(vgpuMetadata *VgpuMetadata, pgpuMetadata *VgpuPgpuMetadata) (VgpuPgpuCompatibility, Return) {\n\tvar compatibilityInfo VgpuPgpuCompatibility\n\tret := nvmlGetVgpuCompatibility(&vgpuMetadata.nvmlVgpuMetadata, &pgpuMetadata.nvmlVgpuPgpuMetadata, &compatibilityInfo)\n\treturn compatibilityInfo, ret\n}\n\n// nvml.GetVgpuVersion()\nfunc (l *library) GetVgpuVersion() (VgpuVersion, VgpuVersion, Return) {\n\tvar supported, current VgpuVersion\n\tret := nvmlGetVgpuVersion(&supported, &current)\n\treturn supported, current, ret\n}\n\n// nvml.SetVgpuVersion()\nfunc (l *library) SetVgpuVersion(vgpuVersion *VgpuVersion) Return {\n\treturn nvmlSetVgpuVersion(vgpuVersion)\n}\n\n// nvml.VgpuInstanceClearAccountingPids()\nfunc (l *library) VgpuInstanceClearAccountingPids(vgpuInstance VgpuInstance) Return {\n\treturn vgpuInstance.ClearAccountingPids()\n}\n\nfunc (vgpuInstance nvmlVgpuInstance) ClearAccountingPids() Return {\n\treturn nvmlVgpuInstanceClearAccountingPids(vgpuInstance)\n}\n\n// nvml.VgpuInstanceGetMdevUUID()\nfunc (l *library) VgpuInstanceGetMdevUUID(vgpuInstance VgpuInstance) (string, Return) {\n\treturn vgpuInstance.GetMdevUUID()\n}\n\nfunc (vgpuInstance nvmlVgpuInstance) GetMdevUUID() (string, Return) {\n\tmdevUUID := make([]byte, DEVICE_UUID_BUFFER_SIZE)\n\tret := nvmlVgpuInstanceGetMdevUUID(vgpuInstance, &mdevUUID[0], DEVICE_UUID_BUFFER_SIZE)\n\treturn string(mdevUUID[:clen(mdevUUID)]), ret\n}\n\n// nvml.VgpuTypeGetCapabilities()\nfunc (l *library) VgpuTypeGetCapabilities(vgpuTypeId VgpuTypeId, capability VgpuCapability) (bool, Return) {\n\treturn vgpuTypeId.GetCapabilities(capability)\n}\n\nfunc (vgpuTypeId nvmlVgpuTypeId) GetCapabilities(capability VgpuCapability) (bool, Return) {\n\tvar capResult uint32\n\tret := nvmlVgpuTypeGetCapabilities(vgpuTypeId, capability, &capResult)\n\treturn (capResult != 0), ret\n}\n\n// nvml.GetVgpuDriverCapabilities()\nfunc (l *library) GetVgpuDriverCapabilities(capability VgpuDriverCapability) (bool, Return) {\n\tvar capResult uint32\n\tret := nvmlGetVgpuDriverCapabilities(capability, &capResult)\n\treturn (capResult != 0), ret\n}\n\n// nvml.VgpuTypeGetBAR1Info()\nfunc (l *library) VgpuTypeGetBAR1Info(vgpuTypeId VgpuTypeId) (VgpuTypeBar1Info, Return) {\n\treturn vgpuTypeId.GetBAR1Info()\n}\n\nfunc (vgpuTypeId nvmlVgpuTypeId) GetBAR1Info() (VgpuTypeBar1Info, Return) {\n\tvar bar1Info VgpuTypeBar1Info\n\tbar1Info.Version = STRUCT_VERSION(bar1Info, 1)\n\tret := nvmlVgpuTypeGetBAR1Info(vgpuTypeId, &bar1Info)\n\treturn bar1Info, ret\n}\n\n// nvml.VgpuInstanceGetRuntimeStateSize()\nfunc (l *library) VgpuInstanceGetRuntimeStateSize(vgpuInstance VgpuInstance) (VgpuRuntimeState, Return) {\n\treturn vgpuInstance.GetRuntimeStateSize()\n}\n\nfunc (vgpuInstance nvmlVgpuInstance) GetRuntimeStateSize() (VgpuRuntimeState, Return) {\n\tvar pState VgpuRuntimeState\n\tpState.Version = STRUCT_VERSION(pState, 1)\n\tret := nvmlVgpuInstanceGetRuntimeStateSize(vgpuInstance, &pState)\n\treturn pState, ret\n}\n\n// nvml.VgpuTypeGetMaxInstancesPerGpuInstance()\nfunc (l *library) VgpuTypeGetMaxInstancesPerGpuInstance(maxInstance *VgpuTypeMaxInstance) Return {\n\treturn nvmlVgpuTypeGetMaxInstancesPerGpuInstance(maxInstance)\n}\n"
  },
  {
    "path": "vendor/github.com/NVIDIA/go-nvml/pkg/nvml/zz_generated.api.go",
    "content": "/**\n# Copyright 2024 NVIDIA CORPORATION\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n**/\n\n// Generated Code; DO NOT EDIT.\n\npackage nvml\n\n// The variables below represent package level methods from the library type.\nvar (\n\tComputeInstanceDestroy                           = libnvml.ComputeInstanceDestroy\n\tComputeInstanceGetInfo                           = libnvml.ComputeInstanceGetInfo\n\tDeviceClearAccountingPids                        = libnvml.DeviceClearAccountingPids\n\tDeviceClearCpuAffinity                           = libnvml.DeviceClearCpuAffinity\n\tDeviceClearEccErrorCounts                        = libnvml.DeviceClearEccErrorCounts\n\tDeviceClearFieldValues                           = libnvml.DeviceClearFieldValues\n\tDeviceCreateGpuInstance                          = libnvml.DeviceCreateGpuInstance\n\tDeviceCreateGpuInstanceWithPlacement             = libnvml.DeviceCreateGpuInstanceWithPlacement\n\tDeviceDiscoverGpus                               = libnvml.DeviceDiscoverGpus\n\tDeviceFreezeNvLinkUtilizationCounter             = libnvml.DeviceFreezeNvLinkUtilizationCounter\n\tDeviceGetAPIRestriction                          = libnvml.DeviceGetAPIRestriction\n\tDeviceGetAccountingBufferSize                    = libnvml.DeviceGetAccountingBufferSize\n\tDeviceGetAccountingMode                          = libnvml.DeviceGetAccountingMode\n\tDeviceGetAccountingPids                          = libnvml.DeviceGetAccountingPids\n\tDeviceGetAccountingStats                         = libnvml.DeviceGetAccountingStats\n\tDeviceGetActiveVgpus                             = libnvml.DeviceGetActiveVgpus\n\tDeviceGetAdaptiveClockInfoStatus                 = libnvml.DeviceGetAdaptiveClockInfoStatus\n\tDeviceGetAddressingMode                          = libnvml.DeviceGetAddressingMode\n\tDeviceGetApplicationsClock                       = libnvml.DeviceGetApplicationsClock\n\tDeviceGetArchitecture                            = libnvml.DeviceGetArchitecture\n\tDeviceGetAttributes                              = libnvml.DeviceGetAttributes\n\tDeviceGetAutoBoostedClocksEnabled                = libnvml.DeviceGetAutoBoostedClocksEnabled\n\tDeviceGetBAR1MemoryInfo                          = libnvml.DeviceGetBAR1MemoryInfo\n\tDeviceGetBoardId                                 = libnvml.DeviceGetBoardId\n\tDeviceGetBoardPartNumber                         = libnvml.DeviceGetBoardPartNumber\n\tDeviceGetBrand                                   = libnvml.DeviceGetBrand\n\tDeviceGetBridgeChipInfo                          = libnvml.DeviceGetBridgeChipInfo\n\tDeviceGetBusType                                 = libnvml.DeviceGetBusType\n\tDeviceGetC2cModeInfoV                            = libnvml.DeviceGetC2cModeInfoV\n\tDeviceGetCapabilities                            = libnvml.DeviceGetCapabilities\n\tDeviceGetClkMonStatus                            = libnvml.DeviceGetClkMonStatus\n\tDeviceGetClock                                   = libnvml.DeviceGetClock\n\tDeviceGetClockInfo                               = libnvml.DeviceGetClockInfo\n\tDeviceGetClockOffsets                            = libnvml.DeviceGetClockOffsets\n\tDeviceGetComputeInstanceId                       = libnvml.DeviceGetComputeInstanceId\n\tDeviceGetComputeMode                             = libnvml.DeviceGetComputeMode\n\tDeviceGetComputeRunningProcesses                 = libnvml.DeviceGetComputeRunningProcesses\n\tDeviceGetConfComputeGpuAttestationReport         = libnvml.DeviceGetConfComputeGpuAttestationReport\n\tDeviceGetConfComputeGpuCertificate               = libnvml.DeviceGetConfComputeGpuCertificate\n\tDeviceGetConfComputeMemSizeInfo                  = libnvml.DeviceGetConfComputeMemSizeInfo\n\tDeviceGetConfComputeProtectedMemoryUsage         = libnvml.DeviceGetConfComputeProtectedMemoryUsage\n\tDeviceGetCoolerInfo                              = libnvml.DeviceGetCoolerInfo\n\tDeviceGetCount                                   = libnvml.DeviceGetCount\n\tDeviceGetCpuAffinity                             = libnvml.DeviceGetCpuAffinity\n\tDeviceGetCpuAffinityWithinScope                  = libnvml.DeviceGetCpuAffinityWithinScope\n\tDeviceGetCreatableVgpus                          = libnvml.DeviceGetCreatableVgpus\n\tDeviceGetCudaComputeCapability                   = libnvml.DeviceGetCudaComputeCapability\n\tDeviceGetCurrPcieLinkGeneration                  = libnvml.DeviceGetCurrPcieLinkGeneration\n\tDeviceGetCurrPcieLinkWidth                       = libnvml.DeviceGetCurrPcieLinkWidth\n\tDeviceGetCurrentClockFreqs                       = libnvml.DeviceGetCurrentClockFreqs\n\tDeviceGetCurrentClocksEventReasons               = libnvml.DeviceGetCurrentClocksEventReasons\n\tDeviceGetCurrentClocksThrottleReasons            = libnvml.DeviceGetCurrentClocksThrottleReasons\n\tDeviceGetDecoderUtilization                      = libnvml.DeviceGetDecoderUtilization\n\tDeviceGetDefaultApplicationsClock                = libnvml.DeviceGetDefaultApplicationsClock\n\tDeviceGetDefaultEccMode                          = libnvml.DeviceGetDefaultEccMode\n\tDeviceGetDetailedEccErrors                       = libnvml.DeviceGetDetailedEccErrors\n\tDeviceGetDeviceHandleFromMigDeviceHandle         = libnvml.DeviceGetDeviceHandleFromMigDeviceHandle\n\tDeviceGetDisplayActive                           = libnvml.DeviceGetDisplayActive\n\tDeviceGetDisplayMode                             = libnvml.DeviceGetDisplayMode\n\tDeviceGetDramEncryptionMode                      = libnvml.DeviceGetDramEncryptionMode\n\tDeviceGetDriverModel                             = libnvml.DeviceGetDriverModel\n\tDeviceGetDriverModel_v2                          = libnvml.DeviceGetDriverModel_v2\n\tDeviceGetDynamicPstatesInfo                      = libnvml.DeviceGetDynamicPstatesInfo\n\tDeviceGetEccMode                                 = libnvml.DeviceGetEccMode\n\tDeviceGetEncoderCapacity                         = libnvml.DeviceGetEncoderCapacity\n\tDeviceGetEncoderSessions                         = libnvml.DeviceGetEncoderSessions\n\tDeviceGetEncoderStats                            = libnvml.DeviceGetEncoderStats\n\tDeviceGetEncoderUtilization                      = libnvml.DeviceGetEncoderUtilization\n\tDeviceGetEnforcedPowerLimit                      = libnvml.DeviceGetEnforcedPowerLimit\n\tDeviceGetFBCSessions                             = libnvml.DeviceGetFBCSessions\n\tDeviceGetFBCStats                                = libnvml.DeviceGetFBCStats\n\tDeviceGetFanControlPolicy_v2                     = libnvml.DeviceGetFanControlPolicy_v2\n\tDeviceGetFanSpeed                                = libnvml.DeviceGetFanSpeed\n\tDeviceGetFanSpeedRPM                             = libnvml.DeviceGetFanSpeedRPM\n\tDeviceGetFanSpeed_v2                             = libnvml.DeviceGetFanSpeed_v2\n\tDeviceGetFieldValues                             = libnvml.DeviceGetFieldValues\n\tDeviceGetGpcClkMinMaxVfOffset                    = libnvml.DeviceGetGpcClkMinMaxVfOffset\n\tDeviceGetGpcClkVfOffset                          = libnvml.DeviceGetGpcClkVfOffset\n\tDeviceGetGpuFabricInfo                           = libnvml.DeviceGetGpuFabricInfo\n\tDeviceGetGpuFabricInfoV                          = libnvml.DeviceGetGpuFabricInfoV\n\tDeviceGetGpuInstanceById                         = libnvml.DeviceGetGpuInstanceById\n\tDeviceGetGpuInstanceId                           = libnvml.DeviceGetGpuInstanceId\n\tDeviceGetGpuInstancePossiblePlacements           = libnvml.DeviceGetGpuInstancePossiblePlacements\n\tDeviceGetGpuInstanceProfileInfo                  = libnvml.DeviceGetGpuInstanceProfileInfo\n\tDeviceGetGpuInstanceProfileInfoByIdV             = libnvml.DeviceGetGpuInstanceProfileInfoByIdV\n\tDeviceGetGpuInstanceProfileInfoV                 = libnvml.DeviceGetGpuInstanceProfileInfoV\n\tDeviceGetGpuInstanceRemainingCapacity            = libnvml.DeviceGetGpuInstanceRemainingCapacity\n\tDeviceGetGpuInstances                            = libnvml.DeviceGetGpuInstances\n\tDeviceGetGpuMaxPcieLinkGeneration                = libnvml.DeviceGetGpuMaxPcieLinkGeneration\n\tDeviceGetGpuOperationMode                        = libnvml.DeviceGetGpuOperationMode\n\tDeviceGetGraphicsRunningProcesses                = libnvml.DeviceGetGraphicsRunningProcesses\n\tDeviceGetGridLicensableFeatures                  = libnvml.DeviceGetGridLicensableFeatures\n\tDeviceGetGspFirmwareMode                         = libnvml.DeviceGetGspFirmwareMode\n\tDeviceGetGspFirmwareVersion                      = libnvml.DeviceGetGspFirmwareVersion\n\tDeviceGetHandleByIndex                           = libnvml.DeviceGetHandleByIndex\n\tDeviceGetHandleByPciBusId                        = libnvml.DeviceGetHandleByPciBusId\n\tDeviceGetHandleBySerial                          = libnvml.DeviceGetHandleBySerial\n\tDeviceGetHandleByUUID                            = libnvml.DeviceGetHandleByUUID\n\tDeviceGetHandleByUUIDV                           = libnvml.DeviceGetHandleByUUIDV\n\tDeviceGetHostVgpuMode                            = libnvml.DeviceGetHostVgpuMode\n\tDeviceGetIndex                                   = libnvml.DeviceGetIndex\n\tDeviceGetInforomConfigurationChecksum            = libnvml.DeviceGetInforomConfigurationChecksum\n\tDeviceGetInforomImageVersion                     = libnvml.DeviceGetInforomImageVersion\n\tDeviceGetInforomVersion                          = libnvml.DeviceGetInforomVersion\n\tDeviceGetIrqNum                                  = libnvml.DeviceGetIrqNum\n\tDeviceGetJpgUtilization                          = libnvml.DeviceGetJpgUtilization\n\tDeviceGetLastBBXFlushTime                        = libnvml.DeviceGetLastBBXFlushTime\n\tDeviceGetMPSComputeRunningProcesses              = libnvml.DeviceGetMPSComputeRunningProcesses\n\tDeviceGetMarginTemperature                       = libnvml.DeviceGetMarginTemperature\n\tDeviceGetMaxClockInfo                            = libnvml.DeviceGetMaxClockInfo\n\tDeviceGetMaxCustomerBoostClock                   = libnvml.DeviceGetMaxCustomerBoostClock\n\tDeviceGetMaxMigDeviceCount                       = libnvml.DeviceGetMaxMigDeviceCount\n\tDeviceGetMaxPcieLinkGeneration                   = libnvml.DeviceGetMaxPcieLinkGeneration\n\tDeviceGetMaxPcieLinkWidth                        = libnvml.DeviceGetMaxPcieLinkWidth\n\tDeviceGetMemClkMinMaxVfOffset                    = libnvml.DeviceGetMemClkMinMaxVfOffset\n\tDeviceGetMemClkVfOffset                          = libnvml.DeviceGetMemClkVfOffset\n\tDeviceGetMemoryAffinity                          = libnvml.DeviceGetMemoryAffinity\n\tDeviceGetMemoryBusWidth                          = libnvml.DeviceGetMemoryBusWidth\n\tDeviceGetMemoryErrorCounter                      = libnvml.DeviceGetMemoryErrorCounter\n\tDeviceGetMemoryInfo                              = libnvml.DeviceGetMemoryInfo\n\tDeviceGetMemoryInfo_v2                           = libnvml.DeviceGetMemoryInfo_v2\n\tDeviceGetMigDeviceHandleByIndex                  = libnvml.DeviceGetMigDeviceHandleByIndex\n\tDeviceGetMigMode                                 = libnvml.DeviceGetMigMode\n\tDeviceGetMinMaxClockOfPState                     = libnvml.DeviceGetMinMaxClockOfPState\n\tDeviceGetMinMaxFanSpeed                          = libnvml.DeviceGetMinMaxFanSpeed\n\tDeviceGetMinorNumber                             = libnvml.DeviceGetMinorNumber\n\tDeviceGetModuleId                                = libnvml.DeviceGetModuleId\n\tDeviceGetMultiGpuBoard                           = libnvml.DeviceGetMultiGpuBoard\n\tDeviceGetName                                    = libnvml.DeviceGetName\n\tDeviceGetNumFans                                 = libnvml.DeviceGetNumFans\n\tDeviceGetNumGpuCores                             = libnvml.DeviceGetNumGpuCores\n\tDeviceGetNumaNodeId                              = libnvml.DeviceGetNumaNodeId\n\tDeviceGetNvLinkCapability                        = libnvml.DeviceGetNvLinkCapability\n\tDeviceGetNvLinkErrorCounter                      = libnvml.DeviceGetNvLinkErrorCounter\n\tDeviceGetNvLinkInfo                              = libnvml.DeviceGetNvLinkInfo\n\tDeviceGetNvLinkRemoteDeviceType                  = libnvml.DeviceGetNvLinkRemoteDeviceType\n\tDeviceGetNvLinkRemotePciInfo                     = libnvml.DeviceGetNvLinkRemotePciInfo\n\tDeviceGetNvLinkState                             = libnvml.DeviceGetNvLinkState\n\tDeviceGetNvLinkUtilizationControl                = libnvml.DeviceGetNvLinkUtilizationControl\n\tDeviceGetNvLinkUtilizationCounter                = libnvml.DeviceGetNvLinkUtilizationCounter\n\tDeviceGetNvLinkVersion                           = libnvml.DeviceGetNvLinkVersion\n\tDeviceGetNvlinkBwMode                            = libnvml.DeviceGetNvlinkBwMode\n\tDeviceGetNvlinkSupportedBwModes                  = libnvml.DeviceGetNvlinkSupportedBwModes\n\tDeviceGetOfaUtilization                          = libnvml.DeviceGetOfaUtilization\n\tDeviceGetP2PStatus                               = libnvml.DeviceGetP2PStatus\n\tDeviceGetPciInfo                                 = libnvml.DeviceGetPciInfo\n\tDeviceGetPciInfoExt                              = libnvml.DeviceGetPciInfoExt\n\tDeviceGetPcieLinkMaxSpeed                        = libnvml.DeviceGetPcieLinkMaxSpeed\n\tDeviceGetPcieReplayCounter                       = libnvml.DeviceGetPcieReplayCounter\n\tDeviceGetPcieSpeed                               = libnvml.DeviceGetPcieSpeed\n\tDeviceGetPcieThroughput                          = libnvml.DeviceGetPcieThroughput\n\tDeviceGetPdi                                     = libnvml.DeviceGetPdi\n\tDeviceGetPerformanceModes                        = libnvml.DeviceGetPerformanceModes\n\tDeviceGetPerformanceState                        = libnvml.DeviceGetPerformanceState\n\tDeviceGetPersistenceMode                         = libnvml.DeviceGetPersistenceMode\n\tDeviceGetPgpuMetadataString                      = libnvml.DeviceGetPgpuMetadataString\n\tDeviceGetPlatformInfo                            = libnvml.DeviceGetPlatformInfo\n\tDeviceGetPowerManagementDefaultLimit             = libnvml.DeviceGetPowerManagementDefaultLimit\n\tDeviceGetPowerManagementLimit                    = libnvml.DeviceGetPowerManagementLimit\n\tDeviceGetPowerManagementLimitConstraints         = libnvml.DeviceGetPowerManagementLimitConstraints\n\tDeviceGetPowerManagementMode                     = libnvml.DeviceGetPowerManagementMode\n\tDeviceGetPowerMizerMode_v1                       = libnvml.DeviceGetPowerMizerMode_v1\n\tDeviceGetPowerSource                             = libnvml.DeviceGetPowerSource\n\tDeviceGetPowerState                              = libnvml.DeviceGetPowerState\n\tDeviceGetPowerUsage                              = libnvml.DeviceGetPowerUsage\n\tDeviceGetProcessUtilization                      = libnvml.DeviceGetProcessUtilization\n\tDeviceGetProcessesUtilizationInfo                = libnvml.DeviceGetProcessesUtilizationInfo\n\tDeviceGetRemappedRows                            = libnvml.DeviceGetRemappedRows\n\tDeviceGetRepairStatus                            = libnvml.DeviceGetRepairStatus\n\tDeviceGetRetiredPages                            = libnvml.DeviceGetRetiredPages\n\tDeviceGetRetiredPagesPendingStatus               = libnvml.DeviceGetRetiredPagesPendingStatus\n\tDeviceGetRetiredPages_v2                         = libnvml.DeviceGetRetiredPages_v2\n\tDeviceGetRowRemapperHistogram                    = libnvml.DeviceGetRowRemapperHistogram\n\tDeviceGetRunningProcessDetailList                = libnvml.DeviceGetRunningProcessDetailList\n\tDeviceGetSamples                                 = libnvml.DeviceGetSamples\n\tDeviceGetSerial                                  = libnvml.DeviceGetSerial\n\tDeviceGetSramEccErrorStatus                      = libnvml.DeviceGetSramEccErrorStatus\n\tDeviceGetSramUniqueUncorrectedEccErrorCounts     = libnvml.DeviceGetSramUniqueUncorrectedEccErrorCounts\n\tDeviceGetSupportedClocksEventReasons             = libnvml.DeviceGetSupportedClocksEventReasons\n\tDeviceGetSupportedClocksThrottleReasons          = libnvml.DeviceGetSupportedClocksThrottleReasons\n\tDeviceGetSupportedEventTypes                     = libnvml.DeviceGetSupportedEventTypes\n\tDeviceGetSupportedGraphicsClocks                 = libnvml.DeviceGetSupportedGraphicsClocks\n\tDeviceGetSupportedMemoryClocks                   = libnvml.DeviceGetSupportedMemoryClocks\n\tDeviceGetSupportedPerformanceStates              = libnvml.DeviceGetSupportedPerformanceStates\n\tDeviceGetSupportedVgpus                          = libnvml.DeviceGetSupportedVgpus\n\tDeviceGetTargetFanSpeed                          = libnvml.DeviceGetTargetFanSpeed\n\tDeviceGetTemperature                             = libnvml.DeviceGetTemperature\n\tDeviceGetTemperatureThreshold                    = libnvml.DeviceGetTemperatureThreshold\n\tDeviceGetTemperatureV                            = libnvml.DeviceGetTemperatureV\n\tDeviceGetThermalSettings                         = libnvml.DeviceGetThermalSettings\n\tDeviceGetTopologyCommonAncestor                  = libnvml.DeviceGetTopologyCommonAncestor\n\tDeviceGetTopologyNearestGpus                     = libnvml.DeviceGetTopologyNearestGpus\n\tDeviceGetTotalEccErrors                          = libnvml.DeviceGetTotalEccErrors\n\tDeviceGetTotalEnergyConsumption                  = libnvml.DeviceGetTotalEnergyConsumption\n\tDeviceGetUUID                                    = libnvml.DeviceGetUUID\n\tDeviceGetUtilizationRates                        = libnvml.DeviceGetUtilizationRates\n\tDeviceGetVbiosVersion                            = libnvml.DeviceGetVbiosVersion\n\tDeviceGetVgpuCapabilities                        = libnvml.DeviceGetVgpuCapabilities\n\tDeviceGetVgpuHeterogeneousMode                   = libnvml.DeviceGetVgpuHeterogeneousMode\n\tDeviceGetVgpuInstancesUtilizationInfo            = libnvml.DeviceGetVgpuInstancesUtilizationInfo\n\tDeviceGetVgpuMetadata                            = libnvml.DeviceGetVgpuMetadata\n\tDeviceGetVgpuProcessUtilization                  = libnvml.DeviceGetVgpuProcessUtilization\n\tDeviceGetVgpuProcessesUtilizationInfo            = libnvml.DeviceGetVgpuProcessesUtilizationInfo\n\tDeviceGetVgpuSchedulerCapabilities               = libnvml.DeviceGetVgpuSchedulerCapabilities\n\tDeviceGetVgpuSchedulerLog                        = libnvml.DeviceGetVgpuSchedulerLog\n\tDeviceGetVgpuSchedulerState                      = libnvml.DeviceGetVgpuSchedulerState\n\tDeviceGetVgpuTypeCreatablePlacements             = libnvml.DeviceGetVgpuTypeCreatablePlacements\n\tDeviceGetVgpuTypeSupportedPlacements             = libnvml.DeviceGetVgpuTypeSupportedPlacements\n\tDeviceGetVgpuUtilization                         = libnvml.DeviceGetVgpuUtilization\n\tDeviceGetViolationStatus                         = libnvml.DeviceGetViolationStatus\n\tDeviceGetVirtualizationMode                      = libnvml.DeviceGetVirtualizationMode\n\tDeviceIsMigDeviceHandle                          = libnvml.DeviceIsMigDeviceHandle\n\tDeviceModifyDrainState                           = libnvml.DeviceModifyDrainState\n\tDeviceOnSameBoard                                = libnvml.DeviceOnSameBoard\n\tDevicePowerSmoothingActivatePresetProfile        = libnvml.DevicePowerSmoothingActivatePresetProfile\n\tDevicePowerSmoothingSetState                     = libnvml.DevicePowerSmoothingSetState\n\tDevicePowerSmoothingUpdatePresetProfileParam     = libnvml.DevicePowerSmoothingUpdatePresetProfileParam\n\tDeviceQueryDrainState                            = libnvml.DeviceQueryDrainState\n\tDeviceReadWritePRM_v1                            = libnvml.DeviceReadWritePRM_v1\n\tDeviceRegisterEvents                             = libnvml.DeviceRegisterEvents\n\tDeviceRemoveGpu                                  = libnvml.DeviceRemoveGpu\n\tDeviceRemoveGpu_v2                               = libnvml.DeviceRemoveGpu_v2\n\tDeviceResetApplicationsClocks                    = libnvml.DeviceResetApplicationsClocks\n\tDeviceResetGpuLockedClocks                       = libnvml.DeviceResetGpuLockedClocks\n\tDeviceResetMemoryLockedClocks                    = libnvml.DeviceResetMemoryLockedClocks\n\tDeviceResetNvLinkErrorCounters                   = libnvml.DeviceResetNvLinkErrorCounters\n\tDeviceResetNvLinkUtilizationCounter              = libnvml.DeviceResetNvLinkUtilizationCounter\n\tDeviceSetAPIRestriction                          = libnvml.DeviceSetAPIRestriction\n\tDeviceSetAccountingMode                          = libnvml.DeviceSetAccountingMode\n\tDeviceSetApplicationsClocks                      = libnvml.DeviceSetApplicationsClocks\n\tDeviceSetAutoBoostedClocksEnabled                = libnvml.DeviceSetAutoBoostedClocksEnabled\n\tDeviceSetClockOffsets                            = libnvml.DeviceSetClockOffsets\n\tDeviceSetComputeMode                             = libnvml.DeviceSetComputeMode\n\tDeviceSetConfComputeUnprotectedMemSize           = libnvml.DeviceSetConfComputeUnprotectedMemSize\n\tDeviceSetCpuAffinity                             = libnvml.DeviceSetCpuAffinity\n\tDeviceSetDefaultAutoBoostedClocksEnabled         = libnvml.DeviceSetDefaultAutoBoostedClocksEnabled\n\tDeviceSetDefaultFanSpeed_v2                      = libnvml.DeviceSetDefaultFanSpeed_v2\n\tDeviceSetDramEncryptionMode                      = libnvml.DeviceSetDramEncryptionMode\n\tDeviceSetDriverModel                             = libnvml.DeviceSetDriverModel\n\tDeviceSetEccMode                                 = libnvml.DeviceSetEccMode\n\tDeviceSetFanControlPolicy                        = libnvml.DeviceSetFanControlPolicy\n\tDeviceSetFanSpeed_v2                             = libnvml.DeviceSetFanSpeed_v2\n\tDeviceSetGpcClkVfOffset                          = libnvml.DeviceSetGpcClkVfOffset\n\tDeviceSetGpuLockedClocks                         = libnvml.DeviceSetGpuLockedClocks\n\tDeviceSetGpuOperationMode                        = libnvml.DeviceSetGpuOperationMode\n\tDeviceSetMemClkVfOffset                          = libnvml.DeviceSetMemClkVfOffset\n\tDeviceSetMemoryLockedClocks                      = libnvml.DeviceSetMemoryLockedClocks\n\tDeviceSetMigMode                                 = libnvml.DeviceSetMigMode\n\tDeviceSetNvLinkDeviceLowPowerThreshold           = libnvml.DeviceSetNvLinkDeviceLowPowerThreshold\n\tDeviceSetNvLinkUtilizationControl                = libnvml.DeviceSetNvLinkUtilizationControl\n\tDeviceSetNvlinkBwMode                            = libnvml.DeviceSetNvlinkBwMode\n\tDeviceSetPersistenceMode                         = libnvml.DeviceSetPersistenceMode\n\tDeviceSetPowerManagementLimit                    = libnvml.DeviceSetPowerManagementLimit\n\tDeviceSetPowerManagementLimit_v2                 = libnvml.DeviceSetPowerManagementLimit_v2\n\tDeviceSetTemperatureThreshold                    = libnvml.DeviceSetTemperatureThreshold\n\tDeviceSetVgpuCapabilities                        = libnvml.DeviceSetVgpuCapabilities\n\tDeviceSetVgpuHeterogeneousMode                   = libnvml.DeviceSetVgpuHeterogeneousMode\n\tDeviceSetVgpuSchedulerState                      = libnvml.DeviceSetVgpuSchedulerState\n\tDeviceSetVirtualizationMode                      = libnvml.DeviceSetVirtualizationMode\n\tDeviceValidateInforom                            = libnvml.DeviceValidateInforom\n\tDeviceWorkloadPowerProfileClearRequestedProfiles = libnvml.DeviceWorkloadPowerProfileClearRequestedProfiles\n\tDeviceWorkloadPowerProfileGetCurrentProfiles     = libnvml.DeviceWorkloadPowerProfileGetCurrentProfiles\n\tDeviceWorkloadPowerProfileGetProfilesInfo        = libnvml.DeviceWorkloadPowerProfileGetProfilesInfo\n\tDeviceWorkloadPowerProfileSetRequestedProfiles   = libnvml.DeviceWorkloadPowerProfileSetRequestedProfiles\n\tErrorString                                      = libnvml.ErrorString\n\tEventSetCreate                                   = libnvml.EventSetCreate\n\tEventSetFree                                     = libnvml.EventSetFree\n\tEventSetWait                                     = libnvml.EventSetWait\n\tExtensions                                       = libnvml.Extensions\n\tGetExcludedDeviceCount                           = libnvml.GetExcludedDeviceCount\n\tGetExcludedDeviceInfoByIndex                     = libnvml.GetExcludedDeviceInfoByIndex\n\tGetVgpuCompatibility                             = libnvml.GetVgpuCompatibility\n\tGetVgpuDriverCapabilities                        = libnvml.GetVgpuDriverCapabilities\n\tGetVgpuVersion                                   = libnvml.GetVgpuVersion\n\tGpmMetricsGet                                    = libnvml.GpmMetricsGet\n\tGpmMetricsGetV                                   = libnvml.GpmMetricsGetV\n\tGpmMigSampleGet                                  = libnvml.GpmMigSampleGet\n\tGpmQueryDeviceSupport                            = libnvml.GpmQueryDeviceSupport\n\tGpmQueryDeviceSupportV                           = libnvml.GpmQueryDeviceSupportV\n\tGpmQueryIfStreamingEnabled                       = libnvml.GpmQueryIfStreamingEnabled\n\tGpmSampleAlloc                                   = libnvml.GpmSampleAlloc\n\tGpmSampleFree                                    = libnvml.GpmSampleFree\n\tGpmSampleGet                                     = libnvml.GpmSampleGet\n\tGpmSetStreamingEnabled                           = libnvml.GpmSetStreamingEnabled\n\tGpuInstanceCreateComputeInstance                 = libnvml.GpuInstanceCreateComputeInstance\n\tGpuInstanceCreateComputeInstanceWithPlacement    = libnvml.GpuInstanceCreateComputeInstanceWithPlacement\n\tGpuInstanceDestroy                               = libnvml.GpuInstanceDestroy\n\tGpuInstanceGetActiveVgpus                        = libnvml.GpuInstanceGetActiveVgpus\n\tGpuInstanceGetComputeInstanceById                = libnvml.GpuInstanceGetComputeInstanceById\n\tGpuInstanceGetComputeInstancePossiblePlacements  = libnvml.GpuInstanceGetComputeInstancePossiblePlacements\n\tGpuInstanceGetComputeInstanceProfileInfo         = libnvml.GpuInstanceGetComputeInstanceProfileInfo\n\tGpuInstanceGetComputeInstanceProfileInfoV        = libnvml.GpuInstanceGetComputeInstanceProfileInfoV\n\tGpuInstanceGetComputeInstanceRemainingCapacity   = libnvml.GpuInstanceGetComputeInstanceRemainingCapacity\n\tGpuInstanceGetComputeInstances                   = libnvml.GpuInstanceGetComputeInstances\n\tGpuInstanceGetCreatableVgpus                     = libnvml.GpuInstanceGetCreatableVgpus\n\tGpuInstanceGetInfo                               = libnvml.GpuInstanceGetInfo\n\tGpuInstanceGetVgpuHeterogeneousMode              = libnvml.GpuInstanceGetVgpuHeterogeneousMode\n\tGpuInstanceGetVgpuSchedulerLog                   = libnvml.GpuInstanceGetVgpuSchedulerLog\n\tGpuInstanceGetVgpuSchedulerState                 = libnvml.GpuInstanceGetVgpuSchedulerState\n\tGpuInstanceGetVgpuTypeCreatablePlacements        = libnvml.GpuInstanceGetVgpuTypeCreatablePlacements\n\tGpuInstanceSetVgpuHeterogeneousMode              = libnvml.GpuInstanceSetVgpuHeterogeneousMode\n\tGpuInstanceSetVgpuSchedulerState                 = libnvml.GpuInstanceSetVgpuSchedulerState\n\tInit                                             = libnvml.Init\n\tInitWithFlags                                    = libnvml.InitWithFlags\n\tSetVgpuVersion                                   = libnvml.SetVgpuVersion\n\tShutdown                                         = libnvml.Shutdown\n\tSystemEventSetCreate                             = libnvml.SystemEventSetCreate\n\tSystemEventSetFree                               = libnvml.SystemEventSetFree\n\tSystemEventSetWait                               = libnvml.SystemEventSetWait\n\tSystemGetConfComputeCapabilities                 = libnvml.SystemGetConfComputeCapabilities\n\tSystemGetConfComputeGpusReadyState               = libnvml.SystemGetConfComputeGpusReadyState\n\tSystemGetConfComputeKeyRotationThresholdInfo     = libnvml.SystemGetConfComputeKeyRotationThresholdInfo\n\tSystemGetConfComputeSettings                     = libnvml.SystemGetConfComputeSettings\n\tSystemGetConfComputeState                        = libnvml.SystemGetConfComputeState\n\tSystemGetCudaDriverVersion                       = libnvml.SystemGetCudaDriverVersion\n\tSystemGetCudaDriverVersion_v2                    = libnvml.SystemGetCudaDriverVersion_v2\n\tSystemGetDriverBranch                            = libnvml.SystemGetDriverBranch\n\tSystemGetDriverVersion                           = libnvml.SystemGetDriverVersion\n\tSystemGetHicVersion                              = libnvml.SystemGetHicVersion\n\tSystemGetNVMLVersion                             = libnvml.SystemGetNVMLVersion\n\tSystemGetNvlinkBwMode                            = libnvml.SystemGetNvlinkBwMode\n\tSystemGetProcessName                             = libnvml.SystemGetProcessName\n\tSystemGetTopologyGpuSet                          = libnvml.SystemGetTopologyGpuSet\n\tSystemRegisterEvents                             = libnvml.SystemRegisterEvents\n\tSystemSetConfComputeGpusReadyState               = libnvml.SystemSetConfComputeGpusReadyState\n\tSystemSetConfComputeKeyRotationThresholdInfo     = libnvml.SystemSetConfComputeKeyRotationThresholdInfo\n\tSystemSetNvlinkBwMode                            = libnvml.SystemSetNvlinkBwMode\n\tUnitGetCount                                     = libnvml.UnitGetCount\n\tUnitGetDevices                                   = libnvml.UnitGetDevices\n\tUnitGetFanSpeedInfo                              = libnvml.UnitGetFanSpeedInfo\n\tUnitGetHandleByIndex                             = libnvml.UnitGetHandleByIndex\n\tUnitGetLedState                                  = libnvml.UnitGetLedState\n\tUnitGetPsuInfo                                   = libnvml.UnitGetPsuInfo\n\tUnitGetTemperature                               = libnvml.UnitGetTemperature\n\tUnitGetUnitInfo                                  = libnvml.UnitGetUnitInfo\n\tUnitSetLedState                                  = libnvml.UnitSetLedState\n\tVgpuInstanceClearAccountingPids                  = libnvml.VgpuInstanceClearAccountingPids\n\tVgpuInstanceGetAccountingMode                    = libnvml.VgpuInstanceGetAccountingMode\n\tVgpuInstanceGetAccountingPids                    = libnvml.VgpuInstanceGetAccountingPids\n\tVgpuInstanceGetAccountingStats                   = libnvml.VgpuInstanceGetAccountingStats\n\tVgpuInstanceGetEccMode                           = libnvml.VgpuInstanceGetEccMode\n\tVgpuInstanceGetEncoderCapacity                   = libnvml.VgpuInstanceGetEncoderCapacity\n\tVgpuInstanceGetEncoderSessions                   = libnvml.VgpuInstanceGetEncoderSessions\n\tVgpuInstanceGetEncoderStats                      = libnvml.VgpuInstanceGetEncoderStats\n\tVgpuInstanceGetFBCSessions                       = libnvml.VgpuInstanceGetFBCSessions\n\tVgpuInstanceGetFBCStats                          = libnvml.VgpuInstanceGetFBCStats\n\tVgpuInstanceGetFbUsage                           = libnvml.VgpuInstanceGetFbUsage\n\tVgpuInstanceGetFrameRateLimit                    = libnvml.VgpuInstanceGetFrameRateLimit\n\tVgpuInstanceGetGpuInstanceId                     = libnvml.VgpuInstanceGetGpuInstanceId\n\tVgpuInstanceGetGpuPciId                          = libnvml.VgpuInstanceGetGpuPciId\n\tVgpuInstanceGetLicenseInfo                       = libnvml.VgpuInstanceGetLicenseInfo\n\tVgpuInstanceGetLicenseStatus                     = libnvml.VgpuInstanceGetLicenseStatus\n\tVgpuInstanceGetMdevUUID                          = libnvml.VgpuInstanceGetMdevUUID\n\tVgpuInstanceGetMetadata                          = libnvml.VgpuInstanceGetMetadata\n\tVgpuInstanceGetRuntimeStateSize                  = libnvml.VgpuInstanceGetRuntimeStateSize\n\tVgpuInstanceGetType                              = libnvml.VgpuInstanceGetType\n\tVgpuInstanceGetUUID                              = libnvml.VgpuInstanceGetUUID\n\tVgpuInstanceGetVmDriverVersion                   = libnvml.VgpuInstanceGetVmDriverVersion\n\tVgpuInstanceGetVmID                              = libnvml.VgpuInstanceGetVmID\n\tVgpuInstanceSetEncoderCapacity                   = libnvml.VgpuInstanceSetEncoderCapacity\n\tVgpuTypeGetBAR1Info                              = libnvml.VgpuTypeGetBAR1Info\n\tVgpuTypeGetCapabilities                          = libnvml.VgpuTypeGetCapabilities\n\tVgpuTypeGetClass                                 = libnvml.VgpuTypeGetClass\n\tVgpuTypeGetDeviceID                              = libnvml.VgpuTypeGetDeviceID\n\tVgpuTypeGetFrameRateLimit                        = libnvml.VgpuTypeGetFrameRateLimit\n\tVgpuTypeGetFramebufferSize                       = libnvml.VgpuTypeGetFramebufferSize\n\tVgpuTypeGetGpuInstanceProfileId                  = libnvml.VgpuTypeGetGpuInstanceProfileId\n\tVgpuTypeGetLicense                               = libnvml.VgpuTypeGetLicense\n\tVgpuTypeGetMaxInstances                          = libnvml.VgpuTypeGetMaxInstances\n\tVgpuTypeGetMaxInstancesPerGpuInstance            = libnvml.VgpuTypeGetMaxInstancesPerGpuInstance\n\tVgpuTypeGetMaxInstancesPerVm                     = libnvml.VgpuTypeGetMaxInstancesPerVm\n\tVgpuTypeGetName                                  = libnvml.VgpuTypeGetName\n\tVgpuTypeGetNumDisplayHeads                       = libnvml.VgpuTypeGetNumDisplayHeads\n\tVgpuTypeGetResolution                            = libnvml.VgpuTypeGetResolution\n)\n\n// Interface represents the interface for the library type.\n//\n//go:generate moq -out mock/interface.go -pkg mock . Interface:Interface\ntype Interface interface {\n\tComputeInstanceDestroy(ComputeInstance) Return\n\tComputeInstanceGetInfo(ComputeInstance) (ComputeInstanceInfo, Return)\n\tDeviceClearAccountingPids(Device) Return\n\tDeviceClearCpuAffinity(Device) Return\n\tDeviceClearEccErrorCounts(Device, EccCounterType) Return\n\tDeviceClearFieldValues(Device, []FieldValue) Return\n\tDeviceCreateGpuInstance(Device, *GpuInstanceProfileInfo) (GpuInstance, Return)\n\tDeviceCreateGpuInstanceWithPlacement(Device, *GpuInstanceProfileInfo, *GpuInstancePlacement) (GpuInstance, Return)\n\tDeviceDiscoverGpus() (PciInfo, Return)\n\tDeviceFreezeNvLinkUtilizationCounter(Device, int, int, EnableState) Return\n\tDeviceGetAPIRestriction(Device, RestrictedAPI) (EnableState, Return)\n\tDeviceGetAccountingBufferSize(Device) (int, Return)\n\tDeviceGetAccountingMode(Device) (EnableState, Return)\n\tDeviceGetAccountingPids(Device) ([]int, Return)\n\tDeviceGetAccountingStats(Device, uint32) (AccountingStats, Return)\n\tDeviceGetActiveVgpus(Device) ([]VgpuInstance, Return)\n\tDeviceGetAdaptiveClockInfoStatus(Device) (uint32, Return)\n\tDeviceGetAddressingMode(Device) (DeviceAddressingMode, Return)\n\tDeviceGetApplicationsClock(Device, ClockType) (uint32, Return)\n\tDeviceGetArchitecture(Device) (DeviceArchitecture, Return)\n\tDeviceGetAttributes(Device) (DeviceAttributes, Return)\n\tDeviceGetAutoBoostedClocksEnabled(Device) (EnableState, EnableState, Return)\n\tDeviceGetBAR1MemoryInfo(Device) (BAR1Memory, Return)\n\tDeviceGetBoardId(Device) (uint32, Return)\n\tDeviceGetBoardPartNumber(Device) (string, Return)\n\tDeviceGetBrand(Device) (BrandType, Return)\n\tDeviceGetBridgeChipInfo(Device) (BridgeChipHierarchy, Return)\n\tDeviceGetBusType(Device) (BusType, Return)\n\tDeviceGetC2cModeInfoV(Device) C2cModeInfoHandler\n\tDeviceGetCapabilities(Device) (DeviceCapabilities, Return)\n\tDeviceGetClkMonStatus(Device) (ClkMonStatus, Return)\n\tDeviceGetClock(Device, ClockType, ClockId) (uint32, Return)\n\tDeviceGetClockInfo(Device, ClockType) (uint32, Return)\n\tDeviceGetClockOffsets(Device) (ClockOffset, Return)\n\tDeviceGetComputeInstanceId(Device) (int, Return)\n\tDeviceGetComputeMode(Device) (ComputeMode, Return)\n\tDeviceGetComputeRunningProcesses(Device) ([]ProcessInfo, Return)\n\tDeviceGetConfComputeGpuAttestationReport(Device, *ConfComputeGpuAttestationReport) Return\n\tDeviceGetConfComputeGpuCertificate(Device) (ConfComputeGpuCertificate, Return)\n\tDeviceGetConfComputeMemSizeInfo(Device) (ConfComputeMemSizeInfo, Return)\n\tDeviceGetConfComputeProtectedMemoryUsage(Device) (Memory, Return)\n\tDeviceGetCoolerInfo(Device) (CoolerInfo, Return)\n\tDeviceGetCount() (int, Return)\n\tDeviceGetCpuAffinity(Device, int) ([]uint, Return)\n\tDeviceGetCpuAffinityWithinScope(Device, int, AffinityScope) ([]uint, Return)\n\tDeviceGetCreatableVgpus(Device) ([]VgpuTypeId, Return)\n\tDeviceGetCudaComputeCapability(Device) (int, int, Return)\n\tDeviceGetCurrPcieLinkGeneration(Device) (int, Return)\n\tDeviceGetCurrPcieLinkWidth(Device) (int, Return)\n\tDeviceGetCurrentClockFreqs(Device) (DeviceCurrentClockFreqs, Return)\n\tDeviceGetCurrentClocksEventReasons(Device) (uint64, Return)\n\tDeviceGetCurrentClocksThrottleReasons(Device) (uint64, Return)\n\tDeviceGetDecoderUtilization(Device) (uint32, uint32, Return)\n\tDeviceGetDefaultApplicationsClock(Device, ClockType) (uint32, Return)\n\tDeviceGetDefaultEccMode(Device) (EnableState, Return)\n\tDeviceGetDetailedEccErrors(Device, MemoryErrorType, EccCounterType) (EccErrorCounts, Return)\n\tDeviceGetDeviceHandleFromMigDeviceHandle(Device) (Device, Return)\n\tDeviceGetDisplayActive(Device) (EnableState, Return)\n\tDeviceGetDisplayMode(Device) (EnableState, Return)\n\tDeviceGetDramEncryptionMode(Device) (DramEncryptionInfo, DramEncryptionInfo, Return)\n\tDeviceGetDriverModel(Device) (DriverModel, DriverModel, Return)\n\tDeviceGetDriverModel_v2(Device) (DriverModel, DriverModel, Return)\n\tDeviceGetDynamicPstatesInfo(Device) (GpuDynamicPstatesInfo, Return)\n\tDeviceGetEccMode(Device) (EnableState, EnableState, Return)\n\tDeviceGetEncoderCapacity(Device, EncoderType) (int, Return)\n\tDeviceGetEncoderSessions(Device) ([]EncoderSessionInfo, Return)\n\tDeviceGetEncoderStats(Device) (int, uint32, uint32, Return)\n\tDeviceGetEncoderUtilization(Device) (uint32, uint32, Return)\n\tDeviceGetEnforcedPowerLimit(Device) (uint32, Return)\n\tDeviceGetFBCSessions(Device) ([]FBCSessionInfo, Return)\n\tDeviceGetFBCStats(Device) (FBCStats, Return)\n\tDeviceGetFanControlPolicy_v2(Device, int) (FanControlPolicy, Return)\n\tDeviceGetFanSpeed(Device) (uint32, Return)\n\tDeviceGetFanSpeedRPM(Device) (FanSpeedInfo, Return)\n\tDeviceGetFanSpeed_v2(Device, int) (uint32, Return)\n\tDeviceGetFieldValues(Device, []FieldValue) Return\n\tDeviceGetGpcClkMinMaxVfOffset(Device) (int, int, Return)\n\tDeviceGetGpcClkVfOffset(Device) (int, Return)\n\tDeviceGetGpuFabricInfo(Device) (GpuFabricInfo, Return)\n\tDeviceGetGpuFabricInfoV(Device) GpuFabricInfoHandler\n\tDeviceGetGpuInstanceById(Device, int) (GpuInstance, Return)\n\tDeviceGetGpuInstanceId(Device) (int, Return)\n\tDeviceGetGpuInstancePossiblePlacements(Device, *GpuInstanceProfileInfo) ([]GpuInstancePlacement, Return)\n\tDeviceGetGpuInstanceProfileInfo(Device, int) (GpuInstanceProfileInfo, Return)\n\tDeviceGetGpuInstanceProfileInfoByIdV(Device, int) GpuInstanceProfileInfoByIdHandler\n\tDeviceGetGpuInstanceProfileInfoV(Device, int) GpuInstanceProfileInfoHandler\n\tDeviceGetGpuInstanceRemainingCapacity(Device, *GpuInstanceProfileInfo) (int, Return)\n\tDeviceGetGpuInstances(Device, *GpuInstanceProfileInfo) ([]GpuInstance, Return)\n\tDeviceGetGpuMaxPcieLinkGeneration(Device) (int, Return)\n\tDeviceGetGpuOperationMode(Device) (GpuOperationMode, GpuOperationMode, Return)\n\tDeviceGetGraphicsRunningProcesses(Device) ([]ProcessInfo, Return)\n\tDeviceGetGridLicensableFeatures(Device) (GridLicensableFeatures, Return)\n\tDeviceGetGspFirmwareMode(Device) (bool, bool, Return)\n\tDeviceGetGspFirmwareVersion(Device) (string, Return)\n\tDeviceGetHandleByIndex(int) (Device, Return)\n\tDeviceGetHandleByPciBusId(string) (Device, Return)\n\tDeviceGetHandleBySerial(string) (Device, Return)\n\tDeviceGetHandleByUUID(string) (Device, Return)\n\tDeviceGetHandleByUUIDV(*UUID) (Device, Return)\n\tDeviceGetHostVgpuMode(Device) (HostVgpuMode, Return)\n\tDeviceGetIndex(Device) (int, Return)\n\tDeviceGetInforomConfigurationChecksum(Device) (uint32, Return)\n\tDeviceGetInforomImageVersion(Device) (string, Return)\n\tDeviceGetInforomVersion(Device, InforomObject) (string, Return)\n\tDeviceGetIrqNum(Device) (int, Return)\n\tDeviceGetJpgUtilization(Device) (uint32, uint32, Return)\n\tDeviceGetLastBBXFlushTime(Device) (uint64, uint, Return)\n\tDeviceGetMPSComputeRunningProcesses(Device) ([]ProcessInfo, Return)\n\tDeviceGetMarginTemperature(Device) (MarginTemperature, Return)\n\tDeviceGetMaxClockInfo(Device, ClockType) (uint32, Return)\n\tDeviceGetMaxCustomerBoostClock(Device, ClockType) (uint32, Return)\n\tDeviceGetMaxMigDeviceCount(Device) (int, Return)\n\tDeviceGetMaxPcieLinkGeneration(Device) (int, Return)\n\tDeviceGetMaxPcieLinkWidth(Device) (int, Return)\n\tDeviceGetMemClkMinMaxVfOffset(Device) (int, int, Return)\n\tDeviceGetMemClkVfOffset(Device) (int, Return)\n\tDeviceGetMemoryAffinity(Device, int, AffinityScope) ([]uint, Return)\n\tDeviceGetMemoryBusWidth(Device) (uint32, Return)\n\tDeviceGetMemoryErrorCounter(Device, MemoryErrorType, EccCounterType, MemoryLocation) (uint64, Return)\n\tDeviceGetMemoryInfo(Device) (Memory, Return)\n\tDeviceGetMemoryInfo_v2(Device) (Memory_v2, Return)\n\tDeviceGetMigDeviceHandleByIndex(Device, int) (Device, Return)\n\tDeviceGetMigMode(Device) (int, int, Return)\n\tDeviceGetMinMaxClockOfPState(Device, ClockType, Pstates) (uint32, uint32, Return)\n\tDeviceGetMinMaxFanSpeed(Device) (int, int, Return)\n\tDeviceGetMinorNumber(Device) (int, Return)\n\tDeviceGetModuleId(Device) (int, Return)\n\tDeviceGetMultiGpuBoard(Device) (int, Return)\n\tDeviceGetName(Device) (string, Return)\n\tDeviceGetNumFans(Device) (int, Return)\n\tDeviceGetNumGpuCores(Device) (int, Return)\n\tDeviceGetNumaNodeId(Device) (int, Return)\n\tDeviceGetNvLinkCapability(Device, int, NvLinkCapability) (uint32, Return)\n\tDeviceGetNvLinkErrorCounter(Device, int, NvLinkErrorCounter) (uint64, Return)\n\tDeviceGetNvLinkInfo(Device) NvLinkInfoHandler\n\tDeviceGetNvLinkRemoteDeviceType(Device, int) (IntNvLinkDeviceType, Return)\n\tDeviceGetNvLinkRemotePciInfo(Device, int) (PciInfo, Return)\n\tDeviceGetNvLinkState(Device, int) (EnableState, Return)\n\tDeviceGetNvLinkUtilizationControl(Device, int, int) (NvLinkUtilizationControl, Return)\n\tDeviceGetNvLinkUtilizationCounter(Device, int, int) (uint64, uint64, Return)\n\tDeviceGetNvLinkVersion(Device, int) (uint32, Return)\n\tDeviceGetNvlinkBwMode(Device) (NvlinkGetBwMode, Return)\n\tDeviceGetNvlinkSupportedBwModes(Device) (NvlinkSupportedBwModes, Return)\n\tDeviceGetOfaUtilization(Device) (uint32, uint32, Return)\n\tDeviceGetP2PStatus(Device, Device, GpuP2PCapsIndex) (GpuP2PStatus, Return)\n\tDeviceGetPciInfo(Device) (PciInfo, Return)\n\tDeviceGetPciInfoExt(Device) (PciInfoExt, Return)\n\tDeviceGetPcieLinkMaxSpeed(Device) (uint32, Return)\n\tDeviceGetPcieReplayCounter(Device) (int, Return)\n\tDeviceGetPcieSpeed(Device) (int, Return)\n\tDeviceGetPcieThroughput(Device, PcieUtilCounter) (uint32, Return)\n\tDeviceGetPdi(Device) (Pdi, Return)\n\tDeviceGetPerformanceModes(Device) (DevicePerfModes, Return)\n\tDeviceGetPerformanceState(Device) (Pstates, Return)\n\tDeviceGetPersistenceMode(Device) (EnableState, Return)\n\tDeviceGetPgpuMetadataString(Device) (string, Return)\n\tDeviceGetPlatformInfo(Device) (PlatformInfo, Return)\n\tDeviceGetPowerManagementDefaultLimit(Device) (uint32, Return)\n\tDeviceGetPowerManagementLimit(Device) (uint32, Return)\n\tDeviceGetPowerManagementLimitConstraints(Device) (uint32, uint32, Return)\n\tDeviceGetPowerManagementMode(Device) (EnableState, Return)\n\tDeviceGetPowerMizerMode_v1(Device) (DevicePowerMizerModes_v1, Return)\n\tDeviceGetPowerSource(Device) (PowerSource, Return)\n\tDeviceGetPowerState(Device) (Pstates, Return)\n\tDeviceGetPowerUsage(Device) (uint32, Return)\n\tDeviceGetProcessUtilization(Device, uint64) ([]ProcessUtilizationSample, Return)\n\tDeviceGetProcessesUtilizationInfo(Device) (ProcessesUtilizationInfo, Return)\n\tDeviceGetRemappedRows(Device) (int, int, bool, bool, Return)\n\tDeviceGetRepairStatus(Device) (RepairStatus, Return)\n\tDeviceGetRetiredPages(Device, PageRetirementCause) ([]uint64, Return)\n\tDeviceGetRetiredPagesPendingStatus(Device) (EnableState, Return)\n\tDeviceGetRetiredPages_v2(Device, PageRetirementCause) ([]uint64, []uint64, Return)\n\tDeviceGetRowRemapperHistogram(Device) (RowRemapperHistogramValues, Return)\n\tDeviceGetRunningProcessDetailList(Device) (ProcessDetailList, Return)\n\tDeviceGetSamples(Device, SamplingType, uint64) (ValueType, []Sample, Return)\n\tDeviceGetSerial(Device) (string, Return)\n\tDeviceGetSramEccErrorStatus(Device) (EccSramErrorStatus, Return)\n\tDeviceGetSramUniqueUncorrectedEccErrorCounts(Device, *EccSramUniqueUncorrectedErrorCounts) Return\n\tDeviceGetSupportedClocksEventReasons(Device) (uint64, Return)\n\tDeviceGetSupportedClocksThrottleReasons(Device) (uint64, Return)\n\tDeviceGetSupportedEventTypes(Device) (uint64, Return)\n\tDeviceGetSupportedGraphicsClocks(Device, int) (int, uint32, Return)\n\tDeviceGetSupportedMemoryClocks(Device) (int, uint32, Return)\n\tDeviceGetSupportedPerformanceStates(Device) ([]Pstates, Return)\n\tDeviceGetSupportedVgpus(Device) ([]VgpuTypeId, Return)\n\tDeviceGetTargetFanSpeed(Device, int) (int, Return)\n\tDeviceGetTemperature(Device, TemperatureSensors) (uint32, Return)\n\tDeviceGetTemperatureThreshold(Device, TemperatureThresholds) (uint32, Return)\n\tDeviceGetTemperatureV(Device) TemperatureHandler\n\tDeviceGetThermalSettings(Device, uint32) (GpuThermalSettings, Return)\n\tDeviceGetTopologyCommonAncestor(Device, Device) (GpuTopologyLevel, Return)\n\tDeviceGetTopologyNearestGpus(Device, GpuTopologyLevel) ([]Device, Return)\n\tDeviceGetTotalEccErrors(Device, MemoryErrorType, EccCounterType) (uint64, Return)\n\tDeviceGetTotalEnergyConsumption(Device) (uint64, Return)\n\tDeviceGetUUID(Device) (string, Return)\n\tDeviceGetUtilizationRates(Device) (Utilization, Return)\n\tDeviceGetVbiosVersion(Device) (string, Return)\n\tDeviceGetVgpuCapabilities(Device, DeviceVgpuCapability) (bool, Return)\n\tDeviceGetVgpuHeterogeneousMode(Device) (VgpuHeterogeneousMode, Return)\n\tDeviceGetVgpuInstancesUtilizationInfo(Device) (VgpuInstancesUtilizationInfo, Return)\n\tDeviceGetVgpuMetadata(Device) (VgpuPgpuMetadata, Return)\n\tDeviceGetVgpuProcessUtilization(Device, uint64) ([]VgpuProcessUtilizationSample, Return)\n\tDeviceGetVgpuProcessesUtilizationInfo(Device) (VgpuProcessesUtilizationInfo, Return)\n\tDeviceGetVgpuSchedulerCapabilities(Device) (VgpuSchedulerCapabilities, Return)\n\tDeviceGetVgpuSchedulerLog(Device) (VgpuSchedulerLog, Return)\n\tDeviceGetVgpuSchedulerState(Device) (VgpuSchedulerGetState, Return)\n\tDeviceGetVgpuTypeCreatablePlacements(Device, VgpuTypeId) (VgpuPlacementList, Return)\n\tDeviceGetVgpuTypeSupportedPlacements(Device, VgpuTypeId) (VgpuPlacementList, Return)\n\tDeviceGetVgpuUtilization(Device, uint64) (ValueType, []VgpuInstanceUtilizationSample, Return)\n\tDeviceGetViolationStatus(Device, PerfPolicyType) (ViolationTime, Return)\n\tDeviceGetVirtualizationMode(Device) (GpuVirtualizationMode, Return)\n\tDeviceIsMigDeviceHandle(Device) (bool, Return)\n\tDeviceModifyDrainState(*PciInfo, EnableState) Return\n\tDeviceOnSameBoard(Device, Device) (int, Return)\n\tDevicePowerSmoothingActivatePresetProfile(Device, *PowerSmoothingProfile) Return\n\tDevicePowerSmoothingSetState(Device, *PowerSmoothingState) Return\n\tDevicePowerSmoothingUpdatePresetProfileParam(Device, *PowerSmoothingProfile) Return\n\tDeviceQueryDrainState(*PciInfo) (EnableState, Return)\n\tDeviceReadWritePRM_v1(Device, *PRMTLV_v1) Return\n\tDeviceRegisterEvents(Device, uint64, EventSet) Return\n\tDeviceRemoveGpu(*PciInfo) Return\n\tDeviceRemoveGpu_v2(*PciInfo, DetachGpuState, PcieLinkState) Return\n\tDeviceResetApplicationsClocks(Device) Return\n\tDeviceResetGpuLockedClocks(Device) Return\n\tDeviceResetMemoryLockedClocks(Device) Return\n\tDeviceResetNvLinkErrorCounters(Device, int) Return\n\tDeviceResetNvLinkUtilizationCounter(Device, int, int) Return\n\tDeviceSetAPIRestriction(Device, RestrictedAPI, EnableState) Return\n\tDeviceSetAccountingMode(Device, EnableState) Return\n\tDeviceSetApplicationsClocks(Device, uint32, uint32) Return\n\tDeviceSetAutoBoostedClocksEnabled(Device, EnableState) Return\n\tDeviceSetClockOffsets(Device, ClockOffset) Return\n\tDeviceSetComputeMode(Device, ComputeMode) Return\n\tDeviceSetConfComputeUnprotectedMemSize(Device, uint64) Return\n\tDeviceSetCpuAffinity(Device) Return\n\tDeviceSetDefaultAutoBoostedClocksEnabled(Device, EnableState, uint32) Return\n\tDeviceSetDefaultFanSpeed_v2(Device, int) Return\n\tDeviceSetDramEncryptionMode(Device, *DramEncryptionInfo) Return\n\tDeviceSetDriverModel(Device, DriverModel, uint32) Return\n\tDeviceSetEccMode(Device, EnableState) Return\n\tDeviceSetFanControlPolicy(Device, int, FanControlPolicy) Return\n\tDeviceSetFanSpeed_v2(Device, int, int) Return\n\tDeviceSetGpcClkVfOffset(Device, int) Return\n\tDeviceSetGpuLockedClocks(Device, uint32, uint32) Return\n\tDeviceSetGpuOperationMode(Device, GpuOperationMode) Return\n\tDeviceSetMemClkVfOffset(Device, int) Return\n\tDeviceSetMemoryLockedClocks(Device, uint32, uint32) Return\n\tDeviceSetMigMode(Device, int) (Return, Return)\n\tDeviceSetNvLinkDeviceLowPowerThreshold(Device, *NvLinkPowerThres) Return\n\tDeviceSetNvLinkUtilizationControl(Device, int, int, *NvLinkUtilizationControl, bool) Return\n\tDeviceSetNvlinkBwMode(Device, *NvlinkSetBwMode) Return\n\tDeviceSetPersistenceMode(Device, EnableState) Return\n\tDeviceSetPowerManagementLimit(Device, uint32) Return\n\tDeviceSetPowerManagementLimit_v2(Device, *PowerValue_v2) Return\n\tDeviceSetTemperatureThreshold(Device, TemperatureThresholds, int) Return\n\tDeviceSetVgpuCapabilities(Device, DeviceVgpuCapability, EnableState) Return\n\tDeviceSetVgpuHeterogeneousMode(Device, VgpuHeterogeneousMode) Return\n\tDeviceSetVgpuSchedulerState(Device, *VgpuSchedulerSetState) Return\n\tDeviceSetVirtualizationMode(Device, GpuVirtualizationMode) Return\n\tDeviceValidateInforom(Device) Return\n\tDeviceWorkloadPowerProfileClearRequestedProfiles(Device, *WorkloadPowerProfileRequestedProfiles) Return\n\tDeviceWorkloadPowerProfileGetCurrentProfiles(Device) (WorkloadPowerProfileCurrentProfiles, Return)\n\tDeviceWorkloadPowerProfileGetProfilesInfo(Device) (WorkloadPowerProfileProfilesInfo, Return)\n\tDeviceWorkloadPowerProfileSetRequestedProfiles(Device, *WorkloadPowerProfileRequestedProfiles) Return\n\tErrorString(Return) string\n\tEventSetCreate() (EventSet, Return)\n\tEventSetFree(EventSet) Return\n\tEventSetWait(EventSet, uint32) (EventData, Return)\n\tExtensions() ExtendedInterface\n\tGetExcludedDeviceCount() (int, Return)\n\tGetExcludedDeviceInfoByIndex(int) (ExcludedDeviceInfo, Return)\n\tGetVgpuCompatibility(*VgpuMetadata, *VgpuPgpuMetadata) (VgpuPgpuCompatibility, Return)\n\tGetVgpuDriverCapabilities(VgpuDriverCapability) (bool, Return)\n\tGetVgpuVersion() (VgpuVersion, VgpuVersion, Return)\n\tGpmMetricsGet(*GpmMetricsGetType) Return\n\tGpmMetricsGetV(*GpmMetricsGetType) GpmMetricsGetVType\n\tGpmMigSampleGet(Device, int, GpmSample) Return\n\tGpmQueryDeviceSupport(Device) (GpmSupport, Return)\n\tGpmQueryDeviceSupportV(Device) GpmSupportV\n\tGpmQueryIfStreamingEnabled(Device) (uint32, Return)\n\tGpmSampleAlloc() (GpmSample, Return)\n\tGpmSampleFree(GpmSample) Return\n\tGpmSampleGet(Device, GpmSample) Return\n\tGpmSetStreamingEnabled(Device, uint32) Return\n\tGpuInstanceCreateComputeInstance(GpuInstance, *ComputeInstanceProfileInfo) (ComputeInstance, Return)\n\tGpuInstanceCreateComputeInstanceWithPlacement(GpuInstance, *ComputeInstanceProfileInfo, *ComputeInstancePlacement) (ComputeInstance, Return)\n\tGpuInstanceDestroy(GpuInstance) Return\n\tGpuInstanceGetActiveVgpus(GpuInstance) (ActiveVgpuInstanceInfo, Return)\n\tGpuInstanceGetComputeInstanceById(GpuInstance, int) (ComputeInstance, Return)\n\tGpuInstanceGetComputeInstancePossiblePlacements(GpuInstance, *ComputeInstanceProfileInfo) ([]ComputeInstancePlacement, Return)\n\tGpuInstanceGetComputeInstanceProfileInfo(GpuInstance, int, int) (ComputeInstanceProfileInfo, Return)\n\tGpuInstanceGetComputeInstanceProfileInfoV(GpuInstance, int, int) ComputeInstanceProfileInfoHandler\n\tGpuInstanceGetComputeInstanceRemainingCapacity(GpuInstance, *ComputeInstanceProfileInfo) (int, Return)\n\tGpuInstanceGetComputeInstances(GpuInstance, *ComputeInstanceProfileInfo) ([]ComputeInstance, Return)\n\tGpuInstanceGetCreatableVgpus(GpuInstance) (VgpuTypeIdInfo, Return)\n\tGpuInstanceGetInfo(GpuInstance) (GpuInstanceInfo, Return)\n\tGpuInstanceGetVgpuHeterogeneousMode(GpuInstance) (VgpuHeterogeneousMode, Return)\n\tGpuInstanceGetVgpuSchedulerLog(GpuInstance) (VgpuSchedulerLogInfo, Return)\n\tGpuInstanceGetVgpuSchedulerState(GpuInstance) (VgpuSchedulerStateInfo, Return)\n\tGpuInstanceGetVgpuTypeCreatablePlacements(GpuInstance) (VgpuCreatablePlacementInfo, Return)\n\tGpuInstanceSetVgpuHeterogeneousMode(GpuInstance, *VgpuHeterogeneousMode) Return\n\tGpuInstanceSetVgpuSchedulerState(GpuInstance, *VgpuSchedulerState) Return\n\tInit() Return\n\tInitWithFlags(uint32) Return\n\tSetVgpuVersion(*VgpuVersion) Return\n\tShutdown() Return\n\tSystemEventSetCreate(*SystemEventSetCreateRequest) Return\n\tSystemEventSetFree(*SystemEventSetFreeRequest) Return\n\tSystemEventSetWait(*SystemEventSetWaitRequest) Return\n\tSystemGetConfComputeCapabilities() (ConfComputeSystemCaps, Return)\n\tSystemGetConfComputeGpusReadyState() (uint32, Return)\n\tSystemGetConfComputeKeyRotationThresholdInfo() (ConfComputeGetKeyRotationThresholdInfo, Return)\n\tSystemGetConfComputeSettings() (SystemConfComputeSettings, Return)\n\tSystemGetConfComputeState() (ConfComputeSystemState, Return)\n\tSystemGetCudaDriverVersion() (int, Return)\n\tSystemGetCudaDriverVersion_v2() (int, Return)\n\tSystemGetDriverBranch() (SystemDriverBranchInfo, Return)\n\tSystemGetDriverVersion() (string, Return)\n\tSystemGetHicVersion() ([]HwbcEntry, Return)\n\tSystemGetNVMLVersion() (string, Return)\n\tSystemGetNvlinkBwMode() (uint32, Return)\n\tSystemGetProcessName(int) (string, Return)\n\tSystemGetTopologyGpuSet(int) ([]Device, Return)\n\tSystemRegisterEvents(*SystemRegisterEventRequest) Return\n\tSystemSetConfComputeGpusReadyState(uint32) Return\n\tSystemSetConfComputeKeyRotationThresholdInfo(ConfComputeSetKeyRotationThresholdInfo) Return\n\tSystemSetNvlinkBwMode(uint32) Return\n\tUnitGetCount() (int, Return)\n\tUnitGetDevices(Unit) ([]Device, Return)\n\tUnitGetFanSpeedInfo(Unit) (UnitFanSpeeds, Return)\n\tUnitGetHandleByIndex(int) (Unit, Return)\n\tUnitGetLedState(Unit) (LedState, Return)\n\tUnitGetPsuInfo(Unit) (PSUInfo, Return)\n\tUnitGetTemperature(Unit, int) (uint32, Return)\n\tUnitGetUnitInfo(Unit) (UnitInfo, Return)\n\tUnitSetLedState(Unit, LedColor) Return\n\tVgpuInstanceClearAccountingPids(VgpuInstance) Return\n\tVgpuInstanceGetAccountingMode(VgpuInstance) (EnableState, Return)\n\tVgpuInstanceGetAccountingPids(VgpuInstance) ([]int, Return)\n\tVgpuInstanceGetAccountingStats(VgpuInstance, int) (AccountingStats, Return)\n\tVgpuInstanceGetEccMode(VgpuInstance) (EnableState, Return)\n\tVgpuInstanceGetEncoderCapacity(VgpuInstance) (int, Return)\n\tVgpuInstanceGetEncoderSessions(VgpuInstance) (int, EncoderSessionInfo, Return)\n\tVgpuInstanceGetEncoderStats(VgpuInstance) (int, uint32, uint32, Return)\n\tVgpuInstanceGetFBCSessions(VgpuInstance) (int, FBCSessionInfo, Return)\n\tVgpuInstanceGetFBCStats(VgpuInstance) (FBCStats, Return)\n\tVgpuInstanceGetFbUsage(VgpuInstance) (uint64, Return)\n\tVgpuInstanceGetFrameRateLimit(VgpuInstance) (uint32, Return)\n\tVgpuInstanceGetGpuInstanceId(VgpuInstance) (int, Return)\n\tVgpuInstanceGetGpuPciId(VgpuInstance) (string, Return)\n\tVgpuInstanceGetLicenseInfo(VgpuInstance) (VgpuLicenseInfo, Return)\n\tVgpuInstanceGetLicenseStatus(VgpuInstance) (int, Return)\n\tVgpuInstanceGetMdevUUID(VgpuInstance) (string, Return)\n\tVgpuInstanceGetMetadata(VgpuInstance) (VgpuMetadata, Return)\n\tVgpuInstanceGetRuntimeStateSize(VgpuInstance) (VgpuRuntimeState, Return)\n\tVgpuInstanceGetType(VgpuInstance) (VgpuTypeId, Return)\n\tVgpuInstanceGetUUID(VgpuInstance) (string, Return)\n\tVgpuInstanceGetVmDriverVersion(VgpuInstance) (string, Return)\n\tVgpuInstanceGetVmID(VgpuInstance) (string, VgpuVmIdType, Return)\n\tVgpuInstanceSetEncoderCapacity(VgpuInstance, int) Return\n\tVgpuTypeGetBAR1Info(VgpuTypeId) (VgpuTypeBar1Info, Return)\n\tVgpuTypeGetCapabilities(VgpuTypeId, VgpuCapability) (bool, Return)\n\tVgpuTypeGetClass(VgpuTypeId) (string, Return)\n\tVgpuTypeGetDeviceID(VgpuTypeId) (uint64, uint64, Return)\n\tVgpuTypeGetFrameRateLimit(VgpuTypeId) (uint32, Return)\n\tVgpuTypeGetFramebufferSize(VgpuTypeId) (uint64, Return)\n\tVgpuTypeGetGpuInstanceProfileId(VgpuTypeId) (uint32, Return)\n\tVgpuTypeGetLicense(VgpuTypeId) (string, Return)\n\tVgpuTypeGetMaxInstances(Device, VgpuTypeId) (int, Return)\n\tVgpuTypeGetMaxInstancesPerGpuInstance(*VgpuTypeMaxInstance) Return\n\tVgpuTypeGetMaxInstancesPerVm(VgpuTypeId) (int, Return)\n\tVgpuTypeGetName(VgpuTypeId) (string, Return)\n\tVgpuTypeGetNumDisplayHeads(VgpuTypeId) (int, Return)\n\tVgpuTypeGetResolution(VgpuTypeId, int) (uint32, uint32, Return)\n}\n\n// Device represents the interface for the nvmlDevice type.\n//\n//go:generate moq -out mock/device.go -pkg mock . Device:Device\ntype Device interface {\n\tClearAccountingPids() Return\n\tClearCpuAffinity() Return\n\tClearEccErrorCounts(EccCounterType) Return\n\tClearFieldValues([]FieldValue) Return\n\tCreateGpuInstance(*GpuInstanceProfileInfo) (GpuInstance, Return)\n\tCreateGpuInstanceWithPlacement(*GpuInstanceProfileInfo, *GpuInstancePlacement) (GpuInstance, Return)\n\tFreezeNvLinkUtilizationCounter(int, int, EnableState) Return\n\tGetAPIRestriction(RestrictedAPI) (EnableState, Return)\n\tGetAccountingBufferSize() (int, Return)\n\tGetAccountingMode() (EnableState, Return)\n\tGetAccountingPids() ([]int, Return)\n\tGetAccountingStats(uint32) (AccountingStats, Return)\n\tGetActiveVgpus() ([]VgpuInstance, Return)\n\tGetAdaptiveClockInfoStatus() (uint32, Return)\n\tGetAddressingMode() (DeviceAddressingMode, Return)\n\tGetApplicationsClock(ClockType) (uint32, Return)\n\tGetArchitecture() (DeviceArchitecture, Return)\n\tGetAttributes() (DeviceAttributes, Return)\n\tGetAutoBoostedClocksEnabled() (EnableState, EnableState, Return)\n\tGetBAR1MemoryInfo() (BAR1Memory, Return)\n\tGetBoardId() (uint32, Return)\n\tGetBoardPartNumber() (string, Return)\n\tGetBrand() (BrandType, Return)\n\tGetBridgeChipInfo() (BridgeChipHierarchy, Return)\n\tGetBusType() (BusType, Return)\n\tGetC2cModeInfoV() C2cModeInfoHandler\n\tGetCapabilities() (DeviceCapabilities, Return)\n\tGetClkMonStatus() (ClkMonStatus, Return)\n\tGetClock(ClockType, ClockId) (uint32, Return)\n\tGetClockInfo(ClockType) (uint32, Return)\n\tGetClockOffsets() (ClockOffset, Return)\n\tGetComputeInstanceId() (int, Return)\n\tGetComputeMode() (ComputeMode, Return)\n\tGetComputeRunningProcesses() ([]ProcessInfo, Return)\n\tGetConfComputeGpuAttestationReport(*ConfComputeGpuAttestationReport) Return\n\tGetConfComputeGpuCertificate() (ConfComputeGpuCertificate, Return)\n\tGetConfComputeMemSizeInfo() (ConfComputeMemSizeInfo, Return)\n\tGetConfComputeProtectedMemoryUsage() (Memory, Return)\n\tGetCoolerInfo() (CoolerInfo, Return)\n\tGetCpuAffinity(int) ([]uint, Return)\n\tGetCpuAffinityWithinScope(int, AffinityScope) ([]uint, Return)\n\tGetCreatableVgpus() ([]VgpuTypeId, Return)\n\tGetCudaComputeCapability() (int, int, Return)\n\tGetCurrPcieLinkGeneration() (int, Return)\n\tGetCurrPcieLinkWidth() (int, Return)\n\tGetCurrentClockFreqs() (DeviceCurrentClockFreqs, Return)\n\tGetCurrentClocksEventReasons() (uint64, Return)\n\tGetCurrentClocksThrottleReasons() (uint64, Return)\n\tGetDecoderUtilization() (uint32, uint32, Return)\n\tGetDefaultApplicationsClock(ClockType) (uint32, Return)\n\tGetDefaultEccMode() (EnableState, Return)\n\tGetDetailedEccErrors(MemoryErrorType, EccCounterType) (EccErrorCounts, Return)\n\tGetDeviceHandleFromMigDeviceHandle() (Device, Return)\n\tGetDisplayActive() (EnableState, Return)\n\tGetDisplayMode() (EnableState, Return)\n\tGetDramEncryptionMode() (DramEncryptionInfo, DramEncryptionInfo, Return)\n\tGetDriverModel() (DriverModel, DriverModel, Return)\n\tGetDriverModel_v2() (DriverModel, DriverModel, Return)\n\tGetDynamicPstatesInfo() (GpuDynamicPstatesInfo, Return)\n\tGetEccMode() (EnableState, EnableState, Return)\n\tGetEncoderCapacity(EncoderType) (int, Return)\n\tGetEncoderSessions() ([]EncoderSessionInfo, Return)\n\tGetEncoderStats() (int, uint32, uint32, Return)\n\tGetEncoderUtilization() (uint32, uint32, Return)\n\tGetEnforcedPowerLimit() (uint32, Return)\n\tGetFBCSessions() ([]FBCSessionInfo, Return)\n\tGetFBCStats() (FBCStats, Return)\n\tGetFanControlPolicy_v2(int) (FanControlPolicy, Return)\n\tGetFanSpeed() (uint32, Return)\n\tGetFanSpeedRPM() (FanSpeedInfo, Return)\n\tGetFanSpeed_v2(int) (uint32, Return)\n\tGetFieldValues([]FieldValue) Return\n\tGetGpcClkMinMaxVfOffset() (int, int, Return)\n\tGetGpcClkVfOffset() (int, Return)\n\tGetGpuFabricInfo() (GpuFabricInfo, Return)\n\tGetGpuFabricInfoV() GpuFabricInfoHandler\n\tGetGpuInstanceById(int) (GpuInstance, Return)\n\tGetGpuInstanceId() (int, Return)\n\tGetGpuInstancePossiblePlacements(*GpuInstanceProfileInfo) ([]GpuInstancePlacement, Return)\n\tGetGpuInstanceProfileInfo(int) (GpuInstanceProfileInfo, Return)\n\tGetGpuInstanceProfileInfoByIdV(int) GpuInstanceProfileInfoByIdHandler\n\tGetGpuInstanceProfileInfoV(int) GpuInstanceProfileInfoHandler\n\tGetGpuInstanceRemainingCapacity(*GpuInstanceProfileInfo) (int, Return)\n\tGetGpuInstances(*GpuInstanceProfileInfo) ([]GpuInstance, Return)\n\tGetGpuMaxPcieLinkGeneration() (int, Return)\n\tGetGpuOperationMode() (GpuOperationMode, GpuOperationMode, Return)\n\tGetGraphicsRunningProcesses() ([]ProcessInfo, Return)\n\tGetGridLicensableFeatures() (GridLicensableFeatures, Return)\n\tGetGspFirmwareMode() (bool, bool, Return)\n\tGetGspFirmwareVersion() (string, Return)\n\tGetHostVgpuMode() (HostVgpuMode, Return)\n\tGetIndex() (int, Return)\n\tGetInforomConfigurationChecksum() (uint32, Return)\n\tGetInforomImageVersion() (string, Return)\n\tGetInforomVersion(InforomObject) (string, Return)\n\tGetIrqNum() (int, Return)\n\tGetJpgUtilization() (uint32, uint32, Return)\n\tGetLastBBXFlushTime() (uint64, uint, Return)\n\tGetMPSComputeRunningProcesses() ([]ProcessInfo, Return)\n\tGetMarginTemperature() (MarginTemperature, Return)\n\tGetMaxClockInfo(ClockType) (uint32, Return)\n\tGetMaxCustomerBoostClock(ClockType) (uint32, Return)\n\tGetMaxMigDeviceCount() (int, Return)\n\tGetMaxPcieLinkGeneration() (int, Return)\n\tGetMaxPcieLinkWidth() (int, Return)\n\tGetMemClkMinMaxVfOffset() (int, int, Return)\n\tGetMemClkVfOffset() (int, Return)\n\tGetMemoryAffinity(int, AffinityScope) ([]uint, Return)\n\tGetMemoryBusWidth() (uint32, Return)\n\tGetMemoryErrorCounter(MemoryErrorType, EccCounterType, MemoryLocation) (uint64, Return)\n\tGetMemoryInfo() (Memory, Return)\n\tGetMemoryInfo_v2() (Memory_v2, Return)\n\tGetMigDeviceHandleByIndex(int) (Device, Return)\n\tGetMigMode() (int, int, Return)\n\tGetMinMaxClockOfPState(ClockType, Pstates) (uint32, uint32, Return)\n\tGetMinMaxFanSpeed() (int, int, Return)\n\tGetMinorNumber() (int, Return)\n\tGetModuleId() (int, Return)\n\tGetMultiGpuBoard() (int, Return)\n\tGetName() (string, Return)\n\tGetNumFans() (int, Return)\n\tGetNumGpuCores() (int, Return)\n\tGetNumaNodeId() (int, Return)\n\tGetNvLinkCapability(int, NvLinkCapability) (uint32, Return)\n\tGetNvLinkErrorCounter(int, NvLinkErrorCounter) (uint64, Return)\n\tGetNvLinkInfo() NvLinkInfoHandler\n\tGetNvLinkRemoteDeviceType(int) (IntNvLinkDeviceType, Return)\n\tGetNvLinkRemotePciInfo(int) (PciInfo, Return)\n\tGetNvLinkState(int) (EnableState, Return)\n\tGetNvLinkUtilizationControl(int, int) (NvLinkUtilizationControl, Return)\n\tGetNvLinkUtilizationCounter(int, int) (uint64, uint64, Return)\n\tGetNvLinkVersion(int) (uint32, Return)\n\tGetNvlinkBwMode() (NvlinkGetBwMode, Return)\n\tGetNvlinkSupportedBwModes() (NvlinkSupportedBwModes, Return)\n\tGetOfaUtilization() (uint32, uint32, Return)\n\tGetP2PStatus(Device, GpuP2PCapsIndex) (GpuP2PStatus, Return)\n\tGetPciInfo() (PciInfo, Return)\n\tGetPciInfoExt() (PciInfoExt, Return)\n\tGetPcieLinkMaxSpeed() (uint32, Return)\n\tGetPcieReplayCounter() (int, Return)\n\tGetPcieSpeed() (int, Return)\n\tGetPcieThroughput(PcieUtilCounter) (uint32, Return)\n\tGetPdi() (Pdi, Return)\n\tGetPerformanceModes() (DevicePerfModes, Return)\n\tGetPerformanceState() (Pstates, Return)\n\tGetPersistenceMode() (EnableState, Return)\n\tGetPgpuMetadataString() (string, Return)\n\tGetPlatformInfo() (PlatformInfo, Return)\n\tGetPowerManagementDefaultLimit() (uint32, Return)\n\tGetPowerManagementLimit() (uint32, Return)\n\tGetPowerManagementLimitConstraints() (uint32, uint32, Return)\n\tGetPowerManagementMode() (EnableState, Return)\n\tGetPowerMizerMode_v1() (DevicePowerMizerModes_v1, Return)\n\tGetPowerSource() (PowerSource, Return)\n\tGetPowerState() (Pstates, Return)\n\tGetPowerUsage() (uint32, Return)\n\tGetProcessUtilization(uint64) ([]ProcessUtilizationSample, Return)\n\tGetProcessesUtilizationInfo() (ProcessesUtilizationInfo, Return)\n\tGetRemappedRows() (int, int, bool, bool, Return)\n\tGetRepairStatus() (RepairStatus, Return)\n\tGetRetiredPages(PageRetirementCause) ([]uint64, Return)\n\tGetRetiredPagesPendingStatus() (EnableState, Return)\n\tGetRetiredPages_v2(PageRetirementCause) ([]uint64, []uint64, Return)\n\tGetRowRemapperHistogram() (RowRemapperHistogramValues, Return)\n\tGetRunningProcessDetailList() (ProcessDetailList, Return)\n\tGetSamples(SamplingType, uint64) (ValueType, []Sample, Return)\n\tGetSerial() (string, Return)\n\tGetSramEccErrorStatus() (EccSramErrorStatus, Return)\n\tGetSramUniqueUncorrectedEccErrorCounts(*EccSramUniqueUncorrectedErrorCounts) Return\n\tGetSupportedClocksEventReasons() (uint64, Return)\n\tGetSupportedClocksThrottleReasons() (uint64, Return)\n\tGetSupportedEventTypes() (uint64, Return)\n\tGetSupportedGraphicsClocks(int) (int, uint32, Return)\n\tGetSupportedMemoryClocks() (int, uint32, Return)\n\tGetSupportedPerformanceStates() ([]Pstates, Return)\n\tGetSupportedVgpus() ([]VgpuTypeId, Return)\n\tGetTargetFanSpeed(int) (int, Return)\n\tGetTemperature(TemperatureSensors) (uint32, Return)\n\tGetTemperatureThreshold(TemperatureThresholds) (uint32, Return)\n\tGetTemperatureV() TemperatureHandler\n\tGetThermalSettings(uint32) (GpuThermalSettings, Return)\n\tGetTopologyCommonAncestor(Device) (GpuTopologyLevel, Return)\n\tGetTopologyNearestGpus(GpuTopologyLevel) ([]Device, Return)\n\tGetTotalEccErrors(MemoryErrorType, EccCounterType) (uint64, Return)\n\tGetTotalEnergyConsumption() (uint64, Return)\n\tGetUUID() (string, Return)\n\tGetUtilizationRates() (Utilization, Return)\n\tGetVbiosVersion() (string, Return)\n\tGetVgpuCapabilities(DeviceVgpuCapability) (bool, Return)\n\tGetVgpuHeterogeneousMode() (VgpuHeterogeneousMode, Return)\n\tGetVgpuInstancesUtilizationInfo() (VgpuInstancesUtilizationInfo, Return)\n\tGetVgpuMetadata() (VgpuPgpuMetadata, Return)\n\tGetVgpuProcessUtilization(uint64) ([]VgpuProcessUtilizationSample, Return)\n\tGetVgpuProcessesUtilizationInfo() (VgpuProcessesUtilizationInfo, Return)\n\tGetVgpuSchedulerCapabilities() (VgpuSchedulerCapabilities, Return)\n\tGetVgpuSchedulerLog() (VgpuSchedulerLog, Return)\n\tGetVgpuSchedulerState() (VgpuSchedulerGetState, Return)\n\tGetVgpuTypeCreatablePlacements(VgpuTypeId) (VgpuPlacementList, Return)\n\tGetVgpuTypeSupportedPlacements(VgpuTypeId) (VgpuPlacementList, Return)\n\tGetVgpuUtilization(uint64) (ValueType, []VgpuInstanceUtilizationSample, Return)\n\tGetViolationStatus(PerfPolicyType) (ViolationTime, Return)\n\tGetVirtualizationMode() (GpuVirtualizationMode, Return)\n\tGpmMigSampleGet(int, GpmSample) Return\n\tGpmQueryDeviceSupport() (GpmSupport, Return)\n\tGpmQueryDeviceSupportV() GpmSupportV\n\tGpmQueryIfStreamingEnabled() (uint32, Return)\n\tGpmSampleGet(GpmSample) Return\n\tGpmSetStreamingEnabled(uint32) Return\n\tIsMigDeviceHandle() (bool, Return)\n\tOnSameBoard(Device) (int, Return)\n\tPowerSmoothingActivatePresetProfile(*PowerSmoothingProfile) Return\n\tPowerSmoothingSetState(*PowerSmoothingState) Return\n\tPowerSmoothingUpdatePresetProfileParam(*PowerSmoothingProfile) Return\n\tReadWritePRM_v1(*PRMTLV_v1) Return\n\tRegisterEvents(uint64, EventSet) Return\n\tResetApplicationsClocks() Return\n\tResetGpuLockedClocks() Return\n\tResetMemoryLockedClocks() Return\n\tResetNvLinkErrorCounters(int) Return\n\tResetNvLinkUtilizationCounter(int, int) Return\n\tSetAPIRestriction(RestrictedAPI, EnableState) Return\n\tSetAccountingMode(EnableState) Return\n\tSetApplicationsClocks(uint32, uint32) Return\n\tSetAutoBoostedClocksEnabled(EnableState) Return\n\tSetClockOffsets(ClockOffset) Return\n\tSetComputeMode(ComputeMode) Return\n\tSetConfComputeUnprotectedMemSize(uint64) Return\n\tSetCpuAffinity() Return\n\tSetDefaultAutoBoostedClocksEnabled(EnableState, uint32) Return\n\tSetDefaultFanSpeed_v2(int) Return\n\tSetDramEncryptionMode(*DramEncryptionInfo) Return\n\tSetDriverModel(DriverModel, uint32) Return\n\tSetEccMode(EnableState) Return\n\tSetFanControlPolicy(int, FanControlPolicy) Return\n\tSetFanSpeed_v2(int, int) Return\n\tSetGpcClkVfOffset(int) Return\n\tSetGpuLockedClocks(uint32, uint32) Return\n\tSetGpuOperationMode(GpuOperationMode) Return\n\tSetMemClkVfOffset(int) Return\n\tSetMemoryLockedClocks(uint32, uint32) Return\n\tSetMigMode(int) (Return, Return)\n\tSetNvLinkDeviceLowPowerThreshold(*NvLinkPowerThres) Return\n\tSetNvLinkUtilizationControl(int, int, *NvLinkUtilizationControl, bool) Return\n\tSetNvlinkBwMode(*NvlinkSetBwMode) Return\n\tSetPersistenceMode(EnableState) Return\n\tSetPowerManagementLimit(uint32) Return\n\tSetPowerManagementLimit_v2(*PowerValue_v2) Return\n\tSetTemperatureThreshold(TemperatureThresholds, int) Return\n\tSetVgpuCapabilities(DeviceVgpuCapability, EnableState) Return\n\tSetVgpuHeterogeneousMode(VgpuHeterogeneousMode) Return\n\tSetVgpuSchedulerState(*VgpuSchedulerSetState) Return\n\tSetVirtualizationMode(GpuVirtualizationMode) Return\n\tValidateInforom() Return\n\tVgpuTypeGetMaxInstances(VgpuTypeId) (int, Return)\n\tWorkloadPowerProfileClearRequestedProfiles(*WorkloadPowerProfileRequestedProfiles) Return\n\tWorkloadPowerProfileGetCurrentProfiles() (WorkloadPowerProfileCurrentProfiles, Return)\n\tWorkloadPowerProfileGetProfilesInfo() (WorkloadPowerProfileProfilesInfo, Return)\n\tWorkloadPowerProfileSetRequestedProfiles(*WorkloadPowerProfileRequestedProfiles) Return\n}\n\n// GpuInstance represents the interface for the nvmlGpuInstance type.\n//\n//go:generate moq -out mock/gpuinstance.go -pkg mock . GpuInstance:GpuInstance\ntype GpuInstance interface {\n\tCreateComputeInstance(*ComputeInstanceProfileInfo) (ComputeInstance, Return)\n\tCreateComputeInstanceWithPlacement(*ComputeInstanceProfileInfo, *ComputeInstancePlacement) (ComputeInstance, Return)\n\tDestroy() Return\n\tGetActiveVgpus() (ActiveVgpuInstanceInfo, Return)\n\tGetComputeInstanceById(int) (ComputeInstance, Return)\n\tGetComputeInstancePossiblePlacements(*ComputeInstanceProfileInfo) ([]ComputeInstancePlacement, Return)\n\tGetComputeInstanceProfileInfo(int, int) (ComputeInstanceProfileInfo, Return)\n\tGetComputeInstanceProfileInfoV(int, int) ComputeInstanceProfileInfoHandler\n\tGetComputeInstanceRemainingCapacity(*ComputeInstanceProfileInfo) (int, Return)\n\tGetComputeInstances(*ComputeInstanceProfileInfo) ([]ComputeInstance, Return)\n\tGetCreatableVgpus() (VgpuTypeIdInfo, Return)\n\tGetInfo() (GpuInstanceInfo, Return)\n\tGetVgpuHeterogeneousMode() (VgpuHeterogeneousMode, Return)\n\tGetVgpuSchedulerLog() (VgpuSchedulerLogInfo, Return)\n\tGetVgpuSchedulerState() (VgpuSchedulerStateInfo, Return)\n\tGetVgpuTypeCreatablePlacements() (VgpuCreatablePlacementInfo, Return)\n\tSetVgpuHeterogeneousMode(*VgpuHeterogeneousMode) Return\n\tSetVgpuSchedulerState(*VgpuSchedulerState) Return\n}\n\n// ComputeInstance represents the interface for the nvmlComputeInstance type.\n//\n//go:generate moq -out mock/computeinstance.go -pkg mock . ComputeInstance:ComputeInstance\ntype ComputeInstance interface {\n\tDestroy() Return\n\tGetInfo() (ComputeInstanceInfo, Return)\n}\n\n// EventSet represents the interface for the nvmlEventSet type.\n//\n//go:generate moq -out mock/eventset.go -pkg mock . EventSet:EventSet\ntype EventSet interface {\n\tFree() Return\n\tWait(uint32) (EventData, Return)\n}\n\n// GpmSample represents the interface for the nvmlGpmSample type.\n//\n//go:generate moq -out mock/gpmsample.go -pkg mock . GpmSample:GpmSample\ntype GpmSample interface {\n\tFree() Return\n\tGet(Device) Return\n\tMigGet(Device, int) Return\n}\n\n// Unit represents the interface for the nvmlUnit type.\n//\n//go:generate moq -out mock/unit.go -pkg mock . Unit:Unit\ntype Unit interface {\n\tGetDevices() ([]Device, Return)\n\tGetFanSpeedInfo() (UnitFanSpeeds, Return)\n\tGetLedState() (LedState, Return)\n\tGetPsuInfo() (PSUInfo, Return)\n\tGetTemperature(int) (uint32, Return)\n\tGetUnitInfo() (UnitInfo, Return)\n\tSetLedState(LedColor) Return\n}\n\n// VgpuInstance represents the interface for the nvmlVgpuInstance type.\n//\n//go:generate moq -out mock/vgpuinstance.go -pkg mock . VgpuInstance:VgpuInstance\ntype VgpuInstance interface {\n\tClearAccountingPids() Return\n\tGetAccountingMode() (EnableState, Return)\n\tGetAccountingPids() ([]int, Return)\n\tGetAccountingStats(int) (AccountingStats, Return)\n\tGetEccMode() (EnableState, Return)\n\tGetEncoderCapacity() (int, Return)\n\tGetEncoderSessions() (int, EncoderSessionInfo, Return)\n\tGetEncoderStats() (int, uint32, uint32, Return)\n\tGetFBCSessions() (int, FBCSessionInfo, Return)\n\tGetFBCStats() (FBCStats, Return)\n\tGetFbUsage() (uint64, Return)\n\tGetFrameRateLimit() (uint32, Return)\n\tGetGpuInstanceId() (int, Return)\n\tGetGpuPciId() (string, Return)\n\tGetLicenseInfo() (VgpuLicenseInfo, Return)\n\tGetLicenseStatus() (int, Return)\n\tGetMdevUUID() (string, Return)\n\tGetMetadata() (VgpuMetadata, Return)\n\tGetRuntimeStateSize() (VgpuRuntimeState, Return)\n\tGetType() (VgpuTypeId, Return)\n\tGetUUID() (string, Return)\n\tGetVmDriverVersion() (string, Return)\n\tGetVmID() (string, VgpuVmIdType, Return)\n\tSetEncoderCapacity(int) Return\n}\n\n// VgpuTypeId represents the interface for the nvmlVgpuTypeId type.\n//\n//go:generate moq -out mock/vgputypeid.go -pkg mock . VgpuTypeId:VgpuTypeId\ntype VgpuTypeId interface {\n\tGetBAR1Info() (VgpuTypeBar1Info, Return)\n\tGetCapabilities(VgpuCapability) (bool, Return)\n\tGetClass() (string, Return)\n\tGetCreatablePlacements(Device) (VgpuPlacementList, Return)\n\tGetDeviceID() (uint64, uint64, Return)\n\tGetFrameRateLimit() (uint32, Return)\n\tGetFramebufferSize() (uint64, Return)\n\tGetGpuInstanceProfileId() (uint32, Return)\n\tGetLicense() (string, Return)\n\tGetMaxInstances(Device) (int, Return)\n\tGetMaxInstancesPerVm() (int, Return)\n\tGetName() (string, Return)\n\tGetNumDisplayHeads() (int, Return)\n\tGetResolution(int) (uint32, uint32, Return)\n\tGetSupportedPlacements(Device) (VgpuPlacementList, Return)\n}\n"
  },
  {
    "path": "vendor/github.com/containerd/log/.golangci.yml",
    "content": "linters:\n  enable:\n    - exportloopref # Checks for pointers to enclosing loop variables\n    - gofmt\n    - goimports\n    - gosec\n    - ineffassign\n    - misspell\n    - nolintlint\n    - revive\n    - staticcheck\n    - tenv # Detects using os.Setenv instead of t.Setenv since Go 1.17\n    - unconvert\n    - unused\n    - vet\n    - dupword # Checks for duplicate words in the source code\n  disable:\n    - errcheck\n\nrun:\n  timeout: 5m\n  skip-dirs:\n    - api\n    - cluster\n    - design\n    - docs\n    - docs/man\n    - releases\n    - reports\n    - test # e2e scripts\n"
  },
  {
    "path": "vendor/github.com/containerd/log/LICENSE",
    "content": "\n                                 Apache License\n                           Version 2.0, January 2004\n                        https://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   Copyright The containerd Authors\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       https://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "vendor/github.com/containerd/log/README.md",
    "content": "# log\n\nA Go package providing a common logging interface across containerd repositories and a way for clients to use and configure logging in containerd packages.\n\nThis package is not intended to be used as a standalone logging package outside of the containerd ecosystem and is intended as an interface wrapper around a logging implementation.\nIn the future this package may be replaced with a common go logging interface.\n\n## Project details\n\n**log** is a containerd sub-project, licensed under the [Apache 2.0 license](./LICENSE).\nAs a containerd sub-project, you will find the:\n * [Project governance](https://github.com/containerd/project/blob/main/GOVERNANCE.md),\n * [Maintainers](https://github.com/containerd/project/blob/main/MAINTAINERS),\n * and [Contributing guidelines](https://github.com/containerd/project/blob/main/CONTRIBUTING.md)\n\ninformation in our [`containerd/project`](https://github.com/containerd/project) repository.\n\n"
  },
  {
    "path": "vendor/github.com/containerd/log/context.go",
    "content": "/*\n   Copyright The containerd Authors.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\n// Package log provides types and functions related to logging, passing\n// loggers through a context, and attaching context to the logger.\n//\n// # Transitional types\n//\n// This package contains various types that are aliases for types in [logrus].\n// These aliases are intended for transitioning away from hard-coding logrus\n// as logging implementation. Consumers of this package are encouraged to use\n// the type-aliases from this package instead of directly using their logrus\n// equivalent.\n//\n// The intent is to replace these aliases with locally defined types and\n// interfaces once all consumers are no longer directly importing logrus\n// types.\n//\n// IMPORTANT: due to the transitional purpose of this package, it is not\n// guaranteed for the full logrus API to be provided in the future. As\n// outlined, these aliases are provided as a step to transition away from\n// a specific implementation which, as a result, exposes the full logrus API.\n// While no decisions have been made on the ultimate design and interface\n// provided by this package, we do not expect carrying \"less common\" features.\npackage log\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\t\"github.com/sirupsen/logrus\"\n)\n\n// G is a shorthand for [GetLogger].\n//\n// We may want to define this locally to a package to get package tagged log\n// messages.\nvar G = GetLogger\n\n// L is an alias for the standard logger.\nvar L = &Entry{\n\tLogger: logrus.StandardLogger(),\n\t// Default is three fields plus a little extra room.\n\tData: make(Fields, 6),\n}\n\ntype loggerKey struct{}\n\n// Fields type to pass to \"WithFields\".\ntype Fields = map[string]any\n\n// Entry is a logging entry. It contains all the fields passed with\n// [Entry.WithFields]. It's finally logged when Trace, Debug, Info, Warn,\n// Error, Fatal or Panic is called on it. These objects can be reused and\n// passed around as much as you wish to avoid field duplication.\n//\n// Entry is a transitional type, and currently an alias for [logrus.Entry].\ntype Entry = logrus.Entry\n\n// RFC3339NanoFixed is [time.RFC3339Nano] with nanoseconds padded using\n// zeros to ensure the formatted time is always the same number of\n// characters.\nconst RFC3339NanoFixed = \"2006-01-02T15:04:05.000000000Z07:00\"\n\n// Level is a logging level.\ntype Level = logrus.Level\n\n// Supported log levels.\nconst (\n\t// TraceLevel level. Designates finer-grained informational events\n\t// than [DebugLevel].\n\tTraceLevel Level = logrus.TraceLevel\n\n\t// DebugLevel level. Usually only enabled when debugging. Very verbose\n\t// logging.\n\tDebugLevel Level = logrus.DebugLevel\n\n\t// InfoLevel level. General operational entries about what's going on\n\t// inside the application.\n\tInfoLevel Level = logrus.InfoLevel\n\n\t// WarnLevel level. Non-critical entries that deserve eyes.\n\tWarnLevel Level = logrus.WarnLevel\n\n\t// ErrorLevel level. Logs errors that should definitely be noted.\n\t// Commonly used for hooks to send errors to an error tracking service.\n\tErrorLevel Level = logrus.ErrorLevel\n\n\t// FatalLevel level. Logs and then calls \"logger.Exit(1)\". It exits\n\t// even if the logging level is set to Panic.\n\tFatalLevel Level = logrus.FatalLevel\n\n\t// PanicLevel level. This is the highest level of severity. Logs and\n\t// then calls panic with the message passed to Debug, Info, ...\n\tPanicLevel Level = logrus.PanicLevel\n)\n\n// SetLevel sets log level globally. It returns an error if the given\n// level is not supported.\n//\n// level can be one of:\n//\n//   - \"trace\" ([TraceLevel])\n//   - \"debug\" ([DebugLevel])\n//   - \"info\" ([InfoLevel])\n//   - \"warn\" ([WarnLevel])\n//   - \"error\" ([ErrorLevel])\n//   - \"fatal\" ([FatalLevel])\n//   - \"panic\" ([PanicLevel])\nfunc SetLevel(level string) error {\n\tlvl, err := logrus.ParseLevel(level)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tL.Logger.SetLevel(lvl)\n\treturn nil\n}\n\n// GetLevel returns the current log level.\nfunc GetLevel() Level {\n\treturn L.Logger.GetLevel()\n}\n\n// OutputFormat specifies a log output format.\ntype OutputFormat string\n\n// Supported log output formats.\nconst (\n\t// TextFormat represents the text logging format.\n\tTextFormat OutputFormat = \"text\"\n\n\t// JSONFormat represents the JSON logging format.\n\tJSONFormat OutputFormat = \"json\"\n)\n\n// SetFormat sets the log output format ([TextFormat] or [JSONFormat]).\nfunc SetFormat(format OutputFormat) error {\n\tswitch format {\n\tcase TextFormat:\n\t\tL.Logger.SetFormatter(&logrus.TextFormatter{\n\t\t\tTimestampFormat: RFC3339NanoFixed,\n\t\t\tFullTimestamp:   true,\n\t\t})\n\t\treturn nil\n\tcase JSONFormat:\n\t\tL.Logger.SetFormatter(&logrus.JSONFormatter{\n\t\t\tTimestampFormat: RFC3339NanoFixed,\n\t\t})\n\t\treturn nil\n\tdefault:\n\t\treturn fmt.Errorf(\"unknown log format: %s\", format)\n\t}\n}\n\n// WithLogger returns a new context with the provided logger. Use in\n// combination with logger.WithField(s) for great effect.\nfunc WithLogger(ctx context.Context, logger *Entry) context.Context {\n\treturn context.WithValue(ctx, loggerKey{}, logger.WithContext(ctx))\n}\n\n// GetLogger retrieves the current logger from the context. If no logger is\n// available, the default logger is returned.\nfunc GetLogger(ctx context.Context) *Entry {\n\tif logger := ctx.Value(loggerKey{}); logger != nil {\n\t\treturn logger.(*Entry)\n\t}\n\treturn L.WithContext(ctx)\n}\n"
  },
  {
    "path": "vendor/github.com/containerd/nri/LICENSE",
    "content": "                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "vendor/github.com/containerd/nri/pkg/api/adjustment.go",
    "content": "/*\n   Copyright The containerd Authors.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\npackage api\n\nimport \"slices\"\n\n//\n// Notes:\n//   Adjustment of metadata that is stored in maps (labels and annotations)\n//   currently assumes that a single plugin will never do an add prior to a\n//   delete for any key. IOW, it is always assumed that if both a deletion\n//   and an addition/setting was recorded for a key then the final desired\n//   state is the addition. This seems like a reasonably safe assumption. A\n//   removal is usually done only to protect against triggering the conflict\n//   in the runtime when a plugin intends to touch a key which is known to\n//   have been put there or already modified by another plugin.\n//\n//   An alternative without this implicit ordering assumption would be to\n//   store the adjustment for such data as a sequence of add/del operations\n//   in a slice. At the moment that does not seem to be necessary.\n//\n\n// AddAnnotation records the addition of the annotation key=value.\nfunc (a *ContainerAdjustment) AddAnnotation(key, value string) {\n\ta.initAnnotations()\n\ta.Annotations[key] = value\n}\n\n// RemoveAnnotation records the removal of the annotation for the given key.\n// Normally it is an error for a plugin to try and alter an annotation\n// touched by another plugin. However, this is not an error if the plugin\n// removes that annotation prior to touching it.\nfunc (a *ContainerAdjustment) RemoveAnnotation(key string) {\n\ta.initAnnotations()\n\ta.Annotations[MarkForRemoval(key)] = \"\"\n}\n\n// AddMount records the addition of a mount to a container.\nfunc (a *ContainerAdjustment) AddMount(m *Mount) {\n\ta.Mounts = append(a.Mounts, m) // TODO: should we dup m here ?\n}\n\n// RemoveMount records the removal of a mount from a container.\n// Normally it is an error for a plugin to try and alter a mount\n// touched by another plugin. However, this is not an error if the\n// plugin removes that mount prior to touching it.\nfunc (a *ContainerAdjustment) RemoveMount(ContainerPath string) {\n\ta.Mounts = append(a.Mounts, &Mount{\n\t\tDestination: MarkForRemoval(ContainerPath),\n\t})\n}\n\n// AddEnv records the addition of an environment variable to a container.\nfunc (a *ContainerAdjustment) AddEnv(key, value string) {\n\ta.Env = append(a.Env, &KeyValue{\n\t\tKey:   key,\n\t\tValue: value,\n\t})\n}\n\n// RemoveEnv records the removal of an environment variable from a container.\n// Normally it is an error for a plugin to try and alter an environment\n// variable touched by another container. However, this is not an error if\n// the plugin removes that variable prior to touching it.\nfunc (a *ContainerAdjustment) RemoveEnv(key string) {\n\ta.Env = append(a.Env, &KeyValue{\n\t\tKey: MarkForRemoval(key),\n\t})\n}\n\n// SetArgs overrides the container command with the given arguments.\nfunc (a *ContainerAdjustment) SetArgs(args []string) {\n\ta.Args = slices.Clone(args)\n}\n\n// UpdateArgs overrides the container command with the given arguments.\n// It won't fail if another plugin has already set the command line.\nfunc (a *ContainerAdjustment) UpdateArgs(args []string) {\n\ta.Args = append([]string{\"\"}, args...)\n}\n\n// AddHooks records the addition of the given hooks to a container.\nfunc (a *ContainerAdjustment) AddHooks(h *Hooks) {\n\ta.initHooks()\n\tif h.Prestart != nil {\n\t\ta.Hooks.Prestart = append(a.Hooks.Prestart, h.Prestart...)\n\t}\n\tif h.CreateRuntime != nil {\n\t\ta.Hooks.CreateRuntime = append(a.Hooks.CreateRuntime, h.CreateRuntime...)\n\t}\n\tif h.CreateContainer != nil {\n\t\ta.Hooks.CreateContainer = append(a.Hooks.CreateContainer, h.CreateContainer...)\n\t}\n\tif h.StartContainer != nil {\n\t\ta.Hooks.StartContainer = append(a.Hooks.StartContainer, h.StartContainer...)\n\t}\n\tif h.Poststart != nil {\n\t\ta.Hooks.Poststart = append(a.Hooks.Poststart, h.Poststart...)\n\t}\n\tif h.Poststop != nil {\n\t\ta.Hooks.Poststop = append(a.Hooks.Poststop, h.Poststop...)\n\t}\n}\n\n// AddRlimit records the addition of rlimit (POSIX resource limits) to a container.\nfunc (a *ContainerAdjustment) AddRlimit(typ string, hard, soft uint64) {\n\ta.initRlimits()\n\ta.Rlimits = append(a.Rlimits, &POSIXRlimit{\n\t\tType: typ,\n\t\tHard: hard,\n\t\tSoft: soft,\n\t})\n}\n\n// AddDevice records the addition of the given device to a container.\nfunc (a *ContainerAdjustment) AddDevice(d *LinuxDevice) {\n\ta.initLinux()\n\ta.Linux.Devices = append(a.Linux.Devices, d) // TODO: should we dup d here ?\n}\n\n// RemoveDevice records the removal of a device from a container.\n// Normally it is an error for a plugin to try and alter an device\n// touched by another container. However, this is not an error if\n// the plugin removes that device prior to touching it.\nfunc (a *ContainerAdjustment) RemoveDevice(path string) {\n\ta.initLinux()\n\ta.Linux.Devices = append(a.Linux.Devices, &LinuxDevice{\n\t\tPath: MarkForRemoval(path),\n\t})\n}\n\n// AddCDIDevice records the addition of the given CDI device to a container.\nfunc (a *ContainerAdjustment) AddCDIDevice(d *CDIDevice) {\n\ta.CDIDevices = append(a.CDIDevices, d) // TODO: should we dup d here ?\n}\n\n// AddOrReplaceNamespace records the addition or replacement of the given namespace to a container.\nfunc (a *ContainerAdjustment) AddOrReplaceNamespace(n *LinuxNamespace) {\n\ta.initLinuxNamespaces()\n\ta.Linux.Namespaces = append(a.Linux.Namespaces, n) // TODO: should we dup n here ?\n}\n\n// RemoveNamespace records the removal of the given namespace from a container.\nfunc (a *ContainerAdjustment) RemoveNamespace(n *LinuxNamespace) {\n\ta.initLinuxNamespaces()\n\ta.Linux.Namespaces = append(a.Linux.Namespaces, &LinuxNamespace{\n\t\tType: MarkForRemoval(n.Type),\n\t})\n}\n\n// AddLinuxNetDevice records the addition of the given network device to a container.\nfunc (a *ContainerAdjustment) AddLinuxNetDevice(hostDev string, d *LinuxNetDevice) {\n\tif d == nil {\n\t\treturn\n\t}\n\ta.initLinuxNetDevices()\n\ta.Linux.NetDevices[hostDev] = d\n}\n\n// RemoveLinuxNetDevice records the removal of a network device from a container.\n// Normally it is an error for a plugin to try and alter a network device\n// touched by another container. However, this is not an error if\n// the plugin removes that device prior to touching it.\nfunc (a *ContainerAdjustment) RemoveLinuxNetDevice(hostDev string) {\n\ta.initLinuxNetDevices()\n\ta.Linux.NetDevices[MarkForRemoval(hostDev)] = nil\n}\n\n// SetLinuxMemoryLimit records setting the memory limit for a container.\nfunc (a *ContainerAdjustment) SetLinuxMemoryLimit(value int64) {\n\ta.initLinuxResourcesMemory()\n\ta.Linux.Resources.Memory.Limit = Int64(value)\n}\n\n// SetLinuxMemoryReservation records setting the memory reservation for a container.\nfunc (a *ContainerAdjustment) SetLinuxMemoryReservation(value int64) {\n\ta.initLinuxResourcesMemory()\n\ta.Linux.Resources.Memory.Reservation = Int64(value)\n}\n\n// SetLinuxMemorySwap records records setting the memory swap limit for a container.\nfunc (a *ContainerAdjustment) SetLinuxMemorySwap(value int64) {\n\ta.initLinuxResourcesMemory()\n\ta.Linux.Resources.Memory.Swap = Int64(value)\n}\n\n// SetLinuxMemoryKernel records setting the memory kernel limit for a container.\nfunc (a *ContainerAdjustment) SetLinuxMemoryKernel(value int64) {\n\ta.initLinuxResourcesMemory()\n\ta.Linux.Resources.Memory.Kernel = Int64(value)\n}\n\n// SetLinuxMemoryKernelTCP records setting the memory kernel TCP limit for a container.\nfunc (a *ContainerAdjustment) SetLinuxMemoryKernelTCP(value int64) {\n\ta.initLinuxResourcesMemory()\n\ta.Linux.Resources.Memory.KernelTcp = Int64(value)\n}\n\n// SetLinuxMemorySwappiness records setting the memory swappiness for a container.\nfunc (a *ContainerAdjustment) SetLinuxMemorySwappiness(value uint64) {\n\ta.initLinuxResourcesMemory()\n\ta.Linux.Resources.Memory.Swappiness = UInt64(value)\n}\n\n// SetLinuxMemoryDisableOomKiller records disabling the OOM killer for a container.\nfunc (a *ContainerAdjustment) SetLinuxMemoryDisableOomKiller() {\n\ta.initLinuxResourcesMemory()\n\ta.Linux.Resources.Memory.DisableOomKiller = Bool(true)\n}\n\n// SetLinuxMemoryUseHierarchy records enabling hierarchical memory accounting for a container.\nfunc (a *ContainerAdjustment) SetLinuxMemoryUseHierarchy() {\n\ta.initLinuxResourcesMemory()\n\ta.Linux.Resources.Memory.UseHierarchy = Bool(true)\n}\n\n// SetLinuxCPUShares records setting the scheduler's CPU shares for a container.\nfunc (a *ContainerAdjustment) SetLinuxCPUShares(value uint64) {\n\ta.initLinuxResourcesCPU()\n\ta.Linux.Resources.Cpu.Shares = UInt64(value)\n}\n\n// SetLinuxCPUQuota records setting the scheduler's CPU quota for a container.\nfunc (a *ContainerAdjustment) SetLinuxCPUQuota(value int64) {\n\ta.initLinuxResourcesCPU()\n\ta.Linux.Resources.Cpu.Quota = Int64(value)\n}\n\n// SetLinuxCPUPeriod records setting the scheduler's CPU period for a container.\nfunc (a *ContainerAdjustment) SetLinuxCPUPeriod(value int64) {\n\ta.initLinuxResourcesCPU()\n\ta.Linux.Resources.Cpu.Period = UInt64(value)\n}\n\n// SetLinuxCPURealtimeRuntime records setting the scheduler's realtime runtime for a container.\nfunc (a *ContainerAdjustment) SetLinuxCPURealtimeRuntime(value int64) {\n\ta.initLinuxResourcesCPU()\n\ta.Linux.Resources.Cpu.RealtimeRuntime = Int64(value)\n}\n\n// SetLinuxCPURealtimePeriod records setting the scheduler's realtime period for a container.\nfunc (a *ContainerAdjustment) SetLinuxCPURealtimePeriod(value uint64) {\n\ta.initLinuxResourcesCPU()\n\ta.Linux.Resources.Cpu.RealtimePeriod = UInt64(value)\n}\n\n// SetLinuxCPUSetCPUs records setting the cpuset CPUs for a container.\nfunc (a *ContainerAdjustment) SetLinuxCPUSetCPUs(value string) {\n\ta.initLinuxResourcesCPU()\n\ta.Linux.Resources.Cpu.Cpus = value\n}\n\n// SetLinuxCPUSetMems records setting the cpuset memory for a container.\nfunc (a *ContainerAdjustment) SetLinuxCPUSetMems(value string) {\n\ta.initLinuxResourcesCPU()\n\ta.Linux.Resources.Cpu.Mems = value\n}\n\n// SetLinuxPidLimits records setting the pid max number for a container.\nfunc (a *ContainerAdjustment) SetLinuxPidLimits(value int64) {\n\ta.initLinuxResourcesPids()\n\ta.Linux.Resources.Pids.Limit = value\n}\n\n// AddLinuxHugepageLimit records adding a hugepage limit for a container.\nfunc (a *ContainerAdjustment) AddLinuxHugepageLimit(pageSize string, value uint64) {\n\ta.initLinuxResources()\n\ta.Linux.Resources.HugepageLimits = append(a.Linux.Resources.HugepageLimits,\n\t\t&HugepageLimit{\n\t\t\tPageSize: pageSize,\n\t\t\tLimit:    value,\n\t\t})\n}\n\n// SetLinuxBlockIOClass records setting the Block I/O class for a container.\nfunc (a *ContainerAdjustment) SetLinuxBlockIOClass(value string) {\n\ta.initLinuxResources()\n\ta.Linux.Resources.BlockioClass = String(value)\n}\n\n// SetLinuxRDTClass records setting the RDT class for a container.\nfunc (a *ContainerAdjustment) SetLinuxRDTClass(value string) {\n\ta.initLinuxResources()\n\ta.Linux.Resources.RdtClass = String(value)\n}\n\n// SetLinuxRDTClosID records setting the RDT CLOS id for a container.\nfunc (a *ContainerAdjustment) SetLinuxRDTClosID(value string) {\n\ta.initLinuxRdt()\n\ta.Linux.Rdt.ClosId = String(value)\n}\n\n// SetLinuxRDTSchemata records setting the RDT schemata for a container.\nfunc (a *ContainerAdjustment) SetLinuxRDTSchemata(value []string) {\n\ta.initLinuxRdt()\n\ta.Linux.Rdt.Schemata = RepeatedString(value)\n}\n\n// SetLinuxRDTEnableMonitoring records enabling RDT monitoring for a container.\nfunc (a *ContainerAdjustment) SetLinuxRDTEnableMonitoring(value bool) {\n\ta.initLinuxRdt()\n\ta.Linux.Rdt.EnableMonitoring = Bool(value)\n}\n\n// RemoveLinuxRDT records the removal of the RDT configuration.\nfunc (a *ContainerAdjustment) RemoveLinuxRDT() {\n\ta.initLinuxRdt()\n\ta.Linux.Rdt.Remove = true\n}\n\n// AddLinuxUnified sets a cgroupv2 unified resource.\nfunc (a *ContainerAdjustment) AddLinuxUnified(key, value string) {\n\ta.initLinuxResourcesUnified()\n\ta.Linux.Resources.Unified[key] = value\n}\n\n// SetLinuxCgroupsPath records setting the cgroups path for a container.\nfunc (a *ContainerAdjustment) SetLinuxCgroupsPath(value string) {\n\ta.initLinux()\n\ta.Linux.CgroupsPath = value\n}\n\n// SetLinuxOomScoreAdj records setting the kernel's Out-Of-Memory (OOM) killer score for a container.\nfunc (a *ContainerAdjustment) SetLinuxOomScoreAdj(value *int) {\n\ta.initLinux()\n\ta.Linux.OomScoreAdj = Int(value) // using Int(value) from ./options.go to optionally allocate a pointer to normalized copy of value\n}\n\n// SetLinuxIOPriority records setting the I/O priority for a container.\nfunc (a *ContainerAdjustment) SetLinuxIOPriority(ioprio *LinuxIOPriority) {\n\ta.initLinux()\n\ta.Linux.IoPriority = ioprio\n}\n\n// SetLinuxSeccompPolicy overrides the container seccomp policy with the given arguments.\nfunc (a *ContainerAdjustment) SetLinuxSeccompPolicy(seccomp *LinuxSeccomp) {\n\ta.initLinux()\n\ta.Linux.SeccompPolicy = seccomp\n}\n\n// SetLinuxSysctl records setting a sysctl for a container.\nfunc (a *ContainerAdjustment) SetLinuxSysctl(key, value string) {\n\ta.initLinux()\n\tif a.Linux.Sysctl == nil {\n\t\ta.Linux.Sysctl = make(map[string]string)\n\t}\n\ta.Linux.Sysctl[key] = value\n}\n\n// SetLinuxScheduler records setting the Linux scheduler attributes for a container.\nfunc (a *ContainerAdjustment) SetLinuxScheduler(sch *LinuxScheduler) {\n\ta.initLinux()\n\ta.Linux.Scheduler = sch\n}\n\n//\n// Initializing a container adjustment and container update.\n//\n\nfunc (a *ContainerAdjustment) initAnnotations() {\n\tif a.Annotations == nil {\n\t\ta.Annotations = make(map[string]string)\n\t}\n}\n\nfunc (a *ContainerAdjustment) initHooks() {\n\tif a.Hooks == nil {\n\t\ta.Hooks = &Hooks{}\n\t}\n}\n\nfunc (a *ContainerAdjustment) initRlimits() {\n\tif a.Rlimits == nil {\n\t\ta.Rlimits = []*POSIXRlimit{}\n\t}\n}\n\nfunc (a *ContainerAdjustment) initLinux() {\n\tif a.Linux == nil {\n\t\ta.Linux = &LinuxContainerAdjustment{}\n\t}\n}\n\nfunc (a *ContainerAdjustment) initLinuxNamespaces() {\n\ta.initLinux()\n\tif a.Linux.Namespaces == nil {\n\t\ta.Linux.Namespaces = []*LinuxNamespace{}\n\t}\n}\n\nfunc (a *ContainerAdjustment) initLinuxResources() {\n\ta.initLinux()\n\tif a.Linux.Resources == nil {\n\t\ta.Linux.Resources = &LinuxResources{}\n\t}\n}\n\nfunc (a *ContainerAdjustment) initLinuxResourcesMemory() {\n\ta.initLinuxResources()\n\tif a.Linux.Resources.Memory == nil {\n\t\ta.Linux.Resources.Memory = &LinuxMemory{}\n\t}\n}\n\nfunc (a *ContainerAdjustment) initLinuxResourcesCPU() {\n\ta.initLinuxResources()\n\tif a.Linux.Resources.Cpu == nil {\n\t\ta.Linux.Resources.Cpu = &LinuxCPU{}\n\t}\n}\n\nfunc (a *ContainerAdjustment) initLinuxResourcesPids() {\n\ta.initLinuxResources()\n\tif a.Linux.Resources.Pids == nil {\n\t\ta.Linux.Resources.Pids = &LinuxPids{}\n\t}\n}\n\nfunc (a *ContainerAdjustment) initLinuxResourcesUnified() {\n\ta.initLinuxResources()\n\tif a.Linux.Resources.Unified == nil {\n\t\ta.Linux.Resources.Unified = make(map[string]string)\n\t}\n}\n\nfunc (a *ContainerAdjustment) initLinuxNetDevices() {\n\ta.initLinux()\n\tif a.Linux.NetDevices == nil {\n\t\ta.Linux.NetDevices = make(map[string]*LinuxNetDevice)\n\t}\n}\n\nfunc (a *ContainerAdjustment) initLinuxRdt() {\n\ta.initLinux()\n\tif a.Linux.Rdt == nil {\n\t\ta.Linux.Rdt = &LinuxRdt{}\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/containerd/nri/pkg/api/api.pb.go",
    "content": "//\n//Copyright The containerd Authors.\n//\n//Licensed under the Apache License, Version 2.0 (the \"License\");\n//you may not use this file except in compliance with the License.\n//You may obtain a copy of the License at\n//\n//http://www.apache.org/licenses/LICENSE-2.0\n//\n//Unless required by applicable law or agreed to in writing, software\n//distributed under the License is distributed on an \"AS IS\" BASIS,\n//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n//See the License for the specific language governing permissions and\n//limitations under the License.\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.34.1\n// \tprotoc        v3.20.1\n// source: pkg/api/api.proto\n\npackage api\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tsync \"sync\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Events that plugins can subscribe to in ConfigureResponse.\ntype Event int32\n\nconst (\n\tEvent_UNKNOWN                       Event = 0\n\tEvent_RUN_POD_SANDBOX               Event = 1\n\tEvent_STOP_POD_SANDBOX              Event = 2\n\tEvent_REMOVE_POD_SANDBOX            Event = 3\n\tEvent_CREATE_CONTAINER              Event = 4\n\tEvent_POST_CREATE_CONTAINER         Event = 5\n\tEvent_START_CONTAINER               Event = 6\n\tEvent_POST_START_CONTAINER          Event = 7\n\tEvent_UPDATE_CONTAINER              Event = 8\n\tEvent_POST_UPDATE_CONTAINER         Event = 9\n\tEvent_STOP_CONTAINER                Event = 10\n\tEvent_REMOVE_CONTAINER              Event = 11\n\tEvent_UPDATE_POD_SANDBOX            Event = 12\n\tEvent_POST_UPDATE_POD_SANDBOX       Event = 13\n\tEvent_VALIDATE_CONTAINER_ADJUSTMENT Event = 14\n\tEvent_LAST                          Event = 15\n)\n\n// Enum value maps for Event.\nvar (\n\tEvent_name = map[int32]string{\n\t\t0:  \"UNKNOWN\",\n\t\t1:  \"RUN_POD_SANDBOX\",\n\t\t2:  \"STOP_POD_SANDBOX\",\n\t\t3:  \"REMOVE_POD_SANDBOX\",\n\t\t4:  \"CREATE_CONTAINER\",\n\t\t5:  \"POST_CREATE_CONTAINER\",\n\t\t6:  \"START_CONTAINER\",\n\t\t7:  \"POST_START_CONTAINER\",\n\t\t8:  \"UPDATE_CONTAINER\",\n\t\t9:  \"POST_UPDATE_CONTAINER\",\n\t\t10: \"STOP_CONTAINER\",\n\t\t11: \"REMOVE_CONTAINER\",\n\t\t12: \"UPDATE_POD_SANDBOX\",\n\t\t13: \"POST_UPDATE_POD_SANDBOX\",\n\t\t14: \"VALIDATE_CONTAINER_ADJUSTMENT\",\n\t\t15: \"LAST\",\n\t}\n\tEvent_value = map[string]int32{\n\t\t\"UNKNOWN\":                       0,\n\t\t\"RUN_POD_SANDBOX\":               1,\n\t\t\"STOP_POD_SANDBOX\":              2,\n\t\t\"REMOVE_POD_SANDBOX\":            3,\n\t\t\"CREATE_CONTAINER\":              4,\n\t\t\"POST_CREATE_CONTAINER\":         5,\n\t\t\"START_CONTAINER\":               6,\n\t\t\"POST_START_CONTAINER\":          7,\n\t\t\"UPDATE_CONTAINER\":              8,\n\t\t\"POST_UPDATE_CONTAINER\":         9,\n\t\t\"STOP_CONTAINER\":                10,\n\t\t\"REMOVE_CONTAINER\":              11,\n\t\t\"UPDATE_POD_SANDBOX\":            12,\n\t\t\"POST_UPDATE_POD_SANDBOX\":       13,\n\t\t\"VALIDATE_CONTAINER_ADJUSTMENT\": 14,\n\t\t\"LAST\":                          15,\n\t}\n)\n\nfunc (x Event) Enum() *Event {\n\tp := new(Event)\n\t*p = x\n\treturn p\n}\n\nfunc (x Event) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (Event) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_pkg_api_api_proto_enumTypes[0].Descriptor()\n}\n\nfunc (Event) Type() protoreflect.EnumType {\n\treturn &file_pkg_api_api_proto_enumTypes[0]\n}\n\nfunc (x Event) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use Event.Descriptor instead.\nfunc (Event) EnumDescriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{0}\n}\n\n// Possible container states.\ntype ContainerState int32\n\nconst (\n\tContainerState_CONTAINER_UNKNOWN ContainerState = 0\n\tContainerState_CONTAINER_CREATED ContainerState = 1\n\tContainerState_CONTAINER_PAUSED  ContainerState = 2 // is this useful/necessary ?\n\tContainerState_CONTAINER_RUNNING ContainerState = 3\n\tContainerState_CONTAINER_STOPPED ContainerState = 4\n)\n\n// Enum value maps for ContainerState.\nvar (\n\tContainerState_name = map[int32]string{\n\t\t0: \"CONTAINER_UNKNOWN\",\n\t\t1: \"CONTAINER_CREATED\",\n\t\t2: \"CONTAINER_PAUSED\",\n\t\t3: \"CONTAINER_RUNNING\",\n\t\t4: \"CONTAINER_STOPPED\",\n\t}\n\tContainerState_value = map[string]int32{\n\t\t\"CONTAINER_UNKNOWN\": 0,\n\t\t\"CONTAINER_CREATED\": 1,\n\t\t\"CONTAINER_PAUSED\":  2,\n\t\t\"CONTAINER_RUNNING\": 3,\n\t\t\"CONTAINER_STOPPED\": 4,\n\t}\n)\n\nfunc (x ContainerState) Enum() *ContainerState {\n\tp := new(ContainerState)\n\t*p = x\n\treturn p\n}\n\nfunc (x ContainerState) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (ContainerState) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_pkg_api_api_proto_enumTypes[1].Descriptor()\n}\n\nfunc (ContainerState) Type() protoreflect.EnumType {\n\treturn &file_pkg_api_api_proto_enumTypes[1]\n}\n\nfunc (x ContainerState) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use ContainerState.Descriptor instead.\nfunc (ContainerState) EnumDescriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{1}\n}\n\ntype IOPrioClass int32\n\nconst (\n\tIOPrioClass_IOPRIO_CLASS_NONE IOPrioClass = 0\n\tIOPrioClass_IOPRIO_CLASS_RT   IOPrioClass = 1\n\tIOPrioClass_IOPRIO_CLASS_BE   IOPrioClass = 2\n\tIOPrioClass_IOPRIO_CLASS_IDLE IOPrioClass = 3\n)\n\n// Enum value maps for IOPrioClass.\nvar (\n\tIOPrioClass_name = map[int32]string{\n\t\t0: \"IOPRIO_CLASS_NONE\",\n\t\t1: \"IOPRIO_CLASS_RT\",\n\t\t2: \"IOPRIO_CLASS_BE\",\n\t\t3: \"IOPRIO_CLASS_IDLE\",\n\t}\n\tIOPrioClass_value = map[string]int32{\n\t\t\"IOPRIO_CLASS_NONE\": 0,\n\t\t\"IOPRIO_CLASS_RT\":   1,\n\t\t\"IOPRIO_CLASS_BE\":   2,\n\t\t\"IOPRIO_CLASS_IDLE\": 3,\n\t}\n)\n\nfunc (x IOPrioClass) Enum() *IOPrioClass {\n\tp := new(IOPrioClass)\n\t*p = x\n\treturn p\n}\n\nfunc (x IOPrioClass) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (IOPrioClass) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_pkg_api_api_proto_enumTypes[2].Descriptor()\n}\n\nfunc (IOPrioClass) Type() protoreflect.EnumType {\n\treturn &file_pkg_api_api_proto_enumTypes[2]\n}\n\nfunc (x IOPrioClass) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use IOPrioClass.Descriptor instead.\nfunc (IOPrioClass) EnumDescriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{2}\n}\n\n// Linux scheduling policies.\ntype LinuxSchedulerPolicy int32\n\nconst (\n\tLinuxSchedulerPolicy_SCHED_NONE     LinuxSchedulerPolicy = 0\n\tLinuxSchedulerPolicy_SCHED_OTHER    LinuxSchedulerPolicy = 1\n\tLinuxSchedulerPolicy_SCHED_FIFO     LinuxSchedulerPolicy = 2\n\tLinuxSchedulerPolicy_SCHED_RR       LinuxSchedulerPolicy = 3\n\tLinuxSchedulerPolicy_SCHED_BATCH    LinuxSchedulerPolicy = 4\n\tLinuxSchedulerPolicy_SCHED_ISO      LinuxSchedulerPolicy = 5\n\tLinuxSchedulerPolicy_SCHED_IDLE     LinuxSchedulerPolicy = 6\n\tLinuxSchedulerPolicy_SCHED_DEADLINE LinuxSchedulerPolicy = 7\n)\n\n// Enum value maps for LinuxSchedulerPolicy.\nvar (\n\tLinuxSchedulerPolicy_name = map[int32]string{\n\t\t0: \"SCHED_NONE\",\n\t\t1: \"SCHED_OTHER\",\n\t\t2: \"SCHED_FIFO\",\n\t\t3: \"SCHED_RR\",\n\t\t4: \"SCHED_BATCH\",\n\t\t5: \"SCHED_ISO\",\n\t\t6: \"SCHED_IDLE\",\n\t\t7: \"SCHED_DEADLINE\",\n\t}\n\tLinuxSchedulerPolicy_value = map[string]int32{\n\t\t\"SCHED_NONE\":     0,\n\t\t\"SCHED_OTHER\":    1,\n\t\t\"SCHED_FIFO\":     2,\n\t\t\"SCHED_RR\":       3,\n\t\t\"SCHED_BATCH\":    4,\n\t\t\"SCHED_ISO\":      5,\n\t\t\"SCHED_IDLE\":     6,\n\t\t\"SCHED_DEADLINE\": 7,\n\t}\n)\n\nfunc (x LinuxSchedulerPolicy) Enum() *LinuxSchedulerPolicy {\n\tp := new(LinuxSchedulerPolicy)\n\t*p = x\n\treturn p\n}\n\nfunc (x LinuxSchedulerPolicy) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (LinuxSchedulerPolicy) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_pkg_api_api_proto_enumTypes[3].Descriptor()\n}\n\nfunc (LinuxSchedulerPolicy) Type() protoreflect.EnumType {\n\treturn &file_pkg_api_api_proto_enumTypes[3]\n}\n\nfunc (x LinuxSchedulerPolicy) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use LinuxSchedulerPolicy.Descriptor instead.\nfunc (LinuxSchedulerPolicy) EnumDescriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{3}\n}\n\ntype LinuxSchedulerFlag int32\n\nconst (\n\tLinuxSchedulerFlag_SCHED_FLAG_RESET_ON_FORK  LinuxSchedulerFlag = 0\n\tLinuxSchedulerFlag_SCHED_FLAG_RECLAIM        LinuxSchedulerFlag = 1\n\tLinuxSchedulerFlag_SCHED_FLAG_DL_OVERRUN     LinuxSchedulerFlag = 2\n\tLinuxSchedulerFlag_SCHED_FLAG_KEEP_POLICY    LinuxSchedulerFlag = 3\n\tLinuxSchedulerFlag_SCHED_FLAG_KEEP_PARAMS    LinuxSchedulerFlag = 4\n\tLinuxSchedulerFlag_SCHED_FLAG_UTIL_CLAMP_MIN LinuxSchedulerFlag = 5\n\tLinuxSchedulerFlag_SCHED_FLAG_UTIL_CLAMP_MAX LinuxSchedulerFlag = 6\n)\n\n// Enum value maps for LinuxSchedulerFlag.\nvar (\n\tLinuxSchedulerFlag_name = map[int32]string{\n\t\t0: \"SCHED_FLAG_RESET_ON_FORK\",\n\t\t1: \"SCHED_FLAG_RECLAIM\",\n\t\t2: \"SCHED_FLAG_DL_OVERRUN\",\n\t\t3: \"SCHED_FLAG_KEEP_POLICY\",\n\t\t4: \"SCHED_FLAG_KEEP_PARAMS\",\n\t\t5: \"SCHED_FLAG_UTIL_CLAMP_MIN\",\n\t\t6: \"SCHED_FLAG_UTIL_CLAMP_MAX\",\n\t}\n\tLinuxSchedulerFlag_value = map[string]int32{\n\t\t\"SCHED_FLAG_RESET_ON_FORK\":  0,\n\t\t\"SCHED_FLAG_RECLAIM\":        1,\n\t\t\"SCHED_FLAG_DL_OVERRUN\":     2,\n\t\t\"SCHED_FLAG_KEEP_POLICY\":    3,\n\t\t\"SCHED_FLAG_KEEP_PARAMS\":    4,\n\t\t\"SCHED_FLAG_UTIL_CLAMP_MIN\": 5,\n\t\t\"SCHED_FLAG_UTIL_CLAMP_MAX\": 6,\n\t}\n)\n\nfunc (x LinuxSchedulerFlag) Enum() *LinuxSchedulerFlag {\n\tp := new(LinuxSchedulerFlag)\n\t*p = x\n\treturn p\n}\n\nfunc (x LinuxSchedulerFlag) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (LinuxSchedulerFlag) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_pkg_api_api_proto_enumTypes[4].Descriptor()\n}\n\nfunc (LinuxSchedulerFlag) Type() protoreflect.EnumType {\n\treturn &file_pkg_api_api_proto_enumTypes[4]\n}\n\nfunc (x LinuxSchedulerFlag) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use LinuxSchedulerFlag.Descriptor instead.\nfunc (LinuxSchedulerFlag) EnumDescriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{4}\n}\n\n// Field enumerates all fields that can be adjusted by plugins.\ntype Field int32\n\nconst (\n\tField_None                Field = 0\n\tField_Annotations         Field = 1\n\tField_Mounts              Field = 2\n\tField_OciHooks            Field = 3\n\tField_Devices             Field = 4\n\tField_CdiDevices          Field = 5\n\tField_Env                 Field = 6\n\tField_Args                Field = 7\n\tField_MemLimit            Field = 8\n\tField_MemReservation      Field = 9\n\tField_MemSwapLimit        Field = 10\n\tField_MemKernelLimit      Field = 11\n\tField_MemTCPLimit         Field = 12\n\tField_MemSwappiness       Field = 13\n\tField_MemDisableOomKiller Field = 14\n\tField_MemUseHierarchy     Field = 15\n\tField_CPUShares           Field = 16\n\tField_CPUQuota            Field = 17\n\tField_CPUPeriod           Field = 18\n\tField_CPURealtimeRuntime  Field = 19\n\tField_CPURealtimePeriod   Field = 20\n\tField_CPUSetCPUs          Field = 21\n\tField_CPUSetMems          Field = 22\n\tField_PidsLimit           Field = 23\n\tField_HugepageLimits      Field = 24\n\tField_BlockioClass        Field = 25\n\tField_RdtClass            Field = 26\n\tField_CgroupsUnified      Field = 27\n\tField_CgroupsPath         Field = 28\n\tField_OomScoreAdj         Field = 29\n\tField_Rlimits             Field = 30\n\tField_IoPriority          Field = 31\n\tField_SeccompPolicy       Field = 32\n\tField_Namespace           Field = 33\n\tField_Sysctl              Field = 34\n\tField_LinuxNetDevices     Field = 35\n\t// protoc scoping rules: calling this LinuxScheduler would conflict with message.\n\tField_LinuxSched          Field = 36\n\tField_RdtClosID           Field = 37\n\tField_RdtSchemata         Field = 38\n\tField_RdtEnableMonitoring Field = 39\n)\n\n// Enum value maps for Field.\nvar (\n\tField_name = map[int32]string{\n\t\t0:  \"None\",\n\t\t1:  \"Annotations\",\n\t\t2:  \"Mounts\",\n\t\t3:  \"OciHooks\",\n\t\t4:  \"Devices\",\n\t\t5:  \"CdiDevices\",\n\t\t6:  \"Env\",\n\t\t7:  \"Args\",\n\t\t8:  \"MemLimit\",\n\t\t9:  \"MemReservation\",\n\t\t10: \"MemSwapLimit\",\n\t\t11: \"MemKernelLimit\",\n\t\t12: \"MemTCPLimit\",\n\t\t13: \"MemSwappiness\",\n\t\t14: \"MemDisableOomKiller\",\n\t\t15: \"MemUseHierarchy\",\n\t\t16: \"CPUShares\",\n\t\t17: \"CPUQuota\",\n\t\t18: \"CPUPeriod\",\n\t\t19: \"CPURealtimeRuntime\",\n\t\t20: \"CPURealtimePeriod\",\n\t\t21: \"CPUSetCPUs\",\n\t\t22: \"CPUSetMems\",\n\t\t23: \"PidsLimit\",\n\t\t24: \"HugepageLimits\",\n\t\t25: \"BlockioClass\",\n\t\t26: \"RdtClass\",\n\t\t27: \"CgroupsUnified\",\n\t\t28: \"CgroupsPath\",\n\t\t29: \"OomScoreAdj\",\n\t\t30: \"Rlimits\",\n\t\t31: \"IoPriority\",\n\t\t32: \"SeccompPolicy\",\n\t\t33: \"Namespace\",\n\t\t34: \"Sysctl\",\n\t\t35: \"LinuxNetDevices\",\n\t\t36: \"LinuxSched\",\n\t\t37: \"RdtClosID\",\n\t\t38: \"RdtSchemata\",\n\t\t39: \"RdtEnableMonitoring\",\n\t}\n\tField_value = map[string]int32{\n\t\t\"None\":                0,\n\t\t\"Annotations\":         1,\n\t\t\"Mounts\":              2,\n\t\t\"OciHooks\":            3,\n\t\t\"Devices\":             4,\n\t\t\"CdiDevices\":          5,\n\t\t\"Env\":                 6,\n\t\t\"Args\":                7,\n\t\t\"MemLimit\":            8,\n\t\t\"MemReservation\":      9,\n\t\t\"MemSwapLimit\":        10,\n\t\t\"MemKernelLimit\":      11,\n\t\t\"MemTCPLimit\":         12,\n\t\t\"MemSwappiness\":       13,\n\t\t\"MemDisableOomKiller\": 14,\n\t\t\"MemUseHierarchy\":     15,\n\t\t\"CPUShares\":           16,\n\t\t\"CPUQuota\":            17,\n\t\t\"CPUPeriod\":           18,\n\t\t\"CPURealtimeRuntime\":  19,\n\t\t\"CPURealtimePeriod\":   20,\n\t\t\"CPUSetCPUs\":          21,\n\t\t\"CPUSetMems\":          22,\n\t\t\"PidsLimit\":           23,\n\t\t\"HugepageLimits\":      24,\n\t\t\"BlockioClass\":        25,\n\t\t\"RdtClass\":            26,\n\t\t\"CgroupsUnified\":      27,\n\t\t\"CgroupsPath\":         28,\n\t\t\"OomScoreAdj\":         29,\n\t\t\"Rlimits\":             30,\n\t\t\"IoPriority\":          31,\n\t\t\"SeccompPolicy\":       32,\n\t\t\"Namespace\":           33,\n\t\t\"Sysctl\":              34,\n\t\t\"LinuxNetDevices\":     35,\n\t\t\"LinuxSched\":          36,\n\t\t\"RdtClosID\":           37,\n\t\t\"RdtSchemata\":         38,\n\t\t\"RdtEnableMonitoring\": 39,\n\t}\n)\n\nfunc (x Field) Enum() *Field {\n\tp := new(Field)\n\t*p = x\n\treturn p\n}\n\nfunc (x Field) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (Field) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_pkg_api_api_proto_enumTypes[5].Descriptor()\n}\n\nfunc (Field) Type() protoreflect.EnumType {\n\treturn &file_pkg_api_api_proto_enumTypes[5]\n}\n\nfunc (x Field) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use Field.Descriptor instead.\nfunc (Field) EnumDescriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{5}\n}\n\ntype LogRequest_Level int32\n\nconst (\n\tLogRequest_LEVEL_UNSPECIFIED LogRequest_Level = 0\n\tLogRequest_LEVEL_DEBUG       LogRequest_Level = 1\n\tLogRequest_LEVEL_INFO        LogRequest_Level = 2\n\tLogRequest_LEVEL_WARN        LogRequest_Level = 3\n\tLogRequest_LEVEL_ERROR       LogRequest_Level = 4\n)\n\n// Enum value maps for LogRequest_Level.\nvar (\n\tLogRequest_Level_name = map[int32]string{\n\t\t0: \"LEVEL_UNSPECIFIED\",\n\t\t1: \"LEVEL_DEBUG\",\n\t\t2: \"LEVEL_INFO\",\n\t\t3: \"LEVEL_WARN\",\n\t\t4: \"LEVEL_ERROR\",\n\t}\n\tLogRequest_Level_value = map[string]int32{\n\t\t\"LEVEL_UNSPECIFIED\": 0,\n\t\t\"LEVEL_DEBUG\":       1,\n\t\t\"LEVEL_INFO\":        2,\n\t\t\"LEVEL_WARN\":        3,\n\t\t\"LEVEL_ERROR\":       4,\n\t}\n)\n\nfunc (x LogRequest_Level) Enum() *LogRequest_Level {\n\tp := new(LogRequest_Level)\n\t*p = x\n\treturn p\n}\n\nfunc (x LogRequest_Level) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (LogRequest_Level) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_pkg_api_api_proto_enumTypes[6].Descriptor()\n}\n\nfunc (LogRequest_Level) Type() protoreflect.EnumType {\n\treturn &file_pkg_api_api_proto_enumTypes[6]\n}\n\nfunc (x LogRequest_Level) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use LogRequest_Level.Descriptor instead.\nfunc (LogRequest_Level) EnumDescriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{3, 0}\n}\n\ntype SecurityProfile_ProfileType int32\n\nconst (\n\tSecurityProfile_RUNTIME_DEFAULT SecurityProfile_ProfileType = 0\n\tSecurityProfile_UNCONFINED      SecurityProfile_ProfileType = 1\n\tSecurityProfile_LOCALHOST       SecurityProfile_ProfileType = 2\n)\n\n// Enum value maps for SecurityProfile_ProfileType.\nvar (\n\tSecurityProfile_ProfileType_name = map[int32]string{\n\t\t0: \"RUNTIME_DEFAULT\",\n\t\t1: \"UNCONFINED\",\n\t\t2: \"LOCALHOST\",\n\t}\n\tSecurityProfile_ProfileType_value = map[string]int32{\n\t\t\"RUNTIME_DEFAULT\": 0,\n\t\t\"UNCONFINED\":      1,\n\t\t\"LOCALHOST\":       2,\n\t}\n)\n\nfunc (x SecurityProfile_ProfileType) Enum() *SecurityProfile_ProfileType {\n\tp := new(SecurityProfile_ProfileType)\n\t*p = x\n\treturn p\n}\n\nfunc (x SecurityProfile_ProfileType) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (SecurityProfile_ProfileType) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_pkg_api_api_proto_enumTypes[7].Descriptor()\n}\n\nfunc (SecurityProfile_ProfileType) Type() protoreflect.EnumType {\n\treturn &file_pkg_api_api_proto_enumTypes[7]\n}\n\nfunc (x SecurityProfile_ProfileType) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use SecurityProfile_ProfileType.Descriptor instead.\nfunc (SecurityProfile_ProfileType) EnumDescriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{37, 0}\n}\n\ntype RegisterPluginRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Name of the plugin to register.\n\tPluginName string `protobuf:\"bytes,1,opt,name=plugin_name,json=pluginName,proto3\" json:\"plugin_name,omitempty\"`\n\t// Plugin invocation index. Plugins are called in ascending index order.\n\tPluginIdx string `protobuf:\"bytes,2,opt,name=plugin_idx,json=pluginIdx,proto3\" json:\"plugin_idx,omitempty\"`\n}\n\nfunc (x *RegisterPluginRequest) Reset() {\n\t*x = RegisterPluginRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *RegisterPluginRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RegisterPluginRequest) ProtoMessage() {}\n\nfunc (x *RegisterPluginRequest) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RegisterPluginRequest.ProtoReflect.Descriptor instead.\nfunc (*RegisterPluginRequest) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *RegisterPluginRequest) GetPluginName() string {\n\tif x != nil {\n\t\treturn x.PluginName\n\t}\n\treturn \"\"\n}\n\nfunc (x *RegisterPluginRequest) GetPluginIdx() string {\n\tif x != nil {\n\t\treturn x.PluginIdx\n\t}\n\treturn \"\"\n}\n\ntype UpdateContainersRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// List of containers to update.\n\tUpdate []*ContainerUpdate `protobuf:\"bytes,1,rep,name=update,proto3\" json:\"update,omitempty\"`\n\t// List of containers to evict.\n\tEvict []*ContainerEviction `protobuf:\"bytes,2,rep,name=evict,proto3\" json:\"evict,omitempty\"`\n}\n\nfunc (x *UpdateContainersRequest) Reset() {\n\t*x = UpdateContainersRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[1]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *UpdateContainersRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*UpdateContainersRequest) ProtoMessage() {}\n\nfunc (x *UpdateContainersRequest) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[1]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use UpdateContainersRequest.ProtoReflect.Descriptor instead.\nfunc (*UpdateContainersRequest) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *UpdateContainersRequest) GetUpdate() []*ContainerUpdate {\n\tif x != nil {\n\t\treturn x.Update\n\t}\n\treturn nil\n}\n\nfunc (x *UpdateContainersRequest) GetEvict() []*ContainerEviction {\n\tif x != nil {\n\t\treturn x.Evict\n\t}\n\treturn nil\n}\n\ntype UpdateContainersResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Containers that the runtime failed to update.\n\tFailed []*ContainerUpdate `protobuf:\"bytes,1,rep,name=failed,proto3\" json:\"failed,omitempty\"`\n}\n\nfunc (x *UpdateContainersResponse) Reset() {\n\t*x = UpdateContainersResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[2]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *UpdateContainersResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*UpdateContainersResponse) ProtoMessage() {}\n\nfunc (x *UpdateContainersResponse) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[2]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use UpdateContainersResponse.ProtoReflect.Descriptor instead.\nfunc (*UpdateContainersResponse) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *UpdateContainersResponse) GetFailed() []*ContainerUpdate {\n\tif x != nil {\n\t\treturn x.Failed\n\t}\n\treturn nil\n}\n\ntype LogRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tMsg   string           `protobuf:\"bytes,1,opt,name=msg,proto3\" json:\"msg,omitempty\"`\n\tLevel LogRequest_Level `protobuf:\"varint,2,opt,name=level,proto3,enum=nri.pkg.api.v1alpha1.LogRequest_Level\" json:\"level,omitempty\"`\n}\n\nfunc (x *LogRequest) Reset() {\n\t*x = LogRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[3]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *LogRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*LogRequest) ProtoMessage() {}\n\nfunc (x *LogRequest) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[3]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use LogRequest.ProtoReflect.Descriptor instead.\nfunc (*LogRequest) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{3}\n}\n\nfunc (x *LogRequest) GetMsg() string {\n\tif x != nil {\n\t\treturn x.Msg\n\t}\n\treturn \"\"\n}\n\nfunc (x *LogRequest) GetLevel() LogRequest_Level {\n\tif x != nil {\n\t\treturn x.Level\n\t}\n\treturn LogRequest_LEVEL_UNSPECIFIED\n}\n\ntype ConfigureRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Any plugin-specific data, if present among the NRI configuration.\n\tConfig string `protobuf:\"bytes,1,opt,name=config,proto3\" json:\"config,omitempty\"`\n\t// Name of the runtime NRI is running in.\n\tRuntimeName string `protobuf:\"bytes,2,opt,name=runtime_name,json=runtimeName,proto3\" json:\"runtime_name,omitempty\"`\n\t// Version of the runtime NRI is running in.\n\tRuntimeVersion string `protobuf:\"bytes,3,opt,name=runtime_version,json=runtimeVersion,proto3\" json:\"runtime_version,omitempty\"`\n\t// Configured registration timeout in milliseconds.\n\tRegistrationTimeout int64 `protobuf:\"varint,4,opt,name=registration_timeout,json=registrationTimeout,proto3\" json:\"registration_timeout,omitempty\"`\n\t// Configured request processing timeout in milliseconds.\n\tRequestTimeout int64 `protobuf:\"varint,5,opt,name=request_timeout,json=requestTimeout,proto3\" json:\"request_timeout,omitempty\"`\n}\n\nfunc (x *ConfigureRequest) Reset() {\n\t*x = ConfigureRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[4]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *ConfigureRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ConfigureRequest) ProtoMessage() {}\n\nfunc (x *ConfigureRequest) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[4]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ConfigureRequest.ProtoReflect.Descriptor instead.\nfunc (*ConfigureRequest) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{4}\n}\n\nfunc (x *ConfigureRequest) GetConfig() string {\n\tif x != nil {\n\t\treturn x.Config\n\t}\n\treturn \"\"\n}\n\nfunc (x *ConfigureRequest) GetRuntimeName() string {\n\tif x != nil {\n\t\treturn x.RuntimeName\n\t}\n\treturn \"\"\n}\n\nfunc (x *ConfigureRequest) GetRuntimeVersion() string {\n\tif x != nil {\n\t\treturn x.RuntimeVersion\n\t}\n\treturn \"\"\n}\n\nfunc (x *ConfigureRequest) GetRegistrationTimeout() int64 {\n\tif x != nil {\n\t\treturn x.RegistrationTimeout\n\t}\n\treturn 0\n}\n\nfunc (x *ConfigureRequest) GetRequestTimeout() int64 {\n\tif x != nil {\n\t\treturn x.RequestTimeout\n\t}\n\treturn 0\n}\n\ntype ConfigureResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Events to subscribe the plugin for. Each bit set corresponds to an\n\t// enumerated Event.\n\tEvents int32 `protobuf:\"varint,2,opt,name=events,proto3\" json:\"events,omitempty\"`\n}\n\nfunc (x *ConfigureResponse) Reset() {\n\t*x = ConfigureResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[5]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *ConfigureResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ConfigureResponse) ProtoMessage() {}\n\nfunc (x *ConfigureResponse) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[5]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ConfigureResponse.ProtoReflect.Descriptor instead.\nfunc (*ConfigureResponse) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{5}\n}\n\nfunc (x *ConfigureResponse) GetEvents() int32 {\n\tif x != nil {\n\t\treturn x.Events\n\t}\n\treturn 0\n}\n\ntype SynchronizeRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Pods known to the runtime.\n\tPods []*PodSandbox `protobuf:\"bytes,1,rep,name=pods,proto3\" json:\"pods,omitempty\"`\n\t// Containers known to the runtime.\n\tContainers []*Container `protobuf:\"bytes,2,rep,name=containers,proto3\" json:\"containers,omitempty\"`\n\t// Whether there are more pods and containers to follow.\n\tMore bool `protobuf:\"varint,3,opt,name=more,proto3\" json:\"more,omitempty\"`\n}\n\nfunc (x *SynchronizeRequest) Reset() {\n\t*x = SynchronizeRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[6]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *SynchronizeRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*SynchronizeRequest) ProtoMessage() {}\n\nfunc (x *SynchronizeRequest) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[6]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use SynchronizeRequest.ProtoReflect.Descriptor instead.\nfunc (*SynchronizeRequest) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{6}\n}\n\nfunc (x *SynchronizeRequest) GetPods() []*PodSandbox {\n\tif x != nil {\n\t\treturn x.Pods\n\t}\n\treturn nil\n}\n\nfunc (x *SynchronizeRequest) GetContainers() []*Container {\n\tif x != nil {\n\t\treturn x.Containers\n\t}\n\treturn nil\n}\n\nfunc (x *SynchronizeRequest) GetMore() bool {\n\tif x != nil {\n\t\treturn x.More\n\t}\n\treturn false\n}\n\ntype SynchronizeResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Updates to containers requested by the plugin.\n\tUpdate []*ContainerUpdate `protobuf:\"bytes,1,rep,name=update,proto3\" json:\"update,omitempty\"`\n\t// Whether the client is able to handle more advertised pods and containers.\n\tMore bool `protobuf:\"varint,2,opt,name=more,proto3\" json:\"more,omitempty\"`\n}\n\nfunc (x *SynchronizeResponse) Reset() {\n\t*x = SynchronizeResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[7]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *SynchronizeResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*SynchronizeResponse) ProtoMessage() {}\n\nfunc (x *SynchronizeResponse) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[7]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use SynchronizeResponse.ProtoReflect.Descriptor instead.\nfunc (*SynchronizeResponse) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{7}\n}\n\nfunc (x *SynchronizeResponse) GetUpdate() []*ContainerUpdate {\n\tif x != nil {\n\t\treturn x.Update\n\t}\n\treturn nil\n}\n\nfunc (x *SynchronizeResponse) GetMore() bool {\n\tif x != nil {\n\t\treturn x.More\n\t}\n\treturn false\n}\n\ntype CreateContainerRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Pod of container being created.\n\tPod *PodSandbox `protobuf:\"bytes,1,opt,name=pod,proto3\" json:\"pod,omitempty\"`\n\t// Container being created.\n\tContainer *Container `protobuf:\"bytes,2,opt,name=container,proto3\" json:\"container,omitempty\"`\n}\n\nfunc (x *CreateContainerRequest) Reset() {\n\t*x = CreateContainerRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[8]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *CreateContainerRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*CreateContainerRequest) ProtoMessage() {}\n\nfunc (x *CreateContainerRequest) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[8]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use CreateContainerRequest.ProtoReflect.Descriptor instead.\nfunc (*CreateContainerRequest) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{8}\n}\n\nfunc (x *CreateContainerRequest) GetPod() *PodSandbox {\n\tif x != nil {\n\t\treturn x.Pod\n\t}\n\treturn nil\n}\n\nfunc (x *CreateContainerRequest) GetContainer() *Container {\n\tif x != nil {\n\t\treturn x.Container\n\t}\n\treturn nil\n}\n\ntype CreateContainerResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Requested adjustments to container being created.\n\tAdjust *ContainerAdjustment `protobuf:\"bytes,1,opt,name=adjust,proto3\" json:\"adjust,omitempty\"`\n\t// Requested updates to other existing containers.\n\tUpdate []*ContainerUpdate `protobuf:\"bytes,2,rep,name=update,proto3\" json:\"update,omitempty\"`\n\t// Requested eviction of existing containers.\n\tEvict []*ContainerEviction `protobuf:\"bytes,3,rep,name=evict,proto3\" json:\"evict,omitempty\"`\n}\n\nfunc (x *CreateContainerResponse) Reset() {\n\t*x = CreateContainerResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[9]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *CreateContainerResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*CreateContainerResponse) ProtoMessage() {}\n\nfunc (x *CreateContainerResponse) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[9]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use CreateContainerResponse.ProtoReflect.Descriptor instead.\nfunc (*CreateContainerResponse) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{9}\n}\n\nfunc (x *CreateContainerResponse) GetAdjust() *ContainerAdjustment {\n\tif x != nil {\n\t\treturn x.Adjust\n\t}\n\treturn nil\n}\n\nfunc (x *CreateContainerResponse) GetUpdate() []*ContainerUpdate {\n\tif x != nil {\n\t\treturn x.Update\n\t}\n\treturn nil\n}\n\nfunc (x *CreateContainerResponse) GetEvict() []*ContainerEviction {\n\tif x != nil {\n\t\treturn x.Evict\n\t}\n\treturn nil\n}\n\ntype UpdateContainerRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Pod of container being updated.\n\tPod *PodSandbox `protobuf:\"bytes,1,opt,name=pod,proto3\" json:\"pod,omitempty\"`\n\t// Container being updated.\n\tContainer *Container `protobuf:\"bytes,2,opt,name=container,proto3\" json:\"container,omitempty\"`\n\t// Resources to update.\n\tLinuxResources *LinuxResources `protobuf:\"bytes,3,opt,name=linux_resources,json=linuxResources,proto3\" json:\"linux_resources,omitempty\"`\n}\n\nfunc (x *UpdateContainerRequest) Reset() {\n\t*x = UpdateContainerRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[10]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *UpdateContainerRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*UpdateContainerRequest) ProtoMessage() {}\n\nfunc (x *UpdateContainerRequest) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[10]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use UpdateContainerRequest.ProtoReflect.Descriptor instead.\nfunc (*UpdateContainerRequest) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{10}\n}\n\nfunc (x *UpdateContainerRequest) GetPod() *PodSandbox {\n\tif x != nil {\n\t\treturn x.Pod\n\t}\n\treturn nil\n}\n\nfunc (x *UpdateContainerRequest) GetContainer() *Container {\n\tif x != nil {\n\t\treturn x.Container\n\t}\n\treturn nil\n}\n\nfunc (x *UpdateContainerRequest) GetLinuxResources() *LinuxResources {\n\tif x != nil {\n\t\treturn x.LinuxResources\n\t}\n\treturn nil\n}\n\ntype UpdateContainerResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Requested updates to containers.\n\tUpdate []*ContainerUpdate `protobuf:\"bytes,1,rep,name=update,proto3\" json:\"update,omitempty\"`\n\t// Requested eviction of containers.\n\tEvict []*ContainerEviction `protobuf:\"bytes,2,rep,name=evict,proto3\" json:\"evict,omitempty\"`\n}\n\nfunc (x *UpdateContainerResponse) Reset() {\n\t*x = UpdateContainerResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[11]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *UpdateContainerResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*UpdateContainerResponse) ProtoMessage() {}\n\nfunc (x *UpdateContainerResponse) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[11]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use UpdateContainerResponse.ProtoReflect.Descriptor instead.\nfunc (*UpdateContainerResponse) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{11}\n}\n\nfunc (x *UpdateContainerResponse) GetUpdate() []*ContainerUpdate {\n\tif x != nil {\n\t\treturn x.Update\n\t}\n\treturn nil\n}\n\nfunc (x *UpdateContainerResponse) GetEvict() []*ContainerEviction {\n\tif x != nil {\n\t\treturn x.Evict\n\t}\n\treturn nil\n}\n\ntype StopContainerRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Pod of container being stopped.\n\tPod *PodSandbox `protobuf:\"bytes,1,opt,name=pod,proto3\" json:\"pod,omitempty\"`\n\t// Container being stopped.\n\tContainer *Container `protobuf:\"bytes,2,opt,name=container,proto3\" json:\"container,omitempty\"`\n}\n\nfunc (x *StopContainerRequest) Reset() {\n\t*x = StopContainerRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[12]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *StopContainerRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*StopContainerRequest) ProtoMessage() {}\n\nfunc (x *StopContainerRequest) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[12]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use StopContainerRequest.ProtoReflect.Descriptor instead.\nfunc (*StopContainerRequest) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{12}\n}\n\nfunc (x *StopContainerRequest) GetPod() *PodSandbox {\n\tif x != nil {\n\t\treturn x.Pod\n\t}\n\treturn nil\n}\n\nfunc (x *StopContainerRequest) GetContainer() *Container {\n\tif x != nil {\n\t\treturn x.Container\n\t}\n\treturn nil\n}\n\ntype StopContainerResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Requested updates to containers.\n\tUpdate []*ContainerUpdate `protobuf:\"bytes,1,rep,name=update,proto3\" json:\"update,omitempty\"`\n}\n\nfunc (x *StopContainerResponse) Reset() {\n\t*x = StopContainerResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[13]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *StopContainerResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*StopContainerResponse) ProtoMessage() {}\n\nfunc (x *StopContainerResponse) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[13]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use StopContainerResponse.ProtoReflect.Descriptor instead.\nfunc (*StopContainerResponse) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{13}\n}\n\nfunc (x *StopContainerResponse) GetUpdate() []*ContainerUpdate {\n\tif x != nil {\n\t\treturn x.Update\n\t}\n\treturn nil\n}\n\ntype UpdatePodSandboxRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Pod being updated.\n\tPod *PodSandbox `protobuf:\"bytes,1,opt,name=pod,proto3\" json:\"pod,omitempty\"`\n\t// Overhead associated with this pod.\n\tOverheadLinuxResources *LinuxResources `protobuf:\"bytes,2,opt,name=overhead_linux_resources,json=overheadLinuxResources,proto3\" json:\"overhead_linux_resources,omitempty\"`\n\t// Sum of container resources for this pod.\n\tLinuxResources *LinuxResources `protobuf:\"bytes,3,opt,name=linux_resources,json=linuxResources,proto3\" json:\"linux_resources,omitempty\"`\n}\n\nfunc (x *UpdatePodSandboxRequest) Reset() {\n\t*x = UpdatePodSandboxRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[14]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *UpdatePodSandboxRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*UpdatePodSandboxRequest) ProtoMessage() {}\n\nfunc (x *UpdatePodSandboxRequest) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[14]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use UpdatePodSandboxRequest.ProtoReflect.Descriptor instead.\nfunc (*UpdatePodSandboxRequest) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{14}\n}\n\nfunc (x *UpdatePodSandboxRequest) GetPod() *PodSandbox {\n\tif x != nil {\n\t\treturn x.Pod\n\t}\n\treturn nil\n}\n\nfunc (x *UpdatePodSandboxRequest) GetOverheadLinuxResources() *LinuxResources {\n\tif x != nil {\n\t\treturn x.OverheadLinuxResources\n\t}\n\treturn nil\n}\n\nfunc (x *UpdatePodSandboxRequest) GetLinuxResources() *LinuxResources {\n\tif x != nil {\n\t\treturn x.LinuxResources\n\t}\n\treturn nil\n}\n\ntype UpdatePodSandboxResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n}\n\nfunc (x *UpdatePodSandboxResponse) Reset() {\n\t*x = UpdatePodSandboxResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[15]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *UpdatePodSandboxResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*UpdatePodSandboxResponse) ProtoMessage() {}\n\nfunc (x *UpdatePodSandboxResponse) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[15]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use UpdatePodSandboxResponse.ProtoReflect.Descriptor instead.\nfunc (*UpdatePodSandboxResponse) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{15}\n}\n\ntype StateChangeEvent struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Event type of notification.\n\tEvent Event `protobuf:\"varint,1,opt,name=event,proto3,enum=nri.pkg.api.v1alpha1.Event\" json:\"event,omitempty\"`\n\t// Pod this notification is sent for. If this event is related to a container,\n\t// pod is set to the pod of the container.\n\tPod *PodSandbox `protobuf:\"bytes,2,opt,name=pod,proto3\" json:\"pod,omitempty\"`\n\t// Container this notification is sent for. If the event is related to a pod,\n\t// container is nil.\n\tContainer *Container `protobuf:\"bytes,3,opt,name=container,proto3\" json:\"container,omitempty\"`\n}\n\nfunc (x *StateChangeEvent) Reset() {\n\t*x = StateChangeEvent{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[16]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *StateChangeEvent) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*StateChangeEvent) ProtoMessage() {}\n\nfunc (x *StateChangeEvent) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[16]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use StateChangeEvent.ProtoReflect.Descriptor instead.\nfunc (*StateChangeEvent) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{16}\n}\n\nfunc (x *StateChangeEvent) GetEvent() Event {\n\tif x != nil {\n\t\treturn x.Event\n\t}\n\treturn Event_UNKNOWN\n}\n\nfunc (x *StateChangeEvent) GetPod() *PodSandbox {\n\tif x != nil {\n\t\treturn x.Pod\n\t}\n\treturn nil\n}\n\nfunc (x *StateChangeEvent) GetContainer() *Container {\n\tif x != nil {\n\t\treturn x.Container\n\t}\n\treturn nil\n}\n\ntype ValidateContainerAdjustmentRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Pod of container being adjusted.\n\tPod *PodSandbox `protobuf:\"bytes,1,opt,name=pod,proto3\" json:\"pod,omitempty\"`\n\t// Container being adjusted in its pristine state.\n\tContainer *Container `protobuf:\"bytes,2,opt,name=container,proto3\" json:\"container,omitempty\"`\n\t// Pending container adjustments.\n\tAdjust *ContainerAdjustment `protobuf:\"bytes,3,opt,name=adjust,proto3\" json:\"adjust,omitempty\"`\n\t// Pending updates to other containers.\n\tUpdate []*ContainerUpdate `protobuf:\"bytes,4,rep,name=update,proto3\" json:\"update,omitempty\"`\n\t// Plugins that made the adjustments and updates.\n\tOwners *OwningPlugins `protobuf:\"bytes,5,opt,name=owners,proto3\" json:\"owners,omitempty\"`\n\t// Plugins consulted for adjustments and updates.\n\tPlugins []*PluginInstance `protobuf:\"bytes,6,rep,name=plugins,proto3\" json:\"plugins,omitempty\"`\n}\n\nfunc (x *ValidateContainerAdjustmentRequest) Reset() {\n\t*x = ValidateContainerAdjustmentRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[17]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *ValidateContainerAdjustmentRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ValidateContainerAdjustmentRequest) ProtoMessage() {}\n\nfunc (x *ValidateContainerAdjustmentRequest) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[17]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ValidateContainerAdjustmentRequest.ProtoReflect.Descriptor instead.\nfunc (*ValidateContainerAdjustmentRequest) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{17}\n}\n\nfunc (x *ValidateContainerAdjustmentRequest) GetPod() *PodSandbox {\n\tif x != nil {\n\t\treturn x.Pod\n\t}\n\treturn nil\n}\n\nfunc (x *ValidateContainerAdjustmentRequest) GetContainer() *Container {\n\tif x != nil {\n\t\treturn x.Container\n\t}\n\treturn nil\n}\n\nfunc (x *ValidateContainerAdjustmentRequest) GetAdjust() *ContainerAdjustment {\n\tif x != nil {\n\t\treturn x.Adjust\n\t}\n\treturn nil\n}\n\nfunc (x *ValidateContainerAdjustmentRequest) GetUpdate() []*ContainerUpdate {\n\tif x != nil {\n\t\treturn x.Update\n\t}\n\treturn nil\n}\n\nfunc (x *ValidateContainerAdjustmentRequest) GetOwners() *OwningPlugins {\n\tif x != nil {\n\t\treturn x.Owners\n\t}\n\treturn nil\n}\n\nfunc (x *ValidateContainerAdjustmentRequest) GetPlugins() []*PluginInstance {\n\tif x != nil {\n\t\treturn x.Plugins\n\t}\n\treturn nil\n}\n\ntype PluginInstance struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tName  string `protobuf:\"bytes,1,opt,name=name,proto3\" json:\"name,omitempty\"`\n\tIndex string `protobuf:\"bytes,2,opt,name=index,proto3\" json:\"index,omitempty\"`\n}\n\nfunc (x *PluginInstance) Reset() {\n\t*x = PluginInstance{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[18]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *PluginInstance) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*PluginInstance) ProtoMessage() {}\n\nfunc (x *PluginInstance) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[18]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use PluginInstance.ProtoReflect.Descriptor instead.\nfunc (*PluginInstance) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{18}\n}\n\nfunc (x *PluginInstance) GetName() string {\n\tif x != nil {\n\t\treturn x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *PluginInstance) GetIndex() string {\n\tif x != nil {\n\t\treturn x.Index\n\t}\n\treturn \"\"\n}\n\ntype ValidateContainerAdjustmentResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tReject bool   `protobuf:\"varint,1,opt,name=reject,proto3\" json:\"reject,omitempty\"`\n\tReason string `protobuf:\"bytes,2,opt,name=reason,proto3\" json:\"reason,omitempty\"`\n}\n\nfunc (x *ValidateContainerAdjustmentResponse) Reset() {\n\t*x = ValidateContainerAdjustmentResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[19]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *ValidateContainerAdjustmentResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ValidateContainerAdjustmentResponse) ProtoMessage() {}\n\nfunc (x *ValidateContainerAdjustmentResponse) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[19]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ValidateContainerAdjustmentResponse.ProtoReflect.Descriptor instead.\nfunc (*ValidateContainerAdjustmentResponse) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{19}\n}\n\nfunc (x *ValidateContainerAdjustmentResponse) GetReject() bool {\n\tif x != nil {\n\t\treturn x.Reject\n\t}\n\treturn false\n}\n\nfunc (x *ValidateContainerAdjustmentResponse) GetReason() string {\n\tif x != nil {\n\t\treturn x.Reason\n\t}\n\treturn \"\"\n}\n\n// Empty response for those *Requests that are semantically events.\ntype Empty struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n}\n\nfunc (x *Empty) Reset() {\n\t*x = Empty{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[20]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Empty) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Empty) ProtoMessage() {}\n\nfunc (x *Empty) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[20]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Empty.ProtoReflect.Descriptor instead.\nfunc (*Empty) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{20}\n}\n\n// Pod metadata that is considered relevant for a plugin.\ntype PodSandbox struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tId             string            `protobuf:\"bytes,1,opt,name=id,proto3\" json:\"id,omitempty\"`\n\tName           string            `protobuf:\"bytes,2,opt,name=name,proto3\" json:\"name,omitempty\"`\n\tUid            string            `protobuf:\"bytes,3,opt,name=uid,proto3\" json:\"uid,omitempty\"`\n\tNamespace      string            `protobuf:\"bytes,4,opt,name=namespace,proto3\" json:\"namespace,omitempty\"`\n\tLabels         map[string]string `protobuf:\"bytes,5,rep,name=labels,proto3\" json:\"labels,omitempty\" protobuf_key:\"bytes,1,opt,name=key,proto3\" protobuf_val:\"bytes,2,opt,name=value,proto3\"`\n\tAnnotations    map[string]string `protobuf:\"bytes,6,rep,name=annotations,proto3\" json:\"annotations,omitempty\" protobuf_key:\"bytes,1,opt,name=key,proto3\" protobuf_val:\"bytes,2,opt,name=value,proto3\"`\n\tRuntimeHandler string            `protobuf:\"bytes,7,opt,name=runtime_handler,json=runtimeHandler,proto3\" json:\"runtime_handler,omitempty\"`\n\tLinux          *LinuxPodSandbox  `protobuf:\"bytes,8,opt,name=linux,proto3\" json:\"linux,omitempty\"`\n\tPid            uint32            `protobuf:\"varint,9,opt,name=pid,proto3\" json:\"pid,omitempty\"` // for NRI v1 emulation\n\tIps            []string          `protobuf:\"bytes,10,rep,name=ips,proto3\" json:\"ips,omitempty\"`\n}\n\nfunc (x *PodSandbox) Reset() {\n\t*x = PodSandbox{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[21]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *PodSandbox) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*PodSandbox) ProtoMessage() {}\n\nfunc (x *PodSandbox) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[21]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use PodSandbox.ProtoReflect.Descriptor instead.\nfunc (*PodSandbox) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{21}\n}\n\nfunc (x *PodSandbox) GetId() string {\n\tif x != nil {\n\t\treturn x.Id\n\t}\n\treturn \"\"\n}\n\nfunc (x *PodSandbox) GetName() string {\n\tif x != nil {\n\t\treturn x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *PodSandbox) GetUid() string {\n\tif x != nil {\n\t\treturn x.Uid\n\t}\n\treturn \"\"\n}\n\nfunc (x *PodSandbox) GetNamespace() string {\n\tif x != nil {\n\t\treturn x.Namespace\n\t}\n\treturn \"\"\n}\n\nfunc (x *PodSandbox) GetLabels() map[string]string {\n\tif x != nil {\n\t\treturn x.Labels\n\t}\n\treturn nil\n}\n\nfunc (x *PodSandbox) GetAnnotations() map[string]string {\n\tif x != nil {\n\t\treturn x.Annotations\n\t}\n\treturn nil\n}\n\nfunc (x *PodSandbox) GetRuntimeHandler() string {\n\tif x != nil {\n\t\treturn x.RuntimeHandler\n\t}\n\treturn \"\"\n}\n\nfunc (x *PodSandbox) GetLinux() *LinuxPodSandbox {\n\tif x != nil {\n\t\treturn x.Linux\n\t}\n\treturn nil\n}\n\nfunc (x *PodSandbox) GetPid() uint32 {\n\tif x != nil {\n\t\treturn x.Pid\n\t}\n\treturn 0\n}\n\nfunc (x *PodSandbox) GetIps() []string {\n\tif x != nil {\n\t\treturn x.Ips\n\t}\n\treturn nil\n}\n\n// PodSandbox linux-specific metadata\ntype LinuxPodSandbox struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tPodOverhead  *LinuxResources   `protobuf:\"bytes,1,opt,name=pod_overhead,json=podOverhead,proto3\" json:\"pod_overhead,omitempty\"`\n\tPodResources *LinuxResources   `protobuf:\"bytes,2,opt,name=pod_resources,json=podResources,proto3\" json:\"pod_resources,omitempty\"`\n\tCgroupParent string            `protobuf:\"bytes,3,opt,name=cgroup_parent,json=cgroupParent,proto3\" json:\"cgroup_parent,omitempty\"`\n\tCgroupsPath  string            `protobuf:\"bytes,4,opt,name=cgroups_path,json=cgroupsPath,proto3\" json:\"cgroups_path,omitempty\"` // for NRI v1 emulation\n\tNamespaces   []*LinuxNamespace `protobuf:\"bytes,5,rep,name=namespaces,proto3\" json:\"namespaces,omitempty\"`                      // for NRI v1 emulation\n\tResources    *LinuxResources   `protobuf:\"bytes,6,opt,name=resources,proto3\" json:\"resources,omitempty\"`                        // for NRI v1 emulation\n}\n\nfunc (x *LinuxPodSandbox) Reset() {\n\t*x = LinuxPodSandbox{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[22]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *LinuxPodSandbox) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*LinuxPodSandbox) ProtoMessage() {}\n\nfunc (x *LinuxPodSandbox) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[22]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use LinuxPodSandbox.ProtoReflect.Descriptor instead.\nfunc (*LinuxPodSandbox) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{22}\n}\n\nfunc (x *LinuxPodSandbox) GetPodOverhead() *LinuxResources {\n\tif x != nil {\n\t\treturn x.PodOverhead\n\t}\n\treturn nil\n}\n\nfunc (x *LinuxPodSandbox) GetPodResources() *LinuxResources {\n\tif x != nil {\n\t\treturn x.PodResources\n\t}\n\treturn nil\n}\n\nfunc (x *LinuxPodSandbox) GetCgroupParent() string {\n\tif x != nil {\n\t\treturn x.CgroupParent\n\t}\n\treturn \"\"\n}\n\nfunc (x *LinuxPodSandbox) GetCgroupsPath() string {\n\tif x != nil {\n\t\treturn x.CgroupsPath\n\t}\n\treturn \"\"\n}\n\nfunc (x *LinuxPodSandbox) GetNamespaces() []*LinuxNamespace {\n\tif x != nil {\n\t\treturn x.Namespaces\n\t}\n\treturn nil\n}\n\nfunc (x *LinuxPodSandbox) GetResources() *LinuxResources {\n\tif x != nil {\n\t\treturn x.Resources\n\t}\n\treturn nil\n}\n\n// Container metadata that is considered relevant for a plugin.\ntype Container struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tId            string            `protobuf:\"bytes,1,opt,name=id,proto3\" json:\"id,omitempty\"`\n\tPodSandboxId  string            `protobuf:\"bytes,2,opt,name=pod_sandbox_id,json=podSandboxId,proto3\" json:\"pod_sandbox_id,omitempty\"`\n\tName          string            `protobuf:\"bytes,3,opt,name=name,proto3\" json:\"name,omitempty\"`\n\tState         ContainerState    `protobuf:\"varint,4,opt,name=state,proto3,enum=nri.pkg.api.v1alpha1.ContainerState\" json:\"state,omitempty\"`\n\tLabels        map[string]string `protobuf:\"bytes,5,rep,name=labels,proto3\" json:\"labels,omitempty\" protobuf_key:\"bytes,1,opt,name=key,proto3\" protobuf_val:\"bytes,2,opt,name=value,proto3\"`\n\tAnnotations   map[string]string `protobuf:\"bytes,6,rep,name=annotations,proto3\" json:\"annotations,omitempty\" protobuf_key:\"bytes,1,opt,name=key,proto3\" protobuf_val:\"bytes,2,opt,name=value,proto3\"`\n\tArgs          []string          `protobuf:\"bytes,7,rep,name=args,proto3\" json:\"args,omitempty\"`\n\tEnv           []string          `protobuf:\"bytes,8,rep,name=env,proto3\" json:\"env,omitempty\"`\n\tMounts        []*Mount          `protobuf:\"bytes,9,rep,name=mounts,proto3\" json:\"mounts,omitempty\"`\n\tHooks         *Hooks            `protobuf:\"bytes,10,opt,name=hooks,proto3\" json:\"hooks,omitempty\"`\n\tLinux         *LinuxContainer   `protobuf:\"bytes,11,opt,name=linux,proto3\" json:\"linux,omitempty\"`\n\tPid           uint32            `protobuf:\"varint,12,opt,name=pid,proto3\" json:\"pid,omitempty\"` // for NRI v1 emulation\n\tRlimits       []*POSIXRlimit    `protobuf:\"bytes,13,rep,name=rlimits,proto3\" json:\"rlimits,omitempty\"`\n\tCreatedAt     int64             `protobuf:\"varint,14,opt,name=created_at,json=createdAt,proto3\" json:\"created_at,omitempty\"`\n\tStartedAt     int64             `protobuf:\"varint,15,opt,name=started_at,json=startedAt,proto3\" json:\"started_at,omitempty\"`\n\tFinishedAt    int64             `protobuf:\"varint,16,opt,name=finished_at,json=finishedAt,proto3\" json:\"finished_at,omitempty\"`\n\tExitCode      int32             `protobuf:\"varint,17,opt,name=exit_code,json=exitCode,proto3\" json:\"exit_code,omitempty\"`\n\tStatusReason  string            `protobuf:\"bytes,18,opt,name=status_reason,json=statusReason,proto3\" json:\"status_reason,omitempty\"`\n\tStatusMessage string            `protobuf:\"bytes,19,opt,name=status_message,json=statusMessage,proto3\" json:\"status_message,omitempty\"`\n\tCDIDevices    []*CDIDevice      `protobuf:\"bytes,20,rep,name=CDI_devices,json=CDIDevices,proto3\" json:\"CDI_devices,omitempty\"`\n\tUser          *User             `protobuf:\"bytes,21,opt,name=user,proto3\" json:\"user,omitempty\"`\n}\n\nfunc (x *Container) Reset() {\n\t*x = Container{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[23]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Container) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Container) ProtoMessage() {}\n\nfunc (x *Container) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[23]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Container.ProtoReflect.Descriptor instead.\nfunc (*Container) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{23}\n}\n\nfunc (x *Container) GetId() string {\n\tif x != nil {\n\t\treturn x.Id\n\t}\n\treturn \"\"\n}\n\nfunc (x *Container) GetPodSandboxId() string {\n\tif x != nil {\n\t\treturn x.PodSandboxId\n\t}\n\treturn \"\"\n}\n\nfunc (x *Container) GetName() string {\n\tif x != nil {\n\t\treturn x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *Container) GetState() ContainerState {\n\tif x != nil {\n\t\treturn x.State\n\t}\n\treturn ContainerState_CONTAINER_UNKNOWN\n}\n\nfunc (x *Container) GetLabels() map[string]string {\n\tif x != nil {\n\t\treturn x.Labels\n\t}\n\treturn nil\n}\n\nfunc (x *Container) GetAnnotations() map[string]string {\n\tif x != nil {\n\t\treturn x.Annotations\n\t}\n\treturn nil\n}\n\nfunc (x *Container) GetArgs() []string {\n\tif x != nil {\n\t\treturn x.Args\n\t}\n\treturn nil\n}\n\nfunc (x *Container) GetEnv() []string {\n\tif x != nil {\n\t\treturn x.Env\n\t}\n\treturn nil\n}\n\nfunc (x *Container) GetMounts() []*Mount {\n\tif x != nil {\n\t\treturn x.Mounts\n\t}\n\treturn nil\n}\n\nfunc (x *Container) GetHooks() *Hooks {\n\tif x != nil {\n\t\treturn x.Hooks\n\t}\n\treturn nil\n}\n\nfunc (x *Container) GetLinux() *LinuxContainer {\n\tif x != nil {\n\t\treturn x.Linux\n\t}\n\treturn nil\n}\n\nfunc (x *Container) GetPid() uint32 {\n\tif x != nil {\n\t\treturn x.Pid\n\t}\n\treturn 0\n}\n\nfunc (x *Container) GetRlimits() []*POSIXRlimit {\n\tif x != nil {\n\t\treturn x.Rlimits\n\t}\n\treturn nil\n}\n\nfunc (x *Container) GetCreatedAt() int64 {\n\tif x != nil {\n\t\treturn x.CreatedAt\n\t}\n\treturn 0\n}\n\nfunc (x *Container) GetStartedAt() int64 {\n\tif x != nil {\n\t\treturn x.StartedAt\n\t}\n\treturn 0\n}\n\nfunc (x *Container) GetFinishedAt() int64 {\n\tif x != nil {\n\t\treturn x.FinishedAt\n\t}\n\treturn 0\n}\n\nfunc (x *Container) GetExitCode() int32 {\n\tif x != nil {\n\t\treturn x.ExitCode\n\t}\n\treturn 0\n}\n\nfunc (x *Container) GetStatusReason() string {\n\tif x != nil {\n\t\treturn x.StatusReason\n\t}\n\treturn \"\"\n}\n\nfunc (x *Container) GetStatusMessage() string {\n\tif x != nil {\n\t\treturn x.StatusMessage\n\t}\n\treturn \"\"\n}\n\nfunc (x *Container) GetCDIDevices() []*CDIDevice {\n\tif x != nil {\n\t\treturn x.CDIDevices\n\t}\n\treturn nil\n}\n\nfunc (x *Container) GetUser() *User {\n\tif x != nil {\n\t\treturn x.User\n\t}\n\treturn nil\n}\n\n// A container mount.\ntype Mount struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tDestination string   `protobuf:\"bytes,1,opt,name=destination,proto3\" json:\"destination,omitempty\"`\n\tType        string   `protobuf:\"bytes,2,opt,name=type,proto3\" json:\"type,omitempty\"`\n\tSource      string   `protobuf:\"bytes,3,opt,name=source,proto3\" json:\"source,omitempty\"`\n\tOptions     []string `protobuf:\"bytes,4,rep,name=options,proto3\" json:\"options,omitempty\"`\n}\n\nfunc (x *Mount) Reset() {\n\t*x = Mount{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[24]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Mount) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Mount) ProtoMessage() {}\n\nfunc (x *Mount) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[24]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Mount.ProtoReflect.Descriptor instead.\nfunc (*Mount) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{24}\n}\n\nfunc (x *Mount) GetDestination() string {\n\tif x != nil {\n\t\treturn x.Destination\n\t}\n\treturn \"\"\n}\n\nfunc (x *Mount) GetType() string {\n\tif x != nil {\n\t\treturn x.Type\n\t}\n\treturn \"\"\n}\n\nfunc (x *Mount) GetSource() string {\n\tif x != nil {\n\t\treturn x.Source\n\t}\n\treturn \"\"\n}\n\nfunc (x *Mount) GetOptions() []string {\n\tif x != nil {\n\t\treturn x.Options\n\t}\n\treturn nil\n}\n\n// Container OCI hooks.\ntype Hooks struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tPrestart        []*Hook `protobuf:\"bytes,1,rep,name=prestart,proto3\" json:\"prestart,omitempty\"`\n\tCreateRuntime   []*Hook `protobuf:\"bytes,2,rep,name=create_runtime,json=createRuntime,proto3\" json:\"create_runtime,omitempty\"`\n\tCreateContainer []*Hook `protobuf:\"bytes,3,rep,name=create_container,json=createContainer,proto3\" json:\"create_container,omitempty\"`\n\tStartContainer  []*Hook `protobuf:\"bytes,4,rep,name=start_container,json=startContainer,proto3\" json:\"start_container,omitempty\"`\n\tPoststart       []*Hook `protobuf:\"bytes,5,rep,name=poststart,proto3\" json:\"poststart,omitempty\"`\n\tPoststop        []*Hook `protobuf:\"bytes,6,rep,name=poststop,proto3\" json:\"poststop,omitempty\"`\n}\n\nfunc (x *Hooks) Reset() {\n\t*x = Hooks{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[25]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Hooks) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Hooks) ProtoMessage() {}\n\nfunc (x *Hooks) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[25]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Hooks.ProtoReflect.Descriptor instead.\nfunc (*Hooks) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{25}\n}\n\nfunc (x *Hooks) GetPrestart() []*Hook {\n\tif x != nil {\n\t\treturn x.Prestart\n\t}\n\treturn nil\n}\n\nfunc (x *Hooks) GetCreateRuntime() []*Hook {\n\tif x != nil {\n\t\treturn x.CreateRuntime\n\t}\n\treturn nil\n}\n\nfunc (x *Hooks) GetCreateContainer() []*Hook {\n\tif x != nil {\n\t\treturn x.CreateContainer\n\t}\n\treturn nil\n}\n\nfunc (x *Hooks) GetStartContainer() []*Hook {\n\tif x != nil {\n\t\treturn x.StartContainer\n\t}\n\treturn nil\n}\n\nfunc (x *Hooks) GetPoststart() []*Hook {\n\tif x != nil {\n\t\treturn x.Poststart\n\t}\n\treturn nil\n}\n\nfunc (x *Hooks) GetPoststop() []*Hook {\n\tif x != nil {\n\t\treturn x.Poststop\n\t}\n\treturn nil\n}\n\n// One OCI hook.\ntype Hook struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tPath    string       `protobuf:\"bytes,1,opt,name=path,proto3\" json:\"path,omitempty\"`\n\tArgs    []string     `protobuf:\"bytes,2,rep,name=args,proto3\" json:\"args,omitempty\"`\n\tEnv     []string     `protobuf:\"bytes,3,rep,name=env,proto3\" json:\"env,omitempty\"`\n\tTimeout *OptionalInt `protobuf:\"bytes,4,opt,name=timeout,proto3\" json:\"timeout,omitempty\"`\n}\n\nfunc (x *Hook) Reset() {\n\t*x = Hook{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[26]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Hook) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Hook) ProtoMessage() {}\n\nfunc (x *Hook) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[26]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Hook.ProtoReflect.Descriptor instead.\nfunc (*Hook) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{26}\n}\n\nfunc (x *Hook) GetPath() string {\n\tif x != nil {\n\t\treturn x.Path\n\t}\n\treturn \"\"\n}\n\nfunc (x *Hook) GetArgs() []string {\n\tif x != nil {\n\t\treturn x.Args\n\t}\n\treturn nil\n}\n\nfunc (x *Hook) GetEnv() []string {\n\tif x != nil {\n\t\treturn x.Env\n\t}\n\treturn nil\n}\n\nfunc (x *Hook) GetTimeout() *OptionalInt {\n\tif x != nil {\n\t\treturn x.Timeout\n\t}\n\treturn nil\n}\n\n// Container (linux) metadata.\ntype LinuxContainer struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tNamespaces     []*LinuxNamespace          `protobuf:\"bytes,1,rep,name=namespaces,proto3\" json:\"namespaces,omitempty\"`\n\tDevices        []*LinuxDevice             `protobuf:\"bytes,2,rep,name=devices,proto3\" json:\"devices,omitempty\"`\n\tResources      *LinuxResources            `protobuf:\"bytes,3,opt,name=resources,proto3\" json:\"resources,omitempty\"`\n\tOomScoreAdj    *OptionalInt               `protobuf:\"bytes,4,opt,name=oom_score_adj,json=oomScoreAdj,proto3\" json:\"oom_score_adj,omitempty\"`\n\tCgroupsPath    string                     `protobuf:\"bytes,5,opt,name=cgroups_path,json=cgroupsPath,proto3\" json:\"cgroups_path,omitempty\"`\n\tIoPriority     *LinuxIOPriority           `protobuf:\"bytes,6,opt,name=io_priority,json=ioPriority,proto3\" json:\"io_priority,omitempty\"`\n\tSeccompProfile *SecurityProfile           `protobuf:\"bytes,7,opt,name=seccomp_profile,json=seccompProfile,proto3\" json:\"seccomp_profile,omitempty\"`\n\tSeccompPolicy  *LinuxSeccomp              `protobuf:\"bytes,8,opt,name=seccomp_policy,json=seccompPolicy,proto3\" json:\"seccomp_policy,omitempty\"`\n\tSysctl         map[string]string          `protobuf:\"bytes,9,rep,name=sysctl,proto3\" json:\"sysctl,omitempty\" protobuf_key:\"bytes,1,opt,name=key,proto3\" protobuf_val:\"bytes,2,opt,name=value,proto3\"`\n\tNetDevices     map[string]*LinuxNetDevice `protobuf:\"bytes,10,rep,name=net_devices,json=netDevices,proto3\" json:\"net_devices,omitempty\" protobuf_key:\"bytes,1,opt,name=key,proto3\" protobuf_val:\"bytes,2,opt,name=value,proto3\"`\n\tScheduler      *LinuxScheduler            `protobuf:\"bytes,11,opt,name=scheduler,proto3\" json:\"scheduler,omitempty\"`\n\tRdt            *LinuxRdt                  `protobuf:\"bytes,12,opt,name=rdt,proto3\" json:\"rdt,omitempty\"`\n}\n\nfunc (x *LinuxContainer) Reset() {\n\t*x = LinuxContainer{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[27]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *LinuxContainer) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*LinuxContainer) ProtoMessage() {}\n\nfunc (x *LinuxContainer) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[27]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use LinuxContainer.ProtoReflect.Descriptor instead.\nfunc (*LinuxContainer) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{27}\n}\n\nfunc (x *LinuxContainer) GetNamespaces() []*LinuxNamespace {\n\tif x != nil {\n\t\treturn x.Namespaces\n\t}\n\treturn nil\n}\n\nfunc (x *LinuxContainer) GetDevices() []*LinuxDevice {\n\tif x != nil {\n\t\treturn x.Devices\n\t}\n\treturn nil\n}\n\nfunc (x *LinuxContainer) GetResources() *LinuxResources {\n\tif x != nil {\n\t\treturn x.Resources\n\t}\n\treturn nil\n}\n\nfunc (x *LinuxContainer) GetOomScoreAdj() *OptionalInt {\n\tif x != nil {\n\t\treturn x.OomScoreAdj\n\t}\n\treturn nil\n}\n\nfunc (x *LinuxContainer) GetCgroupsPath() string {\n\tif x != nil {\n\t\treturn x.CgroupsPath\n\t}\n\treturn \"\"\n}\n\nfunc (x *LinuxContainer) GetIoPriority() *LinuxIOPriority {\n\tif x != nil {\n\t\treturn x.IoPriority\n\t}\n\treturn nil\n}\n\nfunc (x *LinuxContainer) GetSeccompProfile() *SecurityProfile {\n\tif x != nil {\n\t\treturn x.SeccompProfile\n\t}\n\treturn nil\n}\n\nfunc (x *LinuxContainer) GetSeccompPolicy() *LinuxSeccomp {\n\tif x != nil {\n\t\treturn x.SeccompPolicy\n\t}\n\treturn nil\n}\n\nfunc (x *LinuxContainer) GetSysctl() map[string]string {\n\tif x != nil {\n\t\treturn x.Sysctl\n\t}\n\treturn nil\n}\n\nfunc (x *LinuxContainer) GetNetDevices() map[string]*LinuxNetDevice {\n\tif x != nil {\n\t\treturn x.NetDevices\n\t}\n\treturn nil\n}\n\nfunc (x *LinuxContainer) GetScheduler() *LinuxScheduler {\n\tif x != nil {\n\t\treturn x.Scheduler\n\t}\n\treturn nil\n}\n\nfunc (x *LinuxContainer) GetRdt() *LinuxRdt {\n\tif x != nil {\n\t\treturn x.Rdt\n\t}\n\treturn nil\n}\n\n// A linux namespace.\ntype LinuxNamespace struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tType string `protobuf:\"bytes,1,opt,name=type,proto3\" json:\"type,omitempty\"`\n\tPath string `protobuf:\"bytes,2,opt,name=path,proto3\" json:\"path,omitempty\"`\n}\n\nfunc (x *LinuxNamespace) Reset() {\n\t*x = LinuxNamespace{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[28]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *LinuxNamespace) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*LinuxNamespace) ProtoMessage() {}\n\nfunc (x *LinuxNamespace) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[28]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use LinuxNamespace.ProtoReflect.Descriptor instead.\nfunc (*LinuxNamespace) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{28}\n}\n\nfunc (x *LinuxNamespace) GetType() string {\n\tif x != nil {\n\t\treturn x.Type\n\t}\n\treturn \"\"\n}\n\nfunc (x *LinuxNamespace) GetPath() string {\n\tif x != nil {\n\t\treturn x.Path\n\t}\n\treturn \"\"\n}\n\n// A container (linux) device.\ntype LinuxDevice struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tPath     string            `protobuf:\"bytes,1,opt,name=path,proto3\" json:\"path,omitempty\"`\n\tType     string            `protobuf:\"bytes,2,opt,name=type,proto3\" json:\"type,omitempty\"`\n\tMajor    int64             `protobuf:\"varint,3,opt,name=major,proto3\" json:\"major,omitempty\"`\n\tMinor    int64             `protobuf:\"varint,4,opt,name=minor,proto3\" json:\"minor,omitempty\"`\n\tFileMode *OptionalFileMode `protobuf:\"bytes,5,opt,name=file_mode,json=fileMode,proto3\" json:\"file_mode,omitempty\"`\n\tUid      *OptionalUInt32   `protobuf:\"bytes,6,opt,name=uid,proto3\" json:\"uid,omitempty\"`\n\tGid      *OptionalUInt32   `protobuf:\"bytes,7,opt,name=gid,proto3\" json:\"gid,omitempty\"`\n}\n\nfunc (x *LinuxDevice) Reset() {\n\t*x = LinuxDevice{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[29]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *LinuxDevice) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*LinuxDevice) ProtoMessage() {}\n\nfunc (x *LinuxDevice) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[29]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use LinuxDevice.ProtoReflect.Descriptor instead.\nfunc (*LinuxDevice) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{29}\n}\n\nfunc (x *LinuxDevice) GetPath() string {\n\tif x != nil {\n\t\treturn x.Path\n\t}\n\treturn \"\"\n}\n\nfunc (x *LinuxDevice) GetType() string {\n\tif x != nil {\n\t\treturn x.Type\n\t}\n\treturn \"\"\n}\n\nfunc (x *LinuxDevice) GetMajor() int64 {\n\tif x != nil {\n\t\treturn x.Major\n\t}\n\treturn 0\n}\n\nfunc (x *LinuxDevice) GetMinor() int64 {\n\tif x != nil {\n\t\treturn x.Minor\n\t}\n\treturn 0\n}\n\nfunc (x *LinuxDevice) GetFileMode() *OptionalFileMode {\n\tif x != nil {\n\t\treturn x.FileMode\n\t}\n\treturn nil\n}\n\nfunc (x *LinuxDevice) GetUid() *OptionalUInt32 {\n\tif x != nil {\n\t\treturn x.Uid\n\t}\n\treturn nil\n}\n\nfunc (x *LinuxDevice) GetGid() *OptionalUInt32 {\n\tif x != nil {\n\t\treturn x.Gid\n\t}\n\treturn nil\n}\n\n// A linux device cgroup controller rule.\ntype LinuxDeviceCgroup struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tAllow  bool           `protobuf:\"varint,1,opt,name=allow,proto3\" json:\"allow,omitempty\"`\n\tType   string         `protobuf:\"bytes,2,opt,name=type,proto3\" json:\"type,omitempty\"`\n\tMajor  *OptionalInt64 `protobuf:\"bytes,3,opt,name=major,proto3\" json:\"major,omitempty\"`\n\tMinor  *OptionalInt64 `protobuf:\"bytes,4,opt,name=minor,proto3\" json:\"minor,omitempty\"`\n\tAccess string         `protobuf:\"bytes,5,opt,name=access,proto3\" json:\"access,omitempty\"`\n}\n\nfunc (x *LinuxDeviceCgroup) Reset() {\n\t*x = LinuxDeviceCgroup{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[30]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *LinuxDeviceCgroup) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*LinuxDeviceCgroup) ProtoMessage() {}\n\nfunc (x *LinuxDeviceCgroup) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[30]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use LinuxDeviceCgroup.ProtoReflect.Descriptor instead.\nfunc (*LinuxDeviceCgroup) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{30}\n}\n\nfunc (x *LinuxDeviceCgroup) GetAllow() bool {\n\tif x != nil {\n\t\treturn x.Allow\n\t}\n\treturn false\n}\n\nfunc (x *LinuxDeviceCgroup) GetType() string {\n\tif x != nil {\n\t\treturn x.Type\n\t}\n\treturn \"\"\n}\n\nfunc (x *LinuxDeviceCgroup) GetMajor() *OptionalInt64 {\n\tif x != nil {\n\t\treturn x.Major\n\t}\n\treturn nil\n}\n\nfunc (x *LinuxDeviceCgroup) GetMinor() *OptionalInt64 {\n\tif x != nil {\n\t\treturn x.Minor\n\t}\n\treturn nil\n}\n\nfunc (x *LinuxDeviceCgroup) GetAccess() string {\n\tif x != nil {\n\t\treturn x.Access\n\t}\n\treturn \"\"\n}\n\n// A CDI device reference.\ntype CDIDevice struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tName string `protobuf:\"bytes,1,opt,name=name,proto3\" json:\"name,omitempty\"`\n}\n\nfunc (x *CDIDevice) Reset() {\n\t*x = CDIDevice{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[31]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *CDIDevice) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*CDIDevice) ProtoMessage() {}\n\nfunc (x *CDIDevice) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[31]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use CDIDevice.ProtoReflect.Descriptor instead.\nfunc (*CDIDevice) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{31}\n}\n\nfunc (x *CDIDevice) GetName() string {\n\tif x != nil {\n\t\treturn x.Name\n\t}\n\treturn \"\"\n}\n\n// User and group IDs for the container.\ntype User struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tUid            uint32   `protobuf:\"varint,1,opt,name=uid,proto3\" json:\"uid,omitempty\"`\n\tGid            uint32   `protobuf:\"varint,2,opt,name=gid,proto3\" json:\"gid,omitempty\"`\n\tAdditionalGids []uint32 `protobuf:\"varint,3,rep,packed,name=additional_gids,json=additionalGids,proto3\" json:\"additional_gids,omitempty\"`\n}\n\nfunc (x *User) Reset() {\n\t*x = User{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[32]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *User) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*User) ProtoMessage() {}\n\nfunc (x *User) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[32]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use User.ProtoReflect.Descriptor instead.\nfunc (*User) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{32}\n}\n\nfunc (x *User) GetUid() uint32 {\n\tif x != nil {\n\t\treturn x.Uid\n\t}\n\treturn 0\n}\n\nfunc (x *User) GetGid() uint32 {\n\tif x != nil {\n\t\treturn x.Gid\n\t}\n\treturn 0\n}\n\nfunc (x *User) GetAdditionalGids() []uint32 {\n\tif x != nil {\n\t\treturn x.AdditionalGids\n\t}\n\treturn nil\n}\n\n// Container (linux) resources.\ntype LinuxResources struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tMemory         *LinuxMemory         `protobuf:\"bytes,1,opt,name=memory,proto3\" json:\"memory,omitempty\"`\n\tCpu            *LinuxCPU            `protobuf:\"bytes,2,opt,name=cpu,proto3\" json:\"cpu,omitempty\"`\n\tHugepageLimits []*HugepageLimit     `protobuf:\"bytes,3,rep,name=hugepage_limits,json=hugepageLimits,proto3\" json:\"hugepage_limits,omitempty\"`\n\tBlockioClass   *OptionalString      `protobuf:\"bytes,4,opt,name=blockio_class,json=blockioClass,proto3\" json:\"blockio_class,omitempty\"`\n\tRdtClass       *OptionalString      `protobuf:\"bytes,5,opt,name=rdt_class,json=rdtClass,proto3\" json:\"rdt_class,omitempty\"`\n\tUnified        map[string]string    `protobuf:\"bytes,6,rep,name=unified,proto3\" json:\"unified,omitempty\" protobuf_key:\"bytes,1,opt,name=key,proto3\" protobuf_val:\"bytes,2,opt,name=value,proto3\"`\n\tDevices        []*LinuxDeviceCgroup `protobuf:\"bytes,7,rep,name=devices,proto3\" json:\"devices,omitempty\"` // for NRI v1 emulation\n\tPids           *LinuxPids           `protobuf:\"bytes,8,opt,name=pids,proto3\" json:\"pids,omitempty\"`\n}\n\nfunc (x *LinuxResources) Reset() {\n\t*x = LinuxResources{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[33]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *LinuxResources) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*LinuxResources) ProtoMessage() {}\n\nfunc (x *LinuxResources) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[33]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use LinuxResources.ProtoReflect.Descriptor instead.\nfunc (*LinuxResources) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{33}\n}\n\nfunc (x *LinuxResources) GetMemory() *LinuxMemory {\n\tif x != nil {\n\t\treturn x.Memory\n\t}\n\treturn nil\n}\n\nfunc (x *LinuxResources) GetCpu() *LinuxCPU {\n\tif x != nil {\n\t\treturn x.Cpu\n\t}\n\treturn nil\n}\n\nfunc (x *LinuxResources) GetHugepageLimits() []*HugepageLimit {\n\tif x != nil {\n\t\treturn x.HugepageLimits\n\t}\n\treturn nil\n}\n\nfunc (x *LinuxResources) GetBlockioClass() *OptionalString {\n\tif x != nil {\n\t\treturn x.BlockioClass\n\t}\n\treturn nil\n}\n\nfunc (x *LinuxResources) GetRdtClass() *OptionalString {\n\tif x != nil {\n\t\treturn x.RdtClass\n\t}\n\treturn nil\n}\n\nfunc (x *LinuxResources) GetUnified() map[string]string {\n\tif x != nil {\n\t\treturn x.Unified\n\t}\n\treturn nil\n}\n\nfunc (x *LinuxResources) GetDevices() []*LinuxDeviceCgroup {\n\tif x != nil {\n\t\treturn x.Devices\n\t}\n\treturn nil\n}\n\nfunc (x *LinuxResources) GetPids() *LinuxPids {\n\tif x != nil {\n\t\treturn x.Pids\n\t}\n\treturn nil\n}\n\n// Memory-related parts of (linux) resources.\ntype LinuxMemory struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tLimit            *OptionalInt64  `protobuf:\"bytes,1,opt,name=limit,proto3\" json:\"limit,omitempty\"`\n\tReservation      *OptionalInt64  `protobuf:\"bytes,2,opt,name=reservation,proto3\" json:\"reservation,omitempty\"`\n\tSwap             *OptionalInt64  `protobuf:\"bytes,3,opt,name=swap,proto3\" json:\"swap,omitempty\"`\n\tKernel           *OptionalInt64  `protobuf:\"bytes,4,opt,name=kernel,proto3\" json:\"kernel,omitempty\"`\n\tKernelTcp        *OptionalInt64  `protobuf:\"bytes,5,opt,name=kernel_tcp,json=kernelTcp,proto3\" json:\"kernel_tcp,omitempty\"`\n\tSwappiness       *OptionalUInt64 `protobuf:\"bytes,6,opt,name=swappiness,proto3\" json:\"swappiness,omitempty\"`\n\tDisableOomKiller *OptionalBool   `protobuf:\"bytes,7,opt,name=disable_oom_killer,json=disableOomKiller,proto3\" json:\"disable_oom_killer,omitempty\"`\n\tUseHierarchy     *OptionalBool   `protobuf:\"bytes,8,opt,name=use_hierarchy,json=useHierarchy,proto3\" json:\"use_hierarchy,omitempty\"`\n}\n\nfunc (x *LinuxMemory) Reset() {\n\t*x = LinuxMemory{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[34]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *LinuxMemory) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*LinuxMemory) ProtoMessage() {}\n\nfunc (x *LinuxMemory) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[34]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use LinuxMemory.ProtoReflect.Descriptor instead.\nfunc (*LinuxMemory) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{34}\n}\n\nfunc (x *LinuxMemory) GetLimit() *OptionalInt64 {\n\tif x != nil {\n\t\treturn x.Limit\n\t}\n\treturn nil\n}\n\nfunc (x *LinuxMemory) GetReservation() *OptionalInt64 {\n\tif x != nil {\n\t\treturn x.Reservation\n\t}\n\treturn nil\n}\n\nfunc (x *LinuxMemory) GetSwap() *OptionalInt64 {\n\tif x != nil {\n\t\treturn x.Swap\n\t}\n\treturn nil\n}\n\nfunc (x *LinuxMemory) GetKernel() *OptionalInt64 {\n\tif x != nil {\n\t\treturn x.Kernel\n\t}\n\treturn nil\n}\n\nfunc (x *LinuxMemory) GetKernelTcp() *OptionalInt64 {\n\tif x != nil {\n\t\treturn x.KernelTcp\n\t}\n\treturn nil\n}\n\nfunc (x *LinuxMemory) GetSwappiness() *OptionalUInt64 {\n\tif x != nil {\n\t\treturn x.Swappiness\n\t}\n\treturn nil\n}\n\nfunc (x *LinuxMemory) GetDisableOomKiller() *OptionalBool {\n\tif x != nil {\n\t\treturn x.DisableOomKiller\n\t}\n\treturn nil\n}\n\nfunc (x *LinuxMemory) GetUseHierarchy() *OptionalBool {\n\tif x != nil {\n\t\treturn x.UseHierarchy\n\t}\n\treturn nil\n}\n\n// CPU-related parts of (linux) resources.\ntype LinuxCPU struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tShares          *OptionalUInt64 `protobuf:\"bytes,1,opt,name=shares,proto3\" json:\"shares,omitempty\"`\n\tQuota           *OptionalInt64  `protobuf:\"bytes,2,opt,name=quota,proto3\" json:\"quota,omitempty\"`\n\tPeriod          *OptionalUInt64 `protobuf:\"bytes,3,opt,name=period,proto3\" json:\"period,omitempty\"`\n\tRealtimeRuntime *OptionalInt64  `protobuf:\"bytes,4,opt,name=realtime_runtime,json=realtimeRuntime,proto3\" json:\"realtime_runtime,omitempty\"`\n\tRealtimePeriod  *OptionalUInt64 `protobuf:\"bytes,5,opt,name=realtime_period,json=realtimePeriod,proto3\" json:\"realtime_period,omitempty\"`\n\tCpus            string          `protobuf:\"bytes,6,opt,name=cpus,proto3\" json:\"cpus,omitempty\"`\n\tMems            string          `protobuf:\"bytes,7,opt,name=mems,proto3\" json:\"mems,omitempty\"`\n}\n\nfunc (x *LinuxCPU) Reset() {\n\t*x = LinuxCPU{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[35]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *LinuxCPU) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*LinuxCPU) ProtoMessage() {}\n\nfunc (x *LinuxCPU) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[35]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use LinuxCPU.ProtoReflect.Descriptor instead.\nfunc (*LinuxCPU) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{35}\n}\n\nfunc (x *LinuxCPU) GetShares() *OptionalUInt64 {\n\tif x != nil {\n\t\treturn x.Shares\n\t}\n\treturn nil\n}\n\nfunc (x *LinuxCPU) GetQuota() *OptionalInt64 {\n\tif x != nil {\n\t\treturn x.Quota\n\t}\n\treturn nil\n}\n\nfunc (x *LinuxCPU) GetPeriod() *OptionalUInt64 {\n\tif x != nil {\n\t\treturn x.Period\n\t}\n\treturn nil\n}\n\nfunc (x *LinuxCPU) GetRealtimeRuntime() *OptionalInt64 {\n\tif x != nil {\n\t\treturn x.RealtimeRuntime\n\t}\n\treturn nil\n}\n\nfunc (x *LinuxCPU) GetRealtimePeriod() *OptionalUInt64 {\n\tif x != nil {\n\t\treturn x.RealtimePeriod\n\t}\n\treturn nil\n}\n\nfunc (x *LinuxCPU) GetCpus() string {\n\tif x != nil {\n\t\treturn x.Cpus\n\t}\n\treturn \"\"\n}\n\nfunc (x *LinuxCPU) GetMems() string {\n\tif x != nil {\n\t\treturn x.Mems\n\t}\n\treturn \"\"\n}\n\n// Container huge page limit.\ntype HugepageLimit struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tPageSize string `protobuf:\"bytes,1,opt,name=page_size,json=pageSize,proto3\" json:\"page_size,omitempty\"`\n\tLimit    uint64 `protobuf:\"varint,2,opt,name=limit,proto3\" json:\"limit,omitempty\"`\n}\n\nfunc (x *HugepageLimit) Reset() {\n\t*x = HugepageLimit{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[36]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *HugepageLimit) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*HugepageLimit) ProtoMessage() {}\n\nfunc (x *HugepageLimit) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[36]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use HugepageLimit.ProtoReflect.Descriptor instead.\nfunc (*HugepageLimit) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{36}\n}\n\nfunc (x *HugepageLimit) GetPageSize() string {\n\tif x != nil {\n\t\treturn x.PageSize\n\t}\n\treturn \"\"\n}\n\nfunc (x *HugepageLimit) GetLimit() uint64 {\n\tif x != nil {\n\t\treturn x.Limit\n\t}\n\treturn 0\n}\n\n// SecurityProfile for container.\ntype SecurityProfile struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tProfileType  SecurityProfile_ProfileType `protobuf:\"varint,1,opt,name=profile_type,json=profileType,proto3,enum=nri.pkg.api.v1alpha1.SecurityProfile_ProfileType\" json:\"profile_type,omitempty\"`\n\tLocalhostRef string                      `protobuf:\"bytes,2,opt,name=localhost_ref,json=localhostRef,proto3\" json:\"localhost_ref,omitempty\"`\n}\n\nfunc (x *SecurityProfile) Reset() {\n\t*x = SecurityProfile{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[37]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *SecurityProfile) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*SecurityProfile) ProtoMessage() {}\n\nfunc (x *SecurityProfile) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[37]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use SecurityProfile.ProtoReflect.Descriptor instead.\nfunc (*SecurityProfile) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{37}\n}\n\nfunc (x *SecurityProfile) GetProfileType() SecurityProfile_ProfileType {\n\tif x != nil {\n\t\treturn x.ProfileType\n\t}\n\treturn SecurityProfile_RUNTIME_DEFAULT\n}\n\nfunc (x *SecurityProfile) GetLocalhostRef() string {\n\tif x != nil {\n\t\treturn x.LocalhostRef\n\t}\n\treturn \"\"\n}\n\n// Container rlimits\ntype POSIXRlimit struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tType string `protobuf:\"bytes,1,opt,name=type,proto3\" json:\"type,omitempty\"`\n\tHard uint64 `protobuf:\"varint,2,opt,name=hard,proto3\" json:\"hard,omitempty\"`\n\tSoft uint64 `protobuf:\"varint,3,opt,name=soft,proto3\" json:\"soft,omitempty\"`\n}\n\nfunc (x *POSIXRlimit) Reset() {\n\t*x = POSIXRlimit{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[38]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *POSIXRlimit) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*POSIXRlimit) ProtoMessage() {}\n\nfunc (x *POSIXRlimit) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[38]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use POSIXRlimit.ProtoReflect.Descriptor instead.\nfunc (*POSIXRlimit) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{38}\n}\n\nfunc (x *POSIXRlimit) GetType() string {\n\tif x != nil {\n\t\treturn x.Type\n\t}\n\treturn \"\"\n}\n\nfunc (x *POSIXRlimit) GetHard() uint64 {\n\tif x != nil {\n\t\treturn x.Hard\n\t}\n\treturn 0\n}\n\nfunc (x *POSIXRlimit) GetSoft() uint64 {\n\tif x != nil {\n\t\treturn x.Soft\n\t}\n\treturn 0\n}\n\n// Pids-related parts of (linux) resources.\ntype LinuxPids struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tLimit int64 `protobuf:\"varint,1,opt,name=limit,proto3\" json:\"limit,omitempty\"`\n}\n\nfunc (x *LinuxPids) Reset() {\n\t*x = LinuxPids{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[39]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *LinuxPids) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*LinuxPids) ProtoMessage() {}\n\nfunc (x *LinuxPids) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[39]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use LinuxPids.ProtoReflect.Descriptor instead.\nfunc (*LinuxPids) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{39}\n}\n\nfunc (x *LinuxPids) GetLimit() int64 {\n\tif x != nil {\n\t\treturn x.Limit\n\t}\n\treturn 0\n}\n\ntype LinuxIOPriority struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Scheduling class of the IO priority.\n\tClass IOPrioClass `protobuf:\"varint,1,opt,name=class,proto3,enum=nri.pkg.api.v1alpha1.IOPrioClass\" json:\"class,omitempty\"`\n\t// The value of the IO priority.\n\tPriority int32 `protobuf:\"varint,2,opt,name=priority,proto3\" json:\"priority,omitempty\"`\n}\n\nfunc (x *LinuxIOPriority) Reset() {\n\t*x = LinuxIOPriority{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[40]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *LinuxIOPriority) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*LinuxIOPriority) ProtoMessage() {}\n\nfunc (x *LinuxIOPriority) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[40]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use LinuxIOPriority.ProtoReflect.Descriptor instead.\nfunc (*LinuxIOPriority) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{40}\n}\n\nfunc (x *LinuxIOPriority) GetClass() IOPrioClass {\n\tif x != nil {\n\t\treturn x.Class\n\t}\n\treturn IOPrioClass_IOPRIO_CLASS_NONE\n}\n\nfunc (x *LinuxIOPriority) GetPriority() int32 {\n\tif x != nil {\n\t\treturn x.Priority\n\t}\n\treturn 0\n}\n\n// A linux network device.\ntype LinuxNetDevice struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tName string `protobuf:\"bytes,1,opt,name=name,proto3\" json:\"name,omitempty\"`\n}\n\nfunc (x *LinuxNetDevice) Reset() {\n\t*x = LinuxNetDevice{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[41]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *LinuxNetDevice) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*LinuxNetDevice) ProtoMessage() {}\n\nfunc (x *LinuxNetDevice) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[41]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use LinuxNetDevice.ProtoReflect.Descriptor instead.\nfunc (*LinuxNetDevice) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{41}\n}\n\nfunc (x *LinuxNetDevice) GetName() string {\n\tif x != nil {\n\t\treturn x.Name\n\t}\n\treturn \"\"\n}\n\n// Linux process scheduling attributes.\ntype LinuxScheduler struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tPolicy   LinuxSchedulerPolicy `protobuf:\"varint,1,opt,name=policy,proto3,enum=nri.pkg.api.v1alpha1.LinuxSchedulerPolicy\" json:\"policy,omitempty\"`\n\tNice     int32                `protobuf:\"varint,2,opt,name=nice,proto3\" json:\"nice,omitempty\"`\n\tPriority int32                `protobuf:\"varint,3,opt,name=priority,proto3\" json:\"priority,omitempty\"`\n\tFlags    []LinuxSchedulerFlag `protobuf:\"varint,4,rep,packed,name=flags,proto3,enum=nri.pkg.api.v1alpha1.LinuxSchedulerFlag\" json:\"flags,omitempty\"`\n\tRuntime  uint64               `protobuf:\"varint,5,opt,name=runtime,proto3\" json:\"runtime,omitempty\"`\n\tDeadline uint64               `protobuf:\"varint,6,opt,name=deadline,proto3\" json:\"deadline,omitempty\"`\n\tPeriod   uint64               `protobuf:\"varint,7,opt,name=period,proto3\" json:\"period,omitempty\"`\n}\n\nfunc (x *LinuxScheduler) Reset() {\n\t*x = LinuxScheduler{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[42]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *LinuxScheduler) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*LinuxScheduler) ProtoMessage() {}\n\nfunc (x *LinuxScheduler) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[42]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use LinuxScheduler.ProtoReflect.Descriptor instead.\nfunc (*LinuxScheduler) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{42}\n}\n\nfunc (x *LinuxScheduler) GetPolicy() LinuxSchedulerPolicy {\n\tif x != nil {\n\t\treturn x.Policy\n\t}\n\treturn LinuxSchedulerPolicy_SCHED_NONE\n}\n\nfunc (x *LinuxScheduler) GetNice() int32 {\n\tif x != nil {\n\t\treturn x.Nice\n\t}\n\treturn 0\n}\n\nfunc (x *LinuxScheduler) GetPriority() int32 {\n\tif x != nil {\n\t\treturn x.Priority\n\t}\n\treturn 0\n}\n\nfunc (x *LinuxScheduler) GetFlags() []LinuxSchedulerFlag {\n\tif x != nil {\n\t\treturn x.Flags\n\t}\n\treturn nil\n}\n\nfunc (x *LinuxScheduler) GetRuntime() uint64 {\n\tif x != nil {\n\t\treturn x.Runtime\n\t}\n\treturn 0\n}\n\nfunc (x *LinuxScheduler) GetDeadline() uint64 {\n\tif x != nil {\n\t\treturn x.Deadline\n\t}\n\treturn 0\n}\n\nfunc (x *LinuxScheduler) GetPeriod() uint64 {\n\tif x != nil {\n\t\treturn x.Period\n\t}\n\treturn 0\n}\n\n// Requested adjustments to a container being created.\ntype ContainerAdjustment struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tAnnotations map[string]string         `protobuf:\"bytes,2,rep,name=annotations,proto3\" json:\"annotations,omitempty\" protobuf_key:\"bytes,1,opt,name=key,proto3\" protobuf_val:\"bytes,2,opt,name=value,proto3\"`\n\tMounts      []*Mount                  `protobuf:\"bytes,3,rep,name=mounts,proto3\" json:\"mounts,omitempty\"`\n\tEnv         []*KeyValue               `protobuf:\"bytes,4,rep,name=env,proto3\" json:\"env,omitempty\"`\n\tHooks       *Hooks                    `protobuf:\"bytes,5,opt,name=hooks,proto3\" json:\"hooks,omitempty\"`\n\tLinux       *LinuxContainerAdjustment `protobuf:\"bytes,6,opt,name=linux,proto3\" json:\"linux,omitempty\"`\n\tRlimits     []*POSIXRlimit            `protobuf:\"bytes,7,rep,name=rlimits,proto3\" json:\"rlimits,omitempty\"`\n\tCDIDevices  []*CDIDevice              `protobuf:\"bytes,8,rep,name=CDI_devices,json=CDIDevices,proto3\" json:\"CDI_devices,omitempty\"`\n\tArgs        []string                  `protobuf:\"bytes,9,rep,name=args,proto3\" json:\"args,omitempty\"`\n}\n\nfunc (x *ContainerAdjustment) Reset() {\n\t*x = ContainerAdjustment{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[43]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *ContainerAdjustment) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ContainerAdjustment) ProtoMessage() {}\n\nfunc (x *ContainerAdjustment) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[43]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ContainerAdjustment.ProtoReflect.Descriptor instead.\nfunc (*ContainerAdjustment) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{43}\n}\n\nfunc (x *ContainerAdjustment) GetAnnotations() map[string]string {\n\tif x != nil {\n\t\treturn x.Annotations\n\t}\n\treturn nil\n}\n\nfunc (x *ContainerAdjustment) GetMounts() []*Mount {\n\tif x != nil {\n\t\treturn x.Mounts\n\t}\n\treturn nil\n}\n\nfunc (x *ContainerAdjustment) GetEnv() []*KeyValue {\n\tif x != nil {\n\t\treturn x.Env\n\t}\n\treturn nil\n}\n\nfunc (x *ContainerAdjustment) GetHooks() *Hooks {\n\tif x != nil {\n\t\treturn x.Hooks\n\t}\n\treturn nil\n}\n\nfunc (x *ContainerAdjustment) GetLinux() *LinuxContainerAdjustment {\n\tif x != nil {\n\t\treturn x.Linux\n\t}\n\treturn nil\n}\n\nfunc (x *ContainerAdjustment) GetRlimits() []*POSIXRlimit {\n\tif x != nil {\n\t\treturn x.Rlimits\n\t}\n\treturn nil\n}\n\nfunc (x *ContainerAdjustment) GetCDIDevices() []*CDIDevice {\n\tif x != nil {\n\t\treturn x.CDIDevices\n\t}\n\treturn nil\n}\n\nfunc (x *ContainerAdjustment) GetArgs() []string {\n\tif x != nil {\n\t\treturn x.Args\n\t}\n\treturn nil\n}\n\n// Adjustments to (linux) resources.\ntype LinuxContainerAdjustment struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tDevices       []*LinuxDevice             `protobuf:\"bytes,1,rep,name=devices,proto3\" json:\"devices,omitempty\"`\n\tResources     *LinuxResources            `protobuf:\"bytes,2,opt,name=resources,proto3\" json:\"resources,omitempty\"`\n\tCgroupsPath   string                     `protobuf:\"bytes,3,opt,name=cgroups_path,json=cgroupsPath,proto3\" json:\"cgroups_path,omitempty\"`\n\tOomScoreAdj   *OptionalInt               `protobuf:\"bytes,4,opt,name=oom_score_adj,json=oomScoreAdj,proto3\" json:\"oom_score_adj,omitempty\"`\n\tIoPriority    *LinuxIOPriority           `protobuf:\"bytes,5,opt,name=io_priority,json=ioPriority,proto3\" json:\"io_priority,omitempty\"`\n\tSeccompPolicy *LinuxSeccomp              `protobuf:\"bytes,6,opt,name=seccomp_policy,json=seccompPolicy,proto3\" json:\"seccomp_policy,omitempty\"`\n\tNamespaces    []*LinuxNamespace          `protobuf:\"bytes,7,rep,name=namespaces,proto3\" json:\"namespaces,omitempty\"`\n\tSysctl        map[string]string          `protobuf:\"bytes,8,rep,name=sysctl,proto3\" json:\"sysctl,omitempty\" protobuf_key:\"bytes,1,opt,name=key,proto3\" protobuf_val:\"bytes,2,opt,name=value,proto3\"`\n\tNetDevices    map[string]*LinuxNetDevice `protobuf:\"bytes,9,rep,name=net_devices,json=netDevices,proto3\" json:\"net_devices,omitempty\" protobuf_key:\"bytes,1,opt,name=key,proto3\" protobuf_val:\"bytes,2,opt,name=value,proto3\"`\n\tScheduler     *LinuxScheduler            `protobuf:\"bytes,10,opt,name=scheduler,proto3\" json:\"scheduler,omitempty\"`\n\tRdt           *LinuxRdt                  `protobuf:\"bytes,11,opt,name=rdt,proto3\" json:\"rdt,omitempty\"`\n}\n\nfunc (x *LinuxContainerAdjustment) Reset() {\n\t*x = LinuxContainerAdjustment{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[44]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *LinuxContainerAdjustment) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*LinuxContainerAdjustment) ProtoMessage() {}\n\nfunc (x *LinuxContainerAdjustment) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[44]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use LinuxContainerAdjustment.ProtoReflect.Descriptor instead.\nfunc (*LinuxContainerAdjustment) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{44}\n}\n\nfunc (x *LinuxContainerAdjustment) GetDevices() []*LinuxDevice {\n\tif x != nil {\n\t\treturn x.Devices\n\t}\n\treturn nil\n}\n\nfunc (x *LinuxContainerAdjustment) GetResources() *LinuxResources {\n\tif x != nil {\n\t\treturn x.Resources\n\t}\n\treturn nil\n}\n\nfunc (x *LinuxContainerAdjustment) GetCgroupsPath() string {\n\tif x != nil {\n\t\treturn x.CgroupsPath\n\t}\n\treturn \"\"\n}\n\nfunc (x *LinuxContainerAdjustment) GetOomScoreAdj() *OptionalInt {\n\tif x != nil {\n\t\treturn x.OomScoreAdj\n\t}\n\treturn nil\n}\n\nfunc (x *LinuxContainerAdjustment) GetIoPriority() *LinuxIOPriority {\n\tif x != nil {\n\t\treturn x.IoPriority\n\t}\n\treturn nil\n}\n\nfunc (x *LinuxContainerAdjustment) GetSeccompPolicy() *LinuxSeccomp {\n\tif x != nil {\n\t\treturn x.SeccompPolicy\n\t}\n\treturn nil\n}\n\nfunc (x *LinuxContainerAdjustment) GetNamespaces() []*LinuxNamespace {\n\tif x != nil {\n\t\treturn x.Namespaces\n\t}\n\treturn nil\n}\n\nfunc (x *LinuxContainerAdjustment) GetSysctl() map[string]string {\n\tif x != nil {\n\t\treturn x.Sysctl\n\t}\n\treturn nil\n}\n\nfunc (x *LinuxContainerAdjustment) GetNetDevices() map[string]*LinuxNetDevice {\n\tif x != nil {\n\t\treturn x.NetDevices\n\t}\n\treturn nil\n}\n\nfunc (x *LinuxContainerAdjustment) GetScheduler() *LinuxScheduler {\n\tif x != nil {\n\t\treturn x.Scheduler\n\t}\n\treturn nil\n}\n\nfunc (x *LinuxContainerAdjustment) GetRdt() *LinuxRdt {\n\tif x != nil {\n\t\treturn x.Rdt\n\t}\n\treturn nil\n}\n\ntype LinuxSeccomp struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tDefaultAction    string          `protobuf:\"bytes,1,opt,name=default_action,json=defaultAction,proto3\" json:\"default_action,omitempty\"`\n\tDefaultErrno     *OptionalUInt32 `protobuf:\"bytes,2,opt,name=default_errno,json=defaultErrno,proto3\" json:\"default_errno,omitempty\"`\n\tArchitectures    []string        `protobuf:\"bytes,3,rep,name=architectures,proto3\" json:\"architectures,omitempty\"`\n\tFlags            []string        `protobuf:\"bytes,4,rep,name=flags,proto3\" json:\"flags,omitempty\"`\n\tListenerPath     string          `protobuf:\"bytes,5,opt,name=listener_path,json=listenerPath,proto3\" json:\"listener_path,omitempty\"`\n\tListenerMetadata string          `protobuf:\"bytes,6,opt,name=listener_metadata,json=listenerMetadata,proto3\" json:\"listener_metadata,omitempty\"`\n\tSyscalls         []*LinuxSyscall `protobuf:\"bytes,7,rep,name=syscalls,proto3\" json:\"syscalls,omitempty\"`\n}\n\nfunc (x *LinuxSeccomp) Reset() {\n\t*x = LinuxSeccomp{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[45]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *LinuxSeccomp) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*LinuxSeccomp) ProtoMessage() {}\n\nfunc (x *LinuxSeccomp) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[45]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use LinuxSeccomp.ProtoReflect.Descriptor instead.\nfunc (*LinuxSeccomp) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{45}\n}\n\nfunc (x *LinuxSeccomp) GetDefaultAction() string {\n\tif x != nil {\n\t\treturn x.DefaultAction\n\t}\n\treturn \"\"\n}\n\nfunc (x *LinuxSeccomp) GetDefaultErrno() *OptionalUInt32 {\n\tif x != nil {\n\t\treturn x.DefaultErrno\n\t}\n\treturn nil\n}\n\nfunc (x *LinuxSeccomp) GetArchitectures() []string {\n\tif x != nil {\n\t\treturn x.Architectures\n\t}\n\treturn nil\n}\n\nfunc (x *LinuxSeccomp) GetFlags() []string {\n\tif x != nil {\n\t\treturn x.Flags\n\t}\n\treturn nil\n}\n\nfunc (x *LinuxSeccomp) GetListenerPath() string {\n\tif x != nil {\n\t\treturn x.ListenerPath\n\t}\n\treturn \"\"\n}\n\nfunc (x *LinuxSeccomp) GetListenerMetadata() string {\n\tif x != nil {\n\t\treturn x.ListenerMetadata\n\t}\n\treturn \"\"\n}\n\nfunc (x *LinuxSeccomp) GetSyscalls() []*LinuxSyscall {\n\tif x != nil {\n\t\treturn x.Syscalls\n\t}\n\treturn nil\n}\n\ntype LinuxSyscall struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tNames    []string           `protobuf:\"bytes,1,rep,name=names,proto3\" json:\"names,omitempty\"`\n\tAction   string             `protobuf:\"bytes,2,opt,name=action,proto3\" json:\"action,omitempty\"`\n\tErrnoRet *OptionalUInt32    `protobuf:\"bytes,3,opt,name=errno_ret,json=errnoRet,proto3\" json:\"errno_ret,omitempty\"`\n\tArgs     []*LinuxSeccompArg `protobuf:\"bytes,4,rep,name=args,proto3\" json:\"args,omitempty\"`\n}\n\nfunc (x *LinuxSyscall) Reset() {\n\t*x = LinuxSyscall{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[46]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *LinuxSyscall) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*LinuxSyscall) ProtoMessage() {}\n\nfunc (x *LinuxSyscall) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[46]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use LinuxSyscall.ProtoReflect.Descriptor instead.\nfunc (*LinuxSyscall) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{46}\n}\n\nfunc (x *LinuxSyscall) GetNames() []string {\n\tif x != nil {\n\t\treturn x.Names\n\t}\n\treturn nil\n}\n\nfunc (x *LinuxSyscall) GetAction() string {\n\tif x != nil {\n\t\treturn x.Action\n\t}\n\treturn \"\"\n}\n\nfunc (x *LinuxSyscall) GetErrnoRet() *OptionalUInt32 {\n\tif x != nil {\n\t\treturn x.ErrnoRet\n\t}\n\treturn nil\n}\n\nfunc (x *LinuxSyscall) GetArgs() []*LinuxSeccompArg {\n\tif x != nil {\n\t\treturn x.Args\n\t}\n\treturn nil\n}\n\ntype LinuxSeccompArg struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tIndex    uint32 `protobuf:\"varint,1,opt,name=index,proto3\" json:\"index,omitempty\"`\n\tValue    uint64 `protobuf:\"varint,2,opt,name=value,proto3\" json:\"value,omitempty\"`\n\tValueTwo uint64 `protobuf:\"varint,3,opt,name=value_two,json=valueTwo,proto3\" json:\"value_two,omitempty\"`\n\tOp       string `protobuf:\"bytes,4,opt,name=op,proto3\" json:\"op,omitempty\"`\n}\n\nfunc (x *LinuxSeccompArg) Reset() {\n\t*x = LinuxSeccompArg{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[47]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *LinuxSeccompArg) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*LinuxSeccompArg) ProtoMessage() {}\n\nfunc (x *LinuxSeccompArg) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[47]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use LinuxSeccompArg.ProtoReflect.Descriptor instead.\nfunc (*LinuxSeccompArg) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{47}\n}\n\nfunc (x *LinuxSeccompArg) GetIndex() uint32 {\n\tif x != nil {\n\t\treturn x.Index\n\t}\n\treturn 0\n}\n\nfunc (x *LinuxSeccompArg) GetValue() uint64 {\n\tif x != nil {\n\t\treturn x.Value\n\t}\n\treturn 0\n}\n\nfunc (x *LinuxSeccompArg) GetValueTwo() uint64 {\n\tif x != nil {\n\t\treturn x.ValueTwo\n\t}\n\treturn 0\n}\n\nfunc (x *LinuxSeccompArg) GetOp() string {\n\tif x != nil {\n\t\treturn x.Op\n\t}\n\treturn \"\"\n}\n\n// Requested update to an already created container.\ntype ContainerUpdate struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tContainerId   string                `protobuf:\"bytes,1,opt,name=container_id,json=containerId,proto3\" json:\"container_id,omitempty\"`\n\tLinux         *LinuxContainerUpdate `protobuf:\"bytes,2,opt,name=linux,proto3\" json:\"linux,omitempty\"`\n\tIgnoreFailure bool                  `protobuf:\"varint,3,opt,name=ignore_failure,json=ignoreFailure,proto3\" json:\"ignore_failure,omitempty\"`\n}\n\nfunc (x *ContainerUpdate) Reset() {\n\t*x = ContainerUpdate{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[48]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *ContainerUpdate) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ContainerUpdate) ProtoMessage() {}\n\nfunc (x *ContainerUpdate) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[48]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ContainerUpdate.ProtoReflect.Descriptor instead.\nfunc (*ContainerUpdate) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{48}\n}\n\nfunc (x *ContainerUpdate) GetContainerId() string {\n\tif x != nil {\n\t\treturn x.ContainerId\n\t}\n\treturn \"\"\n}\n\nfunc (x *ContainerUpdate) GetLinux() *LinuxContainerUpdate {\n\tif x != nil {\n\t\treturn x.Linux\n\t}\n\treturn nil\n}\n\nfunc (x *ContainerUpdate) GetIgnoreFailure() bool {\n\tif x != nil {\n\t\treturn x.IgnoreFailure\n\t}\n\treturn false\n}\n\n// Updates to (linux) resources.\ntype LinuxContainerUpdate struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tResources *LinuxResources `protobuf:\"bytes,1,opt,name=resources,proto3\" json:\"resources,omitempty\"`\n}\n\nfunc (x *LinuxContainerUpdate) Reset() {\n\t*x = LinuxContainerUpdate{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[49]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *LinuxContainerUpdate) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*LinuxContainerUpdate) ProtoMessage() {}\n\nfunc (x *LinuxContainerUpdate) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[49]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use LinuxContainerUpdate.ProtoReflect.Descriptor instead.\nfunc (*LinuxContainerUpdate) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{49}\n}\n\nfunc (x *LinuxContainerUpdate) GetResources() *LinuxResources {\n\tif x != nil {\n\t\treturn x.Resources\n\t}\n\treturn nil\n}\n\n// Request to evict (IOW unsolicitedly stop) a container.\ntype ContainerEviction struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Container to evict.\n\tContainerId string `protobuf:\"bytes,1,opt,name=container_id,json=containerId,proto3\" json:\"container_id,omitempty\"`\n\t// Human-readable reason for eviction.\n\tReason string `protobuf:\"bytes,2,opt,name=reason,proto3\" json:\"reason,omitempty\"`\n}\n\nfunc (x *ContainerEviction) Reset() {\n\t*x = ContainerEviction{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[50]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *ContainerEviction) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ContainerEviction) ProtoMessage() {}\n\nfunc (x *ContainerEviction) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[50]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ContainerEviction.ProtoReflect.Descriptor instead.\nfunc (*ContainerEviction) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{50}\n}\n\nfunc (x *ContainerEviction) GetContainerId() string {\n\tif x != nil {\n\t\treturn x.ContainerId\n\t}\n\treturn \"\"\n}\n\nfunc (x *ContainerEviction) GetReason() string {\n\tif x != nil {\n\t\treturn x.Reason\n\t}\n\treturn \"\"\n}\n\ntype LinuxRdt struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tClosId           *OptionalString         `protobuf:\"bytes,1,opt,name=clos_id,json=closId,proto3\" json:\"clos_id,omitempty\"`\n\tSchemata         *OptionalRepeatedString `protobuf:\"bytes,2,opt,name=schemata,proto3\" json:\"schemata,omitempty\"`\n\tEnableMonitoring *OptionalBool           `protobuf:\"bytes,3,opt,name=enable_monitoring,json=enableMonitoring,proto3\" json:\"enable_monitoring,omitempty\"`\n\t// NRI specific field to mark the RDT config for removal.\n\tRemove bool `protobuf:\"varint,4,opt,name=remove,proto3\" json:\"remove,omitempty\"`\n}\n\nfunc (x *LinuxRdt) Reset() {\n\t*x = LinuxRdt{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[51]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *LinuxRdt) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*LinuxRdt) ProtoMessage() {}\n\nfunc (x *LinuxRdt) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[51]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use LinuxRdt.ProtoReflect.Descriptor instead.\nfunc (*LinuxRdt) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{51}\n}\n\nfunc (x *LinuxRdt) GetClosId() *OptionalString {\n\tif x != nil {\n\t\treturn x.ClosId\n\t}\n\treturn nil\n}\n\nfunc (x *LinuxRdt) GetSchemata() *OptionalRepeatedString {\n\tif x != nil {\n\t\treturn x.Schemata\n\t}\n\treturn nil\n}\n\nfunc (x *LinuxRdt) GetEnableMonitoring() *OptionalBool {\n\tif x != nil {\n\t\treturn x.EnableMonitoring\n\t}\n\treturn nil\n}\n\nfunc (x *LinuxRdt) GetRemove() bool {\n\tif x != nil {\n\t\treturn x.Remove\n\t}\n\treturn false\n}\n\n// KeyValue represents an environment variable.\ntype KeyValue struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tKey   string `protobuf:\"bytes,1,opt,name=key,proto3\" json:\"key,omitempty\"`\n\tValue string `protobuf:\"bytes,2,opt,name=value,proto3\" json:\"value,omitempty\"`\n}\n\nfunc (x *KeyValue) Reset() {\n\t*x = KeyValue{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[52]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *KeyValue) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*KeyValue) ProtoMessage() {}\n\nfunc (x *KeyValue) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[52]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use KeyValue.ProtoReflect.Descriptor instead.\nfunc (*KeyValue) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{52}\n}\n\nfunc (x *KeyValue) GetKey() string {\n\tif x != nil {\n\t\treturn x.Key\n\t}\n\treturn \"\"\n}\n\nfunc (x *KeyValue) GetValue() string {\n\tif x != nil {\n\t\treturn x.Value\n\t}\n\treturn \"\"\n}\n\n// An optional string value.\ntype OptionalString struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tValue string `protobuf:\"bytes,1,opt,name=value,proto3\" json:\"value,omitempty\"`\n}\n\nfunc (x *OptionalString) Reset() {\n\t*x = OptionalString{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[53]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *OptionalString) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*OptionalString) ProtoMessage() {}\n\nfunc (x *OptionalString) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[53]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use OptionalString.ProtoReflect.Descriptor instead.\nfunc (*OptionalString) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{53}\n}\n\nfunc (x *OptionalString) GetValue() string {\n\tif x != nil {\n\t\treturn x.Value\n\t}\n\treturn \"\"\n}\n\n// An optional collection of strings.\ntype OptionalRepeatedString struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tValue []string `protobuf:\"bytes,1,rep,name=value,proto3\" json:\"value,omitempty\"`\n}\n\nfunc (x *OptionalRepeatedString) Reset() {\n\t*x = OptionalRepeatedString{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[54]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *OptionalRepeatedString) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*OptionalRepeatedString) ProtoMessage() {}\n\nfunc (x *OptionalRepeatedString) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[54]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use OptionalRepeatedString.ProtoReflect.Descriptor instead.\nfunc (*OptionalRepeatedString) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{54}\n}\n\nfunc (x *OptionalRepeatedString) GetValue() []string {\n\tif x != nil {\n\t\treturn x.Value\n\t}\n\treturn nil\n}\n\n// An optional signed integer value.\ntype OptionalInt struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tValue int64 `protobuf:\"varint,1,opt,name=value,proto3\" json:\"value,omitempty\"`\n}\n\nfunc (x *OptionalInt) Reset() {\n\t*x = OptionalInt{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[55]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *OptionalInt) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*OptionalInt) ProtoMessage() {}\n\nfunc (x *OptionalInt) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[55]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use OptionalInt.ProtoReflect.Descriptor instead.\nfunc (*OptionalInt) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{55}\n}\n\nfunc (x *OptionalInt) GetValue() int64 {\n\tif x != nil {\n\t\treturn x.Value\n\t}\n\treturn 0\n}\n\n// An optional 32-bit signed integer value.\ntype OptionalInt32 struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tValue int32 `protobuf:\"varint,1,opt,name=value,proto3\" json:\"value,omitempty\"`\n}\n\nfunc (x *OptionalInt32) Reset() {\n\t*x = OptionalInt32{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[56]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *OptionalInt32) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*OptionalInt32) ProtoMessage() {}\n\nfunc (x *OptionalInt32) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[56]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use OptionalInt32.ProtoReflect.Descriptor instead.\nfunc (*OptionalInt32) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{56}\n}\n\nfunc (x *OptionalInt32) GetValue() int32 {\n\tif x != nil {\n\t\treturn x.Value\n\t}\n\treturn 0\n}\n\n// An optional 32-bit unsigned integer value.\ntype OptionalUInt32 struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tValue uint32 `protobuf:\"varint,1,opt,name=value,proto3\" json:\"value,omitempty\"`\n}\n\nfunc (x *OptionalUInt32) Reset() {\n\t*x = OptionalUInt32{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[57]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *OptionalUInt32) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*OptionalUInt32) ProtoMessage() {}\n\nfunc (x *OptionalUInt32) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[57]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use OptionalUInt32.ProtoReflect.Descriptor instead.\nfunc (*OptionalUInt32) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{57}\n}\n\nfunc (x *OptionalUInt32) GetValue() uint32 {\n\tif x != nil {\n\t\treturn x.Value\n\t}\n\treturn 0\n}\n\n// An optional 64-bit signed integer value.\ntype OptionalInt64 struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tValue int64 `protobuf:\"varint,1,opt,name=value,proto3\" json:\"value,omitempty\"`\n}\n\nfunc (x *OptionalInt64) Reset() {\n\t*x = OptionalInt64{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[58]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *OptionalInt64) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*OptionalInt64) ProtoMessage() {}\n\nfunc (x *OptionalInt64) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[58]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use OptionalInt64.ProtoReflect.Descriptor instead.\nfunc (*OptionalInt64) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{58}\n}\n\nfunc (x *OptionalInt64) GetValue() int64 {\n\tif x != nil {\n\t\treturn x.Value\n\t}\n\treturn 0\n}\n\n// An optional 64-bit unsigned integer value.\ntype OptionalUInt64 struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tValue uint64 `protobuf:\"varint,1,opt,name=value,proto3\" json:\"value,omitempty\"`\n}\n\nfunc (x *OptionalUInt64) Reset() {\n\t*x = OptionalUInt64{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[59]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *OptionalUInt64) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*OptionalUInt64) ProtoMessage() {}\n\nfunc (x *OptionalUInt64) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[59]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use OptionalUInt64.ProtoReflect.Descriptor instead.\nfunc (*OptionalUInt64) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{59}\n}\n\nfunc (x *OptionalUInt64) GetValue() uint64 {\n\tif x != nil {\n\t\treturn x.Value\n\t}\n\treturn 0\n}\n\n// An optional boolean value.\ntype OptionalBool struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tValue bool `protobuf:\"varint,1,opt,name=value,proto3\" json:\"value,omitempty\"`\n}\n\nfunc (x *OptionalBool) Reset() {\n\t*x = OptionalBool{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[60]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *OptionalBool) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*OptionalBool) ProtoMessage() {}\n\nfunc (x *OptionalBool) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[60]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use OptionalBool.ProtoReflect.Descriptor instead.\nfunc (*OptionalBool) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{60}\n}\n\nfunc (x *OptionalBool) GetValue() bool {\n\tif x != nil {\n\t\treturn x.Value\n\t}\n\treturn false\n}\n\n// An optional value of file permissions.\ntype OptionalFileMode struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tValue uint32 `protobuf:\"varint,1,opt,name=value,proto3\" json:\"value,omitempty\"`\n}\n\nfunc (x *OptionalFileMode) Reset() {\n\t*x = OptionalFileMode{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[61]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *OptionalFileMode) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*OptionalFileMode) ProtoMessage() {}\n\nfunc (x *OptionalFileMode) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[61]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use OptionalFileMode.ProtoReflect.Descriptor instead.\nfunc (*OptionalFileMode) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{61}\n}\n\nfunc (x *OptionalFileMode) GetValue() uint32 {\n\tif x != nil {\n\t\treturn x.Value\n\t}\n\treturn 0\n}\n\n// CompoundFieldOwners tracks 'plugin ownership' of compound fields\n// which can be adjusted entry by entry, typically maps or slices.\n// It is used to track ownership for annotations, mounts, devices,\n// environment variables, hugepage limits, etc. The key identifies\n// the owned entry (annotation key, mount destination, device path,\n// environment variable name, etc.). The value is the owning plugin.\ntype CompoundFieldOwners struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tOwners map[string]string `protobuf:\"bytes,1,rep,name=owners,proto3\" json:\"owners,omitempty\" protobuf_key:\"bytes,1,opt,name=key,proto3\" protobuf_val:\"bytes,2,opt,name=value,proto3\"`\n}\n\nfunc (x *CompoundFieldOwners) Reset() {\n\t*x = CompoundFieldOwners{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[62]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *CompoundFieldOwners) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*CompoundFieldOwners) ProtoMessage() {}\n\nfunc (x *CompoundFieldOwners) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[62]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use CompoundFieldOwners.ProtoReflect.Descriptor instead.\nfunc (*CompoundFieldOwners) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{62}\n}\n\nfunc (x *CompoundFieldOwners) GetOwners() map[string]string {\n\tif x != nil {\n\t\treturn x.Owners\n\t}\n\treturn nil\n}\n\n// FieldOwners tracks field 'plugin ownership' for a single container.\n// Keys represent adjustable fields of a container. For simple fields,\n// the value is the plugin that last modified the field. For compound\n// fields, the value is a CompoundFieldOwners which provides tracking\n// 'plugin ownership' per field for compound data, typically maps and\n// slices. Field enum values are used to index both maps, using Key()\n// to get the int32 for the Field.\ntype FieldOwners struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tSimple   map[int32]string               `protobuf:\"bytes,1,rep,name=simple,proto3\" json:\"simple,omitempty\" protobuf_key:\"varint,1,opt,name=key,proto3\" protobuf_val:\"bytes,2,opt,name=value,proto3\"`\n\tCompound map[int32]*CompoundFieldOwners `protobuf:\"bytes,2,rep,name=compound,proto3\" json:\"compound,omitempty\" protobuf_key:\"varint,1,opt,name=key,proto3\" protobuf_val:\"bytes,2,opt,name=value,proto3\"`\n}\n\nfunc (x *FieldOwners) Reset() {\n\t*x = FieldOwners{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[63]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *FieldOwners) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*FieldOwners) ProtoMessage() {}\n\nfunc (x *FieldOwners) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[63]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use FieldOwners.ProtoReflect.Descriptor instead.\nfunc (*FieldOwners) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{63}\n}\n\nfunc (x *FieldOwners) GetSimple() map[int32]string {\n\tif x != nil {\n\t\treturn x.Simple\n\t}\n\treturn nil\n}\n\nfunc (x *FieldOwners) GetCompound() map[int32]*CompoundFieldOwners {\n\tif x != nil {\n\t\treturn x.Compound\n\t}\n\treturn nil\n}\n\n// OwningPlugins tracks field 'plugin ownership' for multiple containers.\n// The string keys are container IDs. The values are FieldOwners which\n// track 'plugin ownership' per adjustable field for the container.\ntype OwningPlugins struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tOwners map[string]*FieldOwners `protobuf:\"bytes,1,rep,name=owners,proto3\" json:\"owners,omitempty\" protobuf_key:\"bytes,1,opt,name=key,proto3\" protobuf_val:\"bytes,2,opt,name=value,proto3\"`\n}\n\nfunc (x *OwningPlugins) Reset() {\n\t*x = OwningPlugins{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_pkg_api_api_proto_msgTypes[64]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *OwningPlugins) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*OwningPlugins) ProtoMessage() {}\n\nfunc (x *OwningPlugins) ProtoReflect() protoreflect.Message {\n\tmi := &file_pkg_api_api_proto_msgTypes[64]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use OwningPlugins.ProtoReflect.Descriptor instead.\nfunc (*OwningPlugins) Descriptor() ([]byte, []int) {\n\treturn file_pkg_api_api_proto_rawDescGZIP(), []int{64}\n}\n\nfunc (x *OwningPlugins) GetOwners() map[string]*FieldOwners {\n\tif x != nil {\n\t\treturn x.Owners\n\t}\n\treturn nil\n}\n\nvar File_pkg_api_api_proto protoreflect.FileDescriptor\n\nvar file_pkg_api_api_proto_rawDesc = []byte{\n\t0x0a, 0x11, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x72,\n\t0x6f, 0x74, 0x6f, 0x12, 0x14, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69,\n\t0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x22, 0x57, 0x0a, 0x15, 0x52, 0x65, 0x67,\n\t0x69, 0x73, 0x74, 0x65, 0x72, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65,\n\t0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x6e, 0x61, 0x6d,\n\t0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x4e,\n\t0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x69, 0x64,\n\t0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x49,\n\t0x64, 0x78, 0x22, 0x97, 0x01, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e,\n\t0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d,\n\t0x0a, 0x06, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25,\n\t0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61,\n\t0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x55,\n\t0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x06, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x3d, 0x0a,\n\t0x05, 0x65, 0x76, 0x69, 0x63, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6e,\n\t0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,\n\t0x68, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x45, 0x76, 0x69,\n\t0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x65, 0x76, 0x69, 0x63, 0x74, 0x22, 0x59, 0x0a, 0x18,\n\t0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73,\n\t0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x06, 0x66, 0x61, 0x69, 0x6c,\n\t0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70,\n\t0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,\n\t0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52,\n\t0x06, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x22, 0xbe, 0x01, 0x0a, 0x0a, 0x4c, 0x6f, 0x67, 0x52,\n\t0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x01, 0x20,\n\t0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x3c, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65,\n\t0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b,\n\t0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c,\n\t0x6f, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52,\n\t0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0x60, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12,\n\t0x15, 0x0a, 0x11, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49,\n\t0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f,\n\t0x44, 0x45, 0x42, 0x55, 0x47, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x4c, 0x45, 0x56, 0x45, 0x4c,\n\t0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x4c, 0x45, 0x56, 0x45, 0x4c,\n\t0x5f, 0x57, 0x41, 0x52, 0x4e, 0x10, 0x03, 0x12, 0x0f, 0x0a, 0x0b, 0x4c, 0x45, 0x56, 0x45, 0x4c,\n\t0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x22, 0xd2, 0x01, 0x0a, 0x10, 0x43, 0x6f, 0x6e,\n\t0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a,\n\t0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63,\n\t0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65,\n\t0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x75, 0x6e,\n\t0x74, 0x69, 0x6d, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x75, 0x6e, 0x74,\n\t0x69, 0x6d, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28,\n\t0x09, 0x52, 0x0e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f,\n\t0x6e, 0x12, 0x31, 0x0a, 0x14, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f,\n\t0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52,\n\t0x13, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d,\n\t0x65, 0x6f, 0x75, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f,\n\t0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x72,\n\t0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0x2b, 0x0a,\n\t0x11, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,\n\t0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01,\n\t0x28, 0x05, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x9f, 0x01, 0x0a, 0x12, 0x53,\n\t0x79, 0x6e, 0x63, 0x68, 0x72, 0x6f, 0x6e, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,\n\t0x74, 0x12, 0x34, 0x0a, 0x04, 0x70, 0x6f, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,\n\t0x20, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,\n\t0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x6f, 0x64, 0x53, 0x61, 0x6e, 0x64, 0x62, 0x6f,\n\t0x78, 0x52, 0x04, 0x70, 0x6f, 0x64, 0x73, 0x12, 0x3f, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61,\n\t0x69, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6e, 0x72,\n\t0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,\n\t0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x0a, 0x63, 0x6f,\n\t0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x6f, 0x72, 0x65,\n\t0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x6d, 0x6f, 0x72, 0x65, 0x22, 0x68, 0x0a, 0x13,\n\t0x53, 0x79, 0x6e, 0x63, 0x68, 0x72, 0x6f, 0x6e, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,\n\t0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x06, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20,\n\t0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70,\n\t0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61,\n\t0x69, 0x6e, 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x06, 0x75, 0x70, 0x64, 0x61,\n\t0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08,\n\t0x52, 0x04, 0x6d, 0x6f, 0x72, 0x65, 0x22, 0x8b, 0x01, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74,\n\t0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,\n\t0x74, 0x12, 0x32, 0x0a, 0x03, 0x70, 0x6f, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20,\n\t0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61,\n\t0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x6f, 0x64, 0x53, 0x61, 0x6e, 0x64, 0x62, 0x6f, 0x78,\n\t0x52, 0x03, 0x70, 0x6f, 0x64, 0x12, 0x3d, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,\n\t0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70,\n\t0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,\n\t0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x61,\n\t0x69, 0x6e, 0x65, 0x72, 0x22, 0xda, 0x01, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43,\n\t0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,\n\t0x12, 0x41, 0x0a, 0x06, 0x61, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,\n\t0x32, 0x29, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,\n\t0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,\n\t0x72, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x61, 0x64, 0x6a,\n\t0x75, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x06, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20,\n\t0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70,\n\t0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61,\n\t0x69, 0x6e, 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x06, 0x75, 0x70, 0x64, 0x61,\n\t0x74, 0x65, 0x12, 0x3d, 0x0a, 0x05, 0x65, 0x76, 0x69, 0x63, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28,\n\t0x0b, 0x32, 0x27, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e,\n\t0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,\n\t0x65, 0x72, 0x45, 0x76, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x65, 0x76, 0x69, 0x63,\n\t0x74, 0x22, 0xda, 0x01, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74,\n\t0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x03,\n\t0x70, 0x6f, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6e, 0x72, 0x69, 0x2e,\n\t0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,\n\t0x2e, 0x50, 0x6f, 0x64, 0x53, 0x61, 0x6e, 0x64, 0x62, 0x6f, 0x78, 0x52, 0x03, 0x70, 0x6f, 0x64,\n\t0x12, 0x3d, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x18, 0x02, 0x20,\n\t0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70,\n\t0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61,\n\t0x69, 0x6e, 0x65, 0x72, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12,\n\t0x4d, 0x0a, 0x0f, 0x6c, 0x69, 0x6e, 0x75, 0x78, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70,\n\t0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,\n\t0x4c, 0x69, 0x6e, 0x75, 0x78, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x0e,\n\t0x6c, 0x69, 0x6e, 0x75, 0x78, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x22, 0x97,\n\t0x01, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,\n\t0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x06, 0x75, 0x70,\n\t0x64, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6e, 0x72, 0x69,\n\t0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,\n\t0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74,\n\t0x65, 0x52, 0x06, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x3d, 0x0a, 0x05, 0x65, 0x76, 0x69,\n\t0x63, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70,\n\t0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,\n\t0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x45, 0x76, 0x69, 0x63, 0x74, 0x69, 0x6f,\n\t0x6e, 0x52, 0x05, 0x65, 0x76, 0x69, 0x63, 0x74, 0x22, 0x89, 0x01, 0x0a, 0x14, 0x53, 0x74, 0x6f,\n\t0x70, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,\n\t0x74, 0x12, 0x32, 0x0a, 0x03, 0x70, 0x6f, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20,\n\t0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61,\n\t0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x6f, 0x64, 0x53, 0x61, 0x6e, 0x64, 0x62, 0x6f, 0x78,\n\t0x52, 0x03, 0x70, 0x6f, 0x64, 0x12, 0x3d, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,\n\t0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70,\n\t0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,\n\t0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x61,\n\t0x69, 0x6e, 0x65, 0x72, 0x22, 0x56, 0x0a, 0x15, 0x53, 0x74, 0x6f, 0x70, 0x43, 0x6f, 0x6e, 0x74,\n\t0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a,\n\t0x06, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e,\n\t0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c,\n\t0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x55, 0x70,\n\t0x64, 0x61, 0x74, 0x65, 0x52, 0x06, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x22, 0xfc, 0x01, 0x0a,\n\t0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x53, 0x61, 0x6e, 0x64, 0x62, 0x6f,\n\t0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x03, 0x70, 0x6f, 0x64, 0x18,\n\t0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e,\n\t0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x6f, 0x64,\n\t0x53, 0x61, 0x6e, 0x64, 0x62, 0x6f, 0x78, 0x52, 0x03, 0x70, 0x6f, 0x64, 0x12, 0x5e, 0x0a, 0x18,\n\t0x6f, 0x76, 0x65, 0x72, 0x68, 0x65, 0x61, 0x64, 0x5f, 0x6c, 0x69, 0x6e, 0x75, 0x78, 0x5f, 0x72,\n\t0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24,\n\t0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61,\n\t0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x52, 0x65, 0x73, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x73, 0x52, 0x16, 0x6f, 0x76, 0x65, 0x72, 0x68, 0x65, 0x61, 0x64, 0x4c, 0x69,\n\t0x6e, 0x75, 0x78, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x4d, 0x0a, 0x0f,\n\t0x6c, 0x69, 0x6e, 0x75, 0x78, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18,\n\t0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e,\n\t0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x6e,\n\t0x75, 0x78, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x0e, 0x6c, 0x69, 0x6e,\n\t0x75, 0x78, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x22, 0x1a, 0x0a, 0x18, 0x55,\n\t0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x53, 0x61, 0x6e, 0x64, 0x62, 0x6f, 0x78, 0x52,\n\t0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb8, 0x01, 0x0a, 0x10, 0x53, 0x74, 0x61, 0x74,\n\t0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x31, 0x0a, 0x05,\n\t0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x6e, 0x72,\n\t0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,\n\t0x61, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x12,\n\t0x32, 0x0a, 0x03, 0x70, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6e,\n\t0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,\n\t0x68, 0x61, 0x31, 0x2e, 0x50, 0x6f, 0x64, 0x53, 0x61, 0x6e, 0x64, 0x62, 0x6f, 0x78, 0x52, 0x03,\n\t0x70, 0x6f, 0x64, 0x12, 0x3d, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72,\n\t0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67,\n\t0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6f,\n\t0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,\n\t0x65, 0x72, 0x22, 0x96, 0x03, 0x0a, 0x22, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x43,\n\t0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x6d, 0x65,\n\t0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x03, 0x70, 0x6f, 0x64,\n\t0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67,\n\t0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x6f,\n\t0x64, 0x53, 0x61, 0x6e, 0x64, 0x62, 0x6f, 0x78, 0x52, 0x03, 0x70, 0x6f, 0x64, 0x12, 0x3d, 0x0a,\n\t0x09, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,\n\t0x32, 0x1f, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,\n\t0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,\n\t0x72, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x41, 0x0a, 0x06,\n\t0x61, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6e,\n\t0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,\n\t0x68, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x41, 0x64, 0x6a,\n\t0x75, 0x73, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x61, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x12,\n\t0x3d, 0x0a, 0x06, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32,\n\t0x25, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,\n\t0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72,\n\t0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x06, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x3b,\n\t0x0a, 0x06, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23,\n\t0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61,\n\t0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4f, 0x77, 0x6e, 0x69, 0x6e, 0x67, 0x50, 0x6c, 0x75, 0x67,\n\t0x69, 0x6e, 0x73, 0x52, 0x06, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x3e, 0x0a, 0x07, 0x70,\n\t0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6e,\n\t0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,\n\t0x68, 0x61, 0x31, 0x2e, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e,\n\t0x63, 0x65, 0x52, 0x07, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x22, 0x3a, 0x0a, 0x0e, 0x50,\n\t0x6c, 0x75, 0x67, 0x69, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a,\n\t0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d,\n\t0x65, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,\n\t0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x55, 0x0a, 0x23, 0x56, 0x61, 0x6c, 0x69, 0x64,\n\t0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x41, 0x64, 0x6a, 0x75,\n\t0x73, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16,\n\t0x0a, 0x06, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06,\n\t0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e,\n\t0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x07,\n\t0x0a, 0x05, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x80, 0x04, 0x0a, 0x0a, 0x50, 0x6f, 0x64, 0x53,\n\t0x61, 0x6e, 0x64, 0x62, 0x6f, 0x78, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,\n\t0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02,\n\t0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69,\n\t0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09,\n\t0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,\n\t0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x44, 0x0a, 0x06, 0x6c, 0x61,\n\t0x62, 0x65, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6e, 0x72, 0x69,\n\t0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,\n\t0x31, 0x2e, 0x50, 0x6f, 0x64, 0x53, 0x61, 0x6e, 0x64, 0x62, 0x6f, 0x78, 0x2e, 0x4c, 0x61, 0x62,\n\t0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73,\n\t0x12, 0x53, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18,\n\t0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e,\n\t0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x6f, 0x64,\n\t0x53, 0x61, 0x6e, 0x64, 0x62, 0x6f, 0x78, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69,\n\t0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61,\n\t0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65,\n\t0x5f, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e,\n\t0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x12, 0x3b,\n\t0x0a, 0x05, 0x6c, 0x69, 0x6e, 0x75, 0x78, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e,\n\t0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c,\n\t0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x50, 0x6f, 0x64, 0x53, 0x61, 0x6e,\n\t0x64, 0x62, 0x6f, 0x78, 0x52, 0x05, 0x6c, 0x69, 0x6e, 0x75, 0x78, 0x12, 0x10, 0x0a, 0x03, 0x70,\n\t0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x70, 0x69, 0x64, 0x12, 0x10, 0x0a,\n\t0x03, 0x69, 0x70, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x69, 0x70, 0x73, 0x1a,\n\t0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,\n\t0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79,\n\t0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,\n\t0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3e, 0x0a, 0x10, 0x41, 0x6e,\n\t0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,\n\t0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79,\n\t0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,\n\t0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xf7, 0x02, 0x0a, 0x0f, 0x4c,\n\t0x69, 0x6e, 0x75, 0x78, 0x50, 0x6f, 0x64, 0x53, 0x61, 0x6e, 0x64, 0x62, 0x6f, 0x78, 0x12, 0x47,\n\t0x0a, 0x0c, 0x70, 0x6f, 0x64, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x68, 0x65, 0x61, 0x64, 0x18, 0x01,\n\t0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61,\n\t0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x75,\n\t0x78, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x0b, 0x70, 0x6f, 0x64, 0x4f,\n\t0x76, 0x65, 0x72, 0x68, 0x65, 0x61, 0x64, 0x12, 0x49, 0x0a, 0x0d, 0x70, 0x6f, 0x64, 0x5f, 0x72,\n\t0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24,\n\t0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61,\n\t0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x52, 0x65, 0x73, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x73, 0x52, 0x0c, 0x70, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x70, 0x61, 0x72,\n\t0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x67, 0x72, 0x6f, 0x75,\n\t0x70, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x67, 0x72, 0x6f, 0x75,\n\t0x70, 0x73, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63,\n\t0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x50, 0x61, 0x74, 0x68, 0x12, 0x44, 0x0a, 0x0a, 0x6e, 0x61,\n\t0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24,\n\t0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61,\n\t0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x4e, 0x61, 0x6d, 0x65, 0x73,\n\t0x70, 0x61, 0x63, 0x65, 0x52, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73,\n\t0x12, 0x42, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x06, 0x20,\n\t0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70,\n\t0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x75, 0x78,\n\t0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x73, 0x22, 0xf8, 0x07, 0x0a, 0x09, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,\n\t0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02,\n\t0x69, 0x64, 0x12, 0x24, 0x0a, 0x0e, 0x70, 0x6f, 0x64, 0x5f, 0x73, 0x61, 0x6e, 0x64, 0x62, 0x6f,\n\t0x78, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x6f, 0x64, 0x53,\n\t0x61, 0x6e, 0x64, 0x62, 0x6f, 0x78, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,\n\t0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x05,\n\t0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6e, 0x72,\n\t0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,\n\t0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74,\n\t0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65,\n\t0x6c, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70,\n\t0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,\n\t0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73,\n\t0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x52, 0x0a,\n\t0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03,\n\t0x28, 0x0b, 0x32, 0x30, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69,\n\t0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69,\n\t0x6e, 0x65, 0x72, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45,\n\t0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e,\n\t0x73, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52,\n\t0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x08, 0x20, 0x03,\n\t0x28, 0x09, 0x52, 0x03, 0x65, 0x6e, 0x76, 0x12, 0x33, 0x0a, 0x06, 0x6d, 0x6f, 0x75, 0x6e, 0x74,\n\t0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b,\n\t0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4d,\n\t0x6f, 0x75, 0x6e, 0x74, 0x52, 0x06, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x31, 0x0a, 0x05,\n\t0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6e, 0x72,\n\t0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,\n\t0x61, 0x31, 0x2e, 0x48, 0x6f, 0x6f, 0x6b, 0x73, 0x52, 0x05, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x12,\n\t0x3a, 0x0a, 0x05, 0x6c, 0x69, 0x6e, 0x75, 0x78, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24,\n\t0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61,\n\t0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x43, 0x6f, 0x6e, 0x74, 0x61,\n\t0x69, 0x6e, 0x65, 0x72, 0x52, 0x05, 0x6c, 0x69, 0x6e, 0x75, 0x78, 0x12, 0x10, 0x0a, 0x03, 0x70,\n\t0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x70, 0x69, 0x64, 0x12, 0x3b, 0x0a,\n\t0x07, 0x72, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21,\n\t0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61,\n\t0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x4f, 0x53, 0x49, 0x58, 0x52, 0x6c, 0x69, 0x6d, 0x69,\n\t0x74, 0x52, 0x07, 0x72, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72,\n\t0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09,\n\t0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61,\n\t0x72, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73,\n\t0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x69, 0x6e, 0x69,\n\t0x73, 0x68, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66,\n\t0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x78, 0x69,\n\t0x74, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x65, 0x78,\n\t0x69, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73,\n\t0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73,\n\t0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x73,\n\t0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x13, 0x20,\n\t0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61,\n\t0x67, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x43, 0x44, 0x49, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65,\n\t0x73, 0x18, 0x14, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b,\n\t0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43,\n\t0x44, 0x49, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x0a, 0x43, 0x44, 0x49, 0x44, 0x65, 0x76,\n\t0x69, 0x63, 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x15, 0x20, 0x01,\n\t0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69,\n\t0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04,\n\t0x75, 0x73, 0x65, 0x72, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e,\n\t0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,\n\t0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,\n\t0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a,\n\t0x3e, 0x0a, 0x10, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e,\n\t0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,\n\t0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,\n\t0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22,\n\t0x6f, 0x0a, 0x05, 0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x74,\n\t0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64,\n\t0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79,\n\t0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16,\n\t0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,\n\t0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,\n\t0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,\n\t0x22, 0x80, 0x03, 0x0a, 0x05, 0x48, 0x6f, 0x6f, 0x6b, 0x73, 0x12, 0x36, 0x0a, 0x08, 0x70, 0x72,\n\t0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6e,\n\t0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,\n\t0x68, 0x61, 0x31, 0x2e, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x08, 0x70, 0x72, 0x65, 0x73, 0x74, 0x61,\n\t0x72, 0x74, 0x12, 0x41, 0x0a, 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x75, 0x6e,\n\t0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6e, 0x72, 0x69,\n\t0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,\n\t0x31, 0x2e, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x75,\n\t0x6e, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x45, 0x0a, 0x10, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f,\n\t0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32,\n\t0x1a, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,\n\t0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x0f, 0x63, 0x72, 0x65,\n\t0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x43, 0x0a, 0x0f,\n\t0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x18,\n\t0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e,\n\t0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x48, 0x6f, 0x6f,\n\t0x6b, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,\n\t0x72, 0x12, 0x38, 0x0a, 0x09, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x05,\n\t0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61,\n\t0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x48, 0x6f, 0x6f, 0x6b,\n\t0x52, 0x09, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x36, 0x0a, 0x08, 0x70,\n\t0x6f, 0x73, 0x74, 0x73, 0x74, 0x6f, 0x70, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e,\n\t0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c,\n\t0x70, 0x68, 0x61, 0x31, 0x2e, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x74, 0x73,\n\t0x74, 0x6f, 0x70, 0x22, 0x7d, 0x0a, 0x04, 0x48, 0x6f, 0x6f, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x70,\n\t0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12,\n\t0x12, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x61,\n\t0x72, 0x67, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09,\n\t0x52, 0x03, 0x65, 0x6e, 0x76, 0x12, 0x3b, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74,\n\t0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67,\n\t0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4f, 0x70,\n\t0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f,\n\t0x75, 0x74, 0x22, 0xdb, 0x07, 0x0a, 0x0e, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x43, 0x6f, 0x6e, 0x74,\n\t0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x44, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61,\n\t0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6e, 0x72, 0x69, 0x2e,\n\t0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,\n\t0x2e, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52,\n\t0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x3b, 0x0a, 0x07, 0x64,\n\t0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6e,\n\t0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,\n\t0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52,\n\t0x07, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x42, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6e, 0x72,\n\t0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,\n\t0x61, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x73, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x0d,\n\t0x6f, 0x6f, 0x6d, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x61, 0x64, 0x6a, 0x18, 0x04, 0x20,\n\t0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70,\n\t0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f,\n\t0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x52, 0x0b, 0x6f, 0x6f, 0x6d, 0x53, 0x63, 0x6f, 0x72, 0x65,\n\t0x41, 0x64, 0x6a, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x5f, 0x70,\n\t0x61, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x67, 0x72, 0x6f, 0x75,\n\t0x70, 0x73, 0x50, 0x61, 0x74, 0x68, 0x12, 0x46, 0x0a, 0x0b, 0x69, 0x6f, 0x5f, 0x70, 0x72, 0x69,\n\t0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6e, 0x72,\n\t0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,\n\t0x61, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x49, 0x4f, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69,\n\t0x74, 0x79, 0x52, 0x0a, 0x69, 0x6f, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x4e,\n\t0x0a, 0x0f, 0x73, 0x65, 0x63, 0x63, 0x6f, 0x6d, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c,\n\t0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b,\n\t0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53,\n\t0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x0e,\n\t0x73, 0x65, 0x63, 0x63, 0x6f, 0x6d, 0x70, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x49,\n\t0x0a, 0x0e, 0x73, 0x65, 0x63, 0x63, 0x6f, 0x6d, 0x70, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,\n\t0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67,\n\t0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69,\n\t0x6e, 0x75, 0x78, 0x53, 0x65, 0x63, 0x63, 0x6f, 0x6d, 0x70, 0x52, 0x0d, 0x73, 0x65, 0x63, 0x63,\n\t0x6f, 0x6d, 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x48, 0x0a, 0x06, 0x73, 0x79, 0x73,\n\t0x63, 0x74, 0x6c, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x6e, 0x72, 0x69, 0x2e,\n\t0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,\n\t0x2e, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x2e,\n\t0x53, 0x79, 0x73, 0x63, 0x74, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x73, 0x79, 0x73,\n\t0x63, 0x74, 0x6c, 0x12, 0x55, 0x0a, 0x0b, 0x6e, 0x65, 0x74, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63,\n\t0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70,\n\t0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,\n\t0x4c, 0x69, 0x6e, 0x75, 0x78, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x2e, 0x4e,\n\t0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a,\n\t0x6e, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x42, 0x0a, 0x09, 0x73, 0x63,\n\t0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e,\n\t0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c,\n\t0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75,\n\t0x6c, 0x65, 0x72, 0x52, 0x09, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x12, 0x30,\n\t0x0a, 0x03, 0x72, 0x64, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6e, 0x72,\n\t0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,\n\t0x61, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x52, 0x64, 0x74, 0x52, 0x03, 0x72, 0x64, 0x74,\n\t0x1a, 0x39, 0x0a, 0x0b, 0x53, 0x79, 0x73, 0x63, 0x74, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,\n\t0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65,\n\t0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,\n\t0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x63, 0x0a, 0x0f, 0x4e,\n\t0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,\n\t0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79,\n\t0x12, 0x3a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,\n\t0x24, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,\n\t0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x4e, 0x65, 0x74, 0x44,\n\t0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,\n\t0x22, 0x38, 0x0a, 0x0e, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61,\n\t0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,\n\t0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02,\n\t0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x22, 0x96, 0x02, 0x0a, 0x0b, 0x4c,\n\t0x69, 0x6e, 0x75, 0x78, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61,\n\t0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x12,\n\t0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79,\n\t0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28,\n\t0x03, 0x52, 0x05, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x69, 0x6e, 0x6f,\n\t0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x12, 0x43,\n\t0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28,\n\t0x0b, 0x32, 0x26, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e,\n\t0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,\n\t0x6c, 0x46, 0x69, 0x6c, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x4d,\n\t0x6f, 0x64, 0x65, 0x12, 0x36, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b,\n\t0x32, 0x24, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,\n\t0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,\n\t0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x36, 0x0a, 0x03, 0x67,\n\t0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70,\n\t0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,\n\t0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x52, 0x03,\n\t0x67, 0x69, 0x64, 0x22, 0xcb, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x44, 0x65, 0x76,\n\t0x69, 0x63, 0x65, 0x43, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x6c,\n\t0x6f, 0x77, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x12,\n\t0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74,\n\t0x79, 0x70, 0x65, 0x12, 0x39, 0x0a, 0x05, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01,\n\t0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69,\n\t0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e,\n\t0x61, 0x6c, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x52, 0x05, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x12, 0x39,\n\t0x0a, 0x05, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e,\n\t0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c,\n\t0x70, 0x68, 0x61, 0x31, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x74,\n\t0x36, 0x34, 0x52, 0x05, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x63,\n\t0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x63, 0x63, 0x65, 0x73,\n\t0x73, 0x22, 0x1f, 0x0a, 0x09, 0x43, 0x44, 0x49, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x12,\n\t0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61,\n\t0x6d, 0x65, 0x22, 0x53, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69,\n\t0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03,\n\t0x67, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x67, 0x69, 0x64, 0x12, 0x27,\n\t0x0a, 0x0f, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x67, 0x69, 0x64,\n\t0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0e, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f,\n\t0x6e, 0x61, 0x6c, 0x47, 0x69, 0x64, 0x73, 0x22, 0xda, 0x04, 0x0a, 0x0e, 0x4c, 0x69, 0x6e, 0x75,\n\t0x78, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x06, 0x6d, 0x65,\n\t0x6d, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6e, 0x72, 0x69,\n\t0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,\n\t0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x52, 0x06, 0x6d,\n\t0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x30, 0x0a, 0x03, 0x63, 0x70, 0x75, 0x18, 0x02, 0x20, 0x01,\n\t0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69,\n\t0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x43,\n\t0x50, 0x55, 0x52, 0x03, 0x63, 0x70, 0x75, 0x12, 0x4c, 0x0a, 0x0f, 0x68, 0x75, 0x67, 0x65, 0x70,\n\t0x61, 0x67, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b,\n\t0x32, 0x23, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,\n\t0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x48, 0x75, 0x67, 0x65, 0x70, 0x61, 0x67, 0x65,\n\t0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x0e, 0x68, 0x75, 0x67, 0x65, 0x70, 0x61, 0x67, 0x65, 0x4c,\n\t0x69, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x49, 0x0a, 0x0d, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x69, 0x6f,\n\t0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6e,\n\t0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,\n\t0x68, 0x61, 0x31, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x74, 0x72, 0x69,\n\t0x6e, 0x67, 0x52, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x69, 0x6f, 0x43, 0x6c, 0x61, 0x73, 0x73,\n\t0x12, 0x41, 0x0a, 0x09, 0x72, 0x64, 0x74, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x05, 0x20,\n\t0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70,\n\t0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f,\n\t0x6e, 0x61, 0x6c, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x72, 0x64, 0x74, 0x43, 0x6c,\n\t0x61, 0x73, 0x73, 0x12, 0x4b, 0x0a, 0x07, 0x75, 0x6e, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x06,\n\t0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61,\n\t0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x75,\n\t0x78, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x69, 0x66, 0x69,\n\t0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x75, 0x6e, 0x69, 0x66, 0x69, 0x65, 0x64,\n\t0x12, 0x41, 0x0a, 0x07, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28,\n\t0x0b, 0x32, 0x27, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e,\n\t0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x44, 0x65,\n\t0x76, 0x69, 0x63, 0x65, 0x43, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x07, 0x64, 0x65, 0x76, 0x69,\n\t0x63, 0x65, 0x73, 0x12, 0x33, 0x0a, 0x04, 0x70, 0x69, 0x64, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28,\n\t0x0b, 0x32, 0x1f, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e,\n\t0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x50, 0x69,\n\t0x64, 0x73, 0x52, 0x04, 0x70, 0x69, 0x64, 0x73, 0x1a, 0x3a, 0x0a, 0x0c, 0x55, 0x6e, 0x69, 0x66,\n\t0x69, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,\n\t0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61,\n\t0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,\n\t0x3a, 0x02, 0x38, 0x01, 0x22, 0xaa, 0x04, 0x0a, 0x0b, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x4d, 0x65,\n\t0x6d, 0x6f, 0x72, 0x79, 0x12, 0x39, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20,\n\t0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70,\n\t0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f,\n\t0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12,\n\t0x45, 0x0a, 0x0b, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02,\n\t0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61,\n\t0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4f, 0x70, 0x74, 0x69,\n\t0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x52, 0x0b, 0x72, 0x65, 0x73, 0x65, 0x72,\n\t0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x0a, 0x04, 0x73, 0x77, 0x61, 0x70, 0x18, 0x03,\n\t0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61,\n\t0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4f, 0x70, 0x74, 0x69,\n\t0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x52, 0x04, 0x73, 0x77, 0x61, 0x70, 0x12,\n\t0x3b, 0x0a, 0x06, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32,\n\t0x23, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,\n\t0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49,\n\t0x6e, 0x74, 0x36, 0x34, 0x52, 0x06, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x12, 0x42, 0x0a, 0x0a,\n\t0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x5f, 0x74, 0x63, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b,\n\t0x32, 0x23, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,\n\t0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,\n\t0x49, 0x6e, 0x74, 0x36, 0x34, 0x52, 0x09, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x54, 0x63, 0x70,\n\t0x12, 0x44, 0x0a, 0x0a, 0x73, 0x77, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x18, 0x06,\n\t0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61,\n\t0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4f, 0x70, 0x74, 0x69,\n\t0x6f, 0x6e, 0x61, 0x6c, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x52, 0x0a, 0x73, 0x77, 0x61, 0x70,\n\t0x70, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x12, 0x50, 0x0a, 0x12, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c,\n\t0x65, 0x5f, 0x6f, 0x6f, 0x6d, 0x5f, 0x6b, 0x69, 0x6c, 0x6c, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01,\n\t0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69,\n\t0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e,\n\t0x61, 0x6c, 0x42, 0x6f, 0x6f, 0x6c, 0x52, 0x10, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x4f,\n\t0x6f, 0x6d, 0x4b, 0x69, 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x47, 0x0a, 0x0d, 0x75, 0x73, 0x65, 0x5f,\n\t0x68, 0x69, 0x65, 0x72, 0x61, 0x72, 0x63, 0x68, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32,\n\t0x22, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,\n\t0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x42,\n\t0x6f, 0x6f, 0x6c, 0x52, 0x0c, 0x75, 0x73, 0x65, 0x48, 0x69, 0x65, 0x72, 0x61, 0x72, 0x63, 0x68,\n\t0x79, 0x22, 0x88, 0x03, 0x0a, 0x08, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x43, 0x50, 0x55, 0x12, 0x3c,\n\t0x0a, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24,\n\t0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61,\n\t0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x55, 0x49,\n\t0x6e, 0x74, 0x36, 0x34, 0x52, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x05,\n\t0x71, 0x75, 0x6f, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6e, 0x72,\n\t0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,\n\t0x61, 0x31, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x36, 0x34,\n\t0x52, 0x05, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x12, 0x3c, 0x0a, 0x06, 0x70, 0x65, 0x72, 0x69, 0x6f,\n\t0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b,\n\t0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4f,\n\t0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x52, 0x06, 0x70,\n\t0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x4e, 0x0a, 0x10, 0x72, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d,\n\t0x65, 0x5f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32,\n\t0x23, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,\n\t0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49,\n\t0x6e, 0x74, 0x36, 0x34, 0x52, 0x0f, 0x72, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x75,\n\t0x6e, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x4d, 0x0a, 0x0f, 0x72, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d,\n\t0x65, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24,\n\t0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61,\n\t0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x55, 0x49,\n\t0x6e, 0x74, 0x36, 0x34, 0x52, 0x0e, 0x72, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x50, 0x65,\n\t0x72, 0x69, 0x6f, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x70, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01,\n\t0x28, 0x09, 0x52, 0x04, 0x63, 0x70, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x65, 0x6d, 0x73,\n\t0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x65, 0x6d, 0x73, 0x22, 0x42, 0x0a, 0x0d,\n\t0x48, 0x75, 0x67, 0x65, 0x70, 0x61, 0x67, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1b, 0x0a,\n\t0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,\n\t0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69,\n\t0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74,\n\t0x22, 0xcf, 0x01, 0x0a, 0x0f, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f,\n\t0x66, 0x69, 0x6c, 0x65, 0x12, 0x54, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f,\n\t0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x6e, 0x72, 0x69,\n\t0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,\n\t0x31, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c,\n\t0x65, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x70,\n\t0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6c, 0x6f,\n\t0x63, 0x61, 0x6c, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28,\n\t0x09, 0x52, 0x0c, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x68, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x66, 0x22,\n\t0x41, 0x0a, 0x0b, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x13,\n\t0x0a, 0x0f, 0x52, 0x55, 0x4e, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c,\n\t0x54, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x55, 0x4e, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x4e, 0x45,\n\t0x44, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x4c, 0x4f, 0x43, 0x41, 0x4c, 0x48, 0x4f, 0x53, 0x54,\n\t0x10, 0x02, 0x22, 0x49, 0x0a, 0x0b, 0x50, 0x4f, 0x53, 0x49, 0x58, 0x52, 0x6c, 0x69, 0x6d, 0x69,\n\t0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,\n\t0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20,\n\t0x01, 0x28, 0x04, 0x52, 0x04, 0x68, 0x61, 0x72, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6f, 0x66,\n\t0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6f, 0x66, 0x74, 0x22, 0x21, 0x0a,\n\t0x09, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x50, 0x69, 0x64, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69,\n\t0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74,\n\t0x22, 0x66, 0x0a, 0x0f, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x49, 0x4f, 0x50, 0x72, 0x69, 0x6f, 0x72,\n\t0x69, 0x74, 0x79, 0x12, 0x37, 0x0a, 0x05, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01,\n\t0x28, 0x0e, 0x32, 0x21, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69,\n\t0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x49, 0x4f, 0x50, 0x72, 0x69, 0x6f,\n\t0x43, 0x6c, 0x61, 0x73, 0x73, 0x52, 0x05, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x1a, 0x0a, 0x08,\n\t0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08,\n\t0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, 0x24, 0x0a, 0x0e, 0x4c, 0x69, 0x6e, 0x75,\n\t0x78, 0x4e, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,\n\t0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x92,\n\t0x02, 0x0a, 0x0e, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65,\n\t0x72, 0x12, 0x42, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,\n\t0x0e, 0x32, 0x2a, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e,\n\t0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x53, 0x63,\n\t0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x06, 0x70,\n\t0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20,\n\t0x01, 0x28, 0x05, 0x52, 0x04, 0x6e, 0x69, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69,\n\t0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x72, 0x69,\n\t0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x3e, 0x0a, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x04,\n\t0x20, 0x03, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61,\n\t0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x75,\n\t0x78, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x05,\n\t0x66, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65,\n\t0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x12,\n\t0x1a, 0x0a, 0x08, 0x64, 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28,\n\t0x04, 0x52, 0x08, 0x64, 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70,\n\t0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x70, 0x65, 0x72,\n\t0x69, 0x6f, 0x64, 0x22, 0xa6, 0x04, 0x0a, 0x13, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,\n\t0x72, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x5c, 0x0a, 0x0b, 0x61,\n\t0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b,\n\t0x32, 0x3a, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,\n\t0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,\n\t0x72, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x6e, 0x6e, 0x6f,\n\t0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x61, 0x6e,\n\t0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x33, 0x0a, 0x06, 0x6d, 0x6f, 0x75,\n\t0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6e, 0x72, 0x69, 0x2e,\n\t0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,\n\t0x2e, 0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x06, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x30,\n\t0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6e, 0x72,\n\t0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,\n\t0x61, 0x31, 0x2e, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x03, 0x65, 0x6e, 0x76,\n\t0x12, 0x31, 0x0a, 0x05, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32,\n\t0x1b, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,\n\t0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x48, 0x6f, 0x6f, 0x6b, 0x73, 0x52, 0x05, 0x68, 0x6f,\n\t0x6f, 0x6b, 0x73, 0x12, 0x44, 0x0a, 0x05, 0x6c, 0x69, 0x6e, 0x75, 0x78, 0x18, 0x06, 0x20, 0x01,\n\t0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69,\n\t0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x43,\n\t0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x6d, 0x65,\n\t0x6e, 0x74, 0x52, 0x05, 0x6c, 0x69, 0x6e, 0x75, 0x78, 0x12, 0x3b, 0x0a, 0x07, 0x72, 0x6c, 0x69,\n\t0x6d, 0x69, 0x74, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6e, 0x72, 0x69,\n\t0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,\n\t0x31, 0x2e, 0x50, 0x4f, 0x53, 0x49, 0x58, 0x52, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x07, 0x72,\n\t0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x40, 0x0a, 0x0b, 0x43, 0x44, 0x49, 0x5f, 0x64, 0x65,\n\t0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6e, 0x72,\n\t0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,\n\t0x61, 0x31, 0x2e, 0x43, 0x44, 0x49, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x0a, 0x43, 0x44,\n\t0x49, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73,\n\t0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x1a, 0x3e, 0x0a, 0x10,\n\t0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,\n\t0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b,\n\t0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,\n\t0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xa9, 0x07, 0x0a,\n\t0x18, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x41,\n\t0x64, 0x6a, 0x75, 0x73, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x3b, 0x0a, 0x07, 0x64, 0x65, 0x76,\n\t0x69, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6e, 0x72, 0x69,\n\t0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,\n\t0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x07, 0x64,\n\t0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x42, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6e, 0x72, 0x69, 0x2e,\n\t0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,\n\t0x2e, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52,\n\t0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x67,\n\t0x72, 0x6f, 0x75, 0x70, 0x73, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,\n\t0x52, 0x0b, 0x63, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x50, 0x61, 0x74, 0x68, 0x12, 0x45, 0x0a,\n\t0x0d, 0x6f, 0x6f, 0x6d, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x61, 0x64, 0x6a, 0x18, 0x04,\n\t0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61,\n\t0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4f, 0x70, 0x74, 0x69,\n\t0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x52, 0x0b, 0x6f, 0x6f, 0x6d, 0x53, 0x63, 0x6f, 0x72,\n\t0x65, 0x41, 0x64, 0x6a, 0x12, 0x46, 0x0a, 0x0b, 0x69, 0x6f, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72,\n\t0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6e, 0x72, 0x69, 0x2e,\n\t0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,\n\t0x2e, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x49, 0x4f, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79,\n\t0x52, 0x0a, 0x69, 0x6f, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x49, 0x0a, 0x0e,\n\t0x73, 0x65, 0x63, 0x63, 0x6f, 0x6d, 0x70, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x06,\n\t0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61,\n\t0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x75,\n\t0x78, 0x53, 0x65, 0x63, 0x63, 0x6f, 0x6d, 0x70, 0x52, 0x0d, 0x73, 0x65, 0x63, 0x63, 0x6f, 0x6d,\n\t0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x44, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73,\n\t0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6e, 0x72,\n\t0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,\n\t0x61, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63,\n\t0x65, 0x52, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x52, 0x0a,\n\t0x06, 0x73, 0x79, 0x73, 0x63, 0x74, 0x6c, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e,\n\t0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c,\n\t0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69,\n\t0x6e, 0x65, 0x72, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x79,\n\t0x73, 0x63, 0x74, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x73, 0x79, 0x73, 0x63, 0x74,\n\t0x6c, 0x12, 0x5f, 0x0a, 0x0b, 0x6e, 0x65, 0x74, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73,\n\t0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67,\n\t0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69,\n\t0x6e, 0x75, 0x78, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x41, 0x64, 0x6a, 0x75,\n\t0x73, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x4e, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65,\n\t0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x6e, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63,\n\t0x65, 0x73, 0x12, 0x42, 0x0a, 0x09, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x18,\n\t0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e,\n\t0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x6e,\n\t0x75, 0x78, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x52, 0x09, 0x73, 0x63, 0x68,\n\t0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x12, 0x30, 0x0a, 0x03, 0x72, 0x64, 0x74, 0x18, 0x0b, 0x20,\n\t0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70,\n\t0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x75, 0x78,\n\t0x52, 0x64, 0x74, 0x52, 0x03, 0x72, 0x64, 0x74, 0x1a, 0x39, 0x0a, 0x0b, 0x53, 0x79, 0x73, 0x63,\n\t0x74, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,\n\t0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,\n\t0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,\n\t0x02, 0x38, 0x01, 0x1a, 0x63, 0x0a, 0x0f, 0x4e, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65,\n\t0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,\n\t0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,\n\t0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b,\n\t0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c,\n\t0x69, 0x6e, 0x75, 0x78, 0x4e, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x05, 0x76,\n\t0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xce, 0x02, 0x0a, 0x0c, 0x4c, 0x69, 0x6e,\n\t0x75, 0x78, 0x53, 0x65, 0x63, 0x63, 0x6f, 0x6d, 0x70, 0x12, 0x25, 0x0a, 0x0e, 0x64, 0x65, 0x66,\n\t0x61, 0x75, 0x6c, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28,\n\t0x09, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e,\n\t0x12, 0x49, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x65, 0x72, 0x72, 0x6e,\n\t0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b,\n\t0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4f,\n\t0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x52, 0x0c, 0x64,\n\t0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x45, 0x72, 0x72, 0x6e, 0x6f, 0x12, 0x24, 0x0a, 0x0d, 0x61,\n\t0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03,\n\t0x28, 0x09, 0x52, 0x0d, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65,\n\t0x73, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09,\n\t0x52, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x6c, 0x69, 0x73, 0x74, 0x65,\n\t0x6e, 0x65, 0x72, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c,\n\t0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x50, 0x61, 0x74, 0x68, 0x12, 0x2b, 0x0a, 0x11,\n\t0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,\n\t0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65,\n\t0x72, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3e, 0x0a, 0x08, 0x73, 0x79, 0x73,\n\t0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6e, 0x72,\n\t0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,\n\t0x61, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x53, 0x79, 0x73, 0x63, 0x61, 0x6c, 0x6c, 0x52,\n\t0x08, 0x73, 0x79, 0x73, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x22, 0xba, 0x01, 0x0a, 0x0c, 0x4c, 0x69,\n\t0x6e, 0x75, 0x78, 0x53, 0x79, 0x73, 0x63, 0x61, 0x6c, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x61,\n\t0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73,\n\t0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,\n\t0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x41, 0x0a, 0x09, 0x65, 0x72, 0x72, 0x6e,\n\t0x6f, 0x5f, 0x72, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6e, 0x72,\n\t0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,\n\t0x61, 0x31, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x55, 0x49, 0x6e, 0x74, 0x33,\n\t0x32, 0x52, 0x08, 0x65, 0x72, 0x72, 0x6e, 0x6f, 0x52, 0x65, 0x74, 0x12, 0x39, 0x0a, 0x04, 0x61,\n\t0x72, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6e, 0x72, 0x69, 0x2e,\n\t0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,\n\t0x2e, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x53, 0x65, 0x63, 0x63, 0x6f, 0x6d, 0x70, 0x41, 0x72, 0x67,\n\t0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x22, 0x6a, 0x0a, 0x0f, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x53,\n\t0x65, 0x63, 0x63, 0x6f, 0x6d, 0x70, 0x41, 0x72, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64,\n\t0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12,\n\t0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05,\n\t0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x74,\n\t0x77, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x54,\n\t0x77, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02,\n\t0x6f, 0x70, 0x22, 0x9d, 0x01, 0x0a, 0x0f, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72,\n\t0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69,\n\t0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f,\n\t0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x05, 0x6c, 0x69, 0x6e,\n\t0x75, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70,\n\t0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,\n\t0x4c, 0x69, 0x6e, 0x75, 0x78, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x55, 0x70,\n\t0x64, 0x61, 0x74, 0x65, 0x52, 0x05, 0x6c, 0x69, 0x6e, 0x75, 0x78, 0x12, 0x25, 0x0a, 0x0e, 0x69,\n\t0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, 0x03, 0x20,\n\t0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x75,\n\t0x72, 0x65, 0x22, 0x5a, 0x0a, 0x14, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x43, 0x6f, 0x6e, 0x74, 0x61,\n\t0x69, 0x6e, 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x42, 0x0a, 0x09, 0x72, 0x65,\n\t0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e,\n\t0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c,\n\t0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x73, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x22, 0x4e,\n\t0x0a, 0x11, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x45, 0x76, 0x69, 0x63, 0x74,\n\t0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72,\n\t0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61,\n\t0x69, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e,\n\t0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0xfc,\n\t0x01, 0x0a, 0x08, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x52, 0x64, 0x74, 0x12, 0x3d, 0x0a, 0x07, 0x63,\n\t0x6c, 0x6f, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6e,\n\t0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,\n\t0x68, 0x61, 0x31, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x74, 0x72, 0x69,\n\t0x6e, 0x67, 0x52, 0x06, 0x63, 0x6c, 0x6f, 0x73, 0x49, 0x64, 0x12, 0x48, 0x0a, 0x08, 0x73, 0x63,\n\t0x68, 0x65, 0x6d, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6e,\n\t0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,\n\t0x68, 0x61, 0x31, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x70, 0x65,\n\t0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x73, 0x63, 0x68, 0x65,\n\t0x6d, 0x61, 0x74, 0x61, 0x12, 0x4f, 0x0a, 0x11, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6d,\n\t0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,\n\t0x22, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,\n\t0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x42,\n\t0x6f, 0x6f, 0x6c, 0x52, 0x10, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x6f, 0x6e, 0x69, 0x74,\n\t0x6f, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x18,\n\t0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x22, 0x32, 0x0a,\n\t0x08, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,\n\t0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76,\n\t0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,\n\t0x65, 0x22, 0x26, 0x0a, 0x0e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x74, 0x72,\n\t0x69, 0x6e, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01,\n\t0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x2e, 0x0a, 0x16, 0x4f, 0x70, 0x74,\n\t0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x72,\n\t0x69, 0x6e, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x03,\n\t0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x23, 0x0a, 0x0b, 0x4f, 0x70, 0x74,\n\t0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,\n\t0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x25,\n\t0x0a, 0x0d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12,\n\t0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05,\n\t0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x26, 0x0a, 0x0e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,\n\t0x6c, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,\n\t0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x25, 0x0a,\n\t0x0d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x14,\n\t0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76,\n\t0x61, 0x6c, 0x75, 0x65, 0x22, 0x26, 0x0a, 0x0e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,\n\t0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,\n\t0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x24, 0x0a, 0x0c,\n\t0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x14, 0x0a, 0x05,\n\t0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c,\n\t0x75, 0x65, 0x22, 0x28, 0x0a, 0x10, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x69,\n\t0x6c, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,\n\t0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x9f, 0x01, 0x0a,\n\t0x13, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x77,\n\t0x6e, 0x65, 0x72, 0x73, 0x12, 0x4d, 0x0a, 0x06, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x01,\n\t0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61,\n\t0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70,\n\t0x6f, 0x75, 0x6e, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x2e,\n\t0x4f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6f, 0x77, 0x6e,\n\t0x65, 0x72, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74,\n\t0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,\n\t0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,\n\t0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xc4,\n\t0x02, 0x0a, 0x0b, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x45,\n\t0x0a, 0x06, 0x73, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d,\n\t0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61,\n\t0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x77, 0x6e, 0x65, 0x72,\n\t0x73, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x73,\n\t0x69, 0x6d, 0x70, 0x6c, 0x65, 0x12, 0x4b, 0x0a, 0x08, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x75, 0x6e,\n\t0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b,\n\t0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x46,\n\t0x69, 0x65, 0x6c, 0x64, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f,\n\t0x75, 0x6e, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x75,\n\t0x6e, 0x64, 0x1a, 0x39, 0x0a, 0x0b, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72,\n\t0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03,\n\t0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,\n\t0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x66, 0x0a,\n\t0x0d, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,\n\t0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79,\n\t0x12, 0x3f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,\n\t0x29, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,\n\t0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x46,\n\t0x69, 0x65, 0x6c, 0x64, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,\n\t0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xb6, 0x01, 0x0a, 0x0d, 0x4f, 0x77, 0x6e, 0x69, 0x6e, 0x67,\n\t0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x12, 0x47, 0x0a, 0x06, 0x6f, 0x77, 0x6e, 0x65, 0x72,\n\t0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b,\n\t0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4f,\n\t0x77, 0x6e, 0x69, 0x6e, 0x67, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2e, 0x4f, 0x77, 0x6e,\n\t0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x73,\n\t0x1a, 0x5c, 0x0a, 0x0b, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,\n\t0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65,\n\t0x79, 0x12, 0x37, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,\n\t0x32, 0x21, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,\n\t0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x77, 0x6e,\n\t0x65, 0x72, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x2a, 0xf4,\n\t0x02, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e,\n\t0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x55, 0x4e, 0x5f, 0x50, 0x4f, 0x44,\n\t0x5f, 0x53, 0x41, 0x4e, 0x44, 0x42, 0x4f, 0x58, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x54,\n\t0x4f, 0x50, 0x5f, 0x50, 0x4f, 0x44, 0x5f, 0x53, 0x41, 0x4e, 0x44, 0x42, 0x4f, 0x58, 0x10, 0x02,\n\t0x12, 0x16, 0x0a, 0x12, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x5f, 0x50, 0x4f, 0x44, 0x5f, 0x53,\n\t0x41, 0x4e, 0x44, 0x42, 0x4f, 0x58, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x52, 0x45, 0x41,\n\t0x54, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x45, 0x52, 0x10, 0x04, 0x12, 0x19,\n\t0x0a, 0x15, 0x50, 0x4f, 0x53, 0x54, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x4f,\n\t0x4e, 0x54, 0x41, 0x49, 0x4e, 0x45, 0x52, 0x10, 0x05, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x54, 0x41,\n\t0x52, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x45, 0x52, 0x10, 0x06, 0x12, 0x18,\n\t0x0a, 0x14, 0x50, 0x4f, 0x53, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, 0x43, 0x4f, 0x4e,\n\t0x54, 0x41, 0x49, 0x4e, 0x45, 0x52, 0x10, 0x07, 0x12, 0x14, 0x0a, 0x10, 0x55, 0x50, 0x44, 0x41,\n\t0x54, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x45, 0x52, 0x10, 0x08, 0x12, 0x19,\n\t0x0a, 0x15, 0x50, 0x4f, 0x53, 0x54, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x4f,\n\t0x4e, 0x54, 0x41, 0x49, 0x4e, 0x45, 0x52, 0x10, 0x09, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x54, 0x4f,\n\t0x50, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x45, 0x52, 0x10, 0x0a, 0x12, 0x14, 0x0a,\n\t0x10, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x45,\n\t0x52, 0x10, 0x0b, 0x12, 0x16, 0x0a, 0x12, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x50, 0x4f,\n\t0x44, 0x5f, 0x53, 0x41, 0x4e, 0x44, 0x42, 0x4f, 0x58, 0x10, 0x0c, 0x12, 0x1b, 0x0a, 0x17, 0x50,\n\t0x4f, 0x53, 0x54, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x50, 0x4f, 0x44, 0x5f, 0x53,\n\t0x41, 0x4e, 0x44, 0x42, 0x4f, 0x58, 0x10, 0x0d, 0x12, 0x21, 0x0a, 0x1d, 0x56, 0x41, 0x4c, 0x49,\n\t0x44, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x45, 0x52, 0x5f, 0x41,\n\t0x44, 0x4a, 0x55, 0x53, 0x54, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x0e, 0x12, 0x08, 0x0a, 0x04, 0x4c,\n\t0x41, 0x53, 0x54, 0x10, 0x0f, 0x2a, 0x82, 0x01, 0x0a, 0x0e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69,\n\t0x6e, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x43, 0x4f, 0x4e, 0x54,\n\t0x41, 0x49, 0x4e, 0x45, 0x52, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12,\n\t0x15, 0x0a, 0x11, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x45, 0x52, 0x5f, 0x43, 0x52, 0x45,\n\t0x41, 0x54, 0x45, 0x44, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49,\n\t0x4e, 0x45, 0x52, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x44, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11,\n\t0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x45, 0x52, 0x5f, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e,\n\t0x47, 0x10, 0x03, 0x12, 0x15, 0x0a, 0x11, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x45, 0x52,\n\t0x5f, 0x53, 0x54, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x10, 0x04, 0x2a, 0x65, 0x0a, 0x0b, 0x49, 0x4f,\n\t0x50, 0x72, 0x69, 0x6f, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x15, 0x0a, 0x11, 0x49, 0x4f, 0x50,\n\t0x52, 0x49, 0x4f, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00,\n\t0x12, 0x13, 0x0a, 0x0f, 0x49, 0x4f, 0x50, 0x52, 0x49, 0x4f, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53,\n\t0x5f, 0x52, 0x54, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x49, 0x4f, 0x50, 0x52, 0x49, 0x4f, 0x5f,\n\t0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x42, 0x45, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x49, 0x4f,\n\t0x50, 0x52, 0x49, 0x4f, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x49, 0x44, 0x4c, 0x45, 0x10,\n\t0x03, 0x2a, 0x99, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x53, 0x63, 0x68, 0x65, 0x64,\n\t0x75, 0x6c, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x43,\n\t0x48, 0x45, 0x44, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x43,\n\t0x48, 0x45, 0x44, 0x5f, 0x4f, 0x54, 0x48, 0x45, 0x52, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x53,\n\t0x43, 0x48, 0x45, 0x44, 0x5f, 0x46, 0x49, 0x46, 0x4f, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x53,\n\t0x43, 0x48, 0x45, 0x44, 0x5f, 0x52, 0x52, 0x10, 0x03, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x43, 0x48,\n\t0x45, 0x44, 0x5f, 0x42, 0x41, 0x54, 0x43, 0x48, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x43,\n\t0x48, 0x45, 0x44, 0x5f, 0x49, 0x53, 0x4f, 0x10, 0x05, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x43, 0x48,\n\t0x45, 0x44, 0x5f, 0x49, 0x44, 0x4c, 0x45, 0x10, 0x06, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x43, 0x48,\n\t0x45, 0x44, 0x5f, 0x44, 0x45, 0x41, 0x44, 0x4c, 0x49, 0x4e, 0x45, 0x10, 0x07, 0x2a, 0xdb, 0x01,\n\t0x0a, 0x12, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72,\n\t0x46, 0x6c, 0x61, 0x67, 0x12, 0x1c, 0x0a, 0x18, 0x53, 0x43, 0x48, 0x45, 0x44, 0x5f, 0x46, 0x4c,\n\t0x41, 0x47, 0x5f, 0x52, 0x45, 0x53, 0x45, 0x54, 0x5f, 0x4f, 0x4e, 0x5f, 0x46, 0x4f, 0x52, 0x4b,\n\t0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x43, 0x48, 0x45, 0x44, 0x5f, 0x46, 0x4c, 0x41, 0x47,\n\t0x5f, 0x52, 0x45, 0x43, 0x4c, 0x41, 0x49, 0x4d, 0x10, 0x01, 0x12, 0x19, 0x0a, 0x15, 0x53, 0x43,\n\t0x48, 0x45, 0x44, 0x5f, 0x46, 0x4c, 0x41, 0x47, 0x5f, 0x44, 0x4c, 0x5f, 0x4f, 0x56, 0x45, 0x52,\n\t0x52, 0x55, 0x4e, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x53, 0x43, 0x48, 0x45, 0x44, 0x5f, 0x46,\n\t0x4c, 0x41, 0x47, 0x5f, 0x4b, 0x45, 0x45, 0x50, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x10,\n\t0x03, 0x12, 0x1a, 0x0a, 0x16, 0x53, 0x43, 0x48, 0x45, 0x44, 0x5f, 0x46, 0x4c, 0x41, 0x47, 0x5f,\n\t0x4b, 0x45, 0x45, 0x50, 0x5f, 0x50, 0x41, 0x52, 0x41, 0x4d, 0x53, 0x10, 0x04, 0x12, 0x1d, 0x0a,\n\t0x19, 0x53, 0x43, 0x48, 0x45, 0x44, 0x5f, 0x46, 0x4c, 0x41, 0x47, 0x5f, 0x55, 0x54, 0x49, 0x4c,\n\t0x5f, 0x43, 0x4c, 0x41, 0x4d, 0x50, 0x5f, 0x4d, 0x49, 0x4e, 0x10, 0x05, 0x12, 0x1d, 0x0a, 0x19,\n\t0x53, 0x43, 0x48, 0x45, 0x44, 0x5f, 0x46, 0x4c, 0x41, 0x47, 0x5f, 0x55, 0x54, 0x49, 0x4c, 0x5f,\n\t0x43, 0x4c, 0x41, 0x4d, 0x50, 0x5f, 0x4d, 0x41, 0x58, 0x10, 0x06, 0x2a, 0xa3, 0x05, 0x0a, 0x05,\n\t0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x6f, 0x6e, 0x65, 0x10, 0x00, 0x12,\n\t0x0f, 0x0a, 0x0b, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x10, 0x01,\n\t0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08,\n\t0x4f, 0x63, 0x69, 0x48, 0x6f, 0x6f, 0x6b, 0x73, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x65,\n\t0x76, 0x69, 0x63, 0x65, 0x73, 0x10, 0x04, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x64, 0x69, 0x44, 0x65,\n\t0x76, 0x69, 0x63, 0x65, 0x73, 0x10, 0x05, 0x12, 0x07, 0x0a, 0x03, 0x45, 0x6e, 0x76, 0x10, 0x06,\n\t0x12, 0x08, 0x0a, 0x04, 0x41, 0x72, 0x67, 0x73, 0x10, 0x07, 0x12, 0x0c, 0x0a, 0x08, 0x4d, 0x65,\n\t0x6d, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x10, 0x08, 0x12, 0x12, 0x0a, 0x0e, 0x4d, 0x65, 0x6d, 0x52,\n\t0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x09, 0x12, 0x10, 0x0a, 0x0c,\n\t0x4d, 0x65, 0x6d, 0x53, 0x77, 0x61, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x10, 0x0a, 0x12, 0x12,\n\t0x0a, 0x0e, 0x4d, 0x65, 0x6d, 0x4b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x4c, 0x69, 0x6d, 0x69, 0x74,\n\t0x10, 0x0b, 0x12, 0x0f, 0x0a, 0x0b, 0x4d, 0x65, 0x6d, 0x54, 0x43, 0x50, 0x4c, 0x69, 0x6d, 0x69,\n\t0x74, 0x10, 0x0c, 0x12, 0x11, 0x0a, 0x0d, 0x4d, 0x65, 0x6d, 0x53, 0x77, 0x61, 0x70, 0x70, 0x69,\n\t0x6e, 0x65, 0x73, 0x73, 0x10, 0x0d, 0x12, 0x17, 0x0a, 0x13, 0x4d, 0x65, 0x6d, 0x44, 0x69, 0x73,\n\t0x61, 0x62, 0x6c, 0x65, 0x4f, 0x6f, 0x6d, 0x4b, 0x69, 0x6c, 0x6c, 0x65, 0x72, 0x10, 0x0e, 0x12,\n\t0x13, 0x0a, 0x0f, 0x4d, 0x65, 0x6d, 0x55, 0x73, 0x65, 0x48, 0x69, 0x65, 0x72, 0x61, 0x72, 0x63,\n\t0x68, 0x79, 0x10, 0x0f, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x50, 0x55, 0x53, 0x68, 0x61, 0x72, 0x65,\n\t0x73, 0x10, 0x10, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x50, 0x55, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x10,\n\t0x11, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x50, 0x55, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x10, 0x12,\n\t0x12, 0x16, 0x0a, 0x12, 0x43, 0x50, 0x55, 0x52, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x52,\n\t0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x10, 0x13, 0x12, 0x15, 0x0a, 0x11, 0x43, 0x50, 0x55, 0x52,\n\t0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x10, 0x14, 0x12,\n\t0x0e, 0x0a, 0x0a, 0x43, 0x50, 0x55, 0x53, 0x65, 0x74, 0x43, 0x50, 0x55, 0x73, 0x10, 0x15, 0x12,\n\t0x0e, 0x0a, 0x0a, 0x43, 0x50, 0x55, 0x53, 0x65, 0x74, 0x4d, 0x65, 0x6d, 0x73, 0x10, 0x16, 0x12,\n\t0x0d, 0x0a, 0x09, 0x50, 0x69, 0x64, 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x10, 0x17, 0x12, 0x12,\n\t0x0a, 0x0e, 0x48, 0x75, 0x67, 0x65, 0x70, 0x61, 0x67, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73,\n\t0x10, 0x18, 0x12, 0x10, 0x0a, 0x0c, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x69, 0x6f, 0x43, 0x6c, 0x61,\n\t0x73, 0x73, 0x10, 0x19, 0x12, 0x0c, 0x0a, 0x08, 0x52, 0x64, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73,\n\t0x10, 0x1a, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x55, 0x6e, 0x69,\n\t0x66, 0x69, 0x65, 0x64, 0x10, 0x1b, 0x12, 0x0f, 0x0a, 0x0b, 0x43, 0x67, 0x72, 0x6f, 0x75, 0x70,\n\t0x73, 0x50, 0x61, 0x74, 0x68, 0x10, 0x1c, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x6f, 0x6d, 0x53, 0x63,\n\t0x6f, 0x72, 0x65, 0x41, 0x64, 0x6a, 0x10, 0x1d, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x6c, 0x69, 0x6d,\n\t0x69, 0x74, 0x73, 0x10, 0x1e, 0x12, 0x0e, 0x0a, 0x0a, 0x49, 0x6f, 0x50, 0x72, 0x69, 0x6f, 0x72,\n\t0x69, 0x74, 0x79, 0x10, 0x1f, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x65, 0x63, 0x63, 0x6f, 0x6d, 0x70,\n\t0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x10, 0x20, 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x61, 0x6d, 0x65,\n\t0x73, 0x70, 0x61, 0x63, 0x65, 0x10, 0x21, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x79, 0x73, 0x63, 0x74,\n\t0x6c, 0x10, 0x22, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x4e, 0x65, 0x74, 0x44,\n\t0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x10, 0x23, 0x12, 0x0e, 0x0a, 0x0a, 0x4c, 0x69, 0x6e, 0x75,\n\t0x78, 0x53, 0x63, 0x68, 0x65, 0x64, 0x10, 0x24, 0x12, 0x0d, 0x0a, 0x09, 0x52, 0x64, 0x74, 0x43,\n\t0x6c, 0x6f, 0x73, 0x49, 0x44, 0x10, 0x25, 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x64, 0x74, 0x53, 0x63,\n\t0x68, 0x65, 0x6d, 0x61, 0x74, 0x61, 0x10, 0x26, 0x12, 0x17, 0x0a, 0x13, 0x52, 0x64, 0x74, 0x45,\n\t0x6e, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x10,\n\t0x27, 0x32, 0xd8, 0x01, 0x0a, 0x07, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x5a, 0x0a,\n\t0x0e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x12,\n\t0x2b, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,\n\t0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x50,\n\t0x6c, 0x75, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x6e,\n\t0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,\n\t0x68, 0x61, 0x31, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x71, 0x0a, 0x10, 0x55, 0x70, 0x64,\n\t0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x2d, 0x2e,\n\t0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c,\n\t0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61,\n\t0x69, 0x6e, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x6e,\n\t0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,\n\t0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69,\n\t0x6e, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xb6, 0x07, 0x0a,\n\t0x06, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x12, 0x5c, 0x0a, 0x09, 0x43, 0x6f, 0x6e, 0x66, 0x69,\n\t0x67, 0x75, 0x72, 0x65, 0x12, 0x26, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61,\n\t0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66,\n\t0x69, 0x67, 0x75, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x6e,\n\t0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,\n\t0x68, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x52, 0x65, 0x73,\n\t0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x62, 0x0a, 0x0b, 0x53, 0x79, 0x6e, 0x63, 0x68, 0x72, 0x6f,\n\t0x6e, 0x69, 0x7a, 0x65, 0x12, 0x28, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61,\n\t0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x79, 0x6e, 0x63,\n\t0x68, 0x72, 0x6f, 0x6e, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29,\n\t0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61,\n\t0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x68, 0x72, 0x6f, 0x6e, 0x69, 0x7a,\n\t0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x44, 0x0a, 0x08, 0x53, 0x68, 0x75,\n\t0x74, 0x64, 0x6f, 0x77, 0x6e, 0x12, 0x1b, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e,\n\t0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x45, 0x6d, 0x70,\n\t0x74, 0x79, 0x1a, 0x1b, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69,\n\t0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12,\n\t0x6e, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,\n\t0x65, 0x72, 0x12, 0x2c, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69,\n\t0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,\n\t0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,\n\t0x1a, 0x2d, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,\n\t0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f,\n\t0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,\n\t0x6e, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,\n\t0x65, 0x72, 0x12, 0x2c, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69,\n\t0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,\n\t0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,\n\t0x1a, 0x2d, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,\n\t0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f,\n\t0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,\n\t0x68, 0x0a, 0x0d, 0x53, 0x74, 0x6f, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72,\n\t0x12, 0x2a, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,\n\t0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x43, 0x6f, 0x6e, 0x74,\n\t0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x6e,\n\t0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,\n\t0x68, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,\n\t0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x71, 0x0a, 0x10, 0x55, 0x70, 0x64,\n\t0x61, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x53, 0x61, 0x6e, 0x64, 0x62, 0x6f, 0x78, 0x12, 0x2d, 0x2e,\n\t0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c,\n\t0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x53, 0x61,\n\t0x6e, 0x64, 0x62, 0x6f, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x6e,\n\t0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,\n\t0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x53, 0x61, 0x6e,\n\t0x64, 0x62, 0x6f, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x52, 0x0a, 0x0b,\n\t0x53, 0x74, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x26, 0x2e, 0x6e, 0x72,\n\t0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,\n\t0x61, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x45, 0x76,\n\t0x65, 0x6e, 0x74, 0x1a, 0x1b, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70,\n\t0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79,\n\t0x12, 0x92, 0x01, 0x0a, 0x1b, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e,\n\t0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x6d, 0x65, 0x6e, 0x74,\n\t0x12, 0x38, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,\n\t0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65,\n\t0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x6d,\n\t0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x6e, 0x72, 0x69,\n\t0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,\n\t0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69,\n\t0x6e, 0x65, 0x72, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73,\n\t0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0x57, 0x0a, 0x0d, 0x48, 0x6f, 0x73, 0x74, 0x46, 0x75, 0x6e,\n\t0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x46, 0x0a, 0x03, 0x4c, 0x6f, 0x67, 0x12, 0x20, 0x2e,\n\t0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c,\n\t0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x6f, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,\n\t0x1b, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,\n\t0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x42, 0x27,\n\t0x5a, 0x25, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x6e,\n\t0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x64, 0x2f, 0x6e, 0x72, 0x69, 0x2f, 0x70, 0x6b, 0x67, 0x2f,\n\t0x61, 0x70, 0x69, 0x3b, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_pkg_api_api_proto_rawDescOnce sync.Once\n\tfile_pkg_api_api_proto_rawDescData = file_pkg_api_api_proto_rawDesc\n)\n\nfunc file_pkg_api_api_proto_rawDescGZIP() []byte {\n\tfile_pkg_api_api_proto_rawDescOnce.Do(func() {\n\t\tfile_pkg_api_api_proto_rawDescData = protoimpl.X.CompressGZIP(file_pkg_api_api_proto_rawDescData)\n\t})\n\treturn file_pkg_api_api_proto_rawDescData\n}\n\nvar file_pkg_api_api_proto_enumTypes = make([]protoimpl.EnumInfo, 8)\nvar file_pkg_api_api_proto_msgTypes = make([]protoimpl.MessageInfo, 79)\nvar file_pkg_api_api_proto_goTypes = []interface{}{\n\t(Event)(0),                                  // 0: nri.pkg.api.v1alpha1.Event\n\t(ContainerState)(0),                         // 1: nri.pkg.api.v1alpha1.ContainerState\n\t(IOPrioClass)(0),                            // 2: nri.pkg.api.v1alpha1.IOPrioClass\n\t(LinuxSchedulerPolicy)(0),                   // 3: nri.pkg.api.v1alpha1.LinuxSchedulerPolicy\n\t(LinuxSchedulerFlag)(0),                     // 4: nri.pkg.api.v1alpha1.LinuxSchedulerFlag\n\t(Field)(0),                                  // 5: nri.pkg.api.v1alpha1.Field\n\t(LogRequest_Level)(0),                       // 6: nri.pkg.api.v1alpha1.LogRequest.Level\n\t(SecurityProfile_ProfileType)(0),            // 7: nri.pkg.api.v1alpha1.SecurityProfile.ProfileType\n\t(*RegisterPluginRequest)(nil),               // 8: nri.pkg.api.v1alpha1.RegisterPluginRequest\n\t(*UpdateContainersRequest)(nil),             // 9: nri.pkg.api.v1alpha1.UpdateContainersRequest\n\t(*UpdateContainersResponse)(nil),            // 10: nri.pkg.api.v1alpha1.UpdateContainersResponse\n\t(*LogRequest)(nil),                          // 11: nri.pkg.api.v1alpha1.LogRequest\n\t(*ConfigureRequest)(nil),                    // 12: nri.pkg.api.v1alpha1.ConfigureRequest\n\t(*ConfigureResponse)(nil),                   // 13: nri.pkg.api.v1alpha1.ConfigureResponse\n\t(*SynchronizeRequest)(nil),                  // 14: nri.pkg.api.v1alpha1.SynchronizeRequest\n\t(*SynchronizeResponse)(nil),                 // 15: nri.pkg.api.v1alpha1.SynchronizeResponse\n\t(*CreateContainerRequest)(nil),              // 16: nri.pkg.api.v1alpha1.CreateContainerRequest\n\t(*CreateContainerResponse)(nil),             // 17: nri.pkg.api.v1alpha1.CreateContainerResponse\n\t(*UpdateContainerRequest)(nil),              // 18: nri.pkg.api.v1alpha1.UpdateContainerRequest\n\t(*UpdateContainerResponse)(nil),             // 19: nri.pkg.api.v1alpha1.UpdateContainerResponse\n\t(*StopContainerRequest)(nil),                // 20: nri.pkg.api.v1alpha1.StopContainerRequest\n\t(*StopContainerResponse)(nil),               // 21: nri.pkg.api.v1alpha1.StopContainerResponse\n\t(*UpdatePodSandboxRequest)(nil),             // 22: nri.pkg.api.v1alpha1.UpdatePodSandboxRequest\n\t(*UpdatePodSandboxResponse)(nil),            // 23: nri.pkg.api.v1alpha1.UpdatePodSandboxResponse\n\t(*StateChangeEvent)(nil),                    // 24: nri.pkg.api.v1alpha1.StateChangeEvent\n\t(*ValidateContainerAdjustmentRequest)(nil),  // 25: nri.pkg.api.v1alpha1.ValidateContainerAdjustmentRequest\n\t(*PluginInstance)(nil),                      // 26: nri.pkg.api.v1alpha1.PluginInstance\n\t(*ValidateContainerAdjustmentResponse)(nil), // 27: nri.pkg.api.v1alpha1.ValidateContainerAdjustmentResponse\n\t(*Empty)(nil),                               // 28: nri.pkg.api.v1alpha1.Empty\n\t(*PodSandbox)(nil),                          // 29: nri.pkg.api.v1alpha1.PodSandbox\n\t(*LinuxPodSandbox)(nil),                     // 30: nri.pkg.api.v1alpha1.LinuxPodSandbox\n\t(*Container)(nil),                           // 31: nri.pkg.api.v1alpha1.Container\n\t(*Mount)(nil),                               // 32: nri.pkg.api.v1alpha1.Mount\n\t(*Hooks)(nil),                               // 33: nri.pkg.api.v1alpha1.Hooks\n\t(*Hook)(nil),                                // 34: nri.pkg.api.v1alpha1.Hook\n\t(*LinuxContainer)(nil),                      // 35: nri.pkg.api.v1alpha1.LinuxContainer\n\t(*LinuxNamespace)(nil),                      // 36: nri.pkg.api.v1alpha1.LinuxNamespace\n\t(*LinuxDevice)(nil),                         // 37: nri.pkg.api.v1alpha1.LinuxDevice\n\t(*LinuxDeviceCgroup)(nil),                   // 38: nri.pkg.api.v1alpha1.LinuxDeviceCgroup\n\t(*CDIDevice)(nil),                           // 39: nri.pkg.api.v1alpha1.CDIDevice\n\t(*User)(nil),                                // 40: nri.pkg.api.v1alpha1.User\n\t(*LinuxResources)(nil),                      // 41: nri.pkg.api.v1alpha1.LinuxResources\n\t(*LinuxMemory)(nil),                         // 42: nri.pkg.api.v1alpha1.LinuxMemory\n\t(*LinuxCPU)(nil),                            // 43: nri.pkg.api.v1alpha1.LinuxCPU\n\t(*HugepageLimit)(nil),                       // 44: nri.pkg.api.v1alpha1.HugepageLimit\n\t(*SecurityProfile)(nil),                     // 45: nri.pkg.api.v1alpha1.SecurityProfile\n\t(*POSIXRlimit)(nil),                         // 46: nri.pkg.api.v1alpha1.POSIXRlimit\n\t(*LinuxPids)(nil),                           // 47: nri.pkg.api.v1alpha1.LinuxPids\n\t(*LinuxIOPriority)(nil),                     // 48: nri.pkg.api.v1alpha1.LinuxIOPriority\n\t(*LinuxNetDevice)(nil),                      // 49: nri.pkg.api.v1alpha1.LinuxNetDevice\n\t(*LinuxScheduler)(nil),                      // 50: nri.pkg.api.v1alpha1.LinuxScheduler\n\t(*ContainerAdjustment)(nil),                 // 51: nri.pkg.api.v1alpha1.ContainerAdjustment\n\t(*LinuxContainerAdjustment)(nil),            // 52: nri.pkg.api.v1alpha1.LinuxContainerAdjustment\n\t(*LinuxSeccomp)(nil),                        // 53: nri.pkg.api.v1alpha1.LinuxSeccomp\n\t(*LinuxSyscall)(nil),                        // 54: nri.pkg.api.v1alpha1.LinuxSyscall\n\t(*LinuxSeccompArg)(nil),                     // 55: nri.pkg.api.v1alpha1.LinuxSeccompArg\n\t(*ContainerUpdate)(nil),                     // 56: nri.pkg.api.v1alpha1.ContainerUpdate\n\t(*LinuxContainerUpdate)(nil),                // 57: nri.pkg.api.v1alpha1.LinuxContainerUpdate\n\t(*ContainerEviction)(nil),                   // 58: nri.pkg.api.v1alpha1.ContainerEviction\n\t(*LinuxRdt)(nil),                            // 59: nri.pkg.api.v1alpha1.LinuxRdt\n\t(*KeyValue)(nil),                            // 60: nri.pkg.api.v1alpha1.KeyValue\n\t(*OptionalString)(nil),                      // 61: nri.pkg.api.v1alpha1.OptionalString\n\t(*OptionalRepeatedString)(nil),              // 62: nri.pkg.api.v1alpha1.OptionalRepeatedString\n\t(*OptionalInt)(nil),                         // 63: nri.pkg.api.v1alpha1.OptionalInt\n\t(*OptionalInt32)(nil),                       // 64: nri.pkg.api.v1alpha1.OptionalInt32\n\t(*OptionalUInt32)(nil),                      // 65: nri.pkg.api.v1alpha1.OptionalUInt32\n\t(*OptionalInt64)(nil),                       // 66: nri.pkg.api.v1alpha1.OptionalInt64\n\t(*OptionalUInt64)(nil),                      // 67: nri.pkg.api.v1alpha1.OptionalUInt64\n\t(*OptionalBool)(nil),                        // 68: nri.pkg.api.v1alpha1.OptionalBool\n\t(*OptionalFileMode)(nil),                    // 69: nri.pkg.api.v1alpha1.OptionalFileMode\n\t(*CompoundFieldOwners)(nil),                 // 70: nri.pkg.api.v1alpha1.CompoundFieldOwners\n\t(*FieldOwners)(nil),                         // 71: nri.pkg.api.v1alpha1.FieldOwners\n\t(*OwningPlugins)(nil),                       // 72: nri.pkg.api.v1alpha1.OwningPlugins\n\tnil,                                         // 73: nri.pkg.api.v1alpha1.PodSandbox.LabelsEntry\n\tnil,                                         // 74: nri.pkg.api.v1alpha1.PodSandbox.AnnotationsEntry\n\tnil,                                         // 75: nri.pkg.api.v1alpha1.Container.LabelsEntry\n\tnil,                                         // 76: nri.pkg.api.v1alpha1.Container.AnnotationsEntry\n\tnil,                                         // 77: nri.pkg.api.v1alpha1.LinuxContainer.SysctlEntry\n\tnil,                                         // 78: nri.pkg.api.v1alpha1.LinuxContainer.NetDevicesEntry\n\tnil,                                         // 79: nri.pkg.api.v1alpha1.LinuxResources.UnifiedEntry\n\tnil,                                         // 80: nri.pkg.api.v1alpha1.ContainerAdjustment.AnnotationsEntry\n\tnil,                                         // 81: nri.pkg.api.v1alpha1.LinuxContainerAdjustment.SysctlEntry\n\tnil,                                         // 82: nri.pkg.api.v1alpha1.LinuxContainerAdjustment.NetDevicesEntry\n\tnil,                                         // 83: nri.pkg.api.v1alpha1.CompoundFieldOwners.OwnersEntry\n\tnil,                                         // 84: nri.pkg.api.v1alpha1.FieldOwners.SimpleEntry\n\tnil,                                         // 85: nri.pkg.api.v1alpha1.FieldOwners.CompoundEntry\n\tnil,                                         // 86: nri.pkg.api.v1alpha1.OwningPlugins.OwnersEntry\n}\nvar file_pkg_api_api_proto_depIdxs = []int32{\n\t56,  // 0: nri.pkg.api.v1alpha1.UpdateContainersRequest.update:type_name -> nri.pkg.api.v1alpha1.ContainerUpdate\n\t58,  // 1: nri.pkg.api.v1alpha1.UpdateContainersRequest.evict:type_name -> nri.pkg.api.v1alpha1.ContainerEviction\n\t56,  // 2: nri.pkg.api.v1alpha1.UpdateContainersResponse.failed:type_name -> nri.pkg.api.v1alpha1.ContainerUpdate\n\t6,   // 3: nri.pkg.api.v1alpha1.LogRequest.level:type_name -> nri.pkg.api.v1alpha1.LogRequest.Level\n\t29,  // 4: nri.pkg.api.v1alpha1.SynchronizeRequest.pods:type_name -> nri.pkg.api.v1alpha1.PodSandbox\n\t31,  // 5: nri.pkg.api.v1alpha1.SynchronizeRequest.containers:type_name -> nri.pkg.api.v1alpha1.Container\n\t56,  // 6: nri.pkg.api.v1alpha1.SynchronizeResponse.update:type_name -> nri.pkg.api.v1alpha1.ContainerUpdate\n\t29,  // 7: nri.pkg.api.v1alpha1.CreateContainerRequest.pod:type_name -> nri.pkg.api.v1alpha1.PodSandbox\n\t31,  // 8: nri.pkg.api.v1alpha1.CreateContainerRequest.container:type_name -> nri.pkg.api.v1alpha1.Container\n\t51,  // 9: nri.pkg.api.v1alpha1.CreateContainerResponse.adjust:type_name -> nri.pkg.api.v1alpha1.ContainerAdjustment\n\t56,  // 10: nri.pkg.api.v1alpha1.CreateContainerResponse.update:type_name -> nri.pkg.api.v1alpha1.ContainerUpdate\n\t58,  // 11: nri.pkg.api.v1alpha1.CreateContainerResponse.evict:type_name -> nri.pkg.api.v1alpha1.ContainerEviction\n\t29,  // 12: nri.pkg.api.v1alpha1.UpdateContainerRequest.pod:type_name -> nri.pkg.api.v1alpha1.PodSandbox\n\t31,  // 13: nri.pkg.api.v1alpha1.UpdateContainerRequest.container:type_name -> nri.pkg.api.v1alpha1.Container\n\t41,  // 14: nri.pkg.api.v1alpha1.UpdateContainerRequest.linux_resources:type_name -> nri.pkg.api.v1alpha1.LinuxResources\n\t56,  // 15: nri.pkg.api.v1alpha1.UpdateContainerResponse.update:type_name -> nri.pkg.api.v1alpha1.ContainerUpdate\n\t58,  // 16: nri.pkg.api.v1alpha1.UpdateContainerResponse.evict:type_name -> nri.pkg.api.v1alpha1.ContainerEviction\n\t29,  // 17: nri.pkg.api.v1alpha1.StopContainerRequest.pod:type_name -> nri.pkg.api.v1alpha1.PodSandbox\n\t31,  // 18: nri.pkg.api.v1alpha1.StopContainerRequest.container:type_name -> nri.pkg.api.v1alpha1.Container\n\t56,  // 19: nri.pkg.api.v1alpha1.StopContainerResponse.update:type_name -> nri.pkg.api.v1alpha1.ContainerUpdate\n\t29,  // 20: nri.pkg.api.v1alpha1.UpdatePodSandboxRequest.pod:type_name -> nri.pkg.api.v1alpha1.PodSandbox\n\t41,  // 21: nri.pkg.api.v1alpha1.UpdatePodSandboxRequest.overhead_linux_resources:type_name -> nri.pkg.api.v1alpha1.LinuxResources\n\t41,  // 22: nri.pkg.api.v1alpha1.UpdatePodSandboxRequest.linux_resources:type_name -> nri.pkg.api.v1alpha1.LinuxResources\n\t0,   // 23: nri.pkg.api.v1alpha1.StateChangeEvent.event:type_name -> nri.pkg.api.v1alpha1.Event\n\t29,  // 24: nri.pkg.api.v1alpha1.StateChangeEvent.pod:type_name -> nri.pkg.api.v1alpha1.PodSandbox\n\t31,  // 25: nri.pkg.api.v1alpha1.StateChangeEvent.container:type_name -> nri.pkg.api.v1alpha1.Container\n\t29,  // 26: nri.pkg.api.v1alpha1.ValidateContainerAdjustmentRequest.pod:type_name -> nri.pkg.api.v1alpha1.PodSandbox\n\t31,  // 27: nri.pkg.api.v1alpha1.ValidateContainerAdjustmentRequest.container:type_name -> nri.pkg.api.v1alpha1.Container\n\t51,  // 28: nri.pkg.api.v1alpha1.ValidateContainerAdjustmentRequest.adjust:type_name -> nri.pkg.api.v1alpha1.ContainerAdjustment\n\t56,  // 29: nri.pkg.api.v1alpha1.ValidateContainerAdjustmentRequest.update:type_name -> nri.pkg.api.v1alpha1.ContainerUpdate\n\t72,  // 30: nri.pkg.api.v1alpha1.ValidateContainerAdjustmentRequest.owners:type_name -> nri.pkg.api.v1alpha1.OwningPlugins\n\t26,  // 31: nri.pkg.api.v1alpha1.ValidateContainerAdjustmentRequest.plugins:type_name -> nri.pkg.api.v1alpha1.PluginInstance\n\t73,  // 32: nri.pkg.api.v1alpha1.PodSandbox.labels:type_name -> nri.pkg.api.v1alpha1.PodSandbox.LabelsEntry\n\t74,  // 33: nri.pkg.api.v1alpha1.PodSandbox.annotations:type_name -> nri.pkg.api.v1alpha1.PodSandbox.AnnotationsEntry\n\t30,  // 34: nri.pkg.api.v1alpha1.PodSandbox.linux:type_name -> nri.pkg.api.v1alpha1.LinuxPodSandbox\n\t41,  // 35: nri.pkg.api.v1alpha1.LinuxPodSandbox.pod_overhead:type_name -> nri.pkg.api.v1alpha1.LinuxResources\n\t41,  // 36: nri.pkg.api.v1alpha1.LinuxPodSandbox.pod_resources:type_name -> nri.pkg.api.v1alpha1.LinuxResources\n\t36,  // 37: nri.pkg.api.v1alpha1.LinuxPodSandbox.namespaces:type_name -> nri.pkg.api.v1alpha1.LinuxNamespace\n\t41,  // 38: nri.pkg.api.v1alpha1.LinuxPodSandbox.resources:type_name -> nri.pkg.api.v1alpha1.LinuxResources\n\t1,   // 39: nri.pkg.api.v1alpha1.Container.state:type_name -> nri.pkg.api.v1alpha1.ContainerState\n\t75,  // 40: nri.pkg.api.v1alpha1.Container.labels:type_name -> nri.pkg.api.v1alpha1.Container.LabelsEntry\n\t76,  // 41: nri.pkg.api.v1alpha1.Container.annotations:type_name -> nri.pkg.api.v1alpha1.Container.AnnotationsEntry\n\t32,  // 42: nri.pkg.api.v1alpha1.Container.mounts:type_name -> nri.pkg.api.v1alpha1.Mount\n\t33,  // 43: nri.pkg.api.v1alpha1.Container.hooks:type_name -> nri.pkg.api.v1alpha1.Hooks\n\t35,  // 44: nri.pkg.api.v1alpha1.Container.linux:type_name -> nri.pkg.api.v1alpha1.LinuxContainer\n\t46,  // 45: nri.pkg.api.v1alpha1.Container.rlimits:type_name -> nri.pkg.api.v1alpha1.POSIXRlimit\n\t39,  // 46: nri.pkg.api.v1alpha1.Container.CDI_devices:type_name -> nri.pkg.api.v1alpha1.CDIDevice\n\t40,  // 47: nri.pkg.api.v1alpha1.Container.user:type_name -> nri.pkg.api.v1alpha1.User\n\t34,  // 48: nri.pkg.api.v1alpha1.Hooks.prestart:type_name -> nri.pkg.api.v1alpha1.Hook\n\t34,  // 49: nri.pkg.api.v1alpha1.Hooks.create_runtime:type_name -> nri.pkg.api.v1alpha1.Hook\n\t34,  // 50: nri.pkg.api.v1alpha1.Hooks.create_container:type_name -> nri.pkg.api.v1alpha1.Hook\n\t34,  // 51: nri.pkg.api.v1alpha1.Hooks.start_container:type_name -> nri.pkg.api.v1alpha1.Hook\n\t34,  // 52: nri.pkg.api.v1alpha1.Hooks.poststart:type_name -> nri.pkg.api.v1alpha1.Hook\n\t34,  // 53: nri.pkg.api.v1alpha1.Hooks.poststop:type_name -> nri.pkg.api.v1alpha1.Hook\n\t63,  // 54: nri.pkg.api.v1alpha1.Hook.timeout:type_name -> nri.pkg.api.v1alpha1.OptionalInt\n\t36,  // 55: nri.pkg.api.v1alpha1.LinuxContainer.namespaces:type_name -> nri.pkg.api.v1alpha1.LinuxNamespace\n\t37,  // 56: nri.pkg.api.v1alpha1.LinuxContainer.devices:type_name -> nri.pkg.api.v1alpha1.LinuxDevice\n\t41,  // 57: nri.pkg.api.v1alpha1.LinuxContainer.resources:type_name -> nri.pkg.api.v1alpha1.LinuxResources\n\t63,  // 58: nri.pkg.api.v1alpha1.LinuxContainer.oom_score_adj:type_name -> nri.pkg.api.v1alpha1.OptionalInt\n\t48,  // 59: nri.pkg.api.v1alpha1.LinuxContainer.io_priority:type_name -> nri.pkg.api.v1alpha1.LinuxIOPriority\n\t45,  // 60: nri.pkg.api.v1alpha1.LinuxContainer.seccomp_profile:type_name -> nri.pkg.api.v1alpha1.SecurityProfile\n\t53,  // 61: nri.pkg.api.v1alpha1.LinuxContainer.seccomp_policy:type_name -> nri.pkg.api.v1alpha1.LinuxSeccomp\n\t77,  // 62: nri.pkg.api.v1alpha1.LinuxContainer.sysctl:type_name -> nri.pkg.api.v1alpha1.LinuxContainer.SysctlEntry\n\t78,  // 63: nri.pkg.api.v1alpha1.LinuxContainer.net_devices:type_name -> nri.pkg.api.v1alpha1.LinuxContainer.NetDevicesEntry\n\t50,  // 64: nri.pkg.api.v1alpha1.LinuxContainer.scheduler:type_name -> nri.pkg.api.v1alpha1.LinuxScheduler\n\t59,  // 65: nri.pkg.api.v1alpha1.LinuxContainer.rdt:type_name -> nri.pkg.api.v1alpha1.LinuxRdt\n\t69,  // 66: nri.pkg.api.v1alpha1.LinuxDevice.file_mode:type_name -> nri.pkg.api.v1alpha1.OptionalFileMode\n\t65,  // 67: nri.pkg.api.v1alpha1.LinuxDevice.uid:type_name -> nri.pkg.api.v1alpha1.OptionalUInt32\n\t65,  // 68: nri.pkg.api.v1alpha1.LinuxDevice.gid:type_name -> nri.pkg.api.v1alpha1.OptionalUInt32\n\t66,  // 69: nri.pkg.api.v1alpha1.LinuxDeviceCgroup.major:type_name -> nri.pkg.api.v1alpha1.OptionalInt64\n\t66,  // 70: nri.pkg.api.v1alpha1.LinuxDeviceCgroup.minor:type_name -> nri.pkg.api.v1alpha1.OptionalInt64\n\t42,  // 71: nri.pkg.api.v1alpha1.LinuxResources.memory:type_name -> nri.pkg.api.v1alpha1.LinuxMemory\n\t43,  // 72: nri.pkg.api.v1alpha1.LinuxResources.cpu:type_name -> nri.pkg.api.v1alpha1.LinuxCPU\n\t44,  // 73: nri.pkg.api.v1alpha1.LinuxResources.hugepage_limits:type_name -> nri.pkg.api.v1alpha1.HugepageLimit\n\t61,  // 74: nri.pkg.api.v1alpha1.LinuxResources.blockio_class:type_name -> nri.pkg.api.v1alpha1.OptionalString\n\t61,  // 75: nri.pkg.api.v1alpha1.LinuxResources.rdt_class:type_name -> nri.pkg.api.v1alpha1.OptionalString\n\t79,  // 76: nri.pkg.api.v1alpha1.LinuxResources.unified:type_name -> nri.pkg.api.v1alpha1.LinuxResources.UnifiedEntry\n\t38,  // 77: nri.pkg.api.v1alpha1.LinuxResources.devices:type_name -> nri.pkg.api.v1alpha1.LinuxDeviceCgroup\n\t47,  // 78: nri.pkg.api.v1alpha1.LinuxResources.pids:type_name -> nri.pkg.api.v1alpha1.LinuxPids\n\t66,  // 79: nri.pkg.api.v1alpha1.LinuxMemory.limit:type_name -> nri.pkg.api.v1alpha1.OptionalInt64\n\t66,  // 80: nri.pkg.api.v1alpha1.LinuxMemory.reservation:type_name -> nri.pkg.api.v1alpha1.OptionalInt64\n\t66,  // 81: nri.pkg.api.v1alpha1.LinuxMemory.swap:type_name -> nri.pkg.api.v1alpha1.OptionalInt64\n\t66,  // 82: nri.pkg.api.v1alpha1.LinuxMemory.kernel:type_name -> nri.pkg.api.v1alpha1.OptionalInt64\n\t66,  // 83: nri.pkg.api.v1alpha1.LinuxMemory.kernel_tcp:type_name -> nri.pkg.api.v1alpha1.OptionalInt64\n\t67,  // 84: nri.pkg.api.v1alpha1.LinuxMemory.swappiness:type_name -> nri.pkg.api.v1alpha1.OptionalUInt64\n\t68,  // 85: nri.pkg.api.v1alpha1.LinuxMemory.disable_oom_killer:type_name -> nri.pkg.api.v1alpha1.OptionalBool\n\t68,  // 86: nri.pkg.api.v1alpha1.LinuxMemory.use_hierarchy:type_name -> nri.pkg.api.v1alpha1.OptionalBool\n\t67,  // 87: nri.pkg.api.v1alpha1.LinuxCPU.shares:type_name -> nri.pkg.api.v1alpha1.OptionalUInt64\n\t66,  // 88: nri.pkg.api.v1alpha1.LinuxCPU.quota:type_name -> nri.pkg.api.v1alpha1.OptionalInt64\n\t67,  // 89: nri.pkg.api.v1alpha1.LinuxCPU.period:type_name -> nri.pkg.api.v1alpha1.OptionalUInt64\n\t66,  // 90: nri.pkg.api.v1alpha1.LinuxCPU.realtime_runtime:type_name -> nri.pkg.api.v1alpha1.OptionalInt64\n\t67,  // 91: nri.pkg.api.v1alpha1.LinuxCPU.realtime_period:type_name -> nri.pkg.api.v1alpha1.OptionalUInt64\n\t7,   // 92: nri.pkg.api.v1alpha1.SecurityProfile.profile_type:type_name -> nri.pkg.api.v1alpha1.SecurityProfile.ProfileType\n\t2,   // 93: nri.pkg.api.v1alpha1.LinuxIOPriority.class:type_name -> nri.pkg.api.v1alpha1.IOPrioClass\n\t3,   // 94: nri.pkg.api.v1alpha1.LinuxScheduler.policy:type_name -> nri.pkg.api.v1alpha1.LinuxSchedulerPolicy\n\t4,   // 95: nri.pkg.api.v1alpha1.LinuxScheduler.flags:type_name -> nri.pkg.api.v1alpha1.LinuxSchedulerFlag\n\t80,  // 96: nri.pkg.api.v1alpha1.ContainerAdjustment.annotations:type_name -> nri.pkg.api.v1alpha1.ContainerAdjustment.AnnotationsEntry\n\t32,  // 97: nri.pkg.api.v1alpha1.ContainerAdjustment.mounts:type_name -> nri.pkg.api.v1alpha1.Mount\n\t60,  // 98: nri.pkg.api.v1alpha1.ContainerAdjustment.env:type_name -> nri.pkg.api.v1alpha1.KeyValue\n\t33,  // 99: nri.pkg.api.v1alpha1.ContainerAdjustment.hooks:type_name -> nri.pkg.api.v1alpha1.Hooks\n\t52,  // 100: nri.pkg.api.v1alpha1.ContainerAdjustment.linux:type_name -> nri.pkg.api.v1alpha1.LinuxContainerAdjustment\n\t46,  // 101: nri.pkg.api.v1alpha1.ContainerAdjustment.rlimits:type_name -> nri.pkg.api.v1alpha1.POSIXRlimit\n\t39,  // 102: nri.pkg.api.v1alpha1.ContainerAdjustment.CDI_devices:type_name -> nri.pkg.api.v1alpha1.CDIDevice\n\t37,  // 103: nri.pkg.api.v1alpha1.LinuxContainerAdjustment.devices:type_name -> nri.pkg.api.v1alpha1.LinuxDevice\n\t41,  // 104: nri.pkg.api.v1alpha1.LinuxContainerAdjustment.resources:type_name -> nri.pkg.api.v1alpha1.LinuxResources\n\t63,  // 105: nri.pkg.api.v1alpha1.LinuxContainerAdjustment.oom_score_adj:type_name -> nri.pkg.api.v1alpha1.OptionalInt\n\t48,  // 106: nri.pkg.api.v1alpha1.LinuxContainerAdjustment.io_priority:type_name -> nri.pkg.api.v1alpha1.LinuxIOPriority\n\t53,  // 107: nri.pkg.api.v1alpha1.LinuxContainerAdjustment.seccomp_policy:type_name -> nri.pkg.api.v1alpha1.LinuxSeccomp\n\t36,  // 108: nri.pkg.api.v1alpha1.LinuxContainerAdjustment.namespaces:type_name -> nri.pkg.api.v1alpha1.LinuxNamespace\n\t81,  // 109: nri.pkg.api.v1alpha1.LinuxContainerAdjustment.sysctl:type_name -> nri.pkg.api.v1alpha1.LinuxContainerAdjustment.SysctlEntry\n\t82,  // 110: nri.pkg.api.v1alpha1.LinuxContainerAdjustment.net_devices:type_name -> nri.pkg.api.v1alpha1.LinuxContainerAdjustment.NetDevicesEntry\n\t50,  // 111: nri.pkg.api.v1alpha1.LinuxContainerAdjustment.scheduler:type_name -> nri.pkg.api.v1alpha1.LinuxScheduler\n\t59,  // 112: nri.pkg.api.v1alpha1.LinuxContainerAdjustment.rdt:type_name -> nri.pkg.api.v1alpha1.LinuxRdt\n\t65,  // 113: nri.pkg.api.v1alpha1.LinuxSeccomp.default_errno:type_name -> nri.pkg.api.v1alpha1.OptionalUInt32\n\t54,  // 114: nri.pkg.api.v1alpha1.LinuxSeccomp.syscalls:type_name -> nri.pkg.api.v1alpha1.LinuxSyscall\n\t65,  // 115: nri.pkg.api.v1alpha1.LinuxSyscall.errno_ret:type_name -> nri.pkg.api.v1alpha1.OptionalUInt32\n\t55,  // 116: nri.pkg.api.v1alpha1.LinuxSyscall.args:type_name -> nri.pkg.api.v1alpha1.LinuxSeccompArg\n\t57,  // 117: nri.pkg.api.v1alpha1.ContainerUpdate.linux:type_name -> nri.pkg.api.v1alpha1.LinuxContainerUpdate\n\t41,  // 118: nri.pkg.api.v1alpha1.LinuxContainerUpdate.resources:type_name -> nri.pkg.api.v1alpha1.LinuxResources\n\t61,  // 119: nri.pkg.api.v1alpha1.LinuxRdt.clos_id:type_name -> nri.pkg.api.v1alpha1.OptionalString\n\t62,  // 120: nri.pkg.api.v1alpha1.LinuxRdt.schemata:type_name -> nri.pkg.api.v1alpha1.OptionalRepeatedString\n\t68,  // 121: nri.pkg.api.v1alpha1.LinuxRdt.enable_monitoring:type_name -> nri.pkg.api.v1alpha1.OptionalBool\n\t83,  // 122: nri.pkg.api.v1alpha1.CompoundFieldOwners.owners:type_name -> nri.pkg.api.v1alpha1.CompoundFieldOwners.OwnersEntry\n\t84,  // 123: nri.pkg.api.v1alpha1.FieldOwners.simple:type_name -> nri.pkg.api.v1alpha1.FieldOwners.SimpleEntry\n\t85,  // 124: nri.pkg.api.v1alpha1.FieldOwners.compound:type_name -> nri.pkg.api.v1alpha1.FieldOwners.CompoundEntry\n\t86,  // 125: nri.pkg.api.v1alpha1.OwningPlugins.owners:type_name -> nri.pkg.api.v1alpha1.OwningPlugins.OwnersEntry\n\t49,  // 126: nri.pkg.api.v1alpha1.LinuxContainer.NetDevicesEntry.value:type_name -> nri.pkg.api.v1alpha1.LinuxNetDevice\n\t49,  // 127: nri.pkg.api.v1alpha1.LinuxContainerAdjustment.NetDevicesEntry.value:type_name -> nri.pkg.api.v1alpha1.LinuxNetDevice\n\t70,  // 128: nri.pkg.api.v1alpha1.FieldOwners.CompoundEntry.value:type_name -> nri.pkg.api.v1alpha1.CompoundFieldOwners\n\t71,  // 129: nri.pkg.api.v1alpha1.OwningPlugins.OwnersEntry.value:type_name -> nri.pkg.api.v1alpha1.FieldOwners\n\t8,   // 130: nri.pkg.api.v1alpha1.Runtime.RegisterPlugin:input_type -> nri.pkg.api.v1alpha1.RegisterPluginRequest\n\t9,   // 131: nri.pkg.api.v1alpha1.Runtime.UpdateContainers:input_type -> nri.pkg.api.v1alpha1.UpdateContainersRequest\n\t12,  // 132: nri.pkg.api.v1alpha1.Plugin.Configure:input_type -> nri.pkg.api.v1alpha1.ConfigureRequest\n\t14,  // 133: nri.pkg.api.v1alpha1.Plugin.Synchronize:input_type -> nri.pkg.api.v1alpha1.SynchronizeRequest\n\t28,  // 134: nri.pkg.api.v1alpha1.Plugin.Shutdown:input_type -> nri.pkg.api.v1alpha1.Empty\n\t16,  // 135: nri.pkg.api.v1alpha1.Plugin.CreateContainer:input_type -> nri.pkg.api.v1alpha1.CreateContainerRequest\n\t18,  // 136: nri.pkg.api.v1alpha1.Plugin.UpdateContainer:input_type -> nri.pkg.api.v1alpha1.UpdateContainerRequest\n\t20,  // 137: nri.pkg.api.v1alpha1.Plugin.StopContainer:input_type -> nri.pkg.api.v1alpha1.StopContainerRequest\n\t22,  // 138: nri.pkg.api.v1alpha1.Plugin.UpdatePodSandbox:input_type -> nri.pkg.api.v1alpha1.UpdatePodSandboxRequest\n\t24,  // 139: nri.pkg.api.v1alpha1.Plugin.StateChange:input_type -> nri.pkg.api.v1alpha1.StateChangeEvent\n\t25,  // 140: nri.pkg.api.v1alpha1.Plugin.ValidateContainerAdjustment:input_type -> nri.pkg.api.v1alpha1.ValidateContainerAdjustmentRequest\n\t11,  // 141: nri.pkg.api.v1alpha1.HostFunctions.Log:input_type -> nri.pkg.api.v1alpha1.LogRequest\n\t28,  // 142: nri.pkg.api.v1alpha1.Runtime.RegisterPlugin:output_type -> nri.pkg.api.v1alpha1.Empty\n\t10,  // 143: nri.pkg.api.v1alpha1.Runtime.UpdateContainers:output_type -> nri.pkg.api.v1alpha1.UpdateContainersResponse\n\t13,  // 144: nri.pkg.api.v1alpha1.Plugin.Configure:output_type -> nri.pkg.api.v1alpha1.ConfigureResponse\n\t15,  // 145: nri.pkg.api.v1alpha1.Plugin.Synchronize:output_type -> nri.pkg.api.v1alpha1.SynchronizeResponse\n\t28,  // 146: nri.pkg.api.v1alpha1.Plugin.Shutdown:output_type -> nri.pkg.api.v1alpha1.Empty\n\t17,  // 147: nri.pkg.api.v1alpha1.Plugin.CreateContainer:output_type -> nri.pkg.api.v1alpha1.CreateContainerResponse\n\t19,  // 148: nri.pkg.api.v1alpha1.Plugin.UpdateContainer:output_type -> nri.pkg.api.v1alpha1.UpdateContainerResponse\n\t21,  // 149: nri.pkg.api.v1alpha1.Plugin.StopContainer:output_type -> nri.pkg.api.v1alpha1.StopContainerResponse\n\t23,  // 150: nri.pkg.api.v1alpha1.Plugin.UpdatePodSandbox:output_type -> nri.pkg.api.v1alpha1.UpdatePodSandboxResponse\n\t28,  // 151: nri.pkg.api.v1alpha1.Plugin.StateChange:output_type -> nri.pkg.api.v1alpha1.Empty\n\t27,  // 152: nri.pkg.api.v1alpha1.Plugin.ValidateContainerAdjustment:output_type -> nri.pkg.api.v1alpha1.ValidateContainerAdjustmentResponse\n\t28,  // 153: nri.pkg.api.v1alpha1.HostFunctions.Log:output_type -> nri.pkg.api.v1alpha1.Empty\n\t142, // [142:154] is the sub-list for method output_type\n\t130, // [130:142] is the sub-list for method input_type\n\t130, // [130:130] is the sub-list for extension type_name\n\t130, // [130:130] is the sub-list for extension extendee\n\t0,   // [0:130] is the sub-list for field type_name\n}\n\nfunc init() { file_pkg_api_api_proto_init() }\nfunc file_pkg_api_api_proto_init() {\n\tif File_pkg_api_api_proto != nil {\n\t\treturn\n\t}\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_pkg_api_api_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*RegisterPluginRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*UpdateContainersRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*UpdateContainersResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*LogRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*ConfigureRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*ConfigureResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*SynchronizeRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*SynchronizeResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*CreateContainerRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*CreateContainerResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*UpdateContainerRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*UpdateContainerResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*StopContainerRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*StopContainerResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*UpdatePodSandboxRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*UpdatePodSandboxResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*StateChangeEvent); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*ValidateContainerAdjustmentRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*PluginInstance); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*ValidateContainerAdjustmentResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Empty); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*PodSandbox); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*LinuxPodSandbox); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Container); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Mount); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Hooks); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Hook); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*LinuxContainer); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*LinuxNamespace); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*LinuxDevice); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*LinuxDeviceCgroup); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*CDIDevice); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*User); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*LinuxResources); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*LinuxMemory); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*LinuxCPU); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*HugepageLimit); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*SecurityProfile); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*POSIXRlimit); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*LinuxPids); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*LinuxIOPriority); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*LinuxNetDevice); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*LinuxScheduler); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*ContainerAdjustment); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*LinuxContainerAdjustment); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*LinuxSeccomp); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*LinuxSyscall); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*LinuxSeccompArg); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*ContainerUpdate); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*LinuxContainerUpdate); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*ContainerEviction); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*LinuxRdt); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*KeyValue); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*OptionalString); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*OptionalRepeatedString); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*OptionalInt); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*OptionalInt32); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*OptionalUInt32); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*OptionalInt64); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*OptionalUInt64); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*OptionalBool); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*OptionalFileMode); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*CompoundFieldOwners); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*FieldOwners); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_pkg_api_api_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*OwningPlugins); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_pkg_api_api_proto_rawDesc,\n\t\t\tNumEnums:      8,\n\t\t\tNumMessages:   79,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   3,\n\t\t},\n\t\tGoTypes:           file_pkg_api_api_proto_goTypes,\n\t\tDependencyIndexes: file_pkg_api_api_proto_depIdxs,\n\t\tEnumInfos:         file_pkg_api_api_proto_enumTypes,\n\t\tMessageInfos:      file_pkg_api_api_proto_msgTypes,\n\t}.Build()\n\tFile_pkg_api_api_proto = out.File\n\tfile_pkg_api_api_proto_rawDesc = nil\n\tfile_pkg_api_api_proto_goTypes = nil\n\tfile_pkg_api_api_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/containerd/nri/pkg/api/api.proto",
    "content": "/*\n   Copyright The containerd Authors.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\nsyntax = \"proto3\";\n\npackage nri.pkg.api.v1alpha1;\n\noption go_package = \"github.com/containerd/nri/pkg/api;api\";\n\n// Runtime service is the public API runtimes expose for NRI plugins.\n// On this interface RPC requests are initiated by the plugin. This\n// only covers plugin registration and unsolicited container updates.\n// The rest of the API is defined by the Plugin service.\nservice Runtime {\n    // RegisterPlugin registers the plugin with the runtime.\n    rpc RegisterPlugin(RegisterPluginRequest) returns (Empty);\n    // UpdateContainers requests unsolicited updates to a set of containers.\n    rpc UpdateContainers(UpdateContainersRequest) returns (UpdateContainersResponse);\n}\n\nmessage RegisterPluginRequest {\n    // Name of the plugin to register.\n    string plugin_name = 1;\n    // Plugin invocation index. Plugins are called in ascending index order.\n    string plugin_idx = 2;\n}\n\nmessage UpdateContainersRequest {\n  // List of containers to update.\n  repeated ContainerUpdate update = 1;\n  // List of containers to evict.\n  repeated ContainerEviction evict = 2;\n}\n\nmessage UpdateContainersResponse {\n  // Containers that the runtime failed to update.\n  repeated ContainerUpdate failed = 1;\n}\n\n\n//\n// Plugin is the API NRI uses to interact with plugins. It is used to\n// - configure a plugin and subscribe it for lifecycle events\n// - synchronize the state of a plugin with that of the runtime\n// - hook a plugin into the lifecycle events of its interest\n//\n// During configuration the plugin tells the runtime which lifecycle events\n// it wishes to get hooked into. Once configured, the plugin is synchronized\n// with the runtime by receiving the list of pods and containers known to\n// the runtime. The plugin can request changes to any of the containers in\n// response. After initial synchronization the plugin starts receiving the\n// events it subscribed for as they occur in the runtime. For container\n// creation, update, and stop events, the plugin can request changes, both\n// to the container that triggered the event or any other existing container\n// in the runtime.\n//\n// For a subset of the container lifecycle events, NRI defines an additional\n// Post-variant of the event. These variants are defined for CreateContainer,\n// StartContainer, and UpdateContainer. For creation and update, these events\n// can be used by plugins to discover the full extent of changes applied to\n// the container, including any changes made by other active plugins.\n//\n// go:plugin type=plugin version=1\nservice Plugin {\n  // Configure the plugin and get its event subscription.\n  rpc Configure(ConfigureRequest) returns (ConfigureResponse);\n\n  // Synchronize the plugin with the state of the runtime.\n  rpc Synchronize(SynchronizeRequest) returns (SynchronizeResponse);\n\n  // Shutdown a plugin (let it know the runtime is going down).\n  rpc Shutdown(Empty) returns (Empty);\n\n  // CreateContainer relays the corresponding request to the plugin. In\n  // response, the plugin can adjust the container being created, and\n  // update other containers in the runtime. Container adjustment can\n  // alter labels, annotations, mounts, devices, environment variables,\n  // OCI hooks, and assigned container resources. Updates can alter\n  // assigned container resources.\n  rpc CreateContainer(CreateContainerRequest) returns (CreateContainerResponse);\n\n  // UpdateContainer relays the corresponding request to the plugin.\n  // The plugin can alter how the container is updated and request updates\n  // to additional containers in the runtime.\n  rpc UpdateContainer(UpdateContainerRequest) returns (UpdateContainerResponse);\n\n  // StopContainer relays the corresponding request to the plugin. The plugin\n  // can update any of the remaining containers in the runtime in response.\n  rpc StopContainer(StopContainerRequest) returns (StopContainerResponse);\n\n  // UpdatePodSandbox relays the corresponding request to the plugin.\n  rpc UpdatePodSandbox(UpdatePodSandboxRequest) returns (UpdatePodSandboxResponse);\n\n  // StateChange relays any remaining pod or container lifecycle/state change\n  // events the plugin has subscribed for. These can be used to trigger any\n  // plugin-specific processing which needs to occur in connection with any of\n  // these events.\n  rpc StateChange(StateChangeEvent) returns (Empty);\n\n  // ValidateContainerAdjustment relays a container adjustment validation request\n  // to the plugin. Container creation will fail the plugin rejects the adjustments.\n  rpc ValidateContainerAdjustment(ValidateContainerAdjustmentRequest) returns (ValidateContainerAdjustmentResponse);\n}\n\n// go:plugin type=host\nservice HostFunctions {\n  // Log displays a log message\n  rpc Log(LogRequest) returns (Empty) {}\n}\n\nmessage LogRequest {\n  string msg = 1;\n\n  enum Level {\n    LEVEL_UNSPECIFIED = 0;\n    LEVEL_DEBUG = 1;\n    LEVEL_INFO = 2;\n    LEVEL_WARN = 3;\n    LEVEL_ERROR = 4;\n  }\n  Level level = 2;\n}\n\nmessage ConfigureRequest {\n  // Any plugin-specific data, if present among the NRI configuration.\n  string config = 1;\n  // Name of the runtime NRI is running in.\n  string runtime_name = 2;\n  // Version of the runtime NRI is running in.\n  string runtime_version = 3;\n  // Configured registration timeout in milliseconds.\n  int64 registration_timeout = 4;\n  // Configured request processing timeout in milliseconds.\n  int64 request_timeout = 5;\n}\n\nmessage ConfigureResponse {\n  // Events to subscribe the plugin for. Each bit set corresponds to an\n  // enumerated Event.\n  int32 events = 2;\n}\n\nmessage SynchronizeRequest {\n  // Pods known to the runtime.\n  repeated PodSandbox pods = 1;\n  // Containers known to the runtime.\n  repeated Container containers = 2;\n  // Whether there are more pods and containers to follow.\n  bool more = 3;\n}\n\nmessage SynchronizeResponse {\n  // Updates to containers requested by the plugin.\n  repeated ContainerUpdate update = 1;\n  // Whether the client is able to handle more advertised pods and containers.\n  bool more = 2;\n}\n\nmessage CreateContainerRequest {\n  // Pod of container being created.\n  PodSandbox pod = 1;\n  // Container being created.\n  Container container = 2;\n}\n\nmessage CreateContainerResponse {\n  // Requested adjustments to container being created.\n  ContainerAdjustment adjust = 1;\n  // Requested updates to other existing containers.\n  repeated ContainerUpdate update = 2;\n  // Requested eviction of existing containers.\n  repeated ContainerEviction evict = 3;\n}\n\nmessage UpdateContainerRequest {\n  // Pod of container being updated.\n  PodSandbox pod = 1;\n  // Container being updated.\n  Container container = 2;\n  // Resources to update.\n  LinuxResources linux_resources = 3;\n}\n\nmessage UpdateContainerResponse {\n  // Requested updates to containers.\n  repeated ContainerUpdate update = 1;\n  // Requested eviction of containers.\n  repeated ContainerEviction evict = 2;\n}\n\nmessage StopContainerRequest {\n  // Pod of container being stopped.\n  PodSandbox pod = 1;\n  // Container being stopped.\n  Container container = 2;\n}\n\nmessage StopContainerResponse {\n  // Requested updates to containers.\n  repeated ContainerUpdate update = 1;\n}\n\nmessage UpdatePodSandboxRequest {\n  // Pod being updated.\n  PodSandbox pod = 1;\n  // Overhead associated with this pod.\n  LinuxResources overhead_linux_resources = 2;\n  // Sum of container resources for this pod.\n  LinuxResources linux_resources = 3;\n}\n\nmessage UpdatePodSandboxResponse {}\n\nmessage StateChangeEvent {\n  // Event type of notification.\n  Event event = 1;\n  // Pod this notification is sent for. If this event is related to a container,\n  // pod is set to the pod of the container.\n  PodSandbox pod = 2;\n  // Container this notification is sent for. If the event is related to a pod,\n  // container is nil.\n  Container container = 3;\n}\n\nmessage ValidateContainerAdjustmentRequest {\n    // Pod of container being adjusted.\n    PodSandbox pod = 1;\n    // Container being adjusted in its pristine state.\n    Container container = 2;\n    // Pending container adjustments.\n    ContainerAdjustment adjust = 3;\n    // Pending updates to other containers.\n    repeated ContainerUpdate update = 4;\n    // Plugins that made the adjustments and updates.\n    OwningPlugins owners = 5;\n    // Plugins consulted for adjustments and updates.\n    repeated PluginInstance plugins = 6;\n}\n\nmessage PluginInstance {\n    string name = 1;\n    string index = 2;\n}\n\nmessage ValidateContainerAdjustmentResponse {\n    bool reject = 1;\n    string reason = 2;\n}\n\n// Empty response for those *Requests that are semantically events.\nmessage Empty {}\n\n// Events that plugins can subscribe to in ConfigureResponse.\nenum Event {\n  UNKNOWN = 0;\n  RUN_POD_SANDBOX = 1;\n  STOP_POD_SANDBOX = 2;\n  REMOVE_POD_SANDBOX = 3;\n  CREATE_CONTAINER = 4;\n  POST_CREATE_CONTAINER = 5;\n  START_CONTAINER = 6;\n  POST_START_CONTAINER = 7;\n  UPDATE_CONTAINER = 8;\n  POST_UPDATE_CONTAINER = 9;\n  STOP_CONTAINER = 10;\n  REMOVE_CONTAINER = 11;\n  UPDATE_POD_SANDBOX = 12;\n  POST_UPDATE_POD_SANDBOX = 13;\n  VALIDATE_CONTAINER_ADJUSTMENT = 14;\n  LAST = 15;\n}\n\n// Pod metadata that is considered relevant for a plugin.\nmessage PodSandbox {\n  string id = 1;\n  string name = 2;\n  string uid = 3;\n  string namespace = 4;\n  map<string, string> labels = 5;\n  map<string, string> annotations = 6;\n  string runtime_handler = 7;\n  LinuxPodSandbox linux = 8;\n  uint32 pid = 9; // for NRI v1 emulation\n  repeated string ips = 10;\n}\n\n// PodSandbox linux-specific metadata\nmessage LinuxPodSandbox {\n  LinuxResources pod_overhead = 1;\n  LinuxResources pod_resources = 2;\n  string cgroup_parent = 3;\n  string cgroups_path = 4; // for NRI v1 emulation\n  repeated LinuxNamespace namespaces = 5; // for NRI v1 emulation\n  LinuxResources resources = 6; // for NRI v1 emulation\n}\n\n// Container metadata that is considered relevant for a plugin.\nmessage Container {\n  string id = 1;\n  string pod_sandbox_id = 2;\n  string name = 3;\n  ContainerState state = 4;\n  map<string, string> labels = 5;\n  map<string, string> annotations = 6;\n  repeated string args = 7;\n  repeated string env = 8;\n  repeated Mount mounts = 9;\n  Hooks hooks = 10;\n  LinuxContainer linux = 11;\n  uint32 pid = 12; // for NRI v1 emulation\n  repeated POSIXRlimit rlimits = 13;\n  int64 created_at = 14;\n  int64 started_at = 15;\n  int64 finished_at = 16;\n  int32 exit_code = 17;\n  string status_reason = 18;\n  string status_message = 19;\n  repeated CDIDevice CDI_devices = 20;\n  User user = 21;\n}\n\n// Possible container states.\nenum ContainerState {\n  CONTAINER_UNKNOWN = 0;\n  CONTAINER_CREATED = 1;\n  CONTAINER_PAUSED = 2; // is this useful/necessary ?\n  CONTAINER_RUNNING = 3;\n  CONTAINER_STOPPED = 4;\n}\n\n// A container mount.\nmessage Mount {\n  string destination = 1;\n  string type = 2;\n  string source = 3;\n  repeated string options = 4;\n}\n\n// Container OCI hooks.\nmessage Hooks {\n  repeated Hook prestart = 1;\n  repeated Hook create_runtime = 2;\n  repeated Hook create_container = 3;\n  repeated Hook start_container = 4;\n  repeated Hook poststart = 5;\n  repeated Hook poststop = 6;\n}\n\n// One OCI hook.\nmessage Hook {\n  string path = 1;\n  repeated string args = 2;\n  repeated string env = 3;\n  OptionalInt timeout = 4;\n}\n\n// Container (linux) metadata.\nmessage LinuxContainer {\n  repeated LinuxNamespace namespaces = 1;\n  repeated LinuxDevice devices = 2;\n  LinuxResources resources = 3;\n  OptionalInt oom_score_adj = 4;\n  string cgroups_path = 5;\n  LinuxIOPriority io_priority = 6;\n  SecurityProfile seccomp_profile = 7;\n  LinuxSeccomp seccomp_policy = 8;\n  map<string, string> sysctl = 9;\n  map<string, LinuxNetDevice> net_devices = 10;\n  LinuxScheduler scheduler = 11;\n  LinuxRdt rdt = 12;\n}\n\n// A linux namespace.\nmessage LinuxNamespace {\n  string type = 1;\n  string path = 2;\n}\n\n// A container (linux) device.\nmessage LinuxDevice {\n  string path = 1;\n  string type = 2;\n  int64 major = 3;\n  int64 minor = 4;\n  OptionalFileMode file_mode = 5;\n  OptionalUInt32 uid = 6;\n  OptionalUInt32 gid = 7;\n}\n\n// A linux device cgroup controller rule.\nmessage LinuxDeviceCgroup {\n  bool allow = 1;\n  string type = 2;\n  OptionalInt64 major = 3;\n  OptionalInt64 minor = 4;\n  string access = 5;\n}\n\n// A CDI device reference.\nmessage CDIDevice {\n  string name = 1;\n}\n\n// User and group IDs for the container.\nmessage User {\n  uint32 uid = 1;\n  uint32 gid = 2;\n  repeated uint32 additional_gids = 3;\n}\n\n// Container (linux) resources.\nmessage LinuxResources {\n  LinuxMemory memory = 1;\n  LinuxCPU cpu = 2;\n  repeated HugepageLimit hugepage_limits = 3;\n  OptionalString blockio_class = 4;\n  OptionalString rdt_class = 5;\n  map<string, string> unified = 6;\n  repeated LinuxDeviceCgroup devices = 7; // for NRI v1 emulation\n  LinuxPids pids = 8;\n}\n\n// Memory-related parts of (linux) resources.\nmessage LinuxMemory {\n  OptionalInt64 limit = 1;\n  OptionalInt64 reservation = 2;\n  OptionalInt64 swap = 3;\n  OptionalInt64 kernel = 4;\n  OptionalInt64 kernel_tcp = 5;\n  OptionalUInt64 swappiness = 6;\n  OptionalBool disable_oom_killer = 7;\n  OptionalBool use_hierarchy = 8;\n}\n\n// CPU-related parts of (linux) resources.\nmessage LinuxCPU {\n  OptionalUInt64 shares = 1;\n  OptionalInt64 quota = 2;\n  OptionalUInt64 period = 3;\n  OptionalInt64 realtime_runtime = 4;\n  OptionalUInt64 realtime_period = 5;\n  string cpus = 6;\n  string mems = 7;\n}\n\n// Container huge page limit.\nmessage HugepageLimit {\n  string page_size = 1;\n  uint64 limit = 2;\n}\n\n// SecurityProfile for container.\nmessage SecurityProfile {\n  enum ProfileType {\n    RUNTIME_DEFAULT = 0;\n    UNCONFINED = 1;\n    LOCALHOST = 2;\n  }\n  ProfileType profile_type = 1;\n  string localhost_ref = 2;\n}\n\n// Container rlimits\nmessage POSIXRlimit {\n  string type = 1;\n  uint64 hard = 2;\n  uint64 soft = 3;\n}\n\n// Pids-related parts of (linux) resources.\nmessage LinuxPids {\n  int64 limit = 1;\n}\n\nmessage LinuxIOPriority {\n  // Scheduling class of the IO priority.\n  IOPrioClass class = 1;\n  // The value of the IO priority.\n  int32 priority = 2;\n}\n\nenum IOPrioClass {\n  IOPRIO_CLASS_NONE = 0;\n  IOPRIO_CLASS_RT = 1;\n  IOPRIO_CLASS_BE = 2;\n  IOPRIO_CLASS_IDLE = 3;\n}\n\n// A linux network device.\nmessage LinuxNetDevice {\n  string name = 1;\n}\n\n// Linux process scheduling attributes.\nmessage LinuxScheduler {\n  LinuxSchedulerPolicy policy = 1;\n  int32 nice = 2;\n  int32 priority = 3;\n  repeated LinuxSchedulerFlag flags = 4;\n  uint64 runtime = 5;\n  uint64 deadline = 6;\n  uint64 period = 7;\n}\n\n// Linux scheduling policies.\nenum LinuxSchedulerPolicy {\n  SCHED_NONE = 0;\n  SCHED_OTHER = 1;\n  SCHED_FIFO = 2;\n  SCHED_RR = 3;\n  SCHED_BATCH = 4;\n  SCHED_ISO = 5;\n  SCHED_IDLE = 6;\n  SCHED_DEADLINE = 7;\n}\n\nenum LinuxSchedulerFlag {\n  SCHED_FLAG_RESET_ON_FORK = 0;\n  SCHED_FLAG_RECLAIM = 1;\n  SCHED_FLAG_DL_OVERRUN = 2;\n  SCHED_FLAG_KEEP_POLICY = 3;\n  SCHED_FLAG_KEEP_PARAMS = 4;\n  SCHED_FLAG_UTIL_CLAMP_MIN = 5;\n  SCHED_FLAG_UTIL_CLAMP_MAX = 6;\n}\n\n// Requested adjustments to a container being created.\nmessage ContainerAdjustment {\n  map<string, string> annotations = 2;\n  repeated Mount mounts = 3;\n  repeated KeyValue env = 4;\n  Hooks hooks = 5;\n  LinuxContainerAdjustment linux = 6;\n  repeated POSIXRlimit rlimits = 7;\n  repeated CDIDevice CDI_devices = 8;\n  repeated string args = 9;\n}\n\n// Adjustments to (linux) resources.\nmessage LinuxContainerAdjustment {\n  repeated LinuxDevice devices = 1;\n  LinuxResources resources = 2;\n  string cgroups_path = 3;\n  OptionalInt oom_score_adj = 4;\n  LinuxIOPriority io_priority = 5;\n  LinuxSeccomp seccomp_policy = 6;\n  repeated LinuxNamespace namespaces = 7;\n  map<string, string> sysctl = 8;\n  map<string,LinuxNetDevice> net_devices = 9;\n  LinuxScheduler scheduler = 10;\n  LinuxRdt rdt = 11;\n}\n\nmessage LinuxSeccomp {\n  string default_action = 1;\n  OptionalUInt32 default_errno = 2;\n  repeated string architectures = 3;\n  repeated string flags = 4;\n  string listener_path = 5;\n  string listener_metadata = 6;\n  repeated LinuxSyscall syscalls = 7;\n}\n\nmessage LinuxSyscall {\n  repeated string names = 1;\n  string action = 2;\n  OptionalUInt32 errno_ret = 3;\n  repeated LinuxSeccompArg args = 4;\n}\n\nmessage LinuxSeccompArg {\n  uint32 index = 1;\n  uint64 value = 2;\n  uint64 value_two = 3;\n  string op = 4;\n}\n\n// Requested update to an already created container.\nmessage ContainerUpdate {\n  string container_id = 1;\n  LinuxContainerUpdate linux = 2;\n  bool ignore_failure = 3;\n}\n\n// Updates to (linux) resources.\nmessage LinuxContainerUpdate {\n  LinuxResources resources = 1;\n}\n\n// Request to evict (IOW unsolicitedly stop) a container.\nmessage ContainerEviction {\n  // Container to evict.\n  string container_id = 1;\n  // Human-readable reason for eviction.\n  string reason = 2;\n}\n\nmessage LinuxRdt {\n  OptionalString clos_id = 1;\n  OptionalRepeatedString schemata = 2;\n  OptionalBool enable_monitoring = 3;\n  // NRI specific field to mark the RDT config for removal.\n  bool remove = 4;\n}\n\n// KeyValue represents an environment variable.\nmessage KeyValue {\n  string key = 1;\n  string value = 2;\n}\n\n// An optional string value.\nmessage OptionalString {\n  string value = 1;\n}\n\n// An optional collection of strings.\nmessage OptionalRepeatedString {\n  repeated string value = 1;\n}\n\n// An optional signed integer value.\nmessage OptionalInt {\n  int64 value = 1;\n}\n\n// An optional 32-bit signed integer value.\nmessage OptionalInt32 {\n  int32 value = 1;\n}\n\n// An optional 32-bit unsigned integer value.\nmessage OptionalUInt32 {\n  uint32 value = 1;\n}\n\n// An optional 64-bit signed integer value.\nmessage OptionalInt64 {\n  int64 value = 1;\n}\n\n// An optional 64-bit unsigned integer value.\nmessage OptionalUInt64 {\n  uint64 value = 1;\n}\n\n// An optional boolean value.\nmessage OptionalBool {\n  bool value = 1;\n}\n\n// An optional value of file permissions.\nmessage OptionalFileMode {\n  uint32 value = 1;\n}\n\n// CompoundFieldOwners tracks 'plugin ownership' of compound fields\n// which can be adjusted entry by entry, typically maps or slices.\n// It is used to track ownership for annotations, mounts, devices,\n// environment variables, hugepage limits, etc. The key identifies\n// the owned entry (annotation key, mount destination, device path,\n// environment variable name, etc.). The value is the owning plugin.\nmessage CompoundFieldOwners {\n    map<string, string> owners = 1;\n}\n\n// FieldOwners tracks field 'plugin ownership' for a single container.\n// Keys represent adjustable fields of a container. For simple fields,\n// the value is the plugin that last modified the field. For compound\n// fields, the value is a CompoundFieldOwners which provides tracking\n// 'plugin ownership' per field for compound data, typically maps and\n// slices. Field enum values are used to index both maps, using Key()\n// to get the int32 for the Field.\nmessage FieldOwners {\n    map<int32, string> simple = 1;\n    map<int32, CompoundFieldOwners> compound = 2;\n}\n\n// OwningPlugins tracks field 'plugin ownership' for multiple containers.\n// The string keys are container IDs. The values are FieldOwners which\n// track 'plugin ownership' per adjustable field for the container.\nmessage OwningPlugins {\n    map<string, FieldOwners> owners = 1;\n}\n\n// Field enumerates all fields that can be adjusted by plugins.\nenum Field {\n    None = 0;\n    Annotations = 1;\n    Mounts = 2;\n    OciHooks = 3;\n    Devices = 4;\n    CdiDevices = 5;\n    Env = 6;\n    Args = 7;\n    MemLimit = 8;\n    MemReservation = 9;\n    MemSwapLimit = 10;\n    MemKernelLimit = 11;\n    MemTCPLimit = 12;\n    MemSwappiness = 13;\n    MemDisableOomKiller = 14;\n    MemUseHierarchy = 15;\n    CPUShares = 16;\n    CPUQuota = 17;\n    CPUPeriod = 18;\n    CPURealtimeRuntime = 19;\n    CPURealtimePeriod = 20;\n    CPUSetCPUs = 21;\n    CPUSetMems = 22;\n    PidsLimit = 23;\n    HugepageLimits = 24;\n    BlockioClass = 25;\n    RdtClass = 26;\n    CgroupsUnified = 27;\n    CgroupsPath = 28;\n    OomScoreAdj = 29;\n    Rlimits = 30;\n    IoPriority = 31;\n    SeccompPolicy = 32;\n    Namespace = 33;\n    Sysctl = 34;\n    LinuxNetDevices = 35;\n    // protoc scoping rules: calling this LinuxScheduler would conflict with message.\n    LinuxSched = 36;\n    RdtClosID = 37;\n    RdtSchemata = 38;\n    RdtEnableMonitoring = 39;\n}\n"
  },
  {
    "path": "vendor/github.com/containerd/nri/pkg/api/api_host.pb.go",
    "content": "//go:build !wasip1\n\n//\n//Copyright The containerd Authors.\n//\n//Licensed under the Apache License, Version 2.0 (the \"License\");\n//you may not use this file except in compliance with the License.\n//You may obtain a copy of the License at\n//\n//http://www.apache.org/licenses/LICENSE-2.0\n//\n//Unless required by applicable law or agreed to in writing, software\n//distributed under the License is distributed on an \"AS IS\" BASIS,\n//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n//See the License for the specific language governing permissions and\n//limitations under the License.\n\n// Code generated by protoc-gen-go-plugin. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go-plugin v0.1.0\n// \tprotoc               v3.20.1\n// source: pkg/api/api.proto\n\npackage api\n\nimport (\n\tcontext \"context\"\n\terrors \"errors\"\n\tfmt \"fmt\"\n\twasm \"github.com/knqyf263/go-plugin/wasm\"\n\twazero \"github.com/tetratelabs/wazero\"\n\tapi \"github.com/tetratelabs/wazero/api\"\n\tsys \"github.com/tetratelabs/wazero/sys\"\n\tos \"os\"\n)\n\nconst (\n\ti32 = api.ValueTypeI32\n\ti64 = api.ValueTypeI64\n)\n\ntype _hostFunctions struct {\n\tHostFunctions\n}\n\n// Instantiate a Go-defined module named \"env\" that exports host functions.\nfunc (h _hostFunctions) Instantiate(ctx context.Context, r wazero.Runtime) error {\n\tenvBuilder := r.NewHostModuleBuilder(\"env\")\n\n\tenvBuilder.NewFunctionBuilder().\n\t\tWithGoModuleFunction(api.GoModuleFunc(h._Log), []api.ValueType{i32, i32}, []api.ValueType{i64}).\n\t\tWithParameterNames(\"offset\", \"size\").\n\t\tExport(\"log\")\n\n\t_, err := envBuilder.Instantiate(ctx)\n\treturn err\n}\n\n// Log displays a log message\n\nfunc (h _hostFunctions) _Log(ctx context.Context, m api.Module, stack []uint64) {\n\toffset, size := uint32(stack[0]), uint32(stack[1])\n\tbuf, err := wasm.ReadMemory(m.Memory(), offset, size)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\trequest := new(LogRequest)\n\terr = request.UnmarshalVT(buf)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := h.Log(ctx, request)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tbuf, err = resp.MarshalVT()\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tptr, err := wasm.WriteMemory(ctx, m, buf)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tptrLen := (ptr << uint64(32)) | uint64(len(buf))\n\tstack[0] = ptrLen\n}\n\nconst PluginPluginAPIVersion = 1\n\ntype PluginPlugin struct {\n\tnewRuntime   func(context.Context) (wazero.Runtime, error)\n\tmoduleConfig wazero.ModuleConfig\n}\n\nfunc NewPluginPlugin(ctx context.Context, opts ...wazeroConfigOption) (*PluginPlugin, error) {\n\to := &WazeroConfig{\n\t\tnewRuntime:   DefaultWazeroRuntime(),\n\t\tmoduleConfig: wazero.NewModuleConfig().WithStartFunctions(\"_initialize\"),\n\t}\n\n\tfor _, opt := range opts {\n\t\topt(o)\n\t}\n\n\treturn &PluginPlugin{\n\t\tnewRuntime:   o.newRuntime,\n\t\tmoduleConfig: o.moduleConfig,\n\t}, nil\n}\n\ntype plugin interface {\n\tClose(ctx context.Context) error\n\tPlugin\n}\n\nfunc (p *PluginPlugin) Load(ctx context.Context, pluginPath string, hostFunctions HostFunctions) (plugin, error) {\n\tb, err := os.ReadFile(pluginPath)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Create a new runtime so that multiple modules will not conflict\n\tr, err := p.newRuntime(ctx)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\th := _hostFunctions{hostFunctions}\n\n\tif err := h.Instantiate(ctx, r); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Compile the WebAssembly module using the default configuration.\n\tcode, err := r.CompileModule(ctx, b)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// InstantiateModule runs the \"_start\" function, WASI's \"main\".\n\tmodule, err := r.InstantiateModule(ctx, code, p.moduleConfig)\n\tif err != nil {\n\t\t// Note: Most compilers do not exit the module after running \"_start\",\n\t\t// unless there was an Error. This allows you to call exported functions.\n\t\tif exitErr, ok := err.(*sys.ExitError); ok && exitErr.ExitCode() != 0 {\n\t\t\treturn nil, fmt.Errorf(\"unexpected exit_code: %d\", exitErr.ExitCode())\n\t\t} else if !ok {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\t// Compare API versions with the loading plugin\n\tapiVersion := module.ExportedFunction(\"plugin_api_version\")\n\tif apiVersion == nil {\n\t\treturn nil, errors.New(\"plugin_api_version is not exported\")\n\t}\n\tresults, err := apiVersion.Call(ctx)\n\tif err != nil {\n\t\treturn nil, err\n\t} else if len(results) != 1 {\n\t\treturn nil, errors.New(\"invalid plugin_api_version signature\")\n\t}\n\tif results[0] != PluginPluginAPIVersion {\n\t\treturn nil, fmt.Errorf(\"API version mismatch, host: %d, plugin: %d\", PluginPluginAPIVersion, results[0])\n\t}\n\n\tconfigure := module.ExportedFunction(\"plugin_configure\")\n\tif configure == nil {\n\t\treturn nil, errors.New(\"plugin_configure is not exported\")\n\t}\n\tsynchronize := module.ExportedFunction(\"plugin_synchronize\")\n\tif synchronize == nil {\n\t\treturn nil, errors.New(\"plugin_synchronize is not exported\")\n\t}\n\tshutdown := module.ExportedFunction(\"plugin_shutdown\")\n\tif shutdown == nil {\n\t\treturn nil, errors.New(\"plugin_shutdown is not exported\")\n\t}\n\tcreatecontainer := module.ExportedFunction(\"plugin_create_container\")\n\tif createcontainer == nil {\n\t\treturn nil, errors.New(\"plugin_create_container is not exported\")\n\t}\n\tupdatecontainer := module.ExportedFunction(\"plugin_update_container\")\n\tif updatecontainer == nil {\n\t\treturn nil, errors.New(\"plugin_update_container is not exported\")\n\t}\n\tstopcontainer := module.ExportedFunction(\"plugin_stop_container\")\n\tif stopcontainer == nil {\n\t\treturn nil, errors.New(\"plugin_stop_container is not exported\")\n\t}\n\tupdatepodsandbox := module.ExportedFunction(\"plugin_update_pod_sandbox\")\n\tif updatepodsandbox == nil {\n\t\treturn nil, errors.New(\"plugin_update_pod_sandbox is not exported\")\n\t}\n\tstatechange := module.ExportedFunction(\"plugin_state_change\")\n\tif statechange == nil {\n\t\treturn nil, errors.New(\"plugin_state_change is not exported\")\n\t}\n\tvalidatecontaineradjustment := module.ExportedFunction(\"plugin_validate_container_adjustment\")\n\tif validatecontaineradjustment == nil {\n\t\treturn nil, errors.New(\"plugin_validate_container_adjustment is not exported\")\n\t}\n\n\tmalloc := module.ExportedFunction(\"malloc\")\n\tif malloc == nil {\n\t\treturn nil, errors.New(\"malloc is not exported\")\n\t}\n\n\tfree := module.ExportedFunction(\"free\")\n\tif free == nil {\n\t\treturn nil, errors.New(\"free is not exported\")\n\t}\n\treturn &pluginPlugin{\n\t\truntime:                     r,\n\t\tmodule:                      module,\n\t\tmalloc:                      malloc,\n\t\tfree:                        free,\n\t\tconfigure:                   configure,\n\t\tsynchronize:                 synchronize,\n\t\tshutdown:                    shutdown,\n\t\tcreatecontainer:             createcontainer,\n\t\tupdatecontainer:             updatecontainer,\n\t\tstopcontainer:               stopcontainer,\n\t\tupdatepodsandbox:            updatepodsandbox,\n\t\tstatechange:                 statechange,\n\t\tvalidatecontaineradjustment: validatecontaineradjustment,\n\t}, nil\n}\n\nfunc (p *pluginPlugin) Close(ctx context.Context) (err error) {\n\tif r := p.runtime; r != nil {\n\t\tr.Close(ctx)\n\t}\n\treturn\n}\n\ntype pluginPlugin struct {\n\truntime                     wazero.Runtime\n\tmodule                      api.Module\n\tmalloc                      api.Function\n\tfree                        api.Function\n\tconfigure                   api.Function\n\tsynchronize                 api.Function\n\tshutdown                    api.Function\n\tcreatecontainer             api.Function\n\tupdatecontainer             api.Function\n\tstopcontainer               api.Function\n\tupdatepodsandbox            api.Function\n\tstatechange                 api.Function\n\tvalidatecontaineradjustment api.Function\n}\n\nfunc (p *pluginPlugin) Configure(ctx context.Context, request *ConfigureRequest) (*ConfigureResponse, error) {\n\tdata, err := request.MarshalVT()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdataSize := uint64(len(data))\n\n\tvar dataPtr uint64\n\t// If the input data is not empty, we must allocate the in-Wasm memory to store it, and pass to the plugin.\n\tif dataSize != 0 {\n\t\tresults, err := p.malloc.Call(ctx, dataSize)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tdataPtr = results[0]\n\t\t// This pointer is managed by the Wasm module, which is unaware of external usage.\n\t\t// So, we have to free it when finished\n\t\tdefer p.free.Call(ctx, dataPtr)\n\n\t\t// The pointer is a linear memory offset, which is where we write the name.\n\t\tif !p.module.Memory().Write(uint32(dataPtr), data) {\n\t\t\treturn nil, fmt.Errorf(\"Memory.Write(%d, %d) out of range of memory size %d\", dataPtr, dataSize, p.module.Memory().Size())\n\t\t}\n\t}\n\n\tptrSize, err := p.configure.Call(ctx, dataPtr, dataSize)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tresPtr := uint32(ptrSize[0] >> 32)\n\tresSize := uint32(ptrSize[0])\n\tvar isErrResponse bool\n\tif (resSize & (1 << 31)) > 0 {\n\t\tisErrResponse = true\n\t\tresSize &^= (1 << 31)\n\t}\n\n\t// We don't need the memory after deserialization: make sure it is freed.\n\tif resPtr != 0 {\n\t\tdefer p.free.Call(ctx, uint64(resPtr))\n\t}\n\n\t// The pointer is a linear memory offset, which is where we write the name.\n\tbytes, ok := p.module.Memory().Read(resPtr, resSize)\n\tif !ok {\n\t\treturn nil, fmt.Errorf(\"Memory.Read(%d, %d) out of range of memory size %d\",\n\t\t\tresPtr, resSize, p.module.Memory().Size())\n\t}\n\n\tif isErrResponse {\n\t\treturn nil, errors.New(string(bytes))\n\t}\n\n\tresponse := new(ConfigureResponse)\n\tif err = response.UnmarshalVT(bytes); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn response, nil\n}\nfunc (p *pluginPlugin) Synchronize(ctx context.Context, request *SynchronizeRequest) (*SynchronizeResponse, error) {\n\tdata, err := request.MarshalVT()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdataSize := uint64(len(data))\n\n\tvar dataPtr uint64\n\t// If the input data is not empty, we must allocate the in-Wasm memory to store it, and pass to the plugin.\n\tif dataSize != 0 {\n\t\tresults, err := p.malloc.Call(ctx, dataSize)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tdataPtr = results[0]\n\t\t// This pointer is managed by the Wasm module, which is unaware of external usage.\n\t\t// So, we have to free it when finished\n\t\tdefer p.free.Call(ctx, dataPtr)\n\n\t\t// The pointer is a linear memory offset, which is where we write the name.\n\t\tif !p.module.Memory().Write(uint32(dataPtr), data) {\n\t\t\treturn nil, fmt.Errorf(\"Memory.Write(%d, %d) out of range of memory size %d\", dataPtr, dataSize, p.module.Memory().Size())\n\t\t}\n\t}\n\n\tptrSize, err := p.synchronize.Call(ctx, dataPtr, dataSize)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tresPtr := uint32(ptrSize[0] >> 32)\n\tresSize := uint32(ptrSize[0])\n\tvar isErrResponse bool\n\tif (resSize & (1 << 31)) > 0 {\n\t\tisErrResponse = true\n\t\tresSize &^= (1 << 31)\n\t}\n\n\t// We don't need the memory after deserialization: make sure it is freed.\n\tif resPtr != 0 {\n\t\tdefer p.free.Call(ctx, uint64(resPtr))\n\t}\n\n\t// The pointer is a linear memory offset, which is where we write the name.\n\tbytes, ok := p.module.Memory().Read(resPtr, resSize)\n\tif !ok {\n\t\treturn nil, fmt.Errorf(\"Memory.Read(%d, %d) out of range of memory size %d\",\n\t\t\tresPtr, resSize, p.module.Memory().Size())\n\t}\n\n\tif isErrResponse {\n\t\treturn nil, errors.New(string(bytes))\n\t}\n\n\tresponse := new(SynchronizeResponse)\n\tif err = response.UnmarshalVT(bytes); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn response, nil\n}\nfunc (p *pluginPlugin) Shutdown(ctx context.Context, request *Empty) (*Empty, error) {\n\tdata, err := request.MarshalVT()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdataSize := uint64(len(data))\n\n\tvar dataPtr uint64\n\t// If the input data is not empty, we must allocate the in-Wasm memory to store it, and pass to the plugin.\n\tif dataSize != 0 {\n\t\tresults, err := p.malloc.Call(ctx, dataSize)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tdataPtr = results[0]\n\t\t// This pointer is managed by the Wasm module, which is unaware of external usage.\n\t\t// So, we have to free it when finished\n\t\tdefer p.free.Call(ctx, dataPtr)\n\n\t\t// The pointer is a linear memory offset, which is where we write the name.\n\t\tif !p.module.Memory().Write(uint32(dataPtr), data) {\n\t\t\treturn nil, fmt.Errorf(\"Memory.Write(%d, %d) out of range of memory size %d\", dataPtr, dataSize, p.module.Memory().Size())\n\t\t}\n\t}\n\n\tptrSize, err := p.shutdown.Call(ctx, dataPtr, dataSize)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tresPtr := uint32(ptrSize[0] >> 32)\n\tresSize := uint32(ptrSize[0])\n\tvar isErrResponse bool\n\tif (resSize & (1 << 31)) > 0 {\n\t\tisErrResponse = true\n\t\tresSize &^= (1 << 31)\n\t}\n\n\t// We don't need the memory after deserialization: make sure it is freed.\n\tif resPtr != 0 {\n\t\tdefer p.free.Call(ctx, uint64(resPtr))\n\t}\n\n\t// The pointer is a linear memory offset, which is where we write the name.\n\tbytes, ok := p.module.Memory().Read(resPtr, resSize)\n\tif !ok {\n\t\treturn nil, fmt.Errorf(\"Memory.Read(%d, %d) out of range of memory size %d\",\n\t\t\tresPtr, resSize, p.module.Memory().Size())\n\t}\n\n\tif isErrResponse {\n\t\treturn nil, errors.New(string(bytes))\n\t}\n\n\tresponse := new(Empty)\n\tif err = response.UnmarshalVT(bytes); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn response, nil\n}\nfunc (p *pluginPlugin) CreateContainer(ctx context.Context, request *CreateContainerRequest) (*CreateContainerResponse, error) {\n\tdata, err := request.MarshalVT()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdataSize := uint64(len(data))\n\n\tvar dataPtr uint64\n\t// If the input data is not empty, we must allocate the in-Wasm memory to store it, and pass to the plugin.\n\tif dataSize != 0 {\n\t\tresults, err := p.malloc.Call(ctx, dataSize)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tdataPtr = results[0]\n\t\t// This pointer is managed by the Wasm module, which is unaware of external usage.\n\t\t// So, we have to free it when finished\n\t\tdefer p.free.Call(ctx, dataPtr)\n\n\t\t// The pointer is a linear memory offset, which is where we write the name.\n\t\tif !p.module.Memory().Write(uint32(dataPtr), data) {\n\t\t\treturn nil, fmt.Errorf(\"Memory.Write(%d, %d) out of range of memory size %d\", dataPtr, dataSize, p.module.Memory().Size())\n\t\t}\n\t}\n\n\tptrSize, err := p.createcontainer.Call(ctx, dataPtr, dataSize)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tresPtr := uint32(ptrSize[0] >> 32)\n\tresSize := uint32(ptrSize[0])\n\tvar isErrResponse bool\n\tif (resSize & (1 << 31)) > 0 {\n\t\tisErrResponse = true\n\t\tresSize &^= (1 << 31)\n\t}\n\n\t// We don't need the memory after deserialization: make sure it is freed.\n\tif resPtr != 0 {\n\t\tdefer p.free.Call(ctx, uint64(resPtr))\n\t}\n\n\t// The pointer is a linear memory offset, which is where we write the name.\n\tbytes, ok := p.module.Memory().Read(resPtr, resSize)\n\tif !ok {\n\t\treturn nil, fmt.Errorf(\"Memory.Read(%d, %d) out of range of memory size %d\",\n\t\t\tresPtr, resSize, p.module.Memory().Size())\n\t}\n\n\tif isErrResponse {\n\t\treturn nil, errors.New(string(bytes))\n\t}\n\n\tresponse := new(CreateContainerResponse)\n\tif err = response.UnmarshalVT(bytes); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn response, nil\n}\nfunc (p *pluginPlugin) UpdateContainer(ctx context.Context, request *UpdateContainerRequest) (*UpdateContainerResponse, error) {\n\tdata, err := request.MarshalVT()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdataSize := uint64(len(data))\n\n\tvar dataPtr uint64\n\t// If the input data is not empty, we must allocate the in-Wasm memory to store it, and pass to the plugin.\n\tif dataSize != 0 {\n\t\tresults, err := p.malloc.Call(ctx, dataSize)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tdataPtr = results[0]\n\t\t// This pointer is managed by the Wasm module, which is unaware of external usage.\n\t\t// So, we have to free it when finished\n\t\tdefer p.free.Call(ctx, dataPtr)\n\n\t\t// The pointer is a linear memory offset, which is where we write the name.\n\t\tif !p.module.Memory().Write(uint32(dataPtr), data) {\n\t\t\treturn nil, fmt.Errorf(\"Memory.Write(%d, %d) out of range of memory size %d\", dataPtr, dataSize, p.module.Memory().Size())\n\t\t}\n\t}\n\n\tptrSize, err := p.updatecontainer.Call(ctx, dataPtr, dataSize)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tresPtr := uint32(ptrSize[0] >> 32)\n\tresSize := uint32(ptrSize[0])\n\tvar isErrResponse bool\n\tif (resSize & (1 << 31)) > 0 {\n\t\tisErrResponse = true\n\t\tresSize &^= (1 << 31)\n\t}\n\n\t// We don't need the memory after deserialization: make sure it is freed.\n\tif resPtr != 0 {\n\t\tdefer p.free.Call(ctx, uint64(resPtr))\n\t}\n\n\t// The pointer is a linear memory offset, which is where we write the name.\n\tbytes, ok := p.module.Memory().Read(resPtr, resSize)\n\tif !ok {\n\t\treturn nil, fmt.Errorf(\"Memory.Read(%d, %d) out of range of memory size %d\",\n\t\t\tresPtr, resSize, p.module.Memory().Size())\n\t}\n\n\tif isErrResponse {\n\t\treturn nil, errors.New(string(bytes))\n\t}\n\n\tresponse := new(UpdateContainerResponse)\n\tif err = response.UnmarshalVT(bytes); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn response, nil\n}\nfunc (p *pluginPlugin) StopContainer(ctx context.Context, request *StopContainerRequest) (*StopContainerResponse, error) {\n\tdata, err := request.MarshalVT()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdataSize := uint64(len(data))\n\n\tvar dataPtr uint64\n\t// If the input data is not empty, we must allocate the in-Wasm memory to store it, and pass to the plugin.\n\tif dataSize != 0 {\n\t\tresults, err := p.malloc.Call(ctx, dataSize)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tdataPtr = results[0]\n\t\t// This pointer is managed by the Wasm module, which is unaware of external usage.\n\t\t// So, we have to free it when finished\n\t\tdefer p.free.Call(ctx, dataPtr)\n\n\t\t// The pointer is a linear memory offset, which is where we write the name.\n\t\tif !p.module.Memory().Write(uint32(dataPtr), data) {\n\t\t\treturn nil, fmt.Errorf(\"Memory.Write(%d, %d) out of range of memory size %d\", dataPtr, dataSize, p.module.Memory().Size())\n\t\t}\n\t}\n\n\tptrSize, err := p.stopcontainer.Call(ctx, dataPtr, dataSize)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tresPtr := uint32(ptrSize[0] >> 32)\n\tresSize := uint32(ptrSize[0])\n\tvar isErrResponse bool\n\tif (resSize & (1 << 31)) > 0 {\n\t\tisErrResponse = true\n\t\tresSize &^= (1 << 31)\n\t}\n\n\t// We don't need the memory after deserialization: make sure it is freed.\n\tif resPtr != 0 {\n\t\tdefer p.free.Call(ctx, uint64(resPtr))\n\t}\n\n\t// The pointer is a linear memory offset, which is where we write the name.\n\tbytes, ok := p.module.Memory().Read(resPtr, resSize)\n\tif !ok {\n\t\treturn nil, fmt.Errorf(\"Memory.Read(%d, %d) out of range of memory size %d\",\n\t\t\tresPtr, resSize, p.module.Memory().Size())\n\t}\n\n\tif isErrResponse {\n\t\treturn nil, errors.New(string(bytes))\n\t}\n\n\tresponse := new(StopContainerResponse)\n\tif err = response.UnmarshalVT(bytes); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn response, nil\n}\nfunc (p *pluginPlugin) UpdatePodSandbox(ctx context.Context, request *UpdatePodSandboxRequest) (*UpdatePodSandboxResponse, error) {\n\tdata, err := request.MarshalVT()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdataSize := uint64(len(data))\n\n\tvar dataPtr uint64\n\t// If the input data is not empty, we must allocate the in-Wasm memory to store it, and pass to the plugin.\n\tif dataSize != 0 {\n\t\tresults, err := p.malloc.Call(ctx, dataSize)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tdataPtr = results[0]\n\t\t// This pointer is managed by the Wasm module, which is unaware of external usage.\n\t\t// So, we have to free it when finished\n\t\tdefer p.free.Call(ctx, dataPtr)\n\n\t\t// The pointer is a linear memory offset, which is where we write the name.\n\t\tif !p.module.Memory().Write(uint32(dataPtr), data) {\n\t\t\treturn nil, fmt.Errorf(\"Memory.Write(%d, %d) out of range of memory size %d\", dataPtr, dataSize, p.module.Memory().Size())\n\t\t}\n\t}\n\n\tptrSize, err := p.updatepodsandbox.Call(ctx, dataPtr, dataSize)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tresPtr := uint32(ptrSize[0] >> 32)\n\tresSize := uint32(ptrSize[0])\n\tvar isErrResponse bool\n\tif (resSize & (1 << 31)) > 0 {\n\t\tisErrResponse = true\n\t\tresSize &^= (1 << 31)\n\t}\n\n\t// We don't need the memory after deserialization: make sure it is freed.\n\tif resPtr != 0 {\n\t\tdefer p.free.Call(ctx, uint64(resPtr))\n\t}\n\n\t// The pointer is a linear memory offset, which is where we write the name.\n\tbytes, ok := p.module.Memory().Read(resPtr, resSize)\n\tif !ok {\n\t\treturn nil, fmt.Errorf(\"Memory.Read(%d, %d) out of range of memory size %d\",\n\t\t\tresPtr, resSize, p.module.Memory().Size())\n\t}\n\n\tif isErrResponse {\n\t\treturn nil, errors.New(string(bytes))\n\t}\n\n\tresponse := new(UpdatePodSandboxResponse)\n\tif err = response.UnmarshalVT(bytes); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn response, nil\n}\nfunc (p *pluginPlugin) StateChange(ctx context.Context, request *StateChangeEvent) (*Empty, error) {\n\tdata, err := request.MarshalVT()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdataSize := uint64(len(data))\n\n\tvar dataPtr uint64\n\t// If the input data is not empty, we must allocate the in-Wasm memory to store it, and pass to the plugin.\n\tif dataSize != 0 {\n\t\tresults, err := p.malloc.Call(ctx, dataSize)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tdataPtr = results[0]\n\t\t// This pointer is managed by the Wasm module, which is unaware of external usage.\n\t\t// So, we have to free it when finished\n\t\tdefer p.free.Call(ctx, dataPtr)\n\n\t\t// The pointer is a linear memory offset, which is where we write the name.\n\t\tif !p.module.Memory().Write(uint32(dataPtr), data) {\n\t\t\treturn nil, fmt.Errorf(\"Memory.Write(%d, %d) out of range of memory size %d\", dataPtr, dataSize, p.module.Memory().Size())\n\t\t}\n\t}\n\n\tptrSize, err := p.statechange.Call(ctx, dataPtr, dataSize)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tresPtr := uint32(ptrSize[0] >> 32)\n\tresSize := uint32(ptrSize[0])\n\tvar isErrResponse bool\n\tif (resSize & (1 << 31)) > 0 {\n\t\tisErrResponse = true\n\t\tresSize &^= (1 << 31)\n\t}\n\n\t// We don't need the memory after deserialization: make sure it is freed.\n\tif resPtr != 0 {\n\t\tdefer p.free.Call(ctx, uint64(resPtr))\n\t}\n\n\t// The pointer is a linear memory offset, which is where we write the name.\n\tbytes, ok := p.module.Memory().Read(resPtr, resSize)\n\tif !ok {\n\t\treturn nil, fmt.Errorf(\"Memory.Read(%d, %d) out of range of memory size %d\",\n\t\t\tresPtr, resSize, p.module.Memory().Size())\n\t}\n\n\tif isErrResponse {\n\t\treturn nil, errors.New(string(bytes))\n\t}\n\n\tresponse := new(Empty)\n\tif err = response.UnmarshalVT(bytes); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn response, nil\n}\nfunc (p *pluginPlugin) ValidateContainerAdjustment(ctx context.Context, request *ValidateContainerAdjustmentRequest) (*ValidateContainerAdjustmentResponse, error) {\n\tdata, err := request.MarshalVT()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdataSize := uint64(len(data))\n\n\tvar dataPtr uint64\n\t// If the input data is not empty, we must allocate the in-Wasm memory to store it, and pass to the plugin.\n\tif dataSize != 0 {\n\t\tresults, err := p.malloc.Call(ctx, dataSize)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tdataPtr = results[0]\n\t\t// This pointer is managed by the Wasm module, which is unaware of external usage.\n\t\t// So, we have to free it when finished\n\t\tdefer p.free.Call(ctx, dataPtr)\n\n\t\t// The pointer is a linear memory offset, which is where we write the name.\n\t\tif !p.module.Memory().Write(uint32(dataPtr), data) {\n\t\t\treturn nil, fmt.Errorf(\"Memory.Write(%d, %d) out of range of memory size %d\", dataPtr, dataSize, p.module.Memory().Size())\n\t\t}\n\t}\n\n\tptrSize, err := p.validatecontaineradjustment.Call(ctx, dataPtr, dataSize)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tresPtr := uint32(ptrSize[0] >> 32)\n\tresSize := uint32(ptrSize[0])\n\tvar isErrResponse bool\n\tif (resSize & (1 << 31)) > 0 {\n\t\tisErrResponse = true\n\t\tresSize &^= (1 << 31)\n\t}\n\n\t// We don't need the memory after deserialization: make sure it is freed.\n\tif resPtr != 0 {\n\t\tdefer p.free.Call(ctx, uint64(resPtr))\n\t}\n\n\t// The pointer is a linear memory offset, which is where we write the name.\n\tbytes, ok := p.module.Memory().Read(resPtr, resSize)\n\tif !ok {\n\t\treturn nil, fmt.Errorf(\"Memory.Read(%d, %d) out of range of memory size %d\",\n\t\t\tresPtr, resSize, p.module.Memory().Size())\n\t}\n\n\tif isErrResponse {\n\t\treturn nil, errors.New(string(bytes))\n\t}\n\n\tresponse := new(ValidateContainerAdjustmentResponse)\n\tif err = response.UnmarshalVT(bytes); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn response, nil\n}\n"
  },
  {
    "path": "vendor/github.com/containerd/nri/pkg/api/api_options.pb.go",
    "content": "//go:build !wasip1\n\n//\n//Copyright The containerd Authors.\n//\n//Licensed under the Apache License, Version 2.0 (the \"License\");\n//you may not use this file except in compliance with the License.\n//You may obtain a copy of the License at\n//\n//http://www.apache.org/licenses/LICENSE-2.0\n//\n//Unless required by applicable law or agreed to in writing, software\n//distributed under the License is distributed on an \"AS IS\" BASIS,\n//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n//See the License for the specific language governing permissions and\n//limitations under the License.\n\n// Code generated by protoc-gen-go-plugin. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go-plugin v0.1.0\n// \tprotoc               v3.20.1\n// source: pkg/api/api.proto\n\npackage api\n\nimport (\n\tcontext \"context\"\n\twazero \"github.com/tetratelabs/wazero\"\n\twasi_snapshot_preview1 \"github.com/tetratelabs/wazero/imports/wasi_snapshot_preview1\"\n)\n\ntype wazeroConfigOption func(plugin *WazeroConfig)\n\ntype WazeroNewRuntime func(context.Context) (wazero.Runtime, error)\n\ntype WazeroConfig struct {\n\tnewRuntime   func(context.Context) (wazero.Runtime, error)\n\tmoduleConfig wazero.ModuleConfig\n}\n\nfunc WazeroRuntime(newRuntime WazeroNewRuntime) wazeroConfigOption {\n\treturn func(h *WazeroConfig) {\n\t\th.newRuntime = newRuntime\n\t}\n}\n\nfunc DefaultWazeroRuntime() WazeroNewRuntime {\n\treturn func(ctx context.Context) (wazero.Runtime, error) {\n\t\tr := wazero.NewRuntime(ctx)\n\t\tif _, err := wasi_snapshot_preview1.Instantiate(ctx, r); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\treturn r, nil\n\t}\n}\n\nfunc WazeroModuleConfig(moduleConfig wazero.ModuleConfig) wazeroConfigOption {\n\treturn func(h *WazeroConfig) {\n\t\th.moduleConfig = moduleConfig\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/containerd/nri/pkg/api/api_plugin.pb.go",
    "content": "//go:build wasip1\n\n//\n//Copyright The containerd Authors.\n//\n//Licensed under the Apache License, Version 2.0 (the \"License\");\n//you may not use this file except in compliance with the License.\n//You may obtain a copy of the License at\n//\n//http://www.apache.org/licenses/LICENSE-2.0\n//\n//Unless required by applicable law or agreed to in writing, software\n//distributed under the License is distributed on an \"AS IS\" BASIS,\n//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n//See the License for the specific language governing permissions and\n//limitations under the License.\n\n// Code generated by protoc-gen-go-plugin. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go-plugin v0.1.0\n// \tprotoc               v3.20.1\n// source: pkg/api/api.proto\n\npackage api\n\nimport (\n\tcontext \"context\"\n\twasm \"github.com/knqyf263/go-plugin/wasm\"\n\t_ \"unsafe\"\n)\n\nconst PluginPluginAPIVersion = 1\n\n//go:wasmexport plugin_api_version\nfunc _plugin_api_version() uint64 {\n\treturn PluginPluginAPIVersion\n}\n\nvar plugin Plugin\n\nfunc RegisterPlugin(p Plugin) {\n\tplugin = p\n}\n\n//go:wasmexport plugin_configure\nfunc _plugin_configure(ptr, size uint32) uint64 {\n\tb := wasm.PtrToByte(ptr, size)\n\treq := new(ConfigureRequest)\n\tif err := req.UnmarshalVT(b); err != nil {\n\t\treturn 0\n\t}\n\tresponse, err := plugin.Configure(context.Background(), req)\n\tif err != nil {\n\t\tptr, size = wasm.ByteToPtr([]byte(err.Error()))\n\t\treturn (uint64(ptr) << uint64(32)) | uint64(size) |\n\t\t\t// Indicate that this is the error string by setting the 32-th bit, assuming that\n\t\t\t// no data exceeds 31-bit size (2 GiB).\n\t\t\t(1 << 31)\n\t}\n\n\tb, err = response.MarshalVT()\n\tif err != nil {\n\t\treturn 0\n\t}\n\tptr, size = wasm.ByteToPtr(b)\n\treturn (uint64(ptr) << uint64(32)) | uint64(size)\n}\n\n//go:wasmexport plugin_synchronize\nfunc _plugin_synchronize(ptr, size uint32) uint64 {\n\tb := wasm.PtrToByte(ptr, size)\n\treq := new(SynchronizeRequest)\n\tif err := req.UnmarshalVT(b); err != nil {\n\t\treturn 0\n\t}\n\tresponse, err := plugin.Synchronize(context.Background(), req)\n\tif err != nil {\n\t\tptr, size = wasm.ByteToPtr([]byte(err.Error()))\n\t\treturn (uint64(ptr) << uint64(32)) | uint64(size) |\n\t\t\t// Indicate that this is the error string by setting the 32-th bit, assuming that\n\t\t\t// no data exceeds 31-bit size (2 GiB).\n\t\t\t(1 << 31)\n\t}\n\n\tb, err = response.MarshalVT()\n\tif err != nil {\n\t\treturn 0\n\t}\n\tptr, size = wasm.ByteToPtr(b)\n\treturn (uint64(ptr) << uint64(32)) | uint64(size)\n}\n\n//go:wasmexport plugin_shutdown\nfunc _plugin_shutdown(ptr, size uint32) uint64 {\n\tb := wasm.PtrToByte(ptr, size)\n\treq := new(Empty)\n\tif err := req.UnmarshalVT(b); err != nil {\n\t\treturn 0\n\t}\n\tresponse, err := plugin.Shutdown(context.Background(), req)\n\tif err != nil {\n\t\tptr, size = wasm.ByteToPtr([]byte(err.Error()))\n\t\treturn (uint64(ptr) << uint64(32)) | uint64(size) |\n\t\t\t// Indicate that this is the error string by setting the 32-th bit, assuming that\n\t\t\t// no data exceeds 31-bit size (2 GiB).\n\t\t\t(1 << 31)\n\t}\n\n\tb, err = response.MarshalVT()\n\tif err != nil {\n\t\treturn 0\n\t}\n\tptr, size = wasm.ByteToPtr(b)\n\treturn (uint64(ptr) << uint64(32)) | uint64(size)\n}\n\n//go:wasmexport plugin_create_container\nfunc _plugin_create_container(ptr, size uint32) uint64 {\n\tb := wasm.PtrToByte(ptr, size)\n\treq := new(CreateContainerRequest)\n\tif err := req.UnmarshalVT(b); err != nil {\n\t\treturn 0\n\t}\n\tresponse, err := plugin.CreateContainer(context.Background(), req)\n\tif err != nil {\n\t\tptr, size = wasm.ByteToPtr([]byte(err.Error()))\n\t\treturn (uint64(ptr) << uint64(32)) | uint64(size) |\n\t\t\t// Indicate that this is the error string by setting the 32-th bit, assuming that\n\t\t\t// no data exceeds 31-bit size (2 GiB).\n\t\t\t(1 << 31)\n\t}\n\n\tb, err = response.MarshalVT()\n\tif err != nil {\n\t\treturn 0\n\t}\n\tptr, size = wasm.ByteToPtr(b)\n\treturn (uint64(ptr) << uint64(32)) | uint64(size)\n}\n\n//go:wasmexport plugin_update_container\nfunc _plugin_update_container(ptr, size uint32) uint64 {\n\tb := wasm.PtrToByte(ptr, size)\n\treq := new(UpdateContainerRequest)\n\tif err := req.UnmarshalVT(b); err != nil {\n\t\treturn 0\n\t}\n\tresponse, err := plugin.UpdateContainer(context.Background(), req)\n\tif err != nil {\n\t\tptr, size = wasm.ByteToPtr([]byte(err.Error()))\n\t\treturn (uint64(ptr) << uint64(32)) | uint64(size) |\n\t\t\t// Indicate that this is the error string by setting the 32-th bit, assuming that\n\t\t\t// no data exceeds 31-bit size (2 GiB).\n\t\t\t(1 << 31)\n\t}\n\n\tb, err = response.MarshalVT()\n\tif err != nil {\n\t\treturn 0\n\t}\n\tptr, size = wasm.ByteToPtr(b)\n\treturn (uint64(ptr) << uint64(32)) | uint64(size)\n}\n\n//go:wasmexport plugin_stop_container\nfunc _plugin_stop_container(ptr, size uint32) uint64 {\n\tb := wasm.PtrToByte(ptr, size)\n\treq := new(StopContainerRequest)\n\tif err := req.UnmarshalVT(b); err != nil {\n\t\treturn 0\n\t}\n\tresponse, err := plugin.StopContainer(context.Background(), req)\n\tif err != nil {\n\t\tptr, size = wasm.ByteToPtr([]byte(err.Error()))\n\t\treturn (uint64(ptr) << uint64(32)) | uint64(size) |\n\t\t\t// Indicate that this is the error string by setting the 32-th bit, assuming that\n\t\t\t// no data exceeds 31-bit size (2 GiB).\n\t\t\t(1 << 31)\n\t}\n\n\tb, err = response.MarshalVT()\n\tif err != nil {\n\t\treturn 0\n\t}\n\tptr, size = wasm.ByteToPtr(b)\n\treturn (uint64(ptr) << uint64(32)) | uint64(size)\n}\n\n//go:wasmexport plugin_update_pod_sandbox\nfunc _plugin_update_pod_sandbox(ptr, size uint32) uint64 {\n\tb := wasm.PtrToByte(ptr, size)\n\treq := new(UpdatePodSandboxRequest)\n\tif err := req.UnmarshalVT(b); err != nil {\n\t\treturn 0\n\t}\n\tresponse, err := plugin.UpdatePodSandbox(context.Background(), req)\n\tif err != nil {\n\t\tptr, size = wasm.ByteToPtr([]byte(err.Error()))\n\t\treturn (uint64(ptr) << uint64(32)) | uint64(size) |\n\t\t\t// Indicate that this is the error string by setting the 32-th bit, assuming that\n\t\t\t// no data exceeds 31-bit size (2 GiB).\n\t\t\t(1 << 31)\n\t}\n\n\tb, err = response.MarshalVT()\n\tif err != nil {\n\t\treturn 0\n\t}\n\tptr, size = wasm.ByteToPtr(b)\n\treturn (uint64(ptr) << uint64(32)) | uint64(size)\n}\n\n//go:wasmexport plugin_state_change\nfunc _plugin_state_change(ptr, size uint32) uint64 {\n\tb := wasm.PtrToByte(ptr, size)\n\treq := new(StateChangeEvent)\n\tif err := req.UnmarshalVT(b); err != nil {\n\t\treturn 0\n\t}\n\tresponse, err := plugin.StateChange(context.Background(), req)\n\tif err != nil {\n\t\tptr, size = wasm.ByteToPtr([]byte(err.Error()))\n\t\treturn (uint64(ptr) << uint64(32)) | uint64(size) |\n\t\t\t// Indicate that this is the error string by setting the 32-th bit, assuming that\n\t\t\t// no data exceeds 31-bit size (2 GiB).\n\t\t\t(1 << 31)\n\t}\n\n\tb, err = response.MarshalVT()\n\tif err != nil {\n\t\treturn 0\n\t}\n\tptr, size = wasm.ByteToPtr(b)\n\treturn (uint64(ptr) << uint64(32)) | uint64(size)\n}\n\n//go:wasmexport plugin_validate_container_adjustment\nfunc _plugin_validate_container_adjustment(ptr, size uint32) uint64 {\n\tb := wasm.PtrToByte(ptr, size)\n\treq := new(ValidateContainerAdjustmentRequest)\n\tif err := req.UnmarshalVT(b); err != nil {\n\t\treturn 0\n\t}\n\tresponse, err := plugin.ValidateContainerAdjustment(context.Background(), req)\n\tif err != nil {\n\t\tptr, size = wasm.ByteToPtr([]byte(err.Error()))\n\t\treturn (uint64(ptr) << uint64(32)) | uint64(size) |\n\t\t\t// Indicate that this is the error string by setting the 32-th bit, assuming that\n\t\t\t// no data exceeds 31-bit size (2 GiB).\n\t\t\t(1 << 31)\n\t}\n\n\tb, err = response.MarshalVT()\n\tif err != nil {\n\t\treturn 0\n\t}\n\tptr, size = wasm.ByteToPtr(b)\n\treturn (uint64(ptr) << uint64(32)) | uint64(size)\n}\n\ntype hostFunctions struct{}\n\nfunc NewHostFunctions() HostFunctions {\n\treturn hostFunctions{}\n}\n\n//go:wasmimport env log\nfunc _log(ptr uint32, size uint32) uint64\n\nfunc (h hostFunctions) Log(ctx context.Context, request *LogRequest) (*Empty, error) {\n\tbuf, err := request.MarshalVT()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tptr, size := wasm.ByteToPtr(buf)\n\tptrSize := _log(ptr, size)\n\twasm.Free(ptr)\n\n\tptr = uint32(ptrSize >> 32)\n\tsize = uint32(ptrSize)\n\tbuf = wasm.PtrToByte(ptr, size)\n\n\tresponse := new(Empty)\n\tif err = response.UnmarshalVT(buf); err != nil {\n\t\treturn nil, err\n\t}\n\treturn response, nil\n}\n"
  },
  {
    "path": "vendor/github.com/containerd/nri/pkg/api/api_service.pb.go",
    "content": "//\n//Copyright The containerd Authors.\n//\n//Licensed under the Apache License, Version 2.0 (the \"License\");\n//you may not use this file except in compliance with the License.\n//You may obtain a copy of the License at\n//\n//http://www.apache.org/licenses/LICENSE-2.0\n//\n//Unless required by applicable law or agreed to in writing, software\n//distributed under the License is distributed on an \"AS IS\" BASIS,\n//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n//See the License for the specific language governing permissions and\n//limitations under the License.\n\n// Code generated by protoc-gen-go-plugin. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go-plugin v0.1.0\n// \tprotoc               v3.20.1\n// source: pkg/api/api.proto\n\npackage api\n\nimport (\n\tcontext \"context\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Plugin is the API NRI uses to interact with plugins. It is used to\n// - configure a plugin and subscribe it for lifecycle events\n// - synchronize the state of a plugin with that of the runtime\n// - hook a plugin into the lifecycle events of its interest\n//\n// During configuration the plugin tells the runtime which lifecycle events\n// it wishes to get hooked into. Once configured, the plugin is synchronized\n// with the runtime by receiving the list of pods and containers known to\n// the runtime. The plugin can request changes to any of the containers in\n// response. After initial synchronization the plugin starts receiving the\n// events it subscribed for as they occur in the runtime. For container\n// creation, update, and stop events, the plugin can request changes, both\n// to the container that triggered the event or any other existing container\n// in the runtime.\n//\n// For a subset of the container lifecycle events, NRI defines an additional\n// Post-variant of the event. These variants are defined for CreateContainer,\n// StartContainer, and UpdateContainer. For creation and update, these events\n// can be used by plugins to discover the full extent of changes applied to\n// the container, including any changes made by other active plugins.\n//\n// go:plugin type=plugin version=1\ntype Plugin interface {\n\t// Configure the plugin and get its event subscription.\n\tConfigure(context.Context, *ConfigureRequest) (*ConfigureResponse, error)\n\t// Synchronize the plugin with the state of the runtime.\n\tSynchronize(context.Context, *SynchronizeRequest) (*SynchronizeResponse, error)\n\t// Shutdown a plugin (let it know the runtime is going down).\n\tShutdown(context.Context, *Empty) (*Empty, error)\n\t// CreateContainer relays the corresponding request to the plugin. In\n\t// response, the plugin can adjust the container being created, and\n\t// update other containers in the runtime. Container adjustment can\n\t// alter labels, annotations, mounts, devices, environment variables,\n\t// OCI hooks, and assigned container resources. Updates can alter\n\t// assigned container resources.\n\tCreateContainer(context.Context, *CreateContainerRequest) (*CreateContainerResponse, error)\n\t// UpdateContainer relays the corresponding request to the plugin.\n\t// The plugin can alter how the container is updated and request updates\n\t// to additional containers in the runtime.\n\tUpdateContainer(context.Context, *UpdateContainerRequest) (*UpdateContainerResponse, error)\n\t// StopContainer relays the corresponding request to the plugin. The plugin\n\t// can update any of the remaining containers in the runtime in response.\n\tStopContainer(context.Context, *StopContainerRequest) (*StopContainerResponse, error)\n\t// UpdatePodSandbox relays the corresponding request to the plugin.\n\tUpdatePodSandbox(context.Context, *UpdatePodSandboxRequest) (*UpdatePodSandboxResponse, error)\n\t// StateChange relays any remaining pod or container lifecycle/state change\n\t// events the plugin has subscribed for. These can be used to trigger any\n\t// plugin-specific processing which needs to occur in connection with any of\n\t// these events.\n\tStateChange(context.Context, *StateChangeEvent) (*Empty, error)\n\t// ValidateContainerAdjustment relays a container adjustment validation request\n\t// to the plugin. Container creation will fail the plugin rejects the adjustments.\n\tValidateContainerAdjustment(context.Context, *ValidateContainerAdjustmentRequest) (*ValidateContainerAdjustmentResponse, error)\n}\n\n// go:plugin type=host\ntype HostFunctions interface {\n\t// Log displays a log message\n\tLog(context.Context, *LogRequest) (*Empty, error)\n}\n"
  },
  {
    "path": "vendor/github.com/containerd/nri/pkg/api/api_ttrpc.pb.go",
    "content": "//go:build !wasip1\n\n// Code generated by protoc-gen-go-ttrpc. DO NOT EDIT.\n// source: pkg/api/api.proto\npackage api\n\nimport (\n\tcontext \"context\"\n\tttrpc \"github.com/containerd/ttrpc\"\n)\n\ntype RuntimeService interface {\n\tRegisterPlugin(context.Context, *RegisterPluginRequest) (*Empty, error)\n\tUpdateContainers(context.Context, *UpdateContainersRequest) (*UpdateContainersResponse, error)\n}\n\nfunc RegisterRuntimeService(srv *ttrpc.Server, svc RuntimeService) {\n\tsrv.RegisterService(\"nri.pkg.api.v1alpha1.Runtime\", &ttrpc.ServiceDesc{\n\t\tMethods: map[string]ttrpc.Method{\n\t\t\t\"RegisterPlugin\": func(ctx context.Context, unmarshal func(interface{}) error) (interface{}, error) {\n\t\t\t\tvar req RegisterPluginRequest\n\t\t\t\tif err := unmarshal(&req); err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\treturn svc.RegisterPlugin(ctx, &req)\n\t\t\t},\n\t\t\t\"UpdateContainers\": func(ctx context.Context, unmarshal func(interface{}) error) (interface{}, error) {\n\t\t\t\tvar req UpdateContainersRequest\n\t\t\t\tif err := unmarshal(&req); err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\treturn svc.UpdateContainers(ctx, &req)\n\t\t\t},\n\t\t},\n\t})\n}\n\ntype runtimeClient struct {\n\tclient *ttrpc.Client\n}\n\nfunc NewRuntimeClient(client *ttrpc.Client) RuntimeService {\n\treturn &runtimeClient{\n\t\tclient: client,\n\t}\n}\n\nfunc (c *runtimeClient) RegisterPlugin(ctx context.Context, req *RegisterPluginRequest) (*Empty, error) {\n\tvar resp Empty\n\tif err := c.client.Call(ctx, \"nri.pkg.api.v1alpha1.Runtime\", \"RegisterPlugin\", req, &resp); err != nil {\n\t\treturn nil, err\n\t}\n\treturn &resp, nil\n}\n\nfunc (c *runtimeClient) UpdateContainers(ctx context.Context, req *UpdateContainersRequest) (*UpdateContainersResponse, error) {\n\tvar resp UpdateContainersResponse\n\tif err := c.client.Call(ctx, \"nri.pkg.api.v1alpha1.Runtime\", \"UpdateContainers\", req, &resp); err != nil {\n\t\treturn nil, err\n\t}\n\treturn &resp, nil\n}\n\ntype PluginService interface {\n\tConfigure(context.Context, *ConfigureRequest) (*ConfigureResponse, error)\n\tSynchronize(context.Context, *SynchronizeRequest) (*SynchronizeResponse, error)\n\tShutdown(context.Context, *Empty) (*Empty, error)\n\tCreateContainer(context.Context, *CreateContainerRequest) (*CreateContainerResponse, error)\n\tUpdateContainer(context.Context, *UpdateContainerRequest) (*UpdateContainerResponse, error)\n\tStopContainer(context.Context, *StopContainerRequest) (*StopContainerResponse, error)\n\tUpdatePodSandbox(context.Context, *UpdatePodSandboxRequest) (*UpdatePodSandboxResponse, error)\n\tStateChange(context.Context, *StateChangeEvent) (*Empty, error)\n\tValidateContainerAdjustment(context.Context, *ValidateContainerAdjustmentRequest) (*ValidateContainerAdjustmentResponse, error)\n}\n\nfunc RegisterPluginService(srv *ttrpc.Server, svc PluginService) {\n\tsrv.RegisterService(\"nri.pkg.api.v1alpha1.Plugin\", &ttrpc.ServiceDesc{\n\t\tMethods: map[string]ttrpc.Method{\n\t\t\t\"Configure\": func(ctx context.Context, unmarshal func(interface{}) error) (interface{}, error) {\n\t\t\t\tvar req ConfigureRequest\n\t\t\t\tif err := unmarshal(&req); err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\treturn svc.Configure(ctx, &req)\n\t\t\t},\n\t\t\t\"Synchronize\": func(ctx context.Context, unmarshal func(interface{}) error) (interface{}, error) {\n\t\t\t\tvar req SynchronizeRequest\n\t\t\t\tif err := unmarshal(&req); err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\treturn svc.Synchronize(ctx, &req)\n\t\t\t},\n\t\t\t\"Shutdown\": func(ctx context.Context, unmarshal func(interface{}) error) (interface{}, error) {\n\t\t\t\tvar req Empty\n\t\t\t\tif err := unmarshal(&req); err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\treturn svc.Shutdown(ctx, &req)\n\t\t\t},\n\t\t\t\"CreateContainer\": func(ctx context.Context, unmarshal func(interface{}) error) (interface{}, error) {\n\t\t\t\tvar req CreateContainerRequest\n\t\t\t\tif err := unmarshal(&req); err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\treturn svc.CreateContainer(ctx, &req)\n\t\t\t},\n\t\t\t\"UpdateContainer\": func(ctx context.Context, unmarshal func(interface{}) error) (interface{}, error) {\n\t\t\t\tvar req UpdateContainerRequest\n\t\t\t\tif err := unmarshal(&req); err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\treturn svc.UpdateContainer(ctx, &req)\n\t\t\t},\n\t\t\t\"StopContainer\": func(ctx context.Context, unmarshal func(interface{}) error) (interface{}, error) {\n\t\t\t\tvar req StopContainerRequest\n\t\t\t\tif err := unmarshal(&req); err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\treturn svc.StopContainer(ctx, &req)\n\t\t\t},\n\t\t\t\"UpdatePodSandbox\": func(ctx context.Context, unmarshal func(interface{}) error) (interface{}, error) {\n\t\t\t\tvar req UpdatePodSandboxRequest\n\t\t\t\tif err := unmarshal(&req); err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\treturn svc.UpdatePodSandbox(ctx, &req)\n\t\t\t},\n\t\t\t\"StateChange\": func(ctx context.Context, unmarshal func(interface{}) error) (interface{}, error) {\n\t\t\t\tvar req StateChangeEvent\n\t\t\t\tif err := unmarshal(&req); err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\treturn svc.StateChange(ctx, &req)\n\t\t\t},\n\t\t\t\"ValidateContainerAdjustment\": func(ctx context.Context, unmarshal func(interface{}) error) (interface{}, error) {\n\t\t\t\tvar req ValidateContainerAdjustmentRequest\n\t\t\t\tif err := unmarshal(&req); err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\treturn svc.ValidateContainerAdjustment(ctx, &req)\n\t\t\t},\n\t\t},\n\t})\n}\n\ntype pluginClient struct {\n\tclient *ttrpc.Client\n}\n\nfunc NewPluginClient(client *ttrpc.Client) PluginService {\n\treturn &pluginClient{\n\t\tclient: client,\n\t}\n}\n\nfunc (c *pluginClient) Configure(ctx context.Context, req *ConfigureRequest) (*ConfigureResponse, error) {\n\tvar resp ConfigureResponse\n\tif err := c.client.Call(ctx, \"nri.pkg.api.v1alpha1.Plugin\", \"Configure\", req, &resp); err != nil {\n\t\treturn nil, err\n\t}\n\treturn &resp, nil\n}\n\nfunc (c *pluginClient) Synchronize(ctx context.Context, req *SynchronizeRequest) (*SynchronizeResponse, error) {\n\tvar resp SynchronizeResponse\n\tif err := c.client.Call(ctx, \"nri.pkg.api.v1alpha1.Plugin\", \"Synchronize\", req, &resp); err != nil {\n\t\treturn nil, err\n\t}\n\treturn &resp, nil\n}\n\nfunc (c *pluginClient) Shutdown(ctx context.Context, req *Empty) (*Empty, error) {\n\tvar resp Empty\n\tif err := c.client.Call(ctx, \"nri.pkg.api.v1alpha1.Plugin\", \"Shutdown\", req, &resp); err != nil {\n\t\treturn nil, err\n\t}\n\treturn &resp, nil\n}\n\nfunc (c *pluginClient) CreateContainer(ctx context.Context, req *CreateContainerRequest) (*CreateContainerResponse, error) {\n\tvar resp CreateContainerResponse\n\tif err := c.client.Call(ctx, \"nri.pkg.api.v1alpha1.Plugin\", \"CreateContainer\", req, &resp); err != nil {\n\t\treturn nil, err\n\t}\n\treturn &resp, nil\n}\n\nfunc (c *pluginClient) UpdateContainer(ctx context.Context, req *UpdateContainerRequest) (*UpdateContainerResponse, error) {\n\tvar resp UpdateContainerResponse\n\tif err := c.client.Call(ctx, \"nri.pkg.api.v1alpha1.Plugin\", \"UpdateContainer\", req, &resp); err != nil {\n\t\treturn nil, err\n\t}\n\treturn &resp, nil\n}\n\nfunc (c *pluginClient) StopContainer(ctx context.Context, req *StopContainerRequest) (*StopContainerResponse, error) {\n\tvar resp StopContainerResponse\n\tif err := c.client.Call(ctx, \"nri.pkg.api.v1alpha1.Plugin\", \"StopContainer\", req, &resp); err != nil {\n\t\treturn nil, err\n\t}\n\treturn &resp, nil\n}\n\nfunc (c *pluginClient) UpdatePodSandbox(ctx context.Context, req *UpdatePodSandboxRequest) (*UpdatePodSandboxResponse, error) {\n\tvar resp UpdatePodSandboxResponse\n\tif err := c.client.Call(ctx, \"nri.pkg.api.v1alpha1.Plugin\", \"UpdatePodSandbox\", req, &resp); err != nil {\n\t\treturn nil, err\n\t}\n\treturn &resp, nil\n}\n\nfunc (c *pluginClient) StateChange(ctx context.Context, req *StateChangeEvent) (*Empty, error) {\n\tvar resp Empty\n\tif err := c.client.Call(ctx, \"nri.pkg.api.v1alpha1.Plugin\", \"StateChange\", req, &resp); err != nil {\n\t\treturn nil, err\n\t}\n\treturn &resp, nil\n}\n\nfunc (c *pluginClient) ValidateContainerAdjustment(ctx context.Context, req *ValidateContainerAdjustmentRequest) (*ValidateContainerAdjustmentResponse, error) {\n\tvar resp ValidateContainerAdjustmentResponse\n\tif err := c.client.Call(ctx, \"nri.pkg.api.v1alpha1.Plugin\", \"ValidateContainerAdjustment\", req, &resp); err != nil {\n\t\treturn nil, err\n\t}\n\treturn &resp, nil\n}\n\ntype HostFunctionsService interface {\n\tLog(context.Context, *LogRequest) (*Empty, error)\n}\n\nfunc RegisterHostFunctionsService(srv *ttrpc.Server, svc HostFunctionsService) {\n\tsrv.RegisterService(\"nri.pkg.api.v1alpha1.HostFunctions\", &ttrpc.ServiceDesc{\n\t\tMethods: map[string]ttrpc.Method{\n\t\t\t\"Log\": func(ctx context.Context, unmarshal func(interface{}) error) (interface{}, error) {\n\t\t\t\tvar req LogRequest\n\t\t\t\tif err := unmarshal(&req); err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\treturn svc.Log(ctx, &req)\n\t\t\t},\n\t\t},\n\t})\n}\n\ntype hostfunctionsClient struct {\n\tclient *ttrpc.Client\n}\n\nfunc NewHostFunctionsClient(client *ttrpc.Client) HostFunctionsService {\n\treturn &hostfunctionsClient{\n\t\tclient: client,\n\t}\n}\n\nfunc (c *hostfunctionsClient) Log(ctx context.Context, req *LogRequest) (*Empty, error) {\n\tvar resp Empty\n\tif err := c.client.Call(ctx, \"nri.pkg.api.v1alpha1.HostFunctions\", \"Log\", req, &resp); err != nil {\n\t\treturn nil, err\n\t}\n\treturn &resp, nil\n}\n"
  },
  {
    "path": "vendor/github.com/containerd/nri/pkg/api/api_vtproto.pb.go",
    "content": "//\n//Copyright The containerd Authors.\n//\n//Licensed under the Apache License, Version 2.0 (the \"License\");\n//you may not use this file except in compliance with the License.\n//You may obtain a copy of the License at\n//\n//http://www.apache.org/licenses/LICENSE-2.0\n//\n//Unless required by applicable law or agreed to in writing, software\n//distributed under the License is distributed on an \"AS IS\" BASIS,\n//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n//See the License for the specific language governing permissions and\n//limitations under the License.\n\n// Code generated by protoc-gen-go-plugin. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go-plugin v0.1.0\n// \tprotoc               v3.20.1\n// source: pkg/api/api.proto\n\npackage api\n\nimport (\n\tfmt \"fmt\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tio \"io\"\n\tbits \"math/bits\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\nfunc (m *RegisterPluginRequest) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RegisterPluginRequest) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *RegisterPluginRequest) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.PluginIdx) > 0 {\n\t\ti -= len(m.PluginIdx)\n\t\tcopy(dAtA[i:], m.PluginIdx)\n\t\ti = encodeVarint(dAtA, i, uint64(len(m.PluginIdx)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.PluginName) > 0 {\n\t\ti -= len(m.PluginName)\n\t\tcopy(dAtA[i:], m.PluginName)\n\t\ti = encodeVarint(dAtA, i, uint64(len(m.PluginName)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *UpdateContainersRequest) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *UpdateContainersRequest) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *UpdateContainersRequest) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.Evict) > 0 {\n\t\tfor iNdEx := len(m.Evict) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.Evict[iNdEx].MarshalToSizedBufferVT(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t}\n\tif len(m.Update) > 0 {\n\t\tfor iNdEx := len(m.Update) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.Update[iNdEx].MarshalToSizedBufferVT(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *UpdateContainersResponse) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *UpdateContainersResponse) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *UpdateContainersResponse) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.Failed) > 0 {\n\t\tfor iNdEx := len(m.Failed) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.Failed[iNdEx].MarshalToSizedBufferVT(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *LogRequest) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *LogRequest) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *LogRequest) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.Level != 0 {\n\t\ti = encodeVarint(dAtA, i, uint64(m.Level))\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif len(m.Msg) > 0 {\n\t\ti -= len(m.Msg)\n\t\tcopy(dAtA[i:], m.Msg)\n\t\ti = encodeVarint(dAtA, i, uint64(len(m.Msg)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *ConfigureRequest) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *ConfigureRequest) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *ConfigureRequest) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.RequestTimeout != 0 {\n\t\ti = encodeVarint(dAtA, i, uint64(m.RequestTimeout))\n\t\ti--\n\t\tdAtA[i] = 0x28\n\t}\n\tif m.RegistrationTimeout != 0 {\n\t\ti = encodeVarint(dAtA, i, uint64(m.RegistrationTimeout))\n\t\ti--\n\t\tdAtA[i] = 0x20\n\t}\n\tif len(m.RuntimeVersion) > 0 {\n\t\ti -= len(m.RuntimeVersion)\n\t\tcopy(dAtA[i:], m.RuntimeVersion)\n\t\ti = encodeVarint(dAtA, i, uint64(len(m.RuntimeVersion)))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif len(m.RuntimeName) > 0 {\n\t\ti -= len(m.RuntimeName)\n\t\tcopy(dAtA[i:], m.RuntimeName)\n\t\ti = encodeVarint(dAtA, i, uint64(len(m.RuntimeName)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Config) > 0 {\n\t\ti -= len(m.Config)\n\t\tcopy(dAtA[i:], m.Config)\n\t\ti = encodeVarint(dAtA, i, uint64(len(m.Config)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *ConfigureResponse) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *ConfigureResponse) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *ConfigureResponse) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.Events != 0 {\n\t\ti = encodeVarint(dAtA, i, uint64(m.Events))\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *SynchronizeRequest) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *SynchronizeRequest) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *SynchronizeRequest) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.More {\n\t\ti--\n\t\tif m.More {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x18\n\t}\n\tif len(m.Containers) > 0 {\n\t\tfor iNdEx := len(m.Containers) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.Containers[iNdEx].MarshalToSizedBufferVT(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t}\n\tif len(m.Pods) > 0 {\n\t\tfor iNdEx := len(m.Pods) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.Pods[iNdEx].MarshalToSizedBufferVT(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *SynchronizeResponse) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *SynchronizeResponse) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *SynchronizeResponse) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.More {\n\t\ti--\n\t\tif m.More {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif len(m.Update) > 0 {\n\t\tfor iNdEx := len(m.Update) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.Update[iNdEx].MarshalToSizedBufferVT(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *CreateContainerRequest) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *CreateContainerRequest) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *CreateContainerRequest) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.Container != nil {\n\t\tsize, err := m.Container.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.Pod != nil {\n\t\tsize, err := m.Pod.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *CreateContainerResponse) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *CreateContainerResponse) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *CreateContainerResponse) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.Evict) > 0 {\n\t\tfor iNdEx := len(m.Evict) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.Evict[iNdEx].MarshalToSizedBufferVT(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t}\n\tif len(m.Update) > 0 {\n\t\tfor iNdEx := len(m.Update) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.Update[iNdEx].MarshalToSizedBufferVT(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t}\n\tif m.Adjust != nil {\n\t\tsize, err := m.Adjust.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *UpdateContainerRequest) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *UpdateContainerRequest) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *UpdateContainerRequest) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.LinuxResources != nil {\n\t\tsize, err := m.LinuxResources.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif m.Container != nil {\n\t\tsize, err := m.Container.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.Pod != nil {\n\t\tsize, err := m.Pod.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *UpdateContainerResponse) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *UpdateContainerResponse) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *UpdateContainerResponse) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.Evict) > 0 {\n\t\tfor iNdEx := len(m.Evict) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.Evict[iNdEx].MarshalToSizedBufferVT(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t}\n\tif len(m.Update) > 0 {\n\t\tfor iNdEx := len(m.Update) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.Update[iNdEx].MarshalToSizedBufferVT(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *StopContainerRequest) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *StopContainerRequest) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *StopContainerRequest) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.Container != nil {\n\t\tsize, err := m.Container.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.Pod != nil {\n\t\tsize, err := m.Pod.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *StopContainerResponse) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *StopContainerResponse) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *StopContainerResponse) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.Update) > 0 {\n\t\tfor iNdEx := len(m.Update) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.Update[iNdEx].MarshalToSizedBufferVT(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *UpdatePodSandboxRequest) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *UpdatePodSandboxRequest) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *UpdatePodSandboxRequest) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.LinuxResources != nil {\n\t\tsize, err := m.LinuxResources.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif m.OverheadLinuxResources != nil {\n\t\tsize, err := m.OverheadLinuxResources.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.Pod != nil {\n\t\tsize, err := m.Pod.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *UpdatePodSandboxResponse) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *UpdatePodSandboxResponse) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *UpdatePodSandboxResponse) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *StateChangeEvent) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *StateChangeEvent) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *StateChangeEvent) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.Container != nil {\n\t\tsize, err := m.Container.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif m.Pod != nil {\n\t\tsize, err := m.Pod.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.Event != 0 {\n\t\ti = encodeVarint(dAtA, i, uint64(m.Event))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *ValidateContainerAdjustmentRequest) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *ValidateContainerAdjustmentRequest) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *ValidateContainerAdjustmentRequest) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.Plugins) > 0 {\n\t\tfor iNdEx := len(m.Plugins) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.Plugins[iNdEx].MarshalToSizedBufferVT(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x32\n\t\t}\n\t}\n\tif m.Owners != nil {\n\t\tsize, err := m.Owners.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t}\n\tif len(m.Update) > 0 {\n\t\tfor iNdEx := len(m.Update) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.Update[iNdEx].MarshalToSizedBufferVT(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x22\n\t\t}\n\t}\n\tif m.Adjust != nil {\n\t\tsize, err := m.Adjust.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif m.Container != nil {\n\t\tsize, err := m.Container.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.Pod != nil {\n\t\tsize, err := m.Pod.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *PluginInstance) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *PluginInstance) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *PluginInstance) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.Index) > 0 {\n\t\ti -= len(m.Index)\n\t\tcopy(dAtA[i:], m.Index)\n\t\ti = encodeVarint(dAtA, i, uint64(len(m.Index)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Name) > 0 {\n\t\ti -= len(m.Name)\n\t\tcopy(dAtA[i:], m.Name)\n\t\ti = encodeVarint(dAtA, i, uint64(len(m.Name)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *ValidateContainerAdjustmentResponse) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *ValidateContainerAdjustmentResponse) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *ValidateContainerAdjustmentResponse) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.Reason) > 0 {\n\t\ti -= len(m.Reason)\n\t\tcopy(dAtA[i:], m.Reason)\n\t\ti = encodeVarint(dAtA, i, uint64(len(m.Reason)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.Reject {\n\t\ti--\n\t\tif m.Reject {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *Empty) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Empty) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *Empty) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *PodSandbox) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *PodSandbox) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *PodSandbox) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.Ips) > 0 {\n\t\tfor iNdEx := len(m.Ips) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\ti -= len(m.Ips[iNdEx])\n\t\t\tcopy(dAtA[i:], m.Ips[iNdEx])\n\t\t\ti = encodeVarint(dAtA, i, uint64(len(m.Ips[iNdEx])))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x52\n\t\t}\n\t}\n\tif m.Pid != 0 {\n\t\ti = encodeVarint(dAtA, i, uint64(m.Pid))\n\t\ti--\n\t\tdAtA[i] = 0x48\n\t}\n\tif m.Linux != nil {\n\t\tsize, err := m.Linux.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x42\n\t}\n\tif len(m.RuntimeHandler) > 0 {\n\t\ti -= len(m.RuntimeHandler)\n\t\tcopy(dAtA[i:], m.RuntimeHandler)\n\t\ti = encodeVarint(dAtA, i, uint64(len(m.RuntimeHandler)))\n\t\ti--\n\t\tdAtA[i] = 0x3a\n\t}\n\tif len(m.Annotations) > 0 {\n\t\tfor k := range m.Annotations {\n\t\t\tv := m.Annotations[k]\n\t\t\tbaseI := i\n\t\t\ti -= len(v)\n\t\t\tcopy(dAtA[i:], v)\n\t\t\ti = encodeVarint(dAtA, i, uint64(len(v)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t\ti -= len(k)\n\t\t\tcopy(dAtA[i:], k)\n\t\t\ti = encodeVarint(dAtA, i, uint64(len(k)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t\ti = encodeVarint(dAtA, i, uint64(baseI-i))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x32\n\t\t}\n\t}\n\tif len(m.Labels) > 0 {\n\t\tfor k := range m.Labels {\n\t\t\tv := m.Labels[k]\n\t\t\tbaseI := i\n\t\t\ti -= len(v)\n\t\t\tcopy(dAtA[i:], v)\n\t\t\ti = encodeVarint(dAtA, i, uint64(len(v)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t\ti -= len(k)\n\t\t\tcopy(dAtA[i:], k)\n\t\t\ti = encodeVarint(dAtA, i, uint64(len(k)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t\ti = encodeVarint(dAtA, i, uint64(baseI-i))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x2a\n\t\t}\n\t}\n\tif len(m.Namespace) > 0 {\n\t\ti -= len(m.Namespace)\n\t\tcopy(dAtA[i:], m.Namespace)\n\t\ti = encodeVarint(dAtA, i, uint64(len(m.Namespace)))\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\tif len(m.Uid) > 0 {\n\t\ti -= len(m.Uid)\n\t\tcopy(dAtA[i:], m.Uid)\n\t\ti = encodeVarint(dAtA, i, uint64(len(m.Uid)))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif len(m.Name) > 0 {\n\t\ti -= len(m.Name)\n\t\tcopy(dAtA[i:], m.Name)\n\t\ti = encodeVarint(dAtA, i, uint64(len(m.Name)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Id) > 0 {\n\t\ti -= len(m.Id)\n\t\tcopy(dAtA[i:], m.Id)\n\t\ti = encodeVarint(dAtA, i, uint64(len(m.Id)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *LinuxPodSandbox) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *LinuxPodSandbox) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *LinuxPodSandbox) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.Resources != nil {\n\t\tsize, err := m.Resources.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x32\n\t}\n\tif len(m.Namespaces) > 0 {\n\t\tfor iNdEx := len(m.Namespaces) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.Namespaces[iNdEx].MarshalToSizedBufferVT(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x2a\n\t\t}\n\t}\n\tif len(m.CgroupsPath) > 0 {\n\t\ti -= len(m.CgroupsPath)\n\t\tcopy(dAtA[i:], m.CgroupsPath)\n\t\ti = encodeVarint(dAtA, i, uint64(len(m.CgroupsPath)))\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\tif len(m.CgroupParent) > 0 {\n\t\ti -= len(m.CgroupParent)\n\t\tcopy(dAtA[i:], m.CgroupParent)\n\t\ti = encodeVarint(dAtA, i, uint64(len(m.CgroupParent)))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif m.PodResources != nil {\n\t\tsize, err := m.PodResources.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.PodOverhead != nil {\n\t\tsize, err := m.PodOverhead.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *Container) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Container) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *Container) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.User != nil {\n\t\tsize, err := m.User.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1\n\t\ti--\n\t\tdAtA[i] = 0xaa\n\t}\n\tif len(m.CDIDevices) > 0 {\n\t\tfor iNdEx := len(m.CDIDevices) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.CDIDevices[iNdEx].MarshalToSizedBufferVT(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa2\n\t\t}\n\t}\n\tif len(m.StatusMessage) > 0 {\n\t\ti -= len(m.StatusMessage)\n\t\tcopy(dAtA[i:], m.StatusMessage)\n\t\ti = encodeVarint(dAtA, i, uint64(len(m.StatusMessage)))\n\t\ti--\n\t\tdAtA[i] = 0x1\n\t\ti--\n\t\tdAtA[i] = 0x9a\n\t}\n\tif len(m.StatusReason) > 0 {\n\t\ti -= len(m.StatusReason)\n\t\tcopy(dAtA[i:], m.StatusReason)\n\t\ti = encodeVarint(dAtA, i, uint64(len(m.StatusReason)))\n\t\ti--\n\t\tdAtA[i] = 0x1\n\t\ti--\n\t\tdAtA[i] = 0x92\n\t}\n\tif m.ExitCode != 0 {\n\t\ti = encodeVarint(dAtA, i, uint64(m.ExitCode))\n\t\ti--\n\t\tdAtA[i] = 0x1\n\t\ti--\n\t\tdAtA[i] = 0x88\n\t}\n\tif m.FinishedAt != 0 {\n\t\ti = encodeVarint(dAtA, i, uint64(m.FinishedAt))\n\t\ti--\n\t\tdAtA[i] = 0x1\n\t\ti--\n\t\tdAtA[i] = 0x80\n\t}\n\tif m.StartedAt != 0 {\n\t\ti = encodeVarint(dAtA, i, uint64(m.StartedAt))\n\t\ti--\n\t\tdAtA[i] = 0x78\n\t}\n\tif m.CreatedAt != 0 {\n\t\ti = encodeVarint(dAtA, i, uint64(m.CreatedAt))\n\t\ti--\n\t\tdAtA[i] = 0x70\n\t}\n\tif len(m.Rlimits) > 0 {\n\t\tfor iNdEx := len(m.Rlimits) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.Rlimits[iNdEx].MarshalToSizedBufferVT(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x6a\n\t\t}\n\t}\n\tif m.Pid != 0 {\n\t\ti = encodeVarint(dAtA, i, uint64(m.Pid))\n\t\ti--\n\t\tdAtA[i] = 0x60\n\t}\n\tif m.Linux != nil {\n\t\tsize, err := m.Linux.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x5a\n\t}\n\tif m.Hooks != nil {\n\t\tsize, err := m.Hooks.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x52\n\t}\n\tif len(m.Mounts) > 0 {\n\t\tfor iNdEx := len(m.Mounts) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.Mounts[iNdEx].MarshalToSizedBufferVT(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x4a\n\t\t}\n\t}\n\tif len(m.Env) > 0 {\n\t\tfor iNdEx := len(m.Env) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\ti -= len(m.Env[iNdEx])\n\t\t\tcopy(dAtA[i:], m.Env[iNdEx])\n\t\t\ti = encodeVarint(dAtA, i, uint64(len(m.Env[iNdEx])))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x42\n\t\t}\n\t}\n\tif len(m.Args) > 0 {\n\t\tfor iNdEx := len(m.Args) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\ti -= len(m.Args[iNdEx])\n\t\t\tcopy(dAtA[i:], m.Args[iNdEx])\n\t\t\ti = encodeVarint(dAtA, i, uint64(len(m.Args[iNdEx])))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x3a\n\t\t}\n\t}\n\tif len(m.Annotations) > 0 {\n\t\tfor k := range m.Annotations {\n\t\t\tv := m.Annotations[k]\n\t\t\tbaseI := i\n\t\t\ti -= len(v)\n\t\t\tcopy(dAtA[i:], v)\n\t\t\ti = encodeVarint(dAtA, i, uint64(len(v)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t\ti -= len(k)\n\t\t\tcopy(dAtA[i:], k)\n\t\t\ti = encodeVarint(dAtA, i, uint64(len(k)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t\ti = encodeVarint(dAtA, i, uint64(baseI-i))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x32\n\t\t}\n\t}\n\tif len(m.Labels) > 0 {\n\t\tfor k := range m.Labels {\n\t\t\tv := m.Labels[k]\n\t\t\tbaseI := i\n\t\t\ti -= len(v)\n\t\t\tcopy(dAtA[i:], v)\n\t\t\ti = encodeVarint(dAtA, i, uint64(len(v)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t\ti -= len(k)\n\t\t\tcopy(dAtA[i:], k)\n\t\t\ti = encodeVarint(dAtA, i, uint64(len(k)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t\ti = encodeVarint(dAtA, i, uint64(baseI-i))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x2a\n\t\t}\n\t}\n\tif m.State != 0 {\n\t\ti = encodeVarint(dAtA, i, uint64(m.State))\n\t\ti--\n\t\tdAtA[i] = 0x20\n\t}\n\tif len(m.Name) > 0 {\n\t\ti -= len(m.Name)\n\t\tcopy(dAtA[i:], m.Name)\n\t\ti = encodeVarint(dAtA, i, uint64(len(m.Name)))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif len(m.PodSandboxId) > 0 {\n\t\ti -= len(m.PodSandboxId)\n\t\tcopy(dAtA[i:], m.PodSandboxId)\n\t\ti = encodeVarint(dAtA, i, uint64(len(m.PodSandboxId)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Id) > 0 {\n\t\ti -= len(m.Id)\n\t\tcopy(dAtA[i:], m.Id)\n\t\ti = encodeVarint(dAtA, i, uint64(len(m.Id)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *Mount) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Mount) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *Mount) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.Options) > 0 {\n\t\tfor iNdEx := len(m.Options) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\ti -= len(m.Options[iNdEx])\n\t\t\tcopy(dAtA[i:], m.Options[iNdEx])\n\t\t\ti = encodeVarint(dAtA, i, uint64(len(m.Options[iNdEx])))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x22\n\t\t}\n\t}\n\tif len(m.Source) > 0 {\n\t\ti -= len(m.Source)\n\t\tcopy(dAtA[i:], m.Source)\n\t\ti = encodeVarint(dAtA, i, uint64(len(m.Source)))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif len(m.Type) > 0 {\n\t\ti -= len(m.Type)\n\t\tcopy(dAtA[i:], m.Type)\n\t\ti = encodeVarint(dAtA, i, uint64(len(m.Type)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Destination) > 0 {\n\t\ti -= len(m.Destination)\n\t\tcopy(dAtA[i:], m.Destination)\n\t\ti = encodeVarint(dAtA, i, uint64(len(m.Destination)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *Hooks) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Hooks) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *Hooks) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.Poststop) > 0 {\n\t\tfor iNdEx := len(m.Poststop) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.Poststop[iNdEx].MarshalToSizedBufferVT(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x32\n\t\t}\n\t}\n\tif len(m.Poststart) > 0 {\n\t\tfor iNdEx := len(m.Poststart) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.Poststart[iNdEx].MarshalToSizedBufferVT(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x2a\n\t\t}\n\t}\n\tif len(m.StartContainer) > 0 {\n\t\tfor iNdEx := len(m.StartContainer) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.StartContainer[iNdEx].MarshalToSizedBufferVT(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x22\n\t\t}\n\t}\n\tif len(m.CreateContainer) > 0 {\n\t\tfor iNdEx := len(m.CreateContainer) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.CreateContainer[iNdEx].MarshalToSizedBufferVT(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t}\n\tif len(m.CreateRuntime) > 0 {\n\t\tfor iNdEx := len(m.CreateRuntime) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.CreateRuntime[iNdEx].MarshalToSizedBufferVT(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t}\n\tif len(m.Prestart) > 0 {\n\t\tfor iNdEx := len(m.Prestart) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.Prestart[iNdEx].MarshalToSizedBufferVT(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *Hook) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Hook) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *Hook) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.Timeout != nil {\n\t\tsize, err := m.Timeout.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\tif len(m.Env) > 0 {\n\t\tfor iNdEx := len(m.Env) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\ti -= len(m.Env[iNdEx])\n\t\t\tcopy(dAtA[i:], m.Env[iNdEx])\n\t\t\ti = encodeVarint(dAtA, i, uint64(len(m.Env[iNdEx])))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t}\n\tif len(m.Args) > 0 {\n\t\tfor iNdEx := len(m.Args) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\ti -= len(m.Args[iNdEx])\n\t\t\tcopy(dAtA[i:], m.Args[iNdEx])\n\t\t\ti = encodeVarint(dAtA, i, uint64(len(m.Args[iNdEx])))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t}\n\tif len(m.Path) > 0 {\n\t\ti -= len(m.Path)\n\t\tcopy(dAtA[i:], m.Path)\n\t\ti = encodeVarint(dAtA, i, uint64(len(m.Path)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *LinuxContainer) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *LinuxContainer) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *LinuxContainer) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.Rdt != nil {\n\t\tsize, err := m.Rdt.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x62\n\t}\n\tif m.Scheduler != nil {\n\t\tsize, err := m.Scheduler.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x5a\n\t}\n\tif len(m.NetDevices) > 0 {\n\t\tfor k := range m.NetDevices {\n\t\t\tv := m.NetDevices[k]\n\t\t\tbaseI := i\n\t\t\tsize, err := v.MarshalToSizedBufferVT(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t\ti -= len(k)\n\t\t\tcopy(dAtA[i:], k)\n\t\t\ti = encodeVarint(dAtA, i, uint64(len(k)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t\ti = encodeVarint(dAtA, i, uint64(baseI-i))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x52\n\t\t}\n\t}\n\tif len(m.Sysctl) > 0 {\n\t\tfor k := range m.Sysctl {\n\t\t\tv := m.Sysctl[k]\n\t\t\tbaseI := i\n\t\t\ti -= len(v)\n\t\t\tcopy(dAtA[i:], v)\n\t\t\ti = encodeVarint(dAtA, i, uint64(len(v)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t\ti -= len(k)\n\t\t\tcopy(dAtA[i:], k)\n\t\t\ti = encodeVarint(dAtA, i, uint64(len(k)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t\ti = encodeVarint(dAtA, i, uint64(baseI-i))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x4a\n\t\t}\n\t}\n\tif m.SeccompPolicy != nil {\n\t\tsize, err := m.SeccompPolicy.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x42\n\t}\n\tif m.SeccompProfile != nil {\n\t\tsize, err := m.SeccompProfile.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x3a\n\t}\n\tif m.IoPriority != nil {\n\t\tsize, err := m.IoPriority.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x32\n\t}\n\tif len(m.CgroupsPath) > 0 {\n\t\ti -= len(m.CgroupsPath)\n\t\tcopy(dAtA[i:], m.CgroupsPath)\n\t\ti = encodeVarint(dAtA, i, uint64(len(m.CgroupsPath)))\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t}\n\tif m.OomScoreAdj != nil {\n\t\tsize, err := m.OomScoreAdj.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\tif m.Resources != nil {\n\t\tsize, err := m.Resources.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif len(m.Devices) > 0 {\n\t\tfor iNdEx := len(m.Devices) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.Devices[iNdEx].MarshalToSizedBufferVT(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t}\n\tif len(m.Namespaces) > 0 {\n\t\tfor iNdEx := len(m.Namespaces) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.Namespaces[iNdEx].MarshalToSizedBufferVT(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *LinuxNamespace) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *LinuxNamespace) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *LinuxNamespace) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.Path) > 0 {\n\t\ti -= len(m.Path)\n\t\tcopy(dAtA[i:], m.Path)\n\t\ti = encodeVarint(dAtA, i, uint64(len(m.Path)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Type) > 0 {\n\t\ti -= len(m.Type)\n\t\tcopy(dAtA[i:], m.Type)\n\t\ti = encodeVarint(dAtA, i, uint64(len(m.Type)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *LinuxDevice) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *LinuxDevice) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *LinuxDevice) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.Gid != nil {\n\t\tsize, err := m.Gid.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x3a\n\t}\n\tif m.Uid != nil {\n\t\tsize, err := m.Uid.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x32\n\t}\n\tif m.FileMode != nil {\n\t\tsize, err := m.FileMode.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t}\n\tif m.Minor != 0 {\n\t\ti = encodeVarint(dAtA, i, uint64(m.Minor))\n\t\ti--\n\t\tdAtA[i] = 0x20\n\t}\n\tif m.Major != 0 {\n\t\ti = encodeVarint(dAtA, i, uint64(m.Major))\n\t\ti--\n\t\tdAtA[i] = 0x18\n\t}\n\tif len(m.Type) > 0 {\n\t\ti -= len(m.Type)\n\t\tcopy(dAtA[i:], m.Type)\n\t\ti = encodeVarint(dAtA, i, uint64(len(m.Type)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Path) > 0 {\n\t\ti -= len(m.Path)\n\t\tcopy(dAtA[i:], m.Path)\n\t\ti = encodeVarint(dAtA, i, uint64(len(m.Path)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *LinuxDeviceCgroup) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *LinuxDeviceCgroup) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *LinuxDeviceCgroup) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.Access) > 0 {\n\t\ti -= len(m.Access)\n\t\tcopy(dAtA[i:], m.Access)\n\t\ti = encodeVarint(dAtA, i, uint64(len(m.Access)))\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t}\n\tif m.Minor != nil {\n\t\tsize, err := m.Minor.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\tif m.Major != nil {\n\t\tsize, err := m.Major.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif len(m.Type) > 0 {\n\t\ti -= len(m.Type)\n\t\tcopy(dAtA[i:], m.Type)\n\t\ti = encodeVarint(dAtA, i, uint64(len(m.Type)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.Allow {\n\t\ti--\n\t\tif m.Allow {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *CDIDevice) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *CDIDevice) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *CDIDevice) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.Name) > 0 {\n\t\ti -= len(m.Name)\n\t\tcopy(dAtA[i:], m.Name)\n\t\ti = encodeVarint(dAtA, i, uint64(len(m.Name)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *User) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *User) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *User) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.AdditionalGids) > 0 {\n\t\tvar pksize2 int\n\t\tfor _, num := range m.AdditionalGids {\n\t\t\tpksize2 += sov(uint64(num))\n\t\t}\n\t\ti -= pksize2\n\t\tj1 := i\n\t\tfor _, num := range m.AdditionalGids {\n\t\t\tfor num >= 1<<7 {\n\t\t\t\tdAtA[j1] = uint8(uint64(num)&0x7f | 0x80)\n\t\t\t\tnum >>= 7\n\t\t\t\tj1++\n\t\t\t}\n\t\t\tdAtA[j1] = uint8(num)\n\t\t\tj1++\n\t\t}\n\t\ti = encodeVarint(dAtA, i, uint64(pksize2))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif m.Gid != 0 {\n\t\ti = encodeVarint(dAtA, i, uint64(m.Gid))\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif m.Uid != 0 {\n\t\ti = encodeVarint(dAtA, i, uint64(m.Uid))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *LinuxResources) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *LinuxResources) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *LinuxResources) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.Pids != nil {\n\t\tsize, err := m.Pids.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x42\n\t}\n\tif len(m.Devices) > 0 {\n\t\tfor iNdEx := len(m.Devices) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.Devices[iNdEx].MarshalToSizedBufferVT(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x3a\n\t\t}\n\t}\n\tif len(m.Unified) > 0 {\n\t\tfor k := range m.Unified {\n\t\t\tv := m.Unified[k]\n\t\t\tbaseI := i\n\t\t\ti -= len(v)\n\t\t\tcopy(dAtA[i:], v)\n\t\t\ti = encodeVarint(dAtA, i, uint64(len(v)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t\ti -= len(k)\n\t\t\tcopy(dAtA[i:], k)\n\t\t\ti = encodeVarint(dAtA, i, uint64(len(k)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t\ti = encodeVarint(dAtA, i, uint64(baseI-i))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x32\n\t\t}\n\t}\n\tif m.RdtClass != nil {\n\t\tsize, err := m.RdtClass.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t}\n\tif m.BlockioClass != nil {\n\t\tsize, err := m.BlockioClass.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\tif len(m.HugepageLimits) > 0 {\n\t\tfor iNdEx := len(m.HugepageLimits) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.HugepageLimits[iNdEx].MarshalToSizedBufferVT(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t}\n\tif m.Cpu != nil {\n\t\tsize, err := m.Cpu.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.Memory != nil {\n\t\tsize, err := m.Memory.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *LinuxMemory) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *LinuxMemory) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *LinuxMemory) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.UseHierarchy != nil {\n\t\tsize, err := m.UseHierarchy.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x42\n\t}\n\tif m.DisableOomKiller != nil {\n\t\tsize, err := m.DisableOomKiller.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x3a\n\t}\n\tif m.Swappiness != nil {\n\t\tsize, err := m.Swappiness.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x32\n\t}\n\tif m.KernelTcp != nil {\n\t\tsize, err := m.KernelTcp.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t}\n\tif m.Kernel != nil {\n\t\tsize, err := m.Kernel.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\tif m.Swap != nil {\n\t\tsize, err := m.Swap.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif m.Reservation != nil {\n\t\tsize, err := m.Reservation.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.Limit != nil {\n\t\tsize, err := m.Limit.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *LinuxCPU) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *LinuxCPU) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *LinuxCPU) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.Mems) > 0 {\n\t\ti -= len(m.Mems)\n\t\tcopy(dAtA[i:], m.Mems)\n\t\ti = encodeVarint(dAtA, i, uint64(len(m.Mems)))\n\t\ti--\n\t\tdAtA[i] = 0x3a\n\t}\n\tif len(m.Cpus) > 0 {\n\t\ti -= len(m.Cpus)\n\t\tcopy(dAtA[i:], m.Cpus)\n\t\ti = encodeVarint(dAtA, i, uint64(len(m.Cpus)))\n\t\ti--\n\t\tdAtA[i] = 0x32\n\t}\n\tif m.RealtimePeriod != nil {\n\t\tsize, err := m.RealtimePeriod.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t}\n\tif m.RealtimeRuntime != nil {\n\t\tsize, err := m.RealtimeRuntime.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\tif m.Period != nil {\n\t\tsize, err := m.Period.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif m.Quota != nil {\n\t\tsize, err := m.Quota.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.Shares != nil {\n\t\tsize, err := m.Shares.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *HugepageLimit) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *HugepageLimit) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *HugepageLimit) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.Limit != 0 {\n\t\ti = encodeVarint(dAtA, i, uint64(m.Limit))\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif len(m.PageSize) > 0 {\n\t\ti -= len(m.PageSize)\n\t\tcopy(dAtA[i:], m.PageSize)\n\t\ti = encodeVarint(dAtA, i, uint64(len(m.PageSize)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *SecurityProfile) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *SecurityProfile) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *SecurityProfile) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.LocalhostRef) > 0 {\n\t\ti -= len(m.LocalhostRef)\n\t\tcopy(dAtA[i:], m.LocalhostRef)\n\t\ti = encodeVarint(dAtA, i, uint64(len(m.LocalhostRef)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.ProfileType != 0 {\n\t\ti = encodeVarint(dAtA, i, uint64(m.ProfileType))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *POSIXRlimit) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *POSIXRlimit) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *POSIXRlimit) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.Soft != 0 {\n\t\ti = encodeVarint(dAtA, i, uint64(m.Soft))\n\t\ti--\n\t\tdAtA[i] = 0x18\n\t}\n\tif m.Hard != 0 {\n\t\ti = encodeVarint(dAtA, i, uint64(m.Hard))\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif len(m.Type) > 0 {\n\t\ti -= len(m.Type)\n\t\tcopy(dAtA[i:], m.Type)\n\t\ti = encodeVarint(dAtA, i, uint64(len(m.Type)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *LinuxPids) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *LinuxPids) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *LinuxPids) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.Limit != 0 {\n\t\ti = encodeVarint(dAtA, i, uint64(m.Limit))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *LinuxIOPriority) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *LinuxIOPriority) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *LinuxIOPriority) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.Priority != 0 {\n\t\ti = encodeVarint(dAtA, i, uint64(m.Priority))\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif m.Class != 0 {\n\t\ti = encodeVarint(dAtA, i, uint64(m.Class))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *LinuxNetDevice) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *LinuxNetDevice) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *LinuxNetDevice) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.Name) > 0 {\n\t\ti -= len(m.Name)\n\t\tcopy(dAtA[i:], m.Name)\n\t\ti = encodeVarint(dAtA, i, uint64(len(m.Name)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *LinuxScheduler) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *LinuxScheduler) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *LinuxScheduler) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.Period != 0 {\n\t\ti = encodeVarint(dAtA, i, uint64(m.Period))\n\t\ti--\n\t\tdAtA[i] = 0x38\n\t}\n\tif m.Deadline != 0 {\n\t\ti = encodeVarint(dAtA, i, uint64(m.Deadline))\n\t\ti--\n\t\tdAtA[i] = 0x30\n\t}\n\tif m.Runtime != 0 {\n\t\ti = encodeVarint(dAtA, i, uint64(m.Runtime))\n\t\ti--\n\t\tdAtA[i] = 0x28\n\t}\n\tif len(m.Flags) > 0 {\n\t\tvar pksize2 int\n\t\tfor _, num := range m.Flags {\n\t\t\tpksize2 += sov(uint64(num))\n\t\t}\n\t\ti -= pksize2\n\t\tj1 := i\n\t\tfor _, num1 := range m.Flags {\n\t\t\tnum := uint64(num1)\n\t\t\tfor num >= 1<<7 {\n\t\t\t\tdAtA[j1] = uint8(uint64(num)&0x7f | 0x80)\n\t\t\t\tnum >>= 7\n\t\t\t\tj1++\n\t\t\t}\n\t\t\tdAtA[j1] = uint8(num)\n\t\t\tj1++\n\t\t}\n\t\ti = encodeVarint(dAtA, i, uint64(pksize2))\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\tif m.Priority != 0 {\n\t\ti = encodeVarint(dAtA, i, uint64(m.Priority))\n\t\ti--\n\t\tdAtA[i] = 0x18\n\t}\n\tif m.Nice != 0 {\n\t\ti = encodeVarint(dAtA, i, uint64(m.Nice))\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif m.Policy != 0 {\n\t\ti = encodeVarint(dAtA, i, uint64(m.Policy))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *ContainerAdjustment) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *ContainerAdjustment) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *ContainerAdjustment) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.Args) > 0 {\n\t\tfor iNdEx := len(m.Args) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\ti -= len(m.Args[iNdEx])\n\t\t\tcopy(dAtA[i:], m.Args[iNdEx])\n\t\t\ti = encodeVarint(dAtA, i, uint64(len(m.Args[iNdEx])))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x4a\n\t\t}\n\t}\n\tif len(m.CDIDevices) > 0 {\n\t\tfor iNdEx := len(m.CDIDevices) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.CDIDevices[iNdEx].MarshalToSizedBufferVT(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x42\n\t\t}\n\t}\n\tif len(m.Rlimits) > 0 {\n\t\tfor iNdEx := len(m.Rlimits) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.Rlimits[iNdEx].MarshalToSizedBufferVT(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x3a\n\t\t}\n\t}\n\tif m.Linux != nil {\n\t\tsize, err := m.Linux.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x32\n\t}\n\tif m.Hooks != nil {\n\t\tsize, err := m.Hooks.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t}\n\tif len(m.Env) > 0 {\n\t\tfor iNdEx := len(m.Env) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.Env[iNdEx].MarshalToSizedBufferVT(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x22\n\t\t}\n\t}\n\tif len(m.Mounts) > 0 {\n\t\tfor iNdEx := len(m.Mounts) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.Mounts[iNdEx].MarshalToSizedBufferVT(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t}\n\tif len(m.Annotations) > 0 {\n\t\tfor k := range m.Annotations {\n\t\t\tv := m.Annotations[k]\n\t\t\tbaseI := i\n\t\t\ti -= len(v)\n\t\t\tcopy(dAtA[i:], v)\n\t\t\ti = encodeVarint(dAtA, i, uint64(len(v)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t\ti -= len(k)\n\t\t\tcopy(dAtA[i:], k)\n\t\t\ti = encodeVarint(dAtA, i, uint64(len(k)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t\ti = encodeVarint(dAtA, i, uint64(baseI-i))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *LinuxContainerAdjustment) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *LinuxContainerAdjustment) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *LinuxContainerAdjustment) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.Rdt != nil {\n\t\tsize, err := m.Rdt.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x5a\n\t}\n\tif m.Scheduler != nil {\n\t\tsize, err := m.Scheduler.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x52\n\t}\n\tif len(m.NetDevices) > 0 {\n\t\tfor k := range m.NetDevices {\n\t\t\tv := m.NetDevices[k]\n\t\t\tbaseI := i\n\t\t\tsize, err := v.MarshalToSizedBufferVT(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t\ti -= len(k)\n\t\t\tcopy(dAtA[i:], k)\n\t\t\ti = encodeVarint(dAtA, i, uint64(len(k)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t\ti = encodeVarint(dAtA, i, uint64(baseI-i))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x4a\n\t\t}\n\t}\n\tif len(m.Sysctl) > 0 {\n\t\tfor k := range m.Sysctl {\n\t\t\tv := m.Sysctl[k]\n\t\t\tbaseI := i\n\t\t\ti -= len(v)\n\t\t\tcopy(dAtA[i:], v)\n\t\t\ti = encodeVarint(dAtA, i, uint64(len(v)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t\ti -= len(k)\n\t\t\tcopy(dAtA[i:], k)\n\t\t\ti = encodeVarint(dAtA, i, uint64(len(k)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t\ti = encodeVarint(dAtA, i, uint64(baseI-i))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x42\n\t\t}\n\t}\n\tif len(m.Namespaces) > 0 {\n\t\tfor iNdEx := len(m.Namespaces) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.Namespaces[iNdEx].MarshalToSizedBufferVT(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x3a\n\t\t}\n\t}\n\tif m.SeccompPolicy != nil {\n\t\tsize, err := m.SeccompPolicy.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x32\n\t}\n\tif m.IoPriority != nil {\n\t\tsize, err := m.IoPriority.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t}\n\tif m.OomScoreAdj != nil {\n\t\tsize, err := m.OomScoreAdj.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\tif len(m.CgroupsPath) > 0 {\n\t\ti -= len(m.CgroupsPath)\n\t\tcopy(dAtA[i:], m.CgroupsPath)\n\t\ti = encodeVarint(dAtA, i, uint64(len(m.CgroupsPath)))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif m.Resources != nil {\n\t\tsize, err := m.Resources.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Devices) > 0 {\n\t\tfor iNdEx := len(m.Devices) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.Devices[iNdEx].MarshalToSizedBufferVT(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *LinuxSeccomp) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *LinuxSeccomp) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *LinuxSeccomp) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.Syscalls) > 0 {\n\t\tfor iNdEx := len(m.Syscalls) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.Syscalls[iNdEx].MarshalToSizedBufferVT(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x3a\n\t\t}\n\t}\n\tif len(m.ListenerMetadata) > 0 {\n\t\ti -= len(m.ListenerMetadata)\n\t\tcopy(dAtA[i:], m.ListenerMetadata)\n\t\ti = encodeVarint(dAtA, i, uint64(len(m.ListenerMetadata)))\n\t\ti--\n\t\tdAtA[i] = 0x32\n\t}\n\tif len(m.ListenerPath) > 0 {\n\t\ti -= len(m.ListenerPath)\n\t\tcopy(dAtA[i:], m.ListenerPath)\n\t\ti = encodeVarint(dAtA, i, uint64(len(m.ListenerPath)))\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t}\n\tif len(m.Flags) > 0 {\n\t\tfor iNdEx := len(m.Flags) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\ti -= len(m.Flags[iNdEx])\n\t\t\tcopy(dAtA[i:], m.Flags[iNdEx])\n\t\t\ti = encodeVarint(dAtA, i, uint64(len(m.Flags[iNdEx])))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x22\n\t\t}\n\t}\n\tif len(m.Architectures) > 0 {\n\t\tfor iNdEx := len(m.Architectures) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\ti -= len(m.Architectures[iNdEx])\n\t\t\tcopy(dAtA[i:], m.Architectures[iNdEx])\n\t\t\ti = encodeVarint(dAtA, i, uint64(len(m.Architectures[iNdEx])))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t}\n\tif m.DefaultErrno != nil {\n\t\tsize, err := m.DefaultErrno.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.DefaultAction) > 0 {\n\t\ti -= len(m.DefaultAction)\n\t\tcopy(dAtA[i:], m.DefaultAction)\n\t\ti = encodeVarint(dAtA, i, uint64(len(m.DefaultAction)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *LinuxSyscall) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *LinuxSyscall) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *LinuxSyscall) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.Args) > 0 {\n\t\tfor iNdEx := len(m.Args) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\tsize, err := m.Args[iNdEx].MarshalToSizedBufferVT(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x22\n\t\t}\n\t}\n\tif m.ErrnoRet != nil {\n\t\tsize, err := m.ErrnoRet.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif len(m.Action) > 0 {\n\t\ti -= len(m.Action)\n\t\tcopy(dAtA[i:], m.Action)\n\t\ti = encodeVarint(dAtA, i, uint64(len(m.Action)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Names) > 0 {\n\t\tfor iNdEx := len(m.Names) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\ti -= len(m.Names[iNdEx])\n\t\t\tcopy(dAtA[i:], m.Names[iNdEx])\n\t\t\ti = encodeVarint(dAtA, i, uint64(len(m.Names[iNdEx])))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *LinuxSeccompArg) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *LinuxSeccompArg) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *LinuxSeccompArg) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.Op) > 0 {\n\t\ti -= len(m.Op)\n\t\tcopy(dAtA[i:], m.Op)\n\t\ti = encodeVarint(dAtA, i, uint64(len(m.Op)))\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\tif m.ValueTwo != 0 {\n\t\ti = encodeVarint(dAtA, i, uint64(m.ValueTwo))\n\t\ti--\n\t\tdAtA[i] = 0x18\n\t}\n\tif m.Value != 0 {\n\t\ti = encodeVarint(dAtA, i, uint64(m.Value))\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif m.Index != 0 {\n\t\ti = encodeVarint(dAtA, i, uint64(m.Index))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *ContainerUpdate) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *ContainerUpdate) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *ContainerUpdate) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.IgnoreFailure {\n\t\ti--\n\t\tif m.IgnoreFailure {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x18\n\t}\n\tif m.Linux != nil {\n\t\tsize, err := m.Linux.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.ContainerId) > 0 {\n\t\ti -= len(m.ContainerId)\n\t\tcopy(dAtA[i:], m.ContainerId)\n\t\ti = encodeVarint(dAtA, i, uint64(len(m.ContainerId)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *LinuxContainerUpdate) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *LinuxContainerUpdate) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *LinuxContainerUpdate) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.Resources != nil {\n\t\tsize, err := m.Resources.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *ContainerEviction) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *ContainerEviction) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *ContainerEviction) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.Reason) > 0 {\n\t\ti -= len(m.Reason)\n\t\tcopy(dAtA[i:], m.Reason)\n\t\ti = encodeVarint(dAtA, i, uint64(len(m.Reason)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.ContainerId) > 0 {\n\t\ti -= len(m.ContainerId)\n\t\tcopy(dAtA[i:], m.ContainerId)\n\t\ti = encodeVarint(dAtA, i, uint64(len(m.ContainerId)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *LinuxRdt) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *LinuxRdt) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *LinuxRdt) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.Remove {\n\t\ti--\n\t\tif m.Remove {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x20\n\t}\n\tif m.EnableMonitoring != nil {\n\t\tsize, err := m.EnableMonitoring.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif m.Schemata != nil {\n\t\tsize, err := m.Schemata.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.ClosId != nil {\n\t\tsize, err := m.ClosId.MarshalToSizedBufferVT(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *KeyValue) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *KeyValue) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *KeyValue) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.Value) > 0 {\n\t\ti -= len(m.Value)\n\t\tcopy(dAtA[i:], m.Value)\n\t\ti = encodeVarint(dAtA, i, uint64(len(m.Value)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Key) > 0 {\n\t\ti -= len(m.Key)\n\t\tcopy(dAtA[i:], m.Key)\n\t\ti = encodeVarint(dAtA, i, uint64(len(m.Key)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *OptionalString) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *OptionalString) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *OptionalString) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.Value) > 0 {\n\t\ti -= len(m.Value)\n\t\tcopy(dAtA[i:], m.Value)\n\t\ti = encodeVarint(dAtA, i, uint64(len(m.Value)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *OptionalRepeatedString) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *OptionalRepeatedString) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *OptionalRepeatedString) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.Value) > 0 {\n\t\tfor iNdEx := len(m.Value) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\ti -= len(m.Value[iNdEx])\n\t\t\tcopy(dAtA[i:], m.Value[iNdEx])\n\t\t\ti = encodeVarint(dAtA, i, uint64(len(m.Value[iNdEx])))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *OptionalInt) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *OptionalInt) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *OptionalInt) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.Value != 0 {\n\t\ti = encodeVarint(dAtA, i, uint64(m.Value))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *OptionalInt32) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *OptionalInt32) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *OptionalInt32) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.Value != 0 {\n\t\ti = encodeVarint(dAtA, i, uint64(m.Value))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *OptionalUInt32) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *OptionalUInt32) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *OptionalUInt32) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.Value != 0 {\n\t\ti = encodeVarint(dAtA, i, uint64(m.Value))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *OptionalInt64) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *OptionalInt64) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *OptionalInt64) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.Value != 0 {\n\t\ti = encodeVarint(dAtA, i, uint64(m.Value))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *OptionalUInt64) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *OptionalUInt64) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *OptionalUInt64) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.Value != 0 {\n\t\ti = encodeVarint(dAtA, i, uint64(m.Value))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *OptionalBool) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *OptionalBool) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *OptionalBool) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.Value {\n\t\ti--\n\t\tif m.Value {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *OptionalFileMode) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *OptionalFileMode) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *OptionalFileMode) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif m.Value != 0 {\n\t\ti = encodeVarint(dAtA, i, uint64(m.Value))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *CompoundFieldOwners) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *CompoundFieldOwners) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *CompoundFieldOwners) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.Owners) > 0 {\n\t\tfor k := range m.Owners {\n\t\t\tv := m.Owners[k]\n\t\t\tbaseI := i\n\t\t\ti -= len(v)\n\t\t\tcopy(dAtA[i:], v)\n\t\t\ti = encodeVarint(dAtA, i, uint64(len(v)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t\ti -= len(k)\n\t\t\tcopy(dAtA[i:], k)\n\t\t\ti = encodeVarint(dAtA, i, uint64(len(k)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t\ti = encodeVarint(dAtA, i, uint64(baseI-i))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *FieldOwners) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *FieldOwners) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *FieldOwners) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.Compound) > 0 {\n\t\tfor k := range m.Compound {\n\t\t\tv := m.Compound[k]\n\t\t\tbaseI := i\n\t\t\tsize, err := v.MarshalToSizedBufferVT(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t\ti = encodeVarint(dAtA, i, uint64(k))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x8\n\t\t\ti = encodeVarint(dAtA, i, uint64(baseI-i))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t}\n\tif len(m.Simple) > 0 {\n\t\tfor k := range m.Simple {\n\t\t\tv := m.Simple[k]\n\t\t\tbaseI := i\n\t\t\ti -= len(v)\n\t\t\tcopy(dAtA[i:], v)\n\t\t\ti = encodeVarint(dAtA, i, uint64(len(v)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t\ti = encodeVarint(dAtA, i, uint64(k))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x8\n\t\t\ti = encodeVarint(dAtA, i, uint64(baseI-i))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *OwningPlugins) MarshalVT() (dAtA []byte, err error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\tsize := m.SizeVT()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBufferVT(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *OwningPlugins) MarshalToVT(dAtA []byte) (int, error) {\n\tsize := m.SizeVT()\n\treturn m.MarshalToSizedBufferVT(dAtA[:size])\n}\n\nfunc (m *OwningPlugins) MarshalToSizedBufferVT(dAtA []byte) (int, error) {\n\tif m == nil {\n\t\treturn 0, nil\n\t}\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.unknownFields != nil {\n\t\ti -= len(m.unknownFields)\n\t\tcopy(dAtA[i:], m.unknownFields)\n\t}\n\tif len(m.Owners) > 0 {\n\t\tfor k := range m.Owners {\n\t\t\tv := m.Owners[k]\n\t\t\tbaseI := i\n\t\t\tsize, err := v.MarshalToSizedBufferVT(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarint(dAtA, i, uint64(size))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t\ti -= len(k)\n\t\t\tcopy(dAtA[i:], k)\n\t\t\ti = encodeVarint(dAtA, i, uint64(len(k)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t\ti = encodeVarint(dAtA, i, uint64(baseI-i))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc encodeVarint(dAtA []byte, offset int, v uint64) int {\n\toffset -= sov(v)\n\tbase := offset\n\tfor v >= 1<<7 {\n\t\tdAtA[offset] = uint8(v&0x7f | 0x80)\n\t\tv >>= 7\n\t\toffset++\n\t}\n\tdAtA[offset] = uint8(v)\n\treturn base\n}\nfunc (m *RegisterPluginRequest) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.PluginName)\n\tif l > 0 {\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tl = len(m.PluginIdx)\n\tif l > 0 {\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *UpdateContainersRequest) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif len(m.Update) > 0 {\n\t\tfor _, e := range m.Update {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + sov(uint64(l))\n\t\t}\n\t}\n\tif len(m.Evict) > 0 {\n\t\tfor _, e := range m.Evict {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + sov(uint64(l))\n\t\t}\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *UpdateContainersResponse) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif len(m.Failed) > 0 {\n\t\tfor _, e := range m.Failed {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + sov(uint64(l))\n\t\t}\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *LogRequest) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Msg)\n\tif l > 0 {\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif m.Level != 0 {\n\t\tn += 1 + sov(uint64(m.Level))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *ConfigureRequest) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Config)\n\tif l > 0 {\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tl = len(m.RuntimeName)\n\tif l > 0 {\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tl = len(m.RuntimeVersion)\n\tif l > 0 {\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif m.RegistrationTimeout != 0 {\n\t\tn += 1 + sov(uint64(m.RegistrationTimeout))\n\t}\n\tif m.RequestTimeout != 0 {\n\t\tn += 1 + sov(uint64(m.RequestTimeout))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *ConfigureResponse) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Events != 0 {\n\t\tn += 1 + sov(uint64(m.Events))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *SynchronizeRequest) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif len(m.Pods) > 0 {\n\t\tfor _, e := range m.Pods {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + sov(uint64(l))\n\t\t}\n\t}\n\tif len(m.Containers) > 0 {\n\t\tfor _, e := range m.Containers {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + sov(uint64(l))\n\t\t}\n\t}\n\tif m.More {\n\t\tn += 2\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *SynchronizeResponse) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif len(m.Update) > 0 {\n\t\tfor _, e := range m.Update {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + sov(uint64(l))\n\t\t}\n\t}\n\tif m.More {\n\t\tn += 2\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *CreateContainerRequest) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Pod != nil {\n\t\tl = m.Pod.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif m.Container != nil {\n\t\tl = m.Container.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *CreateContainerResponse) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Adjust != nil {\n\t\tl = m.Adjust.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif len(m.Update) > 0 {\n\t\tfor _, e := range m.Update {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + sov(uint64(l))\n\t\t}\n\t}\n\tif len(m.Evict) > 0 {\n\t\tfor _, e := range m.Evict {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + sov(uint64(l))\n\t\t}\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *UpdateContainerRequest) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Pod != nil {\n\t\tl = m.Pod.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif m.Container != nil {\n\t\tl = m.Container.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif m.LinuxResources != nil {\n\t\tl = m.LinuxResources.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *UpdateContainerResponse) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif len(m.Update) > 0 {\n\t\tfor _, e := range m.Update {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + sov(uint64(l))\n\t\t}\n\t}\n\tif len(m.Evict) > 0 {\n\t\tfor _, e := range m.Evict {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + sov(uint64(l))\n\t\t}\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *StopContainerRequest) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Pod != nil {\n\t\tl = m.Pod.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif m.Container != nil {\n\t\tl = m.Container.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *StopContainerResponse) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif len(m.Update) > 0 {\n\t\tfor _, e := range m.Update {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + sov(uint64(l))\n\t\t}\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *UpdatePodSandboxRequest) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Pod != nil {\n\t\tl = m.Pod.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif m.OverheadLinuxResources != nil {\n\t\tl = m.OverheadLinuxResources.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif m.LinuxResources != nil {\n\t\tl = m.LinuxResources.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *UpdatePodSandboxResponse) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *StateChangeEvent) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Event != 0 {\n\t\tn += 1 + sov(uint64(m.Event))\n\t}\n\tif m.Pod != nil {\n\t\tl = m.Pod.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif m.Container != nil {\n\t\tl = m.Container.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *ValidateContainerAdjustmentRequest) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Pod != nil {\n\t\tl = m.Pod.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif m.Container != nil {\n\t\tl = m.Container.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif m.Adjust != nil {\n\t\tl = m.Adjust.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif len(m.Update) > 0 {\n\t\tfor _, e := range m.Update {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + sov(uint64(l))\n\t\t}\n\t}\n\tif m.Owners != nil {\n\t\tl = m.Owners.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif len(m.Plugins) > 0 {\n\t\tfor _, e := range m.Plugins {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + sov(uint64(l))\n\t\t}\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *PluginInstance) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Name)\n\tif l > 0 {\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tl = len(m.Index)\n\tif l > 0 {\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *ValidateContainerAdjustmentResponse) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Reject {\n\t\tn += 2\n\t}\n\tl = len(m.Reason)\n\tif l > 0 {\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *Empty) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *PodSandbox) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Id)\n\tif l > 0 {\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tl = len(m.Name)\n\tif l > 0 {\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tl = len(m.Uid)\n\tif l > 0 {\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tl = len(m.Namespace)\n\tif l > 0 {\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif len(m.Labels) > 0 {\n\t\tfor k, v := range m.Labels {\n\t\t\t_ = k\n\t\t\t_ = v\n\t\t\tmapEntrySize := 1 + len(k) + sov(uint64(len(k))) + 1 + len(v) + sov(uint64(len(v)))\n\t\t\tn += mapEntrySize + 1 + sov(uint64(mapEntrySize))\n\t\t}\n\t}\n\tif len(m.Annotations) > 0 {\n\t\tfor k, v := range m.Annotations {\n\t\t\t_ = k\n\t\t\t_ = v\n\t\t\tmapEntrySize := 1 + len(k) + sov(uint64(len(k))) + 1 + len(v) + sov(uint64(len(v)))\n\t\t\tn += mapEntrySize + 1 + sov(uint64(mapEntrySize))\n\t\t}\n\t}\n\tl = len(m.RuntimeHandler)\n\tif l > 0 {\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif m.Linux != nil {\n\t\tl = m.Linux.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif m.Pid != 0 {\n\t\tn += 1 + sov(uint64(m.Pid))\n\t}\n\tif len(m.Ips) > 0 {\n\t\tfor _, s := range m.Ips {\n\t\t\tl = len(s)\n\t\t\tn += 1 + l + sov(uint64(l))\n\t\t}\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *LinuxPodSandbox) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.PodOverhead != nil {\n\t\tl = m.PodOverhead.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif m.PodResources != nil {\n\t\tl = m.PodResources.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tl = len(m.CgroupParent)\n\tif l > 0 {\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tl = len(m.CgroupsPath)\n\tif l > 0 {\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif len(m.Namespaces) > 0 {\n\t\tfor _, e := range m.Namespaces {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + sov(uint64(l))\n\t\t}\n\t}\n\tif m.Resources != nil {\n\t\tl = m.Resources.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *Container) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Id)\n\tif l > 0 {\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tl = len(m.PodSandboxId)\n\tif l > 0 {\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tl = len(m.Name)\n\tif l > 0 {\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif m.State != 0 {\n\t\tn += 1 + sov(uint64(m.State))\n\t}\n\tif len(m.Labels) > 0 {\n\t\tfor k, v := range m.Labels {\n\t\t\t_ = k\n\t\t\t_ = v\n\t\t\tmapEntrySize := 1 + len(k) + sov(uint64(len(k))) + 1 + len(v) + sov(uint64(len(v)))\n\t\t\tn += mapEntrySize + 1 + sov(uint64(mapEntrySize))\n\t\t}\n\t}\n\tif len(m.Annotations) > 0 {\n\t\tfor k, v := range m.Annotations {\n\t\t\t_ = k\n\t\t\t_ = v\n\t\t\tmapEntrySize := 1 + len(k) + sov(uint64(len(k))) + 1 + len(v) + sov(uint64(len(v)))\n\t\t\tn += mapEntrySize + 1 + sov(uint64(mapEntrySize))\n\t\t}\n\t}\n\tif len(m.Args) > 0 {\n\t\tfor _, s := range m.Args {\n\t\t\tl = len(s)\n\t\t\tn += 1 + l + sov(uint64(l))\n\t\t}\n\t}\n\tif len(m.Env) > 0 {\n\t\tfor _, s := range m.Env {\n\t\t\tl = len(s)\n\t\t\tn += 1 + l + sov(uint64(l))\n\t\t}\n\t}\n\tif len(m.Mounts) > 0 {\n\t\tfor _, e := range m.Mounts {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + sov(uint64(l))\n\t\t}\n\t}\n\tif m.Hooks != nil {\n\t\tl = m.Hooks.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif m.Linux != nil {\n\t\tl = m.Linux.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif m.Pid != 0 {\n\t\tn += 1 + sov(uint64(m.Pid))\n\t}\n\tif len(m.Rlimits) > 0 {\n\t\tfor _, e := range m.Rlimits {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + sov(uint64(l))\n\t\t}\n\t}\n\tif m.CreatedAt != 0 {\n\t\tn += 1 + sov(uint64(m.CreatedAt))\n\t}\n\tif m.StartedAt != 0 {\n\t\tn += 1 + sov(uint64(m.StartedAt))\n\t}\n\tif m.FinishedAt != 0 {\n\t\tn += 2 + sov(uint64(m.FinishedAt))\n\t}\n\tif m.ExitCode != 0 {\n\t\tn += 2 + sov(uint64(m.ExitCode))\n\t}\n\tl = len(m.StatusReason)\n\tif l > 0 {\n\t\tn += 2 + l + sov(uint64(l))\n\t}\n\tl = len(m.StatusMessage)\n\tif l > 0 {\n\t\tn += 2 + l + sov(uint64(l))\n\t}\n\tif len(m.CDIDevices) > 0 {\n\t\tfor _, e := range m.CDIDevices {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 2 + l + sov(uint64(l))\n\t\t}\n\t}\n\tif m.User != nil {\n\t\tl = m.User.SizeVT()\n\t\tn += 2 + l + sov(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *Mount) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Destination)\n\tif l > 0 {\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tl = len(m.Type)\n\tif l > 0 {\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tl = len(m.Source)\n\tif l > 0 {\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif len(m.Options) > 0 {\n\t\tfor _, s := range m.Options {\n\t\t\tl = len(s)\n\t\t\tn += 1 + l + sov(uint64(l))\n\t\t}\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *Hooks) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif len(m.Prestart) > 0 {\n\t\tfor _, e := range m.Prestart {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + sov(uint64(l))\n\t\t}\n\t}\n\tif len(m.CreateRuntime) > 0 {\n\t\tfor _, e := range m.CreateRuntime {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + sov(uint64(l))\n\t\t}\n\t}\n\tif len(m.CreateContainer) > 0 {\n\t\tfor _, e := range m.CreateContainer {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + sov(uint64(l))\n\t\t}\n\t}\n\tif len(m.StartContainer) > 0 {\n\t\tfor _, e := range m.StartContainer {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + sov(uint64(l))\n\t\t}\n\t}\n\tif len(m.Poststart) > 0 {\n\t\tfor _, e := range m.Poststart {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + sov(uint64(l))\n\t\t}\n\t}\n\tif len(m.Poststop) > 0 {\n\t\tfor _, e := range m.Poststop {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + sov(uint64(l))\n\t\t}\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *Hook) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Path)\n\tif l > 0 {\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif len(m.Args) > 0 {\n\t\tfor _, s := range m.Args {\n\t\t\tl = len(s)\n\t\t\tn += 1 + l + sov(uint64(l))\n\t\t}\n\t}\n\tif len(m.Env) > 0 {\n\t\tfor _, s := range m.Env {\n\t\t\tl = len(s)\n\t\t\tn += 1 + l + sov(uint64(l))\n\t\t}\n\t}\n\tif m.Timeout != nil {\n\t\tl = m.Timeout.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *LinuxContainer) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif len(m.Namespaces) > 0 {\n\t\tfor _, e := range m.Namespaces {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + sov(uint64(l))\n\t\t}\n\t}\n\tif len(m.Devices) > 0 {\n\t\tfor _, e := range m.Devices {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + sov(uint64(l))\n\t\t}\n\t}\n\tif m.Resources != nil {\n\t\tl = m.Resources.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif m.OomScoreAdj != nil {\n\t\tl = m.OomScoreAdj.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tl = len(m.CgroupsPath)\n\tif l > 0 {\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif m.IoPriority != nil {\n\t\tl = m.IoPriority.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif m.SeccompProfile != nil {\n\t\tl = m.SeccompProfile.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif m.SeccompPolicy != nil {\n\t\tl = m.SeccompPolicy.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif len(m.Sysctl) > 0 {\n\t\tfor k, v := range m.Sysctl {\n\t\t\t_ = k\n\t\t\t_ = v\n\t\t\tmapEntrySize := 1 + len(k) + sov(uint64(len(k))) + 1 + len(v) + sov(uint64(len(v)))\n\t\t\tn += mapEntrySize + 1 + sov(uint64(mapEntrySize))\n\t\t}\n\t}\n\tif len(m.NetDevices) > 0 {\n\t\tfor k, v := range m.NetDevices {\n\t\t\t_ = k\n\t\t\t_ = v\n\t\t\tl = 0\n\t\t\tif v != nil {\n\t\t\t\tl = v.SizeVT()\n\t\t\t}\n\t\t\tl += 1 + sov(uint64(l))\n\t\t\tmapEntrySize := 1 + len(k) + sov(uint64(len(k))) + l\n\t\t\tn += mapEntrySize + 1 + sov(uint64(mapEntrySize))\n\t\t}\n\t}\n\tif m.Scheduler != nil {\n\t\tl = m.Scheduler.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif m.Rdt != nil {\n\t\tl = m.Rdt.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *LinuxNamespace) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Type)\n\tif l > 0 {\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tl = len(m.Path)\n\tif l > 0 {\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *LinuxDevice) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Path)\n\tif l > 0 {\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tl = len(m.Type)\n\tif l > 0 {\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif m.Major != 0 {\n\t\tn += 1 + sov(uint64(m.Major))\n\t}\n\tif m.Minor != 0 {\n\t\tn += 1 + sov(uint64(m.Minor))\n\t}\n\tif m.FileMode != nil {\n\t\tl = m.FileMode.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif m.Uid != nil {\n\t\tl = m.Uid.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif m.Gid != nil {\n\t\tl = m.Gid.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *LinuxDeviceCgroup) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Allow {\n\t\tn += 2\n\t}\n\tl = len(m.Type)\n\tif l > 0 {\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif m.Major != nil {\n\t\tl = m.Major.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif m.Minor != nil {\n\t\tl = m.Minor.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tl = len(m.Access)\n\tif l > 0 {\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *CDIDevice) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Name)\n\tif l > 0 {\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *User) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Uid != 0 {\n\t\tn += 1 + sov(uint64(m.Uid))\n\t}\n\tif m.Gid != 0 {\n\t\tn += 1 + sov(uint64(m.Gid))\n\t}\n\tif len(m.AdditionalGids) > 0 {\n\t\tl = 0\n\t\tfor _, e := range m.AdditionalGids {\n\t\t\tl += sov(uint64(e))\n\t\t}\n\t\tn += 1 + sov(uint64(l)) + l\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *LinuxResources) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Memory != nil {\n\t\tl = m.Memory.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif m.Cpu != nil {\n\t\tl = m.Cpu.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif len(m.HugepageLimits) > 0 {\n\t\tfor _, e := range m.HugepageLimits {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + sov(uint64(l))\n\t\t}\n\t}\n\tif m.BlockioClass != nil {\n\t\tl = m.BlockioClass.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif m.RdtClass != nil {\n\t\tl = m.RdtClass.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif len(m.Unified) > 0 {\n\t\tfor k, v := range m.Unified {\n\t\t\t_ = k\n\t\t\t_ = v\n\t\t\tmapEntrySize := 1 + len(k) + sov(uint64(len(k))) + 1 + len(v) + sov(uint64(len(v)))\n\t\t\tn += mapEntrySize + 1 + sov(uint64(mapEntrySize))\n\t\t}\n\t}\n\tif len(m.Devices) > 0 {\n\t\tfor _, e := range m.Devices {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + sov(uint64(l))\n\t\t}\n\t}\n\tif m.Pids != nil {\n\t\tl = m.Pids.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *LinuxMemory) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Limit != nil {\n\t\tl = m.Limit.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif m.Reservation != nil {\n\t\tl = m.Reservation.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif m.Swap != nil {\n\t\tl = m.Swap.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif m.Kernel != nil {\n\t\tl = m.Kernel.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif m.KernelTcp != nil {\n\t\tl = m.KernelTcp.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif m.Swappiness != nil {\n\t\tl = m.Swappiness.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif m.DisableOomKiller != nil {\n\t\tl = m.DisableOomKiller.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif m.UseHierarchy != nil {\n\t\tl = m.UseHierarchy.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *LinuxCPU) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Shares != nil {\n\t\tl = m.Shares.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif m.Quota != nil {\n\t\tl = m.Quota.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif m.Period != nil {\n\t\tl = m.Period.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif m.RealtimeRuntime != nil {\n\t\tl = m.RealtimeRuntime.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif m.RealtimePeriod != nil {\n\t\tl = m.RealtimePeriod.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tl = len(m.Cpus)\n\tif l > 0 {\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tl = len(m.Mems)\n\tif l > 0 {\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *HugepageLimit) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.PageSize)\n\tif l > 0 {\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif m.Limit != 0 {\n\t\tn += 1 + sov(uint64(m.Limit))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *SecurityProfile) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.ProfileType != 0 {\n\t\tn += 1 + sov(uint64(m.ProfileType))\n\t}\n\tl = len(m.LocalhostRef)\n\tif l > 0 {\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *POSIXRlimit) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Type)\n\tif l > 0 {\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif m.Hard != 0 {\n\t\tn += 1 + sov(uint64(m.Hard))\n\t}\n\tif m.Soft != 0 {\n\t\tn += 1 + sov(uint64(m.Soft))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *LinuxPids) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Limit != 0 {\n\t\tn += 1 + sov(uint64(m.Limit))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *LinuxIOPriority) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Class != 0 {\n\t\tn += 1 + sov(uint64(m.Class))\n\t}\n\tif m.Priority != 0 {\n\t\tn += 1 + sov(uint64(m.Priority))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *LinuxNetDevice) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Name)\n\tif l > 0 {\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *LinuxScheduler) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Policy != 0 {\n\t\tn += 1 + sov(uint64(m.Policy))\n\t}\n\tif m.Nice != 0 {\n\t\tn += 1 + sov(uint64(m.Nice))\n\t}\n\tif m.Priority != 0 {\n\t\tn += 1 + sov(uint64(m.Priority))\n\t}\n\tif len(m.Flags) > 0 {\n\t\tl = 0\n\t\tfor _, e := range m.Flags {\n\t\t\tl += sov(uint64(e))\n\t\t}\n\t\tn += 1 + sov(uint64(l)) + l\n\t}\n\tif m.Runtime != 0 {\n\t\tn += 1 + sov(uint64(m.Runtime))\n\t}\n\tif m.Deadline != 0 {\n\t\tn += 1 + sov(uint64(m.Deadline))\n\t}\n\tif m.Period != 0 {\n\t\tn += 1 + sov(uint64(m.Period))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *ContainerAdjustment) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif len(m.Annotations) > 0 {\n\t\tfor k, v := range m.Annotations {\n\t\t\t_ = k\n\t\t\t_ = v\n\t\t\tmapEntrySize := 1 + len(k) + sov(uint64(len(k))) + 1 + len(v) + sov(uint64(len(v)))\n\t\t\tn += mapEntrySize + 1 + sov(uint64(mapEntrySize))\n\t\t}\n\t}\n\tif len(m.Mounts) > 0 {\n\t\tfor _, e := range m.Mounts {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + sov(uint64(l))\n\t\t}\n\t}\n\tif len(m.Env) > 0 {\n\t\tfor _, e := range m.Env {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + sov(uint64(l))\n\t\t}\n\t}\n\tif m.Hooks != nil {\n\t\tl = m.Hooks.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif m.Linux != nil {\n\t\tl = m.Linux.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif len(m.Rlimits) > 0 {\n\t\tfor _, e := range m.Rlimits {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + sov(uint64(l))\n\t\t}\n\t}\n\tif len(m.CDIDevices) > 0 {\n\t\tfor _, e := range m.CDIDevices {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + sov(uint64(l))\n\t\t}\n\t}\n\tif len(m.Args) > 0 {\n\t\tfor _, s := range m.Args {\n\t\t\tl = len(s)\n\t\t\tn += 1 + l + sov(uint64(l))\n\t\t}\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *LinuxContainerAdjustment) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif len(m.Devices) > 0 {\n\t\tfor _, e := range m.Devices {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + sov(uint64(l))\n\t\t}\n\t}\n\tif m.Resources != nil {\n\t\tl = m.Resources.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tl = len(m.CgroupsPath)\n\tif l > 0 {\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif m.OomScoreAdj != nil {\n\t\tl = m.OomScoreAdj.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif m.IoPriority != nil {\n\t\tl = m.IoPriority.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif m.SeccompPolicy != nil {\n\t\tl = m.SeccompPolicy.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif len(m.Namespaces) > 0 {\n\t\tfor _, e := range m.Namespaces {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + sov(uint64(l))\n\t\t}\n\t}\n\tif len(m.Sysctl) > 0 {\n\t\tfor k, v := range m.Sysctl {\n\t\t\t_ = k\n\t\t\t_ = v\n\t\t\tmapEntrySize := 1 + len(k) + sov(uint64(len(k))) + 1 + len(v) + sov(uint64(len(v)))\n\t\t\tn += mapEntrySize + 1 + sov(uint64(mapEntrySize))\n\t\t}\n\t}\n\tif len(m.NetDevices) > 0 {\n\t\tfor k, v := range m.NetDevices {\n\t\t\t_ = k\n\t\t\t_ = v\n\t\t\tl = 0\n\t\t\tif v != nil {\n\t\t\t\tl = v.SizeVT()\n\t\t\t}\n\t\t\tl += 1 + sov(uint64(l))\n\t\t\tmapEntrySize := 1 + len(k) + sov(uint64(len(k))) + l\n\t\t\tn += mapEntrySize + 1 + sov(uint64(mapEntrySize))\n\t\t}\n\t}\n\tif m.Scheduler != nil {\n\t\tl = m.Scheduler.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif m.Rdt != nil {\n\t\tl = m.Rdt.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *LinuxSeccomp) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.DefaultAction)\n\tif l > 0 {\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif m.DefaultErrno != nil {\n\t\tl = m.DefaultErrno.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif len(m.Architectures) > 0 {\n\t\tfor _, s := range m.Architectures {\n\t\t\tl = len(s)\n\t\t\tn += 1 + l + sov(uint64(l))\n\t\t}\n\t}\n\tif len(m.Flags) > 0 {\n\t\tfor _, s := range m.Flags {\n\t\t\tl = len(s)\n\t\t\tn += 1 + l + sov(uint64(l))\n\t\t}\n\t}\n\tl = len(m.ListenerPath)\n\tif l > 0 {\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tl = len(m.ListenerMetadata)\n\tif l > 0 {\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif len(m.Syscalls) > 0 {\n\t\tfor _, e := range m.Syscalls {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + sov(uint64(l))\n\t\t}\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *LinuxSyscall) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif len(m.Names) > 0 {\n\t\tfor _, s := range m.Names {\n\t\t\tl = len(s)\n\t\t\tn += 1 + l + sov(uint64(l))\n\t\t}\n\t}\n\tl = len(m.Action)\n\tif l > 0 {\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif m.ErrnoRet != nil {\n\t\tl = m.ErrnoRet.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif len(m.Args) > 0 {\n\t\tfor _, e := range m.Args {\n\t\t\tl = e.SizeVT()\n\t\t\tn += 1 + l + sov(uint64(l))\n\t\t}\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *LinuxSeccompArg) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Index != 0 {\n\t\tn += 1 + sov(uint64(m.Index))\n\t}\n\tif m.Value != 0 {\n\t\tn += 1 + sov(uint64(m.Value))\n\t}\n\tif m.ValueTwo != 0 {\n\t\tn += 1 + sov(uint64(m.ValueTwo))\n\t}\n\tl = len(m.Op)\n\tif l > 0 {\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *ContainerUpdate) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.ContainerId)\n\tif l > 0 {\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif m.Linux != nil {\n\t\tl = m.Linux.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif m.IgnoreFailure {\n\t\tn += 2\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *LinuxContainerUpdate) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Resources != nil {\n\t\tl = m.Resources.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *ContainerEviction) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.ContainerId)\n\tif l > 0 {\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tl = len(m.Reason)\n\tif l > 0 {\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *LinuxRdt) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.ClosId != nil {\n\t\tl = m.ClosId.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif m.Schemata != nil {\n\t\tl = m.Schemata.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif m.EnableMonitoring != nil {\n\t\tl = m.EnableMonitoring.SizeVT()\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tif m.Remove {\n\t\tn += 2\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *KeyValue) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Key)\n\tif l > 0 {\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tl = len(m.Value)\n\tif l > 0 {\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *OptionalString) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Value)\n\tif l > 0 {\n\t\tn += 1 + l + sov(uint64(l))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *OptionalRepeatedString) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif len(m.Value) > 0 {\n\t\tfor _, s := range m.Value {\n\t\t\tl = len(s)\n\t\t\tn += 1 + l + sov(uint64(l))\n\t\t}\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *OptionalInt) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Value != 0 {\n\t\tn += 1 + sov(uint64(m.Value))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *OptionalInt32) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Value != 0 {\n\t\tn += 1 + sov(uint64(m.Value))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *OptionalUInt32) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Value != 0 {\n\t\tn += 1 + sov(uint64(m.Value))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *OptionalInt64) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Value != 0 {\n\t\tn += 1 + sov(uint64(m.Value))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *OptionalUInt64) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Value != 0 {\n\t\tn += 1 + sov(uint64(m.Value))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *OptionalBool) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Value {\n\t\tn += 2\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *OptionalFileMode) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Value != 0 {\n\t\tn += 1 + sov(uint64(m.Value))\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *CompoundFieldOwners) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif len(m.Owners) > 0 {\n\t\tfor k, v := range m.Owners {\n\t\t\t_ = k\n\t\t\t_ = v\n\t\t\tmapEntrySize := 1 + len(k) + sov(uint64(len(k))) + 1 + len(v) + sov(uint64(len(v)))\n\t\t\tn += mapEntrySize + 1 + sov(uint64(mapEntrySize))\n\t\t}\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *FieldOwners) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif len(m.Simple) > 0 {\n\t\tfor k, v := range m.Simple {\n\t\t\t_ = k\n\t\t\t_ = v\n\t\t\tmapEntrySize := 1 + sov(uint64(k)) + 1 + len(v) + sov(uint64(len(v)))\n\t\t\tn += mapEntrySize + 1 + sov(uint64(mapEntrySize))\n\t\t}\n\t}\n\tif len(m.Compound) > 0 {\n\t\tfor k, v := range m.Compound {\n\t\t\t_ = k\n\t\t\t_ = v\n\t\t\tl = 0\n\t\t\tif v != nil {\n\t\t\t\tl = v.SizeVT()\n\t\t\t}\n\t\t\tl += 1 + sov(uint64(l))\n\t\t\tmapEntrySize := 1 + sov(uint64(k)) + l\n\t\t\tn += mapEntrySize + 1 + sov(uint64(mapEntrySize))\n\t\t}\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc (m *OwningPlugins) SizeVT() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif len(m.Owners) > 0 {\n\t\tfor k, v := range m.Owners {\n\t\t\t_ = k\n\t\t\t_ = v\n\t\t\tl = 0\n\t\t\tif v != nil {\n\t\t\t\tl = v.SizeVT()\n\t\t\t}\n\t\t\tl += 1 + sov(uint64(l))\n\t\t\tmapEntrySize := 1 + len(k) + sov(uint64(len(k))) + l\n\t\t\tn += mapEntrySize + 1 + sov(uint64(mapEntrySize))\n\t\t}\n\t}\n\tn += len(m.unknownFields)\n\treturn n\n}\n\nfunc sov(x uint64) (n int) {\n\treturn (bits.Len64(x|1) + 6) / 7\n}\nfunc soz(x uint64) (n int) {\n\treturn sov(uint64((x << 1) ^ uint64((int64(x) >> 63))))\n}\nfunc (m *RegisterPluginRequest) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: RegisterPluginRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: RegisterPluginRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field PluginName\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.PluginName = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field PluginIdx\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.PluginIdx = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *UpdateContainersRequest) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: UpdateContainersRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: UpdateContainersRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Update\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Update = append(m.Update, &ContainerUpdate{})\n\t\t\tif err := m.Update[len(m.Update)-1].UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Evict\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Evict = append(m.Evict, &ContainerEviction{})\n\t\t\tif err := m.Evict[len(m.Evict)-1].UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *UpdateContainersResponse) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: UpdateContainersResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: UpdateContainersResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Failed\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Failed = append(m.Failed, &ContainerUpdate{})\n\t\t\tif err := m.Failed[len(m.Failed)-1].UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *LogRequest) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: LogRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: LogRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Msg\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Msg = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Level\", wireType)\n\t\t\t}\n\t\t\tm.Level = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Level |= LogRequest_Level(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *ConfigureRequest) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: ConfigureRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: ConfigureRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Config\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Config = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field RuntimeName\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.RuntimeName = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field RuntimeVersion\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.RuntimeVersion = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 4:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field RegistrationTimeout\", wireType)\n\t\t\t}\n\t\t\tm.RegistrationTimeout = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.RegistrationTimeout |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 5:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field RequestTimeout\", wireType)\n\t\t\t}\n\t\t\tm.RequestTimeout = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.RequestTimeout |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *ConfigureResponse) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: ConfigureResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: ConfigureResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 2:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Events\", wireType)\n\t\t\t}\n\t\t\tm.Events = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Events |= int32(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *SynchronizeRequest) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: SynchronizeRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: SynchronizeRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Pods\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Pods = append(m.Pods, &PodSandbox{})\n\t\t\tif err := m.Pods[len(m.Pods)-1].UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Containers\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Containers = append(m.Containers, &Container{})\n\t\t\tif err := m.Containers[len(m.Containers)-1].UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field More\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.More = bool(v != 0)\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *SynchronizeResponse) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: SynchronizeResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: SynchronizeResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Update\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Update = append(m.Update, &ContainerUpdate{})\n\t\t\tif err := m.Update[len(m.Update)-1].UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field More\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.More = bool(v != 0)\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *CreateContainerRequest) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: CreateContainerRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: CreateContainerRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Pod\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Pod == nil {\n\t\t\t\tm.Pod = &PodSandbox{}\n\t\t\t}\n\t\t\tif err := m.Pod.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Container\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Container == nil {\n\t\t\t\tm.Container = &Container{}\n\t\t\t}\n\t\t\tif err := m.Container.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *CreateContainerResponse) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: CreateContainerResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: CreateContainerResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Adjust\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Adjust == nil {\n\t\t\t\tm.Adjust = &ContainerAdjustment{}\n\t\t\t}\n\t\t\tif err := m.Adjust.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Update\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Update = append(m.Update, &ContainerUpdate{})\n\t\t\tif err := m.Update[len(m.Update)-1].UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Evict\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Evict = append(m.Evict, &ContainerEviction{})\n\t\t\tif err := m.Evict[len(m.Evict)-1].UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *UpdateContainerRequest) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: UpdateContainerRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: UpdateContainerRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Pod\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Pod == nil {\n\t\t\t\tm.Pod = &PodSandbox{}\n\t\t\t}\n\t\t\tif err := m.Pod.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Container\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Container == nil {\n\t\t\t\tm.Container = &Container{}\n\t\t\t}\n\t\t\tif err := m.Container.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field LinuxResources\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.LinuxResources == nil {\n\t\t\t\tm.LinuxResources = &LinuxResources{}\n\t\t\t}\n\t\t\tif err := m.LinuxResources.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *UpdateContainerResponse) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: UpdateContainerResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: UpdateContainerResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Update\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Update = append(m.Update, &ContainerUpdate{})\n\t\t\tif err := m.Update[len(m.Update)-1].UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Evict\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Evict = append(m.Evict, &ContainerEviction{})\n\t\t\tif err := m.Evict[len(m.Evict)-1].UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *StopContainerRequest) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: StopContainerRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: StopContainerRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Pod\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Pod == nil {\n\t\t\t\tm.Pod = &PodSandbox{}\n\t\t\t}\n\t\t\tif err := m.Pod.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Container\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Container == nil {\n\t\t\t\tm.Container = &Container{}\n\t\t\t}\n\t\t\tif err := m.Container.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *StopContainerResponse) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: StopContainerResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: StopContainerResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Update\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Update = append(m.Update, &ContainerUpdate{})\n\t\t\tif err := m.Update[len(m.Update)-1].UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *UpdatePodSandboxRequest) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: UpdatePodSandboxRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: UpdatePodSandboxRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Pod\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Pod == nil {\n\t\t\t\tm.Pod = &PodSandbox{}\n\t\t\t}\n\t\t\tif err := m.Pod.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field OverheadLinuxResources\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.OverheadLinuxResources == nil {\n\t\t\t\tm.OverheadLinuxResources = &LinuxResources{}\n\t\t\t}\n\t\t\tif err := m.OverheadLinuxResources.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field LinuxResources\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.LinuxResources == nil {\n\t\t\t\tm.LinuxResources = &LinuxResources{}\n\t\t\t}\n\t\t\tif err := m.LinuxResources.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *UpdatePodSandboxResponse) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: UpdatePodSandboxResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: UpdatePodSandboxResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *StateChangeEvent) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: StateChangeEvent: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: StateChangeEvent: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Event\", wireType)\n\t\t\t}\n\t\t\tm.Event = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Event |= Event(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Pod\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Pod == nil {\n\t\t\t\tm.Pod = &PodSandbox{}\n\t\t\t}\n\t\t\tif err := m.Pod.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Container\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Container == nil {\n\t\t\t\tm.Container = &Container{}\n\t\t\t}\n\t\t\tif err := m.Container.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *ValidateContainerAdjustmentRequest) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: ValidateContainerAdjustmentRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: ValidateContainerAdjustmentRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Pod\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Pod == nil {\n\t\t\t\tm.Pod = &PodSandbox{}\n\t\t\t}\n\t\t\tif err := m.Pod.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Container\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Container == nil {\n\t\t\t\tm.Container = &Container{}\n\t\t\t}\n\t\t\tif err := m.Container.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Adjust\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Adjust == nil {\n\t\t\t\tm.Adjust = &ContainerAdjustment{}\n\t\t\t}\n\t\t\tif err := m.Adjust.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 4:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Update\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Update = append(m.Update, &ContainerUpdate{})\n\t\t\tif err := m.Update[len(m.Update)-1].UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 5:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Owners\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Owners == nil {\n\t\t\t\tm.Owners = &OwningPlugins{}\n\t\t\t}\n\t\t\tif err := m.Owners.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 6:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Plugins\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Plugins = append(m.Plugins, &PluginInstance{})\n\t\t\tif err := m.Plugins[len(m.Plugins)-1].UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *PluginInstance) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: PluginInstance: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: PluginInstance: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Name\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Name = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Index\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Index = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *ValidateContainerAdjustmentResponse) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: ValidateContainerAdjustmentResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: ValidateContainerAdjustmentResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Reject\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.Reject = bool(v != 0)\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Reason\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Reason = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *Empty) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: Empty: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: Empty: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *PodSandbox) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: PodSandbox: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: PodSandbox: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Id\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Id = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Name\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Name = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Uid\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Uid = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 4:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Namespace\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Namespace = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 5:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Labels\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Labels == nil {\n\t\t\t\tm.Labels = make(map[string]string)\n\t\t\t}\n\t\t\tvar mapkey string\n\t\t\tvar mapvalue string\n\t\t\tfor iNdEx < postIndex {\n\t\t\t\tentryPreIndex := iNdEx\n\t\t\t\tvar wire uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfieldNum := int32(wire >> 3)\n\t\t\t\tif fieldNum == 1 {\n\t\t\t\t\tvar stringLenmapkey uint64\n\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\tstringLenmapkey |= uint64(b&0x7F) << shift\n\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tintStringLenmapkey := int(stringLenmapkey)\n\t\t\t\t\tif intStringLenmapkey < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tpostStringIndexmapkey := iNdEx + intStringLenmapkey\n\t\t\t\t\tif postStringIndexmapkey < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tif postStringIndexmapkey > l {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tmapkey = string(dAtA[iNdEx:postStringIndexmapkey])\n\t\t\t\t\tiNdEx = postStringIndexmapkey\n\t\t\t\t} else if fieldNum == 2 {\n\t\t\t\t\tvar stringLenmapvalue uint64\n\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\tstringLenmapvalue |= uint64(b&0x7F) << shift\n\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tintStringLenmapvalue := int(stringLenmapvalue)\n\t\t\t\t\tif intStringLenmapvalue < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tpostStringIndexmapvalue := iNdEx + intStringLenmapvalue\n\t\t\t\t\tif postStringIndexmapvalue < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tif postStringIndexmapvalue > l {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tmapvalue = string(dAtA[iNdEx:postStringIndexmapvalue])\n\t\t\t\t\tiNdEx = postStringIndexmapvalue\n\t\t\t\t} else {\n\t\t\t\t\tiNdEx = entryPreIndex\n\t\t\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tif (iNdEx + skippy) > postIndex {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tiNdEx += skippy\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.Labels[mapkey] = mapvalue\n\t\t\tiNdEx = postIndex\n\t\tcase 6:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Annotations\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Annotations == nil {\n\t\t\t\tm.Annotations = make(map[string]string)\n\t\t\t}\n\t\t\tvar mapkey string\n\t\t\tvar mapvalue string\n\t\t\tfor iNdEx < postIndex {\n\t\t\t\tentryPreIndex := iNdEx\n\t\t\t\tvar wire uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfieldNum := int32(wire >> 3)\n\t\t\t\tif fieldNum == 1 {\n\t\t\t\t\tvar stringLenmapkey uint64\n\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\tstringLenmapkey |= uint64(b&0x7F) << shift\n\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tintStringLenmapkey := int(stringLenmapkey)\n\t\t\t\t\tif intStringLenmapkey < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tpostStringIndexmapkey := iNdEx + intStringLenmapkey\n\t\t\t\t\tif postStringIndexmapkey < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tif postStringIndexmapkey > l {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tmapkey = string(dAtA[iNdEx:postStringIndexmapkey])\n\t\t\t\t\tiNdEx = postStringIndexmapkey\n\t\t\t\t} else if fieldNum == 2 {\n\t\t\t\t\tvar stringLenmapvalue uint64\n\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\tstringLenmapvalue |= uint64(b&0x7F) << shift\n\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tintStringLenmapvalue := int(stringLenmapvalue)\n\t\t\t\t\tif intStringLenmapvalue < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tpostStringIndexmapvalue := iNdEx + intStringLenmapvalue\n\t\t\t\t\tif postStringIndexmapvalue < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tif postStringIndexmapvalue > l {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tmapvalue = string(dAtA[iNdEx:postStringIndexmapvalue])\n\t\t\t\t\tiNdEx = postStringIndexmapvalue\n\t\t\t\t} else {\n\t\t\t\t\tiNdEx = entryPreIndex\n\t\t\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tif (iNdEx + skippy) > postIndex {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tiNdEx += skippy\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.Annotations[mapkey] = mapvalue\n\t\t\tiNdEx = postIndex\n\t\tcase 7:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field RuntimeHandler\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.RuntimeHandler = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 8:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Linux\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Linux == nil {\n\t\t\t\tm.Linux = &LinuxPodSandbox{}\n\t\t\t}\n\t\t\tif err := m.Linux.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 9:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Pid\", wireType)\n\t\t\t}\n\t\t\tm.Pid = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Pid |= uint32(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 10:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Ips\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Ips = append(m.Ips, string(dAtA[iNdEx:postIndex]))\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *LinuxPodSandbox) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: LinuxPodSandbox: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: LinuxPodSandbox: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field PodOverhead\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.PodOverhead == nil {\n\t\t\t\tm.PodOverhead = &LinuxResources{}\n\t\t\t}\n\t\t\tif err := m.PodOverhead.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field PodResources\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.PodResources == nil {\n\t\t\t\tm.PodResources = &LinuxResources{}\n\t\t\t}\n\t\t\tif err := m.PodResources.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field CgroupParent\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.CgroupParent = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 4:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field CgroupsPath\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.CgroupsPath = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 5:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Namespaces\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Namespaces = append(m.Namespaces, &LinuxNamespace{})\n\t\t\tif err := m.Namespaces[len(m.Namespaces)-1].UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 6:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Resources\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Resources == nil {\n\t\t\t\tm.Resources = &LinuxResources{}\n\t\t\t}\n\t\t\tif err := m.Resources.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *Container) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: Container: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: Container: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Id\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Id = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field PodSandboxId\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.PodSandboxId = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Name\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Name = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 4:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field State\", wireType)\n\t\t\t}\n\t\t\tm.State = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.State |= ContainerState(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 5:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Labels\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Labels == nil {\n\t\t\t\tm.Labels = make(map[string]string)\n\t\t\t}\n\t\t\tvar mapkey string\n\t\t\tvar mapvalue string\n\t\t\tfor iNdEx < postIndex {\n\t\t\t\tentryPreIndex := iNdEx\n\t\t\t\tvar wire uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfieldNum := int32(wire >> 3)\n\t\t\t\tif fieldNum == 1 {\n\t\t\t\t\tvar stringLenmapkey uint64\n\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\tstringLenmapkey |= uint64(b&0x7F) << shift\n\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tintStringLenmapkey := int(stringLenmapkey)\n\t\t\t\t\tif intStringLenmapkey < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tpostStringIndexmapkey := iNdEx + intStringLenmapkey\n\t\t\t\t\tif postStringIndexmapkey < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tif postStringIndexmapkey > l {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tmapkey = string(dAtA[iNdEx:postStringIndexmapkey])\n\t\t\t\t\tiNdEx = postStringIndexmapkey\n\t\t\t\t} else if fieldNum == 2 {\n\t\t\t\t\tvar stringLenmapvalue uint64\n\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\tstringLenmapvalue |= uint64(b&0x7F) << shift\n\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tintStringLenmapvalue := int(stringLenmapvalue)\n\t\t\t\t\tif intStringLenmapvalue < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tpostStringIndexmapvalue := iNdEx + intStringLenmapvalue\n\t\t\t\t\tif postStringIndexmapvalue < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tif postStringIndexmapvalue > l {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tmapvalue = string(dAtA[iNdEx:postStringIndexmapvalue])\n\t\t\t\t\tiNdEx = postStringIndexmapvalue\n\t\t\t\t} else {\n\t\t\t\t\tiNdEx = entryPreIndex\n\t\t\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tif (iNdEx + skippy) > postIndex {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tiNdEx += skippy\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.Labels[mapkey] = mapvalue\n\t\t\tiNdEx = postIndex\n\t\tcase 6:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Annotations\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Annotations == nil {\n\t\t\t\tm.Annotations = make(map[string]string)\n\t\t\t}\n\t\t\tvar mapkey string\n\t\t\tvar mapvalue string\n\t\t\tfor iNdEx < postIndex {\n\t\t\t\tentryPreIndex := iNdEx\n\t\t\t\tvar wire uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfieldNum := int32(wire >> 3)\n\t\t\t\tif fieldNum == 1 {\n\t\t\t\t\tvar stringLenmapkey uint64\n\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\tstringLenmapkey |= uint64(b&0x7F) << shift\n\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tintStringLenmapkey := int(stringLenmapkey)\n\t\t\t\t\tif intStringLenmapkey < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tpostStringIndexmapkey := iNdEx + intStringLenmapkey\n\t\t\t\t\tif postStringIndexmapkey < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tif postStringIndexmapkey > l {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tmapkey = string(dAtA[iNdEx:postStringIndexmapkey])\n\t\t\t\t\tiNdEx = postStringIndexmapkey\n\t\t\t\t} else if fieldNum == 2 {\n\t\t\t\t\tvar stringLenmapvalue uint64\n\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\tstringLenmapvalue |= uint64(b&0x7F) << shift\n\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tintStringLenmapvalue := int(stringLenmapvalue)\n\t\t\t\t\tif intStringLenmapvalue < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tpostStringIndexmapvalue := iNdEx + intStringLenmapvalue\n\t\t\t\t\tif postStringIndexmapvalue < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tif postStringIndexmapvalue > l {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tmapvalue = string(dAtA[iNdEx:postStringIndexmapvalue])\n\t\t\t\t\tiNdEx = postStringIndexmapvalue\n\t\t\t\t} else {\n\t\t\t\t\tiNdEx = entryPreIndex\n\t\t\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tif (iNdEx + skippy) > postIndex {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tiNdEx += skippy\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.Annotations[mapkey] = mapvalue\n\t\t\tiNdEx = postIndex\n\t\tcase 7:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Args\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Args = append(m.Args, string(dAtA[iNdEx:postIndex]))\n\t\t\tiNdEx = postIndex\n\t\tcase 8:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Env\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Env = append(m.Env, string(dAtA[iNdEx:postIndex]))\n\t\t\tiNdEx = postIndex\n\t\tcase 9:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Mounts\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Mounts = append(m.Mounts, &Mount{})\n\t\t\tif err := m.Mounts[len(m.Mounts)-1].UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 10:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Hooks\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Hooks == nil {\n\t\t\t\tm.Hooks = &Hooks{}\n\t\t\t}\n\t\t\tif err := m.Hooks.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 11:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Linux\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Linux == nil {\n\t\t\t\tm.Linux = &LinuxContainer{}\n\t\t\t}\n\t\t\tif err := m.Linux.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 12:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Pid\", wireType)\n\t\t\t}\n\t\t\tm.Pid = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Pid |= uint32(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 13:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Rlimits\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Rlimits = append(m.Rlimits, &POSIXRlimit{})\n\t\t\tif err := m.Rlimits[len(m.Rlimits)-1].UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 14:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field CreatedAt\", wireType)\n\t\t\t}\n\t\t\tm.CreatedAt = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.CreatedAt |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 15:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field StartedAt\", wireType)\n\t\t\t}\n\t\t\tm.StartedAt = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.StartedAt |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 16:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field FinishedAt\", wireType)\n\t\t\t}\n\t\t\tm.FinishedAt = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.FinishedAt |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 17:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ExitCode\", wireType)\n\t\t\t}\n\t\t\tm.ExitCode = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.ExitCode |= int32(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 18:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field StatusReason\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.StatusReason = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 19:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field StatusMessage\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.StatusMessage = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 20:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field CDIDevices\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.CDIDevices = append(m.CDIDevices, &CDIDevice{})\n\t\t\tif err := m.CDIDevices[len(m.CDIDevices)-1].UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 21:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field User\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.User == nil {\n\t\t\t\tm.User = &User{}\n\t\t\t}\n\t\t\tif err := m.User.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *Mount) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: Mount: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: Mount: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Destination\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Destination = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Type\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Type = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Source\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Source = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 4:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Options\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Options = append(m.Options, string(dAtA[iNdEx:postIndex]))\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *Hooks) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: Hooks: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: Hooks: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Prestart\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Prestart = append(m.Prestart, &Hook{})\n\t\t\tif err := m.Prestart[len(m.Prestart)-1].UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field CreateRuntime\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.CreateRuntime = append(m.CreateRuntime, &Hook{})\n\t\t\tif err := m.CreateRuntime[len(m.CreateRuntime)-1].UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field CreateContainer\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.CreateContainer = append(m.CreateContainer, &Hook{})\n\t\t\tif err := m.CreateContainer[len(m.CreateContainer)-1].UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 4:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field StartContainer\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.StartContainer = append(m.StartContainer, &Hook{})\n\t\t\tif err := m.StartContainer[len(m.StartContainer)-1].UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 5:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Poststart\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Poststart = append(m.Poststart, &Hook{})\n\t\t\tif err := m.Poststart[len(m.Poststart)-1].UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 6:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Poststop\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Poststop = append(m.Poststop, &Hook{})\n\t\t\tif err := m.Poststop[len(m.Poststop)-1].UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *Hook) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: Hook: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: Hook: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Path\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Path = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Args\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Args = append(m.Args, string(dAtA[iNdEx:postIndex]))\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Env\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Env = append(m.Env, string(dAtA[iNdEx:postIndex]))\n\t\t\tiNdEx = postIndex\n\t\tcase 4:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Timeout\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Timeout == nil {\n\t\t\t\tm.Timeout = &OptionalInt{}\n\t\t\t}\n\t\t\tif err := m.Timeout.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *LinuxContainer) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: LinuxContainer: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: LinuxContainer: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Namespaces\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Namespaces = append(m.Namespaces, &LinuxNamespace{})\n\t\t\tif err := m.Namespaces[len(m.Namespaces)-1].UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Devices\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Devices = append(m.Devices, &LinuxDevice{})\n\t\t\tif err := m.Devices[len(m.Devices)-1].UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Resources\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Resources == nil {\n\t\t\t\tm.Resources = &LinuxResources{}\n\t\t\t}\n\t\t\tif err := m.Resources.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 4:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field OomScoreAdj\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.OomScoreAdj == nil {\n\t\t\t\tm.OomScoreAdj = &OptionalInt{}\n\t\t\t}\n\t\t\tif err := m.OomScoreAdj.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 5:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field CgroupsPath\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.CgroupsPath = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 6:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field IoPriority\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.IoPriority == nil {\n\t\t\t\tm.IoPriority = &LinuxIOPriority{}\n\t\t\t}\n\t\t\tif err := m.IoPriority.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 7:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field SeccompProfile\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.SeccompProfile == nil {\n\t\t\t\tm.SeccompProfile = &SecurityProfile{}\n\t\t\t}\n\t\t\tif err := m.SeccompProfile.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 8:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field SeccompPolicy\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.SeccompPolicy == nil {\n\t\t\t\tm.SeccompPolicy = &LinuxSeccomp{}\n\t\t\t}\n\t\t\tif err := m.SeccompPolicy.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 9:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Sysctl\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Sysctl == nil {\n\t\t\t\tm.Sysctl = make(map[string]string)\n\t\t\t}\n\t\t\tvar mapkey string\n\t\t\tvar mapvalue string\n\t\t\tfor iNdEx < postIndex {\n\t\t\t\tentryPreIndex := iNdEx\n\t\t\t\tvar wire uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfieldNum := int32(wire >> 3)\n\t\t\t\tif fieldNum == 1 {\n\t\t\t\t\tvar stringLenmapkey uint64\n\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\tstringLenmapkey |= uint64(b&0x7F) << shift\n\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tintStringLenmapkey := int(stringLenmapkey)\n\t\t\t\t\tif intStringLenmapkey < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tpostStringIndexmapkey := iNdEx + intStringLenmapkey\n\t\t\t\t\tif postStringIndexmapkey < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tif postStringIndexmapkey > l {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tmapkey = string(dAtA[iNdEx:postStringIndexmapkey])\n\t\t\t\t\tiNdEx = postStringIndexmapkey\n\t\t\t\t} else if fieldNum == 2 {\n\t\t\t\t\tvar stringLenmapvalue uint64\n\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\tstringLenmapvalue |= uint64(b&0x7F) << shift\n\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tintStringLenmapvalue := int(stringLenmapvalue)\n\t\t\t\t\tif intStringLenmapvalue < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tpostStringIndexmapvalue := iNdEx + intStringLenmapvalue\n\t\t\t\t\tif postStringIndexmapvalue < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tif postStringIndexmapvalue > l {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tmapvalue = string(dAtA[iNdEx:postStringIndexmapvalue])\n\t\t\t\t\tiNdEx = postStringIndexmapvalue\n\t\t\t\t} else {\n\t\t\t\t\tiNdEx = entryPreIndex\n\t\t\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tif (iNdEx + skippy) > postIndex {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tiNdEx += skippy\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.Sysctl[mapkey] = mapvalue\n\t\t\tiNdEx = postIndex\n\t\tcase 10:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field NetDevices\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.NetDevices == nil {\n\t\t\t\tm.NetDevices = make(map[string]*LinuxNetDevice)\n\t\t\t}\n\t\t\tvar mapkey string\n\t\t\tvar mapvalue *LinuxNetDevice\n\t\t\tfor iNdEx < postIndex {\n\t\t\t\tentryPreIndex := iNdEx\n\t\t\t\tvar wire uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfieldNum := int32(wire >> 3)\n\t\t\t\tif fieldNum == 1 {\n\t\t\t\t\tvar stringLenmapkey uint64\n\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\tstringLenmapkey |= uint64(b&0x7F) << shift\n\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tintStringLenmapkey := int(stringLenmapkey)\n\t\t\t\t\tif intStringLenmapkey < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tpostStringIndexmapkey := iNdEx + intStringLenmapkey\n\t\t\t\t\tif postStringIndexmapkey < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tif postStringIndexmapkey > l {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tmapkey = string(dAtA[iNdEx:postStringIndexmapkey])\n\t\t\t\t\tiNdEx = postStringIndexmapkey\n\t\t\t\t} else if fieldNum == 2 {\n\t\t\t\t\tvar mapmsglen int\n\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\tmapmsglen |= int(b&0x7F) << shift\n\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif mapmsglen < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tpostmsgIndex := iNdEx + mapmsglen\n\t\t\t\t\tif postmsgIndex < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tif postmsgIndex > l {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tmapvalue = &LinuxNetDevice{}\n\t\t\t\t\tif err := mapvalue.UnmarshalVT(dAtA[iNdEx:postmsgIndex]); err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t\tiNdEx = postmsgIndex\n\t\t\t\t} else {\n\t\t\t\t\tiNdEx = entryPreIndex\n\t\t\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tif (iNdEx + skippy) > postIndex {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tiNdEx += skippy\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.NetDevices[mapkey] = mapvalue\n\t\t\tiNdEx = postIndex\n\t\tcase 11:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Scheduler\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Scheduler == nil {\n\t\t\t\tm.Scheduler = &LinuxScheduler{}\n\t\t\t}\n\t\t\tif err := m.Scheduler.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 12:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Rdt\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Rdt == nil {\n\t\t\t\tm.Rdt = &LinuxRdt{}\n\t\t\t}\n\t\t\tif err := m.Rdt.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *LinuxNamespace) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: LinuxNamespace: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: LinuxNamespace: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Type\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Type = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Path\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Path = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *LinuxDevice) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: LinuxDevice: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: LinuxDevice: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Path\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Path = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Type\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Type = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Major\", wireType)\n\t\t\t}\n\t\t\tm.Major = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Major |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 4:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Minor\", wireType)\n\t\t\t}\n\t\t\tm.Minor = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Minor |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 5:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field FileMode\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.FileMode == nil {\n\t\t\t\tm.FileMode = &OptionalFileMode{}\n\t\t\t}\n\t\t\tif err := m.FileMode.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 6:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Uid\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Uid == nil {\n\t\t\t\tm.Uid = &OptionalUInt32{}\n\t\t\t}\n\t\t\tif err := m.Uid.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 7:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Gid\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Gid == nil {\n\t\t\t\tm.Gid = &OptionalUInt32{}\n\t\t\t}\n\t\t\tif err := m.Gid.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *LinuxDeviceCgroup) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: LinuxDeviceCgroup: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: LinuxDeviceCgroup: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Allow\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.Allow = bool(v != 0)\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Type\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Type = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Major\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Major == nil {\n\t\t\t\tm.Major = &OptionalInt64{}\n\t\t\t}\n\t\t\tif err := m.Major.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 4:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Minor\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Minor == nil {\n\t\t\t\tm.Minor = &OptionalInt64{}\n\t\t\t}\n\t\t\tif err := m.Minor.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 5:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Access\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Access = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *CDIDevice) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: CDIDevice: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: CDIDevice: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Name\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Name = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *User) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: User: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: User: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Uid\", wireType)\n\t\t\t}\n\t\t\tm.Uid = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Uid |= uint32(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 2:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Gid\", wireType)\n\t\t\t}\n\t\t\tm.Gid = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Gid |= uint32(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 3:\n\t\t\tif wireType == 0 {\n\t\t\t\tvar v uint32\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tv |= uint32(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tm.AdditionalGids = append(m.AdditionalGids, v)\n\t\t\t} else if wireType == 2 {\n\t\t\t\tvar packedLen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tpackedLen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif packedLen < 0 {\n\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + packedLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tvar elementCount int\n\t\t\t\tvar count int\n\t\t\t\tfor _, integer := range dAtA[iNdEx:postIndex] {\n\t\t\t\t\tif integer < 128 {\n\t\t\t\t\t\tcount++\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telementCount = count\n\t\t\t\tif elementCount != 0 && len(m.AdditionalGids) == 0 {\n\t\t\t\t\tm.AdditionalGids = make([]uint32, 0, elementCount)\n\t\t\t\t}\n\t\t\t\tfor iNdEx < postIndex {\n\t\t\t\t\tvar v uint32\n\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\tv |= uint32(b&0x7F) << shift\n\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tm.AdditionalGids = append(m.AdditionalGids, v)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field AdditionalGids\", wireType)\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *LinuxResources) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: LinuxResources: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: LinuxResources: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Memory\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Memory == nil {\n\t\t\t\tm.Memory = &LinuxMemory{}\n\t\t\t}\n\t\t\tif err := m.Memory.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Cpu\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Cpu == nil {\n\t\t\t\tm.Cpu = &LinuxCPU{}\n\t\t\t}\n\t\t\tif err := m.Cpu.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field HugepageLimits\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.HugepageLimits = append(m.HugepageLimits, &HugepageLimit{})\n\t\t\tif err := m.HugepageLimits[len(m.HugepageLimits)-1].UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 4:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field BlockioClass\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.BlockioClass == nil {\n\t\t\t\tm.BlockioClass = &OptionalString{}\n\t\t\t}\n\t\t\tif err := m.BlockioClass.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 5:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field RdtClass\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.RdtClass == nil {\n\t\t\t\tm.RdtClass = &OptionalString{}\n\t\t\t}\n\t\t\tif err := m.RdtClass.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 6:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Unified\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Unified == nil {\n\t\t\t\tm.Unified = make(map[string]string)\n\t\t\t}\n\t\t\tvar mapkey string\n\t\t\tvar mapvalue string\n\t\t\tfor iNdEx < postIndex {\n\t\t\t\tentryPreIndex := iNdEx\n\t\t\t\tvar wire uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfieldNum := int32(wire >> 3)\n\t\t\t\tif fieldNum == 1 {\n\t\t\t\t\tvar stringLenmapkey uint64\n\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\tstringLenmapkey |= uint64(b&0x7F) << shift\n\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tintStringLenmapkey := int(stringLenmapkey)\n\t\t\t\t\tif intStringLenmapkey < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tpostStringIndexmapkey := iNdEx + intStringLenmapkey\n\t\t\t\t\tif postStringIndexmapkey < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tif postStringIndexmapkey > l {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tmapkey = string(dAtA[iNdEx:postStringIndexmapkey])\n\t\t\t\t\tiNdEx = postStringIndexmapkey\n\t\t\t\t} else if fieldNum == 2 {\n\t\t\t\t\tvar stringLenmapvalue uint64\n\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\tstringLenmapvalue |= uint64(b&0x7F) << shift\n\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tintStringLenmapvalue := int(stringLenmapvalue)\n\t\t\t\t\tif intStringLenmapvalue < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tpostStringIndexmapvalue := iNdEx + intStringLenmapvalue\n\t\t\t\t\tif postStringIndexmapvalue < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tif postStringIndexmapvalue > l {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tmapvalue = string(dAtA[iNdEx:postStringIndexmapvalue])\n\t\t\t\t\tiNdEx = postStringIndexmapvalue\n\t\t\t\t} else {\n\t\t\t\t\tiNdEx = entryPreIndex\n\t\t\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tif (iNdEx + skippy) > postIndex {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tiNdEx += skippy\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.Unified[mapkey] = mapvalue\n\t\t\tiNdEx = postIndex\n\t\tcase 7:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Devices\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Devices = append(m.Devices, &LinuxDeviceCgroup{})\n\t\t\tif err := m.Devices[len(m.Devices)-1].UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 8:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Pids\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Pids == nil {\n\t\t\t\tm.Pids = &LinuxPids{}\n\t\t\t}\n\t\t\tif err := m.Pids.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *LinuxMemory) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: LinuxMemory: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: LinuxMemory: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Limit\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Limit == nil {\n\t\t\t\tm.Limit = &OptionalInt64{}\n\t\t\t}\n\t\t\tif err := m.Limit.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Reservation\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Reservation == nil {\n\t\t\t\tm.Reservation = &OptionalInt64{}\n\t\t\t}\n\t\t\tif err := m.Reservation.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Swap\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Swap == nil {\n\t\t\t\tm.Swap = &OptionalInt64{}\n\t\t\t}\n\t\t\tif err := m.Swap.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 4:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Kernel\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Kernel == nil {\n\t\t\t\tm.Kernel = &OptionalInt64{}\n\t\t\t}\n\t\t\tif err := m.Kernel.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 5:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field KernelTcp\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.KernelTcp == nil {\n\t\t\t\tm.KernelTcp = &OptionalInt64{}\n\t\t\t}\n\t\t\tif err := m.KernelTcp.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 6:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Swappiness\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Swappiness == nil {\n\t\t\t\tm.Swappiness = &OptionalUInt64{}\n\t\t\t}\n\t\t\tif err := m.Swappiness.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 7:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field DisableOomKiller\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.DisableOomKiller == nil {\n\t\t\t\tm.DisableOomKiller = &OptionalBool{}\n\t\t\t}\n\t\t\tif err := m.DisableOomKiller.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 8:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field UseHierarchy\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.UseHierarchy == nil {\n\t\t\t\tm.UseHierarchy = &OptionalBool{}\n\t\t\t}\n\t\t\tif err := m.UseHierarchy.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *LinuxCPU) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: LinuxCPU: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: LinuxCPU: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Shares\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Shares == nil {\n\t\t\t\tm.Shares = &OptionalUInt64{}\n\t\t\t}\n\t\t\tif err := m.Shares.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Quota\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Quota == nil {\n\t\t\t\tm.Quota = &OptionalInt64{}\n\t\t\t}\n\t\t\tif err := m.Quota.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Period\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Period == nil {\n\t\t\t\tm.Period = &OptionalUInt64{}\n\t\t\t}\n\t\t\tif err := m.Period.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 4:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field RealtimeRuntime\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.RealtimeRuntime == nil {\n\t\t\t\tm.RealtimeRuntime = &OptionalInt64{}\n\t\t\t}\n\t\t\tif err := m.RealtimeRuntime.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 5:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field RealtimePeriod\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.RealtimePeriod == nil {\n\t\t\t\tm.RealtimePeriod = &OptionalUInt64{}\n\t\t\t}\n\t\t\tif err := m.RealtimePeriod.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 6:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Cpus\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Cpus = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 7:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Mems\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Mems = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *HugepageLimit) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: HugepageLimit: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: HugepageLimit: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field PageSize\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.PageSize = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Limit\", wireType)\n\t\t\t}\n\t\t\tm.Limit = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Limit |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *SecurityProfile) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: SecurityProfile: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: SecurityProfile: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ProfileType\", wireType)\n\t\t\t}\n\t\t\tm.ProfileType = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.ProfileType |= SecurityProfile_ProfileType(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field LocalhostRef\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.LocalhostRef = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *POSIXRlimit) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: POSIXRlimit: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: POSIXRlimit: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Type\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Type = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Hard\", wireType)\n\t\t\t}\n\t\t\tm.Hard = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Hard |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 3:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Soft\", wireType)\n\t\t\t}\n\t\t\tm.Soft = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Soft |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *LinuxPids) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: LinuxPids: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: LinuxPids: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Limit\", wireType)\n\t\t\t}\n\t\t\tm.Limit = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Limit |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *LinuxIOPriority) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: LinuxIOPriority: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: LinuxIOPriority: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Class\", wireType)\n\t\t\t}\n\t\t\tm.Class = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Class |= IOPrioClass(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 2:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Priority\", wireType)\n\t\t\t}\n\t\t\tm.Priority = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Priority |= int32(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *LinuxNetDevice) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: LinuxNetDevice: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: LinuxNetDevice: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Name\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Name = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *LinuxScheduler) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: LinuxScheduler: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: LinuxScheduler: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Policy\", wireType)\n\t\t\t}\n\t\t\tm.Policy = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Policy |= LinuxSchedulerPolicy(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 2:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Nice\", wireType)\n\t\t\t}\n\t\t\tm.Nice = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Nice |= int32(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 3:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Priority\", wireType)\n\t\t\t}\n\t\t\tm.Priority = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Priority |= int32(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 4:\n\t\t\tif wireType == 0 {\n\t\t\t\tvar v LinuxSchedulerFlag\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tv |= LinuxSchedulerFlag(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tm.Flags = append(m.Flags, v)\n\t\t\t} else if wireType == 2 {\n\t\t\t\tvar packedLen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tpackedLen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif packedLen < 0 {\n\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + packedLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tvar elementCount int\n\t\t\t\tif elementCount != 0 && len(m.Flags) == 0 {\n\t\t\t\t\tm.Flags = make([]LinuxSchedulerFlag, 0, elementCount)\n\t\t\t\t}\n\t\t\t\tfor iNdEx < postIndex {\n\t\t\t\t\tvar v LinuxSchedulerFlag\n\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\tv |= LinuxSchedulerFlag(b&0x7F) << shift\n\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tm.Flags = append(m.Flags, v)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Flags\", wireType)\n\t\t\t}\n\t\tcase 5:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Runtime\", wireType)\n\t\t\t}\n\t\t\tm.Runtime = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Runtime |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 6:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Deadline\", wireType)\n\t\t\t}\n\t\t\tm.Deadline = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Deadline |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 7:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Period\", wireType)\n\t\t\t}\n\t\t\tm.Period = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Period |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *ContainerAdjustment) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: ContainerAdjustment: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: ContainerAdjustment: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Annotations\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Annotations == nil {\n\t\t\t\tm.Annotations = make(map[string]string)\n\t\t\t}\n\t\t\tvar mapkey string\n\t\t\tvar mapvalue string\n\t\t\tfor iNdEx < postIndex {\n\t\t\t\tentryPreIndex := iNdEx\n\t\t\t\tvar wire uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfieldNum := int32(wire >> 3)\n\t\t\t\tif fieldNum == 1 {\n\t\t\t\t\tvar stringLenmapkey uint64\n\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\tstringLenmapkey |= uint64(b&0x7F) << shift\n\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tintStringLenmapkey := int(stringLenmapkey)\n\t\t\t\t\tif intStringLenmapkey < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tpostStringIndexmapkey := iNdEx + intStringLenmapkey\n\t\t\t\t\tif postStringIndexmapkey < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tif postStringIndexmapkey > l {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tmapkey = string(dAtA[iNdEx:postStringIndexmapkey])\n\t\t\t\t\tiNdEx = postStringIndexmapkey\n\t\t\t\t} else if fieldNum == 2 {\n\t\t\t\t\tvar stringLenmapvalue uint64\n\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\tstringLenmapvalue |= uint64(b&0x7F) << shift\n\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tintStringLenmapvalue := int(stringLenmapvalue)\n\t\t\t\t\tif intStringLenmapvalue < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tpostStringIndexmapvalue := iNdEx + intStringLenmapvalue\n\t\t\t\t\tif postStringIndexmapvalue < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tif postStringIndexmapvalue > l {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tmapvalue = string(dAtA[iNdEx:postStringIndexmapvalue])\n\t\t\t\t\tiNdEx = postStringIndexmapvalue\n\t\t\t\t} else {\n\t\t\t\t\tiNdEx = entryPreIndex\n\t\t\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tif (iNdEx + skippy) > postIndex {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tiNdEx += skippy\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.Annotations[mapkey] = mapvalue\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Mounts\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Mounts = append(m.Mounts, &Mount{})\n\t\t\tif err := m.Mounts[len(m.Mounts)-1].UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 4:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Env\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Env = append(m.Env, &KeyValue{})\n\t\t\tif err := m.Env[len(m.Env)-1].UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 5:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Hooks\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Hooks == nil {\n\t\t\t\tm.Hooks = &Hooks{}\n\t\t\t}\n\t\t\tif err := m.Hooks.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 6:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Linux\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Linux == nil {\n\t\t\t\tm.Linux = &LinuxContainerAdjustment{}\n\t\t\t}\n\t\t\tif err := m.Linux.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 7:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Rlimits\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Rlimits = append(m.Rlimits, &POSIXRlimit{})\n\t\t\tif err := m.Rlimits[len(m.Rlimits)-1].UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 8:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field CDIDevices\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.CDIDevices = append(m.CDIDevices, &CDIDevice{})\n\t\t\tif err := m.CDIDevices[len(m.CDIDevices)-1].UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 9:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Args\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Args = append(m.Args, string(dAtA[iNdEx:postIndex]))\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *LinuxContainerAdjustment) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: LinuxContainerAdjustment: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: LinuxContainerAdjustment: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Devices\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Devices = append(m.Devices, &LinuxDevice{})\n\t\t\tif err := m.Devices[len(m.Devices)-1].UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Resources\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Resources == nil {\n\t\t\t\tm.Resources = &LinuxResources{}\n\t\t\t}\n\t\t\tif err := m.Resources.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field CgroupsPath\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.CgroupsPath = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 4:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field OomScoreAdj\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.OomScoreAdj == nil {\n\t\t\t\tm.OomScoreAdj = &OptionalInt{}\n\t\t\t}\n\t\t\tif err := m.OomScoreAdj.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 5:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field IoPriority\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.IoPriority == nil {\n\t\t\t\tm.IoPriority = &LinuxIOPriority{}\n\t\t\t}\n\t\t\tif err := m.IoPriority.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 6:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field SeccompPolicy\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.SeccompPolicy == nil {\n\t\t\t\tm.SeccompPolicy = &LinuxSeccomp{}\n\t\t\t}\n\t\t\tif err := m.SeccompPolicy.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 7:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Namespaces\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Namespaces = append(m.Namespaces, &LinuxNamespace{})\n\t\t\tif err := m.Namespaces[len(m.Namespaces)-1].UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 8:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Sysctl\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Sysctl == nil {\n\t\t\t\tm.Sysctl = make(map[string]string)\n\t\t\t}\n\t\t\tvar mapkey string\n\t\t\tvar mapvalue string\n\t\t\tfor iNdEx < postIndex {\n\t\t\t\tentryPreIndex := iNdEx\n\t\t\t\tvar wire uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfieldNum := int32(wire >> 3)\n\t\t\t\tif fieldNum == 1 {\n\t\t\t\t\tvar stringLenmapkey uint64\n\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\tstringLenmapkey |= uint64(b&0x7F) << shift\n\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tintStringLenmapkey := int(stringLenmapkey)\n\t\t\t\t\tif intStringLenmapkey < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tpostStringIndexmapkey := iNdEx + intStringLenmapkey\n\t\t\t\t\tif postStringIndexmapkey < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tif postStringIndexmapkey > l {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tmapkey = string(dAtA[iNdEx:postStringIndexmapkey])\n\t\t\t\t\tiNdEx = postStringIndexmapkey\n\t\t\t\t} else if fieldNum == 2 {\n\t\t\t\t\tvar stringLenmapvalue uint64\n\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\tstringLenmapvalue |= uint64(b&0x7F) << shift\n\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tintStringLenmapvalue := int(stringLenmapvalue)\n\t\t\t\t\tif intStringLenmapvalue < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tpostStringIndexmapvalue := iNdEx + intStringLenmapvalue\n\t\t\t\t\tif postStringIndexmapvalue < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tif postStringIndexmapvalue > l {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tmapvalue = string(dAtA[iNdEx:postStringIndexmapvalue])\n\t\t\t\t\tiNdEx = postStringIndexmapvalue\n\t\t\t\t} else {\n\t\t\t\t\tiNdEx = entryPreIndex\n\t\t\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tif (iNdEx + skippy) > postIndex {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tiNdEx += skippy\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.Sysctl[mapkey] = mapvalue\n\t\t\tiNdEx = postIndex\n\t\tcase 9:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field NetDevices\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.NetDevices == nil {\n\t\t\t\tm.NetDevices = make(map[string]*LinuxNetDevice)\n\t\t\t}\n\t\t\tvar mapkey string\n\t\t\tvar mapvalue *LinuxNetDevice\n\t\t\tfor iNdEx < postIndex {\n\t\t\t\tentryPreIndex := iNdEx\n\t\t\t\tvar wire uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfieldNum := int32(wire >> 3)\n\t\t\t\tif fieldNum == 1 {\n\t\t\t\t\tvar stringLenmapkey uint64\n\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\tstringLenmapkey |= uint64(b&0x7F) << shift\n\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tintStringLenmapkey := int(stringLenmapkey)\n\t\t\t\t\tif intStringLenmapkey < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tpostStringIndexmapkey := iNdEx + intStringLenmapkey\n\t\t\t\t\tif postStringIndexmapkey < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tif postStringIndexmapkey > l {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tmapkey = string(dAtA[iNdEx:postStringIndexmapkey])\n\t\t\t\t\tiNdEx = postStringIndexmapkey\n\t\t\t\t} else if fieldNum == 2 {\n\t\t\t\t\tvar mapmsglen int\n\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\tmapmsglen |= int(b&0x7F) << shift\n\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif mapmsglen < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tpostmsgIndex := iNdEx + mapmsglen\n\t\t\t\t\tif postmsgIndex < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tif postmsgIndex > l {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tmapvalue = &LinuxNetDevice{}\n\t\t\t\t\tif err := mapvalue.UnmarshalVT(dAtA[iNdEx:postmsgIndex]); err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t\tiNdEx = postmsgIndex\n\t\t\t\t} else {\n\t\t\t\t\tiNdEx = entryPreIndex\n\t\t\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tif (iNdEx + skippy) > postIndex {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tiNdEx += skippy\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.NetDevices[mapkey] = mapvalue\n\t\t\tiNdEx = postIndex\n\t\tcase 10:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Scheduler\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Scheduler == nil {\n\t\t\t\tm.Scheduler = &LinuxScheduler{}\n\t\t\t}\n\t\t\tif err := m.Scheduler.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 11:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Rdt\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Rdt == nil {\n\t\t\t\tm.Rdt = &LinuxRdt{}\n\t\t\t}\n\t\t\tif err := m.Rdt.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *LinuxSeccomp) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: LinuxSeccomp: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: LinuxSeccomp: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field DefaultAction\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.DefaultAction = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field DefaultErrno\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.DefaultErrno == nil {\n\t\t\t\tm.DefaultErrno = &OptionalUInt32{}\n\t\t\t}\n\t\t\tif err := m.DefaultErrno.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Architectures\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Architectures = append(m.Architectures, string(dAtA[iNdEx:postIndex]))\n\t\t\tiNdEx = postIndex\n\t\tcase 4:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Flags\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Flags = append(m.Flags, string(dAtA[iNdEx:postIndex]))\n\t\t\tiNdEx = postIndex\n\t\tcase 5:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ListenerPath\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.ListenerPath = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 6:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ListenerMetadata\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.ListenerMetadata = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 7:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Syscalls\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Syscalls = append(m.Syscalls, &LinuxSyscall{})\n\t\t\tif err := m.Syscalls[len(m.Syscalls)-1].UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *LinuxSyscall) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: LinuxSyscall: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: LinuxSyscall: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Names\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Names = append(m.Names, string(dAtA[iNdEx:postIndex]))\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Action\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Action = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ErrnoRet\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.ErrnoRet == nil {\n\t\t\t\tm.ErrnoRet = &OptionalUInt32{}\n\t\t\t}\n\t\t\tif err := m.ErrnoRet.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 4:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Args\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Args = append(m.Args, &LinuxSeccompArg{})\n\t\t\tif err := m.Args[len(m.Args)-1].UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *LinuxSeccompArg) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: LinuxSeccompArg: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: LinuxSeccompArg: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Index\", wireType)\n\t\t\t}\n\t\t\tm.Index = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Index |= uint32(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 2:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Value\", wireType)\n\t\t\t}\n\t\t\tm.Value = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Value |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 3:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ValueTwo\", wireType)\n\t\t\t}\n\t\t\tm.ValueTwo = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.ValueTwo |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 4:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Op\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Op = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *ContainerUpdate) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: ContainerUpdate: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: ContainerUpdate: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ContainerId\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.ContainerId = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Linux\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Linux == nil {\n\t\t\t\tm.Linux = &LinuxContainerUpdate{}\n\t\t\t}\n\t\t\tif err := m.Linux.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field IgnoreFailure\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.IgnoreFailure = bool(v != 0)\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *LinuxContainerUpdate) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: LinuxContainerUpdate: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: LinuxContainerUpdate: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Resources\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Resources == nil {\n\t\t\t\tm.Resources = &LinuxResources{}\n\t\t\t}\n\t\t\tif err := m.Resources.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *ContainerEviction) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: ContainerEviction: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: ContainerEviction: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ContainerId\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.ContainerId = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Reason\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Reason = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *LinuxRdt) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: LinuxRdt: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: LinuxRdt: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ClosId\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.ClosId == nil {\n\t\t\t\tm.ClosId = &OptionalString{}\n\t\t\t}\n\t\t\tif err := m.ClosId.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Schemata\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Schemata == nil {\n\t\t\t\tm.Schemata = &OptionalRepeatedString{}\n\t\t\t}\n\t\t\tif err := m.Schemata.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field EnableMonitoring\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.EnableMonitoring == nil {\n\t\t\t\tm.EnableMonitoring = &OptionalBool{}\n\t\t\t}\n\t\t\tif err := m.EnableMonitoring.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 4:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Remove\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.Remove = bool(v != 0)\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *KeyValue) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: KeyValue: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: KeyValue: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Key\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Key = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Value\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Value = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *OptionalString) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: OptionalString: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: OptionalString: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Value\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Value = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *OptionalRepeatedString) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: OptionalRepeatedString: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: OptionalRepeatedString: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Value\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Value = append(m.Value, string(dAtA[iNdEx:postIndex]))\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *OptionalInt) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: OptionalInt: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: OptionalInt: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Value\", wireType)\n\t\t\t}\n\t\t\tm.Value = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Value |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *OptionalInt32) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: OptionalInt32: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: OptionalInt32: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Value\", wireType)\n\t\t\t}\n\t\t\tm.Value = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Value |= int32(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *OptionalUInt32) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: OptionalUInt32: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: OptionalUInt32: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Value\", wireType)\n\t\t\t}\n\t\t\tm.Value = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Value |= uint32(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *OptionalInt64) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: OptionalInt64: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: OptionalInt64: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Value\", wireType)\n\t\t\t}\n\t\t\tm.Value = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Value |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *OptionalUInt64) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: OptionalUInt64: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: OptionalUInt64: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Value\", wireType)\n\t\t\t}\n\t\t\tm.Value = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Value |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *OptionalBool) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: OptionalBool: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: OptionalBool: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Value\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.Value = bool(v != 0)\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *OptionalFileMode) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: OptionalFileMode: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: OptionalFileMode: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Value\", wireType)\n\t\t\t}\n\t\t\tm.Value = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Value |= uint32(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *CompoundFieldOwners) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: CompoundFieldOwners: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: CompoundFieldOwners: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Owners\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Owners == nil {\n\t\t\t\tm.Owners = make(map[string]string)\n\t\t\t}\n\t\t\tvar mapkey string\n\t\t\tvar mapvalue string\n\t\t\tfor iNdEx < postIndex {\n\t\t\t\tentryPreIndex := iNdEx\n\t\t\t\tvar wire uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfieldNum := int32(wire >> 3)\n\t\t\t\tif fieldNum == 1 {\n\t\t\t\t\tvar stringLenmapkey uint64\n\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\tstringLenmapkey |= uint64(b&0x7F) << shift\n\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tintStringLenmapkey := int(stringLenmapkey)\n\t\t\t\t\tif intStringLenmapkey < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tpostStringIndexmapkey := iNdEx + intStringLenmapkey\n\t\t\t\t\tif postStringIndexmapkey < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tif postStringIndexmapkey > l {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tmapkey = string(dAtA[iNdEx:postStringIndexmapkey])\n\t\t\t\t\tiNdEx = postStringIndexmapkey\n\t\t\t\t} else if fieldNum == 2 {\n\t\t\t\t\tvar stringLenmapvalue uint64\n\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\tstringLenmapvalue |= uint64(b&0x7F) << shift\n\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tintStringLenmapvalue := int(stringLenmapvalue)\n\t\t\t\t\tif intStringLenmapvalue < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tpostStringIndexmapvalue := iNdEx + intStringLenmapvalue\n\t\t\t\t\tif postStringIndexmapvalue < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tif postStringIndexmapvalue > l {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tmapvalue = string(dAtA[iNdEx:postStringIndexmapvalue])\n\t\t\t\t\tiNdEx = postStringIndexmapvalue\n\t\t\t\t} else {\n\t\t\t\t\tiNdEx = entryPreIndex\n\t\t\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tif (iNdEx + skippy) > postIndex {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tiNdEx += skippy\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.Owners[mapkey] = mapvalue\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *FieldOwners) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: FieldOwners: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: FieldOwners: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Simple\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Simple == nil {\n\t\t\t\tm.Simple = make(map[int32]string)\n\t\t\t}\n\t\t\tvar mapkey int32\n\t\t\tvar mapvalue string\n\t\t\tfor iNdEx < postIndex {\n\t\t\t\tentryPreIndex := iNdEx\n\t\t\t\tvar wire uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfieldNum := int32(wire >> 3)\n\t\t\t\tif fieldNum == 1 {\n\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\tmapkey |= int32(b&0x7F) << shift\n\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else if fieldNum == 2 {\n\t\t\t\t\tvar stringLenmapvalue uint64\n\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\tstringLenmapvalue |= uint64(b&0x7F) << shift\n\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tintStringLenmapvalue := int(stringLenmapvalue)\n\t\t\t\t\tif intStringLenmapvalue < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tpostStringIndexmapvalue := iNdEx + intStringLenmapvalue\n\t\t\t\t\tif postStringIndexmapvalue < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tif postStringIndexmapvalue > l {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tmapvalue = string(dAtA[iNdEx:postStringIndexmapvalue])\n\t\t\t\t\tiNdEx = postStringIndexmapvalue\n\t\t\t\t} else {\n\t\t\t\t\tiNdEx = entryPreIndex\n\t\t\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tif (iNdEx + skippy) > postIndex {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tiNdEx += skippy\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.Simple[mapkey] = mapvalue\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Compound\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Compound == nil {\n\t\t\t\tm.Compound = make(map[int32]*CompoundFieldOwners)\n\t\t\t}\n\t\t\tvar mapkey int32\n\t\t\tvar mapvalue *CompoundFieldOwners\n\t\t\tfor iNdEx < postIndex {\n\t\t\t\tentryPreIndex := iNdEx\n\t\t\t\tvar wire uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfieldNum := int32(wire >> 3)\n\t\t\t\tif fieldNum == 1 {\n\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\tmapkey |= int32(b&0x7F) << shift\n\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else if fieldNum == 2 {\n\t\t\t\t\tvar mapmsglen int\n\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\tmapmsglen |= int(b&0x7F) << shift\n\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif mapmsglen < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tpostmsgIndex := iNdEx + mapmsglen\n\t\t\t\t\tif postmsgIndex < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tif postmsgIndex > l {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tmapvalue = &CompoundFieldOwners{}\n\t\t\t\t\tif err := mapvalue.UnmarshalVT(dAtA[iNdEx:postmsgIndex]); err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t\tiNdEx = postmsgIndex\n\t\t\t\t} else {\n\t\t\t\t\tiNdEx = entryPreIndex\n\t\t\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tif (iNdEx + skippy) > postIndex {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tiNdEx += skippy\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.Compound[mapkey] = mapvalue\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *OwningPlugins) UnmarshalVT(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: OwningPlugins: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: OwningPlugins: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Owners\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Owners == nil {\n\t\t\t\tm.Owners = make(map[string]*FieldOwners)\n\t\t\t}\n\t\t\tvar mapkey string\n\t\t\tvar mapvalue *FieldOwners\n\t\t\tfor iNdEx < postIndex {\n\t\t\t\tentryPreIndex := iNdEx\n\t\t\t\tvar wire uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfieldNum := int32(wire >> 3)\n\t\t\t\tif fieldNum == 1 {\n\t\t\t\t\tvar stringLenmapkey uint64\n\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\tstringLenmapkey |= uint64(b&0x7F) << shift\n\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tintStringLenmapkey := int(stringLenmapkey)\n\t\t\t\t\tif intStringLenmapkey < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tpostStringIndexmapkey := iNdEx + intStringLenmapkey\n\t\t\t\t\tif postStringIndexmapkey < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tif postStringIndexmapkey > l {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tmapkey = string(dAtA[iNdEx:postStringIndexmapkey])\n\t\t\t\t\tiNdEx = postStringIndexmapkey\n\t\t\t\t} else if fieldNum == 2 {\n\t\t\t\t\tvar mapmsglen int\n\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\treturn ErrIntOverflow\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\tmapmsglen |= int(b&0x7F) << shift\n\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif mapmsglen < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tpostmsgIndex := iNdEx + mapmsglen\n\t\t\t\t\tif postmsgIndex < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tif postmsgIndex > l {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tmapvalue = &FieldOwners{}\n\t\t\t\t\tif err := mapvalue.UnmarshalVT(dAtA[iNdEx:postmsgIndex]); err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t\tiNdEx = postmsgIndex\n\t\t\t\t} else {\n\t\t\t\t\tiNdEx = entryPreIndex\n\t\t\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\t\treturn ErrInvalidLength\n\t\t\t\t\t}\n\t\t\t\t\tif (iNdEx + skippy) > postIndex {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tiNdEx += skippy\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.Owners[mapkey] = mapvalue\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skip(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLength\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\n\nfunc skip(dAtA []byte) (n int, err error) {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tdepth := 0\n\tfor iNdEx < l {\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn 0, ErrIntOverflow\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= (uint64(b) & 0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\twireType := int(wire & 0x7)\n\t\tswitch wireType {\n\t\tcase 0:\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tiNdEx++\n\t\t\t\tif dAtA[iNdEx-1] < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 1:\n\t\t\tiNdEx += 8\n\t\tcase 2:\n\t\t\tvar length int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tlength |= (int(b) & 0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif length < 0 {\n\t\t\t\treturn 0, ErrInvalidLength\n\t\t\t}\n\t\t\tiNdEx += length\n\t\tcase 3:\n\t\t\tdepth++\n\t\tcase 4:\n\t\t\tif depth == 0 {\n\t\t\t\treturn 0, ErrUnexpectedEndOfGroup\n\t\t\t}\n\t\t\tdepth--\n\t\tcase 5:\n\t\t\tiNdEx += 4\n\t\tdefault:\n\t\t\treturn 0, fmt.Errorf(\"proto: illegal wireType %d\", wireType)\n\t\t}\n\t\tif iNdEx < 0 {\n\t\t\treturn 0, ErrInvalidLength\n\t\t}\n\t\tif depth == 0 {\n\t\t\treturn iNdEx, nil\n\t\t}\n\t}\n\treturn 0, io.ErrUnexpectedEOF\n}\n\nvar (\n\tErrInvalidLength        = fmt.Errorf(\"proto: negative length found during unmarshaling\")\n\tErrIntOverflow          = fmt.Errorf(\"proto: integer overflow\")\n\tErrUnexpectedEndOfGroup = fmt.Errorf(\"proto: unexpected end of group\")\n)\n"
  },
  {
    "path": "vendor/github.com/containerd/nri/pkg/api/container.go",
    "content": "/*\n   Copyright The containerd Authors.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\npackage api\n\nimport \"time\"\n\n// GetCreatedAtTime returns the time the container was created at as time.Time.\nfunc (x *Container) GetCreatedAtTime() time.Time {\n\tt := time.Time{}\n\tif x != nil {\n\t\treturn t.Add(time.Duration(x.CreatedAt) * time.Nanosecond)\n\t}\n\treturn t\n}\n\n// GetStartedAtTime returns the time the container was started at as time.Time.\nfunc (x *Container) GetStartedAtTime() time.Time {\n\tt := time.Time{}\n\tif x != nil {\n\t\treturn t.Add(time.Duration(x.StartedAt) * time.Nanosecond)\n\t}\n\treturn t\n}\n\n// GetFinishedAtTime returns the time the container was finished at as time.Time.\nfunc (x *Container) GetFinishedAtTime() time.Time {\n\tt := time.Time{}\n\tif x != nil {\n\t\treturn t.Add(time.Duration(x.FinishedAt) * time.Nanosecond)\n\t}\n\treturn t\n}\n"
  },
  {
    "path": "vendor/github.com/containerd/nri/pkg/api/device.go",
    "content": "/*\n   Copyright The containerd Authors.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\npackage api\n\nimport (\n\trspec \"github.com/opencontainers/runtime-spec/specs-go\"\n)\n\n// FromOCILinuxDevices returns a device slice from an OCI runtime Spec.\nfunc FromOCILinuxDevices(o []rspec.LinuxDevice) []*LinuxDevice {\n\tvar devices []*LinuxDevice\n\tfor _, d := range o {\n\t\tdevices = append(devices, &LinuxDevice{\n\t\t\tPath:     d.Path,\n\t\t\tType:     d.Type,\n\t\t\tMajor:    d.Major,\n\t\t\tMinor:    d.Minor,\n\t\t\tFileMode: FileMode(d.FileMode),\n\t\t\tUid:      UInt32(d.UID),\n\t\t\tGid:      UInt32(d.GID),\n\t\t})\n\t}\n\treturn devices\n}\n\n// ToOCI returns the linux devices for an OCI runtime Spec.\nfunc (d *LinuxDevice) ToOCI() rspec.LinuxDevice {\n\tif d == nil {\n\t\treturn rspec.LinuxDevice{}\n\t}\n\n\treturn rspec.LinuxDevice{\n\t\tPath:     d.Path,\n\t\tType:     d.Type,\n\t\tMajor:    d.Major,\n\t\tMinor:    d.Minor,\n\t\tFileMode: d.FileMode.Get(),\n\t\tUID:      d.Uid.Get(),\n\t\tGID:      d.Gid.Get(),\n\t}\n}\n\n// AccessString returns an OCI access string for the device.\nfunc (d *LinuxDevice) AccessString() string {\n\tr, w, m := \"r\", \"w\", \"\"\n\n\tif mode := d.FileMode.Get(); mode != nil {\n\t\tperm := mode.Perm()\n\t\tif (perm & 0444) != 0 {\n\t\t\tr = \"r\"\n\t\t}\n\t\tif (perm & 0222) != 0 {\n\t\t\tw = \"w\"\n\t\t}\n\t}\n\tif d.Type == \"b\" {\n\t\tm = \"m\"\n\t}\n\n\treturn r + w + m\n}\n\n// Cmp returns true if the devices are equal.\nfunc (d *LinuxDevice) Cmp(v *LinuxDevice) bool {\n\tif v == nil {\n\t\treturn false\n\t}\n\treturn d.Major != v.Major || d.Minor != v.Minor\n}\n\n// IsMarkedForRemoval checks if a LinuxDevice is marked for removal.\nfunc (d *LinuxDevice) IsMarkedForRemoval() (string, bool) {\n\tkey, marked := IsMarkedForRemoval(d.Path)\n\treturn key, marked\n}\n"
  },
  {
    "path": "vendor/github.com/containerd/nri/pkg/api/doc.go",
    "content": "/*\n   Copyright The containerd Authors.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\npackage api\n"
  },
  {
    "path": "vendor/github.com/containerd/nri/pkg/api/env.go",
    "content": "/*\n   Copyright The containerd Authors.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\npackage api\n\nimport (\n\t\"strings\"\n)\n\n// ToOCI returns an OCI Env entry for the KeyValue.\nfunc (e *KeyValue) ToOCI() string {\n\treturn e.Key + \"=\" + e.Value\n}\n\n// FromOCIEnv returns KeyValues from an OCI runtime Spec environment.\nfunc FromOCIEnv(in []string) []*KeyValue {\n\tif in == nil {\n\t\treturn nil\n\t}\n\tout := []*KeyValue{}\n\tfor _, keyval := range in {\n\t\tvar key, val string\n\t\tsplit := strings.SplitN(keyval, \"=\", 2)\n\t\tswitch len(split) {\n\t\tcase 0:\n\t\t\tcontinue\n\t\tcase 1:\n\t\t\tkey = split[0]\n\t\tcase 2:\n\t\t\tkey = split[0]\n\t\t\tval = split[1]\n\t\tdefault:\n\t\t\tval = strings.Join(split[1:], \"=\")\n\t\t}\n\t\tout = append(out, &KeyValue{\n\t\t\tKey:   key,\n\t\t\tValue: val,\n\t\t})\n\t}\n\treturn out\n}\n\n// IsMarkedForRemoval checks if an environment variable is marked for removal.\nfunc (e *KeyValue) IsMarkedForRemoval() (string, bool) {\n\tkey, marked := IsMarkedForRemoval(e.Key)\n\treturn key, marked\n}\n"
  },
  {
    "path": "vendor/github.com/containerd/nri/pkg/api/event.go",
    "content": "/*\n   Copyright The containerd Authors.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\npackage api\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n)\n\nconst (\n\t// ValidEvents is the event mask of all valid events.\n\tValidEvents = EventMask((1 << (Event_LAST - 1)) - 1)\n)\n\n//nolint:revive // exported type should have comment\ntype (\n\t// Define *Request/*Response type aliases for *Event/Empty pairs.\n\n\tStateChangeResponse          = Empty\n\tRunPodSandboxRequest         = StateChangeEvent\n\tRunPodSandboxResponse        = Empty\n\tStopPodSandboxRequest        = StateChangeEvent\n\tStopPodSandboxResponse       = Empty\n\tRemovePodSandboxRequest      = StateChangeEvent\n\tRemovePodSandboxResponse     = Empty\n\tPostUpdatePodSandboxRequest  = StateChangeEvent\n\tPostUpdatePodSandboxResponse = Empty\n\tStartContainerRequest        = StateChangeEvent\n\tStartContainerResponse       = Empty\n\tRemoveContainerRequest       = StateChangeEvent\n\tRemoveContainerResponse      = Empty\n\tPostCreateContainerRequest   = StateChangeEvent\n\tPostCreateContainerResponse  = Empty\n\tPostStartContainerRequest    = StateChangeEvent\n\tPostStartContainerResponse   = Empty\n\tPostUpdateContainerRequest   = StateChangeEvent\n\tPostUpdateContainerResponse  = Empty\n\n\tShutdownRequest  = Empty\n\tShutdownResponse = Empty\n)\n\n// EventMask corresponds to a set of enumerated Events.\ntype EventMask int32\n\n// ParseEventMask parses a string representation into an EventMask.\nfunc ParseEventMask(events ...string) (EventMask, error) {\n\tvar mask EventMask\n\n\tbits := map[string]Event{\n\t\t\"runpodsandbox\":               Event_RUN_POD_SANDBOX,\n\t\t\"updatepodsandbox\":            Event_UPDATE_POD_SANDBOX,\n\t\t\"postupdatepodsandbox\":        Event_POST_UPDATE_POD_SANDBOX,\n\t\t\"stoppodsandbox\":              Event_STOP_POD_SANDBOX,\n\t\t\"removepodsandbox\":            Event_REMOVE_POD_SANDBOX,\n\t\t\"createcontainer\":             Event_CREATE_CONTAINER,\n\t\t\"postcreatecontainer\":         Event_POST_CREATE_CONTAINER,\n\t\t\"startcontainer\":              Event_START_CONTAINER,\n\t\t\"poststartcontainer\":          Event_POST_START_CONTAINER,\n\t\t\"updatecontainer\":             Event_UPDATE_CONTAINER,\n\t\t\"postupdatecontainer\":         Event_POST_UPDATE_CONTAINER,\n\t\t\"stopcontainer\":               Event_STOP_CONTAINER,\n\t\t\"removecontainer\":             Event_REMOVE_CONTAINER,\n\t\t\"validatecontaineradjustment\": Event_VALIDATE_CONTAINER_ADJUSTMENT,\n\t}\n\n\tfor _, event := range events {\n\t\tlcEvents := strings.ToLower(event)\n\t\tfor _, name := range strings.Split(lcEvents, \",\") {\n\t\t\tswitch name {\n\t\t\tcase \"all\":\n\t\t\t\tmask |= ValidEvents\n\t\t\t\tcontinue\n\t\t\tcase \"pod\", \"podsandbox\":\n\t\t\t\tfor name, bit := range bits {\n\t\t\t\t\tif strings.Contains(name, \"pod\") {\n\t\t\t\t\t\tmask.Set(bit)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\tcase \"container\":\n\t\t\t\tfor name, bit := range bits {\n\t\t\t\t\tif strings.Contains(name, \"container\") {\n\t\t\t\t\t\tmask.Set(bit)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tbit, ok := bits[strings.TrimSpace(name)]\n\t\t\tif !ok {\n\t\t\t\treturn 0, fmt.Errorf(\"unknown event %q\", name)\n\t\t\t}\n\t\t\tmask.Set(bit)\n\t\t}\n\t}\n\n\treturn mask, nil\n}\n\n// MustParseEventMask parses the given events, panic()ing on errors.\nfunc MustParseEventMask(events ...string) EventMask {\n\tmask, err := ParseEventMask(events...)\n\tif err != nil {\n\t\tpanic(fmt.Sprintf(\"failed to parse events %s\", strings.Join(events, \" \")))\n\t}\n\treturn mask\n}\n\n// PrettyString returns a human-readable string representation of an EventMask.\nfunc (m *EventMask) PrettyString() string {\n\tnames := map[Event]string{\n\t\tEvent_RUN_POD_SANDBOX:               \"RunPodSandbox\",\n\t\tEvent_UPDATE_POD_SANDBOX:            \"UpdatePodSandbox\",\n\t\tEvent_POST_UPDATE_POD_SANDBOX:       \"PostUpdatePodSandbox\",\n\t\tEvent_STOP_POD_SANDBOX:              \"StopPodSandbox\",\n\t\tEvent_REMOVE_POD_SANDBOX:            \"RemovePodSandbox\",\n\t\tEvent_CREATE_CONTAINER:              \"CreateContainer\",\n\t\tEvent_POST_CREATE_CONTAINER:         \"PostCreateContainer\",\n\t\tEvent_START_CONTAINER:               \"StartContainer\",\n\t\tEvent_POST_START_CONTAINER:          \"PostStartContainer\",\n\t\tEvent_UPDATE_CONTAINER:              \"UpdateContainer\",\n\t\tEvent_POST_UPDATE_CONTAINER:         \"PostUpdateContainer\",\n\t\tEvent_STOP_CONTAINER:                \"StopContainer\",\n\t\tEvent_REMOVE_CONTAINER:              \"RemoveContainer\",\n\t\tEvent_VALIDATE_CONTAINER_ADJUSTMENT: \"ValidateContainerAdjustment\",\n\t}\n\n\tmask := *m\n\tevents, sep := \"\", \"\"\n\n\tfor bit := Event_UNKNOWN + 1; bit <= Event_LAST; bit++ {\n\t\tif mask.IsSet(bit) {\n\t\t\tevents += sep + names[bit]\n\t\t\tsep = \",\"\n\t\t\tmask.Clear(bit)\n\t\t}\n\t}\n\n\tif mask != 0 {\n\t\tevents += sep + fmt.Sprintf(\"unknown(0x%x)\", mask)\n\t}\n\n\treturn events\n}\n\n// Set sets the given Events in the mask.\nfunc (m *EventMask) Set(events ...Event) *EventMask {\n\tfor _, e := range events {\n\t\t*m |= (1 << (e - 1))\n\t}\n\treturn m\n}\n\n// Clear clears the given Events in the mask.\nfunc (m *EventMask) Clear(events ...Event) *EventMask {\n\tfor _, e := range events {\n\t\t*m &^= (1 << (e - 1))\n\t}\n\treturn m\n}\n\n// IsSet check if the given Event is set in the mask.\nfunc (m *EventMask) IsSet(e Event) bool {\n\treturn *m&(1<<(e-1)) != 0\n}\n"
  },
  {
    "path": "vendor/github.com/containerd/nri/pkg/api/helpers.go",
    "content": "/*\n   Copyright The containerd Authors.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\npackage api\n\n// DupStringSlice creates a copy of a string slice.\nfunc DupStringSlice(in []string) []string {\n\tif in == nil {\n\t\treturn nil\n\t}\n\tout := make([]string, len(in))\n\tcopy(out, in)\n\treturn out\n}\n\n// DupStringMap creates a copy of a map with string keys and values.\nfunc DupStringMap(in map[string]string) map[string]string {\n\tif in == nil {\n\t\treturn nil\n\t}\n\tout := map[string]string{}\n\tfor k, v := range in {\n\t\tout[k] = v\n\t}\n\treturn out\n}\n\n// IsMarkedForRemoval checks if a key is marked for removal.\n//\n// The key can be an annotation name, a mount container path, a device path,\n// a namespace type, or an environment variable name.\n// These are all marked for removal in adjustments by preceding\n// their corresponding key with a '-'.\nfunc IsMarkedForRemoval(key string) (string, bool) {\n\tif key == \"\" {\n\t\treturn \"\", false\n\t}\n\tif key[0] != '-' {\n\t\treturn key, false\n\t}\n\treturn key[1:], true\n}\n\n// MarkForRemoval returns a key marked for removal.\nfunc MarkForRemoval(key string) string {\n\treturn \"-\" + key\n}\n\n// ClearRemovalMarker returns a key cleared from any removal marker.\nfunc ClearRemovalMarker(key string) string {\n\tif key == \"\" {\n\t\treturn \"\"\n\t}\n\tif key[0] == '-' {\n\t\treturn key[1:]\n\t}\n\treturn key\n}\n"
  },
  {
    "path": "vendor/github.com/containerd/nri/pkg/api/hooks.go",
    "content": "/*\n   Copyright The containerd Authors.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\npackage api\n\nimport (\n\trspec \"github.com/opencontainers/runtime-spec/specs-go\"\n)\n\n// Append appends the given hooks to the existing ones.\nfunc (hooks *Hooks) Append(h *Hooks) *Hooks {\n\tif h == nil {\n\t\treturn hooks\n\t}\n\thooks.Prestart = append(hooks.Prestart, h.Prestart...) //nolint:staticcheck // ignore SA1019: o.Prestart is deprecated\n\thooks.CreateRuntime = append(hooks.CreateRuntime, h.CreateRuntime...)\n\thooks.CreateContainer = append(hooks.CreateContainer, h.CreateContainer...)\n\thooks.StartContainer = append(hooks.StartContainer, h.StartContainer...)\n\thooks.Poststart = append(hooks.Poststart, h.Poststart...)\n\thooks.Poststop = append(hooks.Poststop, h.Poststop...)\n\n\treturn hooks\n}\n\n// Hooks returns itself it any of its hooks is set. Otherwise it returns nil.\nfunc (hooks *Hooks) Hooks() *Hooks {\n\tif hooks == nil {\n\t\treturn nil\n\t}\n\n\tif len(hooks.Prestart) > 0 {\n\t\treturn hooks\n\t}\n\tif len(hooks.CreateRuntime) > 0 {\n\t\treturn hooks\n\t}\n\tif len(hooks.CreateContainer) > 0 {\n\t\treturn hooks\n\t}\n\tif len(hooks.StartContainer) > 0 {\n\t\treturn hooks\n\t}\n\tif len(hooks.Poststart) > 0 {\n\t\treturn hooks\n\t}\n\tif len(hooks.Poststop) > 0 {\n\t\treturn hooks\n\t}\n\n\treturn nil\n}\n\n// ToOCI returns the hook for an OCI runtime Spec.\nfunc (h *Hook) ToOCI() rspec.Hook {\n\treturn rspec.Hook{\n\t\tPath:    h.Path,\n\t\tArgs:    DupStringSlice(h.Args),\n\t\tEnv:     DupStringSlice(h.Env),\n\t\tTimeout: h.Timeout.Get(),\n\t}\n}\n\n// FromOCIHooks returns hooks from an OCI runtime Spec.\nfunc FromOCIHooks(o *rspec.Hooks) *Hooks {\n\tif o == nil {\n\t\treturn nil\n\t}\n\treturn &Hooks{\n\t\tPrestart:        FromOCIHookSlice(o.Prestart), //nolint:staticcheck // ignore SA1019: o.Prestart is deprecated\n\t\tCreateRuntime:   FromOCIHookSlice(o.CreateRuntime),\n\t\tCreateContainer: FromOCIHookSlice(o.CreateContainer),\n\t\tStartContainer:  FromOCIHookSlice(o.StartContainer),\n\t\tPoststart:       FromOCIHookSlice(o.Poststart),\n\t\tPoststop:        FromOCIHookSlice(o.Poststop),\n\t}\n}\n\n// FromOCIHookSlice returns a hook slice from an OCI runtime Spec.\nfunc FromOCIHookSlice(o []rspec.Hook) []*Hook {\n\tvar hooks []*Hook\n\tfor _, h := range o {\n\t\thooks = append(hooks, &Hook{\n\t\t\tPath:    h.Path,\n\t\t\tArgs:    DupStringSlice(h.Args),\n\t\t\tEnv:     DupStringSlice(h.Env),\n\t\t\tTimeout: Int(h.Timeout),\n\t\t})\n\t}\n\treturn hooks\n}\n"
  },
  {
    "path": "vendor/github.com/containerd/nri/pkg/api/ioprio.go",
    "content": "/*\n   Copyright The containerd Authors.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\npackage api\n\nimport (\n\trspec \"github.com/opencontainers/runtime-spec/specs-go\"\n)\n\n// FromOCILinuxIOPriority returns a LinuxIOPriority corresponding to the\n// OCI LinuxIOPriority.\nfunc FromOCILinuxIOPriority(o *rspec.LinuxIOPriority) *LinuxIOPriority {\n\tif o == nil {\n\t\treturn nil\n\t}\n\n\tioprio := &LinuxIOPriority{\n\t\tClass:    FromOCIIOPriorityClass(o.Class),\n\t\tPriority: int32(o.Priority),\n\t}\n\n\treturn ioprio\n}\n\n// ToOCI returns the OCI LinuxIOPriority corresponding to the LinuxIOPriority.\nfunc (ioprio *LinuxIOPriority) ToOCI() *rspec.LinuxIOPriority {\n\tif ioprio == nil {\n\t\treturn nil\n\t}\n\n\treturn &rspec.LinuxIOPriority{\n\t\tClass:    ioprio.Class.ToOCI(),\n\t\tPriority: int(ioprio.Priority),\n\t}\n}\n\n// FromOCIIOPriorityClass returns the IOPrioClass corresponding the the given\n// OCI IOPriorityClass.\nfunc FromOCIIOPriorityClass(o rspec.IOPriorityClass) IOPrioClass {\n\treturn IOPrioClass(IOPrioClass_value[string(o)])\n}\n\n// ToOCI returns the OCI IOPriorityClass corresponding to the given\n// IOPrioClass.\nfunc (c IOPrioClass) ToOCI() rspec.IOPriorityClass {\n\tif c == IOPrioClass_IOPRIO_CLASS_NONE {\n\t\treturn rspec.IOPriorityClass(\"\")\n\t}\n\treturn rspec.IOPriorityClass(IOPrioClass_name[int32(c)])\n}\n"
  },
  {
    "path": "vendor/github.com/containerd/nri/pkg/api/linux-scheduler.go",
    "content": "/*\n   Copyright The containerd Authors.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\npackage api\n\nimport (\n\trspec \"github.com/opencontainers/runtime-spec/specs-go\"\n)\n\n// FromOCILinuxScheduler returns a LinuxScheduler corresponding to the OCI\n// Scheduler.\nfunc FromOCILinuxScheduler(o *rspec.Scheduler) *LinuxScheduler {\n\tif o == nil {\n\t\treturn nil\n\t}\n\n\tsch := &LinuxScheduler{\n\t\tPolicy:   FromOCISchedulerPolicy(o.Policy),\n\t\tNice:     o.Nice,\n\t\tPriority: o.Priority,\n\t\tFlags:    FromOCILinuxSchedulerFlags(o.Flags),\n\t\tRuntime:  o.Runtime,\n\t\tDeadline: o.Deadline,\n\t\tPeriod:   o.Period,\n\t}\n\n\treturn sch\n}\n\n// ToOCI returns the OCI Scheduler corresponding to the LinuxScheduler.\nfunc (sch *LinuxScheduler) ToOCI() *rspec.Scheduler {\n\tif sch == nil {\n\t\treturn nil\n\t}\n\n\tif sch.Policy == LinuxSchedulerPolicy_SCHED_NONE {\n\t\treturn nil\n\t}\n\n\treturn &rspec.Scheduler{\n\t\tPolicy:   sch.Policy.ToOCI(),\n\t\tNice:     sch.Nice,\n\t\tPriority: sch.Priority,\n\t\tFlags:    ToOCILinuxSchedulerFlags(sch.Flags),\n\t\tRuntime:  sch.Runtime,\n\t\tDeadline: sch.Deadline,\n\t\tPeriod:   sch.Period,\n\t}\n}\n\n// FromOCISchedulerPolicy returns the SchedulerPolicy corresponding to the\n// given OCI SchedulerPolicy.\nfunc FromOCISchedulerPolicy(o rspec.LinuxSchedulerPolicy) LinuxSchedulerPolicy {\n\treturn LinuxSchedulerPolicy(LinuxSchedulerPolicy_value[string(o)])\n}\n\n// ToOCI returns the OCI SchedulerPolicy corresponding to the given\n// SchedulerPolicy.\nfunc (p LinuxSchedulerPolicy) ToOCI() rspec.LinuxSchedulerPolicy {\n\tif p == LinuxSchedulerPolicy_SCHED_NONE {\n\t\treturn rspec.LinuxSchedulerPolicy(\"\")\n\t}\n\treturn rspec.LinuxSchedulerPolicy(LinuxSchedulerPolicy_name[int32(p)])\n}\n\n// FromOCILinuxSchedulerFlags returns the LinuxSchedulerFlags corresponding to\n// the given OCI LinuxSchedulerFlags.\nfunc FromOCILinuxSchedulerFlags(o []rspec.LinuxSchedulerFlag) []LinuxSchedulerFlag {\n\tif o == nil {\n\t\treturn nil\n\t}\n\n\tflags := make([]LinuxSchedulerFlag, len(o))\n\tfor i, f := range o {\n\t\tflags[i] = LinuxSchedulerFlag(LinuxSchedulerFlag_value[string(f)])\n\t}\n\n\treturn flags\n}\n\n// ToOCILinuxSchedulerFlags returns the OCI LinuxSchedulerFlags corresponding\n// to the LinuxSchedulerFlags.\nfunc ToOCILinuxSchedulerFlags(f []LinuxSchedulerFlag) []rspec.LinuxSchedulerFlag {\n\tif f == nil {\n\t\treturn nil\n\t}\n\n\tflags := make([]rspec.LinuxSchedulerFlag, len(f))\n\tfor i, f := range f {\n\t\tflags[i] = rspec.LinuxSchedulerFlag(LinuxSchedulerFlag_name[int32(f)])\n\t}\n\n\treturn flags\n}\n"
  },
  {
    "path": "vendor/github.com/containerd/nri/pkg/api/mount.go",
    "content": "/*\n   Copyright The containerd Authors.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\npackage api\n\nimport (\n\t\"sort\"\n\n\trspec \"github.com/opencontainers/runtime-spec/specs-go\"\n)\n\nconst (\n\t// SELinuxRelabel is a Mount pseudo-option to request relabeling.\n\tSELinuxRelabel = \"relabel\"\n)\n\n// FromOCIMounts returns a Mount slice for an OCI runtime Spec.\nfunc FromOCIMounts(o []rspec.Mount) []*Mount {\n\tvar mounts []*Mount\n\tfor _, m := range o {\n\t\tmounts = append(mounts, &Mount{\n\t\t\tDestination: m.Destination,\n\t\t\tType:        m.Type,\n\t\t\tSource:      m.Source,\n\t\t\tOptions:     DupStringSlice(m.Options),\n\t\t})\n\t}\n\treturn mounts\n}\n\n// ToOCI returns a Mount for an OCI runtime Spec.\nfunc (m *Mount) ToOCI(propagationQuery *string) rspec.Mount {\n\to := rspec.Mount{\n\t\tDestination: m.Destination,\n\t\tType:        m.Type,\n\t\tSource:      m.Source,\n\t}\n\tfor _, opt := range m.Options {\n\t\to.Options = append(o.Options, opt)\n\t\tif propagationQuery != nil && (opt == \"rprivate\" || opt == \"rshared\" || opt == \"rslave\") {\n\t\t\t*propagationQuery = opt\n\t\t}\n\t}\n\treturn o\n}\n\n// Cmp returns true if the mounts are equal.\nfunc (m *Mount) Cmp(v *Mount) bool {\n\tif v == nil {\n\t\treturn false\n\t}\n\tif m.Destination != v.Destination || m.Type != v.Type || m.Source != v.Source ||\n\t\tlen(m.Options) != len(v.Options) {\n\t\treturn false\n\t}\n\n\tmOpts := make([]string, len(m.Options))\n\tvOpts := make([]string, len(m.Options))\n\tsort.Strings(mOpts)\n\tsort.Strings(vOpts)\n\n\tfor i, o := range mOpts {\n\t\tif vOpts[i] != o {\n\t\t\treturn false\n\t\t}\n\t}\n\n\treturn true\n}\n\n// IsMarkedForRemoval checks if a Mount is marked for removal.\nfunc (m *Mount) IsMarkedForRemoval() (string, bool) {\n\tkey, marked := IsMarkedForRemoval(m.Destination)\n\treturn key, marked\n}\n"
  },
  {
    "path": "vendor/github.com/containerd/nri/pkg/api/namespace.go",
    "content": "/*\n   Copyright The containerd Authors.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\npackage api\n\nimport (\n\trspec \"github.com/opencontainers/runtime-spec/specs-go\"\n)\n\n// FromOCILinuxNamespaces returns a namespace slice from an OCI runtime Spec.\nfunc FromOCILinuxNamespaces(o []rspec.LinuxNamespace) []*LinuxNamespace {\n\tvar namespaces []*LinuxNamespace\n\tfor _, ns := range o {\n\t\tnamespaces = append(namespaces, &LinuxNamespace{\n\t\t\tType: string(ns.Type),\n\t\t\tPath: ns.Path,\n\t\t})\n\t}\n\treturn namespaces\n}\n\n// IsMarkedForRemoval checks if a LinuxNamespace is marked for removal.\nfunc (n *LinuxNamespace) IsMarkedForRemoval() (string, bool) {\n\treturn IsMarkedForRemoval(n.Type)\n}\n"
  },
  {
    "path": "vendor/github.com/containerd/nri/pkg/api/net-device.go",
    "content": "/*\n   Copyright The containerd Authors.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\npackage api\n\nimport (\n\trspec \"github.com/opencontainers/runtime-spec/specs-go\"\n)\n\n// FromOCILinuxNetDevice returns a LinuxNetDevice for the given OCI LinuxNetDevice.\nfunc FromOCILinuxNetDevice(o rspec.LinuxNetDevice) *LinuxNetDevice {\n\treturn &LinuxNetDevice{\n\t\tName: o.Name,\n\t}\n}\n\n// FromOCILinuxNetDevices returns LinuxNetDevice's for the given OCI LinuxNetDevice's.\nfunc FromOCILinuxNetDevices(o map[string]rspec.LinuxNetDevice) map[string]*LinuxNetDevice {\n\tif len(o) == 0 {\n\t\treturn nil\n\t}\n\n\tdevices := make(map[string]*LinuxNetDevice, len(o))\n\tfor host, dev := range o {\n\t\tdevices[host] = FromOCILinuxNetDevice(dev)\n\t}\n\n\treturn devices\n}\n\n// ToOCI returns the OCI LinuxNetDevice corresponding to the LinuxNetDevice.\nfunc (d *LinuxNetDevice) ToOCI() rspec.LinuxNetDevice {\n\tif d == nil {\n\t\treturn rspec.LinuxNetDevice{}\n\t}\n\n\treturn rspec.LinuxNetDevice{\n\t\tName: d.Name,\n\t}\n}\n\n// ToOCILinuxNetDevices returns the OCI LinuxNetDevice's corresponding to the LinuxNetDevice's.\nfunc ToOCILinuxNetDevices(devices map[string]*LinuxNetDevice) map[string]rspec.LinuxNetDevice {\n\tif devices == nil {\n\t\treturn nil\n\t}\n\n\to := make(map[string]rspec.LinuxNetDevice, len(devices))\n\tfor host, dev := range devices {\n\t\to[host] = dev.ToOCI()\n\t}\n\n\treturn o\n}\n"
  },
  {
    "path": "vendor/github.com/containerd/nri/pkg/api/optional.go",
    "content": "/*\n   Copyright The containerd Authors.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\npackage api\n\nimport (\n\t\"os\"\n\t\"slices\"\n)\n\n//\n// XXX FIXME:\n//\n// The optional interface constructor should be updated/split up\n// to avoid having to take an interface{} argument. Instead The\n// optional types should have a\n//   - constructor taking the underlying native type\n//   - a Copy() function for copying them\n//   - a FromPointer constructor to create them from an optionally nil\n//     pointer to the underlying native type (to help constructing from\n//     structures that use a pointer to the native underlying type to\n//     denote optionality (OCI Spec mostly))\n// Creating from any other type should use one of these with any explicit\n// cast for the argument as necessary.\n//\n\n// String creates an Optional wrapper from its argument.\nfunc String(v interface{}) *OptionalString {\n\tvar value string\n\n\tswitch o := v.(type) {\n\tcase string:\n\t\tvalue = o\n\tcase *string:\n\t\tif o == nil {\n\t\t\treturn nil\n\t\t}\n\t\tvalue = *o\n\tcase *OptionalString:\n\t\tif o == nil {\n\t\t\treturn nil\n\t\t}\n\t\tvalue = o.Value\n\tdefault:\n\t\treturn nil\n\t}\n\n\treturn &OptionalString{\n\t\tValue: value,\n\t}\n}\n\n// Get returns nil if its value is unset or a pointer to the value itself.\nfunc (o *OptionalString) Get() *string {\n\tif o == nil {\n\t\treturn nil\n\t}\n\tv := o.Value\n\treturn &v\n}\n\n// RepeatedString creates an Optional wrapper from its argument.\nfunc RepeatedString(v interface{}) *OptionalRepeatedString {\n\tvar value []string\n\n\tswitch o := v.(type) {\n\tcase []string:\n\t\tvalue = o\n\tcase *[]string:\n\t\tif o == nil {\n\t\t\treturn nil\n\t\t}\n\t\tvalue = *o\n\tcase *OptionalRepeatedString:\n\t\tif o == nil {\n\t\t\treturn nil\n\t\t}\n\t\tvalue = o.Value\n\tdefault:\n\t\treturn nil\n\t}\n\n\treturn &OptionalRepeatedString{\n\t\tValue: slices.Clone(value),\n\t}\n}\n\n// Get returns nil if its value is unset or a pointer to a copy of the value.\nfunc (o *OptionalRepeatedString) Get() *[]string {\n\tif o == nil {\n\t\treturn nil\n\t}\n\tv := slices.Clone(o.Value)\n\treturn &v\n}\n\n// Int creates an Optional wrapper from its argument.\nfunc Int(v interface{}) *OptionalInt {\n\tvar value int64\n\n\tswitch o := v.(type) {\n\tcase int:\n\t\tvalue = int64(o)\n\tcase *int:\n\t\tif o == nil {\n\t\t\treturn nil\n\t\t}\n\t\tvalue = int64(*o)\n\tcase *OptionalInt:\n\t\tif o == nil {\n\t\t\treturn nil\n\t\t}\n\t\tvalue = o.Value\n\tdefault:\n\t\treturn nil\n\t}\n\n\treturn &OptionalInt{\n\t\tValue: value,\n\t}\n}\n\n// Get returns nil if its value is unset or a pointer to the value itself.\nfunc (o *OptionalInt) Get() *int {\n\tif o == nil {\n\t\treturn nil\n\t}\n\tv := int(o.Value)\n\treturn &v\n}\n\n// Int32 creates an Optional wrapper from its argument.\nfunc Int32(v interface{}) *OptionalInt32 {\n\tvar value int32\n\n\tswitch o := v.(type) {\n\tcase int32:\n\t\tvalue = o\n\tcase *int32:\n\t\tif o == nil {\n\t\t\treturn nil\n\t\t}\n\t\tvalue = *o\n\tcase *OptionalInt32:\n\t\tif o == nil {\n\t\t\treturn nil\n\t\t}\n\t\tvalue = o.Value\n\tdefault:\n\t\treturn nil\n\t}\n\n\treturn &OptionalInt32{\n\t\tValue: value,\n\t}\n}\n\n// Get returns nil if its value is unset or a pointer to the value itself.\nfunc (o *OptionalInt32) Get() *int32 {\n\tif o == nil {\n\t\treturn nil\n\t}\n\tv := o.Value\n\treturn &v\n}\n\n// UInt32 creates an Optional wrapper from its argument.\nfunc UInt32(v interface{}) *OptionalUInt32 {\n\tvar value uint32\n\n\tswitch o := v.(type) {\n\tcase uint32:\n\t\tvalue = o\n\tcase *uint32:\n\t\tif o == nil {\n\t\t\treturn nil\n\t\t}\n\t\tvalue = *o\n\tcase *OptionalUInt32:\n\t\tif o == nil {\n\t\t\treturn nil\n\t\t}\n\t\tvalue = o.Value\n\tdefault:\n\t\treturn nil\n\t}\n\n\treturn &OptionalUInt32{\n\t\tValue: value,\n\t}\n}\n\n// Get returns nil if its value is unset or a pointer to the value itself.\nfunc (o *OptionalUInt32) Get() *uint32 {\n\tif o == nil {\n\t\treturn nil\n\t}\n\tv := o.Value\n\treturn &v\n}\n\n// Int64 creates an Optional wrapper from its argument.\nfunc Int64(v interface{}) *OptionalInt64 {\n\tvar value int64\n\n\tswitch o := v.(type) {\n\tcase int:\n\t\tvalue = int64(o)\n\tcase uint:\n\t\tvalue = int64(o)\n\tcase uint64:\n\t\tvalue = int64(o)\n\tcase int64:\n\t\tvalue = o\n\tcase *int64:\n\t\tif o == nil {\n\t\t\treturn nil\n\t\t}\n\t\tvalue = *o\n\tcase *uint64:\n\t\tif o == nil {\n\t\t\treturn nil\n\t\t}\n\t\tvalue = int64(*o)\n\tcase *OptionalInt64:\n\t\tif o == nil {\n\t\t\treturn nil\n\t\t}\n\t\tvalue = o.Value\n\tdefault:\n\t\treturn nil\n\t}\n\n\treturn &OptionalInt64{\n\t\tValue: value,\n\t}\n}\n\n// Get returns nil if its value is unset or a pointer to the value itself.\nfunc (o *OptionalInt64) Get() *int64 {\n\tif o == nil {\n\t\treturn nil\n\t}\n\tv := o.Value\n\treturn &v\n}\n\n// UInt64 creates an Optional wrapper from its argument.\nfunc UInt64(v interface{}) *OptionalUInt64 {\n\tvar value uint64\n\n\tswitch o := v.(type) {\n\tcase int:\n\t\tvalue = uint64(o)\n\tcase uint:\n\t\tvalue = uint64(o)\n\tcase int64:\n\t\tvalue = uint64(o)\n\tcase uint64:\n\t\tvalue = o\n\tcase *int64:\n\t\tif o == nil {\n\t\t\treturn nil\n\t\t}\n\t\tvalue = uint64(*o)\n\tcase *uint64:\n\t\tif o == nil {\n\t\t\treturn nil\n\t\t}\n\t\tvalue = *o\n\tcase *OptionalUInt64:\n\t\tif o == nil {\n\t\t\treturn nil\n\t\t}\n\t\tvalue = o.Value\n\tdefault:\n\t\treturn nil\n\t}\n\n\treturn &OptionalUInt64{\n\t\tValue: value,\n\t}\n}\n\n// Get returns nil if its value is unset or a pointer to the value itself.\nfunc (o *OptionalUInt64) Get() *uint64 {\n\tif o == nil {\n\t\treturn nil\n\t}\n\tv := o.Value\n\treturn &v\n}\n\n// Bool creates an Optional wrapper from its argument.\nfunc Bool(v interface{}) *OptionalBool {\n\tvar value bool\n\n\tswitch o := v.(type) {\n\tcase bool:\n\t\tvalue = o\n\tcase *bool:\n\t\tif o == nil {\n\t\t\treturn nil\n\t\t}\n\t\tvalue = *o\n\tcase *OptionalBool:\n\t\tif o == nil {\n\t\t\treturn nil\n\t\t}\n\t\tvalue = o.Value\n\tdefault:\n\t\treturn nil\n\t}\n\n\treturn &OptionalBool{\n\t\tValue: value,\n\t}\n}\n\n// Get returns nil if its value is unset or a pointer to the value itself.\nfunc (o *OptionalBool) Get() *bool {\n\tif o == nil {\n\t\treturn nil\n\t}\n\tv := o.Value\n\treturn &v\n}\n\n// FileMode creates an Optional wrapper from its argument.\nfunc FileMode(v interface{}) *OptionalFileMode {\n\tvar value os.FileMode\n\n\tswitch o := v.(type) {\n\tcase *os.FileMode:\n\t\tif o == nil {\n\t\t\treturn nil\n\t\t}\n\t\tvalue = *o\n\tcase os.FileMode:\n\t\tvalue = o\n\tcase *OptionalFileMode:\n\t\tif o == nil {\n\t\t\treturn nil\n\t\t}\n\t\tvalue = os.FileMode(o.Value)\n\tcase uint32:\n\t\tvalue = os.FileMode(o)\n\tdefault:\n\t\treturn nil\n\t}\n\n\treturn &OptionalFileMode{\n\t\tValue: uint32(value),\n\t}\n}\n\n// Get returns nil if its value is unset or a pointer to the value itself.\nfunc (o *OptionalFileMode) Get() *os.FileMode {\n\tif o == nil {\n\t\treturn nil\n\t}\n\tv := os.FileMode(o.Value)\n\treturn &v\n}\n"
  },
  {
    "path": "vendor/github.com/containerd/nri/pkg/api/owners.go",
    "content": "/*\n   Copyright The containerd Authors.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\n// TODO: Add comments to exported methods and functions.\n//\n//nolint:revive // exported symbols should have comments\npackage api\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n)\n\n//\n// Notes:\n//   OwningPlugins, FieldOwners and CompoundFieldOwners are not protected\n//   against concurrent access and therefore not goroutine safe.\n//\n//   None of these functions are used by plugins directly. These are used by\n//   the runtime adaptation code to track container adjustments and updates\n//   requested by plugins, and to detect conflicting requests.\n//\n\nfunc NewOwningPlugins() *OwningPlugins {\n\treturn &OwningPlugins{\n\t\tOwners: make(map[string]*FieldOwners),\n\t}\n}\n\nfunc (o *OwningPlugins) ClaimAnnotation(id, key, plugin string) error {\n\treturn o.mustOwnersFor(id).ClaimAnnotation(key, plugin)\n}\n\nfunc (o *OwningPlugins) ClaimMount(id, destination, plugin string) error {\n\treturn o.mustOwnersFor(id).ClaimMount(destination, plugin)\n}\n\nfunc (o *OwningPlugins) ClaimHooks(id, plugin string) error {\n\treturn o.mustOwnersFor(id).ClaimHooks(plugin)\n}\n\nfunc (o *OwningPlugins) ClaimDevice(id, path, plugin string) error {\n\treturn o.mustOwnersFor(id).ClaimDevice(path, plugin)\n}\n\nfunc (o *OwningPlugins) ClaimNamespace(id, typ, plugin string) error {\n\treturn o.mustOwnersFor(id).ClaimNamespace(typ, plugin)\n}\n\nfunc (o *OwningPlugins) ClaimCdiDevice(id, name, plugin string) error {\n\treturn o.mustOwnersFor(id).ClaimCdiDevice(name, plugin)\n}\n\nfunc (o *OwningPlugins) ClaimEnv(id, name, plugin string) error {\n\treturn o.mustOwnersFor(id).ClaimEnv(name, plugin)\n}\n\nfunc (o *OwningPlugins) ClaimArgs(id, plugin string) error {\n\treturn o.mustOwnersFor(id).ClaimArgs(plugin)\n}\n\nfunc (o *OwningPlugins) ClaimMemLimit(id, plugin string) error {\n\treturn o.mustOwnersFor(id).ClaimMemLimit(plugin)\n}\n\nfunc (o *OwningPlugins) ClaimMemReservation(id, plugin string) error {\n\treturn o.mustOwnersFor(id).ClaimMemReservation(plugin)\n}\n\nfunc (o *OwningPlugins) ClaimMemSwapLimit(id, plugin string) error {\n\treturn o.mustOwnersFor(id).ClaimMemSwapLimit(plugin)\n}\n\nfunc (o *OwningPlugins) ClaimMemKernelLimit(id, plugin string) error {\n\treturn o.mustOwnersFor(id).ClaimMemKernelLimit(plugin)\n}\n\nfunc (o *OwningPlugins) ClaimMemTCPLimit(id, plugin string) error {\n\treturn o.mustOwnersFor(id).ClaimMemTCPLimit(plugin)\n}\n\nfunc (o *OwningPlugins) ClaimMemSwappiness(id, plugin string) error {\n\treturn o.mustOwnersFor(id).ClaimMemSwappiness(plugin)\n}\n\nfunc (o *OwningPlugins) ClaimMemDisableOomKiller(id, plugin string) error {\n\treturn o.mustOwnersFor(id).ClaimMemDisableOomKiller(plugin)\n}\n\nfunc (o *OwningPlugins) ClaimMemUseHierarchy(id, plugin string) error {\n\treturn o.mustOwnersFor(id).ClaimMemUseHierarchy(plugin)\n}\n\nfunc (o *OwningPlugins) ClaimCPUShares(id, plugin string) error {\n\treturn o.mustOwnersFor(id).ClaimCPUShares(plugin)\n}\n\nfunc (o *OwningPlugins) ClaimCPUQuota(id, plugin string) error {\n\treturn o.mustOwnersFor(id).ClaimCPUQuota(plugin)\n}\n\nfunc (o *OwningPlugins) ClaimCPUPeriod(id, plugin string) error {\n\treturn o.mustOwnersFor(id).ClaimCPUPeriod(plugin)\n}\n\nfunc (o *OwningPlugins) ClaimCPURealtimeRuntime(id, plugin string) error {\n\treturn o.mustOwnersFor(id).ClaimCPURealtimeRuntime(plugin)\n}\n\nfunc (o *OwningPlugins) ClaimCPURealtimePeriod(id, plugin string) error {\n\treturn o.mustOwnersFor(id).ClaimCPURealtimePeriod(plugin)\n}\n\nfunc (o *OwningPlugins) ClaimCPUSetCPUs(id, plugin string) error {\n\treturn o.mustOwnersFor(id).ClaimCPUSetCPUs(plugin)\n}\n\nfunc (o *OwningPlugins) ClaimCPUSetMems(id, plugin string) error {\n\treturn o.mustOwnersFor(id).ClaimCPUSetMems(plugin)\n}\n\nfunc (o *OwningPlugins) ClaimPidsLimit(id, plugin string) error {\n\treturn o.mustOwnersFor(id).ClaimPidsLimit(plugin)\n}\n\nfunc (o *OwningPlugins) ClaimHugepageLimit(id, size, plugin string) error {\n\treturn o.mustOwnersFor(id).ClaimHugepageLimit(size, plugin)\n}\n\nfunc (o *OwningPlugins) ClaimBlockioClass(id, plugin string) error {\n\treturn o.mustOwnersFor(id).ClaimBlockioClass(plugin)\n}\n\nfunc (o *OwningPlugins) ClaimRdtClass(id, plugin string) error {\n\treturn o.mustOwnersFor(id).ClaimRdtClass(plugin)\n}\n\nfunc (o *OwningPlugins) ClaimRdtClosID(id, plugin string) error {\n\treturn o.mustOwnersFor(id).ClaimRdtClosID(plugin)\n}\n\nfunc (o *OwningPlugins) ClaimRdtSchemata(id, plugin string) error {\n\treturn o.mustOwnersFor(id).ClaimRdtSchemata(plugin)\n}\n\nfunc (o *OwningPlugins) ClaimRdtEnableMonitoring(id, plugin string) error {\n\treturn o.mustOwnersFor(id).ClaimRdtEnableMonitoring(plugin)\n}\n\nfunc (o *OwningPlugins) ClaimCgroupsUnified(id, key, plugin string) error {\n\treturn o.mustOwnersFor(id).ClaimCgroupsUnified(key, plugin)\n}\n\nfunc (o *OwningPlugins) ClaimCgroupsPath(id, plugin string) error {\n\treturn o.mustOwnersFor(id).ClaimCgroupsPath(plugin)\n}\n\nfunc (o *OwningPlugins) ClaimOomScoreAdj(id, plugin string) error {\n\treturn o.mustOwnersFor(id).ClaimOomScoreAdj(plugin)\n}\n\nfunc (o *OwningPlugins) ClaimLinuxScheduler(id, plugin string) error {\n\treturn o.mustOwnersFor(id).ClaimLinuxScheduler(plugin)\n}\n\nfunc (o *OwningPlugins) ClaimRlimit(id, typ, plugin string) error {\n\treturn o.mustOwnersFor(id).ClaimRlimit(typ, plugin)\n}\n\nfunc (o *OwningPlugins) ClaimIOPriority(id, plugin string) error {\n\treturn o.mustOwnersFor(id).ClaimIOPriority(plugin)\n}\n\nfunc (o *OwningPlugins) ClaimSeccompPolicy(id, plugin string) error {\n\treturn o.mustOwnersFor(id).ClaimSeccompPolicy(plugin)\n}\n\nfunc (o *OwningPlugins) ClaimSysctl(id, key, plugin string) error {\n\treturn o.mustOwnersFor(id).ClaimSysctl(key, plugin)\n}\n\nfunc (o *OwningPlugins) ClaimLinuxNetDevice(id, path, plugin string) error {\n\treturn o.mustOwnersFor(id).ClaimLinuxNetDevice(path, plugin)\n}\n\nfunc (o *OwningPlugins) ClearAnnotation(id, key, plugin string) {\n\to.mustOwnersFor(id).ClearAnnotation(key, plugin)\n}\n\nfunc (o *OwningPlugins) ClearMount(id, key, plugin string) {\n\to.mustOwnersFor(id).ClearMount(key, plugin)\n}\n\nfunc (o *OwningPlugins) ClearDevice(id, key, plugin string) {\n\to.mustOwnersFor(id).ClearDevice(key, plugin)\n}\n\nfunc (o *OwningPlugins) ClearEnv(id, key, plugin string) {\n\to.mustOwnersFor(id).ClearEnv(key, plugin)\n}\n\nfunc (o *OwningPlugins) ClearArgs(id, plugin string) {\n\to.mustOwnersFor(id).ClearArgs(plugin)\n}\n\nfunc (o *OwningPlugins) ClearSysctl(id, key, plugin string) {\n\to.mustOwnersFor(id).ClearSysctl(key, plugin)\n}\n\nfunc (o *OwningPlugins) ClearLinuxNetDevice(id, path, plugin string) {\n\to.mustOwnersFor(id).ClearLinuxNetDevice(path, plugin)\n}\n\nfunc (o *OwningPlugins) ClearRdt(id, plugin string) {\n\to.mustOwnersFor(id).ClearRdt(plugin)\n}\n\nfunc (o *OwningPlugins) AnnotationOwner(id, key string) (string, bool) {\n\treturn o.ownersFor(id).compoundOwner(Field_Annotations.Key(), key)\n}\n\nfunc (o *OwningPlugins) MountOwner(id, destination string) (string, bool) {\n\treturn o.ownersFor(id).compoundOwner(Field_Mounts.Key(), destination)\n}\n\nfunc (o *OwningPlugins) HooksOwner(id string) (string, bool) {\n\treturn o.ownersFor(id).simpleOwner(Field_OciHooks.Key())\n}\n\nfunc (o *OwningPlugins) DeviceOwner(id, path string) (string, bool) {\n\treturn o.ownersFor(id).compoundOwner(Field_Devices.Key(), path)\n}\n\nfunc (o *OwningPlugins) NamespaceOwner(id, path string) (string, bool) {\n\treturn o.ownersFor(id).compoundOwner(Field_Namespace.Key(), path)\n}\n\nfunc (o *OwningPlugins) NamespaceOwners(id string) (map[string]string, bool) {\n\treturn o.ownersFor(id).compoundOwnerMap(Field_Namespace.Key())\n}\n\nfunc (o *OwningPlugins) EnvOwner(id, name string) (string, bool) {\n\treturn o.ownersFor(id).compoundOwner(Field_Env.Key(), name)\n}\n\nfunc (o *OwningPlugins) ArgsOwner(id string) (string, bool) {\n\treturn o.ownersFor(id).simpleOwner(Field_Args.Key())\n}\n\nfunc (o *OwningPlugins) MemLimitOwner(id string) (string, bool) {\n\treturn o.ownersFor(id).simpleOwner(Field_MemLimit.Key())\n}\n\nfunc (o *OwningPlugins) MemReservationOwner(id string) (string, bool) {\n\treturn o.ownersFor(id).simpleOwner(Field_MemReservation.Key())\n}\n\nfunc (o *OwningPlugins) MemSwapLimitOwner(id string) (string, bool) {\n\treturn o.ownersFor(id).simpleOwner(Field_MemSwapLimit.Key())\n}\n\nfunc (o *OwningPlugins) MemKernelLimitOwner(id string) (string, bool) {\n\treturn o.ownersFor(id).simpleOwner(Field_MemKernelLimit.Key())\n}\n\nfunc (o *OwningPlugins) MemTCPLimitOwner(id string) (string, bool) {\n\treturn o.ownersFor(id).simpleOwner(Field_MemTCPLimit.Key())\n}\n\nfunc (o *OwningPlugins) MemSwappinessOwner(id string) (string, bool) {\n\treturn o.ownersFor(id).simpleOwner(Field_MemSwappiness.Key())\n}\n\nfunc (o *OwningPlugins) MemDisableOomKillerOwner(id string) (string, bool) {\n\treturn o.ownersFor(id).simpleOwner(Field_MemDisableOomKiller.Key())\n}\n\nfunc (o *OwningPlugins) MemUseHierarchyOwner(id string) (string, bool) {\n\treturn o.ownersFor(id).simpleOwner(Field_MemUseHierarchy.Key())\n}\n\nfunc (o *OwningPlugins) CPUSharesOwner(id string) (string, bool) {\n\treturn o.ownersFor(id).simpleOwner(Field_CPUShares.Key())\n}\n\nfunc (o *OwningPlugins) CPUQuotaOwner(id string) (string, bool) {\n\treturn o.ownersFor(id).simpleOwner(Field_CPUQuota.Key())\n}\n\nfunc (o *OwningPlugins) CPUPeriodOwner(id string) (string, bool) {\n\treturn o.ownersFor(id).simpleOwner(Field_CPUPeriod.Key())\n}\n\nfunc (o *OwningPlugins) CPURealtimeRuntimeOwner(id string) (string, bool) {\n\treturn o.ownersFor(id).simpleOwner(Field_CPURealtimeRuntime.Key())\n}\n\nfunc (o *OwningPlugins) CPURealtimePeriodOwner(id string) (string, bool) {\n\treturn o.ownersFor(id).simpleOwner(Field_CPURealtimePeriod.Key())\n}\n\nfunc (o *OwningPlugins) CPUSetCPUsOwner(id string) (string, bool) {\n\treturn o.ownersFor(id).simpleOwner(Field_CPUSetCPUs.Key())\n}\n\nfunc (o *OwningPlugins) CPUSetMemsOwner(id string) (string, bool) {\n\treturn o.ownersFor(id).simpleOwner(Field_CPUSetMems.Key())\n}\n\nfunc (o *OwningPlugins) PidsLimitOwner(id string) (string, bool) {\n\treturn o.ownersFor(id).simpleOwner(Field_PidsLimit.Key())\n}\n\nfunc (o *OwningPlugins) HugepageLimitOwner(id, size string) (string, bool) {\n\treturn o.ownersFor(id).compoundOwner(Field_HugepageLimits.Key(), size)\n}\n\nfunc (o *OwningPlugins) BlockioClassOwner(id string) (string, bool) {\n\treturn o.ownersFor(id).simpleOwner(Field_BlockioClass.Key())\n}\n\nfunc (o *OwningPlugins) RdtClassOwner(id string) (string, bool) {\n\treturn o.ownersFor(id).simpleOwner(Field_RdtClass.Key())\n}\n\nfunc (o *OwningPlugins) RdtClosIDOwner(id string) (string, bool) {\n\treturn o.ownersFor(id).simpleOwner(Field_RdtClosID.Key())\n}\n\nfunc (o *OwningPlugins) RdtSchemataOwner(id string) (string, bool) {\n\treturn o.ownersFor(id).simpleOwner(Field_RdtSchemata.Key())\n}\n\nfunc (o *OwningPlugins) RdtEnableMonitoringOwner(id string) (string, bool) {\n\treturn o.ownersFor(id).simpleOwner(Field_RdtEnableMonitoring.Key())\n}\n\nfunc (o *OwningPlugins) CgroupsUnifiedOwner(id, key string) (string, bool) {\n\treturn o.ownersFor(id).compoundOwner(Field_CgroupsUnified.Key(), key)\n}\n\nfunc (o *OwningPlugins) CgroupsPathOwner(id string) (string, bool) {\n\treturn o.ownersFor(id).simpleOwner(Field_CgroupsPath.Key())\n}\n\nfunc (o *OwningPlugins) OomScoreAdjOwner(id string) (string, bool) {\n\treturn o.ownersFor(id).simpleOwner(Field_OomScoreAdj.Key())\n}\n\nfunc (o *OwningPlugins) LinuxScheduler(id string) (string, bool) {\n\treturn o.ownersFor(id).simpleOwner(Field_LinuxSched.Key())\n}\n\nfunc (o *OwningPlugins) RlimitOwner(id, typ string) (string, bool) {\n\treturn o.ownersFor(id).compoundOwner(Field_Rlimits.Key(), typ)\n}\n\nfunc (o *OwningPlugins) IOPriorityOwner(id string) (string, bool) {\n\treturn o.ownersFor(id).simpleOwner(Field_IoPriority.Key())\n}\n\nfunc (o *OwningPlugins) SeccompPolicyOwner(id string) (string, bool) {\n\treturn o.ownersFor(id).simpleOwner(Field_SeccompPolicy.Key())\n}\n\nfunc (o *OwningPlugins) SysctlOwner(id, key string) (string, bool) {\n\treturn o.ownersFor(id).compoundOwner(Field_Sysctl.Key(), key)\n}\n\nfunc (o *OwningPlugins) LinuxNetDeviceOwner(id, path string) (string, bool) {\n\treturn o.ownersFor(id).compoundOwner(Field_LinuxNetDevices.Key(), path)\n}\n\nfunc (o *OwningPlugins) mustOwnersFor(id string) *FieldOwners {\n\tf, ok := o.Owners[id]\n\tif !ok {\n\t\tf = NewFieldOwners()\n\t\to.Owners[id] = f\n\t}\n\treturn f\n}\n\nfunc (o *OwningPlugins) ownersFor(id string) *FieldOwners {\n\tf, ok := o.Owners[id]\n\tif !ok {\n\t\treturn nil\n\t}\n\treturn f\n}\n\nfunc NewFieldOwners() *FieldOwners {\n\treturn &FieldOwners{\n\t\tSimple:   make(map[int32]string),\n\t\tCompound: make(map[int32]*CompoundFieldOwners),\n\t}\n}\n\nfunc (f *FieldOwners) IsCompoundConflict(field int32, key, plugin string) error {\n\tm, ok := f.Compound[field]\n\tif !ok {\n\t\tf.Compound[field] = NewCompoundFieldOwners()\n\t\treturn nil\n\t}\n\n\tother, claimed := m.Owners[key]\n\tif !claimed {\n\t\treturn nil\n\t}\n\n\tclearer, ok := IsMarkedForRemoval(other)\n\tif ok {\n\t\tif clearer == plugin {\n\t\t\treturn nil\n\t\t}\n\t\tother = clearer\n\t}\n\n\treturn f.Conflict(field, plugin, other, key)\n}\n\nfunc (f *FieldOwners) IsSimpleConflict(field int32, plugin string) error {\n\tother, claimed := f.Simple[field]\n\tif !claimed {\n\t\treturn nil\n\t}\n\n\tclearer, ok := IsMarkedForRemoval(other)\n\tif ok {\n\t\tif clearer == plugin {\n\t\t\treturn nil\n\t\t}\n\t\tother = clearer\n\t}\n\n\treturn f.Conflict(field, plugin, other)\n}\n\nfunc (f *FieldOwners) claimCompound(field int32, entry, plugin string) error {\n\tif err := f.IsCompoundConflict(field, entry, plugin); err != nil {\n\t\treturn err\n\t}\n\n\tf.Compound[field].Owners[entry] = plugin\n\treturn nil\n}\n\nfunc (f *FieldOwners) claimSimple(field int32, plugin string) error {\n\tif err := f.IsSimpleConflict(field, plugin); err != nil {\n\t\treturn err\n\t}\n\n\tf.Simple[field] = plugin\n\treturn nil\n}\n\nfunc (f *FieldOwners) ClaimAnnotation(key, plugin string) error {\n\treturn f.claimCompound(Field_Annotations.Key(), key, plugin)\n}\n\nfunc (f *FieldOwners) ClaimMount(destination, plugin string) error {\n\treturn f.claimCompound(Field_Mounts.Key(), destination, plugin)\n}\n\nfunc (f *FieldOwners) ClaimHooks(plugin string) error {\n\tplugins := plugin\n\n\tif current, ok := f.simpleOwner(Field_OciHooks.Key()); ok {\n\t\tf.clearSimple(Field_OciHooks.Key(), plugin)\n\t\tplugins = current + \",\" + plugin\n\t}\n\n\tf.claimSimple(Field_OciHooks.Key(), plugins)\n\treturn nil\n}\n\nfunc (f *FieldOwners) ClaimDevice(path, plugin string) error {\n\treturn f.claimCompound(Field_Devices.Key(), path, plugin)\n}\n\nfunc (f *FieldOwners) ClaimCdiDevice(name, plugin string) error {\n\treturn f.claimCompound(Field_CdiDevices.Key(), name, plugin)\n}\n\nfunc (f *FieldOwners) ClaimNamespace(typ, plugin string) error {\n\treturn f.claimCompound(Field_Namespace.Key(), typ, plugin)\n}\n\nfunc (f *FieldOwners) ClaimEnv(name, plugin string) error {\n\treturn f.claimCompound(Field_Env.Key(), name, plugin)\n}\n\nfunc (f *FieldOwners) ClaimArgs(plugin string) error {\n\treturn f.claimSimple(Field_Args.Key(), plugin)\n}\n\nfunc (f *FieldOwners) ClaimMemLimit(plugin string) error {\n\treturn f.claimSimple(Field_MemLimit.Key(), plugin)\n}\n\nfunc (f *FieldOwners) ClaimMemReservation(plugin string) error {\n\treturn f.claimSimple(Field_MemReservation.Key(), plugin)\n}\n\nfunc (f *FieldOwners) ClaimMemSwapLimit(plugin string) error {\n\treturn f.claimSimple(Field_MemSwapLimit.Key(), plugin)\n}\n\nfunc (f *FieldOwners) ClaimMemKernelLimit(plugin string) error {\n\treturn f.claimSimple(Field_MemKernelLimit.Key(), plugin)\n}\n\nfunc (f *FieldOwners) ClaimMemTCPLimit(plugin string) error {\n\treturn f.claimSimple(Field_MemTCPLimit.Key(), plugin)\n}\n\nfunc (f *FieldOwners) ClaimMemSwappiness(plugin string) error {\n\treturn f.claimSimple(Field_MemSwappiness.Key(), plugin)\n}\n\nfunc (f *FieldOwners) ClaimMemDisableOomKiller(plugin string) error {\n\treturn f.claimSimple(Field_MemDisableOomKiller.Key(), plugin)\n}\n\nfunc (f *FieldOwners) ClaimMemUseHierarchy(plugin string) error {\n\treturn f.claimSimple(Field_MemUseHierarchy.Key(), plugin)\n}\n\nfunc (f *FieldOwners) ClaimCPUShares(plugin string) error {\n\treturn f.claimSimple(Field_CPUShares.Key(), plugin)\n}\n\nfunc (f *FieldOwners) ClaimCPUQuota(plugin string) error {\n\treturn f.claimSimple(Field_CPUQuota.Key(), plugin)\n}\n\nfunc (f *FieldOwners) ClaimCPUPeriod(plugin string) error {\n\treturn f.claimSimple(Field_CPUPeriod.Key(), plugin)\n}\n\nfunc (f *FieldOwners) ClaimCPURealtimeRuntime(plugin string) error {\n\treturn f.claimSimple(Field_CPURealtimeRuntime.Key(), plugin)\n}\n\nfunc (f *FieldOwners) ClaimCPURealtimePeriod(plugin string) error {\n\treturn f.claimSimple(Field_CPURealtimePeriod.Key(), plugin)\n}\n\nfunc (f *FieldOwners) ClaimCPUSetCPUs(plugin string) error {\n\treturn f.claimSimple(Field_CPUSetCPUs.Key(), plugin)\n}\n\nfunc (f *FieldOwners) ClaimCPUSetMems(plugin string) error {\n\treturn f.claimSimple(Field_CPUSetMems.Key(), plugin)\n}\n\nfunc (f *FieldOwners) ClaimPidsLimit(plugin string) error {\n\treturn f.claimSimple(Field_PidsLimit.Key(), plugin)\n}\n\nfunc (f *FieldOwners) ClaimHugepageLimit(size, plugin string) error {\n\treturn f.claimCompound(Field_HugepageLimits.Key(), size, plugin)\n}\n\nfunc (f *FieldOwners) ClaimBlockioClass(plugin string) error {\n\treturn f.claimSimple(Field_BlockioClass.Key(), plugin)\n}\n\nfunc (f *FieldOwners) ClaimRdtClass(plugin string) error {\n\treturn f.claimSimple(Field_RdtClass.Key(), plugin)\n}\n\nfunc (f *FieldOwners) ClaimRdtClosID(plugin string) error {\n\treturn f.claimSimple(Field_RdtClosID.Key(), plugin)\n}\n\nfunc (f *FieldOwners) ClaimRdtSchemata(plugin string) error {\n\treturn f.claimSimple(Field_RdtSchemata.Key(), plugin)\n}\n\nfunc (f *FieldOwners) ClaimRdtEnableMonitoring(plugin string) error {\n\treturn f.claimSimple(Field_RdtEnableMonitoring.Key(), plugin)\n}\n\nfunc (f *FieldOwners) ClaimCgroupsUnified(key, plugin string) error {\n\treturn f.claimCompound(Field_CgroupsUnified.Key(), key, plugin)\n}\n\nfunc (f *FieldOwners) ClaimCgroupsPath(plugin string) error {\n\treturn f.claimSimple(Field_CgroupsPath.Key(), plugin)\n}\n\nfunc (f *FieldOwners) ClaimOomScoreAdj(plugin string) error {\n\treturn f.claimSimple(Field_OomScoreAdj.Key(), plugin)\n}\n\nfunc (f *FieldOwners) ClaimLinuxScheduler(plugin string) error {\n\treturn f.claimSimple(Field_LinuxSched.Key(), plugin)\n}\n\nfunc (f *FieldOwners) ClaimRlimit(typ, plugin string) error {\n\treturn f.claimCompound(Field_Rlimits.Key(), typ, plugin)\n}\n\nfunc (f *FieldOwners) ClaimIOPriority(plugin string) error {\n\treturn f.claimSimple(Field_IoPriority.Key(), plugin)\n}\n\nfunc (f *FieldOwners) ClaimSeccompPolicy(plugin string) error {\n\treturn f.claimSimple(Field_SeccompPolicy.Key(), plugin)\n}\n\nfunc (f *FieldOwners) ClaimSysctl(key, plugin string) error {\n\treturn f.claimCompound(Field_Sysctl.Key(), key, plugin)\n}\n\nfunc (f *FieldOwners) ClaimLinuxNetDevice(path, plugin string) error {\n\treturn f.claimCompound(Field_LinuxNetDevices.Key(), path, plugin)\n}\n\nfunc (f *FieldOwners) clearCompound(field int32, key, plugin string) {\n\tm, ok := f.Compound[field]\n\tif !ok {\n\t\tm = NewCompoundFieldOwners()\n\t\tf.Compound[field] = m\n\t}\n\n\tm.Owners[key] = MarkForRemoval(plugin)\n}\n\nfunc (f *FieldOwners) clearSimple(field int32, plugin string) {\n\tf.Simple[field] = MarkForRemoval(plugin)\n}\n\nfunc (f *FieldOwners) ClearAnnotation(key, plugin string) {\n\tf.clearCompound(Field_Annotations.Key(), key, plugin)\n}\n\nfunc (f *FieldOwners) ClearMount(destination, plugin string) {\n\tf.clearCompound(Field_Mounts.Key(), destination, plugin)\n}\n\nfunc (f *FieldOwners) ClearDevice(path, plugin string) {\n\tf.clearCompound(Field_Devices.Key(), path, plugin)\n}\n\nfunc (f *FieldOwners) ClearEnv(name, plugin string) {\n\tf.clearCompound(Field_Env.Key(), name, plugin)\n}\n\nfunc (f *FieldOwners) ClearArgs(plugin string) {\n\tf.clearSimple(Field_Args.Key(), plugin)\n}\n\nfunc (f *FieldOwners) ClearSysctl(key, plugin string) {\n\tf.clearCompound(Field_Sysctl.Key(), key, plugin)\n}\n\nfunc (f *FieldOwners) ClearLinuxNetDevice(key, plugin string) {\n\tf.clearCompound(Field_LinuxNetDevices.Key(), key, plugin)\n}\n\nfunc (f *FieldOwners) ClearRdt(plugin string) {\n\tf.clearSimple(Field_RdtClosID.Key(), plugin)\n\tf.clearSimple(Field_RdtSchemata.Key(), plugin)\n\tf.clearSimple(Field_RdtEnableMonitoring.Key(), plugin)\n}\n\nfunc (f *FieldOwners) Conflict(field int32, plugin, other string, qualifiers ...string) error {\n\treturn fmt.Errorf(\"plugins %q and %q both tried to set %s\",\n\t\tplugin, other, qualify(field, qualifiers...))\n}\n\nfunc (f *FieldOwners) compoundOwnerMap(field int32) (map[string]string, bool) {\n\tif f == nil {\n\t\treturn nil, false\n\t}\n\n\tm, ok := f.Compound[field]\n\tif !ok {\n\t\treturn nil, false\n\t}\n\n\treturn m.Owners, true\n}\n\nfunc (f *FieldOwners) compoundOwner(field int32, key string) (string, bool) {\n\tif f == nil {\n\t\treturn \"\", false\n\t}\n\n\tm, ok := f.Compound[field]\n\tif !ok {\n\t\treturn \"\", false\n\t}\n\n\tplugin, ok := m.Owners[key]\n\treturn plugin, ok\n}\n\nfunc (f *FieldOwners) simpleOwner(field int32) (string, bool) {\n\tif f == nil {\n\t\treturn \"\", false\n\t}\n\n\tplugin, ok := f.Simple[field]\n\treturn plugin, ok\n}\n\nfunc (f *FieldOwners) AnnotationOwner(key string) (string, bool) {\n\treturn f.compoundOwner(Field_Annotations.Key(), key)\n}\n\nfunc (f *FieldOwners) MountOwner(destination string) (string, bool) {\n\treturn f.compoundOwner(Field_Mounts.Key(), destination)\n}\n\nfunc (f *FieldOwners) DeviceOwner(path string) (string, bool) {\n\treturn f.compoundOwner(Field_Devices.Key(), path)\n}\n\nfunc (f *FieldOwners) NamespaceOwner(typ string) (string, bool) {\n\treturn f.compoundOwner(Field_Devices.Key(), typ)\n}\n\nfunc (f *FieldOwners) EnvOwner(name string) (string, bool) {\n\treturn f.compoundOwner(Field_Env.Key(), name)\n}\n\nfunc (f *FieldOwners) ArgsOwner() (string, bool) {\n\treturn f.simpleOwner(Field_Args.Key())\n}\n\nfunc (f *FieldOwners) MemLimitOwner() (string, bool) {\n\treturn f.simpleOwner(Field_MemLimit.Key())\n}\n\nfunc (f *FieldOwners) MemReservationOwner() (string, bool) {\n\treturn f.simpleOwner(Field_MemReservation.Key())\n}\n\nfunc (f *FieldOwners) MemSwapLimitOwner() (string, bool) {\n\treturn f.simpleOwner(Field_MemSwapLimit.Key())\n}\n\nfunc (f *FieldOwners) MemKernelLimitOwner() (string, bool) {\n\treturn f.simpleOwner(Field_MemKernelLimit.Key())\n}\n\nfunc (f *FieldOwners) MemTCPLimitOwner() (string, bool) {\n\treturn f.simpleOwner(Field_MemTCPLimit.Key())\n}\n\nfunc (f *FieldOwners) MemSwappinessOwner() (string, bool) {\n\treturn f.simpleOwner(Field_MemSwappiness.Key())\n}\n\nfunc (f *FieldOwners) MemDisableOomKillerOwner() (string, bool) {\n\treturn f.simpleOwner(Field_MemDisableOomKiller.Key())\n}\n\nfunc (f *FieldOwners) MemUseHierarchyOwner() (string, bool) {\n\treturn f.simpleOwner(Field_MemUseHierarchy.Key())\n}\n\nfunc (f *FieldOwners) CPUSharesOwner() (string, bool) {\n\treturn f.simpleOwner(Field_CPUShares.Key())\n}\n\nfunc (f *FieldOwners) CPUQuotaOwner() (string, bool) {\n\treturn f.simpleOwner(Field_CPUQuota.Key())\n}\n\nfunc (f *FieldOwners) CPUPeriodOwner() (string, bool) {\n\treturn f.simpleOwner(Field_CPUPeriod.Key())\n}\n\nfunc (f *FieldOwners) CPURealtimeRuntimeOwner() (string, bool) {\n\treturn f.simpleOwner(Field_CPURealtimeRuntime.Key())\n}\n\nfunc (f *FieldOwners) CPURealtimePeriodOwner() (string, bool) {\n\treturn f.simpleOwner(Field_CPURealtimePeriod.Key())\n}\n\nfunc (f *FieldOwners) CPUSetCPUsOwner() (string, bool) {\n\treturn f.simpleOwner(Field_CPUSetCPUs.Key())\n}\n\nfunc (f *FieldOwners) CPUSetMemsOwner() (string, bool) {\n\treturn f.simpleOwner(Field_CPUSetMems.Key())\n}\n\nfunc (f *FieldOwners) PidsLimitOwner() (string, bool) {\n\treturn f.simpleOwner(Field_PidsLimit.Key())\n}\n\nfunc (f *FieldOwners) HugepageLimitOwner(size string) (string, bool) {\n\treturn f.compoundOwner(Field_HugepageLimits.Key(), size)\n}\n\nfunc (f *FieldOwners) BlockioClassOwner() (string, bool) {\n\treturn f.simpleOwner(Field_BlockioClass.Key())\n}\n\nfunc (f *FieldOwners) RdtClassOwner() (string, bool) {\n\treturn f.simpleOwner(Field_RdtClass.Key())\n}\n\nfunc (f *FieldOwners) RdtSchemataOwner() (string, bool) {\n\treturn f.simpleOwner(Field_RdtSchemata.Key())\n}\n\nfunc (f *FieldOwners) RdtEnableMonitoringOwner() (string, bool) {\n\treturn f.simpleOwner(Field_RdtEnableMonitoring.Key())\n}\n\nfunc (f *FieldOwners) CgroupsUnifiedOwner(key string) (string, bool) {\n\treturn f.compoundOwner(Field_CgroupsUnified.Key(), key)\n}\n\nfunc (f *FieldOwners) CgroupsPathOwner() (string, bool) {\n\treturn f.simpleOwner(Field_CgroupsPath.Key())\n}\n\nfunc (f *FieldOwners) OomScoreAdjOwner() (string, bool) {\n\treturn f.simpleOwner(Field_OomScoreAdj.Key())\n}\n\nfunc (f *FieldOwners) RlimitOwner(typ string) (string, bool) {\n\treturn f.compoundOwner(Field_Rlimits.Key(), typ)\n}\n\nfunc qualify(field int32, qualifiers ...string) string {\n\treturn Field(field).String() + \" \" + strings.Join(append([]string{}, qualifiers...), \" \")\n}\n\nfunc NewCompoundFieldOwners() *CompoundFieldOwners {\n\treturn &CompoundFieldOwners{\n\t\tOwners: make(map[string]string),\n\t}\n}\n\nfunc (f Field) Key() int32 {\n\treturn int32(f)\n}\n"
  },
  {
    "path": "vendor/github.com/containerd/nri/pkg/api/plugin.go",
    "content": "/*\n   Copyright The containerd Authors.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\npackage api\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n)\n\nconst (\n\t// DefaultSocketPath is the default socket path for external plugins.\n\tDefaultSocketPath = \"/var/run/nri/nri.sock\"\n\t// PluginSocketEnvVar is used to inform plugins about pre-connected sockets.\n\tPluginSocketEnvVar = \"NRI_PLUGIN_SOCKET\"\n\t// PluginNameEnvVar is used to inform NRI-launched plugins about their name.\n\tPluginNameEnvVar = \"NRI_PLUGIN_NAME\"\n\t// PluginIdxEnvVar is used to inform NRI-launched plugins about their ID.\n\tPluginIdxEnvVar = \"NRI_PLUGIN_IDX\"\n)\n\n// ParsePluginName parses the (file)name of a plugin into an index and a base.\nfunc ParsePluginName(name string) (string, string, error) {\n\tsplit := strings.SplitN(name, \"-\", 2)\n\tif len(split) < 2 {\n\t\treturn \"\", \"\", fmt.Errorf(\"invalid plugin name %q, idx-pluginname expected\", name)\n\t}\n\n\tif err := CheckPluginIndex(split[0]); err != nil {\n\t\treturn \"\", \"\", err\n\t}\n\n\treturn split[0], split[1], nil\n}\n\n// CheckPluginIndex checks the validity of a plugin index.\nfunc CheckPluginIndex(idx string) error {\n\tif len(idx) != 2 {\n\t\treturn fmt.Errorf(\"invalid plugin index %q, must be 2 digits\", idx)\n\t}\n\t//nolint:staticcheck // could apply De Morgan's law\n\tif !('0' <= idx[0] && idx[0] <= '9') || !('0' <= idx[1] && idx[1] <= '9') {\n\t\treturn fmt.Errorf(\"invalid plugin index %q (not [0-9][0-9])\", idx)\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/containerd/nri/pkg/api/resources.go",
    "content": "//go:build !tinygo.wasm\n\n/*\n   Copyright The containerd Authors.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\npackage api\n\nimport (\n\trspec \"github.com/opencontainers/runtime-spec/specs-go\"\n)\n\nconst (\n\t// UnlimitedPidsLimit indicates unlimited Linux PIDs limit.\n\tUnlimitedPidsLimit = -1\n)\n\n// FromOCILinuxResources returns resources from an OCI runtime Spec.\nfunc FromOCILinuxResources(o *rspec.LinuxResources, _ map[string]string) *LinuxResources {\n\tif o == nil {\n\t\treturn nil\n\t}\n\tl := &LinuxResources{}\n\tif m := o.Memory; m != nil {\n\t\tl.Memory = &LinuxMemory{\n\t\t\tLimit:            Int64(m.Limit),\n\t\t\tReservation:      Int64(m.Reservation),\n\t\t\tSwap:             Int64(m.Swap),\n\t\t\tKernel:           Int64(m.Kernel), //nolint:staticcheck // ignore SA1019: m.Kernel is deprecated\n\t\t\tKernelTcp:        Int64(m.KernelTCP),\n\t\t\tSwappiness:       UInt64(m.Swappiness),\n\t\t\tDisableOomKiller: Bool(m.DisableOOMKiller),\n\t\t\tUseHierarchy:     Bool(m.UseHierarchy),\n\t\t}\n\t}\n\tif c := o.CPU; c != nil {\n\t\tl.Cpu = &LinuxCPU{\n\t\t\tShares:          UInt64(c.Shares),\n\t\t\tQuota:           Int64(c.Quota),\n\t\t\tPeriod:          UInt64(c.Period),\n\t\t\tRealtimeRuntime: Int64(c.RealtimeRuntime),\n\t\t\tRealtimePeriod:  UInt64(c.RealtimePeriod),\n\t\t\tCpus:            c.Cpus,\n\t\t\tMems:            c.Mems,\n\t\t}\n\t}\n\tfor _, h := range o.HugepageLimits {\n\t\tl.HugepageLimits = append(l.HugepageLimits, &HugepageLimit{\n\t\t\tPageSize: h.Pagesize,\n\t\t\tLimit:    h.Limit,\n\t\t})\n\t}\n\tfor _, d := range o.Devices {\n\t\tl.Devices = append(l.Devices, &LinuxDeviceCgroup{\n\t\t\tAllow:  d.Allow,\n\t\t\tType:   d.Type,\n\t\t\tMajor:  Int64(d.Major),\n\t\t\tMinor:  Int64(d.Minor),\n\t\t\tAccess: d.Access,\n\t\t})\n\t}\n\tif p := o.Pids; p != nil {\n\t\tl.Pids = &LinuxPids{}\n\t\tif p.Limit != nil && *p.Limit != 0 {\n\t\t\tl.Pids.Limit = *p.Limit\n\t\t}\n\t}\n\tif len(o.Unified) != 0 {\n\t\tl.Unified = make(map[string]string)\n\t\tfor k, v := range o.Unified {\n\t\t\tl.Unified[k] = v\n\t\t}\n\t}\n\treturn l\n}\n\n// ToOCI returns resources for an OCI runtime Spec.\nfunc (r *LinuxResources) ToOCI() *rspec.LinuxResources {\n\tif r == nil {\n\t\treturn nil\n\t}\n\to := &rspec.LinuxResources{\n\t\tCPU:    &rspec.LinuxCPU{},\n\t\tMemory: &rspec.LinuxMemory{},\n\t}\n\tif r.Memory != nil {\n\t\to.Memory = &rspec.LinuxMemory{\n\t\t\tLimit:            r.Memory.Limit.Get(),\n\t\t\tReservation:      r.Memory.Reservation.Get(),\n\t\t\tSwap:             r.Memory.Swap.Get(),\n\t\t\tKernel:           r.Memory.Kernel.Get(),\n\t\t\tKernelTCP:        r.Memory.KernelTcp.Get(),\n\t\t\tSwappiness:       r.Memory.Swappiness.Get(),\n\t\t\tDisableOOMKiller: r.Memory.DisableOomKiller.Get(),\n\t\t\tUseHierarchy:     r.Memory.UseHierarchy.Get(),\n\t\t}\n\t}\n\tif r.Cpu != nil {\n\t\to.CPU = &rspec.LinuxCPU{\n\t\t\tShares:          r.Cpu.Shares.Get(),\n\t\t\tQuota:           r.Cpu.Quota.Get(),\n\t\t\tPeriod:          r.Cpu.Period.Get(),\n\t\t\tRealtimeRuntime: r.Cpu.RealtimeRuntime.Get(),\n\t\t\tRealtimePeriod:  r.Cpu.RealtimePeriod.Get(),\n\t\t\tCpus:            r.Cpu.Cpus,\n\t\t\tMems:            r.Cpu.Mems,\n\t\t}\n\t}\n\tfor _, l := range r.HugepageLimits {\n\t\to.HugepageLimits = append(o.HugepageLimits, rspec.LinuxHugepageLimit{\n\t\t\tPagesize: l.PageSize,\n\t\t\tLimit:    l.Limit,\n\t\t})\n\t}\n\tif len(r.Unified) != 0 {\n\t\to.Unified = make(map[string]string)\n\t\tfor k, v := range r.Unified {\n\t\t\to.Unified[k] = v\n\t\t}\n\t}\n\tfor _, d := range r.Devices {\n\t\to.Devices = append(o.Devices, rspec.LinuxDeviceCgroup{\n\t\t\tAllow:  d.Allow,\n\t\t\tType:   d.Type,\n\t\t\tMajor:  d.Major.Get(),\n\t\t\tMinor:  d.Minor.Get(),\n\t\t\tAccess: d.Access,\n\t\t})\n\t}\n\tif r.Pids != nil {\n\t\to.Pids = &rspec.LinuxPids{}\n\t\tif r.Pids.Limit > UnlimitedPidsLimit {\n\t\t\tlimit := r.Pids.Limit\n\t\t\to.Pids.Limit = &limit\n\t\t}\n\t}\n\treturn o\n}\n\n// Copy creates a copy of the resources.\nfunc (r *LinuxResources) Copy() *LinuxResources {\n\tif r == nil {\n\t\treturn nil\n\t}\n\to := &LinuxResources{}\n\tif r.Memory != nil {\n\t\to.Memory = &LinuxMemory{\n\t\t\tLimit:            Int64(r.Memory.GetLimit()),\n\t\t\tReservation:      Int64(r.Memory.GetReservation()),\n\t\t\tSwap:             Int64(r.Memory.GetSwap()),\n\t\t\tKernel:           Int64(r.Memory.GetKernel()),\n\t\t\tKernelTcp:        Int64(r.Memory.GetKernelTcp()),\n\t\t\tSwappiness:       UInt64(r.Memory.GetSwappiness()),\n\t\t\tDisableOomKiller: Bool(r.Memory.GetDisableOomKiller()),\n\t\t\tUseHierarchy:     Bool(r.Memory.GetUseHierarchy()),\n\t\t}\n\t}\n\tif r.Cpu != nil {\n\t\to.Cpu = &LinuxCPU{\n\t\t\tShares:          UInt64(r.Cpu.GetShares()),\n\t\t\tQuota:           Int64(r.Cpu.GetQuota()),\n\t\t\tPeriod:          UInt64(r.Cpu.GetPeriod()),\n\t\t\tRealtimeRuntime: Int64(r.Cpu.GetRealtimeRuntime()),\n\t\t\tRealtimePeriod:  UInt64(r.Cpu.GetRealtimePeriod()),\n\t\t\tCpus:            r.Cpu.GetCpus(),\n\t\t\tMems:            r.Cpu.GetMems(),\n\t\t}\n\t}\n\tfor _, l := range r.HugepageLimits {\n\t\to.HugepageLimits = append(o.HugepageLimits, &HugepageLimit{\n\t\t\tPageSize: l.PageSize,\n\t\t\tLimit:    l.Limit,\n\t\t})\n\t}\n\tif len(r.Unified) != 0 {\n\t\to.Unified = make(map[string]string)\n\t\tfor k, v := range r.Unified {\n\t\t\to.Unified[k] = v\n\t\t}\n\t}\n\tif r.Pids != nil {\n\t\to.Pids = &LinuxPids{\n\t\t\tLimit: r.Pids.Limit,\n\t\t}\n\t}\n\to.BlockioClass = String(r.BlockioClass)\n\to.RdtClass = String(r.RdtClass)\n\n\tfor _, d := range r.Devices {\n\t\to.Devices = append(o.Devices, &LinuxDeviceCgroup{\n\t\t\tAllow:  d.Allow,\n\t\t\tType:   d.Type,\n\t\t\tAccess: d.Access,\n\t\t\tMajor:  Int64(d.Major),\n\t\t\tMinor:  Int64(d.Minor),\n\t\t})\n\t}\n\n\treturn o\n}\n\n// Copy creates a copy of the RDT configuration.\nfunc (r *LinuxRdt) Copy() *LinuxRdt {\n\tif r == nil {\n\t\treturn nil\n\t}\n\treturn &LinuxRdt{\n\t\tClosId:           String(r.ClosId),\n\t\tSchemata:         RepeatedString(r.Schemata),\n\t\tEnableMonitoring: Bool(r.EnableMonitoring),\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/containerd/nri/pkg/api/seccomp.go",
    "content": "/*\n   Copyright The containerd Authors.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\npackage api\n\nimport (\n\trspec \"github.com/opencontainers/runtime-spec/specs-go\"\n)\n\n// FromOCILinuxSeccomp converts an seccomp configuration from an OCI runtime spec.\nfunc FromOCILinuxSeccomp(o *rspec.LinuxSeccomp) *LinuxSeccomp {\n\tvar errno *OptionalUInt32\n\tif o.DefaultErrnoRet != nil {\n\t\terrno = &OptionalUInt32{Value: uint32(*o.DefaultErrnoRet)}\n\t}\n\n\tarches := make([]string, len(o.Architectures))\n\tfor i, arch := range o.Architectures {\n\t\tarches[i] = string(arch)\n\t}\n\n\tflags := make([]string, len(o.Flags))\n\tfor i, flag := range o.Flags {\n\t\tflags[i] = string(flag)\n\t}\n\n\treturn &LinuxSeccomp{\n\t\tDefaultAction:    string(o.DefaultAction),\n\t\tDefaultErrno:     errno,\n\t\tArchitectures:    arches,\n\t\tFlags:            flags,\n\t\tListenerPath:     o.ListenerPath,\n\t\tListenerMetadata: o.ListenerMetadata,\n\t\tSyscalls:         FromOCILinuxSyscalls(o.Syscalls),\n\t}\n}\n\n// FromOCILinuxSyscalls converts seccomp syscalls configuration from an OCI runtime spec.\nfunc FromOCILinuxSyscalls(o []rspec.LinuxSyscall) []*LinuxSyscall {\n\tsyscalls := make([]*LinuxSyscall, len(o))\n\n\tfor i, syscall := range o {\n\t\tvar errno *OptionalUInt32\n\t\tif syscall.ErrnoRet != nil {\n\t\t\terrno = &OptionalUInt32{Value: uint32(*syscall.ErrnoRet)}\n\t\t}\n\n\t\tsyscalls[i] = &LinuxSyscall{\n\t\t\tNames:    syscall.Names,\n\t\t\tAction:   string(syscall.Action),\n\t\t\tErrnoRet: errno,\n\t\t\tArgs:     FromOCILinuxSeccompArgs(syscall.Args),\n\t\t}\n\t}\n\n\treturn syscalls\n}\n\n// FromOCILinuxSeccompArgs converts seccomp syscall args from an OCI runtime spec.\nfunc FromOCILinuxSeccompArgs(o []rspec.LinuxSeccompArg) []*LinuxSeccompArg {\n\targs := make([]*LinuxSeccompArg, len(o))\n\n\tfor i, arg := range o {\n\t\targs[i] = &LinuxSeccompArg{\n\t\t\tIndex:    uint32(arg.Index),\n\t\t\tValue:    arg.Value,\n\t\t\tValueTwo: arg.ValueTwo,\n\t\t\tOp:       string(arg.Op),\n\t\t}\n\t}\n\n\treturn args\n}\n\n// ToOCILinuxSyscalls converts seccomp syscalls configuration to an OCI runtime spec.\nfunc ToOCILinuxSyscalls(o []*LinuxSyscall) []rspec.LinuxSyscall {\n\tsyscalls := make([]rspec.LinuxSyscall, len(o))\n\n\tfor i, syscall := range o {\n\t\tvar errnoRet *uint\n\n\t\tif syscall.ErrnoRet != nil {\n\t\t\t*errnoRet = uint(syscall.ErrnoRet.Value)\n\t\t}\n\n\t\tsyscalls[i] = rspec.LinuxSyscall{\n\t\t\tNames:    syscall.Names,\n\t\t\tAction:   rspec.LinuxSeccompAction(syscall.Action),\n\t\t\tErrnoRet: errnoRet,\n\t\t\tArgs:     ToOCILinuxSeccompArgs(syscall.Args),\n\t\t}\n\t}\n\n\treturn syscalls\n}\n\n// ToOCILinuxSeccompArgs converts seccomp syscall args to an OCI runtime spec.\nfunc ToOCILinuxSeccompArgs(o []*LinuxSeccompArg) []rspec.LinuxSeccompArg {\n\targs := make([]rspec.LinuxSeccompArg, len(o))\n\n\tfor i, arg := range o {\n\t\targs[i] = rspec.LinuxSeccompArg{\n\t\t\tIndex:    uint(arg.Index),\n\t\t\tValue:    arg.Value,\n\t\t\tValueTwo: arg.ValueTwo,\n\t\t\tOp:       rspec.LinuxSeccompOperator(arg.Op),\n\t\t}\n\t}\n\n\treturn args\n}\n"
  },
  {
    "path": "vendor/github.com/containerd/nri/pkg/api/strip.go",
    "content": "/*\n   Copyright The containerd Authors.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\npackage api\n\n//\n// Notes:\n//   These stripping functions are used in tests to compare values for\n//   semantic equality using go-cmp. They reduce their receiver to a\n//   unique canonical representation by replacing empty slices, maps,\n//   and struct type fields by nil. These are destructive (IOW might\n//   alter the receiver) and should only be used for testing.\n//\n//   TODO(klihub):\n//     Starting with 1.36.6, we could use protobuf/proto.CloneOf() to\n//     create a deep copy before stripping. However, we can't update\n//     beyond 1.35.2 yet, before all supported release branches of our\n//     downstream dependencies have bumped their direct dependencies.\n\n// Strip empty fields from a container adjustment, reducing a fully empty\n// one to nil. Strip allows comparison of two adjustments for semantic\n// equality using go-cmp.\nfunc (a *ContainerAdjustment) Strip() *ContainerAdjustment {\n\tif a == nil {\n\t\treturn nil\n\t}\n\n\tempty := true\n\n\tif len(a.Annotations) == 0 {\n\t\ta.Annotations = nil\n\t} else {\n\t\tempty = false\n\t}\n\tif len(a.Mounts) == 0 {\n\t\ta.Mounts = nil\n\t} else {\n\t\tempty = false\n\t}\n\tif len(a.Env) == 0 {\n\t\ta.Env = nil\n\t} else {\n\t\tempty = false\n\t}\n\tif len(a.Rlimits) == 0 {\n\t\ta.Rlimits = nil\n\t} else {\n\t\tempty = false\n\t}\n\tif len(a.CDIDevices) == 0 {\n\t\ta.CDIDevices = nil\n\t} else {\n\t\tempty = false\n\t}\n\tif len(a.Args) == 0 {\n\t\ta.Args = nil\n\t} else {\n\t\tempty = false\n\t}\n\n\tif a.Hooks = a.Hooks.Strip(); a.Hooks != nil {\n\t\tempty = false\n\t}\n\tif a.Linux = a.Linux.Strip(); a.Linux != nil {\n\t\tempty = false\n\t}\n\n\tif empty {\n\t\treturn nil\n\t}\n\n\treturn a\n}\n\n// Strip empty fields from a linux container adjustment, reducing a fully\n// empty one to nil. Strip allows comparison of two adjustments for semantic\n// equality using go-cmp.\nfunc (l *LinuxContainerAdjustment) Strip() *LinuxContainerAdjustment {\n\tif l == nil {\n\t\treturn nil\n\t}\n\n\tempty := true\n\n\tif len(l.Devices) == 0 {\n\t\tl.Devices = nil\n\t} else {\n\t\tempty = false\n\t}\n\n\tif l.Resources = l.Resources.Strip(); l.Resources != nil {\n\t\tempty = false\n\t}\n\n\tif l.CgroupsPath != \"\" {\n\t\tempty = false\n\t}\n\tif l.OomScoreAdj != nil {\n\t\tempty = false\n\t}\n\n\tif l.Rdt = l.Rdt.Strip(); l.Rdt != nil {\n\t\tempty = false\n\t}\n\n\tif empty {\n\t\treturn nil\n\t}\n\n\treturn l\n}\n\n// Strip empty fields from Hooks, reducing a fully empty one to nil. Strip\n// allows comparison of two Hooks for semantic equality using go-cmp.\nfunc (h *Hooks) Strip() *Hooks {\n\tif h == nil {\n\t\treturn nil\n\t}\n\n\tempty := true\n\n\tif len(h.Prestart) == 0 {\n\t\th.Prestart = nil\n\t} else {\n\t\tempty = false\n\t}\n\tif len(h.CreateRuntime) == 0 {\n\t\th.CreateRuntime = nil\n\t} else {\n\t\tempty = false\n\t}\n\tif len(h.CreateContainer) == 0 {\n\t\th.CreateContainer = nil\n\t} else {\n\t\tempty = false\n\t}\n\tif len(h.StartContainer) == 0 {\n\t\th.StartContainer = nil\n\t} else {\n\t\tempty = false\n\t}\n\tif len(h.Poststart) == 0 {\n\t\th.Poststart = nil\n\t} else {\n\t\tempty = false\n\t}\n\tif len(h.Poststop) == 0 {\n\t\th.Poststop = nil\n\t} else {\n\t\tempty = false\n\t}\n\n\tif empty {\n\t\treturn nil\n\t}\n\n\treturn h\n}\n\n// Strip empty fields from a linux resources, reducing a fully empty one\n// to nil. Strip allows comparison of two sets of resources for semantic\n// equality using go-cmp.\nfunc (r *LinuxResources) Strip() *LinuxResources {\n\tif r == nil {\n\t\treturn nil\n\t}\n\n\tempty := true\n\n\tif r.Memory = r.Memory.Strip(); r.Memory != nil {\n\t\tempty = false\n\t}\n\tif r.Cpu = r.Cpu.Strip(); r.Cpu != nil {\n\t\tempty = false\n\t}\n\tif len(r.HugepageLimits) == 0 {\n\t\tr.HugepageLimits = nil\n\t} else {\n\t\tempty = false\n\t}\n\n\tif r.BlockioClass != nil {\n\t\tempty = false\n\t}\n\tif r.RdtClass != nil {\n\t\tempty = false\n\t}\n\tif len(r.Unified) == 0 {\n\t\tr.Unified = nil\n\t} else {\n\t\tempty = false\n\t}\n\tif len(r.Devices) == 0 {\n\t\tr.Devices = nil\n\t} else {\n\t\tempty = false\n\t}\n\tif r.Pids != nil {\n\t\tempty = false\n\t}\n\n\tif empty {\n\t\treturn nil\n\t}\n\n\treturn r\n}\n\n// Strip empty fields from linux CPU attributes, reducing a fully empty one\n// to nil. Strip allows comparison of two sets of attributes for semantic\n// equality using go-cmp.\nfunc (c *LinuxCPU) Strip() *LinuxCPU {\n\tif c == nil {\n\t\treturn nil\n\t}\n\n\tempty := true //nolint:staticcheck // could merge conditional assignment below to variable definition\n\n\tif c.Shares != nil {\n\t\tempty = false\n\t}\n\tif c.Quota != nil {\n\t\tempty = false\n\t}\n\tif c.Period != nil {\n\t\tempty = false\n\t}\n\tif c.RealtimeRuntime != nil {\n\t\tempty = false\n\t}\n\tif c.RealtimePeriod != nil {\n\t\tempty = false\n\t}\n\tif c.Cpus != \"\" {\n\t\tempty = false\n\t}\n\tif c.Mems != \"\" {\n\t\tempty = false\n\t}\n\n\tif empty {\n\t\treturn nil\n\t}\n\n\treturn c\n}\n\n// Strip empty fields from linux memory attributes, reducing a fully empty\n// one to nil. Strip allows comparison of two sets of attributes for semantic\n// equality using go-cmp.\nfunc (m *LinuxMemory) Strip() *LinuxMemory {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tempty := true //nolint:staticcheck // could merge conditional assignment below to variable definition\n\n\tif m.Limit != nil {\n\t\tempty = false\n\t}\n\tif m.Reservation != nil {\n\t\tempty = false\n\t}\n\tif m.Swap != nil {\n\t\tempty = false\n\t}\n\tif m.Kernel != nil {\n\t\tempty = false\n\t}\n\tif m.KernelTcp != nil {\n\t\tempty = false\n\t}\n\tif m.Swappiness != nil {\n\t\tempty = false\n\t}\n\tif m.DisableOomKiller != nil {\n\t\tempty = false\n\t}\n\tif m.UseHierarchy != nil {\n\t\tempty = false\n\t}\n\n\tif empty {\n\t\treturn nil\n\t}\n\n\treturn m\n}\n\n// Strip empty fields from a linux RDT configuration, reducing a fully empty one\n// to nil. Strip allows comparison of two sets of resources for semantic\n// equality using go-cmp.\nfunc (r *LinuxRdt) Strip() *LinuxRdt {\n\tif r == nil {\n\t\treturn nil\n\t}\n\n\tswitch {\n\tcase r.ClosId != nil, r.Schemata != nil, r.EnableMonitoring != nil:\n\t\t// non-empty\n\t\treturn r\n\t}\n\n\treturn nil\n}\n\n// Strip empty fields from a container update, reducing a fully empty one\n// to nil. Strip allows comparison of two updates for semantic equality\n// using go-cmp.\nfunc (u *ContainerUpdate) Strip() *ContainerUpdate {\n\tif u == nil {\n\t\treturn nil\n\t}\n\n\tempty := true\n\n\tif u.Linux = u.Linux.Strip(); u.Linux != nil {\n\t\tempty = false\n\t}\n\n\tif u.IgnoreFailure {\n\t\tempty = false\n\t}\n\n\tif empty {\n\t\treturn nil\n\t}\n\n\treturn u\n}\n\n// Strip empty fields from a linux container update, reducing a fully empty\n// one to nil. Strip allows comparison of two updates for semantic equality\n// using go-cmp.\nfunc (l *LinuxContainerUpdate) Strip() *LinuxContainerUpdate {\n\tif l == nil {\n\t\treturn nil\n\t}\n\n\tempty := true\n\n\tif l.Resources = l.Resources.Strip(); l.Resources != nil {\n\t\tempty = false\n\t}\n\n\tif empty {\n\t\treturn nil\n\t}\n\n\treturn l\n}\n"
  },
  {
    "path": "vendor/github.com/containerd/nri/pkg/api/timeouts.go",
    "content": "/*\n   Copyright The containerd Authors.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\npackage api\n\nimport (\n\t\"time\"\n)\n\nconst (\n\t// DefaultPluginRegistrationTimeout is the default timeout for plugin registration.\n\tDefaultPluginRegistrationTimeout = 5 * time.Second\n\t// DefaultPluginRequestTimeout is the default timeout for plugins to handle a request.\n\tDefaultPluginRequestTimeout = 2 * time.Second\n)\n"
  },
  {
    "path": "vendor/github.com/containerd/nri/pkg/api/update.go",
    "content": "/*\n   Copyright The containerd Authors.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\npackage api\n\n// SetContainerId sets the id of the container to update.\n//\n//nolint:revive\nfunc (u *ContainerUpdate) SetContainerId(id string) {\n\tu.ContainerId = id\n}\n\n// SetLinuxMemoryLimit records setting the memory limit for a container.\nfunc (u *ContainerUpdate) SetLinuxMemoryLimit(value int64) {\n\tu.initLinuxResourcesMemory()\n\tu.Linux.Resources.Memory.Limit = Int64(value)\n}\n\n// SetLinuxMemoryReservation records setting the memory reservation for a container.\nfunc (u *ContainerUpdate) SetLinuxMemoryReservation(value int64) {\n\tu.initLinuxResourcesMemory()\n\tu.Linux.Resources.Memory.Reservation = Int64(value)\n}\n\n// SetLinuxMemorySwap records records setting the memory swap limit for a container.\nfunc (u *ContainerUpdate) SetLinuxMemorySwap(value int64) {\n\tu.initLinuxResourcesMemory()\n\tu.Linux.Resources.Memory.Swap = Int64(value)\n}\n\n// SetLinuxMemoryKernel records setting the memory kernel limit for a container.\nfunc (u *ContainerUpdate) SetLinuxMemoryKernel(value int64) {\n\tu.initLinuxResourcesMemory()\n\tu.Linux.Resources.Memory.Kernel = Int64(value)\n}\n\n// SetLinuxMemoryKernelTCP records setting the memory kernel TCP limit for a container.\nfunc (u *ContainerUpdate) SetLinuxMemoryKernelTCP(value int64) {\n\tu.initLinuxResourcesMemory()\n\tu.Linux.Resources.Memory.KernelTcp = Int64(value)\n}\n\n// SetLinuxMemorySwappiness records setting the memory swappiness for a container.\nfunc (u *ContainerUpdate) SetLinuxMemorySwappiness(value uint64) {\n\tu.initLinuxResourcesMemory()\n\tu.Linux.Resources.Memory.Swappiness = UInt64(value)\n}\n\n// SetLinuxMemoryDisableOomKiller records disabling the OOM killer for a container.\nfunc (u *ContainerUpdate) SetLinuxMemoryDisableOomKiller() {\n\tu.initLinuxResourcesMemory()\n\tu.Linux.Resources.Memory.DisableOomKiller = Bool(true)\n}\n\n// SetLinuxMemoryUseHierarchy records enabling hierarchical memory accounting for a container.\nfunc (u *ContainerUpdate) SetLinuxMemoryUseHierarchy() {\n\tu.initLinuxResourcesMemory()\n\tu.Linux.Resources.Memory.UseHierarchy = Bool(true)\n}\n\n// SetLinuxCPUShares records setting the scheduler's CPU shares for a container.\nfunc (u *ContainerUpdate) SetLinuxCPUShares(value uint64) {\n\tu.initLinuxResourcesCPU()\n\tu.Linux.Resources.Cpu.Shares = UInt64(value)\n}\n\n// SetLinuxCPUQuota records setting the scheduler's CPU quota for a container.\nfunc (u *ContainerUpdate) SetLinuxCPUQuota(value int64) {\n\tu.initLinuxResourcesCPU()\n\tu.Linux.Resources.Cpu.Quota = Int64(value)\n}\n\n// SetLinuxCPUPeriod records setting the scheduler's CPU period for a container.\nfunc (u *ContainerUpdate) SetLinuxCPUPeriod(value int64) {\n\tu.initLinuxResourcesCPU()\n\tu.Linux.Resources.Cpu.Period = UInt64(value)\n}\n\n// SetLinuxCPURealtimeRuntime records setting the scheduler's realtime runtime for a container.\nfunc (u *ContainerUpdate) SetLinuxCPURealtimeRuntime(value int64) {\n\tu.initLinuxResourcesCPU()\n\tu.Linux.Resources.Cpu.RealtimeRuntime = Int64(value)\n}\n\n// SetLinuxCPURealtimePeriod records setting the scheduler's realtime period for a container.\nfunc (u *ContainerUpdate) SetLinuxCPURealtimePeriod(value uint64) {\n\tu.initLinuxResourcesCPU()\n\tu.Linux.Resources.Cpu.RealtimePeriod = UInt64(value)\n}\n\n// SetLinuxCPUSetCPUs records setting the cpuset CPUs for a container.\nfunc (u *ContainerUpdate) SetLinuxCPUSetCPUs(value string) {\n\tu.initLinuxResourcesCPU()\n\tu.Linux.Resources.Cpu.Cpus = value\n}\n\n// SetLinuxCPUSetMems records setting the cpuset memory for a container.\nfunc (u *ContainerUpdate) SetLinuxCPUSetMems(value string) {\n\tu.initLinuxResourcesCPU()\n\tu.Linux.Resources.Cpu.Mems = value\n}\n\n// SetLinuxPidLimits records setting the pid max number for a container.\nfunc (u *ContainerUpdate) SetLinuxPidLimits(value int64) {\n\tu.initLinuxResourcesPids()\n\tu.Linux.Resources.Pids.Limit = value\n}\n\n// AddLinuxHugepageLimit records adding a hugepage limit for a container.\nfunc (u *ContainerUpdate) AddLinuxHugepageLimit(pageSize string, value uint64) {\n\tu.initLinuxResources()\n\tu.Linux.Resources.HugepageLimits = append(u.Linux.Resources.HugepageLimits,\n\t\t&HugepageLimit{\n\t\t\tPageSize: pageSize,\n\t\t\tLimit:    value,\n\t\t})\n}\n\n// SetLinuxBlockIOClass records setting the Block I/O class for a container.\nfunc (u *ContainerUpdate) SetLinuxBlockIOClass(value string) {\n\tu.initLinuxResources()\n\tu.Linux.Resources.BlockioClass = String(value)\n}\n\n// SetLinuxRDTClass records setting the RDT class for a container.\nfunc (u *ContainerUpdate) SetLinuxRDTClass(value string) {\n\tu.initLinuxResources()\n\tu.Linux.Resources.RdtClass = String(value)\n}\n\n// AddLinuxUnified sets a cgroupv2 unified resource.\nfunc (u *ContainerUpdate) AddLinuxUnified(key, value string) {\n\tu.initLinuxResourcesUnified()\n\tu.Linux.Resources.Unified[key] = value\n}\n\n// SetIgnoreFailure marks an Update as ignored for failures.\n// Such updates will not prevent the related container operation\n// from succeeding if the update fails.\nfunc (u *ContainerUpdate) SetIgnoreFailure() {\n\tu.IgnoreFailure = true\n}\n\n//\n// Initializing a container update.\n//\n\nfunc (u *ContainerUpdate) initLinux() {\n\tif u.Linux == nil {\n\t\tu.Linux = &LinuxContainerUpdate{}\n\t}\n}\n\nfunc (u *ContainerUpdate) initLinuxResources() {\n\tu.initLinux()\n\tif u.Linux.Resources == nil {\n\t\tu.Linux.Resources = &LinuxResources{}\n\t}\n}\n\nfunc (u *ContainerUpdate) initLinuxResourcesMemory() {\n\tu.initLinuxResources()\n\tif u.Linux.Resources.Memory == nil {\n\t\tu.Linux.Resources.Memory = &LinuxMemory{}\n\t}\n}\n\nfunc (u *ContainerUpdate) initLinuxResourcesCPU() {\n\tu.initLinuxResources()\n\tif u.Linux.Resources.Cpu == nil {\n\t\tu.Linux.Resources.Cpu = &LinuxCPU{}\n\t}\n}\n\nfunc (u *ContainerUpdate) initLinuxResourcesUnified() {\n\tu.initLinuxResources()\n\tif u.Linux.Resources.Unified == nil {\n\t\tu.Linux.Resources.Unified = make(map[string]string)\n\t}\n}\n\nfunc (u *ContainerUpdate) initLinuxResourcesPids() {\n\tu.initLinuxResources()\n\tif u.Linux.Resources.Pids == nil {\n\t\tu.Linux.Resources.Pids = &LinuxPids{}\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/containerd/nri/pkg/api/validate.go",
    "content": "/*\n   Copyright The containerd Authors.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\npackage api\n\nimport (\n\t\"fmt\"\n)\n\n// AddPlugin records a plugin for the validation request.\nfunc (v *ValidateContainerAdjustmentRequest) AddPlugin(name, index string) {\n\tv.Plugins = append(v.Plugins, &PluginInstance{\n\t\tName:  name,\n\t\tIndex: index,\n\t})\n}\n\n// AddResponse records the container adjustments and updates to validate from a CreateContainerResponse.\nfunc (v *ValidateContainerAdjustmentRequest) AddResponse(rpl *CreateContainerResponse) {\n\tv.Adjust = rpl.Adjust\n\tv.Update = rpl.Update\n}\n\n// AddOwners sets the owning plugins for the container adjustment request.\nfunc (v *ValidateContainerAdjustmentRequest) AddOwners(owners *OwningPlugins) {\n\tv.Owners = owners\n}\n\n// ValidationResult returns the validation result as an error (non-nil if rejected).\nfunc (v *ValidateContainerAdjustmentResponse) ValidationResult(plugin string) error {\n\tif !v.Reject {\n\t\treturn nil\n\t}\n\n\treason := v.Reason\n\tif reason == \"\" {\n\t\treason = \"unknown rejection reason\"\n\t}\n\n\treturn fmt.Errorf(\"validator %q rejected container adjustment, reason: %s\", plugin, reason)\n}\n\n// GetPluginMap returns a map of plugin name to PluginInstance.\nfunc (v *ValidateContainerAdjustmentRequest) GetPluginMap() map[string]*PluginInstance {\n\tif v == nil {\n\t\treturn nil\n\t}\n\n\tplugins := make(map[string]*PluginInstance)\n\tfor _, p := range v.Plugins {\n\t\tplugins[p.Name] = &PluginInstance{Name: p.Name}\n\t\tplugins[p.Index+\"-\"+p.Name] = p\n\t}\n\n\treturn plugins\n}\n"
  },
  {
    "path": "vendor/github.com/containerd/nri/pkg/log/log.go",
    "content": "/*\n   Copyright The containerd Authors.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\npackage log\n\nimport (\n\t\"context\"\n\n\t\"github.com/sirupsen/logrus\"\n)\n\nvar (\n\tlog Logger = &fallbackLogger{}\n)\n\n// Logger is the interface NRI uses for logging.\ntype Logger interface {\n\tDebugf(ctx context.Context, format string, args ...interface{})\n\tInfof(ctx context.Context, format string, args ...interface{})\n\tWarnf(ctx context.Context, format string, args ...interface{})\n\tErrorf(ctx context.Context, format string, args ...interface{})\n}\n\n// Set the logger used by NRI.\nfunc Set(l Logger) {\n\tlog = l\n}\n\n// Get the logger used by NRI.\nfunc Get() Logger {\n\treturn log\n}\n\n// Debugf logs a formatted debug message.\nfunc Debugf(ctx context.Context, format string, args ...interface{}) {\n\tlog.Debugf(ctx, format, args...)\n}\n\n// Infof logs a formatted informational message.\nfunc Infof(ctx context.Context, format string, args ...interface{}) {\n\tlog.Infof(ctx, format, args...)\n}\n\n// Warnf logs a formatted warning message.\nfunc Warnf(ctx context.Context, format string, args ...interface{}) {\n\tlog.Warnf(ctx, format, args...)\n}\n\n// Errorf logs a formatted error message.\nfunc Errorf(ctx context.Context, format string, args ...interface{}) {\n\tlog.Errorf(ctx, format, args...)\n}\n\ntype fallbackLogger struct{}\n\n// Debugf logs a formatted debug message.\nfunc (f *fallbackLogger) Debugf(ctx context.Context, format string, args ...interface{}) {\n\tlogrus.WithContext(ctx).Debugf(format, args...)\n}\n\n// Infof logs a formatted informational message.\nfunc (f *fallbackLogger) Infof(ctx context.Context, format string, args ...interface{}) {\n\tlogrus.WithContext(ctx).Infof(format, args...)\n}\n\n// Warnf logs a formatted warning message.\nfunc (f *fallbackLogger) Warnf(ctx context.Context, format string, args ...interface{}) {\n\tlogrus.WithContext(ctx).Warnf(format, args...)\n}\n\n// Errorf logs a formatted error message.\nfunc (f *fallbackLogger) Errorf(ctx context.Context, format string, args ...interface{}) {\n\tlogrus.WithContext(ctx).Errorf(format, args...)\n}\n"
  },
  {
    "path": "vendor/github.com/containerd/nri/pkg/net/conn.go",
    "content": "/*\n   Copyright The containerd Authors.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\npackage net\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net\"\n\t\"os\"\n\t\"strconv\"\n\t\"sync\"\n)\n\n// NewFdConn creates a net.Conn for the given (socket) fd.\nfunc NewFdConn(fd int) (net.Conn, error) {\n\tf := os.NewFile(uintptr(fd), \"fd #\"+strconv.Itoa(fd))\n\n\tconn, err := net.FileConn(f)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to create net.Conn for fd #%d: %w\", fd, err)\n\t}\n\tf.Close()\n\n\treturn conn, nil\n}\n\n// connListener wraps a pre-connected socket in a net.Listener.\ntype connListener struct {\n\tnext   chan net.Conn\n\tconn   net.Conn\n\taddr   net.Addr\n\tlock   sync.RWMutex // for Close()\n\tclosed bool\n}\n\n// NewConnListener wraps an existing net.Conn in a net.Listener.\n//\n// The first call to Accept() on the listener will return the wrapped\n// connection. Subsequent calls to Accept() block until the listener\n// is closed, then return io.EOF. Close() closes the listener and the\n// wrapped connection.\nfunc NewConnListener(conn net.Conn) net.Listener {\n\tnext := make(chan net.Conn, 1)\n\tnext <- conn\n\n\treturn &connListener{\n\t\tnext: next,\n\t\tconn: conn,\n\t\taddr: conn.LocalAddr(),\n\t}\n}\n\n// Accept returns the wrapped connection when it is called the first\n// time. Later calls to Accept block until the listener is closed, then\n// return io.EOF.\nfunc (l *connListener) Accept() (net.Conn, error) {\n\tconn := <-l.next\n\tif conn == nil {\n\t\treturn nil, io.EOF\n\t}\n\treturn conn, nil\n}\n\n// Close closes the listener and the wrapped connection.\nfunc (l *connListener) Close() error {\n\tl.lock.Lock()\n\tdefer l.lock.Unlock()\n\tif l.closed {\n\t\treturn nil\n\t}\n\tclose(l.next)\n\tl.closed = true\n\treturn l.conn.Close()\n}\n\n// Addr returns the local address of the wrapped connection.\nfunc (l *connListener) Addr() net.Addr {\n\treturn l.addr\n}\n"
  },
  {
    "path": "vendor/github.com/containerd/nri/pkg/net/multiplex/mux.go",
    "content": "/*\n   Copyright The containerd Authors.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\npackage multiplex\n\nimport (\n\t\"encoding/binary\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"net\"\n\t\"sync\"\n\t\"syscall\"\n\t\"time\"\n\n\tnrinet \"github.com/containerd/nri/pkg/net\"\n\t\"github.com/containerd/ttrpc\"\n)\n\n// Mux multiplexes several logical connections over a single net.Conn.\n//\n// Connections are identified within a Mux by ConnIDs which are simple\n// 32-bit unsigned integers. Opening a connection returns a net.Conn\n// corrponding to the ConnID. This can then be used to write and read\n// data through the connection with the Mux performing multiplexing\n// and demultiplexing of data.\n//\n// Writing to a connection is fully synchronous. The caller can safely\n// reuse the buffer once the call returns. Reading from a connection\n// returns the oldest demultiplexed buffer for the connection, blocking\n// if the connections incoming queue is empty. If any incoming queue is\n// ever overflown the underlying trunk and all multiplexed connections\n// are closed and an error is recorded. This error is later returned by\n// any subsequent read from any connection. All connections of the Mux\n// have the same fixed incoming queue length which can be configured\n// using the WithReadQueueLength Option during Mux creation.\n//\n// The Mux interface also provides functions that emulate net.Dial and\n// net.Listen for a connection. Usually these can be used for passing\n// multiplexed connections to packages that insist to Dial or Accept\n// themselves for connection establishment.\n//\n// Note that opening a connection is a virtual operation in the sense\n// that it has no effects outside the Mux. It is performed without any\n// signalling or other communication. It merely acquires the net.Conn\n// corresponding to the connection and blindly assumes that the same\n// ConnID is or will be opened at the other end of the Mux.\ntype Mux interface {\n\t// Open the connection for the given ConnID.\n\tOpen(ConnID) (net.Conn, error)\n\n\t// Close the Mux and all connections associated with it.\n\tClose() error\n\n\t// Dialer returns a net.Dial-like function for the connection.\n\t//\n\t// Calling the returned function (with arguments) will return a\n\t// net.Conn for the connection.\n\tDialer(ConnID) func(string, string) (net.Conn, error)\n\n\t// Listener returns a net.Listener for the connection. The first\n\t// call to Accept() on the listener will return a net.Conn for the\n\t// connection. Subsequent calls to Accept() will block until the\n\t// connection is closed then return io.EOF.\n\tListen(ConnID) (net.Listener, error)\n\n\t// Trunk returns the trunk connection for the Mux.\n\tTrunk() net.Conn\n\n\t// Unblock unblocks the Mux reader.\n\tUnblock()\n}\n\n// ConnID uniquely identifies a logical connection within a Mux.\ntype ConnID uint32\n\nconst (\n\t// ConnID 0 is reserved for future use.\n\treservedConnID ConnID = iota\n\t// LowestConnID is the lowest externally usable ConnID.\n\tLowestConnID\n)\n\n// Option to apply to a Mux.\ntype Option func(*mux)\n\n// WithBlockedRead causes the Mux to be blocked for reading until gets Unblock()'ed.\nfunc WithBlockedRead() Option {\n\treturn func(m *mux) {\n\t\tif m.blockC == nil {\n\t\t\tm.blockC = make(chan struct{})\n\t\t}\n\t}\n}\n\n// WithReadQueueLength overrides the default read queue size.\nfunc WithReadQueueLength(length int) Option {\n\treturn func(m *mux) {\n\t\tm.qlen = length\n\t}\n}\n\n// Multiplex returns a multiplexer for the given connection.\nfunc Multiplex(trunk net.Conn, options ...Option) Mux {\n\treturn newMux(trunk, options...)\n}\n\n// mux is our implementation of Mux.\ntype mux struct {\n\ttrunk     net.Conn\n\twriteLock sync.Mutex\n\tconns     map[ConnID]*conn\n\tconnLock  sync.RWMutex\n\tqlen      int\n\terrOnce   sync.Once\n\terr       error\n\tunblkOnce sync.Once\n\tblockC    chan struct{}\n\tcloseOnce sync.Once\n\tdoneC     chan struct{}\n}\n\nconst (\n\t// default read queue length for a single connection\n\treadQueueLen = 256\n\t// length of frame header: 4-byte ConnID, 4-byte payload length\n\theaderLen = 8\n\t// max. allowed payload size\n\tmaxPayloadSize = ttrpcMessageHeaderLength + ttrpcMessageLengthMax\n)\n\n// conn represents a single multiplexed connection.\ntype conn struct {\n\tid        ConnID\n\tmux       *mux\n\treadC     chan []byte\n\tcloseOnce sync.Once\n\tdoneC     chan error\n}\n\nfunc newMux(trunk net.Conn, options ...Option) *mux {\n\tm := &mux{\n\t\ttrunk: trunk,\n\t\tconns: make(map[ConnID]*conn),\n\t\tqlen:  readQueueLen,\n\t\tdoneC: make(chan struct{}),\n\t}\n\n\tfor _, o := range options {\n\t\to(m)\n\t}\n\n\tif m.blockC == nil {\n\t\tWithBlockedRead()(m)\n\t\tm.Unblock()\n\t}\n\n\tgo m.reader()\n\n\treturn m\n}\n\nfunc (m *mux) Trunk() net.Conn {\n\treturn m.trunk\n}\n\nfunc (m *mux) Unblock() {\n\tm.unblkOnce.Do(func() {\n\t\tclose(m.blockC)\n\t})\n}\n\nfunc (m *mux) Open(id ConnID) (net.Conn, error) {\n\tif id == reservedConnID {\n\t\treturn nil, fmt.Errorf(\"ConnID %d is reserved\", id)\n\t}\n\n\tm.connLock.Lock()\n\tdefer m.connLock.Unlock()\n\n\tc, ok := m.conns[id]\n\tif !ok {\n\t\tc = &conn{\n\t\t\tid:    id,\n\t\t\tmux:   m,\n\t\t\tdoneC: make(chan error, 1),\n\t\t\treadC: make(chan []byte, m.qlen),\n\t\t}\n\t\tm.conns[id] = c\n\t}\n\n\treturn c, nil\n}\n\nfunc (m *mux) Close() error {\n\tm.closeOnce.Do(func() {\n\t\tm.connLock.Lock()\n\t\tdefer m.connLock.Unlock()\n\t\tfor _, conn := range m.conns {\n\t\t\tconn.close()\n\t\t}\n\t\tclose(m.doneC)\n\t\tm.trunk.Close()\n\t})\n\n\treturn nil\n}\n\nfunc (m *mux) Dialer(id ConnID) func(string, string) (net.Conn, error) {\n\treturn func(string, string) (net.Conn, error) {\n\t\treturn m.Open(id)\n\t}\n}\n\nfunc (m *mux) Listen(id ConnID) (net.Listener, error) {\n\tconn, err := m.Open(id)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn nrinet.NewConnListener(conn), nil\n}\n\nfunc (m *mux) write(id ConnID, buf []byte) (int, error) {\n\tvar (\n\t\thdr  [headerLen]byte\n\t\tdata = buf[:]\n\t\tsize = len(data)\n\t)\n\n\tm.writeLock.Lock()\n\tdefer m.writeLock.Unlock()\n\n\tfor {\n\t\tif size > maxPayloadSize {\n\t\t\tsize = maxPayloadSize\n\t\t}\n\n\t\tbinary.BigEndian.PutUint32(hdr[0:4], uint32(id))\n\t\tbinary.BigEndian.PutUint32(hdr[4:8], uint32(size))\n\n\t\tn, err := m.trunk.Write(hdr[:])\n\t\tif err != nil {\n\t\t\terr = fmt.Errorf(\"failed to write header to trunk: %w\", err)\n\t\t\tif n != 0 {\n\t\t\t\tm.setError(err)\n\t\t\t\tm.Close()\n\t\t\t}\n\t\t\treturn 0, err\n\t\t}\n\n\t\tn, err = m.trunk.Write(data[:size])\n\t\tif err != nil {\n\t\t\terr = fmt.Errorf(\"failed to write payload to trunk: %w\", err)\n\t\t\tif n != 0 {\n\t\t\t\tm.setError(err)\n\t\t\t\tm.Close()\n\t\t\t}\n\t\t\treturn 0, err\n\t\t}\n\n\t\tdata = data[size:]\n\t\tif size > len(data) {\n\t\t\tsize = len(data)\n\t\t}\n\n\t\tif size == 0 {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn len(buf), nil\n}\n\nfunc (m *mux) reader() {\n\tvar (\n\t\thdr [headerLen]byte\n\t\tcid uint32\n\t\tcnt uint32\n\t\tbuf []byte\n\t\terr error\n\t)\n\n\t<-m.blockC\n\n\tfor {\n\t\tselect {\n\t\tcase <-m.doneC:\n\t\t\treturn\n\t\tdefault:\n\t\t}\n\n\t\t_, err = io.ReadFull(m.trunk, hdr[:])\n\t\tif err != nil {\n\t\t\tswitch {\n\t\t\tcase errors.Is(err, io.EOF):\n\t\t\tcase errors.Is(err, ttrpc.ErrClosed):\n\t\t\t\terr = io.EOF\n\t\t\tcase errors.Is(err, ttrpc.ErrServerClosed):\n\t\t\t\terr = io.EOF\n\t\t\tcase errors.Is(err, net.ErrClosed):\n\t\t\t\terr = io.EOF\n\t\t\tdefault:\n\t\t\t\terr = fmt.Errorf(\"failed to read header from trunk: %w\", err)\n\t\t\t}\n\t\t\tm.setError(err)\n\t\t\tm.Close()\n\t\t\treturn\n\t\t}\n\n\t\tcid = binary.BigEndian.Uint32(hdr[0:4])\n\t\tcnt = binary.BigEndian.Uint32(hdr[4:8])\n\t\tbuf = make([]byte, int(cnt))\n\n\t\t_, err = io.ReadFull(m.trunk, buf)\n\t\tif err != nil {\n\t\t\tswitch {\n\t\t\tcase errors.Is(err, io.EOF):\n\t\t\tcase errors.Is(err, ttrpc.ErrClosed):\n\t\t\t\terr = io.EOF\n\t\t\tcase errors.Is(err, ttrpc.ErrServerClosed):\n\t\t\t\terr = io.EOF\n\t\t\tcase errors.Is(err, net.ErrClosed):\n\t\t\t\terr = io.EOF\n\t\t\tdefault:\n\t\t\t\terr = fmt.Errorf(\"failed to read payload from trunk: %w\", err)\n\t\t\t}\n\t\t\tm.setError(err)\n\t\t\tm.Close()\n\t\t\treturn\n\t\t}\n\n\t\tm.connLock.RLock()\n\t\tconn, ok := m.conns[ConnID(cid)]\n\t\tm.connLock.RUnlock()\n\t\tif ok {\n\t\t\tselect {\n\t\t\tcase conn.readC <- buf:\n\t\t\tdefault:\n\t\t\t\tm.setError(errors.New(\"failed to queue payload for reading\"))\n\t\t\t\tm.Close()\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc (m *mux) setError(err error) {\n\tm.errOnce.Do(func() {\n\t\tm.err = err\n\t})\n}\n\nfunc (m *mux) error() error {\n\tm.errOnce.Do(func() {\n\t\tif m.err == nil {\n\t\t\tm.err = io.EOF\n\t\t}\n\t})\n\treturn m.err\n}\n\n//\n// multiplexed connections\n//\n\n// Reads reads the next message from the multiplexed connection.\nfunc (c *conn) Read(buf []byte) (int, error) {\n\tvar (\n\t\tmsg []byte\n\t\terr error\n\t\tok  bool\n\t)\n\n\tselect {\n\tcase err, ok = <-c.doneC:\n\t\tif !ok || err == nil {\n\t\t\terr = c.mux.error()\n\t\t}\n\t\treturn 0, err\n\tcase msg, ok = <-c.readC:\n\t\tif !ok {\n\t\t\treturn 0, c.mux.error()\n\t\t}\n\t\tif cap(buf) < len(msg) {\n\t\t\treturn 0, syscall.ENOMEM\n\t\t}\n\t}\n\n\tcopy(buf, msg)\n\treturn len(msg), nil\n}\n\n// Write writes the given data to the multiplexed connection.\nfunc (c *conn) Write(b []byte) (int, error) {\n\tselect {\n\tcase err := <-c.doneC:\n\t\tif err == nil {\n\t\t\terr = io.EOF\n\t\t}\n\t\treturn 0, err\n\tdefault:\n\t}\n\treturn c.mux.write(c.id, b)\n}\n\n// Close closes the multiplexed connection.\nfunc (c *conn) Close() error {\n\tc.mux.connLock.Lock()\n\tdefer c.mux.connLock.Unlock()\n\tif c.mux.conns[c.id] == c {\n\t\tdelete(c.mux.conns, c.id)\n\t}\n\treturn c.close()\n}\n\nfunc (c *conn) close() error {\n\tc.closeOnce.Do(func() {\n\t\tclose(c.doneC)\n\t})\n\treturn nil\n}\n\n// LocalAddr is the unimplemented stub for the corresponding net.Conn function.\nfunc (c *conn) LocalAddr() net.Addr {\n\treturn nil\n}\n\n// RemoteAddr is the unimplemented stub for the corresponding net.Conn function.\nfunc (c *conn) RemoteAddr() net.Addr {\n\treturn nil\n}\n\n// SetDeadline is the unimplemented stub for the corresponding net.Conn function.\nfunc (c *conn) SetDeadline(_ time.Time) error {\n\treturn nil\n}\n\n// SetReadDeadline is the unimplemented stub for the corresponding net.Conn function.\nfunc (c *conn) SetReadDeadline(_ time.Time) error {\n\treturn nil\n}\n\n// SetWriteDeadline is the unimplemented stub for the corresponding net.Conn function.\nfunc (c *conn) SetWriteDeadline(_ time.Time) error {\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/containerd/nri/pkg/net/multiplex/ttrpc.go",
    "content": "/*\n   Copyright The containerd Authors.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\npackage multiplex\n\nconst (\n\t// PluginServiceConn is the mux connection ID for NRI plugin services.\n\tPluginServiceConn ConnID = iota + 1\n\t// RuntimeServiceConn is the mux connection ID for NRI runtime services.\n\tRuntimeServiceConn\n)\n\nconst (\n\tttrpcMessageHeaderLength = 10\n\tttrpcMessageLengthMax    = 4 << 20\n)\n"
  },
  {
    "path": "vendor/github.com/containerd/nri/pkg/net/socketpair.go",
    "content": "/*\n   Copyright The containerd Authors.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\npackage net\n\nimport (\n\t\"fmt\"\n\t\"net\"\n\t\"os\"\n)\n\n// SocketPair contains the os.File of a connected pair of sockets.\ntype SocketPair struct {\n\tlocal, peer *os.File\n}\n\n// NewSocketPair returns a connected pair of sockets.\nfunc NewSocketPair() (SocketPair, error) {\n\tfds, err := newSocketPairCLOEXEC()\n\tif err != nil {\n\t\treturn SocketPair{nil, nil}, fmt.Errorf(\"failed to create socketpair: %w\", err)\n\t}\n\n\tfilename := fmt.Sprintf(\"socketpair-#%d:%d\", fds[0], fds[1])\n\n\treturn SocketPair{\n\t\tos.NewFile(uintptr(fds[0]), filename+\"[0]\"),\n\t\tos.NewFile(uintptr(fds[1]), filename+\"[1]\"),\n\t}, nil\n}\n\n// LocalFile returns the local end of the socketpair as an *os.File.\nfunc (sp SocketPair) LocalFile() *os.File {\n\treturn sp.local\n}\n\n// PeerFile returns the peer end of the socketpair as an *os.File.\nfunc (sp SocketPair) PeerFile() *os.File {\n\treturn sp.peer\n}\n\n// LocalConn returns a net.Conn for the local end of the socketpair.\n// This closes LocalFile().\nfunc (sp SocketPair) LocalConn() (net.Conn, error) {\n\tfile := sp.LocalFile()\n\tdefer file.Close()\n\tconn, err := net.FileConn(file)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to create net.Conn for %s: %w\", file.Name(), err)\n\t}\n\treturn conn, nil\n}\n\n// PeerConn returns a net.Conn for the peer end of the socketpair.\n// This closes PeerFile().\nfunc (sp SocketPair) PeerConn() (net.Conn, error) {\n\tfile := sp.PeerFile()\n\tdefer file.Close()\n\tconn, err := net.FileConn(file)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to create net.Conn for %s: %w\", file.Name(), err)\n\t}\n\treturn conn, nil\n}\n\n// Close closes both ends of the socketpair.\nfunc (sp SocketPair) Close() {\n\tsp.LocalClose()\n\tsp.PeerClose()\n}\n\n// LocalClose closes the local end of the socketpair.\nfunc (sp SocketPair) LocalClose() {\n\tsp.local.Close()\n}\n\n// PeerClose closes the peer end of the socketpair.\nfunc (sp SocketPair) PeerClose() {\n\tsp.peer.Close()\n}\n"
  },
  {
    "path": "vendor/github.com/containerd/nri/pkg/net/socketpair_cloexec_linux.go",
    "content": "//go:build linux\n\n/*\n   Copyright The containerd Authors.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\npackage net\n\nimport (\n\t\"golang.org/x/sys/unix\"\n)\n\nfunc newSocketPairCLOEXEC() ([2]int, error) {\n\treturn unix.Socketpair(unix.AF_UNIX, unix.SOCK_STREAM|unix.SOCK_CLOEXEC, 0)\n}\n"
  },
  {
    "path": "vendor/github.com/containerd/nri/pkg/net/socketpair_cloexec_unix.go",
    "content": "//go:build !linux && !windows\n\n/*\n   Copyright The containerd Authors.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\npackage net\n\nimport (\n\t\"syscall\"\n\n\t\"golang.org/x/sys/unix\"\n)\n\nfunc newSocketPairCLOEXEC() ([2]int, error) {\n\tsyscall.ForkLock.RLock()\n\tdefer syscall.ForkLock.RUnlock()\n\tfds, err := unix.Socketpair(unix.AF_UNIX, unix.SOCK_STREAM, 0)\n\tif err != nil {\n\t\treturn fds, err\n\t}\n\tunix.CloseOnExec(fds[0])\n\tunix.CloseOnExec(fds[1])\n\n\treturn fds, err\n}\n"
  },
  {
    "path": "vendor/github.com/containerd/nri/pkg/net/socketpair_cloexec_windows.go",
    "content": "//go:build windows\n\n/*\n   Copyright The containerd Authors.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\npackage net\n\nimport (\n\t\"errors\"\n\n\tsys \"golang.org/x/sys/windows\"\n)\n\nfunc newSocketPairCLOEXEC() ([2]sys.Handle, error) {\n\t// when implementing do use WSA_FLAG_NO_HANDLE_INHERIT to avoid leaking FDs\n\treturn [2]sys.Handle{sys.InvalidHandle, sys.InvalidHandle}, errors.New(\"newSocketPairCLOEXEC unimplemented for windows\")\n}\n"
  },
  {
    "path": "vendor/github.com/containerd/nri/pkg/plugin/annotations.go",
    "content": "/*\n   Copyright The containerd Authors.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\npackage plugin\n\nimport (\n\t\"github.com/containerd/nri/pkg/api\"\n)\n\nconst (\n\t// AnnotationDomain is the domain used for NRI-specific annotations.\n\tAnnotationDomain = \"noderesource.dev\"\n\n\t// RequiredPluginsAnnotation can be used to annotate pods with a list\n\t// of pod- or container-specific plugins which must process containers\n\t// during creation. If enabled, the default validator checks for this\n\t// and rejects the creation of containers which fail this check.\n\tRequiredPluginsAnnotation = \"required-plugins.\" + AnnotationDomain\n)\n\n// GetEffectiveAnnotation retrieves a custom annotation from a pod which\n// applies to given container. The syntax allows both pod- and container-\n// scoped annotations. Container-scoped annotations take precedence over\n// pod-scoped ones. The key syntax defines the scope of the annotation.\n//   - container-scope: <key>/container.<container-name>\n//   - pod-scope: <key>/pod, or just <key>\nfunc GetEffectiveAnnotation(pod *api.PodSandbox, key, container string) (string, bool) {\n\tannotations := pod.GetAnnotations()\n\tif len(annotations) == 0 {\n\t\treturn \"\", false\n\t}\n\n\tkeys := []string{\n\t\tkey + \"/container.\" + container,\n\t\tkey + \"/pod\",\n\t\tkey,\n\t}\n\n\tfor _, k := range keys {\n\t\tif v, ok := annotations[k]; ok {\n\t\t\treturn v, true\n\t\t}\n\t}\n\n\treturn \"\", false\n}\n"
  },
  {
    "path": "vendor/github.com/containerd/nri/pkg/stub/stub.go",
    "content": "/*\n   Copyright The containerd Authors.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\npackage stub\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\tstdnet \"net\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strconv\"\n\t\"sync\"\n\t\"time\"\n\n\t\"github.com/containerd/nri/pkg/api\"\n\tnrilog \"github.com/containerd/nri/pkg/log\"\n\t\"github.com/containerd/nri/pkg/net\"\n\t\"github.com/containerd/nri/pkg/net/multiplex\"\n\t\"github.com/containerd/ttrpc\"\n)\n\n// Plugin can implement a number of interfaces related to Pod and Container\n// lifecycle events. No any single such interface is mandatory, therefore the\n// Plugin interface itself is empty. Plugins are required to implement at\n// least one of these interfaces and this is verified during stub creation.\n// Trying to create a stub for a plugin violating this requirement will fail\n// with and error.\ntype Plugin interface{}\n\n// ConfigureInterface handles Configure API request.\ntype ConfigureInterface interface {\n\t// Configure the plugin with the given NRI-supplied configuration.\n\t// If a non-zero EventMask is returned, the plugin will be subscribed\n\t// to the corresponding.\n\tConfigure(ctx context.Context, config, runtime, version string) (api.EventMask, error)\n}\n\n// SynchronizeInterface handles Synchronize API requests.\ntype SynchronizeInterface interface {\n\t// Synchronize the state of the plugin with the runtime.\n\t// The plugin can request updates to containers in response.\n\tSynchronize(context.Context, []*api.PodSandbox, []*api.Container) ([]*api.ContainerUpdate, error)\n}\n\n// ShutdownInterface handles a Shutdown API request.\ntype ShutdownInterface interface {\n\t// Shutdown notifies the plugin about the runtime shutting down.\n\tShutdown(context.Context)\n}\n\n// RunPodInterface handles RunPodSandbox API events.\ntype RunPodInterface interface {\n\t// RunPodSandbox relays a RunPodSandbox event to the plugin.\n\tRunPodSandbox(context.Context, *api.PodSandbox) error\n}\n\n// UpdatePodInterface handles UpdatePodSandbox API requests.\ntype UpdatePodInterface interface {\n\t// UpdatePodSandbox relays an UpdatePodSandbox request to the plugin.\n\tUpdatePodSandbox(context.Context, *api.PodSandbox, *api.LinuxResources, *api.LinuxResources) error\n}\n\n// StopPodInterface handles StopPodSandbox API events.\ntype StopPodInterface interface {\n\t// StopPodSandbox relays a StopPodSandbox event to the plugin.\n\tStopPodSandbox(context.Context, *api.PodSandbox) error\n}\n\n// RemovePodInterface handles RemovePodSandbox API events.\ntype RemovePodInterface interface {\n\t// RemovePodSandbox relays a RemovePodSandbox event to the plugin.\n\tRemovePodSandbox(context.Context, *api.PodSandbox) error\n}\n\n// PostUpdatePodInterface handles PostUpdatePodSandbox API events.\ntype PostUpdatePodInterface interface {\n\t// PostUpdatePodSandbox relays a PostUpdatePodSandbox event to the plugin.\n\tPostUpdatePodSandbox(context.Context, *api.PodSandbox) error\n}\n\n// CreateContainerInterface handles CreateContainer API requests.\ntype CreateContainerInterface interface {\n\t// CreateContainer relays a CreateContainer request to the plugin.\n\t// The plugin can request adjustments to the container being created\n\t// and updates to other unstopped containers in response.\n\tCreateContainer(context.Context, *api.PodSandbox, *api.Container) (*api.ContainerAdjustment, []*api.ContainerUpdate, error)\n}\n\n// StartContainerInterface handles StartContainer API requests.\ntype StartContainerInterface interface {\n\t// StartContainer relays a StartContainer event to the plugin.\n\tStartContainer(context.Context, *api.PodSandbox, *api.Container) error\n}\n\n// UpdateContainerInterface handles UpdateContainer API requests.\ntype UpdateContainerInterface interface {\n\t// UpdateContainer relays an UpdateContainer request to the plugin.\n\t// The plugin can request updates both to the container being updated\n\t// (which then supersedes the original update) and to other unstopped\n\t// containers in response.\n\tUpdateContainer(context.Context, *api.PodSandbox, *api.Container, *api.LinuxResources) ([]*api.ContainerUpdate, error)\n}\n\n// StopContainerInterface handles StopContainer API requests.\ntype StopContainerInterface interface {\n\t// StopContainer relays a StopContainer request to the plugin.\n\t// The plugin can request updates to unstopped containers in response.\n\tStopContainer(context.Context, *api.PodSandbox, *api.Container) ([]*api.ContainerUpdate, error)\n}\n\n// RemoveContainerInterface handles RemoveContainer API events.\ntype RemoveContainerInterface interface {\n\t// RemoveContainer relays a RemoveContainer event to the plugin.\n\tRemoveContainer(context.Context, *api.PodSandbox, *api.Container) error\n}\n\n// PostCreateContainerInterface handles PostCreateContainer API events.\ntype PostCreateContainerInterface interface {\n\t// PostCreateContainer relays a PostCreateContainer event to the plugin.\n\tPostCreateContainer(context.Context, *api.PodSandbox, *api.Container) error\n}\n\n// PostStartContainerInterface handles PostStartContainer API events.\ntype PostStartContainerInterface interface {\n\t// PostStartContainer relays a PostStartContainer event to the plugin.\n\tPostStartContainer(context.Context, *api.PodSandbox, *api.Container) error\n}\n\n// PostUpdateContainerInterface handles PostUpdateContainer API events.\ntype PostUpdateContainerInterface interface {\n\t// PostUpdateContainer relays a PostUpdateContainer event to the plugin.\n\tPostUpdateContainer(context.Context, *api.PodSandbox, *api.Container) error\n}\n\n// ValidateContainerAdjustmentInterface handles container adjustment validation.\ntype ValidateContainerAdjustmentInterface interface {\n\t// ValidateContainerAdjustment validates the container adjustment.\n\tValidateContainerAdjustment(context.Context, *api.ValidateContainerAdjustmentRequest) error\n}\n\n// Stub is the interface the stub provides for the plugin implementation.\ntype Stub interface {\n\t// Run starts the plugin then waits for the plugin service to exit, either due to a\n\t// critical error or an explicit call to Stop(). Once Run() returns, the plugin can be\n\t// restarted by calling Run() or Start() again.\n\tRun(context.Context) error\n\t// Start the plugin.\n\tStart(context.Context) error\n\t// Stop the plugin.\n\tStop()\n\t// Wait for the plugin to stop.\n\tWait()\n\n\t// UpdateContainer requests unsolicited updates to containers.\n\tUpdateContainers([]*api.ContainerUpdate) ([]*api.ContainerUpdate, error)\n\n\t// RegistrationTimeout returns the registration timeout for the stub.\n\t// This is the default timeout if the plugin has not been started or\n\t// the timeout received in the Configure request otherwise.\n\tRegistrationTimeout() time.Duration\n\n\t// RequestTimeout returns the request timeout for the stub.\n\t// This is the default timeout if the plugin has not been started or\n\t// the timeout received in the Configure request otherwise.\n\tRequestTimeout() time.Duration\n\n\t// Logger returns the logger used by the stub.\n\tLogger() nrilog.Logger\n}\n\nconst (\n\t// DefaultRegistrationTimeout is the default plugin registration timeout.\n\tDefaultRegistrationTimeout = api.DefaultPluginRegistrationTimeout\n\t// DefaultRequestTimeout is the default plugin request processing timeout.\n\tDefaultRequestTimeout = api.DefaultPluginRequestTimeout\n)\n\nvar (\n\t// Used instead of a nil Context in logging.\n\tnoCtx = context.TODO()\n\n\t// ErrNoService indicates that the stub has no runtime service/connection,\n\t// for instance by UpdateContainers on a stub which has not been started.\n\tErrNoService = errors.New(\"stub: no service/connection\")\n)\n\n// EventMask holds a mask of events for plugin subscription.\ntype EventMask = api.EventMask\n\n// Option to apply to a plugin during its creation.\ntype Option func(*stub) error\n\n// WithOnClose sets a notification function to call if the ttRPC connection goes down.\nfunc WithOnClose(onClose func()) Option {\n\treturn func(s *stub) error {\n\t\ts.onClose = onClose\n\t\treturn nil\n\t}\n}\n\n// WithPluginName sets the name to use in plugin registration.\nfunc WithPluginName(name string) Option {\n\treturn func(s *stub) error {\n\t\tif s.name != \"\" {\n\t\t\treturn fmt.Errorf(\"plugin name already set (%q)\", s.name)\n\t\t}\n\t\ts.name = name\n\t\treturn nil\n\t}\n}\n\n// WithPluginIdx sets the index to use in plugin registration.\nfunc WithPluginIdx(idx string) Option {\n\treturn func(s *stub) error {\n\t\tif s.idx != \"\" {\n\t\t\treturn fmt.Errorf(\"plugin ID already set (%q)\", s.idx)\n\t\t}\n\t\ts.idx = idx\n\t\treturn nil\n\t}\n}\n\n// WithSocketPath sets the NRI socket path to connect to.\nfunc WithSocketPath(path string) Option {\n\treturn func(s *stub) error {\n\t\ts.socketPath = path\n\t\treturn nil\n\t}\n}\n\n// WithConnection sets an existing NRI connection to use.\nfunc WithConnection(conn stdnet.Conn) Option {\n\treturn func(s *stub) error {\n\t\ts.conn = conn\n\t\treturn nil\n\t}\n}\n\n// WithDialer sets the dialer to use.\nfunc WithDialer(d func(string) (stdnet.Conn, error)) Option {\n\treturn func(s *stub) error {\n\t\ts.dialer = d\n\t\treturn nil\n\t}\n}\n\n// WithTTRPCOptions sets extra client and server options to use for ttrpc .\nfunc WithTTRPCOptions(clientOpts []ttrpc.ClientOpts, serverOpts []ttrpc.ServerOpt) Option {\n\treturn func(s *stub) error {\n\t\ts.clientOpts = append(s.clientOpts, clientOpts...)\n\t\ts.serverOpts = append(s.serverOpts, serverOpts...)\n\t\treturn nil\n\t}\n}\n\n// WithLogger sets the logger to be used by the stub.\nfunc WithLogger(logger nrilog.Logger) Option {\n\treturn func(s *stub) error {\n\t\ts.logger = logger\n\t\treturn nil\n\t}\n}\n\n// stub implements Stub.\ntype stub struct {\n\tsync.Mutex\n\tplugin     interface{}\n\thandlers   handlers\n\tevents     api.EventMask\n\tname       string\n\tidx        string\n\tsocketPath string\n\tdialer     func(string) (stdnet.Conn, error)\n\tconn       stdnet.Conn\n\tonClose    func()\n\tserverOpts []ttrpc.ServerOpt\n\tclientOpts []ttrpc.ClientOpts\n\trpcm       multiplex.Mux\n\trpcl       stdnet.Listener\n\trpcs       *ttrpc.Server\n\trpcc       *ttrpc.Client\n\truntime    api.RuntimeService\n\tstarted    bool\n\tdoneC      chan struct{}\n\tsrvErrC    chan error\n\tcfgErrC    chan error\n\tsyncReq    *api.SynchronizeRequest\n\n\tregistrationTimeout time.Duration\n\trequestTimeout      time.Duration\n\tlogger              nrilog.Logger\n}\n\n// Handlers for NRI plugin event and request.\ntype handlers struct {\n\tConfigure                   func(context.Context, string, string, string) (api.EventMask, error)\n\tSynchronize                 func(context.Context, []*api.PodSandbox, []*api.Container) ([]*api.ContainerUpdate, error)\n\tShutdown                    func(context.Context)\n\tRunPodSandbox               func(context.Context, *api.PodSandbox) error\n\tUpdatePodSandbox            func(context.Context, *api.PodSandbox, *api.LinuxResources, *api.LinuxResources) error\n\tStopPodSandbox              func(context.Context, *api.PodSandbox) error\n\tRemovePodSandbox            func(context.Context, *api.PodSandbox) error\n\tPostUpdatePodSandbox        func(context.Context, *api.PodSandbox) error\n\tCreateContainer             func(context.Context, *api.PodSandbox, *api.Container) (*api.ContainerAdjustment, []*api.ContainerUpdate, error)\n\tStartContainer              func(context.Context, *api.PodSandbox, *api.Container) error\n\tUpdateContainer             func(context.Context, *api.PodSandbox, *api.Container, *api.LinuxResources) ([]*api.ContainerUpdate, error)\n\tStopContainer               func(context.Context, *api.PodSandbox, *api.Container) ([]*api.ContainerUpdate, error)\n\tRemoveContainer             func(context.Context, *api.PodSandbox, *api.Container) error\n\tPostCreateContainer         func(context.Context, *api.PodSandbox, *api.Container) error\n\tPostStartContainer          func(context.Context, *api.PodSandbox, *api.Container) error\n\tPostUpdateContainer         func(context.Context, *api.PodSandbox, *api.Container) error\n\tValidateContainerAdjustment func(context.Context, *api.ValidateContainerAdjustmentRequest) error\n}\n\n// New creates a stub with the given plugin and options.\nfunc New(p interface{}, opts ...Option) (Stub, error) {\n\tstub := &stub{\n\t\tplugin:     p,\n\t\tname:       os.Getenv(api.PluginNameEnvVar),\n\t\tidx:        os.Getenv(api.PluginIdxEnvVar),\n\t\tsocketPath: api.DefaultSocketPath,\n\t\tdialer:     func(p string) (stdnet.Conn, error) { return stdnet.Dial(\"unix\", p) },\n\n\t\tregistrationTimeout: DefaultRegistrationTimeout,\n\t\trequestTimeout:      DefaultRequestTimeout,\n\t\tlogger:              nrilog.Get(),\n\t}\n\n\tfor _, o := range opts {\n\t\tif err := o(stub); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\tif err := stub.setupHandlers(); err != nil {\n\t\treturn nil, err\n\t}\n\n\tif err := stub.ensureIdentity(); err != nil {\n\t\treturn nil, err\n\t}\n\n\tstub.logger.Infof(noCtx, \"Created plugin %s (%s, handles %s)\", stub.Name(),\n\t\tfilepath.Base(os.Args[0]), stub.events.PrettyString())\n\n\treturn stub, nil\n}\n\n// Start event processing, register to NRI and wait for getting configured.\nfunc (stub *stub) Start(ctx context.Context) (retErr error) {\n\tstub.Lock()\n\tdefer stub.Unlock()\n\n\tif stub.isStarted() {\n\t\treturn fmt.Errorf(\"stub already started\")\n\t}\n\tstub.doneC = make(chan struct{})\n\n\terr := stub.connect()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\trpcm := multiplex.Multiplex(stub.conn)\n\tdefer func() {\n\t\tif retErr != nil {\n\t\t\trpcm.Close()\n\t\t\tstub.rpcm = nil\n\t\t}\n\t}()\n\n\trpcl, err := rpcm.Listen(multiplex.PluginServiceConn)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer func() {\n\t\tif retErr != nil {\n\t\t\trpcl.Close()\n\t\t\tstub.rpcl = nil\n\t\t}\n\t}()\n\n\trpcs, err := ttrpc.NewServer(stub.serverOpts...)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to create ttrpc server: %w\", err)\n\t}\n\tdefer func() {\n\t\tif retErr != nil {\n\t\t\trpcs.Close()\n\t\t\tstub.rpcs = nil\n\t\t}\n\t}()\n\n\tapi.RegisterPluginService(rpcs, stub)\n\n\tconn, err := rpcm.Open(multiplex.RuntimeServiceConn)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to multiplex ttrpc client connection: %w\", err)\n\t}\n\n\tclientOpts := []ttrpc.ClientOpts{\n\t\tttrpc.WithOnClose(func() {\n\t\t\tstub.connClosed()\n\t\t}),\n\t}\n\trpcc := ttrpc.NewClient(conn, append(clientOpts, stub.clientOpts...)...)\n\tdefer func() {\n\t\tif retErr != nil {\n\t\t\trpcc.Close()\n\t\t\tstub.rpcc = nil\n\t\t}\n\t}()\n\n\tstub.srvErrC = make(chan error, 1)\n\tstub.cfgErrC = make(chan error, 1)\n\n\tgo func(l stdnet.Listener, doneC chan struct{}, srvErrC chan error) {\n\t\tsrvErrC <- rpcs.Serve(ctx, l)\n\t\tclose(doneC)\n\t}(rpcl, stub.doneC, stub.srvErrC)\n\n\tstub.rpcm = rpcm\n\tstub.rpcl = rpcl\n\tstub.rpcs = rpcs\n\tstub.rpcc = rpcc\n\n\tstub.runtime = api.NewRuntimeClient(rpcc)\n\n\tif err = stub.register(ctx); err != nil {\n\t\tstub.close()\n\t\treturn err\n\t}\n\n\tif err = <-stub.cfgErrC; err != nil {\n\t\treturn err\n\t}\n\n\tstub.logger.Infof(ctx, \"Started plugin %s...\", stub.Name())\n\n\tstub.started = true\n\treturn nil\n}\n\n// Stop the plugin.\nfunc (stub *stub) Stop() {\n\tstub.logger.Infof(noCtx, \"Stopping plugin %s...\", stub.Name())\n\n\tstub.Lock()\n\tdefer stub.Unlock()\n\tstub.close()\n}\n\n// IsStarted returns true if the plugin has been started either by Start() or by Run().\nfunc (stub *stub) IsStarted() bool {\n\tstub.Lock()\n\tdefer stub.Unlock()\n\treturn stub.isStarted()\n}\n\nfunc (stub *stub) isStarted() bool {\n\treturn stub.started\n}\n\n// reset stub to the status that can initiate a new\n// NRI connection, the caller must hold lock.\nfunc (stub *stub) close() {\n\tif !stub.isStarted() {\n\t\treturn\n\t}\n\n\tif stub.rpcl != nil {\n\t\tstub.rpcl.Close()\n\t}\n\tif stub.rpcs != nil {\n\t\tstub.rpcs.Close()\n\t}\n\tif stub.rpcc != nil {\n\t\tstub.rpcc.Close()\n\t}\n\tif stub.rpcm != nil {\n\t\tstub.rpcm.Close()\n\t}\n\tif stub.srvErrC != nil {\n\t\t<-stub.doneC\n\t}\n\n\tstub.started = false\n\tstub.conn = nil\n\tstub.syncReq = nil\n}\n\n// Run the plugin. Start event processing then wait for an error or getting stopped.\nfunc (stub *stub) Run(ctx context.Context) error {\n\tvar err error\n\n\tif err = stub.Start(ctx); err != nil {\n\t\treturn err\n\t}\n\n\terr = <-stub.srvErrC\n\tif err == ttrpc.ErrServerClosed {\n\t\tstub.logger.Infof(noCtx, \"ttrpc server closed %s : %v\", stub.Name(), err)\n\t}\n\n\treturn err\n}\n\n// Wait for the plugin to stop, should be called after Start() or Run().\nfunc (stub *stub) Wait() {\n\tif stub.IsStarted() {\n\t\t<-stub.doneC\n\t}\n}\n\n// Name returns the full indexed name of the plugin.\nfunc (stub *stub) Name() string {\n\treturn stub.idx + \"-\" + stub.name\n}\n\nfunc (stub *stub) Logger() nrilog.Logger {\n\treturn stub.logger\n}\n\nfunc (stub *stub) RegistrationTimeout() time.Duration {\n\treturn stub.registrationTimeout\n}\n\nfunc (stub *stub) RequestTimeout() time.Duration {\n\treturn stub.requestTimeout\n}\n\n// Connect the plugin to NRI.\nfunc (stub *stub) connect() error {\n\tif stub.conn != nil {\n\t\tstub.logger.Infof(noCtx, \"Using given plugin connection...\")\n\t\treturn nil\n\t}\n\n\tif env := os.Getenv(api.PluginSocketEnvVar); env != \"\" {\n\t\tstub.logger.Infof(noCtx, \"Using connection %q from environment...\", env)\n\n\t\tfd, err := strconv.Atoi(env)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"invalid socket in environment (%s=%q): %w\",\n\t\t\t\tapi.PluginSocketEnvVar, env, err)\n\t\t}\n\n\t\tstub.conn, err = net.NewFdConn(fd)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"invalid socket (%d) in environment: %w\", fd, err)\n\t\t}\n\n\t\treturn nil\n\t}\n\n\tconn, err := stub.dialer(stub.socketPath)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to connect to NRI service: %w\", err)\n\t}\n\n\tstub.conn = conn\n\n\treturn nil\n}\n\n// Register the plugin with NRI.\nfunc (stub *stub) register(ctx context.Context) error {\n\tstub.logger.Infof(ctx, \"Registering plugin %s...\", stub.Name())\n\n\tctx, cancel := context.WithTimeout(ctx, stub.registrationTimeout)\n\tdefer cancel()\n\n\treq := &api.RegisterPluginRequest{\n\t\tPluginName: stub.name,\n\t\tPluginIdx:  stub.idx,\n\t}\n\tif _, err := stub.runtime.RegisterPlugin(ctx, req); err != nil {\n\t\treturn fmt.Errorf(\"failed to register with NRI/Runtime: %w\", err)\n\t}\n\n\treturn nil\n}\n\n// Handle a lost connection.\nfunc (stub *stub) connClosed() {\n\tstub.Lock()\n\tstub.close()\n\tstub.Unlock()\n\tif stub.onClose != nil {\n\t\tstub.onClose()\n\t\treturn\n\t}\n}\n\n//\n// plugin event and request handlers\n//\n\n// UpdateContainers requests unsolicited updates to containers.\nfunc (stub *stub) UpdateContainers(update []*api.ContainerUpdate) ([]*api.ContainerUpdate, error) {\n\tif stub.runtime == nil {\n\t\treturn nil, ErrNoService\n\t}\n\n\tctx := context.Background()\n\treq := &api.UpdateContainersRequest{\n\t\tUpdate: update,\n\t}\n\trpl, err := stub.runtime.UpdateContainers(ctx, req)\n\tif rpl != nil {\n\t\treturn rpl.Failed, err\n\t}\n\treturn nil, err\n}\n\n// Configure the plugin.\nfunc (stub *stub) Configure(ctx context.Context, req *api.ConfigureRequest) (rpl *api.ConfigureResponse, retErr error) {\n\tvar (\n\t\tevents api.EventMask\n\t\terr    error\n\t)\n\n\tstub.logger.Infof(ctx, \"Configuring plugin %s for runtime %s/%s...\", stub.Name(),\n\t\treq.RuntimeName, req.RuntimeVersion)\n\n\tstub.registrationTimeout = time.Duration(req.RegistrationTimeout * int64(time.Millisecond))\n\tstub.requestTimeout = time.Duration(req.RequestTimeout * int64(time.Millisecond))\n\n\tdefer func() {\n\t\tstub.cfgErrC <- retErr\n\t}()\n\n\tif handler := stub.handlers.Configure; handler == nil {\n\t\tevents = stub.events\n\t} else {\n\t\tevents, err = handler(ctx, req.Config, req.RuntimeName, req.RuntimeVersion)\n\t\tif err != nil {\n\t\t\tstub.logger.Errorf(ctx, \"Plugin configuration failed: %v\", err)\n\t\t\treturn nil, err\n\t\t}\n\n\t\tif events == 0 {\n\t\t\tevents = stub.events\n\t\t}\n\n\t\t// Only allow plugins to subscribe to events they can handle.\n\t\tif extra := events & ^stub.events; extra != 0 {\n\t\t\tstub.logger.Errorf(ctx, \"Plugin subscribed for unhandled events %s (0x%x)\",\n\t\t\t\textra.PrettyString(), extra)\n\t\t\treturn nil, fmt.Errorf(\"internal error: unhandled events %s (0x%x)\",\n\t\t\t\textra.PrettyString(), extra)\n\t\t}\n\n\t\tstub.logger.Infof(ctx, \"Subscribing plugin %s (%s) for events %s\", stub.Name(),\n\t\t\tfilepath.Base(os.Args[0]), events.PrettyString())\n\t}\n\n\treturn &api.ConfigureResponse{\n\t\tEvents: int32(events),\n\t}, nil\n}\n\n// Synchronize the state of the plugin with the runtime.\nfunc (stub *stub) Synchronize(ctx context.Context, req *api.SynchronizeRequest) (*api.SynchronizeResponse, error) {\n\thandler := stub.handlers.Synchronize\n\tif handler == nil {\n\t\treturn &api.SynchronizeResponse{More: req.More}, nil\n\t}\n\n\tif req.More {\n\t\treturn stub.collectSync(req)\n\t}\n\n\treturn stub.deliverSync(ctx, req)\n}\n\nfunc (stub *stub) collectSync(req *api.SynchronizeRequest) (*api.SynchronizeResponse, error) {\n\tstub.Lock()\n\tdefer stub.Unlock()\n\n\tstub.logger.Debugf(noCtx, \"collecting sync req with %d pods, %d containers...\",\n\t\tlen(req.Pods), len(req.Containers))\n\n\tif stub.syncReq == nil {\n\t\tstub.syncReq = req\n\t} else {\n\t\tstub.syncReq.Pods = append(stub.syncReq.Pods, req.Pods...)\n\t\tstub.syncReq.Containers = append(stub.syncReq.Containers, req.Containers...)\n\t}\n\n\treturn &api.SynchronizeResponse{More: req.More}, nil\n}\n\nfunc (stub *stub) deliverSync(ctx context.Context, req *api.SynchronizeRequest) (*api.SynchronizeResponse, error) {\n\tstub.Lock()\n\tsyncReq := stub.syncReq\n\tstub.syncReq = nil\n\tstub.Unlock()\n\n\tif syncReq == nil {\n\t\tsyncReq = req\n\t} else {\n\t\tsyncReq.Pods = append(syncReq.Pods, req.Pods...)\n\t\tsyncReq.Containers = append(syncReq.Containers, req.Containers...)\n\t}\n\n\tupdate, err := stub.handlers.Synchronize(ctx, syncReq.Pods, syncReq.Containers)\n\treturn &api.SynchronizeResponse{\n\t\tUpdate: update,\n\t\tMore:   false,\n\t}, err\n}\n\n// Shutdown the plugin.\nfunc (stub *stub) Shutdown(ctx context.Context, _ *api.ShutdownRequest) (*api.ShutdownResponse, error) {\n\thandler := stub.handlers.Shutdown\n\tif handler != nil {\n\t\thandler(ctx)\n\t}\n\treturn &api.ShutdownResponse{}, nil\n}\n\n// CreateContainer request handler.\nfunc (stub *stub) CreateContainer(ctx context.Context, req *api.CreateContainerRequest) (*api.CreateContainerResponse, error) {\n\thandler := stub.handlers.CreateContainer\n\tif handler == nil {\n\t\treturn &api.CreateContainerResponse{}, nil\n\t}\n\tadjust, update, err := handler(ctx, req.Pod, req.Container)\n\treturn &api.CreateContainerResponse{\n\t\tAdjust: adjust,\n\t\tUpdate: update,\n\t}, err\n}\n\n// UpdateContainer request handler.\nfunc (stub *stub) UpdateContainer(ctx context.Context, req *api.UpdateContainerRequest) (*api.UpdateContainerResponse, error) {\n\thandler := stub.handlers.UpdateContainer\n\tif handler == nil {\n\t\treturn &api.UpdateContainerResponse{}, nil\n\t}\n\tupdate, err := handler(ctx, req.Pod, req.Container, req.LinuxResources)\n\treturn &api.UpdateContainerResponse{\n\t\tUpdate: update,\n\t}, err\n}\n\n// StopContainer request handler.\nfunc (stub *stub) StopContainer(ctx context.Context, req *api.StopContainerRequest) (*api.StopContainerResponse, error) {\n\thandler := stub.handlers.StopContainer\n\tif handler == nil {\n\t\treturn &api.StopContainerResponse{}, nil\n\t}\n\tupdate, err := handler(ctx, req.Pod, req.Container)\n\treturn &api.StopContainerResponse{\n\t\tUpdate: update,\n\t}, err\n}\n\n// UpdatePodSandbox request handler.\nfunc (stub *stub) UpdatePodSandbox(ctx context.Context, req *api.UpdatePodSandboxRequest) (*api.UpdatePodSandboxResponse, error) {\n\thandler := stub.handlers.UpdatePodSandbox\n\tif handler == nil {\n\t\treturn &api.UpdatePodSandboxResponse{}, nil\n\t}\n\terr := handler(ctx, req.Pod, req.OverheadLinuxResources, req.LinuxResources)\n\treturn &api.UpdatePodSandboxResponse{}, err\n}\n\n// StateChange event handler.\nfunc (stub *stub) StateChange(ctx context.Context, evt *api.StateChangeEvent) (*api.Empty, error) {\n\tvar err error\n\tswitch evt.Event {\n\tcase api.Event_RUN_POD_SANDBOX:\n\t\tif handler := stub.handlers.RunPodSandbox; handler != nil {\n\t\t\terr = handler(ctx, evt.Pod)\n\t\t}\n\tcase api.Event_POST_UPDATE_POD_SANDBOX:\n\t\tif handler := stub.handlers.PostUpdatePodSandbox; handler != nil {\n\t\t\terr = handler(ctx, evt.Pod)\n\t\t}\n\tcase api.Event_STOP_POD_SANDBOX:\n\t\tif handler := stub.handlers.StopPodSandbox; handler != nil {\n\t\t\terr = handler(ctx, evt.Pod)\n\t\t}\n\tcase api.Event_REMOVE_POD_SANDBOX:\n\t\tif handler := stub.handlers.RemovePodSandbox; handler != nil {\n\t\t\terr = handler(ctx, evt.Pod)\n\t\t}\n\tcase api.Event_POST_CREATE_CONTAINER:\n\t\tif handler := stub.handlers.PostCreateContainer; handler != nil {\n\t\t\terr = handler(ctx, evt.Pod, evt.Container)\n\t\t}\n\tcase api.Event_START_CONTAINER:\n\t\tif handler := stub.handlers.StartContainer; handler != nil {\n\t\t\terr = handler(ctx, evt.Pod, evt.Container)\n\t\t}\n\tcase api.Event_POST_START_CONTAINER:\n\t\tif handler := stub.handlers.PostStartContainer; handler != nil {\n\t\t\terr = handler(ctx, evt.Pod, evt.Container)\n\t\t}\n\tcase api.Event_POST_UPDATE_CONTAINER:\n\t\tif handler := stub.handlers.PostUpdateContainer; handler != nil {\n\t\t\terr = handler(ctx, evt.Pod, evt.Container)\n\t\t}\n\tcase api.Event_REMOVE_CONTAINER:\n\t\tif handler := stub.handlers.RemoveContainer; handler != nil {\n\t\t\terr = handler(ctx, evt.Pod, evt.Container)\n\t\t}\n\t}\n\n\treturn &api.StateChangeResponse{}, err\n}\n\nfunc (stub *stub) ValidateContainerAdjustment(ctx context.Context, req *api.ValidateContainerAdjustmentRequest) (*api.ValidateContainerAdjustmentResponse, error) {\n\thandler := stub.handlers.ValidateContainerAdjustment\n\tif handler == nil {\n\t\treturn &api.ValidateContainerAdjustmentResponse{}, nil\n\t}\n\n\tif err := handler(ctx, req); err != nil {\n\t\treturn &api.ValidateContainerAdjustmentResponse{\n\t\t\tReject: true,\n\t\t\tReason: err.Error(),\n\t\t}, nil\n\t}\n\n\treturn &api.ValidateContainerAdjustmentResponse{}, nil\n}\n\n// ensureIdentity sets plugin index and name from the binary if those are unset.\nfunc (stub *stub) ensureIdentity() error {\n\tif stub.idx != \"\" && stub.name != \"\" {\n\t\treturn nil\n\t}\n\n\tif stub.idx != \"\" {\n\t\tstub.name = filepath.Base(os.Args[0])\n\t\treturn nil\n\t}\n\n\tidx, name, err := api.ParsePluginName(filepath.Base(os.Args[0]))\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tstub.name = name\n\tstub.idx = idx\n\n\treturn nil\n}\n\n// Set up event handlers and the subscription mask for the plugin.\nfunc (stub *stub) setupHandlers() error {\n\tif plugin, ok := stub.plugin.(ConfigureInterface); ok {\n\t\tstub.handlers.Configure = plugin.Configure\n\t}\n\tif plugin, ok := stub.plugin.(SynchronizeInterface); ok {\n\t\tstub.handlers.Synchronize = plugin.Synchronize\n\t}\n\tif plugin, ok := stub.plugin.(ShutdownInterface); ok {\n\t\tstub.handlers.Shutdown = plugin.Shutdown\n\t}\n\n\tif plugin, ok := stub.plugin.(RunPodInterface); ok {\n\t\tstub.handlers.RunPodSandbox = plugin.RunPodSandbox\n\t\tstub.events.Set(api.Event_RUN_POD_SANDBOX)\n\t}\n\tif plugin, ok := stub.plugin.(UpdatePodInterface); ok {\n\t\tstub.handlers.UpdatePodSandbox = plugin.UpdatePodSandbox\n\t\tstub.events.Set(api.Event_UPDATE_POD_SANDBOX)\n\t}\n\tif plugin, ok := stub.plugin.(StopPodInterface); ok {\n\t\tstub.handlers.StopPodSandbox = plugin.StopPodSandbox\n\t\tstub.events.Set(api.Event_STOP_POD_SANDBOX)\n\t}\n\tif plugin, ok := stub.plugin.(RemovePodInterface); ok {\n\t\tstub.handlers.RemovePodSandbox = plugin.RemovePodSandbox\n\t\tstub.events.Set(api.Event_REMOVE_POD_SANDBOX)\n\t}\n\tif plugin, ok := stub.plugin.(PostUpdatePodInterface); ok {\n\t\tstub.handlers.PostUpdatePodSandbox = plugin.PostUpdatePodSandbox\n\t\tstub.events.Set(api.Event_POST_UPDATE_POD_SANDBOX)\n\t}\n\tif plugin, ok := stub.plugin.(CreateContainerInterface); ok {\n\t\tstub.handlers.CreateContainer = plugin.CreateContainer\n\t\tstub.events.Set(api.Event_CREATE_CONTAINER)\n\t}\n\tif plugin, ok := stub.plugin.(StartContainerInterface); ok {\n\t\tstub.handlers.StartContainer = plugin.StartContainer\n\t\tstub.events.Set(api.Event_START_CONTAINER)\n\t}\n\tif plugin, ok := stub.plugin.(UpdateContainerInterface); ok {\n\t\tstub.handlers.UpdateContainer = plugin.UpdateContainer\n\t\tstub.events.Set(api.Event_UPDATE_CONTAINER)\n\t}\n\tif plugin, ok := stub.plugin.(StopContainerInterface); ok {\n\t\tstub.handlers.StopContainer = plugin.StopContainer\n\t\tstub.events.Set(api.Event_STOP_CONTAINER)\n\t}\n\tif plugin, ok := stub.plugin.(RemoveContainerInterface); ok {\n\t\tstub.handlers.RemoveContainer = plugin.RemoveContainer\n\t\tstub.events.Set(api.Event_REMOVE_CONTAINER)\n\t}\n\tif plugin, ok := stub.plugin.(PostCreateContainerInterface); ok {\n\t\tstub.handlers.PostCreateContainer = plugin.PostCreateContainer\n\t\tstub.events.Set(api.Event_POST_CREATE_CONTAINER)\n\t}\n\tif plugin, ok := stub.plugin.(PostStartContainerInterface); ok {\n\t\tstub.handlers.PostStartContainer = plugin.PostStartContainer\n\t\tstub.events.Set(api.Event_POST_START_CONTAINER)\n\t}\n\tif plugin, ok := stub.plugin.(PostUpdateContainerInterface); ok {\n\t\tstub.handlers.PostUpdateContainer = plugin.PostUpdateContainer\n\t\tstub.events.Set(api.Event_POST_UPDATE_CONTAINER)\n\t}\n\tif plugin, ok := stub.plugin.(ValidateContainerAdjustmentInterface); ok {\n\t\tstub.handlers.ValidateContainerAdjustment = plugin.ValidateContainerAdjustment\n\t\tstub.events.Set(api.Event_VALIDATE_CONTAINER_ADJUSTMENT)\n\t}\n\n\tif stub.events == 0 {\n\t\treturn fmt.Errorf(\"internal error: plugin %T does not implement any NRI request handlers\",\n\t\t\tstub.plugin)\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/containerd/ttrpc/.gitattributes",
    "content": "*.go text eol=lf\n"
  },
  {
    "path": "vendor/github.com/containerd/ttrpc/.gitignore",
    "content": "# Binaries for programs and plugins\n/bin/\n*.exe\n*.dll\n*.so\n*.dylib\n\n# Test binary, build with `go test -c`\n*.test\n\n# Output of the go coverage tool, specifically when used with LiteIDE\n*.out\ncoverage.txt\n"
  },
  {
    "path": "vendor/github.com/containerd/ttrpc/.golangci.yml",
    "content": "linters:\n  enable:\n    - staticcheck\n    - unconvert\n    - gofmt\n    - goimports\n    - revive\n    - ineffassign\n    - vet\n    - unused\n    - misspell\n  disable:\n    - errcheck\n\nlinters-settings:\n  revive:\n    ignore-generated-headers: true\n    rules:\n      - name: blank-imports\n      - name: context-as-argument\n      - name: context-keys-type\n      - name: dot-imports\n      - name: error-return\n      - name: error-strings\n      - name: error-naming\n      - name: exported\n      - name: if-return\n      - name: increment-decrement\n      - name: var-naming\n        arguments: [[\"UID\", \"GID\"], []]\n      - name: var-declaration\n      - name: package-comments\n      - name: range\n      - name: receiver-naming\n      - name: time-naming\n      - name: unexported-return\n      - name: indent-error-flow\n      - name: errorf\n      - name: empty-block\n      - name: superfluous-else\n      - name: unused-parameter\n      - name: unreachable-code\n      - name: redefines-builtin-id\n\nissues:\n  include:\n    - EXC0002\n\nrun:\n  timeout: 8m\n  skip-dirs:\n    - example\n"
  },
  {
    "path": "vendor/github.com/containerd/ttrpc/LICENSE",
    "content": "                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "vendor/github.com/containerd/ttrpc/Makefile",
    "content": "#   Copyright The containerd Authors.\n\n#   Licensed under the Apache License, Version 2.0 (the \"License\");\n#   you may not use this file except in compliance with the License.\n#   You may obtain a copy of the License at\n\n#       http://www.apache.org/licenses/LICENSE-2.0\n\n#   Unless required by applicable law or agreed to in writing, software\n#   distributed under the License is distributed on an \"AS IS\" BASIS,\n#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n#   See the License for the specific language governing permissions and\n#   limitations under the License.\n\n\n# Go command to use for build\nGO ?= go\nINSTALL ?= install\n\n# Root directory of the project (absolute path).\nROOTDIR=$(dir $(abspath $(lastword $(MAKEFILE_LIST))))\n\nWHALE = \"🇩\"\nONI = \"👹\"\n\n# Project binaries.\nCOMMANDS=protoc-gen-go-ttrpc protoc-gen-gogottrpc\n\nifdef BUILDTAGS\n    GO_BUILDTAGS = ${BUILDTAGS}\nendif\nGO_BUILDTAGS ?=\nGO_TAGS=$(if $(GO_BUILDTAGS),-tags \"$(strip $(GO_BUILDTAGS))\",)\n\n# Project packages.\nPACKAGES=$(shell $(GO) list ${GO_TAGS} ./... | grep -v /example)\nTESTPACKAGES=$(shell $(GO) list ${GO_TAGS} ./... | grep -v /cmd | grep -v /integration | grep -v /example)\nBINPACKAGES=$(addprefix ./cmd/,$(COMMANDS))\n\n#Replaces \":\" (*nix), \";\" (windows) with newline for easy parsing\nGOPATHS=$(shell echo ${GOPATH} | tr \":\" \"\\n\" | tr \";\" \"\\n\")\n\nTESTFLAGS_RACE=\nGO_BUILD_FLAGS=\n# See Golang issue re: '-trimpath': https://github.com/golang/go/issues/13809\nGO_GCFLAGS=$(shell\t\t\t\t\\\n\tset -- ${GOPATHS};\t\t\t\\\n\techo \"-gcflags=-trimpath=$${1}/src\";\t\\\n\t)\n\nBINARIES=$(addprefix bin/,$(COMMANDS))\n\n# Flags passed to `go test`\nTESTFLAGS ?= $(TESTFLAGS_RACE) $(EXTRA_TESTFLAGS)\nTESTFLAGS_PARALLEL ?= 8\n\n# Use this to replace `go test` with, for instance, `gotestsum`\nGOTEST ?= $(GO) test\n\n.PHONY: clean all AUTHORS build binaries test integration generate protos check-protos coverage ci check help install vendor install-protobuf install-protobuild\n.DEFAULT: default\n\n# Forcibly set the default goal to all, in case an include above brought in a rule definition.\n.DEFAULT_GOAL := all\n\nall: binaries\n\ncheck: proto-fmt ## run all linters\n\t@echo \"$(WHALE) $@\"\n\tGOGC=75 golangci-lint run\n\nci: check binaries check-protos coverage # coverage-integration ## to be used by the CI\n\nAUTHORS: .mailmap .git/HEAD\n\tgit log --format='%aN <%aE>' | sort -fu > $@\n\ngenerate: protos\n\t@echo \"$(WHALE) $@\"\n\t@PATH=\"${ROOTDIR}/bin:${PATH}\" $(GO) generate -x ${PACKAGES}\n\nprotos: bin/protoc-gen-gogottrpc bin/protoc-gen-go-ttrpc ## generate protobuf\n\t@echo \"$(WHALE) $@\"\n\t@(PATH=\"${ROOTDIR}/bin:${PATH}\" protobuild --quiet ${PACKAGES})\n\ncheck-protos: protos ## check if protobufs needs to be generated again\n\t@echo \"$(WHALE) $@\"\n\t@test -z \"$$(git status --short | grep \".pb.go\" | tee /dev/stderr)\" || \\\n\t\t((git diff | cat) && \\\n\t\t(echo \"$(ONI) please run 'make protos' when making changes to proto files\" && false))\n\ncheck-api-descriptors: protos ## check that protobuf changes aren't present.\n\t@echo \"$(WHALE) $@\"\n\t@test -z \"$$(git status --short | grep \".pb.txt\" | tee /dev/stderr)\" || \\\n\t\t((git diff $$(find . -name '*.pb.txt') | cat) && \\\n\t\t(echo \"$(ONI) please run 'make protos' when making changes to proto files and check-in the generated descriptor file changes\" && false))\n\nproto-fmt: ## check format of proto files\n\t@echo \"$(WHALE) $@\"\n\t@test -z \"$$(find . -name '*.proto' -type f -exec grep -Hn -e \"^ \" {} \\; | tee /dev/stderr)\" || \\\n\t\t(echo \"$(ONI) please indent proto files with tabs only\" && false)\n\t@test -z \"$$(find . -name '*.proto' -type f -exec grep -Hn \"Meta meta = \" {} \\; | grep -v '(gogoproto.nullable) = false' | tee /dev/stderr)\" || \\\n\t\t(echo \"$(ONI) meta fields in proto files must have option (gogoproto.nullable) = false\" && false)\n\nbuild: ## build the go packages\n\t@echo \"$(WHALE) $@\"\n\t@$(GO) build ${DEBUG_GO_GCFLAGS} ${GO_GCFLAGS} ${GO_BUILD_FLAGS} ${EXTRA_FLAGS} ${PACKAGES}\n\ntest: ## run tests, except integration tests and tests that require root\n\t@echo \"$(WHALE) $@\"\n\t@$(GOTEST) ${TESTFLAGS} ${TESTPACKAGES}\n\nintegration: ## run integration tests\n\t@echo \"$(WHALE) $@\"\n\t@cd \"${ROOTDIR}/integration\" && $(GOTEST) -v ${TESTFLAGS}  -parallel ${TESTFLAGS_PARALLEL} .\n\nbenchmark: ## run benchmarks tests\n\t@echo \"$(WHALE) $@\"\n\t@$(GO) test ${TESTFLAGS} -bench . -run Benchmark\n\nFORCE:\n\ndefine BUILD_BINARY\n@echo \"$(WHALE) $@\"\n@$(GO) build ${DEBUG_GO_GCFLAGS} ${GO_GCFLAGS} ${GO_BUILD_FLAGS} -o $@ ${GO_TAGS}  ./$<\nendef\n\n# Build a binary from a cmd.\nbin/%: cmd/% FORCE\n\t$(call BUILD_BINARY)\n\nbinaries: $(BINARIES) ## build binaries\n\t@echo \"$(WHALE) $@\"\n\nclean: ## clean up binaries\n\t@echo \"$(WHALE) $@\"\n\t@rm -f $(BINARIES)\n\ninstall: ## install binaries\n\t@echo \"$(WHALE) $@ $(BINPACKAGES)\"\n\t@$(GO) install $(BINPACKAGES)\n\ninstall-protobuf:\n\t@echo \"$(WHALE) $@\"\n\t@script/install-protobuf\n\ninstall-protobuild:\n\t@echo \"$(WHALE) $@\"\n\t@$(GO) install google.golang.org/protobuf/cmd/protoc-gen-go@v1.28.1\n\t@$(GO) install github.com/containerd/protobuild@14832ccc41429f5c4f81028e5af08aa233a219cf\n\ncoverage: ## generate coverprofiles from the unit tests, except tests that require root\n\t@echo \"$(WHALE) $@\"\n\t@rm -f coverage.txt\n\t@$(GO) test ${TESTFLAGS} ${TESTPACKAGES} 2> /dev/null\n\t@( for pkg in ${PACKAGES}; do \\\n\t\t$(GO) test ${TESTFLAGS} \\\n\t\t\t-cover \\\n\t\t\t-coverprofile=profile.out \\\n\t\t\t-covermode=atomic $$pkg || exit; \\\n\t\tif [ -f profile.out ]; then \\\n\t\t\tcat profile.out >> coverage.txt; \\\n\t\t\trm profile.out; \\\n\t\tfi; \\\n\tdone )\n\nvendor: ## ensure all the go.mod/go.sum files are up-to-date\n\t@echo \"$(WHALE) $@\"\n\t@$(GO) mod tidy\n\t@$(GO) mod verify\n\nverify-vendor: ## verify if all the go.mod/go.sum files are up-to-date\n\t@echo \"$(WHALE) $@\"\n\t@$(GO) mod tidy\n\t@$(GO) mod verify\n\t@test -z \"$$(git status --short | grep \"go.sum\" | tee /dev/stderr)\" || \\\n\t\t((git diff | cat) && \\\n\t\t(echo \"$(ONI) make sure to checkin changes after go mod tidy\" && false))\n\nhelp: ## this help\n\t@awk 'BEGIN {FS = \":.*?## \"} /^[a-zA-Z_-]+:.*?## / {printf \"\\033[36m%-30s\\033[0m %s\\n\", $$1, $$2}' $(MAKEFILE_LIST) | sort\n"
  },
  {
    "path": "vendor/github.com/containerd/ttrpc/PROTOCOL.md",
    "content": "# Protocol Specification\n\nThe ttrpc protocol is client/server protocol to support multiple request streams\nover a single connection with lightweight framing. The client represents the\nprocess which initiated the underlying connection and the server is the process\nwhich accepted the connection. The protocol is currently defined as\nasymmetrical, with clients sending requests and servers sending responses. Both\nclients and servers are able to send stream data. The roles are also used in\ndetermining the stream identifiers, with client initiated streams using odd\nnumber identifiers and server initiated using even number. The protocol may be\nextended in the future to support server initiated streams, that is not\nsupported in the latest version.\n\n## Purpose\n\nThe ttrpc protocol is designed to be lightweight and optimized for low latency\nand reliable connections between processes on the same host. The protocol does\nnot include features for handling unreliable connections such as handshakes,\nresets, pings, or flow control. The protocol is designed to make low-overhead\nimplementations as simple as possible. It is not intended as a suitable\nreplacement for HTTP2/3 over the network.\n\n## Message Frame\n\nEach Message Frame consists of a 10-byte message header followed\nby message data. The data length and stream ID are both big-endian\n4-byte unsigned integers. The message type is an unsigned 1-byte\ninteger. The flags are also an unsigned 1-byte integer and\nuse is defined by the message type.\n\n    +---------------------------------------------------------------+\n    |                       Data Length (32)                        |\n    +---------------------------------------------------------------+\n    |                        Stream ID (32)                         |\n    +---------------+-----------------------------------------------+\n    | Msg Type (8)  |\n    +---------------+\n    |   Flags (8)   |\n    +---------------+-----------------------------------------------+\n    |                           Data (*)                            |\n    +---------------------------------------------------------------+\n\nThe Data Length field represents the number of bytes in the Data field. The\ntotal frame size will always be Data Length + 10 bytes. The maximum data length\nis 4MB and any larger size should be rejected. Due to the maximum data size\nbeing less than 16MB, the first frame byte should always be zero. This first\nbyte should be considered reserved for future use.\n\nThe Stream ID must be odd for client initiated streams and even for server\ninitiated streams. Server initiated streams are not currently supported.\n\n## Mesage Types\n\n| Message Type | Name     | Description                      |\n|--------------|----------|----------------------------------|\n| 0x01         | Request  | Initiates stream                 |\n| 0x02         | Response | Final stream data and terminates |\n| 0x03         | Data     | Stream data                      |\n\n### Request\n\nThe request message is used to initiate stream and send along request data for\nproperly routing and handling the stream. The stream may indicate unary without\nany inbound or outbound stream data with only a response is expected on the\nstream. The request may also indicate the stream is still open for more data and\nno response is expected until data is finished. If the remote indicates the\nstream is closed, the request may be considered non-unary but without anymore\nstream data sent. In the case of `remote closed`, the remote still expects to\nreceive a response or stream data. For compatibility with non streaming clients,\na request with empty flags indicates a unary request.\n\n#### Request Flags\n\n| Flag | Name            | Description                                      |\n|------|-----------------|--------------------------------------------------|\n| 0x01 | `remote closed` | Non-unary, but no more data expected from remote |\n| 0x02 | `remote open`   | Non-unary, remote is still sending data          |\n\n### Response\n\nThe response message is used to end a stream with data, an empty response, or\nan error. A response message is the only expected message after a unary request.\nA non-unary request does not require a response message if the server is sending\nback stream data. A non-unary stream may return a single response message but no\nother stream data may follow.\n\n#### Response Flags\n\nNo response flags are defined at this time, flags should be empty.\n\n### Data\n\nThe data message is used to send data on an already initialized stream. Either\nclient or server may send data. A data message is not allowed on a unary stream.\nA data message should not be sent after indicating `remote closed` to the peer.\nThe last data message on a stream must set the `remote closed` flag.\n\nThe `no data` flag is used to indicate that the data message does not include\nany data. This is normally used with the `remote closed` flag to indicate the\nstream is now closed without transmitting any data. Since ttrpc normally\ntransmits a single object per message, a zero length data message may be\ninterpreted as an empty object. For example, transmitting the number zero as a\nprotobuf message ends up with a data length of zero, but the message is still\nconsidered data and should be processed.\n\n#### Data Flags\n\n| Flag | Name            | Description                       |\n|------|-----------------|-----------------------------------|\n| 0x01 | `remote closed` | No more data expected from remote |\n| 0x04 | `no data`       | This message does not have data   |\n\n## Streaming\n\nAll ttrpc requests use streams to transfer data. Unary streams will only have\ntwo messages sent per stream, a request from a client and a response from the\nserver. Non-unary streams, however, may send any numbers of messages from the\nclient and the server. This makes stream management more complicated than unary\nstreams since both client and server need to track additional state. To keep\nthis management as simple as possible, ttrpc minimizes the number of states and\nuses two flags instead of control frames. Each stream has two states while a\nstream is still alive: `local closed` and `remote closed`. Each peer considers\nlocal and remote from their own perspective and sets flags from the other peer's\nperspective. For example, if a client sends a data frame with the\n`remote closed` flag, that is indicating that the client is now `local closed`\nand the server will be `remote closed`. A unary operation does not need to send\nthese flags since each received message always indicates `remote closed`. Once a\npeer is both `local closed` and `remote closed`, the stream is considered\nfinished and may be cleaned up.\n\nDue to the asymmetric nature of the current protocol, a client should\nalways be in the `local closed` state before `remote closed` and a server should\nalways be in the `remote closed` state before `local closed`. This happens\nbecause the client is always initiating requests and a client always expects a\nfinal response back from a server to indicate the initiated request has been\nfulfilled. This may mean server sends a final empty response to finish a stream\neven after it has already completed sending data before the client.\n\n### Unary State Diagram\n\n         +--------+                                    +--------+\n         | Client |                                    | Server |\n         +---+----+                                    +----+---+\n             |               +---------+                    |\n      local  >---------------+ Request +--------------------> remote\n      closed |               +---------+                    | closed\n             |                                              |\n             |              +----------+                    |\n    finished <--------------+ Response +--------------------< finished\n             |              +----------+                    |\n             |                                              |\n\n### Non-Unary State Diagrams\n\nRC: `remote closed` flag\nRO: `remote open` flag\n\n         +--------+                                    +--------+\n         | Client |                                    | Server |\n         +---+----+                                    +----+---+\n             |             +--------------+                 |\n             >-------------+ Request [RO] +----------------->\n             |             +--------------+                 |\n             |                                              |\n             |                 +------+                     |\n             >-----------------+ Data +--------------------->\n             |                 +------+                     |\n             |                                              |\n             |               +-----------+                  |\n      local  >---------------+ Data [RC] +------------------> remote\n      closed |               +-----------+                  | closed\n             |                                              |\n             |              +----------+                    |\n    finished <--------------+ Response +--------------------< finished\n             |              +----------+                    |\n             |                                              |\n\n         +--------+                                    +--------+\n         | Client |                                    | Server |\n         +---+----+                                    +----+---+\n             |             +--------------+                 |\n      local  >-------------+ Request [RC] +-----------------> remote\n      closed |             +--------------+                 | closed\n             |                                              |\n             |                 +------+                     |\n             <-----------------+ Data +---------------------<\n             |                 +------+                     |\n             |                                              |\n             |               +-----------+                  |\n    finished <---------------+ Data [RC] +------------------< finished\n             |               +-----------+                  |\n             |                                              |\n\n         +--------+                                    +--------+\n         | Client |                                    | Server |\n         +---+----+                                    +----+---+\n             |             +--------------+                 |\n             >-------------+ Request [RO] +----------------->\n             |             +--------------+                 |\n             |                                              |\n             |                 +------+                     |\n             >-----------------+ Data +--------------------->\n             |                 +------+                     |\n             |                                              |\n             |                 +------+                     |\n             <-----------------+ Data +---------------------<\n             |                 +------+                     |\n             |                                              |\n             |                 +------+                     |\n             >-----------------+ Data +--------------------->\n             |                 +------+                     |\n             |                                              |\n             |               +-----------+                  |\n      local  >---------------+ Data [RC] +------------------> remote\n      closed |               +-----------+                  | closed\n             |                                              |\n             |                 +------+                     |\n             <-----------------+ Data +---------------------<\n             |                 +------+                     |\n             |                                              |\n             |               +-----------+                  |\n    finished <---------------+ Data [RC] +------------------< finished\n             |               +-----------+                  |\n             |                                              |\n\n## RPC\n\nWhile this protocol is defined primarily to support Remote Procedure Calls, the\nprotocol does not define the request and response types beyond the messages\ndefined in the protocol. The implementation provides a default protobuf\ndefinition of request and response which may be used for cross language rpc.\nAll implementations should at least define a request type which support\nrouting by procedure name and a response type which supports call status.\n\n## Version History\n\n| Version | Features            |\n|---------|---------------------|\n| 1.0     | Unary requests only |\n| 1.2     | Streaming support   |\n"
  },
  {
    "path": "vendor/github.com/containerd/ttrpc/Protobuild.toml",
    "content": "version = \"2\"\ngenerators = [\"go\"]\n\n# Control protoc include paths. Below are usually some good defaults, but feel\n# free to try it without them if it works for your project.\n[includes]\n  # Include paths that will be added before all others. Typically, you want to\n  # treat the root of the project as an include, but this may not be necessary.\n  before = [\".\"]\n\n  # Paths that will be added untouched to the end of the includes. We use\n  # `/usr/local/include` to pickup the common install location of protobuf.\n  # This is the default.\n  after = [\"/usr/local/include\"]\n\n# This section maps protobuf imports to Go packages. These will become\n# `-M` directives in the call to the go protobuf generator.\n[packages]\n  \"google/protobuf/any.proto\" = \"github.com/gogo/protobuf/types\"\n  \"proto/status.proto\" = \"google.golang.org/genproto/googleapis/rpc/status\"\n\n[[overrides]]\n# enable ttrpc and disable fieldpath and grpc for the shim\nprefixes = [\"github.com/containerd/ttrpc/integration/streaming\"]\ngenerators = [\"go\", \"go-ttrpc\"]\n\n[overrides.parameters.go-ttrpc]\nprefix = \"TTRPC\"\n"
  },
  {
    "path": "vendor/github.com/containerd/ttrpc/README.md",
    "content": "# ttrpc\n\n[![Build Status](https://github.com/containerd/ttrpc/actions/workflows/ci.yml/badge.svg)](https://github.com/containerd/ttrpc/actions/workflows/ci.yml)\n\nGRPC for low-memory environments.\n\nThe existing grpc-go project requires a lot of memory overhead for importing\npackages and at runtime. While this is great for many services with low density\nrequirements, this can be a problem when running a large number of services on\na single machine or on a machine with a small amount of memory.\n\nUsing the same GRPC definitions, this project reduces the binary size and\nprotocol overhead required. We do this by eliding the `net/http`, `net/http2`\nand `grpc` package used by grpc replacing it with a lightweight framing\nprotocol. The result are smaller binaries that use less resident memory with\nthe same ease of use as GRPC.\n\nPlease note that while this project supports generating either end of the\nprotocol, the generated service definitions will be incompatible with regular\nGRPC services, as they do not speak the same protocol.\n\n# Protocol\n\nSee the [protocol specification](./PROTOCOL.md).\n\n# Usage\n\nCreate a gogo vanity binary (see\n[`cmd/protoc-gen-gogottrpc/main.go`](cmd/protoc-gen-gogottrpc/main.go) for an\nexample with the ttrpc plugin enabled.\n\nIt's recommended to use [`protobuild`](https://github.com/containerd/protobuild)\nto build the protobufs for this project, but this will work with protoc\ndirectly, if required.\n\n# Differences from GRPC\n\n- The protocol stack has been replaced with a lighter protocol that doesn't\n  require http, http2 and tls.\n- The client and server interface are identical whereas in GRPC there is a\n  client and server interface that are different.\n- The Go stdlib context package is used instead.\n\n# Status\n\nTODO:\n\n- [ ] Add testing under concurrent load to ensure\n- [ ] Verify connection error handling\n\n# Project details\n\nttrpc is a containerd sub-project, licensed under the [Apache 2.0 license](./LICENSE).\nAs a containerd sub-project, you will find the:\n * [Project governance](https://github.com/containerd/project/blob/main/GOVERNANCE.md),\n * [Maintainers](https://github.com/containerd/project/blob/main/MAINTAINERS),\n * and [Contributing guidelines](https://github.com/containerd/project/blob/main/CONTRIBUTING.md)\n\ninformation in our [`containerd/project`](https://github.com/containerd/project) repository.\n"
  },
  {
    "path": "vendor/github.com/containerd/ttrpc/channel.go",
    "content": "/*\n   Copyright The containerd Authors.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\npackage ttrpc\n\nimport (\n\t\"bufio\"\n\t\"encoding/binary\"\n\t\"fmt\"\n\t\"io\"\n\t\"net\"\n\t\"sync\"\n\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/status\"\n)\n\nconst (\n\tmessageHeaderLength = 10\n\tmessageLengthMax    = 4 << 20\n)\n\ntype messageType uint8\n\nconst (\n\tmessageTypeRequest  messageType = 0x1\n\tmessageTypeResponse messageType = 0x2\n\tmessageTypeData     messageType = 0x3\n)\n\nfunc (mt messageType) String() string {\n\tswitch mt {\n\tcase messageTypeRequest:\n\t\treturn \"request\"\n\tcase messageTypeResponse:\n\t\treturn \"response\"\n\tcase messageTypeData:\n\t\treturn \"data\"\n\tdefault:\n\t\treturn \"unknown\"\n\t}\n}\n\nconst (\n\tflagRemoteClosed uint8 = 0x1\n\tflagRemoteOpen   uint8 = 0x2\n\tflagNoData       uint8 = 0x4\n)\n\n// messageHeader represents the fixed-length message header of 10 bytes sent\n// with every request.\ntype messageHeader struct {\n\tLength   uint32      // length excluding this header. b[:4]\n\tStreamID uint32      // identifies which request stream message is a part of. b[4:8]\n\tType     messageType // message type b[8]\n\tFlags    uint8       // type specific flags b[9]\n}\n\nfunc readMessageHeader(p []byte, r io.Reader) (messageHeader, error) {\n\t_, err := io.ReadFull(r, p[:messageHeaderLength])\n\tif err != nil {\n\t\treturn messageHeader{}, err\n\t}\n\n\treturn messageHeader{\n\t\tLength:   binary.BigEndian.Uint32(p[:4]),\n\t\tStreamID: binary.BigEndian.Uint32(p[4:8]),\n\t\tType:     messageType(p[8]),\n\t\tFlags:    p[9],\n\t}, nil\n}\n\nfunc writeMessageHeader(w io.Writer, p []byte, mh messageHeader) error {\n\tbinary.BigEndian.PutUint32(p[:4], mh.Length)\n\tbinary.BigEndian.PutUint32(p[4:8], mh.StreamID)\n\tp[8] = byte(mh.Type)\n\tp[9] = mh.Flags\n\n\t_, err := w.Write(p[:])\n\treturn err\n}\n\nvar buffers sync.Pool\n\ntype channel struct {\n\tconn  net.Conn\n\tbw    *bufio.Writer\n\tbr    *bufio.Reader\n\thrbuf [messageHeaderLength]byte // avoid alloc when reading header\n\thwbuf [messageHeaderLength]byte\n}\n\nfunc newChannel(conn net.Conn) *channel {\n\treturn &channel{\n\t\tconn: conn,\n\t\tbw:   bufio.NewWriter(conn),\n\t\tbr:   bufio.NewReader(conn),\n\t}\n}\n\n// recv a message from the channel. The returned buffer contains the message.\n//\n// If a valid grpc status is returned, the message header\n// returned will be valid and caller should send that along to\n// the correct consumer. The bytes on the underlying channel\n// will be discarded.\nfunc (ch *channel) recv() (messageHeader, []byte, error) {\n\tmh, err := readMessageHeader(ch.hrbuf[:], ch.br)\n\tif err != nil {\n\t\treturn messageHeader{}, nil, err\n\t}\n\n\tif mh.Length > uint32(messageLengthMax) {\n\t\tif _, err := ch.br.Discard(int(mh.Length)); err != nil {\n\t\t\treturn mh, nil, fmt.Errorf(\"failed to discard after receiving oversized message: %w\", err)\n\t\t}\n\n\t\treturn mh, nil, status.Errorf(codes.ResourceExhausted, \"message length %v exceed maximum message size of %v\", mh.Length, messageLengthMax)\n\t}\n\n\tvar p []byte\n\tif mh.Length > 0 {\n\t\tp = ch.getmbuf(int(mh.Length))\n\t\tif _, err := io.ReadFull(ch.br, p); err != nil {\n\t\t\treturn messageHeader{}, nil, fmt.Errorf(\"failed reading message: %w\", err)\n\t\t}\n\t}\n\n\treturn mh, p, nil\n}\n\nfunc (ch *channel) send(streamID uint32, t messageType, flags uint8, p []byte) error {\n\tif len(p) > messageLengthMax {\n\t\treturn OversizedMessageError(len(p))\n\t}\n\n\tif err := writeMessageHeader(ch.bw, ch.hwbuf[:], messageHeader{Length: uint32(len(p)), StreamID: streamID, Type: t, Flags: flags}); err != nil {\n\t\treturn err\n\t}\n\n\tif len(p) > 0 {\n\t\t_, err := ch.bw.Write(p)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn ch.bw.Flush()\n}\n\nfunc (ch *channel) getmbuf(size int) []byte {\n\t// we can't use the standard New method on pool because we want to allocate\n\t// based on size.\n\tb, ok := buffers.Get().(*[]byte)\n\tif !ok || cap(*b) < size {\n\t\t// TODO(stevvooe): It may be better to allocate these in fixed length\n\t\t// buckets to reduce fragmentation but its not clear that would help\n\t\t// with performance. An ilogb approach or similar would work well.\n\t\tbb := make([]byte, size)\n\t\tb = &bb\n\t} else {\n\t\t*b = (*b)[:size]\n\t}\n\treturn *b\n}\n\nfunc (ch *channel) putmbuf(p []byte) {\n\tbuffers.Put(&p)\n}\n"
  },
  {
    "path": "vendor/github.com/containerd/ttrpc/client.go",
    "content": "/*\n   Copyright The containerd Authors.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\npackage ttrpc\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"net\"\n\t\"strings\"\n\t\"sync\"\n\t\"syscall\"\n\t\"time\"\n\n\t\"github.com/containerd/log\"\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/status\"\n\t\"google.golang.org/protobuf/proto\"\n)\n\n// Client for a ttrpc server\ntype Client struct {\n\tcodec   codec\n\tconn    net.Conn\n\tchannel *channel\n\n\tstreamLock   sync.RWMutex\n\tstreams      map[streamID]*stream\n\tnextStreamID streamID\n\tsendLock     sync.Mutex\n\n\tctx    context.Context\n\tclosed func()\n\n\tcloseOnce       sync.Once\n\tuserCloseFunc   func()\n\tuserCloseWaitCh chan struct{}\n\n\tinterceptor UnaryClientInterceptor\n}\n\n// ClientOpts configures a client\ntype ClientOpts func(c *Client)\n\n// WithOnClose sets the close func whenever the client's Close() method is called\nfunc WithOnClose(onClose func()) ClientOpts {\n\treturn func(c *Client) {\n\t\tc.userCloseFunc = onClose\n\t}\n}\n\n// WithUnaryClientInterceptor sets the provided client interceptor\nfunc WithUnaryClientInterceptor(i UnaryClientInterceptor) ClientOpts {\n\treturn func(c *Client) {\n\t\tc.interceptor = i\n\t}\n}\n\n// WithChainUnaryClientInterceptor sets the provided chain of client interceptors\nfunc WithChainUnaryClientInterceptor(interceptors ...UnaryClientInterceptor) ClientOpts {\n\treturn func(c *Client) {\n\t\tif len(interceptors) == 0 {\n\t\t\treturn\n\t\t}\n\t\tif c.interceptor != nil {\n\t\t\tinterceptors = append([]UnaryClientInterceptor{c.interceptor}, interceptors...)\n\t\t}\n\t\tc.interceptor = func(\n\t\t\tctx context.Context,\n\t\t\treq *Request,\n\t\t\treply *Response,\n\t\t\tinfo *UnaryClientInfo,\n\t\t\tfinal Invoker,\n\t\t) error {\n\t\t\treturn interceptors[0](ctx, req, reply, info,\n\t\t\t\tchainUnaryInterceptors(interceptors[1:], final, info))\n\t\t}\n\t}\n}\n\nfunc chainUnaryInterceptors(interceptors []UnaryClientInterceptor, final Invoker, info *UnaryClientInfo) Invoker {\n\tif len(interceptors) == 0 {\n\t\treturn final\n\t}\n\treturn func(\n\t\tctx context.Context,\n\t\treq *Request,\n\t\treply *Response,\n\t) error {\n\t\treturn interceptors[0](ctx, req, reply, info,\n\t\t\tchainUnaryInterceptors(interceptors[1:], final, info))\n\t}\n}\n\n// NewClient creates a new ttrpc client using the given connection\nfunc NewClient(conn net.Conn, opts ...ClientOpts) *Client {\n\tctx, cancel := context.WithCancel(context.Background())\n\tchannel := newChannel(conn)\n\tc := &Client{\n\t\tcodec:           codec{},\n\t\tconn:            conn,\n\t\tchannel:         channel,\n\t\tstreams:         make(map[streamID]*stream),\n\t\tnextStreamID:    1,\n\t\tclosed:          cancel,\n\t\tctx:             ctx,\n\t\tuserCloseFunc:   func() {},\n\t\tuserCloseWaitCh: make(chan struct{}),\n\t}\n\n\tfor _, o := range opts {\n\t\to(c)\n\t}\n\n\tif c.interceptor == nil {\n\t\tc.interceptor = defaultClientInterceptor\n\t}\n\n\tgo c.run()\n\treturn c\n}\n\nfunc (c *Client) send(sid uint32, mt messageType, flags uint8, b []byte) error {\n\tc.sendLock.Lock()\n\tdefer c.sendLock.Unlock()\n\treturn c.channel.send(sid, mt, flags, b)\n}\n\n// Call makes a unary request and returns with response\nfunc (c *Client) Call(ctx context.Context, service, method string, req, resp interface{}) error {\n\tpayload, err := c.codec.Marshal(req)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tvar (\n\t\tcreq = &Request{\n\t\t\tService: service,\n\t\t\tMethod:  method,\n\t\t\tPayload: payload,\n\t\t\t// TODO: metadata from context\n\t\t}\n\n\t\tcresp = &Response{}\n\t)\n\n\tif metadata, ok := GetMetadata(ctx); ok {\n\t\tmetadata.setRequest(creq)\n\t}\n\n\tif dl, ok := ctx.Deadline(); ok {\n\t\tcreq.TimeoutNano = time.Until(dl).Nanoseconds()\n\t}\n\n\tinfo := &UnaryClientInfo{\n\t\tFullMethod: fullPath(service, method),\n\t}\n\tif err := c.interceptor(ctx, creq, cresp, info, c.dispatch); err != nil {\n\t\treturn err\n\t}\n\n\tif err := c.codec.Unmarshal(cresp.Payload, resp); err != nil {\n\t\treturn err\n\t}\n\n\tif cresp.Status != nil && cresp.Status.Code != int32(codes.OK) {\n\t\treturn status.ErrorProto(cresp.Status)\n\t}\n\treturn nil\n}\n\n// StreamDesc describes the stream properties, whether the stream has\n// a streaming client, a streaming server, or both\ntype StreamDesc struct {\n\tStreamingClient bool\n\tStreamingServer bool\n}\n\n// ClientStream is used to send or recv messages on the underlying stream\ntype ClientStream interface {\n\tCloseSend() error\n\tSendMsg(m interface{}) error\n\tRecvMsg(m interface{}) error\n}\n\ntype clientStream struct {\n\tctx          context.Context\n\ts            *stream\n\tc            *Client\n\tdesc         *StreamDesc\n\tlocalClosed  bool\n\tremoteClosed bool\n}\n\nfunc (cs *clientStream) CloseSend() error {\n\tif !cs.desc.StreamingClient {\n\t\treturn fmt.Errorf(\"%w: cannot close non-streaming client\", ErrProtocol)\n\t}\n\tif cs.localClosed {\n\t\treturn ErrStreamClosed\n\t}\n\terr := cs.s.send(messageTypeData, flagRemoteClosed|flagNoData, nil)\n\tif err != nil {\n\t\treturn filterCloseErr(err)\n\t}\n\tcs.localClosed = true\n\treturn nil\n}\n\nfunc (cs *clientStream) SendMsg(m interface{}) error {\n\tif !cs.desc.StreamingClient {\n\t\treturn fmt.Errorf(\"%w: cannot send data from non-streaming client\", ErrProtocol)\n\t}\n\tif cs.localClosed {\n\t\treturn ErrStreamClosed\n\t}\n\n\tvar (\n\t\tpayload []byte\n\t\terr     error\n\t)\n\tif m != nil {\n\t\tpayload, err = cs.c.codec.Marshal(m)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\terr = cs.s.send(messageTypeData, 0, payload)\n\tif err != nil {\n\t\treturn filterCloseErr(err)\n\t}\n\n\treturn nil\n}\n\nfunc (cs *clientStream) RecvMsg(m interface{}) error {\n\tif cs.remoteClosed {\n\t\treturn io.EOF\n\t}\n\n\tvar msg *streamMessage\n\tselect {\n\tcase <-cs.ctx.Done():\n\t\treturn cs.ctx.Err()\n\tcase <-cs.s.recvClose:\n\t\t// If recv has a pending message, process that first\n\t\tselect {\n\t\tcase msg = <-cs.s.recv:\n\t\tdefault:\n\t\t\treturn cs.s.recvErr\n\t\t}\n\tcase msg = <-cs.s.recv:\n\t}\n\n\tif msg.header.Type == messageTypeResponse {\n\t\tresp := &Response{}\n\t\terr := proto.Unmarshal(msg.payload[:msg.header.Length], resp)\n\t\t// return the payload buffer for reuse\n\t\tcs.c.channel.putmbuf(msg.payload)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tif err := cs.c.codec.Unmarshal(resp.Payload, m); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tif resp.Status != nil && resp.Status.Code != int32(codes.OK) {\n\t\t\treturn status.ErrorProto(resp.Status)\n\t\t}\n\n\t\tcs.c.deleteStream(cs.s)\n\t\tcs.remoteClosed = true\n\n\t\treturn nil\n\t} else if msg.header.Type == messageTypeData {\n\t\tif !cs.desc.StreamingServer {\n\t\t\tcs.c.deleteStream(cs.s)\n\t\t\tcs.remoteClosed = true\n\t\t\treturn fmt.Errorf(\"received data from non-streaming server: %w\", ErrProtocol)\n\t\t}\n\t\tif msg.header.Flags&flagRemoteClosed == flagRemoteClosed {\n\t\t\tcs.c.deleteStream(cs.s)\n\t\t\tcs.remoteClosed = true\n\n\t\t\tif msg.header.Flags&flagNoData == flagNoData {\n\t\t\t\treturn io.EOF\n\t\t\t}\n\t\t}\n\n\t\terr := cs.c.codec.Unmarshal(msg.payload[:msg.header.Length], m)\n\t\tcs.c.channel.putmbuf(msg.payload)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t}\n\n\treturn fmt.Errorf(\"unexpected %q message received: %w\", msg.header.Type, ErrProtocol)\n}\n\n// Close closes the ttrpc connection and underlying connection\nfunc (c *Client) Close() error {\n\tc.closeOnce.Do(func() {\n\t\tc.closed()\n\n\t\tc.conn.Close()\n\t})\n\treturn nil\n}\n\n// UserOnCloseWait is used to block until the user's on-close callback\n// finishes.\nfunc (c *Client) UserOnCloseWait(ctx context.Context) error {\n\tselect {\n\tcase <-c.userCloseWaitCh:\n\t\treturn nil\n\tcase <-ctx.Done():\n\t\treturn ctx.Err()\n\t}\n}\n\nfunc (c *Client) run() {\n\terr := c.receiveLoop()\n\tc.Close()\n\tc.cleanupStreams(err)\n\n\tc.userCloseFunc()\n\tclose(c.userCloseWaitCh)\n}\n\nfunc (c *Client) receiveLoop() error {\n\tfor {\n\t\tselect {\n\t\tcase <-c.ctx.Done():\n\t\t\treturn ErrClosed\n\t\tdefault:\n\t\t\tvar (\n\t\t\t\tmsg = &streamMessage{}\n\t\t\t\terr error\n\t\t\t)\n\n\t\t\tmsg.header, msg.payload, err = c.channel.recv()\n\t\t\tif err != nil {\n\t\t\t\t_, ok := status.FromError(err)\n\t\t\t\tif !ok {\n\t\t\t\t\t// treat all errors that are not an rpc status as terminal.\n\t\t\t\t\t// all others poison the connection.\n\t\t\t\t\treturn filterCloseErr(err)\n\t\t\t\t}\n\t\t\t}\n\t\t\tsid := streamID(msg.header.StreamID)\n\t\t\ts := c.getStream(sid)\n\t\t\tif s == nil {\n\t\t\t\tlog.G(c.ctx).WithField(\"stream\", sid).Error(\"ttrpc: received message on inactive stream\")\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif err != nil {\n\t\t\t\ts.closeWithError(err)\n\t\t\t} else {\n\t\t\t\tif err := s.receive(c.ctx, msg); err != nil {\n\t\t\t\t\tlog.G(c.ctx).WithFields(log.Fields{\"error\": err, \"stream\": sid}).Error(\"ttrpc: failed to handle message\")\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n// createStream creates a new stream and registers it with the client\n// Introduce stream types for multiple or single response\nfunc (c *Client) createStream(flags uint8, b []byte) (*stream, error) {\n\t// sendLock must be held across both allocation of the stream ID and sending it across the wire.\n\t// This ensures that new stream IDs sent on the wire are always increasing, which is a\n\t// requirement of the TTRPC protocol.\n\t// This use of sendLock could be split into another mutex that covers stream creation + first send,\n\t// and just use sendLock to guard writing to the wire, but for now it seems simpler to have fewer mutexes.\n\tc.sendLock.Lock()\n\tdefer c.sendLock.Unlock()\n\n\t// Check if closed since lock acquired to prevent adding\n\t// anything after cleanup completes\n\tselect {\n\tcase <-c.ctx.Done():\n\t\treturn nil, ErrClosed\n\tdefault:\n\t}\n\n\tvar s *stream\n\tif err := func() error {\n\t\t// In the future this could be replaced with a sync.Map instead of streamLock+map.\n\t\tc.streamLock.Lock()\n\t\tdefer c.streamLock.Unlock()\n\n\t\t// Check if closed since lock acquired to prevent adding\n\t\t// anything after cleanup completes\n\t\tselect {\n\t\tcase <-c.ctx.Done():\n\t\t\treturn ErrClosed\n\t\tdefault:\n\t\t}\n\n\t\ts = newStream(c.nextStreamID, c)\n\t\tc.streams[s.id] = s\n\t\tc.nextStreamID = c.nextStreamID + 2\n\n\t\treturn nil\n\t}(); err != nil {\n\t\treturn nil, err\n\t}\n\n\tif err := c.channel.send(uint32(s.id), messageTypeRequest, flags, b); err != nil {\n\t\treturn s, filterCloseErr(err)\n\t}\n\n\treturn s, nil\n}\n\nfunc (c *Client) deleteStream(s *stream) {\n\tc.streamLock.Lock()\n\tdelete(c.streams, s.id)\n\tc.streamLock.Unlock()\n\ts.closeWithError(nil)\n}\n\nfunc (c *Client) getStream(sid streamID) *stream {\n\tc.streamLock.RLock()\n\ts := c.streams[sid]\n\tc.streamLock.RUnlock()\n\treturn s\n}\n\nfunc (c *Client) cleanupStreams(err error) {\n\tc.streamLock.Lock()\n\tdefer c.streamLock.Unlock()\n\n\tfor sid, s := range c.streams {\n\t\ts.closeWithError(err)\n\t\tdelete(c.streams, sid)\n\t}\n}\n\n// filterCloseErr rewrites EOF and EPIPE errors to ErrClosed. Use when\n// returning from call or handling errors from main read loop.\n//\n// This purposely ignores errors with a wrapped cause.\nfunc filterCloseErr(err error) error {\n\tswitch {\n\tcase err == nil:\n\t\treturn nil\n\tcase err == io.EOF:\n\t\treturn ErrClosed\n\tcase errors.Is(err, io.ErrClosedPipe):\n\t\treturn ErrClosed\n\tcase errors.Is(err, io.EOF):\n\t\treturn ErrClosed\n\tcase strings.Contains(err.Error(), \"use of closed network connection\"):\n\t\treturn ErrClosed\n\tdefault:\n\t\t// if we have an epipe on a write or econnreset on a read , we cast to errclosed\n\t\tvar oerr *net.OpError\n\t\tif errors.As(err, &oerr) {\n\t\t\tif (oerr.Op == \"write\" && errors.Is(err, syscall.EPIPE)) ||\n\t\t\t\t(oerr.Op == \"read\" && errors.Is(err, syscall.ECONNRESET)) {\n\t\t\t\treturn ErrClosed\n\t\t\t}\n\t\t}\n\t}\n\n\treturn err\n}\n\n// NewStream creates a new stream with the given stream descriptor to the\n// specified service and method. If not a streaming client, the request object\n// may be provided.\nfunc (c *Client) NewStream(ctx context.Context, desc *StreamDesc, service, method string, req interface{}) (ClientStream, error) {\n\tvar payload []byte\n\tif req != nil {\n\t\tvar err error\n\t\tpayload, err = c.codec.Marshal(req)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\trequest := &Request{\n\t\tService: service,\n\t\tMethod:  method,\n\t\tPayload: payload,\n\t\t// TODO: metadata from context\n\t}\n\tp, err := c.codec.Marshal(request)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar flags uint8\n\tif desc.StreamingClient {\n\t\tflags = flagRemoteOpen\n\t} else {\n\t\tflags = flagRemoteClosed\n\t}\n\ts, err := c.createStream(flags, p)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &clientStream{\n\t\tctx:  ctx,\n\t\ts:    s,\n\t\tc:    c,\n\t\tdesc: desc,\n\t}, nil\n}\n\nfunc (c *Client) dispatch(ctx context.Context, req *Request, resp *Response) error {\n\tp, err := c.codec.Marshal(req)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\ts, err := c.createStream(0, p)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer c.deleteStream(s)\n\n\tvar msg *streamMessage\n\tselect {\n\tcase <-ctx.Done():\n\t\treturn ctx.Err()\n\tcase <-c.ctx.Done():\n\t\treturn ErrClosed\n\tcase <-s.recvClose:\n\t\t// If recv has a pending message, process that first\n\t\tselect {\n\t\tcase msg = <-s.recv:\n\t\tdefault:\n\t\t\treturn s.recvErr\n\t\t}\n\tcase msg = <-s.recv:\n\t}\n\n\tif msg.header.Type == messageTypeResponse {\n\t\terr = proto.Unmarshal(msg.payload[:msg.header.Length], resp)\n\t} else {\n\t\terr = fmt.Errorf(\"unexpected %q message received: %w\", msg.header.Type, ErrProtocol)\n\t}\n\n\t// return the payload buffer for reuse\n\tc.channel.putmbuf(msg.payload)\n\n\treturn err\n}\n"
  },
  {
    "path": "vendor/github.com/containerd/ttrpc/codec.go",
    "content": "/*\n   Copyright The containerd Authors.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\npackage ttrpc\n\nimport (\n\t\"fmt\"\n\n\t\"google.golang.org/protobuf/proto\"\n)\n\ntype codec struct{}\n\nfunc (c codec) Marshal(msg interface{}) ([]byte, error) {\n\tswitch v := msg.(type) {\n\tcase proto.Message:\n\t\treturn proto.Marshal(v)\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"ttrpc: cannot marshal unknown type: %T\", msg)\n\t}\n}\n\nfunc (c codec) Unmarshal(p []byte, msg interface{}) error {\n\tswitch v := msg.(type) {\n\tcase proto.Message:\n\t\treturn proto.Unmarshal(p, v)\n\tdefault:\n\t\treturn fmt.Errorf(\"ttrpc: cannot unmarshal into unknown type: %T\", msg)\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/containerd/ttrpc/config.go",
    "content": "/*\n   Copyright The containerd Authors.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\npackage ttrpc\n\nimport (\n\t\"context\"\n\t\"errors\"\n)\n\ntype serverConfig struct {\n\thandshaker  Handshaker\n\tinterceptor UnaryServerInterceptor\n}\n\n// ServerOpt for configuring a ttrpc server\ntype ServerOpt func(*serverConfig) error\n\n// WithServerHandshaker can be passed to NewServer to ensure that the\n// handshaker is called before every connection attempt.\n//\n// Only one handshaker is allowed per server.\nfunc WithServerHandshaker(handshaker Handshaker) ServerOpt {\n\treturn func(c *serverConfig) error {\n\t\tif c.handshaker != nil {\n\t\t\treturn errors.New(\"only one handshaker allowed per server\")\n\t\t}\n\t\tc.handshaker = handshaker\n\t\treturn nil\n\t}\n}\n\n// WithUnaryServerInterceptor sets the provided interceptor on the server\nfunc WithUnaryServerInterceptor(i UnaryServerInterceptor) ServerOpt {\n\treturn func(c *serverConfig) error {\n\t\tif c.interceptor != nil {\n\t\t\treturn errors.New(\"only one unchained interceptor allowed per server\")\n\t\t}\n\t\tc.interceptor = i\n\t\treturn nil\n\t}\n}\n\n// WithChainUnaryServerInterceptor sets the provided chain of server interceptors\nfunc WithChainUnaryServerInterceptor(interceptors ...UnaryServerInterceptor) ServerOpt {\n\treturn func(c *serverConfig) error {\n\t\tif len(interceptors) == 0 {\n\t\t\treturn nil\n\t\t}\n\t\tif c.interceptor != nil {\n\t\t\tinterceptors = append([]UnaryServerInterceptor{c.interceptor}, interceptors...)\n\t\t}\n\t\tc.interceptor = func(\n\t\t\tctx context.Context,\n\t\t\tunmarshal Unmarshaler,\n\t\t\tinfo *UnaryServerInfo,\n\t\t\tmethod Method) (interface{}, error) {\n\t\t\treturn interceptors[0](ctx, unmarshal, info,\n\t\t\t\tchainUnaryServerInterceptors(info, method, interceptors[1:]))\n\t\t}\n\t\treturn nil\n\t}\n}\n\nfunc chainUnaryServerInterceptors(info *UnaryServerInfo, method Method, interceptors []UnaryServerInterceptor) Method {\n\tif len(interceptors) == 0 {\n\t\treturn method\n\t}\n\treturn func(ctx context.Context, unmarshal func(interface{}) error) (interface{}, error) {\n\t\treturn interceptors[0](ctx, unmarshal, info,\n\t\t\tchainUnaryServerInterceptors(info, method, interceptors[1:]))\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/containerd/ttrpc/doc.go",
    "content": "/*\n   Copyright The containerd Authors.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\n/*\npackage ttrpc defines and implements a low level simple transfer protocol\noptimized for low latency and reliable connections between processes on the same\nhost. The protocol uses simple framing for sending requests, responses, and data\nusing multiple streams.\n*/\npackage ttrpc\n"
  },
  {
    "path": "vendor/github.com/containerd/ttrpc/errors.go",
    "content": "/*\n   Copyright The containerd Authors.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\npackage ttrpc\n\nimport (\n\t\"errors\"\n\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/status\"\n)\n\nvar (\n\t// ErrProtocol is a general error in the handling the protocol.\n\tErrProtocol = errors.New(\"protocol error\")\n\n\t// ErrClosed is returned by client methods when the underlying connection is\n\t// closed.\n\tErrClosed = errors.New(\"ttrpc: closed\")\n\n\t// ErrServerClosed is returned when the Server has closed its connection.\n\tErrServerClosed = errors.New(\"ttrpc: server closed\")\n\n\t// ErrStreamClosed is when the streaming connection is closed.\n\tErrStreamClosed = errors.New(\"ttrpc: stream closed\")\n)\n\n// OversizedMessageErr is used to indicate refusal to send an oversized message.\n// It wraps a ResourceExhausted grpc Status together with the offending message\n// length.\ntype OversizedMessageErr struct {\n\tmessageLength int\n\terr           error\n}\n\n// OversizedMessageError returns an OversizedMessageErr error for the given message\n// length if it exceeds the allowed maximum. Otherwise a nil error is returned.\nfunc OversizedMessageError(messageLength int) error {\n\tif messageLength <= messageLengthMax {\n\t\treturn nil\n\t}\n\n\treturn &OversizedMessageErr{\n\t\tmessageLength: messageLength,\n\t\terr:           status.Errorf(codes.ResourceExhausted, \"message length %v exceed maximum message size of %v\", messageLength, messageLengthMax),\n\t}\n}\n\n// Error returns the error message for the corresponding grpc Status for the error.\nfunc (e *OversizedMessageErr) Error() string {\n\treturn e.err.Error()\n}\n\n// Unwrap returns the corresponding error with our grpc status code.\nfunc (e *OversizedMessageErr) Unwrap() error {\n\treturn e.err\n}\n\n// RejectedLength retrieves the rejected message length which triggered the error.\nfunc (e *OversizedMessageErr) RejectedLength() int {\n\treturn e.messageLength\n}\n\n// MaximumLength retrieves the maximum allowed message length that triggered the error.\nfunc (*OversizedMessageErr) MaximumLength() int {\n\treturn messageLengthMax\n}\n"
  },
  {
    "path": "vendor/github.com/containerd/ttrpc/handshake.go",
    "content": "/*\n   Copyright The containerd Authors.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\npackage ttrpc\n\nimport (\n\t\"context\"\n\t\"net\"\n)\n\n// Handshaker defines the interface for connection handshakes performed on the\n// server or client when first connecting.\ntype Handshaker interface {\n\t// Handshake should confirm or decorate a connection that may be incoming\n\t// to a server or outgoing from a client.\n\t//\n\t// If this returns without an error, the caller should use the connection\n\t// in place of the original connection.\n\t//\n\t// The second return value can contain credential specific data, such as\n\t// unix socket credentials or TLS information.\n\t//\n\t// While we currently only have implementations on the server-side, this\n\t// interface should be sufficient to implement similar handshakes on the\n\t// client-side.\n\tHandshake(ctx context.Context, conn net.Conn) (net.Conn, interface{}, error)\n}\n\ntype handshakerFunc func(ctx context.Context, conn net.Conn) (net.Conn, interface{}, error)\n\nfunc (fn handshakerFunc) Handshake(ctx context.Context, conn net.Conn) (net.Conn, interface{}, error) {\n\treturn fn(ctx, conn)\n}\n\nfunc noopHandshake(_ context.Context, conn net.Conn) (net.Conn, interface{}, error) {\n\treturn conn, nil, nil\n}\n"
  },
  {
    "path": "vendor/github.com/containerd/ttrpc/interceptor.go",
    "content": "/*\n   Copyright The containerd Authors.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\npackage ttrpc\n\nimport \"context\"\n\n// UnaryServerInfo provides information about the server request\ntype UnaryServerInfo struct {\n\tFullMethod string\n}\n\n// UnaryClientInfo provides information about the client request\ntype UnaryClientInfo struct {\n\tFullMethod string\n}\n\n// StreamServerInfo provides information about the server request\ntype StreamServerInfo struct {\n\tFullMethod      string\n\tStreamingClient bool\n\tStreamingServer bool\n}\n\n// Unmarshaler contains the server request data and allows it to be unmarshaled\n// into a concrete type\ntype Unmarshaler func(interface{}) error\n\n// Invoker invokes the client's request and response from the ttrpc server\ntype Invoker func(context.Context, *Request, *Response) error\n\n// UnaryServerInterceptor specifies the interceptor function for server request/response\ntype UnaryServerInterceptor func(context.Context, Unmarshaler, *UnaryServerInfo, Method) (interface{}, error)\n\n// UnaryClientInterceptor specifies the interceptor function for client request/response\ntype UnaryClientInterceptor func(context.Context, *Request, *Response, *UnaryClientInfo, Invoker) error\n\nfunc defaultServerInterceptor(ctx context.Context, unmarshal Unmarshaler, _ *UnaryServerInfo, method Method) (interface{}, error) {\n\treturn method(ctx, unmarshal)\n}\n\nfunc defaultClientInterceptor(ctx context.Context, req *Request, resp *Response, _ *UnaryClientInfo, invoker Invoker) error {\n\treturn invoker(ctx, req, resp)\n}\n\ntype StreamServerInterceptor func(context.Context, StreamServer, *StreamServerInfo, StreamHandler) (interface{}, error)\n\nfunc defaultStreamServerInterceptor(ctx context.Context, ss StreamServer, _ *StreamServerInfo, stream StreamHandler) (interface{}, error) {\n\treturn stream(ctx, ss)\n}\n\ntype StreamClientInterceptor func(context.Context)\n"
  },
  {
    "path": "vendor/github.com/containerd/ttrpc/metadata.go",
    "content": "/*\n   Copyright The containerd Authors.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\npackage ttrpc\n\nimport (\n\t\"context\"\n\t\"strings\"\n)\n\n// MD is the user type for ttrpc metadata\ntype MD map[string][]string\n\n// Get returns the metadata for a given key when they exist.\n// If there is no metadata, a nil slice and false are returned.\nfunc (m MD) Get(key string) ([]string, bool) {\n\tkey = strings.ToLower(key)\n\tlist, ok := m[key]\n\tif !ok || len(list) == 0 {\n\t\treturn nil, false\n\t}\n\n\treturn list, true\n}\n\n// Set sets the provided values for a given key.\n// The values will overwrite any existing values.\n// If no values provided, a key will be deleted.\nfunc (m MD) Set(key string, values ...string) {\n\tkey = strings.ToLower(key)\n\tif len(values) == 0 {\n\t\tdelete(m, key)\n\t\treturn\n\t}\n\tm[key] = values\n}\n\n// Append appends additional values to the given key.\nfunc (m MD) Append(key string, values ...string) {\n\tkey = strings.ToLower(key)\n\tif len(values) == 0 {\n\t\treturn\n\t}\n\tcurrent, ok := m[key]\n\tif ok {\n\t\tm.Set(key, append(current, values...)...)\n\t} else {\n\t\tm.Set(key, values...)\n\t}\n}\n\n// Clone returns a copy of MD or nil if it's nil.\n// It's copied from golang's `http.Header.Clone` implementation:\n// https://cs.opensource.google/go/go/+/refs/tags/go1.23.4:src/net/http/header.go;l=94\nfunc (m MD) Clone() MD {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\t// Find total number of values.\n\tnv := 0\n\tfor _, vv := range m {\n\t\tnv += len(vv)\n\t}\n\tsv := make([]string, nv) // shared backing array for headers' values\n\tm2 := make(MD, len(m))\n\tfor k, vv := range m {\n\t\tif vv == nil {\n\t\t\t// Preserve nil values.\n\t\t\tm2[k] = nil\n\t\t\tcontinue\n\t\t}\n\t\tn := copy(sv, vv)\n\t\tm2[k] = sv[:n:n]\n\t\tsv = sv[n:]\n\t}\n\treturn m2\n}\n\nfunc (m MD) setRequest(r *Request) {\n\tfor k, values := range m {\n\t\tfor _, v := range values {\n\t\t\tr.Metadata = append(r.Metadata, &KeyValue{\n\t\t\t\tKey:   k,\n\t\t\t\tValue: v,\n\t\t\t})\n\t\t}\n\t}\n}\n\nfunc (m MD) fromRequest(r *Request) {\n\tfor _, kv := range r.Metadata {\n\t\tm[kv.Key] = append(m[kv.Key], kv.Value)\n\t}\n}\n\ntype metadataKey struct{}\n\n// GetMetadata retrieves metadata from context.Context (previously attached with WithMetadata)\nfunc GetMetadata(ctx context.Context) (MD, bool) {\n\tmetadata, ok := ctx.Value(metadataKey{}).(MD)\n\treturn metadata, ok\n}\n\n// GetMetadataValue gets a specific metadata value by name from context.Context\nfunc GetMetadataValue(ctx context.Context, name string) (string, bool) {\n\tmetadata, ok := GetMetadata(ctx)\n\tif !ok {\n\t\treturn \"\", false\n\t}\n\n\tif list, ok := metadata.Get(name); ok {\n\t\treturn list[0], true\n\t}\n\n\treturn \"\", false\n}\n\n// WithMetadata attaches metadata map to a context.Context\nfunc WithMetadata(ctx context.Context, md MD) context.Context {\n\treturn context.WithValue(ctx, metadataKey{}, md)\n}\n"
  },
  {
    "path": "vendor/github.com/containerd/ttrpc/request.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.28.1\n// \tprotoc        v3.20.1\n// source: github.com/containerd/ttrpc/request.proto\n\npackage ttrpc\n\nimport (\n\tstatus \"google.golang.org/genproto/googleapis/rpc/status\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tsync \"sync\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\ntype Request struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tService     string      `protobuf:\"bytes,1,opt,name=service,proto3\" json:\"service,omitempty\"`\n\tMethod      string      `protobuf:\"bytes,2,opt,name=method,proto3\" json:\"method,omitempty\"`\n\tPayload     []byte      `protobuf:\"bytes,3,opt,name=payload,proto3\" json:\"payload,omitempty\"`\n\tTimeoutNano int64       `protobuf:\"varint,4,opt,name=timeout_nano,json=timeoutNano,proto3\" json:\"timeout_nano,omitempty\"`\n\tMetadata    []*KeyValue `protobuf:\"bytes,5,rep,name=metadata,proto3\" json:\"metadata,omitempty\"`\n}\n\nfunc (x *Request) Reset() {\n\t*x = Request{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_github_com_containerd_ttrpc_request_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Request) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Request) ProtoMessage() {}\n\nfunc (x *Request) ProtoReflect() protoreflect.Message {\n\tmi := &file_github_com_containerd_ttrpc_request_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Request.ProtoReflect.Descriptor instead.\nfunc (*Request) Descriptor() ([]byte, []int) {\n\treturn file_github_com_containerd_ttrpc_request_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *Request) GetService() string {\n\tif x != nil {\n\t\treturn x.Service\n\t}\n\treturn \"\"\n}\n\nfunc (x *Request) GetMethod() string {\n\tif x != nil {\n\t\treturn x.Method\n\t}\n\treturn \"\"\n}\n\nfunc (x *Request) GetPayload() []byte {\n\tif x != nil {\n\t\treturn x.Payload\n\t}\n\treturn nil\n}\n\nfunc (x *Request) GetTimeoutNano() int64 {\n\tif x != nil {\n\t\treturn x.TimeoutNano\n\t}\n\treturn 0\n}\n\nfunc (x *Request) GetMetadata() []*KeyValue {\n\tif x != nil {\n\t\treturn x.Metadata\n\t}\n\treturn nil\n}\n\ntype Response struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tStatus  *status.Status `protobuf:\"bytes,1,opt,name=status,proto3\" json:\"status,omitempty\"`\n\tPayload []byte         `protobuf:\"bytes,2,opt,name=payload,proto3\" json:\"payload,omitempty\"`\n}\n\nfunc (x *Response) Reset() {\n\t*x = Response{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_github_com_containerd_ttrpc_request_proto_msgTypes[1]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Response) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Response) ProtoMessage() {}\n\nfunc (x *Response) ProtoReflect() protoreflect.Message {\n\tmi := &file_github_com_containerd_ttrpc_request_proto_msgTypes[1]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Response.ProtoReflect.Descriptor instead.\nfunc (*Response) Descriptor() ([]byte, []int) {\n\treturn file_github_com_containerd_ttrpc_request_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *Response) GetStatus() *status.Status {\n\tif x != nil {\n\t\treturn x.Status\n\t}\n\treturn nil\n}\n\nfunc (x *Response) GetPayload() []byte {\n\tif x != nil {\n\t\treturn x.Payload\n\t}\n\treturn nil\n}\n\ntype StringList struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tList []string `protobuf:\"bytes,1,rep,name=list,proto3\" json:\"list,omitempty\"`\n}\n\nfunc (x *StringList) Reset() {\n\t*x = StringList{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_github_com_containerd_ttrpc_request_proto_msgTypes[2]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *StringList) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*StringList) ProtoMessage() {}\n\nfunc (x *StringList) ProtoReflect() protoreflect.Message {\n\tmi := &file_github_com_containerd_ttrpc_request_proto_msgTypes[2]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use StringList.ProtoReflect.Descriptor instead.\nfunc (*StringList) Descriptor() ([]byte, []int) {\n\treturn file_github_com_containerd_ttrpc_request_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *StringList) GetList() []string {\n\tif x != nil {\n\t\treturn x.List\n\t}\n\treturn nil\n}\n\ntype KeyValue struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tKey   string `protobuf:\"bytes,1,opt,name=key,proto3\" json:\"key,omitempty\"`\n\tValue string `protobuf:\"bytes,2,opt,name=value,proto3\" json:\"value,omitempty\"`\n}\n\nfunc (x *KeyValue) Reset() {\n\t*x = KeyValue{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_github_com_containerd_ttrpc_request_proto_msgTypes[3]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *KeyValue) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*KeyValue) ProtoMessage() {}\n\nfunc (x *KeyValue) ProtoReflect() protoreflect.Message {\n\tmi := &file_github_com_containerd_ttrpc_request_proto_msgTypes[3]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use KeyValue.ProtoReflect.Descriptor instead.\nfunc (*KeyValue) Descriptor() ([]byte, []int) {\n\treturn file_github_com_containerd_ttrpc_request_proto_rawDescGZIP(), []int{3}\n}\n\nfunc (x *KeyValue) GetKey() string {\n\tif x != nil {\n\t\treturn x.Key\n\t}\n\treturn \"\"\n}\n\nfunc (x *KeyValue) GetValue() string {\n\tif x != nil {\n\t\treturn x.Value\n\t}\n\treturn \"\"\n}\n\nvar File_github_com_containerd_ttrpc_request_proto protoreflect.FileDescriptor\n\nvar file_github_com_containerd_ttrpc_request_proto_rawDesc = []byte{\n\t0x0a, 0x29, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x6e,\n\t0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x64, 0x2f, 0x74, 0x74, 0x72, 0x70, 0x63, 0x2f, 0x72, 0x65,\n\t0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x05, 0x74, 0x74, 0x72,\n\t0x70, 0x63, 0x1a, 0x12, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73,\n\t0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa5, 0x01, 0x0a, 0x07, 0x52, 0x65, 0x71, 0x75, 0x65,\n\t0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20,\n\t0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06,\n\t0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65,\n\t0x74, 0x68, 0x6f, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18,\n\t0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x21,\n\t0x0a, 0x0c, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x6e, 0x61, 0x6e, 0x6f, 0x18, 0x04,\n\t0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x4e, 0x61, 0x6e,\n\t0x6f, 0x12, 0x2b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20,\n\t0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x74, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x4b, 0x65, 0x79, 0x56,\n\t0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x45,\n\t0x0a, 0x08, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1f, 0x0a, 0x06, 0x73, 0x74,\n\t0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x53, 0x74, 0x61,\n\t0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x70,\n\t0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x61,\n\t0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x20, 0x0a, 0x0a, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c,\n\t0x69, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28,\n\t0x09, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x22, 0x32, 0x0a, 0x08, 0x4b, 0x65, 0x79, 0x56, 0x61,\n\t0x6c, 0x75, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,\n\t0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,\n\t0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x1d, 0x5a, 0x1b, 0x67,\n\t0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69,\n\t0x6e, 0x65, 0x72, 0x64, 0x2f, 0x74, 0x74, 0x72, 0x70, 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,\n\t0x6f, 0x33,\n}\n\nvar (\n\tfile_github_com_containerd_ttrpc_request_proto_rawDescOnce sync.Once\n\tfile_github_com_containerd_ttrpc_request_proto_rawDescData = file_github_com_containerd_ttrpc_request_proto_rawDesc\n)\n\nfunc file_github_com_containerd_ttrpc_request_proto_rawDescGZIP() []byte {\n\tfile_github_com_containerd_ttrpc_request_proto_rawDescOnce.Do(func() {\n\t\tfile_github_com_containerd_ttrpc_request_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_containerd_ttrpc_request_proto_rawDescData)\n\t})\n\treturn file_github_com_containerd_ttrpc_request_proto_rawDescData\n}\n\nvar file_github_com_containerd_ttrpc_request_proto_msgTypes = make([]protoimpl.MessageInfo, 4)\nvar file_github_com_containerd_ttrpc_request_proto_goTypes = []interface{}{\n\t(*Request)(nil),       // 0: ttrpc.Request\n\t(*Response)(nil),      // 1: ttrpc.Response\n\t(*StringList)(nil),    // 2: ttrpc.StringList\n\t(*KeyValue)(nil),      // 3: ttrpc.KeyValue\n\t(*status.Status)(nil), // 4: Status\n}\nvar file_github_com_containerd_ttrpc_request_proto_depIdxs = []int32{\n\t3, // 0: ttrpc.Request.metadata:type_name -> ttrpc.KeyValue\n\t4, // 1: ttrpc.Response.status:type_name -> Status\n\t2, // [2:2] is the sub-list for method output_type\n\t2, // [2:2] is the sub-list for method input_type\n\t2, // [2:2] is the sub-list for extension type_name\n\t2, // [2:2] is the sub-list for extension extendee\n\t0, // [0:2] is the sub-list for field type_name\n}\n\nfunc init() { file_github_com_containerd_ttrpc_request_proto_init() }\nfunc file_github_com_containerd_ttrpc_request_proto_init() {\n\tif File_github_com_containerd_ttrpc_request_proto != nil {\n\t\treturn\n\t}\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_github_com_containerd_ttrpc_request_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Request); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_github_com_containerd_ttrpc_request_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Response); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_github_com_containerd_ttrpc_request_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*StringList); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_github_com_containerd_ttrpc_request_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*KeyValue); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_github_com_containerd_ttrpc_request_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   4,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_github_com_containerd_ttrpc_request_proto_goTypes,\n\t\tDependencyIndexes: file_github_com_containerd_ttrpc_request_proto_depIdxs,\n\t\tMessageInfos:      file_github_com_containerd_ttrpc_request_proto_msgTypes,\n\t}.Build()\n\tFile_github_com_containerd_ttrpc_request_proto = out.File\n\tfile_github_com_containerd_ttrpc_request_proto_rawDesc = nil\n\tfile_github_com_containerd_ttrpc_request_proto_goTypes = nil\n\tfile_github_com_containerd_ttrpc_request_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/containerd/ttrpc/request.proto",
    "content": "syntax = \"proto3\";\n\npackage ttrpc;\n\nimport \"proto/status.proto\";\n\noption go_package = \"github.com/containerd/ttrpc\";\n\nmessage Request {\n\tstring service = 1;\n\tstring method = 2;\n\tbytes payload = 3;\n\tint64 timeout_nano = 4;\n\trepeated KeyValue metadata = 5;\n}\n\nmessage Response {\n\tStatus status = 1;\n\tbytes payload = 2;\n}\n\nmessage StringList {\n\trepeated string list = 1;\n}\n\nmessage KeyValue {\n\tstring key = 1;\n\tstring value = 2;\n}\n"
  },
  {
    "path": "vendor/github.com/containerd/ttrpc/server.go",
    "content": "/*\n   Copyright The containerd Authors.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\npackage ttrpc\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"io\"\n\t\"math/rand\"\n\t\"net\"\n\t\"sync\"\n\t\"sync/atomic\"\n\t\"syscall\"\n\t\"time\"\n\n\t\"github.com/containerd/log\"\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/status\"\n)\n\ntype Server struct {\n\tconfig   *serverConfig\n\tservices *serviceSet\n\tcodec    codec\n\n\tmu          sync.Mutex\n\tlisteners   map[net.Listener]struct{}\n\tconnections map[*serverConn]struct{} // all connections to current state\n\tdone        chan struct{}            // marks point at which we stop serving requests\n}\n\nfunc NewServer(opts ...ServerOpt) (*Server, error) {\n\tconfig := &serverConfig{}\n\tfor _, opt := range opts {\n\t\tif err := opt(config); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\tif config.interceptor == nil {\n\t\tconfig.interceptor = defaultServerInterceptor\n\t}\n\n\treturn &Server{\n\t\tconfig:      config,\n\t\tservices:    newServiceSet(config.interceptor),\n\t\tdone:        make(chan struct{}),\n\t\tlisteners:   make(map[net.Listener]struct{}),\n\t\tconnections: make(map[*serverConn]struct{}),\n\t}, nil\n}\n\n// Register registers a map of methods to method handlers\n// TODO: Remove in 2.0, does not support streams\nfunc (s *Server) Register(name string, methods map[string]Method) {\n\ts.services.register(name, &ServiceDesc{Methods: methods})\n}\n\nfunc (s *Server) RegisterService(name string, desc *ServiceDesc) {\n\ts.services.register(name, desc)\n}\n\nfunc (s *Server) Serve(ctx context.Context, l net.Listener) error {\n\ts.mu.Lock()\n\ts.addListenerLocked(l)\n\tdefer s.closeListener(l)\n\n\tselect {\n\tcase <-s.done:\n\t\ts.mu.Unlock()\n\t\treturn ErrServerClosed\n\tdefault:\n\t}\n\ts.mu.Unlock()\n\n\tvar (\n\t\tbackoff    time.Duration\n\t\thandshaker = s.config.handshaker\n\t)\n\n\tif handshaker == nil {\n\t\thandshaker = handshakerFunc(noopHandshake)\n\t}\n\n\tfor {\n\t\tconn, err := l.Accept()\n\t\tif err != nil {\n\t\t\tselect {\n\t\t\tcase <-s.done:\n\t\t\t\treturn ErrServerClosed\n\t\t\tdefault:\n\t\t\t}\n\n\t\t\tif terr, ok := err.(interface {\n\t\t\t\tTemporary() bool\n\t\t\t}); ok && terr.Temporary() {\n\t\t\t\tif backoff == 0 {\n\t\t\t\t\tbackoff = time.Millisecond\n\t\t\t\t} else {\n\t\t\t\t\tbackoff *= 2\n\t\t\t\t}\n\n\t\t\t\tif max := time.Second; backoff > max {\n\t\t\t\t\tbackoff = max\n\t\t\t\t}\n\n\t\t\t\tsleep := time.Duration(rand.Int63n(int64(backoff)))\n\t\t\t\tlog.G(ctx).WithError(err).Errorf(\"ttrpc: failed accept; backoff %v\", sleep)\n\t\t\t\ttime.Sleep(sleep)\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\treturn err\n\t\t}\n\n\t\tbackoff = 0\n\n\t\tapproved, handshake, err := handshaker.Handshake(ctx, conn)\n\t\tif err != nil {\n\t\t\tlog.G(ctx).WithError(err).Error(\"ttrpc: refusing connection after handshake\")\n\t\t\tconn.Close()\n\t\t\tcontinue\n\t\t}\n\n\t\tsc, err := s.newConn(approved, handshake)\n\t\tif err != nil {\n\t\t\tlog.G(ctx).WithError(err).Error(\"ttrpc: create connection failed\")\n\t\t\tconn.Close()\n\t\t\tcontinue\n\t\t}\n\n\t\tgo sc.run(ctx)\n\t}\n}\n\nfunc (s *Server) Shutdown(ctx context.Context) error {\n\ts.mu.Lock()\n\tselect {\n\tcase <-s.done:\n\tdefault:\n\t\t// protected by mutex\n\t\tclose(s.done)\n\t}\n\tlnerr := s.closeListeners()\n\ts.mu.Unlock()\n\n\tticker := time.NewTicker(200 * time.Millisecond)\n\tdefer ticker.Stop()\n\tfor {\n\t\ts.closeIdleConns()\n\n\t\tif s.countConnection() == 0 {\n\t\t\tbreak\n\t\t}\n\n\t\tselect {\n\t\tcase <-ctx.Done():\n\t\t\treturn ctx.Err()\n\t\tcase <-ticker.C:\n\t\t}\n\t}\n\n\treturn lnerr\n}\n\n// Close the server without waiting for active connections.\nfunc (s *Server) Close() error {\n\ts.mu.Lock()\n\tdefer s.mu.Unlock()\n\n\tselect {\n\tcase <-s.done:\n\tdefault:\n\t\t// protected by mutex\n\t\tclose(s.done)\n\t}\n\n\terr := s.closeListeners()\n\tfor c := range s.connections {\n\t\tc.close()\n\t\tdelete(s.connections, c)\n\t}\n\n\treturn err\n}\n\nfunc (s *Server) addListenerLocked(l net.Listener) {\n\ts.listeners[l] = struct{}{}\n}\n\nfunc (s *Server) closeListener(l net.Listener) error {\n\ts.mu.Lock()\n\tdefer s.mu.Unlock()\n\n\treturn s.closeListenerLocked(l)\n}\n\nfunc (s *Server) closeListenerLocked(l net.Listener) error {\n\tdefer delete(s.listeners, l)\n\treturn l.Close()\n}\n\nfunc (s *Server) closeListeners() error {\n\tvar err error\n\tfor l := range s.listeners {\n\t\tif cerr := s.closeListenerLocked(l); cerr != nil && err == nil {\n\t\t\terr = cerr\n\t\t}\n\t}\n\treturn err\n}\n\nfunc (s *Server) addConnection(c *serverConn) error {\n\ts.mu.Lock()\n\tdefer s.mu.Unlock()\n\n\tselect {\n\tcase <-s.done:\n\t\treturn ErrServerClosed\n\tdefault:\n\t}\n\n\ts.connections[c] = struct{}{}\n\treturn nil\n}\n\nfunc (s *Server) delConnection(c *serverConn) {\n\ts.mu.Lock()\n\tdefer s.mu.Unlock()\n\n\tdelete(s.connections, c)\n}\n\nfunc (s *Server) countConnection() int {\n\ts.mu.Lock()\n\tdefer s.mu.Unlock()\n\n\treturn len(s.connections)\n}\n\nfunc (s *Server) closeIdleConns() {\n\ts.mu.Lock()\n\tdefer s.mu.Unlock()\n\n\tfor c := range s.connections {\n\t\tif st, ok := c.getState(); !ok || st == connStateActive {\n\t\t\tcontinue\n\t\t}\n\t\tc.close()\n\t\tdelete(s.connections, c)\n\t}\n}\n\ntype connState int\n\nconst (\n\tconnStateActive = iota + 1 // outstanding requests\n\tconnStateIdle              // no requests\n\tconnStateClosed            // closed connection\n)\n\nfunc (cs connState) String() string {\n\tswitch cs {\n\tcase connStateActive:\n\t\treturn \"active\"\n\tcase connStateIdle:\n\t\treturn \"idle\"\n\tcase connStateClosed:\n\t\treturn \"closed\"\n\tdefault:\n\t\treturn \"unknown\"\n\t}\n}\n\nfunc (s *Server) newConn(conn net.Conn, handshake interface{}) (*serverConn, error) {\n\tc := &serverConn{\n\t\tserver:    s,\n\t\tconn:      conn,\n\t\thandshake: handshake,\n\t\tshutdown:  make(chan struct{}),\n\t}\n\tc.setState(connStateIdle)\n\tif err := s.addConnection(c); err != nil {\n\t\tc.close()\n\t\treturn nil, err\n\t}\n\treturn c, nil\n}\n\ntype serverConn struct {\n\tserver    *Server\n\tconn      net.Conn\n\thandshake interface{} // data from handshake, not used for now\n\tstate     atomic.Value\n\n\tshutdownOnce sync.Once\n\tshutdown     chan struct{} // forced shutdown, used by close\n}\n\nfunc (c *serverConn) getState() (connState, bool) {\n\tcs, ok := c.state.Load().(connState)\n\treturn cs, ok\n}\n\nfunc (c *serverConn) setState(newstate connState) {\n\tc.state.Store(newstate)\n}\n\nfunc (c *serverConn) close() error {\n\tc.shutdownOnce.Do(func() {\n\t\tclose(c.shutdown)\n\t})\n\n\treturn nil\n}\n\nfunc (c *serverConn) run(sctx context.Context) {\n\ttype (\n\t\tresponse struct {\n\t\t\tid          uint32\n\t\t\tstatus      *status.Status\n\t\t\tdata        []byte\n\t\t\tcloseStream bool\n\t\t\tstreaming   bool\n\t\t}\n\t)\n\n\tvar (\n\t\tch                     = newChannel(c.conn)\n\t\tctx, cancel            = context.WithCancel(sctx)\n\t\tstate        connState = connStateIdle\n\t\tresponses              = make(chan response)\n\t\trecvErr                = make(chan error, 1)\n\t\tdone                   = make(chan struct{})\n\t\tstreams                = sync.Map{}\n\t\tactive       int32\n\t\tlastStreamID uint32\n\t)\n\n\tdefer c.conn.Close()\n\tdefer cancel()\n\tdefer close(done)\n\tdefer c.server.delConnection(c)\n\n\tsendStatus := func(id uint32, st *status.Status) bool {\n\t\tselect {\n\t\tcase responses <- response{\n\t\t\t// even though we've had an invalid stream id, we send it\n\t\t\t// back on the same stream id so the client knows which\n\t\t\t// stream id was bad.\n\t\t\tid:          id,\n\t\t\tstatus:      st,\n\t\t\tcloseStream: true,\n\t\t}:\n\t\t\treturn true\n\t\tcase <-c.shutdown:\n\t\t\treturn false\n\t\tcase <-done:\n\t\t\treturn false\n\t\t}\n\t}\n\n\tgo func(recvErr chan error) {\n\t\tdefer close(recvErr)\n\t\tfor {\n\t\t\tselect {\n\t\t\tcase <-c.shutdown:\n\t\t\t\treturn\n\t\t\tcase <-done:\n\t\t\t\treturn\n\t\t\tdefault: // proceed\n\t\t\t}\n\n\t\t\tmh, p, err := ch.recv()\n\t\t\tif err != nil {\n\t\t\t\tstatus, ok := status.FromError(err)\n\t\t\t\tif !ok {\n\t\t\t\t\trecvErr <- err\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\t// in this case, we send an error for that particular message\n\t\t\t\t// when the status is defined.\n\t\t\t\tif !sendStatus(mh.StreamID, status) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif mh.StreamID%2 != 1 {\n\t\t\t\t// enforce odd client initiated identifiers.\n\t\t\t\tif !sendStatus(mh.StreamID, status.Newf(codes.InvalidArgument, \"StreamID must be odd for client initiated streams\")) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif mh.Type == messageTypeData {\n\t\t\t\ti, ok := streams.Load(mh.StreamID)\n\t\t\t\tif !ok {\n\t\t\t\t\tif !sendStatus(mh.StreamID, status.Newf(codes.InvalidArgument, \"StreamID is no longer active\")) {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tsh := i.(*streamHandler)\n\t\t\t\tif mh.Flags&flagNoData != flagNoData {\n\t\t\t\t\tunmarshal := func(obj interface{}) error {\n\t\t\t\t\t\terr := protoUnmarshal(p, obj)\n\t\t\t\t\t\tch.putmbuf(p)\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\n\t\t\t\t\tif err := sh.data(unmarshal); err != nil {\n\t\t\t\t\t\tif !sendStatus(mh.StreamID, status.Newf(codes.InvalidArgument, \"data handling error: %v\", err)) {\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif mh.Flags&flagRemoteClosed == flagRemoteClosed {\n\t\t\t\t\tsh.closeSend()\n\t\t\t\t\tif len(p) > 0 {\n\t\t\t\t\t\tif !sendStatus(mh.StreamID, status.Newf(codes.InvalidArgument, \"data close message cannot include data\")) {\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if mh.Type == messageTypeRequest {\n\t\t\t\tif mh.StreamID <= lastStreamID {\n\t\t\t\t\t// enforce odd client initiated identifiers.\n\t\t\t\t\tif !sendStatus(mh.StreamID, status.Newf(codes.InvalidArgument, \"StreamID cannot be re-used and must increment\")) {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\tcontinue\n\n\t\t\t\t}\n\t\t\t\tlastStreamID = mh.StreamID\n\n\t\t\t\t// TODO: Make request type configurable\n\t\t\t\t// Unmarshaller which takes in a byte array and returns an interface?\n\t\t\t\tvar req Request\n\t\t\t\tif err := c.server.codec.Unmarshal(p, &req); err != nil {\n\t\t\t\t\tch.putmbuf(p)\n\t\t\t\t\tif !sendStatus(mh.StreamID, status.Newf(codes.InvalidArgument, \"unmarshal request error: %v\", err)) {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tch.putmbuf(p)\n\n\t\t\t\tid := mh.StreamID\n\t\t\t\trespond := func(status *status.Status, data []byte, streaming, closeStream bool) error {\n\t\t\t\t\tselect {\n\t\t\t\t\tcase responses <- response{\n\t\t\t\t\t\tid:          id,\n\t\t\t\t\t\tstatus:      status,\n\t\t\t\t\t\tdata:        data,\n\t\t\t\t\t\tcloseStream: closeStream,\n\t\t\t\t\t\tstreaming:   streaming,\n\t\t\t\t\t}:\n\t\t\t\t\tcase <-done:\n\t\t\t\t\t\treturn ErrClosed\n\t\t\t\t\t}\n\t\t\t\t\treturn nil\n\t\t\t\t}\n\t\t\t\tsh, err := c.server.services.handle(ctx, &req, respond)\n\t\t\t\tif err != nil {\n\t\t\t\t\tstatus, _ := status.FromError(err)\n\t\t\t\t\tif !sendStatus(mh.StreamID, status) {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tstreams.Store(id, sh)\n\t\t\t\tatomic.AddInt32(&active, 1)\n\t\t\t}\n\t\t\t// TODO: else we must ignore this for future compat. log this?\n\t\t}\n\t}(recvErr)\n\n\tfor {\n\t\tvar (\n\t\t\tnewstate connState\n\t\t\tshutdown chan struct{}\n\t\t)\n\n\t\tactiveN := atomic.LoadInt32(&active)\n\t\tif activeN > 0 {\n\t\t\tnewstate = connStateActive\n\t\t\tshutdown = nil\n\t\t} else {\n\t\t\tnewstate = connStateIdle\n\t\t\tshutdown = c.shutdown // only enable this branch in idle mode\n\t\t}\n\t\tif newstate != state {\n\t\t\tc.setState(newstate)\n\t\t\tstate = newstate\n\t\t}\n\n\t\tselect {\n\t\tcase response := <-responses:\n\t\t\tif !response.streaming || response.status.Code() != codes.OK {\n\t\t\t\tp, err := c.server.codec.Marshal(&Response{\n\t\t\t\t\tStatus:  response.status.Proto(),\n\t\t\t\t\tPayload: response.data,\n\t\t\t\t})\n\t\t\t\tif err != nil {\n\t\t\t\t\tlog.G(ctx).WithError(err).Error(\"failed marshaling response\")\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tif err := ch.send(response.id, messageTypeResponse, 0, p); err != nil {\n\t\t\t\t\tlog.G(ctx).WithError(err).Error(\"failed sending message on channel\")\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tvar flags uint8\n\t\t\t\tif response.closeStream {\n\t\t\t\t\tflags = flagRemoteClosed\n\t\t\t\t}\n\t\t\t\tif response.data == nil {\n\t\t\t\t\tflags = flags | flagNoData\n\t\t\t\t}\n\t\t\t\tif err := ch.send(response.id, messageTypeData, flags, response.data); err != nil {\n\t\t\t\t\tlog.G(ctx).WithError(err).Error(\"failed sending message on channel\")\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif response.closeStream {\n\t\t\t\t// The ttrpc protocol currently does not support the case where\n\t\t\t\t// the server is localClosed but not remoteClosed. Once the server\n\t\t\t\t// is closing, the whole stream may be considered finished\n\t\t\t\tstreams.Delete(response.id)\n\t\t\t\tatomic.AddInt32(&active, -1)\n\t\t\t}\n\t\tcase err := <-recvErr:\n\t\t\t// TODO(stevvooe): Not wildly clear what we should do in this\n\t\t\t// branch. Basically, it means that we are no longer receiving\n\t\t\t// requests due to a terminal error.\n\t\t\trecvErr = nil // connection is now \"closing\"\n\t\t\tif errors.Is(err, io.EOF) || errors.Is(err, io.ErrUnexpectedEOF) || errors.Is(err, syscall.ECONNRESET) {\n\t\t\t\t// The client went away and we should stop processing\n\t\t\t\t// requests, so that the client connection is closed\n\t\t\t\treturn\n\t\t\t}\n\t\t\tlog.G(ctx).WithError(err).Error(\"error receiving message\")\n\t\t\t// else, initiate shutdown\n\t\tcase <-shutdown:\n\t\t\treturn\n\t\t}\n\t}\n}\n\nvar noopFunc = func() {}\n\nfunc getRequestContext(ctx context.Context, req *Request) (retCtx context.Context, cancel func()) {\n\tif len(req.Metadata) > 0 {\n\t\tmd := MD{}\n\t\tmd.fromRequest(req)\n\t\tctx = WithMetadata(ctx, md)\n\t}\n\n\tcancel = noopFunc\n\tif req.TimeoutNano == 0 {\n\t\treturn ctx, cancel\n\t}\n\n\tctx, cancel = context.WithTimeout(ctx, time.Duration(req.TimeoutNano))\n\treturn ctx, cancel\n}\n"
  },
  {
    "path": "vendor/github.com/containerd/ttrpc/services.go",
    "content": "/*\n   Copyright The containerd Authors.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\npackage ttrpc\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"path\"\n\t\"unsafe\"\n\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/status\"\n\t\"google.golang.org/protobuf/proto\"\n)\n\ntype Method func(ctx context.Context, unmarshal func(interface{}) error) (interface{}, error)\n\ntype StreamHandler func(context.Context, StreamServer) (interface{}, error)\n\ntype Stream struct {\n\tHandler         StreamHandler\n\tStreamingClient bool\n\tStreamingServer bool\n}\n\ntype ServiceDesc struct {\n\tMethods map[string]Method\n\tStreams map[string]Stream\n}\n\ntype serviceSet struct {\n\tservices          map[string]*ServiceDesc\n\tunaryInterceptor  UnaryServerInterceptor\n\tstreamInterceptor StreamServerInterceptor\n}\n\nfunc newServiceSet(interceptor UnaryServerInterceptor) *serviceSet {\n\treturn &serviceSet{\n\t\tservices:          make(map[string]*ServiceDesc),\n\t\tunaryInterceptor:  interceptor,\n\t\tstreamInterceptor: defaultStreamServerInterceptor,\n\t}\n}\n\nfunc (s *serviceSet) register(name string, desc *ServiceDesc) {\n\tif _, ok := s.services[name]; ok {\n\t\tpanic(fmt.Errorf(\"duplicate service %v registered\", name))\n\t}\n\n\ts.services[name] = desc\n}\n\nfunc (s *serviceSet) unaryCall(ctx context.Context, method Method, info *UnaryServerInfo, data []byte) (p []byte, st *status.Status) {\n\tunmarshal := func(obj interface{}) error {\n\t\treturn protoUnmarshal(data, obj)\n\t}\n\n\tresp, err := s.unaryInterceptor(ctx, unmarshal, info, method)\n\tif err == nil {\n\t\tif isNil(resp) {\n\t\t\terr = errors.New(\"ttrpc: marshal called with nil\")\n\t\t} else {\n\t\t\tp, err = protoMarshal(resp)\n\t\t}\n\t}\n\n\tst, ok := status.FromError(err)\n\tif !ok {\n\t\tst = status.New(convertCode(err), err.Error())\n\t}\n\n\treturn p, st\n}\n\nfunc (s *serviceSet) streamCall(ctx context.Context, stream StreamHandler, info *StreamServerInfo, ss StreamServer) (p []byte, st *status.Status) {\n\tresp, err := s.streamInterceptor(ctx, ss, info, stream)\n\tif err == nil {\n\t\tp, err = protoMarshal(resp)\n\t}\n\tst, ok := status.FromError(err)\n\tif !ok {\n\t\tst = status.New(convertCode(err), err.Error())\n\t}\n\treturn\n}\n\nfunc (s *serviceSet) handle(ctx context.Context, req *Request, respond func(*status.Status, []byte, bool, bool) error) (*streamHandler, error) {\n\tsrv, ok := s.services[req.Service]\n\tif !ok {\n\t\treturn nil, status.Errorf(codes.Unimplemented, \"service %v\", req.Service)\n\t}\n\n\tif method, ok := srv.Methods[req.Method]; ok {\n\t\tgo func() {\n\t\t\tctx, cancel := getRequestContext(ctx, req)\n\t\t\tdefer cancel()\n\n\t\t\tinfo := &UnaryServerInfo{\n\t\t\t\tFullMethod: fullPath(req.Service, req.Method),\n\t\t\t}\n\t\t\tp, st := s.unaryCall(ctx, method, info, req.Payload)\n\n\t\t\trespond(st, p, false, true)\n\t\t}()\n\t\treturn nil, nil\n\t}\n\tif stream, ok := srv.Streams[req.Method]; ok {\n\t\tctx, cancel := getRequestContext(ctx, req)\n\t\tinfo := &StreamServerInfo{\n\t\t\tFullMethod:      fullPath(req.Service, req.Method),\n\t\t\tStreamingClient: stream.StreamingClient,\n\t\t\tStreamingServer: stream.StreamingServer,\n\t\t}\n\t\tsh := &streamHandler{\n\t\t\tctx:     ctx,\n\t\t\trespond: respond,\n\t\t\trecv:    make(chan Unmarshaler, 5),\n\t\t\tinfo:    info,\n\t\t}\n\t\tgo func() {\n\t\t\tdefer cancel()\n\t\t\tp, st := s.streamCall(ctx, stream.Handler, info, sh)\n\t\t\trespond(st, p, stream.StreamingServer, true)\n\t\t}()\n\n\t\t// Empty proto messages serialized to 0 payloads,\n\t\t// so signatures like: rpc Stream(google.protobuf.Empty) returns (stream Data);\n\t\t// don't get invoked here, which causes hang on client side.\n\t\t// See https://github.com/containerd/ttrpc/issues/126\n\t\tif req.Payload != nil || !info.StreamingClient {\n\t\t\tunmarshal := func(obj interface{}) error {\n\t\t\t\treturn protoUnmarshal(req.Payload, obj)\n\t\t\t}\n\t\t\tif err := sh.data(unmarshal); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\n\t\treturn sh, nil\n\t}\n\treturn nil, status.Errorf(codes.Unimplemented, \"method %v\", req.Method)\n}\n\ntype streamHandler struct {\n\tctx     context.Context\n\trespond func(*status.Status, []byte, bool, bool) error\n\trecv    chan Unmarshaler\n\tinfo    *StreamServerInfo\n\n\tremoteClosed bool\n\tlocalClosed  bool\n}\n\nfunc (s *streamHandler) closeSend() {\n\tif !s.remoteClosed {\n\t\ts.remoteClosed = true\n\t\tclose(s.recv)\n\t}\n}\n\nfunc (s *streamHandler) data(unmarshal Unmarshaler) error {\n\tif s.remoteClosed {\n\t\treturn ErrStreamClosed\n\t}\n\tselect {\n\tcase s.recv <- unmarshal:\n\t\treturn nil\n\tcase <-s.ctx.Done():\n\t\treturn s.ctx.Err()\n\t}\n}\n\nfunc (s *streamHandler) SendMsg(m interface{}) error {\n\tif s.localClosed {\n\t\treturn ErrStreamClosed\n\t}\n\tp, err := protoMarshal(m)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn s.respond(nil, p, true, false)\n}\n\nfunc (s *streamHandler) RecvMsg(m interface{}) error {\n\tselect {\n\tcase unmarshal, ok := <-s.recv:\n\t\tif !ok {\n\t\t\treturn io.EOF\n\t\t}\n\t\treturn unmarshal(m)\n\tcase <-s.ctx.Done():\n\t\treturn s.ctx.Err()\n\n\t}\n}\n\nfunc protoUnmarshal(p []byte, obj interface{}) error {\n\tswitch v := obj.(type) {\n\tcase proto.Message:\n\t\tif err := proto.Unmarshal(p, v); err != nil {\n\t\t\treturn status.Errorf(codes.Internal, \"ttrpc: error unmarshalling payload: %v\", err.Error())\n\t\t}\n\tdefault:\n\t\treturn status.Errorf(codes.Internal, \"ttrpc: error unsupported request type: %T\", v)\n\t}\n\treturn nil\n}\n\nfunc protoMarshal(obj interface{}) ([]byte, error) {\n\tif obj == nil {\n\t\treturn nil, nil\n\t}\n\n\tswitch v := obj.(type) {\n\tcase proto.Message:\n\t\tr, err := proto.Marshal(v)\n\t\tif err != nil {\n\t\t\treturn nil, status.Errorf(codes.Internal, \"ttrpc: error marshaling payload: %v\", err.Error())\n\t\t}\n\n\t\treturn r, nil\n\tdefault:\n\t\treturn nil, status.Errorf(codes.Internal, \"ttrpc: error unsupported response type: %T\", v)\n\t}\n}\n\n// convertCode maps stdlib go errors into grpc space.\n//\n// This is ripped from the grpc-go code base.\nfunc convertCode(err error) codes.Code {\n\tswitch err {\n\tcase nil:\n\t\treturn codes.OK\n\tcase io.EOF:\n\t\treturn codes.OutOfRange\n\tcase io.ErrClosedPipe, io.ErrNoProgress, io.ErrShortBuffer, io.ErrShortWrite, io.ErrUnexpectedEOF:\n\t\treturn codes.FailedPrecondition\n\tcase os.ErrInvalid:\n\t\treturn codes.InvalidArgument\n\tcase context.Canceled:\n\t\treturn codes.Canceled\n\tcase context.DeadlineExceeded:\n\t\treturn codes.DeadlineExceeded\n\t}\n\tswitch {\n\tcase os.IsExist(err):\n\t\treturn codes.AlreadyExists\n\tcase os.IsNotExist(err):\n\t\treturn codes.NotFound\n\tcase os.IsPermission(err):\n\t\treturn codes.PermissionDenied\n\t}\n\treturn codes.Unknown\n}\n\nfunc fullPath(service, method string) string {\n\treturn \"/\" + path.Join(service, method)\n}\n\nfunc isNil(resp interface{}) bool {\n\treturn (*[2]uintptr)(unsafe.Pointer(&resp))[1] == 0\n}\n"
  },
  {
    "path": "vendor/github.com/containerd/ttrpc/stream.go",
    "content": "/*\n   Copyright The containerd Authors.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\npackage ttrpc\n\nimport (\n\t\"context\"\n\t\"sync\"\n)\n\ntype streamID uint32\n\ntype streamMessage struct {\n\theader  messageHeader\n\tpayload []byte\n}\n\ntype stream struct {\n\tid     streamID\n\tsender sender\n\trecv   chan *streamMessage\n\n\tcloseOnce sync.Once\n\trecvErr   error\n\trecvClose chan struct{}\n}\n\nfunc newStream(id streamID, send sender) *stream {\n\treturn &stream{\n\t\tid:        id,\n\t\tsender:    send,\n\t\trecv:      make(chan *streamMessage, 1),\n\t\trecvClose: make(chan struct{}),\n\t}\n}\n\nfunc (s *stream) closeWithError(err error) error {\n\ts.closeOnce.Do(func() {\n\t\tif err != nil {\n\t\t\ts.recvErr = err\n\t\t} else {\n\t\t\ts.recvErr = ErrClosed\n\t\t}\n\t\tclose(s.recvClose)\n\t})\n\treturn nil\n}\n\nfunc (s *stream) send(mt messageType, flags uint8, b []byte) error {\n\treturn s.sender.send(uint32(s.id), mt, flags, b)\n}\n\nfunc (s *stream) receive(ctx context.Context, msg *streamMessage) error {\n\tselect {\n\tcase <-s.recvClose:\n\t\treturn s.recvErr\n\tdefault:\n\t}\n\tselect {\n\tcase <-s.recvClose:\n\t\treturn s.recvErr\n\tcase s.recv <- msg:\n\t\treturn nil\n\tcase <-ctx.Done():\n\t\treturn ctx.Err()\n\t}\n}\n\ntype sender interface {\n\tsend(uint32, messageType, uint8, []byte) error\n}\n"
  },
  {
    "path": "vendor/github.com/containerd/ttrpc/stream_server.go",
    "content": "/*\n   Copyright The containerd Authors.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\npackage ttrpc\n\ntype StreamServer interface {\n\tSendMsg(m interface{}) error\n\tRecvMsg(m interface{}) error\n}\n"
  },
  {
    "path": "vendor/github.com/containerd/ttrpc/test.proto",
    "content": "syntax = \"proto3\";\n\npackage ttrpc;\n\noption go_package = \"github.com/containerd/ttrpc/internal\";\n\nmessage TestPayload {\n\tstring foo = 1;\n\tint64 deadline = 2;\n\tstring metadata = 3;\n}\n\nmessage EchoPayload {\n\tint64 seq = 1;\n\tstring msg = 2;\n}\n"
  },
  {
    "path": "vendor/github.com/containerd/ttrpc/unixcreds_linux.go",
    "content": "/*\n   Copyright The containerd Authors.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\npackage ttrpc\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"os\"\n\t\"syscall\"\n\n\t\"golang.org/x/sys/unix\"\n)\n\ntype UnixCredentialsFunc func(*unix.Ucred) error\n\nfunc (fn UnixCredentialsFunc) Handshake(_ context.Context, conn net.Conn) (net.Conn, interface{}, error) {\n\tuc, err := requireUnixSocket(conn)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"ttrpc.UnixCredentialsFunc: require unix socket: %w\", err)\n\t}\n\n\trs, err := uc.SyscallConn()\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"ttrpc.UnixCredentialsFunc: (net.UnixConn).SyscallConn failed: %w\", err)\n\t}\n\tvar (\n\t\tucred    *unix.Ucred\n\t\tucredErr error\n\t)\n\tif err := rs.Control(func(fd uintptr) {\n\t\tucred, ucredErr = unix.GetsockoptUcred(int(fd), unix.SOL_SOCKET, unix.SO_PEERCRED)\n\t}); err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"ttrpc.UnixCredentialsFunc: (*syscall.RawConn).Control failed: %w\", err)\n\t}\n\n\tif ucredErr != nil {\n\t\treturn nil, nil, fmt.Errorf(\"ttrpc.UnixCredentialsFunc: failed to retrieve socket peer credentials: %w\", ucredErr)\n\t}\n\n\tif err := fn(ucred); err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"ttrpc.UnixCredentialsFunc: credential check failed: %w\", err)\n\t}\n\n\treturn uc, ucred, nil\n}\n\n// UnixSocketRequireUidGid requires specific *effective* UID/GID, rather than the real UID/GID.\n//\n// For example, if a daemon binary is owned by the root (UID 0) with SUID bit but running as an\n// unprivileged user (UID 1001), the effective UID becomes 0, and the real UID becomes 1001.\n// So calling this function with uid=0 allows a connection from effective UID 0 but rejects\n// a connection from effective UID 1001.\n//\n// See socket(7), SO_PEERCRED: \"The returned credentials are those that were in effect at the time of the call to connect(2) or socketpair(2).\"\nfunc UnixSocketRequireUidGid(uid, gid int) UnixCredentialsFunc {\n\treturn func(ucred *unix.Ucred) error {\n\t\treturn requireUidGid(ucred, uid, gid)\n\t}\n}\n\nfunc UnixSocketRequireRoot() UnixCredentialsFunc {\n\treturn UnixSocketRequireUidGid(0, 0)\n}\n\n// UnixSocketRequireSameUser resolves the current effective unix user and returns a\n// UnixCredentialsFunc that will validate incoming unix connections against the\n// current credentials.\n//\n// This is useful when using abstract sockets that are accessible by all users.\nfunc UnixSocketRequireSameUser() UnixCredentialsFunc {\n\teuid, egid := os.Geteuid(), os.Getegid()\n\treturn UnixSocketRequireUidGid(euid, egid)\n}\n\nfunc requireUidGid(ucred *unix.Ucred, uid, gid int) error {\n\tif (uid != -1 && uint32(uid) != ucred.Uid) || (gid != -1 && uint32(gid) != ucred.Gid) {\n\t\treturn fmt.Errorf(\"ttrpc: invalid credentials: %v\", syscall.EPERM)\n\t}\n\treturn nil\n}\n\nfunc requireUnixSocket(conn net.Conn) (*net.UnixConn, error) {\n\tuc, ok := conn.(*net.UnixConn)\n\tif !ok {\n\t\treturn nil, errors.New(\"a unix socket connection is required\")\n\t}\n\n\treturn uc, nil\n}\n"
  },
  {
    "path": "vendor/github.com/cyphar/filepath-securejoin/.golangci.yml",
    "content": "# SPDX-License-Identifier: MPL-2.0\n\n# Copyright (C) 2025 Aleksa Sarai <cyphar@cyphar.com>\n# Copyright (C) 2025 SUSE LLC\n#\n# This Source Code Form is subject to the terms of the Mozilla Public\n# License, v. 2.0. If a copy of the MPL was not distributed with this\n# file, You can obtain one at https://mozilla.org/MPL/2.0/.\n\nversion: \"2\"\n\nrun:\n  build-tags:\n    - libpathrs\n\nlinters:\n  enable:\n    - asasalint\n    - asciicheck\n    - containedctx\n    - contextcheck\n    - errcheck\n    - errorlint\n    - exhaustive\n    - forcetypeassert\n    - godot\n    - goprintffuncname\n    - govet\n    - importas\n    - ineffassign\n    - makezero\n    - misspell\n    - musttag\n    - nilerr\n    - nilnesserr\n    - nilnil\n    - noctx\n    - prealloc\n    - revive\n    - staticcheck\n    - testifylint\n    - unconvert\n    - unparam\n    - unused\n    - usetesting\n  settings:\n    govet:\n      enable:\n        - nilness\n    testifylint:\n      enable-all: true\n\nformatters:\n  enable:\n    - gofumpt\n    - goimports\n  settings:\n    goimports:\n      local-prefixes:\n        - github.com/cyphar/filepath-securejoin\n"
  },
  {
    "path": "vendor/github.com/cyphar/filepath-securejoin/CHANGELOG.md",
    "content": "# Changelog #\nAll notable changes to this project will be documented in this file.\n\nThe format is based on [Keep a Changelog](http://keepachangelog.com/)\nand this project adheres to [Semantic Versioning](http://semver.org/).\n\n## [Unreleased] ##\n\n## [0.6.1] - 2025-11-19 ##\n\n> At last up jumped the cunning spider, and fiercely held her fast.\n\n### Fixed ###\n- Our logic for deciding whether to use `openat2(2)` or fallback to an `O_PATH`\n  resolver would cache the result to avoid doing needless test runs of\n  `openat2(2)`. However, this causes issues when `pathrs-lite` is being used by\n  a program that applies new seccomp-bpf filters onto itself -- if the filter\n  denies `openat2(2)` then we would return that error rather than falling back\n  to the `O_PATH` resolver. To resolve this issue, we no longer cache the\n  result if `openat2(2)` was successful, only if there was an error.\n- A file descriptor leak in our `openat2` wrapper (when doing the necessary\n  `dup` for `RESOLVE_IN_ROOT`) has been removed.\n\n## [0.5.2] - 2025-11-19 ##\n\n> \"Will you walk into my parlour?\" said a spider to a fly.\n\n### Fixed ###\n- Our logic for deciding whether to use `openat2(2)` or fallback to an `O_PATH`\n  resolver would cache the result to avoid doing needless test runs of\n  `openat2(2)`. However, this causes issues when `pathrs-lite` is being used by\n  a program that applies new seccomp-bpf filters onto itself -- if the filter\n  denies `openat2(2)` then we would return that error rather than falling back\n  to the `O_PATH` resolver. To resolve this issue, we no longer cache the\n  result if `openat2(2)` was successful, only if there was an error.\n- A file descriptor leak in our `openat2` wrapper (when doing the necessary\n  `dup` for `RESOLVE_IN_ROOT`) has been removed.\n\n## [0.6.0] - 2025-11-03 ##\n\n> By the Power of Greyskull!\n\n### Breaking ###\n- The deprecated `MkdirAll`, `MkdirAllHandle`, `OpenInRoot`, `OpenatInRoot` and\n  `Reopen` wrappers have been removed. Please switch to using `pathrs-lite`\n  directly.\n\n### Added ###\n- `pathrs-lite` now has support for using libpathrs as a backend. This is\n  opt-in and can be enabled at build time with the `libpathrs` build tag. The\n  intention is to allow for downstream libraries and other projects to make use\n  of the pure-Go `github.com/cyphar/filepath-securejoin/pathrs-lite` package\n  and distributors can then opt-in to using `libpathrs` for the entire binary\n  if they wish.\n\n## [0.5.1] - 2025-10-31 ##\n\n> Spooky scary skeletons send shivers down your spine!\n\n### Changed ###\n- `openat2` can return `-EAGAIN` if it detects a possible attack in certain\n  scenarios (namely if there was a rename or mount while walking a path with a\n  `..` component). While this is necessary to avoid a denial-of-service in the\n  kernel, it does require retry loops in userspace.\n\n  In previous versions, `pathrs-lite` would retry `openat2` 32 times before\n  returning an error, but we've received user reports that this limit can be\n  hit on systems with very heavy load. In some synthetic benchmarks (testing\n  the worst-case of an attacker doing renames in a tight loop on every core of\n  a 16-core machine) we managed to get a ~3% failure rate in runc. We have\n  improved this situation in two ways:\n\n  * We have now increased this limit to 128, which should be good enough for\n    most use-cases without becoming a denial-of-service vector (the number of\n    syscalls called by the `O_PATH` resolver in a typical case is within the\n    same ballpark). The same benchmarks show a failure rate of ~0.12% which\n    (while not zero) is probably sufficient for most users.\n\n  * In addition, we now return a `unix.EAGAIN` error that is bubbled up and can\n    be detected by callers. This means that callers with stricter requirements\n    to avoid spurious errors can choose to do their own infinite `EAGAIN` retry\n    loop (though we would strongly recommend users use time-based deadlines in\n    such retry loops to avoid potentially unbounded denials-of-service).\n\n## [0.5.0] - 2025-09-26 ##\n\n> Let the past die. Kill it if you have to.\n\n> **NOTE**: With this release, some parts of\n> `github.com/cyphar/filepath-securejoin` are now licensed under the Mozilla\n> Public License (version 2). Please see [COPYING.md][] as well as the the\n> license header in each file for more details.\n\n[COPYING.md]: ./COPYING.md\n\n### Breaking ###\n- The new API introduced in the [0.3.0][] release has been moved to a new\n  subpackage called `pathrs-lite`. This was primarily done to better indicate\n  the split between the new and old APIs, as well as indicate to users the\n  purpose of this subpackage (it is a less complete version of [libpathrs][]).\n\n  We have added some wrappers to the top-level package to ease the transition,\n  but those are deprecated and will be removed in the next minor release of\n  filepath-securejoin. Users should update their import paths.\n\n  This new subpackage has also been relicensed under the Mozilla Public License\n  (version 2), please see [COPYING.md][] for more details.\n\n### Added ###\n- Most of the key bits the safe `procfs` API have now been exported and are\n  available in `github.com/cyphar/filepath-securejoin/pathrs-lite/procfs`. At\n  the moment this primarily consists of a new `procfs.Handle` API:\n\n   * `OpenProcRoot` returns a new handle to `/proc`, endeavouring to make it\n     safe if possible (`subset=pid` to protect against mistaken write attacks\n     and leaks, as well as using `fsopen(2)` to avoid racing mount attacks).\n\n     `OpenUnsafeProcRoot` returns a handle without attempting to create one\n     with `subset=pid`, which makes it more dangerous to leak. Most users\n     should use `OpenProcRoot` (even if you need to use `ProcRoot` as the base\n     of an operation, as filepath-securejoin will internally open a handle when\n     necessary).\n\n   * The `(*procfs.Handle).Open*` family of methods lets you get a safe\n     `O_PATH` handle to subpaths within `/proc` for certain subpaths.\n\n     For `OpenThreadSelf`, the returned `ProcThreadSelfCloser` needs to be\n     called after you completely finish using the handle (this is necessary\n     because Go is multi-threaded and `ProcThreadSelf` references\n     `/proc/thread-self` which may disappear if we do not\n     `runtime.LockOSThread` -- `ProcThreadSelfCloser` is currently equivalent\n     to `runtime.UnlockOSThread`).\n\n     Note that you cannot open any `procfs` symlinks (most notably magic-links)\n     using this API. At the moment, filepath-securejoin does not support this\n     feature (but [libpathrs][] does).\n\n   * `ProcSelfFdReadlink` lets you get the in-kernel path representation of a\n     file descriptor (think `readlink(\"/proc/self/fd/...\")`), except that we\n     verify that there aren't any tricky overmounts that could fool the\n     process.\n\n     Please be aware that the returned string is simply a snapshot at that\n     particular moment, and an attacker could move the file being pointed to.\n     In addition, complex namespace configurations could result in non-sensical\n     or confusing paths to be returned. The value received from this function\n     should only be used as secondary verification of some security property,\n     not as proof that a particular handle has a particular path.\n\n  The procfs handle used internally by the API is the same as the rest of\n  `filepath-securejoin` (for privileged programs this is usually a private\n  in-process `procfs` instance created with `fsopen(2)`).\n\n  As before, this is intended as a stop-gap before users migrate to\n  [libpathrs][], which provides a far more extensive safe `procfs` API and is\n  generally more robust.\n\n- Previously, the hardened procfs implementation (used internally within\n  `Reopen` and `Open(at)InRoot`) only protected against overmount attacks on\n  systems with `openat2(2)` (Linux 5.6) or systems with `fsopen(2)` or\n  `open_tree(2)` (Linux 5.2) and programs with privileges to use them (with\n  some caveats about locked mounts that probably affect very few users). For\n  other users, an attacker with the ability to create malicious mounts (on most\n  systems, a sysadmin) could trick you into operating on files you didn't\n  expect. This attack only really makes sense in the context of container\n  runtime implementations.\n\n  This was considered a reasonable trade-off, as the long-term intention was to\n  get all users to just switch to [libpathrs][] if they wanted to use the safe\n  `procfs` API (which had more extensive protections, and is what these new\n  protections in `filepath-securejoin` are based on). However, as the API\n  is now being exported it seems unwise to advertise the API as \"safe\" if we do\n  not protect against known attacks.\n\n  The procfs API is now more protected against attackers on systems lacking the\n  aforementioned protections. However, the most comprehensive of these\n  protections effectively rely on [`statx(STATX_MNT_ID)`][statx.2] (Linux 5.8).\n  On older kernel versions, there is no effective protection (there is some\n  minimal protection against non-`procfs` filesystem components but a\n  sufficiently clever attacker can work around those). In addition,\n  `STATX_MNT_ID` is vulnerable to mount ID reuse attacks by sufficiently\n  motivated and privileged attackers -- this problem is mitigated with\n  `STATX_MNT_ID_UNIQUE` (Linux 6.8) but that raises the minimum kernel version\n  for more protection.\n\n  The fact that these protections are quite limited despite needing a fair bit\n  of extra code to handle was one of the primary reasons we did not initially\n  implement this in `filepath-securejoin` ([libpathrs][] supports all of this,\n  of course).\n\n### Fixed ###\n- RHEL 8 kernels have backports of `fsopen(2)` but in some testing we've found\n  that it has very bad (and very difficult to debug) performance issues, and so\n  we will explicitly refuse to use `fsopen(2)` if the running kernel version is\n  pre-5.2 and will instead fallback to `open(\"/proc\")`.\n\n[CVE-2024-21626]: https://github.com/opencontainers/runc/security/advisories/GHSA-xr7r-f8xq-vfvv\n[libpathrs]: https://github.com/cyphar/libpathrs\n[statx.2]: https://www.man7.org/linux/man-pages/man2/statx.2.html\n\n## [0.4.1] - 2025-01-28 ##\n\n### Fixed ###\n- The restrictions added for `root` paths passed to `SecureJoin` in 0.4.0 was\n  found to be too strict and caused some regressions when folks tried to\n  update, so this restriction has been relaxed to only return an error if the\n  path contains a `..` component. We still recommend users use `filepath.Clean`\n  (and even `filepath.EvalSymlinks`) on the `root` path they are using, but at\n  least you will no longer be punished for \"trivial\" unclean paths.\n\n## [0.4.0] - 2025-01-13 ##\n\n### Breaking ####\n- `SecureJoin(VFS)` will now return an error if the provided `root` is not a\n  `filepath.Clean`'d path.\n\n  While it is ultimately the responsibility of the caller to ensure the root is\n  a safe path to use, passing a path like `/symlink/..` as a root would result\n  in the `SecureJoin`'d path being placed in `/` even though `/symlink/..`\n  might be a different directory, and so we should more strongly discourage\n  such usage.\n\n  All major users of `securejoin.SecureJoin` already ensure that the paths they\n  provide are safe (and this is ultimately a question of user error), but\n  removing this foot-gun is probably a good idea. Of course, this is\n  necessarily a breaking API change (though we expect no real users to be\n  affected by it).\n\n  Thanks to [Erik Sjölund](https://github.com/eriksjolund), who initially\n  reported this issue as a possible security issue.\n\n- `MkdirAll` and `MkdirHandle` now take an `os.FileMode`-style mode argument\n  instead of a raw `unix.S_*`-style mode argument, which may cause compile-time\n  type errors depending on how you use `filepath-securejoin`. For most users,\n  there will be no change in behaviour aside from the type change (as the\n  bottom `0o777` bits are the same in both formats, and most users are probably\n  only using those bits).\n\n  However, if you were using `unix.S_ISVTX` to set the sticky bit with\n  `MkdirAll(Handle)` you will need to switch to `os.ModeSticky` otherwise you\n  will get a runtime error with this update. In addition, the error message you\n  will get from passing `unix.S_ISUID` and `unix.S_ISGID` will be different as\n  they are treated as invalid bits now (note that previously passing said bits\n  was also an error).\n\n## [0.3.6] - 2024-12-17 ##\n\n### Compatibility ###\n- The minimum Go version requirement for `filepath-securejoin` is now Go 1.18\n  (we use generics internally).\n\n  For reference, `filepath-securejoin@v0.3.0` somewhat-arbitrarily bumped the\n  Go version requirement to 1.21.\n\n  While we did make some use of Go 1.21 stdlib features (and in principle Go\n  versions <= 1.21 are no longer even supported by upstream anymore), some\n  downstreams have complained that the version bump has meant that they have to\n  do workarounds when backporting fixes that use the new `filepath-securejoin`\n  API onto old branches. This is not an ideal situation, but since using this\n  library is probably better for most downstreams than a hand-rolled\n  workaround, we now have compatibility shims that allow us to build on older\n  Go versions.\n- Lower minimum version requirement for `golang.org/x/sys` to `v0.18.0` (we\n  need the wrappers for `fsconfig(2)`), which should also make backporting\n  patches to older branches easier.\n\n## [0.3.5] - 2024-12-06 ##\n\n### Fixed ###\n- `MkdirAll` will now no longer return an `EEXIST` error if two racing\n  processes are creating the same directory. We will still verify that the path\n  is a directory, but this will avoid spurious errors when multiple threads or\n  programs are trying to `MkdirAll` the same path. opencontainers/runc#4543\n\n## [0.3.4] - 2024-10-09 ##\n\n### Fixed ###\n- Previously, some testing mocks we had resulted in us doing `import \"testing\"`\n  in non-`_test.go` code, which made some downstreams like Kubernetes unhappy.\n  This has been fixed. (#32)\n\n## [0.3.3] - 2024-09-30 ##\n\n### Fixed ###\n- The mode and owner verification logic in `MkdirAll` has been removed. This\n  was originally intended to protect against some theoretical attacks but upon\n  further consideration these protections don't actually buy us anything and\n  they were causing spurious errors with more complicated filesystem setups.\n- The \"is the created directory empty\" logic in `MkdirAll` has also been\n  removed. This was not causing us issues yet, but some pseudofilesystems (such\n  as `cgroup`) create non-empty directories and so this logic would've been\n  wrong for such cases.\n\n## [0.3.2] - 2024-09-13 ##\n\n### Changed ###\n- Passing the `S_ISUID` or `S_ISGID` modes to `MkdirAllInRoot` will now return\n  an explicit error saying that those bits are ignored by `mkdirat(2)`. In the\n  past a different error was returned, but since the silent ignoring behaviour\n  is codified in the man pages a more explicit error seems apt. While silently\n  ignoring these bits would be the most compatible option, it could lead to\n  users thinking their code sets these bits when it doesn't. Programs that need\n  to deal with compatibility can mask the bits themselves. (#23, #25)\n\n### Fixed ###\n- If a directory has `S_ISGID` set, then all child directories will have\n  `S_ISGID` set when created and a different gid will be used for any inode\n  created under the directory. Previously, the \"expected owner and mode\"\n  validation in `securejoin.MkdirAll` did not correctly handle this. We now\n  correctly handle this case. (#24, #25)\n\n## [0.3.1] - 2024-07-23 ##\n\n### Changed ###\n- By allowing `Open(at)InRoot` to opt-out of the extra work done by `MkdirAll`\n  to do the necessary \"partial lookups\", `Open(at)InRoot` now does less work\n  for both implementations (resulting in a many-fold decrease in the number of\n  operations for `openat2`, and a modest improvement for non-`openat2`) and is\n  far more guaranteed to match the correct `openat2(RESOLVE_IN_ROOT)`\n  behaviour.\n- We now use `readlinkat(fd, \"\")` where possible. For `Open(at)InRoot` this\n  effectively just means that we no longer risk getting spurious errors during\n  rename races. However, for our hardened procfs handler, this in theory should\n  prevent mount attacks from tricking us when doing magic-link readlinks (even\n  when using the unsafe host `/proc` handle). Unfortunately `Reopen` is still\n  potentially vulnerable to those kinds of somewhat-esoteric attacks.\n\n  Technically this [will only work on post-2.6.39 kernels][linux-readlinkat-emptypath]\n  but it seems incredibly unlikely anyone is using `filepath-securejoin` on a\n  pre-2011 kernel.\n\n### Fixed ###\n- Several improvements were made to the errors returned by `Open(at)InRoot` and\n  `MkdirAll` when dealing with invalid paths under the emulated (ie.\n  non-`openat2`) implementation. Previously, some paths would return the wrong\n  error (`ENOENT` when the last component was a non-directory), and other paths\n  would be returned as though they were acceptable (trailing-slash components\n  after a non-directory would be ignored by `Open(at)InRoot`).\n\n  These changes were done to match `openat2`'s behaviour and purely is a\n  consistency fix (most users are going to be using `openat2` anyway).\n\n[linux-readlinkat-emptypath]: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=65cfc6722361570bfe255698d9cd4dccaf47570d\n\n## [0.3.0] - 2024-07-11 ##\n\n### Added ###\n- A new set of `*os.File`-based APIs have been added. These are adapted from\n  [libpathrs][] and we strongly suggest using them if possible (as they provide\n  far more protection against attacks than `SecureJoin`):\n\n   - `Open(at)InRoot` resolves a path inside a rootfs and returns an `*os.File`\n     handle to the path. Note that the handle returned is an `O_PATH` handle,\n     which cannot be used for reading or writing (as well as some other\n     operations -- [see open(2) for more details][open.2])\n\n   - `Reopen` takes an `O_PATH` file handle and safely re-opens it to upgrade\n     it to a regular handle. This can also be used with non-`O_PATH` handles,\n     but `O_PATH` is the most obvious application.\n\n   - `MkdirAll` is an implementation of `os.MkdirAll` that is safe to use to\n     create a directory tree within a rootfs.\n\n  As these are new APIs, they may change in the future. However, they should be\n  safe to start migrating to as we have extensive tests ensuring they behave\n  correctly and are safe against various races and other attacks.\n\n[libpathrs]: https://github.com/cyphar/libpathrs\n[open.2]: https://www.man7.org/linux/man-pages/man2/open.2.html\n\n## [0.2.5] - 2024-05-03 ##\n\n### Changed ###\n- Some minor changes were made to how lexical components (like `..` and `.`)\n  are handled during path generation in `SecureJoin`. There is no behaviour\n  change as a result of this fix (the resulting paths are the same).\n\n### Fixed ###\n- The error returned when we hit a symlink loop now references the correct\n  path. (#10)\n\n## [0.2.4] - 2023-09-06 ##\n\n### Security ###\n- This release fixes a potential security issue in filepath-securejoin when\n  used on Windows ([GHSA-6xv5-86q9-7xr8][], which could be used to generate\n  paths outside of the provided rootfs in certain cases), as well as improving\n  the overall behaviour of filepath-securejoin when dealing with Windows paths\n  that contain volume names. Thanks to Paulo Gomes for discovering and fixing\n  these issues.\n\n### Fixed ###\n- Switch to GitHub Actions for CI so we can test on Windows as well as Linux\n  and MacOS.\n\n[GHSA-6xv5-86q9-7xr8]: https://github.com/advisories/GHSA-6xv5-86q9-7xr8\n\n## [0.2.3] - 2021-06-04 ##\n\n### Changed ###\n- Switch to Go 1.13-style `%w` error wrapping, letting us drop the dependency\n  on `github.com/pkg/errors`.\n\n## [0.2.2] - 2018-09-05 ##\n\n### Changed ###\n- Use `syscall.ELOOP` as the base error for symlink loops, rather than our own\n  (internal) error. This allows callers to more easily use `errors.Is` to check\n  for this case.\n\n## [0.2.1] - 2018-09-05 ##\n\n### Fixed ###\n- Use our own `IsNotExist` implementation, which lets us handle `ENOTDIR`\n  properly within `SecureJoin`.\n\n## [0.2.0] - 2017-07-19 ##\n\nWe now have 100% test coverage!\n\n### Added ###\n- Add a `SecureJoinVFS` API that can be used for mocking (as we do in our new\n  tests) or for implementing custom handling of lookup operations (such as for\n  rootless containers, where work is necessary to access directories with weird\n  modes because we don't have `CAP_DAC_READ_SEARCH` or `CAP_DAC_OVERRIDE`).\n\n## 0.1.0 - 2017-07-19\n\nThis is our first release of `github.com/cyphar/filepath-securejoin`,\ncontaining a full implementation with a coverage of 93.5% (the only missing\ncases are the error cases, which are hard to mocktest at the moment).\n\n[Unreleased]: https://github.com/cyphar/filepath-securejoin/compare/v0.6.1...HEAD\n[0.6.1]: https://github.com/cyphar/filepath-securejoin/compare/v0.6.0...v0.6.1\n[0.6.0]: https://github.com/cyphar/filepath-securejoin/compare/v0.5.0...v0.6.0\n[0.5.2]: https://github.com/cyphar/filepath-securejoin/compare/v0.5.1...v0.5.2\n[0.5.1]: https://github.com/cyphar/filepath-securejoin/compare/v0.5.0...v0.5.1\n[0.5.0]: https://github.com/cyphar/filepath-securejoin/compare/v0.4.1...v0.5.0\n[0.4.1]: https://github.com/cyphar/filepath-securejoin/compare/v0.4.0...v0.4.1\n[0.4.0]: https://github.com/cyphar/filepath-securejoin/compare/v0.3.6...v0.4.0\n[0.3.6]: https://github.com/cyphar/filepath-securejoin/compare/v0.3.5...v0.3.6\n[0.3.5]: https://github.com/cyphar/filepath-securejoin/compare/v0.3.4...v0.3.5\n[0.3.4]: https://github.com/cyphar/filepath-securejoin/compare/v0.3.3...v0.3.4\n[0.3.3]: https://github.com/cyphar/filepath-securejoin/compare/v0.3.2...v0.3.3\n[0.3.2]: https://github.com/cyphar/filepath-securejoin/compare/v0.3.1...v0.3.2\n[0.3.1]: https://github.com/cyphar/filepath-securejoin/compare/v0.3.0...v0.3.1\n[0.3.0]: https://github.com/cyphar/filepath-securejoin/compare/v0.2.5...v0.3.0\n[0.2.5]: https://github.com/cyphar/filepath-securejoin/compare/v0.2.4...v0.2.5\n[0.2.4]: https://github.com/cyphar/filepath-securejoin/compare/v0.2.3...v0.2.4\n[0.2.3]: https://github.com/cyphar/filepath-securejoin/compare/v0.2.2...v0.2.3\n[0.2.2]: https://github.com/cyphar/filepath-securejoin/compare/v0.2.1...v0.2.2\n[0.2.1]: https://github.com/cyphar/filepath-securejoin/compare/v0.2.0...v0.2.1\n[0.2.0]: https://github.com/cyphar/filepath-securejoin/compare/v0.1.0...v0.2.0\n"
  },
  {
    "path": "vendor/github.com/cyphar/filepath-securejoin/COPYING.md",
    "content": "## COPYING ##\n\n`SPDX-License-Identifier: BSD-3-Clause AND MPL-2.0`\n\nThis project is made up of code licensed under different licenses. Which code\nyou use will have an impact on whether only one or both licenses apply to your\nusage of this library.\n\nNote that **each file** in this project individually has a code comment at the\nstart describing the license of that particular file -- this is the most\naccurate license information of this project; in case there is any conflict\nbetween this document and the comment at the start of a file, the comment shall\ntake precedence. The only purpose of this document is to work around [a known\ntechnical limitation of pkg.go.dev's license checking tool when dealing with\nnon-trivial project licenses][go75067].\n\n[go75067]: https://go.dev/issue/75067\n\n### `BSD-3-Clause` ###\n\nAt time of writing, the following files and directories are licensed under the\nBSD-3-Clause license:\n\n * `doc.go`\n * `join*.go`\n * `vfs.go`\n * `internal/consts/*.go`\n * `pathrs-lite/internal/gocompat/*.go`\n * `pathrs-lite/internal/kernelversion/*.go`\n\nThe text of the BSD-3-Clause license used by this project is the following (the\ntext is also available from the [`LICENSE.BSD`](./LICENSE.BSD) file):\n\n```\nCopyright (C) 2014-2015 Docker Inc & Go Authors. All rights reserved.\nCopyright (C) 2017-2024 SUSE LLC. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n   * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n   * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n   * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n```\n\n### `MPL-2.0` ###\n\nAll other files (unless otherwise marked) are licensed under the Mozilla Public\nLicense (version 2.0).\n\nThe text of the Mozilla Public License (version 2.0) is the following (the text\nis also available from the [`LICENSE.MPL-2.0`](./LICENSE.MPL-2.0) file):\n\n```\nMozilla Public License Version 2.0\n==================================\n\n1. Definitions\n--------------\n\n1.1. \"Contributor\"\n    means each individual or legal entity that creates, contributes to\n    the creation of, or owns Covered Software.\n\n1.2. \"Contributor Version\"\n    means the combination of the Contributions of others (if any) used\n    by a Contributor and that particular Contributor's Contribution.\n\n1.3. \"Contribution\"\n    means Covered Software of a particular Contributor.\n\n1.4. \"Covered Software\"\n    means Source Code Form to which the initial Contributor has attached\n    the notice in Exhibit A, the Executable Form of such Source Code\n    Form, and Modifications of such Source Code Form, in each case\n    including portions thereof.\n\n1.5. \"Incompatible With Secondary Licenses\"\n    means\n\n    (a) that the initial Contributor has attached the notice described\n        in Exhibit B to the Covered Software; or\n\n    (b) that the Covered Software was made available under the terms of\n        version 1.1 or earlier of the License, but not also under the\n        terms of a Secondary License.\n\n1.6. \"Executable Form\"\n    means any form of the work other than Source Code Form.\n\n1.7. \"Larger Work\"\n    means a work that combines Covered Software with other material, in\n    a separate file or files, that is not Covered Software.\n\n1.8. \"License\"\n    means this document.\n\n1.9. \"Licensable\"\n    means having the right to grant, to the maximum extent possible,\n    whether at the time of the initial grant or subsequently, any and\n    all of the rights conveyed by this License.\n\n1.10. \"Modifications\"\n    means any of the following:\n\n    (a) any file in Source Code Form that results from an addition to,\n        deletion from, or modification of the contents of Covered\n        Software; or\n\n    (b) any new file in Source Code Form that contains any Covered\n        Software.\n\n1.11. \"Patent Claims\" of a Contributor\n    means any patent claim(s), including without limitation, method,\n    process, and apparatus claims, in any patent Licensable by such\n    Contributor that would be infringed, but for the grant of the\n    License, by the making, using, selling, offering for sale, having\n    made, import, or transfer of either its Contributions or its\n    Contributor Version.\n\n1.12. \"Secondary License\"\n    means either the GNU General Public License, Version 2.0, the GNU\n    Lesser General Public License, Version 2.1, the GNU Affero General\n    Public License, Version 3.0, or any later versions of those\n    licenses.\n\n1.13. \"Source Code Form\"\n    means the form of the work preferred for making modifications.\n\n1.14. \"You\" (or \"Your\")\n    means an individual or a legal entity exercising rights under this\n    License. For legal entities, \"You\" includes any entity that\n    controls, is controlled by, or is under common control with You. For\n    purposes of this definition, \"control\" means (a) the power, direct\n    or indirect, to cause the direction or management of such entity,\n    whether by contract or otherwise, or (b) ownership of more than\n    fifty percent (50%) of the outstanding shares or beneficial\n    ownership of such entity.\n\n2. License Grants and Conditions\n--------------------------------\n\n2.1. Grants\n\nEach Contributor hereby grants You a world-wide, royalty-free,\nnon-exclusive license:\n\n(a) under intellectual property rights (other than patent or trademark)\n    Licensable by such Contributor to use, reproduce, make available,\n    modify, display, perform, distribute, and otherwise exploit its\n    Contributions, either on an unmodified basis, with Modifications, or\n    as part of a Larger Work; and\n\n(b) under Patent Claims of such Contributor to make, use, sell, offer\n    for sale, have made, import, and otherwise transfer either its\n    Contributions or its Contributor Version.\n\n2.2. Effective Date\n\nThe licenses granted in Section 2.1 with respect to any Contribution\nbecome effective for each Contribution on the date the Contributor first\ndistributes such Contribution.\n\n2.3. Limitations on Grant Scope\n\nThe licenses granted in this Section 2 are the only rights granted under\nthis License. No additional rights or licenses will be implied from the\ndistribution or licensing of Covered Software under this License.\nNotwithstanding Section 2.1(b) above, no patent license is granted by a\nContributor:\n\n(a) for any code that a Contributor has removed from Covered Software;\n    or\n\n(b) for infringements caused by: (i) Your and any other third party's\n    modifications of Covered Software, or (ii) the combination of its\n    Contributions with other software (except as part of its Contributor\n    Version); or\n\n(c) under Patent Claims infringed by Covered Software in the absence of\n    its Contributions.\n\nThis License does not grant any rights in the trademarks, service marks,\nor logos of any Contributor (except as may be necessary to comply with\nthe notice requirements in Section 3.4).\n\n2.4. Subsequent Licenses\n\nNo Contributor makes additional grants as a result of Your choice to\ndistribute the Covered Software under a subsequent version of this\nLicense (see Section 10.2) or under the terms of a Secondary License (if\npermitted under the terms of Section 3.3).\n\n2.5. Representation\n\nEach Contributor represents that the Contributor believes its\nContributions are its original creation(s) or it has sufficient rights\nto grant the rights to its Contributions conveyed by this License.\n\n2.6. Fair Use\n\nThis License is not intended to limit any rights You have under\napplicable copyright doctrines of fair use, fair dealing, or other\nequivalents.\n\n2.7. Conditions\n\nSections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted\nin Section 2.1.\n\n3. Responsibilities\n-------------------\n\n3.1. Distribution of Source Form\n\nAll distribution of Covered Software in Source Code Form, including any\nModifications that You create or to which You contribute, must be under\nthe terms of this License. You must inform recipients that the Source\nCode Form of the Covered Software is governed by the terms of this\nLicense, and how they can obtain a copy of this License. You may not\nattempt to alter or restrict the recipients' rights in the Source Code\nForm.\n\n3.2. Distribution of Executable Form\n\nIf You distribute Covered Software in Executable Form then:\n\n(a) such Covered Software must also be made available in Source Code\n    Form, as described in Section 3.1, and You must inform recipients of\n    the Executable Form how they can obtain a copy of such Source Code\n    Form by reasonable means in a timely manner, at a charge no more\n    than the cost of distribution to the recipient; and\n\n(b) You may distribute such Executable Form under the terms of this\n    License, or sublicense it under different terms, provided that the\n    license for the Executable Form does not attempt to limit or alter\n    the recipients' rights in the Source Code Form under this License.\n\n3.3. Distribution of a Larger Work\n\nYou may create and distribute a Larger Work under terms of Your choice,\nprovided that You also comply with the requirements of this License for\nthe Covered Software. If the Larger Work is a combination of Covered\nSoftware with a work governed by one or more Secondary Licenses, and the\nCovered Software is not Incompatible With Secondary Licenses, this\nLicense permits You to additionally distribute such Covered Software\nunder the terms of such Secondary License(s), so that the recipient of\nthe Larger Work may, at their option, further distribute the Covered\nSoftware under the terms of either this License or such Secondary\nLicense(s).\n\n3.4. Notices\n\nYou may not remove or alter the substance of any license notices\n(including copyright notices, patent notices, disclaimers of warranty,\nor limitations of liability) contained within the Source Code Form of\nthe Covered Software, except that You may alter any license notices to\nthe extent required to remedy known factual inaccuracies.\n\n3.5. Application of Additional Terms\n\nYou may choose to offer, and to charge a fee for, warranty, support,\nindemnity or liability obligations to one or more recipients of Covered\nSoftware. However, You may do so only on Your own behalf, and not on\nbehalf of any Contributor. You must make it absolutely clear that any\nsuch warranty, support, indemnity, or liability obligation is offered by\nYou alone, and You hereby agree to indemnify every Contributor for any\nliability incurred by such Contributor as a result of warranty, support,\nindemnity or liability terms You offer. You may include additional\ndisclaimers of warranty and limitations of liability specific to any\njurisdiction.\n\n4. Inability to Comply Due to Statute or Regulation\n---------------------------------------------------\n\nIf it is impossible for You to comply with any of the terms of this\nLicense with respect to some or all of the Covered Software due to\nstatute, judicial order, or regulation then You must: (a) comply with\nthe terms of this License to the maximum extent possible; and (b)\ndescribe the limitations and the code they affect. Such description must\nbe placed in a text file included with all distributions of the Covered\nSoftware under this License. Except to the extent prohibited by statute\nor regulation, such description must be sufficiently detailed for a\nrecipient of ordinary skill to be able to understand it.\n\n5. Termination\n--------------\n\n5.1. The rights granted under this License will terminate automatically\nif You fail to comply with any of its terms. However, if You become\ncompliant, then the rights granted under this License from a particular\nContributor are reinstated (a) provisionally, unless and until such\nContributor explicitly and finally terminates Your grants, and (b) on an\nongoing basis, if such Contributor fails to notify You of the\nnon-compliance by some reasonable means prior to 60 days after You have\ncome back into compliance. Moreover, Your grants from a particular\nContributor are reinstated on an ongoing basis if such Contributor\nnotifies You of the non-compliance by some reasonable means, this is the\nfirst time You have received notice of non-compliance with this License\nfrom such Contributor, and You become compliant prior to 30 days after\nYour receipt of the notice.\n\n5.2. If You initiate litigation against any entity by asserting a patent\ninfringement claim (excluding declaratory judgment actions,\ncounter-claims, and cross-claims) alleging that a Contributor Version\ndirectly or indirectly infringes any patent, then the rights granted to\nYou by any and all Contributors for the Covered Software under Section\n2.1 of this License shall terminate.\n\n5.3. In the event of termination under Sections 5.1 or 5.2 above, all\nend user license agreements (excluding distributors and resellers) which\nhave been validly granted by You or Your distributors under this License\nprior to termination shall survive termination.\n\n************************************************************************\n*                                                                      *\n*  6. Disclaimer of Warranty                                           *\n*  -------------------------                                           *\n*                                                                      *\n*  Covered Software is provided under this License on an \"as is\"       *\n*  basis, without warranty of any kind, either expressed, implied, or  *\n*  statutory, including, without limitation, warranties that the       *\n*  Covered Software is free of defects, merchantable, fit for a        *\n*  particular purpose or non-infringing. The entire risk as to the     *\n*  quality and performance of the Covered Software is with You.        *\n*  Should any Covered Software prove defective in any respect, You     *\n*  (not any Contributor) assume the cost of any necessary servicing,   *\n*  repair, or correction. This disclaimer of warranty constitutes an   *\n*  essential part of this License. No use of any Covered Software is   *\n*  authorized under this License except under this disclaimer.         *\n*                                                                      *\n************************************************************************\n\n************************************************************************\n*                                                                      *\n*  7. Limitation of Liability                                          *\n*  --------------------------                                          *\n*                                                                      *\n*  Under no circumstances and under no legal theory, whether tort      *\n*  (including negligence), contract, or otherwise, shall any           *\n*  Contributor, or anyone who distributes Covered Software as          *\n*  permitted above, be liable to You for any direct, indirect,         *\n*  special, incidental, or consequential damages of any character      *\n*  including, without limitation, damages for lost profits, loss of    *\n*  goodwill, work stoppage, computer failure or malfunction, or any    *\n*  and all other commercial damages or losses, even if such party      *\n*  shall have been informed of the possibility of such damages. This   *\n*  limitation of liability shall not apply to liability for death or   *\n*  personal injury resulting from such party's negligence to the       *\n*  extent applicable law prohibits such limitation. Some               *\n*  jurisdictions do not allow the exclusion or limitation of           *\n*  incidental or consequential damages, so this exclusion and          *\n*  limitation may not apply to You.                                    *\n*                                                                      *\n************************************************************************\n\n8. Litigation\n-------------\n\nAny litigation relating to this License may be brought only in the\ncourts of a jurisdiction where the defendant maintains its principal\nplace of business and such litigation shall be governed by laws of that\njurisdiction, without reference to its conflict-of-law provisions.\nNothing in this Section shall prevent a party's ability to bring\ncross-claims or counter-claims.\n\n9. Miscellaneous\n----------------\n\nThis License represents the complete agreement concerning the subject\nmatter hereof. If any provision of this License is held to be\nunenforceable, such provision shall be reformed only to the extent\nnecessary to make it enforceable. Any law or regulation which provides\nthat the language of a contract shall be construed against the drafter\nshall not be used to construe this License against a Contributor.\n\n10. Versions of the License\n---------------------------\n\n10.1. New Versions\n\nMozilla Foundation is the license steward. Except as provided in Section\n10.3, no one other than the license steward has the right to modify or\npublish new versions of this License. Each version will be given a\ndistinguishing version number.\n\n10.2. Effect of New Versions\n\nYou may distribute the Covered Software under the terms of the version\nof the License under which You originally received the Covered Software,\nor under the terms of any subsequent version published by the license\nsteward.\n\n10.3. Modified Versions\n\nIf you create software not governed by this License, and you want to\ncreate a new license for such software, you may create and use a\nmodified version of this License if you rename the license and remove\nany references to the name of the license steward (except to note that\nsuch modified license differs from this License).\n\n10.4. Distributing Source Code Form that is Incompatible With Secondary\nLicenses\n\nIf You choose to distribute Source Code Form that is Incompatible With\nSecondary Licenses under the terms of this version of the License, the\nnotice described in Exhibit B of this License must be attached.\n\nExhibit A - Source Code Form License Notice\n-------------------------------------------\n\n  This Source Code Form is subject to the terms of the Mozilla Public\n  License, v. 2.0. If a copy of the MPL was not distributed with this\n  file, You can obtain one at https://mozilla.org/MPL/2.0/.\n\nIf it is not possible or desirable to put the notice in a particular\nfile, then You may include the notice in a location (such as a LICENSE\nfile in a relevant directory) where a recipient would be likely to look\nfor such a notice.\n\nYou may add additional accurate notices of copyright ownership.\n\nExhibit B - \"Incompatible With Secondary Licenses\" Notice\n---------------------------------------------------------\n\n  This Source Code Form is \"Incompatible With Secondary Licenses\", as\n  defined by the Mozilla Public License, v. 2.0.\n```\n"
  },
  {
    "path": "vendor/github.com/cyphar/filepath-securejoin/LICENSE.BSD",
    "content": "Copyright (C) 2014-2015 Docker Inc & Go Authors. All rights reserved.\nCopyright (C) 2017-2024 SUSE LLC. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n   * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n   * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n   * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
  },
  {
    "path": "vendor/github.com/cyphar/filepath-securejoin/LICENSE.MPL-2.0",
    "content": "Mozilla Public License Version 2.0\n==================================\n\n1. Definitions\n--------------\n\n1.1. \"Contributor\"\n    means each individual or legal entity that creates, contributes to\n    the creation of, or owns Covered Software.\n\n1.2. \"Contributor Version\"\n    means the combination of the Contributions of others (if any) used\n    by a Contributor and that particular Contributor's Contribution.\n\n1.3. \"Contribution\"\n    means Covered Software of a particular Contributor.\n\n1.4. \"Covered Software\"\n    means Source Code Form to which the initial Contributor has attached\n    the notice in Exhibit A, the Executable Form of such Source Code\n    Form, and Modifications of such Source Code Form, in each case\n    including portions thereof.\n\n1.5. \"Incompatible With Secondary Licenses\"\n    means\n\n    (a) that the initial Contributor has attached the notice described\n        in Exhibit B to the Covered Software; or\n\n    (b) that the Covered Software was made available under the terms of\n        version 1.1 or earlier of the License, but not also under the\n        terms of a Secondary License.\n\n1.6. \"Executable Form\"\n    means any form of the work other than Source Code Form.\n\n1.7. \"Larger Work\"\n    means a work that combines Covered Software with other material, in\n    a separate file or files, that is not Covered Software.\n\n1.8. \"License\"\n    means this document.\n\n1.9. \"Licensable\"\n    means having the right to grant, to the maximum extent possible,\n    whether at the time of the initial grant or subsequently, any and\n    all of the rights conveyed by this License.\n\n1.10. \"Modifications\"\n    means any of the following:\n\n    (a) any file in Source Code Form that results from an addition to,\n        deletion from, or modification of the contents of Covered\n        Software; or\n\n    (b) any new file in Source Code Form that contains any Covered\n        Software.\n\n1.11. \"Patent Claims\" of a Contributor\n    means any patent claim(s), including without limitation, method,\n    process, and apparatus claims, in any patent Licensable by such\n    Contributor that would be infringed, but for the grant of the\n    License, by the making, using, selling, offering for sale, having\n    made, import, or transfer of either its Contributions or its\n    Contributor Version.\n\n1.12. \"Secondary License\"\n    means either the GNU General Public License, Version 2.0, the GNU\n    Lesser General Public License, Version 2.1, the GNU Affero General\n    Public License, Version 3.0, or any later versions of those\n    licenses.\n\n1.13. \"Source Code Form\"\n    means the form of the work preferred for making modifications.\n\n1.14. \"You\" (or \"Your\")\n    means an individual or a legal entity exercising rights under this\n    License. For legal entities, \"You\" includes any entity that\n    controls, is controlled by, or is under common control with You. For\n    purposes of this definition, \"control\" means (a) the power, direct\n    or indirect, to cause the direction or management of such entity,\n    whether by contract or otherwise, or (b) ownership of more than\n    fifty percent (50%) of the outstanding shares or beneficial\n    ownership of such entity.\n\n2. License Grants and Conditions\n--------------------------------\n\n2.1. Grants\n\nEach Contributor hereby grants You a world-wide, royalty-free,\nnon-exclusive license:\n\n(a) under intellectual property rights (other than patent or trademark)\n    Licensable by such Contributor to use, reproduce, make available,\n    modify, display, perform, distribute, and otherwise exploit its\n    Contributions, either on an unmodified basis, with Modifications, or\n    as part of a Larger Work; and\n\n(b) under Patent Claims of such Contributor to make, use, sell, offer\n    for sale, have made, import, and otherwise transfer either its\n    Contributions or its Contributor Version.\n\n2.2. Effective Date\n\nThe licenses granted in Section 2.1 with respect to any Contribution\nbecome effective for each Contribution on the date the Contributor first\ndistributes such Contribution.\n\n2.3. Limitations on Grant Scope\n\nThe licenses granted in this Section 2 are the only rights granted under\nthis License. No additional rights or licenses will be implied from the\ndistribution or licensing of Covered Software under this License.\nNotwithstanding Section 2.1(b) above, no patent license is granted by a\nContributor:\n\n(a) for any code that a Contributor has removed from Covered Software;\n    or\n\n(b) for infringements caused by: (i) Your and any other third party's\n    modifications of Covered Software, or (ii) the combination of its\n    Contributions with other software (except as part of its Contributor\n    Version); or\n\n(c) under Patent Claims infringed by Covered Software in the absence of\n    its Contributions.\n\nThis License does not grant any rights in the trademarks, service marks,\nor logos of any Contributor (except as may be necessary to comply with\nthe notice requirements in Section 3.4).\n\n2.4. Subsequent Licenses\n\nNo Contributor makes additional grants as a result of Your choice to\ndistribute the Covered Software under a subsequent version of this\nLicense (see Section 10.2) or under the terms of a Secondary License (if\npermitted under the terms of Section 3.3).\n\n2.5. Representation\n\nEach Contributor represents that the Contributor believes its\nContributions are its original creation(s) or it has sufficient rights\nto grant the rights to its Contributions conveyed by this License.\n\n2.6. Fair Use\n\nThis License is not intended to limit any rights You have under\napplicable copyright doctrines of fair use, fair dealing, or other\nequivalents.\n\n2.7. Conditions\n\nSections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted\nin Section 2.1.\n\n3. Responsibilities\n-------------------\n\n3.1. Distribution of Source Form\n\nAll distribution of Covered Software in Source Code Form, including any\nModifications that You create or to which You contribute, must be under\nthe terms of this License. You must inform recipients that the Source\nCode Form of the Covered Software is governed by the terms of this\nLicense, and how they can obtain a copy of this License. You may not\nattempt to alter or restrict the recipients' rights in the Source Code\nForm.\n\n3.2. Distribution of Executable Form\n\nIf You distribute Covered Software in Executable Form then:\n\n(a) such Covered Software must also be made available in Source Code\n    Form, as described in Section 3.1, and You must inform recipients of\n    the Executable Form how they can obtain a copy of such Source Code\n    Form by reasonable means in a timely manner, at a charge no more\n    than the cost of distribution to the recipient; and\n\n(b) You may distribute such Executable Form under the terms of this\n    License, or sublicense it under different terms, provided that the\n    license for the Executable Form does not attempt to limit or alter\n    the recipients' rights in the Source Code Form under this License.\n\n3.3. Distribution of a Larger Work\n\nYou may create and distribute a Larger Work under terms of Your choice,\nprovided that You also comply with the requirements of this License for\nthe Covered Software. If the Larger Work is a combination of Covered\nSoftware with a work governed by one or more Secondary Licenses, and the\nCovered Software is not Incompatible With Secondary Licenses, this\nLicense permits You to additionally distribute such Covered Software\nunder the terms of such Secondary License(s), so that the recipient of\nthe Larger Work may, at their option, further distribute the Covered\nSoftware under the terms of either this License or such Secondary\nLicense(s).\n\n3.4. Notices\n\nYou may not remove or alter the substance of any license notices\n(including copyright notices, patent notices, disclaimers of warranty,\nor limitations of liability) contained within the Source Code Form of\nthe Covered Software, except that You may alter any license notices to\nthe extent required to remedy known factual inaccuracies.\n\n3.5. Application of Additional Terms\n\nYou may choose to offer, and to charge a fee for, warranty, support,\nindemnity or liability obligations to one or more recipients of Covered\nSoftware. However, You may do so only on Your own behalf, and not on\nbehalf of any Contributor. You must make it absolutely clear that any\nsuch warranty, support, indemnity, or liability obligation is offered by\nYou alone, and You hereby agree to indemnify every Contributor for any\nliability incurred by such Contributor as a result of warranty, support,\nindemnity or liability terms You offer. You may include additional\ndisclaimers of warranty and limitations of liability specific to any\njurisdiction.\n\n4. Inability to Comply Due to Statute or Regulation\n---------------------------------------------------\n\nIf it is impossible for You to comply with any of the terms of this\nLicense with respect to some or all of the Covered Software due to\nstatute, judicial order, or regulation then You must: (a) comply with\nthe terms of this License to the maximum extent possible; and (b)\ndescribe the limitations and the code they affect. Such description must\nbe placed in a text file included with all distributions of the Covered\nSoftware under this License. Except to the extent prohibited by statute\nor regulation, such description must be sufficiently detailed for a\nrecipient of ordinary skill to be able to understand it.\n\n5. Termination\n--------------\n\n5.1. The rights granted under this License will terminate automatically\nif You fail to comply with any of its terms. However, if You become\ncompliant, then the rights granted under this License from a particular\nContributor are reinstated (a) provisionally, unless and until such\nContributor explicitly and finally terminates Your grants, and (b) on an\nongoing basis, if such Contributor fails to notify You of the\nnon-compliance by some reasonable means prior to 60 days after You have\ncome back into compliance. Moreover, Your grants from a particular\nContributor are reinstated on an ongoing basis if such Contributor\nnotifies You of the non-compliance by some reasonable means, this is the\nfirst time You have received notice of non-compliance with this License\nfrom such Contributor, and You become compliant prior to 30 days after\nYour receipt of the notice.\n\n5.2. If You initiate litigation against any entity by asserting a patent\ninfringement claim (excluding declaratory judgment actions,\ncounter-claims, and cross-claims) alleging that a Contributor Version\ndirectly or indirectly infringes any patent, then the rights granted to\nYou by any and all Contributors for the Covered Software under Section\n2.1 of this License shall terminate.\n\n5.3. In the event of termination under Sections 5.1 or 5.2 above, all\nend user license agreements (excluding distributors and resellers) which\nhave been validly granted by You or Your distributors under this License\nprior to termination shall survive termination.\n\n************************************************************************\n*                                                                      *\n*  6. Disclaimer of Warranty                                           *\n*  -------------------------                                           *\n*                                                                      *\n*  Covered Software is provided under this License on an \"as is\"       *\n*  basis, without warranty of any kind, either expressed, implied, or  *\n*  statutory, including, without limitation, warranties that the       *\n*  Covered Software is free of defects, merchantable, fit for a        *\n*  particular purpose or non-infringing. The entire risk as to the     *\n*  quality and performance of the Covered Software is with You.        *\n*  Should any Covered Software prove defective in any respect, You     *\n*  (not any Contributor) assume the cost of any necessary servicing,   *\n*  repair, or correction. This disclaimer of warranty constitutes an   *\n*  essential part of this License. No use of any Covered Software is   *\n*  authorized under this License except under this disclaimer.         *\n*                                                                      *\n************************************************************************\n\n************************************************************************\n*                                                                      *\n*  7. Limitation of Liability                                          *\n*  --------------------------                                          *\n*                                                                      *\n*  Under no circumstances and under no legal theory, whether tort      *\n*  (including negligence), contract, or otherwise, shall any           *\n*  Contributor, or anyone who distributes Covered Software as          *\n*  permitted above, be liable to You for any direct, indirect,         *\n*  special, incidental, or consequential damages of any character      *\n*  including, without limitation, damages for lost profits, loss of    *\n*  goodwill, work stoppage, computer failure or malfunction, or any    *\n*  and all other commercial damages or losses, even if such party      *\n*  shall have been informed of the possibility of such damages. This   *\n*  limitation of liability shall not apply to liability for death or   *\n*  personal injury resulting from such party's negligence to the       *\n*  extent applicable law prohibits such limitation. Some               *\n*  jurisdictions do not allow the exclusion or limitation of           *\n*  incidental or consequential damages, so this exclusion and          *\n*  limitation may not apply to You.                                    *\n*                                                                      *\n************************************************************************\n\n8. Litigation\n-------------\n\nAny litigation relating to this License may be brought only in the\ncourts of a jurisdiction where the defendant maintains its principal\nplace of business and such litigation shall be governed by laws of that\njurisdiction, without reference to its conflict-of-law provisions.\nNothing in this Section shall prevent a party's ability to bring\ncross-claims or counter-claims.\n\n9. Miscellaneous\n----------------\n\nThis License represents the complete agreement concerning the subject\nmatter hereof. If any provision of this License is held to be\nunenforceable, such provision shall be reformed only to the extent\nnecessary to make it enforceable. Any law or regulation which provides\nthat the language of a contract shall be construed against the drafter\nshall not be used to construe this License against a Contributor.\n\n10. Versions of the License\n---------------------------\n\n10.1. New Versions\n\nMozilla Foundation is the license steward. Except as provided in Section\n10.3, no one other than the license steward has the right to modify or\npublish new versions of this License. Each version will be given a\ndistinguishing version number.\n\n10.2. Effect of New Versions\n\nYou may distribute the Covered Software under the terms of the version\nof the License under which You originally received the Covered Software,\nor under the terms of any subsequent version published by the license\nsteward.\n\n10.3. Modified Versions\n\nIf you create software not governed by this License, and you want to\ncreate a new license for such software, you may create and use a\nmodified version of this License if you rename the license and remove\nany references to the name of the license steward (except to note that\nsuch modified license differs from this License).\n\n10.4. Distributing Source Code Form that is Incompatible With Secondary\nLicenses\n\nIf You choose to distribute Source Code Form that is Incompatible With\nSecondary Licenses under the terms of this version of the License, the\nnotice described in Exhibit B of this License must be attached.\n\nExhibit A - Source Code Form License Notice\n-------------------------------------------\n\n  This Source Code Form is subject to the terms of the Mozilla Public\n  License, v. 2.0. If a copy of the MPL was not distributed with this\n  file, You can obtain one at https://mozilla.org/MPL/2.0/.\n\nIf it is not possible or desirable to put the notice in a particular\nfile, then You may include the notice in a location (such as a LICENSE\nfile in a relevant directory) where a recipient would be likely to look\nfor such a notice.\n\nYou may add additional accurate notices of copyright ownership.\n\nExhibit B - \"Incompatible With Secondary Licenses\" Notice\n---------------------------------------------------------\n\n  This Source Code Form is \"Incompatible With Secondary Licenses\", as\n  defined by the Mozilla Public License, v. 2.0.\n"
  },
  {
    "path": "vendor/github.com/cyphar/filepath-securejoin/README.md",
    "content": "## `filepath-securejoin` ##\n\n[![Go Documentation](https://pkg.go.dev/badge/github.com/cyphar/filepath-securejoin.svg)](https://pkg.go.dev/github.com/cyphar/filepath-securejoin)\n[![Build Status](https://github.com/cyphar/filepath-securejoin/actions/workflows/ci.yml/badge.svg)](https://github.com/cyphar/filepath-securejoin/actions/workflows/ci.yml)\n\n### Old API ###\n\nThis library was originally just an implementation of `SecureJoin` which was\n[intended to be included in the Go standard library][go#20126] as a safer\n`filepath.Join` that would restrict the path lookup to be inside a root\ndirectory.\n\nThe implementation was based on code that existed in several container\nruntimes. Unfortunately, this API is **fundamentally unsafe** against attackers\nthat can modify path components after `SecureJoin` returns and before the\ncaller uses the path, allowing for some fairly trivial TOCTOU attacks.\n\n`SecureJoin` (and `SecureJoinVFS`) are still provided by this library to\nsupport legacy users, but new users are strongly suggested to avoid using\n`SecureJoin` and instead use the [new api](#new-api) or switch to\n[libpathrs][libpathrs].\n\nWith the above limitations in mind, this library guarantees the following:\n\n* If no error is set, the resulting string **must** be a child path of\n  `root` and will not contain any symlink path components (they will all be\n  expanded).\n\n* When expanding symlinks, all symlink path components **must** be resolved\n  relative to the provided root. In particular, this can be considered a\n  userspace implementation of how `chroot(2)` operates on file paths. Note that\n  these symlinks will **not** be expanded lexically (`filepath.Clean` is not\n  called on the input before processing).\n\n* Non-existent path components are unaffected by `SecureJoin` (similar to\n  `filepath.EvalSymlinks`'s semantics).\n\n* The returned path will always be `filepath.Clean`ed and thus not contain any\n  `..` components.\n\nA (trivial) implementation of this function on GNU/Linux systems could be done\nwith the following (note that this requires root privileges and is far more\nopaque than the implementation in this library, and also requires that\n`readlink` is inside the `root` path and is trustworthy):\n\n```go\npackage securejoin\n\nimport (\n\t\"os/exec\"\n\t\"path/filepath\"\n)\n\nfunc SecureJoin(root, unsafePath string) (string, error) {\n\tunsafePath = string(filepath.Separator) + unsafePath\n\tcmd := exec.Command(\"chroot\", root,\n\t\t\"readlink\", \"--canonicalize-missing\", \"--no-newline\", unsafePath)\n\toutput, err := cmd.CombinedOutput()\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\texpanded := string(output)\n\treturn filepath.Join(root, expanded), nil\n}\n```\n\n[libpathrs]: https://github.com/openSUSE/libpathrs\n[go#20126]: https://github.com/golang/go/issues/20126\n\n### <a name=\"new-api\" /> New API ###\n[#new-api]: #new-api\n\nWhile we recommend users switch to [libpathrs][libpathrs] as soon as it has a\nstable release, some methods implemented by libpathrs have been ported to this\nlibrary to ease the transition. These APIs are only supported on Linux.\n\nThese APIs are implemented such that `filepath-securejoin` will\nopportunistically use certain newer kernel APIs that make these operations far\nmore secure. In particular:\n\n* All of the lookup operations will use [`openat2`][openat2.2] on new enough\n  kernels (Linux 5.6 or later) to restrict lookups through magic-links and\n  bind-mounts (for certain operations) and to make use of `RESOLVE_IN_ROOT` to\n  efficiently resolve symlinks within a rootfs.\n\n* The APIs provide hardening against a malicious `/proc` mount to either detect\n  or avoid being tricked by a `/proc` that is not legitimate. This is done\n  using [`openat2`][openat2.2] for all users, and privileged users will also be\n  further protected by using [`fsopen`][fsopen.2] and [`open_tree`][open_tree.2]\n  (Linux 5.2 or later).\n\n[openat2.2]: https://www.man7.org/linux/man-pages/man2/openat2.2.html\n[fsopen.2]: https://github.com/brauner/man-pages-md/blob/main/fsopen.md\n[open_tree.2]: https://github.com/brauner/man-pages-md/blob/main/open_tree.md\n\n#### `OpenInRoot` ####\n\n```go\nfunc OpenInRoot(root, unsafePath string) (*os.File, error)\nfunc OpenatInRoot(root *os.File, unsafePath string) (*os.File, error)\nfunc Reopen(handle *os.File, flags int) (*os.File, error)\n```\n\n`OpenInRoot` is a much safer version of\n\n```go\npath, err := securejoin.SecureJoin(root, unsafePath)\nfile, err := os.OpenFile(path, unix.O_PATH|unix.O_CLOEXEC)\n```\n\nthat protects against various race attacks that could lead to serious security\nissues, depending on the application. Note that the returned `*os.File` is an\n`O_PATH` file descriptor, which is quite restricted. Callers will probably need\nto use `Reopen` to get a more usable handle (this split is done to provide\nuseful features like PTY spawning and to avoid users accidentally opening bad\ninodes that could cause a DoS).\n\nCallers need to be careful in how they use the returned `*os.File`. Usually it\nis only safe to operate on the handle directly, and it is very easy to create a\nsecurity issue. [libpathrs][libpathrs] provides far more helpers to make using\nthese handles safer -- there is currently no plan to port them to\n`filepath-securejoin`.\n\n`OpenatInRoot` is like `OpenInRoot` except that the root is provided using an\n`*os.File`. This allows you to ensure that multiple `OpenatInRoot` (or\n`MkdirAllHandle`) calls are operating on the same rootfs.\n\n> **NOTE**: Unlike `SecureJoin`, `OpenInRoot` will error out as soon as it hits\n> a dangling symlink or non-existent path. This is in contrast to `SecureJoin`\n> which treated non-existent components as though they were real directories,\n> and would allow for partial resolution of dangling symlinks. These behaviours\n> are at odds with how Linux treats non-existent paths and dangling symlinks,\n> and so these are no longer allowed.\n\n#### `MkdirAll` ####\n\n```go\nfunc MkdirAll(root, unsafePath string, mode int) error\nfunc MkdirAllHandle(root *os.File, unsafePath string, mode int) (*os.File, error)\n```\n\n`MkdirAll` is a much safer version of\n\n```go\npath, err := securejoin.SecureJoin(root, unsafePath)\nerr = os.MkdirAll(path, mode)\n```\n\nthat protects against the same kinds of races that `OpenInRoot` protects\nagainst.\n\n`MkdirAllHandle` is like `MkdirAll` except that the root is provided using an\n`*os.File` (the reason for this is the same as with `OpenatInRoot`) and an\n`*os.File` of the final created directory is returned (this directory is\nguaranteed to be effectively identical to the directory created by\n`MkdirAllHandle`, which is not possible to ensure by just using `OpenatInRoot`\nafter `MkdirAll`).\n\n> **NOTE**: Unlike `SecureJoin`, `MkdirAll` will error out as soon as it hits\n> a dangling symlink or non-existent path. This is in contrast to `SecureJoin`\n> which treated non-existent components as though they were real directories,\n> and would allow for partial resolution of dangling symlinks. These behaviours\n> are at odds with how Linux treats non-existent paths and dangling symlinks,\n> and so these are no longer allowed. This means that `MkdirAll` will not\n> create non-existent directories referenced by a dangling symlink.\n\n### License ###\n\n`SPDX-License-Identifier: BSD-3-Clause AND MPL-2.0`\n\nSome of the code in this project is derived from Go, and is licensed under a\nBSD 3-clause license (available in `LICENSE.BSD`). Other files (many of which\nare derived from [libpathrs][libpathrs]) are licensed under the Mozilla Public\nLicense version 2.0 (available in `LICENSE.MPL-2.0`). If you are using the\n[\"New API\" described above][#new-api], you are probably using code from files\nreleased under this license.\n\nEvery source file in this project has a copyright header describing its\nlicense. Please check the license headers of each file to see what license\napplies to it.\n\nSee [COPYING.md](./COPYING.md) for some more details.\n\n[umoci]: https://github.com/opencontainers/umoci\n"
  },
  {
    "path": "vendor/github.com/cyphar/filepath-securejoin/VERSION",
    "content": "0.6.1\n"
  },
  {
    "path": "vendor/github.com/cyphar/filepath-securejoin/codecov.yml",
    "content": "# SPDX-License-Identifier: MPL-2.0\n\n# Copyright (C) 2025 Aleksa Sarai <cyphar@cyphar.com>\n# Copyright (C) 2025 SUSE LLC\n#\n# This Source Code Form is subject to the terms of the Mozilla Public\n# License, v. 2.0. If a copy of the MPL was not distributed with this\n# file, You can obtain one at https://mozilla.org/MPL/2.0/.\n\ncomment:\n  layout: \"condensed_header, reach, diff, components, condensed_files, condensed_footer\"\n  require_changes: true\n  branches:\n    - main\n\ncoverage:\n  range: 60..100\n  status:\n    project:\n      default:\n        target: 85%\n        threshold: 0%\n    patch:\n      default:\n        target: auto\n        informational: true\n\ngithub_checks:\n  annotations: false\n"
  },
  {
    "path": "vendor/github.com/cyphar/filepath-securejoin/doc.go",
    "content": "// SPDX-License-Identifier: BSD-3-Clause\n\n// Copyright (C) 2014-2015 Docker Inc & Go Authors. All rights reserved.\n// Copyright (C) 2017-2024 SUSE LLC. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package securejoin implements a set of helpers to make it easier to write Go\n// code that is safe against symlink-related escape attacks. The primary idea\n// is to let you resolve a path within a rootfs directory as if the rootfs was\n// a chroot.\n//\n// securejoin has two APIs, a \"legacy\" API and a \"modern\" API.\n//\n// The legacy API is [SecureJoin] and [SecureJoinVFS]. These methods are\n// **not** safe against race conditions where an attacker changes the\n// filesystem after (or during) the [SecureJoin] operation.\n//\n// The new API is available in the [pathrs-lite] subpackage, and provide\n// protections against racing attackers as well as several other key\n// protections against attacks often seen by container runtimes. As the name\n// suggests, [pathrs-lite] is a stripped down (pure Go) reimplementation of\n// [libpathrs]. The main APIs provided are [OpenInRoot], [MkdirAll], and\n// [procfs.Handle] -- other APIs are not planned to be ported. The long-term\n// goal is for users to migrate to [libpathrs] which is more fully-featured.\n//\n// securejoin has been used by several container runtimes (Docker, runc,\n// Kubernetes, etc) for quite a few years as a de-facto standard for operating\n// on container filesystem paths \"safely\". However, most users still use the\n// legacy API which is unsafe against various attacks (there is a fairly long\n// history of CVEs in dependent as a result). Users should switch to the modern\n// API as soon as possible (or even better, switch to libpathrs).\n//\n// This project was initially intended to be included in the Go standard\n// library, but it was rejected (see https://go.dev/issue/20126). Much later,\n// [os.Root] was added to the Go stdlib that shares some of the goals of\n// filepath-securejoin. However, its design is intended to work like\n// openat2(RESOLVE_BENEATH) which does not fit the usecase of container\n// runtimes and most system tools.\n//\n// [pathrs-lite]: https://pkg.go.dev/github.com/cyphar/filepath-securejoin/pathrs-lite\n// [libpathrs]: https://github.com/openSUSE/libpathrs\n// [OpenInRoot]: https://pkg.go.dev/github.com/cyphar/filepath-securejoin/pathrs-lite#OpenInRoot\n// [MkdirAll]: https://pkg.go.dev/github.com/cyphar/filepath-securejoin/pathrs-lite#MkdirAll\n// [procfs.Handle]: https://pkg.go.dev/github.com/cyphar/filepath-securejoin/pathrs-lite/procfs#Handle\n// [os.Root]: https:///pkg.go.dev/os#Root\npackage securejoin\n"
  },
  {
    "path": "vendor/github.com/cyphar/filepath-securejoin/internal/consts/consts.go",
    "content": "// SPDX-License-Identifier: BSD-3-Clause\n\n// Copyright (C) 2014-2015 Docker Inc & Go Authors. All rights reserved.\n// Copyright (C) 2017-2025 SUSE LLC. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package consts contains the definitions of internal constants used\n// throughout filepath-securejoin.\npackage consts\n\n// MaxSymlinkLimit is the maximum number of symlinks that can be encountered\n// during a single lookup before returning -ELOOP. At time of writing, Linux\n// has an internal limit of 40.\nconst MaxSymlinkLimit = 255\n"
  },
  {
    "path": "vendor/github.com/cyphar/filepath-securejoin/join.go",
    "content": "// SPDX-License-Identifier: BSD-3-Clause\n\n// Copyright (C) 2014-2015 Docker Inc & Go Authors. All rights reserved.\n// Copyright (C) 2017-2025 SUSE LLC. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage securejoin\n\nimport (\n\t\"errors\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"syscall\"\n\n\t\"github.com/cyphar/filepath-securejoin/internal/consts\"\n)\n\n// IsNotExist tells you if err is an error that implies that either the path\n// accessed does not exist (or path components don't exist). This is\n// effectively a more broad version of [os.IsNotExist].\nfunc IsNotExist(err error) bool {\n\t// Check that it's not actually an ENOTDIR, which in some cases is a more\n\t// convoluted case of ENOENT (usually involving weird paths).\n\treturn errors.Is(err, os.ErrNotExist) || errors.Is(err, syscall.ENOTDIR) || errors.Is(err, syscall.ENOENT)\n}\n\n// errUnsafeRoot is returned if the user provides SecureJoinVFS with a path\n// that contains \"..\" components.\nvar errUnsafeRoot = errors.New(\"root path provided to SecureJoin contains '..' components\")\n\n// stripVolume just gets rid of the Windows volume included in a path. Based on\n// some godbolt tests, the Go compiler is smart enough to make this a no-op on\n// Linux.\nfunc stripVolume(path string) string {\n\treturn path[len(filepath.VolumeName(path)):]\n}\n\n// hasDotDot checks if the path contains \"..\" components in a platform-agnostic\n// way.\nfunc hasDotDot(path string) bool {\n\t// If we are on Windows, strip any volume letters. It turns out that\n\t// C:..\\foo may (or may not) be a valid pathname and we need to handle that\n\t// leading \"..\".\n\tpath = stripVolume(path)\n\t// Look for \"/../\" in the path, but we need to handle leading and trailing\n\t// \"..\"s by adding separators. Doing this with filepath.Separator is ugly\n\t// so just convert to Unix-style \"/\" first.\n\tpath = filepath.ToSlash(path)\n\treturn strings.Contains(\"/\"+path+\"/\", \"/../\")\n}\n\n// SecureJoinVFS joins the two given path components (similar to\n// [filepath.Join]) except that the returned path is guaranteed to be scoped\n// inside the provided root path (when evaluated). Any symbolic links in the\n// path are evaluated with the given root treated as the root of the\n// filesystem, similar to a chroot. The filesystem state is evaluated through\n// the given [VFS] interface (if nil, the standard [os].* family of functions\n// are used).\n//\n// Note that the guarantees provided by this function only apply if the path\n// components in the returned string are not modified (in other words are not\n// replaced with symlinks on the filesystem) after this function has returned.\n// Such a symlink race is necessarily out-of-scope of SecureJoinVFS.\n//\n// NOTE: Due to the above limitation, Linux users are strongly encouraged to\n// use [OpenInRoot] instead, which does safely protect against these kinds of\n// attacks. There is no way to solve this problem with SecureJoinVFS because\n// the API is fundamentally wrong (you cannot return a \"safe\" path string and\n// guarantee it won't be modified afterwards).\n//\n// Volume names in unsafePath are always discarded, regardless if they are\n// provided via direct input or when evaluating symlinks. Therefore:\n//\n// \"C:\\Temp\" + \"D:\\path\\to\\file.txt\" results in \"C:\\Temp\\path\\to\\file.txt\"\n//\n// If the provided root is not [filepath.Clean] then an error will be returned,\n// as such root paths are bordering on somewhat unsafe and using such paths is\n// not best practice. We also strongly suggest that any root path is first\n// fully resolved using [filepath.EvalSymlinks] or otherwise constructed to\n// avoid containing symlink components. Of course, the root also *must not* be\n// attacker-controlled.\nfunc SecureJoinVFS(root, unsafePath string, vfs VFS) (string, error) { //nolint:revive // name is part of public API\n\t// The root path must not contain \"..\" components, otherwise when we join\n\t// the subpath we will end up with a weird path. We could work around this\n\t// in other ways but users shouldn't be giving us non-lexical root paths in\n\t// the first place.\n\tif hasDotDot(root) {\n\t\treturn \"\", errUnsafeRoot\n\t}\n\n\t// Use the os.* VFS implementation if none was specified.\n\tif vfs == nil {\n\t\tvfs = osVFS{}\n\t}\n\n\tunsafePath = filepath.FromSlash(unsafePath)\n\tvar (\n\t\tcurrentPath   string\n\t\tremainingPath = unsafePath\n\t\tlinksWalked   int\n\t)\n\tfor remainingPath != \"\" {\n\t\t// On Windows, if we managed to end up at a path referencing a volume,\n\t\t// drop the volume to make sure we don't end up with broken paths or\n\t\t// escaping the root volume.\n\t\tremainingPath = stripVolume(remainingPath)\n\n\t\t// Get the next path component.\n\t\tvar part string\n\t\tif i := strings.IndexRune(remainingPath, filepath.Separator); i == -1 {\n\t\t\tpart, remainingPath = remainingPath, \"\"\n\t\t} else {\n\t\t\tpart, remainingPath = remainingPath[:i], remainingPath[i+1:]\n\t\t}\n\n\t\t// Apply the component lexically to the path we are building.\n\t\t// currentPath does not contain any symlinks, and we are lexically\n\t\t// dealing with a single component, so it's okay to do a filepath.Clean\n\t\t// here.\n\t\tnextPath := filepath.Join(string(filepath.Separator), currentPath, part)\n\t\tif nextPath == string(filepath.Separator) {\n\t\t\tcurrentPath = \"\"\n\t\t\tcontinue\n\t\t}\n\t\tfullPath := root + string(filepath.Separator) + nextPath\n\n\t\t// Figure out whether the path is a symlink.\n\t\tfi, err := vfs.Lstat(fullPath)\n\t\tif err != nil && !IsNotExist(err) {\n\t\t\treturn \"\", err\n\t\t}\n\t\t// Treat non-existent path components the same as non-symlinks (we\n\t\t// can't do any better here).\n\t\tif IsNotExist(err) || fi.Mode()&os.ModeSymlink == 0 {\n\t\t\tcurrentPath = nextPath\n\t\t\tcontinue\n\t\t}\n\n\t\t// It's a symlink, so get its contents and expand it by prepending it\n\t\t// to the yet-unparsed path.\n\t\tlinksWalked++\n\t\tif linksWalked > consts.MaxSymlinkLimit {\n\t\t\treturn \"\", &os.PathError{Op: \"SecureJoin\", Path: root + string(filepath.Separator) + unsafePath, Err: syscall.ELOOP}\n\t\t}\n\n\t\tdest, err := vfs.Readlink(fullPath)\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t\tremainingPath = dest + string(filepath.Separator) + remainingPath\n\t\t// Absolute symlinks reset any work we've already done.\n\t\tif filepath.IsAbs(dest) {\n\t\t\tcurrentPath = \"\"\n\t\t}\n\t}\n\n\t// There should be no lexical components like \"..\" left in the path here,\n\t// but for safety clean up the path before joining it to the root.\n\tfinalPath := filepath.Join(string(filepath.Separator), currentPath)\n\treturn filepath.Join(root, finalPath), nil\n}\n\n// SecureJoin is a wrapper around [SecureJoinVFS] that just uses the [os].* library\n// of functions as the [VFS]. If in doubt, use this function over [SecureJoinVFS].\nfunc SecureJoin(root, unsafePath string) (string, error) {\n\treturn SecureJoinVFS(root, unsafePath, nil)\n}\n"
  },
  {
    "path": "vendor/github.com/cyphar/filepath-securejoin/pathrs-lite/README.md",
    "content": "## `pathrs-lite` ##\n\n`github.com/cyphar/filepath-securejoin/pathrs-lite` provides a minimal **pure\nGo** implementation of the core bits of [libpathrs][]. This is not intended to\nbe a complete replacement for libpathrs, instead it is mainly intended to be\nuseful as a transition tool for existing Go projects.\n\n`pathrs-lite` also provides a very easy way to switch to `libpathrs` (even for\ndownstreams where `pathrs-lite` is being used in a third-party package and is\nnot interested in using CGo). At build time, if you use the `libpathrs` build\ntag then `pathrs-lite` will use `libpathrs` directly instead of the pure Go\nimplementation. The two backends are functionally equivalent (and we have\nintegration tests to verify this), so this migration should be very easy with\nno user-visible impact.\n\n[libpathrs]: https://github.com/cyphar/libpathrs\n\n### License ###\n\nMost of this subpackage is licensed under the Mozilla Public License (version\n2.0). For more information, see the top-level [COPYING.md][] and\n[LICENSE.MPL-2.0][] files, as well as the individual license headers for each\nfile.\n\n```\nCopyright (C) 2024-2025 Aleksa Sarai <cyphar@cyphar.com>\nCopyright (C) 2024-2025 SUSE LLC\n\nThis Source Code Form is subject to the terms of the Mozilla Public\nLicense, v. 2.0. If a copy of the MPL was not distributed with this\nfile, You can obtain one at https://mozilla.org/MPL/2.0/.\n```\n\n[COPYING.md]: ../COPYING.md\n[LICENSE.MPL-2.0]: ../LICENSE.MPL-2.0\n"
  },
  {
    "path": "vendor/github.com/cyphar/filepath-securejoin/pathrs-lite/doc.go",
    "content": "// SPDX-License-Identifier: MPL-2.0\n\n//go:build linux\n\n// Copyright (C) 2024-2025 Aleksa Sarai <cyphar@cyphar.com>\n// Copyright (C) 2024-2025 SUSE LLC\n//\n// This Source Code Form is subject to the terms of the Mozilla Public\n// License, v. 2.0. If a copy of the MPL was not distributed with this\n// file, You can obtain one at https://mozilla.org/MPL/2.0/.\n\n// Package pathrs (pathrs-lite) is a less complete pure Go implementation of\n// some of the APIs provided by [libpathrs].\n//\n// [libpathrs]: https://github.com/cyphar/libpathrs\npackage pathrs\n"
  },
  {
    "path": "vendor/github.com/cyphar/filepath-securejoin/pathrs-lite/internal/assert/assert.go",
    "content": "// SPDX-License-Identifier: MPL-2.0\n\n// Copyright (C) 2025 Aleksa Sarai <cyphar@cyphar.com>\n// Copyright (C) 2025 SUSE LLC\n//\n// This Source Code Form is subject to the terms of the Mozilla Public\n// License, v. 2.0. If a copy of the MPL was not distributed with this\n// file, You can obtain one at https://mozilla.org/MPL/2.0/.\n\n// Package assert provides some basic assertion helpers for Go.\npackage assert\n\nimport (\n\t\"fmt\"\n)\n\n// Assert panics if the predicate is false with the provided argument.\nfunc Assert(predicate bool, msg any) {\n\tif !predicate {\n\t\tpanic(msg)\n\t}\n}\n\n// Assertf panics if the predicate is false and formats the message using the\n// same formatting as [fmt.Printf].\n//\n// [fmt.Printf]: https://pkg.go.dev/fmt#Printf\nfunc Assertf(predicate bool, fmtMsg string, args ...any) {\n\tAssert(predicate, fmt.Sprintf(fmtMsg, args...))\n}\n"
  },
  {
    "path": "vendor/github.com/cyphar/filepath-securejoin/pathrs-lite/internal/errors_linux.go",
    "content": "// SPDX-License-Identifier: MPL-2.0\n\n//go:build linux\n\n// Copyright (C) 2024-2025 Aleksa Sarai <cyphar@cyphar.com>\n// Copyright (C) 2024-2025 SUSE LLC\n//\n// This Source Code Form is subject to the terms of the Mozilla Public\n// License, v. 2.0. If a copy of the MPL was not distributed with this\n// file, You can obtain one at https://mozilla.org/MPL/2.0/.\n\n// Package internal contains unexported common code for filepath-securejoin.\npackage internal\n\nimport (\n\t\"errors\"\n\n\t\"golang.org/x/sys/unix\"\n)\n\ntype xdevErrorish struct {\n\tdescription string\n}\n\nfunc (err xdevErrorish) Error() string        { return err.description }\nfunc (err xdevErrorish) Is(target error) bool { return target == unix.EXDEV }\n\nvar (\n\t// ErrPossibleAttack indicates that some attack was detected.\n\tErrPossibleAttack error = xdevErrorish{\"possible attack detected\"}\n\n\t// ErrPossibleBreakout indicates that during an operation we ended up in a\n\t// state that could be a breakout but we detected it.\n\tErrPossibleBreakout error = xdevErrorish{\"possible breakout detected\"}\n\n\t// ErrInvalidDirectory indicates an unlinked directory.\n\tErrInvalidDirectory = errors.New(\"wandered into deleted directory\")\n\n\t// ErrDeletedInode indicates an unlinked file (non-directory).\n\tErrDeletedInode = errors.New(\"cannot verify path of deleted inode\")\n)\n"
  },
  {
    "path": "vendor/github.com/cyphar/filepath-securejoin/pathrs-lite/internal/fd/at_linux.go",
    "content": "// SPDX-License-Identifier: MPL-2.0\n\n//go:build linux\n\n// Copyright (C) 2024-2025 Aleksa Sarai <cyphar@cyphar.com>\n// Copyright (C) 2024-2025 SUSE LLC\n//\n// This Source Code Form is subject to the terms of the Mozilla Public\n// License, v. 2.0. If a copy of the MPL was not distributed with this\n// file, You can obtain one at https://mozilla.org/MPL/2.0/.\n\npackage fd\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"runtime\"\n\n\t\"golang.org/x/sys/unix\"\n\n\t\"github.com/cyphar/filepath-securejoin/pathrs-lite/internal/gocompat\"\n)\n\n// prepareAtWith returns -EBADF (an invalid fd) if dir is nil, otherwise using\n// the dir.Fd(). We use -EBADF because in filepath-securejoin we generally\n// don't want to allow relative-to-cwd paths. The returned path is an\n// *informational* string that describes a reasonable pathname for the given\n// *at(2) arguments. You must not use the full path for any actual filesystem\n// operations.\nfunc prepareAt(dir Fd, path string) (dirFd int, unsafeUnmaskedPath string) {\n\tdirFd, dirPath := -int(unix.EBADF), \".\"\n\tif dir != nil {\n\t\tdirFd, dirPath = int(dir.Fd()), dir.Name()\n\t}\n\tif !filepath.IsAbs(path) {\n\t\t// only prepend the dirfd path for relative paths\n\t\tpath = dirPath + \"/\" + path\n\t}\n\t// NOTE: If path is \".\" or \"\", the returned path won't be filepath.Clean,\n\t// but that's okay since this path is either used for errors (in which case\n\t// a trailing \"/\" or \"/.\" is important information) or will be\n\t// filepath.Clean'd later (in the case of fd.Openat).\n\treturn dirFd, path\n}\n\n// Openat is an [Fd]-based wrapper around unix.Openat.\nfunc Openat(dir Fd, path string, flags int, mode int) (*os.File, error) { //nolint:unparam // wrapper func\n\tdirFd, fullPath := prepareAt(dir, path)\n\t// Make sure we always set O_CLOEXEC.\n\tflags |= unix.O_CLOEXEC\n\tfd, err := unix.Openat(dirFd, path, flags, uint32(mode))\n\tif err != nil {\n\t\treturn nil, &os.PathError{Op: \"openat\", Path: fullPath, Err: err}\n\t}\n\truntime.KeepAlive(dir)\n\t// openat is only used with lexically-safe paths so we can use\n\t// filepath.Clean here, and also the path itself is not going to be used\n\t// for actual path operations.\n\tfullPath = filepath.Clean(fullPath)\n\treturn os.NewFile(uintptr(fd), fullPath), nil\n}\n\n// Fstatat is an [Fd]-based wrapper around unix.Fstatat.\nfunc Fstatat(dir Fd, path string, flags int) (unix.Stat_t, error) {\n\tdirFd, fullPath := prepareAt(dir, path)\n\tvar stat unix.Stat_t\n\tif err := unix.Fstatat(dirFd, path, &stat, flags); err != nil {\n\t\treturn stat, &os.PathError{Op: \"fstatat\", Path: fullPath, Err: err}\n\t}\n\truntime.KeepAlive(dir)\n\treturn stat, nil\n}\n\n// Faccessat is an [Fd]-based wrapper around unix.Faccessat.\nfunc Faccessat(dir Fd, path string, mode uint32, flags int) error {\n\tdirFd, fullPath := prepareAt(dir, path)\n\terr := unix.Faccessat(dirFd, path, mode, flags)\n\tif err != nil {\n\t\terr = &os.PathError{Op: \"faccessat\", Path: fullPath, Err: err}\n\t}\n\truntime.KeepAlive(dir)\n\treturn err\n}\n\n// Readlinkat is an [Fd]-based wrapper around unix.Readlinkat.\nfunc Readlinkat(dir Fd, path string) (string, error) {\n\tdirFd, fullPath := prepareAt(dir, path)\n\tsize := 4096\n\tfor {\n\t\tlinkBuf := make([]byte, size)\n\t\tn, err := unix.Readlinkat(dirFd, path, linkBuf)\n\t\tif err != nil {\n\t\t\treturn \"\", &os.PathError{Op: \"readlinkat\", Path: fullPath, Err: err}\n\t\t}\n\t\truntime.KeepAlive(dir)\n\t\tif n != size {\n\t\t\treturn string(linkBuf[:n]), nil\n\t\t}\n\t\t// Possible truncation, resize the buffer.\n\t\tsize *= 2\n\t}\n}\n\nconst (\n\t// STATX_MNT_ID_UNIQUE is provided in golang.org/x/sys@v0.20.0, but in order to\n\t// avoid bumping the requirement for a single constant we can just define it\n\t// ourselves.\n\t_STATX_MNT_ID_UNIQUE = 0x4000 //nolint:revive // unix.* name\n\n\t// We don't care which mount ID we get. The kernel will give us the unique\n\t// one if it is supported. If the kernel doesn't support\n\t// STATX_MNT_ID_UNIQUE, the bit is ignored and the returned request mask\n\t// will only contain STATX_MNT_ID (if supported).\n\twantStatxMntMask = _STATX_MNT_ID_UNIQUE | unix.STATX_MNT_ID\n)\n\nvar hasStatxMountID = gocompat.SyncOnceValue(func() bool {\n\tvar stx unix.Statx_t\n\terr := unix.Statx(-int(unix.EBADF), \"/\", 0, wantStatxMntMask, &stx)\n\treturn err == nil && stx.Mask&wantStatxMntMask != 0\n})\n\n// GetMountID gets the mount identifier associated with the fd and path\n// combination. It is effectively a wrapper around fetching\n// STATX_MNT_ID{,_UNIQUE} with unix.Statx, but with a fallback to 0 if the\n// kernel doesn't support the feature.\nfunc GetMountID(dir Fd, path string) (uint64, error) {\n\t// If we don't have statx(STATX_MNT_ID*) support, we can't do anything.\n\tif !hasStatxMountID() {\n\t\treturn 0, nil\n\t}\n\n\tdirFd, fullPath := prepareAt(dir, path)\n\n\tvar stx unix.Statx_t\n\terr := unix.Statx(dirFd, path, unix.AT_EMPTY_PATH|unix.AT_SYMLINK_NOFOLLOW, wantStatxMntMask, &stx)\n\tif stx.Mask&wantStatxMntMask == 0 {\n\t\t// It's not a kernel limitation, for some reason we couldn't get a\n\t\t// mount ID. Assume it's some kind of attack.\n\t\terr = fmt.Errorf(\"could not get mount id: %w\", err)\n\t}\n\tif err != nil {\n\t\treturn 0, &os.PathError{Op: \"statx(STATX_MNT_ID_...)\", Path: fullPath, Err: err}\n\t}\n\truntime.KeepAlive(dir)\n\treturn stx.Mnt_id, nil\n}\n"
  },
  {
    "path": "vendor/github.com/cyphar/filepath-securejoin/pathrs-lite/internal/fd/fd.go",
    "content": "// SPDX-License-Identifier: MPL-2.0\n\n// Copyright (C) 2025 Aleksa Sarai <cyphar@cyphar.com>\n// Copyright (C) 2025 SUSE LLC\n//\n// This Source Code Form is subject to the terms of the Mozilla Public\n// License, v. 2.0. If a copy of the MPL was not distributed with this\n// file, You can obtain one at https://mozilla.org/MPL/2.0/.\n\n// Package fd provides a drop-in interface-based replacement of [*os.File] that\n// allows for things like noop-Close wrappers to be used.\n//\n// [*os.File]: https://pkg.go.dev/os#File\npackage fd\n\nimport (\n\t\"io\"\n\t\"os\"\n)\n\n// Fd is an interface that mirrors most of the API of [*os.File], allowing you\n// to create wrappers that can be used in place of [*os.File].\n//\n// [*os.File]: https://pkg.go.dev/os#File\ntype Fd interface {\n\tio.Closer\n\tName() string\n\tFd() uintptr\n}\n\n// Compile-time interface checks.\nvar (\n\t_ Fd = (*os.File)(nil)\n\t_ Fd = noClose{}\n)\n\ntype noClose struct{ inner Fd }\n\nfunc (f noClose) Name() string { return f.inner.Name() }\nfunc (f noClose) Fd() uintptr  { return f.inner.Fd() }\n\nfunc (f noClose) Close() error { return nil }\n\n// NopCloser returns an [*os.File]-like object where the [Close] method is now\n// a no-op.\n//\n// Note that for [*os.File] and similar objects, the Go garbage collector will\n// still call [Close] on the underlying file unless you use\n// [runtime.SetFinalizer] to disable this behaviour. This is up to the caller\n// to do (if necessary).\n//\n// [*os.File]: https://pkg.go.dev/os#File\n// [Close]: https://pkg.go.dev/io#Closer\n// [runtime.SetFinalizer]: https://pkg.go.dev/runtime#SetFinalizer\nfunc NopCloser(f Fd) Fd { return noClose{inner: f} }\n"
  },
  {
    "path": "vendor/github.com/cyphar/filepath-securejoin/pathrs-lite/internal/fd/fd_linux.go",
    "content": "// SPDX-License-Identifier: MPL-2.0\n\n//go:build linux\n\n// Copyright (C) 2024-2025 Aleksa Sarai <cyphar@cyphar.com>\n// Copyright (C) 2024-2025 SUSE LLC\n//\n// This Source Code Form is subject to the terms of the Mozilla Public\n// License, v. 2.0. If a copy of the MPL was not distributed with this\n// file, You can obtain one at https://mozilla.org/MPL/2.0/.\n\npackage fd\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"runtime\"\n\n\t\"golang.org/x/sys/unix\"\n\n\t\"github.com/cyphar/filepath-securejoin/pathrs-lite/internal\"\n)\n\n// DupWithName creates a new file descriptor referencing the same underlying\n// file, but with the provided name instead of fd.Name().\nfunc DupWithName(fd Fd, name string) (*os.File, error) {\n\tfd2, err := unix.FcntlInt(fd.Fd(), unix.F_DUPFD_CLOEXEC, 0)\n\tif err != nil {\n\t\treturn nil, os.NewSyscallError(\"fcntl(F_DUPFD_CLOEXEC)\", err)\n\t}\n\truntime.KeepAlive(fd)\n\treturn os.NewFile(uintptr(fd2), name), nil\n}\n\n// Dup creates a new file description referencing the same underlying file.\nfunc Dup(fd Fd) (*os.File, error) {\n\treturn DupWithName(fd, fd.Name())\n}\n\n// Fstat is an [Fd]-based wrapper around unix.Fstat.\nfunc Fstat(fd Fd) (unix.Stat_t, error) {\n\tvar stat unix.Stat_t\n\tif err := unix.Fstat(int(fd.Fd()), &stat); err != nil {\n\t\treturn stat, &os.PathError{Op: \"fstat\", Path: fd.Name(), Err: err}\n\t}\n\truntime.KeepAlive(fd)\n\treturn stat, nil\n}\n\n// Fstatfs is an [Fd]-based wrapper around unix.Fstatfs.\nfunc Fstatfs(fd Fd) (unix.Statfs_t, error) {\n\tvar statfs unix.Statfs_t\n\tif err := unix.Fstatfs(int(fd.Fd()), &statfs); err != nil {\n\t\treturn statfs, &os.PathError{Op: \"fstatfs\", Path: fd.Name(), Err: err}\n\t}\n\truntime.KeepAlive(fd)\n\treturn statfs, nil\n}\n\n// IsDeadInode detects whether the file has been unlinked from a filesystem and\n// is thus a \"dead inode\" from the kernel's perspective.\nfunc IsDeadInode(file Fd) error {\n\t// If the nlink of a file drops to 0, there is an attacker deleting\n\t// directories during our walk, which could result in weird /proc values.\n\t// It's better to error out in this case.\n\tstat, err := Fstat(file)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"check for dead inode: %w\", err)\n\t}\n\tif stat.Nlink == 0 {\n\t\terr := internal.ErrDeletedInode\n\t\tif stat.Mode&unix.S_IFMT == unix.S_IFDIR {\n\t\t\terr = internal.ErrInvalidDirectory\n\t\t}\n\t\treturn fmt.Errorf(\"%w %q\", err, file.Name())\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/cyphar/filepath-securejoin/pathrs-lite/internal/fd/mount_linux.go",
    "content": "// SPDX-License-Identifier: MPL-2.0\n\n//go:build linux\n\n// Copyright (C) 2024-2025 Aleksa Sarai <cyphar@cyphar.com>\n// Copyright (C) 2024-2025 SUSE LLC\n//\n// This Source Code Form is subject to the terms of the Mozilla Public\n// License, v. 2.0. If a copy of the MPL was not distributed with this\n// file, You can obtain one at https://mozilla.org/MPL/2.0/.\n\npackage fd\n\nimport (\n\t\"os\"\n\t\"runtime\"\n\n\t\"golang.org/x/sys/unix\"\n)\n\n// Fsopen is an [Fd]-based wrapper around unix.Fsopen.\nfunc Fsopen(fsName string, flags int) (*os.File, error) {\n\t// Make sure we always set O_CLOEXEC.\n\tflags |= unix.FSOPEN_CLOEXEC\n\tfd, err := unix.Fsopen(fsName, flags)\n\tif err != nil {\n\t\treturn nil, os.NewSyscallError(\"fsopen \"+fsName, err)\n\t}\n\treturn os.NewFile(uintptr(fd), \"fscontext:\"+fsName), nil\n}\n\n// Fsmount is an [Fd]-based wrapper around unix.Fsmount.\nfunc Fsmount(ctx Fd, flags, mountAttrs int) (*os.File, error) {\n\t// Make sure we always set O_CLOEXEC.\n\tflags |= unix.FSMOUNT_CLOEXEC\n\tfd, err := unix.Fsmount(int(ctx.Fd()), flags, mountAttrs)\n\tif err != nil {\n\t\treturn nil, os.NewSyscallError(\"fsmount \"+ctx.Name(), err)\n\t}\n\treturn os.NewFile(uintptr(fd), \"fsmount:\"+ctx.Name()), nil\n}\n\n// OpenTree is an [Fd]-based wrapper around unix.OpenTree.\nfunc OpenTree(dir Fd, path string, flags uint) (*os.File, error) {\n\tdirFd, fullPath := prepareAt(dir, path)\n\t// Make sure we always set O_CLOEXEC.\n\tflags |= unix.OPEN_TREE_CLOEXEC\n\tfd, err := unix.OpenTree(dirFd, path, flags)\n\tif err != nil {\n\t\treturn nil, &os.PathError{Op: \"open_tree\", Path: fullPath, Err: err}\n\t}\n\truntime.KeepAlive(dir)\n\treturn os.NewFile(uintptr(fd), fullPath), nil\n}\n"
  },
  {
    "path": "vendor/github.com/cyphar/filepath-securejoin/pathrs-lite/internal/fd/openat2_linux.go",
    "content": "// SPDX-License-Identifier: MPL-2.0\n\n//go:build linux\n\n// Copyright (C) 2024-2025 Aleksa Sarai <cyphar@cyphar.com>\n// Copyright (C) 2024-2025 SUSE LLC\n//\n// This Source Code Form is subject to the terms of the Mozilla Public\n// License, v. 2.0. If a copy of the MPL was not distributed with this\n// file, You can obtain one at https://mozilla.org/MPL/2.0/.\n\npackage fd\n\nimport (\n\t\"errors\"\n\t\"os\"\n\t\"runtime\"\n\n\t\"golang.org/x/sys/unix\"\n)\n\nfunc scopedLookupShouldRetry(how *unix.OpenHow, err error) bool {\n\t// RESOLVE_IN_ROOT (and RESOLVE_BENEATH) can return -EAGAIN if we resolve\n\t// \"..\" while a mount or rename occurs anywhere on the system. This could\n\t// happen spuriously, or as the result of an attacker trying to mess with\n\t// us during lookup.\n\t//\n\t// In addition, scoped lookups have a \"safety check\" at the end of\n\t// complete_walk which will return -EXDEV if the final path is not in the\n\t// root.\n\treturn how.Resolve&(unix.RESOLVE_IN_ROOT|unix.RESOLVE_BENEATH) != 0 &&\n\t\t(errors.Is(err, unix.EAGAIN) || errors.Is(err, unix.EXDEV))\n}\n\n// This is a fairly arbitrary limit we have just to avoid an attacker being\n// able to make us spin in an infinite retry loop -- callers can choose to\n// retry on EAGAIN if they prefer.\nconst scopedLookupMaxRetries = 128\n\n// Openat2 is an [Fd]-based wrapper around unix.Openat2, but with some retry\n// logic in case of EAGAIN errors.\n//\n// NOTE: This is a variable so that the lookup tests can force openat2 to fail.\nvar Openat2 = func(dir Fd, path string, how *unix.OpenHow) (*os.File, error) {\n\tdirFd, fullPath := prepareAt(dir, path)\n\t// Make sure we always set O_CLOEXEC.\n\thow.Flags |= unix.O_CLOEXEC\n\tvar tries int\n\tfor {\n\t\tfd, err := unix.Openat2(dirFd, path, how)\n\t\tif err != nil {\n\t\t\tif scopedLookupShouldRetry(how, err) && tries < scopedLookupMaxRetries {\n\t\t\t\t// We retry a couple of times to avoid the spurious errors, and\n\t\t\t\t// if we are being attacked then returning -EAGAIN is the best\n\t\t\t\t// we can do.\n\t\t\t\ttries++\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\treturn nil, &os.PathError{Op: \"openat2\", Path: fullPath, Err: err}\n\t\t}\n\t\truntime.KeepAlive(dir)\n\t\treturn os.NewFile(uintptr(fd), fullPath), nil\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/cyphar/filepath-securejoin/pathrs-lite/internal/gocompat/README.md",
    "content": "## gocompat ##\n\nThis directory contains backports of stdlib functions from later Go versions so\nthe filepath-securejoin can continue to be used by projects that are stuck with\nGo 1.18 support. Note that often filepath-securejoin is added in security\npatches for old releases, so avoiding the need to bump Go compiler requirements\nis a huge plus to downstreams.\n\nThe source code is licensed under the same license as the Go stdlib. See the\nsource files for the precise license information.\n"
  },
  {
    "path": "vendor/github.com/cyphar/filepath-securejoin/pathrs-lite/internal/gocompat/doc.go",
    "content": "// SPDX-License-Identifier: BSD-3-Clause\n//go:build linux && go1.20\n\n// Copyright (C) 2025 SUSE LLC. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package gocompat includes compatibility shims (backported from future Go\n// stdlib versions) to permit filepath-securejoin to be used with older Go\n// versions (often filepath-securejoin is added in security patches for old\n// releases, so avoiding the need to bump Go compiler requirements is a huge\n// plus to downstreams).\npackage gocompat\n"
  },
  {
    "path": "vendor/github.com/cyphar/filepath-securejoin/pathrs-lite/internal/gocompat/gocompat_atomic_go119.go",
    "content": "// SPDX-License-Identifier: BSD-3-Clause\n\n//go:build linux && go1.19\n\n// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage gocompat\n\nimport (\n\t\"sync/atomic\"\n)\n\n// A Bool is an atomic boolean value.\n// The zero value is false.\n//\n// Bool must not be copied after first use.\ntype Bool = atomic.Bool\n"
  },
  {
    "path": "vendor/github.com/cyphar/filepath-securejoin/pathrs-lite/internal/gocompat/gocompat_atomic_unsupported.go",
    "content": "// SPDX-License-Identifier: BSD-3-Clause\n\n//go:build linux && !go1.19\n\n// Copyright (C) 2024-2025 SUSE LLC. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage gocompat\n\nimport (\n\t\"sync/atomic\"\n)\n\n// noCopy may be added to structs which must not be copied\n// after the first use.\n//\n// See https://golang.org/issues/8005#issuecomment-190753527\n// for details.\n//\n// Note that it must not be embedded, due to the Lock and Unlock methods.\ntype noCopy struct{}\n\n// Lock is a no-op used by -copylocks checker from `go vet`.\nfunc (*noCopy) Lock() {}\n\n// b32 returns a uint32 0 or 1 representing b.\nfunc b32(b bool) uint32 {\n\tif b {\n\t\treturn 1\n\t}\n\treturn 0\n}\n\n// A Bool is an atomic boolean value.\n// The zero value is false.\n//\n// Bool must not be copied after first use.\ntype Bool struct {\n\t_ noCopy\n\tv uint32\n}\n\n// Load atomically loads and returns the value stored in x.\nfunc (x *Bool) Load() bool { return atomic.LoadUint32(&x.v) != 0 }\n\n// Store atomically stores val into x.\nfunc (x *Bool) Store(val bool) { atomic.StoreUint32(&x.v, b32(val)) }\n"
  },
  {
    "path": "vendor/github.com/cyphar/filepath-securejoin/pathrs-lite/internal/gocompat/gocompat_errors_go120.go",
    "content": "// SPDX-License-Identifier: BSD-3-Clause\n//go:build linux && go1.20\n\n// Copyright (C) 2024 SUSE LLC. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage gocompat\n\nimport (\n\t\"fmt\"\n)\n\n// WrapBaseError is a helper that is equivalent to fmt.Errorf(\"%w: %w\"), except\n// that on pre-1.20 Go versions only errors.Is() works properly (errors.Unwrap)\n// is only guaranteed to give you baseErr.\nfunc WrapBaseError(baseErr, extraErr error) error {\n\treturn fmt.Errorf(\"%w: %w\", extraErr, baseErr)\n}\n"
  },
  {
    "path": "vendor/github.com/cyphar/filepath-securejoin/pathrs-lite/internal/gocompat/gocompat_errors_unsupported.go",
    "content": "// SPDX-License-Identifier: BSD-3-Clause\n\n//go:build linux && !go1.20\n\n// Copyright (C) 2024 SUSE LLC. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage gocompat\n\nimport (\n\t\"fmt\"\n)\n\ntype wrappedError struct {\n\tinner   error\n\tisError error\n}\n\nfunc (err wrappedError) Is(target error) bool {\n\treturn err.isError == target\n}\n\nfunc (err wrappedError) Unwrap() error {\n\treturn err.inner\n}\n\nfunc (err wrappedError) Error() string {\n\treturn fmt.Sprintf(\"%v: %v\", err.isError, err.inner)\n}\n\n// WrapBaseError is a helper that is equivalent to fmt.Errorf(\"%w: %w\"), except\n// that on pre-1.20 Go versions only errors.Is() works properly (errors.Unwrap)\n// is only guaranteed to give you baseErr.\nfunc WrapBaseError(baseErr, extraErr error) error {\n\treturn wrappedError{\n\t\tinner:   baseErr,\n\t\tisError: extraErr,\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/cyphar/filepath-securejoin/pathrs-lite/internal/gocompat/gocompat_generics_go121.go",
    "content": "// SPDX-License-Identifier: BSD-3-Clause\n\n//go:build linux && go1.21\n\n// Copyright (C) 2024-2025 SUSE LLC. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage gocompat\n\nimport (\n\t\"cmp\"\n\t\"slices\"\n\t\"sync\"\n)\n\n// SlicesDeleteFunc is equivalent to Go 1.21's slices.DeleteFunc.\nfunc SlicesDeleteFunc[S ~[]E, E any](slice S, delFn func(E) bool) S {\n\treturn slices.DeleteFunc(slice, delFn)\n}\n\n// SlicesContains is equivalent to Go 1.21's slices.Contains.\nfunc SlicesContains[S ~[]E, E comparable](slice S, val E) bool {\n\treturn slices.Contains(slice, val)\n}\n\n// SlicesClone is equivalent to Go 1.21's slices.Clone.\nfunc SlicesClone[S ~[]E, E any](slice S) S {\n\treturn slices.Clone(slice)\n}\n\n// SyncOnceValue is equivalent to Go 1.21's sync.OnceValue.\nfunc SyncOnceValue[T any](f func() T) func() T {\n\treturn sync.OnceValue(f)\n}\n\n// SyncOnceValues is equivalent to Go 1.21's sync.OnceValues.\nfunc SyncOnceValues[T1, T2 any](f func() (T1, T2)) func() (T1, T2) {\n\treturn sync.OnceValues(f)\n}\n\n// CmpOrdered is equivalent to Go 1.21's cmp.Ordered generic type definition.\ntype CmpOrdered = cmp.Ordered\n\n// CmpCompare is equivalent to Go 1.21's cmp.Compare.\nfunc CmpCompare[T CmpOrdered](x, y T) int {\n\treturn cmp.Compare(x, y)\n}\n\n// Max2 is equivalent to Go 1.21's max builtin (but only for two parameters).\nfunc Max2[T CmpOrdered](x, y T) T {\n\treturn max(x, y)\n}\n"
  },
  {
    "path": "vendor/github.com/cyphar/filepath-securejoin/pathrs-lite/internal/gocompat/gocompat_generics_unsupported.go",
    "content": "// SPDX-License-Identifier: BSD-3-Clause\n\n//go:build linux && !go1.21\n\n// Copyright (C) 2021, 2022 The Go Authors. All rights reserved.\n// Copyright (C) 2024-2025 SUSE LLC. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE.BSD file.\n\npackage gocompat\n\nimport (\n\t\"sync\"\n)\n\n// These are very minimal implementations of functions that appear in Go 1.21's\n// stdlib, included so that we can build on older Go versions. Most are\n// borrowed directly from the stdlib, and a few are modified to be \"obviously\n// correct\" without needing to copy too many other helpers.\n\n// clearSlice is equivalent to Go 1.21's builtin clear.\n// Copied from the Go 1.24 stdlib implementation.\nfunc clearSlice[S ~[]E, E any](slice S) {\n\tvar zero E\n\tfor i := range slice {\n\t\tslice[i] = zero\n\t}\n}\n\n// slicesIndexFunc is equivalent to Go 1.21's slices.IndexFunc.\n// Copied from the Go 1.24 stdlib implementation.\nfunc slicesIndexFunc[S ~[]E, E any](s S, f func(E) bool) int {\n\tfor i := range s {\n\t\tif f(s[i]) {\n\t\t\treturn i\n\t\t}\n\t}\n\treturn -1\n}\n\n// SlicesDeleteFunc is equivalent to Go 1.21's slices.DeleteFunc.\n// Copied from the Go 1.24 stdlib implementation.\nfunc SlicesDeleteFunc[S ~[]E, E any](s S, del func(E) bool) S {\n\ti := slicesIndexFunc(s, del)\n\tif i == -1 {\n\t\treturn s\n\t}\n\t// Don't start copying elements until we find one to delete.\n\tfor j := i + 1; j < len(s); j++ {\n\t\tif v := s[j]; !del(v) {\n\t\t\ts[i] = v\n\t\t\ti++\n\t\t}\n\t}\n\tclearSlice(s[i:]) // zero/nil out the obsolete elements, for GC\n\treturn s[:i]\n}\n\n// SlicesContains is equivalent to Go 1.21's slices.Contains.\n// Similar to the stdlib slices.Contains, except that we don't have\n// slices.Index so we need to use slices.IndexFunc for this non-Func helper.\nfunc SlicesContains[S ~[]E, E comparable](s S, v E) bool {\n\treturn slicesIndexFunc(s, func(e E) bool { return e == v }) >= 0\n}\n\n// SlicesClone is equivalent to Go 1.21's slices.Clone.\n// Copied from the Go 1.24 stdlib implementation.\nfunc SlicesClone[S ~[]E, E any](s S) S {\n\t// Preserve nil in case it matters.\n\tif s == nil {\n\t\treturn nil\n\t}\n\treturn append(S([]E{}), s...)\n}\n\n// SyncOnceValue is equivalent to Go 1.21's sync.OnceValue.\n// Copied from the Go 1.25 stdlib implementation.\nfunc SyncOnceValue[T any](f func() T) func() T {\n\t// Use a struct so that there's a single heap allocation.\n\td := struct {\n\t\tf      func() T\n\t\tonce   sync.Once\n\t\tvalid  bool\n\t\tp      any\n\t\tresult T\n\t}{\n\t\tf: f,\n\t}\n\treturn func() T {\n\t\td.once.Do(func() {\n\t\t\tdefer func() {\n\t\t\t\td.f = nil\n\t\t\t\td.p = recover()\n\t\t\t\tif !d.valid {\n\t\t\t\t\tpanic(d.p)\n\t\t\t\t}\n\t\t\t}()\n\t\t\td.result = d.f()\n\t\t\td.valid = true\n\t\t})\n\t\tif !d.valid {\n\t\t\tpanic(d.p)\n\t\t}\n\t\treturn d.result\n\t}\n}\n\n// SyncOnceValues is equivalent to Go 1.21's sync.OnceValues.\n// Copied from the Go 1.25 stdlib implementation.\nfunc SyncOnceValues[T1, T2 any](f func() (T1, T2)) func() (T1, T2) {\n\t// Use a struct so that there's a single heap allocation.\n\td := struct {\n\t\tf     func() (T1, T2)\n\t\tonce  sync.Once\n\t\tvalid bool\n\t\tp     any\n\t\tr1    T1\n\t\tr2    T2\n\t}{\n\t\tf: f,\n\t}\n\treturn func() (T1, T2) {\n\t\td.once.Do(func() {\n\t\t\tdefer func() {\n\t\t\t\td.f = nil\n\t\t\t\td.p = recover()\n\t\t\t\tif !d.valid {\n\t\t\t\t\tpanic(d.p)\n\t\t\t\t}\n\t\t\t}()\n\t\t\td.r1, d.r2 = d.f()\n\t\t\td.valid = true\n\t\t})\n\t\tif !d.valid {\n\t\t\tpanic(d.p)\n\t\t}\n\t\treturn d.r1, d.r2\n\t}\n}\n\n// CmpOrdered is equivalent to Go 1.21's cmp.Ordered generic type definition.\n// Copied from the Go 1.25 stdlib implementation.\ntype CmpOrdered interface {\n\t~int | ~int8 | ~int16 | ~int32 | ~int64 |\n\t\t~uint | ~uint8 | ~uint16 | ~uint32 | ~uint64 | ~uintptr |\n\t\t~float32 | ~float64 |\n\t\t~string\n}\n\n// isNaN reports whether x is a NaN without requiring the math package.\n// This will always return false if T is not floating-point.\n// Copied from the Go 1.25 stdlib implementation.\nfunc isNaN[T CmpOrdered](x T) bool {\n\treturn x != x\n}\n\n// CmpCompare is equivalent to Go 1.21's cmp.Compare.\n// Copied from the Go 1.25 stdlib implementation.\nfunc CmpCompare[T CmpOrdered](x, y T) int {\n\txNaN := isNaN(x)\n\tyNaN := isNaN(y)\n\tif xNaN {\n\t\tif yNaN {\n\t\t\treturn 0\n\t\t}\n\t\treturn -1\n\t}\n\tif yNaN {\n\t\treturn +1\n\t}\n\tif x < y {\n\t\treturn -1\n\t}\n\tif x > y {\n\t\treturn +1\n\t}\n\treturn 0\n}\n\n// Max2 is equivalent to Go 1.21's max builtin for two parameters.\nfunc Max2[T CmpOrdered](x, y T) T {\n\tm := x\n\tif y > m {\n\t\tm = y\n\t}\n\treturn m\n}\n"
  },
  {
    "path": "vendor/github.com/cyphar/filepath-securejoin/pathrs-lite/internal/gopathrs/doc.go",
    "content": "// SPDX-License-Identifier: MPL-2.0\n\n//go:build linux\n\n// Copyright (C) 2024-2025 Aleksa Sarai <cyphar@cyphar.com>\n// Copyright (C) 2024-2025 SUSE LLC\n//\n// This Source Code Form is subject to the terms of the Mozilla Public\n// License, v. 2.0. If a copy of the MPL was not distributed with this\n// file, You can obtain one at https://mozilla.org/MPL/2.0/.\n\n// Package gopathrs is a less complete pure Go implementation of some of the\n// APIs provided by [libpathrs].\n//\n// [libpathrs]: https://github.com/cyphar/libpathrs\npackage gopathrs\n"
  },
  {
    "path": "vendor/github.com/cyphar/filepath-securejoin/pathrs-lite/internal/gopathrs/lookup_linux.go",
    "content": "// SPDX-License-Identifier: MPL-2.0\n\n//go:build linux\n\n// Copyright (C) 2024-2025 Aleksa Sarai <cyphar@cyphar.com>\n// Copyright (C) 2024-2025 SUSE LLC\n//\n// This Source Code Form is subject to the terms of the Mozilla Public\n// License, v. 2.0. If a copy of the MPL was not distributed with this\n// file, You can obtain one at https://mozilla.org/MPL/2.0/.\n\npackage gopathrs\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"os\"\n\t\"path\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"golang.org/x/sys/unix\"\n\n\t\"github.com/cyphar/filepath-securejoin/internal/consts\"\n\t\"github.com/cyphar/filepath-securejoin/pathrs-lite/internal/fd\"\n\t\"github.com/cyphar/filepath-securejoin/pathrs-lite/internal/gocompat\"\n\t\"github.com/cyphar/filepath-securejoin/pathrs-lite/internal/linux\"\n\t\"github.com/cyphar/filepath-securejoin/pathrs-lite/internal/procfs\"\n)\n\ntype symlinkStackEntry struct {\n\t// (dir, remainingPath) is what we would've returned if the link didn't\n\t// exist. This matches what openat2(RESOLVE_IN_ROOT) would return in\n\t// this case.\n\tdir           *os.File\n\tremainingPath string\n\t// linkUnwalked is the remaining path components from the original\n\t// Readlink which we have yet to walk. When this slice is empty, we\n\t// drop the link from the stack.\n\tlinkUnwalked []string\n}\n\nfunc (se symlinkStackEntry) String() string {\n\treturn fmt.Sprintf(\"<%s>/%s [->%s]\", se.dir.Name(), se.remainingPath, strings.Join(se.linkUnwalked, \"/\"))\n}\n\nfunc (se symlinkStackEntry) Close() {\n\t_ = se.dir.Close()\n}\n\ntype symlinkStack []*symlinkStackEntry\n\nfunc (s *symlinkStack) IsEmpty() bool {\n\treturn s == nil || len(*s) == 0\n}\n\nfunc (s *symlinkStack) Close() {\n\tif s != nil {\n\t\tfor _, link := range *s {\n\t\t\tlink.Close()\n\t\t}\n\t\t// TODO: Switch to clear once we switch to Go 1.21.\n\t\t*s = nil\n\t}\n}\n\nvar (\n\terrEmptyStack         = errors.New(\"[internal] stack is empty\")\n\terrBrokenSymlinkStack = errors.New(\"[internal error] broken symlink stack\")\n)\n\nfunc (s *symlinkStack) popPart(part string) error {\n\tif s == nil || s.IsEmpty() {\n\t\t// If there is nothing in the symlink stack, then the part was from the\n\t\t// real path provided by the user, and this is a no-op.\n\t\treturn errEmptyStack\n\t}\n\tif part == \".\" {\n\t\t// \".\" components are no-ops -- we drop them when doing SwapLink.\n\t\treturn nil\n\t}\n\n\ttailEntry := (*s)[len(*s)-1]\n\n\t// Double-check that we are popping the component we expect.\n\tif len(tailEntry.linkUnwalked) == 0 {\n\t\treturn fmt.Errorf(\"%w: trying to pop component %q of empty stack entry %s\", errBrokenSymlinkStack, part, tailEntry)\n\t}\n\theadPart := tailEntry.linkUnwalked[0]\n\tif headPart != part {\n\t\treturn fmt.Errorf(\"%w: trying to pop component %q but the last stack entry is %s (%q)\", errBrokenSymlinkStack, part, tailEntry, headPart)\n\t}\n\n\t// Drop the component, but keep the entry around in case we are dealing\n\t// with a \"tail-chained\" symlink.\n\ttailEntry.linkUnwalked = tailEntry.linkUnwalked[1:]\n\treturn nil\n}\n\nfunc (s *symlinkStack) PopPart(part string) error {\n\tif err := s.popPart(part); err != nil {\n\t\tif errors.Is(err, errEmptyStack) {\n\t\t\t// Skip empty stacks.\n\t\t\terr = nil\n\t\t}\n\t\treturn err\n\t}\n\n\t// Clean up any of the trailing stack entries that are empty.\n\tfor lastGood := len(*s) - 1; lastGood >= 0; lastGood-- {\n\t\tentry := (*s)[lastGood]\n\t\tif len(entry.linkUnwalked) > 0 {\n\t\t\tbreak\n\t\t}\n\t\tentry.Close()\n\t\t(*s) = (*s)[:lastGood]\n\t}\n\treturn nil\n}\n\nfunc (s *symlinkStack) push(dir *os.File, remainingPath, linkTarget string) error {\n\tif s == nil {\n\t\treturn nil\n\t}\n\t// Split the link target and clean up any \"\" parts.\n\tlinkTargetParts := gocompat.SlicesDeleteFunc(\n\t\tstrings.Split(linkTarget, \"/\"),\n\t\tfunc(part string) bool { return part == \"\" || part == \".\" })\n\n\t// Copy the directory so the caller doesn't close our copy.\n\tdirCopy, err := fd.Dup(dir)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// Add to the stack.\n\t*s = append(*s, &symlinkStackEntry{\n\t\tdir:           dirCopy,\n\t\tremainingPath: remainingPath,\n\t\tlinkUnwalked:  linkTargetParts,\n\t})\n\treturn nil\n}\n\nfunc (s *symlinkStack) SwapLink(linkPart string, dir *os.File, remainingPath, linkTarget string) error {\n\t// If we are currently inside a symlink resolution, remove the symlink\n\t// component from the last symlink entry, but don't remove the entry even\n\t// if it's empty. If we are a \"tail-chained\" symlink (a trailing symlink we\n\t// hit during a symlink resolution) we need to keep the old symlink until\n\t// we finish the resolution.\n\tif err := s.popPart(linkPart); err != nil {\n\t\tif !errors.Is(err, errEmptyStack) {\n\t\t\treturn err\n\t\t}\n\t\t// Push the component regardless of whether the stack was empty.\n\t}\n\treturn s.push(dir, remainingPath, linkTarget)\n}\n\nfunc (s *symlinkStack) PopTopSymlink() (*os.File, string, bool) {\n\tif s == nil || s.IsEmpty() {\n\t\treturn nil, \"\", false\n\t}\n\ttailEntry := (*s)[0]\n\t*s = (*s)[1:]\n\treturn tailEntry.dir, tailEntry.remainingPath, true\n}\n\n// PartialLookupInRoot tries to lookup as much of the request path as possible\n// within the provided root (a-la RESOLVE_IN_ROOT) and opens the final existing\n// component of the requested path, returning a file handle to the final\n// existing component and a string containing the remaining path components.\nfunc PartialLookupInRoot(root fd.Fd, unsafePath string) (*os.File, string, error) {\n\treturn lookupInRoot(root, unsafePath, true)\n}\n\nfunc completeLookupInRoot(root fd.Fd, unsafePath string) (*os.File, error) {\n\thandle, remainingPath, err := lookupInRoot(root, unsafePath, false)\n\tif remainingPath != \"\" && err == nil {\n\t\t// should never happen\n\t\terr = fmt.Errorf(\"[bug] non-empty remaining path when doing a non-partial lookup: %q\", remainingPath)\n\t}\n\t// lookupInRoot(partial=false) will always close the handle if an error is\n\t// returned, so no need to double-check here.\n\treturn handle, err\n}\n\nfunc lookupInRoot(root fd.Fd, unsafePath string, partial bool) (Handle *os.File, _ string, _ error) {\n\tunsafePath = filepath.ToSlash(unsafePath) // noop\n\n\t// This is very similar to SecureJoin, except that we operate on the\n\t// components using file descriptors. We then return the last component we\n\t// managed open, along with the remaining path components not opened.\n\n\t// Try to use openat2 if possible.\n\t//\n\t// NOTE: If openat2(2) works normally but fails for this lookup, it is\n\t// probably not a good idea to fall-back to the O_PATH resolver. An\n\t// attacker could find a bug in the O_PATH resolver and uncontionally\n\t// falling back to the O_PATH resolver would form a downgrade attack.\n\tif handle, remainingPath, err := lookupOpenat2(root, unsafePath, partial); err == nil || linux.HasOpenat2() {\n\t\treturn handle, remainingPath, err\n\t}\n\n\t// Get the \"actual\" root path from /proc/self/fd. This is necessary if the\n\t// root is some magic-link like /proc/$pid/root, in which case we want to\n\t// make sure when we do procfs.CheckProcSelfFdPath that we are using the\n\t// correct root path.\n\tlogicalRootPath, err := procfs.ProcSelfFdReadlink(root)\n\tif err != nil {\n\t\treturn nil, \"\", fmt.Errorf(\"get real root path: %w\", err)\n\t}\n\n\tcurrentDir, err := fd.Dup(root)\n\tif err != nil {\n\t\treturn nil, \"\", fmt.Errorf(\"clone root fd: %w\", err)\n\t}\n\tdefer func() {\n\t\t// If a handle is not returned, close the internal handle.\n\t\tif Handle == nil {\n\t\t\t_ = currentDir.Close()\n\t\t}\n\t}()\n\n\t// symlinkStack is used to emulate how openat2(RESOLVE_IN_ROOT) treats\n\t// dangling symlinks. If we hit a non-existent path while resolving a\n\t// symlink, we need to return the (dir, remainingPath) that we had when we\n\t// hit the symlink (treating the symlink as though it were a regular file).\n\t// The set of (dir, remainingPath) sets is stored within the symlinkStack\n\t// and we add and remove parts when we hit symlink and non-symlink\n\t// components respectively. We need a stack because of recursive symlinks\n\t// (symlinks that contain symlink components in their target).\n\t//\n\t// Note that the stack is ONLY used for book-keeping. All of the actual\n\t// path walking logic is still based on currentPath/remainingPath and\n\t// currentDir (as in SecureJoin).\n\tvar symStack *symlinkStack\n\tif partial {\n\t\tsymStack = new(symlinkStack)\n\t\tdefer symStack.Close()\n\t}\n\n\tvar (\n\t\tlinksWalked   int\n\t\tcurrentPath   string\n\t\tremainingPath = unsafePath\n\t)\n\tfor remainingPath != \"\" {\n\t\t// Save the current remaining path so if the part is not real we can\n\t\t// return the path including the component.\n\t\toldRemainingPath := remainingPath\n\n\t\t// Get the next path component.\n\t\tvar part string\n\t\tif i := strings.IndexByte(remainingPath, '/'); i == -1 {\n\t\t\tpart, remainingPath = remainingPath, \"\"\n\t\t} else {\n\t\t\tpart, remainingPath = remainingPath[:i], remainingPath[i+1:]\n\t\t}\n\t\t// If we hit an empty component, we need to treat it as though it is\n\t\t// \".\" so that trailing \"/\" and \"//\" components on a non-directory\n\t\t// correctly return the right error code.\n\t\tif part == \"\" {\n\t\t\tpart = \".\"\n\t\t}\n\n\t\t// Apply the component lexically to the path we are building.\n\t\t// currentPath does not contain any symlinks, and we are lexically\n\t\t// dealing with a single component, so it's okay to do a filepath.Clean\n\t\t// here.\n\t\tnextPath := path.Join(\"/\", currentPath, part)\n\t\t// If we logically hit the root, just clone the root rather than\n\t\t// opening the part and doing all of the other checks.\n\t\tif nextPath == \"/\" {\n\t\t\tif err := symStack.PopPart(part); err != nil {\n\t\t\t\treturn nil, \"\", fmt.Errorf(\"walking into root with part %q failed: %w\", part, err)\n\t\t\t}\n\t\t\t// Jump to root.\n\t\t\trootClone, err := fd.Dup(root)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, \"\", fmt.Errorf(\"clone root fd: %w\", err)\n\t\t\t}\n\t\t\t_ = currentDir.Close()\n\t\t\tcurrentDir = rootClone\n\t\t\tcurrentPath = nextPath\n\t\t\tcontinue\n\t\t}\n\n\t\t// Try to open the next component.\n\t\tnextDir, err := fd.Openat(currentDir, part, unix.O_PATH|unix.O_NOFOLLOW|unix.O_CLOEXEC, 0)\n\t\tswitch err {\n\t\tcase nil:\n\t\t\tst, err := nextDir.Stat()\n\t\t\tif err != nil {\n\t\t\t\t_ = nextDir.Close()\n\t\t\t\treturn nil, \"\", fmt.Errorf(\"stat component %q: %w\", part, err)\n\t\t\t}\n\n\t\t\tswitch st.Mode() & os.ModeType { //nolint:exhaustive // just a glorified if statement\n\t\t\tcase os.ModeSymlink:\n\t\t\t\t// readlinkat implies AT_EMPTY_PATH since Linux 2.6.39. See\n\t\t\t\t// Linux commit 65cfc6722361 (\"readlinkat(), fchownat() and\n\t\t\t\t// fstatat() with empty relative pathnames\").\n\t\t\t\tlinkDest, err := fd.Readlinkat(nextDir, \"\")\n\t\t\t\t// We don't need the handle anymore.\n\t\t\t\t_ = nextDir.Close()\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, \"\", err\n\t\t\t\t}\n\n\t\t\t\tlinksWalked++\n\t\t\t\tif linksWalked > consts.MaxSymlinkLimit {\n\t\t\t\t\treturn nil, \"\", &os.PathError{Op: \"securejoin.lookupInRoot\", Path: logicalRootPath + \"/\" + unsafePath, Err: unix.ELOOP}\n\t\t\t\t}\n\n\t\t\t\t// Swap out the symlink's component for the link entry itself.\n\t\t\t\tif err := symStack.SwapLink(part, currentDir, oldRemainingPath, linkDest); err != nil {\n\t\t\t\t\treturn nil, \"\", fmt.Errorf(\"walking into symlink %q failed: push symlink: %w\", part, err)\n\t\t\t\t}\n\n\t\t\t\t// Update our logical remaining path.\n\t\t\t\tremainingPath = linkDest + \"/\" + remainingPath\n\t\t\t\t// Absolute symlinks reset any work we've already done.\n\t\t\t\tif path.IsAbs(linkDest) {\n\t\t\t\t\t// Jump to root.\n\t\t\t\t\trootClone, err := fd.Dup(root)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn nil, \"\", fmt.Errorf(\"clone root fd: %w\", err)\n\t\t\t\t\t}\n\t\t\t\t\t_ = currentDir.Close()\n\t\t\t\t\tcurrentDir = rootClone\n\t\t\t\t\tcurrentPath = \"/\"\n\t\t\t\t}\n\n\t\t\tdefault:\n\t\t\t\t// If we are dealing with a directory, simply walk into it.\n\t\t\t\t_ = currentDir.Close()\n\t\t\t\tcurrentDir = nextDir\n\t\t\t\tcurrentPath = nextPath\n\n\t\t\t\t// The part was real, so drop it from the symlink stack.\n\t\t\t\tif err := symStack.PopPart(part); err != nil {\n\t\t\t\t\treturn nil, \"\", fmt.Errorf(\"walking into directory %q failed: %w\", part, err)\n\t\t\t\t}\n\n\t\t\t\t// If we are operating on a .., make sure we haven't escaped.\n\t\t\t\t// We only have to check for \"..\" here because walking down\n\t\t\t\t// into a regular component component cannot cause you to\n\t\t\t\t// escape. This mirrors the logic in RESOLVE_IN_ROOT, except we\n\t\t\t\t// have to check every \"..\" rather than only checking after a\n\t\t\t\t// rename or mount on the system.\n\t\t\t\tif part == \"..\" {\n\t\t\t\t\t// Make sure the root hasn't moved.\n\t\t\t\t\tif err := procfs.CheckProcSelfFdPath(logicalRootPath, root); err != nil {\n\t\t\t\t\t\treturn nil, \"\", fmt.Errorf(\"root path moved during lookup: %w\", err)\n\t\t\t\t\t}\n\t\t\t\t\t// Make sure the path is what we expect.\n\t\t\t\t\tfullPath := logicalRootPath + nextPath\n\t\t\t\t\tif err := procfs.CheckProcSelfFdPath(fullPath, currentDir); err != nil {\n\t\t\t\t\t\treturn nil, \"\", fmt.Errorf(\"walking into %q had unexpected result: %w\", part, err)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\tdefault:\n\t\t\tif !partial {\n\t\t\t\treturn nil, \"\", err\n\t\t\t}\n\t\t\t// If there are any remaining components in the symlink stack, we\n\t\t\t// are still within a symlink resolution and thus we hit a dangling\n\t\t\t// symlink. So pretend that the first symlink in the stack we hit\n\t\t\t// was an ENOENT (to match openat2).\n\t\t\tif oldDir, remainingPath, ok := symStack.PopTopSymlink(); ok {\n\t\t\t\t_ = currentDir.Close()\n\t\t\t\treturn oldDir, remainingPath, err\n\t\t\t}\n\t\t\t// We have hit a final component that doesn't exist, so we have our\n\t\t\t// partial open result. Note that we have to use the OLD remaining\n\t\t\t// path, since the lookup failed.\n\t\t\treturn currentDir, oldRemainingPath, err\n\t\t}\n\t}\n\n\t// If the unsafePath had a trailing slash, we need to make sure we try to\n\t// do a relative \".\" open so that we will correctly return an error when\n\t// the final component is a non-directory (to match openat2). In the\n\t// context of openat2, a trailing slash and a trailing \"/.\" are completely\n\t// equivalent.\n\tif strings.HasSuffix(unsafePath, \"/\") {\n\t\tnextDir, err := fd.Openat(currentDir, \".\", unix.O_PATH|unix.O_NOFOLLOW|unix.O_CLOEXEC, 0)\n\t\tif err != nil {\n\t\t\tif !partial {\n\t\t\t\t_ = currentDir.Close()\n\t\t\t\tcurrentDir = nil\n\t\t\t}\n\t\t\treturn currentDir, \"\", err\n\t\t}\n\t\t_ = currentDir.Close()\n\t\tcurrentDir = nextDir\n\t}\n\n\t// All of the components existed!\n\treturn currentDir, \"\", nil\n}\n"
  },
  {
    "path": "vendor/github.com/cyphar/filepath-securejoin/pathrs-lite/internal/gopathrs/mkdir_linux.go",
    "content": "// SPDX-License-Identifier: MPL-2.0\n\n//go:build linux\n\n// Copyright (C) 2024-2025 Aleksa Sarai <cyphar@cyphar.com>\n// Copyright (C) 2024-2025 SUSE LLC\n//\n// This Source Code Form is subject to the terms of the Mozilla Public\n// License, v. 2.0. If a copy of the MPL was not distributed with this\n// file, You can obtain one at https://mozilla.org/MPL/2.0/.\n\npackage gopathrs\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"golang.org/x/sys/unix\"\n\n\t\"github.com/cyphar/filepath-securejoin/pathrs-lite/internal/fd\"\n\t\"github.com/cyphar/filepath-securejoin/pathrs-lite/internal/gocompat\"\n\t\"github.com/cyphar/filepath-securejoin/pathrs-lite/internal/linux\"\n\t\"github.com/cyphar/filepath-securejoin/pathrs-lite/internal/procfs\"\n)\n\n// ErrInvalidMode is returned from [MkdirAll] when the requested mode is\n// invalid.\nvar ErrInvalidMode = errors.New(\"invalid permission mode\")\n\n// modePermExt is like os.ModePerm except that it also includes the set[ug]id\n// and sticky bits.\nconst modePermExt = os.ModePerm | os.ModeSetuid | os.ModeSetgid | os.ModeSticky\n\n//nolint:cyclop // this function needs to handle a lot of cases\nfunc toUnixMode(mode os.FileMode) (uint32, error) {\n\tsysMode := uint32(mode.Perm())\n\tif mode&os.ModeSetuid != 0 {\n\t\tsysMode |= unix.S_ISUID\n\t}\n\tif mode&os.ModeSetgid != 0 {\n\t\tsysMode |= unix.S_ISGID\n\t}\n\tif mode&os.ModeSticky != 0 {\n\t\tsysMode |= unix.S_ISVTX\n\t}\n\t// We don't allow file type bits.\n\tif mode&os.ModeType != 0 {\n\t\treturn 0, fmt.Errorf(\"%w %+.3o (%s): type bits not permitted\", ErrInvalidMode, mode, mode)\n\t}\n\t// We don't allow other unknown modes.\n\tif mode&^modePermExt != 0 || sysMode&unix.S_IFMT != 0 {\n\t\treturn 0, fmt.Errorf(\"%w %+.3o (%s): unknown mode bits\", ErrInvalidMode, mode, mode)\n\t}\n\treturn sysMode, nil\n}\n\n// MkdirAllHandle is equivalent to [MkdirAll], except that it is safer to use\n// in two respects:\n//\n//   - The caller provides the root directory as an *[os.File] (preferably O_PATH)\n//     handle. This means that the caller can be sure which root directory is\n//     being used. Note that this can be emulated by using /proc/self/fd/... as\n//     the root path with [os.MkdirAll].\n//\n//   - Once all of the directories have been created, an *[os.File] O_PATH handle\n//     to the directory at unsafePath is returned to the caller. This is done in\n//     an effectively-race-free way (an attacker would only be able to swap the\n//     final directory component), which is not possible to emulate with\n//     [MkdirAll].\n//\n// In addition, the returned handle is obtained far more efficiently than doing\n// a brand new lookup of unsafePath (such as with [SecureJoin] or openat2) after\n// doing [MkdirAll]. If you intend to open the directory after creating it, you\n// should use MkdirAllHandle.\n//\n// [SecureJoin]: https://pkg.go.dev/github.com/cyphar/filepath-securejoin#SecureJoin\nfunc MkdirAllHandle(root *os.File, unsafePath string, mode os.FileMode) (_ *os.File, Err error) {\n\tunixMode, err := toUnixMode(mode)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\t// On Linux, mkdirat(2) (and os.Mkdir) silently ignore the suid and sgid\n\t// bits. We could also silently ignore them but since we have very few\n\t// users it seems more prudent to return an error so users notice that\n\t// these bits will not be set.\n\tif unixMode&^0o1777 != 0 {\n\t\treturn nil, fmt.Errorf(\"%w for mkdir %+.3o: suid and sgid are ignored by mkdir\", ErrInvalidMode, mode)\n\t}\n\n\t// Try to open as much of the path as possible.\n\tcurrentDir, remainingPath, err := PartialLookupInRoot(root, unsafePath)\n\tdefer func() {\n\t\tif Err != nil {\n\t\t\t_ = currentDir.Close()\n\t\t}\n\t}()\n\tif err != nil && !errors.Is(err, unix.ENOENT) {\n\t\treturn nil, fmt.Errorf(\"find existing subpath of %q: %w\", unsafePath, err)\n\t}\n\n\t// If there is an attacker deleting directories as we walk into them,\n\t// detect this proactively. Note this is guaranteed to detect if the\n\t// attacker deleted any part of the tree up to currentDir.\n\t//\n\t// Once we walk into a dead directory, partialLookupInRoot would not be\n\t// able to walk further down the tree (directories must be empty before\n\t// they are deleted), and if the attacker has removed the entire tree we\n\t// can be sure that anything that was originally inside a dead directory\n\t// must also be deleted and thus is a dead directory in its own right.\n\t//\n\t// This is mostly a quality-of-life check, because mkdir will simply fail\n\t// later if the attacker deletes the tree after this check.\n\tif err := fd.IsDeadInode(currentDir); err != nil {\n\t\treturn nil, fmt.Errorf(\"finding existing subpath of %q: %w\", unsafePath, err)\n\t}\n\n\t// Re-open the path to match the O_DIRECTORY reopen loop later (so that we\n\t// always return a non-O_PATH handle). We also check that we actually got a\n\t// directory.\n\tif reopenDir, err := procfs.ReopenFd(currentDir, unix.O_DIRECTORY|unix.O_CLOEXEC); errors.Is(err, unix.ENOTDIR) {\n\t\treturn nil, fmt.Errorf(\"cannot create subdirectories in %q: %w\", currentDir.Name(), unix.ENOTDIR)\n\t} else if err != nil {\n\t\treturn nil, fmt.Errorf(\"re-opening handle to %q: %w\", currentDir.Name(), err)\n\t} else { //nolint:revive // indent-error-flow lint doesn't make sense here\n\t\t_ = currentDir.Close()\n\t\tcurrentDir = reopenDir\n\t}\n\n\tremainingParts := strings.Split(remainingPath, string(filepath.Separator))\n\tif gocompat.SlicesContains(remainingParts, \"..\") {\n\t\t// The path contained \"..\" components after the end of the \"real\"\n\t\t// components. We could try to safely resolve \"..\" here but that would\n\t\t// add a bunch of extra logic for something that it's not clear even\n\t\t// needs to be supported. So just return an error.\n\t\t//\n\t\t// If we do filepath.Clean(remainingPath) then we end up with the\n\t\t// problem that \"..\" can erase a trailing dangling symlink and produce\n\t\t// a path that doesn't quite match what the user asked for.\n\t\treturn nil, fmt.Errorf(\"%w: yet-to-be-created path %q contains '..' components\", unix.ENOENT, remainingPath)\n\t}\n\n\t// Create the remaining components.\n\tfor _, part := range remainingParts {\n\t\tswitch part {\n\t\tcase \"\", \".\":\n\t\t\t// Skip over no-op paths.\n\t\t\tcontinue\n\t\t}\n\n\t\t// NOTE: mkdir(2) will not follow trailing symlinks, so we can safely\n\t\t// create the final component without worrying about symlink-exchange\n\t\t// attacks.\n\t\t//\n\t\t// If we get -EEXIST, it's possible that another program created the\n\t\t// directory at the same time as us. In that case, just continue on as\n\t\t// if we created it (if the created inode is not a directory, the\n\t\t// following open call will fail).\n\t\tif err := unix.Mkdirat(int(currentDir.Fd()), part, unixMode); err != nil && !errors.Is(err, unix.EEXIST) {\n\t\t\terr = &os.PathError{Op: \"mkdirat\", Path: currentDir.Name() + \"/\" + part, Err: err}\n\t\t\t// Make the error a bit nicer if the directory is dead.\n\t\t\tif deadErr := fd.IsDeadInode(currentDir); deadErr != nil {\n\t\t\t\t// TODO: Once we bump the minimum Go version to 1.20, we can use\n\t\t\t\t// multiple %w verbs for this wrapping. For now we need to use a\n\t\t\t\t// compatibility shim for older Go versions.\n\t\t\t\t// err = fmt.Errorf(\"%w (%w)\", err, deadErr)\n\t\t\t\terr = gocompat.WrapBaseError(err, deadErr)\n\t\t\t}\n\t\t\treturn nil, err\n\t\t}\n\n\t\t// Get a handle to the next component. O_DIRECTORY means we don't need\n\t\t// to use O_PATH.\n\t\tvar nextDir *os.File\n\t\tif linux.HasOpenat2() {\n\t\t\tnextDir, err = openat2(currentDir, part, &unix.OpenHow{\n\t\t\t\tFlags:   unix.O_NOFOLLOW | unix.O_DIRECTORY | unix.O_CLOEXEC,\n\t\t\t\tResolve: unix.RESOLVE_BENEATH | unix.RESOLVE_NO_SYMLINKS | unix.RESOLVE_NO_XDEV,\n\t\t\t})\n\t\t} else {\n\t\t\tnextDir, err = fd.Openat(currentDir, part, unix.O_NOFOLLOW|unix.O_DIRECTORY|unix.O_CLOEXEC, 0)\n\t\t}\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\t_ = currentDir.Close()\n\t\tcurrentDir = nextDir\n\n\t\t// It's possible that the directory we just opened was swapped by an\n\t\t// attacker. Unfortunately there isn't much we can do to protect\n\t\t// against this, and MkdirAll's behaviour is that we will reuse\n\t\t// existing directories anyway so the need to protect against this is\n\t\t// incredibly limited (and arguably doesn't even deserve mention here).\n\t\t//\n\t\t// Ideally we might want to check that the owner and mode match what we\n\t\t// would've created -- unfortunately, it is non-trivial to verify that\n\t\t// the owner and mode of the created directory match. While plain Unix\n\t\t// DAC rules seem simple enough to emulate, there are a bunch of other\n\t\t// factors that can change the mode or owner of created directories\n\t\t// (default POSIX ACLs, mount options like uid=1,gid=2,umask=0 on\n\t\t// filesystems like vfat, etc etc). We used to try to verify this but\n\t\t// it just lead to a series of spurious errors.\n\t\t//\n\t\t// We could also check that the directory is non-empty, but\n\t\t// unfortunately some pseduofilesystems (like cgroupfs) create\n\t\t// non-empty directories, which would result in different spurious\n\t\t// errors.\n\t}\n\treturn currentDir, nil\n}\n"
  },
  {
    "path": "vendor/github.com/cyphar/filepath-securejoin/pathrs-lite/internal/gopathrs/open_linux.go",
    "content": "// SPDX-License-Identifier: MPL-2.0\n\n//go:build linux\n\n// Copyright (C) 2024-2025 Aleksa Sarai <cyphar@cyphar.com>\n// Copyright (C) 2024-2025 SUSE LLC\n//\n// This Source Code Form is subject to the terms of the Mozilla Public\n// License, v. 2.0. If a copy of the MPL was not distributed with this\n// file, You can obtain one at https://mozilla.org/MPL/2.0/.\n\npackage gopathrs\n\nimport (\n\t\"os\"\n)\n\n// OpenatInRoot is equivalent to [OpenInRoot], except that the root is provided\n// using an *[os.File] handle, to ensure that the correct root directory is used.\nfunc OpenatInRoot(root *os.File, unsafePath string) (*os.File, error) {\n\thandle, err := completeLookupInRoot(root, unsafePath)\n\tif err != nil {\n\t\treturn nil, &os.PathError{Op: \"securejoin.OpenInRoot\", Path: unsafePath, Err: err}\n\t}\n\treturn handle, nil\n}\n"
  },
  {
    "path": "vendor/github.com/cyphar/filepath-securejoin/pathrs-lite/internal/gopathrs/openat2_linux.go",
    "content": "// SPDX-License-Identifier: MPL-2.0\n\n//go:build linux\n\n// Copyright (C) 2024-2025 Aleksa Sarai <cyphar@cyphar.com>\n// Copyright (C) 2024-2025 SUSE LLC\n//\n// This Source Code Form is subject to the terms of the Mozilla Public\n// License, v. 2.0. If a copy of the MPL was not distributed with this\n// file, You can obtain one at https://mozilla.org/MPL/2.0/.\n\npackage gopathrs\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"golang.org/x/sys/unix\"\n\n\t\"github.com/cyphar/filepath-securejoin/pathrs-lite/internal/fd\"\n\t\"github.com/cyphar/filepath-securejoin/pathrs-lite/procfs\"\n)\n\nfunc openat2(dir fd.Fd, path string, how *unix.OpenHow) (*os.File, error) {\n\tfile, err := fd.Openat2(dir, path, how)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\t// If we are using RESOLVE_IN_ROOT, the name we generated may be wrong.\n\tif how.Resolve&unix.RESOLVE_IN_ROOT == unix.RESOLVE_IN_ROOT {\n\t\tif actualPath, err := procfs.ProcSelfFdReadlink(file); err == nil {\n\t\t\t// TODO: Ideally we would not need to dup the fd, but you cannot\n\t\t\t//       easily just swap an *os.File with one from the same fd\n\t\t\t//       (the GC will close the old one, and you cannot clear the\n\t\t\t//       finaliser easily because it is associated with an internal\n\t\t\t//       field of *os.File not *os.File itself).\n\t\t\tnewFile, err := fd.DupWithName(file, actualPath)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\t_ = file.Close()\n\t\t\tfile = newFile\n\t\t}\n\t}\n\treturn file, nil\n}\n\nfunc lookupOpenat2(root fd.Fd, unsafePath string, partial bool) (*os.File, string, error) {\n\tif !partial {\n\t\tfile, err := openat2(root, unsafePath, &unix.OpenHow{\n\t\t\tFlags:   unix.O_PATH | unix.O_CLOEXEC,\n\t\t\tResolve: unix.RESOLVE_IN_ROOT | unix.RESOLVE_NO_MAGICLINKS,\n\t\t})\n\t\treturn file, \"\", err\n\t}\n\treturn partialLookupOpenat2(root, unsafePath)\n}\n\n// partialLookupOpenat2 is an alternative implementation of\n// partialLookupInRoot, using openat2(RESOLVE_IN_ROOT) to more safely get a\n// handle to the deepest existing child of the requested path within the root.\nfunc partialLookupOpenat2(root fd.Fd, unsafePath string) (*os.File, string, error) {\n\t// TODO: Implement this as a git-bisect-like binary search.\n\n\tunsafePath = filepath.ToSlash(unsafePath) // noop\n\tendIdx := len(unsafePath)\n\tvar lastError error\n\tfor endIdx > 0 {\n\t\tsubpath := unsafePath[:endIdx]\n\n\t\thandle, err := openat2(root, subpath, &unix.OpenHow{\n\t\t\tFlags:   unix.O_PATH | unix.O_CLOEXEC,\n\t\t\tResolve: unix.RESOLVE_IN_ROOT | unix.RESOLVE_NO_MAGICLINKS,\n\t\t})\n\t\tif err == nil {\n\t\t\t// Jump over the slash if we have a non-\"\" remainingPath.\n\t\t\tif endIdx < len(unsafePath) {\n\t\t\t\tendIdx++\n\t\t\t}\n\t\t\t// We found a subpath!\n\t\t\treturn handle, unsafePath[endIdx:], lastError\n\t\t}\n\t\tif errors.Is(err, unix.ENOENT) || errors.Is(err, unix.ENOTDIR) {\n\t\t\t// That path doesn't exist, let's try the next directory up.\n\t\t\tendIdx = strings.LastIndexByte(subpath, '/')\n\t\t\tlastError = err\n\t\t\tcontinue\n\t\t}\n\t\treturn nil, \"\", fmt.Errorf(\"open subpath: %w\", err)\n\t}\n\t// If we couldn't open anything, the whole subpath is missing. Return a\n\t// copy of the root fd so that the caller doesn't close this one by\n\t// accident.\n\trootClone, err := fd.Dup(root)\n\tif err != nil {\n\t\treturn nil, \"\", err\n\t}\n\treturn rootClone, unsafePath, lastError\n}\n"
  },
  {
    "path": "vendor/github.com/cyphar/filepath-securejoin/pathrs-lite/internal/kernelversion/kernel_linux.go",
    "content": "// SPDX-License-Identifier: BSD-3-Clause\n\n// Copyright (C) 2022 The Go Authors. All rights reserved.\n// Copyright (C) 2025 SUSE LLC. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE.BSD file.\n\n// The parsing logic is very loosely based on the Go stdlib's\n// src/internal/syscall/unix/kernel_version_linux.go but with an API that looks\n// a bit like runc's libcontainer/system/kernelversion.\n//\n// TODO(cyphar): This API has been copied around to a lot of different projects\n// (Docker, containerd, runc, and now filepath-securejoin) -- maybe we should\n// put it in a separate project?\n\n// Package kernelversion provides a simple mechanism for checking whether the\n// running kernel is at least as new as some baseline kernel version. This is\n// often useful when checking for features that would be too complicated to\n// test support for (or in cases where we know that some kernel features in\n// backport-heavy kernels are broken and need to be avoided).\npackage kernelversion\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"golang.org/x/sys/unix\"\n\n\t\"github.com/cyphar/filepath-securejoin/pathrs-lite/internal/gocompat\"\n)\n\n// KernelVersion is a numeric representation of the key numerical elements of a\n// kernel version (for instance, \"4.1.2-default-1\" would be represented as\n// KernelVersion{4, 1, 2}).\ntype KernelVersion []uint64\n\nfunc (kver KernelVersion) String() string {\n\tvar str strings.Builder\n\tfor idx, elem := range kver {\n\t\tif idx != 0 {\n\t\t\t_, _ = str.WriteRune('.')\n\t\t}\n\t\t_, _ = str.WriteString(strconv.FormatUint(elem, 10))\n\t}\n\treturn str.String()\n}\n\nvar errInvalidKernelVersion = errors.New(\"invalid kernel version\")\n\n// parseKernelVersion parses a string and creates a KernelVersion based on it.\nfunc parseKernelVersion(kverStr string) (KernelVersion, error) {\n\tkver := make(KernelVersion, 1, 3)\n\tfor idx, ch := range kverStr {\n\t\tif '0' <= ch && ch <= '9' {\n\t\t\tv := &kver[len(kver)-1]\n\t\t\t*v = (*v * 10) + uint64(ch-'0')\n\t\t} else {\n\t\t\tif idx == 0 || kverStr[idx-1] < '0' || '9' < kverStr[idx-1] {\n\t\t\t\t// \".\" must be preceded by a digit while in version section\n\t\t\t\treturn nil, fmt.Errorf(\"%w %q: kernel version has dot(s) followed by non-digit in version section\", errInvalidKernelVersion, kverStr)\n\t\t\t}\n\t\t\tif ch != '.' {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tkver = append(kver, 0)\n\t\t}\n\t}\n\tif len(kver) < 2 {\n\t\treturn nil, fmt.Errorf(\"%w %q: kernel versions must contain at least two components\", errInvalidKernelVersion, kverStr)\n\t}\n\treturn kver, nil\n}\n\n// getKernelVersion gets the current kernel version.\nvar getKernelVersion = gocompat.SyncOnceValues(func() (KernelVersion, error) {\n\tvar uts unix.Utsname\n\tif err := unix.Uname(&uts); err != nil {\n\t\treturn nil, err\n\t}\n\t// Remove the \\x00 from the release.\n\trelease := uts.Release[:]\n\treturn parseKernelVersion(string(release[:bytes.IndexByte(release, 0)]))\n})\n\n// GreaterEqualThan returns true if the the host kernel version is greater than\n// or equal to the provided [KernelVersion]. When doing this comparison, any\n// non-numerical suffixes of the host kernel version are ignored.\n//\n// If the number of components provided is not equal to the number of numerical\n// components of the host kernel version, any missing components are treated as\n// 0. This means that GreaterEqualThan(KernelVersion{4}) will be treated the\n// same as GreaterEqualThan(KernelVersion{4, 0, 0, ..., 0, 0}), and that if the\n// host kernel version is \"4\" then GreaterEqualThan(KernelVersion{4, 1}) will\n// return false (because the host version will be treated as \"4.0\").\nfunc GreaterEqualThan(wantKver KernelVersion) (bool, error) {\n\thostKver, err := getKernelVersion()\n\tif err != nil {\n\t\treturn false, err\n\t}\n\n\t// Pad out the kernel version lengths to match one another.\n\tcmpLen := gocompat.Max2(len(hostKver), len(wantKver))\n\thostKver = append(hostKver, make(KernelVersion, cmpLen-len(hostKver))...)\n\twantKver = append(wantKver, make(KernelVersion, cmpLen-len(wantKver))...)\n\n\tfor i := 0; i < cmpLen; i++ {\n\t\tswitch gocompat.CmpCompare(hostKver[i], wantKver[i]) {\n\t\tcase -1:\n\t\t\t// host < want\n\t\t\treturn false, nil\n\t\tcase +1:\n\t\t\t// host > want\n\t\t\treturn true, nil\n\t\tcase 0:\n\t\t\tcontinue\n\t\t}\n\t}\n\t// equal version values\n\treturn true, nil\n}\n"
  },
  {
    "path": "vendor/github.com/cyphar/filepath-securejoin/pathrs-lite/internal/linux/doc.go",
    "content": "// SPDX-License-Identifier: MPL-2.0\n\n// Copyright (C) 2024-2025 Aleksa Sarai <cyphar@cyphar.com>\n// Copyright (C) 2024-2025 SUSE LLC\n//\n// This Source Code Form is subject to the terms of the Mozilla Public\n// License, v. 2.0. If a copy of the MPL was not distributed with this\n// file, You can obtain one at https://mozilla.org/MPL/2.0/.\n\n// Package linux returns information about what features are supported on the\n// running kernel.\npackage linux\n"
  },
  {
    "path": "vendor/github.com/cyphar/filepath-securejoin/pathrs-lite/internal/linux/mount_linux.go",
    "content": "// SPDX-License-Identifier: MPL-2.0\n\n//go:build linux\n\n// Copyright (C) 2024-2025 Aleksa Sarai <cyphar@cyphar.com>\n// Copyright (C) 2024-2025 SUSE LLC\n//\n// This Source Code Form is subject to the terms of the Mozilla Public\n// License, v. 2.0. If a copy of the MPL was not distributed with this\n// file, You can obtain one at https://mozilla.org/MPL/2.0/.\n\npackage linux\n\nimport (\n\t\"golang.org/x/sys/unix\"\n\n\t\"github.com/cyphar/filepath-securejoin/pathrs-lite/internal/gocompat\"\n\t\"github.com/cyphar/filepath-securejoin/pathrs-lite/internal/kernelversion\"\n)\n\n// HasNewMountAPI returns whether the new fsopen(2) mount API is supported on\n// the running kernel.\nvar HasNewMountAPI = gocompat.SyncOnceValue(func() bool {\n\t// All of the pieces of the new mount API we use (fsopen, fsconfig,\n\t// fsmount, open_tree) were added together in Linux 5.2[1,2], so we can\n\t// just check for one of the syscalls and the others should also be\n\t// available.\n\t//\n\t// Just try to use open_tree(2) to open a file without OPEN_TREE_CLONE.\n\t// This is equivalent to openat(2), but tells us if open_tree is\n\t// available (and thus all of the other basic new mount API syscalls).\n\t// open_tree(2) is most light-weight syscall to test here.\n\t//\n\t// [1]: merge commit 400913252d09\n\t// [2]: <https://lore.kernel.org/lkml/153754740781.17872.7869536526927736855.stgit@warthog.procyon.org.uk/>\n\tfd, err := unix.OpenTree(-int(unix.EBADF), \"/\", unix.OPEN_TREE_CLOEXEC)\n\tif err != nil {\n\t\treturn false\n\t}\n\t_ = unix.Close(fd)\n\n\t// RHEL 8 has a backport of fsopen(2) that appears to have some very\n\t// difficult to debug performance pathology. As such, it seems prudent to\n\t// simply reject pre-5.2 kernels.\n\tisNotBackport, _ := kernelversion.GreaterEqualThan(kernelversion.KernelVersion{5, 2})\n\treturn isNotBackport\n})\n"
  },
  {
    "path": "vendor/github.com/cyphar/filepath-securejoin/pathrs-lite/internal/linux/openat2_linux.go",
    "content": "// SPDX-License-Identifier: MPL-2.0\n\n//go:build linux\n\n// Copyright (C) 2024-2025 Aleksa Sarai <cyphar@cyphar.com>\n// Copyright (C) 2024-2025 SUSE LLC\n//\n// This Source Code Form is subject to the terms of the Mozilla Public\n// License, v. 2.0. If a copy of the MPL was not distributed with this\n// file, You can obtain one at https://mozilla.org/MPL/2.0/.\n\npackage linux\n\nimport (\n\t\"golang.org/x/sys/unix\"\n\n\t\"github.com/cyphar/filepath-securejoin/pathrs-lite/internal/gocompat\"\n)\n\n// sawOpenat2Error stores whether we have seen an error from HasOpenat2. This\n// is a one-way toggle, so as soon as we see an error we \"lock\" into that mode.\n// We cannot use sync.OnceValue to store the success/fail state once because it\n// is possible for the program we are running in to apply a seccomp-bpf filter\n// and thus disable openat2 during execution.\nvar sawOpenat2Error gocompat.Bool\n\n// HasOpenat2 returns whether openat2(2) is supported on the running kernel.\nvar HasOpenat2 = func() bool {\n\tif sawOpenat2Error.Load() {\n\t\treturn false\n\t}\n\n\tfd, err := unix.Openat2(unix.AT_FDCWD, \".\", &unix.OpenHow{\n\t\tFlags:   unix.O_PATH | unix.O_CLOEXEC,\n\t\tResolve: unix.RESOLVE_NO_SYMLINKS | unix.RESOLVE_IN_ROOT,\n\t})\n\tif err != nil {\n\t\tsawOpenat2Error.Store(true) // doesn't matter if we race here\n\t\treturn false\n\t}\n\t_ = unix.Close(fd)\n\treturn true\n}\n"
  },
  {
    "path": "vendor/github.com/cyphar/filepath-securejoin/pathrs-lite/internal/procfs/procfs_linux.go",
    "content": "// SPDX-License-Identifier: MPL-2.0\n\n//go:build linux\n\n// Copyright (C) 2024-2025 Aleksa Sarai <cyphar@cyphar.com>\n// Copyright (C) 2024-2025 SUSE LLC\n//\n// This Source Code Form is subject to the terms of the Mozilla Public\n// License, v. 2.0. If a copy of the MPL was not distributed with this\n// file, You can obtain one at https://mozilla.org/MPL/2.0/.\n\n// Package procfs provides a safe API for operating on /proc on Linux. Note\n// that this is the *internal* procfs API, mainy needed due to Go's\n// restrictions on cyclic dependencies and its incredibly minimal visibility\n// system without making a separate internal/ package.\npackage procfs\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"runtime\"\n\t\"strconv\"\n\n\t\"golang.org/x/sys/unix\"\n\n\t\"github.com/cyphar/filepath-securejoin/pathrs-lite/internal\"\n\t\"github.com/cyphar/filepath-securejoin/pathrs-lite/internal/assert\"\n\t\"github.com/cyphar/filepath-securejoin/pathrs-lite/internal/fd\"\n\t\"github.com/cyphar/filepath-securejoin/pathrs-lite/internal/gocompat\"\n\t\"github.com/cyphar/filepath-securejoin/pathrs-lite/internal/linux\"\n)\n\n// The kernel guarantees that the root inode of a procfs mount has an\n// f_type of PROC_SUPER_MAGIC and st_ino of PROC_ROOT_INO.\nconst (\n\tprocSuperMagic = 0x9fa0 // PROC_SUPER_MAGIC\n\tprocRootIno    = 1      // PROC_ROOT_INO\n)\n\n// verifyProcHandle checks that the handle is from a procfs filesystem.\n// Contrast this to [verifyProcRoot], which also verifies that the handle is\n// the root of a procfs mount.\nfunc verifyProcHandle(procHandle fd.Fd) error {\n\tif statfs, err := fd.Fstatfs(procHandle); err != nil {\n\t\treturn err\n\t} else if statfs.Type != procSuperMagic {\n\t\treturn fmt.Errorf(\"%w: incorrect procfs root filesystem type 0x%x\", errUnsafeProcfs, statfs.Type)\n\t}\n\treturn nil\n}\n\n// verifyProcRoot verifies that the handle is the root of a procfs filesystem.\n// Contrast this to [verifyProcHandle], which only verifies if the handle is\n// some file on procfs (regardless of what file it is).\nfunc verifyProcRoot(procRoot fd.Fd) error {\n\tif err := verifyProcHandle(procRoot); err != nil {\n\t\treturn err\n\t}\n\tif stat, err := fd.Fstat(procRoot); err != nil {\n\t\treturn err\n\t} else if stat.Ino != procRootIno {\n\t\treturn fmt.Errorf(\"%w: incorrect procfs root inode number %d\", errUnsafeProcfs, stat.Ino)\n\t}\n\treturn nil\n}\n\ntype procfsFeatures struct {\n\t// hasSubsetPid was added in Linux 5.8, along with hidepid=ptraceable (and\n\t// string-based hidepid= values). Before this patchset, it was not really\n\t// safe to try to modify procfs superblock flags because the superblock was\n\t// shared -- so if this feature is not available, **you should not set any\n\t// superblock flags**.\n\t//\n\t// 6814ef2d992a (\"proc: add option to mount only a pids subset\")\n\t// fa10fed30f25 (\"proc: allow to mount many instances of proc in one pid namespace\")\n\t// 24a71ce5c47f (\"proc: instantiate only pids that we can ptrace on 'hidepid=4' mount option\")\n\t// 1c6c4d112e81 (\"proc: use human-readable values for hidepid\")\n\t// 9ff7258575d5 (\"Merge branch 'proc-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace\")\n\thasSubsetPid bool\n}\n\nvar getProcfsFeatures = gocompat.SyncOnceValue(func() procfsFeatures {\n\tif !linux.HasNewMountAPI() {\n\t\treturn procfsFeatures{}\n\t}\n\tprocfsCtx, err := fd.Fsopen(\"proc\", unix.FSOPEN_CLOEXEC)\n\tif err != nil {\n\t\treturn procfsFeatures{}\n\t}\n\tdefer procfsCtx.Close() //nolint:errcheck // close failures aren't critical here\n\n\treturn procfsFeatures{\n\t\thasSubsetPid: unix.FsconfigSetString(int(procfsCtx.Fd()), \"subset\", \"pid\") == nil,\n\t}\n})\n\nfunc newPrivateProcMount(subset bool) (_ *Handle, Err error) {\n\tprocfsCtx, err := fd.Fsopen(\"proc\", unix.FSOPEN_CLOEXEC)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer procfsCtx.Close() //nolint:errcheck // close failures aren't critical here\n\n\tif subset && getProcfsFeatures().hasSubsetPid {\n\t\t// Try to configure hidepid=ptraceable,subset=pid if possible, but\n\t\t// ignore errors.\n\t\t_ = unix.FsconfigSetString(int(procfsCtx.Fd()), \"hidepid\", \"ptraceable\")\n\t\t_ = unix.FsconfigSetString(int(procfsCtx.Fd()), \"subset\", \"pid\")\n\t}\n\n\t// Get an actual handle.\n\tif err := unix.FsconfigCreate(int(procfsCtx.Fd())); err != nil {\n\t\treturn nil, os.NewSyscallError(\"fsconfig create procfs\", err)\n\t}\n\t// TODO: Output any information from the fscontext log to debug logs.\n\tprocRoot, err := fd.Fsmount(procfsCtx, unix.FSMOUNT_CLOEXEC, unix.MS_NODEV|unix.MS_NOEXEC|unix.MS_NOSUID)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer func() {\n\t\tif Err != nil {\n\t\t\t_ = procRoot.Close()\n\t\t}\n\t}()\n\treturn newHandle(procRoot)\n}\n\nfunc clonePrivateProcMount() (_ *Handle, Err error) {\n\t// Try to make a clone without using AT_RECURSIVE if we can. If this works,\n\t// we can be sure there are no over-mounts and so if the root is valid then\n\t// we're golden. Otherwise, we have to deal with over-mounts.\n\tprocRoot, err := fd.OpenTree(nil, \"/proc\", unix.OPEN_TREE_CLONE)\n\tif err != nil || hookForcePrivateProcRootOpenTreeAtRecursive(procRoot) {\n\t\tprocRoot, err = fd.OpenTree(nil, \"/proc\", unix.OPEN_TREE_CLONE|unix.AT_RECURSIVE)\n\t}\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"creating a detached procfs clone: %w\", err)\n\t}\n\tdefer func() {\n\t\tif Err != nil {\n\t\t\t_ = procRoot.Close()\n\t\t}\n\t}()\n\treturn newHandle(procRoot)\n}\n\nfunc privateProcRoot(subset bool) (*Handle, error) {\n\tif !linux.HasNewMountAPI() || hookForceGetProcRootUnsafe() {\n\t\treturn nil, fmt.Errorf(\"new mount api: %w\", unix.ENOTSUP)\n\t}\n\t// Try to create a new procfs mount from scratch if we can. This ensures we\n\t// can get a procfs mount even if /proc is fake (for whatever reason).\n\tprocRoot, err := newPrivateProcMount(subset)\n\tif err != nil || hookForcePrivateProcRootOpenTree(procRoot) {\n\t\t// Try to clone /proc then...\n\t\tprocRoot, err = clonePrivateProcMount()\n\t}\n\treturn procRoot, err\n}\n\nfunc unsafeHostProcRoot() (_ *Handle, Err error) {\n\tprocRoot, err := os.OpenFile(\"/proc\", unix.O_PATH|unix.O_NOFOLLOW|unix.O_DIRECTORY|unix.O_CLOEXEC, 0)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer func() {\n\t\tif Err != nil {\n\t\t\t_ = procRoot.Close()\n\t\t}\n\t}()\n\treturn newHandle(procRoot)\n}\n\n// Handle is a wrapper around an *os.File handle to \"/proc\", which can be used\n// to do further procfs-related operations in a safe way.\ntype Handle struct {\n\tInner fd.Fd\n\t// Does this handle have subset=pid set?\n\tisSubset bool\n}\n\nfunc newHandle(procRoot fd.Fd) (*Handle, error) {\n\tif err := verifyProcRoot(procRoot); err != nil {\n\t\t// This is only used in methods that\n\t\t_ = procRoot.Close()\n\t\treturn nil, err\n\t}\n\tproc := &Handle{Inner: procRoot}\n\t// With subset=pid we can be sure that /proc/uptime will not exist.\n\tif err := fd.Faccessat(proc.Inner, \"uptime\", unix.F_OK, unix.AT_SYMLINK_NOFOLLOW); err != nil {\n\t\tproc.isSubset = errors.Is(err, os.ErrNotExist)\n\t}\n\treturn proc, nil\n}\n\n// Close closes the underlying file for the Handle.\nfunc (proc *Handle) Close() error { return proc.Inner.Close() }\n\nvar getCachedProcRoot = gocompat.SyncOnceValue(func() *Handle {\n\tprocRoot, err := getProcRoot(true)\n\tif err != nil {\n\t\treturn nil // just don't cache if we see an error\n\t}\n\tif !procRoot.isSubset {\n\t\treturn nil // we only cache verified subset=pid handles\n\t}\n\n\t// Disarm (*Handle).Close() to stop someone from accidentally closing\n\t// the global handle.\n\tprocRoot.Inner = fd.NopCloser(procRoot.Inner)\n\treturn procRoot\n})\n\n// OpenProcRoot tries to open a \"safer\" handle to \"/proc\".\nfunc OpenProcRoot() (*Handle, error) {\n\tif proc := getCachedProcRoot(); proc != nil {\n\t\treturn proc, nil\n\t}\n\treturn getProcRoot(true)\n}\n\n// OpenUnsafeProcRoot opens a handle to \"/proc\" without any overmounts or\n// masked paths (but also without \"subset=pid\").\nfunc OpenUnsafeProcRoot() (*Handle, error) { return getProcRoot(false) }\n\nfunc getProcRoot(subset bool) (*Handle, error) {\n\tproc, err := privateProcRoot(subset)\n\tif err != nil {\n\t\t// Fall back to using a /proc handle if making a private mount failed.\n\t\t// If we have openat2, at least we can avoid some kinds of over-mount\n\t\t// attacks, but without openat2 there's not much we can do.\n\t\tproc, err = unsafeHostProcRoot()\n\t}\n\treturn proc, err\n}\n\nvar hasProcThreadSelf = gocompat.SyncOnceValue(func() bool {\n\treturn unix.Access(\"/proc/thread-self/\", unix.F_OK) == nil\n})\n\nvar errUnsafeProcfs = errors.New(\"unsafe procfs detected\")\n\n// lookup is a very minimal wrapper around [procfsLookupInRoot] which is\n// intended to be called from the external API.\nfunc (proc *Handle) lookup(subpath string) (*os.File, error) {\n\thandle, err := procfsLookupInRoot(proc.Inner, subpath)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn handle, nil\n}\n\n// procfsBase is an enum indicating the prefix of a subpath in operations\n// involving [Handle]s.\ntype procfsBase string\n\nconst (\n\t// ProcRoot refers to the root of the procfs (i.e., \"/proc/<subpath>\").\n\tProcRoot procfsBase = \"/proc\"\n\t// ProcSelf refers to the current process' subdirectory (i.e.,\n\t// \"/proc/self/<subpath>\").\n\tProcSelf procfsBase = \"/proc/self\"\n\t// ProcThreadSelf refers to the current thread's subdirectory (i.e.,\n\t// \"/proc/thread-self/<subpath>\"). In multi-threaded programs (i.e., all Go\n\t// programs) where one thread has a different CLONE_FS, it is possible for\n\t// \"/proc/self\" to point the wrong thread and so \"/proc/thread-self\" may be\n\t// necessary. Note that on pre-3.17 kernels, \"/proc/thread-self\" doesn't\n\t// exist and so a fallback will be used in that case.\n\tProcThreadSelf procfsBase = \"/proc/thread-self\"\n\t// TODO: Switch to an interface setup so we can have a more type-safe\n\t// version of ProcPid and remove the need to worry about invalid string\n\t// values.\n)\n\n// prefix returns a prefix that can be used with the given [Handle].\nfunc (base procfsBase) prefix(proc *Handle) (string, error) {\n\tswitch base {\n\tcase ProcRoot:\n\t\treturn \".\", nil\n\tcase ProcSelf:\n\t\treturn \"self\", nil\n\tcase ProcThreadSelf:\n\t\tthreadSelf := \"thread-self\"\n\t\tif !hasProcThreadSelf() || hookForceProcSelfTask() {\n\t\t\t// Pre-3.17 kernels don't have /proc/thread-self, so do it\n\t\t\t// manually.\n\t\t\tthreadSelf = \"self/task/\" + strconv.Itoa(unix.Gettid())\n\t\t\tif err := fd.Faccessat(proc.Inner, threadSelf, unix.F_OK, unix.AT_SYMLINK_NOFOLLOW); err != nil || hookForceProcSelf() {\n\t\t\t\t// In this case, we running in a pid namespace that doesn't\n\t\t\t\t// match the /proc mount we have. This can happen inside runc.\n\t\t\t\t//\n\t\t\t\t// Unfortunately, there is no nice way to get the correct TID\n\t\t\t\t// to use here because of the age of the kernel, so we have to\n\t\t\t\t// just use /proc/self and hope that it works.\n\t\t\t\tthreadSelf = \"self\"\n\t\t\t}\n\t\t}\n\t\treturn threadSelf, nil\n\t}\n\treturn \"\", fmt.Errorf(\"invalid procfs base %q\", base)\n}\n\n// ProcThreadSelfCloser is a callback that needs to be called when you are done\n// operating on an [os.File] fetched using [ProcThreadSelf].\n//\n// [os.File]: https://pkg.go.dev/os#File\ntype ProcThreadSelfCloser func()\n\n// open is the core lookup operation for [Handle]. It returns a handle to\n// \"/proc/<base>/<subpath>\". If the returned [ProcThreadSelfCloser] is non-nil,\n// you should call it after you are done interacting with the returned handle.\n//\n// In general you should use prefer to use the other helpers, as they remove\n// the need to interact with [procfsBase] and do not return a nil\n// [ProcThreadSelfCloser] for [procfsBase] values other than [ProcThreadSelf]\n// where it is necessary.\nfunc (proc *Handle) open(base procfsBase, subpath string) (_ *os.File, closer ProcThreadSelfCloser, Err error) {\n\tprefix, err := base.prefix(proc)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tsubpath = prefix + \"/\" + subpath\n\n\tswitch base {\n\tcase ProcRoot:\n\t\tfile, err := proc.lookup(subpath)\n\t\tif errors.Is(err, os.ErrNotExist) {\n\t\t\t// The Handle handle in use might be a subset=pid one, which will\n\t\t\t// result in spurious errors. In this case, just open a temporary\n\t\t\t// unmasked procfs handle for this operation.\n\t\t\tproc, err2 := OpenUnsafeProcRoot() // !subset=pid\n\t\t\tif err2 != nil {\n\t\t\t\treturn nil, nil, err\n\t\t\t}\n\t\t\tdefer proc.Close() //nolint:errcheck // close failures aren't critical here\n\n\t\t\tfile, err = proc.lookup(subpath)\n\t\t}\n\t\treturn file, nil, err\n\n\tcase ProcSelf:\n\t\tfile, err := proc.lookup(subpath)\n\t\treturn file, nil, err\n\n\tcase ProcThreadSelf:\n\t\t// We need to lock our thread until the caller is done with the handle\n\t\t// because between getting the handle and using it we could get\n\t\t// interrupted by the Go runtime and hit the case where the underlying\n\t\t// thread is swapped out and the original thread is killed, resulting\n\t\t// in pull-your-hair-out-hard-to-debug issues in the caller.\n\t\truntime.LockOSThread()\n\t\tdefer func() {\n\t\t\tif Err != nil {\n\t\t\t\truntime.UnlockOSThread()\n\t\t\t\tcloser = nil\n\t\t\t}\n\t\t}()\n\n\t\tfile, err := proc.lookup(subpath)\n\t\treturn file, runtime.UnlockOSThread, err\n\t}\n\t// should never be reached\n\treturn nil, nil, fmt.Errorf(\"[internal error] invalid procfs base %q\", base)\n}\n\n// OpenThreadSelf returns a handle to \"/proc/thread-self/<subpath>\" (or an\n// equivalent handle on older kernels where \"/proc/thread-self\" doesn't exist).\n// Once finished with the handle, you must call the returned closer function\n// (runtime.UnlockOSThread). You must not pass the returned *os.File to other\n// Go threads or use the handle after calling the closer.\nfunc (proc *Handle) OpenThreadSelf(subpath string) (_ *os.File, _ ProcThreadSelfCloser, Err error) {\n\treturn proc.open(ProcThreadSelf, subpath)\n}\n\n// OpenSelf returns a handle to /proc/self/<subpath>.\nfunc (proc *Handle) OpenSelf(subpath string) (*os.File, error) {\n\tfile, closer, err := proc.open(ProcSelf, subpath)\n\tassert.Assert(closer == nil, \"closer for ProcSelf must be nil\")\n\treturn file, err\n}\n\n// OpenRoot returns a handle to /proc/<subpath>.\nfunc (proc *Handle) OpenRoot(subpath string) (*os.File, error) {\n\tfile, closer, err := proc.open(ProcRoot, subpath)\n\tassert.Assert(closer == nil, \"closer for ProcRoot must be nil\")\n\treturn file, err\n}\n\n// OpenPid returns a handle to /proc/$pid/<subpath> (pid can be a pid or tid).\n// This is mainly intended for usage when operating on other processes.\nfunc (proc *Handle) OpenPid(pid int, subpath string) (*os.File, error) {\n\treturn proc.OpenRoot(strconv.Itoa(pid) + \"/\" + subpath)\n}\n\n// checkSubpathOvermount checks if the dirfd and path combination is on the\n// same mount as the given root.\nfunc checkSubpathOvermount(root, dir fd.Fd, path string) error {\n\t// Get the mntID of our procfs handle.\n\texpectedMountID, err := fd.GetMountID(root, \"\")\n\tif err != nil {\n\t\treturn fmt.Errorf(\"get root mount id: %w\", err)\n\t}\n\t// Get the mntID of the target magic-link.\n\tgotMountID, err := fd.GetMountID(dir, path)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"get subpath mount id: %w\", err)\n\t}\n\t// As long as the directory mount is alive, even with wrapping mount IDs,\n\t// we would expect to see a different mount ID here. (Of course, if we're\n\t// using unsafeHostProcRoot() then an attaker could change this after we\n\t// did this check.)\n\tif expectedMountID != gotMountID {\n\t\treturn fmt.Errorf(\"%w: subpath %s/%s has an overmount obscuring the real path (mount ids do not match %d != %d)\",\n\t\t\terrUnsafeProcfs, dir.Name(), path, expectedMountID, gotMountID)\n\t}\n\treturn nil\n}\n\n// Readlink performs a readlink operation on \"/proc/<base>/<subpath>\" in a way\n// that should be free from race attacks. This is most commonly used to get the\n// real path of a file by looking at \"/proc/self/fd/$n\", with the same safety\n// protections as [Open] (as well as some additional checks against\n// overmounts).\nfunc (proc *Handle) Readlink(base procfsBase, subpath string) (string, error) {\n\tlink, closer, err := proc.open(base, subpath)\n\tif closer != nil {\n\t\tdefer closer()\n\t}\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"get safe %s/%s handle: %w\", base, subpath, err)\n\t}\n\tdefer link.Close() //nolint:errcheck // close failures aren't critical here\n\n\t// Try to detect if there is a mount on top of the magic-link. This should\n\t// be safe in general (a mount on top of the path afterwards would not\n\t// affect the handle itself) and will definitely be safe if we are using\n\t// privateProcRoot() (at least since Linux 5.12[1], when anonymous mount\n\t// namespaces were completely isolated from external mounts including mount\n\t// propagation events).\n\t//\n\t// [1]: Linux commit ee2e3f50629f (\"mount: fix mounting of detached mounts\n\t// onto targets that reside on shared mounts\").\n\tif err := checkSubpathOvermount(proc.Inner, link, \"\"); err != nil {\n\t\treturn \"\", fmt.Errorf(\"check safety of %s/%s magiclink: %w\", base, subpath, err)\n\t}\n\n\t// readlinkat implies AT_EMPTY_PATH since Linux 2.6.39. See Linux commit\n\t// 65cfc6722361 (\"readlinkat(), fchownat() and fstatat() with empty\n\t// relative pathnames\").\n\treturn fd.Readlinkat(link, \"\")\n}\n\n// ProcSelfFdReadlink gets the real path of the given file by looking at\n// readlink(/proc/thread-self/fd/$n).\n//\n// This is just a wrapper around [Handle.Readlink].\nfunc ProcSelfFdReadlink(fd fd.Fd) (string, error) {\n\tprocRoot, err := OpenProcRoot() // subset=pid\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tdefer procRoot.Close() //nolint:errcheck // close failures aren't critical here\n\n\tfdPath := \"fd/\" + strconv.Itoa(int(fd.Fd()))\n\treturn procRoot.Readlink(ProcThreadSelf, fdPath)\n}\n\n// CheckProcSelfFdPath returns whether the given file handle matches the\n// expected path. (This is inherently racy.)\nfunc CheckProcSelfFdPath(path string, file fd.Fd) error {\n\tif err := fd.IsDeadInode(file); err != nil {\n\t\treturn err\n\t}\n\tactualPath, err := ProcSelfFdReadlink(file)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"get path of handle: %w\", err)\n\t}\n\tif actualPath != path {\n\t\treturn fmt.Errorf(\"%w: handle path %q doesn't match expected path %q\", internal.ErrPossibleBreakout, actualPath, path)\n\t}\n\treturn nil\n}\n\n// ReopenFd takes an existing file descriptor and \"re-opens\" it through\n// /proc/thread-self/fd/<fd>. This allows for O_PATH file descriptors to be\n// upgraded to regular file descriptors, as well as changing the open mode of a\n// regular file descriptor. Some filesystems have unique handling of open(2)\n// which make this incredibly useful (such as /dev/ptmx).\nfunc ReopenFd(handle fd.Fd, flags int) (*os.File, error) {\n\tprocRoot, err := OpenProcRoot() // subset=pid\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer procRoot.Close() //nolint:errcheck // close failures aren't critical here\n\n\t// We can't operate on /proc/thread-self/fd/$n directly when doing a\n\t// re-open, so we need to open /proc/thread-self/fd and then open a single\n\t// final component.\n\tprocFdDir, closer, err := procRoot.OpenThreadSelf(\"fd/\")\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"get safe /proc/thread-self/fd handle: %w\", err)\n\t}\n\tdefer procFdDir.Close() //nolint:errcheck // close failures aren't critical here\n\tdefer closer()\n\n\t// Try to detect if there is a mount on top of the magic-link we are about\n\t// to open. If we are using unsafeHostProcRoot(), this could change after\n\t// we check it (and there's nothing we can do about that) but for\n\t// privateProcRoot() this should be guaranteed to be safe (at least since\n\t// Linux 5.12[1], when anonymous mount namespaces were completely isolated\n\t// from external mounts including mount propagation events).\n\t//\n\t// [1]: Linux commit ee2e3f50629f (\"mount: fix mounting of detached mounts\n\t// onto targets that reside on shared mounts\").\n\tfdStr := strconv.Itoa(int(handle.Fd()))\n\tif err := checkSubpathOvermount(procRoot.Inner, procFdDir, fdStr); err != nil {\n\t\treturn nil, fmt.Errorf(\"check safety of /proc/thread-self/fd/%s magiclink: %w\", fdStr, err)\n\t}\n\n\tflags |= unix.O_CLOEXEC\n\t// Rather than just wrapping fd.Openat, open-code it so we can copy\n\t// handle.Name().\n\treopenFd, err := unix.Openat(int(procFdDir.Fd()), fdStr, flags, 0)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"reopen fd %d: %w\", handle.Fd(), err)\n\t}\n\treturn os.NewFile(uintptr(reopenFd), handle.Name()), nil\n}\n\n// Test hooks used in the procfs tests to verify that the fallback logic works.\n// See testing_mocks_linux_test.go and procfs_linux_test.go for more details.\nvar (\n\thookForcePrivateProcRootOpenTree            = hookDummyFile\n\thookForcePrivateProcRootOpenTreeAtRecursive = hookDummyFile\n\thookForceGetProcRootUnsafe                  = hookDummy\n\n\thookForceProcSelfTask = hookDummy\n\thookForceProcSelf     = hookDummy\n)\n\nfunc hookDummy() bool                { return false }\nfunc hookDummyFile(_ io.Closer) bool { return false }\n"
  },
  {
    "path": "vendor/github.com/cyphar/filepath-securejoin/pathrs-lite/internal/procfs/procfs_lookup_linux.go",
    "content": "// SPDX-License-Identifier: MPL-2.0\n\n//go:build linux\n\n// Copyright (C) 2024-2025 Aleksa Sarai <cyphar@cyphar.com>\n// Copyright (C) 2024-2025 SUSE LLC\n//\n// This Source Code Form is subject to the terms of the Mozilla Public\n// License, v. 2.0. If a copy of the MPL was not distributed with this\n// file, You can obtain one at https://mozilla.org/MPL/2.0/.\n\n// This code is adapted to be a minimal version of the libpathrs proc resolver\n// <https://github.com/opensuse/libpathrs/blob/v0.1.3/src/resolvers/procfs.rs>.\n// As we only need O_PATH|O_NOFOLLOW support, this is not too much to port.\n\npackage procfs\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"path\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"golang.org/x/sys/unix\"\n\n\t\"github.com/cyphar/filepath-securejoin/internal/consts\"\n\t\"github.com/cyphar/filepath-securejoin/pathrs-lite/internal\"\n\t\"github.com/cyphar/filepath-securejoin/pathrs-lite/internal/fd\"\n\t\"github.com/cyphar/filepath-securejoin/pathrs-lite/internal/gocompat\"\n\t\"github.com/cyphar/filepath-securejoin/pathrs-lite/internal/linux\"\n)\n\n// procfsLookupInRoot is a stripped down version of completeLookupInRoot,\n// entirely designed to support the very small set of features necessary to\n// make procfs handling work. Unlike completeLookupInRoot, we always have\n// O_PATH|O_NOFOLLOW behaviour for trailing symlinks.\n//\n// The main restrictions are:\n//\n//   - \"..\" is not supported (as it requires either os.Root-style replays,\n//     which is more bug-prone; or procfs verification, which is not possible\n//     due to re-entrancy issues).\n//   - Absolute symlinks for the same reason (and all absolute symlinks in\n//     procfs are magic-links, which we want to skip anyway).\n//   - If statx is supported (checkSymlinkOvermount), any mount-point crossings\n//     (which is the main attack of concern against /proc).\n//   - Partial lookups are not supported, so the symlink stack is not needed.\n//   - Trailing slash special handling is not necessary in most cases (if we\n//     operating on procfs, it's usually with programmer-controlled strings\n//     that will then be re-opened), so we skip it since whatever re-opens it\n//     can deal with it. It's a creature comfort anyway.\n//\n// If the system supports openat2(), this is implemented using equivalent flags\n// (RESOLVE_BENEATH | RESOLVE_NO_XDEV | RESOLVE_NO_MAGICLINKS).\nfunc procfsLookupInRoot(procRoot fd.Fd, unsafePath string) (Handle *os.File, _ error) {\n\tunsafePath = filepath.ToSlash(unsafePath) // noop\n\n\t// Make sure that an empty unsafe path still returns something sane, even\n\t// with openat2 (which doesn't have AT_EMPTY_PATH semantics yet).\n\tif unsafePath == \"\" {\n\t\tunsafePath = \".\"\n\t}\n\n\t// This is already checked by getProcRoot, but make sure here since the\n\t// core security of this lookup is based on this assumption.\n\tif err := verifyProcRoot(procRoot); err != nil {\n\t\treturn nil, err\n\t}\n\n\tif linux.HasOpenat2() {\n\t\t// We prefer being able to use RESOLVE_NO_XDEV if we can, to be\n\t\t// absolutely sure we are operating on a clean /proc handle that\n\t\t// doesn't have any cheeky overmounts that could trick us (including\n\t\t// symlink mounts on top of /proc/thread-self). RESOLVE_BENEATH isn't\n\t\t// strictly needed, but just use it since we have it.\n\t\t//\n\t\t// NOTE: /proc/self is technically a magic-link (the contents of the\n\t\t//       symlink are generated dynamically), but it doesn't use\n\t\t//       nd_jump_link() so RESOLVE_NO_MAGICLINKS allows it.\n\t\t//\n\t\t// TODO: It would be nice to have RESOLVE_NO_DOTDOT, purely for\n\t\t//       self-consistency with the backup O_PATH resolver.\n\t\thandle, err := fd.Openat2(procRoot, unsafePath, &unix.OpenHow{\n\t\t\tFlags:   unix.O_PATH | unix.O_NOFOLLOW | unix.O_CLOEXEC,\n\t\t\tResolve: unix.RESOLVE_BENEATH | unix.RESOLVE_NO_XDEV | unix.RESOLVE_NO_MAGICLINKS,\n\t\t})\n\t\tif err != nil {\n\t\t\t// TODO: Once we bump the minimum Go version to 1.20, we can use\n\t\t\t// multiple %w verbs for this wrapping. For now we need to use a\n\t\t\t// compatibility shim for older Go versions.\n\t\t\t// err = fmt.Errorf(\"%w: %w\", errUnsafeProcfs, err)\n\t\t\treturn nil, gocompat.WrapBaseError(err, errUnsafeProcfs)\n\t\t}\n\t\treturn handle, nil\n\t}\n\n\t// To mirror openat2(RESOLVE_BENEATH), we need to return an error if the\n\t// path is absolute.\n\tif path.IsAbs(unsafePath) {\n\t\treturn nil, fmt.Errorf(\"%w: cannot resolve absolute paths in procfs resolver\", internal.ErrPossibleBreakout)\n\t}\n\n\tcurrentDir, err := fd.Dup(procRoot)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"clone root fd: %w\", err)\n\t}\n\tdefer func() {\n\t\t// If a handle is not returned, close the internal handle.\n\t\tif Handle == nil {\n\t\t\t_ = currentDir.Close()\n\t\t}\n\t}()\n\n\tvar (\n\t\tlinksWalked   int\n\t\tcurrentPath   string\n\t\tremainingPath = unsafePath\n\t)\n\tfor remainingPath != \"\" {\n\t\t// Get the next path component.\n\t\tvar part string\n\t\tif i := strings.IndexByte(remainingPath, '/'); i == -1 {\n\t\t\tpart, remainingPath = remainingPath, \"\"\n\t\t} else {\n\t\t\tpart, remainingPath = remainingPath[:i], remainingPath[i+1:]\n\t\t}\n\t\tif part == \"\" {\n\t\t\t// no-op component, but treat it the same as \".\"\n\t\t\tpart = \".\"\n\t\t}\n\t\tif part == \"..\" {\n\t\t\t// not permitted\n\t\t\treturn nil, fmt.Errorf(\"%w: cannot walk into '..' in procfs resolver\", internal.ErrPossibleBreakout)\n\t\t}\n\n\t\t// Apply the component lexically to the path we are building.\n\t\t// currentPath does not contain any symlinks, and we are lexically\n\t\t// dealing with a single component, so it's okay to do a filepath.Clean\n\t\t// here. (Not to mention that \"..\" isn't allowed.)\n\t\tnextPath := path.Join(\"/\", currentPath, part)\n\t\t// If we logically hit the root, just clone the root rather than\n\t\t// opening the part and doing all of the other checks.\n\t\tif nextPath == \"/\" {\n\t\t\t// Jump to root.\n\t\t\trootClone, err := fd.Dup(procRoot)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"clone root fd: %w\", err)\n\t\t\t}\n\t\t\t_ = currentDir.Close()\n\t\t\tcurrentDir = rootClone\n\t\t\tcurrentPath = nextPath\n\t\t\tcontinue\n\t\t}\n\n\t\t// Try to open the next component.\n\t\tnextDir, err := fd.Openat(currentDir, part, unix.O_PATH|unix.O_NOFOLLOW|unix.O_CLOEXEC, 0)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\t// Make sure we are still on procfs and haven't crossed mounts.\n\t\tif err := verifyProcHandle(nextDir); err != nil {\n\t\t\t_ = nextDir.Close()\n\t\t\treturn nil, fmt.Errorf(\"check %q component is on procfs: %w\", part, err)\n\t\t}\n\t\tif err := checkSubpathOvermount(procRoot, nextDir, \"\"); err != nil {\n\t\t\t_ = nextDir.Close()\n\t\t\treturn nil, fmt.Errorf(\"check %q component is not overmounted: %w\", part, err)\n\t\t}\n\n\t\t// We are emulating O_PATH|O_NOFOLLOW, so we only need to traverse into\n\t\t// trailing symlinks if we are not the final component. Otherwise we\n\t\t// can just return the currentDir.\n\t\tif remainingPath != \"\" {\n\t\t\tst, err := nextDir.Stat()\n\t\t\tif err != nil {\n\t\t\t\t_ = nextDir.Close()\n\t\t\t\treturn nil, fmt.Errorf(\"stat component %q: %w\", part, err)\n\t\t\t}\n\n\t\t\tif st.Mode()&os.ModeType == os.ModeSymlink {\n\t\t\t\t// readlinkat implies AT_EMPTY_PATH since Linux 2.6.39. See\n\t\t\t\t// Linux commit 65cfc6722361 (\"readlinkat(), fchownat() and\n\t\t\t\t// fstatat() with empty relative pathnames\").\n\t\t\t\tlinkDest, err := fd.Readlinkat(nextDir, \"\")\n\t\t\t\t// We don't need the handle anymore.\n\t\t\t\t_ = nextDir.Close()\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\n\t\t\t\tlinksWalked++\n\t\t\t\tif linksWalked > consts.MaxSymlinkLimit {\n\t\t\t\t\treturn nil, &os.PathError{Op: \"securejoin.procfsLookupInRoot\", Path: \"/proc/\" + unsafePath, Err: unix.ELOOP}\n\t\t\t\t}\n\n\t\t\t\t// Update our logical remaining path.\n\t\t\t\tremainingPath = linkDest + \"/\" + remainingPath\n\t\t\t\t// Absolute symlinks are probably magiclinks, we reject them.\n\t\t\t\tif path.IsAbs(linkDest) {\n\t\t\t\t\treturn nil, fmt.Errorf(\"%w: cannot jump to / in procfs resolver -- possible magiclink\", internal.ErrPossibleBreakout)\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\n\t\t// Walk into the next component.\n\t\t_ = currentDir.Close()\n\t\tcurrentDir = nextDir\n\t\tcurrentPath = nextPath\n\t}\n\n\t// One final sanity-check.\n\tif err := verifyProcHandle(currentDir); err != nil {\n\t\treturn nil, fmt.Errorf(\"check final handle is on procfs: %w\", err)\n\t}\n\tif err := checkSubpathOvermount(procRoot, currentDir, \"\"); err != nil {\n\t\treturn nil, fmt.Errorf(\"check final handle is not overmounted: %w\", err)\n\t}\n\treturn currentDir, nil\n}\n"
  },
  {
    "path": "vendor/github.com/cyphar/filepath-securejoin/pathrs-lite/mkdir.go",
    "content": "// SPDX-License-Identifier: MPL-2.0\n\n//go:build linux\n\n// Copyright (C) 2024-2025 Aleksa Sarai <cyphar@cyphar.com>\n// Copyright (C) 2024-2025 SUSE LLC\n//\n// This Source Code Form is subject to the terms of the Mozilla Public\n// License, v. 2.0. If a copy of the MPL was not distributed with this\n// file, You can obtain one at https://mozilla.org/MPL/2.0/.\n\npackage pathrs\n\nimport (\n\t\"os\"\n\n\t\"golang.org/x/sys/unix\"\n)\n\n// MkdirAll is a race-safe alternative to the [os.MkdirAll] function,\n// where the new directory is guaranteed to be within the root directory (if an\n// attacker can move directories from inside the root to outside the root, the\n// created directory tree might be outside of the root but the key constraint\n// is that at no point will we walk outside of the directory tree we are\n// creating).\n//\n// Effectively, MkdirAll(root, unsafePath, mode) is equivalent to\n//\n//\tpath, _ := securejoin.SecureJoin(root, unsafePath)\n//\terr := os.MkdirAll(path, mode)\n//\n// But is much safer. The above implementation is unsafe because if an attacker\n// can modify the filesystem tree between [SecureJoin] and [os.MkdirAll], it is\n// possible for MkdirAll to resolve unsafe symlink components and create\n// directories outside of the root.\n//\n// If you plan to open the directory after you have created it or want to use\n// an open directory handle as the root, you should use [MkdirAllHandle] instead.\n// This function is a wrapper around [MkdirAllHandle].\n//\n// [SecureJoin]: https://pkg.go.dev/github.com/cyphar/filepath-securejoin#SecureJoin\nfunc MkdirAll(root, unsafePath string, mode os.FileMode) error {\n\trootDir, err := os.OpenFile(root, unix.O_PATH|unix.O_DIRECTORY|unix.O_CLOEXEC, 0)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer rootDir.Close() //nolint:errcheck // close failures aren't critical here\n\n\tf, err := MkdirAllHandle(rootDir, unsafePath, mode)\n\tif err != nil {\n\t\treturn err\n\t}\n\t_ = f.Close()\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/cyphar/filepath-securejoin/pathrs-lite/mkdir_libpathrs.go",
    "content": "// SPDX-License-Identifier: MPL-2.0\n\n//go:build libpathrs\n\n// Copyright (C) 2024-2025 Aleksa Sarai <cyphar@cyphar.com>\n// Copyright (C) 2024-2025 SUSE LLC\n//\n// This Source Code Form is subject to the terms of the Mozilla Public\n// License, v. 2.0. If a copy of the MPL was not distributed with this\n// file, You can obtain one at https://mozilla.org/MPL/2.0/.\n\npackage pathrs\n\nimport (\n\t\"os\"\n\n\t\"cyphar.com/go-pathrs\"\n)\n\n// MkdirAllHandle is equivalent to [MkdirAll], except that it is safer to use\n// in two respects:\n//\n//   - The caller provides the root directory as an *[os.File] (preferably O_PATH)\n//     handle. This means that the caller can be sure which root directory is\n//     being used. Note that this can be emulated by using /proc/self/fd/... as\n//     the root path with [os.MkdirAll].\n//\n//   - Once all of the directories have been created, an *[os.File] O_PATH handle\n//     to the directory at unsafePath is returned to the caller. This is done in\n//     an effectively-race-free way (an attacker would only be able to swap the\n//     final directory component), which is not possible to emulate with\n//     [MkdirAll].\n//\n// In addition, the returned handle is obtained far more efficiently than doing\n// a brand new lookup of unsafePath (such as with [SecureJoin] or openat2) after\n// doing [MkdirAll]. If you intend to open the directory after creating it, you\n// should use MkdirAllHandle.\n//\n// [SecureJoin]: https://pkg.go.dev/github.com/cyphar/filepath-securejoin#SecureJoin\nfunc MkdirAllHandle(root *os.File, unsafePath string, mode os.FileMode) (*os.File, error) {\n\trootRef, err := pathrs.RootFromFile(root)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer rootRef.Close() //nolint:errcheck // close failures aren't critical here\n\n\thandle, err := rootRef.MkdirAll(unsafePath, mode)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn handle.IntoFile(), nil\n}\n"
  },
  {
    "path": "vendor/github.com/cyphar/filepath-securejoin/pathrs-lite/mkdir_purego.go",
    "content": "// SPDX-License-Identifier: MPL-2.0\n\n//go:build linux && !libpathrs\n\n// Copyright (C) 2024-2025 Aleksa Sarai <cyphar@cyphar.com>\n// Copyright (C) 2024-2025 SUSE LLC\n//\n// This Source Code Form is subject to the terms of the Mozilla Public\n// License, v. 2.0. If a copy of the MPL was not distributed with this\n// file, You can obtain one at https://mozilla.org/MPL/2.0/.\n\npackage pathrs\n\nimport (\n\t\"os\"\n\n\t\"github.com/cyphar/filepath-securejoin/pathrs-lite/internal/gopathrs\"\n)\n\n// MkdirAllHandle is equivalent to [MkdirAll], except that it is safer to use\n// in two respects:\n//\n//   - The caller provides the root directory as an *[os.File] (preferably O_PATH)\n//     handle. This means that the caller can be sure which root directory is\n//     being used. Note that this can be emulated by using /proc/self/fd/... as\n//     the root path with [os.MkdirAll].\n//\n//   - Once all of the directories have been created, an *[os.File] O_PATH handle\n//     to the directory at unsafePath is returned to the caller. This is done in\n//     an effectively-race-free way (an attacker would only be able to swap the\n//     final directory component), which is not possible to emulate with\n//     [MkdirAll].\n//\n// In addition, the returned handle is obtained far more efficiently than doing\n// a brand new lookup of unsafePath (such as with [SecureJoin] or openat2) after\n// doing [MkdirAll]. If you intend to open the directory after creating it, you\n// should use MkdirAllHandle.\n//\n// [SecureJoin]: https://pkg.go.dev/github.com/cyphar/filepath-securejoin#SecureJoin\nfunc MkdirAllHandle(root *os.File, unsafePath string, mode os.FileMode) (*os.File, error) {\n\treturn gopathrs.MkdirAllHandle(root, unsafePath, mode)\n}\n"
  },
  {
    "path": "vendor/github.com/cyphar/filepath-securejoin/pathrs-lite/open.go",
    "content": "// SPDX-License-Identifier: MPL-2.0\n\n//go:build linux\n\n// Copyright (C) 2024-2025 Aleksa Sarai <cyphar@cyphar.com>\n// Copyright (C) 2024-2025 SUSE LLC\n//\n// This Source Code Form is subject to the terms of the Mozilla Public\n// License, v. 2.0. If a copy of the MPL was not distributed with this\n// file, You can obtain one at https://mozilla.org/MPL/2.0/.\n\npackage pathrs\n\nimport (\n\t\"os\"\n\n\t\"golang.org/x/sys/unix\"\n)\n\n// OpenInRoot safely opens the provided unsafePath within the root.\n// Effectively, OpenInRoot(root, unsafePath) is equivalent to\n//\n//\tpath, _ := securejoin.SecureJoin(root, unsafePath)\n//\thandle, err := os.OpenFile(path, unix.O_PATH|unix.O_CLOEXEC)\n//\n// But is much safer. The above implementation is unsafe because if an attacker\n// can modify the filesystem tree between [SecureJoin] and [os.OpenFile], it is\n// possible for the returned file to be outside of the root.\n//\n// Note that the returned handle is an O_PATH handle, meaning that only a very\n// limited set of operations will work on the handle. This is done to avoid\n// accidentally opening an untrusted file that could cause issues (such as a\n// disconnected TTY that could cause a DoS, or some other issue). In order to\n// use the returned handle, you can \"upgrade\" it to a proper handle using\n// [Reopen].\n//\n// [SecureJoin]: https://pkg.go.dev/github.com/cyphar/filepath-securejoin#SecureJoin\nfunc OpenInRoot(root, unsafePath string) (*os.File, error) {\n\trootDir, err := os.OpenFile(root, unix.O_PATH|unix.O_DIRECTORY|unix.O_CLOEXEC, 0)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer rootDir.Close() //nolint:errcheck // close failures aren't critical here\n\treturn OpenatInRoot(rootDir, unsafePath)\n}\n"
  },
  {
    "path": "vendor/github.com/cyphar/filepath-securejoin/pathrs-lite/open_libpathrs.go",
    "content": "// SPDX-License-Identifier: MPL-2.0\n\n//go:build libpathrs\n\n// Copyright (C) 2024-2025 Aleksa Sarai <cyphar@cyphar.com>\n// Copyright (C) 2024-2025 SUSE LLC\n//\n// This Source Code Form is subject to the terms of the Mozilla Public\n// License, v. 2.0. If a copy of the MPL was not distributed with this\n// file, You can obtain one at https://mozilla.org/MPL/2.0/.\n\npackage pathrs\n\nimport (\n\t\"os\"\n\n\t\"cyphar.com/go-pathrs\"\n)\n\n// OpenatInRoot is equivalent to [OpenInRoot], except that the root is provided\n// using an *[os.File] handle, to ensure that the correct root directory is used.\nfunc OpenatInRoot(root *os.File, unsafePath string) (*os.File, error) {\n\trootRef, err := pathrs.RootFromFile(root)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer rootRef.Close() //nolint:errcheck // close failures aren't critical here\n\n\thandle, err := rootRef.Resolve(unsafePath)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn handle.IntoFile(), nil\n}\n\n// Reopen takes an *[os.File] handle and re-opens it through /proc/self/fd.\n// Reopen(file, flags) is effectively equivalent to\n//\n//\tfdPath := fmt.Sprintf(\"/proc/self/fd/%d\", file.Fd())\n//\tos.OpenFile(fdPath, flags|unix.O_CLOEXEC)\n//\n// But with some extra hardenings to ensure that we are not tricked by a\n// maliciously-configured /proc mount. While this attack scenario is not\n// common, in container runtimes it is possible for higher-level runtimes to be\n// tricked into configuring an unsafe /proc that can be used to attack file\n// operations. See [CVE-2019-19921] for more details.\n//\n// [CVE-2019-19921]: https://github.com/advisories/GHSA-fh74-hm69-rqjw\nfunc Reopen(file *os.File, flags int) (*os.File, error) {\n\thandle, err := pathrs.HandleFromFile(file)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer handle.Close() //nolint:errcheck // close failures aren't critical here\n\n\treturn handle.OpenFile(flags)\n}\n"
  },
  {
    "path": "vendor/github.com/cyphar/filepath-securejoin/pathrs-lite/open_purego.go",
    "content": "// SPDX-License-Identifier: MPL-2.0\n\n//go:build linux && !libpathrs\n\n// Copyright (C) 2024-2025 Aleksa Sarai <cyphar@cyphar.com>\n// Copyright (C) 2024-2025 SUSE LLC\n//\n// This Source Code Form is subject to the terms of the Mozilla Public\n// License, v. 2.0. If a copy of the MPL was not distributed with this\n// file, You can obtain one at https://mozilla.org/MPL/2.0/.\n\npackage pathrs\n\nimport (\n\t\"os\"\n\n\t\"github.com/cyphar/filepath-securejoin/pathrs-lite/internal/gopathrs\"\n\t\"github.com/cyphar/filepath-securejoin/pathrs-lite/internal/procfs\"\n)\n\n// OpenatInRoot is equivalent to [OpenInRoot], except that the root is provided\n// using an *[os.File] handle, to ensure that the correct root directory is used.\nfunc OpenatInRoot(root *os.File, unsafePath string) (*os.File, error) {\n\treturn gopathrs.OpenatInRoot(root, unsafePath)\n}\n\n// Reopen takes an *[os.File] handle and re-opens it through /proc/self/fd.\n// Reopen(file, flags) is effectively equivalent to\n//\n//\tfdPath := fmt.Sprintf(\"/proc/self/fd/%d\", file.Fd())\n//\tos.OpenFile(fdPath, flags|unix.O_CLOEXEC)\n//\n// But with some extra hardenings to ensure that we are not tricked by a\n// maliciously-configured /proc mount. While this attack scenario is not\n// common, in container runtimes it is possible for higher-level runtimes to be\n// tricked into configuring an unsafe /proc that can be used to attack file\n// operations. See [CVE-2019-19921] for more details.\n//\n// [CVE-2019-19921]: https://github.com/advisories/GHSA-fh74-hm69-rqjw\nfunc Reopen(handle *os.File, flags int) (*os.File, error) {\n\treturn procfs.ReopenFd(handle, flags)\n}\n"
  },
  {
    "path": "vendor/github.com/cyphar/filepath-securejoin/pathrs-lite/procfs/procfs_libpathrs.go",
    "content": "// SPDX-License-Identifier: MPL-2.0\n\n//go:build libpathrs\n\n// Copyright (C) 2024-2025 Aleksa Sarai <cyphar@cyphar.com>\n// Copyright (C) 2024-2025 SUSE LLC\n//\n// This Source Code Form is subject to the terms of the Mozilla Public\n// License, v. 2.0. If a copy of the MPL was not distributed with this\n// file, You can obtain one at https://mozilla.org/MPL/2.0/.\n\n// Package procfs provides a safe API for operating on /proc on Linux.\npackage procfs\n\nimport (\n\t\"os\"\n\t\"strconv\"\n\n\t\"cyphar.com/go-pathrs/procfs\"\n\t\"golang.org/x/sys/unix\"\n)\n\n// ProcThreadSelfCloser is a callback that needs to be called when you are done\n// operating on an [os.File] fetched using [Handle.OpenThreadSelf].\n//\n// [os.File]: https://pkg.go.dev/os#File\ntype ProcThreadSelfCloser = procfs.ThreadCloser\n\n// Handle is a wrapper around an *os.File handle to \"/proc\", which can be used\n// to do further procfs-related operations in a safe way.\ntype Handle struct {\n\tinner *procfs.Handle\n}\n\n// Close close the resources associated with this [Handle]. Note that if this\n// [Handle] was created with [OpenProcRoot], on some kernels the underlying\n// procfs handle is cached and so this Close operation may be a no-op. However,\n// you should always call Close on [Handle]s once you are done with them.\nfunc (proc *Handle) Close() error { return proc.inner.Close() }\n\n// OpenProcRoot tries to open a \"safer\" handle to \"/proc\" (i.e., one with the\n// \"subset=pid\" mount option applied, available from Linux 5.8). Unless you\n// plan to do many [Handle.OpenRoot] operations, users should prefer to use\n// this over [OpenUnsafeProcRoot] which is far more dangerous to keep open.\n//\n// If a safe handle cannot be opened, OpenProcRoot will fall back to opening a\n// regular \"/proc\" handle.\n//\n// Note that using [Handle.OpenRoot] will still work with handles returned by\n// this function. If a subpath cannot be operated on with a safe \"/proc\"\n// handle, then [OpenUnsafeProcRoot] will be called internally and a temporary\n// unsafe handle will be used.\nfunc OpenProcRoot() (*Handle, error) {\n\tproc, err := procfs.Open()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &Handle{inner: proc}, nil\n}\n\n// OpenUnsafeProcRoot opens a handle to \"/proc\" without any overmounts or\n// masked paths. You must be extremely careful to make sure this handle is\n// never leaked to a container and that you program cannot be tricked into\n// writing to arbitrary paths within it.\n//\n// This is not necessary if you just wish to use [Handle.OpenRoot], as handles\n// returned by [OpenProcRoot] will fall back to using a *temporary* unsafe\n// handle in that case. You should only really use this if you need to do many\n// operations with [Handle.OpenRoot] and the performance overhead of making\n// many procfs handles is an issue. If you do use OpenUnsafeProcRoot, you\n// should make sure to close the handle as soon as possible to avoid\n// known-fd-number attacks.\nfunc OpenUnsafeProcRoot() (*Handle, error) {\n\tproc, err := procfs.Open(procfs.UnmaskedProcRoot)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &Handle{inner: proc}, nil\n}\n\n// OpenThreadSelf returns a handle to \"/proc/thread-self/<subpath>\" (or an\n// equivalent handle on older kernels where \"/proc/thread-self\" doesn't exist).\n// Once finished with the handle, you must call the returned closer function\n// ([runtime.UnlockOSThread]). You must not pass the returned *os.File to other\n// Go threads or use the handle after calling the closer.\n//\n// [runtime.UnlockOSThread]: https://pkg.go.dev/runtime#UnlockOSThread\nfunc (proc *Handle) OpenThreadSelf(subpath string) (*os.File, ProcThreadSelfCloser, error) {\n\treturn proc.inner.OpenThreadSelf(subpath, unix.O_PATH|unix.O_NOFOLLOW)\n}\n\n// OpenSelf returns a handle to /proc/self/<subpath>.\n//\n// Note that in Go programs with non-homogenous threads, this may result in\n// spurious errors. If you are monkeying around with APIs that are\n// thread-specific, you probably want to use [Handle.OpenThreadSelf] instead\n// which will guarantee that the handle refers to the same thread as the caller\n// is executing on.\nfunc (proc *Handle) OpenSelf(subpath string) (*os.File, error) {\n\treturn proc.inner.OpenSelf(subpath, unix.O_PATH|unix.O_NOFOLLOW)\n}\n\n// OpenRoot returns a handle to /proc/<subpath>.\n//\n// You should only use this when you need to operate on global procfs files\n// (such as sysctls in /proc/sys). Unlike [Handle.OpenThreadSelf],\n// [Handle.OpenSelf], and [Handle.OpenPid], the procfs handle used internally\n// for this operation will never use \"subset=pid\", which makes it a more juicy\n// target for [CVE-2024-21626]-style attacks (and doing something like opening\n// a directory with OpenRoot effectively leaks [OpenUnsafeProcRoot] as long as\n// the file descriptor is open).\n//\n// [CVE-2024-21626]: https://github.com/opencontainers/runc/security/advisories/GHSA-xr7r-f8xq-vfvv\nfunc (proc *Handle) OpenRoot(subpath string) (*os.File, error) {\n\treturn proc.inner.OpenRoot(subpath, unix.O_PATH|unix.O_NOFOLLOW)\n}\n\n// OpenPid returns a handle to /proc/$pid/<subpath> (pid can be a pid or tid).\n// This is mainly intended for usage when operating on other processes.\n//\n// You should not use this for the current thread, as special handling is\n// needed for /proc/thread-self (or /proc/self/task/<tid>) when dealing with\n// goroutine scheduling -- use [Handle.OpenThreadSelf] instead.\n//\n// To refer to the current thread-group, you should use prefer\n// [Handle.OpenSelf] to passing os.Getpid as the pid argument.\nfunc (proc *Handle) OpenPid(pid int, subpath string) (*os.File, error) {\n\treturn proc.inner.OpenPid(pid, subpath, unix.O_PATH|unix.O_NOFOLLOW)\n}\n\n// ProcSelfFdReadlink gets the real path of the given file by looking at\n// /proc/self/fd/<fd> with [readlink]. It is effectively just shorthand for\n// something along the lines of:\n//\n//\tproc, err := procfs.OpenProcRoot()\n//\tif err != nil {\n//\t\treturn err\n//\t}\n//\tlink, err := proc.OpenThreadSelf(fmt.Sprintf(\"fd/%d\", f.Fd()))\n//\tif err != nil {\n//\t\treturn err\n//\t}\n//\tdefer link.Close()\n//\tvar buf [4096]byte\n//\tn, err := unix.Readlinkat(int(link.Fd()), \"\", buf[:])\n//\tif err != nil {\n//\t\treturn err\n//\t}\n//\tpathname := buf[:n]\n//\n// [readlink]: https://pkg.go.dev/golang.org/x/sys/unix#Readlinkat\nfunc ProcSelfFdReadlink(f *os.File) (string, error) {\n\tproc, err := procfs.Open()\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tdefer proc.Close() //nolint:errcheck // close failures aren't critical here\n\n\tfdPath := \"fd/\" + strconv.Itoa(int(f.Fd()))\n\treturn proc.Readlink(procfs.ProcThreadSelf, fdPath)\n}\n"
  },
  {
    "path": "vendor/github.com/cyphar/filepath-securejoin/pathrs-lite/procfs/procfs_purego.go",
    "content": "// SPDX-License-Identifier: MPL-2.0\n\n//go:build linux && !libpathrs\n\n// Copyright (C) 2024-2025 Aleksa Sarai <cyphar@cyphar.com>\n// Copyright (C) 2024-2025 SUSE LLC\n//\n// This Source Code Form is subject to the terms of the Mozilla Public\n// License, v. 2.0. If a copy of the MPL was not distributed with this\n// file, You can obtain one at https://mozilla.org/MPL/2.0/.\n\n// Package procfs provides a safe API for operating on /proc on Linux.\npackage procfs\n\nimport (\n\t\"os\"\n\n\t\"github.com/cyphar/filepath-securejoin/pathrs-lite/internal/procfs\"\n)\n\n// This package mostly just wraps internal/procfs APIs. This is necessary\n// because we are forced to export some things from internal/procfs in order to\n// avoid some dependency cycle issues, but we don't want users to see or use\n// them.\n\n// ProcThreadSelfCloser is a callback that needs to be called when you are done\n// operating on an [os.File] fetched using [Handle.OpenThreadSelf].\n//\n// [os.File]: https://pkg.go.dev/os#File\ntype ProcThreadSelfCloser = procfs.ProcThreadSelfCloser\n\n// Handle is a wrapper around an *os.File handle to \"/proc\", which can be used\n// to do further procfs-related operations in a safe way.\ntype Handle struct {\n\tinner *procfs.Handle\n}\n\n// Close close the resources associated with this [Handle]. Note that if this\n// [Handle] was created with [OpenProcRoot], on some kernels the underlying\n// procfs handle is cached and so this Close operation may be a no-op. However,\n// you should always call Close on [Handle]s once you are done with them.\nfunc (proc *Handle) Close() error { return proc.inner.Close() }\n\n// OpenProcRoot tries to open a \"safer\" handle to \"/proc\" (i.e., one with the\n// \"subset=pid\" mount option applied, available from Linux 5.8). Unless you\n// plan to do many [Handle.OpenRoot] operations, users should prefer to use\n// this over [OpenUnsafeProcRoot] which is far more dangerous to keep open.\n//\n// If a safe handle cannot be opened, OpenProcRoot will fall back to opening a\n// regular \"/proc\" handle.\n//\n// Note that using [Handle.OpenRoot] will still work with handles returned by\n// this function. If a subpath cannot be operated on with a safe \"/proc\"\n// handle, then [OpenUnsafeProcRoot] will be called internally and a temporary\n// unsafe handle will be used.\nfunc OpenProcRoot() (*Handle, error) {\n\tproc, err := procfs.OpenProcRoot()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &Handle{inner: proc}, nil\n}\n\n// OpenUnsafeProcRoot opens a handle to \"/proc\" without any overmounts or\n// masked paths. You must be extremely careful to make sure this handle is\n// never leaked to a container and that you program cannot be tricked into\n// writing to arbitrary paths within it.\n//\n// This is not necessary if you just wish to use [Handle.OpenRoot], as handles\n// returned by [OpenProcRoot] will fall back to using a *temporary* unsafe\n// handle in that case. You should only really use this if you need to do many\n// operations with [Handle.OpenRoot] and the performance overhead of making\n// many procfs handles is an issue. If you do use OpenUnsafeProcRoot, you\n// should make sure to close the handle as soon as possible to avoid\n// known-fd-number attacks.\nfunc OpenUnsafeProcRoot() (*Handle, error) {\n\tproc, err := procfs.OpenUnsafeProcRoot()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &Handle{inner: proc}, nil\n}\n\n// OpenThreadSelf returns a handle to \"/proc/thread-self/<subpath>\" (or an\n// equivalent handle on older kernels where \"/proc/thread-self\" doesn't exist).\n// Once finished with the handle, you must call the returned closer function\n// ([runtime.UnlockOSThread]). You must not pass the returned *os.File to other\n// Go threads or use the handle after calling the closer.\n//\n// [runtime.UnlockOSThread]: https://pkg.go.dev/runtime#UnlockOSThread\nfunc (proc *Handle) OpenThreadSelf(subpath string) (*os.File, ProcThreadSelfCloser, error) {\n\treturn proc.inner.OpenThreadSelf(subpath)\n}\n\n// OpenSelf returns a handle to /proc/self/<subpath>.\n//\n// Note that in Go programs with non-homogenous threads, this may result in\n// spurious errors. If you are monkeying around with APIs that are\n// thread-specific, you probably want to use [Handle.OpenThreadSelf] instead\n// which will guarantee that the handle refers to the same thread as the caller\n// is executing on.\nfunc (proc *Handle) OpenSelf(subpath string) (*os.File, error) {\n\treturn proc.inner.OpenSelf(subpath)\n}\n\n// OpenRoot returns a handle to /proc/<subpath>.\n//\n// You should only use this when you need to operate on global procfs files\n// (such as sysctls in /proc/sys). Unlike [Handle.OpenThreadSelf],\n// [Handle.OpenSelf], and [Handle.OpenPid], the procfs handle used internally\n// for this operation will never use \"subset=pid\", which makes it a more juicy\n// target for [CVE-2024-21626]-style attacks (and doing something like opening\n// a directory with OpenRoot effectively leaks [OpenUnsafeProcRoot] as long as\n// the file descriptor is open).\n//\n// [CVE-2024-21626]: https://github.com/opencontainers/runc/security/advisories/GHSA-xr7r-f8xq-vfvv\nfunc (proc *Handle) OpenRoot(subpath string) (*os.File, error) {\n\treturn proc.inner.OpenRoot(subpath)\n}\n\n// OpenPid returns a handle to /proc/$pid/<subpath> (pid can be a pid or tid).\n// This is mainly intended for usage when operating on other processes.\n//\n// You should not use this for the current thread, as special handling is\n// needed for /proc/thread-self (or /proc/self/task/<tid>) when dealing with\n// goroutine scheduling -- use [Handle.OpenThreadSelf] instead.\n//\n// To refer to the current thread-group, you should use prefer\n// [Handle.OpenSelf] to passing os.Getpid as the pid argument.\nfunc (proc *Handle) OpenPid(pid int, subpath string) (*os.File, error) {\n\treturn proc.inner.OpenPid(pid, subpath)\n}\n\n// ProcSelfFdReadlink gets the real path of the given file by looking at\n// /proc/self/fd/<fd> with [readlink]. It is effectively just shorthand for\n// something along the lines of:\n//\n//\tproc, err := procfs.OpenProcRoot()\n//\tif err != nil {\n//\t\treturn err\n//\t}\n//\tlink, err := proc.OpenThreadSelf(fmt.Sprintf(\"fd/%d\", f.Fd()))\n//\tif err != nil {\n//\t\treturn err\n//\t}\n//\tdefer link.Close()\n//\tvar buf [4096]byte\n//\tn, err := unix.Readlinkat(int(link.Fd()), \"\", buf[:])\n//\tif err != nil {\n//\t\treturn err\n//\t}\n//\tpathname := buf[:n]\n//\n// [readlink]: https://pkg.go.dev/golang.org/x/sys/unix#Readlinkat\nfunc ProcSelfFdReadlink(f *os.File) (string, error) {\n\treturn procfs.ProcSelfFdReadlink(f)\n}\n"
  },
  {
    "path": "vendor/github.com/cyphar/filepath-securejoin/vfs.go",
    "content": "// SPDX-License-Identifier: BSD-3-Clause\n\n// Copyright (C) 2017-2024 SUSE LLC. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage securejoin\n\nimport \"os\"\n\n// In future this should be moved into a separate package, because now there\n// are several projects (umoci and go-mtree) that are using this sort of\n// interface.\n\n// VFS is the minimal interface necessary to use [SecureJoinVFS]. A nil VFS is\n// equivalent to using the standard [os].* family of functions. This is mainly\n// used for the purposes of mock testing, but also can be used to otherwise use\n// [SecureJoinVFS] with VFS-like system.\ntype VFS interface {\n\t// Lstat returns an [os.FileInfo] describing the named file. If the\n\t// file is a symbolic link, the returned [os.FileInfo] describes the\n\t// symbolic link. Lstat makes no attempt to follow the link.\n\t// The semantics are identical to [os.Lstat].\n\tLstat(name string) (os.FileInfo, error)\n\n\t// Readlink returns the destination of the named symbolic link.\n\t// The semantics are identical to [os.Readlink].\n\tReadlink(name string) (string, error)\n}\n\n// osVFS is the \"nil\" VFS, in that it just passes everything through to the os\n// module.\ntype osVFS struct{}\n\nfunc (o osVFS) Lstat(name string) (os.FileInfo, error) { return os.Lstat(name) }\n\nfunc (o osVFS) Readlink(name string) (string, error) { return os.Readlink(name) }\n"
  },
  {
    "path": "vendor/github.com/davecgh/go-spew/LICENSE",
    "content": "ISC License\n\nCopyright (c) 2012-2016 Dave Collins <dave@davec.name>\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted, provided that the above\ncopyright notice and this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\nWITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\nMERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\nANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\nWHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\nACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\nOR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n"
  },
  {
    "path": "vendor/github.com/davecgh/go-spew/spew/bypass.go",
    "content": "// Copyright (c) 2015-2016 Dave Collins <dave@davec.name>\n//\n// Permission to use, copy, modify, and distribute this software for any\n// purpose with or without fee is hereby granted, provided that the above\n// copyright notice and this permission notice appear in all copies.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n\n// NOTE: Due to the following build constraints, this file will only be compiled\n// when the code is not running on Google App Engine, compiled by GopherJS, and\n// \"-tags safe\" is not added to the go build command line.  The \"disableunsafe\"\n// tag is deprecated and thus should not be used.\n// Go versions prior to 1.4 are disabled because they use a different layout\n// for interfaces which make the implementation of unsafeReflectValue more complex.\n// +build !js,!appengine,!safe,!disableunsafe,go1.4\n\npackage spew\n\nimport (\n\t\"reflect\"\n\t\"unsafe\"\n)\n\nconst (\n\t// UnsafeDisabled is a build-time constant which specifies whether or\n\t// not access to the unsafe package is available.\n\tUnsafeDisabled = false\n\n\t// ptrSize is the size of a pointer on the current arch.\n\tptrSize = unsafe.Sizeof((*byte)(nil))\n)\n\ntype flag uintptr\n\nvar (\n\t// flagRO indicates whether the value field of a reflect.Value\n\t// is read-only.\n\tflagRO flag\n\n\t// flagAddr indicates whether the address of the reflect.Value's\n\t// value may be taken.\n\tflagAddr flag\n)\n\n// flagKindMask holds the bits that make up the kind\n// part of the flags field. In all the supported versions,\n// it is in the lower 5 bits.\nconst flagKindMask = flag(0x1f)\n\n// Different versions of Go have used different\n// bit layouts for the flags type. This table\n// records the known combinations.\nvar okFlags = []struct {\n\tro, addr flag\n}{{\n\t// From Go 1.4 to 1.5\n\tro:   1 << 5,\n\taddr: 1 << 7,\n}, {\n\t// Up to Go tip.\n\tro:   1<<5 | 1<<6,\n\taddr: 1 << 8,\n}}\n\nvar flagValOffset = func() uintptr {\n\tfield, ok := reflect.TypeOf(reflect.Value{}).FieldByName(\"flag\")\n\tif !ok {\n\t\tpanic(\"reflect.Value has no flag field\")\n\t}\n\treturn field.Offset\n}()\n\n// flagField returns a pointer to the flag field of a reflect.Value.\nfunc flagField(v *reflect.Value) *flag {\n\treturn (*flag)(unsafe.Pointer(uintptr(unsafe.Pointer(v)) + flagValOffset))\n}\n\n// unsafeReflectValue converts the passed reflect.Value into a one that bypasses\n// the typical safety restrictions preventing access to unaddressable and\n// unexported data.  It works by digging the raw pointer to the underlying\n// value out of the protected value and generating a new unprotected (unsafe)\n// reflect.Value to it.\n//\n// This allows us to check for implementations of the Stringer and error\n// interfaces to be used for pretty printing ordinarily unaddressable and\n// inaccessible values such as unexported struct fields.\nfunc unsafeReflectValue(v reflect.Value) reflect.Value {\n\tif !v.IsValid() || (v.CanInterface() && v.CanAddr()) {\n\t\treturn v\n\t}\n\tflagFieldPtr := flagField(&v)\n\t*flagFieldPtr &^= flagRO\n\t*flagFieldPtr |= flagAddr\n\treturn v\n}\n\n// Sanity checks against future reflect package changes\n// to the type or semantics of the Value.flag field.\nfunc init() {\n\tfield, ok := reflect.TypeOf(reflect.Value{}).FieldByName(\"flag\")\n\tif !ok {\n\t\tpanic(\"reflect.Value has no flag field\")\n\t}\n\tif field.Type.Kind() != reflect.TypeOf(flag(0)).Kind() {\n\t\tpanic(\"reflect.Value flag field has changed kind\")\n\t}\n\ttype t0 int\n\tvar t struct {\n\t\tA t0\n\t\t// t0 will have flagEmbedRO set.\n\t\tt0\n\t\t// a will have flagStickyRO set\n\t\ta t0\n\t}\n\tvA := reflect.ValueOf(t).FieldByName(\"A\")\n\tva := reflect.ValueOf(t).FieldByName(\"a\")\n\tvt0 := reflect.ValueOf(t).FieldByName(\"t0\")\n\n\t// Infer flagRO from the difference between the flags\n\t// for the (otherwise identical) fields in t.\n\tflagPublic := *flagField(&vA)\n\tflagWithRO := *flagField(&va) | *flagField(&vt0)\n\tflagRO = flagPublic ^ flagWithRO\n\n\t// Infer flagAddr from the difference between a value\n\t// taken from a pointer and not.\n\tvPtrA := reflect.ValueOf(&t).Elem().FieldByName(\"A\")\n\tflagNoPtr := *flagField(&vA)\n\tflagPtr := *flagField(&vPtrA)\n\tflagAddr = flagNoPtr ^ flagPtr\n\n\t// Check that the inferred flags tally with one of the known versions.\n\tfor _, f := range okFlags {\n\t\tif flagRO == f.ro && flagAddr == f.addr {\n\t\t\treturn\n\t\t}\n\t}\n\tpanic(\"reflect.Value read-only flag has changed semantics\")\n}\n"
  },
  {
    "path": "vendor/github.com/davecgh/go-spew/spew/bypasssafe.go",
    "content": "// Copyright (c) 2015-2016 Dave Collins <dave@davec.name>\n//\n// Permission to use, copy, modify, and distribute this software for any\n// purpose with or without fee is hereby granted, provided that the above\n// copyright notice and this permission notice appear in all copies.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n\n// NOTE: Due to the following build constraints, this file will only be compiled\n// when the code is running on Google App Engine, compiled by GopherJS, or\n// \"-tags safe\" is added to the go build command line.  The \"disableunsafe\"\n// tag is deprecated and thus should not be used.\n// +build js appengine safe disableunsafe !go1.4\n\npackage spew\n\nimport \"reflect\"\n\nconst (\n\t// UnsafeDisabled is a build-time constant which specifies whether or\n\t// not access to the unsafe package is available.\n\tUnsafeDisabled = true\n)\n\n// unsafeReflectValue typically converts the passed reflect.Value into a one\n// that bypasses the typical safety restrictions preventing access to\n// unaddressable and unexported data.  However, doing this relies on access to\n// the unsafe package.  This is a stub version which simply returns the passed\n// reflect.Value when the unsafe package is not available.\nfunc unsafeReflectValue(v reflect.Value) reflect.Value {\n\treturn v\n}\n"
  },
  {
    "path": "vendor/github.com/davecgh/go-spew/spew/common.go",
    "content": "/*\n * Copyright (c) 2013-2016 Dave Collins <dave@davec.name>\n *\n * Permission to use, copy, modify, and distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n */\n\npackage spew\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"reflect\"\n\t\"sort\"\n\t\"strconv\"\n)\n\n// Some constants in the form of bytes to avoid string overhead.  This mirrors\n// the technique used in the fmt package.\nvar (\n\tpanicBytes            = []byte(\"(PANIC=\")\n\tplusBytes             = []byte(\"+\")\n\tiBytes                = []byte(\"i\")\n\ttrueBytes             = []byte(\"true\")\n\tfalseBytes            = []byte(\"false\")\n\tinterfaceBytes        = []byte(\"(interface {})\")\n\tcommaNewlineBytes     = []byte(\",\\n\")\n\tnewlineBytes          = []byte(\"\\n\")\n\topenBraceBytes        = []byte(\"{\")\n\topenBraceNewlineBytes = []byte(\"{\\n\")\n\tcloseBraceBytes       = []byte(\"}\")\n\tasteriskBytes         = []byte(\"*\")\n\tcolonBytes            = []byte(\":\")\n\tcolonSpaceBytes       = []byte(\": \")\n\topenParenBytes        = []byte(\"(\")\n\tcloseParenBytes       = []byte(\")\")\n\tspaceBytes            = []byte(\" \")\n\tpointerChainBytes     = []byte(\"->\")\n\tnilAngleBytes         = []byte(\"<nil>\")\n\tmaxNewlineBytes       = []byte(\"<max depth reached>\\n\")\n\tmaxShortBytes         = []byte(\"<max>\")\n\tcircularBytes         = []byte(\"<already shown>\")\n\tcircularShortBytes    = []byte(\"<shown>\")\n\tinvalidAngleBytes     = []byte(\"<invalid>\")\n\topenBracketBytes      = []byte(\"[\")\n\tcloseBracketBytes     = []byte(\"]\")\n\tpercentBytes          = []byte(\"%\")\n\tprecisionBytes        = []byte(\".\")\n\topenAngleBytes        = []byte(\"<\")\n\tcloseAngleBytes       = []byte(\">\")\n\topenMapBytes          = []byte(\"map[\")\n\tcloseMapBytes         = []byte(\"]\")\n\tlenEqualsBytes        = []byte(\"len=\")\n\tcapEqualsBytes        = []byte(\"cap=\")\n)\n\n// hexDigits is used to map a decimal value to a hex digit.\nvar hexDigits = \"0123456789abcdef\"\n\n// catchPanic handles any panics that might occur during the handleMethods\n// calls.\nfunc catchPanic(w io.Writer, v reflect.Value) {\n\tif err := recover(); err != nil {\n\t\tw.Write(panicBytes)\n\t\tfmt.Fprintf(w, \"%v\", err)\n\t\tw.Write(closeParenBytes)\n\t}\n}\n\n// handleMethods attempts to call the Error and String methods on the underlying\n// type the passed reflect.Value represents and outputes the result to Writer w.\n//\n// It handles panics in any called methods by catching and displaying the error\n// as the formatted value.\nfunc handleMethods(cs *ConfigState, w io.Writer, v reflect.Value) (handled bool) {\n\t// We need an interface to check if the type implements the error or\n\t// Stringer interface.  However, the reflect package won't give us an\n\t// interface on certain things like unexported struct fields in order\n\t// to enforce visibility rules.  We use unsafe, when it's available,\n\t// to bypass these restrictions since this package does not mutate the\n\t// values.\n\tif !v.CanInterface() {\n\t\tif UnsafeDisabled {\n\t\t\treturn false\n\t\t}\n\n\t\tv = unsafeReflectValue(v)\n\t}\n\n\t// Choose whether or not to do error and Stringer interface lookups against\n\t// the base type or a pointer to the base type depending on settings.\n\t// Technically calling one of these methods with a pointer receiver can\n\t// mutate the value, however, types which choose to satisify an error or\n\t// Stringer interface with a pointer receiver should not be mutating their\n\t// state inside these interface methods.\n\tif !cs.DisablePointerMethods && !UnsafeDisabled && !v.CanAddr() {\n\t\tv = unsafeReflectValue(v)\n\t}\n\tif v.CanAddr() {\n\t\tv = v.Addr()\n\t}\n\n\t// Is it an error or Stringer?\n\tswitch iface := v.Interface().(type) {\n\tcase error:\n\t\tdefer catchPanic(w, v)\n\t\tif cs.ContinueOnMethod {\n\t\t\tw.Write(openParenBytes)\n\t\t\tw.Write([]byte(iface.Error()))\n\t\t\tw.Write(closeParenBytes)\n\t\t\tw.Write(spaceBytes)\n\t\t\treturn false\n\t\t}\n\n\t\tw.Write([]byte(iface.Error()))\n\t\treturn true\n\n\tcase fmt.Stringer:\n\t\tdefer catchPanic(w, v)\n\t\tif cs.ContinueOnMethod {\n\t\t\tw.Write(openParenBytes)\n\t\t\tw.Write([]byte(iface.String()))\n\t\t\tw.Write(closeParenBytes)\n\t\t\tw.Write(spaceBytes)\n\t\t\treturn false\n\t\t}\n\t\tw.Write([]byte(iface.String()))\n\t\treturn true\n\t}\n\treturn false\n}\n\n// printBool outputs a boolean value as true or false to Writer w.\nfunc printBool(w io.Writer, val bool) {\n\tif val {\n\t\tw.Write(trueBytes)\n\t} else {\n\t\tw.Write(falseBytes)\n\t}\n}\n\n// printInt outputs a signed integer value to Writer w.\nfunc printInt(w io.Writer, val int64, base int) {\n\tw.Write([]byte(strconv.FormatInt(val, base)))\n}\n\n// printUint outputs an unsigned integer value to Writer w.\nfunc printUint(w io.Writer, val uint64, base int) {\n\tw.Write([]byte(strconv.FormatUint(val, base)))\n}\n\n// printFloat outputs a floating point value using the specified precision,\n// which is expected to be 32 or 64bit, to Writer w.\nfunc printFloat(w io.Writer, val float64, precision int) {\n\tw.Write([]byte(strconv.FormatFloat(val, 'g', -1, precision)))\n}\n\n// printComplex outputs a complex value using the specified float precision\n// for the real and imaginary parts to Writer w.\nfunc printComplex(w io.Writer, c complex128, floatPrecision int) {\n\tr := real(c)\n\tw.Write(openParenBytes)\n\tw.Write([]byte(strconv.FormatFloat(r, 'g', -1, floatPrecision)))\n\ti := imag(c)\n\tif i >= 0 {\n\t\tw.Write(plusBytes)\n\t}\n\tw.Write([]byte(strconv.FormatFloat(i, 'g', -1, floatPrecision)))\n\tw.Write(iBytes)\n\tw.Write(closeParenBytes)\n}\n\n// printHexPtr outputs a uintptr formatted as hexadecimal with a leading '0x'\n// prefix to Writer w.\nfunc printHexPtr(w io.Writer, p uintptr) {\n\t// Null pointer.\n\tnum := uint64(p)\n\tif num == 0 {\n\t\tw.Write(nilAngleBytes)\n\t\treturn\n\t}\n\n\t// Max uint64 is 16 bytes in hex + 2 bytes for '0x' prefix\n\tbuf := make([]byte, 18)\n\n\t// It's simpler to construct the hex string right to left.\n\tbase := uint64(16)\n\ti := len(buf) - 1\n\tfor num >= base {\n\t\tbuf[i] = hexDigits[num%base]\n\t\tnum /= base\n\t\ti--\n\t}\n\tbuf[i] = hexDigits[num]\n\n\t// Add '0x' prefix.\n\ti--\n\tbuf[i] = 'x'\n\ti--\n\tbuf[i] = '0'\n\n\t// Strip unused leading bytes.\n\tbuf = buf[i:]\n\tw.Write(buf)\n}\n\n// valuesSorter implements sort.Interface to allow a slice of reflect.Value\n// elements to be sorted.\ntype valuesSorter struct {\n\tvalues  []reflect.Value\n\tstrings []string // either nil or same len and values\n\tcs      *ConfigState\n}\n\n// newValuesSorter initializes a valuesSorter instance, which holds a set of\n// surrogate keys on which the data should be sorted.  It uses flags in\n// ConfigState to decide if and how to populate those surrogate keys.\nfunc newValuesSorter(values []reflect.Value, cs *ConfigState) sort.Interface {\n\tvs := &valuesSorter{values: values, cs: cs}\n\tif canSortSimply(vs.values[0].Kind()) {\n\t\treturn vs\n\t}\n\tif !cs.DisableMethods {\n\t\tvs.strings = make([]string, len(values))\n\t\tfor i := range vs.values {\n\t\t\tb := bytes.Buffer{}\n\t\t\tif !handleMethods(cs, &b, vs.values[i]) {\n\t\t\t\tvs.strings = nil\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvs.strings[i] = b.String()\n\t\t}\n\t}\n\tif vs.strings == nil && cs.SpewKeys {\n\t\tvs.strings = make([]string, len(values))\n\t\tfor i := range vs.values {\n\t\t\tvs.strings[i] = Sprintf(\"%#v\", vs.values[i].Interface())\n\t\t}\n\t}\n\treturn vs\n}\n\n// canSortSimply tests whether a reflect.Kind is a primitive that can be sorted\n// directly, or whether it should be considered for sorting by surrogate keys\n// (if the ConfigState allows it).\nfunc canSortSimply(kind reflect.Kind) bool {\n\t// This switch parallels valueSortLess, except for the default case.\n\tswitch kind {\n\tcase reflect.Bool:\n\t\treturn true\n\tcase reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Int:\n\t\treturn true\n\tcase reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uint:\n\t\treturn true\n\tcase reflect.Float32, reflect.Float64:\n\t\treturn true\n\tcase reflect.String:\n\t\treturn true\n\tcase reflect.Uintptr:\n\t\treturn true\n\tcase reflect.Array:\n\t\treturn true\n\t}\n\treturn false\n}\n\n// Len returns the number of values in the slice.  It is part of the\n// sort.Interface implementation.\nfunc (s *valuesSorter) Len() int {\n\treturn len(s.values)\n}\n\n// Swap swaps the values at the passed indices.  It is part of the\n// sort.Interface implementation.\nfunc (s *valuesSorter) Swap(i, j int) {\n\ts.values[i], s.values[j] = s.values[j], s.values[i]\n\tif s.strings != nil {\n\t\ts.strings[i], s.strings[j] = s.strings[j], s.strings[i]\n\t}\n}\n\n// valueSortLess returns whether the first value should sort before the second\n// value.  It is used by valueSorter.Less as part of the sort.Interface\n// implementation.\nfunc valueSortLess(a, b reflect.Value) bool {\n\tswitch a.Kind() {\n\tcase reflect.Bool:\n\t\treturn !a.Bool() && b.Bool()\n\tcase reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Int:\n\t\treturn a.Int() < b.Int()\n\tcase reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uint:\n\t\treturn a.Uint() < b.Uint()\n\tcase reflect.Float32, reflect.Float64:\n\t\treturn a.Float() < b.Float()\n\tcase reflect.String:\n\t\treturn a.String() < b.String()\n\tcase reflect.Uintptr:\n\t\treturn a.Uint() < b.Uint()\n\tcase reflect.Array:\n\t\t// Compare the contents of both arrays.\n\t\tl := a.Len()\n\t\tfor i := 0; i < l; i++ {\n\t\t\tav := a.Index(i)\n\t\t\tbv := b.Index(i)\n\t\t\tif av.Interface() == bv.Interface() {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\treturn valueSortLess(av, bv)\n\t\t}\n\t}\n\treturn a.String() < b.String()\n}\n\n// Less returns whether the value at index i should sort before the\n// value at index j.  It is part of the sort.Interface implementation.\nfunc (s *valuesSorter) Less(i, j int) bool {\n\tif s.strings == nil {\n\t\treturn valueSortLess(s.values[i], s.values[j])\n\t}\n\treturn s.strings[i] < s.strings[j]\n}\n\n// sortValues is a sort function that handles both native types and any type that\n// can be converted to error or Stringer.  Other inputs are sorted according to\n// their Value.String() value to ensure display stability.\nfunc sortValues(values []reflect.Value, cs *ConfigState) {\n\tif len(values) == 0 {\n\t\treturn\n\t}\n\tsort.Sort(newValuesSorter(values, cs))\n}\n"
  },
  {
    "path": "vendor/github.com/davecgh/go-spew/spew/config.go",
    "content": "/*\n * Copyright (c) 2013-2016 Dave Collins <dave@davec.name>\n *\n * Permission to use, copy, modify, and distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n */\n\npackage spew\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n)\n\n// ConfigState houses the configuration options used by spew to format and\n// display values.  There is a global instance, Config, that is used to control\n// all top-level Formatter and Dump functionality.  Each ConfigState instance\n// provides methods equivalent to the top-level functions.\n//\n// The zero value for ConfigState provides no indentation.  You would typically\n// want to set it to a space or a tab.\n//\n// Alternatively, you can use NewDefaultConfig to get a ConfigState instance\n// with default settings.  See the documentation of NewDefaultConfig for default\n// values.\ntype ConfigState struct {\n\t// Indent specifies the string to use for each indentation level.  The\n\t// global config instance that all top-level functions use set this to a\n\t// single space by default.  If you would like more indentation, you might\n\t// set this to a tab with \"\\t\" or perhaps two spaces with \"  \".\n\tIndent string\n\n\t// MaxDepth controls the maximum number of levels to descend into nested\n\t// data structures.  The default, 0, means there is no limit.\n\t//\n\t// NOTE: Circular data structures are properly detected, so it is not\n\t// necessary to set this value unless you specifically want to limit deeply\n\t// nested data structures.\n\tMaxDepth int\n\n\t// DisableMethods specifies whether or not error and Stringer interfaces are\n\t// invoked for types that implement them.\n\tDisableMethods bool\n\n\t// DisablePointerMethods specifies whether or not to check for and invoke\n\t// error and Stringer interfaces on types which only accept a pointer\n\t// receiver when the current type is not a pointer.\n\t//\n\t// NOTE: This might be an unsafe action since calling one of these methods\n\t// with a pointer receiver could technically mutate the value, however,\n\t// in practice, types which choose to satisify an error or Stringer\n\t// interface with a pointer receiver should not be mutating their state\n\t// inside these interface methods.  As a result, this option relies on\n\t// access to the unsafe package, so it will not have any effect when\n\t// running in environments without access to the unsafe package such as\n\t// Google App Engine or with the \"safe\" build tag specified.\n\tDisablePointerMethods bool\n\n\t// DisablePointerAddresses specifies whether to disable the printing of\n\t// pointer addresses. This is useful when diffing data structures in tests.\n\tDisablePointerAddresses bool\n\n\t// DisableCapacities specifies whether to disable the printing of capacities\n\t// for arrays, slices, maps and channels. This is useful when diffing\n\t// data structures in tests.\n\tDisableCapacities bool\n\n\t// ContinueOnMethod specifies whether or not recursion should continue once\n\t// a custom error or Stringer interface is invoked.  The default, false,\n\t// means it will print the results of invoking the custom error or Stringer\n\t// interface and return immediately instead of continuing to recurse into\n\t// the internals of the data type.\n\t//\n\t// NOTE: This flag does not have any effect if method invocation is disabled\n\t// via the DisableMethods or DisablePointerMethods options.\n\tContinueOnMethod bool\n\n\t// SortKeys specifies map keys should be sorted before being printed. Use\n\t// this to have a more deterministic, diffable output.  Note that only\n\t// native types (bool, int, uint, floats, uintptr and string) and types\n\t// that support the error or Stringer interfaces (if methods are\n\t// enabled) are supported, with other types sorted according to the\n\t// reflect.Value.String() output which guarantees display stability.\n\tSortKeys bool\n\n\t// SpewKeys specifies that, as a last resort attempt, map keys should\n\t// be spewed to strings and sorted by those strings.  This is only\n\t// considered if SortKeys is true.\n\tSpewKeys bool\n}\n\n// Config is the active configuration of the top-level functions.\n// The configuration can be changed by modifying the contents of spew.Config.\nvar Config = ConfigState{Indent: \" \"}\n\n// Errorf is a wrapper for fmt.Errorf that treats each argument as if it were\n// passed with a Formatter interface returned by c.NewFormatter.  It returns\n// the formatted string as a value that satisfies error.  See NewFormatter\n// for formatting details.\n//\n// This function is shorthand for the following syntax:\n//\n//\tfmt.Errorf(format, c.NewFormatter(a), c.NewFormatter(b))\nfunc (c *ConfigState) Errorf(format string, a ...interface{}) (err error) {\n\treturn fmt.Errorf(format, c.convertArgs(a)...)\n}\n\n// Fprint is a wrapper for fmt.Fprint that treats each argument as if it were\n// passed with a Formatter interface returned by c.NewFormatter.  It returns\n// the number of bytes written and any write error encountered.  See\n// NewFormatter for formatting details.\n//\n// This function is shorthand for the following syntax:\n//\n//\tfmt.Fprint(w, c.NewFormatter(a), c.NewFormatter(b))\nfunc (c *ConfigState) Fprint(w io.Writer, a ...interface{}) (n int, err error) {\n\treturn fmt.Fprint(w, c.convertArgs(a)...)\n}\n\n// Fprintf is a wrapper for fmt.Fprintf that treats each argument as if it were\n// passed with a Formatter interface returned by c.NewFormatter.  It returns\n// the number of bytes written and any write error encountered.  See\n// NewFormatter for formatting details.\n//\n// This function is shorthand for the following syntax:\n//\n//\tfmt.Fprintf(w, format, c.NewFormatter(a), c.NewFormatter(b))\nfunc (c *ConfigState) Fprintf(w io.Writer, format string, a ...interface{}) (n int, err error) {\n\treturn fmt.Fprintf(w, format, c.convertArgs(a)...)\n}\n\n// Fprintln is a wrapper for fmt.Fprintln that treats each argument as if it\n// passed with a Formatter interface returned by c.NewFormatter.  See\n// NewFormatter for formatting details.\n//\n// This function is shorthand for the following syntax:\n//\n//\tfmt.Fprintln(w, c.NewFormatter(a), c.NewFormatter(b))\nfunc (c *ConfigState) Fprintln(w io.Writer, a ...interface{}) (n int, err error) {\n\treturn fmt.Fprintln(w, c.convertArgs(a)...)\n}\n\n// Print is a wrapper for fmt.Print that treats each argument as if it were\n// passed with a Formatter interface returned by c.NewFormatter.  It returns\n// the number of bytes written and any write error encountered.  See\n// NewFormatter for formatting details.\n//\n// This function is shorthand for the following syntax:\n//\n//\tfmt.Print(c.NewFormatter(a), c.NewFormatter(b))\nfunc (c *ConfigState) Print(a ...interface{}) (n int, err error) {\n\treturn fmt.Print(c.convertArgs(a)...)\n}\n\n// Printf is a wrapper for fmt.Printf that treats each argument as if it were\n// passed with a Formatter interface returned by c.NewFormatter.  It returns\n// the number of bytes written and any write error encountered.  See\n// NewFormatter for formatting details.\n//\n// This function is shorthand for the following syntax:\n//\n//\tfmt.Printf(format, c.NewFormatter(a), c.NewFormatter(b))\nfunc (c *ConfigState) Printf(format string, a ...interface{}) (n int, err error) {\n\treturn fmt.Printf(format, c.convertArgs(a)...)\n}\n\n// Println is a wrapper for fmt.Println that treats each argument as if it were\n// passed with a Formatter interface returned by c.NewFormatter.  It returns\n// the number of bytes written and any write error encountered.  See\n// NewFormatter for formatting details.\n//\n// This function is shorthand for the following syntax:\n//\n//\tfmt.Println(c.NewFormatter(a), c.NewFormatter(b))\nfunc (c *ConfigState) Println(a ...interface{}) (n int, err error) {\n\treturn fmt.Println(c.convertArgs(a)...)\n}\n\n// Sprint is a wrapper for fmt.Sprint that treats each argument as if it were\n// passed with a Formatter interface returned by c.NewFormatter.  It returns\n// the resulting string.  See NewFormatter for formatting details.\n//\n// This function is shorthand for the following syntax:\n//\n//\tfmt.Sprint(c.NewFormatter(a), c.NewFormatter(b))\nfunc (c *ConfigState) Sprint(a ...interface{}) string {\n\treturn fmt.Sprint(c.convertArgs(a)...)\n}\n\n// Sprintf is a wrapper for fmt.Sprintf that treats each argument as if it were\n// passed with a Formatter interface returned by c.NewFormatter.  It returns\n// the resulting string.  See NewFormatter for formatting details.\n//\n// This function is shorthand for the following syntax:\n//\n//\tfmt.Sprintf(format, c.NewFormatter(a), c.NewFormatter(b))\nfunc (c *ConfigState) Sprintf(format string, a ...interface{}) string {\n\treturn fmt.Sprintf(format, c.convertArgs(a)...)\n}\n\n// Sprintln is a wrapper for fmt.Sprintln that treats each argument as if it\n// were passed with a Formatter interface returned by c.NewFormatter.  It\n// returns the resulting string.  See NewFormatter for formatting details.\n//\n// This function is shorthand for the following syntax:\n//\n//\tfmt.Sprintln(c.NewFormatter(a), c.NewFormatter(b))\nfunc (c *ConfigState) Sprintln(a ...interface{}) string {\n\treturn fmt.Sprintln(c.convertArgs(a)...)\n}\n\n/*\nNewFormatter returns a custom formatter that satisfies the fmt.Formatter\ninterface.  As a result, it integrates cleanly with standard fmt package\nprinting functions.  The formatter is useful for inline printing of smaller data\ntypes similar to the standard %v format specifier.\n\nThe custom formatter only responds to the %v (most compact), %+v (adds pointer\naddresses), %#v (adds types), and %#+v (adds types and pointer addresses) verb\ncombinations.  Any other verbs such as %x and %q will be sent to the the\nstandard fmt package for formatting.  In addition, the custom formatter ignores\nthe width and precision arguments (however they will still work on the format\nspecifiers not handled by the custom formatter).\n\nTypically this function shouldn't be called directly.  It is much easier to make\nuse of the custom formatter by calling one of the convenience functions such as\nc.Printf, c.Println, or c.Printf.\n*/\nfunc (c *ConfigState) NewFormatter(v interface{}) fmt.Formatter {\n\treturn newFormatter(c, v)\n}\n\n// Fdump formats and displays the passed arguments to io.Writer w.  It formats\n// exactly the same as Dump.\nfunc (c *ConfigState) Fdump(w io.Writer, a ...interface{}) {\n\tfdump(c, w, a...)\n}\n\n/*\nDump displays the passed parameters to standard out with newlines, customizable\nindentation, and additional debug information such as complete types and all\npointer addresses used to indirect to the final value.  It provides the\nfollowing features over the built-in printing facilities provided by the fmt\npackage:\n\n\t* Pointers are dereferenced and followed\n\t* Circular data structures are detected and handled properly\n\t* Custom Stringer/error interfaces are optionally invoked, including\n\t  on unexported types\n\t* Custom types which only implement the Stringer/error interfaces via\n\t  a pointer receiver are optionally invoked when passing non-pointer\n\t  variables\n\t* Byte arrays and slices are dumped like the hexdump -C command which\n\t  includes offsets, byte values in hex, and ASCII output\n\nThe configuration options are controlled by modifying the public members\nof c.  See ConfigState for options documentation.\n\nSee Fdump if you would prefer dumping to an arbitrary io.Writer or Sdump to\nget the formatted result as a string.\n*/\nfunc (c *ConfigState) Dump(a ...interface{}) {\n\tfdump(c, os.Stdout, a...)\n}\n\n// Sdump returns a string with the passed arguments formatted exactly the same\n// as Dump.\nfunc (c *ConfigState) Sdump(a ...interface{}) string {\n\tvar buf bytes.Buffer\n\tfdump(c, &buf, a...)\n\treturn buf.String()\n}\n\n// convertArgs accepts a slice of arguments and returns a slice of the same\n// length with each argument converted to a spew Formatter interface using\n// the ConfigState associated with s.\nfunc (c *ConfigState) convertArgs(args []interface{}) (formatters []interface{}) {\n\tformatters = make([]interface{}, len(args))\n\tfor index, arg := range args {\n\t\tformatters[index] = newFormatter(c, arg)\n\t}\n\treturn formatters\n}\n\n// NewDefaultConfig returns a ConfigState with the following default settings.\n//\n// \tIndent: \" \"\n// \tMaxDepth: 0\n// \tDisableMethods: false\n// \tDisablePointerMethods: false\n// \tContinueOnMethod: false\n// \tSortKeys: false\nfunc NewDefaultConfig() *ConfigState {\n\treturn &ConfigState{Indent: \" \"}\n}\n"
  },
  {
    "path": "vendor/github.com/davecgh/go-spew/spew/doc.go",
    "content": "/*\n * Copyright (c) 2013-2016 Dave Collins <dave@davec.name>\n *\n * Permission to use, copy, modify, and distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n */\n\n/*\nPackage spew implements a deep pretty printer for Go data structures to aid in\ndebugging.\n\nA quick overview of the additional features spew provides over the built-in\nprinting facilities for Go data types are as follows:\n\n\t* Pointers are dereferenced and followed\n\t* Circular data structures are detected and handled properly\n\t* Custom Stringer/error interfaces are optionally invoked, including\n\t  on unexported types\n\t* Custom types which only implement the Stringer/error interfaces via\n\t  a pointer receiver are optionally invoked when passing non-pointer\n\t  variables\n\t* Byte arrays and slices are dumped like the hexdump -C command which\n\t  includes offsets, byte values in hex, and ASCII output (only when using\n\t  Dump style)\n\nThere are two different approaches spew allows for dumping Go data structures:\n\n\t* Dump style which prints with newlines, customizable indentation,\n\t  and additional debug information such as types and all pointer addresses\n\t  used to indirect to the final value\n\t* A custom Formatter interface that integrates cleanly with the standard fmt\n\t  package and replaces %v, %+v, %#v, and %#+v to provide inline printing\n\t  similar to the default %v while providing the additional functionality\n\t  outlined above and passing unsupported format verbs such as %x and %q\n\t  along to fmt\n\nQuick Start\n\nThis section demonstrates how to quickly get started with spew.  See the\nsections below for further details on formatting and configuration options.\n\nTo dump a variable with full newlines, indentation, type, and pointer\ninformation use Dump, Fdump, or Sdump:\n\tspew.Dump(myVar1, myVar2, ...)\n\tspew.Fdump(someWriter, myVar1, myVar2, ...)\n\tstr := spew.Sdump(myVar1, myVar2, ...)\n\nAlternatively, if you would prefer to use format strings with a compacted inline\nprinting style, use the convenience wrappers Printf, Fprintf, etc with\n%v (most compact), %+v (adds pointer addresses), %#v (adds types), or\n%#+v (adds types and pointer addresses):\n\tspew.Printf(\"myVar1: %v -- myVar2: %+v\", myVar1, myVar2)\n\tspew.Printf(\"myVar3: %#v -- myVar4: %#+v\", myVar3, myVar4)\n\tspew.Fprintf(someWriter, \"myVar1: %v -- myVar2: %+v\", myVar1, myVar2)\n\tspew.Fprintf(someWriter, \"myVar3: %#v -- myVar4: %#+v\", myVar3, myVar4)\n\nConfiguration Options\n\nConfiguration of spew is handled by fields in the ConfigState type.  For\nconvenience, all of the top-level functions use a global state available\nvia the spew.Config global.\n\nIt is also possible to create a ConfigState instance that provides methods\nequivalent to the top-level functions.  This allows concurrent configuration\noptions.  See the ConfigState documentation for more details.\n\nThe following configuration options are available:\n\t* Indent\n\t\tString to use for each indentation level for Dump functions.\n\t\tIt is a single space by default.  A popular alternative is \"\\t\".\n\n\t* MaxDepth\n\t\tMaximum number of levels to descend into nested data structures.\n\t\tThere is no limit by default.\n\n\t* DisableMethods\n\t\tDisables invocation of error and Stringer interface methods.\n\t\tMethod invocation is enabled by default.\n\n\t* DisablePointerMethods\n\t\tDisables invocation of error and Stringer interface methods on types\n\t\twhich only accept pointer receivers from non-pointer variables.\n\t\tPointer method invocation is enabled by default.\n\n\t* DisablePointerAddresses\n\t\tDisablePointerAddresses specifies whether to disable the printing of\n\t\tpointer addresses. This is useful when diffing data structures in tests.\n\n\t* DisableCapacities\n\t\tDisableCapacities specifies whether to disable the printing of\n\t\tcapacities for arrays, slices, maps and channels. This is useful when\n\t\tdiffing data structures in tests.\n\n\t* ContinueOnMethod\n\t\tEnables recursion into types after invoking error and Stringer interface\n\t\tmethods. Recursion after method invocation is disabled by default.\n\n\t* SortKeys\n\t\tSpecifies map keys should be sorted before being printed. Use\n\t\tthis to have a more deterministic, diffable output.  Note that\n\t\tonly native types (bool, int, uint, floats, uintptr and string)\n\t\tand types which implement error or Stringer interfaces are\n\t\tsupported with other types sorted according to the\n\t\treflect.Value.String() output which guarantees display\n\t\tstability.  Natural map order is used by default.\n\n\t* SpewKeys\n\t\tSpecifies that, as a last resort attempt, map keys should be\n\t\tspewed to strings and sorted by those strings.  This is only\n\t\tconsidered if SortKeys is true.\n\nDump Usage\n\nSimply call spew.Dump with a list of variables you want to dump:\n\n\tspew.Dump(myVar1, myVar2, ...)\n\nYou may also call spew.Fdump if you would prefer to output to an arbitrary\nio.Writer.  For example, to dump to standard error:\n\n\tspew.Fdump(os.Stderr, myVar1, myVar2, ...)\n\nA third option is to call spew.Sdump to get the formatted output as a string:\n\n\tstr := spew.Sdump(myVar1, myVar2, ...)\n\nSample Dump Output\n\nSee the Dump example for details on the setup of the types and variables being\nshown here.\n\n\t(main.Foo) {\n\t unexportedField: (*main.Bar)(0xf84002e210)({\n\t  flag: (main.Flag) flagTwo,\n\t  data: (uintptr) <nil>\n\t }),\n\t ExportedField: (map[interface {}]interface {}) (len=1) {\n\t  (string) (len=3) \"one\": (bool) true\n\t }\n\t}\n\nByte (and uint8) arrays and slices are displayed uniquely like the hexdump -C\ncommand as shown.\n\t([]uint8) (len=32 cap=32) {\n\t 00000000  11 12 13 14 15 16 17 18  19 1a 1b 1c 1d 1e 1f 20  |............... |\n\t 00000010  21 22 23 24 25 26 27 28  29 2a 2b 2c 2d 2e 2f 30  |!\"#$%&'()*+,-./0|\n\t 00000020  31 32                                             |12|\n\t}\n\nCustom Formatter\n\nSpew provides a custom formatter that implements the fmt.Formatter interface\nso that it integrates cleanly with standard fmt package printing functions. The\nformatter is useful for inline printing of smaller data types similar to the\nstandard %v format specifier.\n\nThe custom formatter only responds to the %v (most compact), %+v (adds pointer\naddresses), %#v (adds types), or %#+v (adds types and pointer addresses) verb\ncombinations.  Any other verbs such as %x and %q will be sent to the the\nstandard fmt package for formatting.  In addition, the custom formatter ignores\nthe width and precision arguments (however they will still work on the format\nspecifiers not handled by the custom formatter).\n\nCustom Formatter Usage\n\nThe simplest way to make use of the spew custom formatter is to call one of the\nconvenience functions such as spew.Printf, spew.Println, or spew.Printf.  The\nfunctions have syntax you are most likely already familiar with:\n\n\tspew.Printf(\"myVar1: %v -- myVar2: %+v\", myVar1, myVar2)\n\tspew.Printf(\"myVar3: %#v -- myVar4: %#+v\", myVar3, myVar4)\n\tspew.Println(myVar, myVar2)\n\tspew.Fprintf(os.Stderr, \"myVar1: %v -- myVar2: %+v\", myVar1, myVar2)\n\tspew.Fprintf(os.Stderr, \"myVar3: %#v -- myVar4: %#+v\", myVar3, myVar4)\n\nSee the Index for the full list convenience functions.\n\nSample Formatter Output\n\nDouble pointer to a uint8:\n\t  %v: <**>5\n\t %+v: <**>(0xf8400420d0->0xf8400420c8)5\n\t %#v: (**uint8)5\n\t%#+v: (**uint8)(0xf8400420d0->0xf8400420c8)5\n\nPointer to circular struct with a uint8 field and a pointer to itself:\n\t  %v: <*>{1 <*><shown>}\n\t %+v: <*>(0xf84003e260){ui8:1 c:<*>(0xf84003e260)<shown>}\n\t %#v: (*main.circular){ui8:(uint8)1 c:(*main.circular)<shown>}\n\t%#+v: (*main.circular)(0xf84003e260){ui8:(uint8)1 c:(*main.circular)(0xf84003e260)<shown>}\n\nSee the Printf example for details on the setup of variables being shown\nhere.\n\nErrors\n\nSince it is possible for custom Stringer/error interfaces to panic, spew\ndetects them and handles them internally by printing the panic information\ninline with the output.  Since spew is intended to provide deep pretty printing\ncapabilities on structures, it intentionally does not return any errors.\n*/\npackage spew\n"
  },
  {
    "path": "vendor/github.com/davecgh/go-spew/spew/dump.go",
    "content": "/*\n * Copyright (c) 2013-2016 Dave Collins <dave@davec.name>\n *\n * Permission to use, copy, modify, and distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n */\n\npackage spew\n\nimport (\n\t\"bytes\"\n\t\"encoding/hex\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"reflect\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n)\n\nvar (\n\t// uint8Type is a reflect.Type representing a uint8.  It is used to\n\t// convert cgo types to uint8 slices for hexdumping.\n\tuint8Type = reflect.TypeOf(uint8(0))\n\n\t// cCharRE is a regular expression that matches a cgo char.\n\t// It is used to detect character arrays to hexdump them.\n\tcCharRE = regexp.MustCompile(`^.*\\._Ctype_char$`)\n\n\t// cUnsignedCharRE is a regular expression that matches a cgo unsigned\n\t// char.  It is used to detect unsigned character arrays to hexdump\n\t// them.\n\tcUnsignedCharRE = regexp.MustCompile(`^.*\\._Ctype_unsignedchar$`)\n\n\t// cUint8tCharRE is a regular expression that matches a cgo uint8_t.\n\t// It is used to detect uint8_t arrays to hexdump them.\n\tcUint8tCharRE = regexp.MustCompile(`^.*\\._Ctype_uint8_t$`)\n)\n\n// dumpState contains information about the state of a dump operation.\ntype dumpState struct {\n\tw                io.Writer\n\tdepth            int\n\tpointers         map[uintptr]int\n\tignoreNextType   bool\n\tignoreNextIndent bool\n\tcs               *ConfigState\n}\n\n// indent performs indentation according to the depth level and cs.Indent\n// option.\nfunc (d *dumpState) indent() {\n\tif d.ignoreNextIndent {\n\t\td.ignoreNextIndent = false\n\t\treturn\n\t}\n\td.w.Write(bytes.Repeat([]byte(d.cs.Indent), d.depth))\n}\n\n// unpackValue returns values inside of non-nil interfaces when possible.\n// This is useful for data types like structs, arrays, slices, and maps which\n// can contain varying types packed inside an interface.\nfunc (d *dumpState) unpackValue(v reflect.Value) reflect.Value {\n\tif v.Kind() == reflect.Interface && !v.IsNil() {\n\t\tv = v.Elem()\n\t}\n\treturn v\n}\n\n// dumpPtr handles formatting of pointers by indirecting them as necessary.\nfunc (d *dumpState) dumpPtr(v reflect.Value) {\n\t// Remove pointers at or below the current depth from map used to detect\n\t// circular refs.\n\tfor k, depth := range d.pointers {\n\t\tif depth >= d.depth {\n\t\t\tdelete(d.pointers, k)\n\t\t}\n\t}\n\n\t// Keep list of all dereferenced pointers to show later.\n\tpointerChain := make([]uintptr, 0)\n\n\t// Figure out how many levels of indirection there are by dereferencing\n\t// pointers and unpacking interfaces down the chain while detecting circular\n\t// references.\n\tnilFound := false\n\tcycleFound := false\n\tindirects := 0\n\tve := v\n\tfor ve.Kind() == reflect.Ptr {\n\t\tif ve.IsNil() {\n\t\t\tnilFound = true\n\t\t\tbreak\n\t\t}\n\t\tindirects++\n\t\taddr := ve.Pointer()\n\t\tpointerChain = append(pointerChain, addr)\n\t\tif pd, ok := d.pointers[addr]; ok && pd < d.depth {\n\t\t\tcycleFound = true\n\t\t\tindirects--\n\t\t\tbreak\n\t\t}\n\t\td.pointers[addr] = d.depth\n\n\t\tve = ve.Elem()\n\t\tif ve.Kind() == reflect.Interface {\n\t\t\tif ve.IsNil() {\n\t\t\t\tnilFound = true\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tve = ve.Elem()\n\t\t}\n\t}\n\n\t// Display type information.\n\td.w.Write(openParenBytes)\n\td.w.Write(bytes.Repeat(asteriskBytes, indirects))\n\td.w.Write([]byte(ve.Type().String()))\n\td.w.Write(closeParenBytes)\n\n\t// Display pointer information.\n\tif !d.cs.DisablePointerAddresses && len(pointerChain) > 0 {\n\t\td.w.Write(openParenBytes)\n\t\tfor i, addr := range pointerChain {\n\t\t\tif i > 0 {\n\t\t\t\td.w.Write(pointerChainBytes)\n\t\t\t}\n\t\t\tprintHexPtr(d.w, addr)\n\t\t}\n\t\td.w.Write(closeParenBytes)\n\t}\n\n\t// Display dereferenced value.\n\td.w.Write(openParenBytes)\n\tswitch {\n\tcase nilFound:\n\t\td.w.Write(nilAngleBytes)\n\n\tcase cycleFound:\n\t\td.w.Write(circularBytes)\n\n\tdefault:\n\t\td.ignoreNextType = true\n\t\td.dump(ve)\n\t}\n\td.w.Write(closeParenBytes)\n}\n\n// dumpSlice handles formatting of arrays and slices.  Byte (uint8 under\n// reflection) arrays and slices are dumped in hexdump -C fashion.\nfunc (d *dumpState) dumpSlice(v reflect.Value) {\n\t// Determine whether this type should be hex dumped or not.  Also,\n\t// for types which should be hexdumped, try to use the underlying data\n\t// first, then fall back to trying to convert them to a uint8 slice.\n\tvar buf []uint8\n\tdoConvert := false\n\tdoHexDump := false\n\tnumEntries := v.Len()\n\tif numEntries > 0 {\n\t\tvt := v.Index(0).Type()\n\t\tvts := vt.String()\n\t\tswitch {\n\t\t// C types that need to be converted.\n\t\tcase cCharRE.MatchString(vts):\n\t\t\tfallthrough\n\t\tcase cUnsignedCharRE.MatchString(vts):\n\t\t\tfallthrough\n\t\tcase cUint8tCharRE.MatchString(vts):\n\t\t\tdoConvert = true\n\n\t\t// Try to use existing uint8 slices and fall back to converting\n\t\t// and copying if that fails.\n\t\tcase vt.Kind() == reflect.Uint8:\n\t\t\t// We need an addressable interface to convert the type\n\t\t\t// to a byte slice.  However, the reflect package won't\n\t\t\t// give us an interface on certain things like\n\t\t\t// unexported struct fields in order to enforce\n\t\t\t// visibility rules.  We use unsafe, when available, to\n\t\t\t// bypass these restrictions since this package does not\n\t\t\t// mutate the values.\n\t\t\tvs := v\n\t\t\tif !vs.CanInterface() || !vs.CanAddr() {\n\t\t\t\tvs = unsafeReflectValue(vs)\n\t\t\t}\n\t\t\tif !UnsafeDisabled {\n\t\t\t\tvs = vs.Slice(0, numEntries)\n\n\t\t\t\t// Use the existing uint8 slice if it can be\n\t\t\t\t// type asserted.\n\t\t\t\tiface := vs.Interface()\n\t\t\t\tif slice, ok := iface.([]uint8); ok {\n\t\t\t\t\tbuf = slice\n\t\t\t\t\tdoHexDump = true\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// The underlying data needs to be converted if it can't\n\t\t\t// be type asserted to a uint8 slice.\n\t\t\tdoConvert = true\n\t\t}\n\n\t\t// Copy and convert the underlying type if needed.\n\t\tif doConvert && vt.ConvertibleTo(uint8Type) {\n\t\t\t// Convert and copy each element into a uint8 byte\n\t\t\t// slice.\n\t\t\tbuf = make([]uint8, numEntries)\n\t\t\tfor i := 0; i < numEntries; i++ {\n\t\t\t\tvv := v.Index(i)\n\t\t\t\tbuf[i] = uint8(vv.Convert(uint8Type).Uint())\n\t\t\t}\n\t\t\tdoHexDump = true\n\t\t}\n\t}\n\n\t// Hexdump the entire slice as needed.\n\tif doHexDump {\n\t\tindent := strings.Repeat(d.cs.Indent, d.depth)\n\t\tstr := indent + hex.Dump(buf)\n\t\tstr = strings.Replace(str, \"\\n\", \"\\n\"+indent, -1)\n\t\tstr = strings.TrimRight(str, d.cs.Indent)\n\t\td.w.Write([]byte(str))\n\t\treturn\n\t}\n\n\t// Recursively call dump for each item.\n\tfor i := 0; i < numEntries; i++ {\n\t\td.dump(d.unpackValue(v.Index(i)))\n\t\tif i < (numEntries - 1) {\n\t\t\td.w.Write(commaNewlineBytes)\n\t\t} else {\n\t\t\td.w.Write(newlineBytes)\n\t\t}\n\t}\n}\n\n// dump is the main workhorse for dumping a value.  It uses the passed reflect\n// value to figure out what kind of object we are dealing with and formats it\n// appropriately.  It is a recursive function, however circular data structures\n// are detected and handled properly.\nfunc (d *dumpState) dump(v reflect.Value) {\n\t// Handle invalid reflect values immediately.\n\tkind := v.Kind()\n\tif kind == reflect.Invalid {\n\t\td.w.Write(invalidAngleBytes)\n\t\treturn\n\t}\n\n\t// Handle pointers specially.\n\tif kind == reflect.Ptr {\n\t\td.indent()\n\t\td.dumpPtr(v)\n\t\treturn\n\t}\n\n\t// Print type information unless already handled elsewhere.\n\tif !d.ignoreNextType {\n\t\td.indent()\n\t\td.w.Write(openParenBytes)\n\t\td.w.Write([]byte(v.Type().String()))\n\t\td.w.Write(closeParenBytes)\n\t\td.w.Write(spaceBytes)\n\t}\n\td.ignoreNextType = false\n\n\t// Display length and capacity if the built-in len and cap functions\n\t// work with the value's kind and the len/cap itself is non-zero.\n\tvalueLen, valueCap := 0, 0\n\tswitch v.Kind() {\n\tcase reflect.Array, reflect.Slice, reflect.Chan:\n\t\tvalueLen, valueCap = v.Len(), v.Cap()\n\tcase reflect.Map, reflect.String:\n\t\tvalueLen = v.Len()\n\t}\n\tif valueLen != 0 || !d.cs.DisableCapacities && valueCap != 0 {\n\t\td.w.Write(openParenBytes)\n\t\tif valueLen != 0 {\n\t\t\td.w.Write(lenEqualsBytes)\n\t\t\tprintInt(d.w, int64(valueLen), 10)\n\t\t}\n\t\tif !d.cs.DisableCapacities && valueCap != 0 {\n\t\t\tif valueLen != 0 {\n\t\t\t\td.w.Write(spaceBytes)\n\t\t\t}\n\t\t\td.w.Write(capEqualsBytes)\n\t\t\tprintInt(d.w, int64(valueCap), 10)\n\t\t}\n\t\td.w.Write(closeParenBytes)\n\t\td.w.Write(spaceBytes)\n\t}\n\n\t// Call Stringer/error interfaces if they exist and the handle methods flag\n\t// is enabled\n\tif !d.cs.DisableMethods {\n\t\tif (kind != reflect.Invalid) && (kind != reflect.Interface) {\n\t\t\tif handled := handleMethods(d.cs, d.w, v); handled {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n\n\tswitch kind {\n\tcase reflect.Invalid:\n\t\t// Do nothing.  We should never get here since invalid has already\n\t\t// been handled above.\n\n\tcase reflect.Bool:\n\t\tprintBool(d.w, v.Bool())\n\n\tcase reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Int:\n\t\tprintInt(d.w, v.Int(), 10)\n\n\tcase reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uint:\n\t\tprintUint(d.w, v.Uint(), 10)\n\n\tcase reflect.Float32:\n\t\tprintFloat(d.w, v.Float(), 32)\n\n\tcase reflect.Float64:\n\t\tprintFloat(d.w, v.Float(), 64)\n\n\tcase reflect.Complex64:\n\t\tprintComplex(d.w, v.Complex(), 32)\n\n\tcase reflect.Complex128:\n\t\tprintComplex(d.w, v.Complex(), 64)\n\n\tcase reflect.Slice:\n\t\tif v.IsNil() {\n\t\t\td.w.Write(nilAngleBytes)\n\t\t\tbreak\n\t\t}\n\t\tfallthrough\n\n\tcase reflect.Array:\n\t\td.w.Write(openBraceNewlineBytes)\n\t\td.depth++\n\t\tif (d.cs.MaxDepth != 0) && (d.depth > d.cs.MaxDepth) {\n\t\t\td.indent()\n\t\t\td.w.Write(maxNewlineBytes)\n\t\t} else {\n\t\t\td.dumpSlice(v)\n\t\t}\n\t\td.depth--\n\t\td.indent()\n\t\td.w.Write(closeBraceBytes)\n\n\tcase reflect.String:\n\t\td.w.Write([]byte(strconv.Quote(v.String())))\n\n\tcase reflect.Interface:\n\t\t// The only time we should get here is for nil interfaces due to\n\t\t// unpackValue calls.\n\t\tif v.IsNil() {\n\t\t\td.w.Write(nilAngleBytes)\n\t\t}\n\n\tcase reflect.Ptr:\n\t\t// Do nothing.  We should never get here since pointers have already\n\t\t// been handled above.\n\n\tcase reflect.Map:\n\t\t// nil maps should be indicated as different than empty maps\n\t\tif v.IsNil() {\n\t\t\td.w.Write(nilAngleBytes)\n\t\t\tbreak\n\t\t}\n\n\t\td.w.Write(openBraceNewlineBytes)\n\t\td.depth++\n\t\tif (d.cs.MaxDepth != 0) && (d.depth > d.cs.MaxDepth) {\n\t\t\td.indent()\n\t\t\td.w.Write(maxNewlineBytes)\n\t\t} else {\n\t\t\tnumEntries := v.Len()\n\t\t\tkeys := v.MapKeys()\n\t\t\tif d.cs.SortKeys {\n\t\t\t\tsortValues(keys, d.cs)\n\t\t\t}\n\t\t\tfor i, key := range keys {\n\t\t\t\td.dump(d.unpackValue(key))\n\t\t\t\td.w.Write(colonSpaceBytes)\n\t\t\t\td.ignoreNextIndent = true\n\t\t\t\td.dump(d.unpackValue(v.MapIndex(key)))\n\t\t\t\tif i < (numEntries - 1) {\n\t\t\t\t\td.w.Write(commaNewlineBytes)\n\t\t\t\t} else {\n\t\t\t\t\td.w.Write(newlineBytes)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\td.depth--\n\t\td.indent()\n\t\td.w.Write(closeBraceBytes)\n\n\tcase reflect.Struct:\n\t\td.w.Write(openBraceNewlineBytes)\n\t\td.depth++\n\t\tif (d.cs.MaxDepth != 0) && (d.depth > d.cs.MaxDepth) {\n\t\t\td.indent()\n\t\t\td.w.Write(maxNewlineBytes)\n\t\t} else {\n\t\t\tvt := v.Type()\n\t\t\tnumFields := v.NumField()\n\t\t\tfor i := 0; i < numFields; i++ {\n\t\t\t\td.indent()\n\t\t\t\tvtf := vt.Field(i)\n\t\t\t\td.w.Write([]byte(vtf.Name))\n\t\t\t\td.w.Write(colonSpaceBytes)\n\t\t\t\td.ignoreNextIndent = true\n\t\t\t\td.dump(d.unpackValue(v.Field(i)))\n\t\t\t\tif i < (numFields - 1) {\n\t\t\t\t\td.w.Write(commaNewlineBytes)\n\t\t\t\t} else {\n\t\t\t\t\td.w.Write(newlineBytes)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\td.depth--\n\t\td.indent()\n\t\td.w.Write(closeBraceBytes)\n\n\tcase reflect.Uintptr:\n\t\tprintHexPtr(d.w, uintptr(v.Uint()))\n\n\tcase reflect.UnsafePointer, reflect.Chan, reflect.Func:\n\t\tprintHexPtr(d.w, v.Pointer())\n\n\t// There were not any other types at the time this code was written, but\n\t// fall back to letting the default fmt package handle it in case any new\n\t// types are added.\n\tdefault:\n\t\tif v.CanInterface() {\n\t\t\tfmt.Fprintf(d.w, \"%v\", v.Interface())\n\t\t} else {\n\t\t\tfmt.Fprintf(d.w, \"%v\", v.String())\n\t\t}\n\t}\n}\n\n// fdump is a helper function to consolidate the logic from the various public\n// methods which take varying writers and config states.\nfunc fdump(cs *ConfigState, w io.Writer, a ...interface{}) {\n\tfor _, arg := range a {\n\t\tif arg == nil {\n\t\t\tw.Write(interfaceBytes)\n\t\t\tw.Write(spaceBytes)\n\t\t\tw.Write(nilAngleBytes)\n\t\t\tw.Write(newlineBytes)\n\t\t\tcontinue\n\t\t}\n\n\t\td := dumpState{w: w, cs: cs}\n\t\td.pointers = make(map[uintptr]int)\n\t\td.dump(reflect.ValueOf(arg))\n\t\td.w.Write(newlineBytes)\n\t}\n}\n\n// Fdump formats and displays the passed arguments to io.Writer w.  It formats\n// exactly the same as Dump.\nfunc Fdump(w io.Writer, a ...interface{}) {\n\tfdump(&Config, w, a...)\n}\n\n// Sdump returns a string with the passed arguments formatted exactly the same\n// as Dump.\nfunc Sdump(a ...interface{}) string {\n\tvar buf bytes.Buffer\n\tfdump(&Config, &buf, a...)\n\treturn buf.String()\n}\n\n/*\nDump displays the passed parameters to standard out with newlines, customizable\nindentation, and additional debug information such as complete types and all\npointer addresses used to indirect to the final value.  It provides the\nfollowing features over the built-in printing facilities provided by the fmt\npackage:\n\n\t* Pointers are dereferenced and followed\n\t* Circular data structures are detected and handled properly\n\t* Custom Stringer/error interfaces are optionally invoked, including\n\t  on unexported types\n\t* Custom types which only implement the Stringer/error interfaces via\n\t  a pointer receiver are optionally invoked when passing non-pointer\n\t  variables\n\t* Byte arrays and slices are dumped like the hexdump -C command which\n\t  includes offsets, byte values in hex, and ASCII output\n\nThe configuration options are controlled by an exported package global,\nspew.Config.  See ConfigState for options documentation.\n\nSee Fdump if you would prefer dumping to an arbitrary io.Writer or Sdump to\nget the formatted result as a string.\n*/\nfunc Dump(a ...interface{}) {\n\tfdump(&Config, os.Stdout, a...)\n}\n"
  },
  {
    "path": "vendor/github.com/davecgh/go-spew/spew/format.go",
    "content": "/*\n * Copyright (c) 2013-2016 Dave Collins <dave@davec.name>\n *\n * Permission to use, copy, modify, and distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n */\n\npackage spew\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"reflect\"\n\t\"strconv\"\n\t\"strings\"\n)\n\n// supportedFlags is a list of all the character flags supported by fmt package.\nconst supportedFlags = \"0-+# \"\n\n// formatState implements the fmt.Formatter interface and contains information\n// about the state of a formatting operation.  The NewFormatter function can\n// be used to get a new Formatter which can be used directly as arguments\n// in standard fmt package printing calls.\ntype formatState struct {\n\tvalue          interface{}\n\tfs             fmt.State\n\tdepth          int\n\tpointers       map[uintptr]int\n\tignoreNextType bool\n\tcs             *ConfigState\n}\n\n// buildDefaultFormat recreates the original format string without precision\n// and width information to pass in to fmt.Sprintf in the case of an\n// unrecognized type.  Unless new types are added to the language, this\n// function won't ever be called.\nfunc (f *formatState) buildDefaultFormat() (format string) {\n\tbuf := bytes.NewBuffer(percentBytes)\n\n\tfor _, flag := range supportedFlags {\n\t\tif f.fs.Flag(int(flag)) {\n\t\t\tbuf.WriteRune(flag)\n\t\t}\n\t}\n\n\tbuf.WriteRune('v')\n\n\tformat = buf.String()\n\treturn format\n}\n\n// constructOrigFormat recreates the original format string including precision\n// and width information to pass along to the standard fmt package.  This allows\n// automatic deferral of all format strings this package doesn't support.\nfunc (f *formatState) constructOrigFormat(verb rune) (format string) {\n\tbuf := bytes.NewBuffer(percentBytes)\n\n\tfor _, flag := range supportedFlags {\n\t\tif f.fs.Flag(int(flag)) {\n\t\t\tbuf.WriteRune(flag)\n\t\t}\n\t}\n\n\tif width, ok := f.fs.Width(); ok {\n\t\tbuf.WriteString(strconv.Itoa(width))\n\t}\n\n\tif precision, ok := f.fs.Precision(); ok {\n\t\tbuf.Write(precisionBytes)\n\t\tbuf.WriteString(strconv.Itoa(precision))\n\t}\n\n\tbuf.WriteRune(verb)\n\n\tformat = buf.String()\n\treturn format\n}\n\n// unpackValue returns values inside of non-nil interfaces when possible and\n// ensures that types for values which have been unpacked from an interface\n// are displayed when the show types flag is also set.\n// This is useful for data types like structs, arrays, slices, and maps which\n// can contain varying types packed inside an interface.\nfunc (f *formatState) unpackValue(v reflect.Value) reflect.Value {\n\tif v.Kind() == reflect.Interface {\n\t\tf.ignoreNextType = false\n\t\tif !v.IsNil() {\n\t\t\tv = v.Elem()\n\t\t}\n\t}\n\treturn v\n}\n\n// formatPtr handles formatting of pointers by indirecting them as necessary.\nfunc (f *formatState) formatPtr(v reflect.Value) {\n\t// Display nil if top level pointer is nil.\n\tshowTypes := f.fs.Flag('#')\n\tif v.IsNil() && (!showTypes || f.ignoreNextType) {\n\t\tf.fs.Write(nilAngleBytes)\n\t\treturn\n\t}\n\n\t// Remove pointers at or below the current depth from map used to detect\n\t// circular refs.\n\tfor k, depth := range f.pointers {\n\t\tif depth >= f.depth {\n\t\t\tdelete(f.pointers, k)\n\t\t}\n\t}\n\n\t// Keep list of all dereferenced pointers to possibly show later.\n\tpointerChain := make([]uintptr, 0)\n\n\t// Figure out how many levels of indirection there are by derferencing\n\t// pointers and unpacking interfaces down the chain while detecting circular\n\t// references.\n\tnilFound := false\n\tcycleFound := false\n\tindirects := 0\n\tve := v\n\tfor ve.Kind() == reflect.Ptr {\n\t\tif ve.IsNil() {\n\t\t\tnilFound = true\n\t\t\tbreak\n\t\t}\n\t\tindirects++\n\t\taddr := ve.Pointer()\n\t\tpointerChain = append(pointerChain, addr)\n\t\tif pd, ok := f.pointers[addr]; ok && pd < f.depth {\n\t\t\tcycleFound = true\n\t\t\tindirects--\n\t\t\tbreak\n\t\t}\n\t\tf.pointers[addr] = f.depth\n\n\t\tve = ve.Elem()\n\t\tif ve.Kind() == reflect.Interface {\n\t\t\tif ve.IsNil() {\n\t\t\t\tnilFound = true\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tve = ve.Elem()\n\t\t}\n\t}\n\n\t// Display type or indirection level depending on flags.\n\tif showTypes && !f.ignoreNextType {\n\t\tf.fs.Write(openParenBytes)\n\t\tf.fs.Write(bytes.Repeat(asteriskBytes, indirects))\n\t\tf.fs.Write([]byte(ve.Type().String()))\n\t\tf.fs.Write(closeParenBytes)\n\t} else {\n\t\tif nilFound || cycleFound {\n\t\t\tindirects += strings.Count(ve.Type().String(), \"*\")\n\t\t}\n\t\tf.fs.Write(openAngleBytes)\n\t\tf.fs.Write([]byte(strings.Repeat(\"*\", indirects)))\n\t\tf.fs.Write(closeAngleBytes)\n\t}\n\n\t// Display pointer information depending on flags.\n\tif f.fs.Flag('+') && (len(pointerChain) > 0) {\n\t\tf.fs.Write(openParenBytes)\n\t\tfor i, addr := range pointerChain {\n\t\t\tif i > 0 {\n\t\t\t\tf.fs.Write(pointerChainBytes)\n\t\t\t}\n\t\t\tprintHexPtr(f.fs, addr)\n\t\t}\n\t\tf.fs.Write(closeParenBytes)\n\t}\n\n\t// Display dereferenced value.\n\tswitch {\n\tcase nilFound:\n\t\tf.fs.Write(nilAngleBytes)\n\n\tcase cycleFound:\n\t\tf.fs.Write(circularShortBytes)\n\n\tdefault:\n\t\tf.ignoreNextType = true\n\t\tf.format(ve)\n\t}\n}\n\n// format is the main workhorse for providing the Formatter interface.  It\n// uses the passed reflect value to figure out what kind of object we are\n// dealing with and formats it appropriately.  It is a recursive function,\n// however circular data structures are detected and handled properly.\nfunc (f *formatState) format(v reflect.Value) {\n\t// Handle invalid reflect values immediately.\n\tkind := v.Kind()\n\tif kind == reflect.Invalid {\n\t\tf.fs.Write(invalidAngleBytes)\n\t\treturn\n\t}\n\n\t// Handle pointers specially.\n\tif kind == reflect.Ptr {\n\t\tf.formatPtr(v)\n\t\treturn\n\t}\n\n\t// Print type information unless already handled elsewhere.\n\tif !f.ignoreNextType && f.fs.Flag('#') {\n\t\tf.fs.Write(openParenBytes)\n\t\tf.fs.Write([]byte(v.Type().String()))\n\t\tf.fs.Write(closeParenBytes)\n\t}\n\tf.ignoreNextType = false\n\n\t// Call Stringer/error interfaces if they exist and the handle methods\n\t// flag is enabled.\n\tif !f.cs.DisableMethods {\n\t\tif (kind != reflect.Invalid) && (kind != reflect.Interface) {\n\t\t\tif handled := handleMethods(f.cs, f.fs, v); handled {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n\n\tswitch kind {\n\tcase reflect.Invalid:\n\t\t// Do nothing.  We should never get here since invalid has already\n\t\t// been handled above.\n\n\tcase reflect.Bool:\n\t\tprintBool(f.fs, v.Bool())\n\n\tcase reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Int:\n\t\tprintInt(f.fs, v.Int(), 10)\n\n\tcase reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uint:\n\t\tprintUint(f.fs, v.Uint(), 10)\n\n\tcase reflect.Float32:\n\t\tprintFloat(f.fs, v.Float(), 32)\n\n\tcase reflect.Float64:\n\t\tprintFloat(f.fs, v.Float(), 64)\n\n\tcase reflect.Complex64:\n\t\tprintComplex(f.fs, v.Complex(), 32)\n\n\tcase reflect.Complex128:\n\t\tprintComplex(f.fs, v.Complex(), 64)\n\n\tcase reflect.Slice:\n\t\tif v.IsNil() {\n\t\t\tf.fs.Write(nilAngleBytes)\n\t\t\tbreak\n\t\t}\n\t\tfallthrough\n\n\tcase reflect.Array:\n\t\tf.fs.Write(openBracketBytes)\n\t\tf.depth++\n\t\tif (f.cs.MaxDepth != 0) && (f.depth > f.cs.MaxDepth) {\n\t\t\tf.fs.Write(maxShortBytes)\n\t\t} else {\n\t\t\tnumEntries := v.Len()\n\t\t\tfor i := 0; i < numEntries; i++ {\n\t\t\t\tif i > 0 {\n\t\t\t\t\tf.fs.Write(spaceBytes)\n\t\t\t\t}\n\t\t\t\tf.ignoreNextType = true\n\t\t\t\tf.format(f.unpackValue(v.Index(i)))\n\t\t\t}\n\t\t}\n\t\tf.depth--\n\t\tf.fs.Write(closeBracketBytes)\n\n\tcase reflect.String:\n\t\tf.fs.Write([]byte(v.String()))\n\n\tcase reflect.Interface:\n\t\t// The only time we should get here is for nil interfaces due to\n\t\t// unpackValue calls.\n\t\tif v.IsNil() {\n\t\t\tf.fs.Write(nilAngleBytes)\n\t\t}\n\n\tcase reflect.Ptr:\n\t\t// Do nothing.  We should never get here since pointers have already\n\t\t// been handled above.\n\n\tcase reflect.Map:\n\t\t// nil maps should be indicated as different than empty maps\n\t\tif v.IsNil() {\n\t\t\tf.fs.Write(nilAngleBytes)\n\t\t\tbreak\n\t\t}\n\n\t\tf.fs.Write(openMapBytes)\n\t\tf.depth++\n\t\tif (f.cs.MaxDepth != 0) && (f.depth > f.cs.MaxDepth) {\n\t\t\tf.fs.Write(maxShortBytes)\n\t\t} else {\n\t\t\tkeys := v.MapKeys()\n\t\t\tif f.cs.SortKeys {\n\t\t\t\tsortValues(keys, f.cs)\n\t\t\t}\n\t\t\tfor i, key := range keys {\n\t\t\t\tif i > 0 {\n\t\t\t\t\tf.fs.Write(spaceBytes)\n\t\t\t\t}\n\t\t\t\tf.ignoreNextType = true\n\t\t\t\tf.format(f.unpackValue(key))\n\t\t\t\tf.fs.Write(colonBytes)\n\t\t\t\tf.ignoreNextType = true\n\t\t\t\tf.format(f.unpackValue(v.MapIndex(key)))\n\t\t\t}\n\t\t}\n\t\tf.depth--\n\t\tf.fs.Write(closeMapBytes)\n\n\tcase reflect.Struct:\n\t\tnumFields := v.NumField()\n\t\tf.fs.Write(openBraceBytes)\n\t\tf.depth++\n\t\tif (f.cs.MaxDepth != 0) && (f.depth > f.cs.MaxDepth) {\n\t\t\tf.fs.Write(maxShortBytes)\n\t\t} else {\n\t\t\tvt := v.Type()\n\t\t\tfor i := 0; i < numFields; i++ {\n\t\t\t\tif i > 0 {\n\t\t\t\t\tf.fs.Write(spaceBytes)\n\t\t\t\t}\n\t\t\t\tvtf := vt.Field(i)\n\t\t\t\tif f.fs.Flag('+') || f.fs.Flag('#') {\n\t\t\t\t\tf.fs.Write([]byte(vtf.Name))\n\t\t\t\t\tf.fs.Write(colonBytes)\n\t\t\t\t}\n\t\t\t\tf.format(f.unpackValue(v.Field(i)))\n\t\t\t}\n\t\t}\n\t\tf.depth--\n\t\tf.fs.Write(closeBraceBytes)\n\n\tcase reflect.Uintptr:\n\t\tprintHexPtr(f.fs, uintptr(v.Uint()))\n\n\tcase reflect.UnsafePointer, reflect.Chan, reflect.Func:\n\t\tprintHexPtr(f.fs, v.Pointer())\n\n\t// There were not any other types at the time this code was written, but\n\t// fall back to letting the default fmt package handle it if any get added.\n\tdefault:\n\t\tformat := f.buildDefaultFormat()\n\t\tif v.CanInterface() {\n\t\t\tfmt.Fprintf(f.fs, format, v.Interface())\n\t\t} else {\n\t\t\tfmt.Fprintf(f.fs, format, v.String())\n\t\t}\n\t}\n}\n\n// Format satisfies the fmt.Formatter interface. See NewFormatter for usage\n// details.\nfunc (f *formatState) Format(fs fmt.State, verb rune) {\n\tf.fs = fs\n\n\t// Use standard formatting for verbs that are not v.\n\tif verb != 'v' {\n\t\tformat := f.constructOrigFormat(verb)\n\t\tfmt.Fprintf(fs, format, f.value)\n\t\treturn\n\t}\n\n\tif f.value == nil {\n\t\tif fs.Flag('#') {\n\t\t\tfs.Write(interfaceBytes)\n\t\t}\n\t\tfs.Write(nilAngleBytes)\n\t\treturn\n\t}\n\n\tf.format(reflect.ValueOf(f.value))\n}\n\n// newFormatter is a helper function to consolidate the logic from the various\n// public methods which take varying config states.\nfunc newFormatter(cs *ConfigState, v interface{}) fmt.Formatter {\n\tfs := &formatState{value: v, cs: cs}\n\tfs.pointers = make(map[uintptr]int)\n\treturn fs\n}\n\n/*\nNewFormatter returns a custom formatter that satisfies the fmt.Formatter\ninterface.  As a result, it integrates cleanly with standard fmt package\nprinting functions.  The formatter is useful for inline printing of smaller data\ntypes similar to the standard %v format specifier.\n\nThe custom formatter only responds to the %v (most compact), %+v (adds pointer\naddresses), %#v (adds types), or %#+v (adds types and pointer addresses) verb\ncombinations.  Any other verbs such as %x and %q will be sent to the the\nstandard fmt package for formatting.  In addition, the custom formatter ignores\nthe width and precision arguments (however they will still work on the format\nspecifiers not handled by the custom formatter).\n\nTypically this function shouldn't be called directly.  It is much easier to make\nuse of the custom formatter by calling one of the convenience functions such as\nPrintf, Println, or Fprintf.\n*/\nfunc NewFormatter(v interface{}) fmt.Formatter {\n\treturn newFormatter(&Config, v)\n}\n"
  },
  {
    "path": "vendor/github.com/davecgh/go-spew/spew/spew.go",
    "content": "/*\n * Copyright (c) 2013-2016 Dave Collins <dave@davec.name>\n *\n * Permission to use, copy, modify, and distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n */\n\npackage spew\n\nimport (\n\t\"fmt\"\n\t\"io\"\n)\n\n// Errorf is a wrapper for fmt.Errorf that treats each argument as if it were\n// passed with a default Formatter interface returned by NewFormatter.  It\n// returns the formatted string as a value that satisfies error.  See\n// NewFormatter for formatting details.\n//\n// This function is shorthand for the following syntax:\n//\n//\tfmt.Errorf(format, spew.NewFormatter(a), spew.NewFormatter(b))\nfunc Errorf(format string, a ...interface{}) (err error) {\n\treturn fmt.Errorf(format, convertArgs(a)...)\n}\n\n// Fprint is a wrapper for fmt.Fprint that treats each argument as if it were\n// passed with a default Formatter interface returned by NewFormatter.  It\n// returns the number of bytes written and any write error encountered.  See\n// NewFormatter for formatting details.\n//\n// This function is shorthand for the following syntax:\n//\n//\tfmt.Fprint(w, spew.NewFormatter(a), spew.NewFormatter(b))\nfunc Fprint(w io.Writer, a ...interface{}) (n int, err error) {\n\treturn fmt.Fprint(w, convertArgs(a)...)\n}\n\n// Fprintf is a wrapper for fmt.Fprintf that treats each argument as if it were\n// passed with a default Formatter interface returned by NewFormatter.  It\n// returns the number of bytes written and any write error encountered.  See\n// NewFormatter for formatting details.\n//\n// This function is shorthand for the following syntax:\n//\n//\tfmt.Fprintf(w, format, spew.NewFormatter(a), spew.NewFormatter(b))\nfunc Fprintf(w io.Writer, format string, a ...interface{}) (n int, err error) {\n\treturn fmt.Fprintf(w, format, convertArgs(a)...)\n}\n\n// Fprintln is a wrapper for fmt.Fprintln that treats each argument as if it\n// passed with a default Formatter interface returned by NewFormatter.  See\n// NewFormatter for formatting details.\n//\n// This function is shorthand for the following syntax:\n//\n//\tfmt.Fprintln(w, spew.NewFormatter(a), spew.NewFormatter(b))\nfunc Fprintln(w io.Writer, a ...interface{}) (n int, err error) {\n\treturn fmt.Fprintln(w, convertArgs(a)...)\n}\n\n// Print is a wrapper for fmt.Print that treats each argument as if it were\n// passed with a default Formatter interface returned by NewFormatter.  It\n// returns the number of bytes written and any write error encountered.  See\n// NewFormatter for formatting details.\n//\n// This function is shorthand for the following syntax:\n//\n//\tfmt.Print(spew.NewFormatter(a), spew.NewFormatter(b))\nfunc Print(a ...interface{}) (n int, err error) {\n\treturn fmt.Print(convertArgs(a)...)\n}\n\n// Printf is a wrapper for fmt.Printf that treats each argument as if it were\n// passed with a default Formatter interface returned by NewFormatter.  It\n// returns the number of bytes written and any write error encountered.  See\n// NewFormatter for formatting details.\n//\n// This function is shorthand for the following syntax:\n//\n//\tfmt.Printf(format, spew.NewFormatter(a), spew.NewFormatter(b))\nfunc Printf(format string, a ...interface{}) (n int, err error) {\n\treturn fmt.Printf(format, convertArgs(a)...)\n}\n\n// Println is a wrapper for fmt.Println that treats each argument as if it were\n// passed with a default Formatter interface returned by NewFormatter.  It\n// returns the number of bytes written and any write error encountered.  See\n// NewFormatter for formatting details.\n//\n// This function is shorthand for the following syntax:\n//\n//\tfmt.Println(spew.NewFormatter(a), spew.NewFormatter(b))\nfunc Println(a ...interface{}) (n int, err error) {\n\treturn fmt.Println(convertArgs(a)...)\n}\n\n// Sprint is a wrapper for fmt.Sprint that treats each argument as if it were\n// passed with a default Formatter interface returned by NewFormatter.  It\n// returns the resulting string.  See NewFormatter for formatting details.\n//\n// This function is shorthand for the following syntax:\n//\n//\tfmt.Sprint(spew.NewFormatter(a), spew.NewFormatter(b))\nfunc Sprint(a ...interface{}) string {\n\treturn fmt.Sprint(convertArgs(a)...)\n}\n\n// Sprintf is a wrapper for fmt.Sprintf that treats each argument as if it were\n// passed with a default Formatter interface returned by NewFormatter.  It\n// returns the resulting string.  See NewFormatter for formatting details.\n//\n// This function is shorthand for the following syntax:\n//\n//\tfmt.Sprintf(format, spew.NewFormatter(a), spew.NewFormatter(b))\nfunc Sprintf(format string, a ...interface{}) string {\n\treturn fmt.Sprintf(format, convertArgs(a)...)\n}\n\n// Sprintln is a wrapper for fmt.Sprintln that treats each argument as if it\n// were passed with a default Formatter interface returned by NewFormatter.  It\n// returns the resulting string.  See NewFormatter for formatting details.\n//\n// This function is shorthand for the following syntax:\n//\n//\tfmt.Sprintln(spew.NewFormatter(a), spew.NewFormatter(b))\nfunc Sprintln(a ...interface{}) string {\n\treturn fmt.Sprintln(convertArgs(a)...)\n}\n\n// convertArgs accepts a slice of arguments and returns a slice of the same\n// length with each argument converted to a default spew Formatter interface.\nfunc convertArgs(args []interface{}) (formatters []interface{}) {\n\tformatters = make([]interface{}, len(args))\n\tfor index, arg := range args {\n\t\tformatters[index] = NewFormatter(arg)\n\t}\n\treturn formatters\n}\n"
  },
  {
    "path": "vendor/github.com/fsnotify/fsnotify/.cirrus.yml",
    "content": "freebsd_task:\n  name: 'FreeBSD'\n  freebsd_instance:\n    image_family: freebsd-13-2\n  install_script:\n    - pkg update -f\n    - pkg install -y go\n  test_script:\n      # run tests as user \"cirrus\" instead of root\n    - pw useradd cirrus -m\n    - chown -R cirrus:cirrus .\n    - FSNOTIFY_BUFFER=4096 sudo --preserve-env=FSNOTIFY_BUFFER -u cirrus go test -parallel 1 -race ./...\n    -                      sudo --preserve-env=FSNOTIFY_BUFFER -u cirrus go test -parallel 1 -race ./...\n"
  },
  {
    "path": "vendor/github.com/fsnotify/fsnotify/.editorconfig",
    "content": "root = true\n\n[*.go]\nindent_style = tab\nindent_size = 4\ninsert_final_newline = true\n\n[*.{yml,yaml}]\nindent_style = space\nindent_size = 2\ninsert_final_newline = true\ntrim_trailing_whitespace = true\n"
  },
  {
    "path": "vendor/github.com/fsnotify/fsnotify/.gitattributes",
    "content": "go.sum linguist-generated\n"
  },
  {
    "path": "vendor/github.com/fsnotify/fsnotify/.gitignore",
    "content": "# go test -c output\n*.test\n*.test.exe\n\n# Output of go build ./cmd/fsnotify\n/fsnotify\n/fsnotify.exe\n"
  },
  {
    "path": "vendor/github.com/fsnotify/fsnotify/.mailmap",
    "content": "Chris Howey <howeyc@gmail.com> <chris@howey.me>\nNathan Youngman <git@nathany.com> <4566+nathany@users.noreply.github.com>\n"
  },
  {
    "path": "vendor/github.com/fsnotify/fsnotify/CHANGELOG.md",
    "content": "# Changelog\n\nUnreleased\n----------\nNothing yet.\n\n1.7.0 - 2023-10-22\n------------------\nThis version of fsnotify needs Go 1.17.\n\n### Additions\n\n- illumos: add FEN backend to support illumos and Solaris. ([#371])\n\n- all: add `NewBufferedWatcher()` to use a buffered channel, which can be useful\n  in cases where you can't control the kernel buffer and receive a large number\n  of events in bursts. ([#550], [#572])\n\n- all: add `AddWith()`, which is identical to `Add()` but allows passing\n  options. ([#521])\n\n- windows: allow setting the ReadDirectoryChangesW() buffer size with\n  `fsnotify.WithBufferSize()`; the default of 64K is the highest value that\n  works on all platforms and is enough for most purposes, but in some cases a\n  highest buffer is needed. ([#521])\n\n### Changes and fixes\n\n- inotify: remove watcher if a watched path is renamed ([#518])\n\n  After a rename the reported name wasn't updated, or even an empty string.\n  Inotify doesn't provide any good facilities to update it, so just remove the\n  watcher. This is already how it worked on kqueue and FEN.\n\n  On Windows this does work, and remains working.\n\n- windows: don't listen for file attribute changes ([#520])\n\n  File attribute changes are sent as `FILE_ACTION_MODIFIED` by the Windows API,\n  with no way to see if they're a file write or attribute change, so would show\n  up as a fsnotify.Write event. This is never useful, and could result in many\n  spurious Write events.\n\n- windows: return `ErrEventOverflow` if the buffer is full ([#525])\n\n  Before it would merely return \"short read\", making it hard to detect this\n  error.\n\n- kqueue: make sure events for all files are delivered properly when removing a\n  watched directory ([#526])\n\n  Previously they would get sent with `\"\"` (empty string) or `\".\"` as the path\n  name.\n\n- kqueue: don't emit spurious Create events for symbolic links ([#524])\n\n  The link would get resolved but kqueue would \"forget\" it already saw the link\n  itself, resulting on a Create for every Write event for the directory.\n\n- all: return `ErrClosed` on `Add()` when the watcher is closed ([#516])\n\n- other: add `Watcher.Errors` and `Watcher.Events` to the no-op `Watcher` in\n  `backend_other.go`, making it easier to use on unsupported platforms such as\n  WASM, AIX, etc. ([#528])\n\n- other: use the `backend_other.go` no-op if the `appengine` build tag is set;\n  Google AppEngine forbids usage of the unsafe package so the inotify backend\n  won't compile there.\n\n[#371]: https://github.com/fsnotify/fsnotify/pull/371\n[#516]: https://github.com/fsnotify/fsnotify/pull/516\n[#518]: https://github.com/fsnotify/fsnotify/pull/518\n[#520]: https://github.com/fsnotify/fsnotify/pull/520\n[#521]: https://github.com/fsnotify/fsnotify/pull/521\n[#524]: https://github.com/fsnotify/fsnotify/pull/524\n[#525]: https://github.com/fsnotify/fsnotify/pull/525\n[#526]: https://github.com/fsnotify/fsnotify/pull/526\n[#528]: https://github.com/fsnotify/fsnotify/pull/528\n[#537]: https://github.com/fsnotify/fsnotify/pull/537\n[#550]: https://github.com/fsnotify/fsnotify/pull/550\n[#572]: https://github.com/fsnotify/fsnotify/pull/572\n\n1.6.0 - 2022-10-13\n------------------\nThis version of fsnotify needs Go 1.16 (this was already the case since 1.5.1,\nbut not documented). It also increases the minimum Linux version to 2.6.32.\n\n### Additions\n\n- all: add `Event.Has()` and `Op.Has()` ([#477])\n\n  This makes checking events a lot easier; for example:\n\n\t    if event.Op&Write == Write && !(event.Op&Remove == Remove) {\n\t    }\n\n\tBecomes:\n\n\t    if event.Has(Write) && !event.Has(Remove) {\n\t    }\n\n- all: add cmd/fsnotify ([#463])\n\n  A command-line utility for testing and some examples.\n\n### Changes and fixes\n\n- inotify: don't ignore events for files that don't exist ([#260], [#470])\n\n  Previously the inotify watcher would call `os.Lstat()` to check if a file\n  still exists before emitting events.\n\n  This was inconsistent with other platforms and resulted in inconsistent event\n  reporting (e.g. when a file is quickly removed and re-created), and generally\n  a source of confusion. It was added in 2013 to fix a memory leak that no\n  longer exists.\n\n- all: return `ErrNonExistentWatch` when `Remove()` is called on a path that's\n  not watched ([#460])\n\n- inotify: replace epoll() with non-blocking inotify ([#434])\n\n  Non-blocking inotify was not generally available at the time this library was\n  written in 2014, but now it is. As a result, the minimum Linux version is\n  bumped from 2.6.27 to 2.6.32. This hugely simplifies the code and is faster.\n\n- kqueue: don't check for events every 100ms ([#480])\n\n  The watcher would wake up every 100ms, even when there was nothing to do. Now\n  it waits until there is something to do.\n\n- macos: retry opening files on EINTR ([#475])\n\n- kqueue: skip unreadable files ([#479])\n\n  kqueue requires a file descriptor for every file in a directory; this would\n  fail if a file was unreadable by the current user. Now these files are simply\n  skipped.\n\n- windows: fix renaming a watched directory if the parent is also watched ([#370])\n\n- windows: increase buffer size from 4K to 64K ([#485])\n\n- windows: close file handle on Remove() ([#288])\n\n- kqueue: put pathname in the error if watching a file fails ([#471])\n\n- inotify, windows: calling Close() more than once could race ([#465])\n\n- kqueue: improve Close() performance ([#233])\n\n- all: various documentation additions and clarifications.\n\n[#233]: https://github.com/fsnotify/fsnotify/pull/233\n[#260]: https://github.com/fsnotify/fsnotify/pull/260\n[#288]: https://github.com/fsnotify/fsnotify/pull/288\n[#370]: https://github.com/fsnotify/fsnotify/pull/370\n[#434]: https://github.com/fsnotify/fsnotify/pull/434\n[#460]: https://github.com/fsnotify/fsnotify/pull/460\n[#463]: https://github.com/fsnotify/fsnotify/pull/463\n[#465]: https://github.com/fsnotify/fsnotify/pull/465\n[#470]: https://github.com/fsnotify/fsnotify/pull/470\n[#471]: https://github.com/fsnotify/fsnotify/pull/471\n[#475]: https://github.com/fsnotify/fsnotify/pull/475\n[#477]: https://github.com/fsnotify/fsnotify/pull/477\n[#479]: https://github.com/fsnotify/fsnotify/pull/479\n[#480]: https://github.com/fsnotify/fsnotify/pull/480\n[#485]: https://github.com/fsnotify/fsnotify/pull/485\n\n## [1.5.4] - 2022-04-25\n\n* Windows: add missing defer to `Watcher.WatchList` [#447](https://github.com/fsnotify/fsnotify/pull/447)\n* go.mod: use latest x/sys [#444](https://github.com/fsnotify/fsnotify/pull/444)\n* Fix compilation for OpenBSD [#443](https://github.com/fsnotify/fsnotify/pull/443)\n\n## [1.5.3] - 2022-04-22\n\n* This version is retracted. An incorrect branch is published accidentally [#445](https://github.com/fsnotify/fsnotify/issues/445)\n\n## [1.5.2] - 2022-04-21\n\n* Add a feature to return the directories and files that are being monitored [#374](https://github.com/fsnotify/fsnotify/pull/374)\n* Fix potential crash on windows if `raw.FileNameLength` exceeds `syscall.MAX_PATH` [#361](https://github.com/fsnotify/fsnotify/pull/361)\n* Allow build on unsupported GOOS [#424](https://github.com/fsnotify/fsnotify/pull/424)\n* Don't set `poller.fd` twice in `newFdPoller` [#406](https://github.com/fsnotify/fsnotify/pull/406)\n* fix go vet warnings: call to `(*T).Fatalf` from a non-test goroutine [#416](https://github.com/fsnotify/fsnotify/pull/416)\n\n## [1.5.1] - 2021-08-24\n\n* Revert Add AddRaw to not follow symlinks [#394](https://github.com/fsnotify/fsnotify/pull/394)\n\n## [1.5.0] - 2021-08-20\n\n* Go: Increase minimum required version to Go 1.12 [#381](https://github.com/fsnotify/fsnotify/pull/381)\n* Feature: Add AddRaw method which does not follow symlinks when adding a watch [#289](https://github.com/fsnotify/fsnotify/pull/298)\n* Windows: Follow symlinks by default like on all other systems [#289](https://github.com/fsnotify/fsnotify/pull/289)\n* CI: Use GitHub Actions for CI and cover go 1.12-1.17\n   [#378](https://github.com/fsnotify/fsnotify/pull/378)\n   [#381](https://github.com/fsnotify/fsnotify/pull/381)\n   [#385](https://github.com/fsnotify/fsnotify/pull/385)\n* Go 1.14+: Fix unsafe pointer conversion [#325](https://github.com/fsnotify/fsnotify/pull/325)\n\n## [1.4.9] - 2020-03-11\n\n* Move example usage to the readme #329. This may resolve #328.\n\n## [1.4.8] - 2020-03-10\n\n* CI: test more go versions (@nathany 1d13583d846ea9d66dcabbfefbfb9d8e6fb05216)\n* Tests: Queued inotify events could have been read by the test before max_queued_events was hit (@matthias-stone #265)\n* Tests:  t.Fatalf -> t.Errorf in go routines (@gdey #266)\n* CI: Less verbosity (@nathany #267)\n* Tests: Darwin: Exchangedata is deprecated on 10.13 (@nathany #267)\n* Tests: Check if channels are closed in the example (@alexeykazakov #244)\n* CI: Only run golint on latest version of go and fix issues (@cpuguy83 #284)\n* CI: Add windows to travis matrix (@cpuguy83 #284)\n* Docs: Remover appveyor badge (@nathany 11844c0959f6fff69ba325d097fce35bd85a8e93)\n* Linux: create epoll and pipe fds with close-on-exec (@JohannesEbke #219)\n* Linux: open files with close-on-exec (@linxiulei #273)\n* Docs: Plan to support fanotify (@nathany ab058b44498e8b7566a799372a39d150d9ea0119 )\n* Project: Add go.mod (@nathany #309)\n* Project: Revise editor config (@nathany #309)\n* Project: Update copyright for 2019 (@nathany #309)\n* CI: Drop go1.8 from CI matrix (@nathany #309)\n* Docs: Updating the FAQ section for supportability with NFS & FUSE filesystems (@Pratik32 4bf2d1fec78374803a39307bfb8d340688f4f28e )\n\n## [1.4.7] - 2018-01-09\n\n* BSD/macOS: Fix possible deadlock on closing the watcher on kqueue (thanks @nhooyr and @glycerine)\n* Tests: Fix missing verb on format string (thanks @rchiossi)\n* Linux: Fix deadlock in Remove (thanks @aarondl)\n* Linux: Watch.Add improvements (avoid race, fix consistency, reduce garbage) (thanks @twpayne)\n* Docs: Moved FAQ into the README (thanks @vahe)\n* Linux: Properly handle inotify's IN_Q_OVERFLOW event (thanks @zeldovich)\n* Docs: replace references to OS X with macOS\n\n## [1.4.2] - 2016-10-10\n\n* Linux: use InotifyInit1 with IN_CLOEXEC to stop leaking a file descriptor to a child process when using fork/exec [#178](https://github.com/fsnotify/fsnotify/pull/178) (thanks @pattyshack)\n\n## [1.4.1] - 2016-10-04\n\n* Fix flaky inotify stress test on Linux [#177](https://github.com/fsnotify/fsnotify/pull/177) (thanks @pattyshack)\n\n## [1.4.0] - 2016-10-01\n\n* add a String() method to Event.Op [#165](https://github.com/fsnotify/fsnotify/pull/165) (thanks @oozie)\n\n## [1.3.1] - 2016-06-28\n\n* Windows: fix for double backslash when watching the root of a drive [#151](https://github.com/fsnotify/fsnotify/issues/151) (thanks @brunoqc)\n\n## [1.3.0] - 2016-04-19\n\n* Support linux/arm64 by [patching](https://go-review.googlesource.com/#/c/21971/) x/sys/unix and switching to to it from syscall (thanks @suihkulokki) [#135](https://github.com/fsnotify/fsnotify/pull/135)\n\n## [1.2.10] - 2016-03-02\n\n* Fix golint errors in windows.go [#121](https://github.com/fsnotify/fsnotify/pull/121) (thanks @tiffanyfj)\n\n## [1.2.9] - 2016-01-13\n\nkqueue: Fix logic for CREATE after REMOVE [#111](https://github.com/fsnotify/fsnotify/pull/111) (thanks @bep)\n\n## [1.2.8] - 2015-12-17\n\n* kqueue: fix race condition in Close [#105](https://github.com/fsnotify/fsnotify/pull/105) (thanks @djui for reporting the issue and @ppknap for writing a failing test)\n* inotify: fix race in test\n* enable race detection for continuous integration (Linux, Mac, Windows)\n\n## [1.2.5] - 2015-10-17\n\n* inotify: use epoll_create1 for arm64 support (requires Linux 2.6.27 or later) [#100](https://github.com/fsnotify/fsnotify/pull/100) (thanks @suihkulokki)\n* inotify: fix path leaks [#73](https://github.com/fsnotify/fsnotify/pull/73) (thanks @chamaken)\n* kqueue: watch for rename events on subdirectories [#83](https://github.com/fsnotify/fsnotify/pull/83) (thanks @guotie)\n* kqueue: avoid infinite loops from symlinks cycles [#101](https://github.com/fsnotify/fsnotify/pull/101) (thanks @illicitonion)\n\n## [1.2.1] - 2015-10-14\n\n* kqueue: don't watch named pipes [#98](https://github.com/fsnotify/fsnotify/pull/98) (thanks @evanphx)\n\n## [1.2.0] - 2015-02-08\n\n* inotify: use epoll to wake up readEvents [#66](https://github.com/fsnotify/fsnotify/pull/66) (thanks @PieterD)\n* inotify: closing watcher should now always shut down goroutine [#63](https://github.com/fsnotify/fsnotify/pull/63) (thanks @PieterD)\n* kqueue: close kqueue after removing watches, fixes [#59](https://github.com/fsnotify/fsnotify/issues/59)\n\n## [1.1.1] - 2015-02-05\n\n* inotify: Retry read on EINTR [#61](https://github.com/fsnotify/fsnotify/issues/61) (thanks @PieterD)\n\n## [1.1.0] - 2014-12-12\n\n* kqueue: rework internals [#43](https://github.com/fsnotify/fsnotify/pull/43)\n    * add low-level functions\n    * only need to store flags on directories\n    * less mutexes [#13](https://github.com/fsnotify/fsnotify/issues/13)\n    * done can be an unbuffered channel\n    * remove calls to os.NewSyscallError\n* More efficient string concatenation for Event.String() [#52](https://github.com/fsnotify/fsnotify/pull/52) (thanks @mdlayher)\n* kqueue: fix regression in  rework causing subdirectories to be watched [#48](https://github.com/fsnotify/fsnotify/issues/48)\n* kqueue: cleanup internal watch before sending remove event [#51](https://github.com/fsnotify/fsnotify/issues/51)\n\n## [1.0.4] - 2014-09-07\n\n* kqueue: add dragonfly to the build tags.\n* Rename source code files, rearrange code so exported APIs are at the top.\n* Add done channel to example code. [#37](https://github.com/fsnotify/fsnotify/pull/37) (thanks @chenyukang)\n\n## [1.0.3] - 2014-08-19\n\n* [Fix] Windows MOVED_TO now translates to Create like on BSD and Linux. [#36](https://github.com/fsnotify/fsnotify/issues/36)\n\n## [1.0.2] - 2014-08-17\n\n* [Fix] Missing create events on macOS. [#14](https://github.com/fsnotify/fsnotify/issues/14) (thanks @zhsso)\n* [Fix] Make ./path and path equivalent. (thanks @zhsso)\n\n## [1.0.0] - 2014-08-15\n\n* [API] Remove AddWatch on Windows, use Add.\n* Improve documentation for exported identifiers. [#30](https://github.com/fsnotify/fsnotify/issues/30)\n* Minor updates based on feedback from golint.\n\n## dev / 2014-07-09\n\n* Moved to [github.com/fsnotify/fsnotify](https://github.com/fsnotify/fsnotify).\n* Use os.NewSyscallError instead of returning errno (thanks @hariharan-uno)\n\n## dev / 2014-07-04\n\n* kqueue: fix incorrect mutex used in Close()\n* Update example to demonstrate usage of Op.\n\n## dev / 2014-06-28\n\n* [API] Don't set the Write Op for attribute notifications [#4](https://github.com/fsnotify/fsnotify/issues/4)\n* Fix for String() method on Event (thanks Alex Brainman)\n* Don't build on Plan 9 or Solaris (thanks @4ad)\n\n## dev / 2014-06-21\n\n* Events channel of type Event rather than *Event.\n* [internal] use syscall constants directly for inotify and kqueue.\n* [internal] kqueue: rename events to kevents and fileEvent to event.\n\n## dev / 2014-06-19\n\n* Go 1.3+ required on Windows (uses syscall.ERROR_MORE_DATA internally).\n* [internal] remove cookie from Event struct (unused).\n* [internal] Event struct has the same definition across every OS.\n* [internal] remove internal watch and removeWatch methods.\n\n## dev / 2014-06-12\n\n* [API] Renamed Watch() to Add() and RemoveWatch() to Remove().\n* [API] Pluralized channel names: Events and Errors.\n* [API] Renamed FileEvent struct to Event.\n* [API] Op constants replace methods like IsCreate().\n\n## dev / 2014-06-12\n\n* Fix data race on kevent buffer (thanks @tilaks) [#98](https://github.com/howeyc/fsnotify/pull/98)\n\n## dev / 2014-05-23\n\n* [API] Remove current implementation of WatchFlags.\n    * current implementation doesn't take advantage of OS for efficiency\n    * provides little benefit over filtering events as they are received, but has  extra bookkeeping and mutexes\n    * no tests for the current implementation\n    * not fully implemented on Windows [#93](https://github.com/howeyc/fsnotify/issues/93#issuecomment-39285195)\n\n## [0.9.3] - 2014-12-31\n\n* kqueue: cleanup internal watch before sending remove event [#51](https://github.com/fsnotify/fsnotify/issues/51)\n\n## [0.9.2] - 2014-08-17\n\n* [Backport] Fix missing create events on macOS. [#14](https://github.com/fsnotify/fsnotify/issues/14) (thanks @zhsso)\n\n## [0.9.1] - 2014-06-12\n\n* Fix data race on kevent buffer (thanks @tilaks) [#98](https://github.com/howeyc/fsnotify/pull/98)\n\n## [0.9.0] - 2014-01-17\n\n* IsAttrib() for events that only concern a file's metadata [#79][] (thanks @abustany)\n* [Fix] kqueue: fix deadlock [#77][] (thanks @cespare)\n* [NOTICE] Development has moved to `code.google.com/p/go.exp/fsnotify` in preparation for inclusion in the Go standard library.\n\n## [0.8.12] - 2013-11-13\n\n* [API] Remove FD_SET and friends from Linux adapter\n\n## [0.8.11] - 2013-11-02\n\n* [Doc] Add Changelog [#72][] (thanks @nathany)\n* [Doc] Spotlight and double modify events on macOS [#62][] (reported by @paulhammond)\n\n## [0.8.10] - 2013-10-19\n\n* [Fix] kqueue: remove file watches when parent directory is removed [#71][] (reported by @mdwhatcott)\n* [Fix] kqueue: race between Close and readEvents [#70][] (reported by @bernerdschaefer)\n* [Doc] specify OS-specific limits in README (thanks @debrando)\n\n## [0.8.9] - 2013-09-08\n\n* [Doc] Contributing (thanks @nathany)\n* [Doc] update package path in example code [#63][] (thanks @paulhammond)\n* [Doc] GoCI badge in README (Linux only) [#60][]\n* [Doc] Cross-platform testing with Vagrant  [#59][] (thanks @nathany)\n\n## [0.8.8] - 2013-06-17\n\n* [Fix] Windows: handle `ERROR_MORE_DATA` on Windows [#49][] (thanks @jbowtie)\n\n## [0.8.7] - 2013-06-03\n\n* [API] Make syscall flags internal\n* [Fix] inotify: ignore event changes\n* [Fix] race in symlink test [#45][] (reported by @srid)\n* [Fix] tests on Windows\n* lower case error messages\n\n## [0.8.6] - 2013-05-23\n\n* kqueue: Use EVT_ONLY flag on Darwin\n* [Doc] Update README with full example\n\n## [0.8.5] - 2013-05-09\n\n* [Fix] inotify: allow monitoring of \"broken\" symlinks (thanks @tsg)\n\n## [0.8.4] - 2013-04-07\n\n* [Fix] kqueue: watch all file events [#40][] (thanks @ChrisBuchholz)\n\n## [0.8.3] - 2013-03-13\n\n* [Fix] inoitfy/kqueue memory leak [#36][] (reported by @nbkolchin)\n* [Fix] kqueue: use fsnFlags for watching a directory [#33][] (reported by @nbkolchin)\n\n## [0.8.2] - 2013-02-07\n\n* [Doc] add Authors\n* [Fix] fix data races for map access [#29][] (thanks @fsouza)\n\n## [0.8.1] - 2013-01-09\n\n* [Fix] Windows path separators\n* [Doc] BSD License\n\n## [0.8.0] - 2012-11-09\n\n* kqueue: directory watching improvements (thanks @vmirage)\n* inotify: add `IN_MOVED_TO` [#25][] (requested by @cpisto)\n* [Fix] kqueue: deleting watched directory [#24][] (reported by @jakerr)\n\n## [0.7.4] - 2012-10-09\n\n* [Fix] inotify: fixes from https://codereview.appspot.com/5418045/ (ugorji)\n* [Fix] kqueue: preserve watch flags when watching for delete [#21][] (reported by @robfig)\n* [Fix] kqueue: watch the directory even if it isn't a new watch (thanks @robfig)\n* [Fix] kqueue: modify after recreation of file\n\n## [0.7.3] - 2012-09-27\n\n* [Fix] kqueue: watch with an existing folder inside the watched folder (thanks @vmirage)\n* [Fix] kqueue: no longer get duplicate CREATE events\n\n## [0.7.2] - 2012-09-01\n\n* kqueue: events for created directories\n\n## [0.7.1] - 2012-07-14\n\n* [Fix] for renaming files\n\n## [0.7.0] - 2012-07-02\n\n* [Feature] FSNotify flags\n* [Fix] inotify: Added file name back to event path\n\n## [0.6.0] - 2012-06-06\n\n* kqueue: watch files after directory created (thanks @tmc)\n\n## [0.5.1] - 2012-05-22\n\n* [Fix] inotify: remove all watches before Close()\n\n## [0.5.0] - 2012-05-03\n\n* [API] kqueue: return errors during watch instead of sending over channel\n* kqueue: match symlink behavior on Linux\n* inotify: add `DELETE_SELF` (requested by @taralx)\n* [Fix] kqueue: handle EINTR (reported by @robfig)\n* [Doc] Godoc example [#1][] (thanks @davecheney)\n\n## [0.4.0] - 2012-03-30\n\n* Go 1 released: build with go tool\n* [Feature] Windows support using winfsnotify\n* Windows does not have attribute change notifications\n* Roll attribute notifications into IsModify\n\n## [0.3.0] - 2012-02-19\n\n* kqueue: add files when watch directory\n\n## [0.2.0] - 2011-12-30\n\n* update to latest Go weekly code\n\n## [0.1.0] - 2011-10-19\n\n* kqueue: add watch on file creation to match inotify\n* kqueue: create file event\n* inotify: ignore `IN_IGNORED` events\n* event String()\n* linux: common FileEvent functions\n* initial commit\n\n[#79]: https://github.com/howeyc/fsnotify/pull/79\n[#77]: https://github.com/howeyc/fsnotify/pull/77\n[#72]: https://github.com/howeyc/fsnotify/issues/72\n[#71]: https://github.com/howeyc/fsnotify/issues/71\n[#70]: https://github.com/howeyc/fsnotify/issues/70\n[#63]: https://github.com/howeyc/fsnotify/issues/63\n[#62]: https://github.com/howeyc/fsnotify/issues/62\n[#60]: https://github.com/howeyc/fsnotify/issues/60\n[#59]: https://github.com/howeyc/fsnotify/issues/59\n[#49]: https://github.com/howeyc/fsnotify/issues/49\n[#45]: https://github.com/howeyc/fsnotify/issues/45\n[#40]: https://github.com/howeyc/fsnotify/issues/40\n[#36]: https://github.com/howeyc/fsnotify/issues/36\n[#33]: https://github.com/howeyc/fsnotify/issues/33\n[#29]: https://github.com/howeyc/fsnotify/issues/29\n[#25]: https://github.com/howeyc/fsnotify/issues/25\n[#24]: https://github.com/howeyc/fsnotify/issues/24\n[#21]: https://github.com/howeyc/fsnotify/issues/21\n"
  },
  {
    "path": "vendor/github.com/fsnotify/fsnotify/CONTRIBUTING.md",
    "content": "Thank you for your interest in contributing to fsnotify! We try to review and\nmerge PRs in a reasonable timeframe, but please be aware that:\n\n- To avoid \"wasted\" work, please discus changes on the issue tracker first. You\n  can just send PRs, but they may end up being rejected for one reason or the\n  other.\n\n- fsnotify is a cross-platform library, and changes must work reasonably well on\n  all supported platforms.\n\n- Changes will need to be compatible; old code should still compile, and the\n  runtime behaviour can't change in ways that are likely to lead to problems for\n  users.\n\nTesting\n-------\nJust `go test ./...` runs all the tests; the CI runs this on all supported\nplatforms. Testing different platforms locally can be done with something like\n[goon] or [Vagrant], but this isn't super-easy to set up at the moment.\n\nUse the `-short` flag to make the \"stress test\" run faster.\n\n\n[goon]: https://github.com/arp242/goon\n[Vagrant]: https://www.vagrantup.com/\n[integration_test.go]: /integration_test.go\n"
  },
  {
    "path": "vendor/github.com/fsnotify/fsnotify/LICENSE",
    "content": "Copyright © 2012 The Go Authors. All rights reserved.\nCopyright © fsnotify Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification,\nare permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n  list of conditions and the following disclaimer.\n* Redistributions in binary form must reproduce the above copyright notice, this\n  list of conditions and the following disclaimer in the documentation and/or\n  other materials provided with the distribution.\n* Neither the name of Google Inc. nor the names of its contributors may be used\n  to endorse or promote products derived from this software without specific\n  prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
  },
  {
    "path": "vendor/github.com/fsnotify/fsnotify/README.md",
    "content": "fsnotify is a Go library to provide cross-platform filesystem notifications on\nWindows, Linux, macOS, BSD, and illumos.\n\nGo 1.17 or newer is required; the full documentation is at\nhttps://pkg.go.dev/github.com/fsnotify/fsnotify\n\n---\n\nPlatform support:\n\n| Backend               | OS         | Status                                                                    |\n| :-------------------- | :--------- | :------------------------------------------------------------------------ |\n| inotify               | Linux      | Supported                                                                 |\n| kqueue                | BSD, macOS | Supported                                                                 |\n| ReadDirectoryChangesW | Windows    | Supported                                                                 |\n| FEN                   | illumos    | Supported                                                                 |\n| fanotify              | Linux 5.9+ | [Not yet](https://github.com/fsnotify/fsnotify/issues/114)                |\n| AHAFS                 | AIX        | [aix branch]; experimental due to lack of maintainer and test environment |\n| FSEvents              | macOS      | [Needs support in x/sys/unix][fsevents]                                   |\n| USN Journals          | Windows    | [Needs support in x/sys/windows][usn]                                     |\n| Polling               | *All*      | [Not yet](https://github.com/fsnotify/fsnotify/issues/9)                  |\n\nLinux and illumos should include Android and Solaris, but these are currently\nuntested.\n\n[fsevents]:   https://github.com/fsnotify/fsnotify/issues/11#issuecomment-1279133120\n[usn]:        https://github.com/fsnotify/fsnotify/issues/53#issuecomment-1279829847\n[aix branch]: https://github.com/fsnotify/fsnotify/issues/353#issuecomment-1284590129\n\nUsage\n-----\nA basic example:\n\n```go\npackage main\n\nimport (\n    \"log\"\n\n    \"github.com/fsnotify/fsnotify\"\n)\n\nfunc main() {\n    // Create new watcher.\n    watcher, err := fsnotify.NewWatcher()\n    if err != nil {\n        log.Fatal(err)\n    }\n    defer watcher.Close()\n\n    // Start listening for events.\n    go func() {\n        for {\n            select {\n            case event, ok := <-watcher.Events:\n                if !ok {\n                    return\n                }\n                log.Println(\"event:\", event)\n                if event.Has(fsnotify.Write) {\n                    log.Println(\"modified file:\", event.Name)\n                }\n            case err, ok := <-watcher.Errors:\n                if !ok {\n                    return\n                }\n                log.Println(\"error:\", err)\n            }\n        }\n    }()\n\n    // Add a path.\n    err = watcher.Add(\"/tmp\")\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    // Block main goroutine forever.\n    <-make(chan struct{})\n}\n```\n\nSome more examples can be found in [cmd/fsnotify](cmd/fsnotify), which can be\nrun with:\n\n    % go run ./cmd/fsnotify\n\nFurther detailed documentation can be found in godoc:\nhttps://pkg.go.dev/github.com/fsnotify/fsnotify\n\nFAQ\n---\n### Will a file still be watched when it's moved to another directory?\nNo, not unless you are watching the location it was moved to.\n\n### Are subdirectories watched?\nNo, you must add watches for any directory you want to watch (a recursive\nwatcher is on the roadmap: [#18]).\n\n[#18]: https://github.com/fsnotify/fsnotify/issues/18\n\n### Do I have to watch the Error and Event channels in a goroutine?\nYes. You can read both channels in the same goroutine using `select` (you don't\nneed a separate goroutine for both channels; see the example).\n\n### Why don't notifications work with NFS, SMB, FUSE, /proc, or /sys?\nfsnotify requires support from underlying OS to work. The current NFS and SMB\nprotocols does not provide network level support for file notifications, and\nneither do the /proc and /sys virtual filesystems.\n\nThis could be fixed with a polling watcher ([#9]), but it's not yet implemented.\n\n[#9]: https://github.com/fsnotify/fsnotify/issues/9\n\n### Why do I get many Chmod events?\nSome programs may generate a lot of attribute changes; for example Spotlight on\nmacOS, anti-virus programs, backup applications, and some others are known to do\nthis. As a rule, it's typically best to ignore Chmod events. They're often not\nuseful, and tend to cause problems.\n\nSpotlight indexing on macOS can result in multiple events (see [#15]). A\ntemporary workaround is to add your folder(s) to the *Spotlight Privacy\nsettings* until we have a native FSEvents implementation (see [#11]).\n\n[#11]: https://github.com/fsnotify/fsnotify/issues/11\n[#15]: https://github.com/fsnotify/fsnotify/issues/15\n\n### Watching a file doesn't work well\nWatching individual files (rather than directories) is generally not recommended\nas many programs (especially editors) update files atomically: it will write to\na temporary file which is then moved to to destination, overwriting the original\n(or some variant thereof). The watcher on the original file is now lost, as that\nno longer exists.\n\nThe upshot of this is that a power failure or crash won't leave a half-written\nfile.\n\nWatch the parent directory and use `Event.Name` to filter out files you're not\ninterested in. There is an example of this in `cmd/fsnotify/file.go`.\n\nPlatform-specific notes\n-----------------------\n### Linux\nWhen a file is removed a REMOVE event won't be emitted until all file\ndescriptors are closed; it will emit a CHMOD instead:\n\n    fp := os.Open(\"file\")\n    os.Remove(\"file\")        // CHMOD\n    fp.Close()               // REMOVE\n\nThis is the event that inotify sends, so not much can be changed about this.\n\nThe `fs.inotify.max_user_watches` sysctl variable specifies the upper limit for\nthe number of watches per user, and `fs.inotify.max_user_instances` specifies\nthe maximum number of inotify instances per user. Every Watcher you create is an\n\"instance\", and every path you add is a \"watch\".\n\nThese are also exposed in `/proc` as `/proc/sys/fs/inotify/max_user_watches` and\n`/proc/sys/fs/inotify/max_user_instances`\n\nTo increase them you can use `sysctl` or write the value to proc file:\n\n    # The default values on Linux 5.18\n    sysctl fs.inotify.max_user_watches=124983\n    sysctl fs.inotify.max_user_instances=128\n\nTo make the changes persist on reboot edit `/etc/sysctl.conf` or\n`/usr/lib/sysctl.d/50-default.conf` (details differ per Linux distro; check your\ndistro's documentation):\n\n    fs.inotify.max_user_watches=124983\n    fs.inotify.max_user_instances=128\n\nReaching the limit will result in a \"no space left on device\" or \"too many open\nfiles\" error.\n\n### kqueue (macOS, all BSD systems)\nkqueue requires opening a file descriptor for every file that's being watched;\nso if you're watching a directory with five files then that's six file\ndescriptors. You will run in to your system's \"max open files\" limit faster on\nthese platforms.\n\nThe sysctl variables `kern.maxfiles` and `kern.maxfilesperproc` can be used to\ncontrol the maximum number of open files.\n"
  },
  {
    "path": "vendor/github.com/fsnotify/fsnotify/backend_fen.go",
    "content": "//go:build solaris\n// +build solaris\n\n// Note: the documentation on the Watcher type and methods is generated from\n// mkdoc.zsh\n\npackage fsnotify\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"sync\"\n\n\t\"golang.org/x/sys/unix\"\n)\n\n// Watcher watches a set of paths, delivering events on a channel.\n//\n// A watcher should not be copied (e.g. pass it by pointer, rather than by\n// value).\n//\n// # Linux notes\n//\n// When a file is removed a Remove event won't be emitted until all file\n// descriptors are closed, and deletes will always emit a Chmod. For example:\n//\n//\tfp := os.Open(\"file\")\n//\tos.Remove(\"file\")        // Triggers Chmod\n//\tfp.Close()               // Triggers Remove\n//\n// This is the event that inotify sends, so not much can be changed about this.\n//\n// The fs.inotify.max_user_watches sysctl variable specifies the upper limit\n// for the number of watches per user, and fs.inotify.max_user_instances\n// specifies the maximum number of inotify instances per user. Every Watcher you\n// create is an \"instance\", and every path you add is a \"watch\".\n//\n// These are also exposed in /proc as /proc/sys/fs/inotify/max_user_watches and\n// /proc/sys/fs/inotify/max_user_instances\n//\n// To increase them you can use sysctl or write the value to the /proc file:\n//\n//\t# Default values on Linux 5.18\n//\tsysctl fs.inotify.max_user_watches=124983\n//\tsysctl fs.inotify.max_user_instances=128\n//\n// To make the changes persist on reboot edit /etc/sysctl.conf or\n// /usr/lib/sysctl.d/50-default.conf (details differ per Linux distro; check\n// your distro's documentation):\n//\n//\tfs.inotify.max_user_watches=124983\n//\tfs.inotify.max_user_instances=128\n//\n// Reaching the limit will result in a \"no space left on device\" or \"too many open\n// files\" error.\n//\n// # kqueue notes (macOS, BSD)\n//\n// kqueue requires opening a file descriptor for every file that's being watched;\n// so if you're watching a directory with five files then that's six file\n// descriptors. You will run in to your system's \"max open files\" limit faster on\n// these platforms.\n//\n// The sysctl variables kern.maxfiles and kern.maxfilesperproc can be used to\n// control the maximum number of open files, as well as /etc/login.conf on BSD\n// systems.\n//\n// # Windows notes\n//\n// Paths can be added as \"C:\\path\\to\\dir\", but forward slashes\n// (\"C:/path/to/dir\") will also work.\n//\n// When a watched directory is removed it will always send an event for the\n// directory itself, but may not send events for all files in that directory.\n// Sometimes it will send events for all times, sometimes it will send no\n// events, and often only for some files.\n//\n// The default ReadDirectoryChangesW() buffer size is 64K, which is the largest\n// value that is guaranteed to work with SMB filesystems. If you have many\n// events in quick succession this may not be enough, and you will have to use\n// [WithBufferSize] to increase the value.\ntype Watcher struct {\n\t// Events sends the filesystem change events.\n\t//\n\t// fsnotify can send the following events; a \"path\" here can refer to a\n\t// file, directory, symbolic link, or special file like a FIFO.\n\t//\n\t//   fsnotify.Create    A new path was created; this may be followed by one\n\t//                      or more Write events if data also gets written to a\n\t//                      file.\n\t//\n\t//   fsnotify.Remove    A path was removed.\n\t//\n\t//   fsnotify.Rename    A path was renamed. A rename is always sent with the\n\t//                      old path as Event.Name, and a Create event will be\n\t//                      sent with the new name. Renames are only sent for\n\t//                      paths that are currently watched; e.g. moving an\n\t//                      unmonitored file into a monitored directory will\n\t//                      show up as just a Create. Similarly, renaming a file\n\t//                      to outside a monitored directory will show up as\n\t//                      only a Rename.\n\t//\n\t//   fsnotify.Write     A file or named pipe was written to. A Truncate will\n\t//                      also trigger a Write. A single \"write action\"\n\t//                      initiated by the user may show up as one or multiple\n\t//                      writes, depending on when the system syncs things to\n\t//                      disk. For example when compiling a large Go program\n\t//                      you may get hundreds of Write events, and you may\n\t//                      want to wait until you've stopped receiving them\n\t//                      (see the dedup example in cmd/fsnotify).\n\t//\n\t//                      Some systems may send Write event for directories\n\t//                      when the directory content changes.\n\t//\n\t//   fsnotify.Chmod     Attributes were changed. On Linux this is also sent\n\t//                      when a file is removed (or more accurately, when a\n\t//                      link to an inode is removed). On kqueue it's sent\n\t//                      when a file is truncated. On Windows it's never\n\t//                      sent.\n\tEvents chan Event\n\n\t// Errors sends any errors.\n\t//\n\t// ErrEventOverflow is used to indicate there are too many events:\n\t//\n\t//  - inotify:      There are too many queued events (fs.inotify.max_queued_events sysctl)\n\t//  - windows:      The buffer size is too small; WithBufferSize() can be used to increase it.\n\t//  - kqueue, fen:  Not used.\n\tErrors chan error\n\n\tmu      sync.Mutex\n\tport    *unix.EventPort\n\tdone    chan struct{}       // Channel for sending a \"quit message\" to the reader goroutine\n\tdirs    map[string]struct{} // Explicitly watched directories\n\twatches map[string]struct{} // Explicitly watched non-directories\n}\n\n// NewWatcher creates a new Watcher.\nfunc NewWatcher() (*Watcher, error) {\n\treturn NewBufferedWatcher(0)\n}\n\n// NewBufferedWatcher creates a new Watcher with a buffered Watcher.Events\n// channel.\n//\n// The main use case for this is situations with a very large number of events\n// where the kernel buffer size can't be increased (e.g. due to lack of\n// permissions). An unbuffered Watcher will perform better for almost all use\n// cases, and whenever possible you will be better off increasing the kernel\n// buffers instead of adding a large userspace buffer.\nfunc NewBufferedWatcher(sz uint) (*Watcher, error) {\n\tw := &Watcher{\n\t\tEvents:  make(chan Event, sz),\n\t\tErrors:  make(chan error),\n\t\tdirs:    make(map[string]struct{}),\n\t\twatches: make(map[string]struct{}),\n\t\tdone:    make(chan struct{}),\n\t}\n\n\tvar err error\n\tw.port, err = unix.NewEventPort()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"fsnotify.NewWatcher: %w\", err)\n\t}\n\n\tgo w.readEvents()\n\treturn w, nil\n}\n\n// sendEvent attempts to send an event to the user, returning true if the event\n// was put in the channel successfully and false if the watcher has been closed.\nfunc (w *Watcher) sendEvent(name string, op Op) (sent bool) {\n\tselect {\n\tcase w.Events <- Event{Name: name, Op: op}:\n\t\treturn true\n\tcase <-w.done:\n\t\treturn false\n\t}\n}\n\n// sendError attempts to send an error to the user, returning true if the error\n// was put in the channel successfully and false if the watcher has been closed.\nfunc (w *Watcher) sendError(err error) (sent bool) {\n\tselect {\n\tcase w.Errors <- err:\n\t\treturn true\n\tcase <-w.done:\n\t\treturn false\n\t}\n}\n\nfunc (w *Watcher) isClosed() bool {\n\tselect {\n\tcase <-w.done:\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\n// Close removes all watches and closes the Events channel.\nfunc (w *Watcher) Close() error {\n\t// Take the lock used by associateFile to prevent lingering events from\n\t// being processed after the close\n\tw.mu.Lock()\n\tdefer w.mu.Unlock()\n\tif w.isClosed() {\n\t\treturn nil\n\t}\n\tclose(w.done)\n\treturn w.port.Close()\n}\n\n// Add starts monitoring the path for changes.\n//\n// A path can only be watched once; watching it more than once is a no-op and will\n// not return an error. Paths that do not yet exist on the filesystem cannot be\n// watched.\n//\n// A watch will be automatically removed if the watched path is deleted or\n// renamed. The exception is the Windows backend, which doesn't remove the\n// watcher on renames.\n//\n// Notifications on network filesystems (NFS, SMB, FUSE, etc.) or special\n// filesystems (/proc, /sys, etc.) generally don't work.\n//\n// Returns [ErrClosed] if [Watcher.Close] was called.\n//\n// See [Watcher.AddWith] for a version that allows adding options.\n//\n// # Watching directories\n//\n// All files in a directory are monitored, including new files that are created\n// after the watcher is started. Subdirectories are not watched (i.e. it's\n// non-recursive).\n//\n// # Watching files\n//\n// Watching individual files (rather than directories) is generally not\n// recommended as many programs (especially editors) update files atomically: it\n// will write to a temporary file which is then moved to to destination,\n// overwriting the original (or some variant thereof). The watcher on the\n// original file is now lost, as that no longer exists.\n//\n// The upshot of this is that a power failure or crash won't leave a\n// half-written file.\n//\n// Watch the parent directory and use Event.Name to filter out files you're not\n// interested in. There is an example of this in cmd/fsnotify/file.go.\nfunc (w *Watcher) Add(name string) error { return w.AddWith(name) }\n\n// AddWith is like [Watcher.Add], but allows adding options. When using Add()\n// the defaults described below are used.\n//\n// Possible options are:\n//\n//   - [WithBufferSize] sets the buffer size for the Windows backend; no-op on\n//     other platforms. The default is 64K (65536 bytes).\nfunc (w *Watcher) AddWith(name string, opts ...addOpt) error {\n\tif w.isClosed() {\n\t\treturn ErrClosed\n\t}\n\tif w.port.PathIsWatched(name) {\n\t\treturn nil\n\t}\n\n\t_ = getOptions(opts...)\n\n\t// Currently we resolve symlinks that were explicitly requested to be\n\t// watched. Otherwise we would use LStat here.\n\tstat, err := os.Stat(name)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// Associate all files in the directory.\n\tif stat.IsDir() {\n\t\terr := w.handleDirectory(name, stat, true, w.associateFile)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tw.mu.Lock()\n\t\tw.dirs[name] = struct{}{}\n\t\tw.mu.Unlock()\n\t\treturn nil\n\t}\n\n\terr = w.associateFile(name, stat, true)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tw.mu.Lock()\n\tw.watches[name] = struct{}{}\n\tw.mu.Unlock()\n\treturn nil\n}\n\n// Remove stops monitoring the path for changes.\n//\n// Directories are always removed non-recursively. For example, if you added\n// /tmp/dir and /tmp/dir/subdir then you will need to remove both.\n//\n// Removing a path that has not yet been added returns [ErrNonExistentWatch].\n//\n// Returns nil if [Watcher.Close] was called.\nfunc (w *Watcher) Remove(name string) error {\n\tif w.isClosed() {\n\t\treturn nil\n\t}\n\tif !w.port.PathIsWatched(name) {\n\t\treturn fmt.Errorf(\"%w: %s\", ErrNonExistentWatch, name)\n\t}\n\n\t// The user has expressed an intent. Immediately remove this name from\n\t// whichever watch list it might be in. If it's not in there the delete\n\t// doesn't cause harm.\n\tw.mu.Lock()\n\tdelete(w.watches, name)\n\tdelete(w.dirs, name)\n\tw.mu.Unlock()\n\n\tstat, err := os.Stat(name)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// Remove associations for every file in the directory.\n\tif stat.IsDir() {\n\t\terr := w.handleDirectory(name, stat, false, w.dissociateFile)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t}\n\n\terr = w.port.DissociatePath(name)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\n// readEvents contains the main loop that runs in a goroutine watching for events.\nfunc (w *Watcher) readEvents() {\n\t// If this function returns, the watcher has been closed and we can close\n\t// these channels\n\tdefer func() {\n\t\tclose(w.Errors)\n\t\tclose(w.Events)\n\t}()\n\n\tpevents := make([]unix.PortEvent, 8)\n\tfor {\n\t\tcount, err := w.port.Get(pevents, 1, nil)\n\t\tif err != nil && err != unix.ETIME {\n\t\t\t// Interrupted system call (count should be 0) ignore and continue\n\t\t\tif errors.Is(err, unix.EINTR) && count == 0 {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\t// Get failed because we called w.Close()\n\t\t\tif errors.Is(err, unix.EBADF) && w.isClosed() {\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// There was an error not caused by calling w.Close()\n\t\t\tif !w.sendError(err) {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\n\t\tp := pevents[:count]\n\t\tfor _, pevent := range p {\n\t\t\tif pevent.Source != unix.PORT_SOURCE_FILE {\n\t\t\t\t// Event from unexpected source received; should never happen.\n\t\t\t\tif !w.sendError(errors.New(\"Event from unexpected source received\")) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\terr = w.handleEvent(&pevent)\n\t\t\tif err != nil {\n\t\t\t\tif !w.sendError(err) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc (w *Watcher) handleDirectory(path string, stat os.FileInfo, follow bool, handler func(string, os.FileInfo, bool) error) error {\n\tfiles, err := os.ReadDir(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// Handle all children of the directory.\n\tfor _, entry := range files {\n\t\tfinfo, err := entry.Info()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\terr = handler(filepath.Join(path, finfo.Name()), finfo, false)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\t// And finally handle the directory itself.\n\treturn handler(path, stat, follow)\n}\n\n// handleEvent might need to emit more than one fsnotify event if the events\n// bitmap matches more than one event type (e.g. the file was both modified and\n// had the attributes changed between when the association was created and the\n// when event was returned)\nfunc (w *Watcher) handleEvent(event *unix.PortEvent) error {\n\tvar (\n\t\tevents     = event.Events\n\t\tpath       = event.Path\n\t\tfmode      = event.Cookie.(os.FileMode)\n\t\treRegister = true\n\t)\n\n\tw.mu.Lock()\n\t_, watchedDir := w.dirs[path]\n\t_, watchedPath := w.watches[path]\n\tw.mu.Unlock()\n\tisWatched := watchedDir || watchedPath\n\n\tif events&unix.FILE_DELETE != 0 {\n\t\tif !w.sendEvent(path, Remove) {\n\t\t\treturn nil\n\t\t}\n\t\treRegister = false\n\t}\n\tif events&unix.FILE_RENAME_FROM != 0 {\n\t\tif !w.sendEvent(path, Rename) {\n\t\t\treturn nil\n\t\t}\n\t\t// Don't keep watching the new file name\n\t\treRegister = false\n\t}\n\tif events&unix.FILE_RENAME_TO != 0 {\n\t\t// We don't report a Rename event for this case, because Rename events\n\t\t// are interpreted as referring to the _old_ name of the file, and in\n\t\t// this case the event would refer to the new name of the file. This\n\t\t// type of rename event is not supported by fsnotify.\n\n\t\t// inotify reports a Remove event in this case, so we simulate this\n\t\t// here.\n\t\tif !w.sendEvent(path, Remove) {\n\t\t\treturn nil\n\t\t}\n\t\t// Don't keep watching the file that was removed\n\t\treRegister = false\n\t}\n\n\t// The file is gone, nothing left to do.\n\tif !reRegister {\n\t\tif watchedDir {\n\t\t\tw.mu.Lock()\n\t\t\tdelete(w.dirs, path)\n\t\t\tw.mu.Unlock()\n\t\t}\n\t\tif watchedPath {\n\t\t\tw.mu.Lock()\n\t\t\tdelete(w.watches, path)\n\t\t\tw.mu.Unlock()\n\t\t}\n\t\treturn nil\n\t}\n\n\t// If we didn't get a deletion the file still exists and we're going to have\n\t// to watch it again. Let's Stat it now so that we can compare permissions\n\t// and have what we need to continue watching the file\n\n\tstat, err := os.Lstat(path)\n\tif err != nil {\n\t\t// This is unexpected, but we should still emit an event. This happens\n\t\t// most often on \"rm -r\" of a subdirectory inside a watched directory We\n\t\t// get a modify event of something happening inside, but by the time we\n\t\t// get here, the sudirectory is already gone. Clearly we were watching\n\t\t// this path but now it is gone. Let's tell the user that it was\n\t\t// removed.\n\t\tif !w.sendEvent(path, Remove) {\n\t\t\treturn nil\n\t\t}\n\t\t// Suppress extra write events on removed directories; they are not\n\t\t// informative and can be confusing.\n\t\treturn nil\n\t}\n\n\t// resolve symlinks that were explicitly watched as we would have at Add()\n\t// time. this helps suppress spurious Chmod events on watched symlinks\n\tif isWatched {\n\t\tstat, err = os.Stat(path)\n\t\tif err != nil {\n\t\t\t// The symlink still exists, but the target is gone. Report the\n\t\t\t// Remove similar to above.\n\t\t\tif !w.sendEvent(path, Remove) {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t\t// Don't return the error\n\t\t}\n\t}\n\n\tif events&unix.FILE_MODIFIED != 0 {\n\t\tif fmode.IsDir() {\n\t\t\tif watchedDir {\n\t\t\t\tif err := w.updateDirectory(path); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif !w.sendEvent(path, Write) {\n\t\t\t\t\treturn nil\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif !w.sendEvent(path, Write) {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\tif events&unix.FILE_ATTRIB != 0 && stat != nil {\n\t\t// Only send Chmod if perms changed\n\t\tif stat.Mode().Perm() != fmode.Perm() {\n\t\t\tif !w.sendEvent(path, Chmod) {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\n\tif stat != nil {\n\t\t// If we get here, it means we've hit an event above that requires us to\n\t\t// continue watching the file or directory\n\t\treturn w.associateFile(path, stat, isWatched)\n\t}\n\treturn nil\n}\n\nfunc (w *Watcher) updateDirectory(path string) error {\n\t// The directory was modified, so we must find unwatched entities and watch\n\t// them. If something was removed from the directory, nothing will happen,\n\t// as everything else should still be watched.\n\tfiles, err := os.ReadDir(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tfor _, entry := range files {\n\t\tpath := filepath.Join(path, entry.Name())\n\t\tif w.port.PathIsWatched(path) {\n\t\t\tcontinue\n\t\t}\n\n\t\tfinfo, err := entry.Info()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\terr = w.associateFile(path, finfo, false)\n\t\tif err != nil {\n\t\t\tif !w.sendError(err) {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tif !w.sendEvent(path, Create) {\n\t\t\treturn nil\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (w *Watcher) associateFile(path string, stat os.FileInfo, follow bool) error {\n\tif w.isClosed() {\n\t\treturn ErrClosed\n\t}\n\t// This is primarily protecting the call to AssociatePath but it is\n\t// important and intentional that the call to PathIsWatched is also\n\t// protected by this mutex. Without this mutex, AssociatePath has been seen\n\t// to error out that the path is already associated.\n\tw.mu.Lock()\n\tdefer w.mu.Unlock()\n\n\tif w.port.PathIsWatched(path) {\n\t\t// Remove the old association in favor of this one If we get ENOENT,\n\t\t// then while the x/sys/unix wrapper still thought that this path was\n\t\t// associated, the underlying event port did not. This call will have\n\t\t// cleared up that discrepancy. The most likely cause is that the event\n\t\t// has fired but we haven't processed it yet.\n\t\terr := w.port.DissociatePath(path)\n\t\tif err != nil && err != unix.ENOENT {\n\t\t\treturn err\n\t\t}\n\t}\n\t// FILE_NOFOLLOW means we watch symlinks themselves rather than their\n\t// targets.\n\tevents := unix.FILE_MODIFIED | unix.FILE_ATTRIB | unix.FILE_NOFOLLOW\n\tif follow {\n\t\t// We *DO* follow symlinks for explicitly watched entries.\n\t\tevents = unix.FILE_MODIFIED | unix.FILE_ATTRIB\n\t}\n\treturn w.port.AssociatePath(path, stat,\n\t\tevents,\n\t\tstat.Mode())\n}\n\nfunc (w *Watcher) dissociateFile(path string, stat os.FileInfo, unused bool) error {\n\tif !w.port.PathIsWatched(path) {\n\t\treturn nil\n\t}\n\treturn w.port.DissociatePath(path)\n}\n\n// WatchList returns all paths explicitly added with [Watcher.Add] (and are not\n// yet removed).\n//\n// Returns nil if [Watcher.Close] was called.\nfunc (w *Watcher) WatchList() []string {\n\tif w.isClosed() {\n\t\treturn nil\n\t}\n\n\tw.mu.Lock()\n\tdefer w.mu.Unlock()\n\n\tentries := make([]string, 0, len(w.watches)+len(w.dirs))\n\tfor pathname := range w.dirs {\n\t\tentries = append(entries, pathname)\n\t}\n\tfor pathname := range w.watches {\n\t\tentries = append(entries, pathname)\n\t}\n\n\treturn entries\n}\n"
  },
  {
    "path": "vendor/github.com/fsnotify/fsnotify/backend_inotify.go",
    "content": "//go:build linux && !appengine\n// +build linux,!appengine\n\n// Note: the documentation on the Watcher type and methods is generated from\n// mkdoc.zsh\n\npackage fsnotify\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"sync\"\n\t\"unsafe\"\n\n\t\"golang.org/x/sys/unix\"\n)\n\n// Watcher watches a set of paths, delivering events on a channel.\n//\n// A watcher should not be copied (e.g. pass it by pointer, rather than by\n// value).\n//\n// # Linux notes\n//\n// When a file is removed a Remove event won't be emitted until all file\n// descriptors are closed, and deletes will always emit a Chmod. For example:\n//\n//\tfp := os.Open(\"file\")\n//\tos.Remove(\"file\")        // Triggers Chmod\n//\tfp.Close()               // Triggers Remove\n//\n// This is the event that inotify sends, so not much can be changed about this.\n//\n// The fs.inotify.max_user_watches sysctl variable specifies the upper limit\n// for the number of watches per user, and fs.inotify.max_user_instances\n// specifies the maximum number of inotify instances per user. Every Watcher you\n// create is an \"instance\", and every path you add is a \"watch\".\n//\n// These are also exposed in /proc as /proc/sys/fs/inotify/max_user_watches and\n// /proc/sys/fs/inotify/max_user_instances\n//\n// To increase them you can use sysctl or write the value to the /proc file:\n//\n//\t# Default values on Linux 5.18\n//\tsysctl fs.inotify.max_user_watches=124983\n//\tsysctl fs.inotify.max_user_instances=128\n//\n// To make the changes persist on reboot edit /etc/sysctl.conf or\n// /usr/lib/sysctl.d/50-default.conf (details differ per Linux distro; check\n// your distro's documentation):\n//\n//\tfs.inotify.max_user_watches=124983\n//\tfs.inotify.max_user_instances=128\n//\n// Reaching the limit will result in a \"no space left on device\" or \"too many open\n// files\" error.\n//\n// # kqueue notes (macOS, BSD)\n//\n// kqueue requires opening a file descriptor for every file that's being watched;\n// so if you're watching a directory with five files then that's six file\n// descriptors. You will run in to your system's \"max open files\" limit faster on\n// these platforms.\n//\n// The sysctl variables kern.maxfiles and kern.maxfilesperproc can be used to\n// control the maximum number of open files, as well as /etc/login.conf on BSD\n// systems.\n//\n// # Windows notes\n//\n// Paths can be added as \"C:\\path\\to\\dir\", but forward slashes\n// (\"C:/path/to/dir\") will also work.\n//\n// When a watched directory is removed it will always send an event for the\n// directory itself, but may not send events for all files in that directory.\n// Sometimes it will send events for all times, sometimes it will send no\n// events, and often only for some files.\n//\n// The default ReadDirectoryChangesW() buffer size is 64K, which is the largest\n// value that is guaranteed to work with SMB filesystems. If you have many\n// events in quick succession this may not be enough, and you will have to use\n// [WithBufferSize] to increase the value.\ntype Watcher struct {\n\t// Events sends the filesystem change events.\n\t//\n\t// fsnotify can send the following events; a \"path\" here can refer to a\n\t// file, directory, symbolic link, or special file like a FIFO.\n\t//\n\t//   fsnotify.Create    A new path was created; this may be followed by one\n\t//                      or more Write events if data also gets written to a\n\t//                      file.\n\t//\n\t//   fsnotify.Remove    A path was removed.\n\t//\n\t//   fsnotify.Rename    A path was renamed. A rename is always sent with the\n\t//                      old path as Event.Name, and a Create event will be\n\t//                      sent with the new name. Renames are only sent for\n\t//                      paths that are currently watched; e.g. moving an\n\t//                      unmonitored file into a monitored directory will\n\t//                      show up as just a Create. Similarly, renaming a file\n\t//                      to outside a monitored directory will show up as\n\t//                      only a Rename.\n\t//\n\t//   fsnotify.Write     A file or named pipe was written to. A Truncate will\n\t//                      also trigger a Write. A single \"write action\"\n\t//                      initiated by the user may show up as one or multiple\n\t//                      writes, depending on when the system syncs things to\n\t//                      disk. For example when compiling a large Go program\n\t//                      you may get hundreds of Write events, and you may\n\t//                      want to wait until you've stopped receiving them\n\t//                      (see the dedup example in cmd/fsnotify).\n\t//\n\t//                      Some systems may send Write event for directories\n\t//                      when the directory content changes.\n\t//\n\t//   fsnotify.Chmod     Attributes were changed. On Linux this is also sent\n\t//                      when a file is removed (or more accurately, when a\n\t//                      link to an inode is removed). On kqueue it's sent\n\t//                      when a file is truncated. On Windows it's never\n\t//                      sent.\n\tEvents chan Event\n\n\t// Errors sends any errors.\n\t//\n\t// ErrEventOverflow is used to indicate there are too many events:\n\t//\n\t//  - inotify:      There are too many queued events (fs.inotify.max_queued_events sysctl)\n\t//  - windows:      The buffer size is too small; WithBufferSize() can be used to increase it.\n\t//  - kqueue, fen:  Not used.\n\tErrors chan error\n\n\t// Store fd here as os.File.Read() will no longer return on close after\n\t// calling Fd(). See: https://github.com/golang/go/issues/26439\n\tfd          int\n\tinotifyFile *os.File\n\twatches     *watches\n\tdone        chan struct{} // Channel for sending a \"quit message\" to the reader goroutine\n\tcloseMu     sync.Mutex\n\tdoneResp    chan struct{} // Channel to respond to Close\n}\n\ntype (\n\twatches struct {\n\t\tmu   sync.RWMutex\n\t\twd   map[uint32]*watch // wd → watch\n\t\tpath map[string]uint32 // pathname → wd\n\t}\n\twatch struct {\n\t\twd    uint32 // Watch descriptor (as returned by the inotify_add_watch() syscall)\n\t\tflags uint32 // inotify flags of this watch (see inotify(7) for the list of valid flags)\n\t\tpath  string // Watch path.\n\t}\n)\n\nfunc newWatches() *watches {\n\treturn &watches{\n\t\twd:   make(map[uint32]*watch),\n\t\tpath: make(map[string]uint32),\n\t}\n}\n\nfunc (w *watches) len() int {\n\tw.mu.RLock()\n\tdefer w.mu.RUnlock()\n\treturn len(w.wd)\n}\n\nfunc (w *watches) add(ww *watch) {\n\tw.mu.Lock()\n\tdefer w.mu.Unlock()\n\tw.wd[ww.wd] = ww\n\tw.path[ww.path] = ww.wd\n}\n\nfunc (w *watches) remove(wd uint32) {\n\tw.mu.Lock()\n\tdefer w.mu.Unlock()\n\tdelete(w.path, w.wd[wd].path)\n\tdelete(w.wd, wd)\n}\n\nfunc (w *watches) removePath(path string) (uint32, bool) {\n\tw.mu.Lock()\n\tdefer w.mu.Unlock()\n\n\twd, ok := w.path[path]\n\tif !ok {\n\t\treturn 0, false\n\t}\n\n\tdelete(w.path, path)\n\tdelete(w.wd, wd)\n\n\treturn wd, true\n}\n\nfunc (w *watches) byPath(path string) *watch {\n\tw.mu.RLock()\n\tdefer w.mu.RUnlock()\n\treturn w.wd[w.path[path]]\n}\n\nfunc (w *watches) byWd(wd uint32) *watch {\n\tw.mu.RLock()\n\tdefer w.mu.RUnlock()\n\treturn w.wd[wd]\n}\n\nfunc (w *watches) updatePath(path string, f func(*watch) (*watch, error)) error {\n\tw.mu.Lock()\n\tdefer w.mu.Unlock()\n\n\tvar existing *watch\n\twd, ok := w.path[path]\n\tif ok {\n\t\texisting = w.wd[wd]\n\t}\n\n\tupd, err := f(existing)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif upd != nil {\n\t\tw.wd[upd.wd] = upd\n\t\tw.path[upd.path] = upd.wd\n\n\t\tif upd.wd != wd {\n\t\t\tdelete(w.wd, wd)\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// NewWatcher creates a new Watcher.\nfunc NewWatcher() (*Watcher, error) {\n\treturn NewBufferedWatcher(0)\n}\n\n// NewBufferedWatcher creates a new Watcher with a buffered Watcher.Events\n// channel.\n//\n// The main use case for this is situations with a very large number of events\n// where the kernel buffer size can't be increased (e.g. due to lack of\n// permissions). An unbuffered Watcher will perform better for almost all use\n// cases, and whenever possible you will be better off increasing the kernel\n// buffers instead of adding a large userspace buffer.\nfunc NewBufferedWatcher(sz uint) (*Watcher, error) {\n\t// Need to set nonblocking mode for SetDeadline to work, otherwise blocking\n\t// I/O operations won't terminate on close.\n\tfd, errno := unix.InotifyInit1(unix.IN_CLOEXEC | unix.IN_NONBLOCK)\n\tif fd == -1 {\n\t\treturn nil, errno\n\t}\n\n\tw := &Watcher{\n\t\tfd:          fd,\n\t\tinotifyFile: os.NewFile(uintptr(fd), \"\"),\n\t\twatches:     newWatches(),\n\t\tEvents:      make(chan Event, sz),\n\t\tErrors:      make(chan error),\n\t\tdone:        make(chan struct{}),\n\t\tdoneResp:    make(chan struct{}),\n\t}\n\n\tgo w.readEvents()\n\treturn w, nil\n}\n\n// Returns true if the event was sent, or false if watcher is closed.\nfunc (w *Watcher) sendEvent(e Event) bool {\n\tselect {\n\tcase w.Events <- e:\n\t\treturn true\n\tcase <-w.done:\n\t\treturn false\n\t}\n}\n\n// Returns true if the error was sent, or false if watcher is closed.\nfunc (w *Watcher) sendError(err error) bool {\n\tselect {\n\tcase w.Errors <- err:\n\t\treturn true\n\tcase <-w.done:\n\t\treturn false\n\t}\n}\n\nfunc (w *Watcher) isClosed() bool {\n\tselect {\n\tcase <-w.done:\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\n// Close removes all watches and closes the Events channel.\nfunc (w *Watcher) Close() error {\n\tw.closeMu.Lock()\n\tif w.isClosed() {\n\t\tw.closeMu.Unlock()\n\t\treturn nil\n\t}\n\tclose(w.done)\n\tw.closeMu.Unlock()\n\n\t// Causes any blocking reads to return with an error, provided the file\n\t// still supports deadline operations.\n\terr := w.inotifyFile.Close()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// Wait for goroutine to close\n\t<-w.doneResp\n\n\treturn nil\n}\n\n// Add starts monitoring the path for changes.\n//\n// A path can only be watched once; watching it more than once is a no-op and will\n// not return an error. Paths that do not yet exist on the filesystem cannot be\n// watched.\n//\n// A watch will be automatically removed if the watched path is deleted or\n// renamed. The exception is the Windows backend, which doesn't remove the\n// watcher on renames.\n//\n// Notifications on network filesystems (NFS, SMB, FUSE, etc.) or special\n// filesystems (/proc, /sys, etc.) generally don't work.\n//\n// Returns [ErrClosed] if [Watcher.Close] was called.\n//\n// See [Watcher.AddWith] for a version that allows adding options.\n//\n// # Watching directories\n//\n// All files in a directory are monitored, including new files that are created\n// after the watcher is started. Subdirectories are not watched (i.e. it's\n// non-recursive).\n//\n// # Watching files\n//\n// Watching individual files (rather than directories) is generally not\n// recommended as many programs (especially editors) update files atomically: it\n// will write to a temporary file which is then moved to to destination,\n// overwriting the original (or some variant thereof). The watcher on the\n// original file is now lost, as that no longer exists.\n//\n// The upshot of this is that a power failure or crash won't leave a\n// half-written file.\n//\n// Watch the parent directory and use Event.Name to filter out files you're not\n// interested in. There is an example of this in cmd/fsnotify/file.go.\nfunc (w *Watcher) Add(name string) error { return w.AddWith(name) }\n\n// AddWith is like [Watcher.Add], but allows adding options. When using Add()\n// the defaults described below are used.\n//\n// Possible options are:\n//\n//   - [WithBufferSize] sets the buffer size for the Windows backend; no-op on\n//     other platforms. The default is 64K (65536 bytes).\nfunc (w *Watcher) AddWith(name string, opts ...addOpt) error {\n\tif w.isClosed() {\n\t\treturn ErrClosed\n\t}\n\n\tname = filepath.Clean(name)\n\t_ = getOptions(opts...)\n\n\tvar flags uint32 = unix.IN_MOVED_TO | unix.IN_MOVED_FROM |\n\t\tunix.IN_CREATE | unix.IN_ATTRIB | unix.IN_MODIFY |\n\t\tunix.IN_MOVE_SELF | unix.IN_DELETE | unix.IN_DELETE_SELF\n\n\treturn w.watches.updatePath(name, func(existing *watch) (*watch, error) {\n\t\tif existing != nil {\n\t\t\tflags |= existing.flags | unix.IN_MASK_ADD\n\t\t}\n\n\t\twd, err := unix.InotifyAddWatch(w.fd, name, flags)\n\t\tif wd == -1 {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tif existing == nil {\n\t\t\treturn &watch{\n\t\t\t\twd:    uint32(wd),\n\t\t\t\tpath:  name,\n\t\t\t\tflags: flags,\n\t\t\t}, nil\n\t\t}\n\n\t\texisting.wd = uint32(wd)\n\t\texisting.flags = flags\n\t\treturn existing, nil\n\t})\n}\n\n// Remove stops monitoring the path for changes.\n//\n// Directories are always removed non-recursively. For example, if you added\n// /tmp/dir and /tmp/dir/subdir then you will need to remove both.\n//\n// Removing a path that has not yet been added returns [ErrNonExistentWatch].\n//\n// Returns nil if [Watcher.Close] was called.\nfunc (w *Watcher) Remove(name string) error {\n\tif w.isClosed() {\n\t\treturn nil\n\t}\n\treturn w.remove(filepath.Clean(name))\n}\n\nfunc (w *Watcher) remove(name string) error {\n\twd, ok := w.watches.removePath(name)\n\tif !ok {\n\t\treturn fmt.Errorf(\"%w: %s\", ErrNonExistentWatch, name)\n\t}\n\n\tsuccess, errno := unix.InotifyRmWatch(w.fd, wd)\n\tif success == -1 {\n\t\t// TODO: Perhaps it's not helpful to return an error here in every case;\n\t\t//       The only two possible errors are:\n\t\t//\n\t\t//       - EBADF, which happens when w.fd is not a valid file descriptor\n\t\t//         of any kind.\n\t\t//       - EINVAL, which is when fd is not an inotify descriptor or wd\n\t\t//         is not a valid watch descriptor. Watch descriptors are\n\t\t//         invalidated when they are removed explicitly or implicitly;\n\t\t//         explicitly by inotify_rm_watch, implicitly when the file they\n\t\t//         are watching is deleted.\n\t\treturn errno\n\t}\n\treturn nil\n}\n\n// WatchList returns all paths explicitly added with [Watcher.Add] (and are not\n// yet removed).\n//\n// Returns nil if [Watcher.Close] was called.\nfunc (w *Watcher) WatchList() []string {\n\tif w.isClosed() {\n\t\treturn nil\n\t}\n\n\tentries := make([]string, 0, w.watches.len())\n\tw.watches.mu.RLock()\n\tfor pathname := range w.watches.path {\n\t\tentries = append(entries, pathname)\n\t}\n\tw.watches.mu.RUnlock()\n\n\treturn entries\n}\n\n// readEvents reads from the inotify file descriptor, converts the\n// received events into Event objects and sends them via the Events channel\nfunc (w *Watcher) readEvents() {\n\tdefer func() {\n\t\tclose(w.doneResp)\n\t\tclose(w.Errors)\n\t\tclose(w.Events)\n\t}()\n\n\tvar (\n\t\tbuf   [unix.SizeofInotifyEvent * 4096]byte // Buffer for a maximum of 4096 raw events\n\t\terrno error                                // Syscall errno\n\t)\n\tfor {\n\t\t// See if we have been closed.\n\t\tif w.isClosed() {\n\t\t\treturn\n\t\t}\n\n\t\tn, err := w.inotifyFile.Read(buf[:])\n\t\tswitch {\n\t\tcase errors.Unwrap(err) == os.ErrClosed:\n\t\t\treturn\n\t\tcase err != nil:\n\t\t\tif !w.sendError(err) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\tif n < unix.SizeofInotifyEvent {\n\t\t\tvar err error\n\t\t\tif n == 0 {\n\t\t\t\terr = io.EOF // If EOF is received. This should really never happen.\n\t\t\t} else if n < 0 {\n\t\t\t\terr = errno // If an error occurred while reading.\n\t\t\t} else {\n\t\t\t\terr = errors.New(\"notify: short read in readEvents()\") // Read was too short.\n\t\t\t}\n\t\t\tif !w.sendError(err) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\tvar offset uint32\n\t\t// We don't know how many events we just read into the buffer\n\t\t// While the offset points to at least one whole event...\n\t\tfor offset <= uint32(n-unix.SizeofInotifyEvent) {\n\t\t\tvar (\n\t\t\t\t// Point \"raw\" to the event in the buffer\n\t\t\t\traw     = (*unix.InotifyEvent)(unsafe.Pointer(&buf[offset]))\n\t\t\t\tmask    = uint32(raw.Mask)\n\t\t\t\tnameLen = uint32(raw.Len)\n\t\t\t)\n\n\t\t\tif mask&unix.IN_Q_OVERFLOW != 0 {\n\t\t\t\tif !w.sendError(ErrEventOverflow) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// If the event happened to the watched directory or the watched file, the kernel\n\t\t\t// doesn't append the filename to the event, but we would like to always fill the\n\t\t\t// the \"Name\" field with a valid filename. We retrieve the path of the watch from\n\t\t\t// the \"paths\" map.\n\t\t\twatch := w.watches.byWd(uint32(raw.Wd))\n\n\t\t\t// inotify will automatically remove the watch on deletes; just need\n\t\t\t// to clean our state here.\n\t\t\tif watch != nil && mask&unix.IN_DELETE_SELF == unix.IN_DELETE_SELF {\n\t\t\t\tw.watches.remove(watch.wd)\n\t\t\t}\n\t\t\t// We can't really update the state when a watched path is moved;\n\t\t\t// only IN_MOVE_SELF is sent and not IN_MOVED_{FROM,TO}. So remove\n\t\t\t// the watch.\n\t\t\tif watch != nil && mask&unix.IN_MOVE_SELF == unix.IN_MOVE_SELF {\n\t\t\t\terr := w.remove(watch.path)\n\t\t\t\tif err != nil && !errors.Is(err, ErrNonExistentWatch) {\n\t\t\t\t\tif !w.sendError(err) {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar name string\n\t\t\tif watch != nil {\n\t\t\t\tname = watch.path\n\t\t\t}\n\t\t\tif nameLen > 0 {\n\t\t\t\t// Point \"bytes\" at the first byte of the filename\n\t\t\t\tbytes := (*[unix.PathMax]byte)(unsafe.Pointer(&buf[offset+unix.SizeofInotifyEvent]))[:nameLen:nameLen]\n\t\t\t\t// The filename is padded with NULL bytes. TrimRight() gets rid of those.\n\t\t\t\tname += \"/\" + strings.TrimRight(string(bytes[0:nameLen]), \"\\000\")\n\t\t\t}\n\n\t\t\tevent := w.newEvent(name, mask)\n\n\t\t\t// Send the events that are not ignored on the events channel\n\t\t\tif mask&unix.IN_IGNORED == 0 {\n\t\t\t\tif !w.sendEvent(event) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Move to the next event in the buffer\n\t\t\toffset += unix.SizeofInotifyEvent + nameLen\n\t\t}\n\t}\n}\n\n// newEvent returns an platform-independent Event based on an inotify mask.\nfunc (w *Watcher) newEvent(name string, mask uint32) Event {\n\te := Event{Name: name}\n\tif mask&unix.IN_CREATE == unix.IN_CREATE || mask&unix.IN_MOVED_TO == unix.IN_MOVED_TO {\n\t\te.Op |= Create\n\t}\n\tif mask&unix.IN_DELETE_SELF == unix.IN_DELETE_SELF || mask&unix.IN_DELETE == unix.IN_DELETE {\n\t\te.Op |= Remove\n\t}\n\tif mask&unix.IN_MODIFY == unix.IN_MODIFY {\n\t\te.Op |= Write\n\t}\n\tif mask&unix.IN_MOVE_SELF == unix.IN_MOVE_SELF || mask&unix.IN_MOVED_FROM == unix.IN_MOVED_FROM {\n\t\te.Op |= Rename\n\t}\n\tif mask&unix.IN_ATTRIB == unix.IN_ATTRIB {\n\t\te.Op |= Chmod\n\t}\n\treturn e\n}\n"
  },
  {
    "path": "vendor/github.com/fsnotify/fsnotify/backend_kqueue.go",
    "content": "//go:build freebsd || openbsd || netbsd || dragonfly || darwin\n// +build freebsd openbsd netbsd dragonfly darwin\n\n// Note: the documentation on the Watcher type and methods is generated from\n// mkdoc.zsh\n\npackage fsnotify\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"sync\"\n\n\t\"golang.org/x/sys/unix\"\n)\n\n// Watcher watches a set of paths, delivering events on a channel.\n//\n// A watcher should not be copied (e.g. pass it by pointer, rather than by\n// value).\n//\n// # Linux notes\n//\n// When a file is removed a Remove event won't be emitted until all file\n// descriptors are closed, and deletes will always emit a Chmod. For example:\n//\n//\tfp := os.Open(\"file\")\n//\tos.Remove(\"file\")        // Triggers Chmod\n//\tfp.Close()               // Triggers Remove\n//\n// This is the event that inotify sends, so not much can be changed about this.\n//\n// The fs.inotify.max_user_watches sysctl variable specifies the upper limit\n// for the number of watches per user, and fs.inotify.max_user_instances\n// specifies the maximum number of inotify instances per user. Every Watcher you\n// create is an \"instance\", and every path you add is a \"watch\".\n//\n// These are also exposed in /proc as /proc/sys/fs/inotify/max_user_watches and\n// /proc/sys/fs/inotify/max_user_instances\n//\n// To increase them you can use sysctl or write the value to the /proc file:\n//\n//\t# Default values on Linux 5.18\n//\tsysctl fs.inotify.max_user_watches=124983\n//\tsysctl fs.inotify.max_user_instances=128\n//\n// To make the changes persist on reboot edit /etc/sysctl.conf or\n// /usr/lib/sysctl.d/50-default.conf (details differ per Linux distro; check\n// your distro's documentation):\n//\n//\tfs.inotify.max_user_watches=124983\n//\tfs.inotify.max_user_instances=128\n//\n// Reaching the limit will result in a \"no space left on device\" or \"too many open\n// files\" error.\n//\n// # kqueue notes (macOS, BSD)\n//\n// kqueue requires opening a file descriptor for every file that's being watched;\n// so if you're watching a directory with five files then that's six file\n// descriptors. You will run in to your system's \"max open files\" limit faster on\n// these platforms.\n//\n// The sysctl variables kern.maxfiles and kern.maxfilesperproc can be used to\n// control the maximum number of open files, as well as /etc/login.conf on BSD\n// systems.\n//\n// # Windows notes\n//\n// Paths can be added as \"C:\\path\\to\\dir\", but forward slashes\n// (\"C:/path/to/dir\") will also work.\n//\n// When a watched directory is removed it will always send an event for the\n// directory itself, but may not send events for all files in that directory.\n// Sometimes it will send events for all times, sometimes it will send no\n// events, and often only for some files.\n//\n// The default ReadDirectoryChangesW() buffer size is 64K, which is the largest\n// value that is guaranteed to work with SMB filesystems. If you have many\n// events in quick succession this may not be enough, and you will have to use\n// [WithBufferSize] to increase the value.\ntype Watcher struct {\n\t// Events sends the filesystem change events.\n\t//\n\t// fsnotify can send the following events; a \"path\" here can refer to a\n\t// file, directory, symbolic link, or special file like a FIFO.\n\t//\n\t//   fsnotify.Create    A new path was created; this may be followed by one\n\t//                      or more Write events if data also gets written to a\n\t//                      file.\n\t//\n\t//   fsnotify.Remove    A path was removed.\n\t//\n\t//   fsnotify.Rename    A path was renamed. A rename is always sent with the\n\t//                      old path as Event.Name, and a Create event will be\n\t//                      sent with the new name. Renames are only sent for\n\t//                      paths that are currently watched; e.g. moving an\n\t//                      unmonitored file into a monitored directory will\n\t//                      show up as just a Create. Similarly, renaming a file\n\t//                      to outside a monitored directory will show up as\n\t//                      only a Rename.\n\t//\n\t//   fsnotify.Write     A file or named pipe was written to. A Truncate will\n\t//                      also trigger a Write. A single \"write action\"\n\t//                      initiated by the user may show up as one or multiple\n\t//                      writes, depending on when the system syncs things to\n\t//                      disk. For example when compiling a large Go program\n\t//                      you may get hundreds of Write events, and you may\n\t//                      want to wait until you've stopped receiving them\n\t//                      (see the dedup example in cmd/fsnotify).\n\t//\n\t//                      Some systems may send Write event for directories\n\t//                      when the directory content changes.\n\t//\n\t//   fsnotify.Chmod     Attributes were changed. On Linux this is also sent\n\t//                      when a file is removed (or more accurately, when a\n\t//                      link to an inode is removed). On kqueue it's sent\n\t//                      when a file is truncated. On Windows it's never\n\t//                      sent.\n\tEvents chan Event\n\n\t// Errors sends any errors.\n\t//\n\t// ErrEventOverflow is used to indicate there are too many events:\n\t//\n\t//  - inotify:      There are too many queued events (fs.inotify.max_queued_events sysctl)\n\t//  - windows:      The buffer size is too small; WithBufferSize() can be used to increase it.\n\t//  - kqueue, fen:  Not used.\n\tErrors chan error\n\n\tdone         chan struct{}\n\tkq           int                         // File descriptor (as returned by the kqueue() syscall).\n\tclosepipe    [2]int                      // Pipe used for closing.\n\tmu           sync.Mutex                  // Protects access to watcher data\n\twatches      map[string]int              // Watched file descriptors (key: path).\n\twatchesByDir map[string]map[int]struct{} // Watched file descriptors indexed by the parent directory (key: dirname(path)).\n\tuserWatches  map[string]struct{}         // Watches added with Watcher.Add()\n\tdirFlags     map[string]uint32           // Watched directories to fflags used in kqueue.\n\tpaths        map[int]pathInfo            // File descriptors to path names for processing kqueue events.\n\tfileExists   map[string]struct{}         // Keep track of if we know this file exists (to stop duplicate create events).\n\tisClosed     bool                        // Set to true when Close() is first called\n}\n\ntype pathInfo struct {\n\tname  string\n\tisDir bool\n}\n\n// NewWatcher creates a new Watcher.\nfunc NewWatcher() (*Watcher, error) {\n\treturn NewBufferedWatcher(0)\n}\n\n// NewBufferedWatcher creates a new Watcher with a buffered Watcher.Events\n// channel.\n//\n// The main use case for this is situations with a very large number of events\n// where the kernel buffer size can't be increased (e.g. due to lack of\n// permissions). An unbuffered Watcher will perform better for almost all use\n// cases, and whenever possible you will be better off increasing the kernel\n// buffers instead of adding a large userspace buffer.\nfunc NewBufferedWatcher(sz uint) (*Watcher, error) {\n\tkq, closepipe, err := newKqueue()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tw := &Watcher{\n\t\tkq:           kq,\n\t\tclosepipe:    closepipe,\n\t\twatches:      make(map[string]int),\n\t\twatchesByDir: make(map[string]map[int]struct{}),\n\t\tdirFlags:     make(map[string]uint32),\n\t\tpaths:        make(map[int]pathInfo),\n\t\tfileExists:   make(map[string]struct{}),\n\t\tuserWatches:  make(map[string]struct{}),\n\t\tEvents:       make(chan Event, sz),\n\t\tErrors:       make(chan error),\n\t\tdone:         make(chan struct{}),\n\t}\n\n\tgo w.readEvents()\n\treturn w, nil\n}\n\n// newKqueue creates a new kernel event queue and returns a descriptor.\n//\n// This registers a new event on closepipe, which will trigger an event when\n// it's closed. This way we can use kevent() without timeout/polling; without\n// the closepipe, it would block forever and we wouldn't be able to stop it at\n// all.\nfunc newKqueue() (kq int, closepipe [2]int, err error) {\n\tkq, err = unix.Kqueue()\n\tif kq == -1 {\n\t\treturn kq, closepipe, err\n\t}\n\n\t// Register the close pipe.\n\terr = unix.Pipe(closepipe[:])\n\tif err != nil {\n\t\tunix.Close(kq)\n\t\treturn kq, closepipe, err\n\t}\n\n\t// Register changes to listen on the closepipe.\n\tchanges := make([]unix.Kevent_t, 1)\n\t// SetKevent converts int to the platform-specific types.\n\tunix.SetKevent(&changes[0], closepipe[0], unix.EVFILT_READ,\n\t\tunix.EV_ADD|unix.EV_ENABLE|unix.EV_ONESHOT)\n\n\tok, err := unix.Kevent(kq, changes, nil, nil)\n\tif ok == -1 {\n\t\tunix.Close(kq)\n\t\tunix.Close(closepipe[0])\n\t\tunix.Close(closepipe[1])\n\t\treturn kq, closepipe, err\n\t}\n\treturn kq, closepipe, nil\n}\n\n// Returns true if the event was sent, or false if watcher is closed.\nfunc (w *Watcher) sendEvent(e Event) bool {\n\tselect {\n\tcase w.Events <- e:\n\t\treturn true\n\tcase <-w.done:\n\t\treturn false\n\t}\n}\n\n// Returns true if the error was sent, or false if watcher is closed.\nfunc (w *Watcher) sendError(err error) bool {\n\tselect {\n\tcase w.Errors <- err:\n\t\treturn true\n\tcase <-w.done:\n\t\treturn false\n\t}\n}\n\n// Close removes all watches and closes the Events channel.\nfunc (w *Watcher) Close() error {\n\tw.mu.Lock()\n\tif w.isClosed {\n\t\tw.mu.Unlock()\n\t\treturn nil\n\t}\n\tw.isClosed = true\n\n\t// copy paths to remove while locked\n\tpathsToRemove := make([]string, 0, len(w.watches))\n\tfor name := range w.watches {\n\t\tpathsToRemove = append(pathsToRemove, name)\n\t}\n\tw.mu.Unlock() // Unlock before calling Remove, which also locks\n\tfor _, name := range pathsToRemove {\n\t\tw.Remove(name)\n\t}\n\n\t// Send \"quit\" message to the reader goroutine.\n\tunix.Close(w.closepipe[1])\n\tclose(w.done)\n\n\treturn nil\n}\n\n// Add starts monitoring the path for changes.\n//\n// A path can only be watched once; watching it more than once is a no-op and will\n// not return an error. Paths that do not yet exist on the filesystem cannot be\n// watched.\n//\n// A watch will be automatically removed if the watched path is deleted or\n// renamed. The exception is the Windows backend, which doesn't remove the\n// watcher on renames.\n//\n// Notifications on network filesystems (NFS, SMB, FUSE, etc.) or special\n// filesystems (/proc, /sys, etc.) generally don't work.\n//\n// Returns [ErrClosed] if [Watcher.Close] was called.\n//\n// See [Watcher.AddWith] for a version that allows adding options.\n//\n// # Watching directories\n//\n// All files in a directory are monitored, including new files that are created\n// after the watcher is started. Subdirectories are not watched (i.e. it's\n// non-recursive).\n//\n// # Watching files\n//\n// Watching individual files (rather than directories) is generally not\n// recommended as many programs (especially editors) update files atomically: it\n// will write to a temporary file which is then moved to to destination,\n// overwriting the original (or some variant thereof). The watcher on the\n// original file is now lost, as that no longer exists.\n//\n// The upshot of this is that a power failure or crash won't leave a\n// half-written file.\n//\n// Watch the parent directory and use Event.Name to filter out files you're not\n// interested in. There is an example of this in cmd/fsnotify/file.go.\nfunc (w *Watcher) Add(name string) error { return w.AddWith(name) }\n\n// AddWith is like [Watcher.Add], but allows adding options. When using Add()\n// the defaults described below are used.\n//\n// Possible options are:\n//\n//   - [WithBufferSize] sets the buffer size for the Windows backend; no-op on\n//     other platforms. The default is 64K (65536 bytes).\nfunc (w *Watcher) AddWith(name string, opts ...addOpt) error {\n\t_ = getOptions(opts...)\n\n\tw.mu.Lock()\n\tw.userWatches[name] = struct{}{}\n\tw.mu.Unlock()\n\t_, err := w.addWatch(name, noteAllEvents)\n\treturn err\n}\n\n// Remove stops monitoring the path for changes.\n//\n// Directories are always removed non-recursively. For example, if you added\n// /tmp/dir and /tmp/dir/subdir then you will need to remove both.\n//\n// Removing a path that has not yet been added returns [ErrNonExistentWatch].\n//\n// Returns nil if [Watcher.Close] was called.\nfunc (w *Watcher) Remove(name string) error {\n\treturn w.remove(name, true)\n}\n\nfunc (w *Watcher) remove(name string, unwatchFiles bool) error {\n\tname = filepath.Clean(name)\n\tw.mu.Lock()\n\tif w.isClosed {\n\t\tw.mu.Unlock()\n\t\treturn nil\n\t}\n\twatchfd, ok := w.watches[name]\n\tw.mu.Unlock()\n\tif !ok {\n\t\treturn fmt.Errorf(\"%w: %s\", ErrNonExistentWatch, name)\n\t}\n\n\terr := w.register([]int{watchfd}, unix.EV_DELETE, 0)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tunix.Close(watchfd)\n\n\tw.mu.Lock()\n\tisDir := w.paths[watchfd].isDir\n\tdelete(w.watches, name)\n\tdelete(w.userWatches, name)\n\n\tparentName := filepath.Dir(name)\n\tdelete(w.watchesByDir[parentName], watchfd)\n\n\tif len(w.watchesByDir[parentName]) == 0 {\n\t\tdelete(w.watchesByDir, parentName)\n\t}\n\n\tdelete(w.paths, watchfd)\n\tdelete(w.dirFlags, name)\n\tdelete(w.fileExists, name)\n\tw.mu.Unlock()\n\n\t// Find all watched paths that are in this directory that are not external.\n\tif unwatchFiles && isDir {\n\t\tvar pathsToRemove []string\n\t\tw.mu.Lock()\n\t\tfor fd := range w.watchesByDir[name] {\n\t\t\tpath := w.paths[fd]\n\t\t\tif _, ok := w.userWatches[path.name]; !ok {\n\t\t\t\tpathsToRemove = append(pathsToRemove, path.name)\n\t\t\t}\n\t\t}\n\t\tw.mu.Unlock()\n\t\tfor _, name := range pathsToRemove {\n\t\t\t// Since these are internal, not much sense in propagating error to\n\t\t\t// the user, as that will just confuse them with an error about a\n\t\t\t// path they did not explicitly watch themselves.\n\t\t\tw.Remove(name)\n\t\t}\n\t}\n\treturn nil\n}\n\n// WatchList returns all paths explicitly added with [Watcher.Add] (and are not\n// yet removed).\n//\n// Returns nil if [Watcher.Close] was called.\nfunc (w *Watcher) WatchList() []string {\n\tw.mu.Lock()\n\tdefer w.mu.Unlock()\n\tif w.isClosed {\n\t\treturn nil\n\t}\n\n\tentries := make([]string, 0, len(w.userWatches))\n\tfor pathname := range w.userWatches {\n\t\tentries = append(entries, pathname)\n\t}\n\n\treturn entries\n}\n\n// Watch all events (except NOTE_EXTEND, NOTE_LINK, NOTE_REVOKE)\nconst noteAllEvents = unix.NOTE_DELETE | unix.NOTE_WRITE | unix.NOTE_ATTRIB | unix.NOTE_RENAME\n\n// addWatch adds name to the watched file set; the flags are interpreted as\n// described in kevent(2).\n//\n// Returns the real path to the file which was added, with symlinks resolved.\nfunc (w *Watcher) addWatch(name string, flags uint32) (string, error) {\n\tvar isDir bool\n\tname = filepath.Clean(name)\n\n\tw.mu.Lock()\n\tif w.isClosed {\n\t\tw.mu.Unlock()\n\t\treturn \"\", ErrClosed\n\t}\n\twatchfd, alreadyWatching := w.watches[name]\n\t// We already have a watch, but we can still override flags.\n\tif alreadyWatching {\n\t\tisDir = w.paths[watchfd].isDir\n\t}\n\tw.mu.Unlock()\n\n\tif !alreadyWatching {\n\t\tfi, err := os.Lstat(name)\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\n\t\t// Don't watch sockets or named pipes\n\t\tif (fi.Mode()&os.ModeSocket == os.ModeSocket) || (fi.Mode()&os.ModeNamedPipe == os.ModeNamedPipe) {\n\t\t\treturn \"\", nil\n\t\t}\n\n\t\t// Follow Symlinks.\n\t\tif fi.Mode()&os.ModeSymlink == os.ModeSymlink {\n\t\t\tlink, err := os.Readlink(name)\n\t\t\tif err != nil {\n\t\t\t\t// Return nil because Linux can add unresolvable symlinks to the\n\t\t\t\t// watch list without problems, so maintain consistency with\n\t\t\t\t// that. There will be no file events for broken symlinks.\n\t\t\t\t// TODO: more specific check; returns os.PathError; ENOENT?\n\t\t\t\treturn \"\", nil\n\t\t\t}\n\n\t\t\tw.mu.Lock()\n\t\t\t_, alreadyWatching = w.watches[link]\n\t\t\tw.mu.Unlock()\n\n\t\t\tif alreadyWatching {\n\t\t\t\t// Add to watches so we don't get spurious Create events later\n\t\t\t\t// on when we diff the directories.\n\t\t\t\tw.watches[name] = 0\n\t\t\t\tw.fileExists[name] = struct{}{}\n\t\t\t\treturn link, nil\n\t\t\t}\n\n\t\t\tname = link\n\t\t\tfi, err = os.Lstat(name)\n\t\t\tif err != nil {\n\t\t\t\treturn \"\", nil\n\t\t\t}\n\t\t}\n\n\t\t// Retry on EINTR; open() can return EINTR in practice on macOS.\n\t\t// See #354, and Go issues 11180 and 39237.\n\t\tfor {\n\t\t\twatchfd, err = unix.Open(name, openMode, 0)\n\t\t\tif err == nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tif errors.Is(err, unix.EINTR) {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\treturn \"\", err\n\t\t}\n\n\t\tisDir = fi.IsDir()\n\t}\n\n\terr := w.register([]int{watchfd}, unix.EV_ADD|unix.EV_CLEAR|unix.EV_ENABLE, flags)\n\tif err != nil {\n\t\tunix.Close(watchfd)\n\t\treturn \"\", err\n\t}\n\n\tif !alreadyWatching {\n\t\tw.mu.Lock()\n\t\tparentName := filepath.Dir(name)\n\t\tw.watches[name] = watchfd\n\n\t\twatchesByDir, ok := w.watchesByDir[parentName]\n\t\tif !ok {\n\t\t\twatchesByDir = make(map[int]struct{}, 1)\n\t\t\tw.watchesByDir[parentName] = watchesByDir\n\t\t}\n\t\twatchesByDir[watchfd] = struct{}{}\n\t\tw.paths[watchfd] = pathInfo{name: name, isDir: isDir}\n\t\tw.mu.Unlock()\n\t}\n\n\tif isDir {\n\t\t// Watch the directory if it has not been watched before, or if it was\n\t\t// watched before, but perhaps only a NOTE_DELETE (watchDirectoryFiles)\n\t\tw.mu.Lock()\n\n\t\twatchDir := (flags&unix.NOTE_WRITE) == unix.NOTE_WRITE &&\n\t\t\t(!alreadyWatching || (w.dirFlags[name]&unix.NOTE_WRITE) != unix.NOTE_WRITE)\n\t\t// Store flags so this watch can be updated later\n\t\tw.dirFlags[name] = flags\n\t\tw.mu.Unlock()\n\n\t\tif watchDir {\n\t\t\tif err := w.watchDirectoryFiles(name); err != nil {\n\t\t\t\treturn \"\", err\n\t\t\t}\n\t\t}\n\t}\n\treturn name, nil\n}\n\n// readEvents reads from kqueue and converts the received kevents into\n// Event values that it sends down the Events channel.\nfunc (w *Watcher) readEvents() {\n\tdefer func() {\n\t\tclose(w.Events)\n\t\tclose(w.Errors)\n\t\t_ = unix.Close(w.kq)\n\t\tunix.Close(w.closepipe[0])\n\t}()\n\n\teventBuffer := make([]unix.Kevent_t, 10)\n\tfor closed := false; !closed; {\n\t\tkevents, err := w.read(eventBuffer)\n\t\t// EINTR is okay, the syscall was interrupted before timeout expired.\n\t\tif err != nil && err != unix.EINTR {\n\t\t\tif !w.sendError(fmt.Errorf(\"fsnotify.readEvents: %w\", err)) {\n\t\t\t\tclosed = true\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\t// Flush the events we received to the Events channel\n\t\tfor _, kevent := range kevents {\n\t\t\tvar (\n\t\t\t\twatchfd = int(kevent.Ident)\n\t\t\t\tmask    = uint32(kevent.Fflags)\n\t\t\t)\n\n\t\t\t// Shut down the loop when the pipe is closed, but only after all\n\t\t\t// other events have been processed.\n\t\t\tif watchfd == w.closepipe[0] {\n\t\t\t\tclosed = true\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tw.mu.Lock()\n\t\t\tpath := w.paths[watchfd]\n\t\t\tw.mu.Unlock()\n\n\t\t\tevent := w.newEvent(path.name, mask)\n\n\t\t\tif event.Has(Rename) || event.Has(Remove) {\n\t\t\t\tw.remove(event.Name, false)\n\t\t\t\tw.mu.Lock()\n\t\t\t\tdelete(w.fileExists, event.Name)\n\t\t\t\tw.mu.Unlock()\n\t\t\t}\n\n\t\t\tif path.isDir && event.Has(Write) && !event.Has(Remove) {\n\t\t\t\tw.sendDirectoryChangeEvents(event.Name)\n\t\t\t} else {\n\t\t\t\tif !w.sendEvent(event) {\n\t\t\t\t\tclosed = true\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif event.Has(Remove) {\n\t\t\t\t// Look for a file that may have overwritten this; for example,\n\t\t\t\t// mv f1 f2 will delete f2, then create f2.\n\t\t\t\tif path.isDir {\n\t\t\t\t\tfileDir := filepath.Clean(event.Name)\n\t\t\t\t\tw.mu.Lock()\n\t\t\t\t\t_, found := w.watches[fileDir]\n\t\t\t\t\tw.mu.Unlock()\n\t\t\t\t\tif found {\n\t\t\t\t\t\terr := w.sendDirectoryChangeEvents(fileDir)\n\t\t\t\t\t\tif err != nil {\n\t\t\t\t\t\t\tif !w.sendError(err) {\n\t\t\t\t\t\t\t\tclosed = true\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tfilePath := filepath.Clean(event.Name)\n\t\t\t\t\tif fi, err := os.Lstat(filePath); err == nil {\n\t\t\t\t\t\terr := w.sendFileCreatedEventIfNew(filePath, fi)\n\t\t\t\t\t\tif err != nil {\n\t\t\t\t\t\t\tif !w.sendError(err) {\n\t\t\t\t\t\t\t\tclosed = true\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n// newEvent returns an platform-independent Event based on kqueue Fflags.\nfunc (w *Watcher) newEvent(name string, mask uint32) Event {\n\te := Event{Name: name}\n\tif mask&unix.NOTE_DELETE == unix.NOTE_DELETE {\n\t\te.Op |= Remove\n\t}\n\tif mask&unix.NOTE_WRITE == unix.NOTE_WRITE {\n\t\te.Op |= Write\n\t}\n\tif mask&unix.NOTE_RENAME == unix.NOTE_RENAME {\n\t\te.Op |= Rename\n\t}\n\tif mask&unix.NOTE_ATTRIB == unix.NOTE_ATTRIB {\n\t\te.Op |= Chmod\n\t}\n\t// No point sending a write and delete event at the same time: if it's gone,\n\t// then it's gone.\n\tif e.Op.Has(Write) && e.Op.Has(Remove) {\n\t\te.Op &^= Write\n\t}\n\treturn e\n}\n\n// watchDirectoryFiles to mimic inotify when adding a watch on a directory\nfunc (w *Watcher) watchDirectoryFiles(dirPath string) error {\n\t// Get all files\n\tfiles, err := os.ReadDir(dirPath)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tfor _, f := range files {\n\t\tpath := filepath.Join(dirPath, f.Name())\n\n\t\tfi, err := f.Info()\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"%q: %w\", path, err)\n\t\t}\n\n\t\tcleanPath, err := w.internalWatch(path, fi)\n\t\tif err != nil {\n\t\t\t// No permission to read the file; that's not a problem: just skip.\n\t\t\t// But do add it to w.fileExists to prevent it from being picked up\n\t\t\t// as a \"new\" file later (it still shows up in the directory\n\t\t\t// listing).\n\t\t\tswitch {\n\t\t\tcase errors.Is(err, unix.EACCES) || errors.Is(err, unix.EPERM):\n\t\t\t\tcleanPath = filepath.Clean(path)\n\t\t\tdefault:\n\t\t\t\treturn fmt.Errorf(\"%q: %w\", path, err)\n\t\t\t}\n\t\t}\n\n\t\tw.mu.Lock()\n\t\tw.fileExists[cleanPath] = struct{}{}\n\t\tw.mu.Unlock()\n\t}\n\n\treturn nil\n}\n\n// Search the directory for new files and send an event for them.\n//\n// This functionality is to have the BSD watcher match the inotify, which sends\n// a create event for files created in a watched directory.\nfunc (w *Watcher) sendDirectoryChangeEvents(dir string) error {\n\tfiles, err := os.ReadDir(dir)\n\tif err != nil {\n\t\t// Directory no longer exists: we can ignore this safely. kqueue will\n\t\t// still give us the correct events.\n\t\tif errors.Is(err, os.ErrNotExist) {\n\t\t\treturn nil\n\t\t}\n\t\treturn fmt.Errorf(\"fsnotify.sendDirectoryChangeEvents: %w\", err)\n\t}\n\n\tfor _, f := range files {\n\t\tfi, err := f.Info()\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"fsnotify.sendDirectoryChangeEvents: %w\", err)\n\t\t}\n\n\t\terr = w.sendFileCreatedEventIfNew(filepath.Join(dir, fi.Name()), fi)\n\t\tif err != nil {\n\t\t\t// Don't need to send an error if this file isn't readable.\n\t\t\tif errors.Is(err, unix.EACCES) || errors.Is(err, unix.EPERM) {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t\treturn fmt.Errorf(\"fsnotify.sendDirectoryChangeEvents: %w\", err)\n\t\t}\n\t}\n\treturn nil\n}\n\n// sendFileCreatedEvent sends a create event if the file isn't already being tracked.\nfunc (w *Watcher) sendFileCreatedEventIfNew(filePath string, fi os.FileInfo) (err error) {\n\tw.mu.Lock()\n\t_, doesExist := w.fileExists[filePath]\n\tw.mu.Unlock()\n\tif !doesExist {\n\t\tif !w.sendEvent(Event{Name: filePath, Op: Create}) {\n\t\t\treturn\n\t\t}\n\t}\n\n\t// like watchDirectoryFiles (but without doing another ReadDir)\n\tfilePath, err = w.internalWatch(filePath, fi)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tw.mu.Lock()\n\tw.fileExists[filePath] = struct{}{}\n\tw.mu.Unlock()\n\n\treturn nil\n}\n\nfunc (w *Watcher) internalWatch(name string, fi os.FileInfo) (string, error) {\n\tif fi.IsDir() {\n\t\t// mimic Linux providing delete events for subdirectories, but preserve\n\t\t// the flags used if currently watching subdirectory\n\t\tw.mu.Lock()\n\t\tflags := w.dirFlags[name]\n\t\tw.mu.Unlock()\n\n\t\tflags |= unix.NOTE_DELETE | unix.NOTE_RENAME\n\t\treturn w.addWatch(name, flags)\n\t}\n\n\t// watch file to mimic Linux inotify\n\treturn w.addWatch(name, noteAllEvents)\n}\n\n// Register events with the queue.\nfunc (w *Watcher) register(fds []int, flags int, fflags uint32) error {\n\tchanges := make([]unix.Kevent_t, len(fds))\n\tfor i, fd := range fds {\n\t\t// SetKevent converts int to the platform-specific types.\n\t\tunix.SetKevent(&changes[i], fd, unix.EVFILT_VNODE, flags)\n\t\tchanges[i].Fflags = fflags\n\t}\n\n\t// Register the events.\n\tsuccess, err := unix.Kevent(w.kq, changes, nil, nil)\n\tif success == -1 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// read retrieves pending events, or waits until an event occurs.\nfunc (w *Watcher) read(events []unix.Kevent_t) ([]unix.Kevent_t, error) {\n\tn, err := unix.Kevent(w.kq, nil, events, nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn events[0:n], nil\n}\n"
  },
  {
    "path": "vendor/github.com/fsnotify/fsnotify/backend_other.go",
    "content": "//go:build appengine || (!darwin && !dragonfly && !freebsd && !openbsd && !linux && !netbsd && !solaris && !windows)\n// +build appengine !darwin,!dragonfly,!freebsd,!openbsd,!linux,!netbsd,!solaris,!windows\n\n// Note: the documentation on the Watcher type and methods is generated from\n// mkdoc.zsh\n\npackage fsnotify\n\nimport \"errors\"\n\n// Watcher watches a set of paths, delivering events on a channel.\n//\n// A watcher should not be copied (e.g. pass it by pointer, rather than by\n// value).\n//\n// # Linux notes\n//\n// When a file is removed a Remove event won't be emitted until all file\n// descriptors are closed, and deletes will always emit a Chmod. For example:\n//\n//\tfp := os.Open(\"file\")\n//\tos.Remove(\"file\")        // Triggers Chmod\n//\tfp.Close()               // Triggers Remove\n//\n// This is the event that inotify sends, so not much can be changed about this.\n//\n// The fs.inotify.max_user_watches sysctl variable specifies the upper limit\n// for the number of watches per user, and fs.inotify.max_user_instances\n// specifies the maximum number of inotify instances per user. Every Watcher you\n// create is an \"instance\", and every path you add is a \"watch\".\n//\n// These are also exposed in /proc as /proc/sys/fs/inotify/max_user_watches and\n// /proc/sys/fs/inotify/max_user_instances\n//\n// To increase them you can use sysctl or write the value to the /proc file:\n//\n//\t# Default values on Linux 5.18\n//\tsysctl fs.inotify.max_user_watches=124983\n//\tsysctl fs.inotify.max_user_instances=128\n//\n// To make the changes persist on reboot edit /etc/sysctl.conf or\n// /usr/lib/sysctl.d/50-default.conf (details differ per Linux distro; check\n// your distro's documentation):\n//\n//\tfs.inotify.max_user_watches=124983\n//\tfs.inotify.max_user_instances=128\n//\n// Reaching the limit will result in a \"no space left on device\" or \"too many open\n// files\" error.\n//\n// # kqueue notes (macOS, BSD)\n//\n// kqueue requires opening a file descriptor for every file that's being watched;\n// so if you're watching a directory with five files then that's six file\n// descriptors. You will run in to your system's \"max open files\" limit faster on\n// these platforms.\n//\n// The sysctl variables kern.maxfiles and kern.maxfilesperproc can be used to\n// control the maximum number of open files, as well as /etc/login.conf on BSD\n// systems.\n//\n// # Windows notes\n//\n// Paths can be added as \"C:\\path\\to\\dir\", but forward slashes\n// (\"C:/path/to/dir\") will also work.\n//\n// When a watched directory is removed it will always send an event for the\n// directory itself, but may not send events for all files in that directory.\n// Sometimes it will send events for all times, sometimes it will send no\n// events, and often only for some files.\n//\n// The default ReadDirectoryChangesW() buffer size is 64K, which is the largest\n// value that is guaranteed to work with SMB filesystems. If you have many\n// events in quick succession this may not be enough, and you will have to use\n// [WithBufferSize] to increase the value.\ntype Watcher struct {\n\t// Events sends the filesystem change events.\n\t//\n\t// fsnotify can send the following events; a \"path\" here can refer to a\n\t// file, directory, symbolic link, or special file like a FIFO.\n\t//\n\t//   fsnotify.Create    A new path was created; this may be followed by one\n\t//                      or more Write events if data also gets written to a\n\t//                      file.\n\t//\n\t//   fsnotify.Remove    A path was removed.\n\t//\n\t//   fsnotify.Rename    A path was renamed. A rename is always sent with the\n\t//                      old path as Event.Name, and a Create event will be\n\t//                      sent with the new name. Renames are only sent for\n\t//                      paths that are currently watched; e.g. moving an\n\t//                      unmonitored file into a monitored directory will\n\t//                      show up as just a Create. Similarly, renaming a file\n\t//                      to outside a monitored directory will show up as\n\t//                      only a Rename.\n\t//\n\t//   fsnotify.Write     A file or named pipe was written to. A Truncate will\n\t//                      also trigger a Write. A single \"write action\"\n\t//                      initiated by the user may show up as one or multiple\n\t//                      writes, depending on when the system syncs things to\n\t//                      disk. For example when compiling a large Go program\n\t//                      you may get hundreds of Write events, and you may\n\t//                      want to wait until you've stopped receiving them\n\t//                      (see the dedup example in cmd/fsnotify).\n\t//\n\t//                      Some systems may send Write event for directories\n\t//                      when the directory content changes.\n\t//\n\t//   fsnotify.Chmod     Attributes were changed. On Linux this is also sent\n\t//                      when a file is removed (or more accurately, when a\n\t//                      link to an inode is removed). On kqueue it's sent\n\t//                      when a file is truncated. On Windows it's never\n\t//                      sent.\n\tEvents chan Event\n\n\t// Errors sends any errors.\n\t//\n\t// ErrEventOverflow is used to indicate there are too many events:\n\t//\n\t//  - inotify:      There are too many queued events (fs.inotify.max_queued_events sysctl)\n\t//  - windows:      The buffer size is too small; WithBufferSize() can be used to increase it.\n\t//  - kqueue, fen:  Not used.\n\tErrors chan error\n}\n\n// NewWatcher creates a new Watcher.\nfunc NewWatcher() (*Watcher, error) {\n\treturn nil, errors.New(\"fsnotify not supported on the current platform\")\n}\n\n// NewBufferedWatcher creates a new Watcher with a buffered Watcher.Events\n// channel.\n//\n// The main use case for this is situations with a very large number of events\n// where the kernel buffer size can't be increased (e.g. due to lack of\n// permissions). An unbuffered Watcher will perform better for almost all use\n// cases, and whenever possible you will be better off increasing the kernel\n// buffers instead of adding a large userspace buffer.\nfunc NewBufferedWatcher(sz uint) (*Watcher, error) { return NewWatcher() }\n\n// Close removes all watches and closes the Events channel.\nfunc (w *Watcher) Close() error { return nil }\n\n// WatchList returns all paths explicitly added with [Watcher.Add] (and are not\n// yet removed).\n//\n// Returns nil if [Watcher.Close] was called.\nfunc (w *Watcher) WatchList() []string { return nil }\n\n// Add starts monitoring the path for changes.\n//\n// A path can only be watched once; watching it more than once is a no-op and will\n// not return an error. Paths that do not yet exist on the filesystem cannot be\n// watched.\n//\n// A watch will be automatically removed if the watched path is deleted or\n// renamed. The exception is the Windows backend, which doesn't remove the\n// watcher on renames.\n//\n// Notifications on network filesystems (NFS, SMB, FUSE, etc.) or special\n// filesystems (/proc, /sys, etc.) generally don't work.\n//\n// Returns [ErrClosed] if [Watcher.Close] was called.\n//\n// See [Watcher.AddWith] for a version that allows adding options.\n//\n// # Watching directories\n//\n// All files in a directory are monitored, including new files that are created\n// after the watcher is started. Subdirectories are not watched (i.e. it's\n// non-recursive).\n//\n// # Watching files\n//\n// Watching individual files (rather than directories) is generally not\n// recommended as many programs (especially editors) update files atomically: it\n// will write to a temporary file which is then moved to to destination,\n// overwriting the original (or some variant thereof). The watcher on the\n// original file is now lost, as that no longer exists.\n//\n// The upshot of this is that a power failure or crash won't leave a\n// half-written file.\n//\n// Watch the parent directory and use Event.Name to filter out files you're not\n// interested in. There is an example of this in cmd/fsnotify/file.go.\nfunc (w *Watcher) Add(name string) error { return nil }\n\n// AddWith is like [Watcher.Add], but allows adding options. When using Add()\n// the defaults described below are used.\n//\n// Possible options are:\n//\n//   - [WithBufferSize] sets the buffer size for the Windows backend; no-op on\n//     other platforms. The default is 64K (65536 bytes).\nfunc (w *Watcher) AddWith(name string, opts ...addOpt) error { return nil }\n\n// Remove stops monitoring the path for changes.\n//\n// Directories are always removed non-recursively. For example, if you added\n// /tmp/dir and /tmp/dir/subdir then you will need to remove both.\n//\n// Removing a path that has not yet been added returns [ErrNonExistentWatch].\n//\n// Returns nil if [Watcher.Close] was called.\nfunc (w *Watcher) Remove(name string) error { return nil }\n"
  },
  {
    "path": "vendor/github.com/fsnotify/fsnotify/backend_windows.go",
    "content": "//go:build windows\n// +build windows\n\n// Windows backend based on ReadDirectoryChangesW()\n//\n// https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-readdirectorychangesw\n//\n// Note: the documentation on the Watcher type and methods is generated from\n// mkdoc.zsh\n\npackage fsnotify\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"reflect\"\n\t\"runtime\"\n\t\"strings\"\n\t\"sync\"\n\t\"unsafe\"\n\n\t\"golang.org/x/sys/windows\"\n)\n\n// Watcher watches a set of paths, delivering events on a channel.\n//\n// A watcher should not be copied (e.g. pass it by pointer, rather than by\n// value).\n//\n// # Linux notes\n//\n// When a file is removed a Remove event won't be emitted until all file\n// descriptors are closed, and deletes will always emit a Chmod. For example:\n//\n//\tfp := os.Open(\"file\")\n//\tos.Remove(\"file\")        // Triggers Chmod\n//\tfp.Close()               // Triggers Remove\n//\n// This is the event that inotify sends, so not much can be changed about this.\n//\n// The fs.inotify.max_user_watches sysctl variable specifies the upper limit\n// for the number of watches per user, and fs.inotify.max_user_instances\n// specifies the maximum number of inotify instances per user. Every Watcher you\n// create is an \"instance\", and every path you add is a \"watch\".\n//\n// These are also exposed in /proc as /proc/sys/fs/inotify/max_user_watches and\n// /proc/sys/fs/inotify/max_user_instances\n//\n// To increase them you can use sysctl or write the value to the /proc file:\n//\n//\t# Default values on Linux 5.18\n//\tsysctl fs.inotify.max_user_watches=124983\n//\tsysctl fs.inotify.max_user_instances=128\n//\n// To make the changes persist on reboot edit /etc/sysctl.conf or\n// /usr/lib/sysctl.d/50-default.conf (details differ per Linux distro; check\n// your distro's documentation):\n//\n//\tfs.inotify.max_user_watches=124983\n//\tfs.inotify.max_user_instances=128\n//\n// Reaching the limit will result in a \"no space left on device\" or \"too many open\n// files\" error.\n//\n// # kqueue notes (macOS, BSD)\n//\n// kqueue requires opening a file descriptor for every file that's being watched;\n// so if you're watching a directory with five files then that's six file\n// descriptors. You will run in to your system's \"max open files\" limit faster on\n// these platforms.\n//\n// The sysctl variables kern.maxfiles and kern.maxfilesperproc can be used to\n// control the maximum number of open files, as well as /etc/login.conf on BSD\n// systems.\n//\n// # Windows notes\n//\n// Paths can be added as \"C:\\path\\to\\dir\", but forward slashes\n// (\"C:/path/to/dir\") will also work.\n//\n// When a watched directory is removed it will always send an event for the\n// directory itself, but may not send events for all files in that directory.\n// Sometimes it will send events for all times, sometimes it will send no\n// events, and often only for some files.\n//\n// The default ReadDirectoryChangesW() buffer size is 64K, which is the largest\n// value that is guaranteed to work with SMB filesystems. If you have many\n// events in quick succession this may not be enough, and you will have to use\n// [WithBufferSize] to increase the value.\ntype Watcher struct {\n\t// Events sends the filesystem change events.\n\t//\n\t// fsnotify can send the following events; a \"path\" here can refer to a\n\t// file, directory, symbolic link, or special file like a FIFO.\n\t//\n\t//   fsnotify.Create    A new path was created; this may be followed by one\n\t//                      or more Write events if data also gets written to a\n\t//                      file.\n\t//\n\t//   fsnotify.Remove    A path was removed.\n\t//\n\t//   fsnotify.Rename    A path was renamed. A rename is always sent with the\n\t//                      old path as Event.Name, and a Create event will be\n\t//                      sent with the new name. Renames are only sent for\n\t//                      paths that are currently watched; e.g. moving an\n\t//                      unmonitored file into a monitored directory will\n\t//                      show up as just a Create. Similarly, renaming a file\n\t//                      to outside a monitored directory will show up as\n\t//                      only a Rename.\n\t//\n\t//   fsnotify.Write     A file or named pipe was written to. A Truncate will\n\t//                      also trigger a Write. A single \"write action\"\n\t//                      initiated by the user may show up as one or multiple\n\t//                      writes, depending on when the system syncs things to\n\t//                      disk. For example when compiling a large Go program\n\t//                      you may get hundreds of Write events, and you may\n\t//                      want to wait until you've stopped receiving them\n\t//                      (see the dedup example in cmd/fsnotify).\n\t//\n\t//                      Some systems may send Write event for directories\n\t//                      when the directory content changes.\n\t//\n\t//   fsnotify.Chmod     Attributes were changed. On Linux this is also sent\n\t//                      when a file is removed (or more accurately, when a\n\t//                      link to an inode is removed). On kqueue it's sent\n\t//                      when a file is truncated. On Windows it's never\n\t//                      sent.\n\tEvents chan Event\n\n\t// Errors sends any errors.\n\t//\n\t// ErrEventOverflow is used to indicate there are too many events:\n\t//\n\t//  - inotify:      There are too many queued events (fs.inotify.max_queued_events sysctl)\n\t//  - windows:      The buffer size is too small; WithBufferSize() can be used to increase it.\n\t//  - kqueue, fen:  Not used.\n\tErrors chan error\n\n\tport  windows.Handle // Handle to completion port\n\tinput chan *input    // Inputs to the reader are sent on this channel\n\tquit  chan chan<- error\n\n\tmu      sync.Mutex // Protects access to watches, closed\n\twatches watchMap   // Map of watches (key: i-number)\n\tclosed  bool       // Set to true when Close() is first called\n}\n\n// NewWatcher creates a new Watcher.\nfunc NewWatcher() (*Watcher, error) {\n\treturn NewBufferedWatcher(50)\n}\n\n// NewBufferedWatcher creates a new Watcher with a buffered Watcher.Events\n// channel.\n//\n// The main use case for this is situations with a very large number of events\n// where the kernel buffer size can't be increased (e.g. due to lack of\n// permissions). An unbuffered Watcher will perform better for almost all use\n// cases, and whenever possible you will be better off increasing the kernel\n// buffers instead of adding a large userspace buffer.\nfunc NewBufferedWatcher(sz uint) (*Watcher, error) {\n\tport, err := windows.CreateIoCompletionPort(windows.InvalidHandle, 0, 0, 0)\n\tif err != nil {\n\t\treturn nil, os.NewSyscallError(\"CreateIoCompletionPort\", err)\n\t}\n\tw := &Watcher{\n\t\tport:    port,\n\t\twatches: make(watchMap),\n\t\tinput:   make(chan *input, 1),\n\t\tEvents:  make(chan Event, sz),\n\t\tErrors:  make(chan error),\n\t\tquit:    make(chan chan<- error, 1),\n\t}\n\tgo w.readEvents()\n\treturn w, nil\n}\n\nfunc (w *Watcher) isClosed() bool {\n\tw.mu.Lock()\n\tdefer w.mu.Unlock()\n\treturn w.closed\n}\n\nfunc (w *Watcher) sendEvent(name string, mask uint64) bool {\n\tif mask == 0 {\n\t\treturn false\n\t}\n\n\tevent := w.newEvent(name, uint32(mask))\n\tselect {\n\tcase ch := <-w.quit:\n\t\tw.quit <- ch\n\tcase w.Events <- event:\n\t}\n\treturn true\n}\n\n// Returns true if the error was sent, or false if watcher is closed.\nfunc (w *Watcher) sendError(err error) bool {\n\tselect {\n\tcase w.Errors <- err:\n\t\treturn true\n\tcase <-w.quit:\n\t}\n\treturn false\n}\n\n// Close removes all watches and closes the Events channel.\nfunc (w *Watcher) Close() error {\n\tif w.isClosed() {\n\t\treturn nil\n\t}\n\n\tw.mu.Lock()\n\tw.closed = true\n\tw.mu.Unlock()\n\n\t// Send \"quit\" message to the reader goroutine\n\tch := make(chan error)\n\tw.quit <- ch\n\tif err := w.wakeupReader(); err != nil {\n\t\treturn err\n\t}\n\treturn <-ch\n}\n\n// Add starts monitoring the path for changes.\n//\n// A path can only be watched once; watching it more than once is a no-op and will\n// not return an error. Paths that do not yet exist on the filesystem cannot be\n// watched.\n//\n// A watch will be automatically removed if the watched path is deleted or\n// renamed. The exception is the Windows backend, which doesn't remove the\n// watcher on renames.\n//\n// Notifications on network filesystems (NFS, SMB, FUSE, etc.) or special\n// filesystems (/proc, /sys, etc.) generally don't work.\n//\n// Returns [ErrClosed] if [Watcher.Close] was called.\n//\n// See [Watcher.AddWith] for a version that allows adding options.\n//\n// # Watching directories\n//\n// All files in a directory are monitored, including new files that are created\n// after the watcher is started. Subdirectories are not watched (i.e. it's\n// non-recursive).\n//\n// # Watching files\n//\n// Watching individual files (rather than directories) is generally not\n// recommended as many programs (especially editors) update files atomically: it\n// will write to a temporary file which is then moved to to destination,\n// overwriting the original (or some variant thereof). The watcher on the\n// original file is now lost, as that no longer exists.\n//\n// The upshot of this is that a power failure or crash won't leave a\n// half-written file.\n//\n// Watch the parent directory and use Event.Name to filter out files you're not\n// interested in. There is an example of this in cmd/fsnotify/file.go.\nfunc (w *Watcher) Add(name string) error { return w.AddWith(name) }\n\n// AddWith is like [Watcher.Add], but allows adding options. When using Add()\n// the defaults described below are used.\n//\n// Possible options are:\n//\n//   - [WithBufferSize] sets the buffer size for the Windows backend; no-op on\n//     other platforms. The default is 64K (65536 bytes).\nfunc (w *Watcher) AddWith(name string, opts ...addOpt) error {\n\tif w.isClosed() {\n\t\treturn ErrClosed\n\t}\n\n\twith := getOptions(opts...)\n\tif with.bufsize < 4096 {\n\t\treturn fmt.Errorf(\"fsnotify.WithBufferSize: buffer size cannot be smaller than 4096 bytes\")\n\t}\n\n\tin := &input{\n\t\top:      opAddWatch,\n\t\tpath:    filepath.Clean(name),\n\t\tflags:   sysFSALLEVENTS,\n\t\treply:   make(chan error),\n\t\tbufsize: with.bufsize,\n\t}\n\tw.input <- in\n\tif err := w.wakeupReader(); err != nil {\n\t\treturn err\n\t}\n\treturn <-in.reply\n}\n\n// Remove stops monitoring the path for changes.\n//\n// Directories are always removed non-recursively. For example, if you added\n// /tmp/dir and /tmp/dir/subdir then you will need to remove both.\n//\n// Removing a path that has not yet been added returns [ErrNonExistentWatch].\n//\n// Returns nil if [Watcher.Close] was called.\nfunc (w *Watcher) Remove(name string) error {\n\tif w.isClosed() {\n\t\treturn nil\n\t}\n\n\tin := &input{\n\t\top:    opRemoveWatch,\n\t\tpath:  filepath.Clean(name),\n\t\treply: make(chan error),\n\t}\n\tw.input <- in\n\tif err := w.wakeupReader(); err != nil {\n\t\treturn err\n\t}\n\treturn <-in.reply\n}\n\n// WatchList returns all paths explicitly added with [Watcher.Add] (and are not\n// yet removed).\n//\n// Returns nil if [Watcher.Close] was called.\nfunc (w *Watcher) WatchList() []string {\n\tif w.isClosed() {\n\t\treturn nil\n\t}\n\n\tw.mu.Lock()\n\tdefer w.mu.Unlock()\n\n\tentries := make([]string, 0, len(w.watches))\n\tfor _, entry := range w.watches {\n\t\tfor _, watchEntry := range entry {\n\t\t\tentries = append(entries, watchEntry.path)\n\t\t}\n\t}\n\n\treturn entries\n}\n\n// These options are from the old golang.org/x/exp/winfsnotify, where you could\n// add various options to the watch. This has long since been removed.\n//\n// The \"sys\" in the name is misleading as they're not part of any \"system\".\n//\n// This should all be removed at some point, and just use windows.FILE_NOTIFY_*\nconst (\n\tsysFSALLEVENTS  = 0xfff\n\tsysFSCREATE     = 0x100\n\tsysFSDELETE     = 0x200\n\tsysFSDELETESELF = 0x400\n\tsysFSMODIFY     = 0x2\n\tsysFSMOVE       = 0xc0\n\tsysFSMOVEDFROM  = 0x40\n\tsysFSMOVEDTO    = 0x80\n\tsysFSMOVESELF   = 0x800\n\tsysFSIGNORED    = 0x8000\n)\n\nfunc (w *Watcher) newEvent(name string, mask uint32) Event {\n\te := Event{Name: name}\n\tif mask&sysFSCREATE == sysFSCREATE || mask&sysFSMOVEDTO == sysFSMOVEDTO {\n\t\te.Op |= Create\n\t}\n\tif mask&sysFSDELETE == sysFSDELETE || mask&sysFSDELETESELF == sysFSDELETESELF {\n\t\te.Op |= Remove\n\t}\n\tif mask&sysFSMODIFY == sysFSMODIFY {\n\t\te.Op |= Write\n\t}\n\tif mask&sysFSMOVE == sysFSMOVE || mask&sysFSMOVESELF == sysFSMOVESELF || mask&sysFSMOVEDFROM == sysFSMOVEDFROM {\n\t\te.Op |= Rename\n\t}\n\treturn e\n}\n\nconst (\n\topAddWatch = iota\n\topRemoveWatch\n)\n\nconst (\n\tprovisional uint64 = 1 << (32 + iota)\n)\n\ntype input struct {\n\top      int\n\tpath    string\n\tflags   uint32\n\tbufsize int\n\treply   chan error\n}\n\ntype inode struct {\n\thandle windows.Handle\n\tvolume uint32\n\tindex  uint64\n}\n\ntype watch struct {\n\tov      windows.Overlapped\n\tino     *inode            // i-number\n\trecurse bool              // Recursive watch?\n\tpath    string            // Directory path\n\tmask    uint64            // Directory itself is being watched with these notify flags\n\tnames   map[string]uint64 // Map of names being watched and their notify flags\n\trename  string            // Remembers the old name while renaming a file\n\tbuf     []byte            // buffer, allocated later\n}\n\ntype (\n\tindexMap map[uint64]*watch\n\twatchMap map[uint32]indexMap\n)\n\nfunc (w *Watcher) wakeupReader() error {\n\terr := windows.PostQueuedCompletionStatus(w.port, 0, 0, nil)\n\tif err != nil {\n\t\treturn os.NewSyscallError(\"PostQueuedCompletionStatus\", err)\n\t}\n\treturn nil\n}\n\nfunc (w *Watcher) getDir(pathname string) (dir string, err error) {\n\tattr, err := windows.GetFileAttributes(windows.StringToUTF16Ptr(pathname))\n\tif err != nil {\n\t\treturn \"\", os.NewSyscallError(\"GetFileAttributes\", err)\n\t}\n\tif attr&windows.FILE_ATTRIBUTE_DIRECTORY != 0 {\n\t\tdir = pathname\n\t} else {\n\t\tdir, _ = filepath.Split(pathname)\n\t\tdir = filepath.Clean(dir)\n\t}\n\treturn\n}\n\nfunc (w *Watcher) getIno(path string) (ino *inode, err error) {\n\th, err := windows.CreateFile(windows.StringToUTF16Ptr(path),\n\t\twindows.FILE_LIST_DIRECTORY,\n\t\twindows.FILE_SHARE_READ|windows.FILE_SHARE_WRITE|windows.FILE_SHARE_DELETE,\n\t\tnil, windows.OPEN_EXISTING,\n\t\twindows.FILE_FLAG_BACKUP_SEMANTICS|windows.FILE_FLAG_OVERLAPPED, 0)\n\tif err != nil {\n\t\treturn nil, os.NewSyscallError(\"CreateFile\", err)\n\t}\n\n\tvar fi windows.ByHandleFileInformation\n\terr = windows.GetFileInformationByHandle(h, &fi)\n\tif err != nil {\n\t\twindows.CloseHandle(h)\n\t\treturn nil, os.NewSyscallError(\"GetFileInformationByHandle\", err)\n\t}\n\tino = &inode{\n\t\thandle: h,\n\t\tvolume: fi.VolumeSerialNumber,\n\t\tindex:  uint64(fi.FileIndexHigh)<<32 | uint64(fi.FileIndexLow),\n\t}\n\treturn ino, nil\n}\n\n// Must run within the I/O thread.\nfunc (m watchMap) get(ino *inode) *watch {\n\tif i := m[ino.volume]; i != nil {\n\t\treturn i[ino.index]\n\t}\n\treturn nil\n}\n\n// Must run within the I/O thread.\nfunc (m watchMap) set(ino *inode, watch *watch) {\n\ti := m[ino.volume]\n\tif i == nil {\n\t\ti = make(indexMap)\n\t\tm[ino.volume] = i\n\t}\n\ti[ino.index] = watch\n}\n\n// Must run within the I/O thread.\nfunc (w *Watcher) addWatch(pathname string, flags uint64, bufsize int) error {\n\t//pathname, recurse := recursivePath(pathname)\n\trecurse := false\n\n\tdir, err := w.getDir(pathname)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tino, err := w.getIno(dir)\n\tif err != nil {\n\t\treturn err\n\t}\n\tw.mu.Lock()\n\twatchEntry := w.watches.get(ino)\n\tw.mu.Unlock()\n\tif watchEntry == nil {\n\t\t_, err := windows.CreateIoCompletionPort(ino.handle, w.port, 0, 0)\n\t\tif err != nil {\n\t\t\twindows.CloseHandle(ino.handle)\n\t\t\treturn os.NewSyscallError(\"CreateIoCompletionPort\", err)\n\t\t}\n\t\twatchEntry = &watch{\n\t\t\tino:     ino,\n\t\t\tpath:    dir,\n\t\t\tnames:   make(map[string]uint64),\n\t\t\trecurse: recurse,\n\t\t\tbuf:     make([]byte, bufsize),\n\t\t}\n\t\tw.mu.Lock()\n\t\tw.watches.set(ino, watchEntry)\n\t\tw.mu.Unlock()\n\t\tflags |= provisional\n\t} else {\n\t\twindows.CloseHandle(ino.handle)\n\t}\n\tif pathname == dir {\n\t\twatchEntry.mask |= flags\n\t} else {\n\t\twatchEntry.names[filepath.Base(pathname)] |= flags\n\t}\n\n\terr = w.startRead(watchEntry)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif pathname == dir {\n\t\twatchEntry.mask &= ^provisional\n\t} else {\n\t\twatchEntry.names[filepath.Base(pathname)] &= ^provisional\n\t}\n\treturn nil\n}\n\n// Must run within the I/O thread.\nfunc (w *Watcher) remWatch(pathname string) error {\n\tpathname, recurse := recursivePath(pathname)\n\n\tdir, err := w.getDir(pathname)\n\tif err != nil {\n\t\treturn err\n\t}\n\tino, err := w.getIno(dir)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tw.mu.Lock()\n\twatch := w.watches.get(ino)\n\tw.mu.Unlock()\n\n\tif recurse && !watch.recurse {\n\t\treturn fmt.Errorf(\"can't use \\\\... with non-recursive watch %q\", pathname)\n\t}\n\n\terr = windows.CloseHandle(ino.handle)\n\tif err != nil {\n\t\tw.sendError(os.NewSyscallError(\"CloseHandle\", err))\n\t}\n\tif watch == nil {\n\t\treturn fmt.Errorf(\"%w: %s\", ErrNonExistentWatch, pathname)\n\t}\n\tif pathname == dir {\n\t\tw.sendEvent(watch.path, watch.mask&sysFSIGNORED)\n\t\twatch.mask = 0\n\t} else {\n\t\tname := filepath.Base(pathname)\n\t\tw.sendEvent(filepath.Join(watch.path, name), watch.names[name]&sysFSIGNORED)\n\t\tdelete(watch.names, name)\n\t}\n\n\treturn w.startRead(watch)\n}\n\n// Must run within the I/O thread.\nfunc (w *Watcher) deleteWatch(watch *watch) {\n\tfor name, mask := range watch.names {\n\t\tif mask&provisional == 0 {\n\t\t\tw.sendEvent(filepath.Join(watch.path, name), mask&sysFSIGNORED)\n\t\t}\n\t\tdelete(watch.names, name)\n\t}\n\tif watch.mask != 0 {\n\t\tif watch.mask&provisional == 0 {\n\t\t\tw.sendEvent(watch.path, watch.mask&sysFSIGNORED)\n\t\t}\n\t\twatch.mask = 0\n\t}\n}\n\n// Must run within the I/O thread.\nfunc (w *Watcher) startRead(watch *watch) error {\n\terr := windows.CancelIo(watch.ino.handle)\n\tif err != nil {\n\t\tw.sendError(os.NewSyscallError(\"CancelIo\", err))\n\t\tw.deleteWatch(watch)\n\t}\n\tmask := w.toWindowsFlags(watch.mask)\n\tfor _, m := range watch.names {\n\t\tmask |= w.toWindowsFlags(m)\n\t}\n\tif mask == 0 {\n\t\terr := windows.CloseHandle(watch.ino.handle)\n\t\tif err != nil {\n\t\t\tw.sendError(os.NewSyscallError(\"CloseHandle\", err))\n\t\t}\n\t\tw.mu.Lock()\n\t\tdelete(w.watches[watch.ino.volume], watch.ino.index)\n\t\tw.mu.Unlock()\n\t\treturn nil\n\t}\n\n\t// We need to pass the array, rather than the slice.\n\thdr := (*reflect.SliceHeader)(unsafe.Pointer(&watch.buf))\n\trdErr := windows.ReadDirectoryChanges(watch.ino.handle,\n\t\t(*byte)(unsafe.Pointer(hdr.Data)), uint32(hdr.Len),\n\t\twatch.recurse, mask, nil, &watch.ov, 0)\n\tif rdErr != nil {\n\t\terr := os.NewSyscallError(\"ReadDirectoryChanges\", rdErr)\n\t\tif rdErr == windows.ERROR_ACCESS_DENIED && watch.mask&provisional == 0 {\n\t\t\t// Watched directory was probably removed\n\t\t\tw.sendEvent(watch.path, watch.mask&sysFSDELETESELF)\n\t\t\terr = nil\n\t\t}\n\t\tw.deleteWatch(watch)\n\t\tw.startRead(watch)\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// readEvents reads from the I/O completion port, converts the\n// received events into Event objects and sends them via the Events channel.\n// Entry point to the I/O thread.\nfunc (w *Watcher) readEvents() {\n\tvar (\n\t\tn   uint32\n\t\tkey uintptr\n\t\tov  *windows.Overlapped\n\t)\n\truntime.LockOSThread()\n\n\tfor {\n\t\t// This error is handled after the watch == nil check below.\n\t\tqErr := windows.GetQueuedCompletionStatus(w.port, &n, &key, &ov, windows.INFINITE)\n\n\t\twatch := (*watch)(unsafe.Pointer(ov))\n\t\tif watch == nil {\n\t\t\tselect {\n\t\t\tcase ch := <-w.quit:\n\t\t\t\tw.mu.Lock()\n\t\t\t\tvar indexes []indexMap\n\t\t\t\tfor _, index := range w.watches {\n\t\t\t\t\tindexes = append(indexes, index)\n\t\t\t\t}\n\t\t\t\tw.mu.Unlock()\n\t\t\t\tfor _, index := range indexes {\n\t\t\t\t\tfor _, watch := range index {\n\t\t\t\t\t\tw.deleteWatch(watch)\n\t\t\t\t\t\tw.startRead(watch)\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\terr := windows.CloseHandle(w.port)\n\t\t\t\tif err != nil {\n\t\t\t\t\terr = os.NewSyscallError(\"CloseHandle\", err)\n\t\t\t\t}\n\t\t\t\tclose(w.Events)\n\t\t\t\tclose(w.Errors)\n\t\t\t\tch <- err\n\t\t\t\treturn\n\t\t\tcase in := <-w.input:\n\t\t\t\tswitch in.op {\n\t\t\t\tcase opAddWatch:\n\t\t\t\t\tin.reply <- w.addWatch(in.path, uint64(in.flags), in.bufsize)\n\t\t\t\tcase opRemoveWatch:\n\t\t\t\t\tin.reply <- w.remWatch(in.path)\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\tswitch qErr {\n\t\tcase nil:\n\t\t\t// No error\n\t\tcase windows.ERROR_MORE_DATA:\n\t\t\tif watch == nil {\n\t\t\t\tw.sendError(errors.New(\"ERROR_MORE_DATA has unexpectedly null lpOverlapped buffer\"))\n\t\t\t} else {\n\t\t\t\t// The i/o succeeded but the buffer is full.\n\t\t\t\t// In theory we should be building up a full packet.\n\t\t\t\t// In practice we can get away with just carrying on.\n\t\t\t\tn = uint32(unsafe.Sizeof(watch.buf))\n\t\t\t}\n\t\tcase windows.ERROR_ACCESS_DENIED:\n\t\t\t// Watched directory was probably removed\n\t\t\tw.sendEvent(watch.path, watch.mask&sysFSDELETESELF)\n\t\t\tw.deleteWatch(watch)\n\t\t\tw.startRead(watch)\n\t\t\tcontinue\n\t\tcase windows.ERROR_OPERATION_ABORTED:\n\t\t\t// CancelIo was called on this handle\n\t\t\tcontinue\n\t\tdefault:\n\t\t\tw.sendError(os.NewSyscallError(\"GetQueuedCompletionPort\", qErr))\n\t\t\tcontinue\n\t\t}\n\n\t\tvar offset uint32\n\t\tfor {\n\t\t\tif n == 0 {\n\t\t\t\tw.sendError(ErrEventOverflow)\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\t// Point \"raw\" to the event in the buffer\n\t\t\traw := (*windows.FileNotifyInformation)(unsafe.Pointer(&watch.buf[offset]))\n\n\t\t\t// Create a buf that is the size of the path name\n\t\t\tsize := int(raw.FileNameLength / 2)\n\t\t\tvar buf []uint16\n\t\t\t// TODO: Use unsafe.Slice in Go 1.17; https://stackoverflow.com/questions/51187973\n\t\t\tsh := (*reflect.SliceHeader)(unsafe.Pointer(&buf))\n\t\t\tsh.Data = uintptr(unsafe.Pointer(&raw.FileName))\n\t\t\tsh.Len = size\n\t\t\tsh.Cap = size\n\t\t\tname := windows.UTF16ToString(buf)\n\t\t\tfullname := filepath.Join(watch.path, name)\n\n\t\t\tvar mask uint64\n\t\t\tswitch raw.Action {\n\t\t\tcase windows.FILE_ACTION_REMOVED:\n\t\t\t\tmask = sysFSDELETESELF\n\t\t\tcase windows.FILE_ACTION_MODIFIED:\n\t\t\t\tmask = sysFSMODIFY\n\t\t\tcase windows.FILE_ACTION_RENAMED_OLD_NAME:\n\t\t\t\twatch.rename = name\n\t\t\tcase windows.FILE_ACTION_RENAMED_NEW_NAME:\n\t\t\t\t// Update saved path of all sub-watches.\n\t\t\t\told := filepath.Join(watch.path, watch.rename)\n\t\t\t\tw.mu.Lock()\n\t\t\t\tfor _, watchMap := range w.watches {\n\t\t\t\t\tfor _, ww := range watchMap {\n\t\t\t\t\t\tif strings.HasPrefix(ww.path, old) {\n\t\t\t\t\t\t\tww.path = filepath.Join(fullname, strings.TrimPrefix(ww.path, old))\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tw.mu.Unlock()\n\n\t\t\t\tif watch.names[watch.rename] != 0 {\n\t\t\t\t\twatch.names[name] |= watch.names[watch.rename]\n\t\t\t\t\tdelete(watch.names, watch.rename)\n\t\t\t\t\tmask = sysFSMOVESELF\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tsendNameEvent := func() {\n\t\t\t\tw.sendEvent(fullname, watch.names[name]&mask)\n\t\t\t}\n\t\t\tif raw.Action != windows.FILE_ACTION_RENAMED_NEW_NAME {\n\t\t\t\tsendNameEvent()\n\t\t\t}\n\t\t\tif raw.Action == windows.FILE_ACTION_REMOVED {\n\t\t\t\tw.sendEvent(fullname, watch.names[name]&sysFSIGNORED)\n\t\t\t\tdelete(watch.names, name)\n\t\t\t}\n\n\t\t\tw.sendEvent(fullname, watch.mask&w.toFSnotifyFlags(raw.Action))\n\t\t\tif raw.Action == windows.FILE_ACTION_RENAMED_NEW_NAME {\n\t\t\t\tfullname = filepath.Join(watch.path, watch.rename)\n\t\t\t\tsendNameEvent()\n\t\t\t}\n\n\t\t\t// Move to the next event in the buffer\n\t\t\tif raw.NextEntryOffset == 0 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\toffset += raw.NextEntryOffset\n\n\t\t\t// Error!\n\t\t\tif offset >= n {\n\t\t\t\t//lint:ignore ST1005 Windows should be capitalized\n\t\t\t\tw.sendError(errors.New(\n\t\t\t\t\t\"Windows system assumed buffer larger than it is, events have likely been missed\"))\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\t\tif err := w.startRead(watch); err != nil {\n\t\t\tw.sendError(err)\n\t\t}\n\t}\n}\n\nfunc (w *Watcher) toWindowsFlags(mask uint64) uint32 {\n\tvar m uint32\n\tif mask&sysFSMODIFY != 0 {\n\t\tm |= windows.FILE_NOTIFY_CHANGE_LAST_WRITE\n\t}\n\tif mask&(sysFSMOVE|sysFSCREATE|sysFSDELETE) != 0 {\n\t\tm |= windows.FILE_NOTIFY_CHANGE_FILE_NAME | windows.FILE_NOTIFY_CHANGE_DIR_NAME\n\t}\n\treturn m\n}\n\nfunc (w *Watcher) toFSnotifyFlags(action uint32) uint64 {\n\tswitch action {\n\tcase windows.FILE_ACTION_ADDED:\n\t\treturn sysFSCREATE\n\tcase windows.FILE_ACTION_REMOVED:\n\t\treturn sysFSDELETE\n\tcase windows.FILE_ACTION_MODIFIED:\n\t\treturn sysFSMODIFY\n\tcase windows.FILE_ACTION_RENAMED_OLD_NAME:\n\t\treturn sysFSMOVEDFROM\n\tcase windows.FILE_ACTION_RENAMED_NEW_NAME:\n\t\treturn sysFSMOVEDTO\n\t}\n\treturn 0\n}\n"
  },
  {
    "path": "vendor/github.com/fsnotify/fsnotify/fsnotify.go",
    "content": "// Package fsnotify provides a cross-platform interface for file system\n// notifications.\n//\n// Currently supported systems:\n//\n//\tLinux 2.6.32+    via inotify\n//\tBSD, macOS       via kqueue\n//\tWindows          via ReadDirectoryChangesW\n//\tillumos          via FEN\npackage fsnotify\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"path/filepath\"\n\t\"strings\"\n)\n\n// Event represents a file system notification.\ntype Event struct {\n\t// Path to the file or directory.\n\t//\n\t// Paths are relative to the input; for example with Add(\"dir\") the Name\n\t// will be set to \"dir/file\" if you create that file, but if you use\n\t// Add(\"/path/to/dir\") it will be \"/path/to/dir/file\".\n\tName string\n\n\t// File operation that triggered the event.\n\t//\n\t// This is a bitmask and some systems may send multiple operations at once.\n\t// Use the Event.Has() method instead of comparing with ==.\n\tOp Op\n}\n\n// Op describes a set of file operations.\ntype Op uint32\n\n// The operations fsnotify can trigger; see the documentation on [Watcher] for a\n// full description, and check them with [Event.Has].\nconst (\n\t// A new pathname was created.\n\tCreate Op = 1 << iota\n\n\t// The pathname was written to; this does *not* mean the write has finished,\n\t// and a write can be followed by more writes.\n\tWrite\n\n\t// The path was removed; any watches on it will be removed. Some \"remove\"\n\t// operations may trigger a Rename if the file is actually moved (for\n\t// example \"remove to trash\" is often a rename).\n\tRemove\n\n\t// The path was renamed to something else; any watched on it will be\n\t// removed.\n\tRename\n\n\t// File attributes were changed.\n\t//\n\t// It's generally not recommended to take action on this event, as it may\n\t// get triggered very frequently by some software. For example, Spotlight\n\t// indexing on macOS, anti-virus software, backup software, etc.\n\tChmod\n)\n\n// Common errors that can be reported.\nvar (\n\tErrNonExistentWatch = errors.New(\"fsnotify: can't remove non-existent watch\")\n\tErrEventOverflow    = errors.New(\"fsnotify: queue or buffer overflow\")\n\tErrClosed           = errors.New(\"fsnotify: watcher already closed\")\n)\n\nfunc (o Op) String() string {\n\tvar b strings.Builder\n\tif o.Has(Create) {\n\t\tb.WriteString(\"|CREATE\")\n\t}\n\tif o.Has(Remove) {\n\t\tb.WriteString(\"|REMOVE\")\n\t}\n\tif o.Has(Write) {\n\t\tb.WriteString(\"|WRITE\")\n\t}\n\tif o.Has(Rename) {\n\t\tb.WriteString(\"|RENAME\")\n\t}\n\tif o.Has(Chmod) {\n\t\tb.WriteString(\"|CHMOD\")\n\t}\n\tif b.Len() == 0 {\n\t\treturn \"[no events]\"\n\t}\n\treturn b.String()[1:]\n}\n\n// Has reports if this operation has the given operation.\nfunc (o Op) Has(h Op) bool { return o&h != 0 }\n\n// Has reports if this event has the given operation.\nfunc (e Event) Has(op Op) bool { return e.Op.Has(op) }\n\n// String returns a string representation of the event with their path.\nfunc (e Event) String() string {\n\treturn fmt.Sprintf(\"%-13s %q\", e.Op.String(), e.Name)\n}\n\ntype (\n\taddOpt   func(opt *withOpts)\n\twithOpts struct {\n\t\tbufsize int\n\t}\n)\n\nvar defaultOpts = withOpts{\n\tbufsize: 65536, // 64K\n}\n\nfunc getOptions(opts ...addOpt) withOpts {\n\twith := defaultOpts\n\tfor _, o := range opts {\n\t\to(&with)\n\t}\n\treturn with\n}\n\n// WithBufferSize sets the [ReadDirectoryChangesW] buffer size.\n//\n// This only has effect on Windows systems, and is a no-op for other backends.\n//\n// The default value is 64K (65536 bytes) which is the highest value that works\n// on all filesystems and should be enough for most applications, but if you\n// have a large burst of events it may not be enough. You can increase it if\n// you're hitting \"queue or buffer overflow\" errors ([ErrEventOverflow]).\n//\n// [ReadDirectoryChangesW]: https://learn.microsoft.com/en-gb/windows/win32/api/winbase/nf-winbase-readdirectorychangesw\nfunc WithBufferSize(bytes int) addOpt {\n\treturn func(opt *withOpts) { opt.bufsize = bytes }\n}\n\n// Check if this path is recursive (ends with \"/...\" or \"\\...\"), and return the\n// path with the /... stripped.\nfunc recursivePath(path string) (string, bool) {\n\tif filepath.Base(path) == \"...\" {\n\t\treturn filepath.Dir(path), true\n\t}\n\treturn path, false\n}\n"
  },
  {
    "path": "vendor/github.com/fsnotify/fsnotify/mkdoc.zsh",
    "content": "#!/usr/bin/env zsh\n[ \"${ZSH_VERSION:-}\" = \"\" ] && echo >&2 \"Only works with zsh\" && exit 1\nsetopt err_exit no_unset pipefail extended_glob\n\n# Simple script to update the godoc comments on all watchers so you don't need\n# to update the same comment 5 times.\n\nwatcher=$(<<EOF\n// Watcher watches a set of paths, delivering events on a channel.\n//\n// A watcher should not be copied (e.g. pass it by pointer, rather than by\n// value).\n//\n// # Linux notes\n//\n// When a file is removed a Remove event won't be emitted until all file\n// descriptors are closed, and deletes will always emit a Chmod. For example:\n//\n//\tfp := os.Open(\"file\")\n//\tos.Remove(\"file\")        // Triggers Chmod\n//\tfp.Close()               // Triggers Remove\n//\n// This is the event that inotify sends, so not much can be changed about this.\n//\n// The fs.inotify.max_user_watches sysctl variable specifies the upper limit\n// for the number of watches per user, and fs.inotify.max_user_instances\n// specifies the maximum number of inotify instances per user. Every Watcher you\n// create is an \"instance\", and every path you add is a \"watch\".\n//\n// These are also exposed in /proc as /proc/sys/fs/inotify/max_user_watches and\n// /proc/sys/fs/inotify/max_user_instances\n//\n// To increase them you can use sysctl or write the value to the /proc file:\n//\n//\t# Default values on Linux 5.18\n//\tsysctl fs.inotify.max_user_watches=124983\n//\tsysctl fs.inotify.max_user_instances=128\n//\n// To make the changes persist on reboot edit /etc/sysctl.conf or\n// /usr/lib/sysctl.d/50-default.conf (details differ per Linux distro; check\n// your distro's documentation):\n//\n//\tfs.inotify.max_user_watches=124983\n//\tfs.inotify.max_user_instances=128\n//\n// Reaching the limit will result in a \"no space left on device\" or \"too many open\n// files\" error.\n//\n// # kqueue notes (macOS, BSD)\n//\n// kqueue requires opening a file descriptor for every file that's being watched;\n// so if you're watching a directory with five files then that's six file\n// descriptors. You will run in to your system's \"max open files\" limit faster on\n// these platforms.\n//\n// The sysctl variables kern.maxfiles and kern.maxfilesperproc can be used to\n// control the maximum number of open files, as well as /etc/login.conf on BSD\n// systems.\n//\n// # Windows notes\n//\n// Paths can be added as \"C:\\\\path\\\\to\\\\dir\", but forward slashes\n// (\"C:/path/to/dir\") will also work.\n//\n// When a watched directory is removed it will always send an event for the\n// directory itself, but may not send events for all files in that directory.\n// Sometimes it will send events for all times, sometimes it will send no\n// events, and often only for some files.\n//\n// The default ReadDirectoryChangesW() buffer size is 64K, which is the largest\n// value that is guaranteed to work with SMB filesystems. If you have many\n// events in quick succession this may not be enough, and you will have to use\n// [WithBufferSize] to increase the value.\nEOF\n)\n\nnew=$(<<EOF\n// NewWatcher creates a new Watcher.\nEOF\n)\n\nnewbuffered=$(<<EOF\n// NewBufferedWatcher creates a new Watcher with a buffered Watcher.Events\n// channel.\n//\n// The main use case for this is situations with a very large number of events\n// where the kernel buffer size can't be increased (e.g. due to lack of\n// permissions). An unbuffered Watcher will perform better for almost all use\n// cases, and whenever possible you will be better off increasing the kernel\n// buffers instead of adding a large userspace buffer.\nEOF\n)\n\nadd=$(<<EOF\n// Add starts monitoring the path for changes.\n//\n// A path can only be watched once; watching it more than once is a no-op and will\n// not return an error. Paths that do not yet exist on the filesystem cannot be\n// watched.\n//\n// A watch will be automatically removed if the watched path is deleted or\n// renamed. The exception is the Windows backend, which doesn't remove the\n// watcher on renames.\n//\n// Notifications on network filesystems (NFS, SMB, FUSE, etc.) or special\n// filesystems (/proc, /sys, etc.) generally don't work.\n//\n// Returns [ErrClosed] if [Watcher.Close] was called.\n//\n// See [Watcher.AddWith] for a version that allows adding options.\n//\n// # Watching directories\n//\n// All files in a directory are monitored, including new files that are created\n// after the watcher is started. Subdirectories are not watched (i.e. it's\n// non-recursive).\n//\n// # Watching files\n//\n// Watching individual files (rather than directories) is generally not\n// recommended as many programs (especially editors) update files atomically: it\n// will write to a temporary file which is then moved to to destination,\n// overwriting the original (or some variant thereof). The watcher on the\n// original file is now lost, as that no longer exists.\n//\n// The upshot of this is that a power failure or crash won't leave a\n// half-written file.\n//\n// Watch the parent directory and use Event.Name to filter out files you're not\n// interested in. There is an example of this in cmd/fsnotify/file.go.\nEOF\n)\n\naddwith=$(<<EOF\n// AddWith is like [Watcher.Add], but allows adding options. When using Add()\n// the defaults described below are used.\n//\n// Possible options are:\n//\n//   - [WithBufferSize] sets the buffer size for the Windows backend; no-op on\n//     other platforms. The default is 64K (65536 bytes).\nEOF\n)\n\nremove=$(<<EOF\n// Remove stops monitoring the path for changes.\n//\n// Directories are always removed non-recursively. For example, if you added\n// /tmp/dir and /tmp/dir/subdir then you will need to remove both.\n//\n// Removing a path that has not yet been added returns [ErrNonExistentWatch].\n//\n// Returns nil if [Watcher.Close] was called.\nEOF\n)\n\nclose=$(<<EOF\n// Close removes all watches and closes the Events channel.\nEOF\n)\n\nwatchlist=$(<<EOF\n// WatchList returns all paths explicitly added with [Watcher.Add] (and are not\n// yet removed).\n//\n// Returns nil if [Watcher.Close] was called.\nEOF\n)\n\nevents=$(<<EOF\n\t// Events sends the filesystem change events.\n\t//\n\t// fsnotify can send the following events; a \"path\" here can refer to a\n\t// file, directory, symbolic link, or special file like a FIFO.\n\t//\n\t//   fsnotify.Create    A new path was created; this may be followed by one\n\t//                      or more Write events if data also gets written to a\n\t//                      file.\n\t//\n\t//   fsnotify.Remove    A path was removed.\n\t//\n\t//   fsnotify.Rename    A path was renamed. A rename is always sent with the\n\t//                      old path as Event.Name, and a Create event will be\n\t//                      sent with the new name. Renames are only sent for\n\t//                      paths that are currently watched; e.g. moving an\n\t//                      unmonitored file into a monitored directory will\n\t//                      show up as just a Create. Similarly, renaming a file\n\t//                      to outside a monitored directory will show up as\n\t//                      only a Rename.\n\t//\n\t//   fsnotify.Write     A file or named pipe was written to. A Truncate will\n\t//                      also trigger a Write. A single \"write action\"\n\t//                      initiated by the user may show up as one or multiple\n\t//                      writes, depending on when the system syncs things to\n\t//                      disk. For example when compiling a large Go program\n\t//                      you may get hundreds of Write events, and you may\n\t//                      want to wait until you've stopped receiving them\n\t//                      (see the dedup example in cmd/fsnotify).\n\t//\n\t//                      Some systems may send Write event for directories\n\t//                      when the directory content changes.\n\t//\n\t//   fsnotify.Chmod     Attributes were changed. On Linux this is also sent\n\t//                      when a file is removed (or more accurately, when a\n\t//                      link to an inode is removed). On kqueue it's sent\n\t//                      when a file is truncated. On Windows it's never\n\t//                      sent.\nEOF\n)\n\nerrors=$(<<EOF\n\t// Errors sends any errors.\n\t//\n\t// ErrEventOverflow is used to indicate there are too many events:\n\t//\n\t//  - inotify:      There are too many queued events (fs.inotify.max_queued_events sysctl)\n\t//  - windows:      The buffer size is too small; WithBufferSize() can be used to increase it.\n\t//  - kqueue, fen:  Not used.\nEOF\n)\n\nset-cmt() {\n\tlocal pat=$1\n\tlocal cmt=$2\n\n\tIFS=$'\\n' local files=($(grep -n $pat backend_*~*_test.go))\n\tfor f in $files; do\n\t\tIFS=':' local fields=($=f)\n\t\tlocal file=$fields[1]\n\t\tlocal end=$(( $fields[2] - 1 ))\n\n\t\t# Find start of comment.\n\t\tlocal start=0\n\t\tIFS=$'\\n' local lines=($(head -n$end $file))\n\t\tfor (( i = 1; i <= $#lines; i++ )); do\n\t\t\tlocal line=$lines[-$i]\n\t\t\tif ! grep -q '^[[:space:]]*//' <<<$line; then\n\t\t\t\tstart=$(( end - (i - 2) ))\n\t\t\t\tbreak\n\t\t\tfi\n\t\tdone\n\n\t\thead -n $(( start - 1 )) $file  >/tmp/x\n\t\tprint -r -- $cmt                >>/tmp/x\n\t\ttail -n+$(( end + 1 ))   $file  >>/tmp/x\n\t\tmv /tmp/x $file\n\tdone\n}\n\nset-cmt '^type Watcher struct '             $watcher\nset-cmt '^func NewWatcher('                 $new\nset-cmt '^func NewBufferedWatcher('         $newbuffered\nset-cmt '^func (w \\*Watcher) Add('          $add\nset-cmt '^func (w \\*Watcher) AddWith('      $addwith\nset-cmt '^func (w \\*Watcher) Remove('       $remove\nset-cmt '^func (w \\*Watcher) Close('        $close\nset-cmt '^func (w \\*Watcher) WatchList('    $watchlist\nset-cmt '^[[:space:]]*Events *chan Event$'  $events\nset-cmt '^[[:space:]]*Errors *chan error$'  $errors\n"
  },
  {
    "path": "vendor/github.com/fsnotify/fsnotify/system_bsd.go",
    "content": "//go:build freebsd || openbsd || netbsd || dragonfly\n// +build freebsd openbsd netbsd dragonfly\n\npackage fsnotify\n\nimport \"golang.org/x/sys/unix\"\n\nconst openMode = unix.O_NONBLOCK | unix.O_RDONLY | unix.O_CLOEXEC\n"
  },
  {
    "path": "vendor/github.com/fsnotify/fsnotify/system_darwin.go",
    "content": "//go:build darwin\n// +build darwin\n\npackage fsnotify\n\nimport \"golang.org/x/sys/unix\"\n\n// note: this constant is not defined on BSD\nconst openMode = unix.O_EVTONLY | unix.O_CLOEXEC\n"
  },
  {
    "path": "vendor/github.com/golang/protobuf/AUTHORS",
    "content": "# This source code refers to The Go Authors for copyright purposes.\n# The master list of authors is in the main Go distribution,\n# visible at http://tip.golang.org/AUTHORS.\n"
  },
  {
    "path": "vendor/github.com/golang/protobuf/CONTRIBUTORS",
    "content": "# This source code was written by the Go contributors.\n# The master list of contributors is in the main Go distribution,\n# visible at http://tip.golang.org/CONTRIBUTORS.\n"
  },
  {
    "path": "vendor/github.com/golang/protobuf/LICENSE",
    "content": "Copyright 2010 The Go Authors.  All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n    * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n    * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n    * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n"
  },
  {
    "path": "vendor/github.com/golang/protobuf/proto/buffer.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage proto\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\n\t\"google.golang.org/protobuf/encoding/prototext\"\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\nconst (\n\tWireVarint     = 0\n\tWireFixed32    = 5\n\tWireFixed64    = 1\n\tWireBytes      = 2\n\tWireStartGroup = 3\n\tWireEndGroup   = 4\n)\n\n// EncodeVarint returns the varint encoded bytes of v.\nfunc EncodeVarint(v uint64) []byte {\n\treturn protowire.AppendVarint(nil, v)\n}\n\n// SizeVarint returns the length of the varint encoded bytes of v.\n// This is equal to len(EncodeVarint(v)).\nfunc SizeVarint(v uint64) int {\n\treturn protowire.SizeVarint(v)\n}\n\n// DecodeVarint parses a varint encoded integer from b,\n// returning the integer value and the length of the varint.\n// It returns (0, 0) if there is a parse error.\nfunc DecodeVarint(b []byte) (uint64, int) {\n\tv, n := protowire.ConsumeVarint(b)\n\tif n < 0 {\n\t\treturn 0, 0\n\t}\n\treturn v, n\n}\n\n// Buffer is a buffer for encoding and decoding the protobuf wire format.\n// It may be reused between invocations to reduce memory usage.\ntype Buffer struct {\n\tbuf           []byte\n\tidx           int\n\tdeterministic bool\n}\n\n// NewBuffer allocates a new Buffer initialized with buf,\n// where the contents of buf are considered the unread portion of the buffer.\nfunc NewBuffer(buf []byte) *Buffer {\n\treturn &Buffer{buf: buf}\n}\n\n// SetDeterministic specifies whether to use deterministic serialization.\n//\n// Deterministic serialization guarantees that for a given binary, equal\n// messages will always be serialized to the same bytes. This implies:\n//\n//   - Repeated serialization of a message will return the same bytes.\n//   - Different processes of the same binary (which may be executing on\n//     different machines) will serialize equal messages to the same bytes.\n//\n// Note that the deterministic serialization is NOT canonical across\n// languages. It is not guaranteed to remain stable over time. It is unstable\n// across different builds with schema changes due to unknown fields.\n// Users who need canonical serialization (e.g., persistent storage in a\n// canonical form, fingerprinting, etc.) should define their own\n// canonicalization specification and implement their own serializer rather\n// than relying on this API.\n//\n// If deterministic serialization is requested, map entries will be sorted\n// by keys in lexographical order. This is an implementation detail and\n// subject to change.\nfunc (b *Buffer) SetDeterministic(deterministic bool) {\n\tb.deterministic = deterministic\n}\n\n// SetBuf sets buf as the internal buffer,\n// where the contents of buf are considered the unread portion of the buffer.\nfunc (b *Buffer) SetBuf(buf []byte) {\n\tb.buf = buf\n\tb.idx = 0\n}\n\n// Reset clears the internal buffer of all written and unread data.\nfunc (b *Buffer) Reset() {\n\tb.buf = b.buf[:0]\n\tb.idx = 0\n}\n\n// Bytes returns the internal buffer.\nfunc (b *Buffer) Bytes() []byte {\n\treturn b.buf\n}\n\n// Unread returns the unread portion of the buffer.\nfunc (b *Buffer) Unread() []byte {\n\treturn b.buf[b.idx:]\n}\n\n// Marshal appends the wire-format encoding of m to the buffer.\nfunc (b *Buffer) Marshal(m Message) error {\n\tvar err error\n\tb.buf, err = marshalAppend(b.buf, m, b.deterministic)\n\treturn err\n}\n\n// Unmarshal parses the wire-format message in the buffer and\n// places the decoded results in m.\n// It does not reset m before unmarshaling.\nfunc (b *Buffer) Unmarshal(m Message) error {\n\terr := UnmarshalMerge(b.Unread(), m)\n\tb.idx = len(b.buf)\n\treturn err\n}\n\ntype unknownFields struct{ XXX_unrecognized protoimpl.UnknownFields }\n\nfunc (m *unknownFields) String() string { panic(\"not implemented\") }\nfunc (m *unknownFields) Reset()         { panic(\"not implemented\") }\nfunc (m *unknownFields) ProtoMessage()  { panic(\"not implemented\") }\n\n// DebugPrint dumps the encoded bytes of b with a header and footer including s\n// to stdout. This is only intended for debugging.\nfunc (*Buffer) DebugPrint(s string, b []byte) {\n\tm := MessageReflect(new(unknownFields))\n\tm.SetUnknown(b)\n\tb, _ = prototext.MarshalOptions{AllowPartial: true, Indent: \"\\t\"}.Marshal(m.Interface())\n\tfmt.Printf(\"==== %s ====\\n%s==== %s ====\\n\", s, b, s)\n}\n\n// EncodeVarint appends an unsigned varint encoding to the buffer.\nfunc (b *Buffer) EncodeVarint(v uint64) error {\n\tb.buf = protowire.AppendVarint(b.buf, v)\n\treturn nil\n}\n\n// EncodeZigzag32 appends a 32-bit zig-zag varint encoding to the buffer.\nfunc (b *Buffer) EncodeZigzag32(v uint64) error {\n\treturn b.EncodeVarint(uint64((uint32(v) << 1) ^ uint32((int32(v) >> 31))))\n}\n\n// EncodeZigzag64 appends a 64-bit zig-zag varint encoding to the buffer.\nfunc (b *Buffer) EncodeZigzag64(v uint64) error {\n\treturn b.EncodeVarint(uint64((uint64(v) << 1) ^ uint64((int64(v) >> 63))))\n}\n\n// EncodeFixed32 appends a 32-bit little-endian integer to the buffer.\nfunc (b *Buffer) EncodeFixed32(v uint64) error {\n\tb.buf = protowire.AppendFixed32(b.buf, uint32(v))\n\treturn nil\n}\n\n// EncodeFixed64 appends a 64-bit little-endian integer to the buffer.\nfunc (b *Buffer) EncodeFixed64(v uint64) error {\n\tb.buf = protowire.AppendFixed64(b.buf, uint64(v))\n\treturn nil\n}\n\n// EncodeRawBytes appends a length-prefixed raw bytes to the buffer.\nfunc (b *Buffer) EncodeRawBytes(v []byte) error {\n\tb.buf = protowire.AppendBytes(b.buf, v)\n\treturn nil\n}\n\n// EncodeStringBytes appends a length-prefixed raw bytes to the buffer.\n// It does not validate whether v contains valid UTF-8.\nfunc (b *Buffer) EncodeStringBytes(v string) error {\n\tb.buf = protowire.AppendString(b.buf, v)\n\treturn nil\n}\n\n// EncodeMessage appends a length-prefixed encoded message to the buffer.\nfunc (b *Buffer) EncodeMessage(m Message) error {\n\tvar err error\n\tb.buf = protowire.AppendVarint(b.buf, uint64(Size(m)))\n\tb.buf, err = marshalAppend(b.buf, m, b.deterministic)\n\treturn err\n}\n\n// DecodeVarint consumes an encoded unsigned varint from the buffer.\nfunc (b *Buffer) DecodeVarint() (uint64, error) {\n\tv, n := protowire.ConsumeVarint(b.buf[b.idx:])\n\tif n < 0 {\n\t\treturn 0, protowire.ParseError(n)\n\t}\n\tb.idx += n\n\treturn uint64(v), nil\n}\n\n// DecodeZigzag32 consumes an encoded 32-bit zig-zag varint from the buffer.\nfunc (b *Buffer) DecodeZigzag32() (uint64, error) {\n\tv, err := b.DecodeVarint()\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\treturn uint64((uint32(v) >> 1) ^ uint32((int32(v&1)<<31)>>31)), nil\n}\n\n// DecodeZigzag64 consumes an encoded 64-bit zig-zag varint from the buffer.\nfunc (b *Buffer) DecodeZigzag64() (uint64, error) {\n\tv, err := b.DecodeVarint()\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\treturn uint64((uint64(v) >> 1) ^ uint64((int64(v&1)<<63)>>63)), nil\n}\n\n// DecodeFixed32 consumes a 32-bit little-endian integer from the buffer.\nfunc (b *Buffer) DecodeFixed32() (uint64, error) {\n\tv, n := protowire.ConsumeFixed32(b.buf[b.idx:])\n\tif n < 0 {\n\t\treturn 0, protowire.ParseError(n)\n\t}\n\tb.idx += n\n\treturn uint64(v), nil\n}\n\n// DecodeFixed64 consumes a 64-bit little-endian integer from the buffer.\nfunc (b *Buffer) DecodeFixed64() (uint64, error) {\n\tv, n := protowire.ConsumeFixed64(b.buf[b.idx:])\n\tif n < 0 {\n\t\treturn 0, protowire.ParseError(n)\n\t}\n\tb.idx += n\n\treturn uint64(v), nil\n}\n\n// DecodeRawBytes consumes a length-prefixed raw bytes from the buffer.\n// If alloc is specified, it returns a copy the raw bytes\n// rather than a sub-slice of the buffer.\nfunc (b *Buffer) DecodeRawBytes(alloc bool) ([]byte, error) {\n\tv, n := protowire.ConsumeBytes(b.buf[b.idx:])\n\tif n < 0 {\n\t\treturn nil, protowire.ParseError(n)\n\t}\n\tb.idx += n\n\tif alloc {\n\t\tv = append([]byte(nil), v...)\n\t}\n\treturn v, nil\n}\n\n// DecodeStringBytes consumes a length-prefixed raw bytes from the buffer.\n// It does not validate whether the raw bytes contain valid UTF-8.\nfunc (b *Buffer) DecodeStringBytes() (string, error) {\n\tv, n := protowire.ConsumeString(b.buf[b.idx:])\n\tif n < 0 {\n\t\treturn \"\", protowire.ParseError(n)\n\t}\n\tb.idx += n\n\treturn v, nil\n}\n\n// DecodeMessage consumes a length-prefixed message from the buffer.\n// It does not reset m before unmarshaling.\nfunc (b *Buffer) DecodeMessage(m Message) error {\n\tv, err := b.DecodeRawBytes(false)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn UnmarshalMerge(v, m)\n}\n\n// DecodeGroup consumes a message group from the buffer.\n// It assumes that the start group marker has already been consumed and\n// consumes all bytes until (and including the end group marker).\n// It does not reset m before unmarshaling.\nfunc (b *Buffer) DecodeGroup(m Message) error {\n\tv, n, err := consumeGroup(b.buf[b.idx:])\n\tif err != nil {\n\t\treturn err\n\t}\n\tb.idx += n\n\treturn UnmarshalMerge(v, m)\n}\n\n// consumeGroup parses b until it finds an end group marker, returning\n// the raw bytes of the message (excluding the end group marker) and the\n// the total length of the message (including the end group marker).\nfunc consumeGroup(b []byte) ([]byte, int, error) {\n\tb0 := b\n\tdepth := 1 // assume this follows a start group marker\n\tfor {\n\t\t_, wtyp, tagLen := protowire.ConsumeTag(b)\n\t\tif tagLen < 0 {\n\t\t\treturn nil, 0, protowire.ParseError(tagLen)\n\t\t}\n\t\tb = b[tagLen:]\n\n\t\tvar valLen int\n\t\tswitch wtyp {\n\t\tcase protowire.VarintType:\n\t\t\t_, valLen = protowire.ConsumeVarint(b)\n\t\tcase protowire.Fixed32Type:\n\t\t\t_, valLen = protowire.ConsumeFixed32(b)\n\t\tcase protowire.Fixed64Type:\n\t\t\t_, valLen = protowire.ConsumeFixed64(b)\n\t\tcase protowire.BytesType:\n\t\t\t_, valLen = protowire.ConsumeBytes(b)\n\t\tcase protowire.StartGroupType:\n\t\t\tdepth++\n\t\tcase protowire.EndGroupType:\n\t\t\tdepth--\n\t\tdefault:\n\t\t\treturn nil, 0, errors.New(\"proto: cannot parse reserved wire type\")\n\t\t}\n\t\tif valLen < 0 {\n\t\t\treturn nil, 0, protowire.ParseError(valLen)\n\t\t}\n\t\tb = b[valLen:]\n\n\t\tif depth == 0 {\n\t\t\treturn b0[:len(b0)-len(b)-tagLen], len(b0) - len(b), nil\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/golang/protobuf/proto/defaults.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage proto\n\nimport (\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\n// SetDefaults sets unpopulated scalar fields to their default values.\n// Fields within a oneof are not set even if they have a default value.\n// SetDefaults is recursively called upon any populated message fields.\nfunc SetDefaults(m Message) {\n\tif m != nil {\n\t\tsetDefaults(MessageReflect(m))\n\t}\n}\n\nfunc setDefaults(m protoreflect.Message) {\n\tfds := m.Descriptor().Fields()\n\tfor i := 0; i < fds.Len(); i++ {\n\t\tfd := fds.Get(i)\n\t\tif !m.Has(fd) {\n\t\t\tif fd.HasDefault() && fd.ContainingOneof() == nil {\n\t\t\t\tv := fd.Default()\n\t\t\t\tif fd.Kind() == protoreflect.BytesKind {\n\t\t\t\t\tv = protoreflect.ValueOf(append([]byte(nil), v.Bytes()...)) // copy the default bytes\n\t\t\t\t}\n\t\t\t\tm.Set(fd, v)\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\t}\n\n\tm.Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool {\n\t\tswitch {\n\t\t// Handle singular message.\n\t\tcase fd.Cardinality() != protoreflect.Repeated:\n\t\t\tif fd.Message() != nil {\n\t\t\t\tsetDefaults(m.Get(fd).Message())\n\t\t\t}\n\t\t// Handle list of messages.\n\t\tcase fd.IsList():\n\t\t\tif fd.Message() != nil {\n\t\t\t\tls := m.Get(fd).List()\n\t\t\t\tfor i := 0; i < ls.Len(); i++ {\n\t\t\t\t\tsetDefaults(ls.Get(i).Message())\n\t\t\t\t}\n\t\t\t}\n\t\t// Handle map of messages.\n\t\tcase fd.IsMap():\n\t\t\tif fd.MapValue().Message() != nil {\n\t\t\t\tms := m.Get(fd).Map()\n\t\t\t\tms.Range(func(_ protoreflect.MapKey, v protoreflect.Value) bool {\n\t\t\t\t\tsetDefaults(v.Message())\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t\treturn true\n\t})\n}\n"
  },
  {
    "path": "vendor/github.com/golang/protobuf/proto/deprecated.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage proto\n\nimport (\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"strconv\"\n\n\tprotoV2 \"google.golang.org/protobuf/proto\"\n)\n\nvar (\n\t// Deprecated: No longer returned.\n\tErrNil = errors.New(\"proto: Marshal called with nil\")\n\n\t// Deprecated: No longer returned.\n\tErrTooLarge = errors.New(\"proto: message encodes to over 2 GB\")\n\n\t// Deprecated: No longer returned.\n\tErrInternalBadWireType = errors.New(\"proto: internal error: bad wiretype for oneof\")\n)\n\n// Deprecated: Do not use.\ntype Stats struct{ Emalloc, Dmalloc, Encode, Decode, Chit, Cmiss, Size uint64 }\n\n// Deprecated: Do not use.\nfunc GetStats() Stats { return Stats{} }\n\n// Deprecated: Do not use.\nfunc MarshalMessageSet(interface{}) ([]byte, error) {\n\treturn nil, errors.New(\"proto: not implemented\")\n}\n\n// Deprecated: Do not use.\nfunc UnmarshalMessageSet([]byte, interface{}) error {\n\treturn errors.New(\"proto: not implemented\")\n}\n\n// Deprecated: Do not use.\nfunc MarshalMessageSetJSON(interface{}) ([]byte, error) {\n\treturn nil, errors.New(\"proto: not implemented\")\n}\n\n// Deprecated: Do not use.\nfunc UnmarshalMessageSetJSON([]byte, interface{}) error {\n\treturn errors.New(\"proto: not implemented\")\n}\n\n// Deprecated: Do not use.\nfunc RegisterMessageSetType(Message, int32, string) {}\n\n// Deprecated: Do not use.\nfunc EnumName(m map[int32]string, v int32) string {\n\ts, ok := m[v]\n\tif ok {\n\t\treturn s\n\t}\n\treturn strconv.Itoa(int(v))\n}\n\n// Deprecated: Do not use.\nfunc UnmarshalJSONEnum(m map[string]int32, data []byte, enumName string) (int32, error) {\n\tif data[0] == '\"' {\n\t\t// New style: enums are strings.\n\t\tvar repr string\n\t\tif err := json.Unmarshal(data, &repr); err != nil {\n\t\t\treturn -1, err\n\t\t}\n\t\tval, ok := m[repr]\n\t\tif !ok {\n\t\t\treturn 0, fmt.Errorf(\"unrecognized enum %s value %q\", enumName, repr)\n\t\t}\n\t\treturn val, nil\n\t}\n\t// Old style: enums are ints.\n\tvar val int32\n\tif err := json.Unmarshal(data, &val); err != nil {\n\t\treturn 0, fmt.Errorf(\"cannot unmarshal %#q into enum %s\", data, enumName)\n\t}\n\treturn val, nil\n}\n\n// Deprecated: Do not use; this type existed for intenal-use only.\ntype InternalMessageInfo struct{}\n\n// Deprecated: Do not use; this method existed for intenal-use only.\nfunc (*InternalMessageInfo) DiscardUnknown(m Message) {\n\tDiscardUnknown(m)\n}\n\n// Deprecated: Do not use; this method existed for intenal-use only.\nfunc (*InternalMessageInfo) Marshal(b []byte, m Message, deterministic bool) ([]byte, error) {\n\treturn protoV2.MarshalOptions{Deterministic: deterministic}.MarshalAppend(b, MessageV2(m))\n}\n\n// Deprecated: Do not use; this method existed for intenal-use only.\nfunc (*InternalMessageInfo) Merge(dst, src Message) {\n\tprotoV2.Merge(MessageV2(dst), MessageV2(src))\n}\n\n// Deprecated: Do not use; this method existed for intenal-use only.\nfunc (*InternalMessageInfo) Size(m Message) int {\n\treturn protoV2.Size(MessageV2(m))\n}\n\n// Deprecated: Do not use; this method existed for intenal-use only.\nfunc (*InternalMessageInfo) Unmarshal(m Message, b []byte) error {\n\treturn protoV2.UnmarshalOptions{Merge: true}.Unmarshal(b, MessageV2(m))\n}\n"
  },
  {
    "path": "vendor/github.com/golang/protobuf/proto/discard.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage proto\n\nimport (\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\n// DiscardUnknown recursively discards all unknown fields from this message\n// and all embedded messages.\n//\n// When unmarshaling a message with unrecognized fields, the tags and values\n// of such fields are preserved in the Message. This allows a later call to\n// marshal to be able to produce a message that continues to have those\n// unrecognized fields. To avoid this, DiscardUnknown is used to\n// explicitly clear the unknown fields after unmarshaling.\nfunc DiscardUnknown(m Message) {\n\tif m != nil {\n\t\tdiscardUnknown(MessageReflect(m))\n\t}\n}\n\nfunc discardUnknown(m protoreflect.Message) {\n\tm.Range(func(fd protoreflect.FieldDescriptor, val protoreflect.Value) bool {\n\t\tswitch {\n\t\t// Handle singular message.\n\t\tcase fd.Cardinality() != protoreflect.Repeated:\n\t\t\tif fd.Message() != nil {\n\t\t\t\tdiscardUnknown(m.Get(fd).Message())\n\t\t\t}\n\t\t// Handle list of messages.\n\t\tcase fd.IsList():\n\t\t\tif fd.Message() != nil {\n\t\t\t\tls := m.Get(fd).List()\n\t\t\t\tfor i := 0; i < ls.Len(); i++ {\n\t\t\t\t\tdiscardUnknown(ls.Get(i).Message())\n\t\t\t\t}\n\t\t\t}\n\t\t// Handle map of messages.\n\t\tcase fd.IsMap():\n\t\t\tif fd.MapValue().Message() != nil {\n\t\t\t\tms := m.Get(fd).Map()\n\t\t\t\tms.Range(func(_ protoreflect.MapKey, v protoreflect.Value) bool {\n\t\t\t\t\tdiscardUnknown(v.Message())\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t\treturn true\n\t})\n\n\t// Discard unknown fields.\n\tif len(m.GetUnknown()) > 0 {\n\t\tm.SetUnknown(nil)\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/golang/protobuf/proto/extensions.go",
    "content": "// Copyright 2010 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage proto\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"reflect\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/proto\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n\t\"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\ntype (\n\t// ExtensionDesc represents an extension descriptor and\n\t// is used to interact with an extension field in a message.\n\t//\n\t// Variables of this type are generated in code by protoc-gen-go.\n\tExtensionDesc = protoimpl.ExtensionInfo\n\n\t// ExtensionRange represents a range of message extensions.\n\t// Used in code generated by protoc-gen-go.\n\tExtensionRange = protoiface.ExtensionRangeV1\n\n\t// Deprecated: Do not use; this is an internal type.\n\tExtension = protoimpl.ExtensionFieldV1\n\n\t// Deprecated: Do not use; this is an internal type.\n\tXXX_InternalExtensions = protoimpl.ExtensionFields\n)\n\n// ErrMissingExtension reports whether the extension was not present.\nvar ErrMissingExtension = errors.New(\"proto: missing extension\")\n\nvar errNotExtendable = errors.New(\"proto: not an extendable proto.Message\")\n\n// HasExtension reports whether the extension field is present in m\n// either as an explicitly populated field or as an unknown field.\nfunc HasExtension(m Message, xt *ExtensionDesc) (has bool) {\n\tmr := MessageReflect(m)\n\tif mr == nil || !mr.IsValid() {\n\t\treturn false\n\t}\n\n\t// Check whether any populated known field matches the field number.\n\txtd := xt.TypeDescriptor()\n\tif isValidExtension(mr.Descriptor(), xtd) {\n\t\thas = mr.Has(xtd)\n\t} else {\n\t\tmr.Range(func(fd protoreflect.FieldDescriptor, _ protoreflect.Value) bool {\n\t\t\thas = int32(fd.Number()) == xt.Field\n\t\t\treturn !has\n\t\t})\n\t}\n\n\t// Check whether any unknown field matches the field number.\n\tfor b := mr.GetUnknown(); !has && len(b) > 0; {\n\t\tnum, _, n := protowire.ConsumeField(b)\n\t\thas = int32(num) == xt.Field\n\t\tb = b[n:]\n\t}\n\treturn has\n}\n\n// ClearExtension removes the extension field from m\n// either as an explicitly populated field or as an unknown field.\nfunc ClearExtension(m Message, xt *ExtensionDesc) {\n\tmr := MessageReflect(m)\n\tif mr == nil || !mr.IsValid() {\n\t\treturn\n\t}\n\n\txtd := xt.TypeDescriptor()\n\tif isValidExtension(mr.Descriptor(), xtd) {\n\t\tmr.Clear(xtd)\n\t} else {\n\t\tmr.Range(func(fd protoreflect.FieldDescriptor, _ protoreflect.Value) bool {\n\t\t\tif int32(fd.Number()) == xt.Field {\n\t\t\t\tmr.Clear(fd)\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn true\n\t\t})\n\t}\n\tclearUnknown(mr, fieldNum(xt.Field))\n}\n\n// ClearAllExtensions clears all extensions from m.\n// This includes populated fields and unknown fields in the extension range.\nfunc ClearAllExtensions(m Message) {\n\tmr := MessageReflect(m)\n\tif mr == nil || !mr.IsValid() {\n\t\treturn\n\t}\n\n\tmr.Range(func(fd protoreflect.FieldDescriptor, _ protoreflect.Value) bool {\n\t\tif fd.IsExtension() {\n\t\t\tmr.Clear(fd)\n\t\t}\n\t\treturn true\n\t})\n\tclearUnknown(mr, mr.Descriptor().ExtensionRanges())\n}\n\n// GetExtension retrieves a proto2 extended field from m.\n//\n// If the descriptor is type complete (i.e., ExtensionDesc.ExtensionType is non-nil),\n// then GetExtension parses the encoded field and returns a Go value of the specified type.\n// If the field is not present, then the default value is returned (if one is specified),\n// otherwise ErrMissingExtension is reported.\n//\n// If the descriptor is type incomplete (i.e., ExtensionDesc.ExtensionType is nil),\n// then GetExtension returns the raw encoded bytes for the extension field.\nfunc GetExtension(m Message, xt *ExtensionDesc) (interface{}, error) {\n\tmr := MessageReflect(m)\n\tif mr == nil || !mr.IsValid() || mr.Descriptor().ExtensionRanges().Len() == 0 {\n\t\treturn nil, errNotExtendable\n\t}\n\n\t// Retrieve the unknown fields for this extension field.\n\tvar bo protoreflect.RawFields\n\tfor bi := mr.GetUnknown(); len(bi) > 0; {\n\t\tnum, _, n := protowire.ConsumeField(bi)\n\t\tif int32(num) == xt.Field {\n\t\t\tbo = append(bo, bi[:n]...)\n\t\t}\n\t\tbi = bi[n:]\n\t}\n\n\t// For type incomplete descriptors, only retrieve the unknown fields.\n\tif xt.ExtensionType == nil {\n\t\treturn []byte(bo), nil\n\t}\n\n\t// If the extension field only exists as unknown fields, unmarshal it.\n\t// This is rarely done since proto.Unmarshal eagerly unmarshals extensions.\n\txtd := xt.TypeDescriptor()\n\tif !isValidExtension(mr.Descriptor(), xtd) {\n\t\treturn nil, fmt.Errorf(\"proto: bad extended type; %T does not extend %T\", xt.ExtendedType, m)\n\t}\n\tif !mr.Has(xtd) && len(bo) > 0 {\n\t\tm2 := mr.New()\n\t\tif err := (proto.UnmarshalOptions{\n\t\t\tResolver: extensionResolver{xt},\n\t\t}.Unmarshal(bo, m2.Interface())); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif m2.Has(xtd) {\n\t\t\tmr.Set(xtd, m2.Get(xtd))\n\t\t\tclearUnknown(mr, fieldNum(xt.Field))\n\t\t}\n\t}\n\n\t// Check whether the message has the extension field set or a default.\n\tvar pv protoreflect.Value\n\tswitch {\n\tcase mr.Has(xtd):\n\t\tpv = mr.Get(xtd)\n\tcase xtd.HasDefault():\n\t\tpv = xtd.Default()\n\tdefault:\n\t\treturn nil, ErrMissingExtension\n\t}\n\n\tv := xt.InterfaceOf(pv)\n\trv := reflect.ValueOf(v)\n\tif isScalarKind(rv.Kind()) {\n\t\trv2 := reflect.New(rv.Type())\n\t\trv2.Elem().Set(rv)\n\t\tv = rv2.Interface()\n\t}\n\treturn v, nil\n}\n\n// extensionResolver is a custom extension resolver that stores a single\n// extension type that takes precedence over the global registry.\ntype extensionResolver struct{ xt protoreflect.ExtensionType }\n\nfunc (r extensionResolver) FindExtensionByName(field protoreflect.FullName) (protoreflect.ExtensionType, error) {\n\tif xtd := r.xt.TypeDescriptor(); xtd.FullName() == field {\n\t\treturn r.xt, nil\n\t}\n\treturn protoregistry.GlobalTypes.FindExtensionByName(field)\n}\n\nfunc (r extensionResolver) FindExtensionByNumber(message protoreflect.FullName, field protoreflect.FieldNumber) (protoreflect.ExtensionType, error) {\n\tif xtd := r.xt.TypeDescriptor(); xtd.ContainingMessage().FullName() == message && xtd.Number() == field {\n\t\treturn r.xt, nil\n\t}\n\treturn protoregistry.GlobalTypes.FindExtensionByNumber(message, field)\n}\n\n// GetExtensions returns a list of the extensions values present in m,\n// corresponding with the provided list of extension descriptors, xts.\n// If an extension is missing in m, the corresponding value is nil.\nfunc GetExtensions(m Message, xts []*ExtensionDesc) ([]interface{}, error) {\n\tmr := MessageReflect(m)\n\tif mr == nil || !mr.IsValid() {\n\t\treturn nil, errNotExtendable\n\t}\n\n\tvs := make([]interface{}, len(xts))\n\tfor i, xt := range xts {\n\t\tv, err := GetExtension(m, xt)\n\t\tif err != nil {\n\t\t\tif err == ErrMissingExtension {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\treturn vs, err\n\t\t}\n\t\tvs[i] = v\n\t}\n\treturn vs, nil\n}\n\n// SetExtension sets an extension field in m to the provided value.\nfunc SetExtension(m Message, xt *ExtensionDesc, v interface{}) error {\n\tmr := MessageReflect(m)\n\tif mr == nil || !mr.IsValid() || mr.Descriptor().ExtensionRanges().Len() == 0 {\n\t\treturn errNotExtendable\n\t}\n\n\trv := reflect.ValueOf(v)\n\tif reflect.TypeOf(v) != reflect.TypeOf(xt.ExtensionType) {\n\t\treturn fmt.Errorf(\"proto: bad extension value type. got: %T, want: %T\", v, xt.ExtensionType)\n\t}\n\tif rv.Kind() == reflect.Ptr {\n\t\tif rv.IsNil() {\n\t\t\treturn fmt.Errorf(\"proto: SetExtension called with nil value of type %T\", v)\n\t\t}\n\t\tif isScalarKind(rv.Elem().Kind()) {\n\t\t\tv = rv.Elem().Interface()\n\t\t}\n\t}\n\n\txtd := xt.TypeDescriptor()\n\tif !isValidExtension(mr.Descriptor(), xtd) {\n\t\treturn fmt.Errorf(\"proto: bad extended type; %T does not extend %T\", xt.ExtendedType, m)\n\t}\n\tmr.Set(xtd, xt.ValueOf(v))\n\tclearUnknown(mr, fieldNum(xt.Field))\n\treturn nil\n}\n\n// SetRawExtension inserts b into the unknown fields of m.\n//\n// Deprecated: Use Message.ProtoReflect.SetUnknown instead.\nfunc SetRawExtension(m Message, fnum int32, b []byte) {\n\tmr := MessageReflect(m)\n\tif mr == nil || !mr.IsValid() {\n\t\treturn\n\t}\n\n\t// Verify that the raw field is valid.\n\tfor b0 := b; len(b0) > 0; {\n\t\tnum, _, n := protowire.ConsumeField(b0)\n\t\tif int32(num) != fnum {\n\t\t\tpanic(fmt.Sprintf(\"mismatching field number: got %d, want %d\", num, fnum))\n\t\t}\n\t\tb0 = b0[n:]\n\t}\n\n\tClearExtension(m, &ExtensionDesc{Field: fnum})\n\tmr.SetUnknown(append(mr.GetUnknown(), b...))\n}\n\n// ExtensionDescs returns a list of extension descriptors found in m,\n// containing descriptors for both populated extension fields in m and\n// also unknown fields of m that are in the extension range.\n// For the later case, an type incomplete descriptor is provided where only\n// the ExtensionDesc.Field field is populated.\n// The order of the extension descriptors is undefined.\nfunc ExtensionDescs(m Message) ([]*ExtensionDesc, error) {\n\tmr := MessageReflect(m)\n\tif mr == nil || !mr.IsValid() || mr.Descriptor().ExtensionRanges().Len() == 0 {\n\t\treturn nil, errNotExtendable\n\t}\n\n\t// Collect a set of known extension descriptors.\n\textDescs := make(map[protoreflect.FieldNumber]*ExtensionDesc)\n\tmr.Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool {\n\t\tif fd.IsExtension() {\n\t\t\txt := fd.(protoreflect.ExtensionTypeDescriptor)\n\t\t\tif xd, ok := xt.Type().(*ExtensionDesc); ok {\n\t\t\t\textDescs[fd.Number()] = xd\n\t\t\t}\n\t\t}\n\t\treturn true\n\t})\n\n\t// Collect a set of unknown extension descriptors.\n\textRanges := mr.Descriptor().ExtensionRanges()\n\tfor b := mr.GetUnknown(); len(b) > 0; {\n\t\tnum, _, n := protowire.ConsumeField(b)\n\t\tif extRanges.Has(num) && extDescs[num] == nil {\n\t\t\textDescs[num] = nil\n\t\t}\n\t\tb = b[n:]\n\t}\n\n\t// Transpose the set of descriptors into a list.\n\tvar xts []*ExtensionDesc\n\tfor num, xt := range extDescs {\n\t\tif xt == nil {\n\t\t\txt = &ExtensionDesc{Field: int32(num)}\n\t\t}\n\t\txts = append(xts, xt)\n\t}\n\treturn xts, nil\n}\n\n// isValidExtension reports whether xtd is a valid extension descriptor for md.\nfunc isValidExtension(md protoreflect.MessageDescriptor, xtd protoreflect.ExtensionTypeDescriptor) bool {\n\treturn xtd.ContainingMessage() == md && md.ExtensionRanges().Has(xtd.Number())\n}\n\n// isScalarKind reports whether k is a protobuf scalar kind (except bytes).\n// This function exists for historical reasons since the representation of\n// scalars differs between v1 and v2, where v1 uses *T and v2 uses T.\nfunc isScalarKind(k reflect.Kind) bool {\n\tswitch k {\n\tcase reflect.Bool, reflect.Int32, reflect.Int64, reflect.Uint32, reflect.Uint64, reflect.Float32, reflect.Float64, reflect.String:\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\n// clearUnknown removes unknown fields from m where remover.Has reports true.\nfunc clearUnknown(m protoreflect.Message, remover interface {\n\tHas(protoreflect.FieldNumber) bool\n}) {\n\tvar bo protoreflect.RawFields\n\tfor bi := m.GetUnknown(); len(bi) > 0; {\n\t\tnum, _, n := protowire.ConsumeField(bi)\n\t\tif !remover.Has(num) {\n\t\t\tbo = append(bo, bi[:n]...)\n\t\t}\n\t\tbi = bi[n:]\n\t}\n\tif bi := m.GetUnknown(); len(bi) != len(bo) {\n\t\tm.SetUnknown(bo)\n\t}\n}\n\ntype fieldNum protoreflect.FieldNumber\n\nfunc (n1 fieldNum) Has(n2 protoreflect.FieldNumber) bool {\n\treturn protoreflect.FieldNumber(n1) == n2\n}\n"
  },
  {
    "path": "vendor/github.com/golang/protobuf/proto/properties.go",
    "content": "// Copyright 2010 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage proto\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\n// StructProperties represents protocol buffer type information for a\n// generated protobuf message in the open-struct API.\n//\n// Deprecated: Do not use.\ntype StructProperties struct {\n\t// Prop are the properties for each field.\n\t//\n\t// Fields belonging to a oneof are stored in OneofTypes instead, with a\n\t// single Properties representing the parent oneof held here.\n\t//\n\t// The order of Prop matches the order of fields in the Go struct.\n\t// Struct fields that are not related to protobufs have a \"XXX_\" prefix\n\t// in the Properties.Name and must be ignored by the user.\n\tProp []*Properties\n\n\t// OneofTypes contains information about the oneof fields in this message.\n\t// It is keyed by the protobuf field name.\n\tOneofTypes map[string]*OneofProperties\n}\n\n// Properties represents the type information for a protobuf message field.\n//\n// Deprecated: Do not use.\ntype Properties struct {\n\t// Name is a placeholder name with little meaningful semantic value.\n\t// If the name has an \"XXX_\" prefix, the entire Properties must be ignored.\n\tName string\n\t// OrigName is the protobuf field name or oneof name.\n\tOrigName string\n\t// JSONName is the JSON name for the protobuf field.\n\tJSONName string\n\t// Enum is a placeholder name for enums.\n\t// For historical reasons, this is neither the Go name for the enum,\n\t// nor the protobuf name for the enum.\n\tEnum string // Deprecated: Do not use.\n\t// Weak contains the full name of the weakly referenced message.\n\tWeak string\n\t// Wire is a string representation of the wire type.\n\tWire string\n\t// WireType is the protobuf wire type for the field.\n\tWireType int\n\t// Tag is the protobuf field number.\n\tTag int\n\t// Required reports whether this is a required field.\n\tRequired bool\n\t// Optional reports whether this is a optional field.\n\tOptional bool\n\t// Repeated reports whether this is a repeated field.\n\tRepeated bool\n\t// Packed reports whether this is a packed repeated field of scalars.\n\tPacked bool\n\t// Proto3 reports whether this field operates under the proto3 syntax.\n\tProto3 bool\n\t// Oneof reports whether this field belongs within a oneof.\n\tOneof bool\n\n\t// Default is the default value in string form.\n\tDefault string\n\t// HasDefault reports whether the field has a default value.\n\tHasDefault bool\n\n\t// MapKeyProp is the properties for the key field for a map field.\n\tMapKeyProp *Properties\n\t// MapValProp is the properties for the value field for a map field.\n\tMapValProp *Properties\n}\n\n// OneofProperties represents the type information for a protobuf oneof.\n//\n// Deprecated: Do not use.\ntype OneofProperties struct {\n\t// Type is a pointer to the generated wrapper type for the field value.\n\t// This is nil for messages that are not in the open-struct API.\n\tType reflect.Type\n\t// Field is the index into StructProperties.Prop for the containing oneof.\n\tField int\n\t// Prop is the properties for the field.\n\tProp *Properties\n}\n\n// String formats the properties in the protobuf struct field tag style.\nfunc (p *Properties) String() string {\n\ts := p.Wire\n\ts += \",\" + strconv.Itoa(p.Tag)\n\tif p.Required {\n\t\ts += \",req\"\n\t}\n\tif p.Optional {\n\t\ts += \",opt\"\n\t}\n\tif p.Repeated {\n\t\ts += \",rep\"\n\t}\n\tif p.Packed {\n\t\ts += \",packed\"\n\t}\n\ts += \",name=\" + p.OrigName\n\tif p.JSONName != \"\" {\n\t\ts += \",json=\" + p.JSONName\n\t}\n\tif len(p.Enum) > 0 {\n\t\ts += \",enum=\" + p.Enum\n\t}\n\tif len(p.Weak) > 0 {\n\t\ts += \",weak=\" + p.Weak\n\t}\n\tif p.Proto3 {\n\t\ts += \",proto3\"\n\t}\n\tif p.Oneof {\n\t\ts += \",oneof\"\n\t}\n\tif p.HasDefault {\n\t\ts += \",def=\" + p.Default\n\t}\n\treturn s\n}\n\n// Parse populates p by parsing a string in the protobuf struct field tag style.\nfunc (p *Properties) Parse(tag string) {\n\t// For example: \"bytes,49,opt,name=foo,def=hello!\"\n\tfor len(tag) > 0 {\n\t\ti := strings.IndexByte(tag, ',')\n\t\tif i < 0 {\n\t\t\ti = len(tag)\n\t\t}\n\t\tswitch s := tag[:i]; {\n\t\tcase strings.HasPrefix(s, \"name=\"):\n\t\t\tp.OrigName = s[len(\"name=\"):]\n\t\tcase strings.HasPrefix(s, \"json=\"):\n\t\t\tp.JSONName = s[len(\"json=\"):]\n\t\tcase strings.HasPrefix(s, \"enum=\"):\n\t\t\tp.Enum = s[len(\"enum=\"):]\n\t\tcase strings.HasPrefix(s, \"weak=\"):\n\t\t\tp.Weak = s[len(\"weak=\"):]\n\t\tcase strings.Trim(s, \"0123456789\") == \"\":\n\t\t\tn, _ := strconv.ParseUint(s, 10, 32)\n\t\t\tp.Tag = int(n)\n\t\tcase s == \"opt\":\n\t\t\tp.Optional = true\n\t\tcase s == \"req\":\n\t\t\tp.Required = true\n\t\tcase s == \"rep\":\n\t\t\tp.Repeated = true\n\t\tcase s == \"varint\" || s == \"zigzag32\" || s == \"zigzag64\":\n\t\t\tp.Wire = s\n\t\t\tp.WireType = WireVarint\n\t\tcase s == \"fixed32\":\n\t\t\tp.Wire = s\n\t\t\tp.WireType = WireFixed32\n\t\tcase s == \"fixed64\":\n\t\t\tp.Wire = s\n\t\t\tp.WireType = WireFixed64\n\t\tcase s == \"bytes\":\n\t\t\tp.Wire = s\n\t\t\tp.WireType = WireBytes\n\t\tcase s == \"group\":\n\t\t\tp.Wire = s\n\t\t\tp.WireType = WireStartGroup\n\t\tcase s == \"packed\":\n\t\t\tp.Packed = true\n\t\tcase s == \"proto3\":\n\t\t\tp.Proto3 = true\n\t\tcase s == \"oneof\":\n\t\t\tp.Oneof = true\n\t\tcase strings.HasPrefix(s, \"def=\"):\n\t\t\t// The default tag is special in that everything afterwards is the\n\t\t\t// default regardless of the presence of commas.\n\t\t\tp.HasDefault = true\n\t\t\tp.Default, i = tag[len(\"def=\"):], len(tag)\n\t\t}\n\t\ttag = strings.TrimPrefix(tag[i:], \",\")\n\t}\n}\n\n// Init populates the properties from a protocol buffer struct tag.\n//\n// Deprecated: Do not use.\nfunc (p *Properties) Init(typ reflect.Type, name, tag string, f *reflect.StructField) {\n\tp.Name = name\n\tp.OrigName = name\n\tif tag == \"\" {\n\t\treturn\n\t}\n\tp.Parse(tag)\n\n\tif typ != nil && typ.Kind() == reflect.Map {\n\t\tp.MapKeyProp = new(Properties)\n\t\tp.MapKeyProp.Init(nil, \"Key\", f.Tag.Get(\"protobuf_key\"), nil)\n\t\tp.MapValProp = new(Properties)\n\t\tp.MapValProp.Init(nil, \"Value\", f.Tag.Get(\"protobuf_val\"), nil)\n\t}\n}\n\nvar propertiesCache sync.Map // map[reflect.Type]*StructProperties\n\n// GetProperties returns the list of properties for the type represented by t,\n// which must be a generated protocol buffer message in the open-struct API,\n// where protobuf message fields are represented by exported Go struct fields.\n//\n// Deprecated: Use protobuf reflection instead.\nfunc GetProperties(t reflect.Type) *StructProperties {\n\tif p, ok := propertiesCache.Load(t); ok {\n\t\treturn p.(*StructProperties)\n\t}\n\tp, _ := propertiesCache.LoadOrStore(t, newProperties(t))\n\treturn p.(*StructProperties)\n}\n\nfunc newProperties(t reflect.Type) *StructProperties {\n\tif t.Kind() != reflect.Struct {\n\t\tpanic(fmt.Sprintf(\"%v is not a generated message in the open-struct API\", t))\n\t}\n\n\tvar hasOneof bool\n\tprop := new(StructProperties)\n\n\t// Construct a list of properties for each field in the struct.\n\tfor i := 0; i < t.NumField(); i++ {\n\t\tp := new(Properties)\n\t\tf := t.Field(i)\n\t\ttagField := f.Tag.Get(\"protobuf\")\n\t\tp.Init(f.Type, f.Name, tagField, &f)\n\n\t\ttagOneof := f.Tag.Get(\"protobuf_oneof\")\n\t\tif tagOneof != \"\" {\n\t\t\thasOneof = true\n\t\t\tp.OrigName = tagOneof\n\t\t}\n\n\t\t// Rename unrelated struct fields with the \"XXX_\" prefix since so much\n\t\t// user code simply checks for this to exclude special fields.\n\t\tif tagField == \"\" && tagOneof == \"\" && !strings.HasPrefix(p.Name, \"XXX_\") {\n\t\t\tp.Name = \"XXX_\" + p.Name\n\t\t\tp.OrigName = \"XXX_\" + p.OrigName\n\t\t} else if p.Weak != \"\" {\n\t\t\tp.Name = p.OrigName // avoid possible \"XXX_\" prefix on weak field\n\t\t}\n\n\t\tprop.Prop = append(prop.Prop, p)\n\t}\n\n\t// Construct a mapping of oneof field names to properties.\n\tif hasOneof {\n\t\tvar oneofWrappers []interface{}\n\t\tif fn, ok := reflect.PtrTo(t).MethodByName(\"XXX_OneofFuncs\"); ok {\n\t\t\toneofWrappers = fn.Func.Call([]reflect.Value{reflect.Zero(fn.Type.In(0))})[3].Interface().([]interface{})\n\t\t}\n\t\tif fn, ok := reflect.PtrTo(t).MethodByName(\"XXX_OneofWrappers\"); ok {\n\t\t\toneofWrappers = fn.Func.Call([]reflect.Value{reflect.Zero(fn.Type.In(0))})[0].Interface().([]interface{})\n\t\t}\n\t\tif m, ok := reflect.Zero(reflect.PtrTo(t)).Interface().(protoreflect.ProtoMessage); ok {\n\t\t\tif m, ok := m.ProtoReflect().(interface{ ProtoMessageInfo() *protoimpl.MessageInfo }); ok {\n\t\t\t\toneofWrappers = m.ProtoMessageInfo().OneofWrappers\n\t\t\t}\n\t\t}\n\n\t\tprop.OneofTypes = make(map[string]*OneofProperties)\n\t\tfor _, wrapper := range oneofWrappers {\n\t\t\tp := &OneofProperties{\n\t\t\t\tType: reflect.ValueOf(wrapper).Type(), // *T\n\t\t\t\tProp: new(Properties),\n\t\t\t}\n\t\t\tf := p.Type.Elem().Field(0)\n\t\t\tp.Prop.Name = f.Name\n\t\t\tp.Prop.Parse(f.Tag.Get(\"protobuf\"))\n\n\t\t\t// Determine the struct field that contains this oneof.\n\t\t\t// Each wrapper is assignable to exactly one parent field.\n\t\t\tvar foundOneof bool\n\t\t\tfor i := 0; i < t.NumField() && !foundOneof; i++ {\n\t\t\t\tif p.Type.AssignableTo(t.Field(i).Type) {\n\t\t\t\t\tp.Field = i\n\t\t\t\t\tfoundOneof = true\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !foundOneof {\n\t\t\t\tpanic(fmt.Sprintf(\"%v is not a generated message in the open-struct API\", t))\n\t\t\t}\n\t\t\tprop.OneofTypes[p.Prop.OrigName] = p\n\t\t}\n\t}\n\n\treturn prop\n}\n\nfunc (sp *StructProperties) Len() int           { return len(sp.Prop) }\nfunc (sp *StructProperties) Less(i, j int) bool { return false }\nfunc (sp *StructProperties) Swap(i, j int)      { return }\n"
  },
  {
    "path": "vendor/github.com/golang/protobuf/proto/proto.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package proto provides functionality for handling protocol buffer messages.\n// In particular, it provides marshaling and unmarshaling between a protobuf\n// message and the binary wire format.\n//\n// See https://developers.google.com/protocol-buffers/docs/gotutorial for\n// more information.\n//\n// Deprecated: Use the \"google.golang.org/protobuf/proto\" package instead.\npackage proto\n\nimport (\n\tprotoV2 \"google.golang.org/protobuf/proto\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n\t\"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\nconst (\n\tProtoPackageIsVersion1 = true\n\tProtoPackageIsVersion2 = true\n\tProtoPackageIsVersion3 = true\n\tProtoPackageIsVersion4 = true\n)\n\n// GeneratedEnum is any enum type generated by protoc-gen-go\n// which is a named int32 kind.\n// This type exists for documentation purposes.\ntype GeneratedEnum interface{}\n\n// GeneratedMessage is any message type generated by protoc-gen-go\n// which is a pointer to a named struct kind.\n// This type exists for documentation purposes.\ntype GeneratedMessage interface{}\n\n// Message is a protocol buffer message.\n//\n// This is the v1 version of the message interface and is marginally better\n// than an empty interface as it lacks any method to programatically interact\n// with the contents of the message.\n//\n// A v2 message is declared in \"google.golang.org/protobuf/proto\".Message and\n// exposes protobuf reflection as a first-class feature of the interface.\n//\n// To convert a v1 message to a v2 message, use the MessageV2 function.\n// To convert a v2 message to a v1 message, use the MessageV1 function.\ntype Message = protoiface.MessageV1\n\n// MessageV1 converts either a v1 or v2 message to a v1 message.\n// It returns nil if m is nil.\nfunc MessageV1(m GeneratedMessage) protoiface.MessageV1 {\n\treturn protoimpl.X.ProtoMessageV1Of(m)\n}\n\n// MessageV2 converts either a v1 or v2 message to a v2 message.\n// It returns nil if m is nil.\nfunc MessageV2(m GeneratedMessage) protoV2.Message {\n\treturn protoimpl.X.ProtoMessageV2Of(m)\n}\n\n// MessageReflect returns a reflective view for a message.\n// It returns nil if m is nil.\nfunc MessageReflect(m Message) protoreflect.Message {\n\treturn protoimpl.X.MessageOf(m)\n}\n\n// Marshaler is implemented by messages that can marshal themselves.\n// This interface is used by the following functions: Size, Marshal,\n// Buffer.Marshal, and Buffer.EncodeMessage.\n//\n// Deprecated: Do not implement.\ntype Marshaler interface {\n\t// Marshal formats the encoded bytes of the message.\n\t// It should be deterministic and emit valid protobuf wire data.\n\t// The caller takes ownership of the returned buffer.\n\tMarshal() ([]byte, error)\n}\n\n// Unmarshaler is implemented by messages that can unmarshal themselves.\n// This interface is used by the following functions: Unmarshal, UnmarshalMerge,\n// Buffer.Unmarshal, Buffer.DecodeMessage, and Buffer.DecodeGroup.\n//\n// Deprecated: Do not implement.\ntype Unmarshaler interface {\n\t// Unmarshal parses the encoded bytes of the protobuf wire input.\n\t// The provided buffer is only valid for during method call.\n\t// It should not reset the receiver message.\n\tUnmarshal([]byte) error\n}\n\n// Merger is implemented by messages that can merge themselves.\n// This interface is used by the following functions: Clone and Merge.\n//\n// Deprecated: Do not implement.\ntype Merger interface {\n\t// Merge merges the contents of src into the receiver message.\n\t// It clones all data structures in src such that it aliases no mutable\n\t// memory referenced by src.\n\tMerge(src Message)\n}\n\n// RequiredNotSetError is an error type returned when\n// marshaling or unmarshaling a message with missing required fields.\ntype RequiredNotSetError struct {\n\terr error\n}\n\nfunc (e *RequiredNotSetError) Error() string {\n\tif e.err != nil {\n\t\treturn e.err.Error()\n\t}\n\treturn \"proto: required field not set\"\n}\nfunc (e *RequiredNotSetError) RequiredNotSet() bool {\n\treturn true\n}\n\nfunc checkRequiredNotSet(m protoV2.Message) error {\n\tif err := protoV2.CheckInitialized(m); err != nil {\n\t\treturn &RequiredNotSetError{err: err}\n\t}\n\treturn nil\n}\n\n// Clone returns a deep copy of src.\nfunc Clone(src Message) Message {\n\treturn MessageV1(protoV2.Clone(MessageV2(src)))\n}\n\n// Merge merges src into dst, which must be messages of the same type.\n//\n// Populated scalar fields in src are copied to dst, while populated\n// singular messages in src are merged into dst by recursively calling Merge.\n// The elements of every list field in src is appended to the corresponded\n// list fields in dst. The entries of every map field in src is copied into\n// the corresponding map field in dst, possibly replacing existing entries.\n// The unknown fields of src are appended to the unknown fields of dst.\nfunc Merge(dst, src Message) {\n\tprotoV2.Merge(MessageV2(dst), MessageV2(src))\n}\n\n// Equal reports whether two messages are equal.\n// If two messages marshal to the same bytes under deterministic serialization,\n// then Equal is guaranteed to report true.\n//\n// Two messages are equal if they are the same protobuf message type,\n// have the same set of populated known and extension field values,\n// and the same set of unknown fields values.\n//\n// Scalar values are compared with the equivalent of the == operator in Go,\n// except bytes values which are compared using bytes.Equal and\n// floating point values which specially treat NaNs as equal.\n// Message values are compared by recursively calling Equal.\n// Lists are equal if each element value is also equal.\n// Maps are equal if they have the same set of keys, where the pair of values\n// for each key is also equal.\nfunc Equal(x, y Message) bool {\n\treturn protoV2.Equal(MessageV2(x), MessageV2(y))\n}\n\nfunc isMessageSet(md protoreflect.MessageDescriptor) bool {\n\tms, ok := md.(interface{ IsMessageSet() bool })\n\treturn ok && ms.IsMessageSet()\n}\n"
  },
  {
    "path": "vendor/github.com/golang/protobuf/proto/registry.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage proto\n\nimport (\n\t\"bytes\"\n\t\"compress/gzip\"\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"reflect\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"google.golang.org/protobuf/reflect/protodesc\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n\t\"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\n// filePath is the path to the proto source file.\ntype filePath = string // e.g., \"google/protobuf/descriptor.proto\"\n\n// fileDescGZIP is the compressed contents of the encoded FileDescriptorProto.\ntype fileDescGZIP = []byte\n\nvar fileCache sync.Map // map[filePath]fileDescGZIP\n\n// RegisterFile is called from generated code to register the compressed\n// FileDescriptorProto with the file path for a proto source file.\n//\n// Deprecated: Use protoregistry.GlobalFiles.RegisterFile instead.\nfunc RegisterFile(s filePath, d fileDescGZIP) {\n\t// Decompress the descriptor.\n\tzr, err := gzip.NewReader(bytes.NewReader(d))\n\tif err != nil {\n\t\tpanic(fmt.Sprintf(\"proto: invalid compressed file descriptor: %v\", err))\n\t}\n\tb, err := ioutil.ReadAll(zr)\n\tif err != nil {\n\t\tpanic(fmt.Sprintf(\"proto: invalid compressed file descriptor: %v\", err))\n\t}\n\n\t// Construct a protoreflect.FileDescriptor from the raw descriptor.\n\t// Note that DescBuilder.Build automatically registers the constructed\n\t// file descriptor with the v2 registry.\n\tprotoimpl.DescBuilder{RawDescriptor: b}.Build()\n\n\t// Locally cache the raw descriptor form for the file.\n\tfileCache.Store(s, d)\n}\n\n// FileDescriptor returns the compressed FileDescriptorProto given the file path\n// for a proto source file. It returns nil if not found.\n//\n// Deprecated: Use protoregistry.GlobalFiles.FindFileByPath instead.\nfunc FileDescriptor(s filePath) fileDescGZIP {\n\tif v, ok := fileCache.Load(s); ok {\n\t\treturn v.(fileDescGZIP)\n\t}\n\n\t// Find the descriptor in the v2 registry.\n\tvar b []byte\n\tif fd, _ := protoregistry.GlobalFiles.FindFileByPath(s); fd != nil {\n\t\tb, _ = Marshal(protodesc.ToFileDescriptorProto(fd))\n\t}\n\n\t// Locally cache the raw descriptor form for the file.\n\tif len(b) > 0 {\n\t\tv, _ := fileCache.LoadOrStore(s, protoimpl.X.CompressGZIP(b))\n\t\treturn v.(fileDescGZIP)\n\t}\n\treturn nil\n}\n\n// enumName is the name of an enum. For historical reasons, the enum name is\n// neither the full Go name nor the full protobuf name of the enum.\n// The name is the dot-separated combination of just the proto package that the\n// enum is declared within followed by the Go type name of the generated enum.\ntype enumName = string // e.g., \"my.proto.package.GoMessage_GoEnum\"\n\n// enumsByName maps enum values by name to their numeric counterpart.\ntype enumsByName = map[string]int32\n\n// enumsByNumber maps enum values by number to their name counterpart.\ntype enumsByNumber = map[int32]string\n\nvar enumCache sync.Map     // map[enumName]enumsByName\nvar numFilesCache sync.Map // map[protoreflect.FullName]int\n\n// RegisterEnum is called from the generated code to register the mapping of\n// enum value names to enum numbers for the enum identified by s.\n//\n// Deprecated: Use protoregistry.GlobalTypes.RegisterEnum instead.\nfunc RegisterEnum(s enumName, _ enumsByNumber, m enumsByName) {\n\tif _, ok := enumCache.Load(s); ok {\n\t\tpanic(\"proto: duplicate enum registered: \" + s)\n\t}\n\tenumCache.Store(s, m)\n\n\t// This does not forward registration to the v2 registry since this API\n\t// lacks sufficient information to construct a complete v2 enum descriptor.\n}\n\n// EnumValueMap returns the mapping from enum value names to enum numbers for\n// the enum of the given name. It returns nil if not found.\n//\n// Deprecated: Use protoregistry.GlobalTypes.FindEnumByName instead.\nfunc EnumValueMap(s enumName) enumsByName {\n\tif v, ok := enumCache.Load(s); ok {\n\t\treturn v.(enumsByName)\n\t}\n\n\t// Check whether the cache is stale. If the number of files in the current\n\t// package differs, then it means that some enums may have been recently\n\t// registered upstream that we do not know about.\n\tvar protoPkg protoreflect.FullName\n\tif i := strings.LastIndexByte(s, '.'); i >= 0 {\n\t\tprotoPkg = protoreflect.FullName(s[:i])\n\t}\n\tv, _ := numFilesCache.Load(protoPkg)\n\tnumFiles, _ := v.(int)\n\tif protoregistry.GlobalFiles.NumFilesByPackage(protoPkg) == numFiles {\n\t\treturn nil // cache is up-to-date; was not found earlier\n\t}\n\n\t// Update the enum cache for all enums declared in the given proto package.\n\tnumFiles = 0\n\tprotoregistry.GlobalFiles.RangeFilesByPackage(protoPkg, func(fd protoreflect.FileDescriptor) bool {\n\t\twalkEnums(fd, func(ed protoreflect.EnumDescriptor) {\n\t\t\tname := protoimpl.X.LegacyEnumName(ed)\n\t\t\tif _, ok := enumCache.Load(name); !ok {\n\t\t\t\tm := make(enumsByName)\n\t\t\t\tevs := ed.Values()\n\t\t\t\tfor i := evs.Len() - 1; i >= 0; i-- {\n\t\t\t\t\tev := evs.Get(i)\n\t\t\t\t\tm[string(ev.Name())] = int32(ev.Number())\n\t\t\t\t}\n\t\t\t\tenumCache.LoadOrStore(name, m)\n\t\t\t}\n\t\t})\n\t\tnumFiles++\n\t\treturn true\n\t})\n\tnumFilesCache.Store(protoPkg, numFiles)\n\n\t// Check cache again for enum map.\n\tif v, ok := enumCache.Load(s); ok {\n\t\treturn v.(enumsByName)\n\t}\n\treturn nil\n}\n\n// walkEnums recursively walks all enums declared in d.\nfunc walkEnums(d interface {\n\tEnums() protoreflect.EnumDescriptors\n\tMessages() protoreflect.MessageDescriptors\n}, f func(protoreflect.EnumDescriptor)) {\n\teds := d.Enums()\n\tfor i := eds.Len() - 1; i >= 0; i-- {\n\t\tf(eds.Get(i))\n\t}\n\tmds := d.Messages()\n\tfor i := mds.Len() - 1; i >= 0; i-- {\n\t\twalkEnums(mds.Get(i), f)\n\t}\n}\n\n// messageName is the full name of protobuf message.\ntype messageName = string\n\nvar messageTypeCache sync.Map // map[messageName]reflect.Type\n\n// RegisterType is called from generated code to register the message Go type\n// for a message of the given name.\n//\n// Deprecated: Use protoregistry.GlobalTypes.RegisterMessage instead.\nfunc RegisterType(m Message, s messageName) {\n\tmt := protoimpl.X.LegacyMessageTypeOf(m, protoreflect.FullName(s))\n\tif err := protoregistry.GlobalTypes.RegisterMessage(mt); err != nil {\n\t\tpanic(err)\n\t}\n\tmessageTypeCache.Store(s, reflect.TypeOf(m))\n}\n\n// RegisterMapType is called from generated code to register the Go map type\n// for a protobuf message representing a map entry.\n//\n// Deprecated: Do not use.\nfunc RegisterMapType(m interface{}, s messageName) {\n\tt := reflect.TypeOf(m)\n\tif t.Kind() != reflect.Map {\n\t\tpanic(fmt.Sprintf(\"invalid map kind: %v\", t))\n\t}\n\tif _, ok := messageTypeCache.Load(s); ok {\n\t\tpanic(fmt.Errorf(\"proto: duplicate proto message registered: %s\", s))\n\t}\n\tmessageTypeCache.Store(s, t)\n}\n\n// MessageType returns the message type for a named message.\n// It returns nil if not found.\n//\n// Deprecated: Use protoregistry.GlobalTypes.FindMessageByName instead.\nfunc MessageType(s messageName) reflect.Type {\n\tif v, ok := messageTypeCache.Load(s); ok {\n\t\treturn v.(reflect.Type)\n\t}\n\n\t// Derive the message type from the v2 registry.\n\tvar t reflect.Type\n\tif mt, _ := protoregistry.GlobalTypes.FindMessageByName(protoreflect.FullName(s)); mt != nil {\n\t\tt = messageGoType(mt)\n\t}\n\n\t// If we could not get a concrete type, it is possible that it is a\n\t// pseudo-message for a map entry.\n\tif t == nil {\n\t\td, _ := protoregistry.GlobalFiles.FindDescriptorByName(protoreflect.FullName(s))\n\t\tif md, _ := d.(protoreflect.MessageDescriptor); md != nil && md.IsMapEntry() {\n\t\t\tkt := goTypeForField(md.Fields().ByNumber(1))\n\t\t\tvt := goTypeForField(md.Fields().ByNumber(2))\n\t\t\tt = reflect.MapOf(kt, vt)\n\t\t}\n\t}\n\n\t// Locally cache the message type for the given name.\n\tif t != nil {\n\t\tv, _ := messageTypeCache.LoadOrStore(s, t)\n\t\treturn v.(reflect.Type)\n\t}\n\treturn nil\n}\n\nfunc goTypeForField(fd protoreflect.FieldDescriptor) reflect.Type {\n\tswitch k := fd.Kind(); k {\n\tcase protoreflect.EnumKind:\n\t\tif et, _ := protoregistry.GlobalTypes.FindEnumByName(fd.Enum().FullName()); et != nil {\n\t\t\treturn enumGoType(et)\n\t\t}\n\t\treturn reflect.TypeOf(protoreflect.EnumNumber(0))\n\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\tif mt, _ := protoregistry.GlobalTypes.FindMessageByName(fd.Message().FullName()); mt != nil {\n\t\t\treturn messageGoType(mt)\n\t\t}\n\t\treturn reflect.TypeOf((*protoreflect.Message)(nil)).Elem()\n\tdefault:\n\t\treturn reflect.TypeOf(fd.Default().Interface())\n\t}\n}\n\nfunc enumGoType(et protoreflect.EnumType) reflect.Type {\n\treturn reflect.TypeOf(et.New(0))\n}\n\nfunc messageGoType(mt protoreflect.MessageType) reflect.Type {\n\treturn reflect.TypeOf(MessageV1(mt.Zero().Interface()))\n}\n\n// MessageName returns the full protobuf name for the given message type.\n//\n// Deprecated: Use protoreflect.MessageDescriptor.FullName instead.\nfunc MessageName(m Message) messageName {\n\tif m == nil {\n\t\treturn \"\"\n\t}\n\tif m, ok := m.(interface{ XXX_MessageName() messageName }); ok {\n\t\treturn m.XXX_MessageName()\n\t}\n\treturn messageName(protoimpl.X.MessageDescriptorOf(m).FullName())\n}\n\n// RegisterExtension is called from the generated code to register\n// the extension descriptor.\n//\n// Deprecated: Use protoregistry.GlobalTypes.RegisterExtension instead.\nfunc RegisterExtension(d *ExtensionDesc) {\n\tif err := protoregistry.GlobalTypes.RegisterExtension(d); err != nil {\n\t\tpanic(err)\n\t}\n}\n\ntype extensionsByNumber = map[int32]*ExtensionDesc\n\nvar extensionCache sync.Map // map[messageName]extensionsByNumber\n\n// RegisteredExtensions returns a map of the registered extensions for the\n// provided protobuf message, indexed by the extension field number.\n//\n// Deprecated: Use protoregistry.GlobalTypes.RangeExtensionsByMessage instead.\nfunc RegisteredExtensions(m Message) extensionsByNumber {\n\t// Check whether the cache is stale. If the number of extensions for\n\t// the given message differs, then it means that some extensions were\n\t// recently registered upstream that we do not know about.\n\ts := MessageName(m)\n\tv, _ := extensionCache.Load(s)\n\txs, _ := v.(extensionsByNumber)\n\tif protoregistry.GlobalTypes.NumExtensionsByMessage(protoreflect.FullName(s)) == len(xs) {\n\t\treturn xs // cache is up-to-date\n\t}\n\n\t// Cache is stale, re-compute the extensions map.\n\txs = make(extensionsByNumber)\n\tprotoregistry.GlobalTypes.RangeExtensionsByMessage(protoreflect.FullName(s), func(xt protoreflect.ExtensionType) bool {\n\t\tif xd, ok := xt.(*ExtensionDesc); ok {\n\t\t\txs[int32(xt.TypeDescriptor().Number())] = xd\n\t\t} else {\n\t\t\t// TODO: This implies that the protoreflect.ExtensionType is a\n\t\t\t// custom type not generated by protoc-gen-go. We could try and\n\t\t\t// convert the type to an ExtensionDesc.\n\t\t}\n\t\treturn true\n\t})\n\textensionCache.Store(s, xs)\n\treturn xs\n}\n"
  },
  {
    "path": "vendor/github.com/golang/protobuf/proto/text_decode.go",
    "content": "// Copyright 2010 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage proto\n\nimport (\n\t\"encoding\"\n\t\"errors\"\n\t\"fmt\"\n\t\"reflect\"\n\t\"strconv\"\n\t\"strings\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/encoding/prototext\"\n\tprotoV2 \"google.golang.org/protobuf/proto\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n)\n\nconst wrapTextUnmarshalV2 = false\n\n// ParseError is returned by UnmarshalText.\ntype ParseError struct {\n\tMessage string\n\n\t// Deprecated: Do not use.\n\tLine, Offset int\n}\n\nfunc (e *ParseError) Error() string {\n\tif wrapTextUnmarshalV2 {\n\t\treturn e.Message\n\t}\n\tif e.Line == 1 {\n\t\treturn fmt.Sprintf(\"line 1.%d: %v\", e.Offset, e.Message)\n\t}\n\treturn fmt.Sprintf(\"line %d: %v\", e.Line, e.Message)\n}\n\n// UnmarshalText parses a proto text formatted string into m.\nfunc UnmarshalText(s string, m Message) error {\n\tif u, ok := m.(encoding.TextUnmarshaler); ok {\n\t\treturn u.UnmarshalText([]byte(s))\n\t}\n\n\tm.Reset()\n\tmi := MessageV2(m)\n\n\tif wrapTextUnmarshalV2 {\n\t\terr := prototext.UnmarshalOptions{\n\t\t\tAllowPartial: true,\n\t\t}.Unmarshal([]byte(s), mi)\n\t\tif err != nil {\n\t\t\treturn &ParseError{Message: err.Error()}\n\t\t}\n\t\treturn checkRequiredNotSet(mi)\n\t} else {\n\t\tif err := newTextParser(s).unmarshalMessage(mi.ProtoReflect(), \"\"); err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn checkRequiredNotSet(mi)\n\t}\n}\n\ntype textParser struct {\n\ts            string // remaining input\n\tdone         bool   // whether the parsing is finished (success or error)\n\tbacked       bool   // whether back() was called\n\toffset, line int\n\tcur          token\n}\n\ntype token struct {\n\tvalue    string\n\terr      *ParseError\n\tline     int    // line number\n\toffset   int    // byte number from start of input, not start of line\n\tunquoted string // the unquoted version of value, if it was a quoted string\n}\n\nfunc newTextParser(s string) *textParser {\n\tp := new(textParser)\n\tp.s = s\n\tp.line = 1\n\tp.cur.line = 1\n\treturn p\n}\n\nfunc (p *textParser) unmarshalMessage(m protoreflect.Message, terminator string) (err error) {\n\tmd := m.Descriptor()\n\tfds := md.Fields()\n\n\t// A struct is a sequence of \"name: value\", terminated by one of\n\t// '>' or '}', or the end of the input.  A name may also be\n\t// \"[extension]\" or \"[type/url]\".\n\t//\n\t// The whole struct can also be an expanded Any message, like:\n\t// [type/url] < ... struct contents ... >\n\tseen := make(map[protoreflect.FieldNumber]bool)\n\tfor {\n\t\ttok := p.next()\n\t\tif tok.err != nil {\n\t\t\treturn tok.err\n\t\t}\n\t\tif tok.value == terminator {\n\t\t\tbreak\n\t\t}\n\t\tif tok.value == \"[\" {\n\t\t\tif err := p.unmarshalExtensionOrAny(m, seen); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\t// This is a normal, non-extension field.\n\t\tname := protoreflect.Name(tok.value)\n\t\tfd := fds.ByName(name)\n\t\tswitch {\n\t\tcase fd == nil:\n\t\t\tgd := fds.ByName(protoreflect.Name(strings.ToLower(string(name))))\n\t\t\tif gd != nil && gd.Kind() == protoreflect.GroupKind && gd.Message().Name() == name {\n\t\t\t\tfd = gd\n\t\t\t}\n\t\tcase fd.Kind() == protoreflect.GroupKind && fd.Message().Name() != name:\n\t\t\tfd = nil\n\t\tcase fd.IsWeak() && fd.Message().IsPlaceholder():\n\t\t\tfd = nil\n\t\t}\n\t\tif fd == nil {\n\t\t\ttypeName := string(md.FullName())\n\t\t\tif m, ok := m.Interface().(Message); ok {\n\t\t\t\tt := reflect.TypeOf(m)\n\t\t\t\tif t.Kind() == reflect.Ptr {\n\t\t\t\t\ttypeName = t.Elem().String()\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn p.errorf(\"unknown field name %q in %v\", name, typeName)\n\t\t}\n\t\tif od := fd.ContainingOneof(); od != nil && m.WhichOneof(od) != nil {\n\t\t\treturn p.errorf(\"field '%s' would overwrite already parsed oneof '%s'\", name, od.Name())\n\t\t}\n\t\tif fd.Cardinality() != protoreflect.Repeated && seen[fd.Number()] {\n\t\t\treturn p.errorf(\"non-repeated field %q was repeated\", fd.Name())\n\t\t}\n\t\tseen[fd.Number()] = true\n\n\t\t// Consume any colon.\n\t\tif err := p.checkForColon(fd); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\t// Parse into the field.\n\t\tv := m.Get(fd)\n\t\tif !m.Has(fd) && (fd.IsList() || fd.IsMap() || fd.Message() != nil) {\n\t\t\tv = m.Mutable(fd)\n\t\t}\n\t\tif v, err = p.unmarshalValue(v, fd); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tm.Set(fd, v)\n\n\t\tif err := p.consumeOptionalSeparator(); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (p *textParser) unmarshalExtensionOrAny(m protoreflect.Message, seen map[protoreflect.FieldNumber]bool) error {\n\tname, err := p.consumeExtensionOrAnyName()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// If it contains a slash, it's an Any type URL.\n\tif slashIdx := strings.LastIndex(name, \"/\"); slashIdx >= 0 {\n\t\ttok := p.next()\n\t\tif tok.err != nil {\n\t\t\treturn tok.err\n\t\t}\n\t\t// consume an optional colon\n\t\tif tok.value == \":\" {\n\t\t\ttok = p.next()\n\t\t\tif tok.err != nil {\n\t\t\t\treturn tok.err\n\t\t\t}\n\t\t}\n\n\t\tvar terminator string\n\t\tswitch tok.value {\n\t\tcase \"<\":\n\t\t\tterminator = \">\"\n\t\tcase \"{\":\n\t\t\tterminator = \"}\"\n\t\tdefault:\n\t\t\treturn p.errorf(\"expected '{' or '<', found %q\", tok.value)\n\t\t}\n\n\t\tmt, err := protoregistry.GlobalTypes.FindMessageByURL(name)\n\t\tif err != nil {\n\t\t\treturn p.errorf(\"unrecognized message %q in google.protobuf.Any\", name[slashIdx+len(\"/\"):])\n\t\t}\n\t\tm2 := mt.New()\n\t\tif err := p.unmarshalMessage(m2, terminator); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tb, err := protoV2.Marshal(m2.Interface())\n\t\tif err != nil {\n\t\t\treturn p.errorf(\"failed to marshal message of type %q: %v\", name[slashIdx+len(\"/\"):], err)\n\t\t}\n\n\t\turlFD := m.Descriptor().Fields().ByName(\"type_url\")\n\t\tvalFD := m.Descriptor().Fields().ByName(\"value\")\n\t\tif seen[urlFD.Number()] {\n\t\t\treturn p.errorf(\"Any message unpacked multiple times, or %q already set\", urlFD.Name())\n\t\t}\n\t\tif seen[valFD.Number()] {\n\t\t\treturn p.errorf(\"Any message unpacked multiple times, or %q already set\", valFD.Name())\n\t\t}\n\t\tm.Set(urlFD, protoreflect.ValueOfString(name))\n\t\tm.Set(valFD, protoreflect.ValueOfBytes(b))\n\t\tseen[urlFD.Number()] = true\n\t\tseen[valFD.Number()] = true\n\t\treturn nil\n\t}\n\n\txname := protoreflect.FullName(name)\n\txt, _ := protoregistry.GlobalTypes.FindExtensionByName(xname)\n\tif xt == nil && isMessageSet(m.Descriptor()) {\n\t\txt, _ = protoregistry.GlobalTypes.FindExtensionByName(xname.Append(\"message_set_extension\"))\n\t}\n\tif xt == nil {\n\t\treturn p.errorf(\"unrecognized extension %q\", name)\n\t}\n\tfd := xt.TypeDescriptor()\n\tif fd.ContainingMessage().FullName() != m.Descriptor().FullName() {\n\t\treturn p.errorf(\"extension field %q does not extend message %q\", name, m.Descriptor().FullName())\n\t}\n\n\tif err := p.checkForColon(fd); err != nil {\n\t\treturn err\n\t}\n\n\tv := m.Get(fd)\n\tif !m.Has(fd) && (fd.IsList() || fd.IsMap() || fd.Message() != nil) {\n\t\tv = m.Mutable(fd)\n\t}\n\tv, err = p.unmarshalValue(v, fd)\n\tif err != nil {\n\t\treturn err\n\t}\n\tm.Set(fd, v)\n\treturn p.consumeOptionalSeparator()\n}\n\nfunc (p *textParser) unmarshalValue(v protoreflect.Value, fd protoreflect.FieldDescriptor) (protoreflect.Value, error) {\n\ttok := p.next()\n\tif tok.err != nil {\n\t\treturn v, tok.err\n\t}\n\tif tok.value == \"\" {\n\t\treturn v, p.errorf(\"unexpected EOF\")\n\t}\n\n\tswitch {\n\tcase fd.IsList():\n\t\tlv := v.List()\n\t\tvar err error\n\t\tif tok.value == \"[\" {\n\t\t\t// Repeated field with list notation, like [1,2,3].\n\t\t\tfor {\n\t\t\t\tvv := lv.NewElement()\n\t\t\t\tvv, err = p.unmarshalSingularValue(vv, fd)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn v, err\n\t\t\t\t}\n\t\t\t\tlv.Append(vv)\n\n\t\t\t\ttok := p.next()\n\t\t\t\tif tok.err != nil {\n\t\t\t\t\treturn v, tok.err\n\t\t\t\t}\n\t\t\t\tif tok.value == \"]\" {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tif tok.value != \",\" {\n\t\t\t\t\treturn v, p.errorf(\"Expected ']' or ',' found %q\", tok.value)\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn v, nil\n\t\t}\n\n\t\t// One value of the repeated field.\n\t\tp.back()\n\t\tvv := lv.NewElement()\n\t\tvv, err = p.unmarshalSingularValue(vv, fd)\n\t\tif err != nil {\n\t\t\treturn v, err\n\t\t}\n\t\tlv.Append(vv)\n\t\treturn v, nil\n\tcase fd.IsMap():\n\t\t// The map entry should be this sequence of tokens:\n\t\t//\t< key : KEY value : VALUE >\n\t\t// However, implementations may omit key or value, and technically\n\t\t// we should support them in any order.\n\t\tvar terminator string\n\t\tswitch tok.value {\n\t\tcase \"<\":\n\t\t\tterminator = \">\"\n\t\tcase \"{\":\n\t\t\tterminator = \"}\"\n\t\tdefault:\n\t\t\treturn v, p.errorf(\"expected '{' or '<', found %q\", tok.value)\n\t\t}\n\n\t\tkeyFD := fd.MapKey()\n\t\tvalFD := fd.MapValue()\n\n\t\tmv := v.Map()\n\t\tkv := keyFD.Default()\n\t\tvv := mv.NewValue()\n\t\tfor {\n\t\t\ttok := p.next()\n\t\t\tif tok.err != nil {\n\t\t\t\treturn v, tok.err\n\t\t\t}\n\t\t\tif tok.value == terminator {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar err error\n\t\t\tswitch tok.value {\n\t\t\tcase \"key\":\n\t\t\t\tif err := p.consumeToken(\":\"); err != nil {\n\t\t\t\t\treturn v, err\n\t\t\t\t}\n\t\t\t\tif kv, err = p.unmarshalSingularValue(kv, keyFD); err != nil {\n\t\t\t\t\treturn v, err\n\t\t\t\t}\n\t\t\t\tif err := p.consumeOptionalSeparator(); err != nil {\n\t\t\t\t\treturn v, err\n\t\t\t\t}\n\t\t\tcase \"value\":\n\t\t\t\tif err := p.checkForColon(valFD); err != nil {\n\t\t\t\t\treturn v, err\n\t\t\t\t}\n\t\t\t\tif vv, err = p.unmarshalSingularValue(vv, valFD); err != nil {\n\t\t\t\t\treturn v, err\n\t\t\t\t}\n\t\t\t\tif err := p.consumeOptionalSeparator(); err != nil {\n\t\t\t\t\treturn v, err\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tp.back()\n\t\t\t\treturn v, p.errorf(`expected \"key\", \"value\", or %q, found %q`, terminator, tok.value)\n\t\t\t}\n\t\t}\n\t\tmv.Set(kv.MapKey(), vv)\n\t\treturn v, nil\n\tdefault:\n\t\tp.back()\n\t\treturn p.unmarshalSingularValue(v, fd)\n\t}\n}\n\nfunc (p *textParser) unmarshalSingularValue(v protoreflect.Value, fd protoreflect.FieldDescriptor) (protoreflect.Value, error) {\n\ttok := p.next()\n\tif tok.err != nil {\n\t\treturn v, tok.err\n\t}\n\tif tok.value == \"\" {\n\t\treturn v, p.errorf(\"unexpected EOF\")\n\t}\n\n\tswitch fd.Kind() {\n\tcase protoreflect.BoolKind:\n\t\tswitch tok.value {\n\t\tcase \"true\", \"1\", \"t\", \"True\":\n\t\t\treturn protoreflect.ValueOfBool(true), nil\n\t\tcase \"false\", \"0\", \"f\", \"False\":\n\t\t\treturn protoreflect.ValueOfBool(false), nil\n\t\t}\n\tcase protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind:\n\t\tif x, err := strconv.ParseInt(tok.value, 0, 32); err == nil {\n\t\t\treturn protoreflect.ValueOfInt32(int32(x)), nil\n\t\t}\n\n\t\t// The C++ parser accepts large positive hex numbers that uses\n\t\t// two's complement arithmetic to represent negative numbers.\n\t\t// This feature is here for backwards compatibility with C++.\n\t\tif strings.HasPrefix(tok.value, \"0x\") {\n\t\t\tif x, err := strconv.ParseUint(tok.value, 0, 32); err == nil {\n\t\t\t\treturn protoreflect.ValueOfInt32(int32(-(int64(^x) + 1))), nil\n\t\t\t}\n\t\t}\n\tcase protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind:\n\t\tif x, err := strconv.ParseInt(tok.value, 0, 64); err == nil {\n\t\t\treturn protoreflect.ValueOfInt64(int64(x)), nil\n\t\t}\n\n\t\t// The C++ parser accepts large positive hex numbers that uses\n\t\t// two's complement arithmetic to represent negative numbers.\n\t\t// This feature is here for backwards compatibility with C++.\n\t\tif strings.HasPrefix(tok.value, \"0x\") {\n\t\t\tif x, err := strconv.ParseUint(tok.value, 0, 64); err == nil {\n\t\t\t\treturn protoreflect.ValueOfInt64(int64(-(int64(^x) + 1))), nil\n\t\t\t}\n\t\t}\n\tcase protoreflect.Uint32Kind, protoreflect.Fixed32Kind:\n\t\tif x, err := strconv.ParseUint(tok.value, 0, 32); err == nil {\n\t\t\treturn protoreflect.ValueOfUint32(uint32(x)), nil\n\t\t}\n\tcase protoreflect.Uint64Kind, protoreflect.Fixed64Kind:\n\t\tif x, err := strconv.ParseUint(tok.value, 0, 64); err == nil {\n\t\t\treturn protoreflect.ValueOfUint64(uint64(x)), nil\n\t\t}\n\tcase protoreflect.FloatKind:\n\t\t// Ignore 'f' for compatibility with output generated by C++,\n\t\t// but don't remove 'f' when the value is \"-inf\" or \"inf\".\n\t\tv := tok.value\n\t\tif strings.HasSuffix(v, \"f\") && v != \"-inf\" && v != \"inf\" {\n\t\t\tv = v[:len(v)-len(\"f\")]\n\t\t}\n\t\tif x, err := strconv.ParseFloat(v, 32); err == nil {\n\t\t\treturn protoreflect.ValueOfFloat32(float32(x)), nil\n\t\t}\n\tcase protoreflect.DoubleKind:\n\t\t// Ignore 'f' for compatibility with output generated by C++,\n\t\t// but don't remove 'f' when the value is \"-inf\" or \"inf\".\n\t\tv := tok.value\n\t\tif strings.HasSuffix(v, \"f\") && v != \"-inf\" && v != \"inf\" {\n\t\t\tv = v[:len(v)-len(\"f\")]\n\t\t}\n\t\tif x, err := strconv.ParseFloat(v, 64); err == nil {\n\t\t\treturn protoreflect.ValueOfFloat64(float64(x)), nil\n\t\t}\n\tcase protoreflect.StringKind:\n\t\tif isQuote(tok.value[0]) {\n\t\t\treturn protoreflect.ValueOfString(tok.unquoted), nil\n\t\t}\n\tcase protoreflect.BytesKind:\n\t\tif isQuote(tok.value[0]) {\n\t\t\treturn protoreflect.ValueOfBytes([]byte(tok.unquoted)), nil\n\t\t}\n\tcase protoreflect.EnumKind:\n\t\tif x, err := strconv.ParseInt(tok.value, 0, 32); err == nil {\n\t\t\treturn protoreflect.ValueOfEnum(protoreflect.EnumNumber(x)), nil\n\t\t}\n\t\tvd := fd.Enum().Values().ByName(protoreflect.Name(tok.value))\n\t\tif vd != nil {\n\t\t\treturn protoreflect.ValueOfEnum(vd.Number()), nil\n\t\t}\n\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\tvar terminator string\n\t\tswitch tok.value {\n\t\tcase \"{\":\n\t\t\tterminator = \"}\"\n\t\tcase \"<\":\n\t\t\tterminator = \">\"\n\t\tdefault:\n\t\t\treturn v, p.errorf(\"expected '{' or '<', found %q\", tok.value)\n\t\t}\n\t\terr := p.unmarshalMessage(v.Message(), terminator)\n\t\treturn v, err\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"invalid kind %v\", fd.Kind()))\n\t}\n\treturn v, p.errorf(\"invalid %v: %v\", fd.Kind(), tok.value)\n}\n\n// Consume a ':' from the input stream (if the next token is a colon),\n// returning an error if a colon is needed but not present.\nfunc (p *textParser) checkForColon(fd protoreflect.FieldDescriptor) *ParseError {\n\ttok := p.next()\n\tif tok.err != nil {\n\t\treturn tok.err\n\t}\n\tif tok.value != \":\" {\n\t\tif fd.Message() == nil {\n\t\t\treturn p.errorf(\"expected ':', found %q\", tok.value)\n\t\t}\n\t\tp.back()\n\t}\n\treturn nil\n}\n\n// consumeExtensionOrAnyName consumes an extension name or an Any type URL and\n// the following ']'. It returns the name or URL consumed.\nfunc (p *textParser) consumeExtensionOrAnyName() (string, error) {\n\ttok := p.next()\n\tif tok.err != nil {\n\t\treturn \"\", tok.err\n\t}\n\n\t// If extension name or type url is quoted, it's a single token.\n\tif len(tok.value) > 2 && isQuote(tok.value[0]) && tok.value[len(tok.value)-1] == tok.value[0] {\n\t\tname, err := unquoteC(tok.value[1:len(tok.value)-1], rune(tok.value[0]))\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t\treturn name, p.consumeToken(\"]\")\n\t}\n\n\t// Consume everything up to \"]\"\n\tvar parts []string\n\tfor tok.value != \"]\" {\n\t\tparts = append(parts, tok.value)\n\t\ttok = p.next()\n\t\tif tok.err != nil {\n\t\t\treturn \"\", p.errorf(\"unrecognized type_url or extension name: %s\", tok.err)\n\t\t}\n\t\tif p.done && tok.value != \"]\" {\n\t\t\treturn \"\", p.errorf(\"unclosed type_url or extension name\")\n\t\t}\n\t}\n\treturn strings.Join(parts, \"\"), nil\n}\n\n// consumeOptionalSeparator consumes an optional semicolon or comma.\n// It is used in unmarshalMessage to provide backward compatibility.\nfunc (p *textParser) consumeOptionalSeparator() error {\n\ttok := p.next()\n\tif tok.err != nil {\n\t\treturn tok.err\n\t}\n\tif tok.value != \";\" && tok.value != \",\" {\n\t\tp.back()\n\t}\n\treturn nil\n}\n\nfunc (p *textParser) errorf(format string, a ...interface{}) *ParseError {\n\tpe := &ParseError{fmt.Sprintf(format, a...), p.cur.line, p.cur.offset}\n\tp.cur.err = pe\n\tp.done = true\n\treturn pe\n}\n\nfunc (p *textParser) skipWhitespace() {\n\ti := 0\n\tfor i < len(p.s) && (isWhitespace(p.s[i]) || p.s[i] == '#') {\n\t\tif p.s[i] == '#' {\n\t\t\t// comment; skip to end of line or input\n\t\t\tfor i < len(p.s) && p.s[i] != '\\n' {\n\t\t\t\ti++\n\t\t\t}\n\t\t\tif i == len(p.s) {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif p.s[i] == '\\n' {\n\t\t\tp.line++\n\t\t}\n\t\ti++\n\t}\n\tp.offset += i\n\tp.s = p.s[i:len(p.s)]\n\tif len(p.s) == 0 {\n\t\tp.done = true\n\t}\n}\n\nfunc (p *textParser) advance() {\n\t// Skip whitespace\n\tp.skipWhitespace()\n\tif p.done {\n\t\treturn\n\t}\n\n\t// Start of non-whitespace\n\tp.cur.err = nil\n\tp.cur.offset, p.cur.line = p.offset, p.line\n\tp.cur.unquoted = \"\"\n\tswitch p.s[0] {\n\tcase '<', '>', '{', '}', ':', '[', ']', ';', ',', '/':\n\t\t// Single symbol\n\t\tp.cur.value, p.s = p.s[0:1], p.s[1:len(p.s)]\n\tcase '\"', '\\'':\n\t\t// Quoted string\n\t\ti := 1\n\t\tfor i < len(p.s) && p.s[i] != p.s[0] && p.s[i] != '\\n' {\n\t\t\tif p.s[i] == '\\\\' && i+1 < len(p.s) {\n\t\t\t\t// skip escaped char\n\t\t\t\ti++\n\t\t\t}\n\t\t\ti++\n\t\t}\n\t\tif i >= len(p.s) || p.s[i] != p.s[0] {\n\t\t\tp.errorf(\"unmatched quote\")\n\t\t\treturn\n\t\t}\n\t\tunq, err := unquoteC(p.s[1:i], rune(p.s[0]))\n\t\tif err != nil {\n\t\t\tp.errorf(\"invalid quoted string %s: %v\", p.s[0:i+1], err)\n\t\t\treturn\n\t\t}\n\t\tp.cur.value, p.s = p.s[0:i+1], p.s[i+1:len(p.s)]\n\t\tp.cur.unquoted = unq\n\tdefault:\n\t\ti := 0\n\t\tfor i < len(p.s) && isIdentOrNumberChar(p.s[i]) {\n\t\t\ti++\n\t\t}\n\t\tif i == 0 {\n\t\t\tp.errorf(\"unexpected byte %#x\", p.s[0])\n\t\t\treturn\n\t\t}\n\t\tp.cur.value, p.s = p.s[0:i], p.s[i:len(p.s)]\n\t}\n\tp.offset += len(p.cur.value)\n}\n\n// Back off the parser by one token. Can only be done between calls to next().\n// It makes the next advance() a no-op.\nfunc (p *textParser) back() { p.backed = true }\n\n// Advances the parser and returns the new current token.\nfunc (p *textParser) next() *token {\n\tif p.backed || p.done {\n\t\tp.backed = false\n\t\treturn &p.cur\n\t}\n\tp.advance()\n\tif p.done {\n\t\tp.cur.value = \"\"\n\t} else if len(p.cur.value) > 0 && isQuote(p.cur.value[0]) {\n\t\t// Look for multiple quoted strings separated by whitespace,\n\t\t// and concatenate them.\n\t\tcat := p.cur\n\t\tfor {\n\t\t\tp.skipWhitespace()\n\t\t\tif p.done || !isQuote(p.s[0]) {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tp.advance()\n\t\t\tif p.cur.err != nil {\n\t\t\t\treturn &p.cur\n\t\t\t}\n\t\t\tcat.value += \" \" + p.cur.value\n\t\t\tcat.unquoted += p.cur.unquoted\n\t\t}\n\t\tp.done = false // parser may have seen EOF, but we want to return cat\n\t\tp.cur = cat\n\t}\n\treturn &p.cur\n}\n\nfunc (p *textParser) consumeToken(s string) error {\n\ttok := p.next()\n\tif tok.err != nil {\n\t\treturn tok.err\n\t}\n\tif tok.value != s {\n\t\tp.back()\n\t\treturn p.errorf(\"expected %q, found %q\", s, tok.value)\n\t}\n\treturn nil\n}\n\nvar errBadUTF8 = errors.New(\"proto: bad UTF-8\")\n\nfunc unquoteC(s string, quote rune) (string, error) {\n\t// This is based on C++'s tokenizer.cc.\n\t// Despite its name, this is *not* parsing C syntax.\n\t// For instance, \"\\0\" is an invalid quoted string.\n\n\t// Avoid allocation in trivial cases.\n\tsimple := true\n\tfor _, r := range s {\n\t\tif r == '\\\\' || r == quote {\n\t\t\tsimple = false\n\t\t\tbreak\n\t\t}\n\t}\n\tif simple {\n\t\treturn s, nil\n\t}\n\n\tbuf := make([]byte, 0, 3*len(s)/2)\n\tfor len(s) > 0 {\n\t\tr, n := utf8.DecodeRuneInString(s)\n\t\tif r == utf8.RuneError && n == 1 {\n\t\t\treturn \"\", errBadUTF8\n\t\t}\n\t\ts = s[n:]\n\t\tif r != '\\\\' {\n\t\t\tif r < utf8.RuneSelf {\n\t\t\t\tbuf = append(buf, byte(r))\n\t\t\t} else {\n\t\t\t\tbuf = append(buf, string(r)...)\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\tch, tail, err := unescape(s)\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t\tbuf = append(buf, ch...)\n\t\ts = tail\n\t}\n\treturn string(buf), nil\n}\n\nfunc unescape(s string) (ch string, tail string, err error) {\n\tr, n := utf8.DecodeRuneInString(s)\n\tif r == utf8.RuneError && n == 1 {\n\t\treturn \"\", \"\", errBadUTF8\n\t}\n\ts = s[n:]\n\tswitch r {\n\tcase 'a':\n\t\treturn \"\\a\", s, nil\n\tcase 'b':\n\t\treturn \"\\b\", s, nil\n\tcase 'f':\n\t\treturn \"\\f\", s, nil\n\tcase 'n':\n\t\treturn \"\\n\", s, nil\n\tcase 'r':\n\t\treturn \"\\r\", s, nil\n\tcase 't':\n\t\treturn \"\\t\", s, nil\n\tcase 'v':\n\t\treturn \"\\v\", s, nil\n\tcase '?':\n\t\treturn \"?\", s, nil // trigraph workaround\n\tcase '\\'', '\"', '\\\\':\n\t\treturn string(r), s, nil\n\tcase '0', '1', '2', '3', '4', '5', '6', '7':\n\t\tif len(s) < 2 {\n\t\t\treturn \"\", \"\", fmt.Errorf(`\\%c requires 2 following digits`, r)\n\t\t}\n\t\tss := string(r) + s[:2]\n\t\ts = s[2:]\n\t\ti, err := strconv.ParseUint(ss, 8, 8)\n\t\tif err != nil {\n\t\t\treturn \"\", \"\", fmt.Errorf(`\\%s contains non-octal digits`, ss)\n\t\t}\n\t\treturn string([]byte{byte(i)}), s, nil\n\tcase 'x', 'X', 'u', 'U':\n\t\tvar n int\n\t\tswitch r {\n\t\tcase 'x', 'X':\n\t\t\tn = 2\n\t\tcase 'u':\n\t\t\tn = 4\n\t\tcase 'U':\n\t\t\tn = 8\n\t\t}\n\t\tif len(s) < n {\n\t\t\treturn \"\", \"\", fmt.Errorf(`\\%c requires %d following digits`, r, n)\n\t\t}\n\t\tss := s[:n]\n\t\ts = s[n:]\n\t\ti, err := strconv.ParseUint(ss, 16, 64)\n\t\tif err != nil {\n\t\t\treturn \"\", \"\", fmt.Errorf(`\\%c%s contains non-hexadecimal digits`, r, ss)\n\t\t}\n\t\tif r == 'x' || r == 'X' {\n\t\t\treturn string([]byte{byte(i)}), s, nil\n\t\t}\n\t\tif i > utf8.MaxRune {\n\t\t\treturn \"\", \"\", fmt.Errorf(`\\%c%s is not a valid Unicode code point`, r, ss)\n\t\t}\n\t\treturn string(rune(i)), s, nil\n\t}\n\treturn \"\", \"\", fmt.Errorf(`unknown escape \\%c`, r)\n}\n\nfunc isIdentOrNumberChar(c byte) bool {\n\tswitch {\n\tcase 'A' <= c && c <= 'Z', 'a' <= c && c <= 'z':\n\t\treturn true\n\tcase '0' <= c && c <= '9':\n\t\treturn true\n\t}\n\tswitch c {\n\tcase '-', '+', '.', '_':\n\t\treturn true\n\t}\n\treturn false\n}\n\nfunc isWhitespace(c byte) bool {\n\tswitch c {\n\tcase ' ', '\\t', '\\n', '\\r':\n\t\treturn true\n\t}\n\treturn false\n}\n\nfunc isQuote(c byte) bool {\n\tswitch c {\n\tcase '\"', '\\'':\n\t\treturn true\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "vendor/github.com/golang/protobuf/proto/text_encode.go",
    "content": "// Copyright 2010 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage proto\n\nimport (\n\t\"bytes\"\n\t\"encoding\"\n\t\"fmt\"\n\t\"io\"\n\t\"math\"\n\t\"sort\"\n\t\"strings\"\n\n\t\"google.golang.org/protobuf/encoding/prototext\"\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/proto\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n)\n\nconst wrapTextMarshalV2 = false\n\n// TextMarshaler is a configurable text format marshaler.\ntype TextMarshaler struct {\n\tCompact   bool // use compact text format (one line)\n\tExpandAny bool // expand google.protobuf.Any messages of known types\n}\n\n// Marshal writes the proto text format of m to w.\nfunc (tm *TextMarshaler) Marshal(w io.Writer, m Message) error {\n\tb, err := tm.marshal(m)\n\tif len(b) > 0 {\n\t\tif _, err := w.Write(b); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn err\n}\n\n// Text returns a proto text formatted string of m.\nfunc (tm *TextMarshaler) Text(m Message) string {\n\tb, _ := tm.marshal(m)\n\treturn string(b)\n}\n\nfunc (tm *TextMarshaler) marshal(m Message) ([]byte, error) {\n\tmr := MessageReflect(m)\n\tif mr == nil || !mr.IsValid() {\n\t\treturn []byte(\"<nil>\"), nil\n\t}\n\n\tif wrapTextMarshalV2 {\n\t\tif m, ok := m.(encoding.TextMarshaler); ok {\n\t\t\treturn m.MarshalText()\n\t\t}\n\n\t\topts := prototext.MarshalOptions{\n\t\t\tAllowPartial: true,\n\t\t\tEmitUnknown:  true,\n\t\t}\n\t\tif !tm.Compact {\n\t\t\topts.Indent = \"  \"\n\t\t}\n\t\tif !tm.ExpandAny {\n\t\t\topts.Resolver = (*protoregistry.Types)(nil)\n\t\t}\n\t\treturn opts.Marshal(mr.Interface())\n\t} else {\n\t\tw := &textWriter{\n\t\t\tcompact:   tm.Compact,\n\t\t\texpandAny: tm.ExpandAny,\n\t\t\tcomplete:  true,\n\t\t}\n\n\t\tif m, ok := m.(encoding.TextMarshaler); ok {\n\t\t\tb, err := m.MarshalText()\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tw.Write(b)\n\t\t\treturn w.buf, nil\n\t\t}\n\n\t\terr := w.writeMessage(mr)\n\t\treturn w.buf, err\n\t}\n}\n\nvar (\n\tdefaultTextMarshaler = TextMarshaler{}\n\tcompactTextMarshaler = TextMarshaler{Compact: true}\n)\n\n// MarshalText writes the proto text format of m to w.\nfunc MarshalText(w io.Writer, m Message) error { return defaultTextMarshaler.Marshal(w, m) }\n\n// MarshalTextString returns a proto text formatted string of m.\nfunc MarshalTextString(m Message) string { return defaultTextMarshaler.Text(m) }\n\n// CompactText writes the compact proto text format of m to w.\nfunc CompactText(w io.Writer, m Message) error { return compactTextMarshaler.Marshal(w, m) }\n\n// CompactTextString returns a compact proto text formatted string of m.\nfunc CompactTextString(m Message) string { return compactTextMarshaler.Text(m) }\n\nvar (\n\tnewline         = []byte(\"\\n\")\n\tendBraceNewline = []byte(\"}\\n\")\n\tposInf          = []byte(\"inf\")\n\tnegInf          = []byte(\"-inf\")\n\tnan             = []byte(\"nan\")\n)\n\n// textWriter is an io.Writer that tracks its indentation level.\ntype textWriter struct {\n\tcompact   bool // same as TextMarshaler.Compact\n\texpandAny bool // same as TextMarshaler.ExpandAny\n\tcomplete  bool // whether the current position is a complete line\n\tindent    int  // indentation level; never negative\n\tbuf       []byte\n}\n\nfunc (w *textWriter) Write(p []byte) (n int, _ error) {\n\tnewlines := bytes.Count(p, newline)\n\tif newlines == 0 {\n\t\tif !w.compact && w.complete {\n\t\t\tw.writeIndent()\n\t\t}\n\t\tw.buf = append(w.buf, p...)\n\t\tw.complete = false\n\t\treturn len(p), nil\n\t}\n\n\tfrags := bytes.SplitN(p, newline, newlines+1)\n\tif w.compact {\n\t\tfor i, frag := range frags {\n\t\t\tif i > 0 {\n\t\t\t\tw.buf = append(w.buf, ' ')\n\t\t\t\tn++\n\t\t\t}\n\t\t\tw.buf = append(w.buf, frag...)\n\t\t\tn += len(frag)\n\t\t}\n\t\treturn n, nil\n\t}\n\n\tfor i, frag := range frags {\n\t\tif w.complete {\n\t\t\tw.writeIndent()\n\t\t}\n\t\tw.buf = append(w.buf, frag...)\n\t\tn += len(frag)\n\t\tif i+1 < len(frags) {\n\t\t\tw.buf = append(w.buf, '\\n')\n\t\t\tn++\n\t\t}\n\t}\n\tw.complete = len(frags[len(frags)-1]) == 0\n\treturn n, nil\n}\n\nfunc (w *textWriter) WriteByte(c byte) error {\n\tif w.compact && c == '\\n' {\n\t\tc = ' '\n\t}\n\tif !w.compact && w.complete {\n\t\tw.writeIndent()\n\t}\n\tw.buf = append(w.buf, c)\n\tw.complete = c == '\\n'\n\treturn nil\n}\n\nfunc (w *textWriter) writeName(fd protoreflect.FieldDescriptor) {\n\tif !w.compact && w.complete {\n\t\tw.writeIndent()\n\t}\n\tw.complete = false\n\n\tif fd.Kind() != protoreflect.GroupKind {\n\t\tw.buf = append(w.buf, fd.Name()...)\n\t\tw.WriteByte(':')\n\t} else {\n\t\t// Use message type name for group field name.\n\t\tw.buf = append(w.buf, fd.Message().Name()...)\n\t}\n\n\tif !w.compact {\n\t\tw.WriteByte(' ')\n\t}\n}\n\nfunc requiresQuotes(u string) bool {\n\t// When type URL contains any characters except [0-9A-Za-z./\\-]*, it must be quoted.\n\tfor _, ch := range u {\n\t\tswitch {\n\t\tcase ch == '.' || ch == '/' || ch == '_':\n\t\t\tcontinue\n\t\tcase '0' <= ch && ch <= '9':\n\t\t\tcontinue\n\t\tcase 'A' <= ch && ch <= 'Z':\n\t\t\tcontinue\n\t\tcase 'a' <= ch && ch <= 'z':\n\t\t\tcontinue\n\t\tdefault:\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// writeProto3Any writes an expanded google.protobuf.Any message.\n//\n// It returns (false, nil) if sv value can't be unmarshaled (e.g. because\n// required messages are not linked in).\n//\n// It returns (true, error) when sv was written in expanded format or an error\n// was encountered.\nfunc (w *textWriter) writeProto3Any(m protoreflect.Message) (bool, error) {\n\tmd := m.Descriptor()\n\tfdURL := md.Fields().ByName(\"type_url\")\n\tfdVal := md.Fields().ByName(\"value\")\n\n\turl := m.Get(fdURL).String()\n\tmt, err := protoregistry.GlobalTypes.FindMessageByURL(url)\n\tif err != nil {\n\t\treturn false, nil\n\t}\n\n\tb := m.Get(fdVal).Bytes()\n\tm2 := mt.New()\n\tif err := proto.Unmarshal(b, m2.Interface()); err != nil {\n\t\treturn false, nil\n\t}\n\tw.Write([]byte(\"[\"))\n\tif requiresQuotes(url) {\n\t\tw.writeQuotedString(url)\n\t} else {\n\t\tw.Write([]byte(url))\n\t}\n\tif w.compact {\n\t\tw.Write([]byte(\"]:<\"))\n\t} else {\n\t\tw.Write([]byte(\"]: <\\n\"))\n\t\tw.indent++\n\t}\n\tif err := w.writeMessage(m2); err != nil {\n\t\treturn true, err\n\t}\n\tif w.compact {\n\t\tw.Write([]byte(\"> \"))\n\t} else {\n\t\tw.indent--\n\t\tw.Write([]byte(\">\\n\"))\n\t}\n\treturn true, nil\n}\n\nfunc (w *textWriter) writeMessage(m protoreflect.Message) error {\n\tmd := m.Descriptor()\n\tif w.expandAny && md.FullName() == \"google.protobuf.Any\" {\n\t\tif canExpand, err := w.writeProto3Any(m); canExpand {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tfds := md.Fields()\n\tfor i := 0; i < fds.Len(); {\n\t\tfd := fds.Get(i)\n\t\tif od := fd.ContainingOneof(); od != nil {\n\t\t\tfd = m.WhichOneof(od)\n\t\t\ti += od.Fields().Len()\n\t\t} else {\n\t\t\ti++\n\t\t}\n\t\tif fd == nil || !m.Has(fd) {\n\t\t\tcontinue\n\t\t}\n\n\t\tswitch {\n\t\tcase fd.IsList():\n\t\t\tlv := m.Get(fd).List()\n\t\t\tfor j := 0; j < lv.Len(); j++ {\n\t\t\t\tw.writeName(fd)\n\t\t\t\tv := lv.Get(j)\n\t\t\t\tif err := w.writeSingularValue(v, fd); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tw.WriteByte('\\n')\n\t\t\t}\n\t\tcase fd.IsMap():\n\t\t\tkfd := fd.MapKey()\n\t\t\tvfd := fd.MapValue()\n\t\t\tmv := m.Get(fd).Map()\n\n\t\t\ttype entry struct{ key, val protoreflect.Value }\n\t\t\tvar entries []entry\n\t\t\tmv.Range(func(k protoreflect.MapKey, v protoreflect.Value) bool {\n\t\t\t\tentries = append(entries, entry{k.Value(), v})\n\t\t\t\treturn true\n\t\t\t})\n\t\t\tsort.Slice(entries, func(i, j int) bool {\n\t\t\t\tswitch kfd.Kind() {\n\t\t\t\tcase protoreflect.BoolKind:\n\t\t\t\t\treturn !entries[i].key.Bool() && entries[j].key.Bool()\n\t\t\t\tcase protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind, protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind:\n\t\t\t\t\treturn entries[i].key.Int() < entries[j].key.Int()\n\t\t\t\tcase protoreflect.Uint32Kind, protoreflect.Fixed32Kind, protoreflect.Uint64Kind, protoreflect.Fixed64Kind:\n\t\t\t\t\treturn entries[i].key.Uint() < entries[j].key.Uint()\n\t\t\t\tcase protoreflect.StringKind:\n\t\t\t\t\treturn entries[i].key.String() < entries[j].key.String()\n\t\t\t\tdefault:\n\t\t\t\t\tpanic(\"invalid kind\")\n\t\t\t\t}\n\t\t\t})\n\t\t\tfor _, entry := range entries {\n\t\t\t\tw.writeName(fd)\n\t\t\t\tw.WriteByte('<')\n\t\t\t\tif !w.compact {\n\t\t\t\t\tw.WriteByte('\\n')\n\t\t\t\t}\n\t\t\t\tw.indent++\n\t\t\t\tw.writeName(kfd)\n\t\t\t\tif err := w.writeSingularValue(entry.key, kfd); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tw.WriteByte('\\n')\n\t\t\t\tw.writeName(vfd)\n\t\t\t\tif err := w.writeSingularValue(entry.val, vfd); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tw.WriteByte('\\n')\n\t\t\t\tw.indent--\n\t\t\t\tw.WriteByte('>')\n\t\t\t\tw.WriteByte('\\n')\n\t\t\t}\n\t\tdefault:\n\t\t\tw.writeName(fd)\n\t\t\tif err := w.writeSingularValue(m.Get(fd), fd); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tw.WriteByte('\\n')\n\t\t}\n\t}\n\n\tif b := m.GetUnknown(); len(b) > 0 {\n\t\tw.writeUnknownFields(b)\n\t}\n\treturn w.writeExtensions(m)\n}\n\nfunc (w *textWriter) writeSingularValue(v protoreflect.Value, fd protoreflect.FieldDescriptor) error {\n\tswitch fd.Kind() {\n\tcase protoreflect.FloatKind, protoreflect.DoubleKind:\n\t\tswitch vf := v.Float(); {\n\t\tcase math.IsInf(vf, +1):\n\t\t\tw.Write(posInf)\n\t\tcase math.IsInf(vf, -1):\n\t\t\tw.Write(negInf)\n\t\tcase math.IsNaN(vf):\n\t\t\tw.Write(nan)\n\t\tdefault:\n\t\t\tfmt.Fprint(w, v.Interface())\n\t\t}\n\tcase protoreflect.StringKind:\n\t\t// NOTE: This does not validate UTF-8 for historical reasons.\n\t\tw.writeQuotedString(string(v.String()))\n\tcase protoreflect.BytesKind:\n\t\tw.writeQuotedString(string(v.Bytes()))\n\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\tvar bra, ket byte = '<', '>'\n\t\tif fd.Kind() == protoreflect.GroupKind {\n\t\t\tbra, ket = '{', '}'\n\t\t}\n\t\tw.WriteByte(bra)\n\t\tif !w.compact {\n\t\t\tw.WriteByte('\\n')\n\t\t}\n\t\tw.indent++\n\t\tm := v.Message()\n\t\tif m2, ok := m.Interface().(encoding.TextMarshaler); ok {\n\t\t\tb, err := m2.MarshalText()\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tw.Write(b)\n\t\t} else {\n\t\t\tw.writeMessage(m)\n\t\t}\n\t\tw.indent--\n\t\tw.WriteByte(ket)\n\tcase protoreflect.EnumKind:\n\t\tif ev := fd.Enum().Values().ByNumber(v.Enum()); ev != nil {\n\t\t\tfmt.Fprint(w, ev.Name())\n\t\t} else {\n\t\t\tfmt.Fprint(w, v.Enum())\n\t\t}\n\tdefault:\n\t\tfmt.Fprint(w, v.Interface())\n\t}\n\treturn nil\n}\n\n// writeQuotedString writes a quoted string in the protocol buffer text format.\nfunc (w *textWriter) writeQuotedString(s string) {\n\tw.WriteByte('\"')\n\tfor i := 0; i < len(s); i++ {\n\t\tswitch c := s[i]; c {\n\t\tcase '\\n':\n\t\t\tw.buf = append(w.buf, `\\n`...)\n\t\tcase '\\r':\n\t\t\tw.buf = append(w.buf, `\\r`...)\n\t\tcase '\\t':\n\t\t\tw.buf = append(w.buf, `\\t`...)\n\t\tcase '\"':\n\t\t\tw.buf = append(w.buf, `\\\"`...)\n\t\tcase '\\\\':\n\t\t\tw.buf = append(w.buf, `\\\\`...)\n\t\tdefault:\n\t\t\tif isPrint := c >= 0x20 && c < 0x7f; isPrint {\n\t\t\t\tw.buf = append(w.buf, c)\n\t\t\t} else {\n\t\t\t\tw.buf = append(w.buf, fmt.Sprintf(`\\%03o`, c)...)\n\t\t\t}\n\t\t}\n\t}\n\tw.WriteByte('\"')\n}\n\nfunc (w *textWriter) writeUnknownFields(b []byte) {\n\tif !w.compact {\n\t\tfmt.Fprintf(w, \"/* %d unknown bytes */\\n\", len(b))\n\t}\n\n\tfor len(b) > 0 {\n\t\tnum, wtyp, n := protowire.ConsumeTag(b)\n\t\tif n < 0 {\n\t\t\treturn\n\t\t}\n\t\tb = b[n:]\n\n\t\tif wtyp == protowire.EndGroupType {\n\t\t\tw.indent--\n\t\t\tw.Write(endBraceNewline)\n\t\t\tcontinue\n\t\t}\n\t\tfmt.Fprint(w, num)\n\t\tif wtyp != protowire.StartGroupType {\n\t\t\tw.WriteByte(':')\n\t\t}\n\t\tif !w.compact || wtyp == protowire.StartGroupType {\n\t\t\tw.WriteByte(' ')\n\t\t}\n\t\tswitch wtyp {\n\t\tcase protowire.VarintType:\n\t\t\tv, n := protowire.ConsumeVarint(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tb = b[n:]\n\t\t\tfmt.Fprint(w, v)\n\t\tcase protowire.Fixed32Type:\n\t\t\tv, n := protowire.ConsumeFixed32(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tb = b[n:]\n\t\t\tfmt.Fprint(w, v)\n\t\tcase protowire.Fixed64Type:\n\t\t\tv, n := protowire.ConsumeFixed64(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tb = b[n:]\n\t\t\tfmt.Fprint(w, v)\n\t\tcase protowire.BytesType:\n\t\t\tv, n := protowire.ConsumeBytes(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tb = b[n:]\n\t\t\tfmt.Fprintf(w, \"%q\", v)\n\t\tcase protowire.StartGroupType:\n\t\t\tw.WriteByte('{')\n\t\t\tw.indent++\n\t\tdefault:\n\t\t\tfmt.Fprintf(w, \"/* unknown wire type %d */\", wtyp)\n\t\t}\n\t\tw.WriteByte('\\n')\n\t}\n}\n\n// writeExtensions writes all the extensions in m.\nfunc (w *textWriter) writeExtensions(m protoreflect.Message) error {\n\tmd := m.Descriptor()\n\tif md.ExtensionRanges().Len() == 0 {\n\t\treturn nil\n\t}\n\n\ttype ext struct {\n\t\tdesc protoreflect.FieldDescriptor\n\t\tval  protoreflect.Value\n\t}\n\tvar exts []ext\n\tm.Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool {\n\t\tif fd.IsExtension() {\n\t\t\texts = append(exts, ext{fd, v})\n\t\t}\n\t\treturn true\n\t})\n\tsort.Slice(exts, func(i, j int) bool {\n\t\treturn exts[i].desc.Number() < exts[j].desc.Number()\n\t})\n\n\tfor _, ext := range exts {\n\t\t// For message set, use the name of the message as the extension name.\n\t\tname := string(ext.desc.FullName())\n\t\tif isMessageSet(ext.desc.ContainingMessage()) {\n\t\t\tname = strings.TrimSuffix(name, \".message_set_extension\")\n\t\t}\n\n\t\tif !ext.desc.IsList() {\n\t\t\tif err := w.writeSingularExtension(name, ext.val, ext.desc); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t} else {\n\t\t\tlv := ext.val.List()\n\t\t\tfor i := 0; i < lv.Len(); i++ {\n\t\t\t\tif err := w.writeSingularExtension(name, lv.Get(i), ext.desc); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (w *textWriter) writeSingularExtension(name string, v protoreflect.Value, fd protoreflect.FieldDescriptor) error {\n\tfmt.Fprintf(w, \"[%s]:\", name)\n\tif !w.compact {\n\t\tw.WriteByte(' ')\n\t}\n\tif err := w.writeSingularValue(v, fd); err != nil {\n\t\treturn err\n\t}\n\tw.WriteByte('\\n')\n\treturn nil\n}\n\nfunc (w *textWriter) writeIndent() {\n\tif !w.complete {\n\t\treturn\n\t}\n\tfor i := 0; i < w.indent*2; i++ {\n\t\tw.buf = append(w.buf, ' ')\n\t}\n\tw.complete = false\n}\n"
  },
  {
    "path": "vendor/github.com/golang/protobuf/proto/wire.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage proto\n\nimport (\n\tprotoV2 \"google.golang.org/protobuf/proto\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n)\n\n// Size returns the size in bytes of the wire-format encoding of m.\nfunc Size(m Message) int {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tmi := MessageV2(m)\n\treturn protoV2.Size(mi)\n}\n\n// Marshal returns the wire-format encoding of m.\nfunc Marshal(m Message) ([]byte, error) {\n\tb, err := marshalAppend(nil, m, false)\n\tif b == nil {\n\t\tb = zeroBytes\n\t}\n\treturn b, err\n}\n\nvar zeroBytes = make([]byte, 0, 0)\n\nfunc marshalAppend(buf []byte, m Message, deterministic bool) ([]byte, error) {\n\tif m == nil {\n\t\treturn nil, ErrNil\n\t}\n\tmi := MessageV2(m)\n\tnbuf, err := protoV2.MarshalOptions{\n\t\tDeterministic: deterministic,\n\t\tAllowPartial:  true,\n\t}.MarshalAppend(buf, mi)\n\tif err != nil {\n\t\treturn buf, err\n\t}\n\tif len(buf) == len(nbuf) {\n\t\tif !mi.ProtoReflect().IsValid() {\n\t\t\treturn buf, ErrNil\n\t\t}\n\t}\n\treturn nbuf, checkRequiredNotSet(mi)\n}\n\n// Unmarshal parses a wire-format message in b and places the decoded results in m.\n//\n// Unmarshal resets m before starting to unmarshal, so any existing data in m is always\n// removed. Use UnmarshalMerge to preserve and append to existing data.\nfunc Unmarshal(b []byte, m Message) error {\n\tm.Reset()\n\treturn UnmarshalMerge(b, m)\n}\n\n// UnmarshalMerge parses a wire-format message in b and places the decoded results in m.\nfunc UnmarshalMerge(b []byte, m Message) error {\n\tmi := MessageV2(m)\n\tout, err := protoV2.UnmarshalOptions{\n\t\tAllowPartial: true,\n\t\tMerge:        true,\n\t}.UnmarshalState(protoiface.UnmarshalInput{\n\t\tBuf:     b,\n\t\tMessage: mi.ProtoReflect(),\n\t})\n\tif err != nil {\n\t\treturn err\n\t}\n\tif out.Flags&protoiface.UnmarshalInitialized > 0 {\n\t\treturn nil\n\t}\n\treturn checkRequiredNotSet(mi)\n}\n"
  },
  {
    "path": "vendor/github.com/golang/protobuf/proto/wrappers.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage proto\n\n// Bool stores v in a new bool value and returns a pointer to it.\nfunc Bool(v bool) *bool { return &v }\n\n// Int stores v in a new int32 value and returns a pointer to it.\n//\n// Deprecated: Use Int32 instead.\nfunc Int(v int) *int32 { return Int32(int32(v)) }\n\n// Int32 stores v in a new int32 value and returns a pointer to it.\nfunc Int32(v int32) *int32 { return &v }\n\n// Int64 stores v in a new int64 value and returns a pointer to it.\nfunc Int64(v int64) *int64 { return &v }\n\n// Uint32 stores v in a new uint32 value and returns a pointer to it.\nfunc Uint32(v uint32) *uint32 { return &v }\n\n// Uint64 stores v in a new uint64 value and returns a pointer to it.\nfunc Uint64(v uint64) *uint64 { return &v }\n\n// Float32 stores v in a new float32 value and returns a pointer to it.\nfunc Float32(v float32) *float32 { return &v }\n\n// Float64 stores v in a new float64 value and returns a pointer to it.\nfunc Float64(v float64) *float64 { return &v }\n\n// String stores v in a new string value and returns a pointer to it.\nfunc String(v string) *string { return &v }\n"
  },
  {
    "path": "vendor/github.com/golang/protobuf/ptypes/any/any.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// source: github.com/golang/protobuf/ptypes/any/any.proto\n\npackage any\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tanypb \"google.golang.org/protobuf/types/known/anypb\"\n\treflect \"reflect\"\n)\n\n// Symbols defined in public import of google/protobuf/any.proto.\n\ntype Any = anypb.Any\n\nvar File_github_com_golang_protobuf_ptypes_any_any_proto protoreflect.FileDescriptor\n\nvar file_github_com_golang_protobuf_ptypes_any_any_proto_rawDesc = []byte{\n\t0x0a, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x6c,\n\t0x61, 0x6e, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x70, 0x74, 0x79,\n\t0x70, 0x65, 0x73, 0x2f, 0x61, 0x6e, 0x79, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74,\n\t0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,\n\t0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x42, 0x2b, 0x5a, 0x29,\n\t0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x6c, 0x61, 0x6e,\n\t0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x70, 0x74, 0x79, 0x70, 0x65,\n\t0x73, 0x2f, 0x61, 0x6e, 0x79, 0x3b, 0x61, 0x6e, 0x79, 0x50, 0x00, 0x62, 0x06, 0x70, 0x72, 0x6f,\n\t0x74, 0x6f, 0x33,\n}\n\nvar file_github_com_golang_protobuf_ptypes_any_any_proto_goTypes = []interface{}{}\nvar file_github_com_golang_protobuf_ptypes_any_any_proto_depIdxs = []int32{\n\t0, // [0:0] is the sub-list for method output_type\n\t0, // [0:0] is the sub-list for method input_type\n\t0, // [0:0] is the sub-list for extension type_name\n\t0, // [0:0] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_github_com_golang_protobuf_ptypes_any_any_proto_init() }\nfunc file_github_com_golang_protobuf_ptypes_any_any_proto_init() {\n\tif File_github_com_golang_protobuf_ptypes_any_any_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_github_com_golang_protobuf_ptypes_any_any_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   0,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_github_com_golang_protobuf_ptypes_any_any_proto_goTypes,\n\t\tDependencyIndexes: file_github_com_golang_protobuf_ptypes_any_any_proto_depIdxs,\n\t}.Build()\n\tFile_github_com_golang_protobuf_ptypes_any_any_proto = out.File\n\tfile_github_com_golang_protobuf_ptypes_any_any_proto_rawDesc = nil\n\tfile_github_com_golang_protobuf_ptypes_any_any_proto_goTypes = nil\n\tfile_github_com_golang_protobuf_ptypes_any_any_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/golang/protobuf/ptypes/any.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage ptypes\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\t\"github.com/golang/protobuf/proto\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n\n\tanypb \"github.com/golang/protobuf/ptypes/any\"\n)\n\nconst urlPrefix = \"type.googleapis.com/\"\n\n// AnyMessageName returns the message name contained in an anypb.Any message.\n// Most type assertions should use the Is function instead.\n//\n// Deprecated: Call the any.MessageName method instead.\nfunc AnyMessageName(any *anypb.Any) (string, error) {\n\tname, err := anyMessageName(any)\n\treturn string(name), err\n}\nfunc anyMessageName(any *anypb.Any) (protoreflect.FullName, error) {\n\tif any == nil {\n\t\treturn \"\", fmt.Errorf(\"message is nil\")\n\t}\n\tname := protoreflect.FullName(any.TypeUrl)\n\tif i := strings.LastIndex(any.TypeUrl, \"/\"); i >= 0 {\n\t\tname = name[i+len(\"/\"):]\n\t}\n\tif !name.IsValid() {\n\t\treturn \"\", fmt.Errorf(\"message type url %q is invalid\", any.TypeUrl)\n\t}\n\treturn name, nil\n}\n\n// MarshalAny marshals the given message m into an anypb.Any message.\n//\n// Deprecated: Call the anypb.New function instead.\nfunc MarshalAny(m proto.Message) (*anypb.Any, error) {\n\tswitch dm := m.(type) {\n\tcase DynamicAny:\n\t\tm = dm.Message\n\tcase *DynamicAny:\n\t\tif dm == nil {\n\t\t\treturn nil, proto.ErrNil\n\t\t}\n\t\tm = dm.Message\n\t}\n\tb, err := proto.Marshal(m)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &anypb.Any{TypeUrl: urlPrefix + proto.MessageName(m), Value: b}, nil\n}\n\n// Empty returns a new message of the type specified in an anypb.Any message.\n// It returns protoregistry.NotFound if the corresponding message type could not\n// be resolved in the global registry.\n//\n// Deprecated: Use protoregistry.GlobalTypes.FindMessageByName instead\n// to resolve the message name and create a new instance of it.\nfunc Empty(any *anypb.Any) (proto.Message, error) {\n\tname, err := anyMessageName(any)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tmt, err := protoregistry.GlobalTypes.FindMessageByName(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn proto.MessageV1(mt.New().Interface()), nil\n}\n\n// UnmarshalAny unmarshals the encoded value contained in the anypb.Any message\n// into the provided message m. It returns an error if the target message\n// does not match the type in the Any message or if an unmarshal error occurs.\n//\n// The target message m may be a *DynamicAny message. If the underlying message\n// type could not be resolved, then this returns protoregistry.NotFound.\n//\n// Deprecated: Call the any.UnmarshalTo method instead.\nfunc UnmarshalAny(any *anypb.Any, m proto.Message) error {\n\tif dm, ok := m.(*DynamicAny); ok {\n\t\tif dm.Message == nil {\n\t\t\tvar err error\n\t\t\tdm.Message, err = Empty(any)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t\tm = dm.Message\n\t}\n\n\tanyName, err := AnyMessageName(any)\n\tif err != nil {\n\t\treturn err\n\t}\n\tmsgName := proto.MessageName(m)\n\tif anyName != msgName {\n\t\treturn fmt.Errorf(\"mismatched message type: got %q want %q\", anyName, msgName)\n\t}\n\treturn proto.Unmarshal(any.Value, m)\n}\n\n// Is reports whether the Any message contains a message of the specified type.\n//\n// Deprecated: Call the any.MessageIs method instead.\nfunc Is(any *anypb.Any, m proto.Message) bool {\n\tif any == nil || m == nil {\n\t\treturn false\n\t}\n\tname := proto.MessageName(m)\n\tif !strings.HasSuffix(any.TypeUrl, name) {\n\t\treturn false\n\t}\n\treturn len(any.TypeUrl) == len(name) || any.TypeUrl[len(any.TypeUrl)-len(name)-1] == '/'\n}\n\n// DynamicAny is a value that can be passed to UnmarshalAny to automatically\n// allocate a proto.Message for the type specified in an anypb.Any message.\n// The allocated message is stored in the embedded proto.Message.\n//\n// Example:\n//   var x ptypes.DynamicAny\n//   if err := ptypes.UnmarshalAny(a, &x); err != nil { ... }\n//   fmt.Printf(\"unmarshaled message: %v\", x.Message)\n//\n// Deprecated: Use the any.UnmarshalNew method instead to unmarshal\n// the any message contents into a new instance of the underlying message.\ntype DynamicAny struct{ proto.Message }\n\nfunc (m DynamicAny) String() string {\n\tif m.Message == nil {\n\t\treturn \"<nil>\"\n\t}\n\treturn m.Message.String()\n}\nfunc (m DynamicAny) Reset() {\n\tif m.Message == nil {\n\t\treturn\n\t}\n\tm.Message.Reset()\n}\nfunc (m DynamicAny) ProtoMessage() {\n\treturn\n}\nfunc (m DynamicAny) ProtoReflect() protoreflect.Message {\n\tif m.Message == nil {\n\t\treturn nil\n\t}\n\treturn dynamicAny{proto.MessageReflect(m.Message)}\n}\n\ntype dynamicAny struct{ protoreflect.Message }\n\nfunc (m dynamicAny) Type() protoreflect.MessageType {\n\treturn dynamicAnyType{m.Message.Type()}\n}\nfunc (m dynamicAny) New() protoreflect.Message {\n\treturn dynamicAnyType{m.Message.Type()}.New()\n}\nfunc (m dynamicAny) Interface() protoreflect.ProtoMessage {\n\treturn DynamicAny{proto.MessageV1(m.Message.Interface())}\n}\n\ntype dynamicAnyType struct{ protoreflect.MessageType }\n\nfunc (t dynamicAnyType) New() protoreflect.Message {\n\treturn dynamicAny{t.MessageType.New()}\n}\nfunc (t dynamicAnyType) Zero() protoreflect.Message {\n\treturn dynamicAny{t.MessageType.Zero()}\n}\n"
  },
  {
    "path": "vendor/github.com/golang/protobuf/ptypes/doc.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package ptypes provides functionality for interacting with well-known types.\n//\n// Deprecated: Well-known types have specialized functionality directly\n// injected into the generated packages for each message type.\n// See the deprecation notice for each function for the suggested alternative.\npackage ptypes\n"
  },
  {
    "path": "vendor/github.com/golang/protobuf/ptypes/duration/duration.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// source: github.com/golang/protobuf/ptypes/duration/duration.proto\n\npackage duration\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tdurationpb \"google.golang.org/protobuf/types/known/durationpb\"\n\treflect \"reflect\"\n)\n\n// Symbols defined in public import of google/protobuf/duration.proto.\n\ntype Duration = durationpb.Duration\n\nvar File_github_com_golang_protobuf_ptypes_duration_duration_proto protoreflect.FileDescriptor\n\nvar file_github_com_golang_protobuf_ptypes_duration_duration_proto_rawDesc = []byte{\n\t0x0a, 0x39, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x6c,\n\t0x61, 0x6e, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x70, 0x74, 0x79,\n\t0x70, 0x65, 0x73, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x64, 0x75, 0x72,\n\t0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f,\n\t0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72,\n\t0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x42, 0x35, 0x5a, 0x33, 0x67,\n\t0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67,\n\t0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73,\n\t0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69,\n\t0x6f, 0x6e, 0x50, 0x00, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar file_github_com_golang_protobuf_ptypes_duration_duration_proto_goTypes = []interface{}{}\nvar file_github_com_golang_protobuf_ptypes_duration_duration_proto_depIdxs = []int32{\n\t0, // [0:0] is the sub-list for method output_type\n\t0, // [0:0] is the sub-list for method input_type\n\t0, // [0:0] is the sub-list for extension type_name\n\t0, // [0:0] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_github_com_golang_protobuf_ptypes_duration_duration_proto_init() }\nfunc file_github_com_golang_protobuf_ptypes_duration_duration_proto_init() {\n\tif File_github_com_golang_protobuf_ptypes_duration_duration_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_github_com_golang_protobuf_ptypes_duration_duration_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   0,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_github_com_golang_protobuf_ptypes_duration_duration_proto_goTypes,\n\t\tDependencyIndexes: file_github_com_golang_protobuf_ptypes_duration_duration_proto_depIdxs,\n\t}.Build()\n\tFile_github_com_golang_protobuf_ptypes_duration_duration_proto = out.File\n\tfile_github_com_golang_protobuf_ptypes_duration_duration_proto_rawDesc = nil\n\tfile_github_com_golang_protobuf_ptypes_duration_duration_proto_goTypes = nil\n\tfile_github_com_golang_protobuf_ptypes_duration_duration_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/golang/protobuf/ptypes/duration.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage ptypes\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"time\"\n\n\tdurationpb \"github.com/golang/protobuf/ptypes/duration\"\n)\n\n// Range of google.protobuf.Duration as specified in duration.proto.\n// This is about 10,000 years in seconds.\nconst (\n\tmaxSeconds = int64(10000 * 365.25 * 24 * 60 * 60)\n\tminSeconds = -maxSeconds\n)\n\n// Duration converts a durationpb.Duration to a time.Duration.\n// Duration returns an error if dur is invalid or overflows a time.Duration.\n//\n// Deprecated: Call the dur.AsDuration and dur.CheckValid methods instead.\nfunc Duration(dur *durationpb.Duration) (time.Duration, error) {\n\tif err := validateDuration(dur); err != nil {\n\t\treturn 0, err\n\t}\n\td := time.Duration(dur.Seconds) * time.Second\n\tif int64(d/time.Second) != dur.Seconds {\n\t\treturn 0, fmt.Errorf(\"duration: %v is out of range for time.Duration\", dur)\n\t}\n\tif dur.Nanos != 0 {\n\t\td += time.Duration(dur.Nanos) * time.Nanosecond\n\t\tif (d < 0) != (dur.Nanos < 0) {\n\t\t\treturn 0, fmt.Errorf(\"duration: %v is out of range for time.Duration\", dur)\n\t\t}\n\t}\n\treturn d, nil\n}\n\n// DurationProto converts a time.Duration to a durationpb.Duration.\n//\n// Deprecated: Call the durationpb.New function instead.\nfunc DurationProto(d time.Duration) *durationpb.Duration {\n\tnanos := d.Nanoseconds()\n\tsecs := nanos / 1e9\n\tnanos -= secs * 1e9\n\treturn &durationpb.Duration{\n\t\tSeconds: int64(secs),\n\t\tNanos:   int32(nanos),\n\t}\n}\n\n// validateDuration determines whether the durationpb.Duration is valid\n// according to the definition in google/protobuf/duration.proto.\n// A valid durpb.Duration may still be too large to fit into a time.Duration\n// Note that the range of durationpb.Duration is about 10,000 years,\n// while the range of time.Duration is about 290 years.\nfunc validateDuration(dur *durationpb.Duration) error {\n\tif dur == nil {\n\t\treturn errors.New(\"duration: nil Duration\")\n\t}\n\tif dur.Seconds < minSeconds || dur.Seconds > maxSeconds {\n\t\treturn fmt.Errorf(\"duration: %v: seconds out of range\", dur)\n\t}\n\tif dur.Nanos <= -1e9 || dur.Nanos >= 1e9 {\n\t\treturn fmt.Errorf(\"duration: %v: nanos out of range\", dur)\n\t}\n\t// Seconds and Nanos must have the same sign, unless d.Nanos is zero.\n\tif (dur.Seconds < 0 && dur.Nanos > 0) || (dur.Seconds > 0 && dur.Nanos < 0) {\n\t\treturn fmt.Errorf(\"duration: %v: seconds and nanos have different signs\", dur)\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// source: github.com/golang/protobuf/ptypes/timestamp/timestamp.proto\n\npackage timestamp\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\ttimestamppb \"google.golang.org/protobuf/types/known/timestamppb\"\n\treflect \"reflect\"\n)\n\n// Symbols defined in public import of google/protobuf/timestamp.proto.\n\ntype Timestamp = timestamppb.Timestamp\n\nvar File_github_com_golang_protobuf_ptypes_timestamp_timestamp_proto protoreflect.FileDescriptor\n\nvar file_github_com_golang_protobuf_ptypes_timestamp_timestamp_proto_rawDesc = []byte{\n\t0x0a, 0x3b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x6c,\n\t0x61, 0x6e, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x70, 0x74, 0x79,\n\t0x70, 0x65, 0x73, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2f, 0x74, 0x69,\n\t0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67,\n\t0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74,\n\t0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x42, 0x37,\n\t0x5a, 0x35, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x6c,\n\t0x61, 0x6e, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x70, 0x74, 0x79,\n\t0x70, 0x65, 0x73, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x3b, 0x74, 0x69,\n\t0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x50, 0x00, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,\n\t0x33,\n}\n\nvar file_github_com_golang_protobuf_ptypes_timestamp_timestamp_proto_goTypes = []interface{}{}\nvar file_github_com_golang_protobuf_ptypes_timestamp_timestamp_proto_depIdxs = []int32{\n\t0, // [0:0] is the sub-list for method output_type\n\t0, // [0:0] is the sub-list for method input_type\n\t0, // [0:0] is the sub-list for extension type_name\n\t0, // [0:0] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_github_com_golang_protobuf_ptypes_timestamp_timestamp_proto_init() }\nfunc file_github_com_golang_protobuf_ptypes_timestamp_timestamp_proto_init() {\n\tif File_github_com_golang_protobuf_ptypes_timestamp_timestamp_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_github_com_golang_protobuf_ptypes_timestamp_timestamp_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   0,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_github_com_golang_protobuf_ptypes_timestamp_timestamp_proto_goTypes,\n\t\tDependencyIndexes: file_github_com_golang_protobuf_ptypes_timestamp_timestamp_proto_depIdxs,\n\t}.Build()\n\tFile_github_com_golang_protobuf_ptypes_timestamp_timestamp_proto = out.File\n\tfile_github_com_golang_protobuf_ptypes_timestamp_timestamp_proto_rawDesc = nil\n\tfile_github_com_golang_protobuf_ptypes_timestamp_timestamp_proto_goTypes = nil\n\tfile_github_com_golang_protobuf_ptypes_timestamp_timestamp_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/golang/protobuf/ptypes/timestamp.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage ptypes\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"time\"\n\n\ttimestamppb \"github.com/golang/protobuf/ptypes/timestamp\"\n)\n\n// Range of google.protobuf.Duration as specified in timestamp.proto.\nconst (\n\t// Seconds field of the earliest valid Timestamp.\n\t// This is time.Date(1, 1, 1, 0, 0, 0, 0, time.UTC).Unix().\n\tminValidSeconds = -62135596800\n\t// Seconds field just after the latest valid Timestamp.\n\t// This is time.Date(10000, 1, 1, 0, 0, 0, 0, time.UTC).Unix().\n\tmaxValidSeconds = 253402300800\n)\n\n// Timestamp converts a timestamppb.Timestamp to a time.Time.\n// It returns an error if the argument is invalid.\n//\n// Unlike most Go functions, if Timestamp returns an error, the first return\n// value is not the zero time.Time. Instead, it is the value obtained from the\n// time.Unix function when passed the contents of the Timestamp, in the UTC\n// locale. This may or may not be a meaningful time; many invalid Timestamps\n// do map to valid time.Times.\n//\n// A nil Timestamp returns an error. The first return value in that case is\n// undefined.\n//\n// Deprecated: Call the ts.AsTime and ts.CheckValid methods instead.\nfunc Timestamp(ts *timestamppb.Timestamp) (time.Time, error) {\n\t// Don't return the zero value on error, because corresponds to a valid\n\t// timestamp. Instead return whatever time.Unix gives us.\n\tvar t time.Time\n\tif ts == nil {\n\t\tt = time.Unix(0, 0).UTC() // treat nil like the empty Timestamp\n\t} else {\n\t\tt = time.Unix(ts.Seconds, int64(ts.Nanos)).UTC()\n\t}\n\treturn t, validateTimestamp(ts)\n}\n\n// TimestampNow returns a google.protobuf.Timestamp for the current time.\n//\n// Deprecated: Call the timestamppb.Now function instead.\nfunc TimestampNow() *timestamppb.Timestamp {\n\tts, err := TimestampProto(time.Now())\n\tif err != nil {\n\t\tpanic(\"ptypes: time.Now() out of Timestamp range\")\n\t}\n\treturn ts\n}\n\n// TimestampProto converts the time.Time to a google.protobuf.Timestamp proto.\n// It returns an error if the resulting Timestamp is invalid.\n//\n// Deprecated: Call the timestamppb.New function instead.\nfunc TimestampProto(t time.Time) (*timestamppb.Timestamp, error) {\n\tts := &timestamppb.Timestamp{\n\t\tSeconds: t.Unix(),\n\t\tNanos:   int32(t.Nanosecond()),\n\t}\n\tif err := validateTimestamp(ts); err != nil {\n\t\treturn nil, err\n\t}\n\treturn ts, nil\n}\n\n// TimestampString returns the RFC 3339 string for valid Timestamps.\n// For invalid Timestamps, it returns an error message in parentheses.\n//\n// Deprecated: Call the ts.AsTime method instead,\n// followed by a call to the Format method on the time.Time value.\nfunc TimestampString(ts *timestamppb.Timestamp) string {\n\tt, err := Timestamp(ts)\n\tif err != nil {\n\t\treturn fmt.Sprintf(\"(%v)\", err)\n\t}\n\treturn t.Format(time.RFC3339Nano)\n}\n\n// validateTimestamp determines whether a Timestamp is valid.\n// A valid timestamp represents a time in the range [0001-01-01, 10000-01-01)\n// and has a Nanos field in the range [0, 1e9).\n//\n// If the Timestamp is valid, validateTimestamp returns nil.\n// Otherwise, it returns an error that describes the problem.\n//\n// Every valid Timestamp can be represented by a time.Time,\n// but the converse is not true.\nfunc validateTimestamp(ts *timestamppb.Timestamp) error {\n\tif ts == nil {\n\t\treturn errors.New(\"timestamp: nil Timestamp\")\n\t}\n\tif ts.Seconds < minValidSeconds {\n\t\treturn fmt.Errorf(\"timestamp: %v before 0001-01-01\", ts)\n\t}\n\tif ts.Seconds >= maxValidSeconds {\n\t\treturn fmt.Errorf(\"timestamp: %v after 10000-01-01\", ts)\n\t}\n\tif ts.Nanos < 0 || ts.Nanos >= 1e9 {\n\t\treturn fmt.Errorf(\"timestamp: %v: nanos not in range [0, 1e9)\", ts)\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/google/uuid/CHANGELOG.md",
    "content": "# Changelog\n\n## [1.6.0](https://github.com/google/uuid/compare/v1.5.0...v1.6.0) (2024-01-16)\n\n\n### Features\n\n* add Max UUID constant ([#149](https://github.com/google/uuid/issues/149)) ([c58770e](https://github.com/google/uuid/commit/c58770eb495f55fe2ced6284f93c5158a62e53e3))\n\n\n### Bug Fixes\n\n* fix typo in version 7 uuid documentation ([#153](https://github.com/google/uuid/issues/153)) ([016b199](https://github.com/google/uuid/commit/016b199544692f745ffc8867b914129ecb47ef06))\n* Monotonicity in UUIDv7 ([#150](https://github.com/google/uuid/issues/150)) ([a2b2b32](https://github.com/google/uuid/commit/a2b2b32373ff0b1a312b7fdf6d38a977099698a6))\n\n## [1.5.0](https://github.com/google/uuid/compare/v1.4.0...v1.5.0) (2023-12-12)\n\n\n### Features\n\n* Validate UUID without creating new UUID ([#141](https://github.com/google/uuid/issues/141)) ([9ee7366](https://github.com/google/uuid/commit/9ee7366e66c9ad96bab89139418a713dc584ae29))\n\n## [1.4.0](https://github.com/google/uuid/compare/v1.3.1...v1.4.0) (2023-10-26)\n\n\n### Features\n\n* UUIDs slice type with Strings() convenience method ([#133](https://github.com/google/uuid/issues/133)) ([cd5fbbd](https://github.com/google/uuid/commit/cd5fbbdd02f3e3467ac18940e07e062be1f864b4))\n\n### Fixes\n\n* Clarify that Parse's job is to parse but not necessarily validate strings. (Documents current behavior)\n\n## [1.3.1](https://github.com/google/uuid/compare/v1.3.0...v1.3.1) (2023-08-18)\n\n\n### Bug Fixes\n\n* Use .EqualFold() to parse urn prefixed UUIDs ([#118](https://github.com/google/uuid/issues/118)) ([574e687](https://github.com/google/uuid/commit/574e6874943741fb99d41764c705173ada5293f0))\n\n## Changelog\n"
  },
  {
    "path": "vendor/github.com/google/uuid/CONTRIBUTING.md",
    "content": "# How to contribute\n\nWe definitely welcome patches and contribution to this project!\n\n### Tips\n\nCommits must be formatted according to the [Conventional Commits Specification](https://www.conventionalcommits.org).\n\nAlways try to include a test case! If it is not possible or not necessary,\nplease explain why in the pull request description.\n\n### Releasing\n\nCommits that would precipitate a SemVer change, as described in the Conventional\nCommits Specification, will trigger [`release-please`](https://github.com/google-github-actions/release-please-action)\nto create a release candidate pull request. Once submitted, `release-please`\nwill create a release.\n\nFor tips on how to work with `release-please`, see its documentation.\n\n### Legal requirements\n\nIn order to protect both you and ourselves, you will need to sign the\n[Contributor License Agreement](https://cla.developers.google.com/clas).\n\nYou may have already signed it for other Google projects.\n"
  },
  {
    "path": "vendor/github.com/google/uuid/CONTRIBUTORS",
    "content": "Paul Borman <borman@google.com>\nbmatsuo\nshawnps\ntheory\njboverfelt\ndsymonds\ncd1\nwallclockbuilder\ndansouza\n"
  },
  {
    "path": "vendor/github.com/google/uuid/LICENSE",
    "content": "Copyright (c) 2009,2014 Google Inc. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n   * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n   * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n   * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
  },
  {
    "path": "vendor/github.com/google/uuid/README.md",
    "content": "# uuid\nThe uuid package generates and inspects UUIDs based on\n[RFC 4122](https://datatracker.ietf.org/doc/html/rfc4122)\nand DCE 1.1: Authentication and Security Services. \n\nThis package is based on the github.com/pborman/uuid package (previously named\ncode.google.com/p/go-uuid).  It differs from these earlier packages in that\na UUID is a 16 byte array rather than a byte slice.  One loss due to this\nchange is the ability to represent an invalid UUID (vs a NIL UUID).\n\n###### Install\n```sh\ngo get github.com/google/uuid\n```\n\n###### Documentation \n[![Go Reference](https://pkg.go.dev/badge/github.com/google/uuid.svg)](https://pkg.go.dev/github.com/google/uuid)\n\nFull `go doc` style documentation for the package can be viewed online without\ninstalling this package by using the GoDoc site here: \nhttp://pkg.go.dev/github.com/google/uuid\n"
  },
  {
    "path": "vendor/github.com/google/uuid/dce.go",
    "content": "// Copyright 2016 Google Inc.  All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage uuid\n\nimport (\n\t\"encoding/binary\"\n\t\"fmt\"\n\t\"os\"\n)\n\n// A Domain represents a Version 2 domain\ntype Domain byte\n\n// Domain constants for DCE Security (Version 2) UUIDs.\nconst (\n\tPerson = Domain(0)\n\tGroup  = Domain(1)\n\tOrg    = Domain(2)\n)\n\n// NewDCESecurity returns a DCE Security (Version 2) UUID.\n//\n// The domain should be one of Person, Group or Org.\n// On a POSIX system the id should be the users UID for the Person\n// domain and the users GID for the Group.  The meaning of id for\n// the domain Org or on non-POSIX systems is site defined.\n//\n// For a given domain/id pair the same token may be returned for up to\n// 7 minutes and 10 seconds.\nfunc NewDCESecurity(domain Domain, id uint32) (UUID, error) {\n\tuuid, err := NewUUID()\n\tif err == nil {\n\t\tuuid[6] = (uuid[6] & 0x0f) | 0x20 // Version 2\n\t\tuuid[9] = byte(domain)\n\t\tbinary.BigEndian.PutUint32(uuid[0:], id)\n\t}\n\treturn uuid, err\n}\n\n// NewDCEPerson returns a DCE Security (Version 2) UUID in the person\n// domain with the id returned by os.Getuid.\n//\n//  NewDCESecurity(Person, uint32(os.Getuid()))\nfunc NewDCEPerson() (UUID, error) {\n\treturn NewDCESecurity(Person, uint32(os.Getuid()))\n}\n\n// NewDCEGroup returns a DCE Security (Version 2) UUID in the group\n// domain with the id returned by os.Getgid.\n//\n//  NewDCESecurity(Group, uint32(os.Getgid()))\nfunc NewDCEGroup() (UUID, error) {\n\treturn NewDCESecurity(Group, uint32(os.Getgid()))\n}\n\n// Domain returns the domain for a Version 2 UUID.  Domains are only defined\n// for Version 2 UUIDs.\nfunc (uuid UUID) Domain() Domain {\n\treturn Domain(uuid[9])\n}\n\n// ID returns the id for a Version 2 UUID. IDs are only defined for Version 2\n// UUIDs.\nfunc (uuid UUID) ID() uint32 {\n\treturn binary.BigEndian.Uint32(uuid[0:4])\n}\n\nfunc (d Domain) String() string {\n\tswitch d {\n\tcase Person:\n\t\treturn \"Person\"\n\tcase Group:\n\t\treturn \"Group\"\n\tcase Org:\n\t\treturn \"Org\"\n\t}\n\treturn fmt.Sprintf(\"Domain%d\", int(d))\n}\n"
  },
  {
    "path": "vendor/github.com/google/uuid/doc.go",
    "content": "// Copyright 2016 Google Inc.  All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package uuid generates and inspects UUIDs.\n//\n// UUIDs are based on RFC 4122 and DCE 1.1: Authentication and Security\n// Services.\n//\n// A UUID is a 16 byte (128 bit) array.  UUIDs may be used as keys to\n// maps or compared directly.\npackage uuid\n"
  },
  {
    "path": "vendor/github.com/google/uuid/hash.go",
    "content": "// Copyright 2016 Google Inc.  All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage uuid\n\nimport (\n\t\"crypto/md5\"\n\t\"crypto/sha1\"\n\t\"hash\"\n)\n\n// Well known namespace IDs and UUIDs\nvar (\n\tNameSpaceDNS  = Must(Parse(\"6ba7b810-9dad-11d1-80b4-00c04fd430c8\"))\n\tNameSpaceURL  = Must(Parse(\"6ba7b811-9dad-11d1-80b4-00c04fd430c8\"))\n\tNameSpaceOID  = Must(Parse(\"6ba7b812-9dad-11d1-80b4-00c04fd430c8\"))\n\tNameSpaceX500 = Must(Parse(\"6ba7b814-9dad-11d1-80b4-00c04fd430c8\"))\n\tNil           UUID // empty UUID, all zeros\n\n\t// The Max UUID is special form of UUID that is specified to have all 128 bits set to 1.\n\tMax = UUID{\n\t\t0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\n\t\t0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\n\t}\n)\n\n// NewHash returns a new UUID derived from the hash of space concatenated with\n// data generated by h.  The hash should be at least 16 byte in length.  The\n// first 16 bytes of the hash are used to form the UUID.  The version of the\n// UUID will be the lower 4 bits of version.  NewHash is used to implement\n// NewMD5 and NewSHA1.\nfunc NewHash(h hash.Hash, space UUID, data []byte, version int) UUID {\n\th.Reset()\n\th.Write(space[:]) //nolint:errcheck\n\th.Write(data)     //nolint:errcheck\n\ts := h.Sum(nil)\n\tvar uuid UUID\n\tcopy(uuid[:], s)\n\tuuid[6] = (uuid[6] & 0x0f) | uint8((version&0xf)<<4)\n\tuuid[8] = (uuid[8] & 0x3f) | 0x80 // RFC 4122 variant\n\treturn uuid\n}\n\n// NewMD5 returns a new MD5 (Version 3) UUID based on the\n// supplied name space and data.  It is the same as calling:\n//\n//  NewHash(md5.New(), space, data, 3)\nfunc NewMD5(space UUID, data []byte) UUID {\n\treturn NewHash(md5.New(), space, data, 3)\n}\n\n// NewSHA1 returns a new SHA1 (Version 5) UUID based on the\n// supplied name space and data.  It is the same as calling:\n//\n//  NewHash(sha1.New(), space, data, 5)\nfunc NewSHA1(space UUID, data []byte) UUID {\n\treturn NewHash(sha1.New(), space, data, 5)\n}\n"
  },
  {
    "path": "vendor/github.com/google/uuid/marshal.go",
    "content": "// Copyright 2016 Google Inc.  All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage uuid\n\nimport \"fmt\"\n\n// MarshalText implements encoding.TextMarshaler.\nfunc (uuid UUID) MarshalText() ([]byte, error) {\n\tvar js [36]byte\n\tencodeHex(js[:], uuid)\n\treturn js[:], nil\n}\n\n// UnmarshalText implements encoding.TextUnmarshaler.\nfunc (uuid *UUID) UnmarshalText(data []byte) error {\n\tid, err := ParseBytes(data)\n\tif err != nil {\n\t\treturn err\n\t}\n\t*uuid = id\n\treturn nil\n}\n\n// MarshalBinary implements encoding.BinaryMarshaler.\nfunc (uuid UUID) MarshalBinary() ([]byte, error) {\n\treturn uuid[:], nil\n}\n\n// UnmarshalBinary implements encoding.BinaryUnmarshaler.\nfunc (uuid *UUID) UnmarshalBinary(data []byte) error {\n\tif len(data) != 16 {\n\t\treturn fmt.Errorf(\"invalid UUID (got %d bytes)\", len(data))\n\t}\n\tcopy(uuid[:], data)\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/google/uuid/node.go",
    "content": "// Copyright 2016 Google Inc.  All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage uuid\n\nimport (\n\t\"sync\"\n)\n\nvar (\n\tnodeMu sync.Mutex\n\tifname string  // name of interface being used\n\tnodeID [6]byte // hardware for version 1 UUIDs\n\tzeroID [6]byte // nodeID with only 0's\n)\n\n// NodeInterface returns the name of the interface from which the NodeID was\n// derived.  The interface \"user\" is returned if the NodeID was set by\n// SetNodeID.\nfunc NodeInterface() string {\n\tdefer nodeMu.Unlock()\n\tnodeMu.Lock()\n\treturn ifname\n}\n\n// SetNodeInterface selects the hardware address to be used for Version 1 UUIDs.\n// If name is \"\" then the first usable interface found will be used or a random\n// Node ID will be generated.  If a named interface cannot be found then false\n// is returned.\n//\n// SetNodeInterface never fails when name is \"\".\nfunc SetNodeInterface(name string) bool {\n\tdefer nodeMu.Unlock()\n\tnodeMu.Lock()\n\treturn setNodeInterface(name)\n}\n\nfunc setNodeInterface(name string) bool {\n\tiname, addr := getHardwareInterface(name) // null implementation for js\n\tif iname != \"\" && addr != nil {\n\t\tifname = iname\n\t\tcopy(nodeID[:], addr)\n\t\treturn true\n\t}\n\n\t// We found no interfaces with a valid hardware address.  If name\n\t// does not specify a specific interface generate a random Node ID\n\t// (section 4.1.6)\n\tif name == \"\" {\n\t\tifname = \"random\"\n\t\trandomBits(nodeID[:])\n\t\treturn true\n\t}\n\treturn false\n}\n\n// NodeID returns a slice of a copy of the current Node ID, setting the Node ID\n// if not already set.\nfunc NodeID() []byte {\n\tdefer nodeMu.Unlock()\n\tnodeMu.Lock()\n\tif nodeID == zeroID {\n\t\tsetNodeInterface(\"\")\n\t}\n\tnid := nodeID\n\treturn nid[:]\n}\n\n// SetNodeID sets the Node ID to be used for Version 1 UUIDs.  The first 6 bytes\n// of id are used.  If id is less than 6 bytes then false is returned and the\n// Node ID is not set.\nfunc SetNodeID(id []byte) bool {\n\tif len(id) < 6 {\n\t\treturn false\n\t}\n\tdefer nodeMu.Unlock()\n\tnodeMu.Lock()\n\tcopy(nodeID[:], id)\n\tifname = \"user\"\n\treturn true\n}\n\n// NodeID returns the 6 byte node id encoded in uuid.  It returns nil if uuid is\n// not valid.  The NodeID is only well defined for version 1 and 2 UUIDs.\nfunc (uuid UUID) NodeID() []byte {\n\tvar node [6]byte\n\tcopy(node[:], uuid[10:])\n\treturn node[:]\n}\n"
  },
  {
    "path": "vendor/github.com/google/uuid/node_js.go",
    "content": "// Copyright 2017 Google Inc.  All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build js\n\npackage uuid\n\n// getHardwareInterface returns nil values for the JS version of the code.\n// This removes the \"net\" dependency, because it is not used in the browser.\n// Using the \"net\" library inflates the size of the transpiled JS code by 673k bytes.\nfunc getHardwareInterface(name string) (string, []byte) { return \"\", nil }\n"
  },
  {
    "path": "vendor/github.com/google/uuid/node_net.go",
    "content": "// Copyright 2017 Google Inc.  All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// +build !js\n\npackage uuid\n\nimport \"net\"\n\nvar interfaces []net.Interface // cached list of interfaces\n\n// getHardwareInterface returns the name and hardware address of interface name.\n// If name is \"\" then the name and hardware address of one of the system's\n// interfaces is returned.  If no interfaces are found (name does not exist or\n// there are no interfaces) then \"\", nil is returned.\n//\n// Only addresses of at least 6 bytes are returned.\nfunc getHardwareInterface(name string) (string, []byte) {\n\tif interfaces == nil {\n\t\tvar err error\n\t\tinterfaces, err = net.Interfaces()\n\t\tif err != nil {\n\t\t\treturn \"\", nil\n\t\t}\n\t}\n\tfor _, ifs := range interfaces {\n\t\tif len(ifs.HardwareAddr) >= 6 && (name == \"\" || name == ifs.Name) {\n\t\t\treturn ifs.Name, ifs.HardwareAddr\n\t\t}\n\t}\n\treturn \"\", nil\n}\n"
  },
  {
    "path": "vendor/github.com/google/uuid/null.go",
    "content": "// Copyright 2021 Google Inc.  All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage uuid\n\nimport (\n\t\"bytes\"\n\t\"database/sql/driver\"\n\t\"encoding/json\"\n\t\"fmt\"\n)\n\nvar jsonNull = []byte(\"null\")\n\n// NullUUID represents a UUID that may be null.\n// NullUUID implements the SQL driver.Scanner interface so\n// it can be used as a scan destination:\n//\n//  var u uuid.NullUUID\n//  err := db.QueryRow(\"SELECT name FROM foo WHERE id=?\", id).Scan(&u)\n//  ...\n//  if u.Valid {\n//     // use u.UUID\n//  } else {\n//     // NULL value\n//  }\n//\ntype NullUUID struct {\n\tUUID  UUID\n\tValid bool // Valid is true if UUID is not NULL\n}\n\n// Scan implements the SQL driver.Scanner interface.\nfunc (nu *NullUUID) Scan(value interface{}) error {\n\tif value == nil {\n\t\tnu.UUID, nu.Valid = Nil, false\n\t\treturn nil\n\t}\n\n\terr := nu.UUID.Scan(value)\n\tif err != nil {\n\t\tnu.Valid = false\n\t\treturn err\n\t}\n\n\tnu.Valid = true\n\treturn nil\n}\n\n// Value implements the driver Valuer interface.\nfunc (nu NullUUID) Value() (driver.Value, error) {\n\tif !nu.Valid {\n\t\treturn nil, nil\n\t}\n\t// Delegate to UUID Value function\n\treturn nu.UUID.Value()\n}\n\n// MarshalBinary implements encoding.BinaryMarshaler.\nfunc (nu NullUUID) MarshalBinary() ([]byte, error) {\n\tif nu.Valid {\n\t\treturn nu.UUID[:], nil\n\t}\n\n\treturn []byte(nil), nil\n}\n\n// UnmarshalBinary implements encoding.BinaryUnmarshaler.\nfunc (nu *NullUUID) UnmarshalBinary(data []byte) error {\n\tif len(data) != 16 {\n\t\treturn fmt.Errorf(\"invalid UUID (got %d bytes)\", len(data))\n\t}\n\tcopy(nu.UUID[:], data)\n\tnu.Valid = true\n\treturn nil\n}\n\n// MarshalText implements encoding.TextMarshaler.\nfunc (nu NullUUID) MarshalText() ([]byte, error) {\n\tif nu.Valid {\n\t\treturn nu.UUID.MarshalText()\n\t}\n\n\treturn jsonNull, nil\n}\n\n// UnmarshalText implements encoding.TextUnmarshaler.\nfunc (nu *NullUUID) UnmarshalText(data []byte) error {\n\tid, err := ParseBytes(data)\n\tif err != nil {\n\t\tnu.Valid = false\n\t\treturn err\n\t}\n\tnu.UUID = id\n\tnu.Valid = true\n\treturn nil\n}\n\n// MarshalJSON implements json.Marshaler.\nfunc (nu NullUUID) MarshalJSON() ([]byte, error) {\n\tif nu.Valid {\n\t\treturn json.Marshal(nu.UUID)\n\t}\n\n\treturn jsonNull, nil\n}\n\n// UnmarshalJSON implements json.Unmarshaler.\nfunc (nu *NullUUID) UnmarshalJSON(data []byte) error {\n\tif bytes.Equal(data, jsonNull) {\n\t\t*nu = NullUUID{}\n\t\treturn nil // valid null UUID\n\t}\n\terr := json.Unmarshal(data, &nu.UUID)\n\tnu.Valid = err == nil\n\treturn err\n}\n"
  },
  {
    "path": "vendor/github.com/google/uuid/sql.go",
    "content": "// Copyright 2016 Google Inc.  All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage uuid\n\nimport (\n\t\"database/sql/driver\"\n\t\"fmt\"\n)\n\n// Scan implements sql.Scanner so UUIDs can be read from databases transparently.\n// Currently, database types that map to string and []byte are supported. Please\n// consult database-specific driver documentation for matching types.\nfunc (uuid *UUID) Scan(src interface{}) error {\n\tswitch src := src.(type) {\n\tcase nil:\n\t\treturn nil\n\n\tcase string:\n\t\t// if an empty UUID comes from a table, we return a null UUID\n\t\tif src == \"\" {\n\t\t\treturn nil\n\t\t}\n\n\t\t// see Parse for required string format\n\t\tu, err := Parse(src)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"Scan: %v\", err)\n\t\t}\n\n\t\t*uuid = u\n\n\tcase []byte:\n\t\t// if an empty UUID comes from a table, we return a null UUID\n\t\tif len(src) == 0 {\n\t\t\treturn nil\n\t\t}\n\n\t\t// assumes a simple slice of bytes if 16 bytes\n\t\t// otherwise attempts to parse\n\t\tif len(src) != 16 {\n\t\t\treturn uuid.Scan(string(src))\n\t\t}\n\t\tcopy((*uuid)[:], src)\n\n\tdefault:\n\t\treturn fmt.Errorf(\"Scan: unable to scan type %T into UUID\", src)\n\t}\n\n\treturn nil\n}\n\n// Value implements sql.Valuer so that UUIDs can be written to databases\n// transparently. Currently, UUIDs map to strings. Please consult\n// database-specific driver documentation for matching types.\nfunc (uuid UUID) Value() (driver.Value, error) {\n\treturn uuid.String(), nil\n}\n"
  },
  {
    "path": "vendor/github.com/google/uuid/time.go",
    "content": "// Copyright 2016 Google Inc.  All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage uuid\n\nimport (\n\t\"encoding/binary\"\n\t\"sync\"\n\t\"time\"\n)\n\n// A Time represents a time as the number of 100's of nanoseconds since 15 Oct\n// 1582.\ntype Time int64\n\nconst (\n\tlillian    = 2299160          // Julian day of 15 Oct 1582\n\tunix       = 2440587          // Julian day of 1 Jan 1970\n\tepoch      = unix - lillian   // Days between epochs\n\tg1582      = epoch * 86400    // seconds between epochs\n\tg1582ns100 = g1582 * 10000000 // 100s of a nanoseconds between epochs\n)\n\nvar (\n\ttimeMu   sync.Mutex\n\tlasttime uint64 // last time we returned\n\tclockSeq uint16 // clock sequence for this run\n\n\ttimeNow = time.Now // for testing\n)\n\n// UnixTime converts t the number of seconds and nanoseconds using the Unix\n// epoch of 1 Jan 1970.\nfunc (t Time) UnixTime() (sec, nsec int64) {\n\tsec = int64(t - g1582ns100)\n\tnsec = (sec % 10000000) * 100\n\tsec /= 10000000\n\treturn sec, nsec\n}\n\n// GetTime returns the current Time (100s of nanoseconds since 15 Oct 1582) and\n// clock sequence as well as adjusting the clock sequence as needed.  An error\n// is returned if the current time cannot be determined.\nfunc GetTime() (Time, uint16, error) {\n\tdefer timeMu.Unlock()\n\ttimeMu.Lock()\n\treturn getTime()\n}\n\nfunc getTime() (Time, uint16, error) {\n\tt := timeNow()\n\n\t// If we don't have a clock sequence already, set one.\n\tif clockSeq == 0 {\n\t\tsetClockSequence(-1)\n\t}\n\tnow := uint64(t.UnixNano()/100) + g1582ns100\n\n\t// If time has gone backwards with this clock sequence then we\n\t// increment the clock sequence\n\tif now <= lasttime {\n\t\tclockSeq = ((clockSeq + 1) & 0x3fff) | 0x8000\n\t}\n\tlasttime = now\n\treturn Time(now), clockSeq, nil\n}\n\n// ClockSequence returns the current clock sequence, generating one if not\n// already set.  The clock sequence is only used for Version 1 UUIDs.\n//\n// The uuid package does not use global static storage for the clock sequence or\n// the last time a UUID was generated.  Unless SetClockSequence is used, a new\n// random clock sequence is generated the first time a clock sequence is\n// requested by ClockSequence, GetTime, or NewUUID.  (section 4.2.1.1)\nfunc ClockSequence() int {\n\tdefer timeMu.Unlock()\n\ttimeMu.Lock()\n\treturn clockSequence()\n}\n\nfunc clockSequence() int {\n\tif clockSeq == 0 {\n\t\tsetClockSequence(-1)\n\t}\n\treturn int(clockSeq & 0x3fff)\n}\n\n// SetClockSequence sets the clock sequence to the lower 14 bits of seq.  Setting to\n// -1 causes a new sequence to be generated.\nfunc SetClockSequence(seq int) {\n\tdefer timeMu.Unlock()\n\ttimeMu.Lock()\n\tsetClockSequence(seq)\n}\n\nfunc setClockSequence(seq int) {\n\tif seq == -1 {\n\t\tvar b [2]byte\n\t\trandomBits(b[:]) // clock sequence\n\t\tseq = int(b[0])<<8 | int(b[1])\n\t}\n\toldSeq := clockSeq\n\tclockSeq = uint16(seq&0x3fff) | 0x8000 // Set our variant\n\tif oldSeq != clockSeq {\n\t\tlasttime = 0\n\t}\n}\n\n// Time returns the time in 100s of nanoseconds since 15 Oct 1582 encoded in\n// uuid.  The time is only defined for version 1, 2, 6 and 7 UUIDs.\nfunc (uuid UUID) Time() Time {\n\tvar t Time\n\tswitch uuid.Version() {\n\tcase 6:\n\t\ttime := binary.BigEndian.Uint64(uuid[:8]) // Ignore uuid[6] version b0110\n\t\tt = Time(time)\n\tcase 7:\n\t\ttime := binary.BigEndian.Uint64(uuid[:8])\n\t\tt = Time((time>>16)*10000 + g1582ns100)\n\tdefault: // forward compatible\n\t\ttime := int64(binary.BigEndian.Uint32(uuid[0:4]))\n\t\ttime |= int64(binary.BigEndian.Uint16(uuid[4:6])) << 32\n\t\ttime |= int64(binary.BigEndian.Uint16(uuid[6:8])&0xfff) << 48\n\t\tt = Time(time)\n\t}\n\treturn t\n}\n\n// ClockSequence returns the clock sequence encoded in uuid.\n// The clock sequence is only well defined for version 1 and 2 UUIDs.\nfunc (uuid UUID) ClockSequence() int {\n\treturn int(binary.BigEndian.Uint16(uuid[8:10])) & 0x3fff\n}\n"
  },
  {
    "path": "vendor/github.com/google/uuid/util.go",
    "content": "// Copyright 2016 Google Inc.  All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage uuid\n\nimport (\n\t\"io\"\n)\n\n// randomBits completely fills slice b with random data.\nfunc randomBits(b []byte) {\n\tif _, err := io.ReadFull(rander, b); err != nil {\n\t\tpanic(err.Error()) // rand should never fail\n\t}\n}\n\n// xvalues returns the value of a byte as a hexadecimal digit or 255.\nvar xvalues = [256]byte{\n\t255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,\n\t255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,\n\t255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,\n\t0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 255, 255, 255, 255, 255, 255,\n\t255, 10, 11, 12, 13, 14, 15, 255, 255, 255, 255, 255, 255, 255, 255, 255,\n\t255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,\n\t255, 10, 11, 12, 13, 14, 15, 255, 255, 255, 255, 255, 255, 255, 255, 255,\n\t255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,\n\t255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,\n\t255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,\n\t255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,\n\t255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,\n\t255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,\n\t255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,\n\t255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,\n\t255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,\n}\n\n// xtob converts hex characters x1 and x2 into a byte.\nfunc xtob(x1, x2 byte) (byte, bool) {\n\tb1 := xvalues[x1]\n\tb2 := xvalues[x2]\n\treturn (b1 << 4) | b2, b1 != 255 && b2 != 255\n}\n"
  },
  {
    "path": "vendor/github.com/google/uuid/uuid.go",
    "content": "// Copyright 2018 Google Inc.  All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage uuid\n\nimport (\n\t\"bytes\"\n\t\"crypto/rand\"\n\t\"encoding/hex\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"strings\"\n\t\"sync\"\n)\n\n// A UUID is a 128 bit (16 byte) Universal Unique IDentifier as defined in RFC\n// 4122.\ntype UUID [16]byte\n\n// A Version represents a UUID's version.\ntype Version byte\n\n// A Variant represents a UUID's variant.\ntype Variant byte\n\n// Constants returned by Variant.\nconst (\n\tInvalid   = Variant(iota) // Invalid UUID\n\tRFC4122                   // The variant specified in RFC4122\n\tReserved                  // Reserved, NCS backward compatibility.\n\tMicrosoft                 // Reserved, Microsoft Corporation backward compatibility.\n\tFuture                    // Reserved for future definition.\n)\n\nconst randPoolSize = 16 * 16\n\nvar (\n\trander      = rand.Reader // random function\n\tpoolEnabled = false\n\tpoolMu      sync.Mutex\n\tpoolPos     = randPoolSize     // protected with poolMu\n\tpool        [randPoolSize]byte // protected with poolMu\n)\n\ntype invalidLengthError struct{ len int }\n\nfunc (err invalidLengthError) Error() string {\n\treturn fmt.Sprintf(\"invalid UUID length: %d\", err.len)\n}\n\n// IsInvalidLengthError is matcher function for custom error invalidLengthError\nfunc IsInvalidLengthError(err error) bool {\n\t_, ok := err.(invalidLengthError)\n\treturn ok\n}\n\n// Parse decodes s into a UUID or returns an error if it cannot be parsed.  Both\n// the standard UUID forms defined in RFC 4122\n// (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx and\n// urn:uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) are decoded.  In addition,\n// Parse accepts non-standard strings such as the raw hex encoding\n// xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx and 38 byte \"Microsoft style\" encodings,\n// e.g.  {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}.  Only the middle 36 bytes are\n// examined in the latter case.  Parse should not be used to validate strings as\n// it parses non-standard encodings as indicated above.\nfunc Parse(s string) (UUID, error) {\n\tvar uuid UUID\n\tswitch len(s) {\n\t// xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\n\tcase 36:\n\n\t// urn:uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\n\tcase 36 + 9:\n\t\tif !strings.EqualFold(s[:9], \"urn:uuid:\") {\n\t\t\treturn uuid, fmt.Errorf(\"invalid urn prefix: %q\", s[:9])\n\t\t}\n\t\ts = s[9:]\n\n\t// {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}\n\tcase 36 + 2:\n\t\ts = s[1:]\n\n\t// xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n\tcase 32:\n\t\tvar ok bool\n\t\tfor i := range uuid {\n\t\t\tuuid[i], ok = xtob(s[i*2], s[i*2+1])\n\t\t\tif !ok {\n\t\t\t\treturn uuid, errors.New(\"invalid UUID format\")\n\t\t\t}\n\t\t}\n\t\treturn uuid, nil\n\tdefault:\n\t\treturn uuid, invalidLengthError{len(s)}\n\t}\n\t// s is now at least 36 bytes long\n\t// it must be of the form  xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\n\tif s[8] != '-' || s[13] != '-' || s[18] != '-' || s[23] != '-' {\n\t\treturn uuid, errors.New(\"invalid UUID format\")\n\t}\n\tfor i, x := range [16]int{\n\t\t0, 2, 4, 6,\n\t\t9, 11,\n\t\t14, 16,\n\t\t19, 21,\n\t\t24, 26, 28, 30, 32, 34,\n\t} {\n\t\tv, ok := xtob(s[x], s[x+1])\n\t\tif !ok {\n\t\t\treturn uuid, errors.New(\"invalid UUID format\")\n\t\t}\n\t\tuuid[i] = v\n\t}\n\treturn uuid, nil\n}\n\n// ParseBytes is like Parse, except it parses a byte slice instead of a string.\nfunc ParseBytes(b []byte) (UUID, error) {\n\tvar uuid UUID\n\tswitch len(b) {\n\tcase 36: // xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\n\tcase 36 + 9: // urn:uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\n\t\tif !bytes.EqualFold(b[:9], []byte(\"urn:uuid:\")) {\n\t\t\treturn uuid, fmt.Errorf(\"invalid urn prefix: %q\", b[:9])\n\t\t}\n\t\tb = b[9:]\n\tcase 36 + 2: // {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}\n\t\tb = b[1:]\n\tcase 32: // xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n\t\tvar ok bool\n\t\tfor i := 0; i < 32; i += 2 {\n\t\t\tuuid[i/2], ok = xtob(b[i], b[i+1])\n\t\t\tif !ok {\n\t\t\t\treturn uuid, errors.New(\"invalid UUID format\")\n\t\t\t}\n\t\t}\n\t\treturn uuid, nil\n\tdefault:\n\t\treturn uuid, invalidLengthError{len(b)}\n\t}\n\t// s is now at least 36 bytes long\n\t// it must be of the form  xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\n\tif b[8] != '-' || b[13] != '-' || b[18] != '-' || b[23] != '-' {\n\t\treturn uuid, errors.New(\"invalid UUID format\")\n\t}\n\tfor i, x := range [16]int{\n\t\t0, 2, 4, 6,\n\t\t9, 11,\n\t\t14, 16,\n\t\t19, 21,\n\t\t24, 26, 28, 30, 32, 34,\n\t} {\n\t\tv, ok := xtob(b[x], b[x+1])\n\t\tif !ok {\n\t\t\treturn uuid, errors.New(\"invalid UUID format\")\n\t\t}\n\t\tuuid[i] = v\n\t}\n\treturn uuid, nil\n}\n\n// MustParse is like Parse but panics if the string cannot be parsed.\n// It simplifies safe initialization of global variables holding compiled UUIDs.\nfunc MustParse(s string) UUID {\n\tuuid, err := Parse(s)\n\tif err != nil {\n\t\tpanic(`uuid: Parse(` + s + `): ` + err.Error())\n\t}\n\treturn uuid\n}\n\n// FromBytes creates a new UUID from a byte slice. Returns an error if the slice\n// does not have a length of 16. The bytes are copied from the slice.\nfunc FromBytes(b []byte) (uuid UUID, err error) {\n\terr = uuid.UnmarshalBinary(b)\n\treturn uuid, err\n}\n\n// Must returns uuid if err is nil and panics otherwise.\nfunc Must(uuid UUID, err error) UUID {\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn uuid\n}\n\n// Validate returns an error if s is not a properly formatted UUID in one of the following formats:\n//   xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\n//   urn:uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\n//   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n//   {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}\n// It returns an error if the format is invalid, otherwise nil.\nfunc Validate(s string) error {\n\tswitch len(s) {\n\t// Standard UUID format\n\tcase 36:\n\n\t// UUID with \"urn:uuid:\" prefix\n\tcase 36 + 9:\n\t\tif !strings.EqualFold(s[:9], \"urn:uuid:\") {\n\t\t\treturn fmt.Errorf(\"invalid urn prefix: %q\", s[:9])\n\t\t}\n\t\ts = s[9:]\n\n\t// UUID enclosed in braces\n\tcase 36 + 2:\n\t\tif s[0] != '{' || s[len(s)-1] != '}' {\n\t\t\treturn fmt.Errorf(\"invalid bracketed UUID format\")\n\t\t}\n\t\ts = s[1 : len(s)-1]\n\n\t// UUID without hyphens\n\tcase 32:\n\t\tfor i := 0; i < len(s); i += 2 {\n\t\t\t_, ok := xtob(s[i], s[i+1])\n\t\t\tif !ok {\n\t\t\t\treturn errors.New(\"invalid UUID format\")\n\t\t\t}\n\t\t}\n\n\tdefault:\n\t\treturn invalidLengthError{len(s)}\n\t}\n\n\t// Check for standard UUID format\n\tif len(s) == 36 {\n\t\tif s[8] != '-' || s[13] != '-' || s[18] != '-' || s[23] != '-' {\n\t\t\treturn errors.New(\"invalid UUID format\")\n\t\t}\n\t\tfor _, x := range []int{0, 2, 4, 6, 9, 11, 14, 16, 19, 21, 24, 26, 28, 30, 32, 34} {\n\t\t\tif _, ok := xtob(s[x], s[x+1]); !ok {\n\t\t\t\treturn errors.New(\"invalid UUID format\")\n\t\t\t}\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// String returns the string form of uuid, xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\n// , or \"\" if uuid is invalid.\nfunc (uuid UUID) String() string {\n\tvar buf [36]byte\n\tencodeHex(buf[:], uuid)\n\treturn string(buf[:])\n}\n\n// URN returns the RFC 2141 URN form of uuid,\n// urn:uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx,  or \"\" if uuid is invalid.\nfunc (uuid UUID) URN() string {\n\tvar buf [36 + 9]byte\n\tcopy(buf[:], \"urn:uuid:\")\n\tencodeHex(buf[9:], uuid)\n\treturn string(buf[:])\n}\n\nfunc encodeHex(dst []byte, uuid UUID) {\n\thex.Encode(dst, uuid[:4])\n\tdst[8] = '-'\n\thex.Encode(dst[9:13], uuid[4:6])\n\tdst[13] = '-'\n\thex.Encode(dst[14:18], uuid[6:8])\n\tdst[18] = '-'\n\thex.Encode(dst[19:23], uuid[8:10])\n\tdst[23] = '-'\n\thex.Encode(dst[24:], uuid[10:])\n}\n\n// Variant returns the variant encoded in uuid.\nfunc (uuid UUID) Variant() Variant {\n\tswitch {\n\tcase (uuid[8] & 0xc0) == 0x80:\n\t\treturn RFC4122\n\tcase (uuid[8] & 0xe0) == 0xc0:\n\t\treturn Microsoft\n\tcase (uuid[8] & 0xe0) == 0xe0:\n\t\treturn Future\n\tdefault:\n\t\treturn Reserved\n\t}\n}\n\n// Version returns the version of uuid.\nfunc (uuid UUID) Version() Version {\n\treturn Version(uuid[6] >> 4)\n}\n\nfunc (v Version) String() string {\n\tif v > 15 {\n\t\treturn fmt.Sprintf(\"BAD_VERSION_%d\", v)\n\t}\n\treturn fmt.Sprintf(\"VERSION_%d\", v)\n}\n\nfunc (v Variant) String() string {\n\tswitch v {\n\tcase RFC4122:\n\t\treturn \"RFC4122\"\n\tcase Reserved:\n\t\treturn \"Reserved\"\n\tcase Microsoft:\n\t\treturn \"Microsoft\"\n\tcase Future:\n\t\treturn \"Future\"\n\tcase Invalid:\n\t\treturn \"Invalid\"\n\t}\n\treturn fmt.Sprintf(\"BadVariant%d\", int(v))\n}\n\n// SetRand sets the random number generator to r, which implements io.Reader.\n// If r.Read returns an error when the package requests random data then\n// a panic will be issued.\n//\n// Calling SetRand with nil sets the random number generator to the default\n// generator.\nfunc SetRand(r io.Reader) {\n\tif r == nil {\n\t\trander = rand.Reader\n\t\treturn\n\t}\n\trander = r\n}\n\n// EnableRandPool enables internal randomness pool used for Random\n// (Version 4) UUID generation. The pool contains random bytes read from\n// the random number generator on demand in batches. Enabling the pool\n// may improve the UUID generation throughput significantly.\n//\n// Since the pool is stored on the Go heap, this feature may be a bad fit\n// for security sensitive applications.\n//\n// Both EnableRandPool and DisableRandPool are not thread-safe and should\n// only be called when there is no possibility that New or any other\n// UUID Version 4 generation function will be called concurrently.\nfunc EnableRandPool() {\n\tpoolEnabled = true\n}\n\n// DisableRandPool disables the randomness pool if it was previously\n// enabled with EnableRandPool.\n//\n// Both EnableRandPool and DisableRandPool are not thread-safe and should\n// only be called when there is no possibility that New or any other\n// UUID Version 4 generation function will be called concurrently.\nfunc DisableRandPool() {\n\tpoolEnabled = false\n\tdefer poolMu.Unlock()\n\tpoolMu.Lock()\n\tpoolPos = randPoolSize\n}\n\n// UUIDs is a slice of UUID types.\ntype UUIDs []UUID\n\n// Strings returns a string slice containing the string form of each UUID in uuids.\nfunc (uuids UUIDs) Strings() []string {\n\tvar uuidStrs = make([]string, len(uuids))\n\tfor i, uuid := range uuids {\n\t\tuuidStrs[i] = uuid.String()\n\t}\n\treturn uuidStrs\n}\n"
  },
  {
    "path": "vendor/github.com/google/uuid/version1.go",
    "content": "// Copyright 2016 Google Inc.  All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage uuid\n\nimport (\n\t\"encoding/binary\"\n)\n\n// NewUUID returns a Version 1 UUID based on the current NodeID and clock\n// sequence, and the current time.  If the NodeID has not been set by SetNodeID\n// or SetNodeInterface then it will be set automatically.  If the NodeID cannot\n// be set NewUUID returns nil.  If clock sequence has not been set by\n// SetClockSequence then it will be set automatically.  If GetTime fails to\n// return the current NewUUID returns nil and an error.\n//\n// In most cases, New should be used.\nfunc NewUUID() (UUID, error) {\n\tvar uuid UUID\n\tnow, seq, err := GetTime()\n\tif err != nil {\n\t\treturn uuid, err\n\t}\n\n\ttimeLow := uint32(now & 0xffffffff)\n\ttimeMid := uint16((now >> 32) & 0xffff)\n\ttimeHi := uint16((now >> 48) & 0x0fff)\n\ttimeHi |= 0x1000 // Version 1\n\n\tbinary.BigEndian.PutUint32(uuid[0:], timeLow)\n\tbinary.BigEndian.PutUint16(uuid[4:], timeMid)\n\tbinary.BigEndian.PutUint16(uuid[6:], timeHi)\n\tbinary.BigEndian.PutUint16(uuid[8:], seq)\n\n\tnodeMu.Lock()\n\tif nodeID == zeroID {\n\t\tsetNodeInterface(\"\")\n\t}\n\tcopy(uuid[10:], nodeID[:])\n\tnodeMu.Unlock()\n\n\treturn uuid, nil\n}\n"
  },
  {
    "path": "vendor/github.com/google/uuid/version4.go",
    "content": "// Copyright 2016 Google Inc.  All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage uuid\n\nimport \"io\"\n\n// New creates a new random UUID or panics.  New is equivalent to\n// the expression\n//\n//    uuid.Must(uuid.NewRandom())\nfunc New() UUID {\n\treturn Must(NewRandom())\n}\n\n// NewString creates a new random UUID and returns it as a string or panics.\n// NewString is equivalent to the expression\n//\n//    uuid.New().String()\nfunc NewString() string {\n\treturn Must(NewRandom()).String()\n}\n\n// NewRandom returns a Random (Version 4) UUID.\n//\n// The strength of the UUIDs is based on the strength of the crypto/rand\n// package.\n//\n// Uses the randomness pool if it was enabled with EnableRandPool.\n//\n// A note about uniqueness derived from the UUID Wikipedia entry:\n//\n//  Randomly generated UUIDs have 122 random bits.  One's annual risk of being\n//  hit by a meteorite is estimated to be one chance in 17 billion, that\n//  means the probability is about 0.00000000006 (6 × 10−11),\n//  equivalent to the odds of creating a few tens of trillions of UUIDs in a\n//  year and having one duplicate.\nfunc NewRandom() (UUID, error) {\n\tif !poolEnabled {\n\t\treturn NewRandomFromReader(rander)\n\t}\n\treturn newRandomFromPool()\n}\n\n// NewRandomFromReader returns a UUID based on bytes read from a given io.Reader.\nfunc NewRandomFromReader(r io.Reader) (UUID, error) {\n\tvar uuid UUID\n\t_, err := io.ReadFull(r, uuid[:])\n\tif err != nil {\n\t\treturn Nil, err\n\t}\n\tuuid[6] = (uuid[6] & 0x0f) | 0x40 // Version 4\n\tuuid[8] = (uuid[8] & 0x3f) | 0x80 // Variant is 10\n\treturn uuid, nil\n}\n\nfunc newRandomFromPool() (UUID, error) {\n\tvar uuid UUID\n\tpoolMu.Lock()\n\tif poolPos == randPoolSize {\n\t\t_, err := io.ReadFull(rander, pool[:])\n\t\tif err != nil {\n\t\t\tpoolMu.Unlock()\n\t\t\treturn Nil, err\n\t\t}\n\t\tpoolPos = 0\n\t}\n\tcopy(uuid[:], pool[poolPos:(poolPos+16)])\n\tpoolPos += 16\n\tpoolMu.Unlock()\n\n\tuuid[6] = (uuid[6] & 0x0f) | 0x40 // Version 4\n\tuuid[8] = (uuid[8] & 0x3f) | 0x80 // Variant is 10\n\treturn uuid, nil\n}\n"
  },
  {
    "path": "vendor/github.com/google/uuid/version6.go",
    "content": "// Copyright 2023 Google Inc.  All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage uuid\n\nimport \"encoding/binary\"\n\n// UUID version 6 is a field-compatible version of UUIDv1, reordered for improved DB locality.\n// It is expected that UUIDv6 will primarily be used in contexts where there are existing v1 UUIDs.\n// Systems that do not involve legacy UUIDv1 SHOULD consider using UUIDv7 instead.\n//\n// see https://datatracker.ietf.org/doc/html/draft-peabody-dispatch-new-uuid-format-03#uuidv6\n//\n// NewV6 returns a Version 6 UUID based on the current NodeID and clock\n// sequence, and the current time. If the NodeID has not been set by SetNodeID\n// or SetNodeInterface then it will be set automatically. If the NodeID cannot\n// be set NewV6 set NodeID is random bits automatically . If clock sequence has not been set by\n// SetClockSequence then it will be set automatically. If GetTime fails to\n// return the current NewV6 returns Nil and an error.\nfunc NewV6() (UUID, error) {\n\tvar uuid UUID\n\tnow, seq, err := GetTime()\n\tif err != nil {\n\t\treturn uuid, err\n\t}\n\n\t/*\n\t    0                   1                   2                   3\n\t    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1\n\t   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n\t   |                           time_high                           |\n\t   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n\t   |           time_mid            |      time_low_and_version     |\n\t   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n\t   |clk_seq_hi_res |  clk_seq_low  |         node (0-1)            |\n\t   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n\t   |                         node (2-5)                            |\n\t   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n\t*/\n\n\tbinary.BigEndian.PutUint64(uuid[0:], uint64(now))\n\tbinary.BigEndian.PutUint16(uuid[8:], seq)\n\n\tuuid[6] = 0x60 | (uuid[6] & 0x0F)\n\tuuid[8] = 0x80 | (uuid[8] & 0x3F)\n\n\tnodeMu.Lock()\n\tif nodeID == zeroID {\n\t\tsetNodeInterface(\"\")\n\t}\n\tcopy(uuid[10:], nodeID[:])\n\tnodeMu.Unlock()\n\n\treturn uuid, nil\n}\n"
  },
  {
    "path": "vendor/github.com/google/uuid/version7.go",
    "content": "// Copyright 2023 Google Inc.  All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage uuid\n\nimport (\n\t\"io\"\n)\n\n// UUID version 7 features a time-ordered value field derived from the widely\n// implemented and well known Unix Epoch timestamp source,\n// the number of milliseconds seconds since midnight 1 Jan 1970 UTC, leap seconds excluded.\n// As well as improved entropy characteristics over versions 1 or 6.\n//\n// see https://datatracker.ietf.org/doc/html/draft-peabody-dispatch-new-uuid-format-03#name-uuid-version-7\n//\n// Implementations SHOULD utilize UUID version 7 over UUID version 1 and 6 if possible.\n//\n// NewV7 returns a Version 7 UUID based on the current time(Unix Epoch).\n// Uses the randomness pool if it was enabled with EnableRandPool.\n// On error, NewV7 returns Nil and an error\nfunc NewV7() (UUID, error) {\n\tuuid, err := NewRandom()\n\tif err != nil {\n\t\treturn uuid, err\n\t}\n\tmakeV7(uuid[:])\n\treturn uuid, nil\n}\n\n// NewV7FromReader returns a Version 7 UUID based on the current time(Unix Epoch).\n// it use NewRandomFromReader fill random bits.\n// On error, NewV7FromReader returns Nil and an error.\nfunc NewV7FromReader(r io.Reader) (UUID, error) {\n\tuuid, err := NewRandomFromReader(r)\n\tif err != nil {\n\t\treturn uuid, err\n\t}\n\n\tmakeV7(uuid[:])\n\treturn uuid, nil\n}\n\n// makeV7 fill 48 bits time (uuid[0] - uuid[5]), set version b0111 (uuid[6])\n// uuid[8] already has the right version number (Variant is 10)\n// see function NewV7 and NewV7FromReader\nfunc makeV7(uuid []byte) {\n\t/*\n\t\t 0                   1                   2                   3\n\t\t 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1\n\t\t+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n\t\t|                           unix_ts_ms                          |\n\t\t+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n\t\t|          unix_ts_ms           |  ver  |  rand_a (12 bit seq)  |\n\t\t+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n\t\t|var|                        rand_b                             |\n\t\t+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n\t\t|                            rand_b                             |\n\t\t+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n\t*/\n\t_ = uuid[15] // bounds check\n\n\tt, s := getV7Time()\n\n\tuuid[0] = byte(t >> 40)\n\tuuid[1] = byte(t >> 32)\n\tuuid[2] = byte(t >> 24)\n\tuuid[3] = byte(t >> 16)\n\tuuid[4] = byte(t >> 8)\n\tuuid[5] = byte(t)\n\n\tuuid[6] = 0x70 | (0x0F & byte(s>>8))\n\tuuid[7] = byte(s)\n}\n\n// lastV7time is the last time we returned stored as:\n//\n//\t52 bits of time in milliseconds since epoch\n//\t12 bits of (fractional nanoseconds) >> 8\nvar lastV7time int64\n\nconst nanoPerMilli = 1000000\n\n// getV7Time returns the time in milliseconds and nanoseconds / 256.\n// The returned (milli << 12 + seq) is guarenteed to be greater than\n// (milli << 12 + seq) returned by any previous call to getV7Time.\nfunc getV7Time() (milli, seq int64) {\n\ttimeMu.Lock()\n\tdefer timeMu.Unlock()\n\n\tnano := timeNow().UnixNano()\n\tmilli = nano / nanoPerMilli\n\t// Sequence number is between 0 and 3906 (nanoPerMilli>>8)\n\tseq = (nano - milli*nanoPerMilli) >> 8\n\tnow := milli<<12 + seq\n\tif now <= lastV7time {\n\t\tnow = lastV7time + 1\n\t\tmilli = now >> 12\n\t\tseq = now & 0xfff\n\t}\n\tlastV7time = now\n\treturn milli, seq\n}\n"
  },
  {
    "path": "vendor/github.com/knqyf263/go-plugin/LICENSE",
    "content": "MIT License\n\nCopyright (c) 2022 Teppei Fukuda\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 all\ncopies 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 THE\nSOFTWARE.\n"
  },
  {
    "path": "vendor/github.com/knqyf263/go-plugin/wasm/host.go",
    "content": "//go:build !wasip1\n\n// This file is designed to be imported by hosts.\n\npackage wasm\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\n\t\"github.com/tetratelabs/wazero/api\"\n)\n\nfunc ReadMemory(mem api.Memory, offset, size uint32) ([]byte, error) {\n\tbuf, ok := mem.Read(offset, size)\n\tif !ok {\n\t\treturn nil, fmt.Errorf(\"Memory.Read(%d, %d) out of range\", offset, size)\n\t}\n\treturn buf, nil\n}\n\nfunc WriteMemory(ctx context.Context, m api.Module, data []byte) (uint64, error) {\n\tmalloc := m.ExportedFunction(\"malloc\")\n\tif malloc == nil {\n\t\treturn 0, errors.New(\"malloc is not exported\")\n\t}\n\n\tl := uint64(len(data))\n\tif l == 0 {\n\t\treturn 0, nil\n\t}\n\n\tresults, err := malloc.Call(ctx, l)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tdataPtr := results[0]\n\n\t// The pointer is a linear memory offset, which is where we write the name.\n\tif !m.Memory().Write(uint32(dataPtr), data) {\n\t\treturn 0, fmt.Errorf(\"Memory.Write(%d, %d) out of range of memory size %d\",\n\t\t\tdataPtr, len(data), m.Memory().Size())\n\t}\n\n\treturn dataPtr, nil\n}\n"
  },
  {
    "path": "vendor/github.com/knqyf263/go-plugin/wasm/plugin.go",
    "content": "//go:build wasip1 && !tinygo.wasm\n\n// This file is designed to be imported by plugins.\n\npackage wasm\n\nimport (\n\t\"unsafe\"\n)\n\n// allocations keeps track of each allocated byte slice, keyed by a fake pointer.\n// This map ensures the GC will not collect these slices while still in use.\nvar allocations = make(map[uint32][]byte)\n\n// allocate creates a new byte slice of the given size and stores it in the\n// allocations map so that it remains valid (not garbage-collected).\nfunc allocate(size uint32) uint32 {\n\tif size == 0 {\n\t\treturn 0\n\t}\n\t// Create a new byte slice on the Go heap\n\tb := make([]byte, size)\n\n\t// Obtain the 'address' of the first element in b by converting its pointer to a uint32.\n\tptr := uint32(uintptr(unsafe.Pointer(&b[0])))\n\n\t// Store the byte slice in the map, keyed by the pointer\n\tallocations[ptr] = b\n\treturn ptr\n}\n\n//go:wasmexport malloc\nfunc Malloc(size uint32) uint32 {\n\treturn allocate(size)\n}\n\n//go:wasmexport free\nfunc Free(ptr uint32) {\n\t// Remove the slice from the allocations map so the GC can reclaim it later.\n\tdelete(allocations, ptr)\n}\n\nfunc PtrToByte(ptr, size uint32) []byte {\n\treturn unsafe.Slice((*byte)(unsafe.Pointer(uintptr(ptr))), size)\n}\n\nfunc ByteToPtr(buf []byte) (uint32, uint32) {\n\tif len(buf) == 0 {\n\t\treturn 0, 0\n\t}\n\tptr := &buf[0]\n\tunsafePtr := uintptr(unsafe.Pointer(ptr))\n\treturn uint32(unsafePtr), uint32(len(buf))\n}\n"
  },
  {
    "path": "vendor/github.com/knqyf263/go-plugin/wasm/plugin_tinygo.go",
    "content": "//go:build tinygo.wasm\n\n// This file is designed to be imported by plugins.\n\npackage wasm\n\n// #include <stdlib.h>\nimport \"C\"\n\nimport (\n\t\"unsafe\"\n)\n\nfunc PtrToByte(ptr, size uint32) []byte {\n\tb := unsafe.Slice((*byte)(unsafe.Pointer(uintptr(ptr))), size)\n\n\treturn b\n}\n\nfunc ByteToPtr(buf []byte) (uint32, uint32) {\n\tif len(buf) == 0 {\n\t\treturn 0, 0\n\t}\n\n\tsize := C.ulong(len(buf))\n\tptr := unsafe.Pointer(C.malloc(size))\n\n\tcopy(unsafe.Slice((*byte)(ptr), size), buf)\n\n\treturn uint32(uintptr(ptr)), uint32(len(buf))\n}\n\nfunc Free(ptr uint32) {\n\tC.free(unsafe.Pointer(uintptr(ptr)))\n}\n"
  },
  {
    "path": "vendor/github.com/moby/sys/capability/CHANGELOG.md",
    "content": "# Changelog\nThis file documents all notable changes made to this project since the initial fork\nfrom https://github.com/syndtr/gocapability/commit/42c35b4376354fd5.\n\nThe format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),\nand this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).\n\n## [0.4.0] - 2024-11-11\n\n### Added\n* New separate API for ambient ([GetAmbient], [SetAmbient], [ResetAmbient])\n  and bound ([GetBound], [DropBound]) capabilities, modelled after libcap. (#176)\n\n### Fixed\n* [Apply] now returns an error if called for non-zero `pid`. Before this change,\n  it could silently change some capabilities of the current process, instead of\n  the one identified by the `pid`. (#168, #174)\n* Fixed tests that change capabilities to be run in a separate process. (#173)\n* Other improvements in tests. (#169, #170)\n\n### Changed\n* Use raw syscalls (which are slightly faster). (#176)\n* Most tests are now limited to testing the public API of the package. (#162)\n* Simplify parsing /proc/*pid*/status, add a test case. (#162)\n* Optimize the number of syscall to set ambient capabilities in Apply\n  by clearing them first; add a test case. (#163, #164)\n* Better documentation for [Apply], [NewFile], [NewFile2], [NewPid], [NewPid2]. (#175)\n\n### Removed\n* `.golangci.yml` and `.codespellrc` are no longer part of the package. (#158)\n\n## [0.3.0] - 2024-09-25\n\n### Added\n* Added [ListKnown] and [ListSupported] functions. (#153)\n* [LastCap] is now available on non-Linux platforms (where it returns an error). (#152)\n\n### Changed\n* [List] is now deprecated in favor of [ListKnown] and [ListSupported]. (#153)\n\n### Fixed\n* Various documentation improvements. (#151)\n* Fix \"generated code\" comment. (#153)\n\n## [0.2.0] - 2024-09-16\n\nThis is the first release after the move to a new home in\ngithub.com/moby/sys/capability.\n\n### Fixed\n * Fixed URLs in documentation to reflect the new home.\n\n## [0.1.1] - 2024-08-01\n\nThis is a maintenance release, fixing a few minor issues.\n\n### Fixed\n * Fixed future kernel compatibility, for real this time. [#11]\n * Fixed [LastCap] to be a function. [#12]\n\n## [0.1.0] - 2024-07-31\n\nThis is an initial release since the fork.\n\n### Breaking changes\n\n * The `CAP_LAST_CAP` variable is removed; users need to modify the code to\n   use [LastCap] to get the value. [#6]\n * The code now requires Go >= 1.21.\n\n### Added\n * `go.mod` and `go.sum` files. [#2]\n * New [LastCap] function. [#6]\n * Basic CI using GHA infra. [#8], [#9]\n * README and CHANGELOG. [#10]\n\n### Fixed\n * Fixed ambient capabilities error handling in [Apply]. [#3]\n * Fixed future kernel compatibility. [#1]\n * Fixed various linter warnings. [#4], [#7]\n\n### Changed\n * Go build tags changed from old-style (`+build`) to new Go 1.17+ style (`go:build`). [#2]\n\n### Removed\n * Removed support for capabilities v1 and v2. [#1]\n * Removed init function so programs that use this package start faster. [#6]\n * Removed `CAP_LAST_CAP` (use [LastCap] instead). [#6]\n\n<!-- Doc links (please keep sorted). -->\n[Apply]: https://pkg.go.dev/github.com/moby/sys/capability#Capabilities.Apply\n[DropBound]: https://pkg.go.dev/github.com/moby/sys/capability#DropBound\n[GetAmbient]: https://pkg.go.dev/github.com/moby/sys/capability#GetAmbient\n[GetBound]: https://pkg.go.dev/github.com/moby/sys/capability#GetBound\n[LastCap]: https://pkg.go.dev/github.com/moby/sys/capability#LastCap\n[ListKnown]: https://pkg.go.dev/github.com/moby/sys/capability#ListKnown\n[ListSupported]: https://pkg.go.dev/github.com/moby/sys/capability#ListSupported\n[List]: https://pkg.go.dev/github.com/moby/sys/capability#List\n[NewFile2]: https://pkg.go.dev/github.com/moby/sys/capability#NewFile2\n[NewFile]: https://pkg.go.dev/github.com/moby/sys/capability#NewFile\n[NewPid2]: https://pkg.go.dev/github.com/moby/sys/capability#NewPid2\n[NewPid]: https://pkg.go.dev/github.com/moby/sys/capability#NewPid\n[ResetAmbient]: https://pkg.go.dev/github.com/moby/sys/capability#ResetAmbient\n[SetAmbient]: https://pkg.go.dev/github.com/moby/sys/capability#SetAmbient\n\n<!-- Minor releases. -->\n[0.4.0]: https://github.com/moby/sys/releases/tag/capability%2Fv0.4.0\n[0.3.0]: https://github.com/moby/sys/releases/tag/capability%2Fv0.3.0\n[0.2.0]: https://github.com/moby/sys/releases/tag/capability%2Fv0.2.0\n[0.1.1]: https://github.com/kolyshkin/capability/compare/v0.1.0...v0.1.1\n[0.1.0]: https://github.com/kolyshkin/capability/compare/42c35b4376354fd5...v0.1.0\n\n<!-- PRs in 0.1.x releases. -->\n[#1]: https://github.com/kolyshkin/capability/pull/1\n[#2]: https://github.com/kolyshkin/capability/pull/2\n[#3]: https://github.com/kolyshkin/capability/pull/3\n[#4]: https://github.com/kolyshkin/capability/pull/4\n[#6]: https://github.com/kolyshkin/capability/pull/6\n[#7]: https://github.com/kolyshkin/capability/pull/7\n[#8]: https://github.com/kolyshkin/capability/pull/8\n[#9]: https://github.com/kolyshkin/capability/pull/9\n[#10]: https://github.com/kolyshkin/capability/pull/10\n[#11]: https://github.com/kolyshkin/capability/pull/11\n[#12]: https://github.com/kolyshkin/capability/pull/12\n"
  },
  {
    "path": "vendor/github.com/moby/sys/capability/LICENSE",
    "content": "Copyright 2023 The Capability Authors.\nCopyright 2013 Suryandaru Triandana <syndtr@gmail.com>\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n    * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n    * Redistributions in binary form must reproduce the above copyright\nnotice, this list of conditions and the following disclaimer in the\ndocumentation and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nHOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
  },
  {
    "path": "vendor/github.com/moby/sys/capability/README.md",
    "content": "This is a fork of (apparently no longer maintained)\nhttps://github.com/syndtr/gocapability package. It provides basic primitives to\nwork with [Linux capabilities][capabilities(7)].\n\nFor changes, see [CHANGELOG.md](./CHANGELOG.md).\n\n[![Go Reference](https://pkg.go.dev/badge/github.com/moby/sys/capability/capability.svg)](https://pkg.go.dev/github.com/moby/sys/capability)\n\n## Alternatives\n\n * https://pkg.go.dev/kernel.org/pub/linux/libs/security/libcap/cap\n\n[capabilities(7)]: https://man7.org/linux/man-pages/man7/capabilities.7.html\n"
  },
  {
    "path": "vendor/github.com/moby/sys/capability/capability.go",
    "content": "// Copyright 2023 The Capability Authors.\n// Copyright 2013 Suryandaru Triandana <syndtr@gmail.com>\n// All rights reserved.\n//\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package capability provides utilities for manipulating POSIX capabilities.\npackage capability\n\ntype Capabilities interface {\n\t// Get check whether a capability present in the given\n\t// capabilities set. The 'which' value should be one of EFFECTIVE,\n\t// PERMITTED, INHERITABLE, BOUNDING or AMBIENT.\n\tGet(which CapType, what Cap) bool\n\n\t// Empty check whether all capability bits of the given capabilities\n\t// set are zero. The 'which' value should be one of EFFECTIVE,\n\t// PERMITTED, INHERITABLE, BOUNDING or AMBIENT.\n\tEmpty(which CapType) bool\n\n\t// Full check whether all capability bits of the given capabilities\n\t// set are one. The 'which' value should be one of EFFECTIVE,\n\t// PERMITTED, INHERITABLE, BOUNDING or AMBIENT.\n\tFull(which CapType) bool\n\n\t// Set sets capabilities of the given capabilities sets. The\n\t// 'which' value should be one or combination (OR'ed) of EFFECTIVE,\n\t// PERMITTED, INHERITABLE, BOUNDING or AMBIENT.\n\tSet(which CapType, caps ...Cap)\n\n\t// Unset unsets capabilities of the given capabilities sets. The\n\t// 'which' value should be one or combination (OR'ed) of EFFECTIVE,\n\t// PERMITTED, INHERITABLE, BOUNDING or AMBIENT.\n\tUnset(which CapType, caps ...Cap)\n\n\t// Fill sets all bits of the given capabilities kind to one. The\n\t// 'kind' value should be one or combination (OR'ed) of CAPS,\n\t// BOUNDS or AMBS.\n\tFill(kind CapType)\n\n\t// Clear sets all bits of the given capabilities kind to zero. The\n\t// 'kind' value should be one or combination (OR'ed) of CAPS,\n\t// BOUNDS or AMBS.\n\tClear(kind CapType)\n\n\t// String return current capabilities state of the given capabilities\n\t// set as string. The 'which' value should be one of EFFECTIVE,\n\t// PERMITTED, INHERITABLE BOUNDING or AMBIENT\n\tStringCap(which CapType) string\n\n\t// String return current capabilities state as string.\n\tString() string\n\n\t// Load load actual capabilities value. This will overwrite all\n\t// outstanding changes.\n\tLoad() error\n\n\t// Apply apply the capabilities settings, so all changes made by\n\t// [Set], [Unset], [Fill], or [Clear] will take effect.\n\tApply(kind CapType) error\n}\n\n// NewPid initializes a new [Capabilities] object for given pid when\n// it is nonzero, or for the current process if pid is 0.\n//\n// Deprecated: replace with [NewPid2] followed by optional [Capabilities.Load]\n// (only if needed). For example, replace:\n//\n//\tc, err := NewPid(0)\n//\tif err != nil {\n//\t\treturn err\n//\t}\n//\n// with:\n//\n//\tc, err := NewPid2(0)\n//\tif err != nil {\n//\t\treturn err\n//\t}\n//\terr = c.Load()\n//\tif err != nil {\n//\t\treturn err\n//\t}\nfunc NewPid(pid int) (Capabilities, error) {\n\tc, err := newPid(pid)\n\tif err != nil {\n\t\treturn c, err\n\t}\n\terr = c.Load()\n\treturn c, err\n}\n\n// NewPid2 initializes a new [Capabilities] object for given pid when\n// it is nonzero, or for the current process if pid is 0. This\n// does not load the process's current capabilities; if needed,\n// call [Capabilities.Load].\nfunc NewPid2(pid int) (Capabilities, error) {\n\treturn newPid(pid)\n}\n\n// NewFile initializes a new Capabilities object for given file path.\n//\n// Deprecated: replace with [NewFile2] followed by optional [Capabilities.Load]\n// (only if needed). For example, replace:\n//\n//\tc, err := NewFile(path)\n//\tif err != nil {\n//\t\treturn err\n//\t}\n//\n// with:\n//\n//\tc, err := NewFile2(path)\n//\tif err != nil {\n//\t\treturn err\n//\t}\n//\terr = c.Load()\n//\tif err != nil {\n//\t\treturn err\n//\t}\nfunc NewFile(path string) (Capabilities, error) {\n\tc, err := newFile(path)\n\tif err != nil {\n\t\treturn c, err\n\t}\n\terr = c.Load()\n\treturn c, err\n}\n\n// NewFile2 creates a new initialized [Capabilities] object for given\n// file path. This does not load the process's current capabilities;\n// if needed, call [Capabilities.Load].\nfunc NewFile2(path string) (Capabilities, error) {\n\treturn newFile(path)\n}\n\n// LastCap returns highest valid capability of the running kernel,\n// or an error if it can not be obtained.\n//\n// See also: [ListSupported].\nfunc LastCap() (Cap, error) {\n\treturn lastCap()\n}\n\n// GetAmbient determines if a specific ambient capability is raised in the\n// calling thread.\nfunc GetAmbient(c Cap) (bool, error) {\n\treturn getAmbient(c)\n}\n\n// SetAmbient raises or lowers specified ambient capabilities for the calling\n// thread. To complete successfully, the prevailing effective capability set\n// must have a raised CAP_SETPCAP. Further, to raise a specific ambient\n// capability the inheritable and permitted sets of the calling thread must\n// already contain the specified capability.\nfunc SetAmbient(raise bool, caps ...Cap) error {\n\treturn setAmbient(raise, caps...)\n}\n\n// ResetAmbient resets all of the ambient capabilities for the calling thread\n// to their lowered value.\nfunc ResetAmbient() error {\n\treturn resetAmbient()\n}\n\n// GetBound determines if a specific bounding capability is raised in the\n// calling thread.\nfunc GetBound(c Cap) (bool, error) {\n\treturn getBound(c)\n}\n\n// DropBound lowers the specified bounding set capability.\nfunc DropBound(caps ...Cap) error {\n\treturn dropBound(caps...)\n}\n"
  },
  {
    "path": "vendor/github.com/moby/sys/capability/capability_linux.go",
    "content": "// Copyright 2023 The Capability Authors.\n// Copyright 2013 Suryandaru Triandana <syndtr@gmail.com>\n// All rights reserved.\n//\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage capability\n\nimport (\n\t\"bufio\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\t\"syscall\"\n)\n\nconst (\n\tlinuxCapVer1 = 0x19980330 // No longer supported.\n\tlinuxCapVer2 = 0x20071026 // No longer supported.\n\tlinuxCapVer3 = 0x20080522\n)\n\nvar lastCap = sync.OnceValues(func() (Cap, error) {\n\tf, err := os.Open(\"/proc/sys/kernel/cap_last_cap\")\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\tbuf := make([]byte, 11)\n\tl, err := f.Read(buf)\n\tf.Close()\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tbuf = buf[:l]\n\n\tlast, err := strconv.Atoi(strings.TrimSpace(string(buf)))\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\treturn Cap(last), nil\n})\n\nfunc capUpperMask() uint32 {\n\tlast, err := lastCap()\n\tif err != nil || last < 32 {\n\t\treturn 0\n\t}\n\treturn (uint32(1) << (uint(last) - 31)) - 1\n}\n\nfunc mkStringCap(c Capabilities, which CapType) (ret string) {\n\tlast, err := lastCap()\n\tif err != nil {\n\t\treturn \"\"\n\t}\n\tfor i, first := Cap(0), true; i <= last; i++ {\n\t\tif !c.Get(which, i) {\n\t\t\tcontinue\n\t\t}\n\t\tif first {\n\t\t\tfirst = false\n\t\t} else {\n\t\t\tret += \", \"\n\t\t}\n\t\tret += i.String()\n\t}\n\treturn\n}\n\nfunc mkString(c Capabilities, max CapType) (ret string) {\n\tret = \"{\"\n\tfor i := CapType(1); i <= max; i <<= 1 {\n\t\tret += \" \" + i.String() + \"=\\\"\"\n\t\tif c.Empty(i) {\n\t\t\tret += \"empty\"\n\t\t} else if c.Full(i) {\n\t\t\tret += \"full\"\n\t\t} else {\n\t\t\tret += c.StringCap(i)\n\t\t}\n\t\tret += \"\\\"\"\n\t}\n\tret += \" }\"\n\treturn\n}\n\nvar capVersion = sync.OnceValues(func() (uint32, error) {\n\tvar hdr capHeader\n\terr := capget(&hdr, nil)\n\treturn hdr.version, err\n})\n\nfunc newPid(pid int) (c Capabilities, retErr error) {\n\tver, err := capVersion()\n\tif err != nil {\n\t\tretErr = fmt.Errorf(\"unable to get capability version from the kernel: %w\", err)\n\t\treturn\n\t}\n\tswitch ver {\n\tcase linuxCapVer1, linuxCapVer2:\n\t\tretErr = errors.New(\"old/unsupported capability version (kernel older than 2.6.26?)\")\n\tdefault:\n\t\t// Either linuxCapVer3, or an unknown/future version (such as v4).\n\t\t// In the latter case, we fall back to v3 as the latest version known\n\t\t// to this package, as kernel should be backward-compatible to v3.\n\t\tp := new(capsV3)\n\t\tp.hdr.version = linuxCapVer3\n\t\tp.hdr.pid = int32(pid)\n\t\tc = p\n\t}\n\treturn\n}\n\nfunc ignoreEINVAL(err error) error {\n\tif errors.Is(err, syscall.EINVAL) {\n\t\terr = nil\n\t}\n\treturn err\n}\n\ntype capsV3 struct {\n\thdr     capHeader\n\tdata    [2]capData\n\tbounds  [2]uint32\n\tambient [2]uint32\n}\n\nfunc (c *capsV3) Get(which CapType, what Cap) bool {\n\tvar i uint\n\tif what > 31 {\n\t\ti = uint(what) >> 5\n\t\twhat %= 32\n\t}\n\n\tswitch which {\n\tcase EFFECTIVE:\n\t\treturn (1<<uint(what))&c.data[i].effective != 0\n\tcase PERMITTED:\n\t\treturn (1<<uint(what))&c.data[i].permitted != 0\n\tcase INHERITABLE:\n\t\treturn (1<<uint(what))&c.data[i].inheritable != 0\n\tcase BOUNDING:\n\t\treturn (1<<uint(what))&c.bounds[i] != 0\n\tcase AMBIENT:\n\t\treturn (1<<uint(what))&c.ambient[i] != 0\n\t}\n\n\treturn false\n}\n\nfunc (c *capsV3) getData(which CapType, dest []uint32) {\n\tswitch which {\n\tcase EFFECTIVE:\n\t\tdest[0] = c.data[0].effective\n\t\tdest[1] = c.data[1].effective\n\tcase PERMITTED:\n\t\tdest[0] = c.data[0].permitted\n\t\tdest[1] = c.data[1].permitted\n\tcase INHERITABLE:\n\t\tdest[0] = c.data[0].inheritable\n\t\tdest[1] = c.data[1].inheritable\n\tcase BOUNDING:\n\t\tdest[0] = c.bounds[0]\n\t\tdest[1] = c.bounds[1]\n\tcase AMBIENT:\n\t\tdest[0] = c.ambient[0]\n\t\tdest[1] = c.ambient[1]\n\t}\n}\n\nfunc (c *capsV3) Empty(which CapType) bool {\n\tvar data [2]uint32\n\tc.getData(which, data[:])\n\treturn data[0] == 0 && data[1] == 0\n}\n\nfunc (c *capsV3) Full(which CapType) bool {\n\tvar data [2]uint32\n\tc.getData(which, data[:])\n\tif (data[0] & 0xffffffff) != 0xffffffff {\n\t\treturn false\n\t}\n\tmask := capUpperMask()\n\treturn (data[1] & mask) == mask\n}\n\nfunc (c *capsV3) Set(which CapType, caps ...Cap) {\n\tfor _, what := range caps {\n\t\tvar i uint\n\t\tif what > 31 {\n\t\t\ti = uint(what) >> 5\n\t\t\twhat %= 32\n\t\t}\n\n\t\tif which&EFFECTIVE != 0 {\n\t\t\tc.data[i].effective |= 1 << uint(what)\n\t\t}\n\t\tif which&PERMITTED != 0 {\n\t\t\tc.data[i].permitted |= 1 << uint(what)\n\t\t}\n\t\tif which&INHERITABLE != 0 {\n\t\t\tc.data[i].inheritable |= 1 << uint(what)\n\t\t}\n\t\tif which&BOUNDING != 0 {\n\t\t\tc.bounds[i] |= 1 << uint(what)\n\t\t}\n\t\tif which&AMBIENT != 0 {\n\t\t\tc.ambient[i] |= 1 << uint(what)\n\t\t}\n\t}\n}\n\nfunc (c *capsV3) Unset(which CapType, caps ...Cap) {\n\tfor _, what := range caps {\n\t\tvar i uint\n\t\tif what > 31 {\n\t\t\ti = uint(what) >> 5\n\t\t\twhat %= 32\n\t\t}\n\n\t\tif which&EFFECTIVE != 0 {\n\t\t\tc.data[i].effective &= ^(1 << uint(what))\n\t\t}\n\t\tif which&PERMITTED != 0 {\n\t\t\tc.data[i].permitted &= ^(1 << uint(what))\n\t\t}\n\t\tif which&INHERITABLE != 0 {\n\t\t\tc.data[i].inheritable &= ^(1 << uint(what))\n\t\t}\n\t\tif which&BOUNDING != 0 {\n\t\t\tc.bounds[i] &= ^(1 << uint(what))\n\t\t}\n\t\tif which&AMBIENT != 0 {\n\t\t\tc.ambient[i] &= ^(1 << uint(what))\n\t\t}\n\t}\n}\n\nfunc (c *capsV3) Fill(kind CapType) {\n\tif kind&CAPS == CAPS {\n\t\tc.data[0].effective = 0xffffffff\n\t\tc.data[0].permitted = 0xffffffff\n\t\tc.data[0].inheritable = 0\n\t\tc.data[1].effective = 0xffffffff\n\t\tc.data[1].permitted = 0xffffffff\n\t\tc.data[1].inheritable = 0\n\t}\n\n\tif kind&BOUNDS == BOUNDS {\n\t\tc.bounds[0] = 0xffffffff\n\t\tc.bounds[1] = 0xffffffff\n\t}\n\tif kind&AMBS == AMBS {\n\t\tc.ambient[0] = 0xffffffff\n\t\tc.ambient[1] = 0xffffffff\n\t}\n}\n\nfunc (c *capsV3) Clear(kind CapType) {\n\tif kind&CAPS == CAPS {\n\t\tc.data[0].effective = 0\n\t\tc.data[0].permitted = 0\n\t\tc.data[0].inheritable = 0\n\t\tc.data[1].effective = 0\n\t\tc.data[1].permitted = 0\n\t\tc.data[1].inheritable = 0\n\t}\n\n\tif kind&BOUNDS == BOUNDS {\n\t\tc.bounds[0] = 0\n\t\tc.bounds[1] = 0\n\t}\n\tif kind&AMBS == AMBS {\n\t\tc.ambient[0] = 0\n\t\tc.ambient[1] = 0\n\t}\n}\n\nfunc (c *capsV3) StringCap(which CapType) (ret string) {\n\treturn mkStringCap(c, which)\n}\n\nfunc (c *capsV3) String() (ret string) {\n\treturn mkString(c, BOUNDING)\n}\n\nfunc (c *capsV3) Load() (err error) {\n\terr = capget(&c.hdr, &c.data[0])\n\tif err != nil {\n\t\treturn\n\t}\n\n\tpath := \"/proc/self/status\"\n\tif c.hdr.pid != 0 {\n\t\tpath = fmt.Sprintf(\"/proc/%d/status\", c.hdr.pid)\n\t}\n\n\tf, err := os.Open(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tb := bufio.NewReader(f)\n\tfor {\n\t\tline, e := b.ReadString('\\n')\n\t\tif e != nil {\n\t\t\tif e != io.EOF {\n\t\t\t\terr = e\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t\tif val, ok := strings.CutPrefix(line, \"CapBnd:\\t\"); ok {\n\t\t\t_, err = fmt.Sscanf(val, \"%08x%08x\", &c.bounds[1], &c.bounds[0])\n\t\t\tif err != nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\t\tif val, ok := strings.CutPrefix(line, \"CapAmb:\\t\"); ok {\n\t\t\t_, err = fmt.Sscanf(val, \"%08x%08x\", &c.ambient[1], &c.ambient[0])\n\t\t\tif err != nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\t}\n\tf.Close()\n\n\treturn\n}\n\nfunc (c *capsV3) Apply(kind CapType) error {\n\tif c.hdr.pid != 0 {\n\t\treturn errors.New(\"unable to modify capabilities of another process\")\n\t}\n\tlast, err := LastCap()\n\tif err != nil {\n\t\treturn err\n\t}\n\tif kind&BOUNDS == BOUNDS {\n\t\tvar data [2]capData\n\t\terr = capget(&c.hdr, &data[0])\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif (1<<uint(CAP_SETPCAP))&data[0].effective != 0 {\n\t\t\tfor i := Cap(0); i <= last; i++ {\n\t\t\t\tif c.Get(BOUNDING, i) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\t// Ignore EINVAL since the capability may not be supported in this system.\n\t\t\t\terr = ignoreEINVAL(dropBound(i))\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif kind&CAPS == CAPS {\n\t\terr = capset(&c.hdr, &c.data[0])\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tif kind&AMBS == AMBS {\n\t\t// Ignore EINVAL as not supported on kernels before 4.3\n\t\terr = ignoreEINVAL(resetAmbient())\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfor i := Cap(0); i <= last; i++ {\n\t\t\tif !c.Get(AMBIENT, i) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\t// Ignore EINVAL as not supported on kernels before 4.3\n\t\t\terr = ignoreEINVAL(setAmbient(true, i))\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc getAmbient(c Cap) (bool, error) {\n\tres, err := prctlRetInt(pr_CAP_AMBIENT, pr_CAP_AMBIENT_IS_SET, uintptr(c))\n\tif err != nil {\n\t\treturn false, err\n\t}\n\treturn res > 0, nil\n}\n\nfunc setAmbient(raise bool, caps ...Cap) error {\n\top := pr_CAP_AMBIENT_RAISE\n\tif !raise {\n\t\top = pr_CAP_AMBIENT_LOWER\n\t}\n\tfor _, val := range caps {\n\t\terr := prctl(pr_CAP_AMBIENT, op, uintptr(val))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc resetAmbient() error {\n\treturn prctl(pr_CAP_AMBIENT, pr_CAP_AMBIENT_CLEAR_ALL, 0)\n}\n\nfunc getBound(c Cap) (bool, error) {\n\tres, err := prctlRetInt(syscall.PR_CAPBSET_READ, uintptr(c), 0)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\treturn res > 0, nil\n}\n\nfunc dropBound(caps ...Cap) error {\n\tfor _, val := range caps {\n\t\terr := prctl(syscall.PR_CAPBSET_DROP, uintptr(val), 0)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc newFile(path string) (c Capabilities, err error) {\n\tc = &capsFile{path: path}\n\treturn\n}\n\ntype capsFile struct {\n\tpath string\n\tdata vfscapData\n}\n\nfunc (c *capsFile) Get(which CapType, what Cap) bool {\n\tvar i uint\n\tif what > 31 {\n\t\tif c.data.version == 1 {\n\t\t\treturn false\n\t\t}\n\t\ti = uint(what) >> 5\n\t\twhat %= 32\n\t}\n\n\tswitch which {\n\tcase EFFECTIVE:\n\t\treturn (1<<uint(what))&c.data.effective[i] != 0\n\tcase PERMITTED:\n\t\treturn (1<<uint(what))&c.data.data[i].permitted != 0\n\tcase INHERITABLE:\n\t\treturn (1<<uint(what))&c.data.data[i].inheritable != 0\n\t}\n\n\treturn false\n}\n\nfunc (c *capsFile) getData(which CapType, dest []uint32) {\n\tswitch which {\n\tcase EFFECTIVE:\n\t\tdest[0] = c.data.effective[0]\n\t\tdest[1] = c.data.effective[1]\n\tcase PERMITTED:\n\t\tdest[0] = c.data.data[0].permitted\n\t\tdest[1] = c.data.data[1].permitted\n\tcase INHERITABLE:\n\t\tdest[0] = c.data.data[0].inheritable\n\t\tdest[1] = c.data.data[1].inheritable\n\t}\n}\n\nfunc (c *capsFile) Empty(which CapType) bool {\n\tvar data [2]uint32\n\tc.getData(which, data[:])\n\treturn data[0] == 0 && data[1] == 0\n}\n\nfunc (c *capsFile) Full(which CapType) bool {\n\tvar data [2]uint32\n\tc.getData(which, data[:])\n\tif c.data.version == 0 {\n\t\treturn (data[0] & 0x7fffffff) == 0x7fffffff\n\t}\n\tif (data[0] & 0xffffffff) != 0xffffffff {\n\t\treturn false\n\t}\n\tmask := capUpperMask()\n\treturn (data[1] & mask) == mask\n}\n\nfunc (c *capsFile) Set(which CapType, caps ...Cap) {\n\tfor _, what := range caps {\n\t\tvar i uint\n\t\tif what > 31 {\n\t\t\tif c.data.version == 1 {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\ti = uint(what) >> 5\n\t\t\twhat %= 32\n\t\t}\n\n\t\tif which&EFFECTIVE != 0 {\n\t\t\tc.data.effective[i] |= 1 << uint(what)\n\t\t}\n\t\tif which&PERMITTED != 0 {\n\t\t\tc.data.data[i].permitted |= 1 << uint(what)\n\t\t}\n\t\tif which&INHERITABLE != 0 {\n\t\t\tc.data.data[i].inheritable |= 1 << uint(what)\n\t\t}\n\t}\n}\n\nfunc (c *capsFile) Unset(which CapType, caps ...Cap) {\n\tfor _, what := range caps {\n\t\tvar i uint\n\t\tif what > 31 {\n\t\t\tif c.data.version == 1 {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\ti = uint(what) >> 5\n\t\t\twhat %= 32\n\t\t}\n\n\t\tif which&EFFECTIVE != 0 {\n\t\t\tc.data.effective[i] &= ^(1 << uint(what))\n\t\t}\n\t\tif which&PERMITTED != 0 {\n\t\t\tc.data.data[i].permitted &= ^(1 << uint(what))\n\t\t}\n\t\tif which&INHERITABLE != 0 {\n\t\t\tc.data.data[i].inheritable &= ^(1 << uint(what))\n\t\t}\n\t}\n}\n\nfunc (c *capsFile) Fill(kind CapType) {\n\tif kind&CAPS == CAPS {\n\t\tc.data.effective[0] = 0xffffffff\n\t\tc.data.data[0].permitted = 0xffffffff\n\t\tc.data.data[0].inheritable = 0\n\t\tif c.data.version == 2 {\n\t\t\tc.data.effective[1] = 0xffffffff\n\t\t\tc.data.data[1].permitted = 0xffffffff\n\t\t\tc.data.data[1].inheritable = 0\n\t\t}\n\t}\n}\n\nfunc (c *capsFile) Clear(kind CapType) {\n\tif kind&CAPS == CAPS {\n\t\tc.data.effective[0] = 0\n\t\tc.data.data[0].permitted = 0\n\t\tc.data.data[0].inheritable = 0\n\t\tif c.data.version == 2 {\n\t\t\tc.data.effective[1] = 0\n\t\t\tc.data.data[1].permitted = 0\n\t\t\tc.data.data[1].inheritable = 0\n\t\t}\n\t}\n}\n\nfunc (c *capsFile) StringCap(which CapType) (ret string) {\n\treturn mkStringCap(c, which)\n}\n\nfunc (c *capsFile) String() (ret string) {\n\treturn mkString(c, INHERITABLE)\n}\n\nfunc (c *capsFile) Load() (err error) {\n\treturn getVfsCap(c.path, &c.data)\n}\n\nfunc (c *capsFile) Apply(kind CapType) (err error) {\n\tif kind&CAPS == CAPS {\n\t\treturn setVfsCap(c.path, &c.data)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/github.com/moby/sys/capability/capability_noop.go",
    "content": "// Copyright 2023 The Capability Authors.\n// Copyright 2013 Suryandaru Triandana <syndtr@gmail.com>\n// All rights reserved.\n//\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build !linux\n\npackage capability\n\nimport \"errors\"\n\nvar errNotSup = errors.New(\"not supported\")\n\nfunc newPid(_ int) (Capabilities, error) {\n\treturn nil, errNotSup\n}\n\nfunc newFile(_ string) (Capabilities, error) {\n\treturn nil, errNotSup\n}\n\nfunc lastCap() (Cap, error) {\n\treturn -1, errNotSup\n}\n\nfunc getAmbient(_ Cap) (bool, error) {\n\treturn false, errNotSup\n}\n\nfunc setAmbient(_ bool, _ ...Cap) error {\n\treturn errNotSup\n}\n\nfunc resetAmbient() error {\n\treturn errNotSup\n}\n\nfunc getBound(_ Cap) (bool, error) {\n\treturn false, errNotSup\n}\n\nfunc dropBound(_ ...Cap) error {\n\treturn errNotSup\n}\n"
  },
  {
    "path": "vendor/github.com/moby/sys/capability/enum.go",
    "content": "// Copyright 2024 The Capability Authors.\n// Copyright 2013 Suryandaru Triandana <syndtr@gmail.com>\n// All rights reserved.\n//\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage capability\n\nimport \"slices\"\n\ntype CapType uint\n\nfunc (c CapType) String() string {\n\tswitch c {\n\tcase EFFECTIVE:\n\t\treturn \"effective\"\n\tcase PERMITTED:\n\t\treturn \"permitted\"\n\tcase INHERITABLE:\n\t\treturn \"inheritable\"\n\tcase BOUNDING:\n\t\treturn \"bounding\"\n\tcase CAPS:\n\t\treturn \"caps\"\n\tcase AMBIENT:\n\t\treturn \"ambient\"\n\t}\n\treturn \"unknown\"\n}\n\nconst (\n\tEFFECTIVE CapType = 1 << iota\n\tPERMITTED\n\tINHERITABLE\n\tBOUNDING\n\tAMBIENT\n\n\tCAPS   = EFFECTIVE | PERMITTED | INHERITABLE\n\tBOUNDS = BOUNDING\n\tAMBS   = AMBIENT\n)\n\n//go:generate go run enumgen/gen.go\ntype Cap int\n\n// POSIX-draft defined capabilities and Linux extensions.\n//\n// Defined in https://github.com/torvalds/linux/blob/master/include/uapi/linux/capability.h\nconst (\n\t// In a system with the [_POSIX_CHOWN_RESTRICTED] option defined, this\n\t// overrides the restriction of changing file ownership and group\n\t// ownership.\n\tCAP_CHOWN = Cap(0)\n\n\t// Override all DAC access, including ACL execute access if\n\t// [_POSIX_ACL] is defined. Excluding DAC access covered by\n\t// CAP_LINUX_IMMUTABLE.\n\tCAP_DAC_OVERRIDE = Cap(1)\n\n\t// Overrides all DAC restrictions regarding read and search on files\n\t// and directories, including ACL restrictions if [_POSIX_ACL] is\n\t// defined. Excluding DAC access covered by CAP_LINUX_IMMUTABLE.\n\tCAP_DAC_READ_SEARCH = Cap(2)\n\n\t// Overrides all restrictions about allowed operations on files, where\n\t// file owner ID must be equal to the user ID, except where CAP_FSETID\n\t// is applicable. It doesn't override MAC and DAC restrictions.\n\tCAP_FOWNER = Cap(3)\n\n\t// Overrides the following restrictions that the effective user ID\n\t// shall match the file owner ID when setting the S_ISUID and S_ISGID\n\t// bits on that file; that the effective group ID (or one of the\n\t// supplementary group IDs) shall match the file owner ID when setting\n\t// the S_ISGID bit on that file; that the S_ISUID and S_ISGID bits are\n\t// cleared on successful return from chown(2) (not implemented).\n\tCAP_FSETID = Cap(4)\n\n\t// Overrides the restriction that the real or effective user ID of a\n\t// process sending a signal must match the real or effective user ID\n\t// of the process receiving the signal.\n\tCAP_KILL = Cap(5)\n\n\t// Allows setgid(2) manipulation\n\t// Allows setgroups(2)\n\t// Allows forged gids on socket credentials passing.\n\tCAP_SETGID = Cap(6)\n\n\t// Allows set*uid(2) manipulation (including fsuid).\n\t// Allows forged pids on socket credentials passing.\n\tCAP_SETUID = Cap(7)\n\n\t// Linux-specific capabilities\n\n\t// Without VFS support for capabilities:\n\t//   Transfer any capability in your permitted set to any pid,\n\t//   remove any capability in your permitted set from any pid\n\t// With VFS support for capabilities (neither of above, but)\n\t//   Add any capability from current's capability bounding set\n\t//     to the current process' inheritable set\n\t//   Allow taking bits out of capability bounding set\n\t//   Allow modification of the securebits for a process\n\tCAP_SETPCAP = Cap(8)\n\n\t// Allow modification of S_IMMUTABLE and S_APPEND file attributes\n\tCAP_LINUX_IMMUTABLE = Cap(9)\n\n\t// Allows binding to TCP/UDP sockets below 1024\n\t// Allows binding to ATM VCIs below 32\n\tCAP_NET_BIND_SERVICE = Cap(10)\n\n\t// Allow broadcasting, listen to multicast\n\tCAP_NET_BROADCAST = Cap(11)\n\n\t// Allow interface configuration\n\t// Allow administration of IP firewall, masquerading and accounting\n\t// Allow setting debug option on sockets\n\t// Allow modification of routing tables\n\t// Allow setting arbitrary process / process group ownership on\n\t// sockets\n\t// Allow binding to any address for transparent proxying (also via NET_RAW)\n\t// Allow setting TOS (type of service)\n\t// Allow setting promiscuous mode\n\t// Allow clearing driver statistics\n\t// Allow multicasting\n\t// Allow read/write of device-specific registers\n\t// Allow activation of ATM control sockets\n\tCAP_NET_ADMIN = Cap(12)\n\n\t// Allow use of RAW sockets\n\t// Allow use of PACKET sockets\n\t// Allow binding to any address for transparent proxying (also via NET_ADMIN)\n\tCAP_NET_RAW = Cap(13)\n\n\t// Allow locking of shared memory segments\n\t// Allow mlock and mlockall (which doesn't really have anything to do\n\t// with IPC)\n\tCAP_IPC_LOCK = Cap(14)\n\n\t// Override IPC ownership checks\n\tCAP_IPC_OWNER = Cap(15)\n\n\t// Insert and remove kernel modules - modify kernel without limit\n\tCAP_SYS_MODULE = Cap(16)\n\n\t// Allow ioperm/iopl access\n\t// Allow sending USB messages to any device via /proc/bus/usb\n\tCAP_SYS_RAWIO = Cap(17)\n\n\t// Allow use of chroot()\n\tCAP_SYS_CHROOT = Cap(18)\n\n\t// Allow ptrace() of any process\n\tCAP_SYS_PTRACE = Cap(19)\n\n\t// Allow configuration of process accounting\n\tCAP_SYS_PACCT = Cap(20)\n\n\t// Allow configuration of the secure attention key\n\t// Allow administration of the random device\n\t// Allow examination and configuration of disk quotas\n\t// Allow setting the domainname\n\t// Allow setting the hostname\n\t// Allow calling bdflush()\n\t// Allow mount() and umount(), setting up new smb connection\n\t// Allow some autofs root ioctls\n\t// Allow nfsservctl\n\t// Allow VM86_REQUEST_IRQ\n\t// Allow to read/write pci config on alpha\n\t// Allow irix_prctl on mips (setstacksize)\n\t// Allow flushing all cache on m68k (sys_cacheflush)\n\t// Allow removing semaphores\n\t// Used instead of CAP_CHOWN to \"chown\" IPC message queues, semaphores\n\t// and shared memory\n\t// Allow locking/unlocking of shared memory segment\n\t// Allow turning swap on/off\n\t// Allow forged pids on socket credentials passing\n\t// Allow setting readahead and flushing buffers on block devices\n\t// Allow setting geometry in floppy driver\n\t// Allow turning DMA on/off in xd driver\n\t// Allow administration of md devices (mostly the above, but some\n\t// extra ioctls)\n\t// Allow tuning the ide driver\n\t// Allow access to the nvram device\n\t// Allow administration of apm_bios, serial and bttv (TV) device\n\t// Allow manufacturer commands in isdn CAPI support driver\n\t// Allow reading non-standardized portions of pci configuration space\n\t// Allow DDI debug ioctl on sbpcd driver\n\t// Allow setting up serial ports\n\t// Allow sending raw qic-117 commands\n\t// Allow enabling/disabling tagged queuing on SCSI controllers and sending\n\t// arbitrary SCSI commands\n\t// Allow setting encryption key on loopback filesystem\n\t// Allow setting zone reclaim policy\n\t// Allow everything under CAP_BPF and CAP_PERFMON for backward compatibility\n\tCAP_SYS_ADMIN = Cap(21)\n\n\t// Allow use of reboot()\n\tCAP_SYS_BOOT = Cap(22)\n\n\t// Allow raising priority and setting priority on other (different\n\t// UID) processes\n\t// Allow use of FIFO and round-robin (realtime) scheduling on own\n\t// processes and setting the scheduling algorithm used by another\n\t// process.\n\t// Allow setting cpu affinity on other processes\n\tCAP_SYS_NICE = Cap(23)\n\n\t// Override resource limits. Set resource limits.\n\t// Override quota limits.\n\t// Override reserved space on ext2 filesystem\n\t// Modify data journaling mode on ext3 filesystem (uses journaling\n\t// resources)\n\t// NOTE: ext2 honors fsuid when checking for resource overrides, so\n\t// you can override using fsuid too\n\t// Override size restrictions on IPC message queues\n\t// Allow more than 64hz interrupts from the real-time clock\n\t// Override max number of consoles on console allocation\n\t// Override max number of keymaps\n\t// Control memory reclaim behavior\n\tCAP_SYS_RESOURCE = Cap(24)\n\n\t// Allow manipulation of system clock\n\t// Allow irix_stime on mips\n\t// Allow setting the real-time clock\n\tCAP_SYS_TIME = Cap(25)\n\n\t// Allow configuration of tty devices\n\t// Allow vhangup() of tty\n\tCAP_SYS_TTY_CONFIG = Cap(26)\n\n\t// Allow the privileged aspects of mknod()\n\tCAP_MKNOD = Cap(27)\n\n\t// Allow taking of leases on files\n\tCAP_LEASE = Cap(28)\n\n\tCAP_AUDIT_WRITE   = Cap(29)\n\tCAP_AUDIT_CONTROL = Cap(30)\n\tCAP_SETFCAP       = Cap(31)\n\n\t// Override MAC access.\n\t// The base kernel enforces no MAC policy.\n\t// An LSM may enforce a MAC policy, and if it does and it chooses\n\t// to implement capability based overrides of that policy, this is\n\t// the capability it should use to do so.\n\tCAP_MAC_OVERRIDE = Cap(32)\n\n\t// Allow MAC configuration or state changes.\n\t// The base kernel requires no MAC configuration.\n\t// An LSM may enforce a MAC policy, and if it does and it chooses\n\t// to implement capability based checks on modifications to that\n\t// policy or the data required to maintain it, this is the\n\t// capability it should use to do so.\n\tCAP_MAC_ADMIN = Cap(33)\n\n\t// Allow configuring the kernel's syslog (printk behaviour)\n\tCAP_SYSLOG = Cap(34)\n\n\t// Allow triggering something that will wake the system\n\tCAP_WAKE_ALARM = Cap(35)\n\n\t// Allow preventing system suspends\n\tCAP_BLOCK_SUSPEND = Cap(36)\n\n\t// Allow reading the audit log via multicast netlink socket\n\tCAP_AUDIT_READ = Cap(37)\n\n\t// Allow system performance and observability privileged operations\n\t// using perf_events, i915_perf and other kernel subsystems\n\tCAP_PERFMON = Cap(38)\n\n\t// CAP_BPF allows the following BPF operations:\n\t// - Creating all types of BPF maps\n\t// - Advanced verifier features\n\t//   - Indirect variable access\n\t//   - Bounded loops\n\t//   - BPF to BPF function calls\n\t//   - Scalar precision tracking\n\t//   - Larger complexity limits\n\t//   - Dead code elimination\n\t//   - And potentially other features\n\t// - Loading BPF Type Format (BTF) data\n\t// - Retrieve xlated and JITed code of BPF programs\n\t// - Use bpf_spin_lock() helper\n\t//\n\t// CAP_PERFMON relaxes the verifier checks further:\n\t// - BPF progs can use of pointer-to-integer conversions\n\t// - speculation attack hardening measures are bypassed\n\t// - bpf_probe_read to read arbitrary kernel memory is allowed\n\t// - bpf_trace_printk to print kernel memory is allowed\n\t//\n\t// CAP_SYS_ADMIN is required to use bpf_probe_write_user.\n\t//\n\t// CAP_SYS_ADMIN is required to iterate system wide loaded\n\t// programs, maps, links, BTFs and convert their IDs to file descriptors.\n\t//\n\t// CAP_PERFMON and CAP_BPF are required to load tracing programs.\n\t// CAP_NET_ADMIN and CAP_BPF are required to load networking programs.\n\tCAP_BPF = Cap(39)\n\n\t// Allow checkpoint/restore related operations.\n\t// Introduced in kernel 5.9\n\tCAP_CHECKPOINT_RESTORE = Cap(40)\n)\n\n// List returns the list of all capabilities known to the package.\n//\n// Deprecated: use [ListKnown] or [ListSupported] instead.\nfunc List() []Cap {\n\treturn ListKnown()\n}\n\n// ListKnown returns the list of all capabilities known to the package.\nfunc ListKnown() []Cap {\n\treturn list()\n}\n\n// ListSupported returns the list of all capabilities known to the package,\n// except those that are not supported by the currently running Linux kernel.\nfunc ListSupported() ([]Cap, error) {\n\tlast, err := LastCap()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn slices.DeleteFunc(list(), func(c Cap) bool {\n\t\t// Remove caps not supported by the kernel.\n\t\treturn c > last\n\t}), nil\n}\n"
  },
  {
    "path": "vendor/github.com/moby/sys/capability/enum_gen.go",
    "content": "// Code generated by go generate; DO NOT EDIT.\n\npackage capability\n\nfunc (c Cap) String() string {\n\tswitch c {\n\tcase CAP_CHOWN:\n\t\treturn \"chown\"\n\tcase CAP_DAC_OVERRIDE:\n\t\treturn \"dac_override\"\n\tcase CAP_DAC_READ_SEARCH:\n\t\treturn \"dac_read_search\"\n\tcase CAP_FOWNER:\n\t\treturn \"fowner\"\n\tcase CAP_FSETID:\n\t\treturn \"fsetid\"\n\tcase CAP_KILL:\n\t\treturn \"kill\"\n\tcase CAP_SETGID:\n\t\treturn \"setgid\"\n\tcase CAP_SETUID:\n\t\treturn \"setuid\"\n\tcase CAP_SETPCAP:\n\t\treturn \"setpcap\"\n\tcase CAP_LINUX_IMMUTABLE:\n\t\treturn \"linux_immutable\"\n\tcase CAP_NET_BIND_SERVICE:\n\t\treturn \"net_bind_service\"\n\tcase CAP_NET_BROADCAST:\n\t\treturn \"net_broadcast\"\n\tcase CAP_NET_ADMIN:\n\t\treturn \"net_admin\"\n\tcase CAP_NET_RAW:\n\t\treturn \"net_raw\"\n\tcase CAP_IPC_LOCK:\n\t\treturn \"ipc_lock\"\n\tcase CAP_IPC_OWNER:\n\t\treturn \"ipc_owner\"\n\tcase CAP_SYS_MODULE:\n\t\treturn \"sys_module\"\n\tcase CAP_SYS_RAWIO:\n\t\treturn \"sys_rawio\"\n\tcase CAP_SYS_CHROOT:\n\t\treturn \"sys_chroot\"\n\tcase CAP_SYS_PTRACE:\n\t\treturn \"sys_ptrace\"\n\tcase CAP_SYS_PACCT:\n\t\treturn \"sys_pacct\"\n\tcase CAP_SYS_ADMIN:\n\t\treturn \"sys_admin\"\n\tcase CAP_SYS_BOOT:\n\t\treturn \"sys_boot\"\n\tcase CAP_SYS_NICE:\n\t\treturn \"sys_nice\"\n\tcase CAP_SYS_RESOURCE:\n\t\treturn \"sys_resource\"\n\tcase CAP_SYS_TIME:\n\t\treturn \"sys_time\"\n\tcase CAP_SYS_TTY_CONFIG:\n\t\treturn \"sys_tty_config\"\n\tcase CAP_MKNOD:\n\t\treturn \"mknod\"\n\tcase CAP_LEASE:\n\t\treturn \"lease\"\n\tcase CAP_AUDIT_WRITE:\n\t\treturn \"audit_write\"\n\tcase CAP_AUDIT_CONTROL:\n\t\treturn \"audit_control\"\n\tcase CAP_SETFCAP:\n\t\treturn \"setfcap\"\n\tcase CAP_MAC_OVERRIDE:\n\t\treturn \"mac_override\"\n\tcase CAP_MAC_ADMIN:\n\t\treturn \"mac_admin\"\n\tcase CAP_SYSLOG:\n\t\treturn \"syslog\"\n\tcase CAP_WAKE_ALARM:\n\t\treturn \"wake_alarm\"\n\tcase CAP_BLOCK_SUSPEND:\n\t\treturn \"block_suspend\"\n\tcase CAP_AUDIT_READ:\n\t\treturn \"audit_read\"\n\tcase CAP_PERFMON:\n\t\treturn \"perfmon\"\n\tcase CAP_BPF:\n\t\treturn \"bpf\"\n\tcase CAP_CHECKPOINT_RESTORE:\n\t\treturn \"checkpoint_restore\"\n\t}\n\treturn \"unknown\"\n}\n\nfunc list() []Cap {\n\treturn []Cap{\n\t\tCAP_CHOWN,\n\t\tCAP_DAC_OVERRIDE,\n\t\tCAP_DAC_READ_SEARCH,\n\t\tCAP_FOWNER,\n\t\tCAP_FSETID,\n\t\tCAP_KILL,\n\t\tCAP_SETGID,\n\t\tCAP_SETUID,\n\t\tCAP_SETPCAP,\n\t\tCAP_LINUX_IMMUTABLE,\n\t\tCAP_NET_BIND_SERVICE,\n\t\tCAP_NET_BROADCAST,\n\t\tCAP_NET_ADMIN,\n\t\tCAP_NET_RAW,\n\t\tCAP_IPC_LOCK,\n\t\tCAP_IPC_OWNER,\n\t\tCAP_SYS_MODULE,\n\t\tCAP_SYS_RAWIO,\n\t\tCAP_SYS_CHROOT,\n\t\tCAP_SYS_PTRACE,\n\t\tCAP_SYS_PACCT,\n\t\tCAP_SYS_ADMIN,\n\t\tCAP_SYS_BOOT,\n\t\tCAP_SYS_NICE,\n\t\tCAP_SYS_RESOURCE,\n\t\tCAP_SYS_TIME,\n\t\tCAP_SYS_TTY_CONFIG,\n\t\tCAP_MKNOD,\n\t\tCAP_LEASE,\n\t\tCAP_AUDIT_WRITE,\n\t\tCAP_AUDIT_CONTROL,\n\t\tCAP_SETFCAP,\n\t\tCAP_MAC_OVERRIDE,\n\t\tCAP_MAC_ADMIN,\n\t\tCAP_SYSLOG,\n\t\tCAP_WAKE_ALARM,\n\t\tCAP_BLOCK_SUSPEND,\n\t\tCAP_AUDIT_READ,\n\t\tCAP_PERFMON,\n\t\tCAP_BPF,\n\t\tCAP_CHECKPOINT_RESTORE,\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/moby/sys/capability/syscall_linux.go",
    "content": "// Copyright 2024 The Capability Authors.\n// Copyright 2013 Suryandaru Triandana <syndtr@gmail.com>\n// All rights reserved.\n//\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage capability\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\ntype capHeader struct {\n\tversion uint32\n\tpid     int32\n}\n\ntype capData struct {\n\teffective   uint32\n\tpermitted   uint32\n\tinheritable uint32\n}\n\nfunc capget(hdr *capHeader, data *capData) (err error) {\n\t_, _, e1 := syscall.RawSyscall(syscall.SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\nfunc capset(hdr *capHeader, data *capData) (err error) {\n\t_, _, e1 := syscall.RawSyscall(syscall.SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// not yet in syscall\nconst (\n\tpr_CAP_AMBIENT           = 47\n\tpr_CAP_AMBIENT_IS_SET    = uintptr(1)\n\tpr_CAP_AMBIENT_RAISE     = uintptr(2)\n\tpr_CAP_AMBIENT_LOWER     = uintptr(3)\n\tpr_CAP_AMBIENT_CLEAR_ALL = uintptr(4)\n)\n\nfunc prctl(option int, arg2, arg3 uintptr) (err error) {\n\t_, _, e1 := syscall.RawSyscall(syscall.SYS_PRCTL, uintptr(option), arg2, arg3)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\nfunc prctlRetInt(option int, arg2, arg3 uintptr) (int, error) {\n\tret, _, err := syscall.RawSyscall(syscall.SYS_PRCTL, uintptr(option), arg2, arg3)\n\tif err != 0 {\n\t\treturn 0, err\n\t}\n\treturn int(ret), nil\n}\n\nconst (\n\tvfsXattrName = \"security.capability\"\n\n\tvfsCapVerMask = 0xff000000\n\tvfsCapVer1    = 0x01000000\n\tvfsCapVer2    = 0x02000000\n\n\tvfsCapFlagMask      = ^vfsCapVerMask\n\tvfsCapFlageffective = 0x000001\n\n\tvfscapDataSizeV1 = 4 * (1 + 2*1)\n\tvfscapDataSizeV2 = 4 * (1 + 2*2)\n)\n\ntype vfscapData struct {\n\tmagic uint32\n\tdata  [2]struct {\n\t\tpermitted   uint32\n\t\tinheritable uint32\n\t}\n\teffective [2]uint32\n\tversion   int8\n}\n\nvar _vfsXattrName *byte\n\nfunc init() {\n\t_vfsXattrName, _ = syscall.BytePtrFromString(vfsXattrName)\n}\n\nfunc getVfsCap(path string, dest *vfscapData) (err error) {\n\tvar _p0 *byte\n\t_p0, err = syscall.BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall.RawSyscall6(syscall.SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_vfsXattrName)), uintptr(unsafe.Pointer(dest)), vfscapDataSizeV2, 0, 0)\n\tif e1 != 0 {\n\t\tif e1 == syscall.ENODATA {\n\t\t\tdest.version = 2\n\t\t\treturn\n\t\t}\n\t\terr = e1\n\t}\n\tswitch dest.magic & vfsCapVerMask {\n\tcase vfsCapVer1:\n\t\tdest.version = 1\n\t\tif r0 != vfscapDataSizeV1 {\n\t\t\treturn syscall.EINVAL\n\t\t}\n\t\tdest.data[1].permitted = 0\n\t\tdest.data[1].inheritable = 0\n\tcase vfsCapVer2:\n\t\tdest.version = 2\n\t\tif r0 != vfscapDataSizeV2 {\n\t\t\treturn syscall.EINVAL\n\t\t}\n\tdefault:\n\t\treturn syscall.EINVAL\n\t}\n\tif dest.magic&vfsCapFlageffective != 0 {\n\t\tdest.effective[0] = dest.data[0].permitted | dest.data[0].inheritable\n\t\tdest.effective[1] = dest.data[1].permitted | dest.data[1].inheritable\n\t} else {\n\t\tdest.effective[0] = 0\n\t\tdest.effective[1] = 0\n\t}\n\treturn\n}\n\nfunc setVfsCap(path string, data *vfscapData) (err error) {\n\tvar _p0 *byte\n\t_p0, err = syscall.BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar size uintptr\n\tif data.version == 1 {\n\t\tdata.magic = vfsCapVer1\n\t\tsize = vfscapDataSizeV1\n\t} else if data.version == 2 {\n\t\tdata.magic = vfsCapVer2\n\t\tif data.effective[0] != 0 || data.effective[1] != 0 {\n\t\t\tdata.magic |= vfsCapFlageffective\n\t\t}\n\t\tsize = vfscapDataSizeV2\n\t} else {\n\t\treturn syscall.EINVAL\n\t}\n\t_, _, e1 := syscall.RawSyscall6(syscall.SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_vfsXattrName)), uintptr(unsafe.Pointer(data)), size, 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/github.com/moby/sys/mountinfo/LICENSE",
    "content": "\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "vendor/github.com/moby/sys/mountinfo/doc.go",
    "content": "// Package mountinfo provides a set of functions to retrieve information about OS mounts.\n//\n// Currently it supports Linux. For historical reasons, there is also some support for FreeBSD and OpenBSD,\n// and a shallow implementation for Windows, but in general this is Linux-only package, so\n// the rest of the document only applies to Linux, unless explicitly specified otherwise.\n//\n// In Linux, information about mounts seen by the current process is available from\n// /proc/self/mountinfo. Note that due to mount namespaces, different processes can\n// see different mounts. A per-process mountinfo table is available from /proc/<PID>/mountinfo,\n// where <PID> is a numerical process identifier.\n//\n// In general, /proc is not a very efficient interface, and mountinfo is not an exception.\n// For example, there is no way to get information about a specific mount point (i.e. it\n// is all-or-nothing). This package tries to hide the /proc ineffectiveness by using\n// parse filters while reading mountinfo. A filter can skip some entries, or stop\n// processing the rest of the file once the needed information is found.\n//\n// For mountinfo filters that accept path as an argument, the path must be absolute,\n// having all symlinks resolved, and being cleaned (i.e. no extra slashes or dots).\n// One way to achieve all of the above is to employ filepath.Abs followed by\n// filepath.EvalSymlinks (the latter calls filepath.Clean on the result so\n// there is no need to explicitly call filepath.Clean).\n//\n// NOTE that in many cases there is no need to consult mountinfo at all. Here are some\n// of the cases where mountinfo should not be parsed:\n//\n// 1. Before performing a mount. Usually, this is not needed, but if required (say to\n// prevent over-mounts), to check whether a directory is mounted, call os.Lstat\n// on it and its parent directory, and compare their st.Sys().(*syscall.Stat_t).Dev\n// fields -- if they differ, then the directory is the mount point. NOTE this does\n// not work for bind mounts. Optionally, the filesystem type can also be checked\n// by calling unix.Statfs and checking the Type field (i.e. filesystem type).\n//\n// 2. After performing a mount. If there is no error returned, the mount succeeded;\n// checking the mount table for a new mount is redundant and expensive.\n//\n// 3. Before performing an unmount. It is more efficient to do an unmount and ignore\n// a specific error (EINVAL) which tells the directory is not mounted.\n//\n// 4. After performing an unmount. If there is no error returned, the unmount succeeded.\n//\n// 5. To find the mount point root of a specific directory. You can perform os.Stat()\n// on the directory and traverse up until the Dev field of a parent directory differs.\npackage mountinfo\n"
  },
  {
    "path": "vendor/github.com/moby/sys/mountinfo/mounted_linux.go",
    "content": "package mountinfo\n\nimport (\n\t\"os\"\n\t\"path/filepath\"\n\n\t\"golang.org/x/sys/unix\"\n)\n\n// MountedFast is a method of detecting a mount point without reading\n// mountinfo from procfs. A caller can only trust the result if no error\n// and sure == true are returned. Otherwise, other methods (e.g. parsing\n// /proc/mounts) have to be used. If unsure, use Mounted instead (which\n// uses MountedFast, but falls back to parsing mountinfo if needed).\n//\n// If a non-existent path is specified, an appropriate error is returned.\n// In case the caller is not interested in this particular error, it should\n// be handled separately using e.g. errors.Is(err, fs.ErrNotExist).\n//\n// This function is only available on Linux. When available (since kernel\n// v5.6), openat2(2) syscall is used to reliably detect all mounts. Otherwise,\n// the implementation falls back to using stat(2), which can reliably detect\n// normal (but not bind) mounts.\nfunc MountedFast(path string) (mounted, sure bool, err error) {\n\t// Root is always mounted.\n\tif path == string(os.PathSeparator) {\n\t\treturn true, true, nil\n\t}\n\n\tpath, err = normalizePath(path)\n\tif err != nil {\n\t\treturn false, false, err\n\t}\n\tmounted, sure, err = mountedFast(path)\n\treturn\n}\n\n// mountedByOpenat2 is a method of detecting a mount that works for all kinds\n// of mounts (incl. bind mounts), but requires a recent (v5.6+) linux kernel.\nfunc mountedByOpenat2(path string) (bool, error) {\n\tdir, last := filepath.Split(path)\n\n\tdirfd, err := unix.Openat2(unix.AT_FDCWD, dir, &unix.OpenHow{\n\t\tFlags: unix.O_PATH | unix.O_CLOEXEC,\n\t})\n\tif err != nil {\n\t\treturn false, &os.PathError{Op: \"openat2\", Path: dir, Err: err}\n\t}\n\tfd, err := unix.Openat2(dirfd, last, &unix.OpenHow{\n\t\tFlags:   unix.O_PATH | unix.O_CLOEXEC | unix.O_NOFOLLOW,\n\t\tResolve: unix.RESOLVE_NO_XDEV,\n\t})\n\t_ = unix.Close(dirfd)\n\tswitch err {\n\tcase nil: // definitely not a mount\n\t\t_ = unix.Close(fd)\n\t\treturn false, nil\n\tcase unix.EXDEV: // definitely a mount\n\t\treturn true, nil\n\t}\n\t// not sure\n\treturn false, &os.PathError{Op: \"openat2\", Path: path, Err: err}\n}\n\n// mountedFast is similar to MountedFast, except it expects a normalized path.\nfunc mountedFast(path string) (mounted, sure bool, err error) {\n\t// Root is always mounted.\n\tif path == string(os.PathSeparator) {\n\t\treturn true, true, nil\n\t}\n\n\t// Try a fast path, using openat2() with RESOLVE_NO_XDEV.\n\tmounted, err = mountedByOpenat2(path)\n\tif err == nil {\n\t\treturn mounted, true, nil\n\t}\n\n\t// Another fast path: compare st.st_dev fields.\n\tmounted, err = mountedByStat(path)\n\t// This does not work for bind mounts, so false negative\n\t// is possible, therefore only trust if return is true.\n\tif mounted && err == nil {\n\t\treturn true, true, nil\n\t}\n\n\treturn\n}\n\nfunc mounted(path string) (bool, error) {\n\tpath, err := normalizePath(path)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\tmounted, sure, err := mountedFast(path)\n\tif sure && err == nil {\n\t\treturn mounted, nil\n\t}\n\n\t// Fallback to parsing mountinfo.\n\treturn mountedByMountinfo(path)\n}\n"
  },
  {
    "path": "vendor/github.com/moby/sys/mountinfo/mounted_unix.go",
    "content": "//go:build linux || freebsd || openbsd || darwin\n// +build linux freebsd openbsd darwin\n\npackage mountinfo\n\nimport (\n\t\"os\"\n\t\"path/filepath\"\n\n\t\"golang.org/x/sys/unix\"\n)\n\nfunc mountedByStat(path string) (bool, error) {\n\tvar st unix.Stat_t\n\n\tif err := unix.Lstat(path, &st); err != nil {\n\t\treturn false, &os.PathError{Op: \"stat\", Path: path, Err: err}\n\t}\n\tdev := st.Dev\n\tparent := filepath.Dir(path)\n\tif err := unix.Lstat(parent, &st); err != nil {\n\t\treturn false, &os.PathError{Op: \"stat\", Path: parent, Err: err}\n\t}\n\tif dev != st.Dev {\n\t\t// Device differs from that of parent,\n\t\t// so definitely a mount point.\n\t\treturn true, nil\n\t}\n\t// NB: this does not detect bind mounts on Linux.\n\treturn false, nil\n}\n\nfunc normalizePath(path string) (realPath string, err error) {\n\tif realPath, err = filepath.Abs(path); err != nil {\n\t\treturn \"\", err\n\t}\n\tif realPath, err = filepath.EvalSymlinks(realPath); err != nil {\n\t\treturn \"\", err\n\t}\n\tif _, err := os.Stat(realPath); err != nil {\n\t\treturn \"\", err\n\t}\n\treturn realPath, nil\n}\n\nfunc mountedByMountinfo(path string) (bool, error) {\n\tentries, err := GetMounts(SingleEntryFilter(path))\n\tif err != nil {\n\t\treturn false, err\n\t}\n\n\treturn len(entries) > 0, nil\n}\n"
  },
  {
    "path": "vendor/github.com/moby/sys/mountinfo/mountinfo.go",
    "content": "package mountinfo\n\nimport (\n\t\"os\"\n)\n\n// GetMounts retrieves a list of mounts for the current running process,\n// with an optional filter applied (use nil for no filter).\nfunc GetMounts(f FilterFunc) ([]*Info, error) {\n\treturn parseMountTable(f)\n}\n\n// Mounted determines if a specified path is a mount point. In case of any\n// error, false (and an error) is returned.\n//\n// If a non-existent path is specified, an appropriate error is returned.\n// In case the caller is not interested in this particular error, it should\n// be handled separately using e.g. errors.Is(err, fs.ErrNotExist).\nfunc Mounted(path string) (bool, error) {\n\t// root is always mounted\n\tif path == string(os.PathSeparator) {\n\t\treturn true, nil\n\t}\n\treturn mounted(path)\n}\n\n// Info reveals information about a particular mounted filesystem. This\n// struct is populated from the content in the /proc/<pid>/mountinfo file.\ntype Info struct {\n\t// ID is a unique identifier of the mount (may be reused after umount).\n\tID int\n\n\t// Parent is the ID of the parent mount (or of self for the root\n\t// of this mount namespace's mount tree).\n\tParent int\n\n\t// Major and Minor are the major and the minor components of the Dev\n\t// field of unix.Stat_t structure returned by unix.*Stat calls for\n\t// files on this filesystem.\n\tMajor, Minor int\n\n\t// Root is the pathname of the directory in the filesystem which forms\n\t// the root of this mount.\n\tRoot string\n\n\t// Mountpoint is the pathname of the mount point relative to the\n\t// process's root directory.\n\tMountpoint string\n\n\t// Options is a comma-separated list of mount options.\n\tOptions string\n\n\t// Optional are zero or more fields of the form \"tag[:value]\",\n\t// separated by a space.  Currently, the possible optional fields are\n\t// \"shared\", \"master\", \"propagate_from\", and \"unbindable\". For more\n\t// information, see mount_namespaces(7) Linux man page.\n\tOptional string\n\n\t// FSType is the filesystem type in the form \"type[.subtype]\".\n\tFSType string\n\n\t// Source is filesystem-specific information, or \"none\".\n\tSource string\n\n\t// VFSOptions is a comma-separated list of superblock options.\n\tVFSOptions string\n}\n"
  },
  {
    "path": "vendor/github.com/moby/sys/mountinfo/mountinfo_bsd.go",
    "content": "//go:build freebsd || openbsd || darwin\n// +build freebsd openbsd darwin\n\npackage mountinfo\n\nimport \"golang.org/x/sys/unix\"\n\n// parseMountTable returns information about mounted filesystems\nfunc parseMountTable(filter FilterFunc) ([]*Info, error) {\n\tcount, err := unix.Getfsstat(nil, unix.MNT_WAIT)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tentries := make([]unix.Statfs_t, count)\n\t_, err = unix.Getfsstat(entries, unix.MNT_WAIT)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar out []*Info\n\tfor _, entry := range entries {\n\t\tvar skip, stop bool\n\t\tmountinfo := getMountinfo(&entry)\n\n\t\tif filter != nil {\n\t\t\t// filter out entries we're not interested in\n\t\t\tskip, stop = filter(mountinfo)\n\t\t\tif skip {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\n\t\tout = append(out, mountinfo)\n\t\tif stop {\n\t\t\tbreak\n\t\t}\n\t}\n\treturn out, nil\n}\n\nfunc mounted(path string) (bool, error) {\n\tpath, err := normalizePath(path)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\t// Fast path: compare st.st_dev fields.\n\t// This should always work for FreeBSD and OpenBSD.\n\tmounted, err := mountedByStat(path)\n\tif err == nil {\n\t\treturn mounted, nil\n\t}\n\n\t// Fallback to parsing mountinfo\n\treturn mountedByMountinfo(path)\n}\n"
  },
  {
    "path": "vendor/github.com/moby/sys/mountinfo/mountinfo_filters.go",
    "content": "package mountinfo\n\nimport \"strings\"\n\n// FilterFunc is a type defining a callback function for GetMount(),\n// used to filter out mountinfo entries we're not interested in,\n// and/or stop further processing if we found what we wanted.\n//\n// It takes a pointer to the Info struct (fully populated with all available\n// fields on the GOOS platform), and returns two booleans:\n//\n// skip: true if the entry should be skipped;\n//\n// stop: true if parsing should be stopped after the entry.\ntype FilterFunc func(*Info) (skip, stop bool)\n\n// PrefixFilter discards all entries whose mount points do not start with, or\n// are equal to the path specified in prefix. The prefix path must be absolute,\n// have all symlinks resolved, and cleaned (i.e. no extra slashes or dots).\n//\n// PrefixFilter treats prefix as a path, not a partial prefix, which means that\n// given \"/foo\", \"/foo/bar\" and \"/foobar\" entries, PrefixFilter(\"/foo\") returns\n// \"/foo\" and \"/foo/bar\", and discards \"/foobar\".\nfunc PrefixFilter(prefix string) FilterFunc {\n\treturn func(m *Info) (bool, bool) {\n\t\tskip := !strings.HasPrefix(m.Mountpoint+\"/\", prefix+\"/\")\n\t\treturn skip, false\n\t}\n}\n\n// SingleEntryFilter looks for a specific entry.\nfunc SingleEntryFilter(mp string) FilterFunc {\n\treturn func(m *Info) (bool, bool) {\n\t\tif m.Mountpoint == mp {\n\t\t\treturn false, true // don't skip, stop now\n\t\t}\n\t\treturn true, false // skip, keep going\n\t}\n}\n\n// ParentsFilter returns all entries whose mount points\n// can be parents of a path specified, discarding others.\n//\n// For example, given /var/lib/docker/something, entries\n// like /var/lib/docker, /var and / are returned.\nfunc ParentsFilter(path string) FilterFunc {\n\treturn func(m *Info) (bool, bool) {\n\t\tskip := !strings.HasPrefix(path, m.Mountpoint)\n\t\treturn skip, false\n\t}\n}\n\n// FSTypeFilter returns all entries that match provided fstype(s).\nfunc FSTypeFilter(fstype ...string) FilterFunc {\n\treturn func(m *Info) (bool, bool) {\n\t\tfor _, t := range fstype {\n\t\t\tif m.FSType == t {\n\t\t\t\treturn false, false // don't skip, keep going\n\t\t\t}\n\t\t}\n\t\treturn true, false // skip, keep going\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/moby/sys/mountinfo/mountinfo_freebsdlike.go",
    "content": "//go:build freebsd || darwin\n// +build freebsd darwin\n\npackage mountinfo\n\nimport \"golang.org/x/sys/unix\"\n\nfunc getMountinfo(entry *unix.Statfs_t) *Info {\n\treturn &Info{\n\t\tMountpoint: unix.ByteSliceToString(entry.Mntonname[:]),\n\t\tFSType:     unix.ByteSliceToString(entry.Fstypename[:]),\n\t\tSource:     unix.ByteSliceToString(entry.Mntfromname[:]),\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/moby/sys/mountinfo/mountinfo_linux.go",
    "content": "package mountinfo\n\nimport (\n\t\"bufio\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"runtime\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"golang.org/x/sys/unix\"\n)\n\n// GetMountsFromReader retrieves a list of mounts from the\n// reader provided, with an optional filter applied (use nil\n// for no filter). This can be useful in tests or benchmarks\n// that provide fake mountinfo data, or when a source other\n// than /proc/thread-self/mountinfo needs to be read from.\n//\n// This function is Linux-specific.\nfunc GetMountsFromReader(r io.Reader, filter FilterFunc) ([]*Info, error) {\n\ts := bufio.NewScanner(r)\n\tout := []*Info{}\n\tfor s.Scan() {\n\t\tvar err error\n\n\t\t/*\n\t\t   See http://man7.org/linux/man-pages/man5/proc.5.html\n\n\t\t   36 35 98:0 /mnt1 /mnt2 rw,noatime master:1 - ext3 /dev/root rw,errors=continue\n\t\t   (1)(2)(3)   (4)   (5)      (6)      (7)   (8) (9)   (10)         (11)\n\n\t\t   (1) mount ID:  unique identifier of the mount (may be reused after umount)\n\t\t   (2) parent ID:  ID of parent (or of self for the top of the mount tree)\n\t\t   (3) major:minor:  value of st_dev for files on filesystem\n\t\t   (4) root:  root of the mount within the filesystem\n\t\t   (5) mount point:  mount point relative to the process's root\n\t\t   (6) mount options:  per mount options\n\t\t   (7) optional fields:  zero or more fields of the form \"tag[:value]\"\n\t\t   (8) separator:  marks the end of the optional fields\n\t\t   (9) filesystem type:  name of filesystem of the form \"type[.subtype]\"\n\t\t   (10) mount source:  filesystem specific information or \"none\"\n\t\t   (11) super options:  per super block options\n\n\t\t   In other words, we have:\n\t\t    * 6 mandatory fields\t(1)..(6)\n\t\t    * 0 or more optional fields\t(7)\n\t\t    * a separator field\t\t(8)\n\t\t    * 3 mandatory fields\t(9)..(11)\n\t\t*/\n\n\t\ttext := s.Text()\n\t\tfields := strings.Split(text, \" \")\n\t\tnumFields := len(fields)\n\t\tif numFields < 10 {\n\t\t\t// should be at least 10 fields\n\t\t\treturn nil, fmt.Errorf(\"parsing '%s' failed: not enough fields (%d)\", text, numFields)\n\t\t}\n\n\t\t// separator field\n\t\tsepIdx := numFields - 4\n\t\t// In Linux <= 3.9 mounting a cifs with spaces in a share\n\t\t// name (like \"//srv/My Docs\") _may_ end up having a space\n\t\t// in the last field of mountinfo (like \"unc=//serv/My Docs\").\n\t\t// Since kernel 3.10-rc1, cifs option \"unc=\" is ignored,\n\t\t// so spaces should not appear.\n\t\t//\n\t\t// Check for a separator, and work around the spaces bug\n\t\tfor fields[sepIdx] != \"-\" {\n\t\t\tsepIdx--\n\t\t\tif sepIdx == 5 {\n\t\t\t\treturn nil, fmt.Errorf(\"parsing '%s' failed: missing - separator\", text)\n\t\t\t}\n\t\t}\n\n\t\tp := &Info{}\n\n\t\tp.Mountpoint, err = unescape(fields[4])\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"parsing '%s' failed: mount point: %w\", fields[4], err)\n\t\t}\n\t\tp.FSType, err = unescape(fields[sepIdx+1])\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"parsing '%s' failed: fstype: %w\", fields[sepIdx+1], err)\n\t\t}\n\t\tp.Source, err = unescape(fields[sepIdx+2])\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"parsing '%s' failed: source: %w\", fields[sepIdx+2], err)\n\t\t}\n\t\tp.VFSOptions = fields[sepIdx+3]\n\n\t\t// ignore any numbers parsing errors, as there should not be any\n\t\tp.ID, _ = strconv.Atoi(fields[0])\n\t\tp.Parent, _ = strconv.Atoi(fields[1])\n\t\tmm := strings.SplitN(fields[2], \":\", 3)\n\t\tif len(mm) != 2 {\n\t\t\treturn nil, fmt.Errorf(\"parsing '%s' failed: unexpected major:minor pair %s\", text, mm)\n\t\t}\n\t\tp.Major, _ = strconv.Atoi(mm[0])\n\t\tp.Minor, _ = strconv.Atoi(mm[1])\n\n\t\tp.Root, err = unescape(fields[3])\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"parsing '%s' failed: root: %w\", fields[3], err)\n\t\t}\n\n\t\tp.Options = fields[5]\n\n\t\t// zero or more optional fields\n\t\tp.Optional = strings.Join(fields[6:sepIdx], \" \")\n\n\t\t// Run the filter after parsing all fields.\n\t\tvar skip, stop bool\n\t\tif filter != nil {\n\t\t\tskip, stop = filter(p)\n\t\t\tif skip {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\n\t\tout = append(out, p)\n\t\tif stop {\n\t\t\tbreak\n\t\t}\n\t}\n\tif err := s.Err(); err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nvar (\n\thaveProcThreadSelf     bool\n\thaveProcThreadSelfOnce sync.Once\n)\n\nfunc parseMountTable(filter FilterFunc) (_ []*Info, err error) {\n\thaveProcThreadSelfOnce.Do(func() {\n\t\t_, err := os.Stat(\"/proc/thread-self/mountinfo\")\n\t\thaveProcThreadSelf = err == nil\n\t})\n\n\t// We need to lock ourselves to the current OS thread in order to make sure\n\t// that the thread referenced by /proc/thread-self stays alive until we\n\t// finish parsing the file.\n\truntime.LockOSThread()\n\tdefer runtime.UnlockOSThread()\n\n\tvar f *os.File\n\tif haveProcThreadSelf {\n\t\tf, err = os.Open(\"/proc/thread-self/mountinfo\")\n\t} else {\n\t\t// On pre-3.17 kernels (such as CentOS 7), we don't have\n\t\t// /proc/thread-self/ so we need to manually construct\n\t\t// /proc/self/task/<tid>/ as a fallback.\n\t\tf, err = os.Open(\"/proc/self/task/\" + strconv.Itoa(unix.Gettid()) + \"/mountinfo\")\n\t\tif os.IsNotExist(err) {\n\t\t\t// If /proc/self/task/... failed, it means that our active pid\n\t\t\t// namespace doesn't match the pid namespace of the /proc mount. In\n\t\t\t// this case we just have to make do with /proc/self, since there\n\t\t\t// is no other way of figuring out our tid in a parent pid\n\t\t\t// namespace on pre-3.17 kernels.\n\t\t\tf, err = os.Open(\"/proc/self/mountinfo\")\n\t\t}\n\t}\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer f.Close()\n\n\treturn GetMountsFromReader(f, filter)\n}\n\n// PidMountInfo retrieves the list of mounts from a given process' mount\n// namespace. Unless there is a need to get mounts from a mount namespace\n// different from that of a calling process, use GetMounts.\n//\n// This function is Linux-specific.\n//\n// Deprecated: this will be removed before v1; use GetMountsFromReader with\n// opened /proc/<pid>/mountinfo as an argument instead.\nfunc PidMountInfo(pid int) ([]*Info, error) {\n\tf, err := os.Open(fmt.Sprintf(\"/proc/%d/mountinfo\", pid))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer f.Close()\n\n\treturn GetMountsFromReader(f, nil)\n}\n\n// A few specific characters in mountinfo path entries (root and mountpoint)\n// are escaped using a backslash followed by a character's ascii code in octal.\n//\n//\tspace              -- as \\040\n//\ttab (aka \\t)       -- as \\011\n//\tnewline (aka \\n)   -- as \\012\n//\tbackslash (aka \\\\) -- as \\134\n//\n// This function converts path from mountinfo back, i.e. it unescapes the above sequences.\nfunc unescape(path string) (string, error) {\n\t// try to avoid copying\n\tif strings.IndexByte(path, '\\\\') == -1 {\n\t\treturn path, nil\n\t}\n\n\t// The following code is UTF-8 transparent as it only looks for some\n\t// specific characters (backslash and 0..7) with values < utf8.RuneSelf,\n\t// and everything else is passed through as is.\n\tbuf := make([]byte, len(path))\n\tbufLen := 0\n\tfor i := 0; i < len(path); i++ {\n\t\tif path[i] != '\\\\' {\n\t\t\tbuf[bufLen] = path[i]\n\t\t\tbufLen++\n\t\t\tcontinue\n\t\t}\n\t\ts := path[i:]\n\t\tif len(s) < 4 {\n\t\t\t// too short\n\t\t\treturn \"\", fmt.Errorf(\"bad escape sequence %q: too short\", s)\n\t\t}\n\t\tc := s[1]\n\t\tswitch c {\n\t\tcase '0', '1', '2', '3', '4', '5', '6', '7':\n\t\t\tv := c - '0'\n\t\t\tfor j := 2; j < 4; j++ { // one digit already; two more\n\t\t\t\tif s[j] < '0' || s[j] > '7' {\n\t\t\t\t\treturn \"\", fmt.Errorf(\"bad escape sequence %q: not a digit\", s[:3])\n\t\t\t\t}\n\t\t\t\tx := s[j] - '0'\n\t\t\t\tv = (v << 3) | x\n\t\t\t}\n\t\t\tif v > 255 {\n\t\t\t\treturn \"\", fmt.Errorf(\"bad escape sequence %q: out of range\" + s[:3])\n\t\t\t}\n\t\t\tbuf[bufLen] = v\n\t\t\tbufLen++\n\t\t\ti += 3\n\t\t\tcontinue\n\t\tdefault:\n\t\t\treturn \"\", fmt.Errorf(\"bad escape sequence %q: not a digit\" + s[:3])\n\n\t\t}\n\t}\n\n\treturn string(buf[:bufLen]), nil\n}\n"
  },
  {
    "path": "vendor/github.com/moby/sys/mountinfo/mountinfo_openbsd.go",
    "content": "package mountinfo\n\nimport \"golang.org/x/sys/unix\"\n\nfunc getMountinfo(entry *unix.Statfs_t) *Info {\n\treturn &Info{\n\t\tMountpoint: unix.ByteSliceToString(entry.F_mntonname[:]),\n\t\tFSType:     unix.ByteSliceToString(entry.F_fstypename[:]),\n\t\tSource:     unix.ByteSliceToString(entry.F_mntfromname[:]),\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/moby/sys/mountinfo/mountinfo_unsupported.go",
    "content": "//go:build !windows && !linux && !freebsd && !openbsd && !darwin\n// +build !windows,!linux,!freebsd,!openbsd,!darwin\n\npackage mountinfo\n\nimport (\n\t\"fmt\"\n\t\"runtime\"\n)\n\nvar errNotImplemented = fmt.Errorf(\"not implemented on %s/%s\", runtime.GOOS, runtime.GOARCH)\n\nfunc parseMountTable(_ FilterFunc) ([]*Info, error) {\n\treturn nil, errNotImplemented\n}\n\nfunc mounted(path string) (bool, error) {\n\treturn false, errNotImplemented\n}\n"
  },
  {
    "path": "vendor/github.com/moby/sys/mountinfo/mountinfo_windows.go",
    "content": "package mountinfo\n\nfunc parseMountTable(_ FilterFunc) ([]*Info, error) {\n\t// Do NOT return an error!\n\treturn nil, nil\n}\n\nfunc mounted(_ string) (bool, error) {\n\treturn false, nil\n}\n"
  },
  {
    "path": "vendor/github.com/moby/sys/reexec/LICENSE",
    "content": "\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "vendor/github.com/moby/sys/reexec/reexec.go",
    "content": "// Package reexec facilitates the busybox style reexec of a binary.\n//\n// Handlers can be registered with a name and the argv 0 of the exec of\n// the binary will be used to find and execute custom init paths.\n//\n// It is used to work around forking limitations when using Go.\npackage reexec\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"os/exec\"\n\t\"path/filepath\"\n\t\"runtime\"\n)\n\nvar registeredInitializers = make(map[string]func())\n\n// Register adds an initialization func under the specified name. It panics\n// if the given name is already registered.\nfunc Register(name string, initializer func()) {\n\tif _, exists := registeredInitializers[name]; exists {\n\t\tpanic(fmt.Sprintf(\"reexec func already registered under name %q\", name))\n\t}\n\n\tregisteredInitializers[name] = initializer\n}\n\n// Init is called as the first part of the exec process and returns true if an\n// initialization function was called.\nfunc Init() bool {\n\tif initializer, ok := registeredInitializers[os.Args[0]]; ok {\n\t\tinitializer()\n\t\treturn true\n\t}\n\treturn false\n}\n\n// Command returns an [*exec.Cmd] with its Path set to the path of the current\n// binary using the result of [Self].\n//\n// On Linux, the Pdeathsig of [*exec.Cmd.SysProcAttr] is set to SIGTERM.\n// This signal is sent to the process when the OS thread that created\n// the process dies.\n//\n// It is the caller's responsibility to ensure that the creating thread is\n// not terminated prematurely. See https://go.dev/issue/27505 for more details.\nfunc Command(args ...string) *exec.Cmd {\n\treturn command(args...)\n}\n\n// Self returns the path to the current process's binary.\n//\n// On Linux, it returns \"/proc/self/exe\", which provides the in-memory version\n// of the current binary. This makes it safe to delete or replace the on-disk\n// binary (os.Args[0]).\n//\n// On Other platforms, it attempts to look up the absolute path for os.Args[0],\n// or otherwise returns os.Args[0] as-is. For example if current binary is\n// \"my-binary\" at \"/usr/bin/\" (or \"my-binary.exe\" at \"C:\\\" on Windows),\n// then it returns \"/usr/bin/my-binary\" and \"C:\\my-binary.exe\" respectively.\nfunc Self() string {\n\tif runtime.GOOS == \"linux\" {\n\t\treturn \"/proc/self/exe\"\n\t}\n\treturn naiveSelf()\n}\n\nfunc naiveSelf() string {\n\tname := os.Args[0]\n\tif filepath.Base(name) == name {\n\t\tif lp, err := exec.LookPath(name); err == nil {\n\t\t\treturn lp\n\t\t}\n\t}\n\t// handle conversion of relative paths to absolute\n\tif absName, err := filepath.Abs(name); err == nil {\n\t\treturn absName\n\t}\n\t// if we couldn't get absolute name, return original\n\t// (NOTE: Go only errors on Abs() if os.Getwd fails)\n\treturn name\n}\n"
  },
  {
    "path": "vendor/github.com/moby/sys/reexec/reexec_linux.go",
    "content": "package reexec\n\nimport (\n\t\"os/exec\"\n\t\"syscall\"\n)\n\nfunc command(args ...string) *exec.Cmd {\n\treturn &exec.Cmd{\n\t\tPath: Self(),\n\t\tArgs: args,\n\t\tSysProcAttr: &syscall.SysProcAttr{\n\t\t\tPdeathsig: syscall.SIGTERM,\n\t\t},\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/moby/sys/reexec/reexec_other.go",
    "content": "//go:build !linux\n\npackage reexec\n\nimport (\n\t\"os/exec\"\n)\n\nfunc command(args ...string) *exec.Cmd {\n\treturn &exec.Cmd{\n\t\tPath: Self(),\n\t\tArgs: args,\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/moby/sys/symlink/LICENSE",
    "content": "\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "vendor/github.com/moby/sys/symlink/LICENSE.APACHE",
    "content": "\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   Copyright 2014-2018 Docker, Inc.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "vendor/github.com/moby/sys/symlink/LICENSE.BSD",
    "content": "Copyright (c) 2014-2018 The Docker & Go Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n   * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n   * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n   * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
  },
  {
    "path": "vendor/github.com/moby/sys/symlink/doc.go",
    "content": "// Package symlink implements [FollowSymlinkInScope] which is an extension\n// of [path/filepath.EvalSymlinks], as well as a Windows long-path aware\n// version of [path/filepath.EvalSymlinks] from the Go standard library.\n//\n// The code from [path/filepath.EvalSymlinks] has been adapted in fs.go.\n// Read the [LICENSE.BSD] file that governs fs.go and [LICENSE.APACHE] for\n// fs_unix_test.go.\n//\n// [LICENSE.APACHE]: https://github.com/moby/sys/blob/symlink/v0.2.0/symlink/LICENSE.APACHE\n// [LICENSE.BSD]: https://github.com/moby/sys/blob/symlink/v0.2.0/symlink/LICENSE.APACHE\npackage symlink\n"
  },
  {
    "path": "vendor/github.com/moby/sys/symlink/fs.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE.BSD file.\n\n// This code is a modified version of path/filepath/symlink.go from the Go\n// standard library in [docker@fa3ec89], which was based on [go1.3.3],\n// with Windows implementatinos being added in [docker@9b648df].\n//\n// [docker@fa3ec89]: https://github.com/moby/moby/commit/fa3ec89515431ce425f924c8a9a804d5cb18382f\n// [go1.3.3]: https://github.com/golang/go/blob/go1.3.3/src/pkg/path/filepath/symlink.go\n// [docker@9b648df]: https://github.com/moby/moby/commit/9b648dfac6453de5944ee4bb749115d85a253a05\n\npackage symlink\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n)\n\n// FollowSymlinkInScope evaluates symbolic links in \"path\" within a scope \"root\"\n// and returns a result guaranteed to be contained within the scope \"root\" at\n// the time of the call. It returns an error of either \"path\" or \"root\" cannot\n// be converted to an absolute path.\n//\n// Symbolic links in \"root\" are not evaluated and left as-is. Errors encountered\n// while attempting to evaluate symlinks in path are returned, but non-existing\n// paths are valid and do not constitute an error. \"path\" must contain \"root\"\n// as a prefix, or else an error is returned. Trying to break out from \"root\"\n// does not constitute an error, instead resolves the path within \"root\".\n//\n// Example:\n//\n//\t// If \"/foo/bar\" is a symbolic link to \"/outside\":\n//\tFollowSymlinkInScope(\"/foo/bar\", \"/foo\") // Returns \"/foo/outside\" instead of \"/outside\"\n//\n// IMPORTANT: It is the caller's responsibility to call FollowSymlinkInScope\n// after relevant symbolic links are created to avoid Time-of-check Time-of-use\n// (TOCTOU) race conditions ([CWE-367]). No additional symbolic links must be\n// created after evaluating, as those could potentially make a previously-safe\n// path unsafe.\n//\n// For example, if \"/foo/bar\" does not exist, FollowSymlinkInScope(\"/foo/bar\", \"/foo\")\n// evaluates the path to \"/foo/bar\". If one makes \"/foo/bar\" a symbolic link to\n// \"/baz\" subsequently, then \"/foo/bar\" should no longer be considered safely\n// contained in \"/foo\".\n//\n// [CWE-367]: https://cwe.mitre.org/data/definitions/367.html\nfunc FollowSymlinkInScope(path, root string) (string, error) {\n\tpath, err := filepath.Abs(filepath.FromSlash(path))\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\troot, err = filepath.Abs(filepath.FromSlash(root))\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\treturn evalSymlinksInScope(path, root)\n}\n\n// evalSymlinksInScope evaluates symbolic links in \"path\" within a scope \"root\"\n// and returns a result guaranteed to be contained within the scope \"root\" at\n// the time of the call. Refer to [FollowSymlinkInScope] for details.\nfunc evalSymlinksInScope(path, root string) (string, error) {\n\troot = filepath.Clean(root)\n\tif path == root {\n\t\treturn path, nil\n\t}\n\tif !strings.HasPrefix(path, root) {\n\t\treturn \"\", errors.New(\"evalSymlinksInScope: \" + path + \" is not in \" + root)\n\t}\n\tconst maxIter = 255\n\toriginalPath := path\n\t// given root of \"/a\" and path of \"/a/b/../../c\" we want path to be \"/b/../../c\"\n\tpath = path[len(root):]\n\tif root == string(filepath.Separator) {\n\t\tpath = string(filepath.Separator) + path\n\t}\n\tif !strings.HasPrefix(path, string(filepath.Separator)) {\n\t\treturn \"\", errors.New(\"evalSymlinksInScope: \" + path + \" is not in \" + root)\n\t}\n\tpath = filepath.Clean(path)\n\t// consume path by taking each frontmost path element,\n\t// expanding it if it's a symlink, and appending it to b\n\tvar b bytes.Buffer\n\t// b here will always be considered to be the \"current absolute path inside\n\t// root\" when we append paths to it, we also append a slash and use\n\t// filepath.Clean after the loop to trim the trailing slash\n\tfor n := 0; path != \"\"; n++ {\n\t\tif n > maxIter {\n\t\t\treturn \"\", errors.New(\"evalSymlinksInScope: too many links in \" + originalPath)\n\t\t}\n\n\t\t// find next path component, p\n\t\ti := strings.IndexRune(path, filepath.Separator)\n\t\tvar p string\n\t\tif i == -1 {\n\t\t\tp, path = path, \"\"\n\t\t} else {\n\t\t\tp, path = path[:i], path[i+1:]\n\t\t}\n\n\t\tif p == \"\" {\n\t\t\tcontinue\n\t\t}\n\n\t\t// this takes a b.String() like \"b/../\" and a p like \"c\" and turns it\n\t\t// into \"/b/../c\" which then gets filepath.Cleaned into \"/c\" and then\n\t\t// root gets prepended and we Clean again (to remove any trailing slash\n\t\t// if the first Clean gave us just \"/\")\n\t\tcleanP := filepath.Clean(string(filepath.Separator) + b.String() + p)\n\t\tif isDriveOrRoot(cleanP) {\n\t\t\t// never Lstat \"/\" itself, or drive letters on Windows\n\t\t\tb.Reset()\n\t\t\tcontinue\n\t\t}\n\t\tfullP := filepath.Clean(root + cleanP)\n\n\t\tfi, err := os.Lstat(fullP)\n\t\tif os.IsNotExist(err) {\n\t\t\t// if p does not exist, accept it\n\t\t\tb.WriteString(p)\n\t\t\tb.WriteRune(filepath.Separator)\n\t\t\tcontinue\n\t\t}\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t\tif fi.Mode()&os.ModeSymlink == 0 {\n\t\t\tb.WriteString(p)\n\t\t\tb.WriteRune(filepath.Separator)\n\t\t\tcontinue\n\t\t}\n\n\t\t// it's a symlink, put it at the front of path\n\t\tdest, err := os.Readlink(fullP)\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t\tif isAbs(dest) {\n\t\t\tb.Reset()\n\t\t}\n\t\tpath = dest + string(filepath.Separator) + path\n\t}\n\n\t// see note above on \"fullP := ...\" for why this is double-cleaned and\n\t// what's happening here\n\treturn filepath.Clean(root + filepath.Clean(string(filepath.Separator)+b.String())), nil\n}\n\n// EvalSymlinks is a modified version of [path/filepath.EvalSymlinks] from\n// the Go standard library with support for Windows long paths (paths prepended\n// with \"\\\\?\\\"). On non-Windows platforms, it's an alias for [path/filepath.EvalSymlinks].\n//\n// EvalSymlinks returns the path name after the evaluation of any symbolic\n// links. If path is relative, the result will be relative to the current\n// directory, unless one of the components is an absolute symbolic link.\n//\n// EvalSymlinks calls [path/filepath.Clean] on the result.\nfunc EvalSymlinks(path string) (string, error) {\n\treturn evalSymlinks(path)\n}\n"
  },
  {
    "path": "vendor/github.com/moby/sys/symlink/fs_unix.go",
    "content": "//go:build !windows\n// +build !windows\n\npackage symlink\n\nimport (\n\t\"path/filepath\"\n)\n\nfunc evalSymlinks(path string) (string, error) {\n\treturn filepath.EvalSymlinks(path)\n}\n\nfunc isDriveOrRoot(p string) bool {\n\treturn p == string(filepath.Separator)\n}\n\nvar isAbs = filepath.IsAbs\n"
  },
  {
    "path": "vendor/github.com/moby/sys/symlink/fs_windows.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE.BSD file.\n\n// This code is a modified version of [path/filepath/symlink_windows.go]\n// and [path/filepath/symlink.go] from the Go 1.4.2 standard library, and\n// added in [docker@9b648df].\n//\n// [path/filepath/symlink_windows.go]: https://github.com/golang/go/blob/go1.4.2/src/path/filepath/symlink_windows.go\n// [path/filepath/symlink.go]: https://github.com/golang/go/blob/go1.4.2/src/path/filepath/symlink.go\n// [docker@9b648df]: https://github.com/moby/moby/commit/9b648dfac6453de5944ee4bb749115d85a253a05\n\npackage symlink\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"golang.org/x/sys/windows\"\n)\n\nfunc toShort(path string) (string, error) {\n\tp, err := windows.UTF16FromString(path)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tb := p // GetShortPathName says we can reuse buffer\n\tn, err := windows.GetShortPathName(&p[0], &b[0], uint32(len(b)))\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tif n > uint32(len(b)) {\n\t\tb = make([]uint16, n)\n\t\tif _, err = windows.GetShortPathName(&p[0], &b[0], uint32(len(b))); err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t}\n\treturn windows.UTF16ToString(b), nil\n}\n\nfunc toLong(path string) (string, error) {\n\tp, err := windows.UTF16FromString(path)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tb := p // GetLongPathName says we can reuse buffer\n\tn, err := windows.GetLongPathName(&p[0], &b[0], uint32(len(b)))\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tif n > uint32(len(b)) {\n\t\tb = make([]uint16, n)\n\t\tn, err = windows.GetLongPathName(&p[0], &b[0], uint32(len(b)))\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t}\n\tb = b[:n]\n\treturn windows.UTF16ToString(b), nil\n}\n\nfunc evalSymlinks(path string) (string, error) {\n\tpath, err := walkSymlinks(path)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tp, err := toShort(path)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tp, err = toLong(p)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\t// windows.GetLongPathName does not change the case of the drive letter,\n\t// but the result of EvalSymlinks must be unique, so we have\n\t// EvalSymlinks(`c:\\a`) == EvalSymlinks(`C:\\a`).\n\t// Make drive letter upper case.\n\tif len(p) >= 2 && p[1] == ':' && 'a' <= p[0] && p[0] <= 'z' {\n\t\tp = string(p[0]+'A'-'a') + p[1:]\n\t} else if len(p) >= 6 && p[5] == ':' && 'a' <= p[4] && p[4] <= 'z' {\n\t\tp = p[:3] + string(p[4]+'A'-'a') + p[5:]\n\t}\n\treturn filepath.Clean(p), nil\n}\n\nconst (\n\tutf8RuneSelf   = 0x80\n\tlongPathPrefix = `\\\\?\\`\n)\n\nfunc walkSymlinks(path string) (string, error) {\n\tconst maxIter = 255\n\toriginalPath := path\n\t// consume path by taking each frontmost path element,\n\t// expanding it if it's a symlink, and appending it to b\n\tvar b bytes.Buffer\n\tfor n := 0; path != \"\"; n++ {\n\t\tif n > maxIter {\n\t\t\treturn \"\", errors.New(\"too many links in \" + originalPath)\n\t\t}\n\n\t\t// A path beginning with `\\\\?\\` represents the root, so automatically\n\t\t// skip that part and begin processing the next segment.\n\t\tif strings.HasPrefix(path, longPathPrefix) {\n\t\t\tb.WriteString(longPathPrefix)\n\t\t\tpath = path[4:]\n\t\t\tcontinue\n\t\t}\n\n\t\t// find next path component, p\n\t\ti := -1\n\t\tfor j, c := range path {\n\t\t\tif c < utf8RuneSelf && os.IsPathSeparator(uint8(c)) {\n\t\t\t\ti = j\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tvar p string\n\t\tif i == -1 {\n\t\t\tp, path = path, \"\"\n\t\t} else {\n\t\t\tp, path = path[:i], path[i+1:]\n\t\t}\n\n\t\tif p == \"\" {\n\t\t\tif b.Len() == 0 {\n\t\t\t\t// must be absolute path\n\t\t\t\tb.WriteRune(filepath.Separator)\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\t// If this is the first segment after the long path prefix, accept the\n\t\t// current segment as a volume root or UNC share and move on to the next.\n\t\tif b.String() == longPathPrefix {\n\t\t\tb.WriteString(p)\n\t\t\tb.WriteRune(filepath.Separator)\n\t\t\tcontinue\n\t\t}\n\n\t\tfi, err := os.Lstat(b.String() + p)\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t\tif fi.Mode()&os.ModeSymlink == 0 {\n\t\t\tb.WriteString(p)\n\t\t\tif path != \"\" || (b.Len() == 2 && len(p) == 2 && p[1] == ':') {\n\t\t\t\tb.WriteRune(filepath.Separator)\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\t// it's a symlink, put it at the front of path\n\t\tdest, err := os.Readlink(b.String() + p)\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t\tif isAbs(dest) {\n\t\t\tb.Reset()\n\t\t}\n\t\tpath = dest + string(filepath.Separator) + path\n\t}\n\treturn filepath.Clean(b.String()), nil\n}\n\nfunc isDriveOrRoot(p string) bool {\n\tif p == string(filepath.Separator) {\n\t\treturn true\n\t}\n\n\tlength := len(p)\n\tif length >= 2 {\n\t\tif p[length-1] == ':' && (('a' <= p[length-2] && p[length-2] <= 'z') || ('A' <= p[length-2] && p[length-2] <= 'Z')) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// isAbs is a platform-specific wrapper for filepath.IsAbs. On Windows,\n// golang filepath.IsAbs does not consider a path \\windows\\system32 as absolute\n// as it doesn't start with a drive-letter/colon combination. However, in\n// docker we need to verify things such as WORKDIR /windows/system32 in\n// a Dockerfile (which gets translated to \\windows\\system32 when being processed\n// by the daemon. This SHOULD be treated as absolute from a docker processing\n// perspective.\nfunc isAbs(path string) bool {\n\tif filepath.IsAbs(path) || strings.HasPrefix(path, string(os.PathSeparator)) {\n\t\treturn true\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "vendor/github.com/opencontainers/cgroups/LICENSE",
    "content": "                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"{}\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright {yyyy} {name of copyright owner}\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "vendor/github.com/opencontainers/cgroups/devices/config/device.go",
    "content": "package config\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"strconv\"\n)\n\nconst (\n\tWildcard = -1\n)\n\ntype Device struct {\n\tRule\n\n\t// Path to the device.\n\tPath string `json:\"path\"`\n\n\t// FileMode permission bits for the device.\n\tFileMode os.FileMode `json:\"file_mode\"`\n\n\t// Uid of the device.\n\tUid uint32 `json:\"uid,omitempty\"` //nolint:revive // Suppress \"var-naming: struct field Uid should be UID\".\n\n\t// Gid of the device.\n\tGid uint32 `json:\"gid,omitempty\"` //nolint:revive // Suppress \"var-naming: struct field Gid should be GID\".\n}\n\n// Permissions is a cgroupv1-style string to represent device access. It\n// has to be a string for backward compatibility reasons, hence why it has\n// methods to do set operations.\ntype Permissions string\n\nconst (\n\tdeviceRead uint = (1 << iota)\n\tdeviceWrite\n\tdeviceMknod\n)\n\nfunc (p Permissions) toSet() uint {\n\tvar set uint\n\tfor _, perm := range p {\n\t\tswitch perm {\n\t\tcase 'r':\n\t\t\tset |= deviceRead\n\t\tcase 'w':\n\t\t\tset |= deviceWrite\n\t\tcase 'm':\n\t\t\tset |= deviceMknod\n\t\t}\n\t}\n\treturn set\n}\n\nfunc fromSet(set uint) Permissions {\n\tvar perm string\n\tif set&deviceRead == deviceRead {\n\t\tperm += \"r\"\n\t}\n\tif set&deviceWrite == deviceWrite {\n\t\tperm += \"w\"\n\t}\n\tif set&deviceMknod == deviceMknod {\n\t\tperm += \"m\"\n\t}\n\treturn Permissions(perm)\n}\n\n// Union returns the union of the two sets of Permissions.\nfunc (p Permissions) Union(o Permissions) Permissions {\n\tlhs := p.toSet()\n\trhs := o.toSet()\n\treturn fromSet(lhs | rhs)\n}\n\n// Difference returns the set difference of the two sets of Permissions.\n// In set notation, A.Difference(B) gives you A\\B.\nfunc (p Permissions) Difference(o Permissions) Permissions {\n\tlhs := p.toSet()\n\trhs := o.toSet()\n\treturn fromSet(lhs &^ rhs)\n}\n\n// Intersection computes the intersection of the two sets of Permissions.\nfunc (p Permissions) Intersection(o Permissions) Permissions {\n\tlhs := p.toSet()\n\trhs := o.toSet()\n\treturn fromSet(lhs & rhs)\n}\n\n// IsEmpty returns whether the set of permissions in a Permissions is\n// empty.\nfunc (p Permissions) IsEmpty() bool {\n\treturn p == Permissions(\"\")\n}\n\n// IsValid returns whether the set of permissions is a subset of valid\n// permissions (namely, {r,w,m}).\nfunc (p Permissions) IsValid() bool {\n\treturn p == fromSet(p.toSet())\n}\n\ntype Type rune\n\nconst (\n\tWildcardDevice Type = 'a'\n\tBlockDevice    Type = 'b'\n\tCharDevice     Type = 'c' // or 'u'\n\tFifoDevice     Type = 'p'\n)\n\nfunc (t Type) IsValid() bool {\n\tswitch t {\n\tcase WildcardDevice, BlockDevice, CharDevice, FifoDevice:\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\nfunc (t Type) CanMknod() bool {\n\tswitch t {\n\tcase BlockDevice, CharDevice, FifoDevice:\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\nfunc (t Type) CanCgroup() bool {\n\tswitch t {\n\tcase WildcardDevice, BlockDevice, CharDevice:\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\ntype Rule struct {\n\t// Type of device ('c' for char, 'b' for block). If set to 'a', this rule\n\t// acts as a wildcard and all fields other than Allow are ignored.\n\tType Type `json:\"type\"`\n\n\t// Major is the device's major number.\n\tMajor int64 `json:\"major\"`\n\n\t// Minor is the device's minor number.\n\tMinor int64 `json:\"minor\"`\n\n\t// Permissions is the set of permissions that this rule applies to (in the\n\t// cgroupv1 format -- any combination of \"rwm\").\n\tPermissions Permissions `json:\"permissions\"`\n\n\t// Allow specifies whether this rule is allowed.\n\tAllow bool `json:\"allow\"`\n}\n\nfunc (d *Rule) CgroupString() string {\n\tvar (\n\t\tmajor = strconv.FormatInt(d.Major, 10)\n\t\tminor = strconv.FormatInt(d.Minor, 10)\n\t)\n\tif d.Major == Wildcard {\n\t\tmajor = \"*\"\n\t}\n\tif d.Minor == Wildcard {\n\t\tminor = \"*\"\n\t}\n\treturn fmt.Sprintf(\"%c %s:%s %s\", d.Type, major, minor, d.Permissions)\n}\n\nfunc (d *Rule) Mkdev() (uint64, error) {\n\treturn mkDev(d)\n}\n"
  },
  {
    "path": "vendor/github.com/opencontainers/cgroups/devices/config/mknod_unix.go",
    "content": "package config\n\nimport (\n\t\"errors\"\n\n\t\"golang.org/x/sys/unix\"\n)\n\nfunc mkDev(d *Rule) (uint64, error) {\n\tif d.Major == Wildcard || d.Minor == Wildcard {\n\t\treturn 0, errors.New(\"cannot mkdev() device with wildcards\")\n\t}\n\treturn unix.Mkdev(uint32(d.Major), uint32(d.Minor)), nil\n}\n"
  },
  {
    "path": "vendor/github.com/opencontainers/runc/LICENSE",
    "content": "\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   Copyright 2014 Docker, Inc.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "vendor/github.com/opencontainers/runc/NOTICE",
    "content": "runc\n\nCopyright 2012-2015 Docker, Inc.\n\nThis product includes software developed at Docker, Inc. (http://www.docker.com).\n\nThe following is courtesy of our legal counsel:\n\n\nUse and transfer of Docker may be subject to certain restrictions by the\nUnited States and other governments.\nIt is your responsibility to ensure that your use and/or transfer does not\nviolate applicable laws.\n\nFor more information, please see http://www.bis.doc.gov\n\nSee also http://www.apache.org/dev/crypto.html and/or seek legal counsel.\n"
  },
  {
    "path": "vendor/github.com/opencontainers/runc/internal/linux/doc.go",
    "content": "// Package linux provides minimal wrappers around Linux system calls, primarily\n// to provide support for automatic EINTR-retries.\npackage linux\n"
  },
  {
    "path": "vendor/github.com/opencontainers/runc/internal/linux/eintr.go",
    "content": "package linux\n\nimport (\n\t\"errors\"\n\n\t\"golang.org/x/sys/unix\"\n)\n\n// retryOnEINTR takes a function that returns an error and calls it\n// until the error returned is not EINTR.\nfunc retryOnEINTR(fn func() error) error {\n\tfor {\n\t\terr := fn()\n\t\tif !errors.Is(err, unix.EINTR) {\n\t\t\treturn err\n\t\t}\n\t}\n}\n\n// retryOnEINTR2 is like retryOnEINTR, but it returns 2 values.\nfunc retryOnEINTR2[T any](fn func() (T, error)) (T, error) {\n\tfor {\n\t\tval, err := fn()\n\t\tif !errors.Is(err, unix.EINTR) {\n\t\t\treturn val, err\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/opencontainers/runc/internal/linux/linux.go",
    "content": "package linux\n\nimport (\n\t\"os\"\n\t\"unsafe\"\n\n\t\"golang.org/x/sys/unix\"\n)\n\n// Dup3 wraps [unix.Dup3].\nfunc Dup3(oldfd, newfd, flags int) error {\n\terr := retryOnEINTR(func() error {\n\t\treturn unix.Dup3(oldfd, newfd, flags)\n\t})\n\treturn os.NewSyscallError(\"dup3\", err)\n}\n\n// Exec wraps [unix.Exec].\nfunc Exec(cmd string, args []string, env []string) error {\n\terr := retryOnEINTR(func() error {\n\t\treturn unix.Exec(cmd, args, env)\n\t})\n\tif err != nil {\n\t\treturn &os.PathError{Op: \"exec\", Path: cmd, Err: err}\n\t}\n\treturn nil\n}\n\n// Getwd wraps [unix.Getwd].\nfunc Getwd() (wd string, err error) {\n\twd, err = retryOnEINTR2(unix.Getwd)\n\treturn wd, os.NewSyscallError(\"getwd\", err)\n}\n\n// Open wraps [unix.Open].\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tfd, err = retryOnEINTR2(func() (int, error) {\n\t\treturn unix.Open(path, mode, perm)\n\t})\n\tif err != nil {\n\t\treturn -1, &os.PathError{Op: \"open\", Path: path, Err: err}\n\t}\n\treturn fd, nil\n}\n\n// Openat wraps [unix.Openat].\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tfd, err = retryOnEINTR2(func() (int, error) {\n\t\treturn unix.Openat(dirfd, path, mode, perm)\n\t})\n\tif err != nil {\n\t\treturn -1, &os.PathError{Op: \"openat\", Path: path, Err: err}\n\t}\n\treturn fd, nil\n}\n\n// Recvfrom wraps [unix.Recvfrom].\nfunc Recvfrom(fd int, p []byte, flags int) (n int, from unix.Sockaddr, err error) {\n\terr = retryOnEINTR(func() error {\n\t\tn, from, err = unix.Recvfrom(fd, p, flags)\n\t\treturn err\n\t})\n\tif err != nil {\n\t\treturn 0, nil, os.NewSyscallError(\"recvfrom\", err)\n\t}\n\treturn n, from, err\n}\n\n// Sendmsg wraps [unix.Sendmsg].\nfunc Sendmsg(fd int, p, oob []byte, to unix.Sockaddr, flags int) error {\n\terr := retryOnEINTR(func() error {\n\t\treturn unix.Sendmsg(fd, p, oob, to, flags)\n\t})\n\treturn os.NewSyscallError(\"sendmsg\", err)\n}\n\n// SetMempolicy wraps set_mempolicy.\nfunc SetMempolicy(mode uint, mask *unix.CPUSet) error {\n\terr := retryOnEINTR(func() error {\n\t\t_, _, errno := unix.Syscall(unix.SYS_SET_MEMPOLICY, uintptr(mode), uintptr(unsafe.Pointer(mask)), unsafe.Sizeof(*mask)*8)\n\t\tif errno != 0 {\n\t\t\treturn errno\n\t\t}\n\t\treturn nil\n\t})\n\treturn os.NewSyscallError(\"set_mempolicy\", err)\n}\n\n// Readlinkat wraps [unix.Readlinkat].\nfunc Readlinkat(dir *os.File, path string) (string, error) {\n\tsize := 4096\n\tfor {\n\t\tlinkBuf := make([]byte, size)\n\t\tn, err := retryOnEINTR2(func() (int, error) {\n\t\t\treturn unix.Readlinkat(int(dir.Fd()), path, linkBuf)\n\t\t})\n\t\tif err != nil {\n\t\t\treturn \"\", &os.PathError{Op: \"readlinkat\", Path: dir.Name() + \"/\" + path, Err: err}\n\t\t}\n\t\tif n != size {\n\t\t\treturn string(linkBuf[:n]), nil\n\t\t}\n\t\t// Possible truncation, resize the buffer.\n\t\tsize *= 2\n\t}\n}\n\n// GetPtyPeer is a wrapper for ioctl(TIOCGPTPEER).\nfunc GetPtyPeer(ptyFd uintptr, unsafePeerPath string, flags int) (*os.File, error) {\n\t// Make sure O_NOCTTY is always set -- otherwise runc might accidentally\n\t// gain it as a controlling terminal. O_CLOEXEC also needs to be set to\n\t// make sure we don't leak the handle either.\n\tflags |= unix.O_NOCTTY | unix.O_CLOEXEC\n\n\t// There is no nice wrapper for this kind of ioctl in unix.\n\tpeerFd, _, errno := unix.Syscall(\n\t\tunix.SYS_IOCTL,\n\t\tptyFd,\n\t\tuintptr(unix.TIOCGPTPEER),\n\t\tuintptr(flags),\n\t)\n\tif errno != 0 {\n\t\treturn nil, os.NewSyscallError(\"ioctl TIOCGPTPEER\", errno)\n\t}\n\treturn os.NewFile(peerFd, unsafePeerPath), nil\n}\n"
  },
  {
    "path": "vendor/github.com/opencontainers/runc/internal/pathrs/doc.go",
    "content": "// SPDX-License-Identifier: Apache-2.0\n/*\n * Copyright (C) 2024-2025 Aleksa Sarai <cyphar@cyphar.com>\n * Copyright (C) 2024-2025 SUSE LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Package pathrs provides wrappers around filepath-securejoin to add the\n// minimum set of features needed from libpathrs that are not provided by\n// filepath-securejoin, with the eventual goal being that these can be used to\n// ease the transition by converting them stubs when enabling libpathrs builds.\npackage pathrs\n"
  },
  {
    "path": "vendor/github.com/opencontainers/runc/internal/pathrs/mkdirall.go",
    "content": "// SPDX-License-Identifier: Apache-2.0\n/*\n * Copyright (C) 2024-2025 Aleksa Sarai <cyphar@cyphar.com>\n * Copyright (C) 2024-2025 SUSE LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage pathrs\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n)\n\n// MkdirAllParentInRoot is like [MkdirAllInRoot] except that it only creates\n// the parent directory of the target path, returning the trailing component so\n// the caller has more flexibility around constructing the final inode.\n//\n// Callers need to be very careful operating on the trailing path, as trivial\n// mistakes like following symlinks can cause security bugs. Most people\n// should probably just use [MkdirAllInRoot] or [CreateInRoot].\nfunc MkdirAllParentInRoot(root, unsafePath string, mode os.FileMode) (*os.File, string, error) {\n\t// MkdirAllInRoot also does hallucinateUnsafePath, but we need to do it\n\t// here first because when we split unsafePath into (dir, file) components\n\t// we want to be doing so with the hallucinated path (so that trailing\n\t// dangling symlinks are treated correctly).\n\tunsafePath, err := hallucinateUnsafePath(root, unsafePath)\n\tif err != nil {\n\t\treturn nil, \"\", fmt.Errorf(\"failed to construct hallucinated target path: %w\", err)\n\t}\n\n\tdirPath, filename := filepath.Split(unsafePath)\n\tif filepath.Join(\"/\", filename) == \"/\" {\n\t\treturn nil, \"\", fmt.Errorf(\"create parent dir in root subpath %q has bad trailing component %q\", unsafePath, filename)\n\t}\n\n\tdirFd, err := MkdirAllInRoot(root, dirPath, mode)\n\treturn dirFd, filename, err\n}\n"
  },
  {
    "path": "vendor/github.com/opencontainers/runc/internal/pathrs/mkdirall_pathrslite.go",
    "content": "// SPDX-License-Identifier: Apache-2.0\n/*\n * Copyright (C) 2024-2025 Aleksa Sarai <cyphar@cyphar.com>\n * Copyright (C) 2024-2025 SUSE LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage pathrs\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\n\t\"github.com/cyphar/filepath-securejoin/pathrs-lite\"\n\t\"github.com/sirupsen/logrus\"\n\t\"golang.org/x/sys/unix\"\n)\n\n// MkdirAllInRoot attempts to make\n//\n//\tpath, _ := securejoin.SecureJoin(root, unsafePath)\n//\tos.MkdirAll(path, mode)\n//\tos.Open(path)\n//\n// safer against attacks where components in the path are changed between\n// SecureJoin returning and MkdirAll (or Open) being called. In particular, we\n// try to detect any symlink components in the path while we are doing the\n// MkdirAll.\n//\n// NOTE: If unsafePath is a subpath of root, we assume that you have already\n// called SecureJoin and so we use the provided path verbatim without resolving\n// any symlinks (this is done in a way that avoids symlink-exchange races).\n// This means that the path also must not contain \"..\" elements, otherwise an\n// error will occur.\n//\n// This uses (pathrs-lite).MkdirAllHandle under the hood, but it has special\n// handling if unsafePath has already been scoped within the rootfs (this is\n// needed for a lot of runc callers and fixing this would require reworking a\n// lot of path logic).\nfunc MkdirAllInRoot(root, unsafePath string, mode os.FileMode) (*os.File, error) {\n\tunsafePath, err := hallucinateUnsafePath(root, unsafePath)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to construct hallucinated target path: %w\", err)\n\t}\n\n\t// Check for any silly mode bits.\n\tif mode&^0o7777 != 0 {\n\t\treturn nil, fmt.Errorf(\"tried to include non-mode bits in MkdirAll mode: 0o%.3o\", mode)\n\t}\n\t// Linux (and thus os.MkdirAll) silently ignores the suid and sgid bits if\n\t// passed. While it would make sense to return an error in that case (since\n\t// the user has asked for a mode that won't be applied), for compatibility\n\t// reasons we have to ignore these bits.\n\tif ignoredBits := mode &^ 0o1777; ignoredBits != 0 {\n\t\tlogrus.Warnf(\"MkdirAll called with no-op mode bits that are ignored by Linux: 0o%.3o\", ignoredBits)\n\t\tmode &= 0o1777\n\t}\n\n\trootDir, err := os.OpenFile(root, unix.O_DIRECTORY|unix.O_CLOEXEC, 0)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"open root handle: %w\", err)\n\t}\n\tdefer rootDir.Close()\n\n\treturn retryEAGAIN(func() (*os.File, error) {\n\t\treturn pathrs.MkdirAllHandle(rootDir, unsafePath, mode)\n\t})\n}\n"
  },
  {
    "path": "vendor/github.com/opencontainers/runc/internal/pathrs/path.go",
    "content": "// SPDX-License-Identifier: Apache-2.0\n/*\n * Copyright (C) 2024-2025 Aleksa Sarai <cyphar@cyphar.com>\n * Copyright (C) 2024-2025 SUSE LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage pathrs\n\nimport (\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\tsecurejoin \"github.com/cyphar/filepath-securejoin\"\n)\n\n// IsLexicallyInRoot is shorthand for strings.HasPrefix(path+\"/\", root+\"/\"),\n// but properly handling the case where path or root have a \"/\" suffix.\n//\n// NOTE: The return value only make sense if the path is already mostly cleaned\n// (i.e., doesn't contain \"..\", \".\", nor unneeded \"/\"s).\nfunc IsLexicallyInRoot(root, path string) bool {\n\troot = strings.TrimRight(root, \"/\")\n\tpath = strings.TrimRight(path, \"/\")\n\treturn strings.HasPrefix(path+\"/\", root+\"/\")\n}\n\n// LexicallyCleanPath makes a path safe for use with filepath.Join. This is\n// done by not only cleaning the path, but also (if the path is relative)\n// adding a leading '/' and cleaning it (then removing the leading '/'). This\n// ensures that a path resulting from prepending another path will always\n// resolve to lexically be a subdirectory of the prefixed path. This is all\n// done lexically, so paths that include symlinks won't be safe as a result of\n// using CleanPath.\nfunc LexicallyCleanPath(path string) string {\n\t// Deal with empty strings nicely.\n\tif path == \"\" {\n\t\treturn \"\"\n\t}\n\n\t// Ensure that all paths are cleaned (especially problematic ones like\n\t// \"/../../../../../\" which can cause lots of issues).\n\n\tif filepath.IsAbs(path) {\n\t\treturn filepath.Clean(path)\n\t}\n\n\t// If the path isn't absolute, we need to do more processing to fix paths\n\t// such as \"../../../../<etc>/some/path\". We also shouldn't convert absolute\n\t// paths to relative ones.\n\tpath = filepath.Clean(string(os.PathSeparator) + path)\n\t// This can't fail, as (by definition) all paths are relative to root.\n\tpath, _ = filepath.Rel(string(os.PathSeparator), path)\n\n\treturn path\n}\n\n// LexicallyStripRoot returns the passed path, stripping the root path if it\n// was (lexicially) inside it. Note that both passed paths will always be\n// treated as absolute, and the returned path will also always be absolute. In\n// addition, the paths are cleaned before stripping the root.\nfunc LexicallyStripRoot(root, path string) string {\n\t// Make the paths clean and absolute.\n\troot, path = LexicallyCleanPath(\"/\"+root), LexicallyCleanPath(\"/\"+path)\n\tswitch {\n\tcase path == root:\n\t\tpath = \"/\"\n\tcase root == \"/\":\n\t\t// do nothing\n\tdefault:\n\t\tpath = strings.TrimPrefix(path, root+\"/\")\n\t}\n\treturn LexicallyCleanPath(\"/\" + path)\n}\n\n// hallucinateUnsafePath creates a new unsafePath which has all symlinks\n// (including dangling symlinks) fully resolved and any non-existent components\n// treated as though they are real. This is effectively just a wrapper around\n// [securejoin.SecureJoin] that strips the root. This path *IS NOT* safe to use\n// as-is, you *MUST* operate on the returned path with pathrs-lite.\n//\n// The reason for this methods is that in previous runc versions, we would\n// tolerate nonsense paths with dangling symlinks as path components.\n// pathrs-lite does not support this, so instead we have to emulate this\n// behaviour by doing SecureJoin *purely to get a semi-reasonable path to use*\n// and then we use pathrs-lite to operate on the path safely.\n//\n// It would be quite difficult to emulate this in a race-free way in\n// pathrs-lite, so instead we use [securejoin.SecureJoin] to simply produce a\n// new candidate path for operations like [MkdirAllInRoot] so they can then\n// operate on the new unsafePath as if it was what the user requested.\n//\n// If unsafePath is already lexically inside root, it is stripped before\n// re-resolving it (this is done to ensure compatibility with legacy callers\n// within runc that call SecureJoin before calling into pathrs).\nfunc hallucinateUnsafePath(root, unsafePath string) (string, error) {\n\tunsafePath = LexicallyStripRoot(root, unsafePath)\n\tweirdPath, err := securejoin.SecureJoin(root, unsafePath)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tunsafePath = LexicallyStripRoot(root, weirdPath)\n\treturn unsafePath, nil\n}\n"
  },
  {
    "path": "vendor/github.com/opencontainers/runc/internal/pathrs/procfs_pathrslite.go",
    "content": "// SPDX-License-Identifier: Apache-2.0\n/*\n * Copyright (C) 2025 Aleksa Sarai <cyphar@cyphar.com>\n * Copyright (C) 2025 SUSE LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage pathrs\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\n\t\"github.com/cyphar/filepath-securejoin/pathrs-lite\"\n\t\"github.com/cyphar/filepath-securejoin/pathrs-lite/procfs\"\n)\n\nfunc procOpenReopen(openFn func(subpath string) (*os.File, error), subpath string, flags int) (*os.File, error) {\n\thandle, err := retryEAGAIN(func() (*os.File, error) {\n\t\treturn openFn(subpath)\n\t})\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer handle.Close()\n\n\tf, err := Reopen(handle, flags)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"reopen %s: %w\", handle.Name(), err)\n\t}\n\treturn f, nil\n}\n\n// ProcSelfOpen is a wrapper around [procfs.Handle.OpenSelf] and\n// [pathrs.Reopen], to let you one-shot open a procfs file with the given\n// flags.\nfunc ProcSelfOpen(subpath string, flags int) (*os.File, error) {\n\tproc, err := retryEAGAIN(procfs.OpenProcRoot)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer proc.Close()\n\treturn procOpenReopen(proc.OpenSelf, subpath, flags)\n}\n\n// ProcPidOpen is a wrapper around [procfs.Handle.OpenPid] and [pathrs.Reopen],\n// to let you one-shot open a procfs file with the given flags.\nfunc ProcPidOpen(pid int, subpath string, flags int) (*os.File, error) {\n\tproc, err := retryEAGAIN(procfs.OpenProcRoot)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer proc.Close()\n\treturn procOpenReopen(func(subpath string) (*os.File, error) {\n\t\treturn proc.OpenPid(pid, subpath)\n\t}, subpath, flags)\n}\n\n// ProcThreadSelfOpen is a wrapper around [procfs.Handle.OpenThreadSelf] and\n// [pathrs.Reopen], to let you one-shot open a procfs file with the given\n// flags. The returned [procfs.ProcThreadSelfCloser] needs the same handling as\n// when using pathrs-lite.\nfunc ProcThreadSelfOpen(subpath string, flags int) (_ *os.File, _ procfs.ProcThreadSelfCloser, Err error) {\n\tproc, err := retryEAGAIN(procfs.OpenProcRoot)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer proc.Close()\n\n\thandle, closer, err := retryEAGAIN2(func() (*os.File, procfs.ProcThreadSelfCloser, error) {\n\t\treturn proc.OpenThreadSelf(subpath)\n\t})\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tif closer != nil {\n\t\tdefer func() {\n\t\t\tif Err != nil {\n\t\t\t\tcloser()\n\t\t\t}\n\t\t}()\n\t}\n\tdefer handle.Close()\n\n\tf, err := Reopen(handle, flags)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"reopen %s: %w\", handle.Name(), err)\n\t}\n\treturn f, closer, nil\n}\n\n// Reopen is a wrapper around pathrs.Reopen.\nfunc Reopen(file *os.File, flags int) (*os.File, error) {\n\treturn retryEAGAIN(func() (*os.File, error) {\n\t\treturn pathrs.Reopen(file, flags)\n\t})\n}\n"
  },
  {
    "path": "vendor/github.com/opencontainers/runc/internal/pathrs/retry.go",
    "content": "// SPDX-License-Identifier: Apache-2.0\n/*\n * Copyright (C) 2024-2025 Aleksa Sarai <cyphar@cyphar.com>\n * Copyright (C) 2024-2025 SUSE LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage pathrs\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"time\"\n\n\t\"golang.org/x/sys/unix\"\n)\n\n// Based on >50k tests running \"runc run\" on a 16-core system with very heavy\n// rename(2) load, the single longest latency caused by -EAGAIN retries was\n// ~800us (with the vast majority being closer to 400us). So, a 2ms limit\n// should give more than enough headroom for any real system in practice.\nconst retryDeadline = 2 * time.Millisecond\n\n// retryEAGAIN is a top-level retry loop for pathrs to try to returning\n// spurious errors in most normal user cases when using openat2 (libpathrs\n// itself does up to 128 retries already, but this method takes a\n// wallclock-deadline approach to simply retry until a timer elapses).\nfunc retryEAGAIN[T any](fn func() (T, error)) (T, error) {\n\tdeadline := time.After(retryDeadline)\n\tfor {\n\t\tv, err := fn()\n\t\tif !errors.Is(err, unix.EAGAIN) {\n\t\t\treturn v, err\n\t\t}\n\t\tselect {\n\t\tcase <-deadline:\n\t\t\treturn *new(T), fmt.Errorf(\"%v retry deadline exceeded: %w\", retryDeadline, err)\n\t\tdefault:\n\t\t\t// retry\n\t\t}\n\t}\n}\n\n// retryEAGAIN2 is like retryEAGAIN except it returns two values.\nfunc retryEAGAIN2[T1, T2 any](fn func() (T1, T2, error)) (T1, T2, error) {\n\ttype ret struct {\n\t\tv1 T1\n\t\tv2 T2\n\t}\n\tv, err := retryEAGAIN(func() (ret, error) {\n\t\tv1, v2, err := fn()\n\t\treturn ret{v1: v1, v2: v2}, err\n\t})\n\treturn v.v1, v.v2, err\n}\n"
  },
  {
    "path": "vendor/github.com/opencontainers/runc/internal/pathrs/root_pathrslite.go",
    "content": "// SPDX-License-Identifier: Apache-2.0\n/*\n * Copyright (C) 2024-2025 Aleksa Sarai <cyphar@cyphar.com>\n * Copyright (C) 2024-2025 SUSE LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage pathrs\n\nimport (\n\t\"os\"\n\n\t\"github.com/cyphar/filepath-securejoin/pathrs-lite\"\n\t\"golang.org/x/sys/unix\"\n\n\t\"github.com/opencontainers/runc/internal/linux\"\n)\n\n// OpenInRoot opens the given path inside the root with the provided flags. It\n// is effectively shorthand for [securejoin.OpenInRoot] followed by\n// [securejoin.Reopen].\nfunc OpenInRoot(root, subpath string, flags int) (*os.File, error) {\n\thandle, err := retryEAGAIN(func() (*os.File, error) {\n\t\treturn pathrs.OpenInRoot(root, subpath)\n\t})\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer handle.Close()\n\n\treturn Reopen(handle, flags)\n}\n\n// CreateInRoot creates a new file inside a root (as well as any missing parent\n// directories) and returns a handle to said file. This effectively has\n// open(O_CREAT|O_NOFOLLOW) semantics. If you want the creation to use O_EXCL,\n// include it in the passed flags. The fileMode argument uses unix.* mode bits,\n// *not* os.FileMode.\nfunc CreateInRoot(root, subpath string, flags int, fileMode uint32) (*os.File, error) {\n\tdirFd, filename, err := MkdirAllParentInRoot(root, subpath, 0o755)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer dirFd.Close()\n\n\t// We know that the filename does not have any \"/\" components, and that\n\t// dirFd is inside the root. O_NOFOLLOW will stop us from following\n\t// trailing symlinks, so this is safe to do. libpathrs's Root::create_file\n\t// works the same way.\n\tflags |= unix.O_CREAT | unix.O_NOFOLLOW\n\tfd, err := linux.Openat(int(dirFd.Fd()), filename, flags, fileMode)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn os.NewFile(uintptr(fd), root+\"/\"+subpath), nil\n}\n"
  },
  {
    "path": "vendor/github.com/opencontainers/runc/libcontainer/devices/device_deprecated.go",
    "content": "package devices\n\nimport \"github.com/opencontainers/cgroups/devices/config\"\n\n// Deprecated: use [github.com/opencontainers/cgroups/devices/config].\nconst (\n\tWildcard       = config.Wildcard\n\tWildcardDevice = config.WildcardDevice\n\tBlockDevice    = config.BlockDevice\n\tCharDevice     = config.CharDevice\n\tFifoDevice     = config.FifoDevice\n)\n\n// Deprecated: use [github.com/opencontainers/cgroups/devices/config].\ntype (\n\tDevice      = config.Device\n\tPermissions = config.Permissions\n\tType        = config.Type\n\tRule        = config.Rule\n)\n"
  },
  {
    "path": "vendor/github.com/opencontainers/runc/libcontainer/devices/device_unix.go",
    "content": "//go:build !windows\n\npackage devices\n\nimport (\n\t\"errors\"\n\t\"os\"\n\t\"path/filepath\"\n\n\t\"golang.org/x/sys/unix\"\n)\n\n// ErrNotADevice denotes that a file is not a valid linux device.\nvar ErrNotADevice = errors.New(\"not a device node\")\n\n// Testing dependencies\nvar (\n\tunixLstat = unix.Lstat\n\tosReadDir = os.ReadDir\n)\n\n// DeviceFromPath takes the path to a device and its cgroup_permissions (which\n// cannot be easily queried) to look up the information about a linux device\n// and returns that information as a Device struct.\nfunc DeviceFromPath(path, permissions string) (*Device, error) {\n\tvar stat unix.Stat_t\n\terr := unixLstat(path, &stat)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar (\n\t\tdevType   Type\n\t\tmode      = stat.Mode\n\t\tdevNumber = uint64(stat.Rdev) //nolint:unconvert // Rdev is uint32 on e.g. MIPS.\n\t\tmajor     = unix.Major(devNumber)\n\t\tminor     = unix.Minor(devNumber)\n\t)\n\tswitch mode & unix.S_IFMT {\n\tcase unix.S_IFBLK:\n\t\tdevType = BlockDevice\n\tcase unix.S_IFCHR:\n\t\tdevType = CharDevice\n\tcase unix.S_IFIFO:\n\t\tdevType = FifoDevice\n\tdefault:\n\t\treturn nil, ErrNotADevice\n\t}\n\treturn &Device{\n\t\tRule: Rule{\n\t\t\tType:        devType,\n\t\t\tMajor:       int64(major),\n\t\t\tMinor:       int64(minor),\n\t\t\tPermissions: Permissions(permissions),\n\t\t},\n\t\tPath:     path,\n\t\tFileMode: os.FileMode(mode &^ unix.S_IFMT),\n\t\tUid:      stat.Uid,\n\t\tGid:      stat.Gid,\n\t}, nil\n}\n\n// HostDevices returns all devices that can be found under /dev directory.\nfunc HostDevices() ([]*Device, error) {\n\treturn GetDevices(\"/dev\")\n}\n\n// GetDevices recursively traverses a directory specified by path\n// and returns all devices found there.\nfunc GetDevices(path string) ([]*Device, error) {\n\tfiles, err := osReadDir(path)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tvar out []*Device\n\tfor _, f := range files {\n\t\tswitch {\n\t\tcase f.IsDir():\n\t\t\tswitch f.Name() {\n\t\t\t// \".lxc\" & \".lxd-mounts\" added to address https://github.com/lxc/lxd/issues/2825\n\t\t\t// \".udev\" added to address https://github.com/opencontainers/runc/issues/2093\n\t\t\tcase \"pts\", \"shm\", \"fd\", \"mqueue\", \".lxc\", \".lxd-mounts\", \".udev\":\n\t\t\t\tcontinue\n\t\t\tdefault:\n\t\t\t\tsub, err := GetDevices(filepath.Join(path, f.Name()))\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\n\t\t\t\tout = append(out, sub...)\n\t\t\t\tcontinue\n\t\t\t}\n\t\tcase f.Name() == \"console\":\n\t\t\tcontinue\n\t\t}\n\t\tdevice, err := DeviceFromPath(filepath.Join(path, f.Name()), \"rwm\")\n\t\tif err != nil {\n\t\t\tif errors.Is(err, ErrNotADevice) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif os.IsNotExist(err) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\treturn nil, err\n\t\t}\n\t\tif device.Type == FifoDevice {\n\t\t\tcontinue\n\t\t}\n\t\tout = append(out, device)\n\t}\n\treturn out, nil\n}\n"
  },
  {
    "path": "vendor/github.com/opencontainers/runc/libcontainer/exeseal/cloned_binary_linux.go",
    "content": "package exeseal\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"strconv\"\n\n\t\"github.com/sirupsen/logrus\"\n\t\"golang.org/x/sys/unix\"\n\n\t\"github.com/opencontainers/runc/internal/pathrs\"\n\t\"github.com/opencontainers/runc/libcontainer/system\"\n)\n\ntype SealFunc func(**os.File) error\n\nvar (\n\t_ SealFunc = sealMemfd\n\t_ SealFunc = sealFile\n)\n\nfunc isExecutable(f *os.File) bool {\n\tif err := unix.Faccessat(int(f.Fd()), \"\", unix.X_OK, unix.AT_EACCESS|unix.AT_EMPTY_PATH); err == nil {\n\t\treturn true\n\t} else if err == unix.EACCES {\n\t\treturn false\n\t}\n\tpath := \"/proc/self/fd/\" + strconv.Itoa(int(f.Fd()))\n\tif err := unix.Access(path, unix.X_OK); err == nil {\n\t\treturn true\n\t} else if err == unix.EACCES {\n\t\treturn false\n\t}\n\t// Cannot check -- assume it's executable (if not, exec will fail).\n\tlogrus.Debugf(\"cannot do X_OK check on binary %s -- assuming it's executable\", f.Name())\n\treturn true\n}\n\nconst baseMemfdSeals = unix.F_SEAL_SEAL | unix.F_SEAL_SHRINK | unix.F_SEAL_GROW | unix.F_SEAL_WRITE\n\nfunc sealMemfd(f **os.File) error {\n\tif err := (*f).Chmod(0o511); err != nil {\n\t\treturn err\n\t}\n\t// Try to set the newer memfd sealing flags, but we ignore\n\t// errors because they are not needed and we want to continue\n\t// to work on older kernels.\n\tfd := (*f).Fd()\n\n\t// Skip F_SEAL_FUTURE_WRITE, it is not needed because we already use the\n\t// stronger F_SEAL_WRITE (and is buggy on Linux <5.5 -- see kernel commit\n\t// 05d351102dbe and <https://github.com/opencontainers/runc/pull/4640>).\n\n\t// F_SEAL_EXEC -- Linux 6.3\n\tconst F_SEAL_EXEC = 0x20 //nolint:revive // this matches the unix.* name\n\t_, _ = unix.FcntlInt(fd, unix.F_ADD_SEALS, F_SEAL_EXEC)\n\n\t// Apply all original memfd seals.\n\t_, err := unix.FcntlInt(fd, unix.F_ADD_SEALS, baseMemfdSeals)\n\treturn os.NewSyscallError(\"fcntl(F_ADD_SEALS)\", err)\n}\n\n// Memfd creates a sealable executable memfd (supported since Linux 3.17).\nfunc Memfd(comment string) (*os.File, SealFunc, error) {\n\tfile, err := system.ExecutableMemfd(\"runc_cloned:\"+comment, unix.MFD_ALLOW_SEALING|unix.MFD_CLOEXEC)\n\treturn file, sealMemfd, err\n}\n\nfunc sealFile(f **os.File) error {\n\t// When sealing an O_TMPFILE-style descriptor we need to\n\t// re-open the path as O_PATH to clear the existing write\n\t// handle we have.\n\topath, err := pathrs.Reopen(*f, unix.O_PATH|unix.O_CLOEXEC)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"reopen tmpfile: %w\", err)\n\t}\n\t_ = (*f).Close()\n\t*f = opath\n\treturn nil\n}\n\n// otmpfile creates an open(O_TMPFILE) file in the given directory (supported\n// since Linux 3.11).\nfunc otmpfile(dir string) (*os.File, SealFunc, error) {\n\tfile, err := os.OpenFile(dir, unix.O_TMPFILE|unix.O_RDWR|unix.O_EXCL|unix.O_CLOEXEC, 0o700)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"O_TMPFILE creation failed: %w\", err)\n\t}\n\t// Make sure we actually got an unlinked O_TMPFILE descriptor.\n\tvar stat unix.Stat_t\n\tif err := unix.Fstat(int(file.Fd()), &stat); err != nil {\n\t\tfile.Close()\n\t\treturn nil, nil, fmt.Errorf(\"cannot fstat O_TMPFILE fd: %w\", err)\n\t} else if stat.Nlink != 0 {\n\t\tfile.Close()\n\t\treturn nil, nil, errors.New(\"O_TMPFILE has non-zero nlink\")\n\t}\n\treturn file, sealFile, err\n}\n\n// mktemp creates a classic unlinked file in the given directory.\nfunc mktemp(dir string) (*os.File, SealFunc, error) {\n\tfile, err := os.CreateTemp(dir, \"runc.\")\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\t// Unlink the file and verify it was unlinked.\n\tif err := os.Remove(file.Name()); err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"unlinking classic tmpfile: %w\", err)\n\t}\n\tif err := file.Chmod(0o511); err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"chmod classic tmpfile: %w\", err)\n\t}\n\tvar stat unix.Stat_t\n\tif err := unix.Fstat(int(file.Fd()), &stat); err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"cannot fstat classic tmpfile: %w\", err)\n\t} else if stat.Nlink != 0 {\n\t\treturn nil, nil, fmt.Errorf(\"classic tmpfile %s has non-zero nlink after unlink\", file.Name())\n\t}\n\treturn file, sealFile, err\n}\n\nfunc getSealableFile(comment, tmpDir string) (file *os.File, sealFn SealFunc, err error) {\n\t// First, try an executable memfd (supported since Linux 3.17).\n\tfile, sealFn, err = Memfd(comment)\n\tif err == nil {\n\t\treturn file, sealFn, err\n\t}\n\tlogrus.Debugf(\"memfd cloned binary failed, falling back to O_TMPFILE: %v\", err)\n\n\t// The tmpDir here (c.root) might be mounted noexec, so we need a couple of\n\t// fallbacks to try. It's possible that none of these are writable and\n\t// executable, in which case there's nothing we can practically do (other\n\t// than mounting our own executable tmpfs, which would have its own\n\t// issues).\n\ttmpDirs := []string{\n\t\ttmpDir,\n\t\tos.TempDir(),\n\t\t\"/tmp\",\n\t\t\".\",\n\t\t\"/bin\",\n\t\t\"/\",\n\t}\n\n\t// Try to fallback to O_TMPFILE (supported since Linux 3.11).\n\tfor _, dir := range tmpDirs {\n\t\tfile, sealFn, err = otmpfile(dir)\n\t\tif err != nil {\n\t\t\tcontinue\n\t\t}\n\t\tif !isExecutable(file) {\n\t\t\tlogrus.Debugf(\"tmpdir %s is noexec -- trying a different tmpdir\", dir)\n\t\t\tfile.Close()\n\t\t\tcontinue\n\t\t}\n\t\treturn file, sealFn, err\n\t}\n\tlogrus.Debugf(\"O_TMPFILE cloned binary failed, falling back to mktemp(): %v\", err)\n\t// Finally, try a classic unlinked temporary file.\n\tfor _, dir := range tmpDirs {\n\t\tfile, sealFn, err = mktemp(dir)\n\t\tif err != nil {\n\t\t\tcontinue\n\t\t}\n\t\tif !isExecutable(file) {\n\t\t\tlogrus.Debugf(\"tmpdir %s is noexec -- trying a different tmpdir\", dir)\n\t\t\tfile.Close()\n\t\t\tcontinue\n\t\t}\n\t\treturn file, sealFn, err\n\t}\n\treturn nil, nil, fmt.Errorf(\"could not create sealable file for cloned binary: %w\", err)\n}\n\n// CloneBinary creates a \"sealed\" clone of a given binary, which can be used to\n// thwart attempts by the container process to gain access to host binaries\n// through procfs magic-link shenanigans. For more details on why this is\n// necessary, see CVE-2019-5736.\nfunc CloneBinary(src io.Reader, size int64, name, tmpDir string) (*os.File, error) {\n\tlogrus.Debugf(\"cloning %s binary (%d bytes)\", name, size)\n\tfile, sealFn, err := getSealableFile(name, tmpDir)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tcopied, err := system.Copy(file, src)\n\tif err != nil {\n\t\tfile.Close()\n\t\treturn nil, fmt.Errorf(\"copy binary: %w\", err)\n\t} else if copied != size {\n\t\tfile.Close()\n\t\treturn nil, fmt.Errorf(\"copied binary size mismatch: %d != %d\", copied, size)\n\t}\n\tif err := sealFn(&file); err != nil {\n\t\tfile.Close()\n\t\treturn nil, fmt.Errorf(\"could not seal fd: %w\", err)\n\t}\n\treturn file, nil\n}\n\n// IsCloned returns whether the given file can be guaranteed to be a safe exe.\nfunc IsCloned(exe *os.File) bool {\n\tseals, err := unix.FcntlInt(exe.Fd(), unix.F_GET_SEALS, 0)\n\tif err != nil {\n\t\t// /proc/self/exe is probably not a memfd\n\t\tlogrus.Debugf(\"F_GET_SEALS on %s failed: %v\", exe.Name(), err)\n\t\treturn false\n\t}\n\t// The memfd must have all of the base seals applied.\n\tlogrus.Debugf(\"checking %s memfd seals: 0x%x\", exe.Name(), seals)\n\treturn seals&baseMemfdSeals == baseMemfdSeals\n}\n\n// CloneSelfExe makes a clone of the current process's binary (through\n// /proc/self/exe). This binary can then be used for \"runc init\" in order to\n// make sure the container process can never resolve the original runc binary.\n// For more details on why this is necessary, see CVE-2019-5736.\nfunc CloneSelfExe(tmpDir string) (*os.File, error) {\n\t// Try to create a temporary overlayfs to produce a readonly version of\n\t// /proc/self/exe that cannot be \"unwrapped\" by the container. In contrast\n\t// to CloneBinary, this technique does not require any extra memory usage\n\t// and does not have the (fairly noticeable) performance impact of copying\n\t// a large binary file into a memfd.\n\t//\n\t// Based on some basic performance testing, the overlayfs approach has\n\t// effectively no performance overhead (it is on par with both\n\t// MS_BIND+MS_RDONLY and no binary cloning at all) while memfd copying adds\n\t// around ~60% overhead during container startup.\n\toverlayFile, err := sealedOverlayfs(\"/proc/self/exe\", tmpDir)\n\tif err == nil {\n\t\tlogrus.Debug(\"runc exeseal: using overlayfs for sealed /proc/self/exe\") // used for tests\n\t\treturn overlayFile, nil\n\t}\n\tlogrus.WithError(err).Debugf(\"could not use overlayfs for /proc/self/exe sealing -- falling back to making a temporary copy\")\n\n\tselfExe, err := os.Open(\"/proc/self/exe\")\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"opening current binary: %w\", err)\n\t}\n\tdefer selfExe.Close()\n\n\tstat, err := selfExe.Stat()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"checking /proc/self/exe size: %w\", err)\n\t}\n\tsize := stat.Size()\n\n\treturn CloneBinary(selfExe, size, \"/proc/self/exe\", tmpDir)\n}\n\n// IsSelfExeCloned returns whether /proc/self/exe is a cloned binary that can\n// be guaranteed to be safe. This means that it must be a sealed memfd. Other\n// types of clones cannot be completely verified as safe.\nfunc IsSelfExeCloned() bool {\n\tselfExe, err := os.Open(\"/proc/self/exe\")\n\tif err != nil {\n\t\tlogrus.Debugf(\"open /proc/self/exe failed: %v\", err)\n\t\treturn false\n\t}\n\tdefer selfExe.Close()\n\treturn IsCloned(selfExe)\n}\n"
  },
  {
    "path": "vendor/github.com/opencontainers/runc/libcontainer/exeseal/overlayfs_linux.go",
    "content": "package exeseal\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"runtime\"\n\t\"strings\"\n\n\t\"golang.org/x/sys/unix\"\n\n\t\"github.com/opencontainers/runc/libcontainer/utils\"\n)\n\nfunc fsopen(fsName string, flags int) (*os.File, error) {\n\t// Make sure we always set O_CLOEXEC.\n\tflags |= unix.FSOPEN_CLOEXEC\n\tfd, err := unix.Fsopen(fsName, flags)\n\tif err != nil {\n\t\treturn nil, os.NewSyscallError(\"fsopen \"+fsName, err)\n\t}\n\treturn os.NewFile(uintptr(fd), \"fscontext:\"+fsName), nil\n}\n\nfunc fsmount(ctx *os.File, flags, mountAttrs int) (*os.File, error) {\n\t// Make sure we always set O_CLOEXEC.\n\tflags |= unix.FSMOUNT_CLOEXEC\n\tfd, err := unix.Fsmount(int(ctx.Fd()), flags, mountAttrs)\n\tif err != nil {\n\t\treturn nil, os.NewSyscallError(\"fsmount \"+ctx.Name(), err)\n\t}\n\truntime.KeepAlive(ctx) // make sure fd is kept alive while it's used\n\treturn os.NewFile(uintptr(fd), \"fsmount:\"+ctx.Name()), nil\n}\n\nfunc escapeOverlayLowerDir(path string) string {\n\t// If the lowerdir path contains \":\" we need to escape them, and if there\n\t// were any escape characters already (\\) we need to escape those first.\n\treturn strings.ReplaceAll(strings.ReplaceAll(path, `\\`, `\\\\`), `:`, `\\:`)\n}\n\n// sealedOverlayfs will create an internal overlayfs mount using fsopen() that\n// uses the directory containing the binary as a lowerdir and a temporary tmpfs\n// as an upperdir. There is no way to \"unwrap\" this (unlike MS_BIND+MS_RDONLY)\n// and so we can create a safe zero-copy sealed version of /proc/self/exe.\n// This only works for privileged users and on kernels with overlayfs and\n// fsopen() enabled.\n//\n// TODO: Since Linux 5.11, overlayfs can be created inside user namespaces so\n// it is technically possible to create an overlayfs even for rootless\n// containers. Unfortunately, this would require some ugly manual CGo+fork\n// magic so we can do this later if we feel it's really needed.\nfunc sealedOverlayfs(binPath, tmpDir string) (_ *os.File, Err error) {\n\t// Try to do the superblock creation first to bail out early if we can't\n\t// use this method.\n\toverlayCtx, err := fsopen(\"overlay\", unix.FSOPEN_CLOEXEC)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer overlayCtx.Close()\n\n\t// binPath is going to be /proc/self/exe, so do a readlink to get the real\n\t// path. overlayfs needs the real underlying directory for this protection\n\t// mode to work properly.\n\tif realPath, err := os.Readlink(binPath); err == nil {\n\t\tbinPath = realPath\n\t}\n\tbinLowerDirPath, binName := filepath.Split(binPath)\n\t// Escape any \":\"s or \"\\\"s in the path.\n\tbinLowerDirPath = escapeOverlayLowerDir(binLowerDirPath)\n\n\t// Overlayfs requires two lowerdirs in order to run in \"lower-only\" mode,\n\t// where writes are completely blocked. Ideally we would create a dummy\n\t// tmpfs for this, but it turns out that overlayfs doesn't allow for\n\t// anonymous mountns paths.\n\t// NOTE: I'm working on a patch to fix this but it won't be backported.\n\tdummyLowerDirPath := escapeOverlayLowerDir(tmpDir)\n\n\t// Configure the lowerdirs. The binary lowerdir needs to be on the top to\n\t// ensure that a file called \"runc\" (binName) in the dummy lowerdir doesn't\n\t// mask the binary.\n\tlowerDirStr := binLowerDirPath + \":\" + dummyLowerDirPath\n\tif err := unix.FsconfigSetString(int(overlayCtx.Fd()), \"lowerdir\", lowerDirStr); err != nil {\n\t\treturn nil, fmt.Errorf(\"fsconfig set overlayfs lowerdir=%s: %w\", lowerDirStr, err)\n\t}\n\n\t// We don't care about xino (Linux 4.17) but it will be auto-enabled on\n\t// some systems (if /run/runc and /usr/bin are on different filesystems)\n\t// and this produces spurious dmesg log entries. We can safely ignore\n\t// errors when disabling this because we don't actually care about the\n\t// setting and we're just opportunistically disabling it.\n\t_ = unix.FsconfigSetString(int(overlayCtx.Fd()), \"xino\", \"off\")\n\n\t// Get an actual handle to the overlayfs.\n\tif err := unix.FsconfigCreate(int(overlayCtx.Fd())); err != nil {\n\t\treturn nil, os.NewSyscallError(\"fsconfig create overlayfs\", err)\n\t}\n\toverlayFd, err := fsmount(overlayCtx, unix.FSMOUNT_CLOEXEC, unix.MS_RDONLY|unix.MS_NODEV|unix.MS_NOSUID)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer overlayFd.Close()\n\n\t// Grab a handle to the binary through overlayfs.\n\texeFile, err := utils.Openat(overlayFd, binName, unix.O_PATH|unix.O_NOFOLLOW|unix.O_CLOEXEC, 0)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"open %s from overlayfs (lowerdir=%s): %w\", binName, lowerDirStr, err)\n\t}\n\t// NOTE: We would like to check that exeFile is the same as /proc/self/exe,\n\t// except this is a little difficult. Depending on what filesystems the\n\t// layers are on, overlayfs can remap the inode numbers (and it always\n\t// creates its own device numbers -- see ovl_map_dev_ino) so we can't do a\n\t// basic stat-based check. The only reasonable option would be to hash both\n\t// files and compare them, but this would require fully reading both files\n\t// which would produce a similar performance overhead to memfd cloning.\n\t//\n\t// Ultimately, there isn't a real attack to be worried about here. An\n\t// attacker would need to be able to modify files in /usr/sbin (or wherever\n\t// runc lives), at which point they could just replace the runc binary with\n\t// something malicious anyway.\n\treturn exeFile, nil\n}\n"
  },
  {
    "path": "vendor/github.com/opencontainers/runc/libcontainer/system/linux.go",
    "content": "//go:build linux\n\npackage system\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"unsafe\"\n\n\t\"github.com/sirupsen/logrus\"\n\t\"golang.org/x/sys/unix\"\n)\n\ntype ParentDeathSignal int\n\nfunc (p ParentDeathSignal) Restore() error {\n\tif p == 0 {\n\t\treturn nil\n\t}\n\tcurrent, err := GetParentDeathSignal()\n\tif err != nil {\n\t\treturn err\n\t}\n\tif p == current {\n\t\treturn nil\n\t}\n\treturn p.Set()\n}\n\nfunc (p ParentDeathSignal) Set() error {\n\treturn SetParentDeathSignal(uintptr(p))\n}\n\nfunc SetParentDeathSignal(sig uintptr) error {\n\tif err := unix.Prctl(unix.PR_SET_PDEATHSIG, sig, 0, 0, 0); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc GetParentDeathSignal() (ParentDeathSignal, error) {\n\tvar sig int\n\tif err := unix.Prctl(unix.PR_GET_PDEATHSIG, uintptr(unsafe.Pointer(&sig)), 0, 0, 0); err != nil {\n\t\treturn -1, err\n\t}\n\treturn ParentDeathSignal(sig), nil\n}\n\nfunc SetKeepCaps() error {\n\tif err := unix.Prctl(unix.PR_SET_KEEPCAPS, 1, 0, 0, 0); err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\nfunc ClearKeepCaps() error {\n\tif err := unix.Prctl(unix.PR_SET_KEEPCAPS, 0, 0, 0, 0); err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\nfunc Setctty() error {\n\tif err := unix.IoctlSetInt(0, unix.TIOCSCTTY, 0); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// SetSubreaper sets the value i as the subreaper setting for the calling process\nfunc SetSubreaper(i int) error {\n\treturn unix.Prctl(unix.PR_SET_CHILD_SUBREAPER, uintptr(i), 0, 0, 0)\n}\n\n// GetSubreaper returns the subreaper setting for the calling process\nfunc GetSubreaper() (int, error) {\n\tvar i uintptr\n\n\tif err := unix.Prctl(unix.PR_GET_CHILD_SUBREAPER, uintptr(unsafe.Pointer(&i)), 0, 0, 0); err != nil {\n\t\treturn -1, err\n\t}\n\n\treturn int(i), nil\n}\n\nfunc ExecutableMemfd(comment string, flags int) (*os.File, error) {\n\t// Try to use MFD_EXEC first. On pre-6.3 kernels we get -EINVAL for this\n\t// flag. On post-6.3 kernels, with vm.memfd_noexec=1 this ensures we get an\n\t// executable memfd. For vm.memfd_noexec=2 this is a bit more complicated.\n\t// The original vm.memfd_noexec=2 implementation incorrectly silently\n\t// allowed MFD_EXEC[1] -- this should be fixed in 6.6. On 6.6 and newer\n\t// kernels, we will get -EACCES if we try to use MFD_EXEC with\n\t// vm.memfd_noexec=2 (for 6.3-6.5, -EINVAL was the intended return value).\n\t//\n\t// The upshot is we only need to retry without MFD_EXEC on -EINVAL because\n\t// it just so happens that passing MFD_EXEC bypasses vm.memfd_noexec=2 on\n\t// kernels where -EINVAL is actually a security denial.\n\tmemfd, err := unix.MemfdCreate(comment, flags|unix.MFD_EXEC)\n\tif err == unix.EINVAL {\n\t\tmemfd, err = unix.MemfdCreate(comment, flags)\n\t}\n\tif err != nil {\n\t\tif err == unix.EACCES {\n\t\t\tlogrus.Info(\"memfd_create(MFD_EXEC) failed, possibly due to vm.memfd_noexec=2 -- falling back to less secure O_TMPFILE\")\n\t\t}\n\t\terr := os.NewSyscallError(\"memfd_create\", err)\n\t\treturn nil, fmt.Errorf(\"failed to create executable memfd: %w\", err)\n\t}\n\treturn os.NewFile(uintptr(memfd), \"/memfd:\"+comment), nil\n}\n\n// Copy is like io.Copy except it uses sendfile(2) if the source and sink are\n// both (*os.File) as an optimisation to make copies faster.\nfunc Copy(dst io.Writer, src io.Reader) (copied int64, err error) {\n\tdstFile, _ := dst.(*os.File)\n\tsrcFile, _ := src.(*os.File)\n\n\tif dstFile != nil && srcFile != nil {\n\t\tfi, err := srcFile.Stat()\n\t\tif err != nil {\n\t\t\tgoto fallback\n\t\t}\n\t\tsize := fi.Size()\n\t\tfor size > 0 {\n\t\t\tn, err := unix.Sendfile(int(dstFile.Fd()), int(srcFile.Fd()), nil, int(size))\n\t\t\tif n > 0 {\n\t\t\t\tsize -= int64(n)\n\t\t\t\tcopied += int64(n)\n\t\t\t}\n\t\t\tif err == unix.EINTR {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err != nil {\n\t\t\t\tif copied == 0 {\n\t\t\t\t\t// If we haven't copied anything so far, we can safely just\n\t\t\t\t\t// fallback to io.Copy. We could always do the fallback but\n\t\t\t\t\t// it's safer to error out in the case of a partial copy\n\t\t\t\t\t// followed by an error (which should never happen).\n\t\t\t\t\tgoto fallback\n\t\t\t\t}\n\t\t\t\treturn copied, fmt.Errorf(\"partial sendfile copy: %w\", err)\n\t\t\t}\n\t\t}\n\t\treturn copied, nil\n\t}\n\nfallback:\n\treturn io.Copy(dst, src)\n}\n\n// SetLinuxPersonality sets the Linux execution personality. For more information see the personality syscall documentation.\n// checkout getLinuxPersonalityFromStr() from libcontainer/specconv/spec_linux.go for type conversion.\nfunc SetLinuxPersonality(personality int) error {\n\t_, _, errno := unix.Syscall(unix.SYS_PERSONALITY, uintptr(personality), 0, 0)\n\tif errno != 0 {\n\t\treturn &os.SyscallError{Syscall: \"set_personality\", Err: errno}\n\t}\n\treturn nil\n}\n\n// GetPtyPeer is a wrapper for ioctl(TIOCGPTPEER).\nfunc GetPtyPeer(ptyFd uintptr, unsafePeerPath string, flags int) (*os.File, error) {\n\t// Make sure O_NOCTTY is always set -- otherwise runc might accidentally\n\t// gain it as a controlling terminal. O_CLOEXEC also needs to be set to\n\t// make sure we don't leak the handle either.\n\tflags |= unix.O_NOCTTY | unix.O_CLOEXEC\n\n\t// There is no nice wrapper for this kind of ioctl in unix.\n\tpeerFd, _, errno := unix.Syscall(\n\t\tunix.SYS_IOCTL,\n\t\tptyFd,\n\t\tuintptr(unix.TIOCGPTPEER),\n\t\tuintptr(flags),\n\t)\n\tif errno != 0 {\n\t\treturn nil, os.NewSyscallError(\"ioctl TIOCGPTPEER\", errno)\n\t}\n\treturn os.NewFile(peerFd, unsafePeerPath), nil\n}\n"
  },
  {
    "path": "vendor/github.com/opencontainers/runc/libcontainer/system/proc.go",
    "content": "package system\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/opencontainers/runc/internal/pathrs\"\n)\n\n// State is the status of a process.\ntype State rune\n\nconst ( // Only values for Linux 3.14 and later are listed here\n\tDead        State = 'X'\n\tDiskSleep   State = 'D'\n\tRunning     State = 'R'\n\tSleeping    State = 'S'\n\tStopped     State = 'T'\n\tTracingStop State = 't'\n\tZombie      State = 'Z'\n\tParked      State = 'P'\n\tIdle        State = 'I'\n)\n\n// String forms of the state from proc(5)'s documentation for\n// /proc/[pid]/status' \"State\" field.\nfunc (s State) String() string {\n\tswitch s {\n\tcase Dead:\n\t\treturn \"dead\"\n\tcase DiskSleep:\n\t\treturn \"disk sleep\"\n\tcase Running:\n\t\treturn \"running\"\n\tcase Sleeping:\n\t\treturn \"sleeping\"\n\tcase Stopped:\n\t\treturn \"stopped\"\n\tcase TracingStop:\n\t\treturn \"tracing stop\"\n\tcase Zombie:\n\t\treturn \"zombie\"\n\tcase Parked:\n\t\treturn \"parked\"\n\tcase Idle:\n\t\treturn \"idle\" // kernel thread\n\tdefault:\n\t\treturn fmt.Sprintf(\"unknown (%c)\", s)\n\t}\n}\n\n// Stat_t represents the information from /proc/[pid]/stat, as\n// described in proc(5) with names based on the /proc/[pid]/status\n// fields.\ntype Stat_t struct {\n\t// Name is the command run by the process.\n\tName string\n\n\t// State is the state of the process.\n\tState State\n\n\t// StartTime is the number of clock ticks after system boot (since\n\t// Linux 2.6).\n\tStartTime uint64\n}\n\n// Stat returns a Stat_t instance for the specified process.\nfunc Stat(pid int) (Stat_t, error) {\n\tvar stat Stat_t\n\n\tstatFile, err := pathrs.ProcPidOpen(pid, \"stat\", os.O_RDONLY)\n\tif err != nil {\n\t\treturn stat, err\n\t}\n\tdefer statFile.Close()\n\n\tbytes, err := io.ReadAll(statFile)\n\tif err != nil {\n\t\treturn stat, err\n\t}\n\treturn parseStat(string(bytes))\n}\n\nfunc parseStat(data string) (stat Stat_t, err error) {\n\t// Example:\n\t// 89653 (gunicorn: maste) S 89630 89653 89653 0 -1 4194560 29689 28896 0 3 146 32 76 19 20 0 1 0 2971844 52965376 3920 18446744073709551615 1 1 0 0 0 0 0 16781312 137447943 0 0 0 17 1 0 0 0 0 0 0 0 0 0 0 0 0 0\n\t// The fields are space-separated, see full description in proc(5).\n\t//\n\t// We are only interested in:\n\t//  * field 2: process name. It is the only field enclosed into\n\t//    parenthesis, as it can contain spaces (and parenthesis) inside.\n\t//  * field 3: process state, a single character (%c)\n\t//  * field 22: process start time, a long unsigned integer (%llu).\n\n\t// 1. Look for the first '(' and the last ')' first, what's in between is Name.\n\t//    We expect at least 20 fields and a space after the last one.\n\n\tconst minAfterName = 20*2 + 1 // the min field is '0 '.\n\n\tfirst := strings.IndexByte(data, '(')\n\tif first < 0 || first+minAfterName >= len(data) {\n\t\treturn stat, fmt.Errorf(\"invalid stat data (no comm or too short): %q\", data)\n\t}\n\n\tlast := strings.LastIndexByte(data, ')')\n\tif last <= first || last+minAfterName >= len(data) {\n\t\treturn stat, fmt.Errorf(\"invalid stat data (no comm or too short): %q\", data)\n\t}\n\n\tstat.Name = data[first+1 : last]\n\n\t// 2. Remove fields 1 and 2 and a space after. State is right after.\n\tdata = data[last+2:]\n\tstat.State = State(data[0])\n\n\t// 3. StartTime is field 22, data is at field 3 now, so we need to skip 19 spaces.\n\tskipSpaces := 22 - 3\n\tfor first = 0; skipSpaces > 0 && first < len(data); first++ {\n\t\tif data[first] == ' ' {\n\t\t\tskipSpaces--\n\t\t}\n\t}\n\t// Now first points to StartTime; look for space right after.\n\ti := strings.IndexByte(data[first:], ' ')\n\tif i < 0 {\n\t\treturn stat, fmt.Errorf(\"invalid stat data (too short): %q\", data)\n\t}\n\tstat.StartTime, err = strconv.ParseUint(data[first:first+i], 10, 64)\n\tif err != nil {\n\t\treturn stat, fmt.Errorf(\"invalid stat data (bad start time): %w\", err)\n\t}\n\n\treturn stat, nil\n}\n"
  },
  {
    "path": "vendor/github.com/opencontainers/runc/libcontainer/system/rlimit_linux.go",
    "content": "package system\n\nimport (\n\t\"syscall\"\n)\n\n// ClearRlimitNofileCache clears go runtime's nofile rlimit cache. The argument\n// is process RLIMIT_NOFILE values. Relies on go.dev/cl/588076.\nfunc ClearRlimitNofileCache(lim *syscall.Rlimit) {\n\t// Ignore the return values since we only need to clean the cache,\n\t// the limit is going to be set via unix.Prlimit elsewhere.\n\t_ = syscall.Setrlimit(syscall.RLIMIT_NOFILE, lim)\n}\n"
  },
  {
    "path": "vendor/github.com/opencontainers/runc/libcontainer/utils/cmsg.go",
    "content": "package utils\n\n/*\n * Copyright 2016, 2017 SUSE LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"runtime\"\n\n\t\"github.com/opencontainers/runc/internal/linux\"\n\t\"golang.org/x/sys/unix\"\n)\n\n// MaxNameLen is the maximum length of the name of a file descriptor being sent\n// using SendFile. The name of the file handle returned by RecvFile will never be\n// larger than this value.\nconst MaxNameLen = 4096\n\n// oobSpace is the size of the oob slice required to store a single FD. Note\n// that unix.UnixRights appears to make the assumption that fd is always int32,\n// so sizeof(fd) = 4.\nvar oobSpace = unix.CmsgSpace(4)\n\n// RecvFile waits for a file descriptor to be sent over the given AF_UNIX\n// socket. The file name of the remote file descriptor will be recreated\n// locally (it is sent as non-auxiliary data in the same payload).\nfunc RecvFile(socket *os.File) (_ *os.File, Err error) {\n\tname := make([]byte, MaxNameLen)\n\toob := make([]byte, oobSpace)\n\n\tsockfd := socket.Fd()\n\tvar (\n\t\tn, oobn int\n\t\terr     error\n\t)\n\n\tfor {\n\t\tn, oobn, _, _, err = unix.Recvmsg(int(sockfd), name, oob, unix.MSG_CMSG_CLOEXEC)\n\t\tif err != unix.EINTR {\n\t\t\tbreak\n\t\t}\n\t}\n\n\tif err != nil {\n\t\treturn nil, os.NewSyscallError(\"recvmsg\", err)\n\t}\n\tif n >= MaxNameLen || oobn != oobSpace {\n\t\treturn nil, fmt.Errorf(\"recvfile: incorrect number of bytes read (n=%d oobn=%d)\", n, oobn)\n\t}\n\t// Truncate.\n\tname = name[:n]\n\toob = oob[:oobn]\n\n\tscms, err := unix.ParseSocketControlMessage(oob)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// We cannot control how many SCM_RIGHTS we receive, and upon receiving\n\t// them all of the descriptors are installed in our fd table, so we need to\n\t// parse all of the SCM_RIGHTS we received in order to close all of the\n\t// descriptors on error.\n\tvar fds []int\n\tdefer func() {\n\t\tfor i, fd := range fds {\n\t\t\tif i == 0 && Err == nil {\n\t\t\t\t// Only close the first one on error.\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\t// Always close extra ones.\n\t\t\t_ = unix.Close(fd)\n\t\t}\n\t}()\n\tvar lastErr error\n\tfor _, scm := range scms {\n\t\tif scm.Header.Type == unix.SCM_RIGHTS {\n\t\t\tscmFds, err := unix.ParseUnixRights(&scm)\n\t\t\tif err != nil {\n\t\t\t\tlastErr = err\n\t\t\t} else {\n\t\t\t\tfds = append(fds, scmFds...)\n\t\t\t}\n\t\t}\n\t}\n\tif lastErr != nil {\n\t\treturn nil, lastErr\n\t}\n\n\t// We do this after collecting the fds to make sure we close them all when\n\t// returning an error here.\n\tif len(scms) != 1 {\n\t\treturn nil, fmt.Errorf(\"recvfd: number of SCMs is not 1: %d\", len(scms))\n\t}\n\tif len(fds) != 1 {\n\t\treturn nil, fmt.Errorf(\"recvfd: number of fds is not 1: %d\", len(fds))\n\t}\n\treturn os.NewFile(uintptr(fds[0]), string(name)), nil\n}\n\n// SendFile sends a file over the given AF_UNIX socket. file.Name() is also\n// included so that if the other end uses RecvFile, the file will have the same\n// name information.\nfunc SendFile(socket *os.File, file *os.File) error {\n\tname := file.Name()\n\tif len(name) >= MaxNameLen {\n\t\treturn fmt.Errorf(\"sendfd: filename too long: %s\", name)\n\t}\n\terr := SendRawFd(socket, name, file.Fd())\n\truntime.KeepAlive(file)\n\treturn err\n}\n\n// SendRawFd sends a specific file descriptor over the given AF_UNIX socket.\nfunc SendRawFd(socket *os.File, msg string, fd uintptr) error {\n\toob := unix.UnixRights(int(fd))\n\treturn linux.Sendmsg(int(socket.Fd()), []byte(msg), oob, nil, 0)\n}\n"
  },
  {
    "path": "vendor/github.com/opencontainers/runc/libcontainer/utils/utils.go",
    "content": "package utils\n\nimport (\n\t\"encoding/json\"\n\t\"io\"\n\t\"strings\"\n\n\t\"golang.org/x/sys/unix\"\n\n\t\"github.com/opencontainers/runc/internal/pathrs\"\n)\n\nconst (\n\texitSignalOffset = 128\n)\n\n// ExitStatus returns the correct exit status for a process based on if it\n// was signaled or exited cleanly\nfunc ExitStatus(status unix.WaitStatus) int {\n\tif status.Signaled() {\n\t\treturn exitSignalOffset + int(status.Signal())\n\t}\n\treturn status.ExitStatus()\n}\n\n// WriteJSON writes the provided struct v to w using standard json marshaling\n// without a trailing newline. This is used instead of json.Encoder because\n// there might be a problem in json decoder in some cases, see:\n// https://github.com/docker/docker/issues/14203#issuecomment-174177790\nfunc WriteJSON(w io.Writer, v any) error {\n\tdata, err := json.Marshal(v)\n\tif err != nil {\n\t\treturn err\n\t}\n\t_, err = w.Write(data)\n\treturn err\n}\n\n// SearchLabels searches through a list of key=value pairs for a given key,\n// returning its value, and the binary flag telling whether the key exist.\nfunc SearchLabels(labels []string, key string) (string, bool) {\n\tkey += \"=\"\n\tfor _, s := range labels {\n\t\tif val, ok := strings.CutPrefix(s, key); ok {\n\t\t\treturn val, true\n\t\t}\n\t}\n\treturn \"\", false\n}\n\n// Annotations returns the bundle path and user defined annotations from the\n// libcontainer state.  We need to remove the bundle because that is a label\n// added by libcontainer.\nfunc Annotations(labels []string) (bundle string, userAnnotations map[string]string) {\n\tuserAnnotations = make(map[string]string)\n\tfor _, l := range labels {\n\t\tname, value, ok := strings.Cut(l, \"=\")\n\t\tif !ok {\n\t\t\tcontinue\n\t\t}\n\t\tif name == \"bundle\" {\n\t\t\tbundle = value\n\t\t} else {\n\t\t\tuserAnnotations[name] = value\n\t\t}\n\t}\n\treturn bundle, userAnnotations\n}\n\n// CleanPath makes a path safe for use with filepath.Join. This is done by not\n// only cleaning the path, but also (if the path is relative) adding a leading\n// '/' and cleaning it (then removing the leading '/'). This ensures that a\n// path resulting from prepending another path will always resolve to lexically\n// be a subdirectory of the prefixed path. This is all done lexically, so paths\n// that include symlinks won't be safe as a result of using CleanPath.\n//\n// Deprecated: This function has been moved to internal/pathrs and this wrapper\n// will be removed in runc 1.5.\nvar CleanPath = pathrs.LexicallyCleanPath\n\n// StripRoot returns the passed path, stripping the root path if it was\n// (lexicially) inside it. Note that both passed paths will always be treated\n// as absolute, and the returned path will also always be absolute. In\n// addition, the paths are cleaned before stripping the root.\n//\n// Deprecated: This function has been moved to internal/pathrs and this wrapper\n// will be removed in runc 1.5.\nvar StripRoot = pathrs.LexicallyStripRoot\n"
  },
  {
    "path": "vendor/github.com/opencontainers/runc/libcontainer/utils/utils_unix.go",
    "content": "//go:build !windows\n\npackage utils\n\nimport (\n\t\"fmt\"\n\t\"math\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"runtime\"\n\t\"strconv\"\n\t\"sync\"\n\t_ \"unsafe\" // for go:linkname\n\n\tsecurejoin \"github.com/cyphar/filepath-securejoin\"\n\t\"github.com/sirupsen/logrus\"\n\t\"golang.org/x/sys/unix\"\n\n\t\"github.com/opencontainers/runc/internal/linux\"\n\t\"github.com/opencontainers/runc/internal/pathrs\"\n)\n\nvar (\n\thaveCloseRangeCloexecBool bool\n\thaveCloseRangeCloexecOnce sync.Once\n)\n\nfunc haveCloseRangeCloexec() bool {\n\thaveCloseRangeCloexecOnce.Do(func() {\n\t\t// Make sure we're not closing a random file descriptor.\n\t\ttmpFd, err := unix.FcntlInt(0, unix.F_DUPFD_CLOEXEC, 0)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t\tdefer unix.Close(tmpFd)\n\n\t\terr = unix.CloseRange(uint(tmpFd), uint(tmpFd), unix.CLOSE_RANGE_CLOEXEC)\n\t\t// Any error means we cannot use close_range(CLOSE_RANGE_CLOEXEC).\n\t\t// -ENOSYS and -EINVAL ultimately mean we don't have support, but any\n\t\t// other potential error would imply that even the most basic close\n\t\t// operation wouldn't work.\n\t\thaveCloseRangeCloexecBool = err == nil\n\t})\n\treturn haveCloseRangeCloexecBool\n}\n\ntype fdFunc func(fd int)\n\n// fdRangeFrom calls the passed fdFunc for each file descriptor that is open in\n// the current process.\nfunc fdRangeFrom(minFd int, fn fdFunc) error {\n\tfdDir, closer, err := pathrs.ProcThreadSelfOpen(\"fd/\", unix.O_DIRECTORY|unix.O_CLOEXEC)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"get handle to /proc/thread-self/fd: %w\", err)\n\t}\n\tdefer closer()\n\tdefer fdDir.Close()\n\n\tfdList, err := fdDir.Readdirnames(-1)\n\tif err != nil {\n\t\treturn err\n\t}\n\tfor _, fdStr := range fdList {\n\t\tfd, err := strconv.Atoi(fdStr)\n\t\t// Ignore non-numeric file names.\n\t\tif err != nil {\n\t\t\tcontinue\n\t\t}\n\t\t// Ignore descriptors lower than our specified minimum.\n\t\tif fd < minFd {\n\t\t\tcontinue\n\t\t}\n\t\t// Ignore the file descriptor we used for readdir, as it will be closed\n\t\t// when we return.\n\t\tif uintptr(fd) == fdDir.Fd() {\n\t\t\tcontinue\n\t\t}\n\t\t// Run the closure.\n\t\tfn(fd)\n\t}\n\treturn nil\n}\n\n// CloseExecFrom sets the O_CLOEXEC flag on all file descriptors greater or\n// equal to minFd in the current process.\nfunc CloseExecFrom(minFd int) error {\n\t// Use close_range(CLOSE_RANGE_CLOEXEC) if possible.\n\tif haveCloseRangeCloexec() {\n\t\terr := unix.CloseRange(uint(minFd), math.MaxInt32, unix.CLOSE_RANGE_CLOEXEC)\n\t\tif err == nil {\n\t\t\treturn nil\n\t\t}\n\n\t\tlogrus.Debugf(\"close_range failed, closing range one at a time (error: %v)\", err)\n\n\t\t// If close_range fails, we fall back to the standard loop.\n\t}\n\t// Otherwise, fall back to the standard loop.\n\treturn fdRangeFrom(minFd, unix.CloseOnExec)\n}\n\n//go:linkname runtime_IsPollDescriptor internal/poll.IsPollDescriptor\n\n// In order to make sure we do not close the internal epoll descriptors the Go\n// runtime uses, we need to ensure that we skip descriptors that match\n// \"internal/poll\".IsPollDescriptor. Yes, this is a Go runtime internal thing,\n// unfortunately there's no other way to be sure we're only keeping the file\n// descriptors the Go runtime needs. Hopefully nothing blows up doing this...\nfunc runtime_IsPollDescriptor(fd uintptr) bool //nolint:revive\n\n// UnsafeCloseFrom closes all file descriptors greater or equal to minFd in the\n// current process, except for those critical to Go's runtime (such as the\n// netpoll management descriptors).\n//\n// NOTE: That this function is incredibly dangerous to use in most Go code, as\n// closing file descriptors from underneath *os.File handles can lead to very\n// bad behaviour (the closed file descriptor can be reused and then any\n// *os.File operations would apply to the wrong file). This function is only\n// intended to be called from the last stage of runc init.\nfunc UnsafeCloseFrom(minFd int) error {\n\t// We cannot use close_range(2) even if it is available, because we must\n\t// not close some file descriptors.\n\treturn fdRangeFrom(minFd, func(fd int) {\n\t\tif runtime_IsPollDescriptor(uintptr(fd)) {\n\t\t\t// These are the Go runtimes internal netpoll file descriptors.\n\t\t\t// These file descriptors are operated on deep in the Go scheduler,\n\t\t\t// and closing those files from underneath Go can result in panics.\n\t\t\t// There is no issue with keeping them because they are not\n\t\t\t// executable and are not useful to an attacker anyway. Also we\n\t\t\t// don't have any choice.\n\t\t\treturn\n\t\t}\n\t\t// There's nothing we can do about errors from close(2), and the\n\t\t// only likely error to be seen is EBADF which indicates the fd was\n\t\t// already closed (in which case, we got what we wanted).\n\t\t_ = unix.Close(fd)\n\t})\n}\n\n// NewSockPair returns a new SOCK_STREAM unix socket pair.\nfunc NewSockPair(name string) (parent, child *os.File, err error) {\n\tfds, err := unix.Socketpair(unix.AF_LOCAL, unix.SOCK_STREAM|unix.SOCK_CLOEXEC, 0)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn os.NewFile(uintptr(fds[1]), name+\"-p\"), os.NewFile(uintptr(fds[0]), name+\"-c\"), nil\n}\n\n// WithProcfd runs the passed closure with a procfd path (/proc/self/fd/...)\n// corresponding to the unsafePath resolved within the root. Before passing the\n// fd, this path is verified to have been inside the root -- so operating on it\n// through the passed fdpath should be safe. Do not access this path through\n// the original path strings, and do not attempt to use the pathname outside of\n// the passed closure (the file handle will be freed once the closure returns).\n//\n// Deprecated: This function is an internal implementation detail of runc and\n// is no longer used. It will be removed in runc 1.5.\nfunc WithProcfd(root, unsafePath string, fn func(procfd string) error) error {\n\t// Remove the root then forcefully resolve inside the root.\n\tunsafePath = pathrs.LexicallyStripRoot(root, unsafePath)\n\tfullPath, err := securejoin.SecureJoin(root, unsafePath)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"resolving path inside rootfs failed: %w\", err)\n\t}\n\n\tprocSelfFd, closer := ProcThreadSelf(\"fd/\")\n\tdefer closer()\n\n\t// Open the target path.\n\tfh, err := os.OpenFile(fullPath, unix.O_PATH|unix.O_CLOEXEC, 0)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"open o_path procfd: %w\", err)\n\t}\n\tdefer fh.Close()\n\n\tprocfd := filepath.Join(procSelfFd, strconv.Itoa(int(fh.Fd())))\n\t// Double-check the path is the one we expected.\n\tif realpath, err := os.Readlink(procfd); err != nil {\n\t\treturn fmt.Errorf(\"procfd verification failed: %w\", err)\n\t} else if realpath != fullPath {\n\t\treturn fmt.Errorf(\"possibly malicious path detected -- refusing to operate on %s\", realpath)\n\t}\n\n\treturn fn(procfd)\n}\n\n// WithProcfdFile is a very minimal wrapper around [ProcThreadSelfFd]. The\n// caller is responsible for making sure that the provided file handle is\n// actually safe to operate on.\n//\n// NOTE: THIS FUNCTION IS INTERNAL TO RUNC, DO NOT USE IT.\n//\n// TODO: Migrate the mount logic towards a more move_mount(2)-friendly design\n// where this is kind of /proc/self/... tomfoolery is only done in a fallback\n// path for old kernels.\nfunc WithProcfdFile(file *os.File, fn func(procfd string) error) error {\n\tfdpath, closer := ProcThreadSelfFd(file.Fd())\n\tdefer closer()\n\n\treturn fn(fdpath)\n}\n\ntype ProcThreadSelfCloser func()\n\nvar (\n\thaveProcThreadSelf     bool\n\thaveProcThreadSelfOnce sync.Once\n)\n\n// ProcThreadSelf returns a string that is equivalent to\n// /proc/thread-self/<subpath>, with a graceful fallback on older kernels where\n// /proc/thread-self doesn't exist. This method DOES NOT use SecureJoin,\n// meaning that the passed string needs to be trusted. The caller _must_ call\n// the returned procThreadSelfCloser function (which is runtime.UnlockOSThread)\n// *only once* after it has finished using the returned path string.\nfunc ProcThreadSelf(subpath string) (string, ProcThreadSelfCloser) {\n\thaveProcThreadSelfOnce.Do(func() {\n\t\tif _, err := os.Stat(\"/proc/thread-self/\"); err == nil {\n\t\t\thaveProcThreadSelf = true\n\t\t} else {\n\t\t\tlogrus.Debugf(\"cannot stat /proc/thread-self (%v), falling back to /proc/self/task/<tid>\", err)\n\t\t}\n\t})\n\n\t// We need to lock our thread until the caller is done with the path string\n\t// because any non-atomic operation on the path (such as opening a file,\n\t// then reading it) could be interrupted by the Go runtime where the\n\t// underlying thread is swapped out and the original thread is killed,\n\t// resulting in pull-your-hair-out-hard-to-debug issues in the caller. In\n\t// addition, the pre-3.17 fallback makes everything non-atomic because the\n\t// same thing could happen between unix.Gettid() and the path operations.\n\t//\n\t// In theory, we don't need to lock in the atomic user case when using\n\t// /proc/thread-self/, but it's better to be safe than sorry (and there are\n\t// only one or two truly atomic users of /proc/thread-self/).\n\truntime.LockOSThread()\n\n\tthreadSelf := \"/proc/thread-self/\"\n\tif !haveProcThreadSelf {\n\t\t// Pre-3.17 kernels did not have /proc/thread-self, so do it manually.\n\t\tthreadSelf = \"/proc/self/task/\" + strconv.Itoa(unix.Gettid()) + \"/\"\n\t\tif _, err := os.Stat(threadSelf); err != nil {\n\t\t\t// Unfortunately, this code is called from rootfs_linux.go where we\n\t\t\t// are running inside the pid namespace of the container but /proc\n\t\t\t// is the host's procfs. Unfortunately there is no real way to get\n\t\t\t// the correct tid to use here (the kernel age means we cannot do\n\t\t\t// things like set up a private fsopen(\"proc\") -- even scanning\n\t\t\t// NSpid in all of the tasks in /proc/self/task/*/status requires\n\t\t\t// Linux 4.1).\n\t\t\t//\n\t\t\t// So, we just have to assume that /proc/self is acceptable in this\n\t\t\t// one specific case.\n\t\t\tif os.Getpid() == 1 {\n\t\t\t\tlogrus.Debugf(\"/proc/thread-self (tid=%d) cannot be emulated inside the initial container setup -- using /proc/self instead: %v\", unix.Gettid(), err)\n\t\t\t} else {\n\t\t\t\t// This should never happen, but the fallback should work in most cases...\n\t\t\t\tlogrus.Warnf(\"/proc/thread-self could not be emulated for pid=%d (tid=%d) -- using more buggy /proc/self fallback instead: %v\", os.Getpid(), unix.Gettid(), err)\n\t\t\t}\n\t\t\tthreadSelf = \"/proc/self/\"\n\t\t}\n\t}\n\treturn threadSelf + subpath, runtime.UnlockOSThread\n}\n\n// ProcThreadSelfFd is small wrapper around ProcThreadSelf to make it easier to\n// create a /proc/thread-self handle for given file descriptor.\n//\n// It is basically equivalent to ProcThreadSelf(fmt.Sprintf(\"fd/%d\", fd)), but\n// without using fmt.Sprintf to avoid unneeded overhead.\nfunc ProcThreadSelfFd(fd uintptr) (string, ProcThreadSelfCloser) {\n\treturn ProcThreadSelf(\"fd/\" + strconv.FormatUint(uint64(fd), 10))\n}\n\n// Openat is a Go-friendly openat(2) wrapper.\nfunc Openat(dir *os.File, path string, flags int, mode uint32) (*os.File, error) {\n\tdirFd := unix.AT_FDCWD\n\tif dir != nil {\n\t\tdirFd = int(dir.Fd())\n\t}\n\tflags |= unix.O_CLOEXEC\n\n\tfd, err := linux.Openat(dirFd, path, flags, mode)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn os.NewFile(uintptr(fd), dir.Name()+\"/\"+path), nil\n}\n"
  },
  {
    "path": "vendor/github.com/opencontainers/runtime-spec/LICENSE",
    "content": "\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   Copyright 2015 The Linux Foundation.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "vendor/github.com/opencontainers/runtime-spec/specs-go/config.go",
    "content": "package specs\n\nimport \"os\"\n\n// Spec is the base configuration for the container.\ntype Spec struct {\n\t// Version of the Open Container Initiative Runtime Specification with which the bundle complies.\n\tVersion string `json:\"ociVersion\"`\n\t// Process configures the container process.\n\tProcess *Process `json:\"process,omitempty\"`\n\t// Root configures the container's root filesystem.\n\tRoot *Root `json:\"root,omitempty\"`\n\t// Hostname configures the container's hostname.\n\tHostname string `json:\"hostname,omitempty\"`\n\t// Domainname configures the container's domainname.\n\tDomainname string `json:\"domainname,omitempty\"`\n\t// Mounts configures additional mounts (on top of Root).\n\tMounts []Mount `json:\"mounts,omitempty\"`\n\t// Hooks configures callbacks for container lifecycle events.\n\tHooks *Hooks `json:\"hooks,omitempty\" platform:\"linux,solaris,zos\"`\n\t// Annotations contains arbitrary metadata for the container.\n\tAnnotations map[string]string `json:\"annotations,omitempty\"`\n\n\t// Linux is platform-specific configuration for Linux based containers.\n\tLinux *Linux `json:\"linux,omitempty\" platform:\"linux\"`\n\t// Solaris is platform-specific configuration for Solaris based containers.\n\tSolaris *Solaris `json:\"solaris,omitempty\" platform:\"solaris\"`\n\t// Windows is platform-specific configuration for Windows based containers.\n\tWindows *Windows `json:\"windows,omitempty\" platform:\"windows\"`\n\t// VM specifies configuration for virtual-machine-based containers.\n\tVM *VM `json:\"vm,omitempty\" platform:\"vm\"`\n\t// ZOS is platform-specific configuration for z/OS based containers.\n\tZOS *ZOS `json:\"zos,omitempty\" platform:\"zos\"`\n\t// FreeBSD is platform-specific configuration for FreeBSD based containers.\n\tFreeBSD *FreeBSD `json:\"freebsd,omitempty\" platform:\"freebsd\"`\n}\n\n// Scheduler represents the scheduling attributes for a process. It is based on\n// the Linux sched_setattr(2) syscall.\ntype Scheduler struct {\n\t// Policy represents the scheduling policy (e.g., SCHED_FIFO, SCHED_RR, SCHED_OTHER).\n\tPolicy LinuxSchedulerPolicy `json:\"policy\"`\n\n\t// Nice is the nice value for the process, which affects its priority.\n\tNice int32 `json:\"nice,omitempty\"`\n\n\t// Priority represents the static priority of the process.\n\tPriority int32 `json:\"priority,omitempty\"`\n\n\t// Flags is an array of scheduling flags.\n\tFlags []LinuxSchedulerFlag `json:\"flags,omitempty\"`\n\n\t// The following ones are used by the DEADLINE scheduler.\n\n\t// Runtime is the amount of time in nanoseconds during which the process\n\t// is allowed to run in a given period.\n\tRuntime uint64 `json:\"runtime,omitempty\"`\n\n\t// Deadline is the absolute deadline for the process to complete its execution.\n\tDeadline uint64 `json:\"deadline,omitempty\"`\n\n\t// Period is the length of the period in nanoseconds used for determining the process runtime.\n\tPeriod uint64 `json:\"period,omitempty\"`\n}\n\n// Process contains information to start a specific application inside the container.\ntype Process struct {\n\t// Terminal creates an interactive terminal for the container.\n\tTerminal bool `json:\"terminal,omitempty\"`\n\t// ConsoleSize specifies the size of the console.\n\tConsoleSize *Box `json:\"consoleSize,omitempty\"`\n\t// User specifies user information for the process.\n\tUser User `json:\"user\"`\n\t// Args specifies the binary and arguments for the application to execute.\n\tArgs []string `json:\"args,omitempty\"`\n\t// CommandLine specifies the full command line for the application to execute on Windows.\n\tCommandLine string `json:\"commandLine,omitempty\" platform:\"windows\"`\n\t// Env populates the process environment for the process.\n\tEnv []string `json:\"env,omitempty\"`\n\t// Cwd is the current working directory for the process and must be\n\t// relative to the container's root.\n\tCwd string `json:\"cwd\"`\n\t// Capabilities are Linux capabilities that are kept for the process.\n\tCapabilities *LinuxCapabilities `json:\"capabilities,omitempty\" platform:\"linux\"`\n\t// Rlimits specifies rlimit options to apply to the process.\n\tRlimits []POSIXRlimit `json:\"rlimits,omitempty\" platform:\"linux,solaris,zos\"`\n\t// NoNewPrivileges controls whether additional privileges could be gained by processes in the container.\n\tNoNewPrivileges bool `json:\"noNewPrivileges,omitempty\" platform:\"linux,zos\"`\n\t// ApparmorProfile specifies the apparmor profile for the container.\n\tApparmorProfile string `json:\"apparmorProfile,omitempty\" platform:\"linux\"`\n\t// Specify an oom_score_adj for the container.\n\tOOMScoreAdj *int `json:\"oomScoreAdj,omitempty\" platform:\"linux\"`\n\t// Scheduler specifies the scheduling attributes for a process\n\tScheduler *Scheduler `json:\"scheduler,omitempty\" platform:\"linux\"`\n\t// SelinuxLabel specifies the selinux context that the container process is run as.\n\tSelinuxLabel string `json:\"selinuxLabel,omitempty\" platform:\"linux\"`\n\t// IOPriority contains the I/O priority settings for the cgroup.\n\tIOPriority *LinuxIOPriority `json:\"ioPriority,omitempty\" platform:\"linux\"`\n\t// ExecCPUAffinity specifies CPU affinity for exec processes.\n\tExecCPUAffinity *CPUAffinity `json:\"execCPUAffinity,omitempty\" platform:\"linux\"`\n}\n\n// LinuxCapabilities specifies the list of allowed capabilities that are kept for a process.\n// https://man7.org/linux/man-pages/man7/capabilities.7.html\ntype LinuxCapabilities struct {\n\t// Bounding is the set of capabilities checked by the kernel.\n\tBounding []string `json:\"bounding,omitempty\" platform:\"linux\"`\n\t// Effective is the set of capabilities checked by the kernel.\n\tEffective []string `json:\"effective,omitempty\" platform:\"linux\"`\n\t// Inheritable is the capabilities preserved across execve.\n\tInheritable []string `json:\"inheritable,omitempty\" platform:\"linux\"`\n\t// Permitted is the limiting superset for effective capabilities.\n\tPermitted []string `json:\"permitted,omitempty\" platform:\"linux\"`\n\t// Ambient is the ambient set of capabilities that are kept.\n\tAmbient []string `json:\"ambient,omitempty\" platform:\"linux\"`\n}\n\n// IOPriority represents I/O priority settings for the container's processes within the process group.\ntype LinuxIOPriority struct {\n\tClass    IOPriorityClass `json:\"class\"`\n\tPriority int             `json:\"priority\"`\n}\n\n// IOPriorityClass represents an I/O scheduling class.\ntype IOPriorityClass string\n\n// Possible values for IOPriorityClass.\nconst (\n\tIOPRIO_CLASS_RT   IOPriorityClass = \"IOPRIO_CLASS_RT\"\n\tIOPRIO_CLASS_BE   IOPriorityClass = \"IOPRIO_CLASS_BE\"\n\tIOPRIO_CLASS_IDLE IOPriorityClass = \"IOPRIO_CLASS_IDLE\"\n)\n\n// CPUAffinity specifies process' CPU affinity.\ntype CPUAffinity struct {\n\tInitial string `json:\"initial,omitempty\"`\n\tFinal   string `json:\"final,omitempty\"`\n}\n\n// Box specifies dimensions of a rectangle. Used for specifying the size of a console.\ntype Box struct {\n\t// Height is the vertical dimension of a box.\n\tHeight uint `json:\"height\"`\n\t// Width is the horizontal dimension of a box.\n\tWidth uint `json:\"width\"`\n}\n\n// User specifies specific user (and group) information for the container process.\ntype User struct {\n\t// UID is the user id.\n\tUID uint32 `json:\"uid\" platform:\"linux,solaris,zos\"`\n\t// GID is the group id.\n\tGID uint32 `json:\"gid\" platform:\"linux,solaris,zos\"`\n\t// Umask is the umask for the init process.\n\tUmask *uint32 `json:\"umask,omitempty\" platform:\"linux,solaris,zos\"`\n\t// AdditionalGids are additional group ids set for the container's process.\n\tAdditionalGids []uint32 `json:\"additionalGids,omitempty\" platform:\"linux,solaris\"`\n\t// Username is the user name.\n\tUsername string `json:\"username,omitempty\" platform:\"windows\"`\n}\n\n// Root contains information about the container's root filesystem on the host.\ntype Root struct {\n\t// Path is the absolute path to the container's root filesystem.\n\tPath string `json:\"path\"`\n\t// Readonly makes the root filesystem for the container readonly before the process is executed.\n\tReadonly bool `json:\"readonly,omitempty\"`\n}\n\n// Mount specifies a mount for a container.\ntype Mount struct {\n\t// Destination is the absolute path where the mount will be placed in the container.\n\tDestination string `json:\"destination\"`\n\t// Type specifies the mount kind.\n\tType string `json:\"type,omitempty\" platform:\"linux,solaris,zos,freebsd\"`\n\t// Source specifies the source path of the mount.\n\tSource string `json:\"source,omitempty\"`\n\t// Options are fstab style mount options.\n\tOptions []string `json:\"options,omitempty\"`\n\n\t// UID/GID mappings used for changing file owners w/o calling chown, fs should support it.\n\t// Every mount point could have its own mapping.\n\tUIDMappings []LinuxIDMapping `json:\"uidMappings,omitempty\" platform:\"linux\"`\n\tGIDMappings []LinuxIDMapping `json:\"gidMappings,omitempty\" platform:\"linux\"`\n}\n\n// Hook specifies a command that is run at a particular event in the lifecycle of a container\ntype Hook struct {\n\tPath    string   `json:\"path\"`\n\tArgs    []string `json:\"args,omitempty\"`\n\tEnv     []string `json:\"env,omitempty\"`\n\tTimeout *int     `json:\"timeout,omitempty\"`\n}\n\n// Hooks specifies a command that is run in the container at a particular event in the lifecycle of a container\n// Hooks for container setup and teardown\ntype Hooks struct {\n\t// Prestart is Deprecated. Prestart is a list of hooks to be run before the container process is executed.\n\t// It is called in the Runtime Namespace\n\t//\n\t// Deprecated: use [Hooks.CreateRuntime], [Hooks.CreateContainer], and\n\t// [Hooks.StartContainer] instead, which allow more granular hook control\n\t// during the create and start phase.\n\tPrestart []Hook `json:\"prestart,omitempty\"`\n\t// CreateRuntime is a list of hooks to be run after the container has been created but before pivot_root or any equivalent operation has been called\n\t// It is called in the Runtime Namespace\n\tCreateRuntime []Hook `json:\"createRuntime,omitempty\"`\n\t// CreateContainer is a list of hooks to be run after the container has been created but before pivot_root or any equivalent operation has been called\n\t// It is called in the Container Namespace\n\tCreateContainer []Hook `json:\"createContainer,omitempty\"`\n\t// StartContainer is a list of hooks to be run after the start operation is called but before the container process is started\n\t// It is called in the Container Namespace\n\tStartContainer []Hook `json:\"startContainer,omitempty\"`\n\t// Poststart is a list of hooks to be run after the container process is started.\n\t// It is called in the Runtime Namespace\n\tPoststart []Hook `json:\"poststart,omitempty\"`\n\t// Poststop is a list of hooks to be run after the container process exits.\n\t// It is called in the Runtime Namespace\n\tPoststop []Hook `json:\"poststop,omitempty\"`\n}\n\n// Linux contains platform-specific configuration for Linux based containers.\ntype Linux struct {\n\t// UIDMapping specifies user mappings for supporting user namespaces.\n\tUIDMappings []LinuxIDMapping `json:\"uidMappings,omitempty\"`\n\t// GIDMapping specifies group mappings for supporting user namespaces.\n\tGIDMappings []LinuxIDMapping `json:\"gidMappings,omitempty\"`\n\t// Sysctl are a set of key value pairs that are set for the container on start\n\tSysctl map[string]string `json:\"sysctl,omitempty\"`\n\t// Resources contain cgroup information for handling resource constraints\n\t// for the container\n\tResources *LinuxResources `json:\"resources,omitempty\"`\n\t// CgroupsPath specifies the path to cgroups that are created and/or joined by the container.\n\t// The path is expected to be relative to the cgroups mountpoint.\n\t// If resources are specified, the cgroups at CgroupsPath will be updated based on resources.\n\tCgroupsPath string `json:\"cgroupsPath,omitempty\"`\n\t// Namespaces contains the namespaces that are created and/or joined by the container\n\tNamespaces []LinuxNamespace `json:\"namespaces,omitempty\"`\n\t// Devices are a list of device nodes that are created for the container\n\tDevices []LinuxDevice `json:\"devices,omitempty\"`\n\t// NetDevices are key-value pairs, keyed by network device name on the host, moved to the container's network namespace.\n\tNetDevices map[string]LinuxNetDevice `json:\"netDevices,omitempty\"`\n\t// Seccomp specifies the seccomp security settings for the container.\n\tSeccomp *LinuxSeccomp `json:\"seccomp,omitempty\"`\n\t// RootfsPropagation is the rootfs mount propagation mode for the container.\n\tRootfsPropagation string `json:\"rootfsPropagation,omitempty\"`\n\t// MaskedPaths masks over the provided paths inside the container.\n\tMaskedPaths []string `json:\"maskedPaths,omitempty\"`\n\t// ReadonlyPaths sets the provided paths as RO inside the container.\n\tReadonlyPaths []string `json:\"readonlyPaths,omitempty\"`\n\t// MountLabel specifies the selinux context for the mounts in the container.\n\tMountLabel string `json:\"mountLabel,omitempty\"`\n\t// IntelRdt contains Intel Resource Director Technology (RDT) information for\n\t// handling resource constraints and monitoring metrics (e.g., L3 cache, memory bandwidth) for the container\n\tIntelRdt *LinuxIntelRdt `json:\"intelRdt,omitempty\"`\n\t// MemoryPolicy contains NUMA memory policy for the container.\n\tMemoryPolicy *LinuxMemoryPolicy `json:\"memoryPolicy,omitempty\"`\n\t// Personality contains configuration for the Linux personality syscall\n\tPersonality *LinuxPersonality `json:\"personality,omitempty\"`\n\t// TimeOffsets specifies the offset for supporting time namespaces.\n\tTimeOffsets map[string]LinuxTimeOffset `json:\"timeOffsets,omitempty\"`\n}\n\n// LinuxNamespace is the configuration for a Linux namespace\ntype LinuxNamespace struct {\n\t// Type is the type of namespace\n\tType LinuxNamespaceType `json:\"type\"`\n\t// Path is a path to an existing namespace persisted on disk that can be joined\n\t// and is of the same type\n\tPath string `json:\"path,omitempty\"`\n}\n\n// LinuxNamespaceType is one of the Linux namespaces\ntype LinuxNamespaceType string\n\nconst (\n\t// PIDNamespace for isolating process IDs\n\tPIDNamespace LinuxNamespaceType = \"pid\"\n\t// NetworkNamespace for isolating network devices, stacks, ports, etc\n\tNetworkNamespace LinuxNamespaceType = \"network\"\n\t// MountNamespace for isolating mount points\n\tMountNamespace LinuxNamespaceType = \"mount\"\n\t// IPCNamespace for isolating System V IPC, POSIX message queues\n\tIPCNamespace LinuxNamespaceType = \"ipc\"\n\t// UTSNamespace for isolating hostname and NIS domain name\n\tUTSNamespace LinuxNamespaceType = \"uts\"\n\t// UserNamespace for isolating user and group IDs\n\tUserNamespace LinuxNamespaceType = \"user\"\n\t// CgroupNamespace for isolating cgroup hierarchies\n\tCgroupNamespace LinuxNamespaceType = \"cgroup\"\n\t// TimeNamespace for isolating the clocks\n\tTimeNamespace LinuxNamespaceType = \"time\"\n)\n\n// LinuxIDMapping specifies UID/GID mappings\ntype LinuxIDMapping struct {\n\t// ContainerID is the starting UID/GID in the container\n\tContainerID uint32 `json:\"containerID\"`\n\t// HostID is the starting UID/GID on the host to be mapped to 'ContainerID'\n\tHostID uint32 `json:\"hostID\"`\n\t// Size is the number of IDs to be mapped\n\tSize uint32 `json:\"size\"`\n}\n\n// LinuxTimeOffset specifies the offset for Time Namespace\ntype LinuxTimeOffset struct {\n\t// Secs is the offset of clock (in secs) in the container\n\tSecs int64 `json:\"secs,omitempty\"`\n\t// Nanosecs is the additional offset for Secs (in nanosecs)\n\tNanosecs uint32 `json:\"nanosecs,omitempty\"`\n}\n\n// POSIXRlimit type and restrictions\ntype POSIXRlimit struct {\n\t// Type of the rlimit to set\n\tType string `json:\"type\"`\n\t// Hard is the hard limit for the specified type\n\tHard uint64 `json:\"hard\"`\n\t// Soft is the soft limit for the specified type\n\tSoft uint64 `json:\"soft\"`\n}\n\n// LinuxHugepageLimit structure corresponds to limiting kernel hugepages.\n// Default to reservation limits if supported. Otherwise fallback to page fault limits.\ntype LinuxHugepageLimit struct {\n\t// Pagesize is the hugepage size.\n\t// Format: \"<size><unit-prefix>B' (e.g. 64KB, 2MB, 1GB, etc.).\n\tPagesize string `json:\"pageSize\"`\n\t// Limit is the limit of \"hugepagesize\" hugetlb reservations (if supported) or usage.\n\tLimit uint64 `json:\"limit\"`\n}\n\n// LinuxInterfacePriority for network interfaces\ntype LinuxInterfacePriority struct {\n\t// Name is the name of the network interface\n\tName string `json:\"name\"`\n\t// Priority for the interface\n\tPriority uint32 `json:\"priority\"`\n}\n\n// LinuxBlockIODevice holds major:minor format supported in blkio cgroup\ntype LinuxBlockIODevice struct {\n\t// Major is the device's major number.\n\tMajor int64 `json:\"major\"`\n\t// Minor is the device's minor number.\n\tMinor int64 `json:\"minor\"`\n}\n\n// LinuxWeightDevice struct holds a `major:minor weight` pair for weightDevice\ntype LinuxWeightDevice struct {\n\tLinuxBlockIODevice\n\t// Weight is the bandwidth rate for the device.\n\tWeight *uint16 `json:\"weight,omitempty\"`\n\t// LeafWeight is the bandwidth rate for the device while competing with the cgroup's child cgroups, CFQ scheduler only\n\tLeafWeight *uint16 `json:\"leafWeight,omitempty\"`\n}\n\n// LinuxThrottleDevice struct holds a `major:minor rate_per_second` pair\ntype LinuxThrottleDevice struct {\n\tLinuxBlockIODevice\n\t// Rate is the IO rate limit per cgroup per device\n\tRate uint64 `json:\"rate\"`\n}\n\n// LinuxBlockIO for Linux cgroup 'blkio' resource management\ntype LinuxBlockIO struct {\n\t// Specifies per cgroup weight\n\tWeight *uint16 `json:\"weight,omitempty\"`\n\t// Specifies tasks' weight in the given cgroup while competing with the cgroup's child cgroups, CFQ scheduler only\n\tLeafWeight *uint16 `json:\"leafWeight,omitempty\"`\n\t// Weight per cgroup per device, can override BlkioWeight\n\tWeightDevice []LinuxWeightDevice `json:\"weightDevice,omitempty\"`\n\t// IO read rate limit per cgroup per device, bytes per second\n\tThrottleReadBpsDevice []LinuxThrottleDevice `json:\"throttleReadBpsDevice,omitempty\"`\n\t// IO write rate limit per cgroup per device, bytes per second\n\tThrottleWriteBpsDevice []LinuxThrottleDevice `json:\"throttleWriteBpsDevice,omitempty\"`\n\t// IO read rate limit per cgroup per device, IO per second\n\tThrottleReadIOPSDevice []LinuxThrottleDevice `json:\"throttleReadIOPSDevice,omitempty\"`\n\t// IO write rate limit per cgroup per device, IO per second\n\tThrottleWriteIOPSDevice []LinuxThrottleDevice `json:\"throttleWriteIOPSDevice,omitempty\"`\n}\n\n// LinuxMemory for Linux cgroup 'memory' resource management\ntype LinuxMemory struct {\n\t// Memory limit (in bytes).\n\tLimit *int64 `json:\"limit,omitempty\"`\n\t// Memory reservation or soft_limit (in bytes).\n\tReservation *int64 `json:\"reservation,omitempty\"`\n\t// Total memory limit (memory + swap).\n\tSwap *int64 `json:\"swap,omitempty\"`\n\t// Kernel memory limit (in bytes).\n\t//\n\t// Deprecated: kernel-memory limits are not supported in cgroups v2, and\n\t// were obsoleted in [kernel v5.4]. This field should no longer be used,\n\t// as it may be ignored by runtimes.\n\t//\n\t// [kernel v5.4]: https://github.com/torvalds/linux/commit/0158115f702b0ba208ab0\n\tKernel *int64 `json:\"kernel,omitempty\"`\n\t// Kernel memory limit for tcp (in bytes)\n\tKernelTCP *int64 `json:\"kernelTCP,omitempty\"`\n\t// How aggressive the kernel will swap memory pages.\n\tSwappiness *uint64 `json:\"swappiness,omitempty\"`\n\t// DisableOOMKiller disables the OOM killer for out of memory conditions\n\tDisableOOMKiller *bool `json:\"disableOOMKiller,omitempty\"`\n\t// Enables hierarchical memory accounting\n\tUseHierarchy *bool `json:\"useHierarchy,omitempty\"`\n\t// CheckBeforeUpdate enables checking if a new memory limit is lower\n\t// than the current usage during update, and if so, rejecting the new\n\t// limit.\n\tCheckBeforeUpdate *bool `json:\"checkBeforeUpdate,omitempty\"`\n}\n\n// LinuxCPU for Linux cgroup 'cpu' resource management\ntype LinuxCPU struct {\n\t// CPU shares (relative weight (ratio) vs. other cgroups with cpu shares).\n\tShares *uint64 `json:\"shares,omitempty\"`\n\t// CPU hardcap limit (in usecs). Allowed cpu time in a given period.\n\tQuota *int64 `json:\"quota,omitempty\"`\n\t// CPU hardcap burst limit (in usecs). Allowed accumulated cpu time additionally for burst in a\n\t// given period.\n\tBurst *uint64 `json:\"burst,omitempty\"`\n\t// CPU period to be used for hardcapping (in usecs).\n\tPeriod *uint64 `json:\"period,omitempty\"`\n\t// How much time realtime scheduling may use (in usecs).\n\tRealtimeRuntime *int64 `json:\"realtimeRuntime,omitempty\"`\n\t// CPU period to be used for realtime scheduling (in usecs).\n\tRealtimePeriod *uint64 `json:\"realtimePeriod,omitempty\"`\n\t// CPUs to use within the cpuset. Default is to use any CPU available.\n\tCpus string `json:\"cpus,omitempty\"`\n\t// List of memory nodes in the cpuset. Default is to use any available memory node.\n\tMems string `json:\"mems,omitempty\"`\n\t// cgroups are configured with minimum weight, 0: default behavior, 1: SCHED_IDLE.\n\tIdle *int64 `json:\"idle,omitempty\"`\n}\n\n// LinuxPids for Linux cgroup 'pids' resource management (Linux 4.3)\ntype LinuxPids struct {\n\t// Maximum number of PIDs. Default is \"no limit\".\n\tLimit *int64 `json:\"limit,omitempty\"`\n}\n\n// LinuxNetwork identification and priority configuration\ntype LinuxNetwork struct {\n\t// Set class identifier for container's network packets\n\tClassID *uint32 `json:\"classID,omitempty\"`\n\t// Set priority of network traffic for container\n\tPriorities []LinuxInterfacePriority `json:\"priorities,omitempty\"`\n}\n\n// LinuxRdma for Linux cgroup 'rdma' resource management (Linux 4.11)\ntype LinuxRdma struct {\n\t// Maximum number of HCA handles that can be opened. Default is \"no limit\".\n\tHcaHandles *uint32 `json:\"hcaHandles,omitempty\"`\n\t// Maximum number of HCA objects that can be created. Default is \"no limit\".\n\tHcaObjects *uint32 `json:\"hcaObjects,omitempty\"`\n}\n\n// LinuxResources has container runtime resource constraints\ntype LinuxResources struct {\n\t// Devices configures the device allowlist.\n\tDevices []LinuxDeviceCgroup `json:\"devices,omitempty\"`\n\t// Memory restriction configuration\n\tMemory *LinuxMemory `json:\"memory,omitempty\"`\n\t// CPU resource restriction configuration\n\tCPU *LinuxCPU `json:\"cpu,omitempty\"`\n\t// Task resource restriction configuration.\n\tPids *LinuxPids `json:\"pids,omitempty\"`\n\t// BlockIO restriction configuration\n\tBlockIO *LinuxBlockIO `json:\"blockIO,omitempty\"`\n\t// Hugetlb limits (in bytes). Default to reservation limits if supported.\n\tHugepageLimits []LinuxHugepageLimit `json:\"hugepageLimits,omitempty\"`\n\t// Network restriction configuration\n\tNetwork *LinuxNetwork `json:\"network,omitempty\"`\n\t// Rdma resource restriction configuration.\n\t// Limits are a set of key value pairs that define RDMA resource limits,\n\t// where the key is device name and value is resource limits.\n\tRdma map[string]LinuxRdma `json:\"rdma,omitempty\"`\n\t// Unified resources.\n\tUnified map[string]string `json:\"unified,omitempty\"`\n}\n\n// LinuxDevice represents the mknod information for a Linux special device file\ntype LinuxDevice struct {\n\t// Path to the device.\n\tPath string `json:\"path\"`\n\t// Device type, block, char, etc.\n\tType string `json:\"type\"`\n\t// Major is the device's major number.\n\tMajor int64 `json:\"major\"`\n\t// Minor is the device's minor number.\n\tMinor int64 `json:\"minor\"`\n\t// FileMode permission bits for the device.\n\tFileMode *os.FileMode `json:\"fileMode,omitempty\"`\n\t// UID of the device.\n\tUID *uint32 `json:\"uid,omitempty\"`\n\t// Gid of the device.\n\tGID *uint32 `json:\"gid,omitempty\"`\n}\n\n// LinuxNetDevice represents a single network device to be added to the container's network namespace\ntype LinuxNetDevice struct {\n\t// Name of the device in the container namespace\n\tName string `json:\"name,omitempty\"`\n}\n\n// LinuxDeviceCgroup represents a device rule for the devices specified to\n// the device controller\ntype LinuxDeviceCgroup struct {\n\t// Allow or deny\n\tAllow bool `json:\"allow\"`\n\t// Device type, block, char, etc.\n\tType string `json:\"type,omitempty\"`\n\t// Major is the device's major number.\n\tMajor *int64 `json:\"major,omitempty\"`\n\t// Minor is the device's minor number.\n\tMinor *int64 `json:\"minor,omitempty\"`\n\t// Cgroup access permissions format, rwm.\n\tAccess string `json:\"access,omitempty\"`\n}\n\n// LinuxPersonalityDomain refers to a personality domain.\ntype LinuxPersonalityDomain string\n\n// LinuxPersonalityFlag refers to an additional personality flag. None are currently defined.\ntype LinuxPersonalityFlag string\n\n// Define domain and flags for Personality\nconst (\n\t// PerLinux is the standard Linux personality\n\tPerLinux LinuxPersonalityDomain = \"LINUX\"\n\t// PerLinux32 sets personality to 32 bit\n\tPerLinux32 LinuxPersonalityDomain = \"LINUX32\"\n)\n\n// LinuxPersonality represents the Linux personality syscall input\ntype LinuxPersonality struct {\n\t// Domain for the personality\n\tDomain LinuxPersonalityDomain `json:\"domain\"`\n\t// Additional flags\n\tFlags []LinuxPersonalityFlag `json:\"flags,omitempty\"`\n}\n\n// Solaris contains platform-specific configuration for Solaris application containers.\ntype Solaris struct {\n\t// SMF FMRI which should go \"online\" before we start the container process.\n\tMilestone string `json:\"milestone,omitempty\"`\n\t// Maximum set of privileges any process in this container can obtain.\n\tLimitPriv string `json:\"limitpriv,omitempty\"`\n\t// The maximum amount of shared memory allowed for this container.\n\tMaxShmMemory string `json:\"maxShmMemory,omitempty\"`\n\t// Specification for automatic creation of network resources for this container.\n\tAnet []SolarisAnet `json:\"anet,omitempty\"`\n\t// Set limit on the amount of CPU time that can be used by container.\n\tCappedCPU *SolarisCappedCPU `json:\"cappedCPU,omitempty\"`\n\t// The physical and swap caps on the memory that can be used by this container.\n\tCappedMemory *SolarisCappedMemory `json:\"cappedMemory,omitempty\"`\n}\n\n// SolarisCappedCPU allows users to set limit on the amount of CPU time that can be used by container.\ntype SolarisCappedCPU struct {\n\tNcpus string `json:\"ncpus,omitempty\"`\n}\n\n// SolarisCappedMemory allows users to set the physical and swap caps on the memory that can be used by this container.\ntype SolarisCappedMemory struct {\n\tPhysical string `json:\"physical,omitempty\"`\n\tSwap     string `json:\"swap,omitempty\"`\n}\n\n// SolarisAnet provides the specification for automatic creation of network resources for this container.\ntype SolarisAnet struct {\n\t// Specify a name for the automatically created VNIC datalink.\n\tLinkname string `json:\"linkname,omitempty\"`\n\t// Specify the link over which the VNIC will be created.\n\tLowerlink string `json:\"lowerLink,omitempty\"`\n\t// The set of IP addresses that the container can use.\n\tAllowedaddr string `json:\"allowedAddress,omitempty\"`\n\t// Specifies whether allowedAddress limitation is to be applied to the VNIC.\n\tConfigallowedaddr string `json:\"configureAllowedAddress,omitempty\"`\n\t// The value of the optional default router.\n\tDefrouter string `json:\"defrouter,omitempty\"`\n\t// Enable one or more types of link protection.\n\tLinkprotection string `json:\"linkProtection,omitempty\"`\n\t// Set the VNIC's macAddress\n\tMacaddress string `json:\"macAddress,omitempty\"`\n}\n\n// Windows defines the runtime configuration for Windows based containers, including Hyper-V containers.\ntype Windows struct {\n\t// LayerFolders contains a list of absolute paths to directories containing image layers.\n\tLayerFolders []string `json:\"layerFolders\"`\n\t// Devices are the list of devices to be mapped into the container.\n\tDevices []WindowsDevice `json:\"devices,omitempty\"`\n\t// Resources contains information for handling resource constraints for the container.\n\tResources *WindowsResources `json:\"resources,omitempty\"`\n\t// CredentialSpec contains a JSON object describing a group Managed Service Account (gMSA) specification.\n\tCredentialSpec interface{} `json:\"credentialSpec,omitempty\"`\n\t// Servicing indicates if the container is being started in a mode to apply a Windows Update servicing operation.\n\tServicing bool `json:\"servicing,omitempty\"`\n\t// IgnoreFlushesDuringBoot indicates if the container is being started in a mode where disk writes are not flushed during its boot process.\n\tIgnoreFlushesDuringBoot bool `json:\"ignoreFlushesDuringBoot,omitempty\"`\n\t// HyperV contains information for running a container with Hyper-V isolation.\n\tHyperV *WindowsHyperV `json:\"hyperv,omitempty\"`\n\t// Network restriction configuration.\n\tNetwork *WindowsNetwork `json:\"network,omitempty\"`\n}\n\n// WindowsDevice represents information about a host device to be mapped into the container.\ntype WindowsDevice struct {\n\t// Device identifier: interface class GUID, etc.\n\tID string `json:\"id\"`\n\t// Device identifier type: \"class\", etc.\n\tIDType string `json:\"idType\"`\n}\n\n// WindowsResources has container runtime resource constraints for containers running on Windows.\ntype WindowsResources struct {\n\t// Memory restriction configuration.\n\tMemory *WindowsMemoryResources `json:\"memory,omitempty\"`\n\t// CPU resource restriction configuration.\n\tCPU *WindowsCPUResources `json:\"cpu,omitempty\"`\n\t// Storage restriction configuration.\n\tStorage *WindowsStorageResources `json:\"storage,omitempty\"`\n}\n\n// WindowsMemoryResources contains memory resource management settings.\ntype WindowsMemoryResources struct {\n\t// Memory limit in bytes.\n\tLimit *uint64 `json:\"limit,omitempty\"`\n}\n\n// WindowsCPUResources contains CPU resource management settings.\ntype WindowsCPUResources struct {\n\t// Count is the number of CPUs available to the container. It represents the\n\t// fraction of the configured processor `count` in a container in relation\n\t// to the processors available in the host. The fraction ultimately\n\t// determines the portion of processor cycles that the threads in a\n\t// container can use during each scheduling interval, as the number of\n\t// cycles per 10,000 cycles.\n\tCount *uint64 `json:\"count,omitempty\"`\n\t// Shares limits the share of processor time given to the container relative\n\t// to other workloads on the processor. The processor `shares` (`weight` at\n\t// the platform level) is a value between 0 and 10000.\n\tShares *uint16 `json:\"shares,omitempty\"`\n\t// Maximum determines the portion of processor cycles that the threads in a\n\t// container can use during each scheduling interval, as the number of\n\t// cycles per 10,000 cycles. Set processor `maximum` to a percentage times\n\t// 100.\n\tMaximum *uint16 `json:\"maximum,omitempty\"`\n\t// Set of CPUs to affinitize for this container.\n\tAffinity []WindowsCPUGroupAffinity `json:\"affinity,omitempty\"`\n}\n\n// Similar to _GROUP_AFFINITY struct defined in\n// https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/miniport/ns-miniport-_group_affinity\ntype WindowsCPUGroupAffinity struct {\n\t// CPU mask relative to this CPU group.\n\tMask uint64 `json:\"mask,omitempty\"`\n\t// Processor group the mask refers to, as returned by GetLogicalProcessorInformationEx.\n\tGroup uint32 `json:\"group,omitempty\"`\n}\n\n// WindowsStorageResources contains storage resource management settings.\ntype WindowsStorageResources struct {\n\t// Specifies maximum Iops for the system drive.\n\tIops *uint64 `json:\"iops,omitempty\"`\n\t// Specifies maximum bytes per second for the system drive.\n\tBps *uint64 `json:\"bps,omitempty\"`\n\t// Sandbox size specifies the minimum size of the system drive in bytes.\n\tSandboxSize *uint64 `json:\"sandboxSize,omitempty\"`\n}\n\n// WindowsNetwork contains network settings for Windows containers.\ntype WindowsNetwork struct {\n\t// List of HNS endpoints that the container should connect to.\n\tEndpointList []string `json:\"endpointList,omitempty\"`\n\t// Specifies if unqualified DNS name resolution is allowed.\n\tAllowUnqualifiedDNSQuery bool `json:\"allowUnqualifiedDNSQuery,omitempty\"`\n\t// Comma separated list of DNS suffixes to use for name resolution.\n\tDNSSearchList []string `json:\"DNSSearchList,omitempty\"`\n\t// Name (ID) of the container that we will share with the network stack.\n\tNetworkSharedContainerName string `json:\"networkSharedContainerName,omitempty\"`\n\t// name (ID) of the network namespace that will be used for the container.\n\tNetworkNamespace string `json:\"networkNamespace,omitempty\"`\n}\n\n// WindowsHyperV contains information for configuring a container to run with Hyper-V isolation.\ntype WindowsHyperV struct {\n\t// UtilityVMPath is an optional path to the image used for the Utility VM.\n\tUtilityVMPath string `json:\"utilityVMPath,omitempty\"`\n}\n\n// IOMems contains information about iomem addresses that should be passed to the VM.\ntype IOMems struct {\n\t// Guest Frame Number to map the iomem range. If GFN is not specified, the mapping will be done to the same Frame Number as was provided in FirstMFN.\n\tFirstGFN *uint64 `json:\"firstGFN,omitempty\"`\n\t// Physical page number of iomem regions.\n\tFirstMFN *uint64 `json:\"firstMFN\"`\n\t// Number of pages to be mapped.\n\tNrMFNs *uint64 `json:\"nrMFNs\"`\n}\n\n// Hardware configuration for the VM image\ntype HWConfig struct {\n\t// Path to the container device-tree file that should be passed to the VM configuration.\n\tDeviceTree string `json:\"deviceTree,omitempty\"`\n\t// Number of virtual cpus for the VM.\n\tVCPUs *uint32 `json:\"vcpus,omitempty\"`\n\t// Maximum memory in bytes allocated to the VM.\n\tMemory *uint64 `json:\"memory,omitempty\"`\n\t// Host device tree nodes to passthrough to the VM.\n\tDtDevs []string `json:\"dtdevs,omitempty\"`\n\t// Allow auto-translated domains to access specific hardware I/O memory pages.\n\tIOMems []IOMems `json:\"iomems,omitempty\"`\n\t// Allows VM to access specific physical IRQs.\n\tIrqs []uint32 `json:\"irqs,omitempty\"`\n}\n\n// VM contains information for virtual-machine-based containers.\ntype VM struct {\n\t// Hypervisor specifies hypervisor-related configuration for virtual-machine-based containers.\n\tHypervisor VMHypervisor `json:\"hypervisor,omitempty\"`\n\t// Kernel specifies kernel-related configuration for virtual-machine-based containers.\n\tKernel VMKernel `json:\"kernel\"`\n\t// Image specifies guest image related configuration for virtual-machine-based containers.\n\tImage VMImage `json:\"image,omitempty\"`\n\t// Hardware configuration that should be passed to the VM.\n\tHwConfig *HWConfig `json:\"hwconfig,omitempty\"`\n}\n\n// VMHypervisor contains information about the hypervisor to use for a virtual machine.\ntype VMHypervisor struct {\n\t// Path is the host path to the hypervisor used to manage the virtual machine.\n\tPath string `json:\"path\"`\n\t// Parameters specifies parameters to pass to the hypervisor.\n\tParameters []string `json:\"parameters,omitempty\"`\n}\n\n// VMKernel contains information about the kernel to use for a virtual machine.\ntype VMKernel struct {\n\t// Path is the host path to the kernel used to boot the virtual machine.\n\tPath string `json:\"path\"`\n\t// Parameters specifies parameters to pass to the kernel.\n\tParameters []string `json:\"parameters,omitempty\"`\n\t// InitRD is the host path to an initial ramdisk to be used by the kernel.\n\tInitRD string `json:\"initrd,omitempty\"`\n}\n\n// VMImage contains information about the virtual machine root image.\ntype VMImage struct {\n\t// Path is the host path to the root image that the VM kernel would boot into.\n\tPath string `json:\"path\"`\n\t// Format is the root image format type (e.g. \"qcow2\", \"raw\", \"vhd\", etc).\n\tFormat string `json:\"format\"`\n}\n\n// LinuxSeccomp represents syscall restrictions\ntype LinuxSeccomp struct {\n\tDefaultAction    LinuxSeccompAction `json:\"defaultAction\"`\n\tDefaultErrnoRet  *uint              `json:\"defaultErrnoRet,omitempty\"`\n\tArchitectures    []Arch             `json:\"architectures,omitempty\"`\n\tFlags            []LinuxSeccompFlag `json:\"flags,omitempty\"`\n\tListenerPath     string             `json:\"listenerPath,omitempty\"`\n\tListenerMetadata string             `json:\"listenerMetadata,omitempty\"`\n\tSyscalls         []LinuxSyscall     `json:\"syscalls,omitempty\"`\n}\n\n// Arch used for additional architectures\ntype Arch string\n\n// LinuxSeccompFlag is a flag to pass to seccomp(2).\ntype LinuxSeccompFlag string\n\nconst (\n\t// LinuxSeccompFlagLog is a seccomp flag to request all returned\n\t// actions except SECCOMP_RET_ALLOW to be logged. An administrator may\n\t// override this filter flag by preventing specific actions from being\n\t// logged via the /proc/sys/kernel/seccomp/actions_logged file. (since\n\t// Linux 4.14)\n\tLinuxSeccompFlagLog LinuxSeccompFlag = \"SECCOMP_FILTER_FLAG_LOG\"\n\n\t// LinuxSeccompFlagSpecAllow can be used to disable Speculative Store\n\t// Bypass mitigation. (since Linux 4.17)\n\tLinuxSeccompFlagSpecAllow LinuxSeccompFlag = \"SECCOMP_FILTER_FLAG_SPEC_ALLOW\"\n\n\t// LinuxSeccompFlagWaitKillableRecv can be used to switch to the wait\n\t// killable semantics. (since Linux 5.19)\n\tLinuxSeccompFlagWaitKillableRecv LinuxSeccompFlag = \"SECCOMP_FILTER_FLAG_WAIT_KILLABLE_RECV\"\n)\n\n// Additional architectures permitted to be used for system calls\n// By default only the native architecture of the kernel is permitted\nconst (\n\tArchX86         Arch = \"SCMP_ARCH_X86\"\n\tArchX86_64      Arch = \"SCMP_ARCH_X86_64\"\n\tArchX32         Arch = \"SCMP_ARCH_X32\"\n\tArchARM         Arch = \"SCMP_ARCH_ARM\"\n\tArchAARCH64     Arch = \"SCMP_ARCH_AARCH64\"\n\tArchMIPS        Arch = \"SCMP_ARCH_MIPS\"\n\tArchMIPS64      Arch = \"SCMP_ARCH_MIPS64\"\n\tArchMIPS64N32   Arch = \"SCMP_ARCH_MIPS64N32\"\n\tArchMIPSEL      Arch = \"SCMP_ARCH_MIPSEL\"\n\tArchMIPSEL64    Arch = \"SCMP_ARCH_MIPSEL64\"\n\tArchMIPSEL64N32 Arch = \"SCMP_ARCH_MIPSEL64N32\"\n\tArchPPC         Arch = \"SCMP_ARCH_PPC\"\n\tArchPPC64       Arch = \"SCMP_ARCH_PPC64\"\n\tArchPPC64LE     Arch = \"SCMP_ARCH_PPC64LE\"\n\tArchS390        Arch = \"SCMP_ARCH_S390\"\n\tArchS390X       Arch = \"SCMP_ARCH_S390X\"\n\tArchPARISC      Arch = \"SCMP_ARCH_PARISC\"\n\tArchPARISC64    Arch = \"SCMP_ARCH_PARISC64\"\n\tArchRISCV64     Arch = \"SCMP_ARCH_RISCV64\"\n\tArchLOONGARCH64 Arch = \"SCMP_ARCH_LOONGARCH64\"\n\tArchM68K        Arch = \"SCMP_ARCH_M68K\"\n\tArchSH          Arch = \"SCMP_ARCH_SH\"\n\tArchSHEB        Arch = \"SCMP_ARCH_SHEB\"\n)\n\n// LinuxSeccompAction taken upon Seccomp rule match\ntype LinuxSeccompAction string\n\n// Define actions for Seccomp rules\nconst (\n\tActKill        LinuxSeccompAction = \"SCMP_ACT_KILL\"\n\tActKillProcess LinuxSeccompAction = \"SCMP_ACT_KILL_PROCESS\"\n\tActKillThread  LinuxSeccompAction = \"SCMP_ACT_KILL_THREAD\"\n\tActTrap        LinuxSeccompAction = \"SCMP_ACT_TRAP\"\n\tActErrno       LinuxSeccompAction = \"SCMP_ACT_ERRNO\"\n\tActTrace       LinuxSeccompAction = \"SCMP_ACT_TRACE\"\n\tActAllow       LinuxSeccompAction = \"SCMP_ACT_ALLOW\"\n\tActLog         LinuxSeccompAction = \"SCMP_ACT_LOG\"\n\tActNotify      LinuxSeccompAction = \"SCMP_ACT_NOTIFY\"\n)\n\n// LinuxSeccompOperator used to match syscall arguments in Seccomp\ntype LinuxSeccompOperator string\n\n// Define operators for syscall arguments in Seccomp\nconst (\n\tOpNotEqual     LinuxSeccompOperator = \"SCMP_CMP_NE\"\n\tOpLessThan     LinuxSeccompOperator = \"SCMP_CMP_LT\"\n\tOpLessEqual    LinuxSeccompOperator = \"SCMP_CMP_LE\"\n\tOpEqualTo      LinuxSeccompOperator = \"SCMP_CMP_EQ\"\n\tOpGreaterEqual LinuxSeccompOperator = \"SCMP_CMP_GE\"\n\tOpGreaterThan  LinuxSeccompOperator = \"SCMP_CMP_GT\"\n\tOpMaskedEqual  LinuxSeccompOperator = \"SCMP_CMP_MASKED_EQ\"\n)\n\n// LinuxSeccompArg used for matching specific syscall arguments in Seccomp\ntype LinuxSeccompArg struct {\n\tIndex    uint                 `json:\"index\"`\n\tValue    uint64               `json:\"value\"`\n\tValueTwo uint64               `json:\"valueTwo,omitempty\"`\n\tOp       LinuxSeccompOperator `json:\"op\"`\n}\n\n// LinuxSyscall is used to match a syscall in Seccomp\ntype LinuxSyscall struct {\n\tNames    []string           `json:\"names\"`\n\tAction   LinuxSeccompAction `json:\"action\"`\n\tErrnoRet *uint              `json:\"errnoRet,omitempty\"`\n\tArgs     []LinuxSeccompArg  `json:\"args,omitempty\"`\n}\n\n// LinuxIntelRdt has container runtime resource constraints for Intel RDT CAT and MBA\n// features and flags enabling Intel RDT CMT and MBM features.\n// Intel RDT features are available in Linux 4.14 and newer kernel versions.\ntype LinuxIntelRdt struct {\n\t// The identity for RDT Class of Service\n\tClosID string `json:\"closID,omitempty\"`\n\n\t// Schemata specifies the complete schemata to be written as is to the\n\t// schemata file in resctrl fs. Each element represents a single line in the schemata file.\n\t// NOTE: This will overwrite schemas specified in the L3CacheSchema and/or\n\t// MemBwSchema fields.\n\tSchemata []string `json:\"schemata,omitempty\"`\n\n\t// The schema for L3 cache id and capacity bitmask (CBM)\n\t// Format: \"L3:<cache_id0>=<cbm0>;<cache_id1>=<cbm1>;...\"\n\t// NOTE: Should not be specified if Schemata is non-empty.\n\tL3CacheSchema string `json:\"l3CacheSchema,omitempty\"`\n\n\t// The schema of memory bandwidth per L3 cache id\n\t// Format: \"MB:<cache_id0>=bandwidth0;<cache_id1>=bandwidth1;...\"\n\t// The unit of memory bandwidth is specified in \"percentages\" by\n\t// default, and in \"MBps\" if MBA Software Controller is enabled.\n\t// NOTE: Should not be specified if Schemata is non-empty.\n\tMemBwSchema string `json:\"memBwSchema,omitempty\"`\n\n\t// EnableMonitoring enables resctrl monitoring for the container. This will\n\t// create a dedicated resctrl monitoring group for the container.\n\tEnableMonitoring bool `json:\"enableMonitoring,omitempty\"`\n}\n\n// LinuxMemoryPolicy represents input for the set_mempolicy syscall.\ntype LinuxMemoryPolicy struct {\n\t// Mode for the set_mempolicy syscall.\n\tMode MemoryPolicyModeType `json:\"mode\"`\n\n\t// Nodes representing the nodemask for the set_mempolicy syscall in comma separated ranges format.\n\t// Format: \"<node0>-<node1>,<node2>,<node3>-<node4>,...\"\n\tNodes string `json:\"nodes\"`\n\n\t// Flags for the set_mempolicy syscall.\n\tFlags []MemoryPolicyFlagType `json:\"flags,omitempty\"`\n}\n\n// ZOS contains platform-specific configuration for z/OS based containers.\ntype ZOS struct {\n\t// Namespaces contains the namespaces that are created and/or joined by the container\n\tNamespaces []ZOSNamespace `json:\"namespaces,omitempty\"`\n}\n\n// ZOSNamespace is the configuration for a z/OS namespace\ntype ZOSNamespace struct {\n\t// Type is the type of namespace\n\tType ZOSNamespaceType `json:\"type\"`\n\t// Path is a path to an existing namespace persisted on disk that can be joined\n\t// and is of the same type\n\tPath string `json:\"path,omitempty\"`\n}\n\n// ZOSNamespaceType is one of the z/OS namespaces\ntype ZOSNamespaceType string\n\nconst (\n\t// PIDNamespace for isolating process IDs\n\tZOSPIDNamespace ZOSNamespaceType = \"pid\"\n\t// MountNamespace for isolating mount points\n\tZOSMountNamespace ZOSNamespaceType = \"mount\"\n\t// IPCNamespace for isolating System V IPC, POSIX message queues\n\tZOSIPCNamespace ZOSNamespaceType = \"ipc\"\n\t// UTSNamespace for isolating hostname and NIS domain name\n\tZOSUTSNamespace ZOSNamespaceType = \"uts\"\n)\n\ntype MemoryPolicyModeType string\n\nconst (\n\tMpolDefault            MemoryPolicyModeType = \"MPOL_DEFAULT\"\n\tMpolBind               MemoryPolicyModeType = \"MPOL_BIND\"\n\tMpolInterleave         MemoryPolicyModeType = \"MPOL_INTERLEAVE\"\n\tMpolWeightedInterleave MemoryPolicyModeType = \"MPOL_WEIGHTED_INTERLEAVE\"\n\tMpolPreferred          MemoryPolicyModeType = \"MPOL_PREFERRED\"\n\tMpolPreferredMany      MemoryPolicyModeType = \"MPOL_PREFERRED_MANY\"\n\tMpolLocal              MemoryPolicyModeType = \"MPOL_LOCAL\"\n)\n\ntype MemoryPolicyFlagType string\n\nconst (\n\tMpolFNumaBalancing MemoryPolicyFlagType = \"MPOL_F_NUMA_BALANCING\"\n\tMpolFRelativeNodes MemoryPolicyFlagType = \"MPOL_F_RELATIVE_NODES\"\n\tMpolFStaticNodes   MemoryPolicyFlagType = \"MPOL_F_STATIC_NODES\"\n)\n\n// LinuxSchedulerPolicy represents different scheduling policies used with the Linux Scheduler\ntype LinuxSchedulerPolicy string\n\nconst (\n\t// SchedOther is the default scheduling policy\n\tSchedOther LinuxSchedulerPolicy = \"SCHED_OTHER\"\n\t// SchedFIFO is the First-In-First-Out scheduling policy\n\tSchedFIFO LinuxSchedulerPolicy = \"SCHED_FIFO\"\n\t// SchedRR is the Round-Robin scheduling policy\n\tSchedRR LinuxSchedulerPolicy = \"SCHED_RR\"\n\t// SchedBatch is the Batch scheduling policy\n\tSchedBatch LinuxSchedulerPolicy = \"SCHED_BATCH\"\n\t// SchedISO is the Isolation scheduling policy\n\tSchedISO LinuxSchedulerPolicy = \"SCHED_ISO\"\n\t// SchedIdle is the Idle scheduling policy\n\tSchedIdle LinuxSchedulerPolicy = \"SCHED_IDLE\"\n\t// SchedDeadline is the Deadline scheduling policy\n\tSchedDeadline LinuxSchedulerPolicy = \"SCHED_DEADLINE\"\n)\n\n// LinuxSchedulerFlag represents the flags used by the Linux Scheduler.\ntype LinuxSchedulerFlag string\n\nconst (\n\t// SchedFlagResetOnFork represents the reset on fork scheduling flag\n\tSchedFlagResetOnFork LinuxSchedulerFlag = \"SCHED_FLAG_RESET_ON_FORK\"\n\t// SchedFlagReclaim represents the reclaim scheduling flag\n\tSchedFlagReclaim LinuxSchedulerFlag = \"SCHED_FLAG_RECLAIM\"\n\t// SchedFlagDLOverrun represents the deadline overrun scheduling flag\n\tSchedFlagDLOverrun LinuxSchedulerFlag = \"SCHED_FLAG_DL_OVERRUN\"\n\t// SchedFlagKeepPolicy represents the keep policy scheduling flag\n\tSchedFlagKeepPolicy LinuxSchedulerFlag = \"SCHED_FLAG_KEEP_POLICY\"\n\t// SchedFlagKeepParams represents the keep parameters scheduling flag\n\tSchedFlagKeepParams LinuxSchedulerFlag = \"SCHED_FLAG_KEEP_PARAMS\"\n\t// SchedFlagUtilClampMin represents the utilization clamp minimum scheduling flag\n\tSchedFlagUtilClampMin LinuxSchedulerFlag = \"SCHED_FLAG_UTIL_CLAMP_MIN\"\n\t// SchedFlagUtilClampMin represents the utilization clamp maximum scheduling flag\n\tSchedFlagUtilClampMax LinuxSchedulerFlag = \"SCHED_FLAG_UTIL_CLAMP_MAX\"\n)\n\n// FreeBSD contains platform-specific configuration for FreeBSD based containers.\ntype FreeBSD struct {\n\t// Devices which are accessible in the container\n\tDevices []FreeBSDDevice `json:\"devices,omitempty\"`\n\t// Jail definition for this container\n\tJail *FreeBSDJail `json:\"jail,omitempty\"`\n}\n\ntype FreeBSDDevice struct {\n\t// Path to the device, relative to /dev.\n\tPath string `json:\"path\"`\n\t// FileMode permission bits for the device.\n\tMode *os.FileMode `json:\"mode,omitempty\"`\n}\n\n// FreeBSDJail describes how to configure the container's jail\ntype FreeBSDJail struct {\n\t// Parent jail name - this can be used to share a single vnet\n\t// across several containers\n\tParent string `json:\"parent,omitempty\"`\n\t// Whether to use parent UTS names or override in the container\n\tHost FreeBSDSharing `json:\"host,omitempty\"`\n\t// IPv4 address sharing for the container\n\tIp4 FreeBSDSharing `json:\"ip4,omitempty\"`\n\t// IPv4 addresses for the container\n\tIp4Addr []string `json:\"ip4Addr,omitempty\"`\n\t// IPv6 address sharing for the container\n\tIp6 FreeBSDSharing `json:\"ip6,omitempty\"`\n\t// IPv6 addresses for the container\n\tIp6Addr []string `json:\"ip6Addr,omitempty\"`\n\t// Which network stack to use for the container\n\tVnet FreeBSDSharing `json:\"vnet,omitempty\"`\n\t// If set, Ip4Addr and Ip6Addr addresses will be added to this interface\n\tInterface string `json:\"interface,omitempty\"`\n\t// List interfaces to be moved to the container's vnet\n\tVnetInterfaces []string `json:\"vnetInterfaces,omitempty\"`\n\t// SystemV IPC message sharing for the container\n\tSysVMsg FreeBSDSharing `json:\"sysvmsg,omitempty\"`\n\t// SystemV semaphore message sharing for the container\n\tSysVSem FreeBSDSharing `json:\"sysvsem,omitempty\"`\n\t// SystemV memory sharing for the container\n\tSysVShm FreeBSDSharing `json:\"sysvshm,omitempty\"`\n\t// Mount visibility (see jail(8) for details)\n\tEnforceStatfs *int `json:\"enforceStatfs,omitempty\"`\n\t// Jail capabilities\n\tAllow *FreeBSDJailAllow `json:\"allow,omitempty\"`\n}\n\n// These values are used to control access to features in the container, either\n// disabling the feature, sharing state with the parent or creating new private\n// state in the container.\ntype FreeBSDSharing string\n\nconst (\n\tFreeBSDShareDisable FreeBSDSharing = \"disable\"\n\tFreeBSDShareNew     FreeBSDSharing = \"new\"\n\tFreeBSDShareInherit FreeBSDSharing = \"inherit\"\n)\n\n// FreeBSDJailAllow describes jail capabilities\ntype FreeBSDJailAllow struct {\n\tSetHostname   bool     `json:\"setHostname,omitempty\"`\n\tRawSockets    bool     `json:\"rawSockets,omitempty\"`\n\tChflags       bool     `json:\"chflags,omitempty\"`\n\tMount         []string `json:\"mount,omitempty\"`\n\tQuotas        bool     `json:\"quotas,omitempty\"`\n\tSocketAf      bool     `json:\"socketAf,omitempty\"`\n\tMlock         bool     `json:\"mlock,omitempty\"`\n\tReservedPorts bool     `json:\"reservedPorts,omitempty\"`\n\tSuser         bool     `json:\"suser,omitempty\"`\n}\n"
  },
  {
    "path": "vendor/github.com/opencontainers/runtime-spec/specs-go/state.go",
    "content": "package specs\n\n// ContainerState represents the state of a container.\ntype ContainerState string\n\nconst (\n\t// StateCreating indicates that the container is being created\n\tStateCreating ContainerState = \"creating\"\n\n\t// StateCreated indicates that the runtime has finished the create operation\n\tStateCreated ContainerState = \"created\"\n\n\t// StateRunning indicates that the container process has executed the\n\t// user-specified program but has not exited\n\tStateRunning ContainerState = \"running\"\n\n\t// StateStopped indicates that the container process has exited\n\tStateStopped ContainerState = \"stopped\"\n)\n\n// State holds information about the runtime state of the container.\ntype State struct {\n\t// Version is the version of the specification that is supported.\n\tVersion string `json:\"ociVersion\"`\n\t// ID is the container ID\n\tID string `json:\"id\"`\n\t// Status is the runtime status of the container.\n\tStatus ContainerState `json:\"status\"`\n\t// Pid is the process ID for the container process.\n\tPid int `json:\"pid,omitempty\"`\n\t// Bundle is the path to the container's bundle directory.\n\tBundle string `json:\"bundle\"`\n\t// Annotations are key values associated with the container.\n\tAnnotations map[string]string `json:\"annotations,omitempty\"`\n}\n\nconst (\n\t// SeccompFdName is the name of the seccomp notify file descriptor.\n\tSeccompFdName string = \"seccompFd\"\n)\n\n// ContainerProcessState holds information about the state of a container process.\ntype ContainerProcessState struct {\n\t// Version is the version of the specification that is supported.\n\tVersion string `json:\"ociVersion\"`\n\t// Fds is a string array containing the names of the file descriptors passed.\n\t// The index of the name in this array corresponds to index of the file\n\t// descriptor in the `SCM_RIGHTS` array.\n\tFds []string `json:\"fds\"`\n\t// Pid is the process ID as seen by the runtime.\n\tPid int `json:\"pid\"`\n\t// Opaque metadata.\n\tMetadata string `json:\"metadata,omitempty\"`\n\t// State of the container.\n\tState State `json:\"state\"`\n}\n"
  },
  {
    "path": "vendor/github.com/opencontainers/runtime-spec/specs-go/version.go",
    "content": "package specs\n\nimport \"fmt\"\n\nconst (\n\t// VersionMajor is for an API incompatible changes\n\tVersionMajor = 1\n\t// VersionMinor is for functionality in a backwards-compatible manner\n\tVersionMinor = 3\n\t// VersionPatch is for backwards-compatible bug fixes\n\tVersionPatch = 0\n\n\t// VersionDev indicates development branch. Releases will be empty string.\n\tVersionDev = \"\"\n)\n\n// Version is the specification version that the package types support.\nvar Version = fmt.Sprintf(\"%d.%d.%d%s\", VersionMajor, VersionMinor, VersionPatch, VersionDev)\n"
  },
  {
    "path": "vendor/github.com/opencontainers/runtime-tools/LICENSE",
    "content": "\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   Copyright 2015 The Linux Foundation.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "vendor/github.com/opencontainers/runtime-tools/generate/config.go",
    "content": "package generate\n\nimport (\n\trspec \"github.com/opencontainers/runtime-spec/specs-go\"\n)\n\nfunc (g *Generator) initConfig() {\n\tif g.Config == nil {\n\t\tg.Config = &rspec.Spec{}\n\t}\n}\n\nfunc (g *Generator) initConfigProcess() {\n\tg.initConfig()\n\tif g.Config.Process == nil {\n\t\tg.Config.Process = &rspec.Process{}\n\t}\n}\n\nfunc (g *Generator) initConfigProcessConsoleSize() {\n\tg.initConfigProcess()\n\tif g.Config.Process.ConsoleSize == nil {\n\t\tg.Config.Process.ConsoleSize = &rspec.Box{}\n\t}\n}\n\nfunc (g *Generator) initConfigProcessCapabilities() {\n\tg.initConfigProcess()\n\tif g.Config.Process.Capabilities == nil {\n\t\tg.Config.Process.Capabilities = &rspec.LinuxCapabilities{}\n\t}\n}\n\nfunc (g *Generator) initConfigRoot() {\n\tg.initConfig()\n\tif g.Config.Root == nil {\n\t\tg.Config.Root = &rspec.Root{}\n\t}\n}\n\nfunc (g *Generator) initConfigAnnotations() {\n\tg.initConfig()\n\tif g.Config.Annotations == nil {\n\t\tg.Config.Annotations = make(map[string]string)\n\t}\n}\n\nfunc (g *Generator) initConfigHooks() {\n\tg.initConfig()\n\tif g.Config.Hooks == nil {\n\t\tg.Config.Hooks = &rspec.Hooks{}\n\t}\n}\n\nfunc (g *Generator) initConfigLinux() {\n\tg.initConfig()\n\tif g.Config.Linux == nil {\n\t\tg.Config.Linux = &rspec.Linux{}\n\t}\n}\n\nfunc (g *Generator) initConfigLinuxIntelRdt() {\n\tg.initConfigLinux()\n\tif g.Config.Linux.IntelRdt == nil {\n\t\tg.Config.Linux.IntelRdt = &rspec.LinuxIntelRdt{}\n\t}\n}\n\nfunc (g *Generator) initConfigLinuxSysctl() {\n\tg.initConfigLinux()\n\tif g.Config.Linux.Sysctl == nil {\n\t\tg.Config.Linux.Sysctl = make(map[string]string)\n\t}\n}\n\nfunc (g *Generator) initConfigLinuxSeccomp() {\n\tg.initConfigLinux()\n\tif g.Config.Linux.Seccomp == nil {\n\t\tg.Config.Linux.Seccomp = &rspec.LinuxSeccomp{}\n\t}\n}\n\nfunc (g *Generator) initConfigLinuxResources() {\n\tg.initConfigLinux()\n\tif g.Config.Linux.Resources == nil {\n\t\tg.Config.Linux.Resources = &rspec.LinuxResources{}\n\t}\n}\n\nfunc (g *Generator) initConfigLinuxResourcesBlockIO() {\n\tg.initConfigLinuxResources()\n\tif g.Config.Linux.Resources.BlockIO == nil {\n\t\tg.Config.Linux.Resources.BlockIO = &rspec.LinuxBlockIO{}\n\t}\n}\n\n// InitConfigLinuxResourcesCPU initializes CPU of Linux resources\nfunc (g *Generator) InitConfigLinuxResourcesCPU() {\n\tg.initConfigLinuxResources()\n\tif g.Config.Linux.Resources.CPU == nil {\n\t\tg.Config.Linux.Resources.CPU = &rspec.LinuxCPU{}\n\t}\n}\n\nfunc (g *Generator) initConfigLinuxResourcesMemory() {\n\tg.initConfigLinuxResources()\n\tif g.Config.Linux.Resources.Memory == nil {\n\t\tg.Config.Linux.Resources.Memory = &rspec.LinuxMemory{}\n\t}\n}\n\nfunc (g *Generator) initConfigLinuxResourcesNetwork() {\n\tg.initConfigLinuxResources()\n\tif g.Config.Linux.Resources.Network == nil {\n\t\tg.Config.Linux.Resources.Network = &rspec.LinuxNetwork{}\n\t}\n}\n\nfunc (g *Generator) initConfigLinuxResourcesPids() {\n\tg.initConfigLinuxResources()\n\tif g.Config.Linux.Resources.Pids == nil {\n\t\tg.Config.Linux.Resources.Pids = &rspec.LinuxPids{}\n\t}\n}\n\nfunc (g *Generator) initConfigLinuxResourcesUnified() {\n\tg.initConfigLinuxResources()\n\tif g.Config.Linux.Resources.Unified == nil {\n\t\tg.Config.Linux.Resources.Unified = map[string]string{}\n\t}\n}\n\nfunc (g *Generator) initConfigSolaris() {\n\tg.initConfig()\n\tif g.Config.Solaris == nil {\n\t\tg.Config.Solaris = &rspec.Solaris{}\n\t}\n}\n\nfunc (g *Generator) initConfigSolarisCappedCPU() {\n\tg.initConfigSolaris()\n\tif g.Config.Solaris.CappedCPU == nil {\n\t\tg.Config.Solaris.CappedCPU = &rspec.SolarisCappedCPU{}\n\t}\n}\n\nfunc (g *Generator) initConfigSolarisCappedMemory() {\n\tg.initConfigSolaris()\n\tif g.Config.Solaris.CappedMemory == nil {\n\t\tg.Config.Solaris.CappedMemory = &rspec.SolarisCappedMemory{}\n\t}\n}\n\nfunc (g *Generator) initConfigWindows() {\n\tg.initConfig()\n\tif g.Config.Windows == nil {\n\t\tg.Config.Windows = &rspec.Windows{}\n\t}\n}\n\nfunc (g *Generator) initConfigWindowsNetwork() {\n\tg.initConfigWindows()\n\tif g.Config.Windows.Network == nil {\n\t\tg.Config.Windows.Network = &rspec.WindowsNetwork{}\n\t}\n}\n\nfunc (g *Generator) initConfigWindowsHyperV() {\n\tg.initConfigWindows()\n\tif g.Config.Windows.HyperV == nil {\n\t\tg.Config.Windows.HyperV = &rspec.WindowsHyperV{}\n\t}\n}\n\nfunc (g *Generator) initConfigWindowsResources() {\n\tg.initConfigWindows()\n\tif g.Config.Windows.Resources == nil {\n\t\tg.Config.Windows.Resources = &rspec.WindowsResources{}\n\t}\n}\n\nfunc (g *Generator) initConfigWindowsResourcesMemory() {\n\tg.initConfigWindowsResources()\n\tif g.Config.Windows.Resources.Memory == nil {\n\t\tg.Config.Windows.Resources.Memory = &rspec.WindowsMemoryResources{}\n\t}\n}\n\nfunc (g *Generator) initConfigVM() {\n\tg.initConfig()\n\tif g.Config.VM == nil {\n\t\tg.Config.VM = &rspec.VM{}\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/opencontainers/runtime-tools/generate/generate.go",
    "content": "// Package generate implements functions generating container config files.\npackage generate\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"slices\"\n\t\"strings\"\n\n\t\"github.com/moby/sys/capability\"\n\trspec \"github.com/opencontainers/runtime-spec/specs-go\"\n\t\"github.com/opencontainers/runtime-tools/generate/seccomp\"\n\tcapsCheck \"github.com/opencontainers/runtime-tools/validate/capabilities\"\n)\n\nvar (\n\t// Namespaces include the names of supported namespaces.\n\tNamespaces = []string{\"network\", \"pid\", \"mount\", \"ipc\", \"uts\", \"user\", \"cgroup\"}\n\n\t// we don't care about order...and this is way faster...\n\tremoveFunc = func(s []string, i int) []string {\n\t\ts[i] = s[len(s)-1]\n\t\treturn s[:len(s)-1]\n\t}\n)\n\nconst (\n\t// UnlimitedPidsLimit can be passed to SetLinuxResourcesPidsLimit to\n\t// request unlimited PIDs.\n\tUnlimitedPidsLimit int64 = -1\n)\n\n// Generator represents a generator for a container config.\ntype Generator struct {\n\tConfig       *rspec.Spec\n\tHostSpecific bool\n\t// This is used to keep a cache of the ENVs added to improve\n\t// performance when adding a huge number of ENV variables\n\tenvMap map[string]int\n}\n\n// ExportOptions have toggles for exporting only certain parts of the specification\ntype ExportOptions struct {\n\tSeccomp bool // seccomp toggles if only seccomp should be exported\n}\n\n// New creates a configuration Generator with the default\n// configuration for the target operating system.\nfunc New(os string) (generator Generator, err error) {\n\tif os != \"linux\" && os != \"solaris\" && os != \"windows\" && os != \"freebsd\" {\n\t\treturn generator, fmt.Errorf(\"no defaults configured for %s\", os)\n\t}\n\n\tconfig := rspec.Spec{\n\t\tVersion:  rspec.Version,\n\t\tHostname: \"mrsdalloway\",\n\t}\n\n\tif os == \"windows\" {\n\t\tconfig.Process = &rspec.Process{\n\t\t\tArgs: []string{\n\t\t\t\t\"cmd\",\n\t\t\t},\n\t\t\tCwd: `C:\\`,\n\t\t}\n\t\tconfig.Windows = &rspec.Windows{}\n\t} else {\n\t\tconfig.Root = &rspec.Root{\n\t\t\tPath:     \"rootfs\",\n\t\t\tReadonly: false,\n\t\t}\n\t\tconfig.Process = &rspec.Process{\n\t\t\tTerminal: false,\n\t\t\tArgs: []string{\n\t\t\t\t\"sh\",\n\t\t\t},\n\t\t}\n\t}\n\n\tif os == \"linux\" || os == \"solaris\" || os == \"freebsd\" {\n\t\tconfig.Process.User = rspec.User{}\n\t\tconfig.Process.Env = []string{\n\t\t\t\"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\",\n\t\t\t\"TERM=xterm\",\n\t\t}\n\t\tconfig.Process.Cwd = \"/\"\n\t\tconfig.Process.Rlimits = []rspec.POSIXRlimit{\n\t\t\t{\n\t\t\t\tType: \"RLIMIT_NOFILE\",\n\t\t\t\tHard: uint64(1024),\n\t\t\t\tSoft: uint64(1024),\n\t\t\t},\n\t\t}\n\t}\n\n\tswitch os {\n\tcase \"linux\":\n\t\tconfig.Process.Capabilities = &rspec.LinuxCapabilities{\n\t\t\tBounding: []string{\n\t\t\t\t\"CAP_CHOWN\",\n\t\t\t\t\"CAP_DAC_OVERRIDE\",\n\t\t\t\t\"CAP_FSETID\",\n\t\t\t\t\"CAP_FOWNER\",\n\t\t\t\t\"CAP_MKNOD\",\n\t\t\t\t\"CAP_NET_RAW\",\n\t\t\t\t\"CAP_SETGID\",\n\t\t\t\t\"CAP_SETUID\",\n\t\t\t\t\"CAP_SETFCAP\",\n\t\t\t\t\"CAP_SETPCAP\",\n\t\t\t\t\"CAP_NET_BIND_SERVICE\",\n\t\t\t\t\"CAP_SYS_CHROOT\",\n\t\t\t\t\"CAP_KILL\",\n\t\t\t\t\"CAP_AUDIT_WRITE\",\n\t\t\t},\n\t\t\tPermitted: []string{\n\t\t\t\t\"CAP_CHOWN\",\n\t\t\t\t\"CAP_DAC_OVERRIDE\",\n\t\t\t\t\"CAP_FSETID\",\n\t\t\t\t\"CAP_FOWNER\",\n\t\t\t\t\"CAP_MKNOD\",\n\t\t\t\t\"CAP_NET_RAW\",\n\t\t\t\t\"CAP_SETGID\",\n\t\t\t\t\"CAP_SETUID\",\n\t\t\t\t\"CAP_SETFCAP\",\n\t\t\t\t\"CAP_SETPCAP\",\n\t\t\t\t\"CAP_NET_BIND_SERVICE\",\n\t\t\t\t\"CAP_SYS_CHROOT\",\n\t\t\t\t\"CAP_KILL\",\n\t\t\t\t\"CAP_AUDIT_WRITE\",\n\t\t\t},\n\t\t\tInheritable: []string{\n\t\t\t\t\"CAP_CHOWN\",\n\t\t\t\t\"CAP_DAC_OVERRIDE\",\n\t\t\t\t\"CAP_FSETID\",\n\t\t\t\t\"CAP_FOWNER\",\n\t\t\t\t\"CAP_MKNOD\",\n\t\t\t\t\"CAP_NET_RAW\",\n\t\t\t\t\"CAP_SETGID\",\n\t\t\t\t\"CAP_SETUID\",\n\t\t\t\t\"CAP_SETFCAP\",\n\t\t\t\t\"CAP_SETPCAP\",\n\t\t\t\t\"CAP_NET_BIND_SERVICE\",\n\t\t\t\t\"CAP_SYS_CHROOT\",\n\t\t\t\t\"CAP_KILL\",\n\t\t\t\t\"CAP_AUDIT_WRITE\",\n\t\t\t},\n\t\t\tEffective: []string{\n\t\t\t\t\"CAP_CHOWN\",\n\t\t\t\t\"CAP_DAC_OVERRIDE\",\n\t\t\t\t\"CAP_FSETID\",\n\t\t\t\t\"CAP_FOWNER\",\n\t\t\t\t\"CAP_MKNOD\",\n\t\t\t\t\"CAP_NET_RAW\",\n\t\t\t\t\"CAP_SETGID\",\n\t\t\t\t\"CAP_SETUID\",\n\t\t\t\t\"CAP_SETFCAP\",\n\t\t\t\t\"CAP_SETPCAP\",\n\t\t\t\t\"CAP_NET_BIND_SERVICE\",\n\t\t\t\t\"CAP_SYS_CHROOT\",\n\t\t\t\t\"CAP_KILL\",\n\t\t\t\t\"CAP_AUDIT_WRITE\",\n\t\t\t},\n\t\t\tAmbient: []string{\n\t\t\t\t\"CAP_CHOWN\",\n\t\t\t\t\"CAP_DAC_OVERRIDE\",\n\t\t\t\t\"CAP_FSETID\",\n\t\t\t\t\"CAP_FOWNER\",\n\t\t\t\t\"CAP_MKNOD\",\n\t\t\t\t\"CAP_NET_RAW\",\n\t\t\t\t\"CAP_SETGID\",\n\t\t\t\t\"CAP_SETUID\",\n\t\t\t\t\"CAP_SETFCAP\",\n\t\t\t\t\"CAP_SETPCAP\",\n\t\t\t\t\"CAP_NET_BIND_SERVICE\",\n\t\t\t\t\"CAP_SYS_CHROOT\",\n\t\t\t\t\"CAP_KILL\",\n\t\t\t\t\"CAP_AUDIT_WRITE\",\n\t\t\t},\n\t\t}\n\t\tconfig.Mounts = []rspec.Mount{\n\t\t\t{\n\t\t\t\tDestination: \"/proc\",\n\t\t\t\tType:        \"proc\",\n\t\t\t\tSource:      \"proc\",\n\t\t\t\tOptions:     []string{\"nosuid\", \"noexec\", \"nodev\"},\n\t\t\t},\n\t\t\t{\n\t\t\t\tDestination: \"/dev\",\n\t\t\t\tType:        \"tmpfs\",\n\t\t\t\tSource:      \"tmpfs\",\n\t\t\t\tOptions:     []string{\"nosuid\", \"strictatime\", \"mode=755\", \"size=65536k\"},\n\t\t\t},\n\t\t\t{\n\t\t\t\tDestination: \"/dev/pts\",\n\t\t\t\tType:        \"devpts\",\n\t\t\t\tSource:      \"devpts\",\n\t\t\t\tOptions:     []string{\"nosuid\", \"noexec\", \"newinstance\", \"ptmxmode=0666\", \"mode=0620\", \"gid=5\"},\n\t\t\t},\n\t\t\t{\n\t\t\t\tDestination: \"/dev/shm\",\n\t\t\t\tType:        \"tmpfs\",\n\t\t\t\tSource:      \"shm\",\n\t\t\t\tOptions:     []string{\"nosuid\", \"noexec\", \"nodev\", \"mode=1777\", \"size=65536k\"},\n\t\t\t},\n\t\t\t{\n\t\t\t\tDestination: \"/dev/mqueue\",\n\t\t\t\tType:        \"mqueue\",\n\t\t\t\tSource:      \"mqueue\",\n\t\t\t\tOptions:     []string{\"nosuid\", \"noexec\", \"nodev\"},\n\t\t\t},\n\t\t\t{\n\t\t\t\tDestination: \"/sys\",\n\t\t\t\tType:        \"sysfs\",\n\t\t\t\tSource:      \"sysfs\",\n\t\t\t\tOptions:     []string{\"nosuid\", \"noexec\", \"nodev\", \"ro\"},\n\t\t\t},\n\t\t}\n\t\tconfig.Linux = &rspec.Linux{\n\t\t\tResources: &rspec.LinuxResources{\n\t\t\t\tDevices: []rspec.LinuxDeviceCgroup{\n\t\t\t\t\t{\n\t\t\t\t\t\tAllow:  false,\n\t\t\t\t\t\tAccess: \"rwm\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tNamespaces: []rspec.LinuxNamespace{\n\t\t\t\t{\n\t\t\t\t\tType: \"pid\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tType: \"network\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tType: \"ipc\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tType: \"uts\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tType: \"mount\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tSeccomp: seccomp.DefaultProfile(&config),\n\t\t}\n\tcase \"freebsd\":\n\t\tconfig.Mounts = []rspec.Mount{\n\t\t\t{\n\t\t\t\tDestination: \"/dev\",\n\t\t\t\tType:        \"devfs\",\n\t\t\t\tSource:      \"devfs\",\n\t\t\t\tOptions:     []string{\"ruleset=4\"},\n\t\t\t},\n\t\t\t{\n\t\t\t\tDestination: \"/dev/fd\",\n\t\t\t\tType:        \"fdescfs\",\n\t\t\t\tSource:      \"fdesc\",\n\t\t\t\tOptions:     []string{},\n\t\t\t},\n\t\t}\n\t}\n\n\tenvCache := map[string]int{}\n\tif config.Process != nil {\n\t\tenvCache = createEnvCacheMap(config.Process.Env)\n\t}\n\n\treturn Generator{Config: &config, envMap: envCache}, nil\n}\n\n// NewFromSpec creates a configuration Generator from a given\n// configuration.\nfunc NewFromSpec(config *rspec.Spec) Generator {\n\tenvCache := map[string]int{}\n\tif config != nil && config.Process != nil {\n\t\tenvCache = createEnvCacheMap(config.Process.Env)\n\t}\n\n\treturn Generator{\n\t\tConfig: config,\n\t\tenvMap: envCache,\n\t}\n}\n\n// NewFromFile loads the template specified in a file into a\n// configuration Generator.\nfunc NewFromFile(path string) (Generator, error) {\n\tcf, err := os.Open(path)\n\tif err != nil {\n\t\tif os.IsNotExist(err) {\n\t\t\treturn Generator{}, fmt.Errorf(\"template configuration at %s not found\", path)\n\t\t}\n\t\treturn Generator{}, err\n\t}\n\tdefer cf.Close()\n\n\treturn NewFromTemplate(cf)\n}\n\n// NewFromTemplate loads the template from io.Reader into a\n// configuration Generator.\nfunc NewFromTemplate(r io.Reader) (Generator, error) {\n\tvar config rspec.Spec\n\tif err := json.NewDecoder(r).Decode(&config); err != nil {\n\t\treturn Generator{}, err\n\t}\n\n\tenvCache := map[string]int{}\n\tif config.Process != nil {\n\t\tenvCache = createEnvCacheMap(config.Process.Env)\n\t}\n\n\treturn Generator{\n\t\tConfig: &config,\n\t\tenvMap: envCache,\n\t}, nil\n}\n\n// createEnvCacheMap creates a hash map with the ENV variables given by the config\nfunc createEnvCacheMap(env []string) map[string]int {\n\tenvMap := make(map[string]int, len(env))\n\tfor i, val := range env {\n\t\tenvMap[val] = i\n\t}\n\treturn envMap\n}\n\n// SetSpec sets the configuration in the Generator g.\n//\n// Deprecated: Replace with:\n//\n//\tUse generator.Config = config\nfunc (g *Generator) SetSpec(config *rspec.Spec) {\n\tg.Config = config\n}\n\n// Spec gets the configuration from the Generator g.\n//\n// Deprecated: Replace with generator.Config.\nfunc (g *Generator) Spec() *rspec.Spec {\n\treturn g.Config\n}\n\n// Save writes the configuration into w.\nfunc (g *Generator) Save(w io.Writer, exportOpts ExportOptions) (err error) {\n\tvar data []byte\n\n\tif g.Config.Linux != nil {\n\t\tbuf, err := json.Marshal(g.Config.Linux)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif string(buf) == \"{}\" {\n\t\t\tg.Config.Linux = nil\n\t\t}\n\t}\n\n\tif exportOpts.Seccomp {\n\t\tdata, err = json.MarshalIndent(g.Config.Linux.Seccomp, \"\", \"\\t\")\n\t} else {\n\t\tdata, err = json.MarshalIndent(g.Config, \"\", \"\\t\")\n\t}\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t_, err = w.Write(data)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\n// SaveToFile writes the configuration into a file.\nfunc (g *Generator) SaveToFile(path string, exportOpts ExportOptions) error {\n\tf, err := os.Create(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer f.Close()\n\treturn g.Save(f, exportOpts)\n}\n\n// SetVersion sets g.Config.Version.\nfunc (g *Generator) SetVersion(version string) {\n\tg.initConfig()\n\tg.Config.Version = version\n}\n\n// SetRootPath sets g.Config.Root.Path.\nfunc (g *Generator) SetRootPath(path string) {\n\tg.initConfigRoot()\n\tg.Config.Root.Path = path\n}\n\n// SetRootReadonly sets g.Config.Root.Readonly.\nfunc (g *Generator) SetRootReadonly(b bool) {\n\tg.initConfigRoot()\n\tg.Config.Root.Readonly = b\n}\n\n// SetHostname sets g.Config.Hostname.\nfunc (g *Generator) SetHostname(s string) {\n\tg.initConfig()\n\tg.Config.Hostname = s\n}\n\n// SetOCIVersion sets g.Config.Version.\nfunc (g *Generator) SetOCIVersion(s string) {\n\tg.initConfig()\n\tg.Config.Version = s\n}\n\n// ClearAnnotations clears g.Config.Annotations.\nfunc (g *Generator) ClearAnnotations() {\n\tif g.Config == nil {\n\t\treturn\n\t}\n\tg.Config.Annotations = make(map[string]string)\n}\n\n// AddAnnotation adds an annotation into g.Config.Annotations.\nfunc (g *Generator) AddAnnotation(key, value string) {\n\tg.initConfigAnnotations()\n\tg.Config.Annotations[key] = value\n}\n\n// RemoveAnnotation remove an annotation from g.Config.Annotations.\nfunc (g *Generator) RemoveAnnotation(key string) {\n\tif g.Config == nil || g.Config.Annotations == nil {\n\t\treturn\n\t}\n\tdelete(g.Config.Annotations, key)\n}\n\n// RemoveHostname removes g.Config.Hostname, setting it to an empty string.\nfunc (g *Generator) RemoveHostname() {\n\tif g.Config == nil {\n\t\treturn\n\t}\n\tg.Config.Hostname = \"\"\n}\n\n// SetProcessConsoleSize sets g.Config.Process.ConsoleSize.\nfunc (g *Generator) SetProcessConsoleSize(width, height uint) {\n\tg.initConfigProcessConsoleSize()\n\tg.Config.Process.ConsoleSize.Width = width\n\tg.Config.Process.ConsoleSize.Height = height\n}\n\n// SetProcessUID sets g.Config.Process.User.UID.\nfunc (g *Generator) SetProcessUID(uid uint32) {\n\tg.initConfigProcess()\n\tg.Config.Process.User.UID = uid\n}\n\n// SetProcessUsername sets g.Config.Process.User.Username.\nfunc (g *Generator) SetProcessUsername(username string) {\n\tg.initConfigProcess()\n\tg.Config.Process.User.Username = username\n}\n\n// SetProcessUmask sets g.Config.Process.User.Umask.\nfunc (g *Generator) SetProcessUmask(umask uint32) {\n\tg.initConfigProcess()\n\tu := umask\n\tg.Config.Process.User.Umask = &u\n}\n\n// SetProcessGID sets g.Config.Process.User.GID.\nfunc (g *Generator) SetProcessGID(gid uint32) {\n\tg.initConfigProcess()\n\tg.Config.Process.User.GID = gid\n}\n\n// SetProcessCwd sets g.Config.Process.Cwd.\nfunc (g *Generator) SetProcessCwd(cwd string) {\n\tg.initConfigProcess()\n\tg.Config.Process.Cwd = cwd\n}\n\n// SetProcessNoNewPrivileges sets g.Config.Process.NoNewPrivileges.\nfunc (g *Generator) SetProcessNoNewPrivileges(b bool) {\n\tg.initConfigProcess()\n\tg.Config.Process.NoNewPrivileges = b\n}\n\n// SetProcessTerminal sets g.Config.Process.Terminal.\nfunc (g *Generator) SetProcessTerminal(b bool) {\n\tg.initConfigProcess()\n\tg.Config.Process.Terminal = b\n}\n\n// SetProcessApparmorProfile sets g.Config.Process.ApparmorProfile.\nfunc (g *Generator) SetProcessApparmorProfile(prof string) {\n\tg.initConfigProcess()\n\tg.Config.Process.ApparmorProfile = prof\n}\n\n// SetProcessArgs sets g.Config.Process.Args.\nfunc (g *Generator) SetProcessArgs(args []string) {\n\tg.initConfigProcess()\n\tg.Config.Process.Args = args\n}\n\n// ClearProcessEnv clears g.Config.Process.Env.\nfunc (g *Generator) ClearProcessEnv() {\n\tif g.Config == nil || g.Config.Process == nil {\n\t\treturn\n\t}\n\tg.Config.Process.Env = []string{}\n\t// Clear out the env cache map as well\n\tg.envMap = map[string]int{}\n}\n\n// AddProcessEnv adds name=value into g.Config.Process.Env, or replaces an\n// existing entry with the given name.\nfunc (g *Generator) AddProcessEnv(name, value string) {\n\tif name == \"\" {\n\t\treturn\n\t}\n\n\tg.initConfigProcess()\n\tg.addEnv(fmt.Sprintf(\"%s=%s\", name, value), name)\n}\n\n// AddMultipleProcessEnv adds multiple name=value into g.Config.Process.Env, or replaces\n// existing entries with the given name.\nfunc (g *Generator) AddMultipleProcessEnv(envs []string) {\n\tg.initConfigProcess()\n\n\tfor _, val := range envs {\n\t\tsplit := strings.SplitN(val, \"=\", 2)\n\t\tg.addEnv(val, split[0])\n\t}\n}\n\n// addEnv looks through adds ENV to the Process and checks envMap for\n// any duplicates\n// This is called by both AddMultipleProcessEnv and AddProcessEnv\nfunc (g *Generator) addEnv(env, key string) {\n\tif idx, ok := g.envMap[key]; ok {\n\t\t// The ENV exists in the cache, so change its value in g.Config.Process.Env\n\t\tg.Config.Process.Env[idx] = env\n\t} else {\n\t\t// else the env doesn't exist, so add it and add it's index to g.envMap\n\t\tg.Config.Process.Env = append(g.Config.Process.Env, env)\n\t\tg.envMap[key] = len(g.Config.Process.Env) - 1\n\t}\n}\n\n// AddProcessRlimits adds rlimit into g.Config.Process.Rlimits.\nfunc (g *Generator) AddProcessRlimits(rType string, rHard uint64, rSoft uint64) {\n\tg.initConfigProcess()\n\tfor i, rlimit := range g.Config.Process.Rlimits {\n\t\tif rlimit.Type == rType {\n\t\t\tg.Config.Process.Rlimits[i].Hard = rHard\n\t\t\tg.Config.Process.Rlimits[i].Soft = rSoft\n\t\t\treturn\n\t\t}\n\t}\n\n\tnewRlimit := rspec.POSIXRlimit{\n\t\tType: rType,\n\t\tHard: rHard,\n\t\tSoft: rSoft,\n\t}\n\tg.Config.Process.Rlimits = append(g.Config.Process.Rlimits, newRlimit)\n}\n\n// RemoveProcessRlimits removes a rlimit from g.Config.Process.Rlimits.\nfunc (g *Generator) RemoveProcessRlimits(rType string) {\n\tif g.Config == nil || g.Config.Process == nil {\n\t\treturn\n\t}\n\tfor i, rlimit := range g.Config.Process.Rlimits {\n\t\tif rlimit.Type == rType {\n\t\t\tg.Config.Process.Rlimits = append(g.Config.Process.Rlimits[:i], g.Config.Process.Rlimits[i+1:]...)\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// ClearProcessRlimits clear g.Config.Process.Rlimits.\nfunc (g *Generator) ClearProcessRlimits() {\n\tif g.Config == nil || g.Config.Process == nil {\n\t\treturn\n\t}\n\tg.Config.Process.Rlimits = []rspec.POSIXRlimit{}\n}\n\n// ClearProcessAdditionalGids clear g.Config.Process.AdditionalGids.\nfunc (g *Generator) ClearProcessAdditionalGids() {\n\tif g.Config == nil || g.Config.Process == nil {\n\t\treturn\n\t}\n\tg.Config.Process.User.AdditionalGids = []uint32{}\n}\n\n// AddProcessAdditionalGid adds an additional gid into g.Config.Process.AdditionalGids.\nfunc (g *Generator) AddProcessAdditionalGid(gid uint32) { //nolint:staticcheck // Ignore ST1003: method AddProcessAdditionalGid should be AddProcessAdditionalGID\n\tg.initConfigProcess()\n\tif slices.Contains(g.Config.Process.User.AdditionalGids, gid) {\n\t\treturn\n\t}\n\tg.Config.Process.User.AdditionalGids = append(g.Config.Process.User.AdditionalGids, gid)\n}\n\n// SetProcessSelinuxLabel sets g.Config.Process.SelinuxLabel.\nfunc (g *Generator) SetProcessSelinuxLabel(label string) {\n\tg.initConfigProcess()\n\tg.Config.Process.SelinuxLabel = label\n}\n\n// SetLinuxCgroupsPath sets g.Config.Linux.CgroupsPath.\nfunc (g *Generator) SetLinuxCgroupsPath(path string) {\n\tg.initConfigLinux()\n\tg.Config.Linux.CgroupsPath = path\n}\n\n// SetLinuxIntelRdtClosID sets g.Config.Linux.IntelRdt.ClosID\nfunc (g *Generator) SetLinuxIntelRdtClosID(clos string) {\n\tg.initConfigLinuxIntelRdt()\n\tg.Config.Linux.IntelRdt.ClosID = clos\n}\n\n// SetLinuxIntelRdtL3CacheSchema sets g.Config.Linux.IntelRdt.L3CacheSchema\nfunc (g *Generator) SetLinuxIntelRdtL3CacheSchema(schema string) {\n\tg.initConfigLinuxIntelRdt()\n\tg.Config.Linux.IntelRdt.L3CacheSchema = schema\n}\n\n// SetLinuxMountLabel sets g.Config.Linux.MountLabel.\nfunc (g *Generator) SetLinuxMountLabel(label string) {\n\tg.initConfigLinux()\n\tg.Config.Linux.MountLabel = label\n}\n\n// SetProcessOOMScoreAdj sets g.Config.Process.OOMScoreAdj.\nfunc (g *Generator) SetProcessOOMScoreAdj(adj int) {\n\tg.initConfigProcess()\n\tg.Config.Process.OOMScoreAdj = &adj\n}\n\n// SetLinuxResourcesBlockIOLeafWeight sets g.Config.Linux.Resources.BlockIO.LeafWeight.\nfunc (g *Generator) SetLinuxResourcesBlockIOLeafWeight(weight uint16) {\n\tg.initConfigLinuxResourcesBlockIO()\n\tg.Config.Linux.Resources.BlockIO.LeafWeight = &weight\n}\n\n// AddLinuxResourcesBlockIOLeafWeightDevice adds or sets g.Config.Linux.Resources.BlockIO.WeightDevice.LeafWeight.\nfunc (g *Generator) AddLinuxResourcesBlockIOLeafWeightDevice(major int64, minor int64, weight uint16) {\n\tg.initConfigLinuxResourcesBlockIO()\n\tfor i, weightDevice := range g.Config.Linux.Resources.BlockIO.WeightDevice {\n\t\tif weightDevice.Major == major && weightDevice.Minor == minor {\n\t\t\tg.Config.Linux.Resources.BlockIO.WeightDevice[i].LeafWeight = &weight\n\t\t\treturn\n\t\t}\n\t}\n\tweightDevice := new(rspec.LinuxWeightDevice)\n\tweightDevice.Major = major\n\tweightDevice.Minor = minor\n\tweightDevice.LeafWeight = &weight\n\tg.Config.Linux.Resources.BlockIO.WeightDevice = append(g.Config.Linux.Resources.BlockIO.WeightDevice, *weightDevice)\n}\n\n// DropLinuxResourcesBlockIOLeafWeightDevice drops a item form g.Config.Linux.Resources.BlockIO.WeightDevice.LeafWeight\nfunc (g *Generator) DropLinuxResourcesBlockIOLeafWeightDevice(major int64, minor int64) {\n\tif g.Config == nil || g.Config.Linux == nil || g.Config.Linux.Resources == nil || g.Config.Linux.Resources.BlockIO == nil {\n\t\treturn\n\t}\n\n\tfor i, weightDevice := range g.Config.Linux.Resources.BlockIO.WeightDevice {\n\t\tif weightDevice.Major == major && weightDevice.Minor == minor {\n\t\t\tif weightDevice.Weight != nil {\n\t\t\t\tnewWeightDevice := new(rspec.LinuxWeightDevice)\n\t\t\t\tnewWeightDevice.Major = major\n\t\t\t\tnewWeightDevice.Minor = minor\n\t\t\t\tnewWeightDevice.Weight = weightDevice.Weight\n\t\t\t\tg.Config.Linux.Resources.BlockIO.WeightDevice[i] = *newWeightDevice\n\t\t\t} else {\n\t\t\t\tg.Config.Linux.Resources.BlockIO.WeightDevice = append(g.Config.Linux.Resources.BlockIO.WeightDevice[:i], g.Config.Linux.Resources.BlockIO.WeightDevice[i+1:]...)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// SetLinuxResourcesBlockIOWeight sets g.Config.Linux.Resources.BlockIO.Weight.\nfunc (g *Generator) SetLinuxResourcesBlockIOWeight(weight uint16) {\n\tg.initConfigLinuxResourcesBlockIO()\n\tg.Config.Linux.Resources.BlockIO.Weight = &weight\n}\n\n// AddLinuxResourcesBlockIOWeightDevice adds or sets g.Config.Linux.Resources.BlockIO.WeightDevice.Weight.\nfunc (g *Generator) AddLinuxResourcesBlockIOWeightDevice(major int64, minor int64, weight uint16) {\n\tg.initConfigLinuxResourcesBlockIO()\n\tfor i, weightDevice := range g.Config.Linux.Resources.BlockIO.WeightDevice {\n\t\tif weightDevice.Major == major && weightDevice.Minor == minor {\n\t\t\tg.Config.Linux.Resources.BlockIO.WeightDevice[i].Weight = &weight\n\t\t\treturn\n\t\t}\n\t}\n\tweightDevice := new(rspec.LinuxWeightDevice)\n\tweightDevice.Major = major\n\tweightDevice.Minor = minor\n\tweightDevice.Weight = &weight\n\tg.Config.Linux.Resources.BlockIO.WeightDevice = append(g.Config.Linux.Resources.BlockIO.WeightDevice, *weightDevice)\n}\n\n// DropLinuxResourcesBlockIOWeightDevice drops a item form g.Config.Linux.Resources.BlockIO.WeightDevice.Weight\nfunc (g *Generator) DropLinuxResourcesBlockIOWeightDevice(major int64, minor int64) {\n\tif g.Config == nil || g.Config.Linux == nil || g.Config.Linux.Resources == nil || g.Config.Linux.Resources.BlockIO == nil {\n\t\treturn\n\t}\n\n\tfor i, weightDevice := range g.Config.Linux.Resources.BlockIO.WeightDevice {\n\t\tif weightDevice.Major == major && weightDevice.Minor == minor {\n\t\t\tif weightDevice.LeafWeight != nil {\n\t\t\t\tnewWeightDevice := new(rspec.LinuxWeightDevice)\n\t\t\t\tnewWeightDevice.Major = major\n\t\t\t\tnewWeightDevice.Minor = minor\n\t\t\t\tnewWeightDevice.LeafWeight = weightDevice.LeafWeight\n\t\t\t\tg.Config.Linux.Resources.BlockIO.WeightDevice[i] = *newWeightDevice\n\t\t\t} else {\n\t\t\t\tg.Config.Linux.Resources.BlockIO.WeightDevice = append(g.Config.Linux.Resources.BlockIO.WeightDevice[:i], g.Config.Linux.Resources.BlockIO.WeightDevice[i+1:]...)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// AddLinuxResourcesBlockIOThrottleReadBpsDevice adds or sets g.Config.Linux.Resources.BlockIO.ThrottleReadBpsDevice.\nfunc (g *Generator) AddLinuxResourcesBlockIOThrottleReadBpsDevice(major int64, minor int64, rate uint64) {\n\tg.initConfigLinuxResourcesBlockIO()\n\tthrottleDevices := addOrReplaceBlockIOThrottleDevice(g.Config.Linux.Resources.BlockIO.ThrottleReadBpsDevice, major, minor, rate)\n\tg.Config.Linux.Resources.BlockIO.ThrottleReadBpsDevice = throttleDevices\n}\n\n// DropLinuxResourcesBlockIOThrottleReadBpsDevice drops a item from g.Config.Linux.Resources.BlockIO.ThrottleReadBpsDevice.\nfunc (g *Generator) DropLinuxResourcesBlockIOThrottleReadBpsDevice(major int64, minor int64) {\n\tif g.Config == nil || g.Config.Linux == nil || g.Config.Linux.Resources == nil || g.Config.Linux.Resources.BlockIO == nil {\n\t\treturn\n\t}\n\n\tthrottleDevices := dropBlockIOThrottleDevice(g.Config.Linux.Resources.BlockIO.ThrottleReadBpsDevice, major, minor)\n\tg.Config.Linux.Resources.BlockIO.ThrottleReadBpsDevice = throttleDevices\n}\n\n// AddLinuxResourcesBlockIOThrottleReadIOPSDevice adds or sets g.Config.Linux.Resources.BlockIO.ThrottleReadIOPSDevice.\nfunc (g *Generator) AddLinuxResourcesBlockIOThrottleReadIOPSDevice(major int64, minor int64, rate uint64) {\n\tg.initConfigLinuxResourcesBlockIO()\n\tthrottleDevices := addOrReplaceBlockIOThrottleDevice(g.Config.Linux.Resources.BlockIO.ThrottleReadIOPSDevice, major, minor, rate)\n\tg.Config.Linux.Resources.BlockIO.ThrottleReadIOPSDevice = throttleDevices\n}\n\n// DropLinuxResourcesBlockIOThrottleReadIOPSDevice drops a item from g.Config.Linux.Resources.BlockIO.ThrottleReadIOPSDevice.\nfunc (g *Generator) DropLinuxResourcesBlockIOThrottleReadIOPSDevice(major int64, minor int64) {\n\tif g.Config == nil || g.Config.Linux == nil || g.Config.Linux.Resources == nil || g.Config.Linux.Resources.BlockIO == nil {\n\t\treturn\n\t}\n\n\tthrottleDevices := dropBlockIOThrottleDevice(g.Config.Linux.Resources.BlockIO.ThrottleReadIOPSDevice, major, minor)\n\tg.Config.Linux.Resources.BlockIO.ThrottleReadIOPSDevice = throttleDevices\n}\n\n// AddLinuxResourcesBlockIOThrottleWriteBpsDevice adds or sets g.Config.Linux.Resources.BlockIO.ThrottleWriteBpsDevice.\nfunc (g *Generator) AddLinuxResourcesBlockIOThrottleWriteBpsDevice(major int64, minor int64, rate uint64) {\n\tg.initConfigLinuxResourcesBlockIO()\n\tthrottleDevices := addOrReplaceBlockIOThrottleDevice(g.Config.Linux.Resources.BlockIO.ThrottleWriteBpsDevice, major, minor, rate)\n\tg.Config.Linux.Resources.BlockIO.ThrottleWriteBpsDevice = throttleDevices\n}\n\n// DropLinuxResourcesBlockIOThrottleWriteBpsDevice drops a item from g.Config.Linux.Resources.BlockIO.ThrottleWriteBpsDevice.\nfunc (g *Generator) DropLinuxResourcesBlockIOThrottleWriteBpsDevice(major int64, minor int64) {\n\tif g.Config == nil || g.Config.Linux == nil || g.Config.Linux.Resources == nil || g.Config.Linux.Resources.BlockIO == nil {\n\t\treturn\n\t}\n\n\tthrottleDevices := dropBlockIOThrottleDevice(g.Config.Linux.Resources.BlockIO.ThrottleWriteBpsDevice, major, minor)\n\tg.Config.Linux.Resources.BlockIO.ThrottleWriteBpsDevice = throttleDevices\n}\n\n// AddLinuxResourcesBlockIOThrottleWriteIOPSDevice adds or sets g.Config.Linux.Resources.BlockIO.ThrottleWriteIOPSDevice.\nfunc (g *Generator) AddLinuxResourcesBlockIOThrottleWriteIOPSDevice(major int64, minor int64, rate uint64) {\n\tg.initConfigLinuxResourcesBlockIO()\n\tthrottleDevices := addOrReplaceBlockIOThrottleDevice(g.Config.Linux.Resources.BlockIO.ThrottleWriteIOPSDevice, major, minor, rate)\n\tg.Config.Linux.Resources.BlockIO.ThrottleWriteIOPSDevice = throttleDevices\n}\n\n// DropLinuxResourcesBlockIOThrottleWriteIOPSDevice drops a item from g.Config.Linux.Resources.BlockIO.ThrottleWriteIOPSDevice.\nfunc (g *Generator) DropLinuxResourcesBlockIOThrottleWriteIOPSDevice(major int64, minor int64) {\n\tif g.Config == nil || g.Config.Linux == nil || g.Config.Linux.Resources == nil || g.Config.Linux.Resources.BlockIO == nil {\n\t\treturn\n\t}\n\n\tthrottleDevices := dropBlockIOThrottleDevice(g.Config.Linux.Resources.BlockIO.ThrottleWriteIOPSDevice, major, minor)\n\tg.Config.Linux.Resources.BlockIO.ThrottleWriteIOPSDevice = throttleDevices\n}\n\n// SetLinuxResourcesCPUShares sets g.Config.Linux.Resources.CPU.Shares.\nfunc (g *Generator) SetLinuxResourcesCPUShares(shares uint64) {\n\tg.InitConfigLinuxResourcesCPU()\n\tg.Config.Linux.Resources.CPU.Shares = &shares\n}\n\n// SetLinuxResourcesCPUQuota sets g.Config.Linux.Resources.CPU.Quota.\nfunc (g *Generator) SetLinuxResourcesCPUQuota(quota int64) {\n\tg.InitConfigLinuxResourcesCPU()\n\tg.Config.Linux.Resources.CPU.Quota = &quota\n}\n\n// SetLinuxResourcesCPUPeriod sets g.Config.Linux.Resources.CPU.Period.\nfunc (g *Generator) SetLinuxResourcesCPUPeriod(period uint64) {\n\tg.InitConfigLinuxResourcesCPU()\n\tg.Config.Linux.Resources.CPU.Period = &period\n}\n\n// SetLinuxResourcesCPURealtimeRuntime sets g.Config.Linux.Resources.CPU.RealtimeRuntime.\nfunc (g *Generator) SetLinuxResourcesCPURealtimeRuntime(time int64) {\n\tg.InitConfigLinuxResourcesCPU()\n\tg.Config.Linux.Resources.CPU.RealtimeRuntime = &time\n}\n\n// SetLinuxResourcesCPURealtimePeriod sets g.Config.Linux.Resources.CPU.RealtimePeriod.\nfunc (g *Generator) SetLinuxResourcesCPURealtimePeriod(period uint64) {\n\tg.InitConfigLinuxResourcesCPU()\n\tg.Config.Linux.Resources.CPU.RealtimePeriod = &period\n}\n\n// SetLinuxResourcesCPUCpus sets g.Config.Linux.Resources.CPU.Cpus.\nfunc (g *Generator) SetLinuxResourcesCPUCpus(cpus string) {\n\tg.InitConfigLinuxResourcesCPU()\n\tg.Config.Linux.Resources.CPU.Cpus = cpus\n}\n\n// SetLinuxResourcesCPUMems sets g.Config.Linux.Resources.CPU.Mems.\nfunc (g *Generator) SetLinuxResourcesCPUMems(mems string) {\n\tg.InitConfigLinuxResourcesCPU()\n\tg.Config.Linux.Resources.CPU.Mems = mems\n}\n\n// AddLinuxResourcesHugepageLimit adds or sets g.Config.Linux.Resources.HugepageLimits.\nfunc (g *Generator) AddLinuxResourcesHugepageLimit(pageSize string, limit uint64) {\n\thugepageLimit := rspec.LinuxHugepageLimit{\n\t\tPagesize: pageSize,\n\t\tLimit:    limit,\n\t}\n\n\tg.initConfigLinuxResources()\n\tfor i, pageLimit := range g.Config.Linux.Resources.HugepageLimits {\n\t\tif pageLimit.Pagesize == pageSize {\n\t\t\tg.Config.Linux.Resources.HugepageLimits[i].Limit = limit\n\t\t\treturn\n\t\t}\n\t}\n\tg.Config.Linux.Resources.HugepageLimits = append(g.Config.Linux.Resources.HugepageLimits, hugepageLimit)\n}\n\n// DropLinuxResourcesHugepageLimit drops a hugepage limit from g.Config.Linux.Resources.HugepageLimits.\nfunc (g *Generator) DropLinuxResourcesHugepageLimit(pageSize string) {\n\tif g.Config == nil || g.Config.Linux == nil || g.Config.Linux.Resources == nil {\n\t\treturn\n\t}\n\n\tfor i, pageLimit := range g.Config.Linux.Resources.HugepageLimits {\n\t\tif pageLimit.Pagesize == pageSize {\n\t\t\tg.Config.Linux.Resources.HugepageLimits = append(g.Config.Linux.Resources.HugepageLimits[:i], g.Config.Linux.Resources.HugepageLimits[i+1:]...)\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// SetLinuxResourcesUnified sets the g.Config.Linux.Resources.Unified.\nfunc (g *Generator) SetLinuxResourcesUnified(unified map[string]string) {\n\tg.initConfigLinuxResourcesUnified()\n\tfor k, v := range unified {\n\t\tg.Config.Linux.Resources.Unified[k] = v\n\t}\n}\n\n// AddLinuxResourcesUnified adds or updates the key-value pair from g.Config.Linux.Resources.Unified\nfunc (g *Generator) AddLinuxResourcesUnified(key, val string) {\n\tg.initConfigLinuxResourcesUnified()\n\tg.Config.Linux.Resources.Unified[key] = val\n}\n\n// DropLinuxResourcesUnified drops a key-value pair from g.Config.Linux.Resources.Unified\nfunc (g *Generator) DropLinuxResourcesUnified(key string) {\n\tif g.Config == nil || g.Config.Linux == nil || g.Config.Linux.Resources == nil || g.Config.Linux.Resources.Unified == nil {\n\t\treturn\n\t}\n\tdelete(g.Config.Linux.Resources.Unified, key)\n}\n\n// SetLinuxResourcesMemoryLimit sets g.Config.Linux.Resources.Memory.Limit.\nfunc (g *Generator) SetLinuxResourcesMemoryLimit(limit int64) {\n\tg.initConfigLinuxResourcesMemory()\n\tg.Config.Linux.Resources.Memory.Limit = &limit\n}\n\n// SetLinuxResourcesMemoryReservation sets g.Config.Linux.Resources.Memory.Reservation.\nfunc (g *Generator) SetLinuxResourcesMemoryReservation(reservation int64) {\n\tg.initConfigLinuxResourcesMemory()\n\tg.Config.Linux.Resources.Memory.Reservation = &reservation\n}\n\n// SetLinuxResourcesMemorySwap sets g.Config.Linux.Resources.Memory.Swap.\nfunc (g *Generator) SetLinuxResourcesMemorySwap(swap int64) {\n\tg.initConfigLinuxResourcesMemory()\n\tg.Config.Linux.Resources.Memory.Swap = &swap\n}\n\n// SetLinuxResourcesMemoryKernel sets g.Config.Linux.Resources.Memory.Kernel.\nfunc (g *Generator) SetLinuxResourcesMemoryKernel(kernel int64) {\n\tg.initConfigLinuxResourcesMemory()\n\tg.Config.Linux.Resources.Memory.Kernel = &kernel //nolint:staticcheck // Ignore SA1019: g.Config.Linux.Resources.Memory.Kernel is deprecated\n}\n\n// SetLinuxResourcesMemoryKernelTCP sets g.Config.Linux.Resources.Memory.KernelTCP.\nfunc (g *Generator) SetLinuxResourcesMemoryKernelTCP(kernelTCP int64) {\n\tg.initConfigLinuxResourcesMemory()\n\tg.Config.Linux.Resources.Memory.KernelTCP = &kernelTCP\n}\n\n// SetLinuxResourcesMemorySwappiness sets g.Config.Linux.Resources.Memory.Swappiness.\nfunc (g *Generator) SetLinuxResourcesMemorySwappiness(swappiness uint64) {\n\tg.initConfigLinuxResourcesMemory()\n\tg.Config.Linux.Resources.Memory.Swappiness = &swappiness\n}\n\n// SetLinuxResourcesMemoryDisableOOMKiller sets g.Config.Linux.Resources.Memory.DisableOOMKiller.\nfunc (g *Generator) SetLinuxResourcesMemoryDisableOOMKiller(disable bool) {\n\tg.initConfigLinuxResourcesMemory()\n\tg.Config.Linux.Resources.Memory.DisableOOMKiller = &disable\n}\n\n// SetLinuxResourcesNetworkClassID sets g.Config.Linux.Resources.Network.ClassID.\nfunc (g *Generator) SetLinuxResourcesNetworkClassID(classid uint32) {\n\tg.initConfigLinuxResourcesNetwork()\n\tg.Config.Linux.Resources.Network.ClassID = &classid\n}\n\n// AddLinuxResourcesNetworkPriorities adds or sets g.Config.Linux.Resources.Network.Priorities.\nfunc (g *Generator) AddLinuxResourcesNetworkPriorities(name string, prio uint32) {\n\tg.initConfigLinuxResourcesNetwork()\n\tfor i, netPriority := range g.Config.Linux.Resources.Network.Priorities {\n\t\tif netPriority.Name == name {\n\t\t\tg.Config.Linux.Resources.Network.Priorities[i].Priority = prio\n\t\t\treturn\n\t\t}\n\t}\n\tinterfacePrio := new(rspec.LinuxInterfacePriority)\n\tinterfacePrio.Name = name\n\tinterfacePrio.Priority = prio\n\tg.Config.Linux.Resources.Network.Priorities = append(g.Config.Linux.Resources.Network.Priorities, *interfacePrio)\n}\n\n// DropLinuxResourcesNetworkPriorities drops one item from g.Config.Linux.Resources.Network.Priorities.\nfunc (g *Generator) DropLinuxResourcesNetworkPriorities(name string) {\n\tif g.Config == nil || g.Config.Linux == nil || g.Config.Linux.Resources == nil || g.Config.Linux.Resources.Network == nil {\n\t\treturn\n\t}\n\n\tfor i, netPriority := range g.Config.Linux.Resources.Network.Priorities {\n\t\tif netPriority.Name == name {\n\t\t\tg.Config.Linux.Resources.Network.Priorities = append(g.Config.Linux.Resources.Network.Priorities[:i], g.Config.Linux.Resources.Network.Priorities[i+1:]...)\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// SetLinuxResourcesPidsLimit sets g.Config.Linux.Resources.Pids.Limit.\nfunc (g *Generator) SetLinuxResourcesPidsLimit(limit int64) {\n\tg.initConfigLinuxResourcesPids()\n\tg.Config.Linux.Resources.Pids.Limit = &limit\n}\n\n// ClearLinuxSysctl clears g.Config.Linux.Sysctl.\nfunc (g *Generator) ClearLinuxSysctl() {\n\tif g.Config == nil || g.Config.Linux == nil {\n\t\treturn\n\t}\n\tg.Config.Linux.Sysctl = make(map[string]string)\n}\n\n// AddLinuxSysctl adds a new sysctl config into g.Config.Linux.Sysctl.\nfunc (g *Generator) AddLinuxSysctl(key, value string) {\n\tg.initConfigLinuxSysctl()\n\tg.Config.Linux.Sysctl[key] = value\n}\n\n// RemoveLinuxSysctl removes a sysctl config from g.Config.Linux.Sysctl.\nfunc (g *Generator) RemoveLinuxSysctl(key string) {\n\tif g.Config == nil || g.Config.Linux == nil || g.Config.Linux.Sysctl == nil {\n\t\treturn\n\t}\n\tdelete(g.Config.Linux.Sysctl, key)\n}\n\n// ClearLinuxUIDMappings clear g.Config.Linux.UIDMappings.\nfunc (g *Generator) ClearLinuxUIDMappings() {\n\tif g.Config == nil || g.Config.Linux == nil {\n\t\treturn\n\t}\n\tg.Config.Linux.UIDMappings = []rspec.LinuxIDMapping{}\n}\n\n// AddLinuxUIDMapping adds uidMap into g.Config.Linux.UIDMappings.\nfunc (g *Generator) AddLinuxUIDMapping(hid, cid, size uint32) {\n\tidMapping := rspec.LinuxIDMapping{\n\t\tHostID:      hid,\n\t\tContainerID: cid,\n\t\tSize:        size,\n\t}\n\n\tg.initConfigLinux()\n\tg.Config.Linux.UIDMappings = append(g.Config.Linux.UIDMappings, idMapping)\n}\n\n// ClearLinuxGIDMappings clear g.Config.Linux.GIDMappings.\nfunc (g *Generator) ClearLinuxGIDMappings() {\n\tif g.Config == nil || g.Config.Linux == nil {\n\t\treturn\n\t}\n\tg.Config.Linux.GIDMappings = []rspec.LinuxIDMapping{}\n}\n\n// AddLinuxGIDMapping adds gidMap into g.Config.Linux.GIDMappings.\nfunc (g *Generator) AddLinuxGIDMapping(hid, cid, size uint32) {\n\tidMapping := rspec.LinuxIDMapping{\n\t\tHostID:      hid,\n\t\tContainerID: cid,\n\t\tSize:        size,\n\t}\n\n\tg.initConfigLinux()\n\tg.Config.Linux.GIDMappings = append(g.Config.Linux.GIDMappings, idMapping)\n}\n\n// SetLinuxRootPropagation sets g.Config.Linux.RootfsPropagation.\nfunc (g *Generator) SetLinuxRootPropagation(rp string) error {\n\tswitch rp {\n\tcase \"\":\n\tcase \"private\":\n\tcase \"rprivate\":\n\tcase \"slave\":\n\tcase \"rslave\":\n\tcase \"shared\":\n\tcase \"rshared\":\n\tcase \"unbindable\":\n\tcase \"runbindable\":\n\tdefault:\n\t\treturn fmt.Errorf(\"rootfs-propagation %q must be empty or one of (r)private|(r)slave|(r)shared|(r)unbindable\", rp)\n\t}\n\tg.initConfigLinux()\n\tg.Config.Linux.RootfsPropagation = rp\n\treturn nil\n}\n\n// ClearPreStartHooks clear g.Config.Hooks.Prestart.\nfunc (g *Generator) ClearPreStartHooks() {\n\tif g.Config == nil || g.Config.Hooks == nil {\n\t\treturn\n\t}\n\tg.Config.Hooks.Prestart = []rspec.Hook{} //nolint:staticcheck // Ignore SA1019: g.Config.Hooks.Prestart is deprecated\n}\n\n// AddPreStartHook add a prestart hook into g.Config.Hooks.Prestart.\nfunc (g *Generator) AddPreStartHook(preStartHook rspec.Hook) {\n\tg.initConfigHooks()\n\tg.Config.Hooks.Prestart = append(g.Config.Hooks.Prestart, preStartHook) //nolint:staticcheck // Ignore SA1019: g.Config.Hooks.Prestart is deprecated\n}\n\n// ClearPostStopHooks clear g.Config.Hooks.Poststop.\nfunc (g *Generator) ClearPostStopHooks() {\n\tif g.Config == nil || g.Config.Hooks == nil {\n\t\treturn\n\t}\n\tg.Config.Hooks.Poststop = []rspec.Hook{}\n}\n\n// AddPostStopHook adds a poststop hook into g.Config.Hooks.Poststop.\nfunc (g *Generator) AddPostStopHook(postStopHook rspec.Hook) {\n\tg.initConfigHooks()\n\tg.Config.Hooks.Poststop = append(g.Config.Hooks.Poststop, postStopHook)\n}\n\n// ClearPostStartHooks clear g.Config.Hooks.Poststart.\nfunc (g *Generator) ClearPostStartHooks() {\n\tif g.Config == nil || g.Config.Hooks == nil {\n\t\treturn\n\t}\n\tg.Config.Hooks.Poststart = []rspec.Hook{}\n}\n\n// AddPostStartHook adds a poststart hook into g.Config.Hooks.Poststart.\nfunc (g *Generator) AddPostStartHook(postStartHook rspec.Hook) {\n\tg.initConfigHooks()\n\tg.Config.Hooks.Poststart = append(g.Config.Hooks.Poststart, postStartHook)\n}\n\n// AddMount adds a mount into g.Config.Mounts.\nfunc (g *Generator) AddMount(mnt rspec.Mount) {\n\tg.initConfig()\n\n\tg.Config.Mounts = append(g.Config.Mounts, mnt)\n}\n\n// RemoveMount removes a mount point on the dest directory\nfunc (g *Generator) RemoveMount(dest string) {\n\tg.initConfig()\n\n\tfor index, mount := range g.Config.Mounts {\n\t\tif mount.Destination == dest {\n\t\t\tg.Config.Mounts = append(g.Config.Mounts[:index], g.Config.Mounts[index+1:]...)\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Mounts returns the list of mounts\nfunc (g *Generator) Mounts() []rspec.Mount {\n\tg.initConfig()\n\n\treturn g.Config.Mounts\n}\n\n// ClearMounts clear g.Config.Mounts\nfunc (g *Generator) ClearMounts() {\n\tif g.Config == nil {\n\t\treturn\n\t}\n\tg.Config.Mounts = []rspec.Mount{}\n}\n\n// SetupPrivileged sets up the privilege-related fields inside g.Config.\nfunc (g *Generator) SetupPrivileged(privileged bool) {\n\tif privileged { // Add all capabilities in privileged mode.\n\t\tvar finalCapList []string\n\t\tcapList := capability.ListKnown()\n\t\tif g.HostSpecific {\n\t\t\tcapList, _ = capability.ListSupported()\n\t\t}\n\t\tfor _, cap := range capList {\n\t\t\tfinalCapList = append(finalCapList, fmt.Sprintf(\"CAP_%s\", strings.ToUpper(cap.String())))\n\t\t}\n\t\tg.initConfigLinux()\n\t\tg.initConfigProcessCapabilities()\n\t\tg.ClearProcessCapabilities()\n\t\tg.Config.Process.Capabilities.Bounding = append(g.Config.Process.Capabilities.Bounding, finalCapList...)\n\t\tg.Config.Process.Capabilities.Effective = append(g.Config.Process.Capabilities.Effective, finalCapList...)\n\t\tg.Config.Process.Capabilities.Inheritable = append(g.Config.Process.Capabilities.Inheritable, finalCapList...)\n\t\tg.Config.Process.Capabilities.Permitted = append(g.Config.Process.Capabilities.Permitted, finalCapList...)\n\t\tg.Config.Process.Capabilities.Ambient = append(g.Config.Process.Capabilities.Ambient, finalCapList...)\n\t\tg.Config.Process.SelinuxLabel = \"\"\n\t\tg.Config.Process.ApparmorProfile = \"\"\n\t\tg.Config.Linux.Seccomp = nil\n\t}\n}\n\n// ClearProcessCapabilities clear g.Config.Process.Capabilities.\nfunc (g *Generator) ClearProcessCapabilities() {\n\tif g.Config == nil || g.Config.Process == nil || g.Config.Process.Capabilities == nil {\n\t\treturn\n\t}\n\tg.Config.Process.Capabilities.Bounding = []string{}\n\tg.Config.Process.Capabilities.Effective = []string{}\n\tg.Config.Process.Capabilities.Inheritable = []string{}\n\tg.Config.Process.Capabilities.Permitted = []string{}\n\tg.Config.Process.Capabilities.Ambient = []string{}\n}\n\n// AddProcessCapability adds a process capability into all 5 capability sets.\nfunc (g *Generator) AddProcessCapability(c string) error {\n\tcp := strings.ToUpper(c)\n\tif err := capsCheck.CapValid(cp, g.HostSpecific); err != nil {\n\t\treturn err\n\t}\n\n\tg.initConfigProcessCapabilities()\n\n\tvar foundAmbient, foundBounding, foundEffective, foundInheritable, foundPermitted bool\n\tfor _, cap := range g.Config.Process.Capabilities.Ambient {\n\t\tif strings.ToUpper(cap) == cp {\n\t\t\tfoundAmbient = true\n\t\t\tbreak\n\t\t}\n\t}\n\tif !foundAmbient {\n\t\tg.Config.Process.Capabilities.Ambient = append(g.Config.Process.Capabilities.Ambient, cp)\n\t}\n\n\tfor _, cap := range g.Config.Process.Capabilities.Bounding {\n\t\tif strings.ToUpper(cap) == cp {\n\t\t\tfoundBounding = true\n\t\t\tbreak\n\t\t}\n\t}\n\tif !foundBounding {\n\t\tg.Config.Process.Capabilities.Bounding = append(g.Config.Process.Capabilities.Bounding, cp)\n\t}\n\n\tfor _, cap := range g.Config.Process.Capabilities.Effective {\n\t\tif strings.ToUpper(cap) == cp {\n\t\t\tfoundEffective = true\n\t\t\tbreak\n\t\t}\n\t}\n\tif !foundEffective {\n\t\tg.Config.Process.Capabilities.Effective = append(g.Config.Process.Capabilities.Effective, cp)\n\t}\n\n\tfor _, cap := range g.Config.Process.Capabilities.Inheritable {\n\t\tif strings.ToUpper(cap) == cp {\n\t\t\tfoundInheritable = true\n\t\t\tbreak\n\t\t}\n\t}\n\tif !foundInheritable {\n\t\tg.Config.Process.Capabilities.Inheritable = append(g.Config.Process.Capabilities.Inheritable, cp)\n\t}\n\n\tfor _, cap := range g.Config.Process.Capabilities.Permitted {\n\t\tif strings.ToUpper(cap) == cp {\n\t\t\tfoundPermitted = true\n\t\t\tbreak\n\t\t}\n\t}\n\tif !foundPermitted {\n\t\tg.Config.Process.Capabilities.Permitted = append(g.Config.Process.Capabilities.Permitted, cp)\n\t}\n\n\treturn nil\n}\n\n// AddProcessCapabilityAmbient adds a process capability into g.Config.Process.Capabilities.Ambient.\nfunc (g *Generator) AddProcessCapabilityAmbient(c string) error {\n\tcp := strings.ToUpper(c)\n\tif err := capsCheck.CapValid(cp, g.HostSpecific); err != nil {\n\t\treturn err\n\t}\n\n\tg.initConfigProcessCapabilities()\n\n\tvar foundAmbient bool\n\tfor _, cap := range g.Config.Process.Capabilities.Ambient {\n\t\tif strings.ToUpper(cap) == cp {\n\t\t\tfoundAmbient = true\n\t\t\tbreak\n\t\t}\n\t}\n\n\tif !foundAmbient {\n\t\tg.Config.Process.Capabilities.Ambient = append(g.Config.Process.Capabilities.Ambient, cp)\n\t}\n\n\treturn nil\n}\n\n// AddProcessCapabilityBounding adds a process capability into g.Config.Process.Capabilities.Bounding.\nfunc (g *Generator) AddProcessCapabilityBounding(c string) error {\n\tcp := strings.ToUpper(c)\n\tif err := capsCheck.CapValid(cp, g.HostSpecific); err != nil {\n\t\treturn err\n\t}\n\n\tg.initConfigProcessCapabilities()\n\n\tvar foundBounding bool\n\tfor _, cap := range g.Config.Process.Capabilities.Bounding {\n\t\tif strings.ToUpper(cap) == cp {\n\t\t\tfoundBounding = true\n\t\t\tbreak\n\t\t}\n\t}\n\tif !foundBounding {\n\t\tg.Config.Process.Capabilities.Bounding = append(g.Config.Process.Capabilities.Bounding, cp)\n\t}\n\n\treturn nil\n}\n\n// AddProcessCapabilityEffective adds a process capability into g.Config.Process.Capabilities.Effective.\nfunc (g *Generator) AddProcessCapabilityEffective(c string) error {\n\tcp := strings.ToUpper(c)\n\tif err := capsCheck.CapValid(cp, g.HostSpecific); err != nil {\n\t\treturn err\n\t}\n\n\tg.initConfigProcessCapabilities()\n\n\tvar foundEffective bool\n\tfor _, cap := range g.Config.Process.Capabilities.Effective {\n\t\tif strings.ToUpper(cap) == cp {\n\t\t\tfoundEffective = true\n\t\t\tbreak\n\t\t}\n\t}\n\tif !foundEffective {\n\t\tg.Config.Process.Capabilities.Effective = append(g.Config.Process.Capabilities.Effective, cp)\n\t}\n\n\treturn nil\n}\n\n// AddProcessCapabilityInheritable adds a process capability into g.Config.Process.Capabilities.Inheritable.\nfunc (g *Generator) AddProcessCapabilityInheritable(c string) error {\n\tcp := strings.ToUpper(c)\n\tif err := capsCheck.CapValid(cp, g.HostSpecific); err != nil {\n\t\treturn err\n\t}\n\n\tg.initConfigProcessCapabilities()\n\n\tvar foundInheritable bool\n\tfor _, cap := range g.Config.Process.Capabilities.Inheritable {\n\t\tif strings.ToUpper(cap) == cp {\n\t\t\tfoundInheritable = true\n\t\t\tbreak\n\t\t}\n\t}\n\tif !foundInheritable {\n\t\tg.Config.Process.Capabilities.Inheritable = append(g.Config.Process.Capabilities.Inheritable, cp)\n\t}\n\n\treturn nil\n}\n\n// AddProcessCapabilityPermitted adds a process capability into g.Config.Process.Capabilities.Permitted.\nfunc (g *Generator) AddProcessCapabilityPermitted(c string) error {\n\tcp := strings.ToUpper(c)\n\tif err := capsCheck.CapValid(cp, g.HostSpecific); err != nil {\n\t\treturn err\n\t}\n\n\tg.initConfigProcessCapabilities()\n\n\tvar foundPermitted bool\n\tfor _, cap := range g.Config.Process.Capabilities.Permitted {\n\t\tif strings.ToUpper(cap) == cp {\n\t\t\tfoundPermitted = true\n\t\t\tbreak\n\t\t}\n\t}\n\tif !foundPermitted {\n\t\tg.Config.Process.Capabilities.Permitted = append(g.Config.Process.Capabilities.Permitted, cp)\n\t}\n\n\treturn nil\n}\n\n// DropProcessCapability drops a process capability from all 5 capability sets.\nfunc (g *Generator) DropProcessCapability(c string) error {\n\tif g.Config == nil || g.Config.Process == nil || g.Config.Process.Capabilities == nil {\n\t\treturn nil\n\t}\n\n\tcp := strings.ToUpper(c)\n\tfor i, cap := range g.Config.Process.Capabilities.Ambient {\n\t\tif strings.ToUpper(cap) == cp {\n\t\t\tg.Config.Process.Capabilities.Ambient = removeFunc(g.Config.Process.Capabilities.Ambient, i)\n\t\t}\n\t}\n\tfor i, cap := range g.Config.Process.Capabilities.Bounding {\n\t\tif strings.ToUpper(cap) == cp {\n\t\t\tg.Config.Process.Capabilities.Bounding = removeFunc(g.Config.Process.Capabilities.Bounding, i)\n\t\t}\n\t}\n\tfor i, cap := range g.Config.Process.Capabilities.Effective {\n\t\tif strings.ToUpper(cap) == cp {\n\t\t\tg.Config.Process.Capabilities.Effective = removeFunc(g.Config.Process.Capabilities.Effective, i)\n\t\t}\n\t}\n\tfor i, cap := range g.Config.Process.Capabilities.Inheritable {\n\t\tif strings.ToUpper(cap) == cp {\n\t\t\tg.Config.Process.Capabilities.Inheritable = removeFunc(g.Config.Process.Capabilities.Inheritable, i)\n\t\t}\n\t}\n\tfor i, cap := range g.Config.Process.Capabilities.Permitted {\n\t\tif strings.ToUpper(cap) == cp {\n\t\t\tg.Config.Process.Capabilities.Permitted = removeFunc(g.Config.Process.Capabilities.Permitted, i)\n\t\t}\n\t}\n\n\treturn capsCheck.CapValid(cp, false)\n}\n\n// DropProcessCapabilityAmbient drops a process capability from g.Config.Process.Capabilities.Ambient.\nfunc (g *Generator) DropProcessCapabilityAmbient(c string) error {\n\tif g.Config == nil || g.Config.Process == nil || g.Config.Process.Capabilities == nil {\n\t\treturn nil\n\t}\n\n\tcp := strings.ToUpper(c)\n\tfor i, cap := range g.Config.Process.Capabilities.Ambient {\n\t\tif strings.ToUpper(cap) == cp {\n\t\t\tg.Config.Process.Capabilities.Ambient = removeFunc(g.Config.Process.Capabilities.Ambient, i)\n\t\t}\n\t}\n\n\treturn capsCheck.CapValid(cp, false)\n}\n\n// DropProcessCapabilityBounding drops a process capability from g.Config.Process.Capabilities.Bounding.\nfunc (g *Generator) DropProcessCapabilityBounding(c string) error {\n\tif g.Config == nil || g.Config.Process == nil || g.Config.Process.Capabilities == nil {\n\t\treturn nil\n\t}\n\n\tcp := strings.ToUpper(c)\n\tfor i, cap := range g.Config.Process.Capabilities.Bounding {\n\t\tif strings.ToUpper(cap) == cp {\n\t\t\tg.Config.Process.Capabilities.Bounding = removeFunc(g.Config.Process.Capabilities.Bounding, i)\n\t\t}\n\t}\n\n\treturn capsCheck.CapValid(cp, false)\n}\n\n// DropProcessCapabilityEffective drops a process capability from g.Config.Process.Capabilities.Effective.\nfunc (g *Generator) DropProcessCapabilityEffective(c string) error {\n\tif g.Config == nil || g.Config.Process == nil || g.Config.Process.Capabilities == nil {\n\t\treturn nil\n\t}\n\n\tcp := strings.ToUpper(c)\n\tfor i, cap := range g.Config.Process.Capabilities.Effective {\n\t\tif strings.ToUpper(cap) == cp {\n\t\t\tg.Config.Process.Capabilities.Effective = removeFunc(g.Config.Process.Capabilities.Effective, i)\n\t\t}\n\t}\n\n\treturn capsCheck.CapValid(cp, false)\n}\n\n// DropProcessCapabilityInheritable drops a process capability from g.Config.Process.Capabilities.Inheritable.\nfunc (g *Generator) DropProcessCapabilityInheritable(c string) error {\n\tif g.Config == nil || g.Config.Process == nil || g.Config.Process.Capabilities == nil {\n\t\treturn nil\n\t}\n\n\tcp := strings.ToUpper(c)\n\tfor i, cap := range g.Config.Process.Capabilities.Inheritable {\n\t\tif strings.ToUpper(cap) == cp {\n\t\t\tg.Config.Process.Capabilities.Inheritable = removeFunc(g.Config.Process.Capabilities.Inheritable, i)\n\t\t}\n\t}\n\n\treturn capsCheck.CapValid(cp, false)\n}\n\n// DropProcessCapabilityPermitted drops a process capability from g.Config.Process.Capabilities.Permitted.\nfunc (g *Generator) DropProcessCapabilityPermitted(c string) error {\n\tif g.Config == nil || g.Config.Process == nil || g.Config.Process.Capabilities == nil {\n\t\treturn nil\n\t}\n\n\tcp := strings.ToUpper(c)\n\tfor i, cap := range g.Config.Process.Capabilities.Permitted {\n\t\tif strings.ToUpper(cap) == cp {\n\t\t\tg.Config.Process.Capabilities.Permitted = removeFunc(g.Config.Process.Capabilities.Permitted, i)\n\t\t}\n\t}\n\n\treturn capsCheck.CapValid(cp, false)\n}\n\nfunc mapStrToNamespace(ns string, path string) (rspec.LinuxNamespace, error) {\n\tswitch ns {\n\tcase \"network\":\n\t\treturn rspec.LinuxNamespace{Type: rspec.NetworkNamespace, Path: path}, nil\n\tcase \"pid\":\n\t\treturn rspec.LinuxNamespace{Type: rspec.PIDNamespace, Path: path}, nil\n\tcase \"mount\":\n\t\treturn rspec.LinuxNamespace{Type: rspec.MountNamespace, Path: path}, nil\n\tcase \"ipc\":\n\t\treturn rspec.LinuxNamespace{Type: rspec.IPCNamespace, Path: path}, nil\n\tcase \"uts\":\n\t\treturn rspec.LinuxNamespace{Type: rspec.UTSNamespace, Path: path}, nil\n\tcase \"user\":\n\t\treturn rspec.LinuxNamespace{Type: rspec.UserNamespace, Path: path}, nil\n\tcase \"cgroup\":\n\t\treturn rspec.LinuxNamespace{Type: rspec.CgroupNamespace, Path: path}, nil\n\tdefault:\n\t\treturn rspec.LinuxNamespace{}, fmt.Errorf(\"unrecognized namespace %q\", ns)\n\t}\n}\n\n// ClearLinuxNamespaces clear g.Config.Linux.Namespaces.\nfunc (g *Generator) ClearLinuxNamespaces() {\n\tif g.Config == nil || g.Config.Linux == nil {\n\t\treturn\n\t}\n\tg.Config.Linux.Namespaces = []rspec.LinuxNamespace{}\n}\n\n// AddOrReplaceLinuxNamespace adds or replaces a namespace inside\n// g.Config.Linux.Namespaces.\nfunc (g *Generator) AddOrReplaceLinuxNamespace(ns string, path string) error {\n\tnamespace, err := mapStrToNamespace(ns, path)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tg.initConfigLinux()\n\tfor i, ns := range g.Config.Linux.Namespaces {\n\t\tif ns.Type == namespace.Type {\n\t\t\tg.Config.Linux.Namespaces[i] = namespace\n\t\t\treturn nil\n\t\t}\n\t}\n\tg.Config.Linux.Namespaces = append(g.Config.Linux.Namespaces, namespace)\n\treturn nil\n}\n\n// RemoveLinuxNamespace removes a namespace from g.Config.Linux.Namespaces.\nfunc (g *Generator) RemoveLinuxNamespace(ns string) error {\n\tnamespace, err := mapStrToNamespace(ns, \"\")\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif g.Config == nil || g.Config.Linux == nil {\n\t\treturn nil\n\t}\n\tfor i, ns := range g.Config.Linux.Namespaces {\n\t\tif ns.Type == namespace.Type {\n\t\t\tg.Config.Linux.Namespaces = append(g.Config.Linux.Namespaces[:i], g.Config.Linux.Namespaces[i+1:]...)\n\t\t\treturn nil\n\t\t}\n\t}\n\treturn nil\n}\n\n// AddDevice - add a device into g.Config.Linux.Devices\nfunc (g *Generator) AddDevice(device rspec.LinuxDevice) {\n\tg.initConfigLinux()\n\n\tfor i, dev := range g.Config.Linux.Devices {\n\t\tif dev.Path == device.Path {\n\t\t\tg.Config.Linux.Devices[i] = device\n\t\t\treturn\n\t\t}\n\t}\n\n\tg.Config.Linux.Devices = append(g.Config.Linux.Devices, device)\n}\n\n// RemoveDevice remove a device from g.Config.Linux.Devices\nfunc (g *Generator) RemoveDevice(path string) {\n\tif g.Config == nil || g.Config.Linux == nil || g.Config.Linux.Devices == nil {\n\t\treturn\n\t}\n\n\tfor i, device := range g.Config.Linux.Devices {\n\t\tif device.Path == path {\n\t\t\tg.Config.Linux.Devices = append(g.Config.Linux.Devices[:i], g.Config.Linux.Devices[i+1:]...)\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// ClearLinuxDevices clears g.Config.Linux.Devices\nfunc (g *Generator) ClearLinuxDevices() {\n\tif g.Config == nil || g.Config.Linux == nil || g.Config.Linux.Devices == nil {\n\t\treturn\n\t}\n\n\tg.Config.Linux.Devices = []rspec.LinuxDevice{}\n}\n\n// AddLinuxResourcesDevice - add a device into g.Config.Linux.Resources.Devices\nfunc (g *Generator) AddLinuxResourcesDevice(allow bool, devType string, major, minor *int64, access string) {\n\tg.initConfigLinuxResources()\n\n\tdevice := rspec.LinuxDeviceCgroup{\n\t\tAllow:  allow,\n\t\tType:   devType,\n\t\tAccess: access,\n\t\tMajor:  major,\n\t\tMinor:  minor,\n\t}\n\tg.Config.Linux.Resources.Devices = append(g.Config.Linux.Resources.Devices, device)\n}\n\n// RemoveLinuxResourcesDevice - remove a device from g.Config.Linux.Resources.Devices\nfunc (g *Generator) RemoveLinuxResourcesDevice(allow bool, devType string, major, minor *int64, access string) {\n\tif g.Config == nil || g.Config.Linux == nil || g.Config.Linux.Resources == nil {\n\t\treturn\n\t}\n\tfor i, device := range g.Config.Linux.Resources.Devices {\n\t\tif device.Allow == allow &&\n\t\t\t(devType == device.Type || (devType != \"\" && device.Type != \"\" && devType == device.Type)) &&\n\t\t\t(access == device.Access || (access != \"\" && device.Access != \"\" && access == device.Access)) &&\n\t\t\t(major == device.Major || (major != nil && device.Major != nil && *major == *device.Major)) &&\n\t\t\t(minor == device.Minor || (minor != nil && device.Minor != nil && *minor == *device.Minor)) {\n\n\t\t\tg.Config.Linux.Resources.Devices = append(g.Config.Linux.Resources.Devices[:i], g.Config.Linux.Resources.Devices[i+1:]...)\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// SetSyscallAction adds rules for syscalls with the specified action\nfunc (g *Generator) SetSyscallAction(arguments seccomp.SyscallOpts) error {\n\tg.initConfigLinuxSeccomp()\n\treturn seccomp.ParseSyscallFlag(arguments, g.Config.Linux.Seccomp)\n}\n\n// SetDefaultSeccompAction sets the default action for all syscalls not defined\n// and then removes any syscall rules with this action already specified.\nfunc (g *Generator) SetDefaultSeccompAction(action string) error {\n\tg.initConfigLinuxSeccomp()\n\treturn seccomp.ParseDefaultAction(action, g.Config.Linux.Seccomp)\n}\n\n// SetDefaultSeccompActionForce only sets the default action for all syscalls not defined\nfunc (g *Generator) SetDefaultSeccompActionForce(action string) error {\n\tg.initConfigLinuxSeccomp()\n\treturn seccomp.ParseDefaultActionForce(action, g.Config.Linux.Seccomp)\n}\n\n// SetDomainName sets g.Config.Domainname\nfunc (g *Generator) SetDomainName(domain string) {\n\tg.initConfig()\n\tg.Config.Domainname = domain\n}\n\n// SetSeccompArchitecture sets the supported seccomp architectures\nfunc (g *Generator) SetSeccompArchitecture(architecture string) error {\n\tg.initConfigLinuxSeccomp()\n\treturn seccomp.ParseArchitectureFlag(architecture, g.Config.Linux.Seccomp)\n}\n\n// RemoveSeccompRule removes rules for any specified syscalls\nfunc (g *Generator) RemoveSeccompRule(arguments string) error {\n\tg.initConfigLinuxSeccomp()\n\treturn seccomp.RemoveAction(arguments, g.Config.Linux.Seccomp)\n}\n\n// RemoveAllSeccompRules removes all syscall rules\nfunc (g *Generator) RemoveAllSeccompRules() error {\n\tg.initConfigLinuxSeccomp()\n\treturn seccomp.RemoveAllSeccompRules(g.Config.Linux.Seccomp)\n}\n\n// AddLinuxMaskedPaths adds masked paths into g.Config.Linux.MaskedPaths.\nfunc (g *Generator) AddLinuxMaskedPaths(path string) {\n\tg.initConfigLinux()\n\tg.Config.Linux.MaskedPaths = append(g.Config.Linux.MaskedPaths, path)\n}\n\n// AddLinuxReadonlyPaths adds readonly paths into g.Config.Linux.MaskedPaths.\nfunc (g *Generator) AddLinuxReadonlyPaths(path string) {\n\tg.initConfigLinux()\n\tg.Config.Linux.ReadonlyPaths = append(g.Config.Linux.ReadonlyPaths, path)\n}\n\nfunc addOrReplaceBlockIOThrottleDevice(tmpList []rspec.LinuxThrottleDevice, major int64, minor int64, rate uint64) []rspec.LinuxThrottleDevice {\n\tthrottleDevices := tmpList\n\tfor i, throttleDevice := range throttleDevices {\n\t\tif throttleDevice.Major == major && throttleDevice.Minor == minor {\n\t\t\tthrottleDevices[i].Rate = rate\n\t\t\treturn throttleDevices\n\t\t}\n\t}\n\tthrottleDevice := new(rspec.LinuxThrottleDevice)\n\tthrottleDevice.Major = major\n\tthrottleDevice.Minor = minor\n\tthrottleDevice.Rate = rate\n\tthrottleDevices = append(throttleDevices, *throttleDevice)\n\n\treturn throttleDevices\n}\n\nfunc dropBlockIOThrottleDevice(tmpList []rspec.LinuxThrottleDevice, major int64, minor int64) []rspec.LinuxThrottleDevice {\n\tthrottleDevices := tmpList\n\tfor i, throttleDevice := range throttleDevices {\n\t\tif throttleDevice.Major == major && throttleDevice.Minor == minor {\n\t\t\tthrottleDevices = append(throttleDevices[:i], throttleDevices[i+1:]...)\n\t\t\treturn throttleDevices\n\t\t}\n\t}\n\n\treturn throttleDevices\n}\n\n// AddSolarisAnet adds network into g.Config.Solaris.Anet\nfunc (g *Generator) AddSolarisAnet(anet rspec.SolarisAnet) {\n\tg.initConfigSolaris()\n\tg.Config.Solaris.Anet = append(g.Config.Solaris.Anet, anet)\n}\n\n// SetSolarisCappedCPUNcpus sets g.Config.Solaris.CappedCPU.Ncpus\nfunc (g *Generator) SetSolarisCappedCPUNcpus(ncpus string) {\n\tg.initConfigSolarisCappedCPU()\n\tg.Config.Solaris.CappedCPU.Ncpus = ncpus\n}\n\n// SetSolarisCappedMemoryPhysical sets g.Config.Solaris.CappedMemory.Physical\nfunc (g *Generator) SetSolarisCappedMemoryPhysical(physical string) {\n\tg.initConfigSolarisCappedMemory()\n\tg.Config.Solaris.CappedMemory.Physical = physical\n}\n\n// SetSolarisCappedMemorySwap sets g.Config.Solaris.CappedMemory.Swap\nfunc (g *Generator) SetSolarisCappedMemorySwap(swap string) {\n\tg.initConfigSolarisCappedMemory()\n\tg.Config.Solaris.CappedMemory.Swap = swap\n}\n\n// SetSolarisLimitPriv sets g.Config.Solaris.LimitPriv\nfunc (g *Generator) SetSolarisLimitPriv(limitPriv string) {\n\tg.initConfigSolaris()\n\tg.Config.Solaris.LimitPriv = limitPriv\n}\n\n// SetSolarisMaxShmMemory sets g.Config.Solaris.MaxShmMemory\nfunc (g *Generator) SetSolarisMaxShmMemory(memory string) {\n\tg.initConfigSolaris()\n\tg.Config.Solaris.MaxShmMemory = memory\n}\n\n// SetSolarisMilestone sets g.Config.Solaris.Milestone\nfunc (g *Generator) SetSolarisMilestone(milestone string) {\n\tg.initConfigSolaris()\n\tg.Config.Solaris.Milestone = milestone\n}\n\n// SetVMHypervisorPath sets g.Config.VM.Hypervisor.Path\nfunc (g *Generator) SetVMHypervisorPath(path string) error {\n\tif !strings.HasPrefix(path, \"/\") {\n\t\treturn fmt.Errorf(\"hypervisorPath %v is not an absolute path\", path)\n\t}\n\tg.initConfigVM()\n\tg.Config.VM.Hypervisor.Path = path\n\treturn nil\n}\n\n// SetVMHypervisorParameters sets g.Config.VM.Hypervisor.Parameters\nfunc (g *Generator) SetVMHypervisorParameters(parameters []string) {\n\tg.initConfigVM()\n\tg.Config.VM.Hypervisor.Parameters = parameters\n}\n\n// SetVMKernelPath sets g.Config.VM.Kernel.Path\nfunc (g *Generator) SetVMKernelPath(path string) error {\n\tif !strings.HasPrefix(path, \"/\") {\n\t\treturn fmt.Errorf(\"kernelPath %v is not an absolute path\", path)\n\t}\n\tg.initConfigVM()\n\tg.Config.VM.Kernel.Path = path\n\treturn nil\n}\n\n// SetVMKernelParameters sets g.Config.VM.Kernel.Parameters\nfunc (g *Generator) SetVMKernelParameters(parameters []string) {\n\tg.initConfigVM()\n\tg.Config.VM.Kernel.Parameters = parameters\n}\n\n// SetVMKernelInitRD sets g.Config.VM.Kernel.InitRD\nfunc (g *Generator) SetVMKernelInitRD(initrd string) error {\n\tif !strings.HasPrefix(initrd, \"/\") {\n\t\treturn fmt.Errorf(\"kernelInitrd %v is not an absolute path\", initrd)\n\t}\n\tg.initConfigVM()\n\tg.Config.VM.Kernel.InitRD = initrd\n\treturn nil\n}\n\n// SetVMImagePath sets g.Config.VM.Image.Path\nfunc (g *Generator) SetVMImagePath(path string) error {\n\tif !strings.HasPrefix(path, \"/\") {\n\t\treturn fmt.Errorf(\"imagePath %v is not an absolute path\", path)\n\t}\n\tg.initConfigVM()\n\tg.Config.VM.Image.Path = path\n\treturn nil\n}\n\n// SetVMImageFormat sets g.Config.VM.Image.Format\nfunc (g *Generator) SetVMImageFormat(format string) error {\n\tswitch format {\n\tcase \"raw\":\n\tcase \"qcow2\":\n\tcase \"vdi\":\n\tcase \"vmdk\":\n\tcase \"vhd\":\n\tdefault:\n\t\treturn fmt.Errorf(\"Commonly supported formats are: raw, qcow2, vdi, vmdk, vhd\")\n\t}\n\tg.initConfigVM()\n\tg.Config.VM.Image.Format = format\n\treturn nil\n}\n\n// SetWindowsHypervUntilityVMPath sets g.Config.Windows.HyperV.UtilityVMPath.\nfunc (g *Generator) SetWindowsHypervUntilityVMPath(path string) {\n\tg.initConfigWindowsHyperV()\n\tg.Config.Windows.HyperV.UtilityVMPath = path\n}\n\n// SetWindowsIgnoreFlushesDuringBoot sets g.Config.Windows.IgnoreFlushesDuringBoot.\nfunc (g *Generator) SetWindowsIgnoreFlushesDuringBoot(ignore bool) {\n\tg.initConfigWindows()\n\tg.Config.Windows.IgnoreFlushesDuringBoot = ignore\n}\n\n// AddWindowsLayerFolders adds layer folders into  g.Config.Windows.LayerFolders.\nfunc (g *Generator) AddWindowsLayerFolders(folder string) {\n\tg.initConfigWindows()\n\tg.Config.Windows.LayerFolders = append(g.Config.Windows.LayerFolders, folder)\n}\n\n// AddWindowsDevices adds or sets g.Config.Windwos.Devices\nfunc (g *Generator) AddWindowsDevices(id, idType string) error {\n\tif idType != \"class\" {\n\t\treturn fmt.Errorf(\"Invalid idType value: %s. Windows only supports a value of class\", idType)\n\t}\n\tdevice := rspec.WindowsDevice{\n\t\tID:     id,\n\t\tIDType: idType,\n\t}\n\n\tg.initConfigWindows()\n\tfor i, device := range g.Config.Windows.Devices {\n\t\tif device.ID == id {\n\t\t\tg.Config.Windows.Devices[i].IDType = idType\n\t\t\treturn nil\n\t\t}\n\t}\n\tg.Config.Windows.Devices = append(g.Config.Windows.Devices, device)\n\treturn nil\n}\n\n// SetWindowsNetwork sets g.Config.Windows.Network.\nfunc (g *Generator) SetWindowsNetwork(network rspec.WindowsNetwork) {\n\tg.initConfigWindows()\n\tg.Config.Windows.Network = &network\n}\n\n// SetWindowsNetworkAllowUnqualifiedDNSQuery sets g.Config.Windows.Network.AllowUnqualifiedDNSQuery\nfunc (g *Generator) SetWindowsNetworkAllowUnqualifiedDNSQuery(setting bool) {\n\tg.initConfigWindowsNetwork()\n\tg.Config.Windows.Network.AllowUnqualifiedDNSQuery = setting\n}\n\n// SetWindowsNetworkNamespace sets g.Config.Windows.Network.NetworkNamespace\nfunc (g *Generator) SetWindowsNetworkNamespace(path string) {\n\tg.initConfigWindowsNetwork()\n\tg.Config.Windows.Network.NetworkNamespace = path\n}\n\n// SetWindowsResourcesCPU sets g.Config.Windows.Resources.CPU.\nfunc (g *Generator) SetWindowsResourcesCPU(cpu rspec.WindowsCPUResources) {\n\tg.initConfigWindowsResources()\n\tg.Config.Windows.Resources.CPU = &cpu\n}\n\n// SetWindowsResourcesMemoryLimit sets g.Config.Windows.Resources.Memory.Limit.\nfunc (g *Generator) SetWindowsResourcesMemoryLimit(limit uint64) {\n\tg.initConfigWindowsResourcesMemory()\n\tg.Config.Windows.Resources.Memory.Limit = &limit\n}\n\n// SetWindowsResourcesStorage sets g.Config.Windows.Resources.Storage.\nfunc (g *Generator) SetWindowsResourcesStorage(storage rspec.WindowsStorageResources) {\n\tg.initConfigWindowsResources()\n\tg.Config.Windows.Resources.Storage = &storage\n}\n\n// SetWindowsServicing sets g.Config.Windows.Servicing.\nfunc (g *Generator) SetWindowsServicing(servicing bool) {\n\tg.initConfigWindows()\n\tg.Config.Windows.Servicing = servicing\n}\n"
  },
  {
    "path": "vendor/github.com/opencontainers/runtime-tools/generate/seccomp/consts.go",
    "content": "package seccomp\n\nconst (\n\tseccompOverwrite = \"overwrite\"\n\tseccompAppend    = \"append\"\n\tnothing          = \"nothing\"\n)\n"
  },
  {
    "path": "vendor/github.com/opencontainers/runtime-tools/generate/seccomp/parse_action.go",
    "content": "package seccomp\n\nimport (\n\t\"fmt\"\n\t\"strconv\"\n\t\"strings\"\n\n\trspec \"github.com/opencontainers/runtime-spec/specs-go\"\n)\n\n// SyscallOpts contain options for parsing syscall rules\ntype SyscallOpts struct {\n\tAction   string\n\tSyscall  string\n\tIndex    string\n\tValue    string\n\tValueTwo string\n\tOperator string\n}\n\n// ParseSyscallFlag takes a SyscallOpts struct and the seccomp configuration\n// and sets the new syscall rule accordingly\nfunc ParseSyscallFlag(args SyscallOpts, config *rspec.LinuxSeccomp) error {\n\tvar arguments []string\n\tif args.Index != \"\" && args.Value != \"\" && args.ValueTwo != \"\" && args.Operator != \"\" {\n\t\targuments = []string{\n\t\t\targs.Action, args.Syscall, args.Index, args.Value,\n\t\t\targs.ValueTwo, args.Operator,\n\t\t}\n\t} else {\n\t\targuments = []string{args.Action, args.Syscall}\n\t}\n\n\taction, _ := parseAction(arguments[0])\n\tif action == config.DefaultAction && args.argsAreEmpty() {\n\t\t// default already set, no need to make changes\n\t\treturn nil\n\t}\n\n\tvar newSyscall rspec.LinuxSyscall\n\tnumOfArgs := len(arguments)\n\tif numOfArgs == 6 || numOfArgs == 2 {\n\t\targStruct, err := parseArguments(arguments[1:])\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnewSyscall = newSyscallStruct(arguments[1], action, argStruct)\n\t} else {\n\t\treturn fmt.Errorf(\"incorrect number of arguments to ParseSyscall: %d\", numOfArgs)\n\t}\n\n\tdescison, err := decideCourseOfAction(&newSyscall, config.Syscalls)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdelimDescison := strings.Split(descison, \":\")\n\n\tif delimDescison[0] == seccompAppend {\n\t\tconfig.Syscalls = append(config.Syscalls, newSyscall)\n\t}\n\n\tif delimDescison[0] == seccompOverwrite {\n\t\tindexForOverwrite, err := strconv.ParseInt(delimDescison[1], 10, 32)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tconfig.Syscalls[indexForOverwrite] = newSyscall\n\t}\n\n\treturn nil\n}\n\nvar actions = map[string]rspec.LinuxSeccompAction{\n\t\"allow\": rspec.ActAllow,\n\t\"errno\": rspec.ActErrno,\n\t\"kill\":  rspec.ActKill,\n\t\"trace\": rspec.ActTrace,\n\t\"trap\":  rspec.ActTrap,\n}\n\n// Take passed action, return the SCMP_ACT_<ACTION> version of it\nfunc parseAction(action string) (rspec.LinuxSeccompAction, error) {\n\ta, ok := actions[action]\n\tif !ok {\n\t\treturn \"\", fmt.Errorf(\"unrecognized action: %s\", action)\n\t}\n\treturn a, nil\n}\n\n// ParseDefaultAction sets the default action of the seccomp configuration\n// and then removes any rules that were already specified with this action\nfunc ParseDefaultAction(action string, config *rspec.LinuxSeccomp) error {\n\tif action == \"\" {\n\t\treturn nil\n\t}\n\n\tdefaultAction, err := parseAction(action)\n\tif err != nil {\n\t\treturn err\n\t}\n\tconfig.DefaultAction = defaultAction\n\terr = RemoveAllMatchingRules(config, defaultAction)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// ParseDefaultActionForce simply sets the default action of the seccomp configuration\nfunc ParseDefaultActionForce(action string, config *rspec.LinuxSeccomp) error {\n\tif action == \"\" {\n\t\treturn nil\n\t}\n\n\tdefaultAction, err := parseAction(action)\n\tif err != nil {\n\t\treturn err\n\t}\n\tconfig.DefaultAction = defaultAction\n\treturn nil\n}\n\nfunc newSyscallStruct(name string, action rspec.LinuxSeccompAction, args []rspec.LinuxSeccompArg) rspec.LinuxSyscall {\n\tsyscallStruct := rspec.LinuxSyscall{\n\t\tNames:  []string{name},\n\t\tAction: action,\n\t\tArgs:   args,\n\t}\n\treturn syscallStruct\n}\n\nfunc (s SyscallOpts) argsAreEmpty() bool {\n\treturn (s.Index == \"\" &&\n\t\ts.Value == \"\" &&\n\t\ts.ValueTwo == \"\" &&\n\t\ts.Operator == \"\")\n}\n"
  },
  {
    "path": "vendor/github.com/opencontainers/runtime-tools/generate/seccomp/parse_architecture.go",
    "content": "package seccomp\n\nimport (\n\t\"fmt\"\n\n\trspec \"github.com/opencontainers/runtime-spec/specs-go\"\n)\n\n// ParseArchitectureFlag takes the raw string passed with the --arch flag, parses it\n// and updates the Seccomp config accordingly\nfunc ParseArchitectureFlag(architectureArg string, config *rspec.LinuxSeccomp) error {\n\tcorrectedArch, err := parseArch(architectureArg)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tshouldAppend := true\n\tfor _, alreadySpecified := range config.Architectures {\n\t\tif correctedArch == alreadySpecified {\n\t\t\tshouldAppend = false\n\t\t}\n\t}\n\tif shouldAppend {\n\t\tconfig.Architectures = append(config.Architectures, correctedArch)\n\t}\n\treturn nil\n}\n\nfunc parseArch(arch string) (rspec.Arch, error) {\n\tarches := map[string]rspec.Arch{\n\t\t\"x86\":         rspec.ArchX86,\n\t\t\"amd64\":       rspec.ArchX86_64,\n\t\t\"x32\":         rspec.ArchX32,\n\t\t\"arm\":         rspec.ArchARM,\n\t\t\"arm64\":       rspec.ArchAARCH64,\n\t\t\"mips\":        rspec.ArchMIPS,\n\t\t\"mips64\":      rspec.ArchMIPS64,\n\t\t\"mips64n32\":   rspec.ArchMIPS64N32,\n\t\t\"mipsel\":      rspec.ArchMIPSEL,\n\t\t\"mipsel64\":    rspec.ArchMIPSEL64,\n\t\t\"mipsel64n32\": rspec.ArchMIPSEL64N32,\n\t\t\"parisc\":      rspec.ArchPARISC,\n\t\t\"parisc64\":    rspec.ArchPARISC64,\n\t\t\"ppc\":         rspec.ArchPPC,\n\t\t\"ppc64\":       rspec.ArchPPC64,\n\t\t\"ppc64le\":     rspec.ArchPPC64LE,\n\t\t\"s390\":        rspec.ArchS390,\n\t\t\"s390x\":       rspec.ArchS390X,\n\t}\n\ta, ok := arches[arch]\n\tif !ok {\n\t\treturn \"\", fmt.Errorf(\"unrecognized architecture: %s\", arch)\n\t}\n\treturn a, nil\n}\n"
  },
  {
    "path": "vendor/github.com/opencontainers/runtime-tools/generate/seccomp/parse_arguments.go",
    "content": "package seccomp\n\nimport (\n\t\"fmt\"\n\t\"strconv\"\n\n\trspec \"github.com/opencontainers/runtime-spec/specs-go\"\n)\n\n// parseArguments takes a list of arguments (delimArgs). It parses and fills out\n// the argument information and returns a slice of arg structs\nfunc parseArguments(delimArgs []string) ([]rspec.LinuxSeccompArg, error) {\n\tnilArgSlice := []rspec.LinuxSeccompArg{}\n\tnumberOfArgs := len(delimArgs)\n\n\t// No parameters passed with syscall\n\tif numberOfArgs == 1 {\n\t\treturn nilArgSlice, nil\n\t}\n\n\t// Correct number of parameters passed with syscall\n\tif numberOfArgs == 5 {\n\t\tsyscallIndex, err := strconv.ParseUint(delimArgs[1], 10, 0)\n\t\tif err != nil {\n\t\t\treturn nilArgSlice, err\n\t\t}\n\n\t\tsyscallValue, err := strconv.ParseUint(delimArgs[2], 10, 64)\n\t\tif err != nil {\n\t\t\treturn nilArgSlice, err\n\t\t}\n\n\t\tsyscallValueTwo, err := strconv.ParseUint(delimArgs[3], 10, 64)\n\t\tif err != nil {\n\t\t\treturn nilArgSlice, err\n\t\t}\n\n\t\tsyscallOp, err := parseOperator(delimArgs[4])\n\t\tif err != nil {\n\t\t\treturn nilArgSlice, err\n\t\t}\n\n\t\targStruct := rspec.LinuxSeccompArg{\n\t\t\tIndex:    uint(syscallIndex),\n\t\t\tValue:    syscallValue,\n\t\t\tValueTwo: syscallValueTwo,\n\t\t\tOp:       syscallOp,\n\t\t}\n\n\t\targSlice := []rspec.LinuxSeccompArg{}\n\t\targSlice = append(argSlice, argStruct)\n\t\treturn argSlice, nil\n\t}\n\n\treturn nilArgSlice, fmt.Errorf(\"incorrect number of arguments passed with syscall: %d\", numberOfArgs)\n}\n\nfunc parseOperator(operator string) (rspec.LinuxSeccompOperator, error) {\n\toperators := map[string]rspec.LinuxSeccompOperator{\n\t\t\"NE\": rspec.OpNotEqual,\n\t\t\"LT\": rspec.OpLessThan,\n\t\t\"LE\": rspec.OpLessEqual,\n\t\t\"EQ\": rspec.OpEqualTo,\n\t\t\"GE\": rspec.OpGreaterEqual,\n\t\t\"GT\": rspec.OpGreaterThan,\n\t\t\"ME\": rspec.OpMaskedEqual,\n\t}\n\to, ok := operators[operator]\n\tif !ok {\n\t\treturn \"\", fmt.Errorf(\"unrecognized operator: %s\", operator)\n\t}\n\treturn o, nil\n}\n"
  },
  {
    "path": "vendor/github.com/opencontainers/runtime-tools/generate/seccomp/parse_remove.go",
    "content": "package seccomp\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"strings\"\n\n\trspec \"github.com/opencontainers/runtime-spec/specs-go\"\n)\n\n// RemoveAction takes the argument string that was passed with the --remove flag,\n// parses it, and updates the Seccomp config accordingly\nfunc RemoveAction(arguments string, config *rspec.LinuxSeccomp) error {\n\tif config == nil {\n\t\treturn fmt.Errorf(\"Cannot remove action from nil Seccomp pointer\")\n\t}\n\n\tsyscallsToRemove := strings.Split(arguments, \",\")\n\n\tfor counter, syscallStruct := range config.Syscalls {\n\t\tif reflect.DeepEqual(syscallsToRemove, syscallStruct.Names) {\n\t\t\tconfig.Syscalls = append(config.Syscalls[:counter], config.Syscalls[counter+1:]...)\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// RemoveAllSeccompRules removes all seccomp syscall rules\nfunc RemoveAllSeccompRules(config *rspec.LinuxSeccomp) error {\n\tif config == nil {\n\t\treturn fmt.Errorf(\"Cannot remove action from nil Seccomp pointer\")\n\t}\n\tnewSyscallSlice := []rspec.LinuxSyscall{}\n\tconfig.Syscalls = newSyscallSlice\n\treturn nil\n}\n\n// RemoveAllMatchingRules will remove any syscall rules that match the specified action\nfunc RemoveAllMatchingRules(config *rspec.LinuxSeccomp, seccompAction rspec.LinuxSeccompAction) error {\n\tif config == nil {\n\t\treturn fmt.Errorf(\"Cannot remove action from nil Seccomp pointer\")\n\t}\n\n\tfor _, syscall := range config.Syscalls {\n\t\tif reflect.DeepEqual(syscall.Action, seccompAction) {\n\t\t\tRemoveAction(strings.Join(syscall.Names, \",\"), config)\n\t\t}\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/opencontainers/runtime-tools/generate/seccomp/seccomp_default.go",
    "content": "package seccomp\n\nimport (\n\t\"runtime\"\n\n\trspec \"github.com/opencontainers/runtime-spec/specs-go\"\n)\n\nfunc arches() []rspec.Arch {\n\tnative := runtime.GOARCH\n\n\tswitch native {\n\tcase \"amd64\":\n\t\treturn []rspec.Arch{rspec.ArchX86_64, rspec.ArchX86, rspec.ArchX32}\n\tcase \"arm64\":\n\t\treturn []rspec.Arch{rspec.ArchARM, rspec.ArchAARCH64}\n\tcase \"mips64\":\n\t\treturn []rspec.Arch{rspec.ArchMIPS, rspec.ArchMIPS64, rspec.ArchMIPS64N32}\n\tcase \"mips64n32\":\n\t\treturn []rspec.Arch{rspec.ArchMIPS, rspec.ArchMIPS64, rspec.ArchMIPS64N32}\n\tcase \"mipsel64\":\n\t\treturn []rspec.Arch{rspec.ArchMIPSEL, rspec.ArchMIPSEL64, rspec.ArchMIPSEL64N32}\n\tcase \"mipsel64n32\":\n\t\treturn []rspec.Arch{rspec.ArchMIPSEL, rspec.ArchMIPSEL64, rspec.ArchMIPSEL64N32}\n\tcase \"s390x\":\n\t\treturn []rspec.Arch{rspec.ArchS390, rspec.ArchS390X}\n\tdefault:\n\t\treturn []rspec.Arch{}\n\t}\n}\n\n// DefaultProfile defines the whitelist for the default seccomp profile.\nfunc DefaultProfile(rs *rspec.Spec) *rspec.LinuxSeccomp {\n\tsyscalls := []rspec.LinuxSyscall{\n\t\t{\n\t\t\tNames: []string{\n\t\t\t\t\"accept\",\n\t\t\t\t\"accept4\",\n\t\t\t\t\"access\",\n\t\t\t\t\"alarm\",\n\t\t\t\t\"bind\",\n\t\t\t\t\"brk\",\n\t\t\t\t\"capget\",\n\t\t\t\t\"capset\",\n\t\t\t\t\"chdir\",\n\t\t\t\t\"chmod\",\n\t\t\t\t\"chown\",\n\t\t\t\t\"chown32\",\n\t\t\t\t\"clock_getres\",\n\t\t\t\t\"clock_gettime\",\n\t\t\t\t\"clock_nanosleep\",\n\t\t\t\t\"close\",\n\t\t\t\t\"connect\",\n\t\t\t\t\"copy_file_range\",\n\t\t\t\t\"creat\",\n\t\t\t\t\"dup\",\n\t\t\t\t\"dup2\",\n\t\t\t\t\"dup3\",\n\t\t\t\t\"epoll_create\",\n\t\t\t\t\"epoll_create1\",\n\t\t\t\t\"epoll_ctl\",\n\t\t\t\t\"epoll_ctl_old\",\n\t\t\t\t\"epoll_pwait\",\n\t\t\t\t\"epoll_wait\",\n\t\t\t\t\"epoll_wait_old\",\n\t\t\t\t\"eventfd\",\n\t\t\t\t\"eventfd2\",\n\t\t\t\t\"execve\",\n\t\t\t\t\"execveat\",\n\t\t\t\t\"exit\",\n\t\t\t\t\"exit_group\",\n\t\t\t\t\"faccessat\",\n\t\t\t\t\"fadvise64\",\n\t\t\t\t\"fadvise64_64\",\n\t\t\t\t\"fallocate\",\n\t\t\t\t\"fanotify_mark\",\n\t\t\t\t\"fchdir\",\n\t\t\t\t\"fchmod\",\n\t\t\t\t\"fchmodat\",\n\t\t\t\t\"fchown\",\n\t\t\t\t\"fchown32\",\n\t\t\t\t\"fchownat\",\n\t\t\t\t\"fcntl\",\n\t\t\t\t\"fcntl64\",\n\t\t\t\t\"fdatasync\",\n\t\t\t\t\"fgetxattr\",\n\t\t\t\t\"flistxattr\",\n\t\t\t\t\"flock\",\n\t\t\t\t\"fork\",\n\t\t\t\t\"fremovexattr\",\n\t\t\t\t\"fsetxattr\",\n\t\t\t\t\"fstat\",\n\t\t\t\t\"fstat64\",\n\t\t\t\t\"fstatat64\",\n\t\t\t\t\"fstatfs\",\n\t\t\t\t\"fstatfs64\",\n\t\t\t\t\"fsync\",\n\t\t\t\t\"ftruncate\",\n\t\t\t\t\"ftruncate64\",\n\t\t\t\t\"futex\",\n\t\t\t\t\"futimesat\",\n\t\t\t\t\"getcpu\",\n\t\t\t\t\"getcwd\",\n\t\t\t\t\"getdents\",\n\t\t\t\t\"getdents64\",\n\t\t\t\t\"getegid\",\n\t\t\t\t\"getegid32\",\n\t\t\t\t\"geteuid\",\n\t\t\t\t\"geteuid32\",\n\t\t\t\t\"getgid\",\n\t\t\t\t\"getgid32\",\n\t\t\t\t\"getgroups\",\n\t\t\t\t\"getgroups32\",\n\t\t\t\t\"getitimer\",\n\t\t\t\t\"getpeername\",\n\t\t\t\t\"getpgid\",\n\t\t\t\t\"getpgrp\",\n\t\t\t\t\"getpid\",\n\t\t\t\t\"getppid\",\n\t\t\t\t\"getpriority\",\n\t\t\t\t\"getrandom\",\n\t\t\t\t\"getresgid\",\n\t\t\t\t\"getresgid32\",\n\t\t\t\t\"getresuid\",\n\t\t\t\t\"getresuid32\",\n\t\t\t\t\"getrlimit\",\n\t\t\t\t\"get_robust_list\",\n\t\t\t\t\"getrusage\",\n\t\t\t\t\"getsid\",\n\t\t\t\t\"getsockname\",\n\t\t\t\t\"getsockopt\",\n\t\t\t\t\"get_thread_area\",\n\t\t\t\t\"gettid\",\n\t\t\t\t\"gettimeofday\",\n\t\t\t\t\"getuid\",\n\t\t\t\t\"getuid32\",\n\t\t\t\t\"getxattr\",\n\t\t\t\t\"inotify_add_watch\",\n\t\t\t\t\"inotify_init\",\n\t\t\t\t\"inotify_init1\",\n\t\t\t\t\"inotify_rm_watch\",\n\t\t\t\t\"io_cancel\",\n\t\t\t\t\"ioctl\",\n\t\t\t\t\"io_destroy\",\n\t\t\t\t\"io_getevents\",\n\t\t\t\t\"ioprio_get\",\n\t\t\t\t\"ioprio_set\",\n\t\t\t\t\"io_setup\",\n\t\t\t\t\"io_submit\",\n\t\t\t\t\"ipc\",\n\t\t\t\t\"kill\",\n\t\t\t\t\"landlock_add_rule\",\n\t\t\t\t\"landlock_create_ruleset\",\n\t\t\t\t\"landlock_restrict_self\",\n\t\t\t\t\"lchown\",\n\t\t\t\t\"lchown32\",\n\t\t\t\t\"lgetxattr\",\n\t\t\t\t\"link\",\n\t\t\t\t\"linkat\",\n\t\t\t\t\"listen\",\n\t\t\t\t\"listxattr\",\n\t\t\t\t\"llistxattr\",\n\t\t\t\t\"_llseek\",\n\t\t\t\t\"lremovexattr\",\n\t\t\t\t\"lseek\",\n\t\t\t\t\"lsetxattr\",\n\t\t\t\t\"lstat\",\n\t\t\t\t\"lstat64\",\n\t\t\t\t\"madvise\",\n\t\t\t\t\"memfd_create\",\n\t\t\t\t\"mincore\",\n\t\t\t\t\"mkdir\",\n\t\t\t\t\"mkdirat\",\n\t\t\t\t\"mknod\",\n\t\t\t\t\"mknodat\",\n\t\t\t\t\"mlock\",\n\t\t\t\t\"mlock2\",\n\t\t\t\t\"mlockall\",\n\t\t\t\t\"mmap\",\n\t\t\t\t\"mmap2\",\n\t\t\t\t\"mprotect\",\n\t\t\t\t\"mq_getsetattr\",\n\t\t\t\t\"mq_notify\",\n\t\t\t\t\"mq_open\",\n\t\t\t\t\"mq_timedreceive\",\n\t\t\t\t\"mq_timedsend\",\n\t\t\t\t\"mq_unlink\",\n\t\t\t\t\"mremap\",\n\t\t\t\t\"msgctl\",\n\t\t\t\t\"msgget\",\n\t\t\t\t\"msgrcv\",\n\t\t\t\t\"msgsnd\",\n\t\t\t\t\"msync\",\n\t\t\t\t\"munlock\",\n\t\t\t\t\"munlockall\",\n\t\t\t\t\"munmap\",\n\t\t\t\t\"nanosleep\",\n\t\t\t\t\"newfstatat\",\n\t\t\t\t\"_newselect\",\n\t\t\t\t\"open\",\n\t\t\t\t\"openat\",\n\t\t\t\t\"pause\",\n\t\t\t\t\"pipe\",\n\t\t\t\t\"pipe2\",\n\t\t\t\t\"poll\",\n\t\t\t\t\"ppoll\",\n\t\t\t\t\"prctl\",\n\t\t\t\t\"pread64\",\n\t\t\t\t\"preadv\",\n\t\t\t\t\"prlimit64\",\n\t\t\t\t\"pselect6\",\n\t\t\t\t\"pwrite64\",\n\t\t\t\t\"pwritev\",\n\t\t\t\t\"read\",\n\t\t\t\t\"readahead\",\n\t\t\t\t\"readlink\",\n\t\t\t\t\"readlinkat\",\n\t\t\t\t\"readv\",\n\t\t\t\t\"recv\",\n\t\t\t\t\"recvfrom\",\n\t\t\t\t\"recvmmsg\",\n\t\t\t\t\"recvmsg\",\n\t\t\t\t\"remap_file_pages\",\n\t\t\t\t\"removexattr\",\n\t\t\t\t\"rename\",\n\t\t\t\t\"renameat\",\n\t\t\t\t\"renameat2\",\n\t\t\t\t\"restart_syscall\",\n\t\t\t\t\"rmdir\",\n\t\t\t\t\"rt_sigaction\",\n\t\t\t\t\"rt_sigpending\",\n\t\t\t\t\"rt_sigprocmask\",\n\t\t\t\t\"rt_sigqueueinfo\",\n\t\t\t\t\"rt_sigreturn\",\n\t\t\t\t\"rt_sigsuspend\",\n\t\t\t\t\"rt_sigtimedwait\",\n\t\t\t\t\"rt_tgsigqueueinfo\",\n\t\t\t\t\"sched_getaffinity\",\n\t\t\t\t\"sched_getattr\",\n\t\t\t\t\"sched_getparam\",\n\t\t\t\t\"sched_get_priority_max\",\n\t\t\t\t\"sched_get_priority_min\",\n\t\t\t\t\"sched_getscheduler\",\n\t\t\t\t\"sched_rr_get_interval\",\n\t\t\t\t\"sched_setaffinity\",\n\t\t\t\t\"sched_setattr\",\n\t\t\t\t\"sched_setparam\",\n\t\t\t\t\"sched_setscheduler\",\n\t\t\t\t\"sched_yield\",\n\t\t\t\t\"seccomp\",\n\t\t\t\t\"select\",\n\t\t\t\t\"semctl\",\n\t\t\t\t\"semget\",\n\t\t\t\t\"semop\",\n\t\t\t\t\"semtimedop\",\n\t\t\t\t\"send\",\n\t\t\t\t\"sendfile\",\n\t\t\t\t\"sendfile64\",\n\t\t\t\t\"sendmmsg\",\n\t\t\t\t\"sendmsg\",\n\t\t\t\t\"sendto\",\n\t\t\t\t\"setfsgid\",\n\t\t\t\t\"setfsgid32\",\n\t\t\t\t\"setfsuid\",\n\t\t\t\t\"setfsuid32\",\n\t\t\t\t\"setgid\",\n\t\t\t\t\"setgid32\",\n\t\t\t\t\"setgroups\",\n\t\t\t\t\"setgroups32\",\n\t\t\t\t\"setitimer\",\n\t\t\t\t\"setpgid\",\n\t\t\t\t\"setpriority\",\n\t\t\t\t\"setregid\",\n\t\t\t\t\"setregid32\",\n\t\t\t\t\"setresgid\",\n\t\t\t\t\"setresgid32\",\n\t\t\t\t\"setresuid\",\n\t\t\t\t\"setresuid32\",\n\t\t\t\t\"setreuid\",\n\t\t\t\t\"setreuid32\",\n\t\t\t\t\"setrlimit\",\n\t\t\t\t\"set_robust_list\",\n\t\t\t\t\"setsid\",\n\t\t\t\t\"setsockopt\",\n\t\t\t\t\"set_thread_area\",\n\t\t\t\t\"set_tid_address\",\n\t\t\t\t\"setuid\",\n\t\t\t\t\"setuid32\",\n\t\t\t\t\"setxattr\",\n\t\t\t\t\"shmat\",\n\t\t\t\t\"shmctl\",\n\t\t\t\t\"shmdt\",\n\t\t\t\t\"shmget\",\n\t\t\t\t\"shutdown\",\n\t\t\t\t\"sigaltstack\",\n\t\t\t\t\"signalfd\",\n\t\t\t\t\"signalfd4\",\n\t\t\t\t\"sigreturn\",\n\t\t\t\t\"socket\",\n\t\t\t\t\"socketcall\",\n\t\t\t\t\"socketpair\",\n\t\t\t\t\"splice\",\n\t\t\t\t\"stat\",\n\t\t\t\t\"stat64\",\n\t\t\t\t\"statfs\",\n\t\t\t\t\"statfs64\",\n\t\t\t\t\"statx\",\n\t\t\t\t\"symlink\",\n\t\t\t\t\"symlinkat\",\n\t\t\t\t\"sync\",\n\t\t\t\t\"sync_file_range\",\n\t\t\t\t\"syncfs\",\n\t\t\t\t\"sysinfo\",\n\t\t\t\t\"syslog\",\n\t\t\t\t\"tee\",\n\t\t\t\t\"tgkill\",\n\t\t\t\t\"time\",\n\t\t\t\t\"timer_create\",\n\t\t\t\t\"timer_delete\",\n\t\t\t\t\"timerfd_create\",\n\t\t\t\t\"timerfd_gettime\",\n\t\t\t\t\"timerfd_settime\",\n\t\t\t\t\"timer_getoverrun\",\n\t\t\t\t\"timer_gettime\",\n\t\t\t\t\"timer_settime\",\n\t\t\t\t\"times\",\n\t\t\t\t\"tkill\",\n\t\t\t\t\"truncate\",\n\t\t\t\t\"truncate64\",\n\t\t\t\t\"ugetrlimit\",\n\t\t\t\t\"umask\",\n\t\t\t\t\"uname\",\n\t\t\t\t\"unlink\",\n\t\t\t\t\"unlinkat\",\n\t\t\t\t\"utime\",\n\t\t\t\t\"utimensat\",\n\t\t\t\t\"utimes\",\n\t\t\t\t\"vfork\",\n\t\t\t\t\"vmsplice\",\n\t\t\t\t\"wait4\",\n\t\t\t\t\"waitid\",\n\t\t\t\t\"waitpid\",\n\t\t\t\t\"write\",\n\t\t\t\t\"writev\",\n\t\t\t},\n\t\t\tAction: rspec.ActAllow,\n\t\t\tArgs:   []rspec.LinuxSeccompArg{},\n\t\t},\n\t\t{\n\t\t\tNames:  []string{\"personality\"},\n\t\t\tAction: rspec.ActAllow,\n\t\t\tArgs: []rspec.LinuxSeccompArg{\n\t\t\t\t{\n\t\t\t\t\tIndex: 0,\n\t\t\t\t\tValue: 0x0,\n\t\t\t\t\tOp:    rspec.OpEqualTo,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tNames:  []string{\"personality\"},\n\t\t\tAction: rspec.ActAllow,\n\t\t\tArgs: []rspec.LinuxSeccompArg{\n\t\t\t\t{\n\t\t\t\t\tIndex: 0,\n\t\t\t\t\tValue: 0x0008,\n\t\t\t\t\tOp:    rspec.OpEqualTo,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tNames:  []string{\"personality\"},\n\t\t\tAction: rspec.ActAllow,\n\t\t\tArgs: []rspec.LinuxSeccompArg{\n\t\t\t\t{\n\t\t\t\t\tIndex: 0,\n\t\t\t\t\tValue: 0xffffffff,\n\t\t\t\t\tOp:    rspec.OpEqualTo,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\tvar sysCloneFlagsIndex uint\n\n\tcapSysAdmin := false\n\tcaps := make(map[string]bool)\n\n\tfor _, cap := range rs.Process.Capabilities.Bounding {\n\t\tcaps[cap] = true\n\t}\n\tfor _, cap := range rs.Process.Capabilities.Effective {\n\t\tcaps[cap] = true\n\t}\n\tfor _, cap := range rs.Process.Capabilities.Inheritable {\n\t\tcaps[cap] = true\n\t}\n\tfor _, cap := range rs.Process.Capabilities.Permitted {\n\t\tcaps[cap] = true\n\t}\n\tfor _, cap := range rs.Process.Capabilities.Ambient {\n\t\tcaps[cap] = true\n\t}\n\n\tfor cap := range caps {\n\t\tswitch cap {\n\t\tcase \"CAP_DAC_READ_SEARCH\":\n\t\t\tsyscalls = append(syscalls, []rspec.LinuxSyscall{\n\t\t\t\t{\n\t\t\t\t\tNames:  []string{\"open_by_handle_at\"},\n\t\t\t\t\tAction: rspec.ActAllow,\n\t\t\t\t\tArgs:   []rspec.LinuxSeccompArg{},\n\t\t\t\t},\n\t\t\t}...)\n\t\tcase \"CAP_SYS_ADMIN\":\n\t\t\tcapSysAdmin = true\n\t\t\tsyscalls = append(syscalls, []rspec.LinuxSyscall{\n\t\t\t\t{\n\t\t\t\t\tNames: []string{\n\t\t\t\t\t\t\"bpf\",\n\t\t\t\t\t\t\"clone\",\n\t\t\t\t\t\t\"fanotify_init\",\n\t\t\t\t\t\t\"lookup_dcookie\",\n\t\t\t\t\t\t\"mount\",\n\t\t\t\t\t\t\"name_to_handle_at\",\n\t\t\t\t\t\t\"perf_event_open\",\n\t\t\t\t\t\t\"setdomainname\",\n\t\t\t\t\t\t\"sethostname\",\n\t\t\t\t\t\t\"setns\",\n\t\t\t\t\t\t\"umount\",\n\t\t\t\t\t\t\"umount2\",\n\t\t\t\t\t\t\"unshare\",\n\t\t\t\t\t},\n\t\t\t\t\tAction: rspec.ActAllow,\n\t\t\t\t\tArgs:   []rspec.LinuxSeccompArg{},\n\t\t\t\t},\n\t\t\t}...)\n\t\tcase \"CAP_SYS_BOOT\":\n\t\t\tsyscalls = append(syscalls, []rspec.LinuxSyscall{\n\t\t\t\t{\n\t\t\t\t\tNames:  []string{\"reboot\"},\n\t\t\t\t\tAction: rspec.ActAllow,\n\t\t\t\t\tArgs:   []rspec.LinuxSeccompArg{},\n\t\t\t\t},\n\t\t\t}...)\n\t\tcase \"CAP_SYS_CHROOT\":\n\t\t\tsyscalls = append(syscalls, []rspec.LinuxSyscall{\n\t\t\t\t{\n\t\t\t\t\tNames:  []string{\"chroot\"},\n\t\t\t\t\tAction: rspec.ActAllow,\n\t\t\t\t\tArgs:   []rspec.LinuxSeccompArg{},\n\t\t\t\t},\n\t\t\t}...)\n\t\tcase \"CAP_SYS_MODULE\":\n\t\t\tsyscalls = append(syscalls, []rspec.LinuxSyscall{\n\t\t\t\t{\n\t\t\t\t\tNames: []string{\n\t\t\t\t\t\t\"delete_module\",\n\t\t\t\t\t\t\"init_module\",\n\t\t\t\t\t\t\"finit_module\",\n\t\t\t\t\t\t\"query_module\",\n\t\t\t\t\t},\n\t\t\t\t\tAction: rspec.ActAllow,\n\t\t\t\t\tArgs:   []rspec.LinuxSeccompArg{},\n\t\t\t\t},\n\t\t\t}...)\n\t\tcase \"CAP_SYS_PACCT\":\n\t\t\tsyscalls = append(syscalls, []rspec.LinuxSyscall{\n\t\t\t\t{\n\t\t\t\t\tNames:  []string{\"acct\"},\n\t\t\t\t\tAction: rspec.ActAllow,\n\t\t\t\t\tArgs:   []rspec.LinuxSeccompArg{},\n\t\t\t\t},\n\t\t\t}...)\n\t\tcase \"CAP_SYS_PTRACE\":\n\t\t\tsyscalls = append(syscalls, []rspec.LinuxSyscall{\n\t\t\t\t{\n\t\t\t\t\tNames: []string{\n\t\t\t\t\t\t\"kcmp\",\n\t\t\t\t\t\t\"process_vm_readv\",\n\t\t\t\t\t\t\"process_vm_writev\",\n\t\t\t\t\t\t\"ptrace\",\n\t\t\t\t\t},\n\t\t\t\t\tAction: rspec.ActAllow,\n\t\t\t\t\tArgs:   []rspec.LinuxSeccompArg{},\n\t\t\t\t},\n\t\t\t}...)\n\t\tcase \"CAP_SYS_RAWIO\":\n\t\t\tsyscalls = append(syscalls, []rspec.LinuxSyscall{\n\t\t\t\t{\n\t\t\t\t\tNames: []string{\n\t\t\t\t\t\t\"iopl\",\n\t\t\t\t\t\t\"ioperm\",\n\t\t\t\t\t},\n\t\t\t\t\tAction: rspec.ActAllow,\n\t\t\t\t\tArgs:   []rspec.LinuxSeccompArg{},\n\t\t\t\t},\n\t\t\t}...)\n\t\tcase \"CAP_SYS_TIME\":\n\t\t\tsyscalls = append(syscalls, []rspec.LinuxSyscall{\n\t\t\t\t{\n\t\t\t\t\tNames: []string{\n\t\t\t\t\t\t\"settimeofday\",\n\t\t\t\t\t\t\"stime\",\n\t\t\t\t\t\t\"adjtimex\",\n\t\t\t\t\t},\n\t\t\t\t\tAction: rspec.ActAllow,\n\t\t\t\t\tArgs:   []rspec.LinuxSeccompArg{},\n\t\t\t\t},\n\t\t\t}...)\n\t\tcase \"CAP_SYS_TTY_CONFIG\":\n\t\t\tsyscalls = append(syscalls, []rspec.LinuxSyscall{\n\t\t\t\t{\n\t\t\t\t\tNames:  []string{\"vhangup\"},\n\t\t\t\t\tAction: rspec.ActAllow,\n\t\t\t\t\tArgs:   []rspec.LinuxSeccompArg{},\n\t\t\t\t},\n\t\t\t}...)\n\t\t}\n\t}\n\n\tif !capSysAdmin {\n\t\tsyscalls = append(syscalls, []rspec.LinuxSyscall{\n\t\t\t{\n\t\t\t\tNames:  []string{\"clone\"},\n\t\t\t\tAction: rspec.ActAllow,\n\t\t\t\tArgs: []rspec.LinuxSeccompArg{\n\t\t\t\t\t{\n\t\t\t\t\t\tIndex:    sysCloneFlagsIndex,\n\t\t\t\t\t\tValue:    CloneNewNS | CloneNewUTS | CloneNewIPC | CloneNewUser | CloneNewPID | CloneNewNet | CloneNewCgroup,\n\t\t\t\t\t\tValueTwo: 0,\n\t\t\t\t\t\tOp:       rspec.OpMaskedEqual,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}...)\n\t}\n\n\tarch := runtime.GOARCH\n\tswitch arch {\n\tcase \"arm\", \"arm64\":\n\t\tsyscalls = append(syscalls, []rspec.LinuxSyscall{\n\t\t\t{\n\t\t\t\tNames: []string{\n\t\t\t\t\t\"breakpoint\",\n\t\t\t\t\t\"cacheflush\",\n\t\t\t\t\t\"set_tls\",\n\t\t\t\t},\n\t\t\t\tAction: rspec.ActAllow,\n\t\t\t\tArgs:   []rspec.LinuxSeccompArg{},\n\t\t\t},\n\t\t}...)\n\tcase \"amd64\", \"x32\":\n\t\tsyscalls = append(syscalls, []rspec.LinuxSyscall{\n\t\t\t{\n\t\t\t\tNames:  []string{\"arch_prctl\"},\n\t\t\t\tAction: rspec.ActAllow,\n\t\t\t\tArgs:   []rspec.LinuxSeccompArg{},\n\t\t\t},\n\t\t}...)\n\t\tfallthrough\n\tcase \"x86\":\n\t\tsyscalls = append(syscalls, []rspec.LinuxSyscall{\n\t\t\t{\n\t\t\t\tNames:  []string{\"modify_ldt\"},\n\t\t\t\tAction: rspec.ActAllow,\n\t\t\t\tArgs:   []rspec.LinuxSeccompArg{},\n\t\t\t},\n\t\t}...)\n\tcase \"s390\", \"s390x\":\n\t\tsyscalls = append(syscalls, []rspec.LinuxSyscall{\n\t\t\t{\n\t\t\t\tNames: []string{\n\t\t\t\t\t\"s390_pci_mmio_read\",\n\t\t\t\t\t\"s390_pci_mmio_write\",\n\t\t\t\t\t\"s390_runtime_instr\",\n\t\t\t\t},\n\t\t\t\tAction: rspec.ActAllow,\n\t\t\t\tArgs:   []rspec.LinuxSeccompArg{},\n\t\t\t},\n\t\t}...)\n\t\t/* Flags parameter of the clone syscall is the 2nd on s390 */\n\t\tsyscalls = append(syscalls, []rspec.LinuxSyscall{\n\t\t\t{\n\t\t\t\tNames:  []string{\"clone\"},\n\t\t\t\tAction: rspec.ActAllow,\n\t\t\t\tArgs: []rspec.LinuxSeccompArg{\n\t\t\t\t\t{\n\t\t\t\t\t\tIndex:    1,\n\t\t\t\t\t\tValue:    2080505856,\n\t\t\t\t\t\tValueTwo: 0,\n\t\t\t\t\t\tOp:       rspec.OpMaskedEqual,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}...)\n\t}\n\n\treturn &rspec.LinuxSeccomp{\n\t\tDefaultAction: rspec.ActErrno,\n\t\tArchitectures: arches(),\n\t\tSyscalls:      syscalls,\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/opencontainers/runtime-tools/generate/seccomp/seccomp_default_linux.go",
    "content": "//go:build linux\n\npackage seccomp\n\nimport \"golang.org/x/sys/unix\"\n\n// System values passed through on linux\nconst (\n\tCloneNewIPC    = unix.CLONE_NEWIPC\n\tCloneNewNet    = unix.CLONE_NEWNET\n\tCloneNewNS     = unix.CLONE_NEWNS\n\tCloneNewPID    = unix.CLONE_NEWPID\n\tCloneNewUser   = unix.CLONE_NEWUSER\n\tCloneNewUTS    = unix.CLONE_NEWUTS\n\tCloneNewCgroup = unix.CLONE_NEWCGROUP\n)\n"
  },
  {
    "path": "vendor/github.com/opencontainers/runtime-tools/generate/seccomp/seccomp_default_unsupported.go",
    "content": "//go:build !linux\n\npackage seccomp\n\n// These are copied from linux/amd64 syscall values, as a reference for other\n// platforms to have access to\nconst (\n\tCloneNewIPC    = 0x8000000\n\tCloneNewNet    = 0x40000000\n\tCloneNewNS     = 0x20000\n\tCloneNewPID    = 0x20000000\n\tCloneNewUser   = 0x10000000\n\tCloneNewUTS    = 0x4000000\n\tCloneNewCgroup = 0x02000000\n)\n"
  },
  {
    "path": "vendor/github.com/opencontainers/runtime-tools/generate/seccomp/syscall_compare.go",
    "content": "package seccomp\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"strconv\"\n\t\"strings\"\n\n\trspec \"github.com/opencontainers/runtime-spec/specs-go\"\n)\n\n// Determine if a new syscall rule should be appended, overwrite an existing rule\n// or if no action should be taken at all\nfunc decideCourseOfAction(newSyscall *rspec.LinuxSyscall, syscalls []rspec.LinuxSyscall) (string, error) {\n\truleForSyscallAlreadyExists := false\n\n\tvar sliceOfDeterminedActions []string\n\tfor i, syscall := range syscalls {\n\t\tif sameName(&syscall, newSyscall) {\n\t\t\truleForSyscallAlreadyExists = true\n\n\t\t\tif identical(newSyscall, &syscall) {\n\t\t\t\tsliceOfDeterminedActions = append(sliceOfDeterminedActions, nothing)\n\t\t\t}\n\n\t\t\tif sameAction(newSyscall, &syscall) {\n\t\t\t\tif bothHaveArgs(newSyscall, &syscall) {\n\t\t\t\t\tsliceOfDeterminedActions = append(sliceOfDeterminedActions, seccompAppend)\n\t\t\t\t}\n\t\t\t\tif onlyOneHasArgs(newSyscall, &syscall) {\n\t\t\t\t\tif firstParamOnlyHasArgs(newSyscall, &syscall) {\n\t\t\t\t\t\tsliceOfDeterminedActions = append(sliceOfDeterminedActions, \"overwrite:\"+strconv.Itoa(i))\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsliceOfDeterminedActions = append(sliceOfDeterminedActions, nothing)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif !sameAction(newSyscall, &syscall) {\n\t\t\t\tif bothHaveArgs(newSyscall, &syscall) {\n\t\t\t\t\tif sameArgs(newSyscall, &syscall) {\n\t\t\t\t\t\tsliceOfDeterminedActions = append(sliceOfDeterminedActions, \"overwrite:\"+strconv.Itoa(i))\n\t\t\t\t\t}\n\t\t\t\t\tif !sameArgs(newSyscall, &syscall) {\n\t\t\t\t\t\tsliceOfDeterminedActions = append(sliceOfDeterminedActions, seccompAppend)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif onlyOneHasArgs(newSyscall, &syscall) {\n\t\t\t\t\tsliceOfDeterminedActions = append(sliceOfDeterminedActions, seccompAppend)\n\t\t\t\t}\n\t\t\t\tif neitherHasArgs(newSyscall, &syscall) {\n\t\t\t\t\tsliceOfDeterminedActions = append(sliceOfDeterminedActions, \"overwrite:\"+strconv.Itoa(i))\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif !ruleForSyscallAlreadyExists {\n\t\tsliceOfDeterminedActions = append(sliceOfDeterminedActions, seccompAppend)\n\t}\n\n\t// Nothing has highest priority\n\tfor _, determinedAction := range sliceOfDeterminedActions {\n\t\tif determinedAction == nothing {\n\t\t\treturn determinedAction, nil\n\t\t}\n\t}\n\n\t// Overwrite has second highest priority\n\tfor _, determinedAction := range sliceOfDeterminedActions {\n\t\tif strings.Contains(determinedAction, seccompOverwrite) {\n\t\t\treturn determinedAction, nil\n\t\t}\n\t}\n\n\t// Append has the lowest priority\n\tfor _, determinedAction := range sliceOfDeterminedActions {\n\t\tif determinedAction == seccompAppend {\n\t\t\treturn determinedAction, nil\n\t\t}\n\t}\n\n\treturn \"\", fmt.Errorf(\"Trouble determining action: %s\", sliceOfDeterminedActions)\n}\n\nfunc hasArguments(config *rspec.LinuxSyscall) bool {\n\tnilSyscall := new(rspec.LinuxSyscall)\n\treturn !sameArgs(nilSyscall, config)\n}\n\nfunc identical(config1, config2 *rspec.LinuxSyscall) bool {\n\treturn reflect.DeepEqual(config1, config2)\n}\n\nfunc sameName(config1, config2 *rspec.LinuxSyscall) bool {\n\treturn reflect.DeepEqual(config1.Names, config2.Names)\n}\n\nfunc sameAction(config1, config2 *rspec.LinuxSyscall) bool {\n\treturn config1.Action == config2.Action\n}\n\nfunc sameArgs(config1, config2 *rspec.LinuxSyscall) bool {\n\treturn reflect.DeepEqual(config1.Args, config2.Args)\n}\n\nfunc bothHaveArgs(config1, config2 *rspec.LinuxSyscall) bool {\n\treturn hasArguments(config1) && hasArguments(config2)\n}\n\nfunc onlyOneHasArgs(config1, config2 *rspec.LinuxSyscall) bool {\n\tconf1 := hasArguments(config1)\n\tconf2 := hasArguments(config2)\n\n\treturn (conf1 && !conf2) || (!conf1 && conf2)\n}\n\nfunc neitherHasArgs(config1, config2 *rspec.LinuxSyscall) bool {\n\treturn !hasArguments(config1) && !hasArguments(config2)\n}\n\nfunc firstParamOnlyHasArgs(config1, config2 *rspec.LinuxSyscall) bool {\n\treturn !hasArguments(config1) && hasArguments(config2)\n}\n"
  },
  {
    "path": "vendor/github.com/opencontainers/runtime-tools/validate/capabilities/lastcap.go",
    "content": "package capabilities\n\nimport (\n\t\"github.com/moby/sys/capability\"\n)\n\n// LastCap returns last cap of system.\n//\n// Deprecated: use github.com/moby/sys/capability.LastCap instead.\nfunc LastCap() capability.Cap {\n\tlast, err := capability.LastCap()\n\tif err != nil {\n\t\treturn -1\n\t}\n\treturn last\n}\n"
  },
  {
    "path": "vendor/github.com/opencontainers/runtime-tools/validate/capabilities/validate.go",
    "content": "package capabilities\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"github.com/moby/sys/capability\"\n)\n\n// CapValid checks whether a capability is valid. If hostSpecific is set,\n// it also checks that the capability is supported on the current host.\nfunc CapValid(c string, hostSpecific bool) error {\n\tif !strings.HasPrefix(c, \"CAP_\") {\n\t\treturn fmt.Errorf(\"capability %s must start with CAP_\", c)\n\t}\n\n\tif _, ok := knownCaps()[c]; !ok {\n\t\treturn fmt.Errorf(\"invalid capability: %s\", c)\n\t}\n\tif !hostSpecific {\n\t\treturn nil\n\t}\n\tif _, ok := supportedCaps()[c]; !ok {\n\t\treturn fmt.Errorf(\"%s is not supported on the current host\", c)\n\t}\n\treturn nil\n}\n\nfunc capSet(list []capability.Cap) map[string]struct{} {\n\tm := make(map[string]struct{}, len(list))\n\tfor _, c := range list {\n\t\tm[\"CAP_\"+strings.ToUpper(c.String())] = struct{}{}\n\t}\n\treturn m\n}\n\nvar knownCaps = sync.OnceValue(func() map[string]struct{} {\n\treturn capSet(capability.ListKnown())\n})\n\nvar supportedCaps = sync.OnceValue(func() map[string]struct{} {\n\tlist, _ := capability.ListSupported()\n\treturn capSet(list)\n})\n"
  },
  {
    "path": "vendor/github.com/pelletier/go-toml/.dockerignore",
    "content": "cmd/tomll/tomll\ncmd/tomljson/tomljson\n"
  },
  {
    "path": "vendor/github.com/pelletier/go-toml/.gitignore",
    "content": "test_program/test_program_bin\nfuzz/\ncmd/tomll/tomll\ncmd/tomljson/tomljson\ncmd/tomltestgen/tomltestgen\n"
  },
  {
    "path": "vendor/github.com/pelletier/go-toml/CONTRIBUTING.md",
    "content": "## Contributing\n\nThank you for your interest in go-toml! We appreciate you considering\ncontributing to go-toml!\n\nThe main goal is the project is to provide an easy-to-use TOML\nimplementation for Go that gets the job done and gets out of your way –\ndealing with TOML is probably not the central piece of your project.\n\nAs the single maintainer of go-toml, time is scarce. All help, big or\nsmall, is more than welcomed!\n\n### Ask questions\n\nAny question you may have, somebody else might have it too. Always feel\nfree to ask them on the [issues tracker][issues-tracker].  We will try to\nanswer them as clearly and quickly as possible, time permitting.\n\nAsking questions also helps us identify areas where the documentation needs\nimprovement, or new features that weren't envisioned before. Sometimes, a\nseemingly innocent question leads to the fix of a bug. Don't hesitate and\nask away!\n\n### Improve the documentation\n\nThe best way to share your knowledge and experience with go-toml is to\nimprove the documentation. Fix a typo, clarify an interface, add an\nexample, anything goes!\n\nThe documentation is present in the [README][readme] and thorough the\nsource code. On release, it gets updated on [pkg.go.dev][pkg.go.dev]. To make a\nchange to the documentation, create a pull request with your proposed\nchanges. For simple changes like that, the easiest way to go is probably\nthe \"Fork this project and edit the file\" button on Github, displayed at\nthe top right of the file. Unless it's a trivial change (for example a\ntypo), provide a little bit of context in your pull request description or\ncommit message.\n\n### Report a bug\n\nFound a bug! Sorry to hear that :(. Help us and other track them down and\nfix by reporting it. [File a new bug report][bug-report] on the [issues\ntracker][issues-tracker]. The template should provide enough guidance on\nwhat to include. When in doubt: add more details! By reducing ambiguity and\nproviding more information, it decreases back and forth and saves everyone\ntime.\n\n### Code changes\n\nWant to contribute a patch? Very happy to hear that!\n\nFirst, some high-level rules:\n\n* A short proposal with some POC code is better than a lengthy piece of\n  text with no code. Code speaks louder than words.\n* No backward-incompatible patch will be accepted unless discussed.\n  Sometimes it's hard, and Go's lack of versioning by default does not\n  help, but we try not to break people's programs unless we absolutely have\n  to.\n* If you are writing a new feature or extending an existing one, make sure\n  to write some documentation.\n* Bug fixes need to be accompanied with regression tests.\n* New code needs to be tested.\n* Your commit messages need to explain why the change is needed, even if\n  already included in the PR description.\n\nIt does sound like a lot, but those best practices are here to save time\noverall and continuously improve the quality of the project, which is\nsomething everyone benefits from.\n\n#### Get started\n\nThe fairly standard code contribution process looks like that:\n\n1. [Fork the project][fork].\n2. Make your changes, commit on any branch you like.\n3. [Open up a pull request][pull-request]\n4. Review, potential ask for changes.\n5. Merge. You're in!\n\nFeel free to ask for help! You can create draft pull requests to gather\nsome early feedback!\n\n#### Run the tests\n\nYou can run tests for go-toml using Go's test tool: `go test ./...`.\nWhen creating a pull requests, all tests will be ran on Linux on a few Go\nversions (Travis CI), and on Windows using the latest Go version\n(AppVeyor).\n\n#### Style\n\nTry to look around and follow the same format and structure as the rest of\nthe code. We enforce using `go fmt` on the whole code base.\n\n---\n\n### Maintainers-only\n\n#### Merge pull request\n\nChecklist:\n\n* Passing CI.\n* Does not introduce backward-incompatible changes (unless discussed).\n* Has relevant doc changes.\n* Has relevant unit tests.\n\n1. Merge using \"squash and merge\".\n2. Make sure to edit the commit message to keep all the useful information\n   nice and clean.\n3. Make sure the commit title is clear and contains the PR number (#123).\n\n#### New release\n\n1. Go to [releases][releases]. Click on \"X commits to master since this\n   release\".\n2. Make note of all the changes. Look for backward incompatible changes,\n   new features, and bug fixes.\n3. Pick the new version using the above and semver.\n4. Create a [new release][new-release].\n5. Follow the same format as [1.1.0][release-110].\n\n[issues-tracker]: https://github.com/pelletier/go-toml/issues\n[bug-report]: https://github.com/pelletier/go-toml/issues/new?template=bug_report.md\n[pkg.go.dev]: https://pkg.go.dev/github.com/pelletier/go-toml\n[readme]: ./README.md\n[fork]: https://help.github.com/articles/fork-a-repo\n[pull-request]: https://help.github.com/en/articles/creating-a-pull-request\n[releases]: https://github.com/pelletier/go-toml/releases\n[new-release]: https://github.com/pelletier/go-toml/releases/new\n[release-110]: https://github.com/pelletier/go-toml/releases/tag/v1.1.0\n"
  },
  {
    "path": "vendor/github.com/pelletier/go-toml/Dockerfile",
    "content": "FROM golang:1.12-alpine3.9 as builder\nWORKDIR /go/src/github.com/pelletier/go-toml\nCOPY . .\nENV CGO_ENABLED=0\nENV GOOS=linux\nRUN go install ./...\n\nFROM scratch\nCOPY --from=builder /go/bin/tomll /usr/bin/tomll\nCOPY --from=builder /go/bin/tomljson /usr/bin/tomljson\nCOPY --from=builder /go/bin/jsontoml /usr/bin/jsontoml\n"
  },
  {
    "path": "vendor/github.com/pelletier/go-toml/LICENSE",
    "content": "The bulk of github.com/pelletier/go-toml is distributed under the MIT license\n(see below), with the exception of localtime.go and localtime.test.go.\nThose two files have been copied over from Google's civil library at revision\ned46f5086358513cf8c25f8e3f022cb838a49d66, and are distributed under the Apache\n2.0 license (see below).\n\n\ngithub.com/pelletier/go-toml:\n\n\nThe MIT License (MIT)\n\nCopyright (c) 2013 - 2021 Thomas Pelletier, Eric Anderton\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 all\ncopies 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 THE\nSOFTWARE.\n\n\nlocaltime.go, localtime_test.go:\n\nOriginals:\n    https://raw.githubusercontent.com/googleapis/google-cloud-go/ed46f5086358513cf8c25f8e3f022cb838a49d66/civil/civil.go\n    https://raw.githubusercontent.com/googleapis/google-cloud-go/ed46f5086358513cf8c25f8e3f022cb838a49d66/civil/civil_test.go\nChanges:\n    * Renamed files from civil* to localtime*.\n    * Package changed from civil to toml.\n    * 'Local' prefix added to all structs.\nLicense:\n    https://raw.githubusercontent.com/googleapis/google-cloud-go/ed46f5086358513cf8c25f8e3f022cb838a49d66/LICENSE\n\n\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "vendor/github.com/pelletier/go-toml/Makefile",
    "content": "export CGO_ENABLED=0\ngo := go\ngo.goos ?= $(shell echo `go version`|cut -f4 -d ' '|cut -d '/' -f1)\ngo.goarch ?= $(shell echo `go version`|cut -f4 -d ' '|cut -d '/' -f2)\n\nout.tools := tomll tomljson jsontoml\nout.dist := $(out.tools:=_$(go.goos)_$(go.goarch).tar.xz)\nsources := $(wildcard **/*.go)\n\n\n.PHONY:\ntools: $(out.tools)\n\n$(out.tools): $(sources)\n\tGOOS=$(go.goos) GOARCH=$(go.goarch) $(go) build ./cmd/$@\n\n.PHONY:\ndist: $(out.dist)\n\n$(out.dist):%_$(go.goos)_$(go.goarch).tar.xz: %\n\tif [ \"$(go.goos)\" = \"windows\" ]; then \\\n\t\ttar -cJf $@ $^.exe; \\\n\telse \\\n\t\ttar -cJf $@ $^; \\\n\tfi\n\n.PHONY:\nclean:\n\trm -rf $(out.tools) $(out.dist)\n"
  },
  {
    "path": "vendor/github.com/pelletier/go-toml/PULL_REQUEST_TEMPLATE.md",
    "content": "**Issue:** add link to pelletier/go-toml issue here\n\nExplanation of what this pull request does.\n\nMore detailed description of the decisions being made and the reasons why (if the patch is non-trivial).\n"
  },
  {
    "path": "vendor/github.com/pelletier/go-toml/README.md",
    "content": "# go-toml\n\nGo library for the [TOML](https://toml.io/) format.\n\nThis library supports TOML version\n[v1.0.0-rc.3](https://toml.io/en/v1.0.0-rc.3)\n\n[![Go Reference](https://pkg.go.dev/badge/github.com/pelletier/go-toml.svg)](https://pkg.go.dev/github.com/pelletier/go-toml)\n[![license](https://img.shields.io/github/license/pelletier/go-toml.svg)](https://github.com/pelletier/go-toml/blob/master/LICENSE)\n[![Build Status](https://dev.azure.com/pelletierthomas/go-toml-ci/_apis/build/status/pelletier.go-toml?branchName=master)](https://dev.azure.com/pelletierthomas/go-toml-ci/_build/latest?definitionId=1&branchName=master)\n[![codecov](https://codecov.io/gh/pelletier/go-toml/branch/master/graph/badge.svg)](https://codecov.io/gh/pelletier/go-toml)\n[![Go Report Card](https://goreportcard.com/badge/github.com/pelletier/go-toml)](https://goreportcard.com/report/github.com/pelletier/go-toml)\n[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fpelletier%2Fgo-toml.svg?type=shield)](https://app.fossa.io/projects/git%2Bgithub.com%2Fpelletier%2Fgo-toml?ref=badge_shield)\n\n\n## Development status\n\n**ℹ️ Consider go-toml v2!**\n\nThe next version of go-toml is in [active development][v2-dev], and\n[nearing completion][v2-map].\n\nThough technically in beta, v2 is already more tested, [fixes bugs][v1-bugs],\nand [much faster][v2-bench]. If you only need reading and writing TOML documents\n(majority of cases), those features are implemented and the API unlikely to\nchange.\n\nThe remaining features will be added shortly. While pull-requests are welcome on\nv1, no active development is expected on it. When v2.0.0 is released, v1 will be\ndeprecated.\n\n👉 [go-toml v2][v2]\n\n[v2]: https://github.com/pelletier/go-toml/tree/v2\n[v2-map]: https://github.com/pelletier/go-toml/discussions/506\n[v2-dev]: https://github.com/pelletier/go-toml/tree/v2\n[v1-bugs]: https://github.com/pelletier/go-toml/issues?q=is%3Aissue+is%3Aopen+label%3Av2-fixed\n[v2-bench]: https://github.com/pelletier/go-toml/tree/v2#benchmarks\n\n## Features\n\nGo-toml provides the following features for using data parsed from TOML documents:\n\n* Load TOML documents from files and string data\n* Easily navigate TOML structure using Tree\n* Marshaling and unmarshaling to and from data structures\n* Line & column position data for all parsed elements\n* [Query support similar to JSON-Path](query/)\n* Syntax errors contain line and column numbers\n\n## Import\n\n```go\nimport \"github.com/pelletier/go-toml\"\n```\n\n## Usage example\n\nRead a TOML document:\n\n```go\nconfig, _ := toml.Load(`\n[postgres]\nuser = \"pelletier\"\npassword = \"mypassword\"`)\n// retrieve data directly\nuser := config.Get(\"postgres.user\").(string)\n\n// or using an intermediate object\npostgresConfig := config.Get(\"postgres\").(*toml.Tree)\npassword := postgresConfig.Get(\"password\").(string)\n```\n\nOr use Unmarshal:\n\n```go\ntype Postgres struct {\n    User     string\n    Password string\n}\ntype Config struct {\n    Postgres Postgres\n}\n\ndoc := []byte(`\n[Postgres]\nUser = \"pelletier\"\nPassword = \"mypassword\"`)\n\nconfig := Config{}\ntoml.Unmarshal(doc, &config)\nfmt.Println(\"user=\", config.Postgres.User)\n```\n\nOr use a query:\n\n```go\n// use a query to gather elements without walking the tree\nq, _ := query.Compile(\"$..[user,password]\")\nresults := q.Execute(config)\nfor ii, item := range results.Values() {\n    fmt.Printf(\"Query result %d: %v\\n\", ii, item)\n}\n```\n\n## Documentation\n\nThe documentation and additional examples are available at\n[pkg.go.dev](https://pkg.go.dev/github.com/pelletier/go-toml).\n\n## Tools\n\nGo-toml provides three handy command line tools:\n\n* `tomll`: Reads TOML files and lints them.\n\n    ```\n    go install github.com/pelletier/go-toml/cmd/tomll\n    tomll --help\n    ```\n* `tomljson`: Reads a TOML file and outputs its JSON representation.\n\n    ```\n    go install github.com/pelletier/go-toml/cmd/tomljson\n    tomljson --help\n    ```\n\n * `jsontoml`: Reads a JSON file and outputs a TOML representation.\n\n    ```\n    go install github.com/pelletier/go-toml/cmd/jsontoml\n    jsontoml --help\n    ```\n\n### Docker image\n\nThose tools are also available as a Docker image from\n[dockerhub](https://hub.docker.com/r/pelletier/go-toml). For example, to\nuse `tomljson`:\n\n```\ndocker run -v $PWD:/workdir pelletier/go-toml tomljson /workdir/example.toml\n```\n\nOnly master (`latest`) and tagged versions are published to dockerhub. You\ncan build your own image as usual:\n\n```\ndocker build -t go-toml .\n```\n\n## Contribute\n\nFeel free to report bugs and patches using GitHub's pull requests system on\n[pelletier/go-toml](https://github.com/pelletier/go-toml). Any feedback would be\nmuch appreciated!\n\n### Run tests\n\n`go test ./...`\n\n### Fuzzing\n\nThe script `./fuzz.sh` is available to\nrun [go-fuzz](https://github.com/dvyukov/go-fuzz) on go-toml.\n\n## Versioning\n\nGo-toml follows [Semantic Versioning](http://semver.org/). The supported version\nof [TOML](https://github.com/toml-lang/toml) is indicated at the beginning of\nthis document. The last two major versions of Go are supported\n(see [Go Release Policy](https://golang.org/doc/devel/release.html#policy)).\n\n## License\n\nThe MIT License (MIT) + Apache 2.0. Read [LICENSE](LICENSE).\n"
  },
  {
    "path": "vendor/github.com/pelletier/go-toml/SECURITY.md",
    "content": "# Security Policy\n\n## Supported Versions\n\nUse this section to tell people about which versions of your project are\ncurrently being supported with security updates.\n\n| Version    | Supported          |\n| ---------- | ------------------ |\n| Latest 2.x | :white_check_mark: |\n| All 1.x    | :x:                |\n| All 0.x    | :x:                |\n\n## Reporting a Vulnerability\n\nEmail a vulnerability report to `security@pelletier.codes`. Make sure to include\nas many details as possible to reproduce the vulnerability. This is a\nside-project: I will try to get back to you as quickly as possible, time\npermitting in my personal life. Providing a working patch helps very much!\n"
  },
  {
    "path": "vendor/github.com/pelletier/go-toml/azure-pipelines.yml",
    "content": "trigger:\n- master\n\nstages:\n- stage: run_checks\n  displayName: \"Check\"\n  dependsOn: []\n  jobs:\n  - job: fmt\n    displayName: \"fmt\"\n    pool:\n      vmImage: ubuntu-latest\n    steps:\n    - task: GoTool@0\n      displayName: \"Install Go 1.16\"\n      inputs:\n        version: \"1.16\"\n    - task: Go@0\n      displayName: \"go fmt ./...\"\n      inputs:\n        command: 'custom'\n        customCommand: 'fmt'\n        arguments: './...'\n  - job: coverage\n    displayName: \"coverage\"\n    pool:\n      vmImage: ubuntu-latest\n    steps:\n    - task: GoTool@0\n      displayName: \"Install Go 1.16\"\n      inputs:\n        version: \"1.16\"\n    - task: Go@0\n      displayName: \"Generate coverage\"\n      inputs:\n        command: 'test'\n        arguments: \"-race -coverprofile=coverage.txt -covermode=atomic\"\n    - task: Bash@3\n      inputs:\n        targetType: 'inline'\n        script: 'bash <(curl -s https://codecov.io/bash) -t ${CODECOV_TOKEN}'\n      env:\n        CODECOV_TOKEN: $(CODECOV_TOKEN)\n  - job: benchmark\n    displayName: \"benchmark\"\n    pool:\n      vmImage: ubuntu-latest\n    steps:\n    - task: GoTool@0\n      displayName: \"Install Go 1.16\"\n      inputs:\n        version: \"1.16\"\n    - script: echo \"##vso[task.setvariable variable=PATH]${PATH}:/home/vsts/go/bin/\"\n    - task: Bash@3\n      inputs:\n        filePath: './benchmark.sh'\n        arguments: \"master $(Build.Repository.Uri)\"\n\n  - job: go_unit_tests\n    displayName: \"unit tests\"\n    strategy:\n      matrix:\n        linux 1.16:\n          goVersion: '1.16'\n          imageName: 'ubuntu-latest'\n        mac 1.16:\n          goVersion: '1.16'\n          imageName: 'macOS-latest'\n        windows 1.16:\n          goVersion: '1.16'\n          imageName: 'windows-latest'\n        linux 1.15:\n          goVersion: '1.15'\n          imageName: 'ubuntu-latest'\n        mac 1.15:\n          goVersion: '1.15'\n          imageName: 'macOS-latest'\n        windows 1.15:\n          goVersion: '1.15'\n          imageName: 'windows-latest'\n    pool:\n      vmImage: $(imageName)\n    steps:\n    - task: GoTool@0\n      displayName: \"Install Go $(goVersion)\"\n      inputs:\n        version: $(goVersion)\n    - task: Go@0\n      displayName: \"go test ./...\"\n      inputs:\n        command: 'test'\n        arguments: './...'\n- stage: build_binaries\n  displayName: \"Build binaries\"\n  dependsOn: run_checks\n  jobs:\n  - job: build_binary\n    displayName: \"Build binary\"\n    strategy:\n      matrix:\n        linux_amd64:\n          GOOS: linux\n          GOARCH: amd64\n        darwin_amd64:\n          GOOS: darwin\n          GOARCH: amd64\n        windows_amd64:\n          GOOS: windows\n          GOARCH: amd64\n    pool:\n      vmImage: ubuntu-latest\n    steps:\n    - task: GoTool@0\n      displayName: \"Install Go\"\n      inputs:\n        version: 1.16\n    - task: Bash@3\n      inputs:\n        targetType: inline\n        script: \"make dist\"\n      env:\n        go.goos: $(GOOS)\n        go.goarch: $(GOARCH)\n    - task: CopyFiles@2\n      inputs:\n        sourceFolder: '$(Build.SourcesDirectory)'\n        contents: '*.tar.xz'\n        TargetFolder: '$(Build.ArtifactStagingDirectory)'\n    - task: PublishBuildArtifacts@1\n      inputs:\n        pathtoPublish: '$(Build.ArtifactStagingDirectory)'\n        artifactName: binaries\n- stage: build_binaries_manifest\n  displayName: \"Build binaries manifest\"\n  dependsOn: build_binaries\n  jobs:\n  - job: build_manifest\n    displayName: \"Build binaries manifest\"\n    steps:\n      - task: DownloadBuildArtifacts@0\n        inputs:\n          buildType: 'current'\n          downloadType: 'single'\n          artifactName: 'binaries'\n          downloadPath: '$(Build.SourcesDirectory)'\n      - task: Bash@3\n        inputs:\n          targetType: inline\n          script: \"cd binaries && sha256sum --binary *.tar.xz | tee $(Build.ArtifactStagingDirectory)/sha256sums.txt\"\n      - task: PublishBuildArtifacts@1\n        inputs:\n          pathtoPublish: '$(Build.ArtifactStagingDirectory)'\n          artifactName: manifest\n\n- stage: build_docker_image\n  displayName: \"Build Docker image\"\n  dependsOn: run_checks\n  jobs:\n  - job: build\n    displayName: \"Build\"\n    pool:\n      vmImage: ubuntu-latest\n    steps:\n    - task: Docker@2\n      inputs:\n        command: 'build'\n        Dockerfile: 'Dockerfile'\n        buildContext: '.'\n        addPipelineData: false\n\n- stage: publish_docker_image\n  displayName: \"Publish Docker image\"\n  dependsOn: build_docker_image\n  condition: and(succeeded(), eq(variables['Build.SourceBranchName'], 'master'))\n  jobs:\n  - job: publish\n    displayName: \"Publish\"\n    pool:\n      vmImage: ubuntu-latest\n    steps:\n    - task: Docker@2\n      inputs:\n        containerRegistry: 'DockerHub'\n        repository: 'pelletier/go-toml'\n        command: 'buildAndPush'\n        Dockerfile: 'Dockerfile'\n        buildContext: '.'\n        tags: 'latest'\n"
  },
  {
    "path": "vendor/github.com/pelletier/go-toml/benchmark.sh",
    "content": "#!/bin/bash\n\nset -ex\n\nreference_ref=${1:-master}\nreference_git=${2:-.}\n\nif ! `hash benchstat 2>/dev/null`; then\n    echo \"Installing benchstat\"\n    go get golang.org/x/perf/cmd/benchstat\nfi\n\ntempdir=`mktemp -d /tmp/go-toml-benchmark-XXXXXX`\nref_tempdir=\"${tempdir}/ref\"\nref_benchmark=\"${ref_tempdir}/benchmark-`echo -n ${reference_ref}|tr -s '/' '-'`.txt\"\nlocal_benchmark=\"`pwd`/benchmark-local.txt\"\n\necho \"=== ${reference_ref} (${ref_tempdir})\"\ngit clone ${reference_git} ${ref_tempdir} >/dev/null 2>/dev/null\npushd ${ref_tempdir} >/dev/null\ngit checkout ${reference_ref} >/dev/null 2>/dev/null\ngo test -bench=. -benchmem | tee ${ref_benchmark}\ncd benchmark\ngo test -bench=. -benchmem | tee -a ${ref_benchmark}\npopd >/dev/null\n\necho \"\"\necho \"=== local\"\ngo test -bench=. -benchmem  | tee ${local_benchmark}\ncd benchmark\ngo test -bench=. -benchmem | tee -a ${local_benchmark}\n\necho \"\"\necho \"=== diff\"\nbenchstat -delta-test=none ${ref_benchmark} ${local_benchmark}\n"
  },
  {
    "path": "vendor/github.com/pelletier/go-toml/doc.go",
    "content": "// Package toml is a TOML parser and manipulation library.\n//\n// This version supports the specification as described in\n// https://github.com/toml-lang/toml/blob/master/versions/en/toml-v0.5.0.md\n//\n// Marshaling\n//\n// Go-toml can marshal and unmarshal TOML documents from and to data\n// structures.\n//\n// TOML document as a tree\n//\n// Go-toml can operate on a TOML document as a tree. Use one of the Load*\n// functions to parse TOML data and obtain a Tree instance, then one of its\n// methods to manipulate the tree.\n//\n// JSONPath-like queries\n//\n// The package github.com/pelletier/go-toml/query implements a system\n// similar to JSONPath to quickly retrieve elements of a TOML document using a\n// single expression. See the package documentation for more information.\n//\npackage toml\n"
  },
  {
    "path": "vendor/github.com/pelletier/go-toml/example-crlf.toml",
    "content": "# This is a TOML document. Boom.\r\n\r\ntitle = \"TOML Example\"\r\n\r\n[owner]\r\nname = \"Tom Preston-Werner\"\r\norganization = \"GitHub\"\r\nbio = \"GitHub Cofounder & CEO\\nLikes tater tots and beer.\"\r\ndob = 1979-05-27T07:32:00Z # First class dates? Why not?\r\n\r\n[database]\r\nserver = \"192.168.1.1\"\r\nports = [ 8001, 8001, 8002 ]\r\nconnection_max = 5000\r\nenabled = true\r\n\r\n[servers]\r\n\r\n  # You can indent as you please. Tabs or spaces. TOML don't care.\r\n  [servers.alpha]\r\n  ip = \"10.0.0.1\"\r\n  dc = \"eqdc10\"\r\n\r\n  [servers.beta]\r\n  ip = \"10.0.0.2\"\r\n  dc = \"eqdc10\"\r\n\r\n[clients]\r\ndata = [ [\"gamma\", \"delta\"], [1, 2] ] # just an update to make sure parsers support it\r\nscore = 4e-08 # to make sure leading zeroes in exponent parts of floats are supported"
  },
  {
    "path": "vendor/github.com/pelletier/go-toml/example.toml",
    "content": "# This is a TOML document. Boom.\n\ntitle = \"TOML Example\"\n\n[owner]\nname = \"Tom Preston-Werner\"\norganization = \"GitHub\"\nbio = \"GitHub Cofounder & CEO\\nLikes tater tots and beer.\"\ndob = 1979-05-27T07:32:00Z # First class dates? Why not?\n\n[database]\nserver = \"192.168.1.1\"\nports = [ 8001, 8001, 8002 ]\nconnection_max = 5000\nenabled = true\n\n[servers]\n\n  # You can indent as you please. Tabs or spaces. TOML don't care.\n  [servers.alpha]\n  ip = \"10.0.0.1\"\n  dc = \"eqdc10\"\n\n  [servers.beta]\n  ip = \"10.0.0.2\"\n  dc = \"eqdc10\"\n\n[clients]\ndata = [ [\"gamma\", \"delta\"], [1, 2] ] # just an update to make sure parsers support it\nscore = 4e-08 # to make sure leading zeroes in exponent parts of floats are supported"
  },
  {
    "path": "vendor/github.com/pelletier/go-toml/fuzz.go",
    "content": "// +build gofuzz\n\npackage toml\n\nfunc Fuzz(data []byte) int {\n\ttree, err := LoadBytes(data)\n\tif err != nil {\n\t\tif tree != nil {\n\t\t\tpanic(\"tree must be nil if there is an error\")\n\t\t}\n\t\treturn 0\n\t}\n\n\tstr, err := tree.ToTomlString()\n\tif err != nil {\n\t\tif str != \"\" {\n\t\t\tpanic(`str must be \"\" if there is an error`)\n\t\t}\n\t\tpanic(err)\n\t}\n\n\ttree, err = Load(str)\n\tif err != nil {\n\t\tif tree != nil {\n\t\t\tpanic(\"tree must be nil if there is an error\")\n\t\t}\n\t\treturn 0\n\t}\n\n\treturn 1\n}\n"
  },
  {
    "path": "vendor/github.com/pelletier/go-toml/fuzz.sh",
    "content": "#! /bin/sh\nset -eu\n\ngo get github.com/dvyukov/go-fuzz/go-fuzz\ngo get github.com/dvyukov/go-fuzz/go-fuzz-build\n\nif [ ! -e toml-fuzz.zip ]; then\n    go-fuzz-build github.com/pelletier/go-toml\nfi\n\nrm -fr fuzz\nmkdir -p fuzz/corpus\ncp *.toml fuzz/corpus\n\ngo-fuzz -bin=toml-fuzz.zip -workdir=fuzz\n"
  },
  {
    "path": "vendor/github.com/pelletier/go-toml/keysparsing.go",
    "content": "// Parsing keys handling both bare and quoted keys.\n\npackage toml\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n)\n\n// Convert the bare key group string to an array.\n// The input supports double quotation and single quotation,\n// but escape sequences are not supported. Lexers must unescape them beforehand.\nfunc parseKey(key string) ([]string, error) {\n\trunes := []rune(key)\n\tvar groups []string\n\n\tif len(key) == 0 {\n\t\treturn nil, errors.New(\"empty key\")\n\t}\n\n\tidx := 0\n\tfor idx < len(runes) {\n\t\tfor ; idx < len(runes) && isSpace(runes[idx]); idx++ {\n\t\t\t// skip leading whitespace\n\t\t}\n\t\tif idx >= len(runes) {\n\t\t\tbreak\n\t\t}\n\t\tr := runes[idx]\n\t\tif isValidBareChar(r) {\n\t\t\t// parse bare key\n\t\t\tstartIdx := idx\n\t\t\tendIdx := -1\n\t\t\tidx++\n\t\t\tfor idx < len(runes) {\n\t\t\t\tr = runes[idx]\n\t\t\t\tif isValidBareChar(r) {\n\t\t\t\t\tidx++\n\t\t\t\t} else if r == '.' {\n\t\t\t\t\tendIdx = idx\n\t\t\t\t\tbreak\n\t\t\t\t} else if isSpace(r) {\n\t\t\t\t\tendIdx = idx\n\t\t\t\t\tfor ; idx < len(runes) && isSpace(runes[idx]); idx++ {\n\t\t\t\t\t\t// skip trailing whitespace\n\t\t\t\t\t}\n\t\t\t\t\tif idx < len(runes) && runes[idx] != '.' {\n\t\t\t\t\t\treturn nil, fmt.Errorf(\"invalid key character after whitespace: %c\", runes[idx])\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t} else {\n\t\t\t\t\treturn nil, fmt.Errorf(\"invalid bare key character: %c\", r)\n\t\t\t\t}\n\t\t\t}\n\t\t\tif endIdx == -1 {\n\t\t\t\tendIdx = idx\n\t\t\t}\n\t\t\tgroups = append(groups, string(runes[startIdx:endIdx]))\n\t\t} else if r == '\\'' {\n\t\t\t// parse single quoted key\n\t\t\tidx++\n\t\t\tstartIdx := idx\n\t\t\tfor {\n\t\t\t\tif idx >= len(runes) {\n\t\t\t\t\treturn nil, fmt.Errorf(\"unclosed single-quoted key\")\n\t\t\t\t}\n\t\t\t\tr = runes[idx]\n\t\t\t\tif r == '\\'' {\n\t\t\t\t\tgroups = append(groups, string(runes[startIdx:idx]))\n\t\t\t\t\tidx++\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tidx++\n\t\t\t}\n\t\t} else if r == '\"' {\n\t\t\t// parse double quoted key\n\t\t\tidx++\n\t\t\tstartIdx := idx\n\t\t\tfor {\n\t\t\t\tif idx >= len(runes) {\n\t\t\t\t\treturn nil, fmt.Errorf(\"unclosed double-quoted key\")\n\t\t\t\t}\n\t\t\t\tr = runes[idx]\n\t\t\t\tif r == '\"' {\n\t\t\t\t\tgroups = append(groups, string(runes[startIdx:idx]))\n\t\t\t\t\tidx++\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tidx++\n\t\t\t}\n\t\t} else if r == '.' {\n\t\t\tidx++\n\t\t\tif idx >= len(runes) {\n\t\t\t\treturn nil, fmt.Errorf(\"unexpected end of key\")\n\t\t\t}\n\t\t\tr = runes[idx]\n\t\t\tif !isValidBareChar(r) && r != '\\'' && r != '\"' && r != ' ' {\n\t\t\t\treturn nil, fmt.Errorf(\"expecting key part after dot\")\n\t\t\t}\n\t\t} else {\n\t\t\treturn nil, fmt.Errorf(\"invalid key character: %c\", r)\n\t\t}\n\t}\n\tif len(groups) == 0 {\n\t\treturn nil, fmt.Errorf(\"empty key\")\n\t}\n\treturn groups, nil\n}\n\nfunc isValidBareChar(r rune) bool {\n\treturn isAlphanumeric(r) || r == '-' || isDigit(r)\n}\n"
  },
  {
    "path": "vendor/github.com/pelletier/go-toml/lexer.go",
    "content": "// TOML lexer.\n//\n// Written using the principles developed by Rob Pike in\n// http://www.youtube.com/watch?v=HxaD_trXwRE\n\npackage toml\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"strconv\"\n\t\"strings\"\n)\n\n// Define state functions\ntype tomlLexStateFn func() tomlLexStateFn\n\n// Define lexer\ntype tomlLexer struct {\n\tinputIdx          int\n\tinput             []rune // Textual source\n\tcurrentTokenStart int\n\tcurrentTokenStop  int\n\ttokens            []token\n\tbrackets          []rune\n\tline              int\n\tcol               int\n\tendbufferLine     int\n\tendbufferCol      int\n}\n\n// Basic read operations on input\n\nfunc (l *tomlLexer) read() rune {\n\tr := l.peek()\n\tif r == '\\n' {\n\t\tl.endbufferLine++\n\t\tl.endbufferCol = 1\n\t} else {\n\t\tl.endbufferCol++\n\t}\n\tl.inputIdx++\n\treturn r\n}\n\nfunc (l *tomlLexer) next() rune {\n\tr := l.read()\n\n\tif r != eof {\n\t\tl.currentTokenStop++\n\t}\n\treturn r\n}\n\nfunc (l *tomlLexer) ignore() {\n\tl.currentTokenStart = l.currentTokenStop\n\tl.line = l.endbufferLine\n\tl.col = l.endbufferCol\n}\n\nfunc (l *tomlLexer) skip() {\n\tl.next()\n\tl.ignore()\n}\n\nfunc (l *tomlLexer) fastForward(n int) {\n\tfor i := 0; i < n; i++ {\n\t\tl.next()\n\t}\n}\n\nfunc (l *tomlLexer) emitWithValue(t tokenType, value string) {\n\tl.tokens = append(l.tokens, token{\n\t\tPosition: Position{l.line, l.col},\n\t\ttyp:      t,\n\t\tval:      value,\n\t})\n\tl.ignore()\n}\n\nfunc (l *tomlLexer) emit(t tokenType) {\n\tl.emitWithValue(t, string(l.input[l.currentTokenStart:l.currentTokenStop]))\n}\n\nfunc (l *tomlLexer) peek() rune {\n\tif l.inputIdx >= len(l.input) {\n\t\treturn eof\n\t}\n\treturn l.input[l.inputIdx]\n}\n\nfunc (l *tomlLexer) peekString(size int) string {\n\tmaxIdx := len(l.input)\n\tupperIdx := l.inputIdx + size // FIXME: potential overflow\n\tif upperIdx > maxIdx {\n\t\tupperIdx = maxIdx\n\t}\n\treturn string(l.input[l.inputIdx:upperIdx])\n}\n\nfunc (l *tomlLexer) follow(next string) bool {\n\treturn next == l.peekString(len(next))\n}\n\n// Error management\n\nfunc (l *tomlLexer) errorf(format string, args ...interface{}) tomlLexStateFn {\n\tl.tokens = append(l.tokens, token{\n\t\tPosition: Position{l.line, l.col},\n\t\ttyp:      tokenError,\n\t\tval:      fmt.Sprintf(format, args...),\n\t})\n\treturn nil\n}\n\n// State functions\n\nfunc (l *tomlLexer) lexVoid() tomlLexStateFn {\n\tfor {\n\t\tnext := l.peek()\n\t\tswitch next {\n\t\tcase '}': // after '{'\n\t\t\treturn l.lexRightCurlyBrace\n\t\tcase '[':\n\t\t\treturn l.lexTableKey\n\t\tcase '#':\n\t\t\treturn l.lexComment(l.lexVoid)\n\t\tcase '=':\n\t\t\treturn l.lexEqual\n\t\tcase '\\r':\n\t\t\tfallthrough\n\t\tcase '\\n':\n\t\t\tl.skip()\n\t\t\tcontinue\n\t\t}\n\n\t\tif isSpace(next) {\n\t\t\tl.skip()\n\t\t}\n\n\t\tif isKeyStartChar(next) {\n\t\t\treturn l.lexKey\n\t\t}\n\n\t\tif next == eof {\n\t\t\tl.next()\n\t\t\tbreak\n\t\t}\n\t}\n\n\tl.emit(tokenEOF)\n\treturn nil\n}\n\nfunc (l *tomlLexer) lexRvalue() tomlLexStateFn {\n\tfor {\n\t\tnext := l.peek()\n\t\tswitch next {\n\t\tcase '.':\n\t\t\treturn l.errorf(\"cannot start float with a dot\")\n\t\tcase '=':\n\t\t\treturn l.lexEqual\n\t\tcase '[':\n\t\t\treturn l.lexLeftBracket\n\t\tcase ']':\n\t\t\treturn l.lexRightBracket\n\t\tcase '{':\n\t\t\treturn l.lexLeftCurlyBrace\n\t\tcase '}':\n\t\t\treturn l.lexRightCurlyBrace\n\t\tcase '#':\n\t\t\treturn l.lexComment(l.lexRvalue)\n\t\tcase '\"':\n\t\t\treturn l.lexString\n\t\tcase '\\'':\n\t\t\treturn l.lexLiteralString\n\t\tcase ',':\n\t\t\treturn l.lexComma\n\t\tcase '\\r':\n\t\t\tfallthrough\n\t\tcase '\\n':\n\t\t\tl.skip()\n\t\t\tif len(l.brackets) > 0 && l.brackets[len(l.brackets)-1] == '[' {\n\t\t\t\treturn l.lexRvalue\n\t\t\t}\n\t\t\treturn l.lexVoid\n\t\t}\n\n\t\tif l.follow(\"true\") {\n\t\t\treturn l.lexTrue\n\t\t}\n\n\t\tif l.follow(\"false\") {\n\t\t\treturn l.lexFalse\n\t\t}\n\n\t\tif l.follow(\"inf\") {\n\t\t\treturn l.lexInf\n\t\t}\n\n\t\tif l.follow(\"nan\") {\n\t\t\treturn l.lexNan\n\t\t}\n\n\t\tif isSpace(next) {\n\t\t\tl.skip()\n\t\t\tcontinue\n\t\t}\n\n\t\tif next == eof {\n\t\t\tl.next()\n\t\t\tbreak\n\t\t}\n\n\t\tif next == '+' || next == '-' {\n\t\t\treturn l.lexNumber\n\t\t}\n\n\t\tif isDigit(next) {\n\t\t\treturn l.lexDateTimeOrNumber\n\t\t}\n\n\t\treturn l.errorf(\"no value can start with %c\", next)\n\t}\n\n\tl.emit(tokenEOF)\n\treturn nil\n}\n\nfunc (l *tomlLexer) lexDateTimeOrNumber() tomlLexStateFn {\n\t// Could be either a date/time, or a digit.\n\t// The options for date/times are:\n\t//   YYYY-... => date or date-time\n\t//   HH:... => time\n\t// Anything else should be a number.\n\n\tlookAhead := l.peekString(5)\n\tif len(lookAhead) < 3 {\n\t\treturn l.lexNumber()\n\t}\n\n\tfor idx, r := range lookAhead {\n\t\tif !isDigit(r) {\n\t\t\tif idx == 2 && r == ':' {\n\t\t\t\treturn l.lexDateTimeOrTime()\n\t\t\t}\n\t\t\tif idx == 4 && r == '-' {\n\t\t\t\treturn l.lexDateTimeOrTime()\n\t\t\t}\n\t\t\treturn l.lexNumber()\n\t\t}\n\t}\n\treturn l.lexNumber()\n}\n\nfunc (l *tomlLexer) lexLeftCurlyBrace() tomlLexStateFn {\n\tl.next()\n\tl.emit(tokenLeftCurlyBrace)\n\tl.brackets = append(l.brackets, '{')\n\treturn l.lexVoid\n}\n\nfunc (l *tomlLexer) lexRightCurlyBrace() tomlLexStateFn {\n\tl.next()\n\tl.emit(tokenRightCurlyBrace)\n\tif len(l.brackets) == 0 || l.brackets[len(l.brackets)-1] != '{' {\n\t\treturn l.errorf(\"cannot have '}' here\")\n\t}\n\tl.brackets = l.brackets[:len(l.brackets)-1]\n\treturn l.lexRvalue\n}\n\nfunc (l *tomlLexer) lexDateTimeOrTime() tomlLexStateFn {\n\t// Example matches:\n\t// 1979-05-27T07:32:00Z\n\t// 1979-05-27T00:32:00-07:00\n\t// 1979-05-27T00:32:00.999999-07:00\n\t// 1979-05-27 07:32:00Z\n\t// 1979-05-27 00:32:00-07:00\n\t// 1979-05-27 00:32:00.999999-07:00\n\t// 1979-05-27T07:32:00\n\t// 1979-05-27T00:32:00.999999\n\t// 1979-05-27 07:32:00\n\t// 1979-05-27 00:32:00.999999\n\t// 1979-05-27\n\t// 07:32:00\n\t// 00:32:00.999999\n\n\t// we already know those two are digits\n\tl.next()\n\tl.next()\n\n\t// Got 2 digits. At that point it could be either a time or a date(-time).\n\n\tr := l.next()\n\tif r == ':' {\n\t\treturn l.lexTime()\n\t}\n\n\treturn l.lexDateTime()\n}\n\nfunc (l *tomlLexer) lexDateTime() tomlLexStateFn {\n\t// This state accepts an offset date-time, a local date-time, or a local date.\n\t//\n\t//   v--- cursor\n\t// 1979-05-27T07:32:00Z\n\t// 1979-05-27T00:32:00-07:00\n\t// 1979-05-27T00:32:00.999999-07:00\n\t// 1979-05-27 07:32:00Z\n\t// 1979-05-27 00:32:00-07:00\n\t// 1979-05-27 00:32:00.999999-07:00\n\t// 1979-05-27T07:32:00\n\t// 1979-05-27T00:32:00.999999\n\t// 1979-05-27 07:32:00\n\t// 1979-05-27 00:32:00.999999\n\t// 1979-05-27\n\n\t// date\n\n\t// already checked by lexRvalue\n\tl.next() // digit\n\tl.next() // -\n\n\tfor i := 0; i < 2; i++ {\n\t\tr := l.next()\n\t\tif !isDigit(r) {\n\t\t\treturn l.errorf(\"invalid month digit in date: %c\", r)\n\t\t}\n\t}\n\n\tr := l.next()\n\tif r != '-' {\n\t\treturn l.errorf(\"expected - to separate month of a date, not %c\", r)\n\t}\n\n\tfor i := 0; i < 2; i++ {\n\t\tr := l.next()\n\t\tif !isDigit(r) {\n\t\t\treturn l.errorf(\"invalid day digit in date: %c\", r)\n\t\t}\n\t}\n\n\tl.emit(tokenLocalDate)\n\n\tr = l.peek()\n\n\tif r == eof {\n\n\t\treturn l.lexRvalue\n\t}\n\n\tif r != ' ' && r != 'T' {\n\t\treturn l.errorf(\"incorrect date/time separation character: %c\", r)\n\t}\n\n\tif r == ' ' {\n\t\tlookAhead := l.peekString(3)[1:]\n\t\tif len(lookAhead) < 2 {\n\t\t\treturn l.lexRvalue\n\t\t}\n\t\tfor _, r := range lookAhead {\n\t\t\tif !isDigit(r) {\n\t\t\t\treturn l.lexRvalue\n\t\t\t}\n\t\t}\n\t}\n\n\tl.skip() // skip the T or ' '\n\n\t// time\n\n\tfor i := 0; i < 2; i++ {\n\t\tr := l.next()\n\t\tif !isDigit(r) {\n\t\t\treturn l.errorf(\"invalid hour digit in time: %c\", r)\n\t\t}\n\t}\n\n\tr = l.next()\n\tif r != ':' {\n\t\treturn l.errorf(\"time hour/minute separator should be :, not %c\", r)\n\t}\n\n\tfor i := 0; i < 2; i++ {\n\t\tr := l.next()\n\t\tif !isDigit(r) {\n\t\t\treturn l.errorf(\"invalid minute digit in time: %c\", r)\n\t\t}\n\t}\n\n\tr = l.next()\n\tif r != ':' {\n\t\treturn l.errorf(\"time minute/second separator should be :, not %c\", r)\n\t}\n\n\tfor i := 0; i < 2; i++ {\n\t\tr := l.next()\n\t\tif !isDigit(r) {\n\t\t\treturn l.errorf(\"invalid second digit in time: %c\", r)\n\t\t}\n\t}\n\n\tr = l.peek()\n\tif r == '.' {\n\t\tl.next()\n\t\tr := l.next()\n\t\tif !isDigit(r) {\n\t\t\treturn l.errorf(\"expected at least one digit in time's fraction, not %c\", r)\n\t\t}\n\n\t\tfor {\n\t\t\tr := l.peek()\n\t\t\tif !isDigit(r) {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tl.next()\n\t\t}\n\t}\n\n\tl.emit(tokenLocalTime)\n\n\treturn l.lexTimeOffset\n\n}\n\nfunc (l *tomlLexer) lexTimeOffset() tomlLexStateFn {\n\t// potential offset\n\n\t// Z\n\t// -07:00\n\t// +07:00\n\t// nothing\n\n\tr := l.peek()\n\n\tif r == 'Z' {\n\t\tl.next()\n\t\tl.emit(tokenTimeOffset)\n\t} else if r == '+' || r == '-' {\n\t\tl.next()\n\n\t\tfor i := 0; i < 2; i++ {\n\t\t\tr := l.next()\n\t\t\tif !isDigit(r) {\n\t\t\t\treturn l.errorf(\"invalid hour digit in time offset: %c\", r)\n\t\t\t}\n\t\t}\n\n\t\tr = l.next()\n\t\tif r != ':' {\n\t\t\treturn l.errorf(\"time offset hour/minute separator should be :, not %c\", r)\n\t\t}\n\n\t\tfor i := 0; i < 2; i++ {\n\t\t\tr := l.next()\n\t\t\tif !isDigit(r) {\n\t\t\t\treturn l.errorf(\"invalid minute digit in time offset: %c\", r)\n\t\t\t}\n\t\t}\n\n\t\tl.emit(tokenTimeOffset)\n\t}\n\n\treturn l.lexRvalue\n}\n\nfunc (l *tomlLexer) lexTime() tomlLexStateFn {\n\t//   v--- cursor\n\t// 07:32:00\n\t// 00:32:00.999999\n\n\tfor i := 0; i < 2; i++ {\n\t\tr := l.next()\n\t\tif !isDigit(r) {\n\t\t\treturn l.errorf(\"invalid minute digit in time: %c\", r)\n\t\t}\n\t}\n\n\tr := l.next()\n\tif r != ':' {\n\t\treturn l.errorf(\"time minute/second separator should be :, not %c\", r)\n\t}\n\n\tfor i := 0; i < 2; i++ {\n\t\tr := l.next()\n\t\tif !isDigit(r) {\n\t\t\treturn l.errorf(\"invalid second digit in time: %c\", r)\n\t\t}\n\t}\n\n\tr = l.peek()\n\tif r == '.' {\n\t\tl.next()\n\t\tr := l.next()\n\t\tif !isDigit(r) {\n\t\t\treturn l.errorf(\"expected at least one digit in time's fraction, not %c\", r)\n\t\t}\n\n\t\tfor {\n\t\t\tr := l.peek()\n\t\t\tif !isDigit(r) {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tl.next()\n\t\t}\n\t}\n\n\tl.emit(tokenLocalTime)\n\treturn l.lexRvalue\n\n}\n\nfunc (l *tomlLexer) lexTrue() tomlLexStateFn {\n\tl.fastForward(4)\n\tl.emit(tokenTrue)\n\treturn l.lexRvalue\n}\n\nfunc (l *tomlLexer) lexFalse() tomlLexStateFn {\n\tl.fastForward(5)\n\tl.emit(tokenFalse)\n\treturn l.lexRvalue\n}\n\nfunc (l *tomlLexer) lexInf() tomlLexStateFn {\n\tl.fastForward(3)\n\tl.emit(tokenInf)\n\treturn l.lexRvalue\n}\n\nfunc (l *tomlLexer) lexNan() tomlLexStateFn {\n\tl.fastForward(3)\n\tl.emit(tokenNan)\n\treturn l.lexRvalue\n}\n\nfunc (l *tomlLexer) lexEqual() tomlLexStateFn {\n\tl.next()\n\tl.emit(tokenEqual)\n\treturn l.lexRvalue\n}\n\nfunc (l *tomlLexer) lexComma() tomlLexStateFn {\n\tl.next()\n\tl.emit(tokenComma)\n\tif len(l.brackets) > 0 && l.brackets[len(l.brackets)-1] == '{' {\n\t\treturn l.lexVoid\n\t}\n\treturn l.lexRvalue\n}\n\n// Parse the key and emits its value without escape sequences.\n// bare keys, basic string keys and literal string keys are supported.\nfunc (l *tomlLexer) lexKey() tomlLexStateFn {\n\tvar sb strings.Builder\n\n\tfor r := l.peek(); isKeyChar(r) || r == '\\n' || r == '\\r'; r = l.peek() {\n\t\tif r == '\"' {\n\t\t\tl.next()\n\t\t\tstr, err := l.lexStringAsString(`\"`, false, true)\n\t\t\tif err != nil {\n\t\t\t\treturn l.errorf(err.Error())\n\t\t\t}\n\t\t\tsb.WriteString(\"\\\"\")\n\t\t\tsb.WriteString(str)\n\t\t\tsb.WriteString(\"\\\"\")\n\t\t\tl.next()\n\t\t\tcontinue\n\t\t} else if r == '\\'' {\n\t\t\tl.next()\n\t\t\tstr, err := l.lexLiteralStringAsString(`'`, false)\n\t\t\tif err != nil {\n\t\t\t\treturn l.errorf(err.Error())\n\t\t\t}\n\t\t\tsb.WriteString(\"'\")\n\t\t\tsb.WriteString(str)\n\t\t\tsb.WriteString(\"'\")\n\t\t\tl.next()\n\t\t\tcontinue\n\t\t} else if r == '\\n' {\n\t\t\treturn l.errorf(\"keys cannot contain new lines\")\n\t\t} else if isSpace(r) {\n\t\t\tvar str strings.Builder\n\t\t\tstr.WriteString(\" \")\n\n\t\t\t// skip trailing whitespace\n\t\t\tl.next()\n\t\t\tfor r = l.peek(); isSpace(r); r = l.peek() {\n\t\t\t\tstr.WriteRune(r)\n\t\t\t\tl.next()\n\t\t\t}\n\t\t\t// break loop if not a dot\n\t\t\tif r != '.' {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tstr.WriteString(\".\")\n\t\t\t// skip trailing whitespace after dot\n\t\t\tl.next()\n\t\t\tfor r = l.peek(); isSpace(r); r = l.peek() {\n\t\t\t\tstr.WriteRune(r)\n\t\t\t\tl.next()\n\t\t\t}\n\t\t\tsb.WriteString(str.String())\n\t\t\tcontinue\n\t\t} else if r == '.' {\n\t\t\t// skip\n\t\t} else if !isValidBareChar(r) {\n\t\t\treturn l.errorf(\"keys cannot contain %c character\", r)\n\t\t}\n\t\tsb.WriteRune(r)\n\t\tl.next()\n\t}\n\tl.emitWithValue(tokenKey, sb.String())\n\treturn l.lexVoid\n}\n\nfunc (l *tomlLexer) lexComment(previousState tomlLexStateFn) tomlLexStateFn {\n\treturn func() tomlLexStateFn {\n\t\tfor next := l.peek(); next != '\\n' && next != eof; next = l.peek() {\n\t\t\tif next == '\\r' && l.follow(\"\\r\\n\") {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tl.next()\n\t\t}\n\t\tl.ignore()\n\t\treturn previousState\n\t}\n}\n\nfunc (l *tomlLexer) lexLeftBracket() tomlLexStateFn {\n\tl.next()\n\tl.emit(tokenLeftBracket)\n\tl.brackets = append(l.brackets, '[')\n\treturn l.lexRvalue\n}\n\nfunc (l *tomlLexer) lexLiteralStringAsString(terminator string, discardLeadingNewLine bool) (string, error) {\n\tvar sb strings.Builder\n\n\tif discardLeadingNewLine {\n\t\tif l.follow(\"\\r\\n\") {\n\t\t\tl.skip()\n\t\t\tl.skip()\n\t\t} else if l.peek() == '\\n' {\n\t\t\tl.skip()\n\t\t}\n\t}\n\n\t// find end of string\n\tfor {\n\t\tif l.follow(terminator) {\n\t\t\treturn sb.String(), nil\n\t\t}\n\n\t\tnext := l.peek()\n\t\tif next == eof {\n\t\t\tbreak\n\t\t}\n\t\tsb.WriteRune(l.next())\n\t}\n\n\treturn \"\", errors.New(\"unclosed string\")\n}\n\nfunc (l *tomlLexer) lexLiteralString() tomlLexStateFn {\n\tl.skip()\n\n\t// handle special case for triple-quote\n\tterminator := \"'\"\n\tdiscardLeadingNewLine := false\n\tif l.follow(\"''\") {\n\t\tl.skip()\n\t\tl.skip()\n\t\tterminator = \"'''\"\n\t\tdiscardLeadingNewLine = true\n\t}\n\n\tstr, err := l.lexLiteralStringAsString(terminator, discardLeadingNewLine)\n\tif err != nil {\n\t\treturn l.errorf(err.Error())\n\t}\n\n\tl.emitWithValue(tokenString, str)\n\tl.fastForward(len(terminator))\n\tl.ignore()\n\treturn l.lexRvalue\n}\n\n// Lex a string and return the results as a string.\n// Terminator is the substring indicating the end of the token.\n// The resulting string does not include the terminator.\nfunc (l *tomlLexer) lexStringAsString(terminator string, discardLeadingNewLine, acceptNewLines bool) (string, error) {\n\tvar sb strings.Builder\n\n\tif discardLeadingNewLine {\n\t\tif l.follow(\"\\r\\n\") {\n\t\t\tl.skip()\n\t\t\tl.skip()\n\t\t} else if l.peek() == '\\n' {\n\t\t\tl.skip()\n\t\t}\n\t}\n\n\tfor {\n\t\tif l.follow(terminator) {\n\t\t\treturn sb.String(), nil\n\t\t}\n\n\t\tif l.follow(\"\\\\\") {\n\t\t\tl.next()\n\t\t\tswitch l.peek() {\n\t\t\tcase '\\r':\n\t\t\t\tfallthrough\n\t\t\tcase '\\n':\n\t\t\t\tfallthrough\n\t\t\tcase '\\t':\n\t\t\t\tfallthrough\n\t\t\tcase ' ':\n\t\t\t\t// skip all whitespace chars following backslash\n\t\t\t\tfor strings.ContainsRune(\"\\r\\n\\t \", l.peek()) {\n\t\t\t\t\tl.next()\n\t\t\t\t}\n\t\t\tcase '\"':\n\t\t\t\tsb.WriteString(\"\\\"\")\n\t\t\t\tl.next()\n\t\t\tcase 'n':\n\t\t\t\tsb.WriteString(\"\\n\")\n\t\t\t\tl.next()\n\t\t\tcase 'b':\n\t\t\t\tsb.WriteString(\"\\b\")\n\t\t\t\tl.next()\n\t\t\tcase 'f':\n\t\t\t\tsb.WriteString(\"\\f\")\n\t\t\t\tl.next()\n\t\t\tcase '/':\n\t\t\t\tsb.WriteString(\"/\")\n\t\t\t\tl.next()\n\t\t\tcase 't':\n\t\t\t\tsb.WriteString(\"\\t\")\n\t\t\t\tl.next()\n\t\t\tcase 'r':\n\t\t\t\tsb.WriteString(\"\\r\")\n\t\t\t\tl.next()\n\t\t\tcase '\\\\':\n\t\t\t\tsb.WriteString(\"\\\\\")\n\t\t\t\tl.next()\n\t\t\tcase 'u':\n\t\t\t\tl.next()\n\t\t\t\tvar code strings.Builder\n\t\t\t\tfor i := 0; i < 4; i++ {\n\t\t\t\t\tc := l.peek()\n\t\t\t\t\tif !isHexDigit(c) {\n\t\t\t\t\t\treturn \"\", errors.New(\"unfinished unicode escape\")\n\t\t\t\t\t}\n\t\t\t\t\tl.next()\n\t\t\t\t\tcode.WriteRune(c)\n\t\t\t\t}\n\t\t\t\tintcode, err := strconv.ParseInt(code.String(), 16, 32)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn \"\", errors.New(\"invalid unicode escape: \\\\u\" + code.String())\n\t\t\t\t}\n\t\t\t\tsb.WriteRune(rune(intcode))\n\t\t\tcase 'U':\n\t\t\t\tl.next()\n\t\t\t\tvar code strings.Builder\n\t\t\t\tfor i := 0; i < 8; i++ {\n\t\t\t\t\tc := l.peek()\n\t\t\t\t\tif !isHexDigit(c) {\n\t\t\t\t\t\treturn \"\", errors.New(\"unfinished unicode escape\")\n\t\t\t\t\t}\n\t\t\t\t\tl.next()\n\t\t\t\t\tcode.WriteRune(c)\n\t\t\t\t}\n\t\t\t\tintcode, err := strconv.ParseInt(code.String(), 16, 64)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn \"\", errors.New(\"invalid unicode escape: \\\\U\" + code.String())\n\t\t\t\t}\n\t\t\t\tsb.WriteRune(rune(intcode))\n\t\t\tdefault:\n\t\t\t\treturn \"\", errors.New(\"invalid escape sequence: \\\\\" + string(l.peek()))\n\t\t\t}\n\t\t} else {\n\t\t\tr := l.peek()\n\n\t\t\tif 0x00 <= r && r <= 0x1F && r != '\\t' && !(acceptNewLines && (r == '\\n' || r == '\\r')) {\n\t\t\t\treturn \"\", fmt.Errorf(\"unescaped control character %U\", r)\n\t\t\t}\n\t\t\tl.next()\n\t\t\tsb.WriteRune(r)\n\t\t}\n\n\t\tif l.peek() == eof {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn \"\", errors.New(\"unclosed string\")\n}\n\nfunc (l *tomlLexer) lexString() tomlLexStateFn {\n\tl.skip()\n\n\t// handle special case for triple-quote\n\tterminator := `\"`\n\tdiscardLeadingNewLine := false\n\tacceptNewLines := false\n\tif l.follow(`\"\"`) {\n\t\tl.skip()\n\t\tl.skip()\n\t\tterminator = `\"\"\"`\n\t\tdiscardLeadingNewLine = true\n\t\tacceptNewLines = true\n\t}\n\n\tstr, err := l.lexStringAsString(terminator, discardLeadingNewLine, acceptNewLines)\n\tif err != nil {\n\t\treturn l.errorf(err.Error())\n\t}\n\n\tl.emitWithValue(tokenString, str)\n\tl.fastForward(len(terminator))\n\tl.ignore()\n\treturn l.lexRvalue\n}\n\nfunc (l *tomlLexer) lexTableKey() tomlLexStateFn {\n\tl.next()\n\n\tif l.peek() == '[' {\n\t\t// token '[[' signifies an array of tables\n\t\tl.next()\n\t\tl.emit(tokenDoubleLeftBracket)\n\t\treturn l.lexInsideTableArrayKey\n\t}\n\t// vanilla table key\n\tl.emit(tokenLeftBracket)\n\treturn l.lexInsideTableKey\n}\n\n// Parse the key till \"]]\", but only bare keys are supported\nfunc (l *tomlLexer) lexInsideTableArrayKey() tomlLexStateFn {\n\tfor r := l.peek(); r != eof; r = l.peek() {\n\t\tswitch r {\n\t\tcase ']':\n\t\t\tif l.currentTokenStop > l.currentTokenStart {\n\t\t\t\tl.emit(tokenKeyGroupArray)\n\t\t\t}\n\t\t\tl.next()\n\t\t\tif l.peek() != ']' {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tl.next()\n\t\t\tl.emit(tokenDoubleRightBracket)\n\t\t\treturn l.lexVoid\n\t\tcase '[':\n\t\t\treturn l.errorf(\"table array key cannot contain ']'\")\n\t\tdefault:\n\t\t\tl.next()\n\t\t}\n\t}\n\treturn l.errorf(\"unclosed table array key\")\n}\n\n// Parse the key till \"]\" but only bare keys are supported\nfunc (l *tomlLexer) lexInsideTableKey() tomlLexStateFn {\n\tfor r := l.peek(); r != eof; r = l.peek() {\n\t\tswitch r {\n\t\tcase ']':\n\t\t\tif l.currentTokenStop > l.currentTokenStart {\n\t\t\t\tl.emit(tokenKeyGroup)\n\t\t\t}\n\t\t\tl.next()\n\t\t\tl.emit(tokenRightBracket)\n\t\t\treturn l.lexVoid\n\t\tcase '[':\n\t\t\treturn l.errorf(\"table key cannot contain ']'\")\n\t\tdefault:\n\t\t\tl.next()\n\t\t}\n\t}\n\treturn l.errorf(\"unclosed table key\")\n}\n\nfunc (l *tomlLexer) lexRightBracket() tomlLexStateFn {\n\tl.next()\n\tl.emit(tokenRightBracket)\n\tif len(l.brackets) == 0 || l.brackets[len(l.brackets)-1] != '[' {\n\t\treturn l.errorf(\"cannot have ']' here\")\n\t}\n\tl.brackets = l.brackets[:len(l.brackets)-1]\n\treturn l.lexRvalue\n}\n\ntype validRuneFn func(r rune) bool\n\nfunc isValidHexRune(r rune) bool {\n\treturn r >= 'a' && r <= 'f' ||\n\t\tr >= 'A' && r <= 'F' ||\n\t\tr >= '0' && r <= '9' ||\n\t\tr == '_'\n}\n\nfunc isValidOctalRune(r rune) bool {\n\treturn r >= '0' && r <= '7' || r == '_'\n}\n\nfunc isValidBinaryRune(r rune) bool {\n\treturn r == '0' || r == '1' || r == '_'\n}\n\nfunc (l *tomlLexer) lexNumber() tomlLexStateFn {\n\tr := l.peek()\n\n\tif r == '0' {\n\t\tfollow := l.peekString(2)\n\t\tif len(follow) == 2 {\n\t\t\tvar isValidRune validRuneFn\n\t\t\tswitch follow[1] {\n\t\t\tcase 'x':\n\t\t\t\tisValidRune = isValidHexRune\n\t\t\tcase 'o':\n\t\t\t\tisValidRune = isValidOctalRune\n\t\t\tcase 'b':\n\t\t\t\tisValidRune = isValidBinaryRune\n\t\t\tdefault:\n\t\t\t\tif follow[1] >= 'a' && follow[1] <= 'z' || follow[1] >= 'A' && follow[1] <= 'Z' {\n\t\t\t\t\treturn l.errorf(\"unknown number base: %s. possible options are x (hex) o (octal) b (binary)\", string(follow[1]))\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif isValidRune != nil {\n\t\t\t\tl.next()\n\t\t\t\tl.next()\n\t\t\t\tdigitSeen := false\n\t\t\t\tfor {\n\t\t\t\t\tnext := l.peek()\n\t\t\t\t\tif !isValidRune(next) {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tdigitSeen = true\n\t\t\t\t\tl.next()\n\t\t\t\t}\n\n\t\t\t\tif !digitSeen {\n\t\t\t\t\treturn l.errorf(\"number needs at least one digit\")\n\t\t\t\t}\n\n\t\t\t\tl.emit(tokenInteger)\n\n\t\t\t\treturn l.lexRvalue\n\t\t\t}\n\t\t}\n\t}\n\n\tif r == '+' || r == '-' {\n\t\tl.next()\n\t\tif l.follow(\"inf\") {\n\t\t\treturn l.lexInf\n\t\t}\n\t\tif l.follow(\"nan\") {\n\t\t\treturn l.lexNan\n\t\t}\n\t}\n\n\tpointSeen := false\n\texpSeen := false\n\tdigitSeen := false\n\tfor {\n\t\tnext := l.peek()\n\t\tif next == '.' {\n\t\t\tif pointSeen {\n\t\t\t\treturn l.errorf(\"cannot have two dots in one float\")\n\t\t\t}\n\t\t\tl.next()\n\t\t\tif !isDigit(l.peek()) {\n\t\t\t\treturn l.errorf(\"float cannot end with a dot\")\n\t\t\t}\n\t\t\tpointSeen = true\n\t\t} else if next == 'e' || next == 'E' {\n\t\t\texpSeen = true\n\t\t\tl.next()\n\t\t\tr := l.peek()\n\t\t\tif r == '+' || r == '-' {\n\t\t\t\tl.next()\n\t\t\t}\n\t\t} else if isDigit(next) {\n\t\t\tdigitSeen = true\n\t\t\tl.next()\n\t\t} else if next == '_' {\n\t\t\tl.next()\n\t\t} else {\n\t\t\tbreak\n\t\t}\n\t\tif pointSeen && !digitSeen {\n\t\t\treturn l.errorf(\"cannot start float with a dot\")\n\t\t}\n\t}\n\n\tif !digitSeen {\n\t\treturn l.errorf(\"no digit in that number\")\n\t}\n\tif pointSeen || expSeen {\n\t\tl.emit(tokenFloat)\n\t} else {\n\t\tl.emit(tokenInteger)\n\t}\n\treturn l.lexRvalue\n}\n\nfunc (l *tomlLexer) run() {\n\tfor state := l.lexVoid; state != nil; {\n\t\tstate = state()\n\t}\n}\n\n// Entry point\nfunc lexToml(inputBytes []byte) []token {\n\trunes := bytes.Runes(inputBytes)\n\tl := &tomlLexer{\n\t\tinput:         runes,\n\t\ttokens:        make([]token, 0, 256),\n\t\tline:          1,\n\t\tcol:           1,\n\t\tendbufferLine: 1,\n\t\tendbufferCol:  1,\n\t}\n\tl.run()\n\treturn l.tokens\n}\n"
  },
  {
    "path": "vendor/github.com/pelletier/go-toml/localtime.go",
    "content": "// Implementation of TOML's local date/time.\n//\n// Copied over from Google's civil to avoid pulling all the Google dependencies.\n// Originals:\n//   https://raw.githubusercontent.com/googleapis/google-cloud-go/ed46f5086358513cf8c25f8e3f022cb838a49d66/civil/civil.go\n// Changes:\n//   * Renamed files from civil* to localtime*.\n//   * Package changed from civil to toml.\n//   * 'Local' prefix added to all structs.\n//\n// Copyright 2016 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package civil implements types for civil time, a time-zone-independent\n// representation of time that follows the rules of the proleptic\n// Gregorian calendar with exactly 24-hour days, 60-minute hours, and 60-second\n// minutes.\n//\n// Because they lack location information, these types do not represent unique\n// moments or intervals of time. Use time.Time for that purpose.\npackage toml\n\nimport (\n\t\"fmt\"\n\t\"time\"\n)\n\n// A LocalDate represents a date (year, month, day).\n//\n// This type does not include location information, and therefore does not\n// describe a unique 24-hour timespan.\ntype LocalDate struct {\n\tYear  int        // Year (e.g., 2014).\n\tMonth time.Month // Month of the year (January = 1, ...).\n\tDay   int        // Day of the month, starting at 1.\n}\n\n// LocalDateOf returns the LocalDate in which a time occurs in that time's location.\nfunc LocalDateOf(t time.Time) LocalDate {\n\tvar d LocalDate\n\td.Year, d.Month, d.Day = t.Date()\n\treturn d\n}\n\n// ParseLocalDate parses a string in RFC3339 full-date format and returns the date value it represents.\nfunc ParseLocalDate(s string) (LocalDate, error) {\n\tt, err := time.Parse(\"2006-01-02\", s)\n\tif err != nil {\n\t\treturn LocalDate{}, err\n\t}\n\treturn LocalDateOf(t), nil\n}\n\n// String returns the date in RFC3339 full-date format.\nfunc (d LocalDate) String() string {\n\treturn fmt.Sprintf(\"%04d-%02d-%02d\", d.Year, d.Month, d.Day)\n}\n\n// IsValid reports whether the date is valid.\nfunc (d LocalDate) IsValid() bool {\n\treturn LocalDateOf(d.In(time.UTC)) == d\n}\n\n// In returns the time corresponding to time 00:00:00 of the date in the location.\n//\n// In is always consistent with time.LocalDate, even when time.LocalDate returns a time\n// on a different day. For example, if loc is America/Indiana/Vincennes, then both\n//     time.LocalDate(1955, time.May, 1, 0, 0, 0, 0, loc)\n// and\n//     civil.LocalDate{Year: 1955, Month: time.May, Day: 1}.In(loc)\n// return 23:00:00 on April 30, 1955.\n//\n// In panics if loc is nil.\nfunc (d LocalDate) In(loc *time.Location) time.Time {\n\treturn time.Date(d.Year, d.Month, d.Day, 0, 0, 0, 0, loc)\n}\n\n// AddDays returns the date that is n days in the future.\n// n can also be negative to go into the past.\nfunc (d LocalDate) AddDays(n int) LocalDate {\n\treturn LocalDateOf(d.In(time.UTC).AddDate(0, 0, n))\n}\n\n// DaysSince returns the signed number of days between the date and s, not including the end day.\n// This is the inverse operation to AddDays.\nfunc (d LocalDate) DaysSince(s LocalDate) (days int) {\n\t// We convert to Unix time so we do not have to worry about leap seconds:\n\t// Unix time increases by exactly 86400 seconds per day.\n\tdeltaUnix := d.In(time.UTC).Unix() - s.In(time.UTC).Unix()\n\treturn int(deltaUnix / 86400)\n}\n\n// Before reports whether d1 occurs before d2.\nfunc (d1 LocalDate) Before(d2 LocalDate) bool {\n\tif d1.Year != d2.Year {\n\t\treturn d1.Year < d2.Year\n\t}\n\tif d1.Month != d2.Month {\n\t\treturn d1.Month < d2.Month\n\t}\n\treturn d1.Day < d2.Day\n}\n\n// After reports whether d1 occurs after d2.\nfunc (d1 LocalDate) After(d2 LocalDate) bool {\n\treturn d2.Before(d1)\n}\n\n// MarshalText implements the encoding.TextMarshaler interface.\n// The output is the result of d.String().\nfunc (d LocalDate) MarshalText() ([]byte, error) {\n\treturn []byte(d.String()), nil\n}\n\n// UnmarshalText implements the encoding.TextUnmarshaler interface.\n// The date is expected to be a string in a format accepted by ParseLocalDate.\nfunc (d *LocalDate) UnmarshalText(data []byte) error {\n\tvar err error\n\t*d, err = ParseLocalDate(string(data))\n\treturn err\n}\n\n// A LocalTime represents a time with nanosecond precision.\n//\n// This type does not include location information, and therefore does not\n// describe a unique moment in time.\n//\n// This type exists to represent the TIME type in storage-based APIs like BigQuery.\n// Most operations on Times are unlikely to be meaningful. Prefer the LocalDateTime type.\ntype LocalTime struct {\n\tHour       int // The hour of the day in 24-hour format; range [0-23]\n\tMinute     int // The minute of the hour; range [0-59]\n\tSecond     int // The second of the minute; range [0-59]\n\tNanosecond int // The nanosecond of the second; range [0-999999999]\n}\n\n// LocalTimeOf returns the LocalTime representing the time of day in which a time occurs\n// in that time's location. It ignores the date.\nfunc LocalTimeOf(t time.Time) LocalTime {\n\tvar tm LocalTime\n\ttm.Hour, tm.Minute, tm.Second = t.Clock()\n\ttm.Nanosecond = t.Nanosecond()\n\treturn tm\n}\n\n// ParseLocalTime parses a string and returns the time value it represents.\n// ParseLocalTime accepts an extended form of the RFC3339 partial-time format. After\n// the HH:MM:SS part of the string, an optional fractional part may appear,\n// consisting of a decimal point followed by one to nine decimal digits.\n// (RFC3339 admits only one digit after the decimal point).\nfunc ParseLocalTime(s string) (LocalTime, error) {\n\tt, err := time.Parse(\"15:04:05.999999999\", s)\n\tif err != nil {\n\t\treturn LocalTime{}, err\n\t}\n\treturn LocalTimeOf(t), nil\n}\n\n// String returns the date in the format described in ParseLocalTime. If Nanoseconds\n// is zero, no fractional part will be generated. Otherwise, the result will\n// end with a fractional part consisting of a decimal point and nine digits.\nfunc (t LocalTime) String() string {\n\ts := fmt.Sprintf(\"%02d:%02d:%02d\", t.Hour, t.Minute, t.Second)\n\tif t.Nanosecond == 0 {\n\t\treturn s\n\t}\n\treturn s + fmt.Sprintf(\".%09d\", t.Nanosecond)\n}\n\n// IsValid reports whether the time is valid.\nfunc (t LocalTime) IsValid() bool {\n\t// Construct a non-zero time.\n\ttm := time.Date(2, 2, 2, t.Hour, t.Minute, t.Second, t.Nanosecond, time.UTC)\n\treturn LocalTimeOf(tm) == t\n}\n\n// MarshalText implements the encoding.TextMarshaler interface.\n// The output is the result of t.String().\nfunc (t LocalTime) MarshalText() ([]byte, error) {\n\treturn []byte(t.String()), nil\n}\n\n// UnmarshalText implements the encoding.TextUnmarshaler interface.\n// The time is expected to be a string in a format accepted by ParseLocalTime.\nfunc (t *LocalTime) UnmarshalText(data []byte) error {\n\tvar err error\n\t*t, err = ParseLocalTime(string(data))\n\treturn err\n}\n\n// A LocalDateTime represents a date and time.\n//\n// This type does not include location information, and therefore does not\n// describe a unique moment in time.\ntype LocalDateTime struct {\n\tDate LocalDate\n\tTime LocalTime\n}\n\n// Note: We deliberately do not embed LocalDate into LocalDateTime, to avoid promoting AddDays and Sub.\n\n// LocalDateTimeOf returns the LocalDateTime in which a time occurs in that time's location.\nfunc LocalDateTimeOf(t time.Time) LocalDateTime {\n\treturn LocalDateTime{\n\t\tDate: LocalDateOf(t),\n\t\tTime: LocalTimeOf(t),\n\t}\n}\n\n// ParseLocalDateTime parses a string and returns the LocalDateTime it represents.\n// ParseLocalDateTime accepts a variant of the RFC3339 date-time format that omits\n// the time offset but includes an optional fractional time, as described in\n// ParseLocalTime. Informally, the accepted format is\n//     YYYY-MM-DDTHH:MM:SS[.FFFFFFFFF]\n// where the 'T' may be a lower-case 't'.\nfunc ParseLocalDateTime(s string) (LocalDateTime, error) {\n\tt, err := time.Parse(\"2006-01-02T15:04:05.999999999\", s)\n\tif err != nil {\n\t\tt, err = time.Parse(\"2006-01-02t15:04:05.999999999\", s)\n\t\tif err != nil {\n\t\t\treturn LocalDateTime{}, err\n\t\t}\n\t}\n\treturn LocalDateTimeOf(t), nil\n}\n\n// String returns the date in the format described in ParseLocalDate.\nfunc (dt LocalDateTime) String() string {\n\treturn dt.Date.String() + \"T\" + dt.Time.String()\n}\n\n// IsValid reports whether the datetime is valid.\nfunc (dt LocalDateTime) IsValid() bool {\n\treturn dt.Date.IsValid() && dt.Time.IsValid()\n}\n\n// In returns the time corresponding to the LocalDateTime in the given location.\n//\n// If the time is missing or ambigous at the location, In returns the same\n// result as time.LocalDate. For example, if loc is America/Indiana/Vincennes, then\n// both\n//     time.LocalDate(1955, time.May, 1, 0, 30, 0, 0, loc)\n// and\n//     civil.LocalDateTime{\n//         civil.LocalDate{Year: 1955, Month: time.May, Day: 1}},\n//         civil.LocalTime{Minute: 30}}.In(loc)\n// return 23:30:00 on April 30, 1955.\n//\n// In panics if loc is nil.\nfunc (dt LocalDateTime) In(loc *time.Location) time.Time {\n\treturn time.Date(dt.Date.Year, dt.Date.Month, dt.Date.Day, dt.Time.Hour, dt.Time.Minute, dt.Time.Second, dt.Time.Nanosecond, loc)\n}\n\n// Before reports whether dt1 occurs before dt2.\nfunc (dt1 LocalDateTime) Before(dt2 LocalDateTime) bool {\n\treturn dt1.In(time.UTC).Before(dt2.In(time.UTC))\n}\n\n// After reports whether dt1 occurs after dt2.\nfunc (dt1 LocalDateTime) After(dt2 LocalDateTime) bool {\n\treturn dt2.Before(dt1)\n}\n\n// MarshalText implements the encoding.TextMarshaler interface.\n// The output is the result of dt.String().\nfunc (dt LocalDateTime) MarshalText() ([]byte, error) {\n\treturn []byte(dt.String()), nil\n}\n\n// UnmarshalText implements the encoding.TextUnmarshaler interface.\n// The datetime is expected to be a string in a format accepted by ParseLocalDateTime\nfunc (dt *LocalDateTime) UnmarshalText(data []byte) error {\n\tvar err error\n\t*dt, err = ParseLocalDateTime(string(data))\n\treturn err\n}\n"
  },
  {
    "path": "vendor/github.com/pelletier/go-toml/marshal.go",
    "content": "package toml\n\nimport (\n\t\"bytes\"\n\t\"encoding\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"reflect\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n)\n\nconst (\n\ttagFieldName    = \"toml\"\n\ttagFieldComment = \"comment\"\n\ttagCommented    = \"commented\"\n\ttagMultiline    = \"multiline\"\n\ttagLiteral      = \"literal\"\n\ttagDefault      = \"default\"\n)\n\ntype tomlOpts struct {\n\tname         string\n\tnameFromTag  bool\n\tcomment      string\n\tcommented    bool\n\tmultiline    bool\n\tliteral      bool\n\tinclude      bool\n\tomitempty    bool\n\tdefaultValue string\n}\n\ntype encOpts struct {\n\tquoteMapKeys            bool\n\tarraysOneElementPerLine bool\n}\n\nvar encOptsDefaults = encOpts{\n\tquoteMapKeys: false,\n}\n\ntype annotation struct {\n\ttag          string\n\tcomment      string\n\tcommented    string\n\tmultiline    string\n\tliteral      string\n\tdefaultValue string\n}\n\nvar annotationDefault = annotation{\n\ttag:          tagFieldName,\n\tcomment:      tagFieldComment,\n\tcommented:    tagCommented,\n\tmultiline:    tagMultiline,\n\tliteral:      tagLiteral,\n\tdefaultValue: tagDefault,\n}\n\ntype MarshalOrder int\n\n// Orders the Encoder can write the fields to the output stream.\nconst (\n\t// Sort fields alphabetically.\n\tOrderAlphabetical MarshalOrder = iota + 1\n\t// Preserve the order the fields are encountered. For example, the order of fields in\n\t// a struct.\n\tOrderPreserve\n)\n\nvar timeType = reflect.TypeOf(time.Time{})\nvar marshalerType = reflect.TypeOf(new(Marshaler)).Elem()\nvar unmarshalerType = reflect.TypeOf(new(Unmarshaler)).Elem()\nvar textMarshalerType = reflect.TypeOf(new(encoding.TextMarshaler)).Elem()\nvar textUnmarshalerType = reflect.TypeOf(new(encoding.TextUnmarshaler)).Elem()\nvar localDateType = reflect.TypeOf(LocalDate{})\nvar localTimeType = reflect.TypeOf(LocalTime{})\nvar localDateTimeType = reflect.TypeOf(LocalDateTime{})\nvar mapStringInterfaceType = reflect.TypeOf(map[string]interface{}{})\n\n// Check if the given marshal type maps to a Tree primitive\nfunc isPrimitive(mtype reflect.Type) bool {\n\tswitch mtype.Kind() {\n\tcase reflect.Ptr:\n\t\treturn isPrimitive(mtype.Elem())\n\tcase reflect.Bool:\n\t\treturn true\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\treturn true\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:\n\t\treturn true\n\tcase reflect.Float32, reflect.Float64:\n\t\treturn true\n\tcase reflect.String:\n\t\treturn true\n\tcase reflect.Struct:\n\t\treturn isTimeType(mtype)\n\tdefault:\n\t\treturn false\n\t}\n}\n\nfunc isTimeType(mtype reflect.Type) bool {\n\treturn mtype == timeType || mtype == localDateType || mtype == localDateTimeType || mtype == localTimeType\n}\n\n// Check if the given marshal type maps to a Tree slice or array\nfunc isTreeSequence(mtype reflect.Type) bool {\n\tswitch mtype.Kind() {\n\tcase reflect.Ptr:\n\t\treturn isTreeSequence(mtype.Elem())\n\tcase reflect.Slice, reflect.Array:\n\t\treturn isTree(mtype.Elem())\n\tdefault:\n\t\treturn false\n\t}\n}\n\n// Check if the given marshal type maps to a slice or array of a custom marshaler type\nfunc isCustomMarshalerSequence(mtype reflect.Type) bool {\n\tswitch mtype.Kind() {\n\tcase reflect.Ptr:\n\t\treturn isCustomMarshalerSequence(mtype.Elem())\n\tcase reflect.Slice, reflect.Array:\n\t\treturn isCustomMarshaler(mtype.Elem()) || isCustomMarshaler(reflect.New(mtype.Elem()).Type())\n\tdefault:\n\t\treturn false\n\t}\n}\n\n// Check if the given marshal type maps to a slice or array of a text marshaler type\nfunc isTextMarshalerSequence(mtype reflect.Type) bool {\n\tswitch mtype.Kind() {\n\tcase reflect.Ptr:\n\t\treturn isTextMarshalerSequence(mtype.Elem())\n\tcase reflect.Slice, reflect.Array:\n\t\treturn isTextMarshaler(mtype.Elem()) || isTextMarshaler(reflect.New(mtype.Elem()).Type())\n\tdefault:\n\t\treturn false\n\t}\n}\n\n// Check if the given marshal type maps to a non-Tree slice or array\nfunc isOtherSequence(mtype reflect.Type) bool {\n\tswitch mtype.Kind() {\n\tcase reflect.Ptr:\n\t\treturn isOtherSequence(mtype.Elem())\n\tcase reflect.Slice, reflect.Array:\n\t\treturn !isTreeSequence(mtype)\n\tdefault:\n\t\treturn false\n\t}\n}\n\n// Check if the given marshal type maps to a Tree\nfunc isTree(mtype reflect.Type) bool {\n\tswitch mtype.Kind() {\n\tcase reflect.Ptr:\n\t\treturn isTree(mtype.Elem())\n\tcase reflect.Map:\n\t\treturn true\n\tcase reflect.Struct:\n\t\treturn !isPrimitive(mtype)\n\tdefault:\n\t\treturn false\n\t}\n}\n\nfunc isCustomMarshaler(mtype reflect.Type) bool {\n\treturn mtype.Implements(marshalerType)\n}\n\nfunc callCustomMarshaler(mval reflect.Value) ([]byte, error) {\n\treturn mval.Interface().(Marshaler).MarshalTOML()\n}\n\nfunc isTextMarshaler(mtype reflect.Type) bool {\n\treturn mtype.Implements(textMarshalerType) && !isTimeType(mtype)\n}\n\nfunc callTextMarshaler(mval reflect.Value) ([]byte, error) {\n\treturn mval.Interface().(encoding.TextMarshaler).MarshalText()\n}\n\nfunc isCustomUnmarshaler(mtype reflect.Type) bool {\n\treturn mtype.Implements(unmarshalerType)\n}\n\nfunc callCustomUnmarshaler(mval reflect.Value, tval interface{}) error {\n\treturn mval.Interface().(Unmarshaler).UnmarshalTOML(tval)\n}\n\nfunc isTextUnmarshaler(mtype reflect.Type) bool {\n\treturn mtype.Implements(textUnmarshalerType)\n}\n\nfunc callTextUnmarshaler(mval reflect.Value, text []byte) error {\n\treturn mval.Interface().(encoding.TextUnmarshaler).UnmarshalText(text)\n}\n\n// Marshaler is the interface implemented by types that\n// can marshal themselves into valid TOML.\ntype Marshaler interface {\n\tMarshalTOML() ([]byte, error)\n}\n\n// Unmarshaler is the interface implemented by types that\n// can unmarshal a TOML description of themselves.\ntype Unmarshaler interface {\n\tUnmarshalTOML(interface{}) error\n}\n\n/*\nMarshal returns the TOML encoding of v.  Behavior is similar to the Go json\nencoder, except that there is no concept of a Marshaler interface or MarshalTOML\nfunction for sub-structs, and currently only definite types can be marshaled\n(i.e. no `interface{}`).\n\nThe following struct annotations are supported:\n\n  toml:\"Field\"      Overrides the field's name to output.\n  omitempty         When set, empty values and groups are not emitted.\n  comment:\"comment\" Emits a # comment on the same line. This supports new lines.\n  commented:\"true\"  Emits the value as commented.\n\nNote that pointers are automatically assigned the \"omitempty\" option, as TOML\nexplicitly does not handle null values (saying instead the label should be\ndropped).\n\nTree structural types and corresponding marshal types:\n\n  *Tree                            (*)struct, (*)map[string]interface{}\n  []*Tree                          (*)[](*)struct, (*)[](*)map[string]interface{}\n  []interface{} (as interface{})   (*)[]primitive, (*)[]([]interface{})\n  interface{}                      (*)primitive\n\nTree primitive types and corresponding marshal types:\n\n  uint64     uint, uint8-uint64, pointers to same\n  int64      int, int8-uint64, pointers to same\n  float64    float32, float64, pointers to same\n  string     string, pointers to same\n  bool       bool, pointers to same\n  time.LocalTime  time.LocalTime{}, pointers to same\n\nFor additional flexibility, use the Encoder API.\n*/\nfunc Marshal(v interface{}) ([]byte, error) {\n\treturn NewEncoder(nil).marshal(v)\n}\n\n// Encoder writes TOML values to an output stream.\ntype Encoder struct {\n\tw io.Writer\n\tencOpts\n\tannotation\n\tline            int\n\tcol             int\n\torder           MarshalOrder\n\tpromoteAnon     bool\n\tcompactComments bool\n\tindentation     string\n}\n\n// NewEncoder returns a new encoder that writes to w.\nfunc NewEncoder(w io.Writer) *Encoder {\n\treturn &Encoder{\n\t\tw:           w,\n\t\tencOpts:     encOptsDefaults,\n\t\tannotation:  annotationDefault,\n\t\tline:        0,\n\t\tcol:         1,\n\t\torder:       OrderAlphabetical,\n\t\tindentation: \"  \",\n\t}\n}\n\n// Encode writes the TOML encoding of v to the stream.\n//\n// See the documentation for Marshal for details.\nfunc (e *Encoder) Encode(v interface{}) error {\n\tb, err := e.marshal(v)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif _, err := e.w.Write(b); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// QuoteMapKeys sets up the encoder to encode\n// maps with string type keys with quoted TOML keys.\n//\n// This relieves the character limitations on map keys.\nfunc (e *Encoder) QuoteMapKeys(v bool) *Encoder {\n\te.quoteMapKeys = v\n\treturn e\n}\n\n// ArraysWithOneElementPerLine sets up the encoder to encode arrays\n// with more than one element on multiple lines instead of one.\n//\n// For example:\n//\n//   A = [1,2,3]\n//\n// Becomes\n//\n//   A = [\n//     1,\n//     2,\n//     3,\n//   ]\nfunc (e *Encoder) ArraysWithOneElementPerLine(v bool) *Encoder {\n\te.arraysOneElementPerLine = v\n\treturn e\n}\n\n// Order allows to change in which order fields will be written to the output stream.\nfunc (e *Encoder) Order(ord MarshalOrder) *Encoder {\n\te.order = ord\n\treturn e\n}\n\n// Indentation allows to change indentation when marshalling.\nfunc (e *Encoder) Indentation(indent string) *Encoder {\n\te.indentation = indent\n\treturn e\n}\n\n// SetTagName allows changing default tag \"toml\"\nfunc (e *Encoder) SetTagName(v string) *Encoder {\n\te.tag = v\n\treturn e\n}\n\n// SetTagComment allows changing default tag \"comment\"\nfunc (e *Encoder) SetTagComment(v string) *Encoder {\n\te.comment = v\n\treturn e\n}\n\n// SetTagCommented allows changing default tag \"commented\"\nfunc (e *Encoder) SetTagCommented(v string) *Encoder {\n\te.commented = v\n\treturn e\n}\n\n// SetTagMultiline allows changing default tag \"multiline\"\nfunc (e *Encoder) SetTagMultiline(v string) *Encoder {\n\te.multiline = v\n\treturn e\n}\n\n// PromoteAnonymous allows to change how anonymous struct fields are marshaled.\n// Usually, they are marshaled as if the inner exported fields were fields in\n// the outer struct. However, if an anonymous struct field is given a name in\n// its TOML tag, it is treated like a regular struct field with that name.\n// rather than being anonymous.\n//\n// In case anonymous promotion is enabled, all anonymous structs are promoted\n// and treated like regular struct fields.\nfunc (e *Encoder) PromoteAnonymous(promote bool) *Encoder {\n\te.promoteAnon = promote\n\treturn e\n}\n\n// CompactComments removes the new line before each comment in the tree.\nfunc (e *Encoder) CompactComments(cc bool) *Encoder {\n\te.compactComments = cc\n\treturn e\n}\n\nfunc (e *Encoder) marshal(v interface{}) ([]byte, error) {\n\t// Check if indentation is valid\n\tfor _, char := range e.indentation {\n\t\tif !isSpace(char) {\n\t\t\treturn []byte{}, fmt.Errorf(\"invalid indentation: must only contains space or tab characters\")\n\t\t}\n\t}\n\n\tmtype := reflect.TypeOf(v)\n\tif mtype == nil {\n\t\treturn []byte{}, errors.New(\"nil cannot be marshaled to TOML\")\n\t}\n\n\tswitch mtype.Kind() {\n\tcase reflect.Struct, reflect.Map:\n\tcase reflect.Ptr:\n\t\tif mtype.Elem().Kind() != reflect.Struct {\n\t\t\treturn []byte{}, errors.New(\"Only pointer to struct can be marshaled to TOML\")\n\t\t}\n\t\tif reflect.ValueOf(v).IsNil() {\n\t\t\treturn []byte{}, errors.New(\"nil pointer cannot be marshaled to TOML\")\n\t\t}\n\tdefault:\n\t\treturn []byte{}, errors.New(\"Only a struct or map can be marshaled to TOML\")\n\t}\n\n\tsval := reflect.ValueOf(v)\n\tif isCustomMarshaler(mtype) {\n\t\treturn callCustomMarshaler(sval)\n\t}\n\tif isTextMarshaler(mtype) {\n\t\treturn callTextMarshaler(sval)\n\t}\n\tt, err := e.valueToTree(mtype, sval)\n\tif err != nil {\n\t\treturn []byte{}, err\n\t}\n\n\tvar buf bytes.Buffer\n\t_, err = t.writeToOrdered(&buf, \"\", \"\", 0, e.arraysOneElementPerLine, e.order, e.indentation, e.compactComments, false)\n\n\treturn buf.Bytes(), err\n}\n\n// Create next tree with a position based on Encoder.line\nfunc (e *Encoder) nextTree() *Tree {\n\treturn newTreeWithPosition(Position{Line: e.line, Col: 1})\n}\n\n// Convert given marshal struct or map value to toml tree\nfunc (e *Encoder) valueToTree(mtype reflect.Type, mval reflect.Value) (*Tree, error) {\n\tif mtype.Kind() == reflect.Ptr {\n\t\treturn e.valueToTree(mtype.Elem(), mval.Elem())\n\t}\n\ttval := e.nextTree()\n\tswitch mtype.Kind() {\n\tcase reflect.Struct:\n\t\tswitch mval.Interface().(type) {\n\t\tcase Tree:\n\t\t\treflect.ValueOf(tval).Elem().Set(mval)\n\t\tdefault:\n\t\t\tfor i := 0; i < mtype.NumField(); i++ {\n\t\t\t\tmtypef, mvalf := mtype.Field(i), mval.Field(i)\n\t\t\t\topts := tomlOptions(mtypef, e.annotation)\n\t\t\t\tif opts.include && ((mtypef.Type.Kind() != reflect.Interface && !opts.omitempty) || !isZero(mvalf)) {\n\t\t\t\t\tval, err := e.valueToToml(mtypef.Type, mvalf)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn nil, err\n\t\t\t\t\t}\n\t\t\t\t\tif tree, ok := val.(*Tree); ok && mtypef.Anonymous && !opts.nameFromTag && !e.promoteAnon {\n\t\t\t\t\t\te.appendTree(tval, tree)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tval = e.wrapTomlValue(val, tval)\n\t\t\t\t\t\ttval.SetPathWithOptions([]string{opts.name}, SetOptions{\n\t\t\t\t\t\t\tComment:   opts.comment,\n\t\t\t\t\t\t\tCommented: opts.commented,\n\t\t\t\t\t\t\tMultiline: opts.multiline,\n\t\t\t\t\t\t\tLiteral:   opts.literal,\n\t\t\t\t\t\t}, val)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\tcase reflect.Map:\n\t\tkeys := mval.MapKeys()\n\t\tif e.order == OrderPreserve && len(keys) > 0 {\n\t\t\t// Sorting []reflect.Value is not straight forward.\n\t\t\t//\n\t\t\t// OrderPreserve will support deterministic results when string is used\n\t\t\t// as the key to maps.\n\t\t\ttyp := keys[0].Type()\n\t\t\tkind := keys[0].Kind()\n\t\t\tif kind == reflect.String {\n\t\t\t\tikeys := make([]string, len(keys))\n\t\t\t\tfor i := range keys {\n\t\t\t\t\tikeys[i] = keys[i].Interface().(string)\n\t\t\t\t}\n\t\t\t\tsort.Strings(ikeys)\n\t\t\t\tfor i := range ikeys {\n\t\t\t\t\tkeys[i] = reflect.ValueOf(ikeys[i]).Convert(typ)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfor _, key := range keys {\n\t\t\tmvalf := mval.MapIndex(key)\n\t\t\tif (mtype.Elem().Kind() == reflect.Ptr || mtype.Elem().Kind() == reflect.Interface) && mvalf.IsNil() {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tval, err := e.valueToToml(mtype.Elem(), mvalf)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tval = e.wrapTomlValue(val, tval)\n\t\t\tif e.quoteMapKeys {\n\t\t\t\tkeyStr, err := tomlValueStringRepresentation(key.String(), \"\", \"\", e.order, e.arraysOneElementPerLine)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\ttval.SetPath([]string{keyStr}, val)\n\t\t\t} else {\n\t\t\t\ttval.SetPath([]string{key.String()}, val)\n\t\t\t}\n\t\t}\n\t}\n\treturn tval, nil\n}\n\n// Convert given marshal slice to slice of Toml trees\nfunc (e *Encoder) valueToTreeSlice(mtype reflect.Type, mval reflect.Value) ([]*Tree, error) {\n\ttval := make([]*Tree, mval.Len(), mval.Len())\n\tfor i := 0; i < mval.Len(); i++ {\n\t\tval, err := e.valueToTree(mtype.Elem(), mval.Index(i))\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\ttval[i] = val\n\t}\n\treturn tval, nil\n}\n\n// Convert given marshal slice to slice of toml values\nfunc (e *Encoder) valueToOtherSlice(mtype reflect.Type, mval reflect.Value) (interface{}, error) {\n\ttval := make([]interface{}, mval.Len(), mval.Len())\n\tfor i := 0; i < mval.Len(); i++ {\n\t\tval, err := e.valueToToml(mtype.Elem(), mval.Index(i))\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\ttval[i] = val\n\t}\n\treturn tval, nil\n}\n\n// Convert given marshal value to toml value\nfunc (e *Encoder) valueToToml(mtype reflect.Type, mval reflect.Value) (interface{}, error) {\n\tif mtype.Kind() == reflect.Ptr {\n\t\tswitch {\n\t\tcase isCustomMarshaler(mtype):\n\t\t\treturn callCustomMarshaler(mval)\n\t\tcase isTextMarshaler(mtype):\n\t\t\tb, err := callTextMarshaler(mval)\n\t\t\treturn string(b), err\n\t\tdefault:\n\t\t\treturn e.valueToToml(mtype.Elem(), mval.Elem())\n\t\t}\n\t}\n\tif mtype.Kind() == reflect.Interface {\n\t\treturn e.valueToToml(mval.Elem().Type(), mval.Elem())\n\t}\n\tswitch {\n\tcase isCustomMarshaler(mtype):\n\t\treturn callCustomMarshaler(mval)\n\tcase isTextMarshaler(mtype):\n\t\tb, err := callTextMarshaler(mval)\n\t\treturn string(b), err\n\tcase isTree(mtype):\n\t\treturn e.valueToTree(mtype, mval)\n\tcase isOtherSequence(mtype), isCustomMarshalerSequence(mtype), isTextMarshalerSequence(mtype):\n\t\treturn e.valueToOtherSlice(mtype, mval)\n\tcase isTreeSequence(mtype):\n\t\treturn e.valueToTreeSlice(mtype, mval)\n\tdefault:\n\t\tswitch mtype.Kind() {\n\t\tcase reflect.Bool:\n\t\t\treturn mval.Bool(), nil\n\t\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\t\tif mtype.Kind() == reflect.Int64 && mtype == reflect.TypeOf(time.Duration(1)) {\n\t\t\t\treturn fmt.Sprint(mval), nil\n\t\t\t}\n\t\t\treturn mval.Int(), nil\n\t\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:\n\t\t\treturn mval.Uint(), nil\n\t\tcase reflect.Float32, reflect.Float64:\n\t\t\treturn mval.Float(), nil\n\t\tcase reflect.String:\n\t\t\treturn mval.String(), nil\n\t\tcase reflect.Struct:\n\t\t\treturn mval.Interface(), nil\n\t\tdefault:\n\t\t\treturn nil, fmt.Errorf(\"Marshal can't handle %v(%v)\", mtype, mtype.Kind())\n\t\t}\n\t}\n}\n\nfunc (e *Encoder) appendTree(t, o *Tree) error {\n\tfor key, value := range o.values {\n\t\tif _, ok := t.values[key]; ok {\n\t\t\tcontinue\n\t\t}\n\t\tif tomlValue, ok := value.(*tomlValue); ok {\n\t\t\ttomlValue.position.Col = t.position.Col\n\t\t}\n\t\tt.values[key] = value\n\t}\n\treturn nil\n}\n\n// Create a toml value with the current line number as the position line\nfunc (e *Encoder) wrapTomlValue(val interface{}, parent *Tree) interface{} {\n\t_, isTree := val.(*Tree)\n\t_, isTreeS := val.([]*Tree)\n\tif isTree || isTreeS {\n\t\te.line++\n\t\treturn val\n\t}\n\n\tret := &tomlValue{\n\t\tvalue: val,\n\t\tposition: Position{\n\t\t\te.line,\n\t\t\tparent.position.Col,\n\t\t},\n\t}\n\te.line++\n\treturn ret\n}\n\n// Unmarshal attempts to unmarshal the Tree into a Go struct pointed by v.\n// Neither Unmarshaler interfaces nor UnmarshalTOML functions are supported for\n// sub-structs, and only definite types can be unmarshaled.\nfunc (t *Tree) Unmarshal(v interface{}) error {\n\td := Decoder{tval: t, tagName: tagFieldName}\n\treturn d.unmarshal(v)\n}\n\n// Marshal returns the TOML encoding of Tree.\n// See Marshal() documentation for types mapping table.\nfunc (t *Tree) Marshal() ([]byte, error) {\n\tvar buf bytes.Buffer\n\t_, err := t.WriteTo(&buf)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn buf.Bytes(), nil\n}\n\n// Unmarshal parses the TOML-encoded data and stores the result in the value\n// pointed to by v. Behavior is similar to the Go json encoder, except that there\n// is no concept of an Unmarshaler interface or UnmarshalTOML function for\n// sub-structs, and currently only definite types can be unmarshaled to (i.e. no\n// `interface{}`).\n//\n// The following struct annotations are supported:\n//\n//   toml:\"Field\" Overrides the field's name to map to.\n//   default:\"foo\" Provides a default value.\n//\n// For default values, only fields of the following types are supported:\n//   * string\n//   * bool\n//   * int\n//   * int64\n//   * float64\n//\n// See Marshal() documentation for types mapping table.\nfunc Unmarshal(data []byte, v interface{}) error {\n\tt, err := LoadReader(bytes.NewReader(data))\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn t.Unmarshal(v)\n}\n\n// Decoder reads and decodes TOML values from an input stream.\ntype Decoder struct {\n\tr    io.Reader\n\ttval *Tree\n\tencOpts\n\ttagName string\n\tstrict  bool\n\tvisitor visitorState\n}\n\n// NewDecoder returns a new decoder that reads from r.\nfunc NewDecoder(r io.Reader) *Decoder {\n\treturn &Decoder{\n\t\tr:       r,\n\t\tencOpts: encOptsDefaults,\n\t\ttagName: tagFieldName,\n\t}\n}\n\n// Decode reads a TOML-encoded value from it's input\n// and unmarshals it in the value pointed at by v.\n//\n// See the documentation for Marshal for details.\nfunc (d *Decoder) Decode(v interface{}) error {\n\tvar err error\n\td.tval, err = LoadReader(d.r)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn d.unmarshal(v)\n}\n\n// SetTagName allows changing default tag \"toml\"\nfunc (d *Decoder) SetTagName(v string) *Decoder {\n\td.tagName = v\n\treturn d\n}\n\n// Strict allows changing to strict decoding. Any fields that are found in the\n// input data and do not have a corresponding struct member cause an error.\nfunc (d *Decoder) Strict(strict bool) *Decoder {\n\td.strict = strict\n\treturn d\n}\n\nfunc (d *Decoder) unmarshal(v interface{}) error {\n\tmtype := reflect.TypeOf(v)\n\tif mtype == nil {\n\t\treturn errors.New(\"nil cannot be unmarshaled from TOML\")\n\t}\n\tif mtype.Kind() != reflect.Ptr {\n\t\treturn errors.New(\"only a pointer to struct or map can be unmarshaled from TOML\")\n\t}\n\n\telem := mtype.Elem()\n\n\tswitch elem.Kind() {\n\tcase reflect.Struct, reflect.Map:\n\tcase reflect.Interface:\n\t\telem = mapStringInterfaceType\n\tdefault:\n\t\treturn errors.New(\"only a pointer to struct or map can be unmarshaled from TOML\")\n\t}\n\n\tif reflect.ValueOf(v).IsNil() {\n\t\treturn errors.New(\"nil pointer cannot be unmarshaled from TOML\")\n\t}\n\n\tvv := reflect.ValueOf(v).Elem()\n\n\tif d.strict {\n\t\td.visitor = newVisitorState(d.tval)\n\t}\n\n\tsval, err := d.valueFromTree(elem, d.tval, &vv)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif err := d.visitor.validate(); err != nil {\n\t\treturn err\n\t}\n\treflect.ValueOf(v).Elem().Set(sval)\n\treturn nil\n}\n\n// Convert toml tree to marshal struct or map, using marshal type. When mval1\n// is non-nil, merge fields into the given value instead of allocating a new one.\nfunc (d *Decoder) valueFromTree(mtype reflect.Type, tval *Tree, mval1 *reflect.Value) (reflect.Value, error) {\n\tif mtype.Kind() == reflect.Ptr {\n\t\treturn d.unwrapPointer(mtype, tval, mval1)\n\t}\n\n\t// Check if pointer to value implements the Unmarshaler interface.\n\tif mvalPtr := reflect.New(mtype); isCustomUnmarshaler(mvalPtr.Type()) {\n\t\td.visitor.visitAll()\n\n\t\tif tval == nil {\n\t\t\treturn mvalPtr.Elem(), nil\n\t\t}\n\n\t\tif err := callCustomUnmarshaler(mvalPtr, tval.ToMap()); err != nil {\n\t\t\treturn reflect.ValueOf(nil), fmt.Errorf(\"unmarshal toml: %v\", err)\n\t\t}\n\t\treturn mvalPtr.Elem(), nil\n\t}\n\n\tvar mval reflect.Value\n\tswitch mtype.Kind() {\n\tcase reflect.Struct:\n\t\tif mval1 != nil {\n\t\t\tmval = *mval1\n\t\t} else {\n\t\t\tmval = reflect.New(mtype).Elem()\n\t\t}\n\n\t\tswitch mval.Interface().(type) {\n\t\tcase Tree:\n\t\t\tmval.Set(reflect.ValueOf(tval).Elem())\n\t\tdefault:\n\t\t\tfor i := 0; i < mtype.NumField(); i++ {\n\t\t\t\tmtypef := mtype.Field(i)\n\t\t\t\tan := annotation{tag: d.tagName}\n\t\t\t\topts := tomlOptions(mtypef, an)\n\t\t\t\tif !opts.include {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tbaseKey := opts.name\n\t\t\t\tkeysToTry := []string{\n\t\t\t\t\tbaseKey,\n\t\t\t\t\tstrings.ToLower(baseKey),\n\t\t\t\t\tstrings.ToTitle(baseKey),\n\t\t\t\t\tstrings.ToLower(string(baseKey[0])) + baseKey[1:],\n\t\t\t\t}\n\n\t\t\t\tfound := false\n\t\t\t\tif tval != nil {\n\t\t\t\t\tfor _, key := range keysToTry {\n\t\t\t\t\t\texists := tval.HasPath([]string{key})\n\t\t\t\t\t\tif !exists {\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\td.visitor.push(key)\n\t\t\t\t\t\tval := tval.GetPath([]string{key})\n\t\t\t\t\t\tfval := mval.Field(i)\n\t\t\t\t\t\tmvalf, err := d.valueFromToml(mtypef.Type, val, &fval)\n\t\t\t\t\t\tif err != nil {\n\t\t\t\t\t\t\treturn mval, formatError(err, tval.GetPositionPath([]string{key}))\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmval.Field(i).Set(mvalf)\n\t\t\t\t\t\tfound = true\n\t\t\t\t\t\td.visitor.pop()\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif !found && opts.defaultValue != \"\" {\n\t\t\t\t\tmvalf := mval.Field(i)\n\t\t\t\t\tvar val interface{}\n\t\t\t\t\tvar err error\n\t\t\t\t\tswitch mvalf.Kind() {\n\t\t\t\t\tcase reflect.String:\n\t\t\t\t\t\tval = opts.defaultValue\n\t\t\t\t\tcase reflect.Bool:\n\t\t\t\t\t\tval, err = strconv.ParseBool(opts.defaultValue)\n\t\t\t\t\tcase reflect.Uint:\n\t\t\t\t\t\tval, err = strconv.ParseUint(opts.defaultValue, 10, 0)\n\t\t\t\t\tcase reflect.Uint8:\n\t\t\t\t\t\tval, err = strconv.ParseUint(opts.defaultValue, 10, 8)\n\t\t\t\t\tcase reflect.Uint16:\n\t\t\t\t\t\tval, err = strconv.ParseUint(opts.defaultValue, 10, 16)\n\t\t\t\t\tcase reflect.Uint32:\n\t\t\t\t\t\tval, err = strconv.ParseUint(opts.defaultValue, 10, 32)\n\t\t\t\t\tcase reflect.Uint64:\n\t\t\t\t\t\tval, err = strconv.ParseUint(opts.defaultValue, 10, 64)\n\t\t\t\t\tcase reflect.Int:\n\t\t\t\t\t\tval, err = strconv.ParseInt(opts.defaultValue, 10, 0)\n\t\t\t\t\tcase reflect.Int8:\n\t\t\t\t\t\tval, err = strconv.ParseInt(opts.defaultValue, 10, 8)\n\t\t\t\t\tcase reflect.Int16:\n\t\t\t\t\t\tval, err = strconv.ParseInt(opts.defaultValue, 10, 16)\n\t\t\t\t\tcase reflect.Int32:\n\t\t\t\t\t\tval, err = strconv.ParseInt(opts.defaultValue, 10, 32)\n\t\t\t\t\tcase reflect.Int64:\n\t\t\t\t\t\t// Check if the provided number has a non-numeric extension.\n\t\t\t\t\t\tvar hasExtension bool\n\t\t\t\t\t\tif len(opts.defaultValue) > 0 {\n\t\t\t\t\t\t\tlastChar := opts.defaultValue[len(opts.defaultValue)-1]\n\t\t\t\t\t\t\tif lastChar < '0' || lastChar > '9' {\n\t\t\t\t\t\t\t\thasExtension = true\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// If the value is a time.Duration with extension, parse as duration.\n\t\t\t\t\t\t// If the value is an int64 or a time.Duration without extension, parse as number.\n\t\t\t\t\t\tif hasExtension && mvalf.Type().String() == \"time.Duration\" {\n\t\t\t\t\t\t\tval, err = time.ParseDuration(opts.defaultValue)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tval, err = strconv.ParseInt(opts.defaultValue, 10, 64)\n\t\t\t\t\t\t}\n\t\t\t\t\tcase reflect.Float32:\n\t\t\t\t\t\tval, err = strconv.ParseFloat(opts.defaultValue, 32)\n\t\t\t\t\tcase reflect.Float64:\n\t\t\t\t\t\tval, err = strconv.ParseFloat(opts.defaultValue, 64)\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn mvalf, fmt.Errorf(\"unsupported field type for default option\")\n\t\t\t\t\t}\n\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn mvalf, err\n\t\t\t\t\t}\n\t\t\t\t\tmvalf.Set(reflect.ValueOf(val).Convert(mvalf.Type()))\n\t\t\t\t}\n\n\t\t\t\t// save the old behavior above and try to check structs\n\t\t\t\tif !found && opts.defaultValue == \"\" && mtypef.Type.Kind() == reflect.Struct {\n\t\t\t\t\ttmpTval := tval\n\t\t\t\t\tif !mtypef.Anonymous {\n\t\t\t\t\t\ttmpTval = nil\n\t\t\t\t\t}\n\t\t\t\t\tfval := mval.Field(i)\n\t\t\t\t\tv, err := d.valueFromTree(mtypef.Type, tmpTval, &fval)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn v, err\n\t\t\t\t\t}\n\t\t\t\t\tmval.Field(i).Set(v)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\tcase reflect.Map:\n\t\tmval = reflect.MakeMap(mtype)\n\t\tfor _, key := range tval.Keys() {\n\t\t\td.visitor.push(key)\n\t\t\t// TODO: path splits key\n\t\t\tval := tval.GetPath([]string{key})\n\t\t\tmvalf, err := d.valueFromToml(mtype.Elem(), val, nil)\n\t\t\tif err != nil {\n\t\t\t\treturn mval, formatError(err, tval.GetPositionPath([]string{key}))\n\t\t\t}\n\t\t\tmval.SetMapIndex(reflect.ValueOf(key).Convert(mtype.Key()), mvalf)\n\t\t\td.visitor.pop()\n\t\t}\n\t}\n\treturn mval, nil\n}\n\n// Convert toml value to marshal struct/map slice, using marshal type\nfunc (d *Decoder) valueFromTreeSlice(mtype reflect.Type, tval []*Tree) (reflect.Value, error) {\n\tmval, err := makeSliceOrArray(mtype, len(tval))\n\tif err != nil {\n\t\treturn mval, err\n\t}\n\n\tfor i := 0; i < len(tval); i++ {\n\t\td.visitor.push(strconv.Itoa(i))\n\t\tval, err := d.valueFromTree(mtype.Elem(), tval[i], nil)\n\t\tif err != nil {\n\t\t\treturn mval, err\n\t\t}\n\t\tmval.Index(i).Set(val)\n\t\td.visitor.pop()\n\t}\n\treturn mval, nil\n}\n\n// Convert toml value to marshal primitive slice, using marshal type\nfunc (d *Decoder) valueFromOtherSlice(mtype reflect.Type, tval []interface{}) (reflect.Value, error) {\n\tmval, err := makeSliceOrArray(mtype, len(tval))\n\tif err != nil {\n\t\treturn mval, err\n\t}\n\n\tfor i := 0; i < len(tval); i++ {\n\t\tval, err := d.valueFromToml(mtype.Elem(), tval[i], nil)\n\t\tif err != nil {\n\t\t\treturn mval, err\n\t\t}\n\t\tmval.Index(i).Set(val)\n\t}\n\treturn mval, nil\n}\n\n// Convert toml value to marshal primitive slice, using marshal type\nfunc (d *Decoder) valueFromOtherSliceI(mtype reflect.Type, tval interface{}) (reflect.Value, error) {\n\tval := reflect.ValueOf(tval)\n\tlength := val.Len()\n\n\tmval, err := makeSliceOrArray(mtype, length)\n\tif err != nil {\n\t\treturn mval, err\n\t}\n\n\tfor i := 0; i < length; i++ {\n\t\tval, err := d.valueFromToml(mtype.Elem(), val.Index(i).Interface(), nil)\n\t\tif err != nil {\n\t\t\treturn mval, err\n\t\t}\n\t\tmval.Index(i).Set(val)\n\t}\n\treturn mval, nil\n}\n\n// Create a new slice or a new array with specified length\nfunc makeSliceOrArray(mtype reflect.Type, tLength int) (reflect.Value, error) {\n\tvar mval reflect.Value\n\tswitch mtype.Kind() {\n\tcase reflect.Slice:\n\t\tmval = reflect.MakeSlice(mtype, tLength, tLength)\n\tcase reflect.Array:\n\t\tmval = reflect.New(reflect.ArrayOf(mtype.Len(), mtype.Elem())).Elem()\n\t\tif tLength > mtype.Len() {\n\t\t\treturn mval, fmt.Errorf(\"unmarshal: TOML array length (%v) exceeds destination array length (%v)\", tLength, mtype.Len())\n\t\t}\n\t}\n\treturn mval, nil\n}\n\n// Convert toml value to marshal value, using marshal type. When mval1 is non-nil\n// and the given type is a struct value, merge fields into it.\nfunc (d *Decoder) valueFromToml(mtype reflect.Type, tval interface{}, mval1 *reflect.Value) (reflect.Value, error) {\n\tif mtype.Kind() == reflect.Ptr {\n\t\treturn d.unwrapPointer(mtype, tval, mval1)\n\t}\n\n\tswitch t := tval.(type) {\n\tcase *Tree:\n\t\tvar mval11 *reflect.Value\n\t\tif mtype.Kind() == reflect.Struct {\n\t\t\tmval11 = mval1\n\t\t}\n\n\t\tif isTree(mtype) {\n\t\t\treturn d.valueFromTree(mtype, t, mval11)\n\t\t}\n\n\t\tif mtype.Kind() == reflect.Interface {\n\t\t\tif mval1 == nil || mval1.IsNil() {\n\t\t\t\treturn d.valueFromTree(reflect.TypeOf(map[string]interface{}{}), t, nil)\n\t\t\t} else {\n\t\t\t\treturn d.valueFromToml(mval1.Elem().Type(), t, nil)\n\t\t\t}\n\t\t}\n\n\t\treturn reflect.ValueOf(nil), fmt.Errorf(\"Can't convert %v(%T) to a tree\", tval, tval)\n\tcase []*Tree:\n\t\tif isTreeSequence(mtype) {\n\t\t\treturn d.valueFromTreeSlice(mtype, t)\n\t\t}\n\t\tif mtype.Kind() == reflect.Interface {\n\t\t\tif mval1 == nil || mval1.IsNil() {\n\t\t\t\treturn d.valueFromTreeSlice(reflect.TypeOf([]map[string]interface{}{}), t)\n\t\t\t} else {\n\t\t\t\tival := mval1.Elem()\n\t\t\t\treturn d.valueFromToml(mval1.Elem().Type(), t, &ival)\n\t\t\t}\n\t\t}\n\t\treturn reflect.ValueOf(nil), fmt.Errorf(\"Can't convert %v(%T) to trees\", tval, tval)\n\tcase []interface{}:\n\t\td.visitor.visit()\n\t\tif isOtherSequence(mtype) {\n\t\t\treturn d.valueFromOtherSlice(mtype, t)\n\t\t}\n\t\tif mtype.Kind() == reflect.Interface {\n\t\t\tif mval1 == nil || mval1.IsNil() {\n\t\t\t\treturn d.valueFromOtherSlice(reflect.TypeOf([]interface{}{}), t)\n\t\t\t} else {\n\t\t\t\tival := mval1.Elem()\n\t\t\t\treturn d.valueFromToml(mval1.Elem().Type(), t, &ival)\n\t\t\t}\n\t\t}\n\t\treturn reflect.ValueOf(nil), fmt.Errorf(\"Can't convert %v(%T) to a slice\", tval, tval)\n\tdefault:\n\t\td.visitor.visit()\n\t\tmvalPtr := reflect.New(mtype)\n\n\t\t// Check if pointer to value implements the Unmarshaler interface.\n\t\tif isCustomUnmarshaler(mvalPtr.Type()) {\n\t\t\tif err := callCustomUnmarshaler(mvalPtr, tval); err != nil {\n\t\t\t\treturn reflect.ValueOf(nil), fmt.Errorf(\"unmarshal toml: %v\", err)\n\t\t\t}\n\t\t\treturn mvalPtr.Elem(), nil\n\t\t}\n\n\t\t// Check if pointer to value implements the encoding.TextUnmarshaler.\n\t\tif isTextUnmarshaler(mvalPtr.Type()) && !isTimeType(mtype) {\n\t\t\tif err := d.unmarshalText(tval, mvalPtr); err != nil {\n\t\t\t\treturn reflect.ValueOf(nil), fmt.Errorf(\"unmarshal text: %v\", err)\n\t\t\t}\n\t\t\treturn mvalPtr.Elem(), nil\n\t\t}\n\n\t\tswitch mtype.Kind() {\n\t\tcase reflect.Bool, reflect.Struct:\n\t\t\tval := reflect.ValueOf(tval)\n\n\t\t\tswitch val.Type() {\n\t\t\tcase localDateType:\n\t\t\t\tlocalDate := val.Interface().(LocalDate)\n\t\t\t\tswitch mtype {\n\t\t\t\tcase timeType:\n\t\t\t\t\treturn reflect.ValueOf(time.Date(localDate.Year, localDate.Month, localDate.Day, 0, 0, 0, 0, time.Local)), nil\n\t\t\t\t}\n\t\t\tcase localDateTimeType:\n\t\t\t\tlocalDateTime := val.Interface().(LocalDateTime)\n\t\t\t\tswitch mtype {\n\t\t\t\tcase timeType:\n\t\t\t\t\treturn reflect.ValueOf(time.Date(\n\t\t\t\t\t\tlocalDateTime.Date.Year,\n\t\t\t\t\t\tlocalDateTime.Date.Month,\n\t\t\t\t\t\tlocalDateTime.Date.Day,\n\t\t\t\t\t\tlocalDateTime.Time.Hour,\n\t\t\t\t\t\tlocalDateTime.Time.Minute,\n\t\t\t\t\t\tlocalDateTime.Time.Second,\n\t\t\t\t\t\tlocalDateTime.Time.Nanosecond,\n\t\t\t\t\t\ttime.Local)), nil\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// if this passes for when mtype is reflect.Struct, tval is a time.LocalTime\n\t\t\tif !val.Type().ConvertibleTo(mtype) {\n\t\t\t\treturn reflect.ValueOf(nil), fmt.Errorf(\"Can't convert %v(%T) to %v\", tval, tval, mtype.String())\n\t\t\t}\n\n\t\t\treturn val.Convert(mtype), nil\n\t\tcase reflect.String:\n\t\t\tval := reflect.ValueOf(tval)\n\t\t\t// stupidly, int64 is convertible to string. So special case this.\n\t\t\tif !val.Type().ConvertibleTo(mtype) || val.Kind() == reflect.Int64 {\n\t\t\t\treturn reflect.ValueOf(nil), fmt.Errorf(\"Can't convert %v(%T) to %v\", tval, tval, mtype.String())\n\t\t\t}\n\n\t\t\treturn val.Convert(mtype), nil\n\t\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\t\tval := reflect.ValueOf(tval)\n\t\t\tif mtype.Kind() == reflect.Int64 && mtype == reflect.TypeOf(time.Duration(1)) && val.Kind() == reflect.String {\n\t\t\t\td, err := time.ParseDuration(val.String())\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn reflect.ValueOf(nil), fmt.Errorf(\"Can't convert %v(%T) to %v. %s\", tval, tval, mtype.String(), err)\n\t\t\t\t}\n\t\t\t\treturn reflect.ValueOf(d), nil\n\t\t\t}\n\t\t\tif !val.Type().ConvertibleTo(mtype) || val.Kind() == reflect.Float64 {\n\t\t\t\treturn reflect.ValueOf(nil), fmt.Errorf(\"Can't convert %v(%T) to %v\", tval, tval, mtype.String())\n\t\t\t}\n\t\t\tif reflect.Indirect(reflect.New(mtype)).OverflowInt(val.Convert(reflect.TypeOf(int64(0))).Int()) {\n\t\t\t\treturn reflect.ValueOf(nil), fmt.Errorf(\"%v(%T) would overflow %v\", tval, tval, mtype.String())\n\t\t\t}\n\n\t\t\treturn val.Convert(mtype), nil\n\t\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\t\tval := reflect.ValueOf(tval)\n\t\t\tif !val.Type().ConvertibleTo(mtype) || val.Kind() == reflect.Float64 {\n\t\t\t\treturn reflect.ValueOf(nil), fmt.Errorf(\"Can't convert %v(%T) to %v\", tval, tval, mtype.String())\n\t\t\t}\n\n\t\t\tif val.Type().Kind() != reflect.Uint64 && val.Convert(reflect.TypeOf(int(1))).Int() < 0 {\n\t\t\t\treturn reflect.ValueOf(nil), fmt.Errorf(\"%v(%T) is negative so does not fit in %v\", tval, tval, mtype.String())\n\t\t\t}\n\t\t\tif reflect.Indirect(reflect.New(mtype)).OverflowUint(val.Convert(reflect.TypeOf(uint64(0))).Uint()) {\n\t\t\t\treturn reflect.ValueOf(nil), fmt.Errorf(\"%v(%T) would overflow %v\", tval, tval, mtype.String())\n\t\t\t}\n\n\t\t\treturn val.Convert(mtype), nil\n\t\tcase reflect.Float32, reflect.Float64:\n\t\t\tval := reflect.ValueOf(tval)\n\t\t\tif !val.Type().ConvertibleTo(mtype) || val.Kind() == reflect.Int64 {\n\t\t\t\treturn reflect.ValueOf(nil), fmt.Errorf(\"Can't convert %v(%T) to %v\", tval, tval, mtype.String())\n\t\t\t}\n\t\t\tif reflect.Indirect(reflect.New(mtype)).OverflowFloat(val.Convert(reflect.TypeOf(float64(0))).Float()) {\n\t\t\t\treturn reflect.ValueOf(nil), fmt.Errorf(\"%v(%T) would overflow %v\", tval, tval, mtype.String())\n\t\t\t}\n\n\t\t\treturn val.Convert(mtype), nil\n\t\tcase reflect.Interface:\n\t\t\tif mval1 == nil || mval1.IsNil() {\n\t\t\t\treturn reflect.ValueOf(tval), nil\n\t\t\t} else {\n\t\t\t\tival := mval1.Elem()\n\t\t\t\treturn d.valueFromToml(mval1.Elem().Type(), t, &ival)\n\t\t\t}\n\t\tcase reflect.Slice, reflect.Array:\n\t\t\tif isOtherSequence(mtype) && isOtherSequence(reflect.TypeOf(t)) {\n\t\t\t\treturn d.valueFromOtherSliceI(mtype, t)\n\t\t\t}\n\t\t\treturn reflect.ValueOf(nil), fmt.Errorf(\"Can't convert %v(%T) to %v(%v)\", tval, tval, mtype, mtype.Kind())\n\t\tdefault:\n\t\t\treturn reflect.ValueOf(nil), fmt.Errorf(\"Can't convert %v(%T) to %v(%v)\", tval, tval, mtype, mtype.Kind())\n\t\t}\n\t}\n}\n\nfunc (d *Decoder) unwrapPointer(mtype reflect.Type, tval interface{}, mval1 *reflect.Value) (reflect.Value, error) {\n\tvar melem *reflect.Value\n\n\tif mval1 != nil && !mval1.IsNil() && (mtype.Elem().Kind() == reflect.Struct || mtype.Elem().Kind() == reflect.Interface) {\n\t\telem := mval1.Elem()\n\t\tmelem = &elem\n\t}\n\n\tval, err := d.valueFromToml(mtype.Elem(), tval, melem)\n\tif err != nil {\n\t\treturn reflect.ValueOf(nil), err\n\t}\n\tmval := reflect.New(mtype.Elem())\n\tmval.Elem().Set(val)\n\treturn mval, nil\n}\n\nfunc (d *Decoder) unmarshalText(tval interface{}, mval reflect.Value) error {\n\tvar buf bytes.Buffer\n\tfmt.Fprint(&buf, tval)\n\treturn callTextUnmarshaler(mval, buf.Bytes())\n}\n\nfunc tomlOptions(vf reflect.StructField, an annotation) tomlOpts {\n\ttag := vf.Tag.Get(an.tag)\n\tparse := strings.Split(tag, \",\")\n\tvar comment string\n\tif c := vf.Tag.Get(an.comment); c != \"\" {\n\t\tcomment = c\n\t}\n\tcommented, _ := strconv.ParseBool(vf.Tag.Get(an.commented))\n\tmultiline, _ := strconv.ParseBool(vf.Tag.Get(an.multiline))\n\tliteral, _ := strconv.ParseBool(vf.Tag.Get(an.literal))\n\tdefaultValue := vf.Tag.Get(tagDefault)\n\tresult := tomlOpts{\n\t\tname:         vf.Name,\n\t\tnameFromTag:  false,\n\t\tcomment:      comment,\n\t\tcommented:    commented,\n\t\tmultiline:    multiline,\n\t\tliteral:      literal,\n\t\tinclude:      true,\n\t\tomitempty:    false,\n\t\tdefaultValue: defaultValue,\n\t}\n\tif parse[0] != \"\" {\n\t\tif parse[0] == \"-\" && len(parse) == 1 {\n\t\t\tresult.include = false\n\t\t} else {\n\t\t\tresult.name = strings.Trim(parse[0], \" \")\n\t\t\tresult.nameFromTag = true\n\t\t}\n\t}\n\tif vf.PkgPath != \"\" {\n\t\tresult.include = false\n\t}\n\tif len(parse) > 1 && strings.Trim(parse[1], \" \") == \"omitempty\" {\n\t\tresult.omitempty = true\n\t}\n\tif vf.Type.Kind() == reflect.Ptr {\n\t\tresult.omitempty = true\n\t}\n\treturn result\n}\n\nfunc isZero(val reflect.Value) bool {\n\tswitch val.Type().Kind() {\n\tcase reflect.Slice, reflect.Array, reflect.Map:\n\t\treturn val.Len() == 0\n\tdefault:\n\t\treturn reflect.DeepEqual(val.Interface(), reflect.Zero(val.Type()).Interface())\n\t}\n}\n\nfunc formatError(err error, pos Position) error {\n\tif err.Error()[0] == '(' { // Error already contains position information\n\t\treturn err\n\t}\n\treturn fmt.Errorf(\"%s: %s\", pos, err)\n}\n\n// visitorState keeps track of which keys were unmarshaled.\ntype visitorState struct {\n\ttree   *Tree\n\tpath   []string\n\tkeys   map[string]struct{}\n\tactive bool\n}\n\nfunc newVisitorState(tree *Tree) visitorState {\n\tpath, result := []string{}, map[string]struct{}{}\n\tinsertKeys(path, result, tree)\n\treturn visitorState{\n\t\ttree:   tree,\n\t\tpath:   path[:0],\n\t\tkeys:   result,\n\t\tactive: true,\n\t}\n}\n\nfunc (s *visitorState) push(key string) {\n\tif s.active {\n\t\ts.path = append(s.path, key)\n\t}\n}\n\nfunc (s *visitorState) pop() {\n\tif s.active {\n\t\ts.path = s.path[:len(s.path)-1]\n\t}\n}\n\nfunc (s *visitorState) visit() {\n\tif s.active {\n\t\tdelete(s.keys, strings.Join(s.path, \".\"))\n\t}\n}\n\nfunc (s *visitorState) visitAll() {\n\tif s.active {\n\t\tfor k := range s.keys {\n\t\t\tif strings.HasPrefix(k, strings.Join(s.path, \".\")) {\n\t\t\t\tdelete(s.keys, k)\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc (s *visitorState) validate() error {\n\tif !s.active {\n\t\treturn nil\n\t}\n\tundecoded := make([]string, 0, len(s.keys))\n\tfor key := range s.keys {\n\t\tundecoded = append(undecoded, key)\n\t}\n\tsort.Strings(undecoded)\n\tif len(undecoded) > 0 {\n\t\treturn fmt.Errorf(\"undecoded keys: %q\", undecoded)\n\t}\n\treturn nil\n}\n\nfunc insertKeys(path []string, m map[string]struct{}, tree *Tree) {\n\tfor k, v := range tree.values {\n\t\tswitch node := v.(type) {\n\t\tcase []*Tree:\n\t\t\tfor i, item := range node {\n\t\t\t\tinsertKeys(append(path, k, strconv.Itoa(i)), m, item)\n\t\t\t}\n\t\tcase *Tree:\n\t\t\tinsertKeys(append(path, k), m, node)\n\t\tcase *tomlValue:\n\t\t\tm[strings.Join(append(path, k), \".\")] = struct{}{}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/pelletier/go-toml/marshal_OrderPreserve_test.toml",
    "content": "title = \"TOML Marshal Testing\"\n\n[basic_lists]\n  floats = [12.3,45.6,78.9]\n  bools = [true,false,true]\n  dates = [1979-05-27T07:32:00Z,1980-05-27T07:32:00Z]\n  ints = [8001,8001,8002]\n  uints = [5002,5003]\n  strings = [\"One\",\"Two\",\"Three\"]\n\n[[subdocptrs]]\n  name = \"Second\"\n\n[basic_map]\n  one = \"one\"\n  two = \"two\"\n\n[subdoc]\n\n  [subdoc.second]\n    name = \"Second\"\n\n  [subdoc.first]\n    name = \"First\"\n\n[basic]\n  uint = 5001\n  bool = true\n  float = 123.4\n  float64 = 123.456782132399\n  int = 5000\n  string = \"Bite me\"\n  date = 1979-05-27T07:32:00Z\n\n[[subdoclist]]\n  name = \"List.First\"\n\n[[subdoclist]]\n  name = \"List.Second\"\n"
  },
  {
    "path": "vendor/github.com/pelletier/go-toml/marshal_test.toml",
    "content": "title = \"TOML Marshal Testing\"\n\n[basic]\n  bool = true\n  date = 1979-05-27T07:32:00Z\n  float = 123.4\n  float64 = 123.456782132399\n  int = 5000\n  string = \"Bite me\"\n  uint = 5001\n\n[basic_lists]\n  bools = [true,false,true]\n  dates = [1979-05-27T07:32:00Z,1980-05-27T07:32:00Z]\n  floats = [12.3,45.6,78.9]\n  ints = [8001,8001,8002]\n  strings = [\"One\",\"Two\",\"Three\"]\n  uints = [5002,5003]\n\n[basic_map]\n  one = \"one\"\n  two = \"two\"\n\n[subdoc]\n\n  [subdoc.first]\n    name = \"First\"\n\n  [subdoc.second]\n    name = \"Second\"\n\n[[subdoclist]]\n  name = \"List.First\"\n\n[[subdoclist]]\n  name = \"List.Second\"\n\n[[subdocptrs]]\n  name = \"Second\"\n"
  },
  {
    "path": "vendor/github.com/pelletier/go-toml/parser.go",
    "content": "// TOML Parser.\n\npackage toml\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"math\"\n\t\"reflect\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n)\n\ntype tomlParser struct {\n\tflowIdx       int\n\tflow          []token\n\ttree          *Tree\n\tcurrentTable  []string\n\tseenTableKeys []string\n}\n\ntype tomlParserStateFn func() tomlParserStateFn\n\n// Formats and panics an error message based on a token\nfunc (p *tomlParser) raiseError(tok *token, msg string, args ...interface{}) {\n\tpanic(tok.Position.String() + \": \" + fmt.Sprintf(msg, args...))\n}\n\nfunc (p *tomlParser) run() {\n\tfor state := p.parseStart; state != nil; {\n\t\tstate = state()\n\t}\n}\n\nfunc (p *tomlParser) peek() *token {\n\tif p.flowIdx >= len(p.flow) {\n\t\treturn nil\n\t}\n\treturn &p.flow[p.flowIdx]\n}\n\nfunc (p *tomlParser) assume(typ tokenType) {\n\ttok := p.getToken()\n\tif tok == nil {\n\t\tp.raiseError(tok, \"was expecting token %s, but token stream is empty\", tok)\n\t}\n\tif tok.typ != typ {\n\t\tp.raiseError(tok, \"was expecting token %s, but got %s instead\", typ, tok)\n\t}\n}\n\nfunc (p *tomlParser) getToken() *token {\n\ttok := p.peek()\n\tif tok == nil {\n\t\treturn nil\n\t}\n\tp.flowIdx++\n\treturn tok\n}\n\nfunc (p *tomlParser) parseStart() tomlParserStateFn {\n\ttok := p.peek()\n\n\t// end of stream, parsing is finished\n\tif tok == nil {\n\t\treturn nil\n\t}\n\n\tswitch tok.typ {\n\tcase tokenDoubleLeftBracket:\n\t\treturn p.parseGroupArray\n\tcase tokenLeftBracket:\n\t\treturn p.parseGroup\n\tcase tokenKey:\n\t\treturn p.parseAssign\n\tcase tokenEOF:\n\t\treturn nil\n\tcase tokenError:\n\t\tp.raiseError(tok, \"parsing error: %s\", tok.String())\n\tdefault:\n\t\tp.raiseError(tok, \"unexpected token %s\", tok.typ)\n\t}\n\treturn nil\n}\n\nfunc (p *tomlParser) parseGroupArray() tomlParserStateFn {\n\tstartToken := p.getToken() // discard the [[\n\tkey := p.getToken()\n\tif key.typ != tokenKeyGroupArray {\n\t\tp.raiseError(key, \"unexpected token %s, was expecting a table array key\", key)\n\t}\n\n\t// get or create table array element at the indicated part in the path\n\tkeys, err := parseKey(key.val)\n\tif err != nil {\n\t\tp.raiseError(key, \"invalid table array key: %s\", err)\n\t}\n\tp.tree.createSubTree(keys[:len(keys)-1], startToken.Position) // create parent entries\n\tdestTree := p.tree.GetPath(keys)\n\tvar array []*Tree\n\tif destTree == nil {\n\t\tarray = make([]*Tree, 0)\n\t} else if target, ok := destTree.([]*Tree); ok && target != nil {\n\t\tarray = destTree.([]*Tree)\n\t} else {\n\t\tp.raiseError(key, \"key %s is already assigned and not of type table array\", key)\n\t}\n\tp.currentTable = keys\n\n\t// add a new tree to the end of the table array\n\tnewTree := newTree()\n\tnewTree.position = startToken.Position\n\tarray = append(array, newTree)\n\tp.tree.SetPath(p.currentTable, array)\n\n\t// remove all keys that were children of this table array\n\tprefix := key.val + \".\"\n\tfound := false\n\tfor ii := 0; ii < len(p.seenTableKeys); {\n\t\ttableKey := p.seenTableKeys[ii]\n\t\tif strings.HasPrefix(tableKey, prefix) {\n\t\t\tp.seenTableKeys = append(p.seenTableKeys[:ii], p.seenTableKeys[ii+1:]...)\n\t\t} else {\n\t\t\tfound = (tableKey == key.val)\n\t\t\tii++\n\t\t}\n\t}\n\n\t// keep this key name from use by other kinds of assignments\n\tif !found {\n\t\tp.seenTableKeys = append(p.seenTableKeys, key.val)\n\t}\n\n\t// move to next parser state\n\tp.assume(tokenDoubleRightBracket)\n\treturn p.parseStart\n}\n\nfunc (p *tomlParser) parseGroup() tomlParserStateFn {\n\tstartToken := p.getToken() // discard the [\n\tkey := p.getToken()\n\tif key.typ != tokenKeyGroup {\n\t\tp.raiseError(key, \"unexpected token %s, was expecting a table key\", key)\n\t}\n\tfor _, item := range p.seenTableKeys {\n\t\tif item == key.val {\n\t\t\tp.raiseError(key, \"duplicated tables\")\n\t\t}\n\t}\n\n\tp.seenTableKeys = append(p.seenTableKeys, key.val)\n\tkeys, err := parseKey(key.val)\n\tif err != nil {\n\t\tp.raiseError(key, \"invalid table array key: %s\", err)\n\t}\n\tif err := p.tree.createSubTree(keys, startToken.Position); err != nil {\n\t\tp.raiseError(key, \"%s\", err)\n\t}\n\tdestTree := p.tree.GetPath(keys)\n\tif target, ok := destTree.(*Tree); ok && target != nil && target.inline {\n\t\tp.raiseError(key, \"could not re-define exist inline table or its sub-table : %s\",\n\t\t\tstrings.Join(keys, \".\"))\n\t}\n\tp.assume(tokenRightBracket)\n\tp.currentTable = keys\n\treturn p.parseStart\n}\n\nfunc (p *tomlParser) parseAssign() tomlParserStateFn {\n\tkey := p.getToken()\n\tp.assume(tokenEqual)\n\n\tparsedKey, err := parseKey(key.val)\n\tif err != nil {\n\t\tp.raiseError(key, \"invalid key: %s\", err.Error())\n\t}\n\n\tvalue := p.parseRvalue()\n\tvar tableKey []string\n\tif len(p.currentTable) > 0 {\n\t\ttableKey = p.currentTable\n\t} else {\n\t\ttableKey = []string{}\n\t}\n\n\tprefixKey := parsedKey[0 : len(parsedKey)-1]\n\ttableKey = append(tableKey, prefixKey...)\n\n\t// find the table to assign, looking out for arrays of tables\n\tvar targetNode *Tree\n\tswitch node := p.tree.GetPath(tableKey).(type) {\n\tcase []*Tree:\n\t\ttargetNode = node[len(node)-1]\n\tcase *Tree:\n\t\ttargetNode = node\n\tcase nil:\n\t\t// create intermediate\n\t\tif err := p.tree.createSubTree(tableKey, key.Position); err != nil {\n\t\t\tp.raiseError(key, \"could not create intermediate group: %s\", err)\n\t\t}\n\t\ttargetNode = p.tree.GetPath(tableKey).(*Tree)\n\tdefault:\n\t\tp.raiseError(key, \"Unknown table type for path: %s\",\n\t\t\tstrings.Join(tableKey, \".\"))\n\t}\n\n\tif targetNode.inline {\n\t\tp.raiseError(key, \"could not add key or sub-table to exist inline table or its sub-table : %s\",\n\t\t\tstrings.Join(tableKey, \".\"))\n\t}\n\n\t// assign value to the found table\n\tkeyVal := parsedKey[len(parsedKey)-1]\n\tlocalKey := []string{keyVal}\n\tfinalKey := append(tableKey, keyVal)\n\tif targetNode.GetPath(localKey) != nil {\n\t\tp.raiseError(key, \"The following key was defined twice: %s\",\n\t\t\tstrings.Join(finalKey, \".\"))\n\t}\n\tvar toInsert interface{}\n\n\tswitch value.(type) {\n\tcase *Tree, []*Tree:\n\t\ttoInsert = value\n\tdefault:\n\t\ttoInsert = &tomlValue{value: value, position: key.Position}\n\t}\n\ttargetNode.values[keyVal] = toInsert\n\treturn p.parseStart\n}\n\nvar errInvalidUnderscore = errors.New(\"invalid use of _ in number\")\n\nfunc numberContainsInvalidUnderscore(value string) error {\n\t// For large numbers, you may use underscores between digits to enhance\n\t// readability. Each underscore must be surrounded by at least one digit on\n\t// each side.\n\n\thasBefore := false\n\tfor idx, r := range value {\n\t\tif r == '_' {\n\t\t\tif !hasBefore || idx+1 >= len(value) {\n\t\t\t\t// can't end with an underscore\n\t\t\t\treturn errInvalidUnderscore\n\t\t\t}\n\t\t}\n\t\thasBefore = isDigit(r)\n\t}\n\treturn nil\n}\n\nvar errInvalidUnderscoreHex = errors.New(\"invalid use of _ in hex number\")\n\nfunc hexNumberContainsInvalidUnderscore(value string) error {\n\thasBefore := false\n\tfor idx, r := range value {\n\t\tif r == '_' {\n\t\t\tif !hasBefore || idx+1 >= len(value) {\n\t\t\t\t// can't end with an underscore\n\t\t\t\treturn errInvalidUnderscoreHex\n\t\t\t}\n\t\t}\n\t\thasBefore = isHexDigit(r)\n\t}\n\treturn nil\n}\n\nfunc cleanupNumberToken(value string) string {\n\tcleanedVal := strings.Replace(value, \"_\", \"\", -1)\n\treturn cleanedVal\n}\n\nfunc (p *tomlParser) parseRvalue() interface{} {\n\ttok := p.getToken()\n\tif tok == nil || tok.typ == tokenEOF {\n\t\tp.raiseError(tok, \"expecting a value\")\n\t}\n\n\tswitch tok.typ {\n\tcase tokenString:\n\t\treturn tok.val\n\tcase tokenTrue:\n\t\treturn true\n\tcase tokenFalse:\n\t\treturn false\n\tcase tokenInf:\n\t\tif tok.val[0] == '-' {\n\t\t\treturn math.Inf(-1)\n\t\t}\n\t\treturn math.Inf(1)\n\tcase tokenNan:\n\t\treturn math.NaN()\n\tcase tokenInteger:\n\t\tcleanedVal := cleanupNumberToken(tok.val)\n\t\tbase := 10\n\t\ts := cleanedVal\n\t\tcheckInvalidUnderscore := numberContainsInvalidUnderscore\n\t\tif len(cleanedVal) >= 3 && cleanedVal[0] == '0' {\n\t\t\tswitch cleanedVal[1] {\n\t\t\tcase 'x':\n\t\t\t\tcheckInvalidUnderscore = hexNumberContainsInvalidUnderscore\n\t\t\t\tbase = 16\n\t\t\tcase 'o':\n\t\t\t\tbase = 8\n\t\t\tcase 'b':\n\t\t\t\tbase = 2\n\t\t\tdefault:\n\t\t\t\tpanic(\"invalid base\") // the lexer should catch this first\n\t\t\t}\n\t\t\ts = cleanedVal[2:]\n\t\t}\n\n\t\terr := checkInvalidUnderscore(tok.val)\n\t\tif err != nil {\n\t\t\tp.raiseError(tok, \"%s\", err)\n\t\t}\n\n\t\tvar val interface{}\n\t\tval, err = strconv.ParseInt(s, base, 64)\n\t\tif err == nil {\n\t\t\treturn val\n\t\t}\n\n\t\tif s[0] != '-' {\n\t\t\tif val, err = strconv.ParseUint(s, base, 64); err == nil {\n\t\t\t\treturn val\n\t\t\t}\n\t\t}\n\t\tp.raiseError(tok, \"%s\", err)\n\tcase tokenFloat:\n\t\terr := numberContainsInvalidUnderscore(tok.val)\n\t\tif err != nil {\n\t\t\tp.raiseError(tok, \"%s\", err)\n\t\t}\n\t\tcleanedVal := cleanupNumberToken(tok.val)\n\t\tval, err := strconv.ParseFloat(cleanedVal, 64)\n\t\tif err != nil {\n\t\t\tp.raiseError(tok, \"%s\", err)\n\t\t}\n\t\treturn val\n\tcase tokenLocalTime:\n\t\tval, err := ParseLocalTime(tok.val)\n\t\tif err != nil {\n\t\t\tp.raiseError(tok, \"%s\", err)\n\t\t}\n\t\treturn val\n\tcase tokenLocalDate:\n\t\t// a local date may be followed by:\n\t\t// * nothing: this is a local date\n\t\t// * a local time: this is a local date-time\n\n\t\tnext := p.peek()\n\t\tif next == nil || next.typ != tokenLocalTime {\n\t\t\tval, err := ParseLocalDate(tok.val)\n\t\t\tif err != nil {\n\t\t\t\tp.raiseError(tok, \"%s\", err)\n\t\t\t}\n\t\t\treturn val\n\t\t}\n\n\t\tlocalDate := tok\n\t\tlocalTime := p.getToken()\n\n\t\tnext = p.peek()\n\t\tif next == nil || next.typ != tokenTimeOffset {\n\t\t\tv := localDate.val + \"T\" + localTime.val\n\t\t\tval, err := ParseLocalDateTime(v)\n\t\t\tif err != nil {\n\t\t\t\tp.raiseError(tok, \"%s\", err)\n\t\t\t}\n\t\t\treturn val\n\t\t}\n\n\t\toffset := p.getToken()\n\n\t\tlayout := time.RFC3339Nano\n\t\tv := localDate.val + \"T\" + localTime.val + offset.val\n\t\tval, err := time.ParseInLocation(layout, v, time.UTC)\n\t\tif err != nil {\n\t\t\tp.raiseError(tok, \"%s\", err)\n\t\t}\n\t\treturn val\n\tcase tokenLeftBracket:\n\t\treturn p.parseArray()\n\tcase tokenLeftCurlyBrace:\n\t\treturn p.parseInlineTable()\n\tcase tokenEqual:\n\t\tp.raiseError(tok, \"cannot have multiple equals for the same key\")\n\tcase tokenError:\n\t\tp.raiseError(tok, \"%s\", tok)\n\tdefault:\n\t\tpanic(fmt.Errorf(\"unhandled token: %v\", tok))\n\t}\n\n\treturn nil\n}\n\nfunc tokenIsComma(t *token) bool {\n\treturn t != nil && t.typ == tokenComma\n}\n\nfunc (p *tomlParser) parseInlineTable() *Tree {\n\ttree := newTree()\n\tvar previous *token\nLoop:\n\tfor {\n\t\tfollow := p.peek()\n\t\tif follow == nil || follow.typ == tokenEOF {\n\t\t\tp.raiseError(follow, \"unterminated inline table\")\n\t\t}\n\t\tswitch follow.typ {\n\t\tcase tokenRightCurlyBrace:\n\t\t\tp.getToken()\n\t\t\tbreak Loop\n\t\tcase tokenKey, tokenInteger, tokenString:\n\t\t\tif !tokenIsComma(previous) && previous != nil {\n\t\t\t\tp.raiseError(follow, \"comma expected between fields in inline table\")\n\t\t\t}\n\t\t\tkey := p.getToken()\n\t\t\tp.assume(tokenEqual)\n\n\t\t\tparsedKey, err := parseKey(key.val)\n\t\t\tif err != nil {\n\t\t\t\tp.raiseError(key, \"invalid key: %s\", err)\n\t\t\t}\n\n\t\t\tvalue := p.parseRvalue()\n\t\t\ttree.SetPath(parsedKey, value)\n\t\tcase tokenComma:\n\t\t\tif tokenIsComma(previous) {\n\t\t\t\tp.raiseError(follow, \"need field between two commas in inline table\")\n\t\t\t}\n\t\t\tp.getToken()\n\t\tdefault:\n\t\t\tp.raiseError(follow, \"unexpected token type in inline table: %s\", follow.String())\n\t\t}\n\t\tprevious = follow\n\t}\n\tif tokenIsComma(previous) {\n\t\tp.raiseError(previous, \"trailing comma at the end of inline table\")\n\t}\n\ttree.inline = true\n\treturn tree\n}\n\nfunc (p *tomlParser) parseArray() interface{} {\n\tvar array []interface{}\n\tarrayType := reflect.TypeOf(newTree())\n\tfor {\n\t\tfollow := p.peek()\n\t\tif follow == nil || follow.typ == tokenEOF {\n\t\t\tp.raiseError(follow, \"unterminated array\")\n\t\t}\n\t\tif follow.typ == tokenRightBracket {\n\t\t\tp.getToken()\n\t\t\tbreak\n\t\t}\n\t\tval := p.parseRvalue()\n\t\tif reflect.TypeOf(val) != arrayType {\n\t\t\tarrayType = nil\n\t\t}\n\t\tarray = append(array, val)\n\t\tfollow = p.peek()\n\t\tif follow == nil || follow.typ == tokenEOF {\n\t\t\tp.raiseError(follow, \"unterminated array\")\n\t\t}\n\t\tif follow.typ != tokenRightBracket && follow.typ != tokenComma {\n\t\t\tp.raiseError(follow, \"missing comma\")\n\t\t}\n\t\tif follow.typ == tokenComma {\n\t\t\tp.getToken()\n\t\t}\n\t}\n\n\t// if the array is a mixed-type array or its length is 0,\n\t// don't convert it to a table array\n\tif len(array) <= 0 {\n\t\tarrayType = nil\n\t}\n\t// An array of Trees is actually an array of inline\n\t// tables, which is a shorthand for a table array. If the\n\t// array was not converted from []interface{} to []*Tree,\n\t// the two notations would not be equivalent.\n\tif arrayType == reflect.TypeOf(newTree()) {\n\t\ttomlArray := make([]*Tree, len(array))\n\t\tfor i, v := range array {\n\t\t\ttomlArray[i] = v.(*Tree)\n\t\t}\n\t\treturn tomlArray\n\t}\n\treturn array\n}\n\nfunc parseToml(flow []token) *Tree {\n\tresult := newTree()\n\tresult.position = Position{1, 1}\n\tparser := &tomlParser{\n\t\tflowIdx:       0,\n\t\tflow:          flow,\n\t\ttree:          result,\n\t\tcurrentTable:  make([]string, 0),\n\t\tseenTableKeys: make([]string, 0),\n\t}\n\tparser.run()\n\treturn result\n}\n"
  },
  {
    "path": "vendor/github.com/pelletier/go-toml/position.go",
    "content": "// Position support for go-toml\n\npackage toml\n\nimport (\n\t\"fmt\"\n)\n\n// Position of a document element within a TOML document.\n//\n// Line and Col are both 1-indexed positions for the element's line number and\n// column number, respectively.  Values of zero or less will cause Invalid(),\n// to return true.\ntype Position struct {\n\tLine int // line within the document\n\tCol  int // column within the line\n}\n\n// String representation of the position.\n// Displays 1-indexed line and column numbers.\nfunc (p Position) String() string {\n\treturn fmt.Sprintf(\"(%d, %d)\", p.Line, p.Col)\n}\n\n// Invalid returns whether or not the position is valid (i.e. with negative or\n// null values)\nfunc (p Position) Invalid() bool {\n\treturn p.Line <= 0 || p.Col <= 0\n}\n"
  },
  {
    "path": "vendor/github.com/pelletier/go-toml/token.go",
    "content": "package toml\n\nimport \"fmt\"\n\n// Define tokens\ntype tokenType int\n\nconst (\n\teof = -(iota + 1)\n)\n\nconst (\n\ttokenError tokenType = iota\n\ttokenEOF\n\ttokenComment\n\ttokenKey\n\ttokenString\n\ttokenInteger\n\ttokenTrue\n\ttokenFalse\n\ttokenFloat\n\ttokenInf\n\ttokenNan\n\ttokenEqual\n\ttokenLeftBracket\n\ttokenRightBracket\n\ttokenLeftCurlyBrace\n\ttokenRightCurlyBrace\n\ttokenLeftParen\n\ttokenRightParen\n\ttokenDoubleLeftBracket\n\ttokenDoubleRightBracket\n\ttokenLocalDate\n\ttokenLocalTime\n\ttokenTimeOffset\n\ttokenKeyGroup\n\ttokenKeyGroupArray\n\ttokenComma\n\ttokenColon\n\ttokenDollar\n\ttokenStar\n\ttokenQuestion\n\ttokenDot\n\ttokenDotDot\n\ttokenEOL\n)\n\nvar tokenTypeNames = []string{\n\t\"Error\",\n\t\"EOF\",\n\t\"Comment\",\n\t\"Key\",\n\t\"String\",\n\t\"Integer\",\n\t\"True\",\n\t\"False\",\n\t\"Float\",\n\t\"Inf\",\n\t\"NaN\",\n\t\"=\",\n\t\"[\",\n\t\"]\",\n\t\"{\",\n\t\"}\",\n\t\"(\",\n\t\")\",\n\t\"]]\",\n\t\"[[\",\n\t\"LocalDate\",\n\t\"LocalTime\",\n\t\"TimeOffset\",\n\t\"KeyGroup\",\n\t\"KeyGroupArray\",\n\t\",\",\n\t\":\",\n\t\"$\",\n\t\"*\",\n\t\"?\",\n\t\".\",\n\t\"..\",\n\t\"EOL\",\n}\n\ntype token struct {\n\tPosition\n\ttyp tokenType\n\tval string\n}\n\nfunc (tt tokenType) String() string {\n\tidx := int(tt)\n\tif idx < len(tokenTypeNames) {\n\t\treturn tokenTypeNames[idx]\n\t}\n\treturn \"Unknown\"\n}\n\nfunc (t token) String() string {\n\tswitch t.typ {\n\tcase tokenEOF:\n\t\treturn \"EOF\"\n\tcase tokenError:\n\t\treturn t.val\n\t}\n\n\treturn fmt.Sprintf(\"%q\", t.val)\n}\n\nfunc isSpace(r rune) bool {\n\treturn r == ' ' || r == '\\t'\n}\n\nfunc isAlphanumeric(r rune) bool {\n\treturn 'a' <= r && r <= 'z' || 'A' <= r && r <= 'Z' || r == '_'\n}\n\nfunc isKeyChar(r rune) bool {\n\t// Keys start with the first character that isn't whitespace or [ and end\n\t// with the last non-whitespace character before the equals sign. Keys\n\t// cannot contain a # character.\"\n\treturn !(r == '\\r' || r == '\\n' || r == eof || r == '=')\n}\n\nfunc isKeyStartChar(r rune) bool {\n\treturn !(isSpace(r) || r == '\\r' || r == '\\n' || r == eof || r == '[')\n}\n\nfunc isDigit(r rune) bool {\n\treturn '0' <= r && r <= '9'\n}\n\nfunc isHexDigit(r rune) bool {\n\treturn isDigit(r) ||\n\t\t(r >= 'a' && r <= 'f') ||\n\t\t(r >= 'A' && r <= 'F')\n}\n"
  },
  {
    "path": "vendor/github.com/pelletier/go-toml/toml.go",
    "content": "package toml\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"os\"\n\t\"runtime\"\n\t\"strings\"\n)\n\ntype tomlValue struct {\n\tvalue     interface{} // string, int64, uint64, float64, bool, time.Time, [] of any of this list\n\tcomment   string\n\tcommented bool\n\tmultiline bool\n\tliteral   bool\n\tposition  Position\n}\n\n// Tree is the result of the parsing of a TOML file.\ntype Tree struct {\n\tvalues    map[string]interface{} // string -> *tomlValue, *Tree, []*Tree\n\tcomment   string\n\tcommented bool\n\tinline    bool\n\tposition  Position\n}\n\nfunc newTree() *Tree {\n\treturn newTreeWithPosition(Position{})\n}\n\nfunc newTreeWithPosition(pos Position) *Tree {\n\treturn &Tree{\n\t\tvalues:   make(map[string]interface{}),\n\t\tposition: pos,\n\t}\n}\n\n// TreeFromMap initializes a new Tree object using the given map.\nfunc TreeFromMap(m map[string]interface{}) (*Tree, error) {\n\tresult, err := toTree(m)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn result.(*Tree), nil\n}\n\n// Position returns the position of the tree.\nfunc (t *Tree) Position() Position {\n\treturn t.position\n}\n\n// Has returns a boolean indicating if the given key exists.\nfunc (t *Tree) Has(key string) bool {\n\tif key == \"\" {\n\t\treturn false\n\t}\n\treturn t.HasPath(strings.Split(key, \".\"))\n}\n\n// HasPath returns true if the given path of keys exists, false otherwise.\nfunc (t *Tree) HasPath(keys []string) bool {\n\treturn t.GetPath(keys) != nil\n}\n\n// Keys returns the keys of the toplevel tree (does not recurse).\nfunc (t *Tree) Keys() []string {\n\tkeys := make([]string, len(t.values))\n\ti := 0\n\tfor k := range t.values {\n\t\tkeys[i] = k\n\t\ti++\n\t}\n\treturn keys\n}\n\n// Get the value at key in the Tree.\n// Key is a dot-separated path (e.g. a.b.c) without single/double quoted strings.\n// If you need to retrieve non-bare keys, use GetPath.\n// Returns nil if the path does not exist in the tree.\n// If keys is of length zero, the current tree is returned.\nfunc (t *Tree) Get(key string) interface{} {\n\tif key == \"\" {\n\t\treturn t\n\t}\n\treturn t.GetPath(strings.Split(key, \".\"))\n}\n\n// GetPath returns the element in the tree indicated by 'keys'.\n// If keys is of length zero, the current tree is returned.\nfunc (t *Tree) GetPath(keys []string) interface{} {\n\tif len(keys) == 0 {\n\t\treturn t\n\t}\n\tsubtree := t\n\tfor _, intermediateKey := range keys[:len(keys)-1] {\n\t\tvalue, exists := subtree.values[intermediateKey]\n\t\tif !exists {\n\t\t\treturn nil\n\t\t}\n\t\tswitch node := value.(type) {\n\t\tcase *Tree:\n\t\t\tsubtree = node\n\t\tcase []*Tree:\n\t\t\t// go to most recent element\n\t\t\tif len(node) == 0 {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t\tsubtree = node[len(node)-1]\n\t\tdefault:\n\t\t\treturn nil // cannot navigate through other node types\n\t\t}\n\t}\n\t// branch based on final node type\n\tswitch node := subtree.values[keys[len(keys)-1]].(type) {\n\tcase *tomlValue:\n\t\treturn node.value\n\tdefault:\n\t\treturn node\n\t}\n}\n\n// GetArray returns the value at key in the Tree.\n// It returns []string, []int64, etc type if key has homogeneous lists\n// Key is a dot-separated path (e.g. a.b.c) without single/double quoted strings.\n// Returns nil if the path does not exist in the tree.\n// If keys is of length zero, the current tree is returned.\nfunc (t *Tree) GetArray(key string) interface{} {\n\tif key == \"\" {\n\t\treturn t\n\t}\n\treturn t.GetArrayPath(strings.Split(key, \".\"))\n}\n\n// GetArrayPath returns the element in the tree indicated by 'keys'.\n// If keys is of length zero, the current tree is returned.\nfunc (t *Tree) GetArrayPath(keys []string) interface{} {\n\tif len(keys) == 0 {\n\t\treturn t\n\t}\n\tsubtree := t\n\tfor _, intermediateKey := range keys[:len(keys)-1] {\n\t\tvalue, exists := subtree.values[intermediateKey]\n\t\tif !exists {\n\t\t\treturn nil\n\t\t}\n\t\tswitch node := value.(type) {\n\t\tcase *Tree:\n\t\t\tsubtree = node\n\t\tcase []*Tree:\n\t\t\t// go to most recent element\n\t\t\tif len(node) == 0 {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t\tsubtree = node[len(node)-1]\n\t\tdefault:\n\t\t\treturn nil // cannot navigate through other node types\n\t\t}\n\t}\n\t// branch based on final node type\n\tswitch node := subtree.values[keys[len(keys)-1]].(type) {\n\tcase *tomlValue:\n\t\tswitch n := node.value.(type) {\n\t\tcase []interface{}:\n\t\t\treturn getArray(n)\n\t\tdefault:\n\t\t\treturn node.value\n\t\t}\n\tdefault:\n\t\treturn node\n\t}\n}\n\n// if homogeneous array, then return slice type object over []interface{}\nfunc getArray(n []interface{}) interface{} {\n\tvar s []string\n\tvar i64 []int64\n\tvar f64 []float64\n\tvar bl []bool\n\tfor _, value := range n {\n\t\tswitch v := value.(type) {\n\t\tcase string:\n\t\t\ts = append(s, v)\n\t\tcase int64:\n\t\t\ti64 = append(i64, v)\n\t\tcase float64:\n\t\t\tf64 = append(f64, v)\n\t\tcase bool:\n\t\t\tbl = append(bl, v)\n\t\tdefault:\n\t\t\treturn n\n\t\t}\n\t}\n\tif len(s) == len(n) {\n\t\treturn s\n\t} else if len(i64) == len(n) {\n\t\treturn i64\n\t} else if len(f64) == len(n) {\n\t\treturn f64\n\t} else if len(bl) == len(n) {\n\t\treturn bl\n\t}\n\treturn n\n}\n\n// GetPosition returns the position of the given key.\nfunc (t *Tree) GetPosition(key string) Position {\n\tif key == \"\" {\n\t\treturn t.position\n\t}\n\treturn t.GetPositionPath(strings.Split(key, \".\"))\n}\n\n// SetPositionPath sets the position of element in the tree indicated by 'keys'.\n// If keys is of length zero, the current tree position is set.\nfunc (t *Tree) SetPositionPath(keys []string, pos Position) {\n\tif len(keys) == 0 {\n\t\tt.position = pos\n\t\treturn\n\t}\n\tsubtree := t\n\tfor _, intermediateKey := range keys[:len(keys)-1] {\n\t\tvalue, exists := subtree.values[intermediateKey]\n\t\tif !exists {\n\t\t\treturn\n\t\t}\n\t\tswitch node := value.(type) {\n\t\tcase *Tree:\n\t\t\tsubtree = node\n\t\tcase []*Tree:\n\t\t\t// go to most recent element\n\t\t\tif len(node) == 0 {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tsubtree = node[len(node)-1]\n\t\tdefault:\n\t\t\treturn\n\t\t}\n\t}\n\t// branch based on final node type\n\tswitch node := subtree.values[keys[len(keys)-1]].(type) {\n\tcase *tomlValue:\n\t\tnode.position = pos\n\t\treturn\n\tcase *Tree:\n\t\tnode.position = pos\n\t\treturn\n\tcase []*Tree:\n\t\t// go to most recent element\n\t\tif len(node) == 0 {\n\t\t\treturn\n\t\t}\n\t\tnode[len(node)-1].position = pos\n\t\treturn\n\t}\n}\n\n// GetPositionPath returns the element in the tree indicated by 'keys'.\n// If keys is of length zero, the current tree is returned.\nfunc (t *Tree) GetPositionPath(keys []string) Position {\n\tif len(keys) == 0 {\n\t\treturn t.position\n\t}\n\tsubtree := t\n\tfor _, intermediateKey := range keys[:len(keys)-1] {\n\t\tvalue, exists := subtree.values[intermediateKey]\n\t\tif !exists {\n\t\t\treturn Position{0, 0}\n\t\t}\n\t\tswitch node := value.(type) {\n\t\tcase *Tree:\n\t\t\tsubtree = node\n\t\tcase []*Tree:\n\t\t\t// go to most recent element\n\t\t\tif len(node) == 0 {\n\t\t\t\treturn Position{0, 0}\n\t\t\t}\n\t\t\tsubtree = node[len(node)-1]\n\t\tdefault:\n\t\t\treturn Position{0, 0}\n\t\t}\n\t}\n\t// branch based on final node type\n\tswitch node := subtree.values[keys[len(keys)-1]].(type) {\n\tcase *tomlValue:\n\t\treturn node.position\n\tcase *Tree:\n\t\treturn node.position\n\tcase []*Tree:\n\t\t// go to most recent element\n\t\tif len(node) == 0 {\n\t\t\treturn Position{0, 0}\n\t\t}\n\t\treturn node[len(node)-1].position\n\tdefault:\n\t\treturn Position{0, 0}\n\t}\n}\n\n// GetDefault works like Get but with a default value\nfunc (t *Tree) GetDefault(key string, def interface{}) interface{} {\n\tval := t.Get(key)\n\tif val == nil {\n\t\treturn def\n\t}\n\treturn val\n}\n\n// SetOptions arguments are supplied to the SetWithOptions and SetPathWithOptions functions to modify marshalling behaviour.\n// The default values within the struct are valid default options.\ntype SetOptions struct {\n\tComment   string\n\tCommented bool\n\tMultiline bool\n\tLiteral   bool\n}\n\n// SetWithOptions is the same as Set, but allows you to provide formatting\n// instructions to the key, that will be used by Marshal().\nfunc (t *Tree) SetWithOptions(key string, opts SetOptions, value interface{}) {\n\tt.SetPathWithOptions(strings.Split(key, \".\"), opts, value)\n}\n\n// SetPathWithOptions is the same as SetPath, but allows you to provide\n// formatting instructions to the key, that will be reused by Marshal().\nfunc (t *Tree) SetPathWithOptions(keys []string, opts SetOptions, value interface{}) {\n\tsubtree := t\n\tfor i, intermediateKey := range keys[:len(keys)-1] {\n\t\tnextTree, exists := subtree.values[intermediateKey]\n\t\tif !exists {\n\t\t\tnextTree = newTreeWithPosition(Position{Line: t.position.Line + i, Col: t.position.Col})\n\t\t\tsubtree.values[intermediateKey] = nextTree // add new element here\n\t\t}\n\t\tswitch node := nextTree.(type) {\n\t\tcase *Tree:\n\t\t\tsubtree = node\n\t\tcase []*Tree:\n\t\t\t// go to most recent element\n\t\t\tif len(node) == 0 {\n\t\t\t\t// create element if it does not exist\n\t\t\t\tnode = append(node, newTreeWithPosition(Position{Line: t.position.Line + i, Col: t.position.Col}))\n\t\t\t\tsubtree.values[intermediateKey] = node\n\t\t\t}\n\t\t\tsubtree = node[len(node)-1]\n\t\t}\n\t}\n\n\tvar toInsert interface{}\n\n\tswitch v := value.(type) {\n\tcase *Tree:\n\t\tv.comment = opts.Comment\n\t\tv.commented = opts.Commented\n\t\ttoInsert = value\n\tcase []*Tree:\n\t\tfor i := range v {\n\t\t\tv[i].commented = opts.Commented\n\t\t}\n\t\ttoInsert = value\n\tcase *tomlValue:\n\t\tv.comment = opts.Comment\n\t\tv.commented = opts.Commented\n\t\tv.multiline = opts.Multiline\n\t\tv.literal = opts.Literal\n\t\ttoInsert = v\n\tdefault:\n\t\ttoInsert = &tomlValue{value: value,\n\t\t\tcomment:   opts.Comment,\n\t\t\tcommented: opts.Commented,\n\t\t\tmultiline: opts.Multiline,\n\t\t\tliteral:   opts.Literal,\n\t\t\tposition:  Position{Line: subtree.position.Line + len(subtree.values) + 1, Col: subtree.position.Col}}\n\t}\n\n\tsubtree.values[keys[len(keys)-1]] = toInsert\n}\n\n// Set an element in the tree.\n// Key is a dot-separated path (e.g. a.b.c).\n// Creates all necessary intermediate trees, if needed.\nfunc (t *Tree) Set(key string, value interface{}) {\n\tt.SetWithComment(key, \"\", false, value)\n}\n\n// SetWithComment is the same as Set, but allows you to provide comment\n// information to the key, that will be reused by Marshal().\nfunc (t *Tree) SetWithComment(key string, comment string, commented bool, value interface{}) {\n\tt.SetPathWithComment(strings.Split(key, \".\"), comment, commented, value)\n}\n\n// SetPath sets an element in the tree.\n// Keys is an array of path elements (e.g. {\"a\",\"b\",\"c\"}).\n// Creates all necessary intermediate trees, if needed.\nfunc (t *Tree) SetPath(keys []string, value interface{}) {\n\tt.SetPathWithComment(keys, \"\", false, value)\n}\n\n// SetPathWithComment is the same as SetPath, but allows you to provide comment\n// information to the key, that will be reused by Marshal().\nfunc (t *Tree) SetPathWithComment(keys []string, comment string, commented bool, value interface{}) {\n\tt.SetPathWithOptions(keys, SetOptions{Comment: comment, Commented: commented}, value)\n}\n\n// Delete removes a key from the tree.\n// Key is a dot-separated path (e.g. a.b.c).\nfunc (t *Tree) Delete(key string) error {\n\tkeys, err := parseKey(key)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn t.DeletePath(keys)\n}\n\n// DeletePath removes a key from the tree.\n// Keys is an array of path elements (e.g. {\"a\",\"b\",\"c\"}).\nfunc (t *Tree) DeletePath(keys []string) error {\n\tkeyLen := len(keys)\n\tif keyLen == 1 {\n\t\tdelete(t.values, keys[0])\n\t\treturn nil\n\t}\n\ttree := t.GetPath(keys[:keyLen-1])\n\titem := keys[keyLen-1]\n\tswitch node := tree.(type) {\n\tcase *Tree:\n\t\tdelete(node.values, item)\n\t\treturn nil\n\t}\n\treturn errors.New(\"no such key to delete\")\n}\n\n// createSubTree takes a tree and a key and create the necessary intermediate\n// subtrees to create a subtree at that point. In-place.\n//\n// e.g. passing a.b.c will create (assuming tree is empty) tree[a], tree[a][b]\n// and tree[a][b][c]\n//\n// Returns nil on success, error object on failure\nfunc (t *Tree) createSubTree(keys []string, pos Position) error {\n\tsubtree := t\n\tfor i, intermediateKey := range keys {\n\t\tnextTree, exists := subtree.values[intermediateKey]\n\t\tif !exists {\n\t\t\ttree := newTreeWithPosition(Position{Line: t.position.Line + i, Col: t.position.Col})\n\t\t\ttree.position = pos\n\t\t\ttree.inline = subtree.inline\n\t\t\tsubtree.values[intermediateKey] = tree\n\t\t\tnextTree = tree\n\t\t}\n\n\t\tswitch node := nextTree.(type) {\n\t\tcase []*Tree:\n\t\t\tsubtree = node[len(node)-1]\n\t\tcase *Tree:\n\t\t\tsubtree = node\n\t\tdefault:\n\t\t\treturn fmt.Errorf(\"unknown type for path %s (%s): %T (%#v)\",\n\t\t\t\tstrings.Join(keys, \".\"), intermediateKey, nextTree, nextTree)\n\t\t}\n\t}\n\treturn nil\n}\n\n// LoadBytes creates a Tree from a []byte.\nfunc LoadBytes(b []byte) (tree *Tree, err error) {\n\tdefer func() {\n\t\tif r := recover(); r != nil {\n\t\t\tif _, ok := r.(runtime.Error); ok {\n\t\t\t\tpanic(r)\n\t\t\t}\n\t\t\terr = fmt.Errorf(\"%s\", r)\n\t\t}\n\t}()\n\n\tif len(b) >= 4 && (hasUTF32BigEndianBOM4(b) || hasUTF32LittleEndianBOM4(b)) {\n\t\tb = b[4:]\n\t} else if len(b) >= 3 && hasUTF8BOM3(b) {\n\t\tb = b[3:]\n\t} else if len(b) >= 2 && (hasUTF16BigEndianBOM2(b) || hasUTF16LittleEndianBOM2(b)) {\n\t\tb = b[2:]\n\t}\n\n\ttree = parseToml(lexToml(b))\n\treturn\n}\n\nfunc hasUTF16BigEndianBOM2(b []byte) bool {\n\treturn b[0] == 0xFE && b[1] == 0xFF\n}\n\nfunc hasUTF16LittleEndianBOM2(b []byte) bool {\n\treturn b[0] == 0xFF && b[1] == 0xFE\n}\n\nfunc hasUTF8BOM3(b []byte) bool {\n\treturn b[0] == 0xEF && b[1] == 0xBB && b[2] == 0xBF\n}\n\nfunc hasUTF32BigEndianBOM4(b []byte) bool {\n\treturn b[0] == 0x00 && b[1] == 0x00 && b[2] == 0xFE && b[3] == 0xFF\n}\n\nfunc hasUTF32LittleEndianBOM4(b []byte) bool {\n\treturn b[0] == 0xFF && b[1] == 0xFE && b[2] == 0x00 && b[3] == 0x00\n}\n\n// LoadReader creates a Tree from any io.Reader.\nfunc LoadReader(reader io.Reader) (tree *Tree, err error) {\n\tinputBytes, err := ioutil.ReadAll(reader)\n\tif err != nil {\n\t\treturn\n\t}\n\ttree, err = LoadBytes(inputBytes)\n\treturn\n}\n\n// Load creates a Tree from a string.\nfunc Load(content string) (tree *Tree, err error) {\n\treturn LoadBytes([]byte(content))\n}\n\n// LoadFile creates a Tree from a file.\nfunc LoadFile(path string) (tree *Tree, err error) {\n\tfile, err := os.Open(path)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer file.Close()\n\treturn LoadReader(file)\n}\n"
  },
  {
    "path": "vendor/github.com/pelletier/go-toml/tomlpub.go",
    "content": "package toml\n\n// PubTOMLValue wrapping tomlValue in order to access all properties from outside.\ntype PubTOMLValue = tomlValue\n\nfunc (ptv *PubTOMLValue) Value() interface{} {\n\treturn ptv.value\n}\nfunc (ptv *PubTOMLValue) Comment() string {\n\treturn ptv.comment\n}\nfunc (ptv *PubTOMLValue) Commented() bool {\n\treturn ptv.commented\n}\nfunc (ptv *PubTOMLValue) Multiline() bool {\n\treturn ptv.multiline\n}\nfunc (ptv *PubTOMLValue) Position() Position {\n\treturn ptv.position\n}\n\nfunc (ptv *PubTOMLValue) SetValue(v interface{}) {\n\tptv.value = v\n}\nfunc (ptv *PubTOMLValue) SetComment(s string) {\n\tptv.comment = s\n}\nfunc (ptv *PubTOMLValue) SetCommented(c bool) {\n\tptv.commented = c\n}\nfunc (ptv *PubTOMLValue) SetMultiline(m bool) {\n\tptv.multiline = m\n}\nfunc (ptv *PubTOMLValue) SetPosition(p Position) {\n\tptv.position = p\n}\n\n// PubTree wrapping Tree in order to access all properties from outside.\ntype PubTree = Tree\n\nfunc (pt *PubTree) Values() map[string]interface{} {\n\treturn pt.values\n}\n\nfunc (pt *PubTree) Comment() string {\n\treturn pt.comment\n}\n\nfunc (pt *PubTree) Commented() bool {\n\treturn pt.commented\n}\n\nfunc (pt *PubTree) Inline() bool {\n\treturn pt.inline\n}\n\nfunc (pt *PubTree) SetValues(v map[string]interface{}) {\n\tpt.values = v\n}\n\nfunc (pt *PubTree) SetComment(c string) {\n\tpt.comment = c\n}\n\nfunc (pt *PubTree) SetCommented(c bool) {\n\tpt.commented = c\n}\n\nfunc (pt *PubTree) SetInline(i bool) {\n\tpt.inline = i\n}\n"
  },
  {
    "path": "vendor/github.com/pelletier/go-toml/tomltree_create.go",
    "content": "package toml\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"time\"\n)\n\nvar kindToType = [reflect.String + 1]reflect.Type{\n\treflect.Bool:    reflect.TypeOf(true),\n\treflect.String:  reflect.TypeOf(\"\"),\n\treflect.Float32: reflect.TypeOf(float64(1)),\n\treflect.Float64: reflect.TypeOf(float64(1)),\n\treflect.Int:     reflect.TypeOf(int64(1)),\n\treflect.Int8:    reflect.TypeOf(int64(1)),\n\treflect.Int16:   reflect.TypeOf(int64(1)),\n\treflect.Int32:   reflect.TypeOf(int64(1)),\n\treflect.Int64:   reflect.TypeOf(int64(1)),\n\treflect.Uint:    reflect.TypeOf(uint64(1)),\n\treflect.Uint8:   reflect.TypeOf(uint64(1)),\n\treflect.Uint16:  reflect.TypeOf(uint64(1)),\n\treflect.Uint32:  reflect.TypeOf(uint64(1)),\n\treflect.Uint64:  reflect.TypeOf(uint64(1)),\n}\n\n// typeFor returns a reflect.Type for a reflect.Kind, or nil if none is found.\n// supported values:\n// string, bool, int64, uint64, float64, time.Time, int, int8, int16, int32, uint, uint8, uint16, uint32, float32\nfunc typeFor(k reflect.Kind) reflect.Type {\n\tif k > 0 && int(k) < len(kindToType) {\n\t\treturn kindToType[k]\n\t}\n\treturn nil\n}\n\nfunc simpleValueCoercion(object interface{}) (interface{}, error) {\n\tswitch original := object.(type) {\n\tcase string, bool, int64, uint64, float64, time.Time:\n\t\treturn original, nil\n\tcase int:\n\t\treturn int64(original), nil\n\tcase int8:\n\t\treturn int64(original), nil\n\tcase int16:\n\t\treturn int64(original), nil\n\tcase int32:\n\t\treturn int64(original), nil\n\tcase uint:\n\t\treturn uint64(original), nil\n\tcase uint8:\n\t\treturn uint64(original), nil\n\tcase uint16:\n\t\treturn uint64(original), nil\n\tcase uint32:\n\t\treturn uint64(original), nil\n\tcase float32:\n\t\treturn float64(original), nil\n\tcase fmt.Stringer:\n\t\treturn original.String(), nil\n\tcase []interface{}:\n\t\tvalue := reflect.ValueOf(original)\n\t\tlength := value.Len()\n\t\tarrayValue := reflect.MakeSlice(value.Type(), 0, length)\n\t\tfor i := 0; i < length; i++ {\n\t\t\tval := value.Index(i).Interface()\n\t\t\tsimpleValue, err := simpleValueCoercion(val)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tarrayValue = reflect.Append(arrayValue, reflect.ValueOf(simpleValue))\n\t\t}\n\t\treturn arrayValue.Interface(), nil\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"cannot convert type %T to Tree\", object)\n\t}\n}\n\nfunc sliceToTree(object interface{}) (interface{}, error) {\n\t// arrays are a bit tricky, since they can represent either a\n\t// collection of simple values, which is represented by one\n\t// *tomlValue, or an array of tables, which is represented by an\n\t// array of *Tree.\n\n\t// holding the assumption that this function is called from toTree only when value.Kind() is Array or Slice\n\tvalue := reflect.ValueOf(object)\n\tinsideType := value.Type().Elem()\n\tlength := value.Len()\n\tif length > 0 {\n\t\tinsideType = reflect.ValueOf(value.Index(0).Interface()).Type()\n\t}\n\tif insideType.Kind() == reflect.Map {\n\t\t// this is considered as an array of tables\n\t\ttablesArray := make([]*Tree, 0, length)\n\t\tfor i := 0; i < length; i++ {\n\t\t\ttable := value.Index(i)\n\t\t\ttree, err := toTree(table.Interface())\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\ttablesArray = append(tablesArray, tree.(*Tree))\n\t\t}\n\t\treturn tablesArray, nil\n\t}\n\n\tsliceType := typeFor(insideType.Kind())\n\tif sliceType == nil {\n\t\tsliceType = insideType\n\t}\n\n\tarrayValue := reflect.MakeSlice(reflect.SliceOf(sliceType), 0, length)\n\n\tfor i := 0; i < length; i++ {\n\t\tval := value.Index(i).Interface()\n\t\tsimpleValue, err := simpleValueCoercion(val)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tarrayValue = reflect.Append(arrayValue, reflect.ValueOf(simpleValue))\n\t}\n\treturn &tomlValue{value: arrayValue.Interface(), position: Position{}}, nil\n}\n\nfunc toTree(object interface{}) (interface{}, error) {\n\tvalue := reflect.ValueOf(object)\n\n\tif value.Kind() == reflect.Map {\n\t\tvalues := map[string]interface{}{}\n\t\tkeys := value.MapKeys()\n\t\tfor _, key := range keys {\n\t\t\tif key.Kind() != reflect.String {\n\t\t\t\tif _, ok := key.Interface().(string); !ok {\n\t\t\t\t\treturn nil, fmt.Errorf(\"map key needs to be a string, not %T (%v)\", key.Interface(), key.Kind())\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tv := value.MapIndex(key)\n\t\t\tnewValue, err := toTree(v.Interface())\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tvalues[key.String()] = newValue\n\t\t}\n\t\treturn &Tree{values: values, position: Position{}}, nil\n\t}\n\n\tif value.Kind() == reflect.Array || value.Kind() == reflect.Slice {\n\t\treturn sliceToTree(object)\n\t}\n\n\tsimpleValue, err := simpleValueCoercion(object)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &tomlValue{value: simpleValue, position: Position{}}, nil\n}\n"
  },
  {
    "path": "vendor/github.com/pelletier/go-toml/tomltree_write.go",
    "content": "package toml\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"math\"\n\t\"math/big\"\n\t\"reflect\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n)\n\ntype valueComplexity int\n\nconst (\n\tvalueSimple valueComplexity = iota + 1\n\tvalueComplex\n)\n\ntype sortNode struct {\n\tkey        string\n\tcomplexity valueComplexity\n}\n\n// Encodes a string to a TOML-compliant multi-line string value\n// This function is a clone of the existing encodeTomlString function, except that whitespace characters\n// are preserved. Quotation marks and backslashes are also not escaped.\nfunc encodeMultilineTomlString(value string, commented string) string {\n\tvar b bytes.Buffer\n\tadjacentQuoteCount := 0\n\n\tb.WriteString(commented)\n\tfor i, rr := range value {\n\t\tif rr != '\"' {\n\t\t\tadjacentQuoteCount = 0\n\t\t} else {\n\t\t\tadjacentQuoteCount++\n\t\t}\n\t\tswitch rr {\n\t\tcase '\\b':\n\t\t\tb.WriteString(`\\b`)\n\t\tcase '\\t':\n\t\t\tb.WriteString(\"\\t\")\n\t\tcase '\\n':\n\t\t\tb.WriteString(\"\\n\" + commented)\n\t\tcase '\\f':\n\t\t\tb.WriteString(`\\f`)\n\t\tcase '\\r':\n\t\t\tb.WriteString(\"\\r\")\n\t\tcase '\"':\n\t\t\tif adjacentQuoteCount >= 3 || i == len(value)-1 {\n\t\t\t\tadjacentQuoteCount = 0\n\t\t\t\tb.WriteString(`\\\"`)\n\t\t\t} else {\n\t\t\t\tb.WriteString(`\"`)\n\t\t\t}\n\t\tcase '\\\\':\n\t\t\tb.WriteString(`\\`)\n\t\tdefault:\n\t\t\tintRr := uint16(rr)\n\t\t\tif intRr < 0x001F {\n\t\t\t\tb.WriteString(fmt.Sprintf(\"\\\\u%0.4X\", intRr))\n\t\t\t} else {\n\t\t\t\tb.WriteRune(rr)\n\t\t\t}\n\t\t}\n\t}\n\treturn b.String()\n}\n\n// Encodes a string to a TOML-compliant string value\nfunc encodeTomlString(value string) string {\n\tvar b bytes.Buffer\n\n\tfor _, rr := range value {\n\t\tswitch rr {\n\t\tcase '\\b':\n\t\t\tb.WriteString(`\\b`)\n\t\tcase '\\t':\n\t\t\tb.WriteString(`\\t`)\n\t\tcase '\\n':\n\t\t\tb.WriteString(`\\n`)\n\t\tcase '\\f':\n\t\t\tb.WriteString(`\\f`)\n\t\tcase '\\r':\n\t\t\tb.WriteString(`\\r`)\n\t\tcase '\"':\n\t\t\tb.WriteString(`\\\"`)\n\t\tcase '\\\\':\n\t\t\tb.WriteString(`\\\\`)\n\t\tdefault:\n\t\t\tintRr := uint16(rr)\n\t\t\tif intRr < 0x001F {\n\t\t\t\tb.WriteString(fmt.Sprintf(\"\\\\u%0.4X\", intRr))\n\t\t\t} else {\n\t\t\t\tb.WriteRune(rr)\n\t\t\t}\n\t\t}\n\t}\n\treturn b.String()\n}\n\nfunc tomlTreeStringRepresentation(t *Tree, ord MarshalOrder) (string, error) {\n\tvar orderedVals []sortNode\n\tswitch ord {\n\tcase OrderPreserve:\n\t\torderedVals = sortByLines(t)\n\tdefault:\n\t\torderedVals = sortAlphabetical(t)\n\t}\n\n\tvar values []string\n\tfor _, node := range orderedVals {\n\t\tk := node.key\n\t\tv := t.values[k]\n\n\t\trepr, err := tomlValueStringRepresentation(v, \"\", \"\", ord, false)\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t\tvalues = append(values, quoteKeyIfNeeded(k)+\" = \"+repr)\n\t}\n\treturn \"{ \" + strings.Join(values, \", \") + \" }\", nil\n}\n\nfunc tomlValueStringRepresentation(v interface{}, commented string, indent string, ord MarshalOrder, arraysOneElementPerLine bool) (string, error) {\n\t// this interface check is added to dereference the change made in the writeTo function.\n\t// That change was made to allow this function to see formatting options.\n\ttv, ok := v.(*tomlValue)\n\tif ok {\n\t\tv = tv.value\n\t} else {\n\t\ttv = &tomlValue{}\n\t}\n\n\tswitch value := v.(type) {\n\tcase uint64:\n\t\treturn strconv.FormatUint(value, 10), nil\n\tcase int64:\n\t\treturn strconv.FormatInt(value, 10), nil\n\tcase float64:\n\t\t// Default bit length is full 64\n\t\tbits := 64\n\t\t// Float panics if nan is used\n\t\tif !math.IsNaN(value) {\n\t\t\t// if 32 bit accuracy is enough to exactly show, use 32\n\t\t\t_, acc := big.NewFloat(value).Float32()\n\t\t\tif acc == big.Exact {\n\t\t\t\tbits = 32\n\t\t\t}\n\t\t}\n\t\tif math.Trunc(value) == value {\n\t\t\treturn strings.ToLower(strconv.FormatFloat(value, 'f', 1, bits)), nil\n\t\t}\n\t\treturn strings.ToLower(strconv.FormatFloat(value, 'f', -1, bits)), nil\n\tcase string:\n\t\tif tv.multiline {\n\t\t\tif tv.literal {\n\t\t\t\tb := strings.Builder{}\n\t\t\t\tb.WriteString(\"'''\\n\")\n\t\t\t\tb.Write([]byte(value))\n\t\t\t\tb.WriteString(\"\\n'''\")\n\t\t\t\treturn b.String(), nil\n\t\t\t} else {\n\t\t\t\treturn \"\\\"\\\"\\\"\\n\" + encodeMultilineTomlString(value, commented) + \"\\\"\\\"\\\"\", nil\n\t\t\t}\n\t\t}\n\t\treturn \"\\\"\" + encodeTomlString(value) + \"\\\"\", nil\n\tcase []byte:\n\t\tb, _ := v.([]byte)\n\t\treturn string(b), nil\n\tcase bool:\n\t\tif value {\n\t\t\treturn \"true\", nil\n\t\t}\n\t\treturn \"false\", nil\n\tcase time.Time:\n\t\treturn value.Format(time.RFC3339), nil\n\tcase LocalDate:\n\t\treturn value.String(), nil\n\tcase LocalDateTime:\n\t\treturn value.String(), nil\n\tcase LocalTime:\n\t\treturn value.String(), nil\n\tcase *Tree:\n\t\treturn tomlTreeStringRepresentation(value, ord)\n\tcase nil:\n\t\treturn \"\", nil\n\t}\n\n\trv := reflect.ValueOf(v)\n\n\tif rv.Kind() == reflect.Slice {\n\t\tvar values []string\n\t\tfor i := 0; i < rv.Len(); i++ {\n\t\t\titem := rv.Index(i).Interface()\n\t\t\titemRepr, err := tomlValueStringRepresentation(item, commented, indent, ord, arraysOneElementPerLine)\n\t\t\tif err != nil {\n\t\t\t\treturn \"\", err\n\t\t\t}\n\t\t\tvalues = append(values, itemRepr)\n\t\t}\n\t\tif arraysOneElementPerLine && len(values) > 1 {\n\t\t\tstringBuffer := bytes.Buffer{}\n\t\t\tvalueIndent := indent + `  ` // TODO: move that to a shared encoder state\n\n\t\t\tstringBuffer.WriteString(\"[\\n\")\n\n\t\t\tfor _, value := range values {\n\t\t\t\tstringBuffer.WriteString(valueIndent)\n\t\t\t\tstringBuffer.WriteString(commented + value)\n\t\t\t\tstringBuffer.WriteString(`,`)\n\t\t\t\tstringBuffer.WriteString(\"\\n\")\n\t\t\t}\n\n\t\t\tstringBuffer.WriteString(indent + commented + \"]\")\n\n\t\t\treturn stringBuffer.String(), nil\n\t\t}\n\t\treturn \"[\" + strings.Join(values, \", \") + \"]\", nil\n\t}\n\treturn \"\", fmt.Errorf(\"unsupported value type %T: %v\", v, v)\n}\n\nfunc getTreeArrayLine(trees []*Tree) (line int) {\n\t// Prevent returning 0 for empty trees\n\tline = int(^uint(0) >> 1)\n\t// get lowest line number >= 0\n\tfor _, tv := range trees {\n\t\tif tv.position.Line < line || line == 0 {\n\t\t\tline = tv.position.Line\n\t\t}\n\t}\n\treturn\n}\n\nfunc sortByLines(t *Tree) (vals []sortNode) {\n\tvar (\n\t\tline  int\n\t\tlines []int\n\t\ttv    *Tree\n\t\ttom   *tomlValue\n\t\tnode  sortNode\n\t)\n\tvals = make([]sortNode, 0)\n\tm := make(map[int]sortNode)\n\n\tfor k := range t.values {\n\t\tv := t.values[k]\n\t\tswitch v.(type) {\n\t\tcase *Tree:\n\t\t\ttv = v.(*Tree)\n\t\t\tline = tv.position.Line\n\t\t\tnode = sortNode{key: k, complexity: valueComplex}\n\t\tcase []*Tree:\n\t\t\tline = getTreeArrayLine(v.([]*Tree))\n\t\t\tnode = sortNode{key: k, complexity: valueComplex}\n\t\tdefault:\n\t\t\ttom = v.(*tomlValue)\n\t\t\tline = tom.position.Line\n\t\t\tnode = sortNode{key: k, complexity: valueSimple}\n\t\t}\n\t\tlines = append(lines, line)\n\t\tvals = append(vals, node)\n\t\tm[line] = node\n\t}\n\tsort.Ints(lines)\n\n\tfor i, line := range lines {\n\t\tvals[i] = m[line]\n\t}\n\n\treturn vals\n}\n\nfunc sortAlphabetical(t *Tree) (vals []sortNode) {\n\tvar (\n\t\tnode     sortNode\n\t\tsimpVals []string\n\t\tcompVals []string\n\t)\n\tvals = make([]sortNode, 0)\n\tm := make(map[string]sortNode)\n\n\tfor k := range t.values {\n\t\tv := t.values[k]\n\t\tswitch v.(type) {\n\t\tcase *Tree, []*Tree:\n\t\t\tnode = sortNode{key: k, complexity: valueComplex}\n\t\t\tcompVals = append(compVals, node.key)\n\t\tdefault:\n\t\t\tnode = sortNode{key: k, complexity: valueSimple}\n\t\t\tsimpVals = append(simpVals, node.key)\n\t\t}\n\t\tvals = append(vals, node)\n\t\tm[node.key] = node\n\t}\n\n\t// Simples first to match previous implementation\n\tsort.Strings(simpVals)\n\ti := 0\n\tfor _, key := range simpVals {\n\t\tvals[i] = m[key]\n\t\ti++\n\t}\n\n\tsort.Strings(compVals)\n\tfor _, key := range compVals {\n\t\tvals[i] = m[key]\n\t\ti++\n\t}\n\n\treturn vals\n}\n\nfunc (t *Tree) writeTo(w io.Writer, indent, keyspace string, bytesCount int64, arraysOneElementPerLine bool) (int64, error) {\n\treturn t.writeToOrdered(w, indent, keyspace, bytesCount, arraysOneElementPerLine, OrderAlphabetical, \"  \", false, false)\n}\n\nfunc (t *Tree) writeToOrdered(w io.Writer, indent, keyspace string, bytesCount int64, arraysOneElementPerLine bool, ord MarshalOrder, indentString string, compactComments, parentCommented bool) (int64, error) {\n\tvar orderedVals []sortNode\n\n\tswitch ord {\n\tcase OrderPreserve:\n\t\torderedVals = sortByLines(t)\n\tdefault:\n\t\torderedVals = sortAlphabetical(t)\n\t}\n\n\tfor _, node := range orderedVals {\n\t\tswitch node.complexity {\n\t\tcase valueComplex:\n\t\t\tk := node.key\n\t\t\tv := t.values[k]\n\n\t\t\tcombinedKey := quoteKeyIfNeeded(k)\n\t\t\tif keyspace != \"\" {\n\t\t\t\tcombinedKey = keyspace + \".\" + combinedKey\n\t\t\t}\n\n\t\t\tswitch node := v.(type) {\n\t\t\t// node has to be of those two types given how keys are sorted above\n\t\t\tcase *Tree:\n\t\t\t\ttv, ok := t.values[k].(*Tree)\n\t\t\t\tif !ok {\n\t\t\t\t\treturn bytesCount, fmt.Errorf(\"invalid value type at %s: %T\", k, t.values[k])\n\t\t\t\t}\n\t\t\t\tif tv.comment != \"\" {\n\t\t\t\t\tcomment := strings.Replace(tv.comment, \"\\n\", \"\\n\"+indent+\"#\", -1)\n\t\t\t\t\tstart := \"# \"\n\t\t\t\t\tif strings.HasPrefix(comment, \"#\") {\n\t\t\t\t\t\tstart = \"\"\n\t\t\t\t\t}\n\t\t\t\t\twrittenBytesCountComment, errc := writeStrings(w, \"\\n\", indent, start, comment)\n\t\t\t\t\tbytesCount += int64(writtenBytesCountComment)\n\t\t\t\t\tif errc != nil {\n\t\t\t\t\t\treturn bytesCount, errc\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvar commented string\n\t\t\t\tif parentCommented || t.commented || tv.commented {\n\t\t\t\t\tcommented = \"# \"\n\t\t\t\t}\n\t\t\t\twrittenBytesCount, err := writeStrings(w, \"\\n\", indent, commented, \"[\", combinedKey, \"]\\n\")\n\t\t\t\tbytesCount += int64(writtenBytesCount)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn bytesCount, err\n\t\t\t\t}\n\t\t\t\tbytesCount, err = node.writeToOrdered(w, indent+indentString, combinedKey, bytesCount, arraysOneElementPerLine, ord, indentString, compactComments, parentCommented || t.commented || tv.commented)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn bytesCount, err\n\t\t\t\t}\n\t\t\tcase []*Tree:\n\t\t\t\tfor _, subTree := range node {\n\t\t\t\t\tvar commented string\n\t\t\t\t\tif parentCommented || t.commented || subTree.commented {\n\t\t\t\t\t\tcommented = \"# \"\n\t\t\t\t\t}\n\t\t\t\t\twrittenBytesCount, err := writeStrings(w, \"\\n\", indent, commented, \"[[\", combinedKey, \"]]\\n\")\n\t\t\t\t\tbytesCount += int64(writtenBytesCount)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn bytesCount, err\n\t\t\t\t\t}\n\n\t\t\t\t\tbytesCount, err = subTree.writeToOrdered(w, indent+indentString, combinedKey, bytesCount, arraysOneElementPerLine, ord, indentString, compactComments, parentCommented || t.commented || subTree.commented)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn bytesCount, err\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\tdefault: // Simple\n\t\t\tk := node.key\n\t\t\tv, ok := t.values[k].(*tomlValue)\n\t\t\tif !ok {\n\t\t\t\treturn bytesCount, fmt.Errorf(\"invalid value type at %s: %T\", k, t.values[k])\n\t\t\t}\n\n\t\t\tvar commented string\n\t\t\tif parentCommented || t.commented || v.commented {\n\t\t\t\tcommented = \"# \"\n\t\t\t}\n\t\t\trepr, err := tomlValueStringRepresentation(v, commented, indent, ord, arraysOneElementPerLine)\n\t\t\tif err != nil {\n\t\t\t\treturn bytesCount, err\n\t\t\t}\n\n\t\t\tif v.comment != \"\" {\n\t\t\t\tcomment := strings.Replace(v.comment, \"\\n\", \"\\n\"+indent+\"#\", -1)\n\t\t\t\tstart := \"# \"\n\t\t\t\tif strings.HasPrefix(comment, \"#\") {\n\t\t\t\t\tstart = \"\"\n\t\t\t\t}\n\t\t\t\tif !compactComments {\n\t\t\t\t\twrittenBytesCountComment, errc := writeStrings(w, \"\\n\")\n\t\t\t\t\tbytesCount += int64(writtenBytesCountComment)\n\t\t\t\t\tif errc != nil {\n\t\t\t\t\t\treturn bytesCount, errc\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\twrittenBytesCountComment, errc := writeStrings(w, indent, start, comment, \"\\n\")\n\t\t\t\tbytesCount += int64(writtenBytesCountComment)\n\t\t\t\tif errc != nil {\n\t\t\t\t\treturn bytesCount, errc\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tquotedKey := quoteKeyIfNeeded(k)\n\t\t\twrittenBytesCount, err := writeStrings(w, indent, commented, quotedKey, \" = \", repr, \"\\n\")\n\t\t\tbytesCount += int64(writtenBytesCount)\n\t\t\tif err != nil {\n\t\t\t\treturn bytesCount, err\n\t\t\t}\n\t\t}\n\t}\n\n\treturn bytesCount, nil\n}\n\n// quote a key if it does not fit the bare key format (A-Za-z0-9_-)\n// quoted keys use the same rules as strings\nfunc quoteKeyIfNeeded(k string) string {\n\t// when encoding a map with the 'quoteMapKeys' option enabled, the tree will contain\n\t// keys that have already been quoted.\n\t// not an ideal situation, but good enough of a stop gap.\n\tif len(k) >= 2 && k[0] == '\"' && k[len(k)-1] == '\"' {\n\t\treturn k\n\t}\n\tisBare := true\n\tfor _, r := range k {\n\t\tif !isValidBareChar(r) {\n\t\t\tisBare = false\n\t\t\tbreak\n\t\t}\n\t}\n\tif isBare {\n\t\treturn k\n\t}\n\treturn quoteKey(k)\n}\n\nfunc quoteKey(k string) string {\n\treturn \"\\\"\" + encodeTomlString(k) + \"\\\"\"\n}\n\nfunc writeStrings(w io.Writer, s ...string) (int, error) {\n\tvar n int\n\tfor i := range s {\n\t\tb, err := io.WriteString(w, s[i])\n\t\tn += b\n\t\tif err != nil {\n\t\t\treturn n, err\n\t\t}\n\t}\n\treturn n, nil\n}\n\n// WriteTo encode the Tree as Toml and writes it to the writer w.\n// Returns the number of bytes written in case of success, or an error if anything happened.\nfunc (t *Tree) WriteTo(w io.Writer) (int64, error) {\n\treturn t.writeTo(w, \"\", \"\", 0, false)\n}\n\n// ToTomlString generates a human-readable representation of the current tree.\n// Output spans multiple lines, and is suitable for ingest by a TOML parser.\n// If the conversion cannot be performed, ToString returns a non-nil error.\nfunc (t *Tree) ToTomlString() (string, error) {\n\tb, err := t.Marshal()\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\treturn string(b), nil\n}\n\n// String generates a human-readable representation of the current tree.\n// Alias of ToString. Present to implement the fmt.Stringer interface.\nfunc (t *Tree) String() string {\n\tresult, _ := t.ToTomlString()\n\treturn result\n}\n\n// ToMap recursively generates a representation of the tree using Go built-in structures.\n// The following types are used:\n//\n//\t* bool\n//\t* float64\n//\t* int64\n//\t* string\n//\t* uint64\n//\t* time.Time\n//\t* map[string]interface{} (where interface{} is any of this list)\n//\t* []interface{} (where interface{} is any of this list)\nfunc (t *Tree) ToMap() map[string]interface{} {\n\tresult := map[string]interface{}{}\n\n\tfor k, v := range t.values {\n\t\tswitch node := v.(type) {\n\t\tcase []*Tree:\n\t\t\tvar array []interface{}\n\t\t\tfor _, item := range node {\n\t\t\t\tarray = append(array, item.ToMap())\n\t\t\t}\n\t\t\tresult[k] = array\n\t\tcase *Tree:\n\t\t\tresult[k] = node.ToMap()\n\t\tcase *tomlValue:\n\t\t\tresult[k] = tomlValueToGo(node.value)\n\t\t}\n\t}\n\treturn result\n}\n\nfunc tomlValueToGo(v interface{}) interface{} {\n\tif tree, ok := v.(*Tree); ok {\n\t\treturn tree.ToMap()\n\t}\n\n\trv := reflect.ValueOf(v)\n\n\tif rv.Kind() != reflect.Slice {\n\t\treturn v\n\t}\n\tvalues := make([]interface{}, rv.Len())\n\tfor i := 0; i < rv.Len(); i++ {\n\t\titem := rv.Index(i).Interface()\n\t\tvalues[i] = tomlValueToGo(item)\n\t}\n\treturn values\n}\n"
  },
  {
    "path": "vendor/github.com/pelletier/go-toml/tomltree_writepub.go",
    "content": "package toml\n\n// ValueStringRepresentation transforms an interface{} value into its toml string representation.\nfunc ValueStringRepresentation(v interface{}, commented string, indent string, ord MarshalOrder, arraysOneElementPerLine bool) (string, error) {\n\treturn tomlValueStringRepresentation(v, commented, indent, ord, arraysOneElementPerLine)\n}\n"
  },
  {
    "path": "vendor/github.com/pmezard/go-difflib/LICENSE",
    "content": "Copyright (c) 2013, Patrick Mezard\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n    Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n    Redistributions in binary form must reproduce the above copyright\nnotice, this list of conditions and the following disclaimer in the\ndocumentation and/or other materials provided with the distribution.\n    The names of its contributors may not be used to endorse or promote\nproducts derived from this software without specific prior written\npermission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS\nIS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED\nTO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A\nPARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nHOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\nTO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\nPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\nLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\nNEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
  },
  {
    "path": "vendor/github.com/pmezard/go-difflib/difflib/difflib.go",
    "content": "// Package difflib is a partial port of Python difflib module.\n//\n// It provides tools to compare sequences of strings and generate textual diffs.\n//\n// The following class and functions have been ported:\n//\n// - SequenceMatcher\n//\n// - unified_diff\n//\n// - context_diff\n//\n// Getting unified diffs was the main goal of the port. Keep in mind this code\n// is mostly suitable to output text differences in a human friendly way, there\n// are no guarantees generated diffs are consumable by patch(1).\npackage difflib\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"strings\"\n)\n\nfunc min(a, b int) int {\n\tif a < b {\n\t\treturn a\n\t}\n\treturn b\n}\n\nfunc max(a, b int) int {\n\tif a > b {\n\t\treturn a\n\t}\n\treturn b\n}\n\nfunc calculateRatio(matches, length int) float64 {\n\tif length > 0 {\n\t\treturn 2.0 * float64(matches) / float64(length)\n\t}\n\treturn 1.0\n}\n\ntype Match struct {\n\tA    int\n\tB    int\n\tSize int\n}\n\ntype OpCode struct {\n\tTag byte\n\tI1  int\n\tI2  int\n\tJ1  int\n\tJ2  int\n}\n\n// SequenceMatcher compares sequence of strings. The basic\n// algorithm predates, and is a little fancier than, an algorithm\n// published in the late 1980's by Ratcliff and Obershelp under the\n// hyperbolic name \"gestalt pattern matching\".  The basic idea is to find\n// the longest contiguous matching subsequence that contains no \"junk\"\n// elements (R-O doesn't address junk).  The same idea is then applied\n// recursively to the pieces of the sequences to the left and to the right\n// of the matching subsequence.  This does not yield minimal edit\n// sequences, but does tend to yield matches that \"look right\" to people.\n//\n// SequenceMatcher tries to compute a \"human-friendly diff\" between two\n// sequences.  Unlike e.g. UNIX(tm) diff, the fundamental notion is the\n// longest *contiguous* & junk-free matching subsequence.  That's what\n// catches peoples' eyes.  The Windows(tm) windiff has another interesting\n// notion, pairing up elements that appear uniquely in each sequence.\n// That, and the method here, appear to yield more intuitive difference\n// reports than does diff.  This method appears to be the least vulnerable\n// to synching up on blocks of \"junk lines\", though (like blank lines in\n// ordinary text files, or maybe \"<P>\" lines in HTML files).  That may be\n// because this is the only method of the 3 that has a *concept* of\n// \"junk\" <wink>.\n//\n// Timing:  Basic R-O is cubic time worst case and quadratic time expected\n// case.  SequenceMatcher is quadratic time for the worst case and has\n// expected-case behavior dependent in a complicated way on how many\n// elements the sequences have in common; best case time is linear.\ntype SequenceMatcher struct {\n\ta              []string\n\tb              []string\n\tb2j            map[string][]int\n\tIsJunk         func(string) bool\n\tautoJunk       bool\n\tbJunk          map[string]struct{}\n\tmatchingBlocks []Match\n\tfullBCount     map[string]int\n\tbPopular       map[string]struct{}\n\topCodes        []OpCode\n}\n\nfunc NewMatcher(a, b []string) *SequenceMatcher {\n\tm := SequenceMatcher{autoJunk: true}\n\tm.SetSeqs(a, b)\n\treturn &m\n}\n\nfunc NewMatcherWithJunk(a, b []string, autoJunk bool,\n\tisJunk func(string) bool) *SequenceMatcher {\n\n\tm := SequenceMatcher{IsJunk: isJunk, autoJunk: autoJunk}\n\tm.SetSeqs(a, b)\n\treturn &m\n}\n\n// Set two sequences to be compared.\nfunc (m *SequenceMatcher) SetSeqs(a, b []string) {\n\tm.SetSeq1(a)\n\tm.SetSeq2(b)\n}\n\n// Set the first sequence to be compared. The second sequence to be compared is\n// not changed.\n//\n// SequenceMatcher computes and caches detailed information about the second\n// sequence, so if you want to compare one sequence S against many sequences,\n// use .SetSeq2(s) once and call .SetSeq1(x) repeatedly for each of the other\n// sequences.\n//\n// See also SetSeqs() and SetSeq2().\nfunc (m *SequenceMatcher) SetSeq1(a []string) {\n\tif &a == &m.a {\n\t\treturn\n\t}\n\tm.a = a\n\tm.matchingBlocks = nil\n\tm.opCodes = nil\n}\n\n// Set the second sequence to be compared. The first sequence to be compared is\n// not changed.\nfunc (m *SequenceMatcher) SetSeq2(b []string) {\n\tif &b == &m.b {\n\t\treturn\n\t}\n\tm.b = b\n\tm.matchingBlocks = nil\n\tm.opCodes = nil\n\tm.fullBCount = nil\n\tm.chainB()\n}\n\nfunc (m *SequenceMatcher) chainB() {\n\t// Populate line -> index mapping\n\tb2j := map[string][]int{}\n\tfor i, s := range m.b {\n\t\tindices := b2j[s]\n\t\tindices = append(indices, i)\n\t\tb2j[s] = indices\n\t}\n\n\t// Purge junk elements\n\tm.bJunk = map[string]struct{}{}\n\tif m.IsJunk != nil {\n\t\tjunk := m.bJunk\n\t\tfor s, _ := range b2j {\n\t\t\tif m.IsJunk(s) {\n\t\t\t\tjunk[s] = struct{}{}\n\t\t\t}\n\t\t}\n\t\tfor s, _ := range junk {\n\t\t\tdelete(b2j, s)\n\t\t}\n\t}\n\n\t// Purge remaining popular elements\n\tpopular := map[string]struct{}{}\n\tn := len(m.b)\n\tif m.autoJunk && n >= 200 {\n\t\tntest := n/100 + 1\n\t\tfor s, indices := range b2j {\n\t\t\tif len(indices) > ntest {\n\t\t\t\tpopular[s] = struct{}{}\n\t\t\t}\n\t\t}\n\t\tfor s, _ := range popular {\n\t\t\tdelete(b2j, s)\n\t\t}\n\t}\n\tm.bPopular = popular\n\tm.b2j = b2j\n}\n\nfunc (m *SequenceMatcher) isBJunk(s string) bool {\n\t_, ok := m.bJunk[s]\n\treturn ok\n}\n\n// Find longest matching block in a[alo:ahi] and b[blo:bhi].\n//\n// If IsJunk is not defined:\n//\n// Return (i,j,k) such that a[i:i+k] is equal to b[j:j+k], where\n//     alo <= i <= i+k <= ahi\n//     blo <= j <= j+k <= bhi\n// and for all (i',j',k') meeting those conditions,\n//     k >= k'\n//     i <= i'\n//     and if i == i', j <= j'\n//\n// In other words, of all maximal matching blocks, return one that\n// starts earliest in a, and of all those maximal matching blocks that\n// start earliest in a, return the one that starts earliest in b.\n//\n// If IsJunk is defined, first the longest matching block is\n// determined as above, but with the additional restriction that no\n// junk element appears in the block.  Then that block is extended as\n// far as possible by matching (only) junk elements on both sides.  So\n// the resulting block never matches on junk except as identical junk\n// happens to be adjacent to an \"interesting\" match.\n//\n// If no blocks match, return (alo, blo, 0).\nfunc (m *SequenceMatcher) findLongestMatch(alo, ahi, blo, bhi int) Match {\n\t// CAUTION:  stripping common prefix or suffix would be incorrect.\n\t// E.g.,\n\t//    ab\n\t//    acab\n\t// Longest matching block is \"ab\", but if common prefix is\n\t// stripped, it's \"a\" (tied with \"b\").  UNIX(tm) diff does so\n\t// strip, so ends up claiming that ab is changed to acab by\n\t// inserting \"ca\" in the middle.  That's minimal but unintuitive:\n\t// \"it's obvious\" that someone inserted \"ac\" at the front.\n\t// Windiff ends up at the same place as diff, but by pairing up\n\t// the unique 'b's and then matching the first two 'a's.\n\tbesti, bestj, bestsize := alo, blo, 0\n\n\t// find longest junk-free match\n\t// during an iteration of the loop, j2len[j] = length of longest\n\t// junk-free match ending with a[i-1] and b[j]\n\tj2len := map[int]int{}\n\tfor i := alo; i != ahi; i++ {\n\t\t// look at all instances of a[i] in b; note that because\n\t\t// b2j has no junk keys, the loop is skipped if a[i] is junk\n\t\tnewj2len := map[int]int{}\n\t\tfor _, j := range m.b2j[m.a[i]] {\n\t\t\t// a[i] matches b[j]\n\t\t\tif j < blo {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif j >= bhi {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tk := j2len[j-1] + 1\n\t\t\tnewj2len[j] = k\n\t\t\tif k > bestsize {\n\t\t\t\tbesti, bestj, bestsize = i-k+1, j-k+1, k\n\t\t\t}\n\t\t}\n\t\tj2len = newj2len\n\t}\n\n\t// Extend the best by non-junk elements on each end.  In particular,\n\t// \"popular\" non-junk elements aren't in b2j, which greatly speeds\n\t// the inner loop above, but also means \"the best\" match so far\n\t// doesn't contain any junk *or* popular non-junk elements.\n\tfor besti > alo && bestj > blo && !m.isBJunk(m.b[bestj-1]) &&\n\t\tm.a[besti-1] == m.b[bestj-1] {\n\t\tbesti, bestj, bestsize = besti-1, bestj-1, bestsize+1\n\t}\n\tfor besti+bestsize < ahi && bestj+bestsize < bhi &&\n\t\t!m.isBJunk(m.b[bestj+bestsize]) &&\n\t\tm.a[besti+bestsize] == m.b[bestj+bestsize] {\n\t\tbestsize += 1\n\t}\n\n\t// Now that we have a wholly interesting match (albeit possibly\n\t// empty!), we may as well suck up the matching junk on each\n\t// side of it too.  Can't think of a good reason not to, and it\n\t// saves post-processing the (possibly considerable) expense of\n\t// figuring out what to do with it.  In the case of an empty\n\t// interesting match, this is clearly the right thing to do,\n\t// because no other kind of match is possible in the regions.\n\tfor besti > alo && bestj > blo && m.isBJunk(m.b[bestj-1]) &&\n\t\tm.a[besti-1] == m.b[bestj-1] {\n\t\tbesti, bestj, bestsize = besti-1, bestj-1, bestsize+1\n\t}\n\tfor besti+bestsize < ahi && bestj+bestsize < bhi &&\n\t\tm.isBJunk(m.b[bestj+bestsize]) &&\n\t\tm.a[besti+bestsize] == m.b[bestj+bestsize] {\n\t\tbestsize += 1\n\t}\n\n\treturn Match{A: besti, B: bestj, Size: bestsize}\n}\n\n// Return list of triples describing matching subsequences.\n//\n// Each triple is of the form (i, j, n), and means that\n// a[i:i+n] == b[j:j+n].  The triples are monotonically increasing in\n// i and in j. It's also guaranteed that if (i, j, n) and (i', j', n') are\n// adjacent triples in the list, and the second is not the last triple in the\n// list, then i+n != i' or j+n != j'. IOW, adjacent triples never describe\n// adjacent equal blocks.\n//\n// The last triple is a dummy, (len(a), len(b), 0), and is the only\n// triple with n==0.\nfunc (m *SequenceMatcher) GetMatchingBlocks() []Match {\n\tif m.matchingBlocks != nil {\n\t\treturn m.matchingBlocks\n\t}\n\n\tvar matchBlocks func(alo, ahi, blo, bhi int, matched []Match) []Match\n\tmatchBlocks = func(alo, ahi, blo, bhi int, matched []Match) []Match {\n\t\tmatch := m.findLongestMatch(alo, ahi, blo, bhi)\n\t\ti, j, k := match.A, match.B, match.Size\n\t\tif match.Size > 0 {\n\t\t\tif alo < i && blo < j {\n\t\t\t\tmatched = matchBlocks(alo, i, blo, j, matched)\n\t\t\t}\n\t\t\tmatched = append(matched, match)\n\t\t\tif i+k < ahi && j+k < bhi {\n\t\t\t\tmatched = matchBlocks(i+k, ahi, j+k, bhi, matched)\n\t\t\t}\n\t\t}\n\t\treturn matched\n\t}\n\tmatched := matchBlocks(0, len(m.a), 0, len(m.b), nil)\n\n\t// It's possible that we have adjacent equal blocks in the\n\t// matching_blocks list now.\n\tnonAdjacent := []Match{}\n\ti1, j1, k1 := 0, 0, 0\n\tfor _, b := range matched {\n\t\t// Is this block adjacent to i1, j1, k1?\n\t\ti2, j2, k2 := b.A, b.B, b.Size\n\t\tif i1+k1 == i2 && j1+k1 == j2 {\n\t\t\t// Yes, so collapse them -- this just increases the length of\n\t\t\t// the first block by the length of the second, and the first\n\t\t\t// block so lengthened remains the block to compare against.\n\t\t\tk1 += k2\n\t\t} else {\n\t\t\t// Not adjacent.  Remember the first block (k1==0 means it's\n\t\t\t// the dummy we started with), and make the second block the\n\t\t\t// new block to compare against.\n\t\t\tif k1 > 0 {\n\t\t\t\tnonAdjacent = append(nonAdjacent, Match{i1, j1, k1})\n\t\t\t}\n\t\t\ti1, j1, k1 = i2, j2, k2\n\t\t}\n\t}\n\tif k1 > 0 {\n\t\tnonAdjacent = append(nonAdjacent, Match{i1, j1, k1})\n\t}\n\n\tnonAdjacent = append(nonAdjacent, Match{len(m.a), len(m.b), 0})\n\tm.matchingBlocks = nonAdjacent\n\treturn m.matchingBlocks\n}\n\n// Return list of 5-tuples describing how to turn a into b.\n//\n// Each tuple is of the form (tag, i1, i2, j1, j2).  The first tuple\n// has i1 == j1 == 0, and remaining tuples have i1 == the i2 from the\n// tuple preceding it, and likewise for j1 == the previous j2.\n//\n// The tags are characters, with these meanings:\n//\n// 'r' (replace):  a[i1:i2] should be replaced by b[j1:j2]\n//\n// 'd' (delete):   a[i1:i2] should be deleted, j1==j2 in this case.\n//\n// 'i' (insert):   b[j1:j2] should be inserted at a[i1:i1], i1==i2 in this case.\n//\n// 'e' (equal):    a[i1:i2] == b[j1:j2]\nfunc (m *SequenceMatcher) GetOpCodes() []OpCode {\n\tif m.opCodes != nil {\n\t\treturn m.opCodes\n\t}\n\ti, j := 0, 0\n\tmatching := m.GetMatchingBlocks()\n\topCodes := make([]OpCode, 0, len(matching))\n\tfor _, m := range matching {\n\t\t//  invariant:  we've pumped out correct diffs to change\n\t\t//  a[:i] into b[:j], and the next matching block is\n\t\t//  a[ai:ai+size] == b[bj:bj+size]. So we need to pump\n\t\t//  out a diff to change a[i:ai] into b[j:bj], pump out\n\t\t//  the matching block, and move (i,j) beyond the match\n\t\tai, bj, size := m.A, m.B, m.Size\n\t\ttag := byte(0)\n\t\tif i < ai && j < bj {\n\t\t\ttag = 'r'\n\t\t} else if i < ai {\n\t\t\ttag = 'd'\n\t\t} else if j < bj {\n\t\t\ttag = 'i'\n\t\t}\n\t\tif tag > 0 {\n\t\t\topCodes = append(opCodes, OpCode{tag, i, ai, j, bj})\n\t\t}\n\t\ti, j = ai+size, bj+size\n\t\t// the list of matching blocks is terminated by a\n\t\t// sentinel with size 0\n\t\tif size > 0 {\n\t\t\topCodes = append(opCodes, OpCode{'e', ai, i, bj, j})\n\t\t}\n\t}\n\tm.opCodes = opCodes\n\treturn m.opCodes\n}\n\n// Isolate change clusters by eliminating ranges with no changes.\n//\n// Return a generator of groups with up to n lines of context.\n// Each group is in the same format as returned by GetOpCodes().\nfunc (m *SequenceMatcher) GetGroupedOpCodes(n int) [][]OpCode {\n\tif n < 0 {\n\t\tn = 3\n\t}\n\tcodes := m.GetOpCodes()\n\tif len(codes) == 0 {\n\t\tcodes = []OpCode{OpCode{'e', 0, 1, 0, 1}}\n\t}\n\t// Fixup leading and trailing groups if they show no changes.\n\tif codes[0].Tag == 'e' {\n\t\tc := codes[0]\n\t\ti1, i2, j1, j2 := c.I1, c.I2, c.J1, c.J2\n\t\tcodes[0] = OpCode{c.Tag, max(i1, i2-n), i2, max(j1, j2-n), j2}\n\t}\n\tif codes[len(codes)-1].Tag == 'e' {\n\t\tc := codes[len(codes)-1]\n\t\ti1, i2, j1, j2 := c.I1, c.I2, c.J1, c.J2\n\t\tcodes[len(codes)-1] = OpCode{c.Tag, i1, min(i2, i1+n), j1, min(j2, j1+n)}\n\t}\n\tnn := n + n\n\tgroups := [][]OpCode{}\n\tgroup := []OpCode{}\n\tfor _, c := range codes {\n\t\ti1, i2, j1, j2 := c.I1, c.I2, c.J1, c.J2\n\t\t// End the current group and start a new one whenever\n\t\t// there is a large range with no changes.\n\t\tif c.Tag == 'e' && i2-i1 > nn {\n\t\t\tgroup = append(group, OpCode{c.Tag, i1, min(i2, i1+n),\n\t\t\t\tj1, min(j2, j1+n)})\n\t\t\tgroups = append(groups, group)\n\t\t\tgroup = []OpCode{}\n\t\t\ti1, j1 = max(i1, i2-n), max(j1, j2-n)\n\t\t}\n\t\tgroup = append(group, OpCode{c.Tag, i1, i2, j1, j2})\n\t}\n\tif len(group) > 0 && !(len(group) == 1 && group[0].Tag == 'e') {\n\t\tgroups = append(groups, group)\n\t}\n\treturn groups\n}\n\n// Return a measure of the sequences' similarity (float in [0,1]).\n//\n// Where T is the total number of elements in both sequences, and\n// M is the number of matches, this is 2.0*M / T.\n// Note that this is 1 if the sequences are identical, and 0 if\n// they have nothing in common.\n//\n// .Ratio() is expensive to compute if you haven't already computed\n// .GetMatchingBlocks() or .GetOpCodes(), in which case you may\n// want to try .QuickRatio() or .RealQuickRation() first to get an\n// upper bound.\nfunc (m *SequenceMatcher) Ratio() float64 {\n\tmatches := 0\n\tfor _, m := range m.GetMatchingBlocks() {\n\t\tmatches += m.Size\n\t}\n\treturn calculateRatio(matches, len(m.a)+len(m.b))\n}\n\n// Return an upper bound on ratio() relatively quickly.\n//\n// This isn't defined beyond that it is an upper bound on .Ratio(), and\n// is faster to compute.\nfunc (m *SequenceMatcher) QuickRatio() float64 {\n\t// viewing a and b as multisets, set matches to the cardinality\n\t// of their intersection; this counts the number of matches\n\t// without regard to order, so is clearly an upper bound\n\tif m.fullBCount == nil {\n\t\tm.fullBCount = map[string]int{}\n\t\tfor _, s := range m.b {\n\t\t\tm.fullBCount[s] = m.fullBCount[s] + 1\n\t\t}\n\t}\n\n\t// avail[x] is the number of times x appears in 'b' less the\n\t// number of times we've seen it in 'a' so far ... kinda\n\tavail := map[string]int{}\n\tmatches := 0\n\tfor _, s := range m.a {\n\t\tn, ok := avail[s]\n\t\tif !ok {\n\t\t\tn = m.fullBCount[s]\n\t\t}\n\t\tavail[s] = n - 1\n\t\tif n > 0 {\n\t\t\tmatches += 1\n\t\t}\n\t}\n\treturn calculateRatio(matches, len(m.a)+len(m.b))\n}\n\n// Return an upper bound on ratio() very quickly.\n//\n// This isn't defined beyond that it is an upper bound on .Ratio(), and\n// is faster to compute than either .Ratio() or .QuickRatio().\nfunc (m *SequenceMatcher) RealQuickRatio() float64 {\n\tla, lb := len(m.a), len(m.b)\n\treturn calculateRatio(min(la, lb), la+lb)\n}\n\n// Convert range to the \"ed\" format\nfunc formatRangeUnified(start, stop int) string {\n\t// Per the diff spec at http://www.unix.org/single_unix_specification/\n\tbeginning := start + 1 // lines start numbering with one\n\tlength := stop - start\n\tif length == 1 {\n\t\treturn fmt.Sprintf(\"%d\", beginning)\n\t}\n\tif length == 0 {\n\t\tbeginning -= 1 // empty ranges begin at line just before the range\n\t}\n\treturn fmt.Sprintf(\"%d,%d\", beginning, length)\n}\n\n// Unified diff parameters\ntype UnifiedDiff struct {\n\tA        []string // First sequence lines\n\tFromFile string   // First file name\n\tFromDate string   // First file time\n\tB        []string // Second sequence lines\n\tToFile   string   // Second file name\n\tToDate   string   // Second file time\n\tEol      string   // Headers end of line, defaults to LF\n\tContext  int      // Number of context lines\n}\n\n// Compare two sequences of lines; generate the delta as a unified diff.\n//\n// Unified diffs are a compact way of showing line changes and a few\n// lines of context.  The number of context lines is set by 'n' which\n// defaults to three.\n//\n// By default, the diff control lines (those with ---, +++, or @@) are\n// created with a trailing newline.  This is helpful so that inputs\n// created from file.readlines() result in diffs that are suitable for\n// file.writelines() since both the inputs and outputs have trailing\n// newlines.\n//\n// For inputs that do not have trailing newlines, set the lineterm\n// argument to \"\" so that the output will be uniformly newline free.\n//\n// The unidiff format normally has a header for filenames and modification\n// times.  Any or all of these may be specified using strings for\n// 'fromfile', 'tofile', 'fromfiledate', and 'tofiledate'.\n// The modification times are normally expressed in the ISO 8601 format.\nfunc WriteUnifiedDiff(writer io.Writer, diff UnifiedDiff) error {\n\tbuf := bufio.NewWriter(writer)\n\tdefer buf.Flush()\n\twf := func(format string, args ...interface{}) error {\n\t\t_, err := buf.WriteString(fmt.Sprintf(format, args...))\n\t\treturn err\n\t}\n\tws := func(s string) error {\n\t\t_, err := buf.WriteString(s)\n\t\treturn err\n\t}\n\n\tif len(diff.Eol) == 0 {\n\t\tdiff.Eol = \"\\n\"\n\t}\n\n\tstarted := false\n\tm := NewMatcher(diff.A, diff.B)\n\tfor _, g := range m.GetGroupedOpCodes(diff.Context) {\n\t\tif !started {\n\t\t\tstarted = true\n\t\t\tfromDate := \"\"\n\t\t\tif len(diff.FromDate) > 0 {\n\t\t\t\tfromDate = \"\\t\" + diff.FromDate\n\t\t\t}\n\t\t\ttoDate := \"\"\n\t\t\tif len(diff.ToDate) > 0 {\n\t\t\t\ttoDate = \"\\t\" + diff.ToDate\n\t\t\t}\n\t\t\tif diff.FromFile != \"\" || diff.ToFile != \"\" {\n\t\t\t\terr := wf(\"--- %s%s%s\", diff.FromFile, fromDate, diff.Eol)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\terr = wf(\"+++ %s%s%s\", diff.ToFile, toDate, diff.Eol)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfirst, last := g[0], g[len(g)-1]\n\t\trange1 := formatRangeUnified(first.I1, last.I2)\n\t\trange2 := formatRangeUnified(first.J1, last.J2)\n\t\tif err := wf(\"@@ -%s +%s @@%s\", range1, range2, diff.Eol); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfor _, c := range g {\n\t\t\ti1, i2, j1, j2 := c.I1, c.I2, c.J1, c.J2\n\t\t\tif c.Tag == 'e' {\n\t\t\t\tfor _, line := range diff.A[i1:i2] {\n\t\t\t\t\tif err := ws(\" \" + line); err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif c.Tag == 'r' || c.Tag == 'd' {\n\t\t\t\tfor _, line := range diff.A[i1:i2] {\n\t\t\t\t\tif err := ws(\"-\" + line); err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif c.Tag == 'r' || c.Tag == 'i' {\n\t\t\t\tfor _, line := range diff.B[j1:j2] {\n\t\t\t\t\tif err := ws(\"+\" + line); err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\n// Like WriteUnifiedDiff but returns the diff a string.\nfunc GetUnifiedDiffString(diff UnifiedDiff) (string, error) {\n\tw := &bytes.Buffer{}\n\terr := WriteUnifiedDiff(w, diff)\n\treturn string(w.Bytes()), err\n}\n\n// Convert range to the \"ed\" format.\nfunc formatRangeContext(start, stop int) string {\n\t// Per the diff spec at http://www.unix.org/single_unix_specification/\n\tbeginning := start + 1 // lines start numbering with one\n\tlength := stop - start\n\tif length == 0 {\n\t\tbeginning -= 1 // empty ranges begin at line just before the range\n\t}\n\tif length <= 1 {\n\t\treturn fmt.Sprintf(\"%d\", beginning)\n\t}\n\treturn fmt.Sprintf(\"%d,%d\", beginning, beginning+length-1)\n}\n\ntype ContextDiff UnifiedDiff\n\n// Compare two sequences of lines; generate the delta as a context diff.\n//\n// Context diffs are a compact way of showing line changes and a few\n// lines of context. The number of context lines is set by diff.Context\n// which defaults to three.\n//\n// By default, the diff control lines (those with *** or ---) are\n// created with a trailing newline.\n//\n// For inputs that do not have trailing newlines, set the diff.Eol\n// argument to \"\" so that the output will be uniformly newline free.\n//\n// The context diff format normally has a header for filenames and\n// modification times.  Any or all of these may be specified using\n// strings for diff.FromFile, diff.ToFile, diff.FromDate, diff.ToDate.\n// The modification times are normally expressed in the ISO 8601 format.\n// If not specified, the strings default to blanks.\nfunc WriteContextDiff(writer io.Writer, diff ContextDiff) error {\n\tbuf := bufio.NewWriter(writer)\n\tdefer buf.Flush()\n\tvar diffErr error\n\twf := func(format string, args ...interface{}) {\n\t\t_, err := buf.WriteString(fmt.Sprintf(format, args...))\n\t\tif diffErr == nil && err != nil {\n\t\t\tdiffErr = err\n\t\t}\n\t}\n\tws := func(s string) {\n\t\t_, err := buf.WriteString(s)\n\t\tif diffErr == nil && err != nil {\n\t\t\tdiffErr = err\n\t\t}\n\t}\n\n\tif len(diff.Eol) == 0 {\n\t\tdiff.Eol = \"\\n\"\n\t}\n\n\tprefix := map[byte]string{\n\t\t'i': \"+ \",\n\t\t'd': \"- \",\n\t\t'r': \"! \",\n\t\t'e': \"  \",\n\t}\n\n\tstarted := false\n\tm := NewMatcher(diff.A, diff.B)\n\tfor _, g := range m.GetGroupedOpCodes(diff.Context) {\n\t\tif !started {\n\t\t\tstarted = true\n\t\t\tfromDate := \"\"\n\t\t\tif len(diff.FromDate) > 0 {\n\t\t\t\tfromDate = \"\\t\" + diff.FromDate\n\t\t\t}\n\t\t\ttoDate := \"\"\n\t\t\tif len(diff.ToDate) > 0 {\n\t\t\t\ttoDate = \"\\t\" + diff.ToDate\n\t\t\t}\n\t\t\tif diff.FromFile != \"\" || diff.ToFile != \"\" {\n\t\t\t\twf(\"*** %s%s%s\", diff.FromFile, fromDate, diff.Eol)\n\t\t\t\twf(\"--- %s%s%s\", diff.ToFile, toDate, diff.Eol)\n\t\t\t}\n\t\t}\n\n\t\tfirst, last := g[0], g[len(g)-1]\n\t\tws(\"***************\" + diff.Eol)\n\n\t\trange1 := formatRangeContext(first.I1, last.I2)\n\t\twf(\"*** %s ****%s\", range1, diff.Eol)\n\t\tfor _, c := range g {\n\t\t\tif c.Tag == 'r' || c.Tag == 'd' {\n\t\t\t\tfor _, cc := range g {\n\t\t\t\t\tif cc.Tag == 'i' {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t\tfor _, line := range diff.A[cc.I1:cc.I2] {\n\t\t\t\t\t\tws(prefix[cc.Tag] + line)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\t\trange2 := formatRangeContext(first.J1, last.J2)\n\t\twf(\"--- %s ----%s\", range2, diff.Eol)\n\t\tfor _, c := range g {\n\t\t\tif c.Tag == 'r' || c.Tag == 'i' {\n\t\t\t\tfor _, cc := range g {\n\t\t\t\t\tif cc.Tag == 'd' {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t\tfor _, line := range diff.B[cc.J1:cc.J2] {\n\t\t\t\t\t\tws(prefix[cc.Tag] + line)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\treturn diffErr\n}\n\n// Like WriteContextDiff but returns the diff a string.\nfunc GetContextDiffString(diff ContextDiff) (string, error) {\n\tw := &bytes.Buffer{}\n\terr := WriteContextDiff(w, diff)\n\treturn string(w.Bytes()), err\n}\n\n// Split a string on \"\\n\" while preserving them. The output can be used\n// as input for UnifiedDiff and ContextDiff structures.\nfunc SplitLines(s string) []string {\n\tlines := strings.SplitAfter(s, \"\\n\")\n\tlines[len(lines)-1] += \"\\n\"\n\treturn lines\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/.gitignore",
    "content": "/testdata/fixtures/\n/fixtures\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/.golangci.yml",
    "content": "version: \"2\"\nlinters:\n  enable:\n    - errorlint\n    - forbidigo\n    - gocritic\n    - godot\n    - misspell\n    - revive\n    - testifylint\n  settings:\n    forbidigo:\n      forbid:\n        - pattern: ^fmt\\.Print.*$\n          msg: Do not commit print statements.\n    gocritic:\n      enable-all: true\n      disabled-checks:\n        - commentFormatting\n        - commentedOutCode\n        - deferInLoop\n        - filepathJoin\n        - hugeParam\n        - importShadow\n        - paramTypeCombine\n        - rangeValCopy\n        - tooManyResultsChecker\n        - unnamedResult\n        - whyNoLint\n    godot:\n      exclude:\n        # Ignore \"See: URL\".\n        - 'See:'\n      capital: true\n    misspell:\n      locale: US\n  exclusions:\n    presets:\n      - comments\n      - common-false-positives\n      - legacy\n      - std-error-handling\n    warn-unused: true\nformatters:\n  enable:\n    - gofmt\n    - goimports\n  settings:\n    goimports:\n      local-prefixes:\n        - github.com/prometheus/procfs\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/CODE_OF_CONDUCT.md",
    "content": "# Prometheus Community Code of Conduct\n\nPrometheus follows the [CNCF Code of Conduct](https://github.com/cncf/foundation/blob/main/code-of-conduct.md).\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/CONTRIBUTING.md",
    "content": "# Contributing\n\nPrometheus uses GitHub to manage reviews of pull requests.\n\n* If you are a new contributor see: [Steps to Contribute](#steps-to-contribute)\n\n* If you have a trivial fix or improvement, go ahead and create a pull request,\n  addressing (with `@...`) a suitable maintainer of this repository (see\n  [MAINTAINERS.md](MAINTAINERS.md)) in the description of the pull request.\n\n* If you plan to do something more involved, first discuss your ideas\n  on our [mailing list](https://groups.google.com/forum/?fromgroups#!forum/prometheus-developers).\n  This will avoid unnecessary work and surely give you and us a good deal\n  of inspiration. Also please see our [non-goals issue](https://github.com/prometheus/docs/issues/149) on areas that the Prometheus community doesn't plan to work on.\n\n* Relevant coding style guidelines are the [Go Code Review\n  Comments](https://code.google.com/p/go-wiki/wiki/CodeReviewComments)\n  and the _Formatting and style_ section of Peter Bourgon's [Go: Best\n  Practices for Production\n  Environments](https://peter.bourgon.org/go-in-production/#formatting-and-style).\n\n* Be sure to sign off on the [DCO](https://github.com/probot/dco#how-it-works)\n\n## Steps to Contribute\n\nShould you wish to work on an issue, please claim it first by commenting on the GitHub issue that you want to work on it. This is to prevent duplicated efforts from contributors on the same issue.\n\nPlease check the [`help-wanted`](https://github.com/prometheus/procfs/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22) label to find issues that are good for getting started. If you have questions about one of the issues, with or without the tag, please comment on them and one of the maintainers will clarify it. For a quicker response, contact us over [IRC](https://prometheus.io/community).\n\nFor quickly compiling and testing your changes do:\n```\nmake test         # Make sure all the tests pass before you commit and push :)\n```\n\nWe use [`golangci-lint`](https://github.com/golangci/golangci-lint) for linting the code. If it reports an issue and you think that the warning needs to be disregarded or is a false-positive, you can add a special comment `//nolint:linter1[,linter2,...]` before the offending line. Use this sparingly though, fixing the code to comply with the linter's recommendation is in general the preferred course of action.\n\n## Pull Request Checklist\n\n* Branch from the master branch and, if needed, rebase to the current master branch before submitting your pull request. If it doesn't merge cleanly with master you may be asked to rebase your changes.\n\n* Commits should be as small as possible, while ensuring that each commit is correct independently (i.e., each commit should compile and pass tests).\n\n* If your patch is not getting reviewed or you need a specific person to review it, you can @-reply a reviewer asking for a review in the pull request or a comment, or you can ask for a review on IRC channel [#prometheus](https://webchat.freenode.net/?channels=#prometheus) on irc.freenode.net (for the easiest start, [join via Riot](https://riot.im/app/#/room/#prometheus:matrix.org)).\n\n* Add tests relevant to the fixed bug or new feature.\n\n## Dependency management\n\nThe Prometheus project uses [Go modules](https://golang.org/cmd/go/#hdr-Modules__module_versions__and_more) to manage dependencies on external packages. This requires a working Go environment with version 1.12 or greater installed.\n\nAll dependencies are vendored in the `vendor/` directory.\n\nTo add or update a new dependency, use the `go get` command:\n\n```bash\n# Pick the latest tagged release.\ngo get example.com/some/module/pkg\n\n# Pick a specific version.\ngo get example.com/some/module/pkg@vX.Y.Z\n```\n\nTidy up the `go.mod` and `go.sum` files and copy the new/updated dependency to the `vendor/` directory:\n\n\n```bash\n# The GO111MODULE variable can be omitted when the code isn't located in GOPATH.\nGO111MODULE=on go mod tidy\n\nGO111MODULE=on go mod vendor\n```\n\nYou have to commit the changes to `go.mod`, `go.sum` and the `vendor/` directory before submitting the pull request.\n\n\n## API Implementation Guidelines\n\n### Naming and Documentation\n\nPublic functions and structs should normally be named according to the file(s) being read and parsed.  For example, \nthe `fs.BuddyInfo()` function reads the file `/proc/buddyinfo`.  In addition, the godoc for each public function\nshould contain the path to the file(s) being read and a URL of the linux kernel documentation describing the file(s).\n\n### Reading vs. Parsing\n\nMost functionality in this library consists of reading files and then parsing the text into structured data.  In most\ncases reading and parsing should be separated into different functions/methods with a public `fs.Thing()` method and \na private `parseThing(r Reader)` function.  This provides a logical separation and allows parsing to be tested\ndirectly without the need to read from the filesystem.  Using a `Reader` argument is preferred over other data types\nsuch as `string` or `*File` because it provides the most flexibility regarding the data source.  When a set of files \nin a directory needs to be parsed, then a `path` string parameter to the parse function can be used instead.\n\n### /proc and /sys filesystem I/O \n\nThe `proc` and `sys` filesystems are pseudo file systems and work a bit differently from standard disk I/O.  \nMany of the files are changing continuously and the data being read can in some cases change between subsequent \nreads in the same file.  Also, most of the files are relatively small (less than a few KBs), and system calls\nto the `stat` function will often return the wrong size.  Therefore, for most files it's recommended to read the \nfull file in a single operation using an internal utility function called `util.ReadFileNoStat`.\nThis function is similar to `os.ReadFile`, but it avoids the system call to `stat` to get the current size of\nthe file.\n\nNote that parsing the file's contents can still be performed one line at a time.  This is done by first reading \nthe full file, and then using a scanner on the `[]byte` or `string` containing the data.\n\n```\n    data, err := util.ReadFileNoStat(\"/proc/cpuinfo\")\n    if err != nil {\n        return err\n    }\n    reader := bytes.NewReader(data)\n    scanner := bufio.NewScanner(reader)\n```\n\nThe `/sys` filesystem contains many very small files which contain only a single numeric or text value.  These files\ncan be read using an internal function called `util.SysReadFile` which is similar to `os.ReadFile` but does\nnot bother to check the size of the file before reading.\n```\n    data, err := util.SysReadFile(\"/sys/class/power_supply/BAT0/capacity\")\n```\n\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/LICENSE",
    "content": "                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/MAINTAINERS.md",
    "content": "* Johannes 'fish' Ziemke <github@freigeist.org> @discordianfish\n* Paul Gier <paulgier@gmail.com> @pgier\n* Ben Kochie <superq@gmail.com> @SuperQ\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/Makefile",
    "content": "# Copyright The Prometheus Authors\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\ninclude Makefile.common\n\n%/.unpacked: %.ttar\n\t@echo \">> extracting fixtures $*\"\n\t./ttar -C $(dir $*) -x -f $*.ttar\n\ttouch $@\n\nfixtures: testdata/fixtures/.unpacked\n\nupdate_fixtures:\n\trm -vf testdata/fixtures/.unpacked\n\t./ttar -c -f testdata/fixtures.ttar -C testdata/ fixtures/\n\n.PHONY: build\nbuild:\n\n.PHONY: test\ntest: testdata/fixtures/.unpacked common-test\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/Makefile.common",
    "content": "# Copyright 2018 The Prometheus Authors\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\n# A common Makefile that includes rules to be reused in different prometheus projects.\n# !!! Open PRs only against the prometheus/prometheus/Makefile.common repository!\n\n# Example usage :\n# Create the main Makefile in the root project directory.\n# include Makefile.common\n# customTarget:\n# \t@echo \">> Running customTarget\"\n#\n\n# Ensure GOBIN is not set during build so that promu is installed to the correct path\nunexport GOBIN\n\nGO           ?= go\nGOFMT        ?= $(GO)fmt\nFIRST_GOPATH := $(firstword $(subst :, ,$(shell $(GO) env GOPATH)))\nGOOPTS       ?=\nGOHOSTOS     ?= $(shell $(GO) env GOHOSTOS)\nGOHOSTARCH   ?= $(shell $(GO) env GOHOSTARCH)\n\nGO_VERSION        ?= $(shell $(GO) version)\nGO_VERSION_NUMBER ?= $(word 3, $(GO_VERSION))\nPRE_GO_111        ?= $(shell echo $(GO_VERSION_NUMBER) | grep -E 'go1\\.(10|[0-9])\\.')\n\nPROMU        := $(FIRST_GOPATH)/bin/promu\npkgs          = ./...\n\nifeq (arm, $(GOHOSTARCH))\n\tGOHOSTARM ?= $(shell GOARM= $(GO) env GOARM)\n\tGO_BUILD_PLATFORM ?= $(GOHOSTOS)-$(GOHOSTARCH)v$(GOHOSTARM)\nelse\n\tGO_BUILD_PLATFORM ?= $(GOHOSTOS)-$(GOHOSTARCH)\nendif\n\nGOTEST := $(GO) test\nGOTEST_DIR :=\nifneq ($(CIRCLE_JOB),)\nifneq ($(shell command -v gotestsum 2> /dev/null),)\n\tGOTEST_DIR := test-results\n\tGOTEST := gotestsum --junitfile $(GOTEST_DIR)/unit-tests.xml --\nendif\nendif\n\nPROMU_VERSION ?= 0.17.0\nPROMU_URL     := https://github.com/prometheus/promu/releases/download/v$(PROMU_VERSION)/promu-$(PROMU_VERSION).$(GO_BUILD_PLATFORM).tar.gz\n\nSKIP_GOLANGCI_LINT :=\nGOLANGCI_LINT :=\nGOLANGCI_LINT_OPTS ?=\nGOLANGCI_LINT_VERSION ?= v2.1.5\nGOLANGCI_FMT_OPTS ?=\n# golangci-lint only supports linux, darwin and windows platforms on i386/amd64/arm64.\n# windows isn't included here because of the path separator being different.\nifeq ($(GOHOSTOS),$(filter $(GOHOSTOS),linux darwin))\n\tifeq ($(GOHOSTARCH),$(filter $(GOHOSTARCH),amd64 i386 arm64))\n\t\t# If we're in CI and there is an Actions file, that means the linter\n\t\t# is being run in Actions, so we don't need to run it here.\n\t\tifneq (,$(SKIP_GOLANGCI_LINT))\n\t\t\tGOLANGCI_LINT :=\n\t\telse ifeq (,$(CIRCLE_JOB))\n\t\t\tGOLANGCI_LINT := $(FIRST_GOPATH)/bin/golangci-lint\n\t\telse ifeq (,$(wildcard .github/workflows/golangci-lint.yml))\n\t\t\tGOLANGCI_LINT := $(FIRST_GOPATH)/bin/golangci-lint\n\t\tendif\n\tendif\nendif\n\nPREFIX                  ?= $(shell pwd)\nBIN_DIR                 ?= $(shell pwd)\nDOCKER_IMAGE_TAG        ?= $(subst /,-,$(shell git rev-parse --abbrev-ref HEAD))\nDOCKERFILE_PATH         ?= ./Dockerfile\nDOCKERBUILD_CONTEXT     ?= ./\nDOCKER_REPO             ?= prom\n\nDOCKER_ARCHS            ?= amd64\n\nBUILD_DOCKER_ARCHS = $(addprefix common-docker-,$(DOCKER_ARCHS))\nPUBLISH_DOCKER_ARCHS = $(addprefix common-docker-publish-,$(DOCKER_ARCHS))\nTAG_DOCKER_ARCHS = $(addprefix common-docker-tag-latest-,$(DOCKER_ARCHS))\n\nSANITIZED_DOCKER_IMAGE_TAG := $(subst +,-,$(DOCKER_IMAGE_TAG))\n\nifeq ($(GOHOSTARCH),amd64)\n        ifeq ($(GOHOSTOS),$(filter $(GOHOSTOS),linux freebsd darwin windows))\n                # Only supported on amd64\n                test-flags := -race\n        endif\nendif\n\n# This rule is used to forward a target like \"build\" to \"common-build\".  This\n# allows a new \"build\" target to be defined in a Makefile which includes this\n# one and override \"common-build\" without override warnings.\n%: common-% ;\n\n.PHONY: common-all\ncommon-all: precheck style check_license lint yamllint unused build test\n\n.PHONY: common-style\ncommon-style:\n\t@echo \">> checking code style\"\n\t@fmtRes=$$($(GOFMT) -d $$(find . -path ./vendor -prune -o -name '*.go' -print)); \\\n\tif [ -n \"$${fmtRes}\" ]; then \\\n\t\techo \"gofmt checking failed!\"; echo \"$${fmtRes}\"; echo; \\\n\t\techo \"Please ensure you are using $$($(GO) version) for formatting code.\"; \\\n\t\texit 1; \\\n\tfi\n\n.PHONY: common-check_license\ncommon-check_license:\n\t@echo \">> checking license header\"\n\t@licRes=$$(for file in $$(find . -type f -iname '*.go' ! -path './vendor/*') ; do \\\n               awk 'NR<=3' $$file | grep -Eq \"(Copyright|generated|GENERATED)\" || echo $$file; \\\n       done); \\\n       if [ -n \"$${licRes}\" ]; then \\\n               echo \"license header checking failed:\"; echo \"$${licRes}\"; \\\n               exit 1; \\\n       fi\n\n.PHONY: common-deps\ncommon-deps:\n\t@echo \">> getting dependencies\"\n\t$(GO) mod download\n\n.PHONY: update-go-deps\nupdate-go-deps:\n\t@echo \">> updating Go dependencies\"\n\t@for m in $$($(GO) list -mod=readonly -m -f '{{ if and (not .Indirect) (not .Main)}}{{.Path}}{{end}}' all); do \\\n\t\t$(GO) get $$m; \\\n\tdone\n\t$(GO) mod tidy\n\n.PHONY: common-test-short\ncommon-test-short: $(GOTEST_DIR)\n\t@echo \">> running short tests\"\n\t$(GOTEST) -short $(GOOPTS) $(pkgs)\n\n.PHONY: common-test\ncommon-test: $(GOTEST_DIR)\n\t@echo \">> running all tests\"\n\t$(GOTEST) $(test-flags) $(GOOPTS) $(pkgs)\n\n$(GOTEST_DIR):\n\t@mkdir -p $@\n\n.PHONY: common-format\ncommon-format: $(GOLANGCI_LINT)\n\t@echo \">> formatting code\"\n\t$(GO) fmt $(pkgs)\nifdef GOLANGCI_LINT\n\t@echo \">> formatting code with golangci-lint\"\n\t$(GOLANGCI_LINT) fmt $(GOLANGCI_FMT_OPTS)\nendif\n\n.PHONY: common-vet\ncommon-vet:\n\t@echo \">> vetting code\"\n\t$(GO) vet $(GOOPTS) $(pkgs)\n\n.PHONY: common-lint\ncommon-lint: $(GOLANGCI_LINT)\nifdef GOLANGCI_LINT\n\t@echo \">> running golangci-lint\"\n\t$(GOLANGCI_LINT) run $(GOLANGCI_LINT_OPTS) $(pkgs)\nendif\n\n.PHONY: common-lint-fix\ncommon-lint-fix: $(GOLANGCI_LINT)\nifdef GOLANGCI_LINT\n\t@echo \">> running golangci-lint fix\"\n\t$(GOLANGCI_LINT) run --fix $(GOLANGCI_LINT_OPTS) $(pkgs)\nendif\n\n.PHONY: common-yamllint\ncommon-yamllint:\n\t@echo \">> running yamllint on all YAML files in the repository\"\nifeq (, $(shell command -v yamllint 2> /dev/null))\n\t@echo \"yamllint not installed so skipping\"\nelse\n\tyamllint .\nendif\n\n# For backward-compatibility.\n.PHONY: common-staticcheck\ncommon-staticcheck: lint\n\n.PHONY: common-unused\ncommon-unused:\n\t@echo \">> running check for unused/missing packages in go.mod\"\n\t$(GO) mod tidy\n\t@git diff --exit-code -- go.sum go.mod\n\n.PHONY: common-build\ncommon-build: promu\n\t@echo \">> building binaries\"\n\t$(PROMU) build --prefix $(PREFIX) $(PROMU_BINARIES)\n\n.PHONY: common-tarball\ncommon-tarball: promu\n\t@echo \">> building release tarball\"\n\t$(PROMU) tarball --prefix $(PREFIX) $(BIN_DIR)\n\n.PHONY: common-docker-repo-name\ncommon-docker-repo-name:\n\t@echo \"$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)\"\n\n.PHONY: common-docker $(BUILD_DOCKER_ARCHS)\ncommon-docker: $(BUILD_DOCKER_ARCHS)\n$(BUILD_DOCKER_ARCHS): common-docker-%:\n\tdocker build -t \"$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:$(SANITIZED_DOCKER_IMAGE_TAG)\" \\\n\t\t-f $(DOCKERFILE_PATH) \\\n\t\t--build-arg ARCH=\"$*\" \\\n\t\t--build-arg OS=\"linux\" \\\n\t\t$(DOCKERBUILD_CONTEXT)\n\n.PHONY: common-docker-publish $(PUBLISH_DOCKER_ARCHS)\ncommon-docker-publish: $(PUBLISH_DOCKER_ARCHS)\n$(PUBLISH_DOCKER_ARCHS): common-docker-publish-%:\n\tdocker push \"$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:$(SANITIZED_DOCKER_IMAGE_TAG)\"\n\nDOCKER_MAJOR_VERSION_TAG = $(firstword $(subst ., ,$(shell cat VERSION)))\n.PHONY: common-docker-tag-latest $(TAG_DOCKER_ARCHS)\ncommon-docker-tag-latest: $(TAG_DOCKER_ARCHS)\n$(TAG_DOCKER_ARCHS): common-docker-tag-latest-%:\n\tdocker tag \"$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:$(SANITIZED_DOCKER_IMAGE_TAG)\" \"$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:latest\"\n\tdocker tag \"$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:$(SANITIZED_DOCKER_IMAGE_TAG)\" \"$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:v$(DOCKER_MAJOR_VERSION_TAG)\"\n\n.PHONY: common-docker-manifest\ncommon-docker-manifest:\n\tDOCKER_CLI_EXPERIMENTAL=enabled docker manifest create -a \"$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):$(SANITIZED_DOCKER_IMAGE_TAG)\" $(foreach ARCH,$(DOCKER_ARCHS),$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$(ARCH):$(SANITIZED_DOCKER_IMAGE_TAG))\n\tDOCKER_CLI_EXPERIMENTAL=enabled docker manifest push \"$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):$(SANITIZED_DOCKER_IMAGE_TAG)\"\n\n.PHONY: promu\npromu: $(PROMU)\n\n$(PROMU):\n\t$(eval PROMU_TMP := $(shell mktemp -d))\n\tcurl -s -L $(PROMU_URL) | tar -xvzf - -C $(PROMU_TMP)\n\tmkdir -p $(FIRST_GOPATH)/bin\n\tcp $(PROMU_TMP)/promu-$(PROMU_VERSION).$(GO_BUILD_PLATFORM)/promu $(FIRST_GOPATH)/bin/promu\n\trm -r $(PROMU_TMP)\n\n.PHONY: common-proto\ncommon-proto:\n\t@echo \">> generating code from proto files\"\n\t@./scripts/genproto.sh\n\nifdef GOLANGCI_LINT\n$(GOLANGCI_LINT):\n\tmkdir -p $(FIRST_GOPATH)/bin\n\tcurl -sfL https://raw.githubusercontent.com/golangci/golangci-lint/$(GOLANGCI_LINT_VERSION)/install.sh \\\n\t\t| sed -e '/install -d/d' \\\n\t\t| sh -s -- -b $(FIRST_GOPATH)/bin $(GOLANGCI_LINT_VERSION)\nendif\n\n.PHONY: precheck\nprecheck::\n\ndefine PRECHECK_COMMAND_template =\nprecheck:: $(1)_precheck\n\nPRECHECK_COMMAND_$(1) ?= $(1) $$(strip $$(PRECHECK_OPTIONS_$(1)))\n.PHONY: $(1)_precheck\n$(1)_precheck:\n\t@if ! $$(PRECHECK_COMMAND_$(1)) 1>/dev/null 2>&1; then \\\n\t\techo \"Execution of '$$(PRECHECK_COMMAND_$(1))' command failed. Is $(1) installed?\"; \\\n\t\texit 1; \\\n\tfi\nendef\n\ngovulncheck: install-govulncheck\n\tgovulncheck ./...\n\ninstall-govulncheck:\n\tcommand -v govulncheck > /dev/null || go install golang.org/x/vuln/cmd/govulncheck@latest\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/NOTICE",
    "content": "procfs provides functions to retrieve system, kernel and process\nmetrics from the pseudo-filesystem proc.\n\nCopyright 2014-2015 The Prometheus Authors\n\nThis product includes software developed at\nSoundCloud Ltd. (http://soundcloud.com/).\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/README.md",
    "content": "# procfs\n\nThis package provides functions to retrieve system, kernel, and process\nmetrics from the pseudo-filesystems /proc and /sys.\n\n*WARNING*: This package is a work in progress. Its API may still break in\nbackwards-incompatible ways without warnings. Use it at your own risk.\n\n[![Go Reference](https://pkg.go.dev/badge/github.com/prometheus/procfs.svg)](https://pkg.go.dev/github.com/prometheus/procfs)\n[![CircleCI](https://circleci.com/gh/prometheus/procfs/tree/master.svg?style=svg)](https://circleci.com/gh/prometheus/procfs/tree/master)\n[![Go Report Card](https://goreportcard.com/badge/github.com/prometheus/procfs)](https://goreportcard.com/report/github.com/prometheus/procfs)\n\n## Usage\n\nThe procfs library is organized by packages based on whether the gathered data is coming from\n/proc, /sys, or both.  Each package contains an `FS` type which represents the path to either /proc, \n/sys, or both.  For example, cpu statistics are gathered from\n`/proc/stat` and are available via the root procfs package.  First, the proc filesystem mount\npoint is initialized, and then the stat information is read.\n\n```go\nfs, err := procfs.NewFS(\"/proc\")\nstats, err := fs.Stat()\n```\n\nSome sub-packages such as `blockdevice`, require access to both the proc and sys filesystems.\n\n```go\n    fs, err := blockdevice.NewFS(\"/proc\", \"/sys\")\n    stats, err := fs.ProcDiskstats()\n```\n\n## Package Organization\n\nThe packages in this project are organized according to (1) whether the data comes from the `/proc` or\n`/sys` filesystem and (2) the type of information being retrieved.  For example, most process information\ncan be gathered from the functions in the root `procfs` package.  Information about block devices such as disk drives\nis available in the `blockdevices` sub-package.\n\n## Building and Testing\n\nThe procfs library is intended to be built as part of another application, so there are no distributable binaries.  \nHowever, most of the API includes unit tests which can be run with `make test`.\n\n### Updating Test Fixtures\n\nThe procfs library includes a set of test fixtures which include many example files from\nthe `/proc` and `/sys` filesystems.  These fixtures are included as a [ttar](https://github.com/ideaship/ttar) file\nwhich is extracted automatically during testing.  To add/update the test fixtures, first\nensure the `testdata/fixtures` directory is up to date by removing the existing directory and then\nextracting the ttar file using `make testdata/fixtures/.unpacked` or just `make test`.\n\n```bash\nrm -rf testdata/fixtures\nmake test\n```\n\nNext, make the required changes to the extracted files in the `testdata/fixtures` directory.  When\nthe changes are complete, run `make update_fixtures` to create a new `fixtures.ttar` file\nbased on the updated `fixtures` directory.  And finally, verify the changes using\n`git diff testdata/fixtures.ttar`.\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/SECURITY.md",
    "content": "# Reporting a security issue\n\nThe Prometheus security policy, including how to report vulnerabilities, can be\nfound here:\n\n<https://prometheus.io/docs/operating/security/>\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/arp.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage procfs\n\nimport (\n\t\"fmt\"\n\t\"net\"\n\t\"os\"\n\t\"strconv\"\n\t\"strings\"\n)\n\n// Learned from include/uapi/linux/if_arp.h.\nconst (\n\t// Completed entry (ha valid).\n\tATFComplete = 0x02\n\t// Permanent entry.\n\tATFPermanent = 0x04\n\t// Publish entry.\n\tATFPublish = 0x08\n\t// Has requested trailers.\n\tATFUseTrailers = 0x10\n\t// Obsoleted: Want to use a netmask (only for proxy entries).\n\tATFNetmask = 0x20\n\t// Don't answer this addresses.\n\tATFDontPublish = 0x40\n)\n\n// ARPEntry contains a single row of the columnar data represented in\n// /proc/net/arp.\ntype ARPEntry struct {\n\t// IP address\n\tIPAddr net.IP\n\t// MAC address\n\tHWAddr net.HardwareAddr\n\t// Name of the device\n\tDevice string\n\t// Flags\n\tFlags byte\n}\n\n// GatherARPEntries retrieves all the ARP entries, parse the relevant columns,\n// and then return a slice of ARPEntry's.\nfunc (fs FS) GatherARPEntries() ([]ARPEntry, error) {\n\tdata, err := os.ReadFile(fs.proc.Path(\"net/arp\"))\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"%w: error reading arp %s: %w\", ErrFileRead, fs.proc.Path(\"net/arp\"), err)\n\t}\n\n\treturn parseARPEntries(data)\n}\n\nfunc parseARPEntries(data []byte) ([]ARPEntry, error) {\n\tlines := strings.Split(string(data), \"\\n\")\n\tentries := make([]ARPEntry, 0)\n\tvar err error\n\tconst (\n\t\texpectedDataWidth   = 6\n\t\texpectedHeaderWidth = 9\n\t)\n\tfor _, line := range lines {\n\t\tcolumns := strings.Fields(line)\n\t\twidth := len(columns)\n\n\t\tswitch width {\n\t\tcase expectedHeaderWidth, 0:\n\t\t\tcontinue\n\t\tcase expectedDataWidth:\n\t\t\tentry, err := parseARPEntry(columns)\n\t\t\tif err != nil {\n\t\t\t\treturn []ARPEntry{}, fmt.Errorf(\"%w: Failed to parse ARP entry: %v: %w\", ErrFileParse, entry, err)\n\t\t\t}\n\t\t\tentries = append(entries, entry)\n\t\tdefault:\n\t\t\treturn []ARPEntry{}, fmt.Errorf(\"%w: %d columns found, but expected %d: %w\", ErrFileParse, width, expectedDataWidth, err)\n\t\t}\n\n\t}\n\n\treturn entries, err\n}\n\nfunc parseARPEntry(columns []string) (ARPEntry, error) {\n\tentry := ARPEntry{Device: columns[5]}\n\tip := net.ParseIP(columns[0])\n\tentry.IPAddr = ip\n\n\tif mac, err := net.ParseMAC(columns[3]); err == nil {\n\t\tentry.HWAddr = mac\n\t} else {\n\t\treturn ARPEntry{}, err\n\t}\n\n\tif flags, err := strconv.ParseUint(columns[2], 0, 8); err == nil {\n\t\tentry.Flags = byte(flags)\n\t} else {\n\t\treturn ARPEntry{}, err\n\t}\n\n\treturn entry, nil\n}\n\n// IsComplete returns true if ARP entry is marked with complete flag.\nfunc (entry *ARPEntry) IsComplete() bool {\n\treturn entry.Flags&ATFComplete != 0\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/buddyinfo.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage procfs\n\nimport (\n\t\"bufio\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"strconv\"\n\t\"strings\"\n)\n\n// A BuddyInfo is the details parsed from /proc/buddyinfo.\n// The data is comprised of an array of free fragments of each size.\n// The sizes are 2^n*PAGE_SIZE, where n is the array index.\ntype BuddyInfo struct {\n\tNode  string\n\tZone  string\n\tSizes []float64\n}\n\n// BuddyInfo reads the buddyinfo statistics from the specified `proc` filesystem.\nfunc (fs FS) BuddyInfo() ([]BuddyInfo, error) {\n\tfile, err := os.Open(fs.proc.Path(\"buddyinfo\"))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer file.Close()\n\n\treturn parseBuddyInfo(file)\n}\n\nfunc parseBuddyInfo(r io.Reader) ([]BuddyInfo, error) {\n\tvar (\n\t\tbuddyInfo   = []BuddyInfo{}\n\t\tscanner     = bufio.NewScanner(r)\n\t\tbucketCount = -1\n\t)\n\n\tfor scanner.Scan() {\n\t\tvar err error\n\t\tline := scanner.Text()\n\t\tparts := strings.Fields(line)\n\n\t\tif len(parts) < 4 {\n\t\t\treturn nil, fmt.Errorf(\"%w: Invalid number of fields, found: %v\", ErrFileParse, parts)\n\t\t}\n\n\t\tnode := strings.TrimSuffix(parts[1], \",\")\n\t\tzone := strings.TrimSuffix(parts[3], \",\")\n\t\tarraySize := len(parts[4:])\n\n\t\tif bucketCount == -1 {\n\t\t\tbucketCount = arraySize\n\t\t} else if bucketCount != arraySize {\n\t\t\treturn nil, fmt.Errorf(\"%w: mismatch in number of buddyinfo buckets, previous count %d, new count %d\", ErrFileParse, bucketCount, arraySize)\n\t\t}\n\n\t\tsizes := make([]float64, arraySize)\n\t\tfor i := range arraySize {\n\t\t\tsizes[i], err = strconv.ParseFloat(parts[i+4], 64)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"%w: Invalid valid in buddyinfo: %f: %w\", ErrFileParse, sizes[i], err)\n\t\t\t}\n\t\t}\n\n\t\tbuddyInfo = append(buddyInfo, BuddyInfo{node, zone, sizes})\n\t}\n\n\treturn buddyInfo, scanner.Err()\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/cmdline.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage procfs\n\nimport (\n\t\"strings\"\n\n\t\"github.com/prometheus/procfs/internal/util\"\n)\n\n// CmdLine returns the command line of the kernel.\nfunc (fs FS) CmdLine() ([]string, error) {\n\tdata, err := util.ReadFileNoStat(fs.proc.Path(\"cmdline\"))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn strings.Fields(string(data)), nil\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/cpuinfo.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n//go:build linux\n// +build linux\n\npackage procfs\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/prometheus/procfs/internal/util\"\n)\n\n// CPUInfo contains general information about a system CPU found in /proc/cpuinfo.\ntype CPUInfo struct {\n\tProcessor       uint\n\tVendorID        string\n\tCPUFamily       string\n\tModel           string\n\tModelName       string\n\tStepping        string\n\tMicrocode       string\n\tCPUMHz          float64\n\tCacheSize       string\n\tPhysicalID      string\n\tSiblings        uint\n\tCoreID          string\n\tCPUCores        uint\n\tAPICID          string\n\tInitialAPICID   string\n\tFPU             string\n\tFPUException    string\n\tCPUIDLevel      uint\n\tWP              string\n\tFlags           []string\n\tBugs            []string\n\tBogoMips        float64\n\tCLFlushSize     uint\n\tCacheAlignment  uint\n\tAddressSizes    string\n\tPowerManagement string\n}\n\nvar (\n\tcpuinfoClockRegexp          = regexp.MustCompile(`([\\d.]+)`)\n\tcpuinfoS390XProcessorRegexp = regexp.MustCompile(`^processor\\s+(\\d+):.*`)\n)\n\n// CPUInfo returns information about current system CPUs.\n// See https://www.kernel.org/doc/Documentation/filesystems/proc.txt\nfunc (fs FS) CPUInfo() ([]CPUInfo, error) {\n\tdata, err := util.ReadFileNoStat(fs.proc.Path(\"cpuinfo\"))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn parseCPUInfo(data)\n}\n\nfunc parseCPUInfoX86(info []byte) ([]CPUInfo, error) {\n\tscanner := bufio.NewScanner(bytes.NewReader(info))\n\n\t// find the first \"processor\" line\n\tfirstLine := firstNonEmptyLine(scanner)\n\tif !strings.HasPrefix(firstLine, \"processor\") || !strings.Contains(firstLine, \":\") {\n\t\treturn nil, fmt.Errorf(\"%w: Cannot parse  line: %q\", ErrFileParse, firstLine)\n\t}\n\tfield := strings.SplitN(firstLine, \": \", 2)\n\tv, err := strconv.ParseUint(field[1], 0, 32)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tfirstcpu := CPUInfo{Processor: uint(v)}\n\tcpuinfo := []CPUInfo{firstcpu}\n\ti := 0\n\n\tfor scanner.Scan() {\n\t\tline := scanner.Text()\n\t\tif !strings.Contains(line, \":\") {\n\t\t\tcontinue\n\t\t}\n\t\tfield := strings.SplitN(line, \": \", 2)\n\t\tswitch strings.TrimSpace(field[0]) {\n\t\tcase \"processor\":\n\t\t\tcpuinfo = append(cpuinfo, CPUInfo{}) // start of the next processor\n\t\t\ti++\n\t\t\tv, err := strconv.ParseUint(field[1], 0, 32)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tcpuinfo[i].Processor = uint(v)\n\t\tcase \"vendor\", \"vendor_id\":\n\t\t\tcpuinfo[i].VendorID = field[1]\n\t\tcase \"cpu family\":\n\t\t\tcpuinfo[i].CPUFamily = field[1]\n\t\tcase \"model\":\n\t\t\tcpuinfo[i].Model = field[1]\n\t\tcase \"model name\":\n\t\t\tcpuinfo[i].ModelName = field[1]\n\t\tcase \"stepping\":\n\t\t\tcpuinfo[i].Stepping = field[1]\n\t\tcase \"microcode\":\n\t\t\tcpuinfo[i].Microcode = field[1]\n\t\tcase \"cpu MHz\":\n\t\t\tv, err := strconv.ParseFloat(field[1], 64)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tcpuinfo[i].CPUMHz = v\n\t\tcase \"cache size\":\n\t\t\tcpuinfo[i].CacheSize = field[1]\n\t\tcase \"physical id\":\n\t\t\tcpuinfo[i].PhysicalID = field[1]\n\t\tcase \"siblings\":\n\t\t\tv, err := strconv.ParseUint(field[1], 0, 32)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tcpuinfo[i].Siblings = uint(v)\n\t\tcase \"core id\":\n\t\t\tcpuinfo[i].CoreID = field[1]\n\t\tcase \"cpu cores\":\n\t\t\tv, err := strconv.ParseUint(field[1], 0, 32)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tcpuinfo[i].CPUCores = uint(v)\n\t\tcase \"apicid\":\n\t\t\tcpuinfo[i].APICID = field[1]\n\t\tcase \"initial apicid\":\n\t\t\tcpuinfo[i].InitialAPICID = field[1]\n\t\tcase \"fpu\":\n\t\t\tcpuinfo[i].FPU = field[1]\n\t\tcase \"fpu_exception\":\n\t\t\tcpuinfo[i].FPUException = field[1]\n\t\tcase \"cpuid level\":\n\t\t\tv, err := strconv.ParseUint(field[1], 0, 32)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tcpuinfo[i].CPUIDLevel = uint(v)\n\t\tcase \"wp\":\n\t\t\tcpuinfo[i].WP = field[1]\n\t\tcase \"flags\":\n\t\t\tcpuinfo[i].Flags = strings.Fields(field[1])\n\t\tcase \"bugs\":\n\t\t\tcpuinfo[i].Bugs = strings.Fields(field[1])\n\t\tcase \"bogomips\":\n\t\t\tv, err := strconv.ParseFloat(field[1], 64)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tcpuinfo[i].BogoMips = v\n\t\tcase \"clflush size\":\n\t\t\tv, err := strconv.ParseUint(field[1], 0, 32)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tcpuinfo[i].CLFlushSize = uint(v)\n\t\tcase \"cache_alignment\":\n\t\t\tv, err := strconv.ParseUint(field[1], 0, 32)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tcpuinfo[i].CacheAlignment = uint(v)\n\t\tcase \"address sizes\":\n\t\t\tcpuinfo[i].AddressSizes = field[1]\n\t\tcase \"power management\":\n\t\t\tcpuinfo[i].PowerManagement = field[1]\n\t\t}\n\t}\n\treturn cpuinfo, nil\n}\n\nfunc parseCPUInfoARM(info []byte) ([]CPUInfo, error) {\n\tscanner := bufio.NewScanner(bytes.NewReader(info))\n\n\tfirstLine := firstNonEmptyLine(scanner)\n\tmatch, err := regexp.MatchString(\"^[Pp]rocessor\", firstLine)\n\tif !match || !strings.Contains(firstLine, \":\") {\n\t\treturn nil, fmt.Errorf(\"%w: Cannot parse line: %q: %w\", ErrFileParse, firstLine, err)\n\n\t}\n\tfield := strings.SplitN(firstLine, \": \", 2)\n\tcpuinfo := []CPUInfo{}\n\tfeaturesLine := \"\"\n\tcommonCPUInfo := CPUInfo{}\n\ti := 0\n\tif strings.TrimSpace(field[0]) == \"Processor\" {\n\t\tcommonCPUInfo = CPUInfo{ModelName: field[1]}\n\t\ti = -1\n\t} else {\n\t\tv, err := strconv.ParseUint(field[1], 0, 32)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tfirstcpu := CPUInfo{Processor: uint(v)}\n\t\tcpuinfo = []CPUInfo{firstcpu}\n\t}\n\n\tfor scanner.Scan() {\n\t\tline := scanner.Text()\n\t\tif !strings.Contains(line, \":\") {\n\t\t\tcontinue\n\t\t}\n\t\tfield := strings.SplitN(line, \": \", 2)\n\t\tswitch strings.TrimSpace(field[0]) {\n\t\tcase \"processor\":\n\t\t\tcpuinfo = append(cpuinfo, commonCPUInfo) // start of the next processor\n\t\t\ti++\n\t\t\tv, err := strconv.ParseUint(field[1], 0, 32)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tcpuinfo[i].Processor = uint(v)\n\t\tcase \"BogoMIPS\":\n\t\t\tif i == -1 {\n\t\t\t\tcpuinfo = append(cpuinfo, commonCPUInfo) // There is only one processor\n\t\t\t\ti++\n\t\t\t\tcpuinfo[i].Processor = 0\n\t\t\t}\n\t\t\tv, err := strconv.ParseFloat(field[1], 64)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tcpuinfo[i].BogoMips = v\n\t\tcase \"Features\":\n\t\t\tfeaturesLine = line\n\t\tcase \"model name\":\n\t\t\tcpuinfo[i].ModelName = field[1]\n\t\t}\n\t}\n\tfields := strings.SplitN(featuresLine, \": \", 2)\n\tfor i := range cpuinfo {\n\t\tcpuinfo[i].Flags = strings.Fields(fields[1])\n\t}\n\treturn cpuinfo, nil\n\n}\n\nfunc parseCPUInfoS390X(info []byte) ([]CPUInfo, error) {\n\tscanner := bufio.NewScanner(bytes.NewReader(info))\n\n\tfirstLine := firstNonEmptyLine(scanner)\n\tif !strings.HasPrefix(firstLine, \"vendor_id\") || !strings.Contains(firstLine, \":\") {\n\t\treturn nil, fmt.Errorf(\"%w: Cannot parse line: %q\", ErrFileParse, firstLine)\n\t}\n\tfield := strings.SplitN(firstLine, \": \", 2)\n\tcpuinfo := []CPUInfo{}\n\tcommonCPUInfo := CPUInfo{VendorID: field[1]}\n\n\tfor scanner.Scan() {\n\t\tline := scanner.Text()\n\t\tif !strings.Contains(line, \":\") {\n\t\t\tcontinue\n\t\t}\n\t\tfield := strings.SplitN(line, \": \", 2)\n\t\tswitch strings.TrimSpace(field[0]) {\n\t\tcase \"bogomips per cpu\":\n\t\t\tv, err := strconv.ParseFloat(field[1], 64)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tcommonCPUInfo.BogoMips = v\n\t\tcase \"features\":\n\t\t\tcommonCPUInfo.Flags = strings.Fields(field[1])\n\t\t}\n\t\tif strings.HasPrefix(line, \"processor\") {\n\t\t\tmatch := cpuinfoS390XProcessorRegexp.FindStringSubmatch(line)\n\t\t\tif len(match) < 2 {\n\t\t\t\treturn nil, fmt.Errorf(\"%w: %q\", ErrFileParse, firstLine)\n\t\t\t}\n\t\t\tcpu := commonCPUInfo\n\t\t\tv, err := strconv.ParseUint(match[1], 0, 32)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tcpu.Processor = uint(v)\n\t\t\tcpuinfo = append(cpuinfo, cpu)\n\t\t}\n\t\tif strings.HasPrefix(line, \"cpu number\") {\n\t\t\tbreak\n\t\t}\n\t}\n\n\ti := 0\n\tfor scanner.Scan() {\n\t\tline := scanner.Text()\n\t\tif !strings.Contains(line, \":\") {\n\t\t\tcontinue\n\t\t}\n\t\tfield := strings.SplitN(line, \": \", 2)\n\t\tswitch strings.TrimSpace(field[0]) {\n\t\tcase \"cpu number\":\n\t\t\ti++\n\t\tcase \"cpu MHz dynamic\":\n\t\t\tclock := cpuinfoClockRegexp.FindString(strings.TrimSpace(field[1]))\n\t\t\tv, err := strconv.ParseFloat(clock, 64)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tcpuinfo[i].CPUMHz = v\n\t\tcase \"physical id\":\n\t\t\tcpuinfo[i].PhysicalID = field[1]\n\t\tcase \"core id\":\n\t\t\tcpuinfo[i].CoreID = field[1]\n\t\tcase \"cpu cores\":\n\t\t\tv, err := strconv.ParseUint(field[1], 0, 32)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tcpuinfo[i].CPUCores = uint(v)\n\t\tcase \"siblings\":\n\t\t\tv, err := strconv.ParseUint(field[1], 0, 32)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tcpuinfo[i].Siblings = uint(v)\n\t\t}\n\t}\n\n\treturn cpuinfo, nil\n}\n\nfunc parseCPUInfoMips(info []byte) ([]CPUInfo, error) {\n\tscanner := bufio.NewScanner(bytes.NewReader(info))\n\n\t// find the first \"processor\" line\n\tfirstLine := firstNonEmptyLine(scanner)\n\tif !strings.HasPrefix(firstLine, \"system type\") || !strings.Contains(firstLine, \":\") {\n\t\treturn nil, fmt.Errorf(\"%w: %q\", ErrFileParse, firstLine)\n\t}\n\tfield := strings.SplitN(firstLine, \": \", 2)\n\tcpuinfo := []CPUInfo{}\n\tsystemType := field[1]\n\n\ti := 0\n\n\tfor scanner.Scan() {\n\t\tline := scanner.Text()\n\t\tif !strings.Contains(line, \":\") {\n\t\t\tcontinue\n\t\t}\n\t\tfield := strings.SplitN(line, \": \", 2)\n\t\tswitch strings.TrimSpace(field[0]) {\n\t\tcase \"processor\":\n\t\t\tv, err := strconv.ParseUint(field[1], 0, 32)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\ti = int(v)\n\t\t\tcpuinfo = append(cpuinfo, CPUInfo{}) // start of the next processor\n\t\t\tcpuinfo[i].Processor = uint(v)\n\t\t\tcpuinfo[i].VendorID = systemType\n\t\tcase \"cpu model\":\n\t\t\tcpuinfo[i].ModelName = field[1]\n\t\tcase \"BogoMIPS\":\n\t\t\tv, err := strconv.ParseFloat(field[1], 64)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tcpuinfo[i].BogoMips = v\n\t\t}\n\t}\n\treturn cpuinfo, nil\n}\n\nfunc parseCPUInfoLoong(info []byte) ([]CPUInfo, error) {\n\tscanner := bufio.NewScanner(bytes.NewReader(info))\n\t// find the first \"processor\" line\n\tfirstLine := firstNonEmptyLine(scanner)\n\tif !strings.HasPrefix(firstLine, \"system type\") || !strings.Contains(firstLine, \":\") {\n\t\treturn nil, fmt.Errorf(\"%w: %q\", ErrFileParse, firstLine)\n\t}\n\tfield := strings.SplitN(firstLine, \": \", 2)\n\tcpuinfo := []CPUInfo{}\n\tsystemType := field[1]\n\ti := 0\n\tfor scanner.Scan() {\n\t\tline := scanner.Text()\n\t\tif !strings.Contains(line, \":\") {\n\t\t\tcontinue\n\t\t}\n\t\tfield := strings.SplitN(line, \": \", 2)\n\t\tswitch strings.TrimSpace(field[0]) {\n\t\tcase \"processor\":\n\t\t\tv, err := strconv.ParseUint(field[1], 0, 32)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\ti = int(v)\n\t\t\tcpuinfo = append(cpuinfo, CPUInfo{}) // start of the next processor\n\t\t\tcpuinfo[i].Processor = uint(v)\n\t\t\tcpuinfo[i].VendorID = systemType\n\t\tcase \"CPU Family\":\n\t\t\tcpuinfo[i].CPUFamily = field[1]\n\t\tcase \"Model Name\":\n\t\t\tcpuinfo[i].ModelName = field[1]\n\t\t}\n\t}\n\treturn cpuinfo, nil\n}\n\nfunc parseCPUInfoPPC(info []byte) ([]CPUInfo, error) {\n\tscanner := bufio.NewScanner(bytes.NewReader(info))\n\n\tfirstLine := firstNonEmptyLine(scanner)\n\tif !strings.HasPrefix(firstLine, \"processor\") || !strings.Contains(firstLine, \":\") {\n\t\treturn nil, fmt.Errorf(\"%w: %q\", ErrFileParse, firstLine)\n\t}\n\tfield := strings.SplitN(firstLine, \": \", 2)\n\tv, err := strconv.ParseUint(field[1], 0, 32)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tfirstcpu := CPUInfo{Processor: uint(v)}\n\tcpuinfo := []CPUInfo{firstcpu}\n\ti := 0\n\n\tfor scanner.Scan() {\n\t\tline := scanner.Text()\n\t\tif !strings.Contains(line, \":\") {\n\t\t\tcontinue\n\t\t}\n\t\tfield := strings.SplitN(line, \": \", 2)\n\t\tswitch strings.TrimSpace(field[0]) {\n\t\tcase \"processor\":\n\t\t\tcpuinfo = append(cpuinfo, CPUInfo{}) // start of the next processor\n\t\t\ti++\n\t\t\tv, err := strconv.ParseUint(field[1], 0, 32)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tcpuinfo[i].Processor = uint(v)\n\t\tcase \"cpu\":\n\t\t\tcpuinfo[i].VendorID = field[1]\n\t\tcase \"clock\":\n\t\t\tclock := cpuinfoClockRegexp.FindString(strings.TrimSpace(field[1]))\n\t\t\tv, err := strconv.ParseFloat(clock, 64)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tcpuinfo[i].CPUMHz = v\n\t\t}\n\t}\n\treturn cpuinfo, nil\n}\n\nfunc parseCPUInfoRISCV(info []byte) ([]CPUInfo, error) {\n\tscanner := bufio.NewScanner(bytes.NewReader(info))\n\n\tfirstLine := firstNonEmptyLine(scanner)\n\tif !strings.HasPrefix(firstLine, \"processor\") || !strings.Contains(firstLine, \":\") {\n\t\treturn nil, fmt.Errorf(\"%w: %q\", ErrFileParse, firstLine)\n\t}\n\tfield := strings.SplitN(firstLine, \": \", 2)\n\tv, err := strconv.ParseUint(field[1], 0, 32)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tfirstcpu := CPUInfo{Processor: uint(v)}\n\tcpuinfo := []CPUInfo{firstcpu}\n\ti := 0\n\n\tfor scanner.Scan() {\n\t\tline := scanner.Text()\n\t\tif !strings.Contains(line, \":\") {\n\t\t\tcontinue\n\t\t}\n\t\tfield := strings.SplitN(line, \": \", 2)\n\t\tswitch strings.TrimSpace(field[0]) {\n\t\tcase \"processor\":\n\t\t\tv, err := strconv.ParseUint(field[1], 0, 32)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\ti = int(v)\n\t\t\tcpuinfo = append(cpuinfo, CPUInfo{}) // start of the next processor\n\t\t\tcpuinfo[i].Processor = uint(v)\n\t\tcase \"hart\":\n\t\t\tcpuinfo[i].CoreID = field[1]\n\t\tcase \"isa\":\n\t\t\tcpuinfo[i].ModelName = field[1]\n\t\t}\n\t}\n\treturn cpuinfo, nil\n}\n\nfunc parseCPUInfoDummy(_ []byte) ([]CPUInfo, error) { // nolint:unused,deadcode\n\treturn nil, errors.New(\"not implemented\")\n}\n\n// firstNonEmptyLine advances the scanner to the first non-empty line\n// and returns the contents of that line.\nfunc firstNonEmptyLine(scanner *bufio.Scanner) string {\n\tfor scanner.Scan() {\n\t\tline := scanner.Text()\n\t\tif strings.TrimSpace(line) != \"\" {\n\t\t\treturn line\n\t\t}\n\t}\n\treturn \"\"\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/cpuinfo_armx.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n//go:build linux && (arm || arm64)\n// +build linux\n// +build arm arm64\n\npackage procfs\n\nvar parseCPUInfo = parseCPUInfoARM\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/cpuinfo_loong64.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n//go:build linux\n// +build linux\n\npackage procfs\n\nvar parseCPUInfo = parseCPUInfoLoong\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/cpuinfo_mipsx.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n//go:build linux && (mips || mipsle || mips64 || mips64le)\n// +build linux\n// +build mips mipsle mips64 mips64le\n\npackage procfs\n\nvar parseCPUInfo = parseCPUInfoMips\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/cpuinfo_others.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n//go:build linux && !386 && !amd64 && !arm && !arm64 && !loong64 && !mips && !mips64 && !mips64le && !mipsle && !ppc64 && !ppc64le && !riscv64 && !s390x\n// +build linux,!386,!amd64,!arm,!arm64,!loong64,!mips,!mips64,!mips64le,!mipsle,!ppc64,!ppc64le,!riscv64,!s390x\n\npackage procfs\n\nvar parseCPUInfo = parseCPUInfoDummy\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/cpuinfo_ppcx.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n//go:build linux && (ppc64 || ppc64le)\n// +build linux\n// +build ppc64 ppc64le\n\npackage procfs\n\nvar parseCPUInfo = parseCPUInfoPPC\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/cpuinfo_riscvx.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n//go:build linux && (riscv || riscv64)\n// +build linux\n// +build riscv riscv64\n\npackage procfs\n\nvar parseCPUInfo = parseCPUInfoRISCV\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/cpuinfo_s390x.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n//go:build linux\n// +build linux\n\npackage procfs\n\nvar parseCPUInfo = parseCPUInfoS390X\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/cpuinfo_x86.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n//go:build linux && (386 || amd64)\n// +build linux\n// +build 386 amd64\n\npackage procfs\n\nvar parseCPUInfo = parseCPUInfoX86\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/crypto.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage procfs\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"strings\"\n\n\t\"github.com/prometheus/procfs/internal/util\"\n)\n\n// Crypto holds info parsed from /proc/crypto.\ntype Crypto struct {\n\tAlignmask   *uint64\n\tAsync       bool\n\tBlocksize   *uint64\n\tChunksize   *uint64\n\tCtxsize     *uint64\n\tDigestsize  *uint64\n\tDriver      string\n\tGeniv       string\n\tInternal    string\n\tIvsize      *uint64\n\tMaxauthsize *uint64\n\tMaxKeysize  *uint64\n\tMinKeysize  *uint64\n\tModule      string\n\tName        string\n\tPriority    *int64\n\tRefcnt      *int64\n\tSeedsize    *uint64\n\tSelftest    string\n\tType        string\n\tWalksize    *uint64\n}\n\n// Crypto parses an crypto-file (/proc/crypto) and returns a slice of\n// structs containing the relevant info.  More information available here:\n// https://kernel.readthedocs.io/en/sphinx-samples/crypto-API.html\nfunc (fs FS) Crypto() ([]Crypto, error) {\n\tpath := fs.proc.Path(\"crypto\")\n\tb, err := util.ReadFileNoStat(path)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"%w: Cannot read file %v: %w\", ErrFileRead, b, err)\n\n\t}\n\n\tcrypto, err := parseCrypto(bytes.NewReader(b))\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"%w: Cannot parse %v: %w\", ErrFileParse, crypto, err)\n\t}\n\n\treturn crypto, nil\n}\n\n// parseCrypto parses a /proc/crypto stream into Crypto elements.\nfunc parseCrypto(r io.Reader) ([]Crypto, error) {\n\tvar out []Crypto\n\n\ts := bufio.NewScanner(r)\n\tfor s.Scan() {\n\t\ttext := s.Text()\n\t\tswitch {\n\t\tcase strings.HasPrefix(text, \"name\"):\n\t\t\t// Each crypto element begins with its name.\n\t\t\tout = append(out, Crypto{})\n\t\tcase text == \"\":\n\t\t\tcontinue\n\t\t}\n\n\t\tkv := strings.Split(text, \":\")\n\t\tif len(kv) != 2 {\n\t\t\treturn nil, fmt.Errorf(\"%w: Cannot parse line: %q\", ErrFileParse, text)\n\t\t}\n\n\t\tk := strings.TrimSpace(kv[0])\n\t\tv := strings.TrimSpace(kv[1])\n\n\t\t// Parse the key/value pair into the currently focused element.\n\t\tc := &out[len(out)-1]\n\t\tif err := c.parseKV(k, v); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\tif err := s.Err(); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn out, nil\n}\n\n// parseKV parses a key/value pair into the appropriate field of c.\nfunc (c *Crypto) parseKV(k, v string) error {\n\tvp := util.NewValueParser(v)\n\n\tswitch k {\n\tcase \"async\":\n\t\t// Interpret literal yes as true.\n\t\tc.Async = v == \"yes\"\n\tcase \"blocksize\":\n\t\tc.Blocksize = vp.PUInt64()\n\tcase \"chunksize\":\n\t\tc.Chunksize = vp.PUInt64()\n\tcase \"digestsize\":\n\t\tc.Digestsize = vp.PUInt64()\n\tcase \"driver\":\n\t\tc.Driver = v\n\tcase \"geniv\":\n\t\tc.Geniv = v\n\tcase \"internal\":\n\t\tc.Internal = v\n\tcase \"ivsize\":\n\t\tc.Ivsize = vp.PUInt64()\n\tcase \"maxauthsize\":\n\t\tc.Maxauthsize = vp.PUInt64()\n\tcase \"max keysize\":\n\t\tc.MaxKeysize = vp.PUInt64()\n\tcase \"min keysize\":\n\t\tc.MinKeysize = vp.PUInt64()\n\tcase \"module\":\n\t\tc.Module = v\n\tcase \"name\":\n\t\tc.Name = v\n\tcase \"priority\":\n\t\tc.Priority = vp.PInt64()\n\tcase \"refcnt\":\n\t\tc.Refcnt = vp.PInt64()\n\tcase \"seedsize\":\n\t\tc.Seedsize = vp.PUInt64()\n\tcase \"selftest\":\n\t\tc.Selftest = v\n\tcase \"type\":\n\t\tc.Type = v\n\tcase \"walksize\":\n\t\tc.Walksize = vp.PUInt64()\n\t}\n\n\treturn vp.Err()\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/doc.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package procfs provides functions to retrieve system, kernel and process\n// metrics from the pseudo-filesystem proc.\n//\n// Example:\n//\n//\tpackage main\n//\n//\timport (\n//\t\t\"fmt\"\n//\t\t\"log\"\n//\n//\t\t\"github.com/prometheus/procfs\"\n//\t)\n//\n//\tfunc main() {\n//\t\tp, err := procfs.Self()\n//\t\tif err != nil {\n//\t\t\tlog.Fatalf(\"could not get process: %s\", err)\n//\t\t}\n//\n//\t\tstat, err := p.Stat()\n//\t\tif err != nil {\n//\t\t\tlog.Fatalf(\"could not get process stat: %s\", err)\n//\t\t}\n//\n//\t\tfmt.Printf(\"command:  %s\\n\", stat.Comm)\n//\t\tfmt.Printf(\"cpu time: %fs\\n\", stat.CPUTime())\n//\t\tfmt.Printf(\"vsize:    %dB\\n\", stat.VirtualMemory())\n//\t\tfmt.Printf(\"rss:      %dB\\n\", stat.ResidentMemory())\n//\t}\npackage procfs\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/fs.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage procfs\n\nimport (\n\t\"github.com/prometheus/procfs/internal/fs\"\n)\n\n// FS represents the pseudo-filesystem sys, which provides an interface to\n// kernel data structures.\ntype FS struct {\n\tproc   fs.FS\n\tisReal bool\n}\n\nconst (\n\t// DefaultMountPoint is the common mount point of the proc filesystem.\n\tDefaultMountPoint = fs.DefaultProcMountPoint\n\n\t// SectorSize represents the size of a sector in bytes.\n\t// It is specific to Linux block I/O operations.\n\tSectorSize = 512\n)\n\n// NewDefaultFS returns a new proc FS mounted under the default proc mountPoint.\n// It will error if the mount point directory can't be read or is a file.\nfunc NewDefaultFS() (FS, error) {\n\treturn NewFS(DefaultMountPoint)\n}\n\n// NewFS returns a new proc FS mounted under the given proc mountPoint. It will error\n// if the mount point directory can't be read or is a file.\nfunc NewFS(mountPoint string) (FS, error) {\n\tfs, err := fs.NewFS(mountPoint)\n\tif err != nil {\n\t\treturn FS{}, err\n\t}\n\n\tisReal, err := isRealProc(mountPoint)\n\tif err != nil {\n\t\treturn FS{}, err\n\t}\n\n\treturn FS{fs, isReal}, nil\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/fs_statfs_notype.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n//go:build !freebsd && !linux\n// +build !freebsd,!linux\n\npackage procfs\n\n// isRealProc returns true on architectures that don't have a Type argument\n// in their Statfs_t struct.\nfunc isRealProc(_ string) (bool, error) {\n\treturn true, nil\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/fs_statfs_type.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n//go:build freebsd || linux\n// +build freebsd linux\n\npackage procfs\n\nimport (\n\t\"syscall\"\n)\n\n// isRealProc determines whether supplied mountpoint is really a proc filesystem.\nfunc isRealProc(mountPoint string) (bool, error) {\n\tstat := syscall.Statfs_t{}\n\terr := syscall.Statfs(mountPoint, &stat)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\n\t// 0x9fa0 is PROC_SUPER_MAGIC: https://elixir.bootlin.com/linux/v6.1/source/include/uapi/linux/magic.h#L87\n\treturn stat.Type == 0x9fa0, nil\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/fscache.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage procfs\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/prometheus/procfs/internal/util\"\n)\n\n// Fscacheinfo represents fscache statistics.\ntype Fscacheinfo struct {\n\t// Number of index cookies allocated\n\tIndexCookiesAllocated uint64\n\t// data storage cookies allocated\n\tDataStorageCookiesAllocated uint64\n\t// Number of special cookies allocated\n\tSpecialCookiesAllocated uint64\n\t// Number of objects allocated\n\tObjectsAllocated uint64\n\t// Number of object allocation failures\n\tObjectAllocationsFailure uint64\n\t// Number of objects that reached the available state\n\tObjectsAvailable uint64\n\t// Number of objects that reached the dead state\n\tObjectsDead uint64\n\t// Number of objects that didn't have a coherency check\n\tObjectsWithoutCoherencyCheck uint64\n\t// Number of objects that passed a coherency check\n\tObjectsWithCoherencyCheck uint64\n\t// Number of objects that needed a coherency data update\n\tObjectsNeedCoherencyCheckUpdate uint64\n\t// Number of objects that were declared obsolete\n\tObjectsDeclaredObsolete uint64\n\t// Number of pages marked as being cached\n\tPagesMarkedAsBeingCached uint64\n\t// Number of uncache page requests seen\n\tUncachePagesRequestSeen uint64\n\t// Number of acquire cookie requests seen\n\tAcquireCookiesRequestSeen uint64\n\t// Number of acq reqs given a NULL parent\n\tAcquireRequestsWithNullParent uint64\n\t// Number of acq reqs rejected due to no cache available\n\tAcquireRequestsRejectedNoCacheAvailable uint64\n\t// Number of acq reqs succeeded\n\tAcquireRequestsSucceeded uint64\n\t// Number of acq reqs rejected due to error\n\tAcquireRequestsRejectedDueToError uint64\n\t// Number of acq reqs failed on ENOMEM\n\tAcquireRequestsFailedDueToEnomem uint64\n\t// Number of lookup calls made on cache backends\n\tLookupsNumber uint64\n\t// Number of negative lookups made\n\tLookupsNegative uint64\n\t// Number of positive lookups made\n\tLookupsPositive uint64\n\t// Number of objects created by lookup\n\tObjectsCreatedByLookup uint64\n\t// Number of lookups timed out and requeued\n\tLookupsTimedOutAndRequed uint64\n\tInvalidationsNumber      uint64\n\tInvalidationsRunning     uint64\n\t// Number of update cookie requests seen\n\tUpdateCookieRequestSeen uint64\n\t// Number of upd reqs given a NULL parent\n\tUpdateRequestsWithNullParent uint64\n\t// Number of upd reqs granted CPU time\n\tUpdateRequestsRunning uint64\n\t// Number of relinquish cookie requests seen\n\tRelinquishCookiesRequestSeen uint64\n\t// Number of rlq reqs given a NULL parent\n\tRelinquishCookiesWithNullParent uint64\n\t// Number of rlq reqs waited on completion of creation\n\tRelinquishRequestsWaitingCompleteCreation uint64\n\t// Relinqs rtr\n\tRelinquishRetries uint64\n\t// Number of attribute changed requests seen\n\tAttributeChangedRequestsSeen uint64\n\t// Number of attr changed requests queued\n\tAttributeChangedRequestsQueued uint64\n\t// Number of attr changed rejected -ENOBUFS\n\tAttributeChangedRejectDueToEnobufs uint64\n\t// Number of attr changed failed -ENOMEM\n\tAttributeChangedFailedDueToEnomem uint64\n\t// Number of attr changed ops given CPU time\n\tAttributeChangedOps uint64\n\t// Number of allocation requests seen\n\tAllocationRequestsSeen uint64\n\t// Number of successful alloc reqs\n\tAllocationOkRequests uint64\n\t// Number of alloc reqs that waited on lookup completion\n\tAllocationWaitingOnLookup uint64\n\t// Number of alloc reqs rejected -ENOBUFS\n\tAllocationsRejectedDueToEnobufs uint64\n\t// Number of alloc reqs aborted -ERESTARTSYS\n\tAllocationsAbortedDueToErestartsys uint64\n\t// Number of alloc reqs submitted\n\tAllocationOperationsSubmitted uint64\n\t// Number of alloc reqs waited for CPU time\n\tAllocationsWaitedForCPU uint64\n\t// Number of alloc reqs aborted due to object death\n\tAllocationsAbortedDueToObjectDeath uint64\n\t// Number of retrieval (read) requests seen\n\tRetrievalsReadRequests uint64\n\t// Number of successful retr reqs\n\tRetrievalsOk uint64\n\t// Number of retr reqs that waited on lookup completion\n\tRetrievalsWaitingLookupCompletion uint64\n\t// Number of retr reqs returned -ENODATA\n\tRetrievalsReturnedEnodata uint64\n\t// Number of retr reqs rejected -ENOBUFS\n\tRetrievalsRejectedDueToEnobufs uint64\n\t// Number of retr reqs aborted -ERESTARTSYS\n\tRetrievalsAbortedDueToErestartsys uint64\n\t// Number of retr reqs failed -ENOMEM\n\tRetrievalsFailedDueToEnomem uint64\n\t// Number of retr reqs submitted\n\tRetrievalsRequests uint64\n\t// Number of retr reqs waited for CPU time\n\tRetrievalsWaitingCPU uint64\n\t// Number of retr reqs aborted due to object death\n\tRetrievalsAbortedDueToObjectDeath uint64\n\t// Number of storage (write) requests seen\n\tStoreWriteRequests uint64\n\t// Number of successful store reqs\n\tStoreSuccessfulRequests uint64\n\t// Number of store reqs on a page already pending storage\n\tStoreRequestsOnPendingStorage uint64\n\t// Number of store reqs rejected -ENOBUFS\n\tStoreRequestsRejectedDueToEnobufs uint64\n\t// Number of store reqs failed -ENOMEM\n\tStoreRequestsFailedDueToEnomem uint64\n\t// Number of store reqs submitted\n\tStoreRequestsSubmitted uint64\n\t// Number of store reqs granted CPU time\n\tStoreRequestsRunning uint64\n\t// Number of pages given store req processing time\n\tStorePagesWithRequestsProcessing uint64\n\t// Number of store reqs deleted from tracking tree\n\tStoreRequestsDeleted uint64\n\t// Number of store reqs over store limit\n\tStoreRequestsOverStoreLimit uint64\n\t// Number of release reqs against pages with no pending store\n\tReleaseRequestsAgainstPagesWithNoPendingStorage uint64\n\t// Number of release reqs against pages stored by time lock granted\n\tReleaseRequestsAgainstPagesStoredByTimeLockGranted uint64\n\t// Number of release reqs ignored due to in-progress store\n\tReleaseRequestsIgnoredDueToInProgressStore uint64\n\t// Number of page stores canceled due to release req\n\tPageStoresCancelledByReleaseRequests uint64\n\tVmscanWaiting                        uint64\n\t// Number of times async ops added to pending queues\n\tOpsPending uint64\n\t// Number of times async ops given CPU time\n\tOpsRunning uint64\n\t// Number of times async ops queued for processing\n\tOpsEnqueued uint64\n\t// Number of async ops canceled\n\tOpsCancelled uint64\n\t// Number of async ops rejected due to object lookup/create failure\n\tOpsRejected uint64\n\t// Number of async ops initialized\n\tOpsInitialised uint64\n\t// Number of async ops queued for deferred release\n\tOpsDeferred uint64\n\t// Number of async ops released (should equal ini=N when idle)\n\tOpsReleased uint64\n\t// Number of deferred-release async ops garbage collected\n\tOpsGarbageCollected uint64\n\t// Number of in-progress alloc_object() cache ops\n\tCacheopAllocationsinProgress uint64\n\t// Number of in-progress lookup_object() cache ops\n\tCacheopLookupObjectInProgress uint64\n\t// Number of in-progress lookup_complete() cache ops\n\tCacheopLookupCompleteInPorgress uint64\n\t// Number of in-progress grab_object() cache ops\n\tCacheopGrabObjectInProgress uint64\n\tCacheopInvalidations        uint64\n\t// Number of in-progress update_object() cache ops\n\tCacheopUpdateObjectInProgress uint64\n\t// Number of in-progress drop_object() cache ops\n\tCacheopDropObjectInProgress uint64\n\t// Number of in-progress put_object() cache ops\n\tCacheopPutObjectInProgress uint64\n\t// Number of in-progress attr_changed() cache ops\n\tCacheopAttributeChangeInProgress uint64\n\t// Number of in-progress sync_cache() cache ops\n\tCacheopSyncCacheInProgress uint64\n\t// Number of in-progress read_or_alloc_page() cache ops\n\tCacheopReadOrAllocPageInProgress uint64\n\t// Number of in-progress read_or_alloc_pages() cache ops\n\tCacheopReadOrAllocPagesInProgress uint64\n\t// Number of in-progress allocate_page() cache ops\n\tCacheopAllocatePageInProgress uint64\n\t// Number of in-progress allocate_pages() cache ops\n\tCacheopAllocatePagesInProgress uint64\n\t// Number of in-progress write_page() cache ops\n\tCacheopWritePagesInProgress uint64\n\t// Number of in-progress uncache_page() cache ops\n\tCacheopUncachePagesInProgress uint64\n\t// Number of in-progress dissociate_pages() cache ops\n\tCacheopDissociatePagesInProgress uint64\n\t// Number of object lookups/creations rejected due to lack of space\n\tCacheevLookupsAndCreationsRejectedLackSpace uint64\n\t// Number of stale objects deleted\n\tCacheevStaleObjectsDeleted uint64\n\t// Number of objects retired when relinquished\n\tCacheevRetiredWhenReliquished uint64\n\t// Number of objects culled\n\tCacheevObjectsCulled uint64\n}\n\n// Fscacheinfo returns information about current fscache statistics.\n// See https://www.kernel.org/doc/Documentation/filesystems/caching/fscache.txt\nfunc (fs FS) Fscacheinfo() (Fscacheinfo, error) {\n\tb, err := util.ReadFileNoStat(fs.proc.Path(\"fs/fscache/stats\"))\n\tif err != nil {\n\t\treturn Fscacheinfo{}, err\n\t}\n\n\tm, err := parseFscacheinfo(bytes.NewReader(b))\n\tif err != nil {\n\t\treturn Fscacheinfo{}, fmt.Errorf(\"%w: Cannot parse %v: %w\", ErrFileParse, m, err)\n\t}\n\n\treturn *m, nil\n}\n\nfunc setFSCacheFields(fields []string, setFields ...*uint64) error {\n\tvar err error\n\tif len(fields) < len(setFields) {\n\t\treturn fmt.Errorf(\"%w: Expected %d, but got %d: %w\", ErrFileParse, len(setFields), len(fields), err)\n\t}\n\n\tfor i := range setFields {\n\t\t*setFields[i], err = strconv.ParseUint(strings.Split(fields[i], \"=\")[1], 0, 64)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc parseFscacheinfo(r io.Reader) (*Fscacheinfo, error) {\n\tvar m Fscacheinfo\n\ts := bufio.NewScanner(r)\n\tfor s.Scan() {\n\t\tfields := strings.Fields(s.Text())\n\t\tif len(fields) < 2 {\n\t\t\treturn nil, fmt.Errorf(\"%w: malformed Fscacheinfo line: %q\", ErrFileParse, s.Text())\n\t\t}\n\n\t\tswitch fields[0] {\n\t\tcase \"Cookies:\":\n\t\t\terr := setFSCacheFields(fields[1:], &m.IndexCookiesAllocated, &m.DataStorageCookiesAllocated,\n\t\t\t\t&m.SpecialCookiesAllocated)\n\t\t\tif err != nil {\n\t\t\t\treturn &m, err\n\t\t\t}\n\t\tcase \"Objects:\":\n\t\t\terr := setFSCacheFields(fields[1:], &m.ObjectsAllocated, &m.ObjectAllocationsFailure,\n\t\t\t\t&m.ObjectsAvailable, &m.ObjectsDead)\n\t\t\tif err != nil {\n\t\t\t\treturn &m, err\n\t\t\t}\n\t\tcase \"ChkAux\":\n\t\t\terr := setFSCacheFields(fields[2:], &m.ObjectsWithoutCoherencyCheck, &m.ObjectsWithCoherencyCheck,\n\t\t\t\t&m.ObjectsNeedCoherencyCheckUpdate, &m.ObjectsDeclaredObsolete)\n\t\t\tif err != nil {\n\t\t\t\treturn &m, err\n\t\t\t}\n\t\tcase \"Pages\":\n\t\t\terr := setFSCacheFields(fields[2:], &m.PagesMarkedAsBeingCached, &m.UncachePagesRequestSeen)\n\t\t\tif err != nil {\n\t\t\t\treturn &m, err\n\t\t\t}\n\t\tcase \"Acquire:\":\n\t\t\terr := setFSCacheFields(fields[1:], &m.AcquireCookiesRequestSeen, &m.AcquireRequestsWithNullParent,\n\t\t\t\t&m.AcquireRequestsRejectedNoCacheAvailable, &m.AcquireRequestsSucceeded, &m.AcquireRequestsRejectedDueToError,\n\t\t\t\t&m.AcquireRequestsFailedDueToEnomem)\n\t\t\tif err != nil {\n\t\t\t\treturn &m, err\n\t\t\t}\n\t\tcase \"Lookups:\":\n\t\t\terr := setFSCacheFields(fields[1:], &m.LookupsNumber, &m.LookupsNegative, &m.LookupsPositive,\n\t\t\t\t&m.ObjectsCreatedByLookup, &m.LookupsTimedOutAndRequed)\n\t\t\tif err != nil {\n\t\t\t\treturn &m, err\n\t\t\t}\n\t\tcase \"Invals\":\n\t\t\terr := setFSCacheFields(fields[2:], &m.InvalidationsNumber, &m.InvalidationsRunning)\n\t\t\tif err != nil {\n\t\t\t\treturn &m, err\n\t\t\t}\n\t\tcase \"Updates:\":\n\t\t\terr := setFSCacheFields(fields[1:], &m.UpdateCookieRequestSeen, &m.UpdateRequestsWithNullParent,\n\t\t\t\t&m.UpdateRequestsRunning)\n\t\t\tif err != nil {\n\t\t\t\treturn &m, err\n\t\t\t}\n\t\tcase \"Relinqs:\":\n\t\t\terr := setFSCacheFields(fields[1:], &m.RelinquishCookiesRequestSeen, &m.RelinquishCookiesWithNullParent,\n\t\t\t\t&m.RelinquishRequestsWaitingCompleteCreation, &m.RelinquishRetries)\n\t\t\tif err != nil {\n\t\t\t\treturn &m, err\n\t\t\t}\n\t\tcase \"AttrChg:\":\n\t\t\terr := setFSCacheFields(fields[1:], &m.AttributeChangedRequestsSeen, &m.AttributeChangedRequestsQueued,\n\t\t\t\t&m.AttributeChangedRejectDueToEnobufs, &m.AttributeChangedFailedDueToEnomem, &m.AttributeChangedOps)\n\t\t\tif err != nil {\n\t\t\t\treturn &m, err\n\t\t\t}\n\t\tcase \"Allocs\":\n\t\t\tif strings.Split(fields[2], \"=\")[0] == \"n\" {\n\t\t\t\terr := setFSCacheFields(fields[2:], &m.AllocationRequestsSeen, &m.AllocationOkRequests,\n\t\t\t\t\t&m.AllocationWaitingOnLookup, &m.AllocationsRejectedDueToEnobufs, &m.AllocationsAbortedDueToErestartsys)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn &m, err\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\terr := setFSCacheFields(fields[2:], &m.AllocationOperationsSubmitted, &m.AllocationsWaitedForCPU,\n\t\t\t\t\t&m.AllocationsAbortedDueToObjectDeath)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn &m, err\n\t\t\t\t}\n\t\t\t}\n\t\tcase \"Retrvls:\":\n\t\t\tif strings.Split(fields[1], \"=\")[0] == \"n\" {\n\t\t\t\terr := setFSCacheFields(fields[1:], &m.RetrievalsReadRequests, &m.RetrievalsOk, &m.RetrievalsWaitingLookupCompletion,\n\t\t\t\t\t&m.RetrievalsReturnedEnodata, &m.RetrievalsRejectedDueToEnobufs, &m.RetrievalsAbortedDueToErestartsys,\n\t\t\t\t\t&m.RetrievalsFailedDueToEnomem)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn &m, err\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\terr := setFSCacheFields(fields[1:], &m.RetrievalsRequests, &m.RetrievalsWaitingCPU, &m.RetrievalsAbortedDueToObjectDeath)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn &m, err\n\t\t\t\t}\n\t\t\t}\n\t\tcase \"Stores\":\n\t\t\tif strings.Split(fields[2], \"=\")[0] == \"n\" {\n\t\t\t\terr := setFSCacheFields(fields[2:], &m.StoreWriteRequests, &m.StoreSuccessfulRequests,\n\t\t\t\t\t&m.StoreRequestsOnPendingStorage, &m.StoreRequestsRejectedDueToEnobufs, &m.StoreRequestsFailedDueToEnomem)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn &m, err\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\terr := setFSCacheFields(fields[2:], &m.StoreRequestsSubmitted, &m.StoreRequestsRunning,\n\t\t\t\t\t&m.StorePagesWithRequestsProcessing, &m.StoreRequestsDeleted, &m.StoreRequestsOverStoreLimit)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn &m, err\n\t\t\t\t}\n\t\t\t}\n\t\tcase \"VmScan\":\n\t\t\terr := setFSCacheFields(fields[2:], &m.ReleaseRequestsAgainstPagesWithNoPendingStorage,\n\t\t\t\t&m.ReleaseRequestsAgainstPagesStoredByTimeLockGranted, &m.ReleaseRequestsIgnoredDueToInProgressStore,\n\t\t\t\t&m.PageStoresCancelledByReleaseRequests, &m.VmscanWaiting)\n\t\t\tif err != nil {\n\t\t\t\treturn &m, err\n\t\t\t}\n\t\tcase \"Ops\":\n\t\t\tif strings.Split(fields[2], \"=\")[0] == \"pend\" {\n\t\t\t\terr := setFSCacheFields(fields[2:], &m.OpsPending, &m.OpsRunning, &m.OpsEnqueued, &m.OpsCancelled, &m.OpsRejected)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn &m, err\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\terr := setFSCacheFields(fields[2:], &m.OpsInitialised, &m.OpsDeferred, &m.OpsReleased, &m.OpsGarbageCollected)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn &m, err\n\t\t\t\t}\n\t\t\t}\n\t\tcase \"CacheOp:\":\n\t\t\tswitch strings.Split(fields[1], \"=\")[0] {\n\t\t\tcase \"alo\":\n\t\t\t\terr := setFSCacheFields(fields[1:], &m.CacheopAllocationsinProgress, &m.CacheopLookupObjectInProgress,\n\t\t\t\t\t&m.CacheopLookupCompleteInPorgress, &m.CacheopGrabObjectInProgress)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn &m, err\n\t\t\t\t}\n\t\t\tcase \"inv\":\n\t\t\t\terr := setFSCacheFields(fields[1:], &m.CacheopInvalidations, &m.CacheopUpdateObjectInProgress,\n\t\t\t\t\t&m.CacheopDropObjectInProgress, &m.CacheopPutObjectInProgress, &m.CacheopAttributeChangeInProgress,\n\t\t\t\t\t&m.CacheopSyncCacheInProgress)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn &m, err\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\terr := setFSCacheFields(fields[1:], &m.CacheopReadOrAllocPageInProgress, &m.CacheopReadOrAllocPagesInProgress,\n\t\t\t\t\t&m.CacheopAllocatePageInProgress, &m.CacheopAllocatePagesInProgress, &m.CacheopWritePagesInProgress,\n\t\t\t\t\t&m.CacheopUncachePagesInProgress, &m.CacheopDissociatePagesInProgress)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn &m, err\n\t\t\t\t}\n\t\t\t}\n\t\tcase \"CacheEv:\":\n\t\t\terr := setFSCacheFields(fields[1:], &m.CacheevLookupsAndCreationsRejectedLackSpace, &m.CacheevStaleObjectsDeleted,\n\t\t\t\t&m.CacheevRetiredWhenReliquished, &m.CacheevObjectsCulled)\n\t\t\tif err != nil {\n\t\t\t\treturn &m, err\n\t\t\t}\n\t\t}\n\t}\n\n\treturn &m, nil\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/internal/fs/fs.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage fs\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n)\n\nconst (\n\t// DefaultProcMountPoint is the common mount point of the proc filesystem.\n\tDefaultProcMountPoint = \"/proc\"\n\n\t// DefaultSysMountPoint is the common mount point of the sys filesystem.\n\tDefaultSysMountPoint = \"/sys\"\n\n\t// DefaultConfigfsMountPoint is the common mount point of the configfs.\n\tDefaultConfigfsMountPoint = \"/sys/kernel/config\"\n\n\t// DefaultSelinuxMountPoint is the common mount point of the selinuxfs.\n\tDefaultSelinuxMountPoint = \"/sys/fs/selinux\"\n)\n\n// FS represents a pseudo-filesystem, normally /proc or /sys, which provides an\n// interface to kernel data structures.\ntype FS string\n\n// NewFS returns a new FS mounted under the given mountPoint. It will error\n// if the mount point can't be read.\nfunc NewFS(mountPoint string) (FS, error) {\n\tinfo, err := os.Stat(mountPoint)\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"could not read %q: %w\", mountPoint, err)\n\t}\n\tif !info.IsDir() {\n\t\treturn \"\", fmt.Errorf(\"mount point %q is not a directory\", mountPoint)\n\t}\n\n\treturn FS(mountPoint), nil\n}\n\n// Path appends the given path elements to the filesystem path, adding separators\n// as necessary.\nfunc (fs FS) Path(p ...string) string {\n\treturn filepath.Join(append([]string{string(fs)}, p...)...)\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/internal/util/parse.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage util\n\nimport (\n\t\"errors\"\n\t\"os\"\n\t\"strconv\"\n\t\"strings\"\n)\n\n// ParseUint32s parses a slice of strings into a slice of uint32s.\nfunc ParseUint32s(ss []string) ([]uint32, error) {\n\tus := make([]uint32, 0, len(ss))\n\tfor _, s := range ss {\n\t\tu, err := strconv.ParseUint(s, 10, 32)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tus = append(us, uint32(u))\n\t}\n\n\treturn us, nil\n}\n\n// ParseUint64s parses a slice of strings into a slice of uint64s.\nfunc ParseUint64s(ss []string) ([]uint64, error) {\n\tus := make([]uint64, 0, len(ss))\n\tfor _, s := range ss {\n\t\tu, err := strconv.ParseUint(s, 10, 64)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tus = append(us, u)\n\t}\n\n\treturn us, nil\n}\n\n// ParsePInt64s parses a slice of strings into a slice of int64 pointers.\nfunc ParsePInt64s(ss []string) ([]*int64, error) {\n\tus := make([]*int64, 0, len(ss))\n\tfor _, s := range ss {\n\t\tu, err := strconv.ParseInt(s, 10, 64)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tus = append(us, &u)\n\t}\n\n\treturn us, nil\n}\n\n// Parses a uint64 from given hex in string.\nfunc ParseHexUint64s(ss []string) ([]*uint64, error) {\n\tus := make([]*uint64, 0, len(ss))\n\tfor _, s := range ss {\n\t\tu, err := strconv.ParseUint(s, 16, 64)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tus = append(us, &u)\n\t}\n\n\treturn us, nil\n}\n\n// ReadUintFromFile reads a file and attempts to parse a uint64 from it.\nfunc ReadUintFromFile(path string) (uint64, error) {\n\tdata, err := os.ReadFile(path)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\treturn strconv.ParseUint(strings.TrimSpace(string(data)), 10, 64)\n}\n\n// ReadIntFromFile reads a file and attempts to parse a int64 from it.\nfunc ReadIntFromFile(path string) (int64, error) {\n\tdata, err := os.ReadFile(path)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\treturn strconv.ParseInt(strings.TrimSpace(string(data)), 10, 64)\n}\n\n// ParseBool parses a string into a boolean pointer.\nfunc ParseBool(b string) *bool {\n\tvar truth bool\n\tswitch b {\n\tcase \"enabled\":\n\t\ttruth = true\n\tcase \"disabled\":\n\t\ttruth = false\n\tdefault:\n\t\treturn nil\n\t}\n\treturn &truth\n}\n\n// ReadHexFromFile reads a file and attempts to parse a uint64 from a hexadecimal format 0xXX.\nfunc ReadHexFromFile(path string) (uint64, error) {\n\tdata, err := os.ReadFile(path)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\thexString := strings.TrimSpace(string(data))\n\tif !strings.HasPrefix(hexString, \"0x\") {\n\t\treturn 0, errors.New(\"invalid format: hex string does not start with '0x'\")\n\t}\n\treturn strconv.ParseUint(hexString[2:], 16, 64)\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/internal/util/readfile.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage util\n\nimport (\n\t\"io\"\n\t\"os\"\n)\n\n// ReadFileNoStat uses io.ReadAll to read contents of entire file.\n// This is similar to os.ReadFile but without the call to os.Stat, because\n// many files in /proc and /sys report incorrect file sizes (either 0 or 4096).\n// Reads a max file size of 1024kB.  For files larger than this, a scanner\n// should be used.\nfunc ReadFileNoStat(filename string) ([]byte, error) {\n\tconst maxBufferSize = 1024 * 1024\n\n\tf, err := os.Open(filename)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer f.Close()\n\n\treader := io.LimitReader(f, maxBufferSize)\n\treturn io.ReadAll(reader)\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/internal/util/sysreadfile.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n//go:build (linux || darwin) && !appengine\n// +build linux darwin\n// +build !appengine\n\npackage util\n\nimport (\n\t\"bytes\"\n\t\"os\"\n\t\"strconv\"\n\t\"strings\"\n\t\"syscall\"\n)\n\n// SysReadFile is a simplified os.ReadFile that invokes syscall.Read directly.\n// https://github.com/prometheus/node_exporter/pull/728/files\n//\n// Note that this function will not read files larger than 128 bytes.\nfunc SysReadFile(file string) (string, error) {\n\tf, err := os.Open(file)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tdefer f.Close()\n\n\t// On some machines, hwmon drivers are broken and return EAGAIN.  This causes\n\t// Go's os.ReadFile implementation to poll forever.\n\t//\n\t// Since we either want to read data or bail immediately, do the simplest\n\t// possible read using syscall directly.\n\tconst sysFileBufferSize = 128\n\tb := make([]byte, sysFileBufferSize)\n\tn, err := syscall.Read(int(f.Fd()), b)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\treturn string(bytes.TrimSpace(b[:n])), nil\n}\n\n// SysReadUintFromFile reads a file using SysReadFile and attempts to parse a uint64 from it.\nfunc SysReadUintFromFile(path string) (uint64, error) {\n\tdata, err := SysReadFile(path)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\treturn strconv.ParseUint(strings.TrimSpace(string(data)), 10, 64)\n}\n\n// SysReadIntFromFile reads a file using SysReadFile and attempts to parse a int64 from it.\nfunc SysReadIntFromFile(path string) (int64, error) {\n\tdata, err := SysReadFile(path)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\treturn strconv.ParseInt(strings.TrimSpace(string(data)), 10, 64)\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/internal/util/sysreadfile_compat.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n//go:build (linux && appengine) || (!linux && !darwin)\n// +build linux,appengine !linux,!darwin\n\npackage util\n\nimport (\n\t\"fmt\"\n)\n\n// SysReadFile is here implemented as a noop for builds that do not support\n// the read syscall. For example Windows, or Linux on Google App Engine.\nfunc SysReadFile(file string) (string, error) {\n\treturn \"\", fmt.Errorf(\"not supported on this platform\")\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/internal/util/valueparser.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage util\n\nimport (\n\t\"strconv\"\n)\n\n// TODO(mdlayher): util packages are an anti-pattern and this should be moved\n// somewhere else that is more focused in the future.\n\n// A ValueParser enables parsing a single string into a variety of data types\n// in a concise and safe way. The Err method must be invoked after invoking\n// any other methods to ensure a value was successfully parsed.\ntype ValueParser struct {\n\tv   string\n\terr error\n}\n\n// NewValueParser creates a ValueParser using the input string.\nfunc NewValueParser(v string) *ValueParser {\n\treturn &ValueParser{v: v}\n}\n\n// Int interprets the underlying value as an int and returns that value.\nfunc (vp *ValueParser) Int() int { return int(vp.int64()) }\n\n// PInt64 interprets the underlying value as an int64 and returns a pointer to\n// that value.\nfunc (vp *ValueParser) PInt64() *int64 {\n\tif vp.err != nil {\n\t\treturn nil\n\t}\n\n\tv := vp.int64()\n\treturn &v\n}\n\n// int64 interprets the underlying value as an int64 and returns that value.\n// TODO: export if/when necessary.\nfunc (vp *ValueParser) int64() int64 {\n\tif vp.err != nil {\n\t\treturn 0\n\t}\n\n\t// A base value of zero makes ParseInt infer the correct base using the\n\t// string's prefix, if any.\n\tconst base = 0\n\tv, err := strconv.ParseInt(vp.v, base, 64)\n\tif err != nil {\n\t\tvp.err = err\n\t\treturn 0\n\t}\n\n\treturn v\n}\n\n// PUInt64 interprets the underlying value as an uint64 and returns a pointer to\n// that value.\nfunc (vp *ValueParser) PUInt64() *uint64 {\n\tif vp.err != nil {\n\t\treturn nil\n\t}\n\n\t// A base value of zero makes ParseInt infer the correct base using the\n\t// string's prefix, if any.\n\tconst base = 0\n\tv, err := strconv.ParseUint(vp.v, base, 64)\n\tif err != nil {\n\t\tvp.err = err\n\t\treturn nil\n\t}\n\n\treturn &v\n}\n\n// Err returns the last error, if any, encountered by the ValueParser.\nfunc (vp *ValueParser) Err() error {\n\treturn vp.err\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/ipvs.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage procfs\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"encoding/hex\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"net\"\n\t\"os\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/prometheus/procfs/internal/util\"\n)\n\n// IPVSStats holds IPVS statistics, as exposed by the kernel in `/proc/net/ip_vs_stats`.\ntype IPVSStats struct {\n\t// Total count of connections.\n\tConnections uint64\n\t// Total incoming packages processed.\n\tIncomingPackets uint64\n\t// Total outgoing packages processed.\n\tOutgoingPackets uint64\n\t// Total incoming traffic.\n\tIncomingBytes uint64\n\t// Total outgoing traffic.\n\tOutgoingBytes uint64\n}\n\n// IPVSBackendStatus holds current metrics of one virtual / real address pair.\ntype IPVSBackendStatus struct {\n\t// The local (virtual) IP address.\n\tLocalAddress net.IP\n\t// The remote (real) IP address.\n\tRemoteAddress net.IP\n\t// The local (virtual) port.\n\tLocalPort uint16\n\t// The remote (real) port.\n\tRemotePort uint16\n\t// The local firewall mark\n\tLocalMark string\n\t// The transport protocol (TCP, UDP).\n\tProto string\n\t// The current number of active connections for this virtual/real address pair.\n\tActiveConn uint64\n\t// The current number of inactive connections for this virtual/real address pair.\n\tInactConn uint64\n\t// The current weight of this virtual/real address pair.\n\tWeight uint64\n}\n\n// IPVSStats reads the IPVS statistics from the specified `proc` filesystem.\nfunc (fs FS) IPVSStats() (IPVSStats, error) {\n\tdata, err := util.ReadFileNoStat(fs.proc.Path(\"net/ip_vs_stats\"))\n\tif err != nil {\n\t\treturn IPVSStats{}, err\n\t}\n\n\treturn parseIPVSStats(bytes.NewReader(data))\n}\n\n// parseIPVSStats performs the actual parsing of `ip_vs_stats`.\nfunc parseIPVSStats(r io.Reader) (IPVSStats, error) {\n\tvar (\n\t\tstatContent []byte\n\t\tstatLines   []string\n\t\tstatFields  []string\n\t\tstats       IPVSStats\n\t)\n\n\tstatContent, err := io.ReadAll(r)\n\tif err != nil {\n\t\treturn IPVSStats{}, err\n\t}\n\n\tstatLines = strings.SplitN(string(statContent), \"\\n\", 4)\n\tif len(statLines) != 4 {\n\t\treturn IPVSStats{}, errors.New(\"ip_vs_stats corrupt: too short\")\n\t}\n\n\tstatFields = strings.Fields(statLines[2])\n\tif len(statFields) != 5 {\n\t\treturn IPVSStats{}, errors.New(\"ip_vs_stats corrupt: unexpected number of fields\")\n\t}\n\n\tstats.Connections, err = strconv.ParseUint(statFields[0], 16, 64)\n\tif err != nil {\n\t\treturn IPVSStats{}, err\n\t}\n\tstats.IncomingPackets, err = strconv.ParseUint(statFields[1], 16, 64)\n\tif err != nil {\n\t\treturn IPVSStats{}, err\n\t}\n\tstats.OutgoingPackets, err = strconv.ParseUint(statFields[2], 16, 64)\n\tif err != nil {\n\t\treturn IPVSStats{}, err\n\t}\n\tstats.IncomingBytes, err = strconv.ParseUint(statFields[3], 16, 64)\n\tif err != nil {\n\t\treturn IPVSStats{}, err\n\t}\n\tstats.OutgoingBytes, err = strconv.ParseUint(statFields[4], 16, 64)\n\tif err != nil {\n\t\treturn IPVSStats{}, err\n\t}\n\n\treturn stats, nil\n}\n\n// IPVSBackendStatus reads and returns the status of all (virtual,real) server pairs from the specified `proc` filesystem.\nfunc (fs FS) IPVSBackendStatus() ([]IPVSBackendStatus, error) {\n\tfile, err := os.Open(fs.proc.Path(\"net/ip_vs\"))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer file.Close()\n\n\treturn parseIPVSBackendStatus(file)\n}\n\nfunc parseIPVSBackendStatus(file io.Reader) ([]IPVSBackendStatus, error) {\n\tvar (\n\t\tstatus       []IPVSBackendStatus\n\t\tscanner      = bufio.NewScanner(file)\n\t\tproto        string\n\t\tlocalMark    string\n\t\tlocalAddress net.IP\n\t\tlocalPort    uint16\n\t\terr          error\n\t)\n\n\tfor scanner.Scan() {\n\t\tfields := strings.Fields(scanner.Text())\n\t\tif len(fields) == 0 {\n\t\t\tcontinue\n\t\t}\n\t\tswitch {\n\t\tcase fields[0] == \"IP\" || fields[0] == \"Prot\" || fields[1] == \"RemoteAddress:Port\":\n\t\t\tcontinue\n\t\tcase fields[0] == \"TCP\" || fields[0] == \"UDP\":\n\t\t\tif len(fields) < 2 {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tproto = fields[0]\n\t\t\tlocalMark = \"\"\n\t\t\tlocalAddress, localPort, err = parseIPPort(fields[1])\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\tcase fields[0] == \"FWM\":\n\t\t\tif len(fields) < 2 {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tproto = fields[0]\n\t\t\tlocalMark = fields[1]\n\t\t\tlocalAddress = nil\n\t\t\tlocalPort = 0\n\t\tcase fields[0] == \"->\":\n\t\t\tif len(fields) < 6 {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tremoteAddress, remotePort, err := parseIPPort(fields[1])\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tweight, err := strconv.ParseUint(fields[3], 10, 64)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tactiveConn, err := strconv.ParseUint(fields[4], 10, 64)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tinactConn, err := strconv.ParseUint(fields[5], 10, 64)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tstatus = append(status, IPVSBackendStatus{\n\t\t\t\tLocalAddress:  localAddress,\n\t\t\t\tLocalPort:     localPort,\n\t\t\t\tLocalMark:     localMark,\n\t\t\t\tRemoteAddress: remoteAddress,\n\t\t\t\tRemotePort:    remotePort,\n\t\t\t\tProto:         proto,\n\t\t\t\tWeight:        weight,\n\t\t\t\tActiveConn:    activeConn,\n\t\t\t\tInactConn:     inactConn,\n\t\t\t})\n\t\t}\n\t}\n\treturn status, nil\n}\n\nfunc parseIPPort(s string) (net.IP, uint16, error) {\n\tvar (\n\t\tip  net.IP\n\t\terr error\n\t)\n\n\tswitch len(s) {\n\tcase 13:\n\t\tip, err = hex.DecodeString(s[0:8])\n\t\tif err != nil {\n\t\t\treturn nil, 0, err\n\t\t}\n\tcase 46:\n\t\tip = net.ParseIP(s[1:40])\n\t\tif ip == nil {\n\t\t\treturn nil, 0, fmt.Errorf(\"%w: Invalid IPv6 addr %s: %w\", ErrFileParse, s[1:40], err)\n\t\t}\n\tdefault:\n\t\treturn nil, 0, fmt.Errorf(\"%w: Unexpected IP:Port %s: %w\", ErrFileParse, s, err)\n\t}\n\n\tportString := s[len(s)-4:]\n\tif len(portString) != 4 {\n\t\treturn nil, 0,\n\t\t\tfmt.Errorf(\"%w: Unexpected port string format %s: %w\", ErrFileParse, portString, err)\n\t}\n\tport, err := strconv.ParseUint(portString, 16, 16)\n\tif err != nil {\n\t\treturn nil, 0, err\n\t}\n\n\treturn ip, uint16(port), nil\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/kernel_hung.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n//go:build !windows\n// +build !windows\n\npackage procfs\n\nimport (\n\t\"os\"\n\t\"strconv\"\n\t\"strings\"\n)\n\n// KernelHung contains information about to the kernel's hung_task_detect_count number.\ntype KernelHung struct {\n\t// Indicates the total number of tasks that have been detected as hung since the system boot.\n\t// This file shows up if `CONFIG_DETECT_HUNG_TASK` is enabled.\n\tHungTaskDetectCount *uint64\n}\n\n// KernelHung returns values from /proc/sys/kernel/hung_task_detect_count.\nfunc (fs FS) KernelHung() (KernelHung, error) {\n\tdata, err := os.ReadFile(fs.proc.Path(\"sys\", \"kernel\", \"hung_task_detect_count\"))\n\tif err != nil {\n\t\treturn KernelHung{}, err\n\t}\n\tval, err := strconv.ParseUint(strings.TrimSpace(string(data)), 10, 64)\n\tif err != nil {\n\t\treturn KernelHung{}, err\n\t}\n\treturn KernelHung{\n\t\tHungTaskDetectCount: &val,\n\t}, nil\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/kernel_random.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n//go:build !windows\n// +build !windows\n\npackage procfs\n\nimport (\n\t\"os\"\n\n\t\"github.com/prometheus/procfs/internal/util\"\n)\n\n// KernelRandom contains information about to the kernel's random number generator.\ntype KernelRandom struct {\n\t// EntropyAvaliable gives the available entropy, in bits.\n\tEntropyAvaliable *uint64\n\t// PoolSize gives the size of the entropy pool, in bits.\n\tPoolSize *uint64\n\t// URandomMinReseedSeconds is the number of seconds after which the DRNG will be reseeded.\n\tURandomMinReseedSeconds *uint64\n\t// WriteWakeupThreshold the number of bits of entropy below which we wake up processes\n\t// that do a select(2) or poll(2) for write access to /dev/random.\n\tWriteWakeupThreshold *uint64\n\t// ReadWakeupThreshold is the number of bits of entropy required for waking up processes that sleep\n\t// waiting for entropy from /dev/random.\n\tReadWakeupThreshold *uint64\n}\n\n// KernelRandom returns values from /proc/sys/kernel/random.\nfunc (fs FS) KernelRandom() (KernelRandom, error) {\n\trandom := KernelRandom{}\n\n\tfor file, p := range map[string]**uint64{\n\t\t\"entropy_avail\":           &random.EntropyAvaliable,\n\t\t\"poolsize\":                &random.PoolSize,\n\t\t\"urandom_min_reseed_secs\": &random.URandomMinReseedSeconds,\n\t\t\"write_wakeup_threshold\":  &random.WriteWakeupThreshold,\n\t\t\"read_wakeup_threshold\":   &random.ReadWakeupThreshold,\n\t} {\n\t\tval, err := util.ReadUintFromFile(fs.proc.Path(\"sys\", \"kernel\", \"random\", file))\n\t\tif os.IsNotExist(err) {\n\t\t\tcontinue\n\t\t}\n\t\tif err != nil {\n\t\t\treturn random, err\n\t\t}\n\t\t*p = &val\n\t}\n\n\treturn random, nil\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/loadavg.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage procfs\n\nimport (\n\t\"fmt\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/prometheus/procfs/internal/util\"\n)\n\n// LoadAvg represents an entry in /proc/loadavg.\ntype LoadAvg struct {\n\tLoad1  float64\n\tLoad5  float64\n\tLoad15 float64\n}\n\n// LoadAvg returns loadavg from /proc.\nfunc (fs FS) LoadAvg() (*LoadAvg, error) {\n\tpath := fs.proc.Path(\"loadavg\")\n\n\tdata, err := util.ReadFileNoStat(path)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn parseLoad(data)\n}\n\n// Parse /proc loadavg and return 1m, 5m and 15m.\nfunc parseLoad(loadavgBytes []byte) (*LoadAvg, error) {\n\tloads := make([]float64, 3)\n\tparts := strings.Fields(string(loadavgBytes))\n\tif len(parts) < 3 {\n\t\treturn nil, fmt.Errorf(\"%w: Malformed line %q\", ErrFileParse, string(loadavgBytes))\n\t}\n\n\tvar err error\n\tfor i, load := range parts[0:3] {\n\t\tloads[i], err = strconv.ParseFloat(load, 64)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"%w: Cannot parse load: %f: %w\", ErrFileParse, loads[i], err)\n\t\t}\n\t}\n\treturn &LoadAvg{\n\t\tLoad1:  loads[0],\n\t\tLoad5:  loads[1],\n\t\tLoad15: loads[2],\n\t}, nil\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/mdstat.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage procfs\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n)\n\nvar (\n\tstatusLineRE         = regexp.MustCompile(`(\\d+) blocks .*\\[(\\d+)/(\\d+)\\] \\[([U_]+)\\]`)\n\trecoveryLineBlocksRE = regexp.MustCompile(`\\((\\d+/\\d+)\\)`)\n\trecoveryLinePctRE    = regexp.MustCompile(`= (.+)%`)\n\trecoveryLineFinishRE = regexp.MustCompile(`finish=(.+)min`)\n\trecoveryLineSpeedRE  = regexp.MustCompile(`speed=(.+)[A-Z]`)\n\tcomponentDeviceRE    = regexp.MustCompile(`(.*)\\[(\\d+)\\](\\([SF]+\\))?`)\n\tpersonalitiesPrefix  = \"Personalities : \"\n)\n\ntype MDStatComponent struct {\n\t// Name of the component device.\n\tName string\n\t// DescriptorIndex number of component device, e.g. the order in the superblock.\n\tDescriptorIndex int32\n\t// Flags per Linux drivers/md/md.[ch] as of v6.12-rc1\n\t// Subset that are exposed in mdstat\n\tWriteMostly bool\n\tJournal     bool\n\tFaulty      bool // \"Faulty\" is what kernel source uses for \"(F)\"\n\tSpare       bool\n\tReplacement bool\n\t// Some additional flags that are NOT exposed in procfs today; they may\n\t// be available via sysfs.\n\t// In_sync, Bitmap_sync, Blocked, WriteErrorSeen, FaultRecorded,\n\t// BlockedBadBlocks, WantReplacement, Candidate, ...\n}\n\n// MDStat holds info parsed from /proc/mdstat.\ntype MDStat struct {\n\t// Name of the device.\n\tName string\n\t// raid type of the device.\n\tType string\n\t// activity-state of the device.\n\tActivityState string\n\t// Number of active disks.\n\tDisksActive int64\n\t// Total number of disks the device requires.\n\tDisksTotal int64\n\t// Number of failed disks.\n\tDisksFailed int64\n\t// Number of \"down\" disks. (the _ indicator in the status line)\n\tDisksDown int64\n\t// Spare disks in the device.\n\tDisksSpare int64\n\t// Number of blocks the device holds.\n\tBlocksTotal int64\n\t// Number of blocks on the device that are in sync.\n\tBlocksSynced int64\n\t// Number of blocks on the device that need to be synced.\n\tBlocksToBeSynced int64\n\t// progress percentage of current sync\n\tBlocksSyncedPct float64\n\t// estimated finishing time for current sync (in minutes)\n\tBlocksSyncedFinishTime float64\n\t// current sync speed (in Kilobytes/sec)\n\tBlocksSyncedSpeed float64\n\t// component devices\n\tDevices []MDStatComponent\n}\n\n// MDStat parses an mdstat-file (/proc/mdstat) and returns a slice of\n// structs containing the relevant info.  More information available here:\n// https://raid.wiki.kernel.org/index.php/Mdstat\nfunc (fs FS) MDStat() ([]MDStat, error) {\n\tdata, err := os.ReadFile(fs.proc.Path(\"mdstat\"))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tmdstat, err := parseMDStat(data)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"%w: Cannot parse %v: %w\", ErrFileParse, fs.proc.Path(\"mdstat\"), err)\n\t}\n\treturn mdstat, nil\n}\n\n// parseMDStat parses data from mdstat file (/proc/mdstat) and returns a slice of\n// structs containing the relevant info.\nfunc parseMDStat(mdStatData []byte) ([]MDStat, error) {\n\t// TODO:\n\t// - parse global hotspares from the \"unused devices\" line.\n\tmdStats := []MDStat{}\n\tlines := strings.Split(string(mdStatData), \"\\n\")\n\tknownRaidTypes := make(map[string]bool)\n\n\tfor i, line := range lines {\n\t\tif strings.TrimSpace(line) == \"\" || line[0] == ' ' ||\n\t\t\tstrings.HasPrefix(line, \"unused\") {\n\t\t\tcontinue\n\t\t}\n\t\t// Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]\n\t\tif len(knownRaidTypes) == 0 && strings.HasPrefix(line, personalitiesPrefix) {\n\t\t\tpersonalities := strings.Fields(line[len(personalitiesPrefix):])\n\t\t\tfor _, word := range personalities {\n\t\t\t\tword := word[1 : len(word)-1]\n\t\t\t\tknownRaidTypes[word] = true\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\tdeviceFields := strings.Fields(line)\n\t\tif len(deviceFields) < 3 {\n\t\t\treturn nil, fmt.Errorf(\"%w: Expected 3+ lines, got %q\", ErrFileParse, line)\n\t\t}\n\t\tmdName := deviceFields[0] // mdx\n\t\tstate := deviceFields[2]  // active, inactive, broken\n\n\t\tmdType := \"unknown\" // raid1, raid5, etc.\n\t\tvar deviceStartIndex int\n\t\tif len(deviceFields) > 3 { // mdType may be in the 3rd or 4th field\n\t\t\tif isRaidType(deviceFields[3], knownRaidTypes) {\n\t\t\t\tmdType = deviceFields[3]\n\t\t\t\tdeviceStartIndex = 4\n\t\t\t} else if len(deviceFields) > 4 && isRaidType(deviceFields[4], knownRaidTypes) {\n\t\t\t\t// if the 3rd field is (...), the 4th field is the mdType\n\t\t\t\tmdType = deviceFields[4]\n\t\t\t\tdeviceStartIndex = 5\n\t\t\t}\n\t\t}\n\n\t\tif len(lines) <= i+3 {\n\t\t\treturn nil, fmt.Errorf(\"%w: Too few lines for md device: %q\", ErrFileParse, mdName)\n\t\t}\n\n\t\t// Failed (Faulty) disks have the suffix (F) & Spare disks have the suffix (S).\n\t\tfail := int64(strings.Count(line, \"(F)\"))\n\t\tspare := int64(strings.Count(line, \"(S)\"))\n\t\tactive, total, down, size, err := evalStatusLine(lines[i], lines[i+1])\n\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"%w: Cannot parse md device lines: %v: %w\", ErrFileParse, active, err)\n\t\t}\n\n\t\tsyncLineIdx := i + 2\n\t\tif strings.Contains(lines[i+2], \"bitmap\") { // skip bitmap line\n\t\t\tsyncLineIdx++\n\t\t}\n\n\t\t// If device is syncing at the moment, get the number of currently\n\t\t// synced bytes, otherwise that number equals the size of the device.\n\t\tblocksSynced := size\n\t\tblocksToBeSynced := size\n\t\tspeed := float64(0)\n\t\tfinish := float64(0)\n\t\tpct := float64(0)\n\t\trecovering := strings.Contains(lines[syncLineIdx], \"recovery\")\n\t\treshaping := strings.Contains(lines[syncLineIdx], \"reshape\")\n\t\tresyncing := strings.Contains(lines[syncLineIdx], \"resync\")\n\t\tchecking := strings.Contains(lines[syncLineIdx], \"check\")\n\n\t\t// Append recovery and resyncing state info.\n\t\tif recovering || resyncing || checking || reshaping {\n\t\t\tswitch {\n\t\t\tcase recovering:\n\t\t\t\tstate = \"recovering\"\n\t\t\tcase reshaping:\n\t\t\t\tstate = \"reshaping\"\n\t\t\tcase checking:\n\t\t\t\tstate = \"checking\"\n\t\t\tdefault:\n\t\t\t\tstate = \"resyncing\"\n\t\t\t}\n\n\t\t\t// Handle case when resync=PENDING or resync=DELAYED.\n\t\t\tif strings.Contains(lines[syncLineIdx], \"PENDING\") ||\n\t\t\t\tstrings.Contains(lines[syncLineIdx], \"DELAYED\") {\n\t\t\t\tblocksSynced = 0\n\t\t\t} else {\n\t\t\t\tblocksSynced, blocksToBeSynced, pct, finish, speed, err = evalRecoveryLine(lines[syncLineIdx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, fmt.Errorf(\"%w: Cannot parse sync line in md device: %q: %w\", ErrFileParse, mdName, err)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdevices, err := evalComponentDevices(deviceFields[deviceStartIndex:])\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"error parsing components in md device %q: %w\", mdName, err)\n\t\t}\n\n\t\tmdStats = append(mdStats, MDStat{\n\t\t\tName:                   mdName,\n\t\t\tType:                   mdType,\n\t\t\tActivityState:          state,\n\t\t\tDisksActive:            active,\n\t\t\tDisksFailed:            fail,\n\t\t\tDisksDown:              down,\n\t\t\tDisksSpare:             spare,\n\t\t\tDisksTotal:             total,\n\t\t\tBlocksTotal:            size,\n\t\t\tBlocksSynced:           blocksSynced,\n\t\t\tBlocksToBeSynced:       blocksToBeSynced,\n\t\t\tBlocksSyncedPct:        pct,\n\t\t\tBlocksSyncedFinishTime: finish,\n\t\t\tBlocksSyncedSpeed:      speed,\n\t\t\tDevices:                devices,\n\t\t})\n\t}\n\n\treturn mdStats, nil\n}\n\n// check if a string's format is like the mdType\n// Rule 1: mdType should not be like (...)\n// Rule 2: mdType should not be like sda[0]\n// .\nfunc isRaidType(mdType string, knownRaidTypes map[string]bool) bool {\n\t_, ok := knownRaidTypes[mdType]\n\treturn !strings.ContainsAny(mdType, \"([\") && ok\n}\n\nfunc evalStatusLine(deviceLine, statusLine string) (active, total, down, size int64, err error) {\n\t// e.g. 523968 blocks super 1.2 [4/4] [UUUU]\n\tstatusFields := strings.Fields(statusLine)\n\tif len(statusFields) < 1 {\n\t\treturn 0, 0, 0, 0, fmt.Errorf(\"%w: Unexpected statusline %q: %w\", ErrFileParse, statusLine, err)\n\t}\n\n\tsizeStr := statusFields[0]\n\tsize, err = strconv.ParseInt(sizeStr, 10, 64)\n\tif err != nil {\n\t\treturn 0, 0, 0, 0, fmt.Errorf(\"%w: Unexpected statusline %q: %w\", ErrFileParse, statusLine, err)\n\t}\n\n\tif strings.Contains(deviceLine, \"raid0\") || strings.Contains(deviceLine, \"linear\") {\n\t\t// In the device deviceLine, only disks have a number associated with them in [].\n\t\ttotal = int64(strings.Count(deviceLine, \"[\"))\n\t\treturn total, total, 0, size, nil\n\t}\n\n\tif strings.Contains(deviceLine, \"inactive\") {\n\t\treturn 0, 0, 0, size, nil\n\t}\n\n\tmatches := statusLineRE.FindStringSubmatch(statusLine)\n\tif len(matches) != 5 {\n\t\treturn 0, 0, 0, 0, fmt.Errorf(\"%w: Could not fild all substring matches %s: %w\", ErrFileParse, statusLine, err)\n\t}\n\n\ttotal, err = strconv.ParseInt(matches[2], 10, 64)\n\tif err != nil {\n\t\treturn 0, 0, 0, 0, fmt.Errorf(\"%w: Unexpected statusline %q: %w\", ErrFileParse, statusLine, err)\n\t}\n\n\tactive, err = strconv.ParseInt(matches[3], 10, 64)\n\tif err != nil {\n\t\treturn 0, 0, 0, 0, fmt.Errorf(\"%w: Unexpected active %d: %w\", ErrFileParse, active, err)\n\t}\n\tdown = int64(strings.Count(matches[4], \"_\"))\n\n\treturn active, total, down, size, nil\n}\n\nfunc evalRecoveryLine(recoveryLine string) (blocksSynced int64, blocksToBeSynced int64, pct float64, finish float64, speed float64, err error) {\n\tmatches := recoveryLineBlocksRE.FindStringSubmatch(recoveryLine)\n\tif len(matches) != 2 {\n\t\treturn 0, 0, 0, 0, 0, fmt.Errorf(\"%w: Unexpected recoveryLine blocks %s: %w\", ErrFileParse, recoveryLine, err)\n\t}\n\n\tblocks := strings.Split(matches[1], \"/\")\n\tblocksSynced, err = strconv.ParseInt(blocks[0], 10, 64)\n\tif err != nil {\n\t\treturn 0, 0, 0, 0, 0, fmt.Errorf(\"%w: Unable to parse recovery blocks synced %q: %w\", ErrFileParse, matches[1], err)\n\t}\n\n\tblocksToBeSynced, err = strconv.ParseInt(blocks[1], 10, 64)\n\tif err != nil {\n\t\treturn blocksSynced, 0, 0, 0, 0, fmt.Errorf(\"%w: Unable to parse recovery to be synced blocks %q: %w\", ErrFileParse, matches[2], err)\n\t}\n\n\t// Get percentage complete\n\tmatches = recoveryLinePctRE.FindStringSubmatch(recoveryLine)\n\tif len(matches) != 2 {\n\t\treturn blocksSynced, blocksToBeSynced, 0, 0, 0, fmt.Errorf(\"%w: Unexpected recoveryLine matching percentage %s\", ErrFileParse, recoveryLine)\n\t}\n\tpct, err = strconv.ParseFloat(strings.TrimSpace(matches[1]), 64)\n\tif err != nil {\n\t\treturn blocksSynced, blocksToBeSynced, 0, 0, 0, fmt.Errorf(\"%w: Error parsing float from recoveryLine %q\", ErrFileParse, recoveryLine)\n\t}\n\n\t// Get time expected left to complete\n\tmatches = recoveryLineFinishRE.FindStringSubmatch(recoveryLine)\n\tif len(matches) != 2 {\n\t\treturn blocksSynced, blocksToBeSynced, pct, 0, 0, fmt.Errorf(\"%w: Unexpected recoveryLine matching est. finish time: %s\", ErrFileParse, recoveryLine)\n\t}\n\tfinish, err = strconv.ParseFloat(matches[1], 64)\n\tif err != nil {\n\t\treturn blocksSynced, blocksToBeSynced, pct, 0, 0, fmt.Errorf(\"%w: Unable to parse float from recoveryLine: %q\", ErrFileParse, recoveryLine)\n\t}\n\n\t// Get recovery speed\n\tmatches = recoveryLineSpeedRE.FindStringSubmatch(recoveryLine)\n\tif len(matches) != 2 {\n\t\treturn blocksSynced, blocksToBeSynced, pct, finish, 0, fmt.Errorf(\"%w: Unexpected recoveryLine value: %s\", ErrFileParse, recoveryLine)\n\t}\n\tspeed, err = strconv.ParseFloat(matches[1], 64)\n\tif err != nil {\n\t\treturn blocksSynced, blocksToBeSynced, pct, finish, 0, fmt.Errorf(\"%w: Error parsing float from recoveryLine: %q: %w\", ErrFileParse, recoveryLine, err)\n\t}\n\n\treturn blocksSynced, blocksToBeSynced, pct, finish, speed, nil\n}\n\nfunc evalComponentDevices(deviceFields []string) ([]MDStatComponent, error) {\n\tmdComponentDevices := make([]MDStatComponent, 0)\n\tfor _, field := range deviceFields {\n\t\tmatch := componentDeviceRE.FindStringSubmatch(field)\n\t\tif match == nil {\n\t\t\tcontinue\n\t\t}\n\t\tdescriptorIndex, err := strconv.ParseInt(match[2], 10, 32)\n\t\tif err != nil {\n\t\t\treturn mdComponentDevices, fmt.Errorf(\"error parsing int from device %q: %w\", match[2], err)\n\t\t}\n\t\tmdComponentDevices = append(mdComponentDevices, MDStatComponent{\n\t\t\tName:            match[1],\n\t\t\tDescriptorIndex: int32(descriptorIndex),\n\t\t\t// match may contain one or more of these\n\t\t\t// https://github.com/torvalds/linux/blob/7ec462100ef9142344ddbf86f2c3008b97acddbe/drivers/md/md.c#L8376-L8392\n\t\t\tFaulty:      strings.Contains(match[3], \"(F)\"),\n\t\t\tSpare:       strings.Contains(match[3], \"(S)\"),\n\t\t\tJournal:     strings.Contains(match[3], \"(J)\"),\n\t\t\tReplacement: strings.Contains(match[3], \"(R)\"),\n\t\t\tWriteMostly: strings.Contains(match[3], \"(W)\"),\n\t\t})\n\t}\n\n\treturn mdComponentDevices, nil\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/meminfo.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage procfs\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/prometheus/procfs/internal/util\"\n)\n\n// Meminfo represents memory statistics.\ntype Meminfo struct {\n\t// Total usable ram (i.e. physical ram minus a few reserved\n\t// bits and the kernel binary code)\n\tMemTotal *uint64\n\t// The sum of LowFree+HighFree\n\tMemFree *uint64\n\t// An estimate of how much memory is available for starting\n\t// new applications, without swapping. Calculated from\n\t// MemFree, SReclaimable, the size of the file LRU lists, and\n\t// the low watermarks in each zone.  The estimate takes into\n\t// account that the system needs some page cache to function\n\t// well, and that not all reclaimable slab will be\n\t// reclaimable, due to items being in use. The impact of those\n\t// factors will vary from system to system.\n\tMemAvailable *uint64\n\t// Relatively temporary storage for raw disk blocks shouldn't\n\t// get tremendously large (20MB or so)\n\tBuffers *uint64\n\tCached  *uint64\n\t// Memory that once was swapped out, is swapped back in but\n\t// still also is in the swapfile (if memory is needed it\n\t// doesn't need to be swapped out AGAIN because it is already\n\t// in the swapfile. This saves I/O)\n\tSwapCached *uint64\n\t// Memory that has been used more recently and usually not\n\t// reclaimed unless absolutely necessary.\n\tActive *uint64\n\t// Memory which has been less recently used.  It is more\n\t// eligible to be reclaimed for other purposes\n\tInactive     *uint64\n\tActiveAnon   *uint64\n\tInactiveAnon *uint64\n\tActiveFile   *uint64\n\tInactiveFile *uint64\n\tUnevictable  *uint64\n\tMlocked      *uint64\n\t// total amount of swap space available\n\tSwapTotal *uint64\n\t// Memory which has been evicted from RAM, and is temporarily\n\t// on the disk\n\tSwapFree *uint64\n\t// Memory consumed by the zswap backend (compressed size)\n\tZswap *uint64\n\t// Amount of anonymous memory stored in zswap (original size)\n\tZswapped *uint64\n\t// Memory which is waiting to get written back to the disk\n\tDirty *uint64\n\t// Memory which is actively being written back to the disk\n\tWriteback *uint64\n\t// Non-file backed pages mapped into userspace page tables\n\tAnonPages *uint64\n\t// files which have been mapped, such as libraries\n\tMapped *uint64\n\tShmem  *uint64\n\t// in-kernel data structures cache\n\tSlab *uint64\n\t// Part of Slab, that might be reclaimed, such as caches\n\tSReclaimable *uint64\n\t// Part of Slab, that cannot be reclaimed on memory pressure\n\tSUnreclaim  *uint64\n\tKernelStack *uint64\n\t// amount of memory dedicated to the lowest level of page\n\t// tables.\n\tPageTables *uint64\n\t// secondary page tables.\n\tSecPageTables *uint64\n\t// NFS pages sent to the server, but not yet committed to\n\t// stable storage\n\tNFSUnstable *uint64\n\t// Memory used for block device \"bounce buffers\"\n\tBounce *uint64\n\t// Memory used by FUSE for temporary writeback buffers\n\tWritebackTmp *uint64\n\t// Based on the overcommit ratio ('vm.overcommit_ratio'),\n\t// this is the total amount of  memory currently available to\n\t// be allocated on the system. This limit is only adhered to\n\t// if strict overcommit accounting is enabled (mode 2 in\n\t// 'vm.overcommit_memory').\n\t// The CommitLimit is calculated with the following formula:\n\t// CommitLimit = ([total RAM pages] - [total huge TLB pages]) *\n\t//                overcommit_ratio / 100 + [total swap pages]\n\t// For example, on a system with 1G of physical RAM and 7G\n\t// of swap with a `vm.overcommit_ratio` of 30 it would\n\t// yield a CommitLimit of 7.3G.\n\t// For more details, see the memory overcommit documentation\n\t// in vm/overcommit-accounting.\n\tCommitLimit *uint64\n\t// The amount of memory presently allocated on the system.\n\t// The committed memory is a sum of all of the memory which\n\t// has been allocated by processes, even if it has not been\n\t// \"used\" by them as of yet. A process which malloc()'s 1G\n\t// of memory, but only touches 300M of it will show up as\n\t// using 1G. This 1G is memory which has been \"committed\" to\n\t// by the VM and can be used at any time by the allocating\n\t// application. With strict overcommit enabled on the system\n\t// (mode 2 in 'vm.overcommit_memory'),allocations which would\n\t// exceed the CommitLimit (detailed above) will not be permitted.\n\t// This is useful if one needs to guarantee that processes will\n\t// not fail due to lack of memory once that memory has been\n\t// successfully allocated.\n\tCommittedAS *uint64\n\t// total size of vmalloc memory area\n\tVmallocTotal *uint64\n\t// amount of vmalloc area which is used\n\tVmallocUsed *uint64\n\t// largest contiguous block of vmalloc area which is free\n\tVmallocChunk      *uint64\n\tPercpu            *uint64\n\tHardwareCorrupted *uint64\n\tAnonHugePages     *uint64\n\tFileHugePages     *uint64\n\tShmemHugePages    *uint64\n\tShmemPmdMapped    *uint64\n\tCmaTotal          *uint64\n\tCmaFree           *uint64\n\tUnaccepted        *uint64\n\tHugePagesTotal    *uint64\n\tHugePagesFree     *uint64\n\tHugePagesRsvd     *uint64\n\tHugePagesSurp     *uint64\n\tHugepagesize      *uint64\n\tHugetlb           *uint64\n\tDirectMap4k       *uint64\n\tDirectMap2M       *uint64\n\tDirectMap1G       *uint64\n\n\t// The struct fields below are the byte-normalized counterparts to the\n\t// existing struct fields. Values are normalized using the optional\n\t// unit field in the meminfo line.\n\tMemTotalBytes          *uint64\n\tMemFreeBytes           *uint64\n\tMemAvailableBytes      *uint64\n\tBuffersBytes           *uint64\n\tCachedBytes            *uint64\n\tSwapCachedBytes        *uint64\n\tActiveBytes            *uint64\n\tInactiveBytes          *uint64\n\tActiveAnonBytes        *uint64\n\tInactiveAnonBytes      *uint64\n\tActiveFileBytes        *uint64\n\tInactiveFileBytes      *uint64\n\tUnevictableBytes       *uint64\n\tMlockedBytes           *uint64\n\tSwapTotalBytes         *uint64\n\tSwapFreeBytes          *uint64\n\tZswapBytes             *uint64\n\tZswappedBytes          *uint64\n\tDirtyBytes             *uint64\n\tWritebackBytes         *uint64\n\tAnonPagesBytes         *uint64\n\tMappedBytes            *uint64\n\tShmemBytes             *uint64\n\tSlabBytes              *uint64\n\tSReclaimableBytes      *uint64\n\tSUnreclaimBytes        *uint64\n\tKernelStackBytes       *uint64\n\tPageTablesBytes        *uint64\n\tSecPageTablesBytes     *uint64\n\tNFSUnstableBytes       *uint64\n\tBounceBytes            *uint64\n\tWritebackTmpBytes      *uint64\n\tCommitLimitBytes       *uint64\n\tCommittedASBytes       *uint64\n\tVmallocTotalBytes      *uint64\n\tVmallocUsedBytes       *uint64\n\tVmallocChunkBytes      *uint64\n\tPercpuBytes            *uint64\n\tHardwareCorruptedBytes *uint64\n\tAnonHugePagesBytes     *uint64\n\tFileHugePagesBytes     *uint64\n\tShmemHugePagesBytes    *uint64\n\tShmemPmdMappedBytes    *uint64\n\tCmaTotalBytes          *uint64\n\tCmaFreeBytes           *uint64\n\tUnacceptedBytes        *uint64\n\tHugepagesizeBytes      *uint64\n\tHugetlbBytes           *uint64\n\tDirectMap4kBytes       *uint64\n\tDirectMap2MBytes       *uint64\n\tDirectMap1GBytes       *uint64\n}\n\n// Meminfo returns an information about current kernel/system memory statistics.\n// See https://www.kernel.org/doc/Documentation/filesystems/proc.txt\nfunc (fs FS) Meminfo() (Meminfo, error) {\n\tb, err := util.ReadFileNoStat(fs.proc.Path(\"meminfo\"))\n\tif err != nil {\n\t\treturn Meminfo{}, err\n\t}\n\n\tm, err := parseMemInfo(bytes.NewReader(b))\n\tif err != nil {\n\t\treturn Meminfo{}, fmt.Errorf(\"%w: %w\", ErrFileParse, err)\n\t}\n\n\treturn *m, nil\n}\n\nfunc parseMemInfo(r io.Reader) (*Meminfo, error) {\n\tvar m Meminfo\n\ts := bufio.NewScanner(r)\n\tfor s.Scan() {\n\t\tfields := strings.Fields(s.Text())\n\t\tvar val, valBytes uint64\n\n\t\tval, err := strconv.ParseUint(fields[1], 0, 64)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tswitch len(fields) {\n\t\tcase 2:\n\t\t\t// No unit present, use the parsed the value as bytes directly.\n\t\t\tvalBytes = val\n\t\tcase 3:\n\t\t\t// Unit present in optional 3rd field, convert it to\n\t\t\t// bytes. The only unit supported within the Linux\n\t\t\t// kernel is `kB`.\n\t\t\tif fields[2] != \"kB\" {\n\t\t\t\treturn nil, fmt.Errorf(\"%w: Unsupported unit in optional 3rd field %q\", ErrFileParse, fields[2])\n\t\t\t}\n\n\t\t\tvalBytes = 1024 * val\n\n\t\tdefault:\n\t\t\treturn nil, fmt.Errorf(\"%w: Malformed line %q\", ErrFileParse, s.Text())\n\t\t}\n\n\t\tswitch fields[0] {\n\t\tcase \"MemTotal:\":\n\t\t\tm.MemTotal = &val\n\t\t\tm.MemTotalBytes = &valBytes\n\t\tcase \"MemFree:\":\n\t\t\tm.MemFree = &val\n\t\t\tm.MemFreeBytes = &valBytes\n\t\tcase \"MemAvailable:\":\n\t\t\tm.MemAvailable = &val\n\t\t\tm.MemAvailableBytes = &valBytes\n\t\tcase \"Buffers:\":\n\t\t\tm.Buffers = &val\n\t\t\tm.BuffersBytes = &valBytes\n\t\tcase \"Cached:\":\n\t\t\tm.Cached = &val\n\t\t\tm.CachedBytes = &valBytes\n\t\tcase \"SwapCached:\":\n\t\t\tm.SwapCached = &val\n\t\t\tm.SwapCachedBytes = &valBytes\n\t\tcase \"Active:\":\n\t\t\tm.Active = &val\n\t\t\tm.ActiveBytes = &valBytes\n\t\tcase \"Inactive:\":\n\t\t\tm.Inactive = &val\n\t\t\tm.InactiveBytes = &valBytes\n\t\tcase \"Active(anon):\":\n\t\t\tm.ActiveAnon = &val\n\t\t\tm.ActiveAnonBytes = &valBytes\n\t\tcase \"Inactive(anon):\":\n\t\t\tm.InactiveAnon = &val\n\t\t\tm.InactiveAnonBytes = &valBytes\n\t\tcase \"Active(file):\":\n\t\t\tm.ActiveFile = &val\n\t\t\tm.ActiveFileBytes = &valBytes\n\t\tcase \"Inactive(file):\":\n\t\t\tm.InactiveFile = &val\n\t\t\tm.InactiveFileBytes = &valBytes\n\t\tcase \"Unevictable:\":\n\t\t\tm.Unevictable = &val\n\t\t\tm.UnevictableBytes = &valBytes\n\t\tcase \"Mlocked:\":\n\t\t\tm.Mlocked = &val\n\t\t\tm.MlockedBytes = &valBytes\n\t\tcase \"SwapTotal:\":\n\t\t\tm.SwapTotal = &val\n\t\t\tm.SwapTotalBytes = &valBytes\n\t\tcase \"SwapFree:\":\n\t\t\tm.SwapFree = &val\n\t\t\tm.SwapFreeBytes = &valBytes\n\t\tcase \"Zswap:\":\n\t\t\tm.Zswap = &val\n\t\t\tm.ZswapBytes = &valBytes\n\t\tcase \"Zswapped:\":\n\t\t\tm.Zswapped = &val\n\t\t\tm.ZswappedBytes = &valBytes\n\t\tcase \"Dirty:\":\n\t\t\tm.Dirty = &val\n\t\t\tm.DirtyBytes = &valBytes\n\t\tcase \"Writeback:\":\n\t\t\tm.Writeback = &val\n\t\t\tm.WritebackBytes = &valBytes\n\t\tcase \"AnonPages:\":\n\t\t\tm.AnonPages = &val\n\t\t\tm.AnonPagesBytes = &valBytes\n\t\tcase \"Mapped:\":\n\t\t\tm.Mapped = &val\n\t\t\tm.MappedBytes = &valBytes\n\t\tcase \"Shmem:\":\n\t\t\tm.Shmem = &val\n\t\t\tm.ShmemBytes = &valBytes\n\t\tcase \"Slab:\":\n\t\t\tm.Slab = &val\n\t\t\tm.SlabBytes = &valBytes\n\t\tcase \"SReclaimable:\":\n\t\t\tm.SReclaimable = &val\n\t\t\tm.SReclaimableBytes = &valBytes\n\t\tcase \"SUnreclaim:\":\n\t\t\tm.SUnreclaim = &val\n\t\t\tm.SUnreclaimBytes = &valBytes\n\t\tcase \"KernelStack:\":\n\t\t\tm.KernelStack = &val\n\t\t\tm.KernelStackBytes = &valBytes\n\t\tcase \"PageTables:\":\n\t\t\tm.PageTables = &val\n\t\t\tm.PageTablesBytes = &valBytes\n\t\tcase \"SecPageTables:\":\n\t\t\tm.SecPageTables = &val\n\t\t\tm.SecPageTablesBytes = &valBytes\n\t\tcase \"NFS_Unstable:\":\n\t\t\tm.NFSUnstable = &val\n\t\t\tm.NFSUnstableBytes = &valBytes\n\t\tcase \"Bounce:\":\n\t\t\tm.Bounce = &val\n\t\t\tm.BounceBytes = &valBytes\n\t\tcase \"WritebackTmp:\":\n\t\t\tm.WritebackTmp = &val\n\t\t\tm.WritebackTmpBytes = &valBytes\n\t\tcase \"CommitLimit:\":\n\t\t\tm.CommitLimit = &val\n\t\t\tm.CommitLimitBytes = &valBytes\n\t\tcase \"Committed_AS:\":\n\t\t\tm.CommittedAS = &val\n\t\t\tm.CommittedASBytes = &valBytes\n\t\tcase \"VmallocTotal:\":\n\t\t\tm.VmallocTotal = &val\n\t\t\tm.VmallocTotalBytes = &valBytes\n\t\tcase \"VmallocUsed:\":\n\t\t\tm.VmallocUsed = &val\n\t\t\tm.VmallocUsedBytes = &valBytes\n\t\tcase \"VmallocChunk:\":\n\t\t\tm.VmallocChunk = &val\n\t\t\tm.VmallocChunkBytes = &valBytes\n\t\tcase \"Percpu:\":\n\t\t\tm.Percpu = &val\n\t\t\tm.PercpuBytes = &valBytes\n\t\tcase \"HardwareCorrupted:\":\n\t\t\tm.HardwareCorrupted = &val\n\t\t\tm.HardwareCorruptedBytes = &valBytes\n\t\tcase \"AnonHugePages:\":\n\t\t\tm.AnonHugePages = &val\n\t\t\tm.AnonHugePagesBytes = &valBytes\n\t\tcase \"FileHugePages:\":\n\t\t\tm.FileHugePages = &val\n\t\t\tm.FileHugePagesBytes = &valBytes\n\t\tcase \"ShmemHugePages:\":\n\t\t\tm.ShmemHugePages = &val\n\t\t\tm.ShmemHugePagesBytes = &valBytes\n\t\tcase \"ShmemPmdMapped:\":\n\t\t\tm.ShmemPmdMapped = &val\n\t\t\tm.ShmemPmdMappedBytes = &valBytes\n\t\tcase \"CmaTotal:\":\n\t\t\tm.CmaTotal = &val\n\t\t\tm.CmaTotalBytes = &valBytes\n\t\tcase \"CmaFree:\":\n\t\t\tm.CmaFree = &val\n\t\t\tm.CmaFreeBytes = &valBytes\n\t\tcase \"Unaccepted:\":\n\t\t\tm.Unaccepted = &val\n\t\t\tm.UnacceptedBytes = &valBytes\n\t\tcase \"HugePages_Total:\":\n\t\t\tm.HugePagesTotal = &val\n\t\tcase \"HugePages_Free:\":\n\t\t\tm.HugePagesFree = &val\n\t\tcase \"HugePages_Rsvd:\":\n\t\t\tm.HugePagesRsvd = &val\n\t\tcase \"HugePages_Surp:\":\n\t\t\tm.HugePagesSurp = &val\n\t\tcase \"Hugepagesize:\":\n\t\t\tm.Hugepagesize = &val\n\t\t\tm.HugepagesizeBytes = &valBytes\n\t\tcase \"Hugetlb:\":\n\t\t\tm.Hugetlb = &val\n\t\t\tm.HugetlbBytes = &valBytes\n\t\tcase \"DirectMap4k:\":\n\t\t\tm.DirectMap4k = &val\n\t\t\tm.DirectMap4kBytes = &valBytes\n\t\tcase \"DirectMap2M:\":\n\t\t\tm.DirectMap2M = &val\n\t\t\tm.DirectMap2MBytes = &valBytes\n\t\tcase \"DirectMap1G:\":\n\t\t\tm.DirectMap1G = &val\n\t\t\tm.DirectMap1GBytes = &valBytes\n\t\t}\n\t}\n\n\treturn &m, nil\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/mountinfo.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage procfs\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"fmt\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/prometheus/procfs/internal/util\"\n)\n\n// A MountInfo is a type that describes the details, options\n// for each mount, parsed from /proc/self/mountinfo.\n// The fields described in each entry of /proc/self/mountinfo\n// is described in the following man page.\n// http://man7.org/linux/man-pages/man5/proc.5.html\ntype MountInfo struct {\n\t// Unique ID for the mount\n\tMountID int\n\t// The ID of the parent mount\n\tParentID int\n\t// The value of `st_dev` for the files on this FS\n\tMajorMinorVer string\n\t// The pathname of the directory in the FS that forms\n\t// the root for this mount\n\tRoot string\n\t// The pathname of the mount point relative to the root\n\tMountPoint string\n\t// Mount options\n\tOptions map[string]string\n\t// Zero or more optional fields\n\tOptionalFields map[string]string\n\t// The Filesystem type\n\tFSType string\n\t// FS specific information or \"none\"\n\tSource string\n\t// Superblock options\n\tSuperOptions map[string]string\n}\n\n// Reads each line of the mountinfo file, and returns a list of formatted MountInfo structs.\nfunc parseMountInfo(info []byte) ([]*MountInfo, error) {\n\tmounts := []*MountInfo{}\n\tscanner := bufio.NewScanner(bytes.NewReader(info))\n\tfor scanner.Scan() {\n\t\tmountString := scanner.Text()\n\t\tparsedMounts, err := parseMountInfoString(mountString)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tmounts = append(mounts, parsedMounts)\n\t}\n\n\terr := scanner.Err()\n\treturn mounts, err\n}\n\n// Parses a mountinfo file line, and converts it to a MountInfo struct.\n// An important check here is to see if the hyphen separator, as if it does not exist,\n// it means that the line is malformed.\nfunc parseMountInfoString(mountString string) (*MountInfo, error) {\n\tvar err error\n\n\tmountInfo := strings.Split(mountString, \" \")\n\tmountInfoLength := len(mountInfo)\n\tif mountInfoLength < 10 {\n\t\treturn nil, fmt.Errorf(\"%w: Too few fields in mount string: %s\", ErrFileParse, mountString)\n\t}\n\n\tif mountInfo[mountInfoLength-4] != \"-\" {\n\t\treturn nil, fmt.Errorf(\"%w: couldn't find separator in expected field: %s\", ErrFileParse, mountInfo[mountInfoLength-4])\n\t}\n\n\tmount := &MountInfo{\n\t\tMajorMinorVer:  mountInfo[2],\n\t\tRoot:           mountInfo[3],\n\t\tMountPoint:     mountInfo[4],\n\t\tOptions:        mountOptionsParser(mountInfo[5]),\n\t\tOptionalFields: nil,\n\t\tFSType:         mountInfo[mountInfoLength-3],\n\t\tSource:         mountInfo[mountInfoLength-2],\n\t\tSuperOptions:   mountOptionsParser(mountInfo[mountInfoLength-1]),\n\t}\n\n\tmount.MountID, err = strconv.Atoi(mountInfo[0])\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"%w: mount ID: %q\", ErrFileParse, mount.MountID)\n\t}\n\tmount.ParentID, err = strconv.Atoi(mountInfo[1])\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"%w: parent ID: %q\", ErrFileParse, mount.ParentID)\n\t}\n\t// Has optional fields, which is a space separated list of values.\n\t// Example: shared:2 master:7\n\tif mountInfo[6] != \"\" {\n\t\tmount.OptionalFields, err = mountOptionsParseOptionalFields(mountInfo[6 : mountInfoLength-4])\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"%w: %w\", ErrFileParse, err)\n\t\t}\n\t}\n\treturn mount, nil\n}\n\n// mountOptionsIsValidField checks a string against a valid list of optional fields keys.\nfunc mountOptionsIsValidField(s string) bool {\n\tswitch s {\n\tcase\n\t\t\"shared\",\n\t\t\"master\",\n\t\t\"propagate_from\",\n\t\t\"unbindable\":\n\t\treturn true\n\t}\n\treturn false\n}\n\n// mountOptionsParseOptionalFields parses a list of optional fields strings into a double map of strings.\nfunc mountOptionsParseOptionalFields(o []string) (map[string]string, error) {\n\toptionalFields := make(map[string]string)\n\tfor _, field := range o {\n\t\toptionSplit := strings.SplitN(field, \":\", 2)\n\t\tvalue := \"\"\n\t\tif len(optionSplit) == 2 {\n\t\t\tvalue = optionSplit[1]\n\t\t}\n\t\tif mountOptionsIsValidField(optionSplit[0]) {\n\t\t\toptionalFields[optionSplit[0]] = value\n\t\t}\n\t}\n\treturn optionalFields, nil\n}\n\n// mountOptionsParser parses the mount options, superblock options.\nfunc mountOptionsParser(mountOptions string) map[string]string {\n\topts := make(map[string]string)\n\tfor opt := range strings.SplitSeq(mountOptions, \",\") {\n\t\tsplitOption := strings.Split(opt, \"=\")\n\t\tif len(splitOption) < 2 {\n\t\t\tkey := splitOption[0]\n\t\t\topts[key] = \"\"\n\t\t} else {\n\t\t\tkey, value := splitOption[0], splitOption[1]\n\t\t\topts[key] = value\n\t\t}\n\t}\n\treturn opts\n}\n\n// GetMounts retrieves mountinfo information from `/proc/self/mountinfo`.\nfunc GetMounts() ([]*MountInfo, error) {\n\tdata, err := util.ReadFileNoStat(\"/proc/self/mountinfo\")\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn parseMountInfo(data)\n}\n\n// GetProcMounts retrieves mountinfo information from a processes' `/proc/<pid>/mountinfo`.\nfunc GetProcMounts(pid int) ([]*MountInfo, error) {\n\tdata, err := util.ReadFileNoStat(fmt.Sprintf(\"/proc/%d/mountinfo\", pid))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn parseMountInfo(data)\n}\n\n// GetMounts retrieves mountinfo information from `/proc/self/mountinfo`.\nfunc (fs FS) GetMounts() ([]*MountInfo, error) {\n\tdata, err := util.ReadFileNoStat(fs.proc.Path(\"self/mountinfo\"))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn parseMountInfo(data)\n}\n\n// GetProcMounts retrieves mountinfo information from a processes' `/proc/<pid>/mountinfo`.\nfunc (fs FS) GetProcMounts(pid int) ([]*MountInfo, error) {\n\tdata, err := util.ReadFileNoStat(fs.proc.Path(fmt.Sprintf(\"%d/mountinfo\", pid)))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn parseMountInfo(data)\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/mountstats.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage procfs\n\n// While implementing parsing of /proc/[pid]/mountstats, this blog was used\n// heavily as a reference:\n//   https://utcc.utoronto.ca/~cks/space/blog/linux/NFSMountstatsIndex\n//\n// Special thanks to Chris Siebenmann for all of his posts explaining the\n// various statistics available for NFS.\n\nimport (\n\t\"bufio\"\n\t\"fmt\"\n\t\"io\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n)\n\n// Constants shared between multiple functions.\nconst (\n\tdeviceEntryLen = 8\n\n\tfieldBytesLen  = 8\n\tfieldEventsLen = 27\n\n\tstatVersion10 = \"1.0\"\n\tstatVersion11 = \"1.1\"\n\n\tfieldTransport10TCPLen = 10\n\tfieldTransport10UDPLen = 7\n\n\tfieldTransport11TCPLen = 13\n\tfieldTransport11UDPLen = 10\n\n\t// Kernel version >= 4.14 MaxLen\n\t// See: https://elixir.bootlin.com/linux/v6.4.8/source/net/sunrpc/xprtrdma/xprt_rdma.h#L393\n\tfieldTransport11RDMAMaxLen = 28\n\n\t// Kernel version <= 4.2 MinLen\n\t// See: https://elixir.bootlin.com/linux/v4.2.8/source/net/sunrpc/xprtrdma/xprt_rdma.h#L331\n\tfieldTransport11RDMAMinLen = 20\n)\n\n// A Mount is a device mount parsed from /proc/[pid]/mountstats.\ntype Mount struct {\n\t// Name of the device.\n\tDevice string\n\t// The mount point of the device.\n\tMount string\n\t// The filesystem type used by the device.\n\tType string\n\t// If available additional statistics related to this Mount.\n\t// Use a type assertion to determine if additional statistics are available.\n\tStats MountStats\n}\n\n// A MountStats is a type which contains detailed statistics for a specific\n// type of Mount.\ntype MountStats interface {\n\tmountStats()\n}\n\n// A MountStatsNFS is a MountStats implementation for NFSv3 and v4 mounts.\ntype MountStatsNFS struct {\n\t// The version of statistics provided.\n\tStatVersion string\n\t// The mount options of the NFS mount.\n\tOpts map[string]string\n\t// The age of the NFS mount.\n\tAge time.Duration\n\t// Statistics related to byte counters for various operations.\n\tBytes NFSBytesStats\n\t// Statistics related to various NFS event occurrences.\n\tEvents NFSEventsStats\n\t// Statistics broken down by filesystem operation.\n\tOperations []NFSOperationStats\n\t// Statistics about the NFS RPC transport.\n\tTransport []NFSTransportStats\n}\n\n// mountStats implements MountStats.\nfunc (m MountStatsNFS) mountStats() {}\n\n// A NFSBytesStats contains statistics about the number of bytes read and written\n// by an NFS client to and from an NFS server.\ntype NFSBytesStats struct {\n\t// Number of bytes read using the read() syscall.\n\tRead uint64\n\t// Number of bytes written using the write() syscall.\n\tWrite uint64\n\t// Number of bytes read using the read() syscall in O_DIRECT mode.\n\tDirectRead uint64\n\t// Number of bytes written using the write() syscall in O_DIRECT mode.\n\tDirectWrite uint64\n\t// Number of bytes read from the NFS server, in total.\n\tReadTotal uint64\n\t// Number of bytes written to the NFS server, in total.\n\tWriteTotal uint64\n\t// Number of pages read directly via mmap()'d files.\n\tReadPages uint64\n\t// Number of pages written directly via mmap()'d files.\n\tWritePages uint64\n}\n\n// A NFSEventsStats contains statistics about NFS event occurrences.\ntype NFSEventsStats struct {\n\t// Number of times cached inode attributes are re-validated from the server.\n\tInodeRevalidate uint64\n\t// Number of times cached dentry nodes are re-validated from the server.\n\tDnodeRevalidate uint64\n\t// Number of times an inode cache is cleared.\n\tDataInvalidate uint64\n\t// Number of times cached inode attributes are invalidated.\n\tAttributeInvalidate uint64\n\t// Number of times files or directories have been open()'d.\n\tVFSOpen uint64\n\t// Number of times a directory lookup has occurred.\n\tVFSLookup uint64\n\t// Number of times permissions have been checked.\n\tVFSAccess uint64\n\t// Number of updates (and potential writes) to pages.\n\tVFSUpdatePage uint64\n\t// Number of pages read directly via mmap()'d files.\n\tVFSReadPage uint64\n\t// Number of times a group of pages have been read.\n\tVFSReadPages uint64\n\t// Number of pages written directly via mmap()'d files.\n\tVFSWritePage uint64\n\t// Number of times a group of pages have been written.\n\tVFSWritePages uint64\n\t// Number of times directory entries have been read with getdents().\n\tVFSGetdents uint64\n\t// Number of times attributes have been set on inodes.\n\tVFSSetattr uint64\n\t// Number of pending writes that have been forcefully flushed to the server.\n\tVFSFlush uint64\n\t// Number of times fsync() has been called on directories and files.\n\tVFSFsync uint64\n\t// Number of times locking has been attempted on a file.\n\tVFSLock uint64\n\t// Number of times files have been closed and released.\n\tVFSFileRelease uint64\n\t// Unknown.  Possibly unused.\n\tCongestionWait uint64\n\t// Number of times files have been truncated.\n\tTruncation uint64\n\t// Number of times a file has been grown due to writes beyond its existing end.\n\tWriteExtension uint64\n\t// Number of times a file was removed while still open by another process.\n\tSillyRename uint64\n\t// Number of times the NFS server gave less data than expected while reading.\n\tShortRead uint64\n\t// Number of times the NFS server wrote less data than expected while writing.\n\tShortWrite uint64\n\t// Number of times the NFS server indicated EJUKEBOX; retrieving data from\n\t// offline storage.\n\tJukeboxDelay uint64\n\t// Number of NFS v4.1+ pNFS reads.\n\tPNFSRead uint64\n\t// Number of NFS v4.1+ pNFS writes.\n\tPNFSWrite uint64\n}\n\n// A NFSOperationStats contains statistics for a single operation.\ntype NFSOperationStats struct {\n\t// The name of the operation.\n\tOperation string\n\t// Number of requests performed for this operation.\n\tRequests uint64\n\t// Number of times an actual RPC request has been transmitted for this operation.\n\tTransmissions uint64\n\t// Number of times a request has had a major timeout.\n\tMajorTimeouts uint64\n\t// Number of bytes sent for this operation, including RPC headers and payload.\n\tBytesSent uint64\n\t// Number of bytes received for this operation, including RPC headers and payload.\n\tBytesReceived uint64\n\t// Duration all requests spent queued for transmission before they were sent.\n\tCumulativeQueueMilliseconds uint64\n\t// Duration it took to get a reply back after the request was transmitted.\n\tCumulativeTotalResponseMilliseconds uint64\n\t// Duration from when a request was enqueued to when it was completely handled.\n\tCumulativeTotalRequestMilliseconds uint64\n\t// The count of operations that complete with tk_status < 0.  These statuses usually indicate error conditions.\n\tErrors uint64\n}\n\n// A NFSTransportStats contains statistics for the NFS mount RPC requests and\n// responses.\ntype NFSTransportStats struct {\n\t// The transport protocol used for the NFS mount.\n\tProtocol string\n\t// The local port used for the NFS mount.\n\tPort uint64\n\t// Number of times the client has had to establish a connection from scratch\n\t// to the NFS server.\n\tBind uint64\n\t// Number of times the client has made a TCP connection to the NFS server.\n\tConnect uint64\n\t// Duration (in jiffies, a kernel internal unit of time) the NFS mount has\n\t// spent waiting for connections to the server to be established.\n\tConnectIdleTime uint64\n\t// Duration since the NFS mount last saw any RPC traffic.\n\tIdleTimeSeconds uint64\n\t// Number of RPC requests for this mount sent to the NFS server.\n\tSends uint64\n\t// Number of RPC responses for this mount received from the NFS server.\n\tReceives uint64\n\t// Number of times the NFS server sent a response with a transaction ID\n\t// unknown to this client.\n\tBadTransactionIDs uint64\n\t// A running counter, incremented on each request as the current difference\n\t// ebetween sends and receives.\n\tCumulativeActiveRequests uint64\n\t// A running counter, incremented on each request by the current backlog\n\t// queue size.\n\tCumulativeBacklog uint64\n\n\t// Stats below only available with stat version 1.1.\n\n\t// Maximum number of simultaneously active RPC requests ever used.\n\tMaximumRPCSlotsUsed uint64\n\t// A running counter, incremented on each request as the current size of the\n\t// sending queue.\n\tCumulativeSendingQueue uint64\n\t// A running counter, incremented on each request as the current size of the\n\t// pending queue.\n\tCumulativePendingQueue uint64\n\n\t// Stats below only available with stat version 1.1.\n\t// Transport over RDMA\n\n\t// accessed when sending a call\n\tReadChunkCount   uint64\n\tWriteChunkCount  uint64\n\tReplyChunkCount  uint64\n\tTotalRdmaRequest uint64\n\n\t// rarely accessed error counters\n\tPullupCopyCount      uint64\n\tHardwayRegisterCount uint64\n\tFailedMarshalCount   uint64\n\tBadReplyCount        uint64\n\tMrsRecovered         uint64\n\tMrsOrphaned          uint64\n\tMrsAllocated         uint64\n\tEmptySendctxQ        uint64\n\n\t// accessed when receiving a reply\n\tTotalRdmaReply    uint64\n\tFixupCopyCount    uint64\n\tReplyWaitsForSend uint64\n\tLocalInvNeeded    uint64\n\tNomsgCallCount    uint64\n\tBcallCount        uint64\n}\n\n// parseMountStats parses a /proc/[pid]/mountstats file and returns a slice\n// of Mount structures containing detailed information about each mount.\n// If available, statistics for each mount are parsed as well.\nfunc parseMountStats(r io.Reader) ([]*Mount, error) {\n\tconst (\n\t\tdevice            = \"device\"\n\t\tstatVersionPrefix = \"statvers=\"\n\n\t\tnfs3Type = \"nfs\"\n\t\tnfs4Type = \"nfs4\"\n\t)\n\n\tvar mounts []*Mount\n\n\ts := bufio.NewScanner(r)\n\tfor s.Scan() {\n\t\t// Only look for device entries in this function\n\t\tss := strings.Fields(string(s.Bytes()))\n\t\tif len(ss) == 0 || ss[0] != device {\n\t\t\tcontinue\n\t\t}\n\n\t\tm, err := parseMount(ss)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\t// Does this mount also possess statistics information?\n\t\tif len(ss) > deviceEntryLen {\n\t\t\t// Only NFSv3 and v4 are supported for parsing statistics\n\t\t\tif m.Type != nfs3Type && m.Type != nfs4Type {\n\t\t\t\treturn nil, fmt.Errorf(\"%w: Cannot parse MountStats for %q\", ErrFileParse, m.Type)\n\t\t\t}\n\n\t\t\tstatVersion := strings.TrimPrefix(ss[8], statVersionPrefix)\n\n\t\t\tstats, err := parseMountStatsNFS(s, statVersion)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\n\t\t\tm.Stats = stats\n\t\t}\n\n\t\tmounts = append(mounts, m)\n\t}\n\n\treturn mounts, s.Err()\n}\n\n// parseMount parses an entry in /proc/[pid]/mountstats in the format:\n//\n//\tdevice [device] mounted on [mount] with fstype [type]\nfunc parseMount(ss []string) (*Mount, error) {\n\tif len(ss) < deviceEntryLen {\n\t\treturn nil, fmt.Errorf(\"%w: Invalid device %q\", ErrFileParse, ss)\n\t}\n\n\t// Check for specific words appearing at specific indices to ensure\n\t// the format is consistent with what we expect\n\tformat := []struct {\n\t\ti int\n\t\ts string\n\t}{\n\t\t{i: 0, s: \"device\"},\n\t\t{i: 2, s: \"mounted\"},\n\t\t{i: 3, s: \"on\"},\n\t\t{i: 5, s: \"with\"},\n\t\t{i: 6, s: \"fstype\"},\n\t}\n\n\tfor _, f := range format {\n\t\tif ss[f.i] != f.s {\n\t\t\treturn nil, fmt.Errorf(\"%w: Invalid device %q\", ErrFileParse, ss)\n\t\t}\n\t}\n\n\treturn &Mount{\n\t\tDevice: ss[1],\n\t\tMount:  ss[4],\n\t\tType:   ss[7],\n\t}, nil\n}\n\n// parseMountStatsNFS parses a MountStatsNFS by scanning additional information\n// related to NFS statistics.\nfunc parseMountStatsNFS(s *bufio.Scanner, statVersion string) (*MountStatsNFS, error) {\n\t// Field indicators for parsing specific types of data\n\tconst (\n\t\tfieldOpts       = \"opts:\"\n\t\tfieldAge        = \"age:\"\n\t\tfieldBytes      = \"bytes:\"\n\t\tfieldEvents     = \"events:\"\n\t\tfieldPerOpStats = \"per-op\"\n\t\tfieldTransport  = \"xprt:\"\n\t)\n\n\tstats := &MountStatsNFS{\n\t\tStatVersion: statVersion,\n\t}\n\n\tfor s.Scan() {\n\t\tss := strings.Fields(string(s.Bytes()))\n\t\tif len(ss) == 0 {\n\t\t\tbreak\n\t\t}\n\n\t\tswitch ss[0] {\n\t\tcase fieldOpts:\n\t\t\tif len(ss) < 2 {\n\t\t\t\treturn nil, fmt.Errorf(\"%w: Incomplete information for NFS stats: %v\", ErrFileParse, ss)\n\t\t\t}\n\t\t\tif stats.Opts == nil {\n\t\t\t\tstats.Opts = map[string]string{}\n\t\t\t}\n\t\t\tfor opt := range strings.SplitSeq(ss[1], \",\") {\n\t\t\t\tsplit := strings.Split(opt, \"=\")\n\t\t\t\tif len(split) == 2 {\n\t\t\t\t\tstats.Opts[split[0]] = split[1]\n\t\t\t\t} else {\n\t\t\t\t\tstats.Opts[opt] = \"\"\n\t\t\t\t}\n\t\t\t}\n\t\tcase fieldAge:\n\t\t\tif len(ss) < 2 {\n\t\t\t\treturn nil, fmt.Errorf(\"%w: Incomplete information for NFS stats: %v\", ErrFileParse, ss)\n\t\t\t}\n\t\t\t// Age integer is in seconds\n\t\t\td, err := time.ParseDuration(ss[1] + \"s\")\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\n\t\t\tstats.Age = d\n\t\tcase fieldBytes:\n\t\t\tif len(ss) < 2 {\n\t\t\t\treturn nil, fmt.Errorf(\"%w: Incomplete information for NFS stats: %v\", ErrFileParse, ss)\n\t\t\t}\n\t\t\tbstats, err := parseNFSBytesStats(ss[1:])\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\n\t\t\tstats.Bytes = *bstats\n\t\tcase fieldEvents:\n\t\t\tif len(ss) < 2 {\n\t\t\t\treturn nil, fmt.Errorf(\"%w: Incomplete information for NFS events: %v\", ErrFileParse, ss)\n\t\t\t}\n\t\t\testats, err := parseNFSEventsStats(ss[1:])\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\n\t\t\tstats.Events = *estats\n\t\tcase fieldTransport:\n\t\t\tif len(ss) < 3 {\n\t\t\t\treturn nil, fmt.Errorf(\"%w: Incomplete information for NFS transport stats: %v\", ErrFileParse, ss)\n\t\t\t}\n\n\t\t\ttstats, err := parseNFSTransportStats(ss[1:], statVersion)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\n\t\t\tstats.Transport = append(stats.Transport, *tstats)\n\t\t}\n\n\t\t// When encountering \"per-operation statistics\", we must break this\n\t\t// loop and parse them separately to ensure we can terminate parsing\n\t\t// before reaching another device entry; hence why this 'if' statement\n\t\t// is not just another switch case\n\t\tif ss[0] == fieldPerOpStats {\n\t\t\tbreak\n\t\t}\n\t}\n\n\tif err := s.Err(); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// NFS per-operation stats appear last before the next device entry\n\tperOpStats, err := parseNFSOperationStats(s)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tstats.Operations = perOpStats\n\n\treturn stats, nil\n}\n\n// parseNFSBytesStats parses a NFSBytesStats line using an input set of\n// integer fields.\nfunc parseNFSBytesStats(ss []string) (*NFSBytesStats, error) {\n\tif len(ss) != fieldBytesLen {\n\t\treturn nil, fmt.Errorf(\"%w: Invalid NFS bytes stats: %v\", ErrFileParse, ss)\n\t}\n\n\tns := make([]uint64, 0, fieldBytesLen)\n\tfor _, s := range ss {\n\t\tn, err := strconv.ParseUint(s, 10, 64)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tns = append(ns, n)\n\t}\n\n\treturn &NFSBytesStats{\n\t\tRead:        ns[0],\n\t\tWrite:       ns[1],\n\t\tDirectRead:  ns[2],\n\t\tDirectWrite: ns[3],\n\t\tReadTotal:   ns[4],\n\t\tWriteTotal:  ns[5],\n\t\tReadPages:   ns[6],\n\t\tWritePages:  ns[7],\n\t}, nil\n}\n\n// parseNFSEventsStats parses a NFSEventsStats line using an input set of\n// integer fields.\nfunc parseNFSEventsStats(ss []string) (*NFSEventsStats, error) {\n\tif len(ss) != fieldEventsLen {\n\t\treturn nil, fmt.Errorf(\"%w: invalid NFS events stats: %v\", ErrFileParse, ss)\n\t}\n\n\tns := make([]uint64, 0, fieldEventsLen)\n\tfor _, s := range ss {\n\t\tn, err := strconv.ParseUint(s, 10, 64)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tns = append(ns, n)\n\t}\n\n\treturn &NFSEventsStats{\n\t\tInodeRevalidate:     ns[0],\n\t\tDnodeRevalidate:     ns[1],\n\t\tDataInvalidate:      ns[2],\n\t\tAttributeInvalidate: ns[3],\n\t\tVFSOpen:             ns[4],\n\t\tVFSLookup:           ns[5],\n\t\tVFSAccess:           ns[6],\n\t\tVFSUpdatePage:       ns[7],\n\t\tVFSReadPage:         ns[8],\n\t\tVFSReadPages:        ns[9],\n\t\tVFSWritePage:        ns[10],\n\t\tVFSWritePages:       ns[11],\n\t\tVFSGetdents:         ns[12],\n\t\tVFSSetattr:          ns[13],\n\t\tVFSFlush:            ns[14],\n\t\tVFSFsync:            ns[15],\n\t\tVFSLock:             ns[16],\n\t\tVFSFileRelease:      ns[17],\n\t\tCongestionWait:      ns[18],\n\t\tTruncation:          ns[19],\n\t\tWriteExtension:      ns[20],\n\t\tSillyRename:         ns[21],\n\t\tShortRead:           ns[22],\n\t\tShortWrite:          ns[23],\n\t\tJukeboxDelay:        ns[24],\n\t\tPNFSRead:            ns[25],\n\t\tPNFSWrite:           ns[26],\n\t}, nil\n}\n\n// parseNFSOperationStats parses a slice of NFSOperationStats by scanning\n// additional information about per-operation statistics until an empty\n// line is reached.\nfunc parseNFSOperationStats(s *bufio.Scanner) ([]NFSOperationStats, error) {\n\tconst (\n\t\t// Minimum number of expected fields in each per-operation statistics set\n\t\tminFields = 9\n\t)\n\n\tvar ops []NFSOperationStats\n\n\tfor s.Scan() {\n\t\tss := strings.Fields(string(s.Bytes()))\n\t\tif len(ss) == 0 {\n\t\t\t// Must break when reading a blank line after per-operation stats to\n\t\t\t// enable top-level function to parse the next device entry\n\t\t\tbreak\n\t\t}\n\n\t\tif len(ss) < minFields {\n\t\t\treturn nil, fmt.Errorf(\"%w: invalid NFS per-operations stats: %v\", ErrFileParse, ss)\n\t\t}\n\n\t\t// Skip string operation name for integers\n\t\tns := make([]uint64, 0, minFields-1)\n\t\tfor _, st := range ss[1:] {\n\t\t\tn, err := strconv.ParseUint(st, 10, 64)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\n\t\t\tns = append(ns, n)\n\t\t}\n\t\topStats := NFSOperationStats{\n\t\t\tOperation:                           strings.TrimSuffix(ss[0], \":\"),\n\t\t\tRequests:                            ns[0],\n\t\t\tTransmissions:                       ns[1],\n\t\t\tMajorTimeouts:                       ns[2],\n\t\t\tBytesSent:                           ns[3],\n\t\t\tBytesReceived:                       ns[4],\n\t\t\tCumulativeQueueMilliseconds:         ns[5],\n\t\t\tCumulativeTotalResponseMilliseconds: ns[6],\n\t\t\tCumulativeTotalRequestMilliseconds:  ns[7],\n\t\t}\n\n\t\tif len(ns) > 8 {\n\t\t\topStats.Errors = ns[8]\n\t\t}\n\n\t\tops = append(ops, opStats)\n\t}\n\n\treturn ops, s.Err()\n}\n\n// parseNFSTransportStats parses a NFSTransportStats line using an input set of\n// integer fields matched to a specific stats version.\nfunc parseNFSTransportStats(ss []string, statVersion string) (*NFSTransportStats, error) {\n\t// Extract the protocol field. It is the only string value in the line\n\tprotocol := ss[0]\n\tss = ss[1:]\n\n\tswitch statVersion {\n\tcase statVersion10:\n\t\tvar expectedLength int\n\t\tswitch protocol {\n\t\tcase \"tcp\":\n\t\t\texpectedLength = fieldTransport10TCPLen\n\t\tcase \"udp\":\n\t\t\texpectedLength = fieldTransport10UDPLen\n\t\tdefault:\n\t\t\treturn nil, fmt.Errorf(\"%w: Invalid NFS protocol \\\"%s\\\" in stats 1.0 statement: %v\", ErrFileParse, protocol, ss)\n\t\t}\n\t\tif len(ss) != expectedLength {\n\t\t\treturn nil, fmt.Errorf(\"%w: Invalid NFS transport stats 1.0 statement: %v\", ErrFileParse, ss)\n\t\t}\n\tcase statVersion11:\n\t\tvar expectedLength int\n\t\tswitch protocol {\n\t\tcase \"tcp\":\n\t\t\texpectedLength = fieldTransport11TCPLen\n\t\tcase \"udp\":\n\t\t\texpectedLength = fieldTransport11UDPLen\n\t\tcase \"rdma\":\n\t\t\texpectedLength = fieldTransport11RDMAMinLen\n\t\tdefault:\n\t\t\treturn nil, fmt.Errorf(\"%w: invalid NFS protocol \\\"%s\\\" in stats 1.1 statement: %v\", ErrFileParse, protocol, ss)\n\t\t}\n\t\tif (len(ss) != expectedLength && (protocol == \"tcp\" || protocol == \"udp\")) ||\n\t\t\t(protocol == \"rdma\" && len(ss) < expectedLength) {\n\t\t\treturn nil, fmt.Errorf(\"%w: invalid NFS transport stats 1.1 statement: %v, protocol: %v\", ErrFileParse, ss, protocol)\n\t\t}\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"%w: Unrecognized NFS transport stats version: %q, protocol: %v\", ErrFileParse, statVersion, protocol)\n\t}\n\n\t// Allocate enough for v1.1 stats since zero value for v1.1 stats will be okay\n\t// in a v1.0 response. Since the stat length is bigger for TCP stats, we use\n\t// the TCP length here.\n\t//\n\t// Note: slice length must be set to length of v1.1 stats to avoid a panic when\n\t// only v1.0 stats are present.\n\t// See: https://github.com/prometheus/node_exporter/issues/571.\n\t//\n\t// Note: NFS Over RDMA slice length is fieldTransport11RDMAMaxLen\n\tns := make([]uint64, fieldTransport11RDMAMaxLen+3)\n\tfor i, s := range ss {\n\t\tn, err := strconv.ParseUint(s, 10, 64)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tns[i] = n\n\t}\n\n\t// The fields differ depending on the transport protocol (TCP or UDP)\n\t// From https://utcc.utoronto.ca/%7Ecks/space/blog/linux/NFSMountstatsXprt\n\t//\n\t// For the udp RPC transport there is no connection count, connect idle time,\n\t// or idle time (fields #3, #4, and #5); all other fields are the same. So\n\t// we set them to 0 here.\n\tswitch protocol {\n\tcase \"udp\":\n\t\tns = append(ns[:2], append(make([]uint64, 3), ns[2:]...)...)\n\tcase \"tcp\":\n\t\tns = append(ns[:fieldTransport11TCPLen], make([]uint64, fieldTransport11RDMAMaxLen-fieldTransport11TCPLen+3)...)\n\tcase \"rdma\":\n\t\tns = append(ns[:fieldTransport10TCPLen], append(make([]uint64, 3), ns[fieldTransport10TCPLen:]...)...)\n\t}\n\n\treturn &NFSTransportStats{\n\t\t// NFS xprt over tcp or udp\n\t\tProtocol:                 protocol,\n\t\tPort:                     ns[0],\n\t\tBind:                     ns[1],\n\t\tConnect:                  ns[2],\n\t\tConnectIdleTime:          ns[3],\n\t\tIdleTimeSeconds:          ns[4],\n\t\tSends:                    ns[5],\n\t\tReceives:                 ns[6],\n\t\tBadTransactionIDs:        ns[7],\n\t\tCumulativeActiveRequests: ns[8],\n\t\tCumulativeBacklog:        ns[9],\n\n\t\t// NFS xprt over tcp or udp\n\t\t// And statVersion 1.1\n\t\tMaximumRPCSlotsUsed:    ns[10],\n\t\tCumulativeSendingQueue: ns[11],\n\t\tCumulativePendingQueue: ns[12],\n\n\t\t// NFS xprt over rdma\n\t\t// And stat Version 1.1\n\t\tReadChunkCount:       ns[13],\n\t\tWriteChunkCount:      ns[14],\n\t\tReplyChunkCount:      ns[15],\n\t\tTotalRdmaRequest:     ns[16],\n\t\tPullupCopyCount:      ns[17],\n\t\tHardwayRegisterCount: ns[18],\n\t\tFailedMarshalCount:   ns[19],\n\t\tBadReplyCount:        ns[20],\n\t\tMrsRecovered:         ns[21],\n\t\tMrsOrphaned:          ns[22],\n\t\tMrsAllocated:         ns[23],\n\t\tEmptySendctxQ:        ns[24],\n\t\tTotalRdmaReply:       ns[25],\n\t\tFixupCopyCount:       ns[26],\n\t\tReplyWaitsForSend:    ns[27],\n\t\tLocalInvNeeded:       ns[28],\n\t\tNomsgCallCount:       ns[29],\n\t\tBcallCount:           ns[30],\n\t}, nil\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/net_conntrackstat.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage procfs\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"strings\"\n\n\t\"github.com/prometheus/procfs/internal/util\"\n)\n\n// A ConntrackStatEntry represents one line from net/stat/nf_conntrack\n// and contains netfilter conntrack statistics at one CPU core.\ntype ConntrackStatEntry struct {\n\tEntries       uint64\n\tSearched      uint64\n\tFound         uint64\n\tNew           uint64\n\tInvalid       uint64\n\tIgnore        uint64\n\tDelete        uint64\n\tDeleteList    uint64\n\tInsert        uint64\n\tInsertFailed  uint64\n\tDrop          uint64\n\tEarlyDrop     uint64\n\tSearchRestart uint64\n}\n\n// ConntrackStat retrieves netfilter's conntrack statistics, split by CPU cores.\nfunc (fs FS) ConntrackStat() ([]ConntrackStatEntry, error) {\n\treturn readConntrackStat(fs.proc.Path(\"net\", \"stat\", \"nf_conntrack\"))\n}\n\n// Parses a slice of ConntrackStatEntries from the given filepath.\nfunc readConntrackStat(path string) ([]ConntrackStatEntry, error) {\n\t// This file is small and can be read with one syscall.\n\tb, err := util.ReadFileNoStat(path)\n\tif err != nil {\n\t\t// Do not wrap this error so the caller can detect os.IsNotExist and\n\t\t// similar conditions.\n\t\treturn nil, err\n\t}\n\n\tstat, err := parseConntrackStat(bytes.NewReader(b))\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"%w: Cannot read file: %v: %w\", ErrFileRead, path, err)\n\t}\n\n\treturn stat, nil\n}\n\n// Reads the contents of a conntrack statistics file and parses a slice of ConntrackStatEntries.\nfunc parseConntrackStat(r io.Reader) ([]ConntrackStatEntry, error) {\n\tvar entries []ConntrackStatEntry\n\n\tscanner := bufio.NewScanner(r)\n\tscanner.Scan()\n\tfor scanner.Scan() {\n\t\tfields := strings.Fields(scanner.Text())\n\t\tconntrackEntry, err := parseConntrackStatEntry(fields)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tentries = append(entries, *conntrackEntry)\n\t}\n\n\treturn entries, nil\n}\n\n// Parses a ConntrackStatEntry from given array of fields.\nfunc parseConntrackStatEntry(fields []string) (*ConntrackStatEntry, error) {\n\tentries, err := util.ParseHexUint64s(fields)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"%w: Cannot parse entry: %d: %w\", ErrFileParse, entries, err)\n\t}\n\tnumEntries := len(entries)\n\tif numEntries < 16 || numEntries > 17 {\n\t\treturn nil,\n\t\t\tfmt.Errorf(\"%w: invalid conntrackstat entry, invalid number of fields: %d\", ErrFileParse, numEntries)\n\t}\n\n\tstats := &ConntrackStatEntry{\n\t\tEntries:      *entries[0],\n\t\tSearched:     *entries[1],\n\t\tFound:        *entries[2],\n\t\tNew:          *entries[3],\n\t\tInvalid:      *entries[4],\n\t\tIgnore:       *entries[5],\n\t\tDelete:       *entries[6],\n\t\tDeleteList:   *entries[7],\n\t\tInsert:       *entries[8],\n\t\tInsertFailed: *entries[9],\n\t\tDrop:         *entries[10],\n\t\tEarlyDrop:    *entries[11],\n\t}\n\n\t// Ignore missing search_restart on Linux < 2.6.35.\n\tif numEntries == 17 {\n\t\tstats.SearchRestart = *entries[16]\n\t}\n\n\treturn stats, nil\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/net_dev.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage procfs\n\nimport (\n\t\"bufio\"\n\t\"errors\"\n\t\"os\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n)\n\n// NetDevLine is single line parsed from /proc/net/dev or /proc/[pid]/net/dev.\ntype NetDevLine struct {\n\tName         string `json:\"name\"`          // The name of the interface.\n\tRxBytes      uint64 `json:\"rx_bytes\"`      // Cumulative count of bytes received.\n\tRxPackets    uint64 `json:\"rx_packets\"`    // Cumulative count of packets received.\n\tRxErrors     uint64 `json:\"rx_errors\"`     // Cumulative count of receive errors encountered.\n\tRxDropped    uint64 `json:\"rx_dropped\"`    // Cumulative count of packets dropped while receiving.\n\tRxFIFO       uint64 `json:\"rx_fifo\"`       // Cumulative count of FIFO buffer errors.\n\tRxFrame      uint64 `json:\"rx_frame\"`      // Cumulative count of packet framing errors.\n\tRxCompressed uint64 `json:\"rx_compressed\"` // Cumulative count of compressed packets received by the device driver.\n\tRxMulticast  uint64 `json:\"rx_multicast\"`  // Cumulative count of multicast frames received by the device driver.\n\tTxBytes      uint64 `json:\"tx_bytes\"`      // Cumulative count of bytes transmitted.\n\tTxPackets    uint64 `json:\"tx_packets\"`    // Cumulative count of packets transmitted.\n\tTxErrors     uint64 `json:\"tx_errors\"`     // Cumulative count of transmit errors encountered.\n\tTxDropped    uint64 `json:\"tx_dropped\"`    // Cumulative count of packets dropped while transmitting.\n\tTxFIFO       uint64 `json:\"tx_fifo\"`       // Cumulative count of FIFO buffer errors.\n\tTxCollisions uint64 `json:\"tx_collisions\"` // Cumulative count of collisions detected on the interface.\n\tTxCarrier    uint64 `json:\"tx_carrier\"`    // Cumulative count of carrier losses detected by the device driver.\n\tTxCompressed uint64 `json:\"tx_compressed\"` // Cumulative count of compressed packets transmitted by the device driver.\n}\n\n// NetDev is parsed from /proc/net/dev or /proc/[pid]/net/dev. The map keys\n// are interface names.\ntype NetDev map[string]NetDevLine\n\n// NetDev returns kernel/system statistics read from /proc/net/dev.\nfunc (fs FS) NetDev() (NetDev, error) {\n\treturn newNetDev(fs.proc.Path(\"net/dev\"))\n}\n\n// NetDev returns kernel/system statistics read from /proc/[pid]/net/dev.\nfunc (p Proc) NetDev() (NetDev, error) {\n\treturn newNetDev(p.path(\"net/dev\"))\n}\n\n// newNetDev creates a new NetDev from the contents of the given file.\nfunc newNetDev(file string) (NetDev, error) {\n\tf, err := os.Open(file)\n\tif err != nil {\n\t\treturn NetDev{}, err\n\t}\n\tdefer f.Close()\n\n\tnetDev := NetDev{}\n\ts := bufio.NewScanner(f)\n\tfor n := 0; s.Scan(); n++ {\n\t\t// Skip the 2 header lines.\n\t\tif n < 2 {\n\t\t\tcontinue\n\t\t}\n\n\t\tline, err := netDev.parseLine(s.Text())\n\t\tif err != nil {\n\t\t\treturn netDev, err\n\t\t}\n\n\t\tnetDev[line.Name] = *line\n\t}\n\n\treturn netDev, s.Err()\n}\n\n// parseLine parses a single line from the /proc/net/dev file. Header lines\n// must be filtered prior to calling this method.\nfunc (netDev NetDev) parseLine(rawLine string) (*NetDevLine, error) {\n\tidx := strings.LastIndex(rawLine, \":\")\n\tif idx == -1 {\n\t\treturn nil, errors.New(\"invalid net/dev line, missing colon\")\n\t}\n\tfields := strings.Fields(strings.TrimSpace(rawLine[idx+1:]))\n\n\tvar err error\n\tline := &NetDevLine{}\n\n\t// Interface Name\n\tline.Name = strings.TrimSpace(rawLine[:idx])\n\tif line.Name == \"\" {\n\t\treturn nil, errors.New(\"invalid net/dev line, empty interface name\")\n\t}\n\n\t// RX\n\tline.RxBytes, err = strconv.ParseUint(fields[0], 10, 64)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tline.RxPackets, err = strconv.ParseUint(fields[1], 10, 64)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tline.RxErrors, err = strconv.ParseUint(fields[2], 10, 64)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tline.RxDropped, err = strconv.ParseUint(fields[3], 10, 64)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tline.RxFIFO, err = strconv.ParseUint(fields[4], 10, 64)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tline.RxFrame, err = strconv.ParseUint(fields[5], 10, 64)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tline.RxCompressed, err = strconv.ParseUint(fields[6], 10, 64)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tline.RxMulticast, err = strconv.ParseUint(fields[7], 10, 64)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// TX\n\tline.TxBytes, err = strconv.ParseUint(fields[8], 10, 64)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tline.TxPackets, err = strconv.ParseUint(fields[9], 10, 64)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tline.TxErrors, err = strconv.ParseUint(fields[10], 10, 64)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tline.TxDropped, err = strconv.ParseUint(fields[11], 10, 64)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tline.TxFIFO, err = strconv.ParseUint(fields[12], 10, 64)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tline.TxCollisions, err = strconv.ParseUint(fields[13], 10, 64)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tline.TxCarrier, err = strconv.ParseUint(fields[14], 10, 64)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tline.TxCompressed, err = strconv.ParseUint(fields[15], 10, 64)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn line, nil\n}\n\n// Total aggregates the values across interfaces and returns a new NetDevLine.\n// The Name field will be a sorted comma separated list of interface names.\nfunc (netDev NetDev) Total() NetDevLine {\n\ttotal := NetDevLine{}\n\n\tnames := make([]string, 0, len(netDev))\n\tfor _, ifc := range netDev {\n\t\tnames = append(names, ifc.Name)\n\t\ttotal.RxBytes += ifc.RxBytes\n\t\ttotal.RxPackets += ifc.RxPackets\n\t\ttotal.RxErrors += ifc.RxErrors\n\t\ttotal.RxDropped += ifc.RxDropped\n\t\ttotal.RxFIFO += ifc.RxFIFO\n\t\ttotal.RxFrame += ifc.RxFrame\n\t\ttotal.RxCompressed += ifc.RxCompressed\n\t\ttotal.RxMulticast += ifc.RxMulticast\n\t\ttotal.TxBytes += ifc.TxBytes\n\t\ttotal.TxPackets += ifc.TxPackets\n\t\ttotal.TxErrors += ifc.TxErrors\n\t\ttotal.TxDropped += ifc.TxDropped\n\t\ttotal.TxFIFO += ifc.TxFIFO\n\t\ttotal.TxCollisions += ifc.TxCollisions\n\t\ttotal.TxCarrier += ifc.TxCarrier\n\t\ttotal.TxCompressed += ifc.TxCompressed\n\t}\n\tsort.Strings(names)\n\ttotal.Name = strings.Join(names, \", \")\n\n\treturn total\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/net_dev_snmp6.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage procfs\n\nimport (\n\t\"bufio\"\n\t\"errors\"\n\t\"io\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strconv\"\n\t\"strings\"\n)\n\n// NetDevSNMP6 is parsed from files in /proc/net/dev_snmp6/ or /proc/<PID>/net/dev_snmp6/.\n// The outer map's keys are interface names and the inner map's keys are stat names.\n//\n// If you'd like a total across all interfaces, please use the Snmp6() method of the Proc type.\ntype NetDevSNMP6 map[string]map[string]uint64\n\n// Returns kernel/system statistics read from interface files within the /proc/net/dev_snmp6/\n// directory.\nfunc (fs FS) NetDevSNMP6() (NetDevSNMP6, error) {\n\treturn newNetDevSNMP6(fs.proc.Path(\"net/dev_snmp6\"))\n}\n\n// Returns kernel/system statistics read from interface files within the /proc/<PID>/net/dev_snmp6/\n// directory.\nfunc (p Proc) NetDevSNMP6() (NetDevSNMP6, error) {\n\treturn newNetDevSNMP6(p.path(\"net/dev_snmp6\"))\n}\n\n// newNetDevSNMP6 creates a new NetDevSNMP6 from the contents of the given directory.\nfunc newNetDevSNMP6(dir string) (NetDevSNMP6, error) {\n\tnetDevSNMP6 := make(NetDevSNMP6)\n\n\t// The net/dev_snmp6 folders contain one file per interface\n\tifaceFiles, err := os.ReadDir(dir)\n\tif err != nil {\n\t\t// On systems with IPv6 disabled, this directory won't exist.\n\t\t// Do nothing.\n\t\tif errors.Is(err, os.ErrNotExist) {\n\t\t\treturn netDevSNMP6, err\n\t\t}\n\t\treturn netDevSNMP6, err\n\t}\n\n\tfor _, iFaceFile := range ifaceFiles {\n\t\tfilePath := filepath.Join(dir, iFaceFile.Name())\n\n\t\tf, err := os.Open(filePath)\n\t\tif err != nil {\n\t\t\treturn netDevSNMP6, err\n\t\t}\n\t\tdefer f.Close()\n\n\t\tnetDevSNMP6[iFaceFile.Name()], err = parseNetDevSNMP6Stats(f)\n\t\tif err != nil {\n\t\t\treturn netDevSNMP6, err\n\t\t}\n\t}\n\n\treturn netDevSNMP6, nil\n}\n\nfunc parseNetDevSNMP6Stats(r io.Reader) (map[string]uint64, error) {\n\tm := make(map[string]uint64)\n\n\tscanner := bufio.NewScanner(r)\n\tfor scanner.Scan() {\n\t\tstat := strings.Fields(scanner.Text())\n\t\tif len(stat) < 2 {\n\t\t\tcontinue\n\t\t}\n\t\tkey, val := stat[0], stat[1]\n\n\t\t// Expect stat name to contain \"6\" or be \"ifIndex\"\n\t\tif strings.Contains(key, \"6\") || key == \"ifIndex\" {\n\t\t\tv, err := strconv.ParseUint(val, 10, 64)\n\t\t\tif err != nil {\n\t\t\t\treturn m, err\n\t\t\t}\n\n\t\t\tm[key] = v\n\t\t}\n\t}\n\treturn m, scanner.Err()\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/net_ip_socket.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage procfs\n\nimport (\n\t\"bufio\"\n\t\"encoding/hex\"\n\t\"fmt\"\n\t\"io\"\n\t\"net\"\n\t\"os\"\n\t\"strconv\"\n\t\"strings\"\n)\n\nconst (\n\t// Maximum size limit used by io.LimitReader while reading the content of the\n\t// /proc/net/udp{,6} files. The number of lines inside such a file is dynamic\n\t// as each line represents a single used socket.\n\t// In theory, the number of available sockets is 65535 (2^16 - 1) per IP.\n\t// With e.g. 150 Byte per line and the maximum number of 65535,\n\t// the reader needs to handle 150 Byte * 65535 =~ 10 MB for a single IP.\n\treadLimit = 4294967296 // Byte -> 4 GiB\n)\n\n// This contains generic data structures for both udp and tcp sockets.\ntype (\n\t// NetIPSocket represents the contents of /proc/net/{t,u}dp{,6} file without the header.\n\tNetIPSocket []*netIPSocketLine\n\n\t// NetIPSocketSummary provides already computed values like the total queue lengths or\n\t// the total number of used sockets. In contrast to NetIPSocket it does not collect\n\t// the parsed lines into a slice.\n\tNetIPSocketSummary struct {\n\t\t// TxQueueLength shows the total queue length of all parsed tx_queue lengths.\n\t\tTxQueueLength uint64\n\t\t// RxQueueLength shows the total queue length of all parsed rx_queue lengths.\n\t\tRxQueueLength uint64\n\t\t// UsedSockets shows the total number of parsed lines representing the\n\t\t// number of used sockets.\n\t\tUsedSockets uint64\n\t\t// Drops shows the total number of dropped packets of all UDP sockets.\n\t\tDrops *uint64\n\t}\n\n\t// A single line parser for fields from /proc/net/{t,u}dp{,6}.\n\t// Fields which are not used by IPSocket are skipped.\n\t// Drops is non-nil for udp{,6}, but nil for tcp{,6}.\n\t// For the proc file format details, see https://linux.die.net/man/5/proc.\n\tnetIPSocketLine struct {\n\t\tSl        uint64\n\t\tLocalAddr net.IP\n\t\tLocalPort uint64\n\t\tRemAddr   net.IP\n\t\tRemPort   uint64\n\t\tSt        uint64\n\t\tTxQueue   uint64\n\t\tRxQueue   uint64\n\t\tUID       uint64\n\t\tInode     uint64\n\t\tDrops     *uint64\n\t}\n)\n\nfunc newNetIPSocket(file string) (NetIPSocket, error) {\n\tf, err := os.Open(file)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer f.Close()\n\n\tvar netIPSocket NetIPSocket\n\tisUDP := strings.Contains(file, \"udp\")\n\n\tlr := io.LimitReader(f, readLimit)\n\ts := bufio.NewScanner(lr)\n\ts.Scan() // skip first line with headers\n\tfor s.Scan() {\n\t\tfields := strings.Fields(s.Text())\n\t\tline, err := parseNetIPSocketLine(fields, isUDP)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tnetIPSocket = append(netIPSocket, line)\n\t}\n\tif err := s.Err(); err != nil {\n\t\treturn nil, err\n\t}\n\treturn netIPSocket, nil\n}\n\n// newNetIPSocketSummary creates a new NetIPSocket{,6} from the contents of the given file.\nfunc newNetIPSocketSummary(file string) (*NetIPSocketSummary, error) {\n\tf, err := os.Open(file)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer f.Close()\n\n\tvar netIPSocketSummary NetIPSocketSummary\n\tvar udpPacketDrops uint64\n\tisUDP := strings.Contains(file, \"udp\")\n\n\tlr := io.LimitReader(f, readLimit)\n\ts := bufio.NewScanner(lr)\n\ts.Scan() // skip first line with headers\n\tfor s.Scan() {\n\t\tfields := strings.Fields(s.Text())\n\t\tline, err := parseNetIPSocketLine(fields, isUDP)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tnetIPSocketSummary.TxQueueLength += line.TxQueue\n\t\tnetIPSocketSummary.RxQueueLength += line.RxQueue\n\t\tnetIPSocketSummary.UsedSockets++\n\t\tif isUDP {\n\t\t\tudpPacketDrops += *line.Drops\n\t\t\tnetIPSocketSummary.Drops = &udpPacketDrops\n\t\t}\n\t}\n\tif err := s.Err(); err != nil {\n\t\treturn nil, err\n\t}\n\treturn &netIPSocketSummary, nil\n}\n\n// the /proc/net/{t,u}dp{,6} files are network byte order for ipv4 and for ipv6 the address is four words consisting of four bytes each. In each of those four words the four bytes are written in reverse order.\n\nfunc parseIP(hexIP string) (net.IP, error) {\n\tvar byteIP []byte\n\tbyteIP, err := hex.DecodeString(hexIP)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"%w: Cannot parse socket field in %q: %w\", ErrFileParse, hexIP, err)\n\t}\n\tswitch len(byteIP) {\n\tcase 4:\n\t\treturn net.IP{byteIP[3], byteIP[2], byteIP[1], byteIP[0]}, nil\n\tcase 16:\n\t\ti := net.IP{\n\t\t\tbyteIP[3], byteIP[2], byteIP[1], byteIP[0],\n\t\t\tbyteIP[7], byteIP[6], byteIP[5], byteIP[4],\n\t\t\tbyteIP[11], byteIP[10], byteIP[9], byteIP[8],\n\t\t\tbyteIP[15], byteIP[14], byteIP[13], byteIP[12],\n\t\t}\n\t\treturn i, nil\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"%w: Unable to parse IP %s: %v\", ErrFileParse, hexIP, nil)\n\t}\n}\n\n// parseNetIPSocketLine parses a single line, represented by a list of fields.\nfunc parseNetIPSocketLine(fields []string, isUDP bool) (*netIPSocketLine, error) {\n\tline := &netIPSocketLine{}\n\tif len(fields) < 10 {\n\t\treturn nil, fmt.Errorf(\n\t\t\t\"%w: Less than 10 columns found %q\",\n\t\t\tErrFileParse,\n\t\t\tstrings.Join(fields, \" \"),\n\t\t)\n\t}\n\tvar err error // parse error\n\n\t// sl\n\ts := strings.Split(fields[0], \":\")\n\tif len(s) != 2 {\n\t\treturn nil, fmt.Errorf(\"%w: Unable to parse sl field in line %q\", ErrFileParse, fields[0])\n\t}\n\n\tif line.Sl, err = strconv.ParseUint(s[0], 0, 64); err != nil {\n\t\treturn nil, fmt.Errorf(\"%w: Unable to parse sl field in %q: %w\", ErrFileParse, line.Sl, err)\n\t}\n\t// local_address\n\tl := strings.Split(fields[1], \":\")\n\tif len(l) != 2 {\n\t\treturn nil, fmt.Errorf(\"%w: Unable to parse local_address field in %q\", ErrFileParse, fields[1])\n\t}\n\tif line.LocalAddr, err = parseIP(l[0]); err != nil {\n\t\treturn nil, err\n\t}\n\tif line.LocalPort, err = strconv.ParseUint(l[1], 16, 64); err != nil {\n\t\treturn nil, fmt.Errorf(\"%w: Unable to parse local_address port value line %q: %w\", ErrFileParse, line.LocalPort, err)\n\t}\n\n\t// remote_address\n\tr := strings.Split(fields[2], \":\")\n\tif len(r) != 2 {\n\t\treturn nil, fmt.Errorf(\"%w: Unable to parse rem_address field in %q\", ErrFileParse, fields[1])\n\t}\n\tif line.RemAddr, err = parseIP(r[0]); err != nil {\n\t\treturn nil, err\n\t}\n\tif line.RemPort, err = strconv.ParseUint(r[1], 16, 64); err != nil {\n\t\treturn nil, fmt.Errorf(\"%w: Cannot parse rem_address port value in %q: %w\", ErrFileParse, line.RemPort, err)\n\t}\n\n\t// st\n\tif line.St, err = strconv.ParseUint(fields[3], 16, 64); err != nil {\n\t\treturn nil, fmt.Errorf(\"%w: Cannot parse st value in %q: %w\", ErrFileParse, line.St, err)\n\t}\n\n\t// tx_queue and rx_queue\n\tq := strings.Split(fields[4], \":\")\n\tif len(q) != 2 {\n\t\treturn nil, fmt.Errorf(\n\t\t\t\"%w: Missing colon for tx/rx queues in socket line %q\",\n\t\t\tErrFileParse,\n\t\t\tfields[4],\n\t\t)\n\t}\n\tif line.TxQueue, err = strconv.ParseUint(q[0], 16, 64); err != nil {\n\t\treturn nil, fmt.Errorf(\"%w: Cannot parse tx_queue value in %q: %w\", ErrFileParse, line.TxQueue, err)\n\t}\n\tif line.RxQueue, err = strconv.ParseUint(q[1], 16, 64); err != nil {\n\t\treturn nil, fmt.Errorf(\"%w: Cannot parse trx_queue value in %q: %w\", ErrFileParse, line.RxQueue, err)\n\t}\n\n\t// uid\n\tif line.UID, err = strconv.ParseUint(fields[7], 0, 64); err != nil {\n\t\treturn nil, fmt.Errorf(\"%w: Cannot parse UID value in %q: %w\", ErrFileParse, line.UID, err)\n\t}\n\n\t// inode\n\tif line.Inode, err = strconv.ParseUint(fields[9], 0, 64); err != nil {\n\t\treturn nil, fmt.Errorf(\"%w: Cannot parse inode value in %q: %w\", ErrFileParse, line.Inode, err)\n\t}\n\n\t// drops\n\tif isUDP {\n\t\tdrops, err := strconv.ParseUint(fields[12], 0, 64)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"%w: Cannot parse drops value in %q: %w\", ErrFileParse, drops, err)\n\t\t}\n\t\tline.Drops = &drops\n\t}\n\n\treturn line, nil\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/net_protocols.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage procfs\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"fmt\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/prometheus/procfs/internal/util\"\n)\n\n// NetProtocolStats stores the contents from /proc/net/protocols.\ntype NetProtocolStats map[string]NetProtocolStatLine\n\n// NetProtocolStatLine contains a single line parsed from /proc/net/protocols. We\n// only care about the first six columns as the rest are not likely to change\n// and only serve to provide a set of capabilities for each protocol.\ntype NetProtocolStatLine struct {\n\tName         string // 0 The name of the protocol\n\tSize         uint64 // 1 The size, in bytes, of a given protocol structure. e.g. sizeof(struct tcp_sock) or sizeof(struct unix_sock)\n\tSockets      int64  // 2 Number of sockets in use by this protocol\n\tMemory       int64  // 3 Number of 4KB pages allocated by all sockets of this protocol\n\tPressure     int    // 4 This is either yes, no, or NI (not implemented). For the sake of simplicity we treat NI as not experiencing memory pressure.\n\tMaxHeader    uint64 // 5 Protocol specific max header size\n\tSlab         bool   // 6 Indicates whether or not memory is allocated from the SLAB\n\tModuleName   string // 7 The name of the module that implemented this protocol or \"kernel\" if not from a module\n\tCapabilities NetProtocolCapabilities\n}\n\n// NetProtocolCapabilities contains a list of capabilities for each protocol.\ntype NetProtocolCapabilities struct {\n\tClose               bool // 8\n\tConnect             bool // 9\n\tDisconnect          bool // 10\n\tAccept              bool // 11\n\tIoCtl               bool // 12\n\tInit                bool // 13\n\tDestroy             bool // 14\n\tShutdown            bool // 15\n\tSetSockOpt          bool // 16\n\tGetSockOpt          bool // 17\n\tSendMsg             bool // 18\n\tRecvMsg             bool // 19\n\tSendPage            bool // 20\n\tBind                bool // 21\n\tBacklogRcv          bool // 22\n\tHash                bool // 23\n\tUnHash              bool // 24\n\tGetPort             bool // 25\n\tEnterMemoryPressure bool // 26\n}\n\n// NetProtocols reads stats from /proc/net/protocols and returns a map of\n// PortocolStatLine entries. As of this writing no official Linux Documentation\n// exists, however the source is fairly self-explanatory and the format seems\n// stable since its introduction in 2.6.12-rc2\n// Linux 2.6.12-rc2 - https://elixir.bootlin.com/linux/v2.6.12-rc2/source/net/core/sock.c#L1452\n// Linux 5.10 - https://elixir.bootlin.com/linux/v5.10.4/source/net/core/sock.c#L3586\nfunc (fs FS) NetProtocols() (NetProtocolStats, error) {\n\tdata, err := util.ReadFileNoStat(fs.proc.Path(\"net/protocols\"))\n\tif err != nil {\n\t\treturn NetProtocolStats{}, err\n\t}\n\treturn parseNetProtocols(bufio.NewScanner(bytes.NewReader(data)))\n}\n\nfunc parseNetProtocols(s *bufio.Scanner) (NetProtocolStats, error) {\n\tnps := NetProtocolStats{}\n\n\t// Skip the header line\n\ts.Scan()\n\n\tfor s.Scan() {\n\t\tline, err := nps.parseLine(s.Text())\n\t\tif err != nil {\n\t\t\treturn NetProtocolStats{}, err\n\t\t}\n\n\t\tnps[line.Name] = *line\n\t}\n\treturn nps, nil\n}\n\nfunc (ps NetProtocolStats) parseLine(rawLine string) (*NetProtocolStatLine, error) {\n\tline := &NetProtocolStatLine{Capabilities: NetProtocolCapabilities{}}\n\tvar err error\n\tconst enabled = \"yes\"\n\tconst disabled = \"no\"\n\n\tfields := strings.Fields(rawLine)\n\tline.Name = fields[0]\n\tline.Size, err = strconv.ParseUint(fields[1], 10, 64)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tline.Sockets, err = strconv.ParseInt(fields[2], 10, 64)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tline.Memory, err = strconv.ParseInt(fields[3], 10, 64)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tswitch fields[4] {\n\tcase enabled:\n\t\tline.Pressure = 1\n\tcase disabled:\n\t\tline.Pressure = 0\n\tdefault:\n\t\tline.Pressure = -1\n\t}\n\tline.MaxHeader, err = strconv.ParseUint(fields[5], 10, 64)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tswitch fields[6] {\n\tcase enabled:\n\t\tline.Slab = true\n\tcase disabled:\n\t\tline.Slab = false\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"%w: capability for protocol: %s\", ErrFileParse, line.Name)\n\t}\n\tline.ModuleName = fields[7]\n\n\terr = line.Capabilities.parseCapabilities(fields[8:])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn line, nil\n}\n\nfunc (pc *NetProtocolCapabilities) parseCapabilities(capabilities []string) error {\n\t// The capabilities are all bools so we can loop over to map them\n\tcapabilityFields := [...]*bool{\n\t\t&pc.Close,\n\t\t&pc.Connect,\n\t\t&pc.Disconnect,\n\t\t&pc.Accept,\n\t\t&pc.IoCtl,\n\t\t&pc.Init,\n\t\t&pc.Destroy,\n\t\t&pc.Shutdown,\n\t\t&pc.SetSockOpt,\n\t\t&pc.GetSockOpt,\n\t\t&pc.SendMsg,\n\t\t&pc.RecvMsg,\n\t\t&pc.SendPage,\n\t\t&pc.Bind,\n\t\t&pc.BacklogRcv,\n\t\t&pc.Hash,\n\t\t&pc.UnHash,\n\t\t&pc.GetPort,\n\t\t&pc.EnterMemoryPressure,\n\t}\n\n\tfor i := range capabilities {\n\t\tswitch capabilities[i] {\n\t\tcase \"y\":\n\t\t\t*capabilityFields[i] = true\n\t\tcase \"n\":\n\t\t\t*capabilityFields[i] = false\n\t\tdefault:\n\t\t\treturn fmt.Errorf(\"%w: capability block for protocol: position %d\", ErrFileParse, i)\n\t\t}\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/net_route.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage procfs\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/prometheus/procfs/internal/util\"\n)\n\nconst (\n\tblackholeRepresentation string = \"*\"\n\tblackholeIfaceName      string = \"blackhole\"\n\trouteLineColumns        int    = 11\n)\n\n// A NetRouteLine represents one line from net/route.\ntype NetRouteLine struct {\n\tIface       string\n\tDestination uint32\n\tGateway     uint32\n\tFlags       uint32\n\tRefCnt      uint32\n\tUse         uint32\n\tMetric      uint32\n\tMask        uint32\n\tMTU         uint32\n\tWindow      uint32\n\tIRTT        uint32\n}\n\nfunc (fs FS) NetRoute() ([]NetRouteLine, error) {\n\treturn readNetRoute(fs.proc.Path(\"net\", \"route\"))\n}\n\nfunc readNetRoute(path string) ([]NetRouteLine, error) {\n\tb, err := util.ReadFileNoStat(path)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\troutelines, err := parseNetRoute(bytes.NewReader(b))\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to read net route from %s: %w\", path, err)\n\t}\n\treturn routelines, nil\n}\n\nfunc parseNetRoute(r io.Reader) ([]NetRouteLine, error) {\n\tvar routelines []NetRouteLine\n\n\tscanner := bufio.NewScanner(r)\n\tscanner.Scan()\n\tfor scanner.Scan() {\n\t\tfields := strings.Fields(scanner.Text())\n\t\trouteline, err := parseNetRouteLine(fields)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\troutelines = append(routelines, *routeline)\n\t}\n\treturn routelines, nil\n}\n\nfunc parseNetRouteLine(fields []string) (*NetRouteLine, error) {\n\tif len(fields) != routeLineColumns {\n\t\treturn nil, fmt.Errorf(\"invalid routeline, num of digits: %d\", len(fields))\n\t}\n\tiface := fields[0]\n\tif iface == blackholeRepresentation {\n\t\tiface = blackholeIfaceName\n\t}\n\tdestination, err := strconv.ParseUint(fields[1], 16, 32)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tgateway, err := strconv.ParseUint(fields[2], 16, 32)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tflags, err := strconv.ParseUint(fields[3], 10, 32)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\trefcnt, err := strconv.ParseUint(fields[4], 10, 32)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tuse, err := strconv.ParseUint(fields[5], 10, 32)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tmetric, err := strconv.ParseUint(fields[6], 10, 32)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tmask, err := strconv.ParseUint(fields[7], 16, 32)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tmtu, err := strconv.ParseUint(fields[8], 10, 32)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\twindow, err := strconv.ParseUint(fields[9], 10, 32)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tirtt, err := strconv.ParseUint(fields[10], 10, 32)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\trouteline := &NetRouteLine{\n\t\tIface:       iface,\n\t\tDestination: uint32(destination),\n\t\tGateway:     uint32(gateway),\n\t\tFlags:       uint32(flags),\n\t\tRefCnt:      uint32(refcnt),\n\t\tUse:         uint32(use),\n\t\tMetric:      uint32(metric),\n\t\tMask:        uint32(mask),\n\t\tMTU:         uint32(mtu),\n\t\tWindow:      uint32(window),\n\t\tIRTT:        uint32(irtt),\n\t}\n\treturn routeline, nil\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/net_sockstat.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage procfs\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"strings\"\n\n\t\"github.com/prometheus/procfs/internal/util\"\n)\n\n// A NetSockstat contains the output of /proc/net/sockstat{,6} for IPv4 or IPv6,\n// respectively.\ntype NetSockstat struct {\n\t// Used is non-nil for IPv4 sockstat results, but nil for IPv6.\n\tUsed      *int\n\tProtocols []NetSockstatProtocol\n}\n\n// A NetSockstatProtocol contains statistics about a given socket protocol.\n// Pointer fields indicate that the value may or may not be present on any\n// given protocol.\ntype NetSockstatProtocol struct {\n\tProtocol string\n\tInUse    int\n\tOrphan   *int\n\tTW       *int\n\tAlloc    *int\n\tMem      *int\n\tMemory   *int\n}\n\n// NetSockstat retrieves IPv4 socket statistics.\nfunc (fs FS) NetSockstat() (*NetSockstat, error) {\n\treturn readSockstat(fs.proc.Path(\"net\", \"sockstat\"))\n}\n\n// NetSockstat6 retrieves IPv6 socket statistics.\n//\n// If IPv6 is disabled on this kernel, the returned error can be checked with\n// os.IsNotExist.\nfunc (fs FS) NetSockstat6() (*NetSockstat, error) {\n\treturn readSockstat(fs.proc.Path(\"net\", \"sockstat6\"))\n}\n\n// readSockstat opens and parses a NetSockstat from the input file.\nfunc readSockstat(name string) (*NetSockstat, error) {\n\t// This file is small and can be read with one syscall.\n\tb, err := util.ReadFileNoStat(name)\n\tif err != nil {\n\t\t// Do not wrap this error so the caller can detect os.IsNotExist and\n\t\t// similar conditions.\n\t\treturn nil, err\n\t}\n\n\tstat, err := parseSockstat(bytes.NewReader(b))\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"%w: sockstats from %q: %w\", ErrFileRead, name, err)\n\t}\n\n\treturn stat, nil\n}\n\n// parseSockstat reads the contents of a sockstat file and parses a NetSockstat.\nfunc parseSockstat(r io.Reader) (*NetSockstat, error) {\n\tvar stat NetSockstat\n\ts := bufio.NewScanner(r)\n\tfor s.Scan() {\n\t\t// Expect a minimum of a protocol and one key/value pair.\n\t\tfields := strings.Split(s.Text(), \" \")\n\t\tif len(fields) < 3 {\n\t\t\treturn nil, fmt.Errorf(\"%w: Malformed sockstat line: %q\", ErrFileParse, s.Text())\n\t\t}\n\n\t\t// The remaining fields are key/value pairs.\n\t\tkvs, err := parseSockstatKVs(fields[1:])\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"%w: sockstat key/value pairs from %q: %w\", ErrFileParse, s.Text(), err)\n\t\t}\n\n\t\t// The first field is the protocol. We must trim its colon suffix.\n\t\tproto := strings.TrimSuffix(fields[0], \":\")\n\t\tswitch proto {\n\t\tcase \"sockets\":\n\t\t\t// Special case: IPv4 has a sockets \"used\" key/value pair that we\n\t\t\t// embed at the top level of the structure.\n\t\t\tused := kvs[\"used\"]\n\t\t\tstat.Used = &used\n\t\tdefault:\n\t\t\t// Parse all other lines as individual protocols.\n\t\t\tnsp := parseSockstatProtocol(kvs)\n\t\t\tnsp.Protocol = proto\n\t\t\tstat.Protocols = append(stat.Protocols, nsp)\n\t\t}\n\t}\n\n\tif err := s.Err(); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &stat, nil\n}\n\n// parseSockstatKVs parses a string slice into a map of key/value pairs.\nfunc parseSockstatKVs(kvs []string) (map[string]int, error) {\n\tif len(kvs)%2 != 0 {\n\t\treturn nil, fmt.Errorf(\"%w:: Odd number of fields in key/value pairs %q\", ErrFileParse, kvs)\n\t}\n\n\t// Iterate two values at a time to gather key/value pairs.\n\tout := make(map[string]int, len(kvs)/2)\n\tfor i := 0; i < len(kvs); i += 2 {\n\t\tvp := util.NewValueParser(kvs[i+1])\n\t\tout[kvs[i]] = vp.Int()\n\n\t\tif err := vp.Err(); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\treturn out, nil\n}\n\n// parseSockstatProtocol parses a NetSockstatProtocol from the input kvs map.\nfunc parseSockstatProtocol(kvs map[string]int) NetSockstatProtocol {\n\tvar nsp NetSockstatProtocol\n\tfor k, v := range kvs {\n\t\tswitch k {\n\t\tcase \"inuse\":\n\t\t\tnsp.InUse = v\n\t\tcase \"orphan\":\n\t\t\tnsp.Orphan = &v\n\t\tcase \"tw\":\n\t\t\tnsp.TW = &v\n\t\tcase \"alloc\":\n\t\t\tnsp.Alloc = &v\n\t\tcase \"mem\":\n\t\t\tnsp.Mem = &v\n\t\tcase \"memory\":\n\t\t\tnsp.Memory = &v\n\t\t}\n\t}\n\n\treturn nsp\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/net_softnet.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage procfs\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/prometheus/procfs/internal/util\"\n)\n\n// For the proc file format details,\n// See:\n// * Linux 2.6.23 https://elixir.bootlin.com/linux/v2.6.23/source/net/core/dev.c#L2343\n// * Linux 2.6.39 https://elixir.bootlin.com/linux/v2.6.39/source/net/core/dev.c#L4086\n// * Linux 4.18 https://elixir.bootlin.com/linux/v4.18/source/net/core/net-procfs.c#L162\n// * Linux 5.14 https://elixir.bootlin.com/linux/v5.14/source/net/core/net-procfs.c#L169\n\n// SoftnetStat contains a single row of data from /proc/net/softnet_stat.\ntype SoftnetStat struct {\n\t// Number of processed packets.\n\tProcessed uint32\n\t// Number of dropped packets.\n\tDropped uint32\n\t// Number of times processing packets ran out of quota.\n\tTimeSqueezed uint32\n\t// Number of collision occur while obtaining device lock while transmitting.\n\tCPUCollision uint32\n\t// Number of times cpu woken up received_rps.\n\tReceivedRps uint32\n\t// number of times flow limit has been reached.\n\tFlowLimitCount uint32\n\t// Softnet backlog status.\n\tSoftnetBacklogLen uint32\n\t// CPU id owning this softnet_data.\n\tIndex uint32\n\t// softnet_data's Width.\n\tWidth int\n}\n\nvar softNetProcFile = \"net/softnet_stat\"\n\n// NetSoftnetStat reads data from /proc/net/softnet_stat.\nfunc (fs FS) NetSoftnetStat() ([]SoftnetStat, error) {\n\tb, err := util.ReadFileNoStat(fs.proc.Path(softNetProcFile))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tentries, err := parseSoftnet(bytes.NewReader(b))\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"%w: /proc/net/softnet_stat: %w\", ErrFileParse, err)\n\t}\n\n\treturn entries, nil\n}\n\nfunc parseSoftnet(r io.Reader) ([]SoftnetStat, error) {\n\tconst minColumns = 9\n\n\ts := bufio.NewScanner(r)\n\n\tvar stats []SoftnetStat\n\tcpuIndex := 0\n\tfor s.Scan() {\n\t\tcolumns := strings.Fields(s.Text())\n\t\twidth := len(columns)\n\t\tsoftnetStat := SoftnetStat{}\n\n\t\tif width < minColumns {\n\t\t\treturn nil, fmt.Errorf(\"%w: detected %d columns, but expected at least %d\", ErrFileParse, width, minColumns)\n\t\t}\n\n\t\t// Linux 2.6.23 https://elixir.bootlin.com/linux/v2.6.23/source/net/core/dev.c#L2347\n\t\tif width >= minColumns {\n\t\t\tus, err := parseHexUint32s(columns[0:9])\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\n\t\t\tsoftnetStat.Processed = us[0]\n\t\t\tsoftnetStat.Dropped = us[1]\n\t\t\tsoftnetStat.TimeSqueezed = us[2]\n\t\t\tsoftnetStat.CPUCollision = us[8]\n\t\t}\n\n\t\t// Linux 2.6.39 https://elixir.bootlin.com/linux/v2.6.39/source/net/core/dev.c#L4086\n\t\tif width >= 10 {\n\t\t\tus, err := parseHexUint32s(columns[9:10])\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\n\t\t\tsoftnetStat.ReceivedRps = us[0]\n\t\t}\n\n\t\t// Linux 4.18 https://elixir.bootlin.com/linux/v4.18/source/net/core/net-procfs.c#L162\n\t\tif width >= 11 {\n\t\t\tus, err := parseHexUint32s(columns[10:11])\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\n\t\t\tsoftnetStat.FlowLimitCount = us[0]\n\t\t}\n\n\t\t// Linux 5.14 https://elixir.bootlin.com/linux/v5.14/source/net/core/net-procfs.c#L169\n\t\tif width >= 13 {\n\t\t\tus, err := parseHexUint32s(columns[11:13])\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\n\t\t\tsoftnetStat.SoftnetBacklogLen = us[0]\n\t\t\tsoftnetStat.Index = us[1]\n\t\t} else {\n\t\t\t// For older kernels, create the Index based on the scan line number.\n\t\t\tsoftnetStat.Index = uint32(cpuIndex)\n\t\t}\n\t\tsoftnetStat.Width = width\n\t\tstats = append(stats, softnetStat)\n\t\tcpuIndex++\n\t}\n\n\treturn stats, nil\n}\n\nfunc parseHexUint32s(ss []string) ([]uint32, error) {\n\tus := make([]uint32, 0, len(ss))\n\tfor _, s := range ss {\n\t\tu, err := strconv.ParseUint(s, 16, 32)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tus = append(us, uint32(u))\n\t}\n\n\treturn us, nil\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/net_tcp.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage procfs\n\ntype (\n\t// NetTCP represents the contents of /proc/net/tcp{,6} file without the header.\n\tNetTCP []*netIPSocketLine\n\n\t// NetTCPSummary provides already computed values like the total queue lengths or\n\t// the total number of used sockets. In contrast to NetTCP it does not collect\n\t// the parsed lines into a slice.\n\tNetTCPSummary NetIPSocketSummary\n)\n\n// NetTCP returns the IPv4 kernel/networking statistics for TCP datagrams\n// read from /proc/net/tcp.\n// Deprecated: Use github.com/mdlayher/netlink#Conn (with syscall.AF_INET) instead.\nfunc (fs FS) NetTCP() (NetTCP, error) {\n\treturn newNetTCP(fs.proc.Path(\"net/tcp\"))\n}\n\n// NetTCP6 returns the IPv6 kernel/networking statistics for TCP datagrams\n// read from /proc/net/tcp6.\n// Deprecated: Use github.com/mdlayher/netlink#Conn (with syscall.AF_INET6) instead.\nfunc (fs FS) NetTCP6() (NetTCP, error) {\n\treturn newNetTCP(fs.proc.Path(\"net/tcp6\"))\n}\n\n// NetTCPSummary returns already computed statistics like the total queue lengths\n// for TCP datagrams read from /proc/net/tcp.\n// Deprecated: Use github.com/mdlayher/netlink#Conn (with syscall.AF_INET) instead.\nfunc (fs FS) NetTCPSummary() (*NetTCPSummary, error) {\n\treturn newNetTCPSummary(fs.proc.Path(\"net/tcp\"))\n}\n\n// NetTCP6Summary returns already computed statistics like the total queue lengths\n// for TCP datagrams read from /proc/net/tcp6.\n// Deprecated: Use github.com/mdlayher/netlink#Conn (with syscall.AF_INET6) instead.\nfunc (fs FS) NetTCP6Summary() (*NetTCPSummary, error) {\n\treturn newNetTCPSummary(fs.proc.Path(\"net/tcp6\"))\n}\n\n// newNetTCP creates a new NetTCP{,6} from the contents of the given file.\nfunc newNetTCP(file string) (NetTCP, error) {\n\tn, err := newNetIPSocket(file)\n\tn1 := NetTCP(n)\n\treturn n1, err\n}\n\nfunc newNetTCPSummary(file string) (*NetTCPSummary, error) {\n\tn, err := newNetIPSocketSummary(file)\n\tif n == nil {\n\t\treturn nil, err\n\t}\n\tn1 := NetTCPSummary(*n)\n\treturn &n1, err\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/net_tls_stat.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage procfs\n\nimport (\n\t\"bufio\"\n\t\"fmt\"\n\t\"os\"\n\t\"strconv\"\n\t\"strings\"\n)\n\n// TLSStat struct represents data in /proc/net/tls_stat.\n// See https://docs.kernel.org/networking/tls.html#statistics\ntype TLSStat struct {\n\t// number of TX sessions currently installed where host handles cryptography\n\tTLSCurrTxSw int\n\t// number of RX sessions currently installed where host handles cryptography\n\tTLSCurrRxSw int\n\t// number of TX sessions currently installed where NIC handles cryptography\n\tTLSCurrTxDevice int\n\t// number of RX sessions currently installed where NIC handles cryptography\n\tTLSCurrRxDevice int\n\t//number of TX sessions opened with host cryptography\n\tTLSTxSw int\n\t//number of RX sessions opened with host cryptography\n\tTLSRxSw int\n\t// number of TX sessions opened with NIC cryptography\n\tTLSTxDevice int\n\t// number of RX sessions opened with NIC cryptography\n\tTLSRxDevice int\n\t// record decryption failed (e.g. due to incorrect authentication tag)\n\tTLSDecryptError int\n\t//  number of RX resyncs sent to NICs handling cryptography\n\tTLSRxDeviceResync int\n\t// number of RX records which had to be re-decrypted due to TLS_RX_EXPECT_NO_PAD mis-prediction. Note that this counter will also increment for non-data records.\n\tTLSDecryptRetry int\n\t// number of data RX records which had to be re-decrypted due to TLS_RX_EXPECT_NO_PAD mis-prediction.\n\tTLSRxNoPadViolation int\n}\n\n// NewTLSStat reads the tls_stat statistics.\nfunc NewTLSStat() (TLSStat, error) {\n\tfs, err := NewFS(DefaultMountPoint)\n\tif err != nil {\n\t\treturn TLSStat{}, err\n\t}\n\n\treturn fs.NewTLSStat()\n}\n\n// NewTLSStat reads the tls_stat statistics.\nfunc (fs FS) NewTLSStat() (TLSStat, error) {\n\tfile, err := os.Open(fs.proc.Path(\"net/tls_stat\"))\n\tif err != nil {\n\t\treturn TLSStat{}, err\n\t}\n\tdefer file.Close()\n\n\tvar (\n\t\ttlsstat = TLSStat{}\n\t\ts       = bufio.NewScanner(file)\n\t)\n\n\tfor s.Scan() {\n\t\tfields := strings.Fields(s.Text())\n\n\t\tif len(fields) != 2 {\n\t\t\treturn TLSStat{}, fmt.Errorf(\"%w: %q line %q\", ErrFileParse, file.Name(), s.Text())\n\t\t}\n\n\t\tname := fields[0]\n\t\tvalue, err := strconv.Atoi(fields[1])\n\t\tif err != nil {\n\t\t\treturn TLSStat{}, err\n\t\t}\n\n\t\tswitch name {\n\t\tcase \"TlsCurrTxSw\":\n\t\t\ttlsstat.TLSCurrTxSw = value\n\t\tcase \"TlsCurrRxSw\":\n\t\t\ttlsstat.TLSCurrRxSw = value\n\t\tcase \"TlsCurrTxDevice\":\n\t\t\ttlsstat.TLSCurrTxDevice = value\n\t\tcase \"TlsCurrRxDevice\":\n\t\t\ttlsstat.TLSCurrRxDevice = value\n\t\tcase \"TlsTxSw\":\n\t\t\ttlsstat.TLSTxSw = value\n\t\tcase \"TlsRxSw\":\n\t\t\ttlsstat.TLSRxSw = value\n\t\tcase \"TlsTxDevice\":\n\t\t\ttlsstat.TLSTxDevice = value\n\t\tcase \"TlsRxDevice\":\n\t\t\ttlsstat.TLSRxDevice = value\n\t\tcase \"TlsDecryptError\":\n\t\t\ttlsstat.TLSDecryptError = value\n\t\tcase \"TlsRxDeviceResync\":\n\t\t\ttlsstat.TLSRxDeviceResync = value\n\t\tcase \"TlsDecryptRetry\":\n\t\t\ttlsstat.TLSDecryptRetry = value\n\t\tcase \"TlsRxNoPadViolation\":\n\t\t\ttlsstat.TLSRxNoPadViolation = value\n\t\t}\n\n\t}\n\n\treturn tlsstat, s.Err()\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/net_udp.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage procfs\n\ntype (\n\t// NetUDP represents the contents of /proc/net/udp{,6} file without the header.\n\tNetUDP []*netIPSocketLine\n\n\t// NetUDPSummary provides already computed values like the total queue lengths or\n\t// the total number of used sockets. In contrast to NetUDP it does not collect\n\t// the parsed lines into a slice.\n\tNetUDPSummary NetIPSocketSummary\n)\n\n// NetUDP returns the IPv4 kernel/networking statistics for UDP datagrams\n// read from /proc/net/udp.\nfunc (fs FS) NetUDP() (NetUDP, error) {\n\treturn newNetUDP(fs.proc.Path(\"net/udp\"))\n}\n\n// NetUDP6 returns the IPv6 kernel/networking statistics for UDP datagrams\n// read from /proc/net/udp6.\nfunc (fs FS) NetUDP6() (NetUDP, error) {\n\treturn newNetUDP(fs.proc.Path(\"net/udp6\"))\n}\n\n// NetUDPSummary returns already computed statistics like the total queue lengths\n// for UDP datagrams read from /proc/net/udp.\nfunc (fs FS) NetUDPSummary() (*NetUDPSummary, error) {\n\treturn newNetUDPSummary(fs.proc.Path(\"net/udp\"))\n}\n\n// NetUDP6Summary returns already computed statistics like the total queue lengths\n// for UDP datagrams read from /proc/net/udp6.\nfunc (fs FS) NetUDP6Summary() (*NetUDPSummary, error) {\n\treturn newNetUDPSummary(fs.proc.Path(\"net/udp6\"))\n}\n\n// newNetUDP creates a new NetUDP{,6} from the contents of the given file.\nfunc newNetUDP(file string) (NetUDP, error) {\n\tn, err := newNetIPSocket(file)\n\tn1 := NetUDP(n)\n\treturn n1, err\n}\n\nfunc newNetUDPSummary(file string) (*NetUDPSummary, error) {\n\tn, err := newNetIPSocketSummary(file)\n\tif n == nil {\n\t\treturn nil, err\n\t}\n\tn1 := NetUDPSummary(*n)\n\treturn &n1, err\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/net_unix.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage procfs\n\nimport (\n\t\"bufio\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"strconv\"\n\t\"strings\"\n)\n\n// For the proc file format details,\n// see https://elixir.bootlin.com/linux/v4.17/source/net/unix/af_unix.c#L2815\n// and https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/net.h#L48.\n\n// Constants for the various /proc/net/unix enumerations.\n// TODO: match against x/sys/unix or similar?\nconst (\n\tnetUnixTypeStream    = 1\n\tnetUnixTypeDgram     = 2\n\tnetUnixTypeSeqpacket = 5\n\n\tnetUnixFlagDefault = 0\n\tnetUnixFlagListen  = 1 << 16\n\n\tnetUnixStateUnconnected  = 1\n\tnetUnixStateConnecting   = 2\n\tnetUnixStateConnected    = 3\n\tnetUnixStateDisconnected = 4\n)\n\n// NetUNIXType is the type of the type field.\ntype NetUNIXType uint64\n\n// NetUNIXFlags is the type of the flags field.\ntype NetUNIXFlags uint64\n\n// NetUNIXState is the type of the state field.\ntype NetUNIXState uint64\n\n// NetUNIXLine represents a line of /proc/net/unix.\ntype NetUNIXLine struct {\n\tKernelPtr string\n\tRefCount  uint64\n\tProtocol  uint64\n\tFlags     NetUNIXFlags\n\tType      NetUNIXType\n\tState     NetUNIXState\n\tInode     uint64\n\tPath      string\n}\n\n// NetUNIX holds the data read from /proc/net/unix.\ntype NetUNIX struct {\n\tRows []*NetUNIXLine\n}\n\n// NetUNIX returns data read from /proc/net/unix.\nfunc (fs FS) NetUNIX() (*NetUNIX, error) {\n\treturn readNetUNIX(fs.proc.Path(\"net/unix\"))\n}\n\n// readNetUNIX reads data in /proc/net/unix format from the specified file.\nfunc readNetUNIX(file string) (*NetUNIX, error) {\n\t// This file could be quite large and a streaming read is desirable versus\n\t// reading the entire contents at once.\n\tf, err := os.Open(file)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer f.Close()\n\n\treturn parseNetUNIX(f)\n}\n\n// parseNetUNIX creates a NetUnix structure from the incoming stream.\nfunc parseNetUNIX(r io.Reader) (*NetUNIX, error) {\n\t// Begin scanning by checking for the existence of Inode.\n\ts := bufio.NewScanner(r)\n\ts.Scan()\n\n\t// From the man page of proc(5), it does not contain an Inode field,\n\t// but in actually it exists. This code works for both cases.\n\thasInode := strings.Contains(s.Text(), \"Inode\")\n\n\t// Expect a minimum number of fields, but Inode and Path are optional:\n\t// Num       RefCount Protocol Flags    Type St Inode Path\n\tminFields := 6\n\tif hasInode {\n\t\tminFields++\n\t}\n\n\tvar nu NetUNIX\n\tfor s.Scan() {\n\t\tline := s.Text()\n\t\titem, err := nu.parseLine(line, hasInode, minFields)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"%w: /proc/net/unix encountered data %q: %w\", ErrFileParse, line, err)\n\t\t}\n\n\t\tnu.Rows = append(nu.Rows, item)\n\t}\n\n\tif err := s.Err(); err != nil {\n\t\treturn nil, fmt.Errorf(\"%w: /proc/net/unix encountered data: %w\", ErrFileParse, err)\n\t}\n\n\treturn &nu, nil\n}\n\nfunc (u *NetUNIX) parseLine(line string, hasInode bool, minFields int) (*NetUNIXLine, error) {\n\tfields := strings.Fields(line)\n\n\tl := len(fields)\n\tif l < minFields {\n\t\treturn nil, fmt.Errorf(\"%w: expected at least %d fields but got %d\", ErrFileParse, minFields, l)\n\t}\n\n\t// Field offsets are as follows:\n\t// Num       RefCount Protocol Flags    Type St Inode Path\n\n\tkernelPtr := strings.TrimSuffix(fields[0], \":\")\n\n\tusers, err := u.parseUsers(fields[1])\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"%w: ref count %q: %w\", ErrFileParse, fields[1], err)\n\t}\n\n\tflags, err := u.parseFlags(fields[3])\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"%w: Unable to parse flags %q: %w\", ErrFileParse, fields[3], err)\n\t}\n\n\ttyp, err := u.parseType(fields[4])\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"%w: Failed to parse type %q: %w\", ErrFileParse, fields[4], err)\n\t}\n\n\tstate, err := u.parseState(fields[5])\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"%w: Failed to parse state %q: %w\", ErrFileParse, fields[5], err)\n\t}\n\n\tvar inode uint64\n\tif hasInode {\n\t\tinode, err = u.parseInode(fields[6])\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"%w failed to parse inode %q: %w\", ErrFileParse, fields[6], err)\n\t\t}\n\t}\n\n\tn := &NetUNIXLine{\n\t\tKernelPtr: kernelPtr,\n\t\tRefCount:  users,\n\t\tType:      typ,\n\t\tFlags:     flags,\n\t\tState:     state,\n\t\tInode:     inode,\n\t}\n\n\t// Path field is optional.\n\tif l > minFields {\n\t\t// Path occurs at either index 6 or 7 depending on whether inode is\n\t\t// already present.\n\t\tpathIdx := 7\n\t\tif !hasInode {\n\t\t\tpathIdx--\n\t\t}\n\n\t\tn.Path = fields[pathIdx]\n\t}\n\n\treturn n, nil\n}\n\nfunc (u NetUNIX) parseUsers(s string) (uint64, error) {\n\treturn strconv.ParseUint(s, 16, 32)\n}\n\nfunc (u NetUNIX) parseType(s string) (NetUNIXType, error) {\n\ttyp, err := strconv.ParseUint(s, 16, 16)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\treturn NetUNIXType(typ), nil\n}\n\nfunc (u NetUNIX) parseFlags(s string) (NetUNIXFlags, error) {\n\tflags, err := strconv.ParseUint(s, 16, 32)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\treturn NetUNIXFlags(flags), nil\n}\n\nfunc (u NetUNIX) parseState(s string) (NetUNIXState, error) {\n\tst, err := strconv.ParseInt(s, 16, 8)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\treturn NetUNIXState(st), nil\n}\n\nfunc (u NetUNIX) parseInode(s string) (uint64, error) {\n\treturn strconv.ParseUint(s, 10, 64)\n}\n\nfunc (t NetUNIXType) String() string {\n\tswitch t {\n\tcase netUnixTypeStream:\n\t\treturn \"stream\"\n\tcase netUnixTypeDgram:\n\t\treturn \"dgram\"\n\tcase netUnixTypeSeqpacket:\n\t\treturn \"seqpacket\"\n\t}\n\treturn \"unknown\"\n}\n\nfunc (f NetUNIXFlags) String() string {\n\tswitch f {\n\tcase netUnixFlagListen:\n\t\treturn \"listen\"\n\tdefault:\n\t\treturn \"default\"\n\t}\n}\n\nfunc (s NetUNIXState) String() string {\n\tswitch s {\n\tcase netUnixStateUnconnected:\n\t\treturn \"unconnected\"\n\tcase netUnixStateConnecting:\n\t\treturn \"connecting\"\n\tcase netUnixStateConnected:\n\t\treturn \"connected\"\n\tcase netUnixStateDisconnected:\n\t\treturn \"disconnected\"\n\t}\n\treturn \"unknown\"\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/net_wireless.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage procfs\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/prometheus/procfs/internal/util\"\n)\n\n// Wireless models the content of /proc/net/wireless.\ntype Wireless struct {\n\tName string\n\n\t// Status is the current 4-digit hex value status of the interface.\n\tStatus uint64\n\n\t// QualityLink is the link quality.\n\tQualityLink int\n\n\t// QualityLevel is the signal gain (dBm).\n\tQualityLevel int\n\n\t// QualityNoise is the signal noise baseline (dBm).\n\tQualityNoise int\n\n\t// DiscardedNwid is the number of discarded packets with wrong nwid/essid.\n\tDiscardedNwid int\n\n\t// DiscardedCrypt is the number of discarded packets with wrong code/decode (WEP).\n\tDiscardedCrypt int\n\n\t// DiscardedFrag is the number of discarded packets that can't perform MAC reassembly.\n\tDiscardedFrag int\n\n\t// DiscardedRetry is the number of discarded packets that reached max MAC retries.\n\tDiscardedRetry int\n\n\t// DiscardedMisc is the number of discarded packets for other reasons.\n\tDiscardedMisc int\n\n\t// MissedBeacon is the number of missed beacons/superframe.\n\tMissedBeacon int\n}\n\n// Wireless returns kernel wireless statistics.\nfunc (fs FS) Wireless() ([]*Wireless, error) {\n\tb, err := util.ReadFileNoStat(fs.proc.Path(\"net/wireless\"))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tm, err := parseWireless(bytes.NewReader(b))\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"%w: wireless: %w\", ErrFileParse, err)\n\t}\n\n\treturn m, nil\n}\n\n// parseWireless parses the contents of /proc/net/wireless.\n/*\nInter-| sta-|   Quality        |   Discarded packets               | Missed | WE\nface | tus | link level noise |  nwid  crypt   frag  retry   misc | beacon | 22\n eth1: 0000    5.  -256.  -10.       0      1      0     3      0        0\n eth2: 0000    5.  -256.  -20.       0      2      0     4      0        0\n*/\nfunc parseWireless(r io.Reader) ([]*Wireless, error) {\n\tvar (\n\t\tinterfaces []*Wireless\n\t\tscanner    = bufio.NewScanner(r)\n\t)\n\n\tfor n := 0; scanner.Scan(); n++ {\n\t\t// Skip the 2 header lines.\n\t\tif n < 2 {\n\t\t\tcontinue\n\t\t}\n\n\t\tline := scanner.Text()\n\n\t\tparts := strings.Split(line, \":\")\n\t\tif len(parts) != 2 {\n\t\t\treturn nil, fmt.Errorf(\"%w: expected 2 parts after splitting line by ':', got %d for line %q\", ErrFileParse, len(parts), line)\n\t\t}\n\n\t\tname := strings.TrimSpace(parts[0])\n\t\tstats := strings.Fields(parts[1])\n\n\t\tif len(stats) < 10 {\n\t\t\treturn nil, fmt.Errorf(\"%w: invalid number of fields in line %d, expected 10+, got %d: %q\", ErrFileParse, n, len(stats), line)\n\t\t}\n\n\t\tstatus, err := strconv.ParseUint(stats[0], 16, 16)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"%w: invalid status in line %d: %q\", ErrFileParse, n, line)\n\t\t}\n\n\t\tqlink, err := strconv.Atoi(strings.TrimSuffix(stats[1], \".\"))\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"%w: parse Quality:link as integer %q: %w\", ErrFileParse, qlink, err)\n\t\t}\n\n\t\tqlevel, err := strconv.Atoi(strings.TrimSuffix(stats[2], \".\"))\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"%w: Quality:level as integer %q: %w\", ErrFileParse, qlevel, err)\n\t\t}\n\n\t\tqnoise, err := strconv.Atoi(strings.TrimSuffix(stats[3], \".\"))\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"%w: Quality:noise as integer %q: %w\", ErrFileParse, qnoise, err)\n\t\t}\n\n\t\tdnwid, err := strconv.Atoi(stats[4])\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"%w: Discarded:nwid as integer %q: %w\", ErrFileParse, dnwid, err)\n\t\t}\n\n\t\tdcrypt, err := strconv.Atoi(stats[5])\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"%w: Discarded:crypt as integer %q: %w\", ErrFileParse, dcrypt, err)\n\t\t}\n\n\t\tdfrag, err := strconv.Atoi(stats[6])\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"%w: Discarded:frag as integer %q: %w\", ErrFileParse, dfrag, err)\n\t\t}\n\n\t\tdretry, err := strconv.Atoi(stats[7])\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"%w: Discarded:retry as integer %q: %w\", ErrFileParse, dretry, err)\n\t\t}\n\n\t\tdmisc, err := strconv.Atoi(stats[8])\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"%w: Discarded:misc as integer %q: %w\", ErrFileParse, dmisc, err)\n\t\t}\n\n\t\tmbeacon, err := strconv.Atoi(stats[9])\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"%w: Missed:beacon as integer %q: %w\", ErrFileParse, mbeacon, err)\n\t\t}\n\n\t\tw := &Wireless{\n\t\t\tName:           name,\n\t\t\tStatus:         status,\n\t\t\tQualityLink:    qlink,\n\t\t\tQualityLevel:   qlevel,\n\t\t\tQualityNoise:   qnoise,\n\t\t\tDiscardedNwid:  dnwid,\n\t\t\tDiscardedCrypt: dcrypt,\n\t\t\tDiscardedFrag:  dfrag,\n\t\t\tDiscardedRetry: dretry,\n\t\t\tDiscardedMisc:  dmisc,\n\t\t\tMissedBeacon:   mbeacon,\n\t\t}\n\n\t\tinterfaces = append(interfaces, w)\n\t}\n\n\tif err := scanner.Err(); err != nil {\n\t\treturn nil, fmt.Errorf(\"%w: Failed to scan /proc/net/wireless: %w\", ErrFileRead, err)\n\t}\n\n\treturn interfaces, nil\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/net_xfrm.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage procfs\n\nimport (\n\t\"bufio\"\n\t\"fmt\"\n\t\"os\"\n\t\"strconv\"\n\t\"strings\"\n)\n\n// XfrmStat models the contents of /proc/net/xfrm_stat.\ntype XfrmStat struct {\n\t// All errors which are not matched by other\n\tXfrmInError int\n\t// No buffer is left\n\tXfrmInBufferError int\n\t// Header Error\n\tXfrmInHdrError int\n\t// No state found\n\t// i.e. either inbound SPI, address, or IPSEC protocol at SA is wrong\n\tXfrmInNoStates int\n\t// Transformation protocol specific error\n\t// e.g. SA Key is wrong\n\tXfrmInStateProtoError int\n\t// Transformation mode specific error\n\tXfrmInStateModeError int\n\t// Sequence error\n\t// e.g. sequence number is out of window\n\tXfrmInStateSeqError int\n\t// State is expired\n\tXfrmInStateExpired int\n\t// State has mismatch option\n\t// e.g. UDP encapsulation type is mismatched\n\tXfrmInStateMismatch int\n\t// State is invalid\n\tXfrmInStateInvalid int\n\t// No matching template for states\n\t// e.g. Inbound SAs are correct but SP rule is wrong\n\tXfrmInTmplMismatch int\n\t// No policy is found for states\n\t// e.g. Inbound SAs are correct but no SP is found\n\tXfrmInNoPols int\n\t// Policy discards\n\tXfrmInPolBlock int\n\t// Policy error\n\tXfrmInPolError int\n\t// All errors which are not matched by others\n\tXfrmOutError int\n\t// Bundle generation error\n\tXfrmOutBundleGenError int\n\t// Bundle check error\n\tXfrmOutBundleCheckError int\n\t// No state was found\n\tXfrmOutNoStates int\n\t// Transformation protocol specific error\n\tXfrmOutStateProtoError int\n\t// Transportation mode specific error\n\tXfrmOutStateModeError int\n\t// Sequence error\n\t// i.e sequence number overflow\n\tXfrmOutStateSeqError int\n\t// State is expired\n\tXfrmOutStateExpired int\n\t// Policy discads\n\tXfrmOutPolBlock int\n\t// Policy is dead\n\tXfrmOutPolDead int\n\t// Policy Error\n\tXfrmOutPolError int\n\t// Forward routing of a packet is not allowed\n\tXfrmFwdHdrError int\n\t// State is invalid, perhaps expired\n\tXfrmOutStateInvalid int\n\t// State hasn’t been fully acquired before use\n\tXfrmAcquireError int\n}\n\n// NewXfrmStat reads the xfrm_stat statistics.\nfunc NewXfrmStat() (XfrmStat, error) {\n\tfs, err := NewFS(DefaultMountPoint)\n\tif err != nil {\n\t\treturn XfrmStat{}, err\n\t}\n\n\treturn fs.NewXfrmStat()\n}\n\n// NewXfrmStat reads the xfrm_stat statistics from the 'proc' filesystem.\nfunc (fs FS) NewXfrmStat() (XfrmStat, error) {\n\tfile, err := os.Open(fs.proc.Path(\"net/xfrm_stat\"))\n\tif err != nil {\n\t\treturn XfrmStat{}, err\n\t}\n\tdefer file.Close()\n\n\tvar (\n\t\tx = XfrmStat{}\n\t\ts = bufio.NewScanner(file)\n\t)\n\n\tfor s.Scan() {\n\t\tfields := strings.Fields(s.Text())\n\n\t\tif len(fields) != 2 {\n\t\t\treturn XfrmStat{}, fmt.Errorf(\"%w: %q line %q\", ErrFileParse, file.Name(), s.Text())\n\t\t}\n\n\t\tname := fields[0]\n\t\tvalue, err := strconv.Atoi(fields[1])\n\t\tif err != nil {\n\t\t\treturn XfrmStat{}, err\n\t\t}\n\n\t\tswitch name {\n\t\tcase \"XfrmInError\":\n\t\t\tx.XfrmInError = value\n\t\tcase \"XfrmInBufferError\":\n\t\t\tx.XfrmInBufferError = value\n\t\tcase \"XfrmInHdrError\":\n\t\t\tx.XfrmInHdrError = value\n\t\tcase \"XfrmInNoStates\":\n\t\t\tx.XfrmInNoStates = value\n\t\tcase \"XfrmInStateProtoError\":\n\t\t\tx.XfrmInStateProtoError = value\n\t\tcase \"XfrmInStateModeError\":\n\t\t\tx.XfrmInStateModeError = value\n\t\tcase \"XfrmInStateSeqError\":\n\t\t\tx.XfrmInStateSeqError = value\n\t\tcase \"XfrmInStateExpired\":\n\t\t\tx.XfrmInStateExpired = value\n\t\tcase \"XfrmInStateInvalid\":\n\t\t\tx.XfrmInStateInvalid = value\n\t\tcase \"XfrmInTmplMismatch\":\n\t\t\tx.XfrmInTmplMismatch = value\n\t\tcase \"XfrmInNoPols\":\n\t\t\tx.XfrmInNoPols = value\n\t\tcase \"XfrmInPolBlock\":\n\t\t\tx.XfrmInPolBlock = value\n\t\tcase \"XfrmInPolError\":\n\t\t\tx.XfrmInPolError = value\n\t\tcase \"XfrmOutError\":\n\t\t\tx.XfrmOutError = value\n\t\tcase \"XfrmInStateMismatch\":\n\t\t\tx.XfrmInStateMismatch = value\n\t\tcase \"XfrmOutBundleGenError\":\n\t\t\tx.XfrmOutBundleGenError = value\n\t\tcase \"XfrmOutBundleCheckError\":\n\t\t\tx.XfrmOutBundleCheckError = value\n\t\tcase \"XfrmOutNoStates\":\n\t\t\tx.XfrmOutNoStates = value\n\t\tcase \"XfrmOutStateProtoError\":\n\t\t\tx.XfrmOutStateProtoError = value\n\t\tcase \"XfrmOutStateModeError\":\n\t\t\tx.XfrmOutStateModeError = value\n\t\tcase \"XfrmOutStateSeqError\":\n\t\t\tx.XfrmOutStateSeqError = value\n\t\tcase \"XfrmOutStateExpired\":\n\t\t\tx.XfrmOutStateExpired = value\n\t\tcase \"XfrmOutPolBlock\":\n\t\t\tx.XfrmOutPolBlock = value\n\t\tcase \"XfrmOutPolDead\":\n\t\t\tx.XfrmOutPolDead = value\n\t\tcase \"XfrmOutPolError\":\n\t\t\tx.XfrmOutPolError = value\n\t\tcase \"XfrmFwdHdrError\":\n\t\t\tx.XfrmFwdHdrError = value\n\t\tcase \"XfrmOutStateInvalid\":\n\t\t\tx.XfrmOutStateInvalid = value\n\t\tcase \"XfrmAcquireError\":\n\t\t\tx.XfrmAcquireError = value\n\t\t}\n\n\t}\n\n\treturn x, s.Err()\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/netstat.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage procfs\n\nimport (\n\t\"bufio\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strconv\"\n\t\"strings\"\n)\n\n// NetStat contains statistics for all the counters from one file.\ntype NetStat struct {\n\tStats    map[string][]uint64\n\tFilename string\n}\n\n// NetStat retrieves stats from `/proc/net/stat/`.\nfunc (fs FS) NetStat() ([]NetStat, error) {\n\tstatFiles, err := filepath.Glob(fs.proc.Path(\"net/stat/*\"))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar netStatsTotal []NetStat\n\n\tfor _, filePath := range statFiles {\n\t\tprocNetstat, err := parseNetstat(filePath)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tprocNetstat.Filename = filepath.Base(filePath)\n\n\t\tnetStatsTotal = append(netStatsTotal, procNetstat)\n\t}\n\treturn netStatsTotal, nil\n}\n\n// parseNetstat parses the metrics from `/proc/net/stat/` file\n// and returns a NetStat structure.\nfunc parseNetstat(filePath string) (NetStat, error) {\n\tnetStat := NetStat{\n\t\tStats: make(map[string][]uint64),\n\t}\n\tfile, err := os.Open(filePath)\n\tif err != nil {\n\t\treturn netStat, err\n\t}\n\tdefer file.Close()\n\n\tscanner := bufio.NewScanner(file)\n\tscanner.Scan()\n\n\t// First string is always a header for stats\n\tvar headers []string\n\theaders = append(headers, strings.Fields(scanner.Text())...)\n\n\t// Other strings represent per-CPU counters\n\tfor scanner.Scan() {\n\t\tfor num, counter := range strings.Fields(scanner.Text()) {\n\t\t\tvalue, err := strconv.ParseUint(counter, 16, 64)\n\t\t\tif err != nil {\n\t\t\t\treturn NetStat{}, err\n\t\t\t}\n\t\t\tnetStat.Stats[headers[num]] = append(netStat.Stats[headers[num]], value)\n\t\t}\n\t}\n\n\treturn netStat, nil\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/nfnetlink_queue.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage procfs\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"fmt\"\n\n\t\"github.com/prometheus/procfs/internal/util\"\n)\n\nconst nfNetLinkQueueFormat = \"%d %d %d %d %d %d %d %d %d\"\n\n// NFNetLinkQueue contains general information about netfilter queues found in /proc/net/netfilter/nfnetlink_queue.\ntype NFNetLinkQueue struct {\n\t// id of the queue\n\tQueueID uint\n\t// pid of process handling the queue\n\tPeerPID uint\n\t// number of packets waiting for a decision\n\tQueueTotal uint\n\t// indicate how userspace receive packets\n\tCopyMode uint\n\t// size of copy\n\tCopyRange uint\n\t// number of items dropped by the kernel because too many packets were waiting a decision.\n\t// It queue_total is superior to queue_max_len (1024 per default) the packets are dropped.\n\tQueueDropped uint\n\t// number of packets dropped by userspace (due to kernel send failure on the netlink socket)\n\tQueueUserDropped uint\n\t// sequence number of packets queued. It gives a correct approximation of the number of queued packets.\n\tSequenceID uint\n\t// internal value (number of entity using the queue)\n\tUse uint\n}\n\n// NFNetLinkQueue returns information about current state of netfilter queues.\nfunc (fs FS) NFNetLinkQueue() ([]NFNetLinkQueue, error) {\n\tdata, err := util.ReadFileNoStat(fs.proc.Path(\"net/netfilter/nfnetlink_queue\"))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tqueue := []NFNetLinkQueue{}\n\tif len(data) == 0 {\n\t\treturn queue, nil\n\t}\n\n\tscanner := bufio.NewScanner(bytes.NewReader(data))\n\tfor scanner.Scan() {\n\t\tline := scanner.Text()\n\t\tnFNetLinkQueue, err := parseNFNetLinkQueueLine(line)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tqueue = append(queue, *nFNetLinkQueue)\n\t}\n\treturn queue, nil\n}\n\n// parseNFNetLinkQueueLine parses each line of the /proc/net/netfilter/nfnetlink_queue file.\nfunc parseNFNetLinkQueueLine(line string) (*NFNetLinkQueue, error) {\n\tnFNetLinkQueue := NFNetLinkQueue{}\n\t_, err := fmt.Sscanf(\n\t\tline, nfNetLinkQueueFormat,\n\t\t&nFNetLinkQueue.QueueID, &nFNetLinkQueue.PeerPID, &nFNetLinkQueue.QueueTotal, &nFNetLinkQueue.CopyMode,\n\t\t&nFNetLinkQueue.CopyRange, &nFNetLinkQueue.QueueDropped, &nFNetLinkQueue.QueueUserDropped, &nFNetLinkQueue.SequenceID, &nFNetLinkQueue.Use,\n\t)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &nFNetLinkQueue, nil\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/proc.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage procfs\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/prometheus/procfs/internal/util\"\n)\n\n// Proc provides information about a running process.\ntype Proc struct {\n\t// The process ID.\n\tPID int\n\n\tfs FS\n}\n\n// Procs represents a list of Proc structs.\ntype Procs []Proc\n\nvar (\n\tErrFileParse  = errors.New(\"error parsing file\")\n\tErrFileRead   = errors.New(\"error reading file\")\n\tErrMountPoint = errors.New(\"error accessing mount point\")\n)\n\nfunc (p Procs) Len() int           { return len(p) }\nfunc (p Procs) Swap(i, j int)      { p[i], p[j] = p[j], p[i] }\nfunc (p Procs) Less(i, j int) bool { return p[i].PID < p[j].PID }\n\n// Self returns a process for the current process read via /proc/self.\nfunc Self() (Proc, error) {\n\tfs, err := NewFS(DefaultMountPoint)\n\tif err != nil || errors.Is(err, ErrMountPoint) {\n\t\treturn Proc{}, err\n\t}\n\treturn fs.Self()\n}\n\n// NewProc returns a process for the given pid under /proc.\nfunc NewProc(pid int) (Proc, error) {\n\tfs, err := NewFS(DefaultMountPoint)\n\tif err != nil {\n\t\treturn Proc{}, err\n\t}\n\treturn fs.Proc(pid)\n}\n\n// AllProcs returns a list of all currently available processes under /proc.\nfunc AllProcs() (Procs, error) {\n\tfs, err := NewFS(DefaultMountPoint)\n\tif err != nil {\n\t\treturn Procs{}, err\n\t}\n\treturn fs.AllProcs()\n}\n\n// Self returns a process for the current process.\nfunc (fs FS) Self() (Proc, error) {\n\tp, err := os.Readlink(fs.proc.Path(\"self\"))\n\tif err != nil {\n\t\treturn Proc{}, err\n\t}\n\tpid, err := strconv.Atoi(strings.ReplaceAll(p, string(fs.proc), \"\"))\n\tif err != nil {\n\t\treturn Proc{}, err\n\t}\n\treturn fs.Proc(pid)\n}\n\n// NewProc returns a process for the given pid.\n//\n// Deprecated: Use fs.Proc() instead.\nfunc (fs FS) NewProc(pid int) (Proc, error) {\n\treturn fs.Proc(pid)\n}\n\n// Proc returns a process for the given pid.\nfunc (fs FS) Proc(pid int) (Proc, error) {\n\tif _, err := os.Stat(fs.proc.Path(strconv.Itoa(pid))); err != nil {\n\t\treturn Proc{}, err\n\t}\n\treturn Proc{PID: pid, fs: fs}, nil\n}\n\n// AllProcs returns a list of all currently available processes.\nfunc (fs FS) AllProcs() (Procs, error) {\n\td, err := os.Open(fs.proc.Path())\n\tif err != nil {\n\t\treturn Procs{}, err\n\t}\n\tdefer d.Close()\n\n\tnames, err := d.Readdirnames(-1)\n\tif err != nil {\n\t\treturn Procs{}, fmt.Errorf(\"%w: Cannot read file: %v: %w\", ErrFileRead, names, err)\n\t}\n\n\tp := Procs{}\n\tfor _, n := range names {\n\t\tpid, err := strconv.ParseInt(n, 10, 64)\n\t\tif err != nil {\n\t\t\tcontinue\n\t\t}\n\t\tp = append(p, Proc{PID: int(pid), fs: fs})\n\t}\n\n\treturn p, nil\n}\n\n// CmdLine returns the command line of a process.\nfunc (p Proc) CmdLine() ([]string, error) {\n\tdata, err := util.ReadFileNoStat(p.path(\"cmdline\"))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif len(data) < 1 {\n\t\treturn []string{}, nil\n\t}\n\n\treturn strings.Split(string(bytes.TrimRight(data, \"\\x00\")), \"\\x00\"), nil\n}\n\n// Wchan returns the wchan (wait channel) of a process.\nfunc (p Proc) Wchan() (string, error) {\n\tf, err := os.Open(p.path(\"wchan\"))\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tdefer f.Close()\n\n\tdata, err := io.ReadAll(f)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\twchan := string(data)\n\tif wchan == \"\" || wchan == \"0\" {\n\t\treturn \"\", nil\n\t}\n\n\treturn wchan, nil\n}\n\n// Comm returns the command name of a process.\nfunc (p Proc) Comm() (string, error) {\n\tdata, err := util.ReadFileNoStat(p.path(\"comm\"))\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\treturn strings.TrimSpace(string(data)), nil\n}\n\n// Executable returns the absolute path of the executable command of a process.\nfunc (p Proc) Executable() (string, error) {\n\texe, err := os.Readlink(p.path(\"exe\"))\n\tif os.IsNotExist(err) {\n\t\treturn \"\", nil\n\t}\n\n\treturn exe, err\n}\n\n// Cwd returns the absolute path to the current working directory of the process.\nfunc (p Proc) Cwd() (string, error) {\n\twd, err := os.Readlink(p.path(\"cwd\"))\n\tif os.IsNotExist(err) {\n\t\treturn \"\", nil\n\t}\n\n\treturn wd, err\n}\n\n// RootDir returns the absolute path to the process's root directory (as set by chroot).\nfunc (p Proc) RootDir() (string, error) {\n\trdir, err := os.Readlink(p.path(\"root\"))\n\tif os.IsNotExist(err) {\n\t\treturn \"\", nil\n\t}\n\n\treturn rdir, err\n}\n\n// FileDescriptors returns the currently open file descriptors of a process.\nfunc (p Proc) FileDescriptors() ([]uintptr, error) {\n\tnames, err := p.fileDescriptors()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tfds := make([]uintptr, len(names))\n\tfor i, n := range names {\n\t\tfd, err := strconv.ParseInt(n, 10, 32)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"%w: Cannot parse line: %v: %w\", ErrFileParse, i, err)\n\t\t}\n\t\tfds[i] = uintptr(fd)\n\t}\n\n\treturn fds, nil\n}\n\n// FileDescriptorTargets returns the targets of all file descriptors of a process.\n// If a file descriptor is not a symlink to a file (like a socket), that value will be the empty string.\nfunc (p Proc) FileDescriptorTargets() ([]string, error) {\n\tnames, err := p.fileDescriptors()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\ttargets := make([]string, len(names))\n\n\tfor i, name := range names {\n\t\ttarget, err := os.Readlink(p.path(\"fd\", name))\n\t\tif err == nil {\n\t\t\ttargets[i] = target\n\t\t}\n\t}\n\n\treturn targets, nil\n}\n\n// FileDescriptorsLen returns the number of currently open file descriptors of\n// a process.\nfunc (p Proc) FileDescriptorsLen() (int, error) {\n\t// Use fast path if available (Linux v6.2): https://github.com/torvalds/linux/commit/f1f1f2569901\n\tif p.fs.isReal {\n\t\tstat, err := os.Stat(p.path(\"fd\"))\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\n\t\tsize := stat.Size()\n\t\tif size > 0 {\n\t\t\treturn int(size), nil\n\t\t}\n\t}\n\n\tfds, err := p.fileDescriptors()\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\treturn len(fds), nil\n}\n\n// MountStats retrieves statistics and configuration for mount points in a\n// process's namespace.\nfunc (p Proc) MountStats() ([]*Mount, error) {\n\tf, err := os.Open(p.path(\"mountstats\"))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer f.Close()\n\n\treturn parseMountStats(f)\n}\n\n// MountInfo retrieves mount information for mount points in a\n// process's namespace.\n// It supplies information missing in `/proc/self/mounts` and\n// fixes various other problems with that file too.\nfunc (p Proc) MountInfo() ([]*MountInfo, error) {\n\tdata, err := util.ReadFileNoStat(p.path(\"mountinfo\"))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn parseMountInfo(data)\n}\n\nfunc (p Proc) fileDescriptors() ([]string, error) {\n\td, err := os.Open(p.path(\"fd\"))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer d.Close()\n\n\tnames, err := d.Readdirnames(-1)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"%w: Cannot read file: %v: %w\", ErrFileRead, names, err)\n\t}\n\n\treturn names, nil\n}\n\nfunc (p Proc) path(pa ...string) string {\n\treturn p.fs.proc.Path(append([]string{strconv.Itoa(p.PID)}, pa...)...)\n}\n\n// FileDescriptorsInfo retrieves information about all file descriptors of\n// the process.\nfunc (p Proc) FileDescriptorsInfo() (ProcFDInfos, error) {\n\tnames, err := p.fileDescriptors()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar fdinfos ProcFDInfos\n\n\tfor _, n := range names {\n\t\tfdinfo, err := p.FDInfo(n)\n\t\tif err != nil {\n\t\t\tcontinue\n\t\t}\n\t\tfdinfos = append(fdinfos, *fdinfo)\n\t}\n\n\treturn fdinfos, nil\n}\n\n// Schedstat returns task scheduling information for the process.\nfunc (p Proc) Schedstat() (ProcSchedstat, error) {\n\tcontents, err := os.ReadFile(p.path(\"schedstat\"))\n\tif err != nil {\n\t\treturn ProcSchedstat{}, err\n\t}\n\treturn parseProcSchedstat(string(contents))\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/proc_cgroup.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage procfs\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"fmt\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/prometheus/procfs/internal/util\"\n)\n\n// Cgroup models one line from /proc/[pid]/cgroup. Each Cgroup struct describes the placement of a PID inside a\n// specific control hierarchy. The kernel has two cgroup APIs, v1 and v2. The v1 has one hierarchy per available resource\n// controller, while v2 has one unified hierarchy shared by all controllers. Regardless of v1 or v2, all hierarchies\n// contain all running processes, so the question answerable with a Cgroup struct is 'where is this process in\n// this hierarchy' (where==what path on the specific cgroupfs). By prefixing this path with the mount point of\n// *this specific* hierarchy, you can locate the relevant pseudo-files needed to read/set the data for this PID\n// in this hierarchy\n//\n// Also see http://man7.org/linux/man-pages/man7/cgroups.7.html\ntype Cgroup struct {\n\t// HierarchyID that can be matched to a named hierarchy using /proc/cgroups. Cgroups V2 only has one\n\t// hierarchy, so HierarchyID is always 0. For cgroups v1 this is a unique ID number\n\tHierarchyID int\n\t// Controllers using this hierarchy of processes. Controllers are also known as subsystems. For\n\t// Cgroups V2 this may be empty, as all active controllers use the same hierarchy\n\tControllers []string\n\t// Path of this control group, relative to the mount point of the cgroupfs representing this specific\n\t// hierarchy\n\tPath string\n}\n\n// parseCgroupString parses each line of the /proc/[pid]/cgroup file\n// Line format is hierarchyID:[controller1,controller2]:path.\nfunc parseCgroupString(cgroupStr string) (*Cgroup, error) {\n\tvar err error\n\n\tfields := strings.SplitN(cgroupStr, \":\", 3)\n\tif len(fields) < 3 {\n\t\treturn nil, fmt.Errorf(\"%w: 3+ fields required, found %d fields in cgroup string: %s\", ErrFileParse, len(fields), cgroupStr)\n\t}\n\n\tcgroup := &Cgroup{\n\t\tPath:        fields[2],\n\t\tControllers: nil,\n\t}\n\tcgroup.HierarchyID, err = strconv.Atoi(fields[0])\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"%w: hierarchy ID: %q\", ErrFileParse, cgroup.HierarchyID)\n\t}\n\tif fields[1] != \"\" {\n\t\tssNames := strings.Split(fields[1], \",\")\n\t\tcgroup.Controllers = append(cgroup.Controllers, ssNames...)\n\t}\n\treturn cgroup, nil\n}\n\n// parseCgroups reads each line of the /proc/[pid]/cgroup file.\nfunc parseCgroups(data []byte) ([]Cgroup, error) {\n\tvar cgroups []Cgroup\n\tscanner := bufio.NewScanner(bytes.NewReader(data))\n\tfor scanner.Scan() {\n\t\tmountString := scanner.Text()\n\t\tparsedMounts, err := parseCgroupString(mountString)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tcgroups = append(cgroups, *parsedMounts)\n\t}\n\n\terr := scanner.Err()\n\treturn cgroups, err\n}\n\n// Cgroups reads from /proc/<pid>/cgroups and returns a []*Cgroup struct locating this PID in each process\n// control hierarchy running on this system. On every system (v1 and v2), all hierarchies contain all processes,\n// so the len of the returned struct is equal to the number of active hierarchies on this system.\nfunc (p Proc) Cgroups() ([]Cgroup, error) {\n\tdata, err := util.ReadFileNoStat(p.path(\"cgroup\"))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn parseCgroups(data)\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/proc_cgroups.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage procfs\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"fmt\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/prometheus/procfs/internal/util\"\n)\n\n// CgroupSummary models one line from /proc/cgroups.\n// This file contains information about the controllers that are compiled into the kernel.\n//\n// Also see http://man7.org/linux/man-pages/man7/cgroups.7.html\ntype CgroupSummary struct {\n\t// The name of the controller. controller is also known as subsystem.\n\tSubsysName string\n\t// The unique ID of the cgroup hierarchy on which this controller is mounted.\n\tHierarchy int\n\t// The number of control groups in this hierarchy using this controller.\n\tCgroups int\n\t// This field contains the value 1 if this controller is enabled, or 0 if it has been disabled\n\tEnabled int\n}\n\n// parseCgroupSummary parses each line of the /proc/cgroup file\n// Line format is `subsys_name\thierarchy\tnum_cgroups\tenabled`.\nfunc parseCgroupSummaryString(cgroupSummaryStr string) (*CgroupSummary, error) {\n\tvar err error\n\n\tfields := strings.Fields(cgroupSummaryStr)\n\t// require at least 4 fields\n\tif len(fields) < 4 {\n\t\treturn nil, fmt.Errorf(\"%w: 4+ fields required, found %d fields in cgroup info string: %s\", ErrFileParse, len(fields), cgroupSummaryStr)\n\t}\n\n\tCgroupSummary := &CgroupSummary{\n\t\tSubsysName: fields[0],\n\t}\n\tCgroupSummary.Hierarchy, err = strconv.Atoi(fields[1])\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"%w: Unable to parse hierarchy ID from %q\", ErrFileParse, fields[1])\n\t}\n\tCgroupSummary.Cgroups, err = strconv.Atoi(fields[2])\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"%w: Unable to parse Cgroup Num from %q\", ErrFileParse, fields[2])\n\t}\n\tCgroupSummary.Enabled, err = strconv.Atoi(fields[3])\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"%w: Unable to parse Enabled from %q\", ErrFileParse, fields[3])\n\t}\n\treturn CgroupSummary, nil\n}\n\n// parseCgroupSummary reads each line of the /proc/cgroup file.\nfunc parseCgroupSummary(data []byte) ([]CgroupSummary, error) {\n\tvar CgroupSummarys []CgroupSummary\n\tscanner := bufio.NewScanner(bytes.NewReader(data))\n\tfor scanner.Scan() {\n\t\tCgroupSummaryString := scanner.Text()\n\t\t// ignore comment lines\n\t\tif strings.HasPrefix(CgroupSummaryString, \"#\") {\n\t\t\tcontinue\n\t\t}\n\t\tCgroupSummary, err := parseCgroupSummaryString(CgroupSummaryString)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tCgroupSummarys = append(CgroupSummarys, *CgroupSummary)\n\t}\n\n\terr := scanner.Err()\n\treturn CgroupSummarys, err\n}\n\n// CgroupSummarys returns information about current /proc/cgroups.\nfunc (fs FS) CgroupSummarys() ([]CgroupSummary, error) {\n\tdata, err := util.ReadFileNoStat(fs.proc.Path(\"cgroups\"))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn parseCgroupSummary(data)\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/proc_environ.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage procfs\n\nimport (\n\t\"strings\"\n\n\t\"github.com/prometheus/procfs/internal/util\"\n)\n\n// Environ reads process environments from `/proc/<pid>/environ`.\nfunc (p Proc) Environ() ([]string, error) {\n\tenvironments := make([]string, 0)\n\n\tdata, err := util.ReadFileNoStat(p.path(\"environ\"))\n\tif err != nil {\n\t\treturn environments, err\n\t}\n\n\tenvironments = strings.Split(string(data), \"\\000\")\n\tif len(environments) > 0 {\n\t\tenvironments = environments[:len(environments)-1]\n\t}\n\n\treturn environments, nil\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/proc_fdinfo.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage procfs\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"fmt\"\n\t\"regexp\"\n\n\t\"github.com/prometheus/procfs/internal/util\"\n)\n\nvar (\n\trPos          = regexp.MustCompile(`^pos:\\s+(\\d+)$`)\n\trFlags        = regexp.MustCompile(`^flags:\\s+(\\d+)$`)\n\trMntID        = regexp.MustCompile(`^mnt_id:\\s+(\\d+)$`)\n\trIno          = regexp.MustCompile(`^ino:\\s+(\\d+)$`)\n\trInotify      = regexp.MustCompile(`^inotify`)\n\trInotifyParts = regexp.MustCompile(`^inotify\\s+wd:([0-9a-f]+)\\s+ino:([0-9a-f]+)\\s+sdev:([0-9a-f]+)(?:\\s+mask:([0-9a-f]+))?`)\n)\n\n// ProcFDInfo contains represents file descriptor information.\ntype ProcFDInfo struct {\n\t// File descriptor\n\tFD string\n\t// File offset\n\tPos string\n\t// File access mode and status flags\n\tFlags string\n\t// Mount point ID\n\tMntID string\n\t// Inode number\n\tIno string\n\t// List of inotify lines (structured) in the fdinfo file (kernel 3.8+ only)\n\tInotifyInfos []InotifyInfo\n}\n\n// FDInfo constructor. On kernels older than 3.8, InotifyInfos will always be empty.\nfunc (p Proc) FDInfo(fd string) (*ProcFDInfo, error) {\n\tdata, err := util.ReadFileNoStat(p.path(\"fdinfo\", fd))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar text, pos, flags, mntid, ino string\n\tvar inotify []InotifyInfo\n\n\tscanner := bufio.NewScanner(bytes.NewReader(data))\n\tfor scanner.Scan() {\n\t\ttext = scanner.Text()\n\t\tswitch {\n\t\tcase rPos.MatchString(text):\n\t\t\tpos = rPos.FindStringSubmatch(text)[1]\n\t\tcase rFlags.MatchString(text):\n\t\t\tflags = rFlags.FindStringSubmatch(text)[1]\n\t\tcase rMntID.MatchString(text):\n\t\t\tmntid = rMntID.FindStringSubmatch(text)[1]\n\t\tcase rIno.MatchString(text):\n\t\t\tino = rIno.FindStringSubmatch(text)[1]\n\t\tcase rInotify.MatchString(text):\n\t\t\tnewInotify, err := parseInotifyInfo(text)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tinotify = append(inotify, *newInotify)\n\t\t}\n\t}\n\n\ti := &ProcFDInfo{\n\t\tFD:           fd,\n\t\tPos:          pos,\n\t\tFlags:        flags,\n\t\tMntID:        mntid,\n\t\tIno:          ino,\n\t\tInotifyInfos: inotify,\n\t}\n\n\treturn i, nil\n}\n\n// InotifyInfo represents a single inotify line in the fdinfo file.\ntype InotifyInfo struct {\n\t// Watch descriptor number\n\tWD string\n\t// Inode number\n\tIno string\n\t// Device ID\n\tSdev string\n\t// Mask of events being monitored\n\tMask string\n}\n\n// InotifyInfo constructor. Only available on kernel 3.8+.\nfunc parseInotifyInfo(line string) (*InotifyInfo, error) {\n\tm := rInotifyParts.FindStringSubmatch(line)\n\tif len(m) >= 4 {\n\t\tvar mask string\n\t\tif len(m) == 5 {\n\t\t\tmask = m[4]\n\t\t}\n\t\ti := &InotifyInfo{\n\t\t\tWD:   m[1],\n\t\t\tIno:  m[2],\n\t\t\tSdev: m[3],\n\t\t\tMask: mask,\n\t\t}\n\t\treturn i, nil\n\t}\n\treturn nil, fmt.Errorf(\"%w: invalid inode entry: %q\", ErrFileParse, line)\n}\n\n// ProcFDInfos represents a list of ProcFDInfo structs.\ntype ProcFDInfos []ProcFDInfo\n\nfunc (p ProcFDInfos) Len() int           { return len(p) }\nfunc (p ProcFDInfos) Swap(i, j int)      { p[i], p[j] = p[j], p[i] }\nfunc (p ProcFDInfos) Less(i, j int) bool { return p[i].FD < p[j].FD }\n\n// InotifyWatchLen returns the total number of inotify watches.\nfunc (p ProcFDInfos) InotifyWatchLen() (int, error) {\n\tlength := 0\n\tfor _, f := range p {\n\t\tlength += len(f.InotifyInfos)\n\t}\n\n\treturn length, nil\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/proc_interrupts.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage procfs\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/prometheus/procfs/internal/util\"\n)\n\n// Interrupt represents a single interrupt line.\ntype Interrupt struct {\n\t// Info is the type of interrupt.\n\tInfo string\n\t// Devices is the name of the device that is located at that IRQ\n\tDevices string\n\t// Values is the number of interrupts per CPU.\n\tValues []string\n}\n\n// Interrupts models the content of /proc/interrupts. Key is the IRQ number.\n// - https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/deployment_guide/s2-proc-interrupts\n// - https://raspberrypi.stackexchange.com/questions/105802/explanation-of-proc-interrupts-output\ntype Interrupts map[string]Interrupt\n\n// Interrupts creates a new instance from a given Proc instance.\nfunc (p Proc) Interrupts() (Interrupts, error) {\n\tdata, err := util.ReadFileNoStat(p.path(\"interrupts\"))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn parseInterrupts(bytes.NewReader(data))\n}\n\nfunc parseInterrupts(r io.Reader) (Interrupts, error) {\n\tvar (\n\t\tinterrupts = Interrupts{}\n\t\tscanner    = bufio.NewScanner(r)\n\t)\n\n\tif !scanner.Scan() {\n\t\treturn nil, errors.New(\"interrupts empty\")\n\t}\n\tcpuNum := len(strings.Fields(scanner.Text())) // one header per cpu\n\n\tfor scanner.Scan() {\n\t\tparts := strings.Fields(scanner.Text())\n\t\tif len(parts) == 0 { // skip empty lines\n\t\t\tcontinue\n\t\t}\n\t\tif len(parts) < 2 {\n\t\t\treturn nil, fmt.Errorf(\"%w: Not enough fields in interrupts (expected 2+ fields but got %d): %s\", ErrFileParse, len(parts), parts)\n\t\t}\n\t\tintName := parts[0][:len(parts[0])-1] // remove trailing :\n\n\t\tif len(parts) == 2 {\n\t\t\tinterrupts[intName] = Interrupt{\n\t\t\t\tInfo:    \"\",\n\t\t\t\tDevices: \"\",\n\t\t\t\tValues: []string{\n\t\t\t\t\tparts[1],\n\t\t\t\t},\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\tintr := Interrupt{\n\t\t\tValues: parts[1 : cpuNum+1],\n\t\t}\n\n\t\tif _, err := strconv.Atoi(intName); err == nil { // numeral interrupt\n\t\t\tintr.Info = parts[cpuNum+1]\n\t\t\tintr.Devices = strings.Join(parts[cpuNum+2:], \" \")\n\t\t} else {\n\t\t\tintr.Info = strings.Join(parts[cpuNum+1:], \" \")\n\t\t}\n\t\tinterrupts[intName] = intr\n\t}\n\n\treturn interrupts, scanner.Err()\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/proc_io.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage procfs\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/prometheus/procfs/internal/util\"\n)\n\n// ProcIO models the content of /proc/<pid>/io.\ntype ProcIO struct {\n\t// Chars read.\n\tRChar uint64\n\t// Chars written.\n\tWChar uint64\n\t// Read syscalls.\n\tSyscR uint64\n\t// Write syscalls.\n\tSyscW uint64\n\t// Bytes read.\n\tReadBytes uint64\n\t// Bytes written.\n\tWriteBytes uint64\n\t// Bytes written, but taking into account truncation. See\n\t// Documentation/filesystems/proc.txt in the kernel sources for\n\t// detailed explanation.\n\tCancelledWriteBytes int64\n}\n\n// IO creates a new ProcIO instance from a given Proc instance.\nfunc (p Proc) IO() (ProcIO, error) {\n\tpio := ProcIO{}\n\n\tdata, err := util.ReadFileNoStat(p.path(\"io\"))\n\tif err != nil {\n\t\treturn pio, err\n\t}\n\n\tioFormat := \"rchar: %d\\nwchar: %d\\nsyscr: %d\\nsyscw: %d\\n\" +\n\t\t\"read_bytes: %d\\nwrite_bytes: %d\\n\" +\n\t\t\"cancelled_write_bytes: %d\\n\" //nolint:misspell\n\n\t_, err = fmt.Sscanf(string(data), ioFormat, &pio.RChar, &pio.WChar, &pio.SyscR,\n\t\t&pio.SyscW, &pio.ReadBytes, &pio.WriteBytes, &pio.CancelledWriteBytes)\n\n\treturn pio, err\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/proc_limits.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage procfs\n\nimport (\n\t\"bufio\"\n\t\"fmt\"\n\t\"os\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n)\n\n// ProcLimits represents the soft limits for each of the process's resource\n// limits. For more information see getrlimit(2):\n// http://man7.org/linux/man-pages/man2/getrlimit.2.html.\ntype ProcLimits struct {\n\t// CPU time limit in seconds.\n\tCPUTime uint64\n\t// Maximum size of files that the process may create.\n\tFileSize uint64\n\t// Maximum size of the process's data segment (initialized data,\n\t// uninitialized data, and heap).\n\tDataSize uint64\n\t// Maximum size of the process stack in bytes.\n\tStackSize uint64\n\t// Maximum size of a core file.\n\tCoreFileSize uint64\n\t// Limit of the process's resident set in pages.\n\tResidentSet uint64\n\t// Maximum number of processes that can be created for the real user ID of\n\t// the calling process.\n\tProcesses uint64\n\t// Value one greater than the maximum file descriptor number that can be\n\t// opened by this process.\n\tOpenFiles uint64\n\t// Maximum number of bytes of memory that may be locked into RAM.\n\tLockedMemory uint64\n\t// Maximum size of the process's virtual memory address space in bytes.\n\tAddressSpace uint64\n\t// Limit on the combined number of flock(2) locks and fcntl(2) leases that\n\t// this process may establish.\n\tFileLocks uint64\n\t// Limit of signals that may be queued for the real user ID of the calling\n\t// process.\n\tPendingSignals uint64\n\t// Limit on the number of bytes that can be allocated for POSIX message\n\t// queues for the real user ID of the calling process.\n\tMsqqueueSize uint64\n\t// Limit of the nice priority set using setpriority(2) or nice(2).\n\tNicePriority uint64\n\t// Limit of the real-time priority set using sched_setscheduler(2) or\n\t// sched_setparam(2).\n\tRealtimePriority uint64\n\t// Limit (in microseconds) on the amount of CPU time that a process\n\t// scheduled under a real-time scheduling policy may consume without making\n\t// a blocking system call.\n\tRealtimeTimeout uint64\n}\n\nconst (\n\tlimitsFields    = 4\n\tlimitsUnlimited = \"unlimited\"\n)\n\nvar (\n\tlimitsMatch = regexp.MustCompile(`(Max \\w+\\s??\\w*\\s?\\w*)\\s{2,}(\\w+)\\s+(\\w+)`)\n)\n\n// NewLimits returns the current soft limits of the process.\n//\n// Deprecated: Use p.Limits() instead.\nfunc (p Proc) NewLimits() (ProcLimits, error) {\n\treturn p.Limits()\n}\n\n// Limits returns the current soft limits of the process.\nfunc (p Proc) Limits() (ProcLimits, error) {\n\tf, err := os.Open(p.path(\"limits\"))\n\tif err != nil {\n\t\treturn ProcLimits{}, err\n\t}\n\tdefer f.Close()\n\n\tvar (\n\t\tl = ProcLimits{}\n\t\ts = bufio.NewScanner(f)\n\t)\n\n\ts.Scan() // Skip limits header\n\n\tfor s.Scan() {\n\t\t//fields := limitsMatch.Split(s.Text(), limitsFields)\n\t\tfields := limitsMatch.FindStringSubmatch(s.Text())\n\t\tif len(fields) != limitsFields {\n\t\t\treturn ProcLimits{}, fmt.Errorf(\"%w: couldn't parse %q line %q\", ErrFileParse, f.Name(), s.Text())\n\t\t}\n\n\t\tswitch strings.TrimSpace(fields[1]) {\n\t\tcase \"Max cpu time\":\n\t\t\tl.CPUTime, err = parseUint(fields[2])\n\t\tcase \"Max file size\":\n\t\t\tl.FileSize, err = parseUint(fields[2])\n\t\tcase \"Max data size\":\n\t\t\tl.DataSize, err = parseUint(fields[2])\n\t\tcase \"Max stack size\":\n\t\t\tl.StackSize, err = parseUint(fields[2])\n\t\tcase \"Max core file size\":\n\t\t\tl.CoreFileSize, err = parseUint(fields[2])\n\t\tcase \"Max resident set\":\n\t\t\tl.ResidentSet, err = parseUint(fields[2])\n\t\tcase \"Max processes\":\n\t\t\tl.Processes, err = parseUint(fields[2])\n\t\tcase \"Max open files\":\n\t\t\tl.OpenFiles, err = parseUint(fields[2])\n\t\tcase \"Max locked memory\":\n\t\t\tl.LockedMemory, err = parseUint(fields[2])\n\t\tcase \"Max address space\":\n\t\t\tl.AddressSpace, err = parseUint(fields[2])\n\t\tcase \"Max file locks\":\n\t\t\tl.FileLocks, err = parseUint(fields[2])\n\t\tcase \"Max pending signals\":\n\t\t\tl.PendingSignals, err = parseUint(fields[2])\n\t\tcase \"Max msgqueue size\":\n\t\t\tl.MsqqueueSize, err = parseUint(fields[2])\n\t\tcase \"Max nice priority\":\n\t\t\tl.NicePriority, err = parseUint(fields[2])\n\t\tcase \"Max realtime priority\":\n\t\t\tl.RealtimePriority, err = parseUint(fields[2])\n\t\tcase \"Max realtime timeout\":\n\t\t\tl.RealtimeTimeout, err = parseUint(fields[2])\n\t\t}\n\t\tif err != nil {\n\t\t\treturn ProcLimits{}, err\n\t\t}\n\t}\n\n\treturn l, s.Err()\n}\n\nfunc parseUint(s string) (uint64, error) {\n\tif s == limitsUnlimited {\n\t\treturn 18446744073709551615, nil\n\t}\n\ti, err := strconv.ParseUint(s, 10, 64)\n\tif err != nil {\n\t\treturn 0, fmt.Errorf(\"%w: couldn't parse value %q: %w\", ErrFileParse, s, err)\n\t}\n\treturn i, nil\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/proc_maps.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n//go:build (aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris) && !js\n// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris\n// +build !js\n\npackage procfs\n\nimport (\n\t\"bufio\"\n\t\"fmt\"\n\t\"os\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"golang.org/x/sys/unix\"\n)\n\n// ProcMapPermissions contains permission settings read from `/proc/[pid]/maps`.\ntype ProcMapPermissions struct {\n\t// mapping has the [R]ead flag set\n\tRead bool\n\t// mapping has the [W]rite flag set\n\tWrite bool\n\t// mapping has the [X]ecutable flag set\n\tExecute bool\n\t// mapping has the [S]hared flag set\n\tShared bool\n\t// mapping is marked as [P]rivate (copy on write)\n\tPrivate bool\n}\n\n// ProcMap contains the process memory-mappings of the process\n// read from `/proc/[pid]/maps`.\ntype ProcMap struct {\n\t// The start address of current mapping.\n\tStartAddr uintptr\n\t// The end address of the current mapping\n\tEndAddr uintptr\n\t// The permissions for this mapping\n\tPerms *ProcMapPermissions\n\t// The current offset into the file/fd (e.g., shared libs)\n\tOffset int64\n\t// Device owner of this mapping (major:minor) in Mkdev format.\n\tDev uint64\n\t// The inode of the device above\n\tInode uint64\n\t// The file or psuedofile (or empty==anonymous)\n\tPathname string\n}\n\n// parseDevice parses the device token of a line and converts it to a dev_t\n// (mkdev) like structure.\nfunc parseDevice(s string) (uint64, error) {\n\ti := strings.Index(s, \":\")\n\tif i == -1 {\n\t\treturn 0, fmt.Errorf(\"%w: expected separator `:` in %s\", ErrFileParse, s)\n\t}\n\n\tmajor, err := strconv.ParseUint(s[0:i], 16, 0)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\tminor, err := strconv.ParseUint(s[i+1:], 16, 0)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\treturn unix.Mkdev(uint32(major), uint32(minor)), nil\n}\n\n// parseAddress converts a hex-string to a uintptr.\nfunc parseAddress(s string) (uintptr, error) {\n\ta, err := strconv.ParseUint(s, 16, 0)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\treturn uintptr(a), nil\n}\n\n// parseAddresses parses the start-end address.\nfunc parseAddresses(s string) (uintptr, uintptr, error) {\n\tidx := strings.Index(s, \"-\")\n\tif idx == -1 {\n\t\treturn 0, 0, fmt.Errorf(\"%w: expected separator `-` in %s\", ErrFileParse, s)\n\t}\n\n\tsaddr, err := parseAddress(s[0:idx])\n\tif err != nil {\n\t\treturn 0, 0, err\n\t}\n\n\teaddr, err := parseAddress(s[idx+1:])\n\tif err != nil {\n\t\treturn 0, 0, err\n\t}\n\n\treturn saddr, eaddr, nil\n}\n\n// parsePermissions parses a token and returns any that are set.\nfunc parsePermissions(s string) (*ProcMapPermissions, error) {\n\tif len(s) < 4 {\n\t\treturn nil, fmt.Errorf(\"%w: invalid permissions token\", ErrFileParse)\n\t}\n\n\tperms := ProcMapPermissions{}\n\tfor _, ch := range s {\n\t\tswitch ch {\n\t\tcase 'r':\n\t\t\tperms.Read = true\n\t\tcase 'w':\n\t\t\tperms.Write = true\n\t\tcase 'x':\n\t\t\tperms.Execute = true\n\t\tcase 'p':\n\t\t\tperms.Private = true\n\t\tcase 's':\n\t\t\tperms.Shared = true\n\t\t}\n\t}\n\n\treturn &perms, nil\n}\n\n// parseProcMap will attempt to parse a single line within a proc/[pid]/maps\n// buffer.\nfunc parseProcMap(text string) (*ProcMap, error) {\n\tfields := strings.Fields(text)\n\tif len(fields) < 5 {\n\t\treturn nil, fmt.Errorf(\"%w: truncated procmap entry\", ErrFileParse)\n\t}\n\n\tsaddr, eaddr, err := parseAddresses(fields[0])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tperms, err := parsePermissions(fields[1])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\toffset, err := strconv.ParseInt(fields[2], 16, 0)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tdevice, err := parseDevice(fields[3])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tinode, err := strconv.ParseUint(fields[4], 10, 0)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tpathname := \"\"\n\n\tif len(fields) >= 5 {\n\t\tpathname = strings.Join(fields[5:], \" \")\n\t}\n\n\treturn &ProcMap{\n\t\tStartAddr: saddr,\n\t\tEndAddr:   eaddr,\n\t\tPerms:     perms,\n\t\tOffset:    offset,\n\t\tDev:       device,\n\t\tInode:     inode,\n\t\tPathname:  pathname,\n\t}, nil\n}\n\n// ProcMaps reads from /proc/[pid]/maps to get the memory-mappings of the\n// process.\nfunc (p Proc) ProcMaps() ([]*ProcMap, error) {\n\tfile, err := os.Open(p.path(\"maps\"))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer file.Close()\n\n\tmaps := []*ProcMap{}\n\tscan := bufio.NewScanner(file)\n\n\tfor scan.Scan() {\n\t\tm, err := parseProcMap(scan.Text())\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tmaps = append(maps, m)\n\t}\n\n\treturn maps, nil\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/proc_netstat.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage procfs\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/prometheus/procfs/internal/util\"\n)\n\n// ProcNetstat models the content of /proc/<pid>/net/netstat.\ntype ProcNetstat struct {\n\t// The process ID.\n\tPID int\n\tTcpExt\n\tIpExt\n}\n\ntype TcpExt struct { // nolint:revive\n\tSyncookiesSent            *float64\n\tSyncookiesRecv            *float64\n\tSyncookiesFailed          *float64\n\tEmbryonicRsts             *float64\n\tPruneCalled               *float64\n\tRcvPruned                 *float64\n\tOfoPruned                 *float64\n\tOutOfWindowIcmps          *float64\n\tLockDroppedIcmps          *float64\n\tArpFilter                 *float64\n\tTW                        *float64\n\tTWRecycled                *float64\n\tTWKilled                  *float64\n\tPAWSActive                *float64\n\tPAWSEstab                 *float64\n\tDelayedACKs               *float64\n\tDelayedACKLocked          *float64\n\tDelayedACKLost            *float64\n\tListenOverflows           *float64\n\tListenDrops               *float64\n\tTCPHPHits                 *float64\n\tTCPPureAcks               *float64\n\tTCPHPAcks                 *float64\n\tTCPRenoRecovery           *float64\n\tTCPSackRecovery           *float64\n\tTCPSACKReneging           *float64\n\tTCPSACKReorder            *float64\n\tTCPRenoReorder            *float64\n\tTCPTSReorder              *float64\n\tTCPFullUndo               *float64\n\tTCPPartialUndo            *float64\n\tTCPDSACKUndo              *float64\n\tTCPLossUndo               *float64\n\tTCPLostRetransmit         *float64\n\tTCPRenoFailures           *float64\n\tTCPSackFailures           *float64\n\tTCPLossFailures           *float64\n\tTCPFastRetrans            *float64\n\tTCPSlowStartRetrans       *float64\n\tTCPTimeouts               *float64\n\tTCPLossProbes             *float64\n\tTCPLossProbeRecovery      *float64\n\tTCPRenoRecoveryFail       *float64\n\tTCPSackRecoveryFail       *float64\n\tTCPRcvCollapsed           *float64\n\tTCPDSACKOldSent           *float64\n\tTCPDSACKOfoSent           *float64\n\tTCPDSACKRecv              *float64\n\tTCPDSACKOfoRecv           *float64\n\tTCPAbortOnData            *float64\n\tTCPAbortOnClose           *float64\n\tTCPAbortOnMemory          *float64\n\tTCPAbortOnTimeout         *float64\n\tTCPAbortOnLinger          *float64\n\tTCPAbortFailed            *float64\n\tTCPMemoryPressures        *float64\n\tTCPMemoryPressuresChrono  *float64\n\tTCPSACKDiscard            *float64\n\tTCPDSACKIgnoredOld        *float64\n\tTCPDSACKIgnoredNoUndo     *float64\n\tTCPSpuriousRTOs           *float64\n\tTCPMD5NotFound            *float64\n\tTCPMD5Unexpected          *float64\n\tTCPMD5Failure             *float64\n\tTCPSackShifted            *float64\n\tTCPSackMerged             *float64\n\tTCPSackShiftFallback      *float64\n\tTCPBacklogDrop            *float64\n\tPFMemallocDrop            *float64\n\tTCPMinTTLDrop             *float64\n\tTCPDeferAcceptDrop        *float64\n\tIPReversePathFilter       *float64\n\tTCPTimeWaitOverflow       *float64\n\tTCPReqQFullDoCookies      *float64\n\tTCPReqQFullDrop           *float64\n\tTCPRetransFail            *float64\n\tTCPRcvCoalesce            *float64\n\tTCPRcvQDrop               *float64\n\tTCPOFOQueue               *float64\n\tTCPOFODrop                *float64\n\tTCPOFOMerge               *float64\n\tTCPChallengeACK           *float64\n\tTCPSYNChallenge           *float64\n\tTCPFastOpenActive         *float64\n\tTCPFastOpenActiveFail     *float64\n\tTCPFastOpenPassive        *float64\n\tTCPFastOpenPassiveFail    *float64\n\tTCPFastOpenListenOverflow *float64\n\tTCPFastOpenCookieReqd     *float64\n\tTCPFastOpenBlackhole      *float64\n\tTCPSpuriousRtxHostQueues  *float64\n\tBusyPollRxPackets         *float64\n\tTCPAutoCorking            *float64\n\tTCPFromZeroWindowAdv      *float64\n\tTCPToZeroWindowAdv        *float64\n\tTCPWantZeroWindowAdv      *float64\n\tTCPSynRetrans             *float64\n\tTCPOrigDataSent           *float64\n\tTCPHystartTrainDetect     *float64\n\tTCPHystartTrainCwnd       *float64\n\tTCPHystartDelayDetect     *float64\n\tTCPHystartDelayCwnd       *float64\n\tTCPACKSkippedSynRecv      *float64\n\tTCPACKSkippedPAWS         *float64\n\tTCPACKSkippedSeq          *float64\n\tTCPACKSkippedFinWait2     *float64\n\tTCPACKSkippedTimeWait     *float64\n\tTCPACKSkippedChallenge    *float64\n\tTCPWinProbe               *float64\n\tTCPKeepAlive              *float64\n\tTCPMTUPFail               *float64\n\tTCPMTUPSuccess            *float64\n\tTCPWqueueTooBig           *float64\n}\n\ntype IpExt struct { // nolint:revive\n\tInNoRoutes      *float64\n\tInTruncatedPkts *float64\n\tInMcastPkts     *float64\n\tOutMcastPkts    *float64\n\tInBcastPkts     *float64\n\tOutBcastPkts    *float64\n\tInOctets        *float64\n\tOutOctets       *float64\n\tInMcastOctets   *float64\n\tOutMcastOctets  *float64\n\tInBcastOctets   *float64\n\tOutBcastOctets  *float64\n\tInCsumErrors    *float64\n\tInNoECTPkts     *float64\n\tInECT1Pkts      *float64\n\tInECT0Pkts      *float64\n\tInCEPkts        *float64\n\tReasmOverlaps   *float64\n}\n\nfunc (p Proc) Netstat() (ProcNetstat, error) {\n\tfilename := p.path(\"net/netstat\")\n\tdata, err := util.ReadFileNoStat(filename)\n\tif err != nil {\n\t\treturn ProcNetstat{PID: p.PID}, err\n\t}\n\tprocNetstat, err := parseProcNetstat(bytes.NewReader(data), filename)\n\tprocNetstat.PID = p.PID\n\treturn procNetstat, err\n}\n\n// parseProcNetstat parses the metrics from proc/<pid>/net/netstat file\n// and returns a ProcNetstat structure.\nfunc parseProcNetstat(r io.Reader, fileName string) (ProcNetstat, error) {\n\tvar (\n\t\tscanner     = bufio.NewScanner(r)\n\t\tprocNetstat = ProcNetstat{}\n\t)\n\n\tfor scanner.Scan() {\n\t\tnameParts := strings.Split(scanner.Text(), \" \")\n\t\tscanner.Scan()\n\t\tvalueParts := strings.Split(scanner.Text(), \" \")\n\t\t// Remove trailing :.\n\t\tprotocol := strings.TrimSuffix(nameParts[0], \":\")\n\t\tif len(nameParts) != len(valueParts) {\n\t\t\treturn procNetstat, fmt.Errorf(\"%w: mismatch field count mismatch in %s: %s\",\n\t\t\t\tErrFileParse, fileName, protocol)\n\t\t}\n\t\tfor i := 1; i < len(nameParts); i++ {\n\t\t\tvalue, err := strconv.ParseFloat(valueParts[i], 64)\n\t\t\tif err != nil {\n\t\t\t\treturn procNetstat, err\n\t\t\t}\n\t\t\tkey := nameParts[i]\n\n\t\t\tswitch protocol {\n\t\t\tcase \"TcpExt\":\n\t\t\t\tswitch key {\n\t\t\t\tcase \"SyncookiesSent\":\n\t\t\t\t\tprocNetstat.SyncookiesSent = &value\n\t\t\t\tcase \"SyncookiesRecv\":\n\t\t\t\t\tprocNetstat.SyncookiesRecv = &value\n\t\t\t\tcase \"SyncookiesFailed\":\n\t\t\t\t\tprocNetstat.SyncookiesFailed = &value\n\t\t\t\tcase \"EmbryonicRsts\":\n\t\t\t\t\tprocNetstat.EmbryonicRsts = &value\n\t\t\t\tcase \"PruneCalled\":\n\t\t\t\t\tprocNetstat.PruneCalled = &value\n\t\t\t\tcase \"RcvPruned\":\n\t\t\t\t\tprocNetstat.RcvPruned = &value\n\t\t\t\tcase \"OfoPruned\":\n\t\t\t\t\tprocNetstat.OfoPruned = &value\n\t\t\t\tcase \"OutOfWindowIcmps\":\n\t\t\t\t\tprocNetstat.OutOfWindowIcmps = &value\n\t\t\t\tcase \"LockDroppedIcmps\":\n\t\t\t\t\tprocNetstat.LockDroppedIcmps = &value\n\t\t\t\tcase \"ArpFilter\":\n\t\t\t\t\tprocNetstat.ArpFilter = &value\n\t\t\t\tcase \"TW\":\n\t\t\t\t\tprocNetstat.TW = &value\n\t\t\t\tcase \"TWRecycled\":\n\t\t\t\t\tprocNetstat.TWRecycled = &value\n\t\t\t\tcase \"TWKilled\":\n\t\t\t\t\tprocNetstat.TWKilled = &value\n\t\t\t\tcase \"PAWSActive\":\n\t\t\t\t\tprocNetstat.PAWSActive = &value\n\t\t\t\tcase \"PAWSEstab\":\n\t\t\t\t\tprocNetstat.PAWSEstab = &value\n\t\t\t\tcase \"DelayedACKs\":\n\t\t\t\t\tprocNetstat.DelayedACKs = &value\n\t\t\t\tcase \"DelayedACKLocked\":\n\t\t\t\t\tprocNetstat.DelayedACKLocked = &value\n\t\t\t\tcase \"DelayedACKLost\":\n\t\t\t\t\tprocNetstat.DelayedACKLost = &value\n\t\t\t\tcase \"ListenOverflows\":\n\t\t\t\t\tprocNetstat.ListenOverflows = &value\n\t\t\t\tcase \"ListenDrops\":\n\t\t\t\t\tprocNetstat.ListenDrops = &value\n\t\t\t\tcase \"TCPHPHits\":\n\t\t\t\t\tprocNetstat.TCPHPHits = &value\n\t\t\t\tcase \"TCPPureAcks\":\n\t\t\t\t\tprocNetstat.TCPPureAcks = &value\n\t\t\t\tcase \"TCPHPAcks\":\n\t\t\t\t\tprocNetstat.TCPHPAcks = &value\n\t\t\t\tcase \"TCPRenoRecovery\":\n\t\t\t\t\tprocNetstat.TCPRenoRecovery = &value\n\t\t\t\tcase \"TCPSackRecovery\":\n\t\t\t\t\tprocNetstat.TCPSackRecovery = &value\n\t\t\t\tcase \"TCPSACKReneging\":\n\t\t\t\t\tprocNetstat.TCPSACKReneging = &value\n\t\t\t\tcase \"TCPSACKReorder\":\n\t\t\t\t\tprocNetstat.TCPSACKReorder = &value\n\t\t\t\tcase \"TCPRenoReorder\":\n\t\t\t\t\tprocNetstat.TCPRenoReorder = &value\n\t\t\t\tcase \"TCPTSReorder\":\n\t\t\t\t\tprocNetstat.TCPTSReorder = &value\n\t\t\t\tcase \"TCPFullUndo\":\n\t\t\t\t\tprocNetstat.TCPFullUndo = &value\n\t\t\t\tcase \"TCPPartialUndo\":\n\t\t\t\t\tprocNetstat.TCPPartialUndo = &value\n\t\t\t\tcase \"TCPDSACKUndo\":\n\t\t\t\t\tprocNetstat.TCPDSACKUndo = &value\n\t\t\t\tcase \"TCPLossUndo\":\n\t\t\t\t\tprocNetstat.TCPLossUndo = &value\n\t\t\t\tcase \"TCPLostRetransmit\":\n\t\t\t\t\tprocNetstat.TCPLostRetransmit = &value\n\t\t\t\tcase \"TCPRenoFailures\":\n\t\t\t\t\tprocNetstat.TCPRenoFailures = &value\n\t\t\t\tcase \"TCPSackFailures\":\n\t\t\t\t\tprocNetstat.TCPSackFailures = &value\n\t\t\t\tcase \"TCPLossFailures\":\n\t\t\t\t\tprocNetstat.TCPLossFailures = &value\n\t\t\t\tcase \"TCPFastRetrans\":\n\t\t\t\t\tprocNetstat.TCPFastRetrans = &value\n\t\t\t\tcase \"TCPSlowStartRetrans\":\n\t\t\t\t\tprocNetstat.TCPSlowStartRetrans = &value\n\t\t\t\tcase \"TCPTimeouts\":\n\t\t\t\t\tprocNetstat.TCPTimeouts = &value\n\t\t\t\tcase \"TCPLossProbes\":\n\t\t\t\t\tprocNetstat.TCPLossProbes = &value\n\t\t\t\tcase \"TCPLossProbeRecovery\":\n\t\t\t\t\tprocNetstat.TCPLossProbeRecovery = &value\n\t\t\t\tcase \"TCPRenoRecoveryFail\":\n\t\t\t\t\tprocNetstat.TCPRenoRecoveryFail = &value\n\t\t\t\tcase \"TCPSackRecoveryFail\":\n\t\t\t\t\tprocNetstat.TCPSackRecoveryFail = &value\n\t\t\t\tcase \"TCPRcvCollapsed\":\n\t\t\t\t\tprocNetstat.TCPRcvCollapsed = &value\n\t\t\t\tcase \"TCPDSACKOldSent\":\n\t\t\t\t\tprocNetstat.TCPDSACKOldSent = &value\n\t\t\t\tcase \"TCPDSACKOfoSent\":\n\t\t\t\t\tprocNetstat.TCPDSACKOfoSent = &value\n\t\t\t\tcase \"TCPDSACKRecv\":\n\t\t\t\t\tprocNetstat.TCPDSACKRecv = &value\n\t\t\t\tcase \"TCPDSACKOfoRecv\":\n\t\t\t\t\tprocNetstat.TCPDSACKOfoRecv = &value\n\t\t\t\tcase \"TCPAbortOnData\":\n\t\t\t\t\tprocNetstat.TCPAbortOnData = &value\n\t\t\t\tcase \"TCPAbortOnClose\":\n\t\t\t\t\tprocNetstat.TCPAbortOnClose = &value\n\t\t\t\tcase \"TCPDeferAcceptDrop\":\n\t\t\t\t\tprocNetstat.TCPDeferAcceptDrop = &value\n\t\t\t\tcase \"IPReversePathFilter\":\n\t\t\t\t\tprocNetstat.IPReversePathFilter = &value\n\t\t\t\tcase \"TCPTimeWaitOverflow\":\n\t\t\t\t\tprocNetstat.TCPTimeWaitOverflow = &value\n\t\t\t\tcase \"TCPReqQFullDoCookies\":\n\t\t\t\t\tprocNetstat.TCPReqQFullDoCookies = &value\n\t\t\t\tcase \"TCPReqQFullDrop\":\n\t\t\t\t\tprocNetstat.TCPReqQFullDrop = &value\n\t\t\t\tcase \"TCPRetransFail\":\n\t\t\t\t\tprocNetstat.TCPRetransFail = &value\n\t\t\t\tcase \"TCPRcvCoalesce\":\n\t\t\t\t\tprocNetstat.TCPRcvCoalesce = &value\n\t\t\t\tcase \"TCPRcvQDrop\":\n\t\t\t\t\tprocNetstat.TCPRcvQDrop = &value\n\t\t\t\tcase \"TCPOFOQueue\":\n\t\t\t\t\tprocNetstat.TCPOFOQueue = &value\n\t\t\t\tcase \"TCPOFODrop\":\n\t\t\t\t\tprocNetstat.TCPOFODrop = &value\n\t\t\t\tcase \"TCPOFOMerge\":\n\t\t\t\t\tprocNetstat.TCPOFOMerge = &value\n\t\t\t\tcase \"TCPChallengeACK\":\n\t\t\t\t\tprocNetstat.TCPChallengeACK = &value\n\t\t\t\tcase \"TCPSYNChallenge\":\n\t\t\t\t\tprocNetstat.TCPSYNChallenge = &value\n\t\t\t\tcase \"TCPFastOpenActive\":\n\t\t\t\t\tprocNetstat.TCPFastOpenActive = &value\n\t\t\t\tcase \"TCPFastOpenActiveFail\":\n\t\t\t\t\tprocNetstat.TCPFastOpenActiveFail = &value\n\t\t\t\tcase \"TCPFastOpenPassive\":\n\t\t\t\t\tprocNetstat.TCPFastOpenPassive = &value\n\t\t\t\tcase \"TCPFastOpenPassiveFail\":\n\t\t\t\t\tprocNetstat.TCPFastOpenPassiveFail = &value\n\t\t\t\tcase \"TCPFastOpenListenOverflow\":\n\t\t\t\t\tprocNetstat.TCPFastOpenListenOverflow = &value\n\t\t\t\tcase \"TCPFastOpenCookieReqd\":\n\t\t\t\t\tprocNetstat.TCPFastOpenCookieReqd = &value\n\t\t\t\tcase \"TCPFastOpenBlackhole\":\n\t\t\t\t\tprocNetstat.TCPFastOpenBlackhole = &value\n\t\t\t\tcase \"TCPSpuriousRtxHostQueues\":\n\t\t\t\t\tprocNetstat.TCPSpuriousRtxHostQueues = &value\n\t\t\t\tcase \"BusyPollRxPackets\":\n\t\t\t\t\tprocNetstat.BusyPollRxPackets = &value\n\t\t\t\tcase \"TCPAutoCorking\":\n\t\t\t\t\tprocNetstat.TCPAutoCorking = &value\n\t\t\t\tcase \"TCPFromZeroWindowAdv\":\n\t\t\t\t\tprocNetstat.TCPFromZeroWindowAdv = &value\n\t\t\t\tcase \"TCPToZeroWindowAdv\":\n\t\t\t\t\tprocNetstat.TCPToZeroWindowAdv = &value\n\t\t\t\tcase \"TCPWantZeroWindowAdv\":\n\t\t\t\t\tprocNetstat.TCPWantZeroWindowAdv = &value\n\t\t\t\tcase \"TCPSynRetrans\":\n\t\t\t\t\tprocNetstat.TCPSynRetrans = &value\n\t\t\t\tcase \"TCPOrigDataSent\":\n\t\t\t\t\tprocNetstat.TCPOrigDataSent = &value\n\t\t\t\tcase \"TCPHystartTrainDetect\":\n\t\t\t\t\tprocNetstat.TCPHystartTrainDetect = &value\n\t\t\t\tcase \"TCPHystartTrainCwnd\":\n\t\t\t\t\tprocNetstat.TCPHystartTrainCwnd = &value\n\t\t\t\tcase \"TCPHystartDelayDetect\":\n\t\t\t\t\tprocNetstat.TCPHystartDelayDetect = &value\n\t\t\t\tcase \"TCPHystartDelayCwnd\":\n\t\t\t\t\tprocNetstat.TCPHystartDelayCwnd = &value\n\t\t\t\tcase \"TCPACKSkippedSynRecv\":\n\t\t\t\t\tprocNetstat.TCPACKSkippedSynRecv = &value\n\t\t\t\tcase \"TCPACKSkippedPAWS\":\n\t\t\t\t\tprocNetstat.TCPACKSkippedPAWS = &value\n\t\t\t\tcase \"TCPACKSkippedSeq\":\n\t\t\t\t\tprocNetstat.TCPACKSkippedSeq = &value\n\t\t\t\tcase \"TCPACKSkippedFinWait2\":\n\t\t\t\t\tprocNetstat.TCPACKSkippedFinWait2 = &value\n\t\t\t\tcase \"TCPACKSkippedTimeWait\":\n\t\t\t\t\tprocNetstat.TCPACKSkippedTimeWait = &value\n\t\t\t\tcase \"TCPACKSkippedChallenge\":\n\t\t\t\t\tprocNetstat.TCPACKSkippedChallenge = &value\n\t\t\t\tcase \"TCPWinProbe\":\n\t\t\t\t\tprocNetstat.TCPWinProbe = &value\n\t\t\t\tcase \"TCPKeepAlive\":\n\t\t\t\t\tprocNetstat.TCPKeepAlive = &value\n\t\t\t\tcase \"TCPMTUPFail\":\n\t\t\t\t\tprocNetstat.TCPMTUPFail = &value\n\t\t\t\tcase \"TCPMTUPSuccess\":\n\t\t\t\t\tprocNetstat.TCPMTUPSuccess = &value\n\t\t\t\tcase \"TCPWqueueTooBig\":\n\t\t\t\t\tprocNetstat.TCPWqueueTooBig = &value\n\t\t\t\t}\n\t\t\tcase \"IpExt\":\n\t\t\t\tswitch key {\n\t\t\t\tcase \"InNoRoutes\":\n\t\t\t\t\tprocNetstat.InNoRoutes = &value\n\t\t\t\tcase \"InTruncatedPkts\":\n\t\t\t\t\tprocNetstat.InTruncatedPkts = &value\n\t\t\t\tcase \"InMcastPkts\":\n\t\t\t\t\tprocNetstat.InMcastPkts = &value\n\t\t\t\tcase \"OutMcastPkts\":\n\t\t\t\t\tprocNetstat.OutMcastPkts = &value\n\t\t\t\tcase \"InBcastPkts\":\n\t\t\t\t\tprocNetstat.InBcastPkts = &value\n\t\t\t\tcase \"OutBcastPkts\":\n\t\t\t\t\tprocNetstat.OutBcastPkts = &value\n\t\t\t\tcase \"InOctets\":\n\t\t\t\t\tprocNetstat.InOctets = &value\n\t\t\t\tcase \"OutOctets\":\n\t\t\t\t\tprocNetstat.OutOctets = &value\n\t\t\t\tcase \"InMcastOctets\":\n\t\t\t\t\tprocNetstat.InMcastOctets = &value\n\t\t\t\tcase \"OutMcastOctets\":\n\t\t\t\t\tprocNetstat.OutMcastOctets = &value\n\t\t\t\tcase \"InBcastOctets\":\n\t\t\t\t\tprocNetstat.InBcastOctets = &value\n\t\t\t\tcase \"OutBcastOctets\":\n\t\t\t\t\tprocNetstat.OutBcastOctets = &value\n\t\t\t\tcase \"InCsumErrors\":\n\t\t\t\t\tprocNetstat.InCsumErrors = &value\n\t\t\t\tcase \"InNoECTPkts\":\n\t\t\t\t\tprocNetstat.InNoECTPkts = &value\n\t\t\t\tcase \"InECT1Pkts\":\n\t\t\t\t\tprocNetstat.InECT1Pkts = &value\n\t\t\t\tcase \"InECT0Pkts\":\n\t\t\t\t\tprocNetstat.InECT0Pkts = &value\n\t\t\t\tcase \"InCEPkts\":\n\t\t\t\t\tprocNetstat.InCEPkts = &value\n\t\t\t\tcase \"ReasmOverlaps\":\n\t\t\t\t\tprocNetstat.ReasmOverlaps = &value\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn procNetstat, scanner.Err()\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/proc_ns.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage procfs\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"strconv\"\n\t\"strings\"\n)\n\n// Namespace represents a single namespace of a process.\ntype Namespace struct {\n\tType  string // Namespace type.\n\tInode uint32 // Inode number of the namespace. If two processes are in the same namespace their inodes will match.\n}\n\n// Namespaces contains all of the namespaces that the process is contained in.\ntype Namespaces map[string]Namespace\n\n// Namespaces reads from /proc/<pid>/ns/* to get the namespaces of which the\n// process is a member.\nfunc (p Proc) Namespaces() (Namespaces, error) {\n\td, err := os.Open(p.path(\"ns\"))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer d.Close()\n\n\tnames, err := d.Readdirnames(-1)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"%w: failed to read contents of ns dir: %w\", ErrFileRead, err)\n\t}\n\n\tns := make(Namespaces, len(names))\n\tfor _, name := range names {\n\t\ttarget, err := os.Readlink(p.path(\"ns\", name))\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tfields := strings.SplitN(target, \":\", 2)\n\t\tif len(fields) != 2 {\n\t\t\treturn nil, fmt.Errorf(\"%w: namespace type and inode from %q\", ErrFileParse, target)\n\t\t}\n\n\t\ttyp := fields[0]\n\t\tinode, err := strconv.ParseUint(strings.Trim(fields[1], \"[]\"), 10, 32)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"%w: inode from %q: %w\", ErrFileParse, fields[1], err)\n\t\t}\n\n\t\tns[name] = Namespace{typ, uint32(inode)}\n\t}\n\n\treturn ns, nil\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/proc_psi.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage procfs\n\n// The PSI / pressure interface is described at\n//   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/accounting/psi.txt\n// Each resource (cpu, io, memory, ...) is exposed as a single file.\n// Each file may contain up to two lines, one for \"some\" pressure and one for \"full\" pressure.\n// Each line contains several averages (over n seconds) and a total in µs.\n//\n// Example io pressure file:\n// > some avg10=0.06 avg60=0.21 avg300=0.99 total=8537362\n// > full avg10=0.00 avg60=0.13 avg300=0.96 total=8183134\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"strings\"\n\n\t\"github.com/prometheus/procfs/internal/util\"\n)\n\nconst lineFormat = \"avg10=%f avg60=%f avg300=%f total=%d\"\n\n// PSILine is a single line of values as returned by `/proc/pressure/*`.\n//\n// The Avg entries are averages over n seconds, as a percentage.\n// The Total line is in microseconds.\ntype PSILine struct {\n\tAvg10  float64\n\tAvg60  float64\n\tAvg300 float64\n\tTotal  uint64\n}\n\n// PSIStats represent pressure stall information from /proc/pressure/*\n//\n// \"Some\" indicates the share of time in which at least some tasks are stalled.\n// \"Full\" indicates the share of time in which all non-idle tasks are stalled simultaneously.\ntype PSIStats struct {\n\tSome *PSILine\n\tFull *PSILine\n}\n\n// PSIStatsForResource reads pressure stall information for the specified\n// resource from /proc/pressure/<resource>. At time of writing this can be\n// either \"cpu\", \"memory\" or \"io\".\nfunc (fs FS) PSIStatsForResource(resource string) (PSIStats, error) {\n\tdata, err := util.ReadFileNoStat(fs.proc.Path(fmt.Sprintf(\"%s/%s\", \"pressure\", resource)))\n\tif err != nil {\n\t\treturn PSIStats{}, fmt.Errorf(\"%w: psi_stats: unavailable for %q: %w\", ErrFileRead, resource, err)\n\t}\n\n\treturn parsePSIStats(bytes.NewReader(data))\n}\n\n// parsePSIStats parses the specified file for pressure stall information.\nfunc parsePSIStats(r io.Reader) (PSIStats, error) {\n\tpsiStats := PSIStats{}\n\n\tscanner := bufio.NewScanner(r)\n\tfor scanner.Scan() {\n\t\tl := scanner.Text()\n\t\tprefix := strings.Split(l, \" \")[0]\n\t\tswitch prefix {\n\t\tcase \"some\":\n\t\t\tpsi := PSILine{}\n\t\t\t_, err := fmt.Sscanf(l, fmt.Sprintf(\"some %s\", lineFormat), &psi.Avg10, &psi.Avg60, &psi.Avg300, &psi.Total)\n\t\t\tif err != nil {\n\t\t\t\treturn PSIStats{}, err\n\t\t\t}\n\t\t\tpsiStats.Some = &psi\n\t\tcase \"full\":\n\t\t\tpsi := PSILine{}\n\t\t\t_, err := fmt.Sscanf(l, fmt.Sprintf(\"full %s\", lineFormat), &psi.Avg10, &psi.Avg60, &psi.Avg300, &psi.Total)\n\t\t\tif err != nil {\n\t\t\t\treturn PSIStats{}, err\n\t\t\t}\n\t\t\tpsiStats.Full = &psi\n\t\tdefault:\n\t\t\t// If we encounter a line with an unknown prefix, ignore it and move on\n\t\t\t// Should new measurement types be added in the future we'll simply ignore them instead\n\t\t\t// of erroring on retrieval\n\t\t\tcontinue\n\t\t}\n\t}\n\n\treturn psiStats, nil\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/proc_smaps.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n//go:build !windows\n// +build !windows\n\npackage procfs\n\nimport (\n\t\"bufio\"\n\t\"errors\"\n\t\"os\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/prometheus/procfs/internal/util\"\n)\n\nvar (\n\t// Match the header line before each mapped zone in `/proc/pid/smaps`.\n\tprocSMapsHeaderLine = regexp.MustCompile(`^[a-f0-9].*$`)\n)\n\ntype ProcSMapsRollup struct {\n\t// Amount of the mapping that is currently resident in RAM.\n\tRss uint64\n\t// Process's proportional share of this mapping.\n\tPss uint64\n\t// Size in bytes of clean shared pages.\n\tSharedClean uint64\n\t// Size in bytes of dirty shared pages.\n\tSharedDirty uint64\n\t// Size in bytes of clean private pages.\n\tPrivateClean uint64\n\t// Size in bytes of dirty private pages.\n\tPrivateDirty uint64\n\t// Amount of memory currently marked as referenced or accessed.\n\tReferenced uint64\n\t// Amount of memory that does not belong to any file.\n\tAnonymous uint64\n\t// Amount would-be-anonymous memory currently on swap.\n\tSwap uint64\n\t// Process's proportional memory on swap.\n\tSwapPss uint64\n}\n\n// ProcSMapsRollup reads from /proc/[pid]/smaps_rollup to get summed memory information of the\n// process.\n//\n// If smaps_rollup does not exists (require kernel >= 4.15), the content of /proc/pid/smaps will\n// we read and summed.\nfunc (p Proc) ProcSMapsRollup() (ProcSMapsRollup, error) {\n\tdata, err := util.ReadFileNoStat(p.path(\"smaps_rollup\"))\n\tif err != nil && os.IsNotExist(err) {\n\t\treturn p.procSMapsRollupManual()\n\t}\n\tif err != nil {\n\t\treturn ProcSMapsRollup{}, err\n\t}\n\n\tlines := strings.Split(string(data), \"\\n\")\n\tsmaps := ProcSMapsRollup{}\n\n\t// skip first line which don't contains information we need\n\tlines = lines[1:]\n\tfor _, line := range lines {\n\t\tif line == \"\" {\n\t\t\tcontinue\n\t\t}\n\n\t\tif err := smaps.parseLine(line); err != nil {\n\t\t\treturn ProcSMapsRollup{}, err\n\t\t}\n\t}\n\n\treturn smaps, nil\n}\n\n// Read /proc/pid/smaps and do the roll-up in Go code.\nfunc (p Proc) procSMapsRollupManual() (ProcSMapsRollup, error) {\n\tfile, err := os.Open(p.path(\"smaps\"))\n\tif err != nil {\n\t\treturn ProcSMapsRollup{}, err\n\t}\n\tdefer file.Close()\n\n\tsmaps := ProcSMapsRollup{}\n\tscan := bufio.NewScanner(file)\n\n\tfor scan.Scan() {\n\t\tline := scan.Text()\n\n\t\tif procSMapsHeaderLine.MatchString(line) {\n\t\t\tcontinue\n\t\t}\n\n\t\tif err := smaps.parseLine(line); err != nil {\n\t\t\treturn ProcSMapsRollup{}, err\n\t\t}\n\t}\n\n\treturn smaps, nil\n}\n\nfunc (s *ProcSMapsRollup) parseLine(line string) error {\n\tkv := strings.SplitN(line, \":\", 2)\n\tif len(kv) != 2 {\n\t\treturn errors.New(\"invalid net/dev line, missing colon\")\n\t}\n\n\tk := kv[0]\n\tif k == \"VmFlags\" {\n\t\treturn nil\n\t}\n\n\tv := strings.TrimSpace(kv[1])\n\tv = strings.TrimSuffix(v, \" kB\")\n\n\tvKBytes, err := strconv.ParseUint(v, 10, 64)\n\tif err != nil {\n\t\treturn err\n\t}\n\tvBytes := vKBytes * 1024\n\n\ts.addValue(k, vBytes)\n\n\treturn nil\n}\n\nfunc (s *ProcSMapsRollup) addValue(k string, vUintBytes uint64) {\n\tswitch k {\n\tcase \"Rss\":\n\t\ts.Rss += vUintBytes\n\tcase \"Pss\":\n\t\ts.Pss += vUintBytes\n\tcase \"Shared_Clean\":\n\t\ts.SharedClean += vUintBytes\n\tcase \"Shared_Dirty\":\n\t\ts.SharedDirty += vUintBytes\n\tcase \"Private_Clean\":\n\t\ts.PrivateClean += vUintBytes\n\tcase \"Private_Dirty\":\n\t\ts.PrivateDirty += vUintBytes\n\tcase \"Referenced\":\n\t\ts.Referenced += vUintBytes\n\tcase \"Anonymous\":\n\t\ts.Anonymous += vUintBytes\n\tcase \"Swap\":\n\t\ts.Swap += vUintBytes\n\tcase \"SwapPss\":\n\t\ts.SwapPss += vUintBytes\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/proc_snmp.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage procfs\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/prometheus/procfs/internal/util\"\n)\n\n// ProcSnmp models the content of /proc/<pid>/net/snmp.\ntype ProcSnmp struct {\n\t// The process ID.\n\tPID int\n\tIp\n\tIcmp\n\tIcmpMsg\n\tTcp\n\tUdp\n\tUdpLite\n}\n\ntype Ip struct { // nolint:revive\n\tForwarding      *float64\n\tDefaultTTL      *float64\n\tInReceives      *float64\n\tInHdrErrors     *float64\n\tInAddrErrors    *float64\n\tForwDatagrams   *float64\n\tInUnknownProtos *float64\n\tInDiscards      *float64\n\tInDelivers      *float64\n\tOutRequests     *float64\n\tOutDiscards     *float64\n\tOutNoRoutes     *float64\n\tReasmTimeout    *float64\n\tReasmReqds      *float64\n\tReasmOKs        *float64\n\tReasmFails      *float64\n\tFragOKs         *float64\n\tFragFails       *float64\n\tFragCreates     *float64\n}\n\ntype Icmp struct { // nolint:revive\n\tInMsgs           *float64\n\tInErrors         *float64\n\tInCsumErrors     *float64\n\tInDestUnreachs   *float64\n\tInTimeExcds      *float64\n\tInParmProbs      *float64\n\tInSrcQuenchs     *float64\n\tInRedirects      *float64\n\tInEchos          *float64\n\tInEchoReps       *float64\n\tInTimestamps     *float64\n\tInTimestampReps  *float64\n\tInAddrMasks      *float64\n\tInAddrMaskReps   *float64\n\tOutMsgs          *float64\n\tOutErrors        *float64\n\tOutDestUnreachs  *float64\n\tOutTimeExcds     *float64\n\tOutParmProbs     *float64\n\tOutSrcQuenchs    *float64\n\tOutRedirects     *float64\n\tOutEchos         *float64\n\tOutEchoReps      *float64\n\tOutTimestamps    *float64\n\tOutTimestampReps *float64\n\tOutAddrMasks     *float64\n\tOutAddrMaskReps  *float64\n}\n\ntype IcmpMsg struct {\n\tInType3  *float64\n\tOutType3 *float64\n}\n\ntype Tcp struct { // nolint:revive\n\tRtoAlgorithm *float64\n\tRtoMin       *float64\n\tRtoMax       *float64\n\tMaxConn      *float64\n\tActiveOpens  *float64\n\tPassiveOpens *float64\n\tAttemptFails *float64\n\tEstabResets  *float64\n\tCurrEstab    *float64\n\tInSegs       *float64\n\tOutSegs      *float64\n\tRetransSegs  *float64\n\tInErrs       *float64\n\tOutRsts      *float64\n\tInCsumErrors *float64\n}\n\ntype Udp struct { // nolint:revive\n\tInDatagrams  *float64\n\tNoPorts      *float64\n\tInErrors     *float64\n\tOutDatagrams *float64\n\tRcvbufErrors *float64\n\tSndbufErrors *float64\n\tInCsumErrors *float64\n\tIgnoredMulti *float64\n}\n\ntype UdpLite struct { // nolint:revive\n\tInDatagrams  *float64\n\tNoPorts      *float64\n\tInErrors     *float64\n\tOutDatagrams *float64\n\tRcvbufErrors *float64\n\tSndbufErrors *float64\n\tInCsumErrors *float64\n\tIgnoredMulti *float64\n}\n\nfunc (p Proc) Snmp() (ProcSnmp, error) {\n\tfilename := p.path(\"net/snmp\")\n\tdata, err := util.ReadFileNoStat(filename)\n\tif err != nil {\n\t\treturn ProcSnmp{PID: p.PID}, err\n\t}\n\tprocSnmp, err := parseSnmp(bytes.NewReader(data), filename)\n\tprocSnmp.PID = p.PID\n\treturn procSnmp, err\n}\n\n// parseSnmp parses the metrics from proc/<pid>/net/snmp file\n// and returns a map contains those metrics (e.g. {\"Ip\": {\"Forwarding\": 2}}).\nfunc parseSnmp(r io.Reader, fileName string) (ProcSnmp, error) {\n\tvar (\n\t\tscanner  = bufio.NewScanner(r)\n\t\tprocSnmp = ProcSnmp{}\n\t)\n\n\tfor scanner.Scan() {\n\t\tnameParts := strings.Split(scanner.Text(), \" \")\n\t\tscanner.Scan()\n\t\tvalueParts := strings.Split(scanner.Text(), \" \")\n\t\t// Remove trailing :.\n\t\tprotocol := strings.TrimSuffix(nameParts[0], \":\")\n\t\tif len(nameParts) != len(valueParts) {\n\t\t\treturn procSnmp, fmt.Errorf(\"%w: mismatch field count mismatch in %s: %s\",\n\t\t\t\tErrFileParse, fileName, protocol)\n\t\t}\n\t\tfor i := 1; i < len(nameParts); i++ {\n\t\t\tvalue, err := strconv.ParseFloat(valueParts[i], 64)\n\t\t\tif err != nil {\n\t\t\t\treturn procSnmp, err\n\t\t\t}\n\t\t\tkey := nameParts[i]\n\n\t\t\tswitch protocol {\n\t\t\tcase \"Ip\":\n\t\t\t\tswitch key {\n\t\t\t\tcase \"Forwarding\":\n\t\t\t\t\tprocSnmp.Forwarding = &value\n\t\t\t\tcase \"DefaultTTL\":\n\t\t\t\t\tprocSnmp.DefaultTTL = &value\n\t\t\t\tcase \"InReceives\":\n\t\t\t\t\tprocSnmp.InReceives = &value\n\t\t\t\tcase \"InHdrErrors\":\n\t\t\t\t\tprocSnmp.InHdrErrors = &value\n\t\t\t\tcase \"InAddrErrors\":\n\t\t\t\t\tprocSnmp.InAddrErrors = &value\n\t\t\t\tcase \"ForwDatagrams\":\n\t\t\t\t\tprocSnmp.ForwDatagrams = &value\n\t\t\t\tcase \"InUnknownProtos\":\n\t\t\t\t\tprocSnmp.InUnknownProtos = &value\n\t\t\t\tcase \"InDiscards\":\n\t\t\t\t\tprocSnmp.InDiscards = &value\n\t\t\t\tcase \"InDelivers\":\n\t\t\t\t\tprocSnmp.InDelivers = &value\n\t\t\t\tcase \"OutRequests\":\n\t\t\t\t\tprocSnmp.OutRequests = &value\n\t\t\t\tcase \"OutDiscards\":\n\t\t\t\t\tprocSnmp.OutDiscards = &value\n\t\t\t\tcase \"OutNoRoutes\":\n\t\t\t\t\tprocSnmp.OutNoRoutes = &value\n\t\t\t\tcase \"ReasmTimeout\":\n\t\t\t\t\tprocSnmp.ReasmTimeout = &value\n\t\t\t\tcase \"ReasmReqds\":\n\t\t\t\t\tprocSnmp.ReasmReqds = &value\n\t\t\t\tcase \"ReasmOKs\":\n\t\t\t\t\tprocSnmp.ReasmOKs = &value\n\t\t\t\tcase \"ReasmFails\":\n\t\t\t\t\tprocSnmp.ReasmFails = &value\n\t\t\t\tcase \"FragOKs\":\n\t\t\t\t\tprocSnmp.FragOKs = &value\n\t\t\t\tcase \"FragFails\":\n\t\t\t\t\tprocSnmp.FragFails = &value\n\t\t\t\tcase \"FragCreates\":\n\t\t\t\t\tprocSnmp.FragCreates = &value\n\t\t\t\t}\n\t\t\tcase \"Icmp\":\n\t\t\t\tswitch key {\n\t\t\t\tcase \"InMsgs\":\n\t\t\t\t\tprocSnmp.InMsgs = &value\n\t\t\t\tcase \"InErrors\":\n\t\t\t\t\tprocSnmp.Icmp.InErrors = &value\n\t\t\t\tcase \"InCsumErrors\":\n\t\t\t\t\tprocSnmp.Icmp.InCsumErrors = &value\n\t\t\t\tcase \"InDestUnreachs\":\n\t\t\t\t\tprocSnmp.InDestUnreachs = &value\n\t\t\t\tcase \"InTimeExcds\":\n\t\t\t\t\tprocSnmp.InTimeExcds = &value\n\t\t\t\tcase \"InParmProbs\":\n\t\t\t\t\tprocSnmp.InParmProbs = &value\n\t\t\t\tcase \"InSrcQuenchs\":\n\t\t\t\t\tprocSnmp.InSrcQuenchs = &value\n\t\t\t\tcase \"InRedirects\":\n\t\t\t\t\tprocSnmp.InRedirects = &value\n\t\t\t\tcase \"InEchos\":\n\t\t\t\t\tprocSnmp.InEchos = &value\n\t\t\t\tcase \"InEchoReps\":\n\t\t\t\t\tprocSnmp.InEchoReps = &value\n\t\t\t\tcase \"InTimestamps\":\n\t\t\t\t\tprocSnmp.InTimestamps = &value\n\t\t\t\tcase \"InTimestampReps\":\n\t\t\t\t\tprocSnmp.InTimestampReps = &value\n\t\t\t\tcase \"InAddrMasks\":\n\t\t\t\t\tprocSnmp.InAddrMasks = &value\n\t\t\t\tcase \"InAddrMaskReps\":\n\t\t\t\t\tprocSnmp.InAddrMaskReps = &value\n\t\t\t\tcase \"OutMsgs\":\n\t\t\t\t\tprocSnmp.OutMsgs = &value\n\t\t\t\tcase \"OutErrors\":\n\t\t\t\t\tprocSnmp.OutErrors = &value\n\t\t\t\tcase \"OutDestUnreachs\":\n\t\t\t\t\tprocSnmp.OutDestUnreachs = &value\n\t\t\t\tcase \"OutTimeExcds\":\n\t\t\t\t\tprocSnmp.OutTimeExcds = &value\n\t\t\t\tcase \"OutParmProbs\":\n\t\t\t\t\tprocSnmp.OutParmProbs = &value\n\t\t\t\tcase \"OutSrcQuenchs\":\n\t\t\t\t\tprocSnmp.OutSrcQuenchs = &value\n\t\t\t\tcase \"OutRedirects\":\n\t\t\t\t\tprocSnmp.OutRedirects = &value\n\t\t\t\tcase \"OutEchos\":\n\t\t\t\t\tprocSnmp.OutEchos = &value\n\t\t\t\tcase \"OutEchoReps\":\n\t\t\t\t\tprocSnmp.OutEchoReps = &value\n\t\t\t\tcase \"OutTimestamps\":\n\t\t\t\t\tprocSnmp.OutTimestamps = &value\n\t\t\t\tcase \"OutTimestampReps\":\n\t\t\t\t\tprocSnmp.OutTimestampReps = &value\n\t\t\t\tcase \"OutAddrMasks\":\n\t\t\t\t\tprocSnmp.OutAddrMasks = &value\n\t\t\t\tcase \"OutAddrMaskReps\":\n\t\t\t\t\tprocSnmp.OutAddrMaskReps = &value\n\t\t\t\t}\n\t\t\tcase \"IcmpMsg\":\n\t\t\t\tswitch key {\n\t\t\t\tcase \"InType3\":\n\t\t\t\t\tprocSnmp.InType3 = &value\n\t\t\t\tcase \"OutType3\":\n\t\t\t\t\tprocSnmp.OutType3 = &value\n\t\t\t\t}\n\t\t\tcase \"Tcp\":\n\t\t\t\tswitch key {\n\t\t\t\tcase \"RtoAlgorithm\":\n\t\t\t\t\tprocSnmp.RtoAlgorithm = &value\n\t\t\t\tcase \"RtoMin\":\n\t\t\t\t\tprocSnmp.RtoMin = &value\n\t\t\t\tcase \"RtoMax\":\n\t\t\t\t\tprocSnmp.RtoMax = &value\n\t\t\t\tcase \"MaxConn\":\n\t\t\t\t\tprocSnmp.MaxConn = &value\n\t\t\t\tcase \"ActiveOpens\":\n\t\t\t\t\tprocSnmp.ActiveOpens = &value\n\t\t\t\tcase \"PassiveOpens\":\n\t\t\t\t\tprocSnmp.PassiveOpens = &value\n\t\t\t\tcase \"AttemptFails\":\n\t\t\t\t\tprocSnmp.AttemptFails = &value\n\t\t\t\tcase \"EstabResets\":\n\t\t\t\t\tprocSnmp.EstabResets = &value\n\t\t\t\tcase \"CurrEstab\":\n\t\t\t\t\tprocSnmp.CurrEstab = &value\n\t\t\t\tcase \"InSegs\":\n\t\t\t\t\tprocSnmp.InSegs = &value\n\t\t\t\tcase \"OutSegs\":\n\t\t\t\t\tprocSnmp.OutSegs = &value\n\t\t\t\tcase \"RetransSegs\":\n\t\t\t\t\tprocSnmp.RetransSegs = &value\n\t\t\t\tcase \"InErrs\":\n\t\t\t\t\tprocSnmp.InErrs = &value\n\t\t\t\tcase \"OutRsts\":\n\t\t\t\t\tprocSnmp.OutRsts = &value\n\t\t\t\tcase \"InCsumErrors\":\n\t\t\t\t\tprocSnmp.Tcp.InCsumErrors = &value\n\t\t\t\t}\n\t\t\tcase \"Udp\":\n\t\t\t\tswitch key {\n\t\t\t\tcase \"InDatagrams\":\n\t\t\t\t\tprocSnmp.Udp.InDatagrams = &value\n\t\t\t\tcase \"NoPorts\":\n\t\t\t\t\tprocSnmp.Udp.NoPorts = &value\n\t\t\t\tcase \"InErrors\":\n\t\t\t\t\tprocSnmp.Udp.InErrors = &value\n\t\t\t\tcase \"OutDatagrams\":\n\t\t\t\t\tprocSnmp.Udp.OutDatagrams = &value\n\t\t\t\tcase \"RcvbufErrors\":\n\t\t\t\t\tprocSnmp.Udp.RcvbufErrors = &value\n\t\t\t\tcase \"SndbufErrors\":\n\t\t\t\t\tprocSnmp.Udp.SndbufErrors = &value\n\t\t\t\tcase \"InCsumErrors\":\n\t\t\t\t\tprocSnmp.Udp.InCsumErrors = &value\n\t\t\t\tcase \"IgnoredMulti\":\n\t\t\t\t\tprocSnmp.Udp.IgnoredMulti = &value\n\t\t\t\t}\n\t\t\tcase \"UdpLite\":\n\t\t\t\tswitch key {\n\t\t\t\tcase \"InDatagrams\":\n\t\t\t\t\tprocSnmp.UdpLite.InDatagrams = &value\n\t\t\t\tcase \"NoPorts\":\n\t\t\t\t\tprocSnmp.UdpLite.NoPorts = &value\n\t\t\t\tcase \"InErrors\":\n\t\t\t\t\tprocSnmp.UdpLite.InErrors = &value\n\t\t\t\tcase \"OutDatagrams\":\n\t\t\t\t\tprocSnmp.UdpLite.OutDatagrams = &value\n\t\t\t\tcase \"RcvbufErrors\":\n\t\t\t\t\tprocSnmp.UdpLite.RcvbufErrors = &value\n\t\t\t\tcase \"SndbufErrors\":\n\t\t\t\t\tprocSnmp.UdpLite.SndbufErrors = &value\n\t\t\t\tcase \"InCsumErrors\":\n\t\t\t\t\tprocSnmp.UdpLite.InCsumErrors = &value\n\t\t\t\tcase \"IgnoredMulti\":\n\t\t\t\t\tprocSnmp.UdpLite.IgnoredMulti = &value\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn procSnmp, scanner.Err()\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/proc_snmp6.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage procfs\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"errors\"\n\t\"io\"\n\t\"os\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/prometheus/procfs/internal/util\"\n)\n\n// ProcSnmp6 models the content of /proc/<pid>/net/snmp6.\ntype ProcSnmp6 struct {\n\t// The process ID.\n\tPID int\n\tIp6\n\tIcmp6\n\tUdp6\n\tUdpLite6\n}\n\ntype Ip6 struct { // nolint:revive\n\tInReceives       *float64\n\tInHdrErrors      *float64\n\tInTooBigErrors   *float64\n\tInNoRoutes       *float64\n\tInAddrErrors     *float64\n\tInUnknownProtos  *float64\n\tInTruncatedPkts  *float64\n\tInDiscards       *float64\n\tInDelivers       *float64\n\tOutForwDatagrams *float64\n\tOutRequests      *float64\n\tOutDiscards      *float64\n\tOutNoRoutes      *float64\n\tReasmTimeout     *float64\n\tReasmReqds       *float64\n\tReasmOKs         *float64\n\tReasmFails       *float64\n\tFragOKs          *float64\n\tFragFails        *float64\n\tFragCreates      *float64\n\tInMcastPkts      *float64\n\tOutMcastPkts     *float64\n\tInOctets         *float64\n\tOutOctets        *float64\n\tInMcastOctets    *float64\n\tOutMcastOctets   *float64\n\tInBcastOctets    *float64\n\tOutBcastOctets   *float64\n\tInNoECTPkts      *float64\n\tInECT1Pkts       *float64\n\tInECT0Pkts       *float64\n\tInCEPkts         *float64\n}\n\ntype Icmp6 struct {\n\tInMsgs                    *float64\n\tInErrors                  *float64\n\tOutMsgs                   *float64\n\tOutErrors                 *float64\n\tInCsumErrors              *float64\n\tInDestUnreachs            *float64\n\tInPktTooBigs              *float64\n\tInTimeExcds               *float64\n\tInParmProblems            *float64\n\tInEchos                   *float64\n\tInEchoReplies             *float64\n\tInGroupMembQueries        *float64\n\tInGroupMembResponses      *float64\n\tInGroupMembReductions     *float64\n\tInRouterSolicits          *float64\n\tInRouterAdvertisements    *float64\n\tInNeighborSolicits        *float64\n\tInNeighborAdvertisements  *float64\n\tInRedirects               *float64\n\tInMLDv2Reports            *float64\n\tOutDestUnreachs           *float64\n\tOutPktTooBigs             *float64\n\tOutTimeExcds              *float64\n\tOutParmProblems           *float64\n\tOutEchos                  *float64\n\tOutEchoReplies            *float64\n\tOutGroupMembQueries       *float64\n\tOutGroupMembResponses     *float64\n\tOutGroupMembReductions    *float64\n\tOutRouterSolicits         *float64\n\tOutRouterAdvertisements   *float64\n\tOutNeighborSolicits       *float64\n\tOutNeighborAdvertisements *float64\n\tOutRedirects              *float64\n\tOutMLDv2Reports           *float64\n\tInType1                   *float64\n\tInType134                 *float64\n\tInType135                 *float64\n\tInType136                 *float64\n\tInType143                 *float64\n\tOutType133                *float64\n\tOutType135                *float64\n\tOutType136                *float64\n\tOutType143                *float64\n}\n\ntype Udp6 struct { // nolint:revive\n\tInDatagrams  *float64\n\tNoPorts      *float64\n\tInErrors     *float64\n\tOutDatagrams *float64\n\tRcvbufErrors *float64\n\tSndbufErrors *float64\n\tInCsumErrors *float64\n\tIgnoredMulti *float64\n}\n\ntype UdpLite6 struct { // nolint:revive\n\tInDatagrams  *float64\n\tNoPorts      *float64\n\tInErrors     *float64\n\tOutDatagrams *float64\n\tRcvbufErrors *float64\n\tSndbufErrors *float64\n\tInCsumErrors *float64\n}\n\nfunc (p Proc) Snmp6() (ProcSnmp6, error) {\n\tfilename := p.path(\"net/snmp6\")\n\tdata, err := util.ReadFileNoStat(filename)\n\tif err != nil {\n\t\t// On systems with IPv6 disabled, this file won't exist.\n\t\t// Do nothing.\n\t\tif errors.Is(err, os.ErrNotExist) {\n\t\t\treturn ProcSnmp6{PID: p.PID}, nil\n\t\t}\n\n\t\treturn ProcSnmp6{PID: p.PID}, err\n\t}\n\n\tprocSnmp6, err := parseSNMP6Stats(bytes.NewReader(data))\n\tprocSnmp6.PID = p.PID\n\treturn procSnmp6, err\n}\n\n// parseSnmp6 parses the metrics from proc/<pid>/net/snmp6 file\n// and returns a map contains those metrics.\nfunc parseSNMP6Stats(r io.Reader) (ProcSnmp6, error) {\n\tvar (\n\t\tscanner   = bufio.NewScanner(r)\n\t\tprocSnmp6 = ProcSnmp6{}\n\t)\n\n\tfor scanner.Scan() {\n\t\tstat := strings.Fields(scanner.Text())\n\t\tif len(stat) < 2 {\n\t\t\tcontinue\n\t\t}\n\t\t// Expect to have \"6\" in metric name, skip line otherwise\n\t\tif sixIndex := strings.Index(stat[0], \"6\"); sixIndex != -1 {\n\t\t\tprotocol := stat[0][:sixIndex+1]\n\t\t\tkey := stat[0][sixIndex+1:]\n\t\t\tvalue, err := strconv.ParseFloat(stat[1], 64)\n\t\t\tif err != nil {\n\t\t\t\treturn procSnmp6, err\n\t\t\t}\n\n\t\t\tswitch protocol {\n\t\t\tcase \"Ip6\":\n\t\t\t\tswitch key {\n\t\t\t\tcase \"InReceives\":\n\t\t\t\t\tprocSnmp6.InReceives = &value\n\t\t\t\tcase \"InHdrErrors\":\n\t\t\t\t\tprocSnmp6.InHdrErrors = &value\n\t\t\t\tcase \"InTooBigErrors\":\n\t\t\t\t\tprocSnmp6.InTooBigErrors = &value\n\t\t\t\tcase \"InNoRoutes\":\n\t\t\t\t\tprocSnmp6.InNoRoutes = &value\n\t\t\t\tcase \"InAddrErrors\":\n\t\t\t\t\tprocSnmp6.InAddrErrors = &value\n\t\t\t\tcase \"InUnknownProtos\":\n\t\t\t\t\tprocSnmp6.InUnknownProtos = &value\n\t\t\t\tcase \"InTruncatedPkts\":\n\t\t\t\t\tprocSnmp6.InTruncatedPkts = &value\n\t\t\t\tcase \"InDiscards\":\n\t\t\t\t\tprocSnmp6.InDiscards = &value\n\t\t\t\tcase \"InDelivers\":\n\t\t\t\t\tprocSnmp6.InDelivers = &value\n\t\t\t\tcase \"OutForwDatagrams\":\n\t\t\t\t\tprocSnmp6.OutForwDatagrams = &value\n\t\t\t\tcase \"OutRequests\":\n\t\t\t\t\tprocSnmp6.OutRequests = &value\n\t\t\t\tcase \"OutDiscards\":\n\t\t\t\t\tprocSnmp6.OutDiscards = &value\n\t\t\t\tcase \"OutNoRoutes\":\n\t\t\t\t\tprocSnmp6.OutNoRoutes = &value\n\t\t\t\tcase \"ReasmTimeout\":\n\t\t\t\t\tprocSnmp6.ReasmTimeout = &value\n\t\t\t\tcase \"ReasmReqds\":\n\t\t\t\t\tprocSnmp6.ReasmReqds = &value\n\t\t\t\tcase \"ReasmOKs\":\n\t\t\t\t\tprocSnmp6.ReasmOKs = &value\n\t\t\t\tcase \"ReasmFails\":\n\t\t\t\t\tprocSnmp6.ReasmFails = &value\n\t\t\t\tcase \"FragOKs\":\n\t\t\t\t\tprocSnmp6.FragOKs = &value\n\t\t\t\tcase \"FragFails\":\n\t\t\t\t\tprocSnmp6.FragFails = &value\n\t\t\t\tcase \"FragCreates\":\n\t\t\t\t\tprocSnmp6.FragCreates = &value\n\t\t\t\tcase \"InMcastPkts\":\n\t\t\t\t\tprocSnmp6.InMcastPkts = &value\n\t\t\t\tcase \"OutMcastPkts\":\n\t\t\t\t\tprocSnmp6.OutMcastPkts = &value\n\t\t\t\tcase \"InOctets\":\n\t\t\t\t\tprocSnmp6.InOctets = &value\n\t\t\t\tcase \"OutOctets\":\n\t\t\t\t\tprocSnmp6.OutOctets = &value\n\t\t\t\tcase \"InMcastOctets\":\n\t\t\t\t\tprocSnmp6.InMcastOctets = &value\n\t\t\t\tcase \"OutMcastOctets\":\n\t\t\t\t\tprocSnmp6.OutMcastOctets = &value\n\t\t\t\tcase \"InBcastOctets\":\n\t\t\t\t\tprocSnmp6.InBcastOctets = &value\n\t\t\t\tcase \"OutBcastOctets\":\n\t\t\t\t\tprocSnmp6.OutBcastOctets = &value\n\t\t\t\tcase \"InNoECTPkts\":\n\t\t\t\t\tprocSnmp6.InNoECTPkts = &value\n\t\t\t\tcase \"InECT1Pkts\":\n\t\t\t\t\tprocSnmp6.InECT1Pkts = &value\n\t\t\t\tcase \"InECT0Pkts\":\n\t\t\t\t\tprocSnmp6.InECT0Pkts = &value\n\t\t\t\tcase \"InCEPkts\":\n\t\t\t\t\tprocSnmp6.InCEPkts = &value\n\n\t\t\t\t}\n\t\t\tcase \"Icmp6\":\n\t\t\t\tswitch key {\n\t\t\t\tcase \"InMsgs\":\n\t\t\t\t\tprocSnmp6.InMsgs = &value\n\t\t\t\tcase \"InErrors\":\n\t\t\t\t\tprocSnmp6.Icmp6.InErrors = &value\n\t\t\t\tcase \"OutMsgs\":\n\t\t\t\t\tprocSnmp6.OutMsgs = &value\n\t\t\t\tcase \"OutErrors\":\n\t\t\t\t\tprocSnmp6.OutErrors = &value\n\t\t\t\tcase \"InCsumErrors\":\n\t\t\t\t\tprocSnmp6.Icmp6.InCsumErrors = &value\n\t\t\t\tcase \"InDestUnreachs\":\n\t\t\t\t\tprocSnmp6.InDestUnreachs = &value\n\t\t\t\tcase \"InPktTooBigs\":\n\t\t\t\t\tprocSnmp6.InPktTooBigs = &value\n\t\t\t\tcase \"InTimeExcds\":\n\t\t\t\t\tprocSnmp6.InTimeExcds = &value\n\t\t\t\tcase \"InParmProblems\":\n\t\t\t\t\tprocSnmp6.InParmProblems = &value\n\t\t\t\tcase \"InEchos\":\n\t\t\t\t\tprocSnmp6.InEchos = &value\n\t\t\t\tcase \"InEchoReplies\":\n\t\t\t\t\tprocSnmp6.InEchoReplies = &value\n\t\t\t\tcase \"InGroupMembQueries\":\n\t\t\t\t\tprocSnmp6.InGroupMembQueries = &value\n\t\t\t\tcase \"InGroupMembResponses\":\n\t\t\t\t\tprocSnmp6.InGroupMembResponses = &value\n\t\t\t\tcase \"InGroupMembReductions\":\n\t\t\t\t\tprocSnmp6.InGroupMembReductions = &value\n\t\t\t\tcase \"InRouterSolicits\":\n\t\t\t\t\tprocSnmp6.InRouterSolicits = &value\n\t\t\t\tcase \"InRouterAdvertisements\":\n\t\t\t\t\tprocSnmp6.InRouterAdvertisements = &value\n\t\t\t\tcase \"InNeighborSolicits\":\n\t\t\t\t\tprocSnmp6.InNeighborSolicits = &value\n\t\t\t\tcase \"InNeighborAdvertisements\":\n\t\t\t\t\tprocSnmp6.InNeighborAdvertisements = &value\n\t\t\t\tcase \"InRedirects\":\n\t\t\t\t\tprocSnmp6.InRedirects = &value\n\t\t\t\tcase \"InMLDv2Reports\":\n\t\t\t\t\tprocSnmp6.InMLDv2Reports = &value\n\t\t\t\tcase \"OutDestUnreachs\":\n\t\t\t\t\tprocSnmp6.OutDestUnreachs = &value\n\t\t\t\tcase \"OutPktTooBigs\":\n\t\t\t\t\tprocSnmp6.OutPktTooBigs = &value\n\t\t\t\tcase \"OutTimeExcds\":\n\t\t\t\t\tprocSnmp6.OutTimeExcds = &value\n\t\t\t\tcase \"OutParmProblems\":\n\t\t\t\t\tprocSnmp6.OutParmProblems = &value\n\t\t\t\tcase \"OutEchos\":\n\t\t\t\t\tprocSnmp6.OutEchos = &value\n\t\t\t\tcase \"OutEchoReplies\":\n\t\t\t\t\tprocSnmp6.OutEchoReplies = &value\n\t\t\t\tcase \"OutGroupMembQueries\":\n\t\t\t\t\tprocSnmp6.OutGroupMembQueries = &value\n\t\t\t\tcase \"OutGroupMembResponses\":\n\t\t\t\t\tprocSnmp6.OutGroupMembResponses = &value\n\t\t\t\tcase \"OutGroupMembReductions\":\n\t\t\t\t\tprocSnmp6.OutGroupMembReductions = &value\n\t\t\t\tcase \"OutRouterSolicits\":\n\t\t\t\t\tprocSnmp6.OutRouterSolicits = &value\n\t\t\t\tcase \"OutRouterAdvertisements\":\n\t\t\t\t\tprocSnmp6.OutRouterAdvertisements = &value\n\t\t\t\tcase \"OutNeighborSolicits\":\n\t\t\t\t\tprocSnmp6.OutNeighborSolicits = &value\n\t\t\t\tcase \"OutNeighborAdvertisements\":\n\t\t\t\t\tprocSnmp6.OutNeighborAdvertisements = &value\n\t\t\t\tcase \"OutRedirects\":\n\t\t\t\t\tprocSnmp6.OutRedirects = &value\n\t\t\t\tcase \"OutMLDv2Reports\":\n\t\t\t\t\tprocSnmp6.OutMLDv2Reports = &value\n\t\t\t\tcase \"InType1\":\n\t\t\t\t\tprocSnmp6.InType1 = &value\n\t\t\t\tcase \"InType134\":\n\t\t\t\t\tprocSnmp6.InType134 = &value\n\t\t\t\tcase \"InType135\":\n\t\t\t\t\tprocSnmp6.InType135 = &value\n\t\t\t\tcase \"InType136\":\n\t\t\t\t\tprocSnmp6.InType136 = &value\n\t\t\t\tcase \"InType143\":\n\t\t\t\t\tprocSnmp6.InType143 = &value\n\t\t\t\tcase \"OutType133\":\n\t\t\t\t\tprocSnmp6.OutType133 = &value\n\t\t\t\tcase \"OutType135\":\n\t\t\t\t\tprocSnmp6.OutType135 = &value\n\t\t\t\tcase \"OutType136\":\n\t\t\t\t\tprocSnmp6.OutType136 = &value\n\t\t\t\tcase \"OutType143\":\n\t\t\t\t\tprocSnmp6.OutType143 = &value\n\t\t\t\t}\n\t\t\tcase \"Udp6\":\n\t\t\t\tswitch key {\n\t\t\t\tcase \"InDatagrams\":\n\t\t\t\t\tprocSnmp6.Udp6.InDatagrams = &value\n\t\t\t\tcase \"NoPorts\":\n\t\t\t\t\tprocSnmp6.Udp6.NoPorts = &value\n\t\t\t\tcase \"InErrors\":\n\t\t\t\t\tprocSnmp6.Udp6.InErrors = &value\n\t\t\t\tcase \"OutDatagrams\":\n\t\t\t\t\tprocSnmp6.Udp6.OutDatagrams = &value\n\t\t\t\tcase \"RcvbufErrors\":\n\t\t\t\t\tprocSnmp6.Udp6.RcvbufErrors = &value\n\t\t\t\tcase \"SndbufErrors\":\n\t\t\t\t\tprocSnmp6.Udp6.SndbufErrors = &value\n\t\t\t\tcase \"InCsumErrors\":\n\t\t\t\t\tprocSnmp6.Udp6.InCsumErrors = &value\n\t\t\t\tcase \"IgnoredMulti\":\n\t\t\t\t\tprocSnmp6.IgnoredMulti = &value\n\t\t\t\t}\n\t\t\tcase \"UdpLite6\":\n\t\t\t\tswitch key {\n\t\t\t\tcase \"InDatagrams\":\n\t\t\t\t\tprocSnmp6.UdpLite6.InDatagrams = &value\n\t\t\t\tcase \"NoPorts\":\n\t\t\t\t\tprocSnmp6.UdpLite6.NoPorts = &value\n\t\t\t\tcase \"InErrors\":\n\t\t\t\t\tprocSnmp6.UdpLite6.InErrors = &value\n\t\t\t\tcase \"OutDatagrams\":\n\t\t\t\t\tprocSnmp6.UdpLite6.OutDatagrams = &value\n\t\t\t\tcase \"RcvbufErrors\":\n\t\t\t\t\tprocSnmp6.UdpLite6.RcvbufErrors = &value\n\t\t\t\tcase \"SndbufErrors\":\n\t\t\t\t\tprocSnmp6.UdpLite6.SndbufErrors = &value\n\t\t\t\tcase \"InCsumErrors\":\n\t\t\t\t\tprocSnmp6.UdpLite6.InCsumErrors = &value\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn procSnmp6, scanner.Err()\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/proc_stat.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage procfs\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"os\"\n\n\t\"github.com/prometheus/procfs/internal/util\"\n)\n\n// Originally, this USER_HZ value was dynamically retrieved via a sysconf call\n// which required cgo. However, that caused a lot of problems regarding\n// cross-compilation. Alternatives such as running a binary to determine the\n// value, or trying to derive it in some other way were all problematic.  After\n// much research it was determined that USER_HZ is actually hardcoded to 100 on\n// all Go-supported platforms as of the time of this writing. This is why we\n// decided to hardcode it here as well. It is not impossible that there could\n// be systems with exceptions, but they should be very exotic edge cases, and\n// in that case, the worst outcome will be two misreported metrics.\n//\n// See also the following discussions:\n//\n// - https://github.com/prometheus/node_exporter/issues/52\n// - https://github.com/prometheus/procfs/pull/2\n// - http://stackoverflow.com/questions/17410841/how-does-user-hz-solve-the-jiffy-scaling-issue\nconst userHZ = 100\n\n// ProcStat provides status information about the process,\n// read from /proc/[pid]/stat.\ntype ProcStat struct {\n\t// The process ID.\n\tPID int\n\t// The filename of the executable.\n\tComm string\n\t// The process state.\n\tState string\n\t// The PID of the parent of this process.\n\tPPID int\n\t// The process group ID of the process.\n\tPGRP int\n\t// The session ID of the process.\n\tSession int\n\t// The controlling terminal of the process.\n\tTTY int\n\t// The ID of the foreground process group of the controlling terminal of\n\t// the process.\n\tTPGID int\n\t// The kernel flags word of the process.\n\tFlags uint\n\t// The number of minor faults the process has made which have not required\n\t// loading a memory page from disk.\n\tMinFlt uint\n\t// The number of minor faults that the process's waited-for children have\n\t// made.\n\tCMinFlt uint\n\t// The number of major faults the process has made which have required\n\t// loading a memory page from disk.\n\tMajFlt uint\n\t// The number of major faults that the process's waited-for children have\n\t// made.\n\tCMajFlt uint\n\t// Amount of time that this process has been scheduled in user mode,\n\t// measured in clock ticks.\n\tUTime uint\n\t// Amount of time that this process has been scheduled in kernel mode,\n\t// measured in clock ticks.\n\tSTime uint\n\t// Amount of time that this process's waited-for children have been\n\t// scheduled in user mode, measured in clock ticks.\n\tCUTime int\n\t// Amount of time that this process's waited-for children have been\n\t// scheduled in kernel mode, measured in clock ticks.\n\tCSTime int\n\t// For processes running a real-time scheduling policy, this is the negated\n\t// scheduling priority, minus one.\n\tPriority int\n\t// The nice value, a value in the range 19 (low priority) to -20 (high\n\t// priority).\n\tNice int\n\t// Number of threads in this process.\n\tNumThreads int\n\t// The time the process started after system boot, the value is expressed\n\t// in clock ticks.\n\tStarttime uint64\n\t// Virtual memory size in bytes.\n\tVSize uint\n\t// Resident set size in pages.\n\tRSS int\n\t// Soft limit in bytes on the rss of the process.\n\tRSSLimit uint64\n\t// The address above which program text can run.\n\tStartCode uint64\n\t// The address below which program text can run.\n\tEndCode uint64\n\t// The address of the start (i.e., bottom) of the stack.\n\tStartStack uint64\n\t// CPU number last executed on.\n\tProcessor uint\n\t// Real-time scheduling priority, a number in the range 1 to 99 for processes\n\t// scheduled under a real-time policy, or 0, for non-real-time processes.\n\tRTPriority uint\n\t// Scheduling policy.\n\tPolicy uint\n\t// Aggregated block I/O delays, measured in clock ticks (centiseconds).\n\tDelayAcctBlkIOTicks uint64\n\t// Guest time of the process (time spent running a virtual CPU for a guest\n\t// operating system), measured in clock ticks.\n\tGuestTime int\n\t// Guest time of the process's children, measured in clock ticks.\n\tCGuestTime int\n\n\tproc FS\n}\n\n// NewStat returns the current status information of the process.\n//\n// Deprecated: Use p.Stat() instead.\nfunc (p Proc) NewStat() (ProcStat, error) {\n\treturn p.Stat()\n}\n\n// Stat returns the current status information of the process.\nfunc (p Proc) Stat() (ProcStat, error) {\n\tdata, err := util.ReadFileNoStat(p.path(\"stat\"))\n\tif err != nil {\n\t\treturn ProcStat{}, err\n\t}\n\n\tvar (\n\t\tignoreInt64  int64\n\t\tignoreUint64 uint64\n\n\t\ts = ProcStat{PID: p.PID, proc: p.fs}\n\t\tl = bytes.Index(data, []byte(\"(\"))\n\t\tr = bytes.LastIndex(data, []byte(\")\"))\n\t)\n\n\tif l < 0 || r < 0 {\n\t\treturn ProcStat{}, fmt.Errorf(\"%w: unexpected format, couldn't extract comm %q\", ErrFileParse, data)\n\t}\n\n\ts.Comm = string(data[l+1 : r])\n\n\t// Check the following resources for the details about the particular stat\n\t// fields and their data types:\n\t// * https://man7.org/linux/man-pages/man5/proc.5.html\n\t// * https://man7.org/linux/man-pages/man3/scanf.3.html\n\t_, err = fmt.Fscan(\n\t\tbytes.NewBuffer(data[r+2:]),\n\t\t&s.State,\n\t\t&s.PPID,\n\t\t&s.PGRP,\n\t\t&s.Session,\n\t\t&s.TTY,\n\t\t&s.TPGID,\n\t\t&s.Flags,\n\t\t&s.MinFlt,\n\t\t&s.CMinFlt,\n\t\t&s.MajFlt,\n\t\t&s.CMajFlt,\n\t\t&s.UTime,\n\t\t&s.STime,\n\t\t&s.CUTime,\n\t\t&s.CSTime,\n\t\t&s.Priority,\n\t\t&s.Nice,\n\t\t&s.NumThreads,\n\t\t&ignoreInt64,\n\t\t&s.Starttime,\n\t\t&s.VSize,\n\t\t&s.RSS,\n\t\t&s.RSSLimit,\n\t\t&s.StartCode,\n\t\t&s.EndCode,\n\t\t&s.StartStack,\n\t\t&ignoreUint64,\n\t\t&ignoreUint64,\n\t\t&ignoreUint64,\n\t\t&ignoreUint64,\n\t\t&ignoreUint64,\n\t\t&ignoreUint64,\n\t\t&ignoreUint64,\n\t\t&ignoreUint64,\n\t\t&ignoreUint64,\n\t\t&ignoreInt64,\n\t\t&s.Processor,\n\t\t&s.RTPriority,\n\t\t&s.Policy,\n\t\t&s.DelayAcctBlkIOTicks,\n\t\t&s.GuestTime,\n\t\t&s.CGuestTime,\n\t)\n\tif err != nil {\n\t\treturn ProcStat{}, err\n\t}\n\n\treturn s, nil\n}\n\n// VirtualMemory returns the virtual memory size in bytes.\nfunc (s ProcStat) VirtualMemory() uint {\n\treturn s.VSize\n}\n\n// ResidentMemory returns the resident memory size in bytes.\nfunc (s ProcStat) ResidentMemory() int {\n\treturn s.RSS * os.Getpagesize()\n}\n\n// StartTime returns the unix timestamp of the process in seconds.\nfunc (s ProcStat) StartTime() (float64, error) {\n\tstat, err := s.proc.Stat()\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\treturn float64(stat.BootTime) + (float64(s.Starttime) / userHZ), nil\n}\n\n// CPUTime returns the total CPU user and system time in seconds.\nfunc (s ProcStat) CPUTime() float64 {\n\treturn float64(s.UTime+s.STime) / userHZ\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/proc_statm.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage procfs\n\nimport (\n\t\"os\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/prometheus/procfs/internal/util\"\n)\n\n// - https://man7.org/linux/man-pages/man5/proc_pid_statm.5.html\n\n// ProcStatm Provides memory usage information for a process, measured in memory pages.\n// Read from /proc/[pid]/statm.\ntype ProcStatm struct {\n\t// The process ID.\n\tPID int\n\t// total program size (same as VmSize in status)\n\tSize uint64\n\t// resident set size (same as VmRSS in status)\n\tResident uint64\n\t// number of resident shared pages (i.e., backed by a file)\n\tShared uint64\n\t// text (code)\n\tText uint64\n\t// library (unused since Linux 2.6; always 0)\n\tLib uint64\n\t// data + stack\n\tData uint64\n\t// dirty pages (unused since Linux 2.6; always 0)\n\tDt uint64\n}\n\n// NewStatm returns the current status information of the process.\n// Deprecated: Use p.Statm() instead.\nfunc (p Proc) NewStatm() (ProcStatm, error) {\n\treturn p.Statm()\n}\n\n// Statm returns the current memory usage information of the process.\nfunc (p Proc) Statm() (ProcStatm, error) {\n\tdata, err := util.ReadFileNoStat(p.path(\"statm\"))\n\tif err != nil {\n\t\treturn ProcStatm{}, err\n\t}\n\n\tstatmSlice, err := parseStatm(data)\n\tif err != nil {\n\t\treturn ProcStatm{}, err\n\t}\n\n\tprocStatm := ProcStatm{\n\t\tPID:      p.PID,\n\t\tSize:     statmSlice[0],\n\t\tResident: statmSlice[1],\n\t\tShared:   statmSlice[2],\n\t\tText:     statmSlice[3],\n\t\tLib:      statmSlice[4],\n\t\tData:     statmSlice[5],\n\t\tDt:       statmSlice[6],\n\t}\n\n\treturn procStatm, nil\n}\n\n// parseStatm return /proc/[pid]/statm data to uint64 slice.\nfunc parseStatm(data []byte) ([]uint64, error) {\n\tvar statmSlice []uint64\n\tstatmItems := strings.Fields(string(data))\n\tfor i := range statmItems {\n\t\tstatmItem, err := strconv.ParseUint(statmItems[i], 10, 64)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tstatmSlice = append(statmSlice, statmItem)\n\t}\n\treturn statmSlice, nil\n}\n\n// SizeBytes returns the process of total program size in bytes.\nfunc (s ProcStatm) SizeBytes() uint64 {\n\treturn s.Size * uint64(os.Getpagesize())\n}\n\n// ResidentBytes returns the process of resident set size in bytes.\nfunc (s ProcStatm) ResidentBytes() uint64 {\n\treturn s.Resident * uint64(os.Getpagesize())\n}\n\n// SHRBytes returns the process of share memory size in bytes.\nfunc (s ProcStatm) SHRBytes() uint64 {\n\treturn s.Shared * uint64(os.Getpagesize())\n}\n\n// TextBytes returns the process of text (code) size in bytes.\nfunc (s ProcStatm) TextBytes() uint64 {\n\treturn s.Text * uint64(os.Getpagesize())\n}\n\n// DataBytes returns the process of data + stack size in bytes.\nfunc (s ProcStatm) DataBytes() uint64 {\n\treturn s.Data * uint64(os.Getpagesize())\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/proc_status.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage procfs\n\nimport (\n\t\"bytes\"\n\t\"math/bits\"\n\t\"slices\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/prometheus/procfs/internal/util\"\n)\n\n// ProcStatus provides status information about the process,\n// read from /proc/[pid]/status.\ntype ProcStatus struct {\n\t// The process ID.\n\tPID int\n\t// The process name.\n\tName string\n\n\t// Thread group ID.\n\tTGID int\n\t// List of Pid namespace.\n\tNSpids []uint64\n\n\t// Peak virtual memory size.\n\tVmPeak uint64 // nolint:revive\n\t// Virtual memory size.\n\tVmSize uint64 // nolint:revive\n\t// Locked memory size.\n\tVmLck uint64 // nolint:revive\n\t// Pinned memory size.\n\tVmPin uint64 // nolint:revive\n\t// Peak resident set size.\n\tVmHWM uint64 // nolint:revive\n\t// Resident set size (sum of RssAnnon RssFile and RssShmem).\n\tVmRSS uint64 // nolint:revive\n\t// Size of resident anonymous memory.\n\tRssAnon uint64 // nolint:revive\n\t// Size of resident file mappings.\n\tRssFile uint64 // nolint:revive\n\t// Size of resident shared memory.\n\tRssShmem uint64 // nolint:revive\n\t// Size of data segments.\n\tVmData uint64 // nolint:revive\n\t// Size of stack segments.\n\tVmStk uint64 // nolint:revive\n\t// Size of text segments.\n\tVmExe uint64 // nolint:revive\n\t// Shared library code size.\n\tVmLib uint64 // nolint:revive\n\t// Page table entries size.\n\tVmPTE uint64 // nolint:revive\n\t// Size of second-level page tables.\n\tVmPMD uint64 // nolint:revive\n\t// Swapped-out virtual memory size by anonymous private.\n\tVmSwap uint64 // nolint:revive\n\t// Size of hugetlb memory portions\n\tHugetlbPages uint64\n\n\t// Number of voluntary context switches.\n\tVoluntaryCtxtSwitches uint64\n\t// Number of involuntary context switches.\n\tNonVoluntaryCtxtSwitches uint64\n\n\t// UIDs of the process (Real, effective, saved set, and filesystem UIDs)\n\tUIDs [4]uint64\n\t// GIDs of the process (Real, effective, saved set, and filesystem GIDs)\n\tGIDs [4]uint64\n\n\t// CpusAllowedList: List of cpu cores processes are allowed to run on.\n\tCpusAllowedList []uint64\n}\n\n// NewStatus returns the current status information of the process.\nfunc (p Proc) NewStatus() (ProcStatus, error) {\n\tdata, err := util.ReadFileNoStat(p.path(\"status\"))\n\tif err != nil {\n\t\treturn ProcStatus{}, err\n\t}\n\n\ts := ProcStatus{PID: p.PID}\n\n\tfor line := range strings.SplitSeq(string(data), \"\\n\") {\n\t\tif !bytes.Contains([]byte(line), []byte(\":\")) {\n\t\t\tcontinue\n\t\t}\n\n\t\tkv := strings.SplitN(line, \":\", 2)\n\n\t\t// removes spaces\n\t\tk := strings.TrimSpace(kv[0])\n\t\tv := strings.TrimSpace(kv[1])\n\t\t// removes \"kB\"\n\t\tv = strings.TrimSuffix(v, \" kB\")\n\n\t\t// value to int when possible\n\t\t// we can skip error check here, 'cause vKBytes is not used when value is a string\n\t\tvKBytes, _ := strconv.ParseUint(v, 10, 64)\n\t\t// convert kB to B\n\t\tvBytes := vKBytes * 1024\n\n\t\terr = s.fillStatus(k, v, vKBytes, vBytes)\n\t\tif err != nil {\n\t\t\treturn ProcStatus{}, err\n\t\t}\n\t}\n\n\treturn s, nil\n}\n\nfunc (s *ProcStatus) fillStatus(k string, vString string, vUint uint64, vUintBytes uint64) error {\n\tswitch k {\n\tcase \"Tgid\":\n\t\ts.TGID = int(vUint)\n\tcase \"Name\":\n\t\ts.Name = vString\n\tcase \"Uid\":\n\t\tvar err error\n\t\tfor i, v := range strings.Split(vString, \"\\t\") {\n\t\t\ts.UIDs[i], err = strconv.ParseUint(v, 10, bits.UintSize)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\tcase \"Gid\":\n\t\tvar err error\n\t\tfor i, v := range strings.Split(vString, \"\\t\") {\n\t\t\ts.GIDs[i], err = strconv.ParseUint(v, 10, bits.UintSize)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\tcase \"NSpid\":\n\t\tnspids, err := calcNSPidsList(vString)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ts.NSpids = nspids\n\tcase \"VmPeak\":\n\t\ts.VmPeak = vUintBytes\n\tcase \"VmSize\":\n\t\ts.VmSize = vUintBytes\n\tcase \"VmLck\":\n\t\ts.VmLck = vUintBytes\n\tcase \"VmPin\":\n\t\ts.VmPin = vUintBytes\n\tcase \"VmHWM\":\n\t\ts.VmHWM = vUintBytes\n\tcase \"VmRSS\":\n\t\ts.VmRSS = vUintBytes\n\tcase \"RssAnon\":\n\t\ts.RssAnon = vUintBytes\n\tcase \"RssFile\":\n\t\ts.RssFile = vUintBytes\n\tcase \"RssShmem\":\n\t\ts.RssShmem = vUintBytes\n\tcase \"VmData\":\n\t\ts.VmData = vUintBytes\n\tcase \"VmStk\":\n\t\ts.VmStk = vUintBytes\n\tcase \"VmExe\":\n\t\ts.VmExe = vUintBytes\n\tcase \"VmLib\":\n\t\ts.VmLib = vUintBytes\n\tcase \"VmPTE\":\n\t\ts.VmPTE = vUintBytes\n\tcase \"VmPMD\":\n\t\ts.VmPMD = vUintBytes\n\tcase \"VmSwap\":\n\t\ts.VmSwap = vUintBytes\n\tcase \"HugetlbPages\":\n\t\ts.HugetlbPages = vUintBytes\n\tcase \"voluntary_ctxt_switches\":\n\t\ts.VoluntaryCtxtSwitches = vUint\n\tcase \"nonvoluntary_ctxt_switches\":\n\t\ts.NonVoluntaryCtxtSwitches = vUint\n\tcase \"Cpus_allowed_list\":\n\t\ts.CpusAllowedList = calcCpusAllowedList(vString)\n\t}\n\n\treturn nil\n}\n\n// TotalCtxtSwitches returns the total context switch.\nfunc (s ProcStatus) TotalCtxtSwitches() uint64 {\n\treturn s.VoluntaryCtxtSwitches + s.NonVoluntaryCtxtSwitches\n}\n\nfunc calcCpusAllowedList(cpuString string) []uint64 {\n\ts := strings.Split(cpuString, \",\")\n\n\tvar g []uint64\n\n\tfor _, cpu := range s {\n\t\t// parse cpu ranges, example: 1-3=[1,2,3]\n\t\tif l := strings.Split(strings.TrimSpace(cpu), \"-\"); len(l) > 1 {\n\t\t\tstartCPU, _ := strconv.ParseUint(l[0], 10, 64)\n\t\t\tendCPU, _ := strconv.ParseUint(l[1], 10, 64)\n\n\t\t\tfor i := startCPU; i <= endCPU; i++ {\n\t\t\t\tg = append(g, i)\n\t\t\t}\n\t\t} else if len(l) == 1 {\n\t\t\tcpu, _ := strconv.ParseUint(l[0], 10, 64)\n\t\t\tg = append(g, cpu)\n\t\t}\n\n\t}\n\n\tslices.Sort(g)\n\treturn g\n}\n\nfunc calcNSPidsList(nspidsString string) ([]uint64, error) {\n\ts := strings.Split(nspidsString, \"\\t\")\n\tvar nspids []uint64\n\n\tfor _, nspid := range s {\n\t\tnspid, err := strconv.ParseUint(nspid, 10, 64)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tnspids = append(nspids, nspid)\n\t}\n\n\treturn nspids, nil\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/proc_sys.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage procfs\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\t\"github.com/prometheus/procfs/internal/util\"\n)\n\nfunc sysctlToPath(sysctl string) string {\n\treturn strings.ReplaceAll(sysctl, \".\", \"/\")\n}\n\nfunc (fs FS) SysctlStrings(sysctl string) ([]string, error) {\n\tvalue, err := util.SysReadFile(fs.proc.Path(\"sys\", sysctlToPath(sysctl)))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn strings.Fields(value), nil\n\n}\n\nfunc (fs FS) SysctlInts(sysctl string) ([]int, error) {\n\tfields, err := fs.SysctlStrings(sysctl)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvalues := make([]int, len(fields))\n\tfor i, f := range fields {\n\t\tvp := util.NewValueParser(f)\n\t\tvalues[i] = vp.Int()\n\t\tif err := vp.Err(); err != nil {\n\t\t\treturn nil, fmt.Errorf(\"%w: field %d in sysctl %s is not a valid int: %w\", ErrFileParse, i, sysctl, err)\n\t\t}\n\t}\n\treturn values, nil\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/schedstat.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage procfs\n\nimport (\n\t\"bufio\"\n\t\"errors\"\n\t\"os\"\n\t\"regexp\"\n\t\"strconv\"\n)\n\nvar (\n\tcpuLineRE  = regexp.MustCompile(`cpu(\\d+) (\\d+) (\\d+) (\\d+) (\\d+) (\\d+) (\\d+) (\\d+) (\\d+) (\\d+)`)\n\tprocLineRE = regexp.MustCompile(`(\\d+) (\\d+) (\\d+)`)\n)\n\n// Schedstat contains scheduler statistics from /proc/schedstat\n//\n// See\n// https://www.kernel.org/doc/Documentation/scheduler/sched-stats.txt\n// for a detailed description of what these numbers mean.\n//\n// Note the current kernel documentation claims some of the time units are in\n// jiffies when they are actually in nanoseconds since 2.6.23 with the\n// introduction of CFS. A fix to the documentation is pending. See\n// https://lore.kernel.org/patchwork/project/lkml/list/?series=403473\ntype Schedstat struct {\n\tCPUs []*SchedstatCPU\n}\n\n// SchedstatCPU contains the values from one \"cpu<N>\" line.\ntype SchedstatCPU struct {\n\tCPUNum string\n\n\tRunningNanoseconds uint64\n\tWaitingNanoseconds uint64\n\tRunTimeslices      uint64\n}\n\n// ProcSchedstat contains the values from `/proc/<pid>/schedstat`.\ntype ProcSchedstat struct {\n\tRunningNanoseconds uint64\n\tWaitingNanoseconds uint64\n\tRunTimeslices      uint64\n}\n\n// Schedstat reads data from `/proc/schedstat`.\nfunc (fs FS) Schedstat() (*Schedstat, error) {\n\tfile, err := os.Open(fs.proc.Path(\"schedstat\"))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer file.Close()\n\n\tstats := &Schedstat{}\n\tscanner := bufio.NewScanner(file)\n\n\tfor scanner.Scan() {\n\t\tmatch := cpuLineRE.FindStringSubmatch(scanner.Text())\n\t\tif match != nil {\n\t\t\tcpu := &SchedstatCPU{}\n\t\t\tcpu.CPUNum = match[1]\n\n\t\t\tcpu.RunningNanoseconds, err = strconv.ParseUint(match[8], 10, 64)\n\t\t\tif err != nil {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tcpu.WaitingNanoseconds, err = strconv.ParseUint(match[9], 10, 64)\n\t\t\tif err != nil {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tcpu.RunTimeslices, err = strconv.ParseUint(match[10], 10, 64)\n\t\t\tif err != nil {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tstats.CPUs = append(stats.CPUs, cpu)\n\t\t}\n\t}\n\n\treturn stats, nil\n}\n\nfunc parseProcSchedstat(contents string) (ProcSchedstat, error) {\n\tvar (\n\t\tstats ProcSchedstat\n\t\terr   error\n\t)\n\tmatch := procLineRE.FindStringSubmatch(contents)\n\n\tif match != nil {\n\t\tstats.RunningNanoseconds, err = strconv.ParseUint(match[1], 10, 64)\n\t\tif err != nil {\n\t\t\treturn stats, err\n\t\t}\n\n\t\tstats.WaitingNanoseconds, err = strconv.ParseUint(match[2], 10, 64)\n\t\tif err != nil {\n\t\t\treturn stats, err\n\t\t}\n\n\t\tstats.RunTimeslices, err = strconv.ParseUint(match[3], 10, 64)\n\t\treturn stats, err\n\t}\n\n\treturn stats, errors.New(\"could not parse schedstat\")\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/slab.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage procfs\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"fmt\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/prometheus/procfs/internal/util\"\n)\n\nvar (\n\tslabSpace  = regexp.MustCompile(`\\s+`)\n\tslabVer    = regexp.MustCompile(`slabinfo -`)\n\tslabHeader = regexp.MustCompile(`# name`)\n)\n\n// Slab represents a slab pool in the kernel.\ntype Slab struct {\n\tName         string\n\tObjActive    int64\n\tObjNum       int64\n\tObjSize      int64\n\tObjPerSlab   int64\n\tPagesPerSlab int64\n\t// tunables\n\tLimit        int64\n\tBatch        int64\n\tSharedFactor int64\n\tSlabActive   int64\n\tSlabNum      int64\n\tSharedAvail  int64\n}\n\n// SlabInfo represents info for all slabs.\ntype SlabInfo struct {\n\tSlabs []*Slab\n}\n\nfunc shouldParseSlab(line string) bool {\n\tif slabVer.MatchString(line) {\n\t\treturn false\n\t}\n\tif slabHeader.MatchString(line) {\n\t\treturn false\n\t}\n\treturn true\n}\n\n// parseV21SlabEntry is used to parse a line from /proc/slabinfo version 2.1.\nfunc parseV21SlabEntry(line string) (*Slab, error) {\n\t// First cleanup whitespace.\n\tl := slabSpace.ReplaceAllString(line, \" \")\n\ts := strings.Split(l, \" \")\n\tif len(s) != 16 {\n\t\treturn nil, fmt.Errorf(\"%w: unable to parse: %q\", ErrFileParse, line)\n\t}\n\tvar err error\n\ti := &Slab{Name: s[0]}\n\ti.ObjActive, err = strconv.ParseInt(s[1], 10, 64)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\ti.ObjNum, err = strconv.ParseInt(s[2], 10, 64)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\ti.ObjSize, err = strconv.ParseInt(s[3], 10, 64)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\ti.ObjPerSlab, err = strconv.ParseInt(s[4], 10, 64)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\ti.PagesPerSlab, err = strconv.ParseInt(s[5], 10, 64)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\ti.Limit, err = strconv.ParseInt(s[8], 10, 64)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\ti.Batch, err = strconv.ParseInt(s[9], 10, 64)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\ti.SharedFactor, err = strconv.ParseInt(s[10], 10, 64)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\ti.SlabActive, err = strconv.ParseInt(s[13], 10, 64)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\ti.SlabNum, err = strconv.ParseInt(s[14], 10, 64)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\ti.SharedAvail, err = strconv.ParseInt(s[15], 10, 64)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn i, nil\n}\n\n// parseSlabInfo21 is used to parse a slabinfo 2.1 file.\nfunc parseSlabInfo21(r *bytes.Reader) (SlabInfo, error) {\n\tscanner := bufio.NewScanner(r)\n\ts := SlabInfo{Slabs: []*Slab{}}\n\tfor scanner.Scan() {\n\t\tline := scanner.Text()\n\t\tif !shouldParseSlab(line) {\n\t\t\tcontinue\n\t\t}\n\t\tslab, err := parseV21SlabEntry(line)\n\t\tif err != nil {\n\t\t\treturn s, err\n\t\t}\n\t\ts.Slabs = append(s.Slabs, slab)\n\t}\n\treturn s, nil\n}\n\n// SlabInfo reads data from `/proc/slabinfo`.\nfunc (fs FS) SlabInfo() (SlabInfo, error) {\n\t// TODO: Consider passing options to allow for parsing different\n\t// slabinfo versions. However, slabinfo 2.1 has been stable since\n\t// kernel 2.6.10 and later.\n\tdata, err := util.ReadFileNoStat(fs.proc.Path(\"slabinfo\"))\n\tif err != nil {\n\t\treturn SlabInfo{}, err\n\t}\n\n\treturn parseSlabInfo21(bytes.NewReader(data))\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/softirqs.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage procfs\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/prometheus/procfs/internal/util\"\n)\n\n// Softirqs represents the softirq statistics.\ntype Softirqs struct {\n\tHi      []uint64\n\tTimer   []uint64\n\tNetTx   []uint64\n\tNetRx   []uint64\n\tBlock   []uint64\n\tIRQPoll []uint64\n\tTasklet []uint64\n\tSched   []uint64\n\tHRTimer []uint64\n\tRCU     []uint64\n}\n\nfunc (fs FS) Softirqs() (Softirqs, error) {\n\tfileName := fs.proc.Path(\"softirqs\")\n\tdata, err := util.ReadFileNoStat(fileName)\n\tif err != nil {\n\t\treturn Softirqs{}, err\n\t}\n\n\treader := bytes.NewReader(data)\n\n\treturn parseSoftirqs(reader)\n}\n\nfunc parseSoftirqs(r io.Reader) (Softirqs, error) {\n\tvar (\n\t\tsoftirqs = Softirqs{}\n\t\tscanner  = bufio.NewScanner(r)\n\t)\n\n\tif !scanner.Scan() {\n\t\treturn Softirqs{}, fmt.Errorf(\"%w: softirqs empty\", ErrFileRead)\n\t}\n\n\tfor scanner.Scan() {\n\t\tparts := strings.Fields(scanner.Text())\n\t\tvar err error\n\n\t\t// require at least one cpu\n\t\tif len(parts) < 2 {\n\t\t\tcontinue\n\t\t}\n\t\tswitch parts[0] {\n\t\tcase \"HI:\":\n\t\t\tperCPU := parts[1:]\n\t\t\tsoftirqs.Hi = make([]uint64, len(perCPU))\n\t\t\tfor i, count := range perCPU {\n\t\t\t\tif softirqs.Hi[i], err = strconv.ParseUint(count, 10, 64); err != nil {\n\t\t\t\t\treturn Softirqs{}, fmt.Errorf(\"%w: couldn't parse %q (HI%d): %w\", ErrFileParse, count, i, err)\n\t\t\t\t}\n\t\t\t}\n\t\tcase \"TIMER:\":\n\t\t\tperCPU := parts[1:]\n\t\t\tsoftirqs.Timer = make([]uint64, len(perCPU))\n\t\t\tfor i, count := range perCPU {\n\t\t\t\tif softirqs.Timer[i], err = strconv.ParseUint(count, 10, 64); err != nil {\n\t\t\t\t\treturn Softirqs{}, fmt.Errorf(\"%w: couldn't parse %q (TIMER%d): %w\", ErrFileParse, count, i, err)\n\t\t\t\t}\n\t\t\t}\n\t\tcase \"NET_TX:\":\n\t\t\tperCPU := parts[1:]\n\t\t\tsoftirqs.NetTx = make([]uint64, len(perCPU))\n\t\t\tfor i, count := range perCPU {\n\t\t\t\tif softirqs.NetTx[i], err = strconv.ParseUint(count, 10, 64); err != nil {\n\t\t\t\t\treturn Softirqs{}, fmt.Errorf(\"%w: couldn't parse %q (NET_TX%d): %w\", ErrFileParse, count, i, err)\n\t\t\t\t}\n\t\t\t}\n\t\tcase \"NET_RX:\":\n\t\t\tperCPU := parts[1:]\n\t\t\tsoftirqs.NetRx = make([]uint64, len(perCPU))\n\t\t\tfor i, count := range perCPU {\n\t\t\t\tif softirqs.NetRx[i], err = strconv.ParseUint(count, 10, 64); err != nil {\n\t\t\t\t\treturn Softirqs{}, fmt.Errorf(\"%w: couldn't parse %q (NET_RX%d): %w\", ErrFileParse, count, i, err)\n\t\t\t\t}\n\t\t\t}\n\t\tcase \"BLOCK:\":\n\t\t\tperCPU := parts[1:]\n\t\t\tsoftirqs.Block = make([]uint64, len(perCPU))\n\t\t\tfor i, count := range perCPU {\n\t\t\t\tif softirqs.Block[i], err = strconv.ParseUint(count, 10, 64); err != nil {\n\t\t\t\t\treturn Softirqs{}, fmt.Errorf(\"%w: couldn't parse %q (BLOCK%d): %w\", ErrFileParse, count, i, err)\n\t\t\t\t}\n\t\t\t}\n\t\tcase \"IRQ_POLL:\":\n\t\t\tperCPU := parts[1:]\n\t\t\tsoftirqs.IRQPoll = make([]uint64, len(perCPU))\n\t\t\tfor i, count := range perCPU {\n\t\t\t\tif softirqs.IRQPoll[i], err = strconv.ParseUint(count, 10, 64); err != nil {\n\t\t\t\t\treturn Softirqs{}, fmt.Errorf(\"%w: couldn't parse %q (IRQ_POLL%d): %w\", ErrFileParse, count, i, err)\n\t\t\t\t}\n\t\t\t}\n\t\tcase \"TASKLET:\":\n\t\t\tperCPU := parts[1:]\n\t\t\tsoftirqs.Tasklet = make([]uint64, len(perCPU))\n\t\t\tfor i, count := range perCPU {\n\t\t\t\tif softirqs.Tasklet[i], err = strconv.ParseUint(count, 10, 64); err != nil {\n\t\t\t\t\treturn Softirqs{}, fmt.Errorf(\"%w: couldn't parse %q (TASKLET%d): %w\", ErrFileParse, count, i, err)\n\t\t\t\t}\n\t\t\t}\n\t\tcase \"SCHED:\":\n\t\t\tperCPU := parts[1:]\n\t\t\tsoftirqs.Sched = make([]uint64, len(perCPU))\n\t\t\tfor i, count := range perCPU {\n\t\t\t\tif softirqs.Sched[i], err = strconv.ParseUint(count, 10, 64); err != nil {\n\t\t\t\t\treturn Softirqs{}, fmt.Errorf(\"%w: couldn't parse %q (SCHED%d): %w\", ErrFileParse, count, i, err)\n\t\t\t\t}\n\t\t\t}\n\t\tcase \"HRTIMER:\":\n\t\t\tperCPU := parts[1:]\n\t\t\tsoftirqs.HRTimer = make([]uint64, len(perCPU))\n\t\t\tfor i, count := range perCPU {\n\t\t\t\tif softirqs.HRTimer[i], err = strconv.ParseUint(count, 10, 64); err != nil {\n\t\t\t\t\treturn Softirqs{}, fmt.Errorf(\"%w: couldn't parse %q (HRTIMER%d): %w\", ErrFileParse, count, i, err)\n\t\t\t\t}\n\t\t\t}\n\t\tcase \"RCU:\":\n\t\t\tperCPU := parts[1:]\n\t\t\tsoftirqs.RCU = make([]uint64, len(perCPU))\n\t\t\tfor i, count := range perCPU {\n\t\t\t\tif softirqs.RCU[i], err = strconv.ParseUint(count, 10, 64); err != nil {\n\t\t\t\t\treturn Softirqs{}, fmt.Errorf(\"%w: couldn't parse %q (RCU%d): %w\", ErrFileParse, count, i, err)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif err := scanner.Err(); err != nil {\n\t\treturn Softirqs{}, fmt.Errorf(\"%w: couldn't parse softirqs: %w\", ErrFileParse, err)\n\t}\n\n\treturn softirqs, scanner.Err()\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/stat.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage procfs\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/prometheus/procfs/internal/fs\"\n\t\"github.com/prometheus/procfs/internal/util\"\n)\n\n// CPUStat shows how much time the cpu spend in various stages.\ntype CPUStat struct {\n\tUser      float64\n\tNice      float64\n\tSystem    float64\n\tIdle      float64\n\tIowait    float64\n\tIRQ       float64\n\tSoftIRQ   float64\n\tSteal     float64\n\tGuest     float64\n\tGuestNice float64\n}\n\n// SoftIRQStat represent the softirq statistics as exported in the procfs stat file.\n// A nice introduction can be found at https://0xax.gitbooks.io/linux-insides/content/interrupts/interrupts-9.html\n// It is possible to get per-cpu stats by reading `/proc/softirqs`.\ntype SoftIRQStat struct {\n\tHi          uint64\n\tTimer       uint64\n\tNetTx       uint64\n\tNetRx       uint64\n\tBlock       uint64\n\tBlockIoPoll uint64\n\tTasklet     uint64\n\tSched       uint64\n\tHrtimer     uint64\n\tRcu         uint64\n}\n\n// Stat represents kernel/system statistics.\ntype Stat struct {\n\t// Boot time in seconds since the Epoch.\n\tBootTime uint64\n\t// Summed up cpu statistics.\n\tCPUTotal CPUStat\n\t// Per-CPU statistics.\n\tCPU map[int64]CPUStat\n\t// Number of times interrupts were handled, which contains numbered and unnumbered IRQs.\n\tIRQTotal uint64\n\t// Number of times a numbered IRQ was triggered.\n\tIRQ []uint64\n\t// Number of times a context switch happened.\n\tContextSwitches uint64\n\t// Number of times a process was created.\n\tProcessCreated uint64\n\t// Number of processes currently running.\n\tProcessesRunning uint64\n\t// Number of processes currently blocked (waiting for IO).\n\tProcessesBlocked uint64\n\t// Number of times a softirq was scheduled.\n\tSoftIRQTotal uint64\n\t// Detailed softirq statistics.\n\tSoftIRQ SoftIRQStat\n}\n\n// Parse a cpu statistics line and returns the CPUStat struct plus the cpu id (or -1 for the overall sum).\nfunc parseCPUStat(line string) (CPUStat, int64, error) {\n\tcpuStat := CPUStat{}\n\tvar cpu string\n\n\tcount, err := fmt.Sscanf(line, \"%s %f %f %f %f %f %f %f %f %f %f\",\n\t\t&cpu,\n\t\t&cpuStat.User, &cpuStat.Nice, &cpuStat.System, &cpuStat.Idle,\n\t\t&cpuStat.Iowait, &cpuStat.IRQ, &cpuStat.SoftIRQ, &cpuStat.Steal,\n\t\t&cpuStat.Guest, &cpuStat.GuestNice)\n\n\tif err != nil && !errors.Is(err, io.EOF) {\n\t\treturn CPUStat{}, -1, fmt.Errorf(\"%w: couldn't parse %q (cpu): %w\", ErrFileParse, line, err)\n\t}\n\tif count == 0 {\n\t\treturn CPUStat{}, -1, fmt.Errorf(\"%w: couldn't parse %q (cpu): 0 elements parsed\", ErrFileParse, line)\n\t}\n\n\tcpuStat.User /= userHZ\n\tcpuStat.Nice /= userHZ\n\tcpuStat.System /= userHZ\n\tcpuStat.Idle /= userHZ\n\tcpuStat.Iowait /= userHZ\n\tcpuStat.IRQ /= userHZ\n\tcpuStat.SoftIRQ /= userHZ\n\tcpuStat.Steal /= userHZ\n\tcpuStat.Guest /= userHZ\n\tcpuStat.GuestNice /= userHZ\n\n\tif cpu == \"cpu\" {\n\t\treturn cpuStat, -1, nil\n\t}\n\n\tcpuID, err := strconv.ParseInt(cpu[3:], 10, 64)\n\tif err != nil {\n\t\treturn CPUStat{}, -1, fmt.Errorf(\"%w: couldn't parse %q (cpu/cpuid): %w\", ErrFileParse, line, err)\n\t}\n\n\treturn cpuStat, cpuID, nil\n}\n\n// Parse a softirq line.\nfunc parseSoftIRQStat(line string) (SoftIRQStat, uint64, error) {\n\tsoftIRQStat := SoftIRQStat{}\n\tvar total uint64\n\tvar prefix string\n\n\t_, err := fmt.Sscanf(line, \"%s %d %d %d %d %d %d %d %d %d %d %d\",\n\t\t&prefix, &total,\n\t\t&softIRQStat.Hi, &softIRQStat.Timer, &softIRQStat.NetTx, &softIRQStat.NetRx,\n\t\t&softIRQStat.Block, &softIRQStat.BlockIoPoll,\n\t\t&softIRQStat.Tasklet, &softIRQStat.Sched,\n\t\t&softIRQStat.Hrtimer, &softIRQStat.Rcu)\n\n\tif err != nil {\n\t\treturn SoftIRQStat{}, 0, fmt.Errorf(\"%w: couldn't parse %q (softirq): %w\", ErrFileParse, line, err)\n\t}\n\n\treturn softIRQStat, total, nil\n}\n\n// NewStat returns information about current cpu/process statistics.\n// See https://www.kernel.org/doc/Documentation/filesystems/proc.txt\n//\n// Deprecated: Use fs.Stat() instead.\nfunc NewStat() (Stat, error) {\n\tfs, err := NewFS(fs.DefaultProcMountPoint)\n\tif err != nil {\n\t\treturn Stat{}, err\n\t}\n\treturn fs.Stat()\n}\n\n// NewStat returns information about current cpu/process statistics.\n// See: https://www.kernel.org/doc/Documentation/filesystems/proc.txt\n//\n// Deprecated: Use fs.Stat() instead.\nfunc (fs FS) NewStat() (Stat, error) {\n\treturn fs.Stat()\n}\n\n// Stat returns information about current cpu/process statistics.\n// See: https://www.kernel.org/doc/Documentation/filesystems/proc.txt\nfunc (fs FS) Stat() (Stat, error) {\n\tfileName := fs.proc.Path(\"stat\")\n\tdata, err := util.ReadFileNoStat(fileName)\n\tif err != nil {\n\t\treturn Stat{}, err\n\t}\n\tprocStat, err := parseStat(bytes.NewReader(data), fileName)\n\tif err != nil {\n\t\treturn Stat{}, err\n\t}\n\treturn procStat, nil\n}\n\n// parseStat parses the metrics from /proc/[pid]/stat.\nfunc parseStat(r io.Reader, fileName string) (Stat, error) {\n\tvar (\n\t\tscanner = bufio.NewScanner(r)\n\t\tstat    = Stat{\n\t\t\tCPU: make(map[int64]CPUStat),\n\t\t}\n\t\terr error\n\t)\n\n\t// Increase default scanner buffer to handle very long `intr` lines.\n\tbuf := make([]byte, 0, 8*1024)\n\tscanner.Buffer(buf, 1024*1024)\n\n\tfor scanner.Scan() {\n\t\tline := scanner.Text()\n\t\tparts := strings.Fields(scanner.Text())\n\t\t// require at least <key> <value>\n\t\tif len(parts) < 2 {\n\t\t\tcontinue\n\t\t}\n\t\tswitch {\n\t\tcase parts[0] == \"btime\":\n\t\t\tif stat.BootTime, err = strconv.ParseUint(parts[1], 10, 64); err != nil {\n\t\t\t\treturn Stat{}, fmt.Errorf(\"%w: couldn't parse %q (btime): %w\", ErrFileParse, parts[1], err)\n\t\t\t}\n\t\tcase parts[0] == \"intr\":\n\t\t\tif stat.IRQTotal, err = strconv.ParseUint(parts[1], 10, 64); err != nil {\n\t\t\t\treturn Stat{}, fmt.Errorf(\"%w: couldn't parse %q (intr): %w\", ErrFileParse, parts[1], err)\n\t\t\t}\n\t\t\tnumberedIRQs := parts[2:]\n\t\t\tstat.IRQ = make([]uint64, len(numberedIRQs))\n\t\t\tfor i, count := range numberedIRQs {\n\t\t\t\tif stat.IRQ[i], err = strconv.ParseUint(count, 10, 64); err != nil {\n\t\t\t\t\treturn Stat{}, fmt.Errorf(\"%w: couldn't parse %q (intr%d): %w\", ErrFileParse, count, i, err)\n\t\t\t\t}\n\t\t\t}\n\t\tcase parts[0] == \"ctxt\":\n\t\t\tif stat.ContextSwitches, err = strconv.ParseUint(parts[1], 10, 64); err != nil {\n\t\t\t\treturn Stat{}, fmt.Errorf(\"%w: couldn't parse %q (ctxt): %w\", ErrFileParse, parts[1], err)\n\t\t\t}\n\t\tcase parts[0] == \"processes\":\n\t\t\tif stat.ProcessCreated, err = strconv.ParseUint(parts[1], 10, 64); err != nil {\n\t\t\t\treturn Stat{}, fmt.Errorf(\"%w: couldn't parse %q (processes): %w\", ErrFileParse, parts[1], err)\n\t\t\t}\n\t\tcase parts[0] == \"procs_running\":\n\t\t\tif stat.ProcessesRunning, err = strconv.ParseUint(parts[1], 10, 64); err != nil {\n\t\t\t\treturn Stat{}, fmt.Errorf(\"%w: couldn't parse %q (procs_running): %w\", ErrFileParse, parts[1], err)\n\t\t\t}\n\t\tcase parts[0] == \"procs_blocked\":\n\t\t\tif stat.ProcessesBlocked, err = strconv.ParseUint(parts[1], 10, 64); err != nil {\n\t\t\t\treturn Stat{}, fmt.Errorf(\"%w: couldn't parse %q (procs_blocked): %w\", ErrFileParse, parts[1], err)\n\t\t\t}\n\t\tcase parts[0] == \"softirq\":\n\t\t\tsoftIRQStats, total, err := parseSoftIRQStat(line)\n\t\t\tif err != nil {\n\t\t\t\treturn Stat{}, err\n\t\t\t}\n\t\t\tstat.SoftIRQTotal = total\n\t\t\tstat.SoftIRQ = softIRQStats\n\t\tcase strings.HasPrefix(parts[0], \"cpu\"):\n\t\t\tcpuStat, cpuID, err := parseCPUStat(line)\n\t\t\tif err != nil {\n\t\t\t\treturn Stat{}, err\n\t\t\t}\n\t\t\tif cpuID == -1 {\n\t\t\t\tstat.CPUTotal = cpuStat\n\t\t\t} else {\n\t\t\t\tstat.CPU[cpuID] = cpuStat\n\t\t\t}\n\t\t}\n\t}\n\n\tif err := scanner.Err(); err != nil {\n\t\treturn Stat{}, fmt.Errorf(\"%w: couldn't parse %q: %w\", ErrFileParse, fileName, err)\n\t}\n\n\treturn stat, nil\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/swaps.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage procfs\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"fmt\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/prometheus/procfs/internal/util\"\n)\n\n// Swap represents an entry in /proc/swaps.\ntype Swap struct {\n\tFilename string\n\tType     string\n\tSize     int\n\tUsed     int\n\tPriority int\n}\n\n// Swaps returns a slice of all configured swap devices on the system.\nfunc (fs FS) Swaps() ([]*Swap, error) {\n\tdata, err := util.ReadFileNoStat(fs.proc.Path(\"swaps\"))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn parseSwaps(data)\n}\n\nfunc parseSwaps(info []byte) ([]*Swap, error) {\n\tswaps := []*Swap{}\n\tscanner := bufio.NewScanner(bytes.NewReader(info))\n\tscanner.Scan() // ignore header line\n\tfor scanner.Scan() {\n\t\tswapString := scanner.Text()\n\t\tparsedSwap, err := parseSwapString(swapString)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tswaps = append(swaps, parsedSwap)\n\t}\n\n\terr := scanner.Err()\n\treturn swaps, err\n}\n\nfunc parseSwapString(swapString string) (*Swap, error) {\n\tvar err error\n\n\tswapFields := strings.Fields(swapString)\n\tswapLength := len(swapFields)\n\tif swapLength < 5 {\n\t\treturn nil, fmt.Errorf(\"%w: too few fields in swap string: %s\", ErrFileParse, swapString)\n\t}\n\n\tswap := &Swap{\n\t\tFilename: swapFields[0],\n\t\tType:     swapFields[1],\n\t}\n\n\tswap.Size, err = strconv.Atoi(swapFields[2])\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"%w: invalid swap size: %s: %w\", ErrFileParse, swapFields[2], err)\n\t}\n\tswap.Used, err = strconv.Atoi(swapFields[3])\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"%w: invalid swap used: %s: %w\", ErrFileParse, swapFields[3], err)\n\t}\n\tswap.Priority, err = strconv.Atoi(swapFields[4])\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"%w: invalid swap priority: %s: %w\", ErrFileParse, swapFields[4], err)\n\t}\n\n\treturn swap, nil\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/thread.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage procfs\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"strconv\"\n\n\tfsi \"github.com/prometheus/procfs/internal/fs\"\n)\n\n// Provide access to /proc/PID/task/TID files, for thread specific values. Since\n// such files have the same structure as /proc/PID/ ones, the data structures\n// and the parsers for the latter may be reused.\n\n// AllThreads returns a list of all currently available threads under /proc/PID.\nfunc AllThreads(pid int) (Procs, error) {\n\tfs, err := NewFS(DefaultMountPoint)\n\tif err != nil {\n\t\treturn Procs{}, err\n\t}\n\treturn fs.AllThreads(pid)\n}\n\n// AllThreads returns a list of all currently available threads for PID.\nfunc (fs FS) AllThreads(pid int) (Procs, error) {\n\ttaskPath := fs.proc.Path(strconv.Itoa(pid), \"task\")\n\td, err := os.Open(taskPath)\n\tif err != nil {\n\t\treturn Procs{}, err\n\t}\n\tdefer d.Close()\n\n\tnames, err := d.Readdirnames(-1)\n\tif err != nil {\n\t\treturn Procs{}, fmt.Errorf(\"%w: could not read %q: %w\", ErrFileRead, d.Name(), err)\n\t}\n\n\tt := Procs{}\n\tfor _, n := range names {\n\t\ttid, err := strconv.ParseInt(n, 10, 64)\n\t\tif err != nil {\n\t\t\tcontinue\n\t\t}\n\n\t\tt = append(t, Proc{PID: int(tid), fs: FS{fsi.FS(taskPath), fs.isReal}})\n\t}\n\n\treturn t, nil\n}\n\n// Thread returns a process for a given PID, TID.\nfunc (fs FS) Thread(pid, tid int) (Proc, error) {\n\ttaskPath := fs.proc.Path(strconv.Itoa(pid), \"task\")\n\tif _, err := os.Stat(taskPath); err != nil {\n\t\treturn Proc{}, err\n\t}\n\treturn Proc{PID: tid, fs: FS{fsi.FS(taskPath), fs.isReal}}, nil\n}\n\n// Thread returns a process for a given TID of Proc.\nfunc (proc Proc) Thread(tid int) (Proc, error) {\n\ttfs := FS{fsi.FS(proc.path(\"task\")), proc.fs.isReal}\n\tif _, err := os.Stat(tfs.proc.Path(strconv.Itoa(tid))); err != nil {\n\t\treturn Proc{}, err\n\t}\n\treturn Proc{PID: tid, fs: tfs}, nil\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/ttar",
    "content": "#!/usr/bin/env bash\n\n# Purpose: plain text tar format\n# Limitations: - only suitable for text files, directories, and symlinks\n#              - stores only filename, content, and mode\n#              - not designed for untrusted input\n#\n# Note: must work with bash version 3.2 (macOS)\n\n# Copyright 2017 Roger Luethi\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nset -o errexit -o nounset\n\n# Sanitize environment (for instance, standard sorting of glob matches)\nexport LC_ALL=C\n\npath=\"\"\nCMD=\"\"\nARG_STRING=\"$*\"\n\n#------------------------------------------------------------------------------\n# Not all sed implementations can work on null bytes. In order to make ttar\n# work out of the box on macOS, use Python as a stream editor.\n\nUSE_PYTHON=0\n\nPYTHON_CREATE_FILTER=$(cat << 'PCF'\n#!/usr/bin/env python\n\nimport re\nimport sys\n\nfor line in sys.stdin:\n    line = re.sub(r'EOF', r'\\EOF', line)\n    line = re.sub(r'NULLBYTE', r'\\NULLBYTE', line)\n    line = re.sub('\\x00', r'NULLBYTE', line)\n    sys.stdout.write(line)\nPCF\n)\n\nPYTHON_EXTRACT_FILTER=$(cat << 'PEF'\n#!/usr/bin/env python\n\nimport re\nimport sys\n\nfor line in sys.stdin:\n    line = re.sub(r'(?<!\\\\)NULLBYTE', '\\x00', line)\n    line = re.sub(r'\\\\NULLBYTE', 'NULLBYTE', line)\n    line = re.sub(r'([^\\\\])EOF', r'\\1', line)\n    line = re.sub(r'\\\\EOF', 'EOF', line)\n    sys.stdout.write(line)\nPEF\n)\n\nfunction test_environment {\n    if [[ \"$(echo \"a\" | sed 's/a/\\x0/' | wc -c)\" -ne 2 ]]; then\n        echo \"WARNING sed unable to handle null bytes, using Python (slow).\"\n        if ! which python >/dev/null; then\n            echo \"ERROR Python not found. Aborting.\"\n            exit 2\n        fi\n        USE_PYTHON=1\n    fi\n}\n\n#------------------------------------------------------------------------------\n\nfunction usage {\n    bname=$(basename \"$0\")\n    cat << USAGE\nUsage:   $bname [-C <DIR>] -c -f <ARCHIVE> <FILE...> (create archive)\n         $bname            -t -f <ARCHIVE>           (list archive contents)\n         $bname [-C <DIR>] -x -f <ARCHIVE>           (extract archive)\n\nOptions:\n         -C <DIR>           (change directory)\n         -v                 (verbose)\n         --recursive-unlink (recursively delete existing directory if path\n                             collides with file or directory to extract)\n\nExample: Change to sysfs directory, create ttar file from fixtures directory\n         $bname -C sysfs -c -f sysfs/fixtures.ttar fixtures/\nUSAGE\nexit \"$1\"\n}\n\nfunction vecho {\n    if [ \"${VERBOSE:-}\" == \"yes\" ]; then\n        echo >&7 \"$@\"\n    fi\n}\n\nfunction set_cmd {\n    if [ -n \"$CMD\" ]; then\n        echo \"ERROR: more than one command given\"\n        echo\n        usage 2\n    fi\n    CMD=$1\n}\n\nunset VERBOSE\nunset RECURSIVE_UNLINK\n\nwhile getopts :cf:-:htxvC: opt; do\n    case $opt in\n        c)\n            set_cmd \"create\"\n            ;;\n        f)\n            ARCHIVE=$OPTARG\n            ;;\n        h)\n            usage 0\n            ;;\n        t)\n            set_cmd \"list\"\n            ;;\n        x)\n            set_cmd \"extract\"\n            ;;\n        v)\n            VERBOSE=yes\n            exec 7>&1\n            ;;\n        C)\n            CDIR=$OPTARG\n            ;;\n        -)\n            case $OPTARG in\n                recursive-unlink)\n                    RECURSIVE_UNLINK=\"yes\"\n                    ;;\n                *)\n                    echo -e \"Error: invalid option -$OPTARG\"\n                    echo\n                    usage 1\n                    ;;\n            esac\n            ;;\n        *)\n            echo >&2 \"ERROR: invalid option -$OPTARG\"\n            echo\n            usage 1\n            ;;\n    esac\ndone\n\n# Remove processed options from arguments\nshift $(( OPTIND - 1 ));\n\nif [ \"${CMD:-}\" == \"\" ]; then\n    echo >&2 \"ERROR: no command given\"\n    echo\n    usage 1\nelif [ \"${ARCHIVE:-}\" == \"\" ]; then\n    echo >&2 \"ERROR: no archive name given\"\n    echo\n    usage 1\nfi\n\nfunction list {\n    local path=\"\"\n    local size=0\n    local line_no=0\n    local ttar_file=$1\n    if [ -n \"${2:-}\" ]; then\n        echo >&2 \"ERROR: too many arguments.\"\n        echo\n        usage 1\n    fi\n    if [ ! -e \"$ttar_file\" ]; then\n        echo >&2 \"ERROR: file not found ($ttar_file)\"\n        echo\n        usage 1\n    fi\n    while read -r line; do\n        line_no=$(( line_no + 1 ))\n        if [ $size -gt 0 ]; then\n            size=$(( size - 1 ))\n            continue\n        fi\n        if [[ $line =~ ^Path:\\ (.*)$ ]]; then\n            path=${BASH_REMATCH[1]}\n        elif [[ $line =~ ^Lines:\\ (.*)$ ]]; then\n            size=${BASH_REMATCH[1]}\n            echo \"$path\"\n        elif [[ $line =~ ^Directory:\\ (.*)$ ]]; then\n            path=${BASH_REMATCH[1]}\n            echo \"$path/\"\n        elif [[ $line =~ ^SymlinkTo:\\ (.*)$ ]]; then\n            echo  \"$path -> ${BASH_REMATCH[1]}\"\n        fi\n    done < \"$ttar_file\"\n}\n\nfunction extract {\n    local path=\"\"\n    local size=0\n    local line_no=0\n    local ttar_file=$1\n    if [ -n \"${2:-}\" ]; then\n        echo >&2 \"ERROR: too many arguments.\"\n        echo\n        usage 1\n    fi\n    if [ ! -e \"$ttar_file\" ]; then\n        echo >&2 \"ERROR: file not found ($ttar_file)\"\n        echo\n        usage 1\n    fi\n    while IFS= read -r line; do\n        line_no=$(( line_no + 1 ))\n        local eof_without_newline\n        if [ \"$size\" -gt 0 ]; then\n            if [[ \"$line\" =~ [^\\\\]EOF ]]; then\n                # An EOF not preceded by a backslash indicates that the line\n                # does not end with a newline\n                eof_without_newline=1\n            else\n                eof_without_newline=0\n            fi\n            # Replace NULLBYTE with null byte if at beginning of line\n            # Replace NULLBYTE with null byte unless preceded by backslash\n            # Remove one backslash in front of NULLBYTE (if any)\n            # Remove EOF unless preceded by backslash\n            # Remove one backslash in front of EOF\n            if [ $USE_PYTHON -eq 1 ]; then\n                echo -n \"$line\" | python -c \"$PYTHON_EXTRACT_FILTER\" >> \"$path\"\n            else\n                # The repeated pattern makes up for sed's lack of negative\n                # lookbehind assertions (for consecutive null bytes).\n                echo -n \"$line\" | \\\n                    sed -e 's/^NULLBYTE/\\x0/g;\n                            s/\\([^\\\\]\\)NULLBYTE/\\1\\x0/g;\n                            s/\\([^\\\\]\\)NULLBYTE/\\1\\x0/g;\n                            s/\\\\NULLBYTE/NULLBYTE/g;\n                            s/\\([^\\\\]\\)EOF/\\1/g;\n                            s/\\\\EOF/EOF/g;\n                    ' >> \"$path\"\n            fi\n            if [[ \"$eof_without_newline\" -eq 0 ]]; then\n                echo >> \"$path\"\n            fi\n            size=$(( size - 1 ))\n            continue\n        fi\n        if [[ $line =~ ^Path:\\ (.*)$ ]]; then\n            path=${BASH_REMATCH[1]}\n            if [ -L \"$path\" ]; then\n                rm \"$path\"\n            elif [ -d \"$path\" ]; then\n                if [ \"${RECURSIVE_UNLINK:-}\" == \"yes\" ]; then\n                    rm -r \"$path\"\n                else\n                    # Safe because symlinks to directories are dealt with above\n                    rmdir \"$path\"\n                fi\n            elif [ -e \"$path\" ]; then\n                rm \"$path\"\n            fi\n        elif [[ $line =~ ^Lines:\\ (.*)$ ]]; then\n            size=${BASH_REMATCH[1]}\n            # Create file even if it is zero-length.\n            touch \"$path\"\n            vecho \"    $path\"\n        elif [[ $line =~ ^Mode:\\ (.*)$ ]]; then\n            mode=${BASH_REMATCH[1]}\n            chmod \"$mode\" \"$path\"\n            vecho \"$mode\"\n        elif [[ $line =~ ^Directory:\\ (.*)$ ]]; then\n            path=${BASH_REMATCH[1]}\n            mkdir -p \"$path\"\n            vecho \"    $path/\"\n        elif [[ $line =~ ^SymlinkTo:\\ (.*)$ ]]; then\n            ln -s \"${BASH_REMATCH[1]}\" \"$path\"\n            vecho \"    $path -> ${BASH_REMATCH[1]}\"\n        elif [[ $line =~ ^# ]]; then\n            # Ignore comments between files\n            continue\n        else\n            echo >&2 \"ERROR: Unknown keyword on line $line_no: $line\"\n            exit 1\n        fi\n    done < \"$ttar_file\"\n}\n\nfunction div {\n    echo \"# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\" \\\n         \"- - - - - -\"\n}\n\nfunction get_mode {\n    local mfile=$1\n    if [ -z \"${STAT_OPTION:-}\" ]; then\n        if stat -c '%a' \"$mfile\" >/dev/null 2>&1; then\n            # GNU stat\n            STAT_OPTION='-c'\n            STAT_FORMAT='%a'\n        else\n            # BSD stat\n            STAT_OPTION='-f'\n            # Octal output, user/group/other (omit file type, sticky bit)\n            STAT_FORMAT='%OLp'\n        fi\n    fi\n    stat \"${STAT_OPTION}\" \"${STAT_FORMAT}\" \"$mfile\"\n}\n\nfunction _create {\n    shopt -s nullglob\n    local mode\n    local eof_without_newline\n    while (( \"$#\" )); do\n        file=$1\n        if [ -L \"$file\" ]; then\n            echo \"Path: $file\"\n            symlinkTo=$(readlink \"$file\")\n            echo \"SymlinkTo: $symlinkTo\"\n            vecho \"    $file -> $symlinkTo\"\n            div\n        elif [ -d \"$file\" ]; then\n            # Strip trailing slash (if there is one)\n            file=${file%/}\n            echo \"Directory: $file\"\n            mode=$(get_mode \"$file\")\n            echo \"Mode: $mode\"\n            vecho \"$mode $file/\"\n            div\n            # Find all files and dirs, including hidden/dot files\n            for x in \"$file/\"{*,.[^.]*}; do\n                _create \"$x\"\n            done\n        elif [ -f \"$file\" ]; then\n            echo \"Path: $file\"\n            lines=$(wc -l \"$file\"|awk '{print $1}')\n            eof_without_newline=0\n            if [[ \"$(wc -c \"$file\"|awk '{print $1}')\" -gt 0 ]] && \\\n                    [[ \"$(tail -c 1 \"$file\" | wc -l)\" -eq 0 ]]; then\n                eof_without_newline=1\n                lines=$((lines+1))\n            fi\n            echo \"Lines: $lines\"\n            # Add backslash in front of EOF\n            # Add backslash in front of NULLBYTE\n            # Replace null byte with NULLBYTE\n            if [ $USE_PYTHON -eq 1 ]; then\n                < \"$file\" python -c \"$PYTHON_CREATE_FILTER\"\n            else\n                < \"$file\" \\\n                    sed 's/EOF/\\\\EOF/g;\n                            s/NULLBYTE/\\\\NULLBYTE/g;\n                            s/\\x0/NULLBYTE/g;\n                    '\n            fi\n            if [[ \"$eof_without_newline\" -eq 1 ]]; then\n                # Finish line with EOF to indicate that the original line did\n                # not end with a linefeed\n                echo \"EOF\"\n            fi\n            mode=$(get_mode \"$file\")\n            echo \"Mode: $mode\"\n            vecho \"$mode $file\"\n            div\n        else\n            echo >&2 \"ERROR: file not found ($file in $(pwd))\"\n            exit 2\n        fi\n        shift\n    done\n}\n\nfunction create {\n    ttar_file=$1\n    shift\n    if [ -z \"${1:-}\" ]; then\n        echo >&2 \"ERROR: missing arguments.\"\n        echo\n        usage 1\n    fi\n    if [ -e \"$ttar_file\" ]; then\n        rm \"$ttar_file\"\n    fi\n    exec > \"$ttar_file\"\n    echo \"# Archive created by ttar $ARG_STRING\"\n    _create \"$@\"\n}\n\ntest_environment\n\nif [ -n \"${CDIR:-}\" ]; then\n    if [[ \"$ARCHIVE\" != /* ]]; then\n        # Relative path: preserve the archive's location before changing\n        # directory\n        ARCHIVE=\"$(pwd)/$ARCHIVE\"\n    fi\n    cd \"$CDIR\"\nfi\n\n\"$CMD\" \"$ARCHIVE\" \"$@\"\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/vm.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n//go:build !windows\n// +build !windows\n\npackage procfs\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"github.com/prometheus/procfs/internal/util\"\n)\n\n// The VM interface is described at\n//\n//\thttps://www.kernel.org/doc/Documentation/sysctl/vm.txt\n//\n// Each setting is exposed as a single file.\n// Each file contains one line with a single numerical value, except lowmem_reserve_ratio which holds an array\n// and numa_zonelist_order (deprecated) which is a string.\ntype VM struct {\n\tAdminReserveKbytes        *int64   // /proc/sys/vm/admin_reserve_kbytes\n\tBlockDump                 *int64   // /proc/sys/vm/block_dump\n\tCompactUnevictableAllowed *int64   // /proc/sys/vm/compact_unevictable_allowed\n\tDirtyBackgroundBytes      *int64   // /proc/sys/vm/dirty_background_bytes\n\tDirtyBackgroundRatio      *int64   // /proc/sys/vm/dirty_background_ratio\n\tDirtyBytes                *int64   // /proc/sys/vm/dirty_bytes\n\tDirtyExpireCentisecs      *int64   // /proc/sys/vm/dirty_expire_centisecs\n\tDirtyRatio                *int64   // /proc/sys/vm/dirty_ratio\n\tDirtytimeExpireSeconds    *int64   // /proc/sys/vm/dirtytime_expire_seconds\n\tDirtyWritebackCentisecs   *int64   // /proc/sys/vm/dirty_writeback_centisecs\n\tDropCaches                *int64   // /proc/sys/vm/drop_caches\n\tExtfragThreshold          *int64   // /proc/sys/vm/extfrag_threshold\n\tHugetlbShmGroup           *int64   // /proc/sys/vm/hugetlb_shm_group\n\tLaptopMode                *int64   // /proc/sys/vm/laptop_mode\n\tLegacyVaLayout            *int64   // /proc/sys/vm/legacy_va_layout\n\tLowmemReserveRatio        []*int64 // /proc/sys/vm/lowmem_reserve_ratio\n\tMaxMapCount               *int64   // /proc/sys/vm/max_map_count\n\tMemoryFailureEarlyKill    *int64   // /proc/sys/vm/memory_failure_early_kill\n\tMemoryFailureRecovery     *int64   // /proc/sys/vm/memory_failure_recovery\n\tMinFreeKbytes             *int64   // /proc/sys/vm/min_free_kbytes\n\tMinSlabRatio              *int64   // /proc/sys/vm/min_slab_ratio\n\tMinUnmappedRatio          *int64   // /proc/sys/vm/min_unmapped_ratio\n\tMmapMinAddr               *int64   // /proc/sys/vm/mmap_min_addr\n\tNrHugepages               *int64   // /proc/sys/vm/nr_hugepages\n\tNrHugepagesMempolicy      *int64   // /proc/sys/vm/nr_hugepages_mempolicy\n\tNrOvercommitHugepages     *int64   // /proc/sys/vm/nr_overcommit_hugepages\n\tNumaStat                  *int64   // /proc/sys/vm/numa_stat\n\tNumaZonelistOrder         string   // /proc/sys/vm/numa_zonelist_order\n\tOomDumpTasks              *int64   // /proc/sys/vm/oom_dump_tasks\n\tOomKillAllocatingTask     *int64   // /proc/sys/vm/oom_kill_allocating_task\n\tOvercommitKbytes          *int64   // /proc/sys/vm/overcommit_kbytes\n\tOvercommitMemory          *int64   // /proc/sys/vm/overcommit_memory\n\tOvercommitRatio           *int64   // /proc/sys/vm/overcommit_ratio\n\tPageCluster               *int64   // /proc/sys/vm/page-cluster\n\tPanicOnOom                *int64   // /proc/sys/vm/panic_on_oom\n\tPercpuPagelistFraction    *int64   // /proc/sys/vm/percpu_pagelist_fraction\n\tStatInterval              *int64   // /proc/sys/vm/stat_interval\n\tSwappiness                *int64   // /proc/sys/vm/swappiness\n\tUserReserveKbytes         *int64   // /proc/sys/vm/user_reserve_kbytes\n\tVfsCachePressure          *int64   // /proc/sys/vm/vfs_cache_pressure\n\tWatermarkBoostFactor      *int64   // /proc/sys/vm/watermark_boost_factor\n\tWatermarkScaleFactor      *int64   // /proc/sys/vm/watermark_scale_factor\n\tZoneReclaimMode           *int64   // /proc/sys/vm/zone_reclaim_mode\n}\n\n// VM reads the VM statistics from the specified `proc` filesystem.\nfunc (fs FS) VM() (*VM, error) {\n\tpath := fs.proc.Path(\"sys/vm\")\n\tfile, err := os.Stat(path)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif !file.Mode().IsDir() {\n\t\treturn nil, fmt.Errorf(\"%w: %s is not a directory\", ErrFileRead, path)\n\t}\n\n\tfiles, err := os.ReadDir(path)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar vm VM\n\tfor _, f := range files {\n\t\tif f.IsDir() {\n\t\t\tcontinue\n\t\t}\n\n\t\tname := filepath.Join(path, f.Name())\n\t\t// ignore errors on read, as there are some write only\n\t\t// in /proc/sys/vm\n\t\tvalue, err := util.SysReadFile(name)\n\t\tif err != nil {\n\t\t\tcontinue\n\t\t}\n\t\tvp := util.NewValueParser(value)\n\n\t\tswitch f.Name() {\n\t\tcase \"admin_reserve_kbytes\":\n\t\t\tvm.AdminReserveKbytes = vp.PInt64()\n\t\tcase \"block_dump\":\n\t\t\tvm.BlockDump = vp.PInt64()\n\t\tcase \"compact_unevictable_allowed\":\n\t\t\tvm.CompactUnevictableAllowed = vp.PInt64()\n\t\tcase \"dirty_background_bytes\":\n\t\t\tvm.DirtyBackgroundBytes = vp.PInt64()\n\t\tcase \"dirty_background_ratio\":\n\t\t\tvm.DirtyBackgroundRatio = vp.PInt64()\n\t\tcase \"dirty_bytes\":\n\t\t\tvm.DirtyBytes = vp.PInt64()\n\t\tcase \"dirty_expire_centisecs\":\n\t\t\tvm.DirtyExpireCentisecs = vp.PInt64()\n\t\tcase \"dirty_ratio\":\n\t\t\tvm.DirtyRatio = vp.PInt64()\n\t\tcase \"dirtytime_expire_seconds\":\n\t\t\tvm.DirtytimeExpireSeconds = vp.PInt64()\n\t\tcase \"dirty_writeback_centisecs\":\n\t\t\tvm.DirtyWritebackCentisecs = vp.PInt64()\n\t\tcase \"drop_caches\":\n\t\t\tvm.DropCaches = vp.PInt64()\n\t\tcase \"extfrag_threshold\":\n\t\t\tvm.ExtfragThreshold = vp.PInt64()\n\t\tcase \"hugetlb_shm_group\":\n\t\t\tvm.HugetlbShmGroup = vp.PInt64()\n\t\tcase \"laptop_mode\":\n\t\t\tvm.LaptopMode = vp.PInt64()\n\t\tcase \"legacy_va_layout\":\n\t\t\tvm.LegacyVaLayout = vp.PInt64()\n\t\tcase \"lowmem_reserve_ratio\":\n\t\t\tstringSlice := strings.Fields(value)\n\t\t\tpint64Slice := make([]*int64, 0, len(stringSlice))\n\t\t\tfor _, value := range stringSlice {\n\t\t\t\tvp := util.NewValueParser(value)\n\t\t\t\tpint64Slice = append(pint64Slice, vp.PInt64())\n\t\t\t}\n\t\t\tvm.LowmemReserveRatio = pint64Slice\n\t\tcase \"max_map_count\":\n\t\t\tvm.MaxMapCount = vp.PInt64()\n\t\tcase \"memory_failure_early_kill\":\n\t\t\tvm.MemoryFailureEarlyKill = vp.PInt64()\n\t\tcase \"memory_failure_recovery\":\n\t\t\tvm.MemoryFailureRecovery = vp.PInt64()\n\t\tcase \"min_free_kbytes\":\n\t\t\tvm.MinFreeKbytes = vp.PInt64()\n\t\tcase \"min_slab_ratio\":\n\t\t\tvm.MinSlabRatio = vp.PInt64()\n\t\tcase \"min_unmapped_ratio\":\n\t\t\tvm.MinUnmappedRatio = vp.PInt64()\n\t\tcase \"mmap_min_addr\":\n\t\t\tvm.MmapMinAddr = vp.PInt64()\n\t\tcase \"nr_hugepages\":\n\t\t\tvm.NrHugepages = vp.PInt64()\n\t\tcase \"nr_hugepages_mempolicy\":\n\t\t\tvm.NrHugepagesMempolicy = vp.PInt64()\n\t\tcase \"nr_overcommit_hugepages\":\n\t\t\tvm.NrOvercommitHugepages = vp.PInt64()\n\t\tcase \"numa_stat\":\n\t\t\tvm.NumaStat = vp.PInt64()\n\t\tcase \"numa_zonelist_order\":\n\t\t\tvm.NumaZonelistOrder = value\n\t\tcase \"oom_dump_tasks\":\n\t\t\tvm.OomDumpTasks = vp.PInt64()\n\t\tcase \"oom_kill_allocating_task\":\n\t\t\tvm.OomKillAllocatingTask = vp.PInt64()\n\t\tcase \"overcommit_kbytes\":\n\t\t\tvm.OvercommitKbytes = vp.PInt64()\n\t\tcase \"overcommit_memory\":\n\t\t\tvm.OvercommitMemory = vp.PInt64()\n\t\tcase \"overcommit_ratio\":\n\t\t\tvm.OvercommitRatio = vp.PInt64()\n\t\tcase \"page-cluster\":\n\t\t\tvm.PageCluster = vp.PInt64()\n\t\tcase \"panic_on_oom\":\n\t\t\tvm.PanicOnOom = vp.PInt64()\n\t\tcase \"percpu_pagelist_fraction\":\n\t\t\tvm.PercpuPagelistFraction = vp.PInt64()\n\t\tcase \"stat_interval\":\n\t\t\tvm.StatInterval = vp.PInt64()\n\t\tcase \"swappiness\":\n\t\t\tvm.Swappiness = vp.PInt64()\n\t\tcase \"user_reserve_kbytes\":\n\t\t\tvm.UserReserveKbytes = vp.PInt64()\n\t\tcase \"vfs_cache_pressure\":\n\t\t\tvm.VfsCachePressure = vp.PInt64()\n\t\tcase \"watermark_boost_factor\":\n\t\t\tvm.WatermarkBoostFactor = vp.PInt64()\n\t\tcase \"watermark_scale_factor\":\n\t\t\tvm.WatermarkScaleFactor = vp.PInt64()\n\t\tcase \"zone_reclaim_mode\":\n\t\t\tvm.ZoneReclaimMode = vp.PInt64()\n\t\t}\n\t\tif err := vp.Err(); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\treturn &vm, nil\n}\n"
  },
  {
    "path": "vendor/github.com/prometheus/procfs/zoneinfo.go",
    "content": "// Copyright The Prometheus Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n//go:build !windows\n// +build !windows\n\npackage procfs\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"os\"\n\t\"regexp\"\n\t\"strings\"\n\n\t\"github.com/prometheus/procfs/internal/util\"\n)\n\n// Zoneinfo holds info parsed from /proc/zoneinfo.\ntype Zoneinfo struct {\n\tNode                       string\n\tZone                       string\n\tNrFreePages                *int64\n\tMin                        *int64\n\tLow                        *int64\n\tHigh                       *int64\n\tScanned                    *int64\n\tSpanned                    *int64\n\tPresent                    *int64\n\tManaged                    *int64\n\tNrActiveAnon               *int64\n\tNrInactiveAnon             *int64\n\tNrIsolatedAnon             *int64\n\tNrAnonPages                *int64\n\tNrAnonTransparentHugepages *int64\n\tNrActiveFile               *int64\n\tNrInactiveFile             *int64\n\tNrIsolatedFile             *int64\n\tNrFilePages                *int64\n\tNrSlabReclaimable          *int64\n\tNrSlabUnreclaimable        *int64\n\tNrMlockStack               *int64\n\tNrKernelStack              *int64\n\tNrMapped                   *int64\n\tNrDirty                    *int64\n\tNrWriteback                *int64\n\tNrUnevictable              *int64\n\tNrShmem                    *int64\n\tNrDirtied                  *int64\n\tNrWritten                  *int64\n\tNumaHit                    *int64\n\tNumaMiss                   *int64\n\tNumaForeign                *int64\n\tNumaInterleave             *int64\n\tNumaLocal                  *int64\n\tNumaOther                  *int64\n\tProtection                 []*int64\n}\n\nvar nodeZoneRE = regexp.MustCompile(`(\\d+), zone\\s+(\\w+)`)\n\n// Zoneinfo parses an zoneinfo-file (/proc/zoneinfo) and returns a slice of\n// structs containing the relevant info.  More information available here:\n// https://www.kernel.org/doc/Documentation/sysctl/vm.txt\nfunc (fs FS) Zoneinfo() ([]Zoneinfo, error) {\n\tdata, err := os.ReadFile(fs.proc.Path(\"zoneinfo\"))\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"%w: error reading zoneinfo %q: %w\", ErrFileRead, fs.proc.Path(\"zoneinfo\"), err)\n\t}\n\tzoneinfo, err := parseZoneinfo(data)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"%w: error parsing zoneinfo %q: %w\", ErrFileParse, fs.proc.Path(\"zoneinfo\"), err)\n\t}\n\treturn zoneinfo, nil\n}\n\nfunc parseZoneinfo(zoneinfoData []byte) ([]Zoneinfo, error) {\n\n\tzoneinfo := []Zoneinfo{}\n\n\tfor block := range bytes.SplitSeq(zoneinfoData, []byte(\"\\nNode\")) {\n\t\tvar zoneinfoElement Zoneinfo\n\t\tfor line := range strings.SplitSeq(string(block), \"\\n\") {\n\n\t\t\tif nodeZone := nodeZoneRE.FindStringSubmatch(line); nodeZone != nil {\n\t\t\t\tzoneinfoElement.Node = nodeZone[1]\n\t\t\t\tzoneinfoElement.Zone = nodeZone[2]\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif strings.HasPrefix(strings.TrimSpace(line), \"per-node stats\") {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tparts := strings.Fields(strings.TrimSpace(line))\n\t\t\tif len(parts) < 2 {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tvp := util.NewValueParser(parts[1])\n\t\t\tswitch parts[0] {\n\t\t\tcase \"nr_free_pages\":\n\t\t\t\tzoneinfoElement.NrFreePages = vp.PInt64()\n\t\t\tcase \"min\":\n\t\t\t\tzoneinfoElement.Min = vp.PInt64()\n\t\t\tcase \"low\":\n\t\t\t\tzoneinfoElement.Low = vp.PInt64()\n\t\t\tcase \"high\":\n\t\t\t\tzoneinfoElement.High = vp.PInt64()\n\t\t\tcase \"scanned\":\n\t\t\t\tzoneinfoElement.Scanned = vp.PInt64()\n\t\t\tcase \"spanned\":\n\t\t\t\tzoneinfoElement.Spanned = vp.PInt64()\n\t\t\tcase \"present\":\n\t\t\t\tzoneinfoElement.Present = vp.PInt64()\n\t\t\tcase \"managed\":\n\t\t\t\tzoneinfoElement.Managed = vp.PInt64()\n\t\t\tcase \"nr_active_anon\":\n\t\t\t\tzoneinfoElement.NrActiveAnon = vp.PInt64()\n\t\t\tcase \"nr_inactive_anon\":\n\t\t\t\tzoneinfoElement.NrInactiveAnon = vp.PInt64()\n\t\t\tcase \"nr_isolated_anon\":\n\t\t\t\tzoneinfoElement.NrIsolatedAnon = vp.PInt64()\n\t\t\tcase \"nr_anon_pages\":\n\t\t\t\tzoneinfoElement.NrAnonPages = vp.PInt64()\n\t\t\tcase \"nr_anon_transparent_hugepages\":\n\t\t\t\tzoneinfoElement.NrAnonTransparentHugepages = vp.PInt64()\n\t\t\tcase \"nr_active_file\":\n\t\t\t\tzoneinfoElement.NrActiveFile = vp.PInt64()\n\t\t\tcase \"nr_inactive_file\":\n\t\t\t\tzoneinfoElement.NrInactiveFile = vp.PInt64()\n\t\t\tcase \"nr_isolated_file\":\n\t\t\t\tzoneinfoElement.NrIsolatedFile = vp.PInt64()\n\t\t\tcase \"nr_file_pages\":\n\t\t\t\tzoneinfoElement.NrFilePages = vp.PInt64()\n\t\t\tcase \"nr_slab_reclaimable\":\n\t\t\t\tzoneinfoElement.NrSlabReclaimable = vp.PInt64()\n\t\t\tcase \"nr_slab_unreclaimable\":\n\t\t\t\tzoneinfoElement.NrSlabUnreclaimable = vp.PInt64()\n\t\t\tcase \"nr_mlock_stack\":\n\t\t\t\tzoneinfoElement.NrMlockStack = vp.PInt64()\n\t\t\tcase \"nr_kernel_stack\":\n\t\t\t\tzoneinfoElement.NrKernelStack = vp.PInt64()\n\t\t\tcase \"nr_mapped\":\n\t\t\t\tzoneinfoElement.NrMapped = vp.PInt64()\n\t\t\tcase \"nr_dirty\":\n\t\t\t\tzoneinfoElement.NrDirty = vp.PInt64()\n\t\t\tcase \"nr_writeback\":\n\t\t\t\tzoneinfoElement.NrWriteback = vp.PInt64()\n\t\t\tcase \"nr_unevictable\":\n\t\t\t\tzoneinfoElement.NrUnevictable = vp.PInt64()\n\t\t\tcase \"nr_shmem\":\n\t\t\t\tzoneinfoElement.NrShmem = vp.PInt64()\n\t\t\tcase \"nr_dirtied\":\n\t\t\t\tzoneinfoElement.NrDirtied = vp.PInt64()\n\t\t\tcase \"nr_written\":\n\t\t\t\tzoneinfoElement.NrWritten = vp.PInt64()\n\t\t\tcase \"numa_hit\":\n\t\t\t\tzoneinfoElement.NumaHit = vp.PInt64()\n\t\t\tcase \"numa_miss\":\n\t\t\t\tzoneinfoElement.NumaMiss = vp.PInt64()\n\t\t\tcase \"numa_foreign\":\n\t\t\t\tzoneinfoElement.NumaForeign = vp.PInt64()\n\t\t\tcase \"numa_interleave\":\n\t\t\t\tzoneinfoElement.NumaInterleave = vp.PInt64()\n\t\t\tcase \"numa_local\":\n\t\t\t\tzoneinfoElement.NumaLocal = vp.PInt64()\n\t\t\tcase \"numa_other\":\n\t\t\t\tzoneinfoElement.NumaOther = vp.PInt64()\n\t\t\tcase \"protection:\":\n\t\t\t\tprotectionParts := strings.Split(line, \":\")\n\t\t\t\tprotectionValues := strings.Replace(protectionParts[1], \"(\", \"\", 1)\n\t\t\t\tprotectionValues = strings.Replace(protectionValues, \")\", \"\", 1)\n\t\t\t\tprotectionValues = strings.TrimSpace(protectionValues)\n\t\t\t\tprotectionStringMap := strings.Split(protectionValues, \", \")\n\t\t\t\tval, err := util.ParsePInt64s(protectionStringMap)\n\t\t\t\tif err == nil {\n\t\t\t\t\tzoneinfoElement.Protection = val\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\tzoneinfo = append(zoneinfo, zoneinfoElement)\n\t}\n\treturn zoneinfo, nil\n}\n"
  },
  {
    "path": "vendor/github.com/stretchr/testify/LICENSE",
    "content": "MIT License\n\nCopyright (c) 2012-2020 Mat Ryer, Tyler Bunnell and contributors.\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 all\ncopies 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 THE\nSOFTWARE.\n"
  },
  {
    "path": "vendor/github.com/stretchr/testify/assert/assertion_compare.go",
    "content": "package assert\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"reflect\"\n\t\"time\"\n)\n\n// Deprecated: CompareType has only ever been for internal use and has accidentally been published since v1.6.0. Do not use it.\ntype CompareType = compareResult\n\ntype compareResult int\n\nconst (\n\tcompareLess compareResult = iota - 1\n\tcompareEqual\n\tcompareGreater\n)\n\nvar (\n\tintType   = reflect.TypeOf(int(1))\n\tint8Type  = reflect.TypeOf(int8(1))\n\tint16Type = reflect.TypeOf(int16(1))\n\tint32Type = reflect.TypeOf(int32(1))\n\tint64Type = reflect.TypeOf(int64(1))\n\n\tuintType   = reflect.TypeOf(uint(1))\n\tuint8Type  = reflect.TypeOf(uint8(1))\n\tuint16Type = reflect.TypeOf(uint16(1))\n\tuint32Type = reflect.TypeOf(uint32(1))\n\tuint64Type = reflect.TypeOf(uint64(1))\n\n\tuintptrType = reflect.TypeOf(uintptr(1))\n\n\tfloat32Type = reflect.TypeOf(float32(1))\n\tfloat64Type = reflect.TypeOf(float64(1))\n\n\tstringType = reflect.TypeOf(\"\")\n\n\ttimeType  = reflect.TypeOf(time.Time{})\n\tbytesType = reflect.TypeOf([]byte{})\n)\n\nfunc compare(obj1, obj2 interface{}, kind reflect.Kind) (compareResult, bool) {\n\tobj1Value := reflect.ValueOf(obj1)\n\tobj2Value := reflect.ValueOf(obj2)\n\n\t// throughout this switch we try and avoid calling .Convert() if possible,\n\t// as this has a pretty big performance impact\n\tswitch kind {\n\tcase reflect.Int:\n\t\t{\n\t\t\tintobj1, ok := obj1.(int)\n\t\t\tif !ok {\n\t\t\t\tintobj1 = obj1Value.Convert(intType).Interface().(int)\n\t\t\t}\n\t\t\tintobj2, ok := obj2.(int)\n\t\t\tif !ok {\n\t\t\t\tintobj2 = obj2Value.Convert(intType).Interface().(int)\n\t\t\t}\n\t\t\tif intobj1 > intobj2 {\n\t\t\t\treturn compareGreater, true\n\t\t\t}\n\t\t\tif intobj1 == intobj2 {\n\t\t\t\treturn compareEqual, true\n\t\t\t}\n\t\t\tif intobj1 < intobj2 {\n\t\t\t\treturn compareLess, true\n\t\t\t}\n\t\t}\n\tcase reflect.Int8:\n\t\t{\n\t\t\tint8obj1, ok := obj1.(int8)\n\t\t\tif !ok {\n\t\t\t\tint8obj1 = obj1Value.Convert(int8Type).Interface().(int8)\n\t\t\t}\n\t\t\tint8obj2, ok := obj2.(int8)\n\t\t\tif !ok {\n\t\t\t\tint8obj2 = obj2Value.Convert(int8Type).Interface().(int8)\n\t\t\t}\n\t\t\tif int8obj1 > int8obj2 {\n\t\t\t\treturn compareGreater, true\n\t\t\t}\n\t\t\tif int8obj1 == int8obj2 {\n\t\t\t\treturn compareEqual, true\n\t\t\t}\n\t\t\tif int8obj1 < int8obj2 {\n\t\t\t\treturn compareLess, true\n\t\t\t}\n\t\t}\n\tcase reflect.Int16:\n\t\t{\n\t\t\tint16obj1, ok := obj1.(int16)\n\t\t\tif !ok {\n\t\t\t\tint16obj1 = obj1Value.Convert(int16Type).Interface().(int16)\n\t\t\t}\n\t\t\tint16obj2, ok := obj2.(int16)\n\t\t\tif !ok {\n\t\t\t\tint16obj2 = obj2Value.Convert(int16Type).Interface().(int16)\n\t\t\t}\n\t\t\tif int16obj1 > int16obj2 {\n\t\t\t\treturn compareGreater, true\n\t\t\t}\n\t\t\tif int16obj1 == int16obj2 {\n\t\t\t\treturn compareEqual, true\n\t\t\t}\n\t\t\tif int16obj1 < int16obj2 {\n\t\t\t\treturn compareLess, true\n\t\t\t}\n\t\t}\n\tcase reflect.Int32:\n\t\t{\n\t\t\tint32obj1, ok := obj1.(int32)\n\t\t\tif !ok {\n\t\t\t\tint32obj1 = obj1Value.Convert(int32Type).Interface().(int32)\n\t\t\t}\n\t\t\tint32obj2, ok := obj2.(int32)\n\t\t\tif !ok {\n\t\t\t\tint32obj2 = obj2Value.Convert(int32Type).Interface().(int32)\n\t\t\t}\n\t\t\tif int32obj1 > int32obj2 {\n\t\t\t\treturn compareGreater, true\n\t\t\t}\n\t\t\tif int32obj1 == int32obj2 {\n\t\t\t\treturn compareEqual, true\n\t\t\t}\n\t\t\tif int32obj1 < int32obj2 {\n\t\t\t\treturn compareLess, true\n\t\t\t}\n\t\t}\n\tcase reflect.Int64:\n\t\t{\n\t\t\tint64obj1, ok := obj1.(int64)\n\t\t\tif !ok {\n\t\t\t\tint64obj1 = obj1Value.Convert(int64Type).Interface().(int64)\n\t\t\t}\n\t\t\tint64obj2, ok := obj2.(int64)\n\t\t\tif !ok {\n\t\t\t\tint64obj2 = obj2Value.Convert(int64Type).Interface().(int64)\n\t\t\t}\n\t\t\tif int64obj1 > int64obj2 {\n\t\t\t\treturn compareGreater, true\n\t\t\t}\n\t\t\tif int64obj1 == int64obj2 {\n\t\t\t\treturn compareEqual, true\n\t\t\t}\n\t\t\tif int64obj1 < int64obj2 {\n\t\t\t\treturn compareLess, true\n\t\t\t}\n\t\t}\n\tcase reflect.Uint:\n\t\t{\n\t\t\tuintobj1, ok := obj1.(uint)\n\t\t\tif !ok {\n\t\t\t\tuintobj1 = obj1Value.Convert(uintType).Interface().(uint)\n\t\t\t}\n\t\t\tuintobj2, ok := obj2.(uint)\n\t\t\tif !ok {\n\t\t\t\tuintobj2 = obj2Value.Convert(uintType).Interface().(uint)\n\t\t\t}\n\t\t\tif uintobj1 > uintobj2 {\n\t\t\t\treturn compareGreater, true\n\t\t\t}\n\t\t\tif uintobj1 == uintobj2 {\n\t\t\t\treturn compareEqual, true\n\t\t\t}\n\t\t\tif uintobj1 < uintobj2 {\n\t\t\t\treturn compareLess, true\n\t\t\t}\n\t\t}\n\tcase reflect.Uint8:\n\t\t{\n\t\t\tuint8obj1, ok := obj1.(uint8)\n\t\t\tif !ok {\n\t\t\t\tuint8obj1 = obj1Value.Convert(uint8Type).Interface().(uint8)\n\t\t\t}\n\t\t\tuint8obj2, ok := obj2.(uint8)\n\t\t\tif !ok {\n\t\t\t\tuint8obj2 = obj2Value.Convert(uint8Type).Interface().(uint8)\n\t\t\t}\n\t\t\tif uint8obj1 > uint8obj2 {\n\t\t\t\treturn compareGreater, true\n\t\t\t}\n\t\t\tif uint8obj1 == uint8obj2 {\n\t\t\t\treturn compareEqual, true\n\t\t\t}\n\t\t\tif uint8obj1 < uint8obj2 {\n\t\t\t\treturn compareLess, true\n\t\t\t}\n\t\t}\n\tcase reflect.Uint16:\n\t\t{\n\t\t\tuint16obj1, ok := obj1.(uint16)\n\t\t\tif !ok {\n\t\t\t\tuint16obj1 = obj1Value.Convert(uint16Type).Interface().(uint16)\n\t\t\t}\n\t\t\tuint16obj2, ok := obj2.(uint16)\n\t\t\tif !ok {\n\t\t\t\tuint16obj2 = obj2Value.Convert(uint16Type).Interface().(uint16)\n\t\t\t}\n\t\t\tif uint16obj1 > uint16obj2 {\n\t\t\t\treturn compareGreater, true\n\t\t\t}\n\t\t\tif uint16obj1 == uint16obj2 {\n\t\t\t\treturn compareEqual, true\n\t\t\t}\n\t\t\tif uint16obj1 < uint16obj2 {\n\t\t\t\treturn compareLess, true\n\t\t\t}\n\t\t}\n\tcase reflect.Uint32:\n\t\t{\n\t\t\tuint32obj1, ok := obj1.(uint32)\n\t\t\tif !ok {\n\t\t\t\tuint32obj1 = obj1Value.Convert(uint32Type).Interface().(uint32)\n\t\t\t}\n\t\t\tuint32obj2, ok := obj2.(uint32)\n\t\t\tif !ok {\n\t\t\t\tuint32obj2 = obj2Value.Convert(uint32Type).Interface().(uint32)\n\t\t\t}\n\t\t\tif uint32obj1 > uint32obj2 {\n\t\t\t\treturn compareGreater, true\n\t\t\t}\n\t\t\tif uint32obj1 == uint32obj2 {\n\t\t\t\treturn compareEqual, true\n\t\t\t}\n\t\t\tif uint32obj1 < uint32obj2 {\n\t\t\t\treturn compareLess, true\n\t\t\t}\n\t\t}\n\tcase reflect.Uint64:\n\t\t{\n\t\t\tuint64obj1, ok := obj1.(uint64)\n\t\t\tif !ok {\n\t\t\t\tuint64obj1 = obj1Value.Convert(uint64Type).Interface().(uint64)\n\t\t\t}\n\t\t\tuint64obj2, ok := obj2.(uint64)\n\t\t\tif !ok {\n\t\t\t\tuint64obj2 = obj2Value.Convert(uint64Type).Interface().(uint64)\n\t\t\t}\n\t\t\tif uint64obj1 > uint64obj2 {\n\t\t\t\treturn compareGreater, true\n\t\t\t}\n\t\t\tif uint64obj1 == uint64obj2 {\n\t\t\t\treturn compareEqual, true\n\t\t\t}\n\t\t\tif uint64obj1 < uint64obj2 {\n\t\t\t\treturn compareLess, true\n\t\t\t}\n\t\t}\n\tcase reflect.Float32:\n\t\t{\n\t\t\tfloat32obj1, ok := obj1.(float32)\n\t\t\tif !ok {\n\t\t\t\tfloat32obj1 = obj1Value.Convert(float32Type).Interface().(float32)\n\t\t\t}\n\t\t\tfloat32obj2, ok := obj2.(float32)\n\t\t\tif !ok {\n\t\t\t\tfloat32obj2 = obj2Value.Convert(float32Type).Interface().(float32)\n\t\t\t}\n\t\t\tif float32obj1 > float32obj2 {\n\t\t\t\treturn compareGreater, true\n\t\t\t}\n\t\t\tif float32obj1 == float32obj2 {\n\t\t\t\treturn compareEqual, true\n\t\t\t}\n\t\t\tif float32obj1 < float32obj2 {\n\t\t\t\treturn compareLess, true\n\t\t\t}\n\t\t}\n\tcase reflect.Float64:\n\t\t{\n\t\t\tfloat64obj1, ok := obj1.(float64)\n\t\t\tif !ok {\n\t\t\t\tfloat64obj1 = obj1Value.Convert(float64Type).Interface().(float64)\n\t\t\t}\n\t\t\tfloat64obj2, ok := obj2.(float64)\n\t\t\tif !ok {\n\t\t\t\tfloat64obj2 = obj2Value.Convert(float64Type).Interface().(float64)\n\t\t\t}\n\t\t\tif float64obj1 > float64obj2 {\n\t\t\t\treturn compareGreater, true\n\t\t\t}\n\t\t\tif float64obj1 == float64obj2 {\n\t\t\t\treturn compareEqual, true\n\t\t\t}\n\t\t\tif float64obj1 < float64obj2 {\n\t\t\t\treturn compareLess, true\n\t\t\t}\n\t\t}\n\tcase reflect.String:\n\t\t{\n\t\t\tstringobj1, ok := obj1.(string)\n\t\t\tif !ok {\n\t\t\t\tstringobj1 = obj1Value.Convert(stringType).Interface().(string)\n\t\t\t}\n\t\t\tstringobj2, ok := obj2.(string)\n\t\t\tif !ok {\n\t\t\t\tstringobj2 = obj2Value.Convert(stringType).Interface().(string)\n\t\t\t}\n\t\t\tif stringobj1 > stringobj2 {\n\t\t\t\treturn compareGreater, true\n\t\t\t}\n\t\t\tif stringobj1 == stringobj2 {\n\t\t\t\treturn compareEqual, true\n\t\t\t}\n\t\t\tif stringobj1 < stringobj2 {\n\t\t\t\treturn compareLess, true\n\t\t\t}\n\t\t}\n\t// Check for known struct types we can check for compare results.\n\tcase reflect.Struct:\n\t\t{\n\t\t\t// All structs enter here. We're not interested in most types.\n\t\t\tif !obj1Value.CanConvert(timeType) {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\t// time.Time can be compared!\n\t\t\ttimeObj1, ok := obj1.(time.Time)\n\t\t\tif !ok {\n\t\t\t\ttimeObj1 = obj1Value.Convert(timeType).Interface().(time.Time)\n\t\t\t}\n\n\t\t\ttimeObj2, ok := obj2.(time.Time)\n\t\t\tif !ok {\n\t\t\t\ttimeObj2 = obj2Value.Convert(timeType).Interface().(time.Time)\n\t\t\t}\n\n\t\t\tif timeObj1.Before(timeObj2) {\n\t\t\t\treturn compareLess, true\n\t\t\t}\n\t\t\tif timeObj1.Equal(timeObj2) {\n\t\t\t\treturn compareEqual, true\n\t\t\t}\n\t\t\treturn compareGreater, true\n\t\t}\n\tcase reflect.Slice:\n\t\t{\n\t\t\t// We only care about the []byte type.\n\t\t\tif !obj1Value.CanConvert(bytesType) {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\t// []byte can be compared!\n\t\t\tbytesObj1, ok := obj1.([]byte)\n\t\t\tif !ok {\n\t\t\t\tbytesObj1 = obj1Value.Convert(bytesType).Interface().([]byte)\n\n\t\t\t}\n\t\t\tbytesObj2, ok := obj2.([]byte)\n\t\t\tif !ok {\n\t\t\t\tbytesObj2 = obj2Value.Convert(bytesType).Interface().([]byte)\n\t\t\t}\n\n\t\t\treturn compareResult(bytes.Compare(bytesObj1, bytesObj2)), true\n\t\t}\n\tcase reflect.Uintptr:\n\t\t{\n\t\t\tuintptrObj1, ok := obj1.(uintptr)\n\t\t\tif !ok {\n\t\t\t\tuintptrObj1 = obj1Value.Convert(uintptrType).Interface().(uintptr)\n\t\t\t}\n\t\t\tuintptrObj2, ok := obj2.(uintptr)\n\t\t\tif !ok {\n\t\t\t\tuintptrObj2 = obj2Value.Convert(uintptrType).Interface().(uintptr)\n\t\t\t}\n\t\t\tif uintptrObj1 > uintptrObj2 {\n\t\t\t\treturn compareGreater, true\n\t\t\t}\n\t\t\tif uintptrObj1 == uintptrObj2 {\n\t\t\t\treturn compareEqual, true\n\t\t\t}\n\t\t\tif uintptrObj1 < uintptrObj2 {\n\t\t\t\treturn compareLess, true\n\t\t\t}\n\t\t}\n\t}\n\n\treturn compareEqual, false\n}\n\n// Greater asserts that the first element is greater than the second\n//\n//\tassert.Greater(t, 2, 1)\n//\tassert.Greater(t, float64(2), float64(1))\n//\tassert.Greater(t, \"b\", \"a\")\nfunc Greater(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tfailMessage := fmt.Sprintf(\"\\\"%v\\\" is not greater than \\\"%v\\\"\", e1, e2)\n\treturn compareTwoValues(t, e1, e2, []compareResult{compareGreater}, failMessage, msgAndArgs...)\n}\n\n// GreaterOrEqual asserts that the first element is greater than or equal to the second\n//\n//\tassert.GreaterOrEqual(t, 2, 1)\n//\tassert.GreaterOrEqual(t, 2, 2)\n//\tassert.GreaterOrEqual(t, \"b\", \"a\")\n//\tassert.GreaterOrEqual(t, \"b\", \"b\")\nfunc GreaterOrEqual(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tfailMessage := fmt.Sprintf(\"\\\"%v\\\" is not greater than or equal to \\\"%v\\\"\", e1, e2)\n\treturn compareTwoValues(t, e1, e2, []compareResult{compareGreater, compareEqual}, failMessage, msgAndArgs...)\n}\n\n// Less asserts that the first element is less than the second\n//\n//\tassert.Less(t, 1, 2)\n//\tassert.Less(t, float64(1), float64(2))\n//\tassert.Less(t, \"a\", \"b\")\nfunc Less(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tfailMessage := fmt.Sprintf(\"\\\"%v\\\" is not less than \\\"%v\\\"\", e1, e2)\n\treturn compareTwoValues(t, e1, e2, []compareResult{compareLess}, failMessage, msgAndArgs...)\n}\n\n// LessOrEqual asserts that the first element is less than or equal to the second\n//\n//\tassert.LessOrEqual(t, 1, 2)\n//\tassert.LessOrEqual(t, 2, 2)\n//\tassert.LessOrEqual(t, \"a\", \"b\")\n//\tassert.LessOrEqual(t, \"b\", \"b\")\nfunc LessOrEqual(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tfailMessage := fmt.Sprintf(\"\\\"%v\\\" is not less than or equal to \\\"%v\\\"\", e1, e2)\n\treturn compareTwoValues(t, e1, e2, []compareResult{compareLess, compareEqual}, failMessage, msgAndArgs...)\n}\n\n// Positive asserts that the specified element is positive\n//\n//\tassert.Positive(t, 1)\n//\tassert.Positive(t, 1.23)\nfunc Positive(t TestingT, e interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tzero := reflect.Zero(reflect.TypeOf(e))\n\tfailMessage := fmt.Sprintf(\"\\\"%v\\\" is not positive\", e)\n\treturn compareTwoValues(t, e, zero.Interface(), []compareResult{compareGreater}, failMessage, msgAndArgs...)\n}\n\n// Negative asserts that the specified element is negative\n//\n//\tassert.Negative(t, -1)\n//\tassert.Negative(t, -1.23)\nfunc Negative(t TestingT, e interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tzero := reflect.Zero(reflect.TypeOf(e))\n\tfailMessage := fmt.Sprintf(\"\\\"%v\\\" is not negative\", e)\n\treturn compareTwoValues(t, e, zero.Interface(), []compareResult{compareLess}, failMessage, msgAndArgs...)\n}\n\nfunc compareTwoValues(t TestingT, e1 interface{}, e2 interface{}, allowedComparesResults []compareResult, failMessage string, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\n\te1Kind := reflect.ValueOf(e1).Kind()\n\te2Kind := reflect.ValueOf(e2).Kind()\n\tif e1Kind != e2Kind {\n\t\treturn Fail(t, \"Elements should be the same type\", msgAndArgs...)\n\t}\n\n\tcompareResult, isComparable := compare(e1, e2, e1Kind)\n\tif !isComparable {\n\t\treturn Fail(t, fmt.Sprintf(`Can not compare type \"%T\"`, e1), msgAndArgs...)\n\t}\n\n\tif !containsValue(allowedComparesResults, compareResult) {\n\t\treturn Fail(t, failMessage, msgAndArgs...)\n\t}\n\n\treturn true\n}\n\nfunc containsValue(values []compareResult, value compareResult) bool {\n\tfor _, v := range values {\n\t\tif v == value {\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn false\n}\n"
  },
  {
    "path": "vendor/github.com/stretchr/testify/assert/assertion_format.go",
    "content": "// Code generated with github.com/stretchr/testify/_codegen; DO NOT EDIT.\n\npackage assert\n\nimport (\n\thttp \"net/http\"\n\turl \"net/url\"\n\ttime \"time\"\n)\n\n// Conditionf uses a Comparison to assert a complex condition.\nfunc Conditionf(t TestingT, comp Comparison, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Condition(t, comp, append([]interface{}{msg}, args...)...)\n}\n\n// Containsf asserts that the specified string, list(array, slice...) or map contains the\n// specified substring or element.\n//\n//\tassert.Containsf(t, \"Hello World\", \"World\", \"error message %s\", \"formatted\")\n//\tassert.Containsf(t, [\"Hello\", \"World\"], \"World\", \"error message %s\", \"formatted\")\n//\tassert.Containsf(t, {\"Hello\": \"World\"}, \"Hello\", \"error message %s\", \"formatted\")\nfunc Containsf(t TestingT, s interface{}, contains interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Contains(t, s, contains, append([]interface{}{msg}, args...)...)\n}\n\n// DirExistsf checks whether a directory exists in the given path. It also fails\n// if the path is a file rather a directory or there is an error checking whether it exists.\nfunc DirExistsf(t TestingT, path string, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn DirExists(t, path, append([]interface{}{msg}, args...)...)\n}\n\n// ElementsMatchf asserts that the specified listA(array, slice...) is equal to specified\n// listB(array, slice...) ignoring the order of the elements. If there are duplicate elements,\n// the number of appearances of each of them in both lists should match.\n//\n// assert.ElementsMatchf(t, [1, 3, 2, 3], [1, 3, 3, 2], \"error message %s\", \"formatted\")\nfunc ElementsMatchf(t TestingT, listA interface{}, listB interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn ElementsMatch(t, listA, listB, append([]interface{}{msg}, args...)...)\n}\n\n// Emptyf asserts that the given value is \"empty\".\n//\n// [Zero values] are \"empty\".\n//\n// Arrays are \"empty\" if every element is the zero value of the type (stricter than \"empty\").\n//\n// Slices, maps and channels with zero length are \"empty\".\n//\n// Pointer values are \"empty\" if the pointer is nil or if the pointed value is \"empty\".\n//\n//\tassert.Emptyf(t, obj, \"error message %s\", \"formatted\")\n//\n// [Zero values]: https://go.dev/ref/spec#The_zero_value\nfunc Emptyf(t TestingT, object interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Empty(t, object, append([]interface{}{msg}, args...)...)\n}\n\n// Equalf asserts that two objects are equal.\n//\n//\tassert.Equalf(t, 123, 123, \"error message %s\", \"formatted\")\n//\n// Pointer variable equality is determined based on the equality of the\n// referenced values (as opposed to the memory addresses). Function equality\n// cannot be determined and will always fail.\nfunc Equalf(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Equal(t, expected, actual, append([]interface{}{msg}, args...)...)\n}\n\n// EqualErrorf asserts that a function returned an error (i.e. not `nil`)\n// and that it is equal to the provided error.\n//\n//\tactualObj, err := SomeFunction()\n//\tassert.EqualErrorf(t, err,  expectedErrorString, \"error message %s\", \"formatted\")\nfunc EqualErrorf(t TestingT, theError error, errString string, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn EqualError(t, theError, errString, append([]interface{}{msg}, args...)...)\n}\n\n// EqualExportedValuesf asserts that the types of two objects are equal and their public\n// fields are also equal. This is useful for comparing structs that have private fields\n// that could potentially differ.\n//\n//\t type S struct {\n//\t\tExported     \tint\n//\t\tnotExported   \tint\n//\t }\n//\t assert.EqualExportedValuesf(t, S{1, 2}, S{1, 3}, \"error message %s\", \"formatted\") => true\n//\t assert.EqualExportedValuesf(t, S{1, 2}, S{2, 3}, \"error message %s\", \"formatted\") => false\nfunc EqualExportedValuesf(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn EqualExportedValues(t, expected, actual, append([]interface{}{msg}, args...)...)\n}\n\n// EqualValuesf asserts that two objects are equal or convertible to the larger\n// type and equal.\n//\n//\tassert.EqualValuesf(t, uint32(123), int32(123), \"error message %s\", \"formatted\")\nfunc EqualValuesf(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn EqualValues(t, expected, actual, append([]interface{}{msg}, args...)...)\n}\n\n// Errorf asserts that a function returned an error (i.e. not `nil`).\n//\n//\tactualObj, err := SomeFunction()\n//\tassert.Errorf(t, err, \"error message %s\", \"formatted\")\nfunc Errorf(t TestingT, err error, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Error(t, err, append([]interface{}{msg}, args...)...)\n}\n\n// ErrorAsf asserts that at least one of the errors in err's chain matches target, and if so, sets target to that error value.\n// This is a wrapper for errors.As.\nfunc ErrorAsf(t TestingT, err error, target interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn ErrorAs(t, err, target, append([]interface{}{msg}, args...)...)\n}\n\n// ErrorContainsf asserts that a function returned an error (i.e. not `nil`)\n// and that the error contains the specified substring.\n//\n//\tactualObj, err := SomeFunction()\n//\tassert.ErrorContainsf(t, err,  expectedErrorSubString, \"error message %s\", \"formatted\")\nfunc ErrorContainsf(t TestingT, theError error, contains string, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn ErrorContains(t, theError, contains, append([]interface{}{msg}, args...)...)\n}\n\n// ErrorIsf asserts that at least one of the errors in err's chain matches target.\n// This is a wrapper for errors.Is.\nfunc ErrorIsf(t TestingT, err error, target error, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn ErrorIs(t, err, target, append([]interface{}{msg}, args...)...)\n}\n\n// Eventuallyf asserts that given condition will be met in waitFor time,\n// periodically checking target function each tick.\n//\n//\tassert.Eventuallyf(t, func() bool { return true; }, time.Second, 10*time.Millisecond, \"error message %s\", \"formatted\")\nfunc Eventuallyf(t TestingT, condition func() bool, waitFor time.Duration, tick time.Duration, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Eventually(t, condition, waitFor, tick, append([]interface{}{msg}, args...)...)\n}\n\n// EventuallyWithTf asserts that given condition will be met in waitFor time,\n// periodically checking target function each tick. In contrast to Eventually,\n// it supplies a CollectT to the condition function, so that the condition\n// function can use the CollectT to call other assertions.\n// The condition is considered \"met\" if no errors are raised in a tick.\n// The supplied CollectT collects all errors from one tick (if there are any).\n// If the condition is not met before waitFor, the collected errors of\n// the last tick are copied to t.\n//\n//\texternalValue := false\n//\tgo func() {\n//\t\ttime.Sleep(8*time.Second)\n//\t\texternalValue = true\n//\t}()\n//\tassert.EventuallyWithTf(t, func(c *assert.CollectT, \"error message %s\", \"formatted\") {\n//\t\t// add assertions as needed; any assertion failure will fail the current tick\n//\t\tassert.True(c, externalValue, \"expected 'externalValue' to be true\")\n//\t}, 10*time.Second, 1*time.Second, \"external state has not changed to 'true'; still false\")\nfunc EventuallyWithTf(t TestingT, condition func(collect *CollectT), waitFor time.Duration, tick time.Duration, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn EventuallyWithT(t, condition, waitFor, tick, append([]interface{}{msg}, args...)...)\n}\n\n// Exactlyf asserts that two objects are equal in value and type.\n//\n//\tassert.Exactlyf(t, int32(123), int64(123), \"error message %s\", \"formatted\")\nfunc Exactlyf(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Exactly(t, expected, actual, append([]interface{}{msg}, args...)...)\n}\n\n// Failf reports a failure through\nfunc Failf(t TestingT, failureMessage string, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Fail(t, failureMessage, append([]interface{}{msg}, args...)...)\n}\n\n// FailNowf fails test\nfunc FailNowf(t TestingT, failureMessage string, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn FailNow(t, failureMessage, append([]interface{}{msg}, args...)...)\n}\n\n// Falsef asserts that the specified value is false.\n//\n//\tassert.Falsef(t, myBool, \"error message %s\", \"formatted\")\nfunc Falsef(t TestingT, value bool, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn False(t, value, append([]interface{}{msg}, args...)...)\n}\n\n// FileExistsf checks whether a file exists in the given path. It also fails if\n// the path points to a directory or there is an error when trying to check the file.\nfunc FileExistsf(t TestingT, path string, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn FileExists(t, path, append([]interface{}{msg}, args...)...)\n}\n\n// Greaterf asserts that the first element is greater than the second\n//\n//\tassert.Greaterf(t, 2, 1, \"error message %s\", \"formatted\")\n//\tassert.Greaterf(t, float64(2), float64(1), \"error message %s\", \"formatted\")\n//\tassert.Greaterf(t, \"b\", \"a\", \"error message %s\", \"formatted\")\nfunc Greaterf(t TestingT, e1 interface{}, e2 interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Greater(t, e1, e2, append([]interface{}{msg}, args...)...)\n}\n\n// GreaterOrEqualf asserts that the first element is greater than or equal to the second\n//\n//\tassert.GreaterOrEqualf(t, 2, 1, \"error message %s\", \"formatted\")\n//\tassert.GreaterOrEqualf(t, 2, 2, \"error message %s\", \"formatted\")\n//\tassert.GreaterOrEqualf(t, \"b\", \"a\", \"error message %s\", \"formatted\")\n//\tassert.GreaterOrEqualf(t, \"b\", \"b\", \"error message %s\", \"formatted\")\nfunc GreaterOrEqualf(t TestingT, e1 interface{}, e2 interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn GreaterOrEqual(t, e1, e2, append([]interface{}{msg}, args...)...)\n}\n\n// HTTPBodyContainsf asserts that a specified handler returns a\n// body that contains a string.\n//\n//\tassert.HTTPBodyContainsf(t, myHandler, \"GET\", \"www.google.com\", nil, \"I'm Feeling Lucky\", \"error message %s\", \"formatted\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc HTTPBodyContainsf(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn HTTPBodyContains(t, handler, method, url, values, str, append([]interface{}{msg}, args...)...)\n}\n\n// HTTPBodyNotContainsf asserts that a specified handler returns a\n// body that does not contain a string.\n//\n//\tassert.HTTPBodyNotContainsf(t, myHandler, \"GET\", \"www.google.com\", nil, \"I'm Feeling Lucky\", \"error message %s\", \"formatted\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc HTTPBodyNotContainsf(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn HTTPBodyNotContains(t, handler, method, url, values, str, append([]interface{}{msg}, args...)...)\n}\n\n// HTTPErrorf asserts that a specified handler returns an error status code.\n//\n//\tassert.HTTPErrorf(t, myHandler, \"POST\", \"/a/b/c\", url.Values{\"a\": []string{\"b\", \"c\"}}\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc HTTPErrorf(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn HTTPError(t, handler, method, url, values, append([]interface{}{msg}, args...)...)\n}\n\n// HTTPRedirectf asserts that a specified handler returns a redirect status code.\n//\n//\tassert.HTTPRedirectf(t, myHandler, \"GET\", \"/a/b/c\", url.Values{\"a\": []string{\"b\", \"c\"}}\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc HTTPRedirectf(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn HTTPRedirect(t, handler, method, url, values, append([]interface{}{msg}, args...)...)\n}\n\n// HTTPStatusCodef asserts that a specified handler returns a specified status code.\n//\n//\tassert.HTTPStatusCodef(t, myHandler, \"GET\", \"/notImplemented\", nil, 501, \"error message %s\", \"formatted\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc HTTPStatusCodef(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, statuscode int, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn HTTPStatusCode(t, handler, method, url, values, statuscode, append([]interface{}{msg}, args...)...)\n}\n\n// HTTPSuccessf asserts that a specified handler returns a success status code.\n//\n//\tassert.HTTPSuccessf(t, myHandler, \"POST\", \"http://www.google.com\", nil, \"error message %s\", \"formatted\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc HTTPSuccessf(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn HTTPSuccess(t, handler, method, url, values, append([]interface{}{msg}, args...)...)\n}\n\n// Implementsf asserts that an object is implemented by the specified interface.\n//\n//\tassert.Implementsf(t, (*MyInterface)(nil), new(MyObject), \"error message %s\", \"formatted\")\nfunc Implementsf(t TestingT, interfaceObject interface{}, object interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Implements(t, interfaceObject, object, append([]interface{}{msg}, args...)...)\n}\n\n// InDeltaf asserts that the two numerals are within delta of each other.\n//\n//\tassert.InDeltaf(t, math.Pi, 22/7.0, 0.01, \"error message %s\", \"formatted\")\nfunc InDeltaf(t TestingT, expected interface{}, actual interface{}, delta float64, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn InDelta(t, expected, actual, delta, append([]interface{}{msg}, args...)...)\n}\n\n// InDeltaMapValuesf is the same as InDelta, but it compares all values between two maps. Both maps must have exactly the same keys.\nfunc InDeltaMapValuesf(t TestingT, expected interface{}, actual interface{}, delta float64, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn InDeltaMapValues(t, expected, actual, delta, append([]interface{}{msg}, args...)...)\n}\n\n// InDeltaSlicef is the same as InDelta, except it compares two slices.\nfunc InDeltaSlicef(t TestingT, expected interface{}, actual interface{}, delta float64, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn InDeltaSlice(t, expected, actual, delta, append([]interface{}{msg}, args...)...)\n}\n\n// InEpsilonf asserts that expected and actual have a relative error less than epsilon\nfunc InEpsilonf(t TestingT, expected interface{}, actual interface{}, epsilon float64, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn InEpsilon(t, expected, actual, epsilon, append([]interface{}{msg}, args...)...)\n}\n\n// InEpsilonSlicef is the same as InEpsilon, except it compares each value from two slices.\nfunc InEpsilonSlicef(t TestingT, expected interface{}, actual interface{}, epsilon float64, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn InEpsilonSlice(t, expected, actual, epsilon, append([]interface{}{msg}, args...)...)\n}\n\n// IsDecreasingf asserts that the collection is decreasing\n//\n//\tassert.IsDecreasingf(t, []int{2, 1, 0}, \"error message %s\", \"formatted\")\n//\tassert.IsDecreasingf(t, []float{2, 1}, \"error message %s\", \"formatted\")\n//\tassert.IsDecreasingf(t, []string{\"b\", \"a\"}, \"error message %s\", \"formatted\")\nfunc IsDecreasingf(t TestingT, object interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn IsDecreasing(t, object, append([]interface{}{msg}, args...)...)\n}\n\n// IsIncreasingf asserts that the collection is increasing\n//\n//\tassert.IsIncreasingf(t, []int{1, 2, 3}, \"error message %s\", \"formatted\")\n//\tassert.IsIncreasingf(t, []float{1, 2}, \"error message %s\", \"formatted\")\n//\tassert.IsIncreasingf(t, []string{\"a\", \"b\"}, \"error message %s\", \"formatted\")\nfunc IsIncreasingf(t TestingT, object interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn IsIncreasing(t, object, append([]interface{}{msg}, args...)...)\n}\n\n// IsNonDecreasingf asserts that the collection is not decreasing\n//\n//\tassert.IsNonDecreasingf(t, []int{1, 1, 2}, \"error message %s\", \"formatted\")\n//\tassert.IsNonDecreasingf(t, []float{1, 2}, \"error message %s\", \"formatted\")\n//\tassert.IsNonDecreasingf(t, []string{\"a\", \"b\"}, \"error message %s\", \"formatted\")\nfunc IsNonDecreasingf(t TestingT, object interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn IsNonDecreasing(t, object, append([]interface{}{msg}, args...)...)\n}\n\n// IsNonIncreasingf asserts that the collection is not increasing\n//\n//\tassert.IsNonIncreasingf(t, []int{2, 1, 1}, \"error message %s\", \"formatted\")\n//\tassert.IsNonIncreasingf(t, []float{2, 1}, \"error message %s\", \"formatted\")\n//\tassert.IsNonIncreasingf(t, []string{\"b\", \"a\"}, \"error message %s\", \"formatted\")\nfunc IsNonIncreasingf(t TestingT, object interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn IsNonIncreasing(t, object, append([]interface{}{msg}, args...)...)\n}\n\n// IsNotTypef asserts that the specified objects are not of the same type.\n//\n//\tassert.IsNotTypef(t, &NotMyStruct{}, &MyStruct{}, \"error message %s\", \"formatted\")\nfunc IsNotTypef(t TestingT, theType interface{}, object interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn IsNotType(t, theType, object, append([]interface{}{msg}, args...)...)\n}\n\n// IsTypef asserts that the specified objects are of the same type.\n//\n//\tassert.IsTypef(t, &MyStruct{}, &MyStruct{}, \"error message %s\", \"formatted\")\nfunc IsTypef(t TestingT, expectedType interface{}, object interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn IsType(t, expectedType, object, append([]interface{}{msg}, args...)...)\n}\n\n// JSONEqf asserts that two JSON strings are equivalent.\n//\n//\tassert.JSONEqf(t, `{\"hello\": \"world\", \"foo\": \"bar\"}`, `{\"foo\": \"bar\", \"hello\": \"world\"}`, \"error message %s\", \"formatted\")\nfunc JSONEqf(t TestingT, expected string, actual string, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn JSONEq(t, expected, actual, append([]interface{}{msg}, args...)...)\n}\n\n// Lenf asserts that the specified object has specific length.\n// Lenf also fails if the object has a type that len() not accept.\n//\n//\tassert.Lenf(t, mySlice, 3, \"error message %s\", \"formatted\")\nfunc Lenf(t TestingT, object interface{}, length int, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Len(t, object, length, append([]interface{}{msg}, args...)...)\n}\n\n// Lessf asserts that the first element is less than the second\n//\n//\tassert.Lessf(t, 1, 2, \"error message %s\", \"formatted\")\n//\tassert.Lessf(t, float64(1), float64(2), \"error message %s\", \"formatted\")\n//\tassert.Lessf(t, \"a\", \"b\", \"error message %s\", \"formatted\")\nfunc Lessf(t TestingT, e1 interface{}, e2 interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Less(t, e1, e2, append([]interface{}{msg}, args...)...)\n}\n\n// LessOrEqualf asserts that the first element is less than or equal to the second\n//\n//\tassert.LessOrEqualf(t, 1, 2, \"error message %s\", \"formatted\")\n//\tassert.LessOrEqualf(t, 2, 2, \"error message %s\", \"formatted\")\n//\tassert.LessOrEqualf(t, \"a\", \"b\", \"error message %s\", \"formatted\")\n//\tassert.LessOrEqualf(t, \"b\", \"b\", \"error message %s\", \"formatted\")\nfunc LessOrEqualf(t TestingT, e1 interface{}, e2 interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn LessOrEqual(t, e1, e2, append([]interface{}{msg}, args...)...)\n}\n\n// Negativef asserts that the specified element is negative\n//\n//\tassert.Negativef(t, -1, \"error message %s\", \"formatted\")\n//\tassert.Negativef(t, -1.23, \"error message %s\", \"formatted\")\nfunc Negativef(t TestingT, e interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Negative(t, e, append([]interface{}{msg}, args...)...)\n}\n\n// Neverf asserts that the given condition doesn't satisfy in waitFor time,\n// periodically checking the target function each tick.\n//\n//\tassert.Neverf(t, func() bool { return false; }, time.Second, 10*time.Millisecond, \"error message %s\", \"formatted\")\nfunc Neverf(t TestingT, condition func() bool, waitFor time.Duration, tick time.Duration, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Never(t, condition, waitFor, tick, append([]interface{}{msg}, args...)...)\n}\n\n// Nilf asserts that the specified object is nil.\n//\n//\tassert.Nilf(t, err, \"error message %s\", \"formatted\")\nfunc Nilf(t TestingT, object interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Nil(t, object, append([]interface{}{msg}, args...)...)\n}\n\n// NoDirExistsf checks whether a directory does not exist in the given path.\n// It fails if the path points to an existing _directory_ only.\nfunc NoDirExistsf(t TestingT, path string, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NoDirExists(t, path, append([]interface{}{msg}, args...)...)\n}\n\n// NoErrorf asserts that a function returned no error (i.e. `nil`).\n//\n//\t  actualObj, err := SomeFunction()\n//\t  if assert.NoErrorf(t, err, \"error message %s\", \"formatted\") {\n//\t\t   assert.Equal(t, expectedObj, actualObj)\n//\t  }\nfunc NoErrorf(t TestingT, err error, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NoError(t, err, append([]interface{}{msg}, args...)...)\n}\n\n// NoFileExistsf checks whether a file does not exist in a given path. It fails\n// if the path points to an existing _file_ only.\nfunc NoFileExistsf(t TestingT, path string, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NoFileExists(t, path, append([]interface{}{msg}, args...)...)\n}\n\n// NotContainsf asserts that the specified string, list(array, slice...) or map does NOT contain the\n// specified substring or element.\n//\n//\tassert.NotContainsf(t, \"Hello World\", \"Earth\", \"error message %s\", \"formatted\")\n//\tassert.NotContainsf(t, [\"Hello\", \"World\"], \"Earth\", \"error message %s\", \"formatted\")\n//\tassert.NotContainsf(t, {\"Hello\": \"World\"}, \"Earth\", \"error message %s\", \"formatted\")\nfunc NotContainsf(t TestingT, s interface{}, contains interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotContains(t, s, contains, append([]interface{}{msg}, args...)...)\n}\n\n// NotElementsMatchf asserts that the specified listA(array, slice...) is NOT equal to specified\n// listB(array, slice...) ignoring the order of the elements. If there are duplicate elements,\n// the number of appearances of each of them in both lists should not match.\n// This is an inverse of ElementsMatch.\n//\n// assert.NotElementsMatchf(t, [1, 1, 2, 3], [1, 1, 2, 3], \"error message %s\", \"formatted\") -> false\n//\n// assert.NotElementsMatchf(t, [1, 1, 2, 3], [1, 2, 3], \"error message %s\", \"formatted\") -> true\n//\n// assert.NotElementsMatchf(t, [1, 2, 3], [1, 2, 4], \"error message %s\", \"formatted\") -> true\nfunc NotElementsMatchf(t TestingT, listA interface{}, listB interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotElementsMatch(t, listA, listB, append([]interface{}{msg}, args...)...)\n}\n\n// NotEmptyf asserts that the specified object is NOT [Empty].\n//\n//\tif assert.NotEmptyf(t, obj, \"error message %s\", \"formatted\") {\n//\t  assert.Equal(t, \"two\", obj[1])\n//\t}\nfunc NotEmptyf(t TestingT, object interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotEmpty(t, object, append([]interface{}{msg}, args...)...)\n}\n\n// NotEqualf asserts that the specified values are NOT equal.\n//\n//\tassert.NotEqualf(t, obj1, obj2, \"error message %s\", \"formatted\")\n//\n// Pointer variable equality is determined based on the equality of the\n// referenced values (as opposed to the memory addresses).\nfunc NotEqualf(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotEqual(t, expected, actual, append([]interface{}{msg}, args...)...)\n}\n\n// NotEqualValuesf asserts that two objects are not equal even when converted to the same type\n//\n//\tassert.NotEqualValuesf(t, obj1, obj2, \"error message %s\", \"formatted\")\nfunc NotEqualValuesf(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotEqualValues(t, expected, actual, append([]interface{}{msg}, args...)...)\n}\n\n// NotErrorAsf asserts that none of the errors in err's chain matches target,\n// but if so, sets target to that error value.\nfunc NotErrorAsf(t TestingT, err error, target interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotErrorAs(t, err, target, append([]interface{}{msg}, args...)...)\n}\n\n// NotErrorIsf asserts that none of the errors in err's chain matches target.\n// This is a wrapper for errors.Is.\nfunc NotErrorIsf(t TestingT, err error, target error, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotErrorIs(t, err, target, append([]interface{}{msg}, args...)...)\n}\n\n// NotImplementsf asserts that an object does not implement the specified interface.\n//\n//\tassert.NotImplementsf(t, (*MyInterface)(nil), new(MyObject), \"error message %s\", \"formatted\")\nfunc NotImplementsf(t TestingT, interfaceObject interface{}, object interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotImplements(t, interfaceObject, object, append([]interface{}{msg}, args...)...)\n}\n\n// NotNilf asserts that the specified object is not nil.\n//\n//\tassert.NotNilf(t, err, \"error message %s\", \"formatted\")\nfunc NotNilf(t TestingT, object interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotNil(t, object, append([]interface{}{msg}, args...)...)\n}\n\n// NotPanicsf asserts that the code inside the specified PanicTestFunc does NOT panic.\n//\n//\tassert.NotPanicsf(t, func(){ RemainCalm() }, \"error message %s\", \"formatted\")\nfunc NotPanicsf(t TestingT, f PanicTestFunc, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotPanics(t, f, append([]interface{}{msg}, args...)...)\n}\n\n// NotRegexpf asserts that a specified regexp does not match a string.\n//\n//\tassert.NotRegexpf(t, regexp.MustCompile(\"starts\"), \"it's starting\", \"error message %s\", \"formatted\")\n//\tassert.NotRegexpf(t, \"^start\", \"it's not starting\", \"error message %s\", \"formatted\")\nfunc NotRegexpf(t TestingT, rx interface{}, str interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotRegexp(t, rx, str, append([]interface{}{msg}, args...)...)\n}\n\n// NotSamef asserts that two pointers do not reference the same object.\n//\n//\tassert.NotSamef(t, ptr1, ptr2, \"error message %s\", \"formatted\")\n//\n// Both arguments must be pointer variables. Pointer variable sameness is\n// determined based on the equality of both type and value.\nfunc NotSamef(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotSame(t, expected, actual, append([]interface{}{msg}, args...)...)\n}\n\n// NotSubsetf asserts that the list (array, slice, or map) does NOT contain all\n// elements given in the subset (array, slice, or map).\n// Map elements are key-value pairs unless compared with an array or slice where\n// only the map key is evaluated.\n//\n//\tassert.NotSubsetf(t, [1, 3, 4], [1, 2], \"error message %s\", \"formatted\")\n//\tassert.NotSubsetf(t, {\"x\": 1, \"y\": 2}, {\"z\": 3}, \"error message %s\", \"formatted\")\n//\tassert.NotSubsetf(t, [1, 3, 4], {1: \"one\", 2: \"two\"}, \"error message %s\", \"formatted\")\n//\tassert.NotSubsetf(t, {\"x\": 1, \"y\": 2}, [\"z\"], \"error message %s\", \"formatted\")\nfunc NotSubsetf(t TestingT, list interface{}, subset interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotSubset(t, list, subset, append([]interface{}{msg}, args...)...)\n}\n\n// NotZerof asserts that i is not the zero value for its type.\nfunc NotZerof(t TestingT, i interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotZero(t, i, append([]interface{}{msg}, args...)...)\n}\n\n// Panicsf asserts that the code inside the specified PanicTestFunc panics.\n//\n//\tassert.Panicsf(t, func(){ GoCrazy() }, \"error message %s\", \"formatted\")\nfunc Panicsf(t TestingT, f PanicTestFunc, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Panics(t, f, append([]interface{}{msg}, args...)...)\n}\n\n// PanicsWithErrorf asserts that the code inside the specified PanicTestFunc\n// panics, and that the recovered panic value is an error that satisfies the\n// EqualError comparison.\n//\n//\tassert.PanicsWithErrorf(t, \"crazy error\", func(){ GoCrazy() }, \"error message %s\", \"formatted\")\nfunc PanicsWithErrorf(t TestingT, errString string, f PanicTestFunc, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn PanicsWithError(t, errString, f, append([]interface{}{msg}, args...)...)\n}\n\n// PanicsWithValuef asserts that the code inside the specified PanicTestFunc panics, and that\n// the recovered panic value equals the expected panic value.\n//\n//\tassert.PanicsWithValuef(t, \"crazy error\", func(){ GoCrazy() }, \"error message %s\", \"formatted\")\nfunc PanicsWithValuef(t TestingT, expected interface{}, f PanicTestFunc, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn PanicsWithValue(t, expected, f, append([]interface{}{msg}, args...)...)\n}\n\n// Positivef asserts that the specified element is positive\n//\n//\tassert.Positivef(t, 1, \"error message %s\", \"formatted\")\n//\tassert.Positivef(t, 1.23, \"error message %s\", \"formatted\")\nfunc Positivef(t TestingT, e interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Positive(t, e, append([]interface{}{msg}, args...)...)\n}\n\n// Regexpf asserts that a specified regexp matches a string.\n//\n//\tassert.Regexpf(t, regexp.MustCompile(\"start\"), \"it's starting\", \"error message %s\", \"formatted\")\n//\tassert.Regexpf(t, \"start...$\", \"it's not starting\", \"error message %s\", \"formatted\")\nfunc Regexpf(t TestingT, rx interface{}, str interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Regexp(t, rx, str, append([]interface{}{msg}, args...)...)\n}\n\n// Samef asserts that two pointers reference the same object.\n//\n//\tassert.Samef(t, ptr1, ptr2, \"error message %s\", \"formatted\")\n//\n// Both arguments must be pointer variables. Pointer variable sameness is\n// determined based on the equality of both type and value.\nfunc Samef(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Same(t, expected, actual, append([]interface{}{msg}, args...)...)\n}\n\n// Subsetf asserts that the list (array, slice, or map) contains all elements\n// given in the subset (array, slice, or map).\n// Map elements are key-value pairs unless compared with an array or slice where\n// only the map key is evaluated.\n//\n//\tassert.Subsetf(t, [1, 2, 3], [1, 2], \"error message %s\", \"formatted\")\n//\tassert.Subsetf(t, {\"x\": 1, \"y\": 2}, {\"x\": 1}, \"error message %s\", \"formatted\")\n//\tassert.Subsetf(t, [1, 2, 3], {1: \"one\", 2: \"two\"}, \"error message %s\", \"formatted\")\n//\tassert.Subsetf(t, {\"x\": 1, \"y\": 2}, [\"x\"], \"error message %s\", \"formatted\")\nfunc Subsetf(t TestingT, list interface{}, subset interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Subset(t, list, subset, append([]interface{}{msg}, args...)...)\n}\n\n// Truef asserts that the specified value is true.\n//\n//\tassert.Truef(t, myBool, \"error message %s\", \"formatted\")\nfunc Truef(t TestingT, value bool, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn True(t, value, append([]interface{}{msg}, args...)...)\n}\n\n// WithinDurationf asserts that the two times are within duration delta of each other.\n//\n//\tassert.WithinDurationf(t, time.Now(), time.Now(), 10*time.Second, \"error message %s\", \"formatted\")\nfunc WithinDurationf(t TestingT, expected time.Time, actual time.Time, delta time.Duration, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn WithinDuration(t, expected, actual, delta, append([]interface{}{msg}, args...)...)\n}\n\n// WithinRangef asserts that a time is within a time range (inclusive).\n//\n//\tassert.WithinRangef(t, time.Now(), time.Now().Add(-time.Second), time.Now().Add(time.Second), \"error message %s\", \"formatted\")\nfunc WithinRangef(t TestingT, actual time.Time, start time.Time, end time.Time, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn WithinRange(t, actual, start, end, append([]interface{}{msg}, args...)...)\n}\n\n// YAMLEqf asserts that two YAML strings are equivalent.\nfunc YAMLEqf(t TestingT, expected string, actual string, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn YAMLEq(t, expected, actual, append([]interface{}{msg}, args...)...)\n}\n\n// Zerof asserts that i is the zero value for its type.\nfunc Zerof(t TestingT, i interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Zero(t, i, append([]interface{}{msg}, args...)...)\n}\n"
  },
  {
    "path": "vendor/github.com/stretchr/testify/assert/assertion_format.go.tmpl",
    "content": "{{.CommentFormat}}\nfunc {{.DocInfo.Name}}f(t TestingT, {{.ParamsFormat}}) bool {\n\tif h, ok := t.(tHelper); ok { h.Helper() }\n\treturn {{.DocInfo.Name}}(t, {{.ForwardedParamsFormat}})\n}\n"
  },
  {
    "path": "vendor/github.com/stretchr/testify/assert/assertion_forward.go",
    "content": "// Code generated with github.com/stretchr/testify/_codegen; DO NOT EDIT.\n\npackage assert\n\nimport (\n\thttp \"net/http\"\n\turl \"net/url\"\n\ttime \"time\"\n)\n\n// Condition uses a Comparison to assert a complex condition.\nfunc (a *Assertions) Condition(comp Comparison, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Condition(a.t, comp, msgAndArgs...)\n}\n\n// Conditionf uses a Comparison to assert a complex condition.\nfunc (a *Assertions) Conditionf(comp Comparison, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Conditionf(a.t, comp, msg, args...)\n}\n\n// Contains asserts that the specified string, list(array, slice...) or map contains the\n// specified substring or element.\n//\n//\ta.Contains(\"Hello World\", \"World\")\n//\ta.Contains([\"Hello\", \"World\"], \"World\")\n//\ta.Contains({\"Hello\": \"World\"}, \"Hello\")\nfunc (a *Assertions) Contains(s interface{}, contains interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Contains(a.t, s, contains, msgAndArgs...)\n}\n\n// Containsf asserts that the specified string, list(array, slice...) or map contains the\n// specified substring or element.\n//\n//\ta.Containsf(\"Hello World\", \"World\", \"error message %s\", \"formatted\")\n//\ta.Containsf([\"Hello\", \"World\"], \"World\", \"error message %s\", \"formatted\")\n//\ta.Containsf({\"Hello\": \"World\"}, \"Hello\", \"error message %s\", \"formatted\")\nfunc (a *Assertions) Containsf(s interface{}, contains interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Containsf(a.t, s, contains, msg, args...)\n}\n\n// DirExists checks whether a directory exists in the given path. It also fails\n// if the path is a file rather a directory or there is an error checking whether it exists.\nfunc (a *Assertions) DirExists(path string, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn DirExists(a.t, path, msgAndArgs...)\n}\n\n// DirExistsf checks whether a directory exists in the given path. It also fails\n// if the path is a file rather a directory or there is an error checking whether it exists.\nfunc (a *Assertions) DirExistsf(path string, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn DirExistsf(a.t, path, msg, args...)\n}\n\n// ElementsMatch asserts that the specified listA(array, slice...) is equal to specified\n// listB(array, slice...) ignoring the order of the elements. If there are duplicate elements,\n// the number of appearances of each of them in both lists should match.\n//\n// a.ElementsMatch([1, 3, 2, 3], [1, 3, 3, 2])\nfunc (a *Assertions) ElementsMatch(listA interface{}, listB interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn ElementsMatch(a.t, listA, listB, msgAndArgs...)\n}\n\n// ElementsMatchf asserts that the specified listA(array, slice...) is equal to specified\n// listB(array, slice...) ignoring the order of the elements. If there are duplicate elements,\n// the number of appearances of each of them in both lists should match.\n//\n// a.ElementsMatchf([1, 3, 2, 3], [1, 3, 3, 2], \"error message %s\", \"formatted\")\nfunc (a *Assertions) ElementsMatchf(listA interface{}, listB interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn ElementsMatchf(a.t, listA, listB, msg, args...)\n}\n\n// Empty asserts that the given value is \"empty\".\n//\n// [Zero values] are \"empty\".\n//\n// Arrays are \"empty\" if every element is the zero value of the type (stricter than \"empty\").\n//\n// Slices, maps and channels with zero length are \"empty\".\n//\n// Pointer values are \"empty\" if the pointer is nil or if the pointed value is \"empty\".\n//\n//\ta.Empty(obj)\n//\n// [Zero values]: https://go.dev/ref/spec#The_zero_value\nfunc (a *Assertions) Empty(object interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Empty(a.t, object, msgAndArgs...)\n}\n\n// Emptyf asserts that the given value is \"empty\".\n//\n// [Zero values] are \"empty\".\n//\n// Arrays are \"empty\" if every element is the zero value of the type (stricter than \"empty\").\n//\n// Slices, maps and channels with zero length are \"empty\".\n//\n// Pointer values are \"empty\" if the pointer is nil or if the pointed value is \"empty\".\n//\n//\ta.Emptyf(obj, \"error message %s\", \"formatted\")\n//\n// [Zero values]: https://go.dev/ref/spec#The_zero_value\nfunc (a *Assertions) Emptyf(object interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Emptyf(a.t, object, msg, args...)\n}\n\n// Equal asserts that two objects are equal.\n//\n//\ta.Equal(123, 123)\n//\n// Pointer variable equality is determined based on the equality of the\n// referenced values (as opposed to the memory addresses). Function equality\n// cannot be determined and will always fail.\nfunc (a *Assertions) Equal(expected interface{}, actual interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Equal(a.t, expected, actual, msgAndArgs...)\n}\n\n// EqualError asserts that a function returned an error (i.e. not `nil`)\n// and that it is equal to the provided error.\n//\n//\tactualObj, err := SomeFunction()\n//\ta.EqualError(err,  expectedErrorString)\nfunc (a *Assertions) EqualError(theError error, errString string, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn EqualError(a.t, theError, errString, msgAndArgs...)\n}\n\n// EqualErrorf asserts that a function returned an error (i.e. not `nil`)\n// and that it is equal to the provided error.\n//\n//\tactualObj, err := SomeFunction()\n//\ta.EqualErrorf(err,  expectedErrorString, \"error message %s\", \"formatted\")\nfunc (a *Assertions) EqualErrorf(theError error, errString string, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn EqualErrorf(a.t, theError, errString, msg, args...)\n}\n\n// EqualExportedValues asserts that the types of two objects are equal and their public\n// fields are also equal. This is useful for comparing structs that have private fields\n// that could potentially differ.\n//\n//\t type S struct {\n//\t\tExported     \tint\n//\t\tnotExported   \tint\n//\t }\n//\t a.EqualExportedValues(S{1, 2}, S{1, 3}) => true\n//\t a.EqualExportedValues(S{1, 2}, S{2, 3}) => false\nfunc (a *Assertions) EqualExportedValues(expected interface{}, actual interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn EqualExportedValues(a.t, expected, actual, msgAndArgs...)\n}\n\n// EqualExportedValuesf asserts that the types of two objects are equal and their public\n// fields are also equal. This is useful for comparing structs that have private fields\n// that could potentially differ.\n//\n//\t type S struct {\n//\t\tExported     \tint\n//\t\tnotExported   \tint\n//\t }\n//\t a.EqualExportedValuesf(S{1, 2}, S{1, 3}, \"error message %s\", \"formatted\") => true\n//\t a.EqualExportedValuesf(S{1, 2}, S{2, 3}, \"error message %s\", \"formatted\") => false\nfunc (a *Assertions) EqualExportedValuesf(expected interface{}, actual interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn EqualExportedValuesf(a.t, expected, actual, msg, args...)\n}\n\n// EqualValues asserts that two objects are equal or convertible to the larger\n// type and equal.\n//\n//\ta.EqualValues(uint32(123), int32(123))\nfunc (a *Assertions) EqualValues(expected interface{}, actual interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn EqualValues(a.t, expected, actual, msgAndArgs...)\n}\n\n// EqualValuesf asserts that two objects are equal or convertible to the larger\n// type and equal.\n//\n//\ta.EqualValuesf(uint32(123), int32(123), \"error message %s\", \"formatted\")\nfunc (a *Assertions) EqualValuesf(expected interface{}, actual interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn EqualValuesf(a.t, expected, actual, msg, args...)\n}\n\n// Equalf asserts that two objects are equal.\n//\n//\ta.Equalf(123, 123, \"error message %s\", \"formatted\")\n//\n// Pointer variable equality is determined based on the equality of the\n// referenced values (as opposed to the memory addresses). Function equality\n// cannot be determined and will always fail.\nfunc (a *Assertions) Equalf(expected interface{}, actual interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Equalf(a.t, expected, actual, msg, args...)\n}\n\n// Error asserts that a function returned an error (i.e. not `nil`).\n//\n//\tactualObj, err := SomeFunction()\n//\ta.Error(err)\nfunc (a *Assertions) Error(err error, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Error(a.t, err, msgAndArgs...)\n}\n\n// ErrorAs asserts that at least one of the errors in err's chain matches target, and if so, sets target to that error value.\n// This is a wrapper for errors.As.\nfunc (a *Assertions) ErrorAs(err error, target interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn ErrorAs(a.t, err, target, msgAndArgs...)\n}\n\n// ErrorAsf asserts that at least one of the errors in err's chain matches target, and if so, sets target to that error value.\n// This is a wrapper for errors.As.\nfunc (a *Assertions) ErrorAsf(err error, target interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn ErrorAsf(a.t, err, target, msg, args...)\n}\n\n// ErrorContains asserts that a function returned an error (i.e. not `nil`)\n// and that the error contains the specified substring.\n//\n//\tactualObj, err := SomeFunction()\n//\ta.ErrorContains(err,  expectedErrorSubString)\nfunc (a *Assertions) ErrorContains(theError error, contains string, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn ErrorContains(a.t, theError, contains, msgAndArgs...)\n}\n\n// ErrorContainsf asserts that a function returned an error (i.e. not `nil`)\n// and that the error contains the specified substring.\n//\n//\tactualObj, err := SomeFunction()\n//\ta.ErrorContainsf(err,  expectedErrorSubString, \"error message %s\", \"formatted\")\nfunc (a *Assertions) ErrorContainsf(theError error, contains string, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn ErrorContainsf(a.t, theError, contains, msg, args...)\n}\n\n// ErrorIs asserts that at least one of the errors in err's chain matches target.\n// This is a wrapper for errors.Is.\nfunc (a *Assertions) ErrorIs(err error, target error, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn ErrorIs(a.t, err, target, msgAndArgs...)\n}\n\n// ErrorIsf asserts that at least one of the errors in err's chain matches target.\n// This is a wrapper for errors.Is.\nfunc (a *Assertions) ErrorIsf(err error, target error, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn ErrorIsf(a.t, err, target, msg, args...)\n}\n\n// Errorf asserts that a function returned an error (i.e. not `nil`).\n//\n//\tactualObj, err := SomeFunction()\n//\ta.Errorf(err, \"error message %s\", \"formatted\")\nfunc (a *Assertions) Errorf(err error, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Errorf(a.t, err, msg, args...)\n}\n\n// Eventually asserts that given condition will be met in waitFor time,\n// periodically checking target function each tick.\n//\n//\ta.Eventually(func() bool { return true; }, time.Second, 10*time.Millisecond)\nfunc (a *Assertions) Eventually(condition func() bool, waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Eventually(a.t, condition, waitFor, tick, msgAndArgs...)\n}\n\n// EventuallyWithT asserts that given condition will be met in waitFor time,\n// periodically checking target function each tick. In contrast to Eventually,\n// it supplies a CollectT to the condition function, so that the condition\n// function can use the CollectT to call other assertions.\n// The condition is considered \"met\" if no errors are raised in a tick.\n// The supplied CollectT collects all errors from one tick (if there are any).\n// If the condition is not met before waitFor, the collected errors of\n// the last tick are copied to t.\n//\n//\texternalValue := false\n//\tgo func() {\n//\t\ttime.Sleep(8*time.Second)\n//\t\texternalValue = true\n//\t}()\n//\ta.EventuallyWithT(func(c *assert.CollectT) {\n//\t\t// add assertions as needed; any assertion failure will fail the current tick\n//\t\tassert.True(c, externalValue, \"expected 'externalValue' to be true\")\n//\t}, 10*time.Second, 1*time.Second, \"external state has not changed to 'true'; still false\")\nfunc (a *Assertions) EventuallyWithT(condition func(collect *CollectT), waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn EventuallyWithT(a.t, condition, waitFor, tick, msgAndArgs...)\n}\n\n// EventuallyWithTf asserts that given condition will be met in waitFor time,\n// periodically checking target function each tick. In contrast to Eventually,\n// it supplies a CollectT to the condition function, so that the condition\n// function can use the CollectT to call other assertions.\n// The condition is considered \"met\" if no errors are raised in a tick.\n// The supplied CollectT collects all errors from one tick (if there are any).\n// If the condition is not met before waitFor, the collected errors of\n// the last tick are copied to t.\n//\n//\texternalValue := false\n//\tgo func() {\n//\t\ttime.Sleep(8*time.Second)\n//\t\texternalValue = true\n//\t}()\n//\ta.EventuallyWithTf(func(c *assert.CollectT, \"error message %s\", \"formatted\") {\n//\t\t// add assertions as needed; any assertion failure will fail the current tick\n//\t\tassert.True(c, externalValue, \"expected 'externalValue' to be true\")\n//\t}, 10*time.Second, 1*time.Second, \"external state has not changed to 'true'; still false\")\nfunc (a *Assertions) EventuallyWithTf(condition func(collect *CollectT), waitFor time.Duration, tick time.Duration, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn EventuallyWithTf(a.t, condition, waitFor, tick, msg, args...)\n}\n\n// Eventuallyf asserts that given condition will be met in waitFor time,\n// periodically checking target function each tick.\n//\n//\ta.Eventuallyf(func() bool { return true; }, time.Second, 10*time.Millisecond, \"error message %s\", \"formatted\")\nfunc (a *Assertions) Eventuallyf(condition func() bool, waitFor time.Duration, tick time.Duration, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Eventuallyf(a.t, condition, waitFor, tick, msg, args...)\n}\n\n// Exactly asserts that two objects are equal in value and type.\n//\n//\ta.Exactly(int32(123), int64(123))\nfunc (a *Assertions) Exactly(expected interface{}, actual interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Exactly(a.t, expected, actual, msgAndArgs...)\n}\n\n// Exactlyf asserts that two objects are equal in value and type.\n//\n//\ta.Exactlyf(int32(123), int64(123), \"error message %s\", \"formatted\")\nfunc (a *Assertions) Exactlyf(expected interface{}, actual interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Exactlyf(a.t, expected, actual, msg, args...)\n}\n\n// Fail reports a failure through\nfunc (a *Assertions) Fail(failureMessage string, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Fail(a.t, failureMessage, msgAndArgs...)\n}\n\n// FailNow fails test\nfunc (a *Assertions) FailNow(failureMessage string, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn FailNow(a.t, failureMessage, msgAndArgs...)\n}\n\n// FailNowf fails test\nfunc (a *Assertions) FailNowf(failureMessage string, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn FailNowf(a.t, failureMessage, msg, args...)\n}\n\n// Failf reports a failure through\nfunc (a *Assertions) Failf(failureMessage string, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Failf(a.t, failureMessage, msg, args...)\n}\n\n// False asserts that the specified value is false.\n//\n//\ta.False(myBool)\nfunc (a *Assertions) False(value bool, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn False(a.t, value, msgAndArgs...)\n}\n\n// Falsef asserts that the specified value is false.\n//\n//\ta.Falsef(myBool, \"error message %s\", \"formatted\")\nfunc (a *Assertions) Falsef(value bool, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Falsef(a.t, value, msg, args...)\n}\n\n// FileExists checks whether a file exists in the given path. It also fails if\n// the path points to a directory or there is an error when trying to check the file.\nfunc (a *Assertions) FileExists(path string, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn FileExists(a.t, path, msgAndArgs...)\n}\n\n// FileExistsf checks whether a file exists in the given path. It also fails if\n// the path points to a directory or there is an error when trying to check the file.\nfunc (a *Assertions) FileExistsf(path string, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn FileExistsf(a.t, path, msg, args...)\n}\n\n// Greater asserts that the first element is greater than the second\n//\n//\ta.Greater(2, 1)\n//\ta.Greater(float64(2), float64(1))\n//\ta.Greater(\"b\", \"a\")\nfunc (a *Assertions) Greater(e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Greater(a.t, e1, e2, msgAndArgs...)\n}\n\n// GreaterOrEqual asserts that the first element is greater than or equal to the second\n//\n//\ta.GreaterOrEqual(2, 1)\n//\ta.GreaterOrEqual(2, 2)\n//\ta.GreaterOrEqual(\"b\", \"a\")\n//\ta.GreaterOrEqual(\"b\", \"b\")\nfunc (a *Assertions) GreaterOrEqual(e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn GreaterOrEqual(a.t, e1, e2, msgAndArgs...)\n}\n\n// GreaterOrEqualf asserts that the first element is greater than or equal to the second\n//\n//\ta.GreaterOrEqualf(2, 1, \"error message %s\", \"formatted\")\n//\ta.GreaterOrEqualf(2, 2, \"error message %s\", \"formatted\")\n//\ta.GreaterOrEqualf(\"b\", \"a\", \"error message %s\", \"formatted\")\n//\ta.GreaterOrEqualf(\"b\", \"b\", \"error message %s\", \"formatted\")\nfunc (a *Assertions) GreaterOrEqualf(e1 interface{}, e2 interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn GreaterOrEqualf(a.t, e1, e2, msg, args...)\n}\n\n// Greaterf asserts that the first element is greater than the second\n//\n//\ta.Greaterf(2, 1, \"error message %s\", \"formatted\")\n//\ta.Greaterf(float64(2), float64(1), \"error message %s\", \"formatted\")\n//\ta.Greaterf(\"b\", \"a\", \"error message %s\", \"formatted\")\nfunc (a *Assertions) Greaterf(e1 interface{}, e2 interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Greaterf(a.t, e1, e2, msg, args...)\n}\n\n// HTTPBodyContains asserts that a specified handler returns a\n// body that contains a string.\n//\n//\ta.HTTPBodyContains(myHandler, \"GET\", \"www.google.com\", nil, \"I'm Feeling Lucky\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) HTTPBodyContains(handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn HTTPBodyContains(a.t, handler, method, url, values, str, msgAndArgs...)\n}\n\n// HTTPBodyContainsf asserts that a specified handler returns a\n// body that contains a string.\n//\n//\ta.HTTPBodyContainsf(myHandler, \"GET\", \"www.google.com\", nil, \"I'm Feeling Lucky\", \"error message %s\", \"formatted\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) HTTPBodyContainsf(handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn HTTPBodyContainsf(a.t, handler, method, url, values, str, msg, args...)\n}\n\n// HTTPBodyNotContains asserts that a specified handler returns a\n// body that does not contain a string.\n//\n//\ta.HTTPBodyNotContains(myHandler, \"GET\", \"www.google.com\", nil, \"I'm Feeling Lucky\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) HTTPBodyNotContains(handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn HTTPBodyNotContains(a.t, handler, method, url, values, str, msgAndArgs...)\n}\n\n// HTTPBodyNotContainsf asserts that a specified handler returns a\n// body that does not contain a string.\n//\n//\ta.HTTPBodyNotContainsf(myHandler, \"GET\", \"www.google.com\", nil, \"I'm Feeling Lucky\", \"error message %s\", \"formatted\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) HTTPBodyNotContainsf(handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn HTTPBodyNotContainsf(a.t, handler, method, url, values, str, msg, args...)\n}\n\n// HTTPError asserts that a specified handler returns an error status code.\n//\n//\ta.HTTPError(myHandler, \"POST\", \"/a/b/c\", url.Values{\"a\": []string{\"b\", \"c\"}}\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) HTTPError(handler http.HandlerFunc, method string, url string, values url.Values, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn HTTPError(a.t, handler, method, url, values, msgAndArgs...)\n}\n\n// HTTPErrorf asserts that a specified handler returns an error status code.\n//\n//\ta.HTTPErrorf(myHandler, \"POST\", \"/a/b/c\", url.Values{\"a\": []string{\"b\", \"c\"}}\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) HTTPErrorf(handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn HTTPErrorf(a.t, handler, method, url, values, msg, args...)\n}\n\n// HTTPRedirect asserts that a specified handler returns a redirect status code.\n//\n//\ta.HTTPRedirect(myHandler, \"GET\", \"/a/b/c\", url.Values{\"a\": []string{\"b\", \"c\"}}\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) HTTPRedirect(handler http.HandlerFunc, method string, url string, values url.Values, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn HTTPRedirect(a.t, handler, method, url, values, msgAndArgs...)\n}\n\n// HTTPRedirectf asserts that a specified handler returns a redirect status code.\n//\n//\ta.HTTPRedirectf(myHandler, \"GET\", \"/a/b/c\", url.Values{\"a\": []string{\"b\", \"c\"}}\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) HTTPRedirectf(handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn HTTPRedirectf(a.t, handler, method, url, values, msg, args...)\n}\n\n// HTTPStatusCode asserts that a specified handler returns a specified status code.\n//\n//\ta.HTTPStatusCode(myHandler, \"GET\", \"/notImplemented\", nil, 501)\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) HTTPStatusCode(handler http.HandlerFunc, method string, url string, values url.Values, statuscode int, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn HTTPStatusCode(a.t, handler, method, url, values, statuscode, msgAndArgs...)\n}\n\n// HTTPStatusCodef asserts that a specified handler returns a specified status code.\n//\n//\ta.HTTPStatusCodef(myHandler, \"GET\", \"/notImplemented\", nil, 501, \"error message %s\", \"formatted\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) HTTPStatusCodef(handler http.HandlerFunc, method string, url string, values url.Values, statuscode int, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn HTTPStatusCodef(a.t, handler, method, url, values, statuscode, msg, args...)\n}\n\n// HTTPSuccess asserts that a specified handler returns a success status code.\n//\n//\ta.HTTPSuccess(myHandler, \"POST\", \"http://www.google.com\", nil)\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) HTTPSuccess(handler http.HandlerFunc, method string, url string, values url.Values, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn HTTPSuccess(a.t, handler, method, url, values, msgAndArgs...)\n}\n\n// HTTPSuccessf asserts that a specified handler returns a success status code.\n//\n//\ta.HTTPSuccessf(myHandler, \"POST\", \"http://www.google.com\", nil, \"error message %s\", \"formatted\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) HTTPSuccessf(handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn HTTPSuccessf(a.t, handler, method, url, values, msg, args...)\n}\n\n// Implements asserts that an object is implemented by the specified interface.\n//\n//\ta.Implements((*MyInterface)(nil), new(MyObject))\nfunc (a *Assertions) Implements(interfaceObject interface{}, object interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Implements(a.t, interfaceObject, object, msgAndArgs...)\n}\n\n// Implementsf asserts that an object is implemented by the specified interface.\n//\n//\ta.Implementsf((*MyInterface)(nil), new(MyObject), \"error message %s\", \"formatted\")\nfunc (a *Assertions) Implementsf(interfaceObject interface{}, object interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Implementsf(a.t, interfaceObject, object, msg, args...)\n}\n\n// InDelta asserts that the two numerals are within delta of each other.\n//\n//\ta.InDelta(math.Pi, 22/7.0, 0.01)\nfunc (a *Assertions) InDelta(expected interface{}, actual interface{}, delta float64, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn InDelta(a.t, expected, actual, delta, msgAndArgs...)\n}\n\n// InDeltaMapValues is the same as InDelta, but it compares all values between two maps. Both maps must have exactly the same keys.\nfunc (a *Assertions) InDeltaMapValues(expected interface{}, actual interface{}, delta float64, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn InDeltaMapValues(a.t, expected, actual, delta, msgAndArgs...)\n}\n\n// InDeltaMapValuesf is the same as InDelta, but it compares all values between two maps. Both maps must have exactly the same keys.\nfunc (a *Assertions) InDeltaMapValuesf(expected interface{}, actual interface{}, delta float64, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn InDeltaMapValuesf(a.t, expected, actual, delta, msg, args...)\n}\n\n// InDeltaSlice is the same as InDelta, except it compares two slices.\nfunc (a *Assertions) InDeltaSlice(expected interface{}, actual interface{}, delta float64, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn InDeltaSlice(a.t, expected, actual, delta, msgAndArgs...)\n}\n\n// InDeltaSlicef is the same as InDelta, except it compares two slices.\nfunc (a *Assertions) InDeltaSlicef(expected interface{}, actual interface{}, delta float64, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn InDeltaSlicef(a.t, expected, actual, delta, msg, args...)\n}\n\n// InDeltaf asserts that the two numerals are within delta of each other.\n//\n//\ta.InDeltaf(math.Pi, 22/7.0, 0.01, \"error message %s\", \"formatted\")\nfunc (a *Assertions) InDeltaf(expected interface{}, actual interface{}, delta float64, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn InDeltaf(a.t, expected, actual, delta, msg, args...)\n}\n\n// InEpsilon asserts that expected and actual have a relative error less than epsilon\nfunc (a *Assertions) InEpsilon(expected interface{}, actual interface{}, epsilon float64, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn InEpsilon(a.t, expected, actual, epsilon, msgAndArgs...)\n}\n\n// InEpsilonSlice is the same as InEpsilon, except it compares each value from two slices.\nfunc (a *Assertions) InEpsilonSlice(expected interface{}, actual interface{}, epsilon float64, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn InEpsilonSlice(a.t, expected, actual, epsilon, msgAndArgs...)\n}\n\n// InEpsilonSlicef is the same as InEpsilon, except it compares each value from two slices.\nfunc (a *Assertions) InEpsilonSlicef(expected interface{}, actual interface{}, epsilon float64, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn InEpsilonSlicef(a.t, expected, actual, epsilon, msg, args...)\n}\n\n// InEpsilonf asserts that expected and actual have a relative error less than epsilon\nfunc (a *Assertions) InEpsilonf(expected interface{}, actual interface{}, epsilon float64, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn InEpsilonf(a.t, expected, actual, epsilon, msg, args...)\n}\n\n// IsDecreasing asserts that the collection is decreasing\n//\n//\ta.IsDecreasing([]int{2, 1, 0})\n//\ta.IsDecreasing([]float{2, 1})\n//\ta.IsDecreasing([]string{\"b\", \"a\"})\nfunc (a *Assertions) IsDecreasing(object interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn IsDecreasing(a.t, object, msgAndArgs...)\n}\n\n// IsDecreasingf asserts that the collection is decreasing\n//\n//\ta.IsDecreasingf([]int{2, 1, 0}, \"error message %s\", \"formatted\")\n//\ta.IsDecreasingf([]float{2, 1}, \"error message %s\", \"formatted\")\n//\ta.IsDecreasingf([]string{\"b\", \"a\"}, \"error message %s\", \"formatted\")\nfunc (a *Assertions) IsDecreasingf(object interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn IsDecreasingf(a.t, object, msg, args...)\n}\n\n// IsIncreasing asserts that the collection is increasing\n//\n//\ta.IsIncreasing([]int{1, 2, 3})\n//\ta.IsIncreasing([]float{1, 2})\n//\ta.IsIncreasing([]string{\"a\", \"b\"})\nfunc (a *Assertions) IsIncreasing(object interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn IsIncreasing(a.t, object, msgAndArgs...)\n}\n\n// IsIncreasingf asserts that the collection is increasing\n//\n//\ta.IsIncreasingf([]int{1, 2, 3}, \"error message %s\", \"formatted\")\n//\ta.IsIncreasingf([]float{1, 2}, \"error message %s\", \"formatted\")\n//\ta.IsIncreasingf([]string{\"a\", \"b\"}, \"error message %s\", \"formatted\")\nfunc (a *Assertions) IsIncreasingf(object interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn IsIncreasingf(a.t, object, msg, args...)\n}\n\n// IsNonDecreasing asserts that the collection is not decreasing\n//\n//\ta.IsNonDecreasing([]int{1, 1, 2})\n//\ta.IsNonDecreasing([]float{1, 2})\n//\ta.IsNonDecreasing([]string{\"a\", \"b\"})\nfunc (a *Assertions) IsNonDecreasing(object interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn IsNonDecreasing(a.t, object, msgAndArgs...)\n}\n\n// IsNonDecreasingf asserts that the collection is not decreasing\n//\n//\ta.IsNonDecreasingf([]int{1, 1, 2}, \"error message %s\", \"formatted\")\n//\ta.IsNonDecreasingf([]float{1, 2}, \"error message %s\", \"formatted\")\n//\ta.IsNonDecreasingf([]string{\"a\", \"b\"}, \"error message %s\", \"formatted\")\nfunc (a *Assertions) IsNonDecreasingf(object interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn IsNonDecreasingf(a.t, object, msg, args...)\n}\n\n// IsNonIncreasing asserts that the collection is not increasing\n//\n//\ta.IsNonIncreasing([]int{2, 1, 1})\n//\ta.IsNonIncreasing([]float{2, 1})\n//\ta.IsNonIncreasing([]string{\"b\", \"a\"})\nfunc (a *Assertions) IsNonIncreasing(object interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn IsNonIncreasing(a.t, object, msgAndArgs...)\n}\n\n// IsNonIncreasingf asserts that the collection is not increasing\n//\n//\ta.IsNonIncreasingf([]int{2, 1, 1}, \"error message %s\", \"formatted\")\n//\ta.IsNonIncreasingf([]float{2, 1}, \"error message %s\", \"formatted\")\n//\ta.IsNonIncreasingf([]string{\"b\", \"a\"}, \"error message %s\", \"formatted\")\nfunc (a *Assertions) IsNonIncreasingf(object interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn IsNonIncreasingf(a.t, object, msg, args...)\n}\n\n// IsNotType asserts that the specified objects are not of the same type.\n//\n//\ta.IsNotType(&NotMyStruct{}, &MyStruct{})\nfunc (a *Assertions) IsNotType(theType interface{}, object interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn IsNotType(a.t, theType, object, msgAndArgs...)\n}\n\n// IsNotTypef asserts that the specified objects are not of the same type.\n//\n//\ta.IsNotTypef(&NotMyStruct{}, &MyStruct{}, \"error message %s\", \"formatted\")\nfunc (a *Assertions) IsNotTypef(theType interface{}, object interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn IsNotTypef(a.t, theType, object, msg, args...)\n}\n\n// IsType asserts that the specified objects are of the same type.\n//\n//\ta.IsType(&MyStruct{}, &MyStruct{})\nfunc (a *Assertions) IsType(expectedType interface{}, object interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn IsType(a.t, expectedType, object, msgAndArgs...)\n}\n\n// IsTypef asserts that the specified objects are of the same type.\n//\n//\ta.IsTypef(&MyStruct{}, &MyStruct{}, \"error message %s\", \"formatted\")\nfunc (a *Assertions) IsTypef(expectedType interface{}, object interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn IsTypef(a.t, expectedType, object, msg, args...)\n}\n\n// JSONEq asserts that two JSON strings are equivalent.\n//\n//\ta.JSONEq(`{\"hello\": \"world\", \"foo\": \"bar\"}`, `{\"foo\": \"bar\", \"hello\": \"world\"}`)\nfunc (a *Assertions) JSONEq(expected string, actual string, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn JSONEq(a.t, expected, actual, msgAndArgs...)\n}\n\n// JSONEqf asserts that two JSON strings are equivalent.\n//\n//\ta.JSONEqf(`{\"hello\": \"world\", \"foo\": \"bar\"}`, `{\"foo\": \"bar\", \"hello\": \"world\"}`, \"error message %s\", \"formatted\")\nfunc (a *Assertions) JSONEqf(expected string, actual string, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn JSONEqf(a.t, expected, actual, msg, args...)\n}\n\n// Len asserts that the specified object has specific length.\n// Len also fails if the object has a type that len() not accept.\n//\n//\ta.Len(mySlice, 3)\nfunc (a *Assertions) Len(object interface{}, length int, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Len(a.t, object, length, msgAndArgs...)\n}\n\n// Lenf asserts that the specified object has specific length.\n// Lenf also fails if the object has a type that len() not accept.\n//\n//\ta.Lenf(mySlice, 3, \"error message %s\", \"formatted\")\nfunc (a *Assertions) Lenf(object interface{}, length int, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Lenf(a.t, object, length, msg, args...)\n}\n\n// Less asserts that the first element is less than the second\n//\n//\ta.Less(1, 2)\n//\ta.Less(float64(1), float64(2))\n//\ta.Less(\"a\", \"b\")\nfunc (a *Assertions) Less(e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Less(a.t, e1, e2, msgAndArgs...)\n}\n\n// LessOrEqual asserts that the first element is less than or equal to the second\n//\n//\ta.LessOrEqual(1, 2)\n//\ta.LessOrEqual(2, 2)\n//\ta.LessOrEqual(\"a\", \"b\")\n//\ta.LessOrEqual(\"b\", \"b\")\nfunc (a *Assertions) LessOrEqual(e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn LessOrEqual(a.t, e1, e2, msgAndArgs...)\n}\n\n// LessOrEqualf asserts that the first element is less than or equal to the second\n//\n//\ta.LessOrEqualf(1, 2, \"error message %s\", \"formatted\")\n//\ta.LessOrEqualf(2, 2, \"error message %s\", \"formatted\")\n//\ta.LessOrEqualf(\"a\", \"b\", \"error message %s\", \"formatted\")\n//\ta.LessOrEqualf(\"b\", \"b\", \"error message %s\", \"formatted\")\nfunc (a *Assertions) LessOrEqualf(e1 interface{}, e2 interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn LessOrEqualf(a.t, e1, e2, msg, args...)\n}\n\n// Lessf asserts that the first element is less than the second\n//\n//\ta.Lessf(1, 2, \"error message %s\", \"formatted\")\n//\ta.Lessf(float64(1), float64(2), \"error message %s\", \"formatted\")\n//\ta.Lessf(\"a\", \"b\", \"error message %s\", \"formatted\")\nfunc (a *Assertions) Lessf(e1 interface{}, e2 interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Lessf(a.t, e1, e2, msg, args...)\n}\n\n// Negative asserts that the specified element is negative\n//\n//\ta.Negative(-1)\n//\ta.Negative(-1.23)\nfunc (a *Assertions) Negative(e interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Negative(a.t, e, msgAndArgs...)\n}\n\n// Negativef asserts that the specified element is negative\n//\n//\ta.Negativef(-1, \"error message %s\", \"formatted\")\n//\ta.Negativef(-1.23, \"error message %s\", \"formatted\")\nfunc (a *Assertions) Negativef(e interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Negativef(a.t, e, msg, args...)\n}\n\n// Never asserts that the given condition doesn't satisfy in waitFor time,\n// periodically checking the target function each tick.\n//\n//\ta.Never(func() bool { return false; }, time.Second, 10*time.Millisecond)\nfunc (a *Assertions) Never(condition func() bool, waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Never(a.t, condition, waitFor, tick, msgAndArgs...)\n}\n\n// Neverf asserts that the given condition doesn't satisfy in waitFor time,\n// periodically checking the target function each tick.\n//\n//\ta.Neverf(func() bool { return false; }, time.Second, 10*time.Millisecond, \"error message %s\", \"formatted\")\nfunc (a *Assertions) Neverf(condition func() bool, waitFor time.Duration, tick time.Duration, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Neverf(a.t, condition, waitFor, tick, msg, args...)\n}\n\n// Nil asserts that the specified object is nil.\n//\n//\ta.Nil(err)\nfunc (a *Assertions) Nil(object interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Nil(a.t, object, msgAndArgs...)\n}\n\n// Nilf asserts that the specified object is nil.\n//\n//\ta.Nilf(err, \"error message %s\", \"formatted\")\nfunc (a *Assertions) Nilf(object interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Nilf(a.t, object, msg, args...)\n}\n\n// NoDirExists checks whether a directory does not exist in the given path.\n// It fails if the path points to an existing _directory_ only.\nfunc (a *Assertions) NoDirExists(path string, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NoDirExists(a.t, path, msgAndArgs...)\n}\n\n// NoDirExistsf checks whether a directory does not exist in the given path.\n// It fails if the path points to an existing _directory_ only.\nfunc (a *Assertions) NoDirExistsf(path string, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NoDirExistsf(a.t, path, msg, args...)\n}\n\n// NoError asserts that a function returned no error (i.e. `nil`).\n//\n//\t  actualObj, err := SomeFunction()\n//\t  if a.NoError(err) {\n//\t\t   assert.Equal(t, expectedObj, actualObj)\n//\t  }\nfunc (a *Assertions) NoError(err error, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NoError(a.t, err, msgAndArgs...)\n}\n\n// NoErrorf asserts that a function returned no error (i.e. `nil`).\n//\n//\t  actualObj, err := SomeFunction()\n//\t  if a.NoErrorf(err, \"error message %s\", \"formatted\") {\n//\t\t   assert.Equal(t, expectedObj, actualObj)\n//\t  }\nfunc (a *Assertions) NoErrorf(err error, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NoErrorf(a.t, err, msg, args...)\n}\n\n// NoFileExists checks whether a file does not exist in a given path. It fails\n// if the path points to an existing _file_ only.\nfunc (a *Assertions) NoFileExists(path string, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NoFileExists(a.t, path, msgAndArgs...)\n}\n\n// NoFileExistsf checks whether a file does not exist in a given path. It fails\n// if the path points to an existing _file_ only.\nfunc (a *Assertions) NoFileExistsf(path string, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NoFileExistsf(a.t, path, msg, args...)\n}\n\n// NotContains asserts that the specified string, list(array, slice...) or map does NOT contain the\n// specified substring or element.\n//\n//\ta.NotContains(\"Hello World\", \"Earth\")\n//\ta.NotContains([\"Hello\", \"World\"], \"Earth\")\n//\ta.NotContains({\"Hello\": \"World\"}, \"Earth\")\nfunc (a *Assertions) NotContains(s interface{}, contains interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotContains(a.t, s, contains, msgAndArgs...)\n}\n\n// NotContainsf asserts that the specified string, list(array, slice...) or map does NOT contain the\n// specified substring or element.\n//\n//\ta.NotContainsf(\"Hello World\", \"Earth\", \"error message %s\", \"formatted\")\n//\ta.NotContainsf([\"Hello\", \"World\"], \"Earth\", \"error message %s\", \"formatted\")\n//\ta.NotContainsf({\"Hello\": \"World\"}, \"Earth\", \"error message %s\", \"formatted\")\nfunc (a *Assertions) NotContainsf(s interface{}, contains interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotContainsf(a.t, s, contains, msg, args...)\n}\n\n// NotElementsMatch asserts that the specified listA(array, slice...) is NOT equal to specified\n// listB(array, slice...) ignoring the order of the elements. If there are duplicate elements,\n// the number of appearances of each of them in both lists should not match.\n// This is an inverse of ElementsMatch.\n//\n// a.NotElementsMatch([1, 1, 2, 3], [1, 1, 2, 3]) -> false\n//\n// a.NotElementsMatch([1, 1, 2, 3], [1, 2, 3]) -> true\n//\n// a.NotElementsMatch([1, 2, 3], [1, 2, 4]) -> true\nfunc (a *Assertions) NotElementsMatch(listA interface{}, listB interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotElementsMatch(a.t, listA, listB, msgAndArgs...)\n}\n\n// NotElementsMatchf asserts that the specified listA(array, slice...) is NOT equal to specified\n// listB(array, slice...) ignoring the order of the elements. If there are duplicate elements,\n// the number of appearances of each of them in both lists should not match.\n// This is an inverse of ElementsMatch.\n//\n// a.NotElementsMatchf([1, 1, 2, 3], [1, 1, 2, 3], \"error message %s\", \"formatted\") -> false\n//\n// a.NotElementsMatchf([1, 1, 2, 3], [1, 2, 3], \"error message %s\", \"formatted\") -> true\n//\n// a.NotElementsMatchf([1, 2, 3], [1, 2, 4], \"error message %s\", \"formatted\") -> true\nfunc (a *Assertions) NotElementsMatchf(listA interface{}, listB interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotElementsMatchf(a.t, listA, listB, msg, args...)\n}\n\n// NotEmpty asserts that the specified object is NOT [Empty].\n//\n//\tif a.NotEmpty(obj) {\n//\t  assert.Equal(t, \"two\", obj[1])\n//\t}\nfunc (a *Assertions) NotEmpty(object interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotEmpty(a.t, object, msgAndArgs...)\n}\n\n// NotEmptyf asserts that the specified object is NOT [Empty].\n//\n//\tif a.NotEmptyf(obj, \"error message %s\", \"formatted\") {\n//\t  assert.Equal(t, \"two\", obj[1])\n//\t}\nfunc (a *Assertions) NotEmptyf(object interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotEmptyf(a.t, object, msg, args...)\n}\n\n// NotEqual asserts that the specified values are NOT equal.\n//\n//\ta.NotEqual(obj1, obj2)\n//\n// Pointer variable equality is determined based on the equality of the\n// referenced values (as opposed to the memory addresses).\nfunc (a *Assertions) NotEqual(expected interface{}, actual interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotEqual(a.t, expected, actual, msgAndArgs...)\n}\n\n// NotEqualValues asserts that two objects are not equal even when converted to the same type\n//\n//\ta.NotEqualValues(obj1, obj2)\nfunc (a *Assertions) NotEqualValues(expected interface{}, actual interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotEqualValues(a.t, expected, actual, msgAndArgs...)\n}\n\n// NotEqualValuesf asserts that two objects are not equal even when converted to the same type\n//\n//\ta.NotEqualValuesf(obj1, obj2, \"error message %s\", \"formatted\")\nfunc (a *Assertions) NotEqualValuesf(expected interface{}, actual interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotEqualValuesf(a.t, expected, actual, msg, args...)\n}\n\n// NotEqualf asserts that the specified values are NOT equal.\n//\n//\ta.NotEqualf(obj1, obj2, \"error message %s\", \"formatted\")\n//\n// Pointer variable equality is determined based on the equality of the\n// referenced values (as opposed to the memory addresses).\nfunc (a *Assertions) NotEqualf(expected interface{}, actual interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotEqualf(a.t, expected, actual, msg, args...)\n}\n\n// NotErrorAs asserts that none of the errors in err's chain matches target,\n// but if so, sets target to that error value.\nfunc (a *Assertions) NotErrorAs(err error, target interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotErrorAs(a.t, err, target, msgAndArgs...)\n}\n\n// NotErrorAsf asserts that none of the errors in err's chain matches target,\n// but if so, sets target to that error value.\nfunc (a *Assertions) NotErrorAsf(err error, target interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotErrorAsf(a.t, err, target, msg, args...)\n}\n\n// NotErrorIs asserts that none of the errors in err's chain matches target.\n// This is a wrapper for errors.Is.\nfunc (a *Assertions) NotErrorIs(err error, target error, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotErrorIs(a.t, err, target, msgAndArgs...)\n}\n\n// NotErrorIsf asserts that none of the errors in err's chain matches target.\n// This is a wrapper for errors.Is.\nfunc (a *Assertions) NotErrorIsf(err error, target error, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotErrorIsf(a.t, err, target, msg, args...)\n}\n\n// NotImplements asserts that an object does not implement the specified interface.\n//\n//\ta.NotImplements((*MyInterface)(nil), new(MyObject))\nfunc (a *Assertions) NotImplements(interfaceObject interface{}, object interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotImplements(a.t, interfaceObject, object, msgAndArgs...)\n}\n\n// NotImplementsf asserts that an object does not implement the specified interface.\n//\n//\ta.NotImplementsf((*MyInterface)(nil), new(MyObject), \"error message %s\", \"formatted\")\nfunc (a *Assertions) NotImplementsf(interfaceObject interface{}, object interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotImplementsf(a.t, interfaceObject, object, msg, args...)\n}\n\n// NotNil asserts that the specified object is not nil.\n//\n//\ta.NotNil(err)\nfunc (a *Assertions) NotNil(object interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotNil(a.t, object, msgAndArgs...)\n}\n\n// NotNilf asserts that the specified object is not nil.\n//\n//\ta.NotNilf(err, \"error message %s\", \"formatted\")\nfunc (a *Assertions) NotNilf(object interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotNilf(a.t, object, msg, args...)\n}\n\n// NotPanics asserts that the code inside the specified PanicTestFunc does NOT panic.\n//\n//\ta.NotPanics(func(){ RemainCalm() })\nfunc (a *Assertions) NotPanics(f PanicTestFunc, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotPanics(a.t, f, msgAndArgs...)\n}\n\n// NotPanicsf asserts that the code inside the specified PanicTestFunc does NOT panic.\n//\n//\ta.NotPanicsf(func(){ RemainCalm() }, \"error message %s\", \"formatted\")\nfunc (a *Assertions) NotPanicsf(f PanicTestFunc, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotPanicsf(a.t, f, msg, args...)\n}\n\n// NotRegexp asserts that a specified regexp does not match a string.\n//\n//\ta.NotRegexp(regexp.MustCompile(\"starts\"), \"it's starting\")\n//\ta.NotRegexp(\"^start\", \"it's not starting\")\nfunc (a *Assertions) NotRegexp(rx interface{}, str interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotRegexp(a.t, rx, str, msgAndArgs...)\n}\n\n// NotRegexpf asserts that a specified regexp does not match a string.\n//\n//\ta.NotRegexpf(regexp.MustCompile(\"starts\"), \"it's starting\", \"error message %s\", \"formatted\")\n//\ta.NotRegexpf(\"^start\", \"it's not starting\", \"error message %s\", \"formatted\")\nfunc (a *Assertions) NotRegexpf(rx interface{}, str interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotRegexpf(a.t, rx, str, msg, args...)\n}\n\n// NotSame asserts that two pointers do not reference the same object.\n//\n//\ta.NotSame(ptr1, ptr2)\n//\n// Both arguments must be pointer variables. Pointer variable sameness is\n// determined based on the equality of both type and value.\nfunc (a *Assertions) NotSame(expected interface{}, actual interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotSame(a.t, expected, actual, msgAndArgs...)\n}\n\n// NotSamef asserts that two pointers do not reference the same object.\n//\n//\ta.NotSamef(ptr1, ptr2, \"error message %s\", \"formatted\")\n//\n// Both arguments must be pointer variables. Pointer variable sameness is\n// determined based on the equality of both type and value.\nfunc (a *Assertions) NotSamef(expected interface{}, actual interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotSamef(a.t, expected, actual, msg, args...)\n}\n\n// NotSubset asserts that the list (array, slice, or map) does NOT contain all\n// elements given in the subset (array, slice, or map).\n// Map elements are key-value pairs unless compared with an array or slice where\n// only the map key is evaluated.\n//\n//\ta.NotSubset([1, 3, 4], [1, 2])\n//\ta.NotSubset({\"x\": 1, \"y\": 2}, {\"z\": 3})\n//\ta.NotSubset([1, 3, 4], {1: \"one\", 2: \"two\"})\n//\ta.NotSubset({\"x\": 1, \"y\": 2}, [\"z\"])\nfunc (a *Assertions) NotSubset(list interface{}, subset interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotSubset(a.t, list, subset, msgAndArgs...)\n}\n\n// NotSubsetf asserts that the list (array, slice, or map) does NOT contain all\n// elements given in the subset (array, slice, or map).\n// Map elements are key-value pairs unless compared with an array or slice where\n// only the map key is evaluated.\n//\n//\ta.NotSubsetf([1, 3, 4], [1, 2], \"error message %s\", \"formatted\")\n//\ta.NotSubsetf({\"x\": 1, \"y\": 2}, {\"z\": 3}, \"error message %s\", \"formatted\")\n//\ta.NotSubsetf([1, 3, 4], {1: \"one\", 2: \"two\"}, \"error message %s\", \"formatted\")\n//\ta.NotSubsetf({\"x\": 1, \"y\": 2}, [\"z\"], \"error message %s\", \"formatted\")\nfunc (a *Assertions) NotSubsetf(list interface{}, subset interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotSubsetf(a.t, list, subset, msg, args...)\n}\n\n// NotZero asserts that i is not the zero value for its type.\nfunc (a *Assertions) NotZero(i interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotZero(a.t, i, msgAndArgs...)\n}\n\n// NotZerof asserts that i is not the zero value for its type.\nfunc (a *Assertions) NotZerof(i interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn NotZerof(a.t, i, msg, args...)\n}\n\n// Panics asserts that the code inside the specified PanicTestFunc panics.\n//\n//\ta.Panics(func(){ GoCrazy() })\nfunc (a *Assertions) Panics(f PanicTestFunc, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Panics(a.t, f, msgAndArgs...)\n}\n\n// PanicsWithError asserts that the code inside the specified PanicTestFunc\n// panics, and that the recovered panic value is an error that satisfies the\n// EqualError comparison.\n//\n//\ta.PanicsWithError(\"crazy error\", func(){ GoCrazy() })\nfunc (a *Assertions) PanicsWithError(errString string, f PanicTestFunc, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn PanicsWithError(a.t, errString, f, msgAndArgs...)\n}\n\n// PanicsWithErrorf asserts that the code inside the specified PanicTestFunc\n// panics, and that the recovered panic value is an error that satisfies the\n// EqualError comparison.\n//\n//\ta.PanicsWithErrorf(\"crazy error\", func(){ GoCrazy() }, \"error message %s\", \"formatted\")\nfunc (a *Assertions) PanicsWithErrorf(errString string, f PanicTestFunc, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn PanicsWithErrorf(a.t, errString, f, msg, args...)\n}\n\n// PanicsWithValue asserts that the code inside the specified PanicTestFunc panics, and that\n// the recovered panic value equals the expected panic value.\n//\n//\ta.PanicsWithValue(\"crazy error\", func(){ GoCrazy() })\nfunc (a *Assertions) PanicsWithValue(expected interface{}, f PanicTestFunc, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn PanicsWithValue(a.t, expected, f, msgAndArgs...)\n}\n\n// PanicsWithValuef asserts that the code inside the specified PanicTestFunc panics, and that\n// the recovered panic value equals the expected panic value.\n//\n//\ta.PanicsWithValuef(\"crazy error\", func(){ GoCrazy() }, \"error message %s\", \"formatted\")\nfunc (a *Assertions) PanicsWithValuef(expected interface{}, f PanicTestFunc, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn PanicsWithValuef(a.t, expected, f, msg, args...)\n}\n\n// Panicsf asserts that the code inside the specified PanicTestFunc panics.\n//\n//\ta.Panicsf(func(){ GoCrazy() }, \"error message %s\", \"formatted\")\nfunc (a *Assertions) Panicsf(f PanicTestFunc, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Panicsf(a.t, f, msg, args...)\n}\n\n// Positive asserts that the specified element is positive\n//\n//\ta.Positive(1)\n//\ta.Positive(1.23)\nfunc (a *Assertions) Positive(e interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Positive(a.t, e, msgAndArgs...)\n}\n\n// Positivef asserts that the specified element is positive\n//\n//\ta.Positivef(1, \"error message %s\", \"formatted\")\n//\ta.Positivef(1.23, \"error message %s\", \"formatted\")\nfunc (a *Assertions) Positivef(e interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Positivef(a.t, e, msg, args...)\n}\n\n// Regexp asserts that a specified regexp matches a string.\n//\n//\ta.Regexp(regexp.MustCompile(\"start\"), \"it's starting\")\n//\ta.Regexp(\"start...$\", \"it's not starting\")\nfunc (a *Assertions) Regexp(rx interface{}, str interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Regexp(a.t, rx, str, msgAndArgs...)\n}\n\n// Regexpf asserts that a specified regexp matches a string.\n//\n//\ta.Regexpf(regexp.MustCompile(\"start\"), \"it's starting\", \"error message %s\", \"formatted\")\n//\ta.Regexpf(\"start...$\", \"it's not starting\", \"error message %s\", \"formatted\")\nfunc (a *Assertions) Regexpf(rx interface{}, str interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Regexpf(a.t, rx, str, msg, args...)\n}\n\n// Same asserts that two pointers reference the same object.\n//\n//\ta.Same(ptr1, ptr2)\n//\n// Both arguments must be pointer variables. Pointer variable sameness is\n// determined based on the equality of both type and value.\nfunc (a *Assertions) Same(expected interface{}, actual interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Same(a.t, expected, actual, msgAndArgs...)\n}\n\n// Samef asserts that two pointers reference the same object.\n//\n//\ta.Samef(ptr1, ptr2, \"error message %s\", \"formatted\")\n//\n// Both arguments must be pointer variables. Pointer variable sameness is\n// determined based on the equality of both type and value.\nfunc (a *Assertions) Samef(expected interface{}, actual interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Samef(a.t, expected, actual, msg, args...)\n}\n\n// Subset asserts that the list (array, slice, or map) contains all elements\n// given in the subset (array, slice, or map).\n// Map elements are key-value pairs unless compared with an array or slice where\n// only the map key is evaluated.\n//\n//\ta.Subset([1, 2, 3], [1, 2])\n//\ta.Subset({\"x\": 1, \"y\": 2}, {\"x\": 1})\n//\ta.Subset([1, 2, 3], {1: \"one\", 2: \"two\"})\n//\ta.Subset({\"x\": 1, \"y\": 2}, [\"x\"])\nfunc (a *Assertions) Subset(list interface{}, subset interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Subset(a.t, list, subset, msgAndArgs...)\n}\n\n// Subsetf asserts that the list (array, slice, or map) contains all elements\n// given in the subset (array, slice, or map).\n// Map elements are key-value pairs unless compared with an array or slice where\n// only the map key is evaluated.\n//\n//\ta.Subsetf([1, 2, 3], [1, 2], \"error message %s\", \"formatted\")\n//\ta.Subsetf({\"x\": 1, \"y\": 2}, {\"x\": 1}, \"error message %s\", \"formatted\")\n//\ta.Subsetf([1, 2, 3], {1: \"one\", 2: \"two\"}, \"error message %s\", \"formatted\")\n//\ta.Subsetf({\"x\": 1, \"y\": 2}, [\"x\"], \"error message %s\", \"formatted\")\nfunc (a *Assertions) Subsetf(list interface{}, subset interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Subsetf(a.t, list, subset, msg, args...)\n}\n\n// True asserts that the specified value is true.\n//\n//\ta.True(myBool)\nfunc (a *Assertions) True(value bool, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn True(a.t, value, msgAndArgs...)\n}\n\n// Truef asserts that the specified value is true.\n//\n//\ta.Truef(myBool, \"error message %s\", \"formatted\")\nfunc (a *Assertions) Truef(value bool, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Truef(a.t, value, msg, args...)\n}\n\n// WithinDuration asserts that the two times are within duration delta of each other.\n//\n//\ta.WithinDuration(time.Now(), time.Now(), 10*time.Second)\nfunc (a *Assertions) WithinDuration(expected time.Time, actual time.Time, delta time.Duration, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn WithinDuration(a.t, expected, actual, delta, msgAndArgs...)\n}\n\n// WithinDurationf asserts that the two times are within duration delta of each other.\n//\n//\ta.WithinDurationf(time.Now(), time.Now(), 10*time.Second, \"error message %s\", \"formatted\")\nfunc (a *Assertions) WithinDurationf(expected time.Time, actual time.Time, delta time.Duration, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn WithinDurationf(a.t, expected, actual, delta, msg, args...)\n}\n\n// WithinRange asserts that a time is within a time range (inclusive).\n//\n//\ta.WithinRange(time.Now(), time.Now().Add(-time.Second), time.Now().Add(time.Second))\nfunc (a *Assertions) WithinRange(actual time.Time, start time.Time, end time.Time, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn WithinRange(a.t, actual, start, end, msgAndArgs...)\n}\n\n// WithinRangef asserts that a time is within a time range (inclusive).\n//\n//\ta.WithinRangef(time.Now(), time.Now().Add(-time.Second), time.Now().Add(time.Second), \"error message %s\", \"formatted\")\nfunc (a *Assertions) WithinRangef(actual time.Time, start time.Time, end time.Time, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn WithinRangef(a.t, actual, start, end, msg, args...)\n}\n\n// YAMLEq asserts that two YAML strings are equivalent.\nfunc (a *Assertions) YAMLEq(expected string, actual string, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn YAMLEq(a.t, expected, actual, msgAndArgs...)\n}\n\n// YAMLEqf asserts that two YAML strings are equivalent.\nfunc (a *Assertions) YAMLEqf(expected string, actual string, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn YAMLEqf(a.t, expected, actual, msg, args...)\n}\n\n// Zero asserts that i is the zero value for its type.\nfunc (a *Assertions) Zero(i interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Zero(a.t, i, msgAndArgs...)\n}\n\n// Zerof asserts that i is the zero value for its type.\nfunc (a *Assertions) Zerof(i interface{}, msg string, args ...interface{}) bool {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Zerof(a.t, i, msg, args...)\n}\n"
  },
  {
    "path": "vendor/github.com/stretchr/testify/assert/assertion_forward.go.tmpl",
    "content": "{{.CommentWithoutT \"a\"}}\nfunc (a *Assertions) {{.DocInfo.Name}}({{.Params}}) bool {\n\tif h, ok := a.t.(tHelper); ok { h.Helper() }\n\treturn {{.DocInfo.Name}}(a.t, {{.ForwardedParams}})\n}\n"
  },
  {
    "path": "vendor/github.com/stretchr/testify/assert/assertion_order.go",
    "content": "package assert\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n)\n\n// isOrdered checks that collection contains orderable elements.\nfunc isOrdered(t TestingT, object interface{}, allowedComparesResults []compareResult, failMessage string, msgAndArgs ...interface{}) bool {\n\tobjKind := reflect.TypeOf(object).Kind()\n\tif objKind != reflect.Slice && objKind != reflect.Array {\n\t\treturn false\n\t}\n\n\tobjValue := reflect.ValueOf(object)\n\tobjLen := objValue.Len()\n\n\tif objLen <= 1 {\n\t\treturn true\n\t}\n\n\tvalue := objValue.Index(0)\n\tvalueInterface := value.Interface()\n\tfirstValueKind := value.Kind()\n\n\tfor i := 1; i < objLen; i++ {\n\t\tprevValue := value\n\t\tprevValueInterface := valueInterface\n\n\t\tvalue = objValue.Index(i)\n\t\tvalueInterface = value.Interface()\n\n\t\tcompareResult, isComparable := compare(prevValueInterface, valueInterface, firstValueKind)\n\n\t\tif !isComparable {\n\t\t\treturn Fail(t, fmt.Sprintf(`Can not compare type \"%T\" and \"%T\"`, value, prevValue), msgAndArgs...)\n\t\t}\n\n\t\tif !containsValue(allowedComparesResults, compareResult) {\n\t\t\treturn Fail(t, fmt.Sprintf(failMessage, prevValue, value), msgAndArgs...)\n\t\t}\n\t}\n\n\treturn true\n}\n\n// IsIncreasing asserts that the collection is increasing\n//\n//\tassert.IsIncreasing(t, []int{1, 2, 3})\n//\tassert.IsIncreasing(t, []float{1, 2})\n//\tassert.IsIncreasing(t, []string{\"a\", \"b\"})\nfunc IsIncreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) bool {\n\treturn isOrdered(t, object, []compareResult{compareLess}, \"\\\"%v\\\" is not less than \\\"%v\\\"\", msgAndArgs...)\n}\n\n// IsNonIncreasing asserts that the collection is not increasing\n//\n//\tassert.IsNonIncreasing(t, []int{2, 1, 1})\n//\tassert.IsNonIncreasing(t, []float{2, 1})\n//\tassert.IsNonIncreasing(t, []string{\"b\", \"a\"})\nfunc IsNonIncreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) bool {\n\treturn isOrdered(t, object, []compareResult{compareEqual, compareGreater}, \"\\\"%v\\\" is not greater than or equal to \\\"%v\\\"\", msgAndArgs...)\n}\n\n// IsDecreasing asserts that the collection is decreasing\n//\n//\tassert.IsDecreasing(t, []int{2, 1, 0})\n//\tassert.IsDecreasing(t, []float{2, 1})\n//\tassert.IsDecreasing(t, []string{\"b\", \"a\"})\nfunc IsDecreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) bool {\n\treturn isOrdered(t, object, []compareResult{compareGreater}, \"\\\"%v\\\" is not greater than \\\"%v\\\"\", msgAndArgs...)\n}\n\n// IsNonDecreasing asserts that the collection is not decreasing\n//\n//\tassert.IsNonDecreasing(t, []int{1, 1, 2})\n//\tassert.IsNonDecreasing(t, []float{1, 2})\n//\tassert.IsNonDecreasing(t, []string{\"a\", \"b\"})\nfunc IsNonDecreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) bool {\n\treturn isOrdered(t, object, []compareResult{compareLess, compareEqual}, \"\\\"%v\\\" is not less than or equal to \\\"%v\\\"\", msgAndArgs...)\n}\n"
  },
  {
    "path": "vendor/github.com/stretchr/testify/assert/assertions.go",
    "content": "package assert\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"math\"\n\t\"os\"\n\t\"reflect\"\n\t\"regexp\"\n\t\"runtime\"\n\t\"runtime/debug\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode\"\n\t\"unicode/utf8\"\n\n\t\"github.com/davecgh/go-spew/spew\"\n\t\"github.com/pmezard/go-difflib/difflib\"\n\n\t// Wrapper around gopkg.in/yaml.v3\n\t\"github.com/stretchr/testify/assert/yaml\"\n)\n\n//go:generate sh -c \"cd ../_codegen && go build && cd - && ../_codegen/_codegen -output-package=assert -template=assertion_format.go.tmpl\"\n\n// TestingT is an interface wrapper around *testing.T\ntype TestingT interface {\n\tErrorf(format string, args ...interface{})\n}\n\n// ComparisonAssertionFunc is a common function prototype when comparing two values.  Can be useful\n// for table driven tests.\ntype ComparisonAssertionFunc func(TestingT, interface{}, interface{}, ...interface{}) bool\n\n// ValueAssertionFunc is a common function prototype when validating a single value.  Can be useful\n// for table driven tests.\ntype ValueAssertionFunc func(TestingT, interface{}, ...interface{}) bool\n\n// BoolAssertionFunc is a common function prototype when validating a bool value.  Can be useful\n// for table driven tests.\ntype BoolAssertionFunc func(TestingT, bool, ...interface{}) bool\n\n// ErrorAssertionFunc is a common function prototype when validating an error value.  Can be useful\n// for table driven tests.\ntype ErrorAssertionFunc func(TestingT, error, ...interface{}) bool\n\n// PanicAssertionFunc is a common function prototype when validating a panic value.  Can be useful\n// for table driven tests.\ntype PanicAssertionFunc = func(t TestingT, f PanicTestFunc, msgAndArgs ...interface{}) bool\n\n// Comparison is a custom function that returns true on success and false on failure\ntype Comparison func() (success bool)\n\n/*\n\tHelper functions\n*/\n\n// ObjectsAreEqual determines if two objects are considered equal.\n//\n// This function does no assertion of any kind.\nfunc ObjectsAreEqual(expected, actual interface{}) bool {\n\tif expected == nil || actual == nil {\n\t\treturn expected == actual\n\t}\n\n\texp, ok := expected.([]byte)\n\tif !ok {\n\t\treturn reflect.DeepEqual(expected, actual)\n\t}\n\n\tact, ok := actual.([]byte)\n\tif !ok {\n\t\treturn false\n\t}\n\tif exp == nil || act == nil {\n\t\treturn exp == nil && act == nil\n\t}\n\treturn bytes.Equal(exp, act)\n}\n\n// copyExportedFields iterates downward through nested data structures and creates a copy\n// that only contains the exported struct fields.\nfunc copyExportedFields(expected interface{}) interface{} {\n\tif isNil(expected) {\n\t\treturn expected\n\t}\n\n\texpectedType := reflect.TypeOf(expected)\n\texpectedKind := expectedType.Kind()\n\texpectedValue := reflect.ValueOf(expected)\n\n\tswitch expectedKind {\n\tcase reflect.Struct:\n\t\tresult := reflect.New(expectedType).Elem()\n\t\tfor i := 0; i < expectedType.NumField(); i++ {\n\t\t\tfield := expectedType.Field(i)\n\t\t\tisExported := field.IsExported()\n\t\t\tif isExported {\n\t\t\t\tfieldValue := expectedValue.Field(i)\n\t\t\t\tif isNil(fieldValue) || isNil(fieldValue.Interface()) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tnewValue := copyExportedFields(fieldValue.Interface())\n\t\t\t\tresult.Field(i).Set(reflect.ValueOf(newValue))\n\t\t\t}\n\t\t}\n\t\treturn result.Interface()\n\n\tcase reflect.Ptr:\n\t\tresult := reflect.New(expectedType.Elem())\n\t\tunexportedRemoved := copyExportedFields(expectedValue.Elem().Interface())\n\t\tresult.Elem().Set(reflect.ValueOf(unexportedRemoved))\n\t\treturn result.Interface()\n\n\tcase reflect.Array, reflect.Slice:\n\t\tvar result reflect.Value\n\t\tif expectedKind == reflect.Array {\n\t\t\tresult = reflect.New(reflect.ArrayOf(expectedValue.Len(), expectedType.Elem())).Elem()\n\t\t} else {\n\t\t\tresult = reflect.MakeSlice(expectedType, expectedValue.Len(), expectedValue.Len())\n\t\t}\n\t\tfor i := 0; i < expectedValue.Len(); i++ {\n\t\t\tindex := expectedValue.Index(i)\n\t\t\tif isNil(index) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tunexportedRemoved := copyExportedFields(index.Interface())\n\t\t\tresult.Index(i).Set(reflect.ValueOf(unexportedRemoved))\n\t\t}\n\t\treturn result.Interface()\n\n\tcase reflect.Map:\n\t\tresult := reflect.MakeMap(expectedType)\n\t\tfor _, k := range expectedValue.MapKeys() {\n\t\t\tindex := expectedValue.MapIndex(k)\n\t\t\tunexportedRemoved := copyExportedFields(index.Interface())\n\t\t\tresult.SetMapIndex(k, reflect.ValueOf(unexportedRemoved))\n\t\t}\n\t\treturn result.Interface()\n\n\tdefault:\n\t\treturn expected\n\t}\n}\n\n// ObjectsExportedFieldsAreEqual determines if the exported (public) fields of two objects are\n// considered equal. This comparison of only exported fields is applied recursively to nested data\n// structures.\n//\n// This function does no assertion of any kind.\n//\n// Deprecated: Use [EqualExportedValues] instead.\nfunc ObjectsExportedFieldsAreEqual(expected, actual interface{}) bool {\n\texpectedCleaned := copyExportedFields(expected)\n\tactualCleaned := copyExportedFields(actual)\n\treturn ObjectsAreEqualValues(expectedCleaned, actualCleaned)\n}\n\n// ObjectsAreEqualValues gets whether two objects are equal, or if their\n// values are equal.\nfunc ObjectsAreEqualValues(expected, actual interface{}) bool {\n\tif ObjectsAreEqual(expected, actual) {\n\t\treturn true\n\t}\n\n\texpectedValue := reflect.ValueOf(expected)\n\tactualValue := reflect.ValueOf(actual)\n\tif !expectedValue.IsValid() || !actualValue.IsValid() {\n\t\treturn false\n\t}\n\n\texpectedType := expectedValue.Type()\n\tactualType := actualValue.Type()\n\tif !expectedType.ConvertibleTo(actualType) {\n\t\treturn false\n\t}\n\n\tif !isNumericType(expectedType) || !isNumericType(actualType) {\n\t\t// Attempt comparison after type conversion\n\t\treturn reflect.DeepEqual(\n\t\t\texpectedValue.Convert(actualType).Interface(), actual,\n\t\t)\n\t}\n\n\t// If BOTH values are numeric, there are chances of false positives due\n\t// to overflow or underflow. So, we need to make sure to always convert\n\t// the smaller type to a larger type before comparing.\n\tif expectedType.Size() >= actualType.Size() {\n\t\treturn actualValue.Convert(expectedType).Interface() == expected\n\t}\n\n\treturn expectedValue.Convert(actualType).Interface() == actual\n}\n\n// isNumericType returns true if the type is one of:\n// int, int8, int16, int32, int64, uint, uint8, uint16, uint32, uint64,\n// float32, float64, complex64, complex128\nfunc isNumericType(t reflect.Type) bool {\n\treturn t.Kind() >= reflect.Int && t.Kind() <= reflect.Complex128\n}\n\n/* CallerInfo is necessary because the assert functions use the testing object\ninternally, causing it to print the file:line of the assert method, rather than where\nthe problem actually occurred in calling code.*/\n\n// CallerInfo returns an array of strings containing the file and line number\n// of each stack frame leading from the current test to the assert call that\n// failed.\nfunc CallerInfo() []string {\n\tvar pc uintptr\n\tvar file string\n\tvar line int\n\tvar name string\n\n\tconst stackFrameBufferSize = 10\n\tpcs := make([]uintptr, stackFrameBufferSize)\n\n\tcallers := []string{}\n\toffset := 1\n\n\tfor {\n\t\tn := runtime.Callers(offset, pcs)\n\n\t\tif n == 0 {\n\t\t\tbreak\n\t\t}\n\n\t\tframes := runtime.CallersFrames(pcs[:n])\n\n\t\tfor {\n\t\t\tframe, more := frames.Next()\n\t\t\tpc = frame.PC\n\t\t\tfile = frame.File\n\t\t\tline = frame.Line\n\n\t\t\t// This is a huge edge case, but it will panic if this is the case, see #180\n\t\t\tif file == \"<autogenerated>\" {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tf := runtime.FuncForPC(pc)\n\t\t\tif f == nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tname = f.Name()\n\n\t\t\t// testing.tRunner is the standard library function that calls\n\t\t\t// tests. Subtests are called directly by tRunner, without going through\n\t\t\t// the Test/Benchmark/Example function that contains the t.Run calls, so\n\t\t\t// with subtests we should break when we hit tRunner, without adding it\n\t\t\t// to the list of callers.\n\t\t\tif name == \"testing.tRunner\" {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tparts := strings.Split(file, \"/\")\n\t\t\tif len(parts) > 1 {\n\t\t\t\tfilename := parts[len(parts)-1]\n\t\t\t\tdir := parts[len(parts)-2]\n\t\t\t\tif (dir != \"assert\" && dir != \"mock\" && dir != \"require\") || filename == \"mock_test.go\" {\n\t\t\t\t\tcallers = append(callers, fmt.Sprintf(\"%s:%d\", file, line))\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Drop the package\n\t\t\tdotPos := strings.LastIndexByte(name, '.')\n\t\t\tname = name[dotPos+1:]\n\t\t\tif isTest(name, \"Test\") ||\n\t\t\t\tisTest(name, \"Benchmark\") ||\n\t\t\t\tisTest(name, \"Example\") {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tif !more {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\t\t// Next batch\n\t\toffset += cap(pcs)\n\t}\n\n\treturn callers\n}\n\n// Stolen from the `go test` tool.\n// isTest tells whether name looks like a test (or benchmark, according to prefix).\n// It is a Test (say) if there is a character after Test that is not a lower-case letter.\n// We don't want TesticularCancer.\nfunc isTest(name, prefix string) bool {\n\tif !strings.HasPrefix(name, prefix) {\n\t\treturn false\n\t}\n\tif len(name) == len(prefix) { // \"Test\" is ok\n\t\treturn true\n\t}\n\tr, _ := utf8.DecodeRuneInString(name[len(prefix):])\n\treturn !unicode.IsLower(r)\n}\n\nfunc messageFromMsgAndArgs(msgAndArgs ...interface{}) string {\n\tif len(msgAndArgs) == 0 || msgAndArgs == nil {\n\t\treturn \"\"\n\t}\n\tif len(msgAndArgs) == 1 {\n\t\tmsg := msgAndArgs[0]\n\t\tif msgAsStr, ok := msg.(string); ok {\n\t\t\treturn msgAsStr\n\t\t}\n\t\treturn fmt.Sprintf(\"%+v\", msg)\n\t}\n\tif len(msgAndArgs) > 1 {\n\t\treturn fmt.Sprintf(msgAndArgs[0].(string), msgAndArgs[1:]...)\n\t}\n\treturn \"\"\n}\n\n// Aligns the provided message so that all lines after the first line start at the same location as the first line.\n// Assumes that the first line starts at the correct location (after carriage return, tab, label, spacer and tab).\n// The longestLabelLen parameter specifies the length of the longest label in the output (required because this is the\n// basis on which the alignment occurs).\nfunc indentMessageLines(message string, longestLabelLen int) string {\n\toutBuf := new(bytes.Buffer)\n\n\tfor i, scanner := 0, bufio.NewScanner(strings.NewReader(message)); scanner.Scan(); i++ {\n\t\t// no need to align first line because it starts at the correct location (after the label)\n\t\tif i != 0 {\n\t\t\t// append alignLen+1 spaces to align with \"{{longestLabel}}:\" before adding tab\n\t\t\toutBuf.WriteString(\"\\n\\t\" + strings.Repeat(\" \", longestLabelLen+1) + \"\\t\")\n\t\t}\n\t\toutBuf.WriteString(scanner.Text())\n\t}\n\n\treturn outBuf.String()\n}\n\ntype failNower interface {\n\tFailNow()\n}\n\n// FailNow fails test\nfunc FailNow(t TestingT, failureMessage string, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tFail(t, failureMessage, msgAndArgs...)\n\n\t// We cannot extend TestingT with FailNow() and\n\t// maintain backwards compatibility, so we fallback\n\t// to panicking when FailNow is not available in\n\t// TestingT.\n\t// See issue #263\n\n\tif t, ok := t.(failNower); ok {\n\t\tt.FailNow()\n\t} else {\n\t\tpanic(\"test failed and t is missing `FailNow()`\")\n\t}\n\treturn false\n}\n\n// Fail reports a failure through\nfunc Fail(t TestingT, failureMessage string, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tcontent := []labeledContent{\n\t\t{\"Error Trace\", strings.Join(CallerInfo(), \"\\n\\t\\t\\t\")},\n\t\t{\"Error\", failureMessage},\n\t}\n\n\t// Add test name if the Go version supports it\n\tif n, ok := t.(interface {\n\t\tName() string\n\t}); ok {\n\t\tcontent = append(content, labeledContent{\"Test\", n.Name()})\n\t}\n\n\tmessage := messageFromMsgAndArgs(msgAndArgs...)\n\tif len(message) > 0 {\n\t\tcontent = append(content, labeledContent{\"Messages\", message})\n\t}\n\n\tt.Errorf(\"\\n%s\", \"\"+labeledOutput(content...))\n\n\treturn false\n}\n\ntype labeledContent struct {\n\tlabel   string\n\tcontent string\n}\n\n// labeledOutput returns a string consisting of the provided labeledContent. Each labeled output is appended in the following manner:\n//\n//\t\\t{{label}}:{{align_spaces}}\\t{{content}}\\n\n//\n// The initial carriage return is required to undo/erase any padding added by testing.T.Errorf. The \"\\t{{label}}:\" is for the label.\n// If a label is shorter than the longest label provided, padding spaces are added to make all the labels match in length. Once this\n// alignment is achieved, \"\\t{{content}}\\n\" is added for the output.\n//\n// If the content of the labeledOutput contains line breaks, the subsequent lines are aligned so that they start at the same location as the first line.\nfunc labeledOutput(content ...labeledContent) string {\n\tlongestLabel := 0\n\tfor _, v := range content {\n\t\tif len(v.label) > longestLabel {\n\t\t\tlongestLabel = len(v.label)\n\t\t}\n\t}\n\tvar output string\n\tfor _, v := range content {\n\t\toutput += \"\\t\" + v.label + \":\" + strings.Repeat(\" \", longestLabel-len(v.label)) + \"\\t\" + indentMessageLines(v.content, longestLabel) + \"\\n\"\n\t}\n\treturn output\n}\n\n// Implements asserts that an object is implemented by the specified interface.\n//\n//\tassert.Implements(t, (*MyInterface)(nil), new(MyObject))\nfunc Implements(t TestingT, interfaceObject interface{}, object interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tinterfaceType := reflect.TypeOf(interfaceObject).Elem()\n\n\tif object == nil {\n\t\treturn Fail(t, fmt.Sprintf(\"Cannot check if nil implements %v\", interfaceType), msgAndArgs...)\n\t}\n\tif !reflect.TypeOf(object).Implements(interfaceType) {\n\t\treturn Fail(t, fmt.Sprintf(\"%T must implement %v\", object, interfaceType), msgAndArgs...)\n\t}\n\n\treturn true\n}\n\n// NotImplements asserts that an object does not implement the specified interface.\n//\n//\tassert.NotImplements(t, (*MyInterface)(nil), new(MyObject))\nfunc NotImplements(t TestingT, interfaceObject interface{}, object interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tinterfaceType := reflect.TypeOf(interfaceObject).Elem()\n\n\tif object == nil {\n\t\treturn Fail(t, fmt.Sprintf(\"Cannot check if nil does not implement %v\", interfaceType), msgAndArgs...)\n\t}\n\tif reflect.TypeOf(object).Implements(interfaceType) {\n\t\treturn Fail(t, fmt.Sprintf(\"%T implements %v\", object, interfaceType), msgAndArgs...)\n\t}\n\n\treturn true\n}\n\nfunc isType(expectedType, object interface{}) bool {\n\treturn ObjectsAreEqual(reflect.TypeOf(object), reflect.TypeOf(expectedType))\n}\n\n// IsType asserts that the specified objects are of the same type.\n//\n//\tassert.IsType(t, &MyStruct{}, &MyStruct{})\nfunc IsType(t TestingT, expectedType, object interface{}, msgAndArgs ...interface{}) bool {\n\tif isType(expectedType, object) {\n\t\treturn true\n\t}\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Fail(t, fmt.Sprintf(\"Object expected to be of type %T, but was %T\", expectedType, object), msgAndArgs...)\n}\n\n// IsNotType asserts that the specified objects are not of the same type.\n//\n//\tassert.IsNotType(t, &NotMyStruct{}, &MyStruct{})\nfunc IsNotType(t TestingT, theType, object interface{}, msgAndArgs ...interface{}) bool {\n\tif !isType(theType, object) {\n\t\treturn true\n\t}\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Fail(t, fmt.Sprintf(\"Object type expected to be different than %T\", theType), msgAndArgs...)\n}\n\n// Equal asserts that two objects are equal.\n//\n//\tassert.Equal(t, 123, 123)\n//\n// Pointer variable equality is determined based on the equality of the\n// referenced values (as opposed to the memory addresses). Function equality\n// cannot be determined and will always fail.\nfunc Equal(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif err := validateEqualArgs(expected, actual); err != nil {\n\t\treturn Fail(t, fmt.Sprintf(\"Invalid operation: %#v == %#v (%s)\",\n\t\t\texpected, actual, err), msgAndArgs...)\n\t}\n\n\tif !ObjectsAreEqual(expected, actual) {\n\t\tdiff := diff(expected, actual)\n\t\texpected, actual = formatUnequalValues(expected, actual)\n\t\treturn Fail(t, fmt.Sprintf(\"Not equal: \\n\"+\n\t\t\t\"expected: %s\\n\"+\n\t\t\t\"actual  : %s%s\", expected, actual, diff), msgAndArgs...)\n\t}\n\n\treturn true\n}\n\n// validateEqualArgs checks whether provided arguments can be safely used in the\n// Equal/NotEqual functions.\nfunc validateEqualArgs(expected, actual interface{}) error {\n\tif expected == nil && actual == nil {\n\t\treturn nil\n\t}\n\n\tif isFunction(expected) || isFunction(actual) {\n\t\treturn errors.New(\"cannot take func type as argument\")\n\t}\n\treturn nil\n}\n\n// Same asserts that two pointers reference the same object.\n//\n//\tassert.Same(t, ptr1, ptr2)\n//\n// Both arguments must be pointer variables. Pointer variable sameness is\n// determined based on the equality of both type and value.\nfunc Same(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\n\tsame, ok := samePointers(expected, actual)\n\tif !ok {\n\t\treturn Fail(t, \"Both arguments must be pointers\", msgAndArgs...)\n\t}\n\n\tif !same {\n\t\t// both are pointers but not the same type & pointing to the same address\n\t\treturn Fail(t, fmt.Sprintf(\"Not same: \\n\"+\n\t\t\t\"expected: %p %#[1]v\\n\"+\n\t\t\t\"actual  : %p %#[2]v\",\n\t\t\texpected, actual), msgAndArgs...)\n\t}\n\n\treturn true\n}\n\n// NotSame asserts that two pointers do not reference the same object.\n//\n//\tassert.NotSame(t, ptr1, ptr2)\n//\n// Both arguments must be pointer variables. Pointer variable sameness is\n// determined based on the equality of both type and value.\nfunc NotSame(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\n\tsame, ok := samePointers(expected, actual)\n\tif !ok {\n\t\t// fails when the arguments are not pointers\n\t\treturn !(Fail(t, \"Both arguments must be pointers\", msgAndArgs...))\n\t}\n\n\tif same {\n\t\treturn Fail(t, fmt.Sprintf(\n\t\t\t\"Expected and actual point to the same object: %p %#[1]v\",\n\t\t\texpected), msgAndArgs...)\n\t}\n\treturn true\n}\n\n// samePointers checks if two generic interface objects are pointers of the same\n// type pointing to the same object. It returns two values: same indicating if\n// they are the same type and point to the same object, and ok indicating that\n// both inputs are pointers.\nfunc samePointers(first, second interface{}) (same bool, ok bool) {\n\tfirstPtr, secondPtr := reflect.ValueOf(first), reflect.ValueOf(second)\n\tif firstPtr.Kind() != reflect.Ptr || secondPtr.Kind() != reflect.Ptr {\n\t\treturn false, false // not both are pointers\n\t}\n\n\tfirstType, secondType := reflect.TypeOf(first), reflect.TypeOf(second)\n\tif firstType != secondType {\n\t\treturn false, true // both are pointers, but of different types\n\t}\n\n\t// compare pointer addresses\n\treturn first == second, true\n}\n\n// formatUnequalValues takes two values of arbitrary types and returns string\n// representations appropriate to be presented to the user.\n//\n// If the values are not of like type, the returned strings will be prefixed\n// with the type name, and the value will be enclosed in parentheses similar\n// to a type conversion in the Go grammar.\nfunc formatUnequalValues(expected, actual interface{}) (e string, a string) {\n\tif reflect.TypeOf(expected) != reflect.TypeOf(actual) {\n\t\treturn fmt.Sprintf(\"%T(%s)\", expected, truncatingFormat(expected)),\n\t\t\tfmt.Sprintf(\"%T(%s)\", actual, truncatingFormat(actual))\n\t}\n\tswitch expected.(type) {\n\tcase time.Duration:\n\t\treturn fmt.Sprintf(\"%v\", expected), fmt.Sprintf(\"%v\", actual)\n\t}\n\treturn truncatingFormat(expected), truncatingFormat(actual)\n}\n\n// truncatingFormat formats the data and truncates it if it's too long.\n//\n// This helps keep formatted error messages lines from exceeding the\n// bufio.MaxScanTokenSize max line length that the go testing framework imposes.\nfunc truncatingFormat(data interface{}) string {\n\tvalue := fmt.Sprintf(\"%#v\", data)\n\tmax := bufio.MaxScanTokenSize - 100 // Give us some space the type info too if needed.\n\tif len(value) > max {\n\t\tvalue = value[0:max] + \"<... truncated>\"\n\t}\n\treturn value\n}\n\n// EqualValues asserts that two objects are equal or convertible to the larger\n// type and equal.\n//\n//\tassert.EqualValues(t, uint32(123), int32(123))\nfunc EqualValues(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\n\tif !ObjectsAreEqualValues(expected, actual) {\n\t\tdiff := diff(expected, actual)\n\t\texpected, actual = formatUnequalValues(expected, actual)\n\t\treturn Fail(t, fmt.Sprintf(\"Not equal: \\n\"+\n\t\t\t\"expected: %s\\n\"+\n\t\t\t\"actual  : %s%s\", expected, actual, diff), msgAndArgs...)\n\t}\n\n\treturn true\n}\n\n// EqualExportedValues asserts that the types of two objects are equal and their public\n// fields are also equal. This is useful for comparing structs that have private fields\n// that could potentially differ.\n//\n//\t type S struct {\n//\t\tExported     \tint\n//\t\tnotExported   \tint\n//\t }\n//\t assert.EqualExportedValues(t, S{1, 2}, S{1, 3}) => true\n//\t assert.EqualExportedValues(t, S{1, 2}, S{2, 3}) => false\nfunc EqualExportedValues(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\n\taType := reflect.TypeOf(expected)\n\tbType := reflect.TypeOf(actual)\n\n\tif aType != bType {\n\t\treturn Fail(t, fmt.Sprintf(\"Types expected to match exactly\\n\\t%v != %v\", aType, bType), msgAndArgs...)\n\t}\n\n\texpected = copyExportedFields(expected)\n\tactual = copyExportedFields(actual)\n\n\tif !ObjectsAreEqualValues(expected, actual) {\n\t\tdiff := diff(expected, actual)\n\t\texpected, actual = formatUnequalValues(expected, actual)\n\t\treturn Fail(t, fmt.Sprintf(\"Not equal (comparing only exported fields): \\n\"+\n\t\t\t\"expected: %s\\n\"+\n\t\t\t\"actual  : %s%s\", expected, actual, diff), msgAndArgs...)\n\t}\n\n\treturn true\n}\n\n// Exactly asserts that two objects are equal in value and type.\n//\n//\tassert.Exactly(t, int32(123), int64(123))\nfunc Exactly(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\n\taType := reflect.TypeOf(expected)\n\tbType := reflect.TypeOf(actual)\n\n\tif aType != bType {\n\t\treturn Fail(t, fmt.Sprintf(\"Types expected to match exactly\\n\\t%v != %v\", aType, bType), msgAndArgs...)\n\t}\n\n\treturn Equal(t, expected, actual, msgAndArgs...)\n}\n\n// NotNil asserts that the specified object is not nil.\n//\n//\tassert.NotNil(t, err)\nfunc NotNil(t TestingT, object interface{}, msgAndArgs ...interface{}) bool {\n\tif !isNil(object) {\n\t\treturn true\n\t}\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Fail(t, \"Expected value not to be nil.\", msgAndArgs...)\n}\n\n// isNil checks if a specified object is nil or not, without Failing.\nfunc isNil(object interface{}) bool {\n\tif object == nil {\n\t\treturn true\n\t}\n\n\tvalue := reflect.ValueOf(object)\n\tswitch value.Kind() {\n\tcase\n\t\treflect.Chan, reflect.Func,\n\t\treflect.Interface, reflect.Map,\n\t\treflect.Ptr, reflect.Slice, reflect.UnsafePointer:\n\n\t\treturn value.IsNil()\n\t}\n\n\treturn false\n}\n\n// Nil asserts that the specified object is nil.\n//\n//\tassert.Nil(t, err)\nfunc Nil(t TestingT, object interface{}, msgAndArgs ...interface{}) bool {\n\tif isNil(object) {\n\t\treturn true\n\t}\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\treturn Fail(t, fmt.Sprintf(\"Expected nil, but got: %#v\", object), msgAndArgs...)\n}\n\n// isEmpty gets whether the specified object is considered empty or not.\nfunc isEmpty(object interface{}) bool {\n\t// get nil case out of the way\n\tif object == nil {\n\t\treturn true\n\t}\n\n\treturn isEmptyValue(reflect.ValueOf(object))\n}\n\n// isEmptyValue gets whether the specified reflect.Value is considered empty or not.\nfunc isEmptyValue(objValue reflect.Value) bool {\n\tif objValue.IsZero() {\n\t\treturn true\n\t}\n\t// Special cases of non-zero values that we consider empty\n\tswitch objValue.Kind() {\n\t// collection types are empty when they have no element\n\t// Note: array types are empty when they match their zero-initialized state.\n\tcase reflect.Chan, reflect.Map, reflect.Slice:\n\t\treturn objValue.Len() == 0\n\t// non-nil pointers are empty if the value they point to is empty\n\tcase reflect.Ptr:\n\t\treturn isEmptyValue(objValue.Elem())\n\t}\n\treturn false\n}\n\n// Empty asserts that the given value is \"empty\".\n//\n// [Zero values] are \"empty\".\n//\n// Arrays are \"empty\" if every element is the zero value of the type (stricter than \"empty\").\n//\n// Slices, maps and channels with zero length are \"empty\".\n//\n// Pointer values are \"empty\" if the pointer is nil or if the pointed value is \"empty\".\n//\n//\tassert.Empty(t, obj)\n//\n// [Zero values]: https://go.dev/ref/spec#The_zero_value\nfunc Empty(t TestingT, object interface{}, msgAndArgs ...interface{}) bool {\n\tpass := isEmpty(object)\n\tif !pass {\n\t\tif h, ok := t.(tHelper); ok {\n\t\t\th.Helper()\n\t\t}\n\t\tFail(t, fmt.Sprintf(\"Should be empty, but was %v\", object), msgAndArgs...)\n\t}\n\n\treturn pass\n}\n\n// NotEmpty asserts that the specified object is NOT [Empty].\n//\n//\tif assert.NotEmpty(t, obj) {\n//\t  assert.Equal(t, \"two\", obj[1])\n//\t}\nfunc NotEmpty(t TestingT, object interface{}, msgAndArgs ...interface{}) bool {\n\tpass := !isEmpty(object)\n\tif !pass {\n\t\tif h, ok := t.(tHelper); ok {\n\t\t\th.Helper()\n\t\t}\n\t\tFail(t, fmt.Sprintf(\"Should NOT be empty, but was %v\", object), msgAndArgs...)\n\t}\n\n\treturn pass\n}\n\n// getLen tries to get the length of an object.\n// It returns (0, false) if impossible.\nfunc getLen(x interface{}) (length int, ok bool) {\n\tv := reflect.ValueOf(x)\n\tdefer func() {\n\t\tok = recover() == nil\n\t}()\n\treturn v.Len(), true\n}\n\n// Len asserts that the specified object has specific length.\n// Len also fails if the object has a type that len() not accept.\n//\n//\tassert.Len(t, mySlice, 3)\nfunc Len(t TestingT, object interface{}, length int, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tl, ok := getLen(object)\n\tif !ok {\n\t\treturn Fail(t, fmt.Sprintf(\"\\\"%v\\\" could not be applied builtin len()\", object), msgAndArgs...)\n\t}\n\n\tif l != length {\n\t\treturn Fail(t, fmt.Sprintf(\"\\\"%v\\\" should have %d item(s), but has %d\", object, length, l), msgAndArgs...)\n\t}\n\treturn true\n}\n\n// True asserts that the specified value is true.\n//\n//\tassert.True(t, myBool)\nfunc True(t TestingT, value bool, msgAndArgs ...interface{}) bool {\n\tif !value {\n\t\tif h, ok := t.(tHelper); ok {\n\t\t\th.Helper()\n\t\t}\n\t\treturn Fail(t, \"Should be true\", msgAndArgs...)\n\t}\n\n\treturn true\n}\n\n// False asserts that the specified value is false.\n//\n//\tassert.False(t, myBool)\nfunc False(t TestingT, value bool, msgAndArgs ...interface{}) bool {\n\tif value {\n\t\tif h, ok := t.(tHelper); ok {\n\t\t\th.Helper()\n\t\t}\n\t\treturn Fail(t, \"Should be false\", msgAndArgs...)\n\t}\n\n\treturn true\n}\n\n// NotEqual asserts that the specified values are NOT equal.\n//\n//\tassert.NotEqual(t, obj1, obj2)\n//\n// Pointer variable equality is determined based on the equality of the\n// referenced values (as opposed to the memory addresses).\nfunc NotEqual(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif err := validateEqualArgs(expected, actual); err != nil {\n\t\treturn Fail(t, fmt.Sprintf(\"Invalid operation: %#v != %#v (%s)\",\n\t\t\texpected, actual, err), msgAndArgs...)\n\t}\n\n\tif ObjectsAreEqual(expected, actual) {\n\t\treturn Fail(t, fmt.Sprintf(\"Should not be: %#v\\n\", actual), msgAndArgs...)\n\t}\n\n\treturn true\n}\n\n// NotEqualValues asserts that two objects are not equal even when converted to the same type\n//\n//\tassert.NotEqualValues(t, obj1, obj2)\nfunc NotEqualValues(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\n\tif ObjectsAreEqualValues(expected, actual) {\n\t\treturn Fail(t, fmt.Sprintf(\"Should not be: %#v\\n\", actual), msgAndArgs...)\n\t}\n\n\treturn true\n}\n\n// containsElement try loop over the list check if the list includes the element.\n// return (false, false) if impossible.\n// return (true, false) if element was not found.\n// return (true, true) if element was found.\nfunc containsElement(list interface{}, element interface{}) (ok, found bool) {\n\tlistValue := reflect.ValueOf(list)\n\tlistType := reflect.TypeOf(list)\n\tif listType == nil {\n\t\treturn false, false\n\t}\n\tlistKind := listType.Kind()\n\tdefer func() {\n\t\tif e := recover(); e != nil {\n\t\t\tok = false\n\t\t\tfound = false\n\t\t}\n\t}()\n\n\tif listKind == reflect.String {\n\t\telementValue := reflect.ValueOf(element)\n\t\treturn true, strings.Contains(listValue.String(), elementValue.String())\n\t}\n\n\tif listKind == reflect.Map {\n\t\tmapKeys := listValue.MapKeys()\n\t\tfor i := 0; i < len(mapKeys); i++ {\n\t\t\tif ObjectsAreEqual(mapKeys[i].Interface(), element) {\n\t\t\t\treturn true, true\n\t\t\t}\n\t\t}\n\t\treturn true, false\n\t}\n\n\tfor i := 0; i < listValue.Len(); i++ {\n\t\tif ObjectsAreEqual(listValue.Index(i).Interface(), element) {\n\t\t\treturn true, true\n\t\t}\n\t}\n\treturn true, false\n}\n\n// Contains asserts that the specified string, list(array, slice...) or map contains the\n// specified substring or element.\n//\n//\tassert.Contains(t, \"Hello World\", \"World\")\n//\tassert.Contains(t, [\"Hello\", \"World\"], \"World\")\n//\tassert.Contains(t, {\"Hello\": \"World\"}, \"Hello\")\nfunc Contains(t TestingT, s, contains interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\n\tok, found := containsElement(s, contains)\n\tif !ok {\n\t\treturn Fail(t, fmt.Sprintf(\"%#v could not be applied builtin len()\", s), msgAndArgs...)\n\t}\n\tif !found {\n\t\treturn Fail(t, fmt.Sprintf(\"%#v does not contain %#v\", s, contains), msgAndArgs...)\n\t}\n\n\treturn true\n}\n\n// NotContains asserts that the specified string, list(array, slice...) or map does NOT contain the\n// specified substring or element.\n//\n//\tassert.NotContains(t, \"Hello World\", \"Earth\")\n//\tassert.NotContains(t, [\"Hello\", \"World\"], \"Earth\")\n//\tassert.NotContains(t, {\"Hello\": \"World\"}, \"Earth\")\nfunc NotContains(t TestingT, s, contains interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\n\tok, found := containsElement(s, contains)\n\tif !ok {\n\t\treturn Fail(t, fmt.Sprintf(\"%#v could not be applied builtin len()\", s), msgAndArgs...)\n\t}\n\tif found {\n\t\treturn Fail(t, fmt.Sprintf(\"%#v should not contain %#v\", s, contains), msgAndArgs...)\n\t}\n\n\treturn true\n}\n\n// Subset asserts that the list (array, slice, or map) contains all elements\n// given in the subset (array, slice, or map).\n// Map elements are key-value pairs unless compared with an array or slice where\n// only the map key is evaluated.\n//\n//\tassert.Subset(t, [1, 2, 3], [1, 2])\n//\tassert.Subset(t, {\"x\": 1, \"y\": 2}, {\"x\": 1})\n//\tassert.Subset(t, [1, 2, 3], {1: \"one\", 2: \"two\"})\n//\tassert.Subset(t, {\"x\": 1, \"y\": 2}, [\"x\"])\nfunc Subset(t TestingT, list, subset interface{}, msgAndArgs ...interface{}) (ok bool) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif subset == nil {\n\t\treturn true // we consider nil to be equal to the nil set\n\t}\n\n\tlistKind := reflect.TypeOf(list).Kind()\n\tif listKind != reflect.Array && listKind != reflect.Slice && listKind != reflect.Map {\n\t\treturn Fail(t, fmt.Sprintf(\"%q has an unsupported type %s\", list, listKind), msgAndArgs...)\n\t}\n\n\tsubsetKind := reflect.TypeOf(subset).Kind()\n\tif subsetKind != reflect.Array && subsetKind != reflect.Slice && subsetKind != reflect.Map {\n\t\treturn Fail(t, fmt.Sprintf(\"%q has an unsupported type %s\", subset, subsetKind), msgAndArgs...)\n\t}\n\n\tif subsetKind == reflect.Map && listKind == reflect.Map {\n\t\tsubsetMap := reflect.ValueOf(subset)\n\t\tactualMap := reflect.ValueOf(list)\n\n\t\tfor _, k := range subsetMap.MapKeys() {\n\t\t\tev := subsetMap.MapIndex(k)\n\t\t\tav := actualMap.MapIndex(k)\n\n\t\t\tif !av.IsValid() {\n\t\t\t\treturn Fail(t, fmt.Sprintf(\"%#v does not contain %#v\", list, subset), msgAndArgs...)\n\t\t\t}\n\t\t\tif !ObjectsAreEqual(ev.Interface(), av.Interface()) {\n\t\t\t\treturn Fail(t, fmt.Sprintf(\"%#v does not contain %#v\", list, subset), msgAndArgs...)\n\t\t\t}\n\t\t}\n\n\t\treturn true\n\t}\n\n\tsubsetList := reflect.ValueOf(subset)\n\tif subsetKind == reflect.Map {\n\t\tkeys := make([]interface{}, subsetList.Len())\n\t\tfor idx, key := range subsetList.MapKeys() {\n\t\t\tkeys[idx] = key.Interface()\n\t\t}\n\t\tsubsetList = reflect.ValueOf(keys)\n\t}\n\tfor i := 0; i < subsetList.Len(); i++ {\n\t\telement := subsetList.Index(i).Interface()\n\t\tok, found := containsElement(list, element)\n\t\tif !ok {\n\t\t\treturn Fail(t, fmt.Sprintf(\"%#v could not be applied builtin len()\", list), msgAndArgs...)\n\t\t}\n\t\tif !found {\n\t\t\treturn Fail(t, fmt.Sprintf(\"%#v does not contain %#v\", list, element), msgAndArgs...)\n\t\t}\n\t}\n\n\treturn true\n}\n\n// NotSubset asserts that the list (array, slice, or map) does NOT contain all\n// elements given in the subset (array, slice, or map).\n// Map elements are key-value pairs unless compared with an array or slice where\n// only the map key is evaluated.\n//\n//\tassert.NotSubset(t, [1, 3, 4], [1, 2])\n//\tassert.NotSubset(t, {\"x\": 1, \"y\": 2}, {\"z\": 3})\n//\tassert.NotSubset(t, [1, 3, 4], {1: \"one\", 2: \"two\"})\n//\tassert.NotSubset(t, {\"x\": 1, \"y\": 2}, [\"z\"])\nfunc NotSubset(t TestingT, list, subset interface{}, msgAndArgs ...interface{}) (ok bool) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif subset == nil {\n\t\treturn Fail(t, \"nil is the empty set which is a subset of every set\", msgAndArgs...)\n\t}\n\n\tlistKind := reflect.TypeOf(list).Kind()\n\tif listKind != reflect.Array && listKind != reflect.Slice && listKind != reflect.Map {\n\t\treturn Fail(t, fmt.Sprintf(\"%q has an unsupported type %s\", list, listKind), msgAndArgs...)\n\t}\n\n\tsubsetKind := reflect.TypeOf(subset).Kind()\n\tif subsetKind != reflect.Array && subsetKind != reflect.Slice && subsetKind != reflect.Map {\n\t\treturn Fail(t, fmt.Sprintf(\"%q has an unsupported type %s\", subset, subsetKind), msgAndArgs...)\n\t}\n\n\tif subsetKind == reflect.Map && listKind == reflect.Map {\n\t\tsubsetMap := reflect.ValueOf(subset)\n\t\tactualMap := reflect.ValueOf(list)\n\n\t\tfor _, k := range subsetMap.MapKeys() {\n\t\t\tev := subsetMap.MapIndex(k)\n\t\t\tav := actualMap.MapIndex(k)\n\n\t\t\tif !av.IsValid() {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tif !ObjectsAreEqual(ev.Interface(), av.Interface()) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\n\t\treturn Fail(t, fmt.Sprintf(\"%q is a subset of %q\", subset, list), msgAndArgs...)\n\t}\n\n\tsubsetList := reflect.ValueOf(subset)\n\tif subsetKind == reflect.Map {\n\t\tkeys := make([]interface{}, subsetList.Len())\n\t\tfor idx, key := range subsetList.MapKeys() {\n\t\t\tkeys[idx] = key.Interface()\n\t\t}\n\t\tsubsetList = reflect.ValueOf(keys)\n\t}\n\tfor i := 0; i < subsetList.Len(); i++ {\n\t\telement := subsetList.Index(i).Interface()\n\t\tok, found := containsElement(list, element)\n\t\tif !ok {\n\t\t\treturn Fail(t, fmt.Sprintf(\"%q could not be applied builtin len()\", list), msgAndArgs...)\n\t\t}\n\t\tif !found {\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn Fail(t, fmt.Sprintf(\"%q is a subset of %q\", subset, list), msgAndArgs...)\n}\n\n// ElementsMatch asserts that the specified listA(array, slice...) is equal to specified\n// listB(array, slice...) ignoring the order of the elements. If there are duplicate elements,\n// the number of appearances of each of them in both lists should match.\n//\n// assert.ElementsMatch(t, [1, 3, 2, 3], [1, 3, 3, 2])\nfunc ElementsMatch(t TestingT, listA, listB interface{}, msgAndArgs ...interface{}) (ok bool) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif isEmpty(listA) && isEmpty(listB) {\n\t\treturn true\n\t}\n\n\tif !isList(t, listA, msgAndArgs...) || !isList(t, listB, msgAndArgs...) {\n\t\treturn false\n\t}\n\n\textraA, extraB := diffLists(listA, listB)\n\n\tif len(extraA) == 0 && len(extraB) == 0 {\n\t\treturn true\n\t}\n\n\treturn Fail(t, formatListDiff(listA, listB, extraA, extraB), msgAndArgs...)\n}\n\n// isList checks that the provided value is array or slice.\nfunc isList(t TestingT, list interface{}, msgAndArgs ...interface{}) (ok bool) {\n\tkind := reflect.TypeOf(list).Kind()\n\tif kind != reflect.Array && kind != reflect.Slice {\n\t\treturn Fail(t, fmt.Sprintf(\"%q has an unsupported type %s, expecting array or slice\", list, kind),\n\t\t\tmsgAndArgs...)\n\t}\n\treturn true\n}\n\n// diffLists diffs two arrays/slices and returns slices of elements that are only in A and only in B.\n// If some element is present multiple times, each instance is counted separately (e.g. if something is 2x in A and\n// 5x in B, it will be 0x in extraA and 3x in extraB). The order of items in both lists is ignored.\nfunc diffLists(listA, listB interface{}) (extraA, extraB []interface{}) {\n\taValue := reflect.ValueOf(listA)\n\tbValue := reflect.ValueOf(listB)\n\n\taLen := aValue.Len()\n\tbLen := bValue.Len()\n\n\t// Mark indexes in bValue that we already used\n\tvisited := make([]bool, bLen)\n\tfor i := 0; i < aLen; i++ {\n\t\telement := aValue.Index(i).Interface()\n\t\tfound := false\n\t\tfor j := 0; j < bLen; j++ {\n\t\t\tif visited[j] {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif ObjectsAreEqual(bValue.Index(j).Interface(), element) {\n\t\t\t\tvisited[j] = true\n\t\t\t\tfound = true\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif !found {\n\t\t\textraA = append(extraA, element)\n\t\t}\n\t}\n\n\tfor j := 0; j < bLen; j++ {\n\t\tif visited[j] {\n\t\t\tcontinue\n\t\t}\n\t\textraB = append(extraB, bValue.Index(j).Interface())\n\t}\n\n\treturn\n}\n\nfunc formatListDiff(listA, listB interface{}, extraA, extraB []interface{}) string {\n\tvar msg bytes.Buffer\n\n\tmsg.WriteString(\"elements differ\")\n\tif len(extraA) > 0 {\n\t\tmsg.WriteString(\"\\n\\nextra elements in list A:\\n\")\n\t\tmsg.WriteString(spewConfig.Sdump(extraA))\n\t}\n\tif len(extraB) > 0 {\n\t\tmsg.WriteString(\"\\n\\nextra elements in list B:\\n\")\n\t\tmsg.WriteString(spewConfig.Sdump(extraB))\n\t}\n\tmsg.WriteString(\"\\n\\nlistA:\\n\")\n\tmsg.WriteString(spewConfig.Sdump(listA))\n\tmsg.WriteString(\"\\n\\nlistB:\\n\")\n\tmsg.WriteString(spewConfig.Sdump(listB))\n\n\treturn msg.String()\n}\n\n// NotElementsMatch asserts that the specified listA(array, slice...) is NOT equal to specified\n// listB(array, slice...) ignoring the order of the elements. If there are duplicate elements,\n// the number of appearances of each of them in both lists should not match.\n// This is an inverse of ElementsMatch.\n//\n// assert.NotElementsMatch(t, [1, 1, 2, 3], [1, 1, 2, 3]) -> false\n//\n// assert.NotElementsMatch(t, [1, 1, 2, 3], [1, 2, 3]) -> true\n//\n// assert.NotElementsMatch(t, [1, 2, 3], [1, 2, 4]) -> true\nfunc NotElementsMatch(t TestingT, listA, listB interface{}, msgAndArgs ...interface{}) (ok bool) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif isEmpty(listA) && isEmpty(listB) {\n\t\treturn Fail(t, \"listA and listB contain the same elements\", msgAndArgs)\n\t}\n\n\tif !isList(t, listA, msgAndArgs...) {\n\t\treturn Fail(t, \"listA is not a list type\", msgAndArgs...)\n\t}\n\tif !isList(t, listB, msgAndArgs...) {\n\t\treturn Fail(t, \"listB is not a list type\", msgAndArgs...)\n\t}\n\n\textraA, extraB := diffLists(listA, listB)\n\tif len(extraA) == 0 && len(extraB) == 0 {\n\t\treturn Fail(t, \"listA and listB contain the same elements\", msgAndArgs)\n\t}\n\n\treturn true\n}\n\n// Condition uses a Comparison to assert a complex condition.\nfunc Condition(t TestingT, comp Comparison, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tresult := comp()\n\tif !result {\n\t\tFail(t, \"Condition failed!\", msgAndArgs...)\n\t}\n\treturn result\n}\n\n// PanicTestFunc defines a func that should be passed to the assert.Panics and assert.NotPanics\n// methods, and represents a simple func that takes no arguments, and returns nothing.\ntype PanicTestFunc func()\n\n// didPanic returns true if the function passed to it panics. Otherwise, it returns false.\nfunc didPanic(f PanicTestFunc) (didPanic bool, message interface{}, stack string) {\n\tdidPanic = true\n\n\tdefer func() {\n\t\tmessage = recover()\n\t\tif didPanic {\n\t\t\tstack = string(debug.Stack())\n\t\t}\n\t}()\n\n\t// call the target function\n\tf()\n\tdidPanic = false\n\n\treturn\n}\n\n// Panics asserts that the code inside the specified PanicTestFunc panics.\n//\n//\tassert.Panics(t, func(){ GoCrazy() })\nfunc Panics(t TestingT, f PanicTestFunc, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\n\tif funcDidPanic, panicValue, _ := didPanic(f); !funcDidPanic {\n\t\treturn Fail(t, fmt.Sprintf(\"func %#v should panic\\n\\tPanic value:\\t%#v\", f, panicValue), msgAndArgs...)\n\t}\n\n\treturn true\n}\n\n// PanicsWithValue asserts that the code inside the specified PanicTestFunc panics, and that\n// the recovered panic value equals the expected panic value.\n//\n//\tassert.PanicsWithValue(t, \"crazy error\", func(){ GoCrazy() })\nfunc PanicsWithValue(t TestingT, expected interface{}, f PanicTestFunc, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\n\tfuncDidPanic, panicValue, panickedStack := didPanic(f)\n\tif !funcDidPanic {\n\t\treturn Fail(t, fmt.Sprintf(\"func %#v should panic\\n\\tPanic value:\\t%#v\", f, panicValue), msgAndArgs...)\n\t}\n\tif panicValue != expected {\n\t\treturn Fail(t, fmt.Sprintf(\"func %#v should panic with value:\\t%#v\\n\\tPanic value:\\t%#v\\n\\tPanic stack:\\t%s\", f, expected, panicValue, panickedStack), msgAndArgs...)\n\t}\n\n\treturn true\n}\n\n// PanicsWithError asserts that the code inside the specified PanicTestFunc\n// panics, and that the recovered panic value is an error that satisfies the\n// EqualError comparison.\n//\n//\tassert.PanicsWithError(t, \"crazy error\", func(){ GoCrazy() })\nfunc PanicsWithError(t TestingT, errString string, f PanicTestFunc, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\n\tfuncDidPanic, panicValue, panickedStack := didPanic(f)\n\tif !funcDidPanic {\n\t\treturn Fail(t, fmt.Sprintf(\"func %#v should panic\\n\\tPanic value:\\t%#v\", f, panicValue), msgAndArgs...)\n\t}\n\tpanicErr, ok := panicValue.(error)\n\tif !ok || panicErr.Error() != errString {\n\t\treturn Fail(t, fmt.Sprintf(\"func %#v should panic with error message:\\t%#v\\n\\tPanic value:\\t%#v\\n\\tPanic stack:\\t%s\", f, errString, panicValue, panickedStack), msgAndArgs...)\n\t}\n\n\treturn true\n}\n\n// NotPanics asserts that the code inside the specified PanicTestFunc does NOT panic.\n//\n//\tassert.NotPanics(t, func(){ RemainCalm() })\nfunc NotPanics(t TestingT, f PanicTestFunc, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\n\tif funcDidPanic, panicValue, panickedStack := didPanic(f); funcDidPanic {\n\t\treturn Fail(t, fmt.Sprintf(\"func %#v should not panic\\n\\tPanic value:\\t%v\\n\\tPanic stack:\\t%s\", f, panicValue, panickedStack), msgAndArgs...)\n\t}\n\n\treturn true\n}\n\n// WithinDuration asserts that the two times are within duration delta of each other.\n//\n//\tassert.WithinDuration(t, time.Now(), time.Now(), 10*time.Second)\nfunc WithinDuration(t TestingT, expected, actual time.Time, delta time.Duration, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\n\tdt := expected.Sub(actual)\n\tif dt < -delta || dt > delta {\n\t\treturn Fail(t, fmt.Sprintf(\"Max difference between %v and %v allowed is %v, but difference was %v\", expected, actual, delta, dt), msgAndArgs...)\n\t}\n\n\treturn true\n}\n\n// WithinRange asserts that a time is within a time range (inclusive).\n//\n//\tassert.WithinRange(t, time.Now(), time.Now().Add(-time.Second), time.Now().Add(time.Second))\nfunc WithinRange(t TestingT, actual, start, end time.Time, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\n\tif end.Before(start) {\n\t\treturn Fail(t, \"Start should be before end\", msgAndArgs...)\n\t}\n\n\tif actual.Before(start) {\n\t\treturn Fail(t, fmt.Sprintf(\"Time %v expected to be in time range %v to %v, but is before the range\", actual, start, end), msgAndArgs...)\n\t} else if actual.After(end) {\n\t\treturn Fail(t, fmt.Sprintf(\"Time %v expected to be in time range %v to %v, but is after the range\", actual, start, end), msgAndArgs...)\n\t}\n\n\treturn true\n}\n\nfunc toFloat(x interface{}) (float64, bool) {\n\tvar xf float64\n\txok := true\n\n\tswitch xn := x.(type) {\n\tcase uint:\n\t\txf = float64(xn)\n\tcase uint8:\n\t\txf = float64(xn)\n\tcase uint16:\n\t\txf = float64(xn)\n\tcase uint32:\n\t\txf = float64(xn)\n\tcase uint64:\n\t\txf = float64(xn)\n\tcase int:\n\t\txf = float64(xn)\n\tcase int8:\n\t\txf = float64(xn)\n\tcase int16:\n\t\txf = float64(xn)\n\tcase int32:\n\t\txf = float64(xn)\n\tcase int64:\n\t\txf = float64(xn)\n\tcase float32:\n\t\txf = float64(xn)\n\tcase float64:\n\t\txf = xn\n\tcase time.Duration:\n\t\txf = float64(xn)\n\tdefault:\n\t\txok = false\n\t}\n\n\treturn xf, xok\n}\n\n// InDelta asserts that the two numerals are within delta of each other.\n//\n//\tassert.InDelta(t, math.Pi, 22/7.0, 0.01)\nfunc InDelta(t TestingT, expected, actual interface{}, delta float64, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\n\taf, aok := toFloat(expected)\n\tbf, bok := toFloat(actual)\n\n\tif !aok || !bok {\n\t\treturn Fail(t, \"Parameters must be numerical\", msgAndArgs...)\n\t}\n\n\tif math.IsNaN(af) && math.IsNaN(bf) {\n\t\treturn true\n\t}\n\n\tif math.IsNaN(af) {\n\t\treturn Fail(t, \"Expected must not be NaN\", msgAndArgs...)\n\t}\n\n\tif math.IsNaN(bf) {\n\t\treturn Fail(t, fmt.Sprintf(\"Expected %v with delta %v, but was NaN\", expected, delta), msgAndArgs...)\n\t}\n\n\tdt := af - bf\n\tif dt < -delta || dt > delta {\n\t\treturn Fail(t, fmt.Sprintf(\"Max difference between %v and %v allowed is %v, but difference was %v\", expected, actual, delta, dt), msgAndArgs...)\n\t}\n\n\treturn true\n}\n\n// InDeltaSlice is the same as InDelta, except it compares two slices.\nfunc InDeltaSlice(t TestingT, expected, actual interface{}, delta float64, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif expected == nil || actual == nil ||\n\t\treflect.TypeOf(actual).Kind() != reflect.Slice ||\n\t\treflect.TypeOf(expected).Kind() != reflect.Slice {\n\t\treturn Fail(t, \"Parameters must be slice\", msgAndArgs...)\n\t}\n\n\tactualSlice := reflect.ValueOf(actual)\n\texpectedSlice := reflect.ValueOf(expected)\n\n\tfor i := 0; i < actualSlice.Len(); i++ {\n\t\tresult := InDelta(t, actualSlice.Index(i).Interface(), expectedSlice.Index(i).Interface(), delta, msgAndArgs...)\n\t\tif !result {\n\t\t\treturn result\n\t\t}\n\t}\n\n\treturn true\n}\n\n// InDeltaMapValues is the same as InDelta, but it compares all values between two maps. Both maps must have exactly the same keys.\nfunc InDeltaMapValues(t TestingT, expected, actual interface{}, delta float64, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif expected == nil || actual == nil ||\n\t\treflect.TypeOf(actual).Kind() != reflect.Map ||\n\t\treflect.TypeOf(expected).Kind() != reflect.Map {\n\t\treturn Fail(t, \"Arguments must be maps\", msgAndArgs...)\n\t}\n\n\texpectedMap := reflect.ValueOf(expected)\n\tactualMap := reflect.ValueOf(actual)\n\n\tif expectedMap.Len() != actualMap.Len() {\n\t\treturn Fail(t, \"Arguments must have the same number of keys\", msgAndArgs...)\n\t}\n\n\tfor _, k := range expectedMap.MapKeys() {\n\t\tev := expectedMap.MapIndex(k)\n\t\tav := actualMap.MapIndex(k)\n\n\t\tif !ev.IsValid() {\n\t\t\treturn Fail(t, fmt.Sprintf(\"missing key %q in expected map\", k), msgAndArgs...)\n\t\t}\n\n\t\tif !av.IsValid() {\n\t\t\treturn Fail(t, fmt.Sprintf(\"missing key %q in actual map\", k), msgAndArgs...)\n\t\t}\n\n\t\tif !InDelta(\n\t\t\tt,\n\t\t\tev.Interface(),\n\t\t\tav.Interface(),\n\t\t\tdelta,\n\t\t\tmsgAndArgs...,\n\t\t) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\treturn true\n}\n\nfunc calcRelativeError(expected, actual interface{}) (float64, error) {\n\taf, aok := toFloat(expected)\n\tbf, bok := toFloat(actual)\n\tif !aok || !bok {\n\t\treturn 0, fmt.Errorf(\"Parameters must be numerical\")\n\t}\n\tif math.IsNaN(af) && math.IsNaN(bf) {\n\t\treturn 0, nil\n\t}\n\tif math.IsNaN(af) {\n\t\treturn 0, errors.New(\"expected value must not be NaN\")\n\t}\n\tif af == 0 {\n\t\treturn 0, fmt.Errorf(\"expected value must have a value other than zero to calculate the relative error\")\n\t}\n\tif math.IsNaN(bf) {\n\t\treturn 0, errors.New(\"actual value must not be NaN\")\n\t}\n\n\treturn math.Abs(af-bf) / math.Abs(af), nil\n}\n\n// InEpsilon asserts that expected and actual have a relative error less than epsilon\nfunc InEpsilon(t TestingT, expected, actual interface{}, epsilon float64, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif math.IsNaN(epsilon) {\n\t\treturn Fail(t, \"epsilon must not be NaN\", msgAndArgs...)\n\t}\n\tactualEpsilon, err := calcRelativeError(expected, actual)\n\tif err != nil {\n\t\treturn Fail(t, err.Error(), msgAndArgs...)\n\t}\n\tif math.IsNaN(actualEpsilon) {\n\t\treturn Fail(t, \"relative error is NaN\", msgAndArgs...)\n\t}\n\tif actualEpsilon > epsilon {\n\t\treturn Fail(t, fmt.Sprintf(\"Relative error is too high: %#v (expected)\\n\"+\n\t\t\t\"        < %#v (actual)\", epsilon, actualEpsilon), msgAndArgs...)\n\t}\n\n\treturn true\n}\n\n// InEpsilonSlice is the same as InEpsilon, except it compares each value from two slices.\nfunc InEpsilonSlice(t TestingT, expected, actual interface{}, epsilon float64, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\n\tif expected == nil || actual == nil {\n\t\treturn Fail(t, \"Parameters must be slice\", msgAndArgs...)\n\t}\n\n\texpectedSlice := reflect.ValueOf(expected)\n\tactualSlice := reflect.ValueOf(actual)\n\n\tif expectedSlice.Type().Kind() != reflect.Slice {\n\t\treturn Fail(t, \"Expected value must be slice\", msgAndArgs...)\n\t}\n\n\texpectedLen := expectedSlice.Len()\n\tif !IsType(t, expected, actual) || !Len(t, actual, expectedLen) {\n\t\treturn false\n\t}\n\n\tfor i := 0; i < expectedLen; i++ {\n\t\tif !InEpsilon(t, expectedSlice.Index(i).Interface(), actualSlice.Index(i).Interface(), epsilon, \"at index %d\", i) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\treturn true\n}\n\n/*\n\tErrors\n*/\n\n// NoError asserts that a function returned no error (i.e. `nil`).\n//\n//\t  actualObj, err := SomeFunction()\n//\t  if assert.NoError(t, err) {\n//\t\t   assert.Equal(t, expectedObj, actualObj)\n//\t  }\nfunc NoError(t TestingT, err error, msgAndArgs ...interface{}) bool {\n\tif err != nil {\n\t\tif h, ok := t.(tHelper); ok {\n\t\t\th.Helper()\n\t\t}\n\t\treturn Fail(t, fmt.Sprintf(\"Received unexpected error:\\n%+v\", err), msgAndArgs...)\n\t}\n\n\treturn true\n}\n\n// Error asserts that a function returned an error (i.e. not `nil`).\n//\n//\tactualObj, err := SomeFunction()\n//\tassert.Error(t, err)\nfunc Error(t TestingT, err error, msgAndArgs ...interface{}) bool {\n\tif err == nil {\n\t\tif h, ok := t.(tHelper); ok {\n\t\t\th.Helper()\n\t\t}\n\t\treturn Fail(t, \"An error is expected but got nil.\", msgAndArgs...)\n\t}\n\n\treturn true\n}\n\n// EqualError asserts that a function returned an error (i.e. not `nil`)\n// and that it is equal to the provided error.\n//\n//\tactualObj, err := SomeFunction()\n//\tassert.EqualError(t, err,  expectedErrorString)\nfunc EqualError(t TestingT, theError error, errString string, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif !Error(t, theError, msgAndArgs...) {\n\t\treturn false\n\t}\n\texpected := errString\n\tactual := theError.Error()\n\t// don't need to use deep equals here, we know they are both strings\n\tif expected != actual {\n\t\treturn Fail(t, fmt.Sprintf(\"Error message not equal:\\n\"+\n\t\t\t\"expected: %q\\n\"+\n\t\t\t\"actual  : %q\", expected, actual), msgAndArgs...)\n\t}\n\treturn true\n}\n\n// ErrorContains asserts that a function returned an error (i.e. not `nil`)\n// and that the error contains the specified substring.\n//\n//\tactualObj, err := SomeFunction()\n//\tassert.ErrorContains(t, err,  expectedErrorSubString)\nfunc ErrorContains(t TestingT, theError error, contains string, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif !Error(t, theError, msgAndArgs...) {\n\t\treturn false\n\t}\n\n\tactual := theError.Error()\n\tif !strings.Contains(actual, contains) {\n\t\treturn Fail(t, fmt.Sprintf(\"Error %#v does not contain %#v\", actual, contains), msgAndArgs...)\n\t}\n\n\treturn true\n}\n\n// matchRegexp return true if a specified regexp matches a string.\nfunc matchRegexp(rx interface{}, str interface{}) bool {\n\tvar r *regexp.Regexp\n\tif rr, ok := rx.(*regexp.Regexp); ok {\n\t\tr = rr\n\t} else {\n\t\tr = regexp.MustCompile(fmt.Sprint(rx))\n\t}\n\n\tswitch v := str.(type) {\n\tcase []byte:\n\t\treturn r.Match(v)\n\tcase string:\n\t\treturn r.MatchString(v)\n\tdefault:\n\t\treturn r.MatchString(fmt.Sprint(v))\n\t}\n}\n\n// Regexp asserts that a specified regexp matches a string.\n//\n//\tassert.Regexp(t, regexp.MustCompile(\"start\"), \"it's starting\")\n//\tassert.Regexp(t, \"start...$\", \"it's not starting\")\nfunc Regexp(t TestingT, rx interface{}, str interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\n\tmatch := matchRegexp(rx, str)\n\n\tif !match {\n\t\tFail(t, fmt.Sprintf(\"Expect \\\"%v\\\" to match \\\"%v\\\"\", str, rx), msgAndArgs...)\n\t}\n\n\treturn match\n}\n\n// NotRegexp asserts that a specified regexp does not match a string.\n//\n//\tassert.NotRegexp(t, regexp.MustCompile(\"starts\"), \"it's starting\")\n//\tassert.NotRegexp(t, \"^start\", \"it's not starting\")\nfunc NotRegexp(t TestingT, rx interface{}, str interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tmatch := matchRegexp(rx, str)\n\n\tif match {\n\t\tFail(t, fmt.Sprintf(\"Expect \\\"%v\\\" to NOT match \\\"%v\\\"\", str, rx), msgAndArgs...)\n\t}\n\n\treturn !match\n}\n\n// Zero asserts that i is the zero value for its type.\nfunc Zero(t TestingT, i interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif i != nil && !reflect.DeepEqual(i, reflect.Zero(reflect.TypeOf(i)).Interface()) {\n\t\treturn Fail(t, fmt.Sprintf(\"Should be zero, but was %v\", i), msgAndArgs...)\n\t}\n\treturn true\n}\n\n// NotZero asserts that i is not the zero value for its type.\nfunc NotZero(t TestingT, i interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif i == nil || reflect.DeepEqual(i, reflect.Zero(reflect.TypeOf(i)).Interface()) {\n\t\treturn Fail(t, fmt.Sprintf(\"Should not be zero, but was %v\", i), msgAndArgs...)\n\t}\n\treturn true\n}\n\n// FileExists checks whether a file exists in the given path. It also fails if\n// the path points to a directory or there is an error when trying to check the file.\nfunc FileExists(t TestingT, path string, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tinfo, err := os.Lstat(path)\n\tif err != nil {\n\t\tif os.IsNotExist(err) {\n\t\t\treturn Fail(t, fmt.Sprintf(\"unable to find file %q\", path), msgAndArgs...)\n\t\t}\n\t\treturn Fail(t, fmt.Sprintf(\"error when running os.Lstat(%q): %s\", path, err), msgAndArgs...)\n\t}\n\tif info.IsDir() {\n\t\treturn Fail(t, fmt.Sprintf(\"%q is a directory\", path), msgAndArgs...)\n\t}\n\treturn true\n}\n\n// NoFileExists checks whether a file does not exist in a given path. It fails\n// if the path points to an existing _file_ only.\nfunc NoFileExists(t TestingT, path string, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tinfo, err := os.Lstat(path)\n\tif err != nil {\n\t\treturn true\n\t}\n\tif info.IsDir() {\n\t\treturn true\n\t}\n\treturn Fail(t, fmt.Sprintf(\"file %q exists\", path), msgAndArgs...)\n}\n\n// DirExists checks whether a directory exists in the given path. It also fails\n// if the path is a file rather a directory or there is an error checking whether it exists.\nfunc DirExists(t TestingT, path string, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tinfo, err := os.Lstat(path)\n\tif err != nil {\n\t\tif os.IsNotExist(err) {\n\t\t\treturn Fail(t, fmt.Sprintf(\"unable to find file %q\", path), msgAndArgs...)\n\t\t}\n\t\treturn Fail(t, fmt.Sprintf(\"error when running os.Lstat(%q): %s\", path, err), msgAndArgs...)\n\t}\n\tif !info.IsDir() {\n\t\treturn Fail(t, fmt.Sprintf(\"%q is a file\", path), msgAndArgs...)\n\t}\n\treturn true\n}\n\n// NoDirExists checks whether a directory does not exist in the given path.\n// It fails if the path points to an existing _directory_ only.\nfunc NoDirExists(t TestingT, path string, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tinfo, err := os.Lstat(path)\n\tif err != nil {\n\t\tif os.IsNotExist(err) {\n\t\t\treturn true\n\t\t}\n\t\treturn true\n\t}\n\tif !info.IsDir() {\n\t\treturn true\n\t}\n\treturn Fail(t, fmt.Sprintf(\"directory %q exists\", path), msgAndArgs...)\n}\n\n// JSONEq asserts that two JSON strings are equivalent.\n//\n//\tassert.JSONEq(t, `{\"hello\": \"world\", \"foo\": \"bar\"}`, `{\"foo\": \"bar\", \"hello\": \"world\"}`)\nfunc JSONEq(t TestingT, expected string, actual string, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tvar expectedJSONAsInterface, actualJSONAsInterface interface{}\n\n\tif err := json.Unmarshal([]byte(expected), &expectedJSONAsInterface); err != nil {\n\t\treturn Fail(t, fmt.Sprintf(\"Expected value ('%s') is not valid json.\\nJSON parsing error: '%s'\", expected, err.Error()), msgAndArgs...)\n\t}\n\n\t// Shortcut if same bytes\n\tif actual == expected {\n\t\treturn true\n\t}\n\n\tif err := json.Unmarshal([]byte(actual), &actualJSONAsInterface); err != nil {\n\t\treturn Fail(t, fmt.Sprintf(\"Input ('%s') needs to be valid json.\\nJSON parsing error: '%s'\", actual, err.Error()), msgAndArgs...)\n\t}\n\n\treturn Equal(t, expectedJSONAsInterface, actualJSONAsInterface, msgAndArgs...)\n}\n\n// YAMLEq asserts that two YAML strings are equivalent.\nfunc YAMLEq(t TestingT, expected string, actual string, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tvar expectedYAMLAsInterface, actualYAMLAsInterface interface{}\n\n\tif err := yaml.Unmarshal([]byte(expected), &expectedYAMLAsInterface); err != nil {\n\t\treturn Fail(t, fmt.Sprintf(\"Expected value ('%s') is not valid yaml.\\nYAML parsing error: '%s'\", expected, err.Error()), msgAndArgs...)\n\t}\n\n\t// Shortcut if same bytes\n\tif actual == expected {\n\t\treturn true\n\t}\n\n\tif err := yaml.Unmarshal([]byte(actual), &actualYAMLAsInterface); err != nil {\n\t\treturn Fail(t, fmt.Sprintf(\"Input ('%s') needs to be valid yaml.\\nYAML error: '%s'\", actual, err.Error()), msgAndArgs...)\n\t}\n\n\treturn Equal(t, expectedYAMLAsInterface, actualYAMLAsInterface, msgAndArgs...)\n}\n\nfunc typeAndKind(v interface{}) (reflect.Type, reflect.Kind) {\n\tt := reflect.TypeOf(v)\n\tk := t.Kind()\n\n\tif k == reflect.Ptr {\n\t\tt = t.Elem()\n\t\tk = t.Kind()\n\t}\n\treturn t, k\n}\n\n// diff returns a diff of both values as long as both are of the same type and\n// are a struct, map, slice, array or string. Otherwise it returns an empty string.\nfunc diff(expected interface{}, actual interface{}) string {\n\tif expected == nil || actual == nil {\n\t\treturn \"\"\n\t}\n\n\tet, ek := typeAndKind(expected)\n\tat, _ := typeAndKind(actual)\n\n\tif et != at {\n\t\treturn \"\"\n\t}\n\n\tif ek != reflect.Struct && ek != reflect.Map && ek != reflect.Slice && ek != reflect.Array && ek != reflect.String {\n\t\treturn \"\"\n\t}\n\n\tvar e, a string\n\n\tswitch et {\n\tcase reflect.TypeOf(\"\"):\n\t\te = reflect.ValueOf(expected).String()\n\t\ta = reflect.ValueOf(actual).String()\n\tcase reflect.TypeOf(time.Time{}):\n\t\te = spewConfigStringerEnabled.Sdump(expected)\n\t\ta = spewConfigStringerEnabled.Sdump(actual)\n\tdefault:\n\t\te = spewConfig.Sdump(expected)\n\t\ta = spewConfig.Sdump(actual)\n\t}\n\n\tdiff, _ := difflib.GetUnifiedDiffString(difflib.UnifiedDiff{\n\t\tA:        difflib.SplitLines(e),\n\t\tB:        difflib.SplitLines(a),\n\t\tFromFile: \"Expected\",\n\t\tFromDate: \"\",\n\t\tToFile:   \"Actual\",\n\t\tToDate:   \"\",\n\t\tContext:  1,\n\t})\n\n\treturn \"\\n\\nDiff:\\n\" + diff\n}\n\nfunc isFunction(arg interface{}) bool {\n\tif arg == nil {\n\t\treturn false\n\t}\n\treturn reflect.TypeOf(arg).Kind() == reflect.Func\n}\n\nvar spewConfig = spew.ConfigState{\n\tIndent:                  \" \",\n\tDisablePointerAddresses: true,\n\tDisableCapacities:       true,\n\tSortKeys:                true,\n\tDisableMethods:          true,\n\tMaxDepth:                10,\n}\n\nvar spewConfigStringerEnabled = spew.ConfigState{\n\tIndent:                  \" \",\n\tDisablePointerAddresses: true,\n\tDisableCapacities:       true,\n\tSortKeys:                true,\n\tMaxDepth:                10,\n}\n\ntype tHelper = interface {\n\tHelper()\n}\n\n// Eventually asserts that given condition will be met in waitFor time,\n// periodically checking target function each tick.\n//\n//\tassert.Eventually(t, func() bool { return true; }, time.Second, 10*time.Millisecond)\nfunc Eventually(t TestingT, condition func() bool, waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\n\tch := make(chan bool, 1)\n\tcheckCond := func() { ch <- condition() }\n\n\ttimer := time.NewTimer(waitFor)\n\tdefer timer.Stop()\n\n\tticker := time.NewTicker(tick)\n\tdefer ticker.Stop()\n\n\tvar tickC <-chan time.Time\n\n\t// Check the condition once first on the initial call.\n\tgo checkCond()\n\n\tfor {\n\t\tselect {\n\t\tcase <-timer.C:\n\t\t\treturn Fail(t, \"Condition never satisfied\", msgAndArgs...)\n\t\tcase <-tickC:\n\t\t\ttickC = nil\n\t\t\tgo checkCond()\n\t\tcase v := <-ch:\n\t\t\tif v {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\ttickC = ticker.C\n\t\t}\n\t}\n}\n\n// CollectT implements the TestingT interface and collects all errors.\ntype CollectT struct {\n\t// A slice of errors. Non-nil slice denotes a failure.\n\t// If it's non-nil but len(c.errors) == 0, this is also a failure\n\t// obtained by direct c.FailNow() call.\n\terrors []error\n}\n\n// Helper is like [testing.T.Helper] but does nothing.\nfunc (CollectT) Helper() {}\n\n// Errorf collects the error.\nfunc (c *CollectT) Errorf(format string, args ...interface{}) {\n\tc.errors = append(c.errors, fmt.Errorf(format, args...))\n}\n\n// FailNow stops execution by calling runtime.Goexit.\nfunc (c *CollectT) FailNow() {\n\tc.fail()\n\truntime.Goexit()\n}\n\n// Deprecated: That was a method for internal usage that should not have been published. Now just panics.\nfunc (*CollectT) Reset() {\n\tpanic(\"Reset() is deprecated\")\n}\n\n// Deprecated: That was a method for internal usage that should not have been published. Now just panics.\nfunc (*CollectT) Copy(TestingT) {\n\tpanic(\"Copy() is deprecated\")\n}\n\nfunc (c *CollectT) fail() {\n\tif !c.failed() {\n\t\tc.errors = []error{} // Make it non-nil to mark a failure.\n\t}\n}\n\nfunc (c *CollectT) failed() bool {\n\treturn c.errors != nil\n}\n\n// EventuallyWithT asserts that given condition will be met in waitFor time,\n// periodically checking target function each tick. In contrast to Eventually,\n// it supplies a CollectT to the condition function, so that the condition\n// function can use the CollectT to call other assertions.\n// The condition is considered \"met\" if no errors are raised in a tick.\n// The supplied CollectT collects all errors from one tick (if there are any).\n// If the condition is not met before waitFor, the collected errors of\n// the last tick are copied to t.\n//\n//\texternalValue := false\n//\tgo func() {\n//\t\ttime.Sleep(8*time.Second)\n//\t\texternalValue = true\n//\t}()\n//\tassert.EventuallyWithT(t, func(c *assert.CollectT) {\n//\t\t// add assertions as needed; any assertion failure will fail the current tick\n//\t\tassert.True(c, externalValue, \"expected 'externalValue' to be true\")\n//\t}, 10*time.Second, 1*time.Second, \"external state has not changed to 'true'; still false\")\nfunc EventuallyWithT(t TestingT, condition func(collect *CollectT), waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\n\tvar lastFinishedTickErrs []error\n\tch := make(chan *CollectT, 1)\n\n\tcheckCond := func() {\n\t\tcollect := new(CollectT)\n\t\tdefer func() {\n\t\t\tch <- collect\n\t\t}()\n\t\tcondition(collect)\n\t}\n\n\ttimer := time.NewTimer(waitFor)\n\tdefer timer.Stop()\n\n\tticker := time.NewTicker(tick)\n\tdefer ticker.Stop()\n\n\tvar tickC <-chan time.Time\n\n\t// Check the condition once first on the initial call.\n\tgo checkCond()\n\n\tfor {\n\t\tselect {\n\t\tcase <-timer.C:\n\t\t\tfor _, err := range lastFinishedTickErrs {\n\t\t\t\tt.Errorf(\"%v\", err)\n\t\t\t}\n\t\t\treturn Fail(t, \"Condition never satisfied\", msgAndArgs...)\n\t\tcase <-tickC:\n\t\t\ttickC = nil\n\t\t\tgo checkCond()\n\t\tcase collect := <-ch:\n\t\t\tif !collect.failed() {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\t// Keep the errors from the last ended condition, so that they can be copied to t if timeout is reached.\n\t\t\tlastFinishedTickErrs = collect.errors\n\t\t\ttickC = ticker.C\n\t\t}\n\t}\n}\n\n// Never asserts that the given condition doesn't satisfy in waitFor time,\n// periodically checking the target function each tick.\n//\n//\tassert.Never(t, func() bool { return false; }, time.Second, 10*time.Millisecond)\nfunc Never(t TestingT, condition func() bool, waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\n\tch := make(chan bool, 1)\n\tcheckCond := func() { ch <- condition() }\n\n\ttimer := time.NewTimer(waitFor)\n\tdefer timer.Stop()\n\n\tticker := time.NewTicker(tick)\n\tdefer ticker.Stop()\n\n\tvar tickC <-chan time.Time\n\n\t// Check the condition once first on the initial call.\n\tgo checkCond()\n\n\tfor {\n\t\tselect {\n\t\tcase <-timer.C:\n\t\t\treturn true\n\t\tcase <-tickC:\n\t\t\ttickC = nil\n\t\t\tgo checkCond()\n\t\tcase v := <-ch:\n\t\t\tif v {\n\t\t\t\treturn Fail(t, \"Condition satisfied\", msgAndArgs...)\n\t\t\t}\n\t\t\ttickC = ticker.C\n\t\t}\n\t}\n}\n\n// ErrorIs asserts that at least one of the errors in err's chain matches target.\n// This is a wrapper for errors.Is.\nfunc ErrorIs(t TestingT, err, target error, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif errors.Is(err, target) {\n\t\treturn true\n\t}\n\n\tvar expectedText string\n\tif target != nil {\n\t\texpectedText = target.Error()\n\t\tif err == nil {\n\t\t\treturn Fail(t, fmt.Sprintf(\"Expected error with %q in chain but got nil.\", expectedText), msgAndArgs...)\n\t\t}\n\t}\n\n\tchain := buildErrorChainString(err, false)\n\n\treturn Fail(t, fmt.Sprintf(\"Target error should be in err chain:\\n\"+\n\t\t\"expected: %q\\n\"+\n\t\t\"in chain: %s\", expectedText, chain,\n\t), msgAndArgs...)\n}\n\n// NotErrorIs asserts that none of the errors in err's chain matches target.\n// This is a wrapper for errors.Is.\nfunc NotErrorIs(t TestingT, err, target error, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif !errors.Is(err, target) {\n\t\treturn true\n\t}\n\n\tvar expectedText string\n\tif target != nil {\n\t\texpectedText = target.Error()\n\t}\n\n\tchain := buildErrorChainString(err, false)\n\n\treturn Fail(t, fmt.Sprintf(\"Target error should not be in err chain:\\n\"+\n\t\t\"found: %q\\n\"+\n\t\t\"in chain: %s\", expectedText, chain,\n\t), msgAndArgs...)\n}\n\n// ErrorAs asserts that at least one of the errors in err's chain matches target, and if so, sets target to that error value.\n// This is a wrapper for errors.As.\nfunc ErrorAs(t TestingT, err error, target interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif errors.As(err, target) {\n\t\treturn true\n\t}\n\n\texpectedType := reflect.TypeOf(target).Elem().String()\n\tif err == nil {\n\t\treturn Fail(t, fmt.Sprintf(\"An error is expected but got nil.\\n\"+\n\t\t\t\"expected: %s\", expectedType), msgAndArgs...)\n\t}\n\n\tchain := buildErrorChainString(err, true)\n\n\treturn Fail(t, fmt.Sprintf(\"Should be in error chain:\\n\"+\n\t\t\"expected: %s\\n\"+\n\t\t\"in chain: %s\", expectedType, chain,\n\t), msgAndArgs...)\n}\n\n// NotErrorAs asserts that none of the errors in err's chain matches target,\n// but if so, sets target to that error value.\nfunc NotErrorAs(t TestingT, err error, target interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif !errors.As(err, target) {\n\t\treturn true\n\t}\n\n\tchain := buildErrorChainString(err, true)\n\n\treturn Fail(t, fmt.Sprintf(\"Target error should not be in err chain:\\n\"+\n\t\t\"found: %s\\n\"+\n\t\t\"in chain: %s\", reflect.TypeOf(target).Elem().String(), chain,\n\t), msgAndArgs...)\n}\n\nfunc unwrapAll(err error) (errs []error) {\n\terrs = append(errs, err)\n\tswitch x := err.(type) {\n\tcase interface{ Unwrap() error }:\n\t\terr = x.Unwrap()\n\t\tif err == nil {\n\t\t\treturn\n\t\t}\n\t\terrs = append(errs, unwrapAll(err)...)\n\tcase interface{ Unwrap() []error }:\n\t\tfor _, err := range x.Unwrap() {\n\t\t\terrs = append(errs, unwrapAll(err)...)\n\t\t}\n\t}\n\treturn\n}\n\nfunc buildErrorChainString(err error, withType bool) string {\n\tif err == nil {\n\t\treturn \"\"\n\t}\n\n\tvar chain string\n\terrs := unwrapAll(err)\n\tfor i := range errs {\n\t\tif i != 0 {\n\t\t\tchain += \"\\n\\t\"\n\t\t}\n\t\tchain += fmt.Sprintf(\"%q\", errs[i].Error())\n\t\tif withType {\n\t\t\tchain += fmt.Sprintf(\" (%T)\", errs[i])\n\t\t}\n\t}\n\treturn chain\n}\n"
  },
  {
    "path": "vendor/github.com/stretchr/testify/assert/doc.go",
    "content": "// Package assert provides a set of comprehensive testing tools for use with the normal Go testing system.\n//\n// # Note\n//\n// All functions in this package return a bool value indicating whether the assertion has passed.\n//\n// # Example Usage\n//\n// The following is a complete example using assert in a standard test function:\n//\n//\timport (\n//\t  \"testing\"\n//\t  \"github.com/stretchr/testify/assert\"\n//\t)\n//\n//\tfunc TestSomething(t *testing.T) {\n//\n//\t  var a string = \"Hello\"\n//\t  var b string = \"Hello\"\n//\n//\t  assert.Equal(t, a, b, \"The two words should be the same.\")\n//\n//\t}\n//\n// if you assert many times, use the format below:\n//\n//\timport (\n//\t  \"testing\"\n//\t  \"github.com/stretchr/testify/assert\"\n//\t)\n//\n//\tfunc TestSomething(t *testing.T) {\n//\t  assert := assert.New(t)\n//\n//\t  var a string = \"Hello\"\n//\t  var b string = \"Hello\"\n//\n//\t  assert.Equal(a, b, \"The two words should be the same.\")\n//\t}\n//\n// # Assertions\n//\n// Assertions allow you to easily write test code, and are global funcs in the `assert` package.\n// All assertion functions take, as the first argument, the `*testing.T` object provided by the\n// testing framework. This allows the assertion funcs to write the failings and other details to\n// the correct place.\n//\n// Every assertion function also takes an optional string message as the final argument,\n// allowing custom error messages to be appended to the message the assertion method outputs.\npackage assert\n"
  },
  {
    "path": "vendor/github.com/stretchr/testify/assert/errors.go",
    "content": "package assert\n\nimport (\n\t\"errors\"\n)\n\n// AnError is an error instance useful for testing.  If the code does not care\n// about error specifics, and only needs to return the error for example, this\n// error should be used to make the test code more readable.\nvar AnError = errors.New(\"assert.AnError general error for testing\")\n"
  },
  {
    "path": "vendor/github.com/stretchr/testify/assert/forward_assertions.go",
    "content": "package assert\n\n// Assertions provides assertion methods around the\n// TestingT interface.\ntype Assertions struct {\n\tt TestingT\n}\n\n// New makes a new Assertions object for the specified TestingT.\nfunc New(t TestingT) *Assertions {\n\treturn &Assertions{\n\t\tt: t,\n\t}\n}\n\n//go:generate sh -c \"cd ../_codegen && go build && cd - && ../_codegen/_codegen -output-package=assert -template=assertion_forward.go.tmpl -include-format-funcs\"\n"
  },
  {
    "path": "vendor/github.com/stretchr/testify/assert/http_assertions.go",
    "content": "package assert\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"net/http/httptest\"\n\t\"net/url\"\n\t\"strings\"\n)\n\n// httpCode is a helper that returns HTTP code of the response. It returns -1 and\n// an error if building a new request fails.\nfunc httpCode(handler http.HandlerFunc, method, url string, values url.Values) (int, error) {\n\tw := httptest.NewRecorder()\n\treq, err := http.NewRequest(method, url, http.NoBody)\n\tif err != nil {\n\t\treturn -1, err\n\t}\n\treq.URL.RawQuery = values.Encode()\n\thandler(w, req)\n\treturn w.Code, nil\n}\n\n// HTTPSuccess asserts that a specified handler returns a success status code.\n//\n//\tassert.HTTPSuccess(t, myHandler, \"POST\", \"http://www.google.com\", nil)\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc HTTPSuccess(t TestingT, handler http.HandlerFunc, method, url string, values url.Values, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tcode, err := httpCode(handler, method, url, values)\n\tif err != nil {\n\t\tFail(t, fmt.Sprintf(\"Failed to build test request, got error: %s\", err), msgAndArgs...)\n\t}\n\n\tisSuccessCode := code >= http.StatusOK && code <= http.StatusPartialContent\n\tif !isSuccessCode {\n\t\tFail(t, fmt.Sprintf(\"Expected HTTP success status code for %q but received %d\", url+\"?\"+values.Encode(), code), msgAndArgs...)\n\t}\n\n\treturn isSuccessCode\n}\n\n// HTTPRedirect asserts that a specified handler returns a redirect status code.\n//\n//\tassert.HTTPRedirect(t, myHandler, \"GET\", \"/a/b/c\", url.Values{\"a\": []string{\"b\", \"c\"}}\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc HTTPRedirect(t TestingT, handler http.HandlerFunc, method, url string, values url.Values, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tcode, err := httpCode(handler, method, url, values)\n\tif err != nil {\n\t\tFail(t, fmt.Sprintf(\"Failed to build test request, got error: %s\", err), msgAndArgs...)\n\t}\n\n\tisRedirectCode := code >= http.StatusMultipleChoices && code <= http.StatusTemporaryRedirect\n\tif !isRedirectCode {\n\t\tFail(t, fmt.Sprintf(\"Expected HTTP redirect status code for %q but received %d\", url+\"?\"+values.Encode(), code), msgAndArgs...)\n\t}\n\n\treturn isRedirectCode\n}\n\n// HTTPError asserts that a specified handler returns an error status code.\n//\n//\tassert.HTTPError(t, myHandler, \"POST\", \"/a/b/c\", url.Values{\"a\": []string{\"b\", \"c\"}}\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc HTTPError(t TestingT, handler http.HandlerFunc, method, url string, values url.Values, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tcode, err := httpCode(handler, method, url, values)\n\tif err != nil {\n\t\tFail(t, fmt.Sprintf(\"Failed to build test request, got error: %s\", err), msgAndArgs...)\n\t}\n\n\tisErrorCode := code >= http.StatusBadRequest\n\tif !isErrorCode {\n\t\tFail(t, fmt.Sprintf(\"Expected HTTP error status code for %q but received %d\", url+\"?\"+values.Encode(), code), msgAndArgs...)\n\t}\n\n\treturn isErrorCode\n}\n\n// HTTPStatusCode asserts that a specified handler returns a specified status code.\n//\n//\tassert.HTTPStatusCode(t, myHandler, \"GET\", \"/notImplemented\", nil, 501)\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc HTTPStatusCode(t TestingT, handler http.HandlerFunc, method, url string, values url.Values, statuscode int, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tcode, err := httpCode(handler, method, url, values)\n\tif err != nil {\n\t\tFail(t, fmt.Sprintf(\"Failed to build test request, got error: %s\", err), msgAndArgs...)\n\t}\n\n\tsuccessful := code == statuscode\n\tif !successful {\n\t\tFail(t, fmt.Sprintf(\"Expected HTTP status code %d for %q but received %d\", statuscode, url+\"?\"+values.Encode(), code), msgAndArgs...)\n\t}\n\n\treturn successful\n}\n\n// HTTPBody is a helper that returns HTTP body of the response. It returns\n// empty string if building a new request fails.\nfunc HTTPBody(handler http.HandlerFunc, method, url string, values url.Values) string {\n\tw := httptest.NewRecorder()\n\tif len(values) > 0 {\n\t\turl += \"?\" + values.Encode()\n\t}\n\treq, err := http.NewRequest(method, url, http.NoBody)\n\tif err != nil {\n\t\treturn \"\"\n\t}\n\thandler(w, req)\n\treturn w.Body.String()\n}\n\n// HTTPBodyContains asserts that a specified handler returns a\n// body that contains a string.\n//\n//\tassert.HTTPBodyContains(t, myHandler, \"GET\", \"www.google.com\", nil, \"I'm Feeling Lucky\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc HTTPBodyContains(t TestingT, handler http.HandlerFunc, method, url string, values url.Values, str interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tbody := HTTPBody(handler, method, url, values)\n\n\tcontains := strings.Contains(body, fmt.Sprint(str))\n\tif !contains {\n\t\tFail(t, fmt.Sprintf(\"Expected response body for %q to contain %q but found %q\", url+\"?\"+values.Encode(), str, body), msgAndArgs...)\n\t}\n\n\treturn contains\n}\n\n// HTTPBodyNotContains asserts that a specified handler returns a\n// body that does not contain a string.\n//\n//\tassert.HTTPBodyNotContains(t, myHandler, \"GET\", \"www.google.com\", nil, \"I'm Feeling Lucky\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc HTTPBodyNotContains(t TestingT, handler http.HandlerFunc, method, url string, values url.Values, str interface{}, msgAndArgs ...interface{}) bool {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tbody := HTTPBody(handler, method, url, values)\n\n\tcontains := strings.Contains(body, fmt.Sprint(str))\n\tif contains {\n\t\tFail(t, fmt.Sprintf(\"Expected response body for %q to NOT contain %q but found %q\", url+\"?\"+values.Encode(), str, body), msgAndArgs...)\n\t}\n\n\treturn !contains\n}\n"
  },
  {
    "path": "vendor/github.com/stretchr/testify/assert/yaml/yaml_custom.go",
    "content": "//go:build testify_yaml_custom && !testify_yaml_fail && !testify_yaml_default\n\n// Package yaml is an implementation of YAML functions that calls a pluggable implementation.\n//\n// This implementation is selected with the testify_yaml_custom build tag.\n//\n//\tgo test -tags testify_yaml_custom\n//\n// This implementation can be used at build time to replace the default implementation\n// to avoid linking with [gopkg.in/yaml.v3].\n//\n// In your test package:\n//\n//\t\timport assertYaml \"github.com/stretchr/testify/assert/yaml\"\n//\n//\t\tfunc init() {\n//\t\t\tassertYaml.Unmarshal = func (in []byte, out interface{}) error {\n//\t\t\t\t// ...\n//\t     \t\t\treturn nil\n//\t\t\t}\n//\t\t}\npackage yaml\n\nvar Unmarshal func(in []byte, out interface{}) error\n"
  },
  {
    "path": "vendor/github.com/stretchr/testify/assert/yaml/yaml_default.go",
    "content": "//go:build !testify_yaml_fail && !testify_yaml_custom\n\n// Package yaml is just an indirection to handle YAML deserialization.\n//\n// This package is just an indirection that allows the builder to override the\n// indirection with an alternative implementation of this package that uses\n// another implementation of YAML deserialization. This allows to not either not\n// use YAML deserialization at all, or to use another implementation than\n// [gopkg.in/yaml.v3] (for example for license compatibility reasons, see [PR #1120]).\n//\n// Alternative implementations are selected using build tags:\n//\n//   - testify_yaml_fail: [Unmarshal] always fails with an error\n//   - testify_yaml_custom: [Unmarshal] is a variable. Caller must initialize it\n//     before calling any of [github.com/stretchr/testify/assert.YAMLEq] or\n//     [github.com/stretchr/testify/assert.YAMLEqf].\n//\n// Usage:\n//\n//\tgo test -tags testify_yaml_fail\n//\n// You can check with \"go list\" which implementation is linked:\n//\n//\tgo list -f '{{.Imports}}' github.com/stretchr/testify/assert/yaml\n//\tgo list -tags testify_yaml_fail -f '{{.Imports}}' github.com/stretchr/testify/assert/yaml\n//\tgo list -tags testify_yaml_custom -f '{{.Imports}}' github.com/stretchr/testify/assert/yaml\n//\n// [PR #1120]: https://github.com/stretchr/testify/pull/1120\npackage yaml\n\nimport goyaml \"gopkg.in/yaml.v3\"\n\n// Unmarshal is just a wrapper of [gopkg.in/yaml.v3.Unmarshal].\nfunc Unmarshal(in []byte, out interface{}) error {\n\treturn goyaml.Unmarshal(in, out)\n}\n"
  },
  {
    "path": "vendor/github.com/stretchr/testify/assert/yaml/yaml_fail.go",
    "content": "//go:build testify_yaml_fail && !testify_yaml_custom && !testify_yaml_default\n\n// Package yaml is an implementation of YAML functions that always fail.\n//\n// This implementation can be used at build time to replace the default implementation\n// to avoid linking with [gopkg.in/yaml.v3]:\n//\n//\tgo test -tags testify_yaml_fail\npackage yaml\n\nimport \"errors\"\n\nvar errNotImplemented = errors.New(\"YAML functions are not available (see https://pkg.go.dev/github.com/stretchr/testify/assert/yaml)\")\n\nfunc Unmarshal([]byte, interface{}) error {\n\treturn errNotImplemented\n}\n"
  },
  {
    "path": "vendor/github.com/stretchr/testify/require/doc.go",
    "content": "// Package require implements the same assertions as the `assert` package but\n// stops test execution when a test fails.\n//\n// # Example Usage\n//\n// The following is a complete example using require in a standard test function:\n//\n//\timport (\n//\t  \"testing\"\n//\t  \"github.com/stretchr/testify/require\"\n//\t)\n//\n//\tfunc TestSomething(t *testing.T) {\n//\n//\t  var a string = \"Hello\"\n//\t  var b string = \"Hello\"\n//\n//\t  require.Equal(t, a, b, \"The two words should be the same.\")\n//\n//\t}\n//\n// # Assertions\n//\n// The `require` package have same global functions as in the `assert` package,\n// but instead of returning a boolean result they call `t.FailNow()`.\n// A consequence of this is that it must be called from the goroutine running\n// the test function, not from other goroutines created during the test.\n//\n// Every assertion function also takes an optional string message as the final argument,\n// allowing custom error messages to be appended to the message the assertion method outputs.\npackage require\n"
  },
  {
    "path": "vendor/github.com/stretchr/testify/require/forward_requirements.go",
    "content": "package require\n\n// Assertions provides assertion methods around the\n// TestingT interface.\ntype Assertions struct {\n\tt TestingT\n}\n\n// New makes a new Assertions object for the specified TestingT.\nfunc New(t TestingT) *Assertions {\n\treturn &Assertions{\n\t\tt: t,\n\t}\n}\n\n//go:generate sh -c \"cd ../_codegen && go build && cd - && ../_codegen/_codegen -output-package=require -template=require_forward.go.tmpl -include-format-funcs\"\n"
  },
  {
    "path": "vendor/github.com/stretchr/testify/require/require.go",
    "content": "// Code generated with github.com/stretchr/testify/_codegen; DO NOT EDIT.\n\npackage require\n\nimport (\n\tassert \"github.com/stretchr/testify/assert\"\n\thttp \"net/http\"\n\turl \"net/url\"\n\ttime \"time\"\n)\n\n// Condition uses a Comparison to assert a complex condition.\nfunc Condition(t TestingT, comp assert.Comparison, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Condition(t, comp, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Conditionf uses a Comparison to assert a complex condition.\nfunc Conditionf(t TestingT, comp assert.Comparison, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Conditionf(t, comp, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Contains asserts that the specified string, list(array, slice...) or map contains the\n// specified substring or element.\n//\n//\trequire.Contains(t, \"Hello World\", \"World\")\n//\trequire.Contains(t, [\"Hello\", \"World\"], \"World\")\n//\trequire.Contains(t, {\"Hello\": \"World\"}, \"Hello\")\nfunc Contains(t TestingT, s interface{}, contains interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Contains(t, s, contains, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Containsf asserts that the specified string, list(array, slice...) or map contains the\n// specified substring or element.\n//\n//\trequire.Containsf(t, \"Hello World\", \"World\", \"error message %s\", \"formatted\")\n//\trequire.Containsf(t, [\"Hello\", \"World\"], \"World\", \"error message %s\", \"formatted\")\n//\trequire.Containsf(t, {\"Hello\": \"World\"}, \"Hello\", \"error message %s\", \"formatted\")\nfunc Containsf(t TestingT, s interface{}, contains interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Containsf(t, s, contains, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// DirExists checks whether a directory exists in the given path. It also fails\n// if the path is a file rather a directory or there is an error checking whether it exists.\nfunc DirExists(t TestingT, path string, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.DirExists(t, path, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// DirExistsf checks whether a directory exists in the given path. It also fails\n// if the path is a file rather a directory or there is an error checking whether it exists.\nfunc DirExistsf(t TestingT, path string, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.DirExistsf(t, path, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// ElementsMatch asserts that the specified listA(array, slice...) is equal to specified\n// listB(array, slice...) ignoring the order of the elements. If there are duplicate elements,\n// the number of appearances of each of them in both lists should match.\n//\n// require.ElementsMatch(t, [1, 3, 2, 3], [1, 3, 3, 2])\nfunc ElementsMatch(t TestingT, listA interface{}, listB interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.ElementsMatch(t, listA, listB, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// ElementsMatchf asserts that the specified listA(array, slice...) is equal to specified\n// listB(array, slice...) ignoring the order of the elements. If there are duplicate elements,\n// the number of appearances of each of them in both lists should match.\n//\n// require.ElementsMatchf(t, [1, 3, 2, 3], [1, 3, 3, 2], \"error message %s\", \"formatted\")\nfunc ElementsMatchf(t TestingT, listA interface{}, listB interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.ElementsMatchf(t, listA, listB, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Empty asserts that the given value is \"empty\".\n//\n// [Zero values] are \"empty\".\n//\n// Arrays are \"empty\" if every element is the zero value of the type (stricter than \"empty\").\n//\n// Slices, maps and channels with zero length are \"empty\".\n//\n// Pointer values are \"empty\" if the pointer is nil or if the pointed value is \"empty\".\n//\n//\trequire.Empty(t, obj)\n//\n// [Zero values]: https://go.dev/ref/spec#The_zero_value\nfunc Empty(t TestingT, object interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Empty(t, object, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Emptyf asserts that the given value is \"empty\".\n//\n// [Zero values] are \"empty\".\n//\n// Arrays are \"empty\" if every element is the zero value of the type (stricter than \"empty\").\n//\n// Slices, maps and channels with zero length are \"empty\".\n//\n// Pointer values are \"empty\" if the pointer is nil or if the pointed value is \"empty\".\n//\n//\trequire.Emptyf(t, obj, \"error message %s\", \"formatted\")\n//\n// [Zero values]: https://go.dev/ref/spec#The_zero_value\nfunc Emptyf(t TestingT, object interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Emptyf(t, object, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Equal asserts that two objects are equal.\n//\n//\trequire.Equal(t, 123, 123)\n//\n// Pointer variable equality is determined based on the equality of the\n// referenced values (as opposed to the memory addresses). Function equality\n// cannot be determined and will always fail.\nfunc Equal(t TestingT, expected interface{}, actual interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Equal(t, expected, actual, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// EqualError asserts that a function returned an error (i.e. not `nil`)\n// and that it is equal to the provided error.\n//\n//\tactualObj, err := SomeFunction()\n//\trequire.EqualError(t, err,  expectedErrorString)\nfunc EqualError(t TestingT, theError error, errString string, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.EqualError(t, theError, errString, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// EqualErrorf asserts that a function returned an error (i.e. not `nil`)\n// and that it is equal to the provided error.\n//\n//\tactualObj, err := SomeFunction()\n//\trequire.EqualErrorf(t, err,  expectedErrorString, \"error message %s\", \"formatted\")\nfunc EqualErrorf(t TestingT, theError error, errString string, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.EqualErrorf(t, theError, errString, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// EqualExportedValues asserts that the types of two objects are equal and their public\n// fields are also equal. This is useful for comparing structs that have private fields\n// that could potentially differ.\n//\n//\t type S struct {\n//\t\tExported     \tint\n//\t\tnotExported   \tint\n//\t }\n//\t require.EqualExportedValues(t, S{1, 2}, S{1, 3}) => true\n//\t require.EqualExportedValues(t, S{1, 2}, S{2, 3}) => false\nfunc EqualExportedValues(t TestingT, expected interface{}, actual interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.EqualExportedValues(t, expected, actual, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// EqualExportedValuesf asserts that the types of two objects are equal and their public\n// fields are also equal. This is useful for comparing structs that have private fields\n// that could potentially differ.\n//\n//\t type S struct {\n//\t\tExported     \tint\n//\t\tnotExported   \tint\n//\t }\n//\t require.EqualExportedValuesf(t, S{1, 2}, S{1, 3}, \"error message %s\", \"formatted\") => true\n//\t require.EqualExportedValuesf(t, S{1, 2}, S{2, 3}, \"error message %s\", \"formatted\") => false\nfunc EqualExportedValuesf(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.EqualExportedValuesf(t, expected, actual, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// EqualValues asserts that two objects are equal or convertible to the larger\n// type and equal.\n//\n//\trequire.EqualValues(t, uint32(123), int32(123))\nfunc EqualValues(t TestingT, expected interface{}, actual interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.EqualValues(t, expected, actual, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// EqualValuesf asserts that two objects are equal or convertible to the larger\n// type and equal.\n//\n//\trequire.EqualValuesf(t, uint32(123), int32(123), \"error message %s\", \"formatted\")\nfunc EqualValuesf(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.EqualValuesf(t, expected, actual, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Equalf asserts that two objects are equal.\n//\n//\trequire.Equalf(t, 123, 123, \"error message %s\", \"formatted\")\n//\n// Pointer variable equality is determined based on the equality of the\n// referenced values (as opposed to the memory addresses). Function equality\n// cannot be determined and will always fail.\nfunc Equalf(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Equalf(t, expected, actual, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Error asserts that a function returned an error (i.e. not `nil`).\n//\n//\tactualObj, err := SomeFunction()\n//\trequire.Error(t, err)\nfunc Error(t TestingT, err error, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Error(t, err, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// ErrorAs asserts that at least one of the errors in err's chain matches target, and if so, sets target to that error value.\n// This is a wrapper for errors.As.\nfunc ErrorAs(t TestingT, err error, target interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.ErrorAs(t, err, target, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// ErrorAsf asserts that at least one of the errors in err's chain matches target, and if so, sets target to that error value.\n// This is a wrapper for errors.As.\nfunc ErrorAsf(t TestingT, err error, target interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.ErrorAsf(t, err, target, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// ErrorContains asserts that a function returned an error (i.e. not `nil`)\n// and that the error contains the specified substring.\n//\n//\tactualObj, err := SomeFunction()\n//\trequire.ErrorContains(t, err,  expectedErrorSubString)\nfunc ErrorContains(t TestingT, theError error, contains string, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.ErrorContains(t, theError, contains, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// ErrorContainsf asserts that a function returned an error (i.e. not `nil`)\n// and that the error contains the specified substring.\n//\n//\tactualObj, err := SomeFunction()\n//\trequire.ErrorContainsf(t, err,  expectedErrorSubString, \"error message %s\", \"formatted\")\nfunc ErrorContainsf(t TestingT, theError error, contains string, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.ErrorContainsf(t, theError, contains, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// ErrorIs asserts that at least one of the errors in err's chain matches target.\n// This is a wrapper for errors.Is.\nfunc ErrorIs(t TestingT, err error, target error, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.ErrorIs(t, err, target, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// ErrorIsf asserts that at least one of the errors in err's chain matches target.\n// This is a wrapper for errors.Is.\nfunc ErrorIsf(t TestingT, err error, target error, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.ErrorIsf(t, err, target, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Errorf asserts that a function returned an error (i.e. not `nil`).\n//\n//\tactualObj, err := SomeFunction()\n//\trequire.Errorf(t, err, \"error message %s\", \"formatted\")\nfunc Errorf(t TestingT, err error, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Errorf(t, err, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Eventually asserts that given condition will be met in waitFor time,\n// periodically checking target function each tick.\n//\n//\trequire.Eventually(t, func() bool { return true; }, time.Second, 10*time.Millisecond)\nfunc Eventually(t TestingT, condition func() bool, waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Eventually(t, condition, waitFor, tick, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// EventuallyWithT asserts that given condition will be met in waitFor time,\n// periodically checking target function each tick. In contrast to Eventually,\n// it supplies a CollectT to the condition function, so that the condition\n// function can use the CollectT to call other assertions.\n// The condition is considered \"met\" if no errors are raised in a tick.\n// The supplied CollectT collects all errors from one tick (if there are any).\n// If the condition is not met before waitFor, the collected errors of\n// the last tick are copied to t.\n//\n//\texternalValue := false\n//\tgo func() {\n//\t\ttime.Sleep(8*time.Second)\n//\t\texternalValue = true\n//\t}()\n//\trequire.EventuallyWithT(t, func(c *require.CollectT) {\n//\t\t// add assertions as needed; any assertion failure will fail the current tick\n//\t\trequire.True(c, externalValue, \"expected 'externalValue' to be true\")\n//\t}, 10*time.Second, 1*time.Second, \"external state has not changed to 'true'; still false\")\nfunc EventuallyWithT(t TestingT, condition func(collect *assert.CollectT), waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.EventuallyWithT(t, condition, waitFor, tick, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// EventuallyWithTf asserts that given condition will be met in waitFor time,\n// periodically checking target function each tick. In contrast to Eventually,\n// it supplies a CollectT to the condition function, so that the condition\n// function can use the CollectT to call other assertions.\n// The condition is considered \"met\" if no errors are raised in a tick.\n// The supplied CollectT collects all errors from one tick (if there are any).\n// If the condition is not met before waitFor, the collected errors of\n// the last tick are copied to t.\n//\n//\texternalValue := false\n//\tgo func() {\n//\t\ttime.Sleep(8*time.Second)\n//\t\texternalValue = true\n//\t}()\n//\trequire.EventuallyWithTf(t, func(c *require.CollectT, \"error message %s\", \"formatted\") {\n//\t\t// add assertions as needed; any assertion failure will fail the current tick\n//\t\trequire.True(c, externalValue, \"expected 'externalValue' to be true\")\n//\t}, 10*time.Second, 1*time.Second, \"external state has not changed to 'true'; still false\")\nfunc EventuallyWithTf(t TestingT, condition func(collect *assert.CollectT), waitFor time.Duration, tick time.Duration, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.EventuallyWithTf(t, condition, waitFor, tick, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Eventuallyf asserts that given condition will be met in waitFor time,\n// periodically checking target function each tick.\n//\n//\trequire.Eventuallyf(t, func() bool { return true; }, time.Second, 10*time.Millisecond, \"error message %s\", \"formatted\")\nfunc Eventuallyf(t TestingT, condition func() bool, waitFor time.Duration, tick time.Duration, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Eventuallyf(t, condition, waitFor, tick, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Exactly asserts that two objects are equal in value and type.\n//\n//\trequire.Exactly(t, int32(123), int64(123))\nfunc Exactly(t TestingT, expected interface{}, actual interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Exactly(t, expected, actual, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Exactlyf asserts that two objects are equal in value and type.\n//\n//\trequire.Exactlyf(t, int32(123), int64(123), \"error message %s\", \"formatted\")\nfunc Exactlyf(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Exactlyf(t, expected, actual, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Fail reports a failure through\nfunc Fail(t TestingT, failureMessage string, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Fail(t, failureMessage, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// FailNow fails test\nfunc FailNow(t TestingT, failureMessage string, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.FailNow(t, failureMessage, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// FailNowf fails test\nfunc FailNowf(t TestingT, failureMessage string, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.FailNowf(t, failureMessage, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Failf reports a failure through\nfunc Failf(t TestingT, failureMessage string, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Failf(t, failureMessage, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// False asserts that the specified value is false.\n//\n//\trequire.False(t, myBool)\nfunc False(t TestingT, value bool, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.False(t, value, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Falsef asserts that the specified value is false.\n//\n//\trequire.Falsef(t, myBool, \"error message %s\", \"formatted\")\nfunc Falsef(t TestingT, value bool, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Falsef(t, value, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// FileExists checks whether a file exists in the given path. It also fails if\n// the path points to a directory or there is an error when trying to check the file.\nfunc FileExists(t TestingT, path string, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.FileExists(t, path, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// FileExistsf checks whether a file exists in the given path. It also fails if\n// the path points to a directory or there is an error when trying to check the file.\nfunc FileExistsf(t TestingT, path string, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.FileExistsf(t, path, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Greater asserts that the first element is greater than the second\n//\n//\trequire.Greater(t, 2, 1)\n//\trequire.Greater(t, float64(2), float64(1))\n//\trequire.Greater(t, \"b\", \"a\")\nfunc Greater(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Greater(t, e1, e2, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// GreaterOrEqual asserts that the first element is greater than or equal to the second\n//\n//\trequire.GreaterOrEqual(t, 2, 1)\n//\trequire.GreaterOrEqual(t, 2, 2)\n//\trequire.GreaterOrEqual(t, \"b\", \"a\")\n//\trequire.GreaterOrEqual(t, \"b\", \"b\")\nfunc GreaterOrEqual(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.GreaterOrEqual(t, e1, e2, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// GreaterOrEqualf asserts that the first element is greater than or equal to the second\n//\n//\trequire.GreaterOrEqualf(t, 2, 1, \"error message %s\", \"formatted\")\n//\trequire.GreaterOrEqualf(t, 2, 2, \"error message %s\", \"formatted\")\n//\trequire.GreaterOrEqualf(t, \"b\", \"a\", \"error message %s\", \"formatted\")\n//\trequire.GreaterOrEqualf(t, \"b\", \"b\", \"error message %s\", \"formatted\")\nfunc GreaterOrEqualf(t TestingT, e1 interface{}, e2 interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.GreaterOrEqualf(t, e1, e2, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Greaterf asserts that the first element is greater than the second\n//\n//\trequire.Greaterf(t, 2, 1, \"error message %s\", \"formatted\")\n//\trequire.Greaterf(t, float64(2), float64(1), \"error message %s\", \"formatted\")\n//\trequire.Greaterf(t, \"b\", \"a\", \"error message %s\", \"formatted\")\nfunc Greaterf(t TestingT, e1 interface{}, e2 interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Greaterf(t, e1, e2, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// HTTPBodyContains asserts that a specified handler returns a\n// body that contains a string.\n//\n//\trequire.HTTPBodyContains(t, myHandler, \"GET\", \"www.google.com\", nil, \"I'm Feeling Lucky\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc HTTPBodyContains(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.HTTPBodyContains(t, handler, method, url, values, str, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// HTTPBodyContainsf asserts that a specified handler returns a\n// body that contains a string.\n//\n//\trequire.HTTPBodyContainsf(t, myHandler, \"GET\", \"www.google.com\", nil, \"I'm Feeling Lucky\", \"error message %s\", \"formatted\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc HTTPBodyContainsf(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.HTTPBodyContainsf(t, handler, method, url, values, str, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// HTTPBodyNotContains asserts that a specified handler returns a\n// body that does not contain a string.\n//\n//\trequire.HTTPBodyNotContains(t, myHandler, \"GET\", \"www.google.com\", nil, \"I'm Feeling Lucky\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc HTTPBodyNotContains(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.HTTPBodyNotContains(t, handler, method, url, values, str, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// HTTPBodyNotContainsf asserts that a specified handler returns a\n// body that does not contain a string.\n//\n//\trequire.HTTPBodyNotContainsf(t, myHandler, \"GET\", \"www.google.com\", nil, \"I'm Feeling Lucky\", \"error message %s\", \"formatted\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc HTTPBodyNotContainsf(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.HTTPBodyNotContainsf(t, handler, method, url, values, str, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// HTTPError asserts that a specified handler returns an error status code.\n//\n//\trequire.HTTPError(t, myHandler, \"POST\", \"/a/b/c\", url.Values{\"a\": []string{\"b\", \"c\"}}\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc HTTPError(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.HTTPError(t, handler, method, url, values, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// HTTPErrorf asserts that a specified handler returns an error status code.\n//\n//\trequire.HTTPErrorf(t, myHandler, \"POST\", \"/a/b/c\", url.Values{\"a\": []string{\"b\", \"c\"}}\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc HTTPErrorf(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.HTTPErrorf(t, handler, method, url, values, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// HTTPRedirect asserts that a specified handler returns a redirect status code.\n//\n//\trequire.HTTPRedirect(t, myHandler, \"GET\", \"/a/b/c\", url.Values{\"a\": []string{\"b\", \"c\"}}\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc HTTPRedirect(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.HTTPRedirect(t, handler, method, url, values, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// HTTPRedirectf asserts that a specified handler returns a redirect status code.\n//\n//\trequire.HTTPRedirectf(t, myHandler, \"GET\", \"/a/b/c\", url.Values{\"a\": []string{\"b\", \"c\"}}\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc HTTPRedirectf(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.HTTPRedirectf(t, handler, method, url, values, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// HTTPStatusCode asserts that a specified handler returns a specified status code.\n//\n//\trequire.HTTPStatusCode(t, myHandler, \"GET\", \"/notImplemented\", nil, 501)\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc HTTPStatusCode(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, statuscode int, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.HTTPStatusCode(t, handler, method, url, values, statuscode, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// HTTPStatusCodef asserts that a specified handler returns a specified status code.\n//\n//\trequire.HTTPStatusCodef(t, myHandler, \"GET\", \"/notImplemented\", nil, 501, \"error message %s\", \"formatted\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc HTTPStatusCodef(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, statuscode int, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.HTTPStatusCodef(t, handler, method, url, values, statuscode, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// HTTPSuccess asserts that a specified handler returns a success status code.\n//\n//\trequire.HTTPSuccess(t, myHandler, \"POST\", \"http://www.google.com\", nil)\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc HTTPSuccess(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.HTTPSuccess(t, handler, method, url, values, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// HTTPSuccessf asserts that a specified handler returns a success status code.\n//\n//\trequire.HTTPSuccessf(t, myHandler, \"POST\", \"http://www.google.com\", nil, \"error message %s\", \"formatted\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc HTTPSuccessf(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.HTTPSuccessf(t, handler, method, url, values, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Implements asserts that an object is implemented by the specified interface.\n//\n//\trequire.Implements(t, (*MyInterface)(nil), new(MyObject))\nfunc Implements(t TestingT, interfaceObject interface{}, object interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Implements(t, interfaceObject, object, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Implementsf asserts that an object is implemented by the specified interface.\n//\n//\trequire.Implementsf(t, (*MyInterface)(nil), new(MyObject), \"error message %s\", \"formatted\")\nfunc Implementsf(t TestingT, interfaceObject interface{}, object interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Implementsf(t, interfaceObject, object, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// InDelta asserts that the two numerals are within delta of each other.\n//\n//\trequire.InDelta(t, math.Pi, 22/7.0, 0.01)\nfunc InDelta(t TestingT, expected interface{}, actual interface{}, delta float64, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.InDelta(t, expected, actual, delta, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// InDeltaMapValues is the same as InDelta, but it compares all values between two maps. Both maps must have exactly the same keys.\nfunc InDeltaMapValues(t TestingT, expected interface{}, actual interface{}, delta float64, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.InDeltaMapValues(t, expected, actual, delta, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// InDeltaMapValuesf is the same as InDelta, but it compares all values between two maps. Both maps must have exactly the same keys.\nfunc InDeltaMapValuesf(t TestingT, expected interface{}, actual interface{}, delta float64, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.InDeltaMapValuesf(t, expected, actual, delta, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// InDeltaSlice is the same as InDelta, except it compares two slices.\nfunc InDeltaSlice(t TestingT, expected interface{}, actual interface{}, delta float64, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.InDeltaSlice(t, expected, actual, delta, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// InDeltaSlicef is the same as InDelta, except it compares two slices.\nfunc InDeltaSlicef(t TestingT, expected interface{}, actual interface{}, delta float64, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.InDeltaSlicef(t, expected, actual, delta, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// InDeltaf asserts that the two numerals are within delta of each other.\n//\n//\trequire.InDeltaf(t, math.Pi, 22/7.0, 0.01, \"error message %s\", \"formatted\")\nfunc InDeltaf(t TestingT, expected interface{}, actual interface{}, delta float64, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.InDeltaf(t, expected, actual, delta, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// InEpsilon asserts that expected and actual have a relative error less than epsilon\nfunc InEpsilon(t TestingT, expected interface{}, actual interface{}, epsilon float64, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.InEpsilon(t, expected, actual, epsilon, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// InEpsilonSlice is the same as InEpsilon, except it compares each value from two slices.\nfunc InEpsilonSlice(t TestingT, expected interface{}, actual interface{}, epsilon float64, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.InEpsilonSlice(t, expected, actual, epsilon, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// InEpsilonSlicef is the same as InEpsilon, except it compares each value from two slices.\nfunc InEpsilonSlicef(t TestingT, expected interface{}, actual interface{}, epsilon float64, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.InEpsilonSlicef(t, expected, actual, epsilon, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// InEpsilonf asserts that expected and actual have a relative error less than epsilon\nfunc InEpsilonf(t TestingT, expected interface{}, actual interface{}, epsilon float64, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.InEpsilonf(t, expected, actual, epsilon, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// IsDecreasing asserts that the collection is decreasing\n//\n//\trequire.IsDecreasing(t, []int{2, 1, 0})\n//\trequire.IsDecreasing(t, []float{2, 1})\n//\trequire.IsDecreasing(t, []string{\"b\", \"a\"})\nfunc IsDecreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.IsDecreasing(t, object, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// IsDecreasingf asserts that the collection is decreasing\n//\n//\trequire.IsDecreasingf(t, []int{2, 1, 0}, \"error message %s\", \"formatted\")\n//\trequire.IsDecreasingf(t, []float{2, 1}, \"error message %s\", \"formatted\")\n//\trequire.IsDecreasingf(t, []string{\"b\", \"a\"}, \"error message %s\", \"formatted\")\nfunc IsDecreasingf(t TestingT, object interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.IsDecreasingf(t, object, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// IsIncreasing asserts that the collection is increasing\n//\n//\trequire.IsIncreasing(t, []int{1, 2, 3})\n//\trequire.IsIncreasing(t, []float{1, 2})\n//\trequire.IsIncreasing(t, []string{\"a\", \"b\"})\nfunc IsIncreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.IsIncreasing(t, object, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// IsIncreasingf asserts that the collection is increasing\n//\n//\trequire.IsIncreasingf(t, []int{1, 2, 3}, \"error message %s\", \"formatted\")\n//\trequire.IsIncreasingf(t, []float{1, 2}, \"error message %s\", \"formatted\")\n//\trequire.IsIncreasingf(t, []string{\"a\", \"b\"}, \"error message %s\", \"formatted\")\nfunc IsIncreasingf(t TestingT, object interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.IsIncreasingf(t, object, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// IsNonDecreasing asserts that the collection is not decreasing\n//\n//\trequire.IsNonDecreasing(t, []int{1, 1, 2})\n//\trequire.IsNonDecreasing(t, []float{1, 2})\n//\trequire.IsNonDecreasing(t, []string{\"a\", \"b\"})\nfunc IsNonDecreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.IsNonDecreasing(t, object, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// IsNonDecreasingf asserts that the collection is not decreasing\n//\n//\trequire.IsNonDecreasingf(t, []int{1, 1, 2}, \"error message %s\", \"formatted\")\n//\trequire.IsNonDecreasingf(t, []float{1, 2}, \"error message %s\", \"formatted\")\n//\trequire.IsNonDecreasingf(t, []string{\"a\", \"b\"}, \"error message %s\", \"formatted\")\nfunc IsNonDecreasingf(t TestingT, object interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.IsNonDecreasingf(t, object, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// IsNonIncreasing asserts that the collection is not increasing\n//\n//\trequire.IsNonIncreasing(t, []int{2, 1, 1})\n//\trequire.IsNonIncreasing(t, []float{2, 1})\n//\trequire.IsNonIncreasing(t, []string{\"b\", \"a\"})\nfunc IsNonIncreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.IsNonIncreasing(t, object, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// IsNonIncreasingf asserts that the collection is not increasing\n//\n//\trequire.IsNonIncreasingf(t, []int{2, 1, 1}, \"error message %s\", \"formatted\")\n//\trequire.IsNonIncreasingf(t, []float{2, 1}, \"error message %s\", \"formatted\")\n//\trequire.IsNonIncreasingf(t, []string{\"b\", \"a\"}, \"error message %s\", \"formatted\")\nfunc IsNonIncreasingf(t TestingT, object interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.IsNonIncreasingf(t, object, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// IsNotType asserts that the specified objects are not of the same type.\n//\n//\trequire.IsNotType(t, &NotMyStruct{}, &MyStruct{})\nfunc IsNotType(t TestingT, theType interface{}, object interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.IsNotType(t, theType, object, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// IsNotTypef asserts that the specified objects are not of the same type.\n//\n//\trequire.IsNotTypef(t, &NotMyStruct{}, &MyStruct{}, \"error message %s\", \"formatted\")\nfunc IsNotTypef(t TestingT, theType interface{}, object interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.IsNotTypef(t, theType, object, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// IsType asserts that the specified objects are of the same type.\n//\n//\trequire.IsType(t, &MyStruct{}, &MyStruct{})\nfunc IsType(t TestingT, expectedType interface{}, object interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.IsType(t, expectedType, object, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// IsTypef asserts that the specified objects are of the same type.\n//\n//\trequire.IsTypef(t, &MyStruct{}, &MyStruct{}, \"error message %s\", \"formatted\")\nfunc IsTypef(t TestingT, expectedType interface{}, object interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.IsTypef(t, expectedType, object, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// JSONEq asserts that two JSON strings are equivalent.\n//\n//\trequire.JSONEq(t, `{\"hello\": \"world\", \"foo\": \"bar\"}`, `{\"foo\": \"bar\", \"hello\": \"world\"}`)\nfunc JSONEq(t TestingT, expected string, actual string, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.JSONEq(t, expected, actual, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// JSONEqf asserts that two JSON strings are equivalent.\n//\n//\trequire.JSONEqf(t, `{\"hello\": \"world\", \"foo\": \"bar\"}`, `{\"foo\": \"bar\", \"hello\": \"world\"}`, \"error message %s\", \"formatted\")\nfunc JSONEqf(t TestingT, expected string, actual string, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.JSONEqf(t, expected, actual, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Len asserts that the specified object has specific length.\n// Len also fails if the object has a type that len() not accept.\n//\n//\trequire.Len(t, mySlice, 3)\nfunc Len(t TestingT, object interface{}, length int, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Len(t, object, length, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Lenf asserts that the specified object has specific length.\n// Lenf also fails if the object has a type that len() not accept.\n//\n//\trequire.Lenf(t, mySlice, 3, \"error message %s\", \"formatted\")\nfunc Lenf(t TestingT, object interface{}, length int, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Lenf(t, object, length, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Less asserts that the first element is less than the second\n//\n//\trequire.Less(t, 1, 2)\n//\trequire.Less(t, float64(1), float64(2))\n//\trequire.Less(t, \"a\", \"b\")\nfunc Less(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Less(t, e1, e2, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// LessOrEqual asserts that the first element is less than or equal to the second\n//\n//\trequire.LessOrEqual(t, 1, 2)\n//\trequire.LessOrEqual(t, 2, 2)\n//\trequire.LessOrEqual(t, \"a\", \"b\")\n//\trequire.LessOrEqual(t, \"b\", \"b\")\nfunc LessOrEqual(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.LessOrEqual(t, e1, e2, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// LessOrEqualf asserts that the first element is less than or equal to the second\n//\n//\trequire.LessOrEqualf(t, 1, 2, \"error message %s\", \"formatted\")\n//\trequire.LessOrEqualf(t, 2, 2, \"error message %s\", \"formatted\")\n//\trequire.LessOrEqualf(t, \"a\", \"b\", \"error message %s\", \"formatted\")\n//\trequire.LessOrEqualf(t, \"b\", \"b\", \"error message %s\", \"formatted\")\nfunc LessOrEqualf(t TestingT, e1 interface{}, e2 interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.LessOrEqualf(t, e1, e2, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Lessf asserts that the first element is less than the second\n//\n//\trequire.Lessf(t, 1, 2, \"error message %s\", \"formatted\")\n//\trequire.Lessf(t, float64(1), float64(2), \"error message %s\", \"formatted\")\n//\trequire.Lessf(t, \"a\", \"b\", \"error message %s\", \"formatted\")\nfunc Lessf(t TestingT, e1 interface{}, e2 interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Lessf(t, e1, e2, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Negative asserts that the specified element is negative\n//\n//\trequire.Negative(t, -1)\n//\trequire.Negative(t, -1.23)\nfunc Negative(t TestingT, e interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Negative(t, e, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Negativef asserts that the specified element is negative\n//\n//\trequire.Negativef(t, -1, \"error message %s\", \"formatted\")\n//\trequire.Negativef(t, -1.23, \"error message %s\", \"formatted\")\nfunc Negativef(t TestingT, e interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Negativef(t, e, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Never asserts that the given condition doesn't satisfy in waitFor time,\n// periodically checking the target function each tick.\n//\n//\trequire.Never(t, func() bool { return false; }, time.Second, 10*time.Millisecond)\nfunc Never(t TestingT, condition func() bool, waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Never(t, condition, waitFor, tick, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Neverf asserts that the given condition doesn't satisfy in waitFor time,\n// periodically checking the target function each tick.\n//\n//\trequire.Neverf(t, func() bool { return false; }, time.Second, 10*time.Millisecond, \"error message %s\", \"formatted\")\nfunc Neverf(t TestingT, condition func() bool, waitFor time.Duration, tick time.Duration, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Neverf(t, condition, waitFor, tick, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Nil asserts that the specified object is nil.\n//\n//\trequire.Nil(t, err)\nfunc Nil(t TestingT, object interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Nil(t, object, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Nilf asserts that the specified object is nil.\n//\n//\trequire.Nilf(t, err, \"error message %s\", \"formatted\")\nfunc Nilf(t TestingT, object interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Nilf(t, object, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NoDirExists checks whether a directory does not exist in the given path.\n// It fails if the path points to an existing _directory_ only.\nfunc NoDirExists(t TestingT, path string, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NoDirExists(t, path, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NoDirExistsf checks whether a directory does not exist in the given path.\n// It fails if the path points to an existing _directory_ only.\nfunc NoDirExistsf(t TestingT, path string, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NoDirExistsf(t, path, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NoError asserts that a function returned no error (i.e. `nil`).\n//\n//\t  actualObj, err := SomeFunction()\n//\t  if require.NoError(t, err) {\n//\t\t   require.Equal(t, expectedObj, actualObj)\n//\t  }\nfunc NoError(t TestingT, err error, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NoError(t, err, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NoErrorf asserts that a function returned no error (i.e. `nil`).\n//\n//\t  actualObj, err := SomeFunction()\n//\t  if require.NoErrorf(t, err, \"error message %s\", \"formatted\") {\n//\t\t   require.Equal(t, expectedObj, actualObj)\n//\t  }\nfunc NoErrorf(t TestingT, err error, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NoErrorf(t, err, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NoFileExists checks whether a file does not exist in a given path. It fails\n// if the path points to an existing _file_ only.\nfunc NoFileExists(t TestingT, path string, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NoFileExists(t, path, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NoFileExistsf checks whether a file does not exist in a given path. It fails\n// if the path points to an existing _file_ only.\nfunc NoFileExistsf(t TestingT, path string, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NoFileExistsf(t, path, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NotContains asserts that the specified string, list(array, slice...) or map does NOT contain the\n// specified substring or element.\n//\n//\trequire.NotContains(t, \"Hello World\", \"Earth\")\n//\trequire.NotContains(t, [\"Hello\", \"World\"], \"Earth\")\n//\trequire.NotContains(t, {\"Hello\": \"World\"}, \"Earth\")\nfunc NotContains(t TestingT, s interface{}, contains interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NotContains(t, s, contains, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NotContainsf asserts that the specified string, list(array, slice...) or map does NOT contain the\n// specified substring or element.\n//\n//\trequire.NotContainsf(t, \"Hello World\", \"Earth\", \"error message %s\", \"formatted\")\n//\trequire.NotContainsf(t, [\"Hello\", \"World\"], \"Earth\", \"error message %s\", \"formatted\")\n//\trequire.NotContainsf(t, {\"Hello\": \"World\"}, \"Earth\", \"error message %s\", \"formatted\")\nfunc NotContainsf(t TestingT, s interface{}, contains interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NotContainsf(t, s, contains, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NotElementsMatch asserts that the specified listA(array, slice...) is NOT equal to specified\n// listB(array, slice...) ignoring the order of the elements. If there are duplicate elements,\n// the number of appearances of each of them in both lists should not match.\n// This is an inverse of ElementsMatch.\n//\n// require.NotElementsMatch(t, [1, 1, 2, 3], [1, 1, 2, 3]) -> false\n//\n// require.NotElementsMatch(t, [1, 1, 2, 3], [1, 2, 3]) -> true\n//\n// require.NotElementsMatch(t, [1, 2, 3], [1, 2, 4]) -> true\nfunc NotElementsMatch(t TestingT, listA interface{}, listB interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NotElementsMatch(t, listA, listB, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NotElementsMatchf asserts that the specified listA(array, slice...) is NOT equal to specified\n// listB(array, slice...) ignoring the order of the elements. If there are duplicate elements,\n// the number of appearances of each of them in both lists should not match.\n// This is an inverse of ElementsMatch.\n//\n// require.NotElementsMatchf(t, [1, 1, 2, 3], [1, 1, 2, 3], \"error message %s\", \"formatted\") -> false\n//\n// require.NotElementsMatchf(t, [1, 1, 2, 3], [1, 2, 3], \"error message %s\", \"formatted\") -> true\n//\n// require.NotElementsMatchf(t, [1, 2, 3], [1, 2, 4], \"error message %s\", \"formatted\") -> true\nfunc NotElementsMatchf(t TestingT, listA interface{}, listB interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NotElementsMatchf(t, listA, listB, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NotEmpty asserts that the specified object is NOT [Empty].\n//\n//\tif require.NotEmpty(t, obj) {\n//\t  require.Equal(t, \"two\", obj[1])\n//\t}\nfunc NotEmpty(t TestingT, object interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NotEmpty(t, object, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NotEmptyf asserts that the specified object is NOT [Empty].\n//\n//\tif require.NotEmptyf(t, obj, \"error message %s\", \"formatted\") {\n//\t  require.Equal(t, \"two\", obj[1])\n//\t}\nfunc NotEmptyf(t TestingT, object interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NotEmptyf(t, object, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NotEqual asserts that the specified values are NOT equal.\n//\n//\trequire.NotEqual(t, obj1, obj2)\n//\n// Pointer variable equality is determined based on the equality of the\n// referenced values (as opposed to the memory addresses).\nfunc NotEqual(t TestingT, expected interface{}, actual interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NotEqual(t, expected, actual, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NotEqualValues asserts that two objects are not equal even when converted to the same type\n//\n//\trequire.NotEqualValues(t, obj1, obj2)\nfunc NotEqualValues(t TestingT, expected interface{}, actual interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NotEqualValues(t, expected, actual, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NotEqualValuesf asserts that two objects are not equal even when converted to the same type\n//\n//\trequire.NotEqualValuesf(t, obj1, obj2, \"error message %s\", \"formatted\")\nfunc NotEqualValuesf(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NotEqualValuesf(t, expected, actual, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NotEqualf asserts that the specified values are NOT equal.\n//\n//\trequire.NotEqualf(t, obj1, obj2, \"error message %s\", \"formatted\")\n//\n// Pointer variable equality is determined based on the equality of the\n// referenced values (as opposed to the memory addresses).\nfunc NotEqualf(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NotEqualf(t, expected, actual, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NotErrorAs asserts that none of the errors in err's chain matches target,\n// but if so, sets target to that error value.\nfunc NotErrorAs(t TestingT, err error, target interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NotErrorAs(t, err, target, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NotErrorAsf asserts that none of the errors in err's chain matches target,\n// but if so, sets target to that error value.\nfunc NotErrorAsf(t TestingT, err error, target interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NotErrorAsf(t, err, target, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NotErrorIs asserts that none of the errors in err's chain matches target.\n// This is a wrapper for errors.Is.\nfunc NotErrorIs(t TestingT, err error, target error, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NotErrorIs(t, err, target, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NotErrorIsf asserts that none of the errors in err's chain matches target.\n// This is a wrapper for errors.Is.\nfunc NotErrorIsf(t TestingT, err error, target error, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NotErrorIsf(t, err, target, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NotImplements asserts that an object does not implement the specified interface.\n//\n//\trequire.NotImplements(t, (*MyInterface)(nil), new(MyObject))\nfunc NotImplements(t TestingT, interfaceObject interface{}, object interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NotImplements(t, interfaceObject, object, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NotImplementsf asserts that an object does not implement the specified interface.\n//\n//\trequire.NotImplementsf(t, (*MyInterface)(nil), new(MyObject), \"error message %s\", \"formatted\")\nfunc NotImplementsf(t TestingT, interfaceObject interface{}, object interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NotImplementsf(t, interfaceObject, object, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NotNil asserts that the specified object is not nil.\n//\n//\trequire.NotNil(t, err)\nfunc NotNil(t TestingT, object interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NotNil(t, object, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NotNilf asserts that the specified object is not nil.\n//\n//\trequire.NotNilf(t, err, \"error message %s\", \"formatted\")\nfunc NotNilf(t TestingT, object interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NotNilf(t, object, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NotPanics asserts that the code inside the specified PanicTestFunc does NOT panic.\n//\n//\trequire.NotPanics(t, func(){ RemainCalm() })\nfunc NotPanics(t TestingT, f assert.PanicTestFunc, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NotPanics(t, f, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NotPanicsf asserts that the code inside the specified PanicTestFunc does NOT panic.\n//\n//\trequire.NotPanicsf(t, func(){ RemainCalm() }, \"error message %s\", \"formatted\")\nfunc NotPanicsf(t TestingT, f assert.PanicTestFunc, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NotPanicsf(t, f, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NotRegexp asserts that a specified regexp does not match a string.\n//\n//\trequire.NotRegexp(t, regexp.MustCompile(\"starts\"), \"it's starting\")\n//\trequire.NotRegexp(t, \"^start\", \"it's not starting\")\nfunc NotRegexp(t TestingT, rx interface{}, str interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NotRegexp(t, rx, str, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NotRegexpf asserts that a specified regexp does not match a string.\n//\n//\trequire.NotRegexpf(t, regexp.MustCompile(\"starts\"), \"it's starting\", \"error message %s\", \"formatted\")\n//\trequire.NotRegexpf(t, \"^start\", \"it's not starting\", \"error message %s\", \"formatted\")\nfunc NotRegexpf(t TestingT, rx interface{}, str interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NotRegexpf(t, rx, str, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NotSame asserts that two pointers do not reference the same object.\n//\n//\trequire.NotSame(t, ptr1, ptr2)\n//\n// Both arguments must be pointer variables. Pointer variable sameness is\n// determined based on the equality of both type and value.\nfunc NotSame(t TestingT, expected interface{}, actual interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NotSame(t, expected, actual, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NotSamef asserts that two pointers do not reference the same object.\n//\n//\trequire.NotSamef(t, ptr1, ptr2, \"error message %s\", \"formatted\")\n//\n// Both arguments must be pointer variables. Pointer variable sameness is\n// determined based on the equality of both type and value.\nfunc NotSamef(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NotSamef(t, expected, actual, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NotSubset asserts that the list (array, slice, or map) does NOT contain all\n// elements given in the subset (array, slice, or map).\n// Map elements are key-value pairs unless compared with an array or slice where\n// only the map key is evaluated.\n//\n//\trequire.NotSubset(t, [1, 3, 4], [1, 2])\n//\trequire.NotSubset(t, {\"x\": 1, \"y\": 2}, {\"z\": 3})\n//\trequire.NotSubset(t, [1, 3, 4], {1: \"one\", 2: \"two\"})\n//\trequire.NotSubset(t, {\"x\": 1, \"y\": 2}, [\"z\"])\nfunc NotSubset(t TestingT, list interface{}, subset interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NotSubset(t, list, subset, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NotSubsetf asserts that the list (array, slice, or map) does NOT contain all\n// elements given in the subset (array, slice, or map).\n// Map elements are key-value pairs unless compared with an array or slice where\n// only the map key is evaluated.\n//\n//\trequire.NotSubsetf(t, [1, 3, 4], [1, 2], \"error message %s\", \"formatted\")\n//\trequire.NotSubsetf(t, {\"x\": 1, \"y\": 2}, {\"z\": 3}, \"error message %s\", \"formatted\")\n//\trequire.NotSubsetf(t, [1, 3, 4], {1: \"one\", 2: \"two\"}, \"error message %s\", \"formatted\")\n//\trequire.NotSubsetf(t, {\"x\": 1, \"y\": 2}, [\"z\"], \"error message %s\", \"formatted\")\nfunc NotSubsetf(t TestingT, list interface{}, subset interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NotSubsetf(t, list, subset, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NotZero asserts that i is not the zero value for its type.\nfunc NotZero(t TestingT, i interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NotZero(t, i, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// NotZerof asserts that i is not the zero value for its type.\nfunc NotZerof(t TestingT, i interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.NotZerof(t, i, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Panics asserts that the code inside the specified PanicTestFunc panics.\n//\n//\trequire.Panics(t, func(){ GoCrazy() })\nfunc Panics(t TestingT, f assert.PanicTestFunc, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Panics(t, f, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// PanicsWithError asserts that the code inside the specified PanicTestFunc\n// panics, and that the recovered panic value is an error that satisfies the\n// EqualError comparison.\n//\n//\trequire.PanicsWithError(t, \"crazy error\", func(){ GoCrazy() })\nfunc PanicsWithError(t TestingT, errString string, f assert.PanicTestFunc, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.PanicsWithError(t, errString, f, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// PanicsWithErrorf asserts that the code inside the specified PanicTestFunc\n// panics, and that the recovered panic value is an error that satisfies the\n// EqualError comparison.\n//\n//\trequire.PanicsWithErrorf(t, \"crazy error\", func(){ GoCrazy() }, \"error message %s\", \"formatted\")\nfunc PanicsWithErrorf(t TestingT, errString string, f assert.PanicTestFunc, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.PanicsWithErrorf(t, errString, f, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// PanicsWithValue asserts that the code inside the specified PanicTestFunc panics, and that\n// the recovered panic value equals the expected panic value.\n//\n//\trequire.PanicsWithValue(t, \"crazy error\", func(){ GoCrazy() })\nfunc PanicsWithValue(t TestingT, expected interface{}, f assert.PanicTestFunc, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.PanicsWithValue(t, expected, f, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// PanicsWithValuef asserts that the code inside the specified PanicTestFunc panics, and that\n// the recovered panic value equals the expected panic value.\n//\n//\trequire.PanicsWithValuef(t, \"crazy error\", func(){ GoCrazy() }, \"error message %s\", \"formatted\")\nfunc PanicsWithValuef(t TestingT, expected interface{}, f assert.PanicTestFunc, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.PanicsWithValuef(t, expected, f, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Panicsf asserts that the code inside the specified PanicTestFunc panics.\n//\n//\trequire.Panicsf(t, func(){ GoCrazy() }, \"error message %s\", \"formatted\")\nfunc Panicsf(t TestingT, f assert.PanicTestFunc, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Panicsf(t, f, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Positive asserts that the specified element is positive\n//\n//\trequire.Positive(t, 1)\n//\trequire.Positive(t, 1.23)\nfunc Positive(t TestingT, e interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Positive(t, e, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Positivef asserts that the specified element is positive\n//\n//\trequire.Positivef(t, 1, \"error message %s\", \"formatted\")\n//\trequire.Positivef(t, 1.23, \"error message %s\", \"formatted\")\nfunc Positivef(t TestingT, e interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Positivef(t, e, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Regexp asserts that a specified regexp matches a string.\n//\n//\trequire.Regexp(t, regexp.MustCompile(\"start\"), \"it's starting\")\n//\trequire.Regexp(t, \"start...$\", \"it's not starting\")\nfunc Regexp(t TestingT, rx interface{}, str interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Regexp(t, rx, str, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Regexpf asserts that a specified regexp matches a string.\n//\n//\trequire.Regexpf(t, regexp.MustCompile(\"start\"), \"it's starting\", \"error message %s\", \"formatted\")\n//\trequire.Regexpf(t, \"start...$\", \"it's not starting\", \"error message %s\", \"formatted\")\nfunc Regexpf(t TestingT, rx interface{}, str interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Regexpf(t, rx, str, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Same asserts that two pointers reference the same object.\n//\n//\trequire.Same(t, ptr1, ptr2)\n//\n// Both arguments must be pointer variables. Pointer variable sameness is\n// determined based on the equality of both type and value.\nfunc Same(t TestingT, expected interface{}, actual interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Same(t, expected, actual, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Samef asserts that two pointers reference the same object.\n//\n//\trequire.Samef(t, ptr1, ptr2, \"error message %s\", \"formatted\")\n//\n// Both arguments must be pointer variables. Pointer variable sameness is\n// determined based on the equality of both type and value.\nfunc Samef(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Samef(t, expected, actual, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Subset asserts that the list (array, slice, or map) contains all elements\n// given in the subset (array, slice, or map).\n// Map elements are key-value pairs unless compared with an array or slice where\n// only the map key is evaluated.\n//\n//\trequire.Subset(t, [1, 2, 3], [1, 2])\n//\trequire.Subset(t, {\"x\": 1, \"y\": 2}, {\"x\": 1})\n//\trequire.Subset(t, [1, 2, 3], {1: \"one\", 2: \"two\"})\n//\trequire.Subset(t, {\"x\": 1, \"y\": 2}, [\"x\"])\nfunc Subset(t TestingT, list interface{}, subset interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Subset(t, list, subset, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Subsetf asserts that the list (array, slice, or map) contains all elements\n// given in the subset (array, slice, or map).\n// Map elements are key-value pairs unless compared with an array or slice where\n// only the map key is evaluated.\n//\n//\trequire.Subsetf(t, [1, 2, 3], [1, 2], \"error message %s\", \"formatted\")\n//\trequire.Subsetf(t, {\"x\": 1, \"y\": 2}, {\"x\": 1}, \"error message %s\", \"formatted\")\n//\trequire.Subsetf(t, [1, 2, 3], {1: \"one\", 2: \"two\"}, \"error message %s\", \"formatted\")\n//\trequire.Subsetf(t, {\"x\": 1, \"y\": 2}, [\"x\"], \"error message %s\", \"formatted\")\nfunc Subsetf(t TestingT, list interface{}, subset interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Subsetf(t, list, subset, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// True asserts that the specified value is true.\n//\n//\trequire.True(t, myBool)\nfunc True(t TestingT, value bool, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.True(t, value, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Truef asserts that the specified value is true.\n//\n//\trequire.Truef(t, myBool, \"error message %s\", \"formatted\")\nfunc Truef(t TestingT, value bool, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Truef(t, value, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// WithinDuration asserts that the two times are within duration delta of each other.\n//\n//\trequire.WithinDuration(t, time.Now(), time.Now(), 10*time.Second)\nfunc WithinDuration(t TestingT, expected time.Time, actual time.Time, delta time.Duration, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.WithinDuration(t, expected, actual, delta, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// WithinDurationf asserts that the two times are within duration delta of each other.\n//\n//\trequire.WithinDurationf(t, time.Now(), time.Now(), 10*time.Second, \"error message %s\", \"formatted\")\nfunc WithinDurationf(t TestingT, expected time.Time, actual time.Time, delta time.Duration, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.WithinDurationf(t, expected, actual, delta, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// WithinRange asserts that a time is within a time range (inclusive).\n//\n//\trequire.WithinRange(t, time.Now(), time.Now().Add(-time.Second), time.Now().Add(time.Second))\nfunc WithinRange(t TestingT, actual time.Time, start time.Time, end time.Time, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.WithinRange(t, actual, start, end, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// WithinRangef asserts that a time is within a time range (inclusive).\n//\n//\trequire.WithinRangef(t, time.Now(), time.Now().Add(-time.Second), time.Now().Add(time.Second), \"error message %s\", \"formatted\")\nfunc WithinRangef(t TestingT, actual time.Time, start time.Time, end time.Time, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.WithinRangef(t, actual, start, end, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// YAMLEq asserts that two YAML strings are equivalent.\nfunc YAMLEq(t TestingT, expected string, actual string, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.YAMLEq(t, expected, actual, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// YAMLEqf asserts that two YAML strings are equivalent.\nfunc YAMLEqf(t TestingT, expected string, actual string, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.YAMLEqf(t, expected, actual, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Zero asserts that i is the zero value for its type.\nfunc Zero(t TestingT, i interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Zero(t, i, msgAndArgs...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n\n// Zerof asserts that i is the zero value for its type.\nfunc Zerof(t TestingT, i interface{}, msg string, args ...interface{}) {\n\tif h, ok := t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tif assert.Zerof(t, i, msg, args...) {\n\t\treturn\n\t}\n\tt.FailNow()\n}\n"
  },
  {
    "path": "vendor/github.com/stretchr/testify/require/require.go.tmpl",
    "content": "{{ replace .Comment \"assert.\" \"require.\"}}\nfunc {{.DocInfo.Name}}(t TestingT, {{.Params}}) {\n\tif h, ok := t.(tHelper); ok { h.Helper() }\n\tif assert.{{.DocInfo.Name}}(t, {{.ForwardedParams}}) { return }\n\tt.FailNow()\n}\n"
  },
  {
    "path": "vendor/github.com/stretchr/testify/require/require_forward.go",
    "content": "// Code generated with github.com/stretchr/testify/_codegen; DO NOT EDIT.\n\npackage require\n\nimport (\n\tassert \"github.com/stretchr/testify/assert\"\n\thttp \"net/http\"\n\turl \"net/url\"\n\ttime \"time\"\n)\n\n// Condition uses a Comparison to assert a complex condition.\nfunc (a *Assertions) Condition(comp assert.Comparison, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tCondition(a.t, comp, msgAndArgs...)\n}\n\n// Conditionf uses a Comparison to assert a complex condition.\nfunc (a *Assertions) Conditionf(comp assert.Comparison, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tConditionf(a.t, comp, msg, args...)\n}\n\n// Contains asserts that the specified string, list(array, slice...) or map contains the\n// specified substring or element.\n//\n//\ta.Contains(\"Hello World\", \"World\")\n//\ta.Contains([\"Hello\", \"World\"], \"World\")\n//\ta.Contains({\"Hello\": \"World\"}, \"Hello\")\nfunc (a *Assertions) Contains(s interface{}, contains interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tContains(a.t, s, contains, msgAndArgs...)\n}\n\n// Containsf asserts that the specified string, list(array, slice...) or map contains the\n// specified substring or element.\n//\n//\ta.Containsf(\"Hello World\", \"World\", \"error message %s\", \"formatted\")\n//\ta.Containsf([\"Hello\", \"World\"], \"World\", \"error message %s\", \"formatted\")\n//\ta.Containsf({\"Hello\": \"World\"}, \"Hello\", \"error message %s\", \"formatted\")\nfunc (a *Assertions) Containsf(s interface{}, contains interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tContainsf(a.t, s, contains, msg, args...)\n}\n\n// DirExists checks whether a directory exists in the given path. It also fails\n// if the path is a file rather a directory or there is an error checking whether it exists.\nfunc (a *Assertions) DirExists(path string, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tDirExists(a.t, path, msgAndArgs...)\n}\n\n// DirExistsf checks whether a directory exists in the given path. It also fails\n// if the path is a file rather a directory or there is an error checking whether it exists.\nfunc (a *Assertions) DirExistsf(path string, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tDirExistsf(a.t, path, msg, args...)\n}\n\n// ElementsMatch asserts that the specified listA(array, slice...) is equal to specified\n// listB(array, slice...) ignoring the order of the elements. If there are duplicate elements,\n// the number of appearances of each of them in both lists should match.\n//\n// a.ElementsMatch([1, 3, 2, 3], [1, 3, 3, 2])\nfunc (a *Assertions) ElementsMatch(listA interface{}, listB interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tElementsMatch(a.t, listA, listB, msgAndArgs...)\n}\n\n// ElementsMatchf asserts that the specified listA(array, slice...) is equal to specified\n// listB(array, slice...) ignoring the order of the elements. If there are duplicate elements,\n// the number of appearances of each of them in both lists should match.\n//\n// a.ElementsMatchf([1, 3, 2, 3], [1, 3, 3, 2], \"error message %s\", \"formatted\")\nfunc (a *Assertions) ElementsMatchf(listA interface{}, listB interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tElementsMatchf(a.t, listA, listB, msg, args...)\n}\n\n// Empty asserts that the given value is \"empty\".\n//\n// [Zero values] are \"empty\".\n//\n// Arrays are \"empty\" if every element is the zero value of the type (stricter than \"empty\").\n//\n// Slices, maps and channels with zero length are \"empty\".\n//\n// Pointer values are \"empty\" if the pointer is nil or if the pointed value is \"empty\".\n//\n//\ta.Empty(obj)\n//\n// [Zero values]: https://go.dev/ref/spec#The_zero_value\nfunc (a *Assertions) Empty(object interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tEmpty(a.t, object, msgAndArgs...)\n}\n\n// Emptyf asserts that the given value is \"empty\".\n//\n// [Zero values] are \"empty\".\n//\n// Arrays are \"empty\" if every element is the zero value of the type (stricter than \"empty\").\n//\n// Slices, maps and channels with zero length are \"empty\".\n//\n// Pointer values are \"empty\" if the pointer is nil or if the pointed value is \"empty\".\n//\n//\ta.Emptyf(obj, \"error message %s\", \"formatted\")\n//\n// [Zero values]: https://go.dev/ref/spec#The_zero_value\nfunc (a *Assertions) Emptyf(object interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tEmptyf(a.t, object, msg, args...)\n}\n\n// Equal asserts that two objects are equal.\n//\n//\ta.Equal(123, 123)\n//\n// Pointer variable equality is determined based on the equality of the\n// referenced values (as opposed to the memory addresses). Function equality\n// cannot be determined and will always fail.\nfunc (a *Assertions) Equal(expected interface{}, actual interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tEqual(a.t, expected, actual, msgAndArgs...)\n}\n\n// EqualError asserts that a function returned an error (i.e. not `nil`)\n// and that it is equal to the provided error.\n//\n//\tactualObj, err := SomeFunction()\n//\ta.EqualError(err,  expectedErrorString)\nfunc (a *Assertions) EqualError(theError error, errString string, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tEqualError(a.t, theError, errString, msgAndArgs...)\n}\n\n// EqualErrorf asserts that a function returned an error (i.e. not `nil`)\n// and that it is equal to the provided error.\n//\n//\tactualObj, err := SomeFunction()\n//\ta.EqualErrorf(err,  expectedErrorString, \"error message %s\", \"formatted\")\nfunc (a *Assertions) EqualErrorf(theError error, errString string, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tEqualErrorf(a.t, theError, errString, msg, args...)\n}\n\n// EqualExportedValues asserts that the types of two objects are equal and their public\n// fields are also equal. This is useful for comparing structs that have private fields\n// that could potentially differ.\n//\n//\t type S struct {\n//\t\tExported     \tint\n//\t\tnotExported   \tint\n//\t }\n//\t a.EqualExportedValues(S{1, 2}, S{1, 3}) => true\n//\t a.EqualExportedValues(S{1, 2}, S{2, 3}) => false\nfunc (a *Assertions) EqualExportedValues(expected interface{}, actual interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tEqualExportedValues(a.t, expected, actual, msgAndArgs...)\n}\n\n// EqualExportedValuesf asserts that the types of two objects are equal and their public\n// fields are also equal. This is useful for comparing structs that have private fields\n// that could potentially differ.\n//\n//\t type S struct {\n//\t\tExported     \tint\n//\t\tnotExported   \tint\n//\t }\n//\t a.EqualExportedValuesf(S{1, 2}, S{1, 3}, \"error message %s\", \"formatted\") => true\n//\t a.EqualExportedValuesf(S{1, 2}, S{2, 3}, \"error message %s\", \"formatted\") => false\nfunc (a *Assertions) EqualExportedValuesf(expected interface{}, actual interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tEqualExportedValuesf(a.t, expected, actual, msg, args...)\n}\n\n// EqualValues asserts that two objects are equal or convertible to the larger\n// type and equal.\n//\n//\ta.EqualValues(uint32(123), int32(123))\nfunc (a *Assertions) EqualValues(expected interface{}, actual interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tEqualValues(a.t, expected, actual, msgAndArgs...)\n}\n\n// EqualValuesf asserts that two objects are equal or convertible to the larger\n// type and equal.\n//\n//\ta.EqualValuesf(uint32(123), int32(123), \"error message %s\", \"formatted\")\nfunc (a *Assertions) EqualValuesf(expected interface{}, actual interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tEqualValuesf(a.t, expected, actual, msg, args...)\n}\n\n// Equalf asserts that two objects are equal.\n//\n//\ta.Equalf(123, 123, \"error message %s\", \"formatted\")\n//\n// Pointer variable equality is determined based on the equality of the\n// referenced values (as opposed to the memory addresses). Function equality\n// cannot be determined and will always fail.\nfunc (a *Assertions) Equalf(expected interface{}, actual interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tEqualf(a.t, expected, actual, msg, args...)\n}\n\n// Error asserts that a function returned an error (i.e. not `nil`).\n//\n//\tactualObj, err := SomeFunction()\n//\ta.Error(err)\nfunc (a *Assertions) Error(err error, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tError(a.t, err, msgAndArgs...)\n}\n\n// ErrorAs asserts that at least one of the errors in err's chain matches target, and if so, sets target to that error value.\n// This is a wrapper for errors.As.\nfunc (a *Assertions) ErrorAs(err error, target interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tErrorAs(a.t, err, target, msgAndArgs...)\n}\n\n// ErrorAsf asserts that at least one of the errors in err's chain matches target, and if so, sets target to that error value.\n// This is a wrapper for errors.As.\nfunc (a *Assertions) ErrorAsf(err error, target interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tErrorAsf(a.t, err, target, msg, args...)\n}\n\n// ErrorContains asserts that a function returned an error (i.e. not `nil`)\n// and that the error contains the specified substring.\n//\n//\tactualObj, err := SomeFunction()\n//\ta.ErrorContains(err,  expectedErrorSubString)\nfunc (a *Assertions) ErrorContains(theError error, contains string, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tErrorContains(a.t, theError, contains, msgAndArgs...)\n}\n\n// ErrorContainsf asserts that a function returned an error (i.e. not `nil`)\n// and that the error contains the specified substring.\n//\n//\tactualObj, err := SomeFunction()\n//\ta.ErrorContainsf(err,  expectedErrorSubString, \"error message %s\", \"formatted\")\nfunc (a *Assertions) ErrorContainsf(theError error, contains string, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tErrorContainsf(a.t, theError, contains, msg, args...)\n}\n\n// ErrorIs asserts that at least one of the errors in err's chain matches target.\n// This is a wrapper for errors.Is.\nfunc (a *Assertions) ErrorIs(err error, target error, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tErrorIs(a.t, err, target, msgAndArgs...)\n}\n\n// ErrorIsf asserts that at least one of the errors in err's chain matches target.\n// This is a wrapper for errors.Is.\nfunc (a *Assertions) ErrorIsf(err error, target error, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tErrorIsf(a.t, err, target, msg, args...)\n}\n\n// Errorf asserts that a function returned an error (i.e. not `nil`).\n//\n//\tactualObj, err := SomeFunction()\n//\ta.Errorf(err, \"error message %s\", \"formatted\")\nfunc (a *Assertions) Errorf(err error, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tErrorf(a.t, err, msg, args...)\n}\n\n// Eventually asserts that given condition will be met in waitFor time,\n// periodically checking target function each tick.\n//\n//\ta.Eventually(func() bool { return true; }, time.Second, 10*time.Millisecond)\nfunc (a *Assertions) Eventually(condition func() bool, waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tEventually(a.t, condition, waitFor, tick, msgAndArgs...)\n}\n\n// EventuallyWithT asserts that given condition will be met in waitFor time,\n// periodically checking target function each tick. In contrast to Eventually,\n// it supplies a CollectT to the condition function, so that the condition\n// function can use the CollectT to call other assertions.\n// The condition is considered \"met\" if no errors are raised in a tick.\n// The supplied CollectT collects all errors from one tick (if there are any).\n// If the condition is not met before waitFor, the collected errors of\n// the last tick are copied to t.\n//\n//\texternalValue := false\n//\tgo func() {\n//\t\ttime.Sleep(8*time.Second)\n//\t\texternalValue = true\n//\t}()\n//\ta.EventuallyWithT(func(c *assert.CollectT) {\n//\t\t// add assertions as needed; any assertion failure will fail the current tick\n//\t\tassert.True(c, externalValue, \"expected 'externalValue' to be true\")\n//\t}, 10*time.Second, 1*time.Second, \"external state has not changed to 'true'; still false\")\nfunc (a *Assertions) EventuallyWithT(condition func(collect *assert.CollectT), waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tEventuallyWithT(a.t, condition, waitFor, tick, msgAndArgs...)\n}\n\n// EventuallyWithTf asserts that given condition will be met in waitFor time,\n// periodically checking target function each tick. In contrast to Eventually,\n// it supplies a CollectT to the condition function, so that the condition\n// function can use the CollectT to call other assertions.\n// The condition is considered \"met\" if no errors are raised in a tick.\n// The supplied CollectT collects all errors from one tick (if there are any).\n// If the condition is not met before waitFor, the collected errors of\n// the last tick are copied to t.\n//\n//\texternalValue := false\n//\tgo func() {\n//\t\ttime.Sleep(8*time.Second)\n//\t\texternalValue = true\n//\t}()\n//\ta.EventuallyWithTf(func(c *assert.CollectT, \"error message %s\", \"formatted\") {\n//\t\t// add assertions as needed; any assertion failure will fail the current tick\n//\t\tassert.True(c, externalValue, \"expected 'externalValue' to be true\")\n//\t}, 10*time.Second, 1*time.Second, \"external state has not changed to 'true'; still false\")\nfunc (a *Assertions) EventuallyWithTf(condition func(collect *assert.CollectT), waitFor time.Duration, tick time.Duration, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tEventuallyWithTf(a.t, condition, waitFor, tick, msg, args...)\n}\n\n// Eventuallyf asserts that given condition will be met in waitFor time,\n// periodically checking target function each tick.\n//\n//\ta.Eventuallyf(func() bool { return true; }, time.Second, 10*time.Millisecond, \"error message %s\", \"formatted\")\nfunc (a *Assertions) Eventuallyf(condition func() bool, waitFor time.Duration, tick time.Duration, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tEventuallyf(a.t, condition, waitFor, tick, msg, args...)\n}\n\n// Exactly asserts that two objects are equal in value and type.\n//\n//\ta.Exactly(int32(123), int64(123))\nfunc (a *Assertions) Exactly(expected interface{}, actual interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tExactly(a.t, expected, actual, msgAndArgs...)\n}\n\n// Exactlyf asserts that two objects are equal in value and type.\n//\n//\ta.Exactlyf(int32(123), int64(123), \"error message %s\", \"formatted\")\nfunc (a *Assertions) Exactlyf(expected interface{}, actual interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tExactlyf(a.t, expected, actual, msg, args...)\n}\n\n// Fail reports a failure through\nfunc (a *Assertions) Fail(failureMessage string, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tFail(a.t, failureMessage, msgAndArgs...)\n}\n\n// FailNow fails test\nfunc (a *Assertions) FailNow(failureMessage string, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tFailNow(a.t, failureMessage, msgAndArgs...)\n}\n\n// FailNowf fails test\nfunc (a *Assertions) FailNowf(failureMessage string, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tFailNowf(a.t, failureMessage, msg, args...)\n}\n\n// Failf reports a failure through\nfunc (a *Assertions) Failf(failureMessage string, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tFailf(a.t, failureMessage, msg, args...)\n}\n\n// False asserts that the specified value is false.\n//\n//\ta.False(myBool)\nfunc (a *Assertions) False(value bool, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tFalse(a.t, value, msgAndArgs...)\n}\n\n// Falsef asserts that the specified value is false.\n//\n//\ta.Falsef(myBool, \"error message %s\", \"formatted\")\nfunc (a *Assertions) Falsef(value bool, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tFalsef(a.t, value, msg, args...)\n}\n\n// FileExists checks whether a file exists in the given path. It also fails if\n// the path points to a directory or there is an error when trying to check the file.\nfunc (a *Assertions) FileExists(path string, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tFileExists(a.t, path, msgAndArgs...)\n}\n\n// FileExistsf checks whether a file exists in the given path. It also fails if\n// the path points to a directory or there is an error when trying to check the file.\nfunc (a *Assertions) FileExistsf(path string, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tFileExistsf(a.t, path, msg, args...)\n}\n\n// Greater asserts that the first element is greater than the second\n//\n//\ta.Greater(2, 1)\n//\ta.Greater(float64(2), float64(1))\n//\ta.Greater(\"b\", \"a\")\nfunc (a *Assertions) Greater(e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tGreater(a.t, e1, e2, msgAndArgs...)\n}\n\n// GreaterOrEqual asserts that the first element is greater than or equal to the second\n//\n//\ta.GreaterOrEqual(2, 1)\n//\ta.GreaterOrEqual(2, 2)\n//\ta.GreaterOrEqual(\"b\", \"a\")\n//\ta.GreaterOrEqual(\"b\", \"b\")\nfunc (a *Assertions) GreaterOrEqual(e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tGreaterOrEqual(a.t, e1, e2, msgAndArgs...)\n}\n\n// GreaterOrEqualf asserts that the first element is greater than or equal to the second\n//\n//\ta.GreaterOrEqualf(2, 1, \"error message %s\", \"formatted\")\n//\ta.GreaterOrEqualf(2, 2, \"error message %s\", \"formatted\")\n//\ta.GreaterOrEqualf(\"b\", \"a\", \"error message %s\", \"formatted\")\n//\ta.GreaterOrEqualf(\"b\", \"b\", \"error message %s\", \"formatted\")\nfunc (a *Assertions) GreaterOrEqualf(e1 interface{}, e2 interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tGreaterOrEqualf(a.t, e1, e2, msg, args...)\n}\n\n// Greaterf asserts that the first element is greater than the second\n//\n//\ta.Greaterf(2, 1, \"error message %s\", \"formatted\")\n//\ta.Greaterf(float64(2), float64(1), \"error message %s\", \"formatted\")\n//\ta.Greaterf(\"b\", \"a\", \"error message %s\", \"formatted\")\nfunc (a *Assertions) Greaterf(e1 interface{}, e2 interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tGreaterf(a.t, e1, e2, msg, args...)\n}\n\n// HTTPBodyContains asserts that a specified handler returns a\n// body that contains a string.\n//\n//\ta.HTTPBodyContains(myHandler, \"GET\", \"www.google.com\", nil, \"I'm Feeling Lucky\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) HTTPBodyContains(handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tHTTPBodyContains(a.t, handler, method, url, values, str, msgAndArgs...)\n}\n\n// HTTPBodyContainsf asserts that a specified handler returns a\n// body that contains a string.\n//\n//\ta.HTTPBodyContainsf(myHandler, \"GET\", \"www.google.com\", nil, \"I'm Feeling Lucky\", \"error message %s\", \"formatted\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) HTTPBodyContainsf(handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tHTTPBodyContainsf(a.t, handler, method, url, values, str, msg, args...)\n}\n\n// HTTPBodyNotContains asserts that a specified handler returns a\n// body that does not contain a string.\n//\n//\ta.HTTPBodyNotContains(myHandler, \"GET\", \"www.google.com\", nil, \"I'm Feeling Lucky\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) HTTPBodyNotContains(handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tHTTPBodyNotContains(a.t, handler, method, url, values, str, msgAndArgs...)\n}\n\n// HTTPBodyNotContainsf asserts that a specified handler returns a\n// body that does not contain a string.\n//\n//\ta.HTTPBodyNotContainsf(myHandler, \"GET\", \"www.google.com\", nil, \"I'm Feeling Lucky\", \"error message %s\", \"formatted\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) HTTPBodyNotContainsf(handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tHTTPBodyNotContainsf(a.t, handler, method, url, values, str, msg, args...)\n}\n\n// HTTPError asserts that a specified handler returns an error status code.\n//\n//\ta.HTTPError(myHandler, \"POST\", \"/a/b/c\", url.Values{\"a\": []string{\"b\", \"c\"}}\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) HTTPError(handler http.HandlerFunc, method string, url string, values url.Values, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tHTTPError(a.t, handler, method, url, values, msgAndArgs...)\n}\n\n// HTTPErrorf asserts that a specified handler returns an error status code.\n//\n//\ta.HTTPErrorf(myHandler, \"POST\", \"/a/b/c\", url.Values{\"a\": []string{\"b\", \"c\"}}\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) HTTPErrorf(handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tHTTPErrorf(a.t, handler, method, url, values, msg, args...)\n}\n\n// HTTPRedirect asserts that a specified handler returns a redirect status code.\n//\n//\ta.HTTPRedirect(myHandler, \"GET\", \"/a/b/c\", url.Values{\"a\": []string{\"b\", \"c\"}}\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) HTTPRedirect(handler http.HandlerFunc, method string, url string, values url.Values, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tHTTPRedirect(a.t, handler, method, url, values, msgAndArgs...)\n}\n\n// HTTPRedirectf asserts that a specified handler returns a redirect status code.\n//\n//\ta.HTTPRedirectf(myHandler, \"GET\", \"/a/b/c\", url.Values{\"a\": []string{\"b\", \"c\"}}\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) HTTPRedirectf(handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tHTTPRedirectf(a.t, handler, method, url, values, msg, args...)\n}\n\n// HTTPStatusCode asserts that a specified handler returns a specified status code.\n//\n//\ta.HTTPStatusCode(myHandler, \"GET\", \"/notImplemented\", nil, 501)\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) HTTPStatusCode(handler http.HandlerFunc, method string, url string, values url.Values, statuscode int, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tHTTPStatusCode(a.t, handler, method, url, values, statuscode, msgAndArgs...)\n}\n\n// HTTPStatusCodef asserts that a specified handler returns a specified status code.\n//\n//\ta.HTTPStatusCodef(myHandler, \"GET\", \"/notImplemented\", nil, 501, \"error message %s\", \"formatted\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) HTTPStatusCodef(handler http.HandlerFunc, method string, url string, values url.Values, statuscode int, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tHTTPStatusCodef(a.t, handler, method, url, values, statuscode, msg, args...)\n}\n\n// HTTPSuccess asserts that a specified handler returns a success status code.\n//\n//\ta.HTTPSuccess(myHandler, \"POST\", \"http://www.google.com\", nil)\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) HTTPSuccess(handler http.HandlerFunc, method string, url string, values url.Values, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tHTTPSuccess(a.t, handler, method, url, values, msgAndArgs...)\n}\n\n// HTTPSuccessf asserts that a specified handler returns a success status code.\n//\n//\ta.HTTPSuccessf(myHandler, \"POST\", \"http://www.google.com\", nil, \"error message %s\", \"formatted\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) HTTPSuccessf(handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tHTTPSuccessf(a.t, handler, method, url, values, msg, args...)\n}\n\n// Implements asserts that an object is implemented by the specified interface.\n//\n//\ta.Implements((*MyInterface)(nil), new(MyObject))\nfunc (a *Assertions) Implements(interfaceObject interface{}, object interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tImplements(a.t, interfaceObject, object, msgAndArgs...)\n}\n\n// Implementsf asserts that an object is implemented by the specified interface.\n//\n//\ta.Implementsf((*MyInterface)(nil), new(MyObject), \"error message %s\", \"formatted\")\nfunc (a *Assertions) Implementsf(interfaceObject interface{}, object interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tImplementsf(a.t, interfaceObject, object, msg, args...)\n}\n\n// InDelta asserts that the two numerals are within delta of each other.\n//\n//\ta.InDelta(math.Pi, 22/7.0, 0.01)\nfunc (a *Assertions) InDelta(expected interface{}, actual interface{}, delta float64, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tInDelta(a.t, expected, actual, delta, msgAndArgs...)\n}\n\n// InDeltaMapValues is the same as InDelta, but it compares all values between two maps. Both maps must have exactly the same keys.\nfunc (a *Assertions) InDeltaMapValues(expected interface{}, actual interface{}, delta float64, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tInDeltaMapValues(a.t, expected, actual, delta, msgAndArgs...)\n}\n\n// InDeltaMapValuesf is the same as InDelta, but it compares all values between two maps. Both maps must have exactly the same keys.\nfunc (a *Assertions) InDeltaMapValuesf(expected interface{}, actual interface{}, delta float64, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tInDeltaMapValuesf(a.t, expected, actual, delta, msg, args...)\n}\n\n// InDeltaSlice is the same as InDelta, except it compares two slices.\nfunc (a *Assertions) InDeltaSlice(expected interface{}, actual interface{}, delta float64, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tInDeltaSlice(a.t, expected, actual, delta, msgAndArgs...)\n}\n\n// InDeltaSlicef is the same as InDelta, except it compares two slices.\nfunc (a *Assertions) InDeltaSlicef(expected interface{}, actual interface{}, delta float64, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tInDeltaSlicef(a.t, expected, actual, delta, msg, args...)\n}\n\n// InDeltaf asserts that the two numerals are within delta of each other.\n//\n//\ta.InDeltaf(math.Pi, 22/7.0, 0.01, \"error message %s\", \"formatted\")\nfunc (a *Assertions) InDeltaf(expected interface{}, actual interface{}, delta float64, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tInDeltaf(a.t, expected, actual, delta, msg, args...)\n}\n\n// InEpsilon asserts that expected and actual have a relative error less than epsilon\nfunc (a *Assertions) InEpsilon(expected interface{}, actual interface{}, epsilon float64, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tInEpsilon(a.t, expected, actual, epsilon, msgAndArgs...)\n}\n\n// InEpsilonSlice is the same as InEpsilon, except it compares each value from two slices.\nfunc (a *Assertions) InEpsilonSlice(expected interface{}, actual interface{}, epsilon float64, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tInEpsilonSlice(a.t, expected, actual, epsilon, msgAndArgs...)\n}\n\n// InEpsilonSlicef is the same as InEpsilon, except it compares each value from two slices.\nfunc (a *Assertions) InEpsilonSlicef(expected interface{}, actual interface{}, epsilon float64, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tInEpsilonSlicef(a.t, expected, actual, epsilon, msg, args...)\n}\n\n// InEpsilonf asserts that expected and actual have a relative error less than epsilon\nfunc (a *Assertions) InEpsilonf(expected interface{}, actual interface{}, epsilon float64, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tInEpsilonf(a.t, expected, actual, epsilon, msg, args...)\n}\n\n// IsDecreasing asserts that the collection is decreasing\n//\n//\ta.IsDecreasing([]int{2, 1, 0})\n//\ta.IsDecreasing([]float{2, 1})\n//\ta.IsDecreasing([]string{\"b\", \"a\"})\nfunc (a *Assertions) IsDecreasing(object interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tIsDecreasing(a.t, object, msgAndArgs...)\n}\n\n// IsDecreasingf asserts that the collection is decreasing\n//\n//\ta.IsDecreasingf([]int{2, 1, 0}, \"error message %s\", \"formatted\")\n//\ta.IsDecreasingf([]float{2, 1}, \"error message %s\", \"formatted\")\n//\ta.IsDecreasingf([]string{\"b\", \"a\"}, \"error message %s\", \"formatted\")\nfunc (a *Assertions) IsDecreasingf(object interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tIsDecreasingf(a.t, object, msg, args...)\n}\n\n// IsIncreasing asserts that the collection is increasing\n//\n//\ta.IsIncreasing([]int{1, 2, 3})\n//\ta.IsIncreasing([]float{1, 2})\n//\ta.IsIncreasing([]string{\"a\", \"b\"})\nfunc (a *Assertions) IsIncreasing(object interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tIsIncreasing(a.t, object, msgAndArgs...)\n}\n\n// IsIncreasingf asserts that the collection is increasing\n//\n//\ta.IsIncreasingf([]int{1, 2, 3}, \"error message %s\", \"formatted\")\n//\ta.IsIncreasingf([]float{1, 2}, \"error message %s\", \"formatted\")\n//\ta.IsIncreasingf([]string{\"a\", \"b\"}, \"error message %s\", \"formatted\")\nfunc (a *Assertions) IsIncreasingf(object interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tIsIncreasingf(a.t, object, msg, args...)\n}\n\n// IsNonDecreasing asserts that the collection is not decreasing\n//\n//\ta.IsNonDecreasing([]int{1, 1, 2})\n//\ta.IsNonDecreasing([]float{1, 2})\n//\ta.IsNonDecreasing([]string{\"a\", \"b\"})\nfunc (a *Assertions) IsNonDecreasing(object interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tIsNonDecreasing(a.t, object, msgAndArgs...)\n}\n\n// IsNonDecreasingf asserts that the collection is not decreasing\n//\n//\ta.IsNonDecreasingf([]int{1, 1, 2}, \"error message %s\", \"formatted\")\n//\ta.IsNonDecreasingf([]float{1, 2}, \"error message %s\", \"formatted\")\n//\ta.IsNonDecreasingf([]string{\"a\", \"b\"}, \"error message %s\", \"formatted\")\nfunc (a *Assertions) IsNonDecreasingf(object interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tIsNonDecreasingf(a.t, object, msg, args...)\n}\n\n// IsNonIncreasing asserts that the collection is not increasing\n//\n//\ta.IsNonIncreasing([]int{2, 1, 1})\n//\ta.IsNonIncreasing([]float{2, 1})\n//\ta.IsNonIncreasing([]string{\"b\", \"a\"})\nfunc (a *Assertions) IsNonIncreasing(object interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tIsNonIncreasing(a.t, object, msgAndArgs...)\n}\n\n// IsNonIncreasingf asserts that the collection is not increasing\n//\n//\ta.IsNonIncreasingf([]int{2, 1, 1}, \"error message %s\", \"formatted\")\n//\ta.IsNonIncreasingf([]float{2, 1}, \"error message %s\", \"formatted\")\n//\ta.IsNonIncreasingf([]string{\"b\", \"a\"}, \"error message %s\", \"formatted\")\nfunc (a *Assertions) IsNonIncreasingf(object interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tIsNonIncreasingf(a.t, object, msg, args...)\n}\n\n// IsNotType asserts that the specified objects are not of the same type.\n//\n//\ta.IsNotType(&NotMyStruct{}, &MyStruct{})\nfunc (a *Assertions) IsNotType(theType interface{}, object interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tIsNotType(a.t, theType, object, msgAndArgs...)\n}\n\n// IsNotTypef asserts that the specified objects are not of the same type.\n//\n//\ta.IsNotTypef(&NotMyStruct{}, &MyStruct{}, \"error message %s\", \"formatted\")\nfunc (a *Assertions) IsNotTypef(theType interface{}, object interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tIsNotTypef(a.t, theType, object, msg, args...)\n}\n\n// IsType asserts that the specified objects are of the same type.\n//\n//\ta.IsType(&MyStruct{}, &MyStruct{})\nfunc (a *Assertions) IsType(expectedType interface{}, object interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tIsType(a.t, expectedType, object, msgAndArgs...)\n}\n\n// IsTypef asserts that the specified objects are of the same type.\n//\n//\ta.IsTypef(&MyStruct{}, &MyStruct{}, \"error message %s\", \"formatted\")\nfunc (a *Assertions) IsTypef(expectedType interface{}, object interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tIsTypef(a.t, expectedType, object, msg, args...)\n}\n\n// JSONEq asserts that two JSON strings are equivalent.\n//\n//\ta.JSONEq(`{\"hello\": \"world\", \"foo\": \"bar\"}`, `{\"foo\": \"bar\", \"hello\": \"world\"}`)\nfunc (a *Assertions) JSONEq(expected string, actual string, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tJSONEq(a.t, expected, actual, msgAndArgs...)\n}\n\n// JSONEqf asserts that two JSON strings are equivalent.\n//\n//\ta.JSONEqf(`{\"hello\": \"world\", \"foo\": \"bar\"}`, `{\"foo\": \"bar\", \"hello\": \"world\"}`, \"error message %s\", \"formatted\")\nfunc (a *Assertions) JSONEqf(expected string, actual string, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tJSONEqf(a.t, expected, actual, msg, args...)\n}\n\n// Len asserts that the specified object has specific length.\n// Len also fails if the object has a type that len() not accept.\n//\n//\ta.Len(mySlice, 3)\nfunc (a *Assertions) Len(object interface{}, length int, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tLen(a.t, object, length, msgAndArgs...)\n}\n\n// Lenf asserts that the specified object has specific length.\n// Lenf also fails if the object has a type that len() not accept.\n//\n//\ta.Lenf(mySlice, 3, \"error message %s\", \"formatted\")\nfunc (a *Assertions) Lenf(object interface{}, length int, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tLenf(a.t, object, length, msg, args...)\n}\n\n// Less asserts that the first element is less than the second\n//\n//\ta.Less(1, 2)\n//\ta.Less(float64(1), float64(2))\n//\ta.Less(\"a\", \"b\")\nfunc (a *Assertions) Less(e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tLess(a.t, e1, e2, msgAndArgs...)\n}\n\n// LessOrEqual asserts that the first element is less than or equal to the second\n//\n//\ta.LessOrEqual(1, 2)\n//\ta.LessOrEqual(2, 2)\n//\ta.LessOrEqual(\"a\", \"b\")\n//\ta.LessOrEqual(\"b\", \"b\")\nfunc (a *Assertions) LessOrEqual(e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tLessOrEqual(a.t, e1, e2, msgAndArgs...)\n}\n\n// LessOrEqualf asserts that the first element is less than or equal to the second\n//\n//\ta.LessOrEqualf(1, 2, \"error message %s\", \"formatted\")\n//\ta.LessOrEqualf(2, 2, \"error message %s\", \"formatted\")\n//\ta.LessOrEqualf(\"a\", \"b\", \"error message %s\", \"formatted\")\n//\ta.LessOrEqualf(\"b\", \"b\", \"error message %s\", \"formatted\")\nfunc (a *Assertions) LessOrEqualf(e1 interface{}, e2 interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tLessOrEqualf(a.t, e1, e2, msg, args...)\n}\n\n// Lessf asserts that the first element is less than the second\n//\n//\ta.Lessf(1, 2, \"error message %s\", \"formatted\")\n//\ta.Lessf(float64(1), float64(2), \"error message %s\", \"formatted\")\n//\ta.Lessf(\"a\", \"b\", \"error message %s\", \"formatted\")\nfunc (a *Assertions) Lessf(e1 interface{}, e2 interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tLessf(a.t, e1, e2, msg, args...)\n}\n\n// Negative asserts that the specified element is negative\n//\n//\ta.Negative(-1)\n//\ta.Negative(-1.23)\nfunc (a *Assertions) Negative(e interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNegative(a.t, e, msgAndArgs...)\n}\n\n// Negativef asserts that the specified element is negative\n//\n//\ta.Negativef(-1, \"error message %s\", \"formatted\")\n//\ta.Negativef(-1.23, \"error message %s\", \"formatted\")\nfunc (a *Assertions) Negativef(e interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNegativef(a.t, e, msg, args...)\n}\n\n// Never asserts that the given condition doesn't satisfy in waitFor time,\n// periodically checking the target function each tick.\n//\n//\ta.Never(func() bool { return false; }, time.Second, 10*time.Millisecond)\nfunc (a *Assertions) Never(condition func() bool, waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNever(a.t, condition, waitFor, tick, msgAndArgs...)\n}\n\n// Neverf asserts that the given condition doesn't satisfy in waitFor time,\n// periodically checking the target function each tick.\n//\n//\ta.Neverf(func() bool { return false; }, time.Second, 10*time.Millisecond, \"error message %s\", \"formatted\")\nfunc (a *Assertions) Neverf(condition func() bool, waitFor time.Duration, tick time.Duration, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNeverf(a.t, condition, waitFor, tick, msg, args...)\n}\n\n// Nil asserts that the specified object is nil.\n//\n//\ta.Nil(err)\nfunc (a *Assertions) Nil(object interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNil(a.t, object, msgAndArgs...)\n}\n\n// Nilf asserts that the specified object is nil.\n//\n//\ta.Nilf(err, \"error message %s\", \"formatted\")\nfunc (a *Assertions) Nilf(object interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNilf(a.t, object, msg, args...)\n}\n\n// NoDirExists checks whether a directory does not exist in the given path.\n// It fails if the path points to an existing _directory_ only.\nfunc (a *Assertions) NoDirExists(path string, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNoDirExists(a.t, path, msgAndArgs...)\n}\n\n// NoDirExistsf checks whether a directory does not exist in the given path.\n// It fails if the path points to an existing _directory_ only.\nfunc (a *Assertions) NoDirExistsf(path string, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNoDirExistsf(a.t, path, msg, args...)\n}\n\n// NoError asserts that a function returned no error (i.e. `nil`).\n//\n//\t  actualObj, err := SomeFunction()\n//\t  if a.NoError(err) {\n//\t\t   assert.Equal(t, expectedObj, actualObj)\n//\t  }\nfunc (a *Assertions) NoError(err error, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNoError(a.t, err, msgAndArgs...)\n}\n\n// NoErrorf asserts that a function returned no error (i.e. `nil`).\n//\n//\t  actualObj, err := SomeFunction()\n//\t  if a.NoErrorf(err, \"error message %s\", \"formatted\") {\n//\t\t   assert.Equal(t, expectedObj, actualObj)\n//\t  }\nfunc (a *Assertions) NoErrorf(err error, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNoErrorf(a.t, err, msg, args...)\n}\n\n// NoFileExists checks whether a file does not exist in a given path. It fails\n// if the path points to an existing _file_ only.\nfunc (a *Assertions) NoFileExists(path string, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNoFileExists(a.t, path, msgAndArgs...)\n}\n\n// NoFileExistsf checks whether a file does not exist in a given path. It fails\n// if the path points to an existing _file_ only.\nfunc (a *Assertions) NoFileExistsf(path string, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNoFileExistsf(a.t, path, msg, args...)\n}\n\n// NotContains asserts that the specified string, list(array, slice...) or map does NOT contain the\n// specified substring or element.\n//\n//\ta.NotContains(\"Hello World\", \"Earth\")\n//\ta.NotContains([\"Hello\", \"World\"], \"Earth\")\n//\ta.NotContains({\"Hello\": \"World\"}, \"Earth\")\nfunc (a *Assertions) NotContains(s interface{}, contains interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNotContains(a.t, s, contains, msgAndArgs...)\n}\n\n// NotContainsf asserts that the specified string, list(array, slice...) or map does NOT contain the\n// specified substring or element.\n//\n//\ta.NotContainsf(\"Hello World\", \"Earth\", \"error message %s\", \"formatted\")\n//\ta.NotContainsf([\"Hello\", \"World\"], \"Earth\", \"error message %s\", \"formatted\")\n//\ta.NotContainsf({\"Hello\": \"World\"}, \"Earth\", \"error message %s\", \"formatted\")\nfunc (a *Assertions) NotContainsf(s interface{}, contains interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNotContainsf(a.t, s, contains, msg, args...)\n}\n\n// NotElementsMatch asserts that the specified listA(array, slice...) is NOT equal to specified\n// listB(array, slice...) ignoring the order of the elements. If there are duplicate elements,\n// the number of appearances of each of them in both lists should not match.\n// This is an inverse of ElementsMatch.\n//\n// a.NotElementsMatch([1, 1, 2, 3], [1, 1, 2, 3]) -> false\n//\n// a.NotElementsMatch([1, 1, 2, 3], [1, 2, 3]) -> true\n//\n// a.NotElementsMatch([1, 2, 3], [1, 2, 4]) -> true\nfunc (a *Assertions) NotElementsMatch(listA interface{}, listB interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNotElementsMatch(a.t, listA, listB, msgAndArgs...)\n}\n\n// NotElementsMatchf asserts that the specified listA(array, slice...) is NOT equal to specified\n// listB(array, slice...) ignoring the order of the elements. If there are duplicate elements,\n// the number of appearances of each of them in both lists should not match.\n// This is an inverse of ElementsMatch.\n//\n// a.NotElementsMatchf([1, 1, 2, 3], [1, 1, 2, 3], \"error message %s\", \"formatted\") -> false\n//\n// a.NotElementsMatchf([1, 1, 2, 3], [1, 2, 3], \"error message %s\", \"formatted\") -> true\n//\n// a.NotElementsMatchf([1, 2, 3], [1, 2, 4], \"error message %s\", \"formatted\") -> true\nfunc (a *Assertions) NotElementsMatchf(listA interface{}, listB interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNotElementsMatchf(a.t, listA, listB, msg, args...)\n}\n\n// NotEmpty asserts that the specified object is NOT [Empty].\n//\n//\tif a.NotEmpty(obj) {\n//\t  assert.Equal(t, \"two\", obj[1])\n//\t}\nfunc (a *Assertions) NotEmpty(object interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNotEmpty(a.t, object, msgAndArgs...)\n}\n\n// NotEmptyf asserts that the specified object is NOT [Empty].\n//\n//\tif a.NotEmptyf(obj, \"error message %s\", \"formatted\") {\n//\t  assert.Equal(t, \"two\", obj[1])\n//\t}\nfunc (a *Assertions) NotEmptyf(object interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNotEmptyf(a.t, object, msg, args...)\n}\n\n// NotEqual asserts that the specified values are NOT equal.\n//\n//\ta.NotEqual(obj1, obj2)\n//\n// Pointer variable equality is determined based on the equality of the\n// referenced values (as opposed to the memory addresses).\nfunc (a *Assertions) NotEqual(expected interface{}, actual interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNotEqual(a.t, expected, actual, msgAndArgs...)\n}\n\n// NotEqualValues asserts that two objects are not equal even when converted to the same type\n//\n//\ta.NotEqualValues(obj1, obj2)\nfunc (a *Assertions) NotEqualValues(expected interface{}, actual interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNotEqualValues(a.t, expected, actual, msgAndArgs...)\n}\n\n// NotEqualValuesf asserts that two objects are not equal even when converted to the same type\n//\n//\ta.NotEqualValuesf(obj1, obj2, \"error message %s\", \"formatted\")\nfunc (a *Assertions) NotEqualValuesf(expected interface{}, actual interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNotEqualValuesf(a.t, expected, actual, msg, args...)\n}\n\n// NotEqualf asserts that the specified values are NOT equal.\n//\n//\ta.NotEqualf(obj1, obj2, \"error message %s\", \"formatted\")\n//\n// Pointer variable equality is determined based on the equality of the\n// referenced values (as opposed to the memory addresses).\nfunc (a *Assertions) NotEqualf(expected interface{}, actual interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNotEqualf(a.t, expected, actual, msg, args...)\n}\n\n// NotErrorAs asserts that none of the errors in err's chain matches target,\n// but if so, sets target to that error value.\nfunc (a *Assertions) NotErrorAs(err error, target interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNotErrorAs(a.t, err, target, msgAndArgs...)\n}\n\n// NotErrorAsf asserts that none of the errors in err's chain matches target,\n// but if so, sets target to that error value.\nfunc (a *Assertions) NotErrorAsf(err error, target interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNotErrorAsf(a.t, err, target, msg, args...)\n}\n\n// NotErrorIs asserts that none of the errors in err's chain matches target.\n// This is a wrapper for errors.Is.\nfunc (a *Assertions) NotErrorIs(err error, target error, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNotErrorIs(a.t, err, target, msgAndArgs...)\n}\n\n// NotErrorIsf asserts that none of the errors in err's chain matches target.\n// This is a wrapper for errors.Is.\nfunc (a *Assertions) NotErrorIsf(err error, target error, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNotErrorIsf(a.t, err, target, msg, args...)\n}\n\n// NotImplements asserts that an object does not implement the specified interface.\n//\n//\ta.NotImplements((*MyInterface)(nil), new(MyObject))\nfunc (a *Assertions) NotImplements(interfaceObject interface{}, object interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNotImplements(a.t, interfaceObject, object, msgAndArgs...)\n}\n\n// NotImplementsf asserts that an object does not implement the specified interface.\n//\n//\ta.NotImplementsf((*MyInterface)(nil), new(MyObject), \"error message %s\", \"formatted\")\nfunc (a *Assertions) NotImplementsf(interfaceObject interface{}, object interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNotImplementsf(a.t, interfaceObject, object, msg, args...)\n}\n\n// NotNil asserts that the specified object is not nil.\n//\n//\ta.NotNil(err)\nfunc (a *Assertions) NotNil(object interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNotNil(a.t, object, msgAndArgs...)\n}\n\n// NotNilf asserts that the specified object is not nil.\n//\n//\ta.NotNilf(err, \"error message %s\", \"formatted\")\nfunc (a *Assertions) NotNilf(object interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNotNilf(a.t, object, msg, args...)\n}\n\n// NotPanics asserts that the code inside the specified PanicTestFunc does NOT panic.\n//\n//\ta.NotPanics(func(){ RemainCalm() })\nfunc (a *Assertions) NotPanics(f assert.PanicTestFunc, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNotPanics(a.t, f, msgAndArgs...)\n}\n\n// NotPanicsf asserts that the code inside the specified PanicTestFunc does NOT panic.\n//\n//\ta.NotPanicsf(func(){ RemainCalm() }, \"error message %s\", \"formatted\")\nfunc (a *Assertions) NotPanicsf(f assert.PanicTestFunc, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNotPanicsf(a.t, f, msg, args...)\n}\n\n// NotRegexp asserts that a specified regexp does not match a string.\n//\n//\ta.NotRegexp(regexp.MustCompile(\"starts\"), \"it's starting\")\n//\ta.NotRegexp(\"^start\", \"it's not starting\")\nfunc (a *Assertions) NotRegexp(rx interface{}, str interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNotRegexp(a.t, rx, str, msgAndArgs...)\n}\n\n// NotRegexpf asserts that a specified regexp does not match a string.\n//\n//\ta.NotRegexpf(regexp.MustCompile(\"starts\"), \"it's starting\", \"error message %s\", \"formatted\")\n//\ta.NotRegexpf(\"^start\", \"it's not starting\", \"error message %s\", \"formatted\")\nfunc (a *Assertions) NotRegexpf(rx interface{}, str interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNotRegexpf(a.t, rx, str, msg, args...)\n}\n\n// NotSame asserts that two pointers do not reference the same object.\n//\n//\ta.NotSame(ptr1, ptr2)\n//\n// Both arguments must be pointer variables. Pointer variable sameness is\n// determined based on the equality of both type and value.\nfunc (a *Assertions) NotSame(expected interface{}, actual interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNotSame(a.t, expected, actual, msgAndArgs...)\n}\n\n// NotSamef asserts that two pointers do not reference the same object.\n//\n//\ta.NotSamef(ptr1, ptr2, \"error message %s\", \"formatted\")\n//\n// Both arguments must be pointer variables. Pointer variable sameness is\n// determined based on the equality of both type and value.\nfunc (a *Assertions) NotSamef(expected interface{}, actual interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNotSamef(a.t, expected, actual, msg, args...)\n}\n\n// NotSubset asserts that the list (array, slice, or map) does NOT contain all\n// elements given in the subset (array, slice, or map).\n// Map elements are key-value pairs unless compared with an array or slice where\n// only the map key is evaluated.\n//\n//\ta.NotSubset([1, 3, 4], [1, 2])\n//\ta.NotSubset({\"x\": 1, \"y\": 2}, {\"z\": 3})\n//\ta.NotSubset([1, 3, 4], {1: \"one\", 2: \"two\"})\n//\ta.NotSubset({\"x\": 1, \"y\": 2}, [\"z\"])\nfunc (a *Assertions) NotSubset(list interface{}, subset interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNotSubset(a.t, list, subset, msgAndArgs...)\n}\n\n// NotSubsetf asserts that the list (array, slice, or map) does NOT contain all\n// elements given in the subset (array, slice, or map).\n// Map elements are key-value pairs unless compared with an array or slice where\n// only the map key is evaluated.\n//\n//\ta.NotSubsetf([1, 3, 4], [1, 2], \"error message %s\", \"formatted\")\n//\ta.NotSubsetf({\"x\": 1, \"y\": 2}, {\"z\": 3}, \"error message %s\", \"formatted\")\n//\ta.NotSubsetf([1, 3, 4], {1: \"one\", 2: \"two\"}, \"error message %s\", \"formatted\")\n//\ta.NotSubsetf({\"x\": 1, \"y\": 2}, [\"z\"], \"error message %s\", \"formatted\")\nfunc (a *Assertions) NotSubsetf(list interface{}, subset interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNotSubsetf(a.t, list, subset, msg, args...)\n}\n\n// NotZero asserts that i is not the zero value for its type.\nfunc (a *Assertions) NotZero(i interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNotZero(a.t, i, msgAndArgs...)\n}\n\n// NotZerof asserts that i is not the zero value for its type.\nfunc (a *Assertions) NotZerof(i interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tNotZerof(a.t, i, msg, args...)\n}\n\n// Panics asserts that the code inside the specified PanicTestFunc panics.\n//\n//\ta.Panics(func(){ GoCrazy() })\nfunc (a *Assertions) Panics(f assert.PanicTestFunc, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tPanics(a.t, f, msgAndArgs...)\n}\n\n// PanicsWithError asserts that the code inside the specified PanicTestFunc\n// panics, and that the recovered panic value is an error that satisfies the\n// EqualError comparison.\n//\n//\ta.PanicsWithError(\"crazy error\", func(){ GoCrazy() })\nfunc (a *Assertions) PanicsWithError(errString string, f assert.PanicTestFunc, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tPanicsWithError(a.t, errString, f, msgAndArgs...)\n}\n\n// PanicsWithErrorf asserts that the code inside the specified PanicTestFunc\n// panics, and that the recovered panic value is an error that satisfies the\n// EqualError comparison.\n//\n//\ta.PanicsWithErrorf(\"crazy error\", func(){ GoCrazy() }, \"error message %s\", \"formatted\")\nfunc (a *Assertions) PanicsWithErrorf(errString string, f assert.PanicTestFunc, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tPanicsWithErrorf(a.t, errString, f, msg, args...)\n}\n\n// PanicsWithValue asserts that the code inside the specified PanicTestFunc panics, and that\n// the recovered panic value equals the expected panic value.\n//\n//\ta.PanicsWithValue(\"crazy error\", func(){ GoCrazy() })\nfunc (a *Assertions) PanicsWithValue(expected interface{}, f assert.PanicTestFunc, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tPanicsWithValue(a.t, expected, f, msgAndArgs...)\n}\n\n// PanicsWithValuef asserts that the code inside the specified PanicTestFunc panics, and that\n// the recovered panic value equals the expected panic value.\n//\n//\ta.PanicsWithValuef(\"crazy error\", func(){ GoCrazy() }, \"error message %s\", \"formatted\")\nfunc (a *Assertions) PanicsWithValuef(expected interface{}, f assert.PanicTestFunc, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tPanicsWithValuef(a.t, expected, f, msg, args...)\n}\n\n// Panicsf asserts that the code inside the specified PanicTestFunc panics.\n//\n//\ta.Panicsf(func(){ GoCrazy() }, \"error message %s\", \"formatted\")\nfunc (a *Assertions) Panicsf(f assert.PanicTestFunc, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tPanicsf(a.t, f, msg, args...)\n}\n\n// Positive asserts that the specified element is positive\n//\n//\ta.Positive(1)\n//\ta.Positive(1.23)\nfunc (a *Assertions) Positive(e interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tPositive(a.t, e, msgAndArgs...)\n}\n\n// Positivef asserts that the specified element is positive\n//\n//\ta.Positivef(1, \"error message %s\", \"formatted\")\n//\ta.Positivef(1.23, \"error message %s\", \"formatted\")\nfunc (a *Assertions) Positivef(e interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tPositivef(a.t, e, msg, args...)\n}\n\n// Regexp asserts that a specified regexp matches a string.\n//\n//\ta.Regexp(regexp.MustCompile(\"start\"), \"it's starting\")\n//\ta.Regexp(\"start...$\", \"it's not starting\")\nfunc (a *Assertions) Regexp(rx interface{}, str interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tRegexp(a.t, rx, str, msgAndArgs...)\n}\n\n// Regexpf asserts that a specified regexp matches a string.\n//\n//\ta.Regexpf(regexp.MustCompile(\"start\"), \"it's starting\", \"error message %s\", \"formatted\")\n//\ta.Regexpf(\"start...$\", \"it's not starting\", \"error message %s\", \"formatted\")\nfunc (a *Assertions) Regexpf(rx interface{}, str interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tRegexpf(a.t, rx, str, msg, args...)\n}\n\n// Same asserts that two pointers reference the same object.\n//\n//\ta.Same(ptr1, ptr2)\n//\n// Both arguments must be pointer variables. Pointer variable sameness is\n// determined based on the equality of both type and value.\nfunc (a *Assertions) Same(expected interface{}, actual interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tSame(a.t, expected, actual, msgAndArgs...)\n}\n\n// Samef asserts that two pointers reference the same object.\n//\n//\ta.Samef(ptr1, ptr2, \"error message %s\", \"formatted\")\n//\n// Both arguments must be pointer variables. Pointer variable sameness is\n// determined based on the equality of both type and value.\nfunc (a *Assertions) Samef(expected interface{}, actual interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tSamef(a.t, expected, actual, msg, args...)\n}\n\n// Subset asserts that the list (array, slice, or map) contains all elements\n// given in the subset (array, slice, or map).\n// Map elements are key-value pairs unless compared with an array or slice where\n// only the map key is evaluated.\n//\n//\ta.Subset([1, 2, 3], [1, 2])\n//\ta.Subset({\"x\": 1, \"y\": 2}, {\"x\": 1})\n//\ta.Subset([1, 2, 3], {1: \"one\", 2: \"two\"})\n//\ta.Subset({\"x\": 1, \"y\": 2}, [\"x\"])\nfunc (a *Assertions) Subset(list interface{}, subset interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tSubset(a.t, list, subset, msgAndArgs...)\n}\n\n// Subsetf asserts that the list (array, slice, or map) contains all elements\n// given in the subset (array, slice, or map).\n// Map elements are key-value pairs unless compared with an array or slice where\n// only the map key is evaluated.\n//\n//\ta.Subsetf([1, 2, 3], [1, 2], \"error message %s\", \"formatted\")\n//\ta.Subsetf({\"x\": 1, \"y\": 2}, {\"x\": 1}, \"error message %s\", \"formatted\")\n//\ta.Subsetf([1, 2, 3], {1: \"one\", 2: \"two\"}, \"error message %s\", \"formatted\")\n//\ta.Subsetf({\"x\": 1, \"y\": 2}, [\"x\"], \"error message %s\", \"formatted\")\nfunc (a *Assertions) Subsetf(list interface{}, subset interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tSubsetf(a.t, list, subset, msg, args...)\n}\n\n// True asserts that the specified value is true.\n//\n//\ta.True(myBool)\nfunc (a *Assertions) True(value bool, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tTrue(a.t, value, msgAndArgs...)\n}\n\n// Truef asserts that the specified value is true.\n//\n//\ta.Truef(myBool, \"error message %s\", \"formatted\")\nfunc (a *Assertions) Truef(value bool, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tTruef(a.t, value, msg, args...)\n}\n\n// WithinDuration asserts that the two times are within duration delta of each other.\n//\n//\ta.WithinDuration(time.Now(), time.Now(), 10*time.Second)\nfunc (a *Assertions) WithinDuration(expected time.Time, actual time.Time, delta time.Duration, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tWithinDuration(a.t, expected, actual, delta, msgAndArgs...)\n}\n\n// WithinDurationf asserts that the two times are within duration delta of each other.\n//\n//\ta.WithinDurationf(time.Now(), time.Now(), 10*time.Second, \"error message %s\", \"formatted\")\nfunc (a *Assertions) WithinDurationf(expected time.Time, actual time.Time, delta time.Duration, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tWithinDurationf(a.t, expected, actual, delta, msg, args...)\n}\n\n// WithinRange asserts that a time is within a time range (inclusive).\n//\n//\ta.WithinRange(time.Now(), time.Now().Add(-time.Second), time.Now().Add(time.Second))\nfunc (a *Assertions) WithinRange(actual time.Time, start time.Time, end time.Time, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tWithinRange(a.t, actual, start, end, msgAndArgs...)\n}\n\n// WithinRangef asserts that a time is within a time range (inclusive).\n//\n//\ta.WithinRangef(time.Now(), time.Now().Add(-time.Second), time.Now().Add(time.Second), \"error message %s\", \"formatted\")\nfunc (a *Assertions) WithinRangef(actual time.Time, start time.Time, end time.Time, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tWithinRangef(a.t, actual, start, end, msg, args...)\n}\n\n// YAMLEq asserts that two YAML strings are equivalent.\nfunc (a *Assertions) YAMLEq(expected string, actual string, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tYAMLEq(a.t, expected, actual, msgAndArgs...)\n}\n\n// YAMLEqf asserts that two YAML strings are equivalent.\nfunc (a *Assertions) YAMLEqf(expected string, actual string, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tYAMLEqf(a.t, expected, actual, msg, args...)\n}\n\n// Zero asserts that i is the zero value for its type.\nfunc (a *Assertions) Zero(i interface{}, msgAndArgs ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tZero(a.t, i, msgAndArgs...)\n}\n\n// Zerof asserts that i is the zero value for its type.\nfunc (a *Assertions) Zerof(i interface{}, msg string, args ...interface{}) {\n\tif h, ok := a.t.(tHelper); ok {\n\t\th.Helper()\n\t}\n\tZerof(a.t, i, msg, args...)\n}\n"
  },
  {
    "path": "vendor/github.com/stretchr/testify/require/require_forward.go.tmpl",
    "content": "{{.CommentWithoutT \"a\"}}\nfunc (a *Assertions) {{.DocInfo.Name}}({{.Params}}) {\n\tif h, ok := a.t.(tHelper); ok { h.Helper() }\n\t{{.DocInfo.Name}}(a.t, {{.ForwardedParams}})\n}\n"
  },
  {
    "path": "vendor/github.com/stretchr/testify/require/requirements.go",
    "content": "package require\n\n// TestingT is an interface wrapper around *testing.T\ntype TestingT interface {\n\tErrorf(format string, args ...interface{})\n\tFailNow()\n}\n\ntype tHelper = interface {\n\tHelper()\n}\n\n// ComparisonAssertionFunc is a common function prototype when comparing two values.  Can be useful\n// for table driven tests.\ntype ComparisonAssertionFunc func(TestingT, interface{}, interface{}, ...interface{})\n\n// ValueAssertionFunc is a common function prototype when validating a single value.  Can be useful\n// for table driven tests.\ntype ValueAssertionFunc func(TestingT, interface{}, ...interface{})\n\n// BoolAssertionFunc is a common function prototype when validating a bool value.  Can be useful\n// for table driven tests.\ntype BoolAssertionFunc func(TestingT, bool, ...interface{})\n\n// ErrorAssertionFunc is a common function prototype when validating an error value.  Can be useful\n// for table driven tests.\ntype ErrorAssertionFunc func(TestingT, error, ...interface{})\n\n//go:generate sh -c \"cd ../_codegen && go build && cd - && ../_codegen/_codegen -output-package=require -template=require.go.tmpl -include-format-funcs\"\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/.editorconfig",
    "content": "root = true\n\n[*]\ncharset = utf-8\nend_of_line = lf\ninsert_final_newline = true\ntrim_trailing_whitespace = true\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/.gitattributes",
    "content": "# Improves experience of commands like `make format` on Windows\n* text=auto eol=lf\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/.gitignore",
    "content": "# If you prefer the allow list template instead of the deny list, see community template:\n# https://github.com/github/gitignore/blob/main/community/Golang/Go.AllowList.gitignore\n#\n# Binaries for programs and plugins\n*.exe\n*.exe~\n*.dll\n*.so\n*.dylib\n/wazero\nbuild\ndist\n\n# Test binary, built with `go test -c`\n*.test\n\n# Output of the go coverage tool, specifically when used with LiteIDE\n*.out\n\n# Dependency directories (remove the comment below to include it)\n# vendor/\n\n# Go workspace file\ngo.work\n\n# Goland\n.idea\n\n# AssemblyScript\nnode_modules\npackage-lock.json\n\n# codecov.io\n/coverage.txt\n\n.vagrant\n\nzig-cache/\n.zig-cache/\nzig-out/\n\n.DS_Store\n\n# Ignore compiled stdlib test cases.\n/internal/integration_test/stdlibs/testdata\n/internal/integration_test/libsodium/testdata\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/.gitmodules",
    "content": "[submodule \"site/themes/hello-friend\"]\n\tpath = site/themes/hello-friend\n\turl = https://github.com/panr/hugo-theme-hello-friend.git\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/CONTRIBUTING.md",
    "content": "# Contributing\n\nWe welcome contributions from the community. Please read the following guidelines carefully to maximize the chances of your PR being merged.\n\n## Coding Style\n\n- To ensure your change passes format checks, run `make check`. To format your files, you can run `make format`.\n- We follow standard Go table-driven tests and use an internal [testing library](./internal/testing/require) to assert correctness. To verify all tests pass, you can run `make test`.\n\n## DCO\n\nWe require DCO signoff line in every commit to this repo.\n\nThe sign-off is a simple line at the end of the explanation for the\npatch, which certifies that you wrote it or otherwise have the right to\npass it on as an open-source patch. The rules are pretty simple: if you\ncan certify the below (from\n[developercertificate.org](https://developercertificate.org/)):\n\n```\nDeveloper Certificate of Origin\nVersion 1.1\nCopyright (C) 2004, 2006 The Linux Foundation and its contributors.\n660 York Street, Suite 102,\nSan Francisco, CA 94110 USA\nEveryone is permitted to copy and distribute verbatim copies of this\nlicense document, but changing it is not allowed.\nDeveloper's Certificate of Origin 1.1\nBy making a contribution to this project, I certify that:\n(a) The contribution was created in whole or in part by me and I\n    have the right to submit it under the open source license\n    indicated in the file; or\n(b) The contribution is based upon previous work that, to the best\n    of my knowledge, is covered under an appropriate open source\n    license and I have the right under that license to submit that\n    work with modifications, whether created in whole or in part\n    by me, under the same open source license (unless I am\n    permitted to submit under a different license), as indicated\n    in the file; or\n(c) The contribution was provided directly to me by some other\n    person who certified (a), (b) or (c) and I have not modified\n    it.\n(d) I understand and agree that this project and the contribution\n    are public and that a record of the contribution (including all\n    personal information I submit with it, including my sign-off) is\n    maintained indefinitely and may be redistributed consistent with\n    this project or the open source license(s) involved.\n```\n\nthen you just add a line to every git commit message:\n\n    Signed-off-by: Joe Smith <joe@gmail.com>\n\nusing your real name (sorry, no pseudonyms or anonymous contributions.)\n\nYou can add the sign off when creating the git commit via `git commit -s`.\n\n## Code Reviews\n\n* The pull request title should describe what the change does and not embed issue numbers.\nThe pull request should only be blank when the change is minor. Any feature should include\na description of the change and what motivated it. If the change or design changes through\nreview, please keep the title and description updated accordingly.\n* A single approval is sufficient to merge. If a reviewer asks for\nchanges in a PR they should be addressed before the PR is merged,\neven if another reviewer has already approved the PR.\n* During the review, address the comments and commit the changes\n_without_ squashing the commits. This facilitates incremental reviews\nsince the reviewer does not go through all the code again to find out\nwhat has changed since the last review. When a change goes out of sync with main,\nplease rebase and force push, keeping the original commits where practical.\n* Commits are squashed prior to merging a pull request, using the title\nas commit message by default. Maintainers may request contributors to\nedit the pull request tite to ensure that it remains descriptive as a\ncommit message. Alternatively, maintainers may change the commit message directly.\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/LICENSE",
    "content": "                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright 2020-2023 wazero authors\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/Makefile",
    "content": "\ngofumpt       := mvdan.cc/gofumpt@v0.6.0\ngosimports    := github.com/rinchsan/gosimports/cmd/gosimports@v0.3.8\ngolangci_lint := github.com/golangci/golangci-lint/cmd/golangci-lint@v1.64.5\nasmfmt        := github.com/klauspost/asmfmt/cmd/asmfmt@v1.3.2\n# sync this with netlify.toml!\nhugo          := github.com/gohugoio/hugo@v0.115.2\n\n# Make 3.81 doesn't support '**' globbing: Set explicitly instead of recursion.\nall_sources   := $(wildcard *.go */*.go */*/*.go */*/*/*.go */*/*/*.go */*/*/*/*.go)\nall_testdata  := $(wildcard testdata/* */testdata/* */*/testdata/* */*/testdata/*/* */*/*/testdata/*)\nall_testing   := $(wildcard internal/testing/* internal/testing/*/* internal/testing/*/*/*)\nall_examples  := $(wildcard examples/* examples/*/* examples/*/*/* */*/example/* */*/example/*/* */*/example/*/*/*)\nall_it        := $(wildcard internal/integration_test/* internal/integration_test/*/* internal/integration_test/*/*/*)\n# main_sources exclude any test or example related code\nmain_sources  := $(wildcard $(filter-out %_test.go $(all_testdata) $(all_testing) $(all_examples) $(all_it), $(all_sources)))\n# main_packages collect the unique main source directories (sort will dedupe).\n# Paths need to all start with ./, so we do that manually vs foreach which strips it.\nmain_packages := $(sort $(foreach f,$(dir $(main_sources)),$(if $(findstring ./,$(f)),./,./$(f))))\n\ngo_test_options ?= -timeout 300s\n\n.PHONY: test.examples\ntest.examples:\n\t@go test $(go_test_options) ./examples/... ./imports/assemblyscript/example/... ./imports/emscripten/... ./imports/wasi_snapshot_preview1/example/...\n\n.PHONY: build.examples.as\nbuild.examples.as:\n\t@cd ./imports/assemblyscript/example/testdata && npm install && npm run build\n\n%.wasm: %.zig\n\t@(cd $(@D); zig build -Doptimize=ReleaseSmall)\n\t@mv $(@D)/zig-out/*/$(@F) $(@D)\n\n.PHONY: build.examples.zig\nbuild.examples.zig: examples/allocation/zig/testdata/greet.wasm imports/wasi_snapshot_preview1/example/testdata/zig/cat.wasm imports/wasi_snapshot_preview1/testdata/zig/wasi.wasm\n\t@cd internal/testing/dwarftestdata/testdata/zig; zig build; mv zig-out/*/main.wasm ./ # Need DWARF custom sections.\n\ntinygo_reactor_sources_reactor := examples/basic/testdata/add.go examples/allocation/tinygo/testdata/greet.go\n.PHONY: build.examples.tinygo_reactor\nbuild.examples.tinygo_reactor: $(tinygo_sources_reactor)\n\t@for f in $^; do \\\n\t    tinygo build -o $$(echo $$f | sed -e 's/\\.go/\\.wasm/') -scheduler=none --no-debug --target=wasip1 -buildmode=c-shared $$f; \\\n\tdone\n\ntinygo_sources_clis := examples/cli/testdata/cli.go imports/wasi_snapshot_preview1/example/testdata/tinygo/cat.go imports/wasi_snapshot_preview1/testdata/tinygo/wasi.go cmd/wazero/testdata/cat/cat.go\n.PHONY: build.examples.tinygo_clis\nbuild.examples.tinygo_clis: $(tinygo_sources_clis)\n\t@for f in $^; do \\\n\t    tinygo build -o $$(echo $$f | sed -e 's/\\.go/\\.wasm/') -scheduler=none --no-debug --target=wasip1 $$f; \\\n\tdone\n\t@mv cmd/wazero/testdata/cat/cat.wasm cmd/wazero/testdata/cat/cat-tinygo.wasm\n\n.PHONY: build.examples.tinygo\nbuild.examples.tinygo: build.examples.tinygo_reactor build.examples.tinygo_clis\n\n# We use zig to build C as it is easy to install and embeds a copy of zig-cc.\n# Note: Don't use \"-Oz\" as that breaks our wasi sock example.\nc_sources := imports/wasi_snapshot_preview1/example/testdata/zig-cc/cat.c imports/wasi_snapshot_preview1/testdata/zig-cc/wasi.c internal/testing/dwarftestdata/testdata/zig-cc/main.c\n.PHONY: build.examples.zig-cc\nbuild.examples.zig-cc: $(c_sources)\n\t@for f in $^; do \\\n\t    zig cc --target=wasm32-wasi -o $$(echo $$f | sed -e 's/\\.c/\\.wasm/') $$f; \\\n\tdone\n\n# Here are the emcc args we use:\n#\n# * `-Oz` - most optimization for code size.\n# * `--profiling` - adds the name section.\n# * `-s STANDALONE_WASM` - ensures wasm is built for a non-js runtime.\n# * `-s EXPORTED_FUNCTIONS=_malloc,_free` - export allocation functions so that\n#   they can be used externally as \"malloc\" and \"free\".\n# * `-s WARN_ON_UNDEFINED_SYMBOLS=0` - imports not defined in JavaScript error\n#   otherwise. See https://github.com/emscripten-core/emscripten/issues/13641\n# * `-s TOTAL_STACK=8KB -s TOTAL_MEMORY=64KB` - reduce memory default from 16MB\n#   to one page (64KB). To do this, we have to reduce the stack size.\n# * `-s ALLOW_MEMORY_GROWTH` - allows \"memory.grow\" instructions to succeed, but\n#   requires a function import \"emscripten_notify_memory_growth\".\nemscripten_sources := $(wildcard imports/emscripten/testdata/*.cc)\n.PHONY: build.examples.emscripten\nbuild.examples.emscripten: $(emscripten_sources)\n\t@for f in $^; do \\\n\t\tem++ -Oz --profiling \\\n\t\t-s STANDALONE_WASM \\\n\t\t-s EXPORTED_FUNCTIONS=_malloc,_free \\\n\t\t-s WARN_ON_UNDEFINED_SYMBOLS=0 \\\n\t\t-s TOTAL_STACK=8KB -s TOTAL_MEMORY=64KB \\\n\t\t-s ALLOW_MEMORY_GROWTH \\\n\t\t--std=c++17 -o $$(echo $$f | sed -e 's/\\.cc/\\.wasm/') $$f; \\\n\tdone\n\n%/greet.wasm : cargo_target := wasm32-unknown-unknown\n%/cat.wasm : cargo_target := wasm32-wasip1\n%/wasi.wasm : cargo_target := wasm32-wasip1\n\n.PHONY: build.examples.rust\nbuild.examples.rust: examples/allocation/rust/testdata/greet.wasm imports/wasi_snapshot_preview1/example/testdata/cargo-wasi/cat.wasm imports/wasi_snapshot_preview1/testdata/cargo-wasi/wasi.wasm internal/testing/dwarftestdata/testdata/rust/main.wasm.xz\n\n# Normally, we build release because it is smaller. Testing dwarf requires the debug build.\ninternal/testing/dwarftestdata/testdata/rust/main.wasm.xz:\n\tcd $(@D) && cargo build --target wasm32-wasip1\n\tmv $(@D)/target/wasm32-wasip1/debug/main.wasm $(@D)\n\tcd $(@D) && xz -k -f ./main.wasm # Rust's DWARF section is huge, so compress it.\n\n# Builds rust using cargo normally\n%.wasm: %.rs\n\t@(cd $(@D); cargo build --target $(cargo_target) --release)\n\t@mv $(@D)/target/$(cargo_target)/release/$(@F) $(@D)\n\nspectest_base_dir := internal/integration_test/spectest\nspectest_v1_dir := $(spectest_base_dir)/v1\nspectest_v1_testdata_dir := $(spectest_v1_dir)/testdata\nspec_version_v1 := wg-1.0\nspectest_v2_dir := $(spectest_base_dir)/v2\nspectest_v2_testdata_dir := $(spectest_v2_dir)/testdata\n\n# Latest draft state as of March 12, 2024.\nspec_version_v2 := 1c5e5d178bd75c79b7a12881c529098beaee2a05\nspectest_threads_dir := $(spectest_base_dir)/threads\nspectest_threads_testdata_dir := $(spectest_threads_dir)/testdata\n# From https://github.com/WebAssembly/threads/tree/upstream-rebuild which has not been merged to main yet.\n# It will likely be renamed to main in the future - https://github.com/WebAssembly/threads/issues/216.\nspec_version_threads := 3635ca51a17e57e106988846c5b0e0cc48ac04fc\n\nspectest_tail_call_dir := $(spectest_base_dir)/tail-call\nspectest_tail_call_testdata_dir := $(spectest_tail_call_dir)/testdata\nspec_version_tail_call := 4fd2339b5e9709e74b326797f69a88b13eac4d47\n\n.PHONY: build.spectest\nbuild.spectest:\n\t@$(MAKE) build.spectest.v1\n\t@$(MAKE) build.spectest.v2\n\n.PHONY: build.spectest.v1\nbuild.spectest.v1: # Note: wabt by default uses >1.0 features, so wast2json flags might drift as they include more. See WebAssembly/wabt#1878\n\t@rm -rf $(spectest_v1_testdata_dir)\n\t@mkdir -p $(spectest_v1_testdata_dir)\n\t@cd $(spectest_v1_testdata_dir) \\\n\t\t&& curl -sSL 'https://api.github.com/repos/WebAssembly/spec/contents/test/core?ref=$(spec_version_v1)' | jq -r '.[]| .download_url' | grep -E \".wast\" | xargs -Iurl curl -sJL url -O\n\t@cd $(spectest_v1_testdata_dir) && for f in `find . -name '*.wast'`; do \\\n\t\tperl -pi -e 's/\\(assert_return_canonical_nan\\s(\\(invoke\\s\"f32.demote_f64\"\\s\\((f[0-9]{2})\\.const\\s[a-z0-9.+:-]+\\)\\))\\)/\\(assert_return $$1 \\(f32.const nan:canonical\\)\\)/g' $$f; \\\n\t\tperl -pi -e 's/\\(assert_return_arithmetic_nan\\s(\\(invoke\\s\"f32.demote_f64\"\\s\\((f[0-9]{2})\\.const\\s[a-z0-9.+:-]+\\)\\))\\)/\\(assert_return $$1 \\(f32.const nan:arithmetic\\)\\)/g' $$f; \\\n\t\tperl -pi -e 's/\\(assert_return_canonical_nan\\s(\\(invoke\\s\"f64\\.promote_f32\"\\s\\((f[0-9]{2})\\.const\\s[a-z0-9.+:-]+\\)\\))\\)/\\(assert_return $$1 \\(f64.const nan:canonical\\)\\)/g' $$f; \\\n\t\tperl -pi -e 's/\\(assert_return_arithmetic_nan\\s(\\(invoke\\s\"f64\\.promote_f32\"\\s\\((f[0-9]{2})\\.const\\s[a-z0-9.+:-]+\\)\\))\\)/\\(assert_return $$1 \\(f64.const nan:arithmetic\\)\\)/g' $$f; \\\n\t\tperl -pi -e 's/\\(assert_return_canonical_nan\\s(\\(invoke\\s\"[a-z._0-9]+\"\\s\\((f[0-9]{2})\\.const\\s[a-z0-9.+:-]+\\)\\))\\)/\\(assert_return $$1 \\($$2.const nan:canonical\\)\\)/g' $$f; \\\n\t\tperl -pi -e 's/\\(assert_return_arithmetic_nan\\s(\\(invoke\\s\"[a-z._0-9]+\"\\s\\((f[0-9]{2})\\.const\\s[a-z0-9.+:-]+\\)\\))\\)/\\(assert_return $$1 \\($$2.const nan:arithmetic\\)\\)/g' $$f; \\\n\t\tperl -pi -e 's/\\(assert_return_canonical_nan\\s(\\(invoke\\s\"[a-z._0-9]+\"\\s\\((f[0-9]{2})\\.const\\s[a-z0-9.+:-]+\\)\\s\\([a-z0-9.\\s+-:]+\\)\\))\\)/\\(assert_return $$1 \\($$2.const nan:canonical\\)\\)/g' $$f; \\\n\t\tperl -pi -e 's/\\(assert_return_arithmetic_nan\\s(\\(invoke\\s\"[a-z._0-9]+\"\\s\\((f[0-9]{2})\\.const\\s[a-z0-9.+:-]+\\)\\s\\([a-z0-9.\\s+-:]+\\)\\))\\)/\\(assert_return $$1 \\($$2.const nan:arithmetic\\)\\)/g' $$f; \\\n\t\tperl -pi -e 's/\\(assert_return_canonical_nan\\s(\\(invoke\\s\"[a-z._0-9]+\"\\s\\((f[0-9]{2})\\.const\\s[a-z0-9.+:-]+\\)\\))\\)/\\(assert_return $$1 \\($$2.const nan:canonical\\)\\)/g' $$f; \\\n\t\tperl -pi -e 's/\\(assert_return_arithmetic_nan\\s(\\(invoke\\s\"[a-z._0-9]+\"\\s\\((f[0-9]{2})\\.const\\s[a-z0-9.+:-]+\\)\\))\\)/\\(assert_return $$1 \\($$2.const nan:arithmetic\\)\\)/g' $$f; \\\n\t\twast2json \\\n\t\t\t--disable-saturating-float-to-int \\\n\t\t\t--disable-sign-extension \\\n\t\t\t--disable-simd \\\n\t\t\t--disable-multi-value \\\n\t\t\t--disable-bulk-memory \\\n\t\t\t--disable-reference-types \\\n\t\t\t--debug-names $$f; \\\n\tdone\n\n.PHONY: build.spectest.v2\nbuild.spectest.v2: # Note: SIMD cases are placed in the \"simd\" subdirectory.\n\t@mkdir -p $(spectest_v2_testdata_dir)\n\t@cd $(spectest_v2_testdata_dir) \\\n\t\t&& curl -sSL 'https://api.github.com/repos/WebAssembly/spec/contents/test/core?ref=$(spec_version_v2)' | jq -r '.[]| .download_url' | grep -E \".wast\" | xargs -Iurl curl -sJL url -O\n\t@cd $(spectest_v2_testdata_dir) \\\n\t\t&& curl -sSL 'https://api.github.com/repos/WebAssembly/spec/contents/test/core/simd?ref=$(spec_version_v2)' | jq -r '.[]| .download_url' | grep -E \".wast\" | xargs -Iurl curl -sJL url -O\n\t@cd $(spectest_v2_testdata_dir) && for f in `find . -name '*.wast'`; do \\\n\t\twast2json --debug-names --no-check $$f || true; \\\n\tdone # Ignore the error here as some tests (e.g. comments.wast right now) are not supported by wast2json yet.\n\n# Note: We currently cannot build the \"threads\" subdirectory that spawns threads due to missing support in wast2json.\n# https://github.com/WebAssembly/wabt/issues/2348#issuecomment-1878003959\n.PHONY: build.spectest.threads\nbuild.spectest.threads:\n\t@mkdir -p $(spectest_threads_testdata_dir)\n\t@cd $(spectest_threads_testdata_dir) \\\n\t\t&& curl -sSL 'https://api.github.com/repos/WebAssembly/threads/contents/test/core?ref=$(spec_version_threads)' | jq -r '.[]| .download_url' | grep -E \"atomic.wast\" | xargs -Iurl curl -sJL url -O\n\t@cd $(spectest_threads_testdata_dir) && for f in `find . -name '*.wast'`; do \\\n\t\twast2json --enable-threads --debug-names $$f; \\\n\tdone\n\n.PHONY: build.spectest.tail_call\nbuild.spectest.tail_call:\n\tmkdir -p $(spectest_tail_call_testdata_dir)\n\tcd $(spectest_tail_call_testdata_dir) \\\n\t\t&& curl -sSL 'https://api.github.com/repos/WebAssembly/testsuite/contents/proposals/tail-call?ref=$(spec_version_tail_call)' | jq -r '.[]| .download_url' | grep -E \".wast\" | xargs -Iurl curl -sJL url -O\n\tcd $(spectest_tail_call_testdata_dir) && for f in `find . -name '*.wast'`; do \\\n\t\twast2json --enable-tail-call --debug-names $$f; \\\n\tdone\n\n.PHONY: test\ntest:\n\t@go test $(go_test_options) ./...\n\t@cd internal/version/testdata && go test $(go_test_options) ./...\n\t@cd internal/integration_test/fuzz/wazerolib && CGO_ENABLED=0 WASM_BINARY_PATH=testdata/test.wasm go test ./...\n\n.PHONY: coverage\n# replace spaces with commas\ncoverpkg = $(shell echo $(main_packages) | tr ' ' ',')\ncoverage: ## Generate test coverage\n\t@go test -coverprofile=coverage.txt -covermode=atomic --coverpkg=$(coverpkg) $(main_packages)\n\t@go tool cover -func coverage.txt\n\ngolangci_lint_path := $(shell go env GOPATH)/bin/golangci-lint\n\n$(golangci_lint_path):\n\t@go install $(golangci_lint)\n\ngolangci_lint_goarch ?= $(shell go env GOARCH)\n\n.PHONY: lint\nlint: $(golangci_lint_path)\n\t@GOARCH=$(golangci_lint_goarch) CGO_ENABLED=0 $(golangci_lint_path) run --timeout 5m -E testableexamples\n\n.PHONY: format\nformat:\n\t@go run $(gofumpt) -l -w .\n\t@go run $(gosimports) -local github.com/tetratelabs/ -w $(shell find . -name '*.go' -type f)\n\t@go run $(asmfmt) -w $(shell find . -name '*.s' -type f)\n\n.PHONY: check  # Pre-flight check for pull requests\ncheck:\n# The following checks help ensure our platform-specific code used for system\n# calls safely falls back on a platform unsupported by the compiler engine.\n# This makes sure the intepreter can be used. Most often the package that can\n# drift here is \"platform\" or \"sysfs\":\n#\n# Ensure we build on plan9. See #1578\n\t@GOARCH=amd64 GOOS=plan9 go build ./...\n# Ensure we build on gojs. See #1526.\n\t@GOARCH=wasm GOOS=js go build ./...\n# Ensure we build on wasip1. See #1526.\n\t@GOARCH=wasm GOOS=wasip1 go build ./...\n# Ensure we build on aix. See #1723\n\t@GOARCH=ppc64 GOOS=aix go build ./...\n# Ensure we build on linux s390x. See #2412\n\t@GOARCH=s390x GOOS=linux go build ./...\n# Ensure we build on linux ppc64le. See #2412\n\t@GOARCH=ppc64le GOOS=linux go build ./...\n# Ensure we build on linux arm for Dapr:\n#\tgh release view -R dapr/dapr --json assets --jq 'first(.assets[] | select(.name = \"daprd_linux_arm.tar.gz\") | {url, downloadCount})'\n\t@GOARCH=arm GOOS=linux go build ./...\n# Ensure we build on linux 386 for Trivy:\n#\tgh release view -R aquasecurity/trivy --json assets --jq 'first(.assets[] | select(.name| test(\"Linux-32bit.*tar.gz\")) | {url, downloadCount})'\n\t@GOARCH=386 GOOS=linux go build ./...\n# Ensure we build on FreeBSD amd64 for Trivy:\n#\tgh release view -R aquasecurity/trivy --json assets --jq 'first(.assets[] | select(.name| test(\"FreeBSD-64bit.*tar.gz\")) | {url, downloadCount})'\n\t@GOARCH=amd64 GOOS=freebsd go build ./...\n\t@$(MAKE) lint golangci_lint_goarch=arm64\n\t@$(MAKE) lint golangci_lint_goarch=amd64\n\t@$(MAKE) format\n\t@go mod tidy\n\t@if [ ! -z \"`git status -s`\" ]; then \\\n\t\techo \"The following differences will fail CI until committed:\"; \\\n\t\tgit diff --exit-code; \\\n\tfi\n\n.PHONY: site\nsite: ## Serve website content\n\t@git submodule update --init\n\t@cd site && go run $(hugo) server --minify --disableFastRender --baseURL localhost:1313 --cleanDestinationDir -D\n\n.PHONY: clean\nclean: ## Ensure a clean build\n\t@rm -rf dist build coverage.txt\n\t@go clean -testcache\n\nfuzz_default_flags := --no-trace-compares --sanitizer=none -- -rss_limit_mb=8192\n\nfuzz_timeout_seconds ?= 10\n.PHONY: fuzz\nfuzz:\n\t@cd internal/integration_test/fuzz && cargo test\n\t@cd internal/integration_test/fuzz && cargo fuzz run logging_no_diff $(fuzz_default_flags) -max_total_time=$(fuzz_timeout_seconds)\n\t@cd internal/integration_test/fuzz && cargo fuzz run no_diff $(fuzz_default_flags) -max_total_time=$(fuzz_timeout_seconds)\n\t@cd internal/integration_test/fuzz && cargo fuzz run memory_no_diff $(fuzz_default_flags) -max_total_time=$(fuzz_timeout_seconds)\n\t@cd internal/integration_test/fuzz && cargo fuzz run validation $(fuzz_default_flags) -max_total_time=$(fuzz_timeout_seconds)\n\nlibsodium:\n\tcd ./internal/integration_test/libsodium/testdata && \\\n\t\tcurl -s \"https://api.github.com/repos/jedisct1/webassembly-benchmarks/contents/2022-12/wasm?ref=7e86d68e99e60130899fbe3b3ab6e9dce9187a7c\" \\\n\t\t| jq -r '.[] | .download_url' | xargs -n 1 curl -LO\n\n#### CLI release related ####\n\nVERSION ?= dev\nnon_windows_platforms := darwin_amd64 darwin_arm64 linux_amd64 linux_arm64\nnon_windows_archives  := $(non_windows_platforms:%=dist/wazero_$(VERSION)_%.tar.gz)\nwindows_platforms     := windows_amd64 # TODO: add arm64 windows once we start testing on it.\nwindows_archives      := $(windows_platforms:%=dist/wazero_$(VERSION)_%.zip)\nchecksum_txt          := dist/wazero_$(VERSION)_checksums.txt\n\n# define macros for multi-platform builds. these parse the filename being built\ngo-arch = $(if $(findstring amd64,$1),amd64,arm64)\ngo-os   = $(if $(findstring .exe,$1),windows,$(if $(findstring linux,$1),linux,darwin))\n\nbuild/wazero_%/wazero:\n\t$(call go-build,$@,$<)\n\nbuild/wazero_%/wazero.exe:\n\t$(call go-build,$@,$<)\n\ndist/wazero_$(VERSION)_%.tar.gz: build/wazero_%/wazero\n\t@echo tar.gz \"tarring $@\"\n\t@mkdir -p $(@D)\n# On Windows, we pass the special flag `--mode='+rx' to ensure that we set the executable flag.\n# This is only supported by GNU Tar, so we set it conditionally.\n\t@tar -C $(<D) -cpzf $@ $(if $(findstring Windows_NT,$(OS)),--mode='+rx',) $(<F)\n\t@echo tar.gz \"ok\"\n\ndefine go-build\n\t@echo \"building $1\"\n\t@# $(go:go=) removes the trailing 'go', so we can insert cross-build variables\n\t@$(go:go=) CGO_ENABLED=0 GOOS=$(call go-os,$1) GOARCH=$(call go-arch,$1) go build \\\n\t\t-ldflags \"-s -w -X github.com/tetratelabs/wazero/internal/version.version=$(VERSION)\" \\\n\t\t-o $1 $2 ./cmd/wazero\n\t@echo build \"ok\"\nendef\n\ndist/wazero_$(VERSION)_%.zip: build/wazero_%/wazero.exe\n\t@echo zip \"zipping $@\"\n\t@mkdir -p $(@D)\n\t@zip -qj $@ $<\n\t@echo zip \"ok\"\n\n# Darwin doesn't have sha256sum. See https://github.com/actions/virtual-environments/issues/90\nsha256sum := $(if $(findstring darwin,$(shell go env GOOS)),shasum -a 256,sha256sum)\n$(checksum_txt): $(non_windows_archives) $(windows_archives)\n\t@cd $(@D); touch $(@F); $(sha256sum) * > $(@F)\n\ndist: $(non_windows_archives) $(windows_archives) $(checksum_txt)\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/NOTICE",
    "content": "wazero\nCopyright 2020-2023 wazero authors\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/RATIONALE.md",
    "content": "# Notable rationale of wazero\n\n## Zero dependencies\n\nWazero has zero dependencies to differentiate itself from other runtimes which\nhave heavy impact usually due to CGO. By avoiding CGO, wazero avoids\nprerequisites such as shared libraries or libc, and lets users keep features\nlike cross compilation.\n\nAvoiding go.mod dependencies reduces interference on Go version support, and\nsize of a statically compiled binary. However, doing so brings some\nresponsibility into the project.\n\nGo's native platform support is good: We don't need platform-specific code to\nget monotonic time, nor do we need much work to implement certain features\nneeded by our compiler such as `mmap`. That said, Go does not support all\ncommon operating systems to the same degree. For example, Go 1.18 includes\n`Mprotect` on Linux and Darwin, but not FreeBSD.\n\nThe general tradeoff the project takes from a zero dependency policy is more\nexplicit support of platforms (in the compiler runtime), as well a larger and\nmore technically difficult codebase.\n\nAt some point, we may allow extensions to supply their own platform-specific\nhooks. Until then, one end user impact/tradeoff is some glitches trying\nuntested platforms (with the Compiler runtime).\n\n### Why do we use CGO to implement system calls on darwin?\n\nwazero is dependency and CGO free by design. In some cases, we have code that\ncan optionally use CGO, but retain a fallback for when that's disabled. The only\noperating system (`GOOS`) we use CGO by default in is `darwin`.\n\nUnlike other operating systems, regardless of `CGO_ENABLED`, Go always uses\n\"CGO\" mechanisms in the runtime layer of `darwin`. This is explained in\n[Statically linked binaries on Mac OS X](https://developer.apple.com/library/archive/qa/qa1118/_index.html#//apple_ref/doc/uid/DTS10001666):\n\n> Apple does not support statically linked binaries on Mac OS X. A statically\n> linked binary assumes binary compatibility at the kernel system call\n> interface, and we do not make any guarantees on that front. Rather, we strive\n> to ensure binary compatibility in each dynamically linked system library and\n> framework.\n\nThis plays to our advantage for system calls that aren't yet exposed in the Go\nstandard library, notably `futimens` for nanosecond-precision timestamp\nmanipulation.\n\n### Why not x/sys\n\nGoing beyond Go's SDK limitations can be accomplished with their [x/sys library](https://pkg.go.dev/golang.org/x/sys/unix).\nFor example, this includes `zsyscall_freebsd_amd64.go` missing from the Go SDK.\n\nHowever, like all dependencies, x/sys is a source of conflict. For example,\nx/sys had to be in order to upgrade to Go 1.18.\n\nIf we depended on x/sys, we could get more precise functionality needed for\nfeatures such as clocks or more platform support for the compiler runtime.\n\nThat said, formally supporting an operating system may still require testing as\neven use of x/sys can require platform-specifics. For example, [mmap-go](https://github.com/edsrzf/mmap-go)\nuses x/sys, but also mentions limitations, some not surmountable with x/sys\nalone.\n\nRegardless, we may at some point introduce a separate go.mod for users to use\nx/sys as a platform plugin without forcing all users to maintain that\ndependency.\n\n## Project structure\n\nwazero uses internal packages extensively to balance API compatibility desires for end users with the need to safely\nshare internals between compilers.\n\nEnd-user packages include `wazero`, with `Config` structs, `api`, with shared types, and the built-in `wasi` library.\nEverything else is internal.\n\nWe put the main program for wazero into a directory of the same name to match conventions used in `go install`,\nnotably the name of the folder becomes the binary name. We chose to use `cmd/wazero` as it is common practice\nand less surprising than `wazero/wazero`.\n\n### Internal packages\n\nMost code in wazero is internal, and it is acknowledged that this prevents external implementation of facets such as\ncompilers or decoding. It also prevents splitting this code into separate repositories, resulting in a larger monorepo.\nThis also adds work as more code needs to be centrally reviewed.\n\nHowever, the alternative is neither secure nor viable. To allow external implementation would require exporting symbols\npublic, such as the `CodeSection`, which can easily create bugs. Moreover, there's a high drift risk for any attempt at\nexternal implementations, compounded not just by wazero's code organization, but also the fast moving Wasm and WASI\nspecifications.\n\nFor example, implementing a compiler correctly requires expertise in Wasm, Golang and assembly. This requires deep\ninsight into how internals are meant to be structured and the various tiers of testing required for `wazero` to result\nin a high quality experience. Even if someone had these skills, supporting external code would introduce variables which\nare constants in the central one. Supporting an external codebase is harder on the project team, and could starve time\nfrom the already large burden on the central codebase.\n\nThe tradeoffs of internal packages are a larger codebase and responsibility to implement all standard features. It also\nimplies thinking about extension more as forking is not viable for reasons above also. The primary mitigation of these\nrealities are friendly OSS licensing, high rigor and a collaborative spirit which aim to make contribution in the shared\ncodebase productive.\n\n### Avoiding cyclic dependencies\n\nwazero shares constants and interfaces with internal code by a sharing pattern described below:\n* shared interfaces and constants go in one package under root: `api`.\n* user APIs and structs depend on `api` and go into the root package `wazero`.\n  * e.g. `InstantiateModule` -> `/wasm.go` depends on the type `api.Module`.\n* implementation code can also depend on `api` in a corresponding package under `/internal`.\n  * Ex  package `wasm` -> `/internal/wasm/*.go` and can depend on the type `api.Module`.\n\nThe above guarantees no cyclic dependencies at the cost of having to re-define symbols that exist in both packages.\nFor example, if `wasm.Store` is a type the user needs access to, it is narrowed by a cover type in the `wazero`:\n\n```go\ntype runtime struct {\n\ts *wasm.Store\n}\n```\n\nThis is not as bad as it sounds as mutations are only available via configuration. This means exported functions are\nlimited to only a few functions.\n\n### Avoiding security bugs\n\nIn order to avoid security flaws such as code insertion, nothing in the public API is permitted to write directly to any\nmutable symbol in the internal package. For example, the package `api` is shared with internal code. To ensure\nimmutability, the `api` package cannot contain any mutable public symbol, such as a slice or a struct with an exported\nfield.\n\nIn practice, this means shared functionality like memory mutation need to be implemented by interfaces.\n\nHere are some examples:\n* `api.Memory` protects access by exposing functions like `WriteFloat64Le` instead of exporting a buffer (`[]byte`).\n* There is no exported symbol for the `[]byte` representing the `CodeSection`\n\nBesides security, this practice prevents other bugs and allows centralization of validation logic such as decoding Wasm.\n\n## API Design\n\n### Why is `context.Context` inconsistent?\n\nIt may seem strange that only certain API have an initial `context.Context`\nparameter. We originally had a `context.Context` for anything that might be\ntraced, but it turned out to be only useful for lifecycle and host functions.\n\nFor instruction-scoped aspects like memory updates, a context parameter is too\nfine-grained and also invisible in practice. For example, most users will use\nthe compiler engine, and its memory, global or table access will never use go's\ncontext.\n\n### Why does `api.ValueType` map to uint64?\n\nWebAssembly allows functions to be defined either by the guest or the host,\nwith signatures expressed as WebAssembly types. For example, `i32` is a 32-bit\ntype which might be interpreted as signed. Function signatures can have zero or\nmore parameters or results even if WebAssembly 1.0 allows up to one result.\n\nThe guest can export functions, so that the host can call it. In the case of\nwazero, the host is Go and an exported function can be called via\n`api.Function`. `api.Function` allows users to supply parameters and read\nresults as a slice of uint64. For example, if there are no results, an empty\nslice is returned. The user can learn the signature via `FunctionDescription`,\nwhich returns the `api.ValueType` corresponding to each parameter or result.\n`api.ValueType` defines the mapping of WebAssembly types to `uint64` values for\nreason described in this section. The special case of `v128` is also mentioned\nbelow.\n\nwazero maps each value type to a uint64 values because it holds the largest\ntype in WebAssembly 1.0 (i64). A slice allows you to express empty (e.g. a\nnullary signature), for example a start function.\n\nHere's an example of calling a function, noting this syntax works for both a\nsignature `(param i32 i32) (result i32)` and `(param i64 i64) (result i64)`\n```go\nx, y := uint64(1), uint64(2)\nresults, err := mod.ExportedFunction(\"add\").Call(ctx, x, y)\nif err != nil {\n\tlog.Panicln(err)\n}\nfmt.Printf(\"%d + %d = %d\\n\", x, y, results[0])\n```\n\nWebAssembly does not define an encoding strategy for host defined parameters or\nresults. This means the encoding rules above are defined by wazero instead. To\naddress this, we clarified mapping both in `api.ValueType` and added helper\nfunctions like `api.EncodeF64`. This allows users conversions typical in Go\nprogramming, and utilities to avoid ambiguity and edge cases around casting.\n\nAlternatively, we could have defined a byte buffer based approach and a binary\nencoding of value types in and out. For example, an empty byte slice would mean\nno values, while a non-empty could use a binary encoding for supported values.\nThis could work, but it is more difficult for the normal case of i32 and i64.\nIt also shares a struggle with the current approach, which is that value types\nwere added after WebAssembly 1.0 and not all of them have an encoding. More on\nthis below.\n\nIn summary, wazero chose an approach for signature mapping because there was\nnone, and the one we chose biases towards simplicity with integers and handles\nthe rest with documentation and utilities.\n\n#### Post 1.0 value types\n\nValue types added after WebAssembly 1.0 stressed the current model, as some\nhave no encoding or are larger than 64 bits. While problematic, these value\ntypes are not commonly used in exported (extern) functions. However, some\ndecisions were made and detailed below.\n\nFor example `externref` has no guest representation. wazero chose to map\nreferences to uint64 as that's the largest value needed to encode a pointer on\nsupported platforms. While there are two reference types, `externref` and\n`functype`, the latter is an internal detail of function tables, and the former\nis rarely if ever used in function signatures as of the end of 2022.\n\nThe only value larger than 64 bits is used for SIMD (`v128`). Vectorizing via\nhost functions is not used as of the end of 2022. Even if it were, it would be\ninefficient vs guest vectorization due to host function overhead. In other\nwords, the `v128` value type is unlikely to be in an exported function\nsignature. That it requires two uint64 values to encode is an internal detail\nand not worth changing the exported function interface `api.Function`, as doing\nso would break all users.\n\n### Interfaces, not structs\n\nAll exported types in public packages, regardless of configuration vs runtime, are interfaces. The primary benefits are\ninternal flexibility and avoiding people accidentally mis-initializing by instantiating the types on their own vs using\nthe `NewXxx` constructor functions. In other words, there's less support load when things can't be done incorrectly.\n\nHere's an example:\n```go\nrt := &RuntimeConfig{} // not initialized properly (fields are nil which shouldn't be)\nrt := RuntimeConfig{} // not initialized properly (should be a pointer)\nrt := wazero.NewRuntimeConfig() // initialized properly\n```\n\nThere are a few drawbacks to this, notably some work for maintainers.\n* Interfaces are decoupled from the structs implementing them, which means the signature has to be repeated twice.\n* Interfaces have to be documented and guarded at time of use, that 3rd party implementations aren't supported.\n* As of Golang 1.21, interfaces are still [not well supported](https://github.com/golang/go/issues/5860) in godoc.\n\n## Config\n\nwazero configures scopes such as Runtime and Module using `XxxConfig` types. For example, `RuntimeConfig` configures\n`Runtime` and `ModuleConfig` configure `Module` (instantiation). In all cases, config types begin defaults and can be\ncustomized by a user, e.g., selecting features or a module name override.\n\n### Why don't we make each configuration setting return an error?\nNo config types create resources that would need to be closed, nor do they return errors on use. This helps reduce\nresource leaks, and makes chaining easier. It makes it possible to parse configuration (ex by parsing yaml) independent\nof validating it.\n\nInstead of:\n```\ncfg, err = cfg.WithFS(fs)\nif err != nil {\n  return err\n}\ncfg, err = cfg.WithName(name)\nif err != nil {\n  return err\n}\nmod, err = rt.InstantiateModuleWithConfig(ctx, code, cfg)\nif err != nil {\n  return err\n}\n```\n\nThere's only one call site to handle errors:\n```\ncfg = cfg.WithFS(fs).WithName(name)\nmod, err = rt.InstantiateModuleWithConfig(ctx, code, cfg)\nif err != nil {\n  return err\n}\n```\n\nThis allows users one place to look for errors, and also the benefit that if anything internally opens a resource, but\nerrs, there's nothing they need to close. In other words, users don't need to track which resources need closing on\npartial error, as that is handled internally by the only code that can read configuration fields.\n\n### Why are configuration immutable?\nWhile it seems certain scopes like `Runtime` won't repeat within a process, they do, possibly in different goroutines.\nFor example, some users create a new runtime for each module, and some re-use the same base module configuration with\nonly small updates (ex the name) for each instantiation. Making configuration immutable allows them to be safely used in\nany goroutine.\n\nSince config are immutable, changes apply via return val, similar to `append` in a slice.\n\nFor example, both of these are the same sort of error:\n```go\nappend(slice, element) // bug as only the return value has the updated slice.\ncfg.WithName(next) // bug as only the return value has the updated name.\n```\n\nHere's an example of correct use: re-assigning explicitly or via chaining.\n```go\ncfg = cfg.WithName(name) // explicit\n\nmod, err = rt.InstantiateModuleWithConfig(ctx, code, cfg.WithName(name)) // implicit\nif err != nil {\n  return err\n}\n```\n\n### Why aren't configuration assigned with option types?\nThe option pattern is a familiar one in Go. For example, someone defines a type `func (x X) err` and uses it to update\nthe target. For example, you could imagine wazero could choose to make `ModuleConfig` from options vs chaining fields.\n\nEx instead of:\n```go\ntype ModuleConfig interface {\n\tWithName(string) ModuleConfig\n\tWithFS(fs.FS) ModuleConfig\n}\n\nstruct moduleConfig {\n\tname string\n\tfs fs.FS\n}\n\nfunc (c *moduleConfig) WithName(name string) ModuleConfig {\n    ret := *c // copy\n    ret.name = name\n    return &ret\n}\n\nfunc (c *moduleConfig) WithFS(fs fs.FS) ModuleConfig {\n    ret := *c // copy\n    ret.setFS(\"/\", fs)\n    return &ret\n}\n\nconfig := r.NewModuleConfig().WithFS(fs)\nconfigDerived := config.WithName(\"name\")\n```\n\nAn option function could be defined, then refactor each config method into an name prefixed option function:\n```go\ntype ModuleConfig interface {\n}\nstruct moduleConfig {\n    name string\n    fs fs.FS\n}\n\ntype ModuleConfigOption func(c *moduleConfig)\n\nfunc ModuleConfigName(name string) ModuleConfigOption {\n    return func(c *moduleConfig) {\n        c.name = name\n\t}\n}\n\nfunc ModuleConfigFS(fs fs.FS) ModuleConfigOption {\n    return func(c *moduleConfig) {\n        c.fs = fs\n    }\n}\n\nfunc (r *runtime) NewModuleConfig(opts ...ModuleConfigOption) ModuleConfig {\n\tret := newModuleConfig() // defaults\n    for _, opt := range opts {\n        opt(&ret.config)\n    }\n    return ret\n}\n\nfunc (c *moduleConfig) WithOptions(opts ...ModuleConfigOption) ModuleConfig {\n    ret := *c // copy base config\n    for _, opt := range opts {\n        opt(&ret.config)\n    }\n    return ret\n}\n\nconfig := r.NewModuleConfig(ModuleConfigFS(fs))\nconfigDerived := config.WithOptions(ModuleConfigName(\"name\"))\n```\n\nwazero took the path of the former design primarily due to:\n* interfaces provide natural namespaces for their methods, which is more direct than functions with name prefixes.\n* parsing config into function callbacks is more direct vs parsing config into a slice of functions to do the same.\n* in either case derived config is needed and the options pattern is more awkward to achieve that.\n\nThere are other reasons such as test and debug being simpler without options: the above list is constrained to conserve\nspace. It is accepted that the options pattern is common in Go, which is the main reason for documenting this decision.\n\n### Why aren't config types deeply structured?\nwazero's configuration types cover the two main scopes of WebAssembly use:\n* `RuntimeConfig`: This is the broadest scope, so applies also to compilation\n  and instantiation. e.g. This controls the WebAssembly Specification Version.\n* `ModuleConfig`: This affects modules instantiated after compilation and what\n  resources are allowed. e.g. This defines how or if STDOUT is captured. This\n  also allows sub-configuration of `FSConfig`.\n\nThese default to a flat definition each, with lazy sub-configuration only after\nproven to be necessary. A flat structure is easier to work with and is also\neasy to discover. Unlike the option pattern described earlier, more\nconfiguration in the interface doesn't taint the package namespace, only\n`ModuleConfig`.\n\nWe default to a flat structure to encourage simplicity. If we eagerly broke out\nall possible configurations into sub-types (e.g. ClockConfig), it would be hard\nto notice configuration sprawl. By keeping the config flat, it is easy to see\nthe cognitive load we may be adding to our users.\n\nIn other words, discomfort adding more configuration is a feature, not a bug.\nWe should only add new configuration rarely, and before doing so, ensure it\nwill be used. In fact, this is why we support using context fields for\nexperimental configuration. By letting users practice, we can find out if a\nconfiguration was a good idea or not before committing to it, and potentially\nsprawling our types.\n\nIn reflection, this approach worked well for the nearly 1.5 year period leading\nto version 1.0. We've only had to create a single sub-configuration, `FSConfig`,\nand it was well understood why when it occurred.\n\n## Why does `ModuleConfig.WithStartFunctions` default to `_start`?\n\nWe formerly had functions like `StartWASICommand` that would verify\npreconditions and start WASI's `_start` command. However, this caused confusion\nbecause both many languages compiled a WASI dependency, and many did so\ninconsistently.\n\nThe conflict is that exported functions need to use features the language\nruntime provides, such as garbage collection. There's a \"chicken-egg problem\"\nwhere `_start` needs to complete in order for exported behavior to work.\n\nFor example, unlike `GOOS=wasip1` in Go 1.21, TinyGo's \"wasi\" target supports\nfunction exports. So, the only way to use FFI style is via the \"wasi\" target.\nNot explicitly calling `_start` before an ABI such as wapc-go, would crash, due\nto setup not happening (e.g. to implement `panic`). Other embedders such as\nEnvoy also called `_start` for the same reason. To avoid a common problem for\nusers unaware of WASI, and also to simplify normal use of WASI (e.g. `main`),\nwe added `_start` to `ModuleConfig.WithStartFunctions`.\n\nIn cases of multiple initializers, such as in wapc-go, users can override this\nto add the others *after* `_start`. Users who want to explicitly control\n`_start`, such as some of our unit tests, can clear the start functions and\nremove it.\n\nThis decision was made in 2022, and holds true in 2023, even with the\nintroduction of \"wasix\". It holds because \"wasix\" is backwards compatible with\n\"wasip1\". In the future, there will be other ways to start applications, and\nmay not be backwards compatible with \"wasip1\".\n\nMost notably WASI \"Preview 2\" is not implemented in a way compatible with\nwasip1. Its start function is likely to be different, and defined in the\nwasi-cli \"world\". When the design settles, and it is implemented by compilers,\nwazero will attempt to support \"wasip2\". However, it won't do so in a way that\nbreaks existing compilers.\n\nIn other words, we won't remove `_start` if \"wasip2\" continues a path of an\nalternate function name. If we did, we'd break existing users despite our\ncompatibility promise saying we don't. The most likely case is that when we\nbuild-in something incompatible with \"wasip1\", that start function will be\nadded to the start functions list in addition to `_start`.\n\nSee http://wasix.org\nSee https://github.com/WebAssembly/wasi-cli\n\n## Runtime == Engine+Store\nwazero defines a single user-type which combines the specification concept of `Store` with the unspecified `Engine`\nwhich manages them.\n\n### Why not multi-store?\nMulti-store isn't supported as the extra tier complicates lifecycle and locking. Moreover, in practice it is unusual for\nthere to be an engine that has multiple stores which have multiple modules. More often, it is the case that there is\neither 1 engine with 1 store and multiple modules, or 1 engine with many stores, each having 1 non-host module. In worst\ncase, a user can use multiple runtimes until \"multi-store\" is better understood.\n\nIf later, we have demand for multiple stores, that can be accomplished by overload. e.g. `Runtime.InstantiateInStore` or\n`Runtime.Store(name) Store`.\n\n## Exit\n\n### Why do we only return a `sys.ExitError` on a non-zero exit code?\n\nIt is reasonable to think an exit error should be returned, even if the code is\nsuccess (zero). Even on success, the module is no longer functional. For\nexample, function exports would error later. However, wazero does not. The only\ntime `sys.ExitError` is on error (non-zero).\n\nThis decision was to improve performance and ergonomics for guests that both\nuse WASI (have a `_start` function), and also allow custom exports.\nSpecifically, Rust, TinyGo and normal wasi-libc, don't exit the module during\n`_start`. If they did, it would invalidate their function exports. This means\nit is unlikely most compilers will change this behavior.\n\n`GOOS=waspi1` from Go 1.21 does exit during `_start`. However, it doesn't\nsupport other exports besides `_start`, and `_start` is not defined to be\ncalled multiple times anyway.\n\nSince `sys.ExitError` is not always returned, we added `Module.IsClosed` for\ndefensive checks. This helps integrators avoid calling functions which will\nalways fail.\n\n### Why panic with `sys.ExitError` after a host function exits?\n\nCurrently, the only portable way to stop processing code is via panic. For\nexample, WebAssembly \"trap\" instructions, such as divide by zero, are\nimplemented via panic. This ensures code isn't executed after it.\n\nWhen code reaches the WASI `proc_exit` instruction, we need to stop processing.\nRegardless of the exit code, any code invoked after exit would be in an\ninconsistent state. This is likely why unreachable instructions are sometimes\ninserted after exit: https://github.com/emscripten-core/emscripten/issues/12322\n\n## WASI\n\nUnfortunately, [WASI Snapshot Preview 1](https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md) is not formally defined enough, and has APIs with ambiguous semantics.\nThis section describes how Wazero interprets and implements the semantics of several WASI APIs that may be interpreted differently by different wasm runtimes.\nThose APIs may affect the portability of a WASI application.\n\n### Why don't we attempt to pass wasi-testsuite on user-defined `fs.FS`?\n\nWhile most cases work fine on an `os.File` based implementation, we won't\npromise wasi-testsuite compatibility on user defined wrappers of `os.DirFS`.\nThe only option for real systems is to use our `sysfs.FS`.\n\nThere are a lot of areas where windows behaves differently, despite the\n`os.File` abstraction. This goes well beyond file locking concerns (e.g.\n`EBUSY` errors on open files). For example, errors like `ACCESS_DENIED` aren't\nproperly mapped to `EPERM`. There are trickier parts too. `FileInfo.Sys()`\ndoesn't return enough information to build inodes needed for WASI. To rebuild\nthem requires the full path to the underlying file, not just its directory\nname, and there's no way for us to get that information. At one point we tried,\nbut in practice things became tangled and functionality such as read-only\nwrappers became untenable. Finally, there are version-specific behaviors which\nare difficult to maintain even in our own code. For example, go 1.20 opens\nfiles in a different way than versions before it.\n\n### Why aren't WASI rules enforced?\n\nThe [snapshot-01](https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md) version of WASI has a\nnumber of rules for a \"command module\", but only the memory export rule is enforced. If a \"_start\" function exists, it\nis enforced to be the correct signature and succeed, but the export itself isn't enforced. It follows that this means\nexports are not required to be contained to a \"_start\" function invocation. Finally, the \"__indirect_function_table\"\nexport is also not enforced.\n\nThe reason for the exceptions are that implementations aren't following the rules. For example, TinyGo doesn't export\n\"__indirect_function_table\", so crashing on this would make wazero unable to run TinyGo modules. Similarly, modules\nloaded by wapc-go don't always define a \"_start\" function. Since \"snapshot-01\" is not a proper version, and certainly\nnot a W3C recommendation, there's no sense in breaking users over matters like this.\n\n### Why is I/O configuration not coupled to WASI?\n\nWebAssembly System Interfaces (WASI) is a formalization of a practice that can be done anyway: Define a host function to\naccess a system interface, such as writing to STDOUT. WASI stalled at snapshot-01 and as of early 2023, is being\nrewritten entirely.\n\nThis instability implies a need to transition between WASI specs, which places wazero in a position that requires\ndecoupling. For example, if code uses two different functions to call `fd_write`, the underlying configuration must be\ncentralized and decoupled. Otherwise, calls using the same file descriptor number will end up writing to different\nplaces.\n\nIn short, wazero defined system configuration in `ModuleConfig`, not a WASI type. This allows end-users to switch from\none spec to another with minimal impact. This has other helpful benefits, as centralized resources are simpler to close\ncoherently (ex via `Module.Close`).\n\nIn reflection, this worked well as more ABI became usable in wazero.\n\n### Background on `ModuleConfig` design\n\nWebAssembly 1.0 (20191205) specifies some aspects to control isolation between modules ([sandboxing](https://en.wikipedia.org/wiki/Sandbox_(computer_security))).\nFor example, `wasm.Memory` has size constraints and each instance of it is isolated from each other. While `wasm.Memory`\ncan be shared, by exporting it, it is not exported by default. In fact a WebAssembly Module (Wasm) has no memory by\ndefault.\n\nWhile memory is defined in WebAssembly 1.0 (20191205), many aspects are not. Let's use an example of `exec.Cmd` as for\nexample, a WebAssembly System Interfaces (WASI) command is implemented as a module with a `_start` function, and in many\nways acts similar to a process with a `main` function.\n\nTo capture \"hello world\" written to the console (stdout a.k.a. file descriptor 1) in `exec.Cmd`, you would set the\n`Stdout` field accordingly, perhaps to a buffer. In WebAssembly 1.0 (20191205), the only way to perform something like\nthis is via a host function (ex `HostModuleFunctionBuilder`) and internally copy memory corresponding to that string\nto a buffer.\n\nWASI implements system interfaces with host functions. Concretely, to write to console, a WASI command `Module` imports\n\"fd_write\" from \"wasi_snapshot_preview1\" and calls it with the `fd` parameter set to 1 (STDOUT).\n\nThe [snapshot-01](https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md) version of WASI has no\nmeans to declare configuration, although its function definitions imply configuration for example if fd 1 should exist,\nand if so where should it write. Moreover, snapshot-01 was last updated in late 2020 and the specification is being\ncompletely rewritten as of early 2022. This means WASI as defined by \"snapshot-01\" will not clarify aspects like which\nfile descriptors are required. While it is possible a subsequent version may, it is too early to tell as no version of\nWASI has reached a stage near W3C recommendation. Even if it did, module authors are not required to only use WASI to\nwrite to console, as they can define their own host functions, such as they did before WASI existed.\n\nwazero aims to serve Go developers as a primary function, and help them transition between WASI specifications. In\norder to do this, we have to allow top-level configuration. To ensure isolation by default, `ModuleConfig` has WithXXX\nthat override defaults to no-op or empty. One `ModuleConfig` instance is used regardless of how many times the same WASI\nfunctions are imported. The nil defaults allow safe concurrency in these situations, as well lower the cost when they\nare never used. Finally, a one-to-one mapping with `Module` allows the module to close the `ModuleConfig` instead of\nconfusing users with another API to close.\n\nNaming, defaults and validation rules of aspects like `STDIN` and `Environ` are intentionally similar to other Go\nlibraries such as `exec.Cmd` or `syscall.SetEnv`, and differences called out where helpful. For example, there's no goal\nto emulate any operating system primitive specific to Windows (such as a 'c:\\' drive). Moreover, certain defaults\nworking with real system calls are neither relevant nor safe to inherit: For example, `exec.Cmd` defaults to read STDIN\nfrom a real file descriptor (\"/dev/null\"). Defaulting to this, vs reading `io.EOF`, would be unsafe as it can exhaust\nfile descriptors if resources aren't managed properly. In other words, blind copying of defaults isn't wise as it can\nviolate isolation or endanger the embedding process. In summary, we try to be similar to normal Go code, but often need\nact differently and document `ModuleConfig` is more about emulating, not necessarily performing real system calls.\n\n## File systems\n\n### Motivation on `sys.FS`\n\nThe `sys.FS` abstraction in wazero was created because of limitations in\n`fs.FS`, and `fs.File` in Go. Compilers targeting `wasip1` may access\nfunctionality that writes new files. The ability to overcome this was requested\neven before wazero was named this, via issue #21 in March 2021.\n\nA month later, golang/go#45757 was raised by someone else on the same topic. As\nof July 2023, this has not resolved to a writeable file system abstraction.\n\nOver the next year more use cases accumulated, consolidated in March 2022 into\n#390. This closed in January 2023 with a milestone of providing more\nfunctionality, limited to users giving a real directory. This didn't yet expose\na file abstraction for general purpose use. Internally, this used `os.File`.\nHowever, a wasm module instance is a virtual machine. Only supporting `os.File`\nbreaks sand-boxing use cases. Moreover, `os.File` is not an interface. Even\nthough this abstracts functionality, it does allow interception use cases.\n\nHence, a few days later in January 2023, we had more issues asking to expose an\nabstraction, #1013 and later #1532, on use cases like masking access to files.\nIn other words, the use case requests never stopped, and aren't solved by\nexposing only real files.\n\nIn summary, the primary motivation for exposing a replacement for `fs.FS` and\n`fs.File` was around repetitive use case requests for years, around\ninterception and the ability to create new files, both virtual and real files.\nWhile some use cases are solved with real files, not all are. Regardless, an\ninterface approach is necessary to ensure users can intercept I/O operations.\n\n### Why doesn't `sys.File` have a `Fd()` method?\n\nThere are many features we could expose. We could make File expose underlying\nfile descriptors in case they are supported, for integration of system calls\nthat accept multiple ones, namely `poll` for multiplexing. This special case is\ndescribed in a subsequent section.\n\nAs noted above, users have been asking for a file abstraction for over two\nyears, and a common answer was to wait. Making users wait is a problem,\nespecially so long. Good reasons to make people wait are stabilization. Edge\ncase features are not a great reason to hold abstractions from users.\n\nAnother reason is implementation difficulty. Go did not attempt to abstract\nfile descriptors. For example, unlike `fs.ReadFile` there is no `fs.FdFile`\ninterface. Most likely, this is because file descriptors are an implementation\ndetail of common features. Programming languages, including Go, do not require\nend users to know about file descriptors. Types such as `fs.File` can be used\nwithout any knowledge of them. Implementations may or may not have file\ndescriptors. For example, in Go, `os.DirFS` has underlying file descriptors\nwhile `embed.FS` does not.\n\nDespite this, some may want to expose a non-standard interface because\n`os.File` has `Fd() uintptr` to return a file descriptor. Mainly, this is\nhandy to integrate with `syscall` package functions (on `GOOS` values that\ndeclare them). Notice, though that `uintptr` is unsafe and not an abstraction.\nClose inspection will find some `os.File` types internally use `poll.FD`\ninstead, yet this is not possible to use abstractly because that type is not\nexposed. For example, `plan9` uses a different type than `poll.FD`. In other\nwords, even in real files, `Fd()` is not wholly portable, despite it being\nuseful on many operating systems with the `syscall` package.\n\nThe reasons above, why Go doesn't abstract `FdFile` interface are a subset of\nreasons why `sys.File` does not. If we exposed `File.Fd()` we not only would\nhave to declare all the edge cases that Go describes including impact of\nfinalizers, we would have to describe these in terms of virtualized files.\nThen, we would have to reason with this value vs our existing virtualized\n`sys.FileTable`, mapping whatever type we return to keys in that table, also\nin consideration of garbage collection impact. The combination of issues like\nthis could lead down a path of not implementing a file system abstraction at\nall, and instead a weak key mapped abstraction of the `syscall` package. Once\nwe finished with all the edge cases, we would have lost context of the original\nreason why we started.. simply to allow file write access!\n\nWhen wazero attempts to do more than what the Go programming language team, it\nhas to be carefully evaluated, to:\n* Be possible to implement at least for `os.File` backed files\n* Not be confusing or cognitively hard for virtual file systems and normal use.\n* Affordable: custom code is solely the responsible by the core team, a much\n  smaller group of individuals than who maintain the Go programming language.\n\nDue to problems well known in Go, consideration of the end users who constantly\nask for basic file system functionality, and the difficulty virtualizing file\ndescriptors at multiple levels, we don't expose `Fd()` and likely won't ever\nexpose `Fd()` on `sys.File`.\n\n### Why does `sys.File` have a `Poll()` method, while `sys.FS` does not?\n\nwazero exposes `File.Poll` which allows one-at-a-time poll use cases,\nrequested by multiple users. This not only includes abstract tests such as\nGo 1.21 `GOOS=wasip1`, but real use cases including python and container2wasm\nrepls, as well listen sockets. The main use cases is non-blocking poll on a\nsingle file. Being a single file, this has no risk of problems such as\nhead-of-line blocking, even when emulated.\n\nThe main use case of multi-poll are bidirectional network services, something\nnot used in `GOOS=wasip1` standard libraries, but could be in the future.\nMoving forward without a multi-poller allows wazero to expose its file system\nabstraction instead of continuing to hold back it back for edge cases. We'll\ncontinue discussion below regardless, as rationale was requested.\n\nYou can loop through multiple `sys.File`, using `File.Poll` to see if an event\nis ready, but there is a head-of-line blocking problem. If a long timeout is\nused, bad luck could have a file that has nothing to read or write before one\nthat does. This could cause more blocking than necessary, even if you could\npoll the others just after with a zero timeout. What's worse than this is if\nunlimited blocking was used (`timeout=-1`). The host implementations could use\ngoroutines to avoid this, but interrupting a \"forever\" poll is problematic. All\nof these are reasons to consider a multi-poll API, but do not require exporting\n`File.Fd()`.\n\nShould multi-poll becomes critical, `sys.FS` could expose a `Poll` function\nlike below, despite it being the non-portable, complicated if possible to\nimplement on all platforms and virtual file systems.\n```go\nready, errno := fs.Poll([]sys.PollFile{{f1, sys.POLLIN}, {f2, sys.POLLOUT}}, timeoutMillis)\n```\n\nA real filesystem could handle this by using an approach like the internal\n`unix.Poll` function in Go, passing file descriptors on unix platforms, or\nreturning `sys.ENOSYS` for unsupported operating systems. Implementation for\nvirtual files could have a strategy around timeout to avoid the worst case of\nhead-of-line blocking (unlimited timeout).\n\nLet's remember that when designing abstractions, it is not best to add an\ninterface for everything. Certainly, Go doesn't, as evidenced by them not\nexposing `poll.FD` in `os.File`! Such a multi-poll could be limited to\nbuilt-in filesystems in the wazero repository, avoiding complexity of trying to\nsupport and test this abstractly. This would still permit multiplexing for CLI\nusers, and also permit single file polling as exists now.\n\n### Why doesn't wazero implement the working directory?\n\nAn early design of wazero's API included a `WithWorkDirFS` which allowed\ncontrol over which file a relative path such as \"./config.yml\" resolved to,\nindependent of the root file system. This intended to help separate concerns\nlike mutability of files, but it didn't work and was removed.\n\nCompilers that target wasm act differently with regard to the working\ndirectory. For example, wasi-libc, used by TinyGo,\ntracks working directory changes in compiled wasm instead: initially \"/\" until\ncode calls `chdir`. Zig assumes the first pre-opened file descriptor is the\nworking directory.\n\nThe only place wazero can standardize a layered concern is via a host function.\nSince WASI doesn't use host functions to track the working directory, we can't\nstandardize the storage and initial value of it.\n\nMeanwhile, code may be able to affect the working directory by compiling\n`chdir` into their main function, using an argument or ENV for the initial\nvalue (possibly `PWD`). Those unable to control the compiled code should only\nuse absolute paths in configuration.\n\nSee\n* https://github.com/golang/go/blob/go1.20/src/syscall/fs_js.go#L324\n* https://github.com/WebAssembly/wasi-libc/pull/214#issue-673090117\n* https://github.com/ziglang/zig/blob/53a9ee699a35a3d245ab6d1dac1f0687a4dcb42c/src/main.zig#L32\n\n### Why ignore the error returned by io.Reader when n > 1?\n\nPer https://pkg.go.dev/io#Reader, if we receive an error, any bytes read should\nbe processed first. At the syscall abstraction (`fd_read`), the caller is the\nprocessor, so we can't process the bytes inline and also return the error (as\n`EIO`).\n\nLet's assume we want to return the bytes read on error to the caller. This\nimplies we at least temporarily ignore the error alongside them. The choice\nremaining is whether to persist the error returned with the read until a\npossible next call, or ignore the error.\n\nIf we persist an error returned, it would be coupled to a file descriptor, but\neffectively it is boolean as this case coerces to `EIO`. If we track a \"last\nerror\" on a file descriptor, it could be complicated for a couple reasons\nincluding whether the error is transient or permanent, or if the error would\napply to any FD operation, or just read. Finally, there may never be a\nsubsequent read as perhaps the bytes leading up to the error are enough to\nsatisfy the processor.\n\nThis decision boils down to whether or not to track an error bit per file\ndescriptor or not. If not, the assumption is that a subsequent operation would\nalso error, this time without reading any bytes.\n\nThe current opinion is to go with the simplest path, which is to return the\nbytes read and ignore the error the there were any. Assume a subsequent\noperation will err if it needs to. This helps reduce the complexity of the code\nin wazero and also accommodates the scenario where the bytes read are enough to\nsatisfy its processor.\n\n### File descriptor allocation strategy\n\nFile descriptor allocation currently uses a strategy similar the one implemented\nby unix systems: when opening a file, the lowest unused number is picked.\n\nThe WASI standard documents that programs cannot expect that file descriptor\nnumbers will be allocated with a lowest-first strategy, and they should instead\nassume the values will be random. Since _random_ is a very imprecise concept in\ncomputers, we technically satisfying the implementation with the descriptor\nallocation strategy we use in Wazero. We could imagine adding more _randomness_\nto the descriptor selection process, however this should never be used as a\nsecurity measure to prevent applications from guessing the next file number so\nthere are no strong incentives to complicate the logic.\n\n### Why does `FSConfig.WithDirMount` not match behaviour with `os.DirFS`?\n\nIt may seem that we should require any feature that seems like a standard\nlibrary in Go, to behave the same way as the standard library. Doing so would\npresent least surprise to Go developers. In the case of how we handle\nfilesystems, we break from that as it is incompatible with the expectations of\nWASI, the most commonly implemented filesystem ABI.\n\nThe main reason is that `os.DirFS` is a virtual filesystem abstraction while\nWASI is an abstraction over syscalls. For example, the signature of `fs.Open`\ndoes not permit use of flags. This creates conflict on what default behaviors\nto take when Go implemented `os.DirFS`. On the other hand, `path_open` can pass\nflags, and in fact tests require them to be honored in specific ways.\n\nThis conflict requires us to choose what to be more compatible with, and which\ntype of user to surprise the least. We assume there will be more developers\ncompiling code to wasm than developers of custom filesystem plugins, and those\ncompiling code to wasm will be better served if we are compatible with WASI.\nHence on conflict, we prefer WASI behavior vs the behavior of `os.DirFS`.\n\nSee https://github.com/WebAssembly/wasi-testsuite\nSee https://github.com/golang/go/issues/58141\n\n## Why is our `Readdir` function more like Go's `os.File` than POSIX `readdir`?\n\nAt one point we attempted to move from a bulk `Readdir` function to something\nmore like the POSIX `DIR` struct, exposing functions like `telldir`, `seekdir`\nand `readdir`. However, we chose the design more like `os.File.Readdir`,\nbecause it performs and fits wasip1 better.\n\n### wasip1/wasix\n\n`fd_readdir` in wasip1 (and so also wasix) is like `getdents` in Linux, not\n`readdir` in POSIX. `getdents` is more like Go's `os.File.Readdir`.\n\nWe currently have an internal type `sys.DirentCache` which only is used by\nwasip1 or wasix. When `HostModuleBuilder` adds support for instantiation state,\nwe could move this to the `wasi_snapshot_preview1` package. Meanwhile, all\nfilesystem code is internal anyway, so this special-case is acceptable.\n\n### wasip2\n\n`directory-entry-stream` in wasi-filesystem preview2 is defined in component\nmodel, not an ABI, but in wasmtime it is a consuming iterator. A consuming\niterator is easy to support with anything (like `Readdir(1)`), even if it is\ninefficient as you can neither bulk read nor skip. The implementation of the\npreview1 adapter (uses preview2) confirms this. They use a dirent cache similar\nin some ways to our `sysfs.DirentCache`. As there is no seek concept in\npreview2, they interpret the cookie as numeric and read on repeat entries when\na cache wasn't available. Note: we currently do not skip-read like this as it\nrisks buffering large directories, and no user has requested entries before the\ncache, yet.\n\nRegardless, wasip2 is not complete until the end of 2023. We can defer design\ndiscussion until after it is stable and after the reference impl wasmtime\nimplements it.\n\nSee\n * https://github.com/WebAssembly/wasi-filesystem/blob/ef9fc87c07323a6827632edeb6a7388b31266c8e/example-world.md#directory_entry_stream\n * https://github.com/bytecodealliance/wasmtime/blob/b741f7c79d72492d17ab8a29c8ffe4687715938e/crates/wasi/src/preview2/preview2/filesystem.rs#L286-L296\n * https://github.com/bytecodealliance/preview2-prototyping/blob/e4c04bcfbd11c42c27c28984948d501a3e168121/crates/wasi-preview1-component-adapter/src/lib.rs#L2131-L2137\n * https://github.com/bytecodealliance/preview2-prototyping/blob/e4c04bcfbd11c42c27c28984948d501a3e168121/crates/wasi-preview1-component-adapter/src/lib.rs#L936\n\n### wasip3\n\n`directory-entry-stream` is documented to change significantly in wasip3 moving\nfrom synchronous to synchronous streams. This is dramatically different than\nPOSIX `readdir` which is synchronous.\n\nRegardless, wasip3 is not complete until after wasip2, which means 2024 or\nlater. We can defer design discussion until after it is stable and after the\nreference impl wasmtime implements it.\n\nSee\n * https://github.com/WebAssembly/WASI/blob/ddfe3d1dda5d1473f37ecebc552ae20ce5fd319a/docs/WitInWasi.md#Streams\n * https://docs.google.com/presentation/d/1MNVOZ8hdofO3tI0szg_i-Yoy0N2QPU2C--LzVuoGSlE/edit#slide=id.g1270ef7d5b6_0_662\n\n### How do we implement `Pread` with an `fs.File`?\n\n`ReadAt` is the Go equivalent to `pread`: it does not affect, and is not\naffected by, the underlying file offset. Unfortunately, `io.ReaderAt` is not\nimplemented by all `fs.File`. For example, as of Go 1.19, `embed.openFile` does\nnot.\n\nThe initial implementation of `fd_pread` instead used `Seek`. To avoid a\nregression, we fall back to `io.Seeker` when `io.ReaderAt` is not supported.\n\nThis requires obtaining the initial file offset, seeking to the intended read\noffset, and resetting the file offset the initial state. If this final seek\nfails, the file offset is left in an undefined state. This is not thread-safe.\n\nWhile seeking per read seems expensive, the common case of `embed.openFile` is\nonly accessing a single int64 field, which is cheap.\n\n### Pre-opened files\n\nWASI includes `fd_prestat_get` and `fd_prestat_dir_name` functions used to\nlearn any directory paths for file descriptors open at initialization time.\n\nFor example, `__wasilibc_register_preopened_fd` scans any file descriptors past\nSTDERR (1) and invokes `fd_prestat_dir_name` to learn any path prefixes they\ncorrespond to. Zig's `preopensAlloc` does similar. These pre-open functions are\nnot used again after initialization.\n\nwazero supports stdio pre-opens followed by any mounts e.g `.:/`. The guest\npath is a directory and its name, e.g. \"/\" is returned by `fd_prestat_dir_name`\nfor file descriptor 3 (STDERR+1). The first longest match wins on multiple\npre-opens, which allows a path like \"/tmp\" to match regardless of order vs \"/\".\n\nSee\n * https://github.com/WebAssembly/wasi-libc/blob/a02298043ff551ce1157bc2ee7ab74c3bffe7144/libc-bottom-half/sources/preopens.c\n * https://github.com/ziglang/zig/blob/9cb06f3b8bf9ea6b5e5307711bc97328762d6a1d/lib/std/fs/wasi.zig#L50-L53\n\n### fd_prestat_dir_name\n\n`fd_prestat_dir_name` is a WASI function to return the path of the pre-opened\ndirectory of a file descriptor. It has the following three parameters, and the\nthird `path_len` has ambiguous semantics.\n\n* `fd`: a file descriptor\n* `path`: the offset for the result path\n* `path_len`: In wazero, `FdPrestatDirName` writes the result path string to\n  `path` offset for the exact length of `path_len`.\n\nWasmer considers `path_len` to be the maximum length instead of the exact\nlength that should be written.\nSee https://github.com/wasmerio/wasmer/blob/3463c51268ed551933392a4063bd4f8e7498b0f6/lib/wasi/src/syscalls/mod.rs#L764\n\nThe semantics in wazero follows that of wasmtime.\nSee https://github.com/bytecodealliance/wasmtime/blob/2ca01ae9478f199337cf743a6ab543e8c3f3b238/crates/wasi-common/src/snapshots/preview_1.rs#L578-L582\n\nTheir semantics match when `path_len` == the length of `path`, so in practice\nthis difference won't matter match.\n\n## fd_readdir\n\n### Why does \"wasi_snapshot_preview1\" require dot entries when POSIX does not?\n\nIn October 2019, WASI project knew requiring dot entries (\".\" and \"..\") was not\ndocumented in preview1, not required by POSIX and problematic to synthesize.\nFor example, Windows runtimes backed by `FindNextFileW` could not return these.\nA year later, the tag representing WASI preview 1 (`snapshot-01`) was made.\nThis did not include the requested change of making dot entries optional.\n\nThe `phases/snapshot/docs.md` document was altered in subsequent years in\nsignificant ways, often in lock-step with wasmtime or wasi-libc. In January\n2022, `sock_accept` was added to `phases/snapshot/docs.md`, a document later\nrenamed to later renamed to `legacy/preview1/docs.md`.\n\nAs a result, the ABI and behavior remained unstable: The `snapshot-01` tag was\nnot an effective basis of portability. A test suite was requested well before\nthis tag, in April 2019. Meanwhile, compliance had no meaning. Developers had\nto track changes to the latest doc, while clarifying with wasi-libc or wasmtime\nbehavior. This lack of stability could have permitted a fix to the dot entries\nproblem, just as it permitted changes desired by other users.\n\nIn November 2022, the wasi-testsuite project began and started solidifying\nexpectations. This quickly led to changes in runtimes and the spec doc. WASI\nbegan importing tests from wasmtime as required behaviors for all runtimes.\nSome changes implied changes to wasi-libc. For example, `readdir` began to\nimply inode fan-outs, which caused performance regressions. Most notably a\ntest merged in January required dot entries. Tests were merged without running\nagainst any runtime, and even when run ad-hoc only against Linux. Hence,\nportability issues mentioned over three years earlier did not trigger any\nfailure until wazero (which tests Windows) noticed.\n\nIn the same month, wazero requested to revert this change primarily because\nGo does not return them from `os.ReadDir`, and materializing them is\ncomplicated due to tests also requiring inodes. Moreover, they are discarded by\nnot just Go, but other common programming languages. This was rejected by the\nWASI lead for preview1, but considered for the completely different ABI named\npreview2.\n\nIn February 2023, the WASI chair declared that new rule requiring preview1 to\nreturn dot entries \"was decided by the subgroup as a whole\", citing meeting\nnotes. According to these notes, the WASI lead stated incorrectly that POSIX\nconformance required returning dot entries, something it explicitly says are\noptional. In other words, he said filtering them out would make Preview1\nnon-conforming, and asked if anyone objects to this. The co-chair was noted to\nsay \"Because there are existing P1 programs, we shouldn’t make changes like\nthis.\" No other were recorded to say anything.\n\nIn summary, preview1 was changed retrospectively to require dot entries and\npreview2 was changed to require their absence. This rule was reverse engineered\nfrom wasmtime tests, and affirmed on two false premises:\n\n* POSIX compliance requires dot entries\n  * POSIX literally says these are optional\n* WASI cannot make changes because there are existing P1 programs.\n  * Changes to Preview 1 happened before and after this topic.\n\nAs of June 2023, wasi-testsuite still only runs on Linux, so compliance of this\nrule on Windows is left to runtimes to decide to validate. The preview2 adapter\nuses fake cookies zero and one to refer to dot dirents, uses a real inode for\nthe dot(\".\") entry and zero inode for dot-dot(\"..\").\n\nSee https://github.com/WebAssembly/wasi-filesystem/issues/3\nSee https://github.com/WebAssembly/WASI/tree/snapshot-01\nSee https://github.com/WebAssembly/WASI/issues/9\nSee https://github.com/WebAssembly/WASI/pull/458\nSee https://github.com/WebAssembly/wasi-testsuite/pull/32\nSee https://github.com/WebAssembly/wasi-libc/pull/345\nSee https://github.com/WebAssembly/wasi-testsuite/issues/52\nSee https://github.com/WebAssembly/WASI/pull/516\nSee https://github.com/WebAssembly/meetings/blob/main/wasi/2023/WASI-02-09.md#should-preview1-fd_readdir-filter-out--and-\nSee https://github.com/bytecodealliance/preview2-prototyping/blob/e4c04bcfbd11c42c27c28984948d501a3e168121/crates/wasi-preview1-component-adapter/src/lib.rs#L1026-L1041\n\n### Why are dot (\".\") and dot-dot (\"..\") entries problematic?\n\nWhen reading a directory, dot (\".\") and dot-dot (\"..\") entries are problematic.\nFor example, Go does not return them from `os.ReadDir`, and materializing them\nis complicated (at least dot-dot is).\n\nA directory entry has stat information in it. The stat information includes\ninode which is used for comparing file equivalence. In the simple case of dot,\nwe could materialize a special entry to expose the same info as stat on the fd\nwould return. However, doing this and not doing dot-dot would cause confusion,\nand dot-dot is far more tricky. To back-fill inode information about a parent\ndirectory would be costly and subtle. For example, the pre-open (mount) of the\ndirectory may be different than its logical parent. This is easy to understand\nwhen considering the common case of mounting \"/\" and \"/tmp\" as pre-opens. To\nimplement \"..\" from \"/tmp\" requires information from a separate pre-open, this\nincludes state to even know the difference. There are easier edge cases as\nwell, such as the decision to not return \"..\" from a root path. In any case,\nthis should start to explain that faking entries when underlying stdlib doesn't\nreturn them is tricky and requires quite a lot of state.\n\nAnother issue is around the `Dirent.Off` value of a directory entry, sometimes\ncalled a \"cookie\" in Linux man pagers. When the host operating system or\nlibrary function does not return dot entries, to support functions such as\n`seekdir`, you still need a value for `Dirent.Off`. Naively, you can synthesize\nthese by choosing sequential offsets zero and one. However, POSIX strictly says\noffsets should be treated opaquely. The backing filesystem could use these to\nrepresent real entries. For example, a directory with one entry could use zero\nas the `Dirent.Off` value. If you also used zero for the \".\" dirent, there\nwould be a clash. This means if you synthesize `Dirent.Off` for any entry, you\nneed to synthesize this value for all entries. In practice, the simplest way is\nusing an incrementing number, such as done in the WASI preview2 adapter.\n\nWorking around these issues causes expense to all users of wazero, so we'd\nthen look to see if that would be justified or not. However, the most common\ncompilers involved in end user questions, as of early 2023 are TinyGo, Rust and\nZig. All of these compile code which ignores dot and dot-dot entries. In other\nwords, faking these entries would not only cost our codebase with complexity,\nbut it would also add unnecessary overhead as the values aren't commonly used.\n\nThe final reason why we might do this, is an end users or a specification\nrequiring us to. As of early 2023, no end user has raised concern over Go and\nby extension wazero not returning dot and dot-dot. The snapshot-01 spec of WASI\ndoes not mention anything on this point. Also, POSIX has the following to say,\nwhich summarizes to \"these are optional\"\n\n> The readdir() function shall not return directory entries containing empty names. If entries for dot or dot-dot exist, one entry shall be returned for dot and one entry shall be returned for dot-dot; otherwise, they shall not be returned.\n\nUnfortunately, as described above, the WASI project decided in early 2023 to\nrequire dot entries in both the spec and the wasi-testsuite. For only this\nreason, wazero adds overhead to synthesize dot entries despite it being\nunnecessary for most users.\n\nSee https://pubs.opengroup.org/onlinepubs/9699919799/functions/readdir.html\nSee https://github.com/golang/go/blob/go1.20/src/os/dir_unix.go#L108-L110\nSee https://github.com/bytecodealliance/preview2-prototyping/blob/e4c04bcfbd11c42c27c28984948d501a3e168121/crates/wasi-preview1-component-adapter/src/lib.rs#L1026-L1041\n\n### Why don't we pre-populate an inode for the dot-dot (\"..\") entry?\n\nWe only populate an inode for dot (\".\") because wasi-testsuite requires it, and\nwe likely already have it (because we cache it). We could attempt to populate\none for dot-dot (\"..\"), but chose not to.\n\nFirstly, wasi-testsuite does not require the inode of dot-dot, possibly because\nthe wasip2 adapter doesn't populate it (but we don't really know why).\n\nThe only other reason to populate it would be to avoid wasi-libc's stat fanout\nwhen it is missing. However, wasi-libc explicitly doesn't fan-out to lstat on\nthe \"..\" entry on a zero ino.\n\nFetching dot-dot's inode despite the above not only doesn't help wasi-libc, but\nit also hurts languages that don't use it, such as Go. These languages would\npay a stat syscall penalty even if they don't need the inode. In fact, Go\ndiscards both dot entries!\n\nIn summary, there are no significant upsides in attempting to pre-fetch\ndot-dot's inode, and there are downsides to doing it anyway.\n\nSee\n * https://github.com/WebAssembly/wasi-libc/blob/bd950eb128bff337153de217b11270f948d04bb4/libc-bottom-half/cloudlibc/src/libc/dirent/readdir.c#L87-L94\n * https://github.com/WebAssembly/wasi-testsuite/blob/main/tests/rust/src/bin/fd_readdir.rs#L108\n * https://github.com/bytecodealliance/preview2-prototyping/blob/e4c04bcfbd11c42c27c28984948d501a3e168121/crates/wasi-preview1-component-adapter/src/lib.rs#L1037\n\n### Why don't we require inodes to be non-zero?\n\nWe don't require a non-zero value for `Dirent.Ino` because doing so can prevent\na real one from resolving later via `Stat_t.Ino`.\n\nWe define `Ino` like `d_ino` in POSIX which doesn't special-case zero. It can\nbe zero for a few reasons:\n\n* The file is not a regular file or directory.\n* The underlying filesystem does not support inodes. e.g. embed:fs\n* A directory doesn't include inodes, but a later stat can. e.g. Windows\n* The backend is based on wasi-filesystem (a.k.a wasip2), which has\n  `directory_entry.inode` optional, and might remove it entirely.\n\nThere are other downsides to returning a zero inode in widely used compilers:\n\n* File equivalence utilities, like `os.SameFile` will not work.\n* wasi-libc's `wasip1` mode will call `lstat` and attempt to retrieve a\n  non-zero value (unless the entry is named \"..\").\n\nA new compiler may accidentally skip a `Dirent` with a zero `Ino` if emulating\na non-POSIX function and re-using `Dirent.Ino` for `d_fileno`.\n\n* Linux `getdents` doesn't define `d_fileno` must be non-zero\n* BSD `getdirentries` is implementation specific. For example, OpenBSD will\n  return dirents with a zero `d_fileno`, but Darwin will skip them.\n\nThe above shouldn't be a problem, even in the case of BSD, because `wasip1` is\ndefined more in terms of `getdents` than `getdirentries`. The bottom half of\neither should treat `wasip1` (or any similar ABI such as wasix or wasip2) as a\ndifferent operating system and either use different logic that doesn't skip, or\nsynthesize a fake non-zero `d_fileno` when `d_ino` is zero.\n\nHowever, this has been a problem. Go's `syscall.ParseDirent` utility is shared\nfor all `GOOS=unix`. For simplicity, this abstracts `direntIno` with data from\n`d_fileno` or `d_ino`, and drops if either are zero, even if `d_fileno` is the\nonly field with zero explicitly defined. This led to a change to special case\n`GOOS=wasip1` as otherwise virtual files would be unconditionally skipped.\n\nIn practice, this problem is rather unique due to so many compilers relying on\nwasi-libc, which tolerates a zero inode. For example, while issues were\nreported about the performance regression when wasi-libc began doing a fan-out\non zero `Dirent.Ino`, no issues were reported about dirents being dropped as a\nresult.\n\nIn summary, rather than complicating implementation and forcing non-zero inodes\nfor a rare case, we permit zero. We instead document this topic thoroughly, so\nthat emerging compilers can re-use the research and reference it on conflict.\nWe also document that `Ino` should be non-zero, so that users implementing that\nfield will attempt to get it.\n\nSee\n * https://github.com/WebAssembly/wasi-filesystem/pull/81\n * https://github.com/WebAssembly/wasi-libc/blob/bd950eb128bff337153de217b11270f948d04bb4/libc-bottom-half/cloudlibc/src/libc/dirent/readdir.c#L87-L94\n * https://linux.die.net/man/3/getdents\n * https://www.unix.com/man-page/osx/2/getdirentries/\n * https://man.openbsd.org/OpenBSD-5.4/getdirentries.2\n * https://github.com/golang/go/blob/go1.20/src/syscall/dirent.go#L60-L102\n * https://go-review.googlesource.com/c/go/+/507915\n\n## sys.Walltime and Nanotime\n\nThe `sys` package has two function types, `Walltime` and `Nanotime` for real\nand monotonic clock exports. The naming matches conventions used in Go.\n\n```go\nfunc time_now() (sec int64, nsec int32, mono int64) {\n\tsec, nsec = walltime()\n\treturn sec, nsec, nanotime()\n}\n```\n\nSplitting functions for wall and clock time allow implementations to choose\nwhether to implement the clock once (as in Go), or split them out.\n\nEach can be configured with a `ClockResolution`, although is it usually\nincorrect as detailed in a sub-heading below. The only reason for exposing this\nis to satisfy WASI:\n\nSee https://github.com/WebAssembly/wasi-clocks\n\n### Why default to fake time?\n\nWebAssembly has an implicit design pattern of capabilities based security. By\ndefaulting to a fake time, we reduce the chance of timing attacks, at the cost\nof requiring configuration to opt-into real clocks.\n\nSee https://gruss.cc/files/fantastictimers.pdf for an example attacks.\n\n### Why does fake time increase on reading?\n\nBoth the fake nanotime and walltime increase by 1ms on reading. Particularly in\nthe case of nanotime, this prevents spinning.\n\n### Why not `time.Clock`?\n\nwazero can't use `time.Clock` as a plugin for clock implementation as it is\nonly substitutable with build flags (`faketime`) and conflates wall and\nmonotonic time in the same call.\n\nGo's `time.Clock` was added monotonic time after the fact. For portability with\nprior APIs, a decision was made to combine readings into the same API call.\n\nSee https://go.googlesource.com/proposal/+/master/design/12914-monotonic.md\n\nWebAssembly time imports do not have the same concern. In fact even Go's\nimports for clocks split walltime from nanotime readings.\n\nSee https://github.com/golang/go/blob/go1.20/misc/wasm/wasm_exec.js#L243-L255\n\nFinally, Go's clock is not an interface. WebAssembly users who want determinism\nor security need to be able to substitute an alternative clock implementation\nfrom the host process one.\n\n### `ClockResolution`\n\nA clock's resolution is hardware and OS dependent so requires a system call to retrieve an accurate value.\nGo does not provide a function for getting resolution, so without CGO we don't have an easy way to get an actual\nvalue. For now, we return fixed values of 1us for realtime and 1ns for monotonic, assuming that realtime clocks are\noften lower precision than monotonic clocks. In the future, this could be improved by having OS+arch specific assembly\nto make syscalls.\n\nFor example, Go implements time.Now for linux-amd64 with this [assembly](https://github.com/golang/go/blob/go1.20/src/runtime/time_linux_amd64.s).\nBecause retrieving resolution is not generally called often, unlike getting time, it could be appropriate to only\nimplement the fallback logic that does not use VDSO (executing syscalls in user mode). The syscall for clock_getres\nis 229 and should be usable. https://pkg.go.dev/syscall#pkg-constants.\n\nIf implementing similar for Windows, [mingw](https://github.com/mirror/mingw-w64/blob/6a0e9165008f731bccadfc41a59719cf7c8efc02/mingw-w64-libraries/winpthreads/src/clock.c#L77\n) is often a good source to find the Windows API calls that correspond\nto a POSIX method.\n\nWriting assembly would allow making syscalls without CGO, but comes with the cost that it will require implementations\nacross many combinations of OS and architecture.\n\n## sys.Nanosleep\n\nAll major programming languages have a `sleep` mechanism to block for a\nduration. Sleep is typically implemented by a WASI `poll_oneoff` relative clock\nsubscription.\n\nFor example, the below ends up calling `wasi_snapshot_preview1.poll_oneoff`:\n\n```zig\nconst std = @import(\"std\");\npub fn main() !void {\n    std.time.sleep(std.time.ns_per_s * 5);\n}\n```\n\nBesides Zig, this is also the case with TinyGo (`-target=wasi`) and Rust\n(`--target wasm32-wasi`).\n\nWe decided to expose `sys.Nanosleep` to allow overriding the implementation\nused in the common case, even if it isn't used by Go, because this gives an\neasy and efficient closure over a common program function. We also documented\n`sys.Nanotime` to warn users that some compilers don't optimize sleep.\n\n## sys.Osyield\n\nWe expose `sys.Osyield`, to allow users to control the behavior of WASI's\n`sched_yield` without a new build of wazero. This is mainly for parity with\nall other related features which we allow users to implement, including\n`sys.Nanosleep`. Unlike others, we don't provide an out-of-box implementation\nprimarily because it will cause performance problems when accessed.\n\nFor example, the below implementation uses CGO, which might result in a 1us\ndelay per invocation depending on the platform.\n\nSee https://github.com/golang/go/issues/19409#issuecomment-284788196\n```go\n//go:noescape\n//go:linkname osyield runtime.osyield\nfunc osyield()\n```\n\nIn practice, a request to customize this is unlikely to happen until other\nthread based functions are implemented. That said, as of early 2023, there are\na few signs of implementation interest and cross-referencing:\n\nSee https://github.com/WebAssembly/stack-switching/discussions/38\nSee https://github.com/WebAssembly/wasi-threads#what-can-be-skipped\nSee https://slinkydeveloper.com/Kubernetes-controllers-A-New-Hope/\n\n## sys.Stat_t\n\nWe expose `stat` information as `sys.Stat_t`, like `syscall.Stat_t` except\ndefined without build constraints. For example, you can use `sys.Stat_t` on\n`GOOS=windows` which doesn't define `syscall.Stat_t`.\n\nThe first use case of this is to return inodes from `fs.FileInfo` without\nrelying on platform-specifics. For example, a user could return `*sys.Stat_t`\nfrom `info.Sys()` and define a non-zero inode for a virtual file, or map a\nreal inode to a virtual one.\n\nNotable choices per field are listed below, where `sys.Stat_t` is unlike\n`syscall.Stat_t` on `GOOS=linux`, or needs clarification. One common issue\nnot repeated below is that numeric fields are 64-bit when at least one platform\ndefines it that large. Also, zero values are equivalent to nil or absent.\n\n* `Dev` and `Ino` (`Inode`) are both defined unsigned as they are defined\n  opaque, and most `syscall.Stat_t` also defined them unsigned. There are\n  separate sections in this document discussing the impact of zero in `Ino`.\n* `Mode` is defined as a `fs.FileMode` even though that is not defined in POSIX\n  and will not map to all possible values. This is because the current use is\n  WASI, which doesn't define any types or features not already supported. By\n  using `fs.FileMode`, we can re-use routine experience in Go.\n* `NLink` is unsigned because it is defined that way in `syscall.Stat_t`: there\n  can never be less than zero links to a file. We suggest defaulting to 1 in\n  conversions when information is not knowable because at least that many links\n  exist.\n* `Size` is signed because it is defined that way in `syscall.Stat_t`: while\n  regular files and directories will always be non-negative, irregular files\n  are possibly negative or not defined. Notably sparse files are known to\n  return negative values.\n* `Atim`, `Mtim` and `Ctim` are signed because they are defined that way in\n  `syscall.Stat_t`: Negative values are time before 1970. The resolution is\n  nanosecond because that's the maximum resolution currently supported in Go.\n\n### Why do we use `sys.EpochNanos` instead of `time.Time` or similar?\n\nTo simplify documentation, we defined a type alias `sys.EpochNanos` for int64.\n`time.Time` is a data structure, and we could have used this for\n`syscall.Stat_t` time values. The most important reason we do not is conversion\npenalty deriving time from common types.\n\nThe most common ABI used in `wasip2`. This, and compatible ABI such as `wasix`,\nencode timestamps in memory as a 64-bit number. If we used `time.Time`, we\nwould have to convert an underlying type like `syscall.Timespec` to `time.Time`\nonly to later have to call `.UnixNano()` to convert it back to a 64-bit number.\n\nIn the future, the component model module \"wasi-filesystem\" may represent stat\ntimestamps with a type shared with \"wasi-clocks\", abstractly structured similar\nto `time.Time`. However, component model intentionally does not define an ABI.\nIt is likely that the canonical ABI for timestamp will be in two parts, but it\nis not required for it to be intermediately represented this way. A utility\nlike `syscall.NsecToTimespec` could split an int64 so that it could be written\nto memory as 96 bytes (int64, int32), without allocating a struct.\n\nFinally, some may confuse epoch nanoseconds with 32-bit epoch seconds. While\n32-bit epoch seconds has \"The year 2038\" problem, epoch nanoseconds has\n\"The Year 2262\" problem, which is even less concerning for this library. If\nthe Go programming language and wazero exist in the 2200's, we can make a major\nversion increment to adjust the `sys.EpochNanos` approach. Meanwhile, we have\nfaster code.\n\n## poll_oneoff\n\n`poll_oneoff` is a WASI API for waiting for I/O events on multiple handles.\nIt is conceptually similar to the POSIX `poll(2)` syscall.\nThe name is not `poll`, because it references [“the fact that this function is not efficient\nwhen used repeatedly with the same large set of handles”][poll_oneoff].\n\nWe chose to support this API in a handful of cases that work for regular files\nand standard input. We currently do not support other types of file descriptors such\nas socket handles.\n\n### Clock Subscriptions\n\nAs detailed above in [sys.Nanosleep](#sysnanosleep), `poll_oneoff` handles\nrelative clock subscriptions. In our implementation we use `sys.Nanosleep()`\nfor this purpose in most cases, except when polling for interactive input\nfrom `os.Stdin` (see more details below).\n\n### FdRead and FdWrite Subscriptions\n\nWhen subscribing a file descriptor (except `Stdin`) for reads or writes,\nthe implementation will generally return immediately with success, unless\nthe file descriptor is unknown. The file descriptor is not checked further\nfor new incoming data. Any timeout is cancelled, and the API call is able\nto return, unless there are subscriptions to `Stdin`: these are handled\nseparately.\n\n### FdRead and FdWrite Subscription to Stdin\n\nSubscribing `Stdin` for reads (writes make no sense and cause an error),\nrequires extra care: wazero allows to configure a custom reader for `Stdin`.\n\nIn general, if a custom reader is found, the behavior will be the same\nas for regular file descriptors: data is assumed to be present and\na success is written back to the result buffer.\n\nHowever, if the reader is detected to read from `os.Stdin`,\na special code path is followed, invoking `sysfs.poll()`.\n\n`sysfs.poll()` is a wrapper for `poll(2)` on POSIX systems,\nand it is emulated on Windows.\n\n### Poll on POSIX\n\nOn POSIX systems, `poll(2)` allows to wait for incoming data on a file\ndescriptor, and block until either data becomes available or the timeout\nexpires.\n\nUsage of `syfs.poll()` is currently only reserved for standard input, because\n\n1. it is really only necessary to handle interactive input: otherwise,\n   there is no way in Go to peek from Standard Input without actually\n   reading (and thus consuming) from it;\n\n2. if `Stdin` is connected to a pipe, it is ok in most cases to return\n   with success immediately;\n\n3. `syfs.poll()` is currently a blocking call, irrespective of goroutines,\n   because the underlying syscall is; thus, it is better to limit its usage.\n\nSo, if the subscription is for `os.Stdin` and the handle is detected\nto correspond to an interactive session, then `sysfs.poll()` will be\ninvoked with a the `Stdin` handle *and* the timeout.\n\nThis also means that in this specific case, the timeout is uninterruptible,\nunless data becomes available on `Stdin` itself.\n\n### Select on Windows\n\nOn Windows `sysfs.poll()` cannot be delegated to a single\nsyscall, because there is no single syscall to handle sockets,\npipes and regular files.\n\nInstead, we emulate its behavior for the cases that are currently\nof interest.\n\n- For regular files, we _always_ report them as ready, as\n[most operating systems do anyway][async-io-windows].\n\n- For pipes, we invoke [`PeekNamedPipe`][peeknamedpipe]\nfor each file handle we detect is a pipe open for reading.\nWe currently ignore pipes open for writing.\n\n- Notably, we include also support for sockets using the [WinSock\nimplementation of `poll`][wsapoll], but instead\nof relying on the timeout argument of the `WSAPoll` function,\nwe set a 0-duration timeout so that it behaves like a peek.\n\nThis way, we can check for regular files all at once,\nat the beginning of the function, then we poll pipes and\nsockets periodically using a cancellable `time.Tick`,\nwhich plays nicely with the rest of the Go runtime.\n\n### Impact of blocking\n\nBecause this is a blocking syscall, it will also block the carrier thread of\nthe goroutine, preventing any means to support context cancellation directly.\n\nThere are ways to obviate this issue. We outline here one idea, that is however\nnot currently implemented. A common approach to support context cancellation is\nto add a signal file descriptor to the set, e.g. the read-end of a pipe or an\neventfd on Linux. When the context is canceled, we may unblock a Select call by\nwriting to the fd, causing it to return immediately. This however requires to\ndo a bit of housekeeping to hide the \"special\" FD from the end-user.\n\n[poll_oneoff]: https://github.com/WebAssembly/wasi-poll#why-is-the-function-called-poll_oneoff\n[async-io-windows]: https://tinyclouds.org/iocp_links\n[peeknamedpipe]: https://learn.microsoft.com/en-us/windows/win32/api/namedpipeapi/nf-namedpipeapi-peeknamedpipe\n[wsapoll]: https://learn.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-wsapoll\n\n## Signed encoding of integer global constant initializers\n\nwazero treats integer global constant initializers signed as their interpretation is not known at declaration time. For\nexample, there is no signed integer [value type](https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#value-types%E2%91%A0).\n\nTo get at the problem, let's use an example.\n```\n(global (export \"start_epoch\") i64 (i64.const 1620216263544))\n```\n\nIn both signed and unsigned LEB128 encoding, this value is the same bit pattern. The problem is that some numbers are\nnot. For example, 16256 is `807f` encoded as unsigned, but `80ff00` encoded as signed.\n\nWhile the specification mentions uninterpreted integers are in abstract [unsigned values](https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#integers%E2%91%A0),\nthe binary encoding is clear that they are encoded [signed](https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#integers%E2%91%A4).\n\nFor consistency, we go with signed encoding in the special case of global constant initializers.\n\n## Implementation limitations\n\nWebAssembly 1.0 (20191205) specification allows runtimes to [limit certain aspects of Wasm module or execution](https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#a2-implementation-limitations).\n\nwazero limitations are imposed pragmatically and described below.\n\n### Number of functions in a module\n\nThe possible number of function instances in [a module](https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#module-instances%E2%91%A0) is not specified in the WebAssembly specifications since [`funcaddr`](https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#syntax-funcaddr) corresponding to a function instance in a store can be arbitrary number.\nwazero limits the maximum function instances to 2^27 as even that number would occupy 1GB in function pointers.\n\nThat is because not only we _believe_ that all use cases are fine with the limitation, but also we have no way to test wazero runtimes under these unusual circumstances.\n\n### Number of function types in a store\n\nThere's no limitation on the number of function types in [a store](https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#store%E2%91%A0) according to the spec. In wazero implementation, we assign each function type to a unique ID, and choose to use `uint32` to represent the IDs.\nTherefore the maximum number of function types a store can have is limited to 2^27 as even that number would occupy 512MB just to reference the function types.\n\nThis is due to the same reason for the limitation on the number of functions above.\n\n### Number of values on the stack in a function\n\nWhile the the spec does not clarify a limitation of function stack values, wazero limits this to 2^27 = 134,217,728.\nThe reason is that we internally represent all the values as 64-bit integers regardless of its types (including f32, f64), and 2^27 values means\n1 GiB = (2^30). 1 GiB is the reasonable for most applications [as we see a Goroutine has 250 MB as a limit on the stack for 32-bit arch](https://github.com/golang/go/blob/go1.20/src/runtime/proc.go#L152-L159), considering that WebAssembly is (currently) 32-bit environment.\n\nAll the functions are statically analyzed at module instantiation phase, and if a function can potentially reach this limit, an error is returned.\n\n### Number of globals in a module\n\nTheoretically, a module can declare globals (including imports) up to 2^32 times. However, wazero limits this to  2^27(134,217,728) per module.\nThat is because internally we store globals in a slice with pointer types (meaning 8 bytes on 64-bit platforms), and therefore 2^27 globals\nmeans that we have 1 GiB size of slice which seems large enough for most applications.\n\n### Number of tables in a module\n\nWhile the the spec says that a module can have up to 2^32 tables, wazero limits this to 2^27 = 134,217,728.\nOne of the reasons is even that number would occupy 1GB in the pointers tables alone. Not only that, we access tables slice by\ntable index by using 32-bit signed offset in the compiler implementation, which means that the table index of 2^27 can reach 2^27 * 8 (pointer size on 64-bit machines) = 2^30 offsets in bytes.\n\nWe _believe_ that all use cases are fine with the limitation, but also note that we have no way to test wazero runtimes under these unusual circumstances.\n\nIf a module reaches this limit, an error is returned at the compilation phase.\n\n## Compiler engine implementation\n\n### Why it's safe to execute runtime-generated machine codes against async Goroutine preemption\n\nGoroutine preemption is the mechanism of the Go runtime to switch goroutines contexts on an OS thread.\nThere are two types of preemption: cooperative preemption and async preemption. The former happens, for example,\nwhen making a function call, and it is not an issue for our runtime-generated functions as they do not make\ndirect function calls to Go-implemented functions. On the other hand, the latter, async preemption, can be problematic\nsince it tries to interrupt the execution of Goroutine at any point of function, and manipulates CPU register states.\n\nFortunately, our runtime-generated machine codes do not need to take the async preemption into account.\nAll the assembly codes are entered via the trampoline implemented as Go Assembler Function (e.g. [arch_amd64.s](./arch_amd64.s)),\nand as of Go 1.20, these assembler functions are considered as _unsafe_ for async preemption:\n- https://github.com/golang/go/blob/go1.20rc1/src/runtime/preempt.go#L406-L407\n- https://github.com/golang/go/blob/9f0234214473dfb785a5ad84a8fc62a6a395cbc3/src/runtime/traceback.go#L227\n\nFrom the Go runtime point of view, the execution of runtime-generated machine codes is considered as a part of\nthat trampoline function. Therefore, runtime-generated machine code is also correctly considered unsafe for async preemption.\n\n## Why context cancellation is handled in Go code rather than native code\n\nSince [wazero v1.0.0-pre.9](https://github.com/tetratelabs/wazero/releases/tag/v1.0.0-pre.9), the runtime\nsupports integration with Go contexts to interrupt execution after a timeout, or in response to explicit cancellation.\nThis support is internally implemented as a special opcode `builtinFunctionCheckExitCode` that triggers the execution of\na Go function (`ModuleInstance.FailIfClosed`) that atomically checks a sentinel value at strategic points in the code.\n\n[It _is indeed_ possible to check the sentinel value directly, without leaving the native world][native_check], thus sparing some cycles;\nhowever, because native code never preempts (see section above), this may lead to a state where the other goroutines\nnever get the chance to run, and thus never get the chance to set the sentinel value; effectively preventing\ncancellation from taking place.\n\n[native_check]: https://github.com/tetratelabs/wazero/issues/1409\n\n## Golang patterns\n\n### Hammer tests\nCode that uses concurrency primitives, such as locks or atomics, should include \"hammer tests\", which run large loops\ninside a bounded amount of goroutines, run by half that many `GOMAXPROCS`. These are named consistently \"hammer\", so\nthey are easy to find. The name inherits from some existing tests in [golang/go](https://github.com/golang/go/search?q=hammer&type=code).\n\nHere is an annotated description of the key pieces of a hammer test:\n1. `P` declares the count of goroutines to use, defaulting to 8 or 4 if `testing.Short`.\n   * Half this amount are the cores used, and 4 is less than a modern laptop's CPU. This allows multiple \"hammer\" tests to run in parallel.\n2. `N` declares the scale of work (loop) per goroutine, defaulting to value that finishes in ~0.1s on a modern laptop.\n   * When in doubt, try 1000 or 100 if `testing.Short`\n   * Remember, there are multiple hammer tests and CI nodes are slow. Slower tests hurt feedback loops.\n3. `defer runtime.GOMAXPROCS(runtime.GOMAXPROCS(P/2))` makes goroutines switch cores, testing visibility of shared data.\n4. To ensure goroutines execute at the same time, block them with `sync.WaitGroup`, initialized to `Add(P)`.\n   * `sync.WaitGroup` internally uses `runtime_Semacquire` not available in any other library.\n   * `sync.WaitGroup.Add` with a negative value can unblock many goroutines at the same time, e.g. without a for loop.\n5. Track goroutines progress via `finished := make(chan int)` where each goroutine in `P` defers `finished <- 1`.\n   1. Tests use `require.XXX`, so `recover()` into `t.Fail` in a `defer` function before `finished <- 1`.\n      * This makes it easier to spot larger concurrency problems as you see each failure, not just the first.\n   2. After the `defer` function, await unblocked, then run the stateful function `N` times in a normal loop.\n      * This loop should trigger shared state problems as locks or atomics are contended by `P` goroutines.\n6. After all `P` goroutines launch, atomically release all of them with `WaitGroup.Add(-P)`.\n7. Block the runner on goroutine completion, by (`<-finished`) for each `P`.\n8. When all goroutines complete, `return` if `t.Failed()`, otherwise perform follow-up state checks.\n\nThis is implemented in wazero in [hammer.go](internal/testing/hammer/hammer.go)\n\n### Lock-free, cross-goroutine observations of updates\n\nHow to achieve cross-goroutine reads of a variable are not explicitly defined in https://go.dev/ref/mem. wazero uses\natomics to implement this following unofficial practice. For example, a `Close` operation can be guarded to happen only\nonce via compare-and-swap (CAS) against a zero value. When we use this pattern, we consistently use atomics to both\nread and update the same numeric field.\n\nIn lieu of formal documentation, we infer this pattern works from other sources (besides tests):\n * `sync.WaitGroup` by definition must support calling `Add` from other goroutines. Internally, it uses atomics.\n * rsc in golang/go#5045 writes \"atomics guarantee sequential consistency among the atomic variables\".\n\nSee https://github.com/golang/go/blob/go1.20/src/sync/waitgroup.go#L64\nSee https://github.com/golang/go/issues/5045#issuecomment-252730563\nSee https://www.youtube.com/watch?v=VmrEG-3bWyM\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/README.md",
    "content": "# wazero: the zero dependency WebAssembly runtime for Go developers\n\n[![Go Reference](https://pkg.go.dev/badge/github.com/tetratelabs/wazero.svg)](https://pkg.go.dev/github.com/tetratelabs/wazero) [![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n\nWebAssembly is a way to safely run code compiled in other languages. Runtimes\nexecute WebAssembly Modules (Wasm), which are most often binaries with a `.wasm`\nextension.\n\nwazero is a WebAssembly Core Specification [1.0][1] and [2.0][2] compliant\nruntime written in Go. It has *zero dependencies*, and doesn't rely on CGO.\nThis means you can run applications in other languages and still keep cross\ncompilation.\n\nImport wazero and extend your Go application with code written in any language!\n\n## Example\n\nThe best way to learn wazero is by trying one of our [examples](examples/README.md). The\nmost [basic example](examples/basic) extends a Go application with an addition\nfunction defined in WebAssembly.\n\n## Runtime\n\nThere are two runtime configurations supported in wazero: _Compiler_ is default:\n\nBy default, ex `wazero.NewRuntime(ctx)`, the Compiler is used if supported. You\ncan also force the interpreter like so:\n```go\nr := wazero.NewRuntimeWithConfig(ctx, wazero.NewRuntimeConfigInterpreter())\n```\n\n### Interpreter\nInterpreter is a naive interpreter-based implementation of Wasm virtual\nmachine. Its implementation doesn't have any platform (GOARCH, GOOS) specific\ncode, therefore _interpreter_ can be used for any compilation target available\nfor Go (such as `riscv64`).\n\n### Compiler\nCompiler compiles WebAssembly modules into machine code ahead of time (AOT),\nduring `Runtime.CompileModule`. This means your WebAssembly functions execute\nnatively at runtime. Compiler is faster than Interpreter, often by order of\nmagnitude (10x) or more. This is done without host-specific dependencies.\n\n### Conformance\n\nBoth runtimes pass WebAssembly Core [1.0][3] and [2.0][4] specification tests\non supported platforms:\n\n|   Runtime   |                 Usage                  | amd64 | arm64 | others |\n|:-----------:|:--------------------------------------:|:-----:|:-----:|:------:|\n| Interpreter | `wazero.NewRuntimeConfigInterpreter()` |   ✅   |   ✅   |   ✅    |\n|  Compiler   |  `wazero.NewRuntimeConfigCompiler()`   |   ✅   |   ✅   |   ❌    |\n\n## Support Policy\n\nThe below support policy focuses on compatibility concerns of those embedding\nwazero into their Go applications.\n\n### wazero\n\nwazero's [1.0 release][8] happened in March 2023, and is [in use][9] by many\nprojects and production sites.\n\nWe offer an API stability promise with semantic versioning. In other words, we\npromise to not break any exported function signature without incrementing the\nmajor version. This does not mean no innovation: New features and behaviors\nhappen with a minor version increment, e.g. 1.0.11 to 1.2.0. We also fix bugs\nor change internal details with a patch version, e.g. 1.0.0 to 1.0.1.\n\nYou can get the latest version of wazero like this.\n```bash\ngo get github.com/tetratelabs/wazero@latest\n```\n\nPlease give us a [star][10] if you end up using wazero!\n\n### Go\n\nwazero has no dependencies except Go, so the only source of conflict in your\nproject's use of wazero is the Go version.\n\nwazero follows the same version policy as Go's [Release Policy][5]: two\nversions. wazero will ensure these versions work and bugs are valid if there's\nan issue with a current Go version.\n\nAdditionally, wazero intentionally delays usage of language or standard library\nfeatures one additional version. For example, when Go 1.29 is released, wazero\ncan use language features or standard libraries added in 1.27. This is a\nconvenience for embedders who have a slower version policy than Go. However,\nonly supported Go versions may be used to raise support issues.\n\n### Platform\n\nwazero has two runtime modes: Interpreter and Compiler. The only supported operating\nsystems are ones we test, but that doesn't necessarily mean other operating\nsystem versions won't work.\n\nWe currently test Linux (Ubuntu and scratch), MacOS and Windows as packaged by\n[GitHub Actions][6], as well as nested VMs running on Linux for FreeBSD, NetBSD,\nOpenBSD, DragonFly BSD, illumos and Solaris.\n\nWe also test cross compilation for many `GOOS` and `GOARCH` combinations.\n\n* Interpreter\n  * Linux is tested on amd64 and arm64 (native) as well as riscv64 via emulation.\n  * Windows, FreeBSD, NetBSD, OpenBSD, DragonFly BSD, illumos and Solaris are\n    tested only on amd64.\n  * macOS is tested only on arm64.\n* Compiler\n  * Linux is tested on amd64 and arm64.\n  * Windows, FreeBSD, NetBSD, DragonFly BSD, illumos and Solaris are\n    tested only on amd64.\n  * macOS is tested only on arm64.\n\nwazero has no dependencies and doesn't require CGO. This means it can also be\nembedded in an application that doesn't use an operating system. This is a main\ndifferentiator between wazero and alternatives.\n\nWe verify zero dependencies by running tests in Docker's [scratch image][7].\nThis approach ensures compatibility with any parent image.\n\n### macOS code-signing entitlements\n\nIf you're developing for macOS and need to code-sign your application,\nplease read issue [#2393][11].\n\n-----\nwazero is a registered trademark of Tetrate.io, Inc. in the United States and/or other countries\n\n[1]: https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/\n[2]: https://www.w3.org/TR/2022/WD-wasm-core-2-20220419/\n[3]: https://github.com/WebAssembly/spec/tree/wg-1.0/test/core\n[4]: https://github.com/WebAssembly/spec/tree/d39195773112a22b245ffbe864bab6d1182ccb06/test/core\n[5]: https://go.dev/doc/devel/release\n[6]: https://github.com/actions/virtual-environments\n[7]: https://docs.docker.com/develop/develop-images/baseimages/#create-a-simple-parent-image-using-scratch\n[8]: https://tetrate.io/blog/introducing-wazero-from-tetrate/\n[9]: https://wazero.io/community/users/\n[10]: https://github.com/wazero/wazero/stargazers\n[11]: https://github.com/wazero/wazero/issues/2393\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/api/features.go",
    "content": "package api\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n)\n\n// CoreFeatures is a bit flag of WebAssembly Core specification features. See\n// https://github.com/WebAssembly/proposals for proposals and their status.\n//\n// Constants define individual features, such as CoreFeatureMultiValue, or\n// groups of \"finished\" features, assigned to a WebAssembly Core Specification\n// version, e.g. CoreFeaturesV1 or CoreFeaturesV2.\n//\n// Note: Numeric values are not intended to be interpreted except as bit flags.\ntype CoreFeatures uint64\n\n// CoreFeaturesV1 are features included in the WebAssembly Core Specification\n// 1.0. As of late 2022, this is the only version that is a Web Standard (W3C\n// Recommendation).\n//\n// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/\nconst CoreFeaturesV1 = CoreFeatureMutableGlobal\n\n// CoreFeaturesV2 are features included in the WebAssembly Core Specification\n// 2.0 (20220419). As of late 2022, version 2.0 is a W3C working draft, not yet\n// a Web Standard (W3C Recommendation).\n//\n// See https://www.w3.org/TR/2022/WD-wasm-core-2-20220419/appendix/changes.html#release-1-1\nconst CoreFeaturesV2 = CoreFeaturesV1 |\n\tCoreFeatureBulkMemoryOperations |\n\tCoreFeatureMultiValue |\n\tCoreFeatureNonTrappingFloatToIntConversion |\n\tCoreFeatureReferenceTypes |\n\tCoreFeatureSignExtensionOps |\n\tCoreFeatureSIMD\n\nconst (\n\t// CoreFeatureBulkMemoryOperations adds instructions modify ranges of\n\t// memory or table entries (\"bulk-memory-operations\"). This is included in\n\t// CoreFeaturesV2, but not CoreFeaturesV1.\n\t//\n\t// Here are the notable effects:\n\t//   - Adds `memory.fill`, `memory.init`, `memory.copy` and `data.drop`\n\t//     instructions.\n\t//   - Adds `table.init`, `table.copy` and `elem.drop` instructions.\n\t//   - Introduces a \"passive\" form of element and data segments.\n\t//   - Stops checking \"active\" element and data segment boundaries at\n\t//     compile-time, meaning they can error at runtime.\n\t//\n\t// Note: \"bulk-memory-operations\" is mixed with the \"reference-types\"\n\t// proposal due to the WebAssembly Working Group merging them\n\t// \"mutually dependent\". Therefore, enabling this feature requires enabling\n\t// CoreFeatureReferenceTypes, and vice-versa.\n\t//\n\t// See https://github.com/WebAssembly/spec/blob/wg-2.0.draft1/proposals/bulk-memory-operations/Overview.md\n\t// https://github.com/WebAssembly/spec/blob/wg-2.0.draft1/proposals/reference-types/Overview.md and\n\t// https://github.com/WebAssembly/spec/pull/1287\n\tCoreFeatureBulkMemoryOperations CoreFeatures = 1 << iota\n\n\t// CoreFeatureMultiValue enables multiple values (\"multi-value\"). This is\n\t// included in CoreFeaturesV2, but not CoreFeaturesV1.\n\t//\n\t// Here are the notable effects:\n\t//   - Function (`func`) types allow more than one result.\n\t//   - Block types (`block`, `loop` and `if`) can be arbitrary function\n\t//     types.\n\t//\n\t// See https://github.com/WebAssembly/spec/blob/wg-2.0.draft1/proposals/multi-value/Overview.md\n\tCoreFeatureMultiValue\n\n\t// CoreFeatureMutableGlobal allows globals to be mutable. This is included\n\t// in both CoreFeaturesV1 and CoreFeaturesV2.\n\t//\n\t// When false, an api.Global can never be cast to an api.MutableGlobal, and\n\t// any wasm that includes global vars will fail to parse.\n\tCoreFeatureMutableGlobal\n\n\t// CoreFeatureNonTrappingFloatToIntConversion enables non-trapping\n\t// float-to-int conversions (\"nontrapping-float-to-int-conversion\"). This\n\t// is included in CoreFeaturesV2, but not CoreFeaturesV1.\n\t//\n\t// The only effect of enabling is allowing the following instructions,\n\t// which return 0 on NaN instead of panicking.\n\t//   - `i32.trunc_sat_f32_s`\n\t//   - `i32.trunc_sat_f32_u`\n\t//   - `i32.trunc_sat_f64_s`\n\t//   - `i32.trunc_sat_f64_u`\n\t//   - `i64.trunc_sat_f32_s`\n\t//   - `i64.trunc_sat_f32_u`\n\t//   - `i64.trunc_sat_f64_s`\n\t//   - `i64.trunc_sat_f64_u`\n\t//\n\t// See https://github.com/WebAssembly/spec/blob/wg-2.0.draft1/proposals/nontrapping-float-to-int-conversion/Overview.md\n\tCoreFeatureNonTrappingFloatToIntConversion\n\n\t// CoreFeatureReferenceTypes enables various instructions and features\n\t// related to table and new reference types. This is included in\n\t// CoreFeaturesV2, but not CoreFeaturesV1.\n\t//\n\t//   - Introduction of new value types: `funcref` and `externref`.\n\t//   - Support for the following new instructions:\n\t//     - `ref.null`\n\t//     - `ref.func`\n\t//     - `ref.is_null`\n\t//     - `table.fill`\n\t//     - `table.get`\n\t//     - `table.grow`\n\t//     - `table.set`\n\t//     - `table.size`\n\t//   - Support for multiple tables per module:\n\t//     - `call_indirect`, `table.init`, `table.copy` and `elem.drop`\n\t//   - Support for instructions can take non-zero table index.\n\t//     - Element segments can take non-zero table index.\n\t//\n\t// Note: \"reference-types\" is mixed with the \"bulk-memory-operations\"\n\t// proposal due to the WebAssembly Working Group merging them\n\t// \"mutually dependent\". Therefore, enabling this feature requires enabling\n\t// CoreFeatureBulkMemoryOperations, and vice-versa.\n\t//\n\t// See https://github.com/WebAssembly/spec/blob/wg-2.0.draft1/proposals/bulk-memory-operations/Overview.md\n\t// https://github.com/WebAssembly/spec/blob/wg-2.0.draft1/proposals/reference-types/Overview.md and\n\t// https://github.com/WebAssembly/spec/pull/1287\n\tCoreFeatureReferenceTypes\n\n\t// CoreFeatureSignExtensionOps enables sign extension instructions\n\t// (\"sign-extension-ops\"). This is included in CoreFeaturesV2, but not\n\t// CoreFeaturesV1.\n\t//\n\t// Adds instructions:\n\t//   - `i32.extend8_s`\n\t//   - `i32.extend16_s`\n\t//   - `i64.extend8_s`\n\t//   - `i64.extend16_s`\n\t//   - `i64.extend32_s`\n\t//\n\t// See https://github.com/WebAssembly/spec/blob/wg-2.0.draft1/proposals/sign-extension-ops/Overview.md\n\tCoreFeatureSignExtensionOps\n\n\t// CoreFeatureSIMD enables the vector value type and vector instructions\n\t// (aka SIMD). This is included in CoreFeaturesV2, but not CoreFeaturesV1.\n\t//\n\t// Note: The instruction list is too long to enumerate in godoc.\n\t// See https://github.com/WebAssembly/spec/blob/wg-2.0.draft1/proposals/simd/SIMD.md\n\tCoreFeatureSIMD\n\n\t// Update experimental/features.go when adding elements here.\n)\n\n// SetEnabled enables or disables the feature or group of features.\nfunc (f CoreFeatures) SetEnabled(feature CoreFeatures, val bool) CoreFeatures {\n\tif val {\n\t\treturn f | feature\n\t}\n\treturn f &^ feature\n}\n\n// IsEnabled returns true if the feature (or group of features) is enabled.\nfunc (f CoreFeatures) IsEnabled(feature CoreFeatures) bool {\n\treturn f&feature != 0\n}\n\n// RequireEnabled returns an error if the feature (or group of features) is not\n// enabled.\nfunc (f CoreFeatures) RequireEnabled(feature CoreFeatures) error {\n\tif f&feature == 0 {\n\t\treturn fmt.Errorf(\"feature %q is disabled\", feature)\n\t}\n\treturn nil\n}\n\n// String implements fmt.Stringer by returning each enabled feature.\nfunc (f CoreFeatures) String() string {\n\tvar builder strings.Builder\n\tfor i := 0; i <= 63; i++ { // cycle through all bits to reduce code and maintenance\n\t\ttarget := CoreFeatures(1 << i)\n\t\tif f.IsEnabled(target) {\n\t\t\tif name := featureName(target); name != \"\" {\n\t\t\t\tif builder.Len() > 0 {\n\t\t\t\t\tbuilder.WriteByte('|')\n\t\t\t\t}\n\t\t\t\tbuilder.WriteString(name)\n\t\t\t}\n\t\t}\n\t}\n\treturn builder.String()\n}\n\nfunc featureName(f CoreFeatures) string {\n\tswitch f {\n\tcase CoreFeatureMutableGlobal:\n\t\t// match https://github.com/WebAssembly/mutable-global\n\t\treturn \"mutable-global\"\n\tcase CoreFeatureSignExtensionOps:\n\t\t// match https://github.com/WebAssembly/spec/blob/wg-2.0.draft1/proposals/sign-extension-ops/Overview.md\n\t\treturn \"sign-extension-ops\"\n\tcase CoreFeatureMultiValue:\n\t\t// match https://github.com/WebAssembly/spec/blob/wg-2.0.draft1/proposals/multi-value/Overview.md\n\t\treturn \"multi-value\"\n\tcase CoreFeatureNonTrappingFloatToIntConversion:\n\t\t// match https://github.com/WebAssembly/spec/blob/wg-2.0.draft1/proposals/nontrapping-float-to-int-conversion/Overview.md\n\t\treturn \"nontrapping-float-to-int-conversion\"\n\tcase CoreFeatureBulkMemoryOperations:\n\t\t// match https://github.com/WebAssembly/spec/blob/wg-2.0.draft1/proposals/bulk-memory-operations/Overview.md\n\t\treturn \"bulk-memory-operations\"\n\tcase CoreFeatureReferenceTypes:\n\t\t// match https://github.com/WebAssembly/spec/blob/wg-2.0.draft1/proposals/reference-types/Overview.md\n\t\treturn \"reference-types\"\n\tcase CoreFeatureSIMD:\n\t\t// match https://github.com/WebAssembly/spec/blob/wg-2.0.draft1/proposals/simd/SIMD.md\n\t\treturn \"simd\"\n\t}\n\treturn \"\"\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/api/wasm.go",
    "content": "// Package api includes constants and interfaces used by both end-users and internal implementations.\npackage api\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"math\"\n\n\t\"github.com/tetratelabs/wazero/internal/internalapi\"\n)\n\n// ExternType classifies imports and exports with their respective types.\n//\n// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#external-types%E2%91%A0\ntype ExternType = byte\n\nconst (\n\tExternTypeFunc   ExternType = 0x00\n\tExternTypeTable  ExternType = 0x01\n\tExternTypeMemory ExternType = 0x02\n\tExternTypeGlobal ExternType = 0x03\n)\n\n// The below are exported to consolidate parsing behavior for external types.\nconst (\n\t// ExternTypeFuncName is the name of the WebAssembly 1.0 (20191205) Text Format field for ExternTypeFunc.\n\tExternTypeFuncName = \"func\"\n\t// ExternTypeTableName is the name of the WebAssembly 1.0 (20191205) Text Format field for ExternTypeTable.\n\tExternTypeTableName = \"table\"\n\t// ExternTypeMemoryName is the name of the WebAssembly 1.0 (20191205) Text Format field for ExternTypeMemory.\n\tExternTypeMemoryName = \"memory\"\n\t// ExternTypeGlobalName is the name of the WebAssembly 1.0 (20191205) Text Format field for ExternTypeGlobal.\n\tExternTypeGlobalName = \"global\"\n)\n\n// ExternTypeName returns the name of the WebAssembly 1.0 (20191205) Text Format field of the given type.\n//\n// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#exports%E2%91%A4\nfunc ExternTypeName(et ExternType) string {\n\tswitch et {\n\tcase ExternTypeFunc:\n\t\treturn ExternTypeFuncName\n\tcase ExternTypeTable:\n\t\treturn ExternTypeTableName\n\tcase ExternTypeMemory:\n\t\treturn ExternTypeMemoryName\n\tcase ExternTypeGlobal:\n\t\treturn ExternTypeGlobalName\n\t}\n\treturn fmt.Sprintf(\"%#x\", et)\n}\n\n// ValueType describes a parameter or result type mapped to a WebAssembly\n// function signature.\n//\n// The following describes how to convert between Wasm and Golang types:\n//\n//   - ValueTypeI32 - EncodeU32 DecodeU32 for uint32 / EncodeI32 DecodeI32 for int32\n//   - ValueTypeI64 - uint64(int64)\n//   - ValueTypeF32 - EncodeF32 DecodeF32 from float32\n//   - ValueTypeF64 - EncodeF64 DecodeF64 from float64\n//   - ValueTypeExternref - unintptr(unsafe.Pointer(p)) where p is any pointer\n//     type in Go (e.g. *string)\n//\n// e.g. Given a Text Format type use (param i64) (result i64), no conversion is\n// necessary.\n//\n//\tresults, _ := fn(ctx, input)\n//\tresult := result[0]\n//\n// e.g. Given a Text Format type use (param f64) (result f64), conversion is\n// necessary.\n//\n//\tresults, _ := fn(ctx, api.EncodeF64(input))\n//\tresult := api.DecodeF64(result[0])\n//\n// Note: This is a type alias as it is easier to encode and decode in the\n// binary format.\n//\n// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#binary-valtype\ntype ValueType = byte\n\nconst (\n\t// ValueTypeI32 is a 32-bit integer.\n\tValueTypeI32 ValueType = 0x7f\n\t// ValueTypeI64 is a 64-bit integer.\n\tValueTypeI64 ValueType = 0x7e\n\t// ValueTypeF32 is a 32-bit floating point number.\n\tValueTypeF32 ValueType = 0x7d\n\t// ValueTypeF64 is a 64-bit floating point number.\n\tValueTypeF64 ValueType = 0x7c\n\n\t// ValueTypeExternref is a externref type.\n\t//\n\t// Note: in wazero, externref type value are opaque raw 64-bit pointers,\n\t// and the ValueTypeExternref type in the signature will be translated as\n\t// uintptr in wazero's API level.\n\t//\n\t// For example, given the import function:\n\t//\t(func (import \"env\" \"f\") (param externref) (result externref))\n\t//\n\t// This can be defined in Go as:\n\t//  r.NewHostModuleBuilder(\"env\").\n\t//\t\tNewFunctionBuilder().\n\t//\t\tWithFunc(func(context.Context, _ uintptr) (_ uintptr) { return }).\n\t//\t\tExport(\"f\")\n\t//\n\t// Note: The usage of this type is toggled with api.CoreFeatureBulkMemoryOperations.\n\tValueTypeExternref ValueType = 0x6f\n)\n\n// ValueTypeName returns the type name of the given ValueType as a string.\n// These type names match the names used in the WebAssembly text format.\n//\n// Note: This returns \"unknown\", if an undefined ValueType value is passed.\nfunc ValueTypeName(t ValueType) string {\n\tswitch t {\n\tcase ValueTypeI32:\n\t\treturn \"i32\"\n\tcase ValueTypeI64:\n\t\treturn \"i64\"\n\tcase ValueTypeF32:\n\t\treturn \"f32\"\n\tcase ValueTypeF64:\n\t\treturn \"f64\"\n\tcase ValueTypeExternref:\n\t\treturn \"externref\"\n\t}\n\treturn \"unknown\"\n}\n\n// Module is a sandboxed, ready to execute Wasm module. This can be used to get exported functions, etc.\n//\n// In WebAssembly terminology, this corresponds to a \"Module Instance\", but wazero calls pre-instantiation module as\n// \"Compiled Module\" as in wazero.CompiledModule, therefore we call this post-instantiation module simply \"Module\".\n// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#module-instances%E2%91%A0\n//\n// # Notes\n//\n//   - This is an interface for decoupling, not third-party implementations.\n//     All implementations are in wazero.\n//   - Closing the wazero.Runtime closes any Module it instantiated.\ntype Module interface {\n\tfmt.Stringer\n\n\t// Name is the name this module was instantiated with. Exported functions can be imported with this name.\n\tName() string\n\n\t// Memory returns a memory defined in this module or nil if there are none wasn't.\n\tMemory() Memory\n\n\t// ExportedFunction returns a function exported from this module or nil if it wasn't.\n\t//\n\t// # Notes\n\t//   - The default wazero.ModuleConfig attempts to invoke `_start`, which\n\t//     in rare cases can close the module. When in doubt, check IsClosed prior\n\t//     to invoking a function export after instantiation.\n\t//   - The semantics of host functions assumes the existence of an \"importing module\" because, for example, the host function needs access to\n\t//     the memory of the importing module. Therefore, direct use of ExportedFunction is forbidden for host modules.\n\t//     Practically speaking, it is usually meaningless to directly call a host function from Go code as it is already somewhere in Go code.\n\tExportedFunction(name string) Function\n\n\t// ExportedFunctionDefinitions returns all the exported function\n\t// definitions in this module, keyed on export name.\n\tExportedFunctionDefinitions() map[string]FunctionDefinition\n\n\t// TODO: Table\n\n\t// ExportedMemory returns a memory exported from this module or nil if it wasn't.\n\t//\n\t// WASI modules require exporting a Memory named \"memory\". This means that a module successfully initialized\n\t// as a WASI Command or Reactor will never return nil for this name.\n\t//\n\t// See https://github.com/WebAssembly/WASI/blob/snapshot-01/design/application-abi.md#current-unstable-abi\n\tExportedMemory(name string) Memory\n\n\t// ExportedMemoryDefinitions returns all the exported memory definitions\n\t// in this module, keyed on export name.\n\t//\n\t// Note: As of WebAssembly Core Specification 2.0, there can be at most one\n\t// memory.\n\tExportedMemoryDefinitions() map[string]MemoryDefinition\n\n\t// ExportedGlobal a global exported from this module or nil if it wasn't.\n\tExportedGlobal(name string) Global\n\n\t// CloseWithExitCode releases resources allocated for this Module. Use a non-zero exitCode parameter to indicate a\n\t// failure to ExportedFunction callers.\n\t//\n\t// The error returned here, if present, is about resource de-allocation (such as I/O errors). Only the last error is\n\t// returned, so a non-nil return means at least one error happened. Regardless of error, this Module will\n\t// be removed, making its name available again.\n\t//\n\t// Calling this inside a host function is safe, and may cause ExportedFunction callers to receive a sys.ExitError\n\t// with the exitCode.\n\tCloseWithExitCode(ctx context.Context, exitCode uint32) error\n\n\t// Closer closes this module by delegating to CloseWithExitCode with an exit code of zero.\n\tCloser\n\n\t// IsClosed returns true if the module is closed, so no longer usable.\n\t//\n\t// This can happen for the following reasons:\n\t//   - Closer was called directly.\n\t//   - A guest function called Closer indirectly, such as `_start` calling\n\t//     `proc_exit`, which internally closed the module.\n\t//   - wazero.RuntimeConfig `WithCloseOnContextDone` was enabled and a\n\t//     context completion closed the module.\n\t//\n\t// Where any of the above are possible, check this value before calling an\n\t// ExportedFunction, even if you didn't formerly receive a sys.ExitError.\n\t// sys.ExitError is only returned on non-zero code, something that closes\n\t// the module successfully will not result it one.\n\tIsClosed() bool\n\n\tinternalapi.WazeroOnly\n}\n\n// Closer closes a resource.\n//\n// # Notes\n//\n//   - This is an interface for decoupling, not third-party implementations.\n//     All implementations are in wazero.\ntype Closer interface {\n\t// Close closes the resource.\n\t//\n\t// Note: The context parameter is used for value lookup, such as for\n\t// logging. A canceled or otherwise done context will not prevent Close\n\t// from succeeding.\n\tClose(context.Context) error\n}\n\n// ExportDefinition is a WebAssembly type exported in a module\n// (wazero.CompiledModule).\n//\n// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#exports%E2%91%A0\n//\n// # Notes\n//\n//   - This is an interface for decoupling, not third-party implementations.\n//     All implementations are in wazero.\ntype ExportDefinition interface {\n\t// ModuleName is the possibly empty name of the module defining this\n\t// export.\n\t//\n\t// Note: This may be different from Module.Name, because a compiled module\n\t// can be instantiated multiple times as different names.\n\tModuleName() string\n\n\t// Index is the position in the module's index, imports first.\n\tIndex() uint32\n\n\t// Import returns true with the module and name when this was imported.\n\t// Otherwise, it returns false.\n\t//\n\t// Note: Empty string is valid for both names in the WebAssembly Core\n\t// Specification, so \"\" \"\" is possible.\n\tImport() (moduleName, name string, isImport bool)\n\n\t// ExportNames include all exported names.\n\t//\n\t// Note: The empty name is allowed in the WebAssembly Core Specification,\n\t// so \"\" is possible.\n\tExportNames() []string\n\n\tinternalapi.WazeroOnly\n}\n\n// MemoryDefinition is a WebAssembly memory exported in a module\n// (wazero.CompiledModule). Units are in pages (64KB).\n//\n// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#exports%E2%91%A0\n//\n// # Notes\n//\n//   - This is an interface for decoupling, not third-party implementations.\n//     All implementations are in wazero.\ntype MemoryDefinition interface {\n\tExportDefinition\n\n\t// Min returns the possibly zero initial count of 64KB pages.\n\tMin() uint32\n\n\t// Max returns the possibly zero max count of 64KB pages, or false if\n\t// unbounded.\n\tMax() (uint32, bool)\n\n\tinternalapi.WazeroOnly\n}\n\n// FunctionDefinition is a WebAssembly function exported in a module\n// (wazero.CompiledModule).\n//\n// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#exports%E2%91%A0\n//\n// # Notes\n//\n//   - This is an interface for decoupling, not third-party implementations.\n//     All implementations are in wazero.\ntype FunctionDefinition interface {\n\tExportDefinition\n\n\t// Name is the module-defined name of the function, which is not necessarily\n\t// the same as its export name.\n\tName() string\n\n\t// DebugName identifies this function based on its Index or Name in the\n\t// module. This is used for errors and stack traces. e.g. \"env.abort\".\n\t//\n\t// When the function name is empty, a substitute name is generated by\n\t// prefixing '$' to its position in the index. Ex \".$0\" is the\n\t// first function (possibly imported) in an unnamed module.\n\t//\n\t// The format is dot-delimited module and function name, but there are no\n\t// restrictions on the module and function name. This means either can be\n\t// empty or include dots. e.g. \"x.x.x\" could mean module \"x\" and name \"x.x\",\n\t// or it could mean module \"x.x\" and name \"x\".\n\t//\n\t// Note: This name is stable regardless of import or export. For example,\n\t// if Import returns true, the value is still based on the Name or Index\n\t// and not the imported function name.\n\tDebugName() string\n\n\t// GoFunction is non-nil when implemented by the embedder instead of a wasm\n\t// binary, e.g. via wazero.HostModuleBuilder\n\t//\n\t// The expected results are nil, GoFunction or GoModuleFunction.\n\tGoFunction() interface{}\n\n\t// ParamTypes are the possibly empty sequence of value types accepted by a\n\t// function with this signature.\n\t//\n\t// See ValueType documentation for encoding rules.\n\tParamTypes() []ValueType\n\n\t// ParamNames are index-correlated with ParamTypes or nil if not available\n\t// for one or more parameters.\n\tParamNames() []string\n\n\t// ResultTypes are the results of the function.\n\t//\n\t// When WebAssembly 1.0 (20191205), there can be at most one result.\n\t// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#result-types%E2%91%A0\n\t//\n\t// See ValueType documentation for encoding rules.\n\tResultTypes() []ValueType\n\n\t// ResultNames are index-correlated with ResultTypes or nil if not\n\t// available for one or more results.\n\tResultNames() []string\n\n\tinternalapi.WazeroOnly\n}\n\n// Function is a WebAssembly function exported from an instantiated module\n// (wazero.Runtime InstantiateModule).\n//\n// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#syntax-func\n//\n// # Notes\n//\n//   - This is an interface for decoupling, not third-party implementations.\n//     All implementations are in wazero.\ntype Function interface {\n\t// Definition is metadata about this function from its defining module.\n\tDefinition() FunctionDefinition\n\n\t// Call invokes the function with the given parameters and returns any\n\t// results or an error for any failure looking up or invoking the function.\n\t//\n\t// Encoding is described in Definition, and supplying an incorrect count of\n\t// parameters vs FunctionDefinition.ParamTypes is an error.\n\t//\n\t// If the exporting Module was closed during this call, the error returned\n\t// may be a sys.ExitError. See Module.CloseWithExitCode for details.\n\t//\n\t// Call is not goroutine-safe, therefore it is recommended to create\n\t// another Function if you want to invoke the same function concurrently.\n\t// On the other hand, sequential invocations of Call is allowed.\n\t// However, this should not be called multiple times until the previous Call returns.\n\t//\n\t// To safely encode/decode params/results expressed as uint64, users are encouraged to\n\t// use api.EncodeXXX or DecodeXXX functions. See the docs on api.ValueType.\n\t//\n\t// When RuntimeConfig.WithCloseOnContextDone is toggled, the invocation of this Call method is ensured to be closed\n\t// whenever one of the three conditions is met. In the event of close, sys.ExitError will be returned and\n\t// the api.Module from which this api.Function is derived will be made closed. See the documentation of\n\t// WithCloseOnContextDone on wazero.RuntimeConfig for detail. See examples in context_done_example_test.go for\n\t// the end-to-end demonstrations of how these terminations can be performed.\n\tCall(ctx context.Context, params ...uint64) ([]uint64, error)\n\n\t// CallWithStack is an optimized variation of Call that saves memory\n\t// allocations when the stack slice is reused across calls.\n\t//\n\t// Stack length must be at least the max of parameter or result length.\n\t// The caller adds parameters in order to the stack, and reads any results\n\t// in order from the stack, except in the error case.\n\t//\n\t// For example, the following reuses the same stack slice to call searchFn\n\t// repeatedly saving one allocation per iteration:\n\t//\n\t//\tstack := make([]uint64, 4)\n\t//\tfor i, search := range searchParams {\n\t//\t\t// copy the next params to the stack\n\t//\t\tcopy(stack, search)\n\t//\t\tif err := searchFn.CallWithStack(ctx, stack); err != nil {\n\t//\t\t\treturn err\n\t//\t\t} else if stack[0] == 1 { // found\n\t//\t\t\treturn i // searchParams[i] matched!\n\t//\t\t}\n\t//\t}\n\t//\n\t// # Notes\n\t//\n\t//   - This is similar to GoModuleFunction, except for using calling functions\n\t//     instead of implementing them. Moreover, this is used regardless of\n\t//     whether the callee is a host or wasm defined function.\n\tCallWithStack(ctx context.Context, stack []uint64) error\n\n\tinternalapi.WazeroOnly\n}\n\n// GoModuleFunction is a Function implemented in Go instead of a wasm binary.\n// The Module parameter is the calling module, used to access memory or\n// exported functions. See GoModuleFunc for an example.\n//\n// The stack is includes any parameters encoded according to their ValueType.\n// Its length is the max of parameter or result length. When there are results,\n// write them in order beginning at index zero. Do not use the stack after the\n// function returns.\n//\n// Here's a typical way to read three parameters and write back one.\n//\n//\t// read parameters off the stack in index order\n//\targv, argvBuf := api.DecodeU32(stack[0]), api.DecodeU32(stack[1])\n//\n//\t// write results back to the stack in index order\n//\tstack[0] = api.EncodeU32(ErrnoSuccess)\n//\n// This function can be non-deterministic or cause side effects. It also\n// has special properties not defined in the WebAssembly Core specification.\n// Notably, this uses the caller's memory (via Module.Memory). See\n// https://www.w3.org/TR/wasm-core-1/#host-functions%E2%91%A0\n//\n// Most end users will not define functions directly with this, as they will\n// use reflection or code generators instead. These approaches are more\n// idiomatic as they can map go types to ValueType. This type is exposed for\n// those willing to trade usability and safety for performance.\n//\n// To safely decode/encode values from/to the uint64 stack, users are encouraged to use\n// api.EncodeXXX or api.DecodeXXX functions. See the docs on api.ValueType.\ntype GoModuleFunction interface {\n\tCall(ctx context.Context, mod Module, stack []uint64)\n}\n\n// GoModuleFunc is a convenience for defining an inlined function.\n//\n// For example, the following returns an uint32 value read from parameter zero:\n//\n//\tapi.GoModuleFunc(func(ctx context.Context, mod api.Module, stack []uint64) {\n//\t\toffset := api.DecodeU32(stack[0]) // read the parameter from the stack\n//\n//\t\tret, ok := mod.Memory().ReadUint32Le(offset)\n//\t\tif !ok {\n//\t\t\tpanic(\"out of memory\")\n//\t\t}\n//\n//\t\tstack[0] = api.EncodeU32(ret) // add the result back to the stack.\n//\t})\ntype GoModuleFunc func(ctx context.Context, mod Module, stack []uint64)\n\n// Call implements GoModuleFunction.Call.\nfunc (f GoModuleFunc) Call(ctx context.Context, mod Module, stack []uint64) {\n\tf(ctx, mod, stack)\n}\n\n// GoFunction is an optimized form of GoModuleFunction which doesn't require\n// the Module parameter. See GoFunc for an example.\n//\n// For example, this function does not need to use the importing module's\n// memory or exported functions.\ntype GoFunction interface {\n\tCall(ctx context.Context, stack []uint64)\n}\n\n// GoFunc is a convenience for defining an inlined function.\n//\n// For example, the following returns the sum of two uint32 parameters:\n//\n//\tapi.GoFunc(func(ctx context.Context, stack []uint64) {\n//\t\tx, y := api.DecodeU32(stack[0]), api.DecodeU32(stack[1])\n//\t\tstack[0] = api.EncodeU32(x + y)\n//\t})\ntype GoFunc func(ctx context.Context, stack []uint64)\n\n// Call implements GoFunction.Call.\nfunc (f GoFunc) Call(ctx context.Context, stack []uint64) {\n\tf(ctx, stack)\n}\n\n// Global is a WebAssembly 1.0 (20191205) global exported from an instantiated module (wazero.Runtime InstantiateModule).\n//\n// For example, if the value is not mutable, you can read it once:\n//\n//\toffset := module.ExportedGlobal(\"memory.offset\").Get()\n//\n// Globals are allowed by specification to be mutable. However, this can be disabled by configuration. When in doubt,\n// safe cast to find out if the value can change. Here's an example:\n//\n//\toffset := module.ExportedGlobal(\"memory.offset\")\n//\tif _, ok := offset.(api.MutableGlobal); ok {\n//\t\t// value can change\n//\t} else {\n//\t\t// value is constant\n//\t}\n//\n// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#globals%E2%91%A0\n//\n// # Notes\n//\n//   - This is an interface for decoupling, not third-party implementations.\n//     All implementations are in wazero.\ntype Global interface {\n\tfmt.Stringer\n\n\t// Type describes the numeric type of the global.\n\tType() ValueType\n\n\t// Get returns the last known value of this global.\n\t//\n\t// See Type for how to decode this value to a Go type.\n\tGet() uint64\n}\n\n// MutableGlobal is a Global whose value can be updated at runtime (variable).\n//\n// # Notes\n//\n//   - This is an interface for decoupling, not third-party implementations.\n//     All implementations are in wazero.\ntype MutableGlobal interface {\n\tGlobal\n\n\t// Set updates the value of this global.\n\t//\n\t// See Global.Type for how to encode this value from a Go type.\n\tSet(v uint64)\n\n\tinternalapi.WazeroOnly\n}\n\n// Memory allows restricted access to a module's memory. Notably, this does not allow growing.\n//\n// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#storage%E2%91%A0\n//\n// # Notes\n//\n//   - This is an interface for decoupling, not third-party implementations.\n//     All implementations are in wazero.\n//   - This includes all value types available in WebAssembly 1.0 (20191205) and all are encoded little-endian.\ntype Memory interface {\n\t// Definition is metadata about this memory from its defining module.\n\tDefinition() MemoryDefinition\n\n\t// Size returns the memory size in bytes available.\n\t// e.g. If the underlying memory has 1 page: 65536\n\t//\n\t// # Notes\n\t//\n\t//   - This overflows (returns zero) if the memory has the maximum 65536 pages.\n\t// \t   As a workaround until wazero v2 to fix the return type, use Grow(0) to obtain the current pages and\n\t//     multiply by 65536.\n\t//\n\t// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#-hrefsyntax-instr-memorymathsfmemorysize%E2%91%A0\n\tSize() uint32\n\n\t// Grow increases memory by the delta in pages (65536 bytes per page).\n\t// The return val is the previous memory size in pages, or false if the\n\t// delta was ignored as it exceeds MemoryDefinition.Max.\n\t//\n\t// # Notes\n\t//\n\t//   - This is the same as the \"memory.grow\" instruction defined in the\n\t//\t   WebAssembly Core Specification, except returns false instead of -1.\n\t//   - When this returns true, any shared views via Read must be refreshed.\n\t//\n\t// See MemorySizer Read and https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#grow-mem\n\tGrow(deltaPages uint32) (previousPages uint32, ok bool)\n\n\t// ReadByte reads a single byte from the underlying buffer at the offset or returns false if out of range.\n\tReadByte(offset uint32) (byte, bool)\n\n\t// ReadUint16Le reads a uint16 in little-endian encoding from the underlying buffer at the offset in or returns\n\t// false if out of range.\n\tReadUint16Le(offset uint32) (uint16, bool)\n\n\t// ReadUint32Le reads a uint32 in little-endian encoding from the underlying buffer at the offset in or returns\n\t// false if out of range.\n\tReadUint32Le(offset uint32) (uint32, bool)\n\n\t// ReadFloat32Le reads a float32 from 32 IEEE 754 little-endian encoded bits in the underlying buffer at the offset\n\t// or returns false if out of range.\n\t// See math.Float32bits\n\tReadFloat32Le(offset uint32) (float32, bool)\n\n\t// ReadUint64Le reads a uint64 in little-endian encoding from the underlying buffer at the offset or returns false\n\t// if out of range.\n\tReadUint64Le(offset uint32) (uint64, bool)\n\n\t// ReadFloat64Le reads a float64 from 64 IEEE 754 little-endian encoded bits in the underlying buffer at the offset\n\t// or returns false if out of range.\n\t//\n\t// See math.Float64bits\n\tReadFloat64Le(offset uint32) (float64, bool)\n\n\t// Read reads byteCount bytes from the underlying buffer at the offset or\n\t// returns false if out of range.\n\t//\n\t// For example, to search for a NUL-terminated string:\n\t//\tbuf, _ = memory.Read(offset, byteCount)\n\t//\tn := bytes.IndexByte(buf, 0)\n\t//\tif n < 0 {\n\t//\t\t// Not found!\n\t//\t}\n\t//\n\t// Write-through\n\t//\n\t// This returns a view of the underlying memory, not a copy. This means any\n\t// writes to the slice returned are visible to Wasm, and any updates from\n\t// Wasm are visible reading the returned slice.\n\t//\n\t// For example:\n\t//\tbuf, _ = memory.Read(offset, byteCount)\n\t//\tbuf[1] = 'a' // writes through to memory, meaning Wasm code see 'a'.\n\t//\n\t// If you don't intend-write through, make a copy of the returned slice.\n\t//\n\t// When to refresh Read\n\t//\n\t// The returned slice disconnects on any capacity change. For example,\n\t// `buf = append(buf, 'a')` might result in a slice that is no longer\n\t// shared. The same exists Wasm side. For example, if Wasm changes its\n\t// memory capacity, ex via \"memory.grow\"), the host slice is no longer\n\t// shared. Those who need a stable view must set Wasm memory min=max, or\n\t// use wazero.RuntimeConfig WithMemoryCapacityPages to ensure max is always\n\t// allocated.\n\tRead(offset, byteCount uint32) ([]byte, bool)\n\n\t// WriteByte writes a single byte to the underlying buffer at the offset in or returns false if out of range.\n\tWriteByte(offset uint32, v byte) bool\n\n\t// WriteUint16Le writes the value in little-endian encoding to the underlying buffer at the offset in or returns\n\t// false if out of range.\n\tWriteUint16Le(offset uint32, v uint16) bool\n\n\t// WriteUint32Le writes the value in little-endian encoding to the underlying buffer at the offset in or returns\n\t// false if out of range.\n\tWriteUint32Le(offset, v uint32) bool\n\n\t// WriteFloat32Le writes the value in 32 IEEE 754 little-endian encoded bits to the underlying buffer at the offset\n\t// or returns false if out of range.\n\t//\n\t// See math.Float32bits\n\tWriteFloat32Le(offset uint32, v float32) bool\n\n\t// WriteUint64Le writes the value in little-endian encoding to the underlying buffer at the offset in or returns\n\t// false if out of range.\n\tWriteUint64Le(offset uint32, v uint64) bool\n\n\t// WriteFloat64Le writes the value in 64 IEEE 754 little-endian encoded bits to the underlying buffer at the offset\n\t// or returns false if out of range.\n\t//\n\t// See math.Float64bits\n\tWriteFloat64Le(offset uint32, v float64) bool\n\n\t// Write writes the slice to the underlying buffer at the offset or returns false if out of range.\n\tWrite(offset uint32, v []byte) bool\n\n\t// WriteString writes the string to the underlying buffer at the offset or returns false if out of range.\n\tWriteString(offset uint32, v string) bool\n\n\tinternalapi.WazeroOnly\n}\n\n// CustomSection contains the name and raw data of a custom section.\n//\n// # Notes\n//\n//   - This is an interface for decoupling, not third-party implementations.\n//     All implementations are in wazero.\ntype CustomSection interface {\n\t// Name is the name of the custom section\n\tName() string\n\t// Data is the raw data of the custom section\n\tData() []byte\n\n\tinternalapi.WazeroOnly\n}\n\n// EncodeExternref encodes the input as a ValueTypeExternref.\n//\n// See DecodeExternref\nfunc EncodeExternref(input uintptr) uint64 {\n\treturn uint64(input)\n}\n\n// DecodeExternref decodes the input as a ValueTypeExternref.\n//\n// See EncodeExternref\nfunc DecodeExternref(input uint64) uintptr {\n\treturn uintptr(input)\n}\n\n// EncodeI32 encodes the input as a ValueTypeI32.\nfunc EncodeI32(input int32) uint64 {\n\treturn uint64(uint32(input))\n}\n\n// DecodeI32 decodes the input as a ValueTypeI32.\nfunc DecodeI32(input uint64) int32 {\n\treturn int32(input)\n}\n\n// EncodeU32 encodes the input as a ValueTypeI32.\nfunc EncodeU32(input uint32) uint64 {\n\treturn uint64(input)\n}\n\n// DecodeU32 decodes the input as a ValueTypeI32.\nfunc DecodeU32(input uint64) uint32 {\n\treturn uint32(input)\n}\n\n// EncodeI64 encodes the input as a ValueTypeI64.\nfunc EncodeI64(input int64) uint64 {\n\treturn uint64(input)\n}\n\n// EncodeF32 encodes the input as a ValueTypeF32.\n//\n// See DecodeF32\nfunc EncodeF32(input float32) uint64 {\n\treturn uint64(math.Float32bits(input))\n}\n\n// DecodeF32 decodes the input as a ValueTypeF32.\n//\n// See EncodeF32\nfunc DecodeF32(input uint64) float32 {\n\treturn math.Float32frombits(uint32(input))\n}\n\n// EncodeF64 encodes the input as a ValueTypeF64.\n//\n// See EncodeF32\nfunc EncodeF64(input float64) uint64 {\n\treturn math.Float64bits(input)\n}\n\n// DecodeF64 decodes the input as a ValueTypeF64.\n//\n// See EncodeF64\nfunc DecodeF64(input uint64) float64 {\n\treturn math.Float64frombits(input)\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/builder.go",
    "content": "package wazero\n\nimport (\n\t\"context\"\n\n\t\"github.com/tetratelabs/wazero/api\"\n\t\"github.com/tetratelabs/wazero/internal/wasm\"\n)\n\n// HostFunctionBuilder defines a host function (in Go), so that a\n// WebAssembly binary (e.g. %.wasm file) can import and use it.\n//\n// Here's an example of an addition function:\n//\n//\thostModuleBuilder.NewFunctionBuilder().\n//\t\tWithFunc(func(cxt context.Context, x, y uint32) uint32 {\n//\t\t\treturn x + y\n//\t\t}).\n//\t\tExport(\"add\")\n//\n// # Memory\n//\n// All host functions act on the importing api.Module, including any memory\n// exported in its binary (%.wasm file). If you are reading or writing memory,\n// it is sand-boxed Wasm memory defined by the guest.\n//\n// Below, `m` is the importing module, defined in Wasm. `fn` is a host function\n// added via Export. This means that `x` was read from memory defined in Wasm,\n// not arbitrary memory in the process.\n//\n//\tfn := func(ctx context.Context, m api.Module, offset uint32) uint32 {\n//\t\tx, _ := m.Memory().ReadUint32Le(ctx, offset)\n//\t\treturn x\n//\t}\n//\n// # Notes\n//\n//   - This is an interface for decoupling, not third-party implementations.\n//     All implementations are in wazero.\ntype HostFunctionBuilder interface {\n\t// WithGoFunction is an advanced feature for those who need higher\n\t// performance than WithFunc at the cost of more complexity.\n\t//\n\t// Here's an example addition function:\n\t//\n\t//\tbuilder.WithGoFunction(api.GoFunc(func(ctx context.Context, stack []uint64) {\n\t//\t\tx, y := api.DecodeI32(stack[0]), api.DecodeI32(stack[1])\n\t//\t\tsum := x + y\n\t//\t\tstack[0] = api.EncodeI32(sum)\n\t//\t}), []api.ValueType{api.ValueTypeI32, api.ValueTypeI32}, []api.ValueType{api.ValueTypeI32})\n\t//\n\t// As you can see above, defining in this way implies knowledge of which\n\t// WebAssembly api.ValueType is appropriate for each parameter and result.\n\t//\n\t// See WithGoModuleFunction if you also need to access the calling module.\n\tWithGoFunction(fn api.GoFunction, params, results []api.ValueType) HostFunctionBuilder\n\n\t// WithGoModuleFunction is an advanced feature for those who need higher\n\t// performance than WithFunc at the cost of more complexity.\n\t//\n\t// Here's an example addition function that loads operands from memory:\n\t//\n\t//\tbuilder.WithGoModuleFunction(api.GoModuleFunc(func(ctx context.Context, m api.Module, stack []uint64) {\n\t//\t\tmem := m.Memory()\n\t//\t\toffset := api.DecodeU32(stack[0])\n\t//\n\t//\t\tx, _ := mem.ReadUint32Le(ctx, offset)\n\t//\t\ty, _ := mem.ReadUint32Le(ctx, offset + 4) // 32 bits == 4 bytes!\n\t//\t\tsum := x + y\n\t//\n\t//\t\tstack[0] = api.EncodeU32(sum)\n\t//\t}), []api.ValueType{api.ValueTypeI32}, []api.ValueType{api.ValueTypeI32})\n\t//\n\t// As you can see above, defining in this way implies knowledge of which\n\t// WebAssembly api.ValueType is appropriate for each parameter and result.\n\t//\n\t// See WithGoFunction if you don't need access to the calling module.\n\tWithGoModuleFunction(fn api.GoModuleFunction, params, results []api.ValueType) HostFunctionBuilder\n\n\t// WithFunc uses reflect.Value to map a go `func` to a WebAssembly\n\t// compatible Signature. An input that isn't a `func` will fail to\n\t// instantiate.\n\t//\n\t// Here's an example of an addition function:\n\t//\n\t//\tbuilder.WithFunc(func(cxt context.Context, x, y uint32) uint32 {\n\t//\t\treturn x + y\n\t//\t})\n\t//\n\t// # Defining a function\n\t//\n\t// Except for the context.Context and optional api.Module, all parameters\n\t// or result types must map to WebAssembly numeric value types. This means\n\t// uint32, int32, uint64, int64, float32 or float64.\n\t//\n\t// api.Module may be specified as the second parameter, usually to access\n\t// memory. This is important because there are only numeric types in Wasm.\n\t// The only way to share other data is via writing memory and sharing\n\t// offsets.\n\t//\n\t//\tbuilder.WithFunc(func(ctx context.Context, m api.Module, offset uint32) uint32 {\n\t//\t\tmem := m.Memory()\n\t//\t\tx, _ := mem.ReadUint32Le(ctx, offset)\n\t//\t\ty, _ := mem.ReadUint32Le(ctx, offset + 4) // 32 bits == 4 bytes!\n\t//\t\treturn x + y\n\t//\t})\n\t//\n\t// This example propagates context properly when calling other functions\n\t// exported in the api.Module:\n\t//\n\t//\tbuilder.WithFunc(func(ctx context.Context, m api.Module, offset, byteCount uint32) uint32 {\n\t//\t\tfn = m.ExportedFunction(\"__read\")\n\t//\t\tresults, err := fn(ctx, offset, byteCount)\n\t//\t--snip--\n\tWithFunc(interface{}) HostFunctionBuilder\n\n\t// WithName defines the optional module-local name of this function, e.g.\n\t// \"random_get\"\n\t//\n\t// Note: This is not required to match the Export name.\n\tWithName(name string) HostFunctionBuilder\n\n\t// WithParameterNames defines optional parameter names of the function\n\t// signature, e.x. \"buf\", \"buf_len\"\n\t//\n\t// Note: When defined, names must be provided for all parameters.\n\tWithParameterNames(names ...string) HostFunctionBuilder\n\n\t// WithResultNames defines optional result names of the function\n\t// signature, e.x. \"errno\"\n\t//\n\t// Note: When defined, names must be provided for all results.\n\tWithResultNames(names ...string) HostFunctionBuilder\n\n\t// Export exports this to the HostModuleBuilder as the given name, e.g.\n\t// \"random_get\"\n\tExport(name string) HostModuleBuilder\n}\n\n// HostModuleBuilder is a way to define host functions (in Go), so that a\n// WebAssembly binary (e.g. %.wasm file) can import and use them.\n//\n// Specifically, this implements the host side of an Application Binary\n// Interface (ABI) like WASI or AssemblyScript.\n//\n// For example, this defines and instantiates a module named \"env\" with one\n// function:\n//\n//\tctx := context.Background()\n//\tr := wazero.NewRuntime(ctx)\n//\tdefer r.Close(ctx) // This closes everything this Runtime created.\n//\n//\thello := func() {\n//\t\tprintln(\"hello!\")\n//\t}\n//\tenv, _ := r.NewHostModuleBuilder(\"env\").\n//\t\tNewFunctionBuilder().WithFunc(hello).Export(\"hello\").\n//\t\tInstantiate(ctx)\n//\n// If the same module may be instantiated multiple times, it is more efficient\n// to separate steps. Here's an example:\n//\n//\tcompiled, _ := r.NewHostModuleBuilder(\"env\").\n//\t\tNewFunctionBuilder().WithFunc(getRandomString).Export(\"get_random_string\").\n//\t\tCompile(ctx)\n//\n//\tenv1, _ := r.InstantiateModule(ctx, compiled, wazero.NewModuleConfig().WithName(\"env.1\"))\n//\tenv2, _ := r.InstantiateModule(ctx, compiled, wazero.NewModuleConfig().WithName(\"env.2\"))\n//\n// See HostFunctionBuilder for valid host function signatures and other details.\n//\n// # Notes\n//\n//   - This is an interface for decoupling, not third-party implementations.\n//     All implementations are in wazero.\n//   - HostModuleBuilder is mutable: each method returns the same instance for\n//     chaining.\n//   - methods do not return errors, to allow chaining. Any validation errors\n//     are deferred until Compile.\n//   - Functions are indexed in order of calls to NewFunctionBuilder as\n//     insertion ordering is needed by ABI such as Emscripten (invoke_*).\n//   - The semantics of host functions assumes the existence of an \"importing module\" because, for example, the host function needs access to\n//     the memory of the importing module. Therefore, direct use of ExportedFunction is forbidden for host modules.\n//     Practically speaking, it is usually meaningless to directly call a host function from Go code as it is already somewhere in Go code.\ntype HostModuleBuilder interface {\n\t// Note: until golang/go#5860, we can't use example tests to embed code in interface godocs.\n\n\t// NewFunctionBuilder begins the definition of a host function.\n\tNewFunctionBuilder() HostFunctionBuilder\n\n\t// Compile returns a CompiledModule that can be instantiated by Runtime.\n\tCompile(context.Context) (CompiledModule, error)\n\n\t// Instantiate is a convenience that calls Compile, then Runtime.InstantiateModule.\n\t// This can fail for reasons documented on Runtime.InstantiateModule.\n\t//\n\t// Here's an example:\n\t//\n\t//\tctx := context.Background()\n\t//\tr := wazero.NewRuntime(ctx)\n\t//\tdefer r.Close(ctx) // This closes everything this Runtime created.\n\t//\n\t//\thello := func() {\n\t//\t\tprintln(\"hello!\")\n\t//\t}\n\t//\tenv, _ := r.NewHostModuleBuilder(\"env\").\n\t//\t\tNewFunctionBuilder().WithFunc(hello).Export(\"hello\").\n\t//\t\tInstantiate(ctx)\n\t//\n\t// # Notes\n\t//\n\t//   - Closing the Runtime has the same effect as closing the result.\n\t//   - Fields in the builder are copied during instantiation: Later changes do not affect the instantiated result.\n\t//   - To avoid using configuration defaults, use Compile instead.\n\tInstantiate(context.Context) (api.Module, error)\n}\n\n// hostModuleBuilder implements HostModuleBuilder\ntype hostModuleBuilder struct {\n\tr              *runtime\n\tmoduleName     string\n\texportNames    []string\n\tnameToHostFunc map[string]*wasm.HostFunc\n}\n\n// NewHostModuleBuilder implements Runtime.NewHostModuleBuilder\nfunc (r *runtime) NewHostModuleBuilder(moduleName string) HostModuleBuilder {\n\treturn &hostModuleBuilder{\n\t\tr:              r,\n\t\tmoduleName:     moduleName,\n\t\tnameToHostFunc: map[string]*wasm.HostFunc{},\n\t}\n}\n\n// hostFunctionBuilder implements HostFunctionBuilder\ntype hostFunctionBuilder struct {\n\tb           *hostModuleBuilder\n\tfn          interface{}\n\tname        string\n\tparamNames  []string\n\tresultNames []string\n}\n\n// WithGoFunction implements HostFunctionBuilder.WithGoFunction\nfunc (h *hostFunctionBuilder) WithGoFunction(fn api.GoFunction, params, results []api.ValueType) HostFunctionBuilder {\n\th.fn = &wasm.HostFunc{ParamTypes: params, ResultTypes: results, Code: wasm.Code{GoFunc: fn}}\n\treturn h\n}\n\n// WithGoModuleFunction implements HostFunctionBuilder.WithGoModuleFunction\nfunc (h *hostFunctionBuilder) WithGoModuleFunction(fn api.GoModuleFunction, params, results []api.ValueType) HostFunctionBuilder {\n\th.fn = &wasm.HostFunc{ParamTypes: params, ResultTypes: results, Code: wasm.Code{GoFunc: fn}}\n\treturn h\n}\n\n// WithFunc implements HostFunctionBuilder.WithFunc\nfunc (h *hostFunctionBuilder) WithFunc(fn interface{}) HostFunctionBuilder {\n\th.fn = fn\n\treturn h\n}\n\n// WithName implements HostFunctionBuilder.WithName\nfunc (h *hostFunctionBuilder) WithName(name string) HostFunctionBuilder {\n\th.name = name\n\treturn h\n}\n\n// WithParameterNames implements HostFunctionBuilder.WithParameterNames\nfunc (h *hostFunctionBuilder) WithParameterNames(names ...string) HostFunctionBuilder {\n\th.paramNames = names\n\treturn h\n}\n\n// WithResultNames implements HostFunctionBuilder.WithResultNames\nfunc (h *hostFunctionBuilder) WithResultNames(names ...string) HostFunctionBuilder {\n\th.resultNames = names\n\treturn h\n}\n\n// Export implements HostFunctionBuilder.Export\nfunc (h *hostFunctionBuilder) Export(exportName string) HostModuleBuilder {\n\tvar hostFn *wasm.HostFunc\n\tif fn, ok := h.fn.(*wasm.HostFunc); ok {\n\t\thostFn = fn\n\t} else {\n\t\thostFn = &wasm.HostFunc{Code: wasm.Code{GoFunc: h.fn}}\n\t}\n\n\t// Assign any names from the builder\n\thostFn.ExportName = exportName\n\tif h.name != \"\" {\n\t\thostFn.Name = h.name\n\t}\n\tif len(h.paramNames) != 0 {\n\t\thostFn.ParamNames = h.paramNames\n\t}\n\tif len(h.resultNames) != 0 {\n\t\thostFn.ResultNames = h.resultNames\n\t}\n\n\th.b.ExportHostFunc(hostFn)\n\treturn h.b\n}\n\n// ExportHostFunc implements wasm.HostFuncExporter\nfunc (b *hostModuleBuilder) ExportHostFunc(fn *wasm.HostFunc) {\n\tif _, ok := b.nameToHostFunc[fn.ExportName]; !ok { // add a new name\n\t\tb.exportNames = append(b.exportNames, fn.ExportName)\n\t}\n\tb.nameToHostFunc[fn.ExportName] = fn\n}\n\n// NewFunctionBuilder implements HostModuleBuilder.NewFunctionBuilder\nfunc (b *hostModuleBuilder) NewFunctionBuilder() HostFunctionBuilder {\n\treturn &hostFunctionBuilder{b: b}\n}\n\n// Compile implements HostModuleBuilder.Compile\nfunc (b *hostModuleBuilder) Compile(ctx context.Context) (CompiledModule, error) {\n\tmodule, err := wasm.NewHostModule(b.moduleName, b.exportNames, b.nameToHostFunc, b.r.enabledFeatures)\n\tif err != nil {\n\t\treturn nil, err\n\t} else if err = module.Validate(b.r.enabledFeatures); err != nil {\n\t\treturn nil, err\n\t}\n\n\tc := &compiledModule{module: module, compiledEngine: b.r.store.Engine}\n\tlisteners, err := buildFunctionListeners(ctx, module)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif err = b.r.store.Engine.CompileModule(ctx, module, listeners, false); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// typeIDs are static and compile-time known.\n\ttypeIDs, err := b.r.store.GetFunctionTypeIDs(module.TypeSection)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tc.typeIDs = typeIDs\n\n\treturn c, nil\n}\n\n// hostModuleInstance is a wrapper around api.Module that prevents calling ExportedFunction.\ntype hostModuleInstance struct{ api.Module }\n\n// ExportedFunction implements api.Module ExportedFunction.\nfunc (h hostModuleInstance) ExportedFunction(name string) api.Function {\n\tpanic(\"calling ExportedFunction is forbidden on host modules. See the note on ExportedFunction interface\")\n}\n\n// Instantiate implements HostModuleBuilder.Instantiate\nfunc (b *hostModuleBuilder) Instantiate(ctx context.Context) (api.Module, error) {\n\tif compiled, err := b.Compile(ctx); err != nil {\n\t\treturn nil, err\n\t} else {\n\t\tcompiled.(*compiledModule).closeWithModule = true\n\t\tm, err := b.r.InstantiateModule(ctx, compiled, NewModuleConfig())\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn hostModuleInstance{m}, nil\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/cache.go",
    "content": "package wazero\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"os\"\n\t\"path\"\n\t\"path/filepath\"\n\tgoruntime \"runtime\"\n\t\"sync\"\n\n\t\"github.com/tetratelabs/wazero/api\"\n\t\"github.com/tetratelabs/wazero/internal/filecache\"\n\t\"github.com/tetratelabs/wazero/internal/version\"\n\t\"github.com/tetratelabs/wazero/internal/wasm\"\n)\n\n// CompilationCache reduces time spent compiling (Runtime.CompileModule) the same wasm module.\n//\n// # Notes\n//\n//   - This is an interface for decoupling, not third-party implementations.\n//     All implementations are in wazero.\n//   - Instances of this can be reused across multiple runtimes, if configured\n//     via RuntimeConfig.\n//   - The cache check happens before the compilation, so if multiple Goroutines are\n//     trying to compile the same module simultaneously, it is possible that they\n//     all compile the module. The design here is that the lock isn't held for the action \"Compile\"\n//     but only for checking and saving the compiled result. Therefore, we strongly recommend that the embedder\n//     does the centralized compilation in a single Goroutines (or multiple Goroutines per Wasm binary) to generate cache rather than\n//     trying to Compile in parallel for a single module. In other words, we always recommend to produce CompiledModule\n//     share it across multiple Goroutines to avoid trying to compile the same module simultaneously.\ntype CompilationCache interface{ api.Closer }\n\n// NewCompilationCache returns a new CompilationCache to be passed to RuntimeConfig.\n// This configures only in-memory cache, and doesn't persist to the file system. See wazero.NewCompilationCacheWithDir for detail.\n//\n// The returned CompilationCache can be used to share the in-memory compilation results across multiple instances of wazero.Runtime.\nfunc NewCompilationCache() CompilationCache {\n\treturn &cache{}\n}\n\n// NewCompilationCacheWithDir is like wazero.NewCompilationCache except the result also writes\n// state into the directory specified by `dirname` parameter.\n//\n// If the dirname doesn't exist, this creates it or returns an error.\n//\n// Those running wazero as a CLI or frequently restarting a process using the same wasm should\n// use this feature to reduce time waiting to compile the same module a second time.\n//\n// The contents written into dirname are wazero-version specific, meaning different versions of\n// wazero will duplicate entries for the same input wasm.\n//\n// Note: The embedder must safeguard this directory from external changes.\nfunc NewCompilationCacheWithDir(dirname string) (CompilationCache, error) {\n\tc := &cache{}\n\terr := c.ensuresFileCache(dirname, version.GetWazeroVersion())\n\treturn c, err\n}\n\n// cache implements Cache interface.\ntype cache struct {\n\t// eng is the engine for this cache. If the cache is configured, the engine is shared across multiple instances of\n\t// Runtime, and its lifetime is not bound to them. Instead, the engine is alive until Cache.Close is called.\n\tengs      [engineKindCount]wasm.Engine\n\tfileCache filecache.Cache\n\tinitOnces [engineKindCount]sync.Once\n}\n\nfunc (c *cache) initEngine(ek engineKind, ne newEngine, ctx context.Context, features api.CoreFeatures) wasm.Engine {\n\tc.initOnces[ek].Do(func() { c.engs[ek] = ne(ctx, features, c.fileCache) })\n\treturn c.engs[ek]\n}\n\n// Close implements the same method on the Cache interface.\nfunc (c *cache) Close(_ context.Context) (err error) {\n\tfor _, eng := range c.engs {\n\t\tif eng != nil {\n\t\t\tif err = eng.Close(); err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n\treturn\n}\n\nfunc (c *cache) ensuresFileCache(dir string, wazeroVersion string) error {\n\t// Resolve a potentially relative directory into an absolute one.\n\tvar err error\n\tdir, err = filepath.Abs(dir)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// Ensure the user-supplied directory.\n\tif err = mkdir(dir); err != nil {\n\t\treturn err\n\t}\n\n\t// Create a version-specific directory to avoid conflicts.\n\tdirname := path.Join(dir, \"wazero-\"+wazeroVersion+\"-\"+goruntime.GOARCH+\"-\"+goruntime.GOOS)\n\tif err = mkdir(dirname); err != nil {\n\t\treturn err\n\t}\n\n\tc.fileCache = filecache.New(dirname)\n\treturn nil\n}\n\nfunc mkdir(dirname string) error {\n\tif st, err := os.Stat(dirname); errors.Is(err, os.ErrNotExist) {\n\t\t// If the directory not found, create the cache dir.\n\t\tif err = os.MkdirAll(dirname, 0o700); err != nil {\n\t\t\treturn fmt.Errorf(\"create directory %s: %v\", dirname, err)\n\t\t}\n\t} else if err != nil {\n\t\treturn err\n\t} else if !st.IsDir() {\n\t\treturn fmt.Errorf(\"%s is not dir\", dirname)\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/codecov.yml",
    "content": "# Codecov for main is visible here https://app.codecov.io/gh/tetratelabs/wazero\n\n# We use codecov only as a UI, so we disable PR comments and commit status.\n# See https://docs.codecov.com/docs/pull-request-comments\ncomment: false\ncoverage:\n  status:\n    project: off\n    patch: off\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/config.go",
    "content": "package wazero\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/fs\"\n\t\"math\"\n\t\"net\"\n\t\"time\"\n\n\t\"github.com/tetratelabs/wazero/api\"\n\texperimentalsys \"github.com/tetratelabs/wazero/experimental/sys\"\n\t\"github.com/tetratelabs/wazero/internal/filecache\"\n\t\"github.com/tetratelabs/wazero/internal/internalapi\"\n\t\"github.com/tetratelabs/wazero/internal/platform\"\n\tinternalsock \"github.com/tetratelabs/wazero/internal/sock\"\n\tinternalsys \"github.com/tetratelabs/wazero/internal/sys\"\n\t\"github.com/tetratelabs/wazero/internal/wasm\"\n\t\"github.com/tetratelabs/wazero/sys\"\n)\n\n// RuntimeConfig controls runtime behavior, with the default implementation as\n// NewRuntimeConfig\n//\n// The example below explicitly limits to Wasm Core 1.0 features as opposed to\n// relying on defaults:\n//\n//\trConfig = wazero.NewRuntimeConfig().WithCoreFeatures(api.CoreFeaturesV1)\n//\n// # Notes\n//\n//   - This is an interface for decoupling, not third-party implementations.\n//     All implementations are in wazero.\n//   - RuntimeConfig is immutable. Each WithXXX function returns a new instance\n//     including the corresponding change.\ntype RuntimeConfig interface {\n\t// WithCoreFeatures sets the WebAssembly Core specification features this\n\t// runtime supports. Defaults to api.CoreFeaturesV2.\n\t//\n\t// Example of disabling a specific feature:\n\t//\tfeatures := api.CoreFeaturesV2.SetEnabled(api.CoreFeatureMutableGlobal, false)\n\t//\trConfig = wazero.NewRuntimeConfig().WithCoreFeatures(features)\n\t//\n\t// # Why default to version 2.0?\n\t//\n\t// Many compilers that target WebAssembly require features after\n\t// api.CoreFeaturesV1 by default. For example, TinyGo v0.24+ requires\n\t// api.CoreFeatureBulkMemoryOperations. To avoid runtime errors, wazero\n\t// defaults to api.CoreFeaturesV2, even though it is not yet a Web\n\t// Standard (REC).\n\tWithCoreFeatures(api.CoreFeatures) RuntimeConfig\n\n\t// WithMemoryLimitPages overrides the maximum pages allowed per memory. The\n\t// default is 65536, allowing 4GB total memory per instance if the maximum is\n\t// not encoded in a Wasm binary. Setting a value larger than default will panic.\n\t//\n\t// This example reduces the largest possible memory size from 4GB to 128KB:\n\t//\trConfig = wazero.NewRuntimeConfig().WithMemoryLimitPages(2)\n\t//\n\t// Note: Wasm has 32-bit memory and each page is 65536 (2^16) bytes. This\n\t// implies a max of 65536 (2^16) addressable pages.\n\t// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#grow-mem\n\tWithMemoryLimitPages(memoryLimitPages uint32) RuntimeConfig\n\n\t// WithMemoryCapacityFromMax eagerly allocates max memory, unless max is\n\t// not defined. The default is false, which means minimum memory is\n\t// allocated and any call to grow memory results in re-allocations.\n\t//\n\t// This example ensures any memory.grow instruction will never re-allocate:\n\t//\trConfig = wazero.NewRuntimeConfig().WithMemoryCapacityFromMax(true)\n\t//\n\t// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#grow-mem\n\t//\n\t// Note: if the memory maximum is not encoded in a Wasm binary, this\n\t// results in allocating 4GB. See the doc on WithMemoryLimitPages for detail.\n\tWithMemoryCapacityFromMax(memoryCapacityFromMax bool) RuntimeConfig\n\n\t// WithDebugInfoEnabled toggles DWARF based stack traces in the face of\n\t// runtime errors. Defaults to true.\n\t//\n\t// Those who wish to disable this, can like so:\n\t//\n\t//\tr := wazero.NewRuntimeWithConfig(wazero.NewRuntimeConfig().WithDebugInfoEnabled(false)\n\t//\n\t// When disabled, a stack trace message looks like:\n\t//\n\t//\twasm stack trace:\n\t//\t\t.runtime._panic(i32)\n\t//\t\t.myFunc()\n\t//\t\t.main.main()\n\t//\t\t.runtime.run()\n\t//\t\t._start()\n\t//\n\t// When enabled, the stack trace includes source code information:\n\t//\n\t//\twasm stack trace:\n\t//\t\t.runtime._panic(i32)\n\t//\t\t  0x16e2: /opt/homebrew/Cellar/tinygo/0.26.0/src/runtime/runtime_tinygowasm.go:73:6\n\t//\t\t.myFunc()\n\t//\t\t  0x190b: /Users/XXXXX/wazero/internal/testing/dwarftestdata/testdata/main.go:19:7\n\t//\t\t.main.main()\n\t//\t\t  0x18ed: /Users/XXXXX/wazero/internal/testing/dwarftestdata/testdata/main.go:4:3\n\t//\t\t.runtime.run()\n\t//\t\t  0x18cc: /opt/homebrew/Cellar/tinygo/0.26.0/src/runtime/scheduler_none.go:26:10\n\t//\t\t._start()\n\t//\t\t  0x18b6: /opt/homebrew/Cellar/tinygo/0.26.0/src/runtime/runtime_wasm_wasi.go:22:5\n\t//\n\t// Note: This only takes into effect when the original Wasm binary has the\n\t// DWARF \"custom sections\" that are often stripped, depending on\n\t// optimization flags passed to the compiler.\n\tWithDebugInfoEnabled(bool) RuntimeConfig\n\n\t// WithCompilationCache configures how runtime caches the compiled modules. In the default configuration, compilation results are\n\t// only in-memory until Runtime.Close is closed, and not shareable by multiple Runtime.\n\t//\n\t// Below defines the shared cache across multiple instances of Runtime:\n\t//\n\t//\t// Creates the new Cache and the runtime configuration with it.\n\t//\tcache := wazero.NewCompilationCache()\n\t//\tdefer cache.Close()\n\t//\tconfig := wazero.NewRuntimeConfig().WithCompilationCache(c)\n\t//\n\t//\t// Creates two runtimes while sharing compilation caches.\n\t//\tfoo := wazero.NewRuntimeWithConfig(context.Background(), config)\n\t// \tbar := wazero.NewRuntimeWithConfig(context.Background(), config)\n\t//\n\t// # Cache Key\n\t//\n\t// Cached files are keyed on the version of wazero. This is obtained from go.mod of your application,\n\t// and we use it to verify the compatibility of caches against the currently-running wazero.\n\t// However, if you use this in tests of a package not named as `main`, then wazero cannot obtain the correct\n\t// version of wazero due to the known issue of debug.BuildInfo function: https://github.com/golang/go/issues/33976.\n\t// As a consequence, your cache won't contain the correct version information and always be treated as `dev` version.\n\t// To avoid this issue, you can pass -ldflags \"-X github.com/tetratelabs/wazero/internal/version.version=foo\" when running tests.\n\tWithCompilationCache(CompilationCache) RuntimeConfig\n\n\t// WithCustomSections toggles parsing of \"custom sections\". Defaults to false.\n\t//\n\t// When enabled, it is possible to retrieve custom sections from a CompiledModule:\n\t//\n\t//\tconfig := wazero.NewRuntimeConfig().WithCustomSections(true)\n\t//\tr := wazero.NewRuntimeWithConfig(ctx, config)\n\t//\tc, err := r.CompileModule(ctx, wasm)\n\t//\tcustomSections := c.CustomSections()\n\tWithCustomSections(bool) RuntimeConfig\n\n\t// WithCloseOnContextDone ensures the executions of functions to be terminated under one of the following circumstances:\n\t//\n\t// \t- context.Context passed to the Call method of api.Function is canceled during execution. (i.e. ctx by context.WithCancel)\n\t// \t- context.Context passed to the Call method of api.Function reaches timeout during execution. (i.e. ctx by context.WithTimeout or context.WithDeadline)\n\t// \t- Close or CloseWithExitCode of api.Module is explicitly called during execution.\n\t//\n\t// This is especially useful when one wants to run untrusted Wasm binaries since otherwise, any invocation of\n\t// api.Function can potentially block the corresponding Goroutine forever. Moreover, it might block the\n\t// entire underlying OS thread which runs the api.Function call. See \"Why it's safe to execute runtime-generated\n\t// machine codes against async Goroutine preemption\" section in RATIONALE.md for detail.\n\t//\n\t// Upon the termination of the function executions, api.Module is closed.\n\t//\n\t// Note that this comes with a bit of extra cost when enabled. The reason is that internally this forces\n\t// interpreter and compiler runtimes to insert the periodical checks on the conditions above. For that reason,\n\t// this is disabled by default.\n\t//\n\t// See examples in context_done_example_test.go for the end-to-end demonstrations.\n\t//\n\t// When the invocations of api.Function are closed due to this, sys.ExitError is raised to the callers and\n\t// the api.Module from which the functions are derived is made closed.\n\tWithCloseOnContextDone(bool) RuntimeConfig\n}\n\n// NewRuntimeConfig returns a RuntimeConfig using the compiler if it is supported in this environment,\n// or the interpreter otherwise.\nfunc NewRuntimeConfig() RuntimeConfig {\n\tret := engineLessConfig.clone()\n\tret.engineKind = engineKindAuto\n\treturn ret\n}\n\ntype newEngine func(context.Context, api.CoreFeatures, filecache.Cache) wasm.Engine\n\ntype runtimeConfig struct {\n\tenabledFeatures       api.CoreFeatures\n\tmemoryLimitPages      uint32\n\tmemoryCapacityFromMax bool\n\tengineKind            engineKind\n\tdwarfDisabled         bool // negative as defaults to enabled\n\tnewEngine             newEngine\n\tcache                 CompilationCache\n\tstoreCustomSections   bool\n\tensureTermination     bool\n}\n\n// engineLessConfig helps avoid copy/pasting the wrong defaults.\nvar engineLessConfig = &runtimeConfig{\n\tenabledFeatures:       api.CoreFeaturesV2,\n\tmemoryLimitPages:      wasm.MemoryLimitPages,\n\tmemoryCapacityFromMax: false,\n\tdwarfDisabled:         false,\n}\n\ntype engineKind int\n\nconst (\n\tengineKindAuto engineKind = iota - 1\n\tengineKindCompiler\n\tengineKindInterpreter\n\tengineKindCount\n)\n\n// NewRuntimeConfigCompiler compiles WebAssembly modules into\n// runtime.GOARCH-specific assembly for optimal performance.\n//\n// The default implementation is AOT (Ahead of Time) compilation, applied at\n// Runtime.CompileModule. This allows consistent runtime performance, as well\n// the ability to reduce any first request penalty.\n//\n// Note: While this is technically AOT, this does not imply any action on your\n// part. wazero automatically performs ahead-of-time compilation as needed when\n// Runtime.CompileModule is invoked.\n//\n// # Warning\n//\n//   - This panics at runtime if the runtime.GOOS or runtime.GOARCH does not\n//     support compiler. Use NewRuntimeConfig to safely detect and fallback to\n//     NewRuntimeConfigInterpreter if needed.\n//\n//   - If you are using wazero in buildmode=c-archive or c-shared, make sure that you set up the alternate signal stack\n//     by using, e.g. `sigaltstack` combined with `SA_ONSTACK` flag on `sigaction` on Linux,\n//     before calling any api.Function. This is because the Go runtime does not set up the alternate signal stack\n//     for c-archive or c-shared modes, and wazero uses the different stack than the calling Goroutine.\n//     Hence, the signal handler might get invoked on the wazero's stack, which may cause a stack overflow.\n//     https://github.com/tetratelabs/wazero/blob/2092c0a879f30d49d7b37f333f4547574b8afe0d/internal/integration_test/fuzz/fuzz/tests/sigstack.rs#L19-L36\nfunc NewRuntimeConfigCompiler() RuntimeConfig {\n\tret := engineLessConfig.clone()\n\tret.engineKind = engineKindCompiler\n\treturn ret\n}\n\n// NewRuntimeConfigInterpreter interprets WebAssembly modules instead of compiling them into assembly.\nfunc NewRuntimeConfigInterpreter() RuntimeConfig {\n\tret := engineLessConfig.clone()\n\tret.engineKind = engineKindInterpreter\n\treturn ret\n}\n\n// clone makes a deep copy of this runtime config.\nfunc (c *runtimeConfig) clone() *runtimeConfig {\n\tret := *c // copy except maps which share a ref\n\treturn &ret\n}\n\n// WithCoreFeatures implements RuntimeConfig.WithCoreFeatures\nfunc (c *runtimeConfig) WithCoreFeatures(features api.CoreFeatures) RuntimeConfig {\n\tret := c.clone()\n\tret.enabledFeatures = features\n\treturn ret\n}\n\n// WithCloseOnContextDone implements RuntimeConfig.WithCloseOnContextDone\nfunc (c *runtimeConfig) WithCloseOnContextDone(ensure bool) RuntimeConfig {\n\tret := c.clone()\n\tret.ensureTermination = ensure\n\treturn ret\n}\n\n// WithMemoryLimitPages implements RuntimeConfig.WithMemoryLimitPages\nfunc (c *runtimeConfig) WithMemoryLimitPages(memoryLimitPages uint32) RuntimeConfig {\n\tret := c.clone()\n\t// This panics instead of returning an error as it is unlikely.\n\tif memoryLimitPages > wasm.MemoryLimitPages {\n\t\tpanic(fmt.Errorf(\"memoryLimitPages invalid: %d > %d\", memoryLimitPages, wasm.MemoryLimitPages))\n\t}\n\tret.memoryLimitPages = memoryLimitPages\n\treturn ret\n}\n\n// WithCompilationCache implements RuntimeConfig.WithCompilationCache\nfunc (c *runtimeConfig) WithCompilationCache(ca CompilationCache) RuntimeConfig {\n\tret := c.clone()\n\tret.cache = ca\n\treturn ret\n}\n\n// WithMemoryCapacityFromMax implements RuntimeConfig.WithMemoryCapacityFromMax\nfunc (c *runtimeConfig) WithMemoryCapacityFromMax(memoryCapacityFromMax bool) RuntimeConfig {\n\tret := c.clone()\n\tret.memoryCapacityFromMax = memoryCapacityFromMax\n\treturn ret\n}\n\n// WithDebugInfoEnabled implements RuntimeConfig.WithDebugInfoEnabled\nfunc (c *runtimeConfig) WithDebugInfoEnabled(dwarfEnabled bool) RuntimeConfig {\n\tret := c.clone()\n\tret.dwarfDisabled = !dwarfEnabled\n\treturn ret\n}\n\n// WithCustomSections implements RuntimeConfig.WithCustomSections\nfunc (c *runtimeConfig) WithCustomSections(storeCustomSections bool) RuntimeConfig {\n\tret := c.clone()\n\tret.storeCustomSections = storeCustomSections\n\treturn ret\n}\n\n// CompiledModule is a WebAssembly module ready to be instantiated (Runtime.InstantiateModule) as an api.Module.\n//\n// In WebAssembly terminology, this is a decoded, validated, and possibly also compiled module. wazero avoids using\n// the name \"Module\" for both before and after instantiation as the name conflation has caused confusion.\n// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#semantic-phases%E2%91%A0\n//\n// # Notes\n//\n//   - This is an interface for decoupling, not third-party implementations.\n//     All implementations are in wazero.\n//   - Closing the wazero.Runtime closes any CompiledModule it compiled.\ntype CompiledModule interface {\n\t// Name returns the module name encoded into the binary or empty if not.\n\tName() string\n\n\t// ImportedFunctions returns all the imported functions\n\t// (api.FunctionDefinition) in this module or nil if there are none.\n\t//\n\t// Note: Unlike ExportedFunctions, there is no unique constraint on\n\t// imports.\n\tImportedFunctions() []api.FunctionDefinition\n\n\t// ExportedFunctions returns all the exported functions\n\t// (api.FunctionDefinition) in this module keyed on export name.\n\tExportedFunctions() map[string]api.FunctionDefinition\n\n\t// ImportedMemories returns all the imported memories\n\t// (api.MemoryDefinition) in this module or nil if there are none.\n\t//\n\t// ## Notes\n\t//   - As of WebAssembly Core Specification 2.0, there can be at most one\n\t//     memory.\n\t//   - Unlike ExportedMemories, there is no unique constraint on imports.\n\tImportedMemories() []api.MemoryDefinition\n\n\t// ExportedMemories returns all the exported memories\n\t// (api.MemoryDefinition) in this module keyed on export name.\n\t//\n\t// Note: As of WebAssembly Core Specification 2.0, there can be at most one\n\t// memory.\n\tExportedMemories() map[string]api.MemoryDefinition\n\n\t// CustomSections returns all the custom sections\n\t// (api.CustomSection) in this module keyed on the section name.\n\tCustomSections() []api.CustomSection\n\n\t// Close releases all the allocated resources for this CompiledModule.\n\t//\n\t// Note: It is safe to call Close while having outstanding calls from an\n\t// api.Module instantiated from this.\n\tClose(context.Context) error\n}\n\n// compile-time check to ensure compiledModule implements CompiledModule\nvar _ CompiledModule = &compiledModule{}\n\ntype compiledModule struct {\n\tmodule *wasm.Module\n\t// compiledEngine holds an engine on which `module` is compiled.\n\tcompiledEngine wasm.Engine\n\t// closeWithModule prevents leaking compiled code when a module is compiled implicitly.\n\tcloseWithModule bool\n\ttypeIDs         []wasm.FunctionTypeID\n}\n\n// Name implements CompiledModule.Name\nfunc (c *compiledModule) Name() (moduleName string) {\n\tif ns := c.module.NameSection; ns != nil {\n\t\tmoduleName = ns.ModuleName\n\t}\n\treturn\n}\n\n// Close implements CompiledModule.Close\nfunc (c *compiledModule) Close(context.Context) error {\n\tc.compiledEngine.DeleteCompiledModule(c.module)\n\t// It is possible the underlying may need to return an error later, but in any case this matches api.Module.Close.\n\treturn nil\n}\n\n// ImportedFunctions implements CompiledModule.ImportedFunctions\nfunc (c *compiledModule) ImportedFunctions() []api.FunctionDefinition {\n\treturn c.module.ImportedFunctions()\n}\n\n// ExportedFunctions implements CompiledModule.ExportedFunctions\nfunc (c *compiledModule) ExportedFunctions() map[string]api.FunctionDefinition {\n\treturn c.module.ExportedFunctions()\n}\n\n// ImportedMemories implements CompiledModule.ImportedMemories\nfunc (c *compiledModule) ImportedMemories() []api.MemoryDefinition {\n\treturn c.module.ImportedMemories()\n}\n\n// ExportedMemories implements CompiledModule.ExportedMemories\nfunc (c *compiledModule) ExportedMemories() map[string]api.MemoryDefinition {\n\treturn c.module.ExportedMemories()\n}\n\n// CustomSections implements CompiledModule.CustomSections\nfunc (c *compiledModule) CustomSections() []api.CustomSection {\n\tret := make([]api.CustomSection, len(c.module.CustomSections))\n\tfor i, d := range c.module.CustomSections {\n\t\tret[i] = &customSection{data: d.Data, name: d.Name}\n\t}\n\treturn ret\n}\n\n// customSection implements wasm.CustomSection\ntype customSection struct {\n\tinternalapi.WazeroOnlyType\n\tname string\n\tdata []byte\n}\n\n// Name implements wasm.CustomSection.Name\nfunc (c *customSection) Name() string {\n\treturn c.name\n}\n\n// Data implements wasm.CustomSection.Data\nfunc (c *customSection) Data() []byte {\n\treturn c.data\n}\n\n// ModuleConfig configures resources needed by functions that have low-level interactions with the host operating\n// system. Using this, resources such as STDIN can be isolated, so that the same module can be safely instantiated\n// multiple times.\n//\n// Here's an example:\n//\n//\t// Initialize base configuration:\n//\tconfig := wazero.NewModuleConfig().WithStdout(buf).WithSysNanotime()\n//\n//\t// Assign different configuration on each instantiation\n//\tmod, _ := r.InstantiateModule(ctx, compiled, config.WithName(\"rotate\").WithArgs(\"rotate\", \"angle=90\", \"dir=cw\"))\n//\n// While wazero supports Windows as a platform, host functions using ModuleConfig follow a UNIX dialect.\n// See RATIONALE.md for design background and relationship to WebAssembly System Interfaces (WASI).\n//\n// # Notes\n//\n//   - This is an interface for decoupling, not third-party implementations.\n//     All implementations are in wazero.\n//   - ModuleConfig is immutable. Each WithXXX function returns a new instance\n//     including the corresponding change.\ntype ModuleConfig interface {\n\t// WithArgs assigns command-line arguments visible to an imported function that reads an arg vector (argv). Defaults to\n\t// none. Runtime.InstantiateModule errs if any arg is empty.\n\t//\n\t// These values are commonly read by the functions like \"args_get\" in \"wasi_snapshot_preview1\" although they could be\n\t// read by functions imported from other modules.\n\t//\n\t// Similar to os.Args and exec.Cmd Env, many implementations would expect a program name to be argv[0]. However, neither\n\t// WebAssembly nor WebAssembly System Interfaces (WASI) define this. Regardless, you may choose to set the first\n\t// argument to the same value set via WithName.\n\t//\n\t// Note: This does not default to os.Args as that violates sandboxing.\n\t//\n\t// See https://linux.die.net/man/3/argv and https://en.wikipedia.org/wiki/Null-terminated_string\n\tWithArgs(...string) ModuleConfig\n\n\t// WithEnv sets an environment variable visible to a Module that imports functions. Defaults to none.\n\t// Runtime.InstantiateModule errs if the key is empty or contains a NULL(0) or equals(\"\") character.\n\t//\n\t// Validation is the same as os.Setenv on Linux and replaces any existing value. Unlike exec.Cmd Env, this does not\n\t// default to the current process environment as that would violate sandboxing. This also does not preserve order.\n\t//\n\t// Environment variables are commonly read by the functions like \"environ_get\" in \"wasi_snapshot_preview1\" although\n\t// they could be read by functions imported from other modules.\n\t//\n\t// While similar to process configuration, there are no assumptions that can be made about anything OS-specific. For\n\t// example, neither WebAssembly nor WebAssembly System Interfaces (WASI) define concerns processes have, such as\n\t// case-sensitivity on environment keys. For portability, define entries with case-insensitively unique keys.\n\t//\n\t// See https://linux.die.net/man/3/environ and https://en.wikipedia.org/wiki/Null-terminated_string\n\tWithEnv(key, value string) ModuleConfig\n\n\t// WithFS is a convenience that calls WithFSConfig with an FSConfig of the\n\t// input for the root (\"/\") guest path.\n\tWithFS(fs.FS) ModuleConfig\n\n\t// WithFSConfig configures the filesystem available to each guest\n\t// instantiated with this configuration. By default, no file access is\n\t// allowed, so functions like `path_open` result in unsupported errors\n\t// (e.g. syscall.ENOSYS).\n\tWithFSConfig(FSConfig) ModuleConfig\n\n\t// WithName configures the module name. Defaults to what was decoded from\n\t// the name section. Duplicate names are not allowed in a single Runtime.\n\t//\n\t// Calling this with the empty string \"\" makes the module anonymous.\n\t// That is useful when you want to instantiate the same CompiledModule multiple times like below:\n\t//\n\t// \tfor i := 0; i < N; i++ {\n\t//\t\t// Instantiate a new Wasm module from the already compiled `compiledWasm` anonymously without a name.\n\t//\t\tinstance, err := r.InstantiateModule(ctx, compiledWasm, wazero.NewModuleConfig().WithName(\"\"))\n\t//\t\t// ....\n\t//\t}\n\t//\n\t// See the `concurrent-instantiation` example for a complete usage.\n\t//\n\t// Non-empty named modules are available for other modules to import by name.\n\tWithName(string) ModuleConfig\n\n\t// WithStartFunctions configures the functions to call after the module is\n\t// instantiated. Defaults to \"_start\".\n\t//\n\t// Clearing the default is supported, via `WithStartFunctions()`.\n\t//\n\t// # Notes\n\t//\n\t//   - If a start function doesn't exist, it is skipped. However, any that\n\t//     do exist are called in order.\n\t//   - Start functions are not intended to be called multiple times.\n\t//     Functions that should be called multiple times should be invoked\n\t//     manually via api.Module's `ExportedFunction` method.\n\t//   - Start functions commonly exit the module during instantiation,\n\t//     preventing use of any functions later. This is the case in \"wasip1\",\n\t//     which defines the default value \"_start\".\n\t//   - See /RATIONALE.md for motivation of this feature.\n\tWithStartFunctions(...string) ModuleConfig\n\n\t// WithStderr configures where standard error (file descriptor 2) is written. Defaults to io.Discard.\n\t//\n\t// This writer is most commonly used by the functions like \"fd_write\" in \"wasi_snapshot_preview1\" although it could\n\t// be used by functions imported from other modules.\n\t//\n\t// # Notes\n\t//\n\t//   - The caller is responsible to close any io.Writer they supply: It is not closed on api.Module Close.\n\t//   - This does not default to os.Stderr as that both violates sandboxing and prevents concurrent modules.\n\t//\n\t// See https://linux.die.net/man/3/stderr\n\tWithStderr(io.Writer) ModuleConfig\n\n\t// WithStdin configures where standard input (file descriptor 0) is read. Defaults to return io.EOF.\n\t//\n\t// This reader is most commonly used by the functions like \"fd_read\" in \"wasi_snapshot_preview1\" although it could\n\t// be used by functions imported from other modules.\n\t//\n\t// # Notes\n\t//\n\t//   - The caller is responsible to close any io.Reader they supply: It is not closed on api.Module Close.\n\t//   - This does not default to os.Stdin as that both violates sandboxing and prevents concurrent modules.\n\t//\n\t// See https://linux.die.net/man/3/stdin\n\tWithStdin(io.Reader) ModuleConfig\n\n\t// WithStdout configures where standard output (file descriptor 1) is written. Defaults to io.Discard.\n\t//\n\t// This writer is most commonly used by the functions like \"fd_write\" in \"wasi_snapshot_preview1\" although it could\n\t// be used by functions imported from other modules.\n\t//\n\t// # Notes\n\t//\n\t//   - The caller is responsible to close any io.Writer they supply: It is not closed on api.Module Close.\n\t//   - This does not default to os.Stdout as that both violates sandboxing and prevents concurrent modules.\n\t//\n\t// See https://linux.die.net/man/3/stdout\n\tWithStdout(io.Writer) ModuleConfig\n\n\t// WithWalltime configures the wall clock, sometimes referred to as the\n\t// real time clock. sys.Walltime returns the current unix/epoch time,\n\t// seconds since midnight UTC 1 January 1970, with a nanosecond fraction.\n\t// This defaults to a fake result that increases by 1ms on each reading.\n\t//\n\t// Here's an example that uses a custom clock:\n\t//\tmoduleConfig = moduleConfig.\n\t//\t\tWithWalltime(func(context.Context) (sec int64, nsec int32) {\n\t//\t\t\treturn clock.walltime()\n\t//\t\t}, sys.ClockResolution(time.Microsecond.Nanoseconds()))\n\t//\n\t// # Notes:\n\t//   - This does not default to time.Now as that violates sandboxing.\n\t//   - This is used to implement host functions such as WASI\n\t//     `clock_time_get` with the `realtime` clock ID.\n\t//   - Use WithSysWalltime for a usable implementation.\n\tWithWalltime(sys.Walltime, sys.ClockResolution) ModuleConfig\n\n\t// WithSysWalltime uses time.Now for sys.Walltime with a resolution of 1us\n\t// (1000ns).\n\t//\n\t// See WithWalltime\n\tWithSysWalltime() ModuleConfig\n\n\t// WithNanotime configures the monotonic clock, used to measure elapsed\n\t// time in nanoseconds. Defaults to a fake result that increases by 1ms\n\t// on each reading.\n\t//\n\t// Here's an example that uses a custom clock:\n\t//\tmoduleConfig = moduleConfig.\n\t//\t\tWithNanotime(func(context.Context) int64 {\n\t//\t\t\treturn clock.nanotime()\n\t//\t\t}, sys.ClockResolution(time.Microsecond.Nanoseconds()))\n\t//\n\t// # Notes:\n\t//   - This does not default to time.Since as that violates sandboxing.\n\t//   - This is used to implement host functions such as WASI\n\t//     `clock_time_get` with the `monotonic` clock ID.\n\t//   - Some compilers implement sleep by looping on sys.Nanotime (e.g. Go).\n\t//   - If you set this, you should probably set WithNanosleep also.\n\t//   - Use WithSysNanotime for a usable implementation.\n\tWithNanotime(sys.Nanotime, sys.ClockResolution) ModuleConfig\n\n\t// WithSysNanotime uses time.Now for sys.Nanotime with a resolution of 1us.\n\t//\n\t// See WithNanotime\n\tWithSysNanotime() ModuleConfig\n\n\t// WithNanosleep configures the how to pause the current goroutine for at\n\t// least the configured nanoseconds. Defaults to return immediately.\n\t//\n\t// This example uses a custom sleep function:\n\t//\tmoduleConfig = moduleConfig.\n\t//\t\tWithNanosleep(func(ns int64) {\n\t//\t\t\trel := unix.NsecToTimespec(ns)\n\t//\t\t\tremain := unix.Timespec{}\n\t//\t\t\tfor { // loop until no more time remaining\n\t//\t\t\t\terr := unix.ClockNanosleep(unix.CLOCK_MONOTONIC, 0, &rel, &remain)\n\t//\t\t\t--snip--\n\t//\n\t// # Notes:\n\t//   - This does not default to time.Sleep as that violates sandboxing.\n\t//   - This is used to implement host functions such as WASI `poll_oneoff`.\n\t//   - Some compilers implement sleep by looping on sys.Nanotime (e.g. Go).\n\t//   - If you set this, you should probably set WithNanotime also.\n\t//   - Use WithSysNanosleep for a usable implementation.\n\tWithNanosleep(sys.Nanosleep) ModuleConfig\n\n\t// WithOsyield yields the processor, typically to implement spin-wait\n\t// loops. Defaults to return immediately.\n\t//\n\t// # Notes:\n\t//   - This primarily supports `sched_yield` in WASI\n\t//   - This does not default to runtime.osyield as that violates sandboxing.\n\tWithOsyield(sys.Osyield) ModuleConfig\n\n\t// WithSysNanosleep uses time.Sleep for sys.Nanosleep.\n\t//\n\t// See WithNanosleep\n\tWithSysNanosleep() ModuleConfig\n\n\t// WithRandSource configures a source of random bytes. Defaults to return a\n\t// deterministic source. You might override this with crypto/rand.Reader\n\t//\n\t// This reader is most commonly used by the functions like \"random_get\" in\n\t// \"wasi_snapshot_preview1\", \"seed\" in AssemblyScript standard \"env\", and\n\t// \"getRandomData\" when runtime.GOOS is \"js\".\n\t//\n\t// Note: The caller is responsible to close any io.Reader they supply: It\n\t// is not closed on api.Module Close.\n\tWithRandSource(io.Reader) ModuleConfig\n}\n\ntype moduleConfig struct {\n\tname               string\n\tnameSet            bool\n\tstartFunctions     []string\n\tstdin              io.Reader\n\tstdout             io.Writer\n\tstderr             io.Writer\n\trandSource         io.Reader\n\twalltime           sys.Walltime\n\twalltimeResolution sys.ClockResolution\n\tnanotime           sys.Nanotime\n\tnanotimeResolution sys.ClockResolution\n\tnanosleep          sys.Nanosleep\n\tosyield            sys.Osyield\n\targs               [][]byte\n\t// environ is pair-indexed to retain order similar to os.Environ.\n\tenviron [][]byte\n\t// environKeys allow overwriting of existing values.\n\tenvironKeys map[string]int\n\t// fsConfig is the file system configuration for ABI like WASI.\n\tfsConfig FSConfig\n\t// sockConfig is the network listener configuration for ABI like WASI.\n\tsockConfig *internalsock.Config\n}\n\n// NewModuleConfig returns a ModuleConfig that can be used for configuring module instantiation.\nfunc NewModuleConfig() ModuleConfig {\n\treturn &moduleConfig{\n\t\tstartFunctions: []string{\"_start\"},\n\t\tenvironKeys:    map[string]int{},\n\t}\n}\n\n// clone makes a deep copy of this module config.\nfunc (c *moduleConfig) clone() *moduleConfig {\n\tret := *c // copy except maps which share a ref\n\tret.environKeys = make(map[string]int, len(c.environKeys))\n\tfor key, value := range c.environKeys {\n\t\tret.environKeys[key] = value\n\t}\n\treturn &ret\n}\n\n// WithArgs implements ModuleConfig.WithArgs\nfunc (c *moduleConfig) WithArgs(args ...string) ModuleConfig {\n\tret := c.clone()\n\tret.args = toByteSlices(args)\n\treturn ret\n}\n\nfunc toByteSlices(strings []string) (result [][]byte) {\n\tif len(strings) == 0 {\n\t\treturn\n\t}\n\tresult = make([][]byte, len(strings))\n\tfor i, a := range strings {\n\t\tresult[i] = []byte(a)\n\t}\n\treturn\n}\n\n// WithEnv implements ModuleConfig.WithEnv\nfunc (c *moduleConfig) WithEnv(key, value string) ModuleConfig {\n\tret := c.clone()\n\t// Check to see if this key already exists and update it.\n\tif i, ok := ret.environKeys[key]; ok {\n\t\tret.environ[i+1] = []byte(value) // environ is pair-indexed, so the value is 1 after the key.\n\t} else {\n\t\tret.environKeys[key] = len(ret.environ)\n\t\tret.environ = append(ret.environ, []byte(key), []byte(value))\n\t}\n\treturn ret\n}\n\n// WithFS implements ModuleConfig.WithFS\nfunc (c *moduleConfig) WithFS(fs fs.FS) ModuleConfig {\n\tvar config FSConfig\n\tif fs != nil {\n\t\tconfig = NewFSConfig().WithFSMount(fs, \"\")\n\t}\n\treturn c.WithFSConfig(config)\n}\n\n// WithFSConfig implements ModuleConfig.WithFSConfig\nfunc (c *moduleConfig) WithFSConfig(config FSConfig) ModuleConfig {\n\tret := c.clone()\n\tret.fsConfig = config\n\treturn ret\n}\n\n// WithName implements ModuleConfig.WithName\nfunc (c *moduleConfig) WithName(name string) ModuleConfig {\n\tret := c.clone()\n\tret.nameSet = true\n\tret.name = name\n\treturn ret\n}\n\n// WithStartFunctions implements ModuleConfig.WithStartFunctions\nfunc (c *moduleConfig) WithStartFunctions(startFunctions ...string) ModuleConfig {\n\tret := c.clone()\n\tret.startFunctions = startFunctions\n\treturn ret\n}\n\n// WithStderr implements ModuleConfig.WithStderr\nfunc (c *moduleConfig) WithStderr(stderr io.Writer) ModuleConfig {\n\tret := c.clone()\n\tret.stderr = stderr\n\treturn ret\n}\n\n// WithStdin implements ModuleConfig.WithStdin\nfunc (c *moduleConfig) WithStdin(stdin io.Reader) ModuleConfig {\n\tret := c.clone()\n\tret.stdin = stdin\n\treturn ret\n}\n\n// WithStdout implements ModuleConfig.WithStdout\nfunc (c *moduleConfig) WithStdout(stdout io.Writer) ModuleConfig {\n\tret := c.clone()\n\tret.stdout = stdout\n\treturn ret\n}\n\n// WithWalltime implements ModuleConfig.WithWalltime\nfunc (c *moduleConfig) WithWalltime(walltime sys.Walltime, resolution sys.ClockResolution) ModuleConfig {\n\tret := c.clone()\n\tret.walltime = walltime\n\tret.walltimeResolution = resolution\n\treturn ret\n}\n\n// We choose arbitrary resolutions here because there's no perfect alternative. For example, according to the\n// source in time.go, windows monotonic resolution can be 15ms. This chooses arbitrarily 1us for wall time and\n// 1ns for monotonic. See RATIONALE.md for more context.\n\n// WithSysWalltime implements ModuleConfig.WithSysWalltime\nfunc (c *moduleConfig) WithSysWalltime() ModuleConfig {\n\treturn c.WithWalltime(platform.Walltime, sys.ClockResolution(time.Microsecond.Nanoseconds()))\n}\n\n// WithNanotime implements ModuleConfig.WithNanotime\nfunc (c *moduleConfig) WithNanotime(nanotime sys.Nanotime, resolution sys.ClockResolution) ModuleConfig {\n\tret := c.clone()\n\tret.nanotime = nanotime\n\tret.nanotimeResolution = resolution\n\treturn ret\n}\n\n// WithSysNanotime implements ModuleConfig.WithSysNanotime\nfunc (c *moduleConfig) WithSysNanotime() ModuleConfig {\n\treturn c.WithNanotime(platform.Nanotime, sys.ClockResolution(1))\n}\n\n// WithNanosleep implements ModuleConfig.WithNanosleep\nfunc (c *moduleConfig) WithNanosleep(nanosleep sys.Nanosleep) ModuleConfig {\n\tret := *c // copy\n\tret.nanosleep = nanosleep\n\treturn &ret\n}\n\n// WithOsyield implements ModuleConfig.WithOsyield\nfunc (c *moduleConfig) WithOsyield(osyield sys.Osyield) ModuleConfig {\n\tret := *c // copy\n\tret.osyield = osyield\n\treturn &ret\n}\n\n// WithSysNanosleep implements ModuleConfig.WithSysNanosleep\nfunc (c *moduleConfig) WithSysNanosleep() ModuleConfig {\n\treturn c.WithNanosleep(platform.Nanosleep)\n}\n\n// WithRandSource implements ModuleConfig.WithRandSource\nfunc (c *moduleConfig) WithRandSource(source io.Reader) ModuleConfig {\n\tret := c.clone()\n\tret.randSource = source\n\treturn ret\n}\n\n// toSysContext creates a baseline wasm.Context configured by ModuleConfig.\nfunc (c *moduleConfig) toSysContext() (sysCtx *internalsys.Context, err error) {\n\tvar environ [][]byte // Intentionally doesn't pre-allocate to reduce logic to default to nil.\n\t// Same validation as syscall.Setenv for Linux\n\tfor i := 0; i < len(c.environ); i += 2 {\n\t\tkey, value := c.environ[i], c.environ[i+1]\n\t\tkeyLen := len(key)\n\t\tif keyLen == 0 {\n\t\t\terr = errors.New(\"environ invalid: empty key\")\n\t\t\treturn\n\t\t}\n\t\tvalueLen := len(value)\n\t\tresult := make([]byte, keyLen+valueLen+1)\n\t\tj := 0\n\t\tfor ; j < keyLen; j++ {\n\t\t\tif k := key[j]; k == '=' { // NUL enforced in NewContext\n\t\t\t\terr = errors.New(\"environ invalid: key contains '=' character\")\n\t\t\t\treturn\n\t\t\t} else {\n\t\t\t\tresult[j] = k\n\t\t\t}\n\t\t}\n\t\tresult[j] = '='\n\t\tcopy(result[j+1:], value)\n\t\tenviron = append(environ, result)\n\t}\n\n\tvar fs []experimentalsys.FS\n\tvar guestPaths []string\n\tif f, ok := c.fsConfig.(*fsConfig); ok {\n\t\tfs, guestPaths = f.preopens()\n\t}\n\n\tvar listeners []*net.TCPListener\n\tif n := c.sockConfig; n != nil {\n\t\tif listeners, err = n.BuildTCPListeners(); err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\n\treturn internalsys.NewContext(\n\t\tmath.MaxUint32,\n\t\tc.args,\n\t\tenviron,\n\t\tc.stdin,\n\t\tc.stdout,\n\t\tc.stderr,\n\t\tc.randSource,\n\t\tc.walltime, c.walltimeResolution,\n\t\tc.nanotime, c.nanotimeResolution,\n\t\tc.nanosleep, c.osyield,\n\t\tfs, guestPaths,\n\t\tlisteners,\n\t)\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/experimental/checkpoint.go",
    "content": "package experimental\n\nimport (\n\t\"context\"\n\n\t\"github.com/tetratelabs/wazero/internal/expctxkeys\"\n)\n\n// Snapshot holds the execution state at the time of a Snapshotter.Snapshot call.\ntype Snapshot interface {\n\t// Restore sets the Wasm execution state to the capture. Because a host function\n\t// calling this is resetting the pointer to the executation stack, the host function\n\t// will not be able to return values in the normal way. ret is a slice of values the\n\t// host function intends to return from the restored function.\n\tRestore(ret []uint64)\n}\n\n// Snapshotter allows host functions to snapshot the WebAssembly execution environment.\ntype Snapshotter interface {\n\t// Snapshot captures the current execution state.\n\tSnapshot() Snapshot\n}\n\n// WithSnapshotter enables snapshots.\n// Passing the returned context to a exported function invocation enables snapshots,\n// and allows host functions to retrieve the Snapshotter using GetSnapshotter.\nfunc WithSnapshotter(ctx context.Context) context.Context {\n\treturn context.WithValue(ctx, expctxkeys.EnableSnapshotterKey{}, struct{}{})\n}\n\n// GetSnapshotter gets the Snapshotter from a host function.\n// It is only present if WithSnapshotter was called with the function invocation context.\nfunc GetSnapshotter(ctx context.Context) Snapshotter {\n\treturn ctx.Value(expctxkeys.SnapshotterKey{}).(Snapshotter)\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/experimental/close.go",
    "content": "package experimental\n\nimport (\n\t\"context\"\n\n\t\"github.com/tetratelabs/wazero/internal/expctxkeys\"\n)\n\n// CloseNotifier is a notification hook, invoked when a module is closed.\n//\n// Note: This is experimental progress towards #1197, and likely to change. Do\n// not expose this in shared libraries as it can cause version locks.\ntype CloseNotifier interface {\n\t// CloseNotify is a notification that occurs *before* an api.Module is\n\t// closed. `exitCode` is zero on success or in the case there was no exit\n\t// code.\n\t//\n\t// Notes:\n\t//   - This does not return an error because the module will be closed\n\t//     unconditionally.\n\t//   - Do not panic from this function as it doing so could cause resource\n\t//     leaks.\n\t//   - While this is only called once per module, if configured for\n\t//     multiple modules, it will be called for each, e.g. on runtime close.\n\tCloseNotify(ctx context.Context, exitCode uint32)\n}\n\n// ^-- Note: This might need to be a part of the listener or become a part of\n// host state implementation. For example, if this is used to implement state\n// cleanup for host modules, possibly something like below would be better, as\n// it could be implemented in a way that allows concurrent module use.\n//\n//\t// key is like a context key, stateFactory is invoked per instantiate and\n//\t// is associated with the key (exposed as `Module.State` similar to go\n//\t// context). Using a key is better than the module name because we can\n//\t// de-dupe it for host modules that can be instantiated into different\n//\t// names. Also, you can make the key package private.\n//\tHostModuleBuilder.WithState(key any, stateFactory func() Cleanup)`\n//\n// Such a design could work to isolate state only needed for wasip1, for\n// example the dirent cache. However, if end users use this for different\n// things, we may need separate designs.\n//\n// In summary, the purpose of this iteration is to identify projects that\n// would use something like this, and then we can figure out which way it\n// should go.\n\n// CloseNotifyFunc is a convenience for defining inlining a CloseNotifier.\ntype CloseNotifyFunc func(ctx context.Context, exitCode uint32)\n\n// CloseNotify implements CloseNotifier.CloseNotify.\nfunc (f CloseNotifyFunc) CloseNotify(ctx context.Context, exitCode uint32) {\n\tf(ctx, exitCode)\n}\n\n// WithCloseNotifier registers the given CloseNotifier into the given\n// context.Context.\nfunc WithCloseNotifier(ctx context.Context, notifier CloseNotifier) context.Context {\n\tif notifier != nil {\n\t\treturn context.WithValue(ctx, expctxkeys.CloseNotifierKey{}, notifier)\n\t}\n\treturn ctx\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/experimental/compilationworkers.go",
    "content": "package experimental\n\nimport (\n\t\"context\"\n\n\t\"github.com/tetratelabs/wazero/internal/expctxkeys\"\n)\n\n// WithCompilationWorkers sets the desired number of compilation workers.\nfunc WithCompilationWorkers(ctx context.Context, workers int) context.Context {\n\treturn context.WithValue(ctx, expctxkeys.CompilationWorkers{}, workers)\n}\n\n// GetCompilationWorkers returns the desired number of compilation workers.\n// The minimum value returned is 1.\nfunc GetCompilationWorkers(ctx context.Context) int {\n\tworkers, _ := ctx.Value(expctxkeys.CompilationWorkers{}).(int)\n\treturn max(workers, 1)\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/experimental/experimental.go",
    "content": "// Package experimental includes features we aren't yet sure about. These are enabled with context.Context keys.\n//\n// Note: All features here may be changed or deleted at any time, so use with caution!\npackage experimental\n\nimport (\n\t\"github.com/tetratelabs/wazero/api\"\n)\n\n// InternalModule is an api.Module that exposes additional\n// information.\ntype InternalModule interface {\n\tapi.Module\n\n\t// NumGlobal returns the count of all globals in the module.\n\tNumGlobal() int\n\n\t// Global provides a read-only view for a given global index.\n\t//\n\t// The methods panics if i is out of bounds.\n\tGlobal(i int) api.Global\n}\n\n// ProgramCounter is an opaque value representing a specific execution point in\n// a module. It is meant to be used with Function.SourceOffsetForPC and\n// StackIterator.\ntype ProgramCounter uint64\n\n// InternalFunction exposes some information about a function instance.\ntype InternalFunction interface {\n\t// Definition provides introspection into the function's names and\n\t// signature.\n\tDefinition() api.FunctionDefinition\n\n\t// SourceOffsetForPC resolves a program counter into its corresponding\n\t// offset in the Code section of the module this function belongs to.\n\t// The source offset is meant to help map the function calls to their\n\t// location in the original source files. Returns 0 if the offset cannot\n\t// be calculated.\n\tSourceOffsetForPC(pc ProgramCounter) uint64\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/experimental/features.go",
    "content": "package experimental\n\nimport \"github.com/tetratelabs/wazero/api\"\n\n// CoreFeaturesThreads enables threads instructions (\"threads\").\n//\n// # Notes\n//\n//   - The instruction list is too long to enumerate in godoc.\n//     See https://github.com/WebAssembly/threads/blob/main/proposals/threads/Overview.md\n//   - Atomic operations are guest-only until api.Memory or otherwise expose them to host functions.\n//   - On systems without mmap available, the memory will pre-allocate to the maximum size. Many\n//     binaries will use a theroetical maximum like 4GB, so if using such a binary on a system\n//     without mmap, consider editing the binary to reduce the max size setting of memory.\nconst CoreFeaturesThreads = api.CoreFeatureSIMD << 1\n\n// CoreFeaturesThreads enables tail call instructions (\"tail-call\").\nconst CoreFeaturesTailCall = api.CoreFeatureSIMD << 2\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/experimental/importresolver.go",
    "content": "package experimental\n\nimport (\n\t\"context\"\n\n\t\"github.com/tetratelabs/wazero/api\"\n\t\"github.com/tetratelabs/wazero/internal/expctxkeys\"\n)\n\n// ImportResolver is an experimental func type that, if set,\n// will be used as the first step in resolving imports.\n// See issue 2294.\n// If the import name is not found, it should return nil.\ntype ImportResolver func(name string) api.Module\n\n// WithImportResolver returns a new context with the given ImportResolver.\nfunc WithImportResolver(ctx context.Context, resolver ImportResolver) context.Context {\n\treturn context.WithValue(ctx, expctxkeys.ImportResolverKey{}, resolver)\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/experimental/listener.go",
    "content": "package experimental\n\nimport (\n\t\"context\"\n\n\t\"github.com/tetratelabs/wazero/api\"\n\t\"github.com/tetratelabs/wazero/internal/expctxkeys\"\n)\n\n// StackIterator allows iterating on each function of the call stack, starting\n// from the top. At least one call to Next() is required to start the iteration.\n//\n// Note: The iterator provides a view of the call stack at the time of\n// iteration. As a result, parameter values may be different than the ones their\n// function was called with.\ntype StackIterator interface {\n\t// Next moves the iterator to the next function in the stack. Returns\n\t// false if it reached the bottom of the stack.\n\tNext() bool\n\t// Function describes the function called by the current frame.\n\tFunction() InternalFunction\n\t// ProgramCounter returns the program counter associated with the\n\t// function call.\n\tProgramCounter() ProgramCounter\n}\n\n// WithFunctionListenerFactory registers a FunctionListenerFactory\n// with the context.\nfunc WithFunctionListenerFactory(ctx context.Context, factory FunctionListenerFactory) context.Context {\n\treturn context.WithValue(ctx, expctxkeys.FunctionListenerFactoryKey{}, factory)\n}\n\n// FunctionListenerFactory returns FunctionListeners to be notified when a\n// function is called.\ntype FunctionListenerFactory interface {\n\t// NewFunctionListener returns a FunctionListener for a defined function.\n\t// If nil is returned, no listener will be notified.\n\tNewFunctionListener(api.FunctionDefinition) FunctionListener\n\t// ^^ A single instance can be returned to avoid instantiating a listener\n\t// per function, especially as they may be thousands of functions. Shared\n\t// listeners use their FunctionDefinition parameter to clarify.\n}\n\n// FunctionListener can be registered for any function via\n// FunctionListenerFactory to be notified when the function is called.\ntype FunctionListener interface {\n\t// Before is invoked before a function is called.\n\t//\n\t// There is always one corresponding call to After or Abort for each call to\n\t// Before. This guarantee allows the listener to maintain an internal stack\n\t// to perform correlations between the entry and exit of functions.\n\t//\n\t// # Params\n\t//\n\t//   - ctx: the context of the caller function which must be the same\n\t//\t   instance or parent of the result.\n\t//   - mod: the calling module.\n\t//   - def: the function definition.\n\t//   - params:  api.ValueType encoded parameters.\n\t//   - stackIterator: iterator on the call stack. At least one entry is\n\t//     guaranteed (the called function), whose Args() will be equal to\n\t//     params. The iterator will be reused between calls to Before.\n\t//\n\t// Note: api.Memory is meant for inspection, not modification.\n\t// mod can be cast to InternalModule to read non-exported globals.\n\tBefore(ctx context.Context, mod api.Module, def api.FunctionDefinition, params []uint64, stackIterator StackIterator)\n\n\t// After is invoked after a function is called.\n\t//\n\t// # Params\n\t//\n\t//   - ctx: the context of the caller function.\n\t//   - mod: the calling module.\n\t//   - def: the function definition.\n\t//   - results: api.ValueType encoded results.\n\t//\n\t// # Notes\n\t//\n\t//   - api.Memory is meant for inspection, not modification.\n\t//   - This is not called when a host function panics, or a guest function traps.\n\t//      See Abort for more details.\n\tAfter(ctx context.Context, mod api.Module, def api.FunctionDefinition, results []uint64)\n\n\t// Abort is invoked when a function does not return due to a trap or panic.\n\t//\n\t// # Params\n\t//\n\t//   - ctx: the context of the caller function.\n\t//   - mod: the calling module.\n\t//   - def: the function definition.\n\t//   - err: the error value representing the reason why the function aborted.\n\t//\n\t// # Notes\n\t//\n\t//   - api.Memory is meant for inspection, not modification.\n\tAbort(ctx context.Context, mod api.Module, def api.FunctionDefinition, err error)\n}\n\n// FunctionListenerFunc is a function type implementing the FunctionListener\n// interface, making it possible to use regular functions and methods as\n// listeners of function invocation.\n//\n// The FunctionListener interface declares two methods (Before and After),\n// but this type invokes its value only when Before is called. It is best\n// suites for cases where the host does not need to perform correlation\n// between the start and end of the function call.\ntype FunctionListenerFunc func(context.Context, api.Module, api.FunctionDefinition, []uint64, StackIterator)\n\n// Before satisfies the FunctionListener interface, calls f.\nfunc (f FunctionListenerFunc) Before(ctx context.Context, mod api.Module, def api.FunctionDefinition, params []uint64, stackIterator StackIterator) {\n\tf(ctx, mod, def, params, stackIterator)\n}\n\n// After is declared to satisfy the FunctionListener interface, but it does\n// nothing.\nfunc (f FunctionListenerFunc) After(context.Context, api.Module, api.FunctionDefinition, []uint64) {\n}\n\n// Abort is declared to satisfy the FunctionListener interface, but it does\n// nothing.\nfunc (f FunctionListenerFunc) Abort(context.Context, api.Module, api.FunctionDefinition, error) {\n}\n\n// FunctionListenerFactoryFunc is a function type implementing the\n// FunctionListenerFactory interface, making it possible to use regular\n// functions and methods as factory of function listeners.\ntype FunctionListenerFactoryFunc func(api.FunctionDefinition) FunctionListener\n\n// NewFunctionListener satisfies the FunctionListenerFactory interface, calls f.\nfunc (f FunctionListenerFactoryFunc) NewFunctionListener(def api.FunctionDefinition) FunctionListener {\n\treturn f(def)\n}\n\n// MultiFunctionListenerFactory constructs a FunctionListenerFactory which\n// combines the listeners created by each of the factories passed as arguments.\n//\n// This function is useful when multiple listeners need to be hooked to a module\n// because the propagation mechanism based on installing a listener factory in\n// the context.Context used when instantiating modules allows for a single\n// listener to be installed.\n//\n// The stack iterator passed to the Before method is reset so that each listener\n// can iterate the call stack independently without impacting the ability of\n// other listeners to do so.\nfunc MultiFunctionListenerFactory(factories ...FunctionListenerFactory) FunctionListenerFactory {\n\tmulti := make(multiFunctionListenerFactory, len(factories))\n\tcopy(multi, factories)\n\treturn multi\n}\n\ntype multiFunctionListenerFactory []FunctionListenerFactory\n\nfunc (multi multiFunctionListenerFactory) NewFunctionListener(def api.FunctionDefinition) FunctionListener {\n\tvar lstns []FunctionListener\n\tfor _, factory := range multi {\n\t\tif lstn := factory.NewFunctionListener(def); lstn != nil {\n\t\t\tlstns = append(lstns, lstn)\n\t\t}\n\t}\n\tswitch len(lstns) {\n\tcase 0:\n\t\treturn nil\n\tcase 1:\n\t\treturn lstns[0]\n\tdefault:\n\t\treturn &multiFunctionListener{lstns: lstns}\n\t}\n}\n\ntype multiFunctionListener struct {\n\tlstns []FunctionListener\n\tstack stackIterator\n}\n\nfunc (multi *multiFunctionListener) Before(ctx context.Context, mod api.Module, def api.FunctionDefinition, params []uint64, si StackIterator) {\n\tmulti.stack.base = si\n\tfor _, lstn := range multi.lstns {\n\t\tmulti.stack.index = -1\n\t\tlstn.Before(ctx, mod, def, params, &multi.stack)\n\t}\n}\n\nfunc (multi *multiFunctionListener) After(ctx context.Context, mod api.Module, def api.FunctionDefinition, results []uint64) {\n\tfor _, lstn := range multi.lstns {\n\t\tlstn.After(ctx, mod, def, results)\n\t}\n}\n\nfunc (multi *multiFunctionListener) Abort(ctx context.Context, mod api.Module, def api.FunctionDefinition, err error) {\n\tfor _, lstn := range multi.lstns {\n\t\tlstn.Abort(ctx, mod, def, err)\n\t}\n}\n\ntype stackIterator struct {\n\tbase  StackIterator\n\tindex int\n\tpcs   []uint64\n\tfns   []InternalFunction\n}\n\nfunc (si *stackIterator) Next() bool {\n\tif si.base != nil {\n\t\tsi.pcs = si.pcs[:0]\n\t\tsi.fns = si.fns[:0]\n\n\t\tfor si.base.Next() {\n\t\t\tsi.pcs = append(si.pcs, uint64(si.base.ProgramCounter()))\n\t\t\tsi.fns = append(si.fns, si.base.Function())\n\t\t}\n\n\t\tsi.base = nil\n\t}\n\tsi.index++\n\treturn si.index < len(si.pcs)\n}\n\nfunc (si *stackIterator) ProgramCounter() ProgramCounter {\n\treturn ProgramCounter(si.pcs[si.index])\n}\n\nfunc (si *stackIterator) Function() InternalFunction {\n\treturn si.fns[si.index]\n}\n\n// StackFrame represents a frame on the call stack.\ntype StackFrame struct {\n\tFunction     api.Function\n\tParams       []uint64\n\tResults      []uint64\n\tPC           uint64\n\tSourceOffset uint64\n}\n\ntype internalFunction struct {\n\tdefinition   api.FunctionDefinition\n\tsourceOffset uint64\n}\n\nfunc (f internalFunction) Definition() api.FunctionDefinition {\n\treturn f.definition\n}\n\nfunc (f internalFunction) SourceOffsetForPC(pc ProgramCounter) uint64 {\n\treturn f.sourceOffset\n}\n\n// stackFrameIterator is an implementation of the experimental.stackFrameIterator\n// interface.\ntype stackFrameIterator struct {\n\tindex int\n\tstack []StackFrame\n\tfndef []api.FunctionDefinition\n}\n\nfunc (si *stackFrameIterator) Next() bool {\n\tsi.index++\n\treturn si.index < len(si.stack)\n}\n\nfunc (si *stackFrameIterator) Function() InternalFunction {\n\treturn internalFunction{\n\t\tdefinition:   si.fndef[si.index],\n\t\tsourceOffset: si.stack[si.index].SourceOffset,\n\t}\n}\n\nfunc (si *stackFrameIterator) ProgramCounter() ProgramCounter {\n\treturn ProgramCounter(si.stack[si.index].PC)\n}\n\n// NewStackIterator constructs a stack iterator from a list of stack frames.\n// The top most frame is the last one.\nfunc NewStackIterator(stack ...StackFrame) StackIterator {\n\tsi := &stackFrameIterator{\n\t\tindex: -1,\n\t\tstack: make([]StackFrame, len(stack)),\n\t\tfndef: make([]api.FunctionDefinition, len(stack)),\n\t}\n\tfor i := range stack {\n\t\tsi.stack[i] = stack[len(stack)-(i+1)]\n\t}\n\t// The size of function definition is only one pointer which should allow\n\t// the compiler to optimize the conversion to api.FunctionDefinition; but\n\t// the presence of internal.WazeroOnlyType, despite being defined as an\n\t// empty struct, forces a heap allocation that we amortize by caching the\n\t// result.\n\tfor i, frame := range stack {\n\t\tsi.fndef[i] = frame.Function.Definition()\n\t}\n\treturn si\n}\n\n// BenchmarkFunctionListener implements a benchmark for function listeners.\n//\n// The benchmark calls Before and After methods repeatedly using the provided\n// module an stack frames to invoke the methods.\n//\n// The stack frame is a representation of the call stack that the Before method\n// will be invoked with. The top of the stack is stored at index zero. The stack\n// must contain at least one frame or the benchmark will fail.\nfunc BenchmarkFunctionListener(n int, module api.Module, stack []StackFrame, listener FunctionListener) {\n\tif len(stack) == 0 {\n\t\tpanic(\"cannot benchmark function listener with an empty stack\")\n\t}\n\n\tctx := context.Background()\n\tdef := stack[0].Function.Definition()\n\tparams := stack[0].Params\n\tresults := stack[0].Results\n\tstackIterator := &stackIterator{base: NewStackIterator(stack...)}\n\n\tfor i := 0; i < n; i++ {\n\t\tstackIterator.index = -1\n\t\tlistener.Before(ctx, module, def, params, stackIterator)\n\t\tlistener.After(ctx, module, def, results)\n\t}\n}\n\n// TODO: the calls to Abort are not yet tested in internal/testing/enginetest,\n// but they are validated indirectly in tests which exercise host logging,\n// like Test_procExit in imports/wasi_snapshot_preview1. Eventually we should\n// add dedicated tests to validate the behavior of the interpreter and compiler\n// engines independently.\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/experimental/memory.go",
    "content": "package experimental\n\nimport (\n\t\"context\"\n\n\t\"github.com/tetratelabs/wazero/internal/expctxkeys\"\n)\n\n// MemoryAllocator is a memory allocation hook,\n// invoked to create a LinearMemory.\ntype MemoryAllocator interface {\n\t// Allocate should create a new LinearMemory with the given specification:\n\t// cap is the suggested initial capacity for the backing []byte,\n\t// and max the maximum length that will ever be requested.\n\t//\n\t// Notes:\n\t//   - To back a shared memory, the address of the backing []byte cannot\n\t//     change. This is checked at runtime. Implementations should document\n\t//     if the returned LinearMemory meets this requirement.\n\tAllocate(cap, max uint64) LinearMemory\n}\n\n// MemoryAllocatorFunc is a convenience for defining inlining a MemoryAllocator.\ntype MemoryAllocatorFunc func(cap, max uint64) LinearMemory\n\n// Allocate implements MemoryAllocator.Allocate.\nfunc (f MemoryAllocatorFunc) Allocate(cap, max uint64) LinearMemory {\n\treturn f(cap, max)\n}\n\n// LinearMemory is an expandable []byte that backs a Wasm linear memory.\ntype LinearMemory interface {\n\t// Reallocates the linear memory to size bytes in length.\n\t//\n\t// Notes:\n\t//   - To back a shared memory, Reallocate can't change the address of the\n\t//     backing []byte (only its length/capacity may change).\n\t//   - Reallocate may return nil if fails to grow the LinearMemory. This\n\t//     condition may or may not be handled gracefully by the Wasm module.\n\tReallocate(size uint64) []byte\n\t// Free the backing memory buffer.\n\tFree()\n}\n\n// WithMemoryAllocator registers the given MemoryAllocator into the given\n// context.Context. The context must be passed when initializing a module.\nfunc WithMemoryAllocator(ctx context.Context, allocator MemoryAllocator) context.Context {\n\tif allocator != nil {\n\t\treturn context.WithValue(ctx, expctxkeys.MemoryAllocatorKey{}, allocator)\n\t}\n\treturn ctx\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/experimental/sys/dir.go",
    "content": "package sys\n\nimport (\n\t\"fmt\"\n\t\"io/fs\"\n\n\t\"github.com/tetratelabs/wazero/sys\"\n)\n\n// FileType is fs.FileMode masked on fs.ModeType. For example, zero is a\n// regular file, fs.ModeDir is a directory and fs.ModeIrregular is unknown.\n//\n// Note: This is defined by Linux, not POSIX.\ntype FileType = fs.FileMode\n\n// Dirent is an entry read from a directory via File.Readdir.\n//\n// # Notes\n//\n//   - This extends `dirent` defined in POSIX with some fields defined by\n//     Linux. See https://man7.org/linux/man-pages/man3/readdir.3.html and\n//     https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/dirent.h.html\n//   - This has a subset of fields defined in sys.Stat_t. Notably, there is no\n//     field corresponding to Stat_t.Dev because that value will be constant\n//     for all files in a directory. To get the Dev value, call File.Stat on\n//     the directory File.Readdir was called on.\ntype Dirent struct {\n\t// Ino is the file serial number, or zero if not available. See Ino for\n\t// more details including impact returning a zero value.\n\tIno sys.Inode\n\n\t// Name is the base name of the directory entry. Empty is invalid.\n\tName string\n\n\t// Type is fs.FileMode masked on fs.ModeType. For example, zero is a\n\t// regular file, fs.ModeDir is a directory and fs.ModeIrregular is unknown.\n\t//\n\t// Note: This is defined by Linux, not POSIX.\n\tType fs.FileMode\n}\n\nfunc (d *Dirent) String() string {\n\treturn fmt.Sprintf(\"name=%s, type=%v, ino=%d\", d.Name, d.Type, d.Ino)\n}\n\n// IsDir returns true if the Type is fs.ModeDir.\nfunc (d *Dirent) IsDir() bool {\n\treturn d.Type == fs.ModeDir\n}\n\n// DirFile is embeddable to reduce the amount of functions to implement a file.\ntype DirFile struct{}\n\n// IsAppend implements File.IsAppend\nfunc (DirFile) IsAppend() bool {\n\treturn false\n}\n\n// SetAppend implements File.SetAppend\nfunc (DirFile) SetAppend(bool) Errno {\n\treturn EISDIR\n}\n\n// IsDir implements File.IsDir\nfunc (DirFile) IsDir() (bool, Errno) {\n\treturn true, 0\n}\n\n// Read implements File.Read\nfunc (DirFile) Read([]byte) (int, Errno) {\n\treturn 0, EISDIR\n}\n\n// Pread implements File.Pread\nfunc (DirFile) Pread([]byte, int64) (int, Errno) {\n\treturn 0, EISDIR\n}\n\n// Write implements File.Write\nfunc (DirFile) Write([]byte) (int, Errno) {\n\treturn 0, EISDIR\n}\n\n// Pwrite implements File.Pwrite\nfunc (DirFile) Pwrite([]byte, int64) (int, Errno) {\n\treturn 0, EISDIR\n}\n\n// Truncate implements File.Truncate\nfunc (DirFile) Truncate(int64) Errno {\n\treturn EISDIR\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/experimental/sys/errno.go",
    "content": "package sys\n\nimport \"strconv\"\n\n// Errno is a subset of POSIX errno used by wazero interfaces. Zero is not an\n// error. Other values should not be interpreted numerically, rather by constants\n// prefixed with 'E'.\n//\n// See https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/errno.h.html\ntype Errno uint16\n\n// ^-- Note: This will eventually move to the public /sys package. It is\n// experimental until we audit the socket related APIs to ensure we have all\n// the Errno it returns, and we export fs.FS. This is not in /internal/sys as\n// that would introduce a package cycle.\n\n// This is a subset of errors to reduce implementation burden. `wasip1` defines\n// almost all POSIX error numbers, but not all are used in practice. wazero\n// will add ones needed in POSIX order, as needed by functions that explicitly\n// document returning them.\n//\n// https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#-errno-enumu16\nconst (\n\tEACCES Errno = iota + 1\n\tEAGAIN\n\tEBADF\n\tEEXIST\n\tEFAULT\n\tEINTR\n\tEINVAL\n\tEIO\n\tEISDIR\n\tELOOP\n\tENAMETOOLONG\n\tENOENT\n\tENOSYS\n\tENOTDIR\n\tERANGE\n\tENOTEMPTY\n\tENOTSOCK\n\tENOTSUP\n\tEPERM\n\tEROFS\n\n\t// NOTE ENOTCAPABLE is defined in wasip1, but not in POSIX. wasi-libc\n\t// converts it to EBADF, ESPIPE or EINVAL depending on the call site.\n\t// It isn't known if compilers who don't use ENOTCAPABLE would crash on it.\n)\n\n// Error implements error\nfunc (e Errno) Error() string {\n\tswitch e {\n\tcase 0: // not an error\n\t\treturn \"success\"\n\tcase EACCES:\n\t\treturn \"permission denied\"\n\tcase EAGAIN:\n\t\treturn \"resource unavailable, try again\"\n\tcase EBADF:\n\t\treturn \"bad file descriptor\"\n\tcase EEXIST:\n\t\treturn \"file exists\"\n\tcase EFAULT:\n\t\treturn \"bad address\"\n\tcase EINTR:\n\t\treturn \"interrupted function\"\n\tcase EINVAL:\n\t\treturn \"invalid argument\"\n\tcase EIO:\n\t\treturn \"input/output error\"\n\tcase EISDIR:\n\t\treturn \"is a directory\"\n\tcase ELOOP:\n\t\treturn \"too many levels of symbolic links\"\n\tcase ENAMETOOLONG:\n\t\treturn \"filename too long\"\n\tcase ENOENT:\n\t\treturn \"no such file or directory\"\n\tcase ENOSYS:\n\t\treturn \"functionality not supported\"\n\tcase ENOTDIR:\n\t\treturn \"not a directory or a symbolic link to a directory\"\n\tcase ERANGE:\n\t\treturn \"result too large\"\n\tcase ENOTEMPTY:\n\t\treturn \"directory not empty\"\n\tcase ENOTSOCK:\n\t\treturn \"not a socket\"\n\tcase ENOTSUP:\n\t\treturn \"not supported (may be the same value as [EOPNOTSUPP])\"\n\tcase EPERM:\n\t\treturn \"operation not permitted\"\n\tcase EROFS:\n\t\treturn \"read-only file system\"\n\tdefault:\n\t\treturn \"Errno(\" + strconv.Itoa(int(e)) + \")\"\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/experimental/sys/error.go",
    "content": "package sys\n\nimport (\n\t\"io\"\n\t\"io/fs\"\n\t\"os\"\n)\n\n// UnwrapOSError returns an Errno or zero if the input is nil.\nfunc UnwrapOSError(err error) Errno {\n\tif err == nil {\n\t\treturn 0\n\t}\n\terr = underlyingError(err)\n\tswitch err {\n\tcase nil, io.EOF:\n\t\treturn 0 // EOF is not a Errno\n\tcase fs.ErrInvalid:\n\t\treturn EINVAL\n\tcase fs.ErrPermission:\n\t\treturn EPERM\n\tcase fs.ErrExist:\n\t\treturn EEXIST\n\tcase fs.ErrNotExist:\n\t\treturn ENOENT\n\tcase fs.ErrClosed:\n\t\treturn EBADF\n\t}\n\treturn errorToErrno(err)\n}\n\n// underlyingError returns the underlying error if a well-known OS error type.\n//\n// This impl is basically the same as os.underlyingError in os/error.go\nfunc underlyingError(err error) error {\n\tswitch err := err.(type) {\n\tcase *os.PathError:\n\t\treturn err.Err\n\tcase *os.LinkError:\n\t\treturn err.Err\n\tcase *os.SyscallError:\n\t\treturn err.Err\n\t}\n\treturn err\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/experimental/sys/file.go",
    "content": "package sys\n\nimport \"github.com/tetratelabs/wazero/sys\"\n\n// File is a writeable fs.File bridge backed by syscall functions needed for ABI\n// including WASI.\n//\n// Implementations should embed UnimplementedFile for forward compatibility. Any\n// unsupported method or parameter should return ENOSYS.\n//\n// # Errors\n//\n// All methods that can return an error return a Errno, which is zero\n// on success.\n//\n// Restricting to Errno matches current WebAssembly host functions,\n// which are constrained to well-known error codes. For example, WASI maps syscall\n// errors to u32 numeric values.\n//\n// # Notes\n//\n//   - You must call Close to avoid file resource conflicts. For example,\n//     Windows cannot delete the underlying directory while a handle to it\n//     remains open.\n//   - A writable filesystem abstraction is not yet implemented as of Go 1.20.\n//     See https://github.com/golang/go/issues/45757\ntype File interface {\n\t// Dev returns the device ID (Stat_t.Dev) of this file, zero if unknown or\n\t// an error retrieving it.\n\t//\n\t// # Errors\n\t//\n\t// Possible errors are those from Stat, except ENOSYS should not\n\t// be returned. Zero should be returned if there is no implementation.\n\t//\n\t// # Notes\n\t//\n\t//   - Implementations should cache this result.\n\t//   - This combined with Ino can implement os.SameFile.\n\tDev() (uint64, Errno)\n\n\t// Ino returns the serial number (Stat_t.Ino) of this file, zero if unknown\n\t// or an error retrieving it.\n\t//\n\t// # Errors\n\t//\n\t// Possible errors are those from Stat, except ENOSYS should not\n\t// be returned. Zero should be returned if there is no implementation.\n\t//\n\t// # Notes\n\t//\n\t//   - Implementations should cache this result.\n\t//   - This combined with Dev can implement os.SameFile.\n\tIno() (sys.Inode, Errno)\n\n\t// IsDir returns true if this file is a directory or an error there was an\n\t// error retrieving this information.\n\t//\n\t// # Errors\n\t//\n\t// Possible errors are those from Stat, except ENOSYS should not\n\t// be returned. false should be returned if there is no implementation.\n\t//\n\t// # Notes\n\t//\n\t//   - Implementations should cache this result.\n\tIsDir() (bool, Errno)\n\n\t// IsAppend returns true if the file was opened with O_APPEND, or\n\t// SetAppend was successfully enabled on this file.\n\t//\n\t// # Notes\n\t//\n\t//   - This might not match the underlying state of the file descriptor if\n\t//     the file was not opened via OpenFile.\n\tIsAppend() bool\n\n\t// SetAppend toggles the append mode (O_APPEND) of this file.\n\t//\n\t// # Errors\n\t//\n\t// A zero Errno is success. The below are expected otherwise:\n\t//   - ENOSYS: the implementation does not support this function.\n\t//   - EBADF: the file or directory was closed.\n\t//\n\t// # Notes\n\t//\n\t//   - There is no `O_APPEND` for `fcntl` in POSIX, so implementations may\n\t//     have to re-open the underlying file to apply this. See\n\t//     https://pubs.opengroup.org/onlinepubs/9699919799/functions/open.html\n\tSetAppend(enable bool) Errno\n\n\t// Stat is similar to syscall.Fstat.\n\t//\n\t// # Errors\n\t//\n\t// A zero Errno is success. The below are expected otherwise:\n\t//   - ENOSYS: the implementation does not support this function.\n\t//   - EBADF: the file or directory was closed.\n\t//\n\t// # Notes\n\t//\n\t//   - This is like syscall.Fstat and `fstatat` with `AT_FDCWD` in POSIX.\n\t//     See https://pubs.opengroup.org/onlinepubs/9699919799/functions/stat.html\n\t//   - A fs.FileInfo backed implementation sets atim, mtim and ctim to the\n\t//     same value.\n\t//   - Windows allows you to stat a closed directory.\n\tStat() (sys.Stat_t, Errno)\n\n\t// Read attempts to read all bytes in the file into `buf`, and returns the\n\t// count read even on error.\n\t//\n\t// # Errors\n\t//\n\t// A zero Errno is success. The below are expected otherwise:\n\t//   - ENOSYS: the implementation does not support this function.\n\t//   - EBADF: the file or directory was closed or not readable.\n\t//   - EISDIR: the file was a directory.\n\t//\n\t// # Notes\n\t//\n\t//   - This is like io.Reader and `read` in POSIX, preferring semantics of\n\t//     io.Reader. See https://pubs.opengroup.org/onlinepubs/9699919799/functions/read.html\n\t//   - Unlike io.Reader, there is no io.EOF returned on end-of-file. To\n\t//     read the file completely, the caller must repeat until `n` is zero.\n\tRead(buf []byte) (n int, errno Errno)\n\n\t// Pread attempts to read all bytes in the file into `p`, starting at the\n\t// offset `off`, and returns the count read even on error.\n\t//\n\t// # Errors\n\t//\n\t// A zero Errno is success. The below are expected otherwise:\n\t//   - ENOSYS: the implementation does not support this function.\n\t//   - EBADF: the file or directory was closed or not readable.\n\t//   - EINVAL: the offset was negative.\n\t//   - EISDIR: the file was a directory.\n\t//\n\t// # Notes\n\t//\n\t//   - This is like io.ReaderAt and `pread` in POSIX, preferring semantics\n\t//     of io.ReaderAt. See https://pubs.opengroup.org/onlinepubs/9699919799/functions/pread.html\n\t//   - Unlike io.ReaderAt, there is no io.EOF returned on end-of-file. To\n\t//     read the file completely, the caller must repeat until `n` is zero.\n\tPread(buf []byte, off int64) (n int, errno Errno)\n\n\t// Seek attempts to set the next offset for Read or Write and returns the\n\t// resulting absolute offset or an error.\n\t//\n\t// # Parameters\n\t//\n\t// The `offset` parameters is interpreted in terms of `whence`:\n\t//   - io.SeekStart: relative to the start of the file, e.g. offset=0 sets\n\t//     the next Read or Write to the beginning of the file.\n\t//   - io.SeekCurrent: relative to the current offset, e.g. offset=16 sets\n\t//     the next Read or Write 16 bytes past the prior.\n\t//   - io.SeekEnd: relative to the end of the file, e.g. offset=-1 sets the\n\t//     next Read or Write to the last byte in the file.\n\t//\n\t// # Behavior when a directory\n\t//\n\t// The only supported use case for a directory is seeking to `offset` zero\n\t// (`whence` = io.SeekStart). This should have the same behavior as\n\t// os.File, which resets any internal state used by Readdir.\n\t//\n\t// # Errors\n\t//\n\t// A zero Errno is success. The below are expected otherwise:\n\t//   - ENOSYS: the implementation does not support this function.\n\t//   - EBADF: the file or directory was closed or not readable.\n\t//   - EINVAL: the offset was negative.\n\t//\n\t// # Notes\n\t//\n\t//   - This is like io.Seeker and `fseek` in POSIX, preferring semantics\n\t//     of io.Seeker. See https://pubs.opengroup.org/onlinepubs/9699919799/functions/fseek.html\n\tSeek(offset int64, whence int) (newOffset int64, errno Errno)\n\n\t// Readdir reads the contents of the directory associated with file and\n\t// returns a slice of up to n Dirent values in an arbitrary order. This is\n\t// a stateful function, so subsequent calls return any next values.\n\t//\n\t// If n > 0, Readdir returns at most n entries or an error.\n\t// If n <= 0, Readdir returns all remaining entries or an error.\n\t//\n\t// # Errors\n\t//\n\t// A zero Errno is success. The below are expected otherwise:\n\t//   - ENOSYS: the implementation does not support this function.\n\t//   - EBADF: the file was closed or not a directory.\n\t//   - ENOENT: the directory could not be read (e.g. deleted).\n\t//\n\t// # Notes\n\t//\n\t//   - This is like `Readdir` on os.File, but unlike `readdir` in POSIX.\n\t//     See https://pubs.opengroup.org/onlinepubs/9699919799/functions/readdir.html\n\t//   - Unlike os.File, there is no io.EOF returned on end-of-directory. To\n\t//     read the directory completely, the caller must repeat until the\n\t//     count read (`len(dirents)`) is less than `n`.\n\t//   - See /RATIONALE.md for design notes.\n\tReaddir(n int) (dirents []Dirent, errno Errno)\n\n\t// Write attempts to write all bytes in `p` to the file, and returns the\n\t// count written even on error.\n\t//\n\t// # Errors\n\t//\n\t// A zero Errno is success. The below are expected otherwise:\n\t//   - ENOSYS: the implementation does not support this function.\n\t//   - EBADF: the file was closed, not writeable, or a directory.\n\t//\n\t// # Notes\n\t//\n\t//   - This is like io.Writer and `write` in POSIX, preferring semantics of\n\t//     io.Writer. See https://pubs.opengroup.org/onlinepubs/9699919799/functions/write.html\n\tWrite(buf []byte) (n int, errno Errno)\n\n\t// Pwrite attempts to write all bytes in `p` to the file at the given\n\t// offset `off`, and returns the count written even on error.\n\t//\n\t// # Errors\n\t//\n\t// A zero Errno is success. The below are expected otherwise:\n\t//   - ENOSYS: the implementation does not support this function.\n\t//   - EBADF: the file or directory was closed or not writeable.\n\t//   - EINVAL: the offset was negative.\n\t//   - EISDIR: the file was a directory.\n\t//\n\t// # Notes\n\t//\n\t//   - This is like io.WriterAt and `pwrite` in POSIX, preferring semantics\n\t//     of io.WriterAt. See https://pubs.opengroup.org/onlinepubs/9699919799/functions/pwrite.html\n\tPwrite(buf []byte, off int64) (n int, errno Errno)\n\n\t// Truncate truncates a file to a specified length.\n\t//\n\t// # Errors\n\t//\n\t// A zero Errno is success. The below are expected otherwise:\n\t//   - ENOSYS: the implementation does not support this function.\n\t//   - EBADF: the file or directory was closed.\n\t//   - EINVAL: the `size` is negative.\n\t//   - EISDIR: the file was a directory.\n\t//\n\t// # Notes\n\t//\n\t//   - This is like syscall.Ftruncate and `ftruncate` in POSIX. See\n\t//     https://pubs.opengroup.org/onlinepubs/9699919799/functions/ftruncate.html\n\t//   - Windows does not error when calling Truncate on a closed file.\n\tTruncate(size int64) Errno\n\n\t// Sync synchronizes changes to the file.\n\t//\n\t// # Errors\n\t//\n\t// A zero Errno is success. The below are expected otherwise:\n\t//   - EBADF: the file or directory was closed.\n\t//\n\t// # Notes\n\t//\n\t//   - This is like syscall.Fsync and `fsync` in POSIX. See\n\t//     https://pubs.opengroup.org/onlinepubs/9699919799/functions/fsync.html\n\t//   - This returns with no error instead of ENOSYS when\n\t//     unimplemented. This prevents fake filesystems from erring.\n\t//   - Windows does not error when calling Sync on a closed file.\n\tSync() Errno\n\n\t// Datasync synchronizes the data of a file.\n\t//\n\t// # Errors\n\t//\n\t// A zero Errno is success. The below are expected otherwise:\n\t//   - EBADF: the file or directory was closed.\n\t//\n\t// # Notes\n\t//\n\t//   - This is like syscall.Fdatasync and `fdatasync` in POSIX. See\n\t//     https://pubs.opengroup.org/onlinepubs/9699919799/functions/fdatasync.html\n\t//   - This returns with no error instead of ENOSYS when\n\t//     unimplemented. This prevents fake filesystems from erring.\n\t//   - As this is commonly missing, some implementations dispatch to Sync.\n\tDatasync() Errno\n\n\t// Utimens set file access and modification times of this file, at\n\t// nanosecond precision.\n\t//\n\t// # Parameters\n\t//\n\t// The `atim` and `mtim` parameters refer to access and modification time\n\t// stamps as defined in sys.Stat_t. To retain one or the other, substitute\n\t// it with the pseudo-timestamp UTIME_OMIT.\n\t//\n\t// # Errors\n\t//\n\t// A zero Errno is success. The below are expected otherwise:\n\t//   - ENOSYS: the implementation does not support this function.\n\t//   - EBADF: the file or directory was closed.\n\t//\n\t// # Notes\n\t//\n\t//   - This is like syscall.UtimesNano and `futimens` in POSIX. See\n\t//     https://pubs.opengroup.org/onlinepubs/9699919799/functions/futimens.html\n\t//   - Windows requires files to be open with O_RDWR, which means you\n\t//     cannot use this to update timestamps on a directory (EPERM).\n\tUtimens(atim, mtim int64) Errno\n\n\t// Close closes the underlying file.\n\t//\n\t// A zero Errno is returned if unimplemented or success.\n\t//\n\t// # Notes\n\t//\n\t//   - This is like syscall.Close and `close` in POSIX. See\n\t//     https://pubs.opengroup.org/onlinepubs/9699919799/functions/close.html\n\tClose() Errno\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/experimental/sys/fs.go",
    "content": "package sys\n\nimport (\n\t\"io/fs\"\n\n\t\"github.com/tetratelabs/wazero/sys\"\n)\n\n// FS is a writeable fs.FS bridge backed by syscall functions needed for ABI\n// including WASI.\n//\n// Implementations should embed UnimplementedFS for forward compatibility. Any\n// unsupported method or parameter should return ENO\n//\n// # Errors\n//\n// All methods that can return an error return a Errno, which is zero\n// on success.\n//\n// Restricting to Errno matches current WebAssembly host functions,\n// which are constrained to well-known error codes. For example, WASI maps syscall\n// errors to u32 numeric values.\n//\n// # Notes\n//\n// A writable filesystem abstraction is not yet implemented as of Go 1.20. See\n// https://github.com/golang/go/issues/45757\ntype FS interface {\n\t// OpenFile opens a file. It should be closed via Close on File.\n\t//\n\t// # Errors\n\t//\n\t// A zero Errno is success. The below are expected otherwise:\n\t//   - ENOSYS: the implementation does not support this function.\n\t//   - EINVAL: `path` or `flag` is invalid.\n\t//   - EISDIR: the path was a directory, but flag included O_RDWR or\n\t//     O_WRONLY\n\t//   - ENOENT: `path` doesn't exist and `flag` doesn't contain O_CREAT.\n\t//\n\t// # Constraints on the returned file\n\t//\n\t// Implementations that can read flags should enforce them regardless of\n\t// the type returned. For example, while os.File implements io.Writer,\n\t// attempts to write to a directory or a file opened with O_RDONLY fail\n\t// with a EBADF.\n\t//\n\t// Some implementations choose whether to enforce read-only opens, namely\n\t// fs.FS. While fs.FS is supported (Adapt), wazero cannot runtime enforce\n\t// open flags. Instead, we encourage good behavior and test our built-in\n\t// implementations.\n\t//\n\t// # Notes\n\t//\n\t//   - This is like os.OpenFile, except the path is relative to this file\n\t//     system, and Errno is returned instead of os.PathError.\n\t//   - Implications of permissions when O_CREAT are described in Chmod notes.\n\t//   - This is like `open` in POSIX. See\n\t//     https://pubs.opengroup.org/onlinepubs/9699919799/functions/open.html\n\tOpenFile(path string, flag Oflag, perm fs.FileMode) (File, Errno)\n\n\t// Lstat gets file status without following symbolic links.\n\t//\n\t// # Errors\n\t//\n\t// A zero Errno is success. The below are expected otherwise:\n\t//   - ENOSYS: the implementation does not support this function.\n\t//   - ENOENT: `path` doesn't exist.\n\t//\n\t// # Notes\n\t//\n\t//   - This is like syscall.Lstat, except the `path` is relative to this\n\t//     file system.\n\t//   - This is like `lstat` in POSIX. See\n\t//     https://pubs.opengroup.org/onlinepubs/9699919799/functions/lstat.html\n\t//   - An fs.FileInfo backed implementation sets atim, mtim and ctim to the\n\t//     same value.\n\t//   - When the path is a symbolic link, the stat returned is for the link,\n\t//     not the file it refers to.\n\tLstat(path string) (sys.Stat_t, Errno)\n\n\t// Stat gets file status.\n\t//\n\t// # Errors\n\t//\n\t// A zero Errno is success. The below are expected otherwise:\n\t//   - ENOSYS: the implementation does not support this function.\n\t//   - ENOENT: `path` doesn't exist.\n\t//\n\t// # Notes\n\t//\n\t//   - This is like syscall.Stat, except the `path` is relative to this\n\t//     file system.\n\t//   - This is like `stat` in POSIX. See\n\t//     https://pubs.opengroup.org/onlinepubs/9699919799/functions/stat.html\n\t//   - An fs.FileInfo backed implementation sets atim, mtim and ctim to the\n\t//     same value.\n\t//   - When the path is a symbolic link, the stat returned is for the file\n\t//     it refers to.\n\tStat(path string) (sys.Stat_t, Errno)\n\n\t// Mkdir makes a directory.\n\t//\n\t// # Errors\n\t//\n\t// A zero Errno is success. The below are expected otherwise:\n\t//   - ENOSYS: the implementation does not support this function.\n\t//   - EINVAL: `path` is invalid.\n\t//   - EEXIST: `path` exists and is a directory.\n\t//   - ENOTDIR: `path` exists and is a file.\n\t//\n\t// # Notes\n\t//\n\t//   - This is like syscall.Mkdir, except the `path` is relative to this\n\t//     file system.\n\t//   - This is like `mkdir` in POSIX. See\n\t//     https://pubs.opengroup.org/onlinepubs/9699919799/functions/mkdir.html\n\t//   - Implications of permissions are described in Chmod notes.\n\tMkdir(path string, perm fs.FileMode) Errno\n\n\t// Chmod changes the mode of the file.\n\t//\n\t// # Errors\n\t//\n\t// A zero Errno is success. The below are expected otherwise:\n\t//   - ENOSYS: the implementation does not support this function.\n\t//   - EINVAL: `path` is invalid.\n\t//   - ENOENT: `path` does not exist.\n\t//\n\t// # Notes\n\t//\n\t//   - This is like syscall.Chmod, except the `path` is relative to this\n\t//     file system.\n\t//   - This is like `chmod` in POSIX. See\n\t//     https://pubs.opengroup.org/onlinepubs/9699919799/functions/chmod.html\n\t//   - Windows ignores the execute bit, and any permissions come back as\n\t//     group and world. For example, chmod of 0400 reads back as 0444, and\n\t//     0700 0666. Also, permissions on directories aren't supported at all.\n\tChmod(path string, perm fs.FileMode) Errno\n\n\t// Rename renames file or directory.\n\t//\n\t// # Errors\n\t//\n\t// A zero Errno is success. The below are expected otherwise:\n\t//   - ENOSYS: the implementation does not support this function.\n\t//   - EINVAL: `from` or `to` is invalid.\n\t//   - ENOENT: `from` or `to` don't exist.\n\t//   - ENOTDIR: `from` is a directory and `to` exists as a file.\n\t//   - EISDIR: `from` is a file and `to` exists as a directory.\n\t//   - ENOTEMPTY: `both from` and `to` are existing directory, but\n\t//    `to` is not empty.\n\t//\n\t// # Notes\n\t//\n\t//   - This is like syscall.Rename, except the paths are relative to this\n\t//     file system.\n\t//   - This is like `rename` in POSIX. See\n\t//     https://pubs.opengroup.org/onlinepubs/9699919799/functions/rename.html\n\t//   -  Windows doesn't let you overwrite an existing directory.\n\tRename(from, to string) Errno\n\n\t// Rmdir removes a directory.\n\t//\n\t// # Errors\n\t//\n\t// A zero Errno is success. The below are expected otherwise:\n\t//   - ENOSYS: the implementation does not support this function.\n\t//   - EINVAL: `path` is invalid.\n\t//   - ENOENT: `path` doesn't exist.\n\t//   - ENOTDIR: `path` exists, but isn't a directory.\n\t//   - ENOTEMPTY: `path` exists, but isn't empty.\n\t//\n\t// # Notes\n\t//\n\t//   - This is like syscall.Rmdir, except the `path` is relative to this\n\t//     file system.\n\t//   - This is like `rmdir` in POSIX. See\n\t//     https://pubs.opengroup.org/onlinepubs/9699919799/functions/rmdir.html\n\t//   - As of Go 1.19, Windows maps ENOTDIR to ENOENT.\n\tRmdir(path string) Errno\n\n\t// Unlink removes a directory entry.\n\t//\n\t// # Errors\n\t//\n\t// A zero Errno is success. The below are expected otherwise:\n\t//   - ENOSYS: the implementation does not support this function.\n\t//   - EINVAL: `path` is invalid.\n\t//   - ENOENT: `path` doesn't exist.\n\t//   - EISDIR: `path` exists, but is a directory.\n\t//\n\t// # Notes\n\t//\n\t//   - This is like syscall.Unlink, except the `path` is relative to this\n\t//     file system.\n\t//   - This is like `unlink` in POSIX. See\n\t//     https://pubs.opengroup.org/onlinepubs/9699919799/functions/unlink.html\n\t//   - On Windows, syscall.Unlink doesn't delete symlink to directory unlike other platforms. Implementations might\n\t//     want to combine syscall.RemoveDirectory with syscall.Unlink in order to delete such links on Windows.\n\t//     See https://learn.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-removedirectorya\n\tUnlink(path string) Errno\n\n\t// Link creates a \"hard\" link from oldPath to newPath, in contrast to a\n\t// soft link (via Symlink).\n\t//\n\t// # Errors\n\t//\n\t// A zero Errno is success. The below are expected otherwise:\n\t//   - ENOSYS: the implementation does not support this function.\n\t//   - EPERM: `oldPath` is invalid.\n\t//   - ENOENT: `oldPath` doesn't exist.\n\t//   - EISDIR: `newPath` exists, but is a directory.\n\t//\n\t// # Notes\n\t//\n\t//   - This is like syscall.Link, except the `oldPath` is relative to this\n\t//     file system.\n\t//   - This is like `link` in POSIX. See\n\t//     https://pubs.opengroup.org/onlinepubs/9699919799/functions/link.html\n\tLink(oldPath, newPath string) Errno\n\n\t// Symlink creates a \"soft\" link from oldPath to newPath, in contrast to a\n\t// hard link (via Link).\n\t//\n\t// # Errors\n\t//\n\t// A zero Errno is success. The below are expected otherwise:\n\t//   - ENOSYS: the implementation does not support this function.\n\t//   - EPERM: `oldPath` or `newPath` is invalid.\n\t//   - EEXIST: `newPath` exists.\n\t//\n\t// # Notes\n\t//\n\t//   - This is like syscall.Symlink, except the `oldPath` is relative to\n\t//     this file system.\n\t//   - This is like `symlink` in POSIX. See\n\t//     https://pubs.opengroup.org/onlinepubs/9699919799/functions/symlink.html\n\t//   - Only `newPath` is relative to this file system and `oldPath` is kept\n\t//     as-is. That is because the link is only resolved relative to the\n\t//     directory when dereferencing it (e.g. ReadLink).\n\t//     See https://github.com/bytecodealliance/cap-std/blob/v1.0.4/cap-std/src/fs/dir.rs#L404-L409\n\t//     for how others implement this.\n\t//   - Symlinks in Windows requires `SeCreateSymbolicLinkPrivilege`.\n\t//     Otherwise, EPERM results.\n\t//     See https://learn.microsoft.com/en-us/windows/security/threat-protection/security-policy-settings/create-symbolic-links\n\tSymlink(oldPath, linkName string) Errno\n\n\t// Readlink reads the contents of a symbolic link.\n\t//\n\t// # Errors\n\t//\n\t// A zero Errno is success. The below are expected otherwise:\n\t//   - ENOSYS: the implementation does not support this function.\n\t//   - EINVAL: `path` is invalid.\n\t//\n\t// # Notes\n\t//\n\t//   - This is like syscall.Readlink, except the path is relative to this\n\t//     filesystem.\n\t//   - This is like `readlink` in POSIX. See\n\t//     https://pubs.opengroup.org/onlinepubs/9699919799/functions/readlink.html\n\t//   - On Windows, the path separator is different from other platforms,\n\t//     but to provide consistent results to Wasm, this normalizes to a \"/\"\n\t//     separator.\n\tReadlink(path string) (string, Errno)\n\n\t// Utimens set file access and modification times on a path relative to\n\t// this file system, at nanosecond precision.\n\t//\n\t// # Parameters\n\t//\n\t// If the path is a symbolic link, the target of expanding that link is\n\t// updated.\n\t//\n\t// The `atim` and `mtim` parameters refer to access and modification time\n\t// stamps as defined in sys.Stat_t. To retain one or the other, substitute\n\t// it with the pseudo-timestamp UTIME_OMIT.\n\t//\n\t// # Errors\n\t//\n\t// A zero Errno is success. The below are expected otherwise:\n\t//   - ENOSYS: the implementation does not support this function.\n\t//   - EINVAL: `path` is invalid.\n\t//   - EEXIST: `path` exists and is a directory.\n\t//   - ENOTDIR: `path` exists and is a file.\n\t//\n\t// # Notes\n\t//\n\t//   - This is like syscall.UtimesNano and `utimensat` with `AT_FDCWD` in\n\t//     POSIX. See https://pubs.opengroup.org/onlinepubs/9699919799/functions/futimens.html\n\tUtimens(path string, atim, mtim int64) Errno\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/experimental/sys/oflag.go",
    "content": "package sys\n\n// Oflag are flags used for FS.OpenFile. Values, including zero, should not be\n// interpreted numerically. Instead, use by constants prefixed with 'O_' with\n// special casing noted below.\n//\n// # Notes\n//\n//   - O_RDONLY, O_RDWR and O_WRONLY are mutually exclusive, while the other\n//     flags can coexist bitwise.\n//   - This is like `flag` in os.OpenFile and `oflag` in POSIX. See\n//     https://pubs.opengroup.org/onlinepubs/9699919799/functions/open.html\ntype Oflag uint32\n\n// This is a subset of oflags to reduce implementation burden. `wasip1` splits\n// these across `oflags` and `fdflags`. We can't rely on the Go `os` package,\n// as it is missing some values. Any flags added will be defined in POSIX\n// order, as needed by functions that explicitly document accepting them.\n//\n// https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#-oflags-flagsu16\n// https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#-fdflags-flagsu16\nconst (\n\t// O_RDONLY is like os.O_RDONLY\n\tO_RDONLY Oflag = iota\n\n\t// O_RDWR is like os.O_RDWR\n\tO_RDWR\n\n\t// O_WRONLY is like os.O_WRONLY\n\tO_WRONLY\n\n\t// Define bitflags as they are in POSIX `open`: alphabetically\n\n\t// O_APPEND is like os.O_APPEND\n\tO_APPEND Oflag = 1 << iota\n\n\t// O_CREAT is link os.O_CREATE\n\tO_CREAT\n\n\t// O_DIRECTORY is defined on some platforms as syscall.O_DIRECTORY.\n\t//\n\t// Note: This ensures that the opened file is a directory. Those emulating\n\t// on platforms that don't support the O_DIRECTORY, can double-check the\n\t// result with File.IsDir (or stat) and err if not a directory.\n\tO_DIRECTORY\n\n\t// O_DSYNC is defined on some platforms as syscall.O_DSYNC.\n\tO_DSYNC\n\n\t// O_EXCL is defined on some platforms as syscall.O_EXCL.\n\tO_EXCL\n\n\t// O_NOFOLLOW is defined on some platforms as syscall.O_NOFOLLOW.\n\t//\n\t// Note: This allows programs to ensure that if the opened file is a\n\t// symbolic link, the link itself is opened instead of its target.\n\tO_NOFOLLOW\n\n\t// O_NONBLOCK is defined on some platforms as syscall.O_NONBLOCK.\n\tO_NONBLOCK\n\n\t// O_RSYNC is defined on some platforms as syscall.O_RSYNC.\n\tO_RSYNC\n\n\t// O_SYNC is defined on some platforms as syscall.O_SYNC.\n\tO_SYNC\n\n\t// O_TRUNC is defined on some platforms as syscall.O_TRUNC.\n\tO_TRUNC\n)\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/experimental/sys/syscall_errno.go",
    "content": "//go:build !plan9 && !aix\n\npackage sys\n\nimport \"syscall\"\n\nfunc syscallToErrno(err error) (Errno, bool) {\n\terrno, ok := err.(syscall.Errno)\n\tif !ok {\n\t\treturn 0, false\n\t}\n\tswitch errno {\n\tcase 0:\n\t\treturn 0, true\n\tcase syscall.EACCES:\n\t\treturn EACCES, true\n\tcase syscall.EAGAIN:\n\t\treturn EAGAIN, true\n\tcase syscall.EBADF:\n\t\treturn EBADF, true\n\tcase syscall.EEXIST:\n\t\treturn EEXIST, true\n\tcase syscall.EFAULT:\n\t\treturn EFAULT, true\n\tcase syscall.EINTR:\n\t\treturn EINTR, true\n\tcase syscall.EINVAL:\n\t\treturn EINVAL, true\n\tcase syscall.EIO:\n\t\treturn EIO, true\n\tcase syscall.EISDIR:\n\t\treturn EISDIR, true\n\tcase syscall.ELOOP:\n\t\treturn ELOOP, true\n\tcase syscall.ENAMETOOLONG:\n\t\treturn ENAMETOOLONG, true\n\tcase syscall.ENOENT:\n\t\treturn ENOENT, true\n\tcase syscall.ENOSYS:\n\t\treturn ENOSYS, true\n\tcase syscall.ENOTDIR:\n\t\treturn ENOTDIR, true\n\tcase syscall.ERANGE:\n\t\treturn ERANGE, true\n\tcase syscall.ENOTEMPTY:\n\t\treturn ENOTEMPTY, true\n\tcase syscall.ENOTSOCK:\n\t\treturn ENOTSOCK, true\n\tcase syscall.ENOTSUP:\n\t\treturn ENOTSUP, true\n\tcase syscall.EPERM:\n\t\treturn EPERM, true\n\tcase syscall.EROFS:\n\t\treturn EROFS, true\n\tdefault:\n\t\treturn EIO, true\n\t}\n}\n\n// Unwrap is a convenience for runtime.GOOS which define syscall.Errno.\nfunc (e Errno) Unwrap() error {\n\tswitch e {\n\tcase 0:\n\t\treturn nil\n\tcase EACCES:\n\t\treturn syscall.EACCES\n\tcase EAGAIN:\n\t\treturn syscall.EAGAIN\n\tcase EBADF:\n\t\treturn syscall.EBADF\n\tcase EEXIST:\n\t\treturn syscall.EEXIST\n\tcase EFAULT:\n\t\treturn syscall.EFAULT\n\tcase EINTR:\n\t\treturn syscall.EINTR\n\tcase EINVAL:\n\t\treturn syscall.EINVAL\n\tcase EIO:\n\t\treturn syscall.EIO\n\tcase EISDIR:\n\t\treturn syscall.EISDIR\n\tcase ELOOP:\n\t\treturn syscall.ELOOP\n\tcase ENAMETOOLONG:\n\t\treturn syscall.ENAMETOOLONG\n\tcase ENOENT:\n\t\treturn syscall.ENOENT\n\tcase ENOSYS:\n\t\treturn syscall.ENOSYS\n\tcase ENOTDIR:\n\t\treturn syscall.ENOTDIR\n\tcase ENOTEMPTY:\n\t\treturn syscall.ENOTEMPTY\n\tcase ENOTSOCK:\n\t\treturn syscall.ENOTSOCK\n\tcase ENOTSUP:\n\t\treturn syscall.ENOTSUP\n\tcase EPERM:\n\t\treturn syscall.EPERM\n\tcase EROFS:\n\t\treturn syscall.EROFS\n\tdefault:\n\t\treturn syscall.EIO\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/experimental/sys/syscall_errno_notwindows.go",
    "content": "//go:build !windows\n\npackage sys\n\nfunc errorToErrno(err error) Errno {\n\tif errno, ok := err.(Errno); ok {\n\t\treturn errno\n\t}\n\tif errno, ok := syscallToErrno(err); ok {\n\t\treturn errno\n\t}\n\treturn EIO\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/experimental/sys/syscall_errno_unsupported.go",
    "content": "//go:build plan9 || aix\n\npackage sys\n\nfunc syscallToErrno(err error) (Errno, bool) {\n\treturn 0, false\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/experimental/sys/syscall_errno_windows.go",
    "content": "package sys\n\nimport \"syscall\"\n\n// These are errors not defined in the syscall package. They are prefixed with\n// underscore to avoid exporting them.\n//\n// See https://learn.microsoft.com/en-us/windows/win32/debug/system-error-codes--0-499-\nconst (\n\t// _ERROR_INVALID_HANDLE is a Windows error returned by syscall.Write\n\t// instead of syscall.EBADF\n\t_ERROR_INVALID_HANDLE = syscall.Errno(6)\n\n\t// _ERROR_INVALID_NAME is a Windows error returned by open when a file\n\t// path has a trailing slash\n\t_ERROR_INVALID_NAME = syscall.Errno(0x7B)\n\n\t// _ERROR_NEGATIVE_SEEK is a Windows error returned by os.Truncate\n\t// instead of syscall.EINVAL\n\t_ERROR_NEGATIVE_SEEK = syscall.Errno(0x83)\n\n\t// _ERROR_DIRECTORY is a Windows error returned by syscall.Rmdir\n\t// instead of syscall.ENOTDIR\n\t_ERROR_DIRECTORY = syscall.Errno(0x10B)\n\n\t// _ERROR_NOT_A_REPARSE_POINT is a Windows error returned by os.Readlink\n\t// instead of syscall.EINVAL\n\t_ERROR_NOT_A_REPARSE_POINT = syscall.Errno(0x1126)\n\n\t// _ERROR_INVALID_SOCKET is a Windows error returned by winsock_select\n\t// when a given handle is not a socket.\n\t_ERROR_INVALID_SOCKET = syscall.Errno(0x2736)\n)\n\nfunc errorToErrno(err error) Errno {\n\tswitch err := err.(type) {\n\tcase Errno:\n\t\treturn err\n\tcase syscall.Errno:\n\t\t// Note: In windows, _ERROR_PATH_NOT_FOUND(0x3) maps to syscall.ENOTDIR\n\t\tswitch err {\n\t\tcase syscall.ERROR_ALREADY_EXISTS:\n\t\t\treturn EEXIST\n\t\tcase _ERROR_DIRECTORY:\n\t\t\treturn ENOTDIR\n\t\tcase syscall.ERROR_DIR_NOT_EMPTY:\n\t\t\treturn ENOTEMPTY\n\t\tcase syscall.ERROR_FILE_EXISTS:\n\t\t\treturn EEXIST\n\t\tcase _ERROR_INVALID_HANDLE, _ERROR_INVALID_SOCKET:\n\t\t\treturn EBADF\n\t\tcase syscall.ERROR_ACCESS_DENIED:\n\t\t\t// POSIX read and write functions expect EBADF, not EACCES when not\n\t\t\t// open for reading or writing.\n\t\t\treturn EBADF\n\t\tcase syscall.ERROR_PRIVILEGE_NOT_HELD:\n\t\t\treturn EPERM\n\t\tcase _ERROR_NEGATIVE_SEEK, _ERROR_INVALID_NAME, _ERROR_NOT_A_REPARSE_POINT:\n\t\t\treturn EINVAL\n\t\t}\n\t\terrno, _ := syscallToErrno(err)\n\t\treturn errno\n\tdefault:\n\t\treturn EIO\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/experimental/sys/time.go",
    "content": "package sys\n\nimport \"math\"\n\n// UTIME_OMIT is a special constant for use in updating times via FS.Utimens\n// or File.Utimens. When used for atim or mtim, the value is retained.\n//\n// Note: This may be implemented via a stat when the underlying filesystem\n// does not support this value.\nconst UTIME_OMIT int64 = math.MinInt64\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/experimental/sys/unimplemented.go",
    "content": "package sys\n\nimport (\n\t\"io/fs\"\n\n\t\"github.com/tetratelabs/wazero/sys\"\n)\n\n// UnimplementedFS is an FS that returns ENOSYS for all functions,\n// This should be embedded to have forward compatible implementations.\ntype UnimplementedFS struct{}\n\n// OpenFile implements FS.OpenFile\nfunc (UnimplementedFS) OpenFile(path string, flag Oflag, perm fs.FileMode) (File, Errno) {\n\treturn nil, ENOSYS\n}\n\n// Lstat implements FS.Lstat\nfunc (UnimplementedFS) Lstat(path string) (sys.Stat_t, Errno) {\n\treturn sys.Stat_t{}, ENOSYS\n}\n\n// Stat implements FS.Stat\nfunc (UnimplementedFS) Stat(path string) (sys.Stat_t, Errno) {\n\treturn sys.Stat_t{}, ENOSYS\n}\n\n// Readlink implements FS.Readlink\nfunc (UnimplementedFS) Readlink(path string) (string, Errno) {\n\treturn \"\", ENOSYS\n}\n\n// Mkdir implements FS.Mkdir\nfunc (UnimplementedFS) Mkdir(path string, perm fs.FileMode) Errno {\n\treturn ENOSYS\n}\n\n// Chmod implements FS.Chmod\nfunc (UnimplementedFS) Chmod(path string, perm fs.FileMode) Errno {\n\treturn ENOSYS\n}\n\n// Rename implements FS.Rename\nfunc (UnimplementedFS) Rename(from, to string) Errno {\n\treturn ENOSYS\n}\n\n// Rmdir implements FS.Rmdir\nfunc (UnimplementedFS) Rmdir(path string) Errno {\n\treturn ENOSYS\n}\n\n// Link implements FS.Link\nfunc (UnimplementedFS) Link(_, _ string) Errno {\n\treturn ENOSYS\n}\n\n// Symlink implements FS.Symlink\nfunc (UnimplementedFS) Symlink(_, _ string) Errno {\n\treturn ENOSYS\n}\n\n// Unlink implements FS.Unlink\nfunc (UnimplementedFS) Unlink(path string) Errno {\n\treturn ENOSYS\n}\n\n// Utimens implements FS.Utimens\nfunc (UnimplementedFS) Utimens(path string, atim, mtim int64) Errno {\n\treturn ENOSYS\n}\n\n// UnimplementedFile is a File that returns ENOSYS for all functions,\n// except where no-op are otherwise documented.\n//\n// This should be embedded to have forward compatible implementations.\ntype UnimplementedFile struct{}\n\n// Dev implements File.Dev\nfunc (UnimplementedFile) Dev() (uint64, Errno) {\n\treturn 0, 0\n}\n\n// Ino implements File.Ino\nfunc (UnimplementedFile) Ino() (sys.Inode, Errno) {\n\treturn 0, 0\n}\n\n// IsDir implements File.IsDir\nfunc (UnimplementedFile) IsDir() (bool, Errno) {\n\treturn false, 0\n}\n\n// IsAppend implements File.IsAppend\nfunc (UnimplementedFile) IsAppend() bool {\n\treturn false\n}\n\n// SetAppend implements File.SetAppend\nfunc (UnimplementedFile) SetAppend(bool) Errno {\n\treturn ENOSYS\n}\n\n// Stat implements File.Stat\nfunc (UnimplementedFile) Stat() (sys.Stat_t, Errno) {\n\treturn sys.Stat_t{}, ENOSYS\n}\n\n// Read implements File.Read\nfunc (UnimplementedFile) Read([]byte) (int, Errno) {\n\treturn 0, ENOSYS\n}\n\n// Pread implements File.Pread\nfunc (UnimplementedFile) Pread([]byte, int64) (int, Errno) {\n\treturn 0, ENOSYS\n}\n\n// Seek implements File.Seek\nfunc (UnimplementedFile) Seek(int64, int) (int64, Errno) {\n\treturn 0, ENOSYS\n}\n\n// Readdir implements File.Readdir\nfunc (UnimplementedFile) Readdir(int) (dirents []Dirent, errno Errno) {\n\treturn nil, ENOSYS\n}\n\n// Write implements File.Write\nfunc (UnimplementedFile) Write([]byte) (int, Errno) {\n\treturn 0, ENOSYS\n}\n\n// Pwrite implements File.Pwrite\nfunc (UnimplementedFile) Pwrite([]byte, int64) (int, Errno) {\n\treturn 0, ENOSYS\n}\n\n// Truncate implements File.Truncate\nfunc (UnimplementedFile) Truncate(int64) Errno {\n\treturn ENOSYS\n}\n\n// Sync implements File.Sync\nfunc (UnimplementedFile) Sync() Errno {\n\treturn 0 // not ENOSYS\n}\n\n// Datasync implements File.Datasync\nfunc (UnimplementedFile) Datasync() Errno {\n\treturn 0 // not ENOSYS\n}\n\n// Utimens implements File.Utimens\nfunc (UnimplementedFile) Utimens(int64, int64) Errno {\n\treturn ENOSYS\n}\n\n// Close implements File.Close\nfunc (UnimplementedFile) Close() (errno Errno) { return }\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/fsconfig.go",
    "content": "package wazero\n\nimport (\n\t\"io/fs\"\n\n\texperimentalsys \"github.com/tetratelabs/wazero/experimental/sys\"\n\t\"github.com/tetratelabs/wazero/internal/sys\"\n\t\"github.com/tetratelabs/wazero/internal/sysfs\"\n)\n\n// FSConfig configures filesystem paths the embedding host allows the wasm\n// guest to access. Unconfigured paths are not allowed, so functions like\n// `path_open` result in unsupported errors (e.g. syscall.ENOSYS).\n//\n// # Guest Path\n//\n// `guestPath` is the name of the path the guest should use a filesystem for, or\n// empty for any files.\n//\n// All `guestPath` paths are normalized, specifically removing any leading or\n// trailing slashes. This means \"/\", \"./\" or \".\" all coerce to empty \"\".\n//\n// Multiple `guestPath` values can be configured, but the last longest match\n// wins. For example, if \"tmp\", then \"\" were added, a request to open\n// \"tmp/foo.txt\" use the filesystem associated with \"tmp\" even though a wider\n// path, \"\" (all files), was added later.\n//\n// A `guestPath` of \".\" coerces to the empty string \"\" because the current\n// directory is handled by the guest. In other words, the guest resolves ites\n// current directory prior to requesting files.\n//\n// More notes on `guestPath`\n//   - Working directories are typically tracked in wasm, though possible some\n//     relative paths are requested. For example, TinyGo may attempt to resolve\n//     a path \"../..\" in unit tests.\n//   - Zig uses the first path name it sees as the initial working directory of\n//     the process.\n//\n// # Scope\n//\n// Configuration here is module instance scoped. This means you can use the\n// same configuration for multiple calls to Runtime.InstantiateModule. Each\n// module will have a different file descriptor table. Any errors accessing\n// resources allowed here are deferred to instantiation time of each module.\n//\n// Any host resources present at the time of configuration, but deleted before\n// Runtime.InstantiateModule will trap/panic when the guest wasm initializes or\n// calls functions like `fd_read`.\n//\n// # Windows\n//\n// While wazero supports Windows as a platform, all known compilers use POSIX\n// conventions at runtime. For example, even when running on Windows, paths\n// used by wasm are separated by forward slash (/), not backslash (\\).\n//\n// # Notes\n//\n//   - This is an interface for decoupling, not third-party implementations.\n//     All implementations are in wazero.\n//   - FSConfig is immutable. Each WithXXX function returns a new instance\n//     including the corresponding change.\n//   - RATIONALE.md includes design background and relationship to WebAssembly\n//     System Interfaces (WASI).\ntype FSConfig interface {\n\t// WithDirMount assigns a directory at `dir` to any paths beginning at\n\t// `guestPath`.\n\t//\n\t// For example, `dirPath` as / (or c:\\ in Windows), makes the entire host\n\t// volume writeable to the path on the guest. The `guestPath` is always a\n\t// POSIX style path, slash (/) delimited, even if run on Windows.\n\t//\n\t// If the same `guestPath` was assigned before, this overrides its value,\n\t// retaining the original precedence. See the documentation of FSConfig for\n\t// more details on `guestPath`.\n\t//\n\t// # Isolation\n\t//\n\t// The guest will have full access to this directory including escaping it\n\t// via relative path lookups like \"../../\". Full access includes operations\n\t// such as creating or deleting files, limited to any host level access\n\t// controls.\n\t//\n\t// # os.DirFS\n\t//\n\t// This configuration optimizes for WASI compatibility which is sometimes\n\t// at odds with the behavior of os.DirFS. Hence, this will not behave\n\t// exactly the same as os.DirFS. See /RATIONALE.md for more.\n\tWithDirMount(dir, guestPath string) FSConfig\n\n\t// WithReadOnlyDirMount assigns a directory at `dir` to any paths\n\t// beginning at `guestPath`.\n\t//\n\t// This is the same as WithDirMount except only read operations are\n\t// permitted. However, escaping the directory via relative path lookups\n\t// like \"../../\" is still allowed.\n\tWithReadOnlyDirMount(dir, guestPath string) FSConfig\n\n\t// WithFSMount assigns a fs.FS file system for any paths beginning at\n\t// `guestPath`.\n\t//\n\t// If the same `guestPath` was assigned before, this overrides its value,\n\t// retaining the original precedence. See the documentation of FSConfig for\n\t// more details on `guestPath`.\n\t//\n\t// # Isolation\n\t//\n\t// fs.FS does not restrict the ability to overwrite returned files via\n\t// io.Writer. Moreover, os.DirFS documentation includes important notes\n\t// about isolation, which also applies to fs.Sub. As of Go 1.19, the\n\t// built-in file-systems are not jailed (chroot). See\n\t// https://github.com/golang/go/issues/42322\n\t//\n\t// # os.DirFS\n\t//\n\t// Due to limited control and functionality available in os.DirFS, we\n\t// advise using WithDirMount instead. There will be behavior differences\n\t// between os.DirFS and WithDirMount, as the latter biases towards what's\n\t// expected from WASI implementations.\n\t//\n\t// # Custom fs.FileInfo\n\t//\n\t// The underlying implementation supports data not usually in fs.FileInfo\n\t// when `info.Sys` returns *sys.Stat_t. For example, a custom fs.FS can use\n\t// this approach to generate or mask sys.Inode data. Such a filesystem\n\t// needs to decorate any functions that can return fs.FileInfo:\n\t//\n\t//   - `Stat` as defined on `fs.File` (always)\n\t//   - `Readdir` as defined on `os.File` (if defined)\n\t//\n\t// See sys.NewStat_t for examples.\n\tWithFSMount(fs fs.FS, guestPath string) FSConfig\n}\n\ntype fsConfig struct {\n\t// fs are the currently configured filesystems.\n\tfs []experimentalsys.FS\n\t// guestPaths are the user-supplied names of the filesystems, retained for\n\t// error messages and fmt.Stringer.\n\tguestPaths []string\n\t// guestPathToFS are the normalized paths to the currently configured\n\t// filesystems, used for de-duplicating.\n\tguestPathToFS map[string]int\n}\n\n// NewFSConfig returns a FSConfig that can be used for configuring module instantiation.\nfunc NewFSConfig() FSConfig {\n\treturn &fsConfig{guestPathToFS: map[string]int{}}\n}\n\n// clone makes a deep copy of this module config.\nfunc (c *fsConfig) clone() *fsConfig {\n\tret := *c // copy except slice and maps which share a ref\n\tret.fs = make([]experimentalsys.FS, 0, len(c.fs))\n\tret.fs = append(ret.fs, c.fs...)\n\tret.guestPaths = make([]string, 0, len(c.guestPaths))\n\tret.guestPaths = append(ret.guestPaths, c.guestPaths...)\n\tret.guestPathToFS = make(map[string]int, len(c.guestPathToFS))\n\tfor key, value := range c.guestPathToFS {\n\t\tret.guestPathToFS[key] = value\n\t}\n\treturn &ret\n}\n\n// WithDirMount implements FSConfig.WithDirMount\nfunc (c *fsConfig) WithDirMount(dir, guestPath string) FSConfig {\n\treturn c.WithSysFSMount(sysfs.DirFS(dir), guestPath)\n}\n\n// WithReadOnlyDirMount implements FSConfig.WithReadOnlyDirMount\nfunc (c *fsConfig) WithReadOnlyDirMount(dir, guestPath string) FSConfig {\n\treturn c.WithSysFSMount(&sysfs.ReadFS{FS: sysfs.DirFS(dir)}, guestPath)\n}\n\n// WithFSMount implements FSConfig.WithFSMount\nfunc (c *fsConfig) WithFSMount(fs fs.FS, guestPath string) FSConfig {\n\tvar adapted experimentalsys.FS\n\tif fs != nil {\n\t\tadapted = &sysfs.AdaptFS{FS: fs}\n\t}\n\treturn c.WithSysFSMount(adapted, guestPath)\n}\n\n// WithSysFSMount implements sysfs.FSConfig\nfunc (c *fsConfig) WithSysFSMount(fs experimentalsys.FS, guestPath string) FSConfig {\n\tif _, ok := fs.(experimentalsys.UnimplementedFS); ok {\n\t\treturn c // don't add fake paths.\n\t}\n\tcleaned := sys.StripPrefixesAndTrailingSlash(guestPath)\n\tret := c.clone()\n\tif i, ok := ret.guestPathToFS[cleaned]; ok {\n\t\tret.fs[i] = fs\n\t\tret.guestPaths[i] = guestPath\n\t} else if fs != nil {\n\t\tret.guestPathToFS[cleaned] = len(ret.fs)\n\t\tret.fs = append(ret.fs, fs)\n\t\tret.guestPaths = append(ret.guestPaths, guestPath)\n\t}\n\treturn ret\n}\n\n// preopens returns the possible nil index-correlated preopened filesystems\n// with guest paths.\nfunc (c *fsConfig) preopens() ([]experimentalsys.FS, []string) {\n\tpreopenCount := len(c.fs)\n\tif preopenCount == 0 {\n\t\treturn nil, nil\n\t}\n\tfs := make([]experimentalsys.FS, len(c.fs))\n\tcopy(fs, c.fs)\n\tguestPaths := make([]string, len(c.guestPaths))\n\tcopy(guestPaths, c.guestPaths)\n\treturn fs, guestPaths\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/imports/wasi_snapshot_preview1/args.go",
    "content": "package wasi_snapshot_preview1\n\nimport (\n\t\"context\"\n\n\t\"github.com/tetratelabs/wazero/api\"\n\t\"github.com/tetratelabs/wazero/experimental/sys\"\n\t\"github.com/tetratelabs/wazero/internal/wasip1\"\n\t\"github.com/tetratelabs/wazero/internal/wasm\"\n)\n\n// argsGet is the WASI function named ArgsGetName that reads command-line\n// argument data.\n//\n// # Parameters\n//\n//   - argv: offset to begin writing argument offsets in uint32 little-endian\n//     encoding to api.Memory\n//   - argsSizesGet result argc * 4 bytes are written to this offset\n//   - argvBuf: offset to write the null terminated arguments to api.Memory\n//   - argsSizesGet result argv_len bytes are written to this offset\n//\n// Result (Errno)\n//\n// The return value is ErrnoSuccess except the following error conditions:\n//   - sys.EFAULT: there is not enough memory to write results\n//\n// For example, if argsSizesGet wrote argc=2 and argvLen=5 for arguments:\n// \"a\" and \"bc\" parameters argv=7 and argvBuf=1, this function writes the below\n// to api.Memory:\n//\n//\t                   argvLen          uint32le    uint32le\n//\t            +----------------+     +--------+  +--------+\n//\t            |                |     |        |  |        |\n//\t []byte{?, 'a', 0, 'b', 'c', 0, ?, 1, 0, 0, 0, 3, 0, 0, 0, ?}\n//\targvBuf --^                      ^           ^\n//\t                          argv --|           |\n//\t        offset that begins \"a\" --+           |\n//\t                   offset that begins \"bc\" --+\n//\n// See argsSizesGet\n// See https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#args_get\n// See https://en.wikipedia.org/wiki/Null-terminated_string\nvar argsGet = newHostFunc(wasip1.ArgsGetName, argsGetFn, []api.ValueType{i32, i32}, \"argv\", \"argv_buf\")\n\nfunc argsGetFn(_ context.Context, mod api.Module, params []uint64) sys.Errno {\n\tsysCtx := mod.(*wasm.ModuleInstance).Sys\n\targv, argvBuf := uint32(params[0]), uint32(params[1])\n\treturn writeOffsetsAndNullTerminatedValues(mod.Memory(), sysCtx.Args(), argv, argvBuf, sysCtx.ArgsSize())\n}\n\n// argsSizesGet is the WASI function named ArgsSizesGetName that reads\n// command-line argument sizes.\n//\n// # Parameters\n//\n//   - resultArgc: offset to write the argument count to api.Memory\n//   - resultArgvLen: offset to write the null-terminated argument length to\n//     api.Memory\n//\n// Result (Errno)\n//\n// The return value is ErrnoSuccess except the following error conditions:\n//   - sys.EFAULT: there is not enough memory to write results\n//\n// For example, if args are \"a\", \"bc\" and parameters resultArgc=1 and\n// resultArgvLen=6, this function writes the below to api.Memory:\n//\n//\t                uint32le       uint32le\n//\t               +--------+     +--------+\n//\t               |        |     |        |\n//\t     []byte{?, 2, 0, 0, 0, ?, 5, 0, 0, 0, ?}\n//\t  resultArgc --^              ^\n//\t      2 args --+              |\n//\t              resultArgvLen --|\n//\tlen([]byte{'a',0,'b',c',0}) --+\n//\n// See argsGet\n// See https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#args_sizes_get\n// See https://en.wikipedia.org/wiki/Null-terminated_string\nvar argsSizesGet = newHostFunc(wasip1.ArgsSizesGetName, argsSizesGetFn, []api.ValueType{i32, i32}, \"result.argc\", \"result.argv_len\")\n\nfunc argsSizesGetFn(_ context.Context, mod api.Module, params []uint64) sys.Errno {\n\tsysCtx := mod.(*wasm.ModuleInstance).Sys\n\tmem := mod.Memory()\n\tresultArgc, resultArgvLen := uint32(params[0]), uint32(params[1])\n\n\t// argc and argv_len offsets are not necessarily sequential, so we have to\n\t// write them independently.\n\tif !mem.WriteUint32Le(resultArgc, uint32(len(sysCtx.Args()))) {\n\t\treturn sys.EFAULT\n\t}\n\tif !mem.WriteUint32Le(resultArgvLen, sysCtx.ArgsSize()) {\n\t\treturn sys.EFAULT\n\t}\n\treturn 0\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/imports/wasi_snapshot_preview1/clock.go",
    "content": "package wasi_snapshot_preview1\n\nimport (\n\t\"context\"\n\n\t\"github.com/tetratelabs/wazero/api\"\n\t\"github.com/tetratelabs/wazero/experimental/sys\"\n\t\"github.com/tetratelabs/wazero/internal/wasip1\"\n\t\"github.com/tetratelabs/wazero/internal/wasm\"\n)\n\n// clockResGet is the WASI function named ClockResGetName that returns the\n// resolution of time values returned by clockTimeGet.\n//\n// # Parameters\n//\n//   - id: clock ID to use\n//   - resultResolution: offset to write the resolution to api.Memory\n//   - the resolution is an uint64 little-endian encoding\n//\n// Result (Errno)\n//\n// The return value is 0 except the following error conditions:\n//   - sys.ENOTSUP: the clock ID is not supported.\n//   - sys.EINVAL: the clock ID is invalid.\n//   - sys.EFAULT: there is not enough memory to write results\n//\n// For example, if the resolution is 100ns, this function writes the below to\n// api.Memory:\n//\n//\t                                   uint64le\n//\t                   +-------------------------------------+\n//\t                   |                                     |\n//\t         []byte{?, 0x64, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ?}\n//\tresultResolution --^\n//\n// Note: This is similar to `clock_getres` in POSIX.\n// See https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#-clock_res_getid-clockid---errno-timestamp\n// See https://linux.die.net/man/3/clock_getres\nvar clockResGet = newHostFunc(wasip1.ClockResGetName, clockResGetFn, []api.ValueType{i32, i32}, \"id\", \"result.resolution\")\n\nfunc clockResGetFn(_ context.Context, mod api.Module, params []uint64) sys.Errno {\n\tsysCtx := mod.(*wasm.ModuleInstance).Sys\n\tid, resultResolution := uint32(params[0]), uint32(params[1])\n\n\tvar resolution uint64 // ns\n\tswitch id {\n\tcase wasip1.ClockIDRealtime:\n\t\tresolution = uint64(sysCtx.WalltimeResolution())\n\tcase wasip1.ClockIDMonotonic:\n\t\tresolution = uint64(sysCtx.NanotimeResolution())\n\tdefault:\n\t\treturn sys.EINVAL\n\t}\n\n\tif !mod.Memory().WriteUint64Le(resultResolution, resolution) {\n\t\treturn sys.EFAULT\n\t}\n\treturn 0\n}\n\n// clockTimeGet is the WASI function named ClockTimeGetName that returns\n// the time value of a name (time.Now).\n//\n// # Parameters\n//\n//   - id: clock ID to use\n//   - precision: maximum lag (exclusive) that the returned time value may have,\n//     compared to its actual value\n//   - resultTimestamp: offset to write the timestamp to api.Memory\n//   - the timestamp is epoch nanos encoded as a little-endian uint64\n//\n// Result (Errno)\n//\n// The return value is 0 except the following error conditions:\n//   - sys.ENOTSUP: the clock ID is not supported.\n//   - sys.EINVAL: the clock ID is invalid.\n//   - sys.EFAULT: there is not enough memory to write results\n//\n// For example, if time.Now returned exactly midnight UTC 2022-01-01\n// (1640995200000000000), and parameters resultTimestamp=1, this function\n// writes the below to api.Memory:\n//\n//\t                                    uint64le\n//\t                  +------------------------------------------+\n//\t                  |                                          |\n//\t        []byte{?, 0x0, 0x0, 0x1f, 0xa6, 0x70, 0xfc, 0xc5, 0x16, ?}\n//\tresultTimestamp --^\n//\n// Note: This is similar to `clock_gettime` in POSIX.\n// See https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#-clock_time_getid-clockid-precision-timestamp---errno-timestamp\n// See https://linux.die.net/man/3/clock_gettime\nvar clockTimeGet = newHostFunc(wasip1.ClockTimeGetName, clockTimeGetFn, []api.ValueType{i32, i64, i32}, \"id\", \"precision\", \"result.timestamp\")\n\nfunc clockTimeGetFn(_ context.Context, mod api.Module, params []uint64) sys.Errno {\n\tsysCtx := mod.(*wasm.ModuleInstance).Sys\n\tid := uint32(params[0])\n\t// TODO: precision is currently ignored.\n\t// precision = params[1]\n\tresultTimestamp := uint32(params[2])\n\n\tvar val int64\n\tswitch id {\n\tcase wasip1.ClockIDRealtime:\n\t\tval = sysCtx.WalltimeNanos()\n\tcase wasip1.ClockIDMonotonic:\n\t\tval = sysCtx.Nanotime()\n\tdefault:\n\t\treturn sys.EINVAL\n\t}\n\n\tif !mod.Memory().WriteUint64Le(resultTimestamp, uint64(val)) {\n\t\treturn sys.EFAULT\n\t}\n\treturn 0\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/imports/wasi_snapshot_preview1/environ.go",
    "content": "package wasi_snapshot_preview1\n\nimport (\n\t\"context\"\n\n\t\"github.com/tetratelabs/wazero/api\"\n\t\"github.com/tetratelabs/wazero/experimental/sys\"\n\t\"github.com/tetratelabs/wazero/internal/wasip1\"\n\t\"github.com/tetratelabs/wazero/internal/wasm\"\n)\n\n// environGet is the WASI function named EnvironGetName that reads\n// environment variables.\n//\n// # Parameters\n//\n//   - environ: offset to begin writing environment offsets in uint32\n//     little-endian encoding to api.Memory\n//   - environSizesGet result environc * 4 bytes are written to this offset\n//   - environBuf: offset to write the null-terminated variables to api.Memory\n//   - the format is like os.Environ: null-terminated \"key=val\" entries\n//   - environSizesGet result environLen bytes are written to this offset\n//\n// Result (Errno)\n//\n// The return value is 0 except the following error conditions:\n//   - sys.EFAULT: there is not enough memory to write results\n//\n// For example, if environSizesGet wrote environc=2 and environLen=9 for\n// environment variables: \"a=b\", \"b=cd\" and parameters environ=11 and\n// environBuf=1, this function writes the below to api.Memory:\n//\n//\t                              environLen                 uint32le    uint32le\n//\t             +------------------------------------+     +--------+  +--------+\n//\t             |                                    |     |        |  |        |\n//\t  []byte{?, 'a', '=', 'b', 0, 'b', '=', 'c', 'd', 0, ?, 1, 0, 0, 0, 5, 0, 0, 0, ?}\n//\tenvironBuf --^                                          ^           ^\n//\t                             environ offset for \"a=b\" --+           |\n//\t                                        environ offset for \"b=cd\" --+\n//\n// See environSizesGet\n// See https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#environ_get\n// See https://en.wikipedia.org/wiki/Null-terminated_string\nvar environGet = newHostFunc(wasip1.EnvironGetName, environGetFn, []api.ValueType{i32, i32}, \"environ\", \"environ_buf\")\n\nfunc environGetFn(_ context.Context, mod api.Module, params []uint64) sys.Errno {\n\tsysCtx := mod.(*wasm.ModuleInstance).Sys\n\tenviron, environBuf := uint32(params[0]), uint32(params[1])\n\n\treturn writeOffsetsAndNullTerminatedValues(mod.Memory(), sysCtx.Environ(), environ, environBuf, sysCtx.EnvironSize())\n}\n\n// environSizesGet is the WASI function named EnvironSizesGetName that\n// reads environment variable sizes.\n//\n// # Parameters\n//\n//   - resultEnvironc: offset to write the count of environment variables to\n//     api.Memory\n//   - resultEnvironvLen: offset to write the null-terminated environment\n//     variable length to api.Memory\n//\n// Result (Errno)\n//\n// The return value is 0 except the following error conditions:\n//   - sys.EFAULT: there is not enough memory to write results\n//\n// For example, if environ are \"a=b\",\"b=cd\" and parameters resultEnvironc=1 and\n// resultEnvironvLen=6, this function writes the below to api.Memory:\n//\n//\t                   uint32le       uint32le\n//\t                  +--------+     +--------+\n//\t                  |        |     |        |\n//\t        []byte{?, 2, 0, 0, 0, ?, 9, 0, 0, 0, ?}\n//\t resultEnvironc --^              ^\n//\t\t2 variables --+              |\n//\t             resultEnvironvLen --|\n//\t    len([]byte{'a','=','b',0,    |\n//\t           'b','=','c','d',0}) --+\n//\n// See environGet\n// https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#environ_sizes_get\n// and https://en.wikipedia.org/wiki/Null-terminated_string\nvar environSizesGet = newHostFunc(wasip1.EnvironSizesGetName, environSizesGetFn, []api.ValueType{i32, i32}, \"result.environc\", \"result.environv_len\")\n\nfunc environSizesGetFn(_ context.Context, mod api.Module, params []uint64) sys.Errno {\n\tsysCtx := mod.(*wasm.ModuleInstance).Sys\n\tmem := mod.Memory()\n\tresultEnvironc, resultEnvironvLen := uint32(params[0]), uint32(params[1])\n\n\t// environc and environv_len offsets are not necessarily sequential, so we\n\t// have to write them independently.\n\tif !mem.WriteUint32Le(resultEnvironc, uint32(len(sysCtx.Environ()))) {\n\t\treturn sys.EFAULT\n\t}\n\tif !mem.WriteUint32Le(resultEnvironvLen, sysCtx.EnvironSize()) {\n\t\treturn sys.EFAULT\n\t}\n\treturn 0\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/imports/wasi_snapshot_preview1/fs.go",
    "content": "package wasi_snapshot_preview1\n\nimport (\n\t\"context\"\n\t\"io\"\n\t\"io/fs\"\n\t\"math\"\n\t\"path\"\n\t\"strings\"\n\t\"unsafe\"\n\n\t\"github.com/tetratelabs/wazero/api\"\n\texperimentalsys \"github.com/tetratelabs/wazero/experimental/sys\"\n\tsocketapi \"github.com/tetratelabs/wazero/internal/sock\"\n\t\"github.com/tetratelabs/wazero/internal/sys\"\n\t\"github.com/tetratelabs/wazero/internal/wasip1\"\n\t\"github.com/tetratelabs/wazero/internal/wasm\"\n\tsysapi \"github.com/tetratelabs/wazero/sys\"\n)\n\n// fdAdvise is the WASI function named FdAdviseName which provides file\n// advisory information on a file descriptor.\n//\n// See https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#-fd_advisefd-fd-offset-filesize-len-filesize-advice-advice---errno\nvar fdAdvise = newHostFunc(\n\twasip1.FdAdviseName, fdAdviseFn,\n\t[]wasm.ValueType{i32, i64, i64, i32},\n\t\"fd\", \"offset\", \"len\", \"advice\",\n)\n\nfunc fdAdviseFn(_ context.Context, mod api.Module, params []uint64) experimentalsys.Errno {\n\tfd := int32(params[0])\n\t_ = params[1]\n\t_ = params[2]\n\tadvice := byte(params[3])\n\tfsc := mod.(*wasm.ModuleInstance).Sys.FS()\n\n\t_, ok := fsc.LookupFile(fd)\n\tif !ok {\n\t\treturn experimentalsys.EBADF\n\t}\n\n\tswitch advice {\n\tcase wasip1.FdAdviceNormal,\n\t\twasip1.FdAdviceSequential,\n\t\twasip1.FdAdviceRandom,\n\t\twasip1.FdAdviceWillNeed,\n\t\twasip1.FdAdviceDontNeed,\n\t\twasip1.FdAdviceNoReuse:\n\tdefault:\n\t\treturn experimentalsys.EINVAL\n\t}\n\n\t// FdAdvice corresponds to posix_fadvise, but it can only be supported on linux.\n\t// However, the purpose of the call is just to do best-effort optimization on OS kernels,\n\t// so just making this noop rather than returning NoSup error makes sense and doesn't affect\n\t// the semantics of Wasm applications.\n\t// TODO: invoke posix_fadvise on linux, and partially on darwin.\n\t// - https://gitlab.com/cznic/fileutil/-/blob/v1.1.2/fileutil_linux.go#L87-95\n\t// - https://github.com/bytecodealliance/system-interface/blob/62b97f9776b86235f318c3a6e308395a1187439b/src/fs/file_io_ext.rs#L430-L442\n\treturn 0\n}\n\n// fdAllocate is the WASI function named FdAllocateName which forces the\n// allocation of space in a file.\n//\n// See https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#-fd_allocatefd-fd-offset-filesize-len-filesize---errno\nvar fdAllocate = newHostFunc(\n\twasip1.FdAllocateName, fdAllocateFn,\n\t[]wasm.ValueType{i32, i64, i64},\n\t\"fd\", \"offset\", \"len\",\n)\n\nfunc fdAllocateFn(_ context.Context, mod api.Module, params []uint64) experimentalsys.Errno {\n\tfd := int32(params[0])\n\toffset := params[1]\n\tlength := params[2]\n\n\tfsc := mod.(*wasm.ModuleInstance).Sys.FS()\n\tf, ok := fsc.LookupFile(fd)\n\tif !ok {\n\t\treturn experimentalsys.EBADF\n\t}\n\n\ttail := int64(offset + length)\n\tif tail < 0 {\n\t\treturn experimentalsys.EINVAL\n\t}\n\n\tst, errno := f.File.Stat()\n\tif errno != 0 {\n\t\treturn errno\n\t}\n\n\tif st.Size >= tail {\n\t\treturn 0 // We already have enough space.\n\t}\n\n\treturn f.File.Truncate(tail)\n}\n\n// fdClose is the WASI function named FdCloseName which closes a file\n// descriptor.\n//\n// # Parameters\n//\n//   - fd: file descriptor to close\n//\n// Result (Errno)\n//\n// The return value is 0 except the following error conditions:\n//   - sys.EBADF: the fd was not open.\n//   - sys.ENOTSUP: the fs was a pre-open\n//\n// Note: This is similar to `close` in POSIX.\n// See https://github.com/WebAssembly/WASI/blob/main/phases/snapshot/docs.md#fd_close\n// and https://linux.die.net/man/3/close\nvar fdClose = newHostFunc(wasip1.FdCloseName, fdCloseFn, []api.ValueType{i32}, \"fd\")\n\nfunc fdCloseFn(_ context.Context, mod api.Module, params []uint64) experimentalsys.Errno {\n\tfsc := mod.(*wasm.ModuleInstance).Sys.FS()\n\tfd := int32(params[0])\n\n\treturn fsc.CloseFile(fd)\n}\n\n// fdDatasync is the WASI function named FdDatasyncName which synchronizes\n// the data of a file to disk.\n//\n// See https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#-fd_datasyncfd-fd---errno\nvar fdDatasync = newHostFunc(wasip1.FdDatasyncName, fdDatasyncFn, []api.ValueType{i32}, \"fd\")\n\nfunc fdDatasyncFn(_ context.Context, mod api.Module, params []uint64) experimentalsys.Errno {\n\tfsc := mod.(*wasm.ModuleInstance).Sys.FS()\n\tfd := int32(params[0])\n\n\t// Check to see if the file descriptor is available\n\tif f, ok := fsc.LookupFile(fd); !ok {\n\t\treturn experimentalsys.EBADF\n\t} else {\n\t\treturn f.File.Datasync()\n\t}\n}\n\n// fdFdstatGet is the WASI function named FdFdstatGetName which returns the\n// attributes of a file descriptor.\n//\n// # Parameters\n//\n//   - fd: file descriptor to get the fdstat attributes data\n//   - resultFdstat: offset to write the result fdstat data\n//\n// Result (Errno)\n//\n// The return value is 0 except the following error conditions:\n//   - sys.EBADF: `fd` is invalid\n//   - sys.EFAULT: `resultFdstat` points to an offset out of memory\n//\n// fdstat byte layout is 24-byte size, with the following fields:\n//   - fs_filetype 1 byte: the file type\n//   - fs_flags 2 bytes: the file descriptor flag\n//   - 5 pad bytes\n//   - fs_right_base 8 bytes: ignored as rights were removed from WASI.\n//   - fs_right_inheriting 8 bytes: ignored as rights were removed from WASI.\n//\n// For example, with a file corresponding with `fd` was a directory (=3) opened\n// with `fd_read` right (=1) and no fs_flags (=0), parameter resultFdstat=1,\n// this function writes the below to api.Memory:\n//\n//\t                uint16le   padding            uint64le                uint64le\n//\t       uint8 --+  +--+  +-----------+  +--------------------+  +--------------------+\n//\t               |  |  |  |           |  |                    |  |                    |\n//\t     []byte{?, 3, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}\n//\tresultFdstat --^  ^-- fs_flags         ^-- fs_right_base       ^-- fs_right_inheriting\n//\t               |\n//\t               +-- fs_filetype\n//\n// Note: fdFdstatGet returns similar flags to `fsync(fd, F_GETFL)` in POSIX, as\n// well as additional fields.\n// See https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#fdstat\n// and https://linux.die.net/man/3/fsync\nvar fdFdstatGet = newHostFunc(wasip1.FdFdstatGetName, fdFdstatGetFn, []api.ValueType{i32, i32}, \"fd\", \"result.stat\")\n\n// fdFdstatGetFn cannot currently use proxyResultParams because fdstat is larger\n// than api.ValueTypeI64 (i64 == 8 bytes, but fdstat is 24).\nfunc fdFdstatGetFn(_ context.Context, mod api.Module, params []uint64) experimentalsys.Errno {\n\tfsc := mod.(*wasm.ModuleInstance).Sys.FS()\n\n\tfd, resultFdstat := int32(params[0]), uint32(params[1])\n\n\t// Ensure we can write the fdstat\n\tbuf, ok := mod.Memory().Read(resultFdstat, 24)\n\tif !ok {\n\t\treturn experimentalsys.EFAULT\n\t}\n\n\tvar fdflags uint16\n\tvar st sysapi.Stat_t\n\tvar errno experimentalsys.Errno\n\tf, ok := fsc.LookupFile(fd)\n\tif !ok {\n\t\treturn experimentalsys.EBADF\n\t} else if st, errno = f.File.Stat(); errno != 0 {\n\t\treturn errno\n\t} else if f.File.IsAppend() {\n\t\tfdflags |= wasip1.FD_APPEND\n\t}\n\n\tif f.File.IsNonblock() {\n\t\tfdflags |= wasip1.FD_NONBLOCK\n\t}\n\n\tvar fsRightsBase uint32\n\tvar fsRightsInheriting uint32\n\tfileType := getExtendedWasiFiletype(f.File, st.Mode)\n\n\tswitch fileType {\n\tcase wasip1.FILETYPE_DIRECTORY:\n\t\t// To satisfy wasi-testsuite, we must advertise that directories cannot\n\t\t// be given seek permission (RIGHT_FD_SEEK).\n\t\tfsRightsBase = dirRightsBase\n\t\tfsRightsInheriting = fileRightsBase | dirRightsBase\n\tcase wasip1.FILETYPE_CHARACTER_DEVICE:\n\t\t// According to wasi-libc,\n\t\t// > A tty is a character device that we can't seek or tell on.\n\t\t// See https://github.com/WebAssembly/wasi-libc/blob/a6f871343313220b76009827ed0153586361c0d5/libc-bottom-half/sources/isatty.c#L13-L18\n\t\tfsRightsBase = fileRightsBase &^ wasip1.RIGHT_FD_SEEK &^ wasip1.RIGHT_FD_TELL\n\tdefault:\n\t\tfsRightsBase = fileRightsBase\n\t}\n\n\twriteFdstat(buf, fileType, fdflags, fsRightsBase, fsRightsInheriting)\n\treturn 0\n}\n\n// isPreopenedStdio returns true if the FD is sys.FdStdin, sys.FdStdout or\n// sys.FdStderr and pre-opened. This double check is needed in case the guest\n// closes stdin and re-opens it with a random alternative file.\n//\n// Currently, we only support non-blocking mode for standard I/O streams.\n// Non-blocking mode is rarely supported for regular files, and we don't\n// yet have support for sockets, so we make a special case.\n//\n// Note: this to get or set FD_NONBLOCK, but skip FD_APPEND. Our current\n// implementation can't set FD_APPEND, without re-opening files. As stdio are\n// pre-opened, we don't know how to re-open them, neither should we close the\n// underlying file. Later, we could add support for setting FD_APPEND, similar\n// to SetNonblock.\nfunc isPreopenedStdio(fd int32, f *sys.FileEntry) bool {\n\treturn fd <= sys.FdStderr && f.IsPreopen\n}\n\nconst fileRightsBase = wasip1.RIGHT_FD_DATASYNC |\n\twasip1.RIGHT_FD_READ |\n\twasip1.RIGHT_FD_SEEK |\n\twasip1.RIGHT_FDSTAT_SET_FLAGS |\n\twasip1.RIGHT_FD_SYNC |\n\twasip1.RIGHT_FD_TELL |\n\twasip1.RIGHT_FD_WRITE |\n\twasip1.RIGHT_FD_ADVISE |\n\twasip1.RIGHT_FD_ALLOCATE |\n\twasip1.RIGHT_FD_FILESTAT_GET |\n\twasip1.RIGHT_FD_FILESTAT_SET_SIZE |\n\twasip1.RIGHT_FD_FILESTAT_SET_TIMES |\n\twasip1.RIGHT_POLL_FD_READWRITE\n\nconst dirRightsBase = wasip1.RIGHT_FD_DATASYNC |\n\twasip1.RIGHT_FDSTAT_SET_FLAGS |\n\twasip1.RIGHT_FD_SYNC |\n\twasip1.RIGHT_PATH_CREATE_DIRECTORY |\n\twasip1.RIGHT_PATH_CREATE_FILE |\n\twasip1.RIGHT_PATH_LINK_SOURCE |\n\twasip1.RIGHT_PATH_LINK_TARGET |\n\twasip1.RIGHT_PATH_OPEN |\n\twasip1.RIGHT_FD_READDIR |\n\twasip1.RIGHT_PATH_READLINK |\n\twasip1.RIGHT_PATH_RENAME_SOURCE |\n\twasip1.RIGHT_PATH_RENAME_TARGET |\n\twasip1.RIGHT_PATH_FILESTAT_GET |\n\twasip1.RIGHT_PATH_FILESTAT_SET_SIZE |\n\twasip1.RIGHT_PATH_FILESTAT_SET_TIMES |\n\twasip1.RIGHT_FD_FILESTAT_GET |\n\twasip1.RIGHT_FD_FILESTAT_SET_TIMES |\n\twasip1.RIGHT_PATH_SYMLINK |\n\twasip1.RIGHT_PATH_REMOVE_DIRECTORY |\n\twasip1.RIGHT_PATH_UNLINK_FILE\n\nfunc writeFdstat(buf []byte, fileType uint8, fdflags uint16, fsRightsBase, fsRightsInheriting uint32) {\n\tb := (*[24]byte)(buf)\n\tle.PutUint16(b[0:], uint16(fileType))\n\tle.PutUint16(b[2:], fdflags)\n\tle.PutUint32(b[4:], 0)\n\tle.PutUint64(b[8:], uint64(fsRightsBase))\n\tle.PutUint64(b[16:], uint64(fsRightsInheriting))\n}\n\n// fdFdstatSetFlags is the WASI function named FdFdstatSetFlagsName which\n// adjusts the flags associated with a file descriptor.\nvar fdFdstatSetFlags = newHostFunc(wasip1.FdFdstatSetFlagsName, fdFdstatSetFlagsFn, []wasm.ValueType{i32, i32}, \"fd\", \"flags\")\n\nfunc fdFdstatSetFlagsFn(_ context.Context, mod api.Module, params []uint64) experimentalsys.Errno {\n\tfd, wasiFlag := int32(params[0]), uint16(params[1])\n\tfsc := mod.(*wasm.ModuleInstance).Sys.FS()\n\n\t// Currently we only support APPEND and NONBLOCK.\n\tif wasip1.FD_DSYNC&wasiFlag != 0 || wasip1.FD_RSYNC&wasiFlag != 0 || wasip1.FD_SYNC&wasiFlag != 0 {\n\t\treturn experimentalsys.EINVAL\n\t}\n\n\tif f, ok := fsc.LookupFile(fd); !ok {\n\t\treturn experimentalsys.EBADF\n\t} else {\n\t\tnonblock := wasip1.FD_NONBLOCK&wasiFlag != 0\n\t\terrno := f.File.SetNonblock(nonblock)\n\t\tif errno != 0 {\n\t\t\treturn errno\n\t\t}\n\t\tif stat, err := f.File.Stat(); err == 0 && stat.Mode.IsRegular() {\n\t\t\t// For normal files, proceed to apply an append flag.\n\t\t\tappend := wasip1.FD_APPEND&wasiFlag != 0\n\t\t\treturn f.File.SetAppend(append)\n\t\t}\n\t}\n\n\treturn 0\n}\n\n// fdFdstatSetRights will not be implemented as rights were removed from WASI.\n//\n// See https://github.com/bytecodealliance/wasmtime/pull/4666\nvar fdFdstatSetRights = stubFunction(\n\twasip1.FdFdstatSetRightsName,\n\t[]wasm.ValueType{i32, i64, i64},\n\t\"fd\", \"fs_rights_base\", \"fs_rights_inheriting\",\n)\n\n// fdFilestatGet is the WASI function named FdFilestatGetName which returns\n// the stat attributes of an open file.\n//\n// # Parameters\n//\n//   - fd: file descriptor to get the filestat attributes data for\n//   - resultFilestat: offset to write the result filestat data\n//\n// Result (Errno)\n//\n// The return value is 0 except the following error conditions:\n//   - sys.EBADF: `fd` is invalid\n//   - sys.EIO: could not stat `fd` on filesystem\n//   - sys.EFAULT: `resultFilestat` points to an offset out of memory\n//\n// filestat byte layout is 64-byte size, with the following fields:\n//   - dev 8 bytes: the device ID of device containing the file\n//   - ino 8 bytes: the file serial number\n//   - filetype 1 byte: the type of the file\n//   - 7 pad bytes\n//   - nlink 8 bytes: number of hard links to the file\n//   - size 8 bytes: for regular files, the file size in bytes. For symbolic links, the length in bytes of the pathname contained in the symbolic link\n//   - atim 8 bytes: ast data access timestamp\n//   - mtim 8 bytes: last data modification timestamp\n//   - ctim 8 bytes: ast file status change timestamp\n//\n// For example, with a regular file this function writes the below to api.Memory:\n//\n//\t                                                             uint8 --+\n//\t\t                         uint64le                uint64le        |        padding               uint64le                uint64le                         uint64le                               uint64le                             uint64le\n//\t\t                 +--------------------+  +--------------------+  |  +-----------------+  +--------------------+  +-----------------------+  +----------------------------------+  +----------------------------------+  +----------------------------------+\n//\t\t                 |                    |  |                    |  |  |                 |  |                    |  |                       |  |                                  |  |                                  |  |                                  |\n//\t\t          []byte{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 80, 0, 0, 0, 0, 0, 0, 160, 153, 212, 128, 110, 221, 35, 23, 160, 153, 212, 128, 110, 221, 35, 23, 160, 153, 212, 128, 110, 221, 35, 23}\n//\t\tresultFilestat   ^-- dev                 ^-- ino                 ^                       ^-- nlink               ^-- size                   ^-- atim                              ^-- mtim                              ^-- ctim\n//\t\t                                                                 |\n//\t\t                                                                 +-- filetype\n//\n// The following properties of filestat are not implemented:\n//   - dev: not supported by Golang FS\n//   - ino: not supported by Golang FS\n//   - nlink: not supported by Golang FS, we use 1\n//   - atime: not supported by Golang FS, we use mtim for this\n//   - ctim: not supported by Golang FS, we use mtim for this\n//\n// Note: This is similar to `fstat` in POSIX.\n// See https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#-fd_filestat_getfd-fd---errno-filestat\n// and https://linux.die.net/man/3/fstat\nvar fdFilestatGet = newHostFunc(wasip1.FdFilestatGetName, fdFilestatGetFn, []api.ValueType{i32, i32}, \"fd\", \"result.filestat\")\n\n// fdFilestatGetFn cannot currently use proxyResultParams because filestat is\n// larger than api.ValueTypeI64 (i64 == 8 bytes, but filestat is 64).\nfunc fdFilestatGetFn(_ context.Context, mod api.Module, params []uint64) experimentalsys.Errno {\n\treturn fdFilestatGetFunc(mod, int32(params[0]), uint32(params[1]))\n}\n\nfunc fdFilestatGetFunc(mod api.Module, fd int32, resultBuf uint32) experimentalsys.Errno {\n\tfsc := mod.(*wasm.ModuleInstance).Sys.FS()\n\n\t// Ensure we can write the filestat\n\tbuf, ok := mod.Memory().Read(resultBuf, 64)\n\tif !ok {\n\t\treturn experimentalsys.EFAULT\n\t}\n\n\tf, ok := fsc.LookupFile(fd)\n\tif !ok {\n\t\treturn experimentalsys.EBADF\n\t}\n\n\tst, errno := f.File.Stat()\n\tif errno != 0 {\n\t\treturn errno\n\t}\n\n\tfiletype := getExtendedWasiFiletype(f.File, st.Mode)\n\treturn writeFilestat(buf, &st, filetype)\n}\n\nfunc getExtendedWasiFiletype(file experimentalsys.File, fm fs.FileMode) (ftype uint8) {\n\tftype = getWasiFiletype(fm)\n\tif ftype == wasip1.FILETYPE_UNKNOWN {\n\t\tif _, ok := file.(socketapi.TCPSock); ok {\n\t\t\tftype = wasip1.FILETYPE_SOCKET_STREAM\n\t\t} else if _, ok = file.(socketapi.TCPConn); ok {\n\t\t\tftype = wasip1.FILETYPE_SOCKET_STREAM\n\t\t}\n\t}\n\treturn\n}\n\nfunc getWasiFiletype(fm fs.FileMode) uint8 {\n\tswitch {\n\tcase fm.IsRegular():\n\t\treturn wasip1.FILETYPE_REGULAR_FILE\n\tcase fm.IsDir():\n\t\treturn wasip1.FILETYPE_DIRECTORY\n\tcase fm&fs.ModeSymlink != 0:\n\t\treturn wasip1.FILETYPE_SYMBOLIC_LINK\n\tcase fm&fs.ModeDevice != 0:\n\t\t// Unlike ModeDevice and ModeCharDevice, FILETYPE_CHARACTER_DEVICE and\n\t\t// FILETYPE_BLOCK_DEVICE are set mutually exclusively.\n\t\tif fm&fs.ModeCharDevice != 0 {\n\t\t\treturn wasip1.FILETYPE_CHARACTER_DEVICE\n\t\t}\n\t\treturn wasip1.FILETYPE_BLOCK_DEVICE\n\tdefault: // unknown\n\t\treturn wasip1.FILETYPE_UNKNOWN\n\t}\n}\n\nfunc writeFilestat(buf []byte, st *sysapi.Stat_t, ftype uint8) (errno experimentalsys.Errno) {\n\tle.PutUint64(buf, st.Dev)\n\tle.PutUint64(buf[8:], st.Ino)\n\tle.PutUint64(buf[16:], uint64(ftype))\n\tle.PutUint64(buf[24:], st.Nlink)\n\tle.PutUint64(buf[32:], uint64(st.Size))\n\tle.PutUint64(buf[40:], uint64(st.Atim))\n\tle.PutUint64(buf[48:], uint64(st.Mtim))\n\tle.PutUint64(buf[56:], uint64(st.Ctim))\n\treturn\n}\n\n// fdFilestatSetSize is the WASI function named FdFilestatSetSizeName which\n// adjusts the size of an open file.\n//\n// See https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#-fd_filestat_set_sizefd-fd-size-filesize---errno\nvar fdFilestatSetSize = newHostFunc(wasip1.FdFilestatSetSizeName, fdFilestatSetSizeFn, []wasm.ValueType{i32, i64}, \"fd\", \"size\")\n\nfunc fdFilestatSetSizeFn(_ context.Context, mod api.Module, params []uint64) experimentalsys.Errno {\n\tfd := int32(params[0])\n\tsize := int64(params[1])\n\n\tfsc := mod.(*wasm.ModuleInstance).Sys.FS()\n\n\t// Check to see if the file descriptor is available\n\tif f, ok := fsc.LookupFile(fd); !ok {\n\t\treturn experimentalsys.EBADF\n\t} else {\n\t\treturn f.File.Truncate(size)\n\t}\n}\n\n// fdFilestatSetTimes is the WASI function named functionFdFilestatSetTimes\n// which adjusts the times of an open file.\n//\n// See https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#-fd_filestat_set_timesfd-fd-atim-timestamp-mtim-timestamp-fst_flags-fstflags---errno\nvar fdFilestatSetTimes = newHostFunc(\n\twasip1.FdFilestatSetTimesName, fdFilestatSetTimesFn,\n\t[]wasm.ValueType{i32, i64, i64, i32},\n\t\"fd\", \"atim\", \"mtim\", \"fst_flags\",\n)\n\nfunc fdFilestatSetTimesFn(_ context.Context, mod api.Module, params []uint64) experimentalsys.Errno {\n\tfd := int32(params[0])\n\tatim := int64(params[1])\n\tmtim := int64(params[2])\n\tfstFlags := uint16(params[3])\n\n\tsys := mod.(*wasm.ModuleInstance).Sys\n\tfsc := sys.FS()\n\n\tf, ok := fsc.LookupFile(fd)\n\tif !ok {\n\t\treturn experimentalsys.EBADF\n\t}\n\n\tatim, mtim, errno := toTimes(sys.WalltimeNanos, atim, mtim, fstFlags)\n\tif errno != 0 {\n\t\treturn errno\n\t}\n\n\t// Try to update the file timestamps by file-descriptor.\n\terrno = f.File.Utimens(atim, mtim)\n\n\t// Fall back to path based, despite it being less precise.\n\tswitch errno {\n\tcase experimentalsys.EPERM, experimentalsys.ENOSYS:\n\t\terrno = f.FS.Utimens(f.Name, atim, mtim)\n\t}\n\n\treturn errno\n}\n\nfunc toTimes(walltime func() int64, atim, mtim int64, fstFlags uint16) (int64, int64, experimentalsys.Errno) {\n\t// times[0] == atim, times[1] == mtim\n\n\tvar nowTim int64\n\n\t// coerce atim into a timespec\n\tif set, now := fstFlags&wasip1.FstflagsAtim != 0, fstFlags&wasip1.FstflagsAtimNow != 0; set && now {\n\t\treturn 0, 0, experimentalsys.EINVAL\n\t} else if set {\n\t\t// atim is already correct\n\t} else if now {\n\t\tnowTim = walltime()\n\t\tatim = nowTim\n\t} else {\n\t\tatim = experimentalsys.UTIME_OMIT\n\t}\n\n\t// coerce mtim into a timespec\n\tif set, now := fstFlags&wasip1.FstflagsMtim != 0, fstFlags&wasip1.FstflagsMtimNow != 0; set && now {\n\t\treturn 0, 0, experimentalsys.EINVAL\n\t} else if set {\n\t\t// mtim is already correct\n\t} else if now {\n\t\tif nowTim != 0 {\n\t\t\tmtim = nowTim\n\t\t} else {\n\t\t\tmtim = walltime()\n\t\t}\n\t} else {\n\t\tmtim = experimentalsys.UTIME_OMIT\n\t}\n\treturn atim, mtim, 0\n}\n\n// fdPread is the WASI function named FdPreadName which reads from a file\n// descriptor, without using and updating the file descriptor's offset.\n//\n// Except for handling offset, this implementation is identical to fdRead.\n//\n// See https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#-fd_preadfd-fd-iovs-iovec_array-offset-filesize---errno-size\nvar fdPread = newHostFunc(\n\twasip1.FdPreadName, fdPreadFn,\n\t[]api.ValueType{i32, i32, i32, i64, i32},\n\t\"fd\", \"iovs\", \"iovs_len\", \"offset\", \"result.nread\",\n)\n\nfunc fdPreadFn(_ context.Context, mod api.Module, params []uint64) experimentalsys.Errno {\n\treturn fdReadOrPread(mod, params, true)\n}\n\n// fdPrestatGet is the WASI function named FdPrestatGetName which returns\n// the prestat data of a file descriptor.\n//\n// # Parameters\n//\n//   - fd: file descriptor to get the prestat\n//   - resultPrestat: offset to write the result prestat data\n//\n// Result (Errno)\n//\n// The return value is 0 except the following error conditions:\n//   - sys.EBADF: `fd` is invalid or the `fd` is not a pre-opened directory\n//   - sys.EFAULT: `resultPrestat` points to an offset out of memory\n//\n// prestat byte layout is 8 bytes, beginning with an 8-bit tag and 3 pad bytes.\n// The only valid tag is `prestat_dir`, which is tag zero. This simplifies the\n// byte layout to 4 empty bytes followed by the uint32le encoded path length.\n//\n// For example, the directory name corresponding with `fd` was \"/tmp\" and\n// parameter resultPrestat=1, this function writes the below to api.Memory:\n//\n//\t                   padding   uint32le\n//\t        uint8 --+  +-----+  +--------+\n//\t                |  |     |  |        |\n//\t      []byte{?, 0, 0, 0, 0, 4, 0, 0, 0, ?}\n//\tresultPrestat --^           ^\n//\t          tag --+           |\n//\t                            +-- size in bytes of the string \"/tmp\"\n//\n// See fdPrestatDirName and\n// https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#prestat\nvar fdPrestatGet = newHostFunc(wasip1.FdPrestatGetName, fdPrestatGetFn, []api.ValueType{i32, i32}, \"fd\", \"result.prestat\")\n\nfunc fdPrestatGetFn(_ context.Context, mod api.Module, params []uint64) experimentalsys.Errno {\n\tfsc := mod.(*wasm.ModuleInstance).Sys.FS()\n\tfd, resultPrestat := int32(params[0]), uint32(params[1])\n\n\tname, errno := preopenPath(fsc, fd)\n\tif errno != 0 {\n\t\treturn errno\n\t}\n\n\t// Upper 32-bits are zero because...\n\t// * Zero-value 8-bit tag, and 3-byte zero-value padding\n\tprestat := uint64(len(name) << 32)\n\tif !mod.Memory().WriteUint64Le(resultPrestat, prestat) {\n\t\treturn experimentalsys.EFAULT\n\t}\n\treturn 0\n}\n\n// fdPrestatDirName is the WASI function named FdPrestatDirNameName which\n// returns the path of the pre-opened directory of a file descriptor.\n//\n// # Parameters\n//\n//   - fd: file descriptor to get the path of the pre-opened directory\n//   - path: offset in api.Memory to write the result path\n//   - pathLen: count of bytes to write to `path`\n//   - This should match the uint32le fdPrestatGet writes to offset\n//     `resultPrestat`+4\n//\n// Result (Errno)\n//\n// The return value is 0 except the following error conditions:\n//   - sys.EBADF: `fd` is invalid\n//   - sys.EFAULT: `path` points to an offset out of memory\n//   - sys.ENAMETOOLONG: `pathLen` is longer than the actual length of the result\n//\n// For example, the directory name corresponding with `fd` was \"/tmp\" and\n// # Parameters path=1 pathLen=4 (correct), this function will write the below to\n// api.Memory:\n//\n//\t               pathLen\n//\t           +--------------+\n//\t           |              |\n//\t[]byte{?, '/', 't', 'm', 'p', ?}\n//\t    path --^\n//\n// See fdPrestatGet\n// See https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#fd_prestat_dir_name\nvar fdPrestatDirName = newHostFunc(\n\twasip1.FdPrestatDirNameName, fdPrestatDirNameFn,\n\t[]api.ValueType{i32, i32, i32},\n\t\"fd\", \"result.path\", \"result.path_len\",\n)\n\nfunc fdPrestatDirNameFn(_ context.Context, mod api.Module, params []uint64) experimentalsys.Errno {\n\tfsc := mod.(*wasm.ModuleInstance).Sys.FS()\n\tfd, path, pathLen := int32(params[0]), uint32(params[1]), uint32(params[2])\n\n\tname, errno := preopenPath(fsc, fd)\n\tif errno != 0 {\n\t\treturn errno\n\t}\n\n\t// Some runtimes may have another semantics. See /RATIONALE.md\n\tif uint32(len(name)) < pathLen {\n\t\treturn experimentalsys.ENAMETOOLONG\n\t}\n\n\tif !mod.Memory().Write(path, []byte(name)[:pathLen]) {\n\t\treturn experimentalsys.EFAULT\n\t}\n\treturn 0\n}\n\n// fdPwrite is the WASI function named FdPwriteName which writes to a file\n// descriptor, without using and updating the file descriptor's offset.\n//\n// Except for handling offset, this implementation is identical to fdWrite.\n//\n// See https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#-fd_pwritefd-fd-iovs-ciovec_array-offset-filesize---errno-size\nvar fdPwrite = newHostFunc(\n\twasip1.FdPwriteName, fdPwriteFn,\n\t[]api.ValueType{i32, i32, i32, i64, i32},\n\t\"fd\", \"iovs\", \"iovs_len\", \"offset\", \"result.nwritten\",\n)\n\nfunc fdPwriteFn(_ context.Context, mod api.Module, params []uint64) experimentalsys.Errno {\n\treturn fdWriteOrPwrite(mod, params, true)\n}\n\n// fdRead is the WASI function named FdReadName which reads from a file\n// descriptor.\n//\n// # Parameters\n//\n//   - fd: an opened file descriptor to read data from\n//   - iovs: offset in api.Memory to read offset, size pairs representing where\n//     to write file data\n//   - Both offset and length are encoded as uint32le\n//   - iovsCount: count of memory offset, size pairs to read sequentially\n//     starting at iovs\n//   - resultNread: offset in api.Memory to write the number of bytes read\n//\n// Result (Errno)\n//\n// The return value is 0 except the following error conditions:\n//   - sys.EBADF: `fd` is invalid\n//   - sys.EFAULT: `iovs` or `resultNread` point to an offset out of memory\n//   - sys.EIO: a file system error\n//\n// For example, this function needs to first read `iovs` to determine where\n// to write contents. If parameters iovs=1 iovsCount=2, this function reads two\n// offset/length pairs from api.Memory:\n//\n//\t                  iovs[0]                  iovs[1]\n//\t          +---------------------+   +--------------------+\n//\t          | uint32le    uint32le|   |uint32le    uint32le|\n//\t          +---------+  +--------+   +--------+  +--------+\n//\t          |         |  |        |   |        |  |        |\n//\t[]byte{?, 18, 0, 0, 0, 4, 0, 0, 0, 23, 0, 0, 0, 2, 0, 0, 0, ?... }\n//\t   iovs --^            ^            ^           ^\n//\t          |            |            |           |\n//\t offset --+   length --+   offset --+  length --+\n//\n// If the contents of the `fd` parameter was \"wazero\" (6 bytes) and parameter\n// resultNread=26, this function writes the below to api.Memory:\n//\n//\t                    iovs[0].length        iovs[1].length\n//\t                   +--------------+       +----+       uint32le\n//\t                   |              |       |    |      +--------+\n//\t[]byte{ 0..16, ?, 'w', 'a', 'z', 'e', ?, 'r', 'o', ?, 6, 0, 0, 0 }\n//\t  iovs[0].offset --^                      ^           ^\n//\t                         iovs[1].offset --+           |\n//\t                                        resultNread --+\n//\n// Note: This is similar to `readv` in POSIX. https://linux.die.net/man/3/readv\n//\n// See fdWrite\n// and https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#fd_read\nvar fdRead = newHostFunc(\n\twasip1.FdReadName, fdReadFn,\n\t[]api.ValueType{i32, i32, i32, i32},\n\t\"fd\", \"iovs\", \"iovs_len\", \"result.nread\",\n)\n\n// preader tracks an offset across multiple reads.\ntype preader struct {\n\tf      experimentalsys.File\n\toffset int64\n}\n\n// Read implements the same function as documented on sys.File.\nfunc (w *preader) Read(buf []byte) (n int, errno experimentalsys.Errno) {\n\tif len(buf) == 0 {\n\t\treturn 0, 0 // less overhead on zero-length reads.\n\t}\n\n\tn, err := w.f.Pread(buf, w.offset)\n\tw.offset += int64(n)\n\treturn n, err\n}\n\nfunc fdReadFn(_ context.Context, mod api.Module, params []uint64) experimentalsys.Errno {\n\treturn fdReadOrPread(mod, params, false)\n}\n\nfunc fdReadOrPread(mod api.Module, params []uint64, isPread bool) experimentalsys.Errno {\n\tmem := mod.Memory()\n\tfsc := mod.(*wasm.ModuleInstance).Sys.FS()\n\n\tfd := int32(params[0])\n\tiovs := uint32(params[1])\n\tiovsCount := uint32(params[2])\n\n\tvar resultNread uint32\n\tvar reader func(buf []byte) (n int, errno experimentalsys.Errno)\n\tif f, ok := fsc.LookupFile(fd); !ok {\n\t\treturn experimentalsys.EBADF\n\t} else if isPread {\n\t\toffset := int64(params[3])\n\t\treader = (&preader{f: f.File, offset: offset}).Read\n\t\tresultNread = uint32(params[4])\n\t} else {\n\t\treader = f.File.Read\n\t\tresultNread = uint32(params[3])\n\t}\n\n\tnread, errno := readv(mem, iovs, iovsCount, reader)\n\tif errno != 0 {\n\t\treturn errno\n\t}\n\tif !mem.WriteUint32Le(resultNread, nread) {\n\t\treturn experimentalsys.EFAULT\n\t} else {\n\t\treturn 0\n\t}\n}\n\nfunc readv(mem api.Memory, iovs uint32, iovsCount uint32, reader func(buf []byte) (nread int, errno experimentalsys.Errno)) (uint32, experimentalsys.Errno) {\n\tvar nread uint32\n\tiovsStop := iovsCount << 3 // iovsCount * 8\n\tiovsBuf, ok := mem.Read(iovs, iovsStop)\n\tif !ok {\n\t\treturn 0, experimentalsys.EFAULT\n\t}\n\n\tfor iovsPos := uint32(0); iovsPos < iovsStop; iovsPos += 8 {\n\t\toffset := le.Uint32(iovsBuf[iovsPos:])\n\t\tl := le.Uint32(iovsBuf[iovsPos+4:])\n\n\t\tif l == 0 { // A zero length iovec could be ahead of another.\n\t\t\tcontinue\n\t\t}\n\n\t\tb, ok := mem.Read(offset, l)\n\t\tif !ok {\n\t\t\treturn 0, experimentalsys.EFAULT\n\t\t}\n\n\t\tn, errno := reader(b)\n\t\tnread += uint32(n)\n\n\t\tif errno == experimentalsys.ENOSYS {\n\t\t\treturn 0, experimentalsys.EBADF // e.g. unimplemented for read\n\t\t} else if errno != 0 {\n\t\t\treturn 0, errno\n\t\t} else if n < int(l) {\n\t\t\tbreak // stop when we read less than capacity.\n\t\t}\n\t}\n\treturn nread, 0\n}\n\n// fdReaddir is the WASI function named wasip1.FdReaddirName which reads\n// directory entries from a directory.  Special behaviors required by this\n// function are implemented in sys.DirentCache.\n//\n// See https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#-fd_readdirfd-fd-buf-pointeru8-buf_len-size-cookie-dircookie---errno-size\n//\n// # Result (Errno)\n//\n// The return value is 0 except the following known error conditions:\n//   - sys.ENOSYS: the implementation does not support this function.\n//   - sys.EBADF: the file was closed or not a directory.\n//   - sys.EFAULT: `buf` or `buf_len` point to an offset out of memory.\n//   - sys.ENOENT: `cookie` was invalid.\n//   - sys.EINVAL: `buf_len` was not large enough to write a dirent header.\n//\n// # End of Directory (EOF)\n//\n// More entries are available when `result.bufused` == `buf_len`. See\n// https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#fd_readdir\n// https://github.com/WebAssembly/wasi-libc/blob/659ff414560721b1660a19685110e484a081c3d4/libc-bottom-half/cloudlibc/src/libc/dirent/readdir.c#L44\nvar fdReaddir = newHostFunc(\n\twasip1.FdReaddirName, fdReaddirFn,\n\t[]wasm.ValueType{i32, i32, i32, i64, i32},\n\t\"fd\", \"buf\", \"buf_len\", \"cookie\", \"result.bufused\",\n)\n\nfunc fdReaddirFn(_ context.Context, mod api.Module, params []uint64) experimentalsys.Errno {\n\tmem := mod.Memory()\n\tfsc := mod.(*wasm.ModuleInstance).Sys.FS()\n\n\tfd := int32(params[0])\n\tbuf := uint32(params[1])\n\tbufLen := uint32(params[2])\n\tcookie := params[3]\n\tresultBufused := uint32(params[4])\n\n\t// The bufLen must be enough to write a dirent header.\n\tif bufLen < wasip1.DirentSize {\n\t\t// This is a bug in the caller, as unless `buf_len` is large enough to\n\t\t// write a dirent, it can't read the `d_namlen` from it.\n\t\treturn experimentalsys.EINVAL\n\t}\n\n\t// Get or open a dirent cache for this file descriptor.\n\tdir, errno := direntCache(fsc, fd)\n\tif errno != 0 {\n\t\treturn errno\n\t}\n\n\t// First, determine the maximum directory entries that can be encoded as\n\t// dirents. The total size is DirentSize(24) + nameSize, for each file.\n\t// Since a zero-length file name is invalid, the minimum size entry is\n\t// 25 (DirentSize + 1 character).\n\tmaxDirEntries := bufLen/wasip1.DirentSize + 1\n\n\t// While unlikely maxDirEntries will fit into bufLen, add one more just in\n\t// case, as we need to know if we hit the end of the directory or not to\n\t// write the correct bufused (e.g. == bufLen unless EOF).\n\t//\t>> If less than the size of the read buffer, the end of the\n\t//\t>> directory has been reached.\n\tmaxDirEntries += 1\n\n\t// Read up to max entries. The underlying implementation will cache these,\n\t// starting at the current location, so that they can be re-read. This is\n\t// important because even the first could end up larger than bufLen due to\n\t// the size of its name.\n\tdirents, errno := dir.Read(cookie, maxDirEntries)\n\tif errno != 0 {\n\t\treturn errno\n\t}\n\n\t// Determine how many dirents we can write, including a potentially\n\t// truncated last entry.\n\tbufToWrite, direntCount, truncatedLen := maxDirents(dirents, bufLen)\n\n\t// Now, write entries to the underlying buffer.\n\tif bufToWrite > 0 {\n\n\t\t// d_next is the index of the next file in the list, so it should\n\t\t// always be one higher than the requested cookie.\n\t\td_next := cookie + 1\n\t\t// ^^ yes this can overflow to negative, which means our implementation\n\t\t// doesn't support writing greater than max int64 entries.\n\n\t\tbuf, ok := mem.Read(buf, bufToWrite)\n\t\tif !ok {\n\t\t\treturn experimentalsys.EFAULT\n\t\t}\n\n\t\twriteDirents(buf, dirents, d_next, direntCount, truncatedLen)\n\t}\n\n\t// bufused == bufLen means more dirents exist, which is the case when one\n\t// is truncated.\n\tbufused := bufToWrite\n\tif truncatedLen > 0 {\n\t\tbufused = bufLen\n\t}\n\n\tif !mem.WriteUint32Le(resultBufused, bufused) {\n\t\treturn experimentalsys.EFAULT\n\t}\n\treturn 0\n}\n\nconst largestDirent = int64(math.MaxUint32 - wasip1.DirentSize)\n\n// maxDirents returns the dirents to write.\n//\n// `bufToWrite` is the amount of memory needed to write direntCount, which\n// includes up to wasip1.DirentSize of a last truncated entry.\nfunc maxDirents(dirents []experimentalsys.Dirent, bufLen uint32) (bufToWrite uint32, direntCount int, truncatedLen uint32) {\n\tlenRemaining := bufLen\n\tfor i := range dirents {\n\t\tif lenRemaining == 0 {\n\t\t\tbreak\n\t\t}\n\t\td := dirents[i]\n\t\tdirentCount++\n\n\t\t// use int64 to guard against huge filenames\n\t\tnameLen := int64(len(d.Name))\n\t\tvar entryLen uint32\n\n\t\t// Check to see if DirentSize + nameLen overflows, or if it would be\n\t\t// larger than possible to encode.\n\t\tif el := int64(wasip1.DirentSize) + nameLen; el < 0 || el > largestDirent {\n\t\t\t// panic, as testing is difficult. ex we would have to extract a\n\t\t\t// function to get size of a string or allocate a 2^32 size one!\n\t\t\tpanic(\"invalid filename: too large\")\n\t\t} else { // we know this can fit into a uint32\n\t\t\tentryLen = uint32(el)\n\t\t}\n\n\t\tif entryLen > lenRemaining {\n\t\t\t// We haven't room to write the entry, and docs say to write the\n\t\t\t// header. This helps especially when there is an entry with a very\n\t\t\t// long filename. Ex if bufLen is 4096 and the filename is 4096,\n\t\t\t// we need to write DirentSize(24) + 4096 bytes to write the entry.\n\t\t\t// In this case, we only write up to DirentSize(24) to allow the\n\t\t\t// caller to resize.\n\t\t\tif lenRemaining >= wasip1.DirentSize {\n\t\t\t\ttruncatedLen = wasip1.DirentSize\n\t\t\t} else {\n\t\t\t\ttruncatedLen = lenRemaining\n\t\t\t}\n\t\t\tbufToWrite += truncatedLen\n\t\t\tbreak\n\t\t}\n\n\t\t// This won't go negative because we checked entryLen <= lenRemaining.\n\t\tlenRemaining -= entryLen\n\t\tbufToWrite += entryLen\n\t}\n\treturn\n}\n\n// writeDirents writes the directory entries to the buffer, which is pre-sized\n// based on maxDirents.\ttruncatedEntryLen means the last is written without its\n// name.\nfunc writeDirents(buf []byte, dirents []experimentalsys.Dirent, d_next uint64, direntCount int, truncatedLen uint32) {\n\tpos := uint32(0)\n\tskipNameI := -1\n\n\t// If the last entry was truncated, we either skip it or write it without\n\t// its name, depending on the length.\n\tif truncatedLen > 0 {\n\t\tif truncatedLen < wasip1.DirentSize {\n\t\t\tdirentCount-- // skip as too small to write the header.\n\t\t} else {\n\t\t\tskipNameI = direntCount - 1 // write the header, but not the name.\n\t\t}\n\t}\n\n\tfor i := 0; i < direntCount; i++ {\n\t\te := dirents[i]\n\t\tnameLen := uint32(len(e.Name))\n\t\twriteDirent(buf[pos:], d_next, e.Ino, nameLen, e.Type)\n\t\td_next++\n\t\tpos += wasip1.DirentSize\n\n\t\tif i != skipNameI {\n\t\t\tcopy(buf[pos:], e.Name)\n\t\t\tpos += nameLen\n\t\t}\n\t}\n}\n\n// writeDirent writes DirentSize bytes\nfunc writeDirent(buf []byte, dNext uint64, ino sysapi.Inode, dNamlen uint32, dType fs.FileMode) {\n\tle.PutUint64(buf, dNext)        // d_next\n\tle.PutUint64(buf[8:], ino)      // d_ino\n\tle.PutUint32(buf[16:], dNamlen) // d_namlen\n\tfiletype := getWasiFiletype(dType)\n\tle.PutUint32(buf[20:], uint32(filetype)) //  d_type\n}\n\n// direntCache lazy opens a sys.DirentCache for this directory or returns an\n// error.\nfunc direntCache(fsc *sys.FSContext, fd int32) (*sys.DirentCache, experimentalsys.Errno) {\n\tif f, ok := fsc.LookupFile(fd); !ok {\n\t\treturn nil, experimentalsys.EBADF\n\t} else if dir, errno := f.DirentCache(); errno == 0 {\n\t\treturn dir, 0\n\t} else if errno == experimentalsys.ENOTDIR {\n\t\t// fd_readdir docs don't indicate whether to return sys.ENOTDIR or\n\t\t// sys.EBADF. It has been noticed that rust will crash on sys.ENOTDIR,\n\t\t// and POSIX C ref seems to not return this, so we don't either.\n\t\t//\n\t\t// See https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#fd_readdir\n\t\t// and https://en.wikibooks.org/wiki/C_Programming/POSIX_Reference/dirent.h\n\t\treturn nil, experimentalsys.EBADF\n\t} else {\n\t\treturn nil, errno\n\t}\n}\n\n// fdRenumber is the WASI function named FdRenumberName which atomically\n// replaces a file descriptor by renumbering another file descriptor.\n//\n// See https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#-fd_renumberfd-fd-to-fd---errno\nvar fdRenumber = newHostFunc(wasip1.FdRenumberName, fdRenumberFn, []wasm.ValueType{i32, i32}, \"fd\", \"to\")\n\nfunc fdRenumberFn(_ context.Context, mod api.Module, params []uint64) experimentalsys.Errno {\n\tfsc := mod.(*wasm.ModuleInstance).Sys.FS()\n\n\tfrom := int32(params[0])\n\tto := int32(params[1])\n\n\tif errno := fsc.Renumber(from, to); errno != 0 {\n\t\treturn errno\n\t}\n\treturn 0\n}\n\n// fdSeek is the WASI function named FdSeekName which moves the offset of a\n// file descriptor.\n//\n// # Parameters\n//\n//   - fd: file descriptor to move the offset of\n//   - offset: signed int64, which is encoded as uint64, input argument to\n//     `whence`, which results in a new offset\n//   - whence: operator that creates the new offset, given `offset` bytes\n//   - If io.SeekStart, new offset == `offset`.\n//   - If io.SeekCurrent, new offset == existing offset + `offset`.\n//   - If io.SeekEnd, new offset == file size of `fd` + `offset`.\n//   - resultNewoffset: offset in api.Memory to write the new offset to,\n//     relative to start of the file\n//\n// Result (Errno)\n//\n// The return value is 0 except the following error conditions:\n//   - sys.EBADF: `fd` is invalid\n//   - sys.EFAULT: `resultNewoffset` points to an offset out of memory\n//   - sys.EINVAL: `whence` is an invalid value\n//   - sys.EIO: a file system error\n//   - sys.EISDIR: the file was a directory.\n//\n// For example, if fd 3 is a file with offset 0, and parameters fd=3, offset=4,\n// whence=0 (=io.SeekStart), resultNewOffset=1, this function writes the below\n// to api.Memory:\n//\n//\t                         uint64le\n//\t                  +--------------------+\n//\t                  |                    |\n//\t        []byte{?, 4, 0, 0, 0, 0, 0, 0, 0, ? }\n//\tresultNewoffset --^\n//\n// Note: This is similar to `lseek` in POSIX. https://linux.die.net/man/3/lseek\n//\n// See io.Seeker\n// and https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#fd_seek\nvar fdSeek = newHostFunc(\n\twasip1.FdSeekName, fdSeekFn,\n\t[]api.ValueType{i32, i64, i32, i32},\n\t\"fd\", \"offset\", \"whence\", \"result.newoffset\",\n)\n\nfunc fdSeekFn(_ context.Context, mod api.Module, params []uint64) experimentalsys.Errno {\n\tfsc := mod.(*wasm.ModuleInstance).Sys.FS()\n\tfd := int32(params[0])\n\toffset := params[1]\n\twhence := uint32(params[2])\n\tresultNewoffset := uint32(params[3])\n\n\tif f, ok := fsc.LookupFile(fd); !ok {\n\t\treturn experimentalsys.EBADF\n\t} else if isDir, _ := f.File.IsDir(); isDir {\n\t\treturn experimentalsys.EISDIR // POSIX doesn't forbid seeking a directory, but wasi-testsuite does.\n\t} else if newOffset, errno := f.File.Seek(int64(offset), int(whence)); errno != 0 {\n\t\treturn errno\n\t} else if !mod.Memory().WriteUint64Le(resultNewoffset, uint64(newOffset)) {\n\t\treturn experimentalsys.EFAULT\n\t}\n\treturn 0\n}\n\n// fdSync is the WASI function named FdSyncName which synchronizes the data\n// and metadata of a file to disk.\n//\n// See https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#-fd_syncfd-fd---errno\nvar fdSync = newHostFunc(wasip1.FdSyncName, fdSyncFn, []api.ValueType{i32}, \"fd\")\n\nfunc fdSyncFn(_ context.Context, mod api.Module, params []uint64) experimentalsys.Errno {\n\tfsc := mod.(*wasm.ModuleInstance).Sys.FS()\n\tfd := int32(params[0])\n\n\t// Check to see if the file descriptor is available\n\tif f, ok := fsc.LookupFile(fd); !ok {\n\t\treturn experimentalsys.EBADF\n\t} else {\n\t\treturn f.File.Sync()\n\t}\n}\n\n// fdTell is the WASI function named FdTellName which returns the current\n// offset of a file descriptor.\n//\n// See https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#-fd_tellfd-fd---errno-filesize\nvar fdTell = newHostFunc(wasip1.FdTellName, fdTellFn, []api.ValueType{i32, i32}, \"fd\", \"result.offset\")\n\nfunc fdTellFn(ctx context.Context, mod api.Module, params []uint64) experimentalsys.Errno {\n\tfd := params[0]\n\toffset := uint64(0)\n\twhence := uint64(io.SeekCurrent)\n\tresultNewoffset := params[1]\n\n\tfdSeekParams := []uint64{fd, offset, whence, resultNewoffset}\n\treturn fdSeekFn(ctx, mod, fdSeekParams)\n}\n\n// fdWrite is the WASI function named FdWriteName which writes to a file\n// descriptor.\n//\n// # Parameters\n//\n//   - fd: an opened file descriptor to write data to\n//   - iovs: offset in api.Memory to read offset, size pairs representing the\n//     data to write to `fd`\n//   - Both offset and length are encoded as uint32le.\n//   - iovsCount: count of memory offset, size pairs to read sequentially\n//     starting at iovs\n//   - resultNwritten: offset in api.Memory to write the number of bytes\n//     written\n//\n// Result (Errno)\n//\n// The return value is 0 except the following error conditions:\n//   - sys.EBADF: `fd` is invalid\n//   - sys.EFAULT: `iovs` or `resultNwritten` point to an offset out of memory\n//   - sys.EIO: a file system error\n//\n// For example, this function needs to first read `iovs` to determine what to\n// write to `fd`. If parameters iovs=1 iovsCount=2, this function reads two\n// offset/length pairs from api.Memory:\n//\n//\t                  iovs[0]                  iovs[1]\n//\t          +---------------------+   +--------------------+\n//\t          | uint32le    uint32le|   |uint32le    uint32le|\n//\t          +---------+  +--------+   +--------+  +--------+\n//\t          |         |  |        |   |        |  |        |\n//\t[]byte{?, 18, 0, 0, 0, 4, 0, 0, 0, 23, 0, 0, 0, 2, 0, 0, 0, ?... }\n//\t   iovs --^            ^            ^           ^\n//\t          |            |            |           |\n//\t offset --+   length --+   offset --+  length --+\n//\n// This function reads those chunks api.Memory into the `fd` sequentially.\n//\n//\t                    iovs[0].length        iovs[1].length\n//\t                   +--------------+       +----+\n//\t                   |              |       |    |\n//\t[]byte{ 0..16, ?, 'w', 'a', 'z', 'e', ?, 'r', 'o', ? }\n//\t  iovs[0].offset --^                      ^\n//\t                         iovs[1].offset --+\n//\n// Since \"wazero\" was written, if parameter resultNwritten=26, this function\n// writes the below to api.Memory:\n//\n//\t                   uint32le\n//\t                  +--------+\n//\t                  |        |\n//\t[]byte{ 0..24, ?, 6, 0, 0, 0', ? }\n//\t resultNwritten --^\n//\n// Note: This is similar to `writev` in POSIX. https://linux.die.net/man/3/writev\n//\n// See fdRead\n// https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#ciovec\n// and https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#fd_write\nvar fdWrite = newHostFunc(\n\twasip1.FdWriteName, fdWriteFn,\n\t[]api.ValueType{i32, i32, i32, i32},\n\t\"fd\", \"iovs\", \"iovs_len\", \"result.nwritten\",\n)\n\nfunc fdWriteFn(_ context.Context, mod api.Module, params []uint64) experimentalsys.Errno {\n\treturn fdWriteOrPwrite(mod, params, false)\n}\n\n// pwriter tracks an offset across multiple writes.\ntype pwriter struct {\n\tf      experimentalsys.File\n\toffset int64\n}\n\n// Write implements the same function as documented on sys.File.\nfunc (w *pwriter) Write(buf []byte) (n int, errno experimentalsys.Errno) {\n\tif len(buf) == 0 {\n\t\treturn 0, 0 // less overhead on zero-length writes.\n\t}\n\n\tn, err := w.f.Pwrite(buf, w.offset)\n\tw.offset += int64(n)\n\treturn n, err\n}\n\nfunc fdWriteOrPwrite(mod api.Module, params []uint64, isPwrite bool) experimentalsys.Errno {\n\tmem := mod.Memory()\n\tfsc := mod.(*wasm.ModuleInstance).Sys.FS()\n\n\tfd := int32(params[0])\n\tiovs := uint32(params[1])\n\tiovsCount := uint32(params[2])\n\n\tvar resultNwritten uint32\n\tvar writer func(buf []byte) (n int, errno experimentalsys.Errno)\n\tif f, ok := fsc.LookupFile(fd); !ok {\n\t\treturn experimentalsys.EBADF\n\t} else if isPwrite {\n\t\toffset := int64(params[3])\n\t\twriter = (&pwriter{f: f.File, offset: offset}).Write\n\t\tresultNwritten = uint32(params[4])\n\t} else {\n\t\twriter = f.File.Write\n\t\tresultNwritten = uint32(params[3])\n\t}\n\n\tnwritten, errno := writev(mem, iovs, iovsCount, writer)\n\tif errno != 0 {\n\t\treturn errno\n\t}\n\n\tif !mod.Memory().WriteUint32Le(resultNwritten, nwritten) {\n\t\treturn experimentalsys.EFAULT\n\t}\n\treturn 0\n}\n\nfunc writev(mem api.Memory, iovs uint32, iovsCount uint32, writer func(buf []byte) (n int, errno experimentalsys.Errno)) (uint32, experimentalsys.Errno) {\n\tvar nwritten uint32\n\tiovsStop := iovsCount << 3 // iovsCount * 8\n\tiovsBuf, ok := mem.Read(iovs, iovsStop)\n\tif !ok {\n\t\treturn 0, experimentalsys.EFAULT\n\t}\n\n\tfor iovsPos := uint32(0); iovsPos < iovsStop; iovsPos += 8 {\n\t\toffset := le.Uint32(iovsBuf[iovsPos:])\n\t\tl := le.Uint32(iovsBuf[iovsPos+4:])\n\n\t\tb, ok := mem.Read(offset, l)\n\t\tif !ok {\n\t\t\treturn 0, experimentalsys.EFAULT\n\t\t}\n\t\tn, errno := writer(b)\n\t\tnwritten += uint32(n)\n\t\tif errno == experimentalsys.ENOSYS {\n\t\t\treturn 0, experimentalsys.EBADF // e.g. unimplemented for write\n\t\t} else if errno != 0 {\n\t\t\treturn 0, errno\n\t\t}\n\t}\n\treturn nwritten, 0\n}\n\n// pathCreateDirectory is the WASI function named PathCreateDirectoryName which\n// creates a directory.\n//\n// # Parameters\n//\n//   - fd: file descriptor of a directory that `path` is relative to\n//   - path: offset in api.Memory to read the path string from\n//   - pathLen: length of `path`\n//\n// # Result (Errno)\n//\n// The return value is 0 except the following error conditions:\n//   - sys.EBADF: `fd` is invalid\n//   - sys.ENOENT: `path` does not exist.\n//   - sys.ENOTDIR: `path` is a file\n//\n// # Notes\n//   - This is similar to mkdirat in POSIX.\n//     See https://linux.die.net/man/2/mkdirat\n//\n// See https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#-path_create_directoryfd-fd-path-string---errno\nvar pathCreateDirectory = newHostFunc(\n\twasip1.PathCreateDirectoryName, pathCreateDirectoryFn,\n\t[]wasm.ValueType{i32, i32, i32},\n\t\"fd\", \"path\", \"path_len\",\n)\n\nfunc pathCreateDirectoryFn(_ context.Context, mod api.Module, params []uint64) experimentalsys.Errno {\n\tfsc := mod.(*wasm.ModuleInstance).Sys.FS()\n\n\tfd := int32(params[0])\n\tpath := uint32(params[1])\n\tpathLen := uint32(params[2])\n\n\tpreopen, pathName, errno := atPath(fsc, mod.Memory(), fd, path, pathLen)\n\tif errno != 0 {\n\t\treturn errno\n\t}\n\n\tif errno = preopen.Mkdir(pathName, 0o700); errno != 0 {\n\t\treturn errno\n\t}\n\n\treturn 0\n}\n\n// pathFilestatGet is the WASI function named PathFilestatGetName which\n// returns the stat attributes of a file or directory.\n//\n// # Parameters\n//\n//   - fd: file descriptor of the folder to look in for the path\n//   - flags: flags determining the method of how paths are resolved\n//   - path: path under fd to get the filestat attributes data for\n//   - path_len: length of the path that was given\n//   - resultFilestat: offset to write the result filestat data\n//\n// Result (Errno)\n//\n// The return value is 0 except the following error conditions:\n//   - sys.EBADF: `fd` is invalid\n//   - sys.ENOTDIR: `fd` points to a file not a directory\n//   - sys.EIO: could not stat `fd` on filesystem\n//   - sys.EINVAL: the path contained \"../\"\n//   - sys.ENAMETOOLONG: `path` + `path_len` is out of memory\n//   - sys.EFAULT: `resultFilestat` points to an offset out of memory\n//   - sys.ENOENT: could not find the path\n//\n// The rest of this implementation matches that of fdFilestatGet, so is not\n// repeated here.\n//\n// Note: This is similar to `fstatat` in POSIX.\n// See https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#-path_filestat_getfd-fd-flags-lookupflags-path-string---errno-filestat\n// and https://linux.die.net/man/2/fstatat\nvar pathFilestatGet = newHostFunc(\n\twasip1.PathFilestatGetName, pathFilestatGetFn,\n\t[]api.ValueType{i32, i32, i32, i32, i32},\n\t\"fd\", \"flags\", \"path\", \"path_len\", \"result.filestat\",\n)\n\nfunc pathFilestatGetFn(_ context.Context, mod api.Module, params []uint64) experimentalsys.Errno {\n\tfsc := mod.(*wasm.ModuleInstance).Sys.FS()\n\n\tfd := int32(params[0])\n\tflags := uint16(params[1])\n\tpath := uint32(params[2])\n\tpathLen := uint32(params[3])\n\n\tpreopen, pathName, errno := atPath(fsc, mod.Memory(), fd, path, pathLen)\n\tif errno != 0 {\n\t\treturn errno\n\t}\n\n\t// Stat the file without allocating a file descriptor.\n\tvar st sysapi.Stat_t\n\n\tif (flags & wasip1.LOOKUP_SYMLINK_FOLLOW) == 0 {\n\t\tst, errno = preopen.Lstat(pathName)\n\t} else {\n\t\tst, errno = preopen.Stat(pathName)\n\t}\n\tif errno != 0 {\n\t\treturn errno\n\t}\n\n\t// Write the stat result to memory\n\tresultBuf := uint32(params[4])\n\tbuf, ok := mod.Memory().Read(resultBuf, 64)\n\tif !ok {\n\t\treturn experimentalsys.EFAULT\n\t}\n\n\tfiletype := getWasiFiletype(st.Mode)\n\treturn writeFilestat(buf, &st, filetype)\n}\n\n// pathFilestatSetTimes is the WASI function named PathFilestatSetTimesName\n// which adjusts the timestamps of a file or directory.\n//\n// See https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#-path_filestat_set_timesfd-fd-flags-lookupflags-path-string-atim-timestamp-mtim-timestamp-fst_flags-fstflags---errno\nvar pathFilestatSetTimes = newHostFunc(\n\twasip1.PathFilestatSetTimesName, pathFilestatSetTimesFn,\n\t[]wasm.ValueType{i32, i32, i32, i32, i64, i64, i32},\n\t\"fd\", \"flags\", \"path\", \"path_len\", \"atim\", \"mtim\", \"fst_flags\",\n)\n\nfunc pathFilestatSetTimesFn(_ context.Context, mod api.Module, params []uint64) experimentalsys.Errno {\n\tfd := int32(params[0])\n\tflags := uint16(params[1])\n\tpath := uint32(params[2])\n\tpathLen := uint32(params[3])\n\tatim := int64(params[4])\n\tmtim := int64(params[5])\n\tfstFlags := uint16(params[6])\n\n\tsys := mod.(*wasm.ModuleInstance).Sys\n\tfsc := sys.FS()\n\n\tatim, mtim, errno := toTimes(sys.WalltimeNanos, atim, mtim, fstFlags)\n\tif errno != 0 {\n\t\treturn errno\n\t}\n\n\tpreopen, pathName, errno := atPath(fsc, mod.Memory(), fd, path, pathLen)\n\tif errno != 0 {\n\t\treturn errno\n\t}\n\n\tsymlinkFollow := flags&wasip1.LOOKUP_SYMLINK_FOLLOW != 0\n\tif symlinkFollow {\n\t\treturn preopen.Utimens(pathName, atim, mtim)\n\t}\n\t// Otherwise, we need to emulate don't follow by opening the file by path.\n\tif f, errno := preopen.OpenFile(pathName, experimentalsys.O_WRONLY, 0); errno != 0 {\n\t\treturn errno\n\t} else {\n\t\tdefer f.Close()\n\t\treturn f.Utimens(atim, mtim)\n\t}\n}\n\n// pathLink is the WASI function named PathLinkName which adjusts the\n// timestamps of a file or directory.\n//\n// See https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#path_link\nvar pathLink = newHostFunc(\n\twasip1.PathLinkName, pathLinkFn,\n\t[]wasm.ValueType{i32, i32, i32, i32, i32, i32, i32},\n\t\"old_fd\", \"old_flags\", \"old_path\", \"old_path_len\", \"new_fd\", \"new_path\", \"new_path_len\",\n)\n\nfunc pathLinkFn(_ context.Context, mod api.Module, params []uint64) experimentalsys.Errno {\n\tmem := mod.Memory()\n\tfsc := mod.(*wasm.ModuleInstance).Sys.FS()\n\n\toldFD := int32(params[0])\n\t// TODO: use old_flags?\n\t_ = uint32(params[1])\n\toldPath := uint32(params[2])\n\toldPathLen := uint32(params[3])\n\n\toldFS, oldName, errno := atPath(fsc, mem, oldFD, oldPath, oldPathLen)\n\tif errno != 0 {\n\t\treturn errno\n\t}\n\n\tnewFD := int32(params[4])\n\tnewPath := uint32(params[5])\n\tnewPathLen := uint32(params[6])\n\n\tnewFS, newName, errno := atPath(fsc, mem, newFD, newPath, newPathLen)\n\tif errno != 0 {\n\t\treturn errno\n\t}\n\n\tif oldFS != newFS { // TODO: handle link across filesystems\n\t\treturn experimentalsys.ENOSYS\n\t}\n\n\treturn oldFS.Link(oldName, newName)\n}\n\n// pathOpen is the WASI function named PathOpenName which opens a file or\n// directory. This returns sys.EBADF if the fd is invalid.\n//\n// # Parameters\n//\n//   - fd: file descriptor of a directory that `path` is relative to\n//   - dirflags: flags to indicate how to resolve `path`\n//   - path: offset in api.Memory to read the path string from\n//   - pathLen: length of `path`\n//   - oFlags: open flags to indicate the method by which to open the file\n//   - fsRightsBase: interpret RIGHT_FD_WRITE to set O_RDWR\n//   - fsRightsInheriting: ignored as rights were removed from WASI.\n//     created file descriptor for `path`\n//   - fdFlags: file descriptor flags\n//   - resultOpenedFD: offset in api.Memory to write the newly created file\n//     descriptor to.\n//   - The result FD value is guaranteed to be less than 2**31\n//\n// Result (Errno)\n//\n// The return value is 0 except the following error conditions:\n//   - sys.EBADF: `fd` is invalid\n//   - sys.EFAULT: `resultOpenedFD` points to an offset out of memory\n//   - sys.ENOENT: `path` does not exist.\n//   - sys.EEXIST: `path` exists, while `oFlags` requires that it must not.\n//   - sys.ENOTDIR: `path` is not a directory, while `oFlags` requires it.\n//   - sys.EIO: a file system error\n//\n// For example, this function needs to first read `path` to determine the file\n// to open. If parameters `path` = 1, `pathLen` = 6, and the path is \"wazero\",\n// pathOpen reads the path from api.Memory:\n//\n//\t                pathLen\n//\t            +------------------------+\n//\t            |                        |\n//\t[]byte{ ?, 'w', 'a', 'z', 'e', 'r', 'o', ?... }\n//\t     path --^\n//\n// Then, if parameters resultOpenedFD = 8, and this function opened a new file\n// descriptor 5 with the given flags, this function writes the below to\n// api.Memory:\n//\n//\t                  uint32le\n//\t                 +--------+\n//\t                 |        |\n//\t[]byte{ 0..6, ?, 5, 0, 0, 0, ?}\n//\tresultOpenedFD --^\n//\n// # Notes\n//   - This is similar to `openat` in POSIX. https://linux.die.net/man/3/openat\n//   - The returned file descriptor is not guaranteed to be the lowest-number\n//\n// See https://github.com/WebAssembly/WASI/blob/main/phases/snapshot/docs.md#path_open\nvar pathOpen = newHostFunc(\n\twasip1.PathOpenName, pathOpenFn,\n\t[]api.ValueType{i32, i32, i32, i32, i32, i64, i64, i32, i32},\n\t\"fd\", \"dirflags\", \"path\", \"path_len\", \"oflags\", \"fs_rights_base\", \"fs_rights_inheriting\", \"fdflags\", \"result.opened_fd\",\n)\n\nfunc pathOpenFn(_ context.Context, mod api.Module, params []uint64) experimentalsys.Errno {\n\tfsc := mod.(*wasm.ModuleInstance).Sys.FS()\n\n\tpreopenFD := int32(params[0])\n\n\t// TODO: dirflags is a lookupflags, and it only has one bit: symlink_follow\n\t// https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#lookupflags\n\tdirflags := uint16(params[1])\n\n\tpath := uint32(params[2])\n\tpathLen := uint32(params[3])\n\n\toflags := uint16(params[4])\n\n\trights := uint32(params[5])\n\t// inherited rights aren't used\n\t_ = params[6]\n\n\tfdflags := uint16(params[7])\n\tresultOpenedFD := uint32(params[8])\n\n\tpreopen, pathName, errno := atPath(fsc, mod.Memory(), preopenFD, path, pathLen)\n\tif errno != 0 {\n\t\treturn errno\n\t}\n\n\tif pathLen == 0 {\n\t\treturn experimentalsys.EINVAL\n\t}\n\n\tfileOpenFlags := openFlags(dirflags, oflags, fdflags, rights)\n\tisDir := fileOpenFlags&experimentalsys.O_DIRECTORY != 0\n\n\tif isDir && oflags&wasip1.O_CREAT != 0 {\n\t\treturn experimentalsys.EINVAL // use pathCreateDirectory!\n\t}\n\n\tnewFD, errno := fsc.OpenFile(preopen, pathName, fileOpenFlags, 0o600)\n\tif errno != 0 {\n\t\treturn errno\n\t}\n\n\t// Check any flags that require the file to evaluate.\n\tif isDir {\n\t\tif f, ok := fsc.LookupFile(newFD); !ok {\n\t\t\treturn experimentalsys.EBADF // unexpected\n\t\t} else if isDir, errno := f.File.IsDir(); errno != 0 {\n\t\t\t_ = fsc.CloseFile(newFD)\n\t\t\treturn errno\n\t\t} else if !isDir {\n\t\t\t_ = fsc.CloseFile(newFD)\n\t\t\treturn experimentalsys.ENOTDIR\n\t\t}\n\t}\n\n\tif !mod.Memory().WriteUint32Le(resultOpenedFD, uint32(newFD)) {\n\t\t_ = fsc.CloseFile(newFD)\n\t\treturn experimentalsys.EFAULT\n\t}\n\treturn 0\n}\n\n// atPath returns the pre-open specific path after verifying it is a directory.\n//\n// # Notes\n//\n// Languages including Zig and Rust use only pre-opens for the FD because\n// wasi-libc `__wasilibc_find_relpath` will only return a preopen. That said,\n// our wasi.c example shows other languages act differently and can use a non\n// pre-opened file descriptor.\n//\n// We don't handle `AT_FDCWD`, as that's resolved in the compiler. There's no\n// working directory function in WASI, so most assume CWD is \"/\". Notably, Zig\n// has different behavior which assumes it is whatever the first pre-open name\n// is.\n//\n// See https://github.com/WebAssembly/wasi-libc/blob/659ff414560721b1660a19685110e484a081c3d4/libc-bottom-half/sources/at_fdcwd.c\n// See https://linux.die.net/man/2/openat\nfunc atPath(fsc *sys.FSContext, mem api.Memory, fd int32, p, pathLen uint32) (experimentalsys.FS, string, experimentalsys.Errno) {\n\tb, ok := mem.Read(p, pathLen)\n\tif !ok {\n\t\treturn nil, \"\", experimentalsys.EFAULT\n\t}\n\tpathName := string(b)\n\n\t// interesting_paths wants us to break on trailing slash if the input ends\n\t// up a file, not a directory!\n\thasTrailingSlash := strings.HasSuffix(pathName, \"/\")\n\n\t// interesting_paths includes paths that include relative links but end up\n\t// not escaping\n\tpathName = path.Clean(pathName)\n\n\t// interesting_paths wants to break on root paths or anything that escapes.\n\t// This part is the same as fs.FS.Open()\n\tif !fs.ValidPath(pathName) {\n\t\treturn nil, \"\", experimentalsys.EPERM\n\t}\n\n\t// add the trailing slash back\n\tif hasTrailingSlash {\n\t\tpathName = pathName + \"/\"\n\t}\n\n\tif f, ok := fsc.LookupFile(fd); !ok {\n\t\treturn nil, \"\", experimentalsys.EBADF // closed or invalid\n\t} else if isDir, errno := f.File.IsDir(); errno != 0 {\n\t\treturn nil, \"\", errno\n\t} else if !isDir {\n\t\treturn nil, \"\", experimentalsys.ENOTDIR\n\t} else if f.IsPreopen { // don't append the pre-open name\n\t\treturn f.FS, pathName, 0\n\t} else {\n\t\t// Join via concat to avoid name conflict on path.Join\n\t\treturn f.FS, f.Name + \"/\" + pathName, 0\n\t}\n}\n\nfunc preopenPath(fsc *sys.FSContext, fd int32) (string, experimentalsys.Errno) {\n\tif f, ok := fsc.LookupFile(fd); !ok {\n\t\treturn \"\", experimentalsys.EBADF // closed\n\t} else if !f.IsPreopen {\n\t\treturn \"\", experimentalsys.EBADF\n\t} else if isDir, errno := f.File.IsDir(); errno != 0 || !isDir {\n\t\t// In wasip1, only directories can be returned by fd_prestat_get as\n\t\t// there are no prestat types defined for files or sockets.\n\t\treturn \"\", errno\n\t} else {\n\t\treturn f.Name, 0\n\t}\n}\n\nfunc openFlags(dirflags, oflags, fdflags uint16, rights uint32) (openFlags experimentalsys.Oflag) {\n\tif dirflags&wasip1.LOOKUP_SYMLINK_FOLLOW == 0 {\n\t\topenFlags |= experimentalsys.O_NOFOLLOW\n\t}\n\tif oflags&wasip1.O_DIRECTORY != 0 {\n\t\topenFlags |= experimentalsys.O_DIRECTORY\n\t} else if oflags&wasip1.O_EXCL != 0 {\n\t\topenFlags |= experimentalsys.O_EXCL\n\t}\n\t// Because we don't implement rights, we partially rely on the open flags\n\t// to determine the mode in which the file will be opened. This will create\n\t// divergent behavior compared to WASI runtimes which have a more strict\n\t// interpretation of the WASI capabilities model; for example, a program\n\t// which sets O_CREAT but does not give read or write permissions will\n\t// successfully create a file when running with wazero, but might get a\n\t// permission denied error on other runtimes.\n\tdefaultMode := experimentalsys.O_RDONLY\n\tif oflags&wasip1.O_TRUNC != 0 {\n\t\topenFlags |= experimentalsys.O_TRUNC\n\t\tdefaultMode = experimentalsys.O_RDWR\n\t}\n\tif oflags&wasip1.O_CREAT != 0 {\n\t\topenFlags |= experimentalsys.O_CREAT\n\t\tdefaultMode = experimentalsys.O_RDWR\n\t}\n\tif fdflags&wasip1.FD_NONBLOCK != 0 {\n\t\topenFlags |= experimentalsys.O_NONBLOCK\n\t}\n\tif fdflags&wasip1.FD_APPEND != 0 {\n\t\topenFlags |= experimentalsys.O_APPEND\n\t\tdefaultMode = experimentalsys.O_RDWR\n\t}\n\tif fdflags&wasip1.FD_DSYNC != 0 {\n\t\topenFlags |= experimentalsys.O_DSYNC\n\t}\n\tif fdflags&wasip1.FD_RSYNC != 0 {\n\t\topenFlags |= experimentalsys.O_RSYNC\n\t}\n\tif fdflags&wasip1.FD_SYNC != 0 {\n\t\topenFlags |= experimentalsys.O_SYNC\n\t}\n\n\t// Since rights were discontinued in wasi, we only interpret RIGHT_FD_WRITE\n\t// because it is the only way to know that we need to set write permissions\n\t// on a file if the application did not pass any of O_CREAT, O_APPEND, nor\n\t// O_TRUNC.\n\tconst r = wasip1.RIGHT_FD_READ\n\tconst w = wasip1.RIGHT_FD_WRITE\n\tconst rw = r | w\n\tswitch {\n\tcase (rights & rw) == rw:\n\t\topenFlags |= experimentalsys.O_RDWR\n\tcase (rights & w) == w:\n\t\topenFlags |= experimentalsys.O_WRONLY\n\tcase (rights & r) == r:\n\t\topenFlags |= experimentalsys.O_RDONLY\n\tdefault:\n\t\topenFlags |= defaultMode\n\t}\n\treturn\n}\n\n// pathReadlink is the WASI function named PathReadlinkName that reads the\n// contents of a symbolic link.\n//\n// See: https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#-path_readlinkfd-fd-path-string-buf-pointeru8-buf_len-size---errno-size\nvar pathReadlink = newHostFunc(\n\twasip1.PathReadlinkName, pathReadlinkFn,\n\t[]wasm.ValueType{i32, i32, i32, i32, i32, i32},\n\t\"fd\", \"path\", \"path_len\", \"buf\", \"buf_len\", \"result.bufused\",\n)\n\nfunc pathReadlinkFn(_ context.Context, mod api.Module, params []uint64) experimentalsys.Errno {\n\tfsc := mod.(*wasm.ModuleInstance).Sys.FS()\n\n\tfd := int32(params[0])\n\tpath := uint32(params[1])\n\tpathLen := uint32(params[2])\n\tbuf := uint32(params[3])\n\tbufLen := uint32(params[4])\n\tresultBufused := uint32(params[5])\n\n\tif pathLen == 0 || bufLen == 0 {\n\t\treturn experimentalsys.EINVAL\n\t}\n\n\tmem := mod.Memory()\n\tpreopen, p, errno := atPath(fsc, mem, fd, path, pathLen)\n\tif errno != 0 {\n\t\treturn errno\n\t}\n\n\tdst, errno := preopen.Readlink(p)\n\tif errno != 0 {\n\t\treturn errno\n\t}\n\n\tif len(dst) > int(bufLen) {\n\t\treturn experimentalsys.ERANGE\n\t}\n\n\tif ok := mem.WriteString(buf, dst); !ok {\n\t\treturn experimentalsys.EFAULT\n\t}\n\n\tif !mem.WriteUint32Le(resultBufused, uint32(len(dst))) {\n\t\treturn experimentalsys.EFAULT\n\t}\n\treturn 0\n}\n\n// pathRemoveDirectory is the WASI function named PathRemoveDirectoryName which\n// removes a directory.\n//\n// # Parameters\n//\n//   - fd: file descriptor of a directory that `path` is relative to\n//   - path: offset in api.Memory to read the path string from\n//   - pathLen: length of `path`\n//\n// # Result (Errno)\n//\n// The return value is 0 except the following error conditions:\n//   - sys.EBADF: `fd` is invalid\n//   - sys.ENOENT: `path` does not exist.\n//   - sys.ENOTEMPTY: `path` is not empty\n//   - sys.ENOTDIR: `path` is a file\n//\n// # Notes\n//   - This is similar to unlinkat with AT_REMOVEDIR in POSIX.\n//     See https://linux.die.net/man/2/unlinkat\n//\n// See https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#-path_remove_directoryfd-fd-path-string---errno\nvar pathRemoveDirectory = newHostFunc(\n\twasip1.PathRemoveDirectoryName, pathRemoveDirectoryFn,\n\t[]wasm.ValueType{i32, i32, i32},\n\t\"fd\", \"path\", \"path_len\",\n)\n\nfunc pathRemoveDirectoryFn(_ context.Context, mod api.Module, params []uint64) experimentalsys.Errno {\n\tfsc := mod.(*wasm.ModuleInstance).Sys.FS()\n\n\tfd := int32(params[0])\n\tpath := uint32(params[1])\n\tpathLen := uint32(params[2])\n\n\tpreopen, pathName, errno := atPath(fsc, mod.Memory(), fd, path, pathLen)\n\tif errno != 0 {\n\t\treturn errno\n\t}\n\n\treturn preopen.Rmdir(pathName)\n}\n\n// pathRename is the WASI function named PathRenameName which renames a file or\n// directory.\n//\n// # Parameters\n//\n//   - fd: file descriptor of a directory that `old_path` is relative to\n//   - old_path: offset in api.Memory to read the old path string from\n//   - old_path_len: length of `old_path`\n//   - new_fd: file descriptor of a directory that `new_path` is relative to\n//   - new_path: offset in api.Memory to read the new path string from\n//   - new_path_len: length of `new_path`\n//\n// # Result (Errno)\n//\n// The return value is 0 except the following error conditions:\n//   - sys.EBADF: `fd` or `new_fd` are invalid\n//   - sys.ENOENT: `old_path` does not exist.\n//   - sys.ENOTDIR: `old` is a directory and `new` exists, but is a file.\n//   - sys.EISDIR: `old` is a file and `new` exists, but is a directory.\n//\n// # Notes\n//   - This is similar to unlinkat in POSIX.\n//     See https://linux.die.net/man/2/renameat\n//\n// See https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#-path_renamefd-fd-old_path-string-new_fd-fd-new_path-string---errno\nvar pathRename = newHostFunc(\n\twasip1.PathRenameName, pathRenameFn,\n\t[]wasm.ValueType{i32, i32, i32, i32, i32, i32},\n\t\"fd\", \"old_path\", \"old_path_len\", \"new_fd\", \"new_path\", \"new_path_len\",\n)\n\nfunc pathRenameFn(_ context.Context, mod api.Module, params []uint64) experimentalsys.Errno {\n\tfsc := mod.(*wasm.ModuleInstance).Sys.FS()\n\n\tfd := int32(params[0])\n\toldPath := uint32(params[1])\n\toldPathLen := uint32(params[2])\n\n\tnewFD := int32(params[3])\n\tnewPath := uint32(params[4])\n\tnewPathLen := uint32(params[5])\n\n\toldFS, oldPathName, errno := atPath(fsc, mod.Memory(), fd, oldPath, oldPathLen)\n\tif errno != 0 {\n\t\treturn errno\n\t}\n\n\tnewFS, newPathName, errno := atPath(fsc, mod.Memory(), newFD, newPath, newPathLen)\n\tif errno != 0 {\n\t\treturn errno\n\t}\n\n\tif oldFS != newFS { // TODO: handle renames across filesystems\n\t\treturn experimentalsys.ENOSYS\n\t}\n\n\treturn oldFS.Rename(oldPathName, newPathName)\n}\n\n// pathSymlink is the WASI function named PathSymlinkName which creates a\n// symbolic link.\n//\n// See https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#path_symlink\nvar pathSymlink = newHostFunc(\n\twasip1.PathSymlinkName, pathSymlinkFn,\n\t[]wasm.ValueType{i32, i32, i32, i32, i32},\n\t\"old_path\", \"old_path_len\", \"fd\", \"new_path\", \"new_path_len\",\n)\n\nfunc pathSymlinkFn(_ context.Context, mod api.Module, params []uint64) experimentalsys.Errno {\n\tfsc := mod.(*wasm.ModuleInstance).Sys.FS()\n\n\toldPath := uint32(params[0])\n\toldPathLen := uint32(params[1])\n\tfd := int32(params[2])\n\tnewPath := uint32(params[3])\n\tnewPathLen := uint32(params[4])\n\n\tmem := mod.Memory()\n\n\tdir, ok := fsc.LookupFile(fd)\n\tif !ok {\n\t\treturn experimentalsys.EBADF // closed\n\t} else if isDir, errno := dir.File.IsDir(); errno != 0 {\n\t\treturn errno\n\t} else if !isDir {\n\t\treturn experimentalsys.ENOTDIR\n\t}\n\n\tif oldPathLen == 0 || newPathLen == 0 {\n\t\treturn experimentalsys.EINVAL\n\t}\n\n\toldPathBuf, ok := mem.Read(oldPath, oldPathLen)\n\tif !ok {\n\t\treturn experimentalsys.EFAULT\n\t}\n\n\t_, newPathName, errno := atPath(fsc, mod.Memory(), fd, newPath, newPathLen)\n\tif errno != 0 {\n\t\treturn errno\n\t}\n\n\treturn dir.FS.Symlink(\n\t\t// Do not join old path since it's only resolved when dereference the link created here.\n\t\t// And the dereference result depends on the opening directory's file descriptor at that point.\n\t\tunsafe.String(&oldPathBuf[0], int(oldPathLen)),\n\t\tnewPathName,\n\t)\n}\n\n// pathUnlinkFile is the WASI function named PathUnlinkFileName which unlinks a\n// file.\n//\n// # Parameters\n//\n//   - fd: file descriptor of a directory that `path` is relative to\n//   - path: offset in api.Memory to read the path string from\n//   - pathLen: length of `path`\n//\n// # Result (Errno)\n//\n// The return value is 0 except the following error conditions:\n//   - sys.EBADF: `fd` is invalid\n//   - sys.ENOENT: `path` does not exist.\n//   - sys.EISDIR: `path` is a directory\n//\n// # Notes\n//   - This is similar to unlinkat without AT_REMOVEDIR in POSIX.\n//     See https://linux.die.net/man/2/unlinkat\n//\n// See https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#-path_unlink_filefd-fd-path-string---errno\nvar pathUnlinkFile = newHostFunc(\n\twasip1.PathUnlinkFileName, pathUnlinkFileFn,\n\t[]wasm.ValueType{i32, i32, i32},\n\t\"fd\", \"path\", \"path_len\",\n)\n\nfunc pathUnlinkFileFn(_ context.Context, mod api.Module, params []uint64) experimentalsys.Errno {\n\tfsc := mod.(*wasm.ModuleInstance).Sys.FS()\n\n\tfd := int32(params[0])\n\tpath := uint32(params[1])\n\tpathLen := uint32(params[2])\n\n\tpreopen, pathName, errno := atPath(fsc, mod.Memory(), fd, path, pathLen)\n\tif errno != 0 {\n\t\treturn errno\n\t}\n\n\treturn preopen.Unlink(pathName)\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/imports/wasi_snapshot_preview1/poll.go",
    "content": "package wasi_snapshot_preview1\n\nimport (\n\t\"context\"\n\t\"time\"\n\n\t\"github.com/tetratelabs/wazero/api\"\n\t\"github.com/tetratelabs/wazero/experimental/sys\"\n\t\"github.com/tetratelabs/wazero/internal/fsapi\"\n\tinternalsys \"github.com/tetratelabs/wazero/internal/sys\"\n\t\"github.com/tetratelabs/wazero/internal/wasip1\"\n\t\"github.com/tetratelabs/wazero/internal/wasm\"\n)\n\n// pollOneoff is the WASI function named PollOneoffName that concurrently\n// polls for the occurrence of a set of events.\n//\n// # Parameters\n//\n//   - in: pointer to the subscriptions (48 bytes each)\n//   - out: pointer to the resulting events (32 bytes each)\n//   - nsubscriptions: count of subscriptions, zero returns sys.EINVAL.\n//   - resultNevents: count of events.\n//\n// Result (Errno)\n//\n// The return value is 0 except the following error conditions:\n//   - sys.EINVAL: the parameters are invalid\n//   - sys.ENOTSUP: a parameters is valid, but not yet supported.\n//   - sys.EFAULT: there is not enough memory to read the subscriptions or\n//     write results.\n//\n// # Notes\n//\n//   - Since the `out` pointer nests Errno, the result is always 0.\n//   - This is similar to `poll` in POSIX.\n//\n// See https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#poll_oneoff\n// See https://linux.die.net/man/3/poll\nvar pollOneoff = newHostFunc(\n\twasip1.PollOneoffName, pollOneoffFn,\n\t[]api.ValueType{i32, i32, i32, i32},\n\t\"in\", \"out\", \"nsubscriptions\", \"result.nevents\",\n)\n\ntype event struct {\n\teventType byte\n\tuserData  []byte\n\terrno     wasip1.Errno\n}\n\nfunc pollOneoffFn(_ context.Context, mod api.Module, params []uint64) sys.Errno {\n\tin := uint32(params[0])\n\tout := uint32(params[1])\n\tnsubscriptions := uint32(params[2])\n\tresultNevents := uint32(params[3])\n\n\tif nsubscriptions == 0 {\n\t\treturn sys.EINVAL\n\t}\n\n\tmem := mod.Memory()\n\n\t// Ensure capacity prior to the read loop to reduce error handling.\n\tinBuf, ok := mem.Read(in, nsubscriptions*48)\n\tif !ok {\n\t\treturn sys.EFAULT\n\t}\n\toutBuf, ok := mem.Read(out, nsubscriptions*32)\n\t// zero-out all buffer before writing\n\tclear(outBuf)\n\n\tif !ok {\n\t\treturn sys.EFAULT\n\t}\n\n\t// Eagerly write the number of events which will equal subscriptions unless\n\t// there's a fault in parsing (not processing).\n\tif !mod.Memory().WriteUint32Le(resultNevents, nsubscriptions) {\n\t\treturn sys.EFAULT\n\t}\n\n\t// Loop through all subscriptions and write their output.\n\n\t// Extract FS context, used in the body of the for loop for FS access.\n\tfsc := mod.(*wasm.ModuleInstance).Sys.FS()\n\t// Slice of events that are processed out of the loop (blocking stdin subscribers).\n\tvar blockingStdinSubs []*event\n\t// The timeout is initialized at max Duration, the loop will find the minimum.\n\tvar timeout time.Duration = 1<<63 - 1\n\t// Count of all the subscriptions that have been already written back to outBuf.\n\t// nevents*32 returns at all times the offset where the next event should be written:\n\t// this way we ensure that there are no gaps between records.\n\tnevents := uint32(0)\n\n\t// Layout is subscription_u: Union\n\t// https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#subscription_u\n\tfor i := uint32(0); i < nsubscriptions; i++ {\n\t\tinOffset := i * 48\n\t\toutOffset := nevents * 32\n\n\t\teventType := inBuf[inOffset+8] // +8 past userdata\n\t\t// +8 past userdata +8 contents_offset\n\t\targBuf := inBuf[inOffset+8+8:]\n\t\tuserData := inBuf[inOffset : inOffset+8]\n\n\t\tevt := &event{\n\t\t\teventType: eventType,\n\t\t\tuserData:  userData,\n\t\t\terrno:     wasip1.ErrnoSuccess,\n\t\t}\n\n\t\tswitch eventType {\n\t\tcase wasip1.EventTypeClock: // handle later\n\t\t\tnewTimeout, err := processClockEvent(argBuf)\n\t\t\tif err != 0 {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\t// Min timeout.\n\t\t\tif newTimeout < timeout {\n\t\t\t\ttimeout = newTimeout\n\t\t\t}\n\t\t\t// Ack the clock event to the outBuf.\n\t\t\twriteEvent(outBuf[outOffset:], evt)\n\t\t\tnevents++\n\t\tcase wasip1.EventTypeFdRead:\n\t\t\tfd := int32(le.Uint32(argBuf))\n\t\t\tif fd < 0 {\n\t\t\t\treturn sys.EBADF\n\t\t\t}\n\t\t\tif file, ok := fsc.LookupFile(fd); !ok {\n\t\t\t\tevt.errno = wasip1.ErrnoBadf\n\t\t\t\twriteEvent(outBuf[outOffset:], evt)\n\t\t\t\tnevents++\n\t\t\t} else if fd != internalsys.FdStdin && file.File.IsNonblock() {\n\t\t\t\twriteEvent(outBuf[outOffset:], evt)\n\t\t\t\tnevents++\n\t\t\t} else {\n\t\t\t\t// if the fd is Stdin, and it is in blocking mode,\n\t\t\t\t// do not ack yet, append to a slice for delayed evaluation.\n\t\t\t\tblockingStdinSubs = append(blockingStdinSubs, evt)\n\t\t\t}\n\t\tcase wasip1.EventTypeFdWrite:\n\t\t\tfd := int32(le.Uint32(argBuf))\n\t\t\tif fd < 0 {\n\t\t\t\treturn sys.EBADF\n\t\t\t}\n\t\t\tif _, ok := fsc.LookupFile(fd); ok {\n\t\t\t\tevt.errno = wasip1.ErrnoNotsup\n\t\t\t} else {\n\t\t\t\tevt.errno = wasip1.ErrnoBadf\n\t\t\t}\n\t\t\tnevents++\n\t\t\twriteEvent(outBuf[outOffset:], evt)\n\t\tdefault:\n\t\t\treturn sys.EINVAL\n\t\t}\n\t}\n\n\tsysCtx := mod.(*wasm.ModuleInstance).Sys\n\tif nevents == nsubscriptions {\n\t\t// We already wrote back all the results. We already wrote this number\n\t\t// earlier to offset `resultNevents`.\n\t\t// We only need to observe the timeout (nonzero if there are clock subscriptions)\n\t\t// and return.\n\t\tif timeout > 0 {\n\t\t\tsysCtx.Nanosleep(int64(timeout))\n\t\t}\n\t\treturn 0\n\t}\n\n\t// If there are blocking stdin subscribers, check for data with given timeout.\n\tstdin, ok := fsc.LookupFile(internalsys.FdStdin)\n\tif !ok {\n\t\treturn sys.EBADF\n\t}\n\t// Wait for the timeout to expire, or for some data to become available on Stdin.\n\n\tif stdinReady, errno := stdin.File.Poll(fsapi.POLLIN, int32(timeout.Milliseconds())); errno != 0 {\n\t\treturn errno\n\t} else if stdinReady {\n\t\t// stdin has data ready to for reading, write back all the events\n\t\tfor i := range blockingStdinSubs {\n\t\t\tevt := blockingStdinSubs[i]\n\t\t\tevt.errno = 0\n\t\t\twriteEvent(outBuf[nevents*32:], evt)\n\t\t\tnevents++\n\t\t}\n\t}\n\n\tif nevents != nsubscriptions {\n\t\tif !mod.Memory().WriteUint32Le(resultNevents, nevents) {\n\t\t\treturn sys.EFAULT\n\t\t}\n\t}\n\n\treturn 0\n}\n\n// processClockEvent supports only relative name events, as that's what's used\n// to implement sleep in various compilers including Rust, Zig and TinyGo.\nfunc processClockEvent(inBuf []byte) (time.Duration, sys.Errno) {\n\t_ /* ID */ = le.Uint32(inBuf[0:8])          // See below\n\ttimeout := le.Uint64(inBuf[8:16])           // nanos if relative\n\t_ /* precision */ = le.Uint64(inBuf[16:24]) // Unused\n\tflags := le.Uint16(inBuf[24:32])\n\n\tvar err sys.Errno\n\t// subclockflags has only one flag defined:  subscription_clock_abstime\n\tswitch flags {\n\tcase 0: // relative time\n\tcase 1: // subscription_clock_abstime\n\t\terr = sys.ENOTSUP\n\tdefault: // subclockflags has only one flag defined.\n\t\terr = sys.EINVAL\n\t}\n\n\tif err != 0 {\n\t\treturn 0, err\n\t} else {\n\t\t// https://linux.die.net/man/3/clock_settime says relative timers are\n\t\t// unaffected. Since this function only supports relative timeout, we can\n\t\t// skip name ID validation and use a single sleep function.\n\n\t\treturn time.Duration(timeout), 0\n\t}\n}\n\n// writeEvent writes the event corresponding to the processed subscription.\n// https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#-event-struct\nfunc writeEvent(outBuf []byte, evt *event) {\n\tcopy(outBuf, evt.userData)  // userdata\n\toutBuf[8] = byte(evt.errno) // uint16, but safe as < 255\n\toutBuf[9] = 0\n\tle.PutUint32(outBuf[10:], uint32(evt.eventType))\n\t// TODO: When FD events are supported, write outOffset+16\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/imports/wasi_snapshot_preview1/proc.go",
    "content": "package wasi_snapshot_preview1\n\nimport (\n\t\"context\"\n\n\t\"github.com/tetratelabs/wazero/api\"\n\t\"github.com/tetratelabs/wazero/internal/wasip1\"\n\t\"github.com/tetratelabs/wazero/internal/wasm\"\n\t\"github.com/tetratelabs/wazero/sys\"\n)\n\n// procExit is the WASI function named ProcExitName that terminates the\n// execution of the module with an exit code. The only successful exit code is\n// zero.\n//\n// # Parameters\n//\n//   - exitCode: exit code.\n//\n// See https://github.com/WebAssembly/WASI/blob/main/phases/snapshot/docs.md#proc_exit\nvar procExit = &wasm.HostFunc{\n\tExportName: wasip1.ProcExitName,\n\tName:       wasip1.ProcExitName,\n\tParamTypes: []api.ValueType{i32},\n\tParamNames: []string{\"rval\"},\n\tCode:       wasm.Code{GoFunc: api.GoModuleFunc(procExitFn)},\n}\n\nfunc procExitFn(ctx context.Context, mod api.Module, params []uint64) {\n\texitCode := uint32(params[0])\n\n\t// Ensure other callers see the exit code.\n\t_ = mod.CloseWithExitCode(ctx, exitCode)\n\n\t// Prevent any code from executing after this function. For example, LLVM\n\t// inserts unreachable instructions after calls to exit.\n\t// See: https://github.com/emscripten-core/emscripten/issues/12322\n\tpanic(sys.NewExitError(exitCode))\n}\n\n// procRaise is stubbed and will never be supported, as it was removed.\n//\n// See https://github.com/WebAssembly/WASI/pull/136\nvar procRaise = stubFunction(wasip1.ProcRaiseName, []api.ValueType{i32}, \"sig\")\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/imports/wasi_snapshot_preview1/random.go",
    "content": "package wasi_snapshot_preview1\n\nimport (\n\t\"context\"\n\t\"io\"\n\n\t\"github.com/tetratelabs/wazero/api\"\n\t\"github.com/tetratelabs/wazero/experimental/sys\"\n\t\"github.com/tetratelabs/wazero/internal/wasip1\"\n\t\"github.com/tetratelabs/wazero/internal/wasm\"\n)\n\n// randomGet is the WASI function named RandomGetName which writes random\n// data to a buffer.\n//\n// # Parameters\n//\n//   - buf: api.Memory offset to write random values\n//   - bufLen: size of random data in bytes\n//\n// Result (Errno)\n//\n// The return value is ErrnoSuccess except the following error conditions:\n//   - sys.EFAULT: `buf` or `bufLen` point to an offset out of memory\n//   - sys.EIO: a file system error\n//\n// For example, if underlying random source was seeded like\n// `rand.NewSource(42)`, we expect api.Memory to contain:\n//\n//\t                   bufLen (5)\n//\t          +--------------------------+\n//\t          |                        \t |\n//\t[]byte{?, 0x53, 0x8c, 0x7f, 0x96, 0xb1, ?}\n//\t    buf --^\n//\n// See https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#-random_getbuf-pointeru8-bufLen-size---errno\nvar randomGet = newHostFunc(wasip1.RandomGetName, randomGetFn, []api.ValueType{i32, i32}, \"buf\", \"buf_len\")\n\nfunc randomGetFn(_ context.Context, mod api.Module, params []uint64) sys.Errno {\n\tsysCtx := mod.(*wasm.ModuleInstance).Sys\n\trandSource := sysCtx.RandSource()\n\tbuf, bufLen := uint32(params[0]), uint32(params[1])\n\n\trandomBytes, ok := mod.Memory().Read(buf, bufLen)\n\tif !ok { // out-of-range\n\t\treturn sys.EFAULT\n\t}\n\n\t// We can ignore the returned n as it only != byteCount on error\n\tif _, err := io.ReadAtLeast(randSource, randomBytes, int(bufLen)); err != nil {\n\t\treturn sys.EIO\n\t}\n\n\treturn 0\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/imports/wasi_snapshot_preview1/sched.go",
    "content": "package wasi_snapshot_preview1\n\nimport (\n\t\"context\"\n\n\t\"github.com/tetratelabs/wazero/api\"\n\t\"github.com/tetratelabs/wazero/experimental/sys\"\n\t\"github.com/tetratelabs/wazero/internal/wasip1\"\n\t\"github.com/tetratelabs/wazero/internal/wasm\"\n)\n\n// schedYield is the WASI function named SchedYieldName which temporarily\n// yields execution of the calling thread.\n//\n// See https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#-sched_yield---errno\nvar schedYield = newHostFunc(wasip1.SchedYieldName, schedYieldFn, nil)\n\nfunc schedYieldFn(_ context.Context, mod api.Module, _ []uint64) sys.Errno {\n\tsysCtx := mod.(*wasm.ModuleInstance).Sys\n\tsysCtx.Osyield()\n\treturn 0\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/imports/wasi_snapshot_preview1/sock.go",
    "content": "package wasi_snapshot_preview1\n\nimport (\n\t\"context\"\n\n\t\"github.com/tetratelabs/wazero/api\"\n\t\"github.com/tetratelabs/wazero/experimental/sys\"\n\tsocketapi \"github.com/tetratelabs/wazero/internal/sock\"\n\t\"github.com/tetratelabs/wazero/internal/sysfs\"\n\t\"github.com/tetratelabs/wazero/internal/wasip1\"\n\t\"github.com/tetratelabs/wazero/internal/wasm\"\n)\n\n// sockAccept is the WASI function named SockAcceptName which accepts a new\n// incoming connection.\n//\n// See: https://github.com/WebAssembly/WASI/blob/0ba0c5e2e37625ca5a6d3e4255a998dfaa3efc52/phases/snapshot/docs.md#sock_accept\n// and https://github.com/WebAssembly/WASI/pull/458\nvar sockAccept = newHostFunc(\n\twasip1.SockAcceptName,\n\tsockAcceptFn,\n\t[]wasm.ValueType{i32, i32, i32},\n\t\"fd\", \"flags\", \"result.fd\",\n)\n\nfunc sockAcceptFn(_ context.Context, mod api.Module, params []uint64) (errno sys.Errno) {\n\tmem := mod.Memory()\n\tfsc := mod.(*wasm.ModuleInstance).Sys.FS()\n\n\tfd := int32(params[0])\n\tflags := uint32(params[1])\n\tresultFd := uint32(params[2])\n\tnonblock := flags&uint32(wasip1.FD_NONBLOCK) != 0\n\n\tvar connFD int32\n\tif connFD, errno = fsc.SockAccept(fd, nonblock); errno == 0 {\n\t\tmem.WriteUint32Le(resultFd, uint32(connFD))\n\t}\n\treturn\n}\n\n// sockRecv is the WASI function named SockRecvName which receives a\n// message from a socket.\n//\n// See: https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#-sock_recvfd-fd-ri_data-iovec_array-ri_flags-riflags---errno-size-roflags\nvar sockRecv = newHostFunc(\n\twasip1.SockRecvName,\n\tsockRecvFn,\n\t[]wasm.ValueType{i32, i32, i32, i32, i32, i32},\n\t\"fd\", \"ri_data\", \"ri_data_len\", \"ri_flags\", \"result.ro_datalen\", \"result.ro_flags\",\n)\n\nfunc sockRecvFn(_ context.Context, mod api.Module, params []uint64) sys.Errno {\n\tmem := mod.Memory()\n\tfsc := mod.(*wasm.ModuleInstance).Sys.FS()\n\n\tfd := int32(params[0])\n\triData := uint32(params[1])\n\triDataCount := uint32(params[2])\n\triFlags := uint8(params[3])\n\tresultRoDatalen := uint32(params[4])\n\tresultRoFlags := uint32(params[5])\n\n\tvar conn socketapi.TCPConn\n\tif e, ok := fsc.LookupFile(fd); !ok {\n\t\treturn sys.EBADF // Not open\n\t} else if conn, ok = e.File.(socketapi.TCPConn); !ok {\n\t\treturn sys.EBADF // Not a conn\n\t}\n\n\tif riFlags & ^(wasip1.RI_RECV_PEEK|wasip1.RI_RECV_WAITALL) != 0 {\n\t\treturn sys.ENOTSUP\n\t}\n\n\tif riFlags&wasip1.RI_RECV_PEEK != 0 {\n\t\t// Each record in riData is of the form:\n\t\t// type iovec struct { buf *uint8; bufLen uint32 }\n\t\t// This means that the first `uint32` is a `buf *uint8`.\n\t\tfirstIovecBufAddr, ok := mem.ReadUint32Le(riData)\n\t\tif !ok {\n\t\t\treturn sys.EINVAL\n\t\t}\n\t\t// Read bufLen\n\t\tfirstIovecBufLen, ok := mem.ReadUint32Le(riData + 4)\n\t\tif !ok {\n\t\t\treturn sys.EINVAL\n\t\t}\n\t\tfirstIovecBuf, ok := mem.Read(firstIovecBufAddr, firstIovecBufLen)\n\t\tif !ok {\n\t\t\treturn sys.EINVAL\n\t\t}\n\t\tn, err := conn.Recvfrom(firstIovecBuf, sysfs.MSG_PEEK)\n\t\tif err != 0 {\n\t\t\treturn err\n\t\t}\n\t\tmem.WriteUint32Le(resultRoDatalen, uint32(n))\n\t\tmem.WriteUint16Le(resultRoFlags, 0)\n\t\treturn 0\n\t}\n\n\t// If riFlags&wasip1.RECV_WAITALL != 0 then we should\n\t// do a blocking operation until all data has been retrieved;\n\t// otherwise we are able to return earlier.\n\t// For simplicity, we currently wait all regardless the flag.\n\tbufSize, errno := readv(mem, riData, riDataCount, conn.Read)\n\tif errno != 0 {\n\t\treturn errno\n\t}\n\tmem.WriteUint32Le(resultRoDatalen, bufSize)\n\tmem.WriteUint16Le(resultRoFlags, 0)\n\treturn 0\n}\n\n// sockSend is the WASI function named SockSendName which sends a message\n// on a socket.\n//\n// See: https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#-sock_sendfd-fd-si_data-ciovec_array-si_flags-siflags---errno-size\nvar sockSend = newHostFunc(\n\twasip1.SockSendName,\n\tsockSendFn,\n\t[]wasm.ValueType{i32, i32, i32, i32, i32},\n\t\"fd\", \"si_data\", \"si_data_len\", \"si_flags\", \"result.so_datalen\",\n)\n\nfunc sockSendFn(_ context.Context, mod api.Module, params []uint64) sys.Errno {\n\tmem := mod.Memory()\n\tfsc := mod.(*wasm.ModuleInstance).Sys.FS()\n\n\tfd := int32(params[0])\n\tsiData := uint32(params[1])\n\tsiDataCount := uint32(params[2])\n\tsiFlags := uint32(params[3])\n\tresultSoDatalen := uint32(params[4])\n\n\tif siFlags != 0 {\n\t\treturn sys.ENOTSUP\n\t}\n\n\tvar conn socketapi.TCPConn\n\tif e, ok := fsc.LookupFile(fd); !ok {\n\t\treturn sys.EBADF // Not open\n\t} else if conn, ok = e.File.(socketapi.TCPConn); !ok {\n\t\treturn sys.EBADF // Not a conn\n\t}\n\n\tbufSize, errno := writev(mem, siData, siDataCount, conn.Write)\n\tif errno != 0 {\n\t\treturn errno\n\t}\n\tmem.WriteUint32Le(resultSoDatalen, bufSize)\n\treturn 0\n}\n\n// sockShutdown is the WASI function named SockShutdownName which shuts\n// down socket send and receive channels.\n//\n// See: https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#-sock_shutdownfd-fd-how-sdflags---errno\nvar sockShutdown = newHostFunc(wasip1.SockShutdownName, sockShutdownFn, []wasm.ValueType{i32, i32}, \"fd\", \"how\")\n\nfunc sockShutdownFn(_ context.Context, mod api.Module, params []uint64) sys.Errno {\n\tfsc := mod.(*wasm.ModuleInstance).Sys.FS()\n\n\tfd := int32(params[0])\n\thow := uint8(params[1])\n\n\tvar conn socketapi.TCPConn\n\tif e, ok := fsc.LookupFile(fd); !ok {\n\t\treturn sys.EBADF // Not open\n\t} else if conn, ok = e.File.(socketapi.TCPConn); !ok {\n\t\treturn sys.EBADF // Not a conn\n\t}\n\n\tsysHow := 0\n\n\tswitch how {\n\tcase wasip1.SD_RD | wasip1.SD_WR:\n\t\tsysHow = socketapi.SHUT_RD | socketapi.SHUT_WR\n\tcase wasip1.SD_RD:\n\t\tsysHow = socketapi.SHUT_RD\n\tcase wasip1.SD_WR:\n\t\tsysHow = socketapi.SHUT_WR\n\tdefault:\n\t\treturn sys.EINVAL\n\t}\n\n\t// TODO: Map this instead of relying on syscall symbols.\n\treturn conn.Shutdown(sysHow)\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/imports/wasi_snapshot_preview1/wasi.go",
    "content": "// Package wasi_snapshot_preview1 contains Go-defined functions to access\n// system calls, such as opening a file, similar to Go's x/sys package. These\n// are accessible from WebAssembly-defined functions via importing ModuleName.\n// All WASI functions return a single Errno result: ErrnoSuccess on success.\n//\n// e.g. Call Instantiate before instantiating any wasm binary that imports\n// \"wasi_snapshot_preview1\", Otherwise, it will error due to missing imports.\n//\n//\tctx := context.Background()\n//\tr := wazero.NewRuntime(ctx)\n//\tdefer r.Close(ctx) // This closes everything this Runtime created.\n//\n//\twasi_snapshot_preview1.MustInstantiate(ctx, r)\n//\tmod, _ := r.Instantiate(ctx, wasm)\n//\n// See https://github.com/WebAssembly/WASI\npackage wasi_snapshot_preview1\n\nimport (\n\t\"context\"\n\t\"encoding/binary\"\n\n\t\"github.com/tetratelabs/wazero\"\n\t\"github.com/tetratelabs/wazero/api\"\n\t\"github.com/tetratelabs/wazero/experimental/sys\"\n\t\"github.com/tetratelabs/wazero/internal/wasip1\"\n\t\"github.com/tetratelabs/wazero/internal/wasm\"\n)\n\n// ModuleName is the module name WASI functions are exported into.\n//\n// See https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md\nconst ModuleName = wasip1.InternalModuleName\n\nconst i32, i64 = wasm.ValueTypeI32, wasm.ValueTypeI64\n\nvar le = binary.LittleEndian\n\n// MustInstantiate calls Instantiate or panics on error.\n//\n// This is a simpler function for those who know the module ModuleName is not\n// already instantiated, and don't need to unload it.\nfunc MustInstantiate(ctx context.Context, r wazero.Runtime) {\n\tif _, err := Instantiate(ctx, r); err != nil {\n\t\tpanic(err)\n\t}\n}\n\n// Instantiate instantiates the ModuleName module into the runtime.\n//\n// # Notes\n//\n//   - Failure cases are documented on wazero.Runtime InstantiateModule.\n//   - Closing the wazero.Runtime has the same effect as closing the result.\nfunc Instantiate(ctx context.Context, r wazero.Runtime) (api.Closer, error) {\n\treturn NewBuilder(r).Instantiate(ctx)\n}\n\n// Builder configures the ModuleName module for later use via Compile or Instantiate.\n//\n// # Notes\n//\n//   - This is an interface for decoupling, not third-party implementations.\n//     All implementations are in wazero.\ntype Builder interface {\n\t// Compile compiles the ModuleName module. Call this before Instantiate.\n\t//\n\t// Note: This has the same effect as the same function on wazero.HostModuleBuilder.\n\tCompile(context.Context) (wazero.CompiledModule, error)\n\n\t// Instantiate instantiates the ModuleName module and returns a function to close it.\n\t//\n\t// Note: This has the same effect as the same function on wazero.HostModuleBuilder.\n\tInstantiate(context.Context) (api.Closer, error)\n}\n\n// NewBuilder returns a new Builder.\nfunc NewBuilder(r wazero.Runtime) Builder {\n\treturn &builder{r}\n}\n\ntype builder struct{ r wazero.Runtime }\n\n// hostModuleBuilder returns a new wazero.HostModuleBuilder for ModuleName\nfunc (b *builder) hostModuleBuilder() wazero.HostModuleBuilder {\n\tret := b.r.NewHostModuleBuilder(ModuleName)\n\texportFunctions(ret)\n\treturn ret\n}\n\n// Compile implements Builder.Compile\nfunc (b *builder) Compile(ctx context.Context) (wazero.CompiledModule, error) {\n\treturn b.hostModuleBuilder().Compile(ctx)\n}\n\n// Instantiate implements Builder.Instantiate\nfunc (b *builder) Instantiate(ctx context.Context) (api.Closer, error) {\n\treturn b.hostModuleBuilder().Instantiate(ctx)\n}\n\n// FunctionExporter exports functions into a wazero.HostModuleBuilder.\n//\n// # Notes\n//\n//   - This is an interface for decoupling, not third-party implementations.\n//     All implementations are in wazero.\ntype FunctionExporter interface {\n\tExportFunctions(wazero.HostModuleBuilder)\n}\n\n// NewFunctionExporter returns a new FunctionExporter. This is used for the\n// following two use cases:\n//   - Overriding a builtin function with an alternate implementation.\n//   - Exporting functions to the module \"wasi_unstable\" for legacy code.\n//\n// # Example of overriding default behavior\n//\n//\t// Export the default WASI functions.\n//\twasiBuilder := r.NewHostModuleBuilder(ModuleName)\n//\twasi_snapshot_preview1.NewFunctionExporter().ExportFunctions(wasiBuilder)\n//\n//\t// Subsequent calls to NewFunctionBuilder override built-in exports.\n//\twasiBuilder.NewFunctionBuilder().\n//\t\tWithFunc(func(ctx context.Context, mod api.Module, exitCode uint32) {\n//\t\t// your custom logic\n//\t\t}).Export(\"proc_exit\")\n//\n// # Example of using the old module name for WASI\n//\n//\t// Instantiate the current WASI functions under the wasi_unstable\n//\t// instead of wasi_snapshot_preview1.\n//\twasiBuilder := r.NewHostModuleBuilder(\"wasi_unstable\")\n//\twasi_snapshot_preview1.NewFunctionExporter().ExportFunctions(wasiBuilder)\n//\t_, err := wasiBuilder.Instantiate(testCtx, r)\nfunc NewFunctionExporter() FunctionExporter {\n\treturn &functionExporter{}\n}\n\ntype functionExporter struct{}\n\n// ExportFunctions implements FunctionExporter.ExportFunctions\nfunc (functionExporter) ExportFunctions(builder wazero.HostModuleBuilder) {\n\texportFunctions(builder)\n}\n\n// ## Translation notes\n// ### String\n// WebAssembly 1.0 has no string type, so any string input parameter expands to two uint32 parameters: offset\n// and length.\n//\n// ### iovec_array\n// `iovec_array` is encoded as two uin32le values (i32): offset and count.\n//\n// ### Result\n// Each result besides Errno is always an uint32 parameter. WebAssembly 1.0 can have up to one result,\n// which is already used by Errno. This forces other results to be parameters. A result parameter is a memory\n// offset to write the result to. As memory offsets are uint32, each parameter representing a result is uint32.\n//\n// ### Errno\n// The WASI specification is sometimes ambiguous resulting in some runtimes interpreting the same function ways.\n// Errno mappings are not defined in WASI, yet, so these mappings are best efforts by maintainers. When in doubt\n// about portability, first look at /RATIONALE.md and if needed an issue on\n// https://github.com/WebAssembly/WASI/issues\n//\n// ## Memory\n// In WebAssembly 1.0 (20191205), there may be up to one Memory per store, which means api.Memory is always the\n// wasm.Store Memories index zero: `store.Memories[0].Buffer`\n//\n// See https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md\n// See https://github.com/WebAssembly/WASI/issues/215\n// See https://wwa.w3.org/TR/2019/REC-wasm-core-1-20191205/#memory-instances%E2%91%A0.\n\n// exportFunctions adds all go functions that implement wasi.\n// These should be exported in the module named ModuleName.\nfunc exportFunctions(builder wazero.HostModuleBuilder) {\n\texporter := builder.(wasm.HostFuncExporter)\n\n\t// Note: these are ordered per spec for consistency even if the resulting\n\t// map can't guarantee that.\n\t// See https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#functions\n\texporter.ExportHostFunc(argsGet)\n\texporter.ExportHostFunc(argsSizesGet)\n\texporter.ExportHostFunc(environGet)\n\texporter.ExportHostFunc(environSizesGet)\n\texporter.ExportHostFunc(clockResGet)\n\texporter.ExportHostFunc(clockTimeGet)\n\texporter.ExportHostFunc(fdAdvise)\n\texporter.ExportHostFunc(fdAllocate)\n\texporter.ExportHostFunc(fdClose)\n\texporter.ExportHostFunc(fdDatasync)\n\texporter.ExportHostFunc(fdFdstatGet)\n\texporter.ExportHostFunc(fdFdstatSetFlags)\n\texporter.ExportHostFunc(fdFdstatSetRights)\n\texporter.ExportHostFunc(fdFilestatGet)\n\texporter.ExportHostFunc(fdFilestatSetSize)\n\texporter.ExportHostFunc(fdFilestatSetTimes)\n\texporter.ExportHostFunc(fdPread)\n\texporter.ExportHostFunc(fdPrestatGet)\n\texporter.ExportHostFunc(fdPrestatDirName)\n\texporter.ExportHostFunc(fdPwrite)\n\texporter.ExportHostFunc(fdRead)\n\texporter.ExportHostFunc(fdReaddir)\n\texporter.ExportHostFunc(fdRenumber)\n\texporter.ExportHostFunc(fdSeek)\n\texporter.ExportHostFunc(fdSync)\n\texporter.ExportHostFunc(fdTell)\n\texporter.ExportHostFunc(fdWrite)\n\texporter.ExportHostFunc(pathCreateDirectory)\n\texporter.ExportHostFunc(pathFilestatGet)\n\texporter.ExportHostFunc(pathFilestatSetTimes)\n\texporter.ExportHostFunc(pathLink)\n\texporter.ExportHostFunc(pathOpen)\n\texporter.ExportHostFunc(pathReadlink)\n\texporter.ExportHostFunc(pathRemoveDirectory)\n\texporter.ExportHostFunc(pathRename)\n\texporter.ExportHostFunc(pathSymlink)\n\texporter.ExportHostFunc(pathUnlinkFile)\n\texporter.ExportHostFunc(pollOneoff)\n\texporter.ExportHostFunc(procExit)\n\texporter.ExportHostFunc(procRaise)\n\texporter.ExportHostFunc(schedYield)\n\texporter.ExportHostFunc(randomGet)\n\texporter.ExportHostFunc(sockAccept)\n\texporter.ExportHostFunc(sockRecv)\n\texporter.ExportHostFunc(sockSend)\n\texporter.ExportHostFunc(sockShutdown)\n}\n\n// writeOffsetsAndNullTerminatedValues is used to write NUL-terminated values\n// for args or environ, given a pre-defined bytesLen (which includes NUL\n// terminators).\nfunc writeOffsetsAndNullTerminatedValues(mem api.Memory, values [][]byte, offsets, bytes, bytesLen uint32) sys.Errno {\n\t// The caller may not place bytes directly after offsets, so we have to\n\t// read them independently.\n\tvaluesLen := len(values)\n\toffsetsLen := uint32(valuesLen * 4) // uint32Le\n\toffsetsBuf, ok := mem.Read(offsets, offsetsLen)\n\tif !ok {\n\t\treturn sys.EFAULT\n\t}\n\tbytesBuf, ok := mem.Read(bytes, bytesLen)\n\tif !ok {\n\t\treturn sys.EFAULT\n\t}\n\n\t// Loop through the values, first writing the location of its data to\n\t// offsetsBuf[oI], then its NUL-terminated data at bytesBuf[bI]\n\tvar oI, bI uint32\n\tfor _, value := range values {\n\t\t// Go can't guarantee inlining as there's not //go:inline directive.\n\t\t// This inlines uint32 little-endian encoding instead.\n\t\tbytesOffset := bytes + bI\n\t\toffsetsBuf[oI] = byte(bytesOffset)\n\t\toffsetsBuf[oI+1] = byte(bytesOffset >> 8)\n\t\toffsetsBuf[oI+2] = byte(bytesOffset >> 16)\n\t\toffsetsBuf[oI+3] = byte(bytesOffset >> 24)\n\t\toI += 4 // size of uint32 we just wrote\n\n\t\t// Write the next value to memory with a NUL terminator\n\t\tcopy(bytesBuf[bI:], value)\n\t\tbI += uint32(len(value))\n\t\tbytesBuf[bI] = 0 // NUL terminator\n\t\tbI++\n\t}\n\n\treturn 0\n}\n\nfunc newHostFunc(\n\tname string,\n\tgoFunc wasiFunc,\n\tparamTypes []api.ValueType,\n\tparamNames ...string,\n) *wasm.HostFunc {\n\treturn &wasm.HostFunc{\n\t\tExportName:  name,\n\t\tName:        name,\n\t\tParamTypes:  paramTypes,\n\t\tParamNames:  paramNames,\n\t\tResultTypes: []api.ValueType{i32},\n\t\tResultNames: []string{\"errno\"},\n\t\tCode:        wasm.Code{GoFunc: goFunc},\n\t}\n}\n\n// wasiFunc special cases that all WASI functions return a single Errno\n// result. The returned value will be written back to the stack at index zero.\ntype wasiFunc func(ctx context.Context, mod api.Module, params []uint64) sys.Errno\n\n// Call implements the same method as documented on api.GoModuleFunction.\nfunc (f wasiFunc) Call(ctx context.Context, mod api.Module, stack []uint64) {\n\t// Write the result back onto the stack\n\terrno := f(ctx, mod, stack)\n\tif errno != 0 {\n\t\tstack[0] = uint64(wasip1.ToErrno(errno))\n\t} else { // special case ass ErrnoSuccess is zero\n\t\tstack[0] = 0\n\t}\n}\n\n// stubFunction stubs for GrainLang per #271.\nfunc stubFunction(name string, paramTypes []wasm.ValueType, paramNames ...string) *wasm.HostFunc {\n\treturn &wasm.HostFunc{\n\t\tExportName:  name,\n\t\tName:        name,\n\t\tParamTypes:  paramTypes,\n\t\tParamNames:  paramNames,\n\t\tResultTypes: []api.ValueType{i32},\n\t\tResultNames: []string{\"errno\"},\n\t\tCode: wasm.Code{\n\t\t\tGoFunc: api.GoModuleFunc(func(_ context.Context, _ api.Module, stack []uint64) { stack[0] = uint64(wasip1.ErrnoNosys) }),\n\t\t},\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/descriptor/table.go",
    "content": "package descriptor\n\nimport (\n\t\"math/bits\"\n\t\"slices\"\n)\n\n// Table is a data structure mapping 32 bit descriptor to items.\n//\n// # Negative keys are invalid.\n//\n// Negative keys (e.g. -1) are invalid inputs and will return a corresponding\n// not-found value. This matches POSIX behavior of file descriptors.\n// See https://pubs.opengroup.org/onlinepubs/9699919799/functions/dirfd.html#tag_16_90\n//\n// # Data structure design\n//\n// The data structure optimizes for memory density and lookup performance,\n// trading off compute at insertion time. This is a useful compromise for the\n// use cases we employ it with: items are usually accessed a lot more often\n// than they are inserted, each operation requires a table lookup, so we are\n// better off spending extra compute to insert items in the table in order to\n// get cheaper lookups. Memory efficiency is also crucial to support scaling\n// with programs that maintain thousands of items: having a high or non-linear\n// memory-to-item ratio could otherwise be used as an attack vector by\n// malicious applications attempting to damage performance of the host.\ntype Table[Key ~int32, Item any] struct {\n\tmasks []uint64\n\titems []Item\n}\n\n// Len returns the number of items stored in the table.\nfunc (t *Table[Key, Item]) Len() (n int) {\n\t// We could make this a O(1) operation if we cached the number of items in\n\t// the table. More state usually means more problems, so until we have a\n\t// clear need for this, the simple implementation may be a better trade off.\n\tfor _, mask := range t.masks {\n\t\tn += bits.OnesCount64(mask)\n\t}\n\treturn n\n}\n\n// grow grows the table by n * 64 items.\nfunc (t *Table[Key, Item]) grow(n int) {\n\ttotal := len(t.masks) + n\n\tt.masks = slices.Grow(t.masks, n)[:total]\n\n\ttotal = len(t.items) + n*64\n\tt.items = slices.Grow(t.items, n*64)[:total]\n}\n\n// Insert inserts the given item to the table, returning the key that it is\n// mapped to or false if the table was full.\n//\n// The method does not perform deduplication, it is possible for the same item\n// to be inserted multiple times, each insertion will return a different key.\nfunc (t *Table[Key, Item]) Insert(item Item) (key Key, ok bool) {\n\toffset := 0\ninsert:\n\t// Note: this loop could be made a lot more efficient using vectorized\n\t// operations: 256 bits vector registers would yield a theoretical 4x\n\t// speed up (e.g. using AVX2).\n\tfor index, mask := range t.masks[offset:] {\n\t\tif ^mask != 0 { // not full?\n\t\t\tshift := bits.TrailingZeros64(^mask)\n\t\t\tindex += offset\n\t\t\tkey = Key(index)*64 + Key(shift)\n\t\t\tt.items[key] = item\n\t\t\tt.masks[index] = mask | uint64(1<<shift)\n\t\t\treturn key, key >= 0\n\t\t}\n\t}\n\n\t// No free slot found, grow the table and retry.\n\toffset = len(t.masks)\n\tt.grow(1)\n\tgoto insert\n}\n\n// Lookup returns the item associated with the given key (may be nil).\nfunc (t *Table[Key, Item]) Lookup(key Key) (item Item, found bool) {\n\tif key < 0 { // invalid key\n\t\treturn\n\t}\n\tif i := int(key); i >= 0 && i < len(t.items) {\n\t\tindex := uint(key) / 64\n\t\tshift := uint(key) % 64\n\t\tif (t.masks[index] & (1 << shift)) != 0 {\n\t\t\titem, found = t.items[i], true\n\t\t}\n\t}\n\treturn\n}\n\n// InsertAt inserts the given `item` at the item descriptor `key`. This returns\n// false if the insert was impossible due to negative key.\nfunc (t *Table[Key, Item]) InsertAt(item Item, key Key) bool {\n\tif key < 0 {\n\t\treturn false\n\t}\n\tindex := uint(key) / 64\n\tif diff := int(index) - len(t.masks) + 1; diff > 0 {\n\t\tt.grow(diff)\n\t}\n\tshift := uint(key) % 64\n\tt.masks[index] |= 1 << shift\n\tt.items[key] = item\n\treturn true\n}\n\n// Delete deletes the item stored at the given key from the table.\nfunc (t *Table[Key, Item]) Delete(key Key) {\n\tif key < 0 { // invalid key\n\t\treturn\n\t}\n\tif index := uint(key) / 64; int(index) < len(t.masks) {\n\t\tshift := uint(key) % 64\n\t\tmask := t.masks[index]\n\t\tif (mask & (1 << shift)) != 0 {\n\t\t\tvar zero Item\n\t\t\tt.items[key] = zero\n\t\t\tt.masks[index] = mask & ^uint64(1<<shift)\n\t\t}\n\t}\n}\n\n// Range calls f for each item and its associated key in the table. The function\n// f might return false to interupt the iteration.\nfunc (t *Table[Key, Item]) Range(f func(Key, Item) bool) {\n\tfor i, mask := range t.masks {\n\t\tif mask == 0 {\n\t\t\tcontinue\n\t\t}\n\t\tfor j := Key(0); j < 64; j++ {\n\t\t\tif (mask & (1 << j)) == 0 {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif key := Key(i)*64 + j; !f(key, t.items[key]) {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n}\n\n// Reset clears the content of the table.\nfunc (t *Table[Key, Item]) Reset() {\n\tclear(t.masks)\n\tclear(t.items)\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/interpreter/compiler.go",
    "content": "package interpreter\n\nimport (\n\t\"bytes\"\n\t\"encoding/binary\"\n\t\"fmt\"\n\t\"math\"\n\t\"strings\"\n\n\t\"github.com/tetratelabs/wazero/api\"\n\t\"github.com/tetratelabs/wazero/internal/leb128\"\n\t\"github.com/tetratelabs/wazero/internal/wasm\"\n)\n\ntype controlFrameKind byte\n\nconst (\n\tcontrolFrameKindBlockWithContinuationLabel controlFrameKind = iota\n\tcontrolFrameKindBlockWithoutContinuationLabel\n\tcontrolFrameKindFunction\n\tcontrolFrameKindLoop\n\tcontrolFrameKindIfWithElse\n\tcontrolFrameKindIfWithoutElse\n)\n\ntype (\n\tcontrolFrame struct {\n\t\tframeID uint32\n\t\t// originalStackLenWithoutParam holds the number of values on the stack\n\t\t// when Start executing this control frame minus params for the block.\n\t\toriginalStackLenWithoutParam int\n\t\t// originalStackLenWithoutParamUint64 is almost the same as originalStackLenWithoutParam\n\t\t// except that it holds the number of values on the stack in uint64.\n\t\toriginalStackLenWithoutParamUint64 int\n\t\tblockType                          *wasm.FunctionType\n\t\tkind                               controlFrameKind\n\t}\n\tcontrolFrames struct{ frames []controlFrame }\n)\n\nfunc (c *controlFrame) ensureContinuation() {\n\t// Make sure that if the frame is block and doesn't have continuation,\n\t// change the Kind so we can emit the continuation block\n\t// later when we reach the End instruction of this frame.\n\tif c.kind == controlFrameKindBlockWithoutContinuationLabel {\n\t\tc.kind = controlFrameKindBlockWithContinuationLabel\n\t}\n}\n\nfunc (c *controlFrame) asLabel() label {\n\tswitch c.kind {\n\tcase controlFrameKindBlockWithContinuationLabel,\n\t\tcontrolFrameKindBlockWithoutContinuationLabel:\n\t\treturn newLabel(labelKindContinuation, c.frameID)\n\tcase controlFrameKindLoop:\n\t\treturn newLabel(labelKindHeader, c.frameID)\n\tcase controlFrameKindFunction:\n\t\treturn newLabel(labelKindReturn, 0)\n\tcase controlFrameKindIfWithElse,\n\t\tcontrolFrameKindIfWithoutElse:\n\t\treturn newLabel(labelKindContinuation, c.frameID)\n\t}\n\tpanic(fmt.Sprintf(\"unreachable: a bug in interpreterir implementation: %v\", c.kind))\n}\n\nfunc (c *controlFrames) functionFrame() *controlFrame {\n\t// No need to check stack bound\n\t// as we can assume that all the operations\n\t// are valid thanks to validateFunction\n\t// at module validation phase.\n\treturn &c.frames[0]\n}\n\nfunc (c *controlFrames) get(n int) *controlFrame {\n\t// No need to check stack bound\n\t// as we can assume that all the operations\n\t// are valid thanks to validateFunction\n\t// at module validation phase.\n\treturn &c.frames[len(c.frames)-n-1]\n}\n\nfunc (c *controlFrames) top() *controlFrame {\n\t// No need to check stack bound\n\t// as we can assume that all the operations\n\t// are valid thanks to validateFunction\n\t// at module validation phase.\n\treturn &c.frames[len(c.frames)-1]\n}\n\nfunc (c *controlFrames) empty() bool {\n\treturn len(c.frames) == 0\n}\n\nfunc (c *controlFrames) pop() (frame *controlFrame) {\n\t// No need to check stack bound\n\t// as we can assume that all the operations\n\t// are valid thanks to validateFunction\n\t// at module validation phase.\n\tframe = c.top()\n\tc.frames = c.frames[:len(c.frames)-1]\n\treturn\n}\n\nfunc (c *controlFrames) push(frame controlFrame) {\n\tc.frames = append(c.frames, frame)\n}\n\nfunc (c *compiler) initializeStack() {\n\t// Reuse the existing slice.\n\tc.localIndexToStackHeightInUint64 = c.localIndexToStackHeightInUint64[:0]\n\tvar current int\n\tfor _, lt := range c.sig.Params {\n\t\tc.localIndexToStackHeightInUint64 = append(c.localIndexToStackHeightInUint64, current)\n\t\tif lt == wasm.ValueTypeV128 {\n\t\t\tcurrent++\n\t\t}\n\t\tcurrent++\n\t}\n\n\tif c.callFrameStackSizeInUint64 > 0 {\n\t\t// We reserve the stack slots for result values below the return call frame slots.\n\t\tif diff := c.sig.ResultNumInUint64 - c.sig.ParamNumInUint64; diff > 0 {\n\t\t\tcurrent += diff\n\t\t}\n\t}\n\n\t// Non-func param locals Start after the return call frame.\n\tcurrent += c.callFrameStackSizeInUint64\n\n\tfor _, lt := range c.localTypes {\n\t\tc.localIndexToStackHeightInUint64 = append(c.localIndexToStackHeightInUint64, current)\n\t\tif lt == wasm.ValueTypeV128 {\n\t\t\tcurrent++\n\t\t}\n\t\tcurrent++\n\t}\n\n\t// Push function arguments.\n\tfor _, t := range c.sig.Params {\n\t\tc.stackPush(wasmValueTypeTounsignedType(t))\n\t}\n\n\tif c.callFrameStackSizeInUint64 > 0 {\n\t\t// Reserve the stack slots for results.\n\t\tfor i := 0; i < c.sig.ResultNumInUint64-c.sig.ParamNumInUint64; i++ {\n\t\t\tc.stackPush(unsignedTypeI64)\n\t\t}\n\n\t\t// Reserve the stack slots for call frame.\n\t\tfor i := 0; i < c.callFrameStackSizeInUint64; i++ {\n\t\t\tc.stackPush(unsignedTypeI64)\n\t\t}\n\t}\n}\n\n// compiler is in charge of lowering raw Wasm function body to get compilationResult.\n// This is created per *wasm.Module and reused for all functions in it to reduce memory allocations.\ntype compiler struct {\n\tmodule                     *wasm.Module\n\tenabledFeatures            api.CoreFeatures\n\tcallFrameStackSizeInUint64 int\n\tstack                      []unsignedType\n\t// stackLenInUint64 is the length of the stack in uint64.\n\tstackLenInUint64 int\n\tcurrentFrameID   uint32\n\tcontrolFrames    controlFrames\n\tunreachableState struct {\n\t\ton    bool\n\t\tdepth int\n\t}\n\tpc, currentOpPC uint64\n\tresult          compilationResult\n\n\t// body holds the code for the function's body where Wasm instructions are stored.\n\tbody []byte\n\t// sig is the function type of the target function.\n\tsig *wasm.FunctionType\n\t// localTypes holds the target function locals' value types except function params.\n\tlocalTypes []wasm.ValueType\n\t// localIndexToStackHeightInUint64 maps the local index (starting with function params) to the stack height\n\t// where the local is places. This is the necessary mapping for functions who contain vector type locals.\n\tlocalIndexToStackHeightInUint64 []int\n\n\t// types hold all the function types in the module where the targe function exists.\n\ttypes []wasm.FunctionType\n\t// funcs holds the type indexes for all declared functions in the module where the target function exists.\n\tfuncs []uint32\n\t// globals holds the global types for all declared globals in the module where the target function exists.\n\tglobals []wasm.GlobalType\n\n\t// needSourceOffset is true if this module requires DWARF based stack trace.\n\tneedSourceOffset bool\n\t// bodyOffsetInCodeSection is the offset of the body of this function in the original Wasm binary's code section.\n\tbodyOffsetInCodeSection uint64\n\n\tensureTermination bool\n\t// Pre-allocated bytes.Reader to be used in various places.\n\tbr             *bytes.Reader\n\tfuncTypeToSigs funcTypeToIRSignatures\n\n\tnext int\n}\n\n//lint:ignore U1000 for debugging only.\nfunc (c *compiler) stackDump() string {\n\tstrs := make([]string, 0, len(c.stack))\n\tfor _, s := range c.stack {\n\t\tstrs = append(strs, s.String())\n\t}\n\treturn \"[\" + strings.Join(strs, \", \") + \"]\"\n}\n\nfunc (c *compiler) markUnreachable() {\n\tc.unreachableState.on = true\n}\n\nfunc (c *compiler) resetUnreachable() {\n\tc.unreachableState.on = false\n}\n\n// memoryType is the type of memory in a compiled module.\ntype memoryType byte\n\nconst (\n\t// memoryTypeNone indicates there is no memory.\n\tmemoryTypeNone memoryType = iota\n\t// memoryTypeStandard indicates there is a non-shared memory.\n\tmemoryTypeStandard\n\t// memoryTypeShared indicates there is a shared memory.\n\tmemoryTypeShared\n)\n\ntype compilationResult struct {\n\t// Operations holds interpreterir operations compiled from Wasm instructions in a Wasm function.\n\tOperations []unionOperation\n\n\t// IROperationSourceOffsetsInWasmBinary is index-correlated with Operation and maps each operation to the corresponding source instruction's\n\t// offset in the original WebAssembly binary.\n\t// Non nil only when the given Wasm module has the DWARF section.\n\tIROperationSourceOffsetsInWasmBinary []uint64\n\n\t// LabelCallers maps label to the number of callers to that label.\n\t// Here \"callers\" means that the call-sites which jumps to the label with br, br_if or br_table\n\t// instructions.\n\t//\n\t// Note: zero possible and allowed in wasm. e.g.\n\t//\n\t//\t(block\n\t//\t  (br 0)\n\t//\t  (block i32.const 1111)\n\t//\t)\n\t//\n\t// This example the label corresponding to `(block i32.const 1111)` is never be reached at runtime because `br 0` exits the function before we reach there\n\tLabelCallers map[label]uint32\n\t// UsesMemory is true if this function might use memory.\n\tUsesMemory bool\n\n\t// The following fields are per-module values, not per-function.\n\n\t// Globals holds all the declarations of globals in the module from which this function is compiled.\n\tGlobals []wasm.GlobalType\n\t// Functions holds all the declarations of function in the module from which this function is compiled, including itself.\n\tFunctions []wasm.Index\n\t// Types holds all the types in the module from which this function is compiled.\n\tTypes []wasm.FunctionType\n\t// Memory indicates the type of memory of the module.\n\tMemory memoryType\n\t// HasTable is true if the module from which this function is compiled has table declaration.\n\tHasTable bool\n\t// HasDataInstances is true if the module has data instances which might be used by memory.init or data.drop instructions.\n\tHasDataInstances bool\n\t// HasDataInstances is true if the module has element instances which might be used by table.init or elem.drop instructions.\n\tHasElementInstances bool\n}\n\n// newCompiler returns the new *compiler for the given parameters.\n// Use compiler.Next function to get compilation result per function.\nfunc newCompiler(enabledFeatures api.CoreFeatures, callFrameStackSizeInUint64 int, module *wasm.Module, ensureTermination bool) (*compiler, error) {\n\tfunctions, globals, mem, tables, err := module.AllDeclarations()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\thasTable, hasDataInstances, hasElementInstances := len(tables) > 0,\n\t\tlen(module.DataSection) > 0, len(module.ElementSection) > 0\n\n\tvar mt memoryType\n\tswitch {\n\tcase mem == nil:\n\t\tmt = memoryTypeNone\n\tcase mem.IsShared:\n\t\tmt = memoryTypeShared\n\tdefault:\n\t\tmt = memoryTypeStandard\n\t}\n\n\ttypes := module.TypeSection\n\n\tc := &compiler{\n\t\tmodule:                     module,\n\t\tenabledFeatures:            enabledFeatures,\n\t\tcontrolFrames:              controlFrames{},\n\t\tcallFrameStackSizeInUint64: callFrameStackSizeInUint64,\n\t\tresult: compilationResult{\n\t\t\tGlobals:             globals,\n\t\t\tFunctions:           functions,\n\t\t\tTypes:               types,\n\t\t\tMemory:              mt,\n\t\t\tHasTable:            hasTable,\n\t\t\tHasDataInstances:    hasDataInstances,\n\t\t\tHasElementInstances: hasElementInstances,\n\t\t\tLabelCallers:        map[label]uint32{},\n\t\t},\n\t\tglobals:           globals,\n\t\tfuncs:             functions,\n\t\ttypes:             types,\n\t\tensureTermination: ensureTermination,\n\t\tbr:                bytes.NewReader(nil),\n\t\tfuncTypeToSigs: funcTypeToIRSignatures{\n\t\t\tindirectCalls: make([]*signature, len(types)),\n\t\t\tdirectCalls:   make([]*signature, len(types)),\n\t\t\twasmTypes:     types,\n\t\t},\n\t\tneedSourceOffset: module.DWARFLines != nil,\n\t}\n\treturn c, nil\n}\n\n// Next returns the next compilationResult for this compiler.\nfunc (c *compiler) Next() (*compilationResult, error) {\n\tfuncIndex := c.next\n\tcode := &c.module.CodeSection[funcIndex]\n\tsig := &c.types[c.module.FunctionSection[funcIndex]]\n\n\t// Reset the previous result.\n\tc.result.Operations = c.result.Operations[:0]\n\tc.result.IROperationSourceOffsetsInWasmBinary = c.result.IROperationSourceOffsetsInWasmBinary[:0]\n\tc.result.UsesMemory = false\n\t// Clears the existing entries in LabelCallers.\n\tfor frameID := uint32(0); frameID <= c.currentFrameID; frameID++ {\n\t\tfor k := labelKind(0); k < labelKindNum; k++ {\n\t\t\tdelete(c.result.LabelCallers, newLabel(k, frameID))\n\t\t}\n\t}\n\t// Reset the previous states.\n\tc.pc = 0\n\tc.currentOpPC = 0\n\tc.currentFrameID = 0\n\tc.stackLenInUint64 = 0\n\tc.unreachableState.on, c.unreachableState.depth = false, 0\n\n\tif err := c.compile(sig, code.Body, code.LocalTypes, code.BodyOffsetInCodeSection); err != nil {\n\t\treturn nil, err\n\t}\n\tc.next++\n\treturn &c.result, nil\n}\n\n// Compile lowers given function instance into interpreterir operations\n// so that the resulting operations can be consumed by the interpreter\n// or the compiler compilation engine.\nfunc (c *compiler) compile(sig *wasm.FunctionType, body []byte, localTypes []wasm.ValueType, bodyOffsetInCodeSection uint64) error {\n\t// Set function specific fields.\n\tc.body = body\n\tc.localTypes = localTypes\n\tc.sig = sig\n\tc.bodyOffsetInCodeSection = bodyOffsetInCodeSection\n\n\t// Reuses the underlying slices.\n\tc.stack = c.stack[:0]\n\tc.controlFrames.frames = c.controlFrames.frames[:0]\n\n\tc.initializeStack()\n\n\t// Emit const expressions for locals.\n\t// Note that here we don't take function arguments\n\t// into account, meaning that callers must push\n\t// arguments before entering into the function body.\n\tfor _, t := range c.localTypes {\n\t\tc.emitDefaultValue(t)\n\t}\n\n\t// Insert the function control frame.\n\tc.controlFrames.push(controlFrame{\n\t\tframeID:   c.nextFrameID(),\n\t\tblockType: c.sig,\n\t\tkind:      controlFrameKindFunction,\n\t})\n\n\t// Now, enter the function body.\n\tfor !c.controlFrames.empty() && c.pc < uint64(len(c.body)) {\n\t\tif err := c.handleInstruction(); err != nil {\n\t\t\treturn fmt.Errorf(\"handling instruction: %w\", err)\n\t\t}\n\t}\n\treturn nil\n}\n\n// Translate the current Wasm instruction to interpreterir's operations,\n// and emit the results into c.results.\nfunc (c *compiler) handleInstruction() error {\n\top := c.body[c.pc]\n\tc.currentOpPC = c.pc\n\tif false {\n\t\tvar instName string\n\t\tif op == wasm.OpcodeVecPrefix {\n\t\t\tinstName = wasm.VectorInstructionName(c.body[c.pc+1])\n\t\t} else if op == wasm.OpcodeAtomicPrefix {\n\t\t\tinstName = wasm.AtomicInstructionName(c.body[c.pc+1])\n\t\t} else if op == wasm.OpcodeMiscPrefix {\n\t\t\tinstName = wasm.MiscInstructionName(c.body[c.pc+1])\n\t\t} else {\n\t\t\tinstName = wasm.InstructionName(op)\n\t\t}\n\t\tfmt.Printf(\"handling %s, unreachable_state(on=%v,depth=%d), stack=%v\\n\",\n\t\t\tinstName, c.unreachableState.on, c.unreachableState.depth, c.stack,\n\t\t)\n\t}\n\n\tvar peekValueType unsignedType\n\tif len(c.stack) > 0 {\n\t\tpeekValueType = c.stackPeek()\n\t}\n\n\t// Modify the stack according the current instruction.\n\t// Note that some instructions will read \"index\" in\n\t// applyToStack and advance c.pc inside the function.\n\tindex, err := c.applyToStack(op)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"apply stack failed for %s: %w\", wasm.InstructionName(op), err)\n\t}\n\t// Now we handle each instruction, and\n\t// emit the corresponding interpreterir operations to the results.\noperatorSwitch:\n\tswitch op {\n\tcase wasm.OpcodeUnreachable:\n\t\tc.emit(newOperationUnreachable())\n\t\tc.markUnreachable()\n\tcase wasm.OpcodeNop:\n\t\t// Nop is noop!\n\tcase wasm.OpcodeBlock:\n\t\tc.br.Reset(c.body[c.pc+1:])\n\t\tbt, num, err := wasm.DecodeBlockType(c.types, c.br, c.enabledFeatures)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"reading block type for block instruction: %w\", err)\n\t\t}\n\t\tc.pc += num\n\n\t\tif c.unreachableState.on {\n\t\t\t// If it is currently in unreachable,\n\t\t\t// just remove the entire block.\n\t\t\tc.unreachableState.depth++\n\t\t\tbreak operatorSwitch\n\t\t}\n\n\t\t// Create a new frame -- entering this block.\n\t\tframe := controlFrame{\n\t\t\tframeID:                            c.nextFrameID(),\n\t\t\toriginalStackLenWithoutParam:       len(c.stack) - len(bt.Params),\n\t\t\toriginalStackLenWithoutParamUint64: c.stackLenInUint64 - bt.ParamNumInUint64,\n\t\t\tkind:                               controlFrameKindBlockWithoutContinuationLabel,\n\t\t\tblockType:                          bt,\n\t\t}\n\t\tc.controlFrames.push(frame)\n\n\tcase wasm.OpcodeLoop:\n\t\tc.br.Reset(c.body[c.pc+1:])\n\t\tbt, num, err := wasm.DecodeBlockType(c.types, c.br, c.enabledFeatures)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"reading block type for loop instruction: %w\", err)\n\t\t}\n\t\tc.pc += num\n\n\t\tif c.unreachableState.on {\n\t\t\t// If it is currently in unreachable,\n\t\t\t// just remove the entire block.\n\t\t\tc.unreachableState.depth++\n\t\t\tbreak operatorSwitch\n\t\t}\n\n\t\t// Create a new frame -- entering loop.\n\t\tframe := controlFrame{\n\t\t\tframeID:                            c.nextFrameID(),\n\t\t\toriginalStackLenWithoutParam:       len(c.stack) - len(bt.Params),\n\t\t\toriginalStackLenWithoutParamUint64: c.stackLenInUint64 - bt.ParamNumInUint64,\n\t\t\tkind:                               controlFrameKindLoop,\n\t\t\tblockType:                          bt,\n\t\t}\n\t\tc.controlFrames.push(frame)\n\n\t\t// Prep labels for inside and the continuation of this loop.\n\t\tloopLabel := newLabel(labelKindHeader, frame.frameID)\n\t\tc.result.LabelCallers[loopLabel]++\n\n\t\t// Emit the branch operation to enter inside the loop.\n\t\tc.emit(newOperationBr(loopLabel))\n\t\tc.emit(newOperationLabel(loopLabel))\n\n\t\t// Insert the exit code check on the loop header, which is the only necessary point in the function body\n\t\t// to prevent infinite loop.\n\t\t//\n\t\t// Note that this is a little aggressive: this checks the exit code regardless the loop header is actually\n\t\t// the loop. In other words, this checks even when no br/br_if/br_table instructions jumping to this loop\n\t\t// exist. However, in reality, that shouldn't be an issue since such \"noop\" loop header will highly likely be\n\t\t// optimized out by almost all guest language compilers which have the control flow optimization passes.\n\t\tif c.ensureTermination {\n\t\t\tc.emit(newOperationBuiltinFunctionCheckExitCode())\n\t\t}\n\tcase wasm.OpcodeIf:\n\t\tc.br.Reset(c.body[c.pc+1:])\n\t\tbt, num, err := wasm.DecodeBlockType(c.types, c.br, c.enabledFeatures)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"reading block type for if instruction: %w\", err)\n\t\t}\n\t\tc.pc += num\n\n\t\tif c.unreachableState.on {\n\t\t\t// If it is currently in unreachable,\n\t\t\t// just remove the entire block.\n\t\t\tc.unreachableState.depth++\n\t\t\tbreak operatorSwitch\n\t\t}\n\n\t\t// Create a new frame -- entering if.\n\t\tframe := controlFrame{\n\t\t\tframeID:                            c.nextFrameID(),\n\t\t\toriginalStackLenWithoutParam:       len(c.stack) - len(bt.Params),\n\t\t\toriginalStackLenWithoutParamUint64: c.stackLenInUint64 - bt.ParamNumInUint64,\n\t\t\t// Note this will be set to controlFrameKindIfWithElse\n\t\t\t// when else opcode found later.\n\t\t\tkind:      controlFrameKindIfWithoutElse,\n\t\t\tblockType: bt,\n\t\t}\n\t\tc.controlFrames.push(frame)\n\n\t\t// Prep labels for if and else of this if.\n\t\tthenLabel := newLabel(labelKindHeader, frame.frameID)\n\t\telseLabel := newLabel(labelKindElse, frame.frameID)\n\t\tc.result.LabelCallers[thenLabel]++\n\t\tc.result.LabelCallers[elseLabel]++\n\n\t\t// Emit the branch operation to enter the then block.\n\t\tc.emit(newOperationBrIf(thenLabel, elseLabel, nopinclusiveRange))\n\t\tc.emit(newOperationLabel(thenLabel))\n\tcase wasm.OpcodeElse:\n\t\tframe := c.controlFrames.top()\n\t\tif c.unreachableState.on && c.unreachableState.depth > 0 {\n\t\t\t// If it is currently in unreachable, and the nested if,\n\t\t\t// just remove the entire else block.\n\t\t\tbreak operatorSwitch\n\t\t} else if c.unreachableState.on {\n\t\t\t// If it is currently in unreachable, and the non-nested if,\n\t\t\t// reset the stack so we can correctly handle the else block.\n\t\t\ttop := c.controlFrames.top()\n\t\t\tc.stackSwitchAt(top)\n\t\t\ttop.kind = controlFrameKindIfWithElse\n\n\t\t\t// Re-push the parameters to the if block so that else block can use them.\n\t\t\tfor _, t := range frame.blockType.Params {\n\t\t\t\tc.stackPush(wasmValueTypeTounsignedType(t))\n\t\t\t}\n\n\t\t\t// We are no longer unreachable in else frame,\n\t\t\t// so emit the correct label, and reset the unreachable state.\n\t\t\telseLabel := newLabel(labelKindElse, frame.frameID)\n\t\t\tc.resetUnreachable()\n\t\t\tc.emit(\n\t\t\t\tnewOperationLabel(elseLabel),\n\t\t\t)\n\t\t\tbreak operatorSwitch\n\t\t}\n\n\t\t// Change the Kind of this If block, indicating that\n\t\t// the if has else block.\n\t\tframe.kind = controlFrameKindIfWithElse\n\n\t\t// We need to reset the stack so that\n\t\t// the values pushed inside the then block\n\t\t// do not affect the else block.\n\t\tdropOp := newOperationDrop(c.getFrameDropRange(frame, false))\n\n\t\t// Reset the stack manipulated by the then block, and re-push the block param types to the stack.\n\n\t\tc.stackSwitchAt(frame)\n\t\tfor _, t := range frame.blockType.Params {\n\t\t\tc.stackPush(wasmValueTypeTounsignedType(t))\n\t\t}\n\n\t\t// Prep labels for else and the continuation of this if block.\n\t\telseLabel := newLabel(labelKindElse, frame.frameID)\n\t\tcontinuationLabel := newLabel(labelKindContinuation, frame.frameID)\n\t\tc.result.LabelCallers[continuationLabel]++\n\n\t\t// Emit the instructions for exiting the if loop,\n\t\t// and then the initiation of else block.\n\t\tc.emit(dropOp)\n\t\t// Jump to the continuation of this block.\n\t\tc.emit(newOperationBr(continuationLabel))\n\t\t// Initiate the else block.\n\t\tc.emit(newOperationLabel(elseLabel))\n\tcase wasm.OpcodeEnd:\n\t\tif c.unreachableState.on && c.unreachableState.depth > 0 {\n\t\t\tc.unreachableState.depth--\n\t\t\tbreak operatorSwitch\n\t\t} else if c.unreachableState.on {\n\t\t\tc.resetUnreachable()\n\n\t\t\tframe := c.controlFrames.pop()\n\t\t\tif c.controlFrames.empty() {\n\t\t\t\treturn nil\n\t\t\t}\n\n\t\t\tc.stackSwitchAt(frame)\n\t\t\tfor _, t := range frame.blockType.Results {\n\t\t\t\tc.stackPush(wasmValueTypeTounsignedType(t))\n\t\t\t}\n\n\t\t\tcontinuationLabel := newLabel(labelKindContinuation, frame.frameID)\n\t\t\tif frame.kind == controlFrameKindIfWithoutElse {\n\t\t\t\t// Emit the else label.\n\t\t\t\telseLabel := newLabel(labelKindElse, frame.frameID)\n\t\t\t\tc.result.LabelCallers[continuationLabel]++\n\t\t\t\tc.emit(newOperationLabel(elseLabel))\n\t\t\t\tc.emit(newOperationBr(continuationLabel))\n\t\t\t\tc.emit(newOperationLabel(continuationLabel))\n\t\t\t} else {\n\t\t\t\tc.emit(\n\t\t\t\t\tnewOperationLabel(continuationLabel),\n\t\t\t\t)\n\t\t\t}\n\n\t\t\tbreak operatorSwitch\n\t\t}\n\n\t\tframe := c.controlFrames.pop()\n\n\t\t// We need to reset the stack so that\n\t\t// the values pushed inside the block.\n\t\tdropOp := newOperationDrop(c.getFrameDropRange(frame, true))\n\t\tc.stackSwitchAt(frame)\n\n\t\t// Push the result types onto the stack.\n\t\tfor _, t := range frame.blockType.Results {\n\t\t\tc.stackPush(wasmValueTypeTounsignedType(t))\n\t\t}\n\n\t\t// Emit the instructions according to the Kind of the current control frame.\n\t\tswitch frame.kind {\n\t\tcase controlFrameKindFunction:\n\t\t\tif !c.controlFrames.empty() {\n\t\t\t\t// Should never happen. If so, there's a bug in the translation.\n\t\t\t\tpanic(\"bug: found more function control frames\")\n\t\t\t}\n\t\t\t// Return from function.\n\t\t\tc.emit(dropOp)\n\t\t\tc.emit(newOperationBr(newLabel(labelKindReturn, 0)))\n\t\tcase controlFrameKindIfWithoutElse:\n\t\t\t// This case we have to emit \"empty\" else label.\n\t\t\telseLabel := newLabel(labelKindElse, frame.frameID)\n\t\t\tcontinuationLabel := newLabel(labelKindContinuation, frame.frameID)\n\t\t\tc.result.LabelCallers[continuationLabel] += 2\n\t\t\tc.emit(dropOp)\n\t\t\tc.emit(newOperationBr(continuationLabel))\n\t\t\t// Emit the else which soon branches into the continuation.\n\t\t\tc.emit(newOperationLabel(elseLabel))\n\t\t\tc.emit(newOperationBr(continuationLabel))\n\t\t\t// Initiate the continuation.\n\t\t\tc.emit(newOperationLabel(continuationLabel))\n\t\tcase controlFrameKindBlockWithContinuationLabel,\n\t\t\tcontrolFrameKindIfWithElse:\n\t\t\tcontinuationLabel := newLabel(labelKindContinuation, frame.frameID)\n\t\t\tc.result.LabelCallers[continuationLabel]++\n\t\t\tc.emit(dropOp)\n\t\t\tc.emit(newOperationBr(continuationLabel))\n\t\t\tc.emit(newOperationLabel(continuationLabel))\n\t\tcase controlFrameKindLoop, controlFrameKindBlockWithoutContinuationLabel:\n\t\t\tc.emit(\n\t\t\t\tdropOp,\n\t\t\t)\n\t\tdefault:\n\t\t\t// Should never happen. If so, there's a bug in the translation.\n\t\t\tpanic(fmt.Errorf(\"bug: invalid control frame Kind: 0x%x\", frame.kind))\n\t\t}\n\n\tcase wasm.OpcodeBr:\n\t\ttargetIndex, n, err := leb128.LoadUint32(c.body[c.pc+1:])\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"read the target for br_if: %w\", err)\n\t\t}\n\t\tc.pc += n\n\n\t\tif c.unreachableState.on {\n\t\t\t// If it is currently in unreachable, br is no-op.\n\t\t\tbreak operatorSwitch\n\t\t}\n\n\t\ttargetFrame := c.controlFrames.get(int(targetIndex))\n\t\ttargetFrame.ensureContinuation()\n\t\tdropOp := newOperationDrop(c.getFrameDropRange(targetFrame, false))\n\t\ttargetID := targetFrame.asLabel()\n\t\tc.result.LabelCallers[targetID]++\n\t\tc.emit(dropOp)\n\t\tc.emit(newOperationBr(targetID))\n\t\t// Br operation is stack-polymorphic, and mark the state as unreachable.\n\t\t// That means subsequent instructions in the current control frame are \"unreachable\"\n\t\t// and can be safely removed.\n\t\tc.markUnreachable()\n\tcase wasm.OpcodeBrIf:\n\t\ttargetIndex, n, err := leb128.LoadUint32(c.body[c.pc+1:])\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"read the target for br_if: %w\", err)\n\t\t}\n\t\tc.pc += n\n\n\t\tif c.unreachableState.on {\n\t\t\t// If it is currently in unreachable, br-if is no-op.\n\t\t\tbreak operatorSwitch\n\t\t}\n\n\t\ttargetFrame := c.controlFrames.get(int(targetIndex))\n\t\ttargetFrame.ensureContinuation()\n\t\tdrop := c.getFrameDropRange(targetFrame, false)\n\t\ttarget := targetFrame.asLabel()\n\t\tc.result.LabelCallers[target]++\n\n\t\tcontinuationLabel := newLabel(labelKindHeader, c.nextFrameID())\n\t\tc.result.LabelCallers[continuationLabel]++\n\t\tc.emit(newOperationBrIf(target, continuationLabel, drop))\n\t\t// Start emitting else block operations.\n\t\tc.emit(newOperationLabel(continuationLabel))\n\tcase wasm.OpcodeBrTable:\n\t\tc.br.Reset(c.body[c.pc+1:])\n\t\tr := c.br\n\t\tnumTargets, n, err := leb128.DecodeUint32(r)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"error reading number of targets in br_table: %w\", err)\n\t\t}\n\t\tc.pc += n\n\n\t\tif c.unreachableState.on {\n\t\t\t// If it is currently in unreachable, br_table is no-op.\n\t\t\t// But before proceeding to the next instruction, we must advance the pc\n\t\t\t// according to the number of br_table targets.\n\t\t\tfor i := uint32(0); i <= numTargets; i++ { // inclusive as we also need to read the index of default target.\n\t\t\t\t_, n, err := leb128.DecodeUint32(r)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"error reading target %d in br_table: %w\", i, err)\n\t\t\t\t}\n\t\t\t\tc.pc += n\n\t\t\t}\n\t\t\tbreak operatorSwitch\n\t\t}\n\n\t\t// Read the branch targets.\n\t\ts := numTargets * 2\n\t\ttargetLabels := make([]uint64, 2+s) // (label, inclusiveRange) * (default+numTargets)\n\t\tfor i := uint32(0); i < s; i += 2 {\n\t\t\tl, n, err := leb128.DecodeUint32(r)\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"error reading target %d in br_table: %w\", i, err)\n\t\t\t}\n\t\t\tc.pc += n\n\t\t\ttargetFrame := c.controlFrames.get(int(l))\n\t\t\ttargetFrame.ensureContinuation()\n\t\t\tdrop := c.getFrameDropRange(targetFrame, false)\n\t\t\ttargetLabel := targetFrame.asLabel()\n\t\t\ttargetLabels[i] = uint64(targetLabel)\n\t\t\ttargetLabels[i+1] = drop.AsU64()\n\t\t\tc.result.LabelCallers[targetLabel]++\n\t\t}\n\n\t\t// Prep default target control frame.\n\t\tl, n, err := leb128.DecodeUint32(r)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"error reading default target of br_table: %w\", err)\n\t\t}\n\t\tc.pc += n\n\t\tdefaultTargetFrame := c.controlFrames.get(int(l))\n\t\tdefaultTargetFrame.ensureContinuation()\n\t\tdefaultTargetDrop := c.getFrameDropRange(defaultTargetFrame, false)\n\t\tdefaultLabel := defaultTargetFrame.asLabel()\n\t\tc.result.LabelCallers[defaultLabel]++\n\t\ttargetLabels[s] = uint64(defaultLabel)\n\t\ttargetLabels[s+1] = defaultTargetDrop.AsU64()\n\t\tc.emit(newOperationBrTable(targetLabels))\n\n\t\t// br_table operation is stack-polymorphic, and mark the state as unreachable.\n\t\t// That means subsequent instructions in the current control frame are \"unreachable\"\n\t\t// and can be safely removed.\n\t\tc.markUnreachable()\n\tcase wasm.OpcodeReturn:\n\t\tfunctionFrame := c.controlFrames.functionFrame()\n\t\tdropOp := newOperationDrop(c.getFrameDropRange(functionFrame, false))\n\n\t\t// Cleanup the stack and then jmp to function frame's continuation (meaning return).\n\t\tc.emit(dropOp)\n\t\tc.emit(newOperationBr(functionFrame.asLabel()))\n\n\t\t// Return operation is stack-polymorphic, and mark the state as unreachable.\n\t\t// That means subsequent instructions in the current control frame are \"unreachable\"\n\t\t// and can be safely removed.\n\t\tc.markUnreachable()\n\tcase wasm.OpcodeCall:\n\t\tc.emit(\n\t\t\tnewOperationCall(index),\n\t\t)\n\tcase wasm.OpcodeCallIndirect:\n\t\ttypeIndex := index\n\t\ttableIndex, n, err := leb128.LoadUint32(c.body[c.pc+1:])\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"read target for br_table: %w\", err)\n\t\t}\n\t\tc.pc += n\n\t\tc.emit(\n\t\t\tnewOperationCallIndirect(typeIndex, tableIndex),\n\t\t)\n\n\tcase wasm.OpcodeDrop:\n\t\tr := inclusiveRange{Start: 0, End: 0}\n\t\tif peekValueType == unsignedTypeV128 {\n\t\t\t// inclusiveRange is the range in uint64 representation, so dropping a vector value on top\n\t\t\t// should be translated as drop [0..1] inclusively.\n\t\t\tr.End++\n\t\t}\n\t\tc.emit(newOperationDrop(r))\n\tcase wasm.OpcodeSelect:\n\t\t// If it is on the unreachable state, ignore the instruction.\n\t\tif c.unreachableState.on {\n\t\t\tbreak operatorSwitch\n\t\t}\n\t\tisTargetVector := c.stackPeek() == unsignedTypeV128\n\t\tc.emit(\n\t\t\tnewOperationSelect(isTargetVector),\n\t\t)\n\tcase wasm.OpcodeTypedSelect:\n\t\t// Skips two bytes: vector size fixed to 1, and the value type for select.\n\t\tc.pc += 2\n\t\t// If it is on the unreachable state, ignore the instruction.\n\t\tif c.unreachableState.on {\n\t\t\tbreak operatorSwitch\n\t\t}\n\t\t// Typed select is semantically equivalent to select at runtime.\n\t\tisTargetVector := c.stackPeek() == unsignedTypeV128\n\t\tc.emit(\n\t\t\tnewOperationSelect(isTargetVector),\n\t\t)\n\tcase wasm.OpcodeLocalGet:\n\t\tdepth := c.localDepth(index)\n\t\tif isVector := c.localType(index) == wasm.ValueTypeV128; !isVector {\n\t\t\tc.emit(\n\t\t\t\t// -1 because we already manipulated the stack before\n\t\t\t\t// called localDepth ^^.\n\t\t\t\tnewOperationPick(depth-1, isVector),\n\t\t\t)\n\t\t} else {\n\t\t\tc.emit(\n\t\t\t\t// -2 because we already manipulated the stack before\n\t\t\t\t// called localDepth ^^.\n\t\t\t\tnewOperationPick(depth-2, isVector),\n\t\t\t)\n\t\t}\n\tcase wasm.OpcodeLocalSet:\n\t\tdepth := c.localDepth(index)\n\n\t\tisVector := c.localType(index) == wasm.ValueTypeV128\n\t\tif isVector {\n\t\t\tc.emit(\n\t\t\t\t// +2 because we already popped the operands for this operation from the c.stack before\n\t\t\t\t// called localDepth ^^,\n\t\t\t\tnewOperationSet(depth+2, isVector),\n\t\t\t)\n\t\t} else {\n\t\t\tc.emit(\n\t\t\t\t// +1 because we already popped the operands for this operation from the c.stack before\n\t\t\t\t// called localDepth ^^,\n\t\t\t\tnewOperationSet(depth+1, isVector),\n\t\t\t)\n\t\t}\n\tcase wasm.OpcodeLocalTee:\n\t\tdepth := c.localDepth(index)\n\t\tisVector := c.localType(index) == wasm.ValueTypeV128\n\t\tif isVector {\n\t\t\tc.emit(newOperationPick(1, isVector))\n\t\t\tc.emit(newOperationSet(depth+2, isVector))\n\t\t} else {\n\t\t\tc.emit(\n\t\t\t\tnewOperationPick(0, isVector))\n\t\t\tc.emit(newOperationSet(depth+1, isVector))\n\t\t}\n\tcase wasm.OpcodeGlobalGet:\n\t\tc.emit(\n\t\t\tnewOperationGlobalGet(index),\n\t\t)\n\tcase wasm.OpcodeGlobalSet:\n\t\tc.emit(\n\t\t\tnewOperationGlobalSet(index),\n\t\t)\n\tcase wasm.OpcodeI32Load:\n\t\timm, err := c.readMemoryArg(wasm.OpcodeI32LoadName)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tc.emit(newOperationLoad(unsignedTypeI32, imm))\n\tcase wasm.OpcodeI64Load:\n\t\timm, err := c.readMemoryArg(wasm.OpcodeI64LoadName)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tc.emit(newOperationLoad(unsignedTypeI64, imm))\n\tcase wasm.OpcodeF32Load:\n\t\timm, err := c.readMemoryArg(wasm.OpcodeF32LoadName)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tc.emit(newOperationLoad(unsignedTypeF32, imm))\n\tcase wasm.OpcodeF64Load:\n\t\timm, err := c.readMemoryArg(wasm.OpcodeF64LoadName)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tc.emit(newOperationLoad(unsignedTypeF64, imm))\n\tcase wasm.OpcodeI32Load8S:\n\t\timm, err := c.readMemoryArg(wasm.OpcodeI32Load8SName)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tc.emit(newOperationLoad8(signedInt32, imm))\n\tcase wasm.OpcodeI32Load8U:\n\t\timm, err := c.readMemoryArg(wasm.OpcodeI32Load8UName)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tc.emit(newOperationLoad8(signedUint32, imm))\n\tcase wasm.OpcodeI32Load16S:\n\t\timm, err := c.readMemoryArg(wasm.OpcodeI32Load16SName)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tc.emit(newOperationLoad16(signedInt32, imm))\n\tcase wasm.OpcodeI32Load16U:\n\t\timm, err := c.readMemoryArg(wasm.OpcodeI32Load16UName)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tc.emit(newOperationLoad16(signedUint32, imm))\n\tcase wasm.OpcodeI64Load8S:\n\t\timm, err := c.readMemoryArg(wasm.OpcodeI64Load8SName)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tc.emit(newOperationLoad8(signedInt64, imm))\n\tcase wasm.OpcodeI64Load8U:\n\t\timm, err := c.readMemoryArg(wasm.OpcodeI64Load8UName)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tc.emit(newOperationLoad8(signedUint64, imm))\n\tcase wasm.OpcodeI64Load16S:\n\t\timm, err := c.readMemoryArg(wasm.OpcodeI64Load16SName)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tc.emit(newOperationLoad16(signedInt64, imm))\n\tcase wasm.OpcodeI64Load16U:\n\t\timm, err := c.readMemoryArg(wasm.OpcodeI64Load16UName)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tc.emit(newOperationLoad16(signedUint64, imm))\n\tcase wasm.OpcodeI64Load32S:\n\t\timm, err := c.readMemoryArg(wasm.OpcodeI64Load32SName)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tc.emit(newOperationLoad32(true, imm))\n\tcase wasm.OpcodeI64Load32U:\n\t\timm, err := c.readMemoryArg(wasm.OpcodeI64Load32UName)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tc.emit(newOperationLoad32(false, imm))\n\tcase wasm.OpcodeI32Store:\n\t\timm, err := c.readMemoryArg(wasm.OpcodeI32StoreName)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tc.emit(\n\t\t\tnewOperationStore(unsignedTypeI32, imm),\n\t\t)\n\tcase wasm.OpcodeI64Store:\n\t\timm, err := c.readMemoryArg(wasm.OpcodeI64StoreName)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tc.emit(\n\t\t\tnewOperationStore(unsignedTypeI64, imm),\n\t\t)\n\tcase wasm.OpcodeF32Store:\n\t\timm, err := c.readMemoryArg(wasm.OpcodeF32StoreName)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tc.emit(\n\t\t\tnewOperationStore(unsignedTypeF32, imm),\n\t\t)\n\tcase wasm.OpcodeF64Store:\n\t\timm, err := c.readMemoryArg(wasm.OpcodeF64StoreName)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tc.emit(\n\t\t\tnewOperationStore(unsignedTypeF64, imm),\n\t\t)\n\tcase wasm.OpcodeI32Store8:\n\t\timm, err := c.readMemoryArg(wasm.OpcodeI32Store8Name)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tc.emit(\n\t\t\tnewOperationStore8(imm),\n\t\t)\n\tcase wasm.OpcodeI32Store16:\n\t\timm, err := c.readMemoryArg(wasm.OpcodeI32Store16Name)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tc.emit(\n\t\t\tnewOperationStore16(imm),\n\t\t)\n\tcase wasm.OpcodeI64Store8:\n\t\timm, err := c.readMemoryArg(wasm.OpcodeI64Store8Name)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tc.emit(\n\t\t\tnewOperationStore8(imm),\n\t\t)\n\tcase wasm.OpcodeI64Store16:\n\t\timm, err := c.readMemoryArg(wasm.OpcodeI64Store16Name)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tc.emit(\n\t\t\tnewOperationStore16(imm),\n\t\t)\n\tcase wasm.OpcodeI64Store32:\n\t\timm, err := c.readMemoryArg(wasm.OpcodeI64Store32Name)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tc.emit(\n\t\t\tnewOperationStore32(imm),\n\t\t)\n\tcase wasm.OpcodeMemorySize:\n\t\tc.result.UsesMemory = true\n\t\tc.pc++ // Skip the reserved one byte.\n\t\tc.emit(\n\t\t\tnewOperationMemorySize(),\n\t\t)\n\tcase wasm.OpcodeMemoryGrow:\n\t\tc.result.UsesMemory = true\n\t\tc.pc++ // Skip the reserved one byte.\n\t\tc.emit(\n\t\t\tnewOperationMemoryGrow(),\n\t\t)\n\tcase wasm.OpcodeI32Const:\n\t\tval, num, err := leb128.LoadInt32(c.body[c.pc+1:])\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"reading i32.const value: %v\", err)\n\t\t}\n\t\tc.pc += num\n\t\tc.emit(\n\t\t\tnewOperationConstI32(uint32(val)),\n\t\t)\n\tcase wasm.OpcodeI64Const:\n\t\tval, num, err := leb128.LoadInt64(c.body[c.pc+1:])\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"reading i64.const value: %v\", err)\n\t\t}\n\t\tc.pc += num\n\t\tc.emit(\n\t\t\tnewOperationConstI64(uint64(val)),\n\t\t)\n\tcase wasm.OpcodeF32Const:\n\t\tv := math.Float32frombits(binary.LittleEndian.Uint32(c.body[c.pc+1:]))\n\t\tc.pc += 4\n\t\tc.emit(\n\t\t\tnewOperationConstF32(v),\n\t\t)\n\tcase wasm.OpcodeF64Const:\n\t\tv := math.Float64frombits(binary.LittleEndian.Uint64(c.body[c.pc+1:]))\n\t\tc.pc += 8\n\t\tc.emit(\n\t\t\tnewOperationConstF64(v),\n\t\t)\n\tcase wasm.OpcodeI32Eqz:\n\t\tc.emit(\n\t\t\tnewOperationEqz(unsignedInt32),\n\t\t)\n\tcase wasm.OpcodeI32Eq:\n\t\tc.emit(\n\t\t\tnewOperationEq(unsignedTypeI32),\n\t\t)\n\tcase wasm.OpcodeI32Ne:\n\t\tc.emit(\n\t\t\tnewOperationNe(unsignedTypeI32),\n\t\t)\n\tcase wasm.OpcodeI32LtS:\n\t\tc.emit(\n\t\t\tnewOperationLt(signedTypeInt32),\n\t\t)\n\tcase wasm.OpcodeI32LtU:\n\t\tc.emit(\n\t\t\tnewOperationLt(signedTypeUint32),\n\t\t)\n\tcase wasm.OpcodeI32GtS:\n\t\tc.emit(\n\t\t\tnewOperationGt(signedTypeInt32),\n\t\t)\n\tcase wasm.OpcodeI32GtU:\n\t\tc.emit(\n\t\t\tnewOperationGt(signedTypeUint32),\n\t\t)\n\tcase wasm.OpcodeI32LeS:\n\t\tc.emit(\n\t\t\tnewOperationLe(signedTypeInt32),\n\t\t)\n\tcase wasm.OpcodeI32LeU:\n\t\tc.emit(\n\t\t\tnewOperationLe(signedTypeUint32),\n\t\t)\n\tcase wasm.OpcodeI32GeS:\n\t\tc.emit(\n\t\t\tnewOperationGe(signedTypeInt32),\n\t\t)\n\tcase wasm.OpcodeI32GeU:\n\t\tc.emit(\n\t\t\tnewOperationGe(signedTypeUint32),\n\t\t)\n\tcase wasm.OpcodeI64Eqz:\n\t\tc.emit(\n\t\t\tnewOperationEqz(unsignedInt64),\n\t\t)\n\tcase wasm.OpcodeI64Eq:\n\t\tc.emit(\n\t\t\tnewOperationEq(unsignedTypeI64),\n\t\t)\n\tcase wasm.OpcodeI64Ne:\n\t\tc.emit(\n\t\t\tnewOperationNe(unsignedTypeI64),\n\t\t)\n\tcase wasm.OpcodeI64LtS:\n\t\tc.emit(\n\t\t\tnewOperationLt(signedTypeInt64),\n\t\t)\n\tcase wasm.OpcodeI64LtU:\n\t\tc.emit(\n\t\t\tnewOperationLt(signedTypeUint64),\n\t\t)\n\tcase wasm.OpcodeI64GtS:\n\t\tc.emit(\n\t\t\tnewOperationGt(signedTypeInt64),\n\t\t)\n\tcase wasm.OpcodeI64GtU:\n\t\tc.emit(\n\t\t\tnewOperationGt(signedTypeUint64),\n\t\t)\n\tcase wasm.OpcodeI64LeS:\n\t\tc.emit(\n\t\t\tnewOperationLe(signedTypeInt64),\n\t\t)\n\tcase wasm.OpcodeI64LeU:\n\t\tc.emit(\n\t\t\tnewOperationLe(signedTypeUint64),\n\t\t)\n\tcase wasm.OpcodeI64GeS:\n\t\tc.emit(\n\t\t\tnewOperationGe(signedTypeInt64),\n\t\t)\n\tcase wasm.OpcodeI64GeU:\n\t\tc.emit(\n\t\t\tnewOperationGe(signedTypeUint64),\n\t\t)\n\tcase wasm.OpcodeF32Eq:\n\t\tc.emit(\n\t\t\tnewOperationEq(unsignedTypeF32),\n\t\t)\n\tcase wasm.OpcodeF32Ne:\n\t\tc.emit(\n\t\t\tnewOperationNe(unsignedTypeF32),\n\t\t)\n\tcase wasm.OpcodeF32Lt:\n\t\tc.emit(\n\t\t\tnewOperationLt(signedTypeFloat32),\n\t\t)\n\tcase wasm.OpcodeF32Gt:\n\t\tc.emit(\n\t\t\tnewOperationGt(signedTypeFloat32),\n\t\t)\n\tcase wasm.OpcodeF32Le:\n\t\tc.emit(\n\t\t\tnewOperationLe(signedTypeFloat32),\n\t\t)\n\tcase wasm.OpcodeF32Ge:\n\t\tc.emit(\n\t\t\tnewOperationGe(signedTypeFloat32),\n\t\t)\n\tcase wasm.OpcodeF64Eq:\n\t\tc.emit(\n\t\t\tnewOperationEq(unsignedTypeF64),\n\t\t)\n\tcase wasm.OpcodeF64Ne:\n\t\tc.emit(\n\t\t\tnewOperationNe(unsignedTypeF64),\n\t\t)\n\tcase wasm.OpcodeF64Lt:\n\t\tc.emit(\n\t\t\tnewOperationLt(signedTypeFloat64),\n\t\t)\n\tcase wasm.OpcodeF64Gt:\n\t\tc.emit(\n\t\t\tnewOperationGt(signedTypeFloat64),\n\t\t)\n\tcase wasm.OpcodeF64Le:\n\t\tc.emit(\n\t\t\tnewOperationLe(signedTypeFloat64),\n\t\t)\n\tcase wasm.OpcodeF64Ge:\n\t\tc.emit(\n\t\t\tnewOperationGe(signedTypeFloat64),\n\t\t)\n\tcase wasm.OpcodeI32Clz:\n\t\tc.emit(\n\t\t\tnewOperationClz(unsignedInt32),\n\t\t)\n\tcase wasm.OpcodeI32Ctz:\n\t\tc.emit(\n\t\t\tnewOperationCtz(unsignedInt32),\n\t\t)\n\tcase wasm.OpcodeI32Popcnt:\n\t\tc.emit(\n\t\t\tnewOperationPopcnt(unsignedInt32),\n\t\t)\n\tcase wasm.OpcodeI32Add:\n\t\tc.emit(\n\t\t\tnewOperationAdd(unsignedTypeI32),\n\t\t)\n\tcase wasm.OpcodeI32Sub:\n\t\tc.emit(\n\t\t\tnewOperationSub(unsignedTypeI32),\n\t\t)\n\tcase wasm.OpcodeI32Mul:\n\t\tc.emit(\n\t\t\tnewOperationMul(unsignedTypeI32),\n\t\t)\n\tcase wasm.OpcodeI32DivS:\n\t\tc.emit(\n\t\t\tnewOperationDiv(signedTypeInt32),\n\t\t)\n\tcase wasm.OpcodeI32DivU:\n\t\tc.emit(\n\t\t\tnewOperationDiv(signedTypeUint32),\n\t\t)\n\tcase wasm.OpcodeI32RemS:\n\t\tc.emit(\n\t\t\tnewOperationRem(signedInt32),\n\t\t)\n\tcase wasm.OpcodeI32RemU:\n\t\tc.emit(\n\t\t\tnewOperationRem(signedUint32),\n\t\t)\n\tcase wasm.OpcodeI32And:\n\t\tc.emit(\n\t\t\tnewOperationAnd(unsignedInt32),\n\t\t)\n\tcase wasm.OpcodeI32Or:\n\t\tc.emit(\n\t\t\tnewOperationOr(unsignedInt32),\n\t\t)\n\tcase wasm.OpcodeI32Xor:\n\t\tc.emit(\n\t\t\tnewOperationXor(unsignedInt64),\n\t\t)\n\tcase wasm.OpcodeI32Shl:\n\t\tc.emit(\n\t\t\tnewOperationShl(unsignedInt32),\n\t\t)\n\tcase wasm.OpcodeI32ShrS:\n\t\tc.emit(\n\t\t\tnewOperationShr(signedInt32),\n\t\t)\n\tcase wasm.OpcodeI32ShrU:\n\t\tc.emit(\n\t\t\tnewOperationShr(signedUint32),\n\t\t)\n\tcase wasm.OpcodeI32Rotl:\n\t\tc.emit(\n\t\t\tnewOperationRotl(unsignedInt32),\n\t\t)\n\tcase wasm.OpcodeI32Rotr:\n\t\tc.emit(\n\t\t\tnewOperationRotr(unsignedInt32),\n\t\t)\n\tcase wasm.OpcodeI64Clz:\n\t\tc.emit(\n\t\t\tnewOperationClz(unsignedInt64),\n\t\t)\n\tcase wasm.OpcodeI64Ctz:\n\t\tc.emit(\n\t\t\tnewOperationCtz(unsignedInt64),\n\t\t)\n\tcase wasm.OpcodeI64Popcnt:\n\t\tc.emit(\n\t\t\tnewOperationPopcnt(unsignedInt64),\n\t\t)\n\tcase wasm.OpcodeI64Add:\n\t\tc.emit(\n\t\t\tnewOperationAdd(unsignedTypeI64),\n\t\t)\n\tcase wasm.OpcodeI64Sub:\n\t\tc.emit(\n\t\t\tnewOperationSub(unsignedTypeI64),\n\t\t)\n\tcase wasm.OpcodeI64Mul:\n\t\tc.emit(\n\t\t\tnewOperationMul(unsignedTypeI64),\n\t\t)\n\tcase wasm.OpcodeI64DivS:\n\t\tc.emit(\n\t\t\tnewOperationDiv(signedTypeInt64),\n\t\t)\n\tcase wasm.OpcodeI64DivU:\n\t\tc.emit(\n\t\t\tnewOperationDiv(signedTypeUint64),\n\t\t)\n\tcase wasm.OpcodeI64RemS:\n\t\tc.emit(\n\t\t\tnewOperationRem(signedInt64),\n\t\t)\n\tcase wasm.OpcodeI64RemU:\n\t\tc.emit(\n\t\t\tnewOperationRem(signedUint64),\n\t\t)\n\tcase wasm.OpcodeI64And:\n\t\tc.emit(\n\t\t\tnewOperationAnd(unsignedInt64),\n\t\t)\n\tcase wasm.OpcodeI64Or:\n\t\tc.emit(\n\t\t\tnewOperationOr(unsignedInt64),\n\t\t)\n\tcase wasm.OpcodeI64Xor:\n\t\tc.emit(\n\t\t\tnewOperationXor(unsignedInt64),\n\t\t)\n\tcase wasm.OpcodeI64Shl:\n\t\tc.emit(\n\t\t\tnewOperationShl(unsignedInt64),\n\t\t)\n\tcase wasm.OpcodeI64ShrS:\n\t\tc.emit(\n\t\t\tnewOperationShr(signedInt64),\n\t\t)\n\tcase wasm.OpcodeI64ShrU:\n\t\tc.emit(\n\t\t\tnewOperationShr(signedUint64),\n\t\t)\n\tcase wasm.OpcodeI64Rotl:\n\t\tc.emit(\n\t\t\tnewOperationRotl(unsignedInt64),\n\t\t)\n\tcase wasm.OpcodeI64Rotr:\n\t\tc.emit(\n\t\t\tnewOperationRotr(unsignedInt64),\n\t\t)\n\tcase wasm.OpcodeF32Abs:\n\t\tc.emit(\n\t\t\tnewOperationAbs(f32),\n\t\t)\n\tcase wasm.OpcodeF32Neg:\n\t\tc.emit(\n\t\t\tnewOperationNeg(f32),\n\t\t)\n\tcase wasm.OpcodeF32Ceil:\n\t\tc.emit(\n\t\t\tnewOperationCeil(f32),\n\t\t)\n\tcase wasm.OpcodeF32Floor:\n\t\tc.emit(\n\t\t\tnewOperationFloor(f32),\n\t\t)\n\tcase wasm.OpcodeF32Trunc:\n\t\tc.emit(\n\t\t\tnewOperationTrunc(f32),\n\t\t)\n\tcase wasm.OpcodeF32Nearest:\n\t\tc.emit(\n\t\t\tnewOperationNearest(f32),\n\t\t)\n\tcase wasm.OpcodeF32Sqrt:\n\t\tc.emit(\n\t\t\tnewOperationSqrt(f32),\n\t\t)\n\tcase wasm.OpcodeF32Add:\n\t\tc.emit(\n\t\t\tnewOperationAdd(unsignedTypeF32),\n\t\t)\n\tcase wasm.OpcodeF32Sub:\n\t\tc.emit(\n\t\t\tnewOperationSub(unsignedTypeF32),\n\t\t)\n\tcase wasm.OpcodeF32Mul:\n\t\tc.emit(\n\t\t\tnewOperationMul(unsignedTypeF32),\n\t\t)\n\tcase wasm.OpcodeF32Div:\n\t\tc.emit(\n\t\t\tnewOperationDiv(signedTypeFloat32),\n\t\t)\n\tcase wasm.OpcodeF32Min:\n\t\tc.emit(\n\t\t\tnewOperationMin(f32),\n\t\t)\n\tcase wasm.OpcodeF32Max:\n\t\tc.emit(\n\t\t\tnewOperationMax(f32),\n\t\t)\n\tcase wasm.OpcodeF32Copysign:\n\t\tc.emit(\n\t\t\tnewOperationCopysign(f32),\n\t\t)\n\tcase wasm.OpcodeF64Abs:\n\t\tc.emit(\n\t\t\tnewOperationAbs(f64),\n\t\t)\n\tcase wasm.OpcodeF64Neg:\n\t\tc.emit(\n\t\t\tnewOperationNeg(f64),\n\t\t)\n\tcase wasm.OpcodeF64Ceil:\n\t\tc.emit(\n\t\t\tnewOperationCeil(f64),\n\t\t)\n\tcase wasm.OpcodeF64Floor:\n\t\tc.emit(\n\t\t\tnewOperationFloor(f64),\n\t\t)\n\tcase wasm.OpcodeF64Trunc:\n\t\tc.emit(\n\t\t\tnewOperationTrunc(f64),\n\t\t)\n\tcase wasm.OpcodeF64Nearest:\n\t\tc.emit(\n\t\t\tnewOperationNearest(f64),\n\t\t)\n\tcase wasm.OpcodeF64Sqrt:\n\t\tc.emit(\n\t\t\tnewOperationSqrt(f64),\n\t\t)\n\tcase wasm.OpcodeF64Add:\n\t\tc.emit(\n\t\t\tnewOperationAdd(unsignedTypeF64),\n\t\t)\n\tcase wasm.OpcodeF64Sub:\n\t\tc.emit(\n\t\t\tnewOperationSub(unsignedTypeF64),\n\t\t)\n\tcase wasm.OpcodeF64Mul:\n\t\tc.emit(\n\t\t\tnewOperationMul(unsignedTypeF64),\n\t\t)\n\tcase wasm.OpcodeF64Div:\n\t\tc.emit(\n\t\t\tnewOperationDiv(signedTypeFloat64),\n\t\t)\n\tcase wasm.OpcodeF64Min:\n\t\tc.emit(\n\t\t\tnewOperationMin(f64),\n\t\t)\n\tcase wasm.OpcodeF64Max:\n\t\tc.emit(\n\t\t\tnewOperationMax(f64),\n\t\t)\n\tcase wasm.OpcodeF64Copysign:\n\t\tc.emit(\n\t\t\tnewOperationCopysign(f64),\n\t\t)\n\tcase wasm.OpcodeI32WrapI64:\n\t\tc.emit(\n\t\t\tnewOperationI32WrapFromI64(),\n\t\t)\n\tcase wasm.OpcodeI32TruncF32S:\n\t\tc.emit(\n\t\t\tnewOperationITruncFromF(f32, signedInt32, false),\n\t\t)\n\tcase wasm.OpcodeI32TruncF32U:\n\t\tc.emit(\n\t\t\tnewOperationITruncFromF(f32, signedUint32, false),\n\t\t)\n\tcase wasm.OpcodeI32TruncF64S:\n\t\tc.emit(\n\t\t\tnewOperationITruncFromF(f64, signedInt32, false),\n\t\t)\n\tcase wasm.OpcodeI32TruncF64U:\n\t\tc.emit(\n\t\t\tnewOperationITruncFromF(f64, signedUint32, false),\n\t\t)\n\tcase wasm.OpcodeI64ExtendI32S:\n\t\tc.emit(\n\t\t\tnewOperationExtend(true),\n\t\t)\n\tcase wasm.OpcodeI64ExtendI32U:\n\t\tc.emit(\n\t\t\tnewOperationExtend(false),\n\t\t)\n\tcase wasm.OpcodeI64TruncF32S:\n\t\tc.emit(\n\t\t\tnewOperationITruncFromF(f32, signedInt64, false),\n\t\t)\n\tcase wasm.OpcodeI64TruncF32U:\n\t\tc.emit(\n\t\t\tnewOperationITruncFromF(f32, signedUint64, false),\n\t\t)\n\tcase wasm.OpcodeI64TruncF64S:\n\t\tc.emit(\n\t\t\tnewOperationITruncFromF(f64, signedInt64, false),\n\t\t)\n\tcase wasm.OpcodeI64TruncF64U:\n\t\tc.emit(\n\t\t\tnewOperationITruncFromF(f64, signedUint64, false),\n\t\t)\n\tcase wasm.OpcodeF32ConvertI32S:\n\t\tc.emit(\n\t\t\tnewOperationFConvertFromI(signedInt32, f32),\n\t\t)\n\tcase wasm.OpcodeF32ConvertI32U:\n\t\tc.emit(\n\t\t\tnewOperationFConvertFromI(signedUint32, f32),\n\t\t)\n\tcase wasm.OpcodeF32ConvertI64S:\n\t\tc.emit(\n\t\t\tnewOperationFConvertFromI(signedInt64, f32),\n\t\t)\n\tcase wasm.OpcodeF32ConvertI64U:\n\t\tc.emit(\n\t\t\tnewOperationFConvertFromI(signedUint64, f32),\n\t\t)\n\tcase wasm.OpcodeF32DemoteF64:\n\t\tc.emit(\n\t\t\tnewOperationF32DemoteFromF64(),\n\t\t)\n\tcase wasm.OpcodeF64ConvertI32S:\n\t\tc.emit(\n\t\t\tnewOperationFConvertFromI(signedInt32, f64),\n\t\t)\n\tcase wasm.OpcodeF64ConvertI32U:\n\t\tc.emit(\n\t\t\tnewOperationFConvertFromI(signedUint32, f64),\n\t\t)\n\tcase wasm.OpcodeF64ConvertI64S:\n\t\tc.emit(\n\t\t\tnewOperationFConvertFromI(signedInt64, f64),\n\t\t)\n\tcase wasm.OpcodeF64ConvertI64U:\n\t\tc.emit(\n\t\t\tnewOperationFConvertFromI(signedUint64, f64),\n\t\t)\n\tcase wasm.OpcodeF64PromoteF32:\n\t\tc.emit(\n\t\t\tnewOperationF64PromoteFromF32(),\n\t\t)\n\tcase wasm.OpcodeI32ReinterpretF32:\n\t\tc.emit(\n\t\t\tnewOperationI32ReinterpretFromF32(),\n\t\t)\n\tcase wasm.OpcodeI64ReinterpretF64:\n\t\tc.emit(\n\t\t\tnewOperationI64ReinterpretFromF64(),\n\t\t)\n\tcase wasm.OpcodeF32ReinterpretI32:\n\t\tc.emit(\n\t\t\tnewOperationF32ReinterpretFromI32(),\n\t\t)\n\tcase wasm.OpcodeF64ReinterpretI64:\n\t\tc.emit(\n\t\t\tnewOperationF64ReinterpretFromI64(),\n\t\t)\n\tcase wasm.OpcodeI32Extend8S:\n\t\tc.emit(\n\t\t\tnewOperationSignExtend32From8(),\n\t\t)\n\tcase wasm.OpcodeI32Extend16S:\n\t\tc.emit(\n\t\t\tnewOperationSignExtend32From16(),\n\t\t)\n\tcase wasm.OpcodeI64Extend8S:\n\t\tc.emit(\n\t\t\tnewOperationSignExtend64From8(),\n\t\t)\n\tcase wasm.OpcodeI64Extend16S:\n\t\tc.emit(\n\t\t\tnewOperationSignExtend64From16(),\n\t\t)\n\tcase wasm.OpcodeI64Extend32S:\n\t\tc.emit(\n\t\t\tnewOperationSignExtend64From32(),\n\t\t)\n\tcase wasm.OpcodeRefFunc:\n\t\tc.pc++\n\t\tindex, num, err := leb128.LoadUint32(c.body[c.pc:])\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"failed to read function index for ref.func: %v\", err)\n\t\t}\n\t\tc.pc += num - 1\n\t\tc.emit(\n\t\t\tnewOperationRefFunc(index),\n\t\t)\n\tcase wasm.OpcodeRefNull:\n\t\tc.pc++ // Skip the type of reftype as every ref value is opaque pointer.\n\t\tc.emit(\n\t\t\tnewOperationConstI64(0),\n\t\t)\n\tcase wasm.OpcodeRefIsNull:\n\t\t// Simply compare the opaque pointer (i64) with zero.\n\t\tc.emit(\n\t\t\tnewOperationEqz(unsignedInt64),\n\t\t)\n\tcase wasm.OpcodeTableGet:\n\t\tc.pc++\n\t\ttableIndex, num, err := leb128.LoadUint32(c.body[c.pc:])\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"failed to read function index for table.get: %v\", err)\n\t\t}\n\t\tc.pc += num - 1\n\t\tc.emit(\n\t\t\tnewOperationTableGet(tableIndex),\n\t\t)\n\tcase wasm.OpcodeTableSet:\n\t\tc.pc++\n\t\ttableIndex, num, err := leb128.LoadUint32(c.body[c.pc:])\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"failed to read function index for table.set: %v\", err)\n\t\t}\n\t\tc.pc += num - 1\n\t\tc.emit(\n\t\t\tnewOperationTableSet(tableIndex),\n\t\t)\n\tcase wasm.OpcodeMiscPrefix:\n\t\tc.pc++\n\t\t// A misc opcode is encoded as an unsigned variable 32-bit integer.\n\t\tmiscOp, num, err := leb128.LoadUint32(c.body[c.pc:])\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"failed to read misc opcode: %v\", err)\n\t\t}\n\t\tc.pc += num - 1\n\t\tswitch byte(miscOp) {\n\t\tcase wasm.OpcodeMiscI32TruncSatF32S:\n\t\t\tc.emit(\n\t\t\t\tnewOperationITruncFromF(f32, signedInt32, true),\n\t\t\t)\n\t\tcase wasm.OpcodeMiscI32TruncSatF32U:\n\t\t\tc.emit(\n\t\t\t\tnewOperationITruncFromF(f32, signedUint32, true),\n\t\t\t)\n\t\tcase wasm.OpcodeMiscI32TruncSatF64S:\n\t\t\tc.emit(\n\t\t\t\tnewOperationITruncFromF(f64, signedInt32, true),\n\t\t\t)\n\t\tcase wasm.OpcodeMiscI32TruncSatF64U:\n\t\t\tc.emit(\n\t\t\t\tnewOperationITruncFromF(f64, signedUint32, true),\n\t\t\t)\n\t\tcase wasm.OpcodeMiscI64TruncSatF32S:\n\t\t\tc.emit(\n\t\t\t\tnewOperationITruncFromF(f32, signedInt64, true),\n\t\t\t)\n\t\tcase wasm.OpcodeMiscI64TruncSatF32U:\n\t\t\tc.emit(\n\t\t\t\tnewOperationITruncFromF(f32, signedUint64, true),\n\t\t\t)\n\t\tcase wasm.OpcodeMiscI64TruncSatF64S:\n\t\t\tc.emit(\n\t\t\t\tnewOperationITruncFromF(f64, signedInt64, true),\n\t\t\t)\n\t\tcase wasm.OpcodeMiscI64TruncSatF64U:\n\t\t\tc.emit(\n\t\t\t\tnewOperationITruncFromF(f64, signedUint64, true),\n\t\t\t)\n\t\tcase wasm.OpcodeMiscMemoryInit:\n\t\t\tc.result.UsesMemory = true\n\t\t\tdataIndex, num, err := leb128.LoadUint32(c.body[c.pc+1:])\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"reading i32.const value: %v\", err)\n\t\t\t}\n\t\t\tc.pc += num + 1 // +1 to skip the memory index which is fixed to zero.\n\t\t\tc.emit(\n\t\t\t\tnewOperationMemoryInit(dataIndex),\n\t\t\t)\n\t\tcase wasm.OpcodeMiscDataDrop:\n\t\t\tdataIndex, num, err := leb128.LoadUint32(c.body[c.pc+1:])\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"reading i32.const value: %v\", err)\n\t\t\t}\n\t\t\tc.pc += num\n\t\t\tc.emit(\n\t\t\t\tnewOperationDataDrop(dataIndex),\n\t\t\t)\n\t\tcase wasm.OpcodeMiscMemoryCopy:\n\t\t\tc.result.UsesMemory = true\n\t\t\tc.pc += 2 // +2 to skip two memory indexes which are fixed to zero.\n\t\t\tc.emit(\n\t\t\t\tnewOperationMemoryCopy(),\n\t\t\t)\n\t\tcase wasm.OpcodeMiscMemoryFill:\n\t\t\tc.result.UsesMemory = true\n\t\t\tc.pc += 1 // +1 to skip the memory index which is fixed to zero.\n\t\t\tc.emit(\n\t\t\t\tnewOperationMemoryFill(),\n\t\t\t)\n\t\tcase wasm.OpcodeMiscTableInit:\n\t\t\telemIndex, num, err := leb128.LoadUint32(c.body[c.pc+1:])\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"reading i32.const value: %v\", err)\n\t\t\t}\n\t\t\tc.pc += num\n\t\t\t// Read table index which is fixed to zero currently.\n\t\t\ttableIndex, num, err := leb128.LoadUint32(c.body[c.pc+1:])\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"reading i32.const value: %v\", err)\n\t\t\t}\n\t\t\tc.pc += num\n\t\t\tc.emit(\n\t\t\t\tnewOperationTableInit(elemIndex, tableIndex),\n\t\t\t)\n\t\tcase wasm.OpcodeMiscElemDrop:\n\t\t\telemIndex, num, err := leb128.LoadUint32(c.body[c.pc+1:])\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"reading i32.const value: %v\", err)\n\t\t\t}\n\t\t\tc.pc += num\n\t\t\tc.emit(\n\t\t\t\tnewOperationElemDrop(elemIndex),\n\t\t\t)\n\t\tcase wasm.OpcodeMiscTableCopy:\n\t\t\t// Read the source table inde.g.\n\t\t\tdst, num, err := leb128.LoadUint32(c.body[c.pc+1:])\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"reading i32.const value: %v\", err)\n\t\t\t}\n\t\t\tc.pc += num\n\t\t\t// Read the destination table inde.g.\n\t\t\tsrc, num, err := leb128.LoadUint32(c.body[c.pc+1:])\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"reading i32.const value: %v\", err)\n\t\t\t}\n\t\t\tc.pc += num\n\t\t\tc.emit(\n\t\t\t\tnewOperationTableCopy(src, dst),\n\t\t\t)\n\t\tcase wasm.OpcodeMiscTableGrow:\n\t\t\t// Read the source table inde.g.\n\t\t\ttableIndex, num, err := leb128.LoadUint32(c.body[c.pc+1:])\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"reading i32.const value: %v\", err)\n\t\t\t}\n\t\t\tc.pc += num\n\t\t\tc.emit(\n\t\t\t\tnewOperationTableGrow(tableIndex),\n\t\t\t)\n\t\tcase wasm.OpcodeMiscTableSize:\n\t\t\t// Read the source table inde.g.\n\t\t\ttableIndex, num, err := leb128.LoadUint32(c.body[c.pc+1:])\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"reading i32.const value: %v\", err)\n\t\t\t}\n\t\t\tc.pc += num\n\t\t\tc.emit(\n\t\t\t\tnewOperationTableSize(tableIndex),\n\t\t\t)\n\t\tcase wasm.OpcodeMiscTableFill:\n\t\t\t// Read the source table index.\n\t\t\ttableIndex, num, err := leb128.LoadUint32(c.body[c.pc+1:])\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"reading i32.const value: %v\", err)\n\t\t\t}\n\t\t\tc.pc += num\n\t\t\tc.emit(\n\t\t\t\tnewOperationTableFill(tableIndex),\n\t\t\t)\n\t\tdefault:\n\t\t\treturn fmt.Errorf(\"unsupported misc instruction in interpreterir: 0x%x\", op)\n\t\t}\n\tcase wasm.OpcodeVecPrefix:\n\t\tc.pc++\n\t\tswitch vecOp := c.body[c.pc]; vecOp {\n\t\tcase wasm.OpcodeVecV128Const:\n\t\t\tc.pc++\n\t\t\tlo := binary.LittleEndian.Uint64(c.body[c.pc : c.pc+8])\n\t\t\tc.pc += 8\n\t\t\thi := binary.LittleEndian.Uint64(c.body[c.pc : c.pc+8])\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Const(lo, hi),\n\t\t\t)\n\t\t\tc.pc += 7\n\t\tcase wasm.OpcodeVecV128Load:\n\t\t\targ, err := c.readMemoryArg(wasm.OpcodeI32LoadName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Load(v128LoadType128, arg),\n\t\t\t)\n\t\tcase wasm.OpcodeVecV128Load8x8s:\n\t\t\targ, err := c.readMemoryArg(wasm.OpcodeVecV128Load8x8SName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Load(v128LoadType8x8s, arg),\n\t\t\t)\n\t\tcase wasm.OpcodeVecV128Load8x8u:\n\t\t\targ, err := c.readMemoryArg(wasm.OpcodeVecV128Load8x8UName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Load(v128LoadType8x8u, arg),\n\t\t\t)\n\t\tcase wasm.OpcodeVecV128Load16x4s:\n\t\t\targ, err := c.readMemoryArg(wasm.OpcodeVecV128Load16x4SName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Load(v128LoadType16x4s, arg),\n\t\t\t)\n\t\tcase wasm.OpcodeVecV128Load16x4u:\n\t\t\targ, err := c.readMemoryArg(wasm.OpcodeVecV128Load16x4UName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Load(v128LoadType16x4u, arg),\n\t\t\t)\n\t\tcase wasm.OpcodeVecV128Load32x2s:\n\t\t\targ, err := c.readMemoryArg(wasm.OpcodeVecV128Load32x2SName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Load(v128LoadType32x2s, arg),\n\t\t\t)\n\t\tcase wasm.OpcodeVecV128Load32x2u:\n\t\t\targ, err := c.readMemoryArg(wasm.OpcodeVecV128Load32x2UName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Load(v128LoadType32x2u, arg),\n\t\t\t)\n\t\tcase wasm.OpcodeVecV128Load8Splat:\n\t\t\targ, err := c.readMemoryArg(wasm.OpcodeVecV128Load8SplatName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Load(v128LoadType8Splat, arg),\n\t\t\t)\n\t\tcase wasm.OpcodeVecV128Load16Splat:\n\t\t\targ, err := c.readMemoryArg(wasm.OpcodeVecV128Load16SplatName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Load(v128LoadType16Splat, arg),\n\t\t\t)\n\t\tcase wasm.OpcodeVecV128Load32Splat:\n\t\t\targ, err := c.readMemoryArg(wasm.OpcodeVecV128Load32SplatName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Load(v128LoadType32Splat, arg),\n\t\t\t)\n\t\tcase wasm.OpcodeVecV128Load64Splat:\n\t\t\targ, err := c.readMemoryArg(wasm.OpcodeVecV128Load64SplatName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Load(v128LoadType64Splat, arg),\n\t\t\t)\n\t\tcase wasm.OpcodeVecV128Load32zero:\n\t\t\targ, err := c.readMemoryArg(wasm.OpcodeVecV128Load32zeroName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Load(v128LoadType32zero, arg),\n\t\t\t)\n\t\tcase wasm.OpcodeVecV128Load64zero:\n\t\t\targ, err := c.readMemoryArg(wasm.OpcodeVecV128Load64zeroName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Load(v128LoadType64zero, arg),\n\t\t\t)\n\t\tcase wasm.OpcodeVecV128Load8Lane:\n\t\t\targ, err := c.readMemoryArg(wasm.OpcodeVecV128Load8LaneName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.pc++\n\t\t\tlaneIndex := c.body[c.pc]\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128LoadLane(laneIndex, 8, arg),\n\t\t\t)\n\t\tcase wasm.OpcodeVecV128Load16Lane:\n\t\t\targ, err := c.readMemoryArg(wasm.OpcodeVecV128Load16LaneName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.pc++\n\t\t\tlaneIndex := c.body[c.pc]\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128LoadLane(laneIndex, 16, arg),\n\t\t\t)\n\t\tcase wasm.OpcodeVecV128Load32Lane:\n\t\t\targ, err := c.readMemoryArg(wasm.OpcodeVecV128Load32LaneName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.pc++\n\t\t\tlaneIndex := c.body[c.pc]\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128LoadLane(laneIndex, 32, arg),\n\t\t\t)\n\t\tcase wasm.OpcodeVecV128Load64Lane:\n\t\t\targ, err := c.readMemoryArg(wasm.OpcodeVecV128Load64LaneName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.pc++\n\t\t\tlaneIndex := c.body[c.pc]\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128LoadLane(laneIndex, 64, arg),\n\t\t\t)\n\t\tcase wasm.OpcodeVecV128Store:\n\t\t\targ, err := c.readMemoryArg(wasm.OpcodeVecV128StoreName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Store(arg),\n\t\t\t)\n\t\tcase wasm.OpcodeVecV128Store8Lane:\n\t\t\targ, err := c.readMemoryArg(wasm.OpcodeVecV128Store8LaneName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.pc++\n\t\t\tlaneIndex := c.body[c.pc]\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128StoreLane(laneIndex, 8, arg),\n\t\t\t)\n\t\tcase wasm.OpcodeVecV128Store16Lane:\n\t\t\targ, err := c.readMemoryArg(wasm.OpcodeVecV128Store16LaneName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.pc++\n\t\t\tlaneIndex := c.body[c.pc]\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128StoreLane(laneIndex, 16, arg),\n\t\t\t)\n\t\tcase wasm.OpcodeVecV128Store32Lane:\n\t\t\targ, err := c.readMemoryArg(wasm.OpcodeVecV128Store32LaneName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.pc++\n\t\t\tlaneIndex := c.body[c.pc]\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128StoreLane(laneIndex, 32, arg),\n\t\t\t)\n\t\tcase wasm.OpcodeVecV128Store64Lane:\n\t\t\targ, err := c.readMemoryArg(wasm.OpcodeVecV128Store64LaneName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.pc++\n\t\t\tlaneIndex := c.body[c.pc]\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128StoreLane(laneIndex, 64, arg),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI8x16ExtractLaneS:\n\t\t\tc.pc++\n\t\t\tlaneIndex := c.body[c.pc]\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128ExtractLane(laneIndex, true, shapeI8x16),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI8x16ExtractLaneU:\n\t\t\tc.pc++\n\t\t\tlaneIndex := c.body[c.pc]\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128ExtractLane(laneIndex, false, shapeI8x16),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI16x8ExtractLaneS:\n\t\t\tc.pc++\n\t\t\tlaneIndex := c.body[c.pc]\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128ExtractLane(laneIndex, true, shapeI16x8),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI16x8ExtractLaneU:\n\t\t\tc.pc++\n\t\t\tlaneIndex := c.body[c.pc]\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128ExtractLane(laneIndex, false, shapeI16x8),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI32x4ExtractLane:\n\t\t\tc.pc++\n\t\t\tlaneIndex := c.body[c.pc]\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128ExtractLane(laneIndex, false, shapeI32x4),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI64x2ExtractLane:\n\t\t\tc.pc++\n\t\t\tlaneIndex := c.body[c.pc]\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128ExtractLane(laneIndex, false, shapeI64x2),\n\t\t\t)\n\t\tcase wasm.OpcodeVecF32x4ExtractLane:\n\t\t\tc.pc++\n\t\t\tlaneIndex := c.body[c.pc]\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128ExtractLane(laneIndex, false, shapeF32x4),\n\t\t\t)\n\t\tcase wasm.OpcodeVecF64x2ExtractLane:\n\t\t\tc.pc++\n\t\t\tlaneIndex := c.body[c.pc]\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128ExtractLane(laneIndex, false, shapeF64x2),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI8x16ReplaceLane:\n\t\t\tc.pc++\n\t\t\tlaneIndex := c.body[c.pc]\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128ReplaceLane(laneIndex, shapeI8x16),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI16x8ReplaceLane:\n\t\t\tc.pc++\n\t\t\tlaneIndex := c.body[c.pc]\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128ReplaceLane(laneIndex, shapeI16x8),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI32x4ReplaceLane:\n\t\t\tc.pc++\n\t\t\tlaneIndex := c.body[c.pc]\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128ReplaceLane(laneIndex, shapeI32x4),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI64x2ReplaceLane:\n\t\t\tc.pc++\n\t\t\tlaneIndex := c.body[c.pc]\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128ReplaceLane(laneIndex, shapeI64x2),\n\t\t\t)\n\t\tcase wasm.OpcodeVecF32x4ReplaceLane:\n\t\t\tc.pc++\n\t\t\tlaneIndex := c.body[c.pc]\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128ReplaceLane(laneIndex, shapeF32x4),\n\t\t\t)\n\t\tcase wasm.OpcodeVecF64x2ReplaceLane:\n\t\t\tc.pc++\n\t\t\tlaneIndex := c.body[c.pc]\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128ReplaceLane(laneIndex, shapeF64x2),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI8x16Splat:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Splat(shapeI8x16),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI16x8Splat:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Splat(shapeI16x8),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI32x4Splat:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Splat(shapeI32x4),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI64x2Splat:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Splat(shapeI64x2),\n\t\t\t)\n\t\tcase wasm.OpcodeVecF32x4Splat:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Splat(shapeF32x4),\n\t\t\t)\n\t\tcase wasm.OpcodeVecF64x2Splat:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Splat(shapeF64x2),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI8x16Swizzle:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Swizzle(),\n\t\t\t)\n\t\tcase wasm.OpcodeVecV128i8x16Shuffle:\n\t\t\tc.pc++\n\t\t\tlanes := make([]uint64, 16)\n\t\t\tfor i := uint64(0); i < 16; i++ {\n\t\t\t\tlanes[i] = uint64(c.body[c.pc+i])\n\t\t\t}\n\t\t\top := newOperationV128Shuffle(lanes)\n\t\t\tc.emit(op)\n\t\t\tc.pc += 15\n\t\tcase wasm.OpcodeVecV128AnyTrue:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128AnyTrue(),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI8x16AllTrue:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128AllTrue(shapeI8x16),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI16x8AllTrue:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128AllTrue(shapeI16x8),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI32x4AllTrue:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128AllTrue(shapeI32x4),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI64x2AllTrue:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128AllTrue(shapeI64x2),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI8x16BitMask:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128BitMask(shapeI8x16),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI16x8BitMask:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128BitMask(shapeI16x8),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI32x4BitMask:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128BitMask(shapeI32x4),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI64x2BitMask:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128BitMask(shapeI64x2),\n\t\t\t)\n\t\tcase wasm.OpcodeVecV128And:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128And(),\n\t\t\t)\n\t\tcase wasm.OpcodeVecV128Not:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Not(),\n\t\t\t)\n\t\tcase wasm.OpcodeVecV128Or:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Or(),\n\t\t\t)\n\t\tcase wasm.OpcodeVecV128Xor:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Xor(),\n\t\t\t)\n\t\tcase wasm.OpcodeVecV128Bitselect:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Bitselect(),\n\t\t\t)\n\t\tcase wasm.OpcodeVecV128AndNot:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128AndNot(),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI8x16Shl:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Shl(shapeI8x16),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI8x16ShrS:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Shr(shapeI8x16, true),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI8x16ShrU:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Shr(shapeI8x16, false),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI16x8Shl:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Shl(shapeI16x8),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI16x8ShrS:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Shr(shapeI16x8, true),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI16x8ShrU:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Shr(shapeI16x8, false),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI32x4Shl:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Shl(shapeI32x4),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI32x4ShrS:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Shr(shapeI32x4, true),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI32x4ShrU:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Shr(shapeI32x4, false),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI64x2Shl:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Shl(shapeI64x2),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI64x2ShrS:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Shr(shapeI64x2, true),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI64x2ShrU:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Shr(shapeI64x2, false),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI8x16Eq:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Cmp(v128CmpTypeI8x16Eq),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI8x16Ne:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Cmp(v128CmpTypeI8x16Ne),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI8x16LtS:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Cmp(v128CmpTypeI8x16LtS),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI8x16LtU:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Cmp(v128CmpTypeI8x16LtU),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI8x16GtS:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Cmp(v128CmpTypeI8x16GtS),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI8x16GtU:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Cmp(v128CmpTypeI8x16GtU),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI8x16LeS:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Cmp(v128CmpTypeI8x16LeS),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI8x16LeU:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Cmp(v128CmpTypeI8x16LeU),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI8x16GeS:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Cmp(v128CmpTypeI8x16GeS),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI8x16GeU:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Cmp(v128CmpTypeI8x16GeU),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI16x8Eq:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Cmp(v128CmpTypeI16x8Eq),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI16x8Ne:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Cmp(v128CmpTypeI16x8Ne),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI16x8LtS:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Cmp(v128CmpTypeI16x8LtS),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI16x8LtU:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Cmp(v128CmpTypeI16x8LtU),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI16x8GtS:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Cmp(v128CmpTypeI16x8GtS),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI16x8GtU:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Cmp(v128CmpTypeI16x8GtU),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI16x8LeS:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Cmp(v128CmpTypeI16x8LeS),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI16x8LeU:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Cmp(v128CmpTypeI16x8LeU),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI16x8GeS:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Cmp(v128CmpTypeI16x8GeS),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI16x8GeU:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Cmp(v128CmpTypeI16x8GeU),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI32x4Eq:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Cmp(v128CmpTypeI32x4Eq),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI32x4Ne:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Cmp(v128CmpTypeI32x4Ne),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI32x4LtS:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Cmp(v128CmpTypeI32x4LtS),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI32x4LtU:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Cmp(v128CmpTypeI32x4LtU),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI32x4GtS:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Cmp(v128CmpTypeI32x4GtS),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI32x4GtU:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Cmp(v128CmpTypeI32x4GtU),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI32x4LeS:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Cmp(v128CmpTypeI32x4LeS),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI32x4LeU:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Cmp(v128CmpTypeI32x4LeU),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI32x4GeS:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Cmp(v128CmpTypeI32x4GeS),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI32x4GeU:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Cmp(v128CmpTypeI32x4GeU),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI64x2Eq:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Cmp(v128CmpTypeI64x2Eq),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI64x2Ne:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Cmp(v128CmpTypeI64x2Ne),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI64x2LtS:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Cmp(v128CmpTypeI64x2LtS),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI64x2GtS:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Cmp(v128CmpTypeI64x2GtS),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI64x2LeS:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Cmp(v128CmpTypeI64x2LeS),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI64x2GeS:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Cmp(v128CmpTypeI64x2GeS),\n\t\t\t)\n\t\tcase wasm.OpcodeVecF32x4Eq:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Cmp(v128CmpTypeF32x4Eq),\n\t\t\t)\n\t\tcase wasm.OpcodeVecF32x4Ne:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Cmp(v128CmpTypeF32x4Ne),\n\t\t\t)\n\t\tcase wasm.OpcodeVecF32x4Lt:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Cmp(v128CmpTypeF32x4Lt),\n\t\t\t)\n\t\tcase wasm.OpcodeVecF32x4Gt:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Cmp(v128CmpTypeF32x4Gt),\n\t\t\t)\n\t\tcase wasm.OpcodeVecF32x4Le:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Cmp(v128CmpTypeF32x4Le),\n\t\t\t)\n\t\tcase wasm.OpcodeVecF32x4Ge:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Cmp(v128CmpTypeF32x4Ge),\n\t\t\t)\n\t\tcase wasm.OpcodeVecF64x2Eq:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Cmp(v128CmpTypeF64x2Eq),\n\t\t\t)\n\t\tcase wasm.OpcodeVecF64x2Ne:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Cmp(v128CmpTypeF64x2Ne),\n\t\t\t)\n\t\tcase wasm.OpcodeVecF64x2Lt:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Cmp(v128CmpTypeF64x2Lt),\n\t\t\t)\n\t\tcase wasm.OpcodeVecF64x2Gt:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Cmp(v128CmpTypeF64x2Gt),\n\t\t\t)\n\t\tcase wasm.OpcodeVecF64x2Le:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Cmp(v128CmpTypeF64x2Le),\n\t\t\t)\n\t\tcase wasm.OpcodeVecF64x2Ge:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Cmp(v128CmpTypeF64x2Ge),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI8x16Neg:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Neg(shapeI8x16),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI16x8Neg:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Neg(shapeI16x8),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI32x4Neg:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Neg(shapeI32x4),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI64x2Neg:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Neg(shapeI64x2),\n\t\t\t)\n\t\tcase wasm.OpcodeVecF32x4Neg:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Neg(shapeF32x4),\n\t\t\t)\n\t\tcase wasm.OpcodeVecF64x2Neg:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Neg(shapeF64x2),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI8x16Add:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Add(shapeI8x16),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI16x8Add:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Add(shapeI16x8),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI32x4Add:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Add(shapeI32x4),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI64x2Add:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Add(shapeI64x2),\n\t\t\t)\n\t\tcase wasm.OpcodeVecF32x4Add:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Add(shapeF32x4),\n\t\t\t)\n\t\tcase wasm.OpcodeVecF64x2Add:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Add(shapeF64x2),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI8x16Sub:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Sub(shapeI8x16),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI16x8Sub:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Sub(shapeI16x8),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI32x4Sub:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Sub(shapeI32x4),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI64x2Sub:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Sub(shapeI64x2),\n\t\t\t)\n\t\tcase wasm.OpcodeVecF32x4Sub:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Sub(shapeF32x4),\n\t\t\t)\n\t\tcase wasm.OpcodeVecF64x2Sub:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Sub(shapeF64x2),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI8x16AddSatS:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128AddSat(shapeI8x16, true),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI8x16AddSatU:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128AddSat(shapeI8x16, false),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI16x8AddSatS:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128AddSat(shapeI16x8, true),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI16x8AddSatU:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128AddSat(shapeI16x8, false),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI8x16SubSatS:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128SubSat(shapeI8x16, true),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI8x16SubSatU:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128SubSat(shapeI8x16, false),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI16x8SubSatS:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128SubSat(shapeI16x8, true),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI16x8SubSatU:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128SubSat(shapeI16x8, false),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI16x8Mul:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Mul(shapeI16x8),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI32x4Mul:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Mul(shapeI32x4),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI64x2Mul:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Mul(shapeI64x2),\n\t\t\t)\n\t\tcase wasm.OpcodeVecF32x4Mul:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Mul(shapeF32x4),\n\t\t\t)\n\t\tcase wasm.OpcodeVecF64x2Mul:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Mul(shapeF64x2),\n\t\t\t)\n\t\tcase wasm.OpcodeVecF32x4Sqrt:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Sqrt(shapeF32x4),\n\t\t\t)\n\t\tcase wasm.OpcodeVecF64x2Sqrt:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Sqrt(shapeF64x2),\n\t\t\t)\n\t\tcase wasm.OpcodeVecF32x4Div:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Div(shapeF32x4),\n\t\t\t)\n\t\tcase wasm.OpcodeVecF64x2Div:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Div(shapeF64x2),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI8x16Abs:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Abs(shapeI8x16),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI8x16Popcnt:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Popcnt(shapeI8x16),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI16x8Abs:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Abs(shapeI16x8),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI32x4Abs:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Abs(shapeI32x4),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI64x2Abs:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Abs(shapeI64x2),\n\t\t\t)\n\t\tcase wasm.OpcodeVecF32x4Abs:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Abs(shapeF32x4),\n\t\t\t)\n\t\tcase wasm.OpcodeVecF64x2Abs:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Abs(shapeF64x2),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI8x16MinS:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Min(shapeI8x16, true),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI8x16MinU:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Min(shapeI8x16, false),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI8x16MaxS:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Max(shapeI8x16, true),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI8x16MaxU:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Max(shapeI8x16, false),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI8x16AvgrU:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128AvgrU(shapeI8x16),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI16x8MinS:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Min(shapeI16x8, true),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI16x8MinU:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Min(shapeI16x8, false),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI16x8MaxS:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Max(shapeI16x8, true),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI16x8MaxU:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Max(shapeI16x8, false),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI16x8AvgrU:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128AvgrU(shapeI16x8),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI32x4MinS:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Min(shapeI32x4, true),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI32x4MinU:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Min(shapeI32x4, false),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI32x4MaxS:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Max(shapeI32x4, true),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI32x4MaxU:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Max(shapeI32x4, false),\n\t\t\t)\n\t\tcase wasm.OpcodeVecF32x4Min:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Min(shapeF32x4, false),\n\t\t\t)\n\t\tcase wasm.OpcodeVecF32x4Max:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Max(shapeF32x4, false),\n\t\t\t)\n\t\tcase wasm.OpcodeVecF64x2Min:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Min(shapeF64x2, false),\n\t\t\t)\n\t\tcase wasm.OpcodeVecF64x2Max:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Max(shapeF64x2, false),\n\t\t\t)\n\t\tcase wasm.OpcodeVecF32x4Pmin:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Pmin(shapeF32x4),\n\t\t\t)\n\t\tcase wasm.OpcodeVecF32x4Pmax:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Pmax(shapeF32x4),\n\t\t\t)\n\t\tcase wasm.OpcodeVecF64x2Pmin:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Pmin(shapeF64x2),\n\t\t\t)\n\t\tcase wasm.OpcodeVecF64x2Pmax:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Pmax(shapeF64x2),\n\t\t\t)\n\t\tcase wasm.OpcodeVecF32x4Ceil:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Ceil(shapeF32x4),\n\t\t\t)\n\t\tcase wasm.OpcodeVecF32x4Floor:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Floor(shapeF32x4),\n\t\t\t)\n\t\tcase wasm.OpcodeVecF32x4Trunc:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Trunc(shapeF32x4),\n\t\t\t)\n\t\tcase wasm.OpcodeVecF32x4Nearest:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Nearest(shapeF32x4),\n\t\t\t)\n\t\tcase wasm.OpcodeVecF64x2Ceil:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Ceil(shapeF64x2),\n\t\t\t)\n\t\tcase wasm.OpcodeVecF64x2Floor:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Floor(shapeF64x2),\n\t\t\t)\n\t\tcase wasm.OpcodeVecF64x2Trunc:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Trunc(shapeF64x2),\n\t\t\t)\n\t\tcase wasm.OpcodeVecF64x2Nearest:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Nearest(shapeF64x2),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI16x8ExtendLowI8x16S:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Extend(shapeI8x16, true, true),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI16x8ExtendHighI8x16S:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Extend(shapeI8x16, true, false),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI16x8ExtendLowI8x16U:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Extend(shapeI8x16, false, true),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI16x8ExtendHighI8x16U:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Extend(shapeI8x16, false, false),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI32x4ExtendLowI16x8S:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Extend(shapeI16x8, true, true),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI32x4ExtendHighI16x8S:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Extend(shapeI16x8, true, false),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI32x4ExtendLowI16x8U:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Extend(shapeI16x8, false, true),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI32x4ExtendHighI16x8U:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Extend(shapeI16x8, false, false),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI64x2ExtendLowI32x4S:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Extend(shapeI32x4, true, true),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI64x2ExtendHighI32x4S:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Extend(shapeI32x4, true, false),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI64x2ExtendLowI32x4U:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Extend(shapeI32x4, false, true),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI64x2ExtendHighI32x4U:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Extend(shapeI32x4, false, false),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI16x8Q15mulrSatS:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Q15mulrSatS(),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI16x8ExtMulLowI8x16S:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128ExtMul(shapeI8x16, true, true),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI16x8ExtMulHighI8x16S:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128ExtMul(shapeI8x16, true, false),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI16x8ExtMulLowI8x16U:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128ExtMul(shapeI8x16, false, true),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI16x8ExtMulHighI8x16U:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128ExtMul(shapeI8x16, false, false),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI32x4ExtMulLowI16x8S:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128ExtMul(shapeI16x8, true, true),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI32x4ExtMulHighI16x8S:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128ExtMul(shapeI16x8, true, false),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI32x4ExtMulLowI16x8U:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128ExtMul(shapeI16x8, false, true),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI32x4ExtMulHighI16x8U:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128ExtMul(shapeI16x8, false, false),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI64x2ExtMulLowI32x4S:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128ExtMul(shapeI32x4, true, true),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI64x2ExtMulHighI32x4S:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128ExtMul(shapeI32x4, true, false),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI64x2ExtMulLowI32x4U:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128ExtMul(shapeI32x4, false, true),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI64x2ExtMulHighI32x4U:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128ExtMul(shapeI32x4, false, false),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI16x8ExtaddPairwiseI8x16S:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128ExtAddPairwise(shapeI8x16, true),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI16x8ExtaddPairwiseI8x16U:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128ExtAddPairwise(shapeI8x16, false),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI32x4ExtaddPairwiseI16x8S:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128ExtAddPairwise(shapeI16x8, true),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI32x4ExtaddPairwiseI16x8U:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128ExtAddPairwise(shapeI16x8, false),\n\t\t\t)\n\t\tcase wasm.OpcodeVecF64x2PromoteLowF32x4Zero:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128FloatPromote(),\n\t\t\t)\n\t\tcase wasm.OpcodeVecF32x4DemoteF64x2Zero:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128FloatDemote(),\n\t\t\t)\n\t\tcase wasm.OpcodeVecF32x4ConvertI32x4S:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128FConvertFromI(shapeF32x4, true),\n\t\t\t)\n\t\tcase wasm.OpcodeVecF32x4ConvertI32x4U:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128FConvertFromI(shapeF32x4, false),\n\t\t\t)\n\t\tcase wasm.OpcodeVecF64x2ConvertLowI32x4S:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128FConvertFromI(shapeF64x2, true),\n\t\t\t)\n\t\tcase wasm.OpcodeVecF64x2ConvertLowI32x4U:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128FConvertFromI(shapeF64x2, false),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI32x4DotI16x8S:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Dot(),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI8x16NarrowI16x8S:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Narrow(shapeI16x8, true),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI8x16NarrowI16x8U:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Narrow(shapeI16x8, false),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI16x8NarrowI32x4S:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Narrow(shapeI32x4, true),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI16x8NarrowI32x4U:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128Narrow(shapeI32x4, false),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI32x4TruncSatF32x4S:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128ITruncSatFromF(shapeF32x4, true),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI32x4TruncSatF32x4U:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128ITruncSatFromF(shapeF32x4, false),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI32x4TruncSatF64x2SZero:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128ITruncSatFromF(shapeF64x2, true),\n\t\t\t)\n\t\tcase wasm.OpcodeVecI32x4TruncSatF64x2UZero:\n\t\t\tc.emit(\n\t\t\t\tnewOperationV128ITruncSatFromF(shapeF64x2, false),\n\t\t\t)\n\t\tdefault:\n\t\t\treturn fmt.Errorf(\"unsupported vector instruction in interpreterir: %s\", wasm.VectorInstructionName(vecOp))\n\t\t}\n\tcase wasm.OpcodeAtomicPrefix:\n\t\tc.pc++\n\t\tatomicOp := c.body[c.pc]\n\t\tswitch atomicOp {\n\t\tcase wasm.OpcodeAtomicMemoryWait32:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicMemoryWait32Name)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicMemoryWait(unsignedTypeI32, imm),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicMemoryWait64:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicMemoryWait64Name)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicMemoryWait(unsignedTypeI64, imm),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicMemoryNotify:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicMemoryNotifyName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicMemoryNotify(imm),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicFence:\n\t\t\t// Skip immediate value\n\t\t\tc.pc++\n\t\t\t_ = c.body[c.pc]\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicFence(),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI32Load:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI32LoadName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicLoad(unsignedTypeI32, imm),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI64Load:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI64LoadName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicLoad(unsignedTypeI64, imm),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI32Load8U:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI32Load8UName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicLoad8(unsignedTypeI32, imm),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI32Load16U:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI32Load16UName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicLoad16(unsignedTypeI32, imm),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI64Load8U:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI64Load8UName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicLoad8(unsignedTypeI64, imm),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI64Load16U:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI64Load16UName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicLoad16(unsignedTypeI64, imm),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI64Load32U:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI64Load32UName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicLoad(unsignedTypeI32, imm),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI32Store:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI32StoreName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicStore(unsignedTypeI32, imm),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI32Store8:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI32Store8Name)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicStore8(unsignedTypeI32, imm),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI32Store16:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI32Store16Name)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicStore16(unsignedTypeI32, imm),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI64Store:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI64StoreName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicStore(unsignedTypeI64, imm),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI64Store8:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI64Store8Name)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicStore8(unsignedTypeI64, imm),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI64Store16:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI64Store16Name)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicStore16(unsignedTypeI64, imm),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI64Store32:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI64Store32Name)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicStore(unsignedTypeI32, imm),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI32RmwAdd:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI32RmwAddName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicRMW(unsignedTypeI32, imm, atomicArithmeticOpAdd),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI64RmwAdd:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI64RmwAddName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicRMW(unsignedTypeI64, imm, atomicArithmeticOpAdd),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI32Rmw8AddU:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI32Rmw8AddUName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicRMW8(unsignedTypeI32, imm, atomicArithmeticOpAdd),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI64Rmw8AddU:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI64Rmw8AddUName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicRMW8(unsignedTypeI64, imm, atomicArithmeticOpAdd),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI32Rmw16AddU:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI32Rmw16AddUName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicRMW16(unsignedTypeI32, imm, atomicArithmeticOpAdd),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI64Rmw16AddU:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI64Rmw16AddUName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicRMW16(unsignedTypeI64, imm, atomicArithmeticOpAdd),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI64Rmw32AddU:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI64Rmw32AddUName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicRMW(unsignedTypeI32, imm, atomicArithmeticOpAdd),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI32RmwSub:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI32RmwSubName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicRMW(unsignedTypeI32, imm, atomicArithmeticOpSub),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI64RmwSub:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI64RmwSubName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicRMW(unsignedTypeI64, imm, atomicArithmeticOpSub),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI32Rmw8SubU:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI32Rmw8SubUName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicRMW8(unsignedTypeI32, imm, atomicArithmeticOpSub),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI64Rmw8SubU:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI64Rmw8SubUName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicRMW8(unsignedTypeI64, imm, atomicArithmeticOpSub),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI32Rmw16SubU:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI32Rmw16SubUName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicRMW16(unsignedTypeI32, imm, atomicArithmeticOpSub),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI64Rmw16SubU:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI64Rmw16SubUName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicRMW16(unsignedTypeI64, imm, atomicArithmeticOpSub),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI64Rmw32SubU:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI64Rmw32SubUName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicRMW(unsignedTypeI32, imm, atomicArithmeticOpSub),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI32RmwAnd:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI32RmwAndName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicRMW(unsignedTypeI32, imm, atomicArithmeticOpAnd),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI64RmwAnd:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI64RmwAndName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicRMW(unsignedTypeI64, imm, atomicArithmeticOpAnd),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI32Rmw8AndU:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI32Rmw8AndUName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicRMW8(unsignedTypeI32, imm, atomicArithmeticOpAnd),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI64Rmw8AndU:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI64Rmw8AndUName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicRMW8(unsignedTypeI64, imm, atomicArithmeticOpAnd),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI32Rmw16AndU:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI32Rmw16AndUName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicRMW16(unsignedTypeI32, imm, atomicArithmeticOpAnd),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI64Rmw16AndU:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI64Rmw16AndUName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicRMW16(unsignedTypeI64, imm, atomicArithmeticOpAnd),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI64Rmw32AndU:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI64Rmw32AndUName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicRMW(unsignedTypeI32, imm, atomicArithmeticOpAnd),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI32RmwOr:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI32RmwOrName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicRMW(unsignedTypeI32, imm, atomicArithmeticOpOr),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI64RmwOr:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI64RmwOrName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicRMW(unsignedTypeI64, imm, atomicArithmeticOpOr),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI32Rmw8OrU:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI32Rmw8OrUName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicRMW8(unsignedTypeI32, imm, atomicArithmeticOpOr),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI64Rmw8OrU:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI64Rmw8OrUName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicRMW8(unsignedTypeI64, imm, atomicArithmeticOpOr),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI32Rmw16OrU:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI32Rmw16OrUName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicRMW16(unsignedTypeI32, imm, atomicArithmeticOpOr),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI64Rmw16OrU:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI64Rmw16OrUName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicRMW16(unsignedTypeI64, imm, atomicArithmeticOpOr),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI64Rmw32OrU:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI64Rmw32OrUName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicRMW(unsignedTypeI32, imm, atomicArithmeticOpOr),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI32RmwXor:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI32RmwXorName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicRMW(unsignedTypeI32, imm, atomicArithmeticOpXor),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI64RmwXor:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI64RmwXorName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicRMW(unsignedTypeI64, imm, atomicArithmeticOpXor),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI32Rmw8XorU:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI32Rmw8XorUName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicRMW8(unsignedTypeI32, imm, atomicArithmeticOpXor),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI64Rmw8XorU:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI64Rmw8XorUName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicRMW8(unsignedTypeI64, imm, atomicArithmeticOpXor),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI32Rmw16XorU:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI32Rmw16XorUName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicRMW16(unsignedTypeI32, imm, atomicArithmeticOpXor),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI64Rmw16XorU:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI64Rmw16XorUName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicRMW16(unsignedTypeI64, imm, atomicArithmeticOpXor),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI64Rmw32XorU:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI64Rmw32XorUName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicRMW(unsignedTypeI32, imm, atomicArithmeticOpXor),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI32RmwXchg:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI32RmwXchgName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicRMW(unsignedTypeI32, imm, atomicArithmeticOpNop),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI64RmwXchg:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI64RmwXchgName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicRMW(unsignedTypeI64, imm, atomicArithmeticOpNop),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI32Rmw8XchgU:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI32Rmw8XchgUName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicRMW8(unsignedTypeI32, imm, atomicArithmeticOpNop),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI64Rmw8XchgU:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI64Rmw8XchgUName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicRMW8(unsignedTypeI64, imm, atomicArithmeticOpNop),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI32Rmw16XchgU:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI32Rmw16XchgUName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicRMW16(unsignedTypeI32, imm, atomicArithmeticOpNop),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI64Rmw16XchgU:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI64Rmw16XchgUName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicRMW16(unsignedTypeI64, imm, atomicArithmeticOpNop),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI64Rmw32XchgU:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI64Rmw32XchgUName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicRMW(unsignedTypeI32, imm, atomicArithmeticOpNop),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI32RmwCmpxchg:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI32RmwCmpxchgName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicRMWCmpxchg(unsignedTypeI32, imm),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI64RmwCmpxchg:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI64RmwCmpxchgName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicRMWCmpxchg(unsignedTypeI64, imm),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI32Rmw8CmpxchgU:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI32Rmw8CmpxchgUName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicRMW8Cmpxchg(unsignedTypeI32, imm),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI64Rmw8CmpxchgU:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI64Rmw8CmpxchgUName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicRMW8Cmpxchg(unsignedTypeI64, imm),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI32Rmw16CmpxchgU:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI32Rmw16CmpxchgUName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicRMW16Cmpxchg(unsignedTypeI32, imm),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI64Rmw16CmpxchgU:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI64Rmw16CmpxchgUName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicRMW16Cmpxchg(unsignedTypeI64, imm),\n\t\t\t)\n\t\tcase wasm.OpcodeAtomicI64Rmw32CmpxchgU:\n\t\t\timm, err := c.readMemoryArg(wasm.OpcodeAtomicI64Rmw32CmpxchgUName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.emit(\n\t\t\t\tnewOperationAtomicRMWCmpxchg(unsignedTypeI32, imm),\n\t\t\t)\n\t\tdefault:\n\t\t\treturn fmt.Errorf(\"unsupported atomic instruction in interpreterir: %s\", wasm.AtomicInstructionName(atomicOp))\n\t\t}\n\n\tcase wasm.OpcodeTailCallReturnCall:\n\t\tfdef := c.module.FunctionDefinition(index)\n\t\tfunctionFrame := c.controlFrames.functionFrame()\n\t\t// Currently we do not support imported functions, we treat them as regular calls.\n\t\t// For details, see internal/engine/RATIONALE.md\n\t\tif _, _, isImport := fdef.Import(); isImport {\n\t\t\tc.emit(newOperationCall(index))\n\t\t\tdropOp := newOperationDrop(c.getFrameDropRange(functionFrame, false))\n\n\t\t\t// Cleanup the stack and then jmp to function frame's continuation (meaning return).\n\t\t\tc.emit(dropOp)\n\t\t\tc.emit(newOperationBr(functionFrame.asLabel()))\n\t\t} else {\n\t\t\tc.emit(newOperationTailCallReturnCall(index))\n\t\t}\n\n\t\t// Return operation is stack-polymorphic, and mark the state as unreachable.\n\t\t// That means subsequent instructions in the current control frame are \"unreachable\"\n\t\t// and can be safely removed.\n\t\tc.markUnreachable()\n\n\tcase wasm.OpcodeTailCallReturnCallIndirect:\n\t\ttypeIndex := index\n\t\ttableIndex, n, err := leb128.LoadUint32(c.body[c.pc+1:])\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"read target for br_table: %w\", err)\n\t\t}\n\t\tc.pc += n\n\n\t\tfunctionFrame := c.controlFrames.functionFrame()\n\t\tdropRange := c.getFrameDropRange(functionFrame, false)\n\t\tc.emit(newOperationTailCallReturnCallIndirect(typeIndex, tableIndex, dropRange, functionFrame.asLabel()))\n\n\t\t// Return operation is stack-polymorphic, and mark the state as unreachable.\n\t\t// That means subsequent instructions in the current control frame are \"unreachable\"\n\t\t// and can be safely removed.\n\t\tc.markUnreachable()\n\n\tdefault:\n\t\treturn fmt.Errorf(\"unsupported instruction in interpreterir: 0x%x\", op)\n\t}\n\n\t// Move the program counter to point to the next instruction.\n\tc.pc++\n\treturn nil\n}\n\nfunc (c *compiler) nextFrameID() (id uint32) {\n\tid = c.currentFrameID + 1\n\tc.currentFrameID++\n\treturn\n}\n\nfunc (c *compiler) applyToStack(opcode wasm.Opcode) (index uint32, err error) {\n\tswitch opcode {\n\tcase\n\t\t// These are the opcodes that is coupled with \"index\"　immediate\n\t\t// and it DOES affect the signature of opcode.\n\t\twasm.OpcodeCall,\n\t\twasm.OpcodeCallIndirect,\n\t\twasm.OpcodeLocalGet,\n\t\twasm.OpcodeLocalSet,\n\t\twasm.OpcodeLocalTee,\n\t\twasm.OpcodeGlobalGet,\n\t\twasm.OpcodeGlobalSet,\n\t\t// tail-call proposal\n\t\twasm.OpcodeTailCallReturnCall,\n\t\twasm.OpcodeTailCallReturnCallIndirect:\n\t\t// Assumes that we are at the opcode now so skip it before read immediates.\n\t\tv, num, err := leb128.LoadUint32(c.body[c.pc+1:])\n\t\tif err != nil {\n\t\t\treturn 0, fmt.Errorf(\"reading immediates: %w\", err)\n\t\t}\n\t\tc.pc += num\n\t\tindex = v\n\tdefault:\n\t\t// Note that other opcodes are free of index\n\t\t// as it doesn't affect the signature of opt code.\n\t\t// In other words, the \"index\" argument of wasmOpcodeSignature\n\t\t// is ignored there.\n\t}\n\n\tif c.unreachableState.on {\n\t\treturn 0, nil\n\t}\n\n\t// Retrieve the signature of the opcode.\n\ts, err := c.wasmOpcodeSignature(opcode, index)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\t// Manipulate the stack according to the signature.\n\t// Note that the following algorithm assumes that\n\t// the unknown type is unique in the signature,\n\t// and is determined by the actual type on the stack.\n\t// The determined type is stored in this typeParam.\n\tvar typeParam unsignedType\n\tvar typeParamFound bool\n\tfor i := range s.in {\n\t\twant := s.in[len(s.in)-1-i]\n\t\tactual := c.stackPop()\n\t\tif want == unsignedTypeUnknown && typeParamFound {\n\t\t\twant = typeParam\n\t\t} else if want == unsignedTypeUnknown {\n\t\t\twant = actual\n\t\t\ttypeParam = want\n\t\t\ttypeParamFound = true\n\t\t}\n\t\tif want != actual {\n\t\t\treturn 0, fmt.Errorf(\"input signature mismatch: want %s but have %s\", want, actual)\n\t\t}\n\t}\n\n\tfor _, target := range s.out {\n\t\tif target == unsignedTypeUnknown && !typeParamFound {\n\t\t\treturn 0, fmt.Errorf(\"cannot determine type of unknown result\")\n\t\t} else if target == unsignedTypeUnknown {\n\t\t\tc.stackPush(typeParam)\n\t\t} else {\n\t\t\tc.stackPush(target)\n\t\t}\n\t}\n\n\treturn index, nil\n}\n\nfunc (c *compiler) stackPeek() (ret unsignedType) {\n\tret = c.stack[len(c.stack)-1]\n\treturn\n}\n\nfunc (c *compiler) stackSwitchAt(frame *controlFrame) {\n\tc.stack = c.stack[:frame.originalStackLenWithoutParam]\n\tc.stackLenInUint64 = frame.originalStackLenWithoutParamUint64\n}\n\nfunc (c *compiler) stackPop() (ret unsignedType) {\n\t// No need to check stack bound\n\t// as we can assume that all the operations\n\t// are valid thanks to validateFunction\n\t// at module validation phase.\n\tret = c.stack[len(c.stack)-1]\n\tc.stack = c.stack[:len(c.stack)-1]\n\tc.stackLenInUint64 -= 1 + int(unsignedTypeV128&ret>>2)\n\treturn\n}\n\nfunc (c *compiler) stackPush(ts unsignedType) {\n\tc.stack = append(c.stack, ts)\n\tc.stackLenInUint64 += 1 + int(unsignedTypeV128&ts>>2)\n}\n\n// emit adds the operations into the result.\nfunc (c *compiler) emit(op unionOperation) {\n\tif !c.unreachableState.on {\n\t\tswitch op.Kind {\n\t\tcase operationKindDrop:\n\t\t\t// If the drop range is nil,\n\t\t\t// we could remove such operations.\n\t\t\t// That happens when drop operation is unnecessary.\n\t\t\t// i.e. when there's no need to adjust stack before jmp.\n\t\t\tif int64(op.U1) == -1 {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t\tc.result.Operations = append(c.result.Operations, op)\n\t\tif c.needSourceOffset {\n\t\t\tc.result.IROperationSourceOffsetsInWasmBinary = append(c.result.IROperationSourceOffsetsInWasmBinary,\n\t\t\t\tc.currentOpPC+c.bodyOffsetInCodeSection)\n\t\t}\n\t}\n}\n\n// Emit const expression with default values of the given type.\nfunc (c *compiler) emitDefaultValue(t wasm.ValueType) {\n\tswitch t {\n\tcase wasm.ValueTypeI32:\n\t\tc.stackPush(unsignedTypeI32)\n\t\tc.emit(newOperationConstI32(0))\n\tcase wasm.ValueTypeI64, wasm.ValueTypeExternref, wasm.ValueTypeFuncref:\n\t\tc.stackPush(unsignedTypeI64)\n\t\tc.emit(newOperationConstI64(0))\n\tcase wasm.ValueTypeF32:\n\t\tc.stackPush(unsignedTypeF32)\n\t\tc.emit(newOperationConstF32(0))\n\tcase wasm.ValueTypeF64:\n\t\tc.stackPush(unsignedTypeF64)\n\t\tc.emit(newOperationConstF64(0))\n\tcase wasm.ValueTypeV128:\n\t\tc.stackPush(unsignedTypeV128)\n\t\tc.emit(newOperationV128Const(0, 0))\n\t}\n}\n\n// Returns the \"depth\" (starting from top of the stack)\n// of the n-th local.\nfunc (c *compiler) localDepth(index wasm.Index) int {\n\theight := c.localIndexToStackHeightInUint64[index]\n\treturn c.stackLenInUint64 - 1 - height\n}\n\nfunc (c *compiler) localType(index wasm.Index) (t wasm.ValueType) {\n\tif params := uint32(len(c.sig.Params)); index < params {\n\t\tt = c.sig.Params[index]\n\t} else {\n\t\tt = c.localTypes[index-params]\n\t}\n\treturn\n}\n\n// getFrameDropRange returns the range (starting from top of the stack) that spans across the (uint64) stack. The range is\n// supposed to be dropped from the stack when the given frame exists or branch into it.\n//\n// * frame is the control frame which the call-site is trying to branch into or exit.\n// * isEnd true if the call-site is handling wasm.OpcodeEnd.\nfunc (c *compiler) getFrameDropRange(frame *controlFrame, isEnd bool) inclusiveRange {\n\tvar start int\n\tif !isEnd && frame.kind == controlFrameKindLoop {\n\t\t// If this is not End and the call-site is trying to branch into the Loop control frame,\n\t\t// we have to Start executing from the beginning of the loop block.\n\t\t// Therefore, we have to pass the inputs to the frame.\n\t\tstart = frame.blockType.ParamNumInUint64\n\t} else {\n\t\tstart = frame.blockType.ResultNumInUint64\n\t}\n\tend := c.stackLenInUint64 - 1 - frame.originalStackLenWithoutParamUint64\n\tif start <= end {\n\t\treturn inclusiveRange{Start: int32(start), End: int32(end)}\n\t} else {\n\t\treturn nopinclusiveRange\n\t}\n}\n\nfunc (c *compiler) readMemoryArg(tag string) (memoryArg, error) {\n\tc.result.UsesMemory = true\n\talignment, num, err := leb128.LoadUint32(c.body[c.pc+1:])\n\tif err != nil {\n\t\treturn memoryArg{}, fmt.Errorf(\"reading alignment for %s: %w\", tag, err)\n\t}\n\tc.pc += num\n\toffset, num, err := leb128.LoadUint32(c.body[c.pc+1:])\n\tif err != nil {\n\t\treturn memoryArg{}, fmt.Errorf(\"reading offset for %s: %w\", tag, err)\n\t}\n\tc.pc += num\n\treturn memoryArg{Offset: offset, Alignment: alignment}, nil\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/interpreter/format.go",
    "content": "package interpreter\n\nimport (\n\t\"bytes\"\n)\n\nfunc format(ops []unionOperation) string {\n\tbuf := bytes.NewBuffer(nil)\n\n\t_, _ = buf.WriteString(\".entrypoint\\n\")\n\tfor i := range ops {\n\t\top := &ops[i]\n\t\tstr := op.String()\n\t\tisLabel := op.Kind == operationKindLabel\n\t\tif !isLabel {\n\t\t\tconst indent = \"\\t\"\n\t\t\tstr = indent + str\n\t\t}\n\t\t_, _ = buf.WriteString(str + \"\\n\")\n\t}\n\treturn buf.String()\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/interpreter/interpreter.go",
    "content": "package interpreter\n\nimport (\n\t\"context\"\n\t\"encoding/binary\"\n\t\"errors\"\n\t\"fmt\"\n\t\"math\"\n\t\"math/bits\"\n\t\"slices\"\n\t\"sync\"\n\t\"unsafe\"\n\n\t\"github.com/tetratelabs/wazero/api\"\n\t\"github.com/tetratelabs/wazero/experimental\"\n\t\"github.com/tetratelabs/wazero/internal/expctxkeys\"\n\t\"github.com/tetratelabs/wazero/internal/filecache\"\n\t\"github.com/tetratelabs/wazero/internal/internalapi\"\n\t\"github.com/tetratelabs/wazero/internal/moremath\"\n\t\"github.com/tetratelabs/wazero/internal/wasm\"\n\t\"github.com/tetratelabs/wazero/internal/wasmdebug\"\n\t\"github.com/tetratelabs/wazero/internal/wasmruntime\"\n)\n\n// callStackCeiling is the maximum WebAssembly call frame stack height. This allows wazero to raise\n// wasm.ErrCallStackOverflow instead of overflowing the Go runtime.\n//\n// The default value should suffice for most use cases. Those wishing to change this can via `go build -ldflags`.\nvar callStackCeiling = 2000\n\ntype compiledFunctionWithCount struct {\n\tfuncs    []compiledFunction\n\trefCount int\n}\n\n// engine is an interpreter implementation of wasm.Engine\ntype engine struct {\n\tenabledFeatures   api.CoreFeatures\n\tcompiledFunctions map[wasm.ModuleID]*compiledFunctionWithCount // guarded by mutex.\n\tmux               sync.Mutex\n}\n\nfunc NewEngine(_ context.Context, enabledFeatures api.CoreFeatures, _ filecache.Cache) wasm.Engine {\n\treturn &engine{\n\t\tenabledFeatures:   enabledFeatures,\n\t\tcompiledFunctions: map[wasm.ModuleID]*compiledFunctionWithCount{},\n\t}\n}\n\n// Close implements the same method as documented on wasm.Engine.\nfunc (e *engine) Close() (err error) {\n\te.mux.Lock()\n\tdefer e.mux.Unlock()\n\tclear(e.compiledFunctions)\n\treturn\n}\n\n// CompiledModuleCount implements the same method as documented on wasm.Engine.\nfunc (e *engine) CompiledModuleCount() uint32 {\n\te.mux.Lock()\n\tdefer e.mux.Unlock()\n\treturn uint32(len(e.compiledFunctions))\n}\n\n// DeleteCompiledModule implements the same method as documented on wasm.Engine.\nfunc (e *engine) DeleteCompiledModule(m *wasm.Module) {\n\te.deleteCompiledFunctions(m)\n}\n\nfunc (e *engine) deleteCompiledFunctions(module *wasm.Module) {\n\te.mux.Lock()\n\tdefer e.mux.Unlock()\n\tcf, ok := e.compiledFunctions[module.ID]\n\tif !ok {\n\t\treturn\n\t}\n\tcf.refCount--\n\tif cf.refCount > 0 {\n\t\treturn\n\t}\n\tdelete(e.compiledFunctions, module.ID)\n}\n\nfunc (e *engine) addCompiledFunctions(module *wasm.Module, fs []compiledFunction) {\n\te.mux.Lock()\n\tdefer e.mux.Unlock()\n\te.compiledFunctions[module.ID] = &compiledFunctionWithCount{funcs: fs, refCount: 1}\n}\n\nfunc (e *engine) getCompiledFunctions(module *wasm.Module, increaseRefCount bool) (fs []compiledFunction, ok bool) {\n\te.mux.Lock()\n\tdefer e.mux.Unlock()\n\tcf, ok := e.compiledFunctions[module.ID]\n\tif ok {\n\t\tfs = cf.funcs\n\t\tif increaseRefCount {\n\t\t\tcf.refCount++\n\t\t}\n\t}\n\treturn\n}\n\n// moduleEngine implements wasm.ModuleEngine\ntype moduleEngine struct {\n\t// codes are the compiled functions in a module instances.\n\t// The index is module instance-scoped.\n\tfunctions []function\n\n\t// parentEngine holds *engine from which this module engine is created from.\n\tparentEngine *engine\n}\n\n// GetGlobalValue implements the same method as documented on wasm.ModuleEngine.\nfunc (e *moduleEngine) GetGlobalValue(wasm.Index) (lo, hi uint64) {\n\tpanic(\"BUG: GetGlobalValue should never be called on interpreter mode\")\n}\n\n// SetGlobalValue implements the same method as documented on wasm.ModuleEngine.\nfunc (e *moduleEngine) SetGlobalValue(idx wasm.Index, lo, hi uint64) {\n\tpanic(\"BUG: SetGlobalValue should never be called on interpreter mode\")\n}\n\n// OwnsGlobals implements the same method as documented on wasm.ModuleEngine.\nfunc (e *moduleEngine) OwnsGlobals() bool { return false }\n\n// MemoryGrown implements wasm.ModuleEngine.\nfunc (e *moduleEngine) MemoryGrown() {}\n\n// callEngine holds context per moduleEngine.Call, and shared across all the\n// function calls originating from the same moduleEngine.Call execution.\n//\n// This implements api.Function.\ntype callEngine struct {\n\tinternalapi.WazeroOnlyType\n\n\t// stack contains the operands.\n\t// Note that all the values are represented as uint64.\n\tstack []uint64\n\n\t// frames are the function call stack.\n\tframes []*callFrame\n\n\t// f is the initial function for this call engine.\n\tf *function\n\n\t// stackiterator for Listeners to walk frames and stack.\n\tstackIterator stackIterator\n}\n\nfunc (e *moduleEngine) newCallEngine(compiled *function) *callEngine {\n\treturn &callEngine{f: compiled}\n}\n\nfunc (ce *callEngine) pushValue(v uint64) {\n\tce.stack = append(ce.stack, v)\n}\n\nfunc (ce *callEngine) pushValues(v []uint64) {\n\tce.stack = append(ce.stack, v...)\n}\n\nfunc (ce *callEngine) popValue() (v uint64) {\n\t// No need to check stack bound\n\t// as we can assume that all the operations\n\t// are valid thanks to validateFunction\n\t// at module validation phase\n\t// and interpreterir translation\n\t// before compilation.\n\tstackTopIndex := len(ce.stack) - 1\n\tv = ce.stack[stackTopIndex]\n\tce.stack = ce.stack[:stackTopIndex]\n\treturn\n}\n\nfunc (ce *callEngine) popValues(v []uint64) {\n\tstackTopIndex := len(ce.stack) - len(v)\n\tcopy(v, ce.stack[stackTopIndex:])\n\tce.stack = ce.stack[:stackTopIndex]\n}\n\n// peekValues peeks api.ValueType values from the stack and returns them.\nfunc (ce *callEngine) peekValues(count int) []uint64 {\n\tif count == 0 {\n\t\treturn nil\n\t}\n\tstackLen := len(ce.stack)\n\treturn ce.stack[stackLen-count : stackLen]\n}\n\nfunc (ce *callEngine) drop(raw uint64) {\n\tr := inclusiveRangeFromU64(raw)\n\tif r.Start == -1 {\n\t\treturn\n\t} else if r.Start == 0 {\n\t\tce.stack = ce.stack[:int32(len(ce.stack))-1-r.End]\n\t} else {\n\t\tnewStack := ce.stack[:int32(len(ce.stack))-1-r.End]\n\t\tnewStack = append(newStack, ce.stack[int32(len(ce.stack))-r.Start:]...)\n\t\tce.stack = newStack\n\t}\n}\n\nfunc (ce *callEngine) pushFrame(frame *callFrame) {\n\tif callStackCeiling <= len(ce.frames) {\n\t\tpanic(wasmruntime.ErrRuntimeStackOverflow)\n\t}\n\tce.frames = append(ce.frames, frame)\n}\n\nfunc (ce *callEngine) popFrame() (frame *callFrame) {\n\t// No need to check stack bound as we can assume that all the operations are valid thanks to validateFunction at\n\t// module validation phase and interpreterir translation before compilation.\n\toneLess := len(ce.frames) - 1\n\tframe = ce.frames[oneLess]\n\tce.frames = ce.frames[:oneLess]\n\treturn\n}\n\ntype callFrame struct {\n\t// pc is the program counter representing the current position in code.body.\n\tpc uint64\n\t// f is the compiled function used in this function frame.\n\tf *function\n\t// base index in the frame of this function, used to detect the count of\n\t// values on the stack.\n\tbase int\n}\n\ntype compiledFunction struct {\n\tsource              *wasm.Module\n\tbody                []unionOperation\n\tlistener            experimental.FunctionListener\n\toffsetsInWasmBinary []uint64\n\thostFn              interface{}\n\tensureTermination   bool\n\tindex               wasm.Index\n}\n\ntype function struct {\n\tfuncType       *wasm.FunctionType\n\tmoduleInstance *wasm.ModuleInstance\n\ttypeID         wasm.FunctionTypeID\n\tparent         *compiledFunction\n}\n\n// functionFromUintptr resurrects the original *function from the given uintptr\n// which comes from either funcref table or OpcodeRefFunc instruction.\nfunc functionFromUintptr(ptr uintptr) *function {\n\t// Wraps ptrs as the double pointer in order to avoid the unsafe access as detected by race detector.\n\t//\n\t// For example, if we have (*function)(unsafe.Pointer(ptr)) instead, then the race detector's \"checkptr\"\n\t// subroutine wanrs as \"checkptr: pointer arithmetic result points to invalid allocation\"\n\t// https://github.com/golang/go/blob/1ce7fcf139417d618c2730010ede2afb41664211/src/runtime/checkptr.go#L69\n\tvar wrapped *uintptr = &ptr\n\treturn *(**function)(unsafe.Pointer(wrapped))\n}\n\ntype snapshot struct {\n\tstack  []uint64\n\tframes []*callFrame\n\tpc     uint64\n\n\tret []uint64\n\n\tce *callEngine\n}\n\n// Snapshot implements the same method as documented on experimental.Snapshotter.\nfunc (ce *callEngine) Snapshot() experimental.Snapshot {\n\treturn &snapshot{\n\t\tstack:  slices.Clone(ce.stack),\n\t\tframes: slices.Clone(ce.frames),\n\t\tce:     ce,\n\t}\n}\n\n// Restore implements the same method as documented on experimental.Snapshot.\nfunc (s *snapshot) Restore(ret []uint64) {\n\ts.ret = ret\n\tpanic(s)\n}\n\nfunc (s *snapshot) doRestore() {\n\tce := s.ce\n\n\tce.stack = s.stack\n\tce.frames = s.frames\n\tce.frames[len(ce.frames)-1].pc = s.pc\n\n\tcopy(ce.stack[len(ce.stack)-len(s.ret):], s.ret)\n}\n\n// Error implements the same method on error.\nfunc (s *snapshot) Error() string {\n\treturn \"unhandled snapshot restore, this generally indicates restore was called from a different \" +\n\t\t\"exported function invocation than snapshot\"\n}\n\n// stackIterator implements experimental.StackIterator.\ntype stackIterator struct {\n\tstack   []uint64\n\tframes  []*callFrame\n\tstarted bool\n\tfn      *function\n\tpc      uint64\n}\n\nfunc (si *stackIterator) reset(stack []uint64, frames []*callFrame, f *function) {\n\tsi.fn = f\n\tsi.pc = 0\n\tsi.stack = stack\n\tsi.frames = frames\n\tsi.started = false\n}\n\nfunc (si *stackIterator) clear() {\n\tsi.stack = nil\n\tsi.frames = nil\n\tsi.started = false\n\tsi.fn = nil\n}\n\n// Next implements the same method as documented on experimental.StackIterator.\nfunc (si *stackIterator) Next() bool {\n\tif !si.started {\n\t\tsi.started = true\n\t\treturn true\n\t}\n\n\tif len(si.frames) == 0 {\n\t\treturn false\n\t}\n\n\tframe := si.frames[len(si.frames)-1]\n\tsi.stack = si.stack[:frame.base]\n\tsi.fn = frame.f\n\tsi.pc = frame.pc\n\tsi.frames = si.frames[:len(si.frames)-1]\n\treturn true\n}\n\n// Function implements the same method as documented on\n// experimental.StackIterator.\nfunc (si *stackIterator) Function() experimental.InternalFunction {\n\treturn internalFunction{si.fn}\n}\n\n// ProgramCounter implements the same method as documented on\n// experimental.StackIterator.\nfunc (si *stackIterator) ProgramCounter() experimental.ProgramCounter {\n\treturn experimental.ProgramCounter(si.pc)\n}\n\n// internalFunction implements experimental.InternalFunction.\ntype internalFunction struct{ *function }\n\n// Definition implements the same method as documented on\n// experimental.InternalFunction.\nfunc (f internalFunction) Definition() api.FunctionDefinition {\n\treturn f.definition()\n}\n\n// SourceOffsetForPC implements the same method as documented on\n// experimental.InternalFunction.\nfunc (f internalFunction) SourceOffsetForPC(pc experimental.ProgramCounter) uint64 {\n\toffsetsMap := f.parent.offsetsInWasmBinary\n\tif uint64(pc) < uint64(len(offsetsMap)) {\n\t\treturn offsetsMap[pc]\n\t}\n\treturn 0\n}\n\n// interpreter mode doesn't maintain call frames in the stack, so pass the zero size to the IR.\nconst callFrameStackSize = 0\n\n// CompileModule implements the same method as documented on wasm.Engine.\nfunc (e *engine) CompileModule(_ context.Context, module *wasm.Module, listeners []experimental.FunctionListener, ensureTermination bool) error {\n\tif _, ok := e.getCompiledFunctions(module, true); ok { // cache hit!\n\t\treturn nil\n\t}\n\n\tfuncs := make([]compiledFunction, len(module.FunctionSection))\n\tirCompiler, err := newCompiler(e.enabledFeatures, callFrameStackSize, module, ensureTermination)\n\tif err != nil {\n\t\treturn err\n\t}\n\timported := module.ImportFunctionCount\n\tfor i := range module.CodeSection {\n\t\tvar lsn experimental.FunctionListener\n\t\tif i < len(listeners) {\n\t\t\tlsn = listeners[i]\n\t\t}\n\n\t\tcompiled := &funcs[i]\n\t\t// If this is the host function, there's nothing to do as the runtime representation of\n\t\t// host function in interpreter is its Go function itself as opposed to Wasm functions,\n\t\t// which need to be compiled down to\n\t\tif codeSeg := &module.CodeSection[i]; codeSeg.GoFunc != nil {\n\t\t\tcompiled.hostFn = codeSeg.GoFunc\n\t\t} else {\n\t\t\tir, err := irCompiler.Next()\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terr = e.lowerIR(ir, compiled)\n\t\t\tif err != nil {\n\t\t\t\tdef := module.FunctionDefinition(uint32(i) + module.ImportFunctionCount)\n\t\t\t\treturn fmt.Errorf(\"failed to lower func[%s] to interpreterir: %w\", def.DebugName(), err)\n\t\t\t}\n\t\t}\n\t\tcompiled.source = module\n\t\tcompiled.ensureTermination = ensureTermination\n\t\tcompiled.listener = lsn\n\t\tcompiled.index = imported + uint32(i)\n\t}\n\te.addCompiledFunctions(module, funcs)\n\treturn nil\n}\n\n// NewModuleEngine implements the same method as documented on wasm.Engine.\nfunc (e *engine) NewModuleEngine(module *wasm.Module, instance *wasm.ModuleInstance) (wasm.ModuleEngine, error) {\n\tme := &moduleEngine{\n\t\tparentEngine: e,\n\t\tfunctions:    make([]function, len(module.FunctionSection)+int(module.ImportFunctionCount)),\n\t}\n\n\tcodes, ok := e.getCompiledFunctions(module, false)\n\tif !ok {\n\t\treturn nil, errors.New(\"source module must be compiled before instantiation\")\n\t}\n\n\tfor i := range codes {\n\t\tc := &codes[i]\n\t\toffset := i + int(module.ImportFunctionCount)\n\t\ttypeIndex := module.FunctionSection[i]\n\t\tme.functions[offset] = function{\n\t\t\tmoduleInstance: instance,\n\t\t\ttypeID:         instance.TypeIDs[typeIndex],\n\t\t\tfuncType:       &module.TypeSection[typeIndex],\n\t\t\tparent:         c,\n\t\t}\n\t}\n\treturn me, nil\n}\n\n// lowerIR lowers the interpreterir operations to engine friendly struct.\nfunc (e *engine) lowerIR(ir *compilationResult, ret *compiledFunction) error {\n\t// Copy the body from the result.\n\tret.body = slices.Clone(ir.Operations)\n\t// Also copy the offsets if necessary.\n\tif offsets := ir.IROperationSourceOffsetsInWasmBinary; len(offsets) > 0 {\n\t\tret.offsetsInWasmBinary = slices.Clone(offsets)\n\t}\n\n\tlabelAddressResolutions := [labelKindNum][]uint64{}\n\n\t// First, we iterate all labels, and resolve the address.\n\tfor i := range ret.body {\n\t\top := &ret.body[i]\n\t\tswitch op.Kind {\n\t\tcase operationKindLabel:\n\t\t\tlabel := label(op.U1)\n\t\t\taddress := uint64(i)\n\n\t\t\tkind, fid := label.Kind(), label.FrameID()\n\t\t\tframeToAddresses := labelAddressResolutions[label.Kind()]\n\t\t\t// Expand the slice if necessary.\n\t\t\tif diff := fid - len(frameToAddresses) + 1; diff > 0 {\n\t\t\t\tframeToAddresses = append(frameToAddresses, make([]uint64, diff)...)\n\t\t\t}\n\t\t\tframeToAddresses[fid] = address\n\t\t\tlabelAddressResolutions[kind] = frameToAddresses\n\t\t}\n\t}\n\n\t// Then resolve the label as the index to the body.\n\tfor i := range ret.body {\n\t\top := &ret.body[i]\n\t\tswitch op.Kind {\n\t\tcase operationKindBr:\n\t\t\te.setLabelAddress(&op.U1, label(op.U1), labelAddressResolutions)\n\t\tcase operationKindBrIf:\n\t\t\te.setLabelAddress(&op.U1, label(op.U1), labelAddressResolutions)\n\t\t\te.setLabelAddress(&op.U2, label(op.U2), labelAddressResolutions)\n\t\tcase operationKindBrTable:\n\t\t\tfor j := 0; j < len(op.Us); j += 2 {\n\t\t\t\ttarget := op.Us[j]\n\t\t\t\te.setLabelAddress(&op.Us[j], label(target), labelAddressResolutions)\n\t\t\t}\n\t\tcase operationKindTailCallReturnCallIndirect:\n\t\t\te.setLabelAddress(&op.Us[1], label(op.Us[1]), labelAddressResolutions)\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (e *engine) setLabelAddress(op *uint64, label label, labelAddressResolutions [labelKindNum][]uint64) {\n\tif label.IsReturnTarget() {\n\t\t// Jmp to the end of the possible binary.\n\t\t*op = math.MaxUint64\n\t} else {\n\t\t*op = labelAddressResolutions[label.Kind()][label.FrameID()]\n\t}\n}\n\n// ResolveImportedFunction implements wasm.ModuleEngine.\nfunc (e *moduleEngine) ResolveImportedFunction(index, descFunc, indexInImportedModule wasm.Index, importedModuleEngine wasm.ModuleEngine) {\n\timported := importedModuleEngine.(*moduleEngine)\n\te.functions[index] = imported.functions[indexInImportedModule]\n}\n\n// ResolveImportedMemory implements wasm.ModuleEngine.\nfunc (e *moduleEngine) ResolveImportedMemory(wasm.ModuleEngine) {}\n\n// DoneInstantiation implements wasm.ModuleEngine.\nfunc (e *moduleEngine) DoneInstantiation() {}\n\n// FunctionInstanceReference implements the same method as documented on wasm.ModuleEngine.\nfunc (e *moduleEngine) FunctionInstanceReference(funcIndex wasm.Index) wasm.Reference {\n\treturn uintptr(unsafe.Pointer(&e.functions[funcIndex]))\n}\n\n// NewFunction implements the same method as documented on wasm.ModuleEngine.\nfunc (e *moduleEngine) NewFunction(index wasm.Index) (ce api.Function) {\n\t// Note: The input parameters are pre-validated, so a compiled function is only absent on close. Updates to\n\t// code on close aren't locked, neither is this read.\n\tcompiled := &e.functions[index]\n\treturn e.newCallEngine(compiled)\n}\n\n// LookupFunction implements the same method as documented on wasm.ModuleEngine.\nfunc (e *moduleEngine) LookupFunction(t *wasm.TableInstance, typeId wasm.FunctionTypeID, tableOffset wasm.Index) (*wasm.ModuleInstance, wasm.Index) {\n\tif tableOffset >= uint32(len(t.References)) {\n\t\tpanic(wasmruntime.ErrRuntimeInvalidTableAccess)\n\t}\n\trawPtr := t.References[tableOffset]\n\tif rawPtr == 0 {\n\t\tpanic(wasmruntime.ErrRuntimeInvalidTableAccess)\n\t}\n\n\ttf := functionFromUintptr(rawPtr)\n\tif tf.typeID != typeId {\n\t\tpanic(wasmruntime.ErrRuntimeIndirectCallTypeMismatch)\n\t}\n\treturn tf.moduleInstance, tf.parent.index\n}\n\n// Definition implements the same method as documented on api.Function.\nfunc (ce *callEngine) Definition() api.FunctionDefinition {\n\treturn ce.f.definition()\n}\n\nfunc (f *function) definition() api.FunctionDefinition {\n\tcompiled := f.parent\n\treturn compiled.source.FunctionDefinition(compiled.index)\n}\n\n// Call implements the same method as documented on api.Function.\nfunc (ce *callEngine) Call(ctx context.Context, params ...uint64) (results []uint64, err error) {\n\tft := ce.f.funcType\n\tif n := ft.ParamNumInUint64; n != len(params) {\n\t\treturn nil, fmt.Errorf(\"expected %d params, but passed %d\", n, len(params))\n\t}\n\treturn ce.call(ctx, params, nil)\n}\n\n// CallWithStack implements the same method as documented on api.Function.\nfunc (ce *callEngine) CallWithStack(ctx context.Context, stack []uint64) error {\n\tparams, results, err := wasm.SplitCallStack(ce.f.funcType, stack)\n\tif err != nil {\n\t\treturn err\n\t}\n\t_, err = ce.call(ctx, params, results)\n\treturn err\n}\n\nfunc (ce *callEngine) call(ctx context.Context, params, results []uint64) (_ []uint64, err error) {\n\tm := ce.f.moduleInstance\n\tif ce.f.parent.ensureTermination {\n\t\tselect {\n\t\tcase <-ctx.Done():\n\t\t\t// If the provided context is already done, close the call context\n\t\t\t// and return the error.\n\t\t\tm.CloseWithCtxErr(ctx)\n\t\t\treturn nil, m.FailIfClosed()\n\t\tdefault:\n\t\t}\n\t}\n\n\tif ctx.Value(expctxkeys.EnableSnapshotterKey{}) != nil {\n\t\tctx = context.WithValue(ctx, expctxkeys.SnapshotterKey{}, ce)\n\t}\n\n\tdefer func() {\n\t\t// If the module closed during the call, and the call didn't err for another reason, set an ExitError.\n\t\tif err == nil {\n\t\t\terr = m.FailIfClosed()\n\t\t}\n\t\t// TODO: ^^ Will not fail if the function was imported from a closed module.\n\n\t\tif v := recover(); v != nil {\n\t\t\terr = ce.recoverOnCall(ctx, m, v)\n\t\t}\n\t}()\n\n\tce.pushValues(params)\n\n\tif ce.f.parent.ensureTermination {\n\t\tdone := m.CloseModuleOnCanceledOrTimeout(ctx)\n\t\tdefer done()\n\t}\n\n\tce.callFunction(ctx, m, ce.f)\n\n\t// This returns a safe copy of the results, instead of a slice view. If we\n\t// returned a re-slice, the caller could accidentally or purposefully\n\t// corrupt the stack of subsequent calls.\n\tft := ce.f.funcType\n\tif results == nil && ft.ResultNumInUint64 > 0 {\n\t\tresults = make([]uint64, ft.ResultNumInUint64)\n\t}\n\tce.popValues(results)\n\treturn results, nil\n}\n\n// functionListenerInvocation captures arguments needed to perform function\n// listener invocations when unwinding the call stack.\ntype functionListenerInvocation struct {\n\texperimental.FunctionListener\n\tdef api.FunctionDefinition\n}\n\n// recoverOnCall takes the recovered value `recoverOnCall`, and wraps it\n// with the call frame stack traces. Also, reset the state of callEngine\n// so that it can be used for the subsequent calls.\nfunc (ce *callEngine) recoverOnCall(ctx context.Context, m *wasm.ModuleInstance, v interface{}) (err error) {\n\tif s, ok := v.(*snapshot); ok {\n\t\t// A snapshot that wasn't handled was created by a different call engine possibly from a nested wasm invocation,\n\t\t// let it propagate up to be handled by the caller.\n\t\tpanic(s)\n\t}\n\n\tbuilder := wasmdebug.NewErrorBuilder()\n\tframeCount := len(ce.frames)\n\tfunctionListeners := make([]functionListenerInvocation, 0, 16)\n\n\tif frameCount > wasmdebug.MaxFrames {\n\t\tframeCount = wasmdebug.MaxFrames\n\t}\n\tfor i := 0; i < frameCount; i++ {\n\t\tframe := ce.popFrame()\n\t\tf := frame.f\n\t\tdef := f.definition()\n\t\tvar sources []string\n\t\tif parent := frame.f.parent; parent.body != nil && len(parent.offsetsInWasmBinary) > 0 {\n\t\t\tsources = parent.source.DWARFLines.Line(parent.offsetsInWasmBinary[frame.pc])\n\t\t}\n\t\tbuilder.AddFrame(def.DebugName(), def.ParamTypes(), def.ResultTypes(), sources)\n\t\tif f.parent.listener != nil {\n\t\t\tfunctionListeners = append(functionListeners, functionListenerInvocation{\n\t\t\t\tFunctionListener: f.parent.listener,\n\t\t\t\tdef:              f.definition(),\n\t\t\t})\n\t\t}\n\t}\n\n\terr = builder.FromRecovered(v)\n\tfor i := range functionListeners {\n\t\tfunctionListeners[i].Abort(ctx, m, functionListeners[i].def, err)\n\t}\n\n\t// Allows the reuse of CallEngine.\n\tce.stack, ce.frames = ce.stack[:0], ce.frames[:0]\n\treturn\n}\n\nfunc (ce *callEngine) callFunction(ctx context.Context, m *wasm.ModuleInstance, f *function) {\n\tif f.parent.hostFn != nil {\n\t\tce.callGoFuncWithStack(ctx, m, f)\n\t} else if lsn := f.parent.listener; lsn != nil {\n\t\tce.callNativeFuncWithListener(ctx, m, f, lsn)\n\t} else {\n\t\tce.callNativeFunc(ctx, m, f)\n\t}\n}\n\nfunc (ce *callEngine) callGoFunc(ctx context.Context, m *wasm.ModuleInstance, f *function, stack []uint64) {\n\ttyp := f.funcType\n\tlsn := f.parent.listener\n\tif lsn != nil {\n\t\tparams := stack[:typ.ParamNumInUint64]\n\t\tce.stackIterator.reset(ce.stack, ce.frames, f)\n\t\tlsn.Before(ctx, m, f.definition(), params, &ce.stackIterator)\n\t\tce.stackIterator.clear()\n\t}\n\tframe := &callFrame{f: f, base: len(ce.stack)}\n\tce.pushFrame(frame)\n\n\tfn := f.parent.hostFn\n\tswitch fn := fn.(type) {\n\tcase api.GoModuleFunction:\n\t\tfn.Call(ctx, m, stack)\n\tcase api.GoFunction:\n\t\tfn.Call(ctx, stack)\n\t}\n\n\tce.popFrame()\n\tif lsn != nil {\n\t\t// TODO: This doesn't get the error due to use of panic to propagate them.\n\t\tresults := stack[:typ.ResultNumInUint64]\n\t\tlsn.After(ctx, m, f.definition(), results)\n\t}\n}\n\nfunc (ce *callEngine) callNativeFunc(ctx context.Context, m *wasm.ModuleInstance, f *function) {\n\tframe := &callFrame{f: f, base: len(ce.stack)}\n\tmoduleInst := f.moduleInstance\n\tfunctions := moduleInst.Engine.(*moduleEngine).functions\n\tmemoryInst := moduleInst.MemoryInstance\n\tglobals := moduleInst.Globals\n\ttables := moduleInst.Tables\n\ttypeIDs := moduleInst.TypeIDs\n\tdataInstances := moduleInst.DataInstances\n\telementInstances := moduleInst.ElementInstances\n\tce.pushFrame(frame)\n\tbody := frame.f.parent.body\n\tbodyLen := uint64(len(body))\n\tfor frame.pc < bodyLen {\n\t\top := &body[frame.pc]\n\t\t// TODO: add description of each operation/case\n\t\t// on, for example, how many args are used,\n\t\t// how the stack is modified, etc.\n\t\tswitch op.Kind {\n\t\tcase operationKindBuiltinFunctionCheckExitCode:\n\t\t\tif err := m.FailIfClosed(); err != nil {\n\t\t\t\tpanic(err)\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindUnreachable:\n\t\t\tpanic(wasmruntime.ErrRuntimeUnreachable)\n\t\tcase operationKindBr:\n\t\t\tframe.pc = op.U1\n\t\tcase operationKindBrIf:\n\t\t\tif ce.popValue() > 0 {\n\t\t\t\tce.drop(op.U3)\n\t\t\t\tframe.pc = op.U1\n\t\t\t} else {\n\t\t\t\tframe.pc = op.U2\n\t\t\t}\n\t\tcase operationKindBrTable:\n\t\t\tv := ce.popValue()\n\t\t\tdefaultAt := uint64(len(op.Us))/2 - 1\n\t\t\tif v > defaultAt {\n\t\t\t\tv = defaultAt\n\t\t\t}\n\t\t\tv *= 2\n\t\t\tce.drop(op.Us[v+1])\n\t\t\tframe.pc = op.Us[v]\n\t\tcase operationKindCall:\n\t\t\tfunc() {\n\t\t\t\tif ctx.Value(expctxkeys.EnableSnapshotterKey{}) != nil {\n\t\t\t\t\tdefer func() {\n\t\t\t\t\t\tif r := recover(); r != nil {\n\t\t\t\t\t\t\tif s, ok := r.(*snapshot); ok && s.ce == ce {\n\t\t\t\t\t\t\t\ts.doRestore()\n\t\t\t\t\t\t\t\tframe = ce.frames[len(ce.frames)-1]\n\t\t\t\t\t\t\t\tbody = frame.f.parent.body\n\t\t\t\t\t\t\t\tbodyLen = uint64(len(body))\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tpanic(r)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}()\n\t\t\t\t}\n\t\t\t\tce.callFunction(ctx, f.moduleInstance, &functions[op.U1])\n\t\t\t}()\n\t\t\tframe.pc++\n\t\tcase operationKindCallIndirect:\n\t\t\toffset := ce.popValue()\n\t\t\ttable := tables[op.U2]\n\t\t\ttf := ce.functionForOffset(table, offset, typeIDs[op.U1])\n\n\t\t\tce.callFunction(ctx, f.moduleInstance, tf)\n\t\t\tframe.pc++\n\t\tcase operationKindDrop:\n\t\t\tce.drop(op.U1)\n\t\t\tframe.pc++\n\t\tcase operationKindSelect:\n\t\t\tc := ce.popValue()\n\t\t\tif op.B3 { // Target is vector.\n\t\t\t\tx2Hi, x2Lo := ce.popValue(), ce.popValue()\n\t\t\t\tif c == 0 {\n\t\t\t\t\t_, _ = ce.popValue(), ce.popValue() // discard the x1's lo and hi bits.\n\t\t\t\t\tce.pushValue(x2Lo)\n\t\t\t\t\tce.pushValue(x2Hi)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tv2 := ce.popValue()\n\t\t\t\tif c == 0 {\n\t\t\t\t\t_ = ce.popValue()\n\t\t\t\t\tce.pushValue(v2)\n\t\t\t\t}\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindPick:\n\t\t\tindex := len(ce.stack) - 1 - int(op.U1)\n\t\t\tce.pushValue(ce.stack[index])\n\t\t\tif op.B3 { // V128 value target.\n\t\t\t\tce.pushValue(ce.stack[index+1])\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindSet:\n\t\t\tif op.B3 { // V128 value target.\n\t\t\t\tlowIndex := len(ce.stack) - 1 - int(op.U1)\n\t\t\t\thighIndex := lowIndex + 1\n\t\t\t\thi, lo := ce.popValue(), ce.popValue()\n\t\t\t\tce.stack[lowIndex], ce.stack[highIndex] = lo, hi\n\t\t\t} else {\n\t\t\t\tindex := len(ce.stack) - 1 - int(op.U1)\n\t\t\t\tce.stack[index] = ce.popValue()\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindGlobalGet:\n\t\t\tg := globals[op.U1]\n\t\t\tce.pushValue(g.Val)\n\t\t\tif g.Type.ValType == wasm.ValueTypeV128 {\n\t\t\t\tce.pushValue(g.ValHi)\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindGlobalSet:\n\t\t\tg := globals[op.U1]\n\t\t\tif g.Type.ValType == wasm.ValueTypeV128 {\n\t\t\t\tg.ValHi = ce.popValue()\n\t\t\t}\n\t\t\tg.Val = ce.popValue()\n\t\t\tframe.pc++\n\t\tcase operationKindLoad:\n\t\t\toffset := ce.popMemoryOffset(op)\n\t\t\tswitch unsignedType(op.B1) {\n\t\t\tcase unsignedTypeI32, unsignedTypeF32:\n\t\t\t\tif val, ok := memoryInst.ReadUint32Le(offset); !ok {\n\t\t\t\t\tpanic(wasmruntime.ErrRuntimeOutOfBoundsMemoryAccess)\n\t\t\t\t} else {\n\t\t\t\t\tce.pushValue(uint64(val))\n\t\t\t\t}\n\t\t\tcase unsignedTypeI64, unsignedTypeF64:\n\t\t\t\tif val, ok := memoryInst.ReadUint64Le(offset); !ok {\n\t\t\t\t\tpanic(wasmruntime.ErrRuntimeOutOfBoundsMemoryAccess)\n\t\t\t\t} else {\n\t\t\t\t\tce.pushValue(val)\n\t\t\t\t}\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindLoad8:\n\t\t\tval, ok := memoryInst.ReadByte(ce.popMemoryOffset(op))\n\t\t\tif !ok {\n\t\t\t\tpanic(wasmruntime.ErrRuntimeOutOfBoundsMemoryAccess)\n\t\t\t}\n\n\t\t\tswitch signedInt(op.B1) {\n\t\t\tcase signedInt32:\n\t\t\t\tce.pushValue(uint64(uint32(int8(val))))\n\t\t\tcase signedInt64:\n\t\t\t\tce.pushValue(uint64(int8(val)))\n\t\t\tcase signedUint32, signedUint64:\n\t\t\t\tce.pushValue(uint64(val))\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindLoad16:\n\n\t\t\tval, ok := memoryInst.ReadUint16Le(ce.popMemoryOffset(op))\n\t\t\tif !ok {\n\t\t\t\tpanic(wasmruntime.ErrRuntimeOutOfBoundsMemoryAccess)\n\t\t\t}\n\n\t\t\tswitch signedInt(op.B1) {\n\t\t\tcase signedInt32:\n\t\t\t\tce.pushValue(uint64(uint32(int16(val))))\n\t\t\tcase signedInt64:\n\t\t\t\tce.pushValue(uint64(int16(val)))\n\t\t\tcase signedUint32, signedUint64:\n\t\t\t\tce.pushValue(uint64(val))\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindLoad32:\n\t\t\tval, ok := memoryInst.ReadUint32Le(ce.popMemoryOffset(op))\n\t\t\tif !ok {\n\t\t\t\tpanic(wasmruntime.ErrRuntimeOutOfBoundsMemoryAccess)\n\t\t\t}\n\n\t\t\tif op.B1 == 1 { // Signed\n\t\t\t\tce.pushValue(uint64(int32(val)))\n\t\t\t} else {\n\t\t\t\tce.pushValue(uint64(val))\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindStore:\n\t\t\tval := ce.popValue()\n\t\t\toffset := ce.popMemoryOffset(op)\n\t\t\tswitch unsignedType(op.B1) {\n\t\t\tcase unsignedTypeI32, unsignedTypeF32:\n\t\t\t\tif !memoryInst.WriteUint32Le(offset, uint32(val)) {\n\t\t\t\t\tpanic(wasmruntime.ErrRuntimeOutOfBoundsMemoryAccess)\n\t\t\t\t}\n\t\t\tcase unsignedTypeI64, unsignedTypeF64:\n\t\t\t\tif !memoryInst.WriteUint64Le(offset, val) {\n\t\t\t\t\tpanic(wasmruntime.ErrRuntimeOutOfBoundsMemoryAccess)\n\t\t\t\t}\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindStore8:\n\t\t\tval := byte(ce.popValue())\n\t\t\toffset := ce.popMemoryOffset(op)\n\t\t\tif !memoryInst.WriteByte(offset, val) {\n\t\t\t\tpanic(wasmruntime.ErrRuntimeOutOfBoundsMemoryAccess)\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindStore16:\n\t\t\tval := uint16(ce.popValue())\n\t\t\toffset := ce.popMemoryOffset(op)\n\t\t\tif !memoryInst.WriteUint16Le(offset, val) {\n\t\t\t\tpanic(wasmruntime.ErrRuntimeOutOfBoundsMemoryAccess)\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindStore32:\n\t\t\tval := uint32(ce.popValue())\n\t\t\toffset := ce.popMemoryOffset(op)\n\t\t\tif !memoryInst.WriteUint32Le(offset, val) {\n\t\t\t\tpanic(wasmruntime.ErrRuntimeOutOfBoundsMemoryAccess)\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindMemorySize:\n\t\t\tce.pushValue(uint64(memoryInst.Pages()))\n\t\t\tframe.pc++\n\t\tcase operationKindMemoryGrow:\n\t\t\tn := ce.popValue()\n\t\t\tif res, ok := memoryInst.Grow(uint32(n)); !ok {\n\t\t\t\tce.pushValue(uint64(0xffffffff)) // = -1 in signed 32-bit integer.\n\t\t\t} else {\n\t\t\t\tce.pushValue(uint64(res))\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindConstI32, operationKindConstI64,\n\t\t\toperationKindConstF32, operationKindConstF64:\n\t\t\tce.pushValue(op.U1)\n\t\t\tframe.pc++\n\t\tcase operationKindEq:\n\t\t\tvar b bool\n\t\t\tswitch unsignedType(op.B1) {\n\t\t\tcase unsignedTypeI32:\n\t\t\t\tv2, v1 := ce.popValue(), ce.popValue()\n\t\t\t\tb = uint32(v1) == uint32(v2)\n\t\t\tcase unsignedTypeI64:\n\t\t\t\tv2, v1 := ce.popValue(), ce.popValue()\n\t\t\t\tb = v1 == v2\n\t\t\tcase unsignedTypeF32:\n\t\t\t\tv2, v1 := ce.popValue(), ce.popValue()\n\t\t\t\tb = math.Float32frombits(uint32(v2)) == math.Float32frombits(uint32(v1))\n\t\t\tcase unsignedTypeF64:\n\t\t\t\tv2, v1 := ce.popValue(), ce.popValue()\n\t\t\t\tb = math.Float64frombits(v2) == math.Float64frombits(v1)\n\t\t\t}\n\t\t\tif b {\n\t\t\t\tce.pushValue(1)\n\t\t\t} else {\n\t\t\t\tce.pushValue(0)\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindNe:\n\t\t\tvar b bool\n\t\t\tswitch unsignedType(op.B1) {\n\t\t\tcase unsignedTypeI32, unsignedTypeI64:\n\t\t\t\tv2, v1 := ce.popValue(), ce.popValue()\n\t\t\t\tb = v1 != v2\n\t\t\tcase unsignedTypeF32:\n\t\t\t\tv2, v1 := ce.popValue(), ce.popValue()\n\t\t\t\tb = math.Float32frombits(uint32(v2)) != math.Float32frombits(uint32(v1))\n\t\t\tcase unsignedTypeF64:\n\t\t\t\tv2, v1 := ce.popValue(), ce.popValue()\n\t\t\t\tb = math.Float64frombits(v2) != math.Float64frombits(v1)\n\t\t\t}\n\t\t\tif b {\n\t\t\t\tce.pushValue(1)\n\t\t\t} else {\n\t\t\t\tce.pushValue(0)\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindEqz:\n\t\t\tif ce.popValue() == 0 {\n\t\t\t\tce.pushValue(1)\n\t\t\t} else {\n\t\t\t\tce.pushValue(0)\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindLt:\n\t\t\tv2 := ce.popValue()\n\t\t\tv1 := ce.popValue()\n\t\t\tvar b bool\n\t\t\tswitch signedType(op.B1) {\n\t\t\tcase signedTypeInt32:\n\t\t\t\tb = int32(v1) < int32(v2)\n\t\t\tcase signedTypeInt64:\n\t\t\t\tb = int64(v1) < int64(v2)\n\t\t\tcase signedTypeUint32, signedTypeUint64:\n\t\t\t\tb = v1 < v2\n\t\t\tcase signedTypeFloat32:\n\t\t\t\tb = math.Float32frombits(uint32(v1)) < math.Float32frombits(uint32(v2))\n\t\t\tcase signedTypeFloat64:\n\t\t\t\tb = math.Float64frombits(v1) < math.Float64frombits(v2)\n\t\t\t}\n\t\t\tif b {\n\t\t\t\tce.pushValue(1)\n\t\t\t} else {\n\t\t\t\tce.pushValue(0)\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindGt:\n\t\t\tv2 := ce.popValue()\n\t\t\tv1 := ce.popValue()\n\t\t\tvar b bool\n\t\t\tswitch signedType(op.B1) {\n\t\t\tcase signedTypeInt32:\n\t\t\t\tb = int32(v1) > int32(v2)\n\t\t\tcase signedTypeInt64:\n\t\t\t\tb = int64(v1) > int64(v2)\n\t\t\tcase signedTypeUint32, signedTypeUint64:\n\t\t\t\tb = v1 > v2\n\t\t\tcase signedTypeFloat32:\n\t\t\t\tb = math.Float32frombits(uint32(v1)) > math.Float32frombits(uint32(v2))\n\t\t\tcase signedTypeFloat64:\n\t\t\t\tb = math.Float64frombits(v1) > math.Float64frombits(v2)\n\t\t\t}\n\t\t\tif b {\n\t\t\t\tce.pushValue(1)\n\t\t\t} else {\n\t\t\t\tce.pushValue(0)\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindLe:\n\t\t\tv2 := ce.popValue()\n\t\t\tv1 := ce.popValue()\n\t\t\tvar b bool\n\t\t\tswitch signedType(op.B1) {\n\t\t\tcase signedTypeInt32:\n\t\t\t\tb = int32(v1) <= int32(v2)\n\t\t\tcase signedTypeInt64:\n\t\t\t\tb = int64(v1) <= int64(v2)\n\t\t\tcase signedTypeUint32, signedTypeUint64:\n\t\t\t\tb = v1 <= v2\n\t\t\tcase signedTypeFloat32:\n\t\t\t\tb = math.Float32frombits(uint32(v1)) <= math.Float32frombits(uint32(v2))\n\t\t\tcase signedTypeFloat64:\n\t\t\t\tb = math.Float64frombits(v1) <= math.Float64frombits(v2)\n\t\t\t}\n\t\t\tif b {\n\t\t\t\tce.pushValue(1)\n\t\t\t} else {\n\t\t\t\tce.pushValue(0)\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindGe:\n\t\t\tv2 := ce.popValue()\n\t\t\tv1 := ce.popValue()\n\t\t\tvar b bool\n\t\t\tswitch signedType(op.B1) {\n\t\t\tcase signedTypeInt32:\n\t\t\t\tb = int32(v1) >= int32(v2)\n\t\t\tcase signedTypeInt64:\n\t\t\t\tb = int64(v1) >= int64(v2)\n\t\t\tcase signedTypeUint32, signedTypeUint64:\n\t\t\t\tb = v1 >= v2\n\t\t\tcase signedTypeFloat32:\n\t\t\t\tb = math.Float32frombits(uint32(v1)) >= math.Float32frombits(uint32(v2))\n\t\t\tcase signedTypeFloat64:\n\t\t\t\tb = math.Float64frombits(v1) >= math.Float64frombits(v2)\n\t\t\t}\n\t\t\tif b {\n\t\t\t\tce.pushValue(1)\n\t\t\t} else {\n\t\t\t\tce.pushValue(0)\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindAdd:\n\t\t\tv2 := ce.popValue()\n\t\t\tv1 := ce.popValue()\n\t\t\tswitch unsignedType(op.B1) {\n\t\t\tcase unsignedTypeI32:\n\t\t\t\tv := uint32(v1) + uint32(v2)\n\t\t\t\tce.pushValue(uint64(v))\n\t\t\tcase unsignedTypeI64:\n\t\t\t\tce.pushValue(v1 + v2)\n\t\t\tcase unsignedTypeF32:\n\t\t\t\tce.pushValue(addFloat32bits(uint32(v1), uint32(v2)))\n\t\t\tcase unsignedTypeF64:\n\t\t\t\tv := math.Float64frombits(v1) + math.Float64frombits(v2)\n\t\t\t\tce.pushValue(math.Float64bits(v))\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindSub:\n\t\t\tv2 := ce.popValue()\n\t\t\tv1 := ce.popValue()\n\t\t\tswitch unsignedType(op.B1) {\n\t\t\tcase unsignedTypeI32:\n\t\t\t\tce.pushValue(uint64(uint32(v1) - uint32(v2)))\n\t\t\tcase unsignedTypeI64:\n\t\t\t\tce.pushValue(v1 - v2)\n\t\t\tcase unsignedTypeF32:\n\t\t\t\tce.pushValue(subFloat32bits(uint32(v1), uint32(v2)))\n\t\t\tcase unsignedTypeF64:\n\t\t\t\tv := math.Float64frombits(v1) - math.Float64frombits(v2)\n\t\t\t\tce.pushValue(math.Float64bits(v))\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindMul:\n\t\t\tv2 := ce.popValue()\n\t\t\tv1 := ce.popValue()\n\t\t\tswitch unsignedType(op.B1) {\n\t\t\tcase unsignedTypeI32:\n\t\t\t\tce.pushValue(uint64(uint32(v1) * uint32(v2)))\n\t\t\tcase unsignedTypeI64:\n\t\t\t\tce.pushValue(v1 * v2)\n\t\t\tcase unsignedTypeF32:\n\t\t\t\tce.pushValue(mulFloat32bits(uint32(v1), uint32(v2)))\n\t\t\tcase unsignedTypeF64:\n\t\t\t\tv := math.Float64frombits(v2) * math.Float64frombits(v1)\n\t\t\t\tce.pushValue(math.Float64bits(v))\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindClz:\n\t\t\tv := ce.popValue()\n\t\t\tif op.B1 == 0 {\n\t\t\t\t// unsignedInt32\n\t\t\t\tce.pushValue(uint64(bits.LeadingZeros32(uint32(v))))\n\t\t\t} else {\n\t\t\t\t// unsignedInt64\n\t\t\t\tce.pushValue(uint64(bits.LeadingZeros64(v)))\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindCtz:\n\t\t\tv := ce.popValue()\n\t\t\tif op.B1 == 0 {\n\t\t\t\t// unsignedInt32\n\t\t\t\tce.pushValue(uint64(bits.TrailingZeros32(uint32(v))))\n\t\t\t} else {\n\t\t\t\t// unsignedInt64\n\t\t\t\tce.pushValue(uint64(bits.TrailingZeros64(v)))\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindPopcnt:\n\t\t\tv := ce.popValue()\n\t\t\tif op.B1 == 0 {\n\t\t\t\t// unsignedInt32\n\t\t\t\tce.pushValue(uint64(bits.OnesCount32(uint32(v))))\n\t\t\t} else {\n\t\t\t\t// unsignedInt64\n\t\t\t\tce.pushValue(uint64(bits.OnesCount64(v)))\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindDiv:\n\t\t\t// If an integer, check we won't divide by zero.\n\t\t\tt := signedType(op.B1)\n\t\t\tv2, v1 := ce.popValue(), ce.popValue()\n\t\t\tswitch t {\n\t\t\tcase signedTypeFloat32, signedTypeFloat64: // not integers\n\t\t\tdefault:\n\t\t\t\tif v2 == 0 {\n\t\t\t\t\tpanic(wasmruntime.ErrRuntimeIntegerDivideByZero)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tswitch t {\n\t\t\tcase signedTypeInt32:\n\t\t\t\td := int32(v2)\n\t\t\t\tn := int32(v1)\n\t\t\t\tif n == math.MinInt32 && d == -1 {\n\t\t\t\t\tpanic(wasmruntime.ErrRuntimeIntegerOverflow)\n\t\t\t\t}\n\t\t\t\tce.pushValue(uint64(uint32(n / d)))\n\t\t\tcase signedTypeInt64:\n\t\t\t\td := int64(v2)\n\t\t\t\tn := int64(v1)\n\t\t\t\tif n == math.MinInt64 && d == -1 {\n\t\t\t\t\tpanic(wasmruntime.ErrRuntimeIntegerOverflow)\n\t\t\t\t}\n\t\t\t\tce.pushValue(uint64(n / d))\n\t\t\tcase signedTypeUint32:\n\t\t\t\td := uint32(v2)\n\t\t\t\tn := uint32(v1)\n\t\t\t\tce.pushValue(uint64(n / d))\n\t\t\tcase signedTypeUint64:\n\t\t\t\td := v2\n\t\t\t\tn := v1\n\t\t\t\tce.pushValue(n / d)\n\t\t\tcase signedTypeFloat32:\n\t\t\t\tce.pushValue(divFloat32bits(uint32(v1), uint32(v2)))\n\t\t\tcase signedTypeFloat64:\n\t\t\t\tce.pushValue(math.Float64bits(math.Float64frombits(v1) / math.Float64frombits(v2)))\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindRem:\n\t\t\tv2, v1 := ce.popValue(), ce.popValue()\n\t\t\tif v2 == 0 {\n\t\t\t\tpanic(wasmruntime.ErrRuntimeIntegerDivideByZero)\n\t\t\t}\n\t\t\tswitch signedInt(op.B1) {\n\t\t\tcase signedInt32:\n\t\t\t\td := int32(v2)\n\t\t\t\tn := int32(v1)\n\t\t\t\tce.pushValue(uint64(uint32(n % d)))\n\t\t\tcase signedInt64:\n\t\t\t\td := int64(v2)\n\t\t\t\tn := int64(v1)\n\t\t\t\tce.pushValue(uint64(n % d))\n\t\t\tcase signedUint32:\n\t\t\t\td := uint32(v2)\n\t\t\t\tn := uint32(v1)\n\t\t\t\tce.pushValue(uint64(n % d))\n\t\t\tcase signedUint64:\n\t\t\t\td := v2\n\t\t\t\tn := v1\n\t\t\t\tce.pushValue(n % d)\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindAnd:\n\t\t\tv2 := ce.popValue()\n\t\t\tv1 := ce.popValue()\n\t\t\tif op.B1 == 0 {\n\t\t\t\t// unsignedInt32\n\t\t\t\tce.pushValue(uint64(uint32(v2) & uint32(v1)))\n\t\t\t} else {\n\t\t\t\t// unsignedInt64\n\t\t\t\tce.pushValue(uint64(v2 & v1))\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindOr:\n\t\t\tv2 := ce.popValue()\n\t\t\tv1 := ce.popValue()\n\t\t\tif op.B1 == 0 {\n\t\t\t\t// unsignedInt32\n\t\t\t\tce.pushValue(uint64(uint32(v2) | uint32(v1)))\n\t\t\t} else {\n\t\t\t\t// unsignedInt64\n\t\t\t\tce.pushValue(uint64(v2 | v1))\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindXor:\n\t\t\tv2 := ce.popValue()\n\t\t\tv1 := ce.popValue()\n\t\t\tif op.B1 == 0 {\n\t\t\t\t// unsignedInt32\n\t\t\t\tce.pushValue(uint64(uint32(v2) ^ uint32(v1)))\n\t\t\t} else {\n\t\t\t\t// unsignedInt64\n\t\t\t\tce.pushValue(uint64(v2 ^ v1))\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindShl:\n\t\t\tv2 := ce.popValue()\n\t\t\tv1 := ce.popValue()\n\t\t\tif op.B1 == 0 {\n\t\t\t\t// unsignedInt32\n\t\t\t\tce.pushValue(uint64(uint32(v1) << (uint32(v2) % 32)))\n\t\t\t} else {\n\t\t\t\t// unsignedInt64\n\t\t\t\tce.pushValue(v1 << (v2 % 64))\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindShr:\n\t\t\tv2 := ce.popValue()\n\t\t\tv1 := ce.popValue()\n\t\t\tswitch signedInt(op.B1) {\n\t\t\tcase signedInt32:\n\t\t\t\tce.pushValue(uint64(uint32(int32(v1) >> (uint32(v2) % 32))))\n\t\t\tcase signedInt64:\n\t\t\t\tce.pushValue(uint64(int64(v1) >> (v2 % 64)))\n\t\t\tcase signedUint32:\n\t\t\t\tce.pushValue(uint64(uint32(v1) >> (uint32(v2) % 32)))\n\t\t\tcase signedUint64:\n\t\t\t\tce.pushValue(v1 >> (v2 % 64))\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindRotl:\n\t\t\tv2 := ce.popValue()\n\t\t\tv1 := ce.popValue()\n\t\t\tif op.B1 == 0 {\n\t\t\t\t// unsignedInt32\n\t\t\t\tce.pushValue(uint64(bits.RotateLeft32(uint32(v1), int(v2))))\n\t\t\t} else {\n\t\t\t\t// unsignedInt64\n\t\t\t\tce.pushValue(uint64(bits.RotateLeft64(v1, int(v2))))\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindRotr:\n\t\t\tv2 := ce.popValue()\n\t\t\tv1 := ce.popValue()\n\t\t\tif op.B1 == 0 {\n\t\t\t\t// unsignedInt32\n\t\t\t\tce.pushValue(uint64(bits.RotateLeft32(uint32(v1), -int(v2))))\n\t\t\t} else {\n\t\t\t\t// unsignedInt64\n\t\t\t\tce.pushValue(uint64(bits.RotateLeft64(v1, -int(v2))))\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindAbs:\n\t\t\tif op.B1 == 0 {\n\t\t\t\t// float32\n\t\t\t\tconst mask uint32 = 1 << 31\n\t\t\t\tce.pushValue(uint64(uint32(ce.popValue()) &^ mask))\n\t\t\t} else {\n\t\t\t\t// float64\n\t\t\t\tconst mask uint64 = 1 << 63\n\t\t\t\tce.pushValue(ce.popValue() &^ mask)\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindNeg:\n\t\t\tif op.B1 == 0 {\n\t\t\t\t// float32\n\t\t\t\tv := -math.Float32frombits(uint32(ce.popValue()))\n\t\t\t\tce.pushValue(uint64(math.Float32bits(v)))\n\t\t\t} else {\n\t\t\t\t// float64\n\t\t\t\tv := -math.Float64frombits(ce.popValue())\n\t\t\t\tce.pushValue(math.Float64bits(v))\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindCeil:\n\t\t\tif op.B1 == 0 {\n\t\t\t\t// float32\n\t\t\t\tv := moremath.WasmCompatCeilF32(math.Float32frombits(uint32(ce.popValue())))\n\t\t\t\tce.pushValue(uint64(math.Float32bits(v)))\n\t\t\t} else {\n\t\t\t\t// float64\n\t\t\t\tv := moremath.WasmCompatCeilF64(math.Float64frombits(ce.popValue()))\n\t\t\t\tce.pushValue(math.Float64bits(v))\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindFloor:\n\t\t\tif op.B1 == 0 {\n\t\t\t\t// float32\n\t\t\t\tv := moremath.WasmCompatFloorF32(math.Float32frombits(uint32(ce.popValue())))\n\t\t\t\tce.pushValue(uint64(math.Float32bits(v)))\n\t\t\t} else {\n\t\t\t\t// float64\n\t\t\t\tv := moremath.WasmCompatFloorF64(math.Float64frombits(ce.popValue()))\n\t\t\t\tce.pushValue(math.Float64bits(v))\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindTrunc:\n\t\t\tif op.B1 == 0 {\n\t\t\t\t// float32\n\t\t\t\tv := moremath.WasmCompatTruncF32(math.Float32frombits(uint32(ce.popValue())))\n\t\t\t\tce.pushValue(uint64(math.Float32bits(v)))\n\t\t\t} else {\n\t\t\t\t// float64\n\t\t\t\tv := moremath.WasmCompatTruncF64(math.Float64frombits(ce.popValue()))\n\t\t\t\tce.pushValue(math.Float64bits(v))\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindNearest:\n\t\t\tif op.B1 == 0 {\n\t\t\t\t// float32\n\t\t\t\tf := math.Float32frombits(uint32(ce.popValue()))\n\t\t\t\tce.pushValue(uint64(math.Float32bits(moremath.WasmCompatNearestF32(f))))\n\t\t\t} else {\n\t\t\t\t// float64\n\t\t\t\tf := math.Float64frombits(ce.popValue())\n\t\t\t\tce.pushValue(math.Float64bits(moremath.WasmCompatNearestF64(f)))\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindSqrt:\n\t\t\tif op.B1 == 0 {\n\t\t\t\t// float32\n\t\t\t\tv := math.Sqrt(float64(math.Float32frombits(uint32(ce.popValue()))))\n\t\t\t\tce.pushValue(uint64(math.Float32bits(float32(v))))\n\t\t\t} else {\n\t\t\t\t// float64\n\t\t\t\tv := math.Sqrt(math.Float64frombits(ce.popValue()))\n\t\t\t\tce.pushValue(math.Float64bits(v))\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindMin:\n\t\t\tif op.B1 == 0 {\n\t\t\t\t// float32\n\t\t\t\tce.pushValue(wasmCompatMin32bits(uint32(ce.popValue()), uint32(ce.popValue())))\n\t\t\t} else {\n\t\t\t\tv2 := math.Float64frombits(ce.popValue())\n\t\t\t\tv1 := math.Float64frombits(ce.popValue())\n\t\t\t\tce.pushValue(math.Float64bits(moremath.WasmCompatMin64(v1, v2)))\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindMax:\n\t\t\tif op.B1 == 0 {\n\t\t\t\tce.pushValue(wasmCompatMax32bits(uint32(ce.popValue()), uint32(ce.popValue())))\n\t\t\t} else {\n\t\t\t\t// float64\n\t\t\t\tv2 := math.Float64frombits(ce.popValue())\n\t\t\t\tv1 := math.Float64frombits(ce.popValue())\n\t\t\t\tce.pushValue(math.Float64bits(moremath.WasmCompatMax64(v1, v2)))\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindCopysign:\n\t\t\tif op.B1 == 0 {\n\t\t\t\t// float32\n\t\t\t\tv2 := uint32(ce.popValue())\n\t\t\t\tv1 := uint32(ce.popValue())\n\t\t\t\tconst signbit = 1 << 31\n\t\t\t\tce.pushValue(uint64(v1&^signbit | v2&signbit))\n\t\t\t} else {\n\t\t\t\t// float64\n\t\t\t\tv2 := ce.popValue()\n\t\t\t\tv1 := ce.popValue()\n\t\t\t\tconst signbit = 1 << 63\n\t\t\t\tce.pushValue(v1&^signbit | v2&signbit)\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindI32WrapFromI64:\n\t\t\tce.pushValue(uint64(uint32(ce.popValue())))\n\t\t\tframe.pc++\n\t\tcase operationKindITruncFromF:\n\t\t\tif op.B1 == 0 {\n\t\t\t\t// float32\n\t\t\t\tswitch signedInt(op.B2) {\n\t\t\t\tcase signedInt32:\n\t\t\t\t\tv := math.Trunc(float64(math.Float32frombits(uint32(ce.popValue()))))\n\t\t\t\t\tif math.IsNaN(v) { // NaN cannot be compared with themselves, so we have to use IsNaN\n\t\t\t\t\t\tif op.B3 {\n\t\t\t\t\t\t\t// non-trapping conversion must cast nan to zero.\n\t\t\t\t\t\t\tv = 0\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tpanic(wasmruntime.ErrRuntimeInvalidConversionToInteger)\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if v < math.MinInt32 || v > math.MaxInt32 {\n\t\t\t\t\t\tif op.B3 {\n\t\t\t\t\t\t\t// non-trapping conversion must \"saturate\" the value for overflowing sources.\n\t\t\t\t\t\t\tif v < 0 {\n\t\t\t\t\t\t\t\tv = math.MinInt32\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tv = math.MaxInt32\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tpanic(wasmruntime.ErrRuntimeIntegerOverflow)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tce.pushValue(uint64(uint32(int32(v))))\n\t\t\t\tcase signedInt64:\n\t\t\t\t\tv := math.Trunc(float64(math.Float32frombits(uint32(ce.popValue()))))\n\t\t\t\t\tres := int64(v)\n\t\t\t\t\tif math.IsNaN(v) { // NaN cannot be compared with themselves, so we have to use IsNaN\n\t\t\t\t\t\tif op.B3 {\n\t\t\t\t\t\t\t// non-trapping conversion must cast nan to zero.\n\t\t\t\t\t\t\tres = 0\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tpanic(wasmruntime.ErrRuntimeInvalidConversionToInteger)\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if v < math.MinInt64 || v >= math.MaxInt64 {\n\t\t\t\t\t\t// Note: math.MaxInt64 is rounded up to math.MaxInt64+1 in 64-bit float representation,\n\t\t\t\t\t\t// and that's why we use '>=' not '>' to check overflow.\n\t\t\t\t\t\tif op.B3 {\n\t\t\t\t\t\t\t// non-trapping conversion must \"saturate\" the value for overflowing sources.\n\t\t\t\t\t\t\tif v < 0 {\n\t\t\t\t\t\t\t\tres = math.MinInt64\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tres = math.MaxInt64\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tpanic(wasmruntime.ErrRuntimeIntegerOverflow)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tce.pushValue(uint64(res))\n\t\t\t\tcase signedUint32:\n\t\t\t\t\tv := math.Trunc(float64(math.Float32frombits(uint32(ce.popValue()))))\n\t\t\t\t\tif math.IsNaN(v) { // NaN cannot be compared with themselves, so we have to use IsNaN\n\t\t\t\t\t\tif op.B3 {\n\t\t\t\t\t\t\t// non-trapping conversion must cast nan to zero.\n\t\t\t\t\t\t\tv = 0\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tpanic(wasmruntime.ErrRuntimeInvalidConversionToInteger)\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if v < 0 || v > math.MaxUint32 {\n\t\t\t\t\t\tif op.B3 {\n\t\t\t\t\t\t\t// non-trapping conversion must \"saturate\" the value for overflowing source.\n\t\t\t\t\t\t\tif v < 0 {\n\t\t\t\t\t\t\t\tv = 0\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tv = math.MaxUint32\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tpanic(wasmruntime.ErrRuntimeIntegerOverflow)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tce.pushValue(uint64(uint32(v)))\n\t\t\t\tcase signedUint64:\n\t\t\t\t\tv := math.Trunc(float64(math.Float32frombits(uint32(ce.popValue()))))\n\t\t\t\t\tres := uint64(v)\n\t\t\t\t\tif math.IsNaN(v) { // NaN cannot be compared with themselves, so we have to use IsNaN\n\t\t\t\t\t\tif op.B3 {\n\t\t\t\t\t\t\t// non-trapping conversion must cast nan to zero.\n\t\t\t\t\t\t\tres = 0\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tpanic(wasmruntime.ErrRuntimeInvalidConversionToInteger)\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if v < 0 || v >= math.MaxUint64 {\n\t\t\t\t\t\t// Note: math.MaxUint64 is rounded up to math.MaxUint64+1 in 64-bit float representation,\n\t\t\t\t\t\t// and that's why we use '>=' not '>' to check overflow.\n\t\t\t\t\t\tif op.B3 {\n\t\t\t\t\t\t\t// non-trapping conversion must \"saturate\" the value for overflowing source.\n\t\t\t\t\t\t\tif v < 0 {\n\t\t\t\t\t\t\t\tres = 0\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tres = math.MaxUint64\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tpanic(wasmruntime.ErrRuntimeIntegerOverflow)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tce.pushValue(res)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// float64\n\t\t\t\tswitch signedInt(op.B2) {\n\t\t\t\tcase signedInt32:\n\t\t\t\t\tv := math.Trunc(math.Float64frombits(ce.popValue()))\n\t\t\t\t\tif math.IsNaN(v) { // NaN cannot be compared with themselves, so we have to use IsNaN\n\t\t\t\t\t\tif op.B3 {\n\t\t\t\t\t\t\t// non-trapping conversion must cast nan to zero.\n\t\t\t\t\t\t\tv = 0\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tpanic(wasmruntime.ErrRuntimeInvalidConversionToInteger)\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if v < math.MinInt32 || v > math.MaxInt32 {\n\t\t\t\t\t\tif op.B3 {\n\t\t\t\t\t\t\t// non-trapping conversion must \"saturate\" the value for overflowing source.\n\t\t\t\t\t\t\tif v < 0 {\n\t\t\t\t\t\t\t\tv = math.MinInt32\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tv = math.MaxInt32\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tpanic(wasmruntime.ErrRuntimeIntegerOverflow)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tce.pushValue(uint64(uint32(int32(v))))\n\t\t\t\tcase signedInt64:\n\t\t\t\t\tv := math.Trunc(math.Float64frombits(ce.popValue()))\n\t\t\t\t\tres := int64(v)\n\t\t\t\t\tif math.IsNaN(v) { // NaN cannot be compared with themselves, so we have to use IsNaN\n\t\t\t\t\t\tif op.B3 {\n\t\t\t\t\t\t\t// non-trapping conversion must cast nan to zero.\n\t\t\t\t\t\t\tres = 0\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tpanic(wasmruntime.ErrRuntimeInvalidConversionToInteger)\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if v < math.MinInt64 || v >= math.MaxInt64 {\n\t\t\t\t\t\t// Note: math.MaxInt64 is rounded up to math.MaxInt64+1 in 64-bit float representation,\n\t\t\t\t\t\t// and that's why we use '>=' not '>' to check overflow.\n\t\t\t\t\t\tif op.B3 {\n\t\t\t\t\t\t\t// non-trapping conversion must \"saturate\" the value for overflowing source.\n\t\t\t\t\t\t\tif v < 0 {\n\t\t\t\t\t\t\t\tres = math.MinInt64\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tres = math.MaxInt64\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tpanic(wasmruntime.ErrRuntimeIntegerOverflow)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tce.pushValue(uint64(res))\n\t\t\t\tcase signedUint32:\n\t\t\t\t\tv := math.Trunc(math.Float64frombits(ce.popValue()))\n\t\t\t\t\tif math.IsNaN(v) { // NaN cannot be compared with themselves, so we have to use IsNaN\n\t\t\t\t\t\tif op.B3 {\n\t\t\t\t\t\t\t// non-trapping conversion must cast nan to zero.\n\t\t\t\t\t\t\tv = 0\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tpanic(wasmruntime.ErrRuntimeInvalidConversionToInteger)\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if v < 0 || v > math.MaxUint32 {\n\t\t\t\t\t\tif op.B3 {\n\t\t\t\t\t\t\t// non-trapping conversion must \"saturate\" the value for overflowing source.\n\t\t\t\t\t\t\tif v < 0 {\n\t\t\t\t\t\t\t\tv = 0\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tv = math.MaxUint32\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tpanic(wasmruntime.ErrRuntimeIntegerOverflow)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tce.pushValue(uint64(uint32(v)))\n\t\t\t\tcase signedUint64:\n\t\t\t\t\tv := math.Trunc(math.Float64frombits(ce.popValue()))\n\t\t\t\t\tres := uint64(v)\n\t\t\t\t\tif math.IsNaN(v) { // NaN cannot be compared with themselves, so we have to use IsNaN\n\t\t\t\t\t\tif op.B3 {\n\t\t\t\t\t\t\t// non-trapping conversion must cast nan to zero.\n\t\t\t\t\t\t\tres = 0\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tpanic(wasmruntime.ErrRuntimeInvalidConversionToInteger)\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if v < 0 || v >= math.MaxUint64 {\n\t\t\t\t\t\t// Note: math.MaxUint64 is rounded up to math.MaxUint64+1 in 64-bit float representation,\n\t\t\t\t\t\t// and that's why we use '>=' not '>' to check overflow.\n\t\t\t\t\t\tif op.B3 {\n\t\t\t\t\t\t\t// non-trapping conversion must \"saturate\" the value for overflowing source.\n\t\t\t\t\t\t\tif v < 0 {\n\t\t\t\t\t\t\t\tres = 0\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tres = math.MaxUint64\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tpanic(wasmruntime.ErrRuntimeIntegerOverflow)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tce.pushValue(res)\n\t\t\t\t}\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindFConvertFromI:\n\t\t\tswitch signedInt(op.B1) {\n\t\t\tcase signedInt32:\n\t\t\t\tif op.B2 == 0 {\n\t\t\t\t\t// float32\n\t\t\t\t\tv := float32(int32(ce.popValue()))\n\t\t\t\t\tce.pushValue(uint64(math.Float32bits(v)))\n\t\t\t\t} else {\n\t\t\t\t\t// float64\n\t\t\t\t\tv := float64(int32(ce.popValue()))\n\t\t\t\t\tce.pushValue(math.Float64bits(v))\n\t\t\t\t}\n\t\t\tcase signedInt64:\n\t\t\t\tif op.B2 == 0 {\n\t\t\t\t\t// float32\n\t\t\t\t\tv := float32(int64(ce.popValue()))\n\t\t\t\t\tce.pushValue(uint64(math.Float32bits(v)))\n\t\t\t\t} else {\n\t\t\t\t\t// float64\n\t\t\t\t\tv := float64(int64(ce.popValue()))\n\t\t\t\t\tce.pushValue(math.Float64bits(v))\n\t\t\t\t}\n\t\t\tcase signedUint32:\n\t\t\t\tif op.B2 == 0 {\n\t\t\t\t\t// float32\n\t\t\t\t\tv := float32(uint32(ce.popValue()))\n\t\t\t\t\tce.pushValue(uint64(math.Float32bits(v)))\n\t\t\t\t} else {\n\t\t\t\t\t// float64\n\t\t\t\t\tv := float64(uint32(ce.popValue()))\n\t\t\t\t\tce.pushValue(math.Float64bits(v))\n\t\t\t\t}\n\t\t\tcase signedUint64:\n\t\t\t\tif op.B2 == 0 {\n\t\t\t\t\t// float32\n\t\t\t\t\tv := float32(ce.popValue())\n\t\t\t\t\tce.pushValue(uint64(math.Float32bits(v)))\n\t\t\t\t} else {\n\t\t\t\t\t// float64\n\t\t\t\t\tv := float64(ce.popValue())\n\t\t\t\t\tce.pushValue(math.Float64bits(v))\n\t\t\t\t}\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindF32DemoteFromF64:\n\t\t\tv := float32(math.Float64frombits(ce.popValue()))\n\t\t\tce.pushValue(uint64(math.Float32bits(v)))\n\t\t\tframe.pc++\n\t\tcase operationKindF64PromoteFromF32:\n\t\t\tv := float64(math.Float32frombits(uint32(ce.popValue())))\n\t\t\tce.pushValue(math.Float64bits(v))\n\t\t\tframe.pc++\n\t\tcase operationKindExtend:\n\t\t\tif op.B1 == 1 {\n\t\t\t\t// Signed.\n\t\t\t\tv := int64(int32(ce.popValue()))\n\t\t\t\tce.pushValue(uint64(v))\n\t\t\t} else {\n\t\t\t\tv := uint64(uint32(ce.popValue()))\n\t\t\t\tce.pushValue(v)\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindSignExtend32From8:\n\t\t\tv := uint32(int8(ce.popValue()))\n\t\t\tce.pushValue(uint64(v))\n\t\t\tframe.pc++\n\t\tcase operationKindSignExtend32From16:\n\t\t\tv := uint32(int16(ce.popValue()))\n\t\t\tce.pushValue(uint64(v))\n\t\t\tframe.pc++\n\t\tcase operationKindSignExtend64From8:\n\t\t\tv := int64(int8(ce.popValue()))\n\t\t\tce.pushValue(uint64(v))\n\t\t\tframe.pc++\n\t\tcase operationKindSignExtend64From16:\n\t\t\tv := int64(int16(ce.popValue()))\n\t\t\tce.pushValue(uint64(v))\n\t\t\tframe.pc++\n\t\tcase operationKindSignExtend64From32:\n\t\t\tv := int64(int32(ce.popValue()))\n\t\t\tce.pushValue(uint64(v))\n\t\t\tframe.pc++\n\t\tcase operationKindMemoryInit:\n\t\t\tdataInstance := dataInstances[op.U1]\n\t\t\tcopySize := ce.popValue()\n\t\t\tinDataOffset := ce.popValue()\n\t\t\tinMemoryOffset := ce.popValue()\n\t\t\tif inDataOffset+copySize > uint64(len(dataInstance)) ||\n\t\t\t\tinMemoryOffset+copySize > uint64(len(memoryInst.Buffer)) {\n\t\t\t\tpanic(wasmruntime.ErrRuntimeOutOfBoundsMemoryAccess)\n\t\t\t} else if copySize != 0 {\n\t\t\t\tcopy(memoryInst.Buffer[inMemoryOffset:inMemoryOffset+copySize], dataInstance[inDataOffset:])\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindDataDrop:\n\t\t\tdataInstances[op.U1] = nil\n\t\t\tframe.pc++\n\t\tcase operationKindMemoryCopy:\n\t\t\tmemLen := uint64(len(memoryInst.Buffer))\n\t\t\tcopySize := ce.popValue()\n\t\t\tsourceOffset := ce.popValue()\n\t\t\tdestinationOffset := ce.popValue()\n\t\t\tif sourceOffset+copySize > memLen || destinationOffset+copySize > memLen {\n\t\t\t\tpanic(wasmruntime.ErrRuntimeOutOfBoundsMemoryAccess)\n\t\t\t} else if copySize != 0 {\n\t\t\t\tcopy(memoryInst.Buffer[destinationOffset:],\n\t\t\t\t\tmemoryInst.Buffer[sourceOffset:sourceOffset+copySize])\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindMemoryFill:\n\t\t\tfillSize := ce.popValue()\n\t\t\tvalue := byte(ce.popValue())\n\t\t\toffset := ce.popValue()\n\t\t\tif fillSize+offset > uint64(len(memoryInst.Buffer)) {\n\t\t\t\tpanic(wasmruntime.ErrRuntimeOutOfBoundsMemoryAccess)\n\t\t\t} else if fillSize != 0 {\n\t\t\t\t// Uses the copy trick for faster filling the buffer with the value.\n\t\t\t\t// https://github.com/golang/go/blob/go1.24.0/src/bytes/bytes.go#L664-L673\n\t\t\t\tbuf := memoryInst.Buffer[offset : offset+fillSize]\n\t\t\t\tif value == 0 {\n\t\t\t\t\tclear(buf)\n\t\t\t\t} else {\n\t\t\t\t\tbuf[0] = value\n\t\t\t\t\tfor i := 1; i < len(buf); {\n\t\t\t\t\t\tchunk := min(i, 8192)\n\t\t\t\t\t\ti += copy(buf[i:], buf[:chunk])\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindTableInit:\n\t\t\telementInstance := elementInstances[op.U1]\n\t\t\tcopySize := ce.popValue()\n\t\t\tinElementOffset := ce.popValue()\n\t\t\tinTableOffset := ce.popValue()\n\t\t\ttable := tables[op.U2]\n\t\t\tif inElementOffset+copySize > uint64(len(elementInstance)) ||\n\t\t\t\tinTableOffset+copySize > uint64(len(table.References)) {\n\t\t\t\tpanic(wasmruntime.ErrRuntimeInvalidTableAccess)\n\t\t\t} else if copySize != 0 {\n\t\t\t\tcopy(table.References[inTableOffset:inTableOffset+copySize], elementInstance[inElementOffset:])\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindElemDrop:\n\t\t\telementInstances[op.U1] = nil\n\t\t\tframe.pc++\n\t\tcase operationKindTableCopy:\n\t\t\tsrcTable, dstTable := tables[op.U1].References, tables[op.U2].References\n\t\t\tcopySize := ce.popValue()\n\t\t\tsourceOffset := ce.popValue()\n\t\t\tdestinationOffset := ce.popValue()\n\t\t\tif sourceOffset+copySize > uint64(len(srcTable)) || destinationOffset+copySize > uint64(len(dstTable)) {\n\t\t\t\tpanic(wasmruntime.ErrRuntimeInvalidTableAccess)\n\t\t\t} else if copySize != 0 {\n\t\t\t\tcopy(dstTable[destinationOffset:], srcTable[sourceOffset:sourceOffset+copySize])\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindRefFunc:\n\t\t\tce.pushValue(uint64(uintptr(unsafe.Pointer(&functions[op.U1]))))\n\t\t\tframe.pc++\n\t\tcase operationKindTableGet:\n\t\t\ttable := tables[op.U1]\n\n\t\t\toffset := ce.popValue()\n\t\t\tif offset >= uint64(len(table.References)) {\n\t\t\t\tpanic(wasmruntime.ErrRuntimeInvalidTableAccess)\n\t\t\t}\n\n\t\t\tce.pushValue(uint64(table.References[offset]))\n\t\t\tframe.pc++\n\t\tcase operationKindTableSet:\n\t\t\ttable := tables[op.U1]\n\t\t\tref := ce.popValue()\n\n\t\t\toffset := ce.popValue()\n\t\t\tif offset >= uint64(len(table.References)) {\n\t\t\t\tpanic(wasmruntime.ErrRuntimeInvalidTableAccess)\n\t\t\t}\n\n\t\t\ttable.References[offset] = uintptr(ref) // externrefs are opaque uint64.\n\t\t\tframe.pc++\n\t\tcase operationKindTableSize:\n\t\t\ttable := tables[op.U1]\n\t\t\tce.pushValue(uint64(len(table.References)))\n\t\t\tframe.pc++\n\t\tcase operationKindTableGrow:\n\t\t\ttable := tables[op.U1]\n\t\t\tnum, ref := ce.popValue(), ce.popValue()\n\t\t\tret := table.Grow(uint32(num), uintptr(ref))\n\t\t\tce.pushValue(uint64(ret))\n\t\t\tframe.pc++\n\t\tcase operationKindTableFill:\n\t\t\ttable := tables[op.U1]\n\t\t\tnum := ce.popValue()\n\t\t\tref := uintptr(ce.popValue())\n\t\t\toffset := ce.popValue()\n\t\t\tif num+offset > uint64(len(table.References)) {\n\t\t\t\tpanic(wasmruntime.ErrRuntimeInvalidTableAccess)\n\t\t\t} else if num > 0 {\n\t\t\t\t// Uses the copy trick for faster filling the region with the value.\n\t\t\t\t// https://github.com/golang/go/blob/go1.24.0/src/slices/slices.go#L514-L517\n\t\t\t\ttargetRegion := table.References[offset : offset+num]\n\t\t\t\ttargetRegion[0] = ref\n\t\t\t\tfor i := 1; i < len(targetRegion); i *= 2 {\n\t\t\t\t\tcopy(targetRegion[i:], targetRegion[:i])\n\t\t\t\t}\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindV128Const:\n\t\t\tlo, hi := op.U1, op.U2\n\t\t\tce.pushValue(lo)\n\t\t\tce.pushValue(hi)\n\t\t\tframe.pc++\n\t\tcase operationKindV128Add:\n\t\t\tyHigh, yLow := ce.popValue(), ce.popValue()\n\t\t\txHigh, xLow := ce.popValue(), ce.popValue()\n\t\t\tswitch op.B1 {\n\t\t\tcase shapeI8x16:\n\t\t\t\tce.pushValue(\n\t\t\t\t\tuint64(uint8(xLow>>8)+uint8(yLow>>8))<<8 | uint64(uint8(xLow)+uint8(yLow)) |\n\t\t\t\t\t\tuint64(uint8(xLow>>24)+uint8(yLow>>24))<<24 | uint64(uint8(xLow>>16)+uint8(yLow>>16))<<16 |\n\t\t\t\t\t\tuint64(uint8(xLow>>40)+uint8(yLow>>40))<<40 | uint64(uint8(xLow>>32)+uint8(yLow>>32))<<32 |\n\t\t\t\t\t\tuint64(uint8(xLow>>56)+uint8(yLow>>56))<<56 | uint64(uint8(xLow>>48)+uint8(yLow>>48))<<48,\n\t\t\t\t)\n\t\t\t\tce.pushValue(\n\t\t\t\t\tuint64(uint8(xHigh>>8)+uint8(yHigh>>8))<<8 | uint64(uint8(xHigh)+uint8(yHigh)) |\n\t\t\t\t\t\tuint64(uint8(xHigh>>24)+uint8(yHigh>>24))<<24 | uint64(uint8(xHigh>>16)+uint8(yHigh>>16))<<16 |\n\t\t\t\t\t\tuint64(uint8(xHigh>>40)+uint8(yHigh>>40))<<40 | uint64(uint8(xHigh>>32)+uint8(yHigh>>32))<<32 |\n\t\t\t\t\t\tuint64(uint8(xHigh>>56)+uint8(yHigh>>56))<<56 | uint64(uint8(xHigh>>48)+uint8(yHigh>>48))<<48,\n\t\t\t\t)\n\t\t\tcase shapeI16x8:\n\t\t\t\tce.pushValue(\n\t\t\t\t\tuint64(uint16(xLow>>16+yLow>>16))<<16 | uint64(uint16(xLow)+uint16(yLow)) |\n\t\t\t\t\t\tuint64(uint16(xLow>>48+yLow>>48))<<48 | uint64(uint16(xLow>>32+yLow>>32))<<32,\n\t\t\t\t)\n\t\t\t\tce.pushValue(\n\t\t\t\t\tuint64(uint16(xHigh>>16)+uint16(yHigh>>16))<<16 | uint64(uint16(xHigh)+uint16(yHigh)) |\n\t\t\t\t\t\tuint64(uint16(xHigh>>48)+uint16(yHigh>>48))<<48 | uint64(uint16(xHigh>>32)+uint16(yHigh>>32))<<32,\n\t\t\t\t)\n\t\t\tcase shapeI32x4:\n\t\t\t\tce.pushValue(uint64(uint32(xLow>>32)+uint32(yLow>>32))<<32 | uint64(uint32(xLow)+uint32(yLow)))\n\t\t\t\tce.pushValue(uint64(uint32(xHigh>>32)+uint32(yHigh>>32))<<32 | uint64(uint32(xHigh)+uint32(yHigh)))\n\t\t\tcase shapeI64x2:\n\t\t\t\tce.pushValue(xLow + yLow)\n\t\t\t\tce.pushValue(xHigh + yHigh)\n\t\t\tcase shapeF32x4:\n\t\t\t\tce.pushValue(\n\t\t\t\t\taddFloat32bits(uint32(xLow), uint32(yLow)) | addFloat32bits(uint32(xLow>>32), uint32(yLow>>32))<<32,\n\t\t\t\t)\n\t\t\t\tce.pushValue(\n\t\t\t\t\taddFloat32bits(uint32(xHigh), uint32(yHigh)) | addFloat32bits(uint32(xHigh>>32), uint32(yHigh>>32))<<32,\n\t\t\t\t)\n\t\t\tcase shapeF64x2:\n\t\t\t\tce.pushValue(math.Float64bits(math.Float64frombits(xLow) + math.Float64frombits(yLow)))\n\t\t\t\tce.pushValue(math.Float64bits(math.Float64frombits(xHigh) + math.Float64frombits(yHigh)))\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindV128Sub:\n\t\t\tyHigh, yLow := ce.popValue(), ce.popValue()\n\t\t\txHigh, xLow := ce.popValue(), ce.popValue()\n\t\t\tswitch op.B1 {\n\t\t\tcase shapeI8x16:\n\t\t\t\tce.pushValue(\n\t\t\t\t\tuint64(uint8(xLow>>8)-uint8(yLow>>8))<<8 | uint64(uint8(xLow)-uint8(yLow)) |\n\t\t\t\t\t\tuint64(uint8(xLow>>24)-uint8(yLow>>24))<<24 | uint64(uint8(xLow>>16)-uint8(yLow>>16))<<16 |\n\t\t\t\t\t\tuint64(uint8(xLow>>40)-uint8(yLow>>40))<<40 | uint64(uint8(xLow>>32)-uint8(yLow>>32))<<32 |\n\t\t\t\t\t\tuint64(uint8(xLow>>56)-uint8(yLow>>56))<<56 | uint64(uint8(xLow>>48)-uint8(yLow>>48))<<48,\n\t\t\t\t)\n\t\t\t\tce.pushValue(\n\t\t\t\t\tuint64(uint8(xHigh>>8)-uint8(yHigh>>8))<<8 | uint64(uint8(xHigh)-uint8(yHigh)) |\n\t\t\t\t\t\tuint64(uint8(xHigh>>24)-uint8(yHigh>>24))<<24 | uint64(uint8(xHigh>>16)-uint8(yHigh>>16))<<16 |\n\t\t\t\t\t\tuint64(uint8(xHigh>>40)-uint8(yHigh>>40))<<40 | uint64(uint8(xHigh>>32)-uint8(yHigh>>32))<<32 |\n\t\t\t\t\t\tuint64(uint8(xHigh>>56)-uint8(yHigh>>56))<<56 | uint64(uint8(xHigh>>48)-uint8(yHigh>>48))<<48,\n\t\t\t\t)\n\t\t\tcase shapeI16x8:\n\t\t\t\tce.pushValue(\n\t\t\t\t\tuint64(uint16(xLow>>16)-uint16(yLow>>16))<<16 | uint64(uint16(xLow)-uint16(yLow)) |\n\t\t\t\t\t\tuint64(uint16(xLow>>48)-uint16(yLow>>48))<<48 | uint64(uint16(xLow>>32)-uint16(yLow>>32))<<32,\n\t\t\t\t)\n\t\t\t\tce.pushValue(\n\t\t\t\t\tuint64(uint16(xHigh>>16)-uint16(yHigh>>16))<<16 | uint64(uint16(xHigh)-uint16(yHigh)) |\n\t\t\t\t\t\tuint64(uint16(xHigh>>48)-uint16(yHigh>>48))<<48 | uint64(uint16(xHigh>>32)-uint16(yHigh>>32))<<32,\n\t\t\t\t)\n\t\t\tcase shapeI32x4:\n\t\t\t\tce.pushValue(uint64(uint32(xLow>>32-yLow>>32))<<32 | uint64(uint32(xLow)-uint32(yLow)))\n\t\t\t\tce.pushValue(uint64(uint32(xHigh>>32-yHigh>>32))<<32 | uint64(uint32(xHigh)-uint32(yHigh)))\n\t\t\tcase shapeI64x2:\n\t\t\t\tce.pushValue(xLow - yLow)\n\t\t\t\tce.pushValue(xHigh - yHigh)\n\t\t\tcase shapeF32x4:\n\t\t\t\tce.pushValue(\n\t\t\t\t\tsubFloat32bits(uint32(xLow), uint32(yLow)) | subFloat32bits(uint32(xLow>>32), uint32(yLow>>32))<<32,\n\t\t\t\t)\n\t\t\t\tce.pushValue(\n\t\t\t\t\tsubFloat32bits(uint32(xHigh), uint32(yHigh)) | subFloat32bits(uint32(xHigh>>32), uint32(yHigh>>32))<<32,\n\t\t\t\t)\n\t\t\tcase shapeF64x2:\n\t\t\t\tce.pushValue(math.Float64bits(math.Float64frombits(xLow) - math.Float64frombits(yLow)))\n\t\t\t\tce.pushValue(math.Float64bits(math.Float64frombits(xHigh) - math.Float64frombits(yHigh)))\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindV128Load:\n\t\t\toffset := ce.popMemoryOffset(op)\n\t\t\tswitch op.B1 {\n\t\t\tcase v128LoadType128:\n\t\t\t\tlo, ok := memoryInst.ReadUint64Le(offset)\n\t\t\t\tif !ok {\n\t\t\t\t\tpanic(wasmruntime.ErrRuntimeOutOfBoundsMemoryAccess)\n\t\t\t\t}\n\t\t\t\tce.pushValue(lo)\n\t\t\t\thi, ok := memoryInst.ReadUint64Le(offset + 8)\n\t\t\t\tif !ok {\n\t\t\t\t\tpanic(wasmruntime.ErrRuntimeOutOfBoundsMemoryAccess)\n\t\t\t\t}\n\t\t\t\tce.pushValue(hi)\n\t\t\tcase v128LoadType8x8s:\n\t\t\t\tdata, ok := memoryInst.Read(offset, 8)\n\t\t\t\tif !ok {\n\t\t\t\t\tpanic(wasmruntime.ErrRuntimeOutOfBoundsMemoryAccess)\n\t\t\t\t}\n\t\t\t\tce.pushValue(\n\t\t\t\t\tuint64(uint16(int8(data[3])))<<48 | uint64(uint16(int8(data[2])))<<32 | uint64(uint16(int8(data[1])))<<16 | uint64(uint16(int8(data[0]))),\n\t\t\t\t)\n\t\t\t\tce.pushValue(\n\t\t\t\t\tuint64(uint16(int8(data[7])))<<48 | uint64(uint16(int8(data[6])))<<32 | uint64(uint16(int8(data[5])))<<16 | uint64(uint16(int8(data[4]))),\n\t\t\t\t)\n\t\t\tcase v128LoadType8x8u:\n\t\t\t\tdata, ok := memoryInst.Read(offset, 8)\n\t\t\t\tif !ok {\n\t\t\t\t\tpanic(wasmruntime.ErrRuntimeOutOfBoundsMemoryAccess)\n\t\t\t\t}\n\t\t\t\tce.pushValue(\n\t\t\t\t\tuint64(data[3])<<48 | uint64(data[2])<<32 | uint64(data[1])<<16 | uint64(data[0]),\n\t\t\t\t)\n\t\t\t\tce.pushValue(\n\t\t\t\t\tuint64(data[7])<<48 | uint64(data[6])<<32 | uint64(data[5])<<16 | uint64(data[4]),\n\t\t\t\t)\n\t\t\tcase v128LoadType16x4s:\n\t\t\t\tdata, ok := memoryInst.Read(offset, 8)\n\t\t\t\tif !ok {\n\t\t\t\t\tpanic(wasmruntime.ErrRuntimeOutOfBoundsMemoryAccess)\n\t\t\t\t}\n\t\t\t\tce.pushValue(\n\t\t\t\t\tuint64(int16(binary.LittleEndian.Uint16(data[2:])))<<32 |\n\t\t\t\t\t\tuint64(uint32(int16(binary.LittleEndian.Uint16(data)))),\n\t\t\t\t)\n\t\t\t\tce.pushValue(\n\t\t\t\t\tuint64(uint32(int16(binary.LittleEndian.Uint16(data[6:]))))<<32 |\n\t\t\t\t\t\tuint64(uint32(int16(binary.LittleEndian.Uint16(data[4:])))),\n\t\t\t\t)\n\t\t\tcase v128LoadType16x4u:\n\t\t\t\tdata, ok := memoryInst.Read(offset, 8)\n\t\t\t\tif !ok {\n\t\t\t\t\tpanic(wasmruntime.ErrRuntimeOutOfBoundsMemoryAccess)\n\t\t\t\t}\n\t\t\t\tce.pushValue(\n\t\t\t\t\tuint64(binary.LittleEndian.Uint16(data[2:]))<<32 | uint64(binary.LittleEndian.Uint16(data)),\n\t\t\t\t)\n\t\t\t\tce.pushValue(\n\t\t\t\t\tuint64(binary.LittleEndian.Uint16(data[6:]))<<32 | uint64(binary.LittleEndian.Uint16(data[4:])),\n\t\t\t\t)\n\t\t\tcase v128LoadType32x2s:\n\t\t\t\tdata, ok := memoryInst.Read(offset, 8)\n\t\t\t\tif !ok {\n\t\t\t\t\tpanic(wasmruntime.ErrRuntimeOutOfBoundsMemoryAccess)\n\t\t\t\t}\n\t\t\t\tce.pushValue(uint64(int32(binary.LittleEndian.Uint32(data))))\n\t\t\t\tce.pushValue(uint64(int32(binary.LittleEndian.Uint32(data[4:]))))\n\t\t\tcase v128LoadType32x2u:\n\t\t\t\tdata, ok := memoryInst.Read(offset, 8)\n\t\t\t\tif !ok {\n\t\t\t\t\tpanic(wasmruntime.ErrRuntimeOutOfBoundsMemoryAccess)\n\t\t\t\t}\n\t\t\t\tce.pushValue(uint64(binary.LittleEndian.Uint32(data)))\n\t\t\t\tce.pushValue(uint64(binary.LittleEndian.Uint32(data[4:])))\n\t\t\tcase v128LoadType8Splat:\n\t\t\t\tv, ok := memoryInst.ReadByte(offset)\n\t\t\t\tif !ok {\n\t\t\t\t\tpanic(wasmruntime.ErrRuntimeOutOfBoundsMemoryAccess)\n\t\t\t\t}\n\t\t\t\tv8 := uint64(v)<<56 | uint64(v)<<48 | uint64(v)<<40 | uint64(v)<<32 |\n\t\t\t\t\tuint64(v)<<24 | uint64(v)<<16 | uint64(v)<<8 | uint64(v)\n\t\t\t\tce.pushValue(v8)\n\t\t\t\tce.pushValue(v8)\n\t\t\tcase v128LoadType16Splat:\n\t\t\t\tv, ok := memoryInst.ReadUint16Le(offset)\n\t\t\t\tif !ok {\n\t\t\t\t\tpanic(wasmruntime.ErrRuntimeOutOfBoundsMemoryAccess)\n\t\t\t\t}\n\t\t\t\tv4 := uint64(v)<<48 | uint64(v)<<32 | uint64(v)<<16 | uint64(v)\n\t\t\t\tce.pushValue(v4)\n\t\t\t\tce.pushValue(v4)\n\t\t\tcase v128LoadType32Splat:\n\t\t\t\tv, ok := memoryInst.ReadUint32Le(offset)\n\t\t\t\tif !ok {\n\t\t\t\t\tpanic(wasmruntime.ErrRuntimeOutOfBoundsMemoryAccess)\n\t\t\t\t}\n\t\t\t\tvv := uint64(v)<<32 | uint64(v)\n\t\t\t\tce.pushValue(vv)\n\t\t\t\tce.pushValue(vv)\n\t\t\tcase v128LoadType64Splat:\n\t\t\t\tlo, ok := memoryInst.ReadUint64Le(offset)\n\t\t\t\tif !ok {\n\t\t\t\t\tpanic(wasmruntime.ErrRuntimeOutOfBoundsMemoryAccess)\n\t\t\t\t}\n\t\t\t\tce.pushValue(lo)\n\t\t\t\tce.pushValue(lo)\n\t\t\tcase v128LoadType32zero:\n\t\t\t\tlo, ok := memoryInst.ReadUint32Le(offset)\n\t\t\t\tif !ok {\n\t\t\t\t\tpanic(wasmruntime.ErrRuntimeOutOfBoundsMemoryAccess)\n\t\t\t\t}\n\t\t\t\tce.pushValue(uint64(lo))\n\t\t\t\tce.pushValue(0)\n\t\t\tcase v128LoadType64zero:\n\t\t\t\tlo, ok := memoryInst.ReadUint64Le(offset)\n\t\t\t\tif !ok {\n\t\t\t\t\tpanic(wasmruntime.ErrRuntimeOutOfBoundsMemoryAccess)\n\t\t\t\t}\n\t\t\t\tce.pushValue(lo)\n\t\t\t\tce.pushValue(0)\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindV128LoadLane:\n\t\t\thi, lo := ce.popValue(), ce.popValue()\n\t\t\toffset := ce.popMemoryOffset(op)\n\t\t\tswitch op.B1 {\n\t\t\tcase 8:\n\t\t\t\tb, ok := memoryInst.ReadByte(offset)\n\t\t\t\tif !ok {\n\t\t\t\t\tpanic(wasmruntime.ErrRuntimeOutOfBoundsMemoryAccess)\n\t\t\t\t}\n\t\t\t\tif op.B2 < 8 {\n\t\t\t\t\ts := op.B2 << 3\n\t\t\t\t\tlo = (lo & ^(0xff << s)) | uint64(b)<<s\n\t\t\t\t} else {\n\t\t\t\t\ts := (op.B2 - 8) << 3\n\t\t\t\t\thi = (hi & ^(0xff << s)) | uint64(b)<<s\n\t\t\t\t}\n\t\t\tcase 16:\n\t\t\t\tb, ok := memoryInst.ReadUint16Le(offset)\n\t\t\t\tif !ok {\n\t\t\t\t\tpanic(wasmruntime.ErrRuntimeOutOfBoundsMemoryAccess)\n\t\t\t\t}\n\t\t\t\tif op.B2 < 4 {\n\t\t\t\t\ts := op.B2 << 4\n\t\t\t\t\tlo = (lo & ^(0xff_ff << s)) | uint64(b)<<s\n\t\t\t\t} else {\n\t\t\t\t\ts := (op.B2 - 4) << 4\n\t\t\t\t\thi = (hi & ^(0xff_ff << s)) | uint64(b)<<s\n\t\t\t\t}\n\t\t\tcase 32:\n\t\t\t\tb, ok := memoryInst.ReadUint32Le(offset)\n\t\t\t\tif !ok {\n\t\t\t\t\tpanic(wasmruntime.ErrRuntimeOutOfBoundsMemoryAccess)\n\t\t\t\t}\n\t\t\t\tif op.B2 < 2 {\n\t\t\t\t\ts := op.B2 << 5\n\t\t\t\t\tlo = (lo & ^(0xff_ff_ff_ff << s)) | uint64(b)<<s\n\t\t\t\t} else {\n\t\t\t\t\ts := (op.B2 - 2) << 5\n\t\t\t\t\thi = (hi & ^(0xff_ff_ff_ff << s)) | uint64(b)<<s\n\t\t\t\t}\n\t\t\tcase 64:\n\t\t\t\tb, ok := memoryInst.ReadUint64Le(offset)\n\t\t\t\tif !ok {\n\t\t\t\t\tpanic(wasmruntime.ErrRuntimeOutOfBoundsMemoryAccess)\n\t\t\t\t}\n\t\t\t\tif op.B2 == 0 {\n\t\t\t\t\tlo = b\n\t\t\t\t} else {\n\t\t\t\t\thi = b\n\t\t\t\t}\n\t\t\t}\n\t\t\tce.pushValue(lo)\n\t\t\tce.pushValue(hi)\n\t\t\tframe.pc++\n\t\tcase operationKindV128Store:\n\t\t\thi, lo := ce.popValue(), ce.popValue()\n\t\t\toffset := ce.popMemoryOffset(op)\n\t\t\t// Write the upper bytes first to trigger an early error if the memory access is out of bounds.\n\t\t\t// Otherwise, the lower bytes might be written to memory, but the upper bytes might not.\n\t\t\tif uint64(offset)+8 > math.MaxUint32 {\n\t\t\t\tpanic(wasmruntime.ErrRuntimeOutOfBoundsMemoryAccess)\n\t\t\t}\n\t\t\tif ok := memoryInst.WriteUint64Le(offset+8, hi); !ok {\n\t\t\t\tpanic(wasmruntime.ErrRuntimeOutOfBoundsMemoryAccess)\n\t\t\t}\n\t\t\tif ok := memoryInst.WriteUint64Le(offset, lo); !ok {\n\t\t\t\tpanic(wasmruntime.ErrRuntimeOutOfBoundsMemoryAccess)\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindV128StoreLane:\n\t\t\thi, lo := ce.popValue(), ce.popValue()\n\t\t\toffset := ce.popMemoryOffset(op)\n\t\t\tvar ok bool\n\t\t\tswitch op.B1 {\n\t\t\tcase 8:\n\t\t\t\tif op.B2 < 8 {\n\t\t\t\t\tok = memoryInst.WriteByte(offset, byte(lo>>(op.B2*8)))\n\t\t\t\t} else {\n\t\t\t\t\tok = memoryInst.WriteByte(offset, byte(hi>>((op.B2-8)*8)))\n\t\t\t\t}\n\t\t\tcase 16:\n\t\t\t\tif op.B2 < 4 {\n\t\t\t\t\tok = memoryInst.WriteUint16Le(offset, uint16(lo>>(op.B2*16)))\n\t\t\t\t} else {\n\t\t\t\t\tok = memoryInst.WriteUint16Le(offset, uint16(hi>>((op.B2-4)*16)))\n\t\t\t\t}\n\t\t\tcase 32:\n\t\t\t\tif op.B2 < 2 {\n\t\t\t\t\tok = memoryInst.WriteUint32Le(offset, uint32(lo>>(op.B2*32)))\n\t\t\t\t} else {\n\t\t\t\t\tok = memoryInst.WriteUint32Le(offset, uint32(hi>>((op.B2-2)*32)))\n\t\t\t\t}\n\t\t\tcase 64:\n\t\t\t\tif op.B2 == 0 {\n\t\t\t\t\tok = memoryInst.WriteUint64Le(offset, lo)\n\t\t\t\t} else {\n\t\t\t\t\tok = memoryInst.WriteUint64Le(offset, hi)\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !ok {\n\t\t\t\tpanic(wasmruntime.ErrRuntimeOutOfBoundsMemoryAccess)\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindV128ReplaceLane:\n\t\t\tv := ce.popValue()\n\t\t\thi, lo := ce.popValue(), ce.popValue()\n\t\t\tswitch op.B1 {\n\t\t\tcase shapeI8x16:\n\t\t\t\tif op.B2 < 8 {\n\t\t\t\t\ts := op.B2 << 3\n\t\t\t\t\tlo = (lo & ^(0xff << s)) | uint64(byte(v))<<s\n\t\t\t\t} else {\n\t\t\t\t\ts := (op.B2 - 8) << 3\n\t\t\t\t\thi = (hi & ^(0xff << s)) | uint64(byte(v))<<s\n\t\t\t\t}\n\t\t\tcase shapeI16x8:\n\t\t\t\tif op.B2 < 4 {\n\t\t\t\t\ts := op.B2 << 4\n\t\t\t\t\tlo = (lo & ^(0xff_ff << s)) | uint64(uint16(v))<<s\n\t\t\t\t} else {\n\t\t\t\t\ts := (op.B2 - 4) << 4\n\t\t\t\t\thi = (hi & ^(0xff_ff << s)) | uint64(uint16(v))<<s\n\t\t\t\t}\n\t\t\tcase shapeI32x4, shapeF32x4:\n\t\t\t\tif op.B2 < 2 {\n\t\t\t\t\ts := op.B2 << 5\n\t\t\t\t\tlo = (lo & ^(0xff_ff_ff_ff << s)) | uint64(uint32(v))<<s\n\t\t\t\t} else {\n\t\t\t\t\ts := (op.B2 - 2) << 5\n\t\t\t\t\thi = (hi & ^(0xff_ff_ff_ff << s)) | uint64(uint32(v))<<s\n\t\t\t\t}\n\t\t\tcase shapeI64x2, shapeF64x2:\n\t\t\t\tif op.B2 == 0 {\n\t\t\t\t\tlo = v\n\t\t\t\t} else {\n\t\t\t\t\thi = v\n\t\t\t\t}\n\t\t\t}\n\t\t\tce.pushValue(lo)\n\t\t\tce.pushValue(hi)\n\t\t\tframe.pc++\n\t\tcase operationKindV128ExtractLane:\n\t\t\thi, lo := ce.popValue(), ce.popValue()\n\t\t\tvar v uint64\n\t\t\tswitch op.B1 {\n\t\t\tcase shapeI8x16:\n\t\t\t\tvar u8 byte\n\t\t\t\tif op.B2 < 8 {\n\t\t\t\t\tu8 = byte(lo >> (op.B2 * 8))\n\t\t\t\t} else {\n\t\t\t\t\tu8 = byte(hi >> ((op.B2 - 8) * 8))\n\t\t\t\t}\n\t\t\t\tif op.B3 {\n\t\t\t\t\t// sign-extend.\n\t\t\t\t\tv = uint64(uint32(int8(u8)))\n\t\t\t\t} else {\n\t\t\t\t\tv = uint64(u8)\n\t\t\t\t}\n\t\t\tcase shapeI16x8:\n\t\t\t\tvar u16 uint16\n\t\t\t\tif op.B2 < 4 {\n\t\t\t\t\tu16 = uint16(lo >> (op.B2 * 16))\n\t\t\t\t} else {\n\t\t\t\t\tu16 = uint16(hi >> ((op.B2 - 4) * 16))\n\t\t\t\t}\n\t\t\t\tif op.B3 {\n\t\t\t\t\t// sign-extend.\n\t\t\t\t\tv = uint64(uint32(int16(u16)))\n\t\t\t\t} else {\n\t\t\t\t\tv = uint64(u16)\n\t\t\t\t}\n\t\t\tcase shapeI32x4, shapeF32x4:\n\t\t\t\tif op.B2 < 2 {\n\t\t\t\t\tv = uint64(uint32(lo >> (op.B2 * 32)))\n\t\t\t\t} else {\n\t\t\t\t\tv = uint64(uint32(hi >> ((op.B2 - 2) * 32)))\n\t\t\t\t}\n\t\t\tcase shapeI64x2, shapeF64x2:\n\t\t\t\tif op.B2 == 0 {\n\t\t\t\t\tv = lo\n\t\t\t\t} else {\n\t\t\t\t\tv = hi\n\t\t\t\t}\n\t\t\t}\n\t\t\tce.pushValue(v)\n\t\t\tframe.pc++\n\t\tcase operationKindV128Splat:\n\t\t\tv := ce.popValue()\n\t\t\tvar hi, lo uint64\n\t\t\tswitch op.B1 {\n\t\t\tcase shapeI8x16:\n\t\t\t\tv8 := uint64(byte(v))<<56 | uint64(byte(v))<<48 | uint64(byte(v))<<40 | uint64(byte(v))<<32 |\n\t\t\t\t\tuint64(byte(v))<<24 | uint64(byte(v))<<16 | uint64(byte(v))<<8 | uint64(byte(v))\n\t\t\t\thi, lo = v8, v8\n\t\t\tcase shapeI16x8:\n\t\t\t\tv4 := uint64(uint16(v))<<48 | uint64(uint16(v))<<32 | uint64(uint16(v))<<16 | uint64(uint16(v))\n\t\t\t\thi, lo = v4, v4\n\t\t\tcase shapeI32x4, shapeF32x4:\n\t\t\t\tv2 := uint64(uint32(v))<<32 | uint64(uint32(v))\n\t\t\t\tlo, hi = v2, v2\n\t\t\tcase shapeI64x2, shapeF64x2:\n\t\t\t\tlo, hi = v, v\n\t\t\t}\n\t\t\tce.pushValue(lo)\n\t\t\tce.pushValue(hi)\n\t\t\tframe.pc++\n\t\tcase operationKindV128Swizzle:\n\t\t\tidxHi, idxLo := ce.popValue(), ce.popValue()\n\t\t\tbaseHi, baseLo := ce.popValue(), ce.popValue()\n\t\t\tvar newVal [16]byte\n\t\t\tfor i := 0; i < 16; i++ {\n\t\t\t\tvar id byte\n\t\t\t\tif i < 8 {\n\t\t\t\t\tid = byte(idxLo >> (i * 8))\n\t\t\t\t} else {\n\t\t\t\t\tid = byte(idxHi >> ((i - 8) * 8))\n\t\t\t\t}\n\t\t\t\tif id < 8 {\n\t\t\t\t\tnewVal[i] = byte(baseLo >> (id * 8))\n\t\t\t\t} else if id < 16 {\n\t\t\t\t\tnewVal[i] = byte(baseHi >> ((id - 8) * 8))\n\t\t\t\t}\n\t\t\t}\n\t\t\tce.pushValue(binary.LittleEndian.Uint64(newVal[:8]))\n\t\t\tce.pushValue(binary.LittleEndian.Uint64(newVal[8:]))\n\t\t\tframe.pc++\n\t\tcase operationKindV128Shuffle:\n\t\t\txHi, xLo, yHi, yLo := ce.popValue(), ce.popValue(), ce.popValue(), ce.popValue()\n\t\t\tvar newVal [16]byte\n\t\t\tfor i, l := range op.Us {\n\t\t\t\tif l < 8 {\n\t\t\t\t\tnewVal[i] = byte(yLo >> (l * 8))\n\t\t\t\t} else if l < 16 {\n\t\t\t\t\tnewVal[i] = byte(yHi >> ((l - 8) * 8))\n\t\t\t\t} else if l < 24 {\n\t\t\t\t\tnewVal[i] = byte(xLo >> ((l - 16) * 8))\n\t\t\t\t} else if l < 32 {\n\t\t\t\t\tnewVal[i] = byte(xHi >> ((l - 24) * 8))\n\t\t\t\t}\n\t\t\t}\n\t\t\tce.pushValue(binary.LittleEndian.Uint64(newVal[:8]))\n\t\t\tce.pushValue(binary.LittleEndian.Uint64(newVal[8:]))\n\t\t\tframe.pc++\n\t\tcase operationKindV128AnyTrue:\n\t\t\thi, lo := ce.popValue(), ce.popValue()\n\t\t\tif hi != 0 || lo != 0 {\n\t\t\t\tce.pushValue(1)\n\t\t\t} else {\n\t\t\t\tce.pushValue(0)\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindV128AllTrue:\n\t\t\thi, lo := ce.popValue(), ce.popValue()\n\t\t\tvar ret bool\n\t\t\tswitch op.B1 {\n\t\t\tcase shapeI8x16:\n\t\t\t\tret = (uint8(lo) != 0) && (uint8(lo>>8) != 0) && (uint8(lo>>16) != 0) && (uint8(lo>>24) != 0) &&\n\t\t\t\t\t(uint8(lo>>32) != 0) && (uint8(lo>>40) != 0) && (uint8(lo>>48) != 0) && (uint8(lo>>56) != 0) &&\n\t\t\t\t\t(uint8(hi) != 0) && (uint8(hi>>8) != 0) && (uint8(hi>>16) != 0) && (uint8(hi>>24) != 0) &&\n\t\t\t\t\t(uint8(hi>>32) != 0) && (uint8(hi>>40) != 0) && (uint8(hi>>48) != 0) && (uint8(hi>>56) != 0)\n\t\t\tcase shapeI16x8:\n\t\t\t\tret = (uint16(lo) != 0) && (uint16(lo>>16) != 0) && (uint16(lo>>32) != 0) && (uint16(lo>>48) != 0) &&\n\t\t\t\t\t(uint16(hi) != 0) && (uint16(hi>>16) != 0) && (uint16(hi>>32) != 0) && (uint16(hi>>48) != 0)\n\t\t\tcase shapeI32x4:\n\t\t\t\tret = (uint32(lo) != 0) && (uint32(lo>>32) != 0) &&\n\t\t\t\t\t(uint32(hi) != 0) && (uint32(hi>>32) != 0)\n\t\t\tcase shapeI64x2:\n\t\t\t\tret = (lo != 0) &&\n\t\t\t\t\t(hi != 0)\n\t\t\t}\n\t\t\tif ret {\n\t\t\t\tce.pushValue(1)\n\t\t\t} else {\n\t\t\t\tce.pushValue(0)\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindV128BitMask:\n\t\t\t// https://github.com/WebAssembly/spec/blob/wg-2.0.draft1/proposals/simd/SIMD.md#bitmask-extraction\n\t\t\thi, lo := ce.popValue(), ce.popValue()\n\t\t\tvar res uint64\n\t\t\tswitch op.B1 {\n\t\t\tcase shapeI8x16:\n\t\t\t\tfor i := 0; i < 8; i++ {\n\t\t\t\t\tif int8(lo>>(i*8)) < 0 {\n\t\t\t\t\t\tres |= 1 << i\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor i := 0; i < 8; i++ {\n\t\t\t\t\tif int8(hi>>(i*8)) < 0 {\n\t\t\t\t\t\tres |= 1 << (i + 8)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase shapeI16x8:\n\t\t\t\tfor i := 0; i < 4; i++ {\n\t\t\t\t\tif int16(lo>>(i*16)) < 0 {\n\t\t\t\t\t\tres |= 1 << i\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor i := 0; i < 4; i++ {\n\t\t\t\t\tif int16(hi>>(i*16)) < 0 {\n\t\t\t\t\t\tres |= 1 << (i + 4)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase shapeI32x4:\n\t\t\t\tfor i := 0; i < 2; i++ {\n\t\t\t\t\tif int32(lo>>(i*32)) < 0 {\n\t\t\t\t\t\tres |= 1 << i\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor i := 0; i < 2; i++ {\n\t\t\t\t\tif int32(hi>>(i*32)) < 0 {\n\t\t\t\t\t\tres |= 1 << (i + 2)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase shapeI64x2:\n\t\t\t\tif int64(lo) < 0 {\n\t\t\t\t\tres |= 0b01\n\t\t\t\t}\n\t\t\t\tif int(hi) < 0 {\n\t\t\t\t\tres |= 0b10\n\t\t\t\t}\n\t\t\t}\n\t\t\tce.pushValue(res)\n\t\t\tframe.pc++\n\t\tcase operationKindV128And:\n\t\t\tx2Hi, x2Lo := ce.popValue(), ce.popValue()\n\t\t\tx1Hi, x1Lo := ce.popValue(), ce.popValue()\n\t\t\tce.pushValue(x1Lo & x2Lo)\n\t\t\tce.pushValue(x1Hi & x2Hi)\n\t\t\tframe.pc++\n\t\tcase operationKindV128Not:\n\t\t\thi, lo := ce.popValue(), ce.popValue()\n\t\t\tce.pushValue(^lo)\n\t\t\tce.pushValue(^hi)\n\t\t\tframe.pc++\n\t\tcase operationKindV128Or:\n\t\t\tx2Hi, x2Lo := ce.popValue(), ce.popValue()\n\t\t\tx1Hi, x1Lo := ce.popValue(), ce.popValue()\n\t\t\tce.pushValue(x1Lo | x2Lo)\n\t\t\tce.pushValue(x1Hi | x2Hi)\n\t\t\tframe.pc++\n\t\tcase operationKindV128Xor:\n\t\t\tx2Hi, x2Lo := ce.popValue(), ce.popValue()\n\t\t\tx1Hi, x1Lo := ce.popValue(), ce.popValue()\n\t\t\tce.pushValue(x1Lo ^ x2Lo)\n\t\t\tce.pushValue(x1Hi ^ x2Hi)\n\t\t\tframe.pc++\n\t\tcase operationKindV128Bitselect:\n\t\t\t// https://github.com/WebAssembly/spec/blob/wg-2.0.draft1/proposals/simd/SIMD.md#bitwise-select\n\t\t\tcHi, cLo := ce.popValue(), ce.popValue()\n\t\t\tx2Hi, x2Lo := ce.popValue(), ce.popValue()\n\t\t\tx1Hi, x1Lo := ce.popValue(), ce.popValue()\n\t\t\t// v128.or(v128.and(v1, c), v128.and(v2, v128.not(c)))\n\t\t\tce.pushValue((x1Lo & cLo) | (x2Lo & (^cLo)))\n\t\t\tce.pushValue((x1Hi & cHi) | (x2Hi & (^cHi)))\n\t\t\tframe.pc++\n\t\tcase operationKindV128AndNot:\n\t\t\tx2Hi, x2Lo := ce.popValue(), ce.popValue()\n\t\t\tx1Hi, x1Lo := ce.popValue(), ce.popValue()\n\t\t\tce.pushValue(x1Lo & (^x2Lo))\n\t\t\tce.pushValue(x1Hi & (^x2Hi))\n\t\t\tframe.pc++\n\t\tcase operationKindV128Shl:\n\t\t\ts := ce.popValue()\n\t\t\thi, lo := ce.popValue(), ce.popValue()\n\t\t\tswitch op.B1 {\n\t\t\tcase shapeI8x16:\n\t\t\t\ts = s % 8\n\t\t\t\tlo = uint64(uint8(lo<<s)) |\n\t\t\t\t\tuint64(uint8((lo>>8)<<s))<<8 |\n\t\t\t\t\tuint64(uint8((lo>>16)<<s))<<16 |\n\t\t\t\t\tuint64(uint8((lo>>24)<<s))<<24 |\n\t\t\t\t\tuint64(uint8((lo>>32)<<s))<<32 |\n\t\t\t\t\tuint64(uint8((lo>>40)<<s))<<40 |\n\t\t\t\t\tuint64(uint8((lo>>48)<<s))<<48 |\n\t\t\t\t\tuint64(uint8((lo>>56)<<s))<<56\n\t\t\t\thi = uint64(uint8(hi<<s)) |\n\t\t\t\t\tuint64(uint8((hi>>8)<<s))<<8 |\n\t\t\t\t\tuint64(uint8((hi>>16)<<s))<<16 |\n\t\t\t\t\tuint64(uint8((hi>>24)<<s))<<24 |\n\t\t\t\t\tuint64(uint8((hi>>32)<<s))<<32 |\n\t\t\t\t\tuint64(uint8((hi>>40)<<s))<<40 |\n\t\t\t\t\tuint64(uint8((hi>>48)<<s))<<48 |\n\t\t\t\t\tuint64(uint8((hi>>56)<<s))<<56\n\t\t\tcase shapeI16x8:\n\t\t\t\ts = s % 16\n\t\t\t\tlo = uint64(uint16(lo<<s)) |\n\t\t\t\t\tuint64(uint16((lo>>16)<<s))<<16 |\n\t\t\t\t\tuint64(uint16((lo>>32)<<s))<<32 |\n\t\t\t\t\tuint64(uint16((lo>>48)<<s))<<48\n\t\t\t\thi = uint64(uint16(hi<<s)) |\n\t\t\t\t\tuint64(uint16((hi>>16)<<s))<<16 |\n\t\t\t\t\tuint64(uint16((hi>>32)<<s))<<32 |\n\t\t\t\t\tuint64(uint16((hi>>48)<<s))<<48\n\t\t\tcase shapeI32x4:\n\t\t\t\ts = s % 32\n\t\t\t\tlo = uint64(uint32(lo<<s)) | uint64(uint32((lo>>32)<<s))<<32\n\t\t\t\thi = uint64(uint32(hi<<s)) | uint64(uint32((hi>>32)<<s))<<32\n\t\t\tcase shapeI64x2:\n\t\t\t\ts = s % 64\n\t\t\t\tlo = lo << s\n\t\t\t\thi = hi << s\n\t\t\t}\n\t\t\tce.pushValue(lo)\n\t\t\tce.pushValue(hi)\n\t\t\tframe.pc++\n\t\tcase operationKindV128Shr:\n\t\t\ts := ce.popValue()\n\t\t\thi, lo := ce.popValue(), ce.popValue()\n\t\t\tswitch op.B1 {\n\t\t\tcase shapeI8x16:\n\t\t\t\ts = s % 8\n\t\t\t\tif op.B3 { // signed\n\t\t\t\t\tlo = uint64(uint8(int8(lo)>>s)) |\n\t\t\t\t\t\tuint64(uint8(int8(lo>>8)>>s))<<8 |\n\t\t\t\t\t\tuint64(uint8(int8(lo>>16)>>s))<<16 |\n\t\t\t\t\t\tuint64(uint8(int8(lo>>24)>>s))<<24 |\n\t\t\t\t\t\tuint64(uint8(int8(lo>>32)>>s))<<32 |\n\t\t\t\t\t\tuint64(uint8(int8(lo>>40)>>s))<<40 |\n\t\t\t\t\t\tuint64(uint8(int8(lo>>48)>>s))<<48 |\n\t\t\t\t\t\tuint64(uint8(int8(lo>>56)>>s))<<56\n\t\t\t\t\thi = uint64(uint8(int8(hi)>>s)) |\n\t\t\t\t\t\tuint64(uint8(int8(hi>>8)>>s))<<8 |\n\t\t\t\t\t\tuint64(uint8(int8(hi>>16)>>s))<<16 |\n\t\t\t\t\t\tuint64(uint8(int8(hi>>24)>>s))<<24 |\n\t\t\t\t\t\tuint64(uint8(int8(hi>>32)>>s))<<32 |\n\t\t\t\t\t\tuint64(uint8(int8(hi>>40)>>s))<<40 |\n\t\t\t\t\t\tuint64(uint8(int8(hi>>48)>>s))<<48 |\n\t\t\t\t\t\tuint64(uint8(int8(hi>>56)>>s))<<56\n\t\t\t\t} else {\n\t\t\t\t\tlo = uint64(uint8(lo)>>s) |\n\t\t\t\t\t\tuint64(uint8(lo>>8)>>s)<<8 |\n\t\t\t\t\t\tuint64(uint8(lo>>16)>>s)<<16 |\n\t\t\t\t\t\tuint64(uint8(lo>>24)>>s)<<24 |\n\t\t\t\t\t\tuint64(uint8(lo>>32)>>s)<<32 |\n\t\t\t\t\t\tuint64(uint8(lo>>40)>>s)<<40 |\n\t\t\t\t\t\tuint64(uint8(lo>>48)>>s)<<48 |\n\t\t\t\t\t\tuint64(uint8(lo>>56)>>s)<<56\n\t\t\t\t\thi = uint64(uint8(hi)>>s) |\n\t\t\t\t\t\tuint64(uint8(hi>>8)>>s)<<8 |\n\t\t\t\t\t\tuint64(uint8(hi>>16)>>s)<<16 |\n\t\t\t\t\t\tuint64(uint8(hi>>24)>>s)<<24 |\n\t\t\t\t\t\tuint64(uint8(hi>>32)>>s)<<32 |\n\t\t\t\t\t\tuint64(uint8(hi>>40)>>s)<<40 |\n\t\t\t\t\t\tuint64(uint8(hi>>48)>>s)<<48 |\n\t\t\t\t\t\tuint64(uint8(hi>>56)>>s)<<56\n\t\t\t\t}\n\t\t\tcase shapeI16x8:\n\t\t\t\ts = s % 16\n\t\t\t\tif op.B3 { // signed\n\t\t\t\t\tlo = uint64(uint16(int16(lo)>>s)) |\n\t\t\t\t\t\tuint64(uint16(int16(lo>>16)>>s))<<16 |\n\t\t\t\t\t\tuint64(uint16(int16(lo>>32)>>s))<<32 |\n\t\t\t\t\t\tuint64(uint16(int16(lo>>48)>>s))<<48\n\t\t\t\t\thi = uint64(uint16(int16(hi)>>s)) |\n\t\t\t\t\t\tuint64(uint16(int16(hi>>16)>>s))<<16 |\n\t\t\t\t\t\tuint64(uint16(int16(hi>>32)>>s))<<32 |\n\t\t\t\t\t\tuint64(uint16(int16(hi>>48)>>s))<<48\n\t\t\t\t} else {\n\t\t\t\t\tlo = uint64(uint16(lo)>>s) |\n\t\t\t\t\t\tuint64(uint16(lo>>16)>>s)<<16 |\n\t\t\t\t\t\tuint64(uint16(lo>>32)>>s)<<32 |\n\t\t\t\t\t\tuint64(uint16(lo>>48)>>s)<<48\n\t\t\t\t\thi = uint64(uint16(hi)>>s) |\n\t\t\t\t\t\tuint64(uint16(hi>>16)>>s)<<16 |\n\t\t\t\t\t\tuint64(uint16(hi>>32)>>s)<<32 |\n\t\t\t\t\t\tuint64(uint16(hi>>48)>>s)<<48\n\t\t\t\t}\n\t\t\tcase shapeI32x4:\n\t\t\t\ts = s % 32\n\t\t\t\tif op.B3 {\n\t\t\t\t\tlo = uint64(uint32(int32(lo)>>s)) | uint64(uint32(int32(lo>>32)>>s))<<32\n\t\t\t\t\thi = uint64(uint32(int32(hi)>>s)) | uint64(uint32(int32(hi>>32)>>s))<<32\n\t\t\t\t} else {\n\t\t\t\t\tlo = uint64(uint32(lo)>>s) | uint64(uint32(lo>>32)>>s)<<32\n\t\t\t\t\thi = uint64(uint32(hi)>>s) | uint64(uint32(hi>>32)>>s)<<32\n\t\t\t\t}\n\t\t\tcase shapeI64x2:\n\t\t\t\ts = s % 64\n\t\t\t\tif op.B3 { // signed\n\t\t\t\t\tlo = uint64(int64(lo) >> s)\n\t\t\t\t\thi = uint64(int64(hi) >> s)\n\t\t\t\t} else {\n\t\t\t\t\tlo = lo >> s\n\t\t\t\t\thi = hi >> s\n\t\t\t\t}\n\n\t\t\t}\n\t\t\tce.pushValue(lo)\n\t\t\tce.pushValue(hi)\n\t\t\tframe.pc++\n\t\tcase operationKindV128Cmp:\n\t\t\tx2Hi, x2Lo := ce.popValue(), ce.popValue()\n\t\t\tx1Hi, x1Lo := ce.popValue(), ce.popValue()\n\t\t\tvar result []bool\n\t\t\tswitch op.B1 {\n\t\t\tcase v128CmpTypeI8x16Eq:\n\t\t\t\tresult = []bool{\n\t\t\t\t\tbyte(x1Lo>>0) == byte(x2Lo>>0), byte(x1Lo>>8) == byte(x2Lo>>8),\n\t\t\t\t\tbyte(x1Lo>>16) == byte(x2Lo>>16), byte(x1Lo>>24) == byte(x2Lo>>24),\n\t\t\t\t\tbyte(x1Lo>>32) == byte(x2Lo>>32), byte(x1Lo>>40) == byte(x2Lo>>40),\n\t\t\t\t\tbyte(x1Lo>>48) == byte(x2Lo>>48), byte(x1Lo>>56) == byte(x2Lo>>56),\n\t\t\t\t\tbyte(x1Hi>>0) == byte(x2Hi>>0), byte(x1Hi>>8) == byte(x2Hi>>8),\n\t\t\t\t\tbyte(x1Hi>>16) == byte(x2Hi>>16), byte(x1Hi>>24) == byte(x2Hi>>24),\n\t\t\t\t\tbyte(x1Hi>>32) == byte(x2Hi>>32), byte(x1Hi>>40) == byte(x2Hi>>40),\n\t\t\t\t\tbyte(x1Hi>>48) == byte(x2Hi>>48), byte(x1Hi>>56) == byte(x2Hi>>56),\n\t\t\t\t}\n\t\t\tcase v128CmpTypeI8x16Ne:\n\t\t\t\tresult = []bool{\n\t\t\t\t\tbyte(x1Lo>>0) != byte(x2Lo>>0), byte(x1Lo>>8) != byte(x2Lo>>8),\n\t\t\t\t\tbyte(x1Lo>>16) != byte(x2Lo>>16), byte(x1Lo>>24) != byte(x2Lo>>24),\n\t\t\t\t\tbyte(x1Lo>>32) != byte(x2Lo>>32), byte(x1Lo>>40) != byte(x2Lo>>40),\n\t\t\t\t\tbyte(x1Lo>>48) != byte(x2Lo>>48), byte(x1Lo>>56) != byte(x2Lo>>56),\n\t\t\t\t\tbyte(x1Hi>>0) != byte(x2Hi>>0), byte(x1Hi>>8) != byte(x2Hi>>8),\n\t\t\t\t\tbyte(x1Hi>>16) != byte(x2Hi>>16), byte(x1Hi>>24) != byte(x2Hi>>24),\n\t\t\t\t\tbyte(x1Hi>>32) != byte(x2Hi>>32), byte(x1Hi>>40) != byte(x2Hi>>40),\n\t\t\t\t\tbyte(x1Hi>>48) != byte(x2Hi>>48), byte(x1Hi>>56) != byte(x2Hi>>56),\n\t\t\t\t}\n\t\t\tcase v128CmpTypeI8x16LtS:\n\t\t\t\tresult = []bool{\n\t\t\t\t\tint8(x1Lo>>0) < int8(x2Lo>>0), int8(x1Lo>>8) < int8(x2Lo>>8),\n\t\t\t\t\tint8(x1Lo>>16) < int8(x2Lo>>16), int8(x1Lo>>24) < int8(x2Lo>>24),\n\t\t\t\t\tint8(x1Lo>>32) < int8(x2Lo>>32), int8(x1Lo>>40) < int8(x2Lo>>40),\n\t\t\t\t\tint8(x1Lo>>48) < int8(x2Lo>>48), int8(x1Lo>>56) < int8(x2Lo>>56),\n\t\t\t\t\tint8(x1Hi>>0) < int8(x2Hi>>0), int8(x1Hi>>8) < int8(x2Hi>>8),\n\t\t\t\t\tint8(x1Hi>>16) < int8(x2Hi>>16), int8(x1Hi>>24) < int8(x2Hi>>24),\n\t\t\t\t\tint8(x1Hi>>32) < int8(x2Hi>>32), int8(x1Hi>>40) < int8(x2Hi>>40),\n\t\t\t\t\tint8(x1Hi>>48) < int8(x2Hi>>48), int8(x1Hi>>56) < int8(x2Hi>>56),\n\t\t\t\t}\n\t\t\tcase v128CmpTypeI8x16LtU:\n\t\t\t\tresult = []bool{\n\t\t\t\t\tbyte(x1Lo>>0) < byte(x2Lo>>0), byte(x1Lo>>8) < byte(x2Lo>>8),\n\t\t\t\t\tbyte(x1Lo>>16) < byte(x2Lo>>16), byte(x1Lo>>24) < byte(x2Lo>>24),\n\t\t\t\t\tbyte(x1Lo>>32) < byte(x2Lo>>32), byte(x1Lo>>40) < byte(x2Lo>>40),\n\t\t\t\t\tbyte(x1Lo>>48) < byte(x2Lo>>48), byte(x1Lo>>56) < byte(x2Lo>>56),\n\t\t\t\t\tbyte(x1Hi>>0) < byte(x2Hi>>0), byte(x1Hi>>8) < byte(x2Hi>>8),\n\t\t\t\t\tbyte(x1Hi>>16) < byte(x2Hi>>16), byte(x1Hi>>24) < byte(x2Hi>>24),\n\t\t\t\t\tbyte(x1Hi>>32) < byte(x2Hi>>32), byte(x1Hi>>40) < byte(x2Hi>>40),\n\t\t\t\t\tbyte(x1Hi>>48) < byte(x2Hi>>48), byte(x1Hi>>56) < byte(x2Hi>>56),\n\t\t\t\t}\n\t\t\tcase v128CmpTypeI8x16GtS:\n\t\t\t\tresult = []bool{\n\t\t\t\t\tint8(x1Lo>>0) > int8(x2Lo>>0), int8(x1Lo>>8) > int8(x2Lo>>8),\n\t\t\t\t\tint8(x1Lo>>16) > int8(x2Lo>>16), int8(x1Lo>>24) > int8(x2Lo>>24),\n\t\t\t\t\tint8(x1Lo>>32) > int8(x2Lo>>32), int8(x1Lo>>40) > int8(x2Lo>>40),\n\t\t\t\t\tint8(x1Lo>>48) > int8(x2Lo>>48), int8(x1Lo>>56) > int8(x2Lo>>56),\n\t\t\t\t\tint8(x1Hi>>0) > int8(x2Hi>>0), int8(x1Hi>>8) > int8(x2Hi>>8),\n\t\t\t\t\tint8(x1Hi>>16) > int8(x2Hi>>16), int8(x1Hi>>24) > int8(x2Hi>>24),\n\t\t\t\t\tint8(x1Hi>>32) > int8(x2Hi>>32), int8(x1Hi>>40) > int8(x2Hi>>40),\n\t\t\t\t\tint8(x1Hi>>48) > int8(x2Hi>>48), int8(x1Hi>>56) > int8(x2Hi>>56),\n\t\t\t\t}\n\t\t\tcase v128CmpTypeI8x16GtU:\n\t\t\t\tresult = []bool{\n\t\t\t\t\tbyte(x1Lo>>0) > byte(x2Lo>>0), byte(x1Lo>>8) > byte(x2Lo>>8),\n\t\t\t\t\tbyte(x1Lo>>16) > byte(x2Lo>>16), byte(x1Lo>>24) > byte(x2Lo>>24),\n\t\t\t\t\tbyte(x1Lo>>32) > byte(x2Lo>>32), byte(x1Lo>>40) > byte(x2Lo>>40),\n\t\t\t\t\tbyte(x1Lo>>48) > byte(x2Lo>>48), byte(x1Lo>>56) > byte(x2Lo>>56),\n\t\t\t\t\tbyte(x1Hi>>0) > byte(x2Hi>>0), byte(x1Hi>>8) > byte(x2Hi>>8),\n\t\t\t\t\tbyte(x1Hi>>16) > byte(x2Hi>>16), byte(x1Hi>>24) > byte(x2Hi>>24),\n\t\t\t\t\tbyte(x1Hi>>32) > byte(x2Hi>>32), byte(x1Hi>>40) > byte(x2Hi>>40),\n\t\t\t\t\tbyte(x1Hi>>48) > byte(x2Hi>>48), byte(x1Hi>>56) > byte(x2Hi>>56),\n\t\t\t\t}\n\t\t\tcase v128CmpTypeI8x16LeS:\n\t\t\t\tresult = []bool{\n\t\t\t\t\tint8(x1Lo>>0) <= int8(x2Lo>>0), int8(x1Lo>>8) <= int8(x2Lo>>8),\n\t\t\t\t\tint8(x1Lo>>16) <= int8(x2Lo>>16), int8(x1Lo>>24) <= int8(x2Lo>>24),\n\t\t\t\t\tint8(x1Lo>>32) <= int8(x2Lo>>32), int8(x1Lo>>40) <= int8(x2Lo>>40),\n\t\t\t\t\tint8(x1Lo>>48) <= int8(x2Lo>>48), int8(x1Lo>>56) <= int8(x2Lo>>56),\n\t\t\t\t\tint8(x1Hi>>0) <= int8(x2Hi>>0), int8(x1Hi>>8) <= int8(x2Hi>>8),\n\t\t\t\t\tint8(x1Hi>>16) <= int8(x2Hi>>16), int8(x1Hi>>24) <= int8(x2Hi>>24),\n\t\t\t\t\tint8(x1Hi>>32) <= int8(x2Hi>>32), int8(x1Hi>>40) <= int8(x2Hi>>40),\n\t\t\t\t\tint8(x1Hi>>48) <= int8(x2Hi>>48), int8(x1Hi>>56) <= int8(x2Hi>>56),\n\t\t\t\t}\n\t\t\tcase v128CmpTypeI8x16LeU:\n\t\t\t\tresult = []bool{\n\t\t\t\t\tbyte(x1Lo>>0) <= byte(x2Lo>>0), byte(x1Lo>>8) <= byte(x2Lo>>8),\n\t\t\t\t\tbyte(x1Lo>>16) <= byte(x2Lo>>16), byte(x1Lo>>24) <= byte(x2Lo>>24),\n\t\t\t\t\tbyte(x1Lo>>32) <= byte(x2Lo>>32), byte(x1Lo>>40) <= byte(x2Lo>>40),\n\t\t\t\t\tbyte(x1Lo>>48) <= byte(x2Lo>>48), byte(x1Lo>>56) <= byte(x2Lo>>56),\n\t\t\t\t\tbyte(x1Hi>>0) <= byte(x2Hi>>0), byte(x1Hi>>8) <= byte(x2Hi>>8),\n\t\t\t\t\tbyte(x1Hi>>16) <= byte(x2Hi>>16), byte(x1Hi>>24) <= byte(x2Hi>>24),\n\t\t\t\t\tbyte(x1Hi>>32) <= byte(x2Hi>>32), byte(x1Hi>>40) <= byte(x2Hi>>40),\n\t\t\t\t\tbyte(x1Hi>>48) <= byte(x2Hi>>48), byte(x1Hi>>56) <= byte(x2Hi>>56),\n\t\t\t\t}\n\t\t\tcase v128CmpTypeI8x16GeS:\n\t\t\t\tresult = []bool{\n\t\t\t\t\tint8(x1Lo>>0) >= int8(x2Lo>>0), int8(x1Lo>>8) >= int8(x2Lo>>8),\n\t\t\t\t\tint8(x1Lo>>16) >= int8(x2Lo>>16), int8(x1Lo>>24) >= int8(x2Lo>>24),\n\t\t\t\t\tint8(x1Lo>>32) >= int8(x2Lo>>32), int8(x1Lo>>40) >= int8(x2Lo>>40),\n\t\t\t\t\tint8(x1Lo>>48) >= int8(x2Lo>>48), int8(x1Lo>>56) >= int8(x2Lo>>56),\n\t\t\t\t\tint8(x1Hi>>0) >= int8(x2Hi>>0), int8(x1Hi>>8) >= int8(x2Hi>>8),\n\t\t\t\t\tint8(x1Hi>>16) >= int8(x2Hi>>16), int8(x1Hi>>24) >= int8(x2Hi>>24),\n\t\t\t\t\tint8(x1Hi>>32) >= int8(x2Hi>>32), int8(x1Hi>>40) >= int8(x2Hi>>40),\n\t\t\t\t\tint8(x1Hi>>48) >= int8(x2Hi>>48), int8(x1Hi>>56) >= int8(x2Hi>>56),\n\t\t\t\t}\n\t\t\tcase v128CmpTypeI8x16GeU:\n\t\t\t\tresult = []bool{\n\t\t\t\t\tbyte(x1Lo>>0) >= byte(x2Lo>>0), byte(x1Lo>>8) >= byte(x2Lo>>8),\n\t\t\t\t\tbyte(x1Lo>>16) >= byte(x2Lo>>16), byte(x1Lo>>24) >= byte(x2Lo>>24),\n\t\t\t\t\tbyte(x1Lo>>32) >= byte(x2Lo>>32), byte(x1Lo>>40) >= byte(x2Lo>>40),\n\t\t\t\t\tbyte(x1Lo>>48) >= byte(x2Lo>>48), byte(x1Lo>>56) >= byte(x2Lo>>56),\n\t\t\t\t\tbyte(x1Hi>>0) >= byte(x2Hi>>0), byte(x1Hi>>8) >= byte(x2Hi>>8),\n\t\t\t\t\tbyte(x1Hi>>16) >= byte(x2Hi>>16), byte(x1Hi>>24) >= byte(x2Hi>>24),\n\t\t\t\t\tbyte(x1Hi>>32) >= byte(x2Hi>>32), byte(x1Hi>>40) >= byte(x2Hi>>40),\n\t\t\t\t\tbyte(x1Hi>>48) >= byte(x2Hi>>48), byte(x1Hi>>56) >= byte(x2Hi>>56),\n\t\t\t\t}\n\t\t\tcase v128CmpTypeI16x8Eq:\n\t\t\t\tresult = []bool{\n\t\t\t\t\tuint16(x1Lo>>0) == uint16(x2Lo>>0), uint16(x1Lo>>16) == uint16(x2Lo>>16),\n\t\t\t\t\tuint16(x1Lo>>32) == uint16(x2Lo>>32), uint16(x1Lo>>48) == uint16(x2Lo>>48),\n\t\t\t\t\tuint16(x1Hi>>0) == uint16(x2Hi>>0), uint16(x1Hi>>16) == uint16(x2Hi>>16),\n\t\t\t\t\tuint16(x1Hi>>32) == uint16(x2Hi>>32), uint16(x1Hi>>48) == uint16(x2Hi>>48),\n\t\t\t\t}\n\t\t\tcase v128CmpTypeI16x8Ne:\n\t\t\t\tresult = []bool{\n\t\t\t\t\tuint16(x1Lo>>0) != uint16(x2Lo>>0), uint16(x1Lo>>16) != uint16(x2Lo>>16),\n\t\t\t\t\tuint16(x1Lo>>32) != uint16(x2Lo>>32), uint16(x1Lo>>48) != uint16(x2Lo>>48),\n\t\t\t\t\tuint16(x1Hi>>0) != uint16(x2Hi>>0), uint16(x1Hi>>16) != uint16(x2Hi>>16),\n\t\t\t\t\tuint16(x1Hi>>32) != uint16(x2Hi>>32), uint16(x1Hi>>48) != uint16(x2Hi>>48),\n\t\t\t\t}\n\t\t\tcase v128CmpTypeI16x8LtS:\n\t\t\t\tresult = []bool{\n\t\t\t\t\tint16(x1Lo>>0) < int16(x2Lo>>0), int16(x1Lo>>16) < int16(x2Lo>>16),\n\t\t\t\t\tint16(x1Lo>>32) < int16(x2Lo>>32), int16(x1Lo>>48) < int16(x2Lo>>48),\n\t\t\t\t\tint16(x1Hi>>0) < int16(x2Hi>>0), int16(x1Hi>>16) < int16(x2Hi>>16),\n\t\t\t\t\tint16(x1Hi>>32) < int16(x2Hi>>32), int16(x1Hi>>48) < int16(x2Hi>>48),\n\t\t\t\t}\n\t\t\tcase v128CmpTypeI16x8LtU:\n\t\t\t\tresult = []bool{\n\t\t\t\t\tuint16(x1Lo>>0) < uint16(x2Lo>>0), uint16(x1Lo>>16) < uint16(x2Lo>>16),\n\t\t\t\t\tuint16(x1Lo>>32) < uint16(x2Lo>>32), uint16(x1Lo>>48) < uint16(x2Lo>>48),\n\t\t\t\t\tuint16(x1Hi>>0) < uint16(x2Hi>>0), uint16(x1Hi>>16) < uint16(x2Hi>>16),\n\t\t\t\t\tuint16(x1Hi>>32) < uint16(x2Hi>>32), uint16(x1Hi>>48) < uint16(x2Hi>>48),\n\t\t\t\t}\n\t\t\tcase v128CmpTypeI16x8GtS:\n\t\t\t\tresult = []bool{\n\t\t\t\t\tint16(x1Lo>>0) > int16(x2Lo>>0), int16(x1Lo>>16) > int16(x2Lo>>16),\n\t\t\t\t\tint16(x1Lo>>32) > int16(x2Lo>>32), int16(x1Lo>>48) > int16(x2Lo>>48),\n\t\t\t\t\tint16(x1Hi>>0) > int16(x2Hi>>0), int16(x1Hi>>16) > int16(x2Hi>>16),\n\t\t\t\t\tint16(x1Hi>>32) > int16(x2Hi>>32), int16(x1Hi>>48) > int16(x2Hi>>48),\n\t\t\t\t}\n\t\t\tcase v128CmpTypeI16x8GtU:\n\t\t\t\tresult = []bool{\n\t\t\t\t\tuint16(x1Lo>>0) > uint16(x2Lo>>0), uint16(x1Lo>>16) > uint16(x2Lo>>16),\n\t\t\t\t\tuint16(x1Lo>>32) > uint16(x2Lo>>32), uint16(x1Lo>>48) > uint16(x2Lo>>48),\n\t\t\t\t\tuint16(x1Hi>>0) > uint16(x2Hi>>0), uint16(x1Hi>>16) > uint16(x2Hi>>16),\n\t\t\t\t\tuint16(x1Hi>>32) > uint16(x2Hi>>32), uint16(x1Hi>>48) > uint16(x2Hi>>48),\n\t\t\t\t}\n\t\t\tcase v128CmpTypeI16x8LeS:\n\t\t\t\tresult = []bool{\n\t\t\t\t\tint16(x1Lo>>0) <= int16(x2Lo>>0), int16(x1Lo>>16) <= int16(x2Lo>>16),\n\t\t\t\t\tint16(x1Lo>>32) <= int16(x2Lo>>32), int16(x1Lo>>48) <= int16(x2Lo>>48),\n\t\t\t\t\tint16(x1Hi>>0) <= int16(x2Hi>>0), int16(x1Hi>>16) <= int16(x2Hi>>16),\n\t\t\t\t\tint16(x1Hi>>32) <= int16(x2Hi>>32), int16(x1Hi>>48) <= int16(x2Hi>>48),\n\t\t\t\t}\n\t\t\tcase v128CmpTypeI16x8LeU:\n\t\t\t\tresult = []bool{\n\t\t\t\t\tuint16(x1Lo>>0) <= uint16(x2Lo>>0), uint16(x1Lo>>16) <= uint16(x2Lo>>16),\n\t\t\t\t\tuint16(x1Lo>>32) <= uint16(x2Lo>>32), uint16(x1Lo>>48) <= uint16(x2Lo>>48),\n\t\t\t\t\tuint16(x1Hi>>0) <= uint16(x2Hi>>0), uint16(x1Hi>>16) <= uint16(x2Hi>>16),\n\t\t\t\t\tuint16(x1Hi>>32) <= uint16(x2Hi>>32), uint16(x1Hi>>48) <= uint16(x2Hi>>48),\n\t\t\t\t}\n\t\t\tcase v128CmpTypeI16x8GeS:\n\t\t\t\tresult = []bool{\n\t\t\t\t\tint16(x1Lo>>0) >= int16(x2Lo>>0), int16(x1Lo>>16) >= int16(x2Lo>>16),\n\t\t\t\t\tint16(x1Lo>>32) >= int16(x2Lo>>32), int16(x1Lo>>48) >= int16(x2Lo>>48),\n\t\t\t\t\tint16(x1Hi>>0) >= int16(x2Hi>>0), int16(x1Hi>>16) >= int16(x2Hi>>16),\n\t\t\t\t\tint16(x1Hi>>32) >= int16(x2Hi>>32), int16(x1Hi>>48) >= int16(x2Hi>>48),\n\t\t\t\t}\n\t\t\tcase v128CmpTypeI16x8GeU:\n\t\t\t\tresult = []bool{\n\t\t\t\t\tuint16(x1Lo>>0) >= uint16(x2Lo>>0), uint16(x1Lo>>16) >= uint16(x2Lo>>16),\n\t\t\t\t\tuint16(x1Lo>>32) >= uint16(x2Lo>>32), uint16(x1Lo>>48) >= uint16(x2Lo>>48),\n\t\t\t\t\tuint16(x1Hi>>0) >= uint16(x2Hi>>0), uint16(x1Hi>>16) >= uint16(x2Hi>>16),\n\t\t\t\t\tuint16(x1Hi>>32) >= uint16(x2Hi>>32), uint16(x1Hi>>48) >= uint16(x2Hi>>48),\n\t\t\t\t}\n\t\t\tcase v128CmpTypeI32x4Eq:\n\t\t\t\tresult = []bool{\n\t\t\t\t\tuint32(x1Lo>>0) == uint32(x2Lo>>0), uint32(x1Lo>>32) == uint32(x2Lo>>32),\n\t\t\t\t\tuint32(x1Hi>>0) == uint32(x2Hi>>0), uint32(x1Hi>>32) == uint32(x2Hi>>32),\n\t\t\t\t}\n\t\t\tcase v128CmpTypeI32x4Ne:\n\t\t\t\tresult = []bool{\n\t\t\t\t\tuint32(x1Lo>>0) != uint32(x2Lo>>0), uint32(x1Lo>>32) != uint32(x2Lo>>32),\n\t\t\t\t\tuint32(x1Hi>>0) != uint32(x2Hi>>0), uint32(x1Hi>>32) != uint32(x2Hi>>32),\n\t\t\t\t}\n\t\t\tcase v128CmpTypeI32x4LtS:\n\t\t\t\tresult = []bool{\n\t\t\t\t\tint32(x1Lo>>0) < int32(x2Lo>>0), int32(x1Lo>>32) < int32(x2Lo>>32),\n\t\t\t\t\tint32(x1Hi>>0) < int32(x2Hi>>0), int32(x1Hi>>32) < int32(x2Hi>>32),\n\t\t\t\t}\n\t\t\tcase v128CmpTypeI32x4LtU:\n\t\t\t\tresult = []bool{\n\t\t\t\t\tuint32(x1Lo>>0) < uint32(x2Lo>>0), uint32(x1Lo>>32) < uint32(x2Lo>>32),\n\t\t\t\t\tuint32(x1Hi>>0) < uint32(x2Hi>>0), uint32(x1Hi>>32) < uint32(x2Hi>>32),\n\t\t\t\t}\n\t\t\tcase v128CmpTypeI32x4GtS:\n\t\t\t\tresult = []bool{\n\t\t\t\t\tint32(x1Lo>>0) > int32(x2Lo>>0), int32(x1Lo>>32) > int32(x2Lo>>32),\n\t\t\t\t\tint32(x1Hi>>0) > int32(x2Hi>>0), int32(x1Hi>>32) > int32(x2Hi>>32),\n\t\t\t\t}\n\t\t\tcase v128CmpTypeI32x4GtU:\n\t\t\t\tresult = []bool{\n\t\t\t\t\tuint32(x1Lo>>0) > uint32(x2Lo>>0), uint32(x1Lo>>32) > uint32(x2Lo>>32),\n\t\t\t\t\tuint32(x1Hi>>0) > uint32(x2Hi>>0), uint32(x1Hi>>32) > uint32(x2Hi>>32),\n\t\t\t\t}\n\t\t\tcase v128CmpTypeI32x4LeS:\n\t\t\t\tresult = []bool{\n\t\t\t\t\tint32(x1Lo>>0) <= int32(x2Lo>>0), int32(x1Lo>>32) <= int32(x2Lo>>32),\n\t\t\t\t\tint32(x1Hi>>0) <= int32(x2Hi>>0), int32(x1Hi>>32) <= int32(x2Hi>>32),\n\t\t\t\t}\n\t\t\tcase v128CmpTypeI32x4LeU:\n\t\t\t\tresult = []bool{\n\t\t\t\t\tuint32(x1Lo>>0) <= uint32(x2Lo>>0), uint32(x1Lo>>32) <= uint32(x2Lo>>32),\n\t\t\t\t\tuint32(x1Hi>>0) <= uint32(x2Hi>>0), uint32(x1Hi>>32) <= uint32(x2Hi>>32),\n\t\t\t\t}\n\t\t\tcase v128CmpTypeI32x4GeS:\n\t\t\t\tresult = []bool{\n\t\t\t\t\tint32(x1Lo>>0) >= int32(x2Lo>>0), int32(x1Lo>>32) >= int32(x2Lo>>32),\n\t\t\t\t\tint32(x1Hi>>0) >= int32(x2Hi>>0), int32(x1Hi>>32) >= int32(x2Hi>>32),\n\t\t\t\t}\n\t\t\tcase v128CmpTypeI32x4GeU:\n\t\t\t\tresult = []bool{\n\t\t\t\t\tuint32(x1Lo>>0) >= uint32(x2Lo>>0), uint32(x1Lo>>32) >= uint32(x2Lo>>32),\n\t\t\t\t\tuint32(x1Hi>>0) >= uint32(x2Hi>>0), uint32(x1Hi>>32) >= uint32(x2Hi>>32),\n\t\t\t\t}\n\t\t\tcase v128CmpTypeI64x2Eq:\n\t\t\t\tresult = []bool{x1Lo == x2Lo, x1Hi == x2Hi}\n\t\t\tcase v128CmpTypeI64x2Ne:\n\t\t\t\tresult = []bool{x1Lo != x2Lo, x1Hi != x2Hi}\n\t\t\tcase v128CmpTypeI64x2LtS:\n\t\t\t\tresult = []bool{int64(x1Lo) < int64(x2Lo), int64(x1Hi) < int64(x2Hi)}\n\t\t\tcase v128CmpTypeI64x2GtS:\n\t\t\t\tresult = []bool{int64(x1Lo) > int64(x2Lo), int64(x1Hi) > int64(x2Hi)}\n\t\t\tcase v128CmpTypeI64x2LeS:\n\t\t\t\tresult = []bool{int64(x1Lo) <= int64(x2Lo), int64(x1Hi) <= int64(x2Hi)}\n\t\t\tcase v128CmpTypeI64x2GeS:\n\t\t\t\tresult = []bool{int64(x1Lo) >= int64(x2Lo), int64(x1Hi) >= int64(x2Hi)}\n\t\t\tcase v128CmpTypeF32x4Eq:\n\t\t\t\tresult = []bool{\n\t\t\t\t\tmath.Float32frombits(uint32(x1Lo>>0)) == math.Float32frombits(uint32(x2Lo>>0)),\n\t\t\t\t\tmath.Float32frombits(uint32(x1Lo>>32)) == math.Float32frombits(uint32(x2Lo>>32)),\n\t\t\t\t\tmath.Float32frombits(uint32(x1Hi>>0)) == math.Float32frombits(uint32(x2Hi>>0)),\n\t\t\t\t\tmath.Float32frombits(uint32(x1Hi>>32)) == math.Float32frombits(uint32(x2Hi>>32)),\n\t\t\t\t}\n\t\t\tcase v128CmpTypeF32x4Ne:\n\t\t\t\tresult = []bool{\n\t\t\t\t\tmath.Float32frombits(uint32(x1Lo>>0)) != math.Float32frombits(uint32(x2Lo>>0)),\n\t\t\t\t\tmath.Float32frombits(uint32(x1Lo>>32)) != math.Float32frombits(uint32(x2Lo>>32)),\n\t\t\t\t\tmath.Float32frombits(uint32(x1Hi>>0)) != math.Float32frombits(uint32(x2Hi>>0)),\n\t\t\t\t\tmath.Float32frombits(uint32(x1Hi>>32)) != math.Float32frombits(uint32(x2Hi>>32)),\n\t\t\t\t}\n\t\t\tcase v128CmpTypeF32x4Lt:\n\t\t\t\tresult = []bool{\n\t\t\t\t\tmath.Float32frombits(uint32(x1Lo>>0)) < math.Float32frombits(uint32(x2Lo>>0)),\n\t\t\t\t\tmath.Float32frombits(uint32(x1Lo>>32)) < math.Float32frombits(uint32(x2Lo>>32)),\n\t\t\t\t\tmath.Float32frombits(uint32(x1Hi>>0)) < math.Float32frombits(uint32(x2Hi>>0)),\n\t\t\t\t\tmath.Float32frombits(uint32(x1Hi>>32)) < math.Float32frombits(uint32(x2Hi>>32)),\n\t\t\t\t}\n\t\t\tcase v128CmpTypeF32x4Gt:\n\t\t\t\tresult = []bool{\n\t\t\t\t\tmath.Float32frombits(uint32(x1Lo>>0)) > math.Float32frombits(uint32(x2Lo>>0)),\n\t\t\t\t\tmath.Float32frombits(uint32(x1Lo>>32)) > math.Float32frombits(uint32(x2Lo>>32)),\n\t\t\t\t\tmath.Float32frombits(uint32(x1Hi>>0)) > math.Float32frombits(uint32(x2Hi>>0)),\n\t\t\t\t\tmath.Float32frombits(uint32(x1Hi>>32)) > math.Float32frombits(uint32(x2Hi>>32)),\n\t\t\t\t}\n\t\t\tcase v128CmpTypeF32x4Le:\n\t\t\t\tresult = []bool{\n\t\t\t\t\tmath.Float32frombits(uint32(x1Lo>>0)) <= math.Float32frombits(uint32(x2Lo>>0)),\n\t\t\t\t\tmath.Float32frombits(uint32(x1Lo>>32)) <= math.Float32frombits(uint32(x2Lo>>32)),\n\t\t\t\t\tmath.Float32frombits(uint32(x1Hi>>0)) <= math.Float32frombits(uint32(x2Hi>>0)),\n\t\t\t\t\tmath.Float32frombits(uint32(x1Hi>>32)) <= math.Float32frombits(uint32(x2Hi>>32)),\n\t\t\t\t}\n\t\t\tcase v128CmpTypeF32x4Ge:\n\t\t\t\tresult = []bool{\n\t\t\t\t\tmath.Float32frombits(uint32(x1Lo>>0)) >= math.Float32frombits(uint32(x2Lo>>0)),\n\t\t\t\t\tmath.Float32frombits(uint32(x1Lo>>32)) >= math.Float32frombits(uint32(x2Lo>>32)),\n\t\t\t\t\tmath.Float32frombits(uint32(x1Hi>>0)) >= math.Float32frombits(uint32(x2Hi>>0)),\n\t\t\t\t\tmath.Float32frombits(uint32(x1Hi>>32)) >= math.Float32frombits(uint32(x2Hi>>32)),\n\t\t\t\t}\n\t\t\tcase v128CmpTypeF64x2Eq:\n\t\t\t\tresult = []bool{\n\t\t\t\t\tmath.Float64frombits(x1Lo) == math.Float64frombits(x2Lo),\n\t\t\t\t\tmath.Float64frombits(x1Hi) == math.Float64frombits(x2Hi),\n\t\t\t\t}\n\t\t\tcase v128CmpTypeF64x2Ne:\n\t\t\t\tresult = []bool{\n\t\t\t\t\tmath.Float64frombits(x1Lo) != math.Float64frombits(x2Lo),\n\t\t\t\t\tmath.Float64frombits(x1Hi) != math.Float64frombits(x2Hi),\n\t\t\t\t}\n\t\t\tcase v128CmpTypeF64x2Lt:\n\t\t\t\tresult = []bool{\n\t\t\t\t\tmath.Float64frombits(x1Lo) < math.Float64frombits(x2Lo),\n\t\t\t\t\tmath.Float64frombits(x1Hi) < math.Float64frombits(x2Hi),\n\t\t\t\t}\n\t\t\tcase v128CmpTypeF64x2Gt:\n\t\t\t\tresult = []bool{\n\t\t\t\t\tmath.Float64frombits(x1Lo) > math.Float64frombits(x2Lo),\n\t\t\t\t\tmath.Float64frombits(x1Hi) > math.Float64frombits(x2Hi),\n\t\t\t\t}\n\t\t\tcase v128CmpTypeF64x2Le:\n\t\t\t\tresult = []bool{\n\t\t\t\t\tmath.Float64frombits(x1Lo) <= math.Float64frombits(x2Lo),\n\t\t\t\t\tmath.Float64frombits(x1Hi) <= math.Float64frombits(x2Hi),\n\t\t\t\t}\n\t\t\tcase v128CmpTypeF64x2Ge:\n\t\t\t\tresult = []bool{\n\t\t\t\t\tmath.Float64frombits(x1Lo) >= math.Float64frombits(x2Lo),\n\t\t\t\t\tmath.Float64frombits(x1Hi) >= math.Float64frombits(x2Hi),\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar retLo, retHi uint64\n\t\t\tlaneNum := len(result)\n\t\t\tswitch laneNum {\n\t\t\tcase 16:\n\t\t\t\tfor i, b := range result {\n\t\t\t\t\tif b {\n\t\t\t\t\t\tif i < 8 {\n\t\t\t\t\t\t\tretLo |= 0xff << (i * 8)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tretHi |= 0xff << ((i - 8) * 8)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase 8:\n\t\t\t\tfor i, b := range result {\n\t\t\t\t\tif b {\n\t\t\t\t\t\tif i < 4 {\n\t\t\t\t\t\t\tretLo |= 0xffff << (i * 16)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tretHi |= 0xffff << ((i - 4) * 16)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase 4:\n\t\t\t\tfor i, b := range result {\n\t\t\t\t\tif b {\n\t\t\t\t\t\tif i < 2 {\n\t\t\t\t\t\t\tretLo |= 0xffff_ffff << (i * 32)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tretHi |= 0xffff_ffff << ((i - 2) * 32)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase 2:\n\t\t\t\tif result[0] {\n\t\t\t\t\tretLo = ^uint64(0)\n\t\t\t\t}\n\t\t\t\tif result[1] {\n\t\t\t\t\tretHi = ^uint64(0)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tce.pushValue(retLo)\n\t\t\tce.pushValue(retHi)\n\t\t\tframe.pc++\n\t\tcase operationKindV128AddSat:\n\t\t\tx2hi, x2Lo := ce.popValue(), ce.popValue()\n\t\t\tx1hi, x1Lo := ce.popValue(), ce.popValue()\n\n\t\t\tvar retLo, retHi uint64\n\n\t\t\t// Lane-wise addition while saturating the overflowing values.\n\t\t\t// https://github.com/WebAssembly/spec/blob/wg-2.0.draft1/proposals/simd/SIMD.md#saturating-integer-addition\n\t\t\tswitch op.B1 {\n\t\t\tcase shapeI8x16:\n\t\t\t\tfor i := 0; i < 16; i++ {\n\t\t\t\t\tvar v, w byte\n\t\t\t\t\tif i < 8 {\n\t\t\t\t\t\tv, w = byte(x1Lo>>(i*8)), byte(x2Lo>>(i*8))\n\t\t\t\t\t} else {\n\t\t\t\t\t\tv, w = byte(x1hi>>((i-8)*8)), byte(x2hi>>((i-8)*8))\n\t\t\t\t\t}\n\n\t\t\t\t\tvar uv uint64\n\t\t\t\t\tif op.B3 { // signed\n\t\t\t\t\t\tif subbed := int64(int8(v)) + int64(int8(w)); subbed < math.MinInt8 {\n\t\t\t\t\t\t\tuv = uint64(byte(0x80))\n\t\t\t\t\t\t} else if subbed > math.MaxInt8 {\n\t\t\t\t\t\t\tuv = uint64(byte(0x7f))\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tuv = uint64(byte(int8(subbed)))\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif subbed := int64(v) + int64(w); subbed < 0 {\n\t\t\t\t\t\t\tuv = uint64(byte(0))\n\t\t\t\t\t\t} else if subbed > math.MaxUint8 {\n\t\t\t\t\t\t\tuv = uint64(byte(0xff))\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tuv = uint64(byte(subbed))\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif i < 8 { // first 8 lanes are on lower 64bits.\n\t\t\t\t\t\tretLo |= uv << (i * 8)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tretHi |= uv << ((i - 8) * 8)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase shapeI16x8:\n\t\t\t\tfor i := 0; i < 8; i++ {\n\t\t\t\t\tvar v, w uint16\n\t\t\t\t\tif i < 4 {\n\t\t\t\t\t\tv, w = uint16(x1Lo>>(i*16)), uint16(x2Lo>>(i*16))\n\t\t\t\t\t} else {\n\t\t\t\t\t\tv, w = uint16(x1hi>>((i-4)*16)), uint16(x2hi>>((i-4)*16))\n\t\t\t\t\t}\n\n\t\t\t\t\tvar uv uint64\n\t\t\t\t\tif op.B3 { // signed\n\t\t\t\t\t\tif added := int64(int16(v)) + int64(int16(w)); added < math.MinInt16 {\n\t\t\t\t\t\t\tuv = uint64(uint16(0x8000))\n\t\t\t\t\t\t} else if added > math.MaxInt16 {\n\t\t\t\t\t\t\tuv = uint64(uint16(0x7fff))\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tuv = uint64(uint16(int16(added)))\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif added := int64(v) + int64(w); added < 0 {\n\t\t\t\t\t\t\tuv = uint64(uint16(0))\n\t\t\t\t\t\t} else if added > math.MaxUint16 {\n\t\t\t\t\t\t\tuv = uint64(uint16(0xffff))\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tuv = uint64(uint16(added))\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif i < 4 { // first 4 lanes are on lower 64bits.\n\t\t\t\t\t\tretLo |= uv << (i * 16)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tretHi |= uv << ((i - 4) * 16)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tce.pushValue(retLo)\n\t\t\tce.pushValue(retHi)\n\t\t\tframe.pc++\n\t\tcase operationKindV128SubSat:\n\t\t\tx2hi, x2Lo := ce.popValue(), ce.popValue()\n\t\t\tx1hi, x1Lo := ce.popValue(), ce.popValue()\n\n\t\t\tvar retLo, retHi uint64\n\n\t\t\t// Lane-wise subtraction while saturating the overflowing values.\n\t\t\t// https://github.com/WebAssembly/spec/blob/wg-2.0.draft1/proposals/simd/SIMD.md#saturating-integer-subtraction\n\t\t\tswitch op.B1 {\n\t\t\tcase shapeI8x16:\n\t\t\t\tfor i := 0; i < 16; i++ {\n\t\t\t\t\tvar v, w byte\n\t\t\t\t\tif i < 8 {\n\t\t\t\t\t\tv, w = byte(x1Lo>>(i*8)), byte(x2Lo>>(i*8))\n\t\t\t\t\t} else {\n\t\t\t\t\t\tv, w = byte(x1hi>>((i-8)*8)), byte(x2hi>>((i-8)*8))\n\t\t\t\t\t}\n\n\t\t\t\t\tvar uv uint64\n\t\t\t\t\tif op.B3 { // signed\n\t\t\t\t\t\tif subbed := int64(int8(v)) - int64(int8(w)); subbed < math.MinInt8 {\n\t\t\t\t\t\t\tuv = uint64(byte(0x80))\n\t\t\t\t\t\t} else if subbed > math.MaxInt8 {\n\t\t\t\t\t\t\tuv = uint64(byte(0x7f))\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tuv = uint64(byte(int8(subbed)))\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif subbed := int64(v) - int64(w); subbed < 0 {\n\t\t\t\t\t\t\tuv = uint64(byte(0))\n\t\t\t\t\t\t} else if subbed > math.MaxUint8 {\n\t\t\t\t\t\t\tuv = uint64(byte(0xff))\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tuv = uint64(byte(subbed))\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif i < 8 {\n\t\t\t\t\t\tretLo |= uv << (i * 8)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tretHi |= uv << ((i - 8) * 8)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase shapeI16x8:\n\t\t\t\tfor i := 0; i < 8; i++ {\n\t\t\t\t\tvar v, w uint16\n\t\t\t\t\tif i < 4 {\n\t\t\t\t\t\tv, w = uint16(x1Lo>>(i*16)), uint16(x2Lo>>(i*16))\n\t\t\t\t\t} else {\n\t\t\t\t\t\tv, w = uint16(x1hi>>((i-4)*16)), uint16(x2hi>>((i-4)*16))\n\t\t\t\t\t}\n\n\t\t\t\t\tvar uv uint64\n\t\t\t\t\tif op.B3 { // signed\n\t\t\t\t\t\tif subbed := int64(int16(v)) - int64(int16(w)); subbed < math.MinInt16 {\n\t\t\t\t\t\t\tuv = uint64(uint16(0x8000))\n\t\t\t\t\t\t} else if subbed > math.MaxInt16 {\n\t\t\t\t\t\t\tuv = uint64(uint16(0x7fff))\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tuv = uint64(uint16(int16(subbed)))\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif subbed := int64(v) - int64(w); subbed < 0 {\n\t\t\t\t\t\t\tuv = uint64(uint16(0))\n\t\t\t\t\t\t} else if subbed > math.MaxUint16 {\n\t\t\t\t\t\t\tuv = uint64(uint16(0xffff))\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tuv = uint64(uint16(subbed))\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif i < 4 {\n\t\t\t\t\t\tretLo |= uv << (i * 16)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tretHi |= uv << ((i - 4) * 16)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tce.pushValue(retLo)\n\t\t\tce.pushValue(retHi)\n\t\t\tframe.pc++\n\t\tcase operationKindV128Mul:\n\t\t\tx2hi, x2lo := ce.popValue(), ce.popValue()\n\t\t\tx1hi, x1lo := ce.popValue(), ce.popValue()\n\t\t\tvar retLo, retHi uint64\n\t\t\tswitch op.B1 {\n\t\t\tcase shapeI16x8:\n\t\t\t\tretHi = uint64(uint16(x1hi)*uint16(x2hi)) | (uint64(uint16(x1hi>>16)*uint16(x2hi>>16)) << 16) |\n\t\t\t\t\t(uint64(uint16(x1hi>>32)*uint16(x2hi>>32)) << 32) | (uint64(uint16(x1hi>>48)*uint16(x2hi>>48)) << 48)\n\t\t\t\tretLo = uint64(uint16(x1lo)*uint16(x2lo)) | (uint64(uint16(x1lo>>16)*uint16(x2lo>>16)) << 16) |\n\t\t\t\t\t(uint64(uint16(x1lo>>32)*uint16(x2lo>>32)) << 32) | (uint64(uint16(x1lo>>48)*uint16(x2lo>>48)) << 48)\n\t\t\tcase shapeI32x4:\n\t\t\t\tretHi = uint64(uint32(x1hi)*uint32(x2hi)) | (uint64(uint32(x1hi>>32)*uint32(x2hi>>32)) << 32)\n\t\t\t\tretLo = uint64(uint32(x1lo)*uint32(x2lo)) | (uint64(uint32(x1lo>>32)*uint32(x2lo>>32)) << 32)\n\t\t\tcase shapeI64x2:\n\t\t\t\tretHi = x1hi * x2hi\n\t\t\t\tretLo = x1lo * x2lo\n\t\t\tcase shapeF32x4:\n\t\t\t\tretHi = mulFloat32bits(uint32(x1hi), uint32(x2hi)) | mulFloat32bits(uint32(x1hi>>32), uint32(x2hi>>32))<<32\n\t\t\t\tretLo = mulFloat32bits(uint32(x1lo), uint32(x2lo)) | mulFloat32bits(uint32(x1lo>>32), uint32(x2lo>>32))<<32\n\t\t\tcase shapeF64x2:\n\t\t\t\tretHi = math.Float64bits(math.Float64frombits(x1hi) * math.Float64frombits(x2hi))\n\t\t\t\tretLo = math.Float64bits(math.Float64frombits(x1lo) * math.Float64frombits(x2lo))\n\t\t\t}\n\t\t\tce.pushValue(retLo)\n\t\t\tce.pushValue(retHi)\n\t\t\tframe.pc++\n\t\tcase operationKindV128Div:\n\t\t\tx2hi, x2lo := ce.popValue(), ce.popValue()\n\t\t\tx1hi, x1lo := ce.popValue(), ce.popValue()\n\t\t\tvar retLo, retHi uint64\n\t\t\tif op.B1 == shapeF64x2 {\n\t\t\t\tretHi = math.Float64bits(math.Float64frombits(x1hi) / math.Float64frombits(x2hi))\n\t\t\t\tretLo = math.Float64bits(math.Float64frombits(x1lo) / math.Float64frombits(x2lo))\n\t\t\t} else {\n\t\t\t\tretHi = divFloat32bits(uint32(x1hi), uint32(x2hi)) | divFloat32bits(uint32(x1hi>>32), uint32(x2hi>>32))<<32\n\t\t\t\tretLo = divFloat32bits(uint32(x1lo), uint32(x2lo)) | divFloat32bits(uint32(x1lo>>32), uint32(x2lo>>32))<<32\n\t\t\t}\n\t\t\tce.pushValue(retLo)\n\t\t\tce.pushValue(retHi)\n\t\t\tframe.pc++\n\t\tcase operationKindV128Neg:\n\t\t\thi, lo := ce.popValue(), ce.popValue()\n\t\t\tswitch op.B1 {\n\t\t\tcase shapeI8x16:\n\t\t\t\tlo = uint64(-byte(lo)) | (uint64(-byte(lo>>8)) << 8) |\n\t\t\t\t\t(uint64(-byte(lo>>16)) << 16) | (uint64(-byte(lo>>24)) << 24) |\n\t\t\t\t\t(uint64(-byte(lo>>32)) << 32) | (uint64(-byte(lo>>40)) << 40) |\n\t\t\t\t\t(uint64(-byte(lo>>48)) << 48) | (uint64(-byte(lo>>56)) << 56)\n\t\t\t\thi = uint64(-byte(hi)) | (uint64(-byte(hi>>8)) << 8) |\n\t\t\t\t\t(uint64(-byte(hi>>16)) << 16) | (uint64(-byte(hi>>24)) << 24) |\n\t\t\t\t\t(uint64(-byte(hi>>32)) << 32) | (uint64(-byte(hi>>40)) << 40) |\n\t\t\t\t\t(uint64(-byte(hi>>48)) << 48) | (uint64(-byte(hi>>56)) << 56)\n\t\t\tcase shapeI16x8:\n\t\t\t\thi = uint64(-uint16(hi)) | (uint64(-uint16(hi>>16)) << 16) |\n\t\t\t\t\t(uint64(-uint16(hi>>32)) << 32) | (uint64(-uint16(hi>>48)) << 48)\n\t\t\t\tlo = uint64(-uint16(lo)) | (uint64(-uint16(lo>>16)) << 16) |\n\t\t\t\t\t(uint64(-uint16(lo>>32)) << 32) | (uint64(-uint16(lo>>48)) << 48)\n\t\t\tcase shapeI32x4:\n\t\t\t\thi = uint64(-uint32(hi)) | (uint64(-uint32(hi>>32)) << 32)\n\t\t\t\tlo = uint64(-uint32(lo)) | (uint64(-uint32(lo>>32)) << 32)\n\t\t\tcase shapeI64x2:\n\t\t\t\thi = -hi\n\t\t\t\tlo = -lo\n\t\t\tcase shapeF32x4:\n\t\t\t\thi = uint64(math.Float32bits(-math.Float32frombits(uint32(hi)))) |\n\t\t\t\t\t(uint64(math.Float32bits(-math.Float32frombits(uint32(hi>>32)))) << 32)\n\t\t\t\tlo = uint64(math.Float32bits(-math.Float32frombits(uint32(lo)))) |\n\t\t\t\t\t(uint64(math.Float32bits(-math.Float32frombits(uint32(lo>>32)))) << 32)\n\t\t\tcase shapeF64x2:\n\t\t\t\thi = math.Float64bits(-math.Float64frombits(hi))\n\t\t\t\tlo = math.Float64bits(-math.Float64frombits(lo))\n\t\t\t}\n\t\t\tce.pushValue(lo)\n\t\t\tce.pushValue(hi)\n\t\t\tframe.pc++\n\t\tcase operationKindV128Sqrt:\n\t\t\thi, lo := ce.popValue(), ce.popValue()\n\t\t\tif op.B1 == shapeF64x2 {\n\t\t\t\thi = math.Float64bits(math.Sqrt(math.Float64frombits(hi)))\n\t\t\t\tlo = math.Float64bits(math.Sqrt(math.Float64frombits(lo)))\n\t\t\t} else {\n\t\t\t\thi = uint64(math.Float32bits(float32(math.Sqrt(float64(math.Float32frombits(uint32(hi))))))) |\n\t\t\t\t\t(uint64(math.Float32bits(float32(math.Sqrt(float64(math.Float32frombits(uint32(hi>>32))))))) << 32)\n\t\t\t\tlo = uint64(math.Float32bits(float32(math.Sqrt(float64(math.Float32frombits(uint32(lo))))))) |\n\t\t\t\t\t(uint64(math.Float32bits(float32(math.Sqrt(float64(math.Float32frombits(uint32(lo>>32))))))) << 32)\n\t\t\t}\n\t\t\tce.pushValue(lo)\n\t\t\tce.pushValue(hi)\n\t\t\tframe.pc++\n\t\tcase operationKindV128Abs:\n\t\t\thi, lo := ce.popValue(), ce.popValue()\n\t\t\tswitch op.B1 {\n\t\t\tcase shapeI8x16:\n\t\t\t\tlo = uint64(i8Abs(byte(lo))) | (uint64(i8Abs(byte(lo>>8))) << 8) |\n\t\t\t\t\t(uint64(i8Abs(byte(lo>>16))) << 16) | (uint64(i8Abs(byte(lo>>24))) << 24) |\n\t\t\t\t\t(uint64(i8Abs(byte(lo>>32))) << 32) | (uint64(i8Abs(byte(lo>>40))) << 40) |\n\t\t\t\t\t(uint64(i8Abs(byte(lo>>48))) << 48) | (uint64(i8Abs(byte(lo>>56))) << 56)\n\t\t\t\thi = uint64(i8Abs(byte(hi))) | (uint64(i8Abs(byte(hi>>8))) << 8) |\n\t\t\t\t\t(uint64(i8Abs(byte(hi>>16))) << 16) | (uint64(i8Abs(byte(hi>>24))) << 24) |\n\t\t\t\t\t(uint64(i8Abs(byte(hi>>32))) << 32) | (uint64(i8Abs(byte(hi>>40))) << 40) |\n\t\t\t\t\t(uint64(i8Abs(byte(hi>>48))) << 48) | (uint64(i8Abs(byte(hi>>56))) << 56)\n\t\t\tcase shapeI16x8:\n\t\t\t\thi = uint64(i16Abs(uint16(hi))) | (uint64(i16Abs(uint16(hi>>16))) << 16) |\n\t\t\t\t\t(uint64(i16Abs(uint16(hi>>32))) << 32) | (uint64(i16Abs(uint16(hi>>48))) << 48)\n\t\t\t\tlo = uint64(i16Abs(uint16(lo))) | (uint64(i16Abs(uint16(lo>>16))) << 16) |\n\t\t\t\t\t(uint64(i16Abs(uint16(lo>>32))) << 32) | (uint64(i16Abs(uint16(lo>>48))) << 48)\n\t\t\tcase shapeI32x4:\n\t\t\t\thi = uint64(i32Abs(uint32(hi))) | (uint64(i32Abs(uint32(hi>>32))) << 32)\n\t\t\t\tlo = uint64(i32Abs(uint32(lo))) | (uint64(i32Abs(uint32(lo>>32))) << 32)\n\t\t\tcase shapeI64x2:\n\t\t\t\tif int64(hi) < 0 {\n\t\t\t\t\thi = -hi\n\t\t\t\t}\n\t\t\t\tif int64(lo) < 0 {\n\t\t\t\t\tlo = -lo\n\t\t\t\t}\n\t\t\tcase shapeF32x4:\n\t\t\t\thi = hi &^ (1<<31 | 1<<63)\n\t\t\t\tlo = lo &^ (1<<31 | 1<<63)\n\t\t\tcase shapeF64x2:\n\t\t\t\thi = hi &^ (1 << 63)\n\t\t\t\tlo = lo &^ (1 << 63)\n\t\t\t}\n\t\t\tce.pushValue(lo)\n\t\t\tce.pushValue(hi)\n\t\t\tframe.pc++\n\t\tcase operationKindV128Popcnt:\n\t\t\thi, lo := ce.popValue(), ce.popValue()\n\t\t\tvar retLo, retHi uint64\n\t\t\tfor i := 0; i < 16; i++ {\n\t\t\t\tvar v byte\n\t\t\t\tif i < 8 {\n\t\t\t\t\tv = byte(lo >> (i * 8))\n\t\t\t\t} else {\n\t\t\t\t\tv = byte(hi >> ((i - 8) * 8))\n\t\t\t\t}\n\n\t\t\t\tvar cnt uint64\n\t\t\t\tfor i := 0; i < 8; i++ {\n\t\t\t\t\tif (v>>i)&0b1 != 0 {\n\t\t\t\t\t\tcnt++\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif i < 8 {\n\t\t\t\t\tretLo |= cnt << (i * 8)\n\t\t\t\t} else {\n\t\t\t\t\tretHi |= cnt << ((i - 8) * 8)\n\t\t\t\t}\n\t\t\t}\n\t\t\tce.pushValue(retLo)\n\t\t\tce.pushValue(retHi)\n\t\t\tframe.pc++\n\t\tcase operationKindV128Min:\n\t\t\tx2hi, x2lo := ce.popValue(), ce.popValue()\n\t\t\tx1hi, x1lo := ce.popValue(), ce.popValue()\n\t\t\tvar retLo, retHi uint64\n\t\t\tswitch op.B1 {\n\t\t\tcase shapeI8x16:\n\t\t\t\tif op.B3 { // signed\n\t\t\t\t\tretLo = uint64(i8MinS(uint8(x1lo>>8), uint8(x2lo>>8)))<<8 | uint64(i8MinS(uint8(x1lo), uint8(x2lo))) |\n\t\t\t\t\t\tuint64(i8MinS(uint8(x1lo>>24), uint8(x2lo>>24)))<<24 | uint64(i8MinS(uint8(x1lo>>16), uint8(x2lo>>16)))<<16 |\n\t\t\t\t\t\tuint64(i8MinS(uint8(x1lo>>40), uint8(x2lo>>40)))<<40 | uint64(i8MinS(uint8(x1lo>>32), uint8(x2lo>>32)))<<32 |\n\t\t\t\t\t\tuint64(i8MinS(uint8(x1lo>>56), uint8(x2lo>>56)))<<56 | uint64(i8MinS(uint8(x1lo>>48), uint8(x2lo>>48)))<<48\n\t\t\t\t\tretHi = uint64(i8MinS(uint8(x1hi>>8), uint8(x2hi>>8)))<<8 | uint64(i8MinS(uint8(x1hi), uint8(x2hi))) |\n\t\t\t\t\t\tuint64(i8MinS(uint8(x1hi>>24), uint8(x2hi>>24)))<<24 | uint64(i8MinS(uint8(x1hi>>16), uint8(x2hi>>16)))<<16 |\n\t\t\t\t\t\tuint64(i8MinS(uint8(x1hi>>40), uint8(x2hi>>40)))<<40 | uint64(i8MinS(uint8(x1hi>>32), uint8(x2hi>>32)))<<32 |\n\t\t\t\t\t\tuint64(i8MinS(uint8(x1hi>>56), uint8(x2hi>>56)))<<56 | uint64(i8MinS(uint8(x1hi>>48), uint8(x2hi>>48)))<<48\n\t\t\t\t} else {\n\t\t\t\t\tretLo = uint64(i8MinU(uint8(x1lo>>8), uint8(x2lo>>8)))<<8 | uint64(i8MinU(uint8(x1lo), uint8(x2lo))) |\n\t\t\t\t\t\tuint64(i8MinU(uint8(x1lo>>24), uint8(x2lo>>24)))<<24 | uint64(i8MinU(uint8(x1lo>>16), uint8(x2lo>>16)))<<16 |\n\t\t\t\t\t\tuint64(i8MinU(uint8(x1lo>>40), uint8(x2lo>>40)))<<40 | uint64(i8MinU(uint8(x1lo>>32), uint8(x2lo>>32)))<<32 |\n\t\t\t\t\t\tuint64(i8MinU(uint8(x1lo>>56), uint8(x2lo>>56)))<<56 | uint64(i8MinU(uint8(x1lo>>48), uint8(x2lo>>48)))<<48\n\t\t\t\t\tretHi = uint64(i8MinU(uint8(x1hi>>8), uint8(x2hi>>8)))<<8 | uint64(i8MinU(uint8(x1hi), uint8(x2hi))) |\n\t\t\t\t\t\tuint64(i8MinU(uint8(x1hi>>24), uint8(x2hi>>24)))<<24 | uint64(i8MinU(uint8(x1hi>>16), uint8(x2hi>>16)))<<16 |\n\t\t\t\t\t\tuint64(i8MinU(uint8(x1hi>>40), uint8(x2hi>>40)))<<40 | uint64(i8MinU(uint8(x1hi>>32), uint8(x2hi>>32)))<<32 |\n\t\t\t\t\t\tuint64(i8MinU(uint8(x1hi>>56), uint8(x2hi>>56)))<<56 | uint64(i8MinU(uint8(x1hi>>48), uint8(x2hi>>48)))<<48\n\t\t\t\t}\n\t\t\tcase shapeI16x8:\n\t\t\t\tif op.B3 { // signed\n\t\t\t\t\tretLo = uint64(i16MinS(uint16(x1lo), uint16(x2lo))) |\n\t\t\t\t\t\tuint64(i16MinS(uint16(x1lo>>16), uint16(x2lo>>16)))<<16 |\n\t\t\t\t\t\tuint64(i16MinS(uint16(x1lo>>32), uint16(x2lo>>32)))<<32 |\n\t\t\t\t\t\tuint64(i16MinS(uint16(x1lo>>48), uint16(x2lo>>48)))<<48\n\t\t\t\t\tretHi = uint64(i16MinS(uint16(x1hi), uint16(x2hi))) |\n\t\t\t\t\t\tuint64(i16MinS(uint16(x1hi>>16), uint16(x2hi>>16)))<<16 |\n\t\t\t\t\t\tuint64(i16MinS(uint16(x1hi>>32), uint16(x2hi>>32)))<<32 |\n\t\t\t\t\t\tuint64(i16MinS(uint16(x1hi>>48), uint16(x2hi>>48)))<<48\n\t\t\t\t} else {\n\t\t\t\t\tretLo = uint64(i16MinU(uint16(x1lo), uint16(x2lo))) |\n\t\t\t\t\t\tuint64(i16MinU(uint16(x1lo>>16), uint16(x2lo>>16)))<<16 |\n\t\t\t\t\t\tuint64(i16MinU(uint16(x1lo>>32), uint16(x2lo>>32)))<<32 |\n\t\t\t\t\t\tuint64(i16MinU(uint16(x1lo>>48), uint16(x2lo>>48)))<<48\n\t\t\t\t\tretHi = uint64(i16MinU(uint16(x1hi), uint16(x2hi))) |\n\t\t\t\t\t\tuint64(i16MinU(uint16(x1hi>>16), uint16(x2hi>>16)))<<16 |\n\t\t\t\t\t\tuint64(i16MinU(uint16(x1hi>>32), uint16(x2hi>>32)))<<32 |\n\t\t\t\t\t\tuint64(i16MinU(uint16(x1hi>>48), uint16(x2hi>>48)))<<48\n\t\t\t\t}\n\t\t\tcase shapeI32x4:\n\t\t\t\tif op.B3 { // signed\n\t\t\t\t\tretLo = uint64(i32MinS(uint32(x1lo), uint32(x2lo))) |\n\t\t\t\t\t\tuint64(i32MinS(uint32(x1lo>>32), uint32(x2lo>>32)))<<32\n\t\t\t\t\tretHi = uint64(i32MinS(uint32(x1hi), uint32(x2hi))) |\n\t\t\t\t\t\tuint64(i32MinS(uint32(x1hi>>32), uint32(x2hi>>32)))<<32\n\t\t\t\t} else {\n\t\t\t\t\tretLo = uint64(i32MinU(uint32(x1lo), uint32(x2lo))) |\n\t\t\t\t\t\tuint64(i32MinU(uint32(x1lo>>32), uint32(x2lo>>32)))<<32\n\t\t\t\t\tretHi = uint64(i32MinU(uint32(x1hi), uint32(x2hi))) |\n\t\t\t\t\t\tuint64(i32MinU(uint32(x1hi>>32), uint32(x2hi>>32)))<<32\n\t\t\t\t}\n\t\t\tcase shapeF32x4:\n\t\t\t\tretHi = wasmCompatMin32bits(uint32(x1hi), uint32(x2hi)) |\n\t\t\t\t\twasmCompatMin32bits(uint32(x1hi>>32), uint32(x2hi>>32))<<32\n\t\t\t\tretLo = wasmCompatMin32bits(uint32(x1lo), uint32(x2lo)) |\n\t\t\t\t\twasmCompatMin32bits(uint32(x1lo>>32), uint32(x2lo>>32))<<32\n\t\t\tcase shapeF64x2:\n\t\t\t\tretHi = math.Float64bits(moremath.WasmCompatMin64(\n\t\t\t\t\tmath.Float64frombits(x1hi),\n\t\t\t\t\tmath.Float64frombits(x2hi),\n\t\t\t\t))\n\t\t\t\tretLo = math.Float64bits(moremath.WasmCompatMin64(\n\t\t\t\t\tmath.Float64frombits(x1lo),\n\t\t\t\t\tmath.Float64frombits(x2lo),\n\t\t\t\t))\n\t\t\t}\n\t\t\tce.pushValue(retLo)\n\t\t\tce.pushValue(retHi)\n\t\t\tframe.pc++\n\t\tcase operationKindV128Max:\n\t\t\tx2hi, x2lo := ce.popValue(), ce.popValue()\n\t\t\tx1hi, x1lo := ce.popValue(), ce.popValue()\n\t\t\tvar retLo, retHi uint64\n\t\t\tswitch op.B1 {\n\t\t\tcase shapeI8x16:\n\t\t\t\tif op.B3 { // signed\n\t\t\t\t\tretLo = uint64(i8MaxS(uint8(x1lo>>8), uint8(x2lo>>8)))<<8 | uint64(i8MaxS(uint8(x1lo), uint8(x2lo))) |\n\t\t\t\t\t\tuint64(i8MaxS(uint8(x1lo>>24), uint8(x2lo>>24)))<<24 | uint64(i8MaxS(uint8(x1lo>>16), uint8(x2lo>>16)))<<16 |\n\t\t\t\t\t\tuint64(i8MaxS(uint8(x1lo>>40), uint8(x2lo>>40)))<<40 | uint64(i8MaxS(uint8(x1lo>>32), uint8(x2lo>>32)))<<32 |\n\t\t\t\t\t\tuint64(i8MaxS(uint8(x1lo>>56), uint8(x2lo>>56)))<<56 | uint64(i8MaxS(uint8(x1lo>>48), uint8(x2lo>>48)))<<48\n\t\t\t\t\tretHi = uint64(i8MaxS(uint8(x1hi>>8), uint8(x2hi>>8)))<<8 | uint64(i8MaxS(uint8(x1hi), uint8(x2hi))) |\n\t\t\t\t\t\tuint64(i8MaxS(uint8(x1hi>>24), uint8(x2hi>>24)))<<24 | uint64(i8MaxS(uint8(x1hi>>16), uint8(x2hi>>16)))<<16 |\n\t\t\t\t\t\tuint64(i8MaxS(uint8(x1hi>>40), uint8(x2hi>>40)))<<40 | uint64(i8MaxS(uint8(x1hi>>32), uint8(x2hi>>32)))<<32 |\n\t\t\t\t\t\tuint64(i8MaxS(uint8(x1hi>>56), uint8(x2hi>>56)))<<56 | uint64(i8MaxS(uint8(x1hi>>48), uint8(x2hi>>48)))<<48\n\t\t\t\t} else {\n\t\t\t\t\tretLo = uint64(i8MaxU(uint8(x1lo>>8), uint8(x2lo>>8)))<<8 | uint64(i8MaxU(uint8(x1lo), uint8(x2lo))) |\n\t\t\t\t\t\tuint64(i8MaxU(uint8(x1lo>>24), uint8(x2lo>>24)))<<24 | uint64(i8MaxU(uint8(x1lo>>16), uint8(x2lo>>16)))<<16 |\n\t\t\t\t\t\tuint64(i8MaxU(uint8(x1lo>>40), uint8(x2lo>>40)))<<40 | uint64(i8MaxU(uint8(x1lo>>32), uint8(x2lo>>32)))<<32 |\n\t\t\t\t\t\tuint64(i8MaxU(uint8(x1lo>>56), uint8(x2lo>>56)))<<56 | uint64(i8MaxU(uint8(x1lo>>48), uint8(x2lo>>48)))<<48\n\t\t\t\t\tretHi = uint64(i8MaxU(uint8(x1hi>>8), uint8(x2hi>>8)))<<8 | uint64(i8MaxU(uint8(x1hi), uint8(x2hi))) |\n\t\t\t\t\t\tuint64(i8MaxU(uint8(x1hi>>24), uint8(x2hi>>24)))<<24 | uint64(i8MaxU(uint8(x1hi>>16), uint8(x2hi>>16)))<<16 |\n\t\t\t\t\t\tuint64(i8MaxU(uint8(x1hi>>40), uint8(x2hi>>40)))<<40 | uint64(i8MaxU(uint8(x1hi>>32), uint8(x2hi>>32)))<<32 |\n\t\t\t\t\t\tuint64(i8MaxU(uint8(x1hi>>56), uint8(x2hi>>56)))<<56 | uint64(i8MaxU(uint8(x1hi>>48), uint8(x2hi>>48)))<<48\n\t\t\t\t}\n\t\t\tcase shapeI16x8:\n\t\t\t\tif op.B3 { // signed\n\t\t\t\t\tretLo = uint64(i16MaxS(uint16(x1lo), uint16(x2lo))) |\n\t\t\t\t\t\tuint64(i16MaxS(uint16(x1lo>>16), uint16(x2lo>>16)))<<16 |\n\t\t\t\t\t\tuint64(i16MaxS(uint16(x1lo>>32), uint16(x2lo>>32)))<<32 |\n\t\t\t\t\t\tuint64(i16MaxS(uint16(x1lo>>48), uint16(x2lo>>48)))<<48\n\t\t\t\t\tretHi = uint64(i16MaxS(uint16(x1hi), uint16(x2hi))) |\n\t\t\t\t\t\tuint64(i16MaxS(uint16(x1hi>>16), uint16(x2hi>>16)))<<16 |\n\t\t\t\t\t\tuint64(i16MaxS(uint16(x1hi>>32), uint16(x2hi>>32)))<<32 |\n\t\t\t\t\t\tuint64(i16MaxS(uint16(x1hi>>48), uint16(x2hi>>48)))<<48\n\t\t\t\t} else {\n\t\t\t\t\tretLo = uint64(i16MaxU(uint16(x1lo), uint16(x2lo))) |\n\t\t\t\t\t\tuint64(i16MaxU(uint16(x1lo>>16), uint16(x2lo>>16)))<<16 |\n\t\t\t\t\t\tuint64(i16MaxU(uint16(x1lo>>32), uint16(x2lo>>32)))<<32 |\n\t\t\t\t\t\tuint64(i16MaxU(uint16(x1lo>>48), uint16(x2lo>>48)))<<48\n\t\t\t\t\tretHi = uint64(i16MaxU(uint16(x1hi), uint16(x2hi))) |\n\t\t\t\t\t\tuint64(i16MaxU(uint16(x1hi>>16), uint16(x2hi>>16)))<<16 |\n\t\t\t\t\t\tuint64(i16MaxU(uint16(x1hi>>32), uint16(x2hi>>32)))<<32 |\n\t\t\t\t\t\tuint64(i16MaxU(uint16(x1hi>>48), uint16(x2hi>>48)))<<48\n\t\t\t\t}\n\t\t\tcase shapeI32x4:\n\t\t\t\tif op.B3 { // signed\n\t\t\t\t\tretLo = uint64(i32MaxS(uint32(x1lo), uint32(x2lo))) |\n\t\t\t\t\t\tuint64(i32MaxS(uint32(x1lo>>32), uint32(x2lo>>32)))<<32\n\t\t\t\t\tretHi = uint64(i32MaxS(uint32(x1hi), uint32(x2hi))) |\n\t\t\t\t\t\tuint64(i32MaxS(uint32(x1hi>>32), uint32(x2hi>>32)))<<32\n\t\t\t\t} else {\n\t\t\t\t\tretLo = uint64(i32MaxU(uint32(x1lo), uint32(x2lo))) |\n\t\t\t\t\t\tuint64(i32MaxU(uint32(x1lo>>32), uint32(x2lo>>32)))<<32\n\t\t\t\t\tretHi = uint64(i32MaxU(uint32(x1hi), uint32(x2hi))) |\n\t\t\t\t\t\tuint64(i32MaxU(uint32(x1hi>>32), uint32(x2hi>>32)))<<32\n\t\t\t\t}\n\t\t\tcase shapeF32x4:\n\t\t\t\tretHi = wasmCompatMax32bits(uint32(x1hi), uint32(x2hi)) |\n\t\t\t\t\twasmCompatMax32bits(uint32(x1hi>>32), uint32(x2hi>>32))<<32\n\t\t\t\tretLo = wasmCompatMax32bits(uint32(x1lo), uint32(x2lo)) |\n\t\t\t\t\twasmCompatMax32bits(uint32(x1lo>>32), uint32(x2lo>>32))<<32\n\t\t\tcase shapeF64x2:\n\t\t\t\tretHi = math.Float64bits(moremath.WasmCompatMax64(\n\t\t\t\t\tmath.Float64frombits(x1hi),\n\t\t\t\t\tmath.Float64frombits(x2hi),\n\t\t\t\t))\n\t\t\t\tretLo = math.Float64bits(moremath.WasmCompatMax64(\n\t\t\t\t\tmath.Float64frombits(x1lo),\n\t\t\t\t\tmath.Float64frombits(x2lo),\n\t\t\t\t))\n\t\t\t}\n\t\t\tce.pushValue(retLo)\n\t\t\tce.pushValue(retHi)\n\t\t\tframe.pc++\n\t\tcase operationKindV128AvgrU:\n\t\t\tx2hi, x2lo := ce.popValue(), ce.popValue()\n\t\t\tx1hi, x1lo := ce.popValue(), ce.popValue()\n\t\t\tvar retLo, retHi uint64\n\t\t\tswitch op.B1 {\n\t\t\tcase shapeI8x16:\n\t\t\t\tretLo = uint64(i8RoundingAverage(uint8(x1lo>>8), uint8(x2lo>>8)))<<8 | uint64(i8RoundingAverage(uint8(x1lo), uint8(x2lo))) |\n\t\t\t\t\tuint64(i8RoundingAverage(uint8(x1lo>>24), uint8(x2lo>>24)))<<24 | uint64(i8RoundingAverage(uint8(x1lo>>16), uint8(x2lo>>16)))<<16 |\n\t\t\t\t\tuint64(i8RoundingAverage(uint8(x1lo>>40), uint8(x2lo>>40)))<<40 | uint64(i8RoundingAverage(uint8(x1lo>>32), uint8(x2lo>>32)))<<32 |\n\t\t\t\t\tuint64(i8RoundingAverage(uint8(x1lo>>56), uint8(x2lo>>56)))<<56 | uint64(i8RoundingAverage(uint8(x1lo>>48), uint8(x2lo>>48)))<<48\n\t\t\t\tretHi = uint64(i8RoundingAverage(uint8(x1hi>>8), uint8(x2hi>>8)))<<8 | uint64(i8RoundingAverage(uint8(x1hi), uint8(x2hi))) |\n\t\t\t\t\tuint64(i8RoundingAverage(uint8(x1hi>>24), uint8(x2hi>>24)))<<24 | uint64(i8RoundingAverage(uint8(x1hi>>16), uint8(x2hi>>16)))<<16 |\n\t\t\t\t\tuint64(i8RoundingAverage(uint8(x1hi>>40), uint8(x2hi>>40)))<<40 | uint64(i8RoundingAverage(uint8(x1hi>>32), uint8(x2hi>>32)))<<32 |\n\t\t\t\t\tuint64(i8RoundingAverage(uint8(x1hi>>56), uint8(x2hi>>56)))<<56 | uint64(i8RoundingAverage(uint8(x1hi>>48), uint8(x2hi>>48)))<<48\n\t\t\tcase shapeI16x8:\n\t\t\t\tretLo = uint64(i16RoundingAverage(uint16(x1lo), uint16(x2lo))) |\n\t\t\t\t\tuint64(i16RoundingAverage(uint16(x1lo>>16), uint16(x2lo>>16)))<<16 |\n\t\t\t\t\tuint64(i16RoundingAverage(uint16(x1lo>>32), uint16(x2lo>>32)))<<32 |\n\t\t\t\t\tuint64(i16RoundingAverage(uint16(x1lo>>48), uint16(x2lo>>48)))<<48\n\t\t\t\tretHi = uint64(i16RoundingAverage(uint16(x1hi), uint16(x2hi))) |\n\t\t\t\t\tuint64(i16RoundingAverage(uint16(x1hi>>16), uint16(x2hi>>16)))<<16 |\n\t\t\t\t\tuint64(i16RoundingAverage(uint16(x1hi>>32), uint16(x2hi>>32)))<<32 |\n\t\t\t\t\tuint64(i16RoundingAverage(uint16(x1hi>>48), uint16(x2hi>>48)))<<48\n\t\t\t}\n\t\t\tce.pushValue(retLo)\n\t\t\tce.pushValue(retHi)\n\t\t\tframe.pc++\n\t\tcase operationKindV128Pmin:\n\t\t\tx2hi, x2lo := ce.popValue(), ce.popValue()\n\t\t\tx1hi, x1lo := ce.popValue(), ce.popValue()\n\t\t\tvar retLo, retHi uint64\n\t\t\tif op.B1 == shapeF32x4 {\n\t\t\t\tif flt32(math.Float32frombits(uint32(x2lo)), math.Float32frombits(uint32(x1lo))) {\n\t\t\t\t\tretLo = x2lo & 0x00000000_ffffffff\n\t\t\t\t} else {\n\t\t\t\t\tretLo = x1lo & 0x00000000_ffffffff\n\t\t\t\t}\n\t\t\t\tif flt32(math.Float32frombits(uint32(x2lo>>32)), math.Float32frombits(uint32(x1lo>>32))) {\n\t\t\t\t\tretLo |= x2lo & 0xffffffff_00000000\n\t\t\t\t} else {\n\t\t\t\t\tretLo |= x1lo & 0xffffffff_00000000\n\t\t\t\t}\n\t\t\t\tif flt32(math.Float32frombits(uint32(x2hi)), math.Float32frombits(uint32(x1hi))) {\n\t\t\t\t\tretHi = x2hi & 0x00000000_ffffffff\n\t\t\t\t} else {\n\t\t\t\t\tretHi = x1hi & 0x00000000_ffffffff\n\t\t\t\t}\n\t\t\t\tif flt32(math.Float32frombits(uint32(x2hi>>32)), math.Float32frombits(uint32(x1hi>>32))) {\n\t\t\t\t\tretHi |= x2hi & 0xffffffff_00000000\n\t\t\t\t} else {\n\t\t\t\t\tretHi |= x1hi & 0xffffffff_00000000\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif flt64(math.Float64frombits(x2lo), math.Float64frombits(x1lo)) {\n\t\t\t\t\tretLo = x2lo\n\t\t\t\t} else {\n\t\t\t\t\tretLo = x1lo\n\t\t\t\t}\n\t\t\t\tif flt64(math.Float64frombits(x2hi), math.Float64frombits(x1hi)) {\n\t\t\t\t\tretHi = x2hi\n\t\t\t\t} else {\n\t\t\t\t\tretHi = x1hi\n\t\t\t\t}\n\t\t\t}\n\t\t\tce.pushValue(retLo)\n\t\t\tce.pushValue(retHi)\n\t\t\tframe.pc++\n\t\tcase operationKindV128Pmax:\n\t\t\tx2hi, x2lo := ce.popValue(), ce.popValue()\n\t\t\tx1hi, x1lo := ce.popValue(), ce.popValue()\n\t\t\tvar retLo, retHi uint64\n\t\t\tif op.B1 == shapeF32x4 {\n\t\t\t\tif flt32(math.Float32frombits(uint32(x1lo)), math.Float32frombits(uint32(x2lo))) {\n\t\t\t\t\tretLo = x2lo & 0x00000000_ffffffff\n\t\t\t\t} else {\n\t\t\t\t\tretLo = x1lo & 0x00000000_ffffffff\n\t\t\t\t}\n\t\t\t\tif flt32(math.Float32frombits(uint32(x1lo>>32)), math.Float32frombits(uint32(x2lo>>32))) {\n\t\t\t\t\tretLo |= x2lo & 0xffffffff_00000000\n\t\t\t\t} else {\n\t\t\t\t\tretLo |= x1lo & 0xffffffff_00000000\n\t\t\t\t}\n\t\t\t\tif flt32(math.Float32frombits(uint32(x1hi)), math.Float32frombits(uint32(x2hi))) {\n\t\t\t\t\tretHi = x2hi & 0x00000000_ffffffff\n\t\t\t\t} else {\n\t\t\t\t\tretHi = x1hi & 0x00000000_ffffffff\n\t\t\t\t}\n\t\t\t\tif flt32(math.Float32frombits(uint32(x1hi>>32)), math.Float32frombits(uint32(x2hi>>32))) {\n\t\t\t\t\tretHi |= x2hi & 0xffffffff_00000000\n\t\t\t\t} else {\n\t\t\t\t\tretHi |= x1hi & 0xffffffff_00000000\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif flt64(math.Float64frombits(x1lo), math.Float64frombits(x2lo)) {\n\t\t\t\t\tretLo = x2lo\n\t\t\t\t} else {\n\t\t\t\t\tretLo = x1lo\n\t\t\t\t}\n\t\t\t\tif flt64(math.Float64frombits(x1hi), math.Float64frombits(x2hi)) {\n\t\t\t\t\tretHi = x2hi\n\t\t\t\t} else {\n\t\t\t\t\tretHi = x1hi\n\t\t\t\t}\n\t\t\t}\n\t\t\tce.pushValue(retLo)\n\t\t\tce.pushValue(retHi)\n\t\t\tframe.pc++\n\t\tcase operationKindV128Ceil:\n\t\t\thi, lo := ce.popValue(), ce.popValue()\n\t\t\tif op.B1 == shapeF32x4 {\n\t\t\t\tlo = uint64(math.Float32bits(moremath.WasmCompatCeilF32(math.Float32frombits(uint32(lo))))) |\n\t\t\t\t\t(uint64(math.Float32bits(moremath.WasmCompatCeilF32(math.Float32frombits(uint32(lo>>32))))) << 32)\n\t\t\t\thi = uint64(math.Float32bits(moremath.WasmCompatCeilF32(math.Float32frombits(uint32(hi))))) |\n\t\t\t\t\t(uint64(math.Float32bits(moremath.WasmCompatCeilF32(math.Float32frombits(uint32(hi>>32))))) << 32)\n\t\t\t} else {\n\t\t\t\tlo = math.Float64bits(moremath.WasmCompatCeilF64(math.Float64frombits(lo)))\n\t\t\t\thi = math.Float64bits(moremath.WasmCompatCeilF64(math.Float64frombits(hi)))\n\t\t\t}\n\t\t\tce.pushValue(lo)\n\t\t\tce.pushValue(hi)\n\t\t\tframe.pc++\n\t\tcase operationKindV128Floor:\n\t\t\thi, lo := ce.popValue(), ce.popValue()\n\t\t\tif op.B1 == shapeF32x4 {\n\t\t\t\tlo = uint64(math.Float32bits(moremath.WasmCompatFloorF32(math.Float32frombits(uint32(lo))))) |\n\t\t\t\t\t(uint64(math.Float32bits(moremath.WasmCompatFloorF32(math.Float32frombits(uint32(lo>>32))))) << 32)\n\t\t\t\thi = uint64(math.Float32bits(moremath.WasmCompatFloorF32(math.Float32frombits(uint32(hi))))) |\n\t\t\t\t\t(uint64(math.Float32bits(moremath.WasmCompatFloorF32(math.Float32frombits(uint32(hi>>32))))) << 32)\n\t\t\t} else {\n\t\t\t\tlo = math.Float64bits(moremath.WasmCompatFloorF64(math.Float64frombits(lo)))\n\t\t\t\thi = math.Float64bits(moremath.WasmCompatFloorF64(math.Float64frombits(hi)))\n\t\t\t}\n\t\t\tce.pushValue(lo)\n\t\t\tce.pushValue(hi)\n\t\t\tframe.pc++\n\t\tcase operationKindV128Trunc:\n\t\t\thi, lo := ce.popValue(), ce.popValue()\n\t\t\tif op.B1 == shapeF32x4 {\n\t\t\t\tlo = uint64(math.Float32bits(moremath.WasmCompatTruncF32(math.Float32frombits(uint32(lo))))) |\n\t\t\t\t\t(uint64(math.Float32bits(moremath.WasmCompatTruncF32(math.Float32frombits(uint32(lo>>32))))) << 32)\n\t\t\t\thi = uint64(math.Float32bits(moremath.WasmCompatTruncF32(math.Float32frombits(uint32(hi))))) |\n\t\t\t\t\t(uint64(math.Float32bits(moremath.WasmCompatTruncF32(math.Float32frombits(uint32(hi>>32))))) << 32)\n\t\t\t} else {\n\t\t\t\tlo = math.Float64bits(moremath.WasmCompatTruncF64(math.Float64frombits(lo)))\n\t\t\t\thi = math.Float64bits(moremath.WasmCompatTruncF64(math.Float64frombits(hi)))\n\t\t\t}\n\t\t\tce.pushValue(lo)\n\t\t\tce.pushValue(hi)\n\t\t\tframe.pc++\n\t\tcase operationKindV128Nearest:\n\t\t\thi, lo := ce.popValue(), ce.popValue()\n\t\t\tif op.B1 == shapeF32x4 {\n\t\t\t\tlo = uint64(math.Float32bits(moremath.WasmCompatNearestF32(math.Float32frombits(uint32(lo))))) |\n\t\t\t\t\t(uint64(math.Float32bits(moremath.WasmCompatNearestF32(math.Float32frombits(uint32(lo>>32))))) << 32)\n\t\t\t\thi = uint64(math.Float32bits(moremath.WasmCompatNearestF32(math.Float32frombits(uint32(hi))))) |\n\t\t\t\t\t(uint64(math.Float32bits(moremath.WasmCompatNearestF32(math.Float32frombits(uint32(hi>>32))))) << 32)\n\t\t\t} else {\n\t\t\t\tlo = math.Float64bits(moremath.WasmCompatNearestF64(math.Float64frombits(lo)))\n\t\t\t\thi = math.Float64bits(moremath.WasmCompatNearestF64(math.Float64frombits(hi)))\n\t\t\t}\n\t\t\tce.pushValue(lo)\n\t\t\tce.pushValue(hi)\n\t\t\tframe.pc++\n\t\tcase operationKindV128Extend:\n\t\t\thi, lo := ce.popValue(), ce.popValue()\n\t\t\tvar origin uint64\n\t\t\tif op.B3 { // use lower 64 bits\n\t\t\t\torigin = lo\n\t\t\t} else {\n\t\t\t\torigin = hi\n\t\t\t}\n\n\t\t\tsigned := op.B2 == 1\n\n\t\t\tvar retHi, retLo uint64\n\t\t\tswitch op.B1 {\n\t\t\tcase shapeI8x16:\n\t\t\t\tfor i := 0; i < 8; i++ {\n\t\t\t\t\tv8 := byte(origin >> (i * 8))\n\n\t\t\t\t\tvar v16 uint16\n\t\t\t\t\tif signed {\n\t\t\t\t\t\tv16 = uint16(int8(v8))\n\t\t\t\t\t} else {\n\t\t\t\t\t\tv16 = uint16(v8)\n\t\t\t\t\t}\n\n\t\t\t\t\tif i < 4 {\n\t\t\t\t\t\tretLo |= uint64(v16) << (i * 16)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tretHi |= uint64(v16) << ((i - 4) * 16)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase shapeI16x8:\n\t\t\t\tfor i := 0; i < 4; i++ {\n\t\t\t\t\tv16 := uint16(origin >> (i * 16))\n\n\t\t\t\t\tvar v32 uint32\n\t\t\t\t\tif signed {\n\t\t\t\t\t\tv32 = uint32(int16(v16))\n\t\t\t\t\t} else {\n\t\t\t\t\t\tv32 = uint32(v16)\n\t\t\t\t\t}\n\n\t\t\t\t\tif i < 2 {\n\t\t\t\t\t\tretLo |= uint64(v32) << (i * 32)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tretHi |= uint64(v32) << ((i - 2) * 32)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase shapeI32x4:\n\t\t\t\tv32Lo := uint32(origin)\n\t\t\t\tv32Hi := uint32(origin >> 32)\n\t\t\t\tif signed {\n\t\t\t\t\tretLo = uint64(int32(v32Lo))\n\t\t\t\t\tretHi = uint64(int32(v32Hi))\n\t\t\t\t} else {\n\t\t\t\t\tretLo = uint64(v32Lo)\n\t\t\t\t\tretHi = uint64(v32Hi)\n\t\t\t\t}\n\t\t\t}\n\t\t\tce.pushValue(retLo)\n\t\t\tce.pushValue(retHi)\n\t\t\tframe.pc++\n\t\tcase operationKindV128ExtMul:\n\t\t\tx2Hi, x2Lo := ce.popValue(), ce.popValue()\n\t\t\tx1Hi, x1Lo := ce.popValue(), ce.popValue()\n\t\t\tvar x1, x2 uint64\n\t\t\tif op.B3 { // use lower 64 bits\n\t\t\t\tx1, x2 = x1Lo, x2Lo\n\t\t\t} else {\n\t\t\t\tx1, x2 = x1Hi, x2Hi\n\t\t\t}\n\n\t\t\tsigned := op.B2 == 1\n\n\t\t\tvar retLo, retHi uint64\n\t\t\tswitch op.B1 {\n\t\t\tcase shapeI8x16:\n\t\t\t\tfor i := 0; i < 8; i++ {\n\t\t\t\t\tv1, v2 := byte(x1>>(i*8)), byte(x2>>(i*8))\n\n\t\t\t\t\tvar v16 uint16\n\t\t\t\t\tif signed {\n\t\t\t\t\t\tv16 = uint16(int16(int8(v1)) * int16(int8(v2)))\n\t\t\t\t\t} else {\n\t\t\t\t\t\tv16 = uint16(v1) * uint16(v2)\n\t\t\t\t\t}\n\n\t\t\t\t\tif i < 4 {\n\t\t\t\t\t\tretLo |= uint64(v16) << (i * 16)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tretHi |= uint64(v16) << ((i - 4) * 16)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase shapeI16x8:\n\t\t\t\tfor i := 0; i < 4; i++ {\n\t\t\t\t\tv1, v2 := uint16(x1>>(i*16)), uint16(x2>>(i*16))\n\n\t\t\t\t\tvar v32 uint32\n\t\t\t\t\tif signed {\n\t\t\t\t\t\tv32 = uint32(int32(int16(v1)) * int32(int16(v2)))\n\t\t\t\t\t} else {\n\t\t\t\t\t\tv32 = uint32(v1) * uint32(v2)\n\t\t\t\t\t}\n\n\t\t\t\t\tif i < 2 {\n\t\t\t\t\t\tretLo |= uint64(v32) << (i * 32)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tretHi |= uint64(v32) << ((i - 2) * 32)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase shapeI32x4:\n\t\t\t\tv1Lo, v2Lo := uint32(x1), uint32(x2)\n\t\t\t\tv1Hi, v2Hi := uint32(x1>>32), uint32(x2>>32)\n\t\t\t\tif signed {\n\t\t\t\t\tretLo = uint64(int64(int32(v1Lo)) * int64(int32(v2Lo)))\n\t\t\t\t\tretHi = uint64(int64(int32(v1Hi)) * int64(int32(v2Hi)))\n\t\t\t\t} else {\n\t\t\t\t\tretLo = uint64(v1Lo) * uint64(v2Lo)\n\t\t\t\t\tretHi = uint64(v1Hi) * uint64(v2Hi)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tce.pushValue(retLo)\n\t\t\tce.pushValue(retHi)\n\t\t\tframe.pc++\n\t\tcase operationKindV128Q15mulrSatS:\n\t\t\tx2hi, x2Lo := ce.popValue(), ce.popValue()\n\t\t\tx1hi, x1Lo := ce.popValue(), ce.popValue()\n\t\t\tvar retLo, retHi uint64\n\t\t\tfor i := 0; i < 8; i++ {\n\t\t\t\tvar v, w int16\n\t\t\t\tif i < 4 {\n\t\t\t\t\tv, w = int16(uint16(x1Lo>>(i*16))), int16(uint16(x2Lo>>(i*16)))\n\t\t\t\t} else {\n\t\t\t\t\tv, w = int16(uint16(x1hi>>((i-4)*16))), int16(uint16(x2hi>>((i-4)*16)))\n\t\t\t\t}\n\n\t\t\t\tvar uv uint64\n\t\t\t\t// https://github.com/WebAssembly/spec/blob/wg-2.0.draft1/proposals/simd/SIMD.md#saturating-integer-q-format-rounding-multiplication\n\t\t\t\tif calc := ((int32(v) * int32(w)) + 0x4000) >> 15; calc < math.MinInt16 {\n\t\t\t\t\tuv = uint64(uint16(0x8000))\n\t\t\t\t} else if calc > math.MaxInt16 {\n\t\t\t\t\tuv = uint64(uint16(0x7fff))\n\t\t\t\t} else {\n\t\t\t\t\tuv = uint64(uint16(int16(calc)))\n\t\t\t\t}\n\n\t\t\t\tif i < 4 {\n\t\t\t\t\tretLo |= uv << (i * 16)\n\t\t\t\t} else {\n\t\t\t\t\tretHi |= uv << ((i - 4) * 16)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tce.pushValue(retLo)\n\t\t\tce.pushValue(retHi)\n\t\t\tframe.pc++\n\t\tcase operationKindV128ExtAddPairwise:\n\t\t\thi, lo := ce.popValue(), ce.popValue()\n\n\t\t\tsigned := op.B3\n\n\t\t\tvar retLo, retHi uint64\n\t\t\tswitch op.B1 {\n\t\t\tcase shapeI8x16:\n\t\t\t\tfor i := 0; i < 8; i++ {\n\t\t\t\t\tvar v1, v2 byte\n\t\t\t\t\tif i < 4 {\n\t\t\t\t\t\tv1, v2 = byte(lo>>((i*2)*8)), byte(lo>>((i*2+1)*8))\n\t\t\t\t\t} else {\n\t\t\t\t\t\tv1, v2 = byte(hi>>(((i-4)*2)*8)), byte(hi>>(((i-4)*2+1)*8))\n\t\t\t\t\t}\n\n\t\t\t\t\tvar v16 uint16\n\t\t\t\t\tif signed {\n\t\t\t\t\t\tv16 = uint16(int16(int8(v1)) + int16(int8(v2)))\n\t\t\t\t\t} else {\n\t\t\t\t\t\tv16 = uint16(v1) + uint16(v2)\n\t\t\t\t\t}\n\n\t\t\t\t\tif i < 4 {\n\t\t\t\t\t\tretLo |= uint64(v16) << (i * 16)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tretHi |= uint64(v16) << ((i - 4) * 16)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase shapeI16x8:\n\t\t\t\tfor i := 0; i < 4; i++ {\n\t\t\t\t\tvar v1, v2 uint16\n\t\t\t\t\tif i < 2 {\n\t\t\t\t\t\tv1, v2 = uint16(lo>>((i*2)*16)), uint16(lo>>((i*2+1)*16))\n\t\t\t\t\t} else {\n\t\t\t\t\t\tv1, v2 = uint16(hi>>(((i-2)*2)*16)), uint16(hi>>(((i-2)*2+1)*16))\n\t\t\t\t\t}\n\n\t\t\t\t\tvar v32 uint32\n\t\t\t\t\tif signed {\n\t\t\t\t\t\tv32 = uint32(int32(int16(v1)) + int32(int16(v2)))\n\t\t\t\t\t} else {\n\t\t\t\t\t\tv32 = uint32(v1) + uint32(v2)\n\t\t\t\t\t}\n\n\t\t\t\t\tif i < 2 {\n\t\t\t\t\t\tretLo |= uint64(v32) << (i * 32)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tretHi |= uint64(v32) << ((i - 2) * 32)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tce.pushValue(retLo)\n\t\t\tce.pushValue(retHi)\n\t\t\tframe.pc++\n\t\tcase operationKindV128FloatPromote:\n\t\t\t_, toPromote := ce.popValue(), ce.popValue()\n\t\t\tce.pushValue(math.Float64bits(float64(math.Float32frombits(uint32(toPromote)))))\n\t\t\tce.pushValue(math.Float64bits(float64(math.Float32frombits(uint32(toPromote >> 32)))))\n\t\t\tframe.pc++\n\t\tcase operationKindV128FloatDemote:\n\t\t\thi, lo := ce.popValue(), ce.popValue()\n\t\t\tce.pushValue(\n\t\t\t\tuint64(math.Float32bits(float32(math.Float64frombits(lo)))) |\n\t\t\t\t\t(uint64(math.Float32bits(float32(math.Float64frombits(hi)))) << 32),\n\t\t\t)\n\t\t\tce.pushValue(0)\n\t\t\tframe.pc++\n\t\tcase operationKindV128FConvertFromI:\n\t\t\thi, lo := ce.popValue(), ce.popValue()\n\t\t\tv1, v2, v3, v4 := uint32(lo), uint32(lo>>32), uint32(hi), uint32(hi>>32)\n\t\t\tsigned := op.B3\n\n\t\t\tvar retLo, retHi uint64\n\t\t\tswitch op.B1 { // Destination shape.\n\t\t\tcase shapeF32x4: // f32x4 from signed/unsigned i32x4\n\t\t\t\tif signed {\n\t\t\t\t\tretLo = uint64(math.Float32bits(float32(int32(v1)))) |\n\t\t\t\t\t\t(uint64(math.Float32bits(float32(int32(v2)))) << 32)\n\t\t\t\t\tretHi = uint64(math.Float32bits(float32(int32(v3)))) |\n\t\t\t\t\t\t(uint64(math.Float32bits(float32(int32(v4)))) << 32)\n\t\t\t\t} else {\n\t\t\t\t\tretLo = uint64(math.Float32bits(float32(v1))) |\n\t\t\t\t\t\t(uint64(math.Float32bits(float32(v2))) << 32)\n\t\t\t\t\tretHi = uint64(math.Float32bits(float32(v3))) |\n\t\t\t\t\t\t(uint64(math.Float32bits(float32(v4))) << 32)\n\t\t\t\t}\n\t\t\tcase shapeF64x2: // f64x2 from signed/unsigned i32x4\n\t\t\t\tif signed {\n\t\t\t\t\tretLo, retHi = math.Float64bits(float64(int32(v1))), math.Float64bits(float64(int32(v2)))\n\t\t\t\t} else {\n\t\t\t\t\tretLo, retHi = math.Float64bits(float64(v1)), math.Float64bits(float64(v2))\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tce.pushValue(retLo)\n\t\t\tce.pushValue(retHi)\n\t\t\tframe.pc++\n\t\tcase operationKindV128Narrow:\n\t\t\tx2Hi, x2Lo := ce.popValue(), ce.popValue()\n\t\t\tx1Hi, x1Lo := ce.popValue(), ce.popValue()\n\t\t\tsigned := op.B3\n\n\t\t\tvar retLo, retHi uint64\n\t\t\tswitch op.B1 {\n\t\t\tcase shapeI16x8: // signed/unsigned i16x8 to i8x16\n\t\t\t\tfor i := 0; i < 8; i++ {\n\t\t\t\t\tvar v16 uint16\n\t\t\t\t\tif i < 4 {\n\t\t\t\t\t\tv16 = uint16(x1Lo >> (i * 16))\n\t\t\t\t\t} else {\n\t\t\t\t\t\tv16 = uint16(x1Hi >> ((i - 4) * 16))\n\t\t\t\t\t}\n\n\t\t\t\t\tvar v byte\n\t\t\t\t\tif signed {\n\t\t\t\t\t\tif s := int16(v16); s > math.MaxInt8 {\n\t\t\t\t\t\t\tv = math.MaxInt8\n\t\t\t\t\t\t} else if s < math.MinInt8 {\n\t\t\t\t\t\t\ts = math.MinInt8\n\t\t\t\t\t\t\tv = byte(s)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tv = byte(v16)\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif s := int16(v16); s > math.MaxUint8 {\n\t\t\t\t\t\t\tv = math.MaxUint8\n\t\t\t\t\t\t} else if s < 0 {\n\t\t\t\t\t\t\tv = 0\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tv = byte(v16)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tretLo |= uint64(v) << (i * 8)\n\t\t\t\t}\n\t\t\t\tfor i := 0; i < 8; i++ {\n\t\t\t\t\tvar v16 uint16\n\t\t\t\t\tif i < 4 {\n\t\t\t\t\t\tv16 = uint16(x2Lo >> (i * 16))\n\t\t\t\t\t} else {\n\t\t\t\t\t\tv16 = uint16(x2Hi >> ((i - 4) * 16))\n\t\t\t\t\t}\n\n\t\t\t\t\tvar v byte\n\t\t\t\t\tif signed {\n\t\t\t\t\t\tif s := int16(v16); s > math.MaxInt8 {\n\t\t\t\t\t\t\tv = math.MaxInt8\n\t\t\t\t\t\t} else if s < math.MinInt8 {\n\t\t\t\t\t\t\ts = math.MinInt8\n\t\t\t\t\t\t\tv = byte(s)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tv = byte(v16)\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif s := int16(v16); s > math.MaxUint8 {\n\t\t\t\t\t\t\tv = math.MaxUint8\n\t\t\t\t\t\t} else if s < 0 {\n\t\t\t\t\t\t\tv = 0\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tv = byte(v16)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tretHi |= uint64(v) << (i * 8)\n\t\t\t\t}\n\t\t\tcase shapeI32x4: // signed/unsigned i32x4 to i16x8\n\t\t\t\tfor i := 0; i < 4; i++ {\n\t\t\t\t\tvar v32 uint32\n\t\t\t\t\tif i < 2 {\n\t\t\t\t\t\tv32 = uint32(x1Lo >> (i * 32))\n\t\t\t\t\t} else {\n\t\t\t\t\t\tv32 = uint32(x1Hi >> ((i - 2) * 32))\n\t\t\t\t\t}\n\n\t\t\t\t\tvar v uint16\n\t\t\t\t\tif signed {\n\t\t\t\t\t\tif s := int32(v32); s > math.MaxInt16 {\n\t\t\t\t\t\t\tv = math.MaxInt16\n\t\t\t\t\t\t} else if s < math.MinInt16 {\n\t\t\t\t\t\t\ts = math.MinInt16\n\t\t\t\t\t\t\tv = uint16(s)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tv = uint16(v32)\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif s := int32(v32); s > math.MaxUint16 {\n\t\t\t\t\t\t\tv = math.MaxUint16\n\t\t\t\t\t\t} else if s < 0 {\n\t\t\t\t\t\t\tv = 0\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tv = uint16(v32)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tretLo |= uint64(v) << (i * 16)\n\t\t\t\t}\n\n\t\t\t\tfor i := 0; i < 4; i++ {\n\t\t\t\t\tvar v32 uint32\n\t\t\t\t\tif i < 2 {\n\t\t\t\t\t\tv32 = uint32(x2Lo >> (i * 32))\n\t\t\t\t\t} else {\n\t\t\t\t\t\tv32 = uint32(x2Hi >> ((i - 2) * 32))\n\t\t\t\t\t}\n\n\t\t\t\t\tvar v uint16\n\t\t\t\t\tif signed {\n\t\t\t\t\t\tif s := int32(v32); s > math.MaxInt16 {\n\t\t\t\t\t\t\tv = math.MaxInt16\n\t\t\t\t\t\t} else if s < math.MinInt16 {\n\t\t\t\t\t\t\ts = math.MinInt16\n\t\t\t\t\t\t\tv = uint16(s)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tv = uint16(v32)\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif s := int32(v32); s > math.MaxUint16 {\n\t\t\t\t\t\t\tv = math.MaxUint16\n\t\t\t\t\t\t} else if s < 0 {\n\t\t\t\t\t\t\tv = 0\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tv = uint16(v32)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tretHi |= uint64(v) << (i * 16)\n\t\t\t\t}\n\t\t\t}\n\t\t\tce.pushValue(retLo)\n\t\t\tce.pushValue(retHi)\n\t\t\tframe.pc++\n\t\tcase operationKindV128Dot:\n\t\t\tx2Hi, x2Lo := ce.popValue(), ce.popValue()\n\t\t\tx1Hi, x1Lo := ce.popValue(), ce.popValue()\n\t\t\tlo, hi := v128Dot(x1Hi, x1Lo, x2Hi, x2Lo)\n\t\t\tce.pushValue(lo)\n\t\t\tce.pushValue(hi)\n\t\t\tframe.pc++\n\t\tcase operationKindV128ITruncSatFromF:\n\t\t\thi, lo := ce.popValue(), ce.popValue()\n\t\t\tsigned := op.B3\n\t\t\tvar retLo, retHi uint64\n\n\t\t\tswitch op.B1 {\n\t\t\tcase shapeF32x4: // f32x4 to i32x4\n\t\t\t\tfor i, f64 := range [4]float64{\n\t\t\t\t\tmath.Trunc(float64(math.Float32frombits(uint32(lo)))),\n\t\t\t\t\tmath.Trunc(float64(math.Float32frombits(uint32(lo >> 32)))),\n\t\t\t\t\tmath.Trunc(float64(math.Float32frombits(uint32(hi)))),\n\t\t\t\t\tmath.Trunc(float64(math.Float32frombits(uint32(hi >> 32)))),\n\t\t\t\t} {\n\n\t\t\t\t\tvar v uint32\n\t\t\t\t\tif math.IsNaN(f64) {\n\t\t\t\t\t\tv = 0\n\t\t\t\t\t} else if signed {\n\t\t\t\t\t\tif f64 < math.MinInt32 {\n\t\t\t\t\t\t\tf64 = math.MinInt32\n\t\t\t\t\t\t} else if f64 > math.MaxInt32 {\n\t\t\t\t\t\t\tf64 = math.MaxInt32\n\t\t\t\t\t\t}\n\t\t\t\t\t\tv = uint32(int32(f64))\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif f64 < 0 {\n\t\t\t\t\t\t\tf64 = 0\n\t\t\t\t\t\t} else if f64 > math.MaxUint32 {\n\t\t\t\t\t\t\tf64 = math.MaxUint32\n\t\t\t\t\t\t}\n\t\t\t\t\t\tv = uint32(f64)\n\t\t\t\t\t}\n\n\t\t\t\t\tif i < 2 {\n\t\t\t\t\t\tretLo |= uint64(v) << (i * 32)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tretHi |= uint64(v) << ((i - 2) * 32)\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\tcase shapeF64x2: // f64x2 to i32x4\n\t\t\t\tfor i, f := range [2]float64{\n\t\t\t\t\tmath.Trunc(math.Float64frombits(lo)),\n\t\t\t\t\tmath.Trunc(math.Float64frombits(hi)),\n\t\t\t\t} {\n\t\t\t\t\tvar v uint32\n\t\t\t\t\tif math.IsNaN(f) {\n\t\t\t\t\t\tv = 0\n\t\t\t\t\t} else if signed {\n\t\t\t\t\t\tif f < math.MinInt32 {\n\t\t\t\t\t\t\tf = math.MinInt32\n\t\t\t\t\t\t} else if f > math.MaxInt32 {\n\t\t\t\t\t\t\tf = math.MaxInt32\n\t\t\t\t\t\t}\n\t\t\t\t\t\tv = uint32(int32(f))\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif f < 0 {\n\t\t\t\t\t\t\tf = 0\n\t\t\t\t\t\t} else if f > math.MaxUint32 {\n\t\t\t\t\t\t\tf = math.MaxUint32\n\t\t\t\t\t\t}\n\t\t\t\t\t\tv = uint32(f)\n\t\t\t\t\t}\n\n\t\t\t\t\tretLo |= uint64(v) << (i * 32)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tce.pushValue(retLo)\n\t\t\tce.pushValue(retHi)\n\t\t\tframe.pc++\n\t\tcase operationKindAtomicMemoryWait:\n\t\t\ttimeout := int64(ce.popValue())\n\t\t\texp := ce.popValue()\n\t\t\toffset := ce.popMemoryOffset(op)\n\t\t\t// Runtime instead of validation error because the spec intends to allow binaries to include\n\t\t\t// such instructions as long as they are not executed.\n\t\t\tif !memoryInst.Shared {\n\t\t\t\tpanic(wasmruntime.ErrRuntimeExpectedSharedMemory)\n\t\t\t}\n\n\t\t\tswitch unsignedType(op.B1) {\n\t\t\tcase unsignedTypeI32:\n\t\t\t\tif offset%4 != 0 {\n\t\t\t\t\tpanic(wasmruntime.ErrRuntimeUnalignedAtomic)\n\t\t\t\t}\n\t\t\t\tif int(offset) > len(memoryInst.Buffer)-4 {\n\t\t\t\t\tpanic(wasmruntime.ErrRuntimeOutOfBoundsMemoryAccess)\n\t\t\t\t}\n\t\t\t\tce.pushValue(memoryInst.Wait32(offset, uint32(exp), timeout, func(mem *wasm.MemoryInstance, offset uint32) uint32 {\n\t\t\t\t\tmem.Mux.Lock()\n\t\t\t\t\tdefer mem.Mux.Unlock()\n\t\t\t\t\tvalue, _ := mem.ReadUint32Le(offset)\n\t\t\t\t\treturn value\n\t\t\t\t}))\n\t\t\tcase unsignedTypeI64:\n\t\t\t\tif offset%8 != 0 {\n\t\t\t\t\tpanic(wasmruntime.ErrRuntimeUnalignedAtomic)\n\t\t\t\t}\n\t\t\t\tif int(offset) > len(memoryInst.Buffer)-8 {\n\t\t\t\t\tpanic(wasmruntime.ErrRuntimeOutOfBoundsMemoryAccess)\n\t\t\t\t}\n\t\t\t\tce.pushValue(memoryInst.Wait64(offset, exp, timeout, func(mem *wasm.MemoryInstance, offset uint32) uint64 {\n\t\t\t\t\tmem.Mux.Lock()\n\t\t\t\t\tdefer mem.Mux.Unlock()\n\t\t\t\t\tvalue, _ := mem.ReadUint64Le(offset)\n\t\t\t\t\treturn value\n\t\t\t\t}))\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindAtomicMemoryNotify:\n\t\t\tcount := ce.popValue()\n\t\t\toffset := ce.popMemoryOffset(op)\n\t\t\tif offset%4 != 0 {\n\t\t\t\tpanic(wasmruntime.ErrRuntimeUnalignedAtomic)\n\t\t\t}\n\t\t\t// Just a bounds check\n\t\t\tif offset >= memoryInst.Size() {\n\t\t\t\tpanic(wasmruntime.ErrRuntimeOutOfBoundsMemoryAccess)\n\t\t\t}\n\t\t\tres := memoryInst.Notify(offset, uint32(count))\n\t\t\tce.pushValue(uint64(res))\n\t\t\tframe.pc++\n\t\tcase operationKindAtomicFence:\n\t\t\t// Memory not required for fence only\n\t\t\tif memoryInst != nil {\n\t\t\t\t// An empty critical section can be used as a synchronization primitive, which is what\n\t\t\t\t// fence is. Probably, there are no spectests or defined behavior to confirm this yet.\n\t\t\t\tmemoryInst.Mux.Lock()\n\t\t\t\tmemoryInst.Mux.Unlock() //nolint:staticcheck\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindAtomicLoad:\n\t\t\toffset := ce.popMemoryOffset(op)\n\t\t\tswitch unsignedType(op.B1) {\n\t\t\tcase unsignedTypeI32:\n\t\t\t\tif offset%4 != 0 {\n\t\t\t\t\tpanic(wasmruntime.ErrRuntimeUnalignedAtomic)\n\t\t\t\t}\n\t\t\t\tmemoryInst.Mux.Lock()\n\t\t\t\tval, ok := memoryInst.ReadUint32Le(offset)\n\t\t\t\tmemoryInst.Mux.Unlock()\n\t\t\t\tif !ok {\n\t\t\t\t\tpanic(wasmruntime.ErrRuntimeOutOfBoundsMemoryAccess)\n\t\t\t\t}\n\t\t\t\tce.pushValue(uint64(val))\n\t\t\tcase unsignedTypeI64:\n\t\t\t\tif offset%8 != 0 {\n\t\t\t\t\tpanic(wasmruntime.ErrRuntimeUnalignedAtomic)\n\t\t\t\t}\n\t\t\t\tmemoryInst.Mux.Lock()\n\t\t\t\tval, ok := memoryInst.ReadUint64Le(offset)\n\t\t\t\tmemoryInst.Mux.Unlock()\n\t\t\t\tif !ok {\n\t\t\t\t\tpanic(wasmruntime.ErrRuntimeOutOfBoundsMemoryAccess)\n\t\t\t\t}\n\t\t\t\tce.pushValue(val)\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindAtomicLoad8:\n\t\t\toffset := ce.popMemoryOffset(op)\n\t\t\tmemoryInst.Mux.Lock()\n\t\t\tval, ok := memoryInst.ReadByte(offset)\n\t\t\tmemoryInst.Mux.Unlock()\n\t\t\tif !ok {\n\t\t\t\tpanic(wasmruntime.ErrRuntimeOutOfBoundsMemoryAccess)\n\t\t\t}\n\t\t\tce.pushValue(uint64(val))\n\t\t\tframe.pc++\n\t\tcase operationKindAtomicLoad16:\n\t\t\toffset := ce.popMemoryOffset(op)\n\t\t\tif offset%2 != 0 {\n\t\t\t\tpanic(wasmruntime.ErrRuntimeUnalignedAtomic)\n\t\t\t}\n\t\t\tmemoryInst.Mux.Lock()\n\t\t\tval, ok := memoryInst.ReadUint16Le(offset)\n\t\t\tmemoryInst.Mux.Unlock()\n\t\t\tif !ok {\n\t\t\t\tpanic(wasmruntime.ErrRuntimeOutOfBoundsMemoryAccess)\n\t\t\t}\n\t\t\tce.pushValue(uint64(val))\n\t\t\tframe.pc++\n\t\tcase operationKindAtomicStore:\n\t\t\tval := ce.popValue()\n\t\t\toffset := ce.popMemoryOffset(op)\n\t\t\tswitch unsignedType(op.B1) {\n\t\t\tcase unsignedTypeI32:\n\t\t\t\tif offset%4 != 0 {\n\t\t\t\t\tpanic(wasmruntime.ErrRuntimeUnalignedAtomic)\n\t\t\t\t}\n\t\t\t\tmemoryInst.Mux.Lock()\n\t\t\t\tok := memoryInst.WriteUint32Le(offset, uint32(val))\n\t\t\t\tmemoryInst.Mux.Unlock()\n\t\t\t\tif !ok {\n\t\t\t\t\tpanic(wasmruntime.ErrRuntimeOutOfBoundsMemoryAccess)\n\t\t\t\t}\n\t\t\tcase unsignedTypeI64:\n\t\t\t\tif offset%8 != 0 {\n\t\t\t\t\tpanic(wasmruntime.ErrRuntimeUnalignedAtomic)\n\t\t\t\t}\n\t\t\t\tmemoryInst.Mux.Lock()\n\t\t\t\tok := memoryInst.WriteUint64Le(offset, val)\n\t\t\t\tmemoryInst.Mux.Unlock()\n\t\t\t\tif !ok {\n\t\t\t\t\tpanic(wasmruntime.ErrRuntimeOutOfBoundsMemoryAccess)\n\t\t\t\t}\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindAtomicStore8:\n\t\t\tval := byte(ce.popValue())\n\t\t\toffset := ce.popMemoryOffset(op)\n\t\t\tmemoryInst.Mux.Lock()\n\t\t\tok := memoryInst.WriteByte(offset, val)\n\t\t\tmemoryInst.Mux.Unlock()\n\t\t\tif !ok {\n\t\t\t\tpanic(wasmruntime.ErrRuntimeOutOfBoundsMemoryAccess)\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindAtomicStore16:\n\t\t\tval := uint16(ce.popValue())\n\t\t\toffset := ce.popMemoryOffset(op)\n\t\t\tif offset%2 != 0 {\n\t\t\t\tpanic(wasmruntime.ErrRuntimeUnalignedAtomic)\n\t\t\t}\n\t\t\tmemoryInst.Mux.Lock()\n\t\t\tok := memoryInst.WriteUint16Le(offset, val)\n\t\t\tmemoryInst.Mux.Unlock()\n\t\t\tif !ok {\n\t\t\t\tpanic(wasmruntime.ErrRuntimeOutOfBoundsMemoryAccess)\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindAtomicRMW:\n\t\t\tval := ce.popValue()\n\t\t\toffset := ce.popMemoryOffset(op)\n\t\t\tswitch unsignedType(op.B1) {\n\t\t\tcase unsignedTypeI32:\n\t\t\t\tif offset%4 != 0 {\n\t\t\t\t\tpanic(wasmruntime.ErrRuntimeUnalignedAtomic)\n\t\t\t\t}\n\t\t\t\tmemoryInst.Mux.Lock()\n\t\t\t\told, ok := memoryInst.ReadUint32Le(offset)\n\t\t\t\tif !ok {\n\t\t\t\t\tmemoryInst.Mux.Unlock()\n\t\t\t\t\tpanic(wasmruntime.ErrRuntimeOutOfBoundsMemoryAccess)\n\t\t\t\t}\n\t\t\t\tvar newVal uint32\n\t\t\t\tswitch atomicArithmeticOp(op.B2) {\n\t\t\t\tcase atomicArithmeticOpAdd:\n\t\t\t\t\tnewVal = old + uint32(val)\n\t\t\t\tcase atomicArithmeticOpSub:\n\t\t\t\t\tnewVal = old - uint32(val)\n\t\t\t\tcase atomicArithmeticOpAnd:\n\t\t\t\t\tnewVal = old & uint32(val)\n\t\t\t\tcase atomicArithmeticOpOr:\n\t\t\t\t\tnewVal = old | uint32(val)\n\t\t\t\tcase atomicArithmeticOpXor:\n\t\t\t\t\tnewVal = old ^ uint32(val)\n\t\t\t\tcase atomicArithmeticOpNop:\n\t\t\t\t\tnewVal = uint32(val)\n\t\t\t\t}\n\t\t\t\tmemoryInst.WriteUint32Le(offset, newVal)\n\t\t\t\tmemoryInst.Mux.Unlock()\n\t\t\t\tce.pushValue(uint64(old))\n\t\t\tcase unsignedTypeI64:\n\t\t\t\tif offset%8 != 0 {\n\t\t\t\t\tpanic(wasmruntime.ErrRuntimeUnalignedAtomic)\n\t\t\t\t}\n\t\t\t\tmemoryInst.Mux.Lock()\n\t\t\t\told, ok := memoryInst.ReadUint64Le(offset)\n\t\t\t\tif !ok {\n\t\t\t\t\tmemoryInst.Mux.Unlock()\n\t\t\t\t\tpanic(wasmruntime.ErrRuntimeOutOfBoundsMemoryAccess)\n\t\t\t\t}\n\t\t\t\tvar newVal uint64\n\t\t\t\tswitch atomicArithmeticOp(op.B2) {\n\t\t\t\tcase atomicArithmeticOpAdd:\n\t\t\t\t\tnewVal = old + val\n\t\t\t\tcase atomicArithmeticOpSub:\n\t\t\t\t\tnewVal = old - val\n\t\t\t\tcase atomicArithmeticOpAnd:\n\t\t\t\t\tnewVal = old & val\n\t\t\t\tcase atomicArithmeticOpOr:\n\t\t\t\t\tnewVal = old | val\n\t\t\t\tcase atomicArithmeticOpXor:\n\t\t\t\t\tnewVal = old ^ val\n\t\t\t\tcase atomicArithmeticOpNop:\n\t\t\t\t\tnewVal = val\n\t\t\t\t}\n\t\t\t\tmemoryInst.WriteUint64Le(offset, newVal)\n\t\t\t\tmemoryInst.Mux.Unlock()\n\t\t\t\tce.pushValue(old)\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindAtomicRMW8:\n\t\t\tval := ce.popValue()\n\t\t\toffset := ce.popMemoryOffset(op)\n\t\t\tmemoryInst.Mux.Lock()\n\t\t\told, ok := memoryInst.ReadByte(offset)\n\t\t\tif !ok {\n\t\t\t\tmemoryInst.Mux.Unlock()\n\t\t\t\tpanic(wasmruntime.ErrRuntimeOutOfBoundsMemoryAccess)\n\t\t\t}\n\t\t\targ := byte(val)\n\t\t\tvar newVal byte\n\t\t\tswitch atomicArithmeticOp(op.B2) {\n\t\t\tcase atomicArithmeticOpAdd:\n\t\t\t\tnewVal = old + arg\n\t\t\tcase atomicArithmeticOpSub:\n\t\t\t\tnewVal = old - arg\n\t\t\tcase atomicArithmeticOpAnd:\n\t\t\t\tnewVal = old & arg\n\t\t\tcase atomicArithmeticOpOr:\n\t\t\t\tnewVal = old | arg\n\t\t\tcase atomicArithmeticOpXor:\n\t\t\t\tnewVal = old ^ arg\n\t\t\tcase atomicArithmeticOpNop:\n\t\t\t\tnewVal = arg\n\t\t\t}\n\t\t\tmemoryInst.WriteByte(offset, newVal)\n\t\t\tmemoryInst.Mux.Unlock()\n\t\t\tce.pushValue(uint64(old))\n\t\t\tframe.pc++\n\t\tcase operationKindAtomicRMW16:\n\t\t\tval := ce.popValue()\n\t\t\toffset := ce.popMemoryOffset(op)\n\t\t\tif offset%2 != 0 {\n\t\t\t\tpanic(wasmruntime.ErrRuntimeUnalignedAtomic)\n\t\t\t}\n\t\t\tmemoryInst.Mux.Lock()\n\t\t\told, ok := memoryInst.ReadUint16Le(offset)\n\t\t\tif !ok {\n\t\t\t\tmemoryInst.Mux.Unlock()\n\t\t\t\tpanic(wasmruntime.ErrRuntimeOutOfBoundsMemoryAccess)\n\t\t\t}\n\t\t\targ := uint16(val)\n\t\t\tvar newVal uint16\n\t\t\tswitch atomicArithmeticOp(op.B2) {\n\t\t\tcase atomicArithmeticOpAdd:\n\t\t\t\tnewVal = old + arg\n\t\t\tcase atomicArithmeticOpSub:\n\t\t\t\tnewVal = old - arg\n\t\t\tcase atomicArithmeticOpAnd:\n\t\t\t\tnewVal = old & arg\n\t\t\tcase atomicArithmeticOpOr:\n\t\t\t\tnewVal = old | arg\n\t\t\tcase atomicArithmeticOpXor:\n\t\t\t\tnewVal = old ^ arg\n\t\t\tcase atomicArithmeticOpNop:\n\t\t\t\tnewVal = arg\n\t\t\t}\n\t\t\tmemoryInst.WriteUint16Le(offset, newVal)\n\t\t\tmemoryInst.Mux.Unlock()\n\t\t\tce.pushValue(uint64(old))\n\t\t\tframe.pc++\n\t\tcase operationKindAtomicRMWCmpxchg:\n\t\t\trep := ce.popValue()\n\t\t\texp := ce.popValue()\n\t\t\toffset := ce.popMemoryOffset(op)\n\t\t\tswitch unsignedType(op.B1) {\n\t\t\tcase unsignedTypeI32:\n\t\t\t\tif offset%4 != 0 {\n\t\t\t\t\tpanic(wasmruntime.ErrRuntimeUnalignedAtomic)\n\t\t\t\t}\n\t\t\t\tmemoryInst.Mux.Lock()\n\t\t\t\told, ok := memoryInst.ReadUint32Le(offset)\n\t\t\t\tif !ok {\n\t\t\t\t\tmemoryInst.Mux.Unlock()\n\t\t\t\t\tpanic(wasmruntime.ErrRuntimeOutOfBoundsMemoryAccess)\n\t\t\t\t}\n\t\t\t\tif old == uint32(exp) {\n\t\t\t\t\tmemoryInst.WriteUint32Le(offset, uint32(rep))\n\t\t\t\t}\n\t\t\t\tmemoryInst.Mux.Unlock()\n\t\t\t\tce.pushValue(uint64(old))\n\t\t\tcase unsignedTypeI64:\n\t\t\t\tif offset%8 != 0 {\n\t\t\t\t\tpanic(wasmruntime.ErrRuntimeUnalignedAtomic)\n\t\t\t\t}\n\t\t\t\tmemoryInst.Mux.Lock()\n\t\t\t\told, ok := memoryInst.ReadUint64Le(offset)\n\t\t\t\tif !ok {\n\t\t\t\t\tmemoryInst.Mux.Unlock()\n\t\t\t\t\tpanic(wasmruntime.ErrRuntimeOutOfBoundsMemoryAccess)\n\t\t\t\t}\n\t\t\t\tif old == exp {\n\t\t\t\t\tmemoryInst.WriteUint64Le(offset, rep)\n\t\t\t\t}\n\t\t\t\tmemoryInst.Mux.Unlock()\n\t\t\t\tce.pushValue(old)\n\t\t\t}\n\t\t\tframe.pc++\n\t\tcase operationKindAtomicRMW8Cmpxchg:\n\t\t\trep := byte(ce.popValue())\n\t\t\texp := byte(ce.popValue())\n\t\t\toffset := ce.popMemoryOffset(op)\n\t\t\tmemoryInst.Mux.Lock()\n\t\t\told, ok := memoryInst.ReadByte(offset)\n\t\t\tif !ok {\n\t\t\t\tmemoryInst.Mux.Unlock()\n\t\t\t\tpanic(wasmruntime.ErrRuntimeOutOfBoundsMemoryAccess)\n\t\t\t}\n\t\t\tif old == exp {\n\t\t\t\tmemoryInst.WriteByte(offset, rep)\n\t\t\t}\n\t\t\tmemoryInst.Mux.Unlock()\n\t\t\tce.pushValue(uint64(old))\n\t\t\tframe.pc++\n\t\tcase operationKindAtomicRMW16Cmpxchg:\n\t\t\trep := uint16(ce.popValue())\n\t\t\texp := uint16(ce.popValue())\n\t\t\toffset := ce.popMemoryOffset(op)\n\t\t\tif offset%2 != 0 {\n\t\t\t\tpanic(wasmruntime.ErrRuntimeUnalignedAtomic)\n\t\t\t}\n\t\t\tmemoryInst.Mux.Lock()\n\t\t\told, ok := memoryInst.ReadUint16Le(offset)\n\t\t\tif !ok {\n\t\t\t\tmemoryInst.Mux.Unlock()\n\t\t\t\tpanic(wasmruntime.ErrRuntimeOutOfBoundsMemoryAccess)\n\t\t\t}\n\t\t\tif old == exp {\n\t\t\t\tmemoryInst.WriteUint16Le(offset, rep)\n\t\t\t}\n\t\t\tmemoryInst.Mux.Unlock()\n\t\t\tce.pushValue(uint64(old))\n\t\t\tframe.pc++\n\t\tcase operationKindTailCallReturnCall:\n\t\t\tf := &functions[op.U1]\n\t\t\tce.dropForTailCall(frame, f)\n\t\t\tbody, bodyLen = ce.resetPc(frame, f)\n\n\t\tcase operationKindTailCallReturnCallIndirect:\n\t\t\toffset := ce.popValue()\n\t\t\ttable := tables[op.U2]\n\t\t\ttf := ce.functionForOffset(table, offset, typeIDs[op.U1])\n\n\t\t\t// We are allowing proper tail calls only across functions that belong to the same\n\t\t\t// module; for indirect calls, we have to enforce it at run-time.\n\t\t\t// For details, see internal/engine/RATIONALE.md\n\t\t\tif tf.moduleInstance != f.moduleInstance {\n\t\t\t\t// Revert to a normal call.\n\t\t\t\tce.callFunction(ctx, f.moduleInstance, tf)\n\t\t\t\t// Return\n\t\t\t\tce.drop(op.Us[0])\n\t\t\t\t// Jump to the function frame (return)\n\t\t\t\tframe.pc = op.Us[1]\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tce.dropForTailCall(frame, tf)\n\t\t\tbody, bodyLen = ce.resetPc(frame, tf)\n\n\t\tdefault:\n\t\t\tframe.pc++\n\t\t}\n\t}\n\tce.popFrame()\n}\n\nfunc (ce *callEngine) dropForTailCall(frame *callFrame, f *function) {\n\tbase := frame.base - frame.f.funcType.ParamNumInUint64\n\tparamCount := f.funcType.ParamNumInUint64\n\tce.stack = append(ce.stack[:base], ce.stack[len(ce.stack)-paramCount:]...)\n}\n\nfunc (ce *callEngine) resetPc(frame *callFrame, f *function) (body []unionOperation, bodyLen uint64) {\n\t// The compiler is currently allowing proper tail call only across functions\n\t// that belong to the same module; thus, we can overwrite the frame in-place.\n\t// For details, see internal/engine/RATIONALE.md\n\tframe.f = f\n\tframe.base = len(ce.stack)\n\tframe.pc = 0\n\tbody = frame.f.parent.body\n\tbodyLen = uint64(len(body))\n\treturn body, bodyLen\n}\n\nfunc (ce *callEngine) functionForOffset(table *wasm.TableInstance, offset uint64, expectedTypeID wasm.FunctionTypeID) *function {\n\tif offset >= uint64(len(table.References)) {\n\t\tpanic(wasmruntime.ErrRuntimeInvalidTableAccess)\n\t}\n\trawPtr := table.References[offset]\n\tif rawPtr == 0 {\n\t\tpanic(wasmruntime.ErrRuntimeInvalidTableAccess)\n\t}\n\n\ttf := functionFromUintptr(rawPtr)\n\tif tf.typeID != expectedTypeID {\n\t\tpanic(wasmruntime.ErrRuntimeIndirectCallTypeMismatch)\n\t}\n\treturn tf\n}\n\nfunc wasmCompatMax32bits(v1, v2 uint32) uint64 {\n\treturn uint64(math.Float32bits(moremath.WasmCompatMax32(\n\t\tmath.Float32frombits(v1),\n\t\tmath.Float32frombits(v2),\n\t)))\n}\n\nfunc wasmCompatMin32bits(v1, v2 uint32) uint64 {\n\treturn uint64(math.Float32bits(moremath.WasmCompatMin32(\n\t\tmath.Float32frombits(v1),\n\t\tmath.Float32frombits(v2),\n\t)))\n}\n\nfunc addFloat32bits(v1, v2 uint32) uint64 {\n\treturn uint64(math.Float32bits(math.Float32frombits(v1) + math.Float32frombits(v2)))\n}\n\nfunc subFloat32bits(v1, v2 uint32) uint64 {\n\treturn uint64(math.Float32bits(math.Float32frombits(v1) - math.Float32frombits(v2)))\n}\n\nfunc mulFloat32bits(v1, v2 uint32) uint64 {\n\treturn uint64(math.Float32bits(math.Float32frombits(v1) * math.Float32frombits(v2)))\n}\n\nfunc divFloat32bits(v1, v2 uint32) uint64 {\n\treturn uint64(math.Float32bits(math.Float32frombits(v1) / math.Float32frombits(v2)))\n}\n\n// https://www.w3.org/TR/2022/WD-wasm-core-2-20220419/exec/numerics.html#xref-exec-numerics-op-flt-mathrm-flt-n-z-1-z-2\nfunc flt32(z1, z2 float32) bool {\n\tif z1 != z1 || z2 != z2 {\n\t\treturn false\n\t} else if z1 == z2 {\n\t\treturn false\n\t} else if math.IsInf(float64(z1), 1) {\n\t\treturn false\n\t} else if math.IsInf(float64(z1), -1) {\n\t\treturn true\n\t} else if math.IsInf(float64(z2), 1) {\n\t\treturn true\n\t} else if math.IsInf(float64(z2), -1) {\n\t\treturn false\n\t}\n\treturn z1 < z2\n}\n\n// https://www.w3.org/TR/2022/WD-wasm-core-2-20220419/exec/numerics.html#xref-exec-numerics-op-flt-mathrm-flt-n-z-1-z-2\nfunc flt64(z1, z2 float64) bool {\n\tif z1 != z1 || z2 != z2 {\n\t\treturn false\n\t} else if z1 == z2 {\n\t\treturn false\n\t} else if math.IsInf(z1, 1) {\n\t\treturn false\n\t} else if math.IsInf(z1, -1) {\n\t\treturn true\n\t} else if math.IsInf(z2, 1) {\n\t\treturn true\n\t} else if math.IsInf(z2, -1) {\n\t\treturn false\n\t}\n\treturn z1 < z2\n}\n\nfunc i8RoundingAverage(v1, v2 byte) byte {\n\t// https://github.com/WebAssembly/spec/blob/wg-2.0.draft1/proposals/simd/SIMD.md#lane-wise-integer-rounding-average\n\treturn byte((uint16(v1) + uint16(v2) + uint16(1)) / 2)\n}\n\nfunc i16RoundingAverage(v1, v2 uint16) uint16 {\n\t// https://github.com/WebAssembly/spec/blob/wg-2.0.draft1/proposals/simd/SIMD.md#lane-wise-integer-rounding-average\n\treturn uint16((uint32(v1) + uint32(v2) + 1) / 2)\n}\n\nfunc i8Abs(v byte) byte {\n\tif i := int8(v); i < 0 {\n\t\treturn byte(-i)\n\t} else {\n\t\treturn byte(i)\n\t}\n}\n\nfunc i8MaxU(v1, v2 byte) byte {\n\tif v1 < v2 {\n\t\treturn v2\n\t} else {\n\t\treturn v1\n\t}\n}\n\nfunc i8MinU(v1, v2 byte) byte {\n\tif v1 > v2 {\n\t\treturn v2\n\t} else {\n\t\treturn v1\n\t}\n}\n\nfunc i8MaxS(v1, v2 byte) byte {\n\tif int8(v1) < int8(v2) {\n\t\treturn v2\n\t} else {\n\t\treturn v1\n\t}\n}\n\nfunc i8MinS(v1, v2 byte) byte {\n\tif int8(v1) > int8(v2) {\n\t\treturn v2\n\t} else {\n\t\treturn v1\n\t}\n}\n\nfunc i16MaxU(v1, v2 uint16) uint16 {\n\tif v1 < v2 {\n\t\treturn v2\n\t} else {\n\t\treturn v1\n\t}\n}\n\nfunc i16MinU(v1, v2 uint16) uint16 {\n\tif v1 > v2 {\n\t\treturn v2\n\t} else {\n\t\treturn v1\n\t}\n}\n\nfunc i16MaxS(v1, v2 uint16) uint16 {\n\tif int16(v1) < int16(v2) {\n\t\treturn v2\n\t} else {\n\t\treturn v1\n\t}\n}\n\nfunc i16MinS(v1, v2 uint16) uint16 {\n\tif int16(v1) > int16(v2) {\n\t\treturn v2\n\t} else {\n\t\treturn v1\n\t}\n}\n\nfunc i32MaxU(v1, v2 uint32) uint32 {\n\tif v1 < v2 {\n\t\treturn v2\n\t} else {\n\t\treturn v1\n\t}\n}\n\nfunc i32MinU(v1, v2 uint32) uint32 {\n\tif v1 > v2 {\n\t\treturn v2\n\t} else {\n\t\treturn v1\n\t}\n}\n\nfunc i32MaxS(v1, v2 uint32) uint32 {\n\tif int32(v1) < int32(v2) {\n\t\treturn v2\n\t} else {\n\t\treturn v1\n\t}\n}\n\nfunc i32MinS(v1, v2 uint32) uint32 {\n\tif int32(v1) > int32(v2) {\n\t\treturn v2\n\t} else {\n\t\treturn v1\n\t}\n}\n\nfunc i16Abs(v uint16) uint16 {\n\tif i := int16(v); i < 0 {\n\t\treturn uint16(-i)\n\t} else {\n\t\treturn uint16(i)\n\t}\n}\n\nfunc i32Abs(v uint32) uint32 {\n\tif i := int32(v); i < 0 {\n\t\treturn uint32(-i)\n\t} else {\n\t\treturn uint32(i)\n\t}\n}\n\nfunc (ce *callEngine) callNativeFuncWithListener(ctx context.Context, m *wasm.ModuleInstance, f *function, fnl experimental.FunctionListener) context.Context {\n\tdef, typ := f.definition(), f.funcType\n\n\tce.stackIterator.reset(ce.stack, ce.frames, f)\n\tfnl.Before(ctx, m, def, ce.peekValues(typ.ParamNumInUint64), &ce.stackIterator)\n\tce.stackIterator.clear()\n\tce.callNativeFunc(ctx, m, f)\n\tfnl.After(ctx, m, def, ce.peekValues(typ.ResultNumInUint64))\n\treturn ctx\n}\n\n// popMemoryOffset takes a memory offset off the stack for use in load and store instructions.\n// As the top of stack value is 64-bit, this ensures it is in range before returning it.\nfunc (ce *callEngine) popMemoryOffset(op *unionOperation) uint32 {\n\toffset := op.U2 + ce.popValue()\n\tif offset > math.MaxUint32 {\n\t\tpanic(wasmruntime.ErrRuntimeOutOfBoundsMemoryAccess)\n\t}\n\treturn uint32(offset)\n}\n\nfunc (ce *callEngine) callGoFuncWithStack(ctx context.Context, m *wasm.ModuleInstance, f *function) {\n\ttyp := f.funcType\n\tparamLen := typ.ParamNumInUint64\n\tresultLen := typ.ResultNumInUint64\n\tstackLen := paramLen\n\n\t// In the interpreter engine, ce.stack may only have capacity to store\n\t// parameters. Grow when there are more results than parameters.\n\tif growLen := resultLen - paramLen; growLen > 0 {\n\t\tce.stack = append(ce.stack, make([]uint64, growLen)...)\n\t\tstackLen += growLen\n\t}\n\n\t// Pass the stack elements to the go function.\n\tstack := ce.stack[len(ce.stack)-stackLen:]\n\tce.callGoFunc(ctx, m, f, stack)\n\n\t// Shrink the stack when there were more parameters than results.\n\tif shrinkLen := paramLen - resultLen; shrinkLen > 0 {\n\t\tce.stack = ce.stack[0 : len(ce.stack)-shrinkLen]\n\t}\n}\n\n// v128Dot performs a dot product of two 64-bit vectors.\n// Note: for some reason (which I suspect is due to a bug in Go compiler's regalloc),\n// inlining this function causes a bug which happens **only when** we run with -race AND arm64 AND Go 1.22.\nfunc v128Dot(x1Hi, x1Lo, x2Hi, x2Lo uint64) (uint64, uint64) {\n\tr1 := int32(int16(x1Lo>>0)) * int32(int16(x2Lo>>0))\n\tr2 := int32(int16(x1Lo>>16)) * int32(int16(x2Lo>>16))\n\tr3 := int32(int16(x1Lo>>32)) * int32(int16(x2Lo>>32))\n\tr4 := int32(int16(x1Lo>>48)) * int32(int16(x2Lo>>48))\n\tr5 := int32(int16(x1Hi>>0)) * int32(int16(x2Hi>>0))\n\tr6 := int32(int16(x1Hi>>16)) * int32(int16(x2Hi>>16))\n\tr7 := int32(int16(x1Hi>>32)) * int32(int16(x2Hi>>32))\n\tr8 := int32(int16(x1Hi>>48)) * int32(int16(x2Hi>>48))\n\treturn uint64(uint32(r1+r2)) | (uint64(uint32(r3+r4)) << 32), uint64(uint32(r5+r6)) | (uint64(uint32(r7+r8)) << 32)\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/interpreter/operations.go",
    "content": "package interpreter\n\nimport (\n\t\"fmt\"\n\t\"math\"\n\t\"strings\"\n)\n\n// unsignedInt represents unsigned 32-bit or 64-bit integers.\ntype unsignedInt byte\n\nconst (\n\tunsignedInt32 unsignedInt = iota\n\tunsignedInt64\n)\n\n// String implements fmt.Stringer.\nfunc (s unsignedInt) String() (ret string) {\n\tswitch s {\n\tcase unsignedInt32:\n\t\tret = \"i32\"\n\tcase unsignedInt64:\n\t\tret = \"i64\"\n\t}\n\treturn\n}\n\n// signedInt represents signed or unsigned integers.\ntype signedInt byte\n\nconst (\n\tsignedInt32 signedInt = iota\n\tsignedInt64\n\tsignedUint32\n\tsignedUint64\n)\n\n// String implements fmt.Stringer.\nfunc (s signedInt) String() (ret string) {\n\tswitch s {\n\tcase signedUint32:\n\t\tret = \"u32\"\n\tcase signedUint64:\n\t\tret = \"u64\"\n\tcase signedInt32:\n\t\tret = \"s32\"\n\tcase signedInt64:\n\t\tret = \"s64\"\n\t}\n\treturn\n}\n\n// float represents the scalar double or single precision floating points.\ntype float byte\n\nconst (\n\tf32 float = iota\n\tf64\n)\n\n// String implements fmt.Stringer.\nfunc (s float) String() (ret string) {\n\tswitch s {\n\tcase f32:\n\t\tret = \"f32\"\n\tcase f64:\n\t\tret = \"f64\"\n\t}\n\treturn\n}\n\n// unsignedType is the union of unsignedInt, float and V128 vector type.\ntype unsignedType byte\n\nconst (\n\tunsignedTypeI32 unsignedType = iota\n\tunsignedTypeI64\n\tunsignedTypeF32\n\tunsignedTypeF64\n\tunsignedTypeV128\n\tunsignedTypeUnknown\n)\n\n// String implements fmt.Stringer.\nfunc (s unsignedType) String() (ret string) {\n\tswitch s {\n\tcase unsignedTypeI32:\n\t\tret = \"i32\"\n\tcase unsignedTypeI64:\n\t\tret = \"i64\"\n\tcase unsignedTypeF32:\n\t\tret = \"f32\"\n\tcase unsignedTypeF64:\n\t\tret = \"f64\"\n\tcase unsignedTypeV128:\n\t\tret = \"v128\"\n\tcase unsignedTypeUnknown:\n\t\tret = \"unknown\"\n\t}\n\treturn\n}\n\n// signedType is the union of signedInt and float types.\ntype signedType byte\n\nconst (\n\tsignedTypeInt32 signedType = iota\n\tsignedTypeUint32\n\tsignedTypeInt64\n\tsignedTypeUint64\n\tsignedTypeFloat32\n\tsignedTypeFloat64\n)\n\n// String implements fmt.Stringer.\nfunc (s signedType) String() (ret string) {\n\tswitch s {\n\tcase signedTypeInt32:\n\t\tret = \"s32\"\n\tcase signedTypeUint32:\n\t\tret = \"u32\"\n\tcase signedTypeInt64:\n\t\tret = \"s64\"\n\tcase signedTypeUint64:\n\t\tret = \"u64\"\n\tcase signedTypeFloat32:\n\t\tret = \"f32\"\n\tcase signedTypeFloat64:\n\t\tret = \"f64\"\n\t}\n\treturn\n}\n\n// operationKind is the Kind of each implementation of Operation interface.\ntype operationKind uint16\n\n// String implements fmt.Stringer.\nfunc (o operationKind) String() (ret string) {\n\tswitch o {\n\tcase operationKindUnreachable:\n\t\tret = \"Unreachable\"\n\tcase operationKindLabel:\n\t\tret = \"label\"\n\tcase operationKindBr:\n\t\tret = \"Br\"\n\tcase operationKindBrIf:\n\t\tret = \"BrIf\"\n\tcase operationKindBrTable:\n\t\tret = \"BrTable\"\n\tcase operationKindCall:\n\t\tret = \"Call\"\n\tcase operationKindCallIndirect:\n\t\tret = \"CallIndirect\"\n\tcase operationKindDrop:\n\t\tret = \"Drop\"\n\tcase operationKindSelect:\n\t\tret = \"Select\"\n\tcase operationKindPick:\n\t\tret = \"Pick\"\n\tcase operationKindSet:\n\t\tret = \"Swap\"\n\tcase operationKindGlobalGet:\n\t\tret = \"GlobalGet\"\n\tcase operationKindGlobalSet:\n\t\tret = \"GlobalSet\"\n\tcase operationKindLoad:\n\t\tret = \"Load\"\n\tcase operationKindLoad8:\n\t\tret = \"Load8\"\n\tcase operationKindLoad16:\n\t\tret = \"Load16\"\n\tcase operationKindLoad32:\n\t\tret = \"Load32\"\n\tcase operationKindStore:\n\t\tret = \"Store\"\n\tcase operationKindStore8:\n\t\tret = \"Store8\"\n\tcase operationKindStore16:\n\t\tret = \"Store16\"\n\tcase operationKindStore32:\n\t\tret = \"Store32\"\n\tcase operationKindMemorySize:\n\t\tret = \"MemorySize\"\n\tcase operationKindMemoryGrow:\n\t\tret = \"MemoryGrow\"\n\tcase operationKindConstI32:\n\t\tret = \"ConstI32\"\n\tcase operationKindConstI64:\n\t\tret = \"ConstI64\"\n\tcase operationKindConstF32:\n\t\tret = \"ConstF32\"\n\tcase operationKindConstF64:\n\t\tret = \"ConstF64\"\n\tcase operationKindEq:\n\t\tret = \"Eq\"\n\tcase operationKindNe:\n\t\tret = \"Ne\"\n\tcase operationKindEqz:\n\t\tret = \"Eqz\"\n\tcase operationKindLt:\n\t\tret = \"Lt\"\n\tcase operationKindGt:\n\t\tret = \"Gt\"\n\tcase operationKindLe:\n\t\tret = \"Le\"\n\tcase operationKindGe:\n\t\tret = \"Ge\"\n\tcase operationKindAdd:\n\t\tret = \"Add\"\n\tcase operationKindSub:\n\t\tret = \"Sub\"\n\tcase operationKindMul:\n\t\tret = \"Mul\"\n\tcase operationKindClz:\n\t\tret = \"Clz\"\n\tcase operationKindCtz:\n\t\tret = \"Ctz\"\n\tcase operationKindPopcnt:\n\t\tret = \"Popcnt\"\n\tcase operationKindDiv:\n\t\tret = \"Div\"\n\tcase operationKindRem:\n\t\tret = \"Rem\"\n\tcase operationKindAnd:\n\t\tret = \"And\"\n\tcase operationKindOr:\n\t\tret = \"Or\"\n\tcase operationKindXor:\n\t\tret = \"Xor\"\n\tcase operationKindShl:\n\t\tret = \"Shl\"\n\tcase operationKindShr:\n\t\tret = \"Shr\"\n\tcase operationKindRotl:\n\t\tret = \"Rotl\"\n\tcase operationKindRotr:\n\t\tret = \"Rotr\"\n\tcase operationKindAbs:\n\t\tret = \"Abs\"\n\tcase operationKindNeg:\n\t\tret = \"Neg\"\n\tcase operationKindCeil:\n\t\tret = \"Ceil\"\n\tcase operationKindFloor:\n\t\tret = \"Floor\"\n\tcase operationKindTrunc:\n\t\tret = \"Trunc\"\n\tcase operationKindNearest:\n\t\tret = \"Nearest\"\n\tcase operationKindSqrt:\n\t\tret = \"Sqrt\"\n\tcase operationKindMin:\n\t\tret = \"Min\"\n\tcase operationKindMax:\n\t\tret = \"Max\"\n\tcase operationKindCopysign:\n\t\tret = \"Copysign\"\n\tcase operationKindI32WrapFromI64:\n\t\tret = \"I32WrapFromI64\"\n\tcase operationKindITruncFromF:\n\t\tret = \"ITruncFromF\"\n\tcase operationKindFConvertFromI:\n\t\tret = \"FConvertFromI\"\n\tcase operationKindF32DemoteFromF64:\n\t\tret = \"F32DemoteFromF64\"\n\tcase operationKindF64PromoteFromF32:\n\t\tret = \"F64PromoteFromF32\"\n\tcase operationKindI32ReinterpretFromF32:\n\t\tret = \"I32ReinterpretFromF32\"\n\tcase operationKindI64ReinterpretFromF64:\n\t\tret = \"I64ReinterpretFromF64\"\n\tcase operationKindF32ReinterpretFromI32:\n\t\tret = \"F32ReinterpretFromI32\"\n\tcase operationKindF64ReinterpretFromI64:\n\t\tret = \"F64ReinterpretFromI64\"\n\tcase operationKindExtend:\n\t\tret = \"Extend\"\n\tcase operationKindMemoryInit:\n\t\tret = \"MemoryInit\"\n\tcase operationKindDataDrop:\n\t\tret = \"DataDrop\"\n\tcase operationKindMemoryCopy:\n\t\tret = \"MemoryCopy\"\n\tcase operationKindMemoryFill:\n\t\tret = \"MemoryFill\"\n\tcase operationKindTableInit:\n\t\tret = \"TableInit\"\n\tcase operationKindElemDrop:\n\t\tret = \"ElemDrop\"\n\tcase operationKindTableCopy:\n\t\tret = \"TableCopy\"\n\tcase operationKindRefFunc:\n\t\tret = \"RefFunc\"\n\tcase operationKindTableGet:\n\t\tret = \"TableGet\"\n\tcase operationKindTableSet:\n\t\tret = \"TableSet\"\n\tcase operationKindTableSize:\n\t\tret = \"TableSize\"\n\tcase operationKindTableGrow:\n\t\tret = \"TableGrow\"\n\tcase operationKindTableFill:\n\t\tret = \"TableFill\"\n\tcase operationKindV128Const:\n\t\tret = \"ConstV128\"\n\tcase operationKindV128Add:\n\t\tret = \"V128Add\"\n\tcase operationKindV128Sub:\n\t\tret = \"V128Sub\"\n\tcase operationKindV128Load:\n\t\tret = \"V128Load\"\n\tcase operationKindV128LoadLane:\n\t\tret = \"V128LoadLane\"\n\tcase operationKindV128Store:\n\t\tret = \"V128Store\"\n\tcase operationKindV128StoreLane:\n\t\tret = \"V128StoreLane\"\n\tcase operationKindV128ExtractLane:\n\t\tret = \"V128ExtractLane\"\n\tcase operationKindV128ReplaceLane:\n\t\tret = \"V128ReplaceLane\"\n\tcase operationKindV128Splat:\n\t\tret = \"V128Splat\"\n\tcase operationKindV128Shuffle:\n\t\tret = \"V128Shuffle\"\n\tcase operationKindV128Swizzle:\n\t\tret = \"V128Swizzle\"\n\tcase operationKindV128AnyTrue:\n\t\tret = \"V128AnyTrue\"\n\tcase operationKindV128AllTrue:\n\t\tret = \"V128AllTrue\"\n\tcase operationKindV128And:\n\t\tret = \"V128And\"\n\tcase operationKindV128Not:\n\t\tret = \"V128Not\"\n\tcase operationKindV128Or:\n\t\tret = \"V128Or\"\n\tcase operationKindV128Xor:\n\t\tret = \"V128Xor\"\n\tcase operationKindV128Bitselect:\n\t\tret = \"V128Bitselect\"\n\tcase operationKindV128AndNot:\n\t\tret = \"V128AndNot\"\n\tcase operationKindV128BitMask:\n\t\tret = \"V128BitMask\"\n\tcase operationKindV128Shl:\n\t\tret = \"V128Shl\"\n\tcase operationKindV128Shr:\n\t\tret = \"V128Shr\"\n\tcase operationKindV128Cmp:\n\t\tret = \"V128Cmp\"\n\tcase operationKindSignExtend32From8:\n\t\tret = \"SignExtend32From8\"\n\tcase operationKindSignExtend32From16:\n\t\tret = \"SignExtend32From16\"\n\tcase operationKindSignExtend64From8:\n\t\tret = \"SignExtend64From8\"\n\tcase operationKindSignExtend64From16:\n\t\tret = \"SignExtend64From16\"\n\tcase operationKindSignExtend64From32:\n\t\tret = \"SignExtend64From32\"\n\tcase operationKindV128AddSat:\n\t\tret = \"V128AddSat\"\n\tcase operationKindV128SubSat:\n\t\tret = \"V128SubSat\"\n\tcase operationKindV128Mul:\n\t\tret = \"V128Mul\"\n\tcase operationKindV128Div:\n\t\tret = \"V128Div\"\n\tcase operationKindV128Neg:\n\t\tret = \"V128Neg\"\n\tcase operationKindV128Sqrt:\n\t\tret = \"V128Sqrt\"\n\tcase operationKindV128Abs:\n\t\tret = \"V128Abs\"\n\tcase operationKindV128Popcnt:\n\t\tret = \"V128Popcnt\"\n\tcase operationKindV128Min:\n\t\tret = \"V128Min\"\n\tcase operationKindV128Max:\n\t\tret = \"V128Max\"\n\tcase operationKindV128AvgrU:\n\t\tret = \"V128AvgrU\"\n\tcase operationKindV128Ceil:\n\t\tret = \"V128Ceil\"\n\tcase operationKindV128Floor:\n\t\tret = \"V128Floor\"\n\tcase operationKindV128Trunc:\n\t\tret = \"V128Trunc\"\n\tcase operationKindV128Nearest:\n\t\tret = \"V128Nearest\"\n\tcase operationKindV128Pmin:\n\t\tret = \"V128Pmin\"\n\tcase operationKindV128Pmax:\n\t\tret = \"V128Pmax\"\n\tcase operationKindV128Extend:\n\t\tret = \"V128Extend\"\n\tcase operationKindV128ExtMul:\n\t\tret = \"V128ExtMul\"\n\tcase operationKindV128Q15mulrSatS:\n\t\tret = \"V128Q15mulrSatS\"\n\tcase operationKindV128ExtAddPairwise:\n\t\tret = \"V128ExtAddPairwise\"\n\tcase operationKindV128FloatPromote:\n\t\tret = \"V128FloatPromote\"\n\tcase operationKindV128FloatDemote:\n\t\tret = \"V128FloatDemote\"\n\tcase operationKindV128FConvertFromI:\n\t\tret = \"V128FConvertFromI\"\n\tcase operationKindV128Dot:\n\t\tret = \"V128Dot\"\n\tcase operationKindV128Narrow:\n\t\tret = \"V128Narrow\"\n\tcase operationKindV128ITruncSatFromF:\n\t\tret = \"V128ITruncSatFromF\"\n\tcase operationKindBuiltinFunctionCheckExitCode:\n\t\tret = \"BuiltinFunctionCheckExitCode\"\n\tcase operationKindAtomicMemoryWait:\n\t\tret = \"operationKindAtomicMemoryWait\"\n\tcase operationKindAtomicMemoryNotify:\n\t\tret = \"operationKindAtomicMemoryNotify\"\n\tcase operationKindAtomicFence:\n\t\tret = \"operationKindAtomicFence\"\n\tcase operationKindAtomicLoad:\n\t\tret = \"operationKindAtomicLoad\"\n\tcase operationKindAtomicLoad8:\n\t\tret = \"operationKindAtomicLoad8\"\n\tcase operationKindAtomicLoad16:\n\t\tret = \"operationKindAtomicLoad16\"\n\tcase operationKindAtomicStore:\n\t\tret = \"operationKindAtomicStore\"\n\tcase operationKindAtomicStore8:\n\t\tret = \"operationKindAtomicStore8\"\n\tcase operationKindAtomicStore16:\n\t\tret = \"operationKindAtomicStore16\"\n\tcase operationKindAtomicRMW:\n\t\tret = \"operationKindAtomicRMW\"\n\tcase operationKindAtomicRMW8:\n\t\tret = \"operationKindAtomicRMW8\"\n\tcase operationKindAtomicRMW16:\n\t\tret = \"operationKindAtomicRMW16\"\n\tcase operationKindAtomicRMWCmpxchg:\n\t\tret = \"operationKindAtomicRMWCmpxchg\"\n\tcase operationKindAtomicRMW8Cmpxchg:\n\t\tret = \"operationKindAtomicRMW8Cmpxchg\"\n\tcase operationKindAtomicRMW16Cmpxchg:\n\t\tret = \"operationKindAtomicRMW16Cmpxchg\"\n\tcase operationKindTailCallReturnCall:\n\t\tret = \"operationKindTailCallReturnCall\"\n\tcase operationKindTailCallReturnCallIndirect:\n\t\tret = \"operationKindTailCallReturnCallIndirect\"\n\tdefault:\n\t\tpanic(fmt.Errorf(\"unknown operation %d\", o))\n\t}\n\treturn\n}\n\nconst (\n\t// operationKindUnreachable is the Kind for NewOperationUnreachable.\n\toperationKindUnreachable operationKind = iota\n\t// operationKindLabel is the Kind for NewOperationLabel.\n\toperationKindLabel\n\t// operationKindBr is the Kind for NewOperationBr.\n\toperationKindBr\n\t// operationKindBrIf is the Kind for NewOperationBrIf.\n\toperationKindBrIf\n\t// operationKindBrTable is the Kind for NewOperationBrTable.\n\toperationKindBrTable\n\t// operationKindCall is the Kind for NewOperationCall.\n\toperationKindCall\n\t// operationKindCallIndirect is the Kind for NewOperationCallIndirect.\n\toperationKindCallIndirect\n\t// operationKindDrop is the Kind for NewOperationDrop.\n\toperationKindDrop\n\t// operationKindSelect is the Kind for NewOperationSelect.\n\toperationKindSelect\n\t// operationKindPick is the Kind for NewOperationPick.\n\toperationKindPick\n\t// operationKindSet is the Kind for NewOperationSet.\n\toperationKindSet\n\t// operationKindGlobalGet is the Kind for NewOperationGlobalGet.\n\toperationKindGlobalGet\n\t// operationKindGlobalSet is the Kind for NewOperationGlobalSet.\n\toperationKindGlobalSet\n\t// operationKindLoad is the Kind for NewOperationLoad.\n\toperationKindLoad\n\t// operationKindLoad8 is the Kind for NewOperationLoad8.\n\toperationKindLoad8\n\t// operationKindLoad16 is the Kind for NewOperationLoad16.\n\toperationKindLoad16\n\t// operationKindLoad32 is the Kind for NewOperationLoad32.\n\toperationKindLoad32\n\t// operationKindStore is the Kind for NewOperationStore.\n\toperationKindStore\n\t// operationKindStore8 is the Kind for NewOperationStore8.\n\toperationKindStore8\n\t// operationKindStore16 is the Kind for NewOperationStore16.\n\toperationKindStore16\n\t// operationKindStore32 is the Kind for NewOperationStore32.\n\toperationKindStore32\n\t// operationKindMemorySize is the Kind for NewOperationMemorySize.\n\toperationKindMemorySize\n\t// operationKindMemoryGrow is the Kind for NewOperationMemoryGrow.\n\toperationKindMemoryGrow\n\t// operationKindConstI32 is the Kind for NewOperationConstI32.\n\toperationKindConstI32\n\t// operationKindConstI64 is the Kind for NewOperationConstI64.\n\toperationKindConstI64\n\t// operationKindConstF32 is the Kind for NewOperationConstF32.\n\toperationKindConstF32\n\t// operationKindConstF64 is the Kind for NewOperationConstF64.\n\toperationKindConstF64\n\t// operationKindEq is the Kind for NewOperationEq.\n\toperationKindEq\n\t// operationKindNe is the Kind for NewOperationNe.\n\toperationKindNe\n\t// operationKindEqz is the Kind for NewOperationEqz.\n\toperationKindEqz\n\t// operationKindLt is the Kind for NewOperationLt.\n\toperationKindLt\n\t// operationKindGt is the Kind for NewOperationGt.\n\toperationKindGt\n\t// operationKindLe is the Kind for NewOperationLe.\n\toperationKindLe\n\t// operationKindGe is the Kind for NewOperationGe.\n\toperationKindGe\n\t// operationKindAdd is the Kind for NewOperationAdd.\n\toperationKindAdd\n\t// operationKindSub is the Kind for NewOperationSub.\n\toperationKindSub\n\t// operationKindMul is the Kind for NewOperationMul.\n\toperationKindMul\n\t// operationKindClz is the Kind for NewOperationClz.\n\toperationKindClz\n\t// operationKindCtz is the Kind for NewOperationCtz.\n\toperationKindCtz\n\t// operationKindPopcnt is the Kind for NewOperationPopcnt.\n\toperationKindPopcnt\n\t// operationKindDiv is the Kind for NewOperationDiv.\n\toperationKindDiv\n\t// operationKindRem is the Kind for NewOperationRem.\n\toperationKindRem\n\t// operationKindAnd is the Kind for NewOperationAnd.\n\toperationKindAnd\n\t// operationKindOr is the Kind for NewOperationOr.\n\toperationKindOr\n\t// operationKindXor is the Kind for NewOperationXor.\n\toperationKindXor\n\t// operationKindShl is the Kind for NewOperationShl.\n\toperationKindShl\n\t// operationKindShr is the Kind for NewOperationShr.\n\toperationKindShr\n\t// operationKindRotl is the Kind for NewOperationRotl.\n\toperationKindRotl\n\t// operationKindRotr is the Kind for NewOperationRotr.\n\toperationKindRotr\n\t// operationKindAbs is the Kind for NewOperationAbs.\n\toperationKindAbs\n\t// operationKindNeg is the Kind for NewOperationNeg.\n\toperationKindNeg\n\t// operationKindCeil is the Kind for NewOperationCeil.\n\toperationKindCeil\n\t// operationKindFloor is the Kind for NewOperationFloor.\n\toperationKindFloor\n\t// operationKindTrunc is the Kind for NewOperationTrunc.\n\toperationKindTrunc\n\t// operationKindNearest is the Kind for NewOperationNearest.\n\toperationKindNearest\n\t// operationKindSqrt is the Kind for NewOperationSqrt.\n\toperationKindSqrt\n\t// operationKindMin is the Kind for NewOperationMin.\n\toperationKindMin\n\t// operationKindMax is the Kind for NewOperationMax.\n\toperationKindMax\n\t// operationKindCopysign is the Kind for NewOperationCopysign.\n\toperationKindCopysign\n\t// operationKindI32WrapFromI64 is the Kind for NewOperationI32WrapFromI64.\n\toperationKindI32WrapFromI64\n\t// operationKindITruncFromF is the Kind for NewOperationITruncFromF.\n\toperationKindITruncFromF\n\t// operationKindFConvertFromI is the Kind for NewOperationFConvertFromI.\n\toperationKindFConvertFromI\n\t// operationKindF32DemoteFromF64 is the Kind for NewOperationF32DemoteFromF64.\n\toperationKindF32DemoteFromF64\n\t// operationKindF64PromoteFromF32 is the Kind for NewOperationF64PromoteFromF32.\n\toperationKindF64PromoteFromF32\n\t// operationKindI32ReinterpretFromF32 is the Kind for NewOperationI32ReinterpretFromF32.\n\toperationKindI32ReinterpretFromF32\n\t// operationKindI64ReinterpretFromF64 is the Kind for NewOperationI64ReinterpretFromF64.\n\toperationKindI64ReinterpretFromF64\n\t// operationKindF32ReinterpretFromI32 is the Kind for NewOperationF32ReinterpretFromI32.\n\toperationKindF32ReinterpretFromI32\n\t// operationKindF64ReinterpretFromI64 is the Kind for NewOperationF64ReinterpretFromI64.\n\toperationKindF64ReinterpretFromI64\n\t// operationKindExtend is the Kind for NewOperationExtend.\n\toperationKindExtend\n\t// operationKindSignExtend32From8 is the Kind for NewOperationSignExtend32From8.\n\toperationKindSignExtend32From8\n\t// operationKindSignExtend32From16 is the Kind for NewOperationSignExtend32From16.\n\toperationKindSignExtend32From16\n\t// operationKindSignExtend64From8 is the Kind for NewOperationSignExtend64From8.\n\toperationKindSignExtend64From8\n\t// operationKindSignExtend64From16 is the Kind for NewOperationSignExtend64From16.\n\toperationKindSignExtend64From16\n\t// operationKindSignExtend64From32 is the Kind for NewOperationSignExtend64From32.\n\toperationKindSignExtend64From32\n\t// operationKindMemoryInit is the Kind for NewOperationMemoryInit.\n\toperationKindMemoryInit\n\t// operationKindDataDrop is the Kind for NewOperationDataDrop.\n\toperationKindDataDrop\n\t// operationKindMemoryCopy is the Kind for NewOperationMemoryCopy.\n\toperationKindMemoryCopy\n\t// operationKindMemoryFill is the Kind for NewOperationMemoryFill.\n\toperationKindMemoryFill\n\t// operationKindTableInit is the Kind for NewOperationTableInit.\n\toperationKindTableInit\n\t// operationKindElemDrop is the Kind for NewOperationElemDrop.\n\toperationKindElemDrop\n\t// operationKindTableCopy is the Kind for NewOperationTableCopy.\n\toperationKindTableCopy\n\t// operationKindRefFunc is the Kind for NewOperationRefFunc.\n\toperationKindRefFunc\n\t// operationKindTableGet is the Kind for NewOperationTableGet.\n\toperationKindTableGet\n\t// operationKindTableSet is the Kind for NewOperationTableSet.\n\toperationKindTableSet\n\t// operationKindTableSize is the Kind for NewOperationTableSize.\n\toperationKindTableSize\n\t// operationKindTableGrow is the Kind for NewOperationTableGrow.\n\toperationKindTableGrow\n\t// operationKindTableFill is the Kind for NewOperationTableFill.\n\toperationKindTableFill\n\n\t// Vector value related instructions are prefixed by V128.\n\n\t// operationKindV128Const is the Kind for NewOperationV128Const.\n\toperationKindV128Const\n\t// operationKindV128Add is the Kind for NewOperationV128Add.\n\toperationKindV128Add\n\t// operationKindV128Sub is the Kind for NewOperationV128Sub.\n\toperationKindV128Sub\n\t// operationKindV128Load is the Kind for NewOperationV128Load.\n\toperationKindV128Load\n\t// operationKindV128LoadLane is the Kind for NewOperationV128LoadLane.\n\toperationKindV128LoadLane\n\t// operationKindV128Store is the Kind for NewOperationV128Store.\n\toperationKindV128Store\n\t// operationKindV128StoreLane is the Kind for NewOperationV128StoreLane.\n\toperationKindV128StoreLane\n\t// operationKindV128ExtractLane is the Kind for NewOperationV128ExtractLane.\n\toperationKindV128ExtractLane\n\t// operationKindV128ReplaceLane is the Kind for NewOperationV128ReplaceLane.\n\toperationKindV128ReplaceLane\n\t// operationKindV128Splat is the Kind for NewOperationV128Splat.\n\toperationKindV128Splat\n\t// operationKindV128Shuffle is the Kind for NewOperationV128Shuffle.\n\toperationKindV128Shuffle\n\t// operationKindV128Swizzle is the Kind for NewOperationV128Swizzle.\n\toperationKindV128Swizzle\n\t// operationKindV128AnyTrue is the Kind for NewOperationV128AnyTrue.\n\toperationKindV128AnyTrue\n\t// operationKindV128AllTrue is the Kind for NewOperationV128AllTrue.\n\toperationKindV128AllTrue\n\t// operationKindV128BitMask is the Kind for NewOperationV128BitMask.\n\toperationKindV128BitMask\n\t// operationKindV128And is the Kind for NewOperationV128And.\n\toperationKindV128And\n\t// operationKindV128Not is the Kind for NewOperationV128Not.\n\toperationKindV128Not\n\t// operationKindV128Or is the Kind for NewOperationV128Or.\n\toperationKindV128Or\n\t// operationKindV128Xor is the Kind for NewOperationV128Xor.\n\toperationKindV128Xor\n\t// operationKindV128Bitselect is the Kind for NewOperationV128Bitselect.\n\toperationKindV128Bitselect\n\t// operationKindV128AndNot is the Kind for NewOperationV128AndNot.\n\toperationKindV128AndNot\n\t// operationKindV128Shl is the Kind for NewOperationV128Shl.\n\toperationKindV128Shl\n\t// operationKindV128Shr is the Kind for NewOperationV128Shr.\n\toperationKindV128Shr\n\t// operationKindV128Cmp is the Kind for NewOperationV128Cmp.\n\toperationKindV128Cmp\n\t// operationKindV128AddSat is the Kind for NewOperationV128AddSat.\n\toperationKindV128AddSat\n\t// operationKindV128SubSat is the Kind for NewOperationV128SubSat.\n\toperationKindV128SubSat\n\t// operationKindV128Mul is the Kind for NewOperationV128Mul.\n\toperationKindV128Mul\n\t// operationKindV128Div is the Kind for NewOperationV128Div.\n\toperationKindV128Div\n\t// operationKindV128Neg is the Kind for NewOperationV128Neg.\n\toperationKindV128Neg\n\t// operationKindV128Sqrt is the Kind for NewOperationV128Sqrt.\n\toperationKindV128Sqrt\n\t// operationKindV128Abs is the Kind for NewOperationV128Abs.\n\toperationKindV128Abs\n\t// operationKindV128Popcnt is the Kind for NewOperationV128Popcnt.\n\toperationKindV128Popcnt\n\t// operationKindV128Min is the Kind for NewOperationV128Min.\n\toperationKindV128Min\n\t// operationKindV128Max is the Kind for NewOperationV128Max.\n\toperationKindV128Max\n\t// operationKindV128AvgrU is the Kind for NewOperationV128AvgrU.\n\toperationKindV128AvgrU\n\t// operationKindV128Pmin is the Kind for NewOperationV128Pmin.\n\toperationKindV128Pmin\n\t// operationKindV128Pmax is the Kind for NewOperationV128Pmax.\n\toperationKindV128Pmax\n\t// operationKindV128Ceil is the Kind for NewOperationV128Ceil.\n\toperationKindV128Ceil\n\t// operationKindV128Floor is the Kind for NewOperationV128Floor.\n\toperationKindV128Floor\n\t// operationKindV128Trunc is the Kind for NewOperationV128Trunc.\n\toperationKindV128Trunc\n\t// operationKindV128Nearest is the Kind for NewOperationV128Nearest.\n\toperationKindV128Nearest\n\t// operationKindV128Extend is the Kind for NewOperationV128Extend.\n\toperationKindV128Extend\n\t// operationKindV128ExtMul is the Kind for NewOperationV128ExtMul.\n\toperationKindV128ExtMul\n\t// operationKindV128Q15mulrSatS is the Kind for NewOperationV128Q15mulrSatS.\n\toperationKindV128Q15mulrSatS\n\t// operationKindV128ExtAddPairwise is the Kind for NewOperationV128ExtAddPairwise.\n\toperationKindV128ExtAddPairwise\n\t// operationKindV128FloatPromote is the Kind for NewOperationV128FloatPromote.\n\toperationKindV128FloatPromote\n\t// operationKindV128FloatDemote is the Kind for NewOperationV128FloatDemote.\n\toperationKindV128FloatDemote\n\t// operationKindV128FConvertFromI is the Kind for NewOperationV128FConvertFromI.\n\toperationKindV128FConvertFromI\n\t// operationKindV128Dot is the Kind for NewOperationV128Dot.\n\toperationKindV128Dot\n\t// operationKindV128Narrow is the Kind for NewOperationV128Narrow.\n\toperationKindV128Narrow\n\t// operationKindV128ITruncSatFromF is the Kind for NewOperationV128ITruncSatFromF.\n\toperationKindV128ITruncSatFromF\n\n\t// operationKindBuiltinFunctionCheckExitCode is the Kind for NewOperationBuiltinFunctionCheckExitCode.\n\toperationKindBuiltinFunctionCheckExitCode\n\n\t// operationKindAtomicMemoryWait is the kind for NewOperationAtomicMemoryWait.\n\toperationKindAtomicMemoryWait\n\t// operationKindAtomicMemoryNotify is the kind for NewOperationAtomicMemoryNotify.\n\toperationKindAtomicMemoryNotify\n\t// operationKindAtomicFence is the kind for NewOperationAtomicFence.\n\toperationKindAtomicFence\n\t// operationKindAtomicLoad is the kind for NewOperationAtomicLoad.\n\toperationKindAtomicLoad\n\t// operationKindAtomicLoad8 is the kind for NewOperationAtomicLoad8.\n\toperationKindAtomicLoad8\n\t// operationKindAtomicLoad16 is the kind for NewOperationAtomicLoad16.\n\toperationKindAtomicLoad16\n\t// operationKindAtomicStore is the kind for NewOperationAtomicStore.\n\toperationKindAtomicStore\n\t// operationKindAtomicStore8 is the kind for NewOperationAtomicStore8.\n\toperationKindAtomicStore8\n\t// operationKindAtomicStore16 is the kind for NewOperationAtomicStore16.\n\toperationKindAtomicStore16\n\n\t// operationKindAtomicRMW is the kind for NewOperationAtomicRMW.\n\toperationKindAtomicRMW\n\t// operationKindAtomicRMW8 is the kind for NewOperationAtomicRMW8.\n\toperationKindAtomicRMW8\n\t// operationKindAtomicRMW16 is the kind for NewOperationAtomicRMW16.\n\toperationKindAtomicRMW16\n\n\t// operationKindAtomicRMWCmpxchg is the kind for NewOperationAtomicRMWCmpxchg.\n\toperationKindAtomicRMWCmpxchg\n\t// operationKindAtomicRMW8Cmpxchg is the kind for NewOperationAtomicRMW8Cmpxchg.\n\toperationKindAtomicRMW8Cmpxchg\n\t// operationKindAtomicRMW16Cmpxchg is the kind for NewOperationAtomicRMW16Cmpxchg.\n\toperationKindAtomicRMW16Cmpxchg\n\n\t// operationKindTailCallReturnCall is the Kind for newOperationTailCallReturnCall.\n\toperationKindTailCallReturnCall\n\t// operationKindTailCallReturnCallIndirect is the Kind for newOperationKindTailCallReturnCallIndirect.\n\toperationKindTailCallReturnCallIndirect\n\n\t// operationKindEnd is always placed at the bottom of this iota definition to be used in the test.\n\toperationKindEnd\n)\n\n// NewOperationBuiltinFunctionCheckExitCode is a constructor for unionOperation with Kind operationKindBuiltinFunctionCheckExitCode.\n//\n// OperationBuiltinFunctionCheckExitCode corresponds to the instruction to check the api.Module is already closed due to\n// context.DeadlineExceeded, context.Canceled, or the explicit call of CloseWithExitCode on api.Module.\nfunc newOperationBuiltinFunctionCheckExitCode() unionOperation {\n\treturn unionOperation{Kind: operationKindBuiltinFunctionCheckExitCode}\n}\n\n// label is the unique identifier for each block in a single function in interpreterir\n// where \"block\" consists of multiple operations, and must End with branching operations\n// (e.g. operationKindBr or operationKindBrIf).\ntype label uint64\n\n// Kind returns the labelKind encoded in this label.\nfunc (l label) Kind() labelKind {\n\treturn labelKind(uint32(l))\n}\n\n// FrameID returns the frame id encoded in this label.\nfunc (l label) FrameID() int {\n\treturn int(uint32(l >> 32))\n}\n\n// NewLabel is a constructor for a label.\nfunc newLabel(kind labelKind, frameID uint32) label {\n\treturn label(kind) | label(frameID)<<32\n}\n\n// String implements fmt.Stringer.\nfunc (l label) String() (ret string) {\n\tframeID := l.FrameID()\n\tswitch l.Kind() {\n\tcase labelKindHeader:\n\t\tret = fmt.Sprintf(\".L%d\", frameID)\n\tcase labelKindElse:\n\t\tret = fmt.Sprintf(\".L%d_else\", frameID)\n\tcase labelKindContinuation:\n\t\tret = fmt.Sprintf(\".L%d_cont\", frameID)\n\tcase labelKindReturn:\n\t\treturn \".return\"\n\t}\n\treturn\n}\n\nfunc (l label) IsReturnTarget() bool {\n\treturn l.Kind() == labelKindReturn\n}\n\n// labelKind is the Kind of the label.\ntype labelKind = byte\n\nconst (\n\t// labelKindHeader is the header for various blocks. For example, the \"then\" block of\n\t// wasm.OpcodeIfName in Wasm has the label of this Kind.\n\tlabelKindHeader labelKind = iota\n\t// labelKindElse is the Kind of label for \"else\" block of wasm.OpcodeIfName in Wasm.\n\tlabelKindElse\n\t// labelKindContinuation is the Kind of label which is the continuation of blocks.\n\t// For example, for wasm text like\n\t// (func\n\t//   ....\n\t//   (if (local.get 0) (then (nop)) (else (nop)))\n\t//   return\n\t// )\n\t// we have the continuation block (of if-block) corresponding to \"return\" opcode.\n\tlabelKindContinuation\n\tlabelKindReturn\n\tlabelKindNum\n)\n\n// unionOperation implements Operation and is the compilation (engine.lowerIR) result of a interpreterir.Operation.\n//\n// Not all operations result in a unionOperation, e.g. interpreterir.OperationI32ReinterpretFromF32, and some operations are\n// more complex than others, e.g. interpreterir.NewOperationBrTable.\n//\n// Note: This is a form of union type as it can store fields needed for any operation. Hence, most fields are opaque and\n// only relevant when in context of its kind.\ntype unionOperation struct {\n\t// Kind determines how to interpret the other fields in this struct.\n\tKind   operationKind\n\tB1, B2 byte\n\tB3     bool\n\tU1, U2 uint64\n\tU3     uint64\n\tUs     []uint64\n}\n\n// String implements fmt.Stringer.\nfunc (o unionOperation) String() string {\n\tswitch o.Kind {\n\tcase operationKindUnreachable,\n\t\toperationKindSelect,\n\t\toperationKindMemorySize,\n\t\toperationKindMemoryGrow,\n\t\toperationKindI32WrapFromI64,\n\t\toperationKindF32DemoteFromF64,\n\t\toperationKindF64PromoteFromF32,\n\t\toperationKindI32ReinterpretFromF32,\n\t\toperationKindI64ReinterpretFromF64,\n\t\toperationKindF32ReinterpretFromI32,\n\t\toperationKindF64ReinterpretFromI64,\n\t\toperationKindSignExtend32From8,\n\t\toperationKindSignExtend32From16,\n\t\toperationKindSignExtend64From8,\n\t\toperationKindSignExtend64From16,\n\t\toperationKindSignExtend64From32,\n\t\toperationKindMemoryInit,\n\t\toperationKindDataDrop,\n\t\toperationKindMemoryCopy,\n\t\toperationKindMemoryFill,\n\t\toperationKindTableInit,\n\t\toperationKindElemDrop,\n\t\toperationKindTableCopy,\n\t\toperationKindRefFunc,\n\t\toperationKindTableGet,\n\t\toperationKindTableSet,\n\t\toperationKindTableSize,\n\t\toperationKindTableGrow,\n\t\toperationKindTableFill,\n\t\toperationKindBuiltinFunctionCheckExitCode:\n\t\treturn o.Kind.String()\n\n\tcase operationKindCall,\n\t\toperationKindGlobalGet,\n\t\toperationKindGlobalSet:\n\t\treturn fmt.Sprintf(\"%s %d\", o.Kind, o.B1)\n\n\tcase operationKindLabel:\n\t\treturn label(o.U1).String()\n\n\tcase operationKindBr:\n\t\treturn fmt.Sprintf(\"%s %s\", o.Kind, label(o.U1).String())\n\n\tcase operationKindBrIf:\n\t\tthenTarget := label(o.U1)\n\t\telseTarget := label(o.U2)\n\t\treturn fmt.Sprintf(\"%s %s, %s\", o.Kind, thenTarget, elseTarget)\n\n\tcase operationKindBrTable:\n\t\tvar targets []string\n\t\tvar defaultLabel label\n\t\tif len(o.Us) > 0 {\n\t\t\ttargets = make([]string, len(o.Us)-1)\n\t\t\tfor i, t := range o.Us[1:] {\n\t\t\t\ttargets[i] = label(t).String()\n\t\t\t}\n\t\t\tdefaultLabel = label(o.Us[0])\n\t\t}\n\t\treturn fmt.Sprintf(\"%s [%s] %s\", o.Kind, strings.Join(targets, \",\"), defaultLabel)\n\n\tcase operationKindCallIndirect:\n\t\treturn fmt.Sprintf(\"%s: type=%d, table=%d\", o.Kind, o.U1, o.U2)\n\n\tcase operationKindDrop:\n\t\tstart := int64(o.U1)\n\t\tend := int64(o.U2)\n\t\treturn fmt.Sprintf(\"%s %d..%d\", o.Kind, start, end)\n\n\tcase operationKindPick, operationKindSet:\n\t\treturn fmt.Sprintf(\"%s %d (is_vector=%v)\", o.Kind, o.U1, o.B3)\n\n\tcase operationKindLoad, operationKindStore:\n\t\treturn fmt.Sprintf(\"%s.%s (align=%d, offset=%d)\", unsignedType(o.B1), o.Kind, o.U1, o.U2)\n\n\tcase operationKindLoad8,\n\t\toperationKindLoad16:\n\t\treturn fmt.Sprintf(\"%s.%s (align=%d, offset=%d)\", signedType(o.B1), o.Kind, o.U1, o.U2)\n\n\tcase operationKindStore8,\n\t\toperationKindStore16,\n\t\toperationKindStore32:\n\t\treturn fmt.Sprintf(\"%s (align=%d, offset=%d)\", o.Kind, o.U1, o.U2)\n\n\tcase operationKindLoad32:\n\t\tvar t string\n\t\tif o.B1 == 1 {\n\t\t\tt = \"i64\"\n\t\t} else {\n\t\t\tt = \"u64\"\n\t\t}\n\t\treturn fmt.Sprintf(\"%s.%s (align=%d, offset=%d)\", t, o.Kind, o.U1, o.U2)\n\n\tcase operationKindEq,\n\t\toperationKindNe,\n\t\toperationKindAdd,\n\t\toperationKindSub,\n\t\toperationKindMul:\n\t\treturn fmt.Sprintf(\"%s.%s\", unsignedType(o.B1), o.Kind)\n\n\tcase operationKindEqz,\n\t\toperationKindClz,\n\t\toperationKindCtz,\n\t\toperationKindPopcnt,\n\t\toperationKindAnd,\n\t\toperationKindOr,\n\t\toperationKindXor,\n\t\toperationKindShl,\n\t\toperationKindRotl,\n\t\toperationKindRotr:\n\t\treturn fmt.Sprintf(\"%s.%s\", unsignedInt(o.B1), o.Kind)\n\n\tcase operationKindRem, operationKindShr:\n\t\treturn fmt.Sprintf(\"%s.%s\", signedInt(o.B1), o.Kind)\n\n\tcase operationKindLt,\n\t\toperationKindGt,\n\t\toperationKindLe,\n\t\toperationKindGe,\n\t\toperationKindDiv:\n\t\treturn fmt.Sprintf(\"%s.%s\", signedType(o.B1), o.Kind)\n\n\tcase operationKindAbs,\n\t\toperationKindNeg,\n\t\toperationKindCeil,\n\t\toperationKindFloor,\n\t\toperationKindTrunc,\n\t\toperationKindNearest,\n\t\toperationKindSqrt,\n\t\toperationKindMin,\n\t\toperationKindMax,\n\t\toperationKindCopysign:\n\t\treturn fmt.Sprintf(\"%s.%s\", float(o.B1), o.Kind)\n\n\tcase operationKindConstI32,\n\t\toperationKindConstI64:\n\t\treturn fmt.Sprintf(\"%s %#x\", o.Kind, o.U1)\n\n\tcase operationKindConstF32:\n\t\treturn fmt.Sprintf(\"%s %f\", o.Kind, math.Float32frombits(uint32(o.U1)))\n\tcase operationKindConstF64:\n\t\treturn fmt.Sprintf(\"%s %f\", o.Kind, math.Float64frombits(o.U1))\n\n\tcase operationKindITruncFromF:\n\t\treturn fmt.Sprintf(\"%s.%s.%s (non_trapping=%v)\", signedInt(o.B2), o.Kind, float(o.B1), o.B3)\n\tcase operationKindFConvertFromI:\n\t\treturn fmt.Sprintf(\"%s.%s.%s\", float(o.B2), o.Kind, signedInt(o.B1))\n\tcase operationKindExtend:\n\t\tvar in, out string\n\t\tif o.B3 {\n\t\t\tin = \"i32\"\n\t\t\tout = \"i64\"\n\t\t} else {\n\t\t\tin = \"u32\"\n\t\t\tout = \"u64\"\n\t\t}\n\t\treturn fmt.Sprintf(\"%s.%s.%s\", out, o.Kind, in)\n\n\tcase operationKindV128Const:\n\t\treturn fmt.Sprintf(\"%s [%#x, %#x]\", o.Kind, o.U1, o.U2)\n\tcase operationKindV128Add,\n\t\toperationKindV128Sub:\n\t\treturn fmt.Sprintf(\"%s (shape=%s)\", o.Kind, shapeName(o.B1))\n\tcase operationKindV128Load,\n\t\toperationKindV128LoadLane,\n\t\toperationKindV128Store,\n\t\toperationKindV128StoreLane,\n\t\toperationKindV128ExtractLane,\n\t\toperationKindV128ReplaceLane,\n\t\toperationKindV128Splat,\n\t\toperationKindV128Shuffle,\n\t\toperationKindV128Swizzle,\n\t\toperationKindV128AnyTrue,\n\t\toperationKindV128AllTrue,\n\t\toperationKindV128BitMask,\n\t\toperationKindV128And,\n\t\toperationKindV128Not,\n\t\toperationKindV128Or,\n\t\toperationKindV128Xor,\n\t\toperationKindV128Bitselect,\n\t\toperationKindV128AndNot,\n\t\toperationKindV128Shl,\n\t\toperationKindV128Shr,\n\t\toperationKindV128Cmp,\n\t\toperationKindV128AddSat,\n\t\toperationKindV128SubSat,\n\t\toperationKindV128Mul,\n\t\toperationKindV128Div,\n\t\toperationKindV128Neg,\n\t\toperationKindV128Sqrt,\n\t\toperationKindV128Abs,\n\t\toperationKindV128Popcnt,\n\t\toperationKindV128Min,\n\t\toperationKindV128Max,\n\t\toperationKindV128AvgrU,\n\t\toperationKindV128Pmin,\n\t\toperationKindV128Pmax,\n\t\toperationKindV128Ceil,\n\t\toperationKindV128Floor,\n\t\toperationKindV128Trunc,\n\t\toperationKindV128Nearest,\n\t\toperationKindV128Extend,\n\t\toperationKindV128ExtMul,\n\t\toperationKindV128Q15mulrSatS,\n\t\toperationKindV128ExtAddPairwise,\n\t\toperationKindV128FloatPromote,\n\t\toperationKindV128FloatDemote,\n\t\toperationKindV128FConvertFromI,\n\t\toperationKindV128Dot,\n\t\toperationKindV128Narrow:\n\t\treturn o.Kind.String()\n\n\tcase operationKindV128ITruncSatFromF:\n\t\tif o.B3 {\n\t\t\treturn fmt.Sprintf(\"%s.%sS\", o.Kind, shapeName(o.B1))\n\t\t} else {\n\t\t\treturn fmt.Sprintf(\"%s.%sU\", o.Kind, shapeName(o.B1))\n\t\t}\n\n\tcase operationKindAtomicMemoryWait,\n\t\toperationKindAtomicMemoryNotify,\n\t\toperationKindAtomicFence,\n\t\toperationKindAtomicLoad,\n\t\toperationKindAtomicLoad8,\n\t\toperationKindAtomicLoad16,\n\t\toperationKindAtomicStore,\n\t\toperationKindAtomicStore8,\n\t\toperationKindAtomicStore16,\n\t\toperationKindAtomicRMW,\n\t\toperationKindAtomicRMW8,\n\t\toperationKindAtomicRMW16,\n\t\toperationKindAtomicRMWCmpxchg,\n\t\toperationKindAtomicRMW8Cmpxchg,\n\t\toperationKindAtomicRMW16Cmpxchg:\n\t\treturn o.Kind.String()\n\n\tcase operationKindTailCallReturnCall:\n\t\treturn fmt.Sprintf(\"%s %d %s\", o.Kind, o.U1, label(o.U2).String())\n\n\tcase operationKindTailCallReturnCallIndirect:\n\t\treturn fmt.Sprintf(\"%s %d %d\", o.Kind, o.U1, o.U2)\n\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"TODO: %v\", o.Kind))\n\t}\n}\n\n// NewOperationUnreachable is a constructor for unionOperation with operationKindUnreachable\n//\n// This corresponds to wasm.OpcodeUnreachable.\n//\n// The engines are expected to exit the execution with wasmruntime.ErrRuntimeUnreachable error.\nfunc newOperationUnreachable() unionOperation {\n\treturn unionOperation{Kind: operationKindUnreachable}\n}\n\n// NewOperationLabel is a constructor for unionOperation with operationKindLabel.\n//\n// This is used to inform the engines of the beginning of a label.\nfunc newOperationLabel(label label) unionOperation {\n\treturn unionOperation{Kind: operationKindLabel, U1: uint64(label)}\n}\n\n// NewOperationBr is a constructor for unionOperation with operationKindBr.\n//\n// The engines are expected to branch into U1 label.\nfunc newOperationBr(target label) unionOperation {\n\treturn unionOperation{Kind: operationKindBr, U1: uint64(target)}\n}\n\n// NewOperationBrIf is a constructor for unionOperation with operationKindBrIf.\n//\n// The engines are expected to pop a value and branch into U1 label if the value equals 1.\n// Otherwise, the code branches into U2 label.\nfunc newOperationBrIf(thenTarget, elseTarget label, thenDrop inclusiveRange) unionOperation {\n\treturn unionOperation{\n\t\tKind: operationKindBrIf,\n\t\tU1:   uint64(thenTarget),\n\t\tU2:   uint64(elseTarget),\n\t\tU3:   thenDrop.AsU64(),\n\t}\n}\n\n// NewOperationBrTable is a constructor for unionOperation with operationKindBrTable.\n//\n// This corresponds to wasm.OpcodeBrTableName except that the label\n// here means the interpreterir level, not the ones of Wasm.\n//\n// The engines are expected to do the br_table operation based on the default (Us[len(Us)-1], Us[len(Us)-2]) and\n// targets (Us[:len(Us)-1], Rs[:len(Us)-1]). More precisely, this pops a value from the stack (called \"index\")\n// and decides which branch we go into next based on the value.\n//\n// For example, assume we have operations like {default: L_DEFAULT, targets: [L0, L1, L2]}.\n// If \"index\" >= len(defaults), then branch into the L_DEFAULT label.\n// Otherwise, we enter label of targets[index].\nfunc newOperationBrTable(targetLabelsAndRanges []uint64) unionOperation {\n\treturn unionOperation{\n\t\tKind: operationKindBrTable,\n\t\tUs:   targetLabelsAndRanges,\n\t}\n}\n\n// NewOperationCall is a constructor for unionOperation with operationKindCall.\n//\n// This corresponds to wasm.OpcodeCallName, and engines are expected to\n// enter into a function whose index equals OperationCall.FunctionIndex.\nfunc newOperationCall(functionIndex uint32) unionOperation {\n\treturn unionOperation{Kind: operationKindCall, U1: uint64(functionIndex)}\n}\n\n// NewOperationCallIndirect implements Operation.\n//\n// This corresponds to wasm.OpcodeCallIndirectName, and engines are expected to\n// consume the one value from the top of stack (called \"offset\"),\n// and make a function call against the function whose function address equals\n// Tables[OperationCallIndirect.TableIndex][offset].\n//\n// Note: This is called indirect function call in the sense that the target function is indirectly\n// determined by the current state (top value) of the stack.\n// Therefore, two checks are performed at runtime before entering the target function:\n// 1) whether \"offset\" exceeds the length of table Tables[OperationCallIndirect.TableIndex].\n// 2) whether the type of the function table[offset] matches the function type specified by OperationCallIndirect.TypeIndex.\nfunc newOperationCallIndirect(typeIndex, tableIndex uint32) unionOperation {\n\treturn unionOperation{Kind: operationKindCallIndirect, U1: uint64(typeIndex), U2: uint64(tableIndex)}\n}\n\n// inclusiveRange is the range which spans across the value stack starting from the top to the bottom, and\n// both boundary are included in the range.\ntype inclusiveRange struct {\n\tStart, End int32\n}\n\n// AsU64 is be used to convert inclusiveRange to uint64 so that it can be stored in unionOperation.\nfunc (i inclusiveRange) AsU64() uint64 {\n\treturn uint64(uint32(i.Start))<<32 | uint64(uint32(i.End))\n}\n\n// inclusiveRangeFromU64 retrieves inclusiveRange from the given uint64 which is stored in unionOperation.\nfunc inclusiveRangeFromU64(v uint64) inclusiveRange {\n\treturn inclusiveRange{\n\t\tStart: int32(uint32(v >> 32)),\n\t\tEnd:   int32(uint32(v)),\n\t}\n}\n\n// nopinclusiveRange is inclusiveRange which corresponds to no-operation.\nvar nopinclusiveRange = inclusiveRange{Start: -1, End: -1}\n\n// NewOperationDrop is a constructor for unionOperation with operationKindDrop.\n//\n// The engines are expected to discard the values selected by NewOperationDrop.Depth which\n// starts from the top of the stack to the bottom.\n//\n// depth spans across the uint64 value stack at runtime to be dropped by this operation.\nfunc newOperationDrop(depth inclusiveRange) unionOperation {\n\treturn unionOperation{Kind: operationKindDrop, U1: depth.AsU64()}\n}\n\n// NewOperationSelect is a constructor for unionOperation with operationKindSelect.\n//\n// This corresponds to wasm.OpcodeSelect.\n//\n// The engines are expected to pop three values, say [..., x2, x1, c], then if the value \"c\" equals zero,\n// \"x1\" is pushed back onto the stack and, otherwise \"x2\" is pushed back.\n//\n// isTargetVector true if the selection target value's type is wasm.ValueTypeV128.\nfunc newOperationSelect(isTargetVector bool) unionOperation {\n\treturn unionOperation{Kind: operationKindSelect, B3: isTargetVector}\n}\n\n// NewOperationPick is a constructor for unionOperation with operationKindPick.\n//\n// The engines are expected to copy a value pointed by depth, and push the\n// copied value onto the top of the stack.\n//\n// depth is the location of the pick target in the uint64 value stack at runtime.\n// If isTargetVector=true, this points to the location of the lower 64-bits of the vector.\nfunc newOperationPick(depth int, isTargetVector bool) unionOperation {\n\treturn unionOperation{Kind: operationKindPick, U1: uint64(depth), B3: isTargetVector}\n}\n\n// NewOperationSet is a constructor for unionOperation with operationKindSet.\n//\n// The engines are expected to set the top value of the stack to the location specified by\n// depth.\n//\n// depth is the location of the set target in the uint64 value stack at runtime.\n// If isTargetVector=true, this points the location of the lower 64-bits of the vector.\nfunc newOperationSet(depth int, isTargetVector bool) unionOperation {\n\treturn unionOperation{Kind: operationKindSet, U1: uint64(depth), B3: isTargetVector}\n}\n\n// NewOperationGlobalGet is a constructor for unionOperation with operationKindGlobalGet.\n//\n// The engines are expected to read the global value specified by OperationGlobalGet.Index,\n// and push the copy of the value onto the stack.\n//\n// See wasm.OpcodeGlobalGet.\nfunc newOperationGlobalGet(index uint32) unionOperation {\n\treturn unionOperation{Kind: operationKindGlobalGet, U1: uint64(index)}\n}\n\n// NewOperationGlobalSet is a constructor for unionOperation with operationKindGlobalSet.\n//\n// The engines are expected to consume the value from the top of the stack,\n// and write the value into the global specified by OperationGlobalSet.Index.\n//\n// See wasm.OpcodeGlobalSet.\nfunc newOperationGlobalSet(index uint32) unionOperation {\n\treturn unionOperation{Kind: operationKindGlobalSet, U1: uint64(index)}\n}\n\n// memoryArg is the \"memarg\" to all memory instructions.\n//\n// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#memory-instructions%E2%91%A0\ntype memoryArg struct {\n\t// Alignment the expected alignment (expressed as the exponent of a power of 2). Default to the natural alignment.\n\t//\n\t// \"Natural alignment\" is defined here as the smallest power of two that can hold the size of the value type. Ex\n\t// wasm.ValueTypeI64 is encoded in 8 little-endian bytes. 2^3 = 8, so the natural alignment is three.\n\tAlignment uint32\n\n\t// Offset is the address offset added to the instruction's dynamic address operand, yielding a 33-bit effective\n\t// address that is the zero-based index at which the memory is accessed. Default to zero.\n\tOffset uint32\n}\n\n// NewOperationLoad is a constructor for unionOperation with operationKindLoad.\n//\n// This corresponds to wasm.OpcodeI32LoadName wasm.OpcodeI64LoadName wasm.OpcodeF32LoadName and wasm.OpcodeF64LoadName.\n//\n// The engines are expected to check the boundary of memory length, and exit the execution if this exceeds the boundary,\n// otherwise load the corresponding value following the semantics of the corresponding WebAssembly instruction.\nfunc newOperationLoad(unsignedType unsignedType, arg memoryArg) unionOperation {\n\treturn unionOperation{Kind: operationKindLoad, B1: byte(unsignedType), U1: uint64(arg.Alignment), U2: uint64(arg.Offset)}\n}\n\n// NewOperationLoad8 is a constructor for unionOperation with operationKindLoad8.\n//\n// This corresponds to wasm.OpcodeI32Load8SName wasm.OpcodeI32Load8UName wasm.OpcodeI64Load8SName wasm.OpcodeI64Load8UName.\n//\n// The engines are expected to check the boundary of memory length, and exit the execution if this exceeds the boundary,\n// otherwise load the corresponding value following the semantics of the corresponding WebAssembly instruction.\nfunc newOperationLoad8(signedInt signedInt, arg memoryArg) unionOperation {\n\treturn unionOperation{Kind: operationKindLoad8, B1: byte(signedInt), U1: uint64(arg.Alignment), U2: uint64(arg.Offset)}\n}\n\n// NewOperationLoad16 is a constructor for unionOperation with operationKindLoad16.\n//\n// This corresponds to wasm.OpcodeI32Load16SName wasm.OpcodeI32Load16UName wasm.OpcodeI64Load16SName wasm.OpcodeI64Load16UName.\n//\n// The engines are expected to check the boundary of memory length, and exit the execution if this exceeds the boundary,\n// otherwise load the corresponding value following the semantics of the corresponding WebAssembly instruction.\nfunc newOperationLoad16(signedInt signedInt, arg memoryArg) unionOperation {\n\treturn unionOperation{Kind: operationKindLoad16, B1: byte(signedInt), U1: uint64(arg.Alignment), U2: uint64(arg.Offset)}\n}\n\n// NewOperationLoad32 is a constructor for unionOperation with operationKindLoad32.\n//\n// This corresponds to wasm.OpcodeI64Load32SName wasm.OpcodeI64Load32UName.\n//\n// The engines are expected to check the boundary of memory length, and exit the execution if this exceeds the boundary,\n// otherwise load the corresponding value following the semantics of the corresponding WebAssembly instruction.\nfunc newOperationLoad32(signed bool, arg memoryArg) unionOperation {\n\tsigB := byte(0)\n\tif signed {\n\t\tsigB = 1\n\t}\n\treturn unionOperation{Kind: operationKindLoad32, B1: sigB, U1: uint64(arg.Alignment), U2: uint64(arg.Offset)}\n}\n\n// NewOperationStore is a constructor for unionOperation with operationKindStore.\n//\n// # This corresponds to wasm.OpcodeI32StoreName wasm.OpcodeI64StoreName wasm.OpcodeF32StoreName wasm.OpcodeF64StoreName\n//\n// The engines are expected to check the boundary of memory length, and exit the execution if this exceeds the boundary,\n// otherwise store the corresponding value following the semantics of the corresponding WebAssembly instruction.\nfunc newOperationStore(unsignedType unsignedType, arg memoryArg) unionOperation {\n\treturn unionOperation{Kind: operationKindStore, B1: byte(unsignedType), U1: uint64(arg.Alignment), U2: uint64(arg.Offset)}\n}\n\n// NewOperationStore8 is a constructor for unionOperation with operationKindStore8.\n//\n// # This corresponds to wasm.OpcodeI32Store8Name wasm.OpcodeI64Store8Name\n//\n// The engines are expected to check the boundary of memory length, and exit the execution if this exceeds the boundary,\n// otherwise store the corresponding value following the semantics of the corresponding WebAssembly instruction.\nfunc newOperationStore8(arg memoryArg) unionOperation {\n\treturn unionOperation{Kind: operationKindStore8, U1: uint64(arg.Alignment), U2: uint64(arg.Offset)}\n}\n\n// NewOperationStore16 is a constructor for unionOperation with operationKindStore16.\n//\n// # This corresponds to wasm.OpcodeI32Store16Name wasm.OpcodeI64Store16Name\n//\n// The engines are expected to check the boundary of memory length, and exit the execution if this exceeds the boundary,\n// otherwise store the corresponding value following the semantics of the corresponding WebAssembly instruction.\nfunc newOperationStore16(arg memoryArg) unionOperation {\n\treturn unionOperation{Kind: operationKindStore16, U1: uint64(arg.Alignment), U2: uint64(arg.Offset)}\n}\n\n// NewOperationStore32 is a constructor for unionOperation with operationKindStore32.\n//\n// # This corresponds to wasm.OpcodeI64Store32Name\n//\n// The engines are expected to check the boundary of memory length, and exit the execution if this exceeds the boundary,\n// otherwise store the corresponding value following the semantics of the corresponding WebAssembly instruction.\nfunc newOperationStore32(arg memoryArg) unionOperation {\n\treturn unionOperation{Kind: operationKindStore32, U1: uint64(arg.Alignment), U2: uint64(arg.Offset)}\n}\n\n// NewOperationMemorySize is a constructor for unionOperation with operationKindMemorySize.\n//\n// This corresponds to wasm.OpcodeMemorySize.\n//\n// The engines are expected to push the current page size of the memory onto the stack.\nfunc newOperationMemorySize() unionOperation {\n\treturn unionOperation{Kind: operationKindMemorySize}\n}\n\n// NewOperationMemoryGrow is a constructor for unionOperation with operationKindMemoryGrow.\n//\n// This corresponds to wasm.OpcodeMemoryGrow.\n//\n// The engines are expected to pop one value from the top of the stack, then\n// execute wasm.MemoryInstance Grow with the value, and push the previous\n// page size of the memory onto the stack.\nfunc newOperationMemoryGrow() unionOperation {\n\treturn unionOperation{Kind: operationKindMemoryGrow}\n}\n\n// NewOperationConstI32 is a constructor for unionOperation with OperationConstI32.\n//\n// This corresponds to wasm.OpcodeI32Const.\nfunc newOperationConstI32(value uint32) unionOperation {\n\treturn unionOperation{Kind: operationKindConstI32, U1: uint64(value)}\n}\n\n// NewOperationConstI64 is a constructor for unionOperation with OperationConstI64.\n//\n// This corresponds to wasm.OpcodeI64Const.\nfunc newOperationConstI64(value uint64) unionOperation {\n\treturn unionOperation{Kind: operationKindConstI64, U1: value}\n}\n\n// NewOperationConstF32 is a constructor for unionOperation with OperationConstF32.\n//\n// This corresponds to wasm.OpcodeF32Const.\nfunc newOperationConstF32(value float32) unionOperation {\n\treturn unionOperation{Kind: operationKindConstF32, U1: uint64(math.Float32bits(value))}\n}\n\n// NewOperationConstF64 is a constructor for unionOperation with OperationConstF64.\n//\n// This corresponds to wasm.OpcodeF64Const.\nfunc newOperationConstF64(value float64) unionOperation {\n\treturn unionOperation{Kind: operationKindConstF64, U1: math.Float64bits(value)}\n}\n\n// NewOperationEq is a constructor for unionOperation with operationKindEq.\n//\n// This corresponds to wasm.OpcodeI32EqName wasm.OpcodeI64EqName wasm.OpcodeF32EqName wasm.OpcodeF64EqName\nfunc newOperationEq(b unsignedType) unionOperation {\n\treturn unionOperation{Kind: operationKindEq, B1: byte(b)}\n}\n\n// NewOperationNe is a constructor for unionOperation with operationKindNe.\n//\n// This corresponds to wasm.OpcodeI32NeName wasm.OpcodeI64NeName wasm.OpcodeF32NeName wasm.OpcodeF64NeName\nfunc newOperationNe(b unsignedType) unionOperation {\n\treturn unionOperation{Kind: operationKindNe, B1: byte(b)}\n}\n\n// NewOperationEqz is a constructor for unionOperation with operationKindEqz.\n//\n// This corresponds to wasm.OpcodeI32EqzName wasm.OpcodeI64EqzName\nfunc newOperationEqz(b unsignedInt) unionOperation {\n\treturn unionOperation{Kind: operationKindEqz, B1: byte(b)}\n}\n\n// NewOperationLt is a constructor for unionOperation with operationKindLt.\n//\n// This corresponds to wasm.OpcodeI32LtS wasm.OpcodeI32LtU wasm.OpcodeI64LtS wasm.OpcodeI64LtU wasm.OpcodeF32Lt wasm.OpcodeF64Lt\nfunc newOperationLt(b signedType) unionOperation {\n\treturn unionOperation{Kind: operationKindLt, B1: byte(b)}\n}\n\n// NewOperationGt is a constructor for unionOperation with operationKindGt.\n//\n// This corresponds to wasm.OpcodeI32GtS wasm.OpcodeI32GtU wasm.OpcodeI64GtS wasm.OpcodeI64GtU wasm.OpcodeF32Gt wasm.OpcodeF64Gt\nfunc newOperationGt(b signedType) unionOperation {\n\treturn unionOperation{Kind: operationKindGt, B1: byte(b)}\n}\n\n// NewOperationLe is a constructor for unionOperation with operationKindLe.\n//\n// This corresponds to wasm.OpcodeI32LeS wasm.OpcodeI32LeU wasm.OpcodeI64LeS wasm.OpcodeI64LeU wasm.OpcodeF32Le wasm.OpcodeF64Le\nfunc newOperationLe(b signedType) unionOperation {\n\treturn unionOperation{Kind: operationKindLe, B1: byte(b)}\n}\n\n// NewOperationGe is a constructor for unionOperation with operationKindGe.\n//\n// This corresponds to wasm.OpcodeI32GeS wasm.OpcodeI32GeU wasm.OpcodeI64GeS wasm.OpcodeI64GeU wasm.OpcodeF32Ge wasm.OpcodeF64Ge\n// NewOperationGe is the constructor for OperationGe\nfunc newOperationGe(b signedType) unionOperation {\n\treturn unionOperation{Kind: operationKindGe, B1: byte(b)}\n}\n\n// NewOperationAdd is a constructor for unionOperation with operationKindAdd.\n//\n// This corresponds to wasm.OpcodeI32AddName wasm.OpcodeI64AddName wasm.OpcodeF32AddName wasm.OpcodeF64AddName.\nfunc newOperationAdd(b unsignedType) unionOperation {\n\treturn unionOperation{Kind: operationKindAdd, B1: byte(b)}\n}\n\n// NewOperationSub is a constructor for unionOperation with operationKindSub.\n//\n// This corresponds to wasm.OpcodeI32SubName wasm.OpcodeI64SubName wasm.OpcodeF32SubName wasm.OpcodeF64SubName.\nfunc newOperationSub(b unsignedType) unionOperation {\n\treturn unionOperation{Kind: operationKindSub, B1: byte(b)}\n}\n\n// NewOperationMul is a constructor for unionOperation with wperationKindMul.\n//\n// This corresponds to wasm.OpcodeI32MulName wasm.OpcodeI64MulName wasm.OpcodeF32MulName wasm.OpcodeF64MulName.\n// NewOperationMul is the constructor for OperationMul\nfunc newOperationMul(b unsignedType) unionOperation {\n\treturn unionOperation{Kind: operationKindMul, B1: byte(b)}\n}\n\n// NewOperationClz is a constructor for unionOperation with operationKindClz.\n//\n// This corresponds to wasm.OpcodeI32ClzName wasm.OpcodeI64ClzName.\n//\n// The engines are expected to count up the leading zeros in the\n// current top of the stack, and push the count result.\n// For example, stack of [..., 0x00_ff_ff_ff] results in [..., 8].\n// See wasm.OpcodeI32Clz wasm.OpcodeI64Clz\nfunc newOperationClz(b unsignedInt) unionOperation {\n\treturn unionOperation{Kind: operationKindClz, B1: byte(b)}\n}\n\n// NewOperationCtz is a constructor for unionOperation with operationKindCtz.\n//\n// This corresponds to wasm.OpcodeI32CtzName wasm.OpcodeI64CtzName.\n//\n// The engines are expected to count up the trailing zeros in the\n// current top of the stack, and push the count result.\n// For example, stack of [..., 0xff_ff_ff_00] results in [..., 8].\nfunc newOperationCtz(b unsignedInt) unionOperation {\n\treturn unionOperation{Kind: operationKindCtz, B1: byte(b)}\n}\n\n// NewOperationPopcnt is a constructor for unionOperation with operationKindPopcnt.\n//\n// This corresponds to wasm.OpcodeI32PopcntName wasm.OpcodeI64PopcntName.\n//\n// The engines are expected to count up the number of set bits in the\n// current top of the stack, and push the count result.\n// For example, stack of [..., 0b00_00_00_11] results in [..., 2].\nfunc newOperationPopcnt(b unsignedInt) unionOperation {\n\treturn unionOperation{Kind: operationKindPopcnt, B1: byte(b)}\n}\n\n// NewOperationDiv is a constructor for unionOperation with operationKindDiv.\n//\n// This corresponds to wasm.OpcodeI32DivS wasm.OpcodeI32DivU wasm.OpcodeI64DivS\n//\n//\twasm.OpcodeI64DivU wasm.OpcodeF32Div wasm.OpcodeF64Div.\nfunc newOperationDiv(b signedType) unionOperation {\n\treturn unionOperation{Kind: operationKindDiv, B1: byte(b)}\n}\n\n// NewOperationRem is a constructor for unionOperation with operationKindRem.\n//\n// This corresponds to wasm.OpcodeI32RemS wasm.OpcodeI32RemU wasm.OpcodeI64RemS wasm.OpcodeI64RemU.\n//\n// The engines are expected to perform division on the top\n// two values of integer type on the stack and puts the remainder of the result\n// onto the stack. For example, stack [..., 10, 3] results in [..., 1] where\n// the quotient is discarded.\n// NewOperationRem is the constructor for OperationRem\nfunc newOperationRem(b signedInt) unionOperation {\n\treturn unionOperation{Kind: operationKindRem, B1: byte(b)}\n}\n\n// NewOperationAnd is a constructor for unionOperation with operationKindAnd.\n//\n// # This corresponds to wasm.OpcodeI32AndName wasm.OpcodeI64AndName\n//\n// The engines are expected to perform \"And\" operation on\n// top two values on the stack, and pushes the result.\nfunc newOperationAnd(b unsignedInt) unionOperation {\n\treturn unionOperation{Kind: operationKindAnd, B1: byte(b)}\n}\n\n// NewOperationOr is a constructor for unionOperation with operationKindOr.\n//\n// # This corresponds to wasm.OpcodeI32OrName wasm.OpcodeI64OrName\n//\n// The engines are expected to perform \"Or\" operation on\n// top two values on the stack, and pushes the result.\nfunc newOperationOr(b unsignedInt) unionOperation {\n\treturn unionOperation{Kind: operationKindOr, B1: byte(b)}\n}\n\n// NewOperationXor is a constructor for unionOperation with operationKindXor.\n//\n// # This corresponds to wasm.OpcodeI32XorName wasm.OpcodeI64XorName\n//\n// The engines are expected to perform \"Xor\" operation on\n// top two values on the stack, and pushes the result.\nfunc newOperationXor(b unsignedInt) unionOperation {\n\treturn unionOperation{Kind: operationKindXor, B1: byte(b)}\n}\n\n// NewOperationShl is a constructor for unionOperation with operationKindShl.\n//\n// # This corresponds to wasm.OpcodeI32ShlName wasm.OpcodeI64ShlName\n//\n// The engines are expected to perform \"Shl\" operation on\n// top two values on the stack, and pushes the result.\nfunc newOperationShl(b unsignedInt) unionOperation {\n\treturn unionOperation{Kind: operationKindShl, B1: byte(b)}\n}\n\n// NewOperationShr is a constructor for unionOperation with operationKindShr.\n//\n// # This corresponds to wasm.OpcodeI32ShrSName wasm.OpcodeI32ShrUName wasm.OpcodeI64ShrSName wasm.OpcodeI64ShrUName\n//\n// If OperationShr.Type is signed integer, then, the engines are expected to perform arithmetic right shift on the two\n// top values on the stack, otherwise do the logical right shift.\nfunc newOperationShr(b signedInt) unionOperation {\n\treturn unionOperation{Kind: operationKindShr, B1: byte(b)}\n}\n\n// NewOperationRotl is a constructor for unionOperation with operationKindRotl.\n//\n// # This corresponds to wasm.OpcodeI32RotlName wasm.OpcodeI64RotlName\n//\n// The engines are expected to perform \"Rotl\" operation on\n// top two values on the stack, and pushes the result.\nfunc newOperationRotl(b unsignedInt) unionOperation {\n\treturn unionOperation{Kind: operationKindRotl, B1: byte(b)}\n}\n\n// NewOperationRotr is a constructor for unionOperation with operationKindRotr.\n//\n// # This corresponds to wasm.OpcodeI32RotrName wasm.OpcodeI64RotrName\n//\n// The engines are expected to perform \"Rotr\" operation on\n// top two values on the stack, and pushes the result.\nfunc newOperationRotr(b unsignedInt) unionOperation {\n\treturn unionOperation{Kind: operationKindRotr, B1: byte(b)}\n}\n\n// NewOperationAbs is a constructor for unionOperation with operationKindAbs.\n//\n// This corresponds to wasm.OpcodeF32Abs wasm.OpcodeF64Abs\nfunc newOperationAbs(b float) unionOperation {\n\treturn unionOperation{Kind: operationKindAbs, B1: byte(b)}\n}\n\n// NewOperationNeg is a constructor for unionOperation with operationKindNeg.\n//\n// This corresponds to wasm.OpcodeF32Neg wasm.OpcodeF64Neg\nfunc newOperationNeg(b float) unionOperation {\n\treturn unionOperation{Kind: operationKindNeg, B1: byte(b)}\n}\n\n// NewOperationCeil is a constructor for unionOperation with operationKindCeil.\n//\n// This corresponds to wasm.OpcodeF32CeilName wasm.OpcodeF64CeilName\nfunc newOperationCeil(b float) unionOperation {\n\treturn unionOperation{Kind: operationKindCeil, B1: byte(b)}\n}\n\n// NewOperationFloor is a constructor for unionOperation with operationKindFloor.\n//\n// This corresponds to wasm.OpcodeF32FloorName wasm.OpcodeF64FloorName\nfunc newOperationFloor(b float) unionOperation {\n\treturn unionOperation{Kind: operationKindFloor, B1: byte(b)}\n}\n\n// NewOperationTrunc is a constructor for unionOperation with operationKindTrunc.\n//\n// This corresponds to wasm.OpcodeF32TruncName wasm.OpcodeF64TruncName\nfunc newOperationTrunc(b float) unionOperation {\n\treturn unionOperation{Kind: operationKindTrunc, B1: byte(b)}\n}\n\n// NewOperationNearest is a constructor for unionOperation with operationKindNearest.\n//\n// # This corresponds to wasm.OpcodeF32NearestName wasm.OpcodeF64NearestName\n//\n// Note: this is *not* equivalent to math.Round and instead has the same\n// the semantics of LLVM's rint intrinsic. See https://llvm.org/docs/LangRef.html#llvm-rint-intrinsic.\n// For example, math.Round(-4.5) produces -5 while we want to produce -4.\nfunc newOperationNearest(b float) unionOperation {\n\treturn unionOperation{Kind: operationKindNearest, B1: byte(b)}\n}\n\n// NewOperationSqrt is a constructor for unionOperation with operationKindSqrt.\n//\n// This corresponds to wasm.OpcodeF32SqrtName wasm.OpcodeF64SqrtName\nfunc newOperationSqrt(b float) unionOperation {\n\treturn unionOperation{Kind: operationKindSqrt, B1: byte(b)}\n}\n\n// NewOperationMin is a constructor for unionOperation with operationKindMin.\n//\n// # This corresponds to wasm.OpcodeF32MinName wasm.OpcodeF64MinName\n//\n// The engines are expected to pop two values from the stack, and push back the maximum of\n// these two values onto the stack. For example, stack [..., 100.1, 1.9] results in [..., 1.9].\n//\n// Note: WebAssembly specifies that min/max must always return NaN if one of values is NaN,\n// which is a different behavior different from math.Min.\nfunc newOperationMin(b float) unionOperation {\n\treturn unionOperation{Kind: operationKindMin, B1: byte(b)}\n}\n\n// NewOperationMax is a constructor for unionOperation with operationKindMax.\n//\n// # This corresponds to wasm.OpcodeF32MaxName wasm.OpcodeF64MaxName\n//\n// The engines are expected to pop two values from the stack, and push back the maximum of\n// these two values onto the stack. For example, stack [..., 100.1, 1.9] results in [..., 100.1].\n//\n// Note: WebAssembly specifies that min/max must always return NaN if one of values is NaN,\n// which is a different behavior different from math.Max.\nfunc newOperationMax(b float) unionOperation {\n\treturn unionOperation{Kind: operationKindMax, B1: byte(b)}\n}\n\n// NewOperationCopysign is a constructor for unionOperation with operationKindCopysign.\n//\n// # This corresponds to wasm.OpcodeF32CopysignName wasm.OpcodeF64CopysignName\n//\n// The engines are expected to pop two float values from the stack, and copy the signbit of\n// the first-popped value to the last one.\n// For example, stack [..., 1.213, -5.0] results in [..., -1.213].\nfunc newOperationCopysign(b float) unionOperation {\n\treturn unionOperation{Kind: operationKindCopysign, B1: byte(b)}\n}\n\n// NewOperationI32WrapFromI64 is a constructor for unionOperation with operationKindI32WrapFromI64.\n//\n// This corresponds to wasm.OpcodeI32WrapI64 and equivalent to uint64(uint32(v)) in Go.\n//\n// The engines are expected to replace the 64-bit int on top of the stack\n// with the corresponding 32-bit integer.\nfunc newOperationI32WrapFromI64() unionOperation {\n\treturn unionOperation{Kind: operationKindI32WrapFromI64}\n}\n\n// NewOperationITruncFromF is a constructor for unionOperation with operationKindITruncFromF.\n//\n// This corresponds to\n//\n//\twasm.OpcodeI32TruncF32SName wasm.OpcodeI32TruncF32UName wasm.OpcodeI32TruncF64SName\n//\twasm.OpcodeI32TruncF64UName wasm.OpcodeI64TruncF32SName wasm.OpcodeI64TruncF32UName wasm.OpcodeI64TruncF64SName\n//\twasm.OpcodeI64TruncF64UName. wasm.OpcodeI32TruncSatF32SName wasm.OpcodeI32TruncSatF32UName\n//\twasm.OpcodeI32TruncSatF64SName wasm.OpcodeI32TruncSatF64UName wasm.OpcodeI64TruncSatF32SName\n//\twasm.OpcodeI64TruncSatF32UName wasm.OpcodeI64TruncSatF64SName wasm.OpcodeI64TruncSatF64UName\n//\n// See [1] and [2] for when we encounter undefined behavior in the WebAssembly specification if NewOperationITruncFromF.NonTrapping == false.\n// To summarize, if the source float value is NaN or doesn't fit in the destination range of integers (incl. +=Inf),\n// then the runtime behavior is undefined. In wazero, the engines are expected to exit the execution in these undefined cases with\n// wasmruntime.ErrRuntimeInvalidConversionToInteger error.\n//\n// [1] https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#-hrefop-trunc-umathrmtruncmathsfu_m-n-z for unsigned integers.\n// [2] https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#-hrefop-trunc-smathrmtruncmathsfs_m-n-z for signed integers.\n//\n// nonTrapping true if this conversion is \"nontrapping\" in the sense of the\n// https://github.com/WebAssembly/spec/blob/ce4b6c4d47eb06098cc7ab2e81f24748da822f20/proposals/nontrapping-float-to-int-conversion/Overview.md\nfunc newOperationITruncFromF(inputType float, outputType signedInt, nonTrapping bool) unionOperation {\n\treturn unionOperation{\n\t\tKind: operationKindITruncFromF,\n\t\tB1:   byte(inputType),\n\t\tB2:   byte(outputType),\n\t\tB3:   nonTrapping,\n\t}\n}\n\n// NewOperationFConvertFromI is a constructor for unionOperation with operationKindFConvertFromI.\n//\n// This corresponds to\n//\n//\twasm.OpcodeF32ConvertI32SName wasm.OpcodeF32ConvertI32UName wasm.OpcodeF32ConvertI64SName wasm.OpcodeF32ConvertI64UName\n//\twasm.OpcodeF64ConvertI32SName wasm.OpcodeF64ConvertI32UName wasm.OpcodeF64ConvertI64SName wasm.OpcodeF64ConvertI64UName\n//\n// and equivalent to float32(uint32(x)), float32(int32(x)), etc in Go.\nfunc newOperationFConvertFromI(inputType signedInt, outputType float) unionOperation {\n\treturn unionOperation{\n\t\tKind: operationKindFConvertFromI,\n\t\tB1:   byte(inputType),\n\t\tB2:   byte(outputType),\n\t}\n}\n\n// NewOperationF32DemoteFromF64 is a constructor for unionOperation with operationKindF32DemoteFromF64.\n//\n// This corresponds to wasm.OpcodeF32DemoteF64 and is equivalent float32(float64(v)).\nfunc newOperationF32DemoteFromF64() unionOperation {\n\treturn unionOperation{Kind: operationKindF32DemoteFromF64}\n}\n\n// NewOperationF64PromoteFromF32 is a constructor for unionOperation with operationKindF64PromoteFromF32.\n//\n// This corresponds to wasm.OpcodeF64PromoteF32 and is equivalent float64(float32(v)).\nfunc newOperationF64PromoteFromF32() unionOperation {\n\treturn unionOperation{Kind: operationKindF64PromoteFromF32}\n}\n\n// NewOperationI32ReinterpretFromF32 is a constructor for unionOperation with operationKindI32ReinterpretFromF32.\n//\n// This corresponds to wasm.OpcodeI32ReinterpretF32Name.\nfunc newOperationI32ReinterpretFromF32() unionOperation {\n\treturn unionOperation{Kind: operationKindI32ReinterpretFromF32}\n}\n\n// NewOperationI64ReinterpretFromF64 is a constructor for unionOperation with operationKindI64ReinterpretFromF64.\n//\n// This corresponds to wasm.OpcodeI64ReinterpretF64Name.\nfunc newOperationI64ReinterpretFromF64() unionOperation {\n\treturn unionOperation{Kind: operationKindI64ReinterpretFromF64}\n}\n\n// NewOperationF32ReinterpretFromI32 is a constructor for unionOperation with operationKindF32ReinterpretFromI32.\n//\n// This corresponds to wasm.OpcodeF32ReinterpretI32Name.\nfunc newOperationF32ReinterpretFromI32() unionOperation {\n\treturn unionOperation{Kind: operationKindF32ReinterpretFromI32}\n}\n\n// NewOperationF64ReinterpretFromI64 is a constructor for unionOperation with operationKindF64ReinterpretFromI64.\n//\n// This corresponds to wasm.OpcodeF64ReinterpretI64Name.\nfunc newOperationF64ReinterpretFromI64() unionOperation {\n\treturn unionOperation{Kind: operationKindF64ReinterpretFromI64}\n}\n\n// NewOperationExtend is a constructor for unionOperation with operationKindExtend.\n//\n// # This corresponds to wasm.OpcodeI64ExtendI32SName wasm.OpcodeI64ExtendI32UName\n//\n// The engines are expected to extend the 32-bit signed or unsigned int on top of the stack\n// as a 64-bit integer of corresponding signedness. For unsigned case, this is just reinterpreting the\n// underlying bit pattern as 64-bit integer. For signed case, this is sign-extension which preserves the\n// original integer's sign.\nfunc newOperationExtend(signed bool) unionOperation {\n\top := unionOperation{Kind: operationKindExtend}\n\tif signed {\n\t\top.B1 = 1\n\t}\n\treturn op\n}\n\n// NewOperationSignExtend32From8 is a constructor for unionOperation with operationKindSignExtend32From8.\n//\n// This corresponds to wasm.OpcodeI32Extend8SName.\n//\n// The engines are expected to sign-extend the first 8-bits of 32-bit in as signed 32-bit int.\nfunc newOperationSignExtend32From8() unionOperation {\n\treturn unionOperation{Kind: operationKindSignExtend32From8}\n}\n\n// NewOperationSignExtend32From16 is a constructor for unionOperation with operationKindSignExtend32From16.\n//\n// This corresponds to wasm.OpcodeI32Extend16SName.\n//\n// The engines are expected to sign-extend the first 16-bits of 32-bit in as signed 32-bit int.\nfunc newOperationSignExtend32From16() unionOperation {\n\treturn unionOperation{Kind: operationKindSignExtend32From16}\n}\n\n// NewOperationSignExtend64From8 is a constructor for unionOperation with operationKindSignExtend64From8.\n//\n// This corresponds to wasm.OpcodeI64Extend8SName.\n//\n// The engines are expected to sign-extend the first 8-bits of 64-bit in as signed 32-bit int.\nfunc newOperationSignExtend64From8() unionOperation {\n\treturn unionOperation{Kind: operationKindSignExtend64From8}\n}\n\n// NewOperationSignExtend64From16 is a constructor for unionOperation with operationKindSignExtend64From16.\n//\n// This corresponds to wasm.OpcodeI64Extend16SName.\n//\n// The engines are expected to sign-extend the first 16-bits of 64-bit in as signed 32-bit int.\nfunc newOperationSignExtend64From16() unionOperation {\n\treturn unionOperation{Kind: operationKindSignExtend64From16}\n}\n\n// NewOperationSignExtend64From32 is a constructor for unionOperation with operationKindSignExtend64From32.\n//\n// This corresponds to wasm.OpcodeI64Extend32SName.\n//\n// The engines are expected to sign-extend the first 32-bits of 64-bit in as signed 32-bit int.\nfunc newOperationSignExtend64From32() unionOperation {\n\treturn unionOperation{Kind: operationKindSignExtend64From32}\n}\n\n// NewOperationMemoryInit is a constructor for unionOperation with operationKindMemoryInit.\n//\n// This corresponds to wasm.OpcodeMemoryInitName.\n//\n// dataIndex is the index of the data instance in ModuleInstance.DataInstances\n// by which this operation instantiates a part of the memory.\nfunc newOperationMemoryInit(dataIndex uint32) unionOperation {\n\treturn unionOperation{Kind: operationKindMemoryInit, U1: uint64(dataIndex)}\n}\n\n// NewOperationDataDrop implements Operation.\n//\n// This corresponds to wasm.OpcodeDataDropName.\n//\n// dataIndex is the index of the data instance in ModuleInstance.DataInstances\n// which this operation drops.\nfunc newOperationDataDrop(dataIndex uint32) unionOperation {\n\treturn unionOperation{Kind: operationKindDataDrop, U1: uint64(dataIndex)}\n}\n\n// NewOperationMemoryCopy is a consuctor for unionOperation with operationKindMemoryCopy.\n//\n// This corresponds to wasm.OpcodeMemoryCopyName.\nfunc newOperationMemoryCopy() unionOperation {\n\treturn unionOperation{Kind: operationKindMemoryCopy}\n}\n\n// NewOperationMemoryFill is a consuctor for unionOperation with operationKindMemoryFill.\nfunc newOperationMemoryFill() unionOperation {\n\treturn unionOperation{Kind: operationKindMemoryFill}\n}\n\n// NewOperationTableInit is a constructor for unionOperation with operationKindTableInit.\n//\n// This corresponds to wasm.OpcodeTableInitName.\n//\n// elemIndex is the index of the element by which this operation initializes a part of the table.\n// tableIndex is the index of the table on which this operation initialize by the target element.\nfunc newOperationTableInit(elemIndex, tableIndex uint32) unionOperation {\n\treturn unionOperation{Kind: operationKindTableInit, U1: uint64(elemIndex), U2: uint64(tableIndex)}\n}\n\n// NewOperationElemDrop is a constructor for unionOperation with operationKindElemDrop.\n//\n// This corresponds to wasm.OpcodeElemDropName.\n//\n// elemIndex is the index of the element which this operation drops.\nfunc newOperationElemDrop(elemIndex uint32) unionOperation {\n\treturn unionOperation{Kind: operationKindElemDrop, U1: uint64(elemIndex)}\n}\n\n// NewOperationTableCopy implements Operation.\n//\n// This corresponds to wasm.OpcodeTableCopyName.\nfunc newOperationTableCopy(srcTableIndex, dstTableIndex uint32) unionOperation {\n\treturn unionOperation{Kind: operationKindTableCopy, U1: uint64(srcTableIndex), U2: uint64(dstTableIndex)}\n}\n\n// NewOperationRefFunc constructor for unionOperation with operationKindRefFunc.\n//\n// This corresponds to wasm.OpcodeRefFuncName, and engines are expected to\n// push the opaque pointer value of engine specific func for the given FunctionIndex.\n//\n// Note: in wazero, we express any reference types (funcref or externref) as opaque pointers which is uint64.\n// Therefore, the engine implementations emit instructions to push the address of *function onto the stack.\nfunc newOperationRefFunc(functionIndex uint32) unionOperation {\n\treturn unionOperation{Kind: operationKindRefFunc, U1: uint64(functionIndex)}\n}\n\n// NewOperationTableGet constructor for unionOperation with operationKindTableGet.\n//\n// This corresponds to wasm.OpcodeTableGetName.\nfunc newOperationTableGet(tableIndex uint32) unionOperation {\n\treturn unionOperation{Kind: operationKindTableGet, U1: uint64(tableIndex)}\n}\n\n// NewOperationTableSet constructor for unionOperation with operationKindTableSet.\n//\n// This corresponds to wasm.OpcodeTableSetName.\nfunc newOperationTableSet(tableIndex uint32) unionOperation {\n\treturn unionOperation{Kind: operationKindTableSet, U1: uint64(tableIndex)}\n}\n\n// NewOperationTableSize constructor for unionOperation with operationKindTableSize.\n//\n// This corresponds to wasm.OpcodeTableSizeName.\nfunc newOperationTableSize(tableIndex uint32) unionOperation {\n\treturn unionOperation{Kind: operationKindTableSize, U1: uint64(tableIndex)}\n}\n\n// NewOperationTableGrow constructor for unionOperation with operationKindTableGrow.\n//\n// This corresponds to wasm.OpcodeTableGrowName.\nfunc newOperationTableGrow(tableIndex uint32) unionOperation {\n\treturn unionOperation{Kind: operationKindTableGrow, U1: uint64(tableIndex)}\n}\n\n// NewOperationTableFill constructor for unionOperation with operationKindTableFill.\n//\n// This corresponds to wasm.OpcodeTableFillName.\nfunc newOperationTableFill(tableIndex uint32) unionOperation {\n\treturn unionOperation{Kind: operationKindTableFill, U1: uint64(tableIndex)}\n}\n\n// NewOperationV128Const constructor for unionOperation with operationKindV128Const\nfunc newOperationV128Const(lo, hi uint64) unionOperation {\n\treturn unionOperation{Kind: operationKindV128Const, U1: lo, U2: hi}\n}\n\n// shape corresponds to a shape of v128 values.\n// https://webassembly.github.io/spec/core/syntax/instructions.html#syntax-shape\ntype shape = byte\n\nconst (\n\tshapeI8x16 shape = iota\n\tshapeI16x8\n\tshapeI32x4\n\tshapeI64x2\n\tshapeF32x4\n\tshapeF64x2\n)\n\nfunc shapeName(s shape) (ret string) {\n\tswitch s {\n\tcase shapeI8x16:\n\t\tret = \"I8x16\"\n\tcase shapeI16x8:\n\t\tret = \"I16x8\"\n\tcase shapeI32x4:\n\t\tret = \"I32x4\"\n\tcase shapeI64x2:\n\t\tret = \"I64x2\"\n\tcase shapeF32x4:\n\t\tret = \"F32x4\"\n\tcase shapeF64x2:\n\t\tret = \"F64x2\"\n\t}\n\treturn\n}\n\n// NewOperationV128Add constructor for unionOperation with operationKindV128Add.\n//\n// This corresponds to wasm.OpcodeVecI8x16AddName wasm.OpcodeVecI16x8AddName wasm.OpcodeVecI32x4AddName\n//\n//\twasm.OpcodeVecI64x2AddName wasm.OpcodeVecF32x4AddName wasm.OpcodeVecF64x2AddName\nfunc newOperationV128Add(shape shape) unionOperation {\n\treturn unionOperation{Kind: operationKindV128Add, B1: shape}\n}\n\n// NewOperationV128Sub constructor for unionOperation with operationKindV128Sub.\n//\n// This corresponds to wasm.OpcodeVecI8x16SubName wasm.OpcodeVecI16x8SubName wasm.OpcodeVecI32x4SubName\n//\n//\twasm.OpcodeVecI64x2SubName wasm.OpcodeVecF32x4SubName wasm.OpcodeVecF64x2SubName\nfunc newOperationV128Sub(shape shape) unionOperation {\n\treturn unionOperation{Kind: operationKindV128Sub, B1: shape}\n}\n\n// v128LoadType represents a type of wasm.OpcodeVecV128Load* instructions.\ntype v128LoadType = byte\n\nconst (\n\t// v128LoadType128 corresponds to wasm.OpcodeVecV128LoadName.\n\tv128LoadType128 v128LoadType = iota\n\t// v128LoadType8x8s corresponds to wasm.OpcodeVecV128Load8x8SName.\n\tv128LoadType8x8s\n\t// v128LoadType8x8u corresponds to wasm.OpcodeVecV128Load8x8UName.\n\tv128LoadType8x8u\n\t// v128LoadType16x4s corresponds to wasm.OpcodeVecV128Load16x4SName\n\tv128LoadType16x4s\n\t// v128LoadType16x4u corresponds to wasm.OpcodeVecV128Load16x4UName\n\tv128LoadType16x4u\n\t// v128LoadType32x2s corresponds to wasm.OpcodeVecV128Load32x2SName\n\tv128LoadType32x2s\n\t// v128LoadType32x2u corresponds to wasm.OpcodeVecV128Load32x2UName\n\tv128LoadType32x2u\n\t// v128LoadType8Splat corresponds to wasm.OpcodeVecV128Load8SplatName\n\tv128LoadType8Splat\n\t// v128LoadType16Splat corresponds to wasm.OpcodeVecV128Load16SplatName\n\tv128LoadType16Splat\n\t// v128LoadType32Splat corresponds to wasm.OpcodeVecV128Load32SplatName\n\tv128LoadType32Splat\n\t// v128LoadType64Splat corresponds to wasm.OpcodeVecV128Load64SplatName\n\tv128LoadType64Splat\n\t// v128LoadType32zero corresponds to wasm.OpcodeVecV128Load32zeroName\n\tv128LoadType32zero\n\t// v128LoadType64zero corresponds to wasm.OpcodeVecV128Load64zeroName\n\tv128LoadType64zero\n)\n\n// NewOperationV128Load is a constructor for unionOperation with operationKindV128Load.\n//\n// This corresponds to\n//\n//\twasm.OpcodeVecV128LoadName wasm.OpcodeVecV128Load8x8SName wasm.OpcodeVecV128Load8x8UName\n//\twasm.OpcodeVecV128Load16x4SName wasm.OpcodeVecV128Load16x4UName wasm.OpcodeVecV128Load32x2SName\n//\twasm.OpcodeVecV128Load32x2UName wasm.OpcodeVecV128Load8SplatName wasm.OpcodeVecV128Load16SplatName\n//\twasm.OpcodeVecV128Load32SplatName wasm.OpcodeVecV128Load64SplatName wasm.OpcodeVecV128Load32zeroName\n//\twasm.OpcodeVecV128Load64zeroName\nfunc newOperationV128Load(loadType v128LoadType, arg memoryArg) unionOperation {\n\treturn unionOperation{Kind: operationKindV128Load, B1: loadType, U1: uint64(arg.Alignment), U2: uint64(arg.Offset)}\n}\n\n// NewOperationV128LoadLane is a constructor for unionOperation with operationKindV128LoadLane.\n//\n// This corresponds to wasm.OpcodeVecV128Load8LaneName wasm.OpcodeVecV128Load16LaneName\n//\n//\twasm.OpcodeVecV128Load32LaneName wasm.OpcodeVecV128Load64LaneName.\n//\n// laneIndex is >=0 && <(128/LaneSize).\n// laneSize is either 8, 16, 32, or 64.\nfunc newOperationV128LoadLane(laneIndex, laneSize byte, arg memoryArg) unionOperation {\n\treturn unionOperation{Kind: operationKindV128LoadLane, B1: laneSize, B2: laneIndex, U1: uint64(arg.Alignment), U2: uint64(arg.Offset)}\n}\n\n// NewOperationV128Store is a constructor for unionOperation with operationKindV128Store.\n//\n// This corresponds to wasm.OpcodeVecV128Load8LaneName wasm.OpcodeVecV128Load16LaneName\n//\n//\twasm.OpcodeVecV128Load32LaneName wasm.OpcodeVecV128Load64LaneName.\nfunc newOperationV128Store(arg memoryArg) unionOperation {\n\treturn unionOperation{\n\t\tKind: operationKindV128Store,\n\t\tU1:   uint64(arg.Alignment),\n\t\tU2:   uint64(arg.Offset),\n\t}\n}\n\n// NewOperationV128StoreLane implements Operation.\n//\n// This corresponds to wasm.OpcodeVecV128Load8LaneName wasm.OpcodeVecV128Load16LaneName\n//\n//\twasm.OpcodeVecV128Load32LaneName wasm.OpcodeVecV128Load64LaneName.\n//\n// laneIndex is >=0 && <(128/LaneSize).\n// laneSize is either 8, 16, 32, or 64.\nfunc newOperationV128StoreLane(laneIndex byte, laneSize byte, arg memoryArg) unionOperation {\n\treturn unionOperation{\n\t\tKind: operationKindV128StoreLane,\n\t\tB1:   laneSize,\n\t\tB2:   laneIndex,\n\t\tU1:   uint64(arg.Alignment),\n\t\tU2:   uint64(arg.Offset),\n\t}\n}\n\n// NewOperationV128ExtractLane is a constructor for unionOperation with operationKindV128ExtractLane.\n//\n// This corresponds to\n//\n//\twasm.OpcodeVecI8x16ExtractLaneSName wasm.OpcodeVecI8x16ExtractLaneUName\n//\twasm.OpcodeVecI16x8ExtractLaneSName wasm.OpcodeVecI16x8ExtractLaneUName\n//\twasm.OpcodeVecI32x4ExtractLaneName wasm.OpcodeVecI64x2ExtractLaneName\n//\twasm.OpcodeVecF32x4ExtractLaneName wasm.OpcodeVecF64x2ExtractLaneName.\n//\n// laneIndex is >=0 && <M where shape = NxM.\n// signed is used when shape is either i8x16 or i16x2 to specify whether to sign-extend or not.\nfunc newOperationV128ExtractLane(laneIndex byte, signed bool, shape shape) unionOperation {\n\treturn unionOperation{\n\t\tKind: operationKindV128ExtractLane,\n\t\tB1:   shape,\n\t\tB2:   laneIndex,\n\t\tB3:   signed,\n\t}\n}\n\n// NewOperationV128ReplaceLane is a constructor for unionOperation with operationKindV128ReplaceLane.\n//\n// This corresponds to\n//\n//\twasm.OpcodeVecI8x16ReplaceLaneName wasm.OpcodeVecI16x8ReplaceLaneName\n//\twasm.OpcodeVecI32x4ReplaceLaneName wasm.OpcodeVecI64x2ReplaceLaneName\n//\twasm.OpcodeVecF32x4ReplaceLaneName wasm.OpcodeVecF64x2ReplaceLaneName.\n//\n// laneIndex is >=0 && <M where shape = NxM.\nfunc newOperationV128ReplaceLane(laneIndex byte, shape shape) unionOperation {\n\treturn unionOperation{Kind: operationKindV128ReplaceLane, B1: shape, B2: laneIndex}\n}\n\n// NewOperationV128Splat is a constructor for unionOperation with operationKindV128Splat.\n//\n// This corresponds to\n//\n//\twasm.OpcodeVecI8x16SplatName wasm.OpcodeVecI16x8SplatName\n//\twasm.OpcodeVecI32x4SplatName wasm.OpcodeVecI64x2SplatName\n//\twasm.OpcodeVecF32x4SplatName wasm.OpcodeVecF64x2SplatName.\nfunc newOperationV128Splat(shape shape) unionOperation {\n\treturn unionOperation{Kind: operationKindV128Splat, B1: shape}\n}\n\n// NewOperationV128Shuffle is a constructor for unionOperation with operationKindV128Shuffle.\nfunc newOperationV128Shuffle(lanes []uint64) unionOperation {\n\treturn unionOperation{Kind: operationKindV128Shuffle, Us: lanes}\n}\n\n// NewOperationV128Swizzle is a constructor for unionOperation with operationKindV128Swizzle.\n//\n// This corresponds to wasm.OpcodeVecI8x16SwizzleName.\nfunc newOperationV128Swizzle() unionOperation {\n\treturn unionOperation{Kind: operationKindV128Swizzle}\n}\n\n// NewOperationV128AnyTrue is a constructor for unionOperation with operationKindV128AnyTrue.\n//\n// This corresponds to wasm.OpcodeVecV128AnyTrueName.\nfunc newOperationV128AnyTrue() unionOperation {\n\treturn unionOperation{Kind: operationKindV128AnyTrue}\n}\n\n// NewOperationV128AllTrue is a constructor for unionOperation with operationKindV128AllTrue.\n//\n// This corresponds to\n//\n//\twasm.OpcodeVecI8x16AllTrueName wasm.OpcodeVecI16x8AllTrueName\n//\twasm.OpcodeVecI32x4AllTrueName wasm.OpcodeVecI64x2AllTrueName.\nfunc newOperationV128AllTrue(shape shape) unionOperation {\n\treturn unionOperation{Kind: operationKindV128AllTrue, B1: shape}\n}\n\n// NewOperationV128BitMask is a constructor for unionOperation with operationKindV128BitMask.\n//\n// This corresponds to\n//\n//\twasm.OpcodeVecI8x16BitMaskName wasm.OpcodeVecI16x8BitMaskName\n//\twasm.OpcodeVecI32x4BitMaskName wasm.OpcodeVecI64x2BitMaskName.\nfunc newOperationV128BitMask(shape shape) unionOperation {\n\treturn unionOperation{Kind: operationKindV128BitMask, B1: shape}\n}\n\n// NewOperationV128And is a constructor for unionOperation with operationKindV128And.\n//\n// This corresponds to wasm.OpcodeVecV128And.\nfunc newOperationV128And() unionOperation {\n\treturn unionOperation{Kind: operationKindV128And}\n}\n\n// NewOperationV128Not is a constructor for unionOperation with operationKindV128Not.\n//\n// This corresponds to wasm.OpcodeVecV128Not.\nfunc newOperationV128Not() unionOperation {\n\treturn unionOperation{Kind: operationKindV128Not}\n}\n\n// NewOperationV128Or is a constructor for unionOperation with operationKindV128Or.\n//\n// This corresponds to wasm.OpcodeVecV128Or.\nfunc newOperationV128Or() unionOperation {\n\treturn unionOperation{Kind: operationKindV128Or}\n}\n\n// NewOperationV128Xor is a constructor for unionOperation with operationKindV128Xor.\n//\n// This corresponds to wasm.OpcodeVecV128Xor.\nfunc newOperationV128Xor() unionOperation {\n\treturn unionOperation{Kind: operationKindV128Xor}\n}\n\n// NewOperationV128Bitselect is a constructor for unionOperation with operationKindV128Bitselect.\n//\n// This corresponds to wasm.OpcodeVecV128Bitselect.\nfunc newOperationV128Bitselect() unionOperation {\n\treturn unionOperation{Kind: operationKindV128Bitselect}\n}\n\n// NewOperationV128AndNot is a constructor for unionOperation with operationKindV128AndNot.\n//\n// This corresponds to wasm.OpcodeVecV128AndNot.\nfunc newOperationV128AndNot() unionOperation {\n\treturn unionOperation{Kind: operationKindV128AndNot}\n}\n\n// NewOperationV128Shl is a constructor for unionOperation with operationKindV128Shl.\n//\n// This corresponds to\n//\n//\twasm.OpcodeVecI8x16ShlName wasm.OpcodeVecI16x8ShlName\n//\twasm.OpcodeVecI32x4ShlName wasm.OpcodeVecI64x2ShlName\nfunc newOperationV128Shl(shape shape) unionOperation {\n\treturn unionOperation{Kind: operationKindV128Shl, B1: shape}\n}\n\n// NewOperationV128Shr is a constructor for unionOperation with operationKindV128Shr.\n//\n// This corresponds to\n//\n//\twasm.OpcodeVecI8x16ShrSName wasm.OpcodeVecI8x16ShrUName wasm.OpcodeVecI16x8ShrSName\n//\twasm.OpcodeVecI16x8ShrUName wasm.OpcodeVecI32x4ShrSName wasm.OpcodeVecI32x4ShrUName.\n//\twasm.OpcodeVecI64x2ShrSName wasm.OpcodeVecI64x2ShrUName.\nfunc newOperationV128Shr(shape shape, signed bool) unionOperation {\n\treturn unionOperation{Kind: operationKindV128Shr, B1: shape, B3: signed}\n}\n\n// NewOperationV128Cmp is a constructor for unionOperation with operationKindV128Cmp.\n//\n// This corresponds to\n//\n//\twasm.OpcodeVecI8x16EqName, wasm.OpcodeVecI8x16NeName, wasm.OpcodeVecI8x16LtSName, wasm.OpcodeVecI8x16LtUName, wasm.OpcodeVecI8x16GtSName,\n//\twasm.OpcodeVecI8x16GtUName, wasm.OpcodeVecI8x16LeSName, wasm.OpcodeVecI8x16LeUName, wasm.OpcodeVecI8x16GeSName, wasm.OpcodeVecI8x16GeUName,\n//\twasm.OpcodeVecI16x8EqName, wasm.OpcodeVecI16x8NeName, wasm.OpcodeVecI16x8LtSName, wasm.OpcodeVecI16x8LtUName, wasm.OpcodeVecI16x8GtSName,\n//\twasm.OpcodeVecI16x8GtUName, wasm.OpcodeVecI16x8LeSName, wasm.OpcodeVecI16x8LeUName, wasm.OpcodeVecI16x8GeSName, wasm.OpcodeVecI16x8GeUName,\n//\twasm.OpcodeVecI32x4EqName, wasm.OpcodeVecI32x4NeName, wasm.OpcodeVecI32x4LtSName, wasm.OpcodeVecI32x4LtUName, wasm.OpcodeVecI32x4GtSName,\n//\twasm.OpcodeVecI32x4GtUName, wasm.OpcodeVecI32x4LeSName, wasm.OpcodeVecI32x4LeUName, wasm.OpcodeVecI32x4GeSName, wasm.OpcodeVecI32x4GeUName,\n//\twasm.OpcodeVecI64x2EqName, wasm.OpcodeVecI64x2NeName, wasm.OpcodeVecI64x2LtSName, wasm.OpcodeVecI64x2GtSName, wasm.OpcodeVecI64x2LeSName,\n//\twasm.OpcodeVecI64x2GeSName, wasm.OpcodeVecF32x4EqName, wasm.OpcodeVecF32x4NeName, wasm.OpcodeVecF32x4LtName, wasm.OpcodeVecF32x4GtName,\n//\twasm.OpcodeVecF32x4LeName, wasm.OpcodeVecF32x4GeName, wasm.OpcodeVecF64x2EqName, wasm.OpcodeVecF64x2NeName, wasm.OpcodeVecF64x2LtName,\n//\twasm.OpcodeVecF64x2GtName, wasm.OpcodeVecF64x2LeName, wasm.OpcodeVecF64x2GeName\nfunc newOperationV128Cmp(cmpType v128CmpType) unionOperation {\n\treturn unionOperation{Kind: operationKindV128Cmp, B1: cmpType}\n}\n\n// v128CmpType represents a type of vector comparison operation.\ntype v128CmpType = byte\n\nconst (\n\t// v128CmpTypeI8x16Eq corresponds to wasm.OpcodeVecI8x16EqName.\n\tv128CmpTypeI8x16Eq v128CmpType = iota\n\t// v128CmpTypeI8x16Ne corresponds to wasm.OpcodeVecI8x16NeName.\n\tv128CmpTypeI8x16Ne\n\t// v128CmpTypeI8x16LtS corresponds to wasm.OpcodeVecI8x16LtSName.\n\tv128CmpTypeI8x16LtS\n\t// v128CmpTypeI8x16LtU corresponds to wasm.OpcodeVecI8x16LtUName.\n\tv128CmpTypeI8x16LtU\n\t// v128CmpTypeI8x16GtS corresponds to wasm.OpcodeVecI8x16GtSName.\n\tv128CmpTypeI8x16GtS\n\t// v128CmpTypeI8x16GtU corresponds to wasm.OpcodeVecI8x16GtUName.\n\tv128CmpTypeI8x16GtU\n\t// v128CmpTypeI8x16LeS corresponds to wasm.OpcodeVecI8x16LeSName.\n\tv128CmpTypeI8x16LeS\n\t// v128CmpTypeI8x16LeU corresponds to wasm.OpcodeVecI8x16LeUName.\n\tv128CmpTypeI8x16LeU\n\t// v128CmpTypeI8x16GeS corresponds to wasm.OpcodeVecI8x16GeSName.\n\tv128CmpTypeI8x16GeS\n\t// v128CmpTypeI8x16GeU corresponds to wasm.OpcodeVecI8x16GeUName.\n\tv128CmpTypeI8x16GeU\n\t// v128CmpTypeI16x8Eq corresponds to wasm.OpcodeVecI16x8EqName.\n\tv128CmpTypeI16x8Eq\n\t// v128CmpTypeI16x8Ne corresponds to wasm.OpcodeVecI16x8NeName.\n\tv128CmpTypeI16x8Ne\n\t// v128CmpTypeI16x8LtS corresponds to wasm.OpcodeVecI16x8LtSName.\n\tv128CmpTypeI16x8LtS\n\t// v128CmpTypeI16x8LtU corresponds to wasm.OpcodeVecI16x8LtUName.\n\tv128CmpTypeI16x8LtU\n\t// v128CmpTypeI16x8GtS corresponds to wasm.OpcodeVecI16x8GtSName.\n\tv128CmpTypeI16x8GtS\n\t// v128CmpTypeI16x8GtU corresponds to wasm.OpcodeVecI16x8GtUName.\n\tv128CmpTypeI16x8GtU\n\t// v128CmpTypeI16x8LeS corresponds to wasm.OpcodeVecI16x8LeSName.\n\tv128CmpTypeI16x8LeS\n\t// v128CmpTypeI16x8LeU corresponds to wasm.OpcodeVecI16x8LeUName.\n\tv128CmpTypeI16x8LeU\n\t// v128CmpTypeI16x8GeS corresponds to wasm.OpcodeVecI16x8GeSName.\n\tv128CmpTypeI16x8GeS\n\t// v128CmpTypeI16x8GeU corresponds to wasm.OpcodeVecI16x8GeUName.\n\tv128CmpTypeI16x8GeU\n\t// v128CmpTypeI32x4Eq corresponds to wasm.OpcodeVecI32x4EqName.\n\tv128CmpTypeI32x4Eq\n\t// v128CmpTypeI32x4Ne corresponds to wasm.OpcodeVecI32x4NeName.\n\tv128CmpTypeI32x4Ne\n\t// v128CmpTypeI32x4LtS corresponds to wasm.OpcodeVecI32x4LtSName.\n\tv128CmpTypeI32x4LtS\n\t// v128CmpTypeI32x4LtU corresponds to wasm.OpcodeVecI32x4LtUName.\n\tv128CmpTypeI32x4LtU\n\t// v128CmpTypeI32x4GtS corresponds to wasm.OpcodeVecI32x4GtSName.\n\tv128CmpTypeI32x4GtS\n\t// v128CmpTypeI32x4GtU corresponds to wasm.OpcodeVecI32x4GtUName.\n\tv128CmpTypeI32x4GtU\n\t// v128CmpTypeI32x4LeS corresponds to wasm.OpcodeVecI32x4LeSName.\n\tv128CmpTypeI32x4LeS\n\t// v128CmpTypeI32x4LeU corresponds to wasm.OpcodeVecI32x4LeUName.\n\tv128CmpTypeI32x4LeU\n\t// v128CmpTypeI32x4GeS corresponds to wasm.OpcodeVecI32x4GeSName.\n\tv128CmpTypeI32x4GeS\n\t// v128CmpTypeI32x4GeU corresponds to wasm.OpcodeVecI32x4GeUName.\n\tv128CmpTypeI32x4GeU\n\t// v128CmpTypeI64x2Eq corresponds to wasm.OpcodeVecI64x2EqName.\n\tv128CmpTypeI64x2Eq\n\t// v128CmpTypeI64x2Ne corresponds to wasm.OpcodeVecI64x2NeName.\n\tv128CmpTypeI64x2Ne\n\t// v128CmpTypeI64x2LtS corresponds to wasm.OpcodeVecI64x2LtSName.\n\tv128CmpTypeI64x2LtS\n\t// v128CmpTypeI64x2GtS corresponds to wasm.OpcodeVecI64x2GtSName.\n\tv128CmpTypeI64x2GtS\n\t// v128CmpTypeI64x2LeS corresponds to wasm.OpcodeVecI64x2LeSName.\n\tv128CmpTypeI64x2LeS\n\t// v128CmpTypeI64x2GeS corresponds to wasm.OpcodeVecI64x2GeSName.\n\tv128CmpTypeI64x2GeS\n\t// v128CmpTypeF32x4Eq corresponds to wasm.OpcodeVecF32x4EqName.\n\tv128CmpTypeF32x4Eq\n\t// v128CmpTypeF32x4Ne corresponds to wasm.OpcodeVecF32x4NeName.\n\tv128CmpTypeF32x4Ne\n\t// v128CmpTypeF32x4Lt corresponds to wasm.OpcodeVecF32x4LtName.\n\tv128CmpTypeF32x4Lt\n\t// v128CmpTypeF32x4Gt corresponds to wasm.OpcodeVecF32x4GtName.\n\tv128CmpTypeF32x4Gt\n\t// v128CmpTypeF32x4Le corresponds to wasm.OpcodeVecF32x4LeName.\n\tv128CmpTypeF32x4Le\n\t// v128CmpTypeF32x4Ge corresponds to wasm.OpcodeVecF32x4GeName.\n\tv128CmpTypeF32x4Ge\n\t// v128CmpTypeF64x2Eq corresponds to wasm.OpcodeVecF64x2EqName.\n\tv128CmpTypeF64x2Eq\n\t// v128CmpTypeF64x2Ne corresponds to wasm.OpcodeVecF64x2NeName.\n\tv128CmpTypeF64x2Ne\n\t// v128CmpTypeF64x2Lt corresponds to wasm.OpcodeVecF64x2LtName.\n\tv128CmpTypeF64x2Lt\n\t// v128CmpTypeF64x2Gt corresponds to wasm.OpcodeVecF64x2GtName.\n\tv128CmpTypeF64x2Gt\n\t// v128CmpTypeF64x2Le corresponds to wasm.OpcodeVecF64x2LeName.\n\tv128CmpTypeF64x2Le\n\t// v128CmpTypeF64x2Ge corresponds to wasm.OpcodeVecF64x2GeName.\n\tv128CmpTypeF64x2Ge\n)\n\n// NewOperationV128AddSat is a constructor for unionOperation with operationKindV128AddSat.\n//\n// This corresponds to wasm.OpcodeVecI8x16AddSatUName wasm.OpcodeVecI8x16AddSatSName\n//\n//\twasm.OpcodeVecI16x8AddSatUName wasm.OpcodeVecI16x8AddSatSName\n//\n// shape is either shapeI8x16 or shapeI16x8.\nfunc newOperationV128AddSat(shape shape, signed bool) unionOperation {\n\treturn unionOperation{Kind: operationKindV128AddSat, B1: shape, B3: signed}\n}\n\n// NewOperationV128SubSat is a constructor for unionOperation with operationKindV128SubSat.\n//\n// This corresponds to wasm.OpcodeVecI8x16SubSatUName wasm.OpcodeVecI8x16SubSatSName\n//\n//\twasm.OpcodeVecI16x8SubSatUName wasm.OpcodeVecI16x8SubSatSName\n//\n// shape is either shapeI8x16 or shapeI16x8.\nfunc newOperationV128SubSat(shape shape, signed bool) unionOperation {\n\treturn unionOperation{Kind: operationKindV128SubSat, B1: shape, B3: signed}\n}\n\n// NewOperationV128Mul is a constructor for unionOperation with operationKindV128Mul\n//\n// This corresponds to wasm.OpcodeVecF32x4MulName wasm.OpcodeVecF64x2MulName\n//\n//\t\twasm.OpcodeVecI16x8MulName wasm.OpcodeVecI32x4MulName wasm.OpcodeVecI64x2MulName.\n//\t shape is either shapeI16x8, shapeI32x4, shapeI64x2, shapeF32x4 or shapeF64x2.\nfunc newOperationV128Mul(shape shape) unionOperation {\n\treturn unionOperation{Kind: operationKindV128Mul, B1: shape}\n}\n\n// NewOperationV128Div is a constructor for unionOperation with operationKindV128Div.\n//\n// This corresponds to wasm.OpcodeVecF32x4DivName wasm.OpcodeVecF64x2DivName.\n// shape is either shapeF32x4 or shapeF64x2.\nfunc newOperationV128Div(shape shape) unionOperation {\n\treturn unionOperation{Kind: operationKindV128Div, B1: shape}\n}\n\n// NewOperationV128Neg is a constructor for unionOperation with operationKindV128Neg.\n//\n// This corresponds to wasm.OpcodeVecI8x16NegName wasm.OpcodeVecI16x8NegName wasm.OpcodeVecI32x4NegName\n//\n//\twasm.OpcodeVecI64x2NegName wasm.OpcodeVecF32x4NegName wasm.OpcodeVecF64x2NegName.\nfunc newOperationV128Neg(shape shape) unionOperation {\n\treturn unionOperation{Kind: operationKindV128Neg, B1: shape}\n}\n\n// NewOperationV128Sqrt is a constructor for unionOperation with 128operationKindV128Sqrt.\n//\n// shape is either shapeF32x4 or shapeF64x2.\n// This corresponds to wasm.OpcodeVecF32x4SqrtName wasm.OpcodeVecF64x2SqrtName.\nfunc newOperationV128Sqrt(shape shape) unionOperation {\n\treturn unionOperation{Kind: operationKindV128Sqrt, B1: shape}\n}\n\n// NewOperationV128Abs is a constructor for unionOperation with operationKindV128Abs.\n//\n// This corresponds to wasm.OpcodeVecI8x16AbsName wasm.OpcodeVecI16x8AbsName wasm.OpcodeVecI32x4AbsName\n//\n//\twasm.OpcodeVecI64x2AbsName wasm.OpcodeVecF32x4AbsName wasm.OpcodeVecF64x2AbsName.\nfunc newOperationV128Abs(shape shape) unionOperation {\n\treturn unionOperation{Kind: operationKindV128Abs, B1: shape}\n}\n\n// NewOperationV128Popcnt is a constructor for unionOperation with operationKindV128Popcnt.\n//\n// This corresponds to wasm.OpcodeVecI8x16PopcntName.\nfunc newOperationV128Popcnt(shape shape) unionOperation {\n\treturn unionOperation{Kind: operationKindV128Popcnt, B1: shape}\n}\n\n// NewOperationV128Min is a constructor for unionOperation with operationKindV128Min.\n//\n// This corresponds to\n//\n//\twasm.OpcodeVecI8x16MinSName wasm.OpcodeVecI8x16MinUName　wasm.OpcodeVecI16x8MinSName wasm.OpcodeVecI16x8MinUName\n//\twasm.OpcodeVecI32x4MinSName wasm.OpcodeVecI32x4MinUName　wasm.OpcodeVecI16x8MinSName wasm.OpcodeVecI16x8MinUName\n//\twasm.OpcodeVecF32x4MinName wasm.OpcodeVecF64x2MinName\nfunc newOperationV128Min(shape shape, signed bool) unionOperation {\n\treturn unionOperation{Kind: operationKindV128Min, B1: shape, B3: signed}\n}\n\n// NewOperationV128Max is a constructor for unionOperation with operationKindV128Max.\n//\n// This corresponds to\n//\n//\twasm.OpcodeVecI8x16MaxSName wasm.OpcodeVecI8x16MaxUName　wasm.OpcodeVecI16x8MaxSName wasm.OpcodeVecI16x8MaxUName\n//\twasm.OpcodeVecI32x4MaxSName wasm.OpcodeVecI32x4MaxUName　wasm.OpcodeVecI16x8MaxSName wasm.OpcodeVecI16x8MaxUName\n//\twasm.OpcodeVecF32x4MaxName wasm.OpcodeVecF64x2MaxName.\nfunc newOperationV128Max(shape shape, signed bool) unionOperation {\n\treturn unionOperation{Kind: operationKindV128Max, B1: shape, B3: signed}\n}\n\n// NewOperationV128AvgrU is a constructor for unionOperation with operationKindV128AvgrU.\n//\n// This corresponds to wasm.OpcodeVecI8x16AvgrUName.\nfunc newOperationV128AvgrU(shape shape) unionOperation {\n\treturn unionOperation{Kind: operationKindV128AvgrU, B1: shape}\n}\n\n// NewOperationV128Pmin is a constructor for unionOperation with operationKindV128Pmin.\n//\n// This corresponds to wasm.OpcodeVecF32x4PminName wasm.OpcodeVecF64x2PminName.\nfunc newOperationV128Pmin(shape shape) unionOperation {\n\treturn unionOperation{Kind: operationKindV128Pmin, B1: shape}\n}\n\n// NewOperationV128Pmax is a constructor for unionOperation with operationKindV128Pmax.\n//\n// This corresponds to wasm.OpcodeVecF32x4PmaxName wasm.OpcodeVecF64x2PmaxName.\nfunc newOperationV128Pmax(shape shape) unionOperation {\n\treturn unionOperation{Kind: operationKindV128Pmax, B1: shape}\n}\n\n// NewOperationV128Ceil is a constructor for unionOperation with operationKindV128Ceil.\n//\n// This corresponds to wasm.OpcodeVecF32x4CeilName wasm.OpcodeVecF64x2CeilName\nfunc newOperationV128Ceil(shape shape) unionOperation {\n\treturn unionOperation{Kind: operationKindV128Ceil, B1: shape}\n}\n\n// NewOperationV128Floor is a constructor for unionOperation with operationKindV128Floor.\n//\n// This corresponds to wasm.OpcodeVecF32x4FloorName wasm.OpcodeVecF64x2FloorName\nfunc newOperationV128Floor(shape shape) unionOperation {\n\treturn unionOperation{Kind: operationKindV128Floor, B1: shape}\n}\n\n// NewOperationV128Trunc is a constructor for unionOperation with operationKindV128Trunc.\n//\n// This corresponds to wasm.OpcodeVecF32x4TruncName wasm.OpcodeVecF64x2TruncName\nfunc newOperationV128Trunc(shape shape) unionOperation {\n\treturn unionOperation{Kind: operationKindV128Trunc, B1: shape}\n}\n\n// NewOperationV128Nearest is a constructor for unionOperation with operationKindV128Nearest.\n//\n// This corresponds to wasm.OpcodeVecF32x4NearestName wasm.OpcodeVecF64x2NearestName\nfunc newOperationV128Nearest(shape shape) unionOperation {\n\treturn unionOperation{Kind: operationKindV128Nearest, B1: shape}\n}\n\n// NewOperationV128Extend is a constructor for unionOperation with operationKindV128Extend.\n//\n// This corresponds to\n//\n//\twasm.OpcodeVecI16x8ExtendLowI8x16SName wasm.OpcodeVecI16x8ExtendHighI8x16SName\n//\twasm.OpcodeVecI16x8ExtendLowI8x16UName wasm.OpcodeVecI16x8ExtendHighI8x16UName\n//\twasm.OpcodeVecI32x4ExtendLowI16x8SName wasm.OpcodeVecI32x4ExtendHighI16x8SName\n//\twasm.OpcodeVecI32x4ExtendLowI16x8UName wasm.OpcodeVecI32x4ExtendHighI16x8UName\n//\twasm.OpcodeVecI64x2ExtendLowI32x4SName wasm.OpcodeVecI64x2ExtendHighI32x4SName\n//\twasm.OpcodeVecI64x2ExtendLowI32x4UName wasm.OpcodeVecI64x2ExtendHighI32x4UName\n//\n// originshape is the shape of the original lanes for extension which is\n// either shapeI8x16, shapeI16x8, or shapeI32x4.\n// useLow true if it uses the lower half of vector for extension.\nfunc newOperationV128Extend(originshape shape, signed bool, useLow bool) unionOperation {\n\top := unionOperation{Kind: operationKindV128Extend}\n\top.B1 = originshape\n\tif signed {\n\t\top.B2 = 1\n\t}\n\top.B3 = useLow\n\treturn op\n}\n\n// NewOperationV128ExtMul is a constructor for unionOperation with operationKindV128ExtMul.\n//\n// This corresponds to\n//\n//\t\twasm.OpcodeVecI16x8ExtMulLowI8x16SName wasm.OpcodeVecI16x8ExtMulLowI8x16UName\n//\t\twasm.OpcodeVecI16x8ExtMulHighI8x16SName wasm.OpcodeVecI16x8ExtMulHighI8x16UName\n//\t wasm.OpcodeVecI32x4ExtMulLowI16x8SName wasm.OpcodeVecI32x4ExtMulLowI16x8UName\n//\t\twasm.OpcodeVecI32x4ExtMulHighI16x8SName wasm.OpcodeVecI32x4ExtMulHighI16x8UName\n//\t wasm.OpcodeVecI64x2ExtMulLowI32x4SName wasm.OpcodeVecI64x2ExtMulLowI32x4UName\n//\t\twasm.OpcodeVecI64x2ExtMulHighI32x4SName wasm.OpcodeVecI64x2ExtMulHighI32x4UName.\n//\n// originshape is the shape of the original lanes for extension which is\n// either shapeI8x16, shapeI16x8, or shapeI32x4.\n// useLow true if it uses the lower half of vector for extension.\nfunc newOperationV128ExtMul(originshape shape, signed bool, useLow bool) unionOperation {\n\top := unionOperation{Kind: operationKindV128ExtMul}\n\top.B1 = originshape\n\tif signed {\n\t\top.B2 = 1\n\t}\n\top.B3 = useLow\n\treturn op\n}\n\n// NewOperationV128Q15mulrSatS is a constructor for unionOperation with operationKindV128Q15mulrSatS.\n//\n// This corresponds to wasm.OpcodeVecI16x8Q15mulrSatSName\nfunc newOperationV128Q15mulrSatS() unionOperation {\n\treturn unionOperation{Kind: operationKindV128Q15mulrSatS}\n}\n\n// NewOperationV128ExtAddPairwise is a constructor for unionOperation with operationKindV128ExtAddPairwise.\n//\n// This corresponds to\n//\n//\twasm.OpcodeVecI16x8ExtaddPairwiseI8x16SName wasm.OpcodeVecI16x8ExtaddPairwiseI8x16UName\n//\twasm.OpcodeVecI32x4ExtaddPairwiseI16x8SName wasm.OpcodeVecI32x4ExtaddPairwiseI16x8UName.\n//\n// originshape is the shape of the original lanes for extension which is\n// either shapeI8x16, or shapeI16x8.\nfunc newOperationV128ExtAddPairwise(originshape shape, signed bool) unionOperation {\n\treturn unionOperation{Kind: operationKindV128ExtAddPairwise, B1: originshape, B3: signed}\n}\n\n// NewOperationV128FloatPromote is a constructor for unionOperation with NewOperationV128FloatPromote.\n//\n// This corresponds to wasm.OpcodeVecF64x2PromoteLowF32x4ZeroName\n// This discards the higher 64-bit of a vector, and promotes two\n// 32-bit floats in the lower 64-bit as two 64-bit floats.\nfunc newOperationV128FloatPromote() unionOperation {\n\treturn unionOperation{Kind: operationKindV128FloatPromote}\n}\n\n// NewOperationV128FloatDemote is a constructor for unionOperation with NewOperationV128FloatDemote.\n//\n// This corresponds to wasm.OpcodeVecF32x4DemoteF64x2ZeroName.\nfunc newOperationV128FloatDemote() unionOperation {\n\treturn unionOperation{Kind: operationKindV128FloatDemote}\n}\n\n// NewOperationV128FConvertFromI is a constructor for unionOperation with NewOperationV128FConvertFromI.\n//\n// This corresponds to\n//\n//\twasm.OpcodeVecF32x4ConvertI32x4SName wasm.OpcodeVecF32x4ConvertI32x4UName\n//\twasm.OpcodeVecF64x2ConvertLowI32x4SName wasm.OpcodeVecF64x2ConvertLowI32x4UName.\n//\n// destinationshape is the shape of the destination lanes for conversion which is\n// either shapeF32x4, or shapeF64x2.\nfunc newOperationV128FConvertFromI(destinationshape shape, signed bool) unionOperation {\n\treturn unionOperation{Kind: operationKindV128FConvertFromI, B1: destinationshape, B3: signed}\n}\n\n// NewOperationV128Dot is a constructor for unionOperation with operationKindV128Dot.\n//\n// This corresponds to wasm.OpcodeVecI32x4DotI16x8SName\nfunc newOperationV128Dot() unionOperation {\n\treturn unionOperation{Kind: operationKindV128Dot}\n}\n\n// NewOperationV128Narrow is a constructor for unionOperation with operationKindV128Narrow.\n//\n// This corresponds to\n//\n//\twasm.OpcodeVecI8x16NarrowI16x8SName wasm.OpcodeVecI8x16NarrowI16x8UName\n//\twasm.OpcodeVecI16x8NarrowI32x4SName wasm.OpcodeVecI16x8NarrowI32x4UName.\n//\n// originshape is the shape of the original lanes for narrowing which is\n// either shapeI16x8, or shapeI32x4.\nfunc newOperationV128Narrow(originshape shape, signed bool) unionOperation {\n\treturn unionOperation{Kind: operationKindV128Narrow, B1: originshape, B3: signed}\n}\n\n// NewOperationV128ITruncSatFromF is a constructor for unionOperation with operationKindV128ITruncSatFromF.\n//\n// This corresponds to\n//\n//\twasm.OpcodeVecI32x4TruncSatF64x2UZeroName wasm.OpcodeVecI32x4TruncSatF64x2SZeroName\n//\twasm.OpcodeVecI32x4TruncSatF32x4UName wasm.OpcodeVecI32x4TruncSatF32x4SName.\n//\n// originshape is the shape of the original lanes for truncation which is\n// either shapeF32x4, or shapeF64x2.\nfunc newOperationV128ITruncSatFromF(originshape shape, signed bool) unionOperation {\n\treturn unionOperation{Kind: operationKindV128ITruncSatFromF, B1: originshape, B3: signed}\n}\n\n// atomicArithmeticOp is the type for the operation kind of atomic arithmetic operations.\ntype atomicArithmeticOp byte\n\nconst (\n\t// atomicArithmeticOpAdd is the kind for an add operation.\n\tatomicArithmeticOpAdd atomicArithmeticOp = iota\n\t// atomicArithmeticOpSub is the kind for a sub operation.\n\tatomicArithmeticOpSub\n\t// atomicArithmeticOpAnd is the kind for a bitwise and operation.\n\tatomicArithmeticOpAnd\n\t// atomicArithmeticOpOr is the kind for a bitwise or operation.\n\tatomicArithmeticOpOr\n\t// atomicArithmeticOpXor is the kind for a bitwise xor operation.\n\tatomicArithmeticOpXor\n\t// atomicArithmeticOpNop is the kind for a nop operation.\n\tatomicArithmeticOpNop\n)\n\n// NewOperationAtomicMemoryWait is a constructor for unionOperation with operationKindAtomicMemoryWait.\n//\n// This corresponds to\n//\n//\twasm.OpcodeAtomicWait32Name wasm.OpcodeAtomicWait64Name\nfunc newOperationAtomicMemoryWait(unsignedType unsignedType, arg memoryArg) unionOperation {\n\treturn unionOperation{Kind: operationKindAtomicMemoryWait, B1: byte(unsignedType), U1: uint64(arg.Alignment), U2: uint64(arg.Offset)}\n}\n\n// NewOperationAtomicMemoryNotify is a constructor for unionOperation with operationKindAtomicMemoryNotify.\n//\n// This corresponds to\n//\n//\twasm.OpcodeAtomicNotifyName\nfunc newOperationAtomicMemoryNotify(arg memoryArg) unionOperation {\n\treturn unionOperation{Kind: operationKindAtomicMemoryNotify, U1: uint64(arg.Alignment), U2: uint64(arg.Offset)}\n}\n\n// NewOperationAtomicFence is a constructor for unionOperation with operationKindAtomicFence.\n//\n// This corresponds to\n//\n//\twasm.OpcodeAtomicFenceName\nfunc newOperationAtomicFence() unionOperation {\n\treturn unionOperation{Kind: operationKindAtomicFence}\n}\n\n// NewOperationAtomicLoad is a constructor for unionOperation with operationKindAtomicLoad.\n//\n// This corresponds to\n//\n//\twasm.OpcodeAtomicI32LoadName wasm.OpcodeAtomicI64LoadName\nfunc newOperationAtomicLoad(unsignedType unsignedType, arg memoryArg) unionOperation {\n\treturn unionOperation{Kind: operationKindAtomicLoad, B1: byte(unsignedType), U1: uint64(arg.Alignment), U2: uint64(arg.Offset)}\n}\n\n// NewOperationAtomicLoad8 is a constructor for unionOperation with operationKindAtomicLoad8.\n//\n// This corresponds to\n//\n//\twasm.OpcodeAtomicI32Load8UName wasm.OpcodeAtomicI64Load8UName\nfunc newOperationAtomicLoad8(unsignedType unsignedType, arg memoryArg) unionOperation {\n\treturn unionOperation{Kind: operationKindAtomicLoad8, B1: byte(unsignedType), U1: uint64(arg.Alignment), U2: uint64(arg.Offset)}\n}\n\n// NewOperationAtomicLoad16 is a constructor for unionOperation with operationKindAtomicLoad16.\n//\n// This corresponds to\n//\n//\twasm.OpcodeAtomicI32Load16UName wasm.OpcodeAtomicI64Load16UName\nfunc newOperationAtomicLoad16(unsignedType unsignedType, arg memoryArg) unionOperation {\n\treturn unionOperation{Kind: operationKindAtomicLoad16, B1: byte(unsignedType), U1: uint64(arg.Alignment), U2: uint64(arg.Offset)}\n}\n\n// NewOperationAtomicStore is a constructor for unionOperation with operationKindAtomicStore.\n//\n// This corresponds to\n//\n//\twasm.OpcodeAtomicI32StoreName wasm.OpcodeAtomicI64StoreName\nfunc newOperationAtomicStore(unsignedType unsignedType, arg memoryArg) unionOperation {\n\treturn unionOperation{Kind: operationKindAtomicStore, B1: byte(unsignedType), U1: uint64(arg.Alignment), U2: uint64(arg.Offset)}\n}\n\n// NewOperationAtomicStore8 is a constructor for unionOperation with operationKindAtomicStore8.\n//\n// This corresponds to\n//\n//\twasm.OpcodeAtomicI32Store8UName wasm.OpcodeAtomicI64Store8UName\nfunc newOperationAtomicStore8(unsignedType unsignedType, arg memoryArg) unionOperation {\n\treturn unionOperation{Kind: operationKindAtomicStore8, B1: byte(unsignedType), U1: uint64(arg.Alignment), U2: uint64(arg.Offset)}\n}\n\n// NewOperationAtomicStore16 is a constructor for unionOperation with operationKindAtomicStore16.\n//\n// This corresponds to\n//\n//\twasm.OpcodeAtomicI32Store16UName wasm.OpcodeAtomicI64Store16UName\nfunc newOperationAtomicStore16(unsignedType unsignedType, arg memoryArg) unionOperation {\n\treturn unionOperation{Kind: operationKindAtomicStore16, B1: byte(unsignedType), U1: uint64(arg.Alignment), U2: uint64(arg.Offset)}\n}\n\n// NewOperationAtomicRMW is a constructor for unionOperation with operationKindAtomicRMW.\n//\n// This corresponds to\n//\n//\twasm.OpcodeAtomicI32RMWAddName wasm.OpcodeAtomicI64RmwAddName\n//\twasm.OpcodeAtomicI32RMWSubName wasm.OpcodeAtomicI64RmwSubName\n//\twasm.OpcodeAtomicI32RMWAndName wasm.OpcodeAtomicI64RmwAndName\n//\twasm.OpcodeAtomicI32RMWOrName wasm.OpcodeAtomicI64RmwOrName\n//\twasm.OpcodeAtomicI32RMWXorName wasm.OpcodeAtomicI64RmwXorName\nfunc newOperationAtomicRMW(unsignedType unsignedType, arg memoryArg, op atomicArithmeticOp) unionOperation {\n\treturn unionOperation{Kind: operationKindAtomicRMW, B1: byte(unsignedType), B2: byte(op), U1: uint64(arg.Alignment), U2: uint64(arg.Offset)}\n}\n\n// NewOperationAtomicRMW8 is a constructor for unionOperation with operationKindAtomicRMW8.\n//\n// This corresponds to\n//\n//\twasm.OpcodeAtomicI32RMW8AddUName wasm.OpcodeAtomicI64Rmw8AddUName\n//\twasm.OpcodeAtomicI32RMW8SubUName wasm.OpcodeAtomicI64Rmw8SubUName\n//\twasm.OpcodeAtomicI32RMW8AndUName wasm.OpcodeAtomicI64Rmw8AndUName\n//\twasm.OpcodeAtomicI32RMW8OrUName wasm.OpcodeAtomicI64Rmw8OrUName\n//\twasm.OpcodeAtomicI32RMW8XorUName wasm.OpcodeAtomicI64Rmw8XorUName\nfunc newOperationAtomicRMW8(unsignedType unsignedType, arg memoryArg, op atomicArithmeticOp) unionOperation {\n\treturn unionOperation{Kind: operationKindAtomicRMW8, B1: byte(unsignedType), B2: byte(op), U1: uint64(arg.Alignment), U2: uint64(arg.Offset)}\n}\n\n// NewOperationAtomicRMW16 is a constructor for unionOperation with operationKindAtomicRMW16.\n//\n// This corresponds to\n//\n//\twasm.OpcodeAtomicI32RMW16AddUName wasm.OpcodeAtomicI64Rmw16AddUName\n//\twasm.OpcodeAtomicI32RMW16SubUName wasm.OpcodeAtomicI64Rmw16SubUName\n//\twasm.OpcodeAtomicI32RMW16AndUName wasm.OpcodeAtomicI64Rmw16AndUName\n//\twasm.OpcodeAtomicI32RMW16OrUName wasm.OpcodeAtomicI64Rmw16OrUName\n//\twasm.OpcodeAtomicI32RMW16XorUName wasm.OpcodeAtomicI64Rmw16XorUName\nfunc newOperationAtomicRMW16(unsignedType unsignedType, arg memoryArg, op atomicArithmeticOp) unionOperation {\n\treturn unionOperation{Kind: operationKindAtomicRMW16, B1: byte(unsignedType), B2: byte(op), U1: uint64(arg.Alignment), U2: uint64(arg.Offset)}\n}\n\n// NewOperationAtomicRMWCmpxchg is a constructor for unionOperation with operationKindAtomicRMWCmpxchg.\n//\n// This corresponds to\n//\n//\twasm.OpcodeAtomicI32RMWCmpxchgName wasm.OpcodeAtomicI64RmwCmpxchgName\nfunc newOperationAtomicRMWCmpxchg(unsignedType unsignedType, arg memoryArg) unionOperation {\n\treturn unionOperation{Kind: operationKindAtomicRMWCmpxchg, B1: byte(unsignedType), U1: uint64(arg.Alignment), U2: uint64(arg.Offset)}\n}\n\n// NewOperationAtomicRMW8Cmpxchg is a constructor for unionOperation with operationKindAtomicRMW8Cmpxchg.\n//\n// This corresponds to\n//\n//\twasm.OpcodeAtomicI32RMW8CmpxchgUName wasm.OpcodeAtomicI64Rmw8CmpxchgUName\nfunc newOperationAtomicRMW8Cmpxchg(unsignedType unsignedType, arg memoryArg) unionOperation {\n\treturn unionOperation{Kind: operationKindAtomicRMW8Cmpxchg, B1: byte(unsignedType), U1: uint64(arg.Alignment), U2: uint64(arg.Offset)}\n}\n\n// NewOperationAtomicRMW16Cmpxchg is a constructor for unionOperation with operationKindAtomicRMW16Cmpxchg.\n//\n// This corresponds to\n//\n//\twasm.OpcodeAtomicI32RMW16CmpxchgUName wasm.OpcodeAtomicI64Rmw16CmpxchgUName\nfunc newOperationAtomicRMW16Cmpxchg(unsignedType unsignedType, arg memoryArg) unionOperation {\n\treturn unionOperation{Kind: operationKindAtomicRMW16Cmpxchg, B1: byte(unsignedType), U1: uint64(arg.Alignment), U2: uint64(arg.Offset)}\n}\n\n// newOperationTailCallReturnCall is a constructor for unionOperation with operationKindTailCallReturnCall.\n//\n// This corresponds to\n//\n//\twasm.OpcodeTailCallReturnCall.\nfunc newOperationTailCallReturnCall(functionIndex uint32) unionOperation {\n\treturn unionOperation{Kind: operationKindTailCallReturnCall, U1: uint64(functionIndex)}\n}\n\n// NewOperationCallIndirect is a constructor for unionOperation with operationKindTailCallReturnCallIndirect.\n//\n// This corresponds to\n//\n//\twasm.OpcodeTailCallReturnCallIndirect.\nfunc newOperationTailCallReturnCallIndirect(typeIndex, tableIndex uint32, dropDepth inclusiveRange, l label) unionOperation {\n\treturn unionOperation{Kind: operationKindTailCallReturnCallIndirect, U1: uint64(typeIndex), U2: uint64(tableIndex), Us: []uint64{dropDepth.AsU64(), uint64(l)}}\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/interpreter/signature.go",
    "content": "package interpreter\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/tetratelabs/wazero/internal/wasm\"\n)\n\n// signature represents how a Wasm opcode\n// manipulates the value stacks in terms of value types.\ntype signature struct {\n\tin, out []unsignedType\n}\n\nvar (\n\tsignature_None_None    = &signature{}\n\tsignature_Unknown_None = &signature{\n\t\tin: []unsignedType{unsignedTypeUnknown},\n\t}\n\tsignature_None_I32 = &signature{\n\t\tout: []unsignedType{unsignedTypeI32},\n\t}\n\tsignature_None_I64 = &signature{\n\t\tout: []unsignedType{unsignedTypeI64},\n\t}\n\tsignature_None_V128 = &signature{\n\t\tout: []unsignedType{unsignedTypeV128},\n\t}\n\tsignature_None_F32 = &signature{\n\t\tout: []unsignedType{unsignedTypeF32},\n\t}\n\tsignature_None_F64 = &signature{\n\t\tout: []unsignedType{unsignedTypeF64},\n\t}\n\tsignature_I32_None = &signature{\n\t\tin: []unsignedType{unsignedTypeI32},\n\t}\n\tsignature_I64_None = &signature{\n\t\tin: []unsignedType{unsignedTypeI64},\n\t}\n\tsignature_F32_None = &signature{\n\t\tin: []unsignedType{unsignedTypeF32},\n\t}\n\tsignature_F64_None = &signature{\n\t\tin: []unsignedType{unsignedTypeF64},\n\t}\n\tsignature_V128_None = &signature{\n\t\tin: []unsignedType{unsignedTypeV128},\n\t}\n\tsignature_I32_I32 = &signature{\n\t\tin:  []unsignedType{unsignedTypeI32},\n\t\tout: []unsignedType{unsignedTypeI32},\n\t}\n\tsignature_I32_I64 = &signature{\n\t\tin:  []unsignedType{unsignedTypeI32},\n\t\tout: []unsignedType{unsignedTypeI64},\n\t}\n\tsignature_I64_I64 = &signature{\n\t\tin:  []unsignedType{unsignedTypeI64},\n\t\tout: []unsignedType{unsignedTypeI64},\n\t}\n\tsignature_I32_F32 = &signature{\n\t\tin:  []unsignedType{unsignedTypeI32},\n\t\tout: []unsignedType{unsignedTypeF32},\n\t}\n\tsignature_I32_F64 = &signature{\n\t\tin:  []unsignedType{unsignedTypeI32},\n\t\tout: []unsignedType{unsignedTypeF64},\n\t}\n\tsignature_I64_I32 = &signature{\n\t\tin:  []unsignedType{unsignedTypeI64},\n\t\tout: []unsignedType{unsignedTypeI32},\n\t}\n\tsignature_I64_F32 = &signature{\n\t\tin:  []unsignedType{unsignedTypeI64},\n\t\tout: []unsignedType{unsignedTypeF32},\n\t}\n\tsignature_I64_F64 = &signature{\n\t\tin:  []unsignedType{unsignedTypeI64},\n\t\tout: []unsignedType{unsignedTypeF64},\n\t}\n\tsignature_F32_I32 = &signature{\n\t\tin:  []unsignedType{unsignedTypeF32},\n\t\tout: []unsignedType{unsignedTypeI32},\n\t}\n\tsignature_F32_I64 = &signature{\n\t\tin:  []unsignedType{unsignedTypeF32},\n\t\tout: []unsignedType{unsignedTypeI64},\n\t}\n\tsignature_F32_F64 = &signature{\n\t\tin:  []unsignedType{unsignedTypeF32},\n\t\tout: []unsignedType{unsignedTypeF64},\n\t}\n\tsignature_F32_F32 = &signature{\n\t\tin:  []unsignedType{unsignedTypeF32},\n\t\tout: []unsignedType{unsignedTypeF32},\n\t}\n\tsignature_F64_I32 = &signature{\n\t\tin:  []unsignedType{unsignedTypeF64},\n\t\tout: []unsignedType{unsignedTypeI32},\n\t}\n\tsignature_F64_F32 = &signature{\n\t\tin:  []unsignedType{unsignedTypeF64},\n\t\tout: []unsignedType{unsignedTypeF32},\n\t}\n\tsignature_F64_I64 = &signature{\n\t\tin:  []unsignedType{unsignedTypeF64},\n\t\tout: []unsignedType{unsignedTypeI64},\n\t}\n\tsignature_F64_F64 = &signature{\n\t\tin:  []unsignedType{unsignedTypeF64},\n\t\tout: []unsignedType{unsignedTypeF64},\n\t}\n\tsignature_I32I32_None = &signature{\n\t\tin: []unsignedType{unsignedTypeI32, unsignedTypeI32},\n\t}\n\n\tsignature_I32I32_I32 = &signature{\n\t\tin:  []unsignedType{unsignedTypeI32, unsignedTypeI32},\n\t\tout: []unsignedType{unsignedTypeI32},\n\t}\n\tsignature_I32I64_None = &signature{\n\t\tin: []unsignedType{unsignedTypeI32, unsignedTypeI64},\n\t}\n\tsignature_I32F32_None = &signature{\n\t\tin: []unsignedType{unsignedTypeI32, unsignedTypeF32},\n\t}\n\tsignature_I32F64_None = &signature{\n\t\tin: []unsignedType{unsignedTypeI32, unsignedTypeF64},\n\t}\n\tsignature_I64I32_I32 = &signature{\n\t\tin:  []unsignedType{unsignedTypeI64, unsignedTypeI32},\n\t\tout: []unsignedType{unsignedTypeI32},\n\t}\n\tsignature_I64I64_I32 = &signature{\n\t\tin:  []unsignedType{unsignedTypeI64, unsignedTypeI64},\n\t\tout: []unsignedType{unsignedTypeI32},\n\t}\n\tsignature_I64I64_I64 = &signature{\n\t\tin:  []unsignedType{unsignedTypeI64, unsignedTypeI64},\n\t\tout: []unsignedType{unsignedTypeI64},\n\t}\n\tsignature_F32F32_I32 = &signature{\n\t\tin:  []unsignedType{unsignedTypeF32, unsignedTypeF32},\n\t\tout: []unsignedType{unsignedTypeI32},\n\t}\n\tsignature_F32F32_F32 = &signature{\n\t\tin:  []unsignedType{unsignedTypeF32, unsignedTypeF32},\n\t\tout: []unsignedType{unsignedTypeF32},\n\t}\n\tsignature_F64F64_I32 = &signature{\n\t\tin:  []unsignedType{unsignedTypeF64, unsignedTypeF64},\n\t\tout: []unsignedType{unsignedTypeI32},\n\t}\n\tsignature_F64F64_F64 = &signature{\n\t\tin:  []unsignedType{unsignedTypeF64, unsignedTypeF64},\n\t\tout: []unsignedType{unsignedTypeF64},\n\t}\n\tsignature_I32I32I32_None = &signature{\n\t\tin: []unsignedType{unsignedTypeI32, unsignedTypeI32, unsignedTypeI32},\n\t}\n\tsignature_I32I64I32_None = &signature{\n\t\tin: []unsignedType{unsignedTypeI32, unsignedTypeI64, unsignedTypeI32},\n\t}\n\tsignature_UnknownUnknownI32_Unknown = &signature{\n\t\tin:  []unsignedType{unsignedTypeUnknown, unsignedTypeUnknown, unsignedTypeI32},\n\t\tout: []unsignedType{unsignedTypeUnknown},\n\t}\n\tsignature_V128V128_V128 = &signature{\n\t\tin:  []unsignedType{unsignedTypeV128, unsignedTypeV128},\n\t\tout: []unsignedType{unsignedTypeV128},\n\t}\n\tsignature_V128V128V128_V32 = &signature{\n\t\tin:  []unsignedType{unsignedTypeV128, unsignedTypeV128, unsignedTypeV128},\n\t\tout: []unsignedType{unsignedTypeV128},\n\t}\n\tsignature_I32_V128 = &signature{\n\t\tin:  []unsignedType{unsignedTypeI32},\n\t\tout: []unsignedType{unsignedTypeV128},\n\t}\n\tsignature_I32V128_None = &signature{\n\t\tin: []unsignedType{unsignedTypeI32, unsignedTypeV128},\n\t}\n\tsignature_I32V128_V128 = &signature{\n\t\tin:  []unsignedType{unsignedTypeI32, unsignedTypeV128},\n\t\tout: []unsignedType{unsignedTypeV128},\n\t}\n\tsignature_V128I32_V128 = &signature{\n\t\tin:  []unsignedType{unsignedTypeV128, unsignedTypeI32},\n\t\tout: []unsignedType{unsignedTypeV128},\n\t}\n\tsignature_V128I64_V128 = &signature{\n\t\tin:  []unsignedType{unsignedTypeV128, unsignedTypeI64},\n\t\tout: []unsignedType{unsignedTypeV128},\n\t}\n\tsignature_V128F32_V128 = &signature{\n\t\tin:  []unsignedType{unsignedTypeV128, unsignedTypeF32},\n\t\tout: []unsignedType{unsignedTypeV128},\n\t}\n\tsignature_V128F64_V128 = &signature{\n\t\tin:  []unsignedType{unsignedTypeV128, unsignedTypeF64},\n\t\tout: []unsignedType{unsignedTypeV128},\n\t}\n\tsignature_V128_I32 = &signature{\n\t\tin:  []unsignedType{unsignedTypeV128},\n\t\tout: []unsignedType{unsignedTypeI32},\n\t}\n\tsignature_V128_I64 = &signature{\n\t\tin:  []unsignedType{unsignedTypeV128},\n\t\tout: []unsignedType{unsignedTypeI64},\n\t}\n\tsignature_V128_F32 = &signature{\n\t\tin:  []unsignedType{unsignedTypeV128},\n\t\tout: []unsignedType{unsignedTypeF32},\n\t}\n\tsignature_V128_F64 = &signature{\n\t\tin:  []unsignedType{unsignedTypeV128},\n\t\tout: []unsignedType{unsignedTypeF64},\n\t}\n\tsignature_V128_V128 = &signature{\n\t\tin:  []unsignedType{unsignedTypeV128},\n\t\tout: []unsignedType{unsignedTypeV128},\n\t}\n\tsignature_I64_V128 = &signature{\n\t\tin:  []unsignedType{unsignedTypeI64},\n\t\tout: []unsignedType{unsignedTypeV128},\n\t}\n\tsignature_F32_V128 = &signature{\n\t\tin:  []unsignedType{unsignedTypeF32},\n\t\tout: []unsignedType{unsignedTypeV128},\n\t}\n\tsignature_F64_V128 = &signature{\n\t\tin:  []unsignedType{unsignedTypeF64},\n\t\tout: []unsignedType{unsignedTypeV128},\n\t}\n\tsignature_I32I64_I64 = &signature{\n\t\tin:  []unsignedType{unsignedTypeI32, unsignedTypeI64},\n\t\tout: []unsignedType{unsignedTypeI64},\n\t}\n\tsignature_I32I32I64_I32 = &signature{\n\t\tin:  []unsignedType{unsignedTypeI32, unsignedTypeI32, unsignedTypeI64},\n\t\tout: []unsignedType{unsignedTypeI32},\n\t}\n\tsignature_I32I64I64_I32 = &signature{\n\t\tin:  []unsignedType{unsignedTypeI32, unsignedTypeI64, unsignedTypeI64},\n\t\tout: []unsignedType{unsignedTypeI32},\n\t}\n\tsignature_I32I32I32_I32 = &signature{\n\t\tin:  []unsignedType{unsignedTypeI32, unsignedTypeI32, unsignedTypeI32},\n\t\tout: []unsignedType{unsignedTypeI32},\n\t}\n\tsignature_I32I64I64_I64 = &signature{\n\t\tin:  []unsignedType{unsignedTypeI32, unsignedTypeI64, unsignedTypeI64},\n\t\tout: []unsignedType{unsignedTypeI64},\n\t}\n)\n\n// wasmOpcodeSignature returns the signature of given Wasm opcode.\n// Note that some of opcodes' signature vary depending on\n// the function instance (for example, local types).\n// \"index\" parameter is not used by most of opcodes.\n// The returned signature is used for stack validation when lowering Wasm's opcodes to interpreterir.\nfunc (c *compiler) wasmOpcodeSignature(op wasm.Opcode, index uint32) (*signature, error) {\n\tswitch op {\n\tcase wasm.OpcodeUnreachable, wasm.OpcodeNop, wasm.OpcodeBlock, wasm.OpcodeLoop:\n\t\treturn signature_None_None, nil\n\tcase wasm.OpcodeIf:\n\t\treturn signature_I32_None, nil\n\tcase wasm.OpcodeElse, wasm.OpcodeEnd, wasm.OpcodeBr:\n\t\treturn signature_None_None, nil\n\tcase wasm.OpcodeBrIf, wasm.OpcodeBrTable:\n\t\treturn signature_I32_None, nil\n\tcase wasm.OpcodeReturn:\n\t\treturn signature_None_None, nil\n\tcase wasm.OpcodeCall, wasm.OpcodeTailCallReturnCall:\n\t\treturn c.funcTypeToSigs.get(c.funcs[index], false /* direct */), nil\n\tcase wasm.OpcodeCallIndirect, wasm.OpcodeTailCallReturnCallIndirect:\n\t\treturn c.funcTypeToSigs.get(index, true /* call_indirect */), nil\n\tcase wasm.OpcodeDrop:\n\t\treturn signature_Unknown_None, nil\n\tcase wasm.OpcodeSelect, wasm.OpcodeTypedSelect:\n\t\treturn signature_UnknownUnknownI32_Unknown, nil\n\tcase wasm.OpcodeLocalGet:\n\t\tinputLen := uint32(len(c.sig.Params))\n\t\tif l := uint32(len(c.localTypes)) + inputLen; index >= l {\n\t\t\treturn nil, fmt.Errorf(\"invalid local index for local.get %d >= %d\", index, l)\n\t\t}\n\t\tvar t wasm.ValueType\n\t\tif index < inputLen {\n\t\t\tt = c.sig.Params[index]\n\t\t} else {\n\t\t\tt = c.localTypes[index-inputLen]\n\t\t}\n\t\treturn wasmValueTypeToUnsignedOutSignature(t), nil\n\tcase wasm.OpcodeLocalSet:\n\t\tinputLen := uint32(len(c.sig.Params))\n\t\tif l := uint32(len(c.localTypes)) + inputLen; index >= l {\n\t\t\treturn nil, fmt.Errorf(\"invalid local index for local.get %d >= %d\", index, l)\n\t\t}\n\t\tvar t wasm.ValueType\n\t\tif index < inputLen {\n\t\t\tt = c.sig.Params[index]\n\t\t} else {\n\t\t\tt = c.localTypes[index-inputLen]\n\t\t}\n\t\treturn wasmValueTypeToUnsignedInSignature(t), nil\n\tcase wasm.OpcodeLocalTee:\n\t\tinputLen := uint32(len(c.sig.Params))\n\t\tif l := uint32(len(c.localTypes)) + inputLen; index >= l {\n\t\t\treturn nil, fmt.Errorf(\"invalid local index for local.get %d >= %d\", index, l)\n\t\t}\n\t\tvar t wasm.ValueType\n\t\tif index < inputLen {\n\t\t\tt = c.sig.Params[index]\n\t\t} else {\n\t\t\tt = c.localTypes[index-inputLen]\n\t\t}\n\t\treturn wasmValueTypeToUnsignedInOutSignature(t), nil\n\tcase wasm.OpcodeGlobalGet:\n\t\tif len(c.globals) <= int(index) {\n\t\t\treturn nil, fmt.Errorf(\"invalid global index for global.get %d >= %d\", index, len(c.globals))\n\t\t}\n\t\treturn wasmValueTypeToUnsignedOutSignature(c.globals[index].ValType), nil\n\tcase wasm.OpcodeGlobalSet:\n\t\tif len(c.globals) <= int(index) {\n\t\t\treturn nil, fmt.Errorf(\"invalid global index for global.get %d >= %d\", index, len(c.globals))\n\t\t}\n\t\treturn wasmValueTypeToUnsignedInSignature(c.globals[index].ValType), nil\n\tcase wasm.OpcodeI32Load:\n\t\treturn signature_I32_I32, nil\n\tcase wasm.OpcodeI64Load:\n\t\treturn signature_I32_I64, nil\n\tcase wasm.OpcodeF32Load:\n\t\treturn signature_I32_F32, nil\n\tcase wasm.OpcodeF64Load:\n\t\treturn signature_I32_F64, nil\n\tcase wasm.OpcodeI32Load8S, wasm.OpcodeI32Load8U, wasm.OpcodeI32Load16S, wasm.OpcodeI32Load16U:\n\t\treturn signature_I32_I32, nil\n\tcase wasm.OpcodeI64Load8S, wasm.OpcodeI64Load8U, wasm.OpcodeI64Load16S, wasm.OpcodeI64Load16U,\n\t\twasm.OpcodeI64Load32S, wasm.OpcodeI64Load32U:\n\t\treturn signature_I32_I64, nil\n\tcase wasm.OpcodeI32Store:\n\t\treturn signature_I32I32_None, nil\n\tcase wasm.OpcodeI64Store:\n\t\treturn signature_I32I64_None, nil\n\tcase wasm.OpcodeF32Store:\n\t\treturn signature_I32F32_None, nil\n\tcase wasm.OpcodeF64Store:\n\t\treturn signature_I32F64_None, nil\n\tcase wasm.OpcodeI32Store8:\n\t\treturn signature_I32I32_None, nil\n\tcase wasm.OpcodeI32Store16:\n\t\treturn signature_I32I32_None, nil\n\tcase wasm.OpcodeI64Store8:\n\t\treturn signature_I32I64_None, nil\n\tcase wasm.OpcodeI64Store16:\n\t\treturn signature_I32I64_None, nil\n\tcase wasm.OpcodeI64Store32:\n\t\treturn signature_I32I64_None, nil\n\tcase wasm.OpcodeMemorySize:\n\t\treturn signature_None_I32, nil\n\tcase wasm.OpcodeMemoryGrow:\n\t\treturn signature_I32_I32, nil\n\tcase wasm.OpcodeI32Const:\n\t\treturn signature_None_I32, nil\n\tcase wasm.OpcodeI64Const:\n\t\treturn signature_None_I64, nil\n\tcase wasm.OpcodeF32Const:\n\t\treturn signature_None_F32, nil\n\tcase wasm.OpcodeF64Const:\n\t\treturn signature_None_F64, nil\n\tcase wasm.OpcodeI32Eqz:\n\t\treturn signature_I32_I32, nil\n\tcase wasm.OpcodeI32Eq, wasm.OpcodeI32Ne, wasm.OpcodeI32LtS,\n\t\twasm.OpcodeI32LtU, wasm.OpcodeI32GtS, wasm.OpcodeI32GtU,\n\t\twasm.OpcodeI32LeS, wasm.OpcodeI32LeU, wasm.OpcodeI32GeS,\n\t\twasm.OpcodeI32GeU:\n\t\treturn signature_I32I32_I32, nil\n\tcase wasm.OpcodeI64Eqz:\n\t\treturn signature_I64_I32, nil\n\tcase wasm.OpcodeI64Eq, wasm.OpcodeI64Ne, wasm.OpcodeI64LtS,\n\t\twasm.OpcodeI64LtU, wasm.OpcodeI64GtS, wasm.OpcodeI64GtU,\n\t\twasm.OpcodeI64LeS, wasm.OpcodeI64LeU, wasm.OpcodeI64GeS,\n\t\twasm.OpcodeI64GeU:\n\t\treturn signature_I64I64_I32, nil\n\tcase wasm.OpcodeF32Eq, wasm.OpcodeF32Ne, wasm.OpcodeF32Lt,\n\t\twasm.OpcodeF32Gt, wasm.OpcodeF32Le, wasm.OpcodeF32Ge:\n\t\treturn signature_F32F32_I32, nil\n\tcase wasm.OpcodeF64Eq, wasm.OpcodeF64Ne, wasm.OpcodeF64Lt,\n\t\twasm.OpcodeF64Gt, wasm.OpcodeF64Le, wasm.OpcodeF64Ge:\n\t\treturn signature_F64F64_I32, nil\n\tcase wasm.OpcodeI32Clz, wasm.OpcodeI32Ctz, wasm.OpcodeI32Popcnt:\n\t\treturn signature_I32_I32, nil\n\tcase wasm.OpcodeI32Add, wasm.OpcodeI32Sub, wasm.OpcodeI32Mul,\n\t\twasm.OpcodeI32DivS, wasm.OpcodeI32DivU, wasm.OpcodeI32RemS,\n\t\twasm.OpcodeI32RemU, wasm.OpcodeI32And, wasm.OpcodeI32Or,\n\t\twasm.OpcodeI32Xor, wasm.OpcodeI32Shl, wasm.OpcodeI32ShrS,\n\t\twasm.OpcodeI32ShrU, wasm.OpcodeI32Rotl, wasm.OpcodeI32Rotr:\n\t\treturn signature_I32I32_I32, nil\n\tcase wasm.OpcodeI64Clz, wasm.OpcodeI64Ctz, wasm.OpcodeI64Popcnt:\n\t\treturn signature_I64_I64, nil\n\tcase wasm.OpcodeI64Add, wasm.OpcodeI64Sub, wasm.OpcodeI64Mul,\n\t\twasm.OpcodeI64DivS, wasm.OpcodeI64DivU, wasm.OpcodeI64RemS,\n\t\twasm.OpcodeI64RemU, wasm.OpcodeI64And, wasm.OpcodeI64Or,\n\t\twasm.OpcodeI64Xor, wasm.OpcodeI64Shl, wasm.OpcodeI64ShrS,\n\t\twasm.OpcodeI64ShrU, wasm.OpcodeI64Rotl, wasm.OpcodeI64Rotr:\n\t\treturn signature_I64I64_I64, nil\n\tcase wasm.OpcodeF32Abs, wasm.OpcodeF32Neg, wasm.OpcodeF32Ceil,\n\t\twasm.OpcodeF32Floor, wasm.OpcodeF32Trunc, wasm.OpcodeF32Nearest,\n\t\twasm.OpcodeF32Sqrt:\n\t\treturn signature_F32_F32, nil\n\tcase wasm.OpcodeF32Add, wasm.OpcodeF32Sub, wasm.OpcodeF32Mul,\n\t\twasm.OpcodeF32Div, wasm.OpcodeF32Min, wasm.OpcodeF32Max,\n\t\twasm.OpcodeF32Copysign:\n\t\treturn signature_F32F32_F32, nil\n\tcase wasm.OpcodeF64Abs, wasm.OpcodeF64Neg, wasm.OpcodeF64Ceil,\n\t\twasm.OpcodeF64Floor, wasm.OpcodeF64Trunc, wasm.OpcodeF64Nearest,\n\t\twasm.OpcodeF64Sqrt:\n\t\treturn signature_F64_F64, nil\n\tcase wasm.OpcodeF64Add, wasm.OpcodeF64Sub, wasm.OpcodeF64Mul,\n\t\twasm.OpcodeF64Div, wasm.OpcodeF64Min, wasm.OpcodeF64Max,\n\t\twasm.OpcodeF64Copysign:\n\t\treturn signature_F64F64_F64, nil\n\tcase wasm.OpcodeI32WrapI64:\n\t\treturn signature_I64_I32, nil\n\tcase wasm.OpcodeI32TruncF32S, wasm.OpcodeI32TruncF32U:\n\t\treturn signature_F32_I32, nil\n\tcase wasm.OpcodeI32TruncF64S, wasm.OpcodeI32TruncF64U:\n\t\treturn signature_F64_I32, nil\n\tcase wasm.OpcodeI64ExtendI32S, wasm.OpcodeI64ExtendI32U:\n\t\treturn signature_I32_I64, nil\n\tcase wasm.OpcodeI64TruncF32S, wasm.OpcodeI64TruncF32U:\n\t\treturn signature_F32_I64, nil\n\tcase wasm.OpcodeI64TruncF64S, wasm.OpcodeI64TruncF64U:\n\t\treturn signature_F64_I64, nil\n\tcase wasm.OpcodeF32ConvertI32S, wasm.OpcodeF32ConvertI32U:\n\t\treturn signature_I32_F32, nil\n\tcase wasm.OpcodeF32ConvertI64S, wasm.OpcodeF32ConvertI64U:\n\t\treturn signature_I64_F32, nil\n\tcase wasm.OpcodeF32DemoteF64:\n\t\treturn signature_F64_F32, nil\n\tcase wasm.OpcodeF64ConvertI32S, wasm.OpcodeF64ConvertI32U:\n\t\treturn signature_I32_F64, nil\n\tcase wasm.OpcodeF64ConvertI64S, wasm.OpcodeF64ConvertI64U:\n\t\treturn signature_I64_F64, nil\n\tcase wasm.OpcodeF64PromoteF32:\n\t\treturn signature_F32_F64, nil\n\tcase wasm.OpcodeI32ReinterpretF32:\n\t\treturn signature_F32_I32, nil\n\tcase wasm.OpcodeI64ReinterpretF64:\n\t\treturn signature_F64_I64, nil\n\tcase wasm.OpcodeF32ReinterpretI32:\n\t\treturn signature_I32_F32, nil\n\tcase wasm.OpcodeF64ReinterpretI64:\n\t\treturn signature_I64_F64, nil\n\tcase wasm.OpcodeI32Extend8S, wasm.OpcodeI32Extend16S:\n\t\treturn signature_I32_I32, nil\n\tcase wasm.OpcodeI64Extend8S, wasm.OpcodeI64Extend16S, wasm.OpcodeI64Extend32S:\n\t\treturn signature_I64_I64, nil\n\tcase wasm.OpcodeTableGet:\n\t\t// table.get takes table's offset and pushes the ref type value of opaque pointer as i64 value onto the stack.\n\t\treturn signature_I32_I64, nil\n\tcase wasm.OpcodeTableSet:\n\t\t// table.set takes table's offset and the ref type value of opaque pointer as i64 value.\n\t\treturn signature_I32I64_None, nil\n\tcase wasm.OpcodeRefFunc:\n\t\t// ref.func is translated as pushing the compiled function's opaque pointer (uint64) at interpreterir layer.\n\t\treturn signature_None_I64, nil\n\tcase wasm.OpcodeRefIsNull:\n\t\t// ref.is_null is translated as checking if the uint64 on the top of the stack (opaque pointer) is zero or not.\n\t\treturn signature_I64_I32, nil\n\tcase wasm.OpcodeRefNull:\n\t\t// ref.null is translated as i64.const 0.\n\t\treturn signature_None_I64, nil\n\tcase wasm.OpcodeMiscPrefix:\n\t\tswitch miscOp := c.body[c.pc+1]; miscOp {\n\t\tcase wasm.OpcodeMiscI32TruncSatF32S, wasm.OpcodeMiscI32TruncSatF32U:\n\t\t\treturn signature_F32_I32, nil\n\t\tcase wasm.OpcodeMiscI32TruncSatF64S, wasm.OpcodeMiscI32TruncSatF64U:\n\t\t\treturn signature_F64_I32, nil\n\t\tcase wasm.OpcodeMiscI64TruncSatF32S, wasm.OpcodeMiscI64TruncSatF32U:\n\t\t\treturn signature_F32_I64, nil\n\t\tcase wasm.OpcodeMiscI64TruncSatF64S, wasm.OpcodeMiscI64TruncSatF64U:\n\t\t\treturn signature_F64_I64, nil\n\t\tcase wasm.OpcodeMiscMemoryInit, wasm.OpcodeMiscMemoryCopy, wasm.OpcodeMiscMemoryFill,\n\t\t\twasm.OpcodeMiscTableInit, wasm.OpcodeMiscTableCopy:\n\t\t\treturn signature_I32I32I32_None, nil\n\t\tcase wasm.OpcodeMiscDataDrop, wasm.OpcodeMiscElemDrop:\n\t\t\treturn signature_None_None, nil\n\t\tcase wasm.OpcodeMiscTableGrow:\n\t\t\treturn signature_I64I32_I32, nil\n\t\tcase wasm.OpcodeMiscTableSize:\n\t\t\treturn signature_None_I32, nil\n\t\tcase wasm.OpcodeMiscTableFill:\n\t\t\treturn signature_I32I64I32_None, nil\n\t\tdefault:\n\t\t\treturn nil, fmt.Errorf(\"unsupported misc instruction in interpreterir: 0x%x\", op)\n\t\t}\n\tcase wasm.OpcodeVecPrefix:\n\t\tswitch vecOp := c.body[c.pc+1]; vecOp {\n\t\tcase wasm.OpcodeVecV128Const:\n\t\t\treturn signature_None_V128, nil\n\t\tcase wasm.OpcodeVecV128Load, wasm.OpcodeVecV128Load8x8s, wasm.OpcodeVecV128Load8x8u,\n\t\t\twasm.OpcodeVecV128Load16x4s, wasm.OpcodeVecV128Load16x4u, wasm.OpcodeVecV128Load32x2s,\n\t\t\twasm.OpcodeVecV128Load32x2u, wasm.OpcodeVecV128Load8Splat, wasm.OpcodeVecV128Load16Splat,\n\t\t\twasm.OpcodeVecV128Load32Splat, wasm.OpcodeVecV128Load64Splat, wasm.OpcodeVecV128Load32zero,\n\t\t\twasm.OpcodeVecV128Load64zero:\n\t\t\treturn signature_I32_V128, nil\n\t\tcase wasm.OpcodeVecV128Load8Lane, wasm.OpcodeVecV128Load16Lane,\n\t\t\twasm.OpcodeVecV128Load32Lane, wasm.OpcodeVecV128Load64Lane:\n\t\t\treturn signature_I32V128_V128, nil\n\t\tcase wasm.OpcodeVecV128Store,\n\t\t\twasm.OpcodeVecV128Store8Lane,\n\t\t\twasm.OpcodeVecV128Store16Lane,\n\t\t\twasm.OpcodeVecV128Store32Lane,\n\t\t\twasm.OpcodeVecV128Store64Lane:\n\t\t\treturn signature_I32V128_None, nil\n\t\tcase wasm.OpcodeVecI8x16ExtractLaneS,\n\t\t\twasm.OpcodeVecI8x16ExtractLaneU,\n\t\t\twasm.OpcodeVecI16x8ExtractLaneS,\n\t\t\twasm.OpcodeVecI16x8ExtractLaneU,\n\t\t\twasm.OpcodeVecI32x4ExtractLane:\n\t\t\treturn signature_V128_I32, nil\n\t\tcase wasm.OpcodeVecI64x2ExtractLane:\n\t\t\treturn signature_V128_I64, nil\n\t\tcase wasm.OpcodeVecF32x4ExtractLane:\n\t\t\treturn signature_V128_F32, nil\n\t\tcase wasm.OpcodeVecF64x2ExtractLane:\n\t\t\treturn signature_V128_F64, nil\n\t\tcase wasm.OpcodeVecI8x16ReplaceLane, wasm.OpcodeVecI16x8ReplaceLane, wasm.OpcodeVecI32x4ReplaceLane,\n\t\t\twasm.OpcodeVecI8x16Shl, wasm.OpcodeVecI8x16ShrS, wasm.OpcodeVecI8x16ShrU,\n\t\t\twasm.OpcodeVecI16x8Shl, wasm.OpcodeVecI16x8ShrS, wasm.OpcodeVecI16x8ShrU,\n\t\t\twasm.OpcodeVecI32x4Shl, wasm.OpcodeVecI32x4ShrS, wasm.OpcodeVecI32x4ShrU,\n\t\t\twasm.OpcodeVecI64x2Shl, wasm.OpcodeVecI64x2ShrS, wasm.OpcodeVecI64x2ShrU:\n\t\t\treturn signature_V128I32_V128, nil\n\t\tcase wasm.OpcodeVecI64x2ReplaceLane:\n\t\t\treturn signature_V128I64_V128, nil\n\t\tcase wasm.OpcodeVecF32x4ReplaceLane:\n\t\t\treturn signature_V128F32_V128, nil\n\t\tcase wasm.OpcodeVecF64x2ReplaceLane:\n\t\t\treturn signature_V128F64_V128, nil\n\t\tcase wasm.OpcodeVecI8x16Splat,\n\t\t\twasm.OpcodeVecI16x8Splat,\n\t\t\twasm.OpcodeVecI32x4Splat:\n\t\t\treturn signature_I32_V128, nil\n\t\tcase wasm.OpcodeVecI64x2Splat:\n\t\t\treturn signature_I64_V128, nil\n\t\tcase wasm.OpcodeVecF32x4Splat:\n\t\t\treturn signature_F32_V128, nil\n\t\tcase wasm.OpcodeVecF64x2Splat:\n\t\t\treturn signature_F64_V128, nil\n\t\tcase wasm.OpcodeVecV128i8x16Shuffle, wasm.OpcodeVecI8x16Swizzle, wasm.OpcodeVecV128And, wasm.OpcodeVecV128Or, wasm.OpcodeVecV128Xor, wasm.OpcodeVecV128AndNot:\n\t\t\treturn signature_V128V128_V128, nil\n\t\tcase wasm.OpcodeVecI8x16AllTrue, wasm.OpcodeVecI16x8AllTrue, wasm.OpcodeVecI32x4AllTrue, wasm.OpcodeVecI64x2AllTrue,\n\t\t\twasm.OpcodeVecV128AnyTrue,\n\t\t\twasm.OpcodeVecI8x16BitMask, wasm.OpcodeVecI16x8BitMask, wasm.OpcodeVecI32x4BitMask, wasm.OpcodeVecI64x2BitMask:\n\t\t\treturn signature_V128_I32, nil\n\t\tcase wasm.OpcodeVecV128Not, wasm.OpcodeVecI8x16Neg, wasm.OpcodeVecI16x8Neg, wasm.OpcodeVecI32x4Neg, wasm.OpcodeVecI64x2Neg,\n\t\t\twasm.OpcodeVecF32x4Neg, wasm.OpcodeVecF64x2Neg, wasm.OpcodeVecF32x4Sqrt, wasm.OpcodeVecF64x2Sqrt,\n\t\t\twasm.OpcodeVecI8x16Abs, wasm.OpcodeVecI8x16Popcnt, wasm.OpcodeVecI16x8Abs, wasm.OpcodeVecI32x4Abs, wasm.OpcodeVecI64x2Abs,\n\t\t\twasm.OpcodeVecF32x4Abs, wasm.OpcodeVecF64x2Abs,\n\t\t\twasm.OpcodeVecF32x4Ceil, wasm.OpcodeVecF32x4Floor, wasm.OpcodeVecF32x4Trunc, wasm.OpcodeVecF32x4Nearest,\n\t\t\twasm.OpcodeVecF64x2Ceil, wasm.OpcodeVecF64x2Floor, wasm.OpcodeVecF64x2Trunc, wasm.OpcodeVecF64x2Nearest,\n\t\t\twasm.OpcodeVecI16x8ExtendLowI8x16S, wasm.OpcodeVecI16x8ExtendHighI8x16S, wasm.OpcodeVecI16x8ExtendLowI8x16U, wasm.OpcodeVecI16x8ExtendHighI8x16U,\n\t\t\twasm.OpcodeVecI32x4ExtendLowI16x8S, wasm.OpcodeVecI32x4ExtendHighI16x8S, wasm.OpcodeVecI32x4ExtendLowI16x8U, wasm.OpcodeVecI32x4ExtendHighI16x8U,\n\t\t\twasm.OpcodeVecI64x2ExtendLowI32x4S, wasm.OpcodeVecI64x2ExtendHighI32x4S, wasm.OpcodeVecI64x2ExtendLowI32x4U, wasm.OpcodeVecI64x2ExtendHighI32x4U,\n\t\t\twasm.OpcodeVecI16x8ExtaddPairwiseI8x16S, wasm.OpcodeVecI16x8ExtaddPairwiseI8x16U, wasm.OpcodeVecI32x4ExtaddPairwiseI16x8S, wasm.OpcodeVecI32x4ExtaddPairwiseI16x8U,\n\t\t\twasm.OpcodeVecF64x2PromoteLowF32x4Zero, wasm.OpcodeVecF32x4DemoteF64x2Zero,\n\t\t\twasm.OpcodeVecF32x4ConvertI32x4S, wasm.OpcodeVecF32x4ConvertI32x4U,\n\t\t\twasm.OpcodeVecF64x2ConvertLowI32x4S, wasm.OpcodeVecF64x2ConvertLowI32x4U,\n\t\t\twasm.OpcodeVecI32x4TruncSatF32x4S, wasm.OpcodeVecI32x4TruncSatF32x4U,\n\t\t\twasm.OpcodeVecI32x4TruncSatF64x2SZero, wasm.OpcodeVecI32x4TruncSatF64x2UZero:\n\t\t\treturn signature_V128_V128, nil\n\t\tcase wasm.OpcodeVecV128Bitselect:\n\t\t\treturn signature_V128V128V128_V32, nil\n\t\tcase wasm.OpcodeVecI8x16Eq, wasm.OpcodeVecI8x16Ne, wasm.OpcodeVecI8x16LtS, wasm.OpcodeVecI8x16LtU, wasm.OpcodeVecI8x16GtS,\n\t\t\twasm.OpcodeVecI8x16GtU, wasm.OpcodeVecI8x16LeS, wasm.OpcodeVecI8x16LeU, wasm.OpcodeVecI8x16GeS, wasm.OpcodeVecI8x16GeU,\n\t\t\twasm.OpcodeVecI16x8Eq, wasm.OpcodeVecI16x8Ne, wasm.OpcodeVecI16x8LtS, wasm.OpcodeVecI16x8LtU, wasm.OpcodeVecI16x8GtS,\n\t\t\twasm.OpcodeVecI16x8GtU, wasm.OpcodeVecI16x8LeS, wasm.OpcodeVecI16x8LeU, wasm.OpcodeVecI16x8GeS, wasm.OpcodeVecI16x8GeU,\n\t\t\twasm.OpcodeVecI32x4Eq, wasm.OpcodeVecI32x4Ne, wasm.OpcodeVecI32x4LtS, wasm.OpcodeVecI32x4LtU, wasm.OpcodeVecI32x4GtS,\n\t\t\twasm.OpcodeVecI32x4GtU, wasm.OpcodeVecI32x4LeS, wasm.OpcodeVecI32x4LeU, wasm.OpcodeVecI32x4GeS, wasm.OpcodeVecI32x4GeU,\n\t\t\twasm.OpcodeVecI64x2Eq, wasm.OpcodeVecI64x2Ne, wasm.OpcodeVecI64x2LtS, wasm.OpcodeVecI64x2GtS, wasm.OpcodeVecI64x2LeS,\n\t\t\twasm.OpcodeVecI64x2GeS, wasm.OpcodeVecF32x4Eq, wasm.OpcodeVecF32x4Ne, wasm.OpcodeVecF32x4Lt, wasm.OpcodeVecF32x4Gt,\n\t\t\twasm.OpcodeVecF32x4Le, wasm.OpcodeVecF32x4Ge, wasm.OpcodeVecF64x2Eq, wasm.OpcodeVecF64x2Ne, wasm.OpcodeVecF64x2Lt,\n\t\t\twasm.OpcodeVecF64x2Gt, wasm.OpcodeVecF64x2Le, wasm.OpcodeVecF64x2Ge,\n\t\t\twasm.OpcodeVecI8x16Add, wasm.OpcodeVecI8x16AddSatS, wasm.OpcodeVecI8x16AddSatU, wasm.OpcodeVecI8x16Sub,\n\t\t\twasm.OpcodeVecI8x16SubSatS, wasm.OpcodeVecI8x16SubSatU,\n\t\t\twasm.OpcodeVecI16x8Add, wasm.OpcodeVecI16x8AddSatS, wasm.OpcodeVecI16x8AddSatU, wasm.OpcodeVecI16x8Sub,\n\t\t\twasm.OpcodeVecI16x8SubSatS, wasm.OpcodeVecI16x8SubSatU, wasm.OpcodeVecI16x8Mul,\n\t\t\twasm.OpcodeVecI32x4Add, wasm.OpcodeVecI32x4Sub, wasm.OpcodeVecI32x4Mul,\n\t\t\twasm.OpcodeVecI64x2Add, wasm.OpcodeVecI64x2Sub, wasm.OpcodeVecI64x2Mul,\n\t\t\twasm.OpcodeVecF32x4Add, wasm.OpcodeVecF32x4Sub, wasm.OpcodeVecF32x4Mul, wasm.OpcodeVecF32x4Div,\n\t\t\twasm.OpcodeVecF64x2Add, wasm.OpcodeVecF64x2Sub, wasm.OpcodeVecF64x2Mul, wasm.OpcodeVecF64x2Div,\n\t\t\twasm.OpcodeVecI8x16MinS, wasm.OpcodeVecI8x16MinU, wasm.OpcodeVecI8x16MaxS, wasm.OpcodeVecI8x16MaxU, wasm.OpcodeVecI8x16AvgrU,\n\t\t\twasm.OpcodeVecI16x8MinS, wasm.OpcodeVecI16x8MinU, wasm.OpcodeVecI16x8MaxS, wasm.OpcodeVecI16x8MaxU, wasm.OpcodeVecI16x8AvgrU,\n\t\t\twasm.OpcodeVecI32x4MinS, wasm.OpcodeVecI32x4MinU, wasm.OpcodeVecI32x4MaxS, wasm.OpcodeVecI32x4MaxU,\n\t\t\twasm.OpcodeVecF32x4Min, wasm.OpcodeVecF32x4Max, wasm.OpcodeVecF64x2Min, wasm.OpcodeVecF64x2Max,\n\t\t\twasm.OpcodeVecF32x4Pmin, wasm.OpcodeVecF32x4Pmax, wasm.OpcodeVecF64x2Pmin, wasm.OpcodeVecF64x2Pmax,\n\t\t\twasm.OpcodeVecI16x8Q15mulrSatS,\n\t\t\twasm.OpcodeVecI16x8ExtMulLowI8x16S, wasm.OpcodeVecI16x8ExtMulHighI8x16S, wasm.OpcodeVecI16x8ExtMulLowI8x16U, wasm.OpcodeVecI16x8ExtMulHighI8x16U,\n\t\t\twasm.OpcodeVecI32x4ExtMulLowI16x8S, wasm.OpcodeVecI32x4ExtMulHighI16x8S, wasm.OpcodeVecI32x4ExtMulLowI16x8U, wasm.OpcodeVecI32x4ExtMulHighI16x8U,\n\t\t\twasm.OpcodeVecI64x2ExtMulLowI32x4S, wasm.OpcodeVecI64x2ExtMulHighI32x4S, wasm.OpcodeVecI64x2ExtMulLowI32x4U, wasm.OpcodeVecI64x2ExtMulHighI32x4U,\n\t\t\twasm.OpcodeVecI32x4DotI16x8S,\n\t\t\twasm.OpcodeVecI8x16NarrowI16x8S, wasm.OpcodeVecI8x16NarrowI16x8U, wasm.OpcodeVecI16x8NarrowI32x4S, wasm.OpcodeVecI16x8NarrowI32x4U:\n\t\t\treturn signature_V128V128_V128, nil\n\t\tdefault:\n\t\t\treturn nil, fmt.Errorf(\"unsupported vector instruction in interpreterir: %s\", wasm.VectorInstructionName(vecOp))\n\t\t}\n\tcase wasm.OpcodeAtomicPrefix:\n\t\tswitch atomicOp := c.body[c.pc+1]; atomicOp {\n\t\tcase wasm.OpcodeAtomicMemoryNotify:\n\t\t\treturn signature_I32I32_I32, nil\n\t\tcase wasm.OpcodeAtomicMemoryWait32:\n\t\t\treturn signature_I32I32I64_I32, nil\n\t\tcase wasm.OpcodeAtomicMemoryWait64:\n\t\t\treturn signature_I32I64I64_I32, nil\n\t\tcase wasm.OpcodeAtomicFence:\n\t\t\treturn signature_None_None, nil\n\t\tcase wasm.OpcodeAtomicI32Load, wasm.OpcodeAtomicI32Load8U, wasm.OpcodeAtomicI32Load16U:\n\t\t\treturn signature_I32_I32, nil\n\t\tcase wasm.OpcodeAtomicI64Load, wasm.OpcodeAtomicI64Load8U, wasm.OpcodeAtomicI64Load16U, wasm.OpcodeAtomicI64Load32U:\n\t\t\treturn signature_I32_I64, nil\n\t\tcase wasm.OpcodeAtomicI32Store, wasm.OpcodeAtomicI32Store8, wasm.OpcodeAtomicI32Store16:\n\t\t\treturn signature_I32I32_None, nil\n\t\tcase wasm.OpcodeAtomicI64Store, wasm.OpcodeAtomicI64Store8, wasm.OpcodeAtomicI64Store16, wasm.OpcodeAtomicI64Store32:\n\t\t\treturn signature_I32I64_None, nil\n\t\tcase wasm.OpcodeAtomicI32RmwAdd, wasm.OpcodeAtomicI32RmwSub, wasm.OpcodeAtomicI32RmwAnd, wasm.OpcodeAtomicI32RmwOr, wasm.OpcodeAtomicI32RmwXor, wasm.OpcodeAtomicI32RmwXchg,\n\t\t\twasm.OpcodeAtomicI32Rmw8AddU, wasm.OpcodeAtomicI32Rmw8SubU, wasm.OpcodeAtomicI32Rmw8AndU, wasm.OpcodeAtomicI32Rmw8OrU, wasm.OpcodeAtomicI32Rmw8XorU, wasm.OpcodeAtomicI32Rmw8XchgU,\n\t\t\twasm.OpcodeAtomicI32Rmw16AddU, wasm.OpcodeAtomicI32Rmw16SubU, wasm.OpcodeAtomicI32Rmw16AndU, wasm.OpcodeAtomicI32Rmw16OrU, wasm.OpcodeAtomicI32Rmw16XorU, wasm.OpcodeAtomicI32Rmw16XchgU:\n\t\t\treturn signature_I32I32_I32, nil\n\t\tcase wasm.OpcodeAtomicI64RmwAdd, wasm.OpcodeAtomicI64RmwSub, wasm.OpcodeAtomicI64RmwAnd, wasm.OpcodeAtomicI64RmwOr, wasm.OpcodeAtomicI64RmwXor, wasm.OpcodeAtomicI64RmwXchg,\n\t\t\twasm.OpcodeAtomicI64Rmw8AddU, wasm.OpcodeAtomicI64Rmw8SubU, wasm.OpcodeAtomicI64Rmw8AndU, wasm.OpcodeAtomicI64Rmw8OrU, wasm.OpcodeAtomicI64Rmw8XorU, wasm.OpcodeAtomicI64Rmw8XchgU,\n\t\t\twasm.OpcodeAtomicI64Rmw16AddU, wasm.OpcodeAtomicI64Rmw16SubU, wasm.OpcodeAtomicI64Rmw16AndU, wasm.OpcodeAtomicI64Rmw16OrU, wasm.OpcodeAtomicI64Rmw16XorU, wasm.OpcodeAtomicI64Rmw16XchgU,\n\t\t\twasm.OpcodeAtomicI64Rmw32AddU, wasm.OpcodeAtomicI64Rmw32SubU, wasm.OpcodeAtomicI64Rmw32AndU, wasm.OpcodeAtomicI64Rmw32OrU, wasm.OpcodeAtomicI64Rmw32XorU, wasm.OpcodeAtomicI64Rmw32XchgU:\n\t\t\treturn signature_I32I64_I64, nil\n\t\tcase wasm.OpcodeAtomicI32RmwCmpxchg, wasm.OpcodeAtomicI32Rmw8CmpxchgU, wasm.OpcodeAtomicI32Rmw16CmpxchgU:\n\t\t\treturn signature_I32I32I32_I32, nil\n\t\tcase wasm.OpcodeAtomicI64RmwCmpxchg, wasm.OpcodeAtomicI64Rmw8CmpxchgU, wasm.OpcodeAtomicI64Rmw16CmpxchgU, wasm.OpcodeAtomicI64Rmw32CmpxchgU:\n\t\t\treturn signature_I32I64I64_I64, nil\n\t\tdefault:\n\t\t\treturn nil, fmt.Errorf(\"unsupported atomic instruction in interpreterir: %s\", wasm.AtomicInstructionName(atomicOp))\n\t\t}\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"unsupported instruction in interpreterir: 0x%x\", op)\n\t}\n}\n\n// funcTypeToIRSignatures is the central cache for a module to get the *signature\n// for function calls.\ntype funcTypeToIRSignatures struct {\n\tdirectCalls   []*signature\n\tindirectCalls []*signature\n\twasmTypes     []wasm.FunctionType\n}\n\n// get returns the *signature for the direct or indirect function call against functions whose type is at `typeIndex`.\nfunc (f *funcTypeToIRSignatures) get(typeIndex wasm.Index, indirect bool) *signature {\n\tvar sig *signature\n\tif indirect {\n\t\tsig = f.indirectCalls[typeIndex]\n\t} else {\n\t\tsig = f.directCalls[typeIndex]\n\t}\n\tif sig != nil {\n\t\treturn sig\n\t}\n\n\ttp := &f.wasmTypes[typeIndex]\n\tif indirect {\n\t\tsig = &signature{\n\t\t\tin:  make([]unsignedType, 0, len(tp.Params)+1), // +1 to reserve space for call indirect index.\n\t\t\tout: make([]unsignedType, 0, len(tp.Results)),\n\t\t}\n\t} else {\n\t\tsig = &signature{\n\t\t\tin:  make([]unsignedType, 0, len(tp.Params)),\n\t\t\tout: make([]unsignedType, 0, len(tp.Results)),\n\t\t}\n\t}\n\n\tfor _, vt := range tp.Params {\n\t\tsig.in = append(sig.in, wasmValueTypeTounsignedType(vt))\n\t}\n\tfor _, vt := range tp.Results {\n\t\tsig.out = append(sig.out, wasmValueTypeTounsignedType(vt))\n\t}\n\n\tif indirect {\n\t\tsig.in = append(sig.in, unsignedTypeI32)\n\t\tf.indirectCalls[typeIndex] = sig\n\t} else {\n\t\tf.directCalls[typeIndex] = sig\n\t}\n\treturn sig\n}\n\nfunc wasmValueTypeTounsignedType(vt wasm.ValueType) unsignedType {\n\tswitch vt {\n\tcase wasm.ValueTypeI32:\n\t\treturn unsignedTypeI32\n\tcase wasm.ValueTypeI64,\n\t\t// From interpreterir layer, ref type values are opaque 64-bit pointers.\n\t\twasm.ValueTypeExternref, wasm.ValueTypeFuncref:\n\t\treturn unsignedTypeI64\n\tcase wasm.ValueTypeF32:\n\t\treturn unsignedTypeF32\n\tcase wasm.ValueTypeF64:\n\t\treturn unsignedTypeF64\n\tcase wasm.ValueTypeV128:\n\t\treturn unsignedTypeV128\n\t}\n\tpanic(\"unreachable\")\n}\n\nfunc wasmValueTypeToUnsignedOutSignature(vt wasm.ValueType) *signature {\n\tswitch vt {\n\tcase wasm.ValueTypeI32:\n\t\treturn signature_None_I32\n\tcase wasm.ValueTypeI64,\n\t\t// From interpreterir layer, ref type values are opaque 64-bit pointers.\n\t\twasm.ValueTypeExternref, wasm.ValueTypeFuncref:\n\t\treturn signature_None_I64\n\tcase wasm.ValueTypeF32:\n\t\treturn signature_None_F32\n\tcase wasm.ValueTypeF64:\n\t\treturn signature_None_F64\n\tcase wasm.ValueTypeV128:\n\t\treturn signature_None_V128\n\t}\n\tpanic(\"unreachable\")\n}\n\nfunc wasmValueTypeToUnsignedInSignature(vt wasm.ValueType) *signature {\n\tswitch vt {\n\tcase wasm.ValueTypeI32:\n\t\treturn signature_I32_None\n\tcase wasm.ValueTypeI64,\n\t\t// From interpreterir layer, ref type values are opaque 64-bit pointers.\n\t\twasm.ValueTypeExternref, wasm.ValueTypeFuncref:\n\t\treturn signature_I64_None\n\tcase wasm.ValueTypeF32:\n\t\treturn signature_F32_None\n\tcase wasm.ValueTypeF64:\n\t\treturn signature_F64_None\n\tcase wasm.ValueTypeV128:\n\t\treturn signature_V128_None\n\t}\n\tpanic(\"unreachable\")\n}\n\nfunc wasmValueTypeToUnsignedInOutSignature(vt wasm.ValueType) *signature {\n\tswitch vt {\n\tcase wasm.ValueTypeI32:\n\t\treturn signature_I32_I32\n\tcase wasm.ValueTypeI64,\n\t\t// At interpreterir layer, ref type values are opaque 64-bit pointers.\n\t\twasm.ValueTypeExternref, wasm.ValueTypeFuncref:\n\t\treturn signature_I64_I64\n\tcase wasm.ValueTypeF32:\n\t\treturn signature_F32_F32\n\tcase wasm.ValueTypeF64:\n\t\treturn signature_F64_F64\n\tcase wasm.ValueTypeV128:\n\t\treturn signature_V128_V128\n\t}\n\tpanic(\"unreachable\")\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/abi.go",
    "content": "package backend\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/backend/regalloc\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/ssa\"\n)\n\ntype (\n\t// FunctionABI represents the ABI information for a function which corresponds to a ssa.Signature.\n\tFunctionABI struct {\n\t\tInitialized bool\n\n\t\tArgs, Rets                 []ABIArg\n\t\tArgStackSize, RetStackSize int64\n\n\t\tArgIntRealRegs   byte\n\t\tArgFloatRealRegs byte\n\t\tRetIntRealRegs   byte\n\t\tRetFloatRealRegs byte\n\t}\n\n\t// ABIArg represents either argument or return value's location.\n\tABIArg struct {\n\t\t// Index is the index of the argument.\n\t\tIndex int\n\t\t// Kind is the kind of the argument.\n\t\tKind ABIArgKind\n\t\t// Reg is valid if Kind == ABIArgKindReg.\n\t\t// This VReg must be based on RealReg.\n\t\tReg regalloc.VReg\n\t\t// Offset is valid if Kind == ABIArgKindStack.\n\t\t// This is the offset from the beginning of either arg or ret stack slot.\n\t\tOffset int64\n\t\t// Type is the type of the argument.\n\t\tType ssa.Type\n\t}\n\n\t// ABIArgKind is the kind of ABI argument.\n\tABIArgKind byte\n)\n\nconst (\n\t// ABIArgKindReg represents an argument passed in a register.\n\tABIArgKindReg = iota\n\t// ABIArgKindStack represents an argument passed in the stack.\n\tABIArgKindStack\n)\n\n// String implements fmt.Stringer.\nfunc (a *ABIArg) String() string {\n\treturn fmt.Sprintf(\"args[%d]: %s\", a.Index, a.Kind)\n}\n\n// String implements fmt.Stringer.\nfunc (a ABIArgKind) String() string {\n\tswitch a {\n\tcase ABIArgKindReg:\n\t\treturn \"reg\"\n\tcase ABIArgKindStack:\n\t\treturn \"stack\"\n\tdefault:\n\t\tpanic(\"BUG\")\n\t}\n}\n\n// Init initializes the abiImpl for the given signature.\nfunc (a *FunctionABI) Init(sig *ssa.Signature, argResultInts, argResultFloats []regalloc.RealReg) {\n\tif len(a.Rets) < len(sig.Results) {\n\t\ta.Rets = make([]ABIArg, len(sig.Results))\n\t}\n\ta.Rets = a.Rets[:len(sig.Results)]\n\ta.RetStackSize = a.setABIArgs(a.Rets, sig.Results, argResultInts, argResultFloats)\n\tif argsNum := len(sig.Params); len(a.Args) < argsNum {\n\t\ta.Args = make([]ABIArg, argsNum)\n\t}\n\ta.Args = a.Args[:len(sig.Params)]\n\ta.ArgStackSize = a.setABIArgs(a.Args, sig.Params, argResultInts, argResultFloats)\n\n\t// Gather the real registers usages in arg/return.\n\ta.ArgIntRealRegs, a.ArgFloatRealRegs = 0, 0\n\ta.RetIntRealRegs, a.RetFloatRealRegs = 0, 0\n\tfor i := range a.Rets {\n\t\tr := &a.Rets[i]\n\t\tif r.Kind == ABIArgKindReg {\n\t\t\tif r.Type.IsInt() {\n\t\t\t\ta.RetIntRealRegs++\n\t\t\t} else {\n\t\t\t\ta.RetFloatRealRegs++\n\t\t\t}\n\t\t}\n\t}\n\tfor i := range a.Args {\n\t\targ := &a.Args[i]\n\t\tif arg.Kind == ABIArgKindReg {\n\t\t\tif arg.Type.IsInt() {\n\t\t\t\ta.ArgIntRealRegs++\n\t\t\t} else {\n\t\t\t\ta.ArgFloatRealRegs++\n\t\t\t}\n\t\t}\n\t}\n\n\ta.Initialized = true\n}\n\n// setABIArgs sets the ABI arguments in the given slice. This assumes that len(s) >= len(types)\n// where if len(s) > len(types), the last elements of s is for the multi-return slot.\nfunc (a *FunctionABI) setABIArgs(s []ABIArg, types []ssa.Type, ints, floats []regalloc.RealReg) (stackSize int64) {\n\til, fl := len(ints), len(floats)\n\n\tvar stackOffset int64\n\tintParamIndex, floatParamIndex := 0, 0\n\tfor i, typ := range types {\n\t\targ := &s[i]\n\t\targ.Index = i\n\t\targ.Type = typ\n\t\tif typ.IsInt() {\n\t\t\tif intParamIndex >= il {\n\t\t\t\targ.Kind = ABIArgKindStack\n\t\t\t\tconst slotSize = 8 // Align 8 bytes.\n\t\t\t\targ.Offset = stackOffset\n\t\t\t\tstackOffset += slotSize\n\t\t\t} else {\n\t\t\t\targ.Kind = ABIArgKindReg\n\t\t\t\targ.Reg = regalloc.FromRealReg(ints[intParamIndex], regalloc.RegTypeInt)\n\t\t\t\tintParamIndex++\n\t\t\t}\n\t\t} else {\n\t\t\tif floatParamIndex >= fl {\n\t\t\t\targ.Kind = ABIArgKindStack\n\t\t\t\tslotSize := int64(8)   // Align at least 8 bytes.\n\t\t\t\tif typ.Bits() == 128 { // Vector.\n\t\t\t\t\tslotSize = 16\n\t\t\t\t}\n\t\t\t\targ.Offset = stackOffset\n\t\t\t\tstackOffset += slotSize\n\t\t\t} else {\n\t\t\t\targ.Kind = ABIArgKindReg\n\t\t\t\targ.Reg = regalloc.FromRealReg(floats[floatParamIndex], regalloc.RegTypeFloat)\n\t\t\t\tfloatParamIndex++\n\t\t\t}\n\t\t}\n\t}\n\treturn stackOffset\n}\n\nfunc (a *FunctionABI) AlignedArgResultStackSlotSize() uint32 {\n\tstackSlotSize := a.RetStackSize + a.ArgStackSize\n\t// Align stackSlotSize to 16 bytes.\n\tstackSlotSize = (stackSlotSize + 15) &^ 15\n\t// Check overflow 32-bit.\n\tif stackSlotSize > 0xFFFFFFFF {\n\t\tpanic(\"ABI stack slot size overflow\")\n\t}\n\treturn uint32(stackSlotSize)\n}\n\nfunc (a *FunctionABI) ABIInfoAsUint64() uint64 {\n\treturn uint64(a.ArgIntRealRegs)<<56 |\n\t\tuint64(a.ArgFloatRealRegs)<<48 |\n\t\tuint64(a.RetIntRealRegs)<<40 |\n\t\tuint64(a.RetFloatRealRegs)<<32 |\n\t\tuint64(a.AlignedArgResultStackSlotSize())\n}\n\nfunc ABIInfoFromUint64(info uint64) (argIntRealRegs, argFloatRealRegs, retIntRealRegs, retFloatRealRegs byte, stackSlotSize uint32) {\n\treturn byte(info >> 56), byte(info >> 48), byte(info >> 40), byte(info >> 32), uint32(info)\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/backend.go",
    "content": "// Package backend must be free of Wasm-specific concept. In other words,\n// this package must not import internal/wasm package.\npackage backend\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/compiler.go",
    "content": "package backend\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/backend/regalloc\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/ssa\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi\"\n)\n\n// NewCompiler returns a new Compiler that can generate a machine code.\nfunc NewCompiler(ctx context.Context, mach Machine, builder ssa.Builder) Compiler {\n\treturn newCompiler(ctx, mach, builder)\n}\n\nfunc newCompiler(_ context.Context, mach Machine, builder ssa.Builder) *compiler {\n\targResultInts, argResultFloats := mach.ArgsResultsRegs()\n\tc := &compiler{\n\t\tmach: mach, ssaBuilder: builder,\n\t\tnextVRegID:      regalloc.VRegIDNonReservedBegin,\n\t\targResultInts:   argResultInts,\n\t\targResultFloats: argResultFloats,\n\t}\n\tmach.SetCompiler(c)\n\treturn c\n}\n\n// Compiler is the backend of wazevo which takes ssa.Builder and Machine,\n// use the information there to emit the final machine code.\ntype Compiler interface {\n\t// SSABuilder returns the ssa.Builder used by this compiler.\n\tSSABuilder() ssa.Builder\n\n\t// Compile executes the following steps:\n\t// \t1. Lower()\n\t// \t2. RegAlloc()\n\t// \t3. Finalize()\n\t// \t4. Encode()\n\t//\n\t// Each step can be called individually for testing purpose, therefore they are exposed in this interface too.\n\t//\n\t// The returned byte slices are the machine code and the relocation information for the machine code.\n\t// The caller is responsible for copying them immediately since the compiler may reuse the buffer.\n\tCompile(ctx context.Context) (_ []byte, _ []RelocationInfo, _ error)\n\n\t// Lower lowers the given ssa.Instruction to the machine-specific instructions.\n\tLower()\n\n\t// RegAlloc performs the register allocation after Lower is called.\n\tRegAlloc()\n\n\t// Finalize performs the finalization of the compilation, including machine code emission.\n\t// This must be called after RegAlloc.\n\tFinalize(ctx context.Context) error\n\n\t// Buf returns the buffer of the encoded machine code. This is only used for testing purpose.\n\tBuf() []byte\n\n\tBufPtr() *[]byte\n\n\t// Format returns the debug string of the current state of the compiler.\n\tFormat() string\n\n\t// Init initializes the internal state of the compiler for the next compilation.\n\tInit()\n\n\t// AllocateVReg allocates a new virtual register of the given type.\n\tAllocateVReg(typ ssa.Type) regalloc.VReg\n\n\t// ValueDefinition returns the definition of the given value.\n\tValueDefinition(ssa.Value) SSAValueDefinition\n\n\t// VRegOf returns the virtual register of the given ssa.Value.\n\tVRegOf(value ssa.Value) regalloc.VReg\n\n\t// TypeOf returns the ssa.Type of the given virtual register.\n\tTypeOf(regalloc.VReg) ssa.Type\n\n\t// MatchInstr returns true if the given definition is from an instruction with the given opcode, the current group ID,\n\t// and a refcount of 1. That means, the instruction can be merged/swapped within the current instruction group.\n\tMatchInstr(def SSAValueDefinition, opcode ssa.Opcode) bool\n\n\t// MatchInstrOneOf is the same as MatchInstr but for multiple opcodes. If it matches one of ssa.Opcode,\n\t// this returns the opcode. Otherwise, this returns ssa.OpcodeInvalid.\n\t//\n\t// Note: caller should be careful to avoid excessive allocation on opcodes slice.\n\tMatchInstrOneOf(def SSAValueDefinition, opcodes []ssa.Opcode) ssa.Opcode\n\n\t// AddRelocationInfo appends the relocation information for the function reference at the current buffer offset.\n\tAddRelocationInfo(funcRef ssa.FuncRef, isTailCall bool)\n\n\t// AddSourceOffsetInfo appends the source offset information for the given offset.\n\tAddSourceOffsetInfo(executableOffset int64, sourceOffset ssa.SourceOffset)\n\n\t// SourceOffsetInfo returns the source offset information for the current buffer offset.\n\tSourceOffsetInfo() []SourceOffsetInfo\n\n\t// EmitByte appends a byte to the buffer. Used during the code emission.\n\tEmitByte(b byte)\n\n\t// Emit4Bytes appends 4 bytes to the buffer. Used during the code emission.\n\tEmit4Bytes(b uint32)\n\n\t// Emit8Bytes appends 8 bytes to the buffer. Used during the code emission.\n\tEmit8Bytes(b uint64)\n\n\t// GetFunctionABI returns the ABI information for the given signature.\n\tGetFunctionABI(sig *ssa.Signature) *FunctionABI\n}\n\n// RelocationInfo represents the relocation information for a call instruction.\ntype RelocationInfo struct {\n\t// Offset represents the offset from the beginning of the machine code of either a function or the entire module.\n\tOffset int64\n\t// Target is the target function of the call instruction.\n\tFuncRef ssa.FuncRef\n\t// IsTailCall indicates whether the call instruction is a tail call.\n\tIsTailCall bool\n}\n\n// compiler implements Compiler.\ntype compiler struct {\n\tmach       Machine\n\tcurrentGID ssa.InstructionGroupID\n\tssaBuilder ssa.Builder\n\t// nextVRegID is the next virtual register ID to be allocated.\n\tnextVRegID regalloc.VRegID\n\t// ssaValueToVRegs maps ssa.ValueID to regalloc.VReg.\n\tssaValueToVRegs [] /* VRegID to */ regalloc.VReg\n\tssaValuesInfo   []ssa.ValueInfo\n\t// returnVRegs is the list of virtual registers that store the return values.\n\treturnVRegs  []regalloc.VReg\n\tvarEdges     [][2]regalloc.VReg\n\tvarEdgeTypes []ssa.Type\n\tconstEdges   []struct {\n\t\tcInst *ssa.Instruction\n\t\tdst   regalloc.VReg\n\t}\n\tvRegSet         []bool\n\tvRegIDs         []regalloc.VRegID\n\ttempRegs        []regalloc.VReg\n\ttmpVals         []ssa.Value\n\tssaTypeOfVRegID [] /* VRegID to */ ssa.Type\n\tbuf             []byte\n\trelocations     []RelocationInfo\n\tsourceOffsets   []SourceOffsetInfo\n\t// abis maps ssa.SignatureID to the ABI implementation.\n\tabis                           []FunctionABI\n\targResultInts, argResultFloats []regalloc.RealReg\n}\n\n// SourceOffsetInfo is a data to associate the source offset with the executable offset.\ntype SourceOffsetInfo struct {\n\t// SourceOffset is the source offset in the original source code.\n\tSourceOffset ssa.SourceOffset\n\t// ExecutableOffset is the offset in the compiled executable.\n\tExecutableOffset int64\n}\n\n// Compile implements Compiler.Compile.\nfunc (c *compiler) Compile(ctx context.Context) ([]byte, []RelocationInfo, error) {\n\tc.Lower()\n\tif wazevoapi.PrintSSAToBackendIRLowering && wazevoapi.PrintEnabledIndex(ctx) {\n\t\tfmt.Printf(\"[[[after lowering for %s ]]]%s\\n\", wazevoapi.GetCurrentFunctionName(ctx), c.Format())\n\t}\n\tif wazevoapi.DeterministicCompilationVerifierEnabled {\n\t\twazevoapi.VerifyOrSetDeterministicCompilationContextValue(ctx, \"After lowering to ISA specific IR\", c.Format())\n\t}\n\tc.RegAlloc()\n\tif wazevoapi.PrintRegisterAllocated && wazevoapi.PrintEnabledIndex(ctx) {\n\t\tfmt.Printf(\"[[[after regalloc for %s]]]%s\\n\", wazevoapi.GetCurrentFunctionName(ctx), c.Format())\n\t}\n\tif wazevoapi.DeterministicCompilationVerifierEnabled {\n\t\twazevoapi.VerifyOrSetDeterministicCompilationContextValue(ctx, \"After Register Allocation\", c.Format())\n\t}\n\tif err := c.Finalize(ctx); err != nil {\n\t\treturn nil, nil, err\n\t}\n\tif wazevoapi.PrintFinalizedMachineCode && wazevoapi.PrintEnabledIndex(ctx) {\n\t\tfmt.Printf(\"[[[after finalize for %s]]]%s\\n\", wazevoapi.GetCurrentFunctionName(ctx), c.Format())\n\t}\n\tif wazevoapi.DeterministicCompilationVerifierEnabled {\n\t\twazevoapi.VerifyOrSetDeterministicCompilationContextValue(ctx, \"After Finalization\", c.Format())\n\t}\n\treturn c.buf, c.relocations, nil\n}\n\n// RegAlloc implements Compiler.RegAlloc.\nfunc (c *compiler) RegAlloc() {\n\tc.mach.RegAlloc()\n}\n\n// Finalize implements Compiler.Finalize.\nfunc (c *compiler) Finalize(ctx context.Context) error {\n\tc.mach.PostRegAlloc()\n\treturn c.mach.Encode(ctx)\n}\n\n// setCurrentGroupID sets the current instruction group ID.\nfunc (c *compiler) setCurrentGroupID(gid ssa.InstructionGroupID) {\n\tc.currentGID = gid\n}\n\n// assignVirtualRegisters assigns a virtual register to each ssa.ValueID Valid in the ssa.Builder.\nfunc (c *compiler) assignVirtualRegisters() {\n\tbuilder := c.ssaBuilder\n\tc.ssaValuesInfo = builder.ValuesInfo()\n\n\tif diff := len(c.ssaValuesInfo) - len(c.ssaValueToVRegs); diff > 0 {\n\t\tc.ssaValueToVRegs = append(c.ssaValueToVRegs, make([]regalloc.VReg, diff+1)...)\n\t}\n\n\tfor blk := builder.BlockIteratorReversePostOrderBegin(); blk != nil; blk = builder.BlockIteratorReversePostOrderNext() {\n\t\t// First we assign a virtual register to each parameter.\n\t\tfor i := 0; i < blk.Params(); i++ {\n\t\t\tp := blk.Param(i)\n\t\t\tpid := p.ID()\n\t\t\ttyp := p.Type()\n\t\t\tvreg := c.AllocateVReg(typ)\n\t\t\tc.ssaValueToVRegs[pid] = vreg\n\t\t\tc.ssaTypeOfVRegID[vreg.ID()] = p.Type()\n\t\t}\n\n\t\t// Assigns each value to a virtual register produced by instructions.\n\t\tfor cur := blk.Root(); cur != nil; cur = cur.Next() {\n\t\t\tr, rs := cur.Returns()\n\t\t\tif r.Valid() {\n\t\t\t\tid := r.ID()\n\t\t\t\tssaTyp := r.Type()\n\t\t\t\ttyp := r.Type()\n\t\t\t\tvReg := c.AllocateVReg(typ)\n\t\t\t\tc.ssaValueToVRegs[id] = vReg\n\t\t\t\tc.ssaTypeOfVRegID[vReg.ID()] = ssaTyp\n\t\t\t}\n\t\t\tfor _, r := range rs {\n\t\t\t\tid := r.ID()\n\t\t\t\tssaTyp := r.Type()\n\t\t\t\tvReg := c.AllocateVReg(ssaTyp)\n\t\t\t\tc.ssaValueToVRegs[id] = vReg\n\t\t\t\tc.ssaTypeOfVRegID[vReg.ID()] = ssaTyp\n\t\t\t}\n\t\t}\n\t}\n\n\tfor i, retBlk := 0, builder.ReturnBlock(); i < retBlk.Params(); i++ {\n\t\ttyp := retBlk.Param(i).Type()\n\t\tvReg := c.AllocateVReg(typ)\n\t\tc.returnVRegs = append(c.returnVRegs, vReg)\n\t\tc.ssaTypeOfVRegID[vReg.ID()] = typ\n\t}\n}\n\n// AllocateVReg implements Compiler.AllocateVReg.\nfunc (c *compiler) AllocateVReg(typ ssa.Type) regalloc.VReg {\n\tregType := regalloc.RegTypeOf(typ)\n\tr := regalloc.VReg(c.nextVRegID).SetRegType(regType)\n\n\tid := r.ID()\n\tif int(id) >= len(c.ssaTypeOfVRegID) {\n\t\tc.ssaTypeOfVRegID = append(c.ssaTypeOfVRegID, make([]ssa.Type, id+1)...)\n\t}\n\tc.ssaTypeOfVRegID[id] = typ\n\tc.nextVRegID++\n\treturn r\n}\n\n// Init implements Compiler.Init.\nfunc (c *compiler) Init() {\n\tc.currentGID = 0\n\tc.nextVRegID = regalloc.VRegIDNonReservedBegin\n\tc.returnVRegs = c.returnVRegs[:0]\n\tc.mach.Reset()\n\tc.varEdges = c.varEdges[:0]\n\tc.constEdges = c.constEdges[:0]\n\tc.buf = c.buf[:0]\n\tc.sourceOffsets = c.sourceOffsets[:0]\n\tc.relocations = c.relocations[:0]\n}\n\n// ValueDefinition implements Compiler.ValueDefinition.\nfunc (c *compiler) ValueDefinition(value ssa.Value) SSAValueDefinition {\n\treturn SSAValueDefinition{\n\t\tV:        value,\n\t\tInstr:    c.ssaBuilder.InstructionOfValue(value),\n\t\tRefCount: c.ssaValuesInfo[value.ID()].RefCount,\n\t}\n}\n\n// VRegOf implements Compiler.VRegOf.\nfunc (c *compiler) VRegOf(value ssa.Value) regalloc.VReg {\n\treturn c.ssaValueToVRegs[value.ID()]\n}\n\n// Format implements Compiler.Format.\nfunc (c *compiler) Format() string {\n\treturn c.mach.Format()\n}\n\n// TypeOf implements Compiler.Format.\nfunc (c *compiler) TypeOf(v regalloc.VReg) ssa.Type {\n\treturn c.ssaTypeOfVRegID[v.ID()]\n}\n\n// MatchInstr implements Compiler.MatchInstr.\nfunc (c *compiler) MatchInstr(def SSAValueDefinition, opcode ssa.Opcode) bool {\n\tinstr := def.Instr\n\treturn def.IsFromInstr() &&\n\t\tinstr.Opcode() == opcode &&\n\t\tinstr.GroupID() == c.currentGID &&\n\t\tdef.RefCount < 2\n}\n\n// MatchInstrOneOf implements Compiler.MatchInstrOneOf.\nfunc (c *compiler) MatchInstrOneOf(def SSAValueDefinition, opcodes []ssa.Opcode) ssa.Opcode {\n\tinstr := def.Instr\n\tif !def.IsFromInstr() {\n\t\treturn ssa.OpcodeInvalid\n\t}\n\n\tif instr.GroupID() != c.currentGID {\n\t\treturn ssa.OpcodeInvalid\n\t}\n\n\tif def.RefCount >= 2 {\n\t\treturn ssa.OpcodeInvalid\n\t}\n\n\topcode := instr.Opcode()\n\tfor _, op := range opcodes {\n\t\tif opcode == op {\n\t\t\treturn opcode\n\t\t}\n\t}\n\treturn ssa.OpcodeInvalid\n}\n\n// SSABuilder implements Compiler .SSABuilder.\nfunc (c *compiler) SSABuilder() ssa.Builder {\n\treturn c.ssaBuilder\n}\n\n// AddSourceOffsetInfo implements Compiler.AddSourceOffsetInfo.\nfunc (c *compiler) AddSourceOffsetInfo(executableOffset int64, sourceOffset ssa.SourceOffset) {\n\tc.sourceOffsets = append(c.sourceOffsets, SourceOffsetInfo{\n\t\tSourceOffset:     sourceOffset,\n\t\tExecutableOffset: executableOffset,\n\t})\n}\n\n// SourceOffsetInfo implements Compiler.SourceOffsetInfo.\nfunc (c *compiler) SourceOffsetInfo() []SourceOffsetInfo {\n\treturn c.sourceOffsets\n}\n\n// AddRelocationInfo implements Compiler.AddRelocationInfo.\nfunc (c *compiler) AddRelocationInfo(funcRef ssa.FuncRef, isTailCall bool) {\n\tc.relocations = append(c.relocations, RelocationInfo{\n\t\tOffset:     int64(len(c.buf)),\n\t\tFuncRef:    funcRef,\n\t\tIsTailCall: isTailCall,\n\t})\n}\n\n// Emit8Bytes implements Compiler.Emit8Bytes.\nfunc (c *compiler) Emit8Bytes(b uint64) {\n\tc.buf = append(c.buf, byte(b), byte(b>>8), byte(b>>16), byte(b>>24), byte(b>>32), byte(b>>40), byte(b>>48), byte(b>>56))\n}\n\n// Emit4Bytes implements Compiler.Emit4Bytes.\nfunc (c *compiler) Emit4Bytes(b uint32) {\n\tc.buf = append(c.buf, byte(b), byte(b>>8), byte(b>>16), byte(b>>24))\n}\n\n// EmitByte implements Compiler.EmitByte.\nfunc (c *compiler) EmitByte(b byte) {\n\tc.buf = append(c.buf, b)\n}\n\n// Buf implements Compiler.Buf.\nfunc (c *compiler) Buf() []byte {\n\treturn c.buf\n}\n\n// BufPtr implements Compiler.BufPtr.\nfunc (c *compiler) BufPtr() *[]byte {\n\treturn &c.buf\n}\n\nfunc (c *compiler) GetFunctionABI(sig *ssa.Signature) *FunctionABI {\n\tif int(sig.ID) >= len(c.abis) {\n\t\tc.abis = append(c.abis, make([]FunctionABI, int(sig.ID)+1)...)\n\t}\n\n\tabi := &c.abis[sig.ID]\n\tif abi.Initialized {\n\t\treturn abi\n\t}\n\n\tabi.Init(sig, c.argResultInts, c.argResultFloats)\n\treturn abi\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/compiler_lower.go",
    "content": "package backend\n\nimport (\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/backend/regalloc\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/ssa\"\n)\n\n// Lower implements Compiler.Lower.\nfunc (c *compiler) Lower() {\n\tc.assignVirtualRegisters()\n\tc.mach.SetCurrentABI(c.GetFunctionABI(c.ssaBuilder.Signature()))\n\tc.mach.StartLoweringFunction(c.ssaBuilder.BlockIDMax())\n\tc.lowerBlocks()\n}\n\n// lowerBlocks lowers each block in the ssa.Builder.\nfunc (c *compiler) lowerBlocks() {\n\tbuilder := c.ssaBuilder\n\tfor blk := builder.BlockIteratorReversePostOrderBegin(); blk != nil; blk = builder.BlockIteratorReversePostOrderNext() {\n\t\tc.lowerBlock(blk)\n\t}\n\n\t// After lowering all blocks, we need to link adjacent blocks to layout one single instruction list.\n\tvar prev ssa.BasicBlock\n\tfor next := builder.BlockIteratorReversePostOrderBegin(); next != nil; next = builder.BlockIteratorReversePostOrderNext() {\n\t\tif prev != nil {\n\t\t\tc.mach.LinkAdjacentBlocks(prev, next)\n\t\t}\n\t\tprev = next\n\t}\n}\n\nfunc (c *compiler) lowerBlock(blk ssa.BasicBlock) {\n\tmach := c.mach\n\tmach.StartBlock(blk)\n\n\t// We traverse the instructions in reverse order because we might want to lower multiple\n\t// instructions together.\n\tcur := blk.Tail()\n\n\t// First gather the branching instructions at the end of the blocks.\n\tvar br0, br1 *ssa.Instruction\n\tif cur.IsBranching() {\n\t\tbr0 = cur\n\t\tcur = cur.Prev()\n\t\tif cur != nil && cur.IsBranching() {\n\t\t\tbr1 = cur\n\t\t\tcur = cur.Prev()\n\t\t}\n\t}\n\n\tif br0 != nil {\n\t\tc.lowerBranches(br0, br1)\n\t}\n\n\tif br1 != nil && br0 == nil {\n\t\tpanic(\"BUG? when a block has conditional branch but doesn't end with an unconditional branch?\")\n\t}\n\n\t// Now start lowering the non-branching instructions.\n\tfor ; cur != nil; cur = cur.Prev() {\n\t\tc.setCurrentGroupID(cur.GroupID())\n\t\tif cur.Lowered() {\n\t\t\tcontinue\n\t\t}\n\n\t\tswitch cur.Opcode() {\n\t\tcase ssa.OpcodeReturn:\n\t\t\trets := cur.ReturnVals()\n\t\t\tif len(rets) > 0 {\n\t\t\t\tc.mach.LowerReturns(rets)\n\t\t\t}\n\t\t\tc.mach.InsertReturn()\n\t\tdefault:\n\t\t\tmach.LowerInstr(cur)\n\t\t}\n\t\tmach.FlushPendingInstructions()\n\t}\n\n\t// Finally, if this is the entry block, we have to insert copies of arguments from the real location to the VReg.\n\tif blk.EntryBlock() {\n\t\tc.lowerFunctionArguments(blk)\n\t}\n\n\tmach.EndBlock()\n}\n\n// lowerBranches is called right after StartBlock and before any LowerInstr call if\n// there are branches to the given block. br0 is the very end of the block and b1 is the before the br0 if it exists.\n// At least br0 is not nil, but br1 can be nil if there's no branching before br0.\n//\n// See ssa.Instruction IsBranching, and the comment on ssa.BasicBlock.\nfunc (c *compiler) lowerBranches(br0, br1 *ssa.Instruction) {\n\tmach := c.mach\n\n\tc.setCurrentGroupID(br0.GroupID())\n\tc.mach.LowerSingleBranch(br0)\n\tmach.FlushPendingInstructions()\n\tif br1 != nil {\n\t\tc.setCurrentGroupID(br1.GroupID())\n\t\tc.mach.LowerConditionalBranch(br1)\n\t\tmach.FlushPendingInstructions()\n\t}\n\n\tif br0.Opcode() == ssa.OpcodeJump {\n\t\t_, args, targetBlockID := br0.BranchData()\n\t\targExists := len(args) != 0\n\t\tif argExists && br1 != nil {\n\t\t\tpanic(\"BUG: critical edge split failed\")\n\t\t}\n\t\ttarget := c.ssaBuilder.BasicBlock(targetBlockID)\n\t\tif argExists && target.ReturnBlock() {\n\t\t\tif len(args) > 0 {\n\t\t\t\tc.mach.LowerReturns(args)\n\t\t\t}\n\t\t} else if argExists {\n\t\t\tc.lowerBlockArguments(args, target)\n\t\t}\n\t}\n\tmach.FlushPendingInstructions()\n}\n\nfunc (c *compiler) lowerFunctionArguments(entry ssa.BasicBlock) {\n\tmach := c.mach\n\n\tc.tmpVals = c.tmpVals[:0]\n\tdata := c.ssaBuilder.ValuesInfo()\n\tfor i := 0; i < entry.Params(); i++ {\n\t\tp := entry.Param(i)\n\t\tif data[p.ID()].RefCount > 0 {\n\t\t\tc.tmpVals = append(c.tmpVals, p)\n\t\t} else {\n\t\t\t// If the argument is not used, we can just pass an invalid value.\n\t\t\tc.tmpVals = append(c.tmpVals, ssa.ValueInvalid)\n\t\t}\n\t}\n\tmach.LowerParams(c.tmpVals)\n\tmach.FlushPendingInstructions()\n}\n\n// lowerBlockArguments lowers how to pass arguments to the given successor block.\nfunc (c *compiler) lowerBlockArguments(args []ssa.Value, succ ssa.BasicBlock) {\n\tif len(args) != succ.Params() {\n\t\tpanic(\"BUG: mismatched number of arguments\")\n\t}\n\n\tc.varEdges = c.varEdges[:0]\n\tc.varEdgeTypes = c.varEdgeTypes[:0]\n\tc.constEdges = c.constEdges[:0]\n\tfor i := 0; i < len(args); i++ {\n\t\tdst := succ.Param(i)\n\t\tsrc := args[i]\n\n\t\tdstReg := c.VRegOf(dst)\n\t\tsrcInstr := c.ssaBuilder.InstructionOfValue(src)\n\t\tif srcInstr != nil && srcInstr.Constant() {\n\t\t\tc.constEdges = append(c.constEdges, struct {\n\t\t\t\tcInst *ssa.Instruction\n\t\t\t\tdst   regalloc.VReg\n\t\t\t}{cInst: srcInstr, dst: dstReg})\n\t\t} else {\n\t\t\tsrcReg := c.VRegOf(src)\n\t\t\t// Even when the src=dst, insert the move so that we can keep such registers keep-alive.\n\t\t\tc.varEdges = append(c.varEdges, [2]regalloc.VReg{srcReg, dstReg})\n\t\t\tc.varEdgeTypes = append(c.varEdgeTypes, src.Type())\n\t\t}\n\t}\n\n\t// Check if there's an overlap among the dsts and srcs in varEdges.\n\tc.vRegIDs = c.vRegIDs[:0]\n\tfor _, edge := range c.varEdges {\n\t\tsrc := edge[0].ID()\n\t\tif int(src) >= len(c.vRegSet) {\n\t\t\tc.vRegSet = append(c.vRegSet, make([]bool, src+1)...)\n\t\t}\n\t\tc.vRegSet[src] = true\n\t\tc.vRegIDs = append(c.vRegIDs, src)\n\t}\n\tseparated := true\n\tfor _, edge := range c.varEdges {\n\t\tdst := edge[1].ID()\n\t\tif int(dst) >= len(c.vRegSet) {\n\t\t\tc.vRegSet = append(c.vRegSet, make([]bool, dst+1)...)\n\t\t} else {\n\t\t\tif c.vRegSet[dst] {\n\t\t\t\tseparated = false\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\tfor _, id := range c.vRegIDs {\n\t\tc.vRegSet[id] = false // reset for the next use.\n\t}\n\n\tif separated {\n\t\t// If there's no overlap, we can simply move the source to destination.\n\t\tfor i, edge := range c.varEdges {\n\t\t\tsrc, dst := edge[0], edge[1]\n\t\t\tc.mach.InsertMove(dst, src, c.varEdgeTypes[i])\n\t\t}\n\t} else {\n\t\t// Otherwise, we allocate a temporary registers and move the source to the temporary register,\n\t\t//\n\t\t// First move all of them to temporary registers.\n\t\tc.tempRegs = c.tempRegs[:0]\n\t\tfor i, edge := range c.varEdges {\n\t\t\tsrc := edge[0]\n\t\t\ttyp := c.varEdgeTypes[i]\n\t\t\ttemp := c.AllocateVReg(typ)\n\t\t\tc.tempRegs = append(c.tempRegs, temp)\n\t\t\tc.mach.InsertMove(temp, src, typ)\n\t\t}\n\t\t// Then move the temporary registers to the destination.\n\t\tfor i, edge := range c.varEdges {\n\t\t\ttemp := c.tempRegs[i]\n\t\t\tdst := edge[1]\n\t\t\tc.mach.InsertMove(dst, temp, c.varEdgeTypes[i])\n\t\t}\n\t}\n\n\t// Finally, move the constants.\n\tfor _, edge := range c.constEdges {\n\t\tcInst, dst := edge.cInst, edge.dst\n\t\tc.mach.InsertLoadConstantBlockArg(cInst, dst)\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/go_call.go",
    "content": "package backend\n\nimport \"github.com/tetratelabs/wazero/internal/engine/wazevo/ssa\"\n\n// GoFunctionCallRequiredStackSize returns the size of the stack required for the Go function call.\n// argBegin is the index of the first argument in the signature which is not either execution context or module context.\nfunc GoFunctionCallRequiredStackSize(sig *ssa.Signature, argBegin int) (ret, retUnaligned int64) {\n\tvar paramNeededInBytes, resultNeededInBytes int64\n\tfor _, p := range sig.Params[argBegin:] {\n\t\ts := int64(p.Size())\n\t\tif s < 8 {\n\t\t\ts = 8 // We use uint64 for all basic types, except SIMD v128.\n\t\t}\n\t\tparamNeededInBytes += s\n\t}\n\tfor _, r := range sig.Results {\n\t\ts := int64(r.Size())\n\t\tif s < 8 {\n\t\t\ts = 8 // We use uint64 for all basic types, except SIMD v128.\n\t\t}\n\t\tresultNeededInBytes += s\n\t}\n\n\tif paramNeededInBytes > resultNeededInBytes {\n\t\tret = paramNeededInBytes\n\t} else {\n\t\tret = resultNeededInBytes\n\t}\n\tretUnaligned = ret\n\t// Align to 16 bytes.\n\tret = (ret + 15) &^ 15\n\treturn\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/amd64/abi.go",
    "content": "package amd64\n\nimport (\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/backend\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/backend/regalloc\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/ssa\"\n)\n\n// For the details of the ABI, see:\n// https://github.com/golang/go/blob/49d42128fd8594c172162961ead19ac95e247d24/src/cmd/compile/abi-internal.md#amd64-architecture\n\nvar (\n\tintArgResultRegs   = []regalloc.RealReg{rax, rbx, rcx, rdi, rsi, r8, r9, r10, r11}\n\tfloatArgResultRegs = []regalloc.RealReg{xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7}\n)\n\nvar regInfo = &regalloc.RegisterInfo{\n\tAllocatableRegisters: [regalloc.NumRegType][]regalloc.RealReg{\n\t\tregalloc.RegTypeInt: {\n\t\t\trax, rcx, rdx, rbx, rsi, rdi, r8, r9, r10, r11, r12, r13, r14, r15,\n\t\t},\n\t\tregalloc.RegTypeFloat: {\n\t\t\txmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15,\n\t\t},\n\t},\n\tCalleeSavedRegisters: regalloc.NewRegSet(\n\t\trdx, r12, r13, r14, r15,\n\t\txmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15,\n\t),\n\tCallerSavedRegisters: regalloc.NewRegSet(\n\t\trax, rcx, rbx, rsi, rdi, r8, r9, r10, r11,\n\t\txmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7,\n\t),\n\tRealRegToVReg: []regalloc.VReg{\n\t\trax: raxVReg, rcx: rcxVReg, rdx: rdxVReg, rbx: rbxVReg, rsp: rspVReg, rbp: rbpVReg, rsi: rsiVReg, rdi: rdiVReg,\n\t\tr8: r8VReg, r9: r9VReg, r10: r10VReg, r11: r11VReg, r12: r12VReg, r13: r13VReg, r14: r14VReg, r15: r15VReg,\n\t\txmm0: xmm0VReg, xmm1: xmm1VReg, xmm2: xmm2VReg, xmm3: xmm3VReg, xmm4: xmm4VReg, xmm5: xmm5VReg, xmm6: xmm6VReg,\n\t\txmm7: xmm7VReg, xmm8: xmm8VReg, xmm9: xmm9VReg, xmm10: xmm10VReg, xmm11: xmm11VReg, xmm12: xmm12VReg,\n\t\txmm13: xmm13VReg, xmm14: xmm14VReg, xmm15: xmm15VReg,\n\t},\n\tRealRegName: func(r regalloc.RealReg) string { return regNames[r] },\n\tRealRegType: func(r regalloc.RealReg) regalloc.RegType {\n\t\tif r < xmm0 {\n\t\t\treturn regalloc.RegTypeInt\n\t\t}\n\t\treturn regalloc.RegTypeFloat\n\t},\n}\n\n// ArgsResultsRegs implements backend.Machine.\nfunc (m *machine) ArgsResultsRegs() (argResultInts, argResultFloats []regalloc.RealReg) {\n\treturn intArgResultRegs, floatArgResultRegs\n}\n\n// LowerParams implements backend.Machine.\nfunc (m *machine) LowerParams(args []ssa.Value) {\n\ta := m.currentABI\n\n\tfor i, ssaArg := range args {\n\t\tif !ssaArg.Valid() {\n\t\t\tcontinue\n\t\t}\n\t\treg := m.c.VRegOf(ssaArg)\n\t\targ := &a.Args[i]\n\t\tif arg.Kind == backend.ABIArgKindReg {\n\t\t\tm.InsertMove(reg, arg.Reg, arg.Type)\n\t\t} else {\n\t\t\t//\n\t\t\t//            (high address)\n\t\t\t//          +-----------------+\n\t\t\t//          |     .......     |\n\t\t\t//          |      ret Y      |\n\t\t\t//          |     .......     |\n\t\t\t//          |      ret 0      |\n\t\t\t//          |      arg X      |\n\t\t\t//          |     .......     |\n\t\t\t//          |      arg 1      |\n\t\t\t//          |      arg 0      |\n\t\t\t//          |   ReturnAddress |\n\t\t\t//          |    Caller_RBP   |\n\t\t\t//          +-----------------+ <-- RBP\n\t\t\t//          |   ...........   |\n\t\t\t//          |   clobbered  M  |\n\t\t\t//          |   ............  |\n\t\t\t//          |   clobbered  0  |\n\t\t\t//          |   spill slot N  |\n\t\t\t//          |   ...........   |\n\t\t\t//          |   spill slot 0  |\n\t\t\t//   RSP--> +-----------------+\n\t\t\t//             (low address)\n\n\t\t\t// Load the value from the arg stack slot above the current RBP.\n\t\t\tload := m.allocateInstr()\n\t\t\tmem := newOperandMem(m.newAmodeImmRBPReg(uint32(arg.Offset + 16)))\n\t\t\tswitch arg.Type {\n\t\t\tcase ssa.TypeI32:\n\t\t\t\tload.asMovzxRmR(extModeLQ, mem, reg)\n\t\t\tcase ssa.TypeI64:\n\t\t\t\tload.asMov64MR(mem, reg)\n\t\t\tcase ssa.TypeF32:\n\t\t\t\tload.asXmmUnaryRmR(sseOpcodeMovss, mem, reg)\n\t\t\tcase ssa.TypeF64:\n\t\t\t\tload.asXmmUnaryRmR(sseOpcodeMovsd, mem, reg)\n\t\t\tcase ssa.TypeV128:\n\t\t\t\tload.asXmmUnaryRmR(sseOpcodeMovdqu, mem, reg)\n\t\t\tdefault:\n\t\t\t\tpanic(\"BUG\")\n\t\t\t}\n\t\t\tm.insert(load)\n\t\t}\n\t}\n}\n\n// LowerReturns implements backend.Machine.\nfunc (m *machine) LowerReturns(rets []ssa.Value) {\n\t// Load the XMM registers first as it might need a temporary register to inline\n\t// constant return.\n\ta := m.currentABI\n\tfor i, ret := range rets {\n\t\tr := &a.Rets[i]\n\t\tif !r.Type.IsInt() {\n\t\t\tm.LowerReturn(ret, r)\n\t\t}\n\t}\n\t// Then load the GPR registers.\n\tfor i, ret := range rets {\n\t\tr := &a.Rets[i]\n\t\tif r.Type.IsInt() {\n\t\t\tm.LowerReturn(ret, r)\n\t\t}\n\t}\n}\n\nfunc (m *machine) LowerReturn(ret ssa.Value, r *backend.ABIArg) {\n\treg := m.c.VRegOf(ret)\n\tif def := m.c.ValueDefinition(ret); def.IsFromInstr() {\n\t\t// Constant instructions are inlined.\n\t\tif inst := def.Instr; inst.Constant() {\n\t\t\tm.insertLoadConstant(inst, reg)\n\t\t}\n\t}\n\tif r.Kind == backend.ABIArgKindReg {\n\t\tm.InsertMove(r.Reg, reg, ret.Type())\n\t} else {\n\t\t//\n\t\t//            (high address)\n\t\t//          +-----------------+\n\t\t//          |     .......     |\n\t\t//          |      ret Y      |\n\t\t//          |     .......     |\n\t\t//          |      ret 0      |\n\t\t//          |      arg X      |\n\t\t//          |     .......     |\n\t\t//          |      arg 1      |\n\t\t//          |      arg 0      |\n\t\t//          |   ReturnAddress |\n\t\t//          |    Caller_RBP   |\n\t\t//          +-----------------+ <-- RBP\n\t\t//          |   ...........   |\n\t\t//          |   clobbered  M  |\n\t\t//          |   ............  |\n\t\t//          |   clobbered  0  |\n\t\t//          |   spill slot N  |\n\t\t//          |   ...........   |\n\t\t//          |   spill slot 0  |\n\t\t//   RSP--> +-----------------+\n\t\t//             (low address)\n\n\t\t// Store the value to the return stack slot above the current RBP.\n\t\tstore := m.allocateInstr()\n\t\tmem := newOperandMem(m.newAmodeImmRBPReg(uint32(m.currentABI.ArgStackSize + 16 + r.Offset)))\n\t\tswitch r.Type {\n\t\tcase ssa.TypeI32:\n\t\t\tstore.asMovRM(reg, mem, 4)\n\t\tcase ssa.TypeI64:\n\t\t\tstore.asMovRM(reg, mem, 8)\n\t\tcase ssa.TypeF32:\n\t\t\tstore.asXmmMovRM(sseOpcodeMovss, reg, mem)\n\t\tcase ssa.TypeF64:\n\t\t\tstore.asXmmMovRM(sseOpcodeMovsd, reg, mem)\n\t\tcase ssa.TypeV128:\n\t\t\tstore.asXmmMovRM(sseOpcodeMovdqu, reg, mem)\n\t\t}\n\t\tm.insert(store)\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/amd64/abi_entry_amd64.go",
    "content": "package amd64\n\n// entrypoint enters the machine code generated by this backend which begins with the preamble generated by functionABI.EmitGoEntryPreamble below.\n// This implements wazevo.entrypoint, and see the comments there for detail.\nfunc entrypoint(preambleExecutable, functionExecutable *byte, executionContextPtr uintptr, moduleContextPtr *byte, paramResultPtr *uint64, goAllocatedStackSlicePtr uintptr)\n\n// afterGoFunctionCallEntrypoint enters the machine code after growing the stack.\n// This implements wazevo.afterGoFunctionCallEntrypoint, and see the comments there for detail.\nfunc afterGoFunctionCallEntrypoint(executable *byte, executionContextPtr uintptr, stackPointer, framePointer uintptr)\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/amd64/abi_entry_amd64.s",
    "content": "#include \"funcdata.h\"\n#include \"textflag.h\"\n\n// entrypoint(preambleExecutable, functionExecutable *byte, executionContextPtr uintptr, moduleContextPtr *byte, paramResultPtr *uint64, goAllocatedStackSlicePtr uintptr\nTEXT ·entrypoint(SB), NOSPLIT|NOFRAME, $0-48\n\tMOVQ preambleExecutable+0(FP), R11\n\tMOVQ functionExectuable+8(FP), R14\n\tMOVQ executionContextPtr+16(FP), AX       // First argument is passed in AX.\n\tMOVQ moduleContextPtr+24(FP), BX          // Second argument is passed in BX.\n\tMOVQ paramResultSlicePtr+32(FP), R12\n\tMOVQ goAllocatedStackSlicePtr+40(FP), R13\n\tJMP  R11\n\n// afterGoFunctionCallEntrypoint(executable *byte, executionContextPtr uintptr, stackPointer, framePointer uintptr)\nTEXT ·afterGoFunctionCallEntrypoint(SB), NOSPLIT|NOFRAME, $0-32\n\tMOVQ executable+0(FP), CX\n\tMOVQ executionContextPtr+8(FP), AX // First argument is passed in AX.\n\n\t// Save the stack pointer and frame pointer.\n\tMOVQ BP, 16(AX) // 16 == ExecutionContextOffsetOriginalFramePointer\n\tMOVQ SP, 24(AX) // 24 == ExecutionContextOffsetOriginalStackPointer\n\n\t// Then set the stack pointer and frame pointer to the values we got from the Go runtime.\n\tMOVQ framePointer+24(FP), BP\n\n\t// WARNING: do not update SP before BP, because the Go translates (FP) as (SP) + 8.\n\tMOVQ stackPointer+16(FP), SP\n\n\tJMP CX\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/amd64/abi_entry_preamble.go",
    "content": "package amd64\n\nimport (\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/backend\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/backend/regalloc\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/ssa\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi\"\n)\n\nvar (\n\texecutionContextPtrReg = raxVReg\n\n\t// Followings are callee saved registers. They can be used freely in the entry preamble\n\t// since the preamble is called via Go assembly function which has stack-based ABI.\n\n\t// savedExecutionContextPtr also must be a callee-saved reg so that they can be used in the prologue and epilogue.\n\tsavedExecutionContextPtr = rdxVReg\n\t// paramResultSlicePtr must match with entrypoint function in abi_entry_amd64.s.\n\tparamResultSlicePtr = r12VReg\n\t// goAllocatedStackPtr must match with entrypoint function in abi_entry_amd64.s.\n\tgoAllocatedStackPtr = r13VReg\n\t// functionExecutable must match with entrypoint function in abi_entry_amd64.s.\n\tfunctionExecutable = r14VReg\n\ttmpIntReg          = r15VReg\n\ttmpXmmReg          = xmm15VReg\n)\n\n// CompileEntryPreamble implements backend.Machine.\nfunc (m *machine) CompileEntryPreamble(sig *ssa.Signature) []byte {\n\troot := m.compileEntryPreamble(sig)\n\tm.encodeWithoutSSA(root)\n\tbuf := m.c.Buf()\n\treturn buf\n}\n\nfunc (m *machine) compileEntryPreamble(sig *ssa.Signature) *instruction {\n\tabi := backend.FunctionABI{}\n\tabi.Init(sig, intArgResultRegs, floatArgResultRegs)\n\n\troot := m.allocateNop()\n\n\t//// ----------------------------------- prologue ----------------------------------- ////\n\n\t// First, we save executionContextPtrReg into a callee-saved register so that it can be used in epilogue as well.\n\t// \t\tmov %executionContextPtrReg, %savedExecutionContextPtr\n\tcur := m.move64(executionContextPtrReg, savedExecutionContextPtr, root)\n\n\t// Next is to save the original RBP and RSP into the execution context.\n\tcur = m.saveOriginalRSPRBP(cur)\n\n\t// Now set the RSP to the Go-allocated stack pointer.\n\t// \t\tmov %goAllocatedStackPtr, %rsp\n\tcur = m.move64(goAllocatedStackPtr, rspVReg, cur)\n\n\tif stackSlotSize := abi.AlignedArgResultStackSlotSize(); stackSlotSize > 0 {\n\t\t// Allocate stack slots for the arguments and return values.\n\t\t// \t\tsub $stackSlotSize, %rsp\n\t\tspDec := m.allocateInstr().asAluRmiR(aluRmiROpcodeSub, newOperandImm32(uint32(stackSlotSize)), rspVReg, true)\n\t\tcur = linkInstr(cur, spDec)\n\t}\n\n\tvar offset uint32\n\tfor i := range abi.Args {\n\t\tif i < 2 {\n\t\t\t// module context ptr and execution context ptr are passed in rax and rbx by the Go assembly function.\n\t\t\tcontinue\n\t\t}\n\t\targ := &abi.Args[i]\n\t\tcur = m.goEntryPreamblePassArg(cur, paramResultSlicePtr, offset, arg)\n\t\tif arg.Type == ssa.TypeV128 {\n\t\t\toffset += 16\n\t\t} else {\n\t\t\toffset += 8\n\t\t}\n\t}\n\n\t// Zero out RBP so that the unwind/stack growth code can correctly detect the end of the stack.\n\tzerosRbp := m.allocateInstr().asAluRmiR(aluRmiROpcodeXor, newOperandReg(rbpVReg), rbpVReg, true)\n\tcur = linkInstr(cur, zerosRbp)\n\n\t// Now ready to call the real function. Note that at this point stack pointer is already set to the Go-allocated,\n\t// which is aligned to 16 bytes.\n\tcall := m.allocateInstr().asCallIndirect(newOperandReg(functionExecutable), &abi)\n\tcur = linkInstr(cur, call)\n\n\t//// ----------------------------------- epilogue ----------------------------------- ////\n\n\t// Read the results from regs and the stack, and set them correctly into the paramResultSlicePtr.\n\toffset = 0\n\tfor i := range abi.Rets {\n\t\tr := &abi.Rets[i]\n\t\tcur = m.goEntryPreamblePassResult(cur, paramResultSlicePtr, offset, r, uint32(abi.ArgStackSize))\n\t\tif r.Type == ssa.TypeV128 {\n\t\t\toffset += 16\n\t\t} else {\n\t\t\toffset += 8\n\t\t}\n\t}\n\n\t// Finally, restore the original RBP and RSP.\n\tcur = m.restoreOriginalRSPRBP(cur)\n\n\tret := m.allocateInstr().asRet()\n\tlinkInstr(cur, ret)\n\treturn root\n}\n\n// saveOriginalRSPRBP saves the original RSP and RBP into the execution context.\nfunc (m *machine) saveOriginalRSPRBP(cur *instruction) *instruction {\n\t// \t\tmov %rbp, wazevoapi.ExecutionContextOffsetOriginalFramePointer(%executionContextPtrReg)\n\t// \t\tmov %rsp, wazevoapi.ExecutionContextOffsetOriginalStackPointer(%executionContextPtrReg)\n\tcur = m.loadOrStore64AtExecutionCtx(executionContextPtrReg, wazevoapi.ExecutionContextOffsetOriginalFramePointer, rbpVReg, true, cur)\n\tcur = m.loadOrStore64AtExecutionCtx(executionContextPtrReg, wazevoapi.ExecutionContextOffsetOriginalStackPointer, rspVReg, true, cur)\n\treturn cur\n}\n\n// restoreOriginalRSPRBP restores the original RSP and RBP from the execution context.\nfunc (m *machine) restoreOriginalRSPRBP(cur *instruction) *instruction {\n\t// \t\tmov wazevoapi.ExecutionContextOffsetOriginalFramePointer(%executionContextPtrReg), %rbp\n\t// \t\tmov wazevoapi.ExecutionContextOffsetOriginalStackPointer(%executionContextPtrReg), %rsp\n\tcur = m.loadOrStore64AtExecutionCtx(savedExecutionContextPtr, wazevoapi.ExecutionContextOffsetOriginalFramePointer, rbpVReg, false, cur)\n\tcur = m.loadOrStore64AtExecutionCtx(savedExecutionContextPtr, wazevoapi.ExecutionContextOffsetOriginalStackPointer, rspVReg, false, cur)\n\treturn cur\n}\n\nfunc (m *machine) move64(src, dst regalloc.VReg, prev *instruction) *instruction {\n\tmov := m.allocateInstr().asMovRR(src, dst, true)\n\treturn linkInstr(prev, mov)\n}\n\nfunc (m *machine) loadOrStore64AtExecutionCtx(execCtx regalloc.VReg, offset wazevoapi.Offset, r regalloc.VReg, store bool, prev *instruction) *instruction {\n\tmem := newOperandMem(m.newAmodeImmReg(offset.U32(), execCtx))\n\tinstr := m.allocateInstr()\n\tif store {\n\t\tinstr.asMovRM(r, mem, 8)\n\t} else {\n\t\tinstr.asMov64MR(mem, r)\n\t}\n\treturn linkInstr(prev, instr)\n}\n\n// This is for debugging.\nfunc (m *machine) linkUD2(cur *instruction) *instruction { //nolint\n\treturn linkInstr(cur, m.allocateInstr().asUD2())\n}\n\nfunc (m *machine) goEntryPreamblePassArg(cur *instruction, paramSlicePtr regalloc.VReg, offsetInParamSlice uint32, arg *backend.ABIArg) *instruction {\n\tvar dst regalloc.VReg\n\targTyp := arg.Type\n\tif arg.Kind == backend.ABIArgKindStack {\n\t\t// Caller saved registers ca\n\t\tswitch argTyp {\n\t\tcase ssa.TypeI32, ssa.TypeI64:\n\t\t\tdst = tmpIntReg\n\t\tcase ssa.TypeF32, ssa.TypeF64, ssa.TypeV128:\n\t\t\tdst = tmpXmmReg\n\t\tdefault:\n\t\t\tpanic(\"BUG\")\n\t\t}\n\t} else {\n\t\tdst = arg.Reg\n\t}\n\n\tload := m.allocateInstr()\n\ta := newOperandMem(m.newAmodeImmReg(offsetInParamSlice, paramSlicePtr))\n\tswitch arg.Type {\n\tcase ssa.TypeI32:\n\t\tload.asMovzxRmR(extModeLQ, a, dst)\n\tcase ssa.TypeI64:\n\t\tload.asMov64MR(a, dst)\n\tcase ssa.TypeF32:\n\t\tload.asXmmUnaryRmR(sseOpcodeMovss, a, dst)\n\tcase ssa.TypeF64:\n\t\tload.asXmmUnaryRmR(sseOpcodeMovsd, a, dst)\n\tcase ssa.TypeV128:\n\t\tload.asXmmUnaryRmR(sseOpcodeMovdqu, a, dst)\n\t}\n\n\tcur = linkInstr(cur, load)\n\tif arg.Kind == backend.ABIArgKindStack {\n\t\t// Store back to the stack.\n\t\tstore := m.allocateInstr()\n\t\ta := newOperandMem(m.newAmodeImmReg(uint32(arg.Offset), rspVReg))\n\t\tswitch arg.Type {\n\t\tcase ssa.TypeI32:\n\t\t\tstore.asMovRM(dst, a, 4)\n\t\tcase ssa.TypeI64:\n\t\t\tstore.asMovRM(dst, a, 8)\n\t\tcase ssa.TypeF32:\n\t\t\tstore.asXmmMovRM(sseOpcodeMovss, dst, a)\n\t\tcase ssa.TypeF64:\n\t\t\tstore.asXmmMovRM(sseOpcodeMovsd, dst, a)\n\t\tcase ssa.TypeV128:\n\t\t\tstore.asXmmMovRM(sseOpcodeMovdqu, dst, a)\n\t\t}\n\t\tcur = linkInstr(cur, store)\n\t}\n\treturn cur\n}\n\nfunc (m *machine) goEntryPreamblePassResult(cur *instruction, resultSlicePtr regalloc.VReg, offsetInResultSlice uint32, result *backend.ABIArg, resultStackSlotBeginOffset uint32) *instruction {\n\tvar r regalloc.VReg\n\tif result.Kind == backend.ABIArgKindStack {\n\t\t// Load the value to the temporary.\n\t\tload := m.allocateInstr()\n\t\toffset := resultStackSlotBeginOffset + uint32(result.Offset)\n\t\ta := newOperandMem(m.newAmodeImmReg(offset, rspVReg))\n\t\tswitch result.Type {\n\t\tcase ssa.TypeI32:\n\t\t\tr = tmpIntReg\n\t\t\tload.asMovzxRmR(extModeLQ, a, r)\n\t\tcase ssa.TypeI64:\n\t\t\tr = tmpIntReg\n\t\t\tload.asMov64MR(a, r)\n\t\tcase ssa.TypeF32:\n\t\t\tr = tmpXmmReg\n\t\t\tload.asXmmUnaryRmR(sseOpcodeMovss, a, r)\n\t\tcase ssa.TypeF64:\n\t\t\tr = tmpXmmReg\n\t\t\tload.asXmmUnaryRmR(sseOpcodeMovsd, a, r)\n\t\tcase ssa.TypeV128:\n\t\t\tr = tmpXmmReg\n\t\t\tload.asXmmUnaryRmR(sseOpcodeMovdqu, a, r)\n\t\tdefault:\n\t\t\tpanic(\"BUG\")\n\t\t}\n\t\tcur = linkInstr(cur, load)\n\t} else {\n\t\tr = result.Reg\n\t}\n\n\tstore := m.allocateInstr()\n\ta := newOperandMem(m.newAmodeImmReg(offsetInResultSlice, resultSlicePtr))\n\tswitch result.Type {\n\tcase ssa.TypeI32:\n\t\tstore.asMovRM(r, a, 4)\n\tcase ssa.TypeI64:\n\t\tstore.asMovRM(r, a, 8)\n\tcase ssa.TypeF32:\n\t\tstore.asXmmMovRM(sseOpcodeMovss, r, a)\n\tcase ssa.TypeF64:\n\t\tstore.asXmmMovRM(sseOpcodeMovsd, r, a)\n\tcase ssa.TypeV128:\n\t\tstore.asXmmMovRM(sseOpcodeMovdqu, r, a)\n\t}\n\n\treturn linkInstr(cur, store)\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/amd64/abi_go_call.go",
    "content": "package amd64\n\nimport (\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/backend\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/backend/regalloc\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/ssa\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi\"\n)\n\nvar calleeSavedVRegs = []regalloc.VReg{\n\trdxVReg, r12VReg, r13VReg, r14VReg, r15VReg,\n\txmm8VReg, xmm9VReg, xmm10VReg, xmm11VReg, xmm12VReg, xmm13VReg, xmm14VReg, xmm15VReg,\n}\n\n// CompileGoFunctionTrampoline implements backend.Machine.\nfunc (m *machine) CompileGoFunctionTrampoline(exitCode wazevoapi.ExitCode, sig *ssa.Signature, needModuleContextPtr bool) []byte {\n\targBegin := 1 // Skips exec context by default.\n\tif needModuleContextPtr {\n\t\targBegin++\n\t}\n\n\tabi := &backend.FunctionABI{}\n\tabi.Init(sig, intArgResultRegs, floatArgResultRegs)\n\tm.currentABI = abi\n\n\tcur := m.allocateNop()\n\tm.rootInstr = cur\n\n\t// Execution context is always the first argument.\n\texecCtrPtr := raxVReg\n\n\t// First we update RBP and RSP just like the normal prologue.\n\t//\n\t//                   (high address)                     (high address)\n\t//       RBP ----> +-----------------+                +-----------------+\n\t//                 |     .......     |                |     .......     |\n\t//                 |      ret Y      |                |      ret Y      |\n\t//                 |     .......     |                |     .......     |\n\t//                 |      ret 0      |                |      ret 0      |\n\t//                 |      arg X      |                |      arg X      |\n\t//                 |     .......     |     ====>      |     .......     |\n\t//                 |      arg 1      |                |      arg 1      |\n\t//                 |      arg 0      |                |      arg 0      |\n\t//                 |   Return Addr   |                |   Return Addr   |\n\t//       RSP ----> +-----------------+                |    Caller_RBP   |\n\t//                    (low address)                   +-----------------+ <----- RSP, RBP\n\t//\n\tcur = m.setupRBPRSP(cur)\n\n\tgoSliceSizeAligned, goSliceSizeAlignedUnaligned := backend.GoFunctionCallRequiredStackSize(sig, argBegin)\n\tcur = m.insertStackBoundsCheck(goSliceSizeAligned+8 /* size of the Go slice */, cur)\n\n\t// Save the callee saved registers.\n\tcur = m.saveRegistersInExecutionContext(cur, execCtrPtr, calleeSavedVRegs)\n\n\tif needModuleContextPtr {\n\t\tmoduleCtrPtr := rbxVReg // Module context is always the second argument.\n\t\tmem := m.newAmodeImmReg(\n\t\t\twazevoapi.ExecutionContextOffsetGoFunctionCallCalleeModuleContextOpaque.U32(),\n\t\t\texecCtrPtr)\n\t\tstore := m.allocateInstr().asMovRM(moduleCtrPtr, newOperandMem(mem), 8)\n\t\tcur = linkInstr(cur, store)\n\t}\n\n\t// Now let's advance the RSP to the stack slot for the arguments.\n\t//\n\t//                (high address)                     (high address)\n\t//              +-----------------+               +-----------------+\n\t//              |     .......     |               |     .......     |\n\t//              |      ret Y      |               |      ret Y      |\n\t//              |     .......     |               |     .......     |\n\t//              |      ret 0      |               |      ret 0      |\n\t//              |      arg X      |               |      arg X      |\n\t//              |     .......     |   =======>    |     .......     |\n\t//              |      arg 1      |               |      arg 1      |\n\t//              |      arg 0      |               |      arg 0      |\n\t//              |   Return Addr   |               |   Return Addr   |\n\t//              |    Caller_RBP   |               |    Caller_RBP   |\n\t//  RBP,RSP --> +-----------------+               +-----------------+ <----- RBP\n\t//                 (low address)                  |  arg[N]/ret[M]  |\n\t//                                                |    ..........   |\n\t//                                                |  arg[1]/ret[1]  |\n\t//                                                |  arg[0]/ret[0]  |\n\t//                                                +-----------------+ <----- RSP\n\t//                                                   (low address)\n\t//\n\t// where the region of \"arg[0]/ret[0] ... arg[N]/ret[M]\" is the stack used by the Go functions,\n\t// therefore will be accessed as the usual []uint64. So that's where we need to pass/receive\n\t// the arguments/return values to/from Go function.\n\tcur = m.addRSP(-int32(goSliceSizeAligned), cur)\n\n\t// Next, we need to store all the arguments to the stack in the typical Wasm stack style.\n\tvar offsetInGoSlice int32\n\tfor i := range abi.Args[argBegin:] {\n\t\targ := &abi.Args[argBegin+i]\n\t\tvar v regalloc.VReg\n\t\tif arg.Kind == backend.ABIArgKindReg {\n\t\t\tv = arg.Reg\n\t\t} else {\n\t\t\t// We have saved callee saved registers, so we can use them.\n\t\t\tif arg.Type.IsInt() {\n\t\t\t\tv = r15VReg\n\t\t\t} else {\n\t\t\t\tv = xmm15VReg\n\t\t\t}\n\t\t\tmem := newOperandMem(m.newAmodeImmReg(uint32(arg.Offset+16 /* to skip caller_rbp and ret_addr */), rbpVReg))\n\t\t\tload := m.allocateInstr()\n\t\t\tswitch arg.Type {\n\t\t\tcase ssa.TypeI32:\n\t\t\t\tload.asMovzxRmR(extModeLQ, mem, v)\n\t\t\tcase ssa.TypeI64:\n\t\t\t\tload.asMov64MR(mem, v)\n\t\t\tcase ssa.TypeF32:\n\t\t\t\tload.asXmmUnaryRmR(sseOpcodeMovss, mem, v)\n\t\t\tcase ssa.TypeF64:\n\t\t\t\tload.asXmmUnaryRmR(sseOpcodeMovsd, mem, v)\n\t\t\tcase ssa.TypeV128:\n\t\t\t\tload.asXmmUnaryRmR(sseOpcodeMovdqu, mem, v)\n\t\t\tdefault:\n\t\t\t\tpanic(\"BUG\")\n\t\t\t}\n\t\t\tcur = linkInstr(cur, load)\n\t\t}\n\n\t\tstore := m.allocateInstr()\n\t\tmem := newOperandMem(m.newAmodeImmReg(uint32(offsetInGoSlice), rspVReg))\n\t\tswitch arg.Type {\n\t\tcase ssa.TypeI32:\n\t\t\tstore.asMovRM(v, mem, 4)\n\t\t\toffsetInGoSlice += 8 // always uint64 rep.\n\t\tcase ssa.TypeI64:\n\t\t\tstore.asMovRM(v, mem, 8)\n\t\t\toffsetInGoSlice += 8\n\t\tcase ssa.TypeF32:\n\t\t\tstore.asXmmMovRM(sseOpcodeMovss, v, mem)\n\t\t\toffsetInGoSlice += 8 // always uint64 rep.\n\t\tcase ssa.TypeF64:\n\t\t\tstore.asXmmMovRM(sseOpcodeMovsd, v, mem)\n\t\t\toffsetInGoSlice += 8\n\t\tcase ssa.TypeV128:\n\t\t\tstore.asXmmMovRM(sseOpcodeMovdqu, v, mem)\n\t\t\toffsetInGoSlice += 16\n\t\tdefault:\n\t\t\tpanic(\"BUG\")\n\t\t}\n\t\tcur = linkInstr(cur, store)\n\t}\n\n\t// Finally we push the size of the slice to the stack so the stack looks like:\n\t//\n\t//          (high address)\n\t//       +-----------------+\n\t//       |     .......     |\n\t//       |      ret Y      |\n\t//       |     .......     |\n\t//       |      ret 0      |\n\t//       |      arg X      |\n\t//       |     .......     |\n\t//       |      arg 1      |\n\t//       |      arg 0      |\n\t//       |   Return Addr   |\n\t//       |    Caller_RBP   |\n\t//       +-----------------+ <----- RBP\n\t//       |  arg[N]/ret[M]  |\n\t//       |    ..........   |\n\t//       |  arg[1]/ret[1]  |\n\t//       |  arg[0]/ret[0]  |\n\t//       |    slice size   |\n\t//       +-----------------+ <----- RSP\n\t//         (low address)\n\t//\n\t// \t\tpush $sliceSize\n\tcur = linkInstr(cur, m.allocateInstr().asPush64(newOperandImm32(uint32(goSliceSizeAlignedUnaligned))))\n\n\t// Load the exitCode to the register.\n\texitCodeReg := r12VReg // Callee saved which is already saved.\n\tcur = linkInstr(cur, m.allocateInstr().asImm(exitCodeReg, uint64(exitCode), false))\n\n\tsaveRsp, saveRbp, setExitCode := m.allocateExitInstructions(execCtrPtr, exitCodeReg)\n\tcur = linkInstr(cur, setExitCode)\n\tcur = linkInstr(cur, saveRsp)\n\tcur = linkInstr(cur, saveRbp)\n\n\t// Ready to exit the execution.\n\tcur = m.storeReturnAddressAndExit(cur, execCtrPtr)\n\n\t// We don't need the slice size anymore, so pop it.\n\tcur = m.addRSP(8, cur)\n\n\t// Ready to set up the results.\n\toffsetInGoSlice = 0\n\t// To avoid overwriting with the execution context pointer by the result, we need to track the offset,\n\t// and defer the restoration of the result to the end of this function.\n\tvar argOverlapWithExecCtxOffset int32 = -1\n\tfor i := range abi.Rets {\n\t\tr := &abi.Rets[i]\n\t\tvar v regalloc.VReg\n\t\tisRegResult := r.Kind == backend.ABIArgKindReg\n\t\tif isRegResult {\n\t\t\tv = r.Reg\n\t\t\tif v.RealReg() == execCtrPtr.RealReg() {\n\t\t\t\targOverlapWithExecCtxOffset = offsetInGoSlice\n\t\t\t\toffsetInGoSlice += 8 // always uint64 rep.\n\t\t\t\tcontinue\n\t\t\t}\n\t\t} else {\n\t\t\tif r.Type.IsInt() {\n\t\t\t\tv = r15VReg\n\t\t\t} else {\n\t\t\t\tv = xmm15VReg\n\t\t\t}\n\t\t}\n\n\t\tload := m.allocateInstr()\n\t\tmem := newOperandMem(m.newAmodeImmReg(uint32(offsetInGoSlice), rspVReg))\n\t\tswitch r.Type {\n\t\tcase ssa.TypeI32:\n\t\t\tload.asMovzxRmR(extModeLQ, mem, v)\n\t\t\toffsetInGoSlice += 8 // always uint64 rep.\n\t\tcase ssa.TypeI64:\n\t\t\tload.asMov64MR(mem, v)\n\t\t\toffsetInGoSlice += 8\n\t\tcase ssa.TypeF32:\n\t\t\tload.asXmmUnaryRmR(sseOpcodeMovss, mem, v)\n\t\t\toffsetInGoSlice += 8 // always uint64 rep.\n\t\tcase ssa.TypeF64:\n\t\t\tload.asXmmUnaryRmR(sseOpcodeMovsd, mem, v)\n\t\t\toffsetInGoSlice += 8\n\t\tcase ssa.TypeV128:\n\t\t\tload.asXmmUnaryRmR(sseOpcodeMovdqu, mem, v)\n\t\t\toffsetInGoSlice += 16\n\t\tdefault:\n\t\t\tpanic(\"BUG\")\n\t\t}\n\t\tcur = linkInstr(cur, load)\n\n\t\tif !isRegResult {\n\t\t\t// We need to store it back to the result slot above rbp.\n\t\t\tstore := m.allocateInstr()\n\t\t\tmem := newOperandMem(m.newAmodeImmReg(uint32(abi.ArgStackSize+r.Offset+16 /* to skip caller_rbp and ret_addr */), rbpVReg))\n\t\t\tswitch r.Type {\n\t\t\tcase ssa.TypeI32:\n\t\t\t\tstore.asMovRM(v, mem, 4)\n\t\t\tcase ssa.TypeI64:\n\t\t\t\tstore.asMovRM(v, mem, 8)\n\t\t\tcase ssa.TypeF32:\n\t\t\t\tstore.asXmmMovRM(sseOpcodeMovss, v, mem)\n\t\t\tcase ssa.TypeF64:\n\t\t\t\tstore.asXmmMovRM(sseOpcodeMovsd, v, mem)\n\t\t\tcase ssa.TypeV128:\n\t\t\t\tstore.asXmmMovRM(sseOpcodeMovdqu, v, mem)\n\t\t\tdefault:\n\t\t\t\tpanic(\"BUG\")\n\t\t\t}\n\t\t\tcur = linkInstr(cur, store)\n\t\t}\n\t}\n\n\t// Before return, we need to restore the callee saved registers.\n\tcur = m.restoreRegistersInExecutionContext(cur, execCtrPtr, calleeSavedVRegs)\n\n\tif argOverlapWithExecCtxOffset >= 0 {\n\t\t// At this point execCtt is not used anymore, so we can finally store the\n\t\t// result to the register which overlaps with the execution context pointer.\n\t\tmem := newOperandMem(m.newAmodeImmReg(uint32(argOverlapWithExecCtxOffset), rspVReg))\n\t\tload := m.allocateInstr().asMov64MR(mem, execCtrPtr)\n\t\tcur = linkInstr(cur, load)\n\t}\n\n\t// Finally ready to return.\n\tcur = m.revertRBPRSP(cur)\n\tlinkInstr(cur, m.allocateInstr().asRet())\n\n\tm.encodeWithoutSSA(m.rootInstr)\n\treturn m.c.Buf()\n}\n\nfunc (m *machine) saveRegistersInExecutionContext(cur *instruction, execCtx regalloc.VReg, regs []regalloc.VReg) *instruction {\n\toffset := wazevoapi.ExecutionContextOffsetSavedRegistersBegin.I64()\n\tfor _, v := range regs {\n\t\tstore := m.allocateInstr()\n\t\tmem := newOperandMem(m.newAmodeImmReg(uint32(offset), execCtx))\n\t\tswitch v.RegType() {\n\t\tcase regalloc.RegTypeInt:\n\t\t\tstore.asMovRM(v, mem, 8)\n\t\tcase regalloc.RegTypeFloat:\n\t\t\tstore.asXmmMovRM(sseOpcodeMovdqu, v, mem)\n\t\tdefault:\n\t\t\tpanic(\"BUG\")\n\t\t}\n\t\tcur = linkInstr(cur, store)\n\t\toffset += 16 // See execution context struct. Each register is 16 bytes-aligned unconditionally.\n\t}\n\treturn cur\n}\n\nfunc (m *machine) restoreRegistersInExecutionContext(cur *instruction, execCtx regalloc.VReg, regs []regalloc.VReg) *instruction {\n\toffset := wazevoapi.ExecutionContextOffsetSavedRegistersBegin.I64()\n\tfor _, v := range regs {\n\t\tload := m.allocateInstr()\n\t\tmem := newOperandMem(m.newAmodeImmReg(uint32(offset), execCtx))\n\t\tswitch v.RegType() {\n\t\tcase regalloc.RegTypeInt:\n\t\t\tload.asMov64MR(mem, v)\n\t\tcase regalloc.RegTypeFloat:\n\t\t\tload.asXmmUnaryRmR(sseOpcodeMovdqu, mem, v)\n\t\tdefault:\n\t\t\tpanic(\"BUG\")\n\t\t}\n\t\tcur = linkInstr(cur, load)\n\t\toffset += 16 // See execution context struct. Each register is 16 bytes-aligned unconditionally.\n\t}\n\treturn cur\n}\n\nfunc (m *machine) storeReturnAddressAndExit(cur *instruction, execCtx regalloc.VReg) *instruction {\n\treadRip := m.allocateInstr()\n\tcur = linkInstr(cur, readRip)\n\n\tripReg := r12VReg // Callee saved which is already saved.\n\tsaveRip := m.allocateInstr().asMovRM(\n\t\tripReg,\n\t\tnewOperandMem(m.newAmodeImmReg(wazevoapi.ExecutionContextOffsetGoCallReturnAddress.U32(), execCtx)),\n\t\t8,\n\t)\n\tcur = linkInstr(cur, saveRip)\n\n\texit := m.allocateExitSeq(execCtx)\n\tcur = linkInstr(cur, exit)\n\n\tnop, l := m.allocateBrTarget()\n\tcur = linkInstr(cur, nop)\n\treadRip.asLEA(newOperandLabel(l), ripReg)\n\treturn cur\n}\n\n// saveRequiredRegs is the set of registers that must be saved/restored during growing stack when there's insufficient\n// stack space left. Basically this is the all allocatable registers except for RSP and RBP, and RAX which contains the\n// execution context pointer. ExecCtx pointer is always the first argument so we don't need to save it.\nvar stackGrowSaveVRegs = []regalloc.VReg{\n\trdxVReg, r12VReg, r13VReg, r14VReg, r15VReg,\n\trcxVReg, rbxVReg, rsiVReg, rdiVReg, r8VReg, r9VReg, r10VReg, r11VReg,\n\txmm8VReg, xmm9VReg, xmm10VReg, xmm11VReg, xmm12VReg, xmm13VReg, xmm14VReg, xmm15VReg,\n\txmm0VReg, xmm1VReg, xmm2VReg, xmm3VReg, xmm4VReg, xmm5VReg, xmm6VReg, xmm7VReg,\n}\n\n// CompileStackGrowCallSequence implements backend.Machine.\nfunc (m *machine) CompileStackGrowCallSequence() []byte {\n\tcur := m.allocateNop()\n\tm.rootInstr = cur\n\n\tcur = m.setupRBPRSP(cur)\n\n\t// Execution context is always the first argument.\n\texecCtrPtr := raxVReg\n\n\t// Save the callee saved and argument registers.\n\tcur = m.saveRegistersInExecutionContext(cur, execCtrPtr, stackGrowSaveVRegs)\n\n\t// Load the exitCode to the register.\n\texitCodeReg := r12VReg // Already saved.\n\tcur = linkInstr(cur, m.allocateInstr().asImm(exitCodeReg, uint64(wazevoapi.ExitCodeGrowStack), false))\n\n\tsaveRsp, saveRbp, setExitCode := m.allocateExitInstructions(execCtrPtr, exitCodeReg)\n\tcur = linkInstr(cur, setExitCode)\n\tcur = linkInstr(cur, saveRsp)\n\tcur = linkInstr(cur, saveRbp)\n\n\t// Ready to exit the execution.\n\tcur = m.storeReturnAddressAndExit(cur, execCtrPtr)\n\n\t// After the exit, restore the saved registers.\n\tcur = m.restoreRegistersInExecutionContext(cur, execCtrPtr, stackGrowSaveVRegs)\n\n\t// Finally ready to return.\n\tcur = m.revertRBPRSP(cur)\n\tlinkInstr(cur, m.allocateInstr().asRet())\n\n\tm.encodeWithoutSSA(m.rootInstr)\n\treturn m.c.Buf()\n}\n\n// insertStackBoundsCheck will insert the instructions after `cur` to check the\n// stack bounds, and if there's no sufficient spaces required for the function,\n// exit the execution and try growing it in Go world.\nfunc (m *machine) insertStackBoundsCheck(requiredStackSize int64, cur *instruction) *instruction {\n\t//\t\tadd $requiredStackSize, %rsp ;; Temporarily update the sp.\n\t// \t\tcmp ExecutionContextOffsetStackBottomPtr(%rax), %rsp ;; Compare the stack bottom and the sp.\n\t// \t\tja .ok\n\t//\t\tsub $requiredStackSize, %rsp ;; Reverse the temporary update.\n\t//      pushq r15 ;; save the temporary.\n\t//\t\tmov $requiredStackSize, %r15\n\t//\t\tmov %15, ExecutionContextOffsetStackGrowRequiredSize(%rax) ;; Set the required size in the execution context.\n\t//      popq r15 ;; restore the temporary.\n\t//\t\tcallq *ExecutionContextOffsetStackGrowCallTrampolineAddress(%rax) ;; Call the Go function to grow the stack.\n\t//\t\tjmp .cont\n\t// .ok:\n\t//\t\tsub $requiredStackSize, %rsp ;; Reverse the temporary update.\n\t// .cont:\n\tcur = m.addRSP(-int32(requiredStackSize), cur)\n\tcur = linkInstr(cur, m.allocateInstr().asCmpRmiR(true,\n\t\tnewOperandMem(m.newAmodeImmReg(wazevoapi.ExecutionContextOffsetStackBottomPtr.U32(), raxVReg)),\n\t\trspVReg, true))\n\n\tja := m.allocateInstr()\n\tcur = linkInstr(cur, ja)\n\n\tcur = m.addRSP(int32(requiredStackSize), cur)\n\n\t// Save the temporary.\n\n\tcur = linkInstr(cur, m.allocateInstr().asPush64(newOperandReg(r15VReg)))\n\t// Load the required size to the temporary.\n\tcur = linkInstr(cur, m.allocateInstr().asImm(r15VReg, uint64(requiredStackSize), true))\n\t// Set the required size in the execution context.\n\tcur = linkInstr(cur, m.allocateInstr().asMovRM(r15VReg,\n\t\tnewOperandMem(m.newAmodeImmReg(wazevoapi.ExecutionContextOffsetStackGrowRequiredSize.U32(), raxVReg)), 8))\n\t// Restore the temporary.\n\tcur = linkInstr(cur, m.allocateInstr().asPop64(r15VReg))\n\t// Call the Go function to grow the stack.\n\tcur = linkInstr(cur, m.allocateInstr().asCallIndirect(newOperandMem(m.newAmodeImmReg(\n\t\twazevoapi.ExecutionContextOffsetStackGrowCallTrampolineAddress.U32(), raxVReg)), nil))\n\t// Jump to the continuation.\n\tjmpToCont := m.allocateInstr()\n\tcur = linkInstr(cur, jmpToCont)\n\n\t// .ok:\n\tokInstr, ok := m.allocateBrTarget()\n\tcur = linkInstr(cur, okInstr)\n\tja.asJmpIf(condNBE, newOperandLabel(ok))\n\t// On the ok path, we only need to reverse the temporary update.\n\tcur = m.addRSP(int32(requiredStackSize), cur)\n\n\t// .cont:\n\tcontInstr, cont := m.allocateBrTarget()\n\tcur = linkInstr(cur, contInstr)\n\tjmpToCont.asJmp(newOperandLabel(cont))\n\n\treturn cur\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/amd64/cond.go",
    "content": "package amd64\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/ssa\"\n)\n\ntype cond byte\n\nconst (\n\t// condO represents (overflow) condition.\n\tcondO cond = iota\n\t// condNO represents (no overflow) condition.\n\tcondNO\n\t// condB represents (< unsigned) condition.\n\tcondB\n\t// condNB represents (>= unsigned) condition.\n\tcondNB\n\t// condZ represents (zero) condition.\n\tcondZ\n\t// condNZ represents (not-zero) condition.\n\tcondNZ\n\t// condBE represents (<= unsigned) condition.\n\tcondBE\n\t// condNBE represents (> unsigned) condition.\n\tcondNBE\n\t// condS represents (negative) condition.\n\tcondS\n\t// condNS represents (not-negative) condition.\n\tcondNS\n\t// condP represents (parity) condition.\n\tcondP\n\t// condNP represents (not parity) condition.\n\tcondNP\n\t// condL represents (< signed) condition.\n\tcondL\n\t// condNL represents (>= signed) condition.\n\tcondNL\n\t// condLE represents (<= signed) condition.\n\tcondLE\n\t// condNLE represents (> signed) condition.\n\tcondNLE\n\n\tcondInvalid\n)\n\nfunc (c cond) String() string {\n\tswitch c {\n\tcase condO:\n\t\treturn \"o\"\n\tcase condNO:\n\t\treturn \"no\"\n\tcase condB:\n\t\treturn \"b\"\n\tcase condNB:\n\t\treturn \"nb\"\n\tcase condZ:\n\t\treturn \"z\"\n\tcase condNZ:\n\t\treturn \"nz\"\n\tcase condBE:\n\t\treturn \"be\"\n\tcase condNBE:\n\t\treturn \"nbe\"\n\tcase condS:\n\t\treturn \"s\"\n\tcase condNS:\n\t\treturn \"ns\"\n\tcase condL:\n\t\treturn \"l\"\n\tcase condNL:\n\t\treturn \"nl\"\n\tcase condLE:\n\t\treturn \"le\"\n\tcase condNLE:\n\t\treturn \"nle\"\n\tcase condP:\n\t\treturn \"p\"\n\tcase condNP:\n\t\treturn \"np\"\n\tdefault:\n\t\tpanic(\"unreachable\")\n\t}\n}\n\nfunc condFromSSAIntCmpCond(origin ssa.IntegerCmpCond) cond {\n\tswitch origin {\n\tcase ssa.IntegerCmpCondEqual:\n\t\treturn condZ\n\tcase ssa.IntegerCmpCondNotEqual:\n\t\treturn condNZ\n\tcase ssa.IntegerCmpCondSignedLessThan:\n\t\treturn condL\n\tcase ssa.IntegerCmpCondSignedGreaterThanOrEqual:\n\t\treturn condNL\n\tcase ssa.IntegerCmpCondSignedGreaterThan:\n\t\treturn condNLE\n\tcase ssa.IntegerCmpCondSignedLessThanOrEqual:\n\t\treturn condLE\n\tcase ssa.IntegerCmpCondUnsignedLessThan:\n\t\treturn condB\n\tcase ssa.IntegerCmpCondUnsignedGreaterThanOrEqual:\n\t\treturn condNB\n\tcase ssa.IntegerCmpCondUnsignedGreaterThan:\n\t\treturn condNBE\n\tcase ssa.IntegerCmpCondUnsignedLessThanOrEqual:\n\t\treturn condBE\n\tdefault:\n\t\tpanic(\"unreachable\")\n\t}\n}\n\nfunc condFromSSAFloatCmpCond(origin ssa.FloatCmpCond) cond {\n\tswitch origin {\n\tcase ssa.FloatCmpCondGreaterThanOrEqual:\n\t\treturn condNB\n\tcase ssa.FloatCmpCondGreaterThan:\n\t\treturn condNBE\n\tcase ssa.FloatCmpCondEqual, ssa.FloatCmpCondNotEqual, ssa.FloatCmpCondLessThan, ssa.FloatCmpCondLessThanOrEqual:\n\t\tpanic(fmt.Sprintf(\"cond %s must be treated as a special case\", origin))\n\tdefault:\n\t\tpanic(\"unreachable\")\n\t}\n}\n\nfunc (c cond) encoding() byte {\n\treturn byte(c)\n}\n\nfunc (c cond) invert() cond {\n\tswitch c {\n\tcase condO:\n\t\treturn condNO\n\tcase condNO:\n\t\treturn condO\n\tcase condB:\n\t\treturn condNB\n\tcase condNB:\n\t\treturn condB\n\tcase condZ:\n\t\treturn condNZ\n\tcase condNZ:\n\t\treturn condZ\n\tcase condBE:\n\t\treturn condNBE\n\tcase condNBE:\n\t\treturn condBE\n\tcase condS:\n\t\treturn condNS\n\tcase condNS:\n\t\treturn condS\n\tcase condP:\n\t\treturn condNP\n\tcase condNP:\n\t\treturn condP\n\tcase condL:\n\t\treturn condNL\n\tcase condNL:\n\t\treturn condL\n\tcase condLE:\n\t\treturn condNLE\n\tcase condNLE:\n\t\treturn condLE\n\tdefault:\n\t\tpanic(\"unreachable\")\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/amd64/ext.go",
    "content": "package amd64\n\n// extMode represents the mode of extension in movzx/movsx.\ntype extMode byte\n\nconst (\n\t// extModeBL represents Byte -> Longword.\n\textModeBL extMode = iota\n\t// extModeBQ represents Byte -> Quadword.\n\textModeBQ\n\t// extModeWL represents Word -> Longword.\n\textModeWL\n\t// extModeWQ represents Word -> Quadword.\n\textModeWQ\n\t// extModeLQ represents Longword -> Quadword.\n\textModeLQ\n)\n\n// String implements fmt.Stringer.\nfunc (e extMode) String() string {\n\tswitch e {\n\tcase extModeBL:\n\t\treturn \"bl\"\n\tcase extModeBQ:\n\t\treturn \"bq\"\n\tcase extModeWL:\n\t\treturn \"wl\"\n\tcase extModeWQ:\n\t\treturn \"wq\"\n\tcase extModeLQ:\n\t\treturn \"lq\"\n\tdefault:\n\t\tpanic(\"BUG: invalid ext mode\")\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/amd64/instr.go",
    "content": "package amd64\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/backend\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/backend/regalloc\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/ssa\"\n)\n\ntype instruction struct {\n\tprev, next          *instruction\n\top1, op2            operand\n\tu1, u2              uint64\n\tb1                  bool\n\taddedBeforeRegAlloc bool\n\tkind                instructionKind\n}\n\n// IsCall implements regalloc.Instr.\nfunc (i *instruction) IsCall() bool { return i.kind == call }\n\n// IsIndirectCall implements regalloc.Instr.\nfunc (i *instruction) IsIndirectCall() bool {\n\treturn i.kind == callIndirect\n}\n\n// IsReturn implements regalloc.Instr.\nfunc (i *instruction) IsReturn() bool { return i.kind == ret }\n\n// String implements regalloc.Instr.\nfunc (i *instruction) String() string {\n\tswitch i.kind {\n\tcase nop0:\n\t\treturn \"nop\"\n\tcase sourceOffsetInfo:\n\t\treturn fmt.Sprintf(\"source_offset_info %d\", i.u1)\n\tcase ret:\n\t\treturn \"ret\"\n\tcase imm:\n\t\tif i.b1 {\n\t\t\treturn fmt.Sprintf(\"movabsq $%d, %s\", int64(i.u1), i.op2.format(true))\n\t\t} else {\n\t\t\treturn fmt.Sprintf(\"movl $%d, %s\", int32(i.u1), i.op2.format(false))\n\t\t}\n\tcase aluRmiR:\n\t\treturn fmt.Sprintf(\"%s %s, %s\", aluRmiROpcode(i.u1), i.op1.format(i.b1), i.op2.format(i.b1))\n\tcase movRR:\n\t\tif i.b1 {\n\t\t\treturn fmt.Sprintf(\"movq %s, %s\", i.op1.format(true), i.op2.format(true))\n\t\t} else {\n\t\t\treturn fmt.Sprintf(\"movl %s, %s\", i.op1.format(false), i.op2.format(false))\n\t\t}\n\tcase xmmRmR:\n\t\treturn fmt.Sprintf(\"%s %s, %s\", sseOpcode(i.u1), i.op1.format(false), i.op2.format(false))\n\tcase gprToXmm:\n\t\treturn fmt.Sprintf(\"%s %s, %s\", sseOpcode(i.u1), i.op1.format(i.b1), i.op2.format(i.b1))\n\tcase xmmUnaryRmR:\n\t\treturn fmt.Sprintf(\"%s %s, %s\", sseOpcode(i.u1), i.op1.format(false), i.op2.format(false))\n\tcase xmmUnaryRmRImm:\n\t\treturn fmt.Sprintf(\"%s $%d, %s, %s\", sseOpcode(i.u1), roundingMode(i.u2), i.op1.format(false), i.op2.format(false))\n\tcase unaryRmR:\n\t\tvar suffix string\n\t\tif i.b1 {\n\t\t\tsuffix = \"q\"\n\t\t} else {\n\t\t\tsuffix = \"l\"\n\t\t}\n\t\treturn fmt.Sprintf(\"%s%s %s, %s\", unaryRmROpcode(i.u1), suffix, i.op1.format(i.b1), i.op2.format(i.b1))\n\tcase not:\n\t\tvar op string\n\t\tif i.b1 {\n\t\t\top = \"notq\"\n\t\t} else {\n\t\t\top = \"notl\"\n\t\t}\n\t\treturn fmt.Sprintf(\"%s %s\", op, i.op1.format(i.b1))\n\tcase neg:\n\t\tvar op string\n\t\tif i.b1 {\n\t\t\top = \"negq\"\n\t\t} else {\n\t\t\top = \"negl\"\n\t\t}\n\t\treturn fmt.Sprintf(\"%s %s\", op, i.op1.format(i.b1))\n\tcase div:\n\t\tvar prefix string\n\t\tvar op string\n\t\tif i.b1 {\n\t\t\top = \"divq\"\n\t\t} else {\n\t\t\top = \"divl\"\n\t\t}\n\t\tif i.u1 != 0 {\n\t\t\tprefix = \"i\"\n\t\t}\n\t\treturn fmt.Sprintf(\"%s%s %s\", prefix, op, i.op1.format(i.b1))\n\tcase mulHi:\n\t\tsigned, _64 := i.u1 != 0, i.b1\n\t\tvar op string\n\t\tswitch {\n\t\tcase signed && _64:\n\t\t\top = \"imulq\"\n\t\tcase !signed && _64:\n\t\t\top = \"mulq\"\n\t\tcase signed && !_64:\n\t\t\top = \"imull\"\n\t\tcase !signed && !_64:\n\t\t\top = \"mull\"\n\t\t}\n\t\treturn fmt.Sprintf(\"%s %s\", op, i.op1.format(i.b1))\n\tcase signExtendData:\n\t\tvar op string\n\t\tif i.b1 {\n\t\t\top = \"cqo\"\n\t\t} else {\n\t\t\top = \"cdq\"\n\t\t}\n\t\treturn op\n\tcase movzxRmR:\n\t\treturn fmt.Sprintf(\"movzx.%s %s, %s\", extMode(i.u1), i.op1.format(true), i.op2.format(true))\n\tcase mov64MR:\n\t\treturn fmt.Sprintf(\"movq %s, %s\", i.op1.format(true), i.op2.format(true))\n\tcase lea:\n\t\treturn fmt.Sprintf(\"lea %s, %s\", i.op1.format(true), i.op2.format(true))\n\tcase movsxRmR:\n\t\treturn fmt.Sprintf(\"movsx.%s %s, %s\", extMode(i.u1), i.op1.format(true), i.op2.format(true))\n\tcase movRM:\n\t\tvar suffix string\n\t\tswitch i.u1 {\n\t\tcase 1:\n\t\t\tsuffix = \"b\"\n\t\tcase 2:\n\t\t\tsuffix = \"w\"\n\t\tcase 4:\n\t\t\tsuffix = \"l\"\n\t\tcase 8:\n\t\t\tsuffix = \"q\"\n\t\t}\n\t\treturn fmt.Sprintf(\"mov.%s %s, %s\", suffix, i.op1.format(true), i.op2.format(true))\n\tcase shiftR:\n\t\tvar suffix string\n\t\tif i.b1 {\n\t\t\tsuffix = \"q\"\n\t\t} else {\n\t\t\tsuffix = \"l\"\n\t\t}\n\t\treturn fmt.Sprintf(\"%s%s %s, %s\", shiftROp(i.u1), suffix, i.op1.format(false), i.op2.format(i.b1))\n\tcase xmmRmiReg:\n\t\treturn fmt.Sprintf(\"%s %s, %s\", sseOpcode(i.u1), i.op1.format(true), i.op2.format(true))\n\tcase cmpRmiR:\n\t\tvar op, suffix string\n\t\tif i.u1 != 0 {\n\t\t\top = \"cmp\"\n\t\t} else {\n\t\t\top = \"test\"\n\t\t}\n\t\tif i.b1 {\n\t\t\tsuffix = \"q\"\n\t\t} else {\n\t\t\tsuffix = \"l\"\n\t\t}\n\t\tif op == \"test\" && i.op1.kind == operandKindMem {\n\t\t\t// Print consistently with AT&T syntax.\n\t\t\treturn fmt.Sprintf(\"%s%s %s, %s\", op, suffix, i.op2.format(i.b1), i.op1.format(i.b1))\n\t\t}\n\t\treturn fmt.Sprintf(\"%s%s %s, %s\", op, suffix, i.op1.format(i.b1), i.op2.format(i.b1))\n\tcase setcc:\n\t\treturn fmt.Sprintf(\"set%s %s\", cond(i.u1), i.op2.format(true))\n\tcase cmove:\n\t\tvar suffix string\n\t\tif i.b1 {\n\t\t\tsuffix = \"q\"\n\t\t} else {\n\t\t\tsuffix = \"l\"\n\t\t}\n\t\treturn fmt.Sprintf(\"cmov%s%s %s, %s\", cond(i.u1), suffix, i.op1.format(i.b1), i.op2.format(i.b1))\n\tcase push64:\n\t\treturn fmt.Sprintf(\"pushq %s\", i.op1.format(true))\n\tcase pop64:\n\t\treturn fmt.Sprintf(\"popq %s\", i.op1.format(true))\n\tcase xmmMovRM:\n\t\treturn fmt.Sprintf(\"%s %s, %s\", sseOpcode(i.u1), i.op1.format(true), i.op2.format(true))\n\tcase xmmLoadConst:\n\t\tpanic(\"TODO\")\n\tcase xmmToGpr:\n\t\treturn fmt.Sprintf(\"%s %s, %s\", sseOpcode(i.u1), i.op1.format(i.b1), i.op2.format(i.b1))\n\tcase cvtUint64ToFloatSeq:\n\t\tpanic(\"TODO\")\n\tcase cvtFloatToSintSeq:\n\t\tpanic(\"TODO\")\n\tcase cvtFloatToUintSeq:\n\t\tpanic(\"TODO\")\n\tcase xmmMinMaxSeq:\n\t\tpanic(\"TODO\")\n\tcase xmmCmpRmR:\n\t\treturn fmt.Sprintf(\"%s %s, %s\", sseOpcode(i.u1), i.op1.format(false), i.op2.format(false))\n\tcase xmmRmRImm:\n\t\top := sseOpcode(i.u1)\n\t\tr1, r2 := i.op1.format(op == sseOpcodePextrq || op == sseOpcodePinsrq),\n\t\t\ti.op2.format(op == sseOpcodePextrq || op == sseOpcodePinsrq)\n\t\treturn fmt.Sprintf(\"%s $%d, %s, %s\", op, i.u2, r1, r2)\n\tcase jmp:\n\t\treturn fmt.Sprintf(\"jmp %s\", i.op1.format(true))\n\tcase jmpIf:\n\t\treturn fmt.Sprintf(\"j%s %s\", cond(i.u1), i.op1.format(true))\n\tcase jmpTableIsland:\n\t\treturn fmt.Sprintf(\"jump_table_island: jmp_table_index=%d\", i.u1)\n\tcase exitSequence:\n\t\treturn fmt.Sprintf(\"exit_sequence %s\", i.op1.format(true))\n\tcase ud2:\n\t\treturn \"ud2\"\n\tcase call:\n\t\treturn fmt.Sprintf(\"call %s\", ssa.FuncRef(i.u1))\n\tcase callIndirect:\n\t\treturn fmt.Sprintf(\"callq *%s\", i.op1.format(true))\n\tcase xchg:\n\t\tvar suffix string\n\t\tswitch i.u1 {\n\t\tcase 1:\n\t\t\tsuffix = \"b\"\n\t\tcase 2:\n\t\t\tsuffix = \"w\"\n\t\tcase 4:\n\t\t\tsuffix = \"l\"\n\t\tcase 8:\n\t\t\tsuffix = \"q\"\n\t\t}\n\t\treturn fmt.Sprintf(\"xchg.%s %s, %s\", suffix, i.op1.format(true), i.op2.format(true))\n\tcase zeros:\n\t\treturn fmt.Sprintf(\"xor %s, %s\", i.op2.format(true), i.op2.format(true))\n\tcase fcvtToSintSequence:\n\t\texecCtx, src, tmpGp, tmpGp2, tmpXmm, src64, dst64, sat := i.fcvtToSintSequenceData()\n\t\treturn fmt.Sprintf(\n\t\t\t\"fcvtToSintSequence execCtx=%s, src=%s, tmpGp=%s, tmpGp2=%s, tmpXmm=%s, src64=%v, dst64=%v, sat=%v\",\n\t\t\tformatVRegSized(execCtx, true),\n\t\t\tformatVRegSized(src, true),\n\t\t\tformatVRegSized(tmpGp, true),\n\t\t\tformatVRegSized(tmpGp2, true),\n\t\t\tformatVRegSized(tmpXmm, true), src64, dst64, sat)\n\tcase fcvtToUintSequence:\n\t\texecCtx, src, tmpGp, tmpGp2, tmpXmm, tmpXmm2, src64, dst64, sat := i.fcvtToUintSequenceData()\n\t\treturn fmt.Sprintf(\n\t\t\t\"fcvtToUintSequence execCtx=%s, src=%s, tmpGp=%s, tmpGp2=%s, tmpXmm=%s, tmpXmm2=%s, src64=%v, dst64=%v, sat=%v\",\n\t\t\tformatVRegSized(execCtx, true),\n\t\t\tformatVRegSized(src, true),\n\t\t\tformatVRegSized(tmpGp, true),\n\t\t\tformatVRegSized(tmpGp2, true),\n\t\t\tformatVRegSized(tmpXmm, true),\n\t\t\tformatVRegSized(tmpXmm2, true), src64, dst64, sat)\n\tcase idivRemSequence:\n\t\texecCtx, divisor, tmpGp, isDiv, signed, _64 := i.idivRemSequenceData()\n\t\treturn fmt.Sprintf(\"idivRemSequence execCtx=%s, divisor=%s, tmpGp=%s, isDiv=%v, signed=%v, _64=%v\",\n\t\t\tformatVRegSized(execCtx, true), formatVRegSized(divisor, _64), formatVRegSized(tmpGp, _64), isDiv, signed, _64)\n\tcase defineUninitializedReg:\n\t\treturn fmt.Sprintf(\"defineUninitializedReg %s\", i.op2.format(true))\n\tcase xmmCMov:\n\t\treturn fmt.Sprintf(\"xmmcmov%s %s, %s\", cond(i.u1), i.op1.format(true), i.op2.format(true))\n\tcase blendvpd:\n\t\treturn fmt.Sprintf(\"blendvpd %s, %s, %%xmm0\", i.op1.format(false), i.op2.format(false))\n\tcase mfence:\n\t\treturn \"mfence\"\n\tcase lockcmpxchg:\n\t\tvar suffix string\n\t\tswitch i.u1 {\n\t\tcase 1:\n\t\t\tsuffix = \"b\"\n\t\tcase 2:\n\t\t\tsuffix = \"w\"\n\t\tcase 4:\n\t\t\tsuffix = \"l\"\n\t\tcase 8:\n\t\t\tsuffix = \"q\"\n\t\t}\n\t\treturn fmt.Sprintf(\"lock cmpxchg.%s %s, %s\", suffix, i.op1.format(true), i.op2.format(true))\n\tcase lockxadd:\n\t\tvar suffix string\n\t\tswitch i.u1 {\n\t\tcase 1:\n\t\t\tsuffix = \"b\"\n\t\tcase 2:\n\t\t\tsuffix = \"w\"\n\t\tcase 4:\n\t\t\tsuffix = \"l\"\n\t\tcase 8:\n\t\t\tsuffix = \"q\"\n\t\t}\n\t\treturn fmt.Sprintf(\"lock xadd.%s %s, %s\", suffix, i.op1.format(true), i.op2.format(true))\n\n\tcase nopUseReg:\n\t\treturn fmt.Sprintf(\"nop_use_reg %s\", i.op1.format(true))\n\n\tcase tailCall:\n\t\treturn fmt.Sprintf(\"tailCall %s\", ssa.FuncRef(i.u1))\n\tcase tailCallIndirect:\n\t\treturn fmt.Sprintf(\"tailCallIndirect %s\", i.op1.format(true))\n\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"BUG: %d\", int(i.kind)))\n\t}\n}\n\n// Defs implements regalloc.Instr.\nfunc (i *instruction) Defs(regs *[]regalloc.VReg) []regalloc.VReg {\n\t*regs = (*regs)[:0]\n\tswitch dk := defKinds[i.kind]; dk {\n\tcase defKindNone:\n\tcase defKindOp2:\n\t\t*regs = append(*regs, i.op2.reg())\n\tcase defKindCall:\n\t\t_, _, retIntRealRegs, retFloatRealRegs, _ := backend.ABIInfoFromUint64(i.u2)\n\t\tfor i := byte(0); i < retIntRealRegs; i++ {\n\t\t\t*regs = append(*regs, regInfo.RealRegToVReg[intArgResultRegs[i]])\n\t\t}\n\t\tfor i := byte(0); i < retFloatRealRegs; i++ {\n\t\t\t*regs = append(*regs, regInfo.RealRegToVReg[floatArgResultRegs[i]])\n\t\t}\n\tcase defKindDivRem:\n\t\t_, _, _, isDiv, _, _ := i.idivRemSequenceData()\n\t\tif isDiv {\n\t\t\t*regs = append(*regs, raxVReg)\n\t\t} else {\n\t\t\t*regs = append(*regs, rdxVReg)\n\t\t}\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"BUG: invalid defKind \\\"%s\\\" for %s\", dk, i))\n\t}\n\treturn *regs\n}\n\n// Uses implements regalloc.Instr.\nfunc (i *instruction) Uses(regs *[]regalloc.VReg) []regalloc.VReg {\n\t*regs = (*regs)[:0]\n\tswitch uk := useKinds[i.kind]; uk {\n\tcase useKindNone:\n\tcase useKindOp1Op2Reg, useKindOp1RegOp2:\n\t\topAny, opReg := &i.op1, &i.op2\n\t\tif uk == useKindOp1RegOp2 {\n\t\t\topAny, opReg = opReg, opAny\n\t\t}\n\t\t// The destination operand (op2) can be only reg,\n\t\t// the source operand (op1) can be imm32, reg or mem.\n\t\tswitch opAny.kind {\n\t\tcase operandKindReg:\n\t\t\t*regs = append(*regs, opAny.reg())\n\t\tcase operandKindMem:\n\t\t\topAny.addressMode().uses(regs)\n\t\tcase operandKindImm32:\n\t\tdefault:\n\t\t\tpanic(fmt.Sprintf(\"BUG: invalid operand: %s\", i))\n\t\t}\n\t\tif opReg.kind != operandKindReg {\n\t\t\tpanic(fmt.Sprintf(\"BUG: invalid operand: %s\", i))\n\t\t}\n\t\t*regs = append(*regs, opReg.reg())\n\tcase useKindOp1:\n\t\top := i.op1\n\t\tswitch op.kind {\n\t\tcase operandKindReg:\n\t\t\t*regs = append(*regs, op.reg())\n\t\tcase operandKindMem:\n\t\t\top.addressMode().uses(regs)\n\t\tcase operandKindImm32, operandKindLabel:\n\t\tdefault:\n\t\t\tpanic(fmt.Sprintf(\"BUG: invalid operand: %s\", i))\n\t\t}\n\tcase useKindCallInd, useKindTailCallInd:\n\t\top := i.op1\n\t\tswitch op.kind {\n\t\tcase operandKindReg:\n\t\t\t*regs = append(*regs, op.reg())\n\t\tcase operandKindMem:\n\t\t\top.addressMode().uses(regs)\n\t\tdefault:\n\t\t\tpanic(fmt.Sprintf(\"BUG: invalid operand: %s\", i))\n\t\t}\n\t\tfallthrough\n\tcase useKindCall:\n\t\targIntRealRegs, argFloatRealRegs, _, _, _ := backend.ABIInfoFromUint64(i.u2)\n\t\tfor i := byte(0); i < argIntRealRegs; i++ {\n\t\t\t*regs = append(*regs, regInfo.RealRegToVReg[intArgResultRegs[i]])\n\t\t}\n\t\tfor i := byte(0); i < argFloatRealRegs; i++ {\n\t\t\t*regs = append(*regs, regInfo.RealRegToVReg[floatArgResultRegs[i]])\n\t\t}\n\tcase useKindFcvtToSintSequence:\n\t\texecCtx, src, tmpGp, tmpGp2, tmpXmm, _, _, _ := i.fcvtToSintSequenceData()\n\t\t*regs = append(*regs, execCtx, src, tmpGp, tmpGp2, tmpXmm)\n\tcase useKindFcvtToUintSequence:\n\t\texecCtx, src, tmpGp, tmpGp2, tmpXmm, tmpXmm2, _, _, _ := i.fcvtToUintSequenceData()\n\t\t*regs = append(*regs, execCtx, src, tmpGp, tmpGp2, tmpXmm, tmpXmm2)\n\tcase useKindDivRem:\n\t\texecCtx, divisor, tmpGp, _, _, _ := i.idivRemSequenceData()\n\t\t// idiv uses rax and rdx as implicit operands.\n\t\t*regs = append(*regs, raxVReg, rdxVReg, execCtx, divisor, tmpGp)\n\tcase useKindBlendvpd:\n\t\t*regs = append(*regs, xmm0VReg)\n\n\t\topAny, opReg := &i.op1, &i.op2\n\t\tswitch opAny.kind {\n\t\tcase operandKindReg:\n\t\t\t*regs = append(*regs, opAny.reg())\n\t\tcase operandKindMem:\n\t\t\topAny.addressMode().uses(regs)\n\t\tdefault:\n\t\t\tpanic(fmt.Sprintf(\"BUG: invalid operand: %s\", i))\n\t\t}\n\t\tif opReg.kind != operandKindReg {\n\t\t\tpanic(fmt.Sprintf(\"BUG: invalid operand: %s\", i))\n\t\t}\n\t\t*regs = append(*regs, opReg.reg())\n\n\tcase useKindRaxOp1RegOp2:\n\t\topReg, opAny := &i.op1, &i.op2\n\t\t*regs = append(*regs, raxVReg, opReg.reg())\n\t\tswitch opAny.kind {\n\t\tcase operandKindReg:\n\t\t\t*regs = append(*regs, opAny.reg())\n\t\tcase operandKindMem:\n\t\t\topAny.addressMode().uses(regs)\n\t\tdefault:\n\t\t\tpanic(fmt.Sprintf(\"BUG: invalid operand: %s\", i))\n\t\t}\n\t\tif opReg.kind != operandKindReg {\n\t\t\tpanic(fmt.Sprintf(\"BUG: invalid operand: %s\", i))\n\t\t}\n\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"BUG: invalid useKind %s for %s\", uk, i))\n\t}\n\treturn *regs\n}\n\n// AssignUse implements regalloc.Instr.\nfunc (i *instruction) AssignUse(index int, v regalloc.VReg) {\n\tswitch uk := useKinds[i.kind]; uk {\n\tcase useKindNone:\n\tcase useKindCallInd, useKindTailCallInd:\n\t\tif index != 0 {\n\t\t\tpanic(\"BUG\")\n\t\t}\n\t\top := &i.op1\n\t\tswitch op.kind {\n\t\tcase operandKindReg:\n\t\t\tif uk == useKindTailCallInd && v != r11VReg {\n\t\t\t\tpanic(\"BUG\")\n\t\t\t}\n\t\t\top.setReg(v)\n\t\tcase operandKindMem:\n\t\t\top.addressMode().assignUses(index, v)\n\t\tdefault:\n\t\t\tpanic(\"BUG\")\n\t\t}\n\tcase useKindOp1Op2Reg, useKindOp1RegOp2:\n\t\top, opMustBeReg := &i.op1, &i.op2\n\t\tif uk == useKindOp1RegOp2 {\n\t\t\top, opMustBeReg = opMustBeReg, op\n\t\t}\n\t\tswitch op.kind {\n\t\tcase operandKindReg:\n\t\t\tif index == 0 {\n\t\t\t\top.setReg(v)\n\t\t\t} else if index == 1 {\n\t\t\t\topMustBeReg.setReg(v)\n\t\t\t} else {\n\t\t\t\tpanic(\"BUG\")\n\t\t\t}\n\t\tcase operandKindMem:\n\t\t\tnregs := op.addressMode().nregs()\n\t\t\tif index < nregs {\n\t\t\t\top.addressMode().assignUses(index, v)\n\t\t\t} else if index == nregs {\n\t\t\t\topMustBeReg.setReg(v)\n\t\t\t} else {\n\t\t\t\tpanic(\"BUG\")\n\t\t\t}\n\t\tcase operandKindImm32:\n\t\t\tif index == 0 {\n\t\t\t\topMustBeReg.setReg(v)\n\t\t\t} else {\n\t\t\t\tpanic(\"BUG\")\n\t\t\t}\n\t\tdefault:\n\t\t\tpanic(fmt.Sprintf(\"BUG: invalid operand pair: %s\", i))\n\t\t}\n\tcase useKindOp1:\n\t\top := &i.op1\n\t\tswitch op.kind {\n\t\tcase operandKindReg:\n\t\t\tif index != 0 {\n\t\t\t\tpanic(\"BUG\")\n\t\t\t}\n\t\t\top.setReg(v)\n\t\tcase operandKindMem:\n\t\t\top.addressMode().assignUses(index, v)\n\t\tdefault:\n\t\t\tpanic(fmt.Sprintf(\"BUG: invalid operand: %s\", i))\n\t\t}\n\tcase useKindFcvtToSintSequence:\n\t\tswitch index {\n\t\tcase 0:\n\t\t\ti.op1.addressMode().base = v\n\t\tcase 1:\n\t\t\ti.op1.addressMode().index = v\n\t\tcase 2:\n\t\t\ti.op2.addressMode().base = v\n\t\tcase 3:\n\t\t\ti.op2.addressMode().index = v\n\t\tcase 4:\n\t\t\ti.u1 = uint64(v)\n\t\tdefault:\n\t\t\tpanic(\"BUG\")\n\t\t}\n\tcase useKindFcvtToUintSequence:\n\t\tswitch index {\n\t\tcase 0:\n\t\t\ti.op1.addressMode().base = v\n\t\tcase 1:\n\t\t\ti.op1.addressMode().index = v\n\t\tcase 2:\n\t\t\ti.op2.addressMode().base = v\n\t\tcase 3:\n\t\t\ti.op2.addressMode().index = v\n\t\tcase 4:\n\t\t\ti.u1 = uint64(v)\n\t\tcase 5:\n\t\t\ti.u2 = uint64(v)\n\t\tdefault:\n\t\t\tpanic(\"BUG\")\n\t\t}\n\tcase useKindDivRem:\n\t\tswitch index {\n\t\tcase 0:\n\t\t\tif v != raxVReg {\n\t\t\t\tpanic(\"BUG\")\n\t\t\t}\n\t\tcase 1:\n\t\t\tif v != rdxVReg {\n\t\t\t\tpanic(\"BUG\")\n\t\t\t}\n\t\tcase 2:\n\t\t\ti.op1.setReg(v)\n\t\tcase 3:\n\t\t\ti.op2.setReg(v)\n\t\tcase 4:\n\t\t\ti.u1 = uint64(v)\n\t\tdefault:\n\t\t\tpanic(\"BUG\")\n\t\t}\n\tcase useKindBlendvpd:\n\t\top, opMustBeReg := &i.op1, &i.op2\n\t\tif index == 0 {\n\t\t\tif v.RealReg() != xmm0 {\n\t\t\t\tpanic(\"BUG\")\n\t\t\t}\n\t\t} else {\n\t\t\tswitch op.kind {\n\t\t\tcase operandKindReg:\n\t\t\t\tswitch index {\n\t\t\t\tcase 1:\n\t\t\t\t\top.setReg(v)\n\t\t\t\tcase 2:\n\t\t\t\t\topMustBeReg.setReg(v)\n\t\t\t\tdefault:\n\t\t\t\t\tpanic(\"BUG\")\n\t\t\t\t}\n\t\t\tcase operandKindMem:\n\t\t\t\tnregs := op.addressMode().nregs()\n\t\t\t\tindex--\n\t\t\t\tif index < nregs {\n\t\t\t\t\top.addressMode().assignUses(index, v)\n\t\t\t\t} else if index == nregs {\n\t\t\t\t\topMustBeReg.setReg(v)\n\t\t\t\t} else {\n\t\t\t\t\tpanic(\"BUG\")\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tpanic(fmt.Sprintf(\"BUG: invalid operand pair: %s\", i))\n\t\t\t}\n\t\t}\n\n\tcase useKindRaxOp1RegOp2:\n\t\tswitch index {\n\t\tcase 0:\n\t\t\tif v.RealReg() != rax {\n\t\t\t\tpanic(\"BUG\")\n\t\t\t}\n\t\tcase 1:\n\t\t\ti.op1.setReg(v)\n\t\tdefault:\n\t\t\top := &i.op2\n\t\t\tswitch op.kind {\n\t\t\tcase operandKindReg:\n\t\t\t\tswitch index {\n\t\t\t\tcase 1:\n\t\t\t\t\top.setReg(v)\n\t\t\t\tcase 2:\n\t\t\t\t\top.setReg(v)\n\t\t\t\tdefault:\n\t\t\t\t\tpanic(\"BUG\")\n\t\t\t\t}\n\t\t\tcase operandKindMem:\n\t\t\t\tnregs := op.addressMode().nregs()\n\t\t\t\tindex -= 2\n\t\t\t\tif index < nregs {\n\t\t\t\t\top.addressMode().assignUses(index, v)\n\t\t\t\t} else if index == nregs {\n\t\t\t\t\top.setReg(v)\n\t\t\t\t} else {\n\t\t\t\t\tpanic(\"BUG\")\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tpanic(fmt.Sprintf(\"BUG: invalid operand pair: %s\", i))\n\t\t\t}\n\t\t}\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"BUG: invalid useKind %s for %s\", uk, i))\n\t}\n}\n\n// AssignDef implements regalloc.Instr.\nfunc (i *instruction) AssignDef(reg regalloc.VReg) {\n\tswitch dk := defKinds[i.kind]; dk {\n\tcase defKindNone:\n\tcase defKindOp2:\n\t\ti.op2.setReg(reg)\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"BUG: invalid defKind \\\"%s\\\" for %s\", dk, i))\n\t}\n}\n\n// IsCopy implements regalloc.Instr.\nfunc (i *instruction) IsCopy() bool {\n\tk := i.kind\n\tif k == movRR {\n\t\treturn true\n\t}\n\tif k == xmmUnaryRmR {\n\t\tif i.op1.kind == operandKindReg {\n\t\t\tsse := sseOpcode(i.u1)\n\t\t\treturn sse == sseOpcodeMovss || sse == sseOpcodeMovsd || sse == sseOpcodeMovdqu\n\t\t}\n\t}\n\treturn false\n}\n\nfunc resetInstruction(i *instruction) {\n\t*i = instruction{}\n}\n\nfunc (i *instruction) asNop0WithLabel(label label) *instruction { //nolint\n\ti.kind = nop0\n\ti.u1 = uint64(label)\n\treturn i\n}\n\nfunc (i *instruction) nop0Label() label {\n\treturn label(i.u1)\n}\n\ntype instructionKind byte\n\nconst (\n\tnop0 instructionKind = iota + 1\n\n\t// Integer arithmetic/bit-twiddling: (add sub and or xor mul, etc.) (32 64) (reg addr imm) reg\n\taluRmiR\n\n\t// Instructions on GPR that only read src and defines dst (dst is not modified): bsr, etc.\n\tunaryRmR\n\n\t// Bitwise not\n\tnot\n\n\t// Integer negation\n\tneg\n\n\t// Integer quotient and remainder: (div idiv) $rax $rdx (reg addr)\n\tdiv\n\n\t// The high bits (RDX) of a (un)signed multiply: RDX:RAX := RAX * rhs.\n\tmulHi\n\n\t// Do a sign-extend based on the sign of the value in rax into rdx: (cwd cdq cqo)\n\t// or al into ah: (cbw)\n\tsignExtendData\n\n\t// Constant materialization: (imm32 imm64) reg.\n\t// Either: movl $imm32, %reg32 or movabsq $imm64, %reg64.\n\timm\n\n\t// GPR to GPR move: mov (64 32) reg reg.\n\tmovRR\n\n\t// movzxRmR is zero-extended loads or move (R to R), except for 64 bits: movz (bl bq wl wq lq) addr reg.\n\t// Note that the lq variant doesn't really exist since the default zero-extend rule makes it\n\t// unnecessary. For that case we emit the equivalent \"movl AM, reg32\".\n\tmovzxRmR\n\n\t// mov64MR is a plain 64-bit integer load, since movzxRmR can't represent that.\n\tmov64MR\n\n\t// Loads the memory address of addr into dst.\n\tlea\n\n\t// Sign-extended loads and moves: movs (bl bq wl wq lq) addr reg.\n\tmovsxRmR\n\n\t// Integer stores: mov (b w l q) reg addr.\n\tmovRM\n\n\t// Arithmetic shifts: (shl shr sar) (b w l q) imm reg.\n\tshiftR\n\n\t// Arithmetic SIMD shifts.\n\txmmRmiReg\n\n\t// Integer comparisons/tests: cmp or test (b w l q) (reg addr imm) reg.\n\tcmpRmiR\n\n\t// Materializes the requested condition code in the destination reg.\n\tsetcc\n\n\t// Integer conditional move.\n\t// Overwrites the destination register.\n\tcmove\n\n\t// pushq (reg addr imm)\n\tpush64\n\n\t// popq reg\n\tpop64\n\n\t// XMM (scalar or vector) binary op: (add sub and or xor mul adc? sbb?) (32 64) (reg addr) reg\n\txmmRmR\n\n\t// XMM (scalar or vector) unary op: mov between XMM registers (32 64) (reg addr) reg.\n\t//\n\t// This differs from xmmRmR in that the dst register of xmmUnaryRmR is not used in the\n\t// computation of the instruction dst value and so does not have to be a previously valid\n\t// value. This is characteristic of mov instructions.\n\txmmUnaryRmR\n\n\t// XMM (scalar or vector) unary op with immediate: roundss, roundsd, etc.\n\t//\n\t// This differs from XMM_RM_R_IMM in that the dst register of\n\t// XmmUnaryRmRImm is not used in the computation of the instruction dst\n\t// value and so does not have to be a previously valid value.\n\txmmUnaryRmRImm\n\n\t// XMM (scalar or vector) unary op (from xmm to mem): stores, movd, movq\n\txmmMovRM\n\n\t// XMM (vector) unary op (to move a constant value into an xmm register): movups\n\txmmLoadConst\n\n\t// XMM (scalar) unary op (from xmm to integer reg): movd, movq, cvtts{s,d}2si\n\txmmToGpr\n\n\t// XMM (scalar) unary op (from integer to float reg): movd, movq, cvtsi2s{s,d}\n\tgprToXmm\n\n\t// Converts an unsigned int64 to a float32/float64.\n\tcvtUint64ToFloatSeq\n\n\t// Converts a scalar xmm to a signed int32/int64.\n\tcvtFloatToSintSeq\n\n\t// Converts a scalar xmm to an unsigned int32/int64.\n\tcvtFloatToUintSeq\n\n\t// A sequence to compute min/max with the proper NaN semantics for xmm registers.\n\txmmMinMaxSeq\n\n\t// Float comparisons/tests: cmp (b w l q) (reg addr imm) reg.\n\txmmCmpRmR\n\n\t// A binary XMM instruction with an 8-bit immediate: e.g. cmp (ps pd) imm (reg addr) reg\n\txmmRmRImm\n\n\t// Direct call: call simm32.\n\t// Note that the offset is the relative to the *current RIP*, which points to the first byte of the next instruction.\n\tcall\n\n\t// Indirect call: callq (reg mem).\n\tcallIndirect\n\n\t// Return.\n\tret\n\n\t// Jump: jmp (reg, mem, imm32 or label)\n\tjmp\n\n\t// Jump conditionally: jcond cond label.\n\tjmpIf\n\n\t// jmpTableIsland is to emit the jump table.\n\tjmpTableIsland\n\n\t// exitSequence exits the execution and go back to the Go world.\n\texitSequence\n\n\t// An instruction that will always trigger the illegal instruction exception.\n\tud2\n\n\t// xchg is described in https://www.felixcloutier.com/x86/xchg.\n\t// This instruction uses two operands, where one of them can be a memory address, and swaps their values.\n\t// If the dst is a memory address, the execution is atomic.\n\txchg\n\n\t// lockcmpxchg is the cmpxchg instruction https://www.felixcloutier.com/x86/cmpxchg with a lock prefix.\n\tlockcmpxchg\n\n\t// zeros puts zeros into the destination register. This is implemented as xor reg, reg for\n\t// either integer or XMM registers. The reason why we have this instruction instead of using aluRmiR\n\t// is that it requires the already-defined registers. From reg alloc's perspective, this defines\n\t// the destination register and takes no inputs.\n\tzeros\n\n\t// sourceOffsetInfo is a dummy instruction to emit source offset info.\n\t// The existence of this instruction does not affect the execution.\n\tsourceOffsetInfo\n\n\t// defineUninitializedReg is a no-op instruction that defines a register without a defining instruction.\n\tdefineUninitializedReg\n\n\t// fcvtToSintSequence is a sequence of instructions to convert a float to a signed integer.\n\tfcvtToSintSequence\n\n\t// fcvtToUintSequence is a sequence of instructions to convert a float to an unsigned integer.\n\tfcvtToUintSequence\n\n\t// xmmCMov is a conditional move instruction for XMM registers. Lowered after register allocation.\n\txmmCMov\n\n\t// idivRemSequence is a sequence of instructions to compute both the quotient and remainder of a division.\n\tidivRemSequence\n\n\t// blendvpd is https://www.felixcloutier.com/x86/blendvpd.\n\tblendvpd\n\n\t// mfence is https://www.felixcloutier.com/x86/mfence\n\tmfence\n\n\t// lockxadd is xadd https://www.felixcloutier.com/x86/xadd with a lock prefix.\n\tlockxadd\n\n\t// nopUseReg is a meta instruction that uses one register and does nothing.\n\tnopUseReg\n\n\t// tailCall is a meta instruction that emits a tail call.\n\ttailCall\n\n\t// tailCallIndirect is a meta instruction that emits a tail call with an indirect call.\n\ttailCallIndirect\n\n\tinstrMax\n)\n\nfunc (i *instruction) asMFence() *instruction {\n\ti.kind = mfence\n\treturn i\n}\n\nfunc (i *instruction) asNopUseReg(r regalloc.VReg) *instruction {\n\ti.kind = nopUseReg\n\ti.op1 = newOperandReg(r)\n\treturn i\n}\n\nfunc (i *instruction) asIdivRemSequence(execCtx, divisor, tmpGp regalloc.VReg, isDiv, signed, _64 bool) *instruction {\n\ti.kind = idivRemSequence\n\ti.op1 = newOperandReg(execCtx)\n\ti.op2 = newOperandReg(divisor)\n\ti.u1 = uint64(tmpGp)\n\tif isDiv {\n\t\ti.u2 |= 1\n\t}\n\tif signed {\n\t\ti.u2 |= 2\n\t}\n\tif _64 {\n\t\ti.u2 |= 4\n\t}\n\treturn i\n}\n\nfunc (i *instruction) idivRemSequenceData() (\n\texecCtx, divisor, tmpGp regalloc.VReg, isDiv, signed, _64 bool,\n) {\n\tif i.kind != idivRemSequence {\n\t\tpanic(\"BUG\")\n\t}\n\treturn i.op1.reg(), i.op2.reg(), regalloc.VReg(i.u1), i.u2&1 != 0, i.u2&2 != 0, i.u2&4 != 0\n}\n\nfunc (i *instruction) asXmmCMov(cc cond, x operand, rd regalloc.VReg, size byte) *instruction {\n\ti.kind = xmmCMov\n\ti.op1 = x\n\ti.op2 = newOperandReg(rd)\n\ti.u1 = uint64(cc)\n\ti.u2 = uint64(size)\n\treturn i\n}\n\nfunc (i *instruction) asDefineUninitializedReg(r regalloc.VReg) *instruction {\n\ti.kind = defineUninitializedReg\n\ti.op2 = newOperandReg(r)\n\treturn i\n}\n\nfunc (m *machine) allocateFcvtToUintSequence(\n\texecCtx, src, tmpGp, tmpGp2, tmpXmm, tmpXmm2 regalloc.VReg,\n\tsrc64, dst64, sat bool,\n) *instruction {\n\ti := m.allocateInstr()\n\ti.kind = fcvtToUintSequence\n\top1a := m.amodePool.Allocate()\n\top2a := m.amodePool.Allocate()\n\ti.op1 = newOperandMem(op1a)\n\ti.op2 = newOperandMem(op2a)\n\tif src64 {\n\t\top1a.imm32 = 1\n\t} else {\n\t\top1a.imm32 = 0\n\t}\n\tif dst64 {\n\t\top1a.imm32 |= 2\n\t}\n\tif sat {\n\t\top1a.imm32 |= 4\n\t}\n\n\top1a.base = execCtx\n\top1a.index = src\n\top2a.base = tmpGp\n\top2a.index = tmpGp2\n\ti.u1 = uint64(tmpXmm)\n\ti.u2 = uint64(tmpXmm2)\n\treturn i\n}\n\nfunc (i *instruction) fcvtToUintSequenceData() (\n\texecCtx, src, tmpGp, tmpGp2, tmpXmm, tmpXmm2 regalloc.VReg, src64, dst64, sat bool,\n) {\n\tif i.kind != fcvtToUintSequence {\n\t\tpanic(\"BUG\")\n\t}\n\top1a := i.op1.addressMode()\n\top2a := i.op2.addressMode()\n\treturn op1a.base, op1a.index, op2a.base, op2a.index, regalloc.VReg(i.u1), regalloc.VReg(i.u2),\n\t\top1a.imm32&1 != 0, op1a.imm32&2 != 0, op1a.imm32&4 != 0\n}\n\nfunc (m *machine) allocateFcvtToSintSequence(\n\texecCtx, src, tmpGp, tmpGp2, tmpXmm regalloc.VReg,\n\tsrc64, dst64, sat bool,\n) *instruction {\n\ti := m.allocateInstr()\n\ti.kind = fcvtToSintSequence\n\top1a := m.amodePool.Allocate()\n\top2a := m.amodePool.Allocate()\n\ti.op1 = newOperandMem(op1a)\n\ti.op2 = newOperandMem(op2a)\n\top1a.base = execCtx\n\top1a.index = src\n\top2a.base = tmpGp\n\top2a.index = tmpGp2\n\ti.u1 = uint64(tmpXmm)\n\tif src64 {\n\t\ti.u2 = 1\n\t} else {\n\t\ti.u2 = 0\n\t}\n\tif dst64 {\n\t\ti.u2 |= 2\n\t}\n\tif sat {\n\t\ti.u2 |= 4\n\t}\n\treturn i\n}\n\nfunc (i *instruction) fcvtToSintSequenceData() (\n\texecCtx, src, tmpGp, tmpGp2, tmpXmm regalloc.VReg, src64, dst64, sat bool,\n) {\n\tif i.kind != fcvtToSintSequence {\n\t\tpanic(\"BUG\")\n\t}\n\top1a := i.op1.addressMode()\n\top2a := i.op2.addressMode()\n\treturn op1a.base, op1a.index, op2a.base, op2a.index, regalloc.VReg(i.u1),\n\t\ti.u2&1 != 0, i.u2&2 != 0, i.u2&4 != 0\n}\n\nfunc (k instructionKind) String() string {\n\tswitch k {\n\tcase nop0:\n\t\treturn \"nop\"\n\tcase ret:\n\t\treturn \"ret\"\n\tcase imm:\n\t\treturn \"imm\"\n\tcase aluRmiR:\n\t\treturn \"aluRmiR\"\n\tcase movRR:\n\t\treturn \"movRR\"\n\tcase xmmRmR:\n\t\treturn \"xmmRmR\"\n\tcase gprToXmm:\n\t\treturn \"gprToXmm\"\n\tcase xmmUnaryRmR:\n\t\treturn \"xmmUnaryRmR\"\n\tcase xmmUnaryRmRImm:\n\t\treturn \"xmmUnaryRmRImm\"\n\tcase unaryRmR:\n\t\treturn \"unaryRmR\"\n\tcase not:\n\t\treturn \"not\"\n\tcase neg:\n\t\treturn \"neg\"\n\tcase div:\n\t\treturn \"div\"\n\tcase mulHi:\n\t\treturn \"mulHi\"\n\tcase signExtendData:\n\t\treturn \"signExtendData\"\n\tcase movzxRmR:\n\t\treturn \"movzxRmR\"\n\tcase mov64MR:\n\t\treturn \"mov64MR\"\n\tcase lea:\n\t\treturn \"lea\"\n\tcase movsxRmR:\n\t\treturn \"movsxRmR\"\n\tcase movRM:\n\t\treturn \"movRM\"\n\tcase shiftR:\n\t\treturn \"shiftR\"\n\tcase xmmRmiReg:\n\t\treturn \"xmmRmiReg\"\n\tcase cmpRmiR:\n\t\treturn \"cmpRmiR\"\n\tcase setcc:\n\t\treturn \"setcc\"\n\tcase cmove:\n\t\treturn \"cmove\"\n\tcase push64:\n\t\treturn \"push64\"\n\tcase pop64:\n\t\treturn \"pop64\"\n\tcase xmmMovRM:\n\t\treturn \"xmmMovRM\"\n\tcase xmmLoadConst:\n\t\treturn \"xmmLoadConst\"\n\tcase xmmToGpr:\n\t\treturn \"xmmToGpr\"\n\tcase cvtUint64ToFloatSeq:\n\t\treturn \"cvtUint64ToFloatSeq\"\n\tcase cvtFloatToSintSeq:\n\t\treturn \"cvtFloatToSintSeq\"\n\tcase cvtFloatToUintSeq:\n\t\treturn \"cvtFloatToUintSeq\"\n\tcase xmmMinMaxSeq:\n\t\treturn \"xmmMinMaxSeq\"\n\tcase xmmCmpRmR:\n\t\treturn \"xmmCmpRmR\"\n\tcase xmmRmRImm:\n\t\treturn \"xmmRmRImm\"\n\tcase jmpIf:\n\t\treturn \"jmpIf\"\n\tcase jmp:\n\t\treturn \"jmp\"\n\tcase jmpTableIsland:\n\t\treturn \"jmpTableIsland\"\n\tcase exitSequence:\n\t\treturn \"exit_sequence\"\n\tcase ud2:\n\t\treturn \"ud2\"\n\tcase xchg:\n\t\treturn \"xchg\"\n\tcase zeros:\n\t\treturn \"zeros\"\n\tcase fcvtToSintSequence:\n\t\treturn \"fcvtToSintSequence\"\n\tcase fcvtToUintSequence:\n\t\treturn \"fcvtToUintSequence\"\n\tcase xmmCMov:\n\t\treturn \"xmmCMov\"\n\tcase idivRemSequence:\n\t\treturn \"idivRemSequence\"\n\tcase mfence:\n\t\treturn \"mfence\"\n\tcase lockcmpxchg:\n\t\treturn \"lockcmpxchg\"\n\tcase lockxadd:\n\t\treturn \"lockxadd\"\n\tcase tailCall:\n\t\treturn \"tailCall\"\n\tcase tailCallIndirect:\n\t\treturn \"tailCallIndirect\"\n\tdefault:\n\t\tpanic(\"BUG\")\n\t}\n}\n\ntype aluRmiROpcode byte\n\nconst (\n\taluRmiROpcodeAdd aluRmiROpcode = iota + 1\n\taluRmiROpcodeSub\n\taluRmiROpcodeAnd\n\taluRmiROpcodeOr\n\taluRmiROpcodeXor\n\taluRmiROpcodeMul\n)\n\nfunc (a aluRmiROpcode) String() string {\n\tswitch a {\n\tcase aluRmiROpcodeAdd:\n\t\treturn \"add\"\n\tcase aluRmiROpcodeSub:\n\t\treturn \"sub\"\n\tcase aluRmiROpcodeAnd:\n\t\treturn \"and\"\n\tcase aluRmiROpcodeOr:\n\t\treturn \"or\"\n\tcase aluRmiROpcodeXor:\n\t\treturn \"xor\"\n\tcase aluRmiROpcodeMul:\n\t\treturn \"imul\"\n\tdefault:\n\t\tpanic(\"BUG\")\n\t}\n}\n\nfunc (i *instruction) asJmpIf(cond cond, target operand) *instruction {\n\ti.kind = jmpIf\n\ti.u1 = uint64(cond)\n\ti.op1 = target\n\treturn i\n}\n\n// asJmpTableSequence is used to emit the jump table.\n// targetSliceIndex is the index of the target slice in machine.jmpTableTargets.\nfunc (i *instruction) asJmpTableSequence(targetSliceIndex int, targetCount int) *instruction {\n\ti.kind = jmpTableIsland\n\ti.u1 = uint64(targetSliceIndex)\n\ti.u2 = uint64(targetCount)\n\treturn i\n}\n\nfunc (i *instruction) asJmp(target operand) *instruction {\n\ti.kind = jmp\n\ti.op1 = target\n\treturn i\n}\n\nfunc (i *instruction) jmpLabel() label {\n\tswitch i.kind {\n\tcase jmp, jmpIf, lea, xmmUnaryRmR:\n\t\treturn i.op1.label()\n\tdefault:\n\t\tpanic(\"BUG\")\n\t}\n}\n\nfunc (i *instruction) asLEA(target operand, rd regalloc.VReg) *instruction {\n\ti.kind = lea\n\ti.op1 = target\n\ti.op2 = newOperandReg(rd)\n\treturn i\n}\n\nfunc (i *instruction) asCall(ref ssa.FuncRef, abi *backend.FunctionABI) *instruction {\n\ti.kind = call\n\ti.u1 = uint64(ref)\n\tif abi != nil {\n\t\ti.u2 = abi.ABIInfoAsUint64()\n\t}\n\treturn i\n}\n\nfunc (i *instruction) asCallIndirect(ptr operand, abi *backend.FunctionABI) *instruction {\n\tif ptr.kind != operandKindReg && ptr.kind != operandKindMem {\n\t\tpanic(\"BUG\")\n\t}\n\ti.kind = callIndirect\n\ti.op1 = ptr\n\tif abi != nil {\n\t\ti.u2 = abi.ABIInfoAsUint64()\n\t}\n\treturn i\n}\n\nfunc (i *instruction) asTailCallReturnCall(ref ssa.FuncRef, abi *backend.FunctionABI) *instruction {\n\ti.kind = tailCall\n\ti.u1 = uint64(ref)\n\tif abi != nil {\n\t\ti.u2 = abi.ABIInfoAsUint64()\n\t}\n\treturn i\n}\n\nfunc (i *instruction) asTailCallReturnCallIndirect(ptr operand, abi *backend.FunctionABI) *instruction {\n\tif ptr.kind != operandKindReg && ptr.kind != operandKindMem {\n\t\tpanic(\"BUG\")\n\t}\n\ti.kind = tailCallIndirect\n\ti.op1 = ptr\n\tif abi != nil {\n\t\ti.u2 = abi.ABIInfoAsUint64()\n\t}\n\treturn i\n}\n\nfunc (i *instruction) asRet() *instruction {\n\ti.kind = ret\n\treturn i\n}\n\nfunc (i *instruction) asImm(dst regalloc.VReg, value uint64, _64 bool) *instruction {\n\ti.kind = imm\n\ti.op2 = newOperandReg(dst)\n\ti.u1 = value\n\ti.b1 = _64\n\treturn i\n}\n\nfunc (i *instruction) asAluRmiR(op aluRmiROpcode, rm operand, rd regalloc.VReg, _64 bool) *instruction {\n\tif rm.kind != operandKindReg && rm.kind != operandKindMem && rm.kind != operandKindImm32 {\n\t\tpanic(\"BUG\")\n\t}\n\ti.kind = aluRmiR\n\ti.op1 = rm\n\ti.op2 = newOperandReg(rd)\n\ti.u1 = uint64(op)\n\ti.b1 = _64\n\treturn i\n}\n\nfunc (i *instruction) asZeros(dst regalloc.VReg) *instruction {\n\ti.kind = zeros\n\ti.op2 = newOperandReg(dst)\n\treturn i\n}\n\nfunc (i *instruction) asBlendvpd(rm operand, rd regalloc.VReg) *instruction {\n\tif rm.kind != operandKindReg && rm.kind != operandKindMem {\n\t\tpanic(\"BUG\")\n\t}\n\ti.kind = blendvpd\n\ti.op1 = rm\n\ti.op2 = newOperandReg(rd)\n\treturn i\n}\n\nfunc (i *instruction) asXmmRmR(op sseOpcode, rm operand, rd regalloc.VReg) *instruction {\n\tif rm.kind != operandKindReg && rm.kind != operandKindMem {\n\t\tpanic(\"BUG\")\n\t}\n\ti.kind = xmmRmR\n\ti.op1 = rm\n\ti.op2 = newOperandReg(rd)\n\ti.u1 = uint64(op)\n\treturn i\n}\n\nfunc (i *instruction) asXmmRmRImm(op sseOpcode, imm uint8, rm operand, rd regalloc.VReg) *instruction {\n\tif rm.kind != operandKindReg && rm.kind != operandKindMem {\n\t\tpanic(\"BUG\")\n\t}\n\ti.kind = xmmRmRImm\n\ti.op1 = rm\n\ti.op2 = newOperandReg(rd)\n\ti.u1 = uint64(op)\n\ti.u2 = uint64(imm)\n\treturn i\n}\n\nfunc (i *instruction) asGprToXmm(op sseOpcode, rm operand, rd regalloc.VReg, _64 bool) *instruction {\n\tif rm.kind != operandKindReg && rm.kind != operandKindMem {\n\t\tpanic(\"BUG\")\n\t}\n\ti.kind = gprToXmm\n\ti.op1 = rm\n\ti.op2 = newOperandReg(rd)\n\ti.u1 = uint64(op)\n\ti.b1 = _64\n\treturn i\n}\n\nfunc (i *instruction) asEmitSourceOffsetInfo(l ssa.SourceOffset) *instruction {\n\ti.kind = sourceOffsetInfo\n\ti.u1 = uint64(l)\n\treturn i\n}\n\nfunc (i *instruction) sourceOffsetInfo() ssa.SourceOffset {\n\treturn ssa.SourceOffset(i.u1)\n}\n\nfunc (i *instruction) asXmmToGpr(op sseOpcode, rm, rd regalloc.VReg, _64 bool) *instruction {\n\ti.kind = xmmToGpr\n\ti.op1 = newOperandReg(rm)\n\ti.op2 = newOperandReg(rd)\n\ti.u1 = uint64(op)\n\ti.b1 = _64\n\treturn i\n}\n\nfunc (i *instruction) asMovRM(rm regalloc.VReg, rd operand, size byte) *instruction {\n\tif rd.kind != operandKindMem {\n\t\tpanic(\"BUG\")\n\t}\n\ti.kind = movRM\n\ti.op1 = newOperandReg(rm)\n\ti.op2 = rd\n\ti.u1 = uint64(size)\n\treturn i\n}\n\nfunc (i *instruction) asMovsxRmR(ext extMode, src operand, rd regalloc.VReg) *instruction {\n\tif src.kind != operandKindReg && src.kind != operandKindMem {\n\t\tpanic(\"BUG\")\n\t}\n\ti.kind = movsxRmR\n\ti.op1 = src\n\ti.op2 = newOperandReg(rd)\n\ti.u1 = uint64(ext)\n\treturn i\n}\n\nfunc (i *instruction) asMovzxRmR(ext extMode, src operand, rd regalloc.VReg) *instruction {\n\tif src.kind != operandKindReg && src.kind != operandKindMem {\n\t\tpanic(\"BUG\")\n\t}\n\ti.kind = movzxRmR\n\ti.op1 = src\n\ti.op2 = newOperandReg(rd)\n\ti.u1 = uint64(ext)\n\treturn i\n}\n\nfunc (i *instruction) asSignExtendData(_64 bool) *instruction {\n\ti.kind = signExtendData\n\ti.b1 = _64\n\treturn i\n}\n\nfunc (i *instruction) asUD2() *instruction {\n\ti.kind = ud2\n\treturn i\n}\n\nfunc (i *instruction) asDiv(rn operand, signed bool, _64 bool) *instruction {\n\ti.kind = div\n\ti.op1 = rn\n\ti.b1 = _64\n\tif signed {\n\t\ti.u1 = 1\n\t}\n\treturn i\n}\n\nfunc (i *instruction) asMov64MR(rm operand, rd regalloc.VReg) *instruction {\n\tif rm.kind != operandKindMem {\n\t\tpanic(\"BUG\")\n\t}\n\ti.kind = mov64MR\n\ti.op1 = rm\n\ti.op2 = newOperandReg(rd)\n\treturn i\n}\n\nfunc (i *instruction) asMovRR(rm, rd regalloc.VReg, _64 bool) *instruction {\n\ti.kind = movRR\n\ti.op1 = newOperandReg(rm)\n\ti.op2 = newOperandReg(rd)\n\ti.b1 = _64\n\treturn i\n}\n\nfunc (i *instruction) asNot(rm operand, _64 bool) *instruction {\n\tif rm.kind != operandKindReg && rm.kind != operandKindMem {\n\t\tpanic(\"BUG\")\n\t}\n\ti.kind = not\n\ti.op1 = rm\n\ti.b1 = _64\n\treturn i\n}\n\nfunc (i *instruction) asNeg(rm operand, _64 bool) *instruction {\n\tif rm.kind != operandKindReg && rm.kind != operandKindMem {\n\t\tpanic(\"BUG\")\n\t}\n\ti.kind = neg\n\ti.op1 = rm\n\ti.b1 = _64\n\treturn i\n}\n\nfunc (i *instruction) asMulHi(rm operand, signed, _64 bool) *instruction {\n\tif rm.kind != operandKindReg && (rm.kind != operandKindMem) {\n\t\tpanic(\"BUG\")\n\t}\n\ti.kind = mulHi\n\ti.op1 = rm\n\ti.b1 = _64\n\tif signed {\n\t\ti.u1 = 1\n\t}\n\treturn i\n}\n\nfunc (i *instruction) asUnaryRmR(op unaryRmROpcode, rm operand, rd regalloc.VReg, _64 bool) *instruction {\n\tif rm.kind != operandKindReg && rm.kind != operandKindMem {\n\t\tpanic(\"BUG\")\n\t}\n\ti.kind = unaryRmR\n\ti.op1 = rm\n\ti.op2 = newOperandReg(rd)\n\ti.u1 = uint64(op)\n\ti.b1 = _64\n\treturn i\n}\n\nfunc (i *instruction) asShiftR(op shiftROp, amount operand, rd regalloc.VReg, _64 bool) *instruction {\n\tif amount.kind != operandKindReg && amount.kind != operandKindImm32 {\n\t\tpanic(\"BUG\")\n\t}\n\ti.kind = shiftR\n\ti.op1 = amount\n\ti.op2 = newOperandReg(rd)\n\ti.u1 = uint64(op)\n\ti.b1 = _64\n\treturn i\n}\n\nfunc (i *instruction) asXmmRmiReg(op sseOpcode, rm operand, rd regalloc.VReg) *instruction {\n\tif rm.kind != operandKindReg && rm.kind != operandKindImm32 && rm.kind != operandKindMem {\n\t\tpanic(\"BUG\")\n\t}\n\ti.kind = xmmRmiReg\n\ti.op1 = rm\n\ti.op2 = newOperandReg(rd)\n\ti.u1 = uint64(op)\n\treturn i\n}\n\nfunc (i *instruction) asCmpRmiR(cmp bool, rm operand, rn regalloc.VReg, _64 bool) *instruction {\n\tif rm.kind != operandKindReg && rm.kind != operandKindImm32 && rm.kind != operandKindMem {\n\t\tpanic(\"BUG\")\n\t}\n\ti.kind = cmpRmiR\n\ti.op1 = rm\n\ti.op2 = newOperandReg(rn)\n\tif cmp {\n\t\ti.u1 = 1\n\t}\n\ti.b1 = _64\n\treturn i\n}\n\nfunc (i *instruction) asSetcc(c cond, rd regalloc.VReg) *instruction {\n\ti.kind = setcc\n\ti.op2 = newOperandReg(rd)\n\ti.u1 = uint64(c)\n\treturn i\n}\n\nfunc (i *instruction) asCmove(c cond, rm operand, rd regalloc.VReg, _64 bool) *instruction {\n\ti.kind = cmove\n\ti.op1 = rm\n\ti.op2 = newOperandReg(rd)\n\ti.u1 = uint64(c)\n\ti.b1 = _64\n\treturn i\n}\n\nfunc (m *machine) allocateExitSeq(execCtx regalloc.VReg) *instruction {\n\ti := m.allocateInstr()\n\ti.kind = exitSequence\n\ti.op1 = newOperandReg(execCtx)\n\t// Allocate the address mode that will be used in encoding the exit sequence.\n\ti.op2 = newOperandMem(m.amodePool.Allocate())\n\treturn i\n}\n\nfunc (i *instruction) asXmmUnaryRmR(op sseOpcode, rm operand, rd regalloc.VReg) *instruction {\n\tif rm.kind != operandKindReg && rm.kind != operandKindMem {\n\t\tpanic(\"BUG\")\n\t}\n\ti.kind = xmmUnaryRmR\n\ti.op1 = rm\n\ti.op2 = newOperandReg(rd)\n\ti.u1 = uint64(op)\n\treturn i\n}\n\nfunc (i *instruction) asXmmUnaryRmRImm(op sseOpcode, imm byte, rm operand, rd regalloc.VReg) *instruction {\n\tif rm.kind != operandKindReg && rm.kind != operandKindMem {\n\t\tpanic(\"BUG\")\n\t}\n\ti.kind = xmmUnaryRmRImm\n\ti.op1 = rm\n\ti.op2 = newOperandReg(rd)\n\ti.u1 = uint64(op)\n\ti.u2 = uint64(imm)\n\treturn i\n}\n\nfunc (i *instruction) asXmmCmpRmR(op sseOpcode, rm operand, rd regalloc.VReg) *instruction {\n\tif rm.kind != operandKindReg && rm.kind != operandKindMem {\n\t\tpanic(\"BUG\")\n\t}\n\ti.kind = xmmCmpRmR\n\ti.op1 = rm\n\ti.op2 = newOperandReg(rd)\n\ti.u1 = uint64(op)\n\treturn i\n}\n\nfunc (i *instruction) asXmmMovRM(op sseOpcode, rm regalloc.VReg, rd operand) *instruction {\n\tif rd.kind != operandKindMem {\n\t\tpanic(\"BUG\")\n\t}\n\ti.kind = xmmMovRM\n\ti.op1 = newOperandReg(rm)\n\ti.op2 = rd\n\ti.u1 = uint64(op)\n\treturn i\n}\n\nfunc (i *instruction) asPop64(rm regalloc.VReg) *instruction {\n\ti.kind = pop64\n\ti.op1 = newOperandReg(rm)\n\treturn i\n}\n\nfunc (i *instruction) asPush64(op operand) *instruction {\n\tif op.kind != operandKindReg && op.kind != operandKindMem && op.kind != operandKindImm32 {\n\t\tpanic(\"BUG\")\n\t}\n\ti.kind = push64\n\ti.op1 = op\n\treturn i\n}\n\nfunc (i *instruction) asXCHG(rm regalloc.VReg, rd operand, size byte) *instruction {\n\ti.kind = xchg\n\ti.op1 = newOperandReg(rm)\n\ti.op2 = rd\n\ti.u1 = uint64(size)\n\treturn i\n}\n\nfunc (i *instruction) asLockCmpXCHG(rm regalloc.VReg, rd *amode, size byte) *instruction {\n\ti.kind = lockcmpxchg\n\ti.op1 = newOperandReg(rm)\n\ti.op2 = newOperandMem(rd)\n\ti.u1 = uint64(size)\n\treturn i\n}\n\nfunc (i *instruction) asLockXAdd(rm regalloc.VReg, rd *amode, size byte) *instruction {\n\ti.kind = lockxadd\n\ti.op1 = newOperandReg(rm)\n\ti.op2 = newOperandMem(rd)\n\ti.u1 = uint64(size)\n\treturn i\n}\n\ntype unaryRmROpcode byte\n\nconst (\n\tunaryRmROpcodeBsr unaryRmROpcode = iota\n\tunaryRmROpcodeBsf\n\tunaryRmROpcodeLzcnt\n\tunaryRmROpcodeTzcnt\n\tunaryRmROpcodePopcnt\n)\n\nfunc (u unaryRmROpcode) String() string {\n\tswitch u {\n\tcase unaryRmROpcodeBsr:\n\t\treturn \"bsr\"\n\tcase unaryRmROpcodeBsf:\n\t\treturn \"bsf\"\n\tcase unaryRmROpcodeLzcnt:\n\t\treturn \"lzcnt\"\n\tcase unaryRmROpcodeTzcnt:\n\t\treturn \"tzcnt\"\n\tcase unaryRmROpcodePopcnt:\n\t\treturn \"popcnt\"\n\tdefault:\n\t\tpanic(\"BUG\")\n\t}\n}\n\ntype shiftROp byte\n\nconst (\n\tshiftROpRotateLeft           shiftROp = 0\n\tshiftROpRotateRight          shiftROp = 1\n\tshiftROpShiftLeft            shiftROp = 4\n\tshiftROpShiftRightLogical    shiftROp = 5\n\tshiftROpShiftRightArithmetic shiftROp = 7\n)\n\nfunc (s shiftROp) String() string {\n\tswitch s {\n\tcase shiftROpRotateLeft:\n\t\treturn \"rol\"\n\tcase shiftROpRotateRight:\n\t\treturn \"ror\"\n\tcase shiftROpShiftLeft:\n\t\treturn \"shl\"\n\tcase shiftROpShiftRightLogical:\n\t\treturn \"shr\"\n\tcase shiftROpShiftRightArithmetic:\n\t\treturn \"sar\"\n\tdefault:\n\t\tpanic(\"BUG\")\n\t}\n}\n\ntype sseOpcode byte\n\nconst (\n\tsseOpcodeInvalid sseOpcode = iota\n\tsseOpcodeAddps\n\tsseOpcodeAddpd\n\tsseOpcodeAddss\n\tsseOpcodeAddsd\n\tsseOpcodeAndps\n\tsseOpcodeAndpd\n\tsseOpcodeAndnps\n\tsseOpcodeAndnpd\n\tsseOpcodeBlendvps\n\tsseOpcodeBlendvpd\n\tsseOpcodeComiss\n\tsseOpcodeComisd\n\tsseOpcodeCmpps\n\tsseOpcodeCmppd\n\tsseOpcodeCmpss\n\tsseOpcodeCmpsd\n\tsseOpcodeCvtdq2ps\n\tsseOpcodeCvtdq2pd\n\tsseOpcodeCvtsd2ss\n\tsseOpcodeCvtsd2si\n\tsseOpcodeCvtsi2ss\n\tsseOpcodeCvtsi2sd\n\tsseOpcodeCvtss2si\n\tsseOpcodeCvtss2sd\n\tsseOpcodeCvttps2dq\n\tsseOpcodeCvttss2si\n\tsseOpcodeCvttsd2si\n\tsseOpcodeDivps\n\tsseOpcodeDivpd\n\tsseOpcodeDivss\n\tsseOpcodeDivsd\n\tsseOpcodeInsertps\n\tsseOpcodeMaxps\n\tsseOpcodeMaxpd\n\tsseOpcodeMaxss\n\tsseOpcodeMaxsd\n\tsseOpcodeMinps\n\tsseOpcodeMinpd\n\tsseOpcodeMinss\n\tsseOpcodeMinsd\n\tsseOpcodeMovaps\n\tsseOpcodeMovapd\n\tsseOpcodeMovd\n\tsseOpcodeMovdqa\n\tsseOpcodeMovdqu\n\tsseOpcodeMovlhps\n\tsseOpcodeMovmskps\n\tsseOpcodeMovmskpd\n\tsseOpcodeMovq\n\tsseOpcodeMovss\n\tsseOpcodeMovsd\n\tsseOpcodeMovups\n\tsseOpcodeMovupd\n\tsseOpcodeMulps\n\tsseOpcodeMulpd\n\tsseOpcodeMulss\n\tsseOpcodeMulsd\n\tsseOpcodeOrps\n\tsseOpcodeOrpd\n\tsseOpcodePabsb\n\tsseOpcodePabsw\n\tsseOpcodePabsd\n\tsseOpcodePackssdw\n\tsseOpcodePacksswb\n\tsseOpcodePackusdw\n\tsseOpcodePackuswb\n\tsseOpcodePaddb\n\tsseOpcodePaddd\n\tsseOpcodePaddq\n\tsseOpcodePaddw\n\tsseOpcodePaddsb\n\tsseOpcodePaddsw\n\tsseOpcodePaddusb\n\tsseOpcodePaddusw\n\tsseOpcodePalignr\n\tsseOpcodePand\n\tsseOpcodePandn\n\tsseOpcodePavgb\n\tsseOpcodePavgw\n\tsseOpcodePcmpeqb\n\tsseOpcodePcmpeqw\n\tsseOpcodePcmpeqd\n\tsseOpcodePcmpeqq\n\tsseOpcodePcmpgtb\n\tsseOpcodePcmpgtw\n\tsseOpcodePcmpgtd\n\tsseOpcodePcmpgtq\n\tsseOpcodePextrb\n\tsseOpcodePextrw\n\tsseOpcodePextrd\n\tsseOpcodePextrq\n\tsseOpcodePinsrb\n\tsseOpcodePinsrw\n\tsseOpcodePinsrd\n\tsseOpcodePinsrq\n\tsseOpcodePmaddwd\n\tsseOpcodePmaxsb\n\tsseOpcodePmaxsw\n\tsseOpcodePmaxsd\n\tsseOpcodePmaxub\n\tsseOpcodePmaxuw\n\tsseOpcodePmaxud\n\tsseOpcodePminsb\n\tsseOpcodePminsw\n\tsseOpcodePminsd\n\tsseOpcodePminub\n\tsseOpcodePminuw\n\tsseOpcodePminud\n\tsseOpcodePmovmskb\n\tsseOpcodePmovsxbd\n\tsseOpcodePmovsxbw\n\tsseOpcodePmovsxbq\n\tsseOpcodePmovsxwd\n\tsseOpcodePmovsxwq\n\tsseOpcodePmovsxdq\n\tsseOpcodePmovzxbd\n\tsseOpcodePmovzxbw\n\tsseOpcodePmovzxbq\n\tsseOpcodePmovzxwd\n\tsseOpcodePmovzxwq\n\tsseOpcodePmovzxdq\n\tsseOpcodePmulld\n\tsseOpcodePmullw\n\tsseOpcodePmuludq\n\tsseOpcodePor\n\tsseOpcodePshufb\n\tsseOpcodePshufd\n\tsseOpcodePsllw\n\tsseOpcodePslld\n\tsseOpcodePsllq\n\tsseOpcodePsraw\n\tsseOpcodePsrad\n\tsseOpcodePsrlw\n\tsseOpcodePsrld\n\tsseOpcodePsrlq\n\tsseOpcodePsubb\n\tsseOpcodePsubd\n\tsseOpcodePsubq\n\tsseOpcodePsubw\n\tsseOpcodePsubsb\n\tsseOpcodePsubsw\n\tsseOpcodePsubusb\n\tsseOpcodePsubusw\n\tsseOpcodePtest\n\tsseOpcodePunpckhbw\n\tsseOpcodePunpcklbw\n\tsseOpcodePxor\n\tsseOpcodeRcpss\n\tsseOpcodeRoundps\n\tsseOpcodeRoundpd\n\tsseOpcodeRoundss\n\tsseOpcodeRoundsd\n\tsseOpcodeRsqrtss\n\tsseOpcodeSqrtps\n\tsseOpcodeSqrtpd\n\tsseOpcodeSqrtss\n\tsseOpcodeSqrtsd\n\tsseOpcodeSubps\n\tsseOpcodeSubpd\n\tsseOpcodeSubss\n\tsseOpcodeSubsd\n\tsseOpcodeUcomiss\n\tsseOpcodeUcomisd\n\tsseOpcodeXorps\n\tsseOpcodeXorpd\n\tsseOpcodePmulhrsw\n\tsseOpcodeUnpcklps\n\tsseOpcodeCvtps2pd\n\tsseOpcodeCvtpd2ps\n\tsseOpcodeCvttpd2dq\n\tsseOpcodeShufps\n\tsseOpcodePmaddubsw\n)\n\nfunc (s sseOpcode) String() string {\n\tswitch s {\n\tcase sseOpcodeInvalid:\n\t\treturn \"invalid\"\n\tcase sseOpcodeAddps:\n\t\treturn \"addps\"\n\tcase sseOpcodeAddpd:\n\t\treturn \"addpd\"\n\tcase sseOpcodeAddss:\n\t\treturn \"addss\"\n\tcase sseOpcodeAddsd:\n\t\treturn \"addsd\"\n\tcase sseOpcodeAndps:\n\t\treturn \"andps\"\n\tcase sseOpcodeAndpd:\n\t\treturn \"andpd\"\n\tcase sseOpcodeAndnps:\n\t\treturn \"andnps\"\n\tcase sseOpcodeAndnpd:\n\t\treturn \"andnpd\"\n\tcase sseOpcodeBlendvps:\n\t\treturn \"blendvps\"\n\tcase sseOpcodeBlendvpd:\n\t\treturn \"blendvpd\"\n\tcase sseOpcodeComiss:\n\t\treturn \"comiss\"\n\tcase sseOpcodeComisd:\n\t\treturn \"comisd\"\n\tcase sseOpcodeCmpps:\n\t\treturn \"cmpps\"\n\tcase sseOpcodeCmppd:\n\t\treturn \"cmppd\"\n\tcase sseOpcodeCmpss:\n\t\treturn \"cmpss\"\n\tcase sseOpcodeCmpsd:\n\t\treturn \"cmpsd\"\n\tcase sseOpcodeCvtdq2ps:\n\t\treturn \"cvtdq2ps\"\n\tcase sseOpcodeCvtdq2pd:\n\t\treturn \"cvtdq2pd\"\n\tcase sseOpcodeCvtsd2ss:\n\t\treturn \"cvtsd2ss\"\n\tcase sseOpcodeCvtsd2si:\n\t\treturn \"cvtsd2si\"\n\tcase sseOpcodeCvtsi2ss:\n\t\treturn \"cvtsi2ss\"\n\tcase sseOpcodeCvtsi2sd:\n\t\treturn \"cvtsi2sd\"\n\tcase sseOpcodeCvtss2si:\n\t\treturn \"cvtss2si\"\n\tcase sseOpcodeCvtss2sd:\n\t\treturn \"cvtss2sd\"\n\tcase sseOpcodeCvttps2dq:\n\t\treturn \"cvttps2dq\"\n\tcase sseOpcodeCvttss2si:\n\t\treturn \"cvttss2si\"\n\tcase sseOpcodeCvttsd2si:\n\t\treturn \"cvttsd2si\"\n\tcase sseOpcodeDivps:\n\t\treturn \"divps\"\n\tcase sseOpcodeDivpd:\n\t\treturn \"divpd\"\n\tcase sseOpcodeDivss:\n\t\treturn \"divss\"\n\tcase sseOpcodeDivsd:\n\t\treturn \"divsd\"\n\tcase sseOpcodeInsertps:\n\t\treturn \"insertps\"\n\tcase sseOpcodeMaxps:\n\t\treturn \"maxps\"\n\tcase sseOpcodeMaxpd:\n\t\treturn \"maxpd\"\n\tcase sseOpcodeMaxss:\n\t\treturn \"maxss\"\n\tcase sseOpcodeMaxsd:\n\t\treturn \"maxsd\"\n\tcase sseOpcodeMinps:\n\t\treturn \"minps\"\n\tcase sseOpcodeMinpd:\n\t\treturn \"minpd\"\n\tcase sseOpcodeMinss:\n\t\treturn \"minss\"\n\tcase sseOpcodeMinsd:\n\t\treturn \"minsd\"\n\tcase sseOpcodeMovaps:\n\t\treturn \"movaps\"\n\tcase sseOpcodeMovapd:\n\t\treturn \"movapd\"\n\tcase sseOpcodeMovd:\n\t\treturn \"movd\"\n\tcase sseOpcodeMovdqa:\n\t\treturn \"movdqa\"\n\tcase sseOpcodeMovdqu:\n\t\treturn \"movdqu\"\n\tcase sseOpcodeMovlhps:\n\t\treturn \"movlhps\"\n\tcase sseOpcodeMovmskps:\n\t\treturn \"movmskps\"\n\tcase sseOpcodeMovmskpd:\n\t\treturn \"movmskpd\"\n\tcase sseOpcodeMovq:\n\t\treturn \"movq\"\n\tcase sseOpcodeMovss:\n\t\treturn \"movss\"\n\tcase sseOpcodeMovsd:\n\t\treturn \"movsd\"\n\tcase sseOpcodeMovups:\n\t\treturn \"movups\"\n\tcase sseOpcodeMovupd:\n\t\treturn \"movupd\"\n\tcase sseOpcodeMulps:\n\t\treturn \"mulps\"\n\tcase sseOpcodeMulpd:\n\t\treturn \"mulpd\"\n\tcase sseOpcodeMulss:\n\t\treturn \"mulss\"\n\tcase sseOpcodeMulsd:\n\t\treturn \"mulsd\"\n\tcase sseOpcodeOrps:\n\t\treturn \"orps\"\n\tcase sseOpcodeOrpd:\n\t\treturn \"orpd\"\n\tcase sseOpcodePabsb:\n\t\treturn \"pabsb\"\n\tcase sseOpcodePabsw:\n\t\treturn \"pabsw\"\n\tcase sseOpcodePabsd:\n\t\treturn \"pabsd\"\n\tcase sseOpcodePackssdw:\n\t\treturn \"packssdw\"\n\tcase sseOpcodePacksswb:\n\t\treturn \"packsswb\"\n\tcase sseOpcodePackusdw:\n\t\treturn \"packusdw\"\n\tcase sseOpcodePackuswb:\n\t\treturn \"packuswb\"\n\tcase sseOpcodePaddb:\n\t\treturn \"paddb\"\n\tcase sseOpcodePaddd:\n\t\treturn \"paddd\"\n\tcase sseOpcodePaddq:\n\t\treturn \"paddq\"\n\tcase sseOpcodePaddw:\n\t\treturn \"paddw\"\n\tcase sseOpcodePaddsb:\n\t\treturn \"paddsb\"\n\tcase sseOpcodePaddsw:\n\t\treturn \"paddsw\"\n\tcase sseOpcodePaddusb:\n\t\treturn \"paddusb\"\n\tcase sseOpcodePaddusw:\n\t\treturn \"paddusw\"\n\tcase sseOpcodePalignr:\n\t\treturn \"palignr\"\n\tcase sseOpcodePand:\n\t\treturn \"pand\"\n\tcase sseOpcodePandn:\n\t\treturn \"pandn\"\n\tcase sseOpcodePavgb:\n\t\treturn \"pavgb\"\n\tcase sseOpcodePavgw:\n\t\treturn \"pavgw\"\n\tcase sseOpcodePcmpeqb:\n\t\treturn \"pcmpeqb\"\n\tcase sseOpcodePcmpeqw:\n\t\treturn \"pcmpeqw\"\n\tcase sseOpcodePcmpeqd:\n\t\treturn \"pcmpeqd\"\n\tcase sseOpcodePcmpeqq:\n\t\treturn \"pcmpeqq\"\n\tcase sseOpcodePcmpgtb:\n\t\treturn \"pcmpgtb\"\n\tcase sseOpcodePcmpgtw:\n\t\treturn \"pcmpgtw\"\n\tcase sseOpcodePcmpgtd:\n\t\treturn \"pcmpgtd\"\n\tcase sseOpcodePcmpgtq:\n\t\treturn \"pcmpgtq\"\n\tcase sseOpcodePextrb:\n\t\treturn \"pextrb\"\n\tcase sseOpcodePextrw:\n\t\treturn \"pextrw\"\n\tcase sseOpcodePextrd:\n\t\treturn \"pextrd\"\n\tcase sseOpcodePextrq:\n\t\treturn \"pextrq\"\n\tcase sseOpcodePinsrb:\n\t\treturn \"pinsrb\"\n\tcase sseOpcodePinsrw:\n\t\treturn \"pinsrw\"\n\tcase sseOpcodePinsrd:\n\t\treturn \"pinsrd\"\n\tcase sseOpcodePinsrq:\n\t\treturn \"pinsrq\"\n\tcase sseOpcodePmaddwd:\n\t\treturn \"pmaddwd\"\n\tcase sseOpcodePmaxsb:\n\t\treturn \"pmaxsb\"\n\tcase sseOpcodePmaxsw:\n\t\treturn \"pmaxsw\"\n\tcase sseOpcodePmaxsd:\n\t\treturn \"pmaxsd\"\n\tcase sseOpcodePmaxub:\n\t\treturn \"pmaxub\"\n\tcase sseOpcodePmaxuw:\n\t\treturn \"pmaxuw\"\n\tcase sseOpcodePmaxud:\n\t\treturn \"pmaxud\"\n\tcase sseOpcodePminsb:\n\t\treturn \"pminsb\"\n\tcase sseOpcodePminsw:\n\t\treturn \"pminsw\"\n\tcase sseOpcodePminsd:\n\t\treturn \"pminsd\"\n\tcase sseOpcodePminub:\n\t\treturn \"pminub\"\n\tcase sseOpcodePminuw:\n\t\treturn \"pminuw\"\n\tcase sseOpcodePminud:\n\t\treturn \"pminud\"\n\tcase sseOpcodePmovmskb:\n\t\treturn \"pmovmskb\"\n\tcase sseOpcodePmovsxbd:\n\t\treturn \"pmovsxbd\"\n\tcase sseOpcodePmovsxbw:\n\t\treturn \"pmovsxbw\"\n\tcase sseOpcodePmovsxbq:\n\t\treturn \"pmovsxbq\"\n\tcase sseOpcodePmovsxwd:\n\t\treturn \"pmovsxwd\"\n\tcase sseOpcodePmovsxwq:\n\t\treturn \"pmovsxwq\"\n\tcase sseOpcodePmovsxdq:\n\t\treturn \"pmovsxdq\"\n\tcase sseOpcodePmovzxbd:\n\t\treturn \"pmovzxbd\"\n\tcase sseOpcodePmovzxbw:\n\t\treturn \"pmovzxbw\"\n\tcase sseOpcodePmovzxbq:\n\t\treturn \"pmovzxbq\"\n\tcase sseOpcodePmovzxwd:\n\t\treturn \"pmovzxwd\"\n\tcase sseOpcodePmovzxwq:\n\t\treturn \"pmovzxwq\"\n\tcase sseOpcodePmovzxdq:\n\t\treturn \"pmovzxdq\"\n\tcase sseOpcodePmulld:\n\t\treturn \"pmulld\"\n\tcase sseOpcodePmullw:\n\t\treturn \"pmullw\"\n\tcase sseOpcodePmuludq:\n\t\treturn \"pmuludq\"\n\tcase sseOpcodePor:\n\t\treturn \"por\"\n\tcase sseOpcodePshufb:\n\t\treturn \"pshufb\"\n\tcase sseOpcodePshufd:\n\t\treturn \"pshufd\"\n\tcase sseOpcodePsllw:\n\t\treturn \"psllw\"\n\tcase sseOpcodePslld:\n\t\treturn \"pslld\"\n\tcase sseOpcodePsllq:\n\t\treturn \"psllq\"\n\tcase sseOpcodePsraw:\n\t\treturn \"psraw\"\n\tcase sseOpcodePsrad:\n\t\treturn \"psrad\"\n\tcase sseOpcodePsrlw:\n\t\treturn \"psrlw\"\n\tcase sseOpcodePsrld:\n\t\treturn \"psrld\"\n\tcase sseOpcodePsrlq:\n\t\treturn \"psrlq\"\n\tcase sseOpcodePsubb:\n\t\treturn \"psubb\"\n\tcase sseOpcodePsubd:\n\t\treturn \"psubd\"\n\tcase sseOpcodePsubq:\n\t\treturn \"psubq\"\n\tcase sseOpcodePsubw:\n\t\treturn \"psubw\"\n\tcase sseOpcodePsubsb:\n\t\treturn \"psubsb\"\n\tcase sseOpcodePsubsw:\n\t\treturn \"psubsw\"\n\tcase sseOpcodePsubusb:\n\t\treturn \"psubusb\"\n\tcase sseOpcodePsubusw:\n\t\treturn \"psubusw\"\n\tcase sseOpcodePtest:\n\t\treturn \"ptest\"\n\tcase sseOpcodePunpckhbw:\n\t\treturn \"punpckhbw\"\n\tcase sseOpcodePunpcklbw:\n\t\treturn \"punpcklbw\"\n\tcase sseOpcodePxor:\n\t\treturn \"pxor\"\n\tcase sseOpcodeRcpss:\n\t\treturn \"rcpss\"\n\tcase sseOpcodeRoundps:\n\t\treturn \"roundps\"\n\tcase sseOpcodeRoundpd:\n\t\treturn \"roundpd\"\n\tcase sseOpcodeRoundss:\n\t\treturn \"roundss\"\n\tcase sseOpcodeRoundsd:\n\t\treturn \"roundsd\"\n\tcase sseOpcodeRsqrtss:\n\t\treturn \"rsqrtss\"\n\tcase sseOpcodeSqrtps:\n\t\treturn \"sqrtps\"\n\tcase sseOpcodeSqrtpd:\n\t\treturn \"sqrtpd\"\n\tcase sseOpcodeSqrtss:\n\t\treturn \"sqrtss\"\n\tcase sseOpcodeSqrtsd:\n\t\treturn \"sqrtsd\"\n\tcase sseOpcodeSubps:\n\t\treturn \"subps\"\n\tcase sseOpcodeSubpd:\n\t\treturn \"subpd\"\n\tcase sseOpcodeSubss:\n\t\treturn \"subss\"\n\tcase sseOpcodeSubsd:\n\t\treturn \"subsd\"\n\tcase sseOpcodeUcomiss:\n\t\treturn \"ucomiss\"\n\tcase sseOpcodeUcomisd:\n\t\treturn \"ucomisd\"\n\tcase sseOpcodeXorps:\n\t\treturn \"xorps\"\n\tcase sseOpcodeXorpd:\n\t\treturn \"xorpd\"\n\tcase sseOpcodePmulhrsw:\n\t\treturn \"pmulhrsw\"\n\tcase sseOpcodeUnpcklps:\n\t\treturn \"unpcklps\"\n\tcase sseOpcodeCvtps2pd:\n\t\treturn \"cvtps2pd\"\n\tcase sseOpcodeCvtpd2ps:\n\t\treturn \"cvtpd2ps\"\n\tcase sseOpcodeCvttpd2dq:\n\t\treturn \"cvttpd2dq\"\n\tcase sseOpcodeShufps:\n\t\treturn \"shufps\"\n\tcase sseOpcodePmaddubsw:\n\t\treturn \"pmaddubsw\"\n\tdefault:\n\t\tpanic(\"BUG\")\n\t}\n}\n\ntype roundingMode uint8\n\nconst (\n\troundingModeNearest roundingMode = iota\n\troundingModeDown\n\troundingModeUp\n\troundingModeZero\n)\n\nfunc (r roundingMode) String() string {\n\tswitch r {\n\tcase roundingModeNearest:\n\t\treturn \"nearest\"\n\tcase roundingModeDown:\n\t\treturn \"down\"\n\tcase roundingModeUp:\n\t\treturn \"up\"\n\tcase roundingModeZero:\n\t\treturn \"zero\"\n\tdefault:\n\t\tpanic(\"BUG\")\n\t}\n}\n\n// cmpPred is the immediate value for a comparison operation in xmmRmRImm.\ntype cmpPred uint8\n\nconst (\n\t// cmpPredEQ_OQ is Equal (ordered, non-signaling)\n\tcmpPredEQ_OQ cmpPred = iota\n\t// cmpPredLT_OS is Less-than (ordered, signaling)\n\tcmpPredLT_OS\n\t// cmpPredLE_OS is Less-than-or-equal (ordered, signaling)\n\tcmpPredLE_OS\n\t// cmpPredUNORD_Q is Unordered (non-signaling)\n\tcmpPredUNORD_Q\n\t// cmpPredNEQ_UQ is Not-equal (unordered, non-signaling)\n\tcmpPredNEQ_UQ\n\t// cmpPredNLT_US is Not-less-than (unordered, signaling)\n\tcmpPredNLT_US\n\t// cmpPredNLE_US is Not-less-than-or-equal (unordered, signaling)\n\tcmpPredNLE_US\n\t// cmpPredORD_Q is Ordered (non-signaling)\n\tcmpPredORD_Q\n\t// cmpPredEQ_UQ is Equal (unordered, non-signaling)\n\tcmpPredEQ_UQ\n\t// cmpPredNGE_US is Not-greater-than-or-equal (unordered, signaling)\n\tcmpPredNGE_US\n\t// cmpPredNGT_US is Not-greater-than (unordered, signaling)\n\tcmpPredNGT_US\n\t// cmpPredFALSE_OQ is False (ordered, non-signaling)\n\tcmpPredFALSE_OQ\n\t// cmpPredNEQ_OQ is Not-equal (ordered, non-signaling)\n\tcmpPredNEQ_OQ\n\t// cmpPredGE_OS is Greater-than-or-equal (ordered, signaling)\n\tcmpPredGE_OS\n\t// cmpPredGT_OS is Greater-than (ordered, signaling)\n\tcmpPredGT_OS\n\t// cmpPredTRUE_UQ is True (unordered, non-signaling)\n\tcmpPredTRUE_UQ\n\t// Equal (ordered, signaling)\n\tcmpPredEQ_OS\n\t// Less-than (ordered, nonsignaling)\n\tcmpPredLT_OQ\n\t// Less-than-or-equal (ordered, nonsignaling)\n\tcmpPredLE_OQ\n\t// Unordered (signaling)\n\tcmpPredUNORD_S\n\t// Not-equal (unordered, signaling)\n\tcmpPredNEQ_US\n\t// Not-less-than (unordered, nonsignaling)\n\tcmpPredNLT_UQ\n\t// Not-less-than-or-equal (unordered, nonsignaling)\n\tcmpPredNLE_UQ\n\t// Ordered (signaling)\n\tcmpPredORD_S\n\t// Equal (unordered, signaling)\n\tcmpPredEQ_US\n\t// Not-greater-than-or-equal (unordered, non-signaling)\n\tcmpPredNGE_UQ\n\t// Not-greater-than (unordered, nonsignaling)\n\tcmpPredNGT_UQ\n\t// False (ordered, signaling)\n\tcmpPredFALSE_OS\n\t// Not-equal (ordered, signaling)\n\tcmpPredNEQ_OS\n\t// Greater-than-or-equal (ordered, nonsignaling)\n\tcmpPredGE_OQ\n\t// Greater-than (ordered, nonsignaling)\n\tcmpPredGT_OQ\n\t// True (unordered, signaling)\n\tcmpPredTRUE_US\n)\n\nfunc (r cmpPred) String() string {\n\tswitch r {\n\tcase cmpPredEQ_OQ:\n\t\treturn \"eq_oq\"\n\tcase cmpPredLT_OS:\n\t\treturn \"lt_os\"\n\tcase cmpPredLE_OS:\n\t\treturn \"le_os\"\n\tcase cmpPredUNORD_Q:\n\t\treturn \"unord_q\"\n\tcase cmpPredNEQ_UQ:\n\t\treturn \"neq_uq\"\n\tcase cmpPredNLT_US:\n\t\treturn \"nlt_us\"\n\tcase cmpPredNLE_US:\n\t\treturn \"nle_us\"\n\tcase cmpPredORD_Q:\n\t\treturn \"ord_q\"\n\tcase cmpPredEQ_UQ:\n\t\treturn \"eq_uq\"\n\tcase cmpPredNGE_US:\n\t\treturn \"nge_us\"\n\tcase cmpPredNGT_US:\n\t\treturn \"ngt_us\"\n\tcase cmpPredFALSE_OQ:\n\t\treturn \"false_oq\"\n\tcase cmpPredNEQ_OQ:\n\t\treturn \"neq_oq\"\n\tcase cmpPredGE_OS:\n\t\treturn \"ge_os\"\n\tcase cmpPredGT_OS:\n\t\treturn \"gt_os\"\n\tcase cmpPredTRUE_UQ:\n\t\treturn \"true_uq\"\n\tcase cmpPredEQ_OS:\n\t\treturn \"eq_os\"\n\tcase cmpPredLT_OQ:\n\t\treturn \"lt_oq\"\n\tcase cmpPredLE_OQ:\n\t\treturn \"le_oq\"\n\tcase cmpPredUNORD_S:\n\t\treturn \"unord_s\"\n\tcase cmpPredNEQ_US:\n\t\treturn \"neq_us\"\n\tcase cmpPredNLT_UQ:\n\t\treturn \"nlt_uq\"\n\tcase cmpPredNLE_UQ:\n\t\treturn \"nle_uq\"\n\tcase cmpPredORD_S:\n\t\treturn \"ord_s\"\n\tcase cmpPredEQ_US:\n\t\treturn \"eq_us\"\n\tcase cmpPredNGE_UQ:\n\t\treturn \"nge_uq\"\n\tcase cmpPredNGT_UQ:\n\t\treturn \"ngt_uq\"\n\tcase cmpPredFALSE_OS:\n\t\treturn \"false_os\"\n\tcase cmpPredNEQ_OS:\n\t\treturn \"neq_os\"\n\tcase cmpPredGE_OQ:\n\t\treturn \"ge_oq\"\n\tcase cmpPredGT_OQ:\n\t\treturn \"gt_oq\"\n\tcase cmpPredTRUE_US:\n\t\treturn \"true_us\"\n\tdefault:\n\t\tpanic(\"BUG\")\n\t}\n}\n\nfunc linkInstr(prev, next *instruction) *instruction {\n\tprev.next = next\n\tnext.prev = prev\n\treturn next\n}\n\ntype defKind byte\n\nconst (\n\tdefKindNone defKind = iota + 1\n\tdefKindOp2\n\tdefKindCall\n\tdefKindDivRem\n)\n\nvar defKinds = [instrMax]defKind{\n\tnop0:                   defKindNone,\n\tret:                    defKindNone,\n\tmovRR:                  defKindOp2,\n\tmovRM:                  defKindNone,\n\txmmMovRM:               defKindNone,\n\taluRmiR:                defKindNone,\n\tshiftR:                 defKindNone,\n\timm:                    defKindOp2,\n\tunaryRmR:               defKindOp2,\n\txmmRmiReg:              defKindNone,\n\txmmUnaryRmR:            defKindOp2,\n\txmmUnaryRmRImm:         defKindOp2,\n\txmmCmpRmR:              defKindNone,\n\txmmRmR:                 defKindNone,\n\txmmRmRImm:              defKindNone,\n\tmov64MR:                defKindOp2,\n\tmovsxRmR:               defKindOp2,\n\tmovzxRmR:               defKindOp2,\n\tgprToXmm:               defKindOp2,\n\txmmToGpr:               defKindOp2,\n\tcmove:                  defKindNone,\n\tcall:                   defKindCall,\n\tcallIndirect:           defKindCall,\n\tud2:                    defKindNone,\n\tjmp:                    defKindNone,\n\tjmpIf:                  defKindNone,\n\tjmpTableIsland:         defKindNone,\n\tcmpRmiR:                defKindNone,\n\texitSequence:           defKindNone,\n\tlea:                    defKindOp2,\n\tsetcc:                  defKindOp2,\n\tzeros:                  defKindOp2,\n\tsourceOffsetInfo:       defKindNone,\n\tfcvtToSintSequence:     defKindNone,\n\tdefineUninitializedReg: defKindOp2,\n\tfcvtToUintSequence:     defKindNone,\n\txmmCMov:                defKindOp2,\n\tidivRemSequence:        defKindDivRem,\n\tblendvpd:               defKindNone,\n\tmfence:                 defKindNone,\n\txchg:                   defKindNone,\n\tlockcmpxchg:            defKindNone,\n\tlockxadd:               defKindNone,\n\tneg:                    defKindNone,\n\tnopUseReg:              defKindNone,\n\ttailCall:               defKindCall,\n\ttailCallIndirect:       defKindCall,\n}\n\n// String implements fmt.Stringer.\nfunc (d defKind) String() string {\n\tswitch d {\n\tcase defKindNone:\n\t\treturn \"none\"\n\tcase defKindOp2:\n\t\treturn \"op2\"\n\tcase defKindCall:\n\t\treturn \"call\"\n\tcase defKindDivRem:\n\t\treturn \"divrem\"\n\tdefault:\n\t\treturn \"invalid\"\n\t}\n}\n\ntype useKind byte\n\nconst (\n\tuseKindNone useKind = iota + 1\n\tuseKindOp1\n\t// useKindOp1Op2Reg is Op1 can be any operand, Op2 must be a register.\n\tuseKindOp1Op2Reg\n\t// useKindOp1RegOp2 is Op1 must be a register, Op2 can be any operand.\n\tuseKindOp1RegOp2\n\t// useKindRaxOp1RegOp2 is Op1 must be a register, Op2 can be any operand, and RAX is used.\n\tuseKindRaxOp1RegOp2\n\tuseKindDivRem\n\tuseKindBlendvpd\n\tuseKindCall\n\tuseKindCallInd\n\tuseKindTailCallInd\n\tuseKindFcvtToSintSequence\n\tuseKindFcvtToUintSequence\n)\n\nvar useKinds = [instrMax]useKind{\n\tnop0:                   useKindNone,\n\tret:                    useKindNone,\n\tmovRR:                  useKindOp1,\n\tmovRM:                  useKindOp1RegOp2,\n\txmmMovRM:               useKindOp1RegOp2,\n\tcmove:                  useKindOp1Op2Reg,\n\taluRmiR:                useKindOp1Op2Reg,\n\tshiftR:                 useKindOp1Op2Reg,\n\timm:                    useKindNone,\n\tunaryRmR:               useKindOp1,\n\txmmRmiReg:              useKindOp1Op2Reg,\n\txmmUnaryRmR:            useKindOp1,\n\txmmUnaryRmRImm:         useKindOp1,\n\txmmCmpRmR:              useKindOp1Op2Reg,\n\txmmRmR:                 useKindOp1Op2Reg,\n\txmmRmRImm:              useKindOp1Op2Reg,\n\tmov64MR:                useKindOp1,\n\tmovzxRmR:               useKindOp1,\n\tmovsxRmR:               useKindOp1,\n\tgprToXmm:               useKindOp1,\n\txmmToGpr:               useKindOp1,\n\tcall:                   useKindCall,\n\tcallIndirect:           useKindCallInd,\n\tud2:                    useKindNone,\n\tjmpIf:                  useKindOp1,\n\tjmp:                    useKindOp1,\n\tcmpRmiR:                useKindOp1Op2Reg,\n\texitSequence:           useKindOp1,\n\tlea:                    useKindOp1,\n\tjmpTableIsland:         useKindNone,\n\tsetcc:                  useKindNone,\n\tzeros:                  useKindNone,\n\tsourceOffsetInfo:       useKindNone,\n\tfcvtToSintSequence:     useKindFcvtToSintSequence,\n\tdefineUninitializedReg: useKindNone,\n\tfcvtToUintSequence:     useKindFcvtToUintSequence,\n\txmmCMov:                useKindOp1,\n\tidivRemSequence:        useKindDivRem,\n\tblendvpd:               useKindBlendvpd,\n\tmfence:                 useKindNone,\n\txchg:                   useKindOp1RegOp2,\n\tlockcmpxchg:            useKindRaxOp1RegOp2,\n\tlockxadd:               useKindOp1RegOp2,\n\tneg:                    useKindOp1,\n\tnopUseReg:              useKindOp1,\n\ttailCall:               useKindCall,\n\ttailCallIndirect:       useKindTailCallInd,\n}\n\nfunc (u useKind) String() string {\n\tswitch u {\n\tcase useKindNone:\n\t\treturn \"none\"\n\tcase useKindOp1:\n\t\treturn \"op1\"\n\tcase useKindOp1Op2Reg:\n\t\treturn \"op1op2Reg\"\n\tcase useKindOp1RegOp2:\n\t\treturn \"op1RegOp2\"\n\tcase useKindCall:\n\t\treturn \"call\"\n\tcase useKindCallInd:\n\t\treturn \"callInd\"\n\tcase useKindTailCallInd:\n\t\treturn \"tailCallInd\"\n\tdefault:\n\t\treturn \"invalid\"\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/amd64/instr_encoding.go",
    "content": "package amd64\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/backend\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/backend/regalloc\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/ssa\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi\"\n)\n\nfunc (i *instruction) encode(c backend.Compiler) (needsLabelResolution bool) {\n\tswitch kind := i.kind; kind {\n\tcase nop0, sourceOffsetInfo, defineUninitializedReg, fcvtToSintSequence, fcvtToUintSequence, nopUseReg:\n\tcase ret:\n\t\tencodeRet(c)\n\tcase imm:\n\t\tdst := regEncodings[i.op2.reg().RealReg()]\n\t\tcon := i.u1\n\t\tif i.b1 { // 64 bit.\n\t\t\tif lower32willSignExtendTo64(con) {\n\t\t\t\t// Sign extend mov(imm32).\n\t\t\t\tencodeRegReg(c,\n\t\t\t\t\tlegacyPrefixesNone,\n\t\t\t\t\t0xc7, 1,\n\t\t\t\t\t0,\n\t\t\t\t\tdst,\n\t\t\t\t\trexInfo(0).setW(),\n\t\t\t\t)\n\t\t\t\tc.Emit4Bytes(uint32(con))\n\t\t\t} else {\n\t\t\t\tc.EmitByte(rexEncodingW | dst.rexBit())\n\t\t\t\tc.EmitByte(0xb8 | dst.encoding())\n\t\t\t\tc.Emit8Bytes(con)\n\t\t\t}\n\t\t} else {\n\t\t\tif dst.rexBit() > 0 {\n\t\t\t\tc.EmitByte(rexEncodingDefault | 0x1)\n\t\t\t}\n\t\t\tc.EmitByte(0xb8 | dst.encoding())\n\t\t\tc.Emit4Bytes(uint32(con))\n\t\t}\n\n\tcase aluRmiR:\n\t\tvar rex rexInfo\n\t\tif i.b1 {\n\t\t\trex = rex.setW()\n\t\t} else {\n\t\t\trex = rex.clearW()\n\t\t}\n\n\t\tdst := regEncodings[i.op2.reg().RealReg()]\n\n\t\taluOp := aluRmiROpcode(i.u1)\n\t\tif aluOp == aluRmiROpcodeMul {\n\t\t\top1 := i.op1\n\t\t\tconst regMemOpc, regMemOpcNum = 0x0FAF, 2\n\t\t\tswitch op1.kind {\n\t\t\tcase operandKindReg:\n\t\t\t\tsrc := regEncodings[op1.reg().RealReg()]\n\t\t\t\tencodeRegReg(c, legacyPrefixesNone, regMemOpc, regMemOpcNum, dst, src, rex)\n\t\t\tcase operandKindMem:\n\t\t\t\tm := i.op1.addressMode()\n\t\t\t\tencodeRegMem(c, legacyPrefixesNone, regMemOpc, regMemOpcNum, dst, m, rex)\n\t\t\tcase operandKindImm32:\n\t\t\t\timm8 := lower8willSignExtendTo32(op1.imm32())\n\t\t\t\tvar opc uint32\n\t\t\t\tif imm8 {\n\t\t\t\t\topc = 0x6b\n\t\t\t\t} else {\n\t\t\t\t\topc = 0x69\n\t\t\t\t}\n\t\t\t\tencodeRegReg(c, legacyPrefixesNone, opc, 1, dst, dst, rex)\n\t\t\t\tif imm8 {\n\t\t\t\t\tc.EmitByte(byte(op1.imm32()))\n\t\t\t\t} else {\n\t\t\t\t\tc.Emit4Bytes(op1.imm32())\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tpanic(\"BUG: invalid operand kind\")\n\t\t\t}\n\t\t} else {\n\t\t\tconst opcodeNum = 1\n\t\t\tvar opcR, opcM, subOpcImm uint32\n\t\t\tswitch aluOp {\n\t\t\tcase aluRmiROpcodeAdd:\n\t\t\t\topcR, opcM, subOpcImm = 0x01, 0x03, 0x0\n\t\t\tcase aluRmiROpcodeSub:\n\t\t\t\topcR, opcM, subOpcImm = 0x29, 0x2b, 0x5\n\t\t\tcase aluRmiROpcodeAnd:\n\t\t\t\topcR, opcM, subOpcImm = 0x21, 0x23, 0x4\n\t\t\tcase aluRmiROpcodeOr:\n\t\t\t\topcR, opcM, subOpcImm = 0x09, 0x0b, 0x1\n\t\t\tcase aluRmiROpcodeXor:\n\t\t\t\topcR, opcM, subOpcImm = 0x31, 0x33, 0x6\n\t\t\tdefault:\n\t\t\t\tpanic(\"BUG: invalid aluRmiROpcode\")\n\t\t\t}\n\n\t\t\top1 := i.op1\n\t\t\tswitch op1.kind {\n\t\t\tcase operandKindReg:\n\t\t\t\tsrc := regEncodings[op1.reg().RealReg()]\n\t\t\t\tencodeRegReg(c, legacyPrefixesNone, opcR, opcodeNum, src, dst, rex)\n\t\t\tcase operandKindMem:\n\t\t\t\tm := i.op1.addressMode()\n\t\t\t\tencodeRegMem(c, legacyPrefixesNone, opcM, opcodeNum, dst, m, rex)\n\t\t\tcase operandKindImm32:\n\t\t\t\timm8 := lower8willSignExtendTo32(op1.imm32())\n\t\t\t\tvar opc uint32\n\t\t\t\tif imm8 {\n\t\t\t\t\topc = 0x83\n\t\t\t\t} else {\n\t\t\t\t\topc = 0x81\n\t\t\t\t}\n\t\t\t\tencodeRegReg(c, legacyPrefixesNone, opc, opcodeNum, regEnc(subOpcImm), dst, rex)\n\t\t\t\tif imm8 {\n\t\t\t\t\tc.EmitByte(byte(op1.imm32()))\n\t\t\t\t} else {\n\t\t\t\t\tc.Emit4Bytes(op1.imm32())\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tpanic(\"BUG: invalid operand kind\")\n\t\t\t}\n\t\t}\n\n\tcase movRR:\n\t\tsrc := regEncodings[i.op1.reg().RealReg()]\n\t\tdst := regEncodings[i.op2.reg().RealReg()]\n\t\tvar rex rexInfo\n\t\tif i.b1 {\n\t\t\trex = rex.setW()\n\t\t} else {\n\t\t\trex = rex.clearW()\n\t\t}\n\t\tencodeRegReg(c, legacyPrefixesNone, 0x89, 1, src, dst, rex)\n\n\tcase xmmRmR, blendvpd:\n\t\top := sseOpcode(i.u1)\n\t\tvar legPrex legacyPrefixes\n\t\tvar opcode uint32\n\t\tvar opcodeNum uint32\n\t\tswitch op {\n\t\tcase sseOpcodeAddps:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixesNone, 0x0F58, 2\n\t\tcase sseOpcodeAddpd:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0F58, 2\n\t\tcase sseOpcodeAddss:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0xF3, 0x0F58, 2\n\t\tcase sseOpcodeAddsd:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0xF2, 0x0F58, 2\n\t\tcase sseOpcodeAndps:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixesNone, 0x0F54, 2\n\t\tcase sseOpcodeAndpd:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0F54, 2\n\t\tcase sseOpcodeAndnps:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixesNone, 0x0F55, 2\n\t\tcase sseOpcodeAndnpd:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0F55, 2\n\t\tcase sseOpcodeBlendvps:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0F3814, 3\n\t\tcase sseOpcodeBlendvpd:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0F3815, 3\n\t\tcase sseOpcodeDivps:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixesNone, 0x0F5E, 2\n\t\tcase sseOpcodeDivpd:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0F5E, 2\n\t\tcase sseOpcodeDivss:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0xF3, 0x0F5E, 2\n\t\tcase sseOpcodeDivsd:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0xF2, 0x0F5E, 2\n\t\tcase sseOpcodeMaxps:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixesNone, 0x0F5F, 2\n\t\tcase sseOpcodeMaxpd:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0F5F, 2\n\t\tcase sseOpcodeMaxss:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0xF3, 0x0F5F, 2\n\t\tcase sseOpcodeMaxsd:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0xF2, 0x0F5F, 2\n\t\tcase sseOpcodeMinps:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixesNone, 0x0F5D, 2\n\t\tcase sseOpcodeMinpd:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0F5D, 2\n\t\tcase sseOpcodeMinss:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0xF3, 0x0F5D, 2\n\t\tcase sseOpcodeMinsd:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0xF2, 0x0F5D, 2\n\t\tcase sseOpcodeMovlhps:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixesNone, 0x0F16, 2\n\t\tcase sseOpcodeMovsd:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0xF2, 0x0F10, 2\n\t\tcase sseOpcodeMulps:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixesNone, 0x0F59, 2\n\t\tcase sseOpcodeMulpd:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0F59, 2\n\t\tcase sseOpcodeMulss:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0xF3, 0x0F59, 2\n\t\tcase sseOpcodeMulsd:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0xF2, 0x0F59, 2\n\t\tcase sseOpcodeOrpd:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0F56, 2\n\t\tcase sseOpcodeOrps:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixesNone, 0x0F56, 2\n\t\tcase sseOpcodePackssdw:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0F6B, 2\n\t\tcase sseOpcodePacksswb:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0F63, 2\n\t\tcase sseOpcodePackusdw:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0F382B, 3\n\t\tcase sseOpcodePackuswb:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0F67, 2\n\t\tcase sseOpcodePaddb:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0FFC, 2\n\t\tcase sseOpcodePaddd:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0FFE, 2\n\t\tcase sseOpcodePaddq:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0FD4, 2\n\t\tcase sseOpcodePaddw:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0FFD, 2\n\t\tcase sseOpcodePaddsb:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0FEC, 2\n\t\tcase sseOpcodePaddsw:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0FED, 2\n\t\tcase sseOpcodePaddusb:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0FDC, 2\n\t\tcase sseOpcodePaddusw:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0FDD, 2\n\t\tcase sseOpcodePand:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0FDB, 2\n\t\tcase sseOpcodePandn:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0FDF, 2\n\t\tcase sseOpcodePavgb:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0FE0, 2\n\t\tcase sseOpcodePavgw:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0FE3, 2\n\t\tcase sseOpcodePcmpeqb:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0F74, 2\n\t\tcase sseOpcodePcmpeqw:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0F75, 2\n\t\tcase sseOpcodePcmpeqd:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0F76, 2\n\t\tcase sseOpcodePcmpeqq:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0F3829, 3\n\t\tcase sseOpcodePcmpgtb:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0F64, 2\n\t\tcase sseOpcodePcmpgtw:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0F65, 2\n\t\tcase sseOpcodePcmpgtd:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0F66, 2\n\t\tcase sseOpcodePcmpgtq:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0F3837, 3\n\t\tcase sseOpcodePmaddwd:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0FF5, 2\n\t\tcase sseOpcodePmaxsb:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0F383C, 3\n\t\tcase sseOpcodePmaxsw:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0FEE, 2\n\t\tcase sseOpcodePmaxsd:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0F383D, 3\n\t\tcase sseOpcodePmaxub:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0FDE, 2\n\t\tcase sseOpcodePmaxuw:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0F383E, 3\n\t\tcase sseOpcodePmaxud:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0F383F, 3\n\t\tcase sseOpcodePminsb:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0F3838, 3\n\t\tcase sseOpcodePminsw:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0FEA, 2\n\t\tcase sseOpcodePminsd:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0F3839, 3\n\t\tcase sseOpcodePminub:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0FDA, 2\n\t\tcase sseOpcodePminuw:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0F383A, 3\n\t\tcase sseOpcodePminud:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0F383B, 3\n\t\tcase sseOpcodePmulld:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0F3840, 3\n\t\tcase sseOpcodePmullw:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0FD5, 2\n\t\tcase sseOpcodePmuludq:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0FF4, 2\n\t\tcase sseOpcodePor:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0FEB, 2\n\t\tcase sseOpcodePshufb:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0F3800, 3\n\t\tcase sseOpcodePsubb:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0FF8, 2\n\t\tcase sseOpcodePsubd:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0FFA, 2\n\t\tcase sseOpcodePsubq:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0FFB, 2\n\t\tcase sseOpcodePsubw:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0FF9, 2\n\t\tcase sseOpcodePsubsb:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0FE8, 2\n\t\tcase sseOpcodePsubsw:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0FE9, 2\n\t\tcase sseOpcodePsubusb:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0FD8, 2\n\t\tcase sseOpcodePsubusw:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0FD9, 2\n\t\tcase sseOpcodePunpckhbw:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0F68, 2\n\t\tcase sseOpcodePunpcklbw:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0F60, 2\n\t\tcase sseOpcodePxor:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0FEF, 2\n\t\tcase sseOpcodeSubps:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixesNone, 0x0F5C, 2\n\t\tcase sseOpcodeSubpd:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0F5C, 2\n\t\tcase sseOpcodeSubss:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0xF3, 0x0F5C, 2\n\t\tcase sseOpcodeSubsd:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0xF2, 0x0F5C, 2\n\t\tcase sseOpcodeXorps:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixesNone, 0x0F57, 2\n\t\tcase sseOpcodeXorpd:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0F57, 2\n\t\tcase sseOpcodePmulhrsw:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0F380B, 3\n\t\tcase sseOpcodeUnpcklps:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixesNone, 0x0F14, 2\n\t\tcase sseOpcodePmaddubsw:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0F3804, 3\n\t\tdefault:\n\t\t\tif kind == blendvpd {\n\t\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0F3815, 3\n\t\t\t} else {\n\t\t\t\tpanic(fmt.Sprintf(\"Unsupported sseOpcode: %s\", op))\n\t\t\t}\n\t\t}\n\n\t\tdst := regEncodings[i.op2.reg().RealReg()]\n\n\t\trex := rexInfo(0).clearW()\n\t\top1 := i.op1\n\t\tif op1.kind == operandKindReg {\n\t\t\tsrc := regEncodings[op1.reg().RealReg()]\n\t\t\tencodeRegReg(c, legPrex, opcode, opcodeNum, dst, src, rex)\n\t\t} else if i.op1.kind == operandKindMem {\n\t\t\tm := i.op1.addressMode()\n\t\t\tencodeRegMem(c, legPrex, opcode, opcodeNum, dst, m, rex)\n\t\t} else {\n\t\t\tpanic(\"BUG: invalid operand kind\")\n\t\t}\n\n\tcase gprToXmm:\n\t\tvar legPrefix legacyPrefixes\n\t\tvar opcode uint32\n\t\tconst opcodeNum = 2\n\t\tswitch sseOpcode(i.u1) {\n\t\tcase sseOpcodeMovd, sseOpcodeMovq:\n\t\t\tlegPrefix, opcode = legacyPrefixes0x66, 0x0f6e\n\t\tcase sseOpcodeCvtsi2ss:\n\t\t\tlegPrefix, opcode = legacyPrefixes0xF3, 0x0f2a\n\t\tcase sseOpcodeCvtsi2sd:\n\t\t\tlegPrefix, opcode = legacyPrefixes0xF2, 0x0f2a\n\t\tdefault:\n\t\t\tpanic(fmt.Sprintf(\"Unsupported sseOpcode: %s\", sseOpcode(i.u1)))\n\t\t}\n\n\t\tvar rex rexInfo\n\t\tif i.b1 {\n\t\t\trex = rex.setW()\n\t\t} else {\n\t\t\trex = rex.clearW()\n\t\t}\n\t\tdst := regEncodings[i.op2.reg().RealReg()]\n\n\t\top1 := i.op1\n\t\tif op1.kind == operandKindReg {\n\t\t\tsrc := regEncodings[op1.reg().RealReg()]\n\t\t\tencodeRegReg(c, legPrefix, opcode, opcodeNum, dst, src, rex)\n\t\t} else if i.op1.kind == operandKindMem {\n\t\t\tm := i.op1.addressMode()\n\t\t\tencodeRegMem(c, legPrefix, opcode, opcodeNum, dst, m, rex)\n\t\t} else {\n\t\t\tpanic(\"BUG: invalid operand kind\")\n\t\t}\n\n\tcase xmmUnaryRmR:\n\t\tvar prefix legacyPrefixes\n\t\tvar opcode uint32\n\t\tvar opcodeNum uint32\n\t\top := sseOpcode(i.u1)\n\t\tswitch op {\n\t\tcase sseOpcodeCvtss2sd:\n\t\t\tprefix, opcode, opcodeNum = legacyPrefixes0xF3, 0x0F5A, 2\n\t\tcase sseOpcodeCvtsd2ss:\n\t\t\tprefix, opcode, opcodeNum = legacyPrefixes0xF2, 0x0F5A, 2\n\t\tcase sseOpcodeMovaps:\n\t\t\tprefix, opcode, opcodeNum = legacyPrefixesNone, 0x0F28, 2\n\t\tcase sseOpcodeMovapd:\n\t\t\tprefix, opcode, opcodeNum = legacyPrefixes0x66, 0x0F28, 2\n\t\tcase sseOpcodeMovdqa:\n\t\t\tprefix, opcode, opcodeNum = legacyPrefixes0x66, 0x0F6F, 2\n\t\tcase sseOpcodeMovdqu:\n\t\t\tprefix, opcode, opcodeNum = legacyPrefixes0xF3, 0x0F6F, 2\n\t\tcase sseOpcodeMovsd:\n\t\t\tprefix, opcode, opcodeNum = legacyPrefixes0xF2, 0x0F10, 2\n\t\tcase sseOpcodeMovss:\n\t\t\tprefix, opcode, opcodeNum = legacyPrefixes0xF3, 0x0F10, 2\n\t\tcase sseOpcodeMovups:\n\t\t\tprefix, opcode, opcodeNum = legacyPrefixesNone, 0x0F10, 2\n\t\tcase sseOpcodeMovupd:\n\t\t\tprefix, opcode, opcodeNum = legacyPrefixes0x66, 0x0F10, 2\n\t\tcase sseOpcodePabsb:\n\t\t\tprefix, opcode, opcodeNum = legacyPrefixes0x66, 0x0F381C, 3\n\t\tcase sseOpcodePabsw:\n\t\t\tprefix, opcode, opcodeNum = legacyPrefixes0x66, 0x0F381D, 3\n\t\tcase sseOpcodePabsd:\n\t\t\tprefix, opcode, opcodeNum = legacyPrefixes0x66, 0x0F381E, 3\n\t\tcase sseOpcodePmovsxbd:\n\t\t\tprefix, opcode, opcodeNum = legacyPrefixes0x66, 0x0F3821, 3\n\t\tcase sseOpcodePmovsxbw:\n\t\t\tprefix, opcode, opcodeNum = legacyPrefixes0x66, 0x0F3820, 3\n\t\tcase sseOpcodePmovsxbq:\n\t\t\tprefix, opcode, opcodeNum = legacyPrefixes0x66, 0x0F3822, 3\n\t\tcase sseOpcodePmovsxwd:\n\t\t\tprefix, opcode, opcodeNum = legacyPrefixes0x66, 0x0F3823, 3\n\t\tcase sseOpcodePmovsxwq:\n\t\t\tprefix, opcode, opcodeNum = legacyPrefixes0x66, 0x0F3824, 3\n\t\tcase sseOpcodePmovsxdq:\n\t\t\tprefix, opcode, opcodeNum = legacyPrefixes0x66, 0x0F3825, 3\n\t\tcase sseOpcodePmovzxbd:\n\t\t\tprefix, opcode, opcodeNum = legacyPrefixes0x66, 0x0F3831, 3\n\t\tcase sseOpcodePmovzxbw:\n\t\t\tprefix, opcode, opcodeNum = legacyPrefixes0x66, 0x0F3830, 3\n\t\tcase sseOpcodePmovzxbq:\n\t\t\tprefix, opcode, opcodeNum = legacyPrefixes0x66, 0x0F3832, 3\n\t\tcase sseOpcodePmovzxwd:\n\t\t\tprefix, opcode, opcodeNum = legacyPrefixes0x66, 0x0F3833, 3\n\t\tcase sseOpcodePmovzxwq:\n\t\t\tprefix, opcode, opcodeNum = legacyPrefixes0x66, 0x0F3834, 3\n\t\tcase sseOpcodePmovzxdq:\n\t\t\tprefix, opcode, opcodeNum = legacyPrefixes0x66, 0x0F3835, 3\n\t\tcase sseOpcodeSqrtps:\n\t\t\tprefix, opcode, opcodeNum = legacyPrefixesNone, 0x0F51, 2\n\t\tcase sseOpcodeSqrtpd:\n\t\t\tprefix, opcode, opcodeNum = legacyPrefixes0x66, 0x0F51, 2\n\t\tcase sseOpcodeSqrtss:\n\t\t\tprefix, opcode, opcodeNum = legacyPrefixes0xF3, 0x0F51, 2\n\t\tcase sseOpcodeSqrtsd:\n\t\t\tprefix, opcode, opcodeNum = legacyPrefixes0xF2, 0x0F51, 2\n\t\tcase sseOpcodeXorps:\n\t\t\tprefix, opcode, opcodeNum = legacyPrefixesNone, 0x0F57, 2\n\t\tcase sseOpcodeXorpd:\n\t\t\tprefix, opcode, opcodeNum = legacyPrefixes0x66, 0x0F57, 2\n\t\tcase sseOpcodeCvtdq2ps:\n\t\t\tprefix, opcode, opcodeNum = legacyPrefixesNone, 0x0F5B, 2\n\t\tcase sseOpcodeCvtdq2pd:\n\t\t\tprefix, opcode, opcodeNum = legacyPrefixes0xF3, 0x0FE6, 2\n\t\tcase sseOpcodeCvtps2pd:\n\t\t\tprefix, opcode, opcodeNum = legacyPrefixesNone, 0x0F5A, 2\n\t\tcase sseOpcodeCvtpd2ps:\n\t\t\tprefix, opcode, opcodeNum = legacyPrefixes0x66, 0x0F5A, 2\n\t\tcase sseOpcodeCvttps2dq:\n\t\t\tprefix, opcode, opcodeNum = legacyPrefixes0xF3, 0x0F5B, 2\n\t\tcase sseOpcodeCvttpd2dq:\n\t\t\tprefix, opcode, opcodeNum = legacyPrefixes0x66, 0x0FE6, 2\n\t\tdefault:\n\t\t\tpanic(fmt.Sprintf(\"Unsupported sseOpcode: %s\", op))\n\t\t}\n\n\t\tdst := regEncodings[i.op2.reg().RealReg()]\n\n\t\trex := rexInfo(0).clearW()\n\t\top1 := i.op1\n\t\tif op1.kind == operandKindReg {\n\t\t\tsrc := regEncodings[op1.reg().RealReg()]\n\t\t\tencodeRegReg(c, prefix, opcode, opcodeNum, dst, src, rex)\n\t\t} else if i.op1.kind == operandKindMem {\n\t\t\tm := i.op1.addressMode()\n\t\t\tneedsLabelResolution = encodeRegMem(c, prefix, opcode, opcodeNum, dst, m, rex)\n\t\t} else {\n\t\t\tpanic(\"BUG: invalid operand kind\")\n\t\t}\n\n\tcase xmmUnaryRmRImm:\n\t\tvar prefix legacyPrefixes\n\t\tvar opcode uint32\n\t\tvar opcodeNum uint32\n\t\top := sseOpcode(i.u1)\n\t\tswitch op {\n\t\tcase sseOpcodeRoundps:\n\t\t\tprefix, opcode, opcodeNum = legacyPrefixes0x66, 0x0f3a08, 3\n\t\tcase sseOpcodeRoundss:\n\t\t\tprefix, opcode, opcodeNum = legacyPrefixes0x66, 0x0f3a0a, 3\n\t\tcase sseOpcodeRoundpd:\n\t\t\tprefix, opcode, opcodeNum = legacyPrefixes0x66, 0x0f3a09, 3\n\t\tcase sseOpcodeRoundsd:\n\t\t\tprefix, opcode, opcodeNum = legacyPrefixes0x66, 0x0f3a0b, 3\n\t\t}\n\t\trex := rexInfo(0).clearW()\n\t\tdst := regEncodings[i.op2.reg().RealReg()]\n\t\top1 := i.op1\n\t\tif op1.kind == operandKindReg {\n\t\t\tsrc := regEncodings[op1.reg().RealReg()]\n\t\t\tencodeRegReg(c, prefix, opcode, opcodeNum, dst, src, rex)\n\t\t} else if i.op1.kind == operandKindMem {\n\t\t\tm := i.op1.addressMode()\n\t\t\tencodeRegMem(c, prefix, opcode, opcodeNum, dst, m, rex)\n\t\t} else {\n\t\t\tpanic(\"BUG: invalid operand kind\")\n\t\t}\n\n\t\tc.EmitByte(byte(i.u2))\n\n\tcase unaryRmR:\n\t\tvar prefix legacyPrefixes\n\t\tvar opcode uint32\n\t\tvar opcodeNum uint32\n\t\top := unaryRmROpcode(i.u1)\n\t\t// We assume size is either 32 or 64.\n\t\tswitch op {\n\t\tcase unaryRmROpcodeBsr:\n\t\t\tprefix, opcode, opcodeNum = legacyPrefixesNone, 0x0fbd, 2\n\t\tcase unaryRmROpcodeBsf:\n\t\t\tprefix, opcode, opcodeNum = legacyPrefixesNone, 0x0fbc, 2\n\t\tcase unaryRmROpcodeLzcnt:\n\t\t\tprefix, opcode, opcodeNum = legacyPrefixes0xF3, 0x0fbd, 2\n\t\tcase unaryRmROpcodeTzcnt:\n\t\t\tprefix, opcode, opcodeNum = legacyPrefixes0xF3, 0x0fbc, 2\n\t\tcase unaryRmROpcodePopcnt:\n\t\t\tprefix, opcode, opcodeNum = legacyPrefixes0xF3, 0x0fb8, 2\n\t\tdefault:\n\t\t\tpanic(fmt.Sprintf(\"Unsupported unaryRmROpcode: %s\", op))\n\t\t}\n\n\t\tdst := regEncodings[i.op2.reg().RealReg()]\n\n\t\trex := rexInfo(0)\n\t\tif i.b1 { // 64 bit.\n\t\t\trex = rexInfo(0).setW()\n\t\t} else {\n\t\t\trex = rexInfo(0).clearW()\n\t\t}\n\t\top1 := i.op1\n\t\tif op1.kind == operandKindReg {\n\t\t\tsrc := regEncodings[op1.reg().RealReg()]\n\t\t\tencodeRegReg(c, prefix, opcode, opcodeNum, dst, src, rex)\n\t\t} else if i.op1.kind == operandKindMem {\n\t\t\tm := i.op1.addressMode()\n\t\t\tencodeRegMem(c, prefix, opcode, opcodeNum, dst, m, rex)\n\t\t} else {\n\t\t\tpanic(\"BUG: invalid operand kind\")\n\t\t}\n\n\tcase not:\n\t\tvar prefix legacyPrefixes\n\t\tsrc := regEncodings[i.op1.reg().RealReg()]\n\t\trex := rexInfo(0)\n\t\tif i.b1 { // 64 bit.\n\t\t\trex = rexInfo(0).setW()\n\t\t} else {\n\t\t\trex = rexInfo(0).clearW()\n\t\t}\n\t\tsubopcode := uint8(2)\n\t\tencodeEncEnc(c, prefix, 0xf7, 1, subopcode, uint8(src), rex)\n\n\tcase neg:\n\t\tvar prefix legacyPrefixes\n\t\tsrc := regEncodings[i.op1.reg().RealReg()]\n\t\trex := rexInfo(0)\n\t\tif i.b1 { // 64 bit.\n\t\t\trex = rexInfo(0).setW()\n\t\t} else {\n\t\t\trex = rexInfo(0).clearW()\n\t\t}\n\t\tsubopcode := uint8(3)\n\t\tencodeEncEnc(c, prefix, 0xf7, 1, subopcode, uint8(src), rex)\n\n\tcase div:\n\t\trex := rexInfo(0)\n\t\tif i.b1 { // 64 bit.\n\t\t\trex = rexInfo(0).setW()\n\t\t} else {\n\t\t\trex = rexInfo(0).clearW()\n\t\t}\n\t\tvar subopcode uint8\n\t\tif i.u1 != 0 { // Signed.\n\t\t\tsubopcode = 7\n\t\t} else {\n\t\t\tsubopcode = 6\n\t\t}\n\n\t\tdivisor := i.op1\n\t\tif divisor.kind == operandKindReg {\n\t\t\tsrc := regEncodings[divisor.reg().RealReg()]\n\t\t\tencodeEncEnc(c, legacyPrefixesNone, 0xf7, 1, subopcode, uint8(src), rex)\n\t\t} else if divisor.kind == operandKindMem {\n\t\t\tm := divisor.addressMode()\n\t\t\tencodeEncMem(c, legacyPrefixesNone, 0xf7, 1, subopcode, m, rex)\n\t\t} else {\n\t\t\tpanic(\"BUG: invalid operand kind\")\n\t\t}\n\n\tcase mulHi:\n\t\tvar prefix legacyPrefixes\n\t\trex := rexInfo(0)\n\t\tif i.b1 { // 64 bit.\n\t\t\trex = rexInfo(0).setW()\n\t\t} else {\n\t\t\trex = rexInfo(0).clearW()\n\t\t}\n\n\t\tsigned := i.u1 != 0\n\t\tvar subopcode uint8\n\t\tif signed {\n\t\t\tsubopcode = 5\n\t\t} else {\n\t\t\tsubopcode = 4\n\t\t}\n\n\t\t// src1 is implicitly rax,\n\t\t// dst_lo is implicitly rax,\n\t\t// dst_hi is implicitly rdx.\n\t\tsrc2 := i.op1\n\t\tif src2.kind == operandKindReg {\n\t\t\tsrc := regEncodings[src2.reg().RealReg()]\n\t\t\tencodeEncEnc(c, prefix, 0xf7, 1, subopcode, uint8(src), rex)\n\t\t} else if src2.kind == operandKindMem {\n\t\t\tm := src2.addressMode()\n\t\t\tencodeEncMem(c, prefix, 0xf7, 1, subopcode, m, rex)\n\t\t} else {\n\t\t\tpanic(\"BUG: invalid operand kind\")\n\t\t}\n\n\tcase signExtendData:\n\t\tif i.b1 { // 64 bit.\n\t\t\tc.EmitByte(0x48)\n\t\t\tc.EmitByte(0x99)\n\t\t} else {\n\t\t\tc.EmitByte(0x99)\n\t\t}\n\tcase movzxRmR, movsxRmR:\n\t\tsigned := i.kind == movsxRmR\n\n\t\text := extMode(i.u1)\n\t\tvar opcode uint32\n\t\tvar opcodeNum uint32\n\t\tvar rex rexInfo\n\t\tswitch ext {\n\t\tcase extModeBL:\n\t\t\tif signed {\n\t\t\t\topcode, opcodeNum, rex = 0x0fbe, 2, rex.clearW()\n\t\t\t} else {\n\t\t\t\topcode, opcodeNum, rex = 0x0fb6, 2, rex.clearW()\n\t\t\t}\n\t\tcase extModeBQ:\n\t\t\tif signed {\n\t\t\t\topcode, opcodeNum, rex = 0x0fbe, 2, rex.setW()\n\t\t\t} else {\n\t\t\t\topcode, opcodeNum, rex = 0x0fb6, 2, rex.setW()\n\t\t\t}\n\t\tcase extModeWL:\n\t\t\tif signed {\n\t\t\t\topcode, opcodeNum, rex = 0x0fbf, 2, rex.clearW()\n\t\t\t} else {\n\t\t\t\topcode, opcodeNum, rex = 0x0fb7, 2, rex.clearW()\n\t\t\t}\n\t\tcase extModeWQ:\n\t\t\tif signed {\n\t\t\t\topcode, opcodeNum, rex = 0x0fbf, 2, rex.setW()\n\t\t\t} else {\n\t\t\t\topcode, opcodeNum, rex = 0x0fb7, 2, rex.setW()\n\t\t\t}\n\t\tcase extModeLQ:\n\t\t\tif signed {\n\t\t\t\topcode, opcodeNum, rex = 0x63, 1, rex.setW()\n\t\t\t} else {\n\t\t\t\topcode, opcodeNum, rex = 0x8b, 1, rex.clearW()\n\t\t\t}\n\t\tdefault:\n\t\t\tpanic(\"BUG: invalid extMode\")\n\t\t}\n\n\t\top := i.op1\n\t\tdst := regEncodings[i.op2.reg().RealReg()]\n\t\tswitch op.kind {\n\t\tcase operandKindReg:\n\t\t\tsrc := regEncodings[op.reg().RealReg()]\n\t\t\tif ext == extModeBL || ext == extModeBQ {\n\t\t\t\t// Some destinations must be encoded with REX.R = 1.\n\t\t\t\tif e := src.encoding(); e >= 4 && e <= 7 {\n\t\t\t\t\trex = rex.always()\n\t\t\t\t}\n\t\t\t}\n\t\t\tencodeRegReg(c, legacyPrefixesNone, opcode, opcodeNum, dst, src, rex)\n\t\tcase operandKindMem:\n\t\t\tm := op.addressMode()\n\t\t\tencodeRegMem(c, legacyPrefixesNone, opcode, opcodeNum, dst, m, rex)\n\t\tdefault:\n\t\t\tpanic(\"BUG: invalid operand kind\")\n\t\t}\n\n\tcase mov64MR:\n\t\tm := i.op1.addressMode()\n\t\tencodeLoad64(c, m, i.op2.reg().RealReg())\n\n\tcase lea:\n\t\tneedsLabelResolution = true\n\t\tdst := regEncodings[i.op2.reg().RealReg()]\n\t\trex := rexInfo(0).setW()\n\t\tconst opcode, opcodeNum = 0x8d, 1\n\t\tswitch i.op1.kind {\n\t\tcase operandKindMem:\n\t\t\ta := i.op1.addressMode()\n\t\t\tencodeRegMem(c, legacyPrefixesNone, opcode, opcodeNum, dst, a, rex)\n\t\tcase operandKindLabel:\n\t\t\trex.encode(c, regRexBit(byte(dst)), 0)\n\t\t\tc.EmitByte(byte((opcode) & 0xff))\n\n\t\t\t// Indicate \"LEAQ [RIP + 32bit displacement].\n\t\t\t// https://wiki.osdev.org/X86-64_Instruction_Encoding#32.2F64-bit_addressing\n\t\t\tc.EmitByte(encodeModRM(0b00, dst.encoding(), 0b101))\n\n\t\t\t// This will be resolved later, so we just emit a placeholder (0xffffffff for testing).\n\t\t\tc.Emit4Bytes(0xffffffff)\n\t\tdefault:\n\t\t\tpanic(\"BUG: invalid operand kind\")\n\t\t}\n\n\tcase movRM:\n\t\tm := i.op2.addressMode()\n\t\tsrc := regEncodings[i.op1.reg().RealReg()]\n\n\t\tvar rex rexInfo\n\t\tswitch i.u1 {\n\t\tcase 1:\n\t\t\tif e := src.encoding(); e >= 4 && e <= 7 {\n\t\t\t\trex = rex.always()\n\t\t\t}\n\t\t\tencodeRegMem(c, legacyPrefixesNone, 0x88, 1, src, m, rex.clearW())\n\t\tcase 2:\n\t\t\tencodeRegMem(c, legacyPrefixes0x66, 0x89, 1, src, m, rex.clearW())\n\t\tcase 4:\n\t\t\tencodeRegMem(c, legacyPrefixesNone, 0x89, 1, src, m, rex.clearW())\n\t\tcase 8:\n\t\t\tencodeRegMem(c, legacyPrefixesNone, 0x89, 1, src, m, rex.setW())\n\t\tdefault:\n\t\t\tpanic(fmt.Sprintf(\"BUG: invalid size %d: %s\", i.u1, i.String()))\n\t\t}\n\n\tcase shiftR:\n\t\tsrc := regEncodings[i.op2.reg().RealReg()]\n\t\tamount := i.op1\n\n\t\tvar opcode uint32\n\t\tvar prefix legacyPrefixes\n\t\trex := rexInfo(0)\n\t\tif i.b1 { // 64 bit.\n\t\t\trex = rexInfo(0).setW()\n\t\t} else {\n\t\t\trex = rexInfo(0).clearW()\n\t\t}\n\n\t\tswitch amount.kind {\n\t\tcase operandKindReg:\n\t\t\tif amount.reg() != rcxVReg {\n\t\t\t\tpanic(\"BUG: invalid reg operand: must be rcx\")\n\t\t\t}\n\t\t\topcode, prefix = 0xd3, legacyPrefixesNone\n\t\t\tencodeEncEnc(c, prefix, opcode, 1, uint8(i.u1), uint8(src), rex)\n\t\tcase operandKindImm32:\n\t\t\topcode, prefix = 0xc1, legacyPrefixesNone\n\t\t\tencodeEncEnc(c, prefix, opcode, 1, uint8(i.u1), uint8(src), rex)\n\t\t\tc.EmitByte(byte(amount.imm32()))\n\t\tdefault:\n\t\t\tpanic(\"BUG: invalid operand kind\")\n\t\t}\n\tcase xmmRmiReg:\n\t\tconst legPrefix = legacyPrefixes0x66\n\t\trex := rexInfo(0).clearW()\n\t\tdst := regEncodings[i.op2.reg().RealReg()]\n\n\t\tvar opcode uint32\n\t\tvar regDigit uint8\n\n\t\top := sseOpcode(i.u1)\n\t\top1 := i.op1\n\t\tif i.op1.kind == operandKindImm32 {\n\t\t\tswitch op {\n\t\t\tcase sseOpcodePsllw:\n\t\t\t\topcode, regDigit = 0x0f71, 6\n\t\t\tcase sseOpcodePslld:\n\t\t\t\topcode, regDigit = 0x0f72, 6\n\t\t\tcase sseOpcodePsllq:\n\t\t\t\topcode, regDigit = 0x0f73, 6\n\t\t\tcase sseOpcodePsraw:\n\t\t\t\topcode, regDigit = 0x0f71, 4\n\t\t\tcase sseOpcodePsrad:\n\t\t\t\topcode, regDigit = 0x0f72, 4\n\t\t\tcase sseOpcodePsrlw:\n\t\t\t\topcode, regDigit = 0x0f71, 2\n\t\t\tcase sseOpcodePsrld:\n\t\t\t\topcode, regDigit = 0x0f72, 2\n\t\t\tcase sseOpcodePsrlq:\n\t\t\t\topcode, regDigit = 0x0f73, 2\n\t\t\tdefault:\n\t\t\t\tpanic(\"invalid opcode\")\n\t\t\t}\n\n\t\t\tencodeEncEnc(c, legPrefix, opcode, 2, regDigit, uint8(dst), rex)\n\t\t\timm32 := op1.imm32()\n\t\t\tif imm32 > 0xff&imm32 {\n\t\t\t\tpanic(\"immediate value does not fit 1 byte\")\n\t\t\t}\n\t\t\tc.EmitByte(uint8(imm32))\n\t\t} else {\n\t\t\tswitch op {\n\t\t\tcase sseOpcodePsllw:\n\t\t\t\topcode = 0x0ff1\n\t\t\tcase sseOpcodePslld:\n\t\t\t\topcode = 0x0ff2\n\t\t\tcase sseOpcodePsllq:\n\t\t\t\topcode = 0x0ff3\n\t\t\tcase sseOpcodePsraw:\n\t\t\t\topcode = 0x0fe1\n\t\t\tcase sseOpcodePsrad:\n\t\t\t\topcode = 0x0fe2\n\t\t\tcase sseOpcodePsrlw:\n\t\t\t\topcode = 0x0fd1\n\t\t\tcase sseOpcodePsrld:\n\t\t\t\topcode = 0x0fd2\n\t\t\tcase sseOpcodePsrlq:\n\t\t\t\topcode = 0x0fd3\n\t\t\tdefault:\n\t\t\t\tpanic(\"invalid opcode\")\n\t\t\t}\n\n\t\t\tif op1.kind == operandKindReg {\n\t\t\t\treg := regEncodings[op1.reg().RealReg()]\n\t\t\t\tencodeRegReg(c, legPrefix, opcode, 2, dst, reg, rex)\n\t\t\t} else if op1.kind == operandKindMem {\n\t\t\t\tm := op1.addressMode()\n\t\t\t\tencodeRegMem(c, legPrefix, opcode, 2, dst, m, rex)\n\t\t\t} else {\n\t\t\t\tpanic(\"BUG: invalid operand kind\")\n\t\t\t}\n\t\t}\n\n\tcase cmpRmiR:\n\t\tvar opcode uint32\n\t\tisCmp := i.u1 != 0\n\t\trex := rexInfo(0)\n\t\t_64 := i.b1\n\t\tif _64 { // 64 bit.\n\t\t\trex = rex.setW()\n\t\t} else {\n\t\t\trex = rex.clearW()\n\t\t}\n\t\tdst := regEncodings[i.op2.reg().RealReg()]\n\t\top1 := i.op1\n\t\tswitch op1.kind {\n\t\tcase operandKindReg:\n\t\t\treg := regEncodings[op1.reg().RealReg()]\n\t\t\tif isCmp {\n\t\t\t\topcode = 0x39\n\t\t\t} else {\n\t\t\t\topcode = 0x85\n\t\t\t}\n\t\t\t// Here we swap the encoding of the operands for CMP to be consistent with the output of LLVM/GCC.\n\t\t\tencodeRegReg(c, legacyPrefixesNone, opcode, 1, reg, dst, rex)\n\n\t\tcase operandKindMem:\n\t\t\tif isCmp {\n\t\t\t\topcode = 0x3b\n\t\t\t} else {\n\t\t\t\topcode = 0x85\n\t\t\t}\n\t\t\tm := op1.addressMode()\n\t\t\tencodeRegMem(c, legacyPrefixesNone, opcode, 1, dst, m, rex)\n\n\t\tcase operandKindImm32:\n\t\t\timm32 := op1.imm32()\n\t\t\tuseImm8 := isCmp && lower8willSignExtendTo32(imm32)\n\t\t\tvar subopcode uint8\n\n\t\t\tswitch {\n\t\t\tcase isCmp && useImm8:\n\t\t\t\topcode, subopcode = 0x83, 7\n\t\t\tcase isCmp && !useImm8:\n\t\t\t\topcode, subopcode = 0x81, 7\n\t\t\tdefault:\n\t\t\t\topcode, subopcode = 0xf7, 0\n\t\t\t}\n\t\t\tencodeEncEnc(c, legacyPrefixesNone, opcode, 1, subopcode, uint8(dst), rex)\n\t\t\tif useImm8 {\n\t\t\t\tc.EmitByte(uint8(imm32))\n\t\t\t} else {\n\t\t\t\tc.Emit4Bytes(imm32)\n\t\t\t}\n\n\t\tdefault:\n\t\t\tpanic(\"BUG: invalid operand kind\")\n\t\t}\n\tcase setcc:\n\t\tcc := cond(i.u1)\n\t\tdst := regEncodings[i.op2.reg().RealReg()]\n\t\trex := rexInfo(0).clearW().always()\n\t\topcode := uint32(0x0f90) + uint32(cc)\n\t\tencodeEncEnc(c, legacyPrefixesNone, opcode, 2, 0, uint8(dst), rex)\n\tcase cmove:\n\t\tcc := cond(i.u1)\n\t\tdst := regEncodings[i.op2.reg().RealReg()]\n\t\trex := rexInfo(0)\n\t\tif i.b1 { // 64 bit.\n\t\t\trex = rex.setW()\n\t\t} else {\n\t\t\trex = rex.clearW()\n\t\t}\n\t\topcode := uint32(0x0f40) + uint32(cc)\n\t\tsrc := i.op1\n\t\tswitch src.kind {\n\t\tcase operandKindReg:\n\t\t\tsrcReg := regEncodings[src.reg().RealReg()]\n\t\t\tencodeRegReg(c, legacyPrefixesNone, opcode, 2, dst, srcReg, rex)\n\t\tcase operandKindMem:\n\t\t\tm := src.addressMode()\n\t\t\tencodeRegMem(c, legacyPrefixesNone, opcode, 2, dst, m, rex)\n\t\tdefault:\n\t\t\tpanic(\"BUG: invalid operand kind\")\n\t\t}\n\tcase push64:\n\t\top := i.op1\n\n\t\tswitch op.kind {\n\t\tcase operandKindReg:\n\t\t\tdst := regEncodings[op.reg().RealReg()]\n\t\t\tif dst.rexBit() > 0 {\n\t\t\t\tc.EmitByte(rexEncodingDefault | 0x1)\n\t\t\t}\n\t\t\tc.EmitByte(0x50 | dst.encoding())\n\t\tcase operandKindMem:\n\t\t\tm := op.addressMode()\n\t\t\tencodeRegMem(\n\t\t\t\tc, legacyPrefixesNone, 0xff, 1, regEnc(6), m, rexInfo(0).clearW(),\n\t\t\t)\n\t\tcase operandKindImm32:\n\t\t\tc.EmitByte(0x68)\n\t\t\tc.Emit4Bytes(op.imm32())\n\t\tdefault:\n\t\t\tpanic(\"BUG: invalid operand kind\")\n\t\t}\n\n\tcase pop64:\n\t\tdst := regEncodings[i.op1.reg().RealReg()]\n\t\tif dst.rexBit() > 0 {\n\t\t\tc.EmitByte(rexEncodingDefault | 0x1)\n\t\t}\n\t\tc.EmitByte(0x58 | dst.encoding())\n\n\tcase xmmMovRM:\n\t\tvar legPrefix legacyPrefixes\n\t\tvar opcode uint32\n\t\tconst opcodeNum = 2\n\t\tswitch sseOpcode(i.u1) {\n\t\tcase sseOpcodeMovaps:\n\t\t\tlegPrefix, opcode = legacyPrefixesNone, 0x0f29\n\t\tcase sseOpcodeMovapd:\n\t\t\tlegPrefix, opcode = legacyPrefixes0x66, 0x0f29\n\t\tcase sseOpcodeMovdqa:\n\t\t\tlegPrefix, opcode = legacyPrefixes0x66, 0x0f7f\n\t\tcase sseOpcodeMovdqu:\n\t\t\tlegPrefix, opcode = legacyPrefixes0xF3, 0x0f7f\n\t\tcase sseOpcodeMovss:\n\t\t\tlegPrefix, opcode = legacyPrefixes0xF3, 0x0f11\n\t\tcase sseOpcodeMovsd:\n\t\t\tlegPrefix, opcode = legacyPrefixes0xF2, 0x0f11\n\t\tcase sseOpcodeMovups:\n\t\t\tlegPrefix, opcode = legacyPrefixesNone, 0x0f11\n\t\tcase sseOpcodeMovupd:\n\t\t\tlegPrefix, opcode = legacyPrefixes0x66, 0x0f11\n\t\tdefault:\n\t\t\tpanic(fmt.Sprintf(\"Unsupported sseOpcode: %s\", sseOpcode(i.u1)))\n\t\t}\n\n\t\tdst := regEncodings[i.op1.reg().RealReg()]\n\t\tencodeRegMem(c, legPrefix, opcode, opcodeNum, dst, i.op2.addressMode(), rexInfo(0).clearW())\n\tcase xmmLoadConst:\n\t\tpanic(\"TODO\")\n\tcase xmmToGpr:\n\t\tvar legPrefix legacyPrefixes\n\t\tvar opcode uint32\n\t\tvar argSwap bool\n\t\tconst opcodeNum = 2\n\t\tswitch sseOpcode(i.u1) {\n\t\tcase sseOpcodeMovd, sseOpcodeMovq:\n\t\t\tlegPrefix, opcode, argSwap = legacyPrefixes0x66, 0x0f7e, false\n\t\tcase sseOpcodeMovmskps:\n\t\t\tlegPrefix, opcode, argSwap = legacyPrefixesNone, 0x0f50, true\n\t\tcase sseOpcodeMovmskpd:\n\t\t\tlegPrefix, opcode, argSwap = legacyPrefixes0x66, 0x0f50, true\n\t\tcase sseOpcodePmovmskb:\n\t\t\tlegPrefix, opcode, argSwap = legacyPrefixes0x66, 0x0fd7, true\n\t\tcase sseOpcodeCvttss2si:\n\t\t\tlegPrefix, opcode, argSwap = legacyPrefixes0xF3, 0x0f2c, true\n\t\tcase sseOpcodeCvttsd2si:\n\t\t\tlegPrefix, opcode, argSwap = legacyPrefixes0xF2, 0x0f2c, true\n\t\tdefault:\n\t\t\tpanic(fmt.Sprintf(\"Unsupported sseOpcode: %s\", sseOpcode(i.u1)))\n\t\t}\n\n\t\tvar rex rexInfo\n\t\tif i.b1 {\n\t\t\trex = rex.setW()\n\t\t} else {\n\t\t\trex = rex.clearW()\n\t\t}\n\t\tsrc := regEncodings[i.op1.reg().RealReg()]\n\t\tdst := regEncodings[i.op2.reg().RealReg()]\n\t\tif argSwap {\n\t\t\tsrc, dst = dst, src\n\t\t}\n\t\tencodeRegReg(c, legPrefix, opcode, opcodeNum, src, dst, rex)\n\n\tcase cvtUint64ToFloatSeq:\n\t\tpanic(\"TODO\")\n\tcase cvtFloatToSintSeq:\n\t\tpanic(\"TODO\")\n\tcase cvtFloatToUintSeq:\n\t\tpanic(\"TODO\")\n\tcase xmmMinMaxSeq:\n\t\tpanic(\"TODO\")\n\tcase xmmCmpRmR:\n\t\tvar prefix legacyPrefixes\n\t\tvar opcode uint32\n\t\tvar opcodeNum uint32\n\t\trex := rexInfo(0)\n\t\t_64 := i.b1\n\t\tif _64 { // 64 bit.\n\t\t\trex = rex.setW()\n\t\t} else {\n\t\t\trex = rex.clearW()\n\t\t}\n\n\t\top := sseOpcode(i.u1)\n\t\tswitch op {\n\t\tcase sseOpcodePtest:\n\t\t\tprefix, opcode, opcodeNum = legacyPrefixes0x66, 0x0f3817, 3\n\t\tcase sseOpcodeUcomisd:\n\t\t\tprefix, opcode, opcodeNum = legacyPrefixes0x66, 0x0f2e, 2\n\t\tcase sseOpcodeUcomiss:\n\t\t\tprefix, opcode, opcodeNum = legacyPrefixesNone, 0x0f2e, 2\n\t\tdefault:\n\t\t\tpanic(fmt.Sprintf(\"Unsupported sseOpcode: %s\", op))\n\t\t}\n\n\t\tdst := regEncodings[i.op2.reg().RealReg()]\n\t\top1 := i.op1\n\t\tswitch op1.kind {\n\t\tcase operandKindReg:\n\t\t\treg := regEncodings[op1.reg().RealReg()]\n\t\t\tencodeRegReg(c, prefix, opcode, opcodeNum, dst, reg, rex)\n\n\t\tcase operandKindMem:\n\t\t\tm := op1.addressMode()\n\t\t\tencodeRegMem(c, prefix, opcode, opcodeNum, dst, m, rex)\n\n\t\tdefault:\n\t\t\tpanic(\"BUG: invalid operand kind\")\n\t\t}\n\tcase xmmRmRImm:\n\t\top := sseOpcode(i.u1)\n\t\tvar legPrex legacyPrefixes\n\t\tvar opcode uint32\n\t\tvar opcodeNum uint32\n\t\tvar swap bool\n\t\tswitch op {\n\t\tcase sseOpcodeCmpps:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixesNone, 0x0FC2, 2\n\t\tcase sseOpcodeCmppd:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0FC2, 2\n\t\tcase sseOpcodeCmpss:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0xF3, 0x0FC2, 2\n\t\tcase sseOpcodeCmpsd:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0xF2, 0x0FC2, 2\n\t\tcase sseOpcodeInsertps:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0F3A21, 3\n\t\tcase sseOpcodePalignr:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0F3A0F, 3\n\t\tcase sseOpcodePinsrb:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0F3A20, 3\n\t\tcase sseOpcodePinsrw:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0FC4, 2\n\t\tcase sseOpcodePinsrd, sseOpcodePinsrq:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0F3A22, 3\n\t\tcase sseOpcodePextrb:\n\t\t\tswap = true\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0F3A14, 3\n\t\tcase sseOpcodePextrw:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0FC5, 2\n\t\tcase sseOpcodePextrd, sseOpcodePextrq:\n\t\t\tswap = true\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0F3A16, 3\n\t\tcase sseOpcodePshufd:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0F70, 2\n\t\tcase sseOpcodeRoundps:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0F3A08, 3\n\t\tcase sseOpcodeRoundpd:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixes0x66, 0x0F3A09, 3\n\t\tcase sseOpcodeShufps:\n\t\t\tlegPrex, opcode, opcodeNum = legacyPrefixesNone, 0x0FC6, 2\n\t\tdefault:\n\t\t\tpanic(fmt.Sprintf(\"Unsupported sseOpcode: %s\", op))\n\t\t}\n\n\t\tdst := regEncodings[i.op2.reg().RealReg()]\n\n\t\tvar rex rexInfo\n\t\tif op == sseOpcodePextrq || op == sseOpcodePinsrq {\n\t\t\trex = rexInfo(0).setW()\n\t\t} else {\n\t\t\trex = rexInfo(0).clearW()\n\t\t}\n\t\top1 := i.op1\n\t\tif op1.kind == operandKindReg {\n\t\t\tsrc := regEncodings[op1.reg().RealReg()]\n\t\t\tif swap {\n\t\t\t\tsrc, dst = dst, src\n\t\t\t}\n\t\t\tencodeRegReg(c, legPrex, opcode, opcodeNum, dst, src, rex)\n\t\t} else if i.op1.kind == operandKindMem {\n\t\t\tif swap {\n\t\t\t\tpanic(\"BUG: this is not possible to encode\")\n\t\t\t}\n\t\t\tm := i.op1.addressMode()\n\t\t\tencodeRegMem(c, legPrex, opcode, opcodeNum, dst, m, rex)\n\t\t} else {\n\t\t\tpanic(\"BUG: invalid operand kind\")\n\t\t}\n\n\t\tc.EmitByte(byte(i.u2))\n\n\tcase jmp:\n\t\tconst (\n\t\t\tregMemOpcode    = 0xff\n\t\t\tregMemOpcodeNum = 1\n\t\t\tregMemSubOpcode = 4\n\t\t)\n\t\top := i.op1\n\t\tswitch op.kind {\n\t\tcase operandKindLabel:\n\t\t\tneedsLabelResolution = true\n\t\t\tfallthrough\n\t\tcase operandKindImm32:\n\t\t\tc.EmitByte(0xe9)\n\t\t\tc.Emit4Bytes(op.imm32())\n\t\tcase operandKindMem:\n\t\t\tm := op.addressMode()\n\t\t\tencodeRegMem(c,\n\t\t\t\tlegacyPrefixesNone,\n\t\t\t\tregMemOpcode, regMemOpcodeNum,\n\t\t\t\tregMemSubOpcode, m, rexInfo(0).clearW(),\n\t\t\t)\n\t\tcase operandKindReg:\n\t\t\tr := op.reg().RealReg()\n\t\t\tencodeRegReg(\n\t\t\t\tc,\n\t\t\t\tlegacyPrefixesNone,\n\t\t\t\tregMemOpcode, regMemOpcodeNum,\n\t\t\t\tregMemSubOpcode,\n\t\t\t\tregEncodings[r], rexInfo(0).clearW(),\n\t\t\t)\n\t\tdefault:\n\t\t\tpanic(\"BUG: invalid operand kind\")\n\t\t}\n\n\tcase jmpIf:\n\t\top := i.op1\n\t\tswitch op.kind {\n\t\tcase operandKindLabel:\n\t\t\tneedsLabelResolution = true\n\t\t\tfallthrough\n\t\tcase operandKindImm32:\n\t\t\tc.EmitByte(0x0f)\n\t\t\tc.EmitByte(0x80 | cond(i.u1).encoding())\n\t\t\tc.Emit4Bytes(op.imm32())\n\t\tdefault:\n\t\t\tpanic(\"BUG: invalid operand kind\")\n\t\t}\n\n\tcase jmpTableIsland:\n\t\tneedsLabelResolution = true\n\t\tfor tc := uint64(0); tc < i.u2; tc++ {\n\t\t\tc.Emit8Bytes(0)\n\t\t}\n\n\tcase exitSequence:\n\t\texecCtx := i.op1.reg()\n\t\tallocatedAmode := i.op2.addressMode()\n\n\t\t// Restore the RBP, RSP, and return to the Go code:\n\t\t*allocatedAmode = amode{\n\t\t\tkindWithShift: uint32(amodeImmReg), base: execCtx,\n\t\t\timm32: wazevoapi.ExecutionContextOffsetOriginalFramePointer.U32(),\n\t\t}\n\t\tencodeLoad64(c, allocatedAmode, rbp)\n\t\tallocatedAmode.imm32 = wazevoapi.ExecutionContextOffsetOriginalStackPointer.U32()\n\t\tencodeLoad64(c, allocatedAmode, rsp)\n\t\tencodeRet(c)\n\n\tcase ud2:\n\t\tc.EmitByte(0x0f)\n\t\tc.EmitByte(0x0b)\n\n\tcase call:\n\t\tc.EmitByte(0xe8)\n\t\t// Meaning that the call target is a function value, and requires relocation.\n\t\tc.AddRelocationInfo(ssa.FuncRef(i.u1), false)\n\t\t// Note that this is zero as a placeholder for the call target if it's a function value.\n\t\tc.Emit4Bytes(uint32(i.u2))\n\n\tcase callIndirect:\n\t\top := i.op1\n\n\t\tconst opcodeNum = 1\n\t\tconst opcode = 0xff\n\t\trex := rexInfo(0).clearW()\n\t\tswitch op.kind {\n\t\tcase operandKindReg:\n\t\t\tdst := regEncodings[op.reg().RealReg()]\n\t\t\tencodeRegReg(c,\n\t\t\t\tlegacyPrefixesNone,\n\t\t\t\topcode, opcodeNum,\n\t\t\t\tregEnc(2),\n\t\t\t\tdst,\n\t\t\t\trex,\n\t\t\t)\n\t\tcase operandKindMem:\n\t\t\tm := op.addressMode()\n\t\t\tencodeRegMem(c,\n\t\t\t\tlegacyPrefixesNone,\n\t\t\t\topcode, opcodeNum,\n\t\t\t\tregEnc(2),\n\t\t\t\tm,\n\t\t\t\trex,\n\t\t\t)\n\t\tdefault:\n\t\t\tpanic(\"BUG: invalid operand kind\")\n\t\t}\n\n\tcase tailCall:\n\t\t// Encode as jmp.\n\t\tc.EmitByte(0xe9)\n\t\t// Meaning that the call target is a function value, and requires relocation.\n\t\tc.AddRelocationInfo(ssa.FuncRef(i.u1), true)\n\t\t// Note that this is zero as a placeholder for the call target if it's a function value.\n\t\tc.Emit4Bytes(uint32(i.u2))\n\n\tcase tailCallIndirect:\n\t\top := i.op1\n\n\t\tconst opcodeNum = 1\n\t\tconst opcode = 0xff\n\t\tconst regMemSubOpcode = 4\n\t\trex := rexInfo(0).clearW()\n\t\tswitch op.kind {\n\t\t// Indirect tail calls always take a register as the target.\n\t\t// Note: the register should be a callee-saved register (usually r11).\n\t\tcase operandKindReg:\n\t\t\tdst := regEncodings[op.reg().RealReg()]\n\t\t\tencodeRegReg(c,\n\t\t\t\tlegacyPrefixesNone,\n\t\t\t\topcode, opcodeNum,\n\t\t\t\tregMemSubOpcode,\n\t\t\t\tdst,\n\t\t\t\trex,\n\t\t\t)\n\t\tdefault:\n\t\t\tpanic(\"BUG: invalid operand kind\")\n\t\t}\n\n\tcase xchg:\n\t\tsrc, dst := regEncodings[i.op1.reg().RealReg()], i.op2\n\t\tsize := i.u1\n\n\t\tvar rex rexInfo\n\t\tvar opcode uint32\n\t\tlp := legacyPrefixesNone\n\t\tswitch size {\n\t\tcase 8:\n\t\t\topcode = 0x87\n\t\t\trex = rexInfo(0).setW()\n\t\tcase 4:\n\t\t\topcode = 0x87\n\t\t\trex = rexInfo(0).clearW()\n\t\tcase 2:\n\t\t\tlp = legacyPrefixes0x66\n\t\t\topcode = 0x87\n\t\t\trex = rexInfo(0).clearW()\n\t\tcase 1:\n\t\t\topcode = 0x86\n\t\t\tif i.op2.kind == operandKindReg {\n\t\t\t\tpanic(\"TODO?: xchg on two 1-byte registers\")\n\t\t\t}\n\t\t\t// Some destinations must be encoded with REX.R = 1.\n\t\t\tif e := src.encoding(); e >= 4 && e <= 7 {\n\t\t\t\trex = rexInfo(0).always()\n\t\t\t}\n\t\tdefault:\n\t\t\tpanic(fmt.Sprintf(\"BUG: invalid size %d: %s\", size, i.String()))\n\t\t}\n\n\t\tswitch dst.kind {\n\t\tcase operandKindMem:\n\t\t\tm := dst.addressMode()\n\t\t\tencodeRegMem(c, lp, opcode, 1, src, m, rex)\n\t\tcase operandKindReg:\n\t\t\tr := dst.reg().RealReg()\n\t\t\tencodeRegReg(c, lp, opcode, 1, src, regEncodings[r], rex)\n\t\tdefault:\n\t\t\tpanic(\"BUG: invalid operand kind\")\n\t\t}\n\n\tcase lockcmpxchg:\n\t\tsrc, dst := regEncodings[i.op1.reg().RealReg()], i.op2\n\t\tsize := i.u1\n\n\t\tvar rex rexInfo\n\t\tvar opcode uint32\n\t\tlp := legacyPrefixes0xF0 // Lock prefix.\n\t\tswitch size {\n\t\tcase 8:\n\t\t\topcode = 0x0FB1\n\t\t\trex = rexInfo(0).setW()\n\t\tcase 4:\n\t\t\topcode = 0x0FB1\n\t\t\trex = rexInfo(0).clearW()\n\t\tcase 2:\n\t\t\tlp = legacyPrefixes0x660xF0 // Legacy prefix + Lock prefix.\n\t\t\topcode = 0x0FB1\n\t\t\trex = rexInfo(0).clearW()\n\t\tcase 1:\n\t\t\topcode = 0x0FB0\n\t\t\t// Some destinations must be encoded with REX.R = 1.\n\t\t\tif e := src.encoding(); e >= 4 && e <= 7 {\n\t\t\t\trex = rexInfo(0).always()\n\t\t\t}\n\t\tdefault:\n\t\t\tpanic(fmt.Sprintf(\"BUG: invalid size %d: %s\", size, i.String()))\n\t\t}\n\n\t\tswitch dst.kind {\n\t\tcase operandKindMem:\n\t\t\tm := dst.addressMode()\n\t\t\tencodeRegMem(c, lp, opcode, 2, src, m, rex)\n\t\tdefault:\n\t\t\tpanic(\"BUG: invalid operand kind\")\n\t\t}\n\n\tcase lockxadd:\n\t\tsrc, dst := regEncodings[i.op1.reg().RealReg()], i.op2\n\t\tsize := i.u1\n\n\t\tvar rex rexInfo\n\t\tvar opcode uint32\n\t\tlp := legacyPrefixes0xF0 // Lock prefix.\n\t\tswitch size {\n\t\tcase 8:\n\t\t\topcode = 0x0FC1\n\t\t\trex = rexInfo(0).setW()\n\t\tcase 4:\n\t\t\topcode = 0x0FC1\n\t\t\trex = rexInfo(0).clearW()\n\t\tcase 2:\n\t\t\tlp = legacyPrefixes0x660xF0 // Legacy prefix + Lock prefix.\n\t\t\topcode = 0x0FC1\n\t\t\trex = rexInfo(0).clearW()\n\t\tcase 1:\n\t\t\topcode = 0x0FC0\n\t\t\t// Some destinations must be encoded with REX.R = 1.\n\t\t\tif e := src.encoding(); e >= 4 && e <= 7 {\n\t\t\t\trex = rexInfo(0).always()\n\t\t\t}\n\t\tdefault:\n\t\t\tpanic(fmt.Sprintf(\"BUG: invalid size %d: %s\", size, i.String()))\n\t\t}\n\n\t\tswitch dst.kind {\n\t\tcase operandKindMem:\n\t\t\tm := dst.addressMode()\n\t\t\tencodeRegMem(c, lp, opcode, 2, src, m, rex)\n\t\tdefault:\n\t\t\tpanic(\"BUG: invalid operand kind\")\n\t\t}\n\n\tcase zeros:\n\t\tr := i.op2.reg()\n\t\tif r.RegType() == regalloc.RegTypeInt {\n\t\t\ti.asAluRmiR(aluRmiROpcodeXor, newOperandReg(r), r, true)\n\t\t} else {\n\t\t\ti.asXmmRmR(sseOpcodePxor, newOperandReg(r), r)\n\t\t}\n\t\ti.encode(c)\n\n\tcase mfence:\n\t\t// https://www.felixcloutier.com/x86/mfence\n\t\tc.EmitByte(0x0f)\n\t\tc.EmitByte(0xae)\n\t\tc.EmitByte(0xf0)\n\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"TODO: %v\", i.kind))\n\t}\n\treturn\n}\n\nfunc encodeLoad64(c backend.Compiler, m *amode, rd regalloc.RealReg) {\n\tdst := regEncodings[rd]\n\tencodeRegMem(c, legacyPrefixesNone, 0x8b, 1, dst, m, rexInfo(0).setW())\n}\n\nfunc encodeRet(c backend.Compiler) {\n\tc.EmitByte(0xc3)\n}\n\nfunc encodeEncEnc(\n\tc backend.Compiler,\n\tlegPrefixes legacyPrefixes,\n\topcodes uint32,\n\topcodeNum uint32,\n\tr uint8,\n\trm uint8,\n\trex rexInfo,\n) {\n\tlegPrefixes.encode(c)\n\trex.encode(c, r>>3, rm>>3)\n\n\tfor opcodeNum > 0 {\n\t\topcodeNum--\n\t\tc.EmitByte(byte((opcodes >> (opcodeNum << 3)) & 0xff))\n\t}\n\tc.EmitByte(encodeModRM(3, r&7, rm&7))\n}\n\nfunc encodeRegReg(\n\tc backend.Compiler,\n\tlegPrefixes legacyPrefixes,\n\topcodes uint32,\n\topcodeNum uint32,\n\tr regEnc,\n\trm regEnc,\n\trex rexInfo,\n) {\n\tencodeEncEnc(c, legPrefixes, opcodes, opcodeNum, uint8(r), uint8(rm), rex)\n}\n\nfunc encodeModRM(mod byte, reg byte, rm byte) byte {\n\treturn mod<<6 | reg<<3 | rm\n}\n\nfunc encodeSIB(shift byte, encIndex byte, encBase byte) byte {\n\treturn shift<<6 | encIndex<<3 | encBase\n}\n\nfunc encodeRegMem(\n\tc backend.Compiler, legPrefixes legacyPrefixes, opcodes uint32, opcodeNum uint32, r regEnc, m *amode, rex rexInfo,\n) (needsLabelResolution bool) {\n\tneedsLabelResolution = encodeEncMem(c, legPrefixes, opcodes, opcodeNum, uint8(r), m, rex)\n\treturn\n}\n\nfunc encodeEncMem(\n\tc backend.Compiler, legPrefixes legacyPrefixes, opcodes uint32, opcodeNum uint32, r uint8, m *amode, rex rexInfo,\n) (needsLabelResolution bool) {\n\tlegPrefixes.encode(c)\n\n\tconst (\n\t\tmodNoDisplacement    = 0b00\n\t\tmodShortDisplacement = 0b01\n\t\tmodLongDisplacement  = 0b10\n\n\t\tuseSBI = 4 // the encoding of rsp or r12 register.\n\t)\n\n\tswitch m.kind() {\n\tcase amodeImmReg, amodeImmRBP:\n\t\tbase := m.base.RealReg()\n\t\tbaseEnc := regEncodings[base]\n\n\t\trex.encode(c, regRexBit(r), baseEnc.rexBit())\n\n\t\tfor opcodeNum > 0 {\n\t\t\topcodeNum--\n\t\t\tc.EmitByte(byte((opcodes >> (opcodeNum << 3)) & 0xff))\n\t\t}\n\n\t\t// SIB byte is the last byte of the memory encoding before the displacement\n\t\tconst sibByte = 0x24 // == encodeSIB(0, 4, 4)\n\n\t\timmZero, baseRbp, baseR13 := m.imm32 == 0, base == rbp, base == r13\n\t\tshort := lower8willSignExtendTo32(m.imm32)\n\t\trspOrR12 := base == rsp || base == r12\n\n\t\tif immZero && !baseRbp && !baseR13 { // rbp or r13 can't be used as base for without displacement encoding.\n\t\t\tc.EmitByte(encodeModRM(modNoDisplacement, regEncoding(r), baseEnc.encoding()))\n\t\t\tif rspOrR12 {\n\t\t\t\tc.EmitByte(sibByte)\n\t\t\t}\n\t\t} else if short { // Note: this includes the case where m.imm32 == 0 && base == rbp || base == r13.\n\t\t\tc.EmitByte(encodeModRM(modShortDisplacement, regEncoding(r), baseEnc.encoding()))\n\t\t\tif rspOrR12 {\n\t\t\t\tc.EmitByte(sibByte)\n\t\t\t}\n\t\t\tc.EmitByte(byte(m.imm32))\n\t\t} else {\n\t\t\tc.EmitByte(encodeModRM(modLongDisplacement, regEncoding(r), baseEnc.encoding()))\n\t\t\tif rspOrR12 {\n\t\t\t\tc.EmitByte(sibByte)\n\t\t\t}\n\t\t\tc.Emit4Bytes(m.imm32)\n\t\t}\n\n\tcase amodeRegRegShift:\n\t\tbase := m.base.RealReg()\n\t\tbaseEnc := regEncodings[base]\n\t\tindex := m.index.RealReg()\n\t\tindexEnc := regEncodings[index]\n\n\t\tif index == rsp {\n\t\t\tpanic(\"BUG: rsp can't be used as index of addressing mode\")\n\t\t}\n\n\t\trex.encodeForIndex(c, regEnc(r), indexEnc, baseEnc)\n\n\t\tfor opcodeNum > 0 {\n\t\t\topcodeNum--\n\t\t\tc.EmitByte(byte((opcodes >> (opcodeNum << 3)) & 0xff))\n\t\t}\n\n\t\timmZero, baseRbp, baseR13 := m.imm32 == 0, base == rbp, base == r13\n\t\tif immZero && !baseRbp && !baseR13 { // rbp or r13 can't be used as base for without displacement encoding. (curious why? because it's interpreted as RIP relative addressing).\n\t\t\tc.EmitByte(encodeModRM(modNoDisplacement, regEncoding(r), useSBI))\n\t\t\tc.EmitByte(encodeSIB(m.shift(), indexEnc.encoding(), baseEnc.encoding()))\n\t\t} else if lower8willSignExtendTo32(m.imm32) {\n\t\t\tc.EmitByte(encodeModRM(modShortDisplacement, regEncoding(r), useSBI))\n\t\t\tc.EmitByte(encodeSIB(m.shift(), indexEnc.encoding(), baseEnc.encoding()))\n\t\t\tc.EmitByte(byte(m.imm32))\n\t\t} else {\n\t\t\tc.EmitByte(encodeModRM(modLongDisplacement, regEncoding(r), useSBI))\n\t\t\tc.EmitByte(encodeSIB(m.shift(), indexEnc.encoding(), baseEnc.encoding()))\n\t\t\tc.Emit4Bytes(m.imm32)\n\t\t}\n\n\tcase amodeRipRel:\n\t\trex.encode(c, regRexBit(r), 0)\n\t\tfor opcodeNum > 0 {\n\t\t\topcodeNum--\n\t\t\tc.EmitByte(byte((opcodes >> (opcodeNum << 3)) & 0xff))\n\t\t}\n\n\t\t// Indicate \"LEAQ [RIP + 32bit displacement].\n\t\t// https://wiki.osdev.org/X86-64_Instruction_Encoding#32.2F64-bit_addressing\n\t\tc.EmitByte(encodeModRM(0b00, regEncoding(r), 0b101))\n\n\t\t// This will be resolved later, so we just emit a placeholder.\n\t\tneedsLabelResolution = true\n\t\tc.Emit4Bytes(0)\n\n\tdefault:\n\t\tpanic(\"BUG: invalid addressing mode\")\n\t}\n\treturn\n}\n\nconst (\n\trexEncodingDefault byte = 0x40\n\trexEncodingW            = rexEncodingDefault | 0x08\n)\n\n// rexInfo is a bit set to indicate:\n//\n//\t0x01: W bit must be cleared.\n//\t0x02: REX prefix must be emitted.\ntype rexInfo byte\n\nfunc (ri rexInfo) setW() rexInfo {\n\treturn ri | 0x01\n}\n\nfunc (ri rexInfo) clearW() rexInfo {\n\treturn ri & 0x02\n}\n\nfunc (ri rexInfo) always() rexInfo {\n\treturn ri | 0x02\n}\n\nfunc (ri rexInfo) notAlways() rexInfo { //nolint\n\treturn ri & 0x01\n}\n\nfunc (ri rexInfo) encode(c backend.Compiler, r uint8, b uint8) {\n\tvar w byte = 0\n\tif ri&0x01 != 0 {\n\t\tw = 0x01\n\t}\n\trex := rexEncodingDefault | w<<3 | r<<2 | b\n\tif rex != rexEncodingDefault || ri&0x02 != 0 {\n\t\tc.EmitByte(rex)\n\t}\n}\n\nfunc (ri rexInfo) encodeForIndex(c backend.Compiler, encR regEnc, encIndex regEnc, encBase regEnc) {\n\tvar w byte = 0\n\tif ri&0x01 != 0 {\n\t\tw = 0x01\n\t}\n\tr := encR.rexBit()\n\tx := encIndex.rexBit()\n\tb := encBase.rexBit()\n\trex := byte(0x40) | w<<3 | r<<2 | x<<1 | b\n\tif rex != 0x40 || ri&0x02 != 0 {\n\t\tc.EmitByte(rex)\n\t}\n}\n\ntype regEnc byte\n\nfunc (r regEnc) rexBit() byte {\n\treturn regRexBit(byte(r))\n}\n\nfunc (r regEnc) encoding() byte {\n\treturn regEncoding(byte(r))\n}\n\nfunc regRexBit(r byte) byte {\n\treturn r >> 3\n}\n\nfunc regEncoding(r byte) byte {\n\treturn r & 0x07\n}\n\nvar regEncodings = [...]regEnc{\n\trax:   0b000,\n\trcx:   0b001,\n\trdx:   0b010,\n\trbx:   0b011,\n\trsp:   0b100,\n\trbp:   0b101,\n\trsi:   0b110,\n\trdi:   0b111,\n\tr8:    0b1000,\n\tr9:    0b1001,\n\tr10:   0b1010,\n\tr11:   0b1011,\n\tr12:   0b1100,\n\tr13:   0b1101,\n\tr14:   0b1110,\n\tr15:   0b1111,\n\txmm0:  0b000,\n\txmm1:  0b001,\n\txmm2:  0b010,\n\txmm3:  0b011,\n\txmm4:  0b100,\n\txmm5:  0b101,\n\txmm6:  0b110,\n\txmm7:  0b111,\n\txmm8:  0b1000,\n\txmm9:  0b1001,\n\txmm10: 0b1010,\n\txmm11: 0b1011,\n\txmm12: 0b1100,\n\txmm13: 0b1101,\n\txmm14: 0b1110,\n\txmm15: 0b1111,\n}\n\ntype legacyPrefixes byte\n\nconst (\n\tlegacyPrefixesNone legacyPrefixes = iota\n\tlegacyPrefixes0x66\n\tlegacyPrefixes0xF0\n\tlegacyPrefixes0x660xF0\n\tlegacyPrefixes0xF2\n\tlegacyPrefixes0xF3\n)\n\nfunc (p legacyPrefixes) encode(c backend.Compiler) {\n\tswitch p {\n\tcase legacyPrefixesNone:\n\tcase legacyPrefixes0x66:\n\t\tc.EmitByte(0x66)\n\tcase legacyPrefixes0xF0:\n\t\tc.EmitByte(0xf0)\n\tcase legacyPrefixes0x660xF0:\n\t\tc.EmitByte(0x66)\n\t\tc.EmitByte(0xf0)\n\tcase legacyPrefixes0xF2:\n\t\tc.EmitByte(0xf2)\n\tcase legacyPrefixes0xF3:\n\t\tc.EmitByte(0xf3)\n\tdefault:\n\t\tpanic(\"BUG: invalid legacy prefix\")\n\t}\n}\n\nfunc lower32willSignExtendTo64(x uint64) bool {\n\txs := int64(x)\n\treturn xs == int64(uint64(int32(xs)))\n}\n\nfunc lower8willSignExtendTo32(x uint32) bool {\n\txs := int32(x)\n\treturn xs == ((xs << 24) >> 24)\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/amd64/lower_constant.go",
    "content": "package amd64\n\nimport (\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/backend/regalloc\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/ssa\"\n)\n\n// lowerConstant allocates a new VReg and inserts the instruction to load the constant value.\nfunc (m *machine) lowerConstant(instr *ssa.Instruction) (vr regalloc.VReg) {\n\tval := instr.Return()\n\tvalType := val.Type()\n\n\tvr = m.c.AllocateVReg(valType)\n\tm.insertLoadConstant(instr, vr)\n\treturn\n}\n\n// InsertLoadConstantBlockArg implements backend.Machine.\nfunc (m *machine) InsertLoadConstantBlockArg(instr *ssa.Instruction, vr regalloc.VReg) {\n\tm.insertLoadConstant(instr, vr)\n}\n\nfunc (m *machine) insertLoadConstant(instr *ssa.Instruction, vr regalloc.VReg) {\n\tval := instr.Return()\n\tvalType := val.Type()\n\tv := instr.ConstantVal()\n\n\tbits := valType.Bits()\n\tif bits < 64 { // Clear the redundant bits just in case it's unexpectedly sign-extended, etc.\n\t\tv = v & ((1 << valType.Bits()) - 1)\n\t}\n\n\tswitch valType {\n\tcase ssa.TypeF32, ssa.TypeF64:\n\t\tm.lowerFconst(vr, v, bits == 64)\n\tcase ssa.TypeI32, ssa.TypeI64:\n\t\tm.lowerIconst(vr, v, bits == 64)\n\tdefault:\n\t\tpanic(\"BUG\")\n\t}\n}\n\nfunc (m *machine) lowerFconst(dst regalloc.VReg, c uint64, _64 bool) {\n\tif c == 0 {\n\t\txor := m.allocateInstr().asZeros(dst)\n\t\tm.insert(xor)\n\t} else {\n\t\tvar tmpType ssa.Type\n\t\tif _64 {\n\t\t\ttmpType = ssa.TypeI64\n\t\t} else {\n\t\t\ttmpType = ssa.TypeI32\n\t\t}\n\t\ttmpInt := m.c.AllocateVReg(tmpType)\n\t\tloadToGP := m.allocateInstr().asImm(tmpInt, c, _64)\n\t\tm.insert(loadToGP)\n\n\t\tmovToXmm := m.allocateInstr().asGprToXmm(sseOpcodeMovq, newOperandReg(tmpInt), dst, _64)\n\t\tm.insert(movToXmm)\n\t}\n}\n\nfunc (m *machine) lowerIconst(dst regalloc.VReg, c uint64, _64 bool) {\n\ti := m.allocateInstr()\n\tif c == 0 {\n\t\ti.asZeros(dst)\n\t} else {\n\t\ti.asImm(dst, c, _64)\n\t}\n\tm.insert(i)\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/amd64/lower_mem.go",
    "content": "package amd64\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/backend\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/backend/regalloc\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/ssa\"\n)\n\nvar addendsMatchOpcodes = [...]ssa.Opcode{ssa.OpcodeUExtend, ssa.OpcodeSExtend, ssa.OpcodeIadd, ssa.OpcodeIconst, ssa.OpcodeIshl}\n\ntype addend struct {\n\tr     regalloc.VReg\n\toff   int64\n\tshift byte\n}\n\nfunc (a addend) String() string {\n\treturn fmt.Sprintf(\"addend{r=%s, off=%d, shift=%d}\", a.r, a.off, a.shift)\n}\n\n// lowerToAddressMode converts a pointer to an addressMode that can be used as an operand for load/store instructions.\nfunc (m *machine) lowerToAddressMode(ptr ssa.Value, offsetBase uint32) (am *amode) {\n\tdef := m.c.ValueDefinition(ptr)\n\n\tif offsetBase&0x80000000 != 0 {\n\t\t// Special casing the huge base offset whose MSB is set. In x64, the immediate is always\n\t\t// sign-extended, but our IR semantics requires the offset base is always unsigned.\n\t\t// Note that this should be extremely rare or even this shouldn't hit in the real application,\n\t\t// therefore we don't need to optimize this case in my opinion.\n\n\t\ta := m.lowerAddend(def)\n\t\toff64 := a.off + int64(offsetBase)\n\t\toffsetBaseReg := m.c.AllocateVReg(ssa.TypeI64)\n\t\tm.lowerIconst(offsetBaseReg, uint64(off64), true)\n\t\tif a.r != regalloc.VRegInvalid {\n\t\t\treturn m.newAmodeRegRegShift(0, offsetBaseReg, a.r, a.shift)\n\t\t} else {\n\t\t\treturn m.newAmodeImmReg(0, offsetBaseReg)\n\t\t}\n\t}\n\n\tif op := m.c.MatchInstrOneOf(def, addendsMatchOpcodes[:]); op == ssa.OpcodeIadd {\n\t\tadd := def.Instr\n\t\tx, y := add.Arg2()\n\t\txDef, yDef := m.c.ValueDefinition(x), m.c.ValueDefinition(y)\n\t\tax := m.lowerAddend(xDef)\n\t\tay := m.lowerAddend(yDef)\n\t\tadd.MarkLowered()\n\t\treturn m.lowerAddendsToAmode(ax, ay, offsetBase)\n\t} else {\n\t\t// If it is not an Iadd, then we lower the one addend.\n\t\ta := m.lowerAddend(def)\n\t\t// off is always 0 if r is valid.\n\t\tif a.r != regalloc.VRegInvalid {\n\t\t\tif a.shift != 0 {\n\t\t\t\ttmpReg := m.c.AllocateVReg(ssa.TypeI64)\n\t\t\t\tm.lowerIconst(tmpReg, 0, true)\n\t\t\t\treturn m.newAmodeRegRegShift(offsetBase, tmpReg, a.r, a.shift)\n\t\t\t}\n\t\t\treturn m.newAmodeImmReg(offsetBase, a.r)\n\t\t} else {\n\t\t\toff64 := a.off + int64(offsetBase)\n\t\t\ttmpReg := m.c.AllocateVReg(ssa.TypeI64)\n\t\t\tm.lowerIconst(tmpReg, uint64(off64), true)\n\t\t\treturn m.newAmodeImmReg(0, tmpReg)\n\t\t}\n\t}\n}\n\nfunc (m *machine) lowerAddendsToAmode(x, y addend, offBase uint32) *amode {\n\tif x.r != regalloc.VRegInvalid && x.off != 0 || y.r != regalloc.VRegInvalid && y.off != 0 {\n\t\tpanic(\"invalid input\")\n\t}\n\n\tu64 := uint64(x.off+y.off) + uint64(offBase)\n\tif u64 != 0 {\n\t\tif _, ok := asImm32(u64, false); !ok {\n\t\t\ttmpReg := m.c.AllocateVReg(ssa.TypeI64)\n\t\t\tm.lowerIconst(tmpReg, u64, true)\n\t\t\t// Blank u64 as it has been already lowered.\n\t\t\tu64 = 0\n\n\t\t\tif x.r == regalloc.VRegInvalid {\n\t\t\t\tx.r = tmpReg\n\t\t\t} else if y.r == regalloc.VRegInvalid {\n\t\t\t\ty.r = tmpReg\n\t\t\t} else {\n\t\t\t\t// We already know that either rx or ry is invalid,\n\t\t\t\t// so we overwrite it with the temporary register.\n\t\t\t\tpanic(\"BUG\")\n\t\t\t}\n\t\t}\n\t}\n\n\tu32 := uint32(u64)\n\tswitch {\n\t// We assume rx, ry are valid iff offx, offy are 0.\n\tcase x.r != regalloc.VRegInvalid && y.r != regalloc.VRegInvalid:\n\t\tswitch {\n\t\tcase x.shift != 0 && y.shift != 0:\n\t\t\t// Cannot absorb two shifted registers, must lower one to a shift instruction.\n\t\t\tshifted := m.allocateInstr()\n\t\t\tshifted.asShiftR(shiftROpShiftLeft, newOperandImm32(uint32(x.shift)), x.r, true)\n\t\t\tm.insert(shifted)\n\n\t\t\treturn m.newAmodeRegRegShift(u32, x.r, y.r, y.shift)\n\t\tcase x.shift != 0 && y.shift == 0:\n\t\t\t// Swap base and index.\n\t\t\tx, y = y, x\n\t\t\tfallthrough\n\t\tdefault:\n\t\t\treturn m.newAmodeRegRegShift(u32, x.r, y.r, y.shift)\n\t\t}\n\tcase x.r == regalloc.VRegInvalid && y.r != regalloc.VRegInvalid:\n\t\tx, y = y, x\n\t\tfallthrough\n\tcase x.r != regalloc.VRegInvalid && y.r == regalloc.VRegInvalid:\n\t\tif x.shift != 0 {\n\t\t\tzero := m.c.AllocateVReg(ssa.TypeI64)\n\t\t\tm.lowerIconst(zero, 0, true)\n\t\t\treturn m.newAmodeRegRegShift(u32, zero, x.r, x.shift)\n\t\t}\n\t\treturn m.newAmodeImmReg(u32, x.r)\n\tdefault: // Both are invalid: use the offset.\n\t\ttmpReg := m.c.AllocateVReg(ssa.TypeI64)\n\t\tm.lowerIconst(tmpReg, u64, true)\n\t\treturn m.newAmodeImmReg(0, tmpReg)\n\t}\n}\n\nfunc (m *machine) lowerAddend(x backend.SSAValueDefinition) addend {\n\tif !x.IsFromInstr() {\n\t\treturn addend{m.c.VRegOf(x.V), 0, 0}\n\t}\n\t// Ensure the addend is not referenced in multiple places; we will discard nested Iadds.\n\top := m.c.MatchInstrOneOf(x, addendsMatchOpcodes[:])\n\tif op != ssa.OpcodeInvalid && op != ssa.OpcodeIadd {\n\t\treturn m.lowerAddendFromInstr(x.Instr)\n\t}\n\tp := m.getOperand_Reg(x)\n\treturn addend{p.reg(), 0, 0}\n}\n\n// lowerAddendFromInstr takes an instruction returns a Vreg and an offset that can be used in an address mode.\n// The Vreg is regalloc.VRegInvalid if the addend cannot be lowered to a register.\n// The offset is 0 if the addend can be lowered to a register.\nfunc (m *machine) lowerAddendFromInstr(instr *ssa.Instruction) addend {\n\tinstr.MarkLowered()\n\tswitch op := instr.Opcode(); op {\n\tcase ssa.OpcodeIconst:\n\t\tu64 := instr.ConstantVal()\n\t\tif instr.Return().Type().Bits() == 32 {\n\t\t\treturn addend{regalloc.VRegInvalid, int64(int32(u64)), 0} // sign-extend.\n\t\t} else {\n\t\t\treturn addend{regalloc.VRegInvalid, int64(u64), 0}\n\t\t}\n\tcase ssa.OpcodeUExtend, ssa.OpcodeSExtend:\n\t\tinput := instr.Arg()\n\t\tinputDef := m.c.ValueDefinition(input)\n\t\tif input.Type().Bits() != 32 {\n\t\t\tpanic(\"BUG: invalid input type \" + input.Type().String())\n\t\t}\n\t\tconstInst := inputDef.IsFromInstr() && inputDef.Instr.Constant()\n\t\tswitch {\n\t\tcase constInst && op == ssa.OpcodeSExtend:\n\t\t\treturn addend{regalloc.VRegInvalid, int64(uint32(inputDef.Instr.ConstantVal())), 0}\n\t\tcase constInst && op == ssa.OpcodeUExtend:\n\t\t\treturn addend{regalloc.VRegInvalid, int64(int32(inputDef.Instr.ConstantVal())), 0} // sign-extend!\n\t\tdefault:\n\t\t\tr := m.getOperand_Reg(inputDef)\n\t\t\treturn addend{r.reg(), 0, 0}\n\t\t}\n\tcase ssa.OpcodeIshl:\n\t\t// If the addend is a shift, we can only handle it if the shift amount is a constant.\n\t\tx, amount := instr.Arg2()\n\t\tamountDef := m.c.ValueDefinition(amount)\n\t\tif amountDef.IsFromInstr() && amountDef.Instr.Constant() && amountDef.Instr.ConstantVal() <= 3 {\n\t\t\tr := m.getOperand_Reg(m.c.ValueDefinition(x))\n\t\t\treturn addend{r.reg(), 0, uint8(amountDef.Instr.ConstantVal())}\n\t\t}\n\t\tr := m.getOperand_Reg(m.c.ValueDefinition(x))\n\t\treturn addend{r.reg(), 0, 0}\n\t}\n\tpanic(\"BUG: invalid opcode\")\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/amd64/machine.go",
    "content": "package amd64\n\nimport (\n\t\"context\"\n\t\"encoding/binary\"\n\t\"fmt\"\n\t\"math\"\n\t\"strings\"\n\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/backend\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/backend/regalloc\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/ssa\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi\"\n\t\"github.com/tetratelabs/wazero/internal/platform\"\n)\n\n// NewBackend returns a new backend for arm64.\nfunc NewBackend() backend.Machine {\n\tm := &machine{\n\t\tcpuFeatures:                         platform.CpuFeatures(),\n\t\tregAlloc:                            regalloc.NewAllocator[*instruction, *labelPosition, *regAllocFn](regInfo),\n\t\tspillSlots:                          map[regalloc.VRegID]int64{},\n\t\tamodePool:                           wazevoapi.NewPool[amode](nil),\n\t\tlabelPositionPool:                   wazevoapi.NewIDedPool[labelPosition](resetLabelPosition),\n\t\tinstrPool:                           wazevoapi.NewPool[instruction](resetInstruction),\n\t\tconstSwizzleMaskConstIndex:          -1,\n\t\tconstSqmulRoundSatIndex:             -1,\n\t\tconstI8x16SHLMaskTableIndex:         -1,\n\t\tconstI8x16LogicalSHRMaskTableIndex:  -1,\n\t\tconstF64x2CvtFromIMaskIndex:         -1,\n\t\tconstTwop52Index:                    -1,\n\t\tconstI32sMaxOnF64x2Index:            -1,\n\t\tconstI32uMaxOnF64x2Index:            -1,\n\t\tconstAllOnesI8x16Index:              -1,\n\t\tconstAllOnesI16x8Index:              -1,\n\t\tconstExtAddPairwiseI16x8uMask1Index: -1,\n\t\tconstExtAddPairwiseI16x8uMask2Index: -1,\n\t}\n\tm.regAllocFn.m = m\n\treturn m\n}\n\ntype (\n\t// machine implements backend.Machine for amd64.\n\tmachine struct {\n\t\tc                        backend.Compiler\n\t\tstackBoundsCheckDisabled bool\n\n\t\tinstrPool wazevoapi.Pool[instruction]\n\t\tamodePool wazevoapi.Pool[amode]\n\n\t\tcpuFeatures platform.CpuFeatureFlags\n\n\t\tregAlloc        regalloc.Allocator[*instruction, *labelPosition, *regAllocFn]\n\t\tregAllocFn      regAllocFn\n\t\tregAllocStarted bool\n\n\t\t// labelPositionPool is the pool of labelPosition. The id is the label where\n\t\t// if the label is less than the maxSSABlockID, it's the ssa.BasicBlockID.\n\t\tlabelPositionPool wazevoapi.IDedPool[labelPosition]\n\t\t// nextLabel is the next label to be allocated. The first free label comes after maxSSABlockID\n\t\t// so that we can have an identical label for the SSA block ID, which is useful for debugging.\n\t\tnextLabel label\n\t\t// rootInstr is the first instruction of the function.\n\t\trootInstr *instruction\n\t\t// currentLabelPos is the currently-compiled ssa.BasicBlock's labelPosition.\n\t\tcurrentLabelPos *labelPosition\n\t\t// orderedSSABlockLabelPos is the ordered list of labelPosition in the generated code for each ssa.BasicBlock.\n\t\torderedSSABlockLabelPos []*labelPosition\n\t\t// returnLabelPos is the labelPosition for the return block.\n\t\treturnLabelPos labelPosition\n\t\t// perBlockHead and perBlockEnd are the head and tail of the instruction list per currently-compiled ssa.BasicBlock.\n\t\tperBlockHead, perBlockEnd *instruction\n\t\t// pendingInstructions are the instructions which are not yet emitted into the instruction list.\n\t\tpendingInstructions []*instruction\n\t\t// maxSSABlockID is the maximum ssa.BasicBlockID in the current function.\n\t\tmaxSSABlockID label\n\n\t\tspillSlotSize int64\n\t\tspillSlots    map[regalloc.VRegID]int64\n\t\tcurrentABI    *backend.FunctionABI\n\t\tclobberedRegs []regalloc.VReg\n\n\t\tmaxRequiredStackSizeForCalls int64\n\n\t\tlabelResolutionPends []labelResolutionPend\n\n\t\t// jmpTableTargets holds the labels of the jump table targets.\n\t\tjmpTableTargets [][]uint32\n\t\t// jmpTableTargetNext is the index to the jmpTableTargets slice to be used for the next jump table.\n\t\tjmpTableTargetsNext int\n\t\tconsts              []_const\n\n\t\tconstSwizzleMaskConstIndex, constSqmulRoundSatIndex,\n\t\tconstI8x16SHLMaskTableIndex, constI8x16LogicalSHRMaskTableIndex,\n\t\tconstF64x2CvtFromIMaskIndex, constTwop52Index,\n\t\tconstI32sMaxOnF64x2Index, constI32uMaxOnF64x2Index,\n\t\tconstAllOnesI8x16Index, constAllOnesI16x8Index,\n\t\tconstExtAddPairwiseI16x8uMask1Index, constExtAddPairwiseI16x8uMask2Index int\n\t}\n\n\t_const struct {\n\t\tlo, hi   uint64\n\t\t_var     []byte\n\t\tlabel    label\n\t\tlabelPos *labelPosition\n\t}\n\n\tlabelResolutionPend struct {\n\t\tinstr       *instruction\n\t\tinstrOffset int64\n\t\t// imm32Offset is the offset of the last 4 bytes of the instruction.\n\t\timm32Offset int64\n\t}\n)\n\ntype (\n\t// label represents a position in the generated code which is either\n\t// a real instruction or the constant InstructionPool (e.g. jump tables).\n\t//\n\t// This is exactly the same as the traditional \"label\" in assembly code.\n\tlabel uint32\n\n\t// labelPosition represents the regions of the generated code which the label represents.\n\t// This implements regalloc.Block.\n\tlabelPosition struct {\n\t\t// sb is not nil if this corresponds to a ssa.BasicBlock.\n\t\tsb ssa.BasicBlock\n\t\t// cur is used to walk through the instructions in the block during the register allocation.\n\t\tcur,\n\t\t// begin and end are the first and last instructions of the block.\n\t\tbegin, end *instruction\n\t\t// binaryOffset is the offset in the binary where the label is located.\n\t\tbinaryOffset int64\n\t}\n)\n\n// String implements backend.Machine.\nfunc (l label) String() string {\n\treturn fmt.Sprintf(\"L%d\", l)\n}\n\nfunc resetLabelPosition(l *labelPosition) {\n\t*l = labelPosition{}\n}\n\nconst labelReturn = math.MaxUint32\n\nfunc ssaBlockLabel(sb ssa.BasicBlock) label {\n\tif sb.ReturnBlock() {\n\t\treturn labelReturn\n\t}\n\treturn label(sb.ID())\n}\n\n// getOrAllocateSSABlockLabelPosition returns the labelPosition for the given basic block.\nfunc (m *machine) getOrAllocateSSABlockLabelPosition(sb ssa.BasicBlock) *labelPosition {\n\tif sb.ReturnBlock() {\n\t\tm.returnLabelPos.sb = sb\n\t\treturn &m.returnLabelPos\n\t}\n\n\tl := ssaBlockLabel(sb)\n\tpos := m.labelPositionPool.GetOrAllocate(int(l))\n\tpos.sb = sb\n\treturn pos\n}\n\nfunc (m *machine) getOrAllocateConstLabel(i *int, _var []byte) label {\n\tindex := *i\n\tif index == -1 {\n\t\tl, pos := m.allocateLabel()\n\t\tindex = len(m.consts)\n\t\tm.consts = append(m.consts, _const{\n\t\t\t_var:     _var,\n\t\t\tlabel:    l,\n\t\t\tlabelPos: pos,\n\t\t})\n\t\t*i = index\n\t}\n\treturn m.consts[index].label\n}\n\n// Reset implements backend.Machine.\nfunc (m *machine) Reset() {\n\tm.consts = m.consts[:0]\n\tm.clobberedRegs = m.clobberedRegs[:0]\n\tfor key := range m.spillSlots {\n\t\tm.clobberedRegs = append(m.clobberedRegs, regalloc.VReg(key))\n\t}\n\tfor _, key := range m.clobberedRegs {\n\t\tdelete(m.spillSlots, regalloc.VRegID(key))\n\t}\n\n\tm.stackBoundsCheckDisabled = false\n\tm.regAlloc.Reset()\n\tm.labelPositionPool.Reset()\n\tm.instrPool.Reset()\n\tm.regAllocStarted = false\n\tm.clobberedRegs = m.clobberedRegs[:0]\n\n\tm.spillSlotSize = 0\n\tm.maxRequiredStackSizeForCalls = 0\n\tm.perBlockHead, m.perBlockEnd, m.rootInstr = nil, nil, nil\n\tm.pendingInstructions = m.pendingInstructions[:0]\n\tm.orderedSSABlockLabelPos = m.orderedSSABlockLabelPos[:0]\n\n\tm.amodePool.Reset()\n\tm.jmpTableTargetsNext = 0\n\tm.constSwizzleMaskConstIndex = -1\n\tm.constSqmulRoundSatIndex = -1\n\tm.constI8x16SHLMaskTableIndex = -1\n\tm.constI8x16LogicalSHRMaskTableIndex = -1\n\tm.constF64x2CvtFromIMaskIndex = -1\n\tm.constTwop52Index = -1\n\tm.constI32sMaxOnF64x2Index = -1\n\tm.constI32uMaxOnF64x2Index = -1\n\tm.constAllOnesI8x16Index = -1\n\tm.constAllOnesI16x8Index = -1\n\tm.constExtAddPairwiseI16x8uMask1Index = -1\n\tm.constExtAddPairwiseI16x8uMask2Index = -1\n}\n\n// StartLoweringFunction implements backend.Machine StartLoweringFunction.\nfunc (m *machine) StartLoweringFunction(maxBlockID ssa.BasicBlockID) {\n\tm.maxSSABlockID = label(maxBlockID)\n\tm.nextLabel = label(maxBlockID) + 1\n}\n\n// LinkAdjacentBlocks implements backend.Machine.\nfunc (m *machine) LinkAdjacentBlocks(prev, next ssa.BasicBlock) {\n\tprevPos, nextPos := m.getOrAllocateSSABlockLabelPosition(prev), m.getOrAllocateSSABlockLabelPosition(next)\n\tprevPos.end.next = nextPos.begin\n}\n\n// StartBlock implements backend.Machine.\nfunc (m *machine) StartBlock(blk ssa.BasicBlock) {\n\tm.currentLabelPos = m.getOrAllocateSSABlockLabelPosition(blk)\n\tlabelPos := m.currentLabelPos\n\tend := m.allocateNop()\n\tm.perBlockHead, m.perBlockEnd = end, end\n\tlabelPos.begin, labelPos.end = end, end\n\tm.orderedSSABlockLabelPos = append(m.orderedSSABlockLabelPos, labelPos)\n}\n\n// EndBlock implements ExecutableContext.\nfunc (m *machine) EndBlock() {\n\t// Insert nop0 as the head of the block for convenience to simplify the logic of inserting instructions.\n\tm.insertAtPerBlockHead(m.allocateNop())\n\n\tm.currentLabelPos.begin = m.perBlockHead\n\n\tif m.currentLabelPos.sb.EntryBlock() {\n\t\tm.rootInstr = m.perBlockHead\n\t}\n}\n\nfunc (m *machine) insertAtPerBlockHead(i *instruction) {\n\tif m.perBlockHead == nil {\n\t\tm.perBlockHead = i\n\t\tm.perBlockEnd = i\n\t\treturn\n\t}\n\n\ti.next = m.perBlockHead\n\tm.perBlockHead.prev = i\n\tm.perBlockHead = i\n}\n\n// FlushPendingInstructions implements backend.Machine.\nfunc (m *machine) FlushPendingInstructions() {\n\tl := len(m.pendingInstructions)\n\tif l == 0 {\n\t\treturn\n\t}\n\tfor i := l - 1; i >= 0; i-- { // reverse because we lower instructions in reverse order.\n\t\tm.insertAtPerBlockHead(m.pendingInstructions[i])\n\t}\n\tm.pendingInstructions = m.pendingInstructions[:0]\n}\n\n// DisableStackCheck implements backend.Machine.\nfunc (m *machine) DisableStackCheck() { m.stackBoundsCheckDisabled = true }\n\n// SetCompiler implements backend.Machine.\nfunc (m *machine) SetCompiler(c backend.Compiler) {\n\tm.c = c\n\tm.regAllocFn.ssaB = c.SSABuilder()\n}\n\n// SetCurrentABI implements backend.Machine.\nfunc (m *machine) SetCurrentABI(abi *backend.FunctionABI) { m.currentABI = abi }\n\n// RegAlloc implements backend.Machine.\nfunc (m *machine) RegAlloc() {\n\trf := m.regAllocFn\n\tm.regAllocStarted = true\n\tm.regAlloc.DoAllocation(&rf)\n\t// Now that we know the final spill slot size, we must align spillSlotSize to 16 bytes.\n\tm.spillSlotSize = (m.spillSlotSize + 15) &^ 15\n}\n\n// InsertReturn implements backend.Machine.\nfunc (m *machine) InsertReturn() {\n\ti := m.allocateInstr().asRet()\n\tm.insert(i)\n}\n\n// LowerSingleBranch implements backend.Machine.\nfunc (m *machine) LowerSingleBranch(b *ssa.Instruction) {\n\tswitch b.Opcode() {\n\tcase ssa.OpcodeJump:\n\t\t_, _, targetBlkID := b.BranchData()\n\t\tif b.IsFallthroughJump() {\n\t\t\treturn\n\t\t}\n\t\tjmp := m.allocateInstr()\n\t\ttarget := ssaBlockLabel(m.c.SSABuilder().BasicBlock(targetBlkID))\n\t\tif target == labelReturn {\n\t\t\tjmp.asRet()\n\t\t} else {\n\t\t\tjmp.asJmp(newOperandLabel(target))\n\t\t}\n\t\tm.insert(jmp)\n\tcase ssa.OpcodeBrTable:\n\t\tindex, targetBlkIDs := b.BrTableData()\n\t\tm.lowerBrTable(index, targetBlkIDs)\n\tdefault:\n\t\tpanic(\"BUG: unexpected branch opcode\" + b.Opcode().String())\n\t}\n}\n\nfunc (m *machine) addJmpTableTarget(targets ssa.Values) (index int) {\n\tif m.jmpTableTargetsNext == len(m.jmpTableTargets) {\n\t\tm.jmpTableTargets = append(m.jmpTableTargets, make([]uint32, 0, len(targets.View())))\n\t}\n\n\tindex = m.jmpTableTargetsNext\n\tm.jmpTableTargetsNext++\n\tm.jmpTableTargets[index] = m.jmpTableTargets[index][:0]\n\tfor _, targetBlockID := range targets.View() {\n\t\ttarget := m.c.SSABuilder().BasicBlock(ssa.BasicBlockID(targetBlockID))\n\t\tm.jmpTableTargets[index] = append(m.jmpTableTargets[index], uint32(ssaBlockLabel(target)))\n\t}\n\treturn\n}\n\nvar condBranchMatches = [...]ssa.Opcode{ssa.OpcodeIcmp, ssa.OpcodeFcmp}\n\nfunc (m *machine) lowerBrTable(index ssa.Value, targets ssa.Values) {\n\t_v := m.getOperand_Reg(m.c.ValueDefinition(index))\n\tv := m.copyToTmp(_v.reg())\n\n\ttargetCount := len(targets.View())\n\n\t// First, we need to do the bounds check.\n\tmaxIndex := m.c.AllocateVReg(ssa.TypeI32)\n\tm.lowerIconst(maxIndex, uint64(targetCount-1), false)\n\tcmp := m.allocateInstr().asCmpRmiR(true, newOperandReg(maxIndex), v, false)\n\tm.insert(cmp)\n\n\t// Then do the conditional move maxIndex to v if v > maxIndex.\n\tcmov := m.allocateInstr().asCmove(condNB, newOperandReg(maxIndex), v, false)\n\tm.insert(cmov)\n\n\t// Now that v has the correct index. Load the address of the jump table into the addr.\n\taddr := m.c.AllocateVReg(ssa.TypeI64)\n\tleaJmpTableAddr := m.allocateInstr()\n\tm.insert(leaJmpTableAddr)\n\n\t// Then add the target's offset into jmpTableAddr.\n\tloadTargetOffsetFromJmpTable := m.allocateInstr().asAluRmiR(aluRmiROpcodeAdd,\n\t\t// Shift by 3 because each entry is 8 bytes.\n\t\tnewOperandMem(m.newAmodeRegRegShift(0, addr, v, 3)), addr, true)\n\tm.insert(loadTargetOffsetFromJmpTable)\n\n\t// Now ready to jump.\n\tjmp := m.allocateInstr().asJmp(newOperandReg(addr))\n\tm.insert(jmp)\n\n\tjmpTableBegin, jmpTableBeginLabel := m.allocateBrTarget()\n\tm.insert(jmpTableBegin)\n\tleaJmpTableAddr.asLEA(newOperandLabel(jmpTableBeginLabel), addr)\n\n\tjmpTable := m.allocateInstr()\n\ttargetSliceIndex := m.addJmpTableTarget(targets)\n\tjmpTable.asJmpTableSequence(targetSliceIndex, targetCount)\n\tm.insert(jmpTable)\n}\n\n// LowerConditionalBranch implements backend.Machine.\nfunc (m *machine) LowerConditionalBranch(b *ssa.Instruction) {\n\tcval, args, targetBlkID := b.BranchData()\n\tif len(args) > 0 {\n\t\tpanic(fmt.Sprintf(\n\t\t\t\"conditional branch shouldn't have args; likely a bug in critical edge splitting: from %s to %s\",\n\t\t\tm.currentLabelPos.sb,\n\t\t\ttargetBlkID,\n\t\t))\n\t}\n\n\ttarget := ssaBlockLabel(m.c.SSABuilder().BasicBlock(targetBlkID))\n\tcvalDef := m.c.ValueDefinition(cval)\n\n\tswitch m.c.MatchInstrOneOf(cvalDef, condBranchMatches[:]) {\n\tcase ssa.OpcodeIcmp:\n\t\tcvalInstr := cvalDef.Instr\n\t\tx, y, c := cvalInstr.IcmpData()\n\n\t\tcc := condFromSSAIntCmpCond(c)\n\t\tif b.Opcode() == ssa.OpcodeBrz {\n\t\t\tcc = cc.invert()\n\t\t}\n\n\t\t// First, perform the comparison and set the flag.\n\t\txd, yd := m.c.ValueDefinition(x), m.c.ValueDefinition(y)\n\t\tif !m.tryLowerBandToFlag(xd, yd) {\n\t\t\tm.lowerIcmpToFlag(xd, yd, x.Type() == ssa.TypeI64)\n\t\t}\n\n\t\t// Then perform the conditional branch.\n\t\tm.insert(m.allocateInstr().asJmpIf(cc, newOperandLabel(target)))\n\t\tcvalDef.Instr.MarkLowered()\n\tcase ssa.OpcodeFcmp:\n\t\tcvalInstr := cvalDef.Instr\n\n\t\tf1, f2, and := m.lowerFcmpToFlags(cvalInstr)\n\t\tisBrz := b.Opcode() == ssa.OpcodeBrz\n\t\tif isBrz {\n\t\t\tf1 = f1.invert()\n\t\t}\n\t\tif f2 == condInvalid {\n\t\t\tm.insert(m.allocateInstr().asJmpIf(f1, newOperandLabel(target)))\n\t\t} else {\n\t\t\tif isBrz {\n\t\t\t\tf2 = f2.invert()\n\t\t\t\tand = !and\n\t\t\t}\n\t\t\tjmp1, jmp2 := m.allocateInstr(), m.allocateInstr()\n\t\t\tm.insert(jmp1)\n\t\t\tm.insert(jmp2)\n\t\t\tnotTaken, notTakenLabel := m.allocateBrTarget()\n\t\t\tm.insert(notTaken)\n\t\t\tif and {\n\t\t\t\tjmp1.asJmpIf(f1.invert(), newOperandLabel(notTakenLabel))\n\t\t\t\tjmp2.asJmpIf(f2, newOperandLabel(target))\n\t\t\t} else {\n\t\t\t\tjmp1.asJmpIf(f1, newOperandLabel(target))\n\t\t\t\tjmp2.asJmpIf(f2, newOperandLabel(target))\n\t\t\t}\n\t\t}\n\n\t\tcvalDef.Instr.MarkLowered()\n\tdefault:\n\t\tv := m.getOperand_Reg(cvalDef)\n\n\t\tvar cc cond\n\t\tif b.Opcode() == ssa.OpcodeBrz {\n\t\t\tcc = condZ\n\t\t} else {\n\t\t\tcc = condNZ\n\t\t}\n\n\t\t// Perform test %v, %v to set the flag.\n\t\tcmp := m.allocateInstr().asCmpRmiR(false, v, v.reg(), false)\n\t\tm.insert(cmp)\n\t\tm.insert(m.allocateInstr().asJmpIf(cc, newOperandLabel(target)))\n\t}\n}\n\n// LowerInstr implements backend.Machine.\nfunc (m *machine) LowerInstr(instr *ssa.Instruction) {\n\tif l := instr.SourceOffset(); l.Valid() {\n\t\tinfo := m.allocateInstr().asEmitSourceOffsetInfo(l)\n\t\tm.insert(info)\n\t}\n\n\tswitch op := instr.Opcode(); op {\n\tcase ssa.OpcodeBrz, ssa.OpcodeBrnz, ssa.OpcodeJump, ssa.OpcodeBrTable:\n\t\tpanic(\"BUG: branching instructions are handled by LowerBranches\")\n\tcase ssa.OpcodeReturn:\n\t\tpanic(\"BUG: return must be handled by backend.Compiler\")\n\tcase ssa.OpcodeIconst, ssa.OpcodeF32const, ssa.OpcodeF64const: // Constant instructions are inlined.\n\tcase ssa.OpcodeCall, ssa.OpcodeCallIndirect:\n\t\tm.lowerCall(instr)\n\tcase ssa.OpcodeStore, ssa.OpcodeIstore8, ssa.OpcodeIstore16, ssa.OpcodeIstore32:\n\t\tm.lowerStore(instr)\n\tcase ssa.OpcodeIadd:\n\t\tm.lowerAluRmiROp(instr, aluRmiROpcodeAdd)\n\tcase ssa.OpcodeIsub:\n\t\tm.lowerAluRmiROp(instr, aluRmiROpcodeSub)\n\tcase ssa.OpcodeImul:\n\t\tm.lowerAluRmiROp(instr, aluRmiROpcodeMul)\n\tcase ssa.OpcodeSdiv, ssa.OpcodeUdiv, ssa.OpcodeSrem, ssa.OpcodeUrem:\n\t\tisDiv := op == ssa.OpcodeSdiv || op == ssa.OpcodeUdiv\n\t\tisSigned := op == ssa.OpcodeSdiv || op == ssa.OpcodeSrem\n\t\tm.lowerIDivRem(instr, isDiv, isSigned)\n\tcase ssa.OpcodeBand:\n\t\tm.lowerAluRmiROp(instr, aluRmiROpcodeAnd)\n\tcase ssa.OpcodeBor:\n\t\tm.lowerAluRmiROp(instr, aluRmiROpcodeOr)\n\tcase ssa.OpcodeBxor:\n\t\tm.lowerAluRmiROp(instr, aluRmiROpcodeXor)\n\tcase ssa.OpcodeIshl:\n\t\tm.lowerShiftR(instr, shiftROpShiftLeft)\n\tcase ssa.OpcodeSshr:\n\t\tm.lowerShiftR(instr, shiftROpShiftRightArithmetic)\n\tcase ssa.OpcodeUshr:\n\t\tm.lowerShiftR(instr, shiftROpShiftRightLogical)\n\tcase ssa.OpcodeRotl:\n\t\tm.lowerShiftR(instr, shiftROpRotateLeft)\n\tcase ssa.OpcodeRotr:\n\t\tm.lowerShiftR(instr, shiftROpRotateRight)\n\tcase ssa.OpcodeClz:\n\t\tm.lowerClz(instr)\n\tcase ssa.OpcodeCtz:\n\t\tm.lowerCtz(instr)\n\tcase ssa.OpcodePopcnt:\n\t\tm.lowerUnaryRmR(instr, unaryRmROpcodePopcnt)\n\tcase ssa.OpcodeFadd, ssa.OpcodeFsub, ssa.OpcodeFmul, ssa.OpcodeFdiv:\n\t\tm.lowerXmmRmR(instr)\n\tcase ssa.OpcodeFabs:\n\t\tm.lowerFabsFneg(instr)\n\tcase ssa.OpcodeFneg:\n\t\tm.lowerFabsFneg(instr)\n\tcase ssa.OpcodeCeil:\n\t\tm.lowerRound(instr, roundingModeUp)\n\tcase ssa.OpcodeFloor:\n\t\tm.lowerRound(instr, roundingModeDown)\n\tcase ssa.OpcodeTrunc:\n\t\tm.lowerRound(instr, roundingModeZero)\n\tcase ssa.OpcodeNearest:\n\t\tm.lowerRound(instr, roundingModeNearest)\n\tcase ssa.OpcodeFmin, ssa.OpcodeFmax:\n\t\tm.lowerFminFmax(instr)\n\tcase ssa.OpcodeFcopysign:\n\t\tm.lowerFcopysign(instr)\n\tcase ssa.OpcodeBitcast:\n\t\tm.lowerBitcast(instr)\n\tcase ssa.OpcodeSqrt:\n\t\tm.lowerSqrt(instr)\n\tcase ssa.OpcodeFpromote:\n\t\tv := instr.Arg()\n\t\trn := m.getOperand_Reg(m.c.ValueDefinition(v))\n\t\trd := m.c.VRegOf(instr.Return())\n\t\tcnt := m.allocateInstr()\n\t\tcnt.asXmmUnaryRmR(sseOpcodeCvtss2sd, rn, rd)\n\t\tm.insert(cnt)\n\tcase ssa.OpcodeFdemote:\n\t\tv := instr.Arg()\n\t\trn := m.getOperand_Reg(m.c.ValueDefinition(v))\n\t\trd := m.c.VRegOf(instr.Return())\n\t\tcnt := m.allocateInstr()\n\t\tcnt.asXmmUnaryRmR(sseOpcodeCvtsd2ss, rn, rd)\n\t\tm.insert(cnt)\n\tcase ssa.OpcodeFcvtToSint, ssa.OpcodeFcvtToSintSat:\n\t\tx, ctx := instr.Arg2()\n\t\trn := m.getOperand_Reg(m.c.ValueDefinition(x))\n\t\trd := m.c.VRegOf(instr.Return())\n\t\tctxVReg := m.c.VRegOf(ctx)\n\t\tm.lowerFcvtToSint(ctxVReg, rn.reg(), rd, x.Type() == ssa.TypeF64,\n\t\t\tinstr.Return().Type().Bits() == 64, op == ssa.OpcodeFcvtToSintSat)\n\tcase ssa.OpcodeFcvtToUint, ssa.OpcodeFcvtToUintSat:\n\t\tx, ctx := instr.Arg2()\n\t\trn := m.getOperand_Reg(m.c.ValueDefinition(x))\n\t\trd := m.c.VRegOf(instr.Return())\n\t\tctxVReg := m.c.VRegOf(ctx)\n\t\tm.lowerFcvtToUint(ctxVReg, rn.reg(), rd, x.Type() == ssa.TypeF64,\n\t\t\tinstr.Return().Type().Bits() == 64, op == ssa.OpcodeFcvtToUintSat)\n\tcase ssa.OpcodeFcvtFromSint:\n\t\tx := instr.Arg()\n\t\trn := m.getOperand_Reg(m.c.ValueDefinition(x))\n\t\trd := newOperandReg(m.c.VRegOf(instr.Return()))\n\t\tm.lowerFcvtFromSint(rn, rd,\n\t\t\tx.Type() == ssa.TypeI64, instr.Return().Type().Bits() == 64)\n\tcase ssa.OpcodeFcvtFromUint:\n\t\tx := instr.Arg()\n\t\trn := m.getOperand_Reg(m.c.ValueDefinition(x))\n\t\trd := newOperandReg(m.c.VRegOf(instr.Return()))\n\t\tm.lowerFcvtFromUint(rn, rd, x.Type() == ssa.TypeI64,\n\t\t\tinstr.Return().Type().Bits() == 64)\n\tcase ssa.OpcodeVanyTrue:\n\t\tm.lowerVanyTrue(instr)\n\tcase ssa.OpcodeVallTrue:\n\t\tm.lowerVallTrue(instr)\n\tcase ssa.OpcodeVhighBits:\n\t\tm.lowerVhighBits(instr)\n\tcase ssa.OpcodeVbnot:\n\t\tm.lowerVbnot(instr)\n\tcase ssa.OpcodeVband:\n\t\tx, y := instr.Arg2()\n\t\tm.lowerVbBinOp(sseOpcodePand, x, y, instr.Return())\n\tcase ssa.OpcodeVbor:\n\t\tx, y := instr.Arg2()\n\t\tm.lowerVbBinOp(sseOpcodePor, x, y, instr.Return())\n\tcase ssa.OpcodeVbxor:\n\t\tx, y := instr.Arg2()\n\t\tm.lowerVbBinOp(sseOpcodePxor, x, y, instr.Return())\n\tcase ssa.OpcodeVbandnot:\n\t\tm.lowerVbandnot(instr, sseOpcodePandn)\n\tcase ssa.OpcodeVbitselect:\n\t\tm.lowerVbitselect(instr)\n\tcase ssa.OpcodeVIadd:\n\t\tx, y, lane := instr.Arg2WithLane()\n\t\tvar vecOp sseOpcode\n\t\tswitch lane {\n\t\tcase ssa.VecLaneI8x16:\n\t\t\tvecOp = sseOpcodePaddb\n\t\tcase ssa.VecLaneI16x8:\n\t\t\tvecOp = sseOpcodePaddw\n\t\tcase ssa.VecLaneI32x4:\n\t\t\tvecOp = sseOpcodePaddd\n\t\tcase ssa.VecLaneI64x2:\n\t\t\tvecOp = sseOpcodePaddq\n\t\t}\n\t\tm.lowerVbBinOp(vecOp, x, y, instr.Return())\n\n\tcase ssa.OpcodeVSaddSat:\n\t\tx, y, lane := instr.Arg2WithLane()\n\t\tvar vecOp sseOpcode\n\t\tswitch lane {\n\t\tcase ssa.VecLaneI8x16:\n\t\t\tvecOp = sseOpcodePaddsb\n\t\tcase ssa.VecLaneI16x8:\n\t\t\tvecOp = sseOpcodePaddsw\n\t\t}\n\t\tm.lowerVbBinOp(vecOp, x, y, instr.Return())\n\n\tcase ssa.OpcodeVUaddSat:\n\t\tx, y, lane := instr.Arg2WithLane()\n\t\tvar vecOp sseOpcode\n\t\tswitch lane {\n\t\tcase ssa.VecLaneI8x16:\n\t\t\tvecOp = sseOpcodePaddusb\n\t\tcase ssa.VecLaneI16x8:\n\t\t\tvecOp = sseOpcodePaddusw\n\t\t}\n\t\tm.lowerVbBinOp(vecOp, x, y, instr.Return())\n\n\tcase ssa.OpcodeVIsub:\n\t\tx, y, lane := instr.Arg2WithLane()\n\t\tvar vecOp sseOpcode\n\t\tswitch lane {\n\t\tcase ssa.VecLaneI8x16:\n\t\t\tvecOp = sseOpcodePsubb\n\t\tcase ssa.VecLaneI16x8:\n\t\t\tvecOp = sseOpcodePsubw\n\t\tcase ssa.VecLaneI32x4:\n\t\t\tvecOp = sseOpcodePsubd\n\t\tcase ssa.VecLaneI64x2:\n\t\t\tvecOp = sseOpcodePsubq\n\t\t}\n\t\tm.lowerVbBinOp(vecOp, x, y, instr.Return())\n\n\tcase ssa.OpcodeVSsubSat:\n\t\tx, y, lane := instr.Arg2WithLane()\n\t\tvar vecOp sseOpcode\n\t\tswitch lane {\n\t\tcase ssa.VecLaneI8x16:\n\t\t\tvecOp = sseOpcodePsubsb\n\t\tcase ssa.VecLaneI16x8:\n\t\t\tvecOp = sseOpcodePsubsw\n\t\t}\n\t\tm.lowerVbBinOp(vecOp, x, y, instr.Return())\n\n\tcase ssa.OpcodeVUsubSat:\n\t\tx, y, lane := instr.Arg2WithLane()\n\t\tvar vecOp sseOpcode\n\t\tswitch lane {\n\t\tcase ssa.VecLaneI8x16:\n\t\t\tvecOp = sseOpcodePsubusb\n\t\tcase ssa.VecLaneI16x8:\n\t\t\tvecOp = sseOpcodePsubusw\n\t\t}\n\t\tm.lowerVbBinOp(vecOp, x, y, instr.Return())\n\n\tcase ssa.OpcodeVImul:\n\t\tm.lowerVImul(instr)\n\tcase ssa.OpcodeVIneg:\n\t\tx, lane := instr.ArgWithLane()\n\t\trn := m.getOperand_Reg(m.c.ValueDefinition(x))\n\t\trd := m.c.VRegOf(instr.Return())\n\t\tvar vecOp sseOpcode\n\t\tswitch lane {\n\t\tcase ssa.VecLaneI8x16:\n\t\t\tvecOp = sseOpcodePsubb\n\t\tcase ssa.VecLaneI16x8:\n\t\t\tvecOp = sseOpcodePsubw\n\t\tcase ssa.VecLaneI32x4:\n\t\t\tvecOp = sseOpcodePsubd\n\t\tcase ssa.VecLaneI64x2:\n\t\t\tvecOp = sseOpcodePsubq\n\t\tdefault:\n\t\t\tpanic(\"BUG\")\n\t\t}\n\n\t\ttmp := m.c.AllocateVReg(ssa.TypeV128)\n\t\tm.insert(m.allocateInstr().asZeros(tmp))\n\n\t\ti := m.allocateInstr()\n\t\ti.asXmmRmR(vecOp, rn, tmp)\n\t\tm.insert(i)\n\n\t\tm.copyTo(tmp, rd)\n\tcase ssa.OpcodeVFadd:\n\t\tx, y, lane := instr.Arg2WithLane()\n\t\tvar vecOp sseOpcode\n\t\tswitch lane {\n\t\tcase ssa.VecLaneF32x4:\n\t\t\tvecOp = sseOpcodeAddps\n\t\tcase ssa.VecLaneF64x2:\n\t\t\tvecOp = sseOpcodeAddpd\n\t\t}\n\t\tm.lowerVbBinOp(vecOp, x, y, instr.Return())\n\n\tcase ssa.OpcodeVFsub:\n\t\tx, y, lane := instr.Arg2WithLane()\n\t\tvar vecOp sseOpcode\n\t\tswitch lane {\n\t\tcase ssa.VecLaneF32x4:\n\t\t\tvecOp = sseOpcodeSubps\n\t\tcase ssa.VecLaneF64x2:\n\t\t\tvecOp = sseOpcodeSubpd\n\t\t}\n\t\tm.lowerVbBinOp(vecOp, x, y, instr.Return())\n\n\tcase ssa.OpcodeVFdiv:\n\t\tx, y, lane := instr.Arg2WithLane()\n\t\tvar vecOp sseOpcode\n\t\tswitch lane {\n\t\tcase ssa.VecLaneF32x4:\n\t\t\tvecOp = sseOpcodeDivps\n\t\tcase ssa.VecLaneF64x2:\n\t\t\tvecOp = sseOpcodeDivpd\n\t\t}\n\t\tm.lowerVbBinOp(vecOp, x, y, instr.Return())\n\n\tcase ssa.OpcodeVFmul:\n\t\tx, y, lane := instr.Arg2WithLane()\n\t\tvar vecOp sseOpcode\n\t\tswitch lane {\n\t\tcase ssa.VecLaneF32x4:\n\t\t\tvecOp = sseOpcodeMulps\n\t\tcase ssa.VecLaneF64x2:\n\t\t\tvecOp = sseOpcodeMulpd\n\t\t}\n\t\tm.lowerVbBinOp(vecOp, x, y, instr.Return())\n\n\tcase ssa.OpcodeVFneg:\n\t\tx, lane := instr.ArgWithLane()\n\t\trn := m.getOperand_Reg(m.c.ValueDefinition(x))\n\t\trd := m.c.VRegOf(instr.Return())\n\n\t\ttmp := m.c.AllocateVReg(ssa.TypeV128)\n\n\t\tvar shiftOp, xorOp sseOpcode\n\t\tvar shiftAmt uint32\n\t\tswitch lane {\n\t\tcase ssa.VecLaneF32x4:\n\t\t\tshiftOp, shiftAmt, xorOp = sseOpcodePslld, 31, sseOpcodeXorps\n\t\tcase ssa.VecLaneF64x2:\n\t\t\tshiftOp, shiftAmt, xorOp = sseOpcodePsllq, 63, sseOpcodeXorpd\n\t\t}\n\n\t\tzero := m.allocateInstr()\n\t\tzero.asZeros(tmp)\n\t\tm.insert(zero)\n\n\t\t// Set all bits on tmp by CMPPD with arg=0 (== pseudo CMPEQPD instruction).\n\t\t// See https://www.felixcloutier.com/x86/cmpps\n\t\t//\n\t\t// Note: if we do not clear all the bits ^ with XORPS, this might end up not setting ones on some lane\n\t\t// if the lane is NaN.\n\t\tcmp := m.allocateInstr()\n\t\tcmp.asXmmRmRImm(sseOpcodeCmppd, uint8(cmpPredEQ_UQ), newOperandReg(tmp), tmp)\n\t\tm.insert(cmp)\n\n\t\t// Do the left shift on each lane to set only the most significant bit in each.\n\t\ti := m.allocateInstr()\n\t\ti.asXmmRmiReg(shiftOp, newOperandImm32(shiftAmt), tmp)\n\t\tm.insert(i)\n\n\t\t// Get the negated result by XOR on each lane with tmp.\n\t\ti = m.allocateInstr()\n\t\ti.asXmmRmR(xorOp, rn, tmp)\n\t\tm.insert(i)\n\n\t\tm.copyTo(tmp, rd)\n\n\tcase ssa.OpcodeVSqrt:\n\t\tx, lane := instr.ArgWithLane()\n\t\trn := m.getOperand_Reg(m.c.ValueDefinition(x))\n\t\trd := m.c.VRegOf(instr.Return())\n\n\t\tvar vecOp sseOpcode\n\t\tswitch lane {\n\t\tcase ssa.VecLaneF32x4:\n\t\t\tvecOp = sseOpcodeSqrtps\n\t\tcase ssa.VecLaneF64x2:\n\t\t\tvecOp = sseOpcodeSqrtpd\n\t\t}\n\t\ti := m.allocateInstr()\n\t\ti.asXmmUnaryRmR(vecOp, rn, rd)\n\t\tm.insert(i)\n\n\tcase ssa.OpcodeVImin:\n\t\tx, y, lane := instr.Arg2WithLane()\n\t\tvar vecOp sseOpcode\n\t\tswitch lane {\n\t\tcase ssa.VecLaneI8x16:\n\t\t\tvecOp = sseOpcodePminsb\n\t\tcase ssa.VecLaneI16x8:\n\t\t\tvecOp = sseOpcodePminsw\n\t\tcase ssa.VecLaneI32x4:\n\t\t\tvecOp = sseOpcodePminsd\n\t\t}\n\t\tm.lowerVbBinOp(vecOp, x, y, instr.Return())\n\n\tcase ssa.OpcodeVUmin:\n\t\tx, y, lane := instr.Arg2WithLane()\n\t\tvar vecOp sseOpcode\n\t\tswitch lane {\n\t\tcase ssa.VecLaneI8x16:\n\t\t\tvecOp = sseOpcodePminub\n\t\tcase ssa.VecLaneI16x8:\n\t\t\tvecOp = sseOpcodePminuw\n\t\tcase ssa.VecLaneI32x4:\n\t\t\tvecOp = sseOpcodePminud\n\t\t}\n\t\tm.lowerVbBinOp(vecOp, x, y, instr.Return())\n\n\tcase ssa.OpcodeVImax:\n\t\tx, y, lane := instr.Arg2WithLane()\n\t\tvar vecOp sseOpcode\n\t\tswitch lane {\n\t\tcase ssa.VecLaneI8x16:\n\t\t\tvecOp = sseOpcodePmaxsb\n\t\tcase ssa.VecLaneI16x8:\n\t\t\tvecOp = sseOpcodePmaxsw\n\t\tcase ssa.VecLaneI32x4:\n\t\t\tvecOp = sseOpcodePmaxsd\n\t\t}\n\t\tm.lowerVbBinOp(vecOp, x, y, instr.Return())\n\n\tcase ssa.OpcodeVUmax:\n\t\tx, y, lane := instr.Arg2WithLane()\n\t\tvar vecOp sseOpcode\n\t\tswitch lane {\n\t\tcase ssa.VecLaneI8x16:\n\t\t\tvecOp = sseOpcodePmaxub\n\t\tcase ssa.VecLaneI16x8:\n\t\t\tvecOp = sseOpcodePmaxuw\n\t\tcase ssa.VecLaneI32x4:\n\t\t\tvecOp = sseOpcodePmaxud\n\t\t}\n\t\tm.lowerVbBinOp(vecOp, x, y, instr.Return())\n\n\tcase ssa.OpcodeVAvgRound:\n\t\tx, y, lane := instr.Arg2WithLane()\n\t\tvar vecOp sseOpcode\n\t\tswitch lane {\n\t\tcase ssa.VecLaneI8x16:\n\t\t\tvecOp = sseOpcodePavgb\n\t\tcase ssa.VecLaneI16x8:\n\t\t\tvecOp = sseOpcodePavgw\n\t\t}\n\t\tm.lowerVbBinOp(vecOp, x, y, instr.Return())\n\n\tcase ssa.OpcodeVIcmp:\n\t\tx, y, c, lane := instr.VIcmpData()\n\t\tm.lowerVIcmp(x, y, c, instr.Return(), lane)\n\n\tcase ssa.OpcodeVFcmp:\n\t\tx, y, c, lane := instr.VFcmpData()\n\t\tm.lowerVFcmp(x, y, c, instr.Return(), lane)\n\n\tcase ssa.OpcodeExtractlane:\n\t\tx, index, signed, lane := instr.ExtractlaneData()\n\t\tm.lowerExtractLane(x, index, signed, instr.Return(), lane)\n\n\tcase ssa.OpcodeInsertlane:\n\t\tx, y, index, lane := instr.InsertlaneData()\n\t\tm.lowerInsertLane(x, y, index, instr.Return(), lane)\n\n\tcase ssa.OpcodeSwizzle:\n\t\tx, y, _ := instr.Arg2WithLane()\n\t\tm.lowerSwizzle(x, y, instr.Return())\n\n\tcase ssa.OpcodeShuffle:\n\t\tx, y, lo, hi := instr.ShuffleData()\n\t\tm.lowerShuffle(x, y, lo, hi, instr.Return())\n\n\tcase ssa.OpcodeSplat:\n\t\tx, lane := instr.ArgWithLane()\n\t\tm.lowerSplat(x, instr.Return(), lane)\n\n\tcase ssa.OpcodeSqmulRoundSat:\n\t\tx, y := instr.Arg2()\n\t\tm.lowerSqmulRoundSat(x, y, instr.Return())\n\n\tcase ssa.OpcodeVZeroExtLoad:\n\t\tptr, offset, typ := instr.VZeroExtLoadData()\n\t\tvar sseOp sseOpcode\n\t\t// Both movss and movsd clears the higher bits of the destination register upt 128 bits.\n\t\t// https://www.felixcloutier.com/x86/movss\n\t\t// https://www.felixcloutier.com/x86/movsd\n\t\tif typ == ssa.TypeF32 {\n\t\t\tsseOp = sseOpcodeMovss\n\t\t} else {\n\t\t\tsseOp = sseOpcodeMovsd\n\t\t}\n\t\tmem := m.lowerToAddressMode(ptr, offset)\n\t\tdst := m.c.VRegOf(instr.Return())\n\t\tm.insert(m.allocateInstr().asXmmUnaryRmR(sseOp, newOperandMem(mem), dst))\n\n\tcase ssa.OpcodeVMinPseudo:\n\t\tx, y, lane := instr.Arg2WithLane()\n\t\tvar vecOp sseOpcode\n\t\tswitch lane {\n\t\tcase ssa.VecLaneF32x4:\n\t\t\tvecOp = sseOpcodeMinps\n\t\tcase ssa.VecLaneF64x2:\n\t\t\tvecOp = sseOpcodeMinpd\n\t\tdefault:\n\t\t\tpanic(\"BUG: unexpected lane type\")\n\t\t}\n\t\tm.lowerVbBinOpUnaligned(vecOp, y, x, instr.Return())\n\n\tcase ssa.OpcodeVMaxPseudo:\n\t\tx, y, lane := instr.Arg2WithLane()\n\t\tvar vecOp sseOpcode\n\t\tswitch lane {\n\t\tcase ssa.VecLaneF32x4:\n\t\t\tvecOp = sseOpcodeMaxps\n\t\tcase ssa.VecLaneF64x2:\n\t\t\tvecOp = sseOpcodeMaxpd\n\t\tdefault:\n\t\t\tpanic(\"BUG: unexpected lane type\")\n\t\t}\n\t\tm.lowerVbBinOpUnaligned(vecOp, y, x, instr.Return())\n\n\tcase ssa.OpcodeVIshl:\n\t\tx, y, lane := instr.Arg2WithLane()\n\t\tm.lowerVIshl(x, y, instr.Return(), lane)\n\n\tcase ssa.OpcodeVSshr:\n\t\tx, y, lane := instr.Arg2WithLane()\n\t\tm.lowerVSshr(x, y, instr.Return(), lane)\n\n\tcase ssa.OpcodeVUshr:\n\t\tx, y, lane := instr.Arg2WithLane()\n\t\tm.lowerVUshr(x, y, instr.Return(), lane)\n\n\tcase ssa.OpcodeVCeil:\n\t\tx, lane := instr.ArgWithLane()\n\t\tm.lowerVRound(x, instr.Return(), 0x2, lane == ssa.VecLaneF64x2)\n\n\tcase ssa.OpcodeVFloor:\n\t\tx, lane := instr.ArgWithLane()\n\t\tm.lowerVRound(x, instr.Return(), 0x1, lane == ssa.VecLaneF64x2)\n\n\tcase ssa.OpcodeVTrunc:\n\t\tx, lane := instr.ArgWithLane()\n\t\tm.lowerVRound(x, instr.Return(), 0x3, lane == ssa.VecLaneF64x2)\n\n\tcase ssa.OpcodeVNearest:\n\t\tx, lane := instr.ArgWithLane()\n\t\tm.lowerVRound(x, instr.Return(), 0x0, lane == ssa.VecLaneF64x2)\n\n\tcase ssa.OpcodeExtIaddPairwise:\n\t\tx, lane, signed := instr.ExtIaddPairwiseData()\n\t\tm.lowerExtIaddPairwise(x, instr.Return(), lane, signed)\n\n\tcase ssa.OpcodeUwidenLow, ssa.OpcodeSwidenLow:\n\t\tx, lane := instr.ArgWithLane()\n\t\tm.lowerWidenLow(x, instr.Return(), lane, op == ssa.OpcodeSwidenLow)\n\n\tcase ssa.OpcodeUwidenHigh, ssa.OpcodeSwidenHigh:\n\t\tx, lane := instr.ArgWithLane()\n\t\tm.lowerWidenHigh(x, instr.Return(), lane, op == ssa.OpcodeSwidenHigh)\n\n\tcase ssa.OpcodeLoadSplat:\n\t\tptr, offset, lane := instr.LoadSplatData()\n\t\tm.lowerLoadSplat(ptr, offset, instr.Return(), lane)\n\n\tcase ssa.OpcodeVFcvtFromUint, ssa.OpcodeVFcvtFromSint:\n\t\tx, lane := instr.ArgWithLane()\n\t\tm.lowerVFcvtFromInt(x, instr.Return(), lane, op == ssa.OpcodeVFcvtFromSint)\n\n\tcase ssa.OpcodeVFcvtToSintSat, ssa.OpcodeVFcvtToUintSat:\n\t\tx, lane := instr.ArgWithLane()\n\t\tm.lowerVFcvtToIntSat(x, instr.Return(), lane, op == ssa.OpcodeVFcvtToSintSat)\n\n\tcase ssa.OpcodeSnarrow, ssa.OpcodeUnarrow:\n\t\tx, y, lane := instr.Arg2WithLane()\n\t\tm.lowerNarrow(x, y, instr.Return(), lane, op == ssa.OpcodeSnarrow)\n\n\tcase ssa.OpcodeFvpromoteLow:\n\t\tx := instr.Arg()\n\t\tsrc := m.getOperand_Reg(m.c.ValueDefinition(x))\n\t\tdst := m.c.VRegOf(instr.Return())\n\t\tm.insert(m.allocateInstr().asXmmUnaryRmR(sseOpcodeCvtps2pd, src, dst))\n\n\tcase ssa.OpcodeFvdemote:\n\t\tx := instr.Arg()\n\t\tsrc := m.getOperand_Reg(m.c.ValueDefinition(x))\n\t\tdst := m.c.VRegOf(instr.Return())\n\t\tm.insert(m.allocateInstr().asXmmUnaryRmR(sseOpcodeCvtpd2ps, src, dst))\n\n\tcase ssa.OpcodeWideningPairwiseDotProductS:\n\t\tx, y := instr.Arg2()\n\t\tm.lowerWideningPairwiseDotProductS(x, y, instr.Return())\n\n\tcase ssa.OpcodeVIabs:\n\t\tm.lowerVIabs(instr)\n\tcase ssa.OpcodeVIpopcnt:\n\t\tm.lowerVIpopcnt(instr)\n\tcase ssa.OpcodeVFmin:\n\t\tm.lowerVFmin(instr)\n\tcase ssa.OpcodeVFmax:\n\t\tm.lowerVFmax(instr)\n\tcase ssa.OpcodeVFabs:\n\t\tm.lowerVFabs(instr)\n\tcase ssa.OpcodeUndefined:\n\t\tm.insert(m.allocateInstr().asUD2())\n\tcase ssa.OpcodeExitWithCode:\n\t\texecCtx, code := instr.ExitWithCodeData()\n\t\tm.lowerExitWithCode(m.c.VRegOf(execCtx), code)\n\tcase ssa.OpcodeExitIfTrueWithCode:\n\t\texecCtx, c, code := instr.ExitIfTrueWithCodeData()\n\t\tm.lowerExitIfTrueWithCode(m.c.VRegOf(execCtx), c, code)\n\tcase ssa.OpcodeLoad:\n\t\tptr, offset, typ := instr.LoadData()\n\t\tdst := m.c.VRegOf(instr.Return())\n\t\tm.lowerLoad(ptr, offset, typ, dst)\n\tcase ssa.OpcodeUload8, ssa.OpcodeUload16, ssa.OpcodeUload32, ssa.OpcodeSload8, ssa.OpcodeSload16, ssa.OpcodeSload32:\n\t\tptr, offset, _ := instr.LoadData()\n\t\tret := m.c.VRegOf(instr.Return())\n\t\tm.lowerExtLoad(op, ptr, offset, ret)\n\tcase ssa.OpcodeVconst:\n\t\tresult := m.c.VRegOf(instr.Return())\n\t\tlo, hi := instr.VconstData()\n\t\tm.lowerVconst(result, lo, hi)\n\tcase ssa.OpcodeSExtend, ssa.OpcodeUExtend:\n\t\tfrom, to, signed := instr.ExtendData()\n\t\tm.lowerExtend(instr.Arg(), instr.Return(), from, to, signed)\n\tcase ssa.OpcodeIcmp:\n\t\tm.lowerIcmp(instr)\n\tcase ssa.OpcodeFcmp:\n\t\tm.lowerFcmp(instr)\n\tcase ssa.OpcodeSelect:\n\t\tcval, x, y := instr.SelectData()\n\t\tm.lowerSelect(x, y, cval, instr.Return())\n\tcase ssa.OpcodeIreduce:\n\t\trn := m.getOperand_Mem_Reg(m.c.ValueDefinition(instr.Arg()))\n\t\tretVal := instr.Return()\n\t\trd := m.c.VRegOf(retVal)\n\n\t\tif retVal.Type() != ssa.TypeI32 {\n\t\t\tpanic(\"TODO?: Ireduce to non-i32\")\n\t\t}\n\t\tm.insert(m.allocateInstr().asMovzxRmR(extModeLQ, rn, rd))\n\n\tcase ssa.OpcodeAtomicLoad:\n\t\tptr := instr.Arg()\n\t\tsize := instr.AtomicTargetSize()\n\t\tdst := m.c.VRegOf(instr.Return())\n\n\t\t// At this point, the ptr is ensured to be aligned, so using a normal load is atomic.\n\t\t// https://github.com/golang/go/blob/adead1a93f472affa97c494ef19f2f492ee6f34a/src/runtime/internal/atomic/atomic_amd64.go#L30\n\t\tmem := newOperandMem(m.lowerToAddressMode(ptr, 0))\n\t\tload := m.allocateInstr()\n\t\tswitch size {\n\t\tcase 8:\n\t\t\tload.asMov64MR(mem, dst)\n\t\tcase 4:\n\t\t\tload.asMovzxRmR(extModeLQ, mem, dst)\n\t\tcase 2:\n\t\t\tload.asMovzxRmR(extModeWQ, mem, dst)\n\t\tcase 1:\n\t\t\tload.asMovzxRmR(extModeBQ, mem, dst)\n\t\tdefault:\n\t\t\tpanic(\"BUG\")\n\t\t}\n\t\tm.insert(load)\n\n\tcase ssa.OpcodeFence:\n\t\tm.insert(m.allocateInstr().asMFence())\n\n\tcase ssa.OpcodeAtomicStore:\n\t\tptr, _val := instr.Arg2()\n\t\tsize := instr.AtomicTargetSize()\n\n\t\tval := m.getOperand_Reg(m.c.ValueDefinition(_val))\n\t\t// The content on the val register will be overwritten by xchg, so we need to copy it to a temporary register.\n\t\tcopied := m.copyToTmp(val.reg())\n\n\t\tmem := newOperandMem(m.lowerToAddressMode(ptr, 0))\n\t\tstore := m.allocateInstr().asXCHG(copied, mem, byte(size))\n\t\tm.insert(store)\n\n\tcase ssa.OpcodeAtomicCas:\n\t\taddr, exp, repl := instr.Arg3()\n\t\tsize := instr.AtomicTargetSize()\n\t\tm.lowerAtomicCas(addr, exp, repl, size, instr.Return())\n\n\tcase ssa.OpcodeAtomicRmw:\n\t\taddr, val := instr.Arg2()\n\t\tatomicOp, size := instr.AtomicRmwData()\n\t\tm.lowerAtomicRmw(atomicOp, addr, val, size, instr.Return())\n\n\tcase ssa.OpcodeTailCallReturnCall, ssa.OpcodeTailCallReturnCallIndirect:\n\t\tm.lowerTailCall(instr)\n\n\tdefault:\n\t\tpanic(\"TODO: lowering \" + op.String())\n\t}\n}\n\nfunc (m *machine) lowerAtomicRmw(op ssa.AtomicRmwOp, addr, val ssa.Value, size uint64, ret ssa.Value) {\n\tmem := m.lowerToAddressMode(addr, 0)\n\t_val := m.getOperand_Reg(m.c.ValueDefinition(val))\n\n\tswitch op {\n\tcase ssa.AtomicRmwOpAdd, ssa.AtomicRmwOpSub:\n\t\tvalCopied := m.copyToTmp(_val.reg())\n\t\tif op == ssa.AtomicRmwOpSub {\n\t\t\t// Negate the value.\n\t\t\tm.insert(m.allocateInstr().asNeg(newOperandReg(valCopied), true))\n\t\t}\n\t\tm.insert(m.allocateInstr().asLockXAdd(valCopied, mem, byte(size)))\n\t\tm.clearHigherBitsForAtomic(valCopied, size, ret.Type())\n\t\tm.copyTo(valCopied, m.c.VRegOf(ret))\n\n\tcase ssa.AtomicRmwOpAnd, ssa.AtomicRmwOpOr, ssa.AtomicRmwOpXor:\n\t\taccumulator := raxVReg\n\t\t// Reserve rax for the accumulator to make regalloc happy.\n\t\t// Note: do this initialization before defining valCopied, because it might be the same register and\n\t\t// if that happens, the unnecessary load/store will be performed inside the loop.\n\t\t// This can be mitigated in any way once the register allocator is clever enough.\n\t\tm.insert(m.allocateInstr().asDefineUninitializedReg(accumulator))\n\n\t\t// Copy the value to a temporary register.\n\t\tvalCopied := m.copyToTmp(_val.reg())\n\t\tm.clearHigherBitsForAtomic(valCopied, size, ret.Type())\n\n\t\tmemOp := newOperandMem(mem)\n\t\ttmp := m.c.AllocateVReg(ssa.TypeI64)\n\t\tbeginLoop, beginLoopLabel := m.allocateBrTarget()\n\t\t{\n\t\t\tm.insert(beginLoop)\n\t\t\t// Reset the value on tmp by the original value.\n\t\t\tm.copyTo(valCopied, tmp)\n\t\t\t// Load the current value at the memory location into accumulator.\n\t\t\tswitch size {\n\t\t\tcase 1:\n\t\t\t\tm.insert(m.allocateInstr().asMovzxRmR(extModeBQ, memOp, accumulator))\n\t\t\tcase 2:\n\t\t\t\tm.insert(m.allocateInstr().asMovzxRmR(extModeWQ, memOp, accumulator))\n\t\t\tcase 4:\n\t\t\t\tm.insert(m.allocateInstr().asMovzxRmR(extModeLQ, memOp, accumulator))\n\t\t\tcase 8:\n\t\t\t\tm.insert(m.allocateInstr().asMov64MR(memOp, accumulator))\n\t\t\tdefault:\n\t\t\t\tpanic(\"BUG\")\n\t\t\t}\n\t\t\t// Then perform the logical operation on the accumulator and the value on tmp.\n\t\t\tswitch op {\n\t\t\tcase ssa.AtomicRmwOpAnd:\n\t\t\t\tm.insert(m.allocateInstr().asAluRmiR(aluRmiROpcodeAnd, newOperandReg(accumulator), tmp, true))\n\t\t\tcase ssa.AtomicRmwOpOr:\n\t\t\t\tm.insert(m.allocateInstr().asAluRmiR(aluRmiROpcodeOr, newOperandReg(accumulator), tmp, true))\n\t\t\tcase ssa.AtomicRmwOpXor:\n\t\t\t\tm.insert(m.allocateInstr().asAluRmiR(aluRmiROpcodeXor, newOperandReg(accumulator), tmp, true))\n\t\t\tdefault:\n\t\t\t\tpanic(\"BUG\")\n\t\t\t}\n\t\t\t// Finally, try compare-exchange the value at the memory location with the tmp.\n\t\t\tm.insert(m.allocateInstr().asLockCmpXCHG(tmp, memOp.addressMode(), byte(size)))\n\t\t\t// If it succeeds, ZF will be set, and we can break the loop.\n\t\t\tm.insert(m.allocateInstr().asJmpIf(condNZ, newOperandLabel(beginLoopLabel)))\n\t\t}\n\n\t\t// valCopied must be alive at the end of the loop.\n\t\tm.insert(m.allocateInstr().asNopUseReg(valCopied))\n\n\t\t// At this point, accumulator contains the result.\n\t\tm.clearHigherBitsForAtomic(accumulator, size, ret.Type())\n\t\tm.copyTo(accumulator, m.c.VRegOf(ret))\n\n\tcase ssa.AtomicRmwOpXchg:\n\t\tvalCopied := m.copyToTmp(_val.reg())\n\n\t\tm.insert(m.allocateInstr().asXCHG(valCopied, newOperandMem(mem), byte(size)))\n\t\tm.clearHigherBitsForAtomic(valCopied, size, ret.Type())\n\t\tm.copyTo(valCopied, m.c.VRegOf(ret))\n\n\tdefault:\n\t\tpanic(\"BUG\")\n\t}\n}\n\nfunc (m *machine) lowerAtomicCas(addr, exp, repl ssa.Value, size uint64, ret ssa.Value) {\n\tmem := m.lowerToAddressMode(addr, 0)\n\texpOp := m.getOperand_Reg(m.c.ValueDefinition(exp))\n\treplOp := m.getOperand_Reg(m.c.ValueDefinition(repl))\n\n\taccumulator := raxVReg\n\tm.copyTo(expOp.reg(), accumulator)\n\tm.insert(m.allocateInstr().asLockCmpXCHG(replOp.reg(), mem, byte(size)))\n\tm.clearHigherBitsForAtomic(accumulator, size, ret.Type())\n\tm.copyTo(accumulator, m.c.VRegOf(ret))\n}\n\nfunc (m *machine) clearHigherBitsForAtomic(r regalloc.VReg, valSize uint64, resultType ssa.Type) {\n\tswitch resultType {\n\tcase ssa.TypeI32:\n\t\tswitch valSize {\n\t\tcase 1:\n\t\t\tm.insert(m.allocateInstr().asMovzxRmR(extModeBL, newOperandReg(r), r))\n\t\tcase 2:\n\t\t\tm.insert(m.allocateInstr().asMovzxRmR(extModeWL, newOperandReg(r), r))\n\t\t}\n\tcase ssa.TypeI64:\n\t\tswitch valSize {\n\t\tcase 1:\n\t\t\tm.insert(m.allocateInstr().asMovzxRmR(extModeBQ, newOperandReg(r), r))\n\t\tcase 2:\n\t\t\tm.insert(m.allocateInstr().asMovzxRmR(extModeWQ, newOperandReg(r), r))\n\t\tcase 4:\n\t\t\tm.insert(m.allocateInstr().asMovzxRmR(extModeLQ, newOperandReg(r), r))\n\t\t}\n\t}\n}\n\nfunc (m *machine) lowerFcmp(instr *ssa.Instruction) {\n\tf1, f2, and := m.lowerFcmpToFlags(instr)\n\trd := m.c.VRegOf(instr.Return())\n\tif f2 == condInvalid {\n\t\ttmp := m.c.AllocateVReg(ssa.TypeI32)\n\t\tm.insert(m.allocateInstr().asSetcc(f1, tmp))\n\t\t// On amd64, setcc only sets the first byte of the register, so we need to zero extend it to match\n\t\t// the semantics of Icmp that sets either 0 or 1.\n\t\tm.insert(m.allocateInstr().asMovzxRmR(extModeBQ, newOperandReg(tmp), rd))\n\t} else {\n\t\ttmp1, tmp2 := m.c.AllocateVReg(ssa.TypeI32), m.c.AllocateVReg(ssa.TypeI32)\n\t\tm.insert(m.allocateInstr().asSetcc(f1, tmp1))\n\t\tm.insert(m.allocateInstr().asSetcc(f2, tmp2))\n\t\tvar op aluRmiROpcode\n\t\tif and {\n\t\t\top = aluRmiROpcodeAnd\n\t\t} else {\n\t\t\top = aluRmiROpcodeOr\n\t\t}\n\t\tm.insert(m.allocateInstr().asAluRmiR(op, newOperandReg(tmp1), tmp2, false))\n\t\tm.insert(m.allocateInstr().asMovzxRmR(extModeBQ, newOperandReg(tmp2), rd))\n\t}\n}\n\nfunc (m *machine) lowerIcmp(instr *ssa.Instruction) {\n\tx, y, c := instr.IcmpData()\n\tm.lowerIcmpToFlag(m.c.ValueDefinition(x), m.c.ValueDefinition(y), x.Type() == ssa.TypeI64)\n\trd := m.c.VRegOf(instr.Return())\n\ttmp := m.c.AllocateVReg(ssa.TypeI32)\n\tm.insert(m.allocateInstr().asSetcc(condFromSSAIntCmpCond(c), tmp))\n\t// On amd64, setcc only sets the first byte of the register, so we need to zero extend it to match\n\t// the semantics of Icmp that sets either 0 or 1.\n\tm.insert(m.allocateInstr().asMovzxRmR(extModeBQ, newOperandReg(tmp), rd))\n}\n\nfunc (m *machine) lowerSelect(x, y, cval, ret ssa.Value) {\n\txo, yo := m.getOperand_Mem_Reg(m.c.ValueDefinition(x)), m.getOperand_Reg(m.c.ValueDefinition(y))\n\trd := m.c.VRegOf(ret)\n\n\tvar cond cond\n\tcvalDef := m.c.ValueDefinition(cval)\n\tswitch m.c.MatchInstrOneOf(cvalDef, condBranchMatches[:]) {\n\tcase ssa.OpcodeIcmp:\n\t\ticmp := cvalDef.Instr\n\t\txc, yc, cc := icmp.IcmpData()\n\t\tm.lowerIcmpToFlag(m.c.ValueDefinition(xc), m.c.ValueDefinition(yc), xc.Type() == ssa.TypeI64)\n\t\tcond = condFromSSAIntCmpCond(cc)\n\t\ticmp.Lowered()\n\tdefault: // TODO: match ssa.OpcodeFcmp for optimization, but seems a bit complex.\n\t\tcv := m.getOperand_Reg(cvalDef)\n\t\ttest := m.allocateInstr().asCmpRmiR(false, cv, cv.reg(), false)\n\t\tm.insert(test)\n\t\tcond = condNZ\n\t}\n\n\tif typ := x.Type(); typ.IsInt() {\n\t\t_64 := typ.Bits() == 64\n\t\tmov := m.allocateInstr()\n\t\ttmp := m.c.AllocateVReg(typ)\n\t\tswitch yo.kind {\n\t\tcase operandKindReg:\n\t\t\tmov.asMovRR(yo.reg(), tmp, _64)\n\t\tcase operandKindMem:\n\t\t\tif _64 {\n\t\t\t\tmov.asMov64MR(yo, tmp)\n\t\t\t} else {\n\t\t\t\tmov.asMovzxRmR(extModeLQ, yo, tmp)\n\t\t\t}\n\t\tdefault:\n\t\t\tpanic(\"BUG\")\n\t\t}\n\t\tm.insert(mov)\n\t\tcmov := m.allocateInstr().asCmove(cond, xo, tmp, _64)\n\t\tm.insert(cmov)\n\t\tm.insert(m.allocateInstr().asMovRR(tmp, rd, _64))\n\t} else {\n\t\tmov := m.allocateInstr()\n\t\ttmp := m.c.AllocateVReg(typ)\n\t\tswitch typ {\n\t\tcase ssa.TypeF32:\n\t\t\tmov.asXmmUnaryRmR(sseOpcodeMovss, yo, tmp)\n\t\tcase ssa.TypeF64:\n\t\t\tmov.asXmmUnaryRmR(sseOpcodeMovsd, yo, tmp)\n\t\tcase ssa.TypeV128:\n\t\t\tmov.asXmmUnaryRmR(sseOpcodeMovdqu, yo, tmp)\n\t\tdefault:\n\t\t\tpanic(\"BUG\")\n\t\t}\n\t\tm.insert(mov)\n\n\t\tcmov := m.allocateInstr().asXmmCMov(cond, xo, tmp, typ.Size())\n\t\tm.insert(cmov)\n\n\t\tm.copyTo(tmp, rd)\n\t}\n}\n\nfunc (m *machine) lowerXmmCmovAfterRegAlloc(i *instruction) {\n\tx := i.op1\n\trd := i.op2.reg()\n\tcond := cond(i.u1)\n\n\tjcc := m.allocateInstr()\n\tm.insert(jcc)\n\n\tmov := m.allocateInstr()\n\tswitch i.u2 {\n\tcase 4:\n\t\tmov.asXmmUnaryRmR(sseOpcodeMovss, x, rd)\n\tcase 8:\n\t\tmov.asXmmUnaryRmR(sseOpcodeMovsd, x, rd)\n\tcase 16:\n\t\tmov.asXmmUnaryRmR(sseOpcodeMovdqu, x, rd)\n\tdefault:\n\t\tpanic(\"BUG\")\n\t}\n\tm.insert(mov)\n\n\tnop, end := m.allocateBrTarget()\n\tm.insert(nop)\n\tjcc.asJmpIf(cond.invert(), newOperandLabel(end))\n}\n\nfunc (m *machine) lowerExtend(_arg, ret ssa.Value, from, to byte, signed bool) {\n\trd0 := m.c.VRegOf(ret)\n\targ := m.getOperand_Mem_Reg(m.c.ValueDefinition(_arg))\n\n\trd := m.c.AllocateVReg(ret.Type())\n\n\text := m.allocateInstr()\n\tswitch {\n\tcase from == 8 && to == 16 && signed:\n\t\text.asMovsxRmR(extModeBQ, arg, rd)\n\tcase from == 8 && to == 16 && !signed:\n\t\text.asMovzxRmR(extModeBL, arg, rd)\n\tcase from == 8 && to == 32 && signed:\n\t\text.asMovsxRmR(extModeBL, arg, rd)\n\tcase from == 8 && to == 32 && !signed:\n\t\text.asMovzxRmR(extModeBQ, arg, rd)\n\tcase from == 8 && to == 64 && signed:\n\t\text.asMovsxRmR(extModeBQ, arg, rd)\n\tcase from == 8 && to == 64 && !signed:\n\t\text.asMovzxRmR(extModeBQ, arg, rd)\n\tcase from == 16 && to == 32 && signed:\n\t\text.asMovsxRmR(extModeWL, arg, rd)\n\tcase from == 16 && to == 32 && !signed:\n\t\text.asMovzxRmR(extModeWL, arg, rd)\n\tcase from == 16 && to == 64 && signed:\n\t\text.asMovsxRmR(extModeWQ, arg, rd)\n\tcase from == 16 && to == 64 && !signed:\n\t\text.asMovzxRmR(extModeWQ, arg, rd)\n\tcase from == 32 && to == 64 && signed:\n\t\text.asMovsxRmR(extModeLQ, arg, rd)\n\tcase from == 32 && to == 64 && !signed:\n\t\text.asMovzxRmR(extModeLQ, arg, rd)\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"BUG: unhandled extend: from=%d, to=%d, signed=%t\", from, to, signed))\n\t}\n\tm.insert(ext)\n\n\tm.copyTo(rd, rd0)\n}\n\nfunc (m *machine) lowerVconst(dst regalloc.VReg, lo, hi uint64) {\n\tif lo == 0 && hi == 0 {\n\t\tm.insert(m.allocateInstr().asZeros(dst))\n\t\treturn\n\t}\n\n\tload := m.allocateInstr()\n\tl, pos := m.allocateLabel()\n\tm.consts = append(m.consts, _const{label: l, labelPos: pos, lo: lo, hi: hi})\n\tload.asXmmUnaryRmR(sseOpcodeMovdqu, newOperandMem(m.newAmodeRipRel(l)), dst)\n\tm.insert(load)\n}\n\nfunc (m *machine) lowerCtz(instr *ssa.Instruction) {\n\tif m.cpuFeatures.HasExtra(platform.CpuExtraFeatureAmd64ABM) {\n\t\tm.lowerUnaryRmR(instr, unaryRmROpcodeTzcnt)\n\t} else {\n\t\t// On processors that do not support TZCNT, the BSF instruction is\n\t\t// executed instead. The key difference between TZCNT and BSF\n\t\t// instruction is that if source operand is zero, the content of\n\t\t// destination operand is undefined.\n\t\t// https://www.felixcloutier.com/x86/tzcnt.html\n\n\t\tx := instr.Arg()\n\t\tif !x.Type().IsInt() {\n\t\t\tpanic(\"BUG?\")\n\t\t}\n\t\t_64 := x.Type().Bits() == 64\n\n\t\txDef := m.c.ValueDefinition(x)\n\t\ttmp := m.c.AllocateVReg(x.Type())\n\t\trm := m.getOperand_Reg(xDef)\n\n\t\t// First, we have to check if the target is non-zero.\n\t\ttest := m.allocateInstr()\n\t\ttest.asCmpRmiR(false, rm, rm.reg(), _64)\n\t\tm.insert(test)\n\n\t\tjmpNz := m.allocateInstr()\n\t\tm.insert(jmpNz)\n\n\t\t// If the value is zero, we just push the const value.\n\t\tm.lowerIconst(tmp, uint64(x.Type().Bits()), _64)\n\n\t\t// Now jump right after the non-zero case.\n\t\tjmpAtEnd := m.allocateInstr()\n\t\tm.insert(jmpAtEnd)\n\n\t\t// jmpNz target label is set here.\n\t\tnop, nz := m.allocateBrTarget()\n\t\tjmpNz.asJmpIf(condNZ, newOperandLabel(nz))\n\t\tm.insert(nop)\n\n\t\t// Emit the non-zero case.\n\t\tbsr := m.allocateInstr()\n\t\tbsr.asUnaryRmR(unaryRmROpcodeBsf, rm, tmp, _64)\n\t\tm.insert(bsr)\n\n\t\t// jmpAtEnd target label is set here.\n\t\tnopEnd, end := m.allocateBrTarget()\n\t\tjmpAtEnd.asJmp(newOperandLabel(end))\n\t\tm.insert(nopEnd)\n\n\t\tm.copyTo(tmp, m.c.VRegOf(instr.Return()))\n\t}\n}\n\nfunc (m *machine) lowerClz(instr *ssa.Instruction) {\n\tif m.cpuFeatures.HasExtra(platform.CpuExtraFeatureAmd64ABM) {\n\t\tm.lowerUnaryRmR(instr, unaryRmROpcodeLzcnt)\n\t} else {\n\t\t// On processors that do not support LZCNT, we combine BSR (calculating\n\t\t// most significant set bit) with XOR. This logic is described in\n\t\t// \"Replace Raw Assembly Code with Builtin Intrinsics\" section in:\n\t\t// https://developer.apple.com/documentation/apple-silicon/addressing-architectural-differences-in-your-macos-code.\n\n\t\tx := instr.Arg()\n\t\tif !x.Type().IsInt() {\n\t\t\tpanic(\"BUG?\")\n\t\t}\n\t\t_64 := x.Type().Bits() == 64\n\n\t\txDef := m.c.ValueDefinition(x)\n\t\trm := m.getOperand_Reg(xDef)\n\t\ttmp := m.c.AllocateVReg(x.Type())\n\n\t\t// First, we have to check if the rm is non-zero as BSR is undefined\n\t\t// on zero. See https://www.felixcloutier.com/x86/bsr.\n\t\ttest := m.allocateInstr()\n\t\ttest.asCmpRmiR(false, rm, rm.reg(), _64)\n\t\tm.insert(test)\n\n\t\tjmpNz := m.allocateInstr()\n\t\tm.insert(jmpNz)\n\n\t\t// If the value is zero, we just push the const value.\n\t\tm.lowerIconst(tmp, uint64(x.Type().Bits()), _64)\n\n\t\t// Now jump right after the non-zero case.\n\t\tjmpAtEnd := m.allocateInstr()\n\t\tm.insert(jmpAtEnd)\n\n\t\t// jmpNz target label is set here.\n\t\tnop, nz := m.allocateBrTarget()\n\t\tjmpNz.asJmpIf(condNZ, newOperandLabel(nz))\n\t\tm.insert(nop)\n\n\t\t// Emit the non-zero case.\n\t\tbsr := m.allocateInstr()\n\t\tbsr.asUnaryRmR(unaryRmROpcodeBsr, rm, tmp, _64)\n\t\tm.insert(bsr)\n\n\t\t// Now we XOR the value with the bit length minus one.\n\t\txor := m.allocateInstr()\n\t\txor.asAluRmiR(aluRmiROpcodeXor, newOperandImm32(uint32(x.Type().Bits()-1)), tmp, _64)\n\t\tm.insert(xor)\n\n\t\t// jmpAtEnd target label is set here.\n\t\tnopEnd, end := m.allocateBrTarget()\n\t\tjmpAtEnd.asJmp(newOperandLabel(end))\n\t\tm.insert(nopEnd)\n\n\t\tm.copyTo(tmp, m.c.VRegOf(instr.Return()))\n\t}\n}\n\nfunc (m *machine) lowerUnaryRmR(si *ssa.Instruction, op unaryRmROpcode) {\n\tx := si.Arg()\n\tif !x.Type().IsInt() {\n\t\tpanic(\"BUG?\")\n\t}\n\t_64 := x.Type().Bits() == 64\n\n\txDef := m.c.ValueDefinition(x)\n\trm := m.getOperand_Mem_Reg(xDef)\n\trd := m.c.VRegOf(si.Return())\n\n\tinstr := m.allocateInstr()\n\tinstr.asUnaryRmR(op, rm, rd, _64)\n\tm.insert(instr)\n}\n\nfunc (m *machine) lowerLoad(ptr ssa.Value, offset uint32, typ ssa.Type, dst regalloc.VReg) {\n\tmem := newOperandMem(m.lowerToAddressMode(ptr, offset))\n\tload := m.allocateInstr()\n\tswitch typ {\n\tcase ssa.TypeI32:\n\t\tload.asMovzxRmR(extModeLQ, mem, dst)\n\tcase ssa.TypeI64:\n\t\tload.asMov64MR(mem, dst)\n\tcase ssa.TypeF32:\n\t\tload.asXmmUnaryRmR(sseOpcodeMovss, mem, dst)\n\tcase ssa.TypeF64:\n\t\tload.asXmmUnaryRmR(sseOpcodeMovsd, mem, dst)\n\tcase ssa.TypeV128:\n\t\tload.asXmmUnaryRmR(sseOpcodeMovdqu, mem, dst)\n\tdefault:\n\t\tpanic(\"BUG\")\n\t}\n\tm.insert(load)\n}\n\nfunc (m *machine) lowerExtLoad(op ssa.Opcode, ptr ssa.Value, offset uint32, dst regalloc.VReg) {\n\tmem := newOperandMem(m.lowerToAddressMode(ptr, offset))\n\tload := m.allocateInstr()\n\tswitch op {\n\tcase ssa.OpcodeUload8:\n\t\tload.asMovzxRmR(extModeBQ, mem, dst)\n\tcase ssa.OpcodeUload16:\n\t\tload.asMovzxRmR(extModeWQ, mem, dst)\n\tcase ssa.OpcodeUload32:\n\t\tload.asMovzxRmR(extModeLQ, mem, dst)\n\tcase ssa.OpcodeSload8:\n\t\tload.asMovsxRmR(extModeBQ, mem, dst)\n\tcase ssa.OpcodeSload16:\n\t\tload.asMovsxRmR(extModeWQ, mem, dst)\n\tcase ssa.OpcodeSload32:\n\t\tload.asMovsxRmR(extModeLQ, mem, dst)\n\tdefault:\n\t\tpanic(\"BUG\")\n\t}\n\tm.insert(load)\n}\n\nfunc (m *machine) lowerExitIfTrueWithCode(execCtx regalloc.VReg, cond ssa.Value, code wazevoapi.ExitCode) {\n\tcondDef := m.c.ValueDefinition(cond)\n\tif !m.c.MatchInstr(condDef, ssa.OpcodeIcmp) {\n\t\tpanic(\"TODO: ExitIfTrue must come after Icmp at the moment: \" + condDef.Instr.Opcode().String())\n\t}\n\tcvalInstr := condDef.Instr\n\tcvalInstr.MarkLowered()\n\n\t// We need to copy the execution context to a temp register, because if it's spilled,\n\t// it might end up being reloaded inside the exiting branch.\n\texecCtxTmp := m.copyToTmp(execCtx)\n\n\tx, y, c := cvalInstr.IcmpData()\n\txx, yy := m.c.ValueDefinition(x), m.c.ValueDefinition(y)\n\tif !m.tryLowerBandToFlag(xx, yy) {\n\t\tm.lowerIcmpToFlag(xx, yy, x.Type() == ssa.TypeI64)\n\t}\n\n\tjmpIf := m.allocateInstr()\n\tm.insert(jmpIf)\n\tl := m.lowerExitWithCode(execCtxTmp, code)\n\tjmpIf.asJmpIf(condFromSSAIntCmpCond(c).invert(), newOperandLabel(l))\n}\n\nfunc (m *machine) tryLowerBandToFlag(x, y backend.SSAValueDefinition) (ok bool) {\n\tvar target backend.SSAValueDefinition\n\tvar got bool\n\tif x.IsFromInstr() && x.Instr.Constant() && x.Instr.ConstantVal() == 0 {\n\t\tif m.c.MatchInstr(y, ssa.OpcodeBand) {\n\t\t\ttarget = y\n\t\t\tgot = true\n\t\t}\n\t}\n\n\tif y.IsFromInstr() && y.Instr.Constant() && y.Instr.ConstantVal() == 0 {\n\t\tif m.c.MatchInstr(x, ssa.OpcodeBand) {\n\t\t\ttarget = x\n\t\t\tgot = true\n\t\t}\n\t}\n\n\tif !got {\n\t\treturn false\n\t}\n\n\tbandInstr := target.Instr\n\tbandX, bandY := bandInstr.Arg2()\n\n\txx := m.getOperand_Reg(m.c.ValueDefinition(bandX))\n\tyy := m.getOperand_Mem_Imm32_Reg(m.c.ValueDefinition(bandY))\n\ttest := m.allocateInstr().asCmpRmiR(false, yy, xx.reg(), bandX.Type() == ssa.TypeI64)\n\tm.insert(test)\n\tbandInstr.MarkLowered()\n\treturn true\n}\n\nfunc (m *machine) allocateExitInstructions(execCtx, exitCodeReg regalloc.VReg) (saveRsp, saveRbp, setExitCode *instruction) {\n\tsaveRsp = m.allocateInstr().asMovRM(\n\t\trspVReg,\n\t\tnewOperandMem(m.newAmodeImmReg(wazevoapi.ExecutionContextOffsetStackPointerBeforeGoCall.U32(), execCtx)),\n\t\t8,\n\t)\n\n\tsaveRbp = m.allocateInstr().asMovRM(\n\t\trbpVReg,\n\t\tnewOperandMem(m.newAmodeImmReg(wazevoapi.ExecutionContextOffsetFramePointerBeforeGoCall.U32(), execCtx)),\n\t\t8,\n\t)\n\tsetExitCode = m.allocateInstr().asMovRM(\n\t\texitCodeReg,\n\t\tnewOperandMem(m.newAmodeImmReg(wazevoapi.ExecutionContextOffsetExitCodeOffset.U32(), execCtx)),\n\t\t4,\n\t)\n\treturn\n}\n\nfunc (m *machine) lowerExitWithCode(execCtx regalloc.VReg, code wazevoapi.ExitCode) (afterLabel label) {\n\texitCodeReg := rbpVReg\n\tsaveRsp, saveRbp, setExitCode := m.allocateExitInstructions(execCtx, exitCodeReg)\n\n\t// Set save RSP, RBP, and write exit code.\n\tm.insert(saveRsp)\n\tm.insert(saveRbp)\n\tm.lowerIconst(exitCodeReg, uint64(code), false)\n\tm.insert(setExitCode)\n\n\tripReg := rbpVReg\n\n\t// Next is to save the current address for stack unwinding.\n\tnop, currentAddrLabel := m.allocateBrTarget()\n\tm.insert(nop)\n\treadRip := m.allocateInstr().asLEA(newOperandLabel(currentAddrLabel), ripReg)\n\tm.insert(readRip)\n\tsaveRip := m.allocateInstr().asMovRM(\n\t\tripReg,\n\t\tnewOperandMem(m.newAmodeImmReg(wazevoapi.ExecutionContextOffsetGoCallReturnAddress.U32(), execCtx)),\n\t\t8,\n\t)\n\tm.insert(saveRip)\n\n\t// Finally exit.\n\texitSq := m.allocateExitSeq(execCtx)\n\tm.insert(exitSq)\n\n\t// Return the label for continuation.\n\tcontinuation, afterLabel := m.allocateBrTarget()\n\tm.insert(continuation)\n\treturn afterLabel\n}\n\nfunc (m *machine) lowerAluRmiROp(si *ssa.Instruction, op aluRmiROpcode) {\n\tx, y := si.Arg2()\n\tif !x.Type().IsInt() {\n\t\tpanic(\"BUG?\")\n\t}\n\n\t_64 := x.Type().Bits() == 64\n\n\txDef, yDef := m.c.ValueDefinition(x), m.c.ValueDefinition(y)\n\n\t// TODO: commutative args can be swapped if one of them is an immediate.\n\trn := m.getOperand_Reg(xDef)\n\trm := m.getOperand_Mem_Imm32_Reg(yDef)\n\trd := m.c.VRegOf(si.Return())\n\n\t// rn is being overwritten, so we first copy its value to a temp register,\n\t// in case it is referenced again later.\n\ttmp := m.copyToTmp(rn.reg())\n\n\talu := m.allocateInstr()\n\talu.asAluRmiR(op, rm, tmp, _64)\n\tm.insert(alu)\n\n\t// tmp now contains the result, we copy it to the dest register.\n\tm.copyTo(tmp, rd)\n}\n\nfunc (m *machine) lowerShiftR(si *ssa.Instruction, op shiftROp) {\n\tx, amt := si.Arg2()\n\tif !x.Type().IsInt() {\n\t\tpanic(\"BUG?\")\n\t}\n\t_64 := x.Type().Bits() == 64\n\n\txDef, amtDef := m.c.ValueDefinition(x), m.c.ValueDefinition(amt)\n\n\topAmt := m.getOperand_Imm32_Reg(amtDef)\n\trx := m.getOperand_Reg(xDef)\n\trd := m.c.VRegOf(si.Return())\n\n\t// rx is being overwritten, so we first copy its value to a temp register,\n\t// in case it is referenced again later.\n\ttmpDst := m.copyToTmp(rx.reg())\n\n\tif opAmt.kind == operandKindReg {\n\t\t// If opAmt is a register we must copy its value to rcx,\n\t\t// because shiftR encoding mandates that the shift amount is in rcx.\n\t\tm.copyTo(opAmt.reg(), rcxVReg)\n\n\t\talu := m.allocateInstr()\n\t\talu.asShiftR(op, newOperandReg(rcxVReg), tmpDst, _64)\n\t\tm.insert(alu)\n\n\t} else {\n\t\talu := m.allocateInstr()\n\t\talu.asShiftR(op, opAmt, tmpDst, _64)\n\t\tm.insert(alu)\n\t}\n\n\t// tmp now contains the result, we copy it to the dest register.\n\tm.copyTo(tmpDst, rd)\n}\n\nfunc (m *machine) lowerXmmRmR(instr *ssa.Instruction) {\n\tx, y := instr.Arg2()\n\tif !x.Type().IsFloat() {\n\t\tpanic(\"BUG?\")\n\t}\n\t_64 := x.Type().Bits() == 64\n\n\tvar op sseOpcode\n\tif _64 {\n\t\tswitch instr.Opcode() {\n\t\tcase ssa.OpcodeFadd:\n\t\t\top = sseOpcodeAddsd\n\t\tcase ssa.OpcodeFsub:\n\t\t\top = sseOpcodeSubsd\n\t\tcase ssa.OpcodeFmul:\n\t\t\top = sseOpcodeMulsd\n\t\tcase ssa.OpcodeFdiv:\n\t\t\top = sseOpcodeDivsd\n\t\tdefault:\n\t\t\tpanic(\"BUG\")\n\t\t}\n\t} else {\n\t\tswitch instr.Opcode() {\n\t\tcase ssa.OpcodeFadd:\n\t\t\top = sseOpcodeAddss\n\t\tcase ssa.OpcodeFsub:\n\t\t\top = sseOpcodeSubss\n\t\tcase ssa.OpcodeFmul:\n\t\t\top = sseOpcodeMulss\n\t\tcase ssa.OpcodeFdiv:\n\t\t\top = sseOpcodeDivss\n\t\tdefault:\n\t\t\tpanic(\"BUG\")\n\t\t}\n\t}\n\n\txDef, yDef := m.c.ValueDefinition(x), m.c.ValueDefinition(y)\n\trn := m.getOperand_Reg(yDef)\n\trm := m.getOperand_Reg(xDef)\n\trd := m.c.VRegOf(instr.Return())\n\n\t// rm is being overwritten, so we first copy its value to a temp register,\n\t// in case it is referenced again later.\n\ttmp := m.copyToTmp(rm.reg())\n\n\txmm := m.allocateInstr().asXmmRmR(op, rn, tmp)\n\tm.insert(xmm)\n\n\tm.copyTo(tmp, rd)\n}\n\nfunc (m *machine) lowerSqrt(instr *ssa.Instruction) {\n\tx := instr.Arg()\n\tif !x.Type().IsFloat() {\n\t\tpanic(\"BUG\")\n\t}\n\t_64 := x.Type().Bits() == 64\n\tvar op sseOpcode\n\tif _64 {\n\t\top = sseOpcodeSqrtsd\n\t} else {\n\t\top = sseOpcodeSqrtss\n\t}\n\n\txDef := m.c.ValueDefinition(x)\n\trm := m.getOperand_Mem_Reg(xDef)\n\trd := m.c.VRegOf(instr.Return())\n\n\txmm := m.allocateInstr().asXmmUnaryRmR(op, rm, rd)\n\tm.insert(xmm)\n}\n\nfunc (m *machine) lowerFabsFneg(instr *ssa.Instruction) {\n\tx := instr.Arg()\n\tif !x.Type().IsFloat() {\n\t\tpanic(\"BUG\")\n\t}\n\t_64 := x.Type().Bits() == 64\n\tvar op sseOpcode\n\tvar mask uint64\n\tif _64 {\n\t\tswitch instr.Opcode() {\n\t\tcase ssa.OpcodeFabs:\n\t\t\tmask, op = 0x7fffffffffffffff, sseOpcodeAndpd\n\t\tcase ssa.OpcodeFneg:\n\t\t\tmask, op = 0x8000000000000000, sseOpcodeXorpd\n\t\t}\n\t} else {\n\t\tswitch instr.Opcode() {\n\t\tcase ssa.OpcodeFabs:\n\t\t\tmask, op = 0x7fffffff, sseOpcodeAndps\n\t\tcase ssa.OpcodeFneg:\n\t\t\tmask, op = 0x80000000, sseOpcodeXorps\n\t\t}\n\t}\n\n\ttmp := m.c.AllocateVReg(x.Type())\n\n\txDef := m.c.ValueDefinition(x)\n\trm := m.getOperand_Reg(xDef)\n\trd := m.c.VRegOf(instr.Return())\n\n\tm.lowerFconst(tmp, mask, _64)\n\n\txmm := m.allocateInstr().asXmmRmR(op, rm, tmp)\n\tm.insert(xmm)\n\n\tm.copyTo(tmp, rd)\n}\n\nfunc (m *machine) lowerStore(si *ssa.Instruction) {\n\tvalue, ptr, offset, storeSizeInBits := si.StoreData()\n\trm := m.getOperand_Reg(m.c.ValueDefinition(value))\n\tmem := newOperandMem(m.lowerToAddressMode(ptr, offset))\n\n\tstore := m.allocateInstr()\n\tswitch value.Type() {\n\tcase ssa.TypeI32:\n\t\tstore.asMovRM(rm.reg(), mem, storeSizeInBits/8)\n\tcase ssa.TypeI64:\n\t\tstore.asMovRM(rm.reg(), mem, storeSizeInBits/8)\n\tcase ssa.TypeF32:\n\t\tstore.asXmmMovRM(sseOpcodeMovss, rm.reg(), mem)\n\tcase ssa.TypeF64:\n\t\tstore.asXmmMovRM(sseOpcodeMovsd, rm.reg(), mem)\n\tcase ssa.TypeV128:\n\t\tstore.asXmmMovRM(sseOpcodeMovdqu, rm.reg(), mem)\n\tdefault:\n\t\tpanic(\"BUG\")\n\t}\n\tm.insert(store)\n}\n\nfunc (m *machine) lowerCall(si *ssa.Instruction) {\n\tisDirectCall := si.Opcode() == ssa.OpcodeCall\n\tindirectCalleePtr, directCallee, isMemmove, calleeABI, stackSlotSize := m.prepareCall(si, isDirectCall)\n\n\tif isMemmove {\n\t\t// Go's memmove *might* use all xmm0-xmm15, so we need to release them.\n\t\t// https://github.com/golang/go/blob/49d42128fd8594c172162961ead19ac95e247d24/src/cmd/compile/abi-internal.md#architecture-specifics\n\t\t// https://github.com/golang/go/blob/49d42128fd8594c172162961ead19ac95e247d24/src/runtime/memmove_amd64.s#L271-L286\n\t\tfor i := regalloc.RealReg(0); i < 16; i++ {\n\t\t\tm.insert(m.allocateInstr().asDefineUninitializedReg(regInfo.RealRegToVReg[xmm0+i]))\n\t\t}\n\t\t// Since Go 1.24 it may also use DX, which is not reserved for the function call's 3 args.\n\t\t// https://github.com/golang/go/blob/go1.24.0/src/runtime/memmove_amd64.s#L123\n\t\tm.insert(m.allocateInstr().asDefineUninitializedReg(regInfo.RealRegToVReg[rdx]))\n\t}\n\n\tif isDirectCall {\n\t\tcall := m.allocateInstr().asCall(directCallee, calleeABI)\n\t\tm.insert(call)\n\t} else {\n\t\tptrOp := m.getOperand_Mem_Reg(m.c.ValueDefinition(indirectCalleePtr))\n\t\tcallInd := m.allocateInstr().asCallIndirect(ptrOp, calleeABI)\n\t\tm.insert(callInd)\n\t}\n\n\tif isMemmove {\n\t\tfor i := regalloc.RealReg(0); i < 16; i++ {\n\t\t\tm.insert(m.allocateInstr().asNopUseReg(regInfo.RealRegToVReg[xmm0+i]))\n\t\t}\n\t\tm.insert(m.allocateInstr().asNopUseReg(regInfo.RealRegToVReg[rdx]))\n\t}\n\n\tm.insertReturns(si, calleeABI, stackSlotSize)\n}\n\nfunc (m *machine) prepareCall(si *ssa.Instruction, isDirectCall bool) (ssa.Value, ssa.FuncRef, bool, *backend.FunctionABI, int64) {\n\tvar indirectCalleePtr ssa.Value\n\tvar directCallee ssa.FuncRef\n\tvar sigID ssa.SignatureID\n\tvar args []ssa.Value\n\tvar isMemmove bool\n\tif isDirectCall {\n\t\tdirectCallee, sigID, args = si.CallData()\n\t} else {\n\t\tindirectCalleePtr, sigID, args, isMemmove = si.CallIndirectData()\n\t}\n\tcalleeABI := m.c.GetFunctionABI(m.c.SSABuilder().ResolveSignature(sigID))\n\n\tstackSlotSize := int64(calleeABI.AlignedArgResultStackSlotSize())\n\tif m.maxRequiredStackSizeForCalls < stackSlotSize+16 {\n\t\tm.maxRequiredStackSizeForCalls = stackSlotSize + 16 // 16 == return address + RBP.\n\t}\n\n\t// Note: See machine.SetupPrologue for the stack layout.\n\t// The stack pointer decrease/increase will be inserted later in the compilation.\n\n\tfor i, arg := range args {\n\t\treg := m.c.VRegOf(arg)\n\t\tdef := m.c.ValueDefinition(arg)\n\t\tm.callerGenVRegToFunctionArg(calleeABI, i, reg, def, stackSlotSize)\n\t}\n\treturn indirectCalleePtr, directCallee, isMemmove, calleeABI, stackSlotSize\n}\n\nfunc (m *machine) insertReturns(si *ssa.Instruction, calleeABI *backend.FunctionABI, stackSlotSize int64) {\n\tvar index int\n\tr1, rs := si.Returns()\n\tif r1.Valid() {\n\t\tm.callerGenFunctionReturnVReg(calleeABI, 0, m.c.VRegOf(r1), stackSlotSize)\n\t\tindex++\n\t}\n\n\tfor _, r := range rs {\n\t\tm.callerGenFunctionReturnVReg(calleeABI, index, m.c.VRegOf(r), stackSlotSize)\n\t\tindex++\n\t}\n}\n\nfunc (m *machine) lowerTailCall(si *ssa.Instruction) {\n\tisDirectCall := si.Opcode() == ssa.OpcodeTailCallReturnCall\n\tindirectCalleePtr, directCallee, isMemmove, calleeABI, stackSlotSize := m.prepareCall(si, isDirectCall)\n\tif isMemmove {\n\t\tpanic(\"memmove not supported in tail calls\")\n\t}\n\n\tisAllRegs := stackSlotSize == 0\n\n\tswitch {\n\tcase isDirectCall && isAllRegs:\n\t\tcall := m.allocateInstr().asTailCallReturnCall(directCallee, calleeABI)\n\t\tm.insert(call)\n\tcase !isDirectCall && isAllRegs:\n\t\t// In a tail call we insert the epilogue before the jump instruction,\n\t\t// so an arbitrary register might be overwritten while restoring the stack.\n\t\t// So, as compared to a regular indirect call, we ensure the pointer is stored\n\t\t// in a caller-saved register (r11).\n\t\t// For details, see internal/engine/RATIONALE.md\n\t\tptrOp := m.getOperand_Reg(m.c.ValueDefinition(indirectCalleePtr))\n\t\ttmpJmp := r11VReg\n\t\tm.InsertMove(tmpJmp, ptrOp.reg(), ssa.TypeI64)\n\t\tcallInd := m.allocateInstr().asTailCallReturnCallIndirect(newOperandReg(tmpJmp), calleeABI)\n\t\tm.insert(callInd)\n\tcase isDirectCall && !isAllRegs:\n\t\tcall := m.allocateInstr().asCall(directCallee, calleeABI)\n\t\tm.insert(call)\n\tcase !isDirectCall && !isAllRegs:\n\t\tptrOp := m.getOperand_Mem_Reg(m.c.ValueDefinition(indirectCalleePtr))\n\t\tcallInd := m.allocateInstr().asCallIndirect(ptrOp, calleeABI)\n\t\tm.insert(callInd)\n\t}\n\n\t// If this is a proper tail call, returns will be cleared in the postRegAlloc phase.\n\tm.insertReturns(si, calleeABI, stackSlotSize)\n}\n\n// callerGenVRegToFunctionArg is the opposite of GenFunctionArgToVReg, which is used to generate the\n// caller side of the function call.\nfunc (m *machine) callerGenVRegToFunctionArg(a *backend.FunctionABI, argIndex int, reg regalloc.VReg, def backend.SSAValueDefinition, stackSlotSize int64) {\n\targ := &a.Args[argIndex]\n\tif def.IsFromInstr() {\n\t\t// Constant instructions are inlined.\n\t\tif inst := def.Instr; inst.Constant() {\n\t\t\tm.insertLoadConstant(inst, reg)\n\t\t}\n\t}\n\tif arg.Kind == backend.ABIArgKindReg {\n\t\tm.InsertMove(arg.Reg, reg, arg.Type)\n\t} else {\n\t\tstore := m.allocateInstr()\n\t\tmem := newOperandMem(m.newAmodeImmReg(\n\t\t\t// -stackSlotSize because the stack pointer is not yet decreased.\n\t\t\tuint32(arg.Offset-stackSlotSize), rspVReg))\n\t\tswitch arg.Type {\n\t\tcase ssa.TypeI32:\n\t\t\tstore.asMovRM(reg, mem, 4)\n\t\tcase ssa.TypeI64:\n\t\t\tstore.asMovRM(reg, mem, 8)\n\t\tcase ssa.TypeF32:\n\t\t\tstore.asXmmMovRM(sseOpcodeMovss, reg, mem)\n\t\tcase ssa.TypeF64:\n\t\t\tstore.asXmmMovRM(sseOpcodeMovsd, reg, mem)\n\t\tcase ssa.TypeV128:\n\t\t\tstore.asXmmMovRM(sseOpcodeMovdqu, reg, mem)\n\t\tdefault:\n\t\t\tpanic(\"BUG\")\n\t\t}\n\t\tm.insert(store)\n\t}\n}\n\nfunc (m *machine) callerGenFunctionReturnVReg(a *backend.FunctionABI, retIndex int, reg regalloc.VReg, stackSlotSize int64) {\n\tr := &a.Rets[retIndex]\n\tif r.Kind == backend.ABIArgKindReg {\n\t\tm.InsertMove(reg, r.Reg, r.Type)\n\t} else {\n\t\tload := m.allocateInstr()\n\t\tmem := newOperandMem(m.newAmodeImmReg(\n\t\t\t// -stackSlotSize because the stack pointer is not yet decreased.\n\t\t\tuint32(a.ArgStackSize+r.Offset-stackSlotSize), rspVReg))\n\t\tswitch r.Type {\n\t\tcase ssa.TypeI32:\n\t\t\tload.asMovzxRmR(extModeLQ, mem, reg)\n\t\tcase ssa.TypeI64:\n\t\t\tload.asMov64MR(mem, reg)\n\t\tcase ssa.TypeF32:\n\t\t\tload.asXmmUnaryRmR(sseOpcodeMovss, mem, reg)\n\t\tcase ssa.TypeF64:\n\t\t\tload.asXmmUnaryRmR(sseOpcodeMovsd, mem, reg)\n\t\tcase ssa.TypeV128:\n\t\t\tload.asXmmUnaryRmR(sseOpcodeMovdqu, mem, reg)\n\t\tdefault:\n\t\t\tpanic(\"BUG\")\n\t\t}\n\t\tm.insert(load)\n\t}\n}\n\n// InsertMove implements backend.Machine.\nfunc (m *machine) InsertMove(dst, src regalloc.VReg, typ ssa.Type) {\n\tswitch typ {\n\tcase ssa.TypeI32, ssa.TypeI64:\n\t\ti := m.allocateInstr().asMovRR(src, dst, typ.Bits() == 64)\n\t\tm.insert(i)\n\tcase ssa.TypeF32, ssa.TypeF64, ssa.TypeV128:\n\t\tvar op sseOpcode\n\t\tswitch typ {\n\t\tcase ssa.TypeF32:\n\t\t\top = sseOpcodeMovss\n\t\tcase ssa.TypeF64:\n\t\t\top = sseOpcodeMovsd\n\t\tcase ssa.TypeV128:\n\t\t\top = sseOpcodeMovdqa\n\t\t}\n\t\ti := m.allocateInstr().asXmmUnaryRmR(op, newOperandReg(src), dst)\n\t\tm.insert(i)\n\tdefault:\n\t\tpanic(\"BUG\")\n\t}\n}\n\n// Format implements backend.Machine.\nfunc (m *machine) Format() string {\n\tbegins := map[*instruction]label{}\n\tfor l := label(0); l < m.nextLabel; l++ {\n\t\tpos := m.labelPositionPool.Get(int(l))\n\t\tif pos != nil {\n\t\t\tbegins[pos.begin] = l\n\t\t}\n\t}\n\n\tvar lines []string\n\tfor cur := m.rootInstr; cur != nil; cur = cur.next {\n\t\tif l, ok := begins[cur]; ok {\n\t\t\tvar labelStr string\n\t\t\tif l <= m.maxSSABlockID {\n\t\t\t\tlabelStr = fmt.Sprintf(\"%s (SSA Block: blk%d):\", l, l)\n\t\t\t} else {\n\t\t\t\tlabelStr = fmt.Sprintf(\"%s:\", l)\n\t\t\t}\n\t\t\tlines = append(lines, labelStr)\n\t\t}\n\t\tif cur.kind == nop0 {\n\t\t\tcontinue\n\t\t}\n\t\tlines = append(lines, \"\\t\"+cur.String())\n\t}\n\tfor _, vc := range m.consts {\n\t\tif vc._var == nil {\n\t\t\tlines = append(lines, fmt.Sprintf(\"%s: const [%d %d]\", vc.label, vc.lo, vc.hi))\n\t\t} else {\n\t\t\tlines = append(lines, fmt.Sprintf(\"%s: const %#x\", vc.label, vc._var))\n\t\t}\n\t}\n\treturn \"\\n\" + strings.Join(lines, \"\\n\") + \"\\n\"\n}\n\nfunc (m *machine) encodeWithoutSSA(root *instruction) {\n\tm.labelResolutionPends = m.labelResolutionPends[:0]\n\tbufPtr := m.c.BufPtr()\n\tfor cur := root; cur != nil; cur = cur.next {\n\t\toffset := int64(len(*bufPtr))\n\t\tif cur.kind == nop0 {\n\t\t\tl := cur.nop0Label()\n\t\t\tpos := m.labelPositionPool.Get(int(l))\n\t\t\tif pos != nil {\n\t\t\t\tpos.binaryOffset = offset\n\t\t\t}\n\t\t}\n\n\t\tneedLabelResolution := cur.encode(m.c)\n\t\tif needLabelResolution {\n\t\t\tm.labelResolutionPends = append(m.labelResolutionPends,\n\t\t\t\tlabelResolutionPend{instr: cur, imm32Offset: int64(len(*bufPtr)) - 4},\n\t\t\t)\n\t\t}\n\t}\n\n\tfor i := range m.labelResolutionPends {\n\t\tp := &m.labelResolutionPends[i]\n\t\tswitch p.instr.kind {\n\t\tcase jmp, jmpIf, lea:\n\t\t\ttarget := p.instr.jmpLabel()\n\t\t\ttargetOffset := m.labelPositionPool.Get(int(target)).binaryOffset\n\t\t\timm32Offset := p.imm32Offset\n\t\t\tjmpOffset := int32(targetOffset - (p.imm32Offset + 4)) // +4 because RIP points to the next instruction.\n\t\t\tbinary.LittleEndian.PutUint32((*bufPtr)[imm32Offset:], uint32(jmpOffset))\n\t\tdefault:\n\t\t\tpanic(\"BUG\")\n\t\t}\n\t}\n}\n\n// Encode implements backend.Machine Encode.\nfunc (m *machine) Encode(ctx context.Context) (err error) {\n\tbufPtr := m.c.BufPtr()\n\n\tvar fn string\n\tvar fnIndex int\n\tvar labelPosToLabel map[*labelPosition]label\n\tif wazevoapi.PerfMapEnabled {\n\t\tfn = wazevoapi.GetCurrentFunctionName(ctx)\n\t\tlabelPosToLabel = make(map[*labelPosition]label)\n\t\tfor i := 0; i <= m.labelPositionPool.MaxIDEncountered(); i++ {\n\t\t\tpos := m.labelPositionPool.Get(i)\n\t\t\tlabelPosToLabel[pos] = label(i)\n\t\t}\n\t\tfnIndex = wazevoapi.GetCurrentFunctionIndex(ctx)\n\t}\n\n\tm.labelResolutionPends = m.labelResolutionPends[:0]\n\tfor _, pos := range m.orderedSSABlockLabelPos {\n\t\toffset := int64(len(*bufPtr))\n\t\tpos.binaryOffset = offset\n\t\tfor cur := pos.begin; cur != pos.end.next; cur = cur.next {\n\t\t\toffset := int64(len(*bufPtr))\n\n\t\t\tswitch cur.kind {\n\t\t\tcase nop0:\n\t\t\t\tl := cur.nop0Label()\n\t\t\t\tif pos := m.labelPositionPool.Get(int(l)); pos != nil {\n\t\t\t\t\tpos.binaryOffset = offset\n\t\t\t\t}\n\t\t\tcase sourceOffsetInfo:\n\t\t\t\tm.c.AddSourceOffsetInfo(offset, cur.sourceOffsetInfo())\n\t\t\t}\n\n\t\t\tneedLabelResolution := cur.encode(m.c)\n\t\t\tif needLabelResolution {\n\t\t\t\tm.labelResolutionPends = append(m.labelResolutionPends,\n\t\t\t\t\tlabelResolutionPend{instr: cur, instrOffset: offset, imm32Offset: int64(len(*bufPtr)) - 4},\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\n\t\tif wazevoapi.PerfMapEnabled {\n\t\t\tl := labelPosToLabel[pos]\n\t\t\tsize := int64(len(*bufPtr)) - offset\n\t\t\twazevoapi.PerfMap.AddModuleEntry(fnIndex, offset, uint64(size), fmt.Sprintf(\"%s:::::%s\", fn, l))\n\t\t}\n\t}\n\n\tfor i := range m.consts {\n\t\toffset := int64(len(*bufPtr))\n\t\tvc := &m.consts[i]\n\t\tvc.labelPos.binaryOffset = offset\n\t\tif vc._var == nil {\n\t\t\tlo, hi := vc.lo, vc.hi\n\t\t\tm.c.Emit8Bytes(lo)\n\t\t\tm.c.Emit8Bytes(hi)\n\t\t} else {\n\t\t\tfor _, b := range vc._var {\n\t\t\t\tm.c.EmitByte(b)\n\t\t\t}\n\t\t}\n\t}\n\n\tbuf := *bufPtr\n\tfor i := range m.labelResolutionPends {\n\t\tp := &m.labelResolutionPends[i]\n\t\tswitch p.instr.kind {\n\t\tcase jmp, jmpIf, lea, xmmUnaryRmR:\n\t\t\ttarget := p.instr.jmpLabel()\n\t\t\ttargetOffset := m.labelPositionPool.Get(int(target)).binaryOffset\n\t\t\timm32Offset := p.imm32Offset\n\t\t\tjmpOffset := int32(targetOffset - (p.imm32Offset + 4)) // +4 because RIP points to the next instruction.\n\t\t\tbinary.LittleEndian.PutUint32(buf[imm32Offset:], uint32(jmpOffset))\n\t\tcase jmpTableIsland:\n\t\t\ttableBegin := p.instrOffset\n\t\t\t// Each entry is the offset from the beginning of the jmpTableIsland instruction in 8 bytes.\n\t\t\ttargets := m.jmpTableTargets[p.instr.u1]\n\t\t\tfor i, l := range targets {\n\t\t\t\ttargetOffset := m.labelPositionPool.Get(int(l)).binaryOffset\n\t\t\t\tjmpOffset := targetOffset - tableBegin\n\t\t\t\tbinary.LittleEndian.PutUint64(buf[tableBegin+int64(i)*8:], uint64(jmpOffset))\n\t\t\t}\n\t\tdefault:\n\t\t\tpanic(\"BUG\")\n\t\t}\n\t}\n\treturn\n}\n\n// ResolveRelocations implements backend.Machine.\nfunc (m *machine) ResolveRelocations(refToBinaryOffset []int, _ int, binary []byte, relocations []backend.RelocationInfo, _ []int) {\n\tfor _, r := range relocations {\n\t\toffset := r.Offset\n\t\tcalleeFnOffset := refToBinaryOffset[r.FuncRef]\n\t\t// offset is the offset of the last 4 bytes of the call instruction.\n\t\tcallInstrOffsetBytes := binary[offset : offset+4]\n\t\tdiff := int64(calleeFnOffset) - (offset + 4) // +4 because we want the offset of the next instruction (In x64, RIP always points to the next instruction).\n\t\tcallInstrOffsetBytes[0] = byte(diff)\n\t\tcallInstrOffsetBytes[1] = byte(diff >> 8)\n\t\tcallInstrOffsetBytes[2] = byte(diff >> 16)\n\t\tcallInstrOffsetBytes[3] = byte(diff >> 24)\n\t}\n}\n\n// CallTrampolineIslandInfo implements backend.Machine CallTrampolineIslandInfo.\nfunc (m *machine) CallTrampolineIslandInfo(_ int) (_, _ int, _ error) { return }\n\nfunc (m *machine) lowerIcmpToFlag(xd, yd backend.SSAValueDefinition, _64 bool) {\n\tx := m.getOperand_Reg(xd)\n\ty := m.getOperand_Mem_Imm32_Reg(yd)\n\tcmp := m.allocateInstr().asCmpRmiR(true, y, x.reg(), _64)\n\tm.insert(cmp)\n}\n\nfunc (m *machine) lowerFcmpToFlags(instr *ssa.Instruction) (f1, f2 cond, and bool) {\n\tx, y, c := instr.FcmpData()\n\tswitch c {\n\tcase ssa.FloatCmpCondEqual:\n\t\tf1, f2 = condNP, condZ\n\t\tand = true\n\tcase ssa.FloatCmpCondNotEqual:\n\t\tf1, f2 = condP, condNZ\n\tcase ssa.FloatCmpCondLessThan:\n\t\tf1 = condFromSSAFloatCmpCond(ssa.FloatCmpCondGreaterThan)\n\t\tf2 = condInvalid\n\t\tx, y = y, x\n\tcase ssa.FloatCmpCondLessThanOrEqual:\n\t\tf1 = condFromSSAFloatCmpCond(ssa.FloatCmpCondGreaterThanOrEqual)\n\t\tf2 = condInvalid\n\t\tx, y = y, x\n\tdefault:\n\t\tf1 = condFromSSAFloatCmpCond(c)\n\t\tf2 = condInvalid\n\t}\n\n\tvar opc sseOpcode\n\tif x.Type() == ssa.TypeF32 {\n\t\topc = sseOpcodeUcomiss\n\t} else {\n\t\topc = sseOpcodeUcomisd\n\t}\n\n\txr := m.getOperand_Reg(m.c.ValueDefinition(x))\n\tyr := m.getOperand_Mem_Reg(m.c.ValueDefinition(y))\n\tm.insert(m.allocateInstr().asXmmCmpRmR(opc, yr, xr.reg()))\n\treturn\n}\n\n// allocateInstr allocates an instruction.\nfunc (m *machine) allocateInstr() *instruction {\n\tinstr := m.instrPool.Allocate()\n\tif !m.regAllocStarted {\n\t\tinstr.addedBeforeRegAlloc = true\n\t}\n\treturn instr\n}\n\nfunc (m *machine) allocateNop() *instruction {\n\tinstr := m.allocateInstr()\n\tinstr.kind = nop0\n\treturn instr\n}\n\nfunc (m *machine) insert(i *instruction) {\n\tm.pendingInstructions = append(m.pendingInstructions, i)\n}\n\nfunc (m *machine) allocateBrTarget() (nop *instruction, l label) { //nolint\n\tl, pos := m.allocateLabel()\n\tnop = m.allocateInstr()\n\tnop.asNop0WithLabel(l)\n\tpos.begin, pos.end = nop, nop\n\treturn\n}\n\nfunc (m *machine) allocateLabel() (label, *labelPosition) {\n\tl := m.nextLabel\n\tpos := m.labelPositionPool.GetOrAllocate(int(l))\n\tm.nextLabel++\n\treturn l, pos\n}\n\nfunc (m *machine) getVRegSpillSlotOffsetFromSP(id regalloc.VRegID, size byte) int64 {\n\toffset, ok := m.spillSlots[id]\n\tif !ok {\n\t\toffset = m.spillSlotSize\n\t\tm.spillSlots[id] = offset\n\t\tm.spillSlotSize += int64(size)\n\t}\n\treturn offset\n}\n\nfunc (m *machine) copyTo(src regalloc.VReg, dst regalloc.VReg) {\n\tmov := m.allocateInstr()\n\tif src.RegType() == regalloc.RegTypeInt {\n\t\tmov.asMovRR(src, dst, true)\n\t} else {\n\t\tmov.asXmmUnaryRmR(sseOpcodeMovdqu, newOperandReg(src), dst)\n\t}\n\tm.insert(mov)\n}\n\nfunc (m *machine) copyToTmp(v regalloc.VReg) regalloc.VReg {\n\ttyp := m.c.TypeOf(v)\n\ttmp := m.c.AllocateVReg(typ)\n\tm.copyTo(v, tmp)\n\treturn tmp\n}\n\nfunc (m *machine) requiredStackSize() int64 {\n\treturn m.maxRequiredStackSizeForCalls +\n\t\tm.frameSize() +\n\t\t16 + // Need for stack checking.\n\t\t16 // return address and the caller RBP.\n}\n\nfunc (m *machine) frameSize() int64 {\n\ts := m.clobberedRegSlotSize() + m.spillSlotSize\n\tif s&0xf != 0 {\n\t\tpanic(fmt.Errorf(\"BUG: frame size %d is not 16-byte aligned\", s))\n\t}\n\treturn s\n}\n\nfunc (m *machine) clobberedRegSlotSize() int64 {\n\treturn int64(len(m.clobberedRegs) * 16)\n}\n\nfunc (m *machine) lowerIDivRem(si *ssa.Instruction, isDiv bool, signed bool) {\n\tx, y, execCtx := si.Arg3()\n\n\tdividend := m.getOperand_Reg(m.c.ValueDefinition(x))\n\tdivisor := m.getOperand_Reg(m.c.ValueDefinition(y))\n\tctxVReg := m.c.VRegOf(execCtx)\n\ttmpGp := m.c.AllocateVReg(si.Return().Type())\n\n\tm.copyTo(dividend.reg(), raxVReg)\n\tm.insert(m.allocateInstr().asDefineUninitializedReg(rdxVReg))\n\tm.insert(m.allocateInstr().asDefineUninitializedReg(tmpGp))\n\tseq := m.allocateInstr().asIdivRemSequence(ctxVReg, divisor.reg(), tmpGp, isDiv, signed, x.Type().Bits() == 64)\n\tm.insert(seq)\n\trd := m.c.VRegOf(si.Return())\n\tif isDiv {\n\t\tm.copyTo(raxVReg, rd)\n\t} else {\n\t\tm.copyTo(rdxVReg, rd)\n\t}\n}\n\nfunc (m *machine) lowerIDivRemSequenceAfterRegAlloc(i *instruction) {\n\texecCtx, divisor, tmpGp, isDiv, signed, _64 := i.idivRemSequenceData()\n\n\tdividend := raxVReg\n\n\t// Ensure yr is not zero.\n\ttest := m.allocateInstr()\n\ttest.asCmpRmiR(false, newOperandReg(divisor), divisor, _64)\n\tm.insert(test)\n\n\tjnz := m.allocateInstr()\n\tm.insert(jnz)\n\n\tnz := m.lowerExitWithCode(execCtx, wazevoapi.ExitCodeIntegerDivisionByZero)\n\n\t// If not zero, we can proceed with the division.\n\tjnz.asJmpIf(condNZ, newOperandLabel(nz))\n\n\tvar ifRemNeg1 *instruction\n\tif signed {\n\t\tvar neg1 uint64\n\t\tif _64 {\n\t\t\tneg1 = 0xffffffffffffffff\n\t\t} else {\n\t\t\tneg1 = 0xffffffff\n\t\t}\n\t\tm.lowerIconst(tmpGp, neg1, _64)\n\n\t\tif isDiv {\n\t\t\t// For signed division, we have to have branches for \"math.MinInt{32,64} / -1\"\n\t\t\t// case which results in the floating point exception via division error as\n\t\t\t// the resulting value exceeds the maximum of signed int.\n\n\t\t\t// First, we check if the divisor is -1.\n\t\t\tcmp := m.allocateInstr()\n\t\t\tcmp.asCmpRmiR(true, newOperandReg(tmpGp), divisor, _64)\n\t\t\tm.insert(cmp)\n\n\t\t\tifNotNeg1 := m.allocateInstr()\n\t\t\tm.insert(ifNotNeg1)\n\n\t\t\tvar minInt uint64\n\t\t\tif _64 {\n\t\t\t\tminInt = 0x8000000000000000\n\t\t\t} else {\n\t\t\t\tminInt = 0x80000000\n\t\t\t}\n\t\t\tm.lowerIconst(tmpGp, minInt, _64)\n\n\t\t\t// Next we check if the quotient is the most negative value for the signed integer, i.e.\n\t\t\t// if we are trying to do (math.MinInt32 / -1) or (math.MinInt64 / -1) respectively.\n\t\t\tcmp2 := m.allocateInstr()\n\t\t\tcmp2.asCmpRmiR(true, newOperandReg(tmpGp), dividend, _64)\n\t\t\tm.insert(cmp2)\n\n\t\t\tifNotMinInt := m.allocateInstr()\n\t\t\tm.insert(ifNotMinInt)\n\n\t\t\t// Trap if we are trying to do (math.MinInt32 / -1) or (math.MinInt64 / -1),\n\t\t\t// as that is the overflow in division as the result becomes 2^31 which is larger than\n\t\t\t// the maximum of signed 32-bit int (2^31-1).\n\t\t\tend := m.lowerExitWithCode(execCtx, wazevoapi.ExitCodeIntegerOverflow)\n\t\t\tifNotNeg1.asJmpIf(condNZ, newOperandLabel(end))\n\t\t\tifNotMinInt.asJmpIf(condNZ, newOperandLabel(end))\n\t\t} else {\n\t\t\t// If it is remainder, zeros DX register and compare the divisor to -1.\n\t\t\txor := m.allocateInstr().asZeros(rdxVReg)\n\t\t\tm.insert(xor)\n\n\t\t\t// We check if the divisor is -1.\n\t\t\tcmp := m.allocateInstr()\n\t\t\tcmp.asCmpRmiR(true, newOperandReg(tmpGp), divisor, _64)\n\t\t\tm.insert(cmp)\n\n\t\t\tifRemNeg1 = m.allocateInstr()\n\t\t\tm.insert(ifRemNeg1)\n\t\t}\n\n\t\t// Sign-extend DX register to have 2*x.Type().Bits() dividend over DX and AX registers.\n\t\tsed := m.allocateInstr()\n\t\tsed.asSignExtendData(_64)\n\t\tm.insert(sed)\n\t} else {\n\t\t// Zeros DX register to have 2*x.Type().Bits() dividend over DX and AX registers.\n\t\tzeros := m.allocateInstr().asZeros(rdxVReg)\n\t\tm.insert(zeros)\n\t}\n\n\tdiv := m.allocateInstr()\n\tdiv.asDiv(newOperandReg(divisor), signed, _64)\n\tm.insert(div)\n\n\tnop, end := m.allocateBrTarget()\n\tm.insert(nop)\n\t// If we are compiling a Rem instruction, when the divisor is -1 we land at the end of the function.\n\tif ifRemNeg1 != nil {\n\t\tifRemNeg1.asJmpIf(condZ, newOperandLabel(end))\n\t}\n}\n\nfunc (m *machine) lowerRound(instr *ssa.Instruction, imm roundingMode) {\n\tx := instr.Arg()\n\tif !x.Type().IsFloat() {\n\t\tpanic(\"BUG?\")\n\t}\n\tvar op sseOpcode\n\tif x.Type().Bits() == 64 {\n\t\top = sseOpcodeRoundsd\n\t} else {\n\t\top = sseOpcodeRoundss\n\t}\n\n\txDef := m.c.ValueDefinition(x)\n\trm := m.getOperand_Mem_Reg(xDef)\n\trd := m.c.VRegOf(instr.Return())\n\n\txmm := m.allocateInstr().asXmmUnaryRmRImm(op, uint8(imm), rm, rd)\n\tm.insert(xmm)\n}\n\nfunc (m *machine) lowerFminFmax(instr *ssa.Instruction) {\n\tx, y := instr.Arg2()\n\tif !x.Type().IsFloat() {\n\t\tpanic(\"BUG?\")\n\t}\n\n\t_64 := x.Type().Bits() == 64\n\tisMin := instr.Opcode() == ssa.OpcodeFmin\n\tvar minMaxOp sseOpcode\n\n\tswitch {\n\tcase _64 && isMin:\n\t\tminMaxOp = sseOpcodeMinpd\n\tcase _64 && !isMin:\n\t\tminMaxOp = sseOpcodeMaxpd\n\tcase !_64 && isMin:\n\t\tminMaxOp = sseOpcodeMinps\n\tcase !_64 && !isMin:\n\t\tminMaxOp = sseOpcodeMaxps\n\t}\n\n\txDef, yDef := m.c.ValueDefinition(x), m.c.ValueDefinition(y)\n\trm := m.getOperand_Reg(xDef)\n\t// We cannot ensure that y is aligned to 16 bytes, so we have to use it on reg.\n\trn := m.getOperand_Reg(yDef)\n\trd := m.c.VRegOf(instr.Return())\n\n\ttmp := m.copyToTmp(rm.reg())\n\n\t// Check if this is (either x1 or x2 is NaN) or (x1 equals x2) case.\n\tcmp := m.allocateInstr()\n\tif _64 {\n\t\tcmp.asXmmCmpRmR(sseOpcodeUcomisd, rn, tmp)\n\t} else {\n\t\tcmp.asXmmCmpRmR(sseOpcodeUcomiss, rn, tmp)\n\t}\n\tm.insert(cmp)\n\n\t// At this point, we have the three cases of conditional flags below\n\t// (See https://www.felixcloutier.com/x86/ucomiss#operation for detail.)\n\t//\n\t// 1) Two values are NaN-free and different: All flags are cleared.\n\t// 2) Two values are NaN-free and equal: Only ZF flags is set.\n\t// 3) One of Two values is NaN: ZF, PF and CF flags are set.\n\n\t// Jump instruction to handle 1) case by checking the ZF flag\n\t// as ZF is only set for 2) and 3) cases.\n\tnanFreeOrDiffJump := m.allocateInstr()\n\tm.insert(nanFreeOrDiffJump)\n\n\t// Start handling 2) and 3).\n\n\t// Jump if one of two values is NaN by checking the parity flag (PF).\n\tifIsNan := m.allocateInstr()\n\tm.insert(ifIsNan)\n\n\t// Start handling 2) NaN-free and equal.\n\n\t// Before we exit this case, we have to ensure that positive zero (or negative zero for min instruction) is\n\t// returned if two values are positive and negative zeros.\n\tvar op sseOpcode\n\tswitch {\n\tcase !_64 && isMin:\n\t\top = sseOpcodeOrps\n\tcase _64 && isMin:\n\t\top = sseOpcodeOrpd\n\tcase !_64 && !isMin:\n\t\top = sseOpcodeAndps\n\tcase _64 && !isMin:\n\t\top = sseOpcodeAndpd\n\t}\n\torAnd := m.allocateInstr()\n\torAnd.asXmmRmR(op, rn, tmp)\n\tm.insert(orAnd)\n\n\t// Done, jump to end.\n\tsameExitJump := m.allocateInstr()\n\tm.insert(sameExitJump)\n\n\t// Start handling 3) either is NaN.\n\tisNanTarget, isNan := m.allocateBrTarget()\n\tm.insert(isNanTarget)\n\tifIsNan.asJmpIf(condP, newOperandLabel(isNan))\n\n\t// We emit the ADD instruction to produce the NaN in tmp.\n\tadd := m.allocateInstr()\n\tif _64 {\n\t\tadd.asXmmRmR(sseOpcodeAddsd, rn, tmp)\n\t} else {\n\t\tadd.asXmmRmR(sseOpcodeAddss, rn, tmp)\n\t}\n\tm.insert(add)\n\n\t// Exit from the NaN case branch.\n\tnanExitJmp := m.allocateInstr()\n\tm.insert(nanExitJmp)\n\n\t// Start handling 1).\n\tdoMinMaxTarget, doMinMax := m.allocateBrTarget()\n\tm.insert(doMinMaxTarget)\n\tnanFreeOrDiffJump.asJmpIf(condNZ, newOperandLabel(doMinMax))\n\n\t// Now handle the NaN-free and different values case.\n\tminMax := m.allocateInstr()\n\tminMax.asXmmRmR(minMaxOp, rn, tmp)\n\tm.insert(minMax)\n\n\tendNop, end := m.allocateBrTarget()\n\tm.insert(endNop)\n\tnanExitJmp.asJmp(newOperandLabel(end))\n\tsameExitJump.asJmp(newOperandLabel(end))\n\n\tm.copyTo(tmp, rd)\n}\n\nfunc (m *machine) lowerFcopysign(instr *ssa.Instruction) {\n\tx, y := instr.Arg2()\n\tif !x.Type().IsFloat() {\n\t\tpanic(\"BUG\")\n\t}\n\n\t_64 := x.Type().Bits() == 64\n\n\txDef, yDef := m.c.ValueDefinition(x), m.c.ValueDefinition(y)\n\trm := m.getOperand_Reg(xDef)\n\trn := m.getOperand_Reg(yDef)\n\trd := m.c.VRegOf(instr.Return())\n\n\t// Clear the non-sign bits of src via AND with the mask.\n\tvar opAnd, opOr sseOpcode\n\tvar signMask uint64\n\tif _64 {\n\t\tsignMask, opAnd, opOr = 0x8000000000000000, sseOpcodeAndpd, sseOpcodeOrpd\n\t} else {\n\t\tsignMask, opAnd, opOr = 0x80000000, sseOpcodeAndps, sseOpcodeOrps\n\t}\n\n\tsignBitReg := m.c.AllocateVReg(x.Type())\n\tm.lowerFconst(signBitReg, signMask, _64)\n\tnonSignBitReg := m.c.AllocateVReg(x.Type())\n\tm.lowerFconst(nonSignBitReg, ^signMask, _64)\n\n\t// Extract the sign bits of rn.\n\tand := m.allocateInstr().asXmmRmR(opAnd, rn, signBitReg)\n\tm.insert(and)\n\n\t// Clear the sign bit of dst via AND with the non-sign bit mask.\n\txor := m.allocateInstr().asXmmRmR(opAnd, rm, nonSignBitReg)\n\tm.insert(xor)\n\n\t// Copy the sign bits of src to dst via OR.\n\tor := m.allocateInstr().asXmmRmR(opOr, newOperandReg(signBitReg), nonSignBitReg)\n\tm.insert(or)\n\n\tm.copyTo(nonSignBitReg, rd)\n}\n\nfunc (m *machine) lowerBitcast(instr *ssa.Instruction) {\n\tx, dstTyp := instr.BitcastData()\n\tsrcTyp := x.Type()\n\trn := m.getOperand_Reg(m.c.ValueDefinition(x))\n\trd := m.c.VRegOf(instr.Return())\n\tswitch {\n\tcase srcTyp == ssa.TypeF32 && dstTyp == ssa.TypeI32:\n\t\tcvt := m.allocateInstr().asXmmToGpr(sseOpcodeMovd, rn.reg(), rd, false)\n\t\tm.insert(cvt)\n\tcase srcTyp == ssa.TypeI32 && dstTyp == ssa.TypeF32:\n\t\tcvt := m.allocateInstr().asGprToXmm(sseOpcodeMovd, rn, rd, false)\n\t\tm.insert(cvt)\n\tcase srcTyp == ssa.TypeF64 && dstTyp == ssa.TypeI64:\n\t\tcvt := m.allocateInstr().asXmmToGpr(sseOpcodeMovq, rn.reg(), rd, true)\n\t\tm.insert(cvt)\n\tcase srcTyp == ssa.TypeI64 && dstTyp == ssa.TypeF64:\n\t\tcvt := m.allocateInstr().asGprToXmm(sseOpcodeMovq, rn, rd, true)\n\t\tm.insert(cvt)\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"invalid bitcast from %s to %s\", srcTyp, dstTyp))\n\t}\n}\n\nfunc (m *machine) lowerFcvtToSint(ctxVReg, rn, rd regalloc.VReg, src64, dst64, sat bool) {\n\tvar tmpXmm regalloc.VReg\n\tif dst64 {\n\t\ttmpXmm = m.c.AllocateVReg(ssa.TypeF64)\n\t} else {\n\t\ttmpXmm = m.c.AllocateVReg(ssa.TypeF32)\n\t}\n\n\tm.insert(m.allocateInstr().asDefineUninitializedReg(tmpXmm))\n\ttmpGp, tmpGp2 := m.c.AllocateVReg(ssa.TypeI64), m.c.AllocateVReg(ssa.TypeI64)\n\tm.insert(m.allocateInstr().asDefineUninitializedReg(tmpGp))\n\tm.insert(m.allocateInstr().asDefineUninitializedReg(tmpGp2))\n\n\tm.insert(m.allocateFcvtToSintSequence(ctxVReg, rn, tmpGp, tmpGp2, tmpXmm, src64, dst64, sat))\n\tm.copyTo(tmpGp, rd)\n}\n\nfunc (m *machine) lowerFcvtToSintSequenceAfterRegalloc(i *instruction) {\n\texecCtx, src, tmpGp, tmpGp2, tmpXmm, src64, dst64, sat := i.fcvtToSintSequenceData()\n\tvar cmpOp, truncOp sseOpcode\n\tif src64 {\n\t\tcmpOp, truncOp = sseOpcodeUcomisd, sseOpcodeCvttsd2si\n\t} else {\n\t\tcmpOp, truncOp = sseOpcodeUcomiss, sseOpcodeCvttss2si\n\t}\n\n\ttrunc := m.allocateInstr()\n\ttrunc.asXmmToGpr(truncOp, src, tmpGp, dst64)\n\tm.insert(trunc)\n\n\t// Check if the dst operand was INT_MIN, by checking it against 1.\n\tcmp1 := m.allocateInstr()\n\tcmp1.asCmpRmiR(true, newOperandImm32(1), tmpGp, dst64)\n\tm.insert(cmp1)\n\n\t// If no overflow, then we are done.\n\tdoneTarget, done := m.allocateBrTarget()\n\tifNoOverflow := m.allocateInstr()\n\tifNoOverflow.asJmpIf(condNO, newOperandLabel(done))\n\tm.insert(ifNoOverflow)\n\n\t// Now, check for NaN.\n\tcmpNan := m.allocateInstr()\n\tcmpNan.asXmmCmpRmR(cmpOp, newOperandReg(src), src)\n\tm.insert(cmpNan)\n\n\t// We allocate the \"non-nan target\" here, but we will insert it later.\n\tnotNanTarget, notNaN := m.allocateBrTarget()\n\tifNotNan := m.allocateInstr()\n\tifNotNan.asJmpIf(condNP, newOperandLabel(notNaN))\n\tm.insert(ifNotNan)\n\n\tif sat {\n\t\t// If NaN and saturating, return 0.\n\t\tzeroDst := m.allocateInstr().asZeros(tmpGp)\n\t\tm.insert(zeroDst)\n\n\t\tjmpEnd := m.allocateInstr()\n\t\tjmpEnd.asJmp(newOperandLabel(done))\n\t\tm.insert(jmpEnd)\n\n\t\t// Otherwise:\n\t\tm.insert(notNanTarget)\n\n\t\t// Zero-out the tmp register.\n\t\tzero := m.allocateInstr().asZeros(tmpXmm)\n\t\tm.insert(zero)\n\n\t\tcmpXmm := m.allocateInstr().asXmmCmpRmR(cmpOp, newOperandReg(tmpXmm), src)\n\t\tm.insert(cmpXmm)\n\n\t\t// if >= jump to end.\n\t\tjmpEnd2 := m.allocateInstr()\n\t\tjmpEnd2.asJmpIf(condB, newOperandLabel(done))\n\t\tm.insert(jmpEnd2)\n\n\t\t// Otherwise, saturate to INT_MAX.\n\t\tif dst64 {\n\t\t\tm.lowerIconst(tmpGp, math.MaxInt64, dst64)\n\t\t} else {\n\t\t\tm.lowerIconst(tmpGp, math.MaxInt32, dst64)\n\t\t}\n\n\t} else {\n\n\t\t// If non-sat, NaN, trap.\n\t\tm.lowerExitWithCode(execCtx, wazevoapi.ExitCodeInvalidConversionToInteger)\n\n\t\t// Otherwise, we will jump here.\n\t\tm.insert(notNanTarget)\n\n\t\t// jump over trap if src larger than threshold\n\t\tcondAboveThreshold := condNB\n\n\t\t// The magic constants are various combination of minInt for int[32|64] represented as float[32|64].\n\t\tvar minInt uint64\n\t\tswitch {\n\t\tcase src64 && dst64:\n\t\t\tminInt = 0xc3e0000000000000\n\t\tcase src64 && !dst64:\n\t\t\tcondAboveThreshold = condNBE\n\t\t\tminInt = 0xC1E0_0000_0020_0000\n\t\tcase !src64 && dst64:\n\t\t\tminInt = 0xDF00_0000\n\t\tcase !src64 && !dst64:\n\t\t\tminInt = 0xCF00_0000\n\t\t}\n\n\t\tloadToGP := m.allocateInstr().asImm(tmpGp2, minInt, src64)\n\t\tm.insert(loadToGP)\n\n\t\tmovToXmm := m.allocateInstr().asGprToXmm(sseOpcodeMovq, newOperandReg(tmpGp2), tmpXmm, src64)\n\t\tm.insert(movToXmm)\n\n\t\tcmpXmm := m.allocateInstr().asXmmCmpRmR(cmpOp, newOperandReg(tmpXmm), src)\n\t\tm.insert(cmpXmm)\n\n\t\tjmpIfLarger := m.allocateInstr()\n\t\tcheckPositiveTarget, checkPositive := m.allocateBrTarget()\n\t\tjmpIfLarger.asJmpIf(condAboveThreshold, newOperandLabel(checkPositive))\n\t\tm.insert(jmpIfLarger)\n\n\t\tm.lowerExitWithCode(execCtx, wazevoapi.ExitCodeIntegerOverflow)\n\n\t\t// If positive, it was a real overflow.\n\t\tm.insert(checkPositiveTarget)\n\n\t\t// Zero out the temp register.\n\t\txorpd := m.allocateInstr()\n\t\txorpd.asXmmRmR(sseOpcodeXorpd, newOperandReg(tmpXmm), tmpXmm)\n\t\tm.insert(xorpd)\n\n\t\tpos := m.allocateInstr()\n\t\tpos.asXmmCmpRmR(cmpOp, newOperandReg(src), tmpXmm)\n\t\tm.insert(pos)\n\n\t\t// If >= jump to end.\n\t\tjmp := m.allocateInstr().asJmpIf(condNB, newOperandLabel(done))\n\t\tm.insert(jmp)\n\t\tm.lowerExitWithCode(execCtx, wazevoapi.ExitCodeIntegerOverflow)\n\t}\n\n\tm.insert(doneTarget)\n}\n\nfunc (m *machine) lowerFcvtToUint(ctxVReg, rn, rd regalloc.VReg, src64, dst64, sat bool) {\n\ttmpXmm, tmpXmm2 := m.c.AllocateVReg(ssa.TypeF64), m.c.AllocateVReg(ssa.TypeF64)\n\tm.insert(m.allocateInstr().asDefineUninitializedReg(tmpXmm))\n\tm.insert(m.allocateInstr().asDefineUninitializedReg(tmpXmm2))\n\ttmpGp, tmpGp2 := m.c.AllocateVReg(ssa.TypeI64), m.c.AllocateVReg(ssa.TypeI64)\n\tm.insert(m.allocateInstr().asDefineUninitializedReg(tmpGp))\n\tm.insert(m.allocateInstr().asDefineUninitializedReg(tmpGp2))\n\n\tm.insert(m.allocateFcvtToUintSequence(\n\t\tctxVReg, rn, tmpGp, tmpGp2, tmpXmm, tmpXmm2, src64, dst64, sat,\n\t))\n\tm.copyTo(tmpGp, rd)\n}\n\nfunc (m *machine) lowerFcvtToUintSequenceAfterRegalloc(i *instruction) {\n\texecCtx, src, tmpGp, tmpGp2, tmpXmm, tmpXmm2, src64, dst64, sat := i.fcvtToUintSequenceData()\n\n\tvar subOp, cmpOp, truncOp sseOpcode\n\tif src64 {\n\t\tsubOp, cmpOp, truncOp = sseOpcodeSubsd, sseOpcodeUcomisd, sseOpcodeCvttsd2si\n\t} else {\n\t\tsubOp, cmpOp, truncOp = sseOpcodeSubss, sseOpcodeUcomiss, sseOpcodeCvttss2si\n\t}\n\n\tdoneTarget, done := m.allocateBrTarget()\n\n\tswitch {\n\tcase src64 && dst64:\n\t\tloadToGP := m.allocateInstr().asImm(tmpGp, 0x43e0000000000000, true)\n\t\tm.insert(loadToGP)\n\t\tmovToXmm := m.allocateInstr().asGprToXmm(sseOpcodeMovq, newOperandReg(tmpGp), tmpXmm, true)\n\t\tm.insert(movToXmm)\n\tcase src64 && !dst64:\n\t\tloadToGP := m.allocateInstr().asImm(tmpGp, 0x41e0000000000000, true)\n\t\tm.insert(loadToGP)\n\t\tmovToXmm := m.allocateInstr().asGprToXmm(sseOpcodeMovq, newOperandReg(tmpGp), tmpXmm, true)\n\t\tm.insert(movToXmm)\n\tcase !src64 && dst64:\n\t\tloadToGP := m.allocateInstr().asImm(tmpGp, 0x5f000000, false)\n\t\tm.insert(loadToGP)\n\t\tmovToXmm := m.allocateInstr().asGprToXmm(sseOpcodeMovq, newOperandReg(tmpGp), tmpXmm, false)\n\t\tm.insert(movToXmm)\n\tcase !src64 && !dst64:\n\t\tloadToGP := m.allocateInstr().asImm(tmpGp, 0x4f000000, false)\n\t\tm.insert(loadToGP)\n\t\tmovToXmm := m.allocateInstr().asGprToXmm(sseOpcodeMovq, newOperandReg(tmpGp), tmpXmm, false)\n\t\tm.insert(movToXmm)\n\t}\n\n\tcmp := m.allocateInstr()\n\tcmp.asXmmCmpRmR(cmpOp, newOperandReg(tmpXmm), src)\n\tm.insert(cmp)\n\n\t// If above `tmp` (\"large threshold\"), jump to `ifAboveThreshold`\n\tifAboveThresholdTarget, ifAboveThreshold := m.allocateBrTarget()\n\tjmpIfAboveThreshold := m.allocateInstr()\n\tjmpIfAboveThreshold.asJmpIf(condNB, newOperandLabel(ifAboveThreshold))\n\tm.insert(jmpIfAboveThreshold)\n\n\tifNotNaNTarget, ifNotNaN := m.allocateBrTarget()\n\tjmpIfNotNaN := m.allocateInstr()\n\tjmpIfNotNaN.asJmpIf(condNP, newOperandLabel(ifNotNaN))\n\tm.insert(jmpIfNotNaN)\n\n\t// If NaN, handle the error condition.\n\tif sat {\n\t\t// On NaN, saturating, we just return 0.\n\t\tzeros := m.allocateInstr().asZeros(tmpGp)\n\t\tm.insert(zeros)\n\n\t\tjmpEnd := m.allocateInstr()\n\t\tjmpEnd.asJmp(newOperandLabel(done))\n\t\tm.insert(jmpEnd)\n\t} else {\n\t\t// On NaN, non-saturating, we trap.\n\t\tm.lowerExitWithCode(execCtx, wazevoapi.ExitCodeInvalidConversionToInteger)\n\t}\n\n\t// If not NaN, land here.\n\tm.insert(ifNotNaNTarget)\n\n\t// Truncation happens here.\n\n\ttrunc := m.allocateInstr()\n\ttrunc.asXmmToGpr(truncOp, src, tmpGp, dst64)\n\tm.insert(trunc)\n\n\t// Check if the result is negative.\n\tcmpNeg := m.allocateInstr()\n\tcmpNeg.asCmpRmiR(true, newOperandImm32(0), tmpGp, dst64)\n\tm.insert(cmpNeg)\n\n\t// If non-neg, jump to end.\n\tjmpIfNonNeg := m.allocateInstr()\n\tjmpIfNonNeg.asJmpIf(condNL, newOperandLabel(done))\n\tm.insert(jmpIfNonNeg)\n\n\tif sat {\n\t\t// If the input was \"small\" (< 2**(width -1)), the only way to get an integer\n\t\t// overflow is because the input was too small: saturate to the min value, i.e. 0.\n\t\tzeros := m.allocateInstr().asZeros(tmpGp)\n\t\tm.insert(zeros)\n\n\t\tjmpEnd := m.allocateInstr()\n\t\tjmpEnd.asJmp(newOperandLabel(done))\n\t\tm.insert(jmpEnd)\n\t} else {\n\t\t// If not saturating, trap.\n\t\tm.lowerExitWithCode(execCtx, wazevoapi.ExitCodeIntegerOverflow)\n\t}\n\n\t// If above the threshold, land here.\n\tm.insert(ifAboveThresholdTarget)\n\n\t// tmpDiff := threshold - rn.\n\tcopySrc := m.allocateInstr().asXmmUnaryRmR(sseOpcodeMovdqu, newOperandReg(src), tmpXmm2)\n\tm.insert(copySrc)\n\n\tsub := m.allocateInstr()\n\tsub.asXmmRmR(subOp, newOperandReg(tmpXmm), tmpXmm2) // must be -0x8000000000000000\n\tm.insert(sub)\n\n\ttrunc2 := m.allocateInstr()\n\ttrunc2.asXmmToGpr(truncOp, tmpXmm2, tmpGp, dst64)\n\tm.insert(trunc2)\n\n\t// Check if the result is negative.\n\tcmpNeg2 := m.allocateInstr().asCmpRmiR(true, newOperandImm32(0), tmpGp, dst64)\n\tm.insert(cmpNeg2)\n\n\tifNextLargeTarget, ifNextLarge := m.allocateBrTarget()\n\tjmpIfNextLarge := m.allocateInstr()\n\tjmpIfNextLarge.asJmpIf(condNL, newOperandLabel(ifNextLarge))\n\tm.insert(jmpIfNextLarge)\n\n\tif sat {\n\t\t// The input was \"large\" (>= maxInt), so the only way to get an integer\n\t\t// overflow is because the input was too large: saturate to the max value.\n\t\tvar maxInt uint64\n\t\tif dst64 {\n\t\t\tmaxInt = math.MaxUint64\n\t\t} else {\n\t\t\tmaxInt = math.MaxUint32\n\t\t}\n\t\tm.lowerIconst(tmpGp, maxInt, dst64)\n\n\t\tjmpToEnd := m.allocateInstr()\n\t\tjmpToEnd.asJmp(newOperandLabel(done))\n\t\tm.insert(jmpToEnd)\n\t} else {\n\t\t// If not saturating, trap.\n\t\tm.lowerExitWithCode(execCtx, wazevoapi.ExitCodeIntegerOverflow)\n\t}\n\n\tm.insert(ifNextLargeTarget)\n\n\tvar op operand\n\tif dst64 {\n\t\tm.lowerIconst(tmpGp2, 0x8000000000000000, true)\n\t\top = newOperandReg(tmpGp2)\n\t} else {\n\t\top = newOperandImm32(0x80000000)\n\t}\n\n\tadd := m.allocateInstr()\n\tadd.asAluRmiR(aluRmiROpcodeAdd, op, tmpGp, dst64)\n\tm.insert(add)\n\n\tm.insert(doneTarget)\n}\n\nfunc (m *machine) lowerFcvtFromSint(rn, rd operand, src64, dst64 bool) {\n\tvar op sseOpcode\n\tif dst64 {\n\t\top = sseOpcodeCvtsi2sd\n\t} else {\n\t\top = sseOpcodeCvtsi2ss\n\t}\n\n\ttrunc := m.allocateInstr()\n\ttrunc.asGprToXmm(op, rn, rd.reg(), src64)\n\tm.insert(trunc)\n}\n\nfunc (m *machine) lowerFcvtFromUint(rn, rd operand, src64, dst64 bool) {\n\tvar op sseOpcode\n\tif dst64 {\n\t\top = sseOpcodeCvtsi2sd\n\t} else {\n\t\top = sseOpcodeCvtsi2ss\n\t}\n\n\t// Src is 32 bit, then we just perform the conversion with 64 bit width.\n\t//\n\t// See the following link for why we use 64bit conversion for unsigned 32bit integer sources:\n\t// https://stackoverflow.com/questions/41495498/fpu-operations-generated-by-gcc-during-casting-integer-to-float.\n\t//\n\t// Here's the summary:\n\t// >> CVTSI2SS is indeed designed for converting a signed integer to a scalar single-precision float,\n\t// >> not an unsigned integer like you have here. So what gives? Well, a 64-bit processor has 64-bit wide\n\t// >> registers available, so the unsigned 32-bit input values can be stored as signed 64-bit intermediate values,\n\t// >> which allows CVTSI2SS to be used after all.\n\t//\n\tif !src64 {\n\t\t// Before we convert, we have to clear the higher 32-bits of the 64-bit register\n\t\t// to get the correct result.\n\t\ttmp := m.c.AllocateVReg(ssa.TypeI32)\n\t\tm.insert(m.allocateInstr().asMovzxRmR(extModeLQ, rn, tmp))\n\t\tm.insert(m.allocateInstr().asGprToXmm(op, newOperandReg(tmp), rd.reg(), true))\n\t\treturn\n\t}\n\n\t// If uint64, we have to do a bit more work.\n\tendTarget, end := m.allocateBrTarget()\n\n\tvar tmpXmm regalloc.VReg\n\tif dst64 {\n\t\ttmpXmm = m.c.AllocateVReg(ssa.TypeF64)\n\t} else {\n\t\ttmpXmm = m.c.AllocateVReg(ssa.TypeF32)\n\t}\n\n\t// Check if the most significant bit (sign bit) is set.\n\ttest := m.allocateInstr()\n\ttest.asCmpRmiR(false, rn, rn.reg(), src64)\n\tm.insert(test)\n\n\t// Jump if the sign bit is set.\n\tifSignTarget, ifSign := m.allocateBrTarget()\n\tjmpIfNeg := m.allocateInstr()\n\tjmpIfNeg.asJmpIf(condS, newOperandLabel(ifSign))\n\tm.insert(jmpIfNeg)\n\n\t// If the sign bit is not set, we could fit the unsigned int into float32/float64.\n\t// So, we convert it to float and emit jump instruction to exit from this branch.\n\tcvt := m.allocateInstr()\n\tcvt.asGprToXmm(op, rn, tmpXmm, src64)\n\tm.insert(cvt)\n\n\t// We are done, jump to end.\n\tjmpEnd := m.allocateInstr()\n\tjmpEnd.asJmp(newOperandLabel(end))\n\tm.insert(jmpEnd)\n\n\t// Now handling the case where sign-bit is set.\n\t// We emit the following sequences:\n\t// \t   mov      %rn, %tmp\n\t// \t   shr      1, %tmp\n\t// \t   mov      %rn, %tmp2\n\t// \t   and      1, %tmp2\n\t// \t   or       %tmp2, %tmp\n\t// \t   cvtsi2ss %tmp, %xmm0\n\t// \t   addsd    %xmm0, %xmm0\n\tm.insert(ifSignTarget)\n\n\ttmp := m.copyToTmp(rn.reg())\n\tshr := m.allocateInstr()\n\tshr.asShiftR(shiftROpShiftRightLogical, newOperandImm32(1), tmp, src64)\n\tm.insert(shr)\n\n\ttmp2 := m.copyToTmp(rn.reg())\n\tand := m.allocateInstr()\n\tand.asAluRmiR(aluRmiROpcodeAnd, newOperandImm32(1), tmp2, src64)\n\tm.insert(and)\n\n\tor := m.allocateInstr()\n\tor.asAluRmiR(aluRmiROpcodeOr, newOperandReg(tmp2), tmp, src64)\n\tm.insert(or)\n\n\tcvt2 := m.allocateInstr()\n\tcvt2.asGprToXmm(op, newOperandReg(tmp), tmpXmm, src64)\n\tm.insert(cvt2)\n\n\taddsd := m.allocateInstr()\n\tif dst64 {\n\t\taddsd.asXmmRmR(sseOpcodeAddsd, newOperandReg(tmpXmm), tmpXmm)\n\t} else {\n\t\taddsd.asXmmRmR(sseOpcodeAddss, newOperandReg(tmpXmm), tmpXmm)\n\t}\n\tm.insert(addsd)\n\n\tm.insert(endTarget)\n\tm.copyTo(tmpXmm, rd.reg())\n}\n\nfunc (m *machine) lowerVanyTrue(instr *ssa.Instruction) {\n\tx := instr.Arg()\n\trm := m.getOperand_Reg(m.c.ValueDefinition(x))\n\trd := m.c.VRegOf(instr.Return())\n\n\ttmp := m.c.AllocateVReg(ssa.TypeI32)\n\n\tcmp := m.allocateInstr()\n\tcmp.asXmmCmpRmR(sseOpcodePtest, rm, rm.reg())\n\tm.insert(cmp)\n\n\tsetcc := m.allocateInstr()\n\tsetcc.asSetcc(condNZ, tmp)\n\tm.insert(setcc)\n\n\t// Clear the irrelevant bits.\n\tand := m.allocateInstr()\n\tand.asAluRmiR(aluRmiROpcodeAnd, newOperandImm32(1), tmp, false)\n\tm.insert(and)\n\n\tm.copyTo(tmp, rd)\n}\n\nfunc (m *machine) lowerVallTrue(instr *ssa.Instruction) {\n\tx, lane := instr.ArgWithLane()\n\tvar op sseOpcode\n\tswitch lane {\n\tcase ssa.VecLaneI8x16:\n\t\top = sseOpcodePcmpeqb\n\tcase ssa.VecLaneI16x8:\n\t\top = sseOpcodePcmpeqw\n\tcase ssa.VecLaneI32x4:\n\t\top = sseOpcodePcmpeqd\n\tcase ssa.VecLaneI64x2:\n\t\top = sseOpcodePcmpeqq\n\t}\n\trm := m.getOperand_Reg(m.c.ValueDefinition(x))\n\trd := m.c.VRegOf(instr.Return())\n\n\ttmp := m.c.AllocateVReg(ssa.TypeV128)\n\n\tzeros := m.allocateInstr()\n\tzeros.asZeros(tmp)\n\tm.insert(zeros)\n\n\tpcmp := m.allocateInstr()\n\tpcmp.asXmmRmR(op, rm, tmp)\n\tm.insert(pcmp)\n\n\ttest := m.allocateInstr()\n\ttest.asXmmCmpRmR(sseOpcodePtest, newOperandReg(tmp), tmp)\n\tm.insert(test)\n\n\ttmp2 := m.c.AllocateVReg(ssa.TypeI32)\n\n\tsetcc := m.allocateInstr()\n\tsetcc.asSetcc(condZ, tmp2)\n\tm.insert(setcc)\n\n\t// Clear the irrelevant bits.\n\tand := m.allocateInstr()\n\tand.asAluRmiR(aluRmiROpcodeAnd, newOperandImm32(1), tmp2, false)\n\tm.insert(and)\n\n\tm.copyTo(tmp2, rd)\n}\n\nfunc (m *machine) lowerVhighBits(instr *ssa.Instruction) {\n\tx, lane := instr.ArgWithLane()\n\trm := m.getOperand_Reg(m.c.ValueDefinition(x))\n\trd := m.c.VRegOf(instr.Return())\n\tswitch lane {\n\tcase ssa.VecLaneI8x16:\n\t\tmov := m.allocateInstr()\n\t\tmov.asXmmToGpr(sseOpcodePmovmskb, rm.reg(), rd, false)\n\t\tm.insert(mov)\n\n\tcase ssa.VecLaneI16x8:\n\t\t// When we have:\n\t\t// \tR1 = [R1(w1), R1(w2), R1(w3), R1(w4), R1(w5), R1(w6), R1(w7), R1(v8)]\n\t\t// \tR2 = [R2(w1), R2(w2), R2(w3), R2(v4), R2(w5), R2(w6), R2(w7), R2(v8)]\n\t\t//\twhere RX(wn) is n-th signed word (16-bit) of RX register,\n\t\t//\n\t\t// \"PACKSSWB R1, R2\" produces\n\t\t//  R1 = [\n\t\t// \t\tbyte_sat(R1(w1)), byte_sat(R1(w2)), byte_sat(R1(w3)), byte_sat(R1(w4)),\n\t\t// \t\tbyte_sat(R1(w5)), byte_sat(R1(w6)), byte_sat(R1(w7)), byte_sat(R1(w8)),\n\t\t// \t\tbyte_sat(R2(w1)), byte_sat(R2(w2)), byte_sat(R2(w3)), byte_sat(R2(w4)),\n\t\t// \t\tbyte_sat(R2(w5)), byte_sat(R2(w6)), byte_sat(R2(w7)), byte_sat(R2(w8)),\n\t\t//  ]\n\t\t//  where R1 is the destination register, and\n\t\t// \tbyte_sat(w) = int8(w) if w fits as signed 8-bit,\n\t\t//                0x80 if w is less than 0x80\n\t\t//                0x7F if w is greater than 0x7f\n\t\t//\n\t\t// See https://www.felixcloutier.com/x86/packsswb:packssdw for detail.\n\t\t//\n\t\t// Therefore, v.register ends up having i-th and (i+8)-th bit set if i-th lane is negative (for i in 0..8).\n\t\ttmp := m.copyToTmp(rm.reg())\n\t\tres := m.c.AllocateVReg(ssa.TypeI32)\n\n\t\tpak := m.allocateInstr()\n\t\tpak.asXmmRmR(sseOpcodePacksswb, rm, tmp)\n\t\tm.insert(pak)\n\n\t\tmov := m.allocateInstr()\n\t\tmov.asXmmToGpr(sseOpcodePmovmskb, tmp, res, false)\n\t\tm.insert(mov)\n\n\t\t// Clear the higher bits than 8.\n\t\tshr := m.allocateInstr()\n\t\tshr.asShiftR(shiftROpShiftRightLogical, newOperandImm32(8), res, false)\n\t\tm.insert(shr)\n\n\t\tm.copyTo(res, rd)\n\n\tcase ssa.VecLaneI32x4:\n\t\tmov := m.allocateInstr()\n\t\tmov.asXmmToGpr(sseOpcodeMovmskps, rm.reg(), rd, true)\n\t\tm.insert(mov)\n\n\tcase ssa.VecLaneI64x2:\n\t\tmov := m.allocateInstr()\n\t\tmov.asXmmToGpr(sseOpcodeMovmskpd, rm.reg(), rd, true)\n\t\tm.insert(mov)\n\t}\n}\n\nfunc (m *machine) lowerVbnot(instr *ssa.Instruction) {\n\tx := instr.Arg()\n\txDef := m.c.ValueDefinition(x)\n\trm := m.getOperand_Reg(xDef)\n\trd := m.c.VRegOf(instr.Return())\n\n\ttmp := m.copyToTmp(rm.reg())\n\ttmp2 := m.c.AllocateVReg(ssa.TypeV128)\n\n\t// Ensure tmp2 is considered defined by regalloc.\n\tm.insert(m.allocateInstr().asDefineUninitializedReg(tmp2))\n\n\t// Set all bits on tmp register.\n\tpak := m.allocateInstr()\n\tpak.asXmmRmR(sseOpcodePcmpeqd, newOperandReg(tmp2), tmp2)\n\tm.insert(pak)\n\n\t// Then XOR with tmp to reverse all bits on v.register.\n\txor := m.allocateInstr()\n\txor.asXmmRmR(sseOpcodePxor, newOperandReg(tmp2), tmp)\n\tm.insert(xor)\n\n\tm.copyTo(tmp, rd)\n}\n\nfunc (m *machine) lowerSplat(x, ret ssa.Value, lane ssa.VecLane) {\n\ttmpDst := m.c.AllocateVReg(ssa.TypeV128)\n\tm.insert(m.allocateInstr().asDefineUninitializedReg(tmpDst))\n\n\tswitch lane {\n\tcase ssa.VecLaneI8x16:\n\t\ttmp := m.c.AllocateVReg(ssa.TypeV128)\n\t\tm.insert(m.allocateInstr().asDefineUninitializedReg(tmp))\n\t\txx := m.getOperand_Mem_Reg(m.c.ValueDefinition(x))\n\t\tm.insert(m.allocateInstr().asXmmRmRImm(sseOpcodePinsrb, 0, xx, tmpDst))\n\t\tm.insert(m.allocateInstr().asXmmRmR(sseOpcodePxor, newOperandReg(tmp), tmp))\n\t\tm.insert(m.allocateInstr().asXmmRmR(sseOpcodePshufb, newOperandReg(tmp), tmpDst))\n\tcase ssa.VecLaneI16x8:\n\t\txx := m.getOperand_Reg(m.c.ValueDefinition(x))\n\t\tm.insert(m.allocateInstr().asXmmRmRImm(sseOpcodePinsrw, 0, xx, tmpDst))\n\t\tm.insert(m.allocateInstr().asXmmRmRImm(sseOpcodePinsrw, 1, xx, tmpDst))\n\t\tm.insert(m.allocateInstr().asXmmRmRImm(sseOpcodePshufd, 0, newOperandReg(tmpDst), tmpDst))\n\tcase ssa.VecLaneI32x4:\n\t\txx := m.getOperand_Mem_Reg(m.c.ValueDefinition(x))\n\t\tm.insert(m.allocateInstr().asXmmRmRImm(sseOpcodePinsrd, 0, xx, tmpDst))\n\t\tm.insert(m.allocateInstr().asXmmRmRImm(sseOpcodePshufd, 0, newOperandReg(tmpDst), tmpDst))\n\tcase ssa.VecLaneI64x2:\n\t\txx := m.getOperand_Reg(m.c.ValueDefinition(x))\n\t\tm.insert(m.allocateInstr().asXmmRmRImm(sseOpcodePinsrq, 0, xx, tmpDst))\n\t\tm.insert(m.allocateInstr().asXmmRmRImm(sseOpcodePinsrq, 1, xx, tmpDst))\n\tcase ssa.VecLaneF32x4:\n\t\txx := m.getOperand_Mem_Reg(m.c.ValueDefinition(x))\n\t\tm.insert(m.allocateInstr().asXmmRmRImm(sseOpcodeInsertps, 0, xx, tmpDst))\n\t\tm.insert(m.allocateInstr().asXmmRmRImm(sseOpcodePshufd, 0, newOperandReg(tmpDst), tmpDst))\n\tcase ssa.VecLaneF64x2:\n\t\txx := m.getOperand_Reg(m.c.ValueDefinition(x))\n\t\tm.insert(m.allocateInstr().asXmmUnaryRmR(sseOpcodeMovsd, xx, tmpDst))\n\t\tm.insert(m.allocateInstr().asXmmRmR(sseOpcodeMovlhps, xx, tmpDst))\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"invalid lane type: %s\", lane))\n\t}\n\n\tm.copyTo(tmpDst, m.c.VRegOf(ret))\n}\n\nfunc (m *machine) lowerShuffle(x, y ssa.Value, lo, hi uint64, ret ssa.Value) {\n\tvar xMask, yMask [2]uint64\n\tfor i := 0; i < 8; i++ {\n\t\tloLane := byte(lo >> (i * 8))\n\t\tif loLane < 16 {\n\t\t\txMask[0] |= uint64(loLane) << (i * 8)\n\t\t\tyMask[0] |= uint64(0x80) << (i * 8)\n\t\t} else {\n\t\t\txMask[0] |= uint64(0x80) << (i * 8)\n\t\t\tyMask[0] |= uint64(loLane-16) << (i * 8)\n\t\t}\n\t\thiLane := byte(hi >> (i * 8))\n\t\tif hiLane < 16 {\n\t\t\txMask[1] |= uint64(hiLane) << (i * 8)\n\t\t\tyMask[1] |= uint64(0x80) << (i * 8)\n\t\t} else {\n\t\t\txMask[1] |= uint64(0x80) << (i * 8)\n\t\t\tyMask[1] |= uint64(hiLane-16) << (i * 8)\n\t\t}\n\t}\n\n\txl, xmaskPos := m.allocateLabel()\n\tm.consts = append(m.consts, _const{lo: xMask[0], hi: xMask[1], label: xl, labelPos: xmaskPos})\n\tyl, ymaskPos := m.allocateLabel()\n\tm.consts = append(m.consts, _const{lo: yMask[0], hi: yMask[1], label: yl, labelPos: ymaskPos})\n\n\txx, yy := m.getOperand_Reg(m.c.ValueDefinition(x)), m.getOperand_Reg(m.c.ValueDefinition(y))\n\ttmpX, tmpY := m.copyToTmp(xx.reg()), m.copyToTmp(yy.reg())\n\n\t// Apply mask to X.\n\ttmp := m.c.AllocateVReg(ssa.TypeV128)\n\tloadMaskLo := m.allocateInstr().asXmmUnaryRmR(sseOpcodeMovdqu, newOperandMem(m.newAmodeRipRel(xl)), tmp)\n\tm.insert(loadMaskLo)\n\tm.insert(m.allocateInstr().asXmmRmR(sseOpcodePshufb, newOperandReg(tmp), tmpX))\n\n\t// Apply mask to Y.\n\tloadMaskHi := m.allocateInstr().asXmmUnaryRmR(sseOpcodeMovdqu, newOperandMem(m.newAmodeRipRel(yl)), tmp)\n\tm.insert(loadMaskHi)\n\tm.insert(m.allocateInstr().asXmmRmR(sseOpcodePshufb, newOperandReg(tmp), tmpY))\n\n\t// Combine the results.\n\tm.insert(m.allocateInstr().asXmmRmR(sseOpcodeOrps, newOperandReg(tmpX), tmpY))\n\n\tm.copyTo(tmpY, m.c.VRegOf(ret))\n}\n\nfunc (m *machine) lowerVbBinOpUnaligned(op sseOpcode, x, y, ret ssa.Value) {\n\trn := m.getOperand_Reg(m.c.ValueDefinition(x))\n\trm := m.getOperand_Reg(m.c.ValueDefinition(y))\n\trd := m.c.VRegOf(ret)\n\n\ttmp := m.copyToTmp(rn.reg())\n\n\tbinOp := m.allocateInstr()\n\tbinOp.asXmmRmR(op, rm, tmp)\n\tm.insert(binOp)\n\n\tm.copyTo(tmp, rd)\n}\n\nfunc (m *machine) lowerVbBinOp(op sseOpcode, x, y, ret ssa.Value) {\n\trn := m.getOperand_Reg(m.c.ValueDefinition(x))\n\trm := m.getOperand_Mem_Reg(m.c.ValueDefinition(y))\n\trd := m.c.VRegOf(ret)\n\n\ttmp := m.copyToTmp(rn.reg())\n\n\tbinOp := m.allocateInstr()\n\tbinOp.asXmmRmR(op, rm, tmp)\n\tm.insert(binOp)\n\n\tm.copyTo(tmp, rd)\n}\n\nfunc (m *machine) lowerVFcmp(x, y ssa.Value, c ssa.FloatCmpCond, ret ssa.Value, lane ssa.VecLane) {\n\tvar cmpOp sseOpcode\n\tswitch lane {\n\tcase ssa.VecLaneF32x4:\n\t\tcmpOp = sseOpcodeCmpps\n\tcase ssa.VecLaneF64x2:\n\t\tcmpOp = sseOpcodeCmppd\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"invalid lane type: %s\", lane))\n\t}\n\n\txx, yy := m.c.ValueDefinition(x), m.c.ValueDefinition(y)\n\tvar cmpImm cmpPred\n\tswitch c {\n\tcase ssa.FloatCmpCondGreaterThan:\n\t\tyy, xx = xx, yy\n\t\tcmpImm = cmpPredLT_OS\n\tcase ssa.FloatCmpCondGreaterThanOrEqual:\n\t\tyy, xx = xx, yy\n\t\tcmpImm = cmpPredLE_OS\n\tcase ssa.FloatCmpCondEqual:\n\t\tcmpImm = cmpPredEQ_OQ\n\tcase ssa.FloatCmpCondNotEqual:\n\t\tcmpImm = cmpPredNEQ_UQ\n\tcase ssa.FloatCmpCondLessThan:\n\t\tcmpImm = cmpPredLT_OS\n\tcase ssa.FloatCmpCondLessThanOrEqual:\n\t\tcmpImm = cmpPredLE_OS\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"invalid float comparison condition: %s\", c))\n\t}\n\n\ttmp := m.c.AllocateVReg(ssa.TypeV128)\n\txxx := m.getOperand_Mem_Reg(xx)\n\tm.insert(m.allocateInstr().asXmmUnaryRmR(sseOpcodeMovdqu, xxx, tmp))\n\n\trm := m.getOperand_Mem_Reg(yy)\n\tm.insert(m.allocateInstr().asXmmRmRImm(cmpOp, byte(cmpImm), rm, tmp))\n\n\tm.copyTo(tmp, m.c.VRegOf(ret))\n}\n\nfunc (m *machine) lowerVIcmp(x, y ssa.Value, c ssa.IntegerCmpCond, ret ssa.Value, lane ssa.VecLane) {\n\tvar eq, gt, maxu, minu, mins sseOpcode\n\tswitch lane {\n\tcase ssa.VecLaneI8x16:\n\t\teq, gt, maxu, minu, mins = sseOpcodePcmpeqb, sseOpcodePcmpgtb, sseOpcodePmaxub, sseOpcodePminub, sseOpcodePminsb\n\tcase ssa.VecLaneI16x8:\n\t\teq, gt, maxu, minu, mins = sseOpcodePcmpeqw, sseOpcodePcmpgtw, sseOpcodePmaxuw, sseOpcodePminuw, sseOpcodePminsw\n\tcase ssa.VecLaneI32x4:\n\t\teq, gt, maxu, minu, mins = sseOpcodePcmpeqd, sseOpcodePcmpgtd, sseOpcodePmaxud, sseOpcodePminud, sseOpcodePminsd\n\tcase ssa.VecLaneI64x2:\n\t\teq, gt = sseOpcodePcmpeqq, sseOpcodePcmpgtq\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"invalid lane type: %s\", lane))\n\t}\n\n\ttmp := m.c.AllocateVReg(ssa.TypeV128)\n\tvar op operand\n\tswitch c {\n\tcase ssa.IntegerCmpCondSignedLessThanOrEqual:\n\t\tif lane == ssa.VecLaneI64x2 {\n\t\t\tx := m.getOperand_Mem_Reg(m.c.ValueDefinition(x))\n\t\t\t// Copy x to tmp.\n\t\t\tm.insert(m.allocateInstr().asXmmUnaryRmR(sseOpcodeMovdqu, x, tmp))\n\t\t\top = m.getOperand_Mem_Reg(m.c.ValueDefinition(y))\n\t\t} else {\n\t\t\ty := m.getOperand_Mem_Reg(m.c.ValueDefinition(y))\n\t\t\t// Copy y to tmp.\n\t\t\tm.insert(m.allocateInstr().asXmmUnaryRmR(sseOpcodeMovdqu, y, tmp))\n\t\t\top = m.getOperand_Mem_Reg(m.c.ValueDefinition(x))\n\t\t}\n\tcase ssa.IntegerCmpCondSignedGreaterThanOrEqual:\n\t\tif lane == ssa.VecLaneI64x2 {\n\t\t\ty := m.getOperand_Mem_Reg(m.c.ValueDefinition(y))\n\t\t\t// Copy y to tmp.\n\t\t\tm.insert(m.allocateInstr().asXmmUnaryRmR(sseOpcodeMovdqu, y, tmp))\n\t\t\top = m.getOperand_Mem_Reg(m.c.ValueDefinition(x))\n\t\t} else {\n\t\t\tx := m.getOperand_Mem_Reg(m.c.ValueDefinition(x))\n\t\t\t// Copy x to tmp.\n\t\t\tm.insert(m.allocateInstr().asXmmUnaryRmR(sseOpcodeMovdqu, x, tmp))\n\t\t\top = m.getOperand_Mem_Reg(m.c.ValueDefinition(y))\n\t\t}\n\tcase ssa.IntegerCmpCondSignedLessThan, ssa.IntegerCmpCondUnsignedLessThan, ssa.IntegerCmpCondUnsignedLessThanOrEqual:\n\t\ty := m.getOperand_Mem_Reg(m.c.ValueDefinition(y))\n\t\t// Copy y to tmp.\n\t\tm.insert(m.allocateInstr().asXmmUnaryRmR(sseOpcodeMovdqu, y, tmp))\n\t\top = m.getOperand_Mem_Reg(m.c.ValueDefinition(x))\n\tdefault:\n\t\tx := m.getOperand_Mem_Reg(m.c.ValueDefinition(x))\n\t\t// Copy x to tmp.\n\t\tm.insert(m.allocateInstr().asXmmUnaryRmR(sseOpcodeMovdqu, x, tmp))\n\t\top = m.getOperand_Mem_Reg(m.c.ValueDefinition(y))\n\t}\n\n\tswitch c {\n\tcase ssa.IntegerCmpCondEqual:\n\t\tm.insert(m.allocateInstr().asXmmRmR(eq, op, tmp))\n\tcase ssa.IntegerCmpCondNotEqual:\n\t\t// First we compare for equality.\n\t\tm.insert(m.allocateInstr().asXmmRmR(eq, op, tmp))\n\t\t// Then flip the bits. To do so, we set all bits on tmp2.\n\t\ttmp2 := m.c.AllocateVReg(ssa.TypeV128)\n\t\tm.insert(m.allocateInstr().asDefineUninitializedReg(tmp2))\n\t\tm.insert(m.allocateInstr().asXmmRmR(eq, newOperandReg(tmp2), tmp2))\n\t\t// And then xor with tmp.\n\t\tm.insert(m.allocateInstr().asXmmRmR(sseOpcodePxor, newOperandReg(tmp2), tmp))\n\tcase ssa.IntegerCmpCondSignedGreaterThan, ssa.IntegerCmpCondSignedLessThan:\n\t\tm.insert(m.allocateInstr().asXmmRmR(gt, op, tmp))\n\tcase ssa.IntegerCmpCondSignedGreaterThanOrEqual, ssa.IntegerCmpCondSignedLessThanOrEqual:\n\t\tif lane == ssa.VecLaneI64x2 {\n\t\t\tm.insert(m.allocateInstr().asXmmRmR(gt, op, tmp))\n\t\t\t// Then flip the bits. To do so, we set all bits on tmp2.\n\t\t\ttmp2 := m.c.AllocateVReg(ssa.TypeV128)\n\t\t\tm.insert(m.allocateInstr().asDefineUninitializedReg(tmp2))\n\t\t\tm.insert(m.allocateInstr().asXmmRmR(eq, newOperandReg(tmp2), tmp2))\n\t\t\t// And then xor with tmp.\n\t\t\tm.insert(m.allocateInstr().asXmmRmR(sseOpcodePxor, newOperandReg(tmp2), tmp))\n\t\t} else {\n\t\t\t// First take min of x and y.\n\t\t\tm.insert(m.allocateInstr().asXmmRmR(mins, op, tmp))\n\t\t\t// Then compare for equality.\n\t\t\tm.insert(m.allocateInstr().asXmmRmR(eq, op, tmp))\n\t\t}\n\tcase ssa.IntegerCmpCondUnsignedGreaterThan, ssa.IntegerCmpCondUnsignedLessThan:\n\t\t// First maxu of x and y.\n\t\tm.insert(m.allocateInstr().asXmmRmR(maxu, op, tmp))\n\t\t// Then compare for equality.\n\t\tm.insert(m.allocateInstr().asXmmRmR(eq, op, tmp))\n\t\t// Then flip the bits. To do so, we set all bits on tmp2.\n\t\ttmp2 := m.c.AllocateVReg(ssa.TypeV128)\n\t\tm.insert(m.allocateInstr().asDefineUninitializedReg(tmp2))\n\t\tm.insert(m.allocateInstr().asXmmRmR(eq, newOperandReg(tmp2), tmp2))\n\t\t// And then xor with tmp.\n\t\tm.insert(m.allocateInstr().asXmmRmR(sseOpcodePxor, newOperandReg(tmp2), tmp))\n\tcase ssa.IntegerCmpCondUnsignedGreaterThanOrEqual, ssa.IntegerCmpCondUnsignedLessThanOrEqual:\n\t\tm.insert(m.allocateInstr().asXmmRmR(minu, op, tmp))\n\t\tm.insert(m.allocateInstr().asXmmRmR(eq, op, tmp))\n\tdefault:\n\t\tpanic(\"BUG\")\n\t}\n\n\tm.copyTo(tmp, m.c.VRegOf(ret))\n}\n\nfunc (m *machine) lowerVbandnot(instr *ssa.Instruction, op sseOpcode) {\n\tx, y := instr.Arg2()\n\txDef := m.c.ValueDefinition(x)\n\tyDef := m.c.ValueDefinition(y)\n\trm, rn := m.getOperand_Reg(xDef), m.getOperand_Reg(yDef)\n\trd := m.c.VRegOf(instr.Return())\n\n\ttmp := m.copyToTmp(rn.reg())\n\n\t// pandn between rn, rm.\n\tpand := m.allocateInstr()\n\tpand.asXmmRmR(sseOpcodePandn, rm, tmp)\n\tm.insert(pand)\n\n\tm.copyTo(tmp, rd)\n}\n\nfunc (m *machine) lowerVbitselect(instr *ssa.Instruction) {\n\tc, x, y := instr.SelectData()\n\txDef := m.c.ValueDefinition(x)\n\tyDef := m.c.ValueDefinition(y)\n\trm, rn := m.getOperand_Reg(xDef), m.getOperand_Reg(yDef)\n\tcreg := m.getOperand_Reg(m.c.ValueDefinition(c))\n\trd := m.c.VRegOf(instr.Return())\n\n\ttmpC := m.copyToTmp(creg.reg())\n\ttmpX := m.copyToTmp(rm.reg())\n\n\t// And between c, x (overwrites x).\n\tpand := m.allocateInstr()\n\tpand.asXmmRmR(sseOpcodePand, creg, tmpX)\n\tm.insert(pand)\n\n\t// Andn between y, c (overwrites c).\n\tpandn := m.allocateInstr()\n\tpandn.asXmmRmR(sseOpcodePandn, rn, tmpC)\n\tm.insert(pandn)\n\n\tpor := m.allocateInstr()\n\tpor.asXmmRmR(sseOpcodePor, newOperandReg(tmpC), tmpX)\n\tm.insert(por)\n\n\tm.copyTo(tmpX, rd)\n}\n\nfunc (m *machine) lowerVFmin(instr *ssa.Instruction) {\n\tx, y, lane := instr.Arg2WithLane()\n\trn := m.getOperand_Reg(m.c.ValueDefinition(x))\n\trm := m.getOperand_Reg(m.c.ValueDefinition(y))\n\trd := m.c.VRegOf(instr.Return())\n\n\tvar min, cmp, andn, or, srl /* shift right logical */ sseOpcode\n\tvar shiftNumToInverseNaN uint32\n\tif lane == ssa.VecLaneF32x4 {\n\t\tmin, cmp, andn, or, srl, shiftNumToInverseNaN = sseOpcodeMinps, sseOpcodeCmpps, sseOpcodeAndnps, sseOpcodeOrps, sseOpcodePsrld, 0xa\n\t} else {\n\t\tmin, cmp, andn, or, srl, shiftNumToInverseNaN = sseOpcodeMinpd, sseOpcodeCmppd, sseOpcodeAndnpd, sseOpcodeOrpd, sseOpcodePsrlq, 0xd\n\t}\n\n\ttmp1 := m.copyToTmp(rn.reg())\n\ttmp2 := m.copyToTmp(rm.reg())\n\n\t// tmp1=min(rn, rm)\n\tminIns1 := m.allocateInstr()\n\tminIns1.asXmmRmR(min, rn, tmp2)\n\tm.insert(minIns1)\n\n\t// tmp2=min(rm, rn)\n\tminIns2 := m.allocateInstr()\n\tminIns2.asXmmRmR(min, rm, tmp1)\n\tm.insert(minIns2)\n\n\t// tmp3:=tmp1=min(rn, rm)\n\ttmp3 := m.copyToTmp(tmp1)\n\n\t// tmp1 = -0         if (rn == -0 || rm == -0) && rn != NaN && rm !=NaN\n\t//       NaN         if rn == NaN || rm == NaN\n\t//       min(rm, rm) otherwise\n\torIns := m.allocateInstr()\n\torIns.asXmmRmR(or, newOperandReg(tmp2), tmp1)\n\tm.insert(orIns)\n\n\t// tmp3 is originally min(rn,rm).\n\t// tmp3 = 0^ (set all bits) if rn == NaN || rm == NaN\n\t//        0 otherwise\n\tcmpIns := m.allocateInstr()\n\tcmpIns.asXmmRmRImm(cmp, uint8(cmpPredUNORD_Q), newOperandReg(tmp2), tmp3)\n\tm.insert(cmpIns)\n\n\t// tmp1 = -0          if (rn == -0 || rm == -0) && rn != NaN && rm !=NaN\n\t//        ^0          if rn == NaN || rm == NaN\n\t//        min(v1, v2) otherwise\n\torIns2 := m.allocateInstr()\n\torIns2.asXmmRmR(or, newOperandReg(tmp3), tmp1)\n\tm.insert(orIns2)\n\n\t// tmp3 = set all bits on the mantissa bits\n\t//        0 otherwise\n\tshift := m.allocateInstr()\n\tshift.asXmmRmiReg(srl, newOperandImm32(shiftNumToInverseNaN), tmp3)\n\tm.insert(shift)\n\n\t// tmp3 = tmp1 and !tmp3\n\t//     = -0                                                   if (rn == -0 || rm == -0) && rn != NaN && rm !=NaN\n\t//       set all bits on exponential and sign bit (== NaN)    if rn == NaN || rm == NaN\n\t//       min(rn, rm)                                          otherwise\n\tandnIns := m.allocateInstr()\n\tandnIns.asXmmRmR(andn, newOperandReg(tmp1), tmp3)\n\tm.insert(andnIns)\n\n\tm.copyTo(tmp3, rd)\n}\n\nfunc (m *machine) lowerVFmax(instr *ssa.Instruction) {\n\tx, y, lane := instr.Arg2WithLane()\n\trn := m.getOperand_Reg(m.c.ValueDefinition(x))\n\trm := m.getOperand_Reg(m.c.ValueDefinition(y))\n\trd := m.c.VRegOf(instr.Return())\n\n\tvar max, cmp, andn, or, xor, sub, srl /* shift right logical */ sseOpcode\n\tvar shiftNumToInverseNaN uint32\n\tif lane == ssa.VecLaneF32x4 {\n\t\tmax, cmp, andn, or, xor, sub, srl, shiftNumToInverseNaN = sseOpcodeMaxps, sseOpcodeCmpps, sseOpcodeAndnps, sseOpcodeOrps, sseOpcodeXorps, sseOpcodeSubps, sseOpcodePsrld, 0xa\n\t} else {\n\t\tmax, cmp, andn, or, xor, sub, srl, shiftNumToInverseNaN = sseOpcodeMaxpd, sseOpcodeCmppd, sseOpcodeAndnpd, sseOpcodeOrpd, sseOpcodeXorpd, sseOpcodeSubpd, sseOpcodePsrlq, 0xd\n\t}\n\n\ttmp0 := m.copyToTmp(rm.reg())\n\ttmp1 := m.copyToTmp(rn.reg())\n\n\t// tmp0=max(rn, rm)\n\tmaxIns1 := m.allocateInstr()\n\tmaxIns1.asXmmRmR(max, rn, tmp0)\n\tm.insert(maxIns1)\n\n\t// tmp1=max(rm, rn)\n\tmaxIns2 := m.allocateInstr()\n\tmaxIns2.asXmmRmR(max, rm, tmp1)\n\tm.insert(maxIns2)\n\n\t// tmp2=max(rm, rn)\n\ttmp2 := m.copyToTmp(tmp1)\n\n\t// tmp2 = -0       if (rn == -0 && rm == 0) || (rn == 0 && rm == -0)\n\t//         0       if (rn == 0 && rm ==  0)\n\t//        -0       if (rn == -0 && rm == -0)\n\t//       v1^v2     if rn == NaN || rm == NaN\n\t//         0       otherwise\n\txorInstr := m.allocateInstr()\n\txorInstr.asXmmRmR(xor, newOperandReg(tmp0), tmp2)\n\tm.insert(xorInstr)\n\t// tmp1 = -0           if (rn == -0 && rm == 0) || (rn == 0 && rm == -0)\n\t//         0           if (rn == 0 && rm ==  0)\n\t//        -0           if (rn == -0 && rm == -0)\n\t//        NaN          if rn == NaN || rm == NaN\n\t//        max(v1, v2)  otherwise\n\torInstr := m.allocateInstr()\n\torInstr.asXmmRmR(or, newOperandReg(tmp2), tmp1)\n\tm.insert(orInstr)\n\n\ttmp3 := m.copyToTmp(tmp1)\n\n\t// tmp3 = 0           if (rn == -0 && rm == 0) || (rn == 0 && rm == -0) || (rn == 0 && rm ==  0)\n\t//       -0           if (rn == -0 && rm == -0)\n\t//       NaN          if rn == NaN || rm == NaN\n\t//       max(v1, v2)  otherwise\n\t//\n\t// Note: -0 - (-0) = 0 (!= -0) in floating point operation.\n\tsubIns := m.allocateInstr()\n\tsubIns.asXmmRmR(sub, newOperandReg(tmp2), tmp3)\n\tm.insert(subIns)\n\n\t// tmp1 = 0^ if rn == NaN || rm == NaN\n\tcmpIns := m.allocateInstr()\n\tcmpIns.asXmmRmRImm(cmp, uint8(cmpPredUNORD_Q), newOperandReg(tmp1), tmp1)\n\tm.insert(cmpIns)\n\n\t// tmp1 = set all bits on the mantissa bits\n\t//        0 otherwise\n\tshift := m.allocateInstr()\n\tshift.asXmmRmiReg(srl, newOperandImm32(shiftNumToInverseNaN), tmp1)\n\tm.insert(shift)\n\n\tandnIns := m.allocateInstr()\n\tandnIns.asXmmRmR(andn, newOperandReg(tmp3), tmp1)\n\tm.insert(andnIns)\n\n\tm.copyTo(tmp1, rd)\n}\n\nfunc (m *machine) lowerVFabs(instr *ssa.Instruction) {\n\tx, lane := instr.ArgWithLane()\n\trm := m.getOperand_Mem_Reg(m.c.ValueDefinition(x))\n\trd := m.c.VRegOf(instr.Return())\n\n\ttmp := m.c.AllocateVReg(ssa.TypeV128)\n\n\tdef := m.allocateInstr()\n\tdef.asDefineUninitializedReg(tmp)\n\tm.insert(def)\n\n\t// Set all bits on tmp.\n\tpcmp := m.allocateInstr()\n\tpcmp.asXmmRmR(sseOpcodePcmpeqd, newOperandReg(tmp), tmp)\n\tm.insert(pcmp)\n\n\tswitch lane {\n\tcase ssa.VecLaneF32x4:\n\t\t// Shift right packed single floats by 1 to clear the sign bits.\n\t\tshift := m.allocateInstr()\n\t\tshift.asXmmRmiReg(sseOpcodePsrld, newOperandImm32(1), tmp)\n\t\tm.insert(shift)\n\t\t// Clear the sign bit of rm.\n\t\tandp := m.allocateInstr()\n\t\tandp.asXmmRmR(sseOpcodeAndpd, rm, tmp)\n\t\tm.insert(andp)\n\tcase ssa.VecLaneF64x2:\n\t\t// Shift right packed single floats by 1 to clear the sign bits.\n\t\tshift := m.allocateInstr()\n\t\tshift.asXmmRmiReg(sseOpcodePsrlq, newOperandImm32(1), tmp)\n\t\tm.insert(shift)\n\t\t// Clear the sign bit of rm.\n\t\tandp := m.allocateInstr()\n\t\tandp.asXmmRmR(sseOpcodeAndps, rm, tmp)\n\t\tm.insert(andp)\n\t}\n\n\tm.copyTo(tmp, rd)\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/amd64/machine_pro_epi_logue.go",
    "content": "package amd64\n\nimport (\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/backend\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/backend/regalloc\"\n)\n\n// PostRegAlloc implements backend.Machine.\nfunc (m *machine) PostRegAlloc() {\n\tm.setupPrologue()\n\tm.postRegAlloc()\n}\n\nfunc (m *machine) setupPrologue() {\n\tcur := m.rootInstr\n\tprevInitInst := cur.next\n\n\t// At this point, we have the stack layout as follows:\n\t//\n\t//                   (high address)\n\t//                 +-----------------+ <----- RBP (somewhere in the middle of the stack)\n\t//                 |     .......     |\n\t//                 |      ret Y      |\n\t//                 |     .......     |\n\t//                 |      ret 0      |\n\t//                 |      arg X      |\n\t//                 |     .......     |\n\t//                 |      arg 1      |\n\t//                 |      arg 0      |\n\t//                 |   Return Addr   |\n\t//       RSP ----> +-----------------+\n\t//                    (low address)\n\n\t// First, we push the RBP, and update the RBP to the current RSP.\n\t//\n\t//                   (high address)                     (high address)\n\t//       RBP ----> +-----------------+                +-----------------+\n\t//                 |     .......     |                |     .......     |\n\t//                 |      ret Y      |                |      ret Y      |\n\t//                 |     .......     |                |     .......     |\n\t//                 |      ret 0      |                |      ret 0      |\n\t//                 |      arg X      |                |      arg X      |\n\t//                 |     .......     |     ====>      |     .......     |\n\t//                 |      arg 1      |                |      arg 1      |\n\t//                 |      arg 0      |                |      arg 0      |\n\t//                 |   Return Addr   |                |   Return Addr   |\n\t//       RSP ----> +-----------------+                |    Caller_RBP   |\n\t//                    (low address)                   +-----------------+ <----- RSP, RBP\n\t//\n\tcur = m.setupRBPRSP(cur)\n\n\tif !m.stackBoundsCheckDisabled {\n\t\tcur = m.insertStackBoundsCheck(m.requiredStackSize(), cur)\n\t}\n\n\t//\n\t//            (high address)\n\t//          +-----------------+                  +-----------------+\n\t//          |     .......     |                  |     .......     |\n\t//          |      ret Y      |                  |      ret Y      |\n\t//          |     .......     |                  |     .......     |\n\t//          |      ret 0      |                  |      ret 0      |\n\t//          |      arg X      |                  |      arg X      |\n\t//          |     .......     |                  |     .......     |\n\t//          |      arg 1      |                  |      arg 1      |\n\t//          |      arg 0      |                  |      arg 0      |\n\t//          |      xxxxx      |                  |      xxxxx      |\n\t//          |   Return Addr   |                  |   Return Addr   |\n\t//          |    Caller_RBP   |      ====>       |    Caller_RBP   |\n\t// RBP,RSP->+-----------------+                  +-----------------+ <----- RBP\n\t//             (low address)                     |   clobbered M   |\n\t//                                               |   clobbered 1   |\n\t//                                               |   ...........   |\n\t//                                               |   clobbered 0   |\n\t//                                               +-----------------+ <----- RSP\n\t//\n\tif regs := m.clobberedRegs; len(regs) > 0 {\n\t\tfor i := range regs {\n\t\t\tr := regs[len(regs)-1-i] // Reverse order.\n\t\t\tif r.RegType() == regalloc.RegTypeInt {\n\t\t\t\tcur = linkInstr(cur, m.allocateInstr().asPush64(newOperandReg(r)))\n\t\t\t} else {\n\t\t\t\t// Push the XMM register is not supported by the PUSH instruction.\n\t\t\t\tcur = m.addRSP(-16, cur)\n\t\t\t\tpush := m.allocateInstr().asXmmMovRM(\n\t\t\t\t\tsseOpcodeMovdqu, r, newOperandMem(m.newAmodeImmReg(0, rspVReg)),\n\t\t\t\t)\n\t\t\t\tcur = linkInstr(cur, push)\n\t\t\t}\n\t\t}\n\t}\n\n\tif size := m.spillSlotSize; size > 0 {\n\t\t// Simply decrease the RSP to allocate the spill slots.\n\t\t// \t\tsub $size, %rsp\n\t\tcur = linkInstr(cur, m.allocateInstr().asAluRmiR(aluRmiROpcodeSub, newOperandImm32(uint32(size)), rspVReg, true))\n\n\t\t// At this point, we have the stack layout as follows:\n\t\t//\n\t\t//            (high address)\n\t\t//          +-----------------+\n\t\t//          |     .......     |\n\t\t//          |      ret Y      |\n\t\t//          |     .......     |\n\t\t//          |      ret 0      |\n\t\t//          |      arg X      |\n\t\t//          |     .......     |\n\t\t//          |      arg 1      |\n\t\t//          |      arg 0      |\n\t\t//          |   ReturnAddress |\n\t\t//          |   Caller_RBP    |\n\t\t//          +-----------------+ <--- RBP\n\t\t//          |    clobbered M  |\n\t\t//          |   ............  |\n\t\t//          |    clobbered 1  |\n\t\t//          |    clobbered 0  |\n\t\t//          |   spill slot N  |\n\t\t//          |   ............  |\n\t\t//          |   spill slot 0  |\n\t\t//          +-----------------+ <--- RSP\n\t\t//             (low address)\n\t}\n\n\tlinkInstr(cur, prevInitInst)\n}\n\n// postRegAlloc does multiple things while walking through the instructions:\n// 1. Inserts the epilogue code.\n// 2. Removes the redundant copy instruction.\n// 3. Inserts the dec/inc RSP instruction right before/after the call instruction.\n// 4. Lowering that is supposed to be done after regalloc.\nfunc (m *machine) postRegAlloc() {\n\tfor cur := m.rootInstr; cur != nil; cur = cur.next {\n\t\tswitch k := cur.kind; k {\n\t\tcase ret:\n\t\t\tm.setupEpilogueAfter(cur.prev)\n\t\t\tcontinue\n\t\tcase fcvtToSintSequence, fcvtToUintSequence:\n\t\t\tm.pendingInstructions = m.pendingInstructions[:0]\n\t\t\tif k == fcvtToSintSequence {\n\t\t\t\tm.lowerFcvtToSintSequenceAfterRegalloc(cur)\n\t\t\t} else {\n\t\t\t\tm.lowerFcvtToUintSequenceAfterRegalloc(cur)\n\t\t\t}\n\t\t\tprev := cur.prev\n\t\t\tnext := cur.next\n\t\t\tcur := prev\n\t\t\tfor _, instr := range m.pendingInstructions {\n\t\t\t\tcur = linkInstr(cur, instr)\n\t\t\t}\n\t\t\tlinkInstr(cur, next)\n\t\t\tcontinue\n\t\tcase xmmCMov:\n\t\t\tm.pendingInstructions = m.pendingInstructions[:0]\n\t\t\tm.lowerXmmCmovAfterRegAlloc(cur)\n\t\t\tprev := cur.prev\n\t\t\tnext := cur.next\n\t\t\tcur := prev\n\t\t\tfor _, instr := range m.pendingInstructions {\n\t\t\t\tcur = linkInstr(cur, instr)\n\t\t\t}\n\t\t\tlinkInstr(cur, next)\n\t\t\tcontinue\n\t\tcase idivRemSequence:\n\t\t\tm.pendingInstructions = m.pendingInstructions[:0]\n\t\t\tm.lowerIDivRemSequenceAfterRegAlloc(cur)\n\t\t\tprev := cur.prev\n\t\t\tnext := cur.next\n\t\t\tcur := prev\n\t\t\tfor _, instr := range m.pendingInstructions {\n\t\t\t\tcur = linkInstr(cur, instr)\n\t\t\t}\n\t\t\tlinkInstr(cur, next)\n\t\t\tcontinue\n\t\tcase call, callIndirect:\n\t\t\t// At this point, reg alloc is done, therefore we can safely insert dec/inc RPS instruction\n\t\t\t// right before/after the call instruction. If this is done before reg alloc, the stack slot\n\t\t\t// can point to the wrong location and therefore results in a wrong value.\n\t\t\tcall := cur\n\t\t\tnext := call.next\n\t\t\t_, _, _, _, size := backend.ABIInfoFromUint64(call.u2)\n\t\t\tif size > 0 {\n\t\t\t\tdec := m.allocateInstr().asAluRmiR(aluRmiROpcodeSub, newOperandImm32(size), rspVReg, true)\n\t\t\t\tlinkInstr(call.prev, dec)\n\t\t\t\tlinkInstr(dec, call)\n\t\t\t\tinc := m.allocateInstr().asAluRmiR(aluRmiROpcodeAdd, newOperandImm32(size), rspVReg, true)\n\t\t\t\tlinkInstr(call, inc)\n\t\t\t\tlinkInstr(inc, next)\n\t\t\t}\n\t\t\tcontinue\n\t\tcase tailCall, tailCallIndirect:\n\t\t\t// At this point, reg alloc is done, therefore we can safely insert dec RPS instruction\n\t\t\t// right before the tail call (jump) instruction. If this is done before reg alloc, the stack slot\n\t\t\t// can point to the wrong location and therefore results in a wrong value.\n\t\t\ttailCall := cur\n\t\t\t_, _, _, _, size := backend.ABIInfoFromUint64(tailCall.u2)\n\t\t\tif size > 0 {\n\t\t\t\tdec := m.allocateInstr().asAluRmiR(aluRmiROpcodeSub, newOperandImm32(size), rspVReg, true)\n\t\t\t\tlinkInstr(tailCall.prev, dec)\n\t\t\t\tlinkInstr(dec, tailCall)\n\t\t\t}\n\t\t\t// In a tail call, we insert the epilogue before the jump instruction.\n\t\t\tm.setupEpilogueAfter(tailCall.prev)\n\t\t\t// If this has been encoded as a proper tail call, we can remove the trailing instructions\n\t\t\t// For details, see internal/engine/RATIONALE.md\n\t\t\tm.removeUntilRet(cur.next)\n\t\t\tcontinue\n\t\t}\n\n\t\t// Removes the redundant copy instruction.\n\t\tif cur.IsCopy() && cur.op1.reg().RealReg() == cur.op2.reg().RealReg() {\n\t\t\tprev, next := cur.prev, cur.next\n\t\t\t// Remove the copy instruction.\n\t\t\tprev.next = next\n\t\t\tif next != nil {\n\t\t\t\tnext.prev = prev\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc (m *machine) setupEpilogueAfter(cur *instruction) {\n\tprevNext := cur.next\n\n\t// At this point, we have the stack layout as follows:\n\t//\n\t//            (high address)\n\t//          +-----------------+\n\t//          |     .......     |\n\t//          |      ret Y      |\n\t//          |     .......     |\n\t//          |      ret 0      |\n\t//          |      arg X      |\n\t//          |     .......     |\n\t//          |      arg 1      |\n\t//          |      arg 0      |\n\t//          |   ReturnAddress |\n\t//          |   Caller_RBP    |\n\t//          +-----------------+ <--- RBP\n\t//          |    clobbered M  |\n\t//          |   ............  |\n\t//          |    clobbered 1  |\n\t//          |    clobbered 0  |\n\t//          |   spill slot N  |\n\t//          |   ............  |\n\t//          |   spill slot 0  |\n\t//          +-----------------+ <--- RSP\n\t//             (low address)\n\n\tif size := m.spillSlotSize; size > 0 {\n\t\t// Simply increase the RSP to free the spill slots.\n\t\t// \t\tadd $size, %rsp\n\t\tcur = linkInstr(cur, m.allocateInstr().asAluRmiR(aluRmiROpcodeAdd, newOperandImm32(uint32(size)), rspVReg, true))\n\t}\n\n\t//\n\t//             (high address)\n\t//            +-----------------+                     +-----------------+\n\t//            |     .......     |                     |     .......     |\n\t//            |      ret Y      |                     |      ret Y      |\n\t//            |     .......     |                     |     .......     |\n\t//            |      ret 0      |                     |      ret 0      |\n\t//            |      arg X      |                     |      arg X      |\n\t//            |     .......     |                     |     .......     |\n\t//            |      arg 1      |                     |      arg 1      |\n\t//            |      arg 0      |                     |      arg 0      |\n\t//            |   ReturnAddress |                     |   ReturnAddress |\n\t//            |    Caller_RBP   |                     |    Caller_RBP   |\n\t//   RBP ---> +-----------------+      ========>      +-----------------+ <---- RSP, RBP\n\t//            |    clobbered M  |\n\t//            |   ............  |\n\t//            |    clobbered 1  |\n\t//            |    clobbered 0  |\n\t//   RSP ---> +-----------------+\n\t//               (low address)\n\t//\n\tif regs := m.clobberedRegs; len(regs) > 0 {\n\t\tfor _, r := range regs {\n\t\t\tif r.RegType() == regalloc.RegTypeInt {\n\t\t\t\tcur = linkInstr(cur, m.allocateInstr().asPop64(r))\n\t\t\t} else {\n\t\t\t\t// Pop the XMM register is not supported by the POP instruction.\n\t\t\t\tpop := m.allocateInstr().asXmmUnaryRmR(\n\t\t\t\t\tsseOpcodeMovdqu, newOperandMem(m.newAmodeImmReg(0, rspVReg)), r,\n\t\t\t\t)\n\t\t\t\tcur = linkInstr(cur, pop)\n\t\t\t\tcur = m.addRSP(16, cur)\n\t\t\t}\n\t\t}\n\t}\n\n\t// Now roll back the RSP to RBP, and pop the caller's RBP.\n\tcur = m.revertRBPRSP(cur)\n\n\tlinkInstr(cur, prevNext)\n}\n\n// removeUntilRet removes the instructions starting from `cur` until the first `ret` instruction.\nfunc (m *machine) removeUntilRet(cur *instruction) {\n\tfor ; cur != nil; cur = cur.next {\n\t\tprev, next := cur.prev, cur.next\n\t\tprev.next = next\n\t\tif next != nil {\n\t\t\tnext.prev = prev\n\t\t}\n\t\tif cur.kind == ret {\n\t\t\treturn\n\t\t}\n\t}\n}\n\nfunc (m *machine) addRSP(offset int32, cur *instruction) *instruction {\n\tif offset == 0 {\n\t\treturn cur\n\t}\n\topcode := aluRmiROpcodeAdd\n\tif offset < 0 {\n\t\topcode = aluRmiROpcodeSub\n\t\toffset = -offset\n\t}\n\treturn linkInstr(cur, m.allocateInstr().asAluRmiR(opcode, newOperandImm32(uint32(offset)), rspVReg, true))\n}\n\nfunc (m *machine) setupRBPRSP(cur *instruction) *instruction {\n\tcur = linkInstr(cur, m.allocateInstr().asPush64(newOperandReg(rbpVReg)))\n\tcur = linkInstr(cur, m.allocateInstr().asMovRR(rspVReg, rbpVReg, true))\n\treturn cur\n}\n\nfunc (m *machine) revertRBPRSP(cur *instruction) *instruction {\n\tcur = linkInstr(cur, m.allocateInstr().asMovRR(rbpVReg, rspVReg, true))\n\tcur = linkInstr(cur, m.allocateInstr().asPop64(rbpVReg))\n\treturn cur\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/amd64/machine_regalloc.go",
    "content": "package amd64\n\nimport (\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/backend/regalloc\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/ssa\"\n)\n\n// regAllocFn implements regalloc.Function.\ntype regAllocFn struct {\n\tssaB                   ssa.Builder\n\tm                      *machine\n\tloopNestingForestRoots []ssa.BasicBlock\n\tblockIter              int\n}\n\n// PostOrderBlockIteratorBegin implements regalloc.Function.\nfunc (f *regAllocFn) PostOrderBlockIteratorBegin() *labelPosition {\n\tf.blockIter = len(f.m.orderedSSABlockLabelPos) - 1\n\treturn f.PostOrderBlockIteratorNext()\n}\n\n// PostOrderBlockIteratorNext implements regalloc.Function.\nfunc (f *regAllocFn) PostOrderBlockIteratorNext() *labelPosition {\n\tif f.blockIter < 0 {\n\t\treturn nil\n\t}\n\tb := f.m.orderedSSABlockLabelPos[f.blockIter]\n\tf.blockIter--\n\treturn b\n}\n\n// ReversePostOrderBlockIteratorBegin implements regalloc.Function.\nfunc (f *regAllocFn) ReversePostOrderBlockIteratorBegin() *labelPosition {\n\tf.blockIter = 0\n\treturn f.ReversePostOrderBlockIteratorNext()\n}\n\n// ReversePostOrderBlockIteratorNext implements regalloc.Function.\nfunc (f *regAllocFn) ReversePostOrderBlockIteratorNext() *labelPosition {\n\tif f.blockIter >= len(f.m.orderedSSABlockLabelPos) {\n\t\treturn nil\n\t}\n\tb := f.m.orderedSSABlockLabelPos[f.blockIter]\n\tf.blockIter++\n\treturn b\n}\n\n// ClobberedRegisters implements regalloc.Function.\nfunc (f *regAllocFn) ClobberedRegisters(regs []regalloc.VReg) {\n\tf.m.clobberedRegs = append(f.m.clobberedRegs[:0], regs...)\n}\n\n// LoopNestingForestRoots implements regalloc.Function.\nfunc (f *regAllocFn) LoopNestingForestRoots() int {\n\tf.loopNestingForestRoots = f.ssaB.LoopNestingForestRoots()\n\treturn len(f.loopNestingForestRoots)\n}\n\n// LoopNestingForestRoot implements regalloc.Function.\nfunc (f *regAllocFn) LoopNestingForestRoot(i int) *labelPosition {\n\troot := f.loopNestingForestRoots[i]\n\tpos := f.m.getOrAllocateSSABlockLabelPosition(root)\n\treturn pos\n}\n\n// LowestCommonAncestor implements regalloc.Function.\nfunc (f *regAllocFn) LowestCommonAncestor(blk1, blk2 *labelPosition) *labelPosition {\n\tsb := f.ssaB.LowestCommonAncestor(blk1.sb, blk2.sb)\n\tpos := f.m.getOrAllocateSSABlockLabelPosition(sb)\n\treturn pos\n}\n\n// Idom implements regalloc.Function.\nfunc (f *regAllocFn) Idom(blk *labelPosition) *labelPosition {\n\tsb := f.ssaB.Idom(blk.sb)\n\tpos := f.m.getOrAllocateSSABlockLabelPosition(sb)\n\treturn pos\n}\n\n// SwapBefore implements regalloc.Function.\nfunc (f *regAllocFn) SwapBefore(x1, x2, tmp regalloc.VReg, instr *instruction) {\n\tf.m.swap(instr.prev, x1, x2, tmp)\n}\n\n// StoreRegisterBefore implements regalloc.Function.\nfunc (f *regAllocFn) StoreRegisterBefore(v regalloc.VReg, instr *instruction) {\n\tm := f.m\n\tm.insertStoreRegisterAt(v, instr, false)\n}\n\n// StoreRegisterAfter implements regalloc.Function.\nfunc (f *regAllocFn) StoreRegisterAfter(v regalloc.VReg, instr *instruction) {\n\tm := f.m\n\tm.insertStoreRegisterAt(v, instr, true)\n}\n\n// ReloadRegisterBefore implements regalloc.Function.\nfunc (f *regAllocFn) ReloadRegisterBefore(v regalloc.VReg, instr *instruction) {\n\tm := f.m\n\tm.insertReloadRegisterAt(v, instr, false)\n}\n\n// ReloadRegisterAfter implements regalloc.Function.\nfunc (f *regAllocFn) ReloadRegisterAfter(v regalloc.VReg, instr *instruction) {\n\tm := f.m\n\tm.insertReloadRegisterAt(v, instr, true)\n}\n\n// InsertMoveBefore implements regalloc.Function.\nfunc (f *regAllocFn) InsertMoveBefore(dst, src regalloc.VReg, instr *instruction) {\n\tf.m.insertMoveBefore(dst, src, instr)\n}\n\n// LoopNestingForestChild implements regalloc.Function.\nfunc (f *regAllocFn) LoopNestingForestChild(pos *labelPosition, i int) *labelPosition {\n\tchildSB := pos.sb.LoopNestingForestChildren()[i]\n\treturn f.m.getOrAllocateSSABlockLabelPosition(childSB)\n}\n\n// Succ implements regalloc.Block.\nfunc (f *regAllocFn) Succ(pos *labelPosition, i int) *labelPosition {\n\tsuccSB := pos.sb.Succ(i)\n\tif succSB.ReturnBlock() {\n\t\treturn nil\n\t}\n\treturn f.m.getOrAllocateSSABlockLabelPosition(succSB)\n}\n\n// Pred implements regalloc.Block.\nfunc (f *regAllocFn) Pred(pos *labelPosition, i int) *labelPosition {\n\tpredSB := pos.sb.Pred(i)\n\treturn f.m.getOrAllocateSSABlockLabelPosition(predSB)\n}\n\n// BlockParams implements regalloc.Function.\nfunc (f *regAllocFn) BlockParams(pos *labelPosition, regs *[]regalloc.VReg) []regalloc.VReg {\n\tc := f.m.c\n\t*regs = (*regs)[:0]\n\tfor i := 0; i < pos.sb.Params(); i++ {\n\t\tv := c.VRegOf(pos.sb.Param(i))\n\t\t*regs = append(*regs, v)\n\t}\n\treturn *regs\n}\n\n// ID implements regalloc.Block.\nfunc (pos *labelPosition) ID() int32 {\n\treturn int32(pos.sb.ID())\n}\n\n// InstrIteratorBegin implements regalloc.Block.\nfunc (pos *labelPosition) InstrIteratorBegin() *instruction {\n\tret := pos.begin\n\tpos.cur = ret\n\treturn ret\n}\n\n// InstrIteratorNext implements regalloc.Block.\nfunc (pos *labelPosition) InstrIteratorNext() *instruction {\n\tfor {\n\t\tif pos.cur == pos.end {\n\t\t\treturn nil\n\t\t}\n\t\tinstr := pos.cur.next\n\t\tpos.cur = instr\n\t\tif instr == nil {\n\t\t\treturn nil\n\t\t} else if instr.addedBeforeRegAlloc {\n\t\t\t// Only concerned about the instruction added before regalloc.\n\t\t\treturn instr\n\t\t}\n\t}\n}\n\n// InstrRevIteratorBegin implements regalloc.Block.\nfunc (pos *labelPosition) InstrRevIteratorBegin() *instruction {\n\tpos.cur = pos.end\n\treturn pos.cur\n}\n\n// InstrRevIteratorNext implements regalloc.Block.\nfunc (pos *labelPosition) InstrRevIteratorNext() *instruction {\n\tfor {\n\t\tif pos.cur == pos.begin {\n\t\t\treturn nil\n\t\t}\n\t\tinstr := pos.cur.prev\n\t\tpos.cur = instr\n\t\tif instr == nil {\n\t\t\treturn nil\n\t\t} else if instr.addedBeforeRegAlloc {\n\t\t\t// Only concerned about the instruction added before regalloc.\n\t\t\treturn instr\n\t\t}\n\t}\n}\n\n// FirstInstr implements regalloc.Block.\nfunc (pos *labelPosition) FirstInstr() *instruction { return pos.begin }\n\n// LastInstrForInsertion implements regalloc.Block.\nfunc (pos *labelPosition) LastInstrForInsertion() *instruction {\n\treturn lastInstrForInsertion(pos.begin, pos.end)\n}\n\n// Preds implements regalloc.Block.\nfunc (pos *labelPosition) Preds() int { return pos.sb.Preds() }\n\n// Entry implements regalloc.Block.\nfunc (pos *labelPosition) Entry() bool { return pos.sb.EntryBlock() }\n\n// Succs implements regalloc.Block.\nfunc (pos *labelPosition) Succs() int { return pos.sb.Succs() }\n\n// LoopHeader implements regalloc.Block.\nfunc (pos *labelPosition) LoopHeader() bool { return pos.sb.LoopHeader() }\n\n// LoopNestingForestChildren implements regalloc.Block.\nfunc (pos *labelPosition) LoopNestingForestChildren() int {\n\treturn len(pos.sb.LoopNestingForestChildren())\n}\n\nfunc (m *machine) insertMoveBefore(dst, src regalloc.VReg, instr *instruction) {\n\ttyp := src.RegType()\n\tif typ != dst.RegType() {\n\t\tpanic(\"BUG: src and dst must have the same type\")\n\t}\n\n\tmov := m.allocateInstr()\n\tif typ == regalloc.RegTypeInt {\n\t\tmov.asMovRR(src, dst, true)\n\t} else {\n\t\tmov.asXmmUnaryRmR(sseOpcodeMovdqu, newOperandReg(src), dst)\n\t}\n\n\tcur := instr.prev\n\tprevNext := cur.next\n\tcur = linkInstr(cur, mov)\n\tlinkInstr(cur, prevNext)\n}\n\nfunc (m *machine) insertStoreRegisterAt(v regalloc.VReg, instr *instruction, after bool) *instruction {\n\tif !v.IsRealReg() {\n\t\tpanic(\"BUG: VReg must be backed by real reg to be stored\")\n\t}\n\n\ttyp := m.c.TypeOf(v)\n\n\tvar prevNext, cur *instruction\n\tif after {\n\t\tcur, prevNext = instr, instr.next\n\t} else {\n\t\tcur, prevNext = instr.prev, instr\n\t}\n\n\toffsetFromSP := m.getVRegSpillSlotOffsetFromSP(v.ID(), typ.Size())\n\tstore := m.allocateInstr()\n\tmem := newOperandMem(m.newAmodeImmReg(uint32(offsetFromSP), rspVReg))\n\tswitch typ {\n\tcase ssa.TypeI32:\n\t\tstore.asMovRM(v, mem, 4)\n\tcase ssa.TypeI64:\n\t\tstore.asMovRM(v, mem, 8)\n\tcase ssa.TypeF32:\n\t\tstore.asXmmMovRM(sseOpcodeMovss, v, mem)\n\tcase ssa.TypeF64:\n\t\tstore.asXmmMovRM(sseOpcodeMovsd, v, mem)\n\tcase ssa.TypeV128:\n\t\tstore.asXmmMovRM(sseOpcodeMovdqu, v, mem)\n\t}\n\n\tcur = linkInstr(cur, store)\n\treturn linkInstr(cur, prevNext)\n}\n\nfunc (m *machine) insertReloadRegisterAt(v regalloc.VReg, instr *instruction, after bool) *instruction {\n\tif !v.IsRealReg() {\n\t\tpanic(\"BUG: VReg must be backed by real reg to be stored\")\n\t}\n\n\ttyp := m.c.TypeOf(v)\n\tvar prevNext, cur *instruction\n\tif after {\n\t\tcur, prevNext = instr, instr.next\n\t} else {\n\t\tcur, prevNext = instr.prev, instr\n\t}\n\n\t// Load the value to the temporary.\n\tload := m.allocateInstr()\n\toffsetFromSP := m.getVRegSpillSlotOffsetFromSP(v.ID(), typ.Size())\n\ta := newOperandMem(m.newAmodeImmReg(uint32(offsetFromSP), rspVReg))\n\tswitch typ {\n\tcase ssa.TypeI32:\n\t\tload.asMovzxRmR(extModeLQ, a, v)\n\tcase ssa.TypeI64:\n\t\tload.asMov64MR(a, v)\n\tcase ssa.TypeF32:\n\t\tload.asXmmUnaryRmR(sseOpcodeMovss, a, v)\n\tcase ssa.TypeF64:\n\t\tload.asXmmUnaryRmR(sseOpcodeMovsd, a, v)\n\tcase ssa.TypeV128:\n\t\tload.asXmmUnaryRmR(sseOpcodeMovdqu, a, v)\n\tdefault:\n\t\tpanic(\"BUG\")\n\t}\n\n\tcur = linkInstr(cur, load)\n\treturn linkInstr(cur, prevNext)\n}\n\nfunc (m *machine) swap(cur *instruction, x1, x2, tmp regalloc.VReg) {\n\tif x1.RegType() == regalloc.RegTypeInt {\n\t\tprevNext := cur.next\n\t\txc := m.allocateInstr().asXCHG(x1, newOperandReg(x2), 8)\n\t\tcur = linkInstr(cur, xc)\n\t\tlinkInstr(cur, prevNext)\n\t} else {\n\t\tif tmp.Valid() {\n\t\t\tprevNext := cur.next\n\t\t\tm.insertMoveBefore(tmp, x1, prevNext)\n\t\t\tm.insertMoveBefore(x1, x2, prevNext)\n\t\t\tm.insertMoveBefore(x2, tmp, prevNext)\n\t\t} else {\n\t\t\tprevNext := cur.next\n\t\t\tr2 := x2.RealReg()\n\t\t\t// Temporarily spill x1 to stack.\n\t\t\tcur = m.insertStoreRegisterAt(x1, cur, true).prev\n\t\t\t// Then move x2 to x1.\n\t\t\tcur = linkInstr(cur, m.allocateInstr().asXmmUnaryRmR(sseOpcodeMovdqa, newOperandReg(x2), x1))\n\t\t\tlinkInstr(cur, prevNext)\n\t\t\t// Then reload the original value on x1 from stack to r2.\n\t\t\tm.insertReloadRegisterAt(x1.SetRealReg(r2), cur, true)\n\t\t}\n\t}\n}\n\nfunc lastInstrForInsertion(begin, end *instruction) *instruction {\n\tcur := end\n\tfor cur.kind == nop0 {\n\t\tcur = cur.prev\n\t\tif cur == begin {\n\t\t\treturn end\n\t\t}\n\t}\n\tswitch cur.kind {\n\tcase jmp:\n\t\treturn cur\n\tdefault:\n\t\treturn end\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/amd64/machine_vec.go",
    "content": "package amd64\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/backend/regalloc\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/ssa\"\n)\n\nvar swizzleMask = [16]byte{\n\t0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70,\n\t0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70,\n}\n\nfunc (m *machine) lowerSwizzle(x, y ssa.Value, ret ssa.Value) {\n\tmasklabel := m.getOrAllocateConstLabel(&m.constSwizzleMaskConstIndex, swizzleMask[:])\n\n\t// Load mask to maskReg.\n\tmaskReg := m.c.AllocateVReg(ssa.TypeV128)\n\tloadMask := m.allocateInstr().asXmmUnaryRmR(sseOpcodeMovdqu, newOperandMem(m.newAmodeRipRel(masklabel)), maskReg)\n\tm.insert(loadMask)\n\n\t// Copy x and y to tmp registers.\n\txx := m.getOperand_Reg(m.c.ValueDefinition(x))\n\ttmpDst := m.copyToTmp(xx.reg())\n\tyy := m.getOperand_Reg(m.c.ValueDefinition(y))\n\ttmpX := m.copyToTmp(yy.reg())\n\n\tm.insert(m.allocateInstr().asXmmRmR(sseOpcodePaddusb, newOperandReg(maskReg), tmpX))\n\tm.insert(m.allocateInstr().asXmmRmR(sseOpcodePshufb, newOperandReg(tmpX), tmpDst))\n\n\t// Copy the result to the destination register.\n\tm.copyTo(tmpDst, m.c.VRegOf(ret))\n}\n\nfunc (m *machine) lowerInsertLane(x, y ssa.Value, index byte, ret ssa.Value, lane ssa.VecLane) {\n\t// Copy x to tmp.\n\ttmpDst := m.c.AllocateVReg(ssa.TypeV128)\n\tm.insert(m.allocateInstr().asXmmUnaryRmR(sseOpcodeMovdqu, m.getOperand_Mem_Reg(m.c.ValueDefinition(x)), tmpDst))\n\n\tyy := m.getOperand_Reg(m.c.ValueDefinition(y))\n\tswitch lane {\n\tcase ssa.VecLaneI8x16:\n\t\tm.insert(m.allocateInstr().asXmmRmRImm(sseOpcodePinsrb, index, yy, tmpDst))\n\tcase ssa.VecLaneI16x8:\n\t\tm.insert(m.allocateInstr().asXmmRmRImm(sseOpcodePinsrw, index, yy, tmpDst))\n\tcase ssa.VecLaneI32x4:\n\t\tm.insert(m.allocateInstr().asXmmRmRImm(sseOpcodePinsrd, index, yy, tmpDst))\n\tcase ssa.VecLaneI64x2:\n\t\tm.insert(m.allocateInstr().asXmmRmRImm(sseOpcodePinsrq, index, yy, tmpDst))\n\tcase ssa.VecLaneF32x4:\n\t\t// In INSERTPS instruction, the destination index is encoded at 4 and 5 bits of the argument.\n\t\t// See https://www.felixcloutier.com/x86/insertps\n\t\tm.insert(m.allocateInstr().asXmmRmRImm(sseOpcodeInsertps, index<<4, yy, tmpDst))\n\tcase ssa.VecLaneF64x2:\n\t\tif index == 0 {\n\t\t\tm.insert(m.allocateInstr().asXmmUnaryRmR(sseOpcodeMovsd, yy, tmpDst))\n\t\t} else {\n\t\t\tm.insert(m.allocateInstr().asXmmRmR(sseOpcodeMovlhps, yy, tmpDst))\n\t\t}\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"invalid lane type: %s\", lane))\n\t}\n\n\tm.copyTo(tmpDst, m.c.VRegOf(ret))\n}\n\nfunc (m *machine) lowerExtractLane(x ssa.Value, index byte, signed bool, ret ssa.Value, lane ssa.VecLane) {\n\t// Pextr variants are used to extract a lane from a vector register.\n\txx := m.getOperand_Reg(m.c.ValueDefinition(x))\n\n\ttmpDst := m.c.AllocateVReg(ret.Type())\n\tm.insert(m.allocateInstr().asDefineUninitializedReg(tmpDst))\n\tswitch lane {\n\tcase ssa.VecLaneI8x16:\n\t\tm.insert(m.allocateInstr().asXmmRmRImm(sseOpcodePextrb, index, xx, tmpDst))\n\t\tif signed {\n\t\t\tm.insert(m.allocateInstr().asMovsxRmR(extModeBL, newOperandReg(tmpDst), tmpDst))\n\t\t} else {\n\t\t\tm.insert(m.allocateInstr().asMovzxRmR(extModeBL, newOperandReg(tmpDst), tmpDst))\n\t\t}\n\tcase ssa.VecLaneI16x8:\n\t\tm.insert(m.allocateInstr().asXmmRmRImm(sseOpcodePextrw, index, xx, tmpDst))\n\t\tif signed {\n\t\t\tm.insert(m.allocateInstr().asMovsxRmR(extModeWL, newOperandReg(tmpDst), tmpDst))\n\t\t} else {\n\t\t\tm.insert(m.allocateInstr().asMovzxRmR(extModeWL, newOperandReg(tmpDst), tmpDst))\n\t\t}\n\tcase ssa.VecLaneI32x4:\n\t\tm.insert(m.allocateInstr().asXmmRmRImm(sseOpcodePextrd, index, xx, tmpDst))\n\tcase ssa.VecLaneI64x2:\n\t\tm.insert(m.allocateInstr().asXmmRmRImm(sseOpcodePextrq, index, xx, tmpDst))\n\tcase ssa.VecLaneF32x4:\n\t\tif index == 0 {\n\t\t\tm.insert(m.allocateInstr().asXmmUnaryRmR(sseOpcodeMovss, xx, tmpDst))\n\t\t} else {\n\t\t\tm.insert(m.allocateInstr().asXmmRmRImm(sseOpcodePshufd, index, xx, tmpDst))\n\t\t}\n\tcase ssa.VecLaneF64x2:\n\t\tif index == 0 {\n\t\t\tm.insert(m.allocateInstr().asXmmUnaryRmR(sseOpcodeMovsd, xx, tmpDst))\n\t\t} else {\n\t\t\tm.copyTo(xx.reg(), tmpDst)\n\t\t\tm.insert(m.allocateInstr().asXmmRmRImm(sseOpcodePshufd, 0b00_00_11_10, newOperandReg(tmpDst), tmpDst))\n\t\t}\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"invalid lane type: %s\", lane))\n\t}\n\n\tm.copyTo(tmpDst, m.c.VRegOf(ret))\n}\n\nvar sqmulRoundSat = [16]byte{\n\t0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80,\n\t0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80,\n}\n\nfunc (m *machine) lowerSqmulRoundSat(x, y, ret ssa.Value) {\n\t// See https://github.com/WebAssembly/simd/pull/365 for the following logic.\n\tmaskLabel := m.getOrAllocateConstLabel(&m.constSqmulRoundSatIndex, sqmulRoundSat[:])\n\n\ttmp := m.c.AllocateVReg(ssa.TypeV128)\n\tloadMask := m.allocateInstr().asXmmUnaryRmR(sseOpcodeMovdqu, newOperandMem(m.newAmodeRipRel(maskLabel)), tmp)\n\tm.insert(loadMask)\n\n\txx, yy := m.getOperand_Reg(m.c.ValueDefinition(x)), m.getOperand_Mem_Reg(m.c.ValueDefinition(y))\n\ttmpX := m.copyToTmp(xx.reg())\n\n\tm.insert(m.allocateInstr().asXmmRmR(sseOpcodePmulhrsw, yy, tmpX))\n\tm.insert(m.allocateInstr().asXmmRmR(sseOpcodePcmpeqw, newOperandReg(tmpX), tmp))\n\tm.insert(m.allocateInstr().asXmmRmR(sseOpcodePxor, newOperandReg(tmp), tmpX))\n\n\tm.copyTo(tmpX, m.c.VRegOf(ret))\n}\n\nfunc (m *machine) lowerVUshr(x, y, ret ssa.Value, lane ssa.VecLane) {\n\tswitch lane {\n\tcase ssa.VecLaneI8x16:\n\t\tm.lowerVUshri8x16(x, y, ret)\n\tcase ssa.VecLaneI16x8, ssa.VecLaneI32x4, ssa.VecLaneI64x2:\n\t\tm.lowerShr(x, y, ret, lane, false)\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"invalid lane type: %s\", lane))\n\t}\n}\n\n// i8x16LogicalSHRMaskTable is necessary for emulating non-existent packed bytes logical right shifts on amd64.\n// The mask is applied after performing packed word shifts on the value to clear out the unnecessary bits.\nvar i8x16LogicalSHRMaskTable = [8 * 16]byte{ // (the number of possible shift amount 0, 1, ..., 7.) * 16 bytes.\n\t0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // for 0 shift\n\t0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, // for 1 shift\n\t0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, // for 2 shift\n\t0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, // for 3 shift\n\t0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, // for 4 shift\n\t0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, // for 5 shift\n\t0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, // for 6 shift\n\t0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, // for 7 shift\n}\n\nfunc (m *machine) lowerVUshri8x16(x, y, ret ssa.Value) {\n\ttmpGpReg := m.c.AllocateVReg(ssa.TypeI32)\n\t// Load the modulo 8 mask to tmpReg.\n\tm.lowerIconst(tmpGpReg, 0x7, false)\n\t// Take the modulo 8 of the shift amount.\n\tshiftAmt := m.getOperand_Mem_Imm32_Reg(m.c.ValueDefinition(y))\n\tm.insert(m.allocateInstr().asAluRmiR(aluRmiROpcodeAnd, shiftAmt, tmpGpReg, false))\n\n\t_xx := m.getOperand_Reg(m.c.ValueDefinition(x))\n\txx := m.copyToTmp(_xx.reg())\n\n\tvecTmp := m.c.AllocateVReg(ssa.TypeV128)\n\tm.insert(m.allocateInstr().asGprToXmm(sseOpcodeMovd, newOperandReg(tmpGpReg), vecTmp, false))\n\tm.insert(m.allocateInstr().asXmmRmiReg(sseOpcodePsrlw, newOperandReg(vecTmp), xx))\n\n\tmaskTableLabel := m.getOrAllocateConstLabel(&m.constI8x16LogicalSHRMaskTableIndex, i8x16LogicalSHRMaskTable[:])\n\tbase := m.c.AllocateVReg(ssa.TypeI64)\n\tlea := m.allocateInstr().asLEA(newOperandLabel(maskTableLabel), base)\n\tm.insert(lea)\n\n\t// Shift tmpGpReg by 4 to multiply the shift amount by 16.\n\tm.insert(m.allocateInstr().asShiftR(shiftROpShiftLeft, newOperandImm32(4), tmpGpReg, false))\n\n\tmem := m.newAmodeRegRegShift(0, base, tmpGpReg, 0)\n\tloadMask := m.allocateInstr().asXmmUnaryRmR(sseOpcodeMovdqu, newOperandMem(mem), vecTmp)\n\tm.insert(loadMask)\n\n\tm.insert(m.allocateInstr().asXmmRmR(sseOpcodePand, newOperandReg(vecTmp), xx))\n\tm.copyTo(xx, m.c.VRegOf(ret))\n}\n\nfunc (m *machine) lowerVSshr(x, y, ret ssa.Value, lane ssa.VecLane) {\n\tswitch lane {\n\tcase ssa.VecLaneI8x16:\n\t\tm.lowerVSshri8x16(x, y, ret)\n\tcase ssa.VecLaneI16x8, ssa.VecLaneI32x4:\n\t\tm.lowerShr(x, y, ret, lane, true)\n\tcase ssa.VecLaneI64x2:\n\t\tm.lowerVSshri64x2(x, y, ret)\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"invalid lane type: %s\", lane))\n\t}\n}\n\nfunc (m *machine) lowerVSshri8x16(x, y, ret ssa.Value) {\n\tshiftAmtReg := m.c.AllocateVReg(ssa.TypeI32)\n\t// Load the modulo 8 mask to tmpReg.\n\tm.lowerIconst(shiftAmtReg, 0x7, false)\n\t// Take the modulo 8 of the shift amount.\n\tshiftAmt := m.getOperand_Mem_Imm32_Reg(m.c.ValueDefinition(y))\n\tm.insert(m.allocateInstr().asAluRmiR(aluRmiROpcodeAnd, shiftAmt, shiftAmtReg, false))\n\n\t// Copy the x value to two temporary registers.\n\t_xx := m.getOperand_Reg(m.c.ValueDefinition(x))\n\txx := m.copyToTmp(_xx.reg())\n\tvecTmp := m.c.AllocateVReg(ssa.TypeV128)\n\tm.copyTo(xx, vecTmp)\n\n\t// Assuming that we have\n\t//  xx   = [b1, ..., b16]\n\t//  vecTmp = [b1, ..., b16]\n\t// at this point, then we use PUNPCKLBW and PUNPCKHBW to produce:\n\t//  xx   = [b1, b1, b2, b2, ..., b8, b8]\n\t//  vecTmp = [b9, b9, b10, b10, ..., b16, b16]\n\tm.insert(m.allocateInstr().asXmmRmR(sseOpcodePunpcklbw, newOperandReg(xx), xx))\n\tm.insert(m.allocateInstr().asXmmRmR(sseOpcodePunpckhbw, newOperandReg(vecTmp), vecTmp))\n\n\t// Adding 8 to the shift amount, and then move the amount to vecTmp2.\n\tvecTmp2 := m.c.AllocateVReg(ssa.TypeV128)\n\tm.insert(m.allocateInstr().asAluRmiR(aluRmiROpcodeAdd, newOperandImm32(8), shiftAmtReg, false))\n\tm.insert(m.allocateInstr().asGprToXmm(sseOpcodeMovd, newOperandReg(shiftAmtReg), vecTmp2, false))\n\n\t// Perform the word packed arithmetic right shifts on vreg and vecTmp.\n\t// This changes these two registers as:\n\t//  xx   = [xxx, b1 >> s, xxx, b2 >> s, ..., xxx, b8 >> s]\n\t//  vecTmp = [xxx, b9 >> s, xxx, b10 >> s, ..., xxx, b16 >> s]\n\t// where xxx is 1 or 0 depending on each byte's sign, and \">>\" is the arithmetic shift on a byte.\n\tm.insert(m.allocateInstr().asXmmRmiReg(sseOpcodePsraw, newOperandReg(vecTmp2), xx))\n\tm.insert(m.allocateInstr().asXmmRmiReg(sseOpcodePsraw, newOperandReg(vecTmp2), vecTmp))\n\n\t// Finally, we can get the result by packing these two word vectors.\n\tm.insert(m.allocateInstr().asXmmRmR(sseOpcodePacksswb, newOperandReg(vecTmp), xx))\n\n\tm.copyTo(xx, m.c.VRegOf(ret))\n}\n\nfunc (m *machine) lowerVSshri64x2(x, y, ret ssa.Value) {\n\t// Load the shift amount to RCX.\n\tshiftAmt := m.getOperand_Mem_Reg(m.c.ValueDefinition(y))\n\tm.insert(m.allocateInstr().asMovzxRmR(extModeBQ, shiftAmt, rcxVReg))\n\n\ttmpGp := m.c.AllocateVReg(ssa.TypeI64)\n\n\t_xx := m.getOperand_Reg(m.c.ValueDefinition(x))\n\txxReg := m.copyToTmp(_xx.reg())\n\n\tm.insert(m.allocateInstr().asDefineUninitializedReg(tmpGp))\n\tm.insert(m.allocateInstr().asXmmRmRImm(sseOpcodePextrq, 0, newOperandReg(xxReg), tmpGp))\n\tm.insert(m.allocateInstr().asShiftR(shiftROpShiftRightArithmetic, newOperandReg(rcxVReg), tmpGp, true))\n\tm.insert(m.allocateInstr().asXmmRmRImm(sseOpcodePinsrq, 0, newOperandReg(tmpGp), xxReg))\n\tm.insert(m.allocateInstr().asXmmRmRImm(sseOpcodePextrq, 1, newOperandReg(xxReg), tmpGp))\n\tm.insert(m.allocateInstr().asShiftR(shiftROpShiftRightArithmetic, newOperandReg(rcxVReg), tmpGp, true))\n\tm.insert(m.allocateInstr().asXmmRmRImm(sseOpcodePinsrq, 1, newOperandReg(tmpGp), xxReg))\n\n\tm.copyTo(xxReg, m.c.VRegOf(ret))\n}\n\nfunc (m *machine) lowerShr(x, y, ret ssa.Value, lane ssa.VecLane, signed bool) {\n\tvar modulo uint64\n\tvar shiftOp sseOpcode\n\tswitch lane {\n\tcase ssa.VecLaneI16x8:\n\t\tmodulo = 0xf\n\t\tif signed {\n\t\t\tshiftOp = sseOpcodePsraw\n\t\t} else {\n\t\t\tshiftOp = sseOpcodePsrlw\n\t\t}\n\tcase ssa.VecLaneI32x4:\n\t\tmodulo = 0x1f\n\t\tif signed {\n\t\t\tshiftOp = sseOpcodePsrad\n\t\t} else {\n\t\t\tshiftOp = sseOpcodePsrld\n\t\t}\n\tcase ssa.VecLaneI64x2:\n\t\tmodulo = 0x3f\n\t\tif signed {\n\t\t\tpanic(\"BUG\")\n\t\t}\n\t\tshiftOp = sseOpcodePsrlq\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"invalid lane type: %s\", lane))\n\t}\n\n\t_xx := m.getOperand_Reg(m.c.ValueDefinition(x))\n\txx := m.copyToTmp(_xx.reg())\n\n\ttmpGpReg := m.c.AllocateVReg(ssa.TypeI32)\n\t// Load the modulo 8 mask to tmpReg.\n\tm.lowerIconst(tmpGpReg, modulo, false)\n\t// Take the modulo 8 of the shift amount.\n\tm.insert(m.allocateInstr().asAluRmiR(aluRmiROpcodeAnd,\n\t\tm.getOperand_Mem_Imm32_Reg(m.c.ValueDefinition(y)), tmpGpReg, false))\n\t// And move it to a xmm register.\n\ttmpVec := m.c.AllocateVReg(ssa.TypeV128)\n\tm.insert(m.allocateInstr().asGprToXmm(sseOpcodeMovd, newOperandReg(tmpGpReg), tmpVec, false))\n\n\t// Then do the actual shift.\n\tm.insert(m.allocateInstr().asXmmRmiReg(shiftOp, newOperandReg(tmpVec), xx))\n\n\tm.copyTo(xx, m.c.VRegOf(ret))\n}\n\nfunc (m *machine) lowerVIshl(x, y, ret ssa.Value, lane ssa.VecLane) {\n\tvar modulo uint64\n\tvar shiftOp sseOpcode\n\tvar isI8x16 bool\n\tswitch lane {\n\tcase ssa.VecLaneI8x16:\n\t\tisI8x16 = true\n\t\tmodulo = 0x7\n\t\tshiftOp = sseOpcodePsllw\n\tcase ssa.VecLaneI16x8:\n\t\tmodulo = 0xf\n\t\tshiftOp = sseOpcodePsllw\n\tcase ssa.VecLaneI32x4:\n\t\tmodulo = 0x1f\n\t\tshiftOp = sseOpcodePslld\n\tcase ssa.VecLaneI64x2:\n\t\tmodulo = 0x3f\n\t\tshiftOp = sseOpcodePsllq\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"invalid lane type: %s\", lane))\n\t}\n\n\t_xx := m.getOperand_Reg(m.c.ValueDefinition(x))\n\txx := m.copyToTmp(_xx.reg())\n\n\ttmpGpReg := m.c.AllocateVReg(ssa.TypeI32)\n\t// Load the modulo 8 mask to tmpReg.\n\tm.lowerIconst(tmpGpReg, modulo, false)\n\t// Take the modulo 8 of the shift amount.\n\tm.insert(m.allocateInstr().asAluRmiR(aluRmiROpcodeAnd,\n\t\tm.getOperand_Mem_Imm32_Reg(m.c.ValueDefinition(y)), tmpGpReg, false))\n\t// And move it to a xmm register.\n\ttmpVec := m.c.AllocateVReg(ssa.TypeV128)\n\tm.insert(m.allocateInstr().asGprToXmm(sseOpcodeMovd, newOperandReg(tmpGpReg), tmpVec, false))\n\n\t// Then do the actual shift.\n\tm.insert(m.allocateInstr().asXmmRmiReg(shiftOp, newOperandReg(tmpVec), xx))\n\n\tif isI8x16 {\n\t\tmaskTableLabel := m.getOrAllocateConstLabel(&m.constI8x16SHLMaskTableIndex, i8x16SHLMaskTable[:])\n\t\tbase := m.c.AllocateVReg(ssa.TypeI64)\n\t\tlea := m.allocateInstr().asLEA(newOperandLabel(maskTableLabel), base)\n\t\tm.insert(lea)\n\n\t\t// Shift tmpGpReg by 4 to multiply the shift amount by 16.\n\t\tm.insert(m.allocateInstr().asShiftR(shiftROpShiftLeft, newOperandImm32(4), tmpGpReg, false))\n\n\t\tmem := m.newAmodeRegRegShift(0, base, tmpGpReg, 0)\n\t\tloadMask := m.allocateInstr().asXmmUnaryRmR(sseOpcodeMovdqu, newOperandMem(mem), tmpVec)\n\t\tm.insert(loadMask)\n\n\t\tm.insert(m.allocateInstr().asXmmRmR(sseOpcodePand, newOperandReg(tmpVec), xx))\n\t}\n\n\tm.copyTo(xx, m.c.VRegOf(ret))\n}\n\n// i8x16SHLMaskTable is necessary for emulating non-existent packed bytes left shifts on amd64.\n// The mask is applied after performing packed word shifts on the value to clear out the unnecessary bits.\nvar i8x16SHLMaskTable = [8 * 16]byte{ // (the number of possible shift amount 0, 1, ..., 7.) * 16 bytes.\n\t0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // for 0 shift\n\t0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, // for 1 shift\n\t0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, // for 2 shift\n\t0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, // for 3 shift\n\t0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, // for 4 shift\n\t0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, // for 5 shift\n\t0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, // for 6 shift\n\t0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, // for 7 shift\n}\n\nfunc (m *machine) lowerVRound(x, ret ssa.Value, imm byte, _64 bool) {\n\txx := m.getOperand_Mem_Reg(m.c.ValueDefinition(x))\n\tvar round sseOpcode\n\tif _64 {\n\t\tround = sseOpcodeRoundpd\n\t} else {\n\t\tround = sseOpcodeRoundps\n\t}\n\tm.insert(m.allocateInstr().asXmmUnaryRmRImm(round, imm, xx, m.c.VRegOf(ret)))\n}\n\nvar (\n\tallOnesI8x16              = [16]byte{0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1}\n\tallOnesI16x8              = [16]byte{0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0}\n\textAddPairwiseI16x8uMask1 = [16]byte{0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80}\n\textAddPairwiseI16x8uMask2 = [16]byte{0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00}\n)\n\nfunc (m *machine) lowerExtIaddPairwise(x, ret ssa.Value, srcLane ssa.VecLane, signed bool) {\n\t_xx := m.getOperand_Reg(m.c.ValueDefinition(x))\n\txx := m.copyToTmp(_xx.reg())\n\tswitch srcLane {\n\tcase ssa.VecLaneI8x16:\n\t\tallOneReg := m.c.AllocateVReg(ssa.TypeV128)\n\t\tmask := m.getOrAllocateConstLabel(&m.constAllOnesI8x16Index, allOnesI8x16[:])\n\t\tm.insert(m.allocateInstr().asXmmUnaryRmR(sseOpcodeMovdqu, newOperandMem(m.newAmodeRipRel(mask)), allOneReg))\n\n\t\tvar resultReg regalloc.VReg\n\t\tif signed {\n\t\t\tresultReg = allOneReg\n\t\t\tm.insert(m.allocateInstr().asXmmRmR(sseOpcodePmaddubsw, newOperandReg(xx), resultReg))\n\t\t} else {\n\t\t\t// Interpreter tmp (all ones) as signed byte meaning that all the multiply-add is unsigned.\n\t\t\tresultReg = xx\n\t\t\tm.insert(m.allocateInstr().asXmmRmR(sseOpcodePmaddubsw, newOperandReg(allOneReg), resultReg))\n\t\t}\n\t\tm.copyTo(resultReg, m.c.VRegOf(ret))\n\n\tcase ssa.VecLaneI16x8:\n\t\tif signed {\n\t\t\tallOnesReg := m.c.AllocateVReg(ssa.TypeV128)\n\t\t\tmask := m.getOrAllocateConstLabel(&m.constAllOnesI16x8Index, allOnesI16x8[:])\n\t\t\tm.insert(m.allocateInstr().asXmmUnaryRmR(sseOpcodeMovdqu, newOperandMem(m.newAmodeRipRel(mask)), allOnesReg))\n\t\t\tm.insert(m.allocateInstr().asXmmRmR(sseOpcodePmaddwd, newOperandReg(allOnesReg), xx))\n\t\t\tm.copyTo(xx, m.c.VRegOf(ret))\n\t\t} else {\n\t\t\tmaskReg := m.c.AllocateVReg(ssa.TypeV128)\n\t\t\tmask := m.getOrAllocateConstLabel(&m.constExtAddPairwiseI16x8uMask1Index, extAddPairwiseI16x8uMask1[:])\n\t\t\tm.insert(m.allocateInstr().asXmmUnaryRmR(sseOpcodeMovdqu, newOperandMem(m.newAmodeRipRel(mask)), maskReg))\n\n\t\t\t// Flip the sign bits on xx.\n\t\t\t//\n\t\t\t// Assuming that xx = [w1, ..., w8], now we have,\n\t\t\t// \txx[i] = int8(-w1) for i = 0...8\n\t\t\tm.insert(m.allocateInstr().asXmmRmR(sseOpcodePxor, newOperandReg(maskReg), xx))\n\n\t\t\tmask = m.getOrAllocateConstLabel(&m.constAllOnesI16x8Index, allOnesI16x8[:])\n\t\t\tm.insert(m.allocateInstr().asXmmUnaryRmR(sseOpcodeMovdqu, newOperandMem(m.newAmodeRipRel(mask)), maskReg))\n\n\t\t\t// For i = 0,..4 (as this results in i32x4 lanes), now we have\n\t\t\t// xx[i] = int32(-wn + -w(n+1)) = int32(-(wn + w(n+1)))\n\t\t\t// c.assembler.CompileRegisterToRegister(amd64.PMADDWD, tmp, vr)\n\t\t\tm.insert(m.allocateInstr().asXmmRmR(sseOpcodePmaddwd, newOperandReg(maskReg), xx))\n\n\t\t\tmask = m.getOrAllocateConstLabel(&m.constExtAddPairwiseI16x8uMask2Index, extAddPairwiseI16x8uMask2[:])\n\t\t\tm.insert(m.allocateInstr().asXmmUnaryRmR(sseOpcodeMovdqu, newOperandMem(m.newAmodeRipRel(mask)), maskReg))\n\n\t\t\t// vr[i] = int32(-(wn + w(n+1))) + int32(math.MaxInt16+1) = int32((wn + w(n+1))) = uint32(wn + w(n+1)).\n\t\t\t// c.assembler.CompileRegisterToRegister(amd64.PADDD, tmp, vr)\n\t\t\tm.insert(m.allocateInstr().asXmmRmR(sseOpcodePaddd, newOperandReg(maskReg), xx))\n\n\t\t\tm.copyTo(xx, m.c.VRegOf(ret))\n\t\t}\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"invalid lane type: %s\", srcLane))\n\t}\n}\n\nfunc (m *machine) lowerWidenLow(x, ret ssa.Value, lane ssa.VecLane, signed bool) {\n\tvar sseOp sseOpcode\n\tswitch lane {\n\tcase ssa.VecLaneI8x16:\n\t\tif signed {\n\t\t\tsseOp = sseOpcodePmovsxbw\n\t\t} else {\n\t\t\tsseOp = sseOpcodePmovzxbw\n\t\t}\n\tcase ssa.VecLaneI16x8:\n\t\tif signed {\n\t\t\tsseOp = sseOpcodePmovsxwd\n\t\t} else {\n\t\t\tsseOp = sseOpcodePmovzxwd\n\t\t}\n\tcase ssa.VecLaneI32x4:\n\t\tif signed {\n\t\t\tsseOp = sseOpcodePmovsxdq\n\t\t} else {\n\t\t\tsseOp = sseOpcodePmovzxdq\n\t\t}\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"invalid lane type: %s\", lane))\n\t}\n\n\txx := m.getOperand_Mem_Reg(m.c.ValueDefinition(x))\n\tm.insert(m.allocateInstr().asXmmUnaryRmR(sseOp, xx, m.c.VRegOf(ret)))\n}\n\nfunc (m *machine) lowerWidenHigh(x, ret ssa.Value, lane ssa.VecLane, signed bool) {\n\ttmp := m.c.AllocateVReg(ssa.TypeV128)\n\txx := m.getOperand_Reg(m.c.ValueDefinition(x))\n\tm.copyTo(xx.reg(), tmp)\n\tm.insert(m.allocateInstr().asXmmRmRImm(sseOpcodePalignr, 8, newOperandReg(tmp), tmp))\n\n\tvar sseOp sseOpcode\n\tswitch lane {\n\tcase ssa.VecLaneI8x16:\n\t\tif signed {\n\t\t\tsseOp = sseOpcodePmovsxbw\n\t\t} else {\n\t\t\tsseOp = sseOpcodePmovzxbw\n\t\t}\n\tcase ssa.VecLaneI16x8:\n\t\tif signed {\n\t\t\tsseOp = sseOpcodePmovsxwd\n\t\t} else {\n\t\t\tsseOp = sseOpcodePmovzxwd\n\t\t}\n\tcase ssa.VecLaneI32x4:\n\t\tif signed {\n\t\t\tsseOp = sseOpcodePmovsxdq\n\t\t} else {\n\t\t\tsseOp = sseOpcodePmovzxdq\n\t\t}\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"invalid lane type: %s\", lane))\n\t}\n\n\tm.insert(m.allocateInstr().asXmmUnaryRmR(sseOp, newOperandReg(tmp), m.c.VRegOf(ret)))\n}\n\nfunc (m *machine) lowerLoadSplat(ptr ssa.Value, offset uint32, ret ssa.Value, lane ssa.VecLane) {\n\ttmpDst, tmpGp := m.c.AllocateVReg(ssa.TypeV128), m.c.AllocateVReg(ssa.TypeI64)\n\tam := newOperandMem(m.lowerToAddressMode(ptr, offset))\n\n\tm.insert(m.allocateInstr().asDefineUninitializedReg(tmpDst))\n\tswitch lane {\n\tcase ssa.VecLaneI8x16:\n\t\tm.insert(m.allocateInstr().asMovzxRmR(extModeBQ, am, tmpGp))\n\t\tm.insert(m.allocateInstr().asXmmRmRImm(sseOpcodePinsrb, 0, newOperandReg(tmpGp), tmpDst))\n\t\ttmpZeroVec := m.c.AllocateVReg(ssa.TypeV128)\n\t\tm.insert(m.allocateInstr().asZeros(tmpZeroVec))\n\t\tm.insert(m.allocateInstr().asXmmRmR(sseOpcodePshufb, newOperandReg(tmpZeroVec), tmpDst))\n\tcase ssa.VecLaneI16x8:\n\t\tm.insert(m.allocateInstr().asMovzxRmR(extModeWQ, am, tmpGp))\n\t\tm.insert(m.allocateInstr().asXmmRmRImm(sseOpcodePinsrw, 0, newOperandReg(tmpGp), tmpDst))\n\t\tm.insert(m.allocateInstr().asXmmRmRImm(sseOpcodePinsrw, 1, newOperandReg(tmpGp), tmpDst))\n\t\tm.insert(m.allocateInstr().asXmmRmRImm(sseOpcodePshufd, 0, newOperandReg(tmpDst), tmpDst))\n\tcase ssa.VecLaneI32x4:\n\t\tm.insert(m.allocateInstr().asMovzxRmR(extModeLQ, am, tmpGp))\n\t\tm.insert(m.allocateInstr().asXmmRmRImm(sseOpcodePinsrd, 0, newOperandReg(tmpGp), tmpDst))\n\t\tm.insert(m.allocateInstr().asXmmRmRImm(sseOpcodePshufd, 0, newOperandReg(tmpDst), tmpDst))\n\tcase ssa.VecLaneI64x2:\n\t\tm.insert(m.allocateInstr().asMov64MR(am, tmpGp))\n\t\tm.insert(m.allocateInstr().asXmmRmRImm(sseOpcodePinsrq, 0, newOperandReg(tmpGp), tmpDst))\n\t\tm.insert(m.allocateInstr().asXmmRmRImm(sseOpcodePinsrq, 1, newOperandReg(tmpGp), tmpDst))\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"invalid lane type: %s\", lane))\n\t}\n\n\tm.copyTo(tmpDst, m.c.VRegOf(ret))\n}\n\nvar f64x2CvtFromIMask = [16]byte{\n\t0x00, 0x00, 0x30, 0x43, 0x00, 0x00, 0x30, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n}\n\nfunc (m *machine) lowerVFcvtFromInt(x, ret ssa.Value, lane ssa.VecLane, signed bool) {\n\tswitch lane {\n\tcase ssa.VecLaneF32x4:\n\t\tif signed {\n\t\t\txx := m.getOperand_Reg(m.c.ValueDefinition(x))\n\t\t\tm.insert(m.allocateInstr().asXmmUnaryRmR(sseOpcodeCvtdq2ps, xx, m.c.VRegOf(ret)))\n\t\t} else {\n\t\t\txx := m.getOperand_Reg(m.c.ValueDefinition(x))\n\t\t\t// Copy the value to two temporary registers.\n\t\t\ttmp := m.copyToTmp(xx.reg())\n\t\t\ttmp2 := m.copyToTmp(xx.reg())\n\n\t\t\t// Clear the higher 16 bits of each 32-bit element.\n\t\t\tm.insert(m.allocateInstr().asXmmRmiReg(sseOpcodePslld, newOperandImm32(0xa), tmp))\n\t\t\tm.insert(m.allocateInstr().asXmmRmiReg(sseOpcodePsrld, newOperandImm32(0xa), tmp))\n\n\t\t\t// Subtract the higher 16-bits from tmp2: clear the lower 16-bits of tmp2.\n\t\t\tm.insert(m.allocateInstr().asXmmRmR(sseOpcodePsubd, newOperandReg(tmp), tmp2))\n\n\t\t\t// Convert the lower 16-bits in tmp.\n\t\t\tm.insert(m.allocateInstr().asXmmUnaryRmR(sseOpcodeCvtdq2ps, newOperandReg(tmp), tmp))\n\n\t\t\t// Left shift by one and convert tmp2, meaning that halved conversion result of higher 16-bits in tmp2.\n\t\t\tm.insert(m.allocateInstr().asXmmRmiReg(sseOpcodePsrld, newOperandImm32(1), tmp2))\n\t\t\tm.insert(m.allocateInstr().asXmmUnaryRmR(sseOpcodeCvtdq2ps, newOperandReg(tmp2), tmp2))\n\n\t\t\t// Double the converted halved higher 16bits.\n\t\t\tm.insert(m.allocateInstr().asXmmRmR(sseOpcodeAddps, newOperandReg(tmp2), tmp2))\n\n\t\t\t// Get the conversion result by add tmp (holding lower 16-bit conversion) into tmp2.\n\t\t\tm.insert(m.allocateInstr().asXmmRmR(sseOpcodeAddps, newOperandReg(tmp), tmp2))\n\n\t\t\tm.copyTo(tmp2, m.c.VRegOf(ret))\n\t\t}\n\tcase ssa.VecLaneF64x2:\n\t\tif signed {\n\t\t\txx := m.getOperand_Mem_Reg(m.c.ValueDefinition(x))\n\t\t\tm.insert(m.allocateInstr().asXmmUnaryRmR(sseOpcodeCvtdq2pd, xx, m.c.VRegOf(ret)))\n\t\t} else {\n\t\t\tmaskReg := m.c.AllocateVReg(ssa.TypeV128)\n\t\t\tmaskLabel := m.getOrAllocateConstLabel(&m.constF64x2CvtFromIMaskIndex, f64x2CvtFromIMask[:])\n\t\t\t// maskReg = [0x00, 0x00, 0x30, 0x43, 0x00, 0x00, 0x30, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]\n\t\t\tm.insert(m.allocateInstr().asXmmUnaryRmR(sseOpcodeMovdqu, newOperandMem(m.newAmodeRipRel(maskLabel)), maskReg))\n\n\t\t\t_xx := m.getOperand_Reg(m.c.ValueDefinition(x))\n\t\t\txx := m.copyToTmp(_xx.reg())\n\n\t\t\t// Given that we have xx = [d1, d2, d3, d4], this results in\n\t\t\t//\txx = [d1, [0x00, 0x00, 0x30, 0x43], d2, [0x00, 0x00, 0x30, 0x43]]\n\t\t\t//     = [float64(uint32(d1)) + 0x1.0p52, float64(uint32(d2)) + 0x1.0p52]\n\t\t\t//     ^See https://stackoverflow.com/questions/13269523/can-all-32-bit-ints-be-exactly-represented-as-a-double\n\t\t\tm.insert(m.allocateInstr().asXmmRmR(sseOpcodeUnpcklps, newOperandReg(maskReg), xx))\n\n\t\t\t// maskReg = [float64(0x1.0p52), float64(0x1.0p52)]\n\t\t\tmaskLabel = m.getOrAllocateConstLabel(&m.constTwop52Index, twop52[:])\n\t\t\tm.insert(m.allocateInstr().asXmmUnaryRmR(sseOpcodeMovdqu, newOperandMem(m.newAmodeRipRel(maskLabel)), maskReg))\n\n\t\t\t// Now, we get the result as\n\t\t\t// \txx = [float64(uint32(d1)), float64(uint32(d2))]\n\t\t\t// because the following equality always satisfies:\n\t\t\t//  float64(0x1.0p52 + float64(uint32(x))) - float64(0x1.0p52 + float64(uint32(y))) = float64(uint32(x)) - float64(uint32(y))\n\t\t\tm.insert(m.allocateInstr().asXmmRmR(sseOpcodeSubpd, newOperandReg(maskReg), xx))\n\n\t\t\tm.copyTo(xx, m.c.VRegOf(ret))\n\t\t}\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"invalid lane type: %s\", lane))\n\t}\n}\n\nvar (\n\t// i32sMaxOnF64x2 holds math.MaxInt32(=2147483647.0) on two f64 lanes.\n\ti32sMaxOnF64x2 = [16]byte{\n\t\t0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xdf, 0x41, // float64(2147483647.0)\n\t\t0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xdf, 0x41, // float64(2147483647.0)\n\t}\n\n\t// i32sMaxOnF64x2 holds math.MaxUint32(=4294967295.0) on two f64 lanes.\n\ti32uMaxOnF64x2 = [16]byte{\n\t\t0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xef, 0x41, // float64(4294967295.0)\n\t\t0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xef, 0x41, // float64(4294967295.0)\n\t}\n\n\t// twop52 holds two float64(0x1.0p52) on two f64 lanes. 0x1.0p52 is special in the sense that\n\t// with this exponent, the mantissa represents a corresponding uint32 number, and arithmetics,\n\t// like addition or subtraction, the resulted floating point holds exactly the same\n\t// bit representations in 32-bit integer on its mantissa.\n\t//\n\t// Note: the name twop52 is common across various compiler ecosystem.\n\t// \tE.g. https://github.com/llvm/llvm-project/blob/92ab024f81e5b64e258b7c3baaf213c7c26fcf40/compiler-rt/lib/builtins/floatdidf.c#L28\n\t// \tE.g. https://opensource.apple.com/source/clang/clang-425.0.24/src/projects/compiler-rt/lib/floatdidf.c.auto.html\n\ttwop52 = [16]byte{\n\t\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x43, // float64(0x1.0p52)\n\t\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x43, // float64(0x1.0p52)\n\t}\n)\n\nfunc (m *machine) lowerVFcvtToIntSat(x, ret ssa.Value, lane ssa.VecLane, signed bool) {\n\t_xx := m.getOperand_Reg(m.c.ValueDefinition(x))\n\txx := m.copyToTmp(_xx.reg())\n\n\tswitch lane {\n\tcase ssa.VecLaneF32x4:\n\t\tif signed {\n\t\t\ttmp := m.copyToTmp(xx)\n\n\t\t\t// Assuming we have xx = [v1, v2, v3, v4].\n\t\t\t//\n\t\t\t// Set all bits if lane is not NaN on tmp.\n\t\t\t// tmp[i] = 0xffffffff  if vi != NaN\n\t\t\t//        = 0           if vi == NaN\n\t\t\tm.insert(m.allocateInstr().asXmmRmRImm(sseOpcodeCmpps, uint8(cmpPredEQ_OQ), newOperandReg(tmp), tmp))\n\n\t\t\t// Clear NaN lanes on xx, meaning that\n\t\t\t// \txx[i] = vi  if vi != NaN\n\t\t\t//\t        0   if vi == NaN\n\t\t\tm.insert(m.allocateInstr().asXmmRmR(sseOpcodeAndps, newOperandReg(tmp), xx))\n\n\t\t\t// tmp[i] = ^vi         if vi != NaN\n\t\t\t//        = 0xffffffff  if vi == NaN\n\t\t\t// which means that tmp[i] & 0x80000000 != 0 if and only if vi is negative.\n\t\t\tm.insert(m.allocateInstr().asXmmRmR(sseOpcodeXorps, newOperandReg(xx), tmp))\n\n\t\t\t// xx[i] = int32(vi)   if vi != NaN and xx is not overflowing.\n\t\t\t//       = 0x80000000  if vi != NaN and xx is overflowing (See https://www.felixcloutier.com/x86/cvttps2dq)\n\t\t\t//       = 0           if vi == NaN\n\t\t\tm.insert(m.allocateInstr().asXmmUnaryRmR(sseOpcodeCvttps2dq, newOperandReg(xx), xx))\n\n\t\t\t// Below, we have to convert 0x80000000 into 0x7FFFFFFF for positive overflowing lane.\n\t\t\t//\n\t\t\t// tmp[i] = 0x80000000                         if vi is positive\n\t\t\t//        = any satisfying any&0x80000000 = 0  if vi is negative or zero.\n\t\t\tm.insert(m.allocateInstr().asXmmRmR(sseOpcodeAndps, newOperandReg(xx), tmp))\n\n\t\t\t// Arithmetic right shifting tmp by 31, meaning that we have\n\t\t\t// tmp[i] = 0xffffffff if vi is positive, 0 otherwise.\n\t\t\tm.insert(m.allocateInstr().asXmmRmiReg(sseOpcodePsrad, newOperandImm32(0x1f), tmp))\n\n\t\t\t// Flipping 0x80000000 if vi is positive, otherwise keep intact.\n\t\t\tm.insert(m.allocateInstr().asXmmRmR(sseOpcodePxor, newOperandReg(tmp), xx))\n\t\t} else {\n\t\t\ttmp := m.c.AllocateVReg(ssa.TypeV128)\n\t\t\tm.insert(m.allocateInstr().asZeros(tmp))\n\t\t\tm.insert(m.allocateInstr().asXmmRmR(sseOpcodeMaxps, newOperandReg(tmp), xx))\n\t\t\tm.insert(m.allocateInstr().asXmmRmR(sseOpcodePcmpeqd, newOperandReg(tmp), tmp))\n\t\t\tm.insert(m.allocateInstr().asXmmRmiReg(sseOpcodePsrld, newOperandImm32(0x1), tmp))\n\t\t\tm.insert(m.allocateInstr().asXmmUnaryRmR(sseOpcodeCvtdq2ps, newOperandReg(tmp), tmp))\n\t\t\ttmp2 := m.copyToTmp(xx)\n\t\t\tm.insert(m.allocateInstr().asXmmUnaryRmR(sseOpcodeCvttps2dq, newOperandReg(xx), xx))\n\t\t\tm.insert(m.allocateInstr().asXmmRmR(sseOpcodeSubps, newOperandReg(tmp), tmp2))\n\t\t\tm.insert(m.allocateInstr().asXmmRmRImm(sseOpcodeCmpps, uint8(cmpPredLE_OS), newOperandReg(tmp2), tmp))\n\t\t\tm.insert(m.allocateInstr().asXmmUnaryRmR(sseOpcodeCvttps2dq, newOperandReg(tmp2), tmp2))\n\t\t\tm.insert(m.allocateInstr().asXmmRmR(sseOpcodePxor, newOperandReg(tmp), tmp2))\n\t\t\tm.insert(m.allocateInstr().asXmmRmR(sseOpcodePxor, newOperandReg(tmp), tmp))\n\t\t\tm.insert(m.allocateInstr().asXmmRmR(sseOpcodePmaxsd, newOperandReg(tmp), tmp2))\n\t\t\tm.insert(m.allocateInstr().asXmmRmR(sseOpcodePaddd, newOperandReg(tmp2), xx))\n\t\t}\n\n\tcase ssa.VecLaneF64x2:\n\t\ttmp2 := m.c.AllocateVReg(ssa.TypeV128)\n\t\tif signed {\n\t\t\ttmp := m.copyToTmp(xx)\n\n\t\t\t// Set all bits for non-NaN lanes, zeros otherwise.\n\t\t\t// I.e. tmp[i] = 0xffffffff_ffffffff if vi != NaN, 0 otherwise.\n\t\t\tm.insert(m.allocateInstr().asXmmRmRImm(sseOpcodeCmppd, uint8(cmpPredEQ_OQ), newOperandReg(tmp), tmp))\n\n\t\t\tmaskLabel := m.getOrAllocateConstLabel(&m.constI32sMaxOnF64x2Index, i32sMaxOnF64x2[:])\n\t\t\t// Load the 2147483647 into tmp2's each lane.\n\t\t\tm.insert(m.allocateInstr().asXmmUnaryRmR(sseOpcodeMovdqu, newOperandMem(m.newAmodeRipRel(maskLabel)), tmp2))\n\n\t\t\t// tmp[i] = 2147483647 if vi != NaN, 0 otherwise.\n\t\t\tm.insert(m.allocateInstr().asXmmRmR(sseOpcodeAndps, newOperandReg(tmp2), tmp))\n\n\t\t\t// MINPD returns the source register's value as-is, so we have\n\t\t\t//  xx[i] = vi   if vi != NaN\n\t\t\t//        = 0    if vi == NaN\n\t\t\tm.insert(m.allocateInstr().asXmmRmR(sseOpcodeMinpd, newOperandReg(tmp), xx))\n\n\t\t\tm.insert(m.allocateInstr().asXmmUnaryRmR(sseOpcodeCvttpd2dq, newOperandReg(xx), xx))\n\t\t} else {\n\t\t\ttmp := m.c.AllocateVReg(ssa.TypeV128)\n\t\t\tm.insert(m.allocateInstr().asZeros(tmp))\n\n\t\t\t//  xx[i] = vi   if vi != NaN && vi > 0\n\t\t\t//        = 0    if vi == NaN || vi <= 0\n\t\t\tm.insert(m.allocateInstr().asXmmRmR(sseOpcodeMaxpd, newOperandReg(tmp), xx))\n\n\t\t\t// tmp2[i] = float64(math.MaxUint32) = math.MaxUint32\n\t\t\tmaskIndex := m.getOrAllocateConstLabel(&m.constI32uMaxOnF64x2Index, i32uMaxOnF64x2[:])\n\t\t\tm.insert(m.allocateInstr().asXmmUnaryRmR(sseOpcodeMovdqu, newOperandMem(m.newAmodeRipRel(maskIndex)), tmp2))\n\n\t\t\t// xx[i] = vi   if vi != NaN && vi > 0 && vi <= math.MaxUint32\n\t\t\t//       = 0    otherwise\n\t\t\tm.insert(m.allocateInstr().asXmmRmR(sseOpcodeMinpd, newOperandReg(tmp2), xx))\n\n\t\t\t// Round the floating points into integer.\n\t\t\tm.insert(m.allocateInstr().asXmmRmRImm(sseOpcodeRoundpd, 0x3, newOperandReg(xx), xx))\n\n\t\t\t// tmp2[i] = float64(0x1.0p52)\n\t\t\tmaskIndex = m.getOrAllocateConstLabel(&m.constTwop52Index, twop52[:])\n\t\t\tm.insert(m.allocateInstr().asXmmUnaryRmR(sseOpcodeMovdqu, newOperandMem(m.newAmodeRipRel(maskIndex)), tmp2))\n\n\t\t\t// xx[i] = float64(0x1.0p52) + float64(uint32(vi)) if vi != NaN && vi > 0 && vi <= math.MaxUint32\n\t\t\t//       = 0                                       otherwise\n\t\t\t//\n\t\t\t// This means that xx[i] holds exactly the same bit of uint32(vi) in its lower 32-bits.\n\t\t\tm.insert(m.allocateInstr().asXmmRmR(sseOpcodeAddpd, newOperandReg(tmp2), xx))\n\n\t\t\t// At this point, we have\n\t\t\t// \txx  = [uint32(v0), float64(0x1.0p52), uint32(v1), float64(0x1.0p52)]\n\t\t\t//  tmp = [0, 0, 0, 0]\n\t\t\t// as 32x4 lanes. Therefore, SHUFPS with 0b00_00_10_00 results in\n\t\t\t//\txx = [xx[00], xx[10], tmp[00], tmp[00]] = [xx[00], xx[10], 0, 0]\n\t\t\t// meaning that for i = 0 and 1, we have\n\t\t\t//  xx[i] = uint32(vi) if vi != NaN && vi > 0 && vi <= math.MaxUint32\n\t\t\t//        = 0          otherwise.\n\t\t\tm.insert(m.allocateInstr().asXmmRmRImm(sseOpcodeShufps, 0b00_00_10_00, newOperandReg(tmp), xx))\n\t\t}\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"invalid lane type: %s\", lane))\n\t}\n\n\tm.copyTo(xx, m.c.VRegOf(ret))\n}\n\nfunc (m *machine) lowerNarrow(x, y, ret ssa.Value, lane ssa.VecLane, signed bool) {\n\t_xx := m.getOperand_Reg(m.c.ValueDefinition(x))\n\txx := m.copyToTmp(_xx.reg())\n\tyy := m.getOperand_Mem_Reg(m.c.ValueDefinition(y))\n\n\tvar sseOp sseOpcode\n\tswitch lane {\n\tcase ssa.VecLaneI16x8:\n\t\tif signed {\n\t\t\tsseOp = sseOpcodePacksswb\n\t\t} else {\n\t\t\tsseOp = sseOpcodePackuswb\n\t\t}\n\tcase ssa.VecLaneI32x4:\n\t\tif signed {\n\t\t\tsseOp = sseOpcodePackssdw\n\t\t} else {\n\t\t\tsseOp = sseOpcodePackusdw\n\t\t}\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"invalid lane type: %s\", lane))\n\t}\n\tm.insert(m.allocateInstr().asXmmRmR(sseOp, yy, xx))\n\tm.copyTo(xx, m.c.VRegOf(ret))\n}\n\nfunc (m *machine) lowerWideningPairwiseDotProductS(x, y, ret ssa.Value) {\n\t_xx := m.getOperand_Reg(m.c.ValueDefinition(x))\n\txx := m.copyToTmp(_xx.reg())\n\tyy := m.getOperand_Mem_Reg(m.c.ValueDefinition(y))\n\tm.insert(m.allocateInstr().asXmmRmR(sseOpcodePmaddwd, yy, xx))\n\tm.copyTo(xx, m.c.VRegOf(ret))\n}\n\nfunc (m *machine) lowerVIabs(instr *ssa.Instruction) {\n\tx, lane := instr.ArgWithLane()\n\trd := m.c.VRegOf(instr.Return())\n\n\tif lane == ssa.VecLaneI64x2 {\n\t\t_xx := m.getOperand_Reg(m.c.ValueDefinition(x))\n\n\t\tblendReg := xmm0VReg\n\t\tm.insert(m.allocateInstr().asDefineUninitializedReg(blendReg))\n\n\t\ttmp := m.copyToTmp(_xx.reg())\n\t\txx := m.copyToTmp(_xx.reg())\n\n\t\t// Clear all bits on blendReg.\n\t\tm.insert(m.allocateInstr().asXmmRmR(sseOpcodePxor, newOperandReg(blendReg), blendReg))\n\t\t// Subtract xx from blendMaskReg.\n\t\tm.insert(m.allocateInstr().asXmmRmR(sseOpcodePsubq, newOperandReg(xx), blendReg))\n\t\t// Copy the subtracted value ^^ back into tmp.\n\t\tm.copyTo(blendReg, xx)\n\n\t\tm.insert(m.allocateInstr().asBlendvpd(newOperandReg(tmp), xx))\n\n\t\tm.copyTo(xx, rd)\n\t} else {\n\t\tvar vecOp sseOpcode\n\t\tswitch lane {\n\t\tcase ssa.VecLaneI8x16:\n\t\t\tvecOp = sseOpcodePabsb\n\t\tcase ssa.VecLaneI16x8:\n\t\t\tvecOp = sseOpcodePabsw\n\t\tcase ssa.VecLaneI32x4:\n\t\t\tvecOp = sseOpcodePabsd\n\t\t}\n\t\trn := m.getOperand_Reg(m.c.ValueDefinition(x))\n\n\t\ti := m.allocateInstr()\n\t\ti.asXmmUnaryRmR(vecOp, rn, rd)\n\t\tm.insert(i)\n\t}\n}\n\nfunc (m *machine) lowerVIpopcnt(instr *ssa.Instruction) {\n\tx := instr.Arg()\n\trn := m.getOperand_Reg(m.c.ValueDefinition(x))\n\trd := m.c.VRegOf(instr.Return())\n\n\ttmp1 := m.c.AllocateVReg(ssa.TypeV128)\n\tm.lowerVconst(tmp1, 0x0f0f0f0f0f0f0f0f, 0x0f0f0f0f0f0f0f0f)\n\n\t// Copy input into tmp2.\n\ttmp2 := m.copyToTmp(rn.reg())\n\n\t// Given that we have:\n\t//  rm = [b1, ..., b16] where bn = hn:ln and hn and ln are higher and lower 4-bits of bn.\n\t//\n\t// Take PAND on tmp1 and tmp2, so that we mask out all the higher bits.\n\t//  tmp2 = [l1, ..., l16].\n\tpand := m.allocateInstr()\n\tpand.asXmmRmR(sseOpcodePand, newOperandReg(tmp1), tmp2)\n\tm.insert(pand)\n\n\t// Do logical (packed word) right shift by 4 on rm and PAND against the mask (tmp1); meaning that we have\n\t//  tmp3 = [h1, ...., h16].\n\ttmp3 := m.copyToTmp(rn.reg())\n\tpsrlw := m.allocateInstr()\n\tpsrlw.asXmmRmiReg(sseOpcodePsrlw, newOperandImm32(4), tmp3)\n\tm.insert(psrlw)\n\n\tpand2 := m.allocateInstr()\n\tpand2.asXmmRmR(sseOpcodePand, newOperandReg(tmp1), tmp3)\n\tm.insert(pand2)\n\n\t// Read the popcntTable into tmp4, and we have\n\t//  tmp4 = [0x00, 0x01, 0x01, 0x02, 0x01, 0x02, 0x02, 0x03, 0x01, 0x02, 0x02, 0x03, 0x02, 0x03, 0x03, 0x04]\n\ttmp4 := m.c.AllocateVReg(ssa.TypeV128)\n\tm.lowerVconst(tmp4, 0x03_02_02_01_02_01_01_00, 0x04_03_03_02_03_02_02_01)\n\n\t// Make a copy for later.\n\ttmp5 := m.copyToTmp(tmp4)\n\n\t//  tmp4 = [popcnt(l1), ..., popcnt(l16)].\n\tpshufb := m.allocateInstr()\n\tpshufb.asXmmRmR(sseOpcodePshufb, newOperandReg(tmp2), tmp4)\n\tm.insert(pshufb)\n\n\tpshufb2 := m.allocateInstr()\n\tpshufb2.asXmmRmR(sseOpcodePshufb, newOperandReg(tmp3), tmp5)\n\tm.insert(pshufb2)\n\n\t// tmp4 + tmp5 is the result.\n\tpaddb := m.allocateInstr()\n\tpaddb.asXmmRmR(sseOpcodePaddb, newOperandReg(tmp4), tmp5)\n\tm.insert(paddb)\n\n\tm.copyTo(tmp5, rd)\n}\n\nfunc (m *machine) lowerVImul(instr *ssa.Instruction) {\n\tx, y, lane := instr.Arg2WithLane()\n\trd := m.c.VRegOf(instr.Return())\n\tif lane == ssa.VecLaneI64x2 {\n\t\trn := m.getOperand_Reg(m.c.ValueDefinition(x))\n\t\trm := m.getOperand_Reg(m.c.ValueDefinition(y))\n\t\t// Assuming that we have\n\t\t//\trm = [p1, p2] = [p1_lo, p1_hi, p2_lo, p2_high]\n\t\t//  rn = [q1, q2] = [q1_lo, q1_hi, q2_lo, q2_high]\n\t\t// where pN and qN are 64-bit (quad word) lane, and pN_lo, pN_hi, qN_lo and qN_hi are 32-bit (double word) lane.\n\n\t\t// Copy rn into tmp1.\n\t\ttmp1 := m.copyToTmp(rn.reg())\n\n\t\t// And do the logical right shift by 32-bit on tmp1, which makes tmp1 = [0, p1_high, 0, p2_high]\n\t\tshift := m.allocateInstr()\n\t\tshift.asXmmRmiReg(sseOpcodePsrlq, newOperandImm32(32), tmp1)\n\t\tm.insert(shift)\n\n\t\t// Execute \"pmuludq rm,tmp1\", which makes tmp1 = [p1_high*q1_lo, p2_high*q2_lo] where each lane is 64-bit.\n\t\tmul := m.allocateInstr()\n\t\tmul.asXmmRmR(sseOpcodePmuludq, rm, tmp1)\n\t\tm.insert(mul)\n\n\t\t// Copy rm value into tmp2.\n\t\ttmp2 := m.copyToTmp(rm.reg())\n\n\t\t// And do the logical right shift by 32-bit on tmp2, which makes tmp2 = [0, q1_high, 0, q2_high]\n\t\tshift2 := m.allocateInstr()\n\t\tshift2.asXmmRmiReg(sseOpcodePsrlq, newOperandImm32(32), tmp2)\n\t\tm.insert(shift2)\n\n\t\t// Execute \"pmuludq rm,tmp2\", which makes tmp2 = [p1_lo*q1_high, p2_lo*q2_high] where each lane is 64-bit.\n\t\tmul2 := m.allocateInstr()\n\t\tmul2.asXmmRmR(sseOpcodePmuludq, rn, tmp2)\n\t\tm.insert(mul2)\n\n\t\t// Adds tmp1 and tmp2 and do the logical left shift by 32-bit,\n\t\t// which makes tmp1 = [(p1_lo*q1_high+p1_high*q1_lo)<<32, (p2_lo*q2_high+p2_high*q2_lo)<<32]\n\t\tadd := m.allocateInstr()\n\t\tadd.asXmmRmR(sseOpcodePaddq, newOperandReg(tmp2), tmp1)\n\t\tm.insert(add)\n\n\t\tshift3 := m.allocateInstr()\n\t\tshift3.asXmmRmiReg(sseOpcodePsllq, newOperandImm32(32), tmp1)\n\t\tm.insert(shift3)\n\n\t\t// Copy rm value into tmp3.\n\t\ttmp3 := m.copyToTmp(rm.reg())\n\n\t\t// \"pmuludq rm,tmp3\" makes tmp3 = [p1_lo*q1_lo, p2_lo*q2_lo] where each lane is 64-bit.\n\t\tmul3 := m.allocateInstr()\n\t\tmul3.asXmmRmR(sseOpcodePmuludq, rn, tmp3)\n\t\tm.insert(mul3)\n\n\t\t// Finally, we get the result by computing tmp1 + tmp3,\n\t\t// which makes tmp1 = [(p1_lo*q1_high+p1_high*q1_lo)<<32+p1_lo*q1_lo, (p2_lo*q2_high+p2_high*q2_lo)<<32+p2_lo*q2_lo]\n\t\tadd2 := m.allocateInstr()\n\t\tadd2.asXmmRmR(sseOpcodePaddq, newOperandReg(tmp3), tmp1)\n\t\tm.insert(add2)\n\n\t\tm.copyTo(tmp1, rd)\n\n\t} else {\n\t\tvar vecOp sseOpcode\n\t\tswitch lane {\n\t\tcase ssa.VecLaneI16x8:\n\t\t\tvecOp = sseOpcodePmullw\n\t\tcase ssa.VecLaneI32x4:\n\t\t\tvecOp = sseOpcodePmulld\n\t\tdefault:\n\t\t\tpanic(\"unsupported: \" + lane.String())\n\t\t}\n\t\tm.lowerVbBinOp(vecOp, x, y, instr.Return())\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/amd64/operands.go",
    "content": "package amd64\n\nimport (\n\t\"fmt\"\n\t\"unsafe\"\n\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/backend\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/backend/regalloc\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/ssa\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi\"\n)\n\ntype operand struct {\n\tkind operandKind\n\tdata uint64\n}\n\ntype operandKind byte\n\nconst (\n\t// operandKindReg is an operand which is an integer Register.\n\toperandKindReg operandKind = iota + 1\n\n\t// operandKindMem is a value in Memory.\n\t// 32, 64, or 128 bit value.\n\toperandKindMem\n\n\t// operandKindImm32 is a signed-32-bit integer immediate value.\n\toperandKindImm32\n\n\t// operandKindLabel is a label.\n\toperandKindLabel\n)\n\n// String implements fmt.Stringer.\nfunc (o operandKind) String() string {\n\tswitch o {\n\tcase operandKindReg:\n\t\treturn \"reg\"\n\tcase operandKindMem:\n\t\treturn \"mem\"\n\tcase operandKindImm32:\n\t\treturn \"imm32\"\n\tcase operandKindLabel:\n\t\treturn \"label\"\n\tdefault:\n\t\tpanic(\"BUG: invalid operand kind\")\n\t}\n}\n\n// format returns the string representation of the operand.\n// _64 is only for the case where the operand is a register, and it's integer.\nfunc (o *operand) format(_64 bool) string {\n\tswitch o.kind {\n\tcase operandKindReg:\n\t\treturn formatVRegSized(o.reg(), _64)\n\tcase operandKindMem:\n\t\treturn o.addressMode().String()\n\tcase operandKindImm32:\n\t\treturn fmt.Sprintf(\"$%d\", int32(o.imm32()))\n\tcase operandKindLabel:\n\t\treturn label(o.imm32()).String()\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"BUG: invalid operand: %s\", o.kind))\n\t}\n}\n\n//go:inline\nfunc (o *operand) reg() regalloc.VReg {\n\treturn regalloc.VReg(o.data)\n}\n\n//go:inline\nfunc (o *operand) setReg(r regalloc.VReg) {\n\to.data = uint64(r)\n}\n\n//go:inline\nfunc (o *operand) addressMode() *amode {\n\treturn wazevoapi.PtrFromUintptr[amode](uintptr(o.data))\n}\n\n//go:inline\nfunc (o *operand) imm32() uint32 {\n\treturn uint32(o.data)\n}\n\nfunc (o *operand) label() label {\n\tswitch o.kind {\n\tcase operandKindLabel:\n\t\treturn label(o.data)\n\tcase operandKindMem:\n\t\tmem := o.addressMode()\n\t\tif mem.kind() != amodeRipRel {\n\t\t\tpanic(\"BUG: invalid label\")\n\t\t}\n\t\treturn label(mem.imm32)\n\tdefault:\n\t\tpanic(\"BUG: invalid operand kind\")\n\t}\n}\n\nfunc newOperandLabel(label label) operand {\n\treturn operand{kind: operandKindLabel, data: uint64(label)}\n}\n\nfunc newOperandReg(r regalloc.VReg) operand {\n\treturn operand{kind: operandKindReg, data: uint64(r)}\n}\n\nfunc newOperandImm32(imm32 uint32) operand {\n\treturn operand{kind: operandKindImm32, data: uint64(imm32)}\n}\n\nfunc newOperandMem(amode *amode) operand {\n\treturn operand{kind: operandKindMem, data: uint64(uintptr(unsafe.Pointer(amode)))}\n}\n\n// amode is a memory operand (addressing mode).\ntype amode struct {\n\tkindWithShift uint32\n\timm32         uint32\n\tbase          regalloc.VReg\n\n\t// For amodeRegRegShift:\n\tindex regalloc.VReg\n}\n\ntype amodeKind byte\n\nconst (\n\t// amodeRegRegShift calculates sign-extend-32-to-64(Immediate) + base\n\tamodeImmReg amodeKind = iota + 1\n\n\t// amodeImmRBP is the same as amodeImmReg, but the base register is fixed to RBP.\n\t// The only differece is that it doesn't tell the register allocator to use RBP which is distracting for the\n\t// register allocator.\n\tamodeImmRBP\n\n\t// amodeRegRegShift calculates sign-extend-32-to-64(Immediate) + base + (Register2 << Shift)\n\tamodeRegRegShift\n\n\t// amodeRipRel is a RIP-relative addressing mode specified by the label.\n\tamodeRipRel\n\n\t// TODO: there are other addressing modes such as the one without base register.\n)\n\nfunc (a *amode) kind() amodeKind {\n\treturn amodeKind(a.kindWithShift & 0xff)\n}\n\nfunc (a *amode) shift() byte {\n\treturn byte(a.kindWithShift >> 8)\n}\n\nfunc (a *amode) uses(rs *[]regalloc.VReg) {\n\tswitch a.kind() {\n\tcase amodeImmReg:\n\t\t*rs = append(*rs, a.base)\n\tcase amodeRegRegShift:\n\t\t*rs = append(*rs, a.base, a.index)\n\tcase amodeImmRBP, amodeRipRel:\n\tdefault:\n\t\tpanic(\"BUG: invalid amode kind\")\n\t}\n}\n\nfunc (a *amode) nregs() int {\n\tswitch a.kind() {\n\tcase amodeImmReg:\n\t\treturn 1\n\tcase amodeRegRegShift:\n\t\treturn 2\n\tcase amodeImmRBP, amodeRipRel:\n\t\treturn 0\n\tdefault:\n\t\tpanic(\"BUG: invalid amode kind\")\n\t}\n}\n\nfunc (a *amode) assignUses(i int, reg regalloc.VReg) {\n\tswitch a.kind() {\n\tcase amodeImmReg:\n\t\tif i == 0 {\n\t\t\ta.base = reg\n\t\t} else {\n\t\t\tpanic(\"BUG: invalid amode assignment\")\n\t\t}\n\tcase amodeRegRegShift:\n\t\tif i == 0 {\n\t\t\ta.base = reg\n\t\t} else if i == 1 {\n\t\t\ta.index = reg\n\t\t} else {\n\t\t\tpanic(\"BUG: invalid amode assignment\")\n\t\t}\n\tdefault:\n\t\tpanic(\"BUG: invalid amode assignment\")\n\t}\n}\n\nfunc (m *machine) newAmodeImmReg(imm32 uint32, base regalloc.VReg) *amode {\n\tret := m.amodePool.Allocate()\n\t*ret = amode{kindWithShift: uint32(amodeImmReg), imm32: imm32, base: base}\n\treturn ret\n}\n\nfunc (m *machine) newAmodeImmRBPReg(imm32 uint32) *amode {\n\tret := m.amodePool.Allocate()\n\t*ret = amode{kindWithShift: uint32(amodeImmRBP), imm32: imm32, base: rbpVReg}\n\treturn ret\n}\n\nfunc (m *machine) newAmodeRegRegShift(imm32 uint32, base, index regalloc.VReg, shift byte) *amode {\n\tif shift > 3 {\n\t\tpanic(fmt.Sprintf(\"BUG: invalid shift (must be 3>=): %d\", shift))\n\t}\n\tret := m.amodePool.Allocate()\n\t*ret = amode{kindWithShift: uint32(amodeRegRegShift) | uint32(shift)<<8, imm32: imm32, base: base, index: index}\n\treturn ret\n}\n\nfunc (m *machine) newAmodeRipRel(label label) *amode {\n\tret := m.amodePool.Allocate()\n\t*ret = amode{kindWithShift: uint32(amodeRipRel), imm32: uint32(label)}\n\treturn ret\n}\n\n// String implements fmt.Stringer.\nfunc (a *amode) String() string {\n\tswitch a.kind() {\n\tcase amodeImmReg, amodeImmRBP:\n\t\tif a.imm32 == 0 {\n\t\t\treturn fmt.Sprintf(\"(%s)\", formatVRegSized(a.base, true))\n\t\t}\n\t\treturn fmt.Sprintf(\"%d(%s)\", int32(a.imm32), formatVRegSized(a.base, true))\n\tcase amodeRegRegShift:\n\t\tshift := 1 << a.shift()\n\t\tif a.imm32 == 0 {\n\t\t\treturn fmt.Sprintf(\n\t\t\t\t\"(%s,%s,%d)\",\n\t\t\t\tformatVRegSized(a.base, true), formatVRegSized(a.index, true), shift)\n\t\t}\n\t\treturn fmt.Sprintf(\n\t\t\t\"%d(%s,%s,%d)\",\n\t\t\tint32(a.imm32), formatVRegSized(a.base, true), formatVRegSized(a.index, true), shift)\n\tcase amodeRipRel:\n\t\treturn fmt.Sprintf(\"%s(%%rip)\", label(a.imm32))\n\tdefault:\n\t\tpanic(\"BUG: invalid amode kind\")\n\t}\n}\n\nfunc (m *machine) getOperand_Mem_Reg(def backend.SSAValueDefinition) (op operand) {\n\tif !def.IsFromInstr() {\n\t\treturn newOperandReg(m.c.VRegOf(def.V))\n\t}\n\n\tif def.V.Type() == ssa.TypeV128 {\n\t\t// SIMD instructions require strict memory alignment, so we don't support the memory operand for V128 at the moment.\n\t\treturn m.getOperand_Reg(def)\n\t}\n\n\tif m.c.MatchInstr(def, ssa.OpcodeLoad) {\n\t\tinstr := def.Instr\n\t\tptr, offset, _ := instr.LoadData()\n\t\top = newOperandMem(m.lowerToAddressMode(ptr, offset))\n\t\tinstr.MarkLowered()\n\t\treturn op\n\t}\n\treturn m.getOperand_Reg(def)\n}\n\nfunc (m *machine) getOperand_Mem_Imm32_Reg(def backend.SSAValueDefinition) (op operand) {\n\tif !def.IsFromInstr() {\n\t\treturn newOperandReg(m.c.VRegOf(def.V))\n\t}\n\n\tif m.c.MatchInstr(def, ssa.OpcodeLoad) {\n\t\tinstr := def.Instr\n\t\tptr, offset, _ := instr.LoadData()\n\t\top = newOperandMem(m.lowerToAddressMode(ptr, offset))\n\t\tinstr.MarkLowered()\n\t\treturn op\n\t}\n\treturn m.getOperand_Imm32_Reg(def)\n}\n\nfunc (m *machine) getOperand_Imm32_Reg(def backend.SSAValueDefinition) (op operand) {\n\tif !def.IsFromInstr() {\n\t\treturn newOperandReg(m.c.VRegOf(def.V))\n\t}\n\n\tinstr := def.Instr\n\tif instr.Constant() {\n\t\t// If the operation is 64-bit, x64 sign-extends the 32-bit immediate value.\n\t\t// Therefore, we need to check if the immediate value is within the 32-bit range and if the sign bit is set,\n\t\t// we should not use the immediate value.\n\t\tif op, ok := asImm32Operand(instr.ConstantVal(), instr.Return().Type() == ssa.TypeI32); ok {\n\t\t\tinstr.MarkLowered()\n\t\t\treturn op\n\t\t}\n\t}\n\treturn m.getOperand_Reg(def)\n}\n\nfunc asImm32Operand(val uint64, allowSignExt bool) (operand, bool) {\n\tif imm32, ok := asImm32(val, allowSignExt); ok {\n\t\treturn newOperandImm32(imm32), true\n\t}\n\treturn operand{}, false\n}\n\nfunc asImm32(val uint64, allowSignExt bool) (uint32, bool) {\n\tu32val := uint32(val)\n\tif uint64(u32val) != val {\n\t\treturn 0, false\n\t}\n\tif !allowSignExt && u32val&0x80000000 != 0 {\n\t\treturn 0, false\n\t}\n\treturn u32val, true\n}\n\nfunc (m *machine) getOperand_Reg(def backend.SSAValueDefinition) (op operand) {\n\tvar v regalloc.VReg\n\tif instr := def.Instr; instr != nil && instr.Constant() {\n\t\t// We inline all the constant instructions so that we could reduce the register usage.\n\t\tv = m.lowerConstant(instr)\n\t\tinstr.MarkLowered()\n\t} else {\n\t\tv = m.c.VRegOf(def.V)\n\t}\n\treturn newOperandReg(v)\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/amd64/reg.go",
    "content": "package amd64\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/backend/regalloc\"\n)\n\n// Amd64-specific registers.\nconst (\n\t// rax is a gp register.\n\trax = regalloc.RealRegInvalid + 1 + iota\n\t// rcx is a gp register.\n\trcx\n\t// rdx is a gp register.\n\trdx\n\t// rbx is a gp register.\n\trbx\n\t// rsp is a gp register.\n\trsp\n\t// rbp is a gp register.\n\trbp\n\t// rsi is a gp register.\n\trsi\n\t// rdi is a gp register.\n\trdi\n\t// r8 is a gp register.\n\tr8\n\t// r9 is a gp register.\n\tr9\n\t// r10 is a gp register.\n\tr10\n\t// r11 is a gp register.\n\tr11\n\t// r12 is a gp register.\n\tr12\n\t// r13 is a gp register.\n\tr13\n\t// r14 is a gp register.\n\tr14\n\t// r15 is a gp register.\n\tr15\n\n\t// xmm0 is a vector register.\n\txmm0\n\t// xmm1 is a vector register.\n\txmm1\n\t// xmm2 is a vector register.\n\txmm2\n\t// xmm3 is a vector register.\n\txmm3\n\t// xmm4 is a vector register.\n\txmm4\n\t// xmm5 is a vector register.\n\txmm5\n\t// xmm6 is a vector register.\n\txmm6\n\t// xmm7 is a vector register.\n\txmm7\n\t// xmm8 is a vector register.\n\txmm8\n\t// xmm9 is a vector register.\n\txmm9\n\t// xmm10 is a vector register.\n\txmm10\n\t// xmm11 is a vector register.\n\txmm11\n\t// xmm12 is a vector register.\n\txmm12\n\t// xmm13 is a vector register.\n\txmm13\n\t// xmm14 is a vector register.\n\txmm14\n\t// xmm15 is a vector register.\n\txmm15\n)\n\nvar (\n\traxVReg = regalloc.FromRealReg(rax, regalloc.RegTypeInt)\n\trcxVReg = regalloc.FromRealReg(rcx, regalloc.RegTypeInt)\n\trdxVReg = regalloc.FromRealReg(rdx, regalloc.RegTypeInt)\n\trbxVReg = regalloc.FromRealReg(rbx, regalloc.RegTypeInt)\n\trspVReg = regalloc.FromRealReg(rsp, regalloc.RegTypeInt)\n\trbpVReg = regalloc.FromRealReg(rbp, regalloc.RegTypeInt)\n\trsiVReg = regalloc.FromRealReg(rsi, regalloc.RegTypeInt)\n\trdiVReg = regalloc.FromRealReg(rdi, regalloc.RegTypeInt)\n\tr8VReg  = regalloc.FromRealReg(r8, regalloc.RegTypeInt)\n\tr9VReg  = regalloc.FromRealReg(r9, regalloc.RegTypeInt)\n\tr10VReg = regalloc.FromRealReg(r10, regalloc.RegTypeInt)\n\tr11VReg = regalloc.FromRealReg(r11, regalloc.RegTypeInt)\n\tr12VReg = regalloc.FromRealReg(r12, regalloc.RegTypeInt)\n\tr13VReg = regalloc.FromRealReg(r13, regalloc.RegTypeInt)\n\tr14VReg = regalloc.FromRealReg(r14, regalloc.RegTypeInt)\n\tr15VReg = regalloc.FromRealReg(r15, regalloc.RegTypeInt)\n\n\txmm0VReg  = regalloc.FromRealReg(xmm0, regalloc.RegTypeFloat)\n\txmm1VReg  = regalloc.FromRealReg(xmm1, regalloc.RegTypeFloat)\n\txmm2VReg  = regalloc.FromRealReg(xmm2, regalloc.RegTypeFloat)\n\txmm3VReg  = regalloc.FromRealReg(xmm3, regalloc.RegTypeFloat)\n\txmm4VReg  = regalloc.FromRealReg(xmm4, regalloc.RegTypeFloat)\n\txmm5VReg  = regalloc.FromRealReg(xmm5, regalloc.RegTypeFloat)\n\txmm6VReg  = regalloc.FromRealReg(xmm6, regalloc.RegTypeFloat)\n\txmm7VReg  = regalloc.FromRealReg(xmm7, regalloc.RegTypeFloat)\n\txmm8VReg  = regalloc.FromRealReg(xmm8, regalloc.RegTypeFloat)\n\txmm9VReg  = regalloc.FromRealReg(xmm9, regalloc.RegTypeFloat)\n\txmm10VReg = regalloc.FromRealReg(xmm10, regalloc.RegTypeFloat)\n\txmm11VReg = regalloc.FromRealReg(xmm11, regalloc.RegTypeFloat)\n\txmm12VReg = regalloc.FromRealReg(xmm12, regalloc.RegTypeFloat)\n\txmm13VReg = regalloc.FromRealReg(xmm13, regalloc.RegTypeFloat)\n\txmm14VReg = regalloc.FromRealReg(xmm14, regalloc.RegTypeFloat)\n\txmm15VReg = regalloc.FromRealReg(xmm15, regalloc.RegTypeFloat)\n)\n\nvar regNames = [...]string{\n\trax:   \"rax\",\n\trcx:   \"rcx\",\n\trdx:   \"rdx\",\n\trbx:   \"rbx\",\n\trsp:   \"rsp\",\n\trbp:   \"rbp\",\n\trsi:   \"rsi\",\n\trdi:   \"rdi\",\n\tr8:    \"r8\",\n\tr9:    \"r9\",\n\tr10:   \"r10\",\n\tr11:   \"r11\",\n\tr12:   \"r12\",\n\tr13:   \"r13\",\n\tr14:   \"r14\",\n\tr15:   \"r15\",\n\txmm0:  \"xmm0\",\n\txmm1:  \"xmm1\",\n\txmm2:  \"xmm2\",\n\txmm3:  \"xmm3\",\n\txmm4:  \"xmm4\",\n\txmm5:  \"xmm5\",\n\txmm6:  \"xmm6\",\n\txmm7:  \"xmm7\",\n\txmm8:  \"xmm8\",\n\txmm9:  \"xmm9\",\n\txmm10: \"xmm10\",\n\txmm11: \"xmm11\",\n\txmm12: \"xmm12\",\n\txmm13: \"xmm13\",\n\txmm14: \"xmm14\",\n\txmm15: \"xmm15\",\n}\n\nfunc formatVRegSized(r regalloc.VReg, _64 bool) string {\n\tif r.IsRealReg() {\n\t\tif r.RegType() == regalloc.RegTypeInt {\n\t\t\trr := r.RealReg()\n\t\t\torig := regNames[rr]\n\t\t\tif rr <= rdi {\n\t\t\t\tif _64 {\n\t\t\t\t\treturn \"%\" + orig\n\t\t\t\t} else {\n\t\t\t\t\treturn \"%e\" + orig[1:]\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif _64 {\n\t\t\t\t\treturn \"%\" + orig\n\t\t\t\t} else {\n\t\t\t\t\treturn \"%\" + orig + \"d\"\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\treturn \"%\" + regNames[r.RealReg()]\n\t\t}\n\t} else {\n\t\tif r.RegType() == regalloc.RegTypeInt {\n\t\t\tif _64 {\n\t\t\t\treturn fmt.Sprintf(\"%%r%d?\", r.ID())\n\t\t\t} else {\n\t\t\t\treturn fmt.Sprintf(\"%%r%dd?\", r.ID())\n\t\t\t}\n\t\t} else {\n\t\t\treturn fmt.Sprintf(\"%%xmm%d?\", r.ID())\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/amd64/stack.go",
    "content": "package amd64\n\nimport (\n\t\"encoding/binary\"\n\t\"reflect\"\n\t\"unsafe\"\n\n\t\"github.com/tetratelabs/wazero/internal/wasmdebug\"\n)\n\nfunc stackView(rbp, top uintptr) []byte {\n\tl := int(top - rbp)\n\tvar stackBuf []byte\n\t{\n\t\t//nolint:staticcheck\n\t\thdr := (*reflect.SliceHeader)(unsafe.Pointer(&stackBuf))\n\t\thdr.Data = rbp\n\t\thdr.Len = l\n\t\thdr.Cap = l\n\t}\n\treturn stackBuf\n}\n\n// UnwindStack implements wazevo.unwindStack.\nfunc UnwindStack(_, rbp, top uintptr, returnAddresses []uintptr) []uintptr {\n\tstackBuf := stackView(rbp, top)\n\n\tfor i := uint64(0); i < uint64(len(stackBuf)); {\n\t\t//       (high address)\n\t\t//    +-----------------+\n\t\t//    |     .......     |\n\t\t//    |      ret Y      |\n\t\t//    |     .......     |\n\t\t//    |      ret 0      |\n\t\t//    |      arg X      |\n\t\t//    |     .......     |\n\t\t//    |      arg 1      |\n\t\t//    |      arg 0      |\n\t\t//    |  ReturnAddress  |\n\t\t//    |   Caller_RBP    |\n\t\t//    +-----------------+ <---- Caller_RBP\n\t\t//    |   ...........   |\n\t\t//    |   clobbered  M  |\n\t\t//    |   ............  |\n\t\t//    |   clobbered  0  |\n\t\t//    |   spill slot N  |\n\t\t//    |   ............  |\n\t\t//    |   spill slot 0  |\n\t\t//    |  ReturnAddress  |\n\t\t//    |   Caller_RBP    |\n\t\t//    +-----------------+ <---- RBP\n\t\t//       (low address)\n\n\t\tcallerRBP := binary.LittleEndian.Uint64(stackBuf[i:])\n\t\tretAddr := binary.LittleEndian.Uint64(stackBuf[i+8:])\n\t\treturnAddresses = append(returnAddresses, uintptr(retAddr))\n\t\ti = callerRBP - uint64(rbp)\n\t\tif len(returnAddresses) == wasmdebug.MaxFrames {\n\t\t\tbreak\n\t\t}\n\t}\n\treturn returnAddresses\n}\n\n// GoCallStackView implements wazevo.goCallStackView.\nfunc GoCallStackView(stackPointerBeforeGoCall *uint64) []uint64 {\n\t//                  (high address)\n\t//              +-----------------+ <----+\n\t//              |   xxxxxxxxxxx   |      | ;; optional unused space to make it 16-byte aligned.\n\t//           ^  |  arg[N]/ret[M]  |      |\n\t// sliceSize |  |  ............   |      | SizeInBytes/8\n\t//           |  |  arg[1]/ret[1]  |      |\n\t//           v  |  arg[0]/ret[0]  | <----+\n\t//              |   SizeInBytes   |\n\t//              +-----------------+ <---- stackPointerBeforeGoCall\n\t//                 (low address)\n\tdata := unsafe.Add(unsafe.Pointer(stackPointerBeforeGoCall), 8)\n\tsize := *stackPointerBeforeGoCall / 8\n\treturn unsafe.Slice((*uint64)(data), size)\n}\n\nfunc AdjustClonedStack(oldRsp, oldTop, rsp, rbp, top uintptr) {\n\tdiff := uint64(rsp - oldRsp)\n\n\tnewBuf := stackView(rbp, top)\n\tfor i := uint64(0); i < uint64(len(newBuf)); {\n\t\t//       (high address)\n\t\t//    +-----------------+\n\t\t//    |     .......     |\n\t\t//    |      ret Y      |\n\t\t//    |     .......     |\n\t\t//    |      ret 0      |\n\t\t//    |      arg X      |\n\t\t//    |     .......     |\n\t\t//    |      arg 1      |\n\t\t//    |      arg 0      |\n\t\t//    |  ReturnAddress  |\n\t\t//    |   Caller_RBP    |\n\t\t//    +-----------------+ <---- Caller_RBP\n\t\t//    |   ...........   |\n\t\t//    |   clobbered  M  |\n\t\t//    |   ............  |\n\t\t//    |   clobbered  0  |\n\t\t//    |   spill slot N  |\n\t\t//    |   ............  |\n\t\t//    |   spill slot 0  |\n\t\t//    |  ReturnAddress  |\n\t\t//    |   Caller_RBP    |\n\t\t//    +-----------------+ <---- RBP\n\t\t//       (low address)\n\n\t\tcallerRBP := binary.LittleEndian.Uint64(newBuf[i:])\n\t\tif callerRBP == 0 {\n\t\t\t// End of stack.\n\t\t\tbreak\n\t\t}\n\t\tif i64 := int64(callerRBP); i64 < int64(oldRsp) || i64 >= int64(oldTop) {\n\t\t\tpanic(\"BUG: callerRBP is out of range\")\n\t\t}\n\t\tif int(callerRBP) < 0 {\n\t\t\tpanic(\"BUG: callerRBP is negative\")\n\t\t}\n\t\tadjustedCallerRBP := callerRBP + diff\n\t\tif int(adjustedCallerRBP) < 0 {\n\t\t\tpanic(\"BUG: adjustedCallerRBP is negative\")\n\t\t}\n\t\tbinary.LittleEndian.PutUint64(newBuf[i:], adjustedCallerRBP)\n\t\ti = adjustedCallerRBP - uint64(rbp)\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/arm64/abi.go",
    "content": "package arm64\n\nimport (\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/backend\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/backend/regalloc\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/ssa\"\n)\n\n// References:\n// * https://github.com/golang/go/blob/49d42128fd8594c172162961ead19ac95e247d24/src/cmd/compile/abi-internal.md#arm64-architecture\n// * https://developer.arm.com/documentation/102374/0101/Procedure-Call-Standard\n\nvar (\n\tintParamResultRegs   = []regalloc.RealReg{x0, x1, x2, x3, x4, x5, x6, x7}\n\tfloatParamResultRegs = []regalloc.RealReg{v0, v1, v2, v3, v4, v5, v6, v7}\n)\n\nvar regInfo = &regalloc.RegisterInfo{\n\tAllocatableRegisters: [regalloc.NumRegType][]regalloc.RealReg{\n\t\t// We don't allocate:\n\t\t// - x18: Reserved by the macOS: https://developer.apple.com/documentation/xcode/writing-arm64-code-for-apple-platforms#Respect-the-purpose-of-specific-CPU-registers\n\t\t// - x28: Reserved by Go runtime.\n\t\t// - x27(=tmpReg): because of the reason described on tmpReg.\n\t\tregalloc.RegTypeInt: {\n\t\t\tx8, x9, x10, x11, x12, x13, x14, x15,\n\t\t\tx16, x17, x19, x20, x21, x22, x23, x24, x25,\n\t\t\tx26, x29, x30,\n\t\t\t// These are the argument/return registers. Less preferred in the allocation.\n\t\t\tx7, x6, x5, x4, x3, x2, x1, x0,\n\t\t},\n\t\tregalloc.RegTypeFloat: {\n\t\t\tv8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19,\n\t\t\tv20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30,\n\t\t\t// These are the argument/return registers. Less preferred in the allocation.\n\t\t\tv7, v6, v5, v4, v3, v2, v1, v0,\n\t\t},\n\t},\n\tCalleeSavedRegisters: regalloc.NewRegSet(\n\t\tx19, x20, x21, x22, x23, x24, x25, x26, x28,\n\t\tv18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31,\n\t),\n\tCallerSavedRegisters: regalloc.NewRegSet(\n\t\tx0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x29, x30,\n\t\tv0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17,\n\t),\n\tRealRegToVReg: []regalloc.VReg{\n\t\tx0: x0VReg, x1: x1VReg, x2: x2VReg, x3: x3VReg, x4: x4VReg, x5: x5VReg, x6: x6VReg, x7: x7VReg, x8: x8VReg, x9: x9VReg, x10: x10VReg, x11: x11VReg, x12: x12VReg, x13: x13VReg, x14: x14VReg, x15: x15VReg, x16: x16VReg, x17: x17VReg, x18: x18VReg, x19: x19VReg, x20: x20VReg, x21: x21VReg, x22: x22VReg, x23: x23VReg, x24: x24VReg, x25: x25VReg, x26: x26VReg, x27: x27VReg, x28: x28VReg, x29: x29VReg, x30: x30VReg,\n\t\tv0: v0VReg, v1: v1VReg, v2: v2VReg, v3: v3VReg, v4: v4VReg, v5: v5VReg, v6: v6VReg, v7: v7VReg, v8: v8VReg, v9: v9VReg, v10: v10VReg, v11: v11VReg, v12: v12VReg, v13: v13VReg, v14: v14VReg, v15: v15VReg, v16: v16VReg, v17: v17VReg, v18: v18VReg, v19: v19VReg, v20: v20VReg, v21: v21VReg, v22: v22VReg, v23: v23VReg, v24: v24VReg, v25: v25VReg, v26: v26VReg, v27: v27VReg, v28: v28VReg, v29: v29VReg, v30: v30VReg, v31: v31VReg,\n\t},\n\tRealRegName: func(r regalloc.RealReg) string { return regNames[r] },\n\tRealRegType: func(r regalloc.RealReg) regalloc.RegType {\n\t\tif r < v0 {\n\t\t\treturn regalloc.RegTypeInt\n\t\t}\n\t\treturn regalloc.RegTypeFloat\n\t},\n}\n\n// ArgsResultsRegs implements backend.Machine.\nfunc (m *machine) ArgsResultsRegs() (argResultInts, argResultFloats []regalloc.RealReg) {\n\treturn intParamResultRegs, floatParamResultRegs\n}\n\n// LowerParams implements backend.FunctionABI.\nfunc (m *machine) LowerParams(args []ssa.Value) {\n\ta := m.currentABI\n\n\tfor i, ssaArg := range args {\n\t\tif !ssaArg.Valid() {\n\t\t\tcontinue\n\t\t}\n\t\treg := m.compiler.VRegOf(ssaArg)\n\t\targ := &a.Args[i]\n\t\tif arg.Kind == backend.ABIArgKindReg {\n\t\t\tm.InsertMove(reg, arg.Reg, arg.Type)\n\t\t} else {\n\t\t\t// TODO: we could use pair load if there's consecutive loads for the same type.\n\t\t\t//\n\t\t\t//            (high address)\n\t\t\t//          +-----------------+\n\t\t\t//          |     .......     |\n\t\t\t//          |      ret Y      |\n\t\t\t//          |     .......     |\n\t\t\t//          |      ret 0      |\n\t\t\t//          |      arg X      |\n\t\t\t//          |     .......     |\n\t\t\t//          |      arg 1      |\n\t\t\t//          |      arg 0      |    <-|\n\t\t\t//          |   ReturnAddress |      |\n\t\t\t//          +-----------------+      |\n\t\t\t//          |   ...........   |      |\n\t\t\t//          |   clobbered  M  |      |   argStackOffset: is unknown at this point of compilation.\n\t\t\t//          |   ............  |      |\n\t\t\t//          |   clobbered  0  |      |\n\t\t\t//          |   spill slot N  |      |\n\t\t\t//          |   ...........   |      |\n\t\t\t//          |   spill slot 0  |      |\n\t\t\t//   SP---> +-----------------+    <-+\n\t\t\t//             (low address)\n\n\t\t\tbits := arg.Type.Bits()\n\t\t\t// At this point of compilation, we don't yet know how much space exist below the return address.\n\t\t\t// So we instruct the address mode to add the `argStackOffset` to the offset at the later phase of compilation.\n\t\t\tamode := m.amodePool.Allocate()\n\t\t\t*amode = addressMode{imm: arg.Offset, rn: spVReg, kind: addressModeKindArgStackSpace}\n\t\t\tload := m.allocateInstr()\n\t\t\tswitch arg.Type {\n\t\t\tcase ssa.TypeI32, ssa.TypeI64:\n\t\t\t\tload.asULoad(reg, amode, bits)\n\t\t\tcase ssa.TypeF32, ssa.TypeF64, ssa.TypeV128:\n\t\t\t\tload.asFpuLoad(reg, amode, bits)\n\t\t\tdefault:\n\t\t\t\tpanic(\"BUG\")\n\t\t\t}\n\t\t\tm.insert(load)\n\t\t\tm.unresolvedAddressModes = append(m.unresolvedAddressModes, load)\n\t\t}\n\t}\n}\n\n// LowerReturns lowers the given returns.\nfunc (m *machine) LowerReturns(rets []ssa.Value) {\n\ta := m.currentABI\n\n\tl := len(rets) - 1\n\tfor i := range rets {\n\t\t// Reverse order in order to avoid overwriting the stack returns existing in the return registers.\n\t\tret := rets[l-i]\n\t\tr := &a.Rets[l-i]\n\t\treg := m.compiler.VRegOf(ret)\n\t\tif def := m.compiler.ValueDefinition(ret); def.IsFromInstr() {\n\t\t\t// Constant instructions are inlined.\n\t\t\tif inst := def.Instr; inst.Constant() {\n\t\t\t\tval := inst.Return()\n\t\t\t\tvalType := val.Type()\n\t\t\t\tv := inst.ConstantVal()\n\t\t\t\tm.insertLoadConstant(v, valType, reg)\n\t\t\t}\n\t\t}\n\t\tif r.Kind == backend.ABIArgKindReg {\n\t\t\tm.InsertMove(r.Reg, reg, ret.Type())\n\t\t} else {\n\t\t\t// TODO: we could use pair store if there's consecutive stores for the same type.\n\t\t\t//\n\t\t\t//            (high address)\n\t\t\t//          +-----------------+\n\t\t\t//          |     .......     |\n\t\t\t//          |      ret Y      |\n\t\t\t//          |     .......     |\n\t\t\t//          |      ret 0      |    <-+\n\t\t\t//          |      arg X      |      |\n\t\t\t//          |     .......     |      |\n\t\t\t//          |      arg 1      |      |\n\t\t\t//          |      arg 0      |      |\n\t\t\t//          |   ReturnAddress |      |\n\t\t\t//          +-----------------+      |\n\t\t\t//          |   ...........   |      |\n\t\t\t//          |   spill slot M  |      |   retStackOffset: is unknown at this point of compilation.\n\t\t\t//          |   ............  |      |\n\t\t\t//          |   spill slot 2  |      |\n\t\t\t//          |   spill slot 1  |      |\n\t\t\t//          |   clobbered 0   |      |\n\t\t\t//          |   clobbered 1   |      |\n\t\t\t//          |   ...........   |      |\n\t\t\t//          |   clobbered N   |      |\n\t\t\t//   SP---> +-----------------+    <-+\n\t\t\t//             (low address)\n\n\t\t\tbits := r.Type.Bits()\n\n\t\t\t// At this point of compilation, we don't yet know how much space exist below the return address.\n\t\t\t// So we instruct the address mode to add the `retStackOffset` to the offset at the later phase of compilation.\n\t\t\tamode := m.amodePool.Allocate()\n\t\t\t*amode = addressMode{imm: r.Offset, rn: spVReg, kind: addressModeKindResultStackSpace}\n\t\t\tstore := m.allocateInstr()\n\t\t\tstore.asStore(operandNR(reg), amode, bits)\n\t\t\tm.insert(store)\n\t\t\tm.unresolvedAddressModes = append(m.unresolvedAddressModes, store)\n\t\t}\n\t}\n}\n\n// callerGenVRegToFunctionArg is the opposite of GenFunctionArgToVReg, which is used to generate the\n// caller side of the function call.\nfunc (m *machine) callerGenVRegToFunctionArg(a *backend.FunctionABI, argIndex int, reg regalloc.VReg, def backend.SSAValueDefinition, slotBegin int64) {\n\targ := &a.Args[argIndex]\n\tif def.IsFromInstr() {\n\t\t// Constant instructions are inlined.\n\t\tif inst := def.Instr; inst.Constant() {\n\t\t\tval := inst.Return()\n\t\t\tvalType := val.Type()\n\t\t\tv := inst.ConstantVal()\n\t\t\tm.insertLoadConstant(v, valType, reg)\n\t\t}\n\t}\n\tif arg.Kind == backend.ABIArgKindReg {\n\t\tm.InsertMove(arg.Reg, reg, arg.Type)\n\t} else {\n\t\t// TODO: we could use pair store if there's consecutive stores for the same type.\n\t\t//\n\t\t// Note that at this point, stack pointer is already adjusted.\n\t\tbits := arg.Type.Bits()\n\t\tamode := m.resolveAddressModeForOffset(arg.Offset-slotBegin, bits, spVReg, false)\n\t\tstore := m.allocateInstr()\n\t\tstore.asStore(operandNR(reg), amode, bits)\n\t\tm.insert(store)\n\t}\n}\n\nfunc (m *machine) callerGenFunctionReturnVReg(a *backend.FunctionABI, retIndex int, reg regalloc.VReg, slotBegin int64) {\n\tr := &a.Rets[retIndex]\n\tif r.Kind == backend.ABIArgKindReg {\n\t\tm.InsertMove(reg, r.Reg, r.Type)\n\t} else {\n\t\t// TODO: we could use pair load if there's consecutive loads for the same type.\n\t\tamode := m.resolveAddressModeForOffset(a.ArgStackSize+r.Offset-slotBegin, r.Type.Bits(), spVReg, false)\n\t\tldr := m.allocateInstr()\n\t\tswitch r.Type {\n\t\tcase ssa.TypeI32, ssa.TypeI64:\n\t\t\tldr.asULoad(reg, amode, r.Type.Bits())\n\t\tcase ssa.TypeF32, ssa.TypeF64, ssa.TypeV128:\n\t\t\tldr.asFpuLoad(reg, amode, r.Type.Bits())\n\t\tdefault:\n\t\t\tpanic(\"BUG\")\n\t\t}\n\t\tm.insert(ldr)\n\t}\n}\n\nfunc (m *machine) resolveAddressModeForOffsetAndInsert(cur *instruction, offset int64, dstBits byte, rn regalloc.VReg, allowTmpRegUse bool) (*instruction, *addressMode) {\n\tm.pendingInstructions = m.pendingInstructions[:0]\n\tmode := m.resolveAddressModeForOffset(offset, dstBits, rn, allowTmpRegUse)\n\tfor _, instr := range m.pendingInstructions {\n\t\tcur = linkInstr(cur, instr)\n\t}\n\treturn cur, mode\n}\n\nfunc (m *machine) resolveAddressModeForOffset(offset int64, dstBits byte, rn regalloc.VReg, allowTmpRegUse bool) *addressMode {\n\tif rn.RegType() != regalloc.RegTypeInt {\n\t\tpanic(\"BUG: rn should be a pointer: \" + formatVRegSized(rn, 64))\n\t}\n\tamode := m.amodePool.Allocate()\n\tif offsetFitsInAddressModeKindRegUnsignedImm12(dstBits, offset) {\n\t\t*amode = addressMode{kind: addressModeKindRegUnsignedImm12, rn: rn, imm: offset}\n\t} else if offsetFitsInAddressModeKindRegSignedImm9(offset) {\n\t\t*amode = addressMode{kind: addressModeKindRegSignedImm9, rn: rn, imm: offset}\n\t} else {\n\t\tvar indexReg regalloc.VReg\n\t\tif allowTmpRegUse {\n\t\t\tm.lowerConstantI64(tmpRegVReg, offset)\n\t\t\tindexReg = tmpRegVReg\n\t\t} else {\n\t\t\tindexReg = m.compiler.AllocateVReg(ssa.TypeI64)\n\t\t\tm.lowerConstantI64(indexReg, offset)\n\t\t}\n\t\t*amode = addressMode{kind: addressModeKindRegReg, rn: rn, rm: indexReg, extOp: extendOpUXTX /* indicates index rm is 64-bit */}\n\t}\n\treturn amode\n}\n\nfunc (m *machine) lowerCall(si *ssa.Instruction) {\n\tisDirectCall := si.Opcode() == ssa.OpcodeCall\n\tindirectCalleePtr, directCallee, calleeABI, stackSlotSize := m.prepareCall(si, isDirectCall)\n\n\tif isDirectCall {\n\t\tcall := m.allocateInstr()\n\t\tcall.asCall(directCallee, calleeABI)\n\t\tm.insert(call)\n\t} else {\n\t\tptr := m.compiler.VRegOf(indirectCalleePtr)\n\t\tcallInd := m.allocateInstr()\n\t\tcallInd.asCallIndirect(ptr, calleeABI)\n\t\tm.insert(callInd)\n\t}\n\n\tm.insertReturns(si, calleeABI, stackSlotSize)\n}\n\nfunc (m *machine) prepareCall(si *ssa.Instruction, isDirectCall bool) (ssa.Value, ssa.FuncRef, *backend.FunctionABI, int64) {\n\tvar indirectCalleePtr ssa.Value\n\tvar directCallee ssa.FuncRef\n\tvar sigID ssa.SignatureID\n\tvar args []ssa.Value\n\tif isDirectCall {\n\t\tdirectCallee, sigID, args = si.CallData()\n\t} else {\n\t\tindirectCalleePtr, sigID, args, _ /* on arm64, the calling convention is compatible with the Go runtime */ = si.CallIndirectData()\n\t}\n\tcalleeABI := m.compiler.GetFunctionABI(m.compiler.SSABuilder().ResolveSignature(sigID))\n\n\tstackSlotSize := int64(calleeABI.AlignedArgResultStackSlotSize())\n\tif m.maxRequiredStackSizeForCalls < stackSlotSize+16 {\n\t\tm.maxRequiredStackSizeForCalls = stackSlotSize + 16 // return address frame.\n\t}\n\n\tfor i, arg := range args {\n\t\treg := m.compiler.VRegOf(arg)\n\t\tdef := m.compiler.ValueDefinition(arg)\n\t\tm.callerGenVRegToFunctionArg(calleeABI, i, reg, def, stackSlotSize)\n\t}\n\treturn indirectCalleePtr, directCallee, calleeABI, stackSlotSize\n}\n\nfunc (m *machine) insertReturns(si *ssa.Instruction, calleeABI *backend.FunctionABI, stackSlotSize int64) {\n\tvar index int\n\tr1, rs := si.Returns()\n\tif r1.Valid() {\n\t\tm.callerGenFunctionReturnVReg(calleeABI, 0, m.compiler.VRegOf(r1), stackSlotSize)\n\t\tindex++\n\t}\n\n\tfor _, r := range rs {\n\t\tm.callerGenFunctionReturnVReg(calleeABI, index, m.compiler.VRegOf(r), stackSlotSize)\n\t\tindex++\n\t}\n}\n\nfunc (m *machine) lowerTailCall(si *ssa.Instruction) {\n\tisDirectCall := si.Opcode() == ssa.OpcodeTailCallReturnCall\n\tindirectCalleePtr, directCallee, calleeABI, stackSlotSize := m.prepareCall(si, isDirectCall)\n\n\t// We currently support tail calls only when the args are passed via registers\n\t// otherwise we fall back to a plain call.\n\t// For details, see internal/engine/RATIONALE.md\n\tisAllRegs := stackSlotSize == 0\n\n\tswitch {\n\tcase isDirectCall && isAllRegs:\n\t\ttailJump := m.allocateInstr()\n\t\ttailJump.asTailCall(directCallee, calleeABI)\n\t\tm.insert(tailJump)\n\tcase !isDirectCall && isAllRegs:\n\t\tptr := m.compiler.VRegOf(indirectCalleePtr)\n\t\tcallInd := m.allocateInstr()\n\t\tcallInd.asTailCallIndirect(ptr, calleeABI)\n\t\tm.insert(callInd)\n\tcase isDirectCall && !isAllRegs:\n\t\ttailJump := m.allocateInstr()\n\t\ttailJump.asCall(directCallee, calleeABI)\n\t\tm.insert(tailJump)\n\tcase !isDirectCall && !isAllRegs:\n\t\tptr := m.compiler.VRegOf(indirectCalleePtr)\n\t\tcallInd := m.allocateInstr()\n\t\tcallInd.asCallIndirect(ptr, calleeABI)\n\t\tm.insert(callInd)\n\t}\n\n\t// If this is a proper tail call, returns will be cleared in the postRegAlloc phase.\n\tm.insertReturns(si, calleeABI, stackSlotSize)\n}\n\nfunc (m *machine) insertAddOrSubStackPointer(rd regalloc.VReg, diff int64, add bool) {\n\tif imm12Operand, ok := asImm12Operand(uint64(diff)); ok {\n\t\talu := m.allocateInstr()\n\t\tvar ao aluOp\n\t\tif add {\n\t\t\tao = aluOpAdd\n\t\t} else {\n\t\t\tao = aluOpSub\n\t\t}\n\t\talu.asALU(ao, rd, operandNR(spVReg), imm12Operand, true)\n\t\tm.insert(alu)\n\t} else {\n\t\tm.lowerConstantI64(tmpRegVReg, diff)\n\t\talu := m.allocateInstr()\n\t\tvar ao aluOp\n\t\tif add {\n\t\t\tao = aluOpAdd\n\t\t} else {\n\t\t\tao = aluOpSub\n\t\t}\n\t\talu.asALU(ao, rd, operandNR(spVReg), operandNR(tmpRegVReg), true)\n\t\tm.insert(alu)\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/arm64/abi_entry_arm64.go",
    "content": "package arm64\n\n// entrypoint enters the machine code generated by this backend which begins with the preamble generated by functionABI.EmitGoEntryPreamble below.\n// This implements wazevo.entrypoint, and see the comments there for detail.\nfunc entrypoint(preambleExecutable, functionExecutable *byte, executionContextPtr uintptr, moduleContextPtr *byte, paramResultPtr *uint64, goAllocatedStackSlicePtr uintptr)\n\n// afterGoFunctionCallEntrypoint enters the machine code after growing the stack.\n// This implements wazevo.afterGoFunctionCallEntrypoint, and see the comments there for detail.\nfunc afterGoFunctionCallEntrypoint(executable *byte, executionContextPtr uintptr, stackPointer, framePointer uintptr)\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/arm64/abi_entry_arm64.s",
    "content": "//go:build arm64\n\n#include \"funcdata.h\"\n#include \"textflag.h\"\n\n// See the comments on EmitGoEntryPreamble for what this function is supposed to do.\nTEXT ·entrypoint(SB), NOSPLIT|NOFRAME, $0-48\n\tMOVD preambleExecutable+0(FP), R27\n\tMOVD functionExectuable+8(FP), R24\n\tMOVD executionContextPtr+16(FP), R0\n\tMOVD moduleContextPtr+24(FP), R1\n\tMOVD paramResultSlicePtr+32(FP), R19\n\tMOVD goAllocatedStackSlicePtr+40(FP), R26\n\tJMP  (R27)\n\nTEXT ·afterGoFunctionCallEntrypoint(SB), NOSPLIT|NOFRAME, $0-32\n\tMOVD goCallReturnAddress+0(FP), R20\n\tMOVD executionContextPtr+8(FP), R0\n\tMOVD stackPointer+16(FP), R19\n\n\t// Save the current FP(R29), SP and LR(R30) into the wazevo.executionContext (stored in R0).\n\tMOVD R29, 16(R0) // Store FP(R29) into [RO, #ExecutionContextOffsets.OriginalFramePointer]\n\tMOVD RSP, R27    // Move SP to R27 (temporary register) since SP cannot be stored directly in str instructions.\n\tMOVD R27, 24(R0) // Store R27 into [RO, #ExecutionContextOffsets.OriginalFramePointer]\n\tMOVD R30, 32(R0) // Store R30 into [R0, #ExecutionContextOffsets.GoReturnAddress]\n\n\t// Load the new stack pointer (which sits somewhere in Go-allocated stack) into SP.\n\tMOVD R19, RSP\n\tJMP  (R20)\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/arm64/abi_entry_preamble.go",
    "content": "package arm64\n\nimport (\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/backend\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/backend/regalloc\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/ssa\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi\"\n)\n\n// CompileEntryPreamble implements backend.Machine. This assumes `entrypoint` function (in abi_go_entry_arm64.s) passes:\n//\n//  1. First (execution context ptr) and Second arguments are already passed in x0, and x1.\n//  2. param/result slice ptr in x19; the pointer to []uint64{} which is used to pass arguments and accept return values.\n//  3. Go-allocated stack slice ptr in x26.\n//  4. Function executable in x24.\n//\n// also SP and FP are correct Go-runtime-based values, and LR is the return address to the Go-side caller.\nfunc (m *machine) CompileEntryPreamble(signature *ssa.Signature) []byte {\n\troot := m.constructEntryPreamble(signature)\n\tm.encode(root)\n\treturn m.compiler.Buf()\n}\n\nvar (\n\texecutionContextPtrReg = x0VReg\n\t// callee-saved regs so that they can be used in the prologue and epilogue.\n\tparamResultSlicePtr      = x19VReg\n\tsavedExecutionContextPtr = x20VReg\n\t// goAllocatedStackPtr is not used in the epilogue.\n\tgoAllocatedStackPtr = x26VReg\n\t// paramResultSliceCopied is not used in the epilogue.\n\tparamResultSliceCopied = x25VReg\n\t// tmpRegVReg is not used in the epilogue.\n\tfunctionExecutable = x24VReg\n)\n\nfunc (m *machine) goEntryPreamblePassArg(cur *instruction, paramSlicePtr regalloc.VReg, arg *backend.ABIArg, argStartOffsetFromSP int64) *instruction {\n\ttyp := arg.Type\n\tbits := typ.Bits()\n\tisStackArg := arg.Kind == backend.ABIArgKindStack\n\n\tvar loadTargetReg operand\n\tif !isStackArg {\n\t\tloadTargetReg = operandNR(arg.Reg)\n\t} else {\n\t\tswitch typ {\n\t\tcase ssa.TypeI32, ssa.TypeI64:\n\t\t\tloadTargetReg = operandNR(x15VReg)\n\t\tcase ssa.TypeF32, ssa.TypeF64, ssa.TypeV128:\n\t\t\tloadTargetReg = operandNR(v15VReg)\n\t\tdefault:\n\t\t\tpanic(\"TODO?\")\n\t\t}\n\t}\n\n\tvar postIndexImm int64\n\tif typ == ssa.TypeV128 {\n\t\tpostIndexImm = 16 // v128 is represented as 2x64-bit in Go slice.\n\t} else {\n\t\tpostIndexImm = 8\n\t}\n\tloadMode := m.amodePool.Allocate()\n\t*loadMode = addressMode{kind: addressModeKindPostIndex, rn: paramSlicePtr, imm: postIndexImm}\n\n\tinstr := m.allocateInstr()\n\tswitch typ {\n\tcase ssa.TypeI32:\n\t\tinstr.asULoad(loadTargetReg.reg(), loadMode, 32)\n\tcase ssa.TypeI64:\n\t\tinstr.asULoad(loadTargetReg.reg(), loadMode, 64)\n\tcase ssa.TypeF32:\n\t\tinstr.asFpuLoad(loadTargetReg.reg(), loadMode, 32)\n\tcase ssa.TypeF64:\n\t\tinstr.asFpuLoad(loadTargetReg.reg(), loadMode, 64)\n\tcase ssa.TypeV128:\n\t\tinstr.asFpuLoad(loadTargetReg.reg(), loadMode, 128)\n\t}\n\tcur = linkInstr(cur, instr)\n\n\tif isStackArg {\n\t\tvar storeMode *addressMode\n\t\tcur, storeMode = m.resolveAddressModeForOffsetAndInsert(cur, argStartOffsetFromSP+arg.Offset, bits, spVReg, true)\n\t\ttoStack := m.allocateInstr()\n\t\ttoStack.asStore(loadTargetReg, storeMode, bits)\n\t\tcur = linkInstr(cur, toStack)\n\t}\n\treturn cur\n}\n\nfunc (m *machine) goEntryPreamblePassResult(cur *instruction, resultSlicePtr regalloc.VReg, result *backend.ABIArg, resultStartOffsetFromSP int64) *instruction {\n\tisStackArg := result.Kind == backend.ABIArgKindStack\n\ttyp := result.Type\n\tbits := typ.Bits()\n\n\tvar storeTargetReg operand\n\tif !isStackArg {\n\t\tstoreTargetReg = operandNR(result.Reg)\n\t} else {\n\t\tswitch typ {\n\t\tcase ssa.TypeI32, ssa.TypeI64:\n\t\t\tstoreTargetReg = operandNR(x15VReg)\n\t\tcase ssa.TypeF32, ssa.TypeF64, ssa.TypeV128:\n\t\t\tstoreTargetReg = operandNR(v15VReg)\n\t\tdefault:\n\t\t\tpanic(\"TODO?\")\n\t\t}\n\t}\n\n\tvar postIndexImm int64\n\tif typ == ssa.TypeV128 {\n\t\tpostIndexImm = 16 // v128 is represented as 2x64-bit in Go slice.\n\t} else {\n\t\tpostIndexImm = 8\n\t}\n\n\tif isStackArg {\n\t\tvar loadMode *addressMode\n\t\tcur, loadMode = m.resolveAddressModeForOffsetAndInsert(cur, resultStartOffsetFromSP+result.Offset, bits, spVReg, true)\n\t\ttoReg := m.allocateInstr()\n\t\tswitch typ {\n\t\tcase ssa.TypeI32, ssa.TypeI64:\n\t\t\ttoReg.asULoad(storeTargetReg.reg(), loadMode, bits)\n\t\tcase ssa.TypeF32, ssa.TypeF64, ssa.TypeV128:\n\t\t\ttoReg.asFpuLoad(storeTargetReg.reg(), loadMode, bits)\n\t\tdefault:\n\t\t\tpanic(\"TODO?\")\n\t\t}\n\t\tcur = linkInstr(cur, toReg)\n\t}\n\n\tmode := m.amodePool.Allocate()\n\t*mode = addressMode{kind: addressModeKindPostIndex, rn: resultSlicePtr, imm: postIndexImm}\n\tinstr := m.allocateInstr()\n\tinstr.asStore(storeTargetReg, mode, bits)\n\tcur = linkInstr(cur, instr)\n\treturn cur\n}\n\nfunc (m *machine) constructEntryPreamble(sig *ssa.Signature) (root *instruction) {\n\tabi := backend.FunctionABI{}\n\tabi.Init(sig, intParamResultRegs, floatParamResultRegs)\n\n\troot = m.allocateNop()\n\n\t//// ----------------------------------- prologue ----------------------------------- ////\n\n\t// First, we save executionContextPtrReg into a callee-saved register so that it can be used in epilogue as well.\n\t// \t\tmov savedExecutionContextPtr, x0\n\tcur := m.move64(savedExecutionContextPtr, executionContextPtrReg, root)\n\n\t// Next, save the current FP, SP and LR into the wazevo.executionContext:\n\t// \t\tstr fp, [savedExecutionContextPtr, #OriginalFramePointer]\n\t//      mov tmp, sp ;; sp cannot be str'ed directly.\n\t// \t\tstr sp, [savedExecutionContextPtr, #OriginalStackPointer]\n\t// \t\tstr lr, [savedExecutionContextPtr, #GoReturnAddress]\n\tcur = m.loadOrStoreAtExecutionContext(fpVReg, wazevoapi.ExecutionContextOffsetOriginalFramePointer, true, cur)\n\tcur = m.move64(tmpRegVReg, spVReg, cur)\n\tcur = m.loadOrStoreAtExecutionContext(tmpRegVReg, wazevoapi.ExecutionContextOffsetOriginalStackPointer, true, cur)\n\tcur = m.loadOrStoreAtExecutionContext(lrVReg, wazevoapi.ExecutionContextOffsetGoReturnAddress, true, cur)\n\n\t// Then, move the Go-allocated stack pointer to SP:\n\t// \t\tmov sp, goAllocatedStackPtr\n\tcur = m.move64(spVReg, goAllocatedStackPtr, cur)\n\n\tprReg := paramResultSlicePtr\n\tif len(abi.Args) > 2 && len(abi.Rets) > 0 {\n\t\t// paramResultSlicePtr is modified during the execution of goEntryPreamblePassArg,\n\t\t// so copy it to another reg.\n\t\tcur = m.move64(paramResultSliceCopied, paramResultSlicePtr, cur)\n\t\tprReg = paramResultSliceCopied\n\t}\n\n\tstackSlotSize := int64(abi.AlignedArgResultStackSlotSize())\n\tfor i := range abi.Args {\n\t\tif i < 2 {\n\t\t\t// module context ptr and execution context ptr are passed in x0 and x1 by the Go assembly function.\n\t\t\tcontinue\n\t\t}\n\t\targ := &abi.Args[i]\n\t\tcur = m.goEntryPreamblePassArg(cur, prReg, arg, -stackSlotSize)\n\t}\n\n\t// Call the real function.\n\tbl := m.allocateInstr()\n\tbl.asCallIndirect(functionExecutable, &abi)\n\tcur = linkInstr(cur, bl)\n\n\t///// ----------------------------------- epilogue ----------------------------------- /////\n\n\t// Store the register results into paramResultSlicePtr.\n\tfor i := range abi.Rets {\n\t\tcur = m.goEntryPreamblePassResult(cur, paramResultSlicePtr, &abi.Rets[i], abi.ArgStackSize-stackSlotSize)\n\t}\n\n\t// Finally, restore the FP, SP and LR, and return to the Go code.\n\t// \t\tldr fp, [savedExecutionContextPtr, #OriginalFramePointer]\n\t// \t\tldr tmp, [savedExecutionContextPtr, #OriginalStackPointer]\n\t//      mov sp, tmp ;; sp cannot be str'ed directly.\n\t// \t\tldr lr, [savedExecutionContextPtr, #GoReturnAddress]\n\t// \t\tret ;; --> return to the Go code\n\tcur = m.loadOrStoreAtExecutionContext(fpVReg, wazevoapi.ExecutionContextOffsetOriginalFramePointer, false, cur)\n\tcur = m.loadOrStoreAtExecutionContext(tmpRegVReg, wazevoapi.ExecutionContextOffsetOriginalStackPointer, false, cur)\n\tcur = m.move64(spVReg, tmpRegVReg, cur)\n\tcur = m.loadOrStoreAtExecutionContext(lrVReg, wazevoapi.ExecutionContextOffsetGoReturnAddress, false, cur)\n\tretInst := m.allocateInstr()\n\tretInst.asRet()\n\tlinkInstr(cur, retInst)\n\treturn\n}\n\nfunc (m *machine) move64(dst, src regalloc.VReg, prev *instruction) *instruction {\n\tinstr := m.allocateInstr()\n\tinstr.asMove64(dst, src)\n\treturn linkInstr(prev, instr)\n}\n\nfunc (m *machine) loadOrStoreAtExecutionContext(d regalloc.VReg, offset wazevoapi.Offset, store bool, prev *instruction) *instruction {\n\tinstr := m.allocateInstr()\n\tmode := m.amodePool.Allocate()\n\t*mode = addressMode{kind: addressModeKindRegUnsignedImm12, rn: savedExecutionContextPtr, imm: offset.I64()}\n\tif store {\n\t\tinstr.asStore(operandNR(d), mode, 64)\n\t} else {\n\t\tinstr.asULoad(d, mode, 64)\n\t}\n\treturn linkInstr(prev, instr)\n}\n\nfunc linkInstr(prev, next *instruction) *instruction {\n\tprev.next = next\n\tnext.prev = prev\n\treturn next\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/arm64/abi_go_call.go",
    "content": "package arm64\n\nimport (\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/backend\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/backend/regalloc\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/ssa\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi\"\n)\n\nvar calleeSavedRegistersSorted = []regalloc.VReg{\n\tx19VReg, x20VReg, x21VReg, x22VReg, x23VReg, x24VReg, x25VReg, x26VReg, x28VReg,\n\tv18VReg, v19VReg, v20VReg, v21VReg, v22VReg, v23VReg, v24VReg, v25VReg, v26VReg, v27VReg, v28VReg, v29VReg, v30VReg, v31VReg,\n}\n\n// CompileGoFunctionTrampoline implements backend.Machine.\nfunc (m *machine) CompileGoFunctionTrampoline(exitCode wazevoapi.ExitCode, sig *ssa.Signature, needModuleContextPtr bool) []byte {\n\targBegin := 1 // Skips exec context by default.\n\tif needModuleContextPtr {\n\t\targBegin++\n\t}\n\n\tabi := &backend.FunctionABI{}\n\tabi.Init(sig, intParamResultRegs, floatParamResultRegs)\n\tm.currentABI = abi\n\n\tcur := m.allocateInstr()\n\tcur.asNop0()\n\tm.rootInstr = cur\n\n\t// Execution context is always the first argument.\n\texecCtrPtr := x0VReg\n\n\t// In the following, we create the following stack layout:\n\t//\n\t//                   (high address)\n\t//     SP ------> +-----------------+  <----+\n\t//                |     .......     |       |\n\t//                |      ret Y      |       |\n\t//                |     .......     |       |\n\t//                |      ret 0      |       |\n\t//                |      arg X      |       |  size_of_arg_ret\n\t//                |     .......     |       |\n\t//                |      arg 1      |       |\n\t//                |      arg 0      |  <----+ <-------- originalArg0Reg\n\t//                | size_of_arg_ret |\n\t//                |  ReturnAddress  |\n\t//                +-----------------+ <----+\n\t//                |      xxxx       |      |  ;; might be padded to make it 16-byte aligned.\n\t//           +--->|  arg[N]/ret[M]  |      |\n\t//  sliceSize|    |   ............  |      | goCallStackSize\n\t//           |    |  arg[1]/ret[1]  |      |\n\t//           +--->|  arg[0]/ret[0]  | <----+ <-------- arg0ret0AddrReg\n\t//                |    sliceSize    |\n\t//                |   frame_size    |\n\t//                +-----------------+\n\t//                   (low address)\n\t//\n\t// where the region of \"arg[0]/ret[0] ... arg[N]/ret[M]\" is the stack used by the Go functions,\n\t// therefore will be accessed as the usual []uint64. So that's where we need to pass/receive\n\t// the arguments/return values.\n\n\t// First of all, to update the SP, and create \"ReturnAddress + size_of_arg_ret\".\n\tcur = m.createReturnAddrAndSizeOfArgRetSlot(cur)\n\n\tconst frameInfoSize = 16 // == frame_size + sliceSize.\n\n\t// Next, we should allocate the stack for the Go function call if necessary.\n\tgoCallStackSize, sliceSizeInBytes := backend.GoFunctionCallRequiredStackSize(sig, argBegin)\n\tcur = m.insertStackBoundsCheck(goCallStackSize+frameInfoSize, cur)\n\n\toriginalArg0Reg := x17VReg // Caller save, so we can use it for whatever we want.\n\tif m.currentABI.AlignedArgResultStackSlotSize() > 0 {\n\t\t// At this point, SP points to `ReturnAddress`, so add 16 to get the original arg 0 slot.\n\t\tcur = m.addsAddOrSubStackPointer(cur, originalArg0Reg, frameInfoSize, true)\n\t}\n\n\t// Save the callee saved registers.\n\tcur = m.saveRegistersInExecutionContext(cur, calleeSavedRegistersSorted)\n\n\tif needModuleContextPtr {\n\t\toffset := wazevoapi.ExecutionContextOffsetGoFunctionCallCalleeModuleContextOpaque.I64()\n\t\tif !offsetFitsInAddressModeKindRegUnsignedImm12(64, offset) {\n\t\t\tpanic(\"BUG: too large or un-aligned offset for goFunctionCallCalleeModuleContextOpaque in execution context\")\n\t\t}\n\n\t\t// Module context is always the second argument.\n\t\tmoduleCtrPtr := x1VReg\n\t\tstore := m.allocateInstr()\n\t\tamode := m.amodePool.Allocate()\n\t\t*amode = addressMode{kind: addressModeKindRegUnsignedImm12, rn: execCtrPtr, imm: offset}\n\t\tstore.asStore(operandNR(moduleCtrPtr), amode, 64)\n\t\tcur = linkInstr(cur, store)\n\t}\n\n\t// Advances the stack pointer.\n\tcur = m.addsAddOrSubStackPointer(cur, spVReg, goCallStackSize, false)\n\n\t// Copy the pointer to x15VReg.\n\targ0ret0AddrReg := x15VReg // Caller save, so we can use it for whatever we want.\n\tcopySp := m.allocateInstr()\n\tcopySp.asMove64(arg0ret0AddrReg, spVReg)\n\tcur = linkInstr(cur, copySp)\n\n\t// Next, we need to store all the arguments to the stack in the typical Wasm stack style.\n\tfor i := range abi.Args[argBegin:] {\n\t\targ := &abi.Args[argBegin+i]\n\t\tstore := m.allocateInstr()\n\t\tvar v regalloc.VReg\n\t\tif arg.Kind == backend.ABIArgKindReg {\n\t\t\tv = arg.Reg\n\t\t} else {\n\t\t\tcur, v = m.goFunctionCallLoadStackArg(cur, originalArg0Reg, arg,\n\t\t\t\t// Caller save, so we can use it for whatever we want.\n\t\t\t\tx11VReg, v11VReg)\n\t\t}\n\n\t\tvar sizeInBits byte\n\t\tif arg.Type == ssa.TypeV128 {\n\t\t\tsizeInBits = 128\n\t\t} else {\n\t\t\tsizeInBits = 64\n\t\t}\n\t\tamode := m.amodePool.Allocate()\n\t\t*amode = addressMode{kind: addressModeKindPostIndex, rn: arg0ret0AddrReg, imm: int64(sizeInBits / 8)}\n\t\tstore.asStore(operandNR(v), amode, sizeInBits)\n\t\tcur = linkInstr(cur, store)\n\t}\n\n\t// Finally, now that we've advanced SP to arg[0]/ret[0], we allocate `frame_size + sliceSize`.\n\tvar frameSizeReg, sliceSizeReg regalloc.VReg\n\tif goCallStackSize > 0 {\n\t\tcur = m.lowerConstantI64AndInsert(cur, tmpRegVReg, goCallStackSize)\n\t\tframeSizeReg = tmpRegVReg\n\t\tcur = m.lowerConstantI64AndInsert(cur, x16VReg, sliceSizeInBytes/8)\n\t\tsliceSizeReg = x16VReg\n\t} else {\n\t\tframeSizeReg = xzrVReg\n\t\tsliceSizeReg = xzrVReg\n\t}\n\t_amode := addressModePreOrPostIndex(m, spVReg, -16, true)\n\tstoreP := m.allocateInstr()\n\tstoreP.asStorePair64(frameSizeReg, sliceSizeReg, _amode)\n\tcur = linkInstr(cur, storeP)\n\n\t// Set the exit status on the execution context.\n\tcur = m.setExitCode(cur, x0VReg, exitCode)\n\n\t// Save the current stack pointer.\n\tcur = m.saveCurrentStackPointer(cur, x0VReg)\n\n\t// Exit the execution.\n\tcur = m.storeReturnAddressAndExit(cur)\n\n\t// After the call, we need to restore the callee saved registers.\n\tcur = m.restoreRegistersInExecutionContext(cur, calleeSavedRegistersSorted)\n\n\t// Get the pointer to the arg[0]/ret[0]: We need to skip `frame_size + sliceSize`.\n\tif len(abi.Rets) > 0 {\n\t\tcur = m.addsAddOrSubStackPointer(cur, arg0ret0AddrReg, frameInfoSize, true)\n\t}\n\n\t// Advances the SP so that it points to `ReturnAddress`.\n\tcur = m.addsAddOrSubStackPointer(cur, spVReg, frameInfoSize+goCallStackSize, true)\n\tldr := m.allocateInstr()\n\t// And load the return address.\n\tamode := addressModePreOrPostIndex(m, spVReg, 16 /* stack pointer must be 16-byte aligned. */, false /* increment after loads */)\n\tldr.asULoad(lrVReg, amode, 64)\n\tcur = linkInstr(cur, ldr)\n\n\toriginalRet0Reg := x17VReg // Caller save, so we can use it for whatever we want.\n\tif m.currentABI.RetStackSize > 0 {\n\t\tcur = m.addsAddOrSubStackPointer(cur, originalRet0Reg, m.currentABI.ArgStackSize, true)\n\t}\n\n\t// Make the SP point to the original address (above the result slot).\n\tif s := int64(m.currentABI.AlignedArgResultStackSlotSize()); s > 0 {\n\t\tcur = m.addsAddOrSubStackPointer(cur, spVReg, s, true)\n\t}\n\n\tfor i := range abi.Rets {\n\t\tr := &abi.Rets[i]\n\t\tif r.Kind == backend.ABIArgKindReg {\n\t\t\tloadIntoReg := m.allocateInstr()\n\t\t\tmode := m.amodePool.Allocate()\n\t\t\t*mode = addressMode{kind: addressModeKindPostIndex, rn: arg0ret0AddrReg}\n\t\t\tswitch r.Type {\n\t\t\tcase ssa.TypeI32:\n\t\t\t\tmode.imm = 8 // We use uint64 for all basic types, except SIMD v128.\n\t\t\t\tloadIntoReg.asULoad(r.Reg, mode, 32)\n\t\t\tcase ssa.TypeI64:\n\t\t\t\tmode.imm = 8 // We use uint64 for all basic types, except SIMD v128.\n\t\t\t\tloadIntoReg.asULoad(r.Reg, mode, 64)\n\t\t\tcase ssa.TypeF32:\n\t\t\t\tmode.imm = 8 // We use uint64 for all basic types, except SIMD v128.\n\t\t\t\tloadIntoReg.asFpuLoad(r.Reg, mode, 32)\n\t\t\tcase ssa.TypeF64:\n\t\t\t\tmode.imm = 8 // We use uint64 for all basic types, except SIMD v128.\n\t\t\t\tloadIntoReg.asFpuLoad(r.Reg, mode, 64)\n\t\t\tcase ssa.TypeV128:\n\t\t\t\tmode.imm = 16\n\t\t\t\tloadIntoReg.asFpuLoad(r.Reg, mode, 128)\n\t\t\tdefault:\n\t\t\t\tpanic(\"TODO\")\n\t\t\t}\n\t\t\tcur = linkInstr(cur, loadIntoReg)\n\t\t} else {\n\t\t\t// First we need to load the value to a temporary just like ^^.\n\t\t\tintTmp, floatTmp := x11VReg, v11VReg\n\t\t\tloadIntoTmpReg := m.allocateInstr()\n\t\t\tmode := m.amodePool.Allocate()\n\t\t\t*mode = addressMode{kind: addressModeKindPostIndex, rn: arg0ret0AddrReg}\n\t\t\tvar resultReg regalloc.VReg\n\t\t\tswitch r.Type {\n\t\t\tcase ssa.TypeI32:\n\t\t\t\tmode.imm = 8 // We use uint64 for all basic types, except SIMD v128.\n\t\t\t\tloadIntoTmpReg.asULoad(intTmp, mode, 32)\n\t\t\t\tresultReg = intTmp\n\t\t\tcase ssa.TypeI64:\n\t\t\t\tmode.imm = 8 // We use uint64 for all basic types, except SIMD v128.\n\t\t\t\tloadIntoTmpReg.asULoad(intTmp, mode, 64)\n\t\t\t\tresultReg = intTmp\n\t\t\tcase ssa.TypeF32:\n\t\t\t\tmode.imm = 8 // We use uint64 for all basic types, except SIMD v128.\n\t\t\t\tloadIntoTmpReg.asFpuLoad(floatTmp, mode, 32)\n\t\t\t\tresultReg = floatTmp\n\t\t\tcase ssa.TypeF64:\n\t\t\t\tmode.imm = 8 // We use uint64 for all basic types, except SIMD v128.\n\t\t\t\tloadIntoTmpReg.asFpuLoad(floatTmp, mode, 64)\n\t\t\t\tresultReg = floatTmp\n\t\t\tcase ssa.TypeV128:\n\t\t\t\tmode.imm = 16\n\t\t\t\tloadIntoTmpReg.asFpuLoad(floatTmp, mode, 128)\n\t\t\t\tresultReg = floatTmp\n\t\t\tdefault:\n\t\t\t\tpanic(\"TODO\")\n\t\t\t}\n\t\t\tcur = linkInstr(cur, loadIntoTmpReg)\n\t\t\tcur = m.goFunctionCallStoreStackResult(cur, originalRet0Reg, r, resultReg)\n\t\t}\n\t}\n\n\tret := m.allocateInstr()\n\tret.asRet()\n\tlinkInstr(cur, ret)\n\n\tm.encode(m.rootInstr)\n\treturn m.compiler.Buf()\n}\n\nfunc (m *machine) saveRegistersInExecutionContext(cur *instruction, regs []regalloc.VReg) *instruction {\n\toffset := wazevoapi.ExecutionContextOffsetSavedRegistersBegin.I64()\n\tfor _, v := range regs {\n\t\tstore := m.allocateInstr()\n\t\tvar sizeInBits byte\n\t\tswitch v.RegType() {\n\t\tcase regalloc.RegTypeInt:\n\t\t\tsizeInBits = 64\n\t\tcase regalloc.RegTypeFloat:\n\t\t\tsizeInBits = 128\n\t\t}\n\t\tmode := m.amodePool.Allocate()\n\t\t*mode = addressMode{\n\t\t\tkind: addressModeKindRegUnsignedImm12,\n\t\t\t// Execution context is always the first argument.\n\t\t\trn: x0VReg, imm: offset,\n\t\t}\n\t\tstore.asStore(operandNR(v), mode, sizeInBits)\n\t\tstore.prev = cur\n\t\tcur.next = store\n\t\tcur = store\n\t\toffset += 16 // Imm12 must be aligned 16 for vector regs, so we unconditionally store regs at the offset of multiple of 16.\n\t}\n\treturn cur\n}\n\nfunc (m *machine) restoreRegistersInExecutionContext(cur *instruction, regs []regalloc.VReg) *instruction {\n\toffset := wazevoapi.ExecutionContextOffsetSavedRegistersBegin.I64()\n\tfor _, v := range regs {\n\t\tload := m.allocateInstr()\n\t\tvar as func(dst regalloc.VReg, amode *addressMode, sizeInBits byte)\n\t\tvar sizeInBits byte\n\t\tswitch v.RegType() {\n\t\tcase regalloc.RegTypeInt:\n\t\t\tas = load.asULoad\n\t\t\tsizeInBits = 64\n\t\tcase regalloc.RegTypeFloat:\n\t\t\tas = load.asFpuLoad\n\t\t\tsizeInBits = 128\n\t\t}\n\t\tmode := m.amodePool.Allocate()\n\t\t*mode = addressMode{\n\t\t\tkind: addressModeKindRegUnsignedImm12,\n\t\t\t// Execution context is always the first argument.\n\t\t\trn: x0VReg, imm: offset,\n\t\t}\n\t\tas(v, mode, sizeInBits)\n\t\tcur = linkInstr(cur, load)\n\t\toffset += 16 // Imm12 must be aligned 16 for vector regs, so we unconditionally load regs at the offset of multiple of 16.\n\t}\n\treturn cur\n}\n\nfunc (m *machine) lowerConstantI64AndInsert(cur *instruction, dst regalloc.VReg, v int64) *instruction {\n\tm.pendingInstructions = m.pendingInstructions[:0]\n\tm.lowerConstantI64(dst, v)\n\tfor _, instr := range m.pendingInstructions {\n\t\tcur = linkInstr(cur, instr)\n\t}\n\treturn cur\n}\n\nfunc (m *machine) lowerConstantI32AndInsert(cur *instruction, dst regalloc.VReg, v int32) *instruction {\n\tm.pendingInstructions = m.pendingInstructions[:0]\n\tm.lowerConstantI32(dst, v)\n\tfor _, instr := range m.pendingInstructions {\n\t\tcur = linkInstr(cur, instr)\n\t}\n\treturn cur\n}\n\nfunc (m *machine) setExitCode(cur *instruction, execCtr regalloc.VReg, exitCode wazevoapi.ExitCode) *instruction {\n\tconstReg := x17VReg // caller-saved, so we can use it.\n\tcur = m.lowerConstantI32AndInsert(cur, constReg, int32(exitCode))\n\n\t// Set the exit status on the execution context.\n\tsetExistStatus := m.allocateInstr()\n\tmode := m.amodePool.Allocate()\n\t*mode = addressMode{kind: addressModeKindRegUnsignedImm12, rn: execCtr, imm: wazevoapi.ExecutionContextOffsetExitCodeOffset.I64()}\n\tsetExistStatus.asStore(operandNR(constReg), mode, 32)\n\tcur = linkInstr(cur, setExistStatus)\n\treturn cur\n}\n\nfunc (m *machine) storeReturnAddressAndExit(cur *instruction) *instruction {\n\t// Read the return address into tmp, and store it in the execution context.\n\tadr := m.allocateInstr()\n\tadr.asAdr(tmpRegVReg, exitSequenceSize+8)\n\tcur = linkInstr(cur, adr)\n\n\tstoreReturnAddr := m.allocateInstr()\n\tmode := m.amodePool.Allocate()\n\t*mode = addressMode{\n\t\tkind: addressModeKindRegUnsignedImm12,\n\t\t// Execution context is always the first argument.\n\t\trn: x0VReg, imm: wazevoapi.ExecutionContextOffsetGoCallReturnAddress.I64(),\n\t}\n\tstoreReturnAddr.asStore(operandNR(tmpRegVReg), mode, 64)\n\tcur = linkInstr(cur, storeReturnAddr)\n\n\t// Exit the execution.\n\ttrapSeq := m.allocateInstr()\n\ttrapSeq.asExitSequence(x0VReg)\n\tcur = linkInstr(cur, trapSeq)\n\treturn cur\n}\n\nfunc (m *machine) saveCurrentStackPointer(cur *instruction, execCtr regalloc.VReg) *instruction {\n\t// Save the current stack pointer:\n\t// \tmov tmp, sp,\n\t// \tstr tmp, [exec_ctx, #stackPointerBeforeGoCall]\n\tmovSp := m.allocateInstr()\n\tmovSp.asMove64(tmpRegVReg, spVReg)\n\tcur = linkInstr(cur, movSp)\n\n\tstrSp := m.allocateInstr()\n\tmode := m.amodePool.Allocate()\n\t*mode = addressMode{\n\t\tkind: addressModeKindRegUnsignedImm12,\n\t\trn:   execCtr, imm: wazevoapi.ExecutionContextOffsetStackPointerBeforeGoCall.I64(),\n\t}\n\tstrSp.asStore(operandNR(tmpRegVReg), mode, 64)\n\tcur = linkInstr(cur, strSp)\n\treturn cur\n}\n\nfunc (m *machine) goFunctionCallLoadStackArg(cur *instruction, originalArg0Reg regalloc.VReg, arg *backend.ABIArg, intVReg, floatVReg regalloc.VReg) (*instruction, regalloc.VReg) {\n\tload := m.allocateInstr()\n\tvar result regalloc.VReg\n\tmode := m.amodePool.Allocate()\n\t*mode = addressMode{kind: addressModeKindPostIndex, rn: originalArg0Reg}\n\tswitch arg.Type {\n\tcase ssa.TypeI32:\n\t\tmode.imm = 8 // We use uint64 for all basic types, except SIMD v128.\n\t\tload.asULoad(intVReg, mode, 32)\n\t\tresult = intVReg\n\tcase ssa.TypeI64:\n\t\tmode.imm = 8 // We use uint64 for all basic types, except SIMD v128.\n\t\tload.asULoad(intVReg, mode, 64)\n\t\tresult = intVReg\n\tcase ssa.TypeF32:\n\t\tmode.imm = 8 // We use uint64 for all basic types, except SIMD v128.\n\t\tload.asFpuLoad(floatVReg, mode, 32)\n\t\tresult = floatVReg\n\tcase ssa.TypeF64:\n\t\tmode.imm = 8 // We use uint64 for all basic types, except SIMD v128.\n\t\tload.asFpuLoad(floatVReg, mode, 64)\n\t\tresult = floatVReg\n\tcase ssa.TypeV128:\n\t\tmode.imm = 16\n\t\tload.asFpuLoad(floatVReg, mode, 128)\n\t\tresult = floatVReg\n\tdefault:\n\t\tpanic(\"TODO\")\n\t}\n\n\tcur = linkInstr(cur, load)\n\treturn cur, result\n}\n\nfunc (m *machine) goFunctionCallStoreStackResult(cur *instruction, originalRet0Reg regalloc.VReg, result *backend.ABIArg, resultVReg regalloc.VReg) *instruction {\n\tstore := m.allocateInstr()\n\tmode := m.amodePool.Allocate()\n\t*mode = addressMode{kind: addressModeKindPostIndex, rn: originalRet0Reg}\n\tvar sizeInBits byte\n\tswitch result.Type {\n\tcase ssa.TypeI32, ssa.TypeF32:\n\t\tmode.imm = 8\n\t\tsizeInBits = 32\n\tcase ssa.TypeI64, ssa.TypeF64:\n\t\tmode.imm = 8\n\t\tsizeInBits = 64\n\tcase ssa.TypeV128:\n\t\tmode.imm = 16\n\t\tsizeInBits = 128\n\tdefault:\n\t\tpanic(\"TODO\")\n\t}\n\tstore.asStore(operandNR(resultVReg), mode, sizeInBits)\n\treturn linkInstr(cur, store)\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/arm64/cond.go",
    "content": "package arm64\n\nimport (\n\t\"strconv\"\n\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/backend/regalloc\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/ssa\"\n)\n\ntype (\n\tcond     uint64\n\tcondKind byte\n)\n\nconst (\n\t// condKindRegisterZero represents a condition which checks if the register is zero.\n\t// This indicates that the instruction must be encoded as CBZ:\n\t// https://developer.arm.com/documentation/ddi0596/2020-12/Base-Instructions/CBZ--Compare-and-Branch-on-Zero-\n\tcondKindRegisterZero condKind = iota\n\t// condKindRegisterNotZero indicates that the instruction must be encoded as CBNZ:\n\t// https://developer.arm.com/documentation/ddi0596/2020-12/Base-Instructions/CBNZ--Compare-and-Branch-on-Nonzero-\n\tcondKindRegisterNotZero\n\t// condKindCondFlagSet indicates that the instruction must be encoded as B.cond:\n\t// https://developer.arm.com/documentation/ddi0596/2020-12/Base-Instructions/B-cond--Branch-conditionally-\n\tcondKindCondFlagSet\n)\n\n// kind returns the kind of condition which is stored in the first two bits.\nfunc (c cond) kind() condKind {\n\treturn condKind(c & 0b11)\n}\n\nfunc (c cond) asUint64() uint64 {\n\treturn uint64(c)\n}\n\n// register returns the register for register conditions.\n// This panics if the condition is not a register condition (condKindRegisterZero or condKindRegisterNotZero).\nfunc (c cond) register() regalloc.VReg {\n\tif c.kind() != condKindRegisterZero && c.kind() != condKindRegisterNotZero {\n\t\tpanic(\"condition is not a register\")\n\t}\n\treturn regalloc.VReg(c >> 2)\n}\n\nfunc registerAsRegZeroCond(r regalloc.VReg) cond {\n\treturn cond(r)<<2 | cond(condKindRegisterZero)\n}\n\nfunc registerAsRegNotZeroCond(r regalloc.VReg) cond {\n\treturn cond(r)<<2 | cond(condKindRegisterNotZero)\n}\n\nfunc (c cond) flag() condFlag {\n\tif c.kind() != condKindCondFlagSet {\n\t\tpanic(\"condition is not a flag\")\n\t}\n\treturn condFlag(c >> 2)\n}\n\nfunc (c condFlag) asCond() cond {\n\treturn cond(c)<<2 | cond(condKindCondFlagSet)\n}\n\n// condFlag represents a condition flag for conditional branches.\n// The value matches the encoding of condition flags in the ARM64 instruction set.\n// https://developer.arm.com/documentation/den0024/a/The-A64-instruction-set/Data-processing-instructions/Conditional-instructions\ntype condFlag uint8\n\nconst (\n\teq condFlag = iota // eq represents \"equal\"\n\tne                 // ne represents \"not equal\"\n\ths                 // hs represents \"higher or same\"\n\tlo                 // lo represents \"lower\"\n\tmi                 // mi represents \"minus or negative result\"\n\tpl                 // pl represents \"plus or positive result\"\n\tvs                 // vs represents \"overflow set\"\n\tvc                 // vc represents \"overflow clear\"\n\thi                 // hi represents \"higher\"\n\tls                 // ls represents \"lower or same\"\n\tge                 // ge represents \"greater or equal\"\n\tlt                 // lt represents \"less than\"\n\tgt                 // gt represents \"greater than\"\n\tle                 // le represents \"less than or equal\"\n\tal                 // al represents \"always\"\n\tnv                 // nv represents \"never\"\n)\n\n// invert returns the inverted condition.\nfunc (c condFlag) invert() condFlag {\n\tswitch c {\n\tcase eq:\n\t\treturn ne\n\tcase ne:\n\t\treturn eq\n\tcase hs:\n\t\treturn lo\n\tcase lo:\n\t\treturn hs\n\tcase mi:\n\t\treturn pl\n\tcase pl:\n\t\treturn mi\n\tcase vs:\n\t\treturn vc\n\tcase vc:\n\t\treturn vs\n\tcase hi:\n\t\treturn ls\n\tcase ls:\n\t\treturn hi\n\tcase ge:\n\t\treturn lt\n\tcase lt:\n\t\treturn ge\n\tcase gt:\n\t\treturn le\n\tcase le:\n\t\treturn gt\n\tcase al:\n\t\treturn nv\n\tcase nv:\n\t\treturn al\n\tdefault:\n\t\tpanic(c)\n\t}\n}\n\n// String implements fmt.Stringer.\nfunc (c condFlag) String() string {\n\tswitch c {\n\tcase eq:\n\t\treturn \"eq\"\n\tcase ne:\n\t\treturn \"ne\"\n\tcase hs:\n\t\treturn \"hs\"\n\tcase lo:\n\t\treturn \"lo\"\n\tcase mi:\n\t\treturn \"mi\"\n\tcase pl:\n\t\treturn \"pl\"\n\tcase vs:\n\t\treturn \"vs\"\n\tcase vc:\n\t\treturn \"vc\"\n\tcase hi:\n\t\treturn \"hi\"\n\tcase ls:\n\t\treturn \"ls\"\n\tcase ge:\n\t\treturn \"ge\"\n\tcase lt:\n\t\treturn \"lt\"\n\tcase gt:\n\t\treturn \"gt\"\n\tcase le:\n\t\treturn \"le\"\n\tcase al:\n\t\treturn \"al\"\n\tcase nv:\n\t\treturn \"nv\"\n\tdefault:\n\t\tpanic(strconv.Itoa(int(c)))\n\t}\n}\n\n// condFlagFromSSAIntegerCmpCond returns the condition flag for the given ssa.IntegerCmpCond.\nfunc condFlagFromSSAIntegerCmpCond(c ssa.IntegerCmpCond) condFlag {\n\tswitch c {\n\tcase ssa.IntegerCmpCondEqual:\n\t\treturn eq\n\tcase ssa.IntegerCmpCondNotEqual:\n\t\treturn ne\n\tcase ssa.IntegerCmpCondSignedLessThan:\n\t\treturn lt\n\tcase ssa.IntegerCmpCondSignedGreaterThanOrEqual:\n\t\treturn ge\n\tcase ssa.IntegerCmpCondSignedGreaterThan:\n\t\treturn gt\n\tcase ssa.IntegerCmpCondSignedLessThanOrEqual:\n\t\treturn le\n\tcase ssa.IntegerCmpCondUnsignedLessThan:\n\t\treturn lo\n\tcase ssa.IntegerCmpCondUnsignedGreaterThanOrEqual:\n\t\treturn hs\n\tcase ssa.IntegerCmpCondUnsignedGreaterThan:\n\t\treturn hi\n\tcase ssa.IntegerCmpCondUnsignedLessThanOrEqual:\n\t\treturn ls\n\tdefault:\n\t\tpanic(c)\n\t}\n}\n\n// condFlagFromSSAFloatCmpCond returns the condition flag for the given ssa.FloatCmpCond.\nfunc condFlagFromSSAFloatCmpCond(c ssa.FloatCmpCond) condFlag {\n\tswitch c {\n\tcase ssa.FloatCmpCondEqual:\n\t\treturn eq\n\tcase ssa.FloatCmpCondNotEqual:\n\t\treturn ne\n\tcase ssa.FloatCmpCondLessThan:\n\t\treturn mi\n\tcase ssa.FloatCmpCondLessThanOrEqual:\n\t\treturn ls\n\tcase ssa.FloatCmpCondGreaterThan:\n\t\treturn gt\n\tcase ssa.FloatCmpCondGreaterThanOrEqual:\n\t\treturn ge\n\tdefault:\n\t\tpanic(c)\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/arm64/instr.go",
    "content": "package arm64\n\nimport (\n\t\"fmt\"\n\t\"math\"\n\t\"unsafe\"\n\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/backend\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/backend/regalloc\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/ssa\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi\"\n)\n\ntype (\n\t// instruction represents either a real instruction in arm64, or the meta instructions\n\t// that are convenient for code generation. For example, inline constants are also treated\n\t// as instructions.\n\t//\n\t// Basically, each instruction knows how to get encoded in binaries. Hence, the final output of compilation\n\t// can be considered equivalent to the sequence of such instructions.\n\t//\n\t// Each field is interpreted depending on the kind.\n\t//\n\t// TODO: optimize the layout later once the impl settles.\n\tinstruction struct {\n\t\tprev, next          *instruction\n\t\tu1, u2              uint64\n\t\trd                  regalloc.VReg\n\t\trm, rn              operand\n\t\tkind                instructionKind\n\t\taddedBeforeRegAlloc bool\n\t}\n\n\t// instructionKind represents the kind of instruction.\n\t// This controls how the instruction struct is interpreted.\n\tinstructionKind byte\n)\n\n// IsCall implements regalloc.Instr IsCall.\nfunc (i *instruction) IsCall() bool {\n\treturn i.kind == call\n}\n\n// IsIndirectCall implements regalloc.Instr IsIndirectCall.\nfunc (i *instruction) IsIndirectCall() bool {\n\treturn i.kind == callInd\n}\n\n// IsReturn implements regalloc.Instr IsReturn.\nfunc (i *instruction) IsReturn() bool {\n\treturn i.kind == ret\n}\n\ntype defKind byte\n\nconst (\n\tdefKindNone defKind = iota + 1\n\tdefKindRD\n\tdefKindCall\n)\n\nvar defKinds = [numInstructionKinds]defKind{\n\tadr:                  defKindRD,\n\taluRRR:               defKindRD,\n\taluRRRR:              defKindRD,\n\taluRRImm12:           defKindRD,\n\taluRRBitmaskImm:      defKindRD,\n\taluRRRShift:          defKindRD,\n\taluRRImmShift:        defKindRD,\n\taluRRRExtend:         defKindRD,\n\tbitRR:                defKindRD,\n\tmovZ:                 defKindRD,\n\tmovK:                 defKindRD,\n\tmovN:                 defKindRD,\n\tmov32:                defKindRD,\n\tmov64:                defKindRD,\n\tfpuMov64:             defKindRD,\n\tfpuMov128:            defKindRD,\n\tfpuRR:                defKindRD,\n\tfpuRRR:               defKindRD,\n\tnop0:                 defKindNone,\n\tcall:                 defKindCall,\n\tcallInd:              defKindCall,\n\tret:                  defKindNone,\n\tstore8:               defKindNone,\n\tstore16:              defKindNone,\n\tstore32:              defKindNone,\n\tstore64:              defKindNone,\n\texitSequence:         defKindNone,\n\tcondBr:               defKindNone,\n\tbr:                   defKindNone,\n\tbrTableSequence:      defKindNone,\n\tcSet:                 defKindRD,\n\textend:               defKindRD,\n\tfpuCmp:               defKindNone,\n\tuLoad8:               defKindRD,\n\tuLoad16:              defKindRD,\n\tuLoad32:              defKindRD,\n\tsLoad8:               defKindRD,\n\tsLoad16:              defKindRD,\n\tsLoad32:              defKindRD,\n\tuLoad64:              defKindRD,\n\tfpuLoad32:            defKindRD,\n\tfpuLoad64:            defKindRD,\n\tfpuLoad128:           defKindRD,\n\tvecLoad1R:            defKindRD,\n\tloadFpuConst32:       defKindRD,\n\tloadFpuConst64:       defKindRD,\n\tloadFpuConst128:      defKindRD,\n\tfpuStore32:           defKindNone,\n\tfpuStore64:           defKindNone,\n\tfpuStore128:          defKindNone,\n\tudf:                  defKindNone,\n\tcSel:                 defKindRD,\n\tfpuCSel:              defKindRD,\n\tmovToVec:             defKindRD,\n\tmovFromVec:           defKindRD,\n\tmovFromVecSigned:     defKindRD,\n\tvecDup:               defKindRD,\n\tvecDupElement:        defKindRD,\n\tvecExtract:           defKindRD,\n\tvecMisc:              defKindRD,\n\tvecMovElement:        defKindRD,\n\tvecLanes:             defKindRD,\n\tvecShiftImm:          defKindRD,\n\tvecTbl:               defKindRD,\n\tvecTbl2:              defKindRD,\n\tvecPermute:           defKindRD,\n\tvecRRR:               defKindRD,\n\tvecRRRRewrite:        defKindNone,\n\tfpuToInt:             defKindRD,\n\tintToFpu:             defKindRD,\n\tcCmpImm:              defKindNone,\n\tmovToFPSR:            defKindNone,\n\tmovFromFPSR:          defKindRD,\n\temitSourceOffsetInfo: defKindNone,\n\tatomicRmw:            defKindRD,\n\tatomicCas:            defKindNone,\n\tatomicLoad:           defKindRD,\n\tatomicStore:          defKindNone,\n\tdmb:                  defKindNone,\n\tloadConstBlockArg:    defKindRD,\n\ttailCall:             defKindCall,\n\ttailCallInd:          defKindCall,\n}\n\n// Defs returns the list of regalloc.VReg that are defined by the instruction.\n// In order to reduce the number of allocations, the caller can pass the slice to be used.\nfunc (i *instruction) Defs(regs *[]regalloc.VReg) []regalloc.VReg {\n\t*regs = (*regs)[:0]\n\tswitch defKinds[i.kind] {\n\tcase defKindNone:\n\tcase defKindRD:\n\t\t*regs = append(*regs, i.rd)\n\tcase defKindCall:\n\t\t_, _, retIntRealRegs, retFloatRealRegs, _ := backend.ABIInfoFromUint64(i.u2)\n\t\tfor i := byte(0); i < retIntRealRegs; i++ {\n\t\t\t*regs = append(*regs, regInfo.RealRegToVReg[intParamResultRegs[i]])\n\t\t}\n\t\tfor i := byte(0); i < retFloatRealRegs; i++ {\n\t\t\t*regs = append(*regs, regInfo.RealRegToVReg[floatParamResultRegs[i]])\n\t\t}\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"defKind for %v not defined\", i))\n\t}\n\treturn *regs\n}\n\n// AssignDef implements regalloc.Instr AssignDef.\nfunc (i *instruction) AssignDef(reg regalloc.VReg) {\n\tswitch defKinds[i.kind] {\n\tcase defKindNone:\n\tcase defKindRD:\n\t\ti.rd = reg\n\tcase defKindCall:\n\t\tpanic(\"BUG: call instructions shouldn't be assigned\")\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"defKind for %v not defined\", i))\n\t}\n}\n\ntype useKind byte\n\nconst (\n\tuseKindNone useKind = iota + 1\n\tuseKindRN\n\tuseKindRNRM\n\tuseKindRNRMRA\n\tuseKindRNRN1RM\n\tuseKindCall\n\tuseKindCallInd\n\tuseKindAMode\n\tuseKindRNAMode\n\tuseKindCond\n\t// useKindRDRewrite indicates an instruction where RD is used both as a source and destination.\n\t// A temporary register for RD must be allocated explicitly with the source copied to this\n\t// register before the instruction and the value copied from this register to the instruction\n\t// return register.\n\tuseKindRDRewrite\n)\n\nvar useKinds = [numInstructionKinds]useKind{\n\tudf:                  useKindNone,\n\taluRRR:               useKindRNRM,\n\taluRRRR:              useKindRNRMRA,\n\taluRRImm12:           useKindRN,\n\taluRRBitmaskImm:      useKindRN,\n\taluRRRShift:          useKindRNRM,\n\taluRRImmShift:        useKindRN,\n\taluRRRExtend:         useKindRNRM,\n\tbitRR:                useKindRN,\n\tmovZ:                 useKindNone,\n\tmovK:                 useKindNone,\n\tmovN:                 useKindNone,\n\tmov32:                useKindRN,\n\tmov64:                useKindRN,\n\tfpuMov64:             useKindRN,\n\tfpuMov128:            useKindRN,\n\tfpuRR:                useKindRN,\n\tfpuRRR:               useKindRNRM,\n\tnop0:                 useKindNone,\n\tcall:                 useKindCall,\n\tcallInd:              useKindCallInd,\n\tret:                  useKindNone,\n\tstore8:               useKindRNAMode,\n\tstore16:              useKindRNAMode,\n\tstore32:              useKindRNAMode,\n\tstore64:              useKindRNAMode,\n\texitSequence:         useKindRN,\n\tcondBr:               useKindCond,\n\tbr:                   useKindNone,\n\tbrTableSequence:      useKindRN,\n\tcSet:                 useKindNone,\n\textend:               useKindRN,\n\tfpuCmp:               useKindRNRM,\n\tuLoad8:               useKindAMode,\n\tuLoad16:              useKindAMode,\n\tuLoad32:              useKindAMode,\n\tsLoad8:               useKindAMode,\n\tsLoad16:              useKindAMode,\n\tsLoad32:              useKindAMode,\n\tuLoad64:              useKindAMode,\n\tfpuLoad32:            useKindAMode,\n\tfpuLoad64:            useKindAMode,\n\tfpuLoad128:           useKindAMode,\n\tfpuStore32:           useKindRNAMode,\n\tfpuStore64:           useKindRNAMode,\n\tfpuStore128:          useKindRNAMode,\n\tloadFpuConst32:       useKindNone,\n\tloadFpuConst64:       useKindNone,\n\tloadFpuConst128:      useKindNone,\n\tvecLoad1R:            useKindRN,\n\tcSel:                 useKindRNRM,\n\tfpuCSel:              useKindRNRM,\n\tmovToVec:             useKindRN,\n\tmovFromVec:           useKindRN,\n\tmovFromVecSigned:     useKindRN,\n\tvecDup:               useKindRN,\n\tvecDupElement:        useKindRN,\n\tvecExtract:           useKindRNRM,\n\tcCmpImm:              useKindRN,\n\tvecMisc:              useKindRN,\n\tvecMovElement:        useKindRN,\n\tvecLanes:             useKindRN,\n\tvecShiftImm:          useKindRN,\n\tvecTbl:               useKindRNRM,\n\tvecTbl2:              useKindRNRN1RM,\n\tvecRRR:               useKindRNRM,\n\tvecRRRRewrite:        useKindRDRewrite,\n\tvecPermute:           useKindRNRM,\n\tfpuToInt:             useKindRN,\n\tintToFpu:             useKindRN,\n\tmovToFPSR:            useKindRN,\n\tmovFromFPSR:          useKindNone,\n\tadr:                  useKindNone,\n\temitSourceOffsetInfo: useKindNone,\n\tatomicRmw:            useKindRNRM,\n\tatomicCas:            useKindRDRewrite,\n\tatomicLoad:           useKindRN,\n\tatomicStore:          useKindRNRM,\n\tloadConstBlockArg:    useKindNone,\n\tdmb:                  useKindNone,\n\ttailCall:             useKindCall,\n\ttailCallInd:          useKindCallInd,\n}\n\n// Uses returns the list of regalloc.VReg that are used by the instruction.\n// In order to reduce the number of allocations, the caller can pass the slice to be used.\nfunc (i *instruction) Uses(regs *[]regalloc.VReg) []regalloc.VReg {\n\t*regs = (*regs)[:0]\n\tswitch useKinds[i.kind] {\n\tcase useKindNone:\n\tcase useKindRN:\n\t\tif rn := i.rn.reg(); rn.Valid() {\n\t\t\t*regs = append(*regs, rn)\n\t\t}\n\tcase useKindRNRM:\n\t\tif rn := i.rn.reg(); rn.Valid() {\n\t\t\t*regs = append(*regs, rn)\n\t\t}\n\t\tif rm := i.rm.reg(); rm.Valid() {\n\t\t\t*regs = append(*regs, rm)\n\t\t}\n\tcase useKindRNRMRA:\n\t\tif rn := i.rn.reg(); rn.Valid() {\n\t\t\t*regs = append(*regs, rn)\n\t\t}\n\t\tif rm := i.rm.reg(); rm.Valid() {\n\t\t\t*regs = append(*regs, rm)\n\t\t}\n\t\tif ra := regalloc.VReg(i.u2); ra.Valid() {\n\t\t\t*regs = append(*regs, ra)\n\t\t}\n\tcase useKindRNRN1RM:\n\t\tif rn := i.rn.reg(); rn.Valid() && rn.IsRealReg() {\n\t\t\trn1 := regalloc.FromRealReg(rn.RealReg()+1, rn.RegType())\n\t\t\t*regs = append(*regs, rn, rn1)\n\t\t}\n\t\tif rm := i.rm.reg(); rm.Valid() {\n\t\t\t*regs = append(*regs, rm)\n\t\t}\n\tcase useKindAMode:\n\t\tamode := i.getAmode()\n\t\tif amodeRN := amode.rn; amodeRN.Valid() {\n\t\t\t*regs = append(*regs, amodeRN)\n\t\t}\n\t\tif amodeRM := amode.rm; amodeRM.Valid() {\n\t\t\t*regs = append(*regs, amodeRM)\n\t\t}\n\tcase useKindRNAMode:\n\t\t*regs = append(*regs, i.rn.reg())\n\t\tamode := i.getAmode()\n\t\tif amodeRN := amode.rn; amodeRN.Valid() {\n\t\t\t*regs = append(*regs, amodeRN)\n\t\t}\n\t\tif amodeRM := amode.rm; amodeRM.Valid() {\n\t\t\t*regs = append(*regs, amodeRM)\n\t\t}\n\tcase useKindCond:\n\t\tcnd := cond(i.u1)\n\t\tif cnd.kind() != condKindCondFlagSet {\n\t\t\t*regs = append(*regs, cnd.register())\n\t\t}\n\tcase useKindCallInd:\n\t\t*regs = append(*regs, i.rn.nr())\n\t\tfallthrough\n\tcase useKindCall:\n\t\targIntRealRegs, argFloatRealRegs, _, _, _ := backend.ABIInfoFromUint64(i.u2)\n\t\tfor i := byte(0); i < argIntRealRegs; i++ {\n\t\t\t*regs = append(*regs, regInfo.RealRegToVReg[intParamResultRegs[i]])\n\t\t}\n\t\tfor i := byte(0); i < argFloatRealRegs; i++ {\n\t\t\t*regs = append(*regs, regInfo.RealRegToVReg[floatParamResultRegs[i]])\n\t\t}\n\tcase useKindRDRewrite:\n\t\t*regs = append(*regs, i.rn.reg())\n\t\t*regs = append(*regs, i.rm.reg())\n\t\t*regs = append(*regs, i.rd)\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"useKind for %v not defined\", i))\n\t}\n\treturn *regs\n}\n\nfunc (i *instruction) AssignUse(index int, reg regalloc.VReg) {\n\tswitch useKinds[i.kind] {\n\tcase useKindNone:\n\tcase useKindRN:\n\t\tif rn := i.rn.reg(); rn.Valid() {\n\t\t\ti.rn = i.rn.assignReg(reg)\n\t\t}\n\tcase useKindRNRM:\n\t\tif index == 0 {\n\t\t\tif rn := i.rn.reg(); rn.Valid() {\n\t\t\t\ti.rn = i.rn.assignReg(reg)\n\t\t\t}\n\t\t} else {\n\t\t\tif rm := i.rm.reg(); rm.Valid() {\n\t\t\t\ti.rm = i.rm.assignReg(reg)\n\t\t\t}\n\t\t}\n\tcase useKindRDRewrite:\n\t\tif index == 0 {\n\t\t\tif rn := i.rn.reg(); rn.Valid() {\n\t\t\t\ti.rn = i.rn.assignReg(reg)\n\t\t\t}\n\t\t} else if index == 1 {\n\t\t\tif rm := i.rm.reg(); rm.Valid() {\n\t\t\t\ti.rm = i.rm.assignReg(reg)\n\t\t\t}\n\t\t} else {\n\t\t\tif rd := i.rd; rd.Valid() {\n\t\t\t\ti.rd = reg\n\t\t\t}\n\t\t}\n\tcase useKindRNRN1RM:\n\t\tif index == 0 {\n\t\t\tif rn := i.rn.reg(); rn.Valid() {\n\t\t\t\ti.rn = i.rn.assignReg(reg)\n\t\t\t}\n\t\t\tif rn1 := i.rn.reg() + 1; rn1.Valid() {\n\t\t\t\ti.rm = i.rm.assignReg(reg + 1)\n\t\t\t}\n\t\t} else {\n\t\t\tif rm := i.rm.reg(); rm.Valid() {\n\t\t\t\ti.rm = i.rm.assignReg(reg)\n\t\t\t}\n\t\t}\n\tcase useKindRNRMRA:\n\t\tif index == 0 {\n\t\t\tif rn := i.rn.reg(); rn.Valid() {\n\t\t\t\ti.rn = i.rn.assignReg(reg)\n\t\t\t}\n\t\t} else if index == 1 {\n\t\t\tif rm := i.rm.reg(); rm.Valid() {\n\t\t\t\ti.rm = i.rm.assignReg(reg)\n\t\t\t}\n\t\t} else {\n\t\t\tif ra := regalloc.VReg(i.u2); ra.Valid() {\n\t\t\t\ti.u2 = uint64(reg)\n\t\t\t}\n\t\t}\n\tcase useKindAMode:\n\t\tif index == 0 {\n\t\t\tamode := i.getAmode()\n\t\t\tif amodeRN := amode.rn; amodeRN.Valid() {\n\t\t\t\tamode.rn = reg\n\t\t\t}\n\t\t} else {\n\t\t\tamode := i.getAmode()\n\t\t\tif amodeRM := amode.rm; amodeRM.Valid() {\n\t\t\t\tamode.rm = reg\n\t\t\t}\n\t\t}\n\tcase useKindRNAMode:\n\t\tif index == 0 {\n\t\t\ti.rn = i.rn.assignReg(reg)\n\t\t} else if index == 1 {\n\t\t\tamode := i.getAmode()\n\t\t\tif amodeRN := amode.rn; amodeRN.Valid() {\n\t\t\t\tamode.rn = reg\n\t\t\t} else {\n\t\t\t\tpanic(\"BUG\")\n\t\t\t}\n\t\t} else {\n\t\t\tamode := i.getAmode()\n\t\t\tif amodeRM := amode.rm; amodeRM.Valid() {\n\t\t\t\tamode.rm = reg\n\t\t\t} else {\n\t\t\t\tpanic(\"BUG\")\n\t\t\t}\n\t\t}\n\tcase useKindCond:\n\t\tc := cond(i.u1)\n\t\tswitch c.kind() {\n\t\tcase condKindRegisterZero:\n\t\t\ti.u1 = uint64(registerAsRegZeroCond(reg))\n\t\tcase condKindRegisterNotZero:\n\t\t\ti.u1 = uint64(registerAsRegNotZeroCond(reg))\n\t\t}\n\tcase useKindCall:\n\t\tpanic(\"BUG: call instructions shouldn't be assigned\")\n\tcase useKindCallInd:\n\t\ti.rn = i.rn.assignReg(reg)\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"useKind for %v not defined\", i))\n\t}\n}\n\nfunc (i *instruction) asCall(ref ssa.FuncRef, abi *backend.FunctionABI) {\n\ti.kind = call\n\ti.u1 = uint64(ref)\n\tif abi != nil {\n\t\ti.u2 = abi.ABIInfoAsUint64()\n\t}\n}\n\nfunc (i *instruction) asCallIndirect(ptr regalloc.VReg, abi *backend.FunctionABI) {\n\ti.kind = callInd\n\ti.rn = operandNR(ptr)\n\tif abi != nil {\n\t\ti.u2 = abi.ABIInfoAsUint64()\n\t}\n}\n\nfunc (i *instruction) callFuncRef() ssa.FuncRef {\n\treturn ssa.FuncRef(i.u1)\n}\n\n// shift must be divided by 16 and must be in range 0-3 (if dst64bit is true) or 0-1 (if dst64bit is false)\nfunc (i *instruction) asMOVZ(dst regalloc.VReg, imm uint64, shift uint32, dst64bit bool) {\n\ti.kind = movZ\n\ti.rd = dst\n\ti.u1 = imm\n\ti.u2 = uint64(shift)\n\tif dst64bit {\n\t\ti.u2 |= 1 << 32\n\t}\n}\n\n// shift must be divided by 16 and must be in range 0-3 (if dst64bit is true) or 0-1 (if dst64bit is false)\nfunc (i *instruction) asMOVK(dst regalloc.VReg, imm uint64, shift uint32, dst64bit bool) {\n\ti.kind = movK\n\ti.rd = dst\n\ti.u1 = imm\n\ti.u2 = uint64(shift)\n\tif dst64bit {\n\t\ti.u2 |= 1 << 32\n\t}\n}\n\n// shift must be divided by 16 and must be in range 0-3 (if dst64bit is true) or 0-1 (if dst64bit is false)\nfunc (i *instruction) asMOVN(dst regalloc.VReg, imm uint64, shift uint32, dst64bit bool) {\n\ti.kind = movN\n\ti.rd = dst\n\ti.u1 = imm\n\ti.u2 = uint64(shift)\n\tif dst64bit {\n\t\ti.u2 |= 1 << 32\n\t}\n}\n\nfunc (i *instruction) asNop0() *instruction {\n\ti.kind = nop0\n\treturn i\n}\n\nfunc (i *instruction) asNop0WithLabel(l label) {\n\ti.kind = nop0\n\ti.u1 = uint64(l)\n}\n\nfunc (i *instruction) nop0Label() label {\n\treturn label(i.u1)\n}\n\nfunc (i *instruction) asRet() {\n\ti.kind = ret\n}\n\nfunc (i *instruction) asStorePair64(src1, src2 regalloc.VReg, amode *addressMode) {\n\ti.kind = storeP64\n\ti.rn = operandNR(src1)\n\ti.rm = operandNR(src2)\n\ti.setAmode(amode)\n}\n\nfunc (i *instruction) asLoadPair64(src1, src2 regalloc.VReg, amode *addressMode) {\n\ti.kind = loadP64\n\ti.rn = operandNR(src1)\n\ti.rm = operandNR(src2)\n\ti.setAmode(amode)\n}\n\nfunc (i *instruction) asStore(src operand, amode *addressMode, sizeInBits byte) {\n\tswitch sizeInBits {\n\tcase 8:\n\t\ti.kind = store8\n\tcase 16:\n\t\ti.kind = store16\n\tcase 32:\n\t\tif src.reg().RegType() == regalloc.RegTypeInt {\n\t\t\ti.kind = store32\n\t\t} else {\n\t\t\ti.kind = fpuStore32\n\t\t}\n\tcase 64:\n\t\tif src.reg().RegType() == regalloc.RegTypeInt {\n\t\t\ti.kind = store64\n\t\t} else {\n\t\t\ti.kind = fpuStore64\n\t\t}\n\tcase 128:\n\t\ti.kind = fpuStore128\n\t}\n\ti.rn = src\n\ti.setAmode(amode)\n}\n\nfunc (i *instruction) asSLoad(dst regalloc.VReg, amode *addressMode, sizeInBits byte) {\n\tswitch sizeInBits {\n\tcase 8:\n\t\ti.kind = sLoad8\n\tcase 16:\n\t\ti.kind = sLoad16\n\tcase 32:\n\t\ti.kind = sLoad32\n\tdefault:\n\t\tpanic(\"BUG\")\n\t}\n\ti.rd = dst\n\ti.setAmode(amode)\n}\n\nfunc (i *instruction) asULoad(dst regalloc.VReg, amode *addressMode, sizeInBits byte) {\n\tswitch sizeInBits {\n\tcase 8:\n\t\ti.kind = uLoad8\n\tcase 16:\n\t\ti.kind = uLoad16\n\tcase 32:\n\t\ti.kind = uLoad32\n\tcase 64:\n\t\ti.kind = uLoad64\n\t}\n\ti.rd = dst\n\ti.setAmode(amode)\n}\n\nfunc (i *instruction) asFpuLoad(dst regalloc.VReg, amode *addressMode, sizeInBits byte) {\n\tswitch sizeInBits {\n\tcase 32:\n\t\ti.kind = fpuLoad32\n\tcase 64:\n\t\ti.kind = fpuLoad64\n\tcase 128:\n\t\ti.kind = fpuLoad128\n\t}\n\ti.rd = dst\n\ti.setAmode(amode)\n}\n\nfunc (i *instruction) getAmode() *addressMode {\n\treturn wazevoapi.PtrFromUintptr[addressMode](uintptr(i.u1))\n}\n\nfunc (i *instruction) setAmode(a *addressMode) {\n\ti.u1 = uint64(uintptr(unsafe.Pointer(a)))\n}\n\nfunc (i *instruction) asVecLoad1R(rd regalloc.VReg, rn operand, arr vecArrangement) {\n\t// NOTE: currently only has support for no-offset loads, though it is suspicious that\n\t// we would need to support offset load (that is only available for post-index).\n\ti.kind = vecLoad1R\n\ti.rd = rd\n\ti.rn = rn\n\ti.u1 = uint64(arr)\n}\n\nfunc (i *instruction) asCSet(rd regalloc.VReg, mask bool, c condFlag) {\n\ti.kind = cSet\n\ti.rd = rd\n\ti.u1 = uint64(c)\n\tif mask {\n\t\ti.u2 = 1\n\t}\n}\n\nfunc (i *instruction) asCSel(rd regalloc.VReg, rn, rm operand, c condFlag, _64bit bool) {\n\ti.kind = cSel\n\ti.rd = rd\n\ti.rn = rn\n\ti.rm = rm\n\ti.u1 = uint64(c)\n\tif _64bit {\n\t\ti.u2 = 1\n\t}\n}\n\nfunc (i *instruction) asFpuCSel(rd regalloc.VReg, rn, rm operand, c condFlag, _64bit bool) {\n\ti.kind = fpuCSel\n\ti.rd = rd\n\ti.rn = rn\n\ti.rm = rm\n\ti.u1 = uint64(c)\n\tif _64bit {\n\t\ti.u2 = 1\n\t}\n}\n\nfunc (i *instruction) asBr(target label) {\n\tif target == labelReturn {\n\t\tpanic(\"BUG: call site should special case for returnLabel\")\n\t}\n\ti.kind = br\n\ti.u1 = uint64(target)\n}\n\nfunc (i *instruction) asBrTableSequence(indexReg regalloc.VReg, targetIndex, targetCounts int) {\n\ti.kind = brTableSequence\n\ti.rn = operandNR(indexReg)\n\ti.u1 = uint64(targetIndex)\n\ti.u2 = uint64(targetCounts)\n}\n\nfunc (i *instruction) brTableSequenceOffsetsResolved() {\n\ti.rm.data = 1 // indicate that the offsets are resolved, for debugging.\n}\n\nfunc (i *instruction) brLabel() label {\n\treturn label(i.u1)\n}\n\n// brOffsetResolved is called when the target label is resolved.\nfunc (i *instruction) brOffsetResolve(offset int64) {\n\ti.u2 = uint64(offset)\n\ti.rm.data = 1 // indicate that the offset is resolved, for debugging.\n}\n\nfunc (i *instruction) brOffset() int64 {\n\treturn int64(i.u2)\n}\n\n// asCondBr encodes a conditional branch instruction. is64bit is only needed when cond is not flag.\nfunc (i *instruction) asCondBr(c cond, target label, is64bit bool) {\n\ti.kind = condBr\n\ti.u1 = c.asUint64()\n\ti.u2 = uint64(target)\n\tif is64bit {\n\t\ti.u2 |= 1 << 32\n\t}\n}\n\nfunc (i *instruction) setCondBrTargets(target label) {\n\ti.u2 = uint64(target)\n}\n\nfunc (i *instruction) condBrLabel() label {\n\treturn label(i.u2)\n}\n\n// condBrOffsetResolve is called when the target label is resolved.\nfunc (i *instruction) condBrOffsetResolve(offset int64) {\n\ti.rn.data = uint64(offset)\n\ti.rn.data2 = 1 // indicate that the offset is resolved, for debugging.\n}\n\n// condBrOffsetResolved returns true if condBrOffsetResolve is already called.\nfunc (i *instruction) condBrOffsetResolved() bool {\n\treturn i.rn.data2 == 1\n}\n\nfunc (i *instruction) condBrOffset() int64 {\n\treturn int64(i.rn.data)\n}\n\nfunc (i *instruction) condBrCond() cond {\n\treturn cond(i.u1)\n}\n\nfunc (i *instruction) condBr64bit() bool {\n\treturn i.u2&(1<<32) != 0\n}\n\nfunc (i *instruction) asLoadFpuConst32(rd regalloc.VReg, raw uint64) {\n\ti.kind = loadFpuConst32\n\ti.u1 = raw\n\ti.rd = rd\n}\n\nfunc (i *instruction) asLoadFpuConst64(rd regalloc.VReg, raw uint64) {\n\ti.kind = loadFpuConst64\n\ti.u1 = raw\n\ti.rd = rd\n}\n\nfunc (i *instruction) asLoadFpuConst128(rd regalloc.VReg, lo, hi uint64) {\n\ti.kind = loadFpuConst128\n\ti.u1 = lo\n\ti.u2 = hi\n\ti.rd = rd\n}\n\nfunc (i *instruction) asFpuCmp(rn, rm operand, is64bit bool) {\n\ti.kind = fpuCmp\n\ti.rn, i.rm = rn, rm\n\tif is64bit {\n\t\ti.u1 = 1\n\t}\n}\n\nfunc (i *instruction) asCCmpImm(rn operand, imm uint64, c condFlag, flag byte, is64bit bool) {\n\ti.kind = cCmpImm\n\ti.rn = rn\n\ti.rm.data = imm\n\ti.u1 = uint64(c)\n\ti.u2 = uint64(flag)\n\tif is64bit {\n\t\ti.u2 |= 1 << 32\n\t}\n}\n\n// asALU setups a basic ALU instruction.\nfunc (i *instruction) asALU(aluOp aluOp, rd regalloc.VReg, rn, rm operand, dst64bit bool) {\n\tswitch rm.kind {\n\tcase operandKindNR:\n\t\ti.kind = aluRRR\n\tcase operandKindSR:\n\t\ti.kind = aluRRRShift\n\tcase operandKindER:\n\t\ti.kind = aluRRRExtend\n\tcase operandKindImm12:\n\t\ti.kind = aluRRImm12\n\tdefault:\n\t\tpanic(\"BUG\")\n\t}\n\ti.u1 = uint64(aluOp)\n\ti.rd, i.rn, i.rm = rd, rn, rm\n\tif dst64bit {\n\t\ti.u2 |= 1 << 32\n\t}\n}\n\n// asALU setups a basic ALU instruction.\nfunc (i *instruction) asALURRRR(aluOp aluOp, rd regalloc.VReg, rn, rm operand, ra regalloc.VReg, dst64bit bool) {\n\ti.kind = aluRRRR\n\ti.u1 = uint64(aluOp)\n\ti.rd, i.rn, i.rm, i.u2 = rd, rn, rm, uint64(ra)\n\tif dst64bit {\n\t\ti.u1 |= 1 << 32\n\t}\n}\n\n// asALUShift setups a shift based ALU instruction.\nfunc (i *instruction) asALUShift(aluOp aluOp, rd regalloc.VReg, rn, rm operand, dst64bit bool) {\n\tswitch rm.kind {\n\tcase operandKindNR:\n\t\ti.kind = aluRRR // If the shift amount op is a register, then the instruction is encoded as a normal ALU instruction with two register operands.\n\tcase operandKindShiftImm:\n\t\ti.kind = aluRRImmShift\n\tdefault:\n\t\tpanic(\"BUG\")\n\t}\n\ti.u1 = uint64(aluOp)\n\ti.rd, i.rn, i.rm = rd, rn, rm\n\tif dst64bit {\n\t\ti.u2 |= 1 << 32\n\t}\n}\n\nfunc (i *instruction) asALUBitmaskImm(aluOp aluOp, rd, rn regalloc.VReg, imm uint64, dst64bit bool) {\n\ti.kind = aluRRBitmaskImm\n\ti.u1 = uint64(aluOp)\n\ti.rn, i.rd = operandNR(rn), rd\n\ti.u2 = imm\n\tif dst64bit {\n\t\ti.u1 |= 1 << 32\n\t}\n}\n\nfunc (i *instruction) asMovToFPSR(rn regalloc.VReg) {\n\ti.kind = movToFPSR\n\ti.rn = operandNR(rn)\n}\n\nfunc (i *instruction) asMovFromFPSR(rd regalloc.VReg) {\n\ti.kind = movFromFPSR\n\ti.rd = rd\n}\n\nfunc (i *instruction) asBitRR(bitOp bitOp, rd, rn regalloc.VReg, is64bit bool) {\n\ti.kind = bitRR\n\ti.rn, i.rd = operandNR(rn), rd\n\ti.u1 = uint64(bitOp)\n\tif is64bit {\n\t\ti.u2 = 1\n\t}\n}\n\nfunc (i *instruction) asFpuRRR(op fpuBinOp, rd regalloc.VReg, rn, rm operand, dst64bit bool) {\n\ti.kind = fpuRRR\n\ti.u1 = uint64(op)\n\ti.rd, i.rn, i.rm = rd, rn, rm\n\tif dst64bit {\n\t\ti.u2 = 1\n\t}\n}\n\nfunc (i *instruction) asFpuRR(op fpuUniOp, rd regalloc.VReg, rn operand, dst64bit bool) {\n\ti.kind = fpuRR\n\ti.u1 = uint64(op)\n\ti.rd, i.rn = rd, rn\n\tif dst64bit {\n\t\ti.u2 = 1\n\t}\n}\n\nfunc (i *instruction) asExtend(rd, rn regalloc.VReg, fromBits, toBits byte, signed bool) {\n\ti.kind = extend\n\ti.rn, i.rd = operandNR(rn), rd\n\ti.u1 = uint64(fromBits)\n\ti.u2 = uint64(toBits)\n\tif signed {\n\t\ti.u2 |= 1 << 32\n\t}\n}\n\nfunc (i *instruction) asMove32(rd, rn regalloc.VReg) {\n\ti.kind = mov32\n\ti.rn, i.rd = operandNR(rn), rd\n}\n\nfunc (i *instruction) asMove64(rd, rn regalloc.VReg) *instruction {\n\ti.kind = mov64\n\ti.rn, i.rd = operandNR(rn), rd\n\treturn i\n}\n\nfunc (i *instruction) asFpuMov64(rd, rn regalloc.VReg) {\n\ti.kind = fpuMov64\n\ti.rn, i.rd = operandNR(rn), rd\n}\n\nfunc (i *instruction) asFpuMov128(rd, rn regalloc.VReg) *instruction {\n\ti.kind = fpuMov128\n\ti.rn, i.rd = operandNR(rn), rd\n\treturn i\n}\n\nfunc (i *instruction) asMovToVec(rd regalloc.VReg, rn operand, arr vecArrangement, index vecIndex) {\n\ti.kind = movToVec\n\ti.rd = rd\n\ti.rn = rn\n\ti.u1, i.u2 = uint64(arr), uint64(index)\n}\n\nfunc (i *instruction) asMovFromVec(rd regalloc.VReg, rn operand, arr vecArrangement, index vecIndex, signed bool) {\n\tif signed {\n\t\ti.kind = movFromVecSigned\n\t} else {\n\t\ti.kind = movFromVec\n\t}\n\ti.rd = rd\n\ti.rn = rn\n\ti.u1, i.u2 = uint64(arr), uint64(index)\n}\n\nfunc (i *instruction) asVecDup(rd regalloc.VReg, rn operand, arr vecArrangement) {\n\ti.kind = vecDup\n\ti.u1 = uint64(arr)\n\ti.rn, i.rd = rn, rd\n}\n\nfunc (i *instruction) asVecDupElement(rd regalloc.VReg, rn operand, arr vecArrangement, index vecIndex) {\n\ti.kind = vecDupElement\n\ti.u1 = uint64(arr)\n\ti.rn, i.rd = rn, rd\n\ti.u2 = uint64(index)\n}\n\nfunc (i *instruction) asVecExtract(rd regalloc.VReg, rn, rm operand, arr vecArrangement, index uint32) {\n\ti.kind = vecExtract\n\ti.u1 = uint64(arr)\n\ti.rn, i.rm, i.rd = rn, rm, rd\n\ti.u2 = uint64(index)\n}\n\nfunc (i *instruction) asVecMovElement(rd regalloc.VReg, rn operand, arr vecArrangement, rdIndex, rnIndex vecIndex) {\n\ti.kind = vecMovElement\n\ti.u1 = uint64(arr)\n\ti.u2 = uint64(rdIndex) | uint64(rnIndex)<<32\n\ti.rn, i.rd = rn, rd\n}\n\nfunc (i *instruction) asVecMisc(op vecOp, rd regalloc.VReg, rn operand, arr vecArrangement) {\n\ti.kind = vecMisc\n\ti.u1 = uint64(op)\n\ti.rn, i.rd = rn, rd\n\ti.u2 = uint64(arr)\n}\n\nfunc (i *instruction) asVecLanes(op vecOp, rd regalloc.VReg, rn operand, arr vecArrangement) {\n\ti.kind = vecLanes\n\ti.u1 = uint64(op)\n\ti.rn, i.rd = rn, rd\n\ti.u2 = uint64(arr)\n}\n\nfunc (i *instruction) asVecShiftImm(op vecOp, rd regalloc.VReg, rn, rm operand, arr vecArrangement) *instruction {\n\ti.kind = vecShiftImm\n\ti.u1 = uint64(op)\n\ti.rn, i.rm, i.rd = rn, rm, rd\n\ti.u2 = uint64(arr)\n\treturn i\n}\n\nfunc (i *instruction) asVecTbl(nregs byte, rd regalloc.VReg, rn, rm operand, arr vecArrangement) {\n\tswitch nregs {\n\tcase 0, 1:\n\t\ti.kind = vecTbl\n\tcase 2:\n\t\ti.kind = vecTbl2\n\t\tif !rn.reg().IsRealReg() {\n\t\t\tpanic(\"rn is not a RealReg\")\n\t\t}\n\t\tif rn.realReg() == v31 {\n\t\t\tpanic(\"rn cannot be v31\")\n\t\t}\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"unsupported number of registers %d\", nregs))\n\t}\n\ti.rn, i.rm, i.rd = rn, rm, rd\n\ti.u2 = uint64(arr)\n}\n\nfunc (i *instruction) asVecPermute(op vecOp, rd regalloc.VReg, rn, rm operand, arr vecArrangement) {\n\ti.kind = vecPermute\n\ti.u1 = uint64(op)\n\ti.rn, i.rm, i.rd = rn, rm, rd\n\ti.u2 = uint64(arr)\n}\n\nfunc (i *instruction) asVecRRR(op vecOp, rd regalloc.VReg, rn, rm operand, arr vecArrangement) *instruction {\n\ti.kind = vecRRR\n\ti.u1 = uint64(op)\n\ti.rn, i.rd, i.rm = rn, rd, rm\n\ti.u2 = uint64(arr)\n\treturn i\n}\n\n// asVecRRRRewrite encodes a vector instruction that rewrites the destination register.\n// IMPORTANT: the destination register must be already defined before this instruction.\nfunc (i *instruction) asVecRRRRewrite(op vecOp, rd regalloc.VReg, rn, rm operand, arr vecArrangement) {\n\ti.kind = vecRRRRewrite\n\ti.u1 = uint64(op)\n\ti.rn, i.rd, i.rm = rn, rd, rm\n\ti.u2 = uint64(arr)\n}\n\nfunc (i *instruction) IsCopy() bool {\n\top := i.kind\n\t// We do not include mov32 as it is not a copy instruction in the sense that it does not preserve the upper 32 bits,\n\t// and it is only used in the translation of IReduce, not the actual copy indeed.\n\treturn op == mov64 || op == fpuMov64 || op == fpuMov128\n}\n\n// String implements fmt.Stringer.\nfunc (i *instruction) String() (str string) {\n\tis64SizeBitToSize := func(v uint64) byte {\n\t\tif v == 0 {\n\t\t\treturn 32\n\t\t}\n\t\treturn 64\n\t}\n\n\tswitch i.kind {\n\tcase nop0:\n\t\tif i.u1 != 0 {\n\t\t\tl := label(i.u1)\n\t\t\tstr = fmt.Sprintf(\"%s:\", l)\n\t\t} else {\n\t\t\tstr = \"nop0\"\n\t\t}\n\tcase aluRRR:\n\t\tsize := is64SizeBitToSize(i.u2 >> 32)\n\t\tstr = fmt.Sprintf(\"%s %s, %s, %s\", aluOp(i.u1).String(),\n\t\t\tformatVRegSized(i.rd, size), formatVRegSized(i.rn.nr(), size),\n\t\t\ti.rm.format(size))\n\tcase aluRRRR:\n\t\tsize := is64SizeBitToSize(i.u1 >> 32)\n\t\tstr = fmt.Sprintf(\"%s %s, %s, %s, %s\", aluOp(i.u1).String(),\n\t\t\tformatVRegSized(i.rd, size), formatVRegSized(i.rn.nr(), size), formatVRegSized(i.rm.nr(), size), formatVRegSized(regalloc.VReg(i.u2), size))\n\tcase aluRRImm12:\n\t\tsize := is64SizeBitToSize(i.u2 >> 32)\n\t\tstr = fmt.Sprintf(\"%s %s, %s, %s\", aluOp(i.u1).String(),\n\t\t\tformatVRegSized(i.rd, size), formatVRegSized(i.rn.nr(), size), i.rm.format(size))\n\tcase aluRRBitmaskImm:\n\t\tsize := is64SizeBitToSize(i.u1 >> 32)\n\t\trd, rn := formatVRegSized(i.rd, size), formatVRegSized(i.rn.nr(), size)\n\t\tif size == 32 {\n\t\t\tstr = fmt.Sprintf(\"%s %s, %s, #%#x\", aluOp(i.u1).String(), rd, rn, uint32(i.u2))\n\t\t} else {\n\t\t\tstr = fmt.Sprintf(\"%s %s, %s, #%#x\", aluOp(i.u1).String(), rd, rn, i.u2)\n\t\t}\n\tcase aluRRImmShift:\n\t\tsize := is64SizeBitToSize(i.u2 >> 32)\n\t\tstr = fmt.Sprintf(\"%s %s, %s, %#x\",\n\t\t\taluOp(i.u1).String(),\n\t\t\tformatVRegSized(i.rd, size),\n\t\t\tformatVRegSized(i.rn.nr(), size),\n\t\t\ti.rm.shiftImm(),\n\t\t)\n\tcase aluRRRShift:\n\t\tsize := is64SizeBitToSize(i.u2 >> 32)\n\t\tstr = fmt.Sprintf(\"%s %s, %s, %s\",\n\t\t\taluOp(i.u1).String(),\n\t\t\tformatVRegSized(i.rd, size),\n\t\t\tformatVRegSized(i.rn.nr(), size),\n\t\t\ti.rm.format(size),\n\t\t)\n\tcase aluRRRExtend:\n\t\tsize := is64SizeBitToSize(i.u2 >> 32)\n\t\tstr = fmt.Sprintf(\"%s %s, %s, %s\", aluOp(i.u1).String(),\n\t\t\tformatVRegSized(i.rd, size),\n\t\t\tformatVRegSized(i.rn.nr(), size),\n\t\t\t// Regardless of the source size, the register is formatted in 32-bit.\n\t\t\ti.rm.format(32),\n\t\t)\n\tcase bitRR:\n\t\tsize := is64SizeBitToSize(i.u2)\n\t\tstr = fmt.Sprintf(\"%s %s, %s\",\n\t\t\tbitOp(i.u1),\n\t\t\tformatVRegSized(i.rd, size),\n\t\t\tformatVRegSized(i.rn.nr(), size),\n\t\t)\n\tcase uLoad8:\n\t\tstr = fmt.Sprintf(\"ldrb %s, %s\", formatVRegSized(i.rd, 32), i.getAmode().format(32))\n\tcase sLoad8:\n\t\tstr = fmt.Sprintf(\"ldrsb %s, %s\", formatVRegSized(i.rd, 32), i.getAmode().format(32))\n\tcase uLoad16:\n\t\tstr = fmt.Sprintf(\"ldrh %s, %s\", formatVRegSized(i.rd, 32), i.getAmode().format(32))\n\tcase sLoad16:\n\t\tstr = fmt.Sprintf(\"ldrsh %s, %s\", formatVRegSized(i.rd, 32), i.getAmode().format(32))\n\tcase uLoad32:\n\t\tstr = fmt.Sprintf(\"ldr %s, %s\", formatVRegSized(i.rd, 32), i.getAmode().format(32))\n\tcase sLoad32:\n\t\tstr = fmt.Sprintf(\"ldrs %s, %s\", formatVRegSized(i.rd, 32), i.getAmode().format(32))\n\tcase uLoad64:\n\t\tstr = fmt.Sprintf(\"ldr %s, %s\", formatVRegSized(i.rd, 64), i.getAmode().format(64))\n\tcase store8:\n\t\tstr = fmt.Sprintf(\"strb %s, %s\", formatVRegSized(i.rn.nr(), 32), i.getAmode().format(8))\n\tcase store16:\n\t\tstr = fmt.Sprintf(\"strh %s, %s\", formatVRegSized(i.rn.nr(), 32), i.getAmode().format(16))\n\tcase store32:\n\t\tstr = fmt.Sprintf(\"str %s, %s\", formatVRegSized(i.rn.nr(), 32), i.getAmode().format(32))\n\tcase store64:\n\t\tstr = fmt.Sprintf(\"str %s, %s\", formatVRegSized(i.rn.nr(), 64), i.getAmode().format(64))\n\tcase storeP64:\n\t\tstr = fmt.Sprintf(\"stp %s, %s, %s\",\n\t\t\tformatVRegSized(i.rn.nr(), 64), formatVRegSized(i.rm.nr(), 64), i.getAmode().format(64))\n\tcase loadP64:\n\t\tstr = fmt.Sprintf(\"ldp %s, %s, %s\",\n\t\t\tformatVRegSized(i.rn.nr(), 64), formatVRegSized(i.rm.nr(), 64), i.getAmode().format(64))\n\tcase mov64:\n\t\tstr = fmt.Sprintf(\"mov %s, %s\",\n\t\t\tformatVRegSized(i.rd, 64),\n\t\t\tformatVRegSized(i.rn.nr(), 64))\n\tcase mov32:\n\t\tstr = fmt.Sprintf(\"mov %s, %s\", formatVRegSized(i.rd, 32), formatVRegSized(i.rn.nr(), 32))\n\tcase movZ:\n\t\tsize := is64SizeBitToSize(i.u2 >> 32)\n\t\tstr = fmt.Sprintf(\"movz %s, #%#x, lsl %d\", formatVRegSized(i.rd, size), uint16(i.u1), uint32(i.u2)*16)\n\tcase movN:\n\t\tsize := is64SizeBitToSize(i.u2 >> 32)\n\t\tstr = fmt.Sprintf(\"movn %s, #%#x, lsl %d\", formatVRegSized(i.rd, size), uint16(i.u1), uint32(i.u2)*16)\n\tcase movK:\n\t\tsize := is64SizeBitToSize(i.u2 >> 32)\n\t\tstr = fmt.Sprintf(\"movk %s, #%#x, lsl %d\", formatVRegSized(i.rd, size), uint16(i.u1), uint32(i.u2)*16)\n\tcase extend:\n\t\tfromBits, toBits := byte(i.u1), byte(i.u2)\n\n\t\tvar signedStr string\n\t\tif i.u2>>32 == 1 {\n\t\t\tsignedStr = \"s\"\n\t\t} else {\n\t\t\tsignedStr = \"u\"\n\t\t}\n\t\tvar fromStr string\n\t\tswitch fromBits {\n\t\tcase 8:\n\t\t\tfromStr = \"b\"\n\t\tcase 16:\n\t\t\tfromStr = \"h\"\n\t\tcase 32:\n\t\t\tfromStr = \"w\"\n\t\t}\n\t\tstr = fmt.Sprintf(\"%sxt%s %s, %s\", signedStr, fromStr, formatVRegSized(i.rd, toBits), formatVRegSized(i.rn.nr(), 32))\n\tcase cSel:\n\t\tsize := is64SizeBitToSize(i.u2)\n\t\tstr = fmt.Sprintf(\"csel %s, %s, %s, %s\",\n\t\t\tformatVRegSized(i.rd, size),\n\t\t\tformatVRegSized(i.rn.nr(), size),\n\t\t\tformatVRegSized(i.rm.nr(), size),\n\t\t\tcondFlag(i.u1),\n\t\t)\n\tcase cSet:\n\t\tif i.u2 != 0 {\n\t\t\tstr = fmt.Sprintf(\"csetm %s, %s\", formatVRegSized(i.rd, 64), condFlag(i.u1))\n\t\t} else {\n\t\t\tstr = fmt.Sprintf(\"cset %s, %s\", formatVRegSized(i.rd, 64), condFlag(i.u1))\n\t\t}\n\tcase cCmpImm:\n\t\tsize := is64SizeBitToSize(i.u2 >> 32)\n\t\tstr = fmt.Sprintf(\"ccmp %s, #%#x, #%#x, %s\",\n\t\t\tformatVRegSized(i.rn.nr(), size), i.rm.data,\n\t\t\ti.u2&0b1111,\n\t\t\tcondFlag(i.u1))\n\tcase fpuMov64:\n\t\tstr = fmt.Sprintf(\"mov %s, %s\",\n\t\t\tformatVRegVec(i.rd, vecArrangement8B, vecIndexNone),\n\t\t\tformatVRegVec(i.rn.nr(), vecArrangement8B, vecIndexNone))\n\tcase fpuMov128:\n\t\tstr = fmt.Sprintf(\"mov %s, %s\",\n\t\t\tformatVRegVec(i.rd, vecArrangement16B, vecIndexNone),\n\t\t\tformatVRegVec(i.rn.nr(), vecArrangement16B, vecIndexNone))\n\tcase fpuMovFromVec:\n\t\tpanic(\"TODO\")\n\tcase fpuRR:\n\t\tdstSz := is64SizeBitToSize(i.u2)\n\t\tsrcSz := dstSz\n\t\top := fpuUniOp(i.u1)\n\t\tswitch op {\n\t\tcase fpuUniOpCvt32To64:\n\t\t\tsrcSz = 32\n\t\tcase fpuUniOpCvt64To32:\n\t\t\tsrcSz = 64\n\t\t}\n\t\tstr = fmt.Sprintf(\"%s %s, %s\", op.String(),\n\t\t\tformatVRegSized(i.rd, dstSz), formatVRegSized(i.rn.nr(), srcSz))\n\tcase fpuRRR:\n\t\tsize := is64SizeBitToSize(i.u2)\n\t\tstr = fmt.Sprintf(\"%s %s, %s, %s\", fpuBinOp(i.u1).String(),\n\t\t\tformatVRegSized(i.rd, size), formatVRegSized(i.rn.nr(), size), formatVRegSized(i.rm.nr(), size))\n\tcase fpuRRI:\n\t\tpanic(\"TODO\")\n\tcase fpuRRRR:\n\t\tpanic(\"TODO\")\n\tcase fpuCmp:\n\t\tsize := is64SizeBitToSize(i.u1)\n\t\tstr = fmt.Sprintf(\"fcmp %s, %s\",\n\t\t\tformatVRegSized(i.rn.nr(), size), formatVRegSized(i.rm.nr(), size))\n\tcase fpuLoad32:\n\t\tstr = fmt.Sprintf(\"ldr %s, %s\", formatVRegSized(i.rd, 32), i.getAmode().format(32))\n\tcase fpuStore32:\n\t\tstr = fmt.Sprintf(\"str %s, %s\", formatVRegSized(i.rn.nr(), 32), i.getAmode().format(64))\n\tcase fpuLoad64:\n\t\tstr = fmt.Sprintf(\"ldr %s, %s\", formatVRegSized(i.rd, 64), i.getAmode().format(64))\n\tcase fpuStore64:\n\t\tstr = fmt.Sprintf(\"str %s, %s\", formatVRegSized(i.rn.nr(), 64), i.getAmode().format(64))\n\tcase fpuLoad128:\n\t\tstr = fmt.Sprintf(\"ldr %s, %s\", formatVRegSized(i.rd, 128), i.getAmode().format(64))\n\tcase fpuStore128:\n\t\tstr = fmt.Sprintf(\"str %s, %s\", formatVRegSized(i.rn.nr(), 128), i.getAmode().format(64))\n\tcase loadFpuConst32:\n\t\tstr = fmt.Sprintf(\"ldr %s, #8; b 8; data.f32 %f\", formatVRegSized(i.rd, 32), math.Float32frombits(uint32(i.u1)))\n\tcase loadFpuConst64:\n\t\tstr = fmt.Sprintf(\"ldr %s, #8; b 16; data.f64 %f\", formatVRegSized(i.rd, 64), math.Float64frombits(i.u1))\n\tcase loadFpuConst128:\n\t\tstr = fmt.Sprintf(\"ldr %s, #8; b 32; data.v128  %016x %016x\",\n\t\t\tformatVRegSized(i.rd, 128), i.u1, i.u2)\n\tcase fpuToInt:\n\t\tvar op, src, dst string\n\t\tif signed := i.u1 == 1; signed {\n\t\t\top = \"fcvtzs\"\n\t\t} else {\n\t\t\top = \"fcvtzu\"\n\t\t}\n\t\tif src64 := i.u2&1 != 0; src64 {\n\t\t\tsrc = formatVRegWidthVec(i.rn.nr(), vecArrangementD)\n\t\t} else {\n\t\t\tsrc = formatVRegWidthVec(i.rn.nr(), vecArrangementS)\n\t\t}\n\t\tif dst64 := i.u2&2 != 0; dst64 {\n\t\t\tdst = formatVRegSized(i.rd, 64)\n\t\t} else {\n\t\t\tdst = formatVRegSized(i.rd, 32)\n\t\t}\n\t\tstr = fmt.Sprintf(\"%s %s, %s\", op, dst, src)\n\n\tcase intToFpu:\n\t\tvar op, src, dst string\n\t\tif signed := i.u1 == 1; signed {\n\t\t\top = \"scvtf\"\n\t\t} else {\n\t\t\top = \"ucvtf\"\n\t\t}\n\t\tif src64 := i.u2&1 != 0; src64 {\n\t\t\tsrc = formatVRegSized(i.rn.nr(), 64)\n\t\t} else {\n\t\t\tsrc = formatVRegSized(i.rn.nr(), 32)\n\t\t}\n\t\tif dst64 := i.u2&2 != 0; dst64 {\n\t\t\tdst = formatVRegWidthVec(i.rd, vecArrangementD)\n\t\t} else {\n\t\t\tdst = formatVRegWidthVec(i.rd, vecArrangementS)\n\t\t}\n\t\tstr = fmt.Sprintf(\"%s %s, %s\", op, dst, src)\n\tcase fpuCSel:\n\t\tsize := is64SizeBitToSize(i.u2)\n\t\tstr = fmt.Sprintf(\"fcsel %s, %s, %s, %s\",\n\t\t\tformatVRegSized(i.rd, size),\n\t\t\tformatVRegSized(i.rn.nr(), size),\n\t\t\tformatVRegSized(i.rm.nr(), size),\n\t\t\tcondFlag(i.u1),\n\t\t)\n\tcase movToVec:\n\t\tvar size byte\n\t\tarr := vecArrangement(i.u1)\n\t\tswitch arr {\n\t\tcase vecArrangementB, vecArrangementH, vecArrangementS:\n\t\t\tsize = 32\n\t\tcase vecArrangementD:\n\t\t\tsize = 64\n\t\tdefault:\n\t\t\tpanic(\"unsupported arrangement \" + arr.String())\n\t\t}\n\t\tstr = fmt.Sprintf(\"ins %s, %s\", formatVRegVec(i.rd, arr, vecIndex(i.u2)), formatVRegSized(i.rn.nr(), size))\n\tcase movFromVec, movFromVecSigned:\n\t\tvar size byte\n\t\tvar opcode string\n\t\tarr := vecArrangement(i.u1)\n\t\tsigned := i.kind == movFromVecSigned\n\t\tswitch arr {\n\t\tcase vecArrangementB, vecArrangementH, vecArrangementS:\n\t\t\tsize = 32\n\t\t\tif signed {\n\t\t\t\topcode = \"smov\"\n\t\t\t} else {\n\t\t\t\topcode = \"umov\"\n\t\t\t}\n\t\tcase vecArrangementD:\n\t\t\tsize = 64\n\t\t\tif signed {\n\t\t\t\topcode = \"smov\"\n\t\t\t} else {\n\t\t\t\topcode = \"mov\"\n\t\t\t}\n\t\tdefault:\n\t\t\tpanic(\"unsupported arrangement \" + arr.String())\n\t\t}\n\t\tstr = fmt.Sprintf(\"%s %s, %s\", opcode, formatVRegSized(i.rd, size), formatVRegVec(i.rn.nr(), arr, vecIndex(i.u2)))\n\tcase vecDup:\n\t\tstr = fmt.Sprintf(\"dup %s, %s\",\n\t\t\tformatVRegVec(i.rd, vecArrangement(i.u1), vecIndexNone),\n\t\t\tformatVRegSized(i.rn.nr(), 64),\n\t\t)\n\tcase vecDupElement:\n\t\tarr := vecArrangement(i.u1)\n\t\tstr = fmt.Sprintf(\"dup %s, %s\",\n\t\t\tformatVRegVec(i.rd, arr, vecIndexNone),\n\t\t\tformatVRegVec(i.rn.nr(), arr, vecIndex(i.u2)),\n\t\t)\n\tcase vecDupFromFpu:\n\t\tpanic(\"TODO\")\n\tcase vecExtract:\n\t\tstr = fmt.Sprintf(\"ext %s, %s, %s, #%d\",\n\t\t\tformatVRegVec(i.rd, vecArrangement(i.u1), vecIndexNone),\n\t\t\tformatVRegVec(i.rn.nr(), vecArrangement(i.u1), vecIndexNone),\n\t\t\tformatVRegVec(i.rm.nr(), vecArrangement(i.u1), vecIndexNone),\n\t\t\tuint32(i.u2),\n\t\t)\n\tcase vecExtend:\n\t\tpanic(\"TODO\")\n\tcase vecMovElement:\n\t\tstr = fmt.Sprintf(\"mov %s, %s\",\n\t\t\tformatVRegVec(i.rd, vecArrangement(i.u1), vecIndex(i.u2&0xffffffff)),\n\t\t\tformatVRegVec(i.rn.nr(), vecArrangement(i.u1), vecIndex(i.u2>>32)),\n\t\t)\n\tcase vecMiscNarrow:\n\t\tpanic(\"TODO\")\n\tcase vecRRR, vecRRRRewrite:\n\t\tstr = fmt.Sprintf(\"%s %s, %s, %s\",\n\t\t\tvecOp(i.u1),\n\t\t\tformatVRegVec(i.rd, vecArrangement(i.u2), vecIndexNone),\n\t\t\tformatVRegVec(i.rn.nr(), vecArrangement(i.u2), vecIndexNone),\n\t\t\tformatVRegVec(i.rm.nr(), vecArrangement(i.u2), vecIndexNone),\n\t\t)\n\tcase vecMisc:\n\t\tvop := vecOp(i.u1)\n\t\tif vop == vecOpCmeq0 {\n\t\t\tstr = fmt.Sprintf(\"cmeq %s, %s, #0\",\n\t\t\t\tformatVRegVec(i.rd, vecArrangement(i.u2), vecIndexNone),\n\t\t\t\tformatVRegVec(i.rn.nr(), vecArrangement(i.u2), vecIndexNone))\n\t\t} else {\n\t\t\tstr = fmt.Sprintf(\"%s %s, %s\",\n\t\t\t\tvop,\n\t\t\t\tformatVRegVec(i.rd, vecArrangement(i.u2), vecIndexNone),\n\t\t\t\tformatVRegVec(i.rn.nr(), vecArrangement(i.u2), vecIndexNone))\n\t\t}\n\tcase vecLanes:\n\t\tarr := vecArrangement(i.u2)\n\t\tvar destArr vecArrangement\n\t\tswitch arr {\n\t\tcase vecArrangement8B, vecArrangement16B:\n\t\t\tdestArr = vecArrangementH\n\t\tcase vecArrangement4H, vecArrangement8H:\n\t\t\tdestArr = vecArrangementS\n\t\tcase vecArrangement4S:\n\t\t\tdestArr = vecArrangementD\n\t\tdefault:\n\t\t\tpanic(\"invalid arrangement \" + arr.String())\n\t\t}\n\t\tstr = fmt.Sprintf(\"%s %s, %s\",\n\t\t\tvecOp(i.u1),\n\t\t\tformatVRegWidthVec(i.rd, destArr),\n\t\t\tformatVRegVec(i.rn.nr(), arr, vecIndexNone))\n\tcase vecShiftImm:\n\t\tarr := vecArrangement(i.u2)\n\t\tstr = fmt.Sprintf(\"%s %s, %s, #%d\",\n\t\t\tvecOp(i.u1),\n\t\t\tformatVRegVec(i.rd, arr, vecIndexNone),\n\t\t\tformatVRegVec(i.rn.nr(), arr, vecIndexNone),\n\t\t\ti.rm.shiftImm())\n\tcase vecTbl:\n\t\tarr := vecArrangement(i.u2)\n\t\tstr = fmt.Sprintf(\"tbl %s, { %s }, %s\",\n\t\t\tformatVRegVec(i.rd, arr, vecIndexNone),\n\t\t\tformatVRegVec(i.rn.nr(), vecArrangement16B, vecIndexNone),\n\t\t\tformatVRegVec(i.rm.nr(), arr, vecIndexNone))\n\tcase vecTbl2:\n\t\tarr := vecArrangement(i.u2)\n\t\trd, rn, rm := i.rd, i.rn.nr(), i.rm.nr()\n\t\trn1 := regalloc.FromRealReg(rn.RealReg()+1, rn.RegType())\n\t\tstr = fmt.Sprintf(\"tbl %s, { %s, %s }, %s\",\n\t\t\tformatVRegVec(rd, arr, vecIndexNone),\n\t\t\tformatVRegVec(rn, vecArrangement16B, vecIndexNone),\n\t\t\tformatVRegVec(rn1, vecArrangement16B, vecIndexNone),\n\t\t\tformatVRegVec(rm, arr, vecIndexNone))\n\tcase vecPermute:\n\t\tarr := vecArrangement(i.u2)\n\t\tstr = fmt.Sprintf(\"%s %s, %s, %s\",\n\t\t\tvecOp(i.u1),\n\t\t\tformatVRegVec(i.rd, arr, vecIndexNone),\n\t\t\tformatVRegVec(i.rn.nr(), arr, vecIndexNone),\n\t\t\tformatVRegVec(i.rm.nr(), arr, vecIndexNone))\n\tcase movToFPSR:\n\t\tstr = fmt.Sprintf(\"msr fpsr, %s\", formatVRegSized(i.rn.nr(), 64))\n\tcase movFromFPSR:\n\t\tstr = fmt.Sprintf(\"mrs %s fpsr\", formatVRegSized(i.rd, 64))\n\tcase call:\n\t\tstr = fmt.Sprintf(\"bl %s\", ssa.FuncRef(i.u1))\n\tcase callInd:\n\t\tstr = fmt.Sprintf(\"bl %s\", formatVRegSized(i.rn.nr(), 64))\n\tcase ret:\n\t\tstr = \"ret\"\n\tcase br:\n\t\ttarget := label(i.u1)\n\t\tif i.rm.data != 0 {\n\t\t\tstr = fmt.Sprintf(\"b #%#x (%s)\", i.brOffset(), target.String())\n\t\t} else {\n\t\t\tstr = fmt.Sprintf(\"b %s\", target.String())\n\t\t}\n\tcase condBr:\n\t\tsize := is64SizeBitToSize(i.u2 >> 32)\n\t\tc := cond(i.u1)\n\t\ttarget := label(i.u2 & 0xffffffff)\n\t\tswitch c.kind() {\n\t\tcase condKindRegisterZero:\n\t\t\tif !i.condBrOffsetResolved() {\n\t\t\t\tstr = fmt.Sprintf(\"cbz %s, (%s)\", formatVRegSized(c.register(), size), target.String())\n\t\t\t} else {\n\t\t\t\tstr = fmt.Sprintf(\"cbz %s, #%#x %s\", formatVRegSized(c.register(), size), i.condBrOffset(), target.String())\n\t\t\t}\n\t\tcase condKindRegisterNotZero:\n\t\t\tif offset := i.condBrOffset(); offset != 0 {\n\t\t\t\tstr = fmt.Sprintf(\"cbnz %s, #%#x (%s)\", formatVRegSized(c.register(), size), offset, target.String())\n\t\t\t} else {\n\t\t\t\tstr = fmt.Sprintf(\"cbnz %s, %s\", formatVRegSized(c.register(), size), target.String())\n\t\t\t}\n\t\tcase condKindCondFlagSet:\n\t\t\tif offset := i.condBrOffset(); offset != 0 {\n\t\t\t\tif target == labelInvalid {\n\t\t\t\t\tstr = fmt.Sprintf(\"b.%s #%#x\", c.flag(), offset)\n\t\t\t\t} else {\n\t\t\t\t\tstr = fmt.Sprintf(\"b.%s #%#x, (%s)\", c.flag(), offset, target.String())\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tstr = fmt.Sprintf(\"b.%s %s\", c.flag(), target.String())\n\t\t\t}\n\t\t}\n\tcase adr:\n\t\tstr = fmt.Sprintf(\"adr %s, #%#x\", formatVRegSized(i.rd, 64), int64(i.u1))\n\tcase brTableSequence:\n\t\ttargetIndex := i.u1\n\t\tstr = fmt.Sprintf(\"br_table_sequence %s, table_index=%d\", formatVRegSized(i.rn.nr(), 64), targetIndex)\n\tcase exitSequence:\n\t\tstr = fmt.Sprintf(\"exit_sequence %s\", formatVRegSized(i.rn.nr(), 64))\n\tcase atomicRmw:\n\t\tm := atomicRmwOp(i.u1).String()\n\t\tsize := byte(32)\n\t\tswitch i.u2 {\n\t\tcase 8:\n\t\t\tsize = 64\n\t\tcase 2:\n\t\t\tm = m + \"h\"\n\t\tcase 1:\n\t\t\tm = m + \"b\"\n\t\t}\n\t\tstr = fmt.Sprintf(\"%s %s, %s, %s\", m, formatVRegSized(i.rm.nr(), size), formatVRegSized(i.rd, size), formatVRegSized(i.rn.nr(), 64))\n\tcase atomicCas:\n\t\tm := \"casal\"\n\t\tsize := byte(32)\n\t\tswitch i.u2 {\n\t\tcase 8:\n\t\t\tsize = 64\n\t\tcase 2:\n\t\t\tm = m + \"h\"\n\t\tcase 1:\n\t\t\tm = m + \"b\"\n\t\t}\n\t\tstr = fmt.Sprintf(\"%s %s, %s, %s\", m, formatVRegSized(i.rd, size), formatVRegSized(i.rm.nr(), size), formatVRegSized(i.rn.nr(), 64))\n\tcase atomicLoad:\n\t\tm := \"ldar\"\n\t\tsize := byte(32)\n\t\tswitch i.u2 {\n\t\tcase 8:\n\t\t\tsize = 64\n\t\tcase 2:\n\t\t\tm = m + \"h\"\n\t\tcase 1:\n\t\t\tm = m + \"b\"\n\t\t}\n\t\tstr = fmt.Sprintf(\"%s %s, %s\", m, formatVRegSized(i.rd, size), formatVRegSized(i.rn.nr(), 64))\n\tcase atomicStore:\n\t\tm := \"stlr\"\n\t\tsize := byte(32)\n\t\tswitch i.u2 {\n\t\tcase 8:\n\t\t\tsize = 64\n\t\tcase 2:\n\t\t\tm = m + \"h\"\n\t\tcase 1:\n\t\t\tm = m + \"b\"\n\t\t}\n\t\tstr = fmt.Sprintf(\"%s %s, %s\", m, formatVRegSized(i.rm.nr(), size), formatVRegSized(i.rn.nr(), 64))\n\tcase dmb:\n\t\tstr = \"dmb\"\n\tcase tailCall:\n\t\tstr = fmt.Sprintf(\"b %s\", ssa.FuncRef(i.u1))\n\tcase tailCallInd:\n\t\tstr = fmt.Sprintf(\"b %s\", formatVRegSized(i.rn.nr(), 64))\n\tcase udf:\n\t\tstr = \"udf\"\n\tcase emitSourceOffsetInfo:\n\t\tstr = fmt.Sprintf(\"source_offset_info %d\", ssa.SourceOffset(i.u1))\n\tcase vecLoad1R:\n\t\tstr = fmt.Sprintf(\"ld1r {%s}, [%s]\", formatVRegVec(i.rd, vecArrangement(i.u1), vecIndexNone), formatVRegSized(i.rn.nr(), 64))\n\tcase loadConstBlockArg:\n\t\tstr = fmt.Sprintf(\"load_const_block_arg %s, %#x\", formatVRegSized(i.rd, 64), i.u1)\n\tdefault:\n\t\tpanic(i.kind)\n\t}\n\treturn\n}\n\nfunc (i *instruction) asAdr(rd regalloc.VReg, offset int64) {\n\ti.kind = adr\n\ti.rd = rd\n\ti.u1 = uint64(offset)\n}\n\nfunc (i *instruction) asAtomicRmw(op atomicRmwOp, rn, rs, rt regalloc.VReg, size uint64) {\n\ti.kind = atomicRmw\n\ti.rd, i.rn, i.rm = rt, operandNR(rn), operandNR(rs)\n\ti.u1 = uint64(op)\n\ti.u2 = size\n}\n\nfunc (i *instruction) asAtomicCas(rn, rs, rt regalloc.VReg, size uint64) {\n\ti.kind = atomicCas\n\ti.rm, i.rn, i.rd = operandNR(rt), operandNR(rn), rs\n\ti.u2 = size\n}\n\nfunc (i *instruction) asAtomicLoad(rn, rt regalloc.VReg, size uint64) {\n\ti.kind = atomicLoad\n\ti.rn, i.rd = operandNR(rn), rt\n\ti.u2 = size\n}\n\nfunc (i *instruction) asAtomicStore(rn, rt operand, size uint64) {\n\ti.kind = atomicStore\n\ti.rn, i.rm = rn, rt\n\ti.u2 = size\n}\n\nfunc (i *instruction) asDMB() {\n\ti.kind = dmb\n}\n\nfunc (i *instruction) asTailCall(ref ssa.FuncRef, abi *backend.FunctionABI) {\n\ti.kind = tailCall\n\ti.u1 = uint64(ref)\n\tif abi != nil {\n\t\ti.u2 = abi.ABIInfoAsUint64()\n\t}\n}\n\nfunc (i *instruction) asTailCallIndirect(ptr regalloc.VReg, abi *backend.FunctionABI) {\n\ti.kind = tailCallInd\n\ti.rn = operandNR(ptr)\n\tif abi != nil {\n\t\ti.u2 = abi.ABIInfoAsUint64()\n\t}\n}\n\n// TODO: delete unnecessary things.\nconst (\n\t// nop0 represents a no-op of zero size.\n\tnop0 instructionKind = iota + 1\n\t// aluRRR represents an ALU operation with two register sources and a register destination.\n\taluRRR\n\t// aluRRRR represents an ALU operation with three register sources and a register destination.\n\taluRRRR\n\t// aluRRImm12 represents an ALU operation with a register source and an immediate-12 source, with a register destination.\n\taluRRImm12\n\t// aluRRBitmaskImm represents an ALU operation with a register source and a bitmask immediate, with a register destination.\n\taluRRBitmaskImm\n\t// aluRRImmShift represents an ALU operation with a register source and an immediate-shifted source, with a register destination.\n\taluRRImmShift\n\t// aluRRRShift represents an ALU operation with two register sources, one of which can be shifted, with a register destination.\n\taluRRRShift\n\t// aluRRRExtend represents an ALU operation with two register sources, one of which can be extended, with a register destination.\n\taluRRRExtend\n\t// bitRR represents a bit op instruction with a single register source.\n\tbitRR\n\t// uLoad8 represents an unsigned 8-bit load.\n\tuLoad8\n\t// sLoad8 represents a signed 8-bit load into 64-bit register.\n\tsLoad8\n\t// uLoad16 represents an unsigned 16-bit load into 64-bit register.\n\tuLoad16\n\t// sLoad16 represents a signed 16-bit load into 64-bit register.\n\tsLoad16\n\t// uLoad32 represents an unsigned 32-bit load into 64-bit register.\n\tuLoad32\n\t// sLoad32 represents a signed 32-bit load into 64-bit register.\n\tsLoad32\n\t// uLoad64 represents a 64-bit load.\n\tuLoad64\n\t// store8 represents an 8-bit store.\n\tstore8\n\t// store16 represents a 16-bit store.\n\tstore16\n\t// store32 represents a 32-bit store.\n\tstore32\n\t// store64 represents a 64-bit store.\n\tstore64\n\t// storeP64 represents a store of a pair of registers.\n\tstoreP64\n\t// loadP64 represents a load of a pair of registers.\n\tloadP64\n\t// mov64 represents a MOV instruction. These are encoded as ORR's but we keep them separate for better handling.\n\tmov64\n\t// mov32 represents a 32-bit MOV. This zeroes the top 32 bits of the destination.\n\tmov32\n\t// movZ represents a MOVZ with a 16-bit immediate.\n\tmovZ\n\t// movN represents a MOVN with a 16-bit immediate.\n\tmovN\n\t// movK represents a MOVK with a 16-bit immediate.\n\tmovK\n\t// extend represents a sign- or zero-extend operation.\n\textend\n\t// cSel represents a conditional-select operation.\n\tcSel\n\t// cSet represents a conditional-set operation.\n\tcSet\n\t// cCmpImm represents a conditional comparison with an immediate.\n\tcCmpImm\n\t// fpuMov64 represents a FPU move. Distinct from a vector-register move; moving just 64 bits appears to be significantly faster.\n\tfpuMov64\n\t// fpuMov128 represents a vector register move.\n\tfpuMov128\n\t// fpuMovFromVec represents a move to scalar from a vector element.\n\tfpuMovFromVec\n\t// fpuRR represents a 1-op FPU instruction.\n\tfpuRR\n\t// fpuRRR represents a 2-op FPU instruction.\n\tfpuRRR\n\t// fpuRRI represents a 2-op FPU instruction with immediate value.\n\tfpuRRI\n\t// fpuRRRR represents a 3-op FPU instruction.\n\tfpuRRRR\n\t// fpuCmp represents a FPU comparison, either 32 or 64 bit.\n\tfpuCmp\n\t// fpuLoad32 represents a floating-point load, single-precision (32 bit).\n\tfpuLoad32\n\t// fpuStore32 represents a floating-point store, single-precision (32 bit).\n\tfpuStore32\n\t// fpuLoad64 represents a floating-point load, double-precision (64 bit).\n\tfpuLoad64\n\t// fpuStore64 represents a floating-point store, double-precision (64 bit).\n\tfpuStore64\n\t// fpuLoad128 represents a floating-point/vector load, 128 bit.\n\tfpuLoad128\n\t// fpuStore128 represents a floating-point/vector store, 128 bit.\n\tfpuStore128\n\t// loadFpuConst32 represents a load of a 32-bit floating-point constant.\n\tloadFpuConst32\n\t// loadFpuConst64 represents a load of a 64-bit floating-point constant.\n\tloadFpuConst64\n\t// loadFpuConst128 represents a load of a 128-bit floating-point constant.\n\tloadFpuConst128\n\t// vecLoad1R represents a load of a one single-element structure that replicates to all lanes of a vector.\n\tvecLoad1R\n\t// fpuToInt represents a conversion from FP to integer.\n\tfpuToInt\n\t// intToFpu represents a conversion from integer to FP.\n\tintToFpu\n\t// fpuCSel represents a 32/64-bit FP conditional select.\n\tfpuCSel\n\t// movToVec represents a move to a vector element from a GPR.\n\tmovToVec\n\t// movFromVec represents an unsigned move from a vector element to a GPR.\n\tmovFromVec\n\t// movFromVecSigned represents a signed move from a vector element to a GPR.\n\tmovFromVecSigned\n\t// vecDup represents a duplication of general-purpose register to vector.\n\tvecDup\n\t// vecDupElement represents a duplication of a vector element to vector or scalar.\n\tvecDupElement\n\t// vecDupFromFpu represents a duplication of scalar to vector.\n\tvecDupFromFpu\n\t// vecExtract represents a vector extraction operation.\n\tvecExtract\n\t// vecExtend represents a vector extension operation.\n\tvecExtend\n\t// vecMovElement represents a move vector element to another vector element operation.\n\tvecMovElement\n\t// vecMiscNarrow represents a vector narrowing operation.\n\tvecMiscNarrow\n\t// vecRRR represents a vector ALU operation.\n\tvecRRR\n\t// vecRRRRewrite is exactly the same as vecRRR except that this rewrites the destination register.\n\t// For example, BSL instruction rewrites the destination register, and the existing value influences the result.\n\t// Therefore, the \"destination\" register in vecRRRRewrite will be treated as \"use\" which makes the register outlive\n\t// the instruction while this instruction doesn't have \"def\" in the context of register allocation.\n\tvecRRRRewrite\n\t// vecMisc represents a vector two register miscellaneous instruction.\n\tvecMisc\n\t// vecLanes represents a vector instruction across lanes.\n\tvecLanes\n\t// vecShiftImm represents a SIMD scalar shift by immediate instruction.\n\tvecShiftImm\n\t// vecTbl represents a table vector lookup - single register table.\n\tvecTbl\n\t// vecTbl2 represents a table vector lookup - two register table.\n\tvecTbl2\n\t// vecPermute represents a vector permute instruction.\n\tvecPermute\n\t// movToNZCV represents a move to the FPSR.\n\tmovToFPSR\n\t// movFromNZCV represents a move from the FPSR.\n\tmovFromFPSR\n\t// call represents a machine call instruction.\n\tcall\n\t// callInd represents a machine indirect-call instruction.\n\tcallInd\n\t// ret represents a machine return instruction.\n\tret\n\t// br represents an unconditional branch.\n\tbr\n\t// condBr represents a conditional branch.\n\tcondBr\n\t// adr represents a compute the address (using a PC-relative offset) of a memory location.\n\tadr\n\t// brTableSequence represents a jump-table sequence.\n\tbrTableSequence\n\t// exitSequence consists of multiple instructions, and exits the execution immediately.\n\t// See encodeExitSequence.\n\texitSequence\n\t// atomicRmw represents an atomic read-modify-write operation with two register sources and a register destination.\n\tatomicRmw\n\t// atomicCas represents an atomic compare-and-swap operation with three register sources. The value is loaded to\n\t// the source register containing the comparison value.\n\tatomicCas\n\t// atomicLoad represents an atomic load with one source register and a register destination.\n\tatomicLoad\n\t// atomicStore represents an atomic store with two source registers and no destination.\n\tatomicStore\n\t// dmb represents the data memory barrier instruction in inner-shareable (ish) mode.\n\tdmb\n\t// tailCall represents a tail call instruction.\n\ttailCall\n\t// tailCallInd represents a tail call indirect instruction.\n\ttailCallInd\n\t// UDF is the undefined instruction. For debugging only.\n\tudf\n\t// loadConstBlockArg represents a load of a constant block argument.\n\tloadConstBlockArg\n\n\t// emitSourceOffsetInfo is a dummy instruction to emit source offset info.\n\t// The existence of this instruction does not affect the execution.\n\temitSourceOffsetInfo\n\n\t// ------------------- do not define below this line -------------------\n\tnumInstructionKinds\n)\n\nfunc (i *instruction) asLoadConstBlockArg(v uint64, typ ssa.Type, dst regalloc.VReg) *instruction {\n\ti.kind = loadConstBlockArg\n\ti.u1 = v\n\ti.u2 = uint64(typ)\n\ti.rd = dst\n\treturn i\n}\n\nfunc (i *instruction) loadConstBlockArgData() (v uint64, typ ssa.Type, dst regalloc.VReg) {\n\treturn i.u1, ssa.Type(i.u2), i.rd\n}\n\nfunc (i *instruction) asEmitSourceOffsetInfo(l ssa.SourceOffset) *instruction {\n\ti.kind = emitSourceOffsetInfo\n\ti.u1 = uint64(l)\n\treturn i\n}\n\nfunc (i *instruction) sourceOffsetInfo() ssa.SourceOffset {\n\treturn ssa.SourceOffset(i.u1)\n}\n\nfunc (i *instruction) asUDF() *instruction {\n\ti.kind = udf\n\treturn i\n}\n\nfunc (i *instruction) asFpuToInt(rd regalloc.VReg, rn operand, rdSigned, src64bit, dst64bit bool) {\n\ti.kind = fpuToInt\n\ti.rn = rn\n\ti.rd = rd\n\tif rdSigned {\n\t\ti.u1 = 1\n\t}\n\tif src64bit {\n\t\ti.u2 = 1\n\t}\n\tif dst64bit {\n\t\ti.u2 |= 2\n\t}\n}\n\nfunc (i *instruction) asIntToFpu(rd regalloc.VReg, rn operand, rnSigned, src64bit, dst64bit bool) {\n\ti.kind = intToFpu\n\ti.rn = rn\n\ti.rd = rd\n\tif rnSigned {\n\t\ti.u1 = 1\n\t}\n\tif src64bit {\n\t\ti.u2 = 1\n\t}\n\tif dst64bit {\n\t\ti.u2 |= 2\n\t}\n}\n\nfunc (i *instruction) asExitSequence(ctx regalloc.VReg) *instruction {\n\ti.kind = exitSequence\n\ti.rn = operandNR(ctx)\n\treturn i\n}\n\n// aluOp determines the type of ALU operation. Instructions whose kind is one of\n// aluRRR, aluRRRR, aluRRImm12, aluRRBitmaskImm, aluRRImmShift, aluRRRShift and aluRRRExtend\n// would use this type.\ntype aluOp uint32\n\nfunc (a aluOp) String() string {\n\tswitch a {\n\tcase aluOpAdd:\n\t\treturn \"add\"\n\tcase aluOpSub:\n\t\treturn \"sub\"\n\tcase aluOpOrr:\n\t\treturn \"orr\"\n\tcase aluOpOrn:\n\t\treturn \"orn\"\n\tcase aluOpAnd:\n\t\treturn \"and\"\n\tcase aluOpAnds:\n\t\treturn \"ands\"\n\tcase aluOpBic:\n\t\treturn \"bic\"\n\tcase aluOpEor:\n\t\treturn \"eor\"\n\tcase aluOpAddS:\n\t\treturn \"adds\"\n\tcase aluOpSubS:\n\t\treturn \"subs\"\n\tcase aluOpSMulH:\n\t\treturn \"sMulH\"\n\tcase aluOpUMulH:\n\t\treturn \"uMulH\"\n\tcase aluOpSDiv:\n\t\treturn \"sdiv\"\n\tcase aluOpUDiv:\n\t\treturn \"udiv\"\n\tcase aluOpRotR:\n\t\treturn \"ror\"\n\tcase aluOpLsr:\n\t\treturn \"lsr\"\n\tcase aluOpAsr:\n\t\treturn \"asr\"\n\tcase aluOpLsl:\n\t\treturn \"lsl\"\n\tcase aluOpMAdd:\n\t\treturn \"madd\"\n\tcase aluOpMSub:\n\t\treturn \"msub\"\n\t}\n\tpanic(int(a))\n}\n\nconst (\n\t// 32/64-bit Add.\n\taluOpAdd aluOp = iota\n\t// 32/64-bit Subtract.\n\taluOpSub\n\t// 32/64-bit Bitwise OR.\n\taluOpOrr\n\t// 32/64-bit Bitwise OR NOT.\n\taluOpOrn\n\t// 32/64-bit Bitwise AND.\n\taluOpAnd\n\t// 32/64-bit Bitwise ANDS.\n\taluOpAnds\n\t// 32/64-bit Bitwise AND NOT.\n\taluOpBic\n\t// 32/64-bit Bitwise XOR (Exclusive OR).\n\taluOpEor\n\t// 32/64-bit Add setting flags.\n\taluOpAddS\n\t// 32/64-bit Subtract setting flags.\n\taluOpSubS\n\t// Signed multiply, high-word result.\n\taluOpSMulH\n\t// Unsigned multiply, high-word result.\n\taluOpUMulH\n\t// 64-bit Signed divide.\n\taluOpSDiv\n\t// 64-bit Unsigned divide.\n\taluOpUDiv\n\t// 32/64-bit Rotate right.\n\taluOpRotR\n\t// 32/64-bit Logical shift right.\n\taluOpLsr\n\t// 32/64-bit Arithmetic shift right.\n\taluOpAsr\n\t// 32/64-bit Logical shift left.\n\taluOpLsl /// Multiply-add\n\n\t// MAdd and MSub are only applicable for aluRRRR.\n\taluOpMAdd\n\taluOpMSub\n)\n\n// vecOp determines the type of vector operation. Instructions whose kind is one of\n// vecOpCnt would use this type.\ntype vecOp int\n\n// String implements fmt.Stringer.\nfunc (b vecOp) String() string {\n\tswitch b {\n\tcase vecOpCnt:\n\t\treturn \"cnt\"\n\tcase vecOpCmeq:\n\t\treturn \"cmeq\"\n\tcase vecOpCmgt:\n\t\treturn \"cmgt\"\n\tcase vecOpCmhi:\n\t\treturn \"cmhi\"\n\tcase vecOpCmge:\n\t\treturn \"cmge\"\n\tcase vecOpCmhs:\n\t\treturn \"cmhs\"\n\tcase vecOpFcmeq:\n\t\treturn \"fcmeq\"\n\tcase vecOpFcmgt:\n\t\treturn \"fcmgt\"\n\tcase vecOpFcmge:\n\t\treturn \"fcmge\"\n\tcase vecOpCmeq0:\n\t\treturn \"cmeq0\"\n\tcase vecOpUaddlv:\n\t\treturn \"uaddlv\"\n\tcase vecOpBit:\n\t\treturn \"bit\"\n\tcase vecOpBic:\n\t\treturn \"bic\"\n\tcase vecOpBsl:\n\t\treturn \"bsl\"\n\tcase vecOpNot:\n\t\treturn \"not\"\n\tcase vecOpAnd:\n\t\treturn \"and\"\n\tcase vecOpOrr:\n\t\treturn \"orr\"\n\tcase vecOpEOR:\n\t\treturn \"eor\"\n\tcase vecOpFadd:\n\t\treturn \"fadd\"\n\tcase vecOpAdd:\n\t\treturn \"add\"\n\tcase vecOpAddp:\n\t\treturn \"addp\"\n\tcase vecOpAddv:\n\t\treturn \"addv\"\n\tcase vecOpSub:\n\t\treturn \"sub\"\n\tcase vecOpFsub:\n\t\treturn \"fsub\"\n\tcase vecOpSmin:\n\t\treturn \"smin\"\n\tcase vecOpUmin:\n\t\treturn \"umin\"\n\tcase vecOpUminv:\n\t\treturn \"uminv\"\n\tcase vecOpSmax:\n\t\treturn \"smax\"\n\tcase vecOpUmax:\n\t\treturn \"umax\"\n\tcase vecOpUmaxp:\n\t\treturn \"umaxp\"\n\tcase vecOpUrhadd:\n\t\treturn \"urhadd\"\n\tcase vecOpFmul:\n\t\treturn \"fmul\"\n\tcase vecOpSqrdmulh:\n\t\treturn \"sqrdmulh\"\n\tcase vecOpMul:\n\t\treturn \"mul\"\n\tcase vecOpUmlal:\n\t\treturn \"umlal\"\n\tcase vecOpFdiv:\n\t\treturn \"fdiv\"\n\tcase vecOpFsqrt:\n\t\treturn \"fsqrt\"\n\tcase vecOpAbs:\n\t\treturn \"abs\"\n\tcase vecOpFabs:\n\t\treturn \"fabs\"\n\tcase vecOpNeg:\n\t\treturn \"neg\"\n\tcase vecOpFneg:\n\t\treturn \"fneg\"\n\tcase vecOpFrintp:\n\t\treturn \"frintp\"\n\tcase vecOpFrintm:\n\t\treturn \"frintm\"\n\tcase vecOpFrintn:\n\t\treturn \"frintn\"\n\tcase vecOpFrintz:\n\t\treturn \"frintz\"\n\tcase vecOpFcvtl:\n\t\treturn \"fcvtl\"\n\tcase vecOpFcvtn:\n\t\treturn \"fcvtn\"\n\tcase vecOpFcvtzu:\n\t\treturn \"fcvtzu\"\n\tcase vecOpFcvtzs:\n\t\treturn \"fcvtzs\"\n\tcase vecOpScvtf:\n\t\treturn \"scvtf\"\n\tcase vecOpUcvtf:\n\t\treturn \"ucvtf\"\n\tcase vecOpSqxtn:\n\t\treturn \"sqxtn\"\n\tcase vecOpUqxtn:\n\t\treturn \"uqxtn\"\n\tcase vecOpSqxtun:\n\t\treturn \"sqxtun\"\n\tcase vecOpRev64:\n\t\treturn \"rev64\"\n\tcase vecOpXtn:\n\t\treturn \"xtn\"\n\tcase vecOpShll:\n\t\treturn \"shll\"\n\tcase vecOpSshl:\n\t\treturn \"sshl\"\n\tcase vecOpSshll:\n\t\treturn \"sshll\"\n\tcase vecOpUshl:\n\t\treturn \"ushl\"\n\tcase vecOpUshll:\n\t\treturn \"ushll\"\n\tcase vecOpSshr:\n\t\treturn \"sshr\"\n\tcase vecOpZip1:\n\t\treturn \"zip1\"\n\tcase vecOpFmin:\n\t\treturn \"fmin\"\n\tcase vecOpFmax:\n\t\treturn \"fmax\"\n\tcase vecOpSmull:\n\t\treturn \"smull\"\n\tcase vecOpSmull2:\n\t\treturn \"smull2\"\n\t}\n\tpanic(int(b))\n}\n\nconst (\n\tvecOpCnt vecOp = iota\n\tvecOpCmeq0\n\tvecOpCmeq\n\tvecOpCmgt\n\tvecOpCmhi\n\tvecOpCmge\n\tvecOpCmhs\n\tvecOpFcmeq\n\tvecOpFcmgt\n\tvecOpFcmge\n\tvecOpUaddlv\n\tvecOpBit\n\tvecOpBic\n\tvecOpBsl\n\tvecOpNot\n\tvecOpAnd\n\tvecOpOrr\n\tvecOpEOR\n\tvecOpAdd\n\tvecOpFadd\n\tvecOpAddv\n\tvecOpSqadd\n\tvecOpUqadd\n\tvecOpAddp\n\tvecOpSub\n\tvecOpFsub\n\tvecOpSqsub\n\tvecOpUqsub\n\tvecOpSmin\n\tvecOpUmin\n\tvecOpUminv\n\tvecOpFmin\n\tvecOpSmax\n\tvecOpUmax\n\tvecOpUmaxp\n\tvecOpFmax\n\tvecOpUrhadd\n\tvecOpMul\n\tvecOpFmul\n\tvecOpSqrdmulh\n\tvecOpUmlal\n\tvecOpFdiv\n\tvecOpFsqrt\n\tvecOpAbs\n\tvecOpFabs\n\tvecOpNeg\n\tvecOpFneg\n\tvecOpFrintm\n\tvecOpFrintn\n\tvecOpFrintp\n\tvecOpFrintz\n\tvecOpFcvtl\n\tvecOpFcvtn\n\tvecOpFcvtzs\n\tvecOpFcvtzu\n\tvecOpScvtf\n\tvecOpUcvtf\n\tvecOpSqxtn\n\tvecOpSqxtun\n\tvecOpUqxtn\n\tvecOpRev64\n\tvecOpXtn\n\tvecOpShll\n\tvecOpSshl\n\tvecOpSshll\n\tvecOpUshl\n\tvecOpUshll\n\tvecOpSshr\n\tvecOpZip1\n\tvecOpSmull\n\tvecOpSmull2\n)\n\n// bitOp determines the type of bitwise operation. Instructions whose kind is one of\n// bitOpRbit and bitOpClz would use this type.\ntype bitOp int\n\n// String implements fmt.Stringer.\nfunc (b bitOp) String() string {\n\tswitch b {\n\tcase bitOpRbit:\n\t\treturn \"rbit\"\n\tcase bitOpClz:\n\t\treturn \"clz\"\n\t}\n\tpanic(int(b))\n}\n\nconst (\n\t// 32/64-bit Rbit.\n\tbitOpRbit bitOp = iota\n\t// 32/64-bit Clz.\n\tbitOpClz\n)\n\n// fpuUniOp represents a unary floating-point unit (FPU) operation.\ntype fpuUniOp byte\n\nconst (\n\tfpuUniOpNeg fpuUniOp = iota\n\tfpuUniOpCvt32To64\n\tfpuUniOpCvt64To32\n\tfpuUniOpSqrt\n\tfpuUniOpRoundPlus\n\tfpuUniOpRoundMinus\n\tfpuUniOpRoundZero\n\tfpuUniOpRoundNearest\n\tfpuUniOpAbs\n)\n\n// String implements the fmt.Stringer.\nfunc (f fpuUniOp) String() string {\n\tswitch f {\n\tcase fpuUniOpNeg:\n\t\treturn \"fneg\"\n\tcase fpuUniOpCvt32To64:\n\t\treturn \"fcvt\"\n\tcase fpuUniOpCvt64To32:\n\t\treturn \"fcvt\"\n\tcase fpuUniOpSqrt:\n\t\treturn \"fsqrt\"\n\tcase fpuUniOpRoundPlus:\n\t\treturn \"frintp\"\n\tcase fpuUniOpRoundMinus:\n\t\treturn \"frintm\"\n\tcase fpuUniOpRoundZero:\n\t\treturn \"frintz\"\n\tcase fpuUniOpRoundNearest:\n\t\treturn \"frintn\"\n\tcase fpuUniOpAbs:\n\t\treturn \"fabs\"\n\t}\n\tpanic(int(f))\n}\n\n// fpuBinOp represents a binary floating-point unit (FPU) operation.\ntype fpuBinOp byte\n\nconst (\n\tfpuBinOpAdd = iota\n\tfpuBinOpSub\n\tfpuBinOpMul\n\tfpuBinOpDiv\n\tfpuBinOpMax\n\tfpuBinOpMin\n)\n\n// String implements the fmt.Stringer.\nfunc (f fpuBinOp) String() string {\n\tswitch f {\n\tcase fpuBinOpAdd:\n\t\treturn \"fadd\"\n\tcase fpuBinOpSub:\n\t\treturn \"fsub\"\n\tcase fpuBinOpMul:\n\t\treturn \"fmul\"\n\tcase fpuBinOpDiv:\n\t\treturn \"fdiv\"\n\tcase fpuBinOpMax:\n\t\treturn \"fmax\"\n\tcase fpuBinOpMin:\n\t\treturn \"fmin\"\n\t}\n\tpanic(int(f))\n}\n\n// extMode represents the mode of a register operand extension.\n// For example, aluRRRExtend instructions need this info to determine the extensions.\ntype extMode byte\n\nconst (\n\textModeNone extMode = iota\n\t// extModeZeroExtend64 suggests a zero-extension to 32 bits if the original bit size is less than 32.\n\textModeZeroExtend32\n\t// extModeSignExtend64 stands for a sign-extension to 32 bits if the original bit size is less than 32.\n\textModeSignExtend32\n\t// extModeZeroExtend64 suggests a zero-extension to 64 bits if the original bit size is less than 64.\n\textModeZeroExtend64\n\t// extModeSignExtend64 stands for a sign-extension to 64 bits if the original bit size is less than 64.\n\textModeSignExtend64\n)\n\nfunc (e extMode) bits() byte {\n\tswitch e {\n\tcase extModeZeroExtend32, extModeSignExtend32:\n\t\treturn 32\n\tcase extModeZeroExtend64, extModeSignExtend64:\n\t\treturn 64\n\tdefault:\n\t\treturn 0\n\t}\n}\n\nfunc (e extMode) signed() bool {\n\tswitch e {\n\tcase extModeSignExtend32, extModeSignExtend64:\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\nfunc extModeOf(t ssa.Type, signed bool) extMode {\n\tswitch t.Bits() {\n\tcase 32:\n\t\tif signed {\n\t\t\treturn extModeSignExtend32\n\t\t}\n\t\treturn extModeZeroExtend32\n\tcase 64:\n\t\tif signed {\n\t\t\treturn extModeSignExtend64\n\t\t}\n\t\treturn extModeZeroExtend64\n\tdefault:\n\t\tpanic(\"TODO? do we need narrower than 32 bits?\")\n\t}\n}\n\ntype extendOp byte\n\nconst (\n\textendOpUXTB extendOp = 0b000\n\textendOpUXTH extendOp = 0b001\n\textendOpUXTW extendOp = 0b010\n\t// extendOpUXTX does nothing, but convenient symbol that officially exists. See:\n\t// https://stackoverflow.com/questions/72041372/what-do-the-uxtx-and-sxtx-extensions-mean-for-32-bit-aarch64-adds-instruct\n\textendOpUXTX extendOp = 0b011\n\textendOpSXTB extendOp = 0b100\n\textendOpSXTH extendOp = 0b101\n\textendOpSXTW extendOp = 0b110\n\t// extendOpSXTX does nothing, but convenient symbol that officially exists. See:\n\t// https://stackoverflow.com/questions/72041372/what-do-the-uxtx-and-sxtx-extensions-mean-for-32-bit-aarch64-adds-instruct\n\textendOpSXTX extendOp = 0b111\n\textendOpNone extendOp = 0xff\n)\n\nfunc (e extendOp) srcBits() byte {\n\tswitch e {\n\tcase extendOpUXTB, extendOpSXTB:\n\t\treturn 8\n\tcase extendOpUXTH, extendOpSXTH:\n\t\treturn 16\n\tcase extendOpUXTW, extendOpSXTW:\n\t\treturn 32\n\tcase extendOpUXTX, extendOpSXTX:\n\t\treturn 64\n\t}\n\tpanic(int(e))\n}\n\nfunc (e extendOp) String() string {\n\tswitch e {\n\tcase extendOpUXTB:\n\t\treturn \"UXTB\"\n\tcase extendOpUXTH:\n\t\treturn \"UXTH\"\n\tcase extendOpUXTW:\n\t\treturn \"UXTW\"\n\tcase extendOpUXTX:\n\t\treturn \"UXTX\"\n\tcase extendOpSXTB:\n\t\treturn \"SXTB\"\n\tcase extendOpSXTH:\n\t\treturn \"SXTH\"\n\tcase extendOpSXTW:\n\t\treturn \"SXTW\"\n\tcase extendOpSXTX:\n\t\treturn \"SXTX\"\n\t}\n\tpanic(int(e))\n}\n\nfunc extendOpFrom(signed bool, from byte) extendOp {\n\tswitch from {\n\tcase 8:\n\t\tif signed {\n\t\t\treturn extendOpSXTB\n\t\t}\n\t\treturn extendOpUXTB\n\tcase 16:\n\t\tif signed {\n\t\t\treturn extendOpSXTH\n\t\t}\n\t\treturn extendOpUXTH\n\tcase 32:\n\t\tif signed {\n\t\t\treturn extendOpSXTW\n\t\t}\n\t\treturn extendOpUXTW\n\tcase 64:\n\t\tif signed {\n\t\t\treturn extendOpSXTX\n\t\t}\n\t\treturn extendOpUXTX\n\t}\n\tpanic(\"invalid extendOpFrom\")\n}\n\ntype shiftOp byte\n\nconst (\n\tshiftOpLSL shiftOp = 0b00\n\tshiftOpLSR shiftOp = 0b01\n\tshiftOpASR shiftOp = 0b10\n\tshiftOpROR shiftOp = 0b11\n)\n\nfunc (s shiftOp) String() string {\n\tswitch s {\n\tcase shiftOpLSL:\n\t\treturn \"lsl\"\n\tcase shiftOpLSR:\n\t\treturn \"lsr\"\n\tcase shiftOpASR:\n\t\treturn \"asr\"\n\tcase shiftOpROR:\n\t\treturn \"ror\"\n\t}\n\tpanic(int(s))\n}\n\nconst exitSequenceSize = 6 * 4 // 6 instructions as in encodeExitSequence.\n\n// size returns the size of the instruction in encoded bytes.\nfunc (i *instruction) size() int64 {\n\tswitch i.kind {\n\tcase exitSequence:\n\t\treturn exitSequenceSize // 5 instructions as in encodeExitSequence.\n\tcase nop0, loadConstBlockArg:\n\t\treturn 0\n\tcase emitSourceOffsetInfo:\n\t\treturn 0\n\tcase loadFpuConst32:\n\t\tif i.u1 == 0 {\n\t\t\treturn 4 // zero loading can be encoded as a single instruction.\n\t\t}\n\t\treturn 4 + 4 + 4\n\tcase loadFpuConst64:\n\t\tif i.u1 == 0 {\n\t\t\treturn 4 // zero loading can be encoded as a single instruction.\n\t\t}\n\t\treturn 4 + 4 + 8\n\tcase loadFpuConst128:\n\t\tif i.u1 == 0 && i.u2 == 0 {\n\t\t\treturn 4 // zero loading can be encoded as a single instruction.\n\t\t}\n\t\treturn 4 + 4 + 16\n\tcase brTableSequence:\n\t\treturn 4*4 + int64(i.u2)*4\n\tdefault:\n\t\treturn 4\n\t}\n}\n\n// vecArrangement is the arrangement of data within a vector register.\ntype vecArrangement byte\n\nconst (\n\t// vecArrangementNone is an arrangement indicating no data is stored.\n\tvecArrangementNone vecArrangement = iota\n\t// vecArrangement8B is an arrangement of 8 bytes (64-bit vector)\n\tvecArrangement8B\n\t// vecArrangement16B is an arrangement of 16 bytes (128-bit vector)\n\tvecArrangement16B\n\t// vecArrangement4H is an arrangement of 4 half precisions (64-bit vector)\n\tvecArrangement4H\n\t// vecArrangement8H is an arrangement of 8 half precisions (128-bit vector)\n\tvecArrangement8H\n\t// vecArrangement2S is an arrangement of 2 single precisions (64-bit vector)\n\tvecArrangement2S\n\t// vecArrangement4S is an arrangement of 4 single precisions (128-bit vector)\n\tvecArrangement4S\n\t// vecArrangement1D is an arrangement of 1 double precision (64-bit vector)\n\tvecArrangement1D\n\t// vecArrangement2D is an arrangement of 2 double precisions (128-bit vector)\n\tvecArrangement2D\n\n\t// Assign each vector size specifier to a vector arrangement ID.\n\t// Instructions can only have an arrangement or a size specifier, but not both, so it\n\t// simplifies the internal representation of vector instructions by being able to\n\t// store either into the same field.\n\n\t// vecArrangementB is a size specifier of byte\n\tvecArrangementB\n\t// vecArrangementH is a size specifier of word (16-bit)\n\tvecArrangementH\n\t// vecArrangementS is a size specifier of double word (32-bit)\n\tvecArrangementS\n\t// vecArrangementD is a size specifier of quad word (64-bit)\n\tvecArrangementD\n\t// vecArrangementQ is a size specifier of the entire vector (128-bit)\n\tvecArrangementQ\n)\n\n// String implements fmt.Stringer\nfunc (v vecArrangement) String() (ret string) {\n\tswitch v {\n\tcase vecArrangement8B:\n\t\tret = \"8B\"\n\tcase vecArrangement16B:\n\t\tret = \"16B\"\n\tcase vecArrangement4H:\n\t\tret = \"4H\"\n\tcase vecArrangement8H:\n\t\tret = \"8H\"\n\tcase vecArrangement2S:\n\t\tret = \"2S\"\n\tcase vecArrangement4S:\n\t\tret = \"4S\"\n\tcase vecArrangement1D:\n\t\tret = \"1D\"\n\tcase vecArrangement2D:\n\t\tret = \"2D\"\n\tcase vecArrangementB:\n\t\tret = \"B\"\n\tcase vecArrangementH:\n\t\tret = \"H\"\n\tcase vecArrangementS:\n\t\tret = \"S\"\n\tcase vecArrangementD:\n\t\tret = \"D\"\n\tcase vecArrangementQ:\n\t\tret = \"Q\"\n\tcase vecArrangementNone:\n\t\tret = \"none\"\n\tdefault:\n\t\tpanic(v)\n\t}\n\treturn\n}\n\n// vecIndex is the index of an element of a vector register\ntype vecIndex byte\n\n// vecIndexNone indicates no vector index specified.\nconst vecIndexNone = ^vecIndex(0)\n\nfunc ssaLaneToArrangement(lane ssa.VecLane) vecArrangement {\n\tswitch lane {\n\tcase ssa.VecLaneI8x16:\n\t\treturn vecArrangement16B\n\tcase ssa.VecLaneI16x8:\n\t\treturn vecArrangement8H\n\tcase ssa.VecLaneI32x4:\n\t\treturn vecArrangement4S\n\tcase ssa.VecLaneI64x2:\n\t\treturn vecArrangement2D\n\tcase ssa.VecLaneF32x4:\n\t\treturn vecArrangement4S\n\tcase ssa.VecLaneF64x2:\n\t\treturn vecArrangement2D\n\tdefault:\n\t\tpanic(lane)\n\t}\n}\n\n// atomicRmwOp is the type of atomic read-modify-write operation.\ntype atomicRmwOp byte\n\nconst (\n\t// atomicRmwOpAdd is an atomic add operation.\n\tatomicRmwOpAdd atomicRmwOp = iota\n\t// atomicRmwOpClr is an atomic clear operation, i.e. AND NOT.\n\tatomicRmwOpClr\n\t// atomicRmwOpSet is an atomic set operation, i.e. OR.\n\tatomicRmwOpSet\n\t// atomicRmwOpEor is an atomic exclusive OR operation.\n\tatomicRmwOpEor\n\t// atomicRmwOpSwp is an atomic swap operation.\n\tatomicRmwOpSwp\n)\n\n// String implements fmt.Stringer\nfunc (a atomicRmwOp) String() string {\n\tswitch a {\n\tcase atomicRmwOpAdd:\n\t\treturn \"ldaddal\"\n\tcase atomicRmwOpClr:\n\t\treturn \"ldclral\"\n\tcase atomicRmwOpSet:\n\t\treturn \"ldsetal\"\n\tcase atomicRmwOpEor:\n\t\treturn \"ldeoral\"\n\tcase atomicRmwOpSwp:\n\t\treturn \"swpal\"\n\t}\n\tpanic(fmt.Sprintf(\"unknown atomicRmwOp: %d\", a))\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/arm64/instr_encoding.go",
    "content": "package arm64\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/backend\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/backend/regalloc\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi\"\n)\n\n// Encode implements backend.Machine Encode.\nfunc (m *machine) Encode(ctx context.Context) error {\n\tm.resolveRelativeAddresses(ctx)\n\tm.encode(m.rootInstr)\n\tif l := len(m.compiler.Buf()); l > maxFunctionExecutableSize {\n\t\treturn fmt.Errorf(\"function size exceeds the limit: %d > %d\", l, maxFunctionExecutableSize)\n\t}\n\treturn nil\n}\n\nfunc (m *machine) encode(root *instruction) {\n\tfor cur := root; cur != nil; cur = cur.next {\n\t\tcur.encode(m)\n\t}\n}\n\nfunc (i *instruction) encode(m *machine) {\n\tc := m.compiler\n\tswitch kind := i.kind; kind {\n\tcase nop0, emitSourceOffsetInfo, loadConstBlockArg:\n\tcase exitSequence:\n\t\tencodeExitSequence(c, i.rn.reg())\n\tcase ret:\n\t\t// https://developer.arm.com/documentation/ddi0596/2020-12/Base-Instructions/RET--Return-from-subroutine-?lang=en\n\t\tc.Emit4Bytes(encodeRet())\n\tcase br:\n\t\timm := i.brOffset()\n\t\tc.Emit4Bytes(encodeUnconditionalBranch(false, imm))\n\tcase call:\n\t\t// We still don't know the exact address of the function to call, so we emit a placeholder.\n\t\tc.AddRelocationInfo(i.callFuncRef(), false)\n\t\tc.Emit4Bytes(encodeUnconditionalBranch(true, 0)) // 0 = placeholder\n\tcase callInd:\n\t\tc.Emit4Bytes(encodeUnconditionalBranchReg(regNumberInEncoding[i.rn.realReg()], true))\n\tcase store8, store16, store32, store64, fpuStore32, fpuStore64, fpuStore128:\n\t\tc.Emit4Bytes(encodeLoadOrStore(i.kind, regNumberInEncoding[i.rn.realReg()], *i.getAmode()))\n\tcase uLoad8, uLoad16, uLoad32, uLoad64, sLoad8, sLoad16, sLoad32, fpuLoad32, fpuLoad64, fpuLoad128:\n\t\tc.Emit4Bytes(encodeLoadOrStore(i.kind, regNumberInEncoding[i.rd.RealReg()], *i.getAmode()))\n\tcase vecLoad1R:\n\t\tc.Emit4Bytes(encodeVecLoad1R(\n\t\t\tregNumberInEncoding[i.rd.RealReg()],\n\t\t\tregNumberInEncoding[i.rn.realReg()],\n\t\t\tvecArrangement(i.u1)))\n\tcase condBr:\n\t\timm19 := i.condBrOffset()\n\t\tif imm19%4 != 0 {\n\t\t\tpanic(\"imm26 for branch must be a multiple of 4\")\n\t\t}\n\n\t\timm19U32 := uint32(imm19/4) & 0b111_11111111_11111111\n\t\tbrCond := i.condBrCond()\n\t\tswitch brCond.kind() {\n\t\tcase condKindRegisterZero:\n\t\t\trt := regNumberInEncoding[brCond.register().RealReg()]\n\t\t\tc.Emit4Bytes(encodeCBZCBNZ(rt, false, imm19U32, i.condBr64bit()))\n\t\tcase condKindRegisterNotZero:\n\t\t\trt := regNumberInEncoding[brCond.register().RealReg()]\n\t\t\tc.Emit4Bytes(encodeCBZCBNZ(rt, true, imm19U32, i.condBr64bit()))\n\t\tcase condKindCondFlagSet:\n\t\t\t// https://developer.arm.com/documentation/ddi0596/2021-12/Base-Instructions/B-cond--Branch-conditionally-\n\t\t\tfl := brCond.flag()\n\t\t\tc.Emit4Bytes(0b01010100<<24 | (imm19U32 << 5) | uint32(fl))\n\t\tdefault:\n\t\t\tpanic(\"BUG\")\n\t\t}\n\tcase movN:\n\t\tc.Emit4Bytes(encodeMoveWideImmediate(0b00, regNumberInEncoding[i.rd.RealReg()], i.u1, uint32(i.u2), uint32(i.u2>>32)))\n\tcase movZ:\n\t\tc.Emit4Bytes(encodeMoveWideImmediate(0b10, regNumberInEncoding[i.rd.RealReg()], i.u1, uint32(i.u2), uint32(i.u2>>32)))\n\tcase movK:\n\t\tc.Emit4Bytes(encodeMoveWideImmediate(0b11, regNumberInEncoding[i.rd.RealReg()], i.u1, uint32(i.u2), uint32(i.u2>>32)))\n\tcase mov32:\n\t\tto, from := i.rd.RealReg(), i.rn.realReg()\n\t\tc.Emit4Bytes(encodeAsMov32(regNumberInEncoding[from], regNumberInEncoding[to]))\n\tcase mov64:\n\t\tto, from := i.rd.RealReg(), i.rn.realReg()\n\t\ttoIsSp := to == sp\n\t\tfromIsSp := from == sp\n\t\tc.Emit4Bytes(encodeMov64(regNumberInEncoding[to], regNumberInEncoding[from], toIsSp, fromIsSp))\n\tcase loadP64, storeP64:\n\t\trt, rt2 := regNumberInEncoding[i.rn.realReg()], regNumberInEncoding[i.rm.realReg()]\n\t\tamode := i.getAmode()\n\t\trn := regNumberInEncoding[amode.rn.RealReg()]\n\t\tvar pre bool\n\t\tswitch amode.kind {\n\t\tcase addressModeKindPostIndex:\n\t\tcase addressModeKindPreIndex:\n\t\t\tpre = true\n\t\tdefault:\n\t\t\tpanic(\"BUG\")\n\t\t}\n\t\tc.Emit4Bytes(encodePreOrPostIndexLoadStorePair64(pre, kind == loadP64, rn, rt, rt2, amode.imm))\n\tcase loadFpuConst32:\n\t\trd := regNumberInEncoding[i.rd.RealReg()]\n\t\tif i.u1 == 0 {\n\t\t\tc.Emit4Bytes(encodeVecRRR(vecOpEOR, rd, rd, rd, vecArrangement8B))\n\t\t} else {\n\t\t\tencodeLoadFpuConst32(c, rd, i.u1)\n\t\t}\n\tcase loadFpuConst64:\n\t\trd := regNumberInEncoding[i.rd.RealReg()]\n\t\tif i.u1 == 0 {\n\t\t\tc.Emit4Bytes(encodeVecRRR(vecOpEOR, rd, rd, rd, vecArrangement8B))\n\t\t} else {\n\t\t\tencodeLoadFpuConst64(c, regNumberInEncoding[i.rd.RealReg()], i.u1)\n\t\t}\n\tcase loadFpuConst128:\n\t\trd := regNumberInEncoding[i.rd.RealReg()]\n\t\tlo, hi := i.u1, i.u2\n\t\tif lo == 0 && hi == 0 {\n\t\t\tc.Emit4Bytes(encodeVecRRR(vecOpEOR, rd, rd, rd, vecArrangement16B))\n\t\t} else {\n\t\t\tencodeLoadFpuConst128(c, rd, lo, hi)\n\t\t}\n\tcase aluRRRR:\n\t\tc.Emit4Bytes(encodeAluRRRR(\n\t\t\taluOp(i.u1),\n\t\t\tregNumberInEncoding[i.rd.RealReg()],\n\t\t\tregNumberInEncoding[i.rn.realReg()],\n\t\t\tregNumberInEncoding[i.rm.realReg()],\n\t\t\tregNumberInEncoding[regalloc.VReg(i.u2).RealReg()],\n\t\t\tuint32(i.u1>>32),\n\t\t))\n\tcase aluRRImmShift:\n\t\tc.Emit4Bytes(encodeAluRRImm(\n\t\t\taluOp(i.u1),\n\t\t\tregNumberInEncoding[i.rd.RealReg()],\n\t\t\tregNumberInEncoding[i.rn.realReg()],\n\t\t\tuint32(i.rm.shiftImm()),\n\t\t\tuint32(i.u2>>32),\n\t\t))\n\tcase aluRRR:\n\t\trn := i.rn.realReg()\n\t\tc.Emit4Bytes(encodeAluRRR(\n\t\t\taluOp(i.u1),\n\t\t\tregNumberInEncoding[i.rd.RealReg()],\n\t\t\tregNumberInEncoding[rn],\n\t\t\tregNumberInEncoding[i.rm.realReg()],\n\t\t\ti.u2>>32 == 1,\n\t\t\trn == sp,\n\t\t))\n\tcase aluRRRExtend:\n\t\trm, exo, to := i.rm.er()\n\t\tc.Emit4Bytes(encodeAluRRRExtend(\n\t\t\taluOp(i.u1),\n\t\t\tregNumberInEncoding[i.rd.RealReg()],\n\t\t\tregNumberInEncoding[i.rn.realReg()],\n\t\t\tregNumberInEncoding[rm.RealReg()],\n\t\t\texo,\n\t\t\tto,\n\t\t))\n\tcase aluRRRShift:\n\t\tr, amt, sop := i.rm.sr()\n\t\tc.Emit4Bytes(encodeAluRRRShift(\n\t\t\taluOp(i.u1),\n\t\t\tregNumberInEncoding[i.rd.RealReg()],\n\t\t\tregNumberInEncoding[i.rn.realReg()],\n\t\t\tregNumberInEncoding[r.RealReg()],\n\t\t\tuint32(amt),\n\t\t\tsop,\n\t\t\ti.u2>>32 == 1,\n\t\t))\n\tcase aluRRBitmaskImm:\n\t\tc.Emit4Bytes(encodeAluBitmaskImmediate(\n\t\t\taluOp(i.u1),\n\t\t\tregNumberInEncoding[i.rd.RealReg()],\n\t\t\tregNumberInEncoding[i.rn.realReg()],\n\t\t\ti.u2,\n\t\t\ti.u1>>32 == 1,\n\t\t))\n\tcase bitRR:\n\t\tc.Emit4Bytes(encodeBitRR(\n\t\t\tbitOp(i.u1),\n\t\t\tregNumberInEncoding[i.rd.RealReg()],\n\t\t\tregNumberInEncoding[i.rn.realReg()],\n\t\t\tuint32(i.u2)),\n\t\t)\n\tcase aluRRImm12:\n\t\timm12, shift := i.rm.imm12()\n\t\tc.Emit4Bytes(encodeAluRRImm12(\n\t\t\taluOp(i.u1),\n\t\t\tregNumberInEncoding[i.rd.RealReg()],\n\t\t\tregNumberInEncoding[i.rn.realReg()],\n\t\t\timm12, shift,\n\t\t\ti.u2>>32 == 1,\n\t\t))\n\tcase fpuRRR:\n\t\tc.Emit4Bytes(encodeFpuRRR(\n\t\t\tfpuBinOp(i.u1),\n\t\t\tregNumberInEncoding[i.rd.RealReg()],\n\t\t\tregNumberInEncoding[i.rn.realReg()],\n\t\t\tregNumberInEncoding[i.rm.realReg()],\n\t\t\ti.u2 == 1,\n\t\t))\n\tcase fpuMov64, fpuMov128:\n\t\t// https://developer.arm.com/documentation/ddi0596/2021-12/SIMD-FP-Instructions/MOV--vector---Move-vector--an-alias-of-ORR--vector--register--\n\t\trd := regNumberInEncoding[i.rd.RealReg()]\n\t\trn := regNumberInEncoding[i.rn.realReg()]\n\t\tvar q uint32\n\t\tif kind == fpuMov128 {\n\t\t\tq = 0b1\n\t\t}\n\t\tc.Emit4Bytes(q<<30 | 0b1110101<<21 | rn<<16 | 0b000111<<10 | rn<<5 | rd)\n\tcase cSet:\n\t\trd := regNumberInEncoding[i.rd.RealReg()]\n\t\tcf := condFlag(i.u1)\n\t\tif i.u2 == 1 {\n\t\t\t// https://developer.arm.com/documentation/ddi0602/2022-03/Base-Instructions/CSETM--Conditional-Set-Mask--an-alias-of-CSINV-\n\t\t\t// Note that we set 64bit version here.\n\t\t\tc.Emit4Bytes(0b1101101010011111<<16 | uint32(cf.invert())<<12 | 0b011111<<5 | rd)\n\t\t} else {\n\t\t\t// https://developer.arm.com/documentation/ddi0602/2022-06/Base-Instructions/CSET--Conditional-Set--an-alias-of-CSINC-\n\t\t\t// Note that we set 64bit version here.\n\t\t\tc.Emit4Bytes(0b1001101010011111<<16 | uint32(cf.invert())<<12 | 0b111111<<5 | rd)\n\t\t}\n\tcase extend:\n\t\tc.Emit4Bytes(encodeExtend((i.u2>>32) == 1, byte(i.u1), byte(i.u2), regNumberInEncoding[i.rd.RealReg()], regNumberInEncoding[i.rn.realReg()]))\n\tcase fpuCmp:\n\t\t// https://developer.arm.com/documentation/ddi0596/2020-12/SIMD-FP-Instructions/FCMP--Floating-point-quiet-Compare--scalar--?lang=en\n\t\trn, rm := regNumberInEncoding[i.rn.realReg()], regNumberInEncoding[i.rm.realReg()]\n\t\tvar ftype uint32\n\t\tif i.u1 == 1 {\n\t\t\tftype = 0b01 // double precision.\n\t\t}\n\t\tc.Emit4Bytes(0b1111<<25 | ftype<<22 | 1<<21 | rm<<16 | 0b1<<13 | rn<<5)\n\tcase udf:\n\t\t// https://developer.arm.com/documentation/ddi0596/2020-12/Base-Instructions/UDF--Permanently-Undefined-?lang=en\n\t\tif wazevoapi.PrintMachineCodeHexPerFunctionDisassemblable {\n\t\t\tc.Emit4Bytes(dummyInstruction)\n\t\t} else {\n\t\t\tc.Emit4Bytes(0)\n\t\t}\n\tcase adr:\n\t\tc.Emit4Bytes(encodeAdr(regNumberInEncoding[i.rd.RealReg()], uint32(i.u1)))\n\tcase cSel:\n\t\tc.Emit4Bytes(encodeConditionalSelect(\n\t\t\tkind,\n\t\t\tregNumberInEncoding[i.rd.RealReg()],\n\t\t\tregNumberInEncoding[i.rn.realReg()],\n\t\t\tregNumberInEncoding[i.rm.realReg()],\n\t\t\tcondFlag(i.u1),\n\t\t\ti.u2 == 1,\n\t\t))\n\tcase fpuCSel:\n\t\tc.Emit4Bytes(encodeFpuCSel(\n\t\t\tregNumberInEncoding[i.rd.RealReg()],\n\t\t\tregNumberInEncoding[i.rn.realReg()],\n\t\t\tregNumberInEncoding[i.rm.realReg()],\n\t\t\tcondFlag(i.u1),\n\t\t\ti.u2 == 1,\n\t\t))\n\tcase movToVec:\n\t\tc.Emit4Bytes(encodeMoveToVec(\n\t\t\tregNumberInEncoding[i.rd.RealReg()],\n\t\t\tregNumberInEncoding[i.rn.realReg()],\n\t\t\tvecArrangement(byte(i.u1)),\n\t\t\tvecIndex(i.u2),\n\t\t))\n\tcase movFromVec, movFromVecSigned:\n\t\tc.Emit4Bytes(encodeMoveFromVec(\n\t\t\tregNumberInEncoding[i.rd.RealReg()],\n\t\t\tregNumberInEncoding[i.rn.realReg()],\n\t\t\tvecArrangement(byte(i.u1)),\n\t\t\tvecIndex(i.u2),\n\t\t\ti.kind == movFromVecSigned,\n\t\t))\n\tcase vecDup:\n\t\tc.Emit4Bytes(encodeVecDup(\n\t\t\tregNumberInEncoding[i.rd.RealReg()],\n\t\t\tregNumberInEncoding[i.rn.realReg()],\n\t\t\tvecArrangement(byte(i.u1))))\n\tcase vecDupElement:\n\t\tc.Emit4Bytes(encodeVecDupElement(\n\t\t\tregNumberInEncoding[i.rd.RealReg()],\n\t\t\tregNumberInEncoding[i.rn.realReg()],\n\t\t\tvecArrangement(byte(i.u1)),\n\t\t\tvecIndex(i.u2)))\n\tcase vecExtract:\n\t\tc.Emit4Bytes(encodeVecExtract(\n\t\t\tregNumberInEncoding[i.rd.RealReg()],\n\t\t\tregNumberInEncoding[i.rn.realReg()],\n\t\t\tregNumberInEncoding[i.rm.realReg()],\n\t\t\tvecArrangement(byte(i.u1)),\n\t\t\tuint32(i.u2)))\n\tcase vecPermute:\n\t\tc.Emit4Bytes(encodeVecPermute(\n\t\t\tvecOp(i.u1),\n\t\t\tregNumberInEncoding[i.rd.RealReg()],\n\t\t\tregNumberInEncoding[i.rn.realReg()],\n\t\t\tregNumberInEncoding[i.rm.realReg()],\n\t\t\tvecArrangement(byte(i.u2))))\n\tcase vecMovElement:\n\t\tc.Emit4Bytes(encodeVecMovElement(\n\t\t\tregNumberInEncoding[i.rd.RealReg()],\n\t\t\tregNumberInEncoding[i.rn.realReg()],\n\t\t\tvecArrangement(i.u1),\n\t\t\tuint32(i.u2), uint32(i.u2>>32),\n\t\t))\n\tcase vecMisc:\n\t\tc.Emit4Bytes(encodeAdvancedSIMDTwoMisc(\n\t\t\tvecOp(i.u1),\n\t\t\tregNumberInEncoding[i.rd.RealReg()],\n\t\t\tregNumberInEncoding[i.rn.realReg()],\n\t\t\tvecArrangement(i.u2),\n\t\t))\n\tcase vecLanes:\n\t\tc.Emit4Bytes(encodeVecLanes(\n\t\t\tvecOp(i.u1),\n\t\t\tregNumberInEncoding[i.rd.RealReg()],\n\t\t\tregNumberInEncoding[i.rn.realReg()],\n\t\t\tvecArrangement(i.u2),\n\t\t))\n\tcase vecShiftImm:\n\t\tc.Emit4Bytes(encodeVecShiftImm(\n\t\t\tvecOp(i.u1),\n\t\t\tregNumberInEncoding[i.rd.RealReg()],\n\t\t\tregNumberInEncoding[i.rn.realReg()],\n\t\t\tuint32(i.rm.shiftImm()),\n\t\t\tvecArrangement(i.u2),\n\t\t))\n\tcase vecTbl:\n\t\tc.Emit4Bytes(encodeVecTbl(\n\t\t\t1,\n\t\t\tregNumberInEncoding[i.rd.RealReg()],\n\t\t\tregNumberInEncoding[i.rn.realReg()],\n\t\t\tregNumberInEncoding[i.rm.realReg()],\n\t\t\tvecArrangement(i.u2)),\n\t\t)\n\tcase vecTbl2:\n\t\tc.Emit4Bytes(encodeVecTbl(\n\t\t\t2,\n\t\t\tregNumberInEncoding[i.rd.RealReg()],\n\t\t\tregNumberInEncoding[i.rn.realReg()],\n\t\t\tregNumberInEncoding[i.rm.realReg()],\n\t\t\tvecArrangement(i.u2)),\n\t\t)\n\tcase brTableSequence:\n\t\ttargets := m.jmpTableTargets[i.u1]\n\t\tencodeBrTableSequence(c, i.rn.reg(), targets)\n\tcase fpuToInt, intToFpu:\n\t\tc.Emit4Bytes(encodeCnvBetweenFloatInt(i))\n\tcase fpuRR:\n\t\tc.Emit4Bytes(encodeFloatDataOneSource(\n\t\t\tfpuUniOp(i.u1),\n\t\t\tregNumberInEncoding[i.rd.RealReg()],\n\t\t\tregNumberInEncoding[i.rn.realReg()],\n\t\t\ti.u2 == 1,\n\t\t))\n\tcase vecRRR:\n\t\tif op := vecOp(i.u1); op == vecOpBsl || op == vecOpBit || op == vecOpUmlal {\n\t\t\tpanic(fmt.Sprintf(\"vecOp %s must use vecRRRRewrite instead of vecRRR\", op.String()))\n\t\t}\n\t\tfallthrough\n\tcase vecRRRRewrite:\n\t\tc.Emit4Bytes(encodeVecRRR(\n\t\t\tvecOp(i.u1),\n\t\t\tregNumberInEncoding[i.rd.RealReg()],\n\t\t\tregNumberInEncoding[i.rn.realReg()],\n\t\t\tregNumberInEncoding[i.rm.realReg()],\n\t\t\tvecArrangement(i.u2),\n\t\t))\n\tcase cCmpImm:\n\t\t// Conditional compare (immediate) in https://developer.arm.com/documentation/ddi0596/2020-12/Index-by-Encoding/Data-Processing----Register?lang=en\n\t\tsf := uint32((i.u2 >> 32) & 0b1)\n\t\tnzcv := uint32(i.u2 & 0b1111)\n\t\tcond := uint32(condFlag(i.u1))\n\t\timm := uint32(i.rm.data & 0b11111)\n\t\trn := regNumberInEncoding[i.rn.realReg()]\n\t\tc.Emit4Bytes(\n\t\t\tsf<<31 | 0b111101001<<22 | imm<<16 | cond<<12 | 0b1<<11 | rn<<5 | nzcv,\n\t\t)\n\tcase movFromFPSR:\n\t\trt := regNumberInEncoding[i.rd.RealReg()]\n\t\tc.Emit4Bytes(encodeSystemRegisterMove(rt, true))\n\tcase movToFPSR:\n\t\trt := regNumberInEncoding[i.rn.realReg()]\n\t\tc.Emit4Bytes(encodeSystemRegisterMove(rt, false))\n\tcase atomicRmw:\n\t\tc.Emit4Bytes(encodeAtomicRmw(\n\t\t\tatomicRmwOp(i.u1),\n\t\t\tregNumberInEncoding[i.rm.realReg()],\n\t\t\tregNumberInEncoding[i.rd.RealReg()],\n\t\t\tregNumberInEncoding[i.rn.realReg()],\n\t\t\tuint32(i.u2),\n\t\t))\n\tcase atomicCas:\n\t\tc.Emit4Bytes(encodeAtomicCas(\n\t\t\tregNumberInEncoding[i.rd.RealReg()],\n\t\t\tregNumberInEncoding[i.rm.realReg()],\n\t\t\tregNumberInEncoding[i.rn.realReg()],\n\t\t\tuint32(i.u2),\n\t\t))\n\tcase atomicLoad:\n\t\tc.Emit4Bytes(encodeAtomicLoadStore(\n\t\t\tregNumberInEncoding[i.rn.realReg()],\n\t\t\tregNumberInEncoding[i.rd.RealReg()],\n\t\t\tuint32(i.u2),\n\t\t\t1,\n\t\t))\n\tcase atomicStore:\n\t\tc.Emit4Bytes(encodeAtomicLoadStore(\n\t\t\tregNumberInEncoding[i.rn.realReg()],\n\t\t\tregNumberInEncoding[i.rm.realReg()],\n\t\t\tuint32(i.u2),\n\t\t\t0,\n\t\t))\n\tcase dmb:\n\t\tc.Emit4Bytes(encodeDMB())\n\tcase tailCall:\n\t\t// We still don't know the exact address of the function to call, so we emit a placeholder.\n\t\tc.AddRelocationInfo(i.callFuncRef(), true)        // true = IsTailCall\n\t\tc.Emit4Bytes(encodeUnconditionalBranch(false, 0)) // 0 = placeholder\n\tcase tailCallInd:\n\t\tc.Emit4Bytes(encodeUnconditionalBranchReg(regNumberInEncoding[i.rn.realReg()], false))\n\tdefault:\n\t\tpanic(i.String())\n\t}\n}\n\nfunc encodeMov64(rd, rn uint32, toIsSp, fromIsSp bool) uint32 {\n\tif toIsSp || fromIsSp {\n\t\t// This is an alias of ADD (immediate):\n\t\t// https://developer.arm.com/documentation/ddi0596/2021-12/Base-Instructions/MOV--to-from-SP---Move-between-register-and-stack-pointer--an-alias-of-ADD--immediate--\n\t\treturn encodeAddSubtractImmediate(0b100, 0, 0, rn, rd)\n\t} else {\n\t\t// This is an alias of ORR (shifted register):\n\t\t// https://developer.arm.com/documentation/ddi0596/2021-12/Base-Instructions/MOV--register---Move--register---an-alias-of-ORR--shifted-register--\n\t\treturn encodeLogicalShiftedRegister(0b101, 0, rn, 0, regNumberInEncoding[xzr], rd)\n\t}\n}\n\n// encodeSystemRegisterMove encodes as \"System register move\" in\n// https://developer.arm.com/documentation/ddi0596/2020-12/Index-by-Encoding/Branches--Exception-Generating-and-System-instructions?lang=en\n//\n// Note that currently we only supports read/write of FPSR.\nfunc encodeSystemRegisterMove(rt uint32, fromSystem bool) uint32 {\n\tret := 0b11010101<<24 | 0b11011<<16 | 0b01000100<<8 | 0b001<<5 | rt\n\tif fromSystem {\n\t\tret |= 0b1 << 21\n\t}\n\treturn ret\n}\n\n// encodeVecRRR encodes as either \"Advanced SIMD three *\" in\n// https://developer.arm.com/documentation/ddi0596/2020-12/Index-by-Encoding/Data-Processing----Scalar-Floating-Point-and-Advanced-SIMD?lang=en\nfunc encodeVecRRR(op vecOp, rd, rn, rm uint32, arr vecArrangement) uint32 {\n\tswitch op {\n\tcase vecOpBit:\n\t\t_, q := arrToSizeQEncoded(arr)\n\t\treturn encodeAdvancedSIMDThreeSame(rd, rn, rm, 0b00011, 0b10 /* always has size 0b10 */, 0b1, q)\n\tcase vecOpBic:\n\t\tif arr > vecArrangement16B {\n\t\t\tpanic(\"unsupported arrangement: \" + arr.String())\n\t\t}\n\t\t_, q := arrToSizeQEncoded(arr)\n\t\treturn encodeAdvancedSIMDThreeSame(rd, rn, rm, 0b00011, 0b01 /* always has size 0b01 */, 0b0, q)\n\tcase vecOpBsl:\n\t\tif arr > vecArrangement16B {\n\t\t\tpanic(\"unsupported arrangement: \" + arr.String())\n\t\t}\n\t\t_, q := arrToSizeQEncoded(arr)\n\t\treturn encodeAdvancedSIMDThreeSame(rd, rn, rm, 0b00011, 0b01 /* always has size 0b01 */, 0b1, q)\n\tcase vecOpAnd:\n\t\tif arr > vecArrangement16B {\n\t\t\tpanic(\"unsupported arrangement: \" + arr.String())\n\t\t}\n\t\t_, q := arrToSizeQEncoded(arr)\n\t\treturn encodeAdvancedSIMDThreeSame(rd, rn, rm, 0b00011, 0b00 /* always has size 0b00 */, 0b0, q)\n\tcase vecOpOrr:\n\t\t_, q := arrToSizeQEncoded(arr)\n\t\treturn encodeAdvancedSIMDThreeSame(rd, rn, rm, 0b00011, 0b10 /* always has size 0b10 */, 0b0, q)\n\tcase vecOpEOR:\n\t\tsize, q := arrToSizeQEncoded(arr)\n\t\treturn encodeAdvancedSIMDThreeSame(rd, rn, rm, 0b00011, size, 0b1, q)\n\tcase vecOpCmeq:\n\t\tsize, q := arrToSizeQEncoded(arr)\n\t\treturn encodeAdvancedSIMDThreeSame(rd, rn, rm, 0b10001, size, 0b1, q)\n\tcase vecOpCmgt:\n\t\tsize, q := arrToSizeQEncoded(arr)\n\t\treturn encodeAdvancedSIMDThreeSame(rd, rn, rm, 0b00110, size, 0b0, q)\n\tcase vecOpCmhi:\n\t\tsize, q := arrToSizeQEncoded(arr)\n\t\treturn encodeAdvancedSIMDThreeSame(rd, rn, rm, 0b00110, size, 0b1, q)\n\tcase vecOpCmge:\n\t\tsize, q := arrToSizeQEncoded(arr)\n\t\treturn encodeAdvancedSIMDThreeSame(rd, rn, rm, 0b00111, size, 0b0, q)\n\tcase vecOpCmhs:\n\t\tsize, q := arrToSizeQEncoded(arr)\n\t\treturn encodeAdvancedSIMDThreeSame(rd, rn, rm, 0b00111, size, 0b1, q)\n\tcase vecOpFcmeq:\n\t\tvar size, q uint32\n\t\tswitch arr {\n\t\tcase vecArrangement4S:\n\t\t\tsize, q = 0b00, 0b1\n\t\tcase vecArrangement2S:\n\t\t\tsize, q = 0b00, 0b0\n\t\tcase vecArrangement2D:\n\t\t\tsize, q = 0b01, 0b1\n\t\tdefault:\n\t\t\tpanic(\"unsupported arrangement: \" + arr.String())\n\t\t}\n\t\treturn encodeAdvancedSIMDThreeSame(rd, rn, rm, 0b11100, size, 0b0, q)\n\tcase vecOpFcmgt:\n\t\tif arr < vecArrangement2S || arr == vecArrangement1D {\n\t\t\tpanic(\"unsupported arrangement: \" + arr.String())\n\t\t}\n\t\tsize, q := arrToSizeQEncoded(arr)\n\t\treturn encodeAdvancedSIMDThreeSame(rd, rn, rm, 0b11100, size, 0b1, q)\n\tcase vecOpFcmge:\n\t\tvar size, q uint32\n\t\tswitch arr {\n\t\tcase vecArrangement4S:\n\t\t\tsize, q = 0b00, 0b1\n\t\tcase vecArrangement2S:\n\t\t\tsize, q = 0b00, 0b0\n\t\tcase vecArrangement2D:\n\t\t\tsize, q = 0b01, 0b1\n\t\tdefault:\n\t\t\tpanic(\"unsupported arrangement: \" + arr.String())\n\t\t}\n\t\treturn encodeAdvancedSIMDThreeSame(rd, rn, rm, 0b11100, size, 0b1, q)\n\tcase vecOpAdd:\n\t\tif arr == vecArrangement1D {\n\t\t\tpanic(\"unsupported arrangement: \" + arr.String())\n\t\t}\n\t\tsize, q := arrToSizeQEncoded(arr)\n\t\treturn encodeAdvancedSIMDThreeSame(rd, rn, rm, 0b10000, size, 0b0, q)\n\tcase vecOpSqadd:\n\t\tif arr == vecArrangement1D {\n\t\t\tpanic(\"unsupported arrangement: \" + arr.String())\n\t\t}\n\t\tsize, q := arrToSizeQEncoded(arr)\n\t\treturn encodeAdvancedSIMDThreeSame(rd, rn, rm, 0b00001, size, 0b0, q)\n\tcase vecOpUqadd:\n\t\tif arr == vecArrangement1D {\n\t\t\tpanic(\"unsupported arrangement: \" + arr.String())\n\t\t}\n\t\tsize, q := arrToSizeQEncoded(arr)\n\t\treturn encodeAdvancedSIMDThreeSame(rd, rn, rm, 0b00001, size, 0b1, q)\n\tcase vecOpAddp:\n\t\tif arr == vecArrangement1D {\n\t\t\tpanic(\"unsupported arrangement: \" + arr.String())\n\t\t}\n\t\tsize, q := arrToSizeQEncoded(arr)\n\t\treturn encodeAdvancedSIMDThreeSame(rd, rn, rm, 0b10111, size, 0b0, q)\n\tcase vecOpSqsub:\n\t\tif arr == vecArrangement1D {\n\t\t\tpanic(\"unsupported arrangement: \" + arr.String())\n\t\t}\n\t\tsize, q := arrToSizeQEncoded(arr)\n\t\treturn encodeAdvancedSIMDThreeSame(rd, rn, rm, 0b00101, size, 0b0, q)\n\tcase vecOpUqsub:\n\t\tif arr == vecArrangement1D {\n\t\t\tpanic(\"unsupported arrangement: \" + arr.String())\n\t\t}\n\t\tsize, q := arrToSizeQEncoded(arr)\n\t\treturn encodeAdvancedSIMDThreeSame(rd, rn, rm, 0b00101, size, 0b1, q)\n\tcase vecOpSub:\n\t\tif arr == vecArrangement1D {\n\t\t\tpanic(\"unsupported arrangement: \" + arr.String())\n\t\t}\n\t\tsize, q := arrToSizeQEncoded(arr)\n\t\treturn encodeAdvancedSIMDThreeSame(rd, rn, rm, 0b10000, size, 0b1, q)\n\tcase vecOpFmin:\n\t\tif arr < vecArrangement2S || arr == vecArrangement1D {\n\t\t\tpanic(\"unsupported arrangement: \" + arr.String())\n\t\t}\n\t\tsize, q := arrToSizeQEncoded(arr)\n\t\treturn encodeAdvancedSIMDThreeSame(rd, rn, rm, 0b11110, size, 0b0, q)\n\tcase vecOpSmin:\n\t\tif arr > vecArrangement4S {\n\t\t\tpanic(\"unsupported arrangement: \" + arr.String())\n\t\t}\n\t\tsize, q := arrToSizeQEncoded(arr)\n\t\treturn encodeAdvancedSIMDThreeSame(rd, rn, rm, 0b01101, size, 0b0, q)\n\tcase vecOpUmin:\n\t\tif arr > vecArrangement4S {\n\t\t\tpanic(\"unsupported arrangement: \" + arr.String())\n\t\t}\n\t\tsize, q := arrToSizeQEncoded(arr)\n\t\treturn encodeAdvancedSIMDThreeSame(rd, rn, rm, 0b01101, size, 0b1, q)\n\tcase vecOpFmax:\n\t\tvar size, q uint32\n\t\tswitch arr {\n\t\tcase vecArrangement4S:\n\t\t\tsize, q = 0b00, 0b1\n\t\tcase vecArrangement2S:\n\t\t\tsize, q = 0b00, 0b0\n\t\tcase vecArrangement2D:\n\t\t\tsize, q = 0b01, 0b1\n\t\tdefault:\n\t\t\tpanic(\"unsupported arrangement: \" + arr.String())\n\t\t}\n\t\treturn encodeAdvancedSIMDThreeSame(rd, rn, rm, 0b11110, size, 0b0, q)\n\tcase vecOpFadd:\n\t\tvar size, q uint32\n\t\tswitch arr {\n\t\tcase vecArrangement4S:\n\t\t\tsize, q = 0b00, 0b1\n\t\tcase vecArrangement2S:\n\t\t\tsize, q = 0b00, 0b0\n\t\tcase vecArrangement2D:\n\t\t\tsize, q = 0b01, 0b1\n\t\tdefault:\n\t\t\tpanic(\"unsupported arrangement: \" + arr.String())\n\t\t}\n\t\treturn encodeAdvancedSIMDThreeSame(rd, rn, rm, 0b11010, size, 0b0, q)\n\tcase vecOpFsub:\n\t\tif arr < vecArrangement2S || arr == vecArrangement1D {\n\t\t\tpanic(\"unsupported arrangement: \" + arr.String())\n\t\t}\n\t\tsize, q := arrToSizeQEncoded(arr)\n\t\treturn encodeAdvancedSIMDThreeSame(rd, rn, rm, 0b11010, size, 0b0, q)\n\tcase vecOpFmul:\n\t\tvar size, q uint32\n\t\tswitch arr {\n\t\tcase vecArrangement4S:\n\t\t\tsize, q = 0b00, 0b1\n\t\tcase vecArrangement2S:\n\t\t\tsize, q = 0b00, 0b0\n\t\tcase vecArrangement2D:\n\t\t\tsize, q = 0b01, 0b1\n\t\tdefault:\n\t\t\tpanic(\"unsupported arrangement: \" + arr.String())\n\t\t}\n\t\treturn encodeAdvancedSIMDThreeSame(rd, rn, rm, 0b11011, size, 0b1, q)\n\tcase vecOpSqrdmulh:\n\t\tif arr < vecArrangement4H || arr > vecArrangement4S {\n\t\t\tpanic(\"unsupported arrangement: \" + arr.String())\n\t\t}\n\t\tsize, q := arrToSizeQEncoded(arr)\n\t\treturn encodeAdvancedSIMDThreeSame(rd, rn, rm, 0b10110, size, 0b1, q)\n\tcase vecOpFdiv:\n\t\tvar size, q uint32\n\t\tswitch arr {\n\t\tcase vecArrangement4S:\n\t\t\tsize, q = 0b00, 0b1\n\t\tcase vecArrangement2S:\n\t\t\tsize, q = 0b00, 0b0\n\t\tcase vecArrangement2D:\n\t\t\tsize, q = 0b01, 0b1\n\t\tdefault:\n\t\t\tpanic(\"unsupported arrangement: \" + arr.String())\n\t\t}\n\t\treturn encodeAdvancedSIMDThreeSame(rd, rn, rm, 0b11111, size, 0b1, q)\n\tcase vecOpSmax:\n\t\tif arr > vecArrangement4S {\n\t\t\tpanic(\"unsupported arrangement: \" + arr.String())\n\t\t}\n\t\tsize, q := arrToSizeQEncoded(arr)\n\t\treturn encodeAdvancedSIMDThreeSame(rd, rn, rm, 0b01100, size, 0b0, q)\n\tcase vecOpUmax:\n\t\tif arr > vecArrangement4S {\n\t\t\tpanic(\"unsupported arrangement: \" + arr.String())\n\t\t}\n\t\tsize, q := arrToSizeQEncoded(arr)\n\t\treturn encodeAdvancedSIMDThreeSame(rd, rn, rm, 0b01100, size, 0b1, q)\n\tcase vecOpUmaxp:\n\t\tif arr > vecArrangement4S {\n\t\t\tpanic(\"unsupported arrangement: \" + arr.String())\n\t\t}\n\t\tsize, q := arrToSizeQEncoded(arr)\n\t\treturn encodeAdvancedSIMDThreeSame(rd, rn, rm, 0b10100, size, 0b1, q)\n\tcase vecOpUrhadd:\n\t\tif arr > vecArrangement4S {\n\t\t\tpanic(\"unsupported arrangement: \" + arr.String())\n\t\t}\n\t\tsize, q := arrToSizeQEncoded(arr)\n\t\treturn encodeAdvancedSIMDThreeSame(rd, rn, rm, 0b00010, size, 0b1, q)\n\tcase vecOpMul:\n\t\tif arr > vecArrangement4S {\n\t\t\tpanic(\"unsupported arrangement: \" + arr.String())\n\t\t}\n\t\tsize, q := arrToSizeQEncoded(arr)\n\t\treturn encodeAdvancedSIMDThreeSame(rd, rn, rm, 0b10011, size, 0b0, q)\n\tcase vecOpUmlal:\n\t\tif arr > vecArrangement4S {\n\t\t\tpanic(\"unsupported arrangement: \" + arr.String())\n\t\t}\n\t\tsize, q := arrToSizeQEncoded(arr)\n\t\treturn encodeAdvancedSIMDThreeDifferent(rd, rn, rm, 0b1000, size, 0b1, q)\n\tcase vecOpSshl:\n\t\tif arr == vecArrangement1D {\n\t\t\tpanic(\"unsupported arrangement: \" + arr.String())\n\t\t}\n\t\tsize, q := arrToSizeQEncoded(arr)\n\t\treturn encodeAdvancedSIMDThreeSame(rd, rn, rm, 0b01000, size, 0b0, q)\n\tcase vecOpUshl:\n\t\tif arr == vecArrangement1D {\n\t\t\tpanic(\"unsupported arrangement: \" + arr.String())\n\t\t}\n\t\tsize, q := arrToSizeQEncoded(arr)\n\t\treturn encodeAdvancedSIMDThreeSame(rd, rn, rm, 0b01000, size, 0b1, q)\n\n\tcase vecOpSmull:\n\t\tif arr > vecArrangement4S {\n\t\t\tpanic(\"unsupported arrangement: \" + arr.String())\n\t\t}\n\t\tsize, _ := arrToSizeQEncoded(arr)\n\t\treturn encodeAdvancedSIMDThreeDifferent(rd, rn, rm, 0b1100, size, 0b0, 0b0)\n\n\tcase vecOpSmull2:\n\t\tif arr > vecArrangement4S {\n\t\t\tpanic(\"unsupported arrangement: \" + arr.String())\n\t\t}\n\t\tsize, _ := arrToSizeQEncoded(arr)\n\t\treturn encodeAdvancedSIMDThreeDifferent(rd, rn, rm, 0b1100, size, 0b0, 0b1)\n\n\tdefault:\n\t\tpanic(\"TODO: \" + op.String())\n\t}\n}\n\nfunc arrToSizeQEncoded(arr vecArrangement) (size, q uint32) {\n\tswitch arr {\n\tcase vecArrangement16B:\n\t\tq = 0b1\n\t\tfallthrough\n\tcase vecArrangement8B:\n\t\tsize = 0b00\n\tcase vecArrangement8H:\n\t\tq = 0b1\n\t\tfallthrough\n\tcase vecArrangement4H:\n\t\tsize = 0b01\n\tcase vecArrangement4S:\n\t\tq = 0b1\n\t\tfallthrough\n\tcase vecArrangement2S:\n\t\tsize = 0b10\n\tcase vecArrangement2D:\n\t\tq = 0b1\n\t\tfallthrough\n\tcase vecArrangement1D:\n\t\tsize = 0b11\n\tdefault:\n\t\tpanic(\"BUG\")\n\t}\n\treturn\n}\n\n// encodeAdvancedSIMDThreeSame encodes as \"Advanced SIMD three same\" in\n// https://developer.arm.com/documentation/ddi0596/2020-12/Index-by-Encoding/Data-Processing----Scalar-Floating-Point-and-Advanced-SIMD?lang=en\nfunc encodeAdvancedSIMDThreeSame(rd, rn, rm, opcode, size, U, Q uint32) uint32 {\n\treturn Q<<30 | U<<29 | 0b111<<25 | size<<22 | 0b1<<21 | rm<<16 | opcode<<11 | 0b1<<10 | rn<<5 | rd\n}\n\n// encodeAdvancedSIMDThreeDifferent encodes as \"Advanced SIMD three different\" in\n// https://developer.arm.com/documentation/ddi0596/2020-12/Index-by-Encoding/Data-Processing----Scalar-Floating-Point-and-Advanced-SIMD?lang=en\nfunc encodeAdvancedSIMDThreeDifferent(rd, rn, rm, opcode, size, U, Q uint32) uint32 {\n\treturn Q<<30 | U<<29 | 0b111<<25 | size<<22 | 0b1<<21 | rm<<16 | opcode<<12 | rn<<5 | rd\n}\n\n// encodeFloatDataOneSource encodes as \"Floating-point data-processing (1 source)\" in\n// https://developer.arm.com/documentation/ddi0596/2020-12/Index-by-Encoding/Data-Processing----Scalar-Floating-Point-and-Advanced-SIMD?lang=en#simd-dp\nfunc encodeFloatDataOneSource(op fpuUniOp, rd, rn uint32, dst64bit bool) uint32 {\n\tvar opcode, ptype uint32\n\tswitch op {\n\tcase fpuUniOpCvt32To64:\n\t\topcode = 0b000101\n\tcase fpuUniOpCvt64To32:\n\t\topcode = 0b000100\n\t\tptype = 0b01\n\tcase fpuUniOpNeg:\n\t\topcode = 0b000010\n\t\tif dst64bit {\n\t\t\tptype = 0b01\n\t\t}\n\tcase fpuUniOpSqrt:\n\t\topcode = 0b000011\n\t\tif dst64bit {\n\t\t\tptype = 0b01\n\t\t}\n\tcase fpuUniOpRoundPlus:\n\t\topcode = 0b001001\n\t\tif dst64bit {\n\t\t\tptype = 0b01\n\t\t}\n\tcase fpuUniOpRoundMinus:\n\t\topcode = 0b001010\n\t\tif dst64bit {\n\t\t\tptype = 0b01\n\t\t}\n\tcase fpuUniOpRoundZero:\n\t\topcode = 0b001011\n\t\tif dst64bit {\n\t\t\tptype = 0b01\n\t\t}\n\tcase fpuUniOpRoundNearest:\n\t\topcode = 0b001000\n\t\tif dst64bit {\n\t\t\tptype = 0b01\n\t\t}\n\tcase fpuUniOpAbs:\n\t\topcode = 0b000001\n\t\tif dst64bit {\n\t\t\tptype = 0b01\n\t\t}\n\tdefault:\n\t\tpanic(\"BUG\")\n\t}\n\treturn 0b1111<<25 | ptype<<22 | 0b1<<21 | opcode<<15 | 0b1<<14 | rn<<5 | rd\n}\n\n// encodeCnvBetweenFloatInt encodes as \"Conversion between floating-point and integer\" in\n// https://developer.arm.com/documentation/ddi0596/2020-12/Index-by-Encoding/Data-Processing----Scalar-Floating-Point-and-Advanced-SIMD?lang=en\nfunc encodeCnvBetweenFloatInt(i *instruction) uint32 {\n\trd := regNumberInEncoding[i.rd.RealReg()]\n\trn := regNumberInEncoding[i.rn.realReg()]\n\n\tvar opcode uint32\n\tvar rmode uint32\n\tvar ptype uint32\n\tvar sf uint32\n\tswitch i.kind {\n\tcase intToFpu: // Either UCVTF or SCVTF.\n\t\trmode = 0b00\n\n\t\tsigned := i.u1 == 1\n\t\tsrc64bit := i.u2&1 != 0\n\t\tdst64bit := i.u2&2 != 0\n\t\tif signed {\n\t\t\topcode = 0b010\n\t\t} else {\n\t\t\topcode = 0b011\n\t\t}\n\t\tif src64bit {\n\t\t\tsf = 0b1\n\t\t}\n\t\tif dst64bit {\n\t\t\tptype = 0b01\n\t\t} else {\n\t\t\tptype = 0b00\n\t\t}\n\tcase fpuToInt: // Either FCVTZU or FCVTZS.\n\t\trmode = 0b11\n\n\t\tsigned := i.u1 == 1\n\t\tsrc64bit := i.u2&1 != 0\n\t\tdst64bit := i.u2&2 != 0\n\n\t\tif signed {\n\t\t\topcode = 0b000\n\t\t} else {\n\t\t\topcode = 0b001\n\t\t}\n\t\tif dst64bit {\n\t\t\tsf = 0b1\n\t\t}\n\t\tif src64bit {\n\t\t\tptype = 0b01\n\t\t} else {\n\t\t\tptype = 0b00\n\t\t}\n\t}\n\treturn sf<<31 | 0b1111<<25 | ptype<<22 | 0b1<<21 | rmode<<19 | opcode<<16 | rn<<5 | rd\n}\n\n// encodeAdr encodes a PC-relative ADR instruction.\n// https://developer.arm.com/documentation/ddi0602/2022-06/Base-Instructions/ADR--Form-PC-relative-address-\nfunc encodeAdr(rd uint32, offset uint32) uint32 {\n\tif offset >= 1<<20 {\n\t\tpanic(\"BUG: too large adr instruction\")\n\t}\n\treturn offset&0b11<<29 | 0b1<<28 | offset&0b1111111111_1111111100<<3 | rd\n}\n\n// encodeFpuCSel encodes as \"Floating-point conditional select\" in\n// https://developer.arm.com/documentation/ddi0596/2020-12/Index-by-Encoding/Data-Processing----Scalar-Floating-Point-and-Advanced-SIMD?lang=en\nfunc encodeFpuCSel(rd, rn, rm uint32, c condFlag, _64bit bool) uint32 {\n\tvar ftype uint32\n\tif _64bit {\n\t\tftype = 0b01 // double precision.\n\t}\n\treturn 0b1111<<25 | ftype<<22 | 0b1<<21 | rm<<16 | uint32(c)<<12 | 0b11<<10 | rn<<5 | rd\n}\n\n// encodeMoveToVec encodes as \"Move general-purpose register to a vector element\" (represented as `ins`) in\n// https://developer.arm.com/documentation/dui0801/g/A64-SIMD-Vector-Instructions/MOV--vector--from-general-\n// https://developer.arm.com/documentation/ddi0596/2020-12/SIMD-FP-Instructions/MOV--from-general---Move-general-purpose-register-to-a-vector-element--an-alias-of-INS--general--?lang=en\nfunc encodeMoveToVec(rd, rn uint32, arr vecArrangement, index vecIndex) uint32 {\n\tvar imm5 uint32\n\tswitch arr {\n\tcase vecArrangementB:\n\t\timm5 |= 0b1\n\t\timm5 |= uint32(index) << 1\n\t\tif index > 0b1111 {\n\t\t\tpanic(fmt.Sprintf(\"vector index is larger than the allowed bound: %d > 15\", index))\n\t\t}\n\tcase vecArrangementH:\n\t\timm5 |= 0b10\n\t\timm5 |= uint32(index) << 2\n\t\tif index > 0b111 {\n\t\t\tpanic(fmt.Sprintf(\"vector index is larger than the allowed bound: %d > 7\", index))\n\t\t}\n\tcase vecArrangementS:\n\t\timm5 |= 0b100\n\t\timm5 |= uint32(index) << 3\n\t\tif index > 0b11 {\n\t\t\tpanic(fmt.Sprintf(\"vector index is larger than the allowed bound: %d > 3\", index))\n\t\t}\n\tcase vecArrangementD:\n\t\timm5 |= 0b1000\n\t\timm5 |= uint32(index) << 4\n\t\tif index > 0b1 {\n\t\t\tpanic(fmt.Sprintf(\"vector index is larger than the allowed bound: %d > 1\", index))\n\t\t}\n\tdefault:\n\t\tpanic(\"Unsupported arrangement \" + arr.String())\n\t}\n\n\treturn 0b01001110000<<21 | imm5<<16 | 0b000111<<10 | rn<<5 | rd\n}\n\n// encodeMoveToVec encodes as \"Move vector element to another vector element, mov (element)\" (represented as `ins`) in\n// https://developer.arm.com/documentation/ddi0596/2020-12/SIMD-FP-Instructions/MOV--element---Move-vector-element-to-another-vector-element--an-alias-of-INS--element--?lang=en\n// https://developer.arm.com/documentation/ddi0596/2020-12/SIMD-FP-Instructions/INS--element---Insert-vector-element-from-another-vector-element-?lang=en\nfunc encodeVecMovElement(rd, rn uint32, arr vecArrangement, srcIndex, dstIndex uint32) uint32 {\n\tvar imm4, imm5 uint32\n\tswitch arr {\n\tcase vecArrangementB:\n\t\timm5 |= 0b1\n\t\timm5 |= srcIndex << 1\n\t\timm4 = dstIndex\n\t\tif srcIndex > 0b1111 {\n\t\t\tpanic(fmt.Sprintf(\"vector index is larger than the allowed bound: %d > 15\", srcIndex))\n\t\t}\n\tcase vecArrangementH:\n\t\timm5 |= 0b10\n\t\timm5 |= srcIndex << 2\n\t\timm4 = dstIndex << 1\n\t\tif srcIndex > 0b111 {\n\t\t\tpanic(fmt.Sprintf(\"vector index is larger than the allowed bound: %d > 7\", srcIndex))\n\t\t}\n\tcase vecArrangementS:\n\t\timm5 |= 0b100\n\t\timm5 |= srcIndex << 3\n\t\timm4 = dstIndex << 2\n\t\tif srcIndex > 0b11 {\n\t\t\tpanic(fmt.Sprintf(\"vector index is larger than the allowed bound: %d > 3\", srcIndex))\n\t\t}\n\tcase vecArrangementD:\n\t\timm5 |= 0b1000\n\t\timm5 |= srcIndex << 4\n\t\timm4 = dstIndex << 3\n\t\tif srcIndex > 0b1 {\n\t\t\tpanic(fmt.Sprintf(\"vector index is larger than the allowed bound: %d > 1\", srcIndex))\n\t\t}\n\tdefault:\n\t\tpanic(\"Unsupported arrangement \" + arr.String())\n\t}\n\n\treturn 0b01101110000<<21 | imm5<<16 | imm4<<11 | 0b1<<10 | rn<<5 | rd\n}\n\n// encodeUnconditionalBranchReg encodes as \"Unconditional branch (register)\" in:\n// https://developer.arm.com/documentation/ddi0596/2020-12/Index-by-Encoding/Branches--Exception-Generating-and-System-instructions?lang=en\nfunc encodeUnconditionalBranchReg(rn uint32, link bool) uint32 {\n\tvar opc uint32\n\tif link {\n\t\topc = 0b0001\n\t}\n\treturn 0b1101011<<25 | opc<<21 | 0b11111<<16 | rn<<5\n}\n\n// encodeMoveFromVec encodes as \"Move vector element to a general-purpose register\"\n// (represented as `umov` when dest is 32-bit, `umov` otherwise) in\n// https://developer.arm.com/documentation/ddi0596/2020-12/SIMD-FP-Instructions/UMOV--Unsigned-Move-vector-element-to-general-purpose-register-?lang=en\n// https://developer.arm.com/documentation/ddi0596/2020-12/SIMD-FP-Instructions/MOV--to-general---Move-vector-element-to-general-purpose-register--an-alias-of-UMOV-?lang=en\nfunc encodeMoveFromVec(rd, rn uint32, arr vecArrangement, index vecIndex, signed bool) uint32 {\n\tvar op, imm4, q, imm5 uint32\n\tswitch {\n\tcase arr == vecArrangementB:\n\t\timm5 |= 0b1\n\t\timm5 |= uint32(index) << 1\n\t\tif index > 0b1111 {\n\t\t\tpanic(fmt.Sprintf(\"vector index is larger than the allowed bound: %d > 15\", index))\n\t\t}\n\tcase arr == vecArrangementH:\n\t\timm5 |= 0b10\n\t\timm5 |= uint32(index) << 2\n\t\tif index > 0b111 {\n\t\t\tpanic(fmt.Sprintf(\"vector index is larger than the allowed bound: %d > 7\", index))\n\t\t}\n\tcase arr == vecArrangementS && signed:\n\t\tq = 0b1\n\t\tfallthrough\n\tcase arr == vecArrangementS:\n\t\timm5 |= 0b100\n\t\timm5 |= uint32(index) << 3\n\t\tif index > 0b11 {\n\t\t\tpanic(fmt.Sprintf(\"vector index is larger than the allowed bound: %d > 3\", index))\n\t\t}\n\tcase arr == vecArrangementD && !signed:\n\t\timm5 |= 0b1000\n\t\timm5 |= uint32(index) << 4\n\t\tq = 0b1\n\t\tif index > 0b1 {\n\t\t\tpanic(fmt.Sprintf(\"vector index is larger than the allowed bound: %d > 1\", index))\n\t\t}\n\tdefault:\n\t\tpanic(\"Unsupported arrangement \" + arr.String())\n\t}\n\tif signed {\n\t\top, imm4 = 0, 0b0101\n\t} else {\n\t\top, imm4 = 0, 0b0111\n\t}\n\treturn op<<29 | 0b01110000<<21 | q<<30 | imm5<<16 | imm4<<11 | 1<<10 | rn<<5 | rd\n}\n\n// encodeVecDup encodes as \"Duplicate general-purpose register to vector\" DUP (general)\n// (represented as `dup`)\n// https://developer.arm.com/documentation/ddi0596/2020-12/SIMD-FP-Instructions/DUP--general---Duplicate-general-purpose-register-to-vector-?lang=en\nfunc encodeVecDup(rd, rn uint32, arr vecArrangement) uint32 {\n\tvar q, imm5 uint32\n\tswitch arr {\n\tcase vecArrangement8B:\n\t\tq, imm5 = 0b0, 0b1\n\tcase vecArrangement16B:\n\t\tq, imm5 = 0b1, 0b1\n\tcase vecArrangement4H:\n\t\tq, imm5 = 0b0, 0b10\n\tcase vecArrangement8H:\n\t\tq, imm5 = 0b1, 0b10\n\tcase vecArrangement2S:\n\t\tq, imm5 = 0b0, 0b100\n\tcase vecArrangement4S:\n\t\tq, imm5 = 0b1, 0b100\n\tcase vecArrangement2D:\n\t\tq, imm5 = 0b1, 0b1000\n\tdefault:\n\t\tpanic(\"Unsupported arrangement \" + arr.String())\n\t}\n\treturn q<<30 | 0b001110000<<21 | imm5<<16 | 0b000011<<10 | rn<<5 | rd\n}\n\n// encodeVecDup encodes as \"Duplicate vector element to vector or scalar\" DUP (element).\n// (represented as `dup`)\n// https://developer.arm.com/documentation/ddi0596/2020-12/SIMD-FP-Instructions/DUP--element---Duplicate-vector-element-to-vector-or-scalar-\nfunc encodeVecDupElement(rd, rn uint32, arr vecArrangement, srcIndex vecIndex) uint32 {\n\tvar q, imm5 uint32\n\tq = 0b1\n\tswitch arr {\n\tcase vecArrangementB:\n\t\timm5 |= 0b1\n\t\timm5 |= uint32(srcIndex) << 1\n\tcase vecArrangementH:\n\t\timm5 |= 0b10\n\t\timm5 |= uint32(srcIndex) << 2\n\tcase vecArrangementS:\n\t\timm5 |= 0b100\n\t\timm5 |= uint32(srcIndex) << 3\n\tcase vecArrangementD:\n\t\timm5 |= 0b1000\n\t\timm5 |= uint32(srcIndex) << 4\n\tdefault:\n\t\tpanic(\"unsupported arrangement\" + arr.String())\n\t}\n\n\treturn q<<30 | 0b001110000<<21 | imm5<<16 | 0b1<<10 | rn<<5 | rd\n}\n\n// encodeVecExtract encodes as \"Advanced SIMD extract.\"\n// Currently only `ext` is defined.\n// https://developer.arm.com/documentation/ddi0602/2023-06/Index-by-Encoding/Data-Processing----Scalar-Floating-Point-and-Advanced-SIMD?lang=en#simd-dp\n// https://developer.arm.com/documentation/ddi0602/2023-06/SIMD-FP-Instructions/EXT--Extract-vector-from-pair-of-vectors-?lang=en\nfunc encodeVecExtract(rd, rn, rm uint32, arr vecArrangement, index uint32) uint32 {\n\tvar q, imm4 uint32\n\tswitch arr {\n\tcase vecArrangement8B:\n\t\tq, imm4 = 0, 0b0111&uint32(index)\n\tcase vecArrangement16B:\n\t\tq, imm4 = 1, 0b1111&uint32(index)\n\tdefault:\n\t\tpanic(\"Unsupported arrangement \" + arr.String())\n\t}\n\treturn q<<30 | 0b101110000<<21 | rm<<16 | imm4<<11 | rn<<5 | rd\n}\n\n// encodeVecPermute encodes as \"Advanced SIMD permute.\"\n// https://developer.arm.com/documentation/ddi0602/2023-06/Index-by-Encoding/Data-Processing----Scalar-Floating-Point-and-Advanced-SIMD?lang=en#simd-dp\nfunc encodeVecPermute(op vecOp, rd, rn, rm uint32, arr vecArrangement) uint32 {\n\tvar q, size, opcode uint32\n\tswitch op {\n\tcase vecOpZip1:\n\t\topcode = 0b011\n\t\tif arr == vecArrangement1D {\n\t\t\tpanic(\"unsupported arrangement: \" + arr.String())\n\t\t}\n\t\tsize, q = arrToSizeQEncoded(arr)\n\tdefault:\n\t\tpanic(\"TODO: \" + op.String())\n\t}\n\treturn q<<30 | 0b001110<<24 | size<<22 | rm<<16 | opcode<<12 | 0b10<<10 | rn<<5 | rd\n}\n\n// encodeConditionalSelect encodes as \"Conditional select\" in\n// https://developer.arm.com/documentation/ddi0596/2020-12/Index-by-Encoding/Data-Processing----Register?lang=en#condsel\nfunc encodeConditionalSelect(kind instructionKind, rd, rn, rm uint32, c condFlag, _64bit bool) uint32 {\n\tif kind != cSel {\n\t\tpanic(\"TODO: support other conditional select\")\n\t}\n\n\tret := 0b110101<<23 | rm<<16 | uint32(c)<<12 | rn<<5 | rd\n\tif _64bit {\n\t\tret |= 0b1 << 31\n\t}\n\treturn ret\n}\n\nconst dummyInstruction uint32 = 0x14000000 // \"b 0\"\n\n// encodeLoadFpuConst32 encodes the following three instructions:\n//\n//\tldr s8, #8  ;; literal load of data.f32\n//\tb 8           ;; skip the data\n//\tdata.f32 xxxxxxx\nfunc encodeLoadFpuConst32(c backend.Compiler, rd uint32, rawF32 uint64) {\n\tc.Emit4Bytes(\n\t\t// https://developer.arm.com/documentation/ddi0596/2020-12/SIMD-FP-Instructions/LDR--literal--SIMD-FP---Load-SIMD-FP-Register--PC-relative-literal--?lang=en\n\t\t0b111<<26 | (0x8/4)<<5 | rd,\n\t)\n\tc.Emit4Bytes(encodeUnconditionalBranch(false, 8)) // b 8\n\tif wazevoapi.PrintMachineCodeHexPerFunctionDisassemblable {\n\t\t// Inlined data.f32 cannot be disassembled, so we add a dummy instruction here.\n\t\tc.Emit4Bytes(dummyInstruction)\n\t} else {\n\t\tc.Emit4Bytes(uint32(rawF32)) // data.f32 xxxxxxx\n\t}\n}\n\n// encodeLoadFpuConst64 encodes the following three instructions:\n//\n//\tldr d8, #8  ;; literal load of data.f64\n//\tb 12           ;; skip the data\n//\tdata.f64 xxxxxxx\nfunc encodeLoadFpuConst64(c backend.Compiler, rd uint32, rawF64 uint64) {\n\tc.Emit4Bytes(\n\t\t// https://developer.arm.com/documentation/ddi0596/2020-12/SIMD-FP-Instructions/LDR--literal--SIMD-FP---Load-SIMD-FP-Register--PC-relative-literal--?lang=en\n\t\t0b1<<30 | 0b111<<26 | (0x8/4)<<5 | rd,\n\t)\n\tc.Emit4Bytes(encodeUnconditionalBranch(false, 12)) // b 12\n\tif wazevoapi.PrintMachineCodeHexPerFunctionDisassemblable {\n\t\t// Inlined data.f64 cannot be disassembled, so we add dummy instructions here.\n\t\tc.Emit4Bytes(dummyInstruction)\n\t\tc.Emit4Bytes(dummyInstruction)\n\t} else {\n\t\t// data.f64 xxxxxxx\n\t\tc.Emit4Bytes(uint32(rawF64))\n\t\tc.Emit4Bytes(uint32(rawF64 >> 32))\n\t}\n}\n\n// encodeLoadFpuConst128 encodes the following three instructions:\n//\n//\tldr v8, #8  ;; literal load of data.f64\n//\tb 20           ;; skip the data\n//\tdata.v128 xxxxxxx\nfunc encodeLoadFpuConst128(c backend.Compiler, rd uint32, lo, hi uint64) {\n\tc.Emit4Bytes(\n\t\t// https://developer.arm.com/documentation/ddi0596/2020-12/SIMD-FP-Instructions/LDR--literal--SIMD-FP---Load-SIMD-FP-Register--PC-relative-literal--?lang=en\n\t\t0b1<<31 | 0b111<<26 | (0x8/4)<<5 | rd,\n\t)\n\tc.Emit4Bytes(encodeUnconditionalBranch(false, 20)) // b 20\n\tif wazevoapi.PrintMachineCodeHexPerFunctionDisassemblable {\n\t\t// Inlined data.v128 cannot be disassembled, so we add dummy instructions here.\n\t\tc.Emit4Bytes(dummyInstruction)\n\t\tc.Emit4Bytes(dummyInstruction)\n\t\tc.Emit4Bytes(dummyInstruction)\n\t\tc.Emit4Bytes(dummyInstruction)\n\t} else {\n\t\t// data.v128 xxxxxxx\n\t\tc.Emit4Bytes(uint32(lo))\n\t\tc.Emit4Bytes(uint32(lo >> 32))\n\t\tc.Emit4Bytes(uint32(hi))\n\t\tc.Emit4Bytes(uint32(hi >> 32))\n\t}\n}\n\n// encodeAluRRRR encodes as Data-processing (3 source) in\n// https://developer.arm.com/documentation/ddi0596/2020-12/Index-by-Encoding/Data-Processing----Register?lang=en\nfunc encodeAluRRRR(op aluOp, rd, rn, rm, ra, _64bit uint32) uint32 {\n\tvar oO, op31 uint32\n\tswitch op {\n\tcase aluOpMAdd:\n\t\top31, oO = 0b000, 0b0\n\tcase aluOpMSub:\n\t\top31, oO = 0b000, 0b1\n\tdefault:\n\t\tpanic(\"TODO/BUG\")\n\t}\n\treturn _64bit<<31 | 0b11011<<24 | op31<<21 | rm<<16 | oO<<15 | ra<<10 | rn<<5 | rd\n}\n\n// encodeBitRR encodes as Data-processing (1 source) in\n// https://developer.arm.com/documentation/ddi0596/2020-12/Index-by-Encoding/Data-Processing----Register?lang=en\nfunc encodeBitRR(op bitOp, rd, rn, _64bit uint32) uint32 {\n\tvar opcode2, opcode uint32\n\tswitch op {\n\tcase bitOpRbit:\n\t\topcode2, opcode = 0b00000, 0b000000\n\tcase bitOpClz:\n\t\topcode2, opcode = 0b00000, 0b000100\n\tdefault:\n\t\tpanic(\"TODO/BUG\")\n\t}\n\treturn _64bit<<31 | 0b1_0_11010110<<21 | opcode2<<15 | opcode<<10 | rn<<5 | rd\n}\n\nfunc encodeAsMov32(rn, rd uint32) uint32 {\n\t// This is an alias of ORR (shifted register):\n\t// https://developer.arm.com/documentation/ddi0596/2021-12/Base-Instructions/MOV--register---Move--register---an-alias-of-ORR--shifted-register--\n\treturn encodeLogicalShiftedRegister(0b001, 0, rn, 0, regNumberInEncoding[xzr], rd)\n}\n\n// encodeExtend encodes extension instructions.\nfunc encodeExtend(signed bool, from, to byte, rd, rn uint32) uint32 {\n\t// UTXB: https://developer.arm.com/documentation/ddi0596/2020-12/Base-Instructions/UXTB--Unsigned-Extend-Byte--an-alias-of-UBFM-?lang=en\n\t// UTXH: https://developer.arm.com/documentation/ddi0596/2020-12/Base-Instructions/UXTH--Unsigned-Extend-Halfword--an-alias-of-UBFM-?lang=en\n\t// STXB: https://developer.arm.com/documentation/ddi0596/2020-12/Base-Instructions/SXTB--Signed-Extend-Byte--an-alias-of-SBFM-\n\t// STXH: https://developer.arm.com/documentation/ddi0596/2020-12/Base-Instructions/SXTH--Sign-Extend-Halfword--an-alias-of-SBFM-\n\t// STXW: https://developer.arm.com/documentation/ddi0596/2020-12/Base-Instructions/SXTW--Sign-Extend-Word--an-alias-of-SBFM-\n\tvar _31to10 uint32\n\tswitch {\n\tcase !signed && from == 8 && to == 32:\n\t\t// 32-bit UXTB\n\t\t_31to10 = 0b0101001100000000000111\n\tcase !signed && from == 16 && to == 32:\n\t\t// 32-bit UXTH\n\t\t_31to10 = 0b0101001100000000001111\n\tcase !signed && from == 8 && to == 64:\n\t\t// 64-bit UXTB\n\t\t_31to10 = 0b0101001100000000000111\n\tcase !signed && from == 16 && to == 64:\n\t\t// 64-bit UXTH\n\t\t_31to10 = 0b0101001100000000001111\n\tcase !signed && from == 32 && to == 64:\n\t\treturn encodeAsMov32(rn, rd)\n\tcase signed && from == 8 && to == 32:\n\t\t// 32-bit SXTB\n\t\t_31to10 = 0b0001001100000000000111\n\tcase signed && from == 16 && to == 32:\n\t\t// 32-bit SXTH\n\t\t_31to10 = 0b0001001100000000001111\n\tcase signed && from == 8 && to == 64:\n\t\t// 64-bit SXTB\n\t\t_31to10 = 0b1001001101000000000111\n\tcase signed && from == 16 && to == 64:\n\t\t// 64-bit SXTH\n\t\t_31to10 = 0b1001001101000000001111\n\tcase signed && from == 32 && to == 64:\n\t\t// SXTW\n\t\t_31to10 = 0b1001001101000000011111\n\tdefault:\n\t\tpanic(\"BUG\")\n\t}\n\treturn _31to10<<10 | rn<<5 | rd\n}\n\nfunc encodeLoadOrStore(kind instructionKind, rt uint32, amode addressMode) uint32 {\n\tvar _22to31 uint32\n\tvar bits int64\n\tswitch kind {\n\tcase uLoad8:\n\t\t_22to31 = 0b0011100001\n\t\tbits = 8\n\tcase sLoad8:\n\t\t_22to31 = 0b0011100010\n\t\tbits = 8\n\tcase uLoad16:\n\t\t_22to31 = 0b0111100001\n\t\tbits = 16\n\tcase sLoad16:\n\t\t_22to31 = 0b0111100010\n\t\tbits = 16\n\tcase uLoad32:\n\t\t_22to31 = 0b1011100001\n\t\tbits = 32\n\tcase sLoad32:\n\t\t_22to31 = 0b1011100010\n\t\tbits = 32\n\tcase uLoad64:\n\t\t_22to31 = 0b1111100001\n\t\tbits = 64\n\tcase fpuLoad32:\n\t\t_22to31 = 0b1011110001\n\t\tbits = 32\n\tcase fpuLoad64:\n\t\t_22to31 = 0b1111110001\n\t\tbits = 64\n\tcase fpuLoad128:\n\t\t_22to31 = 0b0011110011\n\t\tbits = 128\n\tcase store8:\n\t\t_22to31 = 0b0011100000\n\t\tbits = 8\n\tcase store16:\n\t\t_22to31 = 0b0111100000\n\t\tbits = 16\n\tcase store32:\n\t\t_22to31 = 0b1011100000\n\t\tbits = 32\n\tcase store64:\n\t\t_22to31 = 0b1111100000\n\t\tbits = 64\n\tcase fpuStore32:\n\t\t_22to31 = 0b1011110000\n\t\tbits = 32\n\tcase fpuStore64:\n\t\t_22to31 = 0b1111110000\n\t\tbits = 64\n\tcase fpuStore128:\n\t\t_22to31 = 0b0011110010\n\t\tbits = 128\n\tdefault:\n\t\tpanic(\"BUG\")\n\t}\n\n\tswitch amode.kind {\n\tcase addressModeKindRegScaledExtended:\n\t\treturn encodeLoadOrStoreExtended(_22to31,\n\t\t\tregNumberInEncoding[amode.rn.RealReg()],\n\t\t\tregNumberInEncoding[amode.rm.RealReg()],\n\t\t\trt, true, amode.extOp)\n\tcase addressModeKindRegScaled:\n\t\treturn encodeLoadOrStoreExtended(_22to31,\n\t\t\tregNumberInEncoding[amode.rn.RealReg()], regNumberInEncoding[amode.rm.RealReg()],\n\t\t\trt, true, extendOpNone)\n\tcase addressModeKindRegExtended:\n\t\treturn encodeLoadOrStoreExtended(_22to31,\n\t\t\tregNumberInEncoding[amode.rn.RealReg()], regNumberInEncoding[amode.rm.RealReg()],\n\t\t\trt, false, amode.extOp)\n\tcase addressModeKindRegReg:\n\t\treturn encodeLoadOrStoreExtended(_22to31,\n\t\t\tregNumberInEncoding[amode.rn.RealReg()], regNumberInEncoding[amode.rm.RealReg()],\n\t\t\trt, false, extendOpNone)\n\tcase addressModeKindRegSignedImm9:\n\t\t// e.g. https://developer.arm.com/documentation/ddi0596/2021-12/Base-Instructions/LDUR--Load-Register--unscaled--\n\t\treturn encodeLoadOrStoreSIMM9(_22to31, 0b00 /* unscaled */, regNumberInEncoding[amode.rn.RealReg()], rt, amode.imm)\n\tcase addressModeKindPostIndex:\n\t\treturn encodeLoadOrStoreSIMM9(_22to31, 0b01 /* post index */, regNumberInEncoding[amode.rn.RealReg()], rt, amode.imm)\n\tcase addressModeKindPreIndex:\n\t\treturn encodeLoadOrStoreSIMM9(_22to31, 0b11 /* pre index */, regNumberInEncoding[amode.rn.RealReg()], rt, amode.imm)\n\tcase addressModeKindRegUnsignedImm12:\n\t\t// \"unsigned immediate\" in https://developer.arm.com/documentation/ddi0596/2020-12/Index-by-Encoding/Loads-and-Stores?lang=en\n\t\trn := regNumberInEncoding[amode.rn.RealReg()]\n\t\timm := amode.imm\n\t\tdiv := bits / 8\n\t\tif imm != 0 && !offsetFitsInAddressModeKindRegUnsignedImm12(byte(bits), imm) {\n\t\t\tpanic(\"BUG\")\n\t\t}\n\t\timm /= div\n\t\treturn _22to31<<22 | 0b1<<24 | uint32(imm&0b111111111111)<<10 | rn<<5 | rt\n\tdefault:\n\t\tpanic(\"BUG\")\n\t}\n}\n\n// encodeVecLoad1R encodes as Load one single-element structure and Replicate to all lanes (of one register) in\n// https://developer.arm.com/documentation/ddi0596/2021-12/SIMD-FP-Instructions/LD1R--Load-one-single-element-structure-and-Replicate-to-all-lanes--of-one-register--?lang=en#sa_imm\nfunc encodeVecLoad1R(rt, rn uint32, arr vecArrangement) uint32 {\n\tsize, q := arrToSizeQEncoded(arr)\n\treturn q<<30 | 0b001101010000001100<<12 | size<<10 | rn<<5 | rt\n}\n\n// encodeAluBitmaskImmediate encodes as Logical (immediate) in\n// https://developer.arm.com/documentation/ddi0596/2020-12/Index-by-Encoding/Data-Processing----Immediate?lang=en\nfunc encodeAluBitmaskImmediate(op aluOp, rd, rn uint32, imm uint64, _64bit bool) uint32 {\n\tvar _31to23 uint32\n\tswitch op {\n\tcase aluOpAnd:\n\t\t_31to23 = 0b00_100100\n\tcase aluOpOrr:\n\t\t_31to23 = 0b01_100100\n\tcase aluOpEor:\n\t\t_31to23 = 0b10_100100\n\tcase aluOpAnds:\n\t\t_31to23 = 0b11_100100\n\tdefault:\n\t\tpanic(\"BUG\")\n\t}\n\tif _64bit {\n\t\t_31to23 |= 0b1 << 8\n\t}\n\timmr, imms, N := bitmaskImmediate(imm, _64bit)\n\treturn _31to23<<23 | uint32(N)<<22 | uint32(immr)<<16 | uint32(imms)<<10 | rn<<5 | rd\n}\n\nfunc bitmaskImmediate(c uint64, is64bit bool) (immr, imms, N byte) {\n\tvar size uint32\n\tswitch {\n\tcase c != c>>32|c<<32:\n\t\tsize = 64\n\tcase c != c>>16|c<<48:\n\t\tsize = 32\n\t\tc = uint64(int32(c))\n\tcase c != c>>8|c<<56:\n\t\tsize = 16\n\t\tc = uint64(int16(c))\n\tcase c != c>>4|c<<60:\n\t\tsize = 8\n\t\tc = uint64(int8(c))\n\tcase c != c>>2|c<<62:\n\t\tsize = 4\n\t\tc = uint64(int64(c<<60) >> 60)\n\tdefault:\n\t\tsize = 2\n\t\tc = uint64(int64(c<<62) >> 62)\n\t}\n\n\tneg := false\n\tif int64(c) < 0 {\n\t\tc = ^c\n\t\tneg = true\n\t}\n\n\tonesSize, nonZeroPos := getOnesSequenceSize(c)\n\tif neg {\n\t\tnonZeroPos = onesSize + nonZeroPos\n\t\tonesSize = size - onesSize\n\t}\n\n\tvar mode byte = 32\n\tif is64bit && size == 64 {\n\t\tN, mode = 0b1, 64\n\t}\n\n\timmr = byte((size - nonZeroPos) & (size - 1) & uint32(mode-1))\n\timms = byte((onesSize - 1) | 63&^(size<<1-1))\n\treturn\n}\n\nfunc getOnesSequenceSize(x uint64) (size, nonZeroPos uint32) {\n\t// Take 0b00111000 for example:\n\ty := getLowestBit(x)               // = 0b0000100\n\tnonZeroPos = setBitPos(y)          // = 2\n\tsize = setBitPos(x+y) - nonZeroPos // = setBitPos(0b0100000) - 2 = 5 - 2 = 3\n\treturn\n}\n\nfunc setBitPos(x uint64) (ret uint32) {\n\tfor ; ; ret++ {\n\t\tif x == 0b1 {\n\t\t\tbreak\n\t\t}\n\t\tx = x >> 1\n\t}\n\treturn\n}\n\n// encodeLoadOrStoreExtended encodes store/load instruction as \"extended register offset\" in Load/store register (register offset):\n// https://developer.arm.com/documentation/ddi0596/2020-12/Index-by-Encoding/Loads-and-Stores?lang=en\nfunc encodeLoadOrStoreExtended(_22to32 uint32, rn, rm, rt uint32, scaled bool, extOp extendOp) uint32 {\n\tvar option uint32\n\tswitch extOp {\n\tcase extendOpUXTW:\n\t\toption = 0b010\n\tcase extendOpSXTW:\n\t\toption = 0b110\n\tcase extendOpNone:\n\t\toption = 0b111\n\tdefault:\n\t\tpanic(\"BUG\")\n\t}\n\tvar s uint32\n\tif scaled {\n\t\ts = 0b1\n\t}\n\treturn _22to32<<22 | 0b1<<21 | rm<<16 | option<<13 | s<<12 | 0b10<<10 | rn<<5 | rt\n}\n\n// encodeLoadOrStoreSIMM9 encodes store/load instruction as one of post-index, pre-index or unscaled immediate as in\n// https://developer.arm.com/documentation/ddi0596/2020-12/Index-by-Encoding/Loads-and-Stores?lang=en\nfunc encodeLoadOrStoreSIMM9(_22to32, _1011 uint32, rn, rt uint32, imm9 int64) uint32 {\n\treturn _22to32<<22 | (uint32(imm9)&0b111111111)<<12 | _1011<<10 | rn<<5 | rt\n}\n\n// encodeFpuRRR encodes as single or double precision (depending on `_64bit`) of Floating-point data-processing (2 source) in\n// https://developer.arm.com/documentation/ddi0596/2020-12/Index-by-Encoding/Data-Processing----Scalar-Floating-Point-and-Advanced-SIMD?lang=en\nfunc encodeFpuRRR(op fpuBinOp, rd, rn, rm uint32, _64bit bool) (ret uint32) {\n\t// https://developer.arm.com/documentation/ddi0596/2021-12/SIMD-FP-Instructions/ADD--vector--Add-vectors--scalar--floating-point-and-integer-\n\tvar opcode uint32\n\tswitch op {\n\tcase fpuBinOpAdd:\n\t\topcode = 0b0010\n\tcase fpuBinOpSub:\n\t\topcode = 0b0011\n\tcase fpuBinOpMul:\n\t\topcode = 0b0000\n\tcase fpuBinOpDiv:\n\t\topcode = 0b0001\n\tcase fpuBinOpMax:\n\t\topcode = 0b0100\n\tcase fpuBinOpMin:\n\t\topcode = 0b0101\n\tdefault:\n\t\tpanic(\"BUG\")\n\t}\n\tvar ptype uint32\n\tif _64bit {\n\t\tptype = 0b01\n\t}\n\treturn 0b1111<<25 | ptype<<22 | 0b1<<21 | rm<<16 | opcode<<12 | 0b1<<11 | rn<<5 | rd\n}\n\n// encodeAluRRImm12 encodes as Add/subtract (immediate) in\n// https://developer.arm.com/documentation/ddi0596/2020-12/Index-by-Encoding/Data-Processing----Immediate?lang=en\nfunc encodeAluRRImm12(op aluOp, rd, rn uint32, imm12 uint16, shiftBit byte, _64bit bool) uint32 {\n\tvar _31to24 uint32\n\tswitch op {\n\tcase aluOpAdd:\n\t\t_31to24 = 0b00_10001\n\tcase aluOpAddS:\n\t\t_31to24 = 0b01_10001\n\tcase aluOpSub:\n\t\t_31to24 = 0b10_10001\n\tcase aluOpSubS:\n\t\t_31to24 = 0b11_10001\n\tdefault:\n\t\tpanic(\"BUG\")\n\t}\n\tif _64bit {\n\t\t_31to24 |= 0b1 << 7\n\t}\n\treturn _31to24<<24 | uint32(shiftBit)<<22 | uint32(imm12&0b111111111111)<<10 | rn<<5 | rd\n}\n\n// encodeAluRRR encodes as Data Processing (shifted register), depending on aluOp.\n// https://developer.arm.com/documentation/ddi0596/2020-12/Index-by-Encoding/Data-Processing----Register?lang=en#addsub_shift\nfunc encodeAluRRRShift(op aluOp, rd, rn, rm, amount uint32, shiftOp shiftOp, _64bit bool) uint32 {\n\tvar _31to24 uint32\n\tvar opc, n uint32\n\tswitch op {\n\tcase aluOpAdd:\n\t\t_31to24 = 0b00001011\n\tcase aluOpAddS:\n\t\t_31to24 = 0b00101011\n\tcase aluOpSub:\n\t\t_31to24 = 0b01001011\n\tcase aluOpSubS:\n\t\t_31to24 = 0b01101011\n\tcase aluOpAnd, aluOpOrr, aluOpEor, aluOpAnds:\n\t\t// \"Logical (shifted register)\".\n\t\tswitch op {\n\t\tcase aluOpAnd:\n\t\t\t// all zeros\n\t\tcase aluOpOrr:\n\t\t\topc = 0b01\n\t\tcase aluOpEor:\n\t\t\topc = 0b10\n\t\tcase aluOpAnds:\n\t\t\topc = 0b11\n\t\t}\n\t\t_31to24 = 0b000_01010\n\tdefault:\n\t\tpanic(op.String())\n\t}\n\n\tif _64bit {\n\t\t_31to24 |= 0b1 << 7\n\t}\n\n\tvar shift uint32\n\tswitch shiftOp {\n\tcase shiftOpLSL:\n\t\tshift = 0b00\n\tcase shiftOpLSR:\n\t\tshift = 0b01\n\tcase shiftOpASR:\n\t\tshift = 0b10\n\tdefault:\n\t\tpanic(shiftOp.String())\n\t}\n\treturn opc<<29 | n<<21 | _31to24<<24 | shift<<22 | rm<<16 | (amount << 10) | (rn << 5) | rd\n}\n\n// \"Add/subtract (extended register)\" in\n// https://developer.arm.com/documentation/ddi0596/2020-12/Index-by-Encoding/Data-Processing----Register?lang=en#addsub_ext\nfunc encodeAluRRRExtend(ao aluOp, rd, rn, rm uint32, extOp extendOp, to byte) uint32 {\n\tvar s, op uint32\n\tswitch ao {\n\tcase aluOpAdd:\n\t\top = 0b0\n\tcase aluOpAddS:\n\t\top, s = 0b0, 0b1\n\tcase aluOpSub:\n\t\top = 0b1\n\tcase aluOpSubS:\n\t\top, s = 0b1, 0b1\n\tdefault:\n\t\tpanic(\"BUG: extended register operand can be used only for add/sub\")\n\t}\n\n\tvar sf uint32\n\tif to == 64 {\n\t\tsf = 0b1\n\t}\n\n\tvar option uint32\n\tswitch extOp {\n\tcase extendOpUXTB:\n\t\toption = 0b000\n\tcase extendOpUXTH:\n\t\toption = 0b001\n\tcase extendOpUXTW:\n\t\toption = 0b010\n\tcase extendOpSXTB:\n\t\toption = 0b100\n\tcase extendOpSXTH:\n\t\toption = 0b101\n\tcase extendOpSXTW:\n\t\toption = 0b110\n\tcase extendOpSXTX, extendOpUXTX:\n\t\tpanic(fmt.Sprintf(\"%s is essentially noop, and should be handled much earlier than encoding\", extOp.String()))\n\t}\n\treturn sf<<31 | op<<30 | s<<29 | 0b1011001<<21 | rm<<16 | option<<13 | rn<<5 | rd\n}\n\n// encodeAluRRR encodes as Data Processing (register), depending on aluOp.\n// https://developer.arm.com/documentation/ddi0596/2020-12/Index-by-Encoding/Data-Processing----Register?lang=en\nfunc encodeAluRRR(op aluOp, rd, rn, rm uint32, _64bit, isRnSp bool) uint32 {\n\tvar _31to21, _15to10 uint32\n\tswitch op {\n\tcase aluOpAdd:\n\t\tif isRnSp {\n\t\t\t// \"Extended register\" with UXTW.\n\t\t\t_31to21 = 0b00001011_001\n\t\t\t_15to10 = 0b011000\n\t\t} else {\n\t\t\t// \"Shifted register\" with shift = 0\n\t\t\t_31to21 = 0b00001011_000\n\t\t}\n\tcase aluOpAddS:\n\t\tif isRnSp {\n\t\t\tpanic(\"TODO\")\n\t\t}\n\t\t// \"Shifted register\" with shift = 0\n\t\t_31to21 = 0b00101011_000\n\tcase aluOpSub:\n\t\tif isRnSp {\n\t\t\t// \"Extended register\" with UXTW.\n\t\t\t_31to21 = 0b01001011_001\n\t\t\t_15to10 = 0b011000\n\t\t} else {\n\t\t\t// \"Shifted register\" with shift = 0\n\t\t\t_31to21 = 0b01001011_000\n\t\t}\n\tcase aluOpSubS:\n\t\tif isRnSp {\n\t\t\tpanic(\"TODO\")\n\t\t}\n\t\t// \"Shifted register\" with shift = 0\n\t\t_31to21 = 0b01101011_000\n\tcase aluOpAnd, aluOpOrr, aluOpOrn, aluOpEor, aluOpAnds:\n\t\t// \"Logical (shifted register)\".\n\t\tvar opc, n uint32\n\t\tswitch op {\n\t\tcase aluOpAnd:\n\t\t\t// all zeros\n\t\tcase aluOpOrr:\n\t\t\topc = 0b01\n\t\tcase aluOpOrn:\n\t\t\topc = 0b01\n\t\t\tn = 1\n\t\tcase aluOpEor:\n\t\t\topc = 0b10\n\t\tcase aluOpAnds:\n\t\t\topc = 0b11\n\t\t}\n\t\t_31to21 = 0b000_01010_000 | opc<<8 | n\n\tcase aluOpLsl, aluOpAsr, aluOpLsr, aluOpRotR:\n\t\t// \"Data-processing (2 source)\".\n\t\t_31to21 = 0b00011010_110\n\t\tswitch op {\n\t\tcase aluOpLsl:\n\t\t\t_15to10 = 0b001000\n\t\tcase aluOpLsr:\n\t\t\t_15to10 = 0b001001\n\t\tcase aluOpAsr:\n\t\t\t_15to10 = 0b001010\n\t\tcase aluOpRotR:\n\t\t\t_15to10 = 0b001011\n\t\t}\n\tcase aluOpSDiv:\n\t\t// \"Data-processing (2 source)\".\n\t\t_31to21 = 0b11010110\n\t\t_15to10 = 0b000011\n\tcase aluOpUDiv:\n\t\t// \"Data-processing (2 source)\".\n\t\t_31to21 = 0b11010110\n\t\t_15to10 = 0b000010\n\tdefault:\n\t\tpanic(op.String())\n\t}\n\tif _64bit {\n\t\t_31to21 |= 0b1 << 10\n\t}\n\treturn _31to21<<21 | rm<<16 | (_15to10 << 10) | (rn << 5) | rd\n}\n\n// encodeLogicalShiftedRegister encodes as Logical (shifted register) in\n// https://developer.arm.com/documentation/ddi0596/2020-12/Index-by-Encoding/Data-Processing----Register?lang=en\nfunc encodeLogicalShiftedRegister(sf_opc uint32, shift_N uint32, rm uint32, imm6 uint32, rn, rd uint32) (ret uint32) {\n\tret = sf_opc << 29\n\tret |= 0b01010 << 24\n\tret |= shift_N << 21\n\tret |= rm << 16\n\tret |= imm6 << 10\n\tret |= rn << 5\n\tret |= rd\n\treturn\n}\n\n// encodeAddSubtractImmediate encodes as Add/subtract (immediate) in\n// https://developer.arm.com/documentation/ddi0596/2020-12/Index-by-Encoding/Data-Processing----Immediate?lang=en\nfunc encodeAddSubtractImmediate(sf_op_s uint32, sh uint32, imm12 uint32, rn, rd uint32) (ret uint32) {\n\tret = sf_op_s << 29\n\tret |= 0b100010 << 23\n\tret |= sh << 22\n\tret |= imm12 << 10\n\tret |= rn << 5\n\tret |= rd\n\treturn\n}\n\n// encodePreOrPostIndexLoadStorePair64 encodes as Load/store pair (pre/post-indexed) in\n// https://developer.arm.com/documentation/ddi0596/2021-12/Base-Instructions/LDP--Load-Pair-of-Registers-\n// https://developer.arm.com/documentation/ddi0596/2021-12/Base-Instructions/STP--Store-Pair-of-Registers-\nfunc encodePreOrPostIndexLoadStorePair64(pre bool, load bool, rn, rt, rt2 uint32, imm7 int64) (ret uint32) {\n\tif imm7%8 != 0 {\n\t\tpanic(\"imm7 for pair load/store must be a multiple of 8\")\n\t}\n\timm7 /= 8\n\tret = rt\n\tret |= rn << 5\n\tret |= rt2 << 10\n\tret |= (uint32(imm7) & 0b1111111) << 15\n\tif load {\n\t\tret |= 0b1 << 22\n\t}\n\tret |= 0b101010001 << 23\n\tif pre {\n\t\tret |= 0b1 << 24\n\t}\n\treturn\n}\n\n// encodeUnconditionalBranch encodes as B or BL instructions:\n// https://developer.arm.com/documentation/ddi0596/2021-12/Base-Instructions/B--Branch-\n// https://developer.arm.com/documentation/ddi0596/2021-12/Base-Instructions/BL--Branch-with-Link-\nfunc encodeUnconditionalBranch(link bool, imm26 int64) (ret uint32) {\n\tif imm26%4 != 0 {\n\t\tpanic(\"imm26 for branch must be a multiple of 4\")\n\t}\n\timm26 /= 4\n\tret = uint32(imm26 & 0b11_11111111_11111111_11111111)\n\tret |= 0b101 << 26\n\tif link {\n\t\tret |= 0b1 << 31\n\t}\n\treturn\n}\n\n// encodeCBZCBNZ encodes as either CBZ or CBNZ:\n// https://developer.arm.com/documentation/ddi0596/2021-12/Base-Instructions/CBZ--Compare-and-Branch-on-Zero-\n// https://developer.arm.com/documentation/ddi0596/2021-12/Base-Instructions/CBNZ--Compare-and-Branch-on-Nonzero-\nfunc encodeCBZCBNZ(rt uint32, nz bool, imm19 uint32, _64bit bool) (ret uint32) {\n\tret = rt\n\tret |= imm19 << 5\n\tif nz {\n\t\tret |= 1 << 24\n\t}\n\tret |= 0b11010 << 25\n\tif _64bit {\n\t\tret |= 1 << 31\n\t}\n\treturn\n}\n\n// encodeMoveWideImmediate encodes as either MOVZ, MOVN or MOVK, as Move wide (immediate) in\n// https://developer.arm.com/documentation/ddi0596/2020-12/Index-by-Encoding/Data-Processing----Immediate?lang=en\n//\n// \"shift\" must have been divided by 16 at this point.\nfunc encodeMoveWideImmediate(opc uint32, rd uint32, imm uint64, shift, _64bit uint32) (ret uint32) {\n\tret = rd\n\tret |= uint32(imm&0xffff) << 5\n\tret |= (shift) << 21\n\tret |= 0b100101 << 23\n\tret |= opc << 29\n\tret |= _64bit << 31\n\treturn\n}\n\n// encodeAluRRImm encodes as \"Bitfield\" in\n// https://developer.arm.com/documentation/ddi0596/2020-12/Index-by-Encoding/Data-Processing----Immediate?lang=en#log_imm\nfunc encodeAluRRImm(op aluOp, rd, rn, amount, _64bit uint32) uint32 {\n\tvar opc uint32\n\tvar immr, imms uint32\n\tswitch op {\n\tcase aluOpLsl:\n\t\t// LSL (immediate) is an alias for UBFM.\n\t\t// https://developer.arm.com/documentation/ddi0596/2021-12/Base-Instructions/UBFM--Unsigned-Bitfield-Move-?lang=en\n\t\topc = 0b10\n\t\tif amount == 0 {\n\t\t\t// This can be encoded as NOP, but we don't do it for consistency: lsr xn, xm, #0\n\t\t\timmr = 0\n\t\t\tif _64bit == 1 {\n\t\t\t\timms = 0b111111\n\t\t\t} else {\n\t\t\t\timms = 0b11111\n\t\t\t}\n\t\t} else {\n\t\t\tif _64bit == 1 {\n\t\t\t\timmr = 64 - amount\n\t\t\t} else {\n\t\t\t\timmr = (32 - amount) & 0b11111\n\t\t\t}\n\t\t\timms = immr - 1\n\t\t}\n\tcase aluOpLsr:\n\t\t// LSR (immediate) is an alias for UBFM.\n\t\t// https://developer.arm.com/documentation/ddi0596/2021-12/Base-Instructions/LSR--immediate---Logical-Shift-Right--immediate---an-alias-of-UBFM-?lang=en\n\t\topc = 0b10\n\t\timms, immr = 0b011111|_64bit<<5, amount\n\tcase aluOpAsr:\n\t\t// ASR (immediate) is an alias for SBFM.\n\t\t// https://developer.arm.com/documentation/ddi0596/2020-12/Base-Instructions/SBFM--Signed-Bitfield-Move-?lang=en\n\t\topc = 0b00\n\t\timms, immr = 0b011111|_64bit<<5, amount\n\tdefault:\n\t\tpanic(op.String())\n\t}\n\treturn _64bit<<31 | opc<<29 | 0b100110<<23 | _64bit<<22 | immr<<16 | imms<<10 | rn<<5 | rd\n}\n\n// encodeVecLanes encodes as Data Processing (Advanced SIMD across lanes) depending on vecOp in\n// https://developer.arm.com/documentation/ddi0596/2020-12/Index-by-Encoding/Data-Processing----Scalar-Floating-Point-and-Advanced-SIMD?lang=en\nfunc encodeVecLanes(op vecOp, rd uint32, rn uint32, arr vecArrangement) uint32 {\n\tvar u, q, size, opcode uint32\n\tswitch arr {\n\tcase vecArrangement8B:\n\t\tq, size = 0b0, 0b00\n\tcase vecArrangement16B:\n\t\tq, size = 0b1, 0b00\n\tcase vecArrangement4H:\n\t\tq, size = 0, 0b01\n\tcase vecArrangement8H:\n\t\tq, size = 1, 0b01\n\tcase vecArrangement4S:\n\t\tq, size = 1, 0b10\n\tdefault:\n\t\tpanic(\"unsupported arrangement: \" + arr.String())\n\t}\n\tswitch op {\n\tcase vecOpUaddlv:\n\t\tu, opcode = 1, 0b00011\n\tcase vecOpUminv:\n\t\tu, opcode = 1, 0b11010\n\tcase vecOpAddv:\n\t\tu, opcode = 0, 0b11011\n\tdefault:\n\t\tpanic(\"unsupported or illegal vecOp: \" + op.String())\n\t}\n\treturn q<<30 | u<<29 | 0b1110<<24 | size<<22 | 0b11000<<17 | opcode<<12 | 0b10<<10 | rn<<5 | rd\n}\n\n// encodeVecLanes encodes as Data Processing (Advanced SIMD scalar shift by immediate) depending on vecOp in\n// https://developer.arm.com/documentation/ddi0596/2020-12/Index-by-Encoding/Data-Processing----Scalar-Floating-Point-and-Advanced-SIMD?lang=en\nfunc encodeVecShiftImm(op vecOp, rd uint32, rn, amount uint32, arr vecArrangement) uint32 {\n\tvar u, q, immh, immb, opcode uint32\n\tswitch op {\n\tcase vecOpSshll:\n\t\tu, opcode = 0b0, 0b10100\n\tcase vecOpUshll:\n\t\tu, opcode = 0b1, 0b10100\n\tcase vecOpSshr:\n\t\tu, opcode = 0, 0b00000\n\tdefault:\n\t\tpanic(\"unsupported or illegal vecOp: \" + op.String())\n\t}\n\tswitch arr {\n\tcase vecArrangement16B:\n\t\tq = 0b1\n\t\tfallthrough\n\tcase vecArrangement8B:\n\t\timmh = 0b0001\n\t\timmb = 8 - uint32(amount&0b111)\n\tcase vecArrangement8H:\n\t\tq = 0b1\n\t\tfallthrough\n\tcase vecArrangement4H:\n\t\tv := 16 - uint32(amount&0b1111)\n\t\timmb = v & 0b111\n\t\timmh = 0b0010 | (v >> 3)\n\tcase vecArrangement4S:\n\t\tq = 0b1\n\t\tfallthrough\n\tcase vecArrangement2S:\n\t\tv := 32 - uint32(amount&0b11111)\n\t\timmb = v & 0b111\n\t\timmh = 0b0100 | (v >> 3)\n\tcase vecArrangement2D:\n\t\tq = 0b1\n\t\tv := 64 - uint32(amount&0b111111)\n\t\timmb = v & 0b111\n\t\timmh = 0b1000 | (v >> 3)\n\tdefault:\n\t\tpanic(\"unsupported arrangement: \" + arr.String())\n\t}\n\treturn q<<30 | u<<29 | 0b011110<<23 | immh<<19 | immb<<16 | 0b000001<<10 | opcode<<11 | 0b1<<10 | rn<<5 | rd\n}\n\n// encodeVecTbl encodes as Data Processing (Advanced SIMD table lookup) in\n// https://developer.arm.com/documentation/ddi0596/2020-12/Index-by-Encoding/Data-Processing----Scalar-Floating-Point-and-Advanced-SIMD?lang=en#simd-dp\n//\n// Note: tblOp may encode tbl1, tbl2... in the future. Currently, it is ignored.\nfunc encodeVecTbl(nregs, rd, rn, rm uint32, arr vecArrangement) uint32 {\n\tvar q, op2, len, op uint32\n\n\tswitch nregs {\n\tcase 1:\n\t\t// tbl: single-register\n\t\tlen = 0b00\n\tcase 2:\n\t\t// tbl2: 2-register table\n\t\tlen = 0b01\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"unsupported number or registers %d\", nregs))\n\t}\n\tswitch arr {\n\tcase vecArrangement8B:\n\t\tq = 0b0\n\tcase vecArrangement16B:\n\t\tq = 0b1\n\tdefault:\n\t\tpanic(\"unsupported arrangement: \" + arr.String())\n\t}\n\n\treturn q<<30 | 0b001110<<24 | op2<<22 | rm<<16 | len<<13 | op<<12 | rn<<5 | rd\n}\n\n// encodeVecMisc encodes as Data Processing (Advanced SIMD two-register miscellaneous) depending on vecOp in\n// https://developer.arm.com/documentation/ddi0596/2020-12/Index-by-Encoding/Data-Processing----Scalar-Floating-Point-and-Advanced-SIMD?lang=en#simd-dp\nfunc encodeAdvancedSIMDTwoMisc(op vecOp, rd, rn uint32, arr vecArrangement) uint32 {\n\tvar q, u, size, opcode uint32\n\tswitch op {\n\tcase vecOpCnt:\n\t\topcode = 0b00101\n\t\tswitch arr {\n\t\tcase vecArrangement8B:\n\t\t\tq, size = 0b0, 0b00\n\t\tcase vecArrangement16B:\n\t\t\tq, size = 0b1, 0b00\n\t\tdefault:\n\t\t\tpanic(\"unsupported arrangement: \" + arr.String())\n\t\t}\n\tcase vecOpCmeq0:\n\t\tif arr == vecArrangement1D {\n\t\t\tpanic(\"unsupported arrangement: \" + arr.String())\n\t\t}\n\t\topcode = 0b01001\n\t\tsize, q = arrToSizeQEncoded(arr)\n\tcase vecOpNot:\n\t\tu = 1\n\t\topcode = 0b00101\n\t\tswitch arr {\n\t\tcase vecArrangement8B:\n\t\t\tq, size = 0b0, 0b00\n\t\tcase vecArrangement16B:\n\t\t\tq, size = 0b1, 0b00\n\t\tdefault:\n\t\t\tpanic(\"unsupported arrangement: \" + arr.String())\n\t\t}\n\tcase vecOpAbs:\n\t\tif arr == vecArrangement1D {\n\t\t\tpanic(\"unsupported arrangement: \" + arr.String())\n\t\t}\n\t\topcode = 0b01011\n\t\tu = 0b0\n\t\tsize, q = arrToSizeQEncoded(arr)\n\tcase vecOpNeg:\n\t\tif arr == vecArrangement1D {\n\t\t\tpanic(\"unsupported arrangement: \" + arr.String())\n\t\t}\n\t\topcode = 0b01011\n\t\tu = 0b1\n\t\tsize, q = arrToSizeQEncoded(arr)\n\tcase vecOpFabs:\n\t\tif arr < vecArrangement2S || arr == vecArrangement1D {\n\t\t\tpanic(\"unsupported arrangement: \" + arr.String())\n\t\t}\n\t\topcode = 0b01111\n\t\tu = 0b0\n\t\tsize, q = arrToSizeQEncoded(arr)\n\tcase vecOpFneg:\n\t\tif arr < vecArrangement2S || arr == vecArrangement1D {\n\t\t\tpanic(\"unsupported arrangement: \" + arr.String())\n\t\t}\n\t\topcode = 0b01111\n\t\tu = 0b1\n\t\tsize, q = arrToSizeQEncoded(arr)\n\tcase vecOpFrintm:\n\t\tu = 0b0\n\t\topcode = 0b11001\n\t\tswitch arr {\n\t\tcase vecArrangement2S:\n\t\t\tq, size = 0b0, 0b00\n\t\tcase vecArrangement4S:\n\t\t\tq, size = 0b1, 0b00\n\t\tcase vecArrangement2D:\n\t\t\tq, size = 0b1, 0b01\n\t\tdefault:\n\t\t\tpanic(\"unsupported arrangement: \" + arr.String())\n\t\t}\n\tcase vecOpFrintn:\n\t\tu = 0b0\n\t\topcode = 0b11000\n\t\tswitch arr {\n\t\tcase vecArrangement2S:\n\t\t\tq, size = 0b0, 0b00\n\t\tcase vecArrangement4S:\n\t\t\tq, size = 0b1, 0b00\n\t\tcase vecArrangement2D:\n\t\t\tq, size = 0b1, 0b01\n\t\tdefault:\n\t\t\tpanic(\"unsupported arrangement: \" + arr.String())\n\t\t}\n\tcase vecOpFrintp:\n\t\tu = 0b0\n\t\topcode = 0b11000\n\t\tif arr < vecArrangement2S || arr == vecArrangement1D {\n\t\t\tpanic(\"unsupported arrangement: \" + arr.String())\n\t\t}\n\t\tsize, q = arrToSizeQEncoded(arr)\n\tcase vecOpFrintz:\n\t\tu = 0b0\n\t\topcode = 0b11001\n\t\tif arr < vecArrangement2S || arr == vecArrangement1D {\n\t\t\tpanic(\"unsupported arrangement: \" + arr.String())\n\t\t}\n\t\tsize, q = arrToSizeQEncoded(arr)\n\tcase vecOpFsqrt:\n\t\tif arr < vecArrangement2S || arr == vecArrangement1D {\n\t\t\tpanic(\"unsupported arrangement: \" + arr.String())\n\t\t}\n\t\topcode = 0b11111\n\t\tu = 0b1\n\t\tsize, q = arrToSizeQEncoded(arr)\n\tcase vecOpFcvtl:\n\t\topcode = 0b10111\n\t\tu = 0b0\n\t\tswitch arr {\n\t\tcase vecArrangement2S:\n\t\t\tsize, q = 0b01, 0b0\n\t\tcase vecArrangement4H:\n\t\t\tsize, q = 0b00, 0b0\n\t\tdefault:\n\t\t\tpanic(\"unsupported arrangement: \" + arr.String())\n\t\t}\n\tcase vecOpFcvtn:\n\t\topcode = 0b10110\n\t\tu = 0b0\n\t\tswitch arr {\n\t\tcase vecArrangement2S:\n\t\t\tsize, q = 0b01, 0b0\n\t\tcase vecArrangement4H:\n\t\t\tsize, q = 0b00, 0b0\n\t\tdefault:\n\t\t\tpanic(\"unsupported arrangement: \" + arr.String())\n\t\t}\n\tcase vecOpFcvtzs:\n\t\topcode = 0b11011\n\t\tu = 0b0\n\t\tswitch arr {\n\t\tcase vecArrangement2S:\n\t\t\tq, size = 0b0, 0b10\n\t\tcase vecArrangement4S:\n\t\t\tq, size = 0b1, 0b10\n\t\tcase vecArrangement2D:\n\t\t\tq, size = 0b1, 0b11\n\t\tdefault:\n\t\t\tpanic(\"unsupported arrangement: \" + arr.String())\n\t\t}\n\tcase vecOpFcvtzu:\n\t\topcode = 0b11011\n\t\tu = 0b1\n\t\tswitch arr {\n\t\tcase vecArrangement2S:\n\t\t\tq, size = 0b0, 0b10\n\t\tcase vecArrangement4S:\n\t\t\tq, size = 0b1, 0b10\n\t\tcase vecArrangement2D:\n\t\t\tq, size = 0b1, 0b11\n\t\tdefault:\n\t\t\tpanic(\"unsupported arrangement: \" + arr.String())\n\t\t}\n\tcase vecOpScvtf:\n\t\topcode = 0b11101\n\t\tu = 0b0\n\t\tswitch arr {\n\t\tcase vecArrangement4S:\n\t\t\tq, size = 0b1, 0b00\n\t\tcase vecArrangement2S:\n\t\t\tq, size = 0b0, 0b00\n\t\tcase vecArrangement2D:\n\t\t\tq, size = 0b1, 0b01\n\t\tdefault:\n\t\t\tpanic(\"unsupported arrangement: \" + arr.String())\n\t\t}\n\tcase vecOpUcvtf:\n\t\topcode = 0b11101\n\t\tu = 0b1\n\t\tswitch arr {\n\t\tcase vecArrangement4S:\n\t\t\tq, size = 0b1, 0b00\n\t\tcase vecArrangement2S:\n\t\t\tq, size = 0b0, 0b00\n\t\tcase vecArrangement2D:\n\t\t\tq, size = 0b1, 0b01\n\t\tdefault:\n\t\t\tpanic(\"unsupported arrangement: \" + arr.String())\n\t\t}\n\tcase vecOpSqxtn:\n\t\t// When q == 1 it encodes sqxtn2 (operates on upper 64 bits).\n\t\topcode = 0b10100\n\t\tu = 0b0\n\t\tif arr > vecArrangement4S {\n\t\t\tpanic(\"unsupported arrangement: \" + arr.String())\n\t\t}\n\t\tsize, q = arrToSizeQEncoded(arr)\n\tcase vecOpUqxtn:\n\t\t// When q == 1 it encodes uqxtn2 (operates on upper 64 bits).\n\t\topcode = 0b10100\n\t\tu = 0b1\n\t\tif arr > vecArrangement4S {\n\t\t\tpanic(\"unsupported arrangement: \" + arr.String())\n\t\t}\n\t\tsize, q = arrToSizeQEncoded(arr)\n\tcase vecOpSqxtun:\n\t\t// When q == 1 it encodes sqxtun2 (operates on upper 64 bits).\n\t\topcode = 0b10010 // 0b10100\n\t\tu = 0b1\n\t\tif arr > vecArrangement4S {\n\t\t\tpanic(\"unsupported arrangement: \" + arr.String())\n\t\t}\n\t\tsize, q = arrToSizeQEncoded(arr)\n\tcase vecOpRev64:\n\t\topcode = 0b00000\n\t\tsize, q = arrToSizeQEncoded(arr)\n\tcase vecOpXtn:\n\t\tu = 0b0\n\t\topcode = 0b10010\n\t\tsize, q = arrToSizeQEncoded(arr)\n\tcase vecOpShll:\n\t\tu = 0b1\n\t\topcode = 0b10011\n\t\tswitch arr {\n\t\tcase vecArrangement8B:\n\t\t\tq, size = 0b0, 0b00\n\t\tcase vecArrangement4H:\n\t\t\tq, size = 0b0, 0b01\n\t\tcase vecArrangement2S:\n\t\t\tq, size = 0b0, 0b10\n\t\tdefault:\n\t\t\tpanic(\"unsupported arrangement: \" + arr.String())\n\t\t}\n\tdefault:\n\t\tpanic(\"unsupported or illegal vecOp: \" + op.String())\n\t}\n\treturn q<<30 | u<<29 | 0b01110<<24 | size<<22 | 0b10000<<17 | opcode<<12 | 0b10<<10 | rn<<5 | rd\n}\n\n// brTableSequenceOffsetTableBegin is the offset inside the brTableSequence where the table begins after 4 instructions\nconst brTableSequenceOffsetTableBegin = 16\n\nfunc encodeBrTableSequence(c backend.Compiler, index regalloc.VReg, targets []uint32) {\n\ttmpRegNumber := regNumberInEncoding[tmp]\n\tindexNumber := regNumberInEncoding[index.RealReg()]\n\n\t// adr tmpReg, PC+16 (PC+16 is the address of the first label offset)\n\t// ldrsw index, [tmpReg, index, UXTW 2] ;; index = int64(*(tmpReg + index*8))\n\t// add tmpReg, tmpReg, index\n\t// br tmpReg\n\t// [offset_to_l1, offset_to_l2, ..., offset_to_lN]\n\tc.Emit4Bytes(encodeAdr(tmpRegNumber, 16))\n\tc.Emit4Bytes(encodeLoadOrStore(sLoad32, indexNumber,\n\t\taddressMode{kind: addressModeKindRegScaledExtended, rn: tmpRegVReg, rm: index, extOp: extendOpUXTW},\n\t))\n\tc.Emit4Bytes(encodeAluRRR(aluOpAdd, tmpRegNumber, tmpRegNumber, indexNumber, true, false))\n\tc.Emit4Bytes(encodeUnconditionalBranchReg(tmpRegNumber, false))\n\n\t// Offsets are resolved in ResolveRelativeAddress phase.\n\tfor _, offset := range targets {\n\t\tif wazevoapi.PrintMachineCodeHexPerFunctionDisassemblable {\n\t\t\t// Inlined offset tables cannot be disassembled properly, so pad dummy instructions to make the debugging easier.\n\t\t\tc.Emit4Bytes(dummyInstruction)\n\t\t} else {\n\t\t\tc.Emit4Bytes(offset)\n\t\t}\n\t}\n}\n\n// encodeExitSequence matches the implementation detail of functionABI.emitGoEntryPreamble.\nfunc encodeExitSequence(c backend.Compiler, ctxReg regalloc.VReg) {\n\t// Restore the FP, SP and LR, and return to the Go code:\n\t// \t\tldr lr,  [ctxReg, #GoReturnAddress]\n\t// \t\tldr fp,  [ctxReg, #OriginalFramePointer]\n\t// \t\tldr tmp, [ctxReg, #OriginalStackPointer]\n\t//      mov sp, tmp ;; sp cannot be str'ed directly.\n\t// \t\tret ;; --> return to the Go code\n\n\tvar ctxEvicted bool\n\tif ctx := ctxReg.RealReg(); ctx == fp || ctx == lr {\n\t\t// In order to avoid overwriting the context register, we move ctxReg to tmp.\n\t\tc.Emit4Bytes(encodeMov64(regNumberInEncoding[tmp], regNumberInEncoding[ctx], false, false))\n\t\tctxReg = tmpRegVReg\n\t\tctxEvicted = true\n\t}\n\n\trestoreLr := encodeLoadOrStore(\n\t\tuLoad64,\n\t\tregNumberInEncoding[lr],\n\t\taddressMode{\n\t\t\tkind: addressModeKindRegUnsignedImm12,\n\t\t\trn:   ctxReg,\n\t\t\timm:  wazevoapi.ExecutionContextOffsetGoReturnAddress.I64(),\n\t\t},\n\t)\n\n\trestoreFp := encodeLoadOrStore(\n\t\tuLoad64,\n\t\tregNumberInEncoding[fp],\n\t\taddressMode{\n\t\t\tkind: addressModeKindRegUnsignedImm12,\n\t\t\trn:   ctxReg,\n\t\t\timm:  wazevoapi.ExecutionContextOffsetOriginalFramePointer.I64(),\n\t\t},\n\t)\n\n\trestoreSpToTmp := encodeLoadOrStore(\n\t\tuLoad64,\n\t\tregNumberInEncoding[tmp],\n\t\taddressMode{\n\t\t\tkind: addressModeKindRegUnsignedImm12,\n\t\t\trn:   ctxReg,\n\t\t\timm:  wazevoapi.ExecutionContextOffsetOriginalStackPointer.I64(),\n\t\t},\n\t)\n\n\tmovTmpToSp := encodeAddSubtractImmediate(0b100, 0, 0,\n\t\tregNumberInEncoding[tmp], regNumberInEncoding[sp])\n\n\tc.Emit4Bytes(restoreFp)\n\tc.Emit4Bytes(restoreLr)\n\tc.Emit4Bytes(restoreSpToTmp)\n\tc.Emit4Bytes(movTmpToSp)\n\tc.Emit4Bytes(encodeRet())\n\tif !ctxEvicted {\n\t\t// In order to have the fixed-length exit sequence, we need to padd the binary.\n\t\t// Since this will never be reached, we insert a dummy instruction.\n\t\tc.Emit4Bytes(dummyInstruction)\n\t}\n}\n\nfunc encodeRet() uint32 {\n\t// https://developer.arm.com/documentation/ddi0596/2020-12/Base-Instructions/RET--Return-from-subroutine-?lang=en\n\treturn 0b1101011001011111<<16 | regNumberInEncoding[lr]<<5\n}\n\nfunc encodeAtomicRmw(op atomicRmwOp, rs, rt, rn uint32, size uint32) uint32 {\n\tvar _31to21, _15to10, sz uint32\n\n\tswitch size {\n\tcase 8:\n\t\tsz = 0b11\n\tcase 4:\n\t\tsz = 0b10\n\tcase 2:\n\t\tsz = 0b01\n\tcase 1:\n\t\tsz = 0b00\n\t}\n\n\t_31to21 = 0b00111000_111 | sz<<9\n\n\tswitch op {\n\tcase atomicRmwOpAdd:\n\t\t_15to10 = 0b000000\n\tcase atomicRmwOpClr:\n\t\t_15to10 = 0b000100\n\tcase atomicRmwOpSet:\n\t\t_15to10 = 0b001100\n\tcase atomicRmwOpEor:\n\t\t_15to10 = 0b001000\n\tcase atomicRmwOpSwp:\n\t\t_15to10 = 0b100000\n\t}\n\n\treturn _31to21<<21 | rs<<16 | _15to10<<10 | rn<<5 | rt\n}\n\nfunc encodeAtomicCas(rs, rt, rn uint32, size uint32) uint32 {\n\tvar _31to21, _15to10, sz uint32\n\n\tswitch size {\n\tcase 8:\n\t\tsz = 0b11\n\tcase 4:\n\t\tsz = 0b10\n\tcase 2:\n\t\tsz = 0b01\n\tcase 1:\n\t\tsz = 0b00\n\t}\n\n\t_31to21 = 0b00001000_111 | sz<<9\n\t_15to10 = 0b111111\n\n\treturn _31to21<<21 | rs<<16 | _15to10<<10 | rn<<5 | rt\n}\n\nfunc encodeAtomicLoadStore(rn, rt, size, l uint32) uint32 {\n\tvar _31to21, _20to16, _15to10, sz uint32\n\n\tswitch size {\n\tcase 8:\n\t\tsz = 0b11\n\tcase 4:\n\t\tsz = 0b10\n\tcase 2:\n\t\tsz = 0b01\n\tcase 1:\n\t\tsz = 0b00\n\t}\n\n\t_31to21 = 0b00001000_100 | sz<<9 | l<<1\n\t_20to16 = 0b11111\n\t_15to10 = 0b111111\n\n\treturn _31to21<<21 | _20to16<<16 | _15to10<<10 | rn<<5 | rt\n}\n\nfunc encodeDMB() uint32 {\n\treturn 0b11010101000000110011101110111111\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/arm64/lower_constant.go",
    "content": "package arm64\n\nimport (\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/backend/regalloc\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/ssa\"\n)\n\n// lowerConstant allocates a new VReg and inserts the instruction to load the constant value.\nfunc (m *machine) lowerConstant(instr *ssa.Instruction) (vr regalloc.VReg) {\n\tval := instr.Return()\n\tvalType := val.Type()\n\n\tvr = m.compiler.AllocateVReg(valType)\n\tv := instr.ConstantVal()\n\tm.insertLoadConstant(v, valType, vr)\n\treturn\n}\n\n// InsertLoadConstantBlockArg implements backend.Machine.\nfunc (m *machine) InsertLoadConstantBlockArg(instr *ssa.Instruction, vr regalloc.VReg) {\n\tval := instr.Return()\n\tvalType := val.Type()\n\tv := instr.ConstantVal()\n\tload := m.allocateInstr()\n\tload.asLoadConstBlockArg(v, valType, vr)\n\tm.insert(load)\n}\n\nfunc (m *machine) lowerLoadConstantBlockArgAfterRegAlloc(i *instruction) {\n\tv, typ, dst := i.loadConstBlockArgData()\n\tm.insertLoadConstant(v, typ, dst)\n}\n\nfunc (m *machine) insertLoadConstant(v uint64, valType ssa.Type, vr regalloc.VReg) {\n\tif valType.Bits() < 64 { // Clear the redundant bits just in case it's unexpectedly sign-extended, etc.\n\t\tv = v & ((1 << valType.Bits()) - 1)\n\t}\n\n\tswitch valType {\n\tcase ssa.TypeF32:\n\t\tloadF := m.allocateInstr()\n\t\tloadF.asLoadFpuConst32(vr, v)\n\t\tm.insert(loadF)\n\tcase ssa.TypeF64:\n\t\tloadF := m.allocateInstr()\n\t\tloadF.asLoadFpuConst64(vr, v)\n\t\tm.insert(loadF)\n\tcase ssa.TypeI32:\n\t\tif v == 0 {\n\t\t\tm.InsertMove(vr, xzrVReg, ssa.TypeI32)\n\t\t} else {\n\t\t\tm.lowerConstantI32(vr, int32(v))\n\t\t}\n\tcase ssa.TypeI64:\n\t\tif v == 0 {\n\t\t\tm.InsertMove(vr, xzrVReg, ssa.TypeI64)\n\t\t} else {\n\t\t\tm.lowerConstantI64(vr, int64(v))\n\t\t}\n\tdefault:\n\t\tpanic(\"TODO\")\n\t}\n}\n\n// The following logics are based on the old asm/arm64 package.\n// https://github.com/tetratelabs/wazero/blob/39f2ff23a6d609e10c82b9cc0b981f6de5b87a9c/internal/asm/arm64/impl.go\n\nfunc (m *machine) lowerConstantI32(dst regalloc.VReg, c int32) {\n\t// Following the logic here:\n\t// https://github.com/golang/go/blob/release-branch.go1.15/src/cmd/internal/obj/arm64/asm7.go#L1637\n\tic := int64(uint32(c))\n\tif ic >= 0 && (ic <= 0xfff || (ic&0xfff) == 0 && (uint64(ic>>12) <= 0xfff)) {\n\t\tif isBitMaskImmediate(uint64(c), false) {\n\t\t\tm.lowerConstViaBitMaskImmediate(uint64(uint32(c)), dst, false)\n\t\t\treturn\n\t\t}\n\t}\n\n\tif t := const16bitAligned(int64(uint32(c))); t >= 0 {\n\t\t// If the const can fit within 16-bit alignment, for example, 0xffff, 0xffff_0000 or 0xffff_0000_0000_0000\n\t\t// We could load it into temporary with movk.\n\t\tm.insertMOVZ(dst, uint64(uint32(c)>>(16*t)), t, false)\n\t} else if t := const16bitAligned(int64(^c)); t >= 0 {\n\t\t// Also, if the inverse of the const can fit within 16-bit range, do the same ^^.\n\t\tm.insertMOVN(dst, uint64(^c>>(16*t)), t, false)\n\t} else if isBitMaskImmediate(uint64(uint32(c)), false) {\n\t\tm.lowerConstViaBitMaskImmediate(uint64(c), dst, false)\n\t} else {\n\t\t// Otherwise, we use MOVZ and MOVK to load it.\n\t\tc16 := uint16(c)\n\t\tm.insertMOVZ(dst, uint64(c16), 0, false)\n\t\tc16 = uint16(uint32(c) >> 16)\n\t\tm.insertMOVK(dst, uint64(c16), 1, false)\n\t}\n}\n\nfunc (m *machine) lowerConstantI64(dst regalloc.VReg, c int64) {\n\t// Following the logic here:\n\t// https://github.com/golang/go/blob/release-branch.go1.15/src/cmd/internal/obj/arm64/asm7.go#L1798-L1852\n\tif c >= 0 && (c <= 0xfff || (c&0xfff) == 0 && (uint64(c>>12) <= 0xfff)) {\n\t\tif isBitMaskImmediate(uint64(c), true) {\n\t\t\tm.lowerConstViaBitMaskImmediate(uint64(c), dst, true)\n\t\t\treturn\n\t\t}\n\t}\n\n\tif t := const16bitAligned(c); t >= 0 {\n\t\t// If the const can fit within 16-bit alignment, for example, 0xffff, 0xffff_0000 or 0xffff_0000_0000_0000\n\t\t// We could load it into temporary with movk.\n\t\tm.insertMOVZ(dst, uint64(c)>>(16*t), t, true)\n\t} else if t := const16bitAligned(^c); t >= 0 {\n\t\t// Also, if the reverse of the const can fit within 16-bit range, do the same ^^.\n\t\tm.insertMOVN(dst, uint64(^c)>>(16*t), t, true)\n\t} else if isBitMaskImmediate(uint64(c), true) {\n\t\tm.lowerConstViaBitMaskImmediate(uint64(c), dst, true)\n\t} else {\n\t\tm.load64bitConst(c, dst)\n\t}\n}\n\nfunc (m *machine) lowerConstViaBitMaskImmediate(c uint64, dst regalloc.VReg, b64 bool) {\n\tinstr := m.allocateInstr()\n\tinstr.asALUBitmaskImm(aluOpOrr, dst, xzrVReg, c, b64)\n\tm.insert(instr)\n}\n\n// isBitMaskImmediate determines if the value can be encoded as \"bitmask immediate\".\n//\n//\tSuch an immediate is a 32-bit or 64-bit pattern viewed as a vector of identical elements of size e = 2, 4, 8, 16, 32, or 64 bits.\n//\tEach element contains the same sub-pattern: a single run of 1 to e-1 non-zero bits, rotated by 0 to e-1 bits.\n//\n// See https://developer.arm.com/documentation/dui0802/b/A64-General-Instructions/MOV--bitmask-immediate-\nfunc isBitMaskImmediate(x uint64, _64 bool) bool {\n\t// All zeros and ones are not \"bitmask immediate\" by definition.\n\tif x == 0 || (_64 && x == 0xffff_ffff_ffff_ffff) || (!_64 && x == 0xffff_ffff) {\n\t\treturn false\n\t}\n\n\tswitch {\n\tcase x != x>>32|x<<32:\n\t\t// e = 64\n\tcase x != x>>16|x<<48:\n\t\t// e = 32 (x == x>>32|x<<32).\n\t\t// e.g. 0x00ff_ff00_00ff_ff00\n\t\tx = uint64(int32(x))\n\tcase x != x>>8|x<<56:\n\t\t// e = 16 (x == x>>16|x<<48).\n\t\t// e.g. 0x00ff_00ff_00ff_00ff\n\t\tx = uint64(int16(x))\n\tcase x != x>>4|x<<60:\n\t\t// e = 8 (x == x>>8|x<<56).\n\t\t// e.g. 0x0f0f_0f0f_0f0f_0f0f\n\t\tx = uint64(int8(x))\n\tdefault:\n\t\t// e = 4 or 2.\n\t\treturn true\n\t}\n\treturn sequenceOfSetbits(x) || sequenceOfSetbits(^x)\n}\n\n// sequenceOfSetbits returns true if the number's binary representation is the sequence set bit (1).\n// For example: 0b1110 -> true, 0b1010 -> false\nfunc sequenceOfSetbits(x uint64) bool {\n\ty := getLowestBit(x)\n\t// If x is a sequence of set bit, this should results in the number\n\t// with only one set bit (i.e. power of two).\n\ty += x\n\treturn (y-1)&y == 0\n}\n\nfunc getLowestBit(x uint64) uint64 {\n\treturn x & (^x + 1)\n}\n\n// const16bitAligned check if the value is on the 16-bit alignment.\n// If so, returns the shift num divided by 16, and otherwise -1.\nfunc const16bitAligned(v int64) (ret int) {\n\tret = -1\n\tfor s := 0; s < 64; s += 16 {\n\t\tif (uint64(v) &^ (uint64(0xffff) << uint(s))) == 0 {\n\t\t\tret = s / 16\n\t\t\tbreak\n\t\t}\n\t}\n\treturn\n}\n\n// load64bitConst loads a 64-bit constant into the register, following the same logic to decide how to load large 64-bit\n// consts as in the Go assembler.\n//\n// See https://github.com/golang/go/blob/release-branch.go1.15/src/cmd/internal/obj/arm64/asm7.go#L6632-L6759\nfunc (m *machine) load64bitConst(c int64, dst regalloc.VReg) {\n\tvar bits [4]uint64\n\tvar zeros, negs int\n\tfor i := 0; i < 4; i++ {\n\t\tbits[i] = uint64(c) >> uint(i*16) & 0xffff\n\t\tif v := bits[i]; v == 0 {\n\t\t\tzeros++\n\t\t} else if v == 0xffff {\n\t\t\tnegs++\n\t\t}\n\t}\n\n\tif zeros == 3 {\n\t\t// one MOVZ instruction.\n\t\tfor i, v := range bits {\n\t\t\tif v != 0 {\n\t\t\t\tm.insertMOVZ(dst, v, i, true)\n\t\t\t}\n\t\t}\n\t} else if negs == 3 {\n\t\t// one MOVN instruction.\n\t\tfor i, v := range bits {\n\t\t\tif v != 0xffff {\n\t\t\t\tv = ^v\n\t\t\t\tm.insertMOVN(dst, v, i, true)\n\t\t\t}\n\t\t}\n\t} else if zeros == 2 {\n\t\t// one MOVZ then one OVK.\n\t\tvar movz bool\n\t\tfor i, v := range bits {\n\t\t\tif !movz && v != 0 { // MOVZ.\n\t\t\t\tm.insertMOVZ(dst, v, i, true)\n\t\t\t\tmovz = true\n\t\t\t} else if v != 0 {\n\t\t\t\tm.insertMOVK(dst, v, i, true)\n\t\t\t}\n\t\t}\n\n\t} else if negs == 2 {\n\t\t// one MOVN then one or two MOVK.\n\t\tvar movn bool\n\t\tfor i, v := range bits { // Emit MOVN.\n\t\t\tif !movn && v != 0xffff {\n\t\t\t\tv = ^v\n\t\t\t\t// https://developer.arm.com/documentation/dui0802/a/A64-General-Instructions/MOVN\n\t\t\t\tm.insertMOVN(dst, v, i, true)\n\t\t\t\tmovn = true\n\t\t\t} else if v != 0xffff {\n\t\t\t\tm.insertMOVK(dst, v, i, true)\n\t\t\t}\n\t\t}\n\n\t} else if zeros == 1 {\n\t\t// one MOVZ then two MOVK.\n\t\tvar movz bool\n\t\tfor i, v := range bits {\n\t\t\tif !movz && v != 0 { // MOVZ.\n\t\t\t\tm.insertMOVZ(dst, v, i, true)\n\t\t\t\tmovz = true\n\t\t\t} else if v != 0 {\n\t\t\t\tm.insertMOVK(dst, v, i, true)\n\t\t\t}\n\t\t}\n\n\t} else if negs == 1 {\n\t\t// one MOVN then two MOVK.\n\t\tvar movn bool\n\t\tfor i, v := range bits { // Emit MOVN.\n\t\t\tif !movn && v != 0xffff {\n\t\t\t\tv = ^v\n\t\t\t\t// https://developer.arm.com/documentation/dui0802/a/A64-General-Instructions/MOVN\n\t\t\t\tm.insertMOVN(dst, v, i, true)\n\t\t\t\tmovn = true\n\t\t\t} else if v != 0xffff {\n\t\t\t\tm.insertMOVK(dst, v, i, true)\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\t// one MOVZ then up to three MOVK.\n\t\tvar movz bool\n\t\tfor i, v := range bits {\n\t\t\tif !movz && v != 0 { // MOVZ.\n\t\t\t\tm.insertMOVZ(dst, v, i, true)\n\t\t\t\tmovz = true\n\t\t\t} else if v != 0 {\n\t\t\t\tm.insertMOVK(dst, v, i, true)\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc (m *machine) insertMOVZ(dst regalloc.VReg, v uint64, shift int, dst64 bool) {\n\tinstr := m.allocateInstr()\n\tinstr.asMOVZ(dst, v, uint32(shift), dst64)\n\tm.insert(instr)\n}\n\nfunc (m *machine) insertMOVK(dst regalloc.VReg, v uint64, shift int, dst64 bool) {\n\tinstr := m.allocateInstr()\n\tinstr.asMOVK(dst, v, uint32(shift), dst64)\n\tm.insert(instr)\n}\n\nfunc (m *machine) insertMOVN(dst regalloc.VReg, v uint64, shift int, dst64 bool) {\n\tinstr := m.allocateInstr()\n\tinstr.asMOVN(dst, v, uint32(shift), dst64)\n\tm.insert(instr)\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/arm64/lower_instr.go",
    "content": "package arm64\n\n// Files prefixed as lower_instr** do the instruction selection, meaning that lowering SSA level instructions\n// into machine specific instructions.\n//\n// Importantly, what the lower** functions does includes tree-matching; find the pattern from the given instruction tree,\n// and merge the multiple instructions if possible. It can be considered as \"N:1\" instruction selection.\n\nimport (\n\t\"fmt\"\n\t\"math\"\n\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/backend/regalloc\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/ssa\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi\"\n)\n\n// LowerSingleBranch implements backend.Machine.\nfunc (m *machine) LowerSingleBranch(br *ssa.Instruction) {\n\tswitch br.Opcode() {\n\tcase ssa.OpcodeJump:\n\t\t_, _, targetBlkID := br.BranchData()\n\t\tif br.IsFallthroughJump() {\n\t\t\treturn\n\t\t}\n\t\tb := m.allocateInstr()\n\t\ttargetBlk := m.compiler.SSABuilder().BasicBlock(targetBlkID)\n\t\tif targetBlk.ReturnBlock() {\n\t\t\tb.asRet()\n\t\t} else {\n\t\t\tb.asBr(ssaBlockLabel(targetBlk))\n\t\t}\n\t\tm.insert(b)\n\tcase ssa.OpcodeBrTable:\n\t\tm.lowerBrTable(br)\n\tdefault:\n\t\tpanic(\"BUG: unexpected branch opcode\" + br.Opcode().String())\n\t}\n}\n\nfunc (m *machine) lowerBrTable(i *ssa.Instruction) {\n\tindex, targetBlockIDs := i.BrTableData()\n\ttargetBlockCount := len(targetBlockIDs.View())\n\tindexOperand := m.getOperand_NR(m.compiler.ValueDefinition(index), extModeNone)\n\n\t// Firstly, we have to do the bounds check of the index, and\n\t// set it to the default target (sitting at the end of the list) if it's out of bounds.\n\n\t// mov  maxIndexReg #maximum_index\n\t// subs wzr, index, maxIndexReg\n\t// csel adjustedIndex, maxIndexReg, index, hs ;; if index is higher or equal than maxIndexReg.\n\tmaxIndexReg := m.compiler.AllocateVReg(ssa.TypeI32)\n\tm.lowerConstantI32(maxIndexReg, int32(targetBlockCount-1))\n\tsubs := m.allocateInstr()\n\tsubs.asALU(aluOpSubS, xzrVReg, indexOperand, operandNR(maxIndexReg), false)\n\tm.insert(subs)\n\tcsel := m.allocateInstr()\n\tadjustedIndex := m.compiler.AllocateVReg(ssa.TypeI32)\n\tcsel.asCSel(adjustedIndex, operandNR(maxIndexReg), indexOperand, hs, false)\n\tm.insert(csel)\n\n\tbrSequence := m.allocateInstr()\n\n\ttableIndex := m.addJmpTableTarget(targetBlockIDs)\n\tbrSequence.asBrTableSequence(adjustedIndex, tableIndex, targetBlockCount)\n\tm.insert(brSequence)\n}\n\n// LowerConditionalBranch implements backend.Machine.\nfunc (m *machine) LowerConditionalBranch(b *ssa.Instruction) {\n\tcval, args, targetBlkID := b.BranchData()\n\tif len(args) > 0 {\n\t\tpanic(fmt.Sprintf(\n\t\t\t\"conditional branch shouldn't have args; likely a bug in critical edge splitting: from %s to %s\",\n\t\t\tm.currentLabelPos.sb,\n\t\t\ttargetBlkID,\n\t\t))\n\t}\n\n\ttargetBlk := m.compiler.SSABuilder().BasicBlock(targetBlkID)\n\ttarget := ssaBlockLabel(targetBlk)\n\tcvalDef := m.compiler.ValueDefinition(cval)\n\n\tswitch {\n\tcase m.compiler.MatchInstr(cvalDef, ssa.OpcodeIcmp): // This case, we can use the ALU flag set by SUBS instruction.\n\t\tcvalInstr := cvalDef.Instr\n\t\tx, y, c := cvalInstr.IcmpData()\n\t\tcc, signed := condFlagFromSSAIntegerCmpCond(c), c.Signed()\n\t\tif b.Opcode() == ssa.OpcodeBrz {\n\t\t\tcc = cc.invert()\n\t\t}\n\n\t\tif !m.tryLowerBandToFlag(x, y) {\n\t\t\tm.lowerIcmpToFlag(x, y, signed)\n\t\t}\n\t\tcbr := m.allocateInstr()\n\t\tcbr.asCondBr(cc.asCond(), target, false /* ignored */)\n\t\tm.insert(cbr)\n\t\tcvalDef.Instr.MarkLowered()\n\tcase m.compiler.MatchInstr(cvalDef, ssa.OpcodeFcmp): // This case we can use the Fpu flag directly.\n\t\tcvalInstr := cvalDef.Instr\n\t\tx, y, c := cvalInstr.FcmpData()\n\t\tcc := condFlagFromSSAFloatCmpCond(c)\n\t\tif b.Opcode() == ssa.OpcodeBrz {\n\t\t\tcc = cc.invert()\n\t\t}\n\t\tm.lowerFcmpToFlag(x, y)\n\t\tcbr := m.allocateInstr()\n\t\tcbr.asCondBr(cc.asCond(), target, false /* ignored */)\n\t\tm.insert(cbr)\n\t\tcvalDef.Instr.MarkLowered()\n\tdefault:\n\t\trn := m.getOperand_NR(cvalDef, extModeNone)\n\t\tvar c cond\n\t\tif b.Opcode() == ssa.OpcodeBrz {\n\t\t\tc = registerAsRegZeroCond(rn.nr())\n\t\t} else {\n\t\t\tc = registerAsRegNotZeroCond(rn.nr())\n\t\t}\n\t\tcbr := m.allocateInstr()\n\t\tcbr.asCondBr(c, target, false)\n\t\tm.insert(cbr)\n\t}\n}\n\nfunc (m *machine) tryLowerBandToFlag(x, y ssa.Value) (ok bool) {\n\txx := m.compiler.ValueDefinition(x)\n\tyy := m.compiler.ValueDefinition(y)\n\tif xx.IsFromInstr() && xx.Instr.Constant() && xx.Instr.ConstantVal() == 0 {\n\t\tif m.compiler.MatchInstr(yy, ssa.OpcodeBand) {\n\t\t\tbandInstr := yy.Instr\n\t\t\tm.lowerBitwiseAluOp(bandInstr, aluOpAnds, true)\n\t\t\tok = true\n\t\t\tbandInstr.MarkLowered()\n\t\t\treturn\n\t\t}\n\t}\n\n\tif yy.IsFromInstr() && yy.Instr.Constant() && yy.Instr.ConstantVal() == 0 {\n\t\tif m.compiler.MatchInstr(xx, ssa.OpcodeBand) {\n\t\t\tbandInstr := xx.Instr\n\t\t\tm.lowerBitwiseAluOp(bandInstr, aluOpAnds, true)\n\t\t\tok = true\n\t\t\tbandInstr.MarkLowered()\n\t\t\treturn\n\t\t}\n\t}\n\treturn\n}\n\n// LowerInstr implements backend.Machine.\nfunc (m *machine) LowerInstr(instr *ssa.Instruction) {\n\tif l := instr.SourceOffset(); l.Valid() {\n\t\tinfo := m.allocateInstr().asEmitSourceOffsetInfo(l)\n\t\tm.insert(info)\n\t}\n\n\tswitch op := instr.Opcode(); op {\n\tcase ssa.OpcodeBrz, ssa.OpcodeBrnz, ssa.OpcodeJump, ssa.OpcodeBrTable:\n\t\tpanic(\"BUG: branching instructions are handled by LowerBranches\")\n\tcase ssa.OpcodeReturn:\n\t\tpanic(\"BUG: return must be handled by backend.Compiler\")\n\tcase ssa.OpcodeIadd, ssa.OpcodeIsub:\n\t\tm.lowerSubOrAdd(instr, op == ssa.OpcodeIadd)\n\tcase ssa.OpcodeFadd, ssa.OpcodeFsub, ssa.OpcodeFmul, ssa.OpcodeFdiv, ssa.OpcodeFmax, ssa.OpcodeFmin:\n\t\tm.lowerFpuBinOp(instr)\n\tcase ssa.OpcodeIconst, ssa.OpcodeF32const, ssa.OpcodeF64const: // Constant instructions are inlined.\n\tcase ssa.OpcodeExitWithCode:\n\t\texecCtx, code := instr.ExitWithCodeData()\n\t\tm.lowerExitWithCode(m.compiler.VRegOf(execCtx), code)\n\tcase ssa.OpcodeExitIfTrueWithCode:\n\t\texecCtx, c, code := instr.ExitIfTrueWithCodeData()\n\t\tm.lowerExitIfTrueWithCode(m.compiler.VRegOf(execCtx), c, code)\n\tcase ssa.OpcodeStore, ssa.OpcodeIstore8, ssa.OpcodeIstore16, ssa.OpcodeIstore32:\n\t\tm.lowerStore(instr)\n\tcase ssa.OpcodeLoad:\n\t\tdst := instr.Return()\n\t\tptr, offset, typ := instr.LoadData()\n\t\tm.lowerLoad(ptr, offset, typ, dst)\n\tcase ssa.OpcodeVZeroExtLoad:\n\t\tdst := instr.Return()\n\t\tptr, offset, typ := instr.VZeroExtLoadData()\n\t\tm.lowerLoad(ptr, offset, typ, dst)\n\tcase ssa.OpcodeUload8, ssa.OpcodeUload16, ssa.OpcodeUload32, ssa.OpcodeSload8, ssa.OpcodeSload16, ssa.OpcodeSload32:\n\t\tptr, offset, _ := instr.LoadData()\n\t\tret := m.compiler.VRegOf(instr.Return())\n\t\tm.lowerExtLoad(op, ptr, offset, ret)\n\tcase ssa.OpcodeCall, ssa.OpcodeCallIndirect:\n\t\tm.lowerCall(instr)\n\tcase ssa.OpcodeIcmp:\n\t\tm.lowerIcmp(instr)\n\tcase ssa.OpcodeVIcmp:\n\t\tm.lowerVIcmp(instr)\n\tcase ssa.OpcodeVFcmp:\n\t\tm.lowerVFcmp(instr)\n\tcase ssa.OpcodeVCeil:\n\t\tm.lowerVecMisc(vecOpFrintp, instr)\n\tcase ssa.OpcodeVFloor:\n\t\tm.lowerVecMisc(vecOpFrintm, instr)\n\tcase ssa.OpcodeVTrunc:\n\t\tm.lowerVecMisc(vecOpFrintz, instr)\n\tcase ssa.OpcodeVNearest:\n\t\tm.lowerVecMisc(vecOpFrintn, instr)\n\tcase ssa.OpcodeVMaxPseudo:\n\t\tm.lowerVMinMaxPseudo(instr, true)\n\tcase ssa.OpcodeVMinPseudo:\n\t\tm.lowerVMinMaxPseudo(instr, false)\n\tcase ssa.OpcodeBand:\n\t\tm.lowerBitwiseAluOp(instr, aluOpAnd, false)\n\tcase ssa.OpcodeBor:\n\t\tm.lowerBitwiseAluOp(instr, aluOpOrr, false)\n\tcase ssa.OpcodeBxor:\n\t\tm.lowerBitwiseAluOp(instr, aluOpEor, false)\n\tcase ssa.OpcodeIshl:\n\t\tm.lowerShifts(instr, extModeNone, aluOpLsl)\n\tcase ssa.OpcodeSshr:\n\t\tif instr.Return().Type().Bits() == 64 {\n\t\t\tm.lowerShifts(instr, extModeSignExtend64, aluOpAsr)\n\t\t} else {\n\t\t\tm.lowerShifts(instr, extModeSignExtend32, aluOpAsr)\n\t\t}\n\tcase ssa.OpcodeUshr:\n\t\tif instr.Return().Type().Bits() == 64 {\n\t\t\tm.lowerShifts(instr, extModeZeroExtend64, aluOpLsr)\n\t\t} else {\n\t\t\tm.lowerShifts(instr, extModeZeroExtend32, aluOpLsr)\n\t\t}\n\tcase ssa.OpcodeRotl:\n\t\tm.lowerRotl(instr)\n\tcase ssa.OpcodeRotr:\n\t\tm.lowerRotr(instr)\n\tcase ssa.OpcodeSExtend, ssa.OpcodeUExtend:\n\t\tfrom, to, signed := instr.ExtendData()\n\t\tm.lowerExtend(instr.Arg(), instr.Return(), from, to, signed)\n\tcase ssa.OpcodeFcmp:\n\t\tx, y, c := instr.FcmpData()\n\t\tm.lowerFcmp(x, y, instr.Return(), c)\n\tcase ssa.OpcodeImul:\n\t\tx, y := instr.Arg2()\n\t\tresult := instr.Return()\n\t\tm.lowerImul(x, y, result)\n\tcase ssa.OpcodeUndefined:\n\t\tundef := m.allocateInstr()\n\t\tundef.asUDF()\n\t\tm.insert(undef)\n\tcase ssa.OpcodeSelect:\n\t\tc, x, y := instr.SelectData()\n\t\tif x.Type() == ssa.TypeV128 {\n\t\t\trc := m.getOperand_NR(m.compiler.ValueDefinition(c), extModeNone)\n\t\t\trn := m.getOperand_NR(m.compiler.ValueDefinition(x), extModeNone)\n\t\t\trm := m.getOperand_NR(m.compiler.ValueDefinition(y), extModeNone)\n\t\t\trd := m.compiler.VRegOf(instr.Return())\n\t\t\tm.lowerSelectVec(rc, rn, rm, rd)\n\t\t} else {\n\t\t\tm.lowerSelect(c, x, y, instr.Return())\n\t\t}\n\tcase ssa.OpcodeClz:\n\t\tx := instr.Arg()\n\t\tresult := instr.Return()\n\t\tm.lowerClz(x, result)\n\tcase ssa.OpcodeCtz:\n\t\tx := instr.Arg()\n\t\tresult := instr.Return()\n\t\tm.lowerCtz(x, result)\n\tcase ssa.OpcodePopcnt:\n\t\tx := instr.Arg()\n\t\tresult := instr.Return()\n\t\tm.lowerPopcnt(x, result)\n\tcase ssa.OpcodeFcvtToSint, ssa.OpcodeFcvtToSintSat:\n\t\tx, ctx := instr.Arg2()\n\t\tresult := instr.Return()\n\t\trn := m.getOperand_NR(m.compiler.ValueDefinition(x), extModeNone)\n\t\trd := m.compiler.VRegOf(result)\n\t\tctxVReg := m.compiler.VRegOf(ctx)\n\t\tm.lowerFpuToInt(rd, rn, ctxVReg, true, x.Type() == ssa.TypeF64,\n\t\t\tresult.Type().Bits() == 64, op == ssa.OpcodeFcvtToSintSat)\n\tcase ssa.OpcodeFcvtToUint, ssa.OpcodeFcvtToUintSat:\n\t\tx, ctx := instr.Arg2()\n\t\tresult := instr.Return()\n\t\trn := m.getOperand_NR(m.compiler.ValueDefinition(x), extModeNone)\n\t\trd := m.compiler.VRegOf(result)\n\t\tctxVReg := m.compiler.VRegOf(ctx)\n\t\tm.lowerFpuToInt(rd, rn, ctxVReg, false, x.Type() == ssa.TypeF64,\n\t\t\tresult.Type().Bits() == 64, op == ssa.OpcodeFcvtToUintSat)\n\tcase ssa.OpcodeFcvtFromSint:\n\t\tx := instr.Arg()\n\t\tresult := instr.Return()\n\t\trn := m.getOperand_NR(m.compiler.ValueDefinition(x), extModeNone)\n\t\trd := m.compiler.VRegOf(result)\n\t\tm.lowerIntToFpu(rd, rn, true, x.Type() == ssa.TypeI64, result.Type().Bits() == 64)\n\tcase ssa.OpcodeFcvtFromUint:\n\t\tx := instr.Arg()\n\t\tresult := instr.Return()\n\t\trn := m.getOperand_NR(m.compiler.ValueDefinition(x), extModeNone)\n\t\trd := m.compiler.VRegOf(result)\n\t\tm.lowerIntToFpu(rd, rn, false, x.Type() == ssa.TypeI64, result.Type().Bits() == 64)\n\tcase ssa.OpcodeFdemote:\n\t\tv := instr.Arg()\n\t\trn := m.getOperand_NR(m.compiler.ValueDefinition(v), extModeNone)\n\t\trd := m.compiler.VRegOf(instr.Return())\n\t\tcnt := m.allocateInstr()\n\t\tcnt.asFpuRR(fpuUniOpCvt64To32, rd, rn, false)\n\t\tm.insert(cnt)\n\tcase ssa.OpcodeFpromote:\n\t\tv := instr.Arg()\n\t\trn := m.getOperand_NR(m.compiler.ValueDefinition(v), extModeNone)\n\t\trd := m.compiler.VRegOf(instr.Return())\n\t\tcnt := m.allocateInstr()\n\t\tcnt.asFpuRR(fpuUniOpCvt32To64, rd, rn, true)\n\t\tm.insert(cnt)\n\tcase ssa.OpcodeIreduce:\n\t\trn := m.getOperand_NR(m.compiler.ValueDefinition(instr.Arg()), extModeNone)\n\t\tretVal := instr.Return()\n\t\trd := m.compiler.VRegOf(retVal)\n\n\t\tif retVal.Type() != ssa.TypeI32 {\n\t\t\tpanic(\"TODO?: Ireduce to non-i32\")\n\t\t}\n\t\tmov := m.allocateInstr()\n\t\tmov.asMove32(rd, rn.reg())\n\t\tm.insert(mov)\n\tcase ssa.OpcodeFneg:\n\t\tm.lowerFpuUniOp(fpuUniOpNeg, instr.Arg(), instr.Return())\n\tcase ssa.OpcodeSqrt:\n\t\tm.lowerFpuUniOp(fpuUniOpSqrt, instr.Arg(), instr.Return())\n\tcase ssa.OpcodeCeil:\n\t\tm.lowerFpuUniOp(fpuUniOpRoundPlus, instr.Arg(), instr.Return())\n\tcase ssa.OpcodeFloor:\n\t\tm.lowerFpuUniOp(fpuUniOpRoundMinus, instr.Arg(), instr.Return())\n\tcase ssa.OpcodeTrunc:\n\t\tm.lowerFpuUniOp(fpuUniOpRoundZero, instr.Arg(), instr.Return())\n\tcase ssa.OpcodeNearest:\n\t\tm.lowerFpuUniOp(fpuUniOpRoundNearest, instr.Arg(), instr.Return())\n\tcase ssa.OpcodeFabs:\n\t\tm.lowerFpuUniOp(fpuUniOpAbs, instr.Arg(), instr.Return())\n\tcase ssa.OpcodeBitcast:\n\t\tm.lowerBitcast(instr)\n\tcase ssa.OpcodeFcopysign:\n\t\tx, y := instr.Arg2()\n\t\tm.lowerFcopysign(x, y, instr.Return())\n\tcase ssa.OpcodeSdiv, ssa.OpcodeUdiv:\n\t\tx, y, ctx := instr.Arg3()\n\t\tctxVReg := m.compiler.VRegOf(ctx)\n\t\trn := m.getOperand_NR(m.compiler.ValueDefinition(x), extModeNone)\n\t\trm := m.getOperand_NR(m.compiler.ValueDefinition(y), extModeNone)\n\t\trd := m.compiler.VRegOf(instr.Return())\n\t\tm.lowerIDiv(ctxVReg, rd, rn, rm, x.Type() == ssa.TypeI64, op == ssa.OpcodeSdiv)\n\tcase ssa.OpcodeSrem, ssa.OpcodeUrem:\n\t\tx, y, ctx := instr.Arg3()\n\t\tctxVReg := m.compiler.VRegOf(ctx)\n\t\trn := m.getOperand_NR(m.compiler.ValueDefinition(x), extModeNone)\n\t\trm := m.getOperand_NR(m.compiler.ValueDefinition(y), extModeNone)\n\t\trd := m.compiler.VRegOf(instr.Return())\n\t\tm.lowerIRem(ctxVReg, rd, rn.nr(), rm, x.Type() == ssa.TypeI64, op == ssa.OpcodeSrem)\n\tcase ssa.OpcodeVconst:\n\t\tresult := m.compiler.VRegOf(instr.Return())\n\t\tlo, hi := instr.VconstData()\n\t\tv := m.allocateInstr()\n\t\tv.asLoadFpuConst128(result, lo, hi)\n\t\tm.insert(v)\n\tcase ssa.OpcodeVbnot:\n\t\tx := instr.Arg()\n\t\tins := m.allocateInstr()\n\t\trn := m.getOperand_NR(m.compiler.ValueDefinition(x), extModeNone)\n\t\trd := m.compiler.VRegOf(instr.Return())\n\t\tins.asVecMisc(vecOpNot, rd, rn, vecArrangement16B)\n\t\tm.insert(ins)\n\tcase ssa.OpcodeVbxor:\n\t\tx, y := instr.Arg2()\n\t\tm.lowerVecRRR(vecOpEOR, x, y, instr.Return(), vecArrangement16B)\n\tcase ssa.OpcodeVbor:\n\t\tx, y := instr.Arg2()\n\t\tm.lowerVecRRR(vecOpOrr, x, y, instr.Return(), vecArrangement16B)\n\tcase ssa.OpcodeVband:\n\t\tx, y := instr.Arg2()\n\t\tm.lowerVecRRR(vecOpAnd, x, y, instr.Return(), vecArrangement16B)\n\tcase ssa.OpcodeVbandnot:\n\t\tx, y := instr.Arg2()\n\t\tm.lowerVecRRR(vecOpBic, x, y, instr.Return(), vecArrangement16B)\n\tcase ssa.OpcodeVbitselect:\n\t\tc, x, y := instr.SelectData()\n\t\trn := m.getOperand_NR(m.compiler.ValueDefinition(x), extModeNone)\n\t\trm := m.getOperand_NR(m.compiler.ValueDefinition(y), extModeNone)\n\t\tcreg := m.getOperand_NR(m.compiler.ValueDefinition(c), extModeNone)\n\t\ttmp := m.compiler.AllocateVReg(ssa.TypeV128)\n\n\t\t// creg is overwritten by BSL, so we need to move it to the result register before the instruction\n\t\t// in case when it is used somewhere else.\n\t\tmov := m.allocateInstr()\n\t\tmov.asFpuMov128(tmp, creg.nr())\n\t\tm.insert(mov)\n\n\t\tins := m.allocateInstr()\n\t\tins.asVecRRRRewrite(vecOpBsl, tmp, rn, rm, vecArrangement16B)\n\t\tm.insert(ins)\n\n\t\tmov2 := m.allocateInstr()\n\t\trd := m.compiler.VRegOf(instr.Return())\n\t\tmov2.asFpuMov128(rd, tmp)\n\t\tm.insert(mov2)\n\tcase ssa.OpcodeVanyTrue, ssa.OpcodeVallTrue:\n\t\tx, lane := instr.ArgWithLane()\n\t\tvar arr vecArrangement\n\t\tif op == ssa.OpcodeVallTrue {\n\t\t\tarr = ssaLaneToArrangement(lane)\n\t\t}\n\t\trm := m.getOperand_NR(m.compiler.ValueDefinition(x), extModeNone)\n\t\trd := m.compiler.VRegOf(instr.Return())\n\t\tm.lowerVcheckTrue(op, rm, rd, arr)\n\tcase ssa.OpcodeVhighBits:\n\t\tx, lane := instr.ArgWithLane()\n\t\trm := m.getOperand_NR(m.compiler.ValueDefinition(x), extModeNone)\n\t\trd := m.compiler.VRegOf(instr.Return())\n\t\tarr := ssaLaneToArrangement(lane)\n\t\tm.lowerVhighBits(rm, rd, arr)\n\tcase ssa.OpcodeVIadd:\n\t\tx, y, lane := instr.Arg2WithLane()\n\t\tarr := ssaLaneToArrangement(lane)\n\t\tm.lowerVecRRR(vecOpAdd, x, y, instr.Return(), arr)\n\tcase ssa.OpcodeExtIaddPairwise:\n\t\tv, lane, signed := instr.ExtIaddPairwiseData()\n\t\tvv := m.getOperand_NR(m.compiler.ValueDefinition(v), extModeNone)\n\n\t\ttmpLo, tmpHi := operandNR(m.compiler.AllocateVReg(ssa.TypeV128)), operandNR(m.compiler.AllocateVReg(ssa.TypeV128))\n\t\tvar widen vecOp\n\t\tif signed {\n\t\t\twiden = vecOpSshll\n\t\t} else {\n\t\t\twiden = vecOpUshll\n\t\t}\n\n\t\tvar loArr, hiArr, dstArr vecArrangement\n\t\tswitch lane {\n\t\tcase ssa.VecLaneI8x16:\n\t\t\tloArr, hiArr, dstArr = vecArrangement8B, vecArrangement16B, vecArrangement8H\n\t\tcase ssa.VecLaneI16x8:\n\t\t\tloArr, hiArr, dstArr = vecArrangement4H, vecArrangement8H, vecArrangement4S\n\t\tcase ssa.VecLaneI32x4:\n\t\t\tloArr, hiArr, dstArr = vecArrangement2S, vecArrangement4S, vecArrangement2D\n\t\tdefault:\n\t\t\tpanic(\"unsupported lane \" + lane.String())\n\t\t}\n\n\t\twidenLo := m.allocateInstr().asVecShiftImm(widen, tmpLo.nr(), vv, operandShiftImm(0), loArr)\n\t\twidenHi := m.allocateInstr().asVecShiftImm(widen, tmpHi.nr(), vv, operandShiftImm(0), hiArr)\n\t\taddp := m.allocateInstr().asVecRRR(vecOpAddp, m.compiler.VRegOf(instr.Return()), tmpLo, tmpHi, dstArr)\n\t\tm.insert(widenLo)\n\t\tm.insert(widenHi)\n\t\tm.insert(addp)\n\n\tcase ssa.OpcodeVSaddSat:\n\t\tx, y, lane := instr.Arg2WithLane()\n\t\tarr := ssaLaneToArrangement(lane)\n\t\tm.lowerVecRRR(vecOpSqadd, x, y, instr.Return(), arr)\n\tcase ssa.OpcodeVUaddSat:\n\t\tx, y, lane := instr.Arg2WithLane()\n\t\tarr := ssaLaneToArrangement(lane)\n\t\tm.lowerVecRRR(vecOpUqadd, x, y, instr.Return(), arr)\n\tcase ssa.OpcodeVIsub:\n\t\tx, y, lane := instr.Arg2WithLane()\n\t\tarr := ssaLaneToArrangement(lane)\n\t\tm.lowerVecRRR(vecOpSub, x, y, instr.Return(), arr)\n\tcase ssa.OpcodeVSsubSat:\n\t\tx, y, lane := instr.Arg2WithLane()\n\t\tarr := ssaLaneToArrangement(lane)\n\t\tm.lowerVecRRR(vecOpSqsub, x, y, instr.Return(), arr)\n\tcase ssa.OpcodeVUsubSat:\n\t\tx, y, lane := instr.Arg2WithLane()\n\t\tarr := ssaLaneToArrangement(lane)\n\t\tm.lowerVecRRR(vecOpUqsub, x, y, instr.Return(), arr)\n\tcase ssa.OpcodeVImin:\n\t\tx, y, lane := instr.Arg2WithLane()\n\t\tarr := ssaLaneToArrangement(lane)\n\t\tm.lowerVecRRR(vecOpSmin, x, y, instr.Return(), arr)\n\tcase ssa.OpcodeVUmin:\n\t\tx, y, lane := instr.Arg2WithLane()\n\t\tarr := ssaLaneToArrangement(lane)\n\t\tm.lowerVecRRR(vecOpUmin, x, y, instr.Return(), arr)\n\tcase ssa.OpcodeVImax:\n\t\tx, y, lane := instr.Arg2WithLane()\n\t\tarr := ssaLaneToArrangement(lane)\n\t\tm.lowerVecRRR(vecOpSmax, x, y, instr.Return(), arr)\n\tcase ssa.OpcodeVUmax:\n\t\tx, y, lane := instr.Arg2WithLane()\n\t\tarr := ssaLaneToArrangement(lane)\n\t\tm.lowerVecRRR(vecOpUmax, x, y, instr.Return(), arr)\n\tcase ssa.OpcodeVAvgRound:\n\t\tx, y, lane := instr.Arg2WithLane()\n\t\tarr := ssaLaneToArrangement(lane)\n\t\tm.lowerVecRRR(vecOpUrhadd, x, y, instr.Return(), arr)\n\tcase ssa.OpcodeVImul:\n\t\tx, y, lane := instr.Arg2WithLane()\n\t\tarr := ssaLaneToArrangement(lane)\n\t\trn := m.getOperand_NR(m.compiler.ValueDefinition(x), extModeNone)\n\t\trm := m.getOperand_NR(m.compiler.ValueDefinition(y), extModeNone)\n\t\trd := m.compiler.VRegOf(instr.Return())\n\t\tm.lowerVIMul(rd, rn, rm, arr)\n\tcase ssa.OpcodeVIabs:\n\t\tm.lowerVecMisc(vecOpAbs, instr)\n\tcase ssa.OpcodeVIneg:\n\t\tm.lowerVecMisc(vecOpNeg, instr)\n\tcase ssa.OpcodeVIpopcnt:\n\t\tm.lowerVecMisc(vecOpCnt, instr)\n\tcase ssa.OpcodeVIshl,\n\t\tssa.OpcodeVSshr, ssa.OpcodeVUshr:\n\t\tx, y, lane := instr.Arg2WithLane()\n\t\tarr := ssaLaneToArrangement(lane)\n\t\trn := m.getOperand_NR(m.compiler.ValueDefinition(x), extModeNone)\n\t\trm := m.getOperand_NR(m.compiler.ValueDefinition(y), extModeNone)\n\t\trd := m.compiler.VRegOf(instr.Return())\n\t\tm.lowerVShift(op, rd, rn, rm, arr)\n\tcase ssa.OpcodeVSqrt:\n\t\tm.lowerVecMisc(vecOpFsqrt, instr)\n\tcase ssa.OpcodeVFabs:\n\t\tm.lowerVecMisc(vecOpFabs, instr)\n\tcase ssa.OpcodeVFneg:\n\t\tm.lowerVecMisc(vecOpFneg, instr)\n\tcase ssa.OpcodeVFmin:\n\t\tx, y, lane := instr.Arg2WithLane()\n\t\tarr := ssaLaneToArrangement(lane)\n\t\tm.lowerVecRRR(vecOpFmin, x, y, instr.Return(), arr)\n\tcase ssa.OpcodeVFmax:\n\t\tx, y, lane := instr.Arg2WithLane()\n\t\tarr := ssaLaneToArrangement(lane)\n\t\tm.lowerVecRRR(vecOpFmax, x, y, instr.Return(), arr)\n\tcase ssa.OpcodeVFadd:\n\t\tx, y, lane := instr.Arg2WithLane()\n\t\tarr := ssaLaneToArrangement(lane)\n\t\tm.lowerVecRRR(vecOpFadd, x, y, instr.Return(), arr)\n\tcase ssa.OpcodeVFsub:\n\t\tx, y, lane := instr.Arg2WithLane()\n\t\tarr := ssaLaneToArrangement(lane)\n\t\tm.lowerVecRRR(vecOpFsub, x, y, instr.Return(), arr)\n\tcase ssa.OpcodeVFmul:\n\t\tx, y, lane := instr.Arg2WithLane()\n\t\tarr := ssaLaneToArrangement(lane)\n\t\tm.lowerVecRRR(vecOpFmul, x, y, instr.Return(), arr)\n\tcase ssa.OpcodeSqmulRoundSat:\n\t\tx, y, lane := instr.Arg2WithLane()\n\t\tarr := ssaLaneToArrangement(lane)\n\t\tm.lowerVecRRR(vecOpSqrdmulh, x, y, instr.Return(), arr)\n\tcase ssa.OpcodeVFdiv:\n\t\tx, y, lane := instr.Arg2WithLane()\n\t\tarr := ssaLaneToArrangement(lane)\n\t\tm.lowerVecRRR(vecOpFdiv, x, y, instr.Return(), arr)\n\tcase ssa.OpcodeVFcvtToSintSat, ssa.OpcodeVFcvtToUintSat:\n\t\tx, lane := instr.ArgWithLane()\n\t\tarr := ssaLaneToArrangement(lane)\n\t\trn := m.getOperand_NR(m.compiler.ValueDefinition(x), extModeNone)\n\t\trd := m.compiler.VRegOf(instr.Return())\n\t\tm.lowerVfpuToInt(rd, rn, arr, op == ssa.OpcodeVFcvtToSintSat)\n\tcase ssa.OpcodeVFcvtFromSint, ssa.OpcodeVFcvtFromUint:\n\t\tx, lane := instr.ArgWithLane()\n\t\tarr := ssaLaneToArrangement(lane)\n\t\trn := m.getOperand_NR(m.compiler.ValueDefinition(x), extModeNone)\n\t\trd := m.compiler.VRegOf(instr.Return())\n\t\tm.lowerVfpuFromInt(rd, rn, arr, op == ssa.OpcodeVFcvtFromSint)\n\tcase ssa.OpcodeSwidenLow, ssa.OpcodeUwidenLow:\n\t\tx, lane := instr.ArgWithLane()\n\t\trn := m.getOperand_NR(m.compiler.ValueDefinition(x), extModeNone)\n\t\trd := m.compiler.VRegOf(instr.Return())\n\n\t\tvar arr vecArrangement\n\t\tswitch lane {\n\t\tcase ssa.VecLaneI8x16:\n\t\t\tarr = vecArrangement8B\n\t\tcase ssa.VecLaneI16x8:\n\t\t\tarr = vecArrangement4H\n\t\tcase ssa.VecLaneI32x4:\n\t\t\tarr = vecArrangement2S\n\t\t}\n\n\t\tshll := m.allocateInstr()\n\t\tif signed := op == ssa.OpcodeSwidenLow; signed {\n\t\t\tshll.asVecShiftImm(vecOpSshll, rd, rn, operandShiftImm(0), arr)\n\t\t} else {\n\t\t\tshll.asVecShiftImm(vecOpUshll, rd, rn, operandShiftImm(0), arr)\n\t\t}\n\t\tm.insert(shll)\n\tcase ssa.OpcodeSwidenHigh, ssa.OpcodeUwidenHigh:\n\t\tx, lane := instr.ArgWithLane()\n\t\trn := m.getOperand_NR(m.compiler.ValueDefinition(x), extModeNone)\n\t\trd := m.compiler.VRegOf(instr.Return())\n\n\t\tarr := ssaLaneToArrangement(lane)\n\n\t\tshll := m.allocateInstr()\n\t\tif signed := op == ssa.OpcodeSwidenHigh; signed {\n\t\t\tshll.asVecShiftImm(vecOpSshll, rd, rn, operandShiftImm(0), arr)\n\t\t} else {\n\t\t\tshll.asVecShiftImm(vecOpUshll, rd, rn, operandShiftImm(0), arr)\n\t\t}\n\t\tm.insert(shll)\n\n\tcase ssa.OpcodeSnarrow, ssa.OpcodeUnarrow:\n\t\tx, y, lane := instr.Arg2WithLane()\n\t\tvar arr, arr2 vecArrangement\n\t\tswitch lane {\n\t\tcase ssa.VecLaneI16x8: // I16x8\n\t\t\tarr = vecArrangement8B\n\t\t\tarr2 = vecArrangement16B // Implies sqxtn2.\n\t\tcase ssa.VecLaneI32x4:\n\t\t\tarr = vecArrangement4H\n\t\t\tarr2 = vecArrangement8H // Implies sqxtn2.\n\t\tdefault:\n\t\t\tpanic(\"unsupported lane \" + lane.String())\n\t\t}\n\t\trn := m.getOperand_NR(m.compiler.ValueDefinition(x), extModeNone)\n\t\trm := m.getOperand_NR(m.compiler.ValueDefinition(y), extModeNone)\n\t\trd := m.compiler.VRegOf(instr.Return())\n\n\t\ttmp := m.compiler.AllocateVReg(ssa.TypeV128)\n\n\t\tloQxtn := m.allocateInstr()\n\t\thiQxtn := m.allocateInstr()\n\t\tif signed := op == ssa.OpcodeSnarrow; signed {\n\t\t\t// Narrow lanes on rn and write them into lower-half of rd.\n\t\t\tloQxtn.asVecMisc(vecOpSqxtn, tmp, rn, arr) // low\n\t\t\t// Narrow lanes on rm and write them into higher-half of rd.\n\t\t\thiQxtn.asVecMisc(vecOpSqxtn, tmp, rm, arr2) // high (sqxtn2)\n\t\t} else {\n\t\t\t// Narrow lanes on rn and write them into lower-half of rd.\n\t\t\tloQxtn.asVecMisc(vecOpSqxtun, tmp, rn, arr) // low\n\t\t\t// Narrow lanes on rm and write them into higher-half of rd.\n\t\t\thiQxtn.asVecMisc(vecOpSqxtun, tmp, rm, arr2) // high (sqxtn2)\n\t\t}\n\t\tm.insert(loQxtn)\n\t\tm.insert(hiQxtn)\n\n\t\tmov := m.allocateInstr()\n\t\tmov.asFpuMov128(rd, tmp)\n\t\tm.insert(mov)\n\tcase ssa.OpcodeFvpromoteLow:\n\t\tx, lane := instr.ArgWithLane()\n\t\tif lane != ssa.VecLaneF32x4 {\n\t\t\tpanic(\"unsupported lane type \" + lane.String())\n\t\t}\n\t\tins := m.allocateInstr()\n\t\trn := m.getOperand_NR(m.compiler.ValueDefinition(x), extModeNone)\n\t\trd := m.compiler.VRegOf(instr.Return())\n\t\tins.asVecMisc(vecOpFcvtl, rd, rn, vecArrangement2S)\n\t\tm.insert(ins)\n\tcase ssa.OpcodeFvdemote:\n\t\tx, lane := instr.ArgWithLane()\n\t\tif lane != ssa.VecLaneF64x2 {\n\t\t\tpanic(\"unsupported lane type \" + lane.String())\n\t\t}\n\t\tins := m.allocateInstr()\n\t\trn := m.getOperand_NR(m.compiler.ValueDefinition(x), extModeNone)\n\t\trd := m.compiler.VRegOf(instr.Return())\n\t\tins.asVecMisc(vecOpFcvtn, rd, rn, vecArrangement2S)\n\t\tm.insert(ins)\n\tcase ssa.OpcodeExtractlane:\n\t\tx, index, signed, lane := instr.ExtractlaneData()\n\n\t\trn := m.getOperand_NR(m.compiler.ValueDefinition(x), extModeNone)\n\t\trd := m.compiler.VRegOf(instr.Return())\n\n\t\tmov := m.allocateInstr()\n\t\tswitch lane {\n\t\tcase ssa.VecLaneI8x16:\n\t\t\tmov.asMovFromVec(rd, rn, vecArrangementB, vecIndex(index), signed)\n\t\tcase ssa.VecLaneI16x8:\n\t\t\tmov.asMovFromVec(rd, rn, vecArrangementH, vecIndex(index), signed)\n\t\tcase ssa.VecLaneI32x4:\n\t\t\tmov.asMovFromVec(rd, rn, vecArrangementS, vecIndex(index), signed)\n\t\tcase ssa.VecLaneI64x2:\n\t\t\tmov.asMovFromVec(rd, rn, vecArrangementD, vecIndex(index), signed)\n\t\tcase ssa.VecLaneF32x4:\n\t\t\tmov.asVecMovElement(rd, rn, vecArrangementS, vecIndex(0), vecIndex(index))\n\t\tcase ssa.VecLaneF64x2:\n\t\t\tmov.asVecMovElement(rd, rn, vecArrangementD, vecIndex(0), vecIndex(index))\n\t\tdefault:\n\t\t\tpanic(\"unsupported lane: \" + lane.String())\n\t\t}\n\n\t\tm.insert(mov)\n\n\tcase ssa.OpcodeInsertlane:\n\t\tx, y, index, lane := instr.InsertlaneData()\n\t\trn := m.getOperand_NR(m.compiler.ValueDefinition(x), extModeNone)\n\t\trm := m.getOperand_NR(m.compiler.ValueDefinition(y), extModeNone)\n\t\trd := m.compiler.VRegOf(instr.Return())\n\t\ttmpReg := m.compiler.AllocateVReg(ssa.TypeV128)\n\n\t\t// Initially mov rn to tmp.\n\t\tmov1 := m.allocateInstr()\n\t\tmov1.asFpuMov128(tmpReg, rn.nr())\n\t\tm.insert(mov1)\n\n\t\t// movToVec and vecMovElement do not clear the remaining bits to zero,\n\t\t// thus, we can mov rm in-place to tmp.\n\t\tmov2 := m.allocateInstr()\n\t\tswitch lane {\n\t\tcase ssa.VecLaneI8x16:\n\t\t\tmov2.asMovToVec(tmpReg, rm, vecArrangementB, vecIndex(index))\n\t\tcase ssa.VecLaneI16x8:\n\t\t\tmov2.asMovToVec(tmpReg, rm, vecArrangementH, vecIndex(index))\n\t\tcase ssa.VecLaneI32x4:\n\t\t\tmov2.asMovToVec(tmpReg, rm, vecArrangementS, vecIndex(index))\n\t\tcase ssa.VecLaneI64x2:\n\t\t\tmov2.asMovToVec(tmpReg, rm, vecArrangementD, vecIndex(index))\n\t\tcase ssa.VecLaneF32x4:\n\t\t\tmov2.asVecMovElement(tmpReg, rm, vecArrangementS, vecIndex(index), vecIndex(0))\n\t\tcase ssa.VecLaneF64x2:\n\t\t\tmov2.asVecMovElement(tmpReg, rm, vecArrangementD, vecIndex(index), vecIndex(0))\n\t\t}\n\t\tm.insert(mov2)\n\n\t\t// Finally mov tmp to rd.\n\t\tmov3 := m.allocateInstr()\n\t\tmov3.asFpuMov128(rd, tmpReg)\n\t\tm.insert(mov3)\n\n\tcase ssa.OpcodeSwizzle:\n\t\tx, y, lane := instr.Arg2WithLane()\n\t\trn := m.getOperand_NR(m.compiler.ValueDefinition(x), extModeNone)\n\t\trm := m.getOperand_NR(m.compiler.ValueDefinition(y), extModeNone)\n\t\trd := m.compiler.VRegOf(instr.Return())\n\n\t\tarr := ssaLaneToArrangement(lane)\n\n\t\t// tbl <rd>.<arr>, { <rn>.<arr> }, <rm>.<arr>\n\t\ttbl1 := m.allocateInstr()\n\t\ttbl1.asVecTbl(1, rd, rn, rm, arr)\n\t\tm.insert(tbl1)\n\n\tcase ssa.OpcodeShuffle:\n\t\tx, y, lane1, lane2 := instr.ShuffleData()\n\t\trn := m.getOperand_NR(m.compiler.ValueDefinition(x), extModeNone)\n\t\trm := m.getOperand_NR(m.compiler.ValueDefinition(y), extModeNone)\n\t\trd := m.compiler.VRegOf(instr.Return())\n\n\t\tm.lowerShuffle(rd, rn, rm, lane1, lane2)\n\n\tcase ssa.OpcodeSplat:\n\t\tx, lane := instr.ArgWithLane()\n\t\trn := m.getOperand_NR(m.compiler.ValueDefinition(x), extModeNone)\n\t\trd := m.compiler.VRegOf(instr.Return())\n\n\t\tdup := m.allocateInstr()\n\t\tswitch lane {\n\t\tcase ssa.VecLaneI8x16:\n\t\t\tdup.asVecDup(rd, rn, vecArrangement16B)\n\t\tcase ssa.VecLaneI16x8:\n\t\t\tdup.asVecDup(rd, rn, vecArrangement8H)\n\t\tcase ssa.VecLaneI32x4:\n\t\t\tdup.asVecDup(rd, rn, vecArrangement4S)\n\t\tcase ssa.VecLaneI64x2:\n\t\t\tdup.asVecDup(rd, rn, vecArrangement2D)\n\t\tcase ssa.VecLaneF32x4:\n\t\t\tdup.asVecDupElement(rd, rn, vecArrangementS, vecIndex(0))\n\t\tcase ssa.VecLaneF64x2:\n\t\t\tdup.asVecDupElement(rd, rn, vecArrangementD, vecIndex(0))\n\t\t}\n\t\tm.insert(dup)\n\n\tcase ssa.OpcodeWideningPairwiseDotProductS:\n\t\tx, y := instr.Arg2()\n\t\txx, yy := m.getOperand_NR(m.compiler.ValueDefinition(x), extModeNone),\n\t\t\tm.getOperand_NR(m.compiler.ValueDefinition(y), extModeNone)\n\t\ttmp, tmp2 := operandNR(m.compiler.AllocateVReg(ssa.TypeV128)), operandNR(m.compiler.AllocateVReg(ssa.TypeV128))\n\t\tm.insert(m.allocateInstr().asVecRRR(vecOpSmull, tmp.nr(), xx, yy, vecArrangement8H))\n\t\tm.insert(m.allocateInstr().asVecRRR(vecOpSmull2, tmp2.nr(), xx, yy, vecArrangement8H))\n\t\tm.insert(m.allocateInstr().asVecRRR(vecOpAddp, tmp.nr(), tmp, tmp2, vecArrangement4S))\n\n\t\trd := m.compiler.VRegOf(instr.Return())\n\t\tm.insert(m.allocateInstr().asFpuMov128(rd, tmp.nr()))\n\n\tcase ssa.OpcodeLoadSplat:\n\t\tptr, offset, lane := instr.LoadSplatData()\n\t\tm.lowerLoadSplat(ptr, offset, lane, instr.Return())\n\n\tcase ssa.OpcodeAtomicRmw:\n\t\tm.lowerAtomicRmw(instr)\n\n\tcase ssa.OpcodeAtomicCas:\n\t\tm.lowerAtomicCas(instr)\n\n\tcase ssa.OpcodeAtomicLoad:\n\t\tm.lowerAtomicLoad(instr)\n\n\tcase ssa.OpcodeAtomicStore:\n\t\tm.lowerAtomicStore(instr)\n\n\tcase ssa.OpcodeFence:\n\t\tinstr := m.allocateInstr()\n\t\tinstr.asDMB()\n\t\tm.insert(instr)\n\n\tcase ssa.OpcodeTailCallReturnCall, ssa.OpcodeTailCallReturnCallIndirect:\n\t\tm.lowerTailCall(instr)\n\n\tdefault:\n\t\tpanic(\"TODO: lowering \" + op.String())\n\t}\n\tm.FlushPendingInstructions()\n}\n\nfunc (m *machine) lowerShuffle(rd regalloc.VReg, rn, rm operand, lane1, lane2 uint64) {\n\t// `tbl2` requires 2 consecutive registers, so we arbitrarily pick v29, v30.\n\tvReg, wReg := v29VReg, v30VReg\n\n\t// Initialize v29, v30 to rn, rm.\n\tmovv := m.allocateInstr()\n\tmovv.asFpuMov128(vReg, rn.nr())\n\tm.insert(movv)\n\n\tmovw := m.allocateInstr()\n\tmovw.asFpuMov128(wReg, rm.nr())\n\tm.insert(movw)\n\n\t// `lane1`, `lane2` are already encoded as two u64s with the right layout:\n\t//     lane1 := lane[7]<<56 | ... | lane[1]<<8 | lane[0]\n\t//     lane2 := lane[15]<<56 | ... | lane[9]<<8 | lane[8]\n\t// Thus, we can use loadFpuConst128.\n\ttmp := operandNR(m.compiler.AllocateVReg(ssa.TypeV128))\n\tlfc := m.allocateInstr()\n\tlfc.asLoadFpuConst128(tmp.nr(), lane1, lane2)\n\tm.insert(lfc)\n\n\t// tbl <rd>.16b, { <vReg>.16B, <wReg>.16b }, <tmp>.16b\n\ttbl2 := m.allocateInstr()\n\ttbl2.asVecTbl(2, rd, operandNR(vReg), tmp, vecArrangement16B)\n\tm.insert(tbl2)\n}\n\nfunc (m *machine) lowerVShift(op ssa.Opcode, rd regalloc.VReg, rn, rm operand, arr vecArrangement) {\n\tvar modulo byte\n\tswitch arr {\n\tcase vecArrangement16B:\n\t\tmodulo = 0x7 // Modulo 8.\n\tcase vecArrangement8H:\n\t\tmodulo = 0xf // Modulo 16.\n\tcase vecArrangement4S:\n\t\tmodulo = 0x1f // Modulo 32.\n\tcase vecArrangement2D:\n\t\tmodulo = 0x3f // Modulo 64.\n\tdefault:\n\t\tpanic(\"unsupported arrangment \" + arr.String())\n\t}\n\n\trtmp := operandNR(m.compiler.AllocateVReg(ssa.TypeI64))\n\tvtmp := operandNR(m.compiler.AllocateVReg(ssa.TypeV128))\n\n\tand := m.allocateInstr()\n\tand.asALUBitmaskImm(aluOpAnd, rtmp.nr(), rm.nr(), uint64(modulo), true)\n\tm.insert(and)\n\n\tif op != ssa.OpcodeVIshl {\n\t\t// Negate the amount to make this as right shift.\n\t\tneg := m.allocateInstr()\n\t\tneg.asALU(aluOpSub, rtmp.nr(), operandNR(xzrVReg), rtmp, true)\n\t\tm.insert(neg)\n\t}\n\n\t// Copy the shift amount into a vector register as sshl/ushl requires it to be there.\n\tdup := m.allocateInstr()\n\tdup.asVecDup(vtmp.nr(), rtmp, arr)\n\tm.insert(dup)\n\n\tif op == ssa.OpcodeVIshl || op == ssa.OpcodeVSshr {\n\t\tsshl := m.allocateInstr()\n\t\tsshl.asVecRRR(vecOpSshl, rd, rn, vtmp, arr)\n\t\tm.insert(sshl)\n\t} else {\n\t\tushl := m.allocateInstr()\n\t\tushl.asVecRRR(vecOpUshl, rd, rn, vtmp, arr)\n\t\tm.insert(ushl)\n\t}\n}\n\nfunc (m *machine) lowerVcheckTrue(op ssa.Opcode, rm operand, rd regalloc.VReg, arr vecArrangement) {\n\ttmp := operandNR(m.compiler.AllocateVReg(ssa.TypeV128))\n\n\t// Special case VallTrue for i64x2.\n\tif op == ssa.OpcodeVallTrue && arr == vecArrangement2D {\n\t\t// \tcmeq v3?.2d, v2?.2d, #0\n\t\t//\taddp v3?.2d, v3?.2d, v3?.2d\n\t\t//\tfcmp v3?, v3?\n\t\t//\tcset dst, eq\n\n\t\tins := m.allocateInstr()\n\t\tins.asVecMisc(vecOpCmeq0, tmp.nr(), rm, vecArrangement2D)\n\t\tm.insert(ins)\n\n\t\taddp := m.allocateInstr()\n\t\taddp.asVecRRR(vecOpAddp, tmp.nr(), tmp, tmp, vecArrangement2D)\n\t\tm.insert(addp)\n\n\t\tfcmp := m.allocateInstr()\n\t\tfcmp.asFpuCmp(tmp, tmp, true)\n\t\tm.insert(fcmp)\n\n\t\tcset := m.allocateInstr()\n\t\tcset.asCSet(rd, false, eq)\n\t\tm.insert(cset)\n\n\t\treturn\n\t}\n\n\t// Create a scalar value with umaxp or uminv, then compare it against zero.\n\tins := m.allocateInstr()\n\tif op == ssa.OpcodeVanyTrue {\n\t\t// \tumaxp v4?.16b, v2?.16b, v2?.16b\n\t\tins.asVecRRR(vecOpUmaxp, tmp.nr(), rm, rm, vecArrangement16B)\n\t} else {\n\t\t// \tuminv d4?, v2?.4s\n\t\tins.asVecLanes(vecOpUminv, tmp.nr(), rm, arr)\n\t}\n\tm.insert(ins)\n\n\t//\tmov x3?, v4?.d[0]\n\t//\tccmp x3?, #0x0, #0x0, al\n\t//\tcset x3?, ne\n\t//\tmov x0, x3?\n\n\tmovv := m.allocateInstr()\n\tmovv.asMovFromVec(rd, tmp, vecArrangementD, vecIndex(0), false)\n\tm.insert(movv)\n\n\tfc := m.allocateInstr()\n\tfc.asCCmpImm(operandNR(rd), uint64(0), al, 0, true)\n\tm.insert(fc)\n\n\tcset := m.allocateInstr()\n\tcset.asCSet(rd, false, ne)\n\tm.insert(cset)\n}\n\nfunc (m *machine) lowerVhighBits(rm operand, rd regalloc.VReg, arr vecArrangement) {\n\tr0 := operandNR(m.compiler.AllocateVReg(ssa.TypeI64))\n\tv0 := operandNR(m.compiler.AllocateVReg(ssa.TypeV128))\n\tv1 := operandNR(m.compiler.AllocateVReg(ssa.TypeV128))\n\n\tswitch arr {\n\tcase vecArrangement16B:\n\t\t//\tsshr v6?.16b, v2?.16b, #7\n\t\t//\tmovz x4?, #0x201, lsl 0\n\t\t//\tmovk x4?, #0x804, lsl 16\n\t\t//\tmovk x4?, #0x2010, lsl 32\n\t\t//\tmovk x4?, #0x8040, lsl 48\n\t\t//\tdup v5?.2d, x4?\n\t\t//\tand v6?.16b, v6?.16b, v5?.16b\n\t\t//\text v5?.16b, v6?.16b, v6?.16b, #8\n\t\t//\tzip1 v5?.16b, v6?.16b, v5?.16b\n\t\t//\taddv s5?, v5?.8h\n\t\t//\tumov s3?, v5?.h[0]\n\n\t\t// Right arithmetic shift on the original vector and store the result into v1. So we have:\n\t\t// v1[i] = 0xff if vi<0, 0 otherwise.\n\t\tsshr := m.allocateInstr()\n\t\tsshr.asVecShiftImm(vecOpSshr, v1.nr(), rm, operandShiftImm(7), vecArrangement16B)\n\t\tm.insert(sshr)\n\n\t\t// Load the bit mask into r0.\n\t\tm.insertMOVZ(r0.nr(), 0x0201, 0, true)\n\t\tm.insertMOVK(r0.nr(), 0x0804, 1, true)\n\t\tm.insertMOVK(r0.nr(), 0x2010, 2, true)\n\t\tm.insertMOVK(r0.nr(), 0x8040, 3, true)\n\n\t\t// dup r0 to v0.\n\t\tdup := m.allocateInstr()\n\t\tdup.asVecDup(v0.nr(), r0, vecArrangement2D)\n\t\tm.insert(dup)\n\n\t\t// Lane-wise logical AND with the bit mask, meaning that we have\n\t\t// v[i] = (1 << i) if vi<0, 0 otherwise.\n\t\t//\n\t\t// Below, we use the following notation:\n\t\t// wi := (1 << i) if vi<0, 0 otherwise.\n\t\tand := m.allocateInstr()\n\t\tand.asVecRRR(vecOpAnd, v1.nr(), v1, v0, vecArrangement16B)\n\t\tm.insert(and)\n\n\t\t// Swap the lower and higher 8 byte elements, and write it into v0, meaning that we have\n\t\t// v0[i] = w(i+8) if i < 8, w(i-8) otherwise.\n\t\text := m.allocateInstr()\n\t\text.asVecExtract(v0.nr(), v1, v1, vecArrangement16B, uint32(8))\n\t\tm.insert(ext)\n\n\t\t// v = [w0, w8, ..., w7, w15]\n\t\tzip1 := m.allocateInstr()\n\t\tzip1.asVecPermute(vecOpZip1, v0.nr(), v1, v0, vecArrangement16B)\n\t\tm.insert(zip1)\n\n\t\t// v.h[0] = w0 + ... + w15\n\t\taddv := m.allocateInstr()\n\t\taddv.asVecLanes(vecOpAddv, v0.nr(), v0, vecArrangement8H)\n\t\tm.insert(addv)\n\n\t\t// Extract the v.h[0] as the result.\n\t\tmovfv := m.allocateInstr()\n\t\tmovfv.asMovFromVec(rd, v0, vecArrangementH, vecIndex(0), false)\n\t\tm.insert(movfv)\n\tcase vecArrangement8H:\n\t\t//\tsshr v6?.8h, v2?.8h, #15\n\t\t//\tmovz x4?, #0x1, lsl 0\n\t\t//\tmovk x4?, #0x2, lsl 16\n\t\t//\tmovk x4?, #0x4, lsl 32\n\t\t//\tmovk x4?, #0x8, lsl 48\n\t\t//\tdup v5?.2d, x4?\n\t\t//\tlsl x4?, x4?, 0x4\n\t\t//\tins v5?.d[1], x4?\n\t\t//\tand v5?.16b, v6?.16b, v5?.16b\n\t\t//\taddv s5?, v5?.8h\n\t\t//\tumov s3?, v5?.h[0]\n\n\t\t// Right arithmetic shift on the original vector and store the result into v1. So we have:\n\t\t// v[i] = 0xffff if vi<0, 0 otherwise.\n\t\tsshr := m.allocateInstr()\n\t\tsshr.asVecShiftImm(vecOpSshr, v1.nr(), rm, operandShiftImm(15), vecArrangement8H)\n\t\tm.insert(sshr)\n\n\t\t// Load the bit mask into r0.\n\t\tm.lowerConstantI64(r0.nr(), 0x0008000400020001)\n\n\t\t// dup r0 to vector v0.\n\t\tdup := m.allocateInstr()\n\t\tdup.asVecDup(v0.nr(), r0, vecArrangement2D)\n\t\tm.insert(dup)\n\n\t\tlsl := m.allocateInstr()\n\t\tlsl.asALUShift(aluOpLsl, r0.nr(), r0, operandShiftImm(4), true)\n\t\tm.insert(lsl)\n\n\t\tmovv := m.allocateInstr()\n\t\tmovv.asMovToVec(v0.nr(), r0, vecArrangementD, vecIndex(1))\n\t\tm.insert(movv)\n\n\t\t// Lane-wise logical AND with the bitmask, meaning that we have\n\t\t// v[i] = (1 << i)     if vi<0, 0 otherwise for i=0..3\n\t\t//      = (1 << (i+4)) if vi<0, 0 otherwise for i=3..7\n\t\tand := m.allocateInstr()\n\t\tand.asVecRRR(vecOpAnd, v0.nr(), v1, v0, vecArrangement16B)\n\t\tm.insert(and)\n\n\t\taddv := m.allocateInstr()\n\t\taddv.asVecLanes(vecOpAddv, v0.nr(), v0, vecArrangement8H)\n\t\tm.insert(addv)\n\n\t\tmovfv := m.allocateInstr()\n\t\tmovfv.asMovFromVec(rd, v0, vecArrangementH, vecIndex(0), false)\n\t\tm.insert(movfv)\n\tcase vecArrangement4S:\n\t\t// \tsshr v6?.8h, v2?.8h, #15\n\t\t//\tmovz x4?, #0x1, lsl 0\n\t\t//\tmovk x4?, #0x2, lsl 16\n\t\t//\tmovk x4?, #0x4, lsl 32\n\t\t//\tmovk x4?, #0x8, lsl 48\n\t\t//\tdup v5?.2d, x4?\n\t\t//\tlsl x4?, x4?, 0x4\n\t\t//\tins v5?.d[1], x4?\n\t\t//\tand v5?.16b, v6?.16b, v5?.16b\n\t\t//\taddv s5?, v5?.8h\n\t\t//\tumov s3?, v5?.h[0]\n\n\t\t// Right arithmetic shift on the original vector and store the result into v1. So we have:\n\t\t// v[i] = 0xffffffff if vi<0, 0 otherwise.\n\t\tsshr := m.allocateInstr()\n\t\tsshr.asVecShiftImm(vecOpSshr, v1.nr(), rm, operandShiftImm(31), vecArrangement4S)\n\t\tm.insert(sshr)\n\n\t\t// Load the bit mask into r0.\n\t\tm.lowerConstantI64(r0.nr(), 0x0000000200000001)\n\n\t\t// dup r0 to vector v0.\n\t\tdup := m.allocateInstr()\n\t\tdup.asVecDup(v0.nr(), r0, vecArrangement2D)\n\t\tm.insert(dup)\n\n\t\tlsl := m.allocateInstr()\n\t\tlsl.asALUShift(aluOpLsl, r0.nr(), r0, operandShiftImm(2), true)\n\t\tm.insert(lsl)\n\n\t\tmovv := m.allocateInstr()\n\t\tmovv.asMovToVec(v0.nr(), r0, vecArrangementD, vecIndex(1))\n\t\tm.insert(movv)\n\n\t\t// Lane-wise logical AND with the bitmask, meaning that we have\n\t\t// v[i] = (1 << i)     if vi<0, 0 otherwise for i in [0, 1]\n\t\t//      = (1 << (i+4)) if vi<0, 0 otherwise for i in [2, 3]\n\t\tand := m.allocateInstr()\n\t\tand.asVecRRR(vecOpAnd, v0.nr(), v1, v0, vecArrangement16B)\n\t\tm.insert(and)\n\n\t\taddv := m.allocateInstr()\n\t\taddv.asVecLanes(vecOpAddv, v0.nr(), v0, vecArrangement4S)\n\t\tm.insert(addv)\n\n\t\tmovfv := m.allocateInstr()\n\t\tmovfv.asMovFromVec(rd, v0, vecArrangementS, vecIndex(0), false)\n\t\tm.insert(movfv)\n\tcase vecArrangement2D:\n\t\t// \tmov d3?, v2?.d[0]\n\t\t//\tmov x4?, v2?.d[1]\n\t\t//\tlsr x4?, x4?, 0x3f\n\t\t//\tlsr d3?, d3?, 0x3f\n\t\t//\tadd s3?, s3?, w4?, lsl #1\n\n\t\t// Move the lower 64-bit int into result.\n\t\tmovv0 := m.allocateInstr()\n\t\tmovv0.asMovFromVec(rd, rm, vecArrangementD, vecIndex(0), false)\n\t\tm.insert(movv0)\n\n\t\t// Move the higher 64-bit int into r0.\n\t\tmovv1 := m.allocateInstr()\n\t\tmovv1.asMovFromVec(r0.nr(), rm, vecArrangementD, vecIndex(1), false)\n\t\tm.insert(movv1)\n\n\t\t// Move the sign bit into the least significant bit.\n\t\tlsr1 := m.allocateInstr()\n\t\tlsr1.asALUShift(aluOpLsr, r0.nr(), r0, operandShiftImm(63), true)\n\t\tm.insert(lsr1)\n\n\t\tlsr2 := m.allocateInstr()\n\t\tlsr2.asALUShift(aluOpLsr, rd, operandNR(rd), operandShiftImm(63), true)\n\t\tm.insert(lsr2)\n\n\t\t// rd = (r0<<1) | rd\n\t\tlsl := m.allocateInstr()\n\t\tlsl.asALU(aluOpAdd, rd, operandNR(rd), operandSR(r0.nr(), 1, shiftOpLSL), false)\n\t\tm.insert(lsl)\n\tdefault:\n\t\tpanic(\"Unsupported \" + arr.String())\n\t}\n}\n\nfunc (m *machine) lowerVecMisc(op vecOp, instr *ssa.Instruction) {\n\tx, lane := instr.ArgWithLane()\n\tarr := ssaLaneToArrangement(lane)\n\tins := m.allocateInstr()\n\trn := m.getOperand_NR(m.compiler.ValueDefinition(x), extModeNone)\n\trd := m.compiler.VRegOf(instr.Return())\n\tins.asVecMisc(op, rd, rn, arr)\n\tm.insert(ins)\n}\n\nfunc (m *machine) lowerVecRRR(op vecOp, x, y, ret ssa.Value, arr vecArrangement) {\n\tins := m.allocateInstr()\n\trn := m.getOperand_NR(m.compiler.ValueDefinition(x), extModeNone)\n\trm := m.getOperand_NR(m.compiler.ValueDefinition(y), extModeNone)\n\trd := m.compiler.VRegOf(ret)\n\tins.asVecRRR(op, rd, rn, rm, arr)\n\tm.insert(ins)\n}\n\nfunc (m *machine) lowerVIMul(rd regalloc.VReg, rn, rm operand, arr vecArrangement) {\n\tif arr != vecArrangement2D {\n\t\tmul := m.allocateInstr()\n\t\tmul.asVecRRR(vecOpMul, rd, rn, rm, arr)\n\t\tm.insert(mul)\n\t} else {\n\t\ttmp1 := m.compiler.AllocateVReg(ssa.TypeV128)\n\t\ttmp2 := m.compiler.AllocateVReg(ssa.TypeV128)\n\t\ttmp3 := m.compiler.AllocateVReg(ssa.TypeV128)\n\n\t\ttmpRes := m.compiler.AllocateVReg(ssa.TypeV128)\n\n\t\t// Following the algorithm in https://chromium-review.googlesource.com/c/v8/v8/+/1781696\n\t\trev64 := m.allocateInstr()\n\t\trev64.asVecMisc(vecOpRev64, tmp2, rm, vecArrangement4S)\n\t\tm.insert(rev64)\n\n\t\tmul := m.allocateInstr()\n\t\tmul.asVecRRR(vecOpMul, tmp2, operandNR(tmp2), rn, vecArrangement4S)\n\t\tm.insert(mul)\n\n\t\txtn1 := m.allocateInstr()\n\t\txtn1.asVecMisc(vecOpXtn, tmp1, rn, vecArrangement2S)\n\t\tm.insert(xtn1)\n\n\t\taddp := m.allocateInstr()\n\t\taddp.asVecRRR(vecOpAddp, tmp2, operandNR(tmp2), operandNR(tmp2), vecArrangement4S)\n\t\tm.insert(addp)\n\n\t\txtn2 := m.allocateInstr()\n\t\txtn2.asVecMisc(vecOpXtn, tmp3, rm, vecArrangement2S)\n\t\tm.insert(xtn2)\n\n\t\t// Note: do not write the result directly into result yet. This is the same reason as in bsl.\n\t\t// In short, in UMLAL instruction, the result register is also one of the source register, and\n\t\t// the value on the result register is significant.\n\t\tshll := m.allocateInstr()\n\t\tshll.asVecMisc(vecOpShll, tmpRes, operandNR(tmp2), vecArrangement2S)\n\t\tm.insert(shll)\n\n\t\tumlal := m.allocateInstr()\n\t\tumlal.asVecRRRRewrite(vecOpUmlal, tmpRes, operandNR(tmp3), operandNR(tmp1), vecArrangement2S)\n\t\tm.insert(umlal)\n\n\t\tmov := m.allocateInstr()\n\t\tmov.asFpuMov128(rd, tmpRes)\n\t\tm.insert(mov)\n\t}\n}\n\nfunc (m *machine) lowerVMinMaxPseudo(instr *ssa.Instruction, max bool) {\n\tx, y, lane := instr.Arg2WithLane()\n\tarr := ssaLaneToArrangement(lane)\n\n\trn := m.getOperand_NR(m.compiler.ValueDefinition(x), extModeNone)\n\trm := m.getOperand_NR(m.compiler.ValueDefinition(y), extModeNone)\n\n\t// Note: this usage of tmp is important.\n\t// BSL modifies the destination register, so we need to use a temporary register so that\n\t// the actual definition of the destination register happens *after* the BSL instruction.\n\t// That way, we can force the spill instruction to be inserted after the BSL instruction.\n\ttmp := m.compiler.AllocateVReg(ssa.TypeV128)\n\n\tfcmgt := m.allocateInstr()\n\tif max {\n\t\tfcmgt.asVecRRR(vecOpFcmgt, tmp, rm, rn, arr)\n\t} else {\n\t\t// If min, swap the args.\n\t\tfcmgt.asVecRRR(vecOpFcmgt, tmp, rn, rm, arr)\n\t}\n\tm.insert(fcmgt)\n\n\tbsl := m.allocateInstr()\n\tbsl.asVecRRRRewrite(vecOpBsl, tmp, rm, rn, vecArrangement16B)\n\tm.insert(bsl)\n\n\tres := operandNR(m.compiler.VRegOf(instr.Return()))\n\tmov2 := m.allocateInstr()\n\tmov2.asFpuMov128(res.nr(), tmp)\n\tm.insert(mov2)\n}\n\nfunc (m *machine) lowerIRem(execCtxVReg regalloc.VReg, rd, rn regalloc.VReg, rm operand, _64bit, signed bool) {\n\tdiv := m.allocateInstr()\n\n\tif signed {\n\t\tdiv.asALU(aluOpSDiv, rd, operandNR(rn), rm, _64bit)\n\t} else {\n\t\tdiv.asALU(aluOpUDiv, rd, operandNR(rn), rm, _64bit)\n\t}\n\tm.insert(div)\n\n\t// Check if rm is zero:\n\tm.exitIfNot(execCtxVReg, registerAsRegNotZeroCond(rm.nr()), _64bit, wazevoapi.ExitCodeIntegerDivisionByZero)\n\n\t// rd = rn-rd*rm by MSUB instruction.\n\tmsub := m.allocateInstr()\n\tmsub.asALURRRR(aluOpMSub, rd, operandNR(rd), rm, rn, _64bit)\n\tm.insert(msub)\n}\n\nfunc (m *machine) lowerIDiv(execCtxVReg, rd regalloc.VReg, rn, rm operand, _64bit, signed bool) {\n\tdiv := m.allocateInstr()\n\n\tif signed {\n\t\tdiv.asALU(aluOpSDiv, rd, rn, rm, _64bit)\n\t} else {\n\t\tdiv.asALU(aluOpUDiv, rd, rn, rm, _64bit)\n\t}\n\tm.insert(div)\n\n\t// Check if rm is zero:\n\tm.exitIfNot(execCtxVReg, registerAsRegNotZeroCond(rm.nr()), _64bit, wazevoapi.ExitCodeIntegerDivisionByZero)\n\n\tif signed {\n\t\t// We need to check the signed overflow which happens iff \"math.MinInt{32,64} / -1\"\n\t\tminusOneCheck := m.allocateInstr()\n\t\t// Sets eq condition if rm == -1.\n\t\tminusOneCheck.asALU(aluOpAddS, xzrVReg, rm, operandImm12(1, 0), _64bit)\n\t\tm.insert(minusOneCheck)\n\n\t\tccmp := m.allocateInstr()\n\t\t// If eq condition is set, sets the flag by the result based on \"rn - 1\", otherwise clears the flag.\n\t\tccmp.asCCmpImm(rn, 1, eq, 0, _64bit)\n\t\tm.insert(ccmp)\n\n\t\t// Check the overflow flag.\n\t\tm.exitIfNot(execCtxVReg, vs.invert().asCond(), false, wazevoapi.ExitCodeIntegerOverflow)\n\t}\n}\n\n// exitIfNot emits a conditional branch to exit if the condition is not met.\n// If `c` (cond type) is a register, `cond64bit` must be chosen to indicate whether the register is 32-bit or 64-bit.\n// Otherwise, `cond64bit` is ignored.\nfunc (m *machine) exitIfNot(execCtxVReg regalloc.VReg, c cond, cond64bit bool, code wazevoapi.ExitCode) {\n\texecCtxTmp := m.copyToTmp(execCtxVReg)\n\n\tcbr := m.allocateInstr()\n\tm.insert(cbr)\n\tm.lowerExitWithCode(execCtxTmp, code)\n\t// Conditional branch target is after exit.\n\tl := m.insertBrTargetLabel()\n\tcbr.asCondBr(c, l, cond64bit)\n}\n\nfunc (m *machine) lowerFcopysign(x, y, ret ssa.Value) {\n\trn := m.getOperand_NR(m.compiler.ValueDefinition(x), extModeNone)\n\trm := m.getOperand_NR(m.compiler.ValueDefinition(y), extModeNone)\n\tvar tmpI, tmpF regalloc.VReg\n\t_64 := x.Type() == ssa.TypeF64\n\tif _64 {\n\t\ttmpF = m.compiler.AllocateVReg(ssa.TypeF64)\n\t\ttmpI = m.compiler.AllocateVReg(ssa.TypeI64)\n\t} else {\n\t\ttmpF = m.compiler.AllocateVReg(ssa.TypeF32)\n\t\ttmpI = m.compiler.AllocateVReg(ssa.TypeI32)\n\t}\n\trd := m.compiler.VRegOf(ret)\n\tm.lowerFcopysignImpl(rd, rn, rm, tmpI, tmpF, _64)\n}\n\nfunc (m *machine) lowerFcopysignImpl(rd regalloc.VReg, rn, rm operand, tmpI, tmpF regalloc.VReg, _64bit bool) {\n\t// This is exactly the same code emitted by GCC for \"__builtin_copysign\":\n\t//\n\t//    mov     x0, -9223372036854775808\n\t//    fmov    d2, x0\n\t//    vbit    v0.8b, v1.8b, v2.8b\n\t//\n\n\tsetMSB := m.allocateInstr()\n\tif _64bit {\n\t\tm.lowerConstantI64(tmpI, math.MinInt64)\n\t\tsetMSB.asMovToVec(tmpF, operandNR(tmpI), vecArrangementD, vecIndex(0))\n\t} else {\n\t\tm.lowerConstantI32(tmpI, math.MinInt32)\n\t\tsetMSB.asMovToVec(tmpF, operandNR(tmpI), vecArrangementS, vecIndex(0))\n\t}\n\tm.insert(setMSB)\n\n\ttmpReg := m.compiler.AllocateVReg(ssa.TypeF64)\n\n\tmov := m.allocateInstr()\n\tmov.asFpuMov64(tmpReg, rn.nr())\n\tm.insert(mov)\n\n\tvbit := m.allocateInstr()\n\tvbit.asVecRRRRewrite(vecOpBit, tmpReg, rm, operandNR(tmpF), vecArrangement8B)\n\tm.insert(vbit)\n\n\tmovDst := m.allocateInstr()\n\tmovDst.asFpuMov64(rd, tmpReg)\n\tm.insert(movDst)\n}\n\nfunc (m *machine) lowerBitcast(instr *ssa.Instruction) {\n\tv, dstType := instr.BitcastData()\n\tsrcType := v.Type()\n\trn := m.getOperand_NR(m.compiler.ValueDefinition(v), extModeNone)\n\trd := m.compiler.VRegOf(instr.Return())\n\tsrcInt := srcType.IsInt()\n\tdstInt := dstType.IsInt()\n\tswitch {\n\tcase srcInt && !dstInt: // Int to Float:\n\t\tmov := m.allocateInstr()\n\t\tvar arr vecArrangement\n\t\tif srcType.Bits() == 64 {\n\t\t\tarr = vecArrangementD\n\t\t} else {\n\t\t\tarr = vecArrangementS\n\t\t}\n\t\tmov.asMovToVec(rd, rn, arr, vecIndex(0))\n\t\tm.insert(mov)\n\tcase !srcInt && dstInt: // Float to Int:\n\t\tmov := m.allocateInstr()\n\t\tvar arr vecArrangement\n\t\tif dstType.Bits() == 64 {\n\t\t\tarr = vecArrangementD\n\t\t} else {\n\t\t\tarr = vecArrangementS\n\t\t}\n\t\tmov.asMovFromVec(rd, rn, arr, vecIndex(0), false)\n\t\tm.insert(mov)\n\tdefault:\n\t\tpanic(\"TODO?BUG?\")\n\t}\n}\n\nfunc (m *machine) lowerFpuUniOp(op fpuUniOp, in, out ssa.Value) {\n\trn := m.getOperand_NR(m.compiler.ValueDefinition(in), extModeNone)\n\trd := m.compiler.VRegOf(out)\n\n\tneg := m.allocateInstr()\n\tneg.asFpuRR(op, rd, rn, in.Type().Bits() == 64)\n\tm.insert(neg)\n}\n\nfunc (m *machine) lowerFpuToInt(rd regalloc.VReg, rn operand, ctx regalloc.VReg, signed, src64bit, dst64bit, nonTrapping bool) {\n\tif !nonTrapping {\n\t\t// First of all, we have to clear the FPU flags.\n\t\tflagClear := m.allocateInstr()\n\t\tflagClear.asMovToFPSR(xzrVReg)\n\t\tm.insert(flagClear)\n\t}\n\n\t// Then, do the conversion which doesn't trap inherently.\n\tcvt := m.allocateInstr()\n\tcvt.asFpuToInt(rd, rn, signed, src64bit, dst64bit)\n\tm.insert(cvt)\n\n\tif !nonTrapping {\n\t\ttmpReg := m.compiler.AllocateVReg(ssa.TypeI64)\n\n\t\t// After the conversion, check the FPU flags.\n\t\tgetFlag := m.allocateInstr()\n\t\tgetFlag.asMovFromFPSR(tmpReg)\n\t\tm.insert(getFlag)\n\n\t\texecCtx := m.copyToTmp(ctx)\n\t\t_rn := operandNR(m.copyToTmp(rn.nr()))\n\n\t\t// Check if the conversion was undefined by comparing the status with 1.\n\t\t// See https://developer.arm.com/documentation/ddi0595/2020-12/AArch64-Registers/FPSR--Floating-point-Status-Register\n\t\talu := m.allocateInstr()\n\t\talu.asALU(aluOpSubS, xzrVReg, operandNR(tmpReg), operandImm12(1, 0), true)\n\t\tm.insert(alu)\n\n\t\t// If it is not undefined, we can return the result.\n\t\tok := m.allocateInstr()\n\t\tm.insert(ok)\n\n\t\t// Otherwise, we have to choose the status depending on it is overflow or NaN conversion.\n\n\t\t// Comparing itself to check if it is a NaN.\n\t\tfpuCmp := m.allocateInstr()\n\t\tfpuCmp.asFpuCmp(_rn, _rn, src64bit)\n\t\tm.insert(fpuCmp)\n\t\t// If the VC flag is not set (== VS flag is set), it is a NaN.\n\t\tm.exitIfNot(execCtx, vc.asCond(), false, wazevoapi.ExitCodeInvalidConversionToInteger)\n\t\t// Otherwise, it is an overflow.\n\t\tm.lowerExitWithCode(execCtx, wazevoapi.ExitCodeIntegerOverflow)\n\n\t\t// Conditional branch target is after exit.\n\t\tl := m.insertBrTargetLabel()\n\t\tok.asCondBr(ne.asCond(), l, false /* ignored */)\n\t}\n}\n\nfunc (m *machine) lowerIntToFpu(rd regalloc.VReg, rn operand, signed, src64bit, dst64bit bool) {\n\tcvt := m.allocateInstr()\n\tcvt.asIntToFpu(rd, rn, signed, src64bit, dst64bit)\n\tm.insert(cvt)\n}\n\nfunc (m *machine) lowerFpuBinOp(si *ssa.Instruction) {\n\tinstr := m.allocateInstr()\n\tvar op fpuBinOp\n\tswitch si.Opcode() {\n\tcase ssa.OpcodeFadd:\n\t\top = fpuBinOpAdd\n\tcase ssa.OpcodeFsub:\n\t\top = fpuBinOpSub\n\tcase ssa.OpcodeFmul:\n\t\top = fpuBinOpMul\n\tcase ssa.OpcodeFdiv:\n\t\top = fpuBinOpDiv\n\tcase ssa.OpcodeFmax:\n\t\top = fpuBinOpMax\n\tcase ssa.OpcodeFmin:\n\t\top = fpuBinOpMin\n\t}\n\tx, y := si.Arg2()\n\txDef, yDef := m.compiler.ValueDefinition(x), m.compiler.ValueDefinition(y)\n\trn := m.getOperand_NR(xDef, extModeNone)\n\trm := m.getOperand_NR(yDef, extModeNone)\n\trd := m.compiler.VRegOf(si.Return())\n\tinstr.asFpuRRR(op, rd, rn, rm, x.Type().Bits() == 64)\n\tm.insert(instr)\n}\n\nfunc (m *machine) lowerSubOrAdd(si *ssa.Instruction, add bool) {\n\tx, y := si.Arg2()\n\tif !x.Type().IsInt() {\n\t\tpanic(\"BUG?\")\n\t}\n\n\txDef, yDef := m.compiler.ValueDefinition(x), m.compiler.ValueDefinition(y)\n\trn := m.getOperand_NR(xDef, extModeNone)\n\trm, yNegated := m.getOperand_MaybeNegatedImm12_ER_SR_NR(yDef, extModeNone)\n\n\tvar aop aluOp\n\tswitch {\n\tcase add && !yNegated: // rn+rm = x+y\n\t\taop = aluOpAdd\n\tcase add && yNegated: // rn-rm = x-(-y) = x+y\n\t\taop = aluOpSub\n\tcase !add && !yNegated: // rn-rm = x-y\n\t\taop = aluOpSub\n\tcase !add && yNegated: // rn+rm = x-(-y) = x-y\n\t\taop = aluOpAdd\n\t}\n\trd := m.compiler.VRegOf(si.Return())\n\talu := m.allocateInstr()\n\talu.asALU(aop, rd, rn, rm, x.Type().Bits() == 64)\n\tm.insert(alu)\n}\n\n// InsertMove implements backend.Machine.\nfunc (m *machine) InsertMove(dst, src regalloc.VReg, typ ssa.Type) {\n\tinstr := m.allocateInstr()\n\tswitch typ {\n\tcase ssa.TypeI32, ssa.TypeI64:\n\t\tinstr.asMove64(dst, src)\n\tcase ssa.TypeF32, ssa.TypeF64:\n\t\tinstr.asFpuMov64(dst, src)\n\tcase ssa.TypeV128:\n\t\tinstr.asFpuMov128(dst, src)\n\tdefault:\n\t\tpanic(\"TODO\")\n\t}\n\tm.insert(instr)\n}\n\nfunc (m *machine) lowerIcmp(si *ssa.Instruction) {\n\tx, y, c := si.IcmpData()\n\tflag := condFlagFromSSAIntegerCmpCond(c)\n\n\tin64bit := x.Type().Bits() == 64\n\tvar ext extMode\n\tif in64bit {\n\t\tif c.Signed() {\n\t\t\text = extModeSignExtend64\n\t\t} else {\n\t\t\text = extModeZeroExtend64\n\t\t}\n\t} else {\n\t\tif c.Signed() {\n\t\t\text = extModeSignExtend32\n\t\t} else {\n\t\t\text = extModeZeroExtend32\n\t\t}\n\t}\n\n\trn := m.getOperand_NR(m.compiler.ValueDefinition(x), ext)\n\trm := m.getOperand_Imm12_ER_SR_NR(m.compiler.ValueDefinition(y), ext)\n\talu := m.allocateInstr()\n\talu.asALU(aluOpSubS, xzrVReg, rn, rm, in64bit)\n\tm.insert(alu)\n\n\tcset := m.allocateInstr()\n\tcset.asCSet(m.compiler.VRegOf(si.Return()), false, flag)\n\tm.insert(cset)\n}\n\nfunc (m *machine) lowerVIcmp(si *ssa.Instruction) {\n\tx, y, c, lane := si.VIcmpData()\n\tflag := condFlagFromSSAIntegerCmpCond(c)\n\tarr := ssaLaneToArrangement(lane)\n\n\trn := m.getOperand_NR(m.compiler.ValueDefinition(x), extModeNone)\n\trm := m.getOperand_NR(m.compiler.ValueDefinition(y), extModeNone)\n\trd := m.compiler.VRegOf(si.Return())\n\n\tswitch flag {\n\tcase eq:\n\t\tcmp := m.allocateInstr()\n\t\tcmp.asVecRRR(vecOpCmeq, rd, rn, rm, arr)\n\t\tm.insert(cmp)\n\tcase ne:\n\t\tcmp := m.allocateInstr()\n\t\tcmp.asVecRRR(vecOpCmeq, rd, rn, rm, arr)\n\t\tm.insert(cmp)\n\t\tnot := m.allocateInstr()\n\t\tnot.asVecMisc(vecOpNot, rd, operandNR(rd), vecArrangement16B)\n\t\tm.insert(not)\n\tcase ge:\n\t\tcmp := m.allocateInstr()\n\t\tcmp.asVecRRR(vecOpCmge, rd, rn, rm, arr)\n\t\tm.insert(cmp)\n\tcase gt:\n\t\tcmp := m.allocateInstr()\n\t\tcmp.asVecRRR(vecOpCmgt, rd, rn, rm, arr)\n\t\tm.insert(cmp)\n\tcase le:\n\t\tcmp := m.allocateInstr()\n\t\tcmp.asVecRRR(vecOpCmge, rd, rm, rn, arr) // rm, rn are swapped\n\t\tm.insert(cmp)\n\tcase lt:\n\t\tcmp := m.allocateInstr()\n\t\tcmp.asVecRRR(vecOpCmgt, rd, rm, rn, arr) // rm, rn are swapped\n\t\tm.insert(cmp)\n\tcase hs:\n\t\tcmp := m.allocateInstr()\n\t\tcmp.asVecRRR(vecOpCmhs, rd, rn, rm, arr)\n\t\tm.insert(cmp)\n\tcase hi:\n\t\tcmp := m.allocateInstr()\n\t\tcmp.asVecRRR(vecOpCmhi, rd, rn, rm, arr)\n\t\tm.insert(cmp)\n\tcase ls:\n\t\tcmp := m.allocateInstr()\n\t\tcmp.asVecRRR(vecOpCmhs, rd, rm, rn, arr) // rm, rn are swapped\n\t\tm.insert(cmp)\n\tcase lo:\n\t\tcmp := m.allocateInstr()\n\t\tcmp.asVecRRR(vecOpCmhi, rd, rm, rn, arr) // rm, rn are swapped\n\t\tm.insert(cmp)\n\t}\n}\n\nfunc (m *machine) lowerVFcmp(si *ssa.Instruction) {\n\tx, y, c, lane := si.VFcmpData()\n\tflag := condFlagFromSSAFloatCmpCond(c)\n\tarr := ssaLaneToArrangement(lane)\n\n\trn := m.getOperand_NR(m.compiler.ValueDefinition(x), extModeNone)\n\trm := m.getOperand_NR(m.compiler.ValueDefinition(y), extModeNone)\n\trd := m.compiler.VRegOf(si.Return())\n\n\tswitch flag {\n\tcase eq:\n\t\tcmp := m.allocateInstr()\n\t\tcmp.asVecRRR(vecOpFcmeq, rd, rn, rm, arr)\n\t\tm.insert(cmp)\n\tcase ne:\n\t\tcmp := m.allocateInstr()\n\t\tcmp.asVecRRR(vecOpFcmeq, rd, rn, rm, arr)\n\t\tm.insert(cmp)\n\t\tnot := m.allocateInstr()\n\t\tnot.asVecMisc(vecOpNot, rd, operandNR(rd), vecArrangement16B)\n\t\tm.insert(not)\n\tcase ge:\n\t\tcmp := m.allocateInstr()\n\t\tcmp.asVecRRR(vecOpFcmge, rd, rn, rm, arr)\n\t\tm.insert(cmp)\n\tcase gt:\n\t\tcmp := m.allocateInstr()\n\t\tcmp.asVecRRR(vecOpFcmgt, rd, rn, rm, arr)\n\t\tm.insert(cmp)\n\tcase mi:\n\t\tcmp := m.allocateInstr()\n\t\tcmp.asVecRRR(vecOpFcmgt, rd, rm, rn, arr) // rm, rn are swapped\n\t\tm.insert(cmp)\n\tcase ls:\n\t\tcmp := m.allocateInstr()\n\t\tcmp.asVecRRR(vecOpFcmge, rd, rm, rn, arr) // rm, rn are swapped\n\t\tm.insert(cmp)\n\t}\n}\n\nfunc (m *machine) lowerVfpuToInt(rd regalloc.VReg, rn operand, arr vecArrangement, signed bool) {\n\tcvt := m.allocateInstr()\n\tif signed {\n\t\tcvt.asVecMisc(vecOpFcvtzs, rd, rn, arr)\n\t} else {\n\t\tcvt.asVecMisc(vecOpFcvtzu, rd, rn, arr)\n\t}\n\tm.insert(cvt)\n\n\tif arr == vecArrangement2D {\n\t\tnarrow := m.allocateInstr()\n\t\tif signed {\n\t\t\tnarrow.asVecMisc(vecOpSqxtn, rd, operandNR(rd), vecArrangement2S)\n\t\t} else {\n\t\t\tnarrow.asVecMisc(vecOpUqxtn, rd, operandNR(rd), vecArrangement2S)\n\t\t}\n\t\tm.insert(narrow)\n\t}\n}\n\nfunc (m *machine) lowerVfpuFromInt(rd regalloc.VReg, rn operand, arr vecArrangement, signed bool) {\n\tcvt := m.allocateInstr()\n\tif signed {\n\t\tcvt.asVecMisc(vecOpScvtf, rd, rn, arr)\n\t} else {\n\t\tcvt.asVecMisc(vecOpUcvtf, rd, rn, arr)\n\t}\n\tm.insert(cvt)\n}\n\nfunc (m *machine) lowerShifts(si *ssa.Instruction, ext extMode, aluOp aluOp) {\n\tx, amount := si.Arg2()\n\trn := m.getOperand_NR(m.compiler.ValueDefinition(x), ext)\n\trm := m.getOperand_ShiftImm_NR(m.compiler.ValueDefinition(amount), ext, x.Type().Bits())\n\trd := m.compiler.VRegOf(si.Return())\n\n\talu := m.allocateInstr()\n\talu.asALUShift(aluOp, rd, rn, rm, x.Type().Bits() == 64)\n\tm.insert(alu)\n}\n\nfunc (m *machine) lowerBitwiseAluOp(si *ssa.Instruction, op aluOp, ignoreResult bool) {\n\tx, y := si.Arg2()\n\n\txDef, yDef := m.compiler.ValueDefinition(x), m.compiler.ValueDefinition(y)\n\trn := m.getOperand_NR(xDef, extModeNone)\n\n\tvar rd regalloc.VReg\n\tif ignoreResult {\n\t\trd = xzrVReg\n\t} else {\n\t\trd = m.compiler.VRegOf(si.Return())\n\t}\n\n\t_64 := x.Type().Bits() == 64\n\talu := m.allocateInstr()\n\tif instr := yDef.Instr; instr != nil && instr.Constant() {\n\t\tc := instr.ConstantVal()\n\t\tif isBitMaskImmediate(c, _64) {\n\t\t\t// Constant bit wise operations can be lowered to a single instruction.\n\t\t\talu.asALUBitmaskImm(op, rd, rn.nr(), c, _64)\n\t\t\tm.insert(alu)\n\t\t\treturn\n\t\t}\n\t}\n\n\trm := m.getOperand_SR_NR(yDef, extModeNone)\n\talu.asALU(op, rd, rn, rm, _64)\n\tm.insert(alu)\n}\n\nfunc (m *machine) lowerRotl(si *ssa.Instruction) {\n\tx, y := si.Arg2()\n\tr := si.Return()\n\t_64 := r.Type().Bits() == 64\n\n\trn := m.getOperand_NR(m.compiler.ValueDefinition(x), extModeNone)\n\trm := m.getOperand_NR(m.compiler.ValueDefinition(y), extModeNone)\n\tvar tmp regalloc.VReg\n\tif _64 {\n\t\ttmp = m.compiler.AllocateVReg(ssa.TypeI64)\n\t} else {\n\t\ttmp = m.compiler.AllocateVReg(ssa.TypeI32)\n\t}\n\trd := m.compiler.VRegOf(r)\n\n\t// Encode rotl as neg + rotr: neg is a sub against the zero-reg.\n\tm.lowerRotlImpl(rd, rn, rm, tmp, _64)\n}\n\nfunc (m *machine) lowerRotlImpl(rd regalloc.VReg, rn, rm operand, tmp regalloc.VReg, is64bit bool) {\n\t// Encode rotl as neg + rotr: neg is a sub against the zero-reg.\n\tneg := m.allocateInstr()\n\tneg.asALU(aluOpSub, tmp, operandNR(xzrVReg), rm, is64bit)\n\tm.insert(neg)\n\talu := m.allocateInstr()\n\talu.asALU(aluOpRotR, rd, rn, operandNR(tmp), is64bit)\n\tm.insert(alu)\n}\n\nfunc (m *machine) lowerRotr(si *ssa.Instruction) {\n\tx, y := si.Arg2()\n\n\txDef, yDef := m.compiler.ValueDefinition(x), m.compiler.ValueDefinition(y)\n\trn := m.getOperand_NR(xDef, extModeNone)\n\trm := m.getOperand_NR(yDef, extModeNone)\n\trd := m.compiler.VRegOf(si.Return())\n\n\talu := m.allocateInstr()\n\talu.asALU(aluOpRotR, rd, rn, rm, si.Return().Type().Bits() == 64)\n\tm.insert(alu)\n}\n\nfunc (m *machine) lowerExtend(arg, ret ssa.Value, from, to byte, signed bool) {\n\trd := m.compiler.VRegOf(ret)\n\tdef := m.compiler.ValueDefinition(arg)\n\n\tif instr := def.Instr; !signed && from == 32 && instr != nil {\n\t\t// We can optimize out the unsigned extend because:\n\t\t// \tWrites to the W register set bits [63:32] of the X register to zero\n\t\t//  https://developer.arm.com/documentation/den0024/a/An-Introduction-to-the-ARMv8-Instruction-Sets/The-ARMv8-instruction-sets/Distinguishing-between-32-bit-and-64-bit-A64-instructions\n\t\tswitch instr.Opcode() {\n\t\tcase\n\t\t\tssa.OpcodeIadd, ssa.OpcodeIsub, ssa.OpcodeLoad,\n\t\t\tssa.OpcodeBand, ssa.OpcodeBor, ssa.OpcodeBnot,\n\t\t\tssa.OpcodeIshl, ssa.OpcodeUshr, ssa.OpcodeSshr,\n\t\t\tssa.OpcodeRotl, ssa.OpcodeRotr,\n\t\t\tssa.OpcodeUload8, ssa.OpcodeUload16, ssa.OpcodeUload32:\n\t\t\t// So, if the argument is the result of a 32-bit operation, we can just copy the register.\n\t\t\t// It is highly likely that this copy will be optimized out after register allocation.\n\t\t\trn := m.compiler.VRegOf(arg)\n\t\t\tmov := m.allocateInstr()\n\t\t\t// Note: do not use move32 as it will be lowered to a 32-bit move, which is not copy (that is actually the impl of UExtend).\n\t\t\tmov.asMove64(rd, rn)\n\t\t\tm.insert(mov)\n\t\t\treturn\n\t\tdefault:\n\t\t}\n\t}\n\trn := m.getOperand_NR(def, extModeNone)\n\n\text := m.allocateInstr()\n\text.asExtend(rd, rn.nr(), from, to, signed)\n\tm.insert(ext)\n}\n\nfunc (m *machine) lowerFcmp(x, y, result ssa.Value, c ssa.FloatCmpCond) {\n\trn, rm := m.getOperand_NR(m.compiler.ValueDefinition(x), extModeNone), m.getOperand_NR(m.compiler.ValueDefinition(y), extModeNone)\n\n\tfc := m.allocateInstr()\n\tfc.asFpuCmp(rn, rm, x.Type().Bits() == 64)\n\tm.insert(fc)\n\n\tcset := m.allocateInstr()\n\tcset.asCSet(m.compiler.VRegOf(result), false, condFlagFromSSAFloatCmpCond(c))\n\tm.insert(cset)\n}\n\nfunc (m *machine) lowerImul(x, y, result ssa.Value) {\n\trd := m.compiler.VRegOf(result)\n\trn := m.getOperand_NR(m.compiler.ValueDefinition(x), extModeNone)\n\trm := m.getOperand_NR(m.compiler.ValueDefinition(y), extModeNone)\n\n\t// TODO: if this comes before Add/Sub, we could merge it by putting it into the place of xzrVReg.\n\n\tmul := m.allocateInstr()\n\tmul.asALURRRR(aluOpMAdd, rd, rn, rm, xzrVReg, x.Type().Bits() == 64)\n\tm.insert(mul)\n}\n\nfunc (m *machine) lowerClz(x, result ssa.Value) {\n\trd := m.compiler.VRegOf(result)\n\trn := m.getOperand_NR(m.compiler.ValueDefinition(x), extModeNone)\n\tclz := m.allocateInstr()\n\tclz.asBitRR(bitOpClz, rd, rn.nr(), x.Type().Bits() == 64)\n\tm.insert(clz)\n}\n\nfunc (m *machine) lowerCtz(x, result ssa.Value) {\n\trd := m.compiler.VRegOf(result)\n\trn := m.getOperand_NR(m.compiler.ValueDefinition(x), extModeNone)\n\trbit := m.allocateInstr()\n\t_64 := x.Type().Bits() == 64\n\tvar tmpReg regalloc.VReg\n\tif _64 {\n\t\ttmpReg = m.compiler.AllocateVReg(ssa.TypeI64)\n\t} else {\n\t\ttmpReg = m.compiler.AllocateVReg(ssa.TypeI32)\n\t}\n\trbit.asBitRR(bitOpRbit, tmpReg, rn.nr(), _64)\n\tm.insert(rbit)\n\n\tclz := m.allocateInstr()\n\tclz.asBitRR(bitOpClz, rd, tmpReg, _64)\n\tm.insert(clz)\n}\n\nfunc (m *machine) lowerPopcnt(x, result ssa.Value) {\n\t// arm64 doesn't have an instruction for population count on scalar register,\n\t// so we use the vector instruction `cnt`.\n\t// This is exactly what the official Go implements bits.OneCount.\n\t// For example, \"func () int { return bits.OneCount(10) }\" is compiled as\n\t//\n\t//    MOVD    $10, R0 ;; Load 10.\n\t//    FMOVD   R0, F0\n\t//    VCNT    V0.B8, V0.B8\n\t//    UADDLV  V0.B8, V0\n\t//\n\t// In aarch64 asm, FMOVD is encoded as `ins`, VCNT is `cnt`,\n\t// and the registers may use different names. In our encoding we use the following\n\t// instructions:\n\t//\n\t//    ins v0.d[0], x0     ;; mov from GPR to vec (FMOV above) is encoded as INS\n\t//    cnt v0.16b, v0.16b  ;; we use vec arrangement 16b\n\t//    uaddlv h0, v0.8b    ;; h0 is still v0 with the dest width specifier 'H', implied when src arrangement is 8b\n\t//    mov x5, v0.d[0]     ;; finally we mov the result back to a GPR\n\t//\n\n\trd := m.compiler.VRegOf(result)\n\trn := m.getOperand_NR(m.compiler.ValueDefinition(x), extModeNone)\n\n\trf1 := operandNR(m.compiler.AllocateVReg(ssa.TypeF64))\n\tins := m.allocateInstr()\n\tins.asMovToVec(rf1.nr(), rn, vecArrangementD, vecIndex(0))\n\tm.insert(ins)\n\n\trf2 := operandNR(m.compiler.AllocateVReg(ssa.TypeF64))\n\tcnt := m.allocateInstr()\n\tcnt.asVecMisc(vecOpCnt, rf2.nr(), rf1, vecArrangement16B)\n\tm.insert(cnt)\n\n\trf3 := operandNR(m.compiler.AllocateVReg(ssa.TypeF64))\n\tuaddlv := m.allocateInstr()\n\tuaddlv.asVecLanes(vecOpUaddlv, rf3.nr(), rf2, vecArrangement8B)\n\tm.insert(uaddlv)\n\n\tmov := m.allocateInstr()\n\tmov.asMovFromVec(rd, rf3, vecArrangementD, vecIndex(0), false)\n\tm.insert(mov)\n}\n\n// lowerExitWithCode lowers the lowerExitWithCode takes a context pointer as argument.\nfunc (m *machine) lowerExitWithCode(execCtxVReg regalloc.VReg, code wazevoapi.ExitCode) {\n\ttmpReg1 := m.compiler.AllocateVReg(ssa.TypeI32)\n\tloadExitCodeConst := m.allocateInstr()\n\tloadExitCodeConst.asMOVZ(tmpReg1, uint64(code), 0, true)\n\n\tsetExitCode := m.allocateInstr()\n\tmode := m.amodePool.Allocate()\n\t*mode = addressMode{\n\t\tkind: addressModeKindRegUnsignedImm12,\n\t\trn:   execCtxVReg, imm: wazevoapi.ExecutionContextOffsetExitCodeOffset.I64(),\n\t}\n\tsetExitCode.asStore(operandNR(tmpReg1), mode, 32)\n\n\t// In order to unwind the stack, we also need to push the current stack pointer:\n\ttmp2 := m.compiler.AllocateVReg(ssa.TypeI64)\n\tmovSpToTmp := m.allocateInstr()\n\tmovSpToTmp.asMove64(tmp2, spVReg)\n\tstrSpToExecCtx := m.allocateInstr()\n\tmode2 := m.amodePool.Allocate()\n\t*mode2 = addressMode{\n\t\tkind: addressModeKindRegUnsignedImm12,\n\t\trn:   execCtxVReg, imm: wazevoapi.ExecutionContextOffsetStackPointerBeforeGoCall.I64(),\n\t}\n\tstrSpToExecCtx.asStore(operandNR(tmp2), mode2, 64)\n\t// Also the address of this exit.\n\ttmp3 := m.compiler.AllocateVReg(ssa.TypeI64)\n\tcurrentAddrToTmp := m.allocateInstr()\n\tcurrentAddrToTmp.asAdr(tmp3, 0)\n\tstoreCurrentAddrToExecCtx := m.allocateInstr()\n\tmode3 := m.amodePool.Allocate()\n\t*mode3 = addressMode{\n\t\tkind: addressModeKindRegUnsignedImm12,\n\t\trn:   execCtxVReg, imm: wazevoapi.ExecutionContextOffsetGoCallReturnAddress.I64(),\n\t}\n\tstoreCurrentAddrToExecCtx.asStore(operandNR(tmp3), mode3, 64)\n\n\texitSeq := m.allocateInstr()\n\texitSeq.asExitSequence(execCtxVReg)\n\n\tm.insert(loadExitCodeConst)\n\tm.insert(setExitCode)\n\tm.insert(movSpToTmp)\n\tm.insert(strSpToExecCtx)\n\tm.insert(currentAddrToTmp)\n\tm.insert(storeCurrentAddrToExecCtx)\n\tm.insert(exitSeq)\n}\n\nfunc (m *machine) lowerIcmpToFlag(x, y ssa.Value, signed bool) {\n\tif x.Type() != y.Type() {\n\t\tpanic(\n\t\t\tfmt.Sprintf(\"TODO(maybe): support icmp with different types: v%d=%s != v%d=%s\",\n\t\t\t\tx.ID(), x.Type(), y.ID(), y.Type()))\n\t}\n\n\textMod := extModeOf(x.Type(), signed)\n\n\t// First operand must be in pure register form.\n\trn := m.getOperand_NR(m.compiler.ValueDefinition(x), extMod)\n\t// Second operand can be in any of Imm12, ER, SR, or NR form supported by the SUBS instructions.\n\trm := m.getOperand_Imm12_ER_SR_NR(m.compiler.ValueDefinition(y), extMod)\n\n\talu := m.allocateInstr()\n\t// subs zr, rn, rm\n\talu.asALU(\n\t\taluOpSubS,\n\t\t// We don't need the result, just need to set flags.\n\t\txzrVReg,\n\t\trn,\n\t\trm,\n\t\tx.Type().Bits() == 64,\n\t)\n\tm.insert(alu)\n}\n\nfunc (m *machine) lowerFcmpToFlag(x, y ssa.Value) {\n\tif x.Type() != y.Type() {\n\t\tpanic(\"TODO(maybe): support icmp with different types\")\n\t}\n\n\trn := m.getOperand_NR(m.compiler.ValueDefinition(x), extModeNone)\n\trm := m.getOperand_NR(m.compiler.ValueDefinition(y), extModeNone)\n\tcmp := m.allocateInstr()\n\tcmp.asFpuCmp(rn, rm, x.Type().Bits() == 64)\n\tm.insert(cmp)\n}\n\nfunc (m *machine) lowerExitIfTrueWithCode(execCtxVReg regalloc.VReg, cond ssa.Value, code wazevoapi.ExitCode) {\n\tcondDef := m.compiler.ValueDefinition(cond)\n\tif !m.compiler.MatchInstr(condDef, ssa.OpcodeIcmp) {\n\t\tpanic(\"TODO: OpcodeExitIfTrueWithCode must come after Icmp at the moment: \" + condDef.Instr.Opcode().String())\n\t}\n\tcondDef.Instr.MarkLowered()\n\n\tcvalInstr := condDef.Instr\n\tx, y, c := cvalInstr.IcmpData()\n\tsigned := c.Signed()\n\n\tif !m.tryLowerBandToFlag(x, y) {\n\t\tm.lowerIcmpToFlag(x, y, signed)\n\t}\n\n\t// We need to copy the execution context to a temp register, because if it's spilled,\n\t// it might end up being reloaded inside the exiting branch.\n\texecCtxTmp := m.copyToTmp(execCtxVReg)\n\n\t// We have to skip the entire exit sequence if the condition is false.\n\tcbr := m.allocateInstr()\n\tm.insert(cbr)\n\tm.lowerExitWithCode(execCtxTmp, code)\n\t// conditional branch target is after exit.\n\tl := m.insertBrTargetLabel()\n\tcbr.asCondBr(condFlagFromSSAIntegerCmpCond(c).invert().asCond(), l, false /* ignored */)\n}\n\nfunc (m *machine) lowerSelect(c, x, y, result ssa.Value) {\n\tcvalDef := m.compiler.ValueDefinition(c)\n\n\tvar cc condFlag\n\tswitch {\n\tcase m.compiler.MatchInstr(cvalDef, ssa.OpcodeIcmp): // This case, we can use the ALU flag set by SUBS instruction.\n\t\tcvalInstr := cvalDef.Instr\n\t\tx, y, c := cvalInstr.IcmpData()\n\t\tcc = condFlagFromSSAIntegerCmpCond(c)\n\t\tm.lowerIcmpToFlag(x, y, c.Signed())\n\t\tcvalDef.Instr.MarkLowered()\n\tcase m.compiler.MatchInstr(cvalDef, ssa.OpcodeFcmp): // This case we can use the Fpu flag directly.\n\t\tcvalInstr := cvalDef.Instr\n\t\tx, y, c := cvalInstr.FcmpData()\n\t\tcc = condFlagFromSSAFloatCmpCond(c)\n\t\tm.lowerFcmpToFlag(x, y)\n\t\tcvalDef.Instr.MarkLowered()\n\tdefault:\n\t\trn := m.getOperand_NR(cvalDef, extModeNone)\n\t\tif c.Type() != ssa.TypeI32 && c.Type() != ssa.TypeI64 {\n\t\t\tpanic(\"TODO?BUG?: support select with non-integer condition\")\n\t\t}\n\t\talu := m.allocateInstr()\n\t\t// subs zr, rn, zr\n\t\talu.asALU(\n\t\t\taluOpSubS,\n\t\t\t// We don't need the result, just need to set flags.\n\t\t\txzrVReg,\n\t\t\trn,\n\t\t\toperandNR(xzrVReg),\n\t\t\tc.Type().Bits() == 64,\n\t\t)\n\t\tm.insert(alu)\n\t\tcc = ne\n\t}\n\n\trn := m.getOperand_NR(m.compiler.ValueDefinition(x), extModeNone)\n\trm := m.getOperand_NR(m.compiler.ValueDefinition(y), extModeNone)\n\n\trd := m.compiler.VRegOf(result)\n\tswitch x.Type() {\n\tcase ssa.TypeI32, ssa.TypeI64:\n\t\t// csel rd, rn, rm, cc\n\t\tcsel := m.allocateInstr()\n\t\tcsel.asCSel(rd, rn, rm, cc, x.Type().Bits() == 64)\n\t\tm.insert(csel)\n\tcase ssa.TypeF32, ssa.TypeF64:\n\t\t// fcsel rd, rn, rm, cc\n\t\tfcsel := m.allocateInstr()\n\t\tfcsel.asFpuCSel(rd, rn, rm, cc, x.Type().Bits() == 64)\n\t\tm.insert(fcsel)\n\tdefault:\n\t\tpanic(\"BUG\")\n\t}\n}\n\nfunc (m *machine) lowerSelectVec(rc, rn, rm operand, rd regalloc.VReg) {\n\t// First check if `rc` is zero or not.\n\tcheckZero := m.allocateInstr()\n\tcheckZero.asALU(aluOpSubS, xzrVReg, rc, operandNR(xzrVReg), false)\n\tm.insert(checkZero)\n\n\t// Then use CSETM to set all bits to one if `rc` is zero.\n\tallOnesOrZero := m.compiler.AllocateVReg(ssa.TypeI64)\n\tcset := m.allocateInstr()\n\tcset.asCSet(allOnesOrZero, true, ne)\n\tm.insert(cset)\n\n\t// Then move the bits to the result vector register.\n\ttmp2 := m.compiler.AllocateVReg(ssa.TypeV128)\n\tdup := m.allocateInstr()\n\tdup.asVecDup(tmp2, operandNR(allOnesOrZero), vecArrangement2D)\n\tm.insert(dup)\n\n\t// Now that `tmp2` has either all bits one or zero depending on `rc`,\n\t// we can use bsl to select between `rn` and `rm`.\n\tins := m.allocateInstr()\n\tins.asVecRRRRewrite(vecOpBsl, tmp2, rn, rm, vecArrangement16B)\n\tm.insert(ins)\n\n\t// Finally, move the result to the destination register.\n\tmov2 := m.allocateInstr()\n\tmov2.asFpuMov128(rd, tmp2)\n\tm.insert(mov2)\n}\n\nfunc (m *machine) lowerAtomicRmw(si *ssa.Instruction) {\n\tssaOp, size := si.AtomicRmwData()\n\n\tvar op atomicRmwOp\n\tvar negateArg bool\n\tvar flipArg bool\n\tswitch ssaOp {\n\tcase ssa.AtomicRmwOpAdd:\n\t\top = atomicRmwOpAdd\n\tcase ssa.AtomicRmwOpSub:\n\t\top = atomicRmwOpAdd\n\t\tnegateArg = true\n\tcase ssa.AtomicRmwOpAnd:\n\t\top = atomicRmwOpClr\n\t\tflipArg = true\n\tcase ssa.AtomicRmwOpOr:\n\t\top = atomicRmwOpSet\n\tcase ssa.AtomicRmwOpXor:\n\t\top = atomicRmwOpEor\n\tcase ssa.AtomicRmwOpXchg:\n\t\top = atomicRmwOpSwp\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"unknown ssa atomic rmw op: %s\", ssaOp))\n\t}\n\n\taddr, val := si.Arg2()\n\taddrDef, valDef := m.compiler.ValueDefinition(addr), m.compiler.ValueDefinition(val)\n\trn := m.getOperand_NR(addrDef, extModeNone)\n\trt := m.compiler.VRegOf(si.Return())\n\trs := m.getOperand_NR(valDef, extModeNone)\n\n\t_64 := si.Return().Type().Bits() == 64\n\tvar tmp regalloc.VReg\n\tif _64 {\n\t\ttmp = m.compiler.AllocateVReg(ssa.TypeI64)\n\t} else {\n\t\ttmp = m.compiler.AllocateVReg(ssa.TypeI32)\n\t}\n\tm.lowerAtomicRmwImpl(op, rn.nr(), rs.nr(), rt, tmp, size, negateArg, flipArg, _64)\n}\n\nfunc (m *machine) lowerAtomicRmwImpl(op atomicRmwOp, rn, rs, rt, tmp regalloc.VReg, size uint64, negateArg, flipArg, dst64bit bool) {\n\tswitch {\n\tcase negateArg:\n\t\tneg := m.allocateInstr()\n\t\tneg.asALU(aluOpSub, tmp, operandNR(xzrVReg), operandNR(rs), dst64bit)\n\t\tm.insert(neg)\n\tcase flipArg:\n\t\tflip := m.allocateInstr()\n\t\tflip.asALU(aluOpOrn, tmp, operandNR(xzrVReg), operandNR(rs), dst64bit)\n\t\tm.insert(flip)\n\tdefault:\n\t\ttmp = rs\n\t}\n\n\trmw := m.allocateInstr()\n\trmw.asAtomicRmw(op, rn, tmp, rt, size)\n\tm.insert(rmw)\n}\n\nfunc (m *machine) lowerAtomicCas(si *ssa.Instruction) {\n\taddr, exp, repl := si.Arg3()\n\tsize := si.AtomicTargetSize()\n\n\taddrDef, expDef, replDef := m.compiler.ValueDefinition(addr), m.compiler.ValueDefinition(exp), m.compiler.ValueDefinition(repl)\n\trn := m.getOperand_NR(addrDef, extModeNone)\n\trt := m.getOperand_NR(replDef, extModeNone)\n\trs := m.getOperand_NR(expDef, extModeNone)\n\ttmp := m.compiler.AllocateVReg(si.Return().Type())\n\n\t_64 := si.Return().Type().Bits() == 64\n\t// rs is overwritten by CAS, so we need to move it to the result register before the instruction\n\t// in case when it is used somewhere else.\n\tmov := m.allocateInstr()\n\tif _64 {\n\t\tmov.asMove64(tmp, rs.nr())\n\t} else {\n\t\tmov.asMove32(tmp, rs.nr())\n\t}\n\tm.insert(mov)\n\n\tm.lowerAtomicCasImpl(rn.nr(), tmp, rt.nr(), size)\n\n\tmov2 := m.allocateInstr()\n\trd := m.compiler.VRegOf(si.Return())\n\tif _64 {\n\t\tmov2.asMove64(rd, tmp)\n\t} else {\n\t\tmov2.asMove32(rd, tmp)\n\t}\n\tm.insert(mov2)\n}\n\nfunc (m *machine) lowerAtomicCasImpl(rn, rs, rt regalloc.VReg, size uint64) {\n\tcas := m.allocateInstr()\n\tcas.asAtomicCas(rn, rs, rt, size)\n\tm.insert(cas)\n}\n\nfunc (m *machine) lowerAtomicLoad(si *ssa.Instruction) {\n\taddr := si.Arg()\n\tsize := si.AtomicTargetSize()\n\n\taddrDef := m.compiler.ValueDefinition(addr)\n\trn := m.getOperand_NR(addrDef, extModeNone)\n\trt := m.compiler.VRegOf(si.Return())\n\n\tm.lowerAtomicLoadImpl(rn.nr(), rt, size)\n}\n\nfunc (m *machine) lowerAtomicLoadImpl(rn, rt regalloc.VReg, size uint64) {\n\tld := m.allocateInstr()\n\tld.asAtomicLoad(rn, rt, size)\n\tm.insert(ld)\n}\n\nfunc (m *machine) lowerAtomicStore(si *ssa.Instruction) {\n\taddr, val := si.Arg2()\n\tsize := si.AtomicTargetSize()\n\n\taddrDef := m.compiler.ValueDefinition(addr)\n\tvalDef := m.compiler.ValueDefinition(val)\n\trn := m.getOperand_NR(addrDef, extModeNone)\n\trt := m.getOperand_NR(valDef, extModeNone)\n\n\tm.lowerAtomicStoreImpl(rn, rt, size)\n}\n\nfunc (m *machine) lowerAtomicStoreImpl(rn, rt operand, size uint64) {\n\tld := m.allocateInstr()\n\tld.asAtomicStore(rn, rt, size)\n\tm.insert(ld)\n}\n\n// copyToTmp copies the given regalloc.VReg to a temporary register. This is called before cbr to avoid the regalloc issue\n// e.g. reload happening in the middle of the exit sequence which is not the path the normal path executes\nfunc (m *machine) copyToTmp(v regalloc.VReg) regalloc.VReg {\n\ttyp := m.compiler.TypeOf(v)\n\tmov := m.allocateInstr()\n\ttmp := m.compiler.AllocateVReg(typ)\n\tif typ.IsInt() {\n\t\tmov.asMove64(tmp, v)\n\t} else {\n\t\tmov.asFpuMov128(tmp, v)\n\t}\n\tm.insert(mov)\n\treturn tmp\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/arm64/lower_instr_operands.go",
    "content": "package arm64\n\n// This file contains the logic to \"find and determine operands\" for instructions.\n// In order to finalize the form of an operand, we might end up merging/eliminating\n// the source instructions into an operand whenever possible.\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/backend\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/backend/regalloc\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/ssa\"\n)\n\ntype (\n\t// operand represents an operand of an instruction whose type is determined by the kind.\n\toperand struct {\n\t\tkind        operandKind\n\t\tdata, data2 uint64\n\t}\n\toperandKind byte\n)\n\n// Here's the list of operand kinds. We use the abbreviation of the kind name not only for these consts,\n// but also names of functions which return the operand of the kind.\nconst (\n\t// operandKindNR represents \"NormalRegister\" (NR). This is literally the register without any special operation unlike others.\n\toperandKindNR operandKind = iota\n\t// operandKindSR represents \"Shifted Register\" (SR). This is a register which is shifted by a constant.\n\t// Some of the arm64 instructions can take this kind of operand.\n\toperandKindSR\n\t// operandKindER represents \"Extended Register (ER). This is a register which is sign/zero-extended to a larger size.\n\t// Some of the arm64 instructions can take this kind of operand.\n\toperandKindER\n\t// operandKindImm12 represents \"Immediate 12\" (Imm12). This is a 12-bit immediate value which can be either shifted by 12 or not.\n\t// See asImm12 function for detail.\n\toperandKindImm12\n\t// operandKindShiftImm represents \"Shifted Immediate\" (ShiftImm) used by shift operations.\n\toperandKindShiftImm\n)\n\n// String implements fmt.Stringer for debugging.\nfunc (o operand) format(size byte) string {\n\tswitch o.kind {\n\tcase operandKindNR:\n\t\treturn formatVRegSized(o.nr(), size)\n\tcase operandKindSR:\n\t\tr, amt, sop := o.sr()\n\t\treturn fmt.Sprintf(\"%s, %s #%d\", formatVRegSized(r, size), sop, amt)\n\tcase operandKindER:\n\t\tr, eop, _ := o.er()\n\t\treturn fmt.Sprintf(\"%s %s\", formatVRegSized(r, size), eop)\n\tcase operandKindImm12:\n\t\timm12, shiftBit := o.imm12()\n\t\tif shiftBit == 1 {\n\t\t\treturn fmt.Sprintf(\"#%#x\", uint64(imm12)<<12)\n\t\t} else {\n\t\t\treturn fmt.Sprintf(\"#%#x\", imm12)\n\t\t}\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"unknown operand kind: %d\", o.kind))\n\t}\n}\n\n// operandNR encodes the given VReg as an operand of operandKindNR.\nfunc operandNR(r regalloc.VReg) operand {\n\treturn operand{kind: operandKindNR, data: uint64(r)}\n}\n\n// nr decodes the underlying VReg assuming the operand is of operandKindNR.\nfunc (o operand) nr() regalloc.VReg {\n\treturn regalloc.VReg(o.data)\n}\n\n// operandER encodes the given VReg as an operand of operandKindER.\nfunc operandER(r regalloc.VReg, eop extendOp, to byte) operand {\n\tif to < 32 {\n\t\tpanic(\"TODO?BUG?: when we need to extend to less than 32 bits?\")\n\t}\n\treturn operand{kind: operandKindER, data: uint64(r), data2: uint64(eop)<<32 | uint64(to)}\n}\n\n// er decodes the underlying VReg, extend operation, and the target size assuming the operand is of operandKindER.\nfunc (o operand) er() (r regalloc.VReg, eop extendOp, to byte) {\n\treturn regalloc.VReg(o.data), extendOp(o.data2>>32) & 0xff, byte(o.data2 & 0xff)\n}\n\n// operandSR encodes the given VReg as an operand of operandKindSR.\nfunc operandSR(r regalloc.VReg, amt byte, sop shiftOp) operand {\n\treturn operand{kind: operandKindSR, data: uint64(r), data2: uint64(amt)<<32 | uint64(sop)}\n}\n\n// sr decodes the underlying VReg, shift amount, and shift operation assuming the operand is of operandKindSR.\nfunc (o operand) sr() (r regalloc.VReg, amt byte, sop shiftOp) {\n\treturn regalloc.VReg(o.data), byte(o.data2>>32) & 0xff, shiftOp(o.data2) & 0xff\n}\n\n// operandImm12 encodes the given imm12 as an operand of operandKindImm12.\nfunc operandImm12(imm12 uint16, shiftBit byte) operand {\n\treturn operand{kind: operandKindImm12, data: uint64(imm12) | uint64(shiftBit)<<32}\n}\n\n// imm12 decodes the underlying imm12 data assuming the operand is of operandKindImm12.\nfunc (o operand) imm12() (v uint16, shiftBit byte) {\n\treturn uint16(o.data), byte(o.data >> 32)\n}\n\n// operandShiftImm encodes the given amount as an operand of operandKindShiftImm.\nfunc operandShiftImm(amount byte) operand {\n\treturn operand{kind: operandKindShiftImm, data: uint64(amount)}\n}\n\n// shiftImm decodes the underlying shift amount data assuming the operand is of operandKindShiftImm.\nfunc (o operand) shiftImm() byte {\n\treturn byte(o.data)\n}\n\n// reg returns the register of the operand if applicable.\nfunc (o operand) reg() regalloc.VReg {\n\tswitch o.kind {\n\tcase operandKindNR:\n\t\treturn o.nr()\n\tcase operandKindSR:\n\t\tr, _, _ := o.sr()\n\t\treturn r\n\tcase operandKindER:\n\t\tr, _, _ := o.er()\n\t\treturn r\n\tcase operandKindImm12:\n\t\t// Does not have a register.\n\tcase operandKindShiftImm:\n\t\t// Does not have a register.\n\tdefault:\n\t\tpanic(o.kind)\n\t}\n\treturn regalloc.VRegInvalid\n}\n\nfunc (o operand) realReg() regalloc.RealReg {\n\treturn o.nr().RealReg()\n}\n\nfunc (o operand) assignReg(v regalloc.VReg) operand {\n\tswitch o.kind {\n\tcase operandKindNR:\n\t\treturn operandNR(v)\n\tcase operandKindSR:\n\t\t_, amt, sop := o.sr()\n\t\treturn operandSR(v, amt, sop)\n\tcase operandKindER:\n\t\t_, eop, to := o.er()\n\t\treturn operandER(v, eop, to)\n\tcase operandKindImm12:\n\t\t// Does not have a register.\n\tcase operandKindShiftImm:\n\t\t// Does not have a register.\n\t}\n\tpanic(o.kind)\n}\n\n// ensureValueNR returns an operand of either operandKindER, operandKindSR, or operandKindNR from the given value (defined by `def).\n//\n// `mode` is used to extend the operand if the bit length is smaller than mode.bits().\n// If the operand can be expressed as operandKindImm12, `mode` is ignored.\nfunc (m *machine) getOperand_Imm12_ER_SR_NR(def backend.SSAValueDefinition, mode extMode) (op operand) {\n\tif !def.IsFromInstr() {\n\t\treturn operandNR(m.compiler.VRegOf(def.V))\n\t}\n\n\tinstr := def.Instr\n\tif instr.Opcode() == ssa.OpcodeIconst {\n\t\tif imm12Op, ok := asImm12Operand(instr.ConstantVal()); ok {\n\t\t\tinstr.MarkLowered()\n\t\t\treturn imm12Op\n\t\t}\n\t}\n\treturn m.getOperand_ER_SR_NR(def, mode)\n}\n\n// getOperand_MaybeNegatedImm12_ER_SR_NR is almost the same as getOperand_Imm12_ER_SR_NR, but this might negate the immediate value.\n// If the immediate value is negated, the second return value is true, otherwise always false.\nfunc (m *machine) getOperand_MaybeNegatedImm12_ER_SR_NR(def backend.SSAValueDefinition, mode extMode) (op operand, negatedImm12 bool) {\n\tif !def.IsFromInstr() {\n\t\treturn operandNR(m.compiler.VRegOf(def.V)), false\n\t}\n\n\tinstr := def.Instr\n\tif instr.Opcode() == ssa.OpcodeIconst {\n\t\tc := instr.ConstantVal()\n\t\tif imm12Op, ok := asImm12Operand(c); ok {\n\t\t\tinstr.MarkLowered()\n\t\t\treturn imm12Op, false\n\t\t}\n\n\t\tsignExtended := int64(c)\n\t\tif def.V.Type().Bits() == 32 {\n\t\t\tsignExtended = (signExtended << 32) >> 32\n\t\t}\n\t\tnegatedWithoutSign := -signExtended\n\t\tif imm12Op, ok := asImm12Operand(uint64(negatedWithoutSign)); ok {\n\t\t\tinstr.MarkLowered()\n\t\t\treturn imm12Op, true\n\t\t}\n\t}\n\treturn m.getOperand_ER_SR_NR(def, mode), false\n}\n\n// ensureValueNR returns an operand of either operandKindER, operandKindSR, or operandKindNR from the given value (defined by `def).\n//\n// `mode` is used to extend the operand if the bit length is smaller than mode.bits().\nfunc (m *machine) getOperand_ER_SR_NR(def backend.SSAValueDefinition, mode extMode) (op operand) {\n\tif !def.IsFromInstr() {\n\t\treturn operandNR(m.compiler.VRegOf(def.V))\n\t}\n\n\tif m.compiler.MatchInstr(def, ssa.OpcodeSExtend) || m.compiler.MatchInstr(def, ssa.OpcodeUExtend) {\n\t\textInstr := def.Instr\n\n\t\tsigned := extInstr.Opcode() == ssa.OpcodeSExtend\n\t\tinnerExtFromBits, innerExtToBits := extInstr.ExtendFromToBits()\n\t\tmodeBits, modeSigned := mode.bits(), mode.signed()\n\t\tif mode == extModeNone || innerExtToBits == modeBits {\n\t\t\teop := extendOpFrom(signed, innerExtFromBits)\n\t\t\textArg := m.getOperand_NR(m.compiler.ValueDefinition(extInstr.Arg()), extModeNone)\n\t\t\top = operandER(extArg.nr(), eop, innerExtToBits)\n\t\t\textInstr.MarkLowered()\n\t\t\treturn\n\t\t}\n\n\t\tif innerExtToBits > modeBits {\n\t\t\tpanic(\"BUG?TODO?: need the results of inner extension to be larger than the mode\")\n\t\t}\n\n\t\tswitch {\n\t\tcase (!signed && !modeSigned) || (signed && modeSigned):\n\t\t\t// Two sign/zero extensions are equivalent to one sign/zero extension for the larger size.\n\t\t\teop := extendOpFrom(modeSigned, innerExtFromBits)\n\t\t\top = operandER(m.compiler.VRegOf(extInstr.Arg()), eop, modeBits)\n\t\t\textInstr.MarkLowered()\n\t\tcase (signed && !modeSigned) || (!signed && modeSigned):\n\t\t\t// We need to {sign, zero}-extend the result of the {zero,sign} extension.\n\t\t\teop := extendOpFrom(modeSigned, innerExtToBits)\n\t\t\top = operandER(m.compiler.VRegOf(extInstr.Return()), eop, modeBits)\n\t\t\t// Note that we failed to merge the inner extension instruction this case.\n\t\t}\n\t\treturn\n\t}\n\treturn m.getOperand_SR_NR(def, mode)\n}\n\n// ensureValueNR returns an operand of either operandKindSR or operandKindNR from the given value (defined by `def).\n//\n// `mode` is used to extend the operand if the bit length is smaller than mode.bits().\nfunc (m *machine) getOperand_SR_NR(def backend.SSAValueDefinition, mode extMode) (op operand) {\n\tif !def.IsFromInstr() {\n\t\treturn operandNR(m.compiler.VRegOf(def.V))\n\t}\n\n\tif m.compiler.MatchInstr(def, ssa.OpcodeIshl) {\n\t\t// Check if the shift amount is constant instruction.\n\t\ttargetVal, amountVal := def.Instr.Arg2()\n\t\ttargetVReg := m.getOperand_NR(m.compiler.ValueDefinition(targetVal), extModeNone).nr()\n\t\tamountDef := m.compiler.ValueDefinition(amountVal)\n\t\tif amountDef.IsFromInstr() && amountDef.Instr.Constant() {\n\t\t\t// If that is the case, we can use the shifted register operand (SR).\n\t\t\tc := byte(amountDef.Instr.ConstantVal()) & (targetVal.Type().Bits() - 1) // Clears the unnecessary bits.\n\t\t\tdef.Instr.MarkLowered()\n\t\t\tamountDef.Instr.MarkLowered()\n\t\t\treturn operandSR(targetVReg, c, shiftOpLSL)\n\t\t}\n\t}\n\treturn m.getOperand_NR(def, mode)\n}\n\n// getOperand_ShiftImm_NR returns an operand of either operandKindShiftImm or operandKindNR from the given value (defined by `def).\nfunc (m *machine) getOperand_ShiftImm_NR(def backend.SSAValueDefinition, mode extMode, shiftBitWidth byte) (op operand) {\n\tif !def.IsFromInstr() {\n\t\treturn operandNR(m.compiler.VRegOf(def.V))\n\t}\n\n\tinstr := def.Instr\n\tif instr.Constant() {\n\t\tamount := byte(instr.ConstantVal()) & (shiftBitWidth - 1) // Clears the unnecessary bits.\n\t\treturn operandShiftImm(amount)\n\t}\n\treturn m.getOperand_NR(def, mode)\n}\n\n// ensureValueNR returns an operand of operandKindNR from the given value (defined by `def).\n//\n// `mode` is used to extend the operand if the bit length is smaller than mode.bits().\nfunc (m *machine) getOperand_NR(def backend.SSAValueDefinition, mode extMode) (op operand) {\n\tvar v regalloc.VReg\n\tif def.IsFromInstr() && def.Instr.Constant() {\n\t\t// We inline all the constant instructions so that we could reduce the register usage.\n\t\tv = m.lowerConstant(def.Instr)\n\t\tdef.Instr.MarkLowered()\n\t} else {\n\t\tv = m.compiler.VRegOf(def.V)\n\t}\n\n\tr := v\n\tswitch inBits := def.V.Type().Bits(); {\n\tcase mode == extModeNone:\n\tcase inBits == 32 && (mode == extModeZeroExtend32 || mode == extModeSignExtend32):\n\tcase inBits == 32 && mode == extModeZeroExtend64:\n\t\textended := m.compiler.AllocateVReg(ssa.TypeI64)\n\t\text := m.allocateInstr()\n\t\text.asExtend(extended, v, 32, 64, false)\n\t\tm.insert(ext)\n\t\tr = extended\n\tcase inBits == 32 && mode == extModeSignExtend64:\n\t\textended := m.compiler.AllocateVReg(ssa.TypeI64)\n\t\text := m.allocateInstr()\n\t\text.asExtend(extended, v, 32, 64, true)\n\t\tm.insert(ext)\n\t\tr = extended\n\tcase inBits == 64 && (mode == extModeZeroExtend64 || mode == extModeSignExtend64):\n\t}\n\treturn operandNR(r)\n}\n\nfunc asImm12Operand(val uint64) (op operand, ok bool) {\n\tv, shiftBit, ok := asImm12(val)\n\tif !ok {\n\t\treturn operand{}, false\n\t}\n\treturn operandImm12(v, shiftBit), true\n}\n\nfunc asImm12(val uint64) (v uint16, shiftBit byte, ok bool) {\n\tconst mask1, mask2 uint64 = 0xfff, 0xfff_000\n\tif val&^mask1 == 0 {\n\t\treturn uint16(val), 0, true\n\t} else if val&^mask2 == 0 {\n\t\treturn uint16(val >> 12), 1, true\n\t} else {\n\t\treturn 0, 0, false\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/arm64/lower_mem.go",
    "content": "package arm64\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/backend/regalloc\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/ssa\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi\"\n)\n\ntype (\n\t// addressMode represents an ARM64 addressing mode.\n\t//\n\t// https://developer.arm.com/documentation/102374/0101/Loads-and-stores---addressing\n\t// TODO: use the bit-packed layout like operand struct.\n\taddressMode struct {\n\t\tkind   addressModeKind\n\t\trn, rm regalloc.VReg\n\t\textOp  extendOp\n\t\timm    int64\n\t}\n\n\t// addressModeKind represents the kind of ARM64 addressing mode.\n\taddressModeKind byte\n)\n\nfunc resetAddressMode(a *addressMode) {\n\ta.kind = 0\n\ta.rn = 0\n\ta.rm = 0\n\ta.extOp = 0\n\ta.imm = 0\n}\n\nconst (\n\t// addressModeKindRegExtended takes a base register and an index register. The index register is sign/zero-extended,\n\t// and then scaled by bits(type)/8.\n\t//\n\t// e.g.\n\t// \t- ldrh w1, [x2, w3, SXTW #1] ;; sign-extended and scaled by 2 (== LSL #1)\n\t// \t- strh w1, [x2, w3, UXTW #1] ;; zero-extended and scaled by 2 (== LSL #1)\n\t// \t- ldr w1, [x2, w3, SXTW #2] ;; sign-extended and scaled by 4 (== LSL #2)\n\t// \t- str x1, [x2, w3, UXTW #3] ;; zero-extended and scaled by 8 (== LSL #3)\n\t//\n\t// See the following pages:\n\t// https://developer.arm.com/documentation/ddi0596/2021-12/Base-Instructions/LDRH--register---Load-Register-Halfword--register--\n\t// https://developer.arm.com/documentation/ddi0596/2021-12/Base-Instructions/LDR--register---Load-Register--register--\n\taddressModeKindRegScaledExtended addressModeKind = iota\n\n\t// addressModeKindRegScaled is the same as addressModeKindRegScaledExtended, but without extension factor.\n\taddressModeKindRegScaled\n\n\t// addressModeKindRegScaled is the same as addressModeKindRegScaledExtended, but without scale factor.\n\taddressModeKindRegExtended\n\n\t// addressModeKindRegReg takes a base register and an index register. The index register is not either scaled or extended.\n\taddressModeKindRegReg\n\n\t// addressModeKindRegSignedImm9 takes a base register and a 9-bit \"signed\" immediate offset (-256 to 255).\n\t// The immediate will be sign-extended, and be added to the base register.\n\t// This is a.k.a. \"unscaled\" since the immediate is not scaled.\n\t// https://developer.arm.com/documentation/ddi0596/2021-12/Base-Instructions/LDUR--Load-Register--unscaled--\n\taddressModeKindRegSignedImm9\n\n\t// addressModeKindRegUnsignedImm12 takes a base register and a 12-bit \"unsigned\" immediate offset.  scaled by\n\t// the size of the type. In other words, the actual offset will be imm12 * bits(type)/8.\n\t// See \"Unsigned offset\" in the following pages:\n\t// https://developer.arm.com/documentation/ddi0596/2021-12/Base-Instructions/LDRB--immediate---Load-Register-Byte--immediate--\n\t// https://developer.arm.com/documentation/ddi0596/2021-12/Base-Instructions/LDRH--immediate---Load-Register-Halfword--immediate--\n\t// https://developer.arm.com/documentation/ddi0596/2021-12/Base-Instructions/LDR--immediate---Load-Register--immediate--\n\taddressModeKindRegUnsignedImm12\n\n\t// addressModePostIndex takes a base register and a 9-bit \"signed\" immediate offset.\n\t// After the load/store, the base register will be updated by the offset.\n\t//\n\t// Note that when this is used for pair load/store, the offset will be 7-bit \"signed\" immediate offset.\n\t//\n\t// See \"Post-index\" in the following pages for examples:\n\t// https://developer.arm.com/documentation/ddi0596/2021-12/Base-Instructions/LDRB--immediate---Load-Register-Byte--immediate--\n\t// https://developer.arm.com/documentation/ddi0596/2021-12/Base-Instructions/LDRH--immediate---Load-Register-Halfword--immediate--\n\t// https://developer.arm.com/documentation/ddi0596/2021-12/Base-Instructions/LDR--immediate---Load-Register--immediate--\n\t// https://developer.arm.com/documentation/ddi0596/2021-12/Base-Instructions/LDP--Load-Pair-of-Registers-\n\taddressModeKindPostIndex\n\n\t// addressModePostIndex takes a base register and a 9-bit \"signed\" immediate offset.\n\t// Before the load/store, the base register will be updated by the offset.\n\t//\n\t// Note that when this is used for pair load/store, the offset will be 7-bit \"signed\" immediate offset.\n\t//\n\t// See \"Pre-index\" in the following pages for examples:\n\t// https://developer.arm.com/documentation/ddi0596/2021-12/Base-Instructions/LDRB--immediate---Load-Register-Byte--immediate--\n\t// https://developer.arm.com/documentation/ddi0596/2021-12/Base-Instructions/LDRH--immediate---Load-Register-Halfword--immediate--\n\t// https://developer.arm.com/documentation/ddi0596/2021-12/Base-Instructions/LDR--immediate---Load-Register--immediate--\n\t// https://developer.arm.com/documentation/ddi0596/2021-12/Base-Instructions/LDP--Load-Pair-of-Registers-\n\taddressModeKindPreIndex\n\n\t// addressModeKindArgStackSpace is used to resolve the address of the argument stack space\n\t// exiting right above the stack pointer. Since we don't know the exact stack space needed for a function\n\t// at a compilation phase, this is used as a placeholder and further lowered to a real addressing mode like above.\n\taddressModeKindArgStackSpace\n\n\t// addressModeKindResultStackSpace is used to resolve the address of the result stack space\n\t// exiting right above the stack pointer. Since we don't know the exact stack space needed for a function\n\t// at a compilation phase, this is used as a placeholder and further lowered to a real addressing mode like above.\n\taddressModeKindResultStackSpace\n)\n\nfunc (a addressMode) format(dstSizeBits byte) (ret string) {\n\tbase := formatVRegSized(a.rn, 64)\n\tif rn := a.rn; rn.RegType() != regalloc.RegTypeInt {\n\t\tpanic(\"invalid base register type: \" + a.rn.RegType().String())\n\t} else if rn.IsRealReg() && v0 <= a.rn.RealReg() && a.rn.RealReg() <= v30 {\n\t\tpanic(\"BUG: likely a bug in reg alloc or reset behavior\")\n\t}\n\n\tswitch a.kind {\n\tcase addressModeKindRegScaledExtended:\n\t\tamount := a.sizeInBitsToShiftAmount(dstSizeBits)\n\t\tret = fmt.Sprintf(\"[%s, %s, %s #%#x]\", base, formatVRegSized(a.rm, a.indexRegBits()), a.extOp, amount)\n\tcase addressModeKindRegScaled:\n\t\tamount := a.sizeInBitsToShiftAmount(dstSizeBits)\n\t\tret = fmt.Sprintf(\"[%s, %s, lsl #%#x]\", base, formatVRegSized(a.rm, a.indexRegBits()), amount)\n\tcase addressModeKindRegExtended:\n\t\tret = fmt.Sprintf(\"[%s, %s, %s]\", base, formatVRegSized(a.rm, a.indexRegBits()), a.extOp)\n\tcase addressModeKindRegReg:\n\t\tret = fmt.Sprintf(\"[%s, %s]\", base, formatVRegSized(a.rm, a.indexRegBits()))\n\tcase addressModeKindRegSignedImm9:\n\t\tif a.imm != 0 {\n\t\t\tret = fmt.Sprintf(\"[%s, #%#x]\", base, a.imm)\n\t\t} else {\n\t\t\tret = fmt.Sprintf(\"[%s]\", base)\n\t\t}\n\tcase addressModeKindRegUnsignedImm12:\n\t\tif a.imm != 0 {\n\t\t\tret = fmt.Sprintf(\"[%s, #%#x]\", base, a.imm)\n\t\t} else {\n\t\t\tret = fmt.Sprintf(\"[%s]\", base)\n\t\t}\n\tcase addressModeKindPostIndex:\n\t\tret = fmt.Sprintf(\"[%s], #%#x\", base, a.imm)\n\tcase addressModeKindPreIndex:\n\t\tret = fmt.Sprintf(\"[%s, #%#x]!\", base, a.imm)\n\tcase addressModeKindArgStackSpace:\n\t\tret = fmt.Sprintf(\"[#arg_space, #%#x]\", a.imm)\n\tcase addressModeKindResultStackSpace:\n\t\tret = fmt.Sprintf(\"[#ret_space, #%#x]\", a.imm)\n\t}\n\treturn\n}\n\nfunc addressModePreOrPostIndex(m *machine, rn regalloc.VReg, imm int64, preIndex bool) *addressMode {\n\tif !offsetFitsInAddressModeKindRegSignedImm9(imm) {\n\t\tpanic(fmt.Sprintf(\"BUG: offset %#x does not fit in addressModeKindRegSignedImm9\", imm))\n\t}\n\tmode := m.amodePool.Allocate()\n\tif preIndex {\n\t\t*mode = addressMode{kind: addressModeKindPreIndex, rn: rn, imm: imm}\n\t} else {\n\t\t*mode = addressMode{kind: addressModeKindPostIndex, rn: rn, imm: imm}\n\t}\n\treturn mode\n}\n\nfunc offsetFitsInAddressModeKindRegUnsignedImm12(dstSizeInBits byte, offset int64) bool {\n\tdivisor := int64(dstSizeInBits) / 8\n\treturn 0 < offset && offset%divisor == 0 && offset/divisor < 4096\n}\n\nfunc offsetFitsInAddressModeKindRegSignedImm9(offset int64) bool {\n\treturn -256 <= offset && offset <= 255\n}\n\nfunc (a addressMode) indexRegBits() byte {\n\tbits := a.extOp.srcBits()\n\tif bits != 32 && bits != 64 {\n\t\tpanic(\"invalid index register for address mode. it must be either 32 or 64 bits\")\n\t}\n\treturn bits\n}\n\nfunc (a addressMode) sizeInBitsToShiftAmount(sizeInBits byte) (lsl byte) {\n\tswitch sizeInBits {\n\tcase 8:\n\t\tlsl = 0\n\tcase 16:\n\t\tlsl = 1\n\tcase 32:\n\t\tlsl = 2\n\tcase 64:\n\t\tlsl = 3\n\t}\n\treturn\n}\n\nfunc extLoadSignSize(op ssa.Opcode) (size byte, signed bool) {\n\tswitch op {\n\tcase ssa.OpcodeUload8:\n\t\tsize, signed = 8, false\n\tcase ssa.OpcodeUload16:\n\t\tsize, signed = 16, false\n\tcase ssa.OpcodeUload32:\n\t\tsize, signed = 32, false\n\tcase ssa.OpcodeSload8:\n\t\tsize, signed = 8, true\n\tcase ssa.OpcodeSload16:\n\t\tsize, signed = 16, true\n\tcase ssa.OpcodeSload32:\n\t\tsize, signed = 32, true\n\tdefault:\n\t\tpanic(\"BUG\")\n\t}\n\treturn\n}\n\nfunc (m *machine) lowerExtLoad(op ssa.Opcode, ptr ssa.Value, offset uint32, ret regalloc.VReg) {\n\tsize, signed := extLoadSignSize(op)\n\tamode := m.lowerToAddressMode(ptr, offset, size)\n\tload := m.allocateInstr()\n\tif signed {\n\t\tload.asSLoad(ret, amode, size)\n\t} else {\n\t\tload.asULoad(ret, amode, size)\n\t}\n\tm.insert(load)\n}\n\nfunc (m *machine) lowerLoad(ptr ssa.Value, offset uint32, typ ssa.Type, ret ssa.Value) {\n\tamode := m.lowerToAddressMode(ptr, offset, typ.Bits())\n\n\tdst := m.compiler.VRegOf(ret)\n\tload := m.allocateInstr()\n\tswitch typ {\n\tcase ssa.TypeI32, ssa.TypeI64:\n\t\tload.asULoad(dst, amode, typ.Bits())\n\tcase ssa.TypeF32, ssa.TypeF64:\n\t\tload.asFpuLoad(dst, amode, typ.Bits())\n\tcase ssa.TypeV128:\n\t\tload.asFpuLoad(dst, amode, 128)\n\tdefault:\n\t\tpanic(\"TODO\")\n\t}\n\tm.insert(load)\n}\n\nfunc (m *machine) lowerLoadSplat(ptr ssa.Value, offset uint32, lane ssa.VecLane, ret ssa.Value) {\n\t// vecLoad1R has offset address mode (base+imm) only for post index, so we simply add the offset to the base.\n\tbase := m.getOperand_NR(m.compiler.ValueDefinition(ptr), extModeNone).nr()\n\toffsetReg := m.compiler.AllocateVReg(ssa.TypeI64)\n\tm.lowerConstantI64(offsetReg, int64(offset))\n\taddedBase := m.addReg64ToReg64(base, offsetReg)\n\n\trd := m.compiler.VRegOf(ret)\n\n\tld1r := m.allocateInstr()\n\tld1r.asVecLoad1R(rd, operandNR(addedBase), ssaLaneToArrangement(lane))\n\tm.insert(ld1r)\n}\n\nfunc (m *machine) lowerStore(si *ssa.Instruction) {\n\t// TODO: merge consecutive stores into a single pair store instruction.\n\tvalue, ptr, offset, storeSizeInBits := si.StoreData()\n\tamode := m.lowerToAddressMode(ptr, offset, storeSizeInBits)\n\n\tvalueOp := m.getOperand_NR(m.compiler.ValueDefinition(value), extModeNone)\n\tstore := m.allocateInstr()\n\tstore.asStore(valueOp, amode, storeSizeInBits)\n\tm.insert(store)\n}\n\n// lowerToAddressMode converts a pointer to an addressMode that can be used as an operand for load/store instructions.\nfunc (m *machine) lowerToAddressMode(ptr ssa.Value, offsetBase uint32, size byte) (amode *addressMode) {\n\t// TODO: currently the instruction selection logic doesn't support addressModeKindRegScaledExtended and\n\t// addressModeKindRegScaled since collectAddends doesn't take ssa.OpcodeIshl into account. This should be fixed\n\t// to support more efficient address resolution.\n\n\ta32s, a64s, offset := m.collectAddends(ptr)\n\toffset += int64(offsetBase)\n\treturn m.lowerToAddressModeFromAddends(a32s, a64s, size, offset)\n}\n\n// lowerToAddressModeFromAddends creates an addressMode from a list of addends collected by collectAddends.\n// During the construction, this might emit additional instructions.\n//\n// Extracted as a separate function for easy testing.\nfunc (m *machine) lowerToAddressModeFromAddends(a32s *wazevoapi.Queue[addend32], a64s *wazevoapi.Queue[regalloc.VReg], size byte, offset int64) (amode *addressMode) {\n\tamode = m.amodePool.Allocate()\n\tswitch a64sExist, a32sExist := !a64s.Empty(), !a32s.Empty(); {\n\tcase a64sExist && a32sExist:\n\t\tvar base regalloc.VReg\n\t\tbase = a64s.Dequeue()\n\t\tvar a32 addend32\n\t\ta32 = a32s.Dequeue()\n\t\t*amode = addressMode{kind: addressModeKindRegExtended, rn: base, rm: a32.r, extOp: a32.ext}\n\tcase a64sExist && offsetFitsInAddressModeKindRegUnsignedImm12(size, offset):\n\t\tvar base regalloc.VReg\n\t\tbase = a64s.Dequeue()\n\t\t*amode = addressMode{kind: addressModeKindRegUnsignedImm12, rn: base, imm: offset}\n\t\toffset = 0\n\tcase a64sExist && offsetFitsInAddressModeKindRegSignedImm9(offset):\n\t\tvar base regalloc.VReg\n\t\tbase = a64s.Dequeue()\n\t\t*amode = addressMode{kind: addressModeKindRegSignedImm9, rn: base, imm: offset}\n\t\toffset = 0\n\tcase a64sExist:\n\t\tvar base regalloc.VReg\n\t\tbase = a64s.Dequeue()\n\t\tif !a64s.Empty() {\n\t\t\tindex := a64s.Dequeue()\n\t\t\t*amode = addressMode{kind: addressModeKindRegReg, rn: base, rm: index, extOp: extendOpUXTX /* indicates index reg is 64-bit */}\n\t\t} else {\n\t\t\t*amode = addressMode{kind: addressModeKindRegUnsignedImm12, rn: base, imm: 0}\n\t\t}\n\tcase a32sExist:\n\t\tbase32 := a32s.Dequeue()\n\n\t\t// First we need 64-bit base.\n\t\tbase := m.compiler.AllocateVReg(ssa.TypeI64)\n\t\tbaseExt := m.allocateInstr()\n\t\tvar signed bool\n\t\tif base32.ext == extendOpSXTW {\n\t\t\tsigned = true\n\t\t}\n\t\tbaseExt.asExtend(base, base32.r, 32, 64, signed)\n\t\tm.insert(baseExt)\n\n\t\tif !a32s.Empty() {\n\t\t\tindex := a32s.Dequeue()\n\t\t\t*amode = addressMode{kind: addressModeKindRegExtended, rn: base, rm: index.r, extOp: index.ext}\n\t\t} else {\n\t\t\t*amode = addressMode{kind: addressModeKindRegUnsignedImm12, rn: base, imm: 0}\n\t\t}\n\tdefault: // Only static offsets.\n\t\ttmpReg := m.compiler.AllocateVReg(ssa.TypeI64)\n\t\tm.lowerConstantI64(tmpReg, offset)\n\t\t*amode = addressMode{kind: addressModeKindRegUnsignedImm12, rn: tmpReg, imm: 0}\n\t\toffset = 0\n\t}\n\n\tbaseReg := amode.rn\n\tif offset > 0 {\n\t\tbaseReg = m.addConstToReg64(baseReg, offset) // baseReg += offset\n\t}\n\n\tfor !a64s.Empty() {\n\t\ta64 := a64s.Dequeue()\n\t\tbaseReg = m.addReg64ToReg64(baseReg, a64) // baseReg += a64\n\t}\n\n\tfor !a32s.Empty() {\n\t\ta32 := a32s.Dequeue()\n\t\tbaseReg = m.addRegToReg64Ext(baseReg, a32.r, a32.ext) // baseReg += (a32 extended to 64-bit)\n\t}\n\tamode.rn = baseReg\n\treturn\n}\n\nvar addendsMatchOpcodes = [4]ssa.Opcode{ssa.OpcodeUExtend, ssa.OpcodeSExtend, ssa.OpcodeIadd, ssa.OpcodeIconst}\n\nfunc (m *machine) collectAddends(ptr ssa.Value) (addends32 *wazevoapi.Queue[addend32], addends64 *wazevoapi.Queue[regalloc.VReg], offset int64) {\n\tm.addendsWorkQueue.Reset()\n\tm.addends32.Reset()\n\tm.addends64.Reset()\n\tm.addendsWorkQueue.Enqueue(ptr)\n\n\tfor !m.addendsWorkQueue.Empty() {\n\t\tv := m.addendsWorkQueue.Dequeue()\n\n\t\tdef := m.compiler.ValueDefinition(v)\n\t\tswitch op := m.compiler.MatchInstrOneOf(def, addendsMatchOpcodes[:]); op {\n\t\tcase ssa.OpcodeIadd:\n\t\t\t// If the addend is an add, we recursively collect its operands.\n\t\t\tx, y := def.Instr.Arg2()\n\t\t\tm.addendsWorkQueue.Enqueue(x)\n\t\t\tm.addendsWorkQueue.Enqueue(y)\n\t\t\tdef.Instr.MarkLowered()\n\t\tcase ssa.OpcodeIconst:\n\t\t\t// If the addend is constant, we just statically merge it into the offset.\n\t\t\tic := def.Instr\n\t\t\tu64 := ic.ConstantVal()\n\t\t\tif ic.Return().Type().Bits() == 32 {\n\t\t\t\toffset += int64(int32(u64)) // sign-extend.\n\t\t\t} else {\n\t\t\t\toffset += int64(u64)\n\t\t\t}\n\t\t\tdef.Instr.MarkLowered()\n\t\tcase ssa.OpcodeUExtend, ssa.OpcodeSExtend:\n\t\t\tinput := def.Instr.Arg()\n\t\t\tif input.Type().Bits() != 32 {\n\t\t\t\tpanic(\"illegal size: \" + input.Type().String())\n\t\t\t}\n\n\t\t\tvar ext extendOp\n\t\t\tif op == ssa.OpcodeUExtend {\n\t\t\t\text = extendOpUXTW\n\t\t\t} else {\n\t\t\t\text = extendOpSXTW\n\t\t\t}\n\n\t\t\tinputDef := m.compiler.ValueDefinition(input)\n\t\t\tconstInst := inputDef.IsFromInstr() && inputDef.Instr.Constant()\n\t\t\tswitch {\n\t\t\tcase constInst && ext == extendOpUXTW:\n\t\t\t\t// Zero-extension of a 32-bit constant can be merged into the offset.\n\t\t\t\toffset += int64(uint32(inputDef.Instr.ConstantVal()))\n\t\t\tcase constInst && ext == extendOpSXTW:\n\t\t\t\t// Sign-extension of a 32-bit constant can be merged into the offset.\n\t\t\t\toffset += int64(int32(inputDef.Instr.ConstantVal())) // sign-extend!\n\t\t\tdefault:\n\t\t\t\tm.addends32.Enqueue(addend32{r: m.getOperand_NR(inputDef, extModeNone).nr(), ext: ext})\n\t\t\t}\n\t\t\tdef.Instr.MarkLowered()\n\t\t\tcontinue\n\t\tdefault:\n\t\t\t// If the addend is not one of them, we simply use it as-is (without merging!), optionally zero-extending it.\n\t\t\tm.addends64.Enqueue(m.getOperand_NR(def, extModeZeroExtend64 /* optional zero ext */).nr())\n\t\t}\n\t}\n\treturn &m.addends32, &m.addends64, offset\n}\n\nfunc (m *machine) addConstToReg64(r regalloc.VReg, c int64) (rd regalloc.VReg) {\n\trd = m.compiler.AllocateVReg(ssa.TypeI64)\n\talu := m.allocateInstr()\n\tif imm12Op, ok := asImm12Operand(uint64(c)); ok {\n\t\talu.asALU(aluOpAdd, rd, operandNR(r), imm12Op, true)\n\t} else if imm12Op, ok = asImm12Operand(uint64(-c)); ok {\n\t\talu.asALU(aluOpSub, rd, operandNR(r), imm12Op, true)\n\t} else {\n\t\ttmp := m.compiler.AllocateVReg(ssa.TypeI64)\n\t\tm.load64bitConst(c, tmp)\n\t\talu.asALU(aluOpAdd, rd, operandNR(r), operandNR(tmp), true)\n\t}\n\tm.insert(alu)\n\treturn\n}\n\nfunc (m *machine) addReg64ToReg64(rn, rm regalloc.VReg) (rd regalloc.VReg) {\n\trd = m.compiler.AllocateVReg(ssa.TypeI64)\n\talu := m.allocateInstr()\n\talu.asALU(aluOpAdd, rd, operandNR(rn), operandNR(rm), true)\n\tm.insert(alu)\n\treturn\n}\n\nfunc (m *machine) addRegToReg64Ext(rn, rm regalloc.VReg, ext extendOp) (rd regalloc.VReg) {\n\trd = m.compiler.AllocateVReg(ssa.TypeI64)\n\talu := m.allocateInstr()\n\talu.asALU(aluOpAdd, rd, operandNR(rn), operandER(rm, ext, 64), true)\n\tm.insert(alu)\n\treturn\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/arm64/machine.go",
    "content": "package arm64\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"math\"\n\t\"strings\"\n\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/backend\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/backend/regalloc\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/ssa\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi\"\n)\n\ntype (\n\t// machine implements backend.Machine.\n\tmachine struct {\n\t\tcompiler   backend.Compiler\n\t\tcurrentABI *backend.FunctionABI\n\t\tinstrPool  wazevoapi.Pool[instruction]\n\t\t// labelPositionPool is the pool of labelPosition. The id is the label where\n\t\t// if the label is less than the maxSSABlockID, it's the ssa.BasicBlockID.\n\t\tlabelPositionPool wazevoapi.IDedPool[labelPosition]\n\n\t\t// nextLabel is the next label to be allocated. The first free label comes after maxSSABlockID\n\t\t// so that we can have an identical label for the SSA block ID, which is useful for debugging.\n\t\tnextLabel label\n\t\t// rootInstr is the first instruction of the function.\n\t\trootInstr *instruction\n\t\t// currentLabelPos is the currently-compiled ssa.BasicBlock's labelPosition.\n\t\tcurrentLabelPos *labelPosition\n\t\t// orderedSSABlockLabelPos is the ordered list of labelPosition in the generated code for each ssa.BasicBlock.\n\t\torderedSSABlockLabelPos []*labelPosition\n\t\t// returnLabelPos is the labelPosition for the return block.\n\t\treturnLabelPos labelPosition\n\t\t// perBlockHead and perBlockEnd are the head and tail of the instruction list per currently-compiled ssa.BasicBlock.\n\t\tperBlockHead, perBlockEnd *instruction\n\t\t// pendingInstructions are the instructions which are not yet emitted into the instruction list.\n\t\tpendingInstructions []*instruction\n\t\t// maxSSABlockID is the maximum ssa.BasicBlockID in the current function.\n\t\tmaxSSABlockID label\n\n\t\tregAlloc   regalloc.Allocator[*instruction, *labelPosition, *regAllocFn]\n\t\tregAllocFn regAllocFn\n\n\t\tamodePool wazevoapi.Pool[addressMode]\n\n\t\t// addendsWorkQueue is used during address lowering, defined here for reuse.\n\t\taddendsWorkQueue wazevoapi.Queue[ssa.Value]\n\t\taddends32        wazevoapi.Queue[addend32]\n\t\t// addends64 is used during address lowering, defined here for reuse.\n\t\taddends64              wazevoapi.Queue[regalloc.VReg]\n\t\tunresolvedAddressModes []*instruction\n\n\t\t// condBrRelocs holds the conditional branches which need offset relocation.\n\t\tcondBrRelocs []condBrReloc\n\n\t\t// jmpTableTargets holds the labels of the jump table targets.\n\t\tjmpTableTargets [][]uint32\n\t\t// jmpTableTargetNext is the index to the jmpTableTargets slice to be used for the next jump table.\n\t\tjmpTableTargetsNext int\n\n\t\t// spillSlotSize is the size of the stack slot in bytes used for spilling registers.\n\t\t// During the execution of the function, the stack looks like:\n\t\t//\n\t\t//\n\t\t//            (high address)\n\t\t//          +-----------------+\n\t\t//          |     .......     |\n\t\t//          |      ret Y      |\n\t\t//          |     .......     |\n\t\t//          |      ret 0      |\n\t\t//          |      arg X      |\n\t\t//          |     .......     |\n\t\t//          |      arg 1      |\n\t\t//          |      arg 0      |\n\t\t//          |      xxxxx      |\n\t\t//          |   ReturnAddress |\n\t\t//          +-----------------+   <<-|\n\t\t//          |   ...........   |      |\n\t\t//          |   spill slot M  |      | <--- spillSlotSize\n\t\t//          |   ............  |      |\n\t\t//          |   spill slot 2  |      |\n\t\t//          |   spill slot 1  |   <<-+\n\t\t//          |   clobbered N   |\n\t\t//          |   ...........   |\n\t\t//          |   clobbered 1   |\n\t\t//          |   clobbered 0   |\n\t\t//   SP---> +-----------------+\n\t\t//             (low address)\n\t\t//\n\t\t// and it represents the size of the space between FP and the first spilled slot. This must be a multiple of 16.\n\t\t// Also note that this is only known after register allocation.\n\t\tspillSlotSize int64\n\t\tspillSlots    map[regalloc.VRegID]int64 // regalloc.VRegID to offset.\n\t\t// clobberedRegs holds real-register backed VRegs saved at the function prologue, and restored at the epilogue.\n\t\tclobberedRegs []regalloc.VReg\n\n\t\tmaxRequiredStackSizeForCalls int64\n\t\tstackBoundsCheckDisabled     bool\n\n\t\tregAllocStarted bool\n\t}\n\n\taddend32 struct {\n\t\tr   regalloc.VReg\n\t\text extendOp\n\t}\n\n\tcondBrReloc struct {\n\t\tcbr *instruction\n\t\t// currentLabelPos is the labelPosition within which condBr is defined.\n\t\tcurrentLabelPos *labelPosition\n\t\t// Next block's labelPosition.\n\t\tnextLabel label\n\t\toffset    int64\n\t}\n)\n\ntype (\n\t// label represents a position in the generated code which is either\n\t// a real instruction or the constant InstructionPool (e.g. jump tables).\n\t//\n\t// This is exactly the same as the traditional \"label\" in assembly code.\n\tlabel uint32\n\n\t// labelPosition represents the regions of the generated code which the label represents.\n\t// This implements regalloc.Block.\n\tlabelPosition struct {\n\t\t// sb is not nil if this corresponds to a ssa.BasicBlock.\n\t\tsb ssa.BasicBlock\n\t\t// cur is used to walk through the instructions in the block during the register allocation.\n\t\tcur,\n\t\t// begin and end are the first and last instructions of the block.\n\t\tbegin, end *instruction\n\t\t// binaryOffset is the offset in the binary where the label is located.\n\t\tbinaryOffset int64\n\t}\n)\n\nconst (\n\tlabelReturn  label = math.MaxUint32\n\tlabelInvalid       = labelReturn - 1\n)\n\n// String implements backend.Machine.\nfunc (l label) String() string {\n\treturn fmt.Sprintf(\"L%d\", l)\n}\n\nfunc resetLabelPosition(l *labelPosition) {\n\t*l = labelPosition{}\n}\n\n// NewBackend returns a new backend for arm64.\nfunc NewBackend() backend.Machine {\n\tm := &machine{\n\t\tspillSlots:        make(map[regalloc.VRegID]int64),\n\t\tregAlloc:          regalloc.NewAllocator[*instruction, *labelPosition, *regAllocFn](regInfo),\n\t\tamodePool:         wazevoapi.NewPool[addressMode](resetAddressMode),\n\t\tinstrPool:         wazevoapi.NewPool[instruction](resetInstruction),\n\t\tlabelPositionPool: wazevoapi.NewIDedPool[labelPosition](resetLabelPosition),\n\t}\n\tm.regAllocFn.m = m\n\treturn m\n}\n\nfunc ssaBlockLabel(sb ssa.BasicBlock) label {\n\tif sb.ReturnBlock() {\n\t\treturn labelReturn\n\t}\n\treturn label(sb.ID())\n}\n\n// getOrAllocateSSABlockLabelPosition returns the labelPosition for the given basic block.\nfunc (m *machine) getOrAllocateSSABlockLabelPosition(sb ssa.BasicBlock) *labelPosition {\n\tif sb.ReturnBlock() {\n\t\tm.returnLabelPos.sb = sb\n\t\treturn &m.returnLabelPos\n\t}\n\n\tl := ssaBlockLabel(sb)\n\tpos := m.labelPositionPool.GetOrAllocate(int(l))\n\tpos.sb = sb\n\treturn pos\n}\n\n// LinkAdjacentBlocks implements backend.Machine.\nfunc (m *machine) LinkAdjacentBlocks(prev, next ssa.BasicBlock) {\n\tprevPos, nextPos := m.getOrAllocateSSABlockLabelPosition(prev), m.getOrAllocateSSABlockLabelPosition(next)\n\tprevPos.end.next = nextPos.begin\n}\n\n// StartBlock implements backend.Machine.\nfunc (m *machine) StartBlock(blk ssa.BasicBlock) {\n\tm.currentLabelPos = m.getOrAllocateSSABlockLabelPosition(blk)\n\tlabelPos := m.currentLabelPos\n\tend := m.allocateNop()\n\tm.perBlockHead, m.perBlockEnd = end, end\n\tlabelPos.begin, labelPos.end = end, end\n\tm.orderedSSABlockLabelPos = append(m.orderedSSABlockLabelPos, labelPos)\n}\n\n// EndBlock implements ExecutableContext.\nfunc (m *machine) EndBlock() {\n\t// Insert nop0 as the head of the block for convenience to simplify the logic of inserting instructions.\n\tm.insertAtPerBlockHead(m.allocateNop())\n\n\tm.currentLabelPos.begin = m.perBlockHead\n\n\tif m.currentLabelPos.sb.EntryBlock() {\n\t\tm.rootInstr = m.perBlockHead\n\t}\n}\n\nfunc (m *machine) insertAtPerBlockHead(i *instruction) {\n\tif m.perBlockHead == nil {\n\t\tm.perBlockHead = i\n\t\tm.perBlockEnd = i\n\t\treturn\n\t}\n\n\ti.next = m.perBlockHead\n\tm.perBlockHead.prev = i\n\tm.perBlockHead = i\n}\n\n// FlushPendingInstructions implements backend.Machine.\nfunc (m *machine) FlushPendingInstructions() {\n\tl := len(m.pendingInstructions)\n\tif l == 0 {\n\t\treturn\n\t}\n\tfor i := l - 1; i >= 0; i-- { // reverse because we lower instructions in reverse order.\n\t\tm.insertAtPerBlockHead(m.pendingInstructions[i])\n\t}\n\tm.pendingInstructions = m.pendingInstructions[:0]\n}\n\n// RegAlloc implements backend.Machine Function.\nfunc (m *machine) RegAlloc() {\n\tm.regAllocStarted = true\n\tm.regAlloc.DoAllocation(&m.regAllocFn)\n\t// Now that we know the final spill slot size, we must align spillSlotSize to 16 bytes.\n\tm.spillSlotSize = (m.spillSlotSize + 15) &^ 15\n}\n\n// Reset implements backend.Machine.\nfunc (m *machine) Reset() {\n\tm.clobberedRegs = m.clobberedRegs[:0]\n\tfor key := range m.spillSlots {\n\t\tm.clobberedRegs = append(m.clobberedRegs, regalloc.VReg(key))\n\t}\n\tfor _, key := range m.clobberedRegs {\n\t\tdelete(m.spillSlots, regalloc.VRegID(key))\n\t}\n\tm.clobberedRegs = m.clobberedRegs[:0]\n\tm.regAllocStarted = false\n\tm.regAlloc.Reset()\n\tm.spillSlotSize = 0\n\tm.unresolvedAddressModes = m.unresolvedAddressModes[:0]\n\tm.maxRequiredStackSizeForCalls = 0\n\tm.jmpTableTargetsNext = 0\n\tm.amodePool.Reset()\n\tm.instrPool.Reset()\n\tm.labelPositionPool.Reset()\n\tm.pendingInstructions = m.pendingInstructions[:0]\n\tm.perBlockHead, m.perBlockEnd, m.rootInstr = nil, nil, nil\n\tm.orderedSSABlockLabelPos = m.orderedSSABlockLabelPos[:0]\n}\n\n// StartLoweringFunction implements backend.Machine StartLoweringFunction.\nfunc (m *machine) StartLoweringFunction(maxBlockID ssa.BasicBlockID) {\n\tm.maxSSABlockID = label(maxBlockID)\n\tm.nextLabel = label(maxBlockID) + 1\n}\n\n// SetCurrentABI implements backend.Machine SetCurrentABI.\nfunc (m *machine) SetCurrentABI(abi *backend.FunctionABI) {\n\tm.currentABI = abi\n}\n\n// DisableStackCheck implements backend.Machine DisableStackCheck.\nfunc (m *machine) DisableStackCheck() {\n\tm.stackBoundsCheckDisabled = true\n}\n\n// SetCompiler implements backend.Machine.\nfunc (m *machine) SetCompiler(ctx backend.Compiler) {\n\tm.compiler = ctx\n\tm.regAllocFn.ssaB = ctx.SSABuilder()\n}\n\nfunc (m *machine) insert(i *instruction) {\n\tm.pendingInstructions = append(m.pendingInstructions, i)\n}\n\nfunc (m *machine) insertBrTargetLabel() label {\n\tnop, l := m.allocateBrTarget()\n\tm.insert(nop)\n\treturn l\n}\n\nfunc (m *machine) allocateBrTarget() (nop *instruction, l label) {\n\tl = m.nextLabel\n\tm.nextLabel++\n\tnop = m.allocateInstr()\n\tnop.asNop0WithLabel(l)\n\tpos := m.labelPositionPool.GetOrAllocate(int(l))\n\tpos.begin, pos.end = nop, nop\n\treturn\n}\n\n// allocateInstr allocates an instruction.\nfunc (m *machine) allocateInstr() *instruction {\n\tinstr := m.instrPool.Allocate()\n\tif !m.regAllocStarted {\n\t\tinstr.addedBeforeRegAlloc = true\n\t}\n\treturn instr\n}\n\nfunc resetInstruction(i *instruction) {\n\t*i = instruction{}\n}\n\nfunc (m *machine) allocateNop() *instruction {\n\tinstr := m.allocateInstr()\n\tinstr.asNop0()\n\treturn instr\n}\n\nfunc (m *machine) resolveAddressingMode(arg0offset, ret0offset int64, i *instruction) {\n\tamode := i.getAmode()\n\tswitch amode.kind {\n\tcase addressModeKindResultStackSpace:\n\t\tamode.imm += ret0offset\n\tcase addressModeKindArgStackSpace:\n\t\tamode.imm += arg0offset\n\tdefault:\n\t\tpanic(\"BUG\")\n\t}\n\n\tvar sizeInBits byte\n\tswitch i.kind {\n\tcase store8, uLoad8:\n\t\tsizeInBits = 8\n\tcase store16, uLoad16:\n\t\tsizeInBits = 16\n\tcase store32, fpuStore32, uLoad32, fpuLoad32:\n\t\tsizeInBits = 32\n\tcase store64, fpuStore64, uLoad64, fpuLoad64:\n\t\tsizeInBits = 64\n\tcase fpuStore128, fpuLoad128:\n\t\tsizeInBits = 128\n\tdefault:\n\t\tpanic(\"BUG\")\n\t}\n\n\tif offsetFitsInAddressModeKindRegUnsignedImm12(sizeInBits, amode.imm) {\n\t\tamode.kind = addressModeKindRegUnsignedImm12\n\t} else {\n\t\t// This case, we load the offset into the temporary register,\n\t\t// and then use it as the index register.\n\t\tnewPrev := m.lowerConstantI64AndInsert(i.prev, tmpRegVReg, amode.imm)\n\t\tlinkInstr(newPrev, i)\n\t\t*amode = addressMode{kind: addressModeKindRegReg, rn: amode.rn, rm: tmpRegVReg, extOp: extendOpUXTX /* indicates rm reg is 64-bit */}\n\t}\n}\n\n// resolveRelativeAddresses resolves the relative addresses before encoding.\nfunc (m *machine) resolveRelativeAddresses(ctx context.Context) {\n\tfor {\n\t\tif len(m.unresolvedAddressModes) > 0 {\n\t\t\targ0offset, ret0offset := m.arg0OffsetFromSP(), m.ret0OffsetFromSP()\n\t\t\tfor _, i := range m.unresolvedAddressModes {\n\t\t\t\tm.resolveAddressingMode(arg0offset, ret0offset, i)\n\t\t\t}\n\t\t}\n\n\t\t// Reuse the slice to gather the unresolved conditional branches.\n\t\tm.condBrRelocs = m.condBrRelocs[:0]\n\n\t\tvar fn string\n\t\tvar fnIndex int\n\t\tvar labelPosToLabel map[*labelPosition]label\n\t\tif wazevoapi.PerfMapEnabled {\n\t\t\tlabelPosToLabel = make(map[*labelPosition]label)\n\t\t\tfor i := 0; i <= m.labelPositionPool.MaxIDEncountered(); i++ {\n\t\t\t\tlabelPosToLabel[m.labelPositionPool.Get(i)] = label(i)\n\t\t\t}\n\n\t\t\tfn = wazevoapi.GetCurrentFunctionName(ctx)\n\t\t\tfnIndex = wazevoapi.GetCurrentFunctionIndex(ctx)\n\t\t}\n\n\t\t// Next, in order to determine the offsets of relative jumps, we have to calculate the size of each label.\n\t\tvar offset int64\n\t\tfor i, pos := range m.orderedSSABlockLabelPos {\n\t\t\tpos.binaryOffset = offset\n\t\t\tvar size int64\n\t\t\tfor cur := pos.begin; ; cur = cur.next {\n\t\t\t\tswitch cur.kind {\n\t\t\t\tcase nop0:\n\t\t\t\t\tl := cur.nop0Label()\n\t\t\t\t\tif pos := m.labelPositionPool.Get(int(l)); pos != nil {\n\t\t\t\t\t\tpos.binaryOffset = offset + size\n\t\t\t\t\t}\n\t\t\t\tcase condBr:\n\t\t\t\t\tif !cur.condBrOffsetResolved() {\n\t\t\t\t\t\tvar nextLabel label\n\t\t\t\t\t\tif i < len(m.orderedSSABlockLabelPos)-1 {\n\t\t\t\t\t\t\t// Note: this is only used when the block ends with fallthrough,\n\t\t\t\t\t\t\t// therefore can be safely assumed that the next block exists when it's needed.\n\t\t\t\t\t\t\tnextLabel = ssaBlockLabel(m.orderedSSABlockLabelPos[i+1].sb)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tm.condBrRelocs = append(m.condBrRelocs, condBrReloc{\n\t\t\t\t\t\t\tcbr: cur, currentLabelPos: pos, offset: offset + size,\n\t\t\t\t\t\t\tnextLabel: nextLabel,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tsize += cur.size()\n\t\t\t\tif cur == pos.end {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif wazevoapi.PerfMapEnabled {\n\t\t\t\tif size > 0 {\n\t\t\t\t\twazevoapi.PerfMap.AddModuleEntry(fnIndex, offset, uint64(size), fmt.Sprintf(\"%s:::::%s\", fn, labelPosToLabel[pos]))\n\t\t\t\t}\n\t\t\t}\n\t\t\toffset += size\n\t\t}\n\n\t\t// Before resolving any offsets, we need to check if all the conditional branches can be resolved.\n\t\tvar needRerun bool\n\t\tfor i := range m.condBrRelocs {\n\t\t\treloc := &m.condBrRelocs[i]\n\t\t\tcbr := reloc.cbr\n\t\t\toffset := reloc.offset\n\n\t\t\ttarget := cbr.condBrLabel()\n\t\t\toffsetOfTarget := m.labelPositionPool.Get(int(target)).binaryOffset\n\t\t\tdiff := offsetOfTarget - offset\n\t\t\tif divided := diff >> 2; divided < minSignedInt19 || divided > maxSignedInt19 {\n\t\t\t\t// This case the conditional branch is too huge. We place the trampoline instructions at the end of the current block,\n\t\t\t\t// and jump to it.\n\t\t\t\tm.insertConditionalJumpTrampoline(cbr, reloc.currentLabelPos, reloc.nextLabel)\n\t\t\t\t// Then, we need to recall this function to fix up the label offsets\n\t\t\t\t// as they have changed after the trampoline is inserted.\n\t\t\t\tneedRerun = true\n\t\t\t}\n\t\t}\n\t\tif needRerun {\n\t\t\tif wazevoapi.PerfMapEnabled {\n\t\t\t\twazevoapi.PerfMap.Clear()\n\t\t\t}\n\t\t} else {\n\t\t\tbreak\n\t\t}\n\t}\n\n\tvar currentOffset int64\n\tfor cur := m.rootInstr; cur != nil; cur = cur.next {\n\t\tswitch cur.kind {\n\t\tcase br:\n\t\t\ttarget := cur.brLabel()\n\t\t\toffsetOfTarget := m.labelPositionPool.Get(int(target)).binaryOffset\n\t\t\tdiff := offsetOfTarget - currentOffset\n\t\t\tdivided := diff >> 2\n\t\t\tif divided < minSignedInt26 || divided > maxSignedInt26 {\n\t\t\t\t// This means the currently compiled single function is extremely large.\n\t\t\t\tpanic(\"too large function that requires branch relocation of large unconditional branch larger than 26-bit range\")\n\t\t\t}\n\t\t\tcur.brOffsetResolve(diff)\n\t\tcase condBr:\n\t\t\tif !cur.condBrOffsetResolved() {\n\t\t\t\ttarget := cur.condBrLabel()\n\t\t\t\toffsetOfTarget := m.labelPositionPool.Get(int(target)).binaryOffset\n\t\t\t\tdiff := offsetOfTarget - currentOffset\n\t\t\t\tif divided := diff >> 2; divided < minSignedInt19 || divided > maxSignedInt19 {\n\t\t\t\t\tpanic(\"BUG: branch relocation for large conditional branch larger than 19-bit range must be handled properly\")\n\t\t\t\t}\n\t\t\t\tcur.condBrOffsetResolve(diff)\n\t\t\t}\n\t\tcase brTableSequence:\n\t\t\ttableIndex := cur.u1\n\t\t\ttargets := m.jmpTableTargets[tableIndex]\n\t\t\tfor i := range targets {\n\t\t\t\tl := label(targets[i])\n\t\t\t\toffsetOfTarget := m.labelPositionPool.Get(int(l)).binaryOffset\n\t\t\t\tdiff := offsetOfTarget - (currentOffset + brTableSequenceOffsetTableBegin)\n\t\t\t\ttargets[i] = uint32(diff)\n\t\t\t}\n\t\t\tcur.brTableSequenceOffsetsResolved()\n\t\tcase emitSourceOffsetInfo:\n\t\t\tm.compiler.AddSourceOffsetInfo(currentOffset, cur.sourceOffsetInfo())\n\t\t}\n\t\tcurrentOffset += cur.size()\n\t}\n}\n\nconst (\n\tmaxSignedInt26 = 1<<25 - 1\n\tminSignedInt26 = -(1 << 25)\n\n\tmaxSignedInt19 = 1<<18 - 1\n\tminSignedInt19 = -(1 << 18)\n)\n\nfunc (m *machine) insertConditionalJumpTrampoline(cbr *instruction, currentBlk *labelPosition, nextLabel label) {\n\tcur := currentBlk.end\n\toriginalTarget := cbr.condBrLabel()\n\tendNext := cur.next\n\n\tif cur.kind != br {\n\t\t// If the current block ends with a conditional branch, we can just insert the trampoline after it.\n\t\t// Otherwise, we need to insert \"skip\" instruction to skip the trampoline instructions.\n\t\tskip := m.allocateInstr()\n\t\tskip.asBr(nextLabel)\n\t\tcur = linkInstr(cur, skip)\n\t}\n\n\tcbrNewTargetInstr, cbrNewTargetLabel := m.allocateBrTarget()\n\tcbr.setCondBrTargets(cbrNewTargetLabel)\n\tcur = linkInstr(cur, cbrNewTargetInstr)\n\n\t// Then insert the unconditional branch to the original, which should be possible to get encoded\n\t// as 26-bit offset should be enough for any practical application.\n\tbr := m.allocateInstr()\n\tbr.asBr(originalTarget)\n\tcur = linkInstr(cur, br)\n\n\t// Update the end of the current block.\n\tcurrentBlk.end = cur\n\n\tlinkInstr(cur, endNext)\n}\n\n// Format implements backend.Machine.\nfunc (m *machine) Format() string {\n\tbegins := map[*instruction]label{}\n\tfor l := label(0); l < m.nextLabel; l++ {\n\t\tpos := m.labelPositionPool.Get(int(l))\n\t\tif pos != nil {\n\t\t\tbegins[pos.begin] = l\n\t\t}\n\t}\n\n\tvar lines []string\n\tfor cur := m.rootInstr; cur != nil; cur = cur.next {\n\t\tif l, ok := begins[cur]; ok {\n\t\t\tvar labelStr string\n\t\t\tif l <= m.maxSSABlockID {\n\t\t\t\tlabelStr = fmt.Sprintf(\"%s (SSA Block: blk%d):\", l, int(l))\n\t\t\t} else {\n\t\t\t\tlabelStr = fmt.Sprintf(\"%s:\", l)\n\t\t\t}\n\t\t\tlines = append(lines, labelStr)\n\t\t}\n\t\tif cur.kind == nop0 {\n\t\t\tcontinue\n\t\t}\n\t\tlines = append(lines, \"\\t\"+cur.String())\n\t}\n\treturn \"\\n\" + strings.Join(lines, \"\\n\") + \"\\n\"\n}\n\n// InsertReturn implements backend.Machine.\nfunc (m *machine) InsertReturn() {\n\ti := m.allocateInstr()\n\ti.asRet()\n\tm.insert(i)\n}\n\nfunc (m *machine) getVRegSpillSlotOffsetFromSP(id regalloc.VRegID, size byte) int64 {\n\toffset, ok := m.spillSlots[id]\n\tif !ok {\n\t\toffset = m.spillSlotSize\n\t\t// TODO: this should be aligned depending on the `size` to use Imm12 offset load/store as much as possible.\n\t\tm.spillSlots[id] = offset\n\t\tm.spillSlotSize += int64(size)\n\t}\n\treturn offset + 16 // spill slot starts above the clobbered registers and the frame size.\n}\n\nfunc (m *machine) clobberedRegSlotSize() int64 {\n\treturn int64(len(m.clobberedRegs) * 16)\n}\n\nfunc (m *machine) arg0OffsetFromSP() int64 {\n\treturn m.frameSize() +\n\t\t16 + // 16-byte aligned return address\n\t\t16 // frame size saved below the clobbered registers.\n}\n\nfunc (m *machine) ret0OffsetFromSP() int64 {\n\treturn m.arg0OffsetFromSP() + m.currentABI.ArgStackSize\n}\n\nfunc (m *machine) requiredStackSize() int64 {\n\treturn m.maxRequiredStackSizeForCalls +\n\t\tm.frameSize() +\n\t\t16 + // 16-byte aligned return address.\n\t\t16 // frame size saved below the clobbered registers.\n}\n\nfunc (m *machine) frameSize() int64 {\n\ts := m.clobberedRegSlotSize() + m.spillSlotSize\n\tif s&0xf != 0 {\n\t\tpanic(fmt.Errorf(\"BUG: frame size %d is not 16-byte aligned\", s))\n\t}\n\treturn s\n}\n\nfunc (m *machine) addJmpTableTarget(targets ssa.Values) (index int) {\n\tif m.jmpTableTargetsNext == len(m.jmpTableTargets) {\n\t\tm.jmpTableTargets = append(m.jmpTableTargets, make([]uint32, 0, len(targets.View())))\n\t}\n\n\tindex = m.jmpTableTargetsNext\n\tm.jmpTableTargetsNext++\n\tm.jmpTableTargets[index] = m.jmpTableTargets[index][:0]\n\tfor _, targetBlockID := range targets.View() {\n\t\ttarget := m.compiler.SSABuilder().BasicBlock(ssa.BasicBlockID(targetBlockID))\n\t\tm.jmpTableTargets[index] = append(m.jmpTableTargets[index], uint32(target.ID()))\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/arm64/machine_pro_epi_logue.go",
    "content": "package arm64\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/backend/regalloc\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi\"\n)\n\n// PostRegAlloc implements backend.Machine.\nfunc (m *machine) PostRegAlloc() {\n\tm.setupPrologue()\n\tm.postRegAlloc()\n}\n\n// setupPrologue initializes the prologue of the function.\nfunc (m *machine) setupPrologue() {\n\tcur := m.rootInstr\n\tprevInitInst := cur.next\n\n\t//\n\t//                   (high address)                    (high address)\n\t//         SP----> +-----------------+               +------------------+ <----+\n\t//                 |     .......     |               |     .......      |      |\n\t//                 |      ret Y      |               |      ret Y       |      |\n\t//                 |     .......     |               |     .......      |      |\n\t//                 |      ret 0      |               |      ret 0       |      |\n\t//                 |      arg X      |               |      arg X       |      |  size_of_arg_ret.\n\t//                 |     .......     |     ====>     |     .......      |      |\n\t//                 |      arg 1      |               |      arg 1       |      |\n\t//                 |      arg 0      |               |      arg 0       | <----+\n\t//                 |-----------------|               |  size_of_arg_ret |\n\t//                                                   |  return address  |\n\t//                                                   +------------------+ <---- SP\n\t//                    (low address)                     (low address)\n\n\t// Saves the return address (lr) and the size_of_arg_ret below the SP.\n\t// size_of_arg_ret is used for stack unwinding.\n\tcur = m.createReturnAddrAndSizeOfArgRetSlot(cur)\n\n\tif !m.stackBoundsCheckDisabled {\n\t\tcur = m.insertStackBoundsCheck(m.requiredStackSize(), cur)\n\t}\n\n\t// Decrement SP if spillSlotSize > 0.\n\tif m.spillSlotSize == 0 && len(m.spillSlots) != 0 {\n\t\tpanic(fmt.Sprintf(\"BUG: spillSlotSize=%d, spillSlots=%v\\n\", m.spillSlotSize, m.spillSlots))\n\t}\n\n\tif regs := m.clobberedRegs; len(regs) > 0 {\n\t\t//\n\t\t//            (high address)                  (high address)\n\t\t//          +-----------------+             +-----------------+\n\t\t//          |     .......     |             |     .......     |\n\t\t//          |      ret Y      |             |      ret Y      |\n\t\t//          |     .......     |             |     .......     |\n\t\t//          |      ret 0      |             |      ret 0      |\n\t\t//          |      arg X      |             |      arg X      |\n\t\t//          |     .......     |             |     .......     |\n\t\t//          |      arg 1      |             |      arg 1      |\n\t\t//          |      arg 0      |             |      arg 0      |\n\t\t//          | size_of_arg_ret |             | size_of_arg_ret |\n\t\t//          |   ReturnAddress |             |  ReturnAddress  |\n\t\t//  SP----> +-----------------+    ====>    +-----------------+\n\t\t//             (low address)                |   clobbered M   |\n\t\t//                                          |   ............  |\n\t\t//                                          |   clobbered 0   |\n\t\t//                                          +-----------------+ <----- SP\n\t\t//                                             (low address)\n\t\t//\n\t\t_amode := addressModePreOrPostIndex(m, spVReg,\n\t\t\t-16,  // stack pointer must be 16-byte aligned.\n\t\t\ttrue, // Decrement before store.\n\t\t)\n\t\tfor _, vr := range regs {\n\t\t\t// TODO: pair stores to reduce the number of instructions.\n\t\t\tstore := m.allocateInstr()\n\t\t\tstore.asStore(operandNR(vr), _amode, regTypeToRegisterSizeInBits(vr.RegType()))\n\t\t\tcur = linkInstr(cur, store)\n\t\t}\n\t}\n\n\tif size := m.spillSlotSize; size > 0 {\n\t\t// Check if size is 16-byte aligned.\n\t\tif size&0xf != 0 {\n\t\t\tpanic(fmt.Errorf(\"BUG: spill slot size %d is not 16-byte aligned\", size))\n\t\t}\n\n\t\tcur = m.addsAddOrSubStackPointer(cur, spVReg, size, false)\n\n\t\t// At this point, the stack looks like:\n\t\t//\n\t\t//            (high address)\n\t\t//          +------------------+\n\t\t//          |     .......      |\n\t\t//          |      ret Y       |\n\t\t//          |     .......      |\n\t\t//          |      ret 0       |\n\t\t//          |      arg X       |\n\t\t//          |     .......      |\n\t\t//          |      arg 1       |\n\t\t//          |      arg 0       |\n\t\t//          |  size_of_arg_ret |\n\t\t//          |   ReturnAddress  |\n\t\t//          +------------------+\n\t\t//          |    clobbered M   |\n\t\t//          |   ............   |\n\t\t//          |    clobbered 0   |\n\t\t//          |   spill slot N   |\n\t\t//          |   ............   |\n\t\t//          |   spill slot 2   |\n\t\t//          |   spill slot 0   |\n\t\t//  SP----> +------------------+\n\t\t//             (low address)\n\t}\n\n\t// We push the frame size into the stack to make it possible to unwind stack:\n\t//\n\t//\n\t//            (high address)                  (high address)\n\t//         +-----------------+                +-----------------+\n\t//         |     .......     |                |     .......     |\n\t//         |      ret Y      |                |      ret Y      |\n\t//         |     .......     |                |     .......     |\n\t//         |      ret 0      |                |      ret 0      |\n\t//         |      arg X      |                |      arg X      |\n\t//         |     .......     |                |     .......     |\n\t//         |      arg 1      |                |      arg 1      |\n\t//         |      arg 0      |                |      arg 0      |\n\t//         | size_of_arg_ret |                | size_of_arg_ret |\n\t//         |  ReturnAddress  |                |  ReturnAddress  |\n\t//         +-----------------+      ==>       +-----------------+ <----+\n\t//         |   clobbered  M  |                |   clobbered  M  |      |\n\t//         |   ............  |                |   ............  |      |\n\t//         |   clobbered  2  |                |   clobbered  2  |      |\n\t//         |   clobbered  1  |                |   clobbered  1  |      | frame size\n\t//         |   clobbered  0  |                |   clobbered  0  |      |\n\t//         |   spill slot N  |                |   spill slot N  |      |\n\t//         |   ............  |                |   ............  |      |\n\t//         |   spill slot 0  |                |   spill slot 0  | <----+\n\t// SP--->  +-----------------+                |     xxxxxx      |  ;; unused space to make it 16-byte aligned.\n\t//                                            |   frame_size    |\n\t//                                            +-----------------+ <---- SP\n\t//            (low address)\n\t//\n\tcur = m.createFrameSizeSlot(cur, m.frameSize())\n\n\tlinkInstr(cur, prevInitInst)\n}\n\nfunc (m *machine) createReturnAddrAndSizeOfArgRetSlot(cur *instruction) *instruction {\n\t// First we decrement the stack pointer to point the arg0 slot.\n\tvar sizeOfArgRetReg regalloc.VReg\n\ts := int64(m.currentABI.AlignedArgResultStackSlotSize())\n\tif s > 0 {\n\t\tcur = m.lowerConstantI64AndInsert(cur, tmpRegVReg, s)\n\t\tsizeOfArgRetReg = tmpRegVReg\n\n\t\tsubSp := m.allocateInstr()\n\t\tsubSp.asALU(aluOpSub, spVReg, operandNR(spVReg), operandNR(sizeOfArgRetReg), true)\n\t\tcur = linkInstr(cur, subSp)\n\t} else {\n\t\tsizeOfArgRetReg = xzrVReg\n\t}\n\n\t// Saves the return address (lr) and the size_of_arg_ret below the SP.\n\t// size_of_arg_ret is used for stack unwinding.\n\tpstr := m.allocateInstr()\n\tamode := addressModePreOrPostIndex(m, spVReg, -16, true /* decrement before store */)\n\tpstr.asStorePair64(lrVReg, sizeOfArgRetReg, amode)\n\tcur = linkInstr(cur, pstr)\n\treturn cur\n}\n\nfunc (m *machine) createFrameSizeSlot(cur *instruction, s int64) *instruction {\n\tvar frameSizeReg regalloc.VReg\n\tif s > 0 {\n\t\tcur = m.lowerConstantI64AndInsert(cur, tmpRegVReg, s)\n\t\tframeSizeReg = tmpRegVReg\n\t} else {\n\t\tframeSizeReg = xzrVReg\n\t}\n\t_amode := addressModePreOrPostIndex(m, spVReg,\n\t\t-16,  // stack pointer must be 16-byte aligned.\n\t\ttrue, // Decrement before store.\n\t)\n\tstore := m.allocateInstr()\n\tstore.asStore(operandNR(frameSizeReg), _amode, 64)\n\tcur = linkInstr(cur, store)\n\treturn cur\n}\n\n// postRegAlloc does multiple things while walking through the instructions:\n// 1. Removes the redundant copy instruction.\n// 2. Inserts the epilogue.\nfunc (m *machine) postRegAlloc() {\n\tfor cur := m.rootInstr; cur != nil; cur = cur.next {\n\t\tswitch cur.kind {\n\t\tcase ret:\n\t\t\tm.setupEpilogueAfter(cur.prev)\n\t\tcase tailCall, tailCallInd:\n\t\t\tm.setupEpilogueAfter(cur.prev)\n\t\t\t// If this has been encoded as a proper tail call, we can remove the trailing instructions.\n\t\t\t// For details, see internal/engine/RATIONALE.md\n\t\t\tm.removeUntilRet(cur.next)\n\t\tcase loadConstBlockArg:\n\t\t\tlc := cur\n\t\t\tnext := lc.next\n\t\t\tm.pendingInstructions = m.pendingInstructions[:0]\n\t\t\tm.lowerLoadConstantBlockArgAfterRegAlloc(lc)\n\t\t\tfor _, instr := range m.pendingInstructions {\n\t\t\t\tcur = linkInstr(cur, instr)\n\t\t\t}\n\t\t\tlinkInstr(cur, next)\n\t\t\tm.pendingInstructions = m.pendingInstructions[:0]\n\t\tdefault:\n\t\t\t// Removes the redundant copy instruction.\n\t\t\tif cur.IsCopy() && cur.rn.realReg() == cur.rd.RealReg() {\n\t\t\t\tprev, next := cur.prev, cur.next\n\t\t\t\t// Remove the copy instruction.\n\t\t\t\tprev.next = next\n\t\t\t\tif next != nil {\n\t\t\t\t\tnext.prev = prev\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc (m *machine) setupEpilogueAfter(cur *instruction) {\n\tprevNext := cur.next\n\n\t// We've stored the frame size in the prologue, and now that we are about to return from this function, we won't need it anymore.\n\tcur = m.addsAddOrSubStackPointer(cur, spVReg, 16, true)\n\n\tif s := m.spillSlotSize; s > 0 {\n\t\t// Adjust SP to the original value:\n\t\t//\n\t\t//            (high address)                        (high address)\n\t\t//          +-----------------+                  +-----------------+\n\t\t//          |     .......     |                  |     .......     |\n\t\t//          |      ret Y      |                  |      ret Y      |\n\t\t//          |     .......     |                  |     .......     |\n\t\t//          |      ret 0      |                  |      ret 0      |\n\t\t//          |      arg X      |                  |      arg X      |\n\t\t//          |     .......     |                  |     .......     |\n\t\t//          |      arg 1      |                  |      arg 1      |\n\t\t//          |      arg 0      |                  |      arg 0      |\n\t\t//          |      xxxxx      |                  |      xxxxx      |\n\t\t//          |   ReturnAddress |                  |   ReturnAddress |\n\t\t//          +-----------------+      ====>       +-----------------+\n\t\t//          |    clobbered M  |                  |    clobbered M  |\n\t\t//          |   ............  |                  |   ............  |\n\t\t//          |    clobbered 1  |                  |    clobbered 1  |\n\t\t//          |    clobbered 0  |                  |    clobbered 0  |\n\t\t//          |   spill slot N  |                  +-----------------+ <---- SP\n\t\t//          |   ............  |\n\t\t//          |   spill slot 0  |\n\t\t//   SP---> +-----------------+\n\t\t//             (low address)\n\t\t//\n\t\tcur = m.addsAddOrSubStackPointer(cur, spVReg, s, true)\n\t}\n\n\t// First we need to restore the clobbered registers.\n\tif len(m.clobberedRegs) > 0 {\n\t\t//            (high address)\n\t\t//          +-----------------+                      +-----------------+\n\t\t//          |     .......     |                      |     .......     |\n\t\t//          |      ret Y      |                      |      ret Y      |\n\t\t//          |     .......     |                      |     .......     |\n\t\t//          |      ret 0      |                      |      ret 0      |\n\t\t//          |      arg X      |                      |      arg X      |\n\t\t//          |     .......     |                      |     .......     |\n\t\t//          |      arg 1      |                      |      arg 1      |\n\t\t//          |      arg 0      |                      |      arg 0      |\n\t\t//          |      xxxxx      |                      |      xxxxx      |\n\t\t//          |   ReturnAddress |                      |   ReturnAddress |\n\t\t//          +-----------------+      ========>       +-----------------+ <---- SP\n\t\t//          |   clobbered M   |\n\t\t//          |   ...........   |\n\t\t//          |   clobbered 1   |\n\t\t//          |   clobbered 0   |\n\t\t//   SP---> +-----------------+\n\t\t//             (low address)\n\n\t\tl := len(m.clobberedRegs) - 1\n\t\tfor i := range m.clobberedRegs {\n\t\t\tvr := m.clobberedRegs[l-i] // reverse order to restore.\n\t\t\tload := m.allocateInstr()\n\t\t\tamode := addressModePreOrPostIndex(m, spVReg,\n\t\t\t\t16,    // stack pointer must be 16-byte aligned.\n\t\t\t\tfalse, // Increment after store.\n\t\t\t)\n\t\t\t// TODO: pair loads to reduce the number of instructions.\n\t\t\tswitch regTypeToRegisterSizeInBits(vr.RegType()) {\n\t\t\tcase 64: // save int reg.\n\t\t\t\tload.asULoad(vr, amode, 64)\n\t\t\tcase 128: // save vector reg.\n\t\t\t\tload.asFpuLoad(vr, amode, 128)\n\t\t\t}\n\t\t\tcur = linkInstr(cur, load)\n\t\t}\n\t}\n\n\t// Reload the return address (lr).\n\t//\n\t//            +-----------------+          +-----------------+\n\t//            |     .......     |          |     .......     |\n\t//            |      ret Y      |          |      ret Y      |\n\t//            |     .......     |          |     .......     |\n\t//            |      ret 0      |          |      ret 0      |\n\t//            |      arg X      |          |      arg X      |\n\t//            |     .......     |   ===>   |     .......     |\n\t//            |      arg 1      |          |      arg 1      |\n\t//            |      arg 0      |          |      arg 0      |\n\t//            |      xxxxx      |          +-----------------+ <---- SP\n\t//            |  ReturnAddress  |\n\t//    SP----> +-----------------+\n\n\tldr := m.allocateInstr()\n\tldr.asULoad(lrVReg,\n\t\taddressModePreOrPostIndex(m, spVReg, 16 /* stack pointer must be 16-byte aligned. */, false /* increment after loads */), 64)\n\tcur = linkInstr(cur, ldr)\n\n\tif s := int64(m.currentABI.AlignedArgResultStackSlotSize()); s > 0 {\n\t\tcur = m.addsAddOrSubStackPointer(cur, spVReg, s, true)\n\t}\n\n\tlinkInstr(cur, prevNext)\n}\n\n// removeUntilRet removes the instructions starting from `cur` until the first `ret` instruction.\nfunc (m *machine) removeUntilRet(cur *instruction) {\n\tfor ; cur != nil; cur = cur.next {\n\t\tprev, next := cur.prev, cur.next\n\t\tprev.next = next\n\t\tif next != nil {\n\t\t\tnext.prev = prev\n\t\t}\n\t\tif cur.kind == ret {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// saveRequiredRegs is the set of registers that must be saved/restored during growing stack when there's insufficient\n// stack space left. Basically this is the combination of CalleeSavedRegisters plus argument registers execpt for x0,\n// which always points to the execution context whenever the native code is entered from Go.\nvar saveRequiredRegs = []regalloc.VReg{\n\tx1VReg, x2VReg, x3VReg, x4VReg, x5VReg, x6VReg, x7VReg,\n\tx19VReg, x20VReg, x21VReg, x22VReg, x23VReg, x24VReg, x25VReg, x26VReg, x28VReg, lrVReg,\n\tv0VReg, v1VReg, v2VReg, v3VReg, v4VReg, v5VReg, v6VReg, v7VReg,\n\tv18VReg, v19VReg, v20VReg, v21VReg, v22VReg, v23VReg, v24VReg, v25VReg, v26VReg, v27VReg, v28VReg, v29VReg, v30VReg, v31VReg,\n}\n\n// insertStackBoundsCheck will insert the instructions after `cur` to check the\n// stack bounds, and if there's no sufficient spaces required for the function,\n// exit the execution and try growing it in Go world.\n//\n// TODO: we should be able to share the instructions across all the functions to reduce the size of compiled executable.\nfunc (m *machine) insertStackBoundsCheck(requiredStackSize int64, cur *instruction) *instruction {\n\tif requiredStackSize%16 != 0 {\n\t\tpanic(\"BUG\")\n\t}\n\n\tif immm12op, ok := asImm12Operand(uint64(requiredStackSize)); ok {\n\t\t// sub tmp, sp, #requiredStackSize\n\t\tsub := m.allocateInstr()\n\t\tsub.asALU(aluOpSub, tmpRegVReg, operandNR(spVReg), immm12op, true)\n\t\tcur = linkInstr(cur, sub)\n\t} else {\n\t\t// This case, we first load the requiredStackSize into the temporary register,\n\t\tcur = m.lowerConstantI64AndInsert(cur, tmpRegVReg, requiredStackSize)\n\t\t// Then subtract it.\n\t\tsub := m.allocateInstr()\n\t\tsub.asALU(aluOpSub, tmpRegVReg, operandNR(spVReg), operandNR(tmpRegVReg), true)\n\t\tcur = linkInstr(cur, sub)\n\t}\n\n\ttmp2 := x11VReg // Caller save, so it is safe to use it here in the prologue.\n\n\t// ldr tmp2, [executionContext #StackBottomPtr]\n\tldr := m.allocateInstr()\n\tamode := m.amodePool.Allocate()\n\t*amode = addressMode{\n\t\tkind: addressModeKindRegUnsignedImm12,\n\t\trn:   x0VReg, // execution context is always the first argument.\n\t\timm:  wazevoapi.ExecutionContextOffsetStackBottomPtr.I64(),\n\t}\n\tldr.asULoad(tmp2, amode, 64)\n\tcur = linkInstr(cur, ldr)\n\n\t// subs xzr, tmp, tmp2\n\tsubs := m.allocateInstr()\n\tsubs.asALU(aluOpSubS, xzrVReg, operandNR(tmpRegVReg), operandNR(tmp2), true)\n\tcur = linkInstr(cur, subs)\n\n\t// b.ge #imm\n\tcbr := m.allocateInstr()\n\tcbr.asCondBr(ge.asCond(), labelInvalid, false /* ignored */)\n\tcur = linkInstr(cur, cbr)\n\n\t// Set the required stack size and set it to the exec context.\n\t{\n\t\t// First load the requiredStackSize into the temporary register,\n\t\tcur = m.lowerConstantI64AndInsert(cur, tmpRegVReg, requiredStackSize)\n\t\tsetRequiredStackSize := m.allocateInstr()\n\t\tamode := m.amodePool.Allocate()\n\t\t*amode = addressMode{\n\t\t\tkind: addressModeKindRegUnsignedImm12,\n\t\t\t// Execution context is always the first argument.\n\t\t\trn: x0VReg, imm: wazevoapi.ExecutionContextOffsetStackGrowRequiredSize.I64(),\n\t\t}\n\t\tsetRequiredStackSize.asStore(operandNR(tmpRegVReg), amode, 64)\n\n\t\tcur = linkInstr(cur, setRequiredStackSize)\n\t}\n\n\tldrAddress := m.allocateInstr()\n\tamode2 := m.amodePool.Allocate()\n\t*amode2 = addressMode{\n\t\tkind: addressModeKindRegUnsignedImm12,\n\t\trn:   x0VReg, // execution context is always the first argument\n\t\timm:  wazevoapi.ExecutionContextOffsetStackGrowCallTrampolineAddress.I64(),\n\t}\n\tldrAddress.asULoad(tmpRegVReg, amode2, 64)\n\tcur = linkInstr(cur, ldrAddress)\n\n\t// Then jumps to the stack grow call sequence's address, meaning\n\t// transferring the control to the code compiled by CompileStackGrowCallSequence.\n\tbl := m.allocateInstr()\n\tbl.asCallIndirect(tmpRegVReg, nil)\n\tcur = linkInstr(cur, bl)\n\n\t// Now that we know the entire code, we can finalize how many bytes\n\t// we have to skip when the stack size is sufficient.\n\tvar cbrOffset int64\n\tfor _cur := cbr; ; _cur = _cur.next {\n\t\tcbrOffset += _cur.size()\n\t\tif _cur == cur {\n\t\t\tbreak\n\t\t}\n\t}\n\tcbr.condBrOffsetResolve(cbrOffset)\n\treturn cur\n}\n\n// CompileStackGrowCallSequence implements backend.Machine.\nfunc (m *machine) CompileStackGrowCallSequence() []byte {\n\tcur := m.allocateInstr()\n\tcur.asNop0()\n\tm.rootInstr = cur\n\n\t// Save the callee saved and argument registers.\n\tcur = m.saveRegistersInExecutionContext(cur, saveRequiredRegs)\n\n\t// Save the current stack pointer.\n\tcur = m.saveCurrentStackPointer(cur, x0VReg)\n\n\t// Set the exit status on the execution context.\n\tcur = m.setExitCode(cur, x0VReg, wazevoapi.ExitCodeGrowStack)\n\n\t// Exit the execution.\n\tcur = m.storeReturnAddressAndExit(cur)\n\n\t// After the exit, restore the saved registers.\n\tcur = m.restoreRegistersInExecutionContext(cur, saveRequiredRegs)\n\n\t// Then goes back the original address of this stack grow call.\n\tret := m.allocateInstr()\n\tret.asRet()\n\tlinkInstr(cur, ret)\n\n\tm.encode(m.rootInstr)\n\treturn m.compiler.Buf()\n}\n\nfunc (m *machine) addsAddOrSubStackPointer(cur *instruction, rd regalloc.VReg, diff int64, add bool) *instruction {\n\tm.pendingInstructions = m.pendingInstructions[:0]\n\tm.insertAddOrSubStackPointer(rd, diff, add)\n\tfor _, inserted := range m.pendingInstructions {\n\t\tcur = linkInstr(cur, inserted)\n\t}\n\treturn cur\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/arm64/machine_regalloc.go",
    "content": "package arm64\n\n// This file implements the interfaces required for register allocations. See backend.RegAllocFunctionMachine.\n\nimport (\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/backend/regalloc\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/ssa\"\n)\n\n// regAllocFn implements regalloc.Function.\ntype regAllocFn struct {\n\tssaB                   ssa.Builder\n\tm                      *machine\n\tloopNestingForestRoots []ssa.BasicBlock\n\tblockIter              int\n}\n\n// PostOrderBlockIteratorBegin implements regalloc.Function.\nfunc (f *regAllocFn) PostOrderBlockIteratorBegin() *labelPosition {\n\tf.blockIter = len(f.m.orderedSSABlockLabelPos) - 1\n\treturn f.PostOrderBlockIteratorNext()\n}\n\n// PostOrderBlockIteratorNext implements regalloc.Function.\nfunc (f *regAllocFn) PostOrderBlockIteratorNext() *labelPosition {\n\tif f.blockIter < 0 {\n\t\treturn nil\n\t}\n\tb := f.m.orderedSSABlockLabelPos[f.blockIter]\n\tf.blockIter--\n\treturn b\n}\n\n// ReversePostOrderBlockIteratorBegin implements regalloc.Function.\nfunc (f *regAllocFn) ReversePostOrderBlockIteratorBegin() *labelPosition {\n\tf.blockIter = 0\n\treturn f.ReversePostOrderBlockIteratorNext()\n}\n\n// ReversePostOrderBlockIteratorNext implements regalloc.Function.\nfunc (f *regAllocFn) ReversePostOrderBlockIteratorNext() *labelPosition {\n\tif f.blockIter >= len(f.m.orderedSSABlockLabelPos) {\n\t\treturn nil\n\t}\n\tb := f.m.orderedSSABlockLabelPos[f.blockIter]\n\tf.blockIter++\n\treturn b\n}\n\n// ClobberedRegisters implements regalloc.Function.\nfunc (f *regAllocFn) ClobberedRegisters(regs []regalloc.VReg) {\n\tf.m.clobberedRegs = append(f.m.clobberedRegs[:0], regs...)\n}\n\n// LoopNestingForestRoots implements regalloc.Function.\nfunc (f *regAllocFn) LoopNestingForestRoots() int {\n\tf.loopNestingForestRoots = f.ssaB.LoopNestingForestRoots()\n\treturn len(f.loopNestingForestRoots)\n}\n\n// LoopNestingForestRoot implements regalloc.Function.\nfunc (f *regAllocFn) LoopNestingForestRoot(i int) *labelPosition {\n\troot := f.loopNestingForestRoots[i]\n\tpos := f.m.getOrAllocateSSABlockLabelPosition(root)\n\treturn pos\n}\n\n// LowestCommonAncestor implements regalloc.Function.\nfunc (f *regAllocFn) LowestCommonAncestor(blk1, blk2 *labelPosition) *labelPosition {\n\tsb := f.ssaB.LowestCommonAncestor(blk1.sb, blk2.sb)\n\tpos := f.m.getOrAllocateSSABlockLabelPosition(sb)\n\treturn pos\n}\n\n// Idom implements regalloc.Function.\nfunc (f *regAllocFn) Idom(blk *labelPosition) *labelPosition {\n\tsb := f.ssaB.Idom(blk.sb)\n\tpos := f.m.getOrAllocateSSABlockLabelPosition(sb)\n\treturn pos\n}\n\n// SwapBefore implements regalloc.Function.\nfunc (f *regAllocFn) SwapBefore(x1, x2, tmp regalloc.VReg, instr *instruction) {\n\tf.m.swap(instr.prev, x1, x2, tmp)\n}\n\n// StoreRegisterBefore implements regalloc.Function.\nfunc (f *regAllocFn) StoreRegisterBefore(v regalloc.VReg, instr *instruction) {\n\tm := f.m\n\tm.insertStoreRegisterAt(v, instr, false)\n}\n\n// StoreRegisterAfter implements regalloc.Function.\nfunc (f *regAllocFn) StoreRegisterAfter(v regalloc.VReg, instr *instruction) {\n\tm := f.m\n\tm.insertStoreRegisterAt(v, instr, true)\n}\n\n// ReloadRegisterBefore implements regalloc.Function.\nfunc (f *regAllocFn) ReloadRegisterBefore(v regalloc.VReg, instr *instruction) {\n\tm := f.m\n\tm.insertReloadRegisterAt(v, instr, false)\n}\n\n// ReloadRegisterAfter implements regalloc.Function.\nfunc (f *regAllocFn) ReloadRegisterAfter(v regalloc.VReg, instr *instruction) {\n\tm := f.m\n\tm.insertReloadRegisterAt(v, instr, true)\n}\n\n// InsertMoveBefore implements regalloc.Function.\nfunc (f *regAllocFn) InsertMoveBefore(dst, src regalloc.VReg, instr *instruction) {\n\tf.m.insertMoveBefore(dst, src, instr)\n}\n\n// LoopNestingForestChild implements regalloc.Function.\nfunc (f *regAllocFn) LoopNestingForestChild(pos *labelPosition, i int) *labelPosition {\n\tchildSB := pos.sb.LoopNestingForestChildren()[i]\n\treturn f.m.getOrAllocateSSABlockLabelPosition(childSB)\n}\n\n// Succ implements regalloc.Block.\nfunc (f *regAllocFn) Succ(pos *labelPosition, i int) *labelPosition {\n\tsuccSB := pos.sb.Succ(i)\n\tif succSB.ReturnBlock() {\n\t\treturn nil\n\t}\n\treturn f.m.getOrAllocateSSABlockLabelPosition(succSB)\n}\n\n// Pred implements regalloc.Block.\nfunc (f *regAllocFn) Pred(pos *labelPosition, i int) *labelPosition {\n\tpredSB := pos.sb.Pred(i)\n\treturn f.m.getOrAllocateSSABlockLabelPosition(predSB)\n}\n\n// BlockParams implements regalloc.Function.\nfunc (f *regAllocFn) BlockParams(pos *labelPosition, regs *[]regalloc.VReg) []regalloc.VReg {\n\tc := f.m.compiler\n\t*regs = (*regs)[:0]\n\tfor i := 0; i < pos.sb.Params(); i++ {\n\t\tv := c.VRegOf(pos.sb.Param(i))\n\t\t*regs = append(*regs, v)\n\t}\n\treturn *regs\n}\n\n// ID implements regalloc.Block.\nfunc (pos *labelPosition) ID() int32 {\n\treturn int32(pos.sb.ID())\n}\n\n// InstrIteratorBegin implements regalloc.Block.\nfunc (pos *labelPosition) InstrIteratorBegin() *instruction {\n\tret := pos.begin\n\tpos.cur = ret\n\treturn ret\n}\n\n// InstrIteratorNext implements regalloc.Block.\nfunc (pos *labelPosition) InstrIteratorNext() *instruction {\n\tfor {\n\t\tif pos.cur == pos.end {\n\t\t\treturn nil\n\t\t}\n\t\tinstr := pos.cur.next\n\t\tpos.cur = instr\n\t\tif instr == nil {\n\t\t\treturn nil\n\t\t} else if instr.addedBeforeRegAlloc {\n\t\t\t// Only concerned about the instruction added before regalloc.\n\t\t\treturn instr\n\t\t}\n\t}\n}\n\n// InstrRevIteratorBegin implements regalloc.Block.\nfunc (pos *labelPosition) InstrRevIteratorBegin() *instruction {\n\tpos.cur = pos.end\n\treturn pos.cur\n}\n\n// InstrRevIteratorNext implements regalloc.Block.\nfunc (pos *labelPosition) InstrRevIteratorNext() *instruction {\n\tfor {\n\t\tif pos.cur == pos.begin {\n\t\t\treturn nil\n\t\t}\n\t\tinstr := pos.cur.prev\n\t\tpos.cur = instr\n\t\tif instr == nil {\n\t\t\treturn nil\n\t\t} else if instr.addedBeforeRegAlloc {\n\t\t\t// Only concerned about the instruction added before regalloc.\n\t\t\treturn instr\n\t\t}\n\t}\n}\n\n// FirstInstr implements regalloc.Block.\nfunc (pos *labelPosition) FirstInstr() *instruction { return pos.begin }\n\n// LastInstrForInsertion implements regalloc.Block.\nfunc (pos *labelPosition) LastInstrForInsertion() *instruction {\n\treturn lastInstrForInsertion(pos.begin, pos.end)\n}\n\n// Preds implements regalloc.Block.\nfunc (pos *labelPosition) Preds() int { return pos.sb.Preds() }\n\n// Entry implements regalloc.Block.\nfunc (pos *labelPosition) Entry() bool { return pos.sb.EntryBlock() }\n\n// Succs implements regalloc.Block.\nfunc (pos *labelPosition) Succs() int { return pos.sb.Succs() }\n\n// LoopHeader implements regalloc.Block.\nfunc (pos *labelPosition) LoopHeader() bool { return pos.sb.LoopHeader() }\n\n// LoopNestingForestChildren implements regalloc.Block.\nfunc (pos *labelPosition) LoopNestingForestChildren() int {\n\treturn len(pos.sb.LoopNestingForestChildren())\n}\n\nfunc (m *machine) swap(cur *instruction, x1, x2, tmp regalloc.VReg) {\n\tprevNext := cur.next\n\tvar mov1, mov2, mov3 *instruction\n\tif x1.RegType() == regalloc.RegTypeInt {\n\t\tif !tmp.Valid() {\n\t\t\ttmp = tmpRegVReg\n\t\t}\n\t\tmov1 = m.allocateInstr().asMove64(tmp, x1)\n\t\tmov2 = m.allocateInstr().asMove64(x1, x2)\n\t\tmov3 = m.allocateInstr().asMove64(x2, tmp)\n\t\tcur = linkInstr(cur, mov1)\n\t\tcur = linkInstr(cur, mov2)\n\t\tcur = linkInstr(cur, mov3)\n\t\tlinkInstr(cur, prevNext)\n\t} else {\n\t\tif !tmp.Valid() {\n\t\t\tr2 := x2.RealReg()\n\t\t\t// Temporarily spill x1 to stack.\n\t\t\tcur = m.insertStoreRegisterAt(x1, cur, true).prev\n\t\t\t// Then move x2 to x1.\n\t\t\tcur = linkInstr(cur, m.allocateInstr().asFpuMov128(x1, x2))\n\t\t\tlinkInstr(cur, prevNext)\n\t\t\t// Then reload the original value on x1 from stack to r2.\n\t\t\tm.insertReloadRegisterAt(x1.SetRealReg(r2), cur, true)\n\t\t} else {\n\t\t\tmov1 = m.allocateInstr().asFpuMov128(tmp, x1)\n\t\t\tmov2 = m.allocateInstr().asFpuMov128(x1, x2)\n\t\t\tmov3 = m.allocateInstr().asFpuMov128(x2, tmp)\n\t\t\tcur = linkInstr(cur, mov1)\n\t\t\tcur = linkInstr(cur, mov2)\n\t\t\tcur = linkInstr(cur, mov3)\n\t\t\tlinkInstr(cur, prevNext)\n\t\t}\n\t}\n}\n\nfunc (m *machine) insertMoveBefore(dst, src regalloc.VReg, instr *instruction) {\n\ttyp := src.RegType()\n\tif typ != dst.RegType() {\n\t\tpanic(\"BUG: src and dst must have the same type\")\n\t}\n\n\tmov := m.allocateInstr()\n\tif typ == regalloc.RegTypeInt {\n\t\tmov.asMove64(dst, src)\n\t} else {\n\t\tmov.asFpuMov128(dst, src)\n\t}\n\n\tcur := instr.prev\n\tprevNext := cur.next\n\tcur = linkInstr(cur, mov)\n\tlinkInstr(cur, prevNext)\n}\n\nfunc (m *machine) insertStoreRegisterAt(v regalloc.VReg, instr *instruction, after bool) *instruction {\n\tif !v.IsRealReg() {\n\t\tpanic(\"BUG: VReg must be backed by real reg to be stored\")\n\t}\n\n\ttyp := m.compiler.TypeOf(v)\n\n\tvar prevNext, cur *instruction\n\tif after {\n\t\tcur, prevNext = instr, instr.next\n\t} else {\n\t\tcur, prevNext = instr.prev, instr\n\t}\n\n\toffsetFromSP := m.getVRegSpillSlotOffsetFromSP(v.ID(), typ.Size())\n\tvar amode *addressMode\n\tcur, amode = m.resolveAddressModeForOffsetAndInsert(cur, offsetFromSP, typ.Bits(), spVReg, true)\n\tstore := m.allocateInstr()\n\tstore.asStore(operandNR(v), amode, typ.Bits())\n\n\tcur = linkInstr(cur, store)\n\treturn linkInstr(cur, prevNext)\n}\n\nfunc (m *machine) insertReloadRegisterAt(v regalloc.VReg, instr *instruction, after bool) *instruction {\n\tif !v.IsRealReg() {\n\t\tpanic(\"BUG: VReg must be backed by real reg to be stored\")\n\t}\n\n\ttyp := m.compiler.TypeOf(v)\n\n\tvar prevNext, cur *instruction\n\tif after {\n\t\tcur, prevNext = instr, instr.next\n\t} else {\n\t\tcur, prevNext = instr.prev, instr\n\t}\n\n\toffsetFromSP := m.getVRegSpillSlotOffsetFromSP(v.ID(), typ.Size())\n\tvar amode *addressMode\n\tcur, amode = m.resolveAddressModeForOffsetAndInsert(cur, offsetFromSP, typ.Bits(), spVReg, true)\n\tload := m.allocateInstr()\n\tswitch typ {\n\tcase ssa.TypeI32, ssa.TypeI64:\n\t\tload.asULoad(v, amode, typ.Bits())\n\tcase ssa.TypeF32, ssa.TypeF64:\n\t\tload.asFpuLoad(v, amode, typ.Bits())\n\tcase ssa.TypeV128:\n\t\tload.asFpuLoad(v, amode, 128)\n\tdefault:\n\t\tpanic(\"TODO\")\n\t}\n\n\tcur = linkInstr(cur, load)\n\treturn linkInstr(cur, prevNext)\n}\n\nfunc lastInstrForInsertion(begin, end *instruction) *instruction {\n\tcur := end\n\tfor cur.kind == nop0 {\n\t\tcur = cur.prev\n\t\tif cur == begin {\n\t\t\treturn end\n\t\t}\n\t}\n\tswitch cur.kind {\n\tcase br:\n\t\treturn cur\n\tdefault:\n\t\treturn end\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/arm64/machine_relocation.go",
    "content": "package arm64\n\nimport (\n\t\"encoding/binary\"\n\t\"fmt\"\n\t\"math\"\n\t\"sort\"\n\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/backend\"\n)\n\nconst (\n\t// trampolineCallSize is the size of the trampoline instruction sequence for each function in an island.\n\ttrampolineCallSize = 4*4 + 4 // Four instructions + 32-bit immediate.\n\n\t// Unconditional branch offset is encoded as divided by 4 in imm26.\n\t// https://developer.arm.com/documentation/ddi0596/2021-12/Base-Instructions/BL--Branch-with-Link-?lang=en\n\n\tmaxUnconditionalBranchOffset = maxSignedInt26 * 4\n\tminUnconditionalBranchOffset = minSignedInt26 * 4\n\n\t// trampolineIslandInterval is the range of the trampoline island.\n\t// Half of the range is used for the trampoline island, and the other half is used for the function.\n\ttrampolineIslandInterval = (maxUnconditionalBranchOffset - 1) / 2\n\n\t// maxNumFunctions explicitly specifies the maximum number of functions that can be allowed in a single executable.\n\tmaxNumFunctions = trampolineIslandInterval >> 6\n\n\t// maxFunctionExecutableSize is the maximum size of a function that can exist in a trampoline island.\n\t// Conservatively set to 1/4 of the trampoline island interval.\n\tmaxFunctionExecutableSize = trampolineIslandInterval >> 2\n)\n\n// CallTrampolineIslandInfo implements backend.Machine CallTrampolineIslandInfo.\nfunc (m *machine) CallTrampolineIslandInfo(numFunctions int) (interval, size int, err error) {\n\tif numFunctions > maxNumFunctions {\n\t\treturn 0, 0, fmt.Errorf(\"too many functions: %d > %d\", numFunctions, maxNumFunctions)\n\t}\n\treturn trampolineIslandInterval, trampolineCallSize * numFunctions, nil\n}\n\n// ResolveRelocations implements backend.Machine ResolveRelocations.\nfunc (m *machine) ResolveRelocations(\n\trefToBinaryOffset []int,\n\timportedFns int,\n\texecutable []byte,\n\trelocations []backend.RelocationInfo,\n\tcallTrampolineIslandOffsets []int,\n) {\n\tfor _, islandOffset := range callTrampolineIslandOffsets {\n\t\tencodeCallTrampolineIsland(refToBinaryOffset, importedFns, islandOffset, executable)\n\t}\n\n\tfor _, r := range relocations {\n\t\tinstrOffset := r.Offset\n\t\tcalleeFnOffset := refToBinaryOffset[r.FuncRef]\n\t\tdiff := int64(calleeFnOffset) - (instrOffset)\n\t\t// Check if the diff is within the range of the branch instruction.\n\t\tif diff < minUnconditionalBranchOffset || diff > maxUnconditionalBranchOffset {\n\t\t\t// Find the near trampoline island from callTrampolineIslandOffsets.\n\t\t\tislandOffset := searchTrampolineIsland(callTrampolineIslandOffsets, int(instrOffset))\n\t\t\t// Imported functions don't need trampolines, so we ignore them when we compute the offset\n\t\t\t// (see also encodeCallTrampolineIsland)\n\t\t\tfuncOffset := int(r.FuncRef) - importedFns\n\t\t\tislandTargetOffset := islandOffset + trampolineCallSize*funcOffset\n\t\t\tdiff = int64(islandTargetOffset) - (instrOffset)\n\t\t\tif diff < minUnconditionalBranchOffset || diff > maxUnconditionalBranchOffset {\n\t\t\t\tpanic(\"BUG in trampoline placement\")\n\t\t\t}\n\t\t}\n\t\t// The unconditional branch instruction is usually encoded as a branch-and-link (BL),\n\t\t// because it is a function call. However, if the instruction is a tail call,\n\t\t// we encode it as a plain unconditional branch (B), so we won't overwrite the link register.\n\t\tbinary.LittleEndian.PutUint32(executable[instrOffset:instrOffset+4], encodeUnconditionalBranch(!r.IsTailCall, diff))\n\t}\n}\n\n// encodeCallTrampolineIsland encodes a trampoline island for the given functions.\n// Each island consists of a trampoline instruction sequence for each function.\n// Each trampoline instruction sequence consists of 4 instructions + 32-bit immediate.\nfunc encodeCallTrampolineIsland(refToBinaryOffset []int, importedFns int, islandOffset int, executable []byte) {\n\t// We skip the imported functions: they don't need trampolines\n\t// and are not accounted for.\n\tbinaryOffsets := refToBinaryOffset[importedFns:]\n\n\tfor i := 0; i < len(binaryOffsets); i++ {\n\t\ttrampolineOffset := islandOffset + trampolineCallSize*i\n\n\t\tfnOffset := binaryOffsets[i]\n\t\tdiff := fnOffset - (trampolineOffset + 16)\n\t\tif diff > math.MaxInt32 || diff < math.MinInt32 {\n\t\t\t// This case even amd64 can't handle. 4GB is too big.\n\t\t\tpanic(\"too big binary\")\n\t\t}\n\n\t\t// The tmpReg, tmpReg2 is safe to overwrite (in fact any caller-saved register is safe to use).\n\t\ttmpReg, tmpReg2 := regNumberInEncoding[tmpRegVReg.RealReg()], regNumberInEncoding[x11]\n\n\t\t// adr tmpReg, PC+16: load the address of #diff into tmpReg.\n\t\tbinary.LittleEndian.PutUint32(executable[trampolineOffset:], encodeAdr(tmpReg, 16))\n\t\t// ldrsw tmpReg2, [tmpReg]: Load #diff into tmpReg2.\n\t\tbinary.LittleEndian.PutUint32(executable[trampolineOffset+4:],\n\t\t\tencodeLoadOrStore(sLoad32, tmpReg2, addressMode{kind: addressModeKindRegUnsignedImm12, rn: tmpRegVReg}))\n\t\t// add tmpReg, tmpReg2, tmpReg: add #diff to the address of #diff, getting the absolute address of the function.\n\t\tbinary.LittleEndian.PutUint32(executable[trampolineOffset+8:],\n\t\t\tencodeAluRRR(aluOpAdd, tmpReg, tmpReg, tmpReg2, true, false))\n\t\t// br tmpReg: branch to the function without overwriting the link register.\n\t\tbinary.LittleEndian.PutUint32(executable[trampolineOffset+12:], encodeUnconditionalBranchReg(tmpReg, false))\n\t\t// #diff\n\t\tbinary.LittleEndian.PutUint32(executable[trampolineOffset+16:], uint32(diff))\n\t}\n}\n\n// searchTrampolineIsland finds the nearest trampoline island from callTrampolineIslandOffsets.\n// Note that even if the offset is in the middle of two islands, it returns the latter one.\n// That is ok because the island is always placed in the middle of the range.\n//\n// precondition: callTrampolineIslandOffsets is sorted in ascending order.\nfunc searchTrampolineIsland(callTrampolineIslandOffsets []int, offset int) int {\n\tl := len(callTrampolineIslandOffsets)\n\tn := sort.Search(l, func(i int) bool {\n\t\treturn callTrampolineIslandOffsets[i] >= offset\n\t})\n\tif n == l {\n\t\tn = l - 1\n\t}\n\treturn callTrampolineIslandOffsets[n]\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/arm64/reg.go",
    "content": "package arm64\n\nimport (\n\t\"fmt\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/backend/regalloc\"\n)\n\n// Arm64-specific registers.\n//\n// See https://developer.arm.com/documentation/dui0801/a/Overview-of-AArch64-state/Predeclared-core-register-names-in-AArch64-state\n\nconst (\n\t// General purpose registers. Note that we do not distinguish wn and xn registers\n\t// because they are the same from the perspective of register allocator, and\n\t// the size can be determined by the type of the instruction.\n\n\tx0 = regalloc.RealRegInvalid + 1 + iota\n\tx1\n\tx2\n\tx3\n\tx4\n\tx5\n\tx6\n\tx7\n\tx8\n\tx9\n\tx10\n\tx11\n\tx12\n\tx13\n\tx14\n\tx15\n\tx16\n\tx17\n\tx18\n\tx19\n\tx20\n\tx21\n\tx22\n\tx23\n\tx24\n\tx25\n\tx26\n\tx27\n\tx28\n\tx29\n\tx30\n\n\t// Vector registers. Note that we do not distinguish vn and dn, ... registers\n\t// because they are the same from the perspective of register allocator, and\n\t// the size can be determined by the type of the instruction.\n\n\tv0\n\tv1\n\tv2\n\tv3\n\tv4\n\tv5\n\tv6\n\tv7\n\tv8\n\tv9\n\tv10\n\tv11\n\tv12\n\tv13\n\tv14\n\tv15\n\tv16\n\tv17\n\tv18\n\tv19\n\tv20\n\tv21\n\tv22\n\tv23\n\tv24\n\tv25\n\tv26\n\tv27\n\tv28\n\tv29\n\tv30\n\tv31\n\n\t// Special registers\n\n\txzr\n\tsp\n\tlr  = x30\n\tfp  = x29\n\ttmp = x27\n)\n\nvar (\n\tx0VReg  = regalloc.FromRealReg(x0, regalloc.RegTypeInt)\n\tx1VReg  = regalloc.FromRealReg(x1, regalloc.RegTypeInt)\n\tx2VReg  = regalloc.FromRealReg(x2, regalloc.RegTypeInt)\n\tx3VReg  = regalloc.FromRealReg(x3, regalloc.RegTypeInt)\n\tx4VReg  = regalloc.FromRealReg(x4, regalloc.RegTypeInt)\n\tx5VReg  = regalloc.FromRealReg(x5, regalloc.RegTypeInt)\n\tx6VReg  = regalloc.FromRealReg(x6, regalloc.RegTypeInt)\n\tx7VReg  = regalloc.FromRealReg(x7, regalloc.RegTypeInt)\n\tx8VReg  = regalloc.FromRealReg(x8, regalloc.RegTypeInt)\n\tx9VReg  = regalloc.FromRealReg(x9, regalloc.RegTypeInt)\n\tx10VReg = regalloc.FromRealReg(x10, regalloc.RegTypeInt)\n\tx11VReg = regalloc.FromRealReg(x11, regalloc.RegTypeInt)\n\tx12VReg = regalloc.FromRealReg(x12, regalloc.RegTypeInt)\n\tx13VReg = regalloc.FromRealReg(x13, regalloc.RegTypeInt)\n\tx14VReg = regalloc.FromRealReg(x14, regalloc.RegTypeInt)\n\tx15VReg = regalloc.FromRealReg(x15, regalloc.RegTypeInt)\n\tx16VReg = regalloc.FromRealReg(x16, regalloc.RegTypeInt)\n\tx17VReg = regalloc.FromRealReg(x17, regalloc.RegTypeInt)\n\tx18VReg = regalloc.FromRealReg(x18, regalloc.RegTypeInt)\n\tx19VReg = regalloc.FromRealReg(x19, regalloc.RegTypeInt)\n\tx20VReg = regalloc.FromRealReg(x20, regalloc.RegTypeInt)\n\tx21VReg = regalloc.FromRealReg(x21, regalloc.RegTypeInt)\n\tx22VReg = regalloc.FromRealReg(x22, regalloc.RegTypeInt)\n\tx23VReg = regalloc.FromRealReg(x23, regalloc.RegTypeInt)\n\tx24VReg = regalloc.FromRealReg(x24, regalloc.RegTypeInt)\n\tx25VReg = regalloc.FromRealReg(x25, regalloc.RegTypeInt)\n\tx26VReg = regalloc.FromRealReg(x26, regalloc.RegTypeInt)\n\tx27VReg = regalloc.FromRealReg(x27, regalloc.RegTypeInt)\n\tx28VReg = regalloc.FromRealReg(x28, regalloc.RegTypeInt)\n\tx29VReg = regalloc.FromRealReg(x29, regalloc.RegTypeInt)\n\tx30VReg = regalloc.FromRealReg(x30, regalloc.RegTypeInt)\n\tv0VReg  = regalloc.FromRealReg(v0, regalloc.RegTypeFloat)\n\tv1VReg  = regalloc.FromRealReg(v1, regalloc.RegTypeFloat)\n\tv2VReg  = regalloc.FromRealReg(v2, regalloc.RegTypeFloat)\n\tv3VReg  = regalloc.FromRealReg(v3, regalloc.RegTypeFloat)\n\tv4VReg  = regalloc.FromRealReg(v4, regalloc.RegTypeFloat)\n\tv5VReg  = regalloc.FromRealReg(v5, regalloc.RegTypeFloat)\n\tv6VReg  = regalloc.FromRealReg(v6, regalloc.RegTypeFloat)\n\tv7VReg  = regalloc.FromRealReg(v7, regalloc.RegTypeFloat)\n\tv8VReg  = regalloc.FromRealReg(v8, regalloc.RegTypeFloat)\n\tv9VReg  = regalloc.FromRealReg(v9, regalloc.RegTypeFloat)\n\tv10VReg = regalloc.FromRealReg(v10, regalloc.RegTypeFloat)\n\tv11VReg = regalloc.FromRealReg(v11, regalloc.RegTypeFloat)\n\tv12VReg = regalloc.FromRealReg(v12, regalloc.RegTypeFloat)\n\tv13VReg = regalloc.FromRealReg(v13, regalloc.RegTypeFloat)\n\tv14VReg = regalloc.FromRealReg(v14, regalloc.RegTypeFloat)\n\tv15VReg = regalloc.FromRealReg(v15, regalloc.RegTypeFloat)\n\tv16VReg = regalloc.FromRealReg(v16, regalloc.RegTypeFloat)\n\tv17VReg = regalloc.FromRealReg(v17, regalloc.RegTypeFloat)\n\tv18VReg = regalloc.FromRealReg(v18, regalloc.RegTypeFloat)\n\tv19VReg = regalloc.FromRealReg(v19, regalloc.RegTypeFloat)\n\tv20VReg = regalloc.FromRealReg(v20, regalloc.RegTypeFloat)\n\tv21VReg = regalloc.FromRealReg(v21, regalloc.RegTypeFloat)\n\tv22VReg = regalloc.FromRealReg(v22, regalloc.RegTypeFloat)\n\tv23VReg = regalloc.FromRealReg(v23, regalloc.RegTypeFloat)\n\tv24VReg = regalloc.FromRealReg(v24, regalloc.RegTypeFloat)\n\tv25VReg = regalloc.FromRealReg(v25, regalloc.RegTypeFloat)\n\tv26VReg = regalloc.FromRealReg(v26, regalloc.RegTypeFloat)\n\tv27VReg = regalloc.FromRealReg(v27, regalloc.RegTypeFloat)\n\t// lr (link register) holds the return address at the function entry.\n\tlrVReg = x30VReg\n\t// tmpReg is used to perform spill/load on large stack offsets, and load large constants.\n\t// Therefore, be cautious to use this register in the middle of the compilation, especially before the register allocation.\n\t// This is the same as golang/go, but it's only described in the source code:\n\t// https://github.com/golang/go/blob/18e17e2cb12837ea2c8582ecdb0cc780f49a1aac/src/cmd/compile/internal/ssa/_gen/ARM64Ops.go#L59\n\t// https://github.com/golang/go/blob/18e17e2cb12837ea2c8582ecdb0cc780f49a1aac/src/cmd/compile/internal/ssa/_gen/ARM64Ops.go#L13-L15\n\ttmpRegVReg = regalloc.FromRealReg(tmp, regalloc.RegTypeInt)\n\tv28VReg    = regalloc.FromRealReg(v28, regalloc.RegTypeFloat)\n\tv29VReg    = regalloc.FromRealReg(v29, regalloc.RegTypeFloat)\n\tv30VReg    = regalloc.FromRealReg(v30, regalloc.RegTypeFloat)\n\tv31VReg    = regalloc.FromRealReg(v31, regalloc.RegTypeFloat)\n\txzrVReg    = regalloc.FromRealReg(xzr, regalloc.RegTypeInt)\n\tspVReg     = regalloc.FromRealReg(sp, regalloc.RegTypeInt)\n\tfpVReg     = regalloc.FromRealReg(fp, regalloc.RegTypeInt)\n)\n\nvar regNames = [...]string{\n\tx0:  \"x0\",\n\tx1:  \"x1\",\n\tx2:  \"x2\",\n\tx3:  \"x3\",\n\tx4:  \"x4\",\n\tx5:  \"x5\",\n\tx6:  \"x6\",\n\tx7:  \"x7\",\n\tx8:  \"x8\",\n\tx9:  \"x9\",\n\tx10: \"x10\",\n\tx11: \"x11\",\n\tx12: \"x12\",\n\tx13: \"x13\",\n\tx14: \"x14\",\n\tx15: \"x15\",\n\tx16: \"x16\",\n\tx17: \"x17\",\n\tx18: \"x18\",\n\tx19: \"x19\",\n\tx20: \"x20\",\n\tx21: \"x21\",\n\tx22: \"x22\",\n\tx23: \"x23\",\n\tx24: \"x24\",\n\tx25: \"x25\",\n\tx26: \"x26\",\n\tx27: \"x27\",\n\tx28: \"x28\",\n\tx29: \"x29\",\n\tx30: \"x30\",\n\txzr: \"xzr\",\n\tsp:  \"sp\",\n\tv0:  \"v0\",\n\tv1:  \"v1\",\n\tv2:  \"v2\",\n\tv3:  \"v3\",\n\tv4:  \"v4\",\n\tv5:  \"v5\",\n\tv6:  \"v6\",\n\tv7:  \"v7\",\n\tv8:  \"v8\",\n\tv9:  \"v9\",\n\tv10: \"v10\",\n\tv11: \"v11\",\n\tv12: \"v12\",\n\tv13: \"v13\",\n\tv14: \"v14\",\n\tv15: \"v15\",\n\tv16: \"v16\",\n\tv17: \"v17\",\n\tv18: \"v18\",\n\tv19: \"v19\",\n\tv20: \"v20\",\n\tv21: \"v21\",\n\tv22: \"v22\",\n\tv23: \"v23\",\n\tv24: \"v24\",\n\tv25: \"v25\",\n\tv26: \"v26\",\n\tv27: \"v27\",\n\tv28: \"v28\",\n\tv29: \"v29\",\n\tv30: \"v30\",\n\tv31: \"v31\",\n}\n\nfunc formatVRegSized(r regalloc.VReg, size byte) (ret string) {\n\tif r.IsRealReg() {\n\t\tret = regNames[r.RealReg()]\n\t\tswitch ret[0] {\n\t\tcase 'x':\n\t\t\tswitch size {\n\t\t\tcase 32:\n\t\t\t\tret = strings.Replace(ret, \"x\", \"w\", 1)\n\t\t\tcase 64:\n\t\t\tdefault:\n\t\t\t\tpanic(\"BUG: invalid register size: \" + strconv.Itoa(int(size)))\n\t\t\t}\n\t\tcase 'v':\n\t\t\tswitch size {\n\t\t\tcase 32:\n\t\t\t\tret = strings.Replace(ret, \"v\", \"s\", 1)\n\t\t\tcase 64:\n\t\t\t\tret = strings.Replace(ret, \"v\", \"d\", 1)\n\t\t\tcase 128:\n\t\t\t\tret = strings.Replace(ret, \"v\", \"q\", 1)\n\t\t\tdefault:\n\t\t\t\tpanic(\"BUG: invalid register size\")\n\t\t\t}\n\t\t}\n\t} else {\n\t\tswitch r.RegType() {\n\t\tcase regalloc.RegTypeInt:\n\t\t\tswitch size {\n\t\t\tcase 32:\n\t\t\t\tret = fmt.Sprintf(\"w%d?\", r.ID())\n\t\t\tcase 64:\n\t\t\t\tret = fmt.Sprintf(\"x%d?\", r.ID())\n\t\t\tdefault:\n\t\t\t\tpanic(\"BUG: invalid register size: \" + strconv.Itoa(int(size)))\n\t\t\t}\n\t\tcase regalloc.RegTypeFloat:\n\t\t\tswitch size {\n\t\t\tcase 32:\n\t\t\t\tret = fmt.Sprintf(\"s%d?\", r.ID())\n\t\t\tcase 64:\n\t\t\t\tret = fmt.Sprintf(\"d%d?\", r.ID())\n\t\t\tcase 128:\n\t\t\t\tret = fmt.Sprintf(\"q%d?\", r.ID())\n\t\t\tdefault:\n\t\t\t\tpanic(\"BUG: invalid register size\")\n\t\t\t}\n\t\tdefault:\n\t\t\tpanic(fmt.Sprintf(\"BUG: invalid register type: %d for %s\", r.RegType(), r))\n\t\t}\n\t}\n\treturn\n}\n\nfunc formatVRegWidthVec(r regalloc.VReg, width vecArrangement) (ret string) {\n\tvar id string\n\twspec := strings.ToLower(width.String())\n\tif r.IsRealReg() {\n\t\tid = regNames[r.RealReg()][1:]\n\t} else {\n\t\tid = fmt.Sprintf(\"%d?\", r.ID())\n\t}\n\tret = fmt.Sprintf(\"%s%s\", wspec, id)\n\treturn\n}\n\nfunc formatVRegVec(r regalloc.VReg, arr vecArrangement, index vecIndex) (ret string) {\n\tid := fmt.Sprintf(\"v%d?\", r.ID())\n\tif r.IsRealReg() {\n\t\tid = regNames[r.RealReg()]\n\t}\n\tret = fmt.Sprintf(\"%s.%s\", id, strings.ToLower(arr.String()))\n\tif index != vecIndexNone {\n\t\tret += fmt.Sprintf(\"[%d]\", index)\n\t}\n\treturn\n}\n\nfunc regTypeToRegisterSizeInBits(r regalloc.RegType) byte {\n\tswitch r {\n\tcase regalloc.RegTypeInt:\n\t\treturn 64\n\tcase regalloc.RegTypeFloat:\n\t\treturn 128\n\tdefault:\n\t\tpanic(\"BUG: invalid register type\")\n\t}\n}\n\nvar regNumberInEncoding = [...]uint32{\n\tx0:  0,\n\tx1:  1,\n\tx2:  2,\n\tx3:  3,\n\tx4:  4,\n\tx5:  5,\n\tx6:  6,\n\tx7:  7,\n\tx8:  8,\n\tx9:  9,\n\tx10: 10,\n\tx11: 11,\n\tx12: 12,\n\tx13: 13,\n\tx14: 14,\n\tx15: 15,\n\tx16: 16,\n\tx17: 17,\n\tx18: 18,\n\tx19: 19,\n\tx20: 20,\n\tx21: 21,\n\tx22: 22,\n\tx23: 23,\n\tx24: 24,\n\tx25: 25,\n\tx26: 26,\n\tx27: 27,\n\tx28: 28,\n\tx29: 29,\n\tx30: 30,\n\txzr: 31,\n\tsp:  31,\n\tv0:  0,\n\tv1:  1,\n\tv2:  2,\n\tv3:  3,\n\tv4:  4,\n\tv5:  5,\n\tv6:  6,\n\tv7:  7,\n\tv8:  8,\n\tv9:  9,\n\tv10: 10,\n\tv11: 11,\n\tv12: 12,\n\tv13: 13,\n\tv14: 14,\n\tv15: 15,\n\tv16: 16,\n\tv17: 17,\n\tv18: 18,\n\tv19: 19,\n\tv20: 20,\n\tv21: 21,\n\tv22: 22,\n\tv23: 23,\n\tv24: 24,\n\tv25: 25,\n\tv26: 26,\n\tv27: 27,\n\tv28: 28,\n\tv29: 29,\n\tv30: 30,\n\tv31: 31,\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/arm64/unwind_stack.go",
    "content": "package arm64\n\nimport (\n\t\"encoding/binary\"\n\t\"reflect\"\n\t\"unsafe\"\n\n\t\"github.com/tetratelabs/wazero/internal/wasmdebug\"\n)\n\n// UnwindStack implements wazevo.unwindStack.\nfunc UnwindStack(sp, _, top uintptr, returnAddresses []uintptr) []uintptr {\n\tl := int(top - sp)\n\n\tvar stackBuf []byte\n\t{\n\t\t//nolint:staticcheck\n\t\thdr := (*reflect.SliceHeader)(unsafe.Pointer(&stackBuf))\n\t\thdr.Data = sp\n\t\thdr.Len = l\n\t\thdr.Cap = l\n\t}\n\n\tfor i := uint64(0); i < uint64(l); {\n\t\t//       (high address)\n\t\t//    +-----------------+\n\t\t//    |     .......     |\n\t\t//    |      ret Y      |  <----+\n\t\t//    |     .......     |       |\n\t\t//    |      ret 0      |       |\n\t\t//    |      arg X      |       |  size_of_arg_ret\n\t\t//    |     .......     |       |\n\t\t//    |      arg 1      |       |\n\t\t//    |      arg 0      |  <----+\n\t\t//    | size_of_arg_ret |\n\t\t//    |  ReturnAddress  |\n\t\t//    +-----------------+ <----+\n\t\t//    |   ...........   |      |\n\t\t//    |   spill slot M  |      |\n\t\t//    |   ............  |      |\n\t\t//    |   spill slot 2  |      |\n\t\t//    |   spill slot 1  |      | frame size\n\t\t//    |   spill slot 1  |      |\n\t\t//    |   clobbered N   |      |\n\t\t//    |   ............  |      |\n\t\t//    |   clobbered 0   | <----+\n\t\t//    |     xxxxxx      |  ;; unused space to make it 16-byte aligned.\n\t\t//    |   frame_size    |\n\t\t//    +-----------------+ <---- SP\n\t\t//       (low address)\n\n\t\tframeSize := binary.LittleEndian.Uint64(stackBuf[i:])\n\t\ti += frameSize +\n\t\t\t16 // frame size + aligned space.\n\t\tretAddr := binary.LittleEndian.Uint64(stackBuf[i:])\n\t\ti += 8 // ret addr.\n\t\tsizeOfArgRet := binary.LittleEndian.Uint64(stackBuf[i:])\n\t\ti += 8 + sizeOfArgRet\n\t\treturnAddresses = append(returnAddresses, uintptr(retAddr))\n\t\tif len(returnAddresses) == wasmdebug.MaxFrames {\n\t\t\tbreak\n\t\t}\n\t}\n\treturn returnAddresses\n}\n\n// GoCallStackView implements wazevo.goCallStackView.\nfunc GoCallStackView(stackPointerBeforeGoCall *uint64) []uint64 {\n\t//                  (high address)\n\t//              +-----------------+ <----+\n\t//              |   xxxxxxxxxxx   |      | ;; optional unused space to make it 16-byte aligned.\n\t//           ^  |  arg[N]/ret[M]  |      |\n\t// sliceSize |  |  ............   |      | sliceSize\n\t//           |  |  arg[1]/ret[1]  |      |\n\t//           v  |  arg[0]/ret[0]  | <----+\n\t//              |    sliceSize    |\n\t//              |   frame_size    |\n\t//              +-----------------+ <---- stackPointerBeforeGoCall\n\t//                 (low address)\n\tptr := unsafe.Pointer(stackPointerBeforeGoCall)\n\tdata := (*uint64)(unsafe.Add(ptr, 16)) // skips the (frame_size, sliceSize).\n\tsize := *(*uint64)(unsafe.Add(ptr, 8))\n\treturn unsafe.Slice(data, size)\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/machine.go",
    "content": "package backend\n\nimport (\n\t\"context\"\n\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/backend/regalloc\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/ssa\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi\"\n)\n\ntype (\n\t// Machine is a backend for a specific ISA machine.\n\tMachine interface {\n\t\t// StartLoweringFunction is called when the compilation of the given function is started.\n\t\t// The maxBlockID is the maximum ssa.BasicBlockID in the function.\n\t\tStartLoweringFunction(maxBlockID ssa.BasicBlockID)\n\n\t\t// LinkAdjacentBlocks is called after finished lowering all blocks in order to create one single instruction list.\n\t\tLinkAdjacentBlocks(prev, next ssa.BasicBlock)\n\n\t\t// StartBlock is called when the compilation of the given block is started.\n\t\t// The order of this being called is the reverse post order of the ssa.BasicBlock(s) as we iterate with\n\t\t// ssa.Builder BlockIteratorReversePostOrderBegin and BlockIteratorReversePostOrderEnd.\n\t\tStartBlock(ssa.BasicBlock)\n\n\t\t// EndBlock is called when the compilation of the current block is finished.\n\t\tEndBlock()\n\n\t\t// FlushPendingInstructions flushes the pending instructions to the buffer.\n\t\t// This will be called after the lowering of each SSA Instruction.\n\t\tFlushPendingInstructions()\n\n\t\t// DisableStackCheck disables the stack check for the current compilation for debugging/testing.\n\t\tDisableStackCheck()\n\n\t\t// SetCurrentABI initializes the FunctionABI for the given signature.\n\t\tSetCurrentABI(abi *FunctionABI)\n\n\t\t// SetCompiler sets the compilation context used for the lifetime of Machine.\n\t\t// This is only called once per Machine, i.e. before the first compilation.\n\t\tSetCompiler(Compiler)\n\n\t\t// LowerSingleBranch is called when the compilation of the given single branch is started.\n\t\tLowerSingleBranch(b *ssa.Instruction)\n\n\t\t// LowerConditionalBranch is called when the compilation of the given conditional branch is started.\n\t\tLowerConditionalBranch(b *ssa.Instruction)\n\n\t\t// LowerInstr is called for each instruction in the given block except for the ones marked as already lowered\n\t\t// via Compiler.MarkLowered. The order is reverse, i.e. from the last instruction to the first one.\n\t\t//\n\t\t// Note: this can lower multiple instructions (which produce the inputs) at once whenever it's possible\n\t\t// for optimization.\n\t\tLowerInstr(*ssa.Instruction)\n\n\t\t// Reset resets the machine state for the next compilation.\n\t\tReset()\n\n\t\t// InsertMove inserts a move instruction from src to dst whose type is typ.\n\t\tInsertMove(dst, src regalloc.VReg, typ ssa.Type)\n\n\t\t// InsertReturn inserts the return instruction to return from the current function.\n\t\tInsertReturn()\n\n\t\t// InsertLoadConstantBlockArg inserts the instruction(s) to load the constant value into the given regalloc.VReg.\n\t\tInsertLoadConstantBlockArg(instr *ssa.Instruction, vr regalloc.VReg)\n\n\t\t// Format returns the string representation of the currently compiled machine code.\n\t\t// This is only for testing purpose.\n\t\tFormat() string\n\n\t\t// RegAlloc does the register allocation after lowering.\n\t\tRegAlloc()\n\n\t\t// PostRegAlloc does the post register allocation, e.g. setting up prologue/epilogue, redundant move elimination, etc.\n\t\tPostRegAlloc()\n\n\t\t// ResolveRelocations resolves the relocations after emitting machine code.\n\t\t//  * refToBinaryOffset: the map from the function reference (ssa.FuncRef) to the executable offset.\n\t\t//  * importedFns: the max index of the imported functions at the beginning of refToBinaryOffset\n\t\t//  * executable: the binary to resolve the relocations.\n\t\t//  * relocations: the relocations to resolve.\n\t\t//  * callTrampolineIslandOffsets: the offsets of the trampoline islands in the executable.\n\t\tResolveRelocations(\n\t\t\trefToBinaryOffset []int,\n\t\t\timportedFns int,\n\t\t\texecutable []byte,\n\t\t\trelocations []RelocationInfo,\n\t\t\tcallTrampolineIslandOffsets []int,\n\t\t)\n\n\t\t// Encode encodes the machine instructions to the Compiler.\n\t\tEncode(ctx context.Context) error\n\n\t\t// CompileGoFunctionTrampoline compiles the trampoline function  to call a Go function of the given exit code and signature.\n\t\tCompileGoFunctionTrampoline(exitCode wazevoapi.ExitCode, sig *ssa.Signature, needModuleContextPtr bool) []byte\n\n\t\t// CompileStackGrowCallSequence returns the sequence of instructions shared by all functions to\n\t\t// call the stack grow builtin function.\n\t\tCompileStackGrowCallSequence() []byte\n\n\t\t// CompileEntryPreamble returns the sequence of instructions shared by multiple functions to\n\t\t// enter the function from Go.\n\t\tCompileEntryPreamble(signature *ssa.Signature) []byte\n\n\t\t// LowerParams lowers the given parameters.\n\t\tLowerParams(params []ssa.Value)\n\n\t\t// LowerReturns lowers the given returns.\n\t\tLowerReturns(returns []ssa.Value)\n\n\t\t// ArgsResultsRegs returns the registers used for arguments and return values.\n\t\tArgsResultsRegs() (argResultInts, argResultFloats []regalloc.RealReg)\n\n\t\t// CallTrampolineIslandInfo returns the interval of the offset where the trampoline island is placed, and\n\t\t// the size of the trampoline island. If islandSize is zero, the trampoline island is not used on this machine.\n\t\tCallTrampolineIslandInfo(numFunctions int) (interval, islandSize int, err error)\n\t}\n)\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/regalloc/api.go",
    "content": "package regalloc\n\nimport \"fmt\"\n\n// These interfaces are implemented by ISA-specific backends to abstract away the details, and allow the register\n// allocators to work on any ISA.\n\ntype (\n\t// Function is the top-level interface to do register allocation, which corresponds to a CFG containing\n\t// Blocks(s).\n\t//\n\t// I is the type of the instruction, and B is the type of the basic block.\n\tFunction[I Instr, B Block[I]] interface {\n\t\t// PostOrderBlockIteratorBegin returns the first block in the post-order traversal of the CFG.\n\t\t// In other words, the last blocks in the CFG will be returned first.\n\t\tPostOrderBlockIteratorBegin() B\n\t\t// PostOrderBlockIteratorNext returns the next block in the post-order traversal of the CFG.\n\t\tPostOrderBlockIteratorNext() B\n\t\t// ReversePostOrderBlockIteratorBegin returns the first block in the reverse post-order traversal of the CFG.\n\t\t// In other words, the first blocks in the CFG will be returned first.\n\t\tReversePostOrderBlockIteratorBegin() B\n\t\t// ReversePostOrderBlockIteratorNext returns the next block in the reverse post-order traversal of the CFG.\n\t\tReversePostOrderBlockIteratorNext() B\n\t\t// ClobberedRegisters tell the clobbered registers by this function.\n\t\tClobberedRegisters([]VReg)\n\t\t// LoopNestingForestRoots returns the number of roots of the loop nesting forest in a function.\n\t\tLoopNestingForestRoots() int\n\t\t// LoopNestingForestRoot returns the i-th root of the loop nesting forest in a function.\n\t\tLoopNestingForestRoot(i int) B\n\t\t// LowestCommonAncestor returns the lowest common ancestor of two blocks in the dominator tree.\n\t\tLowestCommonAncestor(blk1, blk2 B) B\n\t\t// Idom returns the immediate dominator of the given block.\n\t\tIdom(blk B) B\n\n\t\t// LoopNestingForestChild returns the i-th child of the block in the loop nesting forest.\n\t\tLoopNestingForestChild(b B, i int) B\n\t\t// Pred returns the i-th predecessor of the block in the CFG.\n\t\tPred(b B, i int) B\n\t\t// Succ returns the i-th successor of the block in the CFG.\n\t\tSucc(b B, i int) B\n\t\t// BlockParams returns the virtual registers used as the parameters of this block.\n\t\tBlockParams(B, *[]VReg) []VReg\n\n\t\t// Followings are for rewriting the function.\n\n\t\t// SwapBefore swaps the two virtual registers at the end of the given block.\n\t\tSwapBefore(x1, x2, tmp VReg, instr I)\n\t\t// StoreRegisterBefore inserts store instruction(s) before the given instruction for the given virtual register.\n\t\tStoreRegisterBefore(v VReg, instr I)\n\t\t// StoreRegisterAfter inserts store instruction(s) after the given instruction for the given virtual register.\n\t\tStoreRegisterAfter(v VReg, instr I)\n\t\t// ReloadRegisterBefore inserts reload instruction(s) before the given instruction for the given virtual register.\n\t\tReloadRegisterBefore(v VReg, instr I)\n\t\t// ReloadRegisterAfter inserts reload instruction(s) after the given instruction for the given virtual register.\n\t\tReloadRegisterAfter(v VReg, instr I)\n\t\t// InsertMoveBefore inserts move instruction(s) before the given instruction for the given virtual registers.\n\t\tInsertMoveBefore(dst, src VReg, instr I)\n\t}\n\n\t// Block is a basic block in the CFG of a function, and it consists of multiple instructions, and predecessor Block(s).\n\t// Right now, this corresponds to a ssa.BasicBlock lowered to the machine level.\n\tBlock[I Instr] interface {\n\t\tcomparable\n\t\t// ID returns the unique identifier of this block which is ordered in the reverse post-order traversal of the CFG.\n\t\tID() int32\n\t\t// InstrIteratorBegin returns the first instruction in this block. Instructions added after lowering must be skipped.\n\t\t// Note: multiple Instr(s) will not be held at the same time, so it's safe to use the same impl for the return Instr.\n\t\tInstrIteratorBegin() I\n\t\t// InstrIteratorNext returns the next instruction in this block. Instructions added after lowering must be skipped.\n\t\t// Note: multiple Instr(s) will not be held at the same time, so it's safe to use the same impl for the return Instr.\n\t\tInstrIteratorNext() I\n\t\t// InstrRevIteratorBegin is the same as InstrIteratorBegin, but in the reverse order.\n\t\tInstrRevIteratorBegin() I\n\t\t// InstrRevIteratorNext is the same as InstrIteratorNext, but in the reverse order.\n\t\tInstrRevIteratorNext() I\n\t\t// FirstInstr returns the fist instruction in this block where instructions will be inserted after it.\n\t\tFirstInstr() I\n\t\t// LastInstrForInsertion returns the last instruction in this block where instructions will be inserted before it.\n\t\t// Such insertions only happen when we need to insert spill/reload instructions to adjust the merge edges.\n\t\t// At the time of register allocation, all the critical edges are already split, so there is no need\n\t\t// to worry about the case where branching instruction has multiple successors.\n\t\t// Therefore, usually, it is the nop instruction, but if the block ends with an unconditional branching, then it returns\n\t\t// the unconditional branch, not the nop. In other words it is either nop or unconditional branch.\n\t\tLastInstrForInsertion() I\n\t\t// Preds returns the number of predecessors of this block in the CFG.\n\t\tPreds() int\n\t\t// Entry returns true if the block is for the entry block.\n\t\tEntry() bool\n\t\t// Succs returns the number of successors of this block in the CFG.\n\t\tSuccs() int\n\t\t// LoopHeader returns true if this block is a loop header.\n\t\tLoopHeader() bool\n\t\t// LoopNestingForestChildren returns the number of children of this block in the loop nesting forest.\n\t\tLoopNestingForestChildren() int\n\t}\n\n\t// Instr is an instruction in a block, abstracting away the underlying ISA.\n\tInstr interface {\n\t\tcomparable\n\t\tfmt.Stringer\n\t\t// Defs returns the virtual registers defined by this instruction.\n\t\tDefs(*[]VReg) []VReg\n\t\t// Uses returns the virtual registers used by this instruction.\n\t\t// Note: multiple returned []VReg will not be held at the same time, so it's safe to use the same slice for this.\n\t\tUses(*[]VReg) []VReg\n\t\t// AssignUse assigns the RealReg-allocated virtual register used by this instruction at the given index.\n\t\tAssignUse(index int, v VReg)\n\t\t// AssignDef assigns a RealReg-allocated virtual register defined by this instruction.\n\t\t// This only accepts one register because we don't allocate registers for multi-def instructions (i.e. call instruction)\n\t\tAssignDef(VReg)\n\t\t// IsCopy returns true if this instruction is a move instruction between two registers.\n\t\t// If true, the instruction is of the form of dst = src, and if the src and dst do not interfere with each other,\n\t\t// we could coalesce them, and hence the copy can be eliminated from the final code.\n\t\tIsCopy() bool\n\t\t// IsCall returns true if this instruction is a call instruction. The result is used to insert\n\t\t// caller saved register spills and restores.\n\t\tIsCall() bool\n\t\t// IsIndirectCall returns true if this instruction is an indirect call instruction which calls a function pointer.\n\t\t//  The result is used to insert caller saved register spills and restores.\n\t\tIsIndirectCall() bool\n\t\t// IsReturn returns true if this instruction is a return instruction.\n\t\tIsReturn() bool\n\t}\n)\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/regalloc/reg.go",
    "content": "package regalloc\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/ssa\"\n)\n\n// VReg represents a register which is assigned to an SSA value. This is used to represent a register in the backend.\n// A VReg may or may not be a physical register, and the info of physical register can be obtained by RealReg.\ntype VReg uint64\n\n// VRegID is the lower 32bit of VReg, which is the pure identifier of VReg without RealReg info.\ntype VRegID uint32\n\n// RealReg returns the RealReg of this VReg.\nfunc (v VReg) RealReg() RealReg {\n\treturn RealReg(v >> 32)\n}\n\n// IsRealReg returns true if this VReg is backed by a physical register.\nfunc (v VReg) IsRealReg() bool {\n\treturn v.RealReg() != RealRegInvalid\n}\n\n// FromRealReg returns a VReg from the given RealReg and RegType.\n// This is used to represent a specific pre-colored register in the backend.\nfunc FromRealReg(r RealReg, typ RegType) VReg {\n\trid := VRegID(r)\n\tif rid > vRegIDReservedForRealNum {\n\t\tpanic(fmt.Sprintf(\"invalid real reg %d\", r))\n\t}\n\treturn VReg(r).SetRealReg(r).SetRegType(typ)\n}\n\n// SetRealReg sets the RealReg of this VReg and returns the updated VReg.\nfunc (v VReg) SetRealReg(r RealReg) VReg {\n\treturn VReg(r)<<32 | (v & 0xff_00_ffffffff)\n}\n\n// RegType returns the RegType of this VReg.\nfunc (v VReg) RegType() RegType {\n\treturn RegType(v >> 40)\n}\n\n// SetRegType sets the RegType of this VReg and returns the updated VReg.\nfunc (v VReg) SetRegType(t RegType) VReg {\n\treturn VReg(t)<<40 | (v & 0x00_ff_ffffffff)\n}\n\n// ID returns the VRegID of this VReg.\nfunc (v VReg) ID() VRegID {\n\treturn VRegID(v & 0xffffffff)\n}\n\n// Valid returns true if this VReg is Valid.\nfunc (v VReg) Valid() bool {\n\treturn v.ID() != vRegIDInvalid && v.RegType() != RegTypeInvalid\n}\n\n// RealReg represents a physical register.\ntype RealReg byte\n\nconst RealRegInvalid RealReg = 0\n\nconst (\n\tvRegIDInvalid            VRegID = 1 << 31\n\tVRegIDNonReservedBegin          = vRegIDReservedForRealNum\n\tvRegIDReservedForRealNum VRegID = 128\n\tVRegInvalid                     = VReg(vRegIDInvalid)\n)\n\n// String implements fmt.Stringer.\nfunc (r RealReg) String() string {\n\tswitch r {\n\tcase RealRegInvalid:\n\t\treturn \"invalid\"\n\tdefault:\n\t\treturn fmt.Sprintf(\"r%d\", r)\n\t}\n}\n\n// String implements fmt.Stringer.\nfunc (v VReg) String() string {\n\tif v.IsRealReg() {\n\t\treturn fmt.Sprintf(\"r%d\", v.ID())\n\t}\n\treturn fmt.Sprintf(\"v%d?\", v.ID())\n}\n\n// RegType represents the type of a register.\ntype RegType byte\n\nconst (\n\tRegTypeInvalid RegType = iota\n\tRegTypeInt\n\tRegTypeFloat\n\tNumRegType\n)\n\n// String implements fmt.Stringer.\nfunc (r RegType) String() string {\n\tswitch r {\n\tcase RegTypeInt:\n\t\treturn \"int\"\n\tcase RegTypeFloat:\n\t\treturn \"float\"\n\tdefault:\n\t\treturn \"invalid\"\n\t}\n}\n\n// RegTypeOf returns the RegType of the given ssa.Type.\nfunc RegTypeOf(p ssa.Type) RegType {\n\tswitch p {\n\tcase ssa.TypeI32, ssa.TypeI64:\n\t\treturn RegTypeInt\n\tcase ssa.TypeF32, ssa.TypeF64, ssa.TypeV128:\n\t\treturn RegTypeFloat\n\tdefault:\n\t\tpanic(\"invalid type\")\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/regalloc/regalloc.go",
    "content": "// Package regalloc performs register allocation. The algorithm can work on any ISA by implementing the interfaces in\n// api.go.\n//\n// References:\n//   - https://web.stanford.edu/class/archive/cs/cs143/cs143.1128/lectures/17/Slides17.pdf\n//   - https://en.wikipedia.org/wiki/Chaitin%27s_algorithm\n//   - https://llvm.org/ProjectsWithLLVM/2004-Fall-CS426-LS.pdf\n//   - https://pfalcon.github.io/ssabook/latest/book-full.pdf: Chapter 9. for liveness analysis.\n//   - https://github.com/golang/go/blob/release-branch.go1.21/src/cmd/compile/internal/ssa/regalloc.go\npackage regalloc\n\nimport (\n\t\"fmt\"\n\t\"math\"\n\t\"strings\"\n\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi\"\n)\n\n// NewAllocator returns a new Allocator.\nfunc NewAllocator[I Instr, B Block[I], F Function[I, B]](allocatableRegs *RegisterInfo) Allocator[I, B, F] {\n\ta := Allocator[I, B, F]{\n\t\tregInfo:            allocatableRegs,\n\t\tphiDefInstListPool: wazevoapi.NewPool[phiDefInstList[I]](resetPhiDefInstList[I]),\n\t\tblockStates:        wazevoapi.NewIDedPool[blockState[I, B, F]](resetBlockState[I, B, F]),\n\t}\n\ta.state.vrStates = wazevoapi.NewIDedPool[vrState[I, B, F]](resetVrState[I, B, F])\n\ta.state.reset()\n\tfor _, regs := range allocatableRegs.AllocatableRegisters {\n\t\tfor _, r := range regs {\n\t\t\ta.allocatableSet = a.allocatableSet.add(r)\n\t\t}\n\t}\n\treturn a\n}\n\ntype (\n\t// RegisterInfo holds the statically-known ISA-specific register information.\n\tRegisterInfo struct {\n\t\t// AllocatableRegisters is a 2D array of allocatable RealReg, indexed by regTypeNum and regNum.\n\t\t// The order matters: the first element is the most preferred one when allocating.\n\t\tAllocatableRegisters [NumRegType][]RealReg\n\t\tCalleeSavedRegisters RegSet\n\t\tCallerSavedRegisters RegSet\n\t\tRealRegToVReg        []VReg\n\t\t// RealRegName returns the name of the given RealReg for debugging.\n\t\tRealRegName func(r RealReg) string\n\t\tRealRegType func(r RealReg) RegType\n\t}\n\n\t// Allocator is a register allocator.\n\tAllocator[I Instr, B Block[I], F Function[I, B]] struct {\n\t\t// regInfo is static per ABI/ISA, and is initialized by the machine during Machine.PrepareRegisterAllocator.\n\t\tregInfo *RegisterInfo\n\t\t// allocatableSet is a set of allocatable RealReg derived from regInfo. Static per ABI/ISA.\n\t\tallocatableSet           RegSet\n\t\tallocatedCalleeSavedRegs []VReg\n\t\tvs                       []VReg\n\t\tss                       []*vrState[I, B, F]\n\t\tcopies                   []_copy[I, B, F]\n\t\tphiDefInstListPool       wazevoapi.Pool[phiDefInstList[I]]\n\n\t\t// Followings are re-used during various places.\n\t\tblks  []B\n\t\treals []RealReg\n\n\t\t// Following two fields are updated while iterating the blocks in the reverse postorder.\n\t\tstate       state[I, B, F]\n\t\tblockStates wazevoapi.IDedPool[blockState[I, B, F]]\n\t}\n\n\t// _copy represents a source and destination pair of a copy instruction.\n\t_copy[I Instr, B Block[I], F Function[I, B]] struct {\n\t\tsrc   *vrState[I, B, F]\n\t\tdstID VRegID\n\t}\n\n\t// programCounter represents an opaque index into the program which is used to represents a LiveInterval of a VReg.\n\tprogramCounter int32\n\n\tstate[I Instr, B Block[I], F Function[I, B]] struct {\n\t\targRealRegs []VReg\n\t\tregsInUse   regInUseSet[I, B, F]\n\t\tvrStates    wazevoapi.IDedPool[vrState[I, B, F]]\n\n\t\tcurrentBlockID int32\n\n\t\t// allocatedRegSet is a set of RealReg that are allocated during the allocation phase. This is reset per function.\n\t\tallocatedRegSet RegSet\n\t}\n\n\tblockState[I Instr, B Block[I], F Function[I, B]] struct {\n\t\t// liveIns is a list of VReg that are live at the beginning of the block.\n\t\tliveIns []*vrState[I, B, F]\n\t\t// seen is true if the block is visited during the liveness analysis.\n\t\tseen bool\n\t\t// visited is true if the block is visited during the allocation phase.\n\t\tvisited            bool\n\t\tstartFromPredIndex int\n\t\t// startRegs is a list of RealReg that are used at the beginning of the block. This is used to fix the merge edges.\n\t\tstartRegs regInUseSet[I, B, F]\n\t\t// endRegs is a list of RealReg that are used at the end of the block. This is used to fix the merge edges.\n\t\tendRegs regInUseSet[I, B, F]\n\t}\n\n\tvrState[I Instr, B Block[I], f Function[I, B]] struct {\n\t\tv VReg\n\t\tr RealReg\n\t\t// defInstr is the instruction that defines this value. If this is the phi value and not the entry block, this is nil.\n\t\tdefInstr I\n\t\t// defBlk is the block that defines this value. If this is the phi value, this is the block whose arguments contain this value.\n\t\tdefBlk B\n\t\t// lca = lowest common ancestor. This is the block that is the lowest common ancestor of all the blocks that\n\t\t// reloads this value. This is used to determine the spill location. Only valid if spilled=true.\n\t\tlca B\n\t\t// lastUse is the program counter of the last use of this value. This changes while iterating the block, and\n\t\t// should not be used across the blocks as it becomes invalid. To check the validity, use lastUseUpdatedAtBlockID.\n\t\tlastUse                 programCounter\n\t\tlastUseUpdatedAtBlockID int32\n\t\t// spilled is true if this value is spilled i.e. the value is reload from the stack somewhere in the program.\n\t\t//\n\t\t// Note that this field is used during liveness analysis for different purpose. This is used to determine the\n\t\t// value is live-in or not.\n\t\tspilled bool\n\t\t// isPhi is true if this is a phi value.\n\t\tisPhi      bool\n\t\tdesiredLoc desiredLoc\n\t\t// phiDefInstList is a list of instructions that defines this phi value.\n\t\t// This is used to determine the spill location, and only valid if isPhi=true.\n\t\t*phiDefInstList[I]\n\t}\n\n\t// phiDefInstList is a linked list of instructions that defines a phi value.\n\tphiDefInstList[I Instr] struct {\n\t\tinstr I\n\t\tv     VReg\n\t\tnext  *phiDefInstList[I]\n\t}\n\n\t// desiredLoc represents a desired location for a VReg.\n\tdesiredLoc uint16\n\t// desiredLocKind is a kind of desired location for a VReg.\n\tdesiredLocKind uint16\n)\n\nconst (\n\t// desiredLocKindUnspecified is a kind of desired location for a VReg that is not specified.\n\tdesiredLocKindUnspecified desiredLocKind = iota\n\t// desiredLocKindStack is a kind of desired location for a VReg that is on the stack, only used for the phi values.\n\tdesiredLocKindStack\n\t// desiredLocKindReg is a kind of desired location for a VReg that is in a register.\n\tdesiredLocKindReg\n\tdesiredLocUnspecified = desiredLoc(desiredLocKindUnspecified)\n\tdesiredLocStack       = desiredLoc(desiredLocKindStack)\n)\n\nfunc newDesiredLocReg(r RealReg) desiredLoc {\n\treturn desiredLoc(desiredLocKindReg) | desiredLoc(r<<2)\n}\n\nfunc (d desiredLoc) realReg() RealReg {\n\treturn RealReg(d >> 2)\n}\n\nfunc (d desiredLoc) stack() bool {\n\treturn d&3 == desiredLoc(desiredLocKindStack)\n}\n\nfunc resetPhiDefInstList[I Instr](l *phiDefInstList[I]) {\n\tvar nilInstr I\n\tl.instr = nilInstr\n\tl.next = nil\n\tl.v = VRegInvalid\n}\n\nfunc (s *state[I, B, F]) dump(info *RegisterInfo) { //nolint:unused\n\tfmt.Println(\"\\t\\tstate:\")\n\tfmt.Println(\"\\t\\t\\targRealRegs:\", s.argRealRegs)\n\tfmt.Println(\"\\t\\t\\tregsInUse\", s.regsInUse.format(info))\n\tfmt.Println(\"\\t\\t\\tallocatedRegSet:\", s.allocatedRegSet.format(info))\n\tfmt.Println(\"\\t\\t\\tused:\", s.regsInUse.format(info))\n\tvar strs []string\n\tfor i := 0; i <= s.vrStates.MaxIDEncountered(); i++ {\n\t\tvs := s.vrStates.Get(i)\n\t\tif vs == nil {\n\t\t\tcontinue\n\t\t}\n\t\tif vs.r != RealRegInvalid {\n\t\t\tstrs = append(strs, fmt.Sprintf(\"(v%d: %s)\", vs.v.ID(), info.RealRegName(vs.r)))\n\t\t}\n\t}\n\tfmt.Println(\"\\t\\t\\tvrStates:\", strings.Join(strs, \", \"))\n}\n\nfunc (s *state[I, B, F]) reset() {\n\ts.argRealRegs = s.argRealRegs[:0]\n\ts.vrStates.Reset()\n\ts.allocatedRegSet = RegSet(0)\n\ts.regsInUse.reset()\n\ts.currentBlockID = -1\n}\n\nfunc resetVrState[I Instr, B Block[I], F Function[I, B]](vs *vrState[I, B, F]) {\n\tvs.v = VRegInvalid\n\tvs.r = RealRegInvalid\n\tvar nilInstr I\n\tvs.defInstr = nilInstr\n\tvar nilBlk B\n\tvs.defBlk = nilBlk\n\tvs.spilled = false\n\tvs.lastUse = -1\n\tvs.lastUseUpdatedAtBlockID = -1\n\tvs.lca = nilBlk\n\tvs.isPhi = false\n\tvs.phiDefInstList = nil\n\tvs.desiredLoc = desiredLocUnspecified\n}\n\nfunc (s *state[I, B, F]) getOrAllocateVRegState(v VReg) *vrState[I, B, F] {\n\tst := s.vrStates.GetOrAllocate(int(v.ID()))\n\tif st.v == VRegInvalid {\n\t\tst.v = v\n\t}\n\treturn st\n}\n\nfunc (s *state[I, B, F]) getVRegState(v VRegID) *vrState[I, B, F] {\n\treturn s.vrStates.Get(int(v))\n}\n\nfunc (s *state[I, B, F]) useRealReg(r RealReg, vr *vrState[I, B, F]) {\n\ts.regsInUse.add(r, vr)\n\tvr.r = r\n\ts.allocatedRegSet = s.allocatedRegSet.add(r)\n}\n\nfunc (s *state[I, B, F]) releaseRealReg(r RealReg) {\n\tcurrent := s.regsInUse.get(r)\n\tif current != nil {\n\t\ts.regsInUse.remove(r)\n\t\tcurrent.r = RealRegInvalid\n\t}\n}\n\n// recordReload records that the given VReg is reloaded in the given block.\n// This is used to determine the spill location by tracking the lowest common ancestor of all the blocks that reloads the value.\nfunc (vs *vrState[I, B, F]) recordReload(f F, blk B) {\n\tvs.spilled = true\n\tvar nilBlk B\n\tif lca := vs.lca; lca == nilBlk {\n\t\tif wazevoapi.RegAllocLoggingEnabled {\n\t\t\tfmt.Printf(\"\\t\\tv%d is reloaded in blk%d,\\n\", vs.v.ID(), blk.ID())\n\t\t}\n\t\tvs.lca = blk\n\t} else if lca != blk {\n\t\tif wazevoapi.RegAllocLoggingEnabled {\n\t\t\tfmt.Printf(\"\\t\\tv%d is reloaded in blk%d, lca=%d\\n\", vs.v.ID(), blk.ID(), vs.lca.ID())\n\t\t}\n\t\tvs.lca = f.LowestCommonAncestor(lca, blk)\n\t\tif wazevoapi.RegAllocLoggingEnabled {\n\t\t\tfmt.Printf(\"updated lca=%d\\n\", vs.lca.ID())\n\t\t}\n\t}\n}\n\nfunc (a *Allocator[I, B, F]) findOrSpillAllocatable(s *state[I, B, F], allocatable []RealReg, forbiddenMask RegSet, preferred RealReg) (r RealReg) {\n\tr = RealRegInvalid\n\t// First, check if the preferredMask has any allocatable register.\n\tif preferred != RealRegInvalid && !forbiddenMask.has(preferred) && !s.regsInUse.has(preferred) {\n\t\treturn preferred\n\t}\n\n\tvar lastUseAt programCounter\n\tvar spillVReg VReg\n\tfor _, candidateReal := range allocatable {\n\t\tif forbiddenMask.has(candidateReal) {\n\t\t\tcontinue\n\t\t}\n\n\t\tusing := s.regsInUse.get(candidateReal)\n\t\tif using == nil {\n\t\t\t// This is not used at this point.\n\t\t\treturn candidateReal\n\t\t}\n\n\t\t// Real registers in use should not be spilled, so we skip them.\n\t\t// For example, if the register is used as an argument register, and it might be\n\t\t// spilled and not reloaded when it ends up being used as a temporary to pass\n\t\t// stack based argument.\n\t\tif using.v.IsRealReg() {\n\t\t\tcontinue\n\t\t}\n\n\t\tisPreferred := candidateReal == preferred\n\n\t\t// last == -1 means the value won't be used anymore.\n\t\tif last := using.lastUse; r == RealRegInvalid || isPreferred || last == -1 || (lastUseAt != -1 && last > lastUseAt) {\n\t\t\tlastUseAt = last\n\t\t\tr = candidateReal\n\t\t\tspillVReg = using.v\n\t\t\tif isPreferred {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\n\tif r == RealRegInvalid {\n\t\tpanic(\"not found any allocatable register\")\n\t}\n\n\tif wazevoapi.RegAllocLoggingEnabled {\n\t\tfmt.Printf(\"\\tspilling v%d when lastUseAt=%d and regsInUse=%s\\n\", spillVReg.ID(), lastUseAt, s.regsInUse.format(a.regInfo))\n\t}\n\ts.releaseRealReg(r)\n\treturn r\n}\n\nfunc (s *state[I, B, F]) findAllocatable(allocatable []RealReg, forbiddenMask RegSet) RealReg {\n\tfor _, r := range allocatable {\n\t\tif !s.regsInUse.has(r) && !forbiddenMask.has(r) {\n\t\t\treturn r\n\t\t}\n\t}\n\treturn RealRegInvalid\n}\n\nfunc (s *state[I, B, F]) resetAt(bs *blockState[I, B, F]) {\n\ts.regsInUse.range_(func(_ RealReg, vs *vrState[I, B, F]) {\n\t\tvs.r = RealRegInvalid\n\t})\n\ts.regsInUse.reset()\n\tbs.endRegs.range_(func(r RealReg, vs *vrState[I, B, F]) {\n\t\tif vs.lastUseUpdatedAtBlockID == s.currentBlockID && vs.lastUse == programCounterLiveIn {\n\t\t\ts.regsInUse.add(r, vs)\n\t\t\tvs.r = r\n\t\t}\n\t})\n}\n\nfunc resetBlockState[I Instr, B Block[I], F Function[I, B]](b *blockState[I, B, F]) {\n\tb.seen = false\n\tb.visited = false\n\tb.endRegs.reset()\n\tb.startRegs.reset()\n\tb.startFromPredIndex = -1\n\tb.liveIns = b.liveIns[:0]\n}\n\nfunc (b *blockState[I, B, F]) dump(a *RegisterInfo) {\n\tfmt.Println(\"\\t\\tblockState:\")\n\tfmt.Println(\"\\t\\t\\tstartRegs:\", b.startRegs.format(a))\n\tfmt.Println(\"\\t\\t\\tendRegs:\", b.endRegs.format(a))\n\tfmt.Println(\"\\t\\t\\tstartFromPredIndex:\", b.startFromPredIndex)\n\tfmt.Println(\"\\t\\t\\tvisited:\", b.visited)\n}\n\n// DoAllocation performs register allocation on the given Function.\nfunc (a *Allocator[I, B, F]) DoAllocation(f F) {\n\ta.livenessAnalysis(f)\n\ta.alloc(f)\n\ta.determineCalleeSavedRealRegs(f)\n}\n\nfunc (a *Allocator[I, B, F]) determineCalleeSavedRealRegs(f F) {\n\ta.allocatedCalleeSavedRegs = a.allocatedCalleeSavedRegs[:0]\n\ta.state.allocatedRegSet.Range(func(allocatedRealReg RealReg) {\n\t\tif a.regInfo.CalleeSavedRegisters.has(allocatedRealReg) {\n\t\t\ta.allocatedCalleeSavedRegs = append(a.allocatedCalleeSavedRegs, a.regInfo.RealRegToVReg[allocatedRealReg])\n\t\t}\n\t})\n\tf.ClobberedRegisters(a.allocatedCalleeSavedRegs)\n}\n\nfunc (a *Allocator[I, B, F]) getOrAllocateBlockState(blockID int32) *blockState[I, B, F] {\n\treturn a.blockStates.GetOrAllocate(int(blockID))\n}\n\n// phiBlk returns the block that defines the given phi value, nil otherwise.\nfunc (vs *vrState[I, B, F]) phiBlk() B {\n\tif vs.isPhi {\n\t\treturn vs.defBlk\n\t}\n\tvar nilBlk B\n\treturn nilBlk\n}\n\nconst (\n\tprogramCounterLiveIn  = math.MinInt32\n\tprogramCounterLiveOut = math.MaxInt32\n)\n\n// liveAnalysis constructs Allocator.blockLivenessData.\n// The algorithm here is described in https://pfalcon.github.io/ssabook/latest/book-full.pdf Chapter 9.2.\nfunc (a *Allocator[I, B, F]) livenessAnalysis(f F) {\n\ts := &a.state\n\n\tfor i := VRegID(0); i < vRegIDReservedForRealNum; i++ {\n\t\ts.getOrAllocateVRegState(VReg(i).SetRealReg(RealReg(i)))\n\t}\n\n\tvar nilBlk B\n\tvar nilInstr I\n\tfor blk := f.PostOrderBlockIteratorBegin(); blk != nilBlk; blk = f.PostOrderBlockIteratorNext() {\n\t\t// We should gather phi value data.\n\t\tfor _, p := range f.BlockParams(blk, &a.vs) {\n\t\t\tvs := s.getOrAllocateVRegState(p)\n\t\t\tvs.isPhi = true\n\t\t\tvs.defBlk = blk\n\t\t}\n\n\t\tblkID := blk.ID()\n\t\tinfo := a.getOrAllocateBlockState(blkID)\n\n\t\ta.ss = a.ss[:0]\n\t\tconst (\n\t\t\tflagDeleted = false\n\t\t\tflagLive    = true\n\t\t)\n\t\tns := blk.Succs()\n\t\tfor i := 0; i < ns; i++ {\n\t\t\tsucc := f.Succ(blk, i)\n\t\t\tif succ == nilBlk {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tsuccID := succ.ID()\n\t\t\tsuccInfo := a.getOrAllocateBlockState(succID)\n\t\t\tif !succInfo.seen { // This means the back edge.\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tfor _, st := range succInfo.liveIns {\n\t\t\t\tif st.phiBlk() != succ && st.spilled != flagLive { //nolint:gosimple\n\t\t\t\t\t// We use .spilled field to store the flag.\n\t\t\t\t\tst.spilled = flagLive\n\t\t\t\t\ta.ss = append(a.ss, st)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor instr := blk.InstrRevIteratorBegin(); instr != nilInstr; instr = blk.InstrRevIteratorNext() {\n\n\t\t\tvar use, def VReg\n\t\t\tvar defIsPhi bool\n\t\t\tfor _, def = range instr.Defs(&a.vs) {\n\t\t\t\tif !def.IsRealReg() {\n\t\t\t\t\tst := s.getOrAllocateVRegState(def)\n\t\t\t\t\tdefIsPhi = st.isPhi\n\t\t\t\t\t// Note: We use .spilled field to store the flag.\n\t\t\t\t\tst.spilled = flagDeleted\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor _, use = range instr.Uses(&a.vs) {\n\t\t\t\tif !use.IsRealReg() {\n\t\t\t\t\tst := s.getOrAllocateVRegState(use)\n\t\t\t\t\t// Note: We use .spilled field to store the flag.\n\t\t\t\t\tif st.spilled != flagLive { //nolint:gosimple\n\t\t\t\t\t\tst.spilled = flagLive\n\t\t\t\t\t\ta.ss = append(a.ss, st)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif defIsPhi {\n\t\t\t\tif use.Valid() && use.IsRealReg() {\n\t\t\t\t\t// If the destination is a phi value, and the source is a real register, this is the beginning of the function.\n\t\t\t\t\ta.state.argRealRegs = append(a.state.argRealRegs, use)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor _, st := range a.ss {\n\t\t\t// We use .spilled field to store the flag.\n\t\t\tif st.spilled == flagLive { //nolint:gosimple\n\t\t\t\tinfo.liveIns = append(info.liveIns, st)\n\t\t\t\tst.spilled = false\n\t\t\t}\n\t\t}\n\n\t\tinfo.seen = true\n\t}\n\n\tnrs := f.LoopNestingForestRoots()\n\tfor i := 0; i < nrs; i++ {\n\t\troot := f.LoopNestingForestRoot(i)\n\t\ta.loopTreeDFS(f, root)\n\t}\n}\n\n// loopTreeDFS implements the Algorithm 9.3 in the book in an iterative way.\nfunc (a *Allocator[I, B, F]) loopTreeDFS(f F, entry B) {\n\ta.blks = a.blks[:0]\n\ta.blks = append(a.blks, entry)\n\n\tfor len(a.blks) > 0 {\n\t\ttail := len(a.blks) - 1\n\t\tloop := a.blks[tail]\n\t\ta.blks = a.blks[:tail]\n\t\ta.ss = a.ss[:0]\n\t\tconst (\n\t\t\tflagDone    = false\n\t\t\tflagPending = true\n\t\t)\n\t\tinfo := a.getOrAllocateBlockState(loop.ID())\n\t\tfor _, st := range info.liveIns {\n\t\t\tif st.phiBlk() != loop {\n\t\t\t\ta.ss = append(a.ss, st)\n\t\t\t\t// We use .spilled field to store the flag.\n\t\t\t\tst.spilled = flagPending\n\t\t\t}\n\t\t}\n\n\t\tvar siblingAddedView []*vrState[I, B, F]\n\t\tcn := loop.LoopNestingForestChildren()\n\t\tfor i := 0; i < cn; i++ {\n\t\t\tchild := f.LoopNestingForestChild(loop, i)\n\t\t\tchildID := child.ID()\n\t\t\tchildInfo := a.getOrAllocateBlockState(childID)\n\n\t\t\tif i == 0 {\n\t\t\t\tbegin := len(childInfo.liveIns)\n\t\t\t\tfor _, st := range a.ss {\n\t\t\t\t\t// We use .spilled field to store the flag.\n\t\t\t\t\tif st.spilled == flagPending { //nolint:gosimple\n\t\t\t\t\t\tst.spilled = flagDone\n\t\t\t\t\t\t// TODO: deduplicate, though I don't think it has much impact.\n\t\t\t\t\t\tchildInfo.liveIns = append(childInfo.liveIns, st)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tsiblingAddedView = childInfo.liveIns[begin:]\n\t\t\t} else {\n\t\t\t\t// TODO: deduplicate, though I don't think it has much impact.\n\t\t\t\tchildInfo.liveIns = append(childInfo.liveIns, siblingAddedView...)\n\t\t\t}\n\n\t\t\tif child.LoopHeader() {\n\t\t\t\ta.blks = append(a.blks, child)\n\t\t\t}\n\t\t}\n\n\t\tif cn == 0 {\n\t\t\t// If there's no forest child, we haven't cleared the .spilled field at this point.\n\t\t\tfor _, st := range a.ss {\n\t\t\t\tst.spilled = false\n\t\t\t}\n\t\t}\n\t}\n}\n\n// alloc allocates registers for the given function by iterating the blocks in the reverse postorder.\n// The algorithm here is derived from the Go compiler's allocator https://github.com/golang/go/blob/release-branch.go1.21/src/cmd/compile/internal/ssa/regalloc.go\n// In short, this is a simply linear scan register allocation where each block inherits the register allocation state from\n// one of its predecessors. Each block inherits the selected state and starts allocation from there.\n// If there's a discrepancy in the end states between predecessors, the adjustments are made to ensure consistency after allocation is done (which we call \"fixing merge state\").\n// The spill instructions (store into the dedicated slots) are inserted after all the allocations and fixing merge states. That is because\n// at the point, we all know where the reloads happen, and therefore we can know the best place to spill the values. More precisely,\n// the spill happens in the block that is the lowest common ancestor of all the blocks that reloads the value.\n//\n// All of these logics are almost the same as Go's compiler which has a dedicated description in the source file ^^.\nfunc (a *Allocator[I, B, F]) alloc(f F) {\n\t// First we allocate each block in the reverse postorder (at least one predecessor should be allocated for each block).\n\tvar nilBlk B\n\tfor blk := f.ReversePostOrderBlockIteratorBegin(); blk != nilBlk; blk = f.ReversePostOrderBlockIteratorNext() {\n\t\tif wazevoapi.RegAllocLoggingEnabled {\n\t\t\tfmt.Printf(\"========== allocating blk%d ========\\n\", blk.ID())\n\t\t}\n\t\tif blk.Entry() {\n\t\t\ta.finalizeStartReg(f, blk)\n\t\t}\n\t\ta.allocBlock(f, blk)\n\t}\n\t// After the allocation, we all know the start and end state of each block. So we can fix the merge states.\n\tfor blk := f.ReversePostOrderBlockIteratorBegin(); blk != nilBlk; blk = f.ReversePostOrderBlockIteratorNext() {\n\t\ta.fixMergeState(f, blk)\n\t}\n\t// Finally, we insert the spill instructions as we know all the places where the reloads happen.\n\ta.scheduleSpills(f)\n}\n\nfunc (a *Allocator[I, B, F]) updateLiveInVRState(liveness *blockState[I, B, F]) {\n\tcurrentBlockID := a.state.currentBlockID\n\tfor _, vs := range liveness.liveIns {\n\t\tvs.lastUse = programCounterLiveIn\n\t\tvs.lastUseUpdatedAtBlockID = currentBlockID\n\t}\n}\n\nfunc (a *Allocator[I, B, F]) finalizeStartReg(f F, blk B) {\n\tbID := blk.ID()\n\ts := &a.state\n\tcurrentBlkState := a.getOrAllocateBlockState(bID)\n\tif currentBlkState.startFromPredIndex > -1 {\n\t\treturn\n\t}\n\n\ts.currentBlockID = bID\n\ta.updateLiveInVRState(currentBlkState)\n\n\tpreds := blk.Preds()\n\tvar predState *blockState[I, B, F]\n\tswitch preds {\n\tcase 0: // This is the entry block.\n\tcase 1:\n\t\tpredID := f.Pred(blk, 0).ID()\n\t\tpredState = a.getOrAllocateBlockState(predID)\n\t\tcurrentBlkState.startFromPredIndex = 0\n\tdefault:\n\t\t// TODO: there should be some better heuristic to choose the predecessor.\n\t\tfor i := 0; i < preds; i++ {\n\t\t\tpredID := f.Pred(blk, i).ID()\n\t\t\tif _predState := a.getOrAllocateBlockState(predID); _predState.visited {\n\t\t\t\tpredState = _predState\n\t\t\t\tcurrentBlkState.startFromPredIndex = i\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\tif predState == nil {\n\t\tif !blk.Entry() {\n\t\t\tpanic(fmt.Sprintf(\"BUG: at lease one predecessor should be visited for blk%d\", blk.ID()))\n\t\t}\n\t\tfor _, u := range s.argRealRegs {\n\t\t\ts.useRealReg(u.RealReg(), s.getVRegState(u.ID()))\n\t\t}\n\t\tcurrentBlkState.startFromPredIndex = 0\n\t} else {\n\t\tif wazevoapi.RegAllocLoggingEnabled {\n\t\t\tfmt.Printf(\"allocating blk%d starting from blk%d (on index=%d) \\n\",\n\t\t\t\tbID, f.Pred(blk, currentBlkState.startFromPredIndex).ID(), currentBlkState.startFromPredIndex)\n\t\t}\n\t\ts.resetAt(predState)\n\t}\n\n\ts.regsInUse.range_(func(allocated RealReg, v *vrState[I, B, F]) {\n\t\tcurrentBlkState.startRegs.add(allocated, v)\n\t})\n\tif wazevoapi.RegAllocLoggingEnabled {\n\t\tfmt.Printf(\"finalized start reg for blk%d: %s\\n\", blk.ID(), currentBlkState.startRegs.format(a.regInfo))\n\t}\n}\n\nfunc (a *Allocator[I, B, F]) allocBlock(f F, blk B) {\n\tbID := blk.ID()\n\ts := &a.state\n\tcurrentBlkState := a.getOrAllocateBlockState(bID)\n\ts.currentBlockID = bID\n\n\tif currentBlkState.startFromPredIndex < 0 {\n\t\tpanic(\"BUG: startFromPredIndex should be set in finalizeStartReg prior to allocBlock\")\n\t}\n\n\t// Clears the previous state.\n\ts.regsInUse.range_(func(allocatedRealReg RealReg, vr *vrState[I, B, F]) { vr.r = RealRegInvalid })\n\ts.regsInUse.reset()\n\t// Then set the start state.\n\tcurrentBlkState.startRegs.range_(func(allocatedRealReg RealReg, vr *vrState[I, B, F]) { s.useRealReg(allocatedRealReg, vr) })\n\n\tdesiredUpdated := a.ss[:0]\n\n\t// Update the last use of each VReg.\n\ta.copies = a.copies[:0] // Stores the copy instructions.\n\tvar pc programCounter\n\tvar nilInstr I\n\tfor instr := blk.InstrIteratorBegin(); instr != nilInstr; instr = blk.InstrIteratorNext() {\n\t\tvar useState *vrState[I, B, F]\n\t\tfor _, use := range instr.Uses(&a.vs) {\n\t\t\tuseState = s.getVRegState(use.ID())\n\t\t\tif !use.IsRealReg() {\n\t\t\t\tuseState.lastUse = pc\n\t\t\t}\n\t\t}\n\n\t\tif instr.IsCopy() {\n\t\t\tdef := instr.Defs(&a.vs)[0]\n\t\t\ta.copies = append(a.copies, _copy[I, B, F]{src: useState, dstID: def.ID()})\n\t\t\tr := def.RealReg()\n\t\t\tif r != RealRegInvalid {\n\t\t\t\tif !useState.isPhi { // TODO: no idea why do we need this.\n\t\t\t\t\tuseState.desiredLoc = newDesiredLocReg(r)\n\t\t\t\t\tdesiredUpdated = append(desiredUpdated, useState)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tpc++\n\t}\n\n\t// Mark all live-out values by checking live-in of the successors.\n\t// While doing so, we also update the desired register values.\n\tvar succ B\n\tvar nilBlk B\n\tfor i, ns := 0, blk.Succs(); i < ns; i++ {\n\t\tsucc = f.Succ(blk, i)\n\t\tif succ == nilBlk {\n\t\t\tcontinue\n\t\t}\n\n\t\tsuccID := succ.ID()\n\t\tsuccState := a.getOrAllocateBlockState(succID)\n\t\tfor _, st := range succState.liveIns {\n\t\t\tif st.phiBlk() != succ {\n\t\t\t\tst.lastUse = programCounterLiveOut\n\t\t\t}\n\t\t}\n\n\t\tif succState.startFromPredIndex > -1 {\n\t\t\tif wazevoapi.RegAllocLoggingEnabled {\n\t\t\t\tfmt.Printf(\"blk%d -> blk%d: start_regs: %s\\n\", bID, succID, succState.startRegs.format(a.regInfo))\n\t\t\t}\n\t\t\tsuccState.startRegs.range_(func(allocatedRealReg RealReg, vs *vrState[I, B, F]) {\n\t\t\t\tvs.desiredLoc = newDesiredLocReg(allocatedRealReg)\n\t\t\t\tdesiredUpdated = append(desiredUpdated, vs)\n\t\t\t})\n\t\t\tfor _, p := range f.BlockParams(succ, &a.vs) {\n\t\t\t\tvs := s.getVRegState(p.ID())\n\t\t\t\tif vs.desiredLoc.realReg() == RealRegInvalid {\n\t\t\t\t\tvs.desiredLoc = desiredLocStack\n\t\t\t\t\tdesiredUpdated = append(desiredUpdated, vs)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Propagate the desired register values from the end of the block to the beginning.\n\tfor _, instr := range a.copies {\n\t\tdefState := s.getVRegState(instr.dstID)\n\t\tdesired := defState.desiredLoc.realReg()\n\t\tuseState := instr.src\n\t\tif useState.phiBlk() != succ && useState.desiredLoc == desiredLocUnspecified {\n\t\t\tuseState.desiredLoc = newDesiredLocReg(desired)\n\t\t\tdesiredUpdated = append(desiredUpdated, useState)\n\t\t}\n\t}\n\n\tpc = 0\n\tfor instr := blk.InstrIteratorBegin(); instr != nilInstr; instr = blk.InstrIteratorNext() {\n\t\tif wazevoapi.RegAllocLoggingEnabled {\n\t\t\tfmt.Println(instr)\n\t\t}\n\n\t\tvar currentUsedSet RegSet\n\t\tkillSet := a.reals[:0]\n\n\t\t// Gather the set of registers that will be used in the current instruction.\n\t\tuses := instr.Uses(&a.vs)\n\t\tfor _, use := range uses {\n\t\t\tif use.IsRealReg() {\n\t\t\t\tr := use.RealReg()\n\t\t\t\tcurrentUsedSet = currentUsedSet.add(r)\n\t\t\t\tif a.allocatableSet.has(r) {\n\t\t\t\t\tkillSet = append(killSet, r)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tvs := s.getVRegState(use.ID())\n\t\t\t\tif r := vs.r; r != RealRegInvalid {\n\t\t\t\t\tcurrentUsedSet = currentUsedSet.add(r)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor i, use := range uses {\n\t\t\tif !use.IsRealReg() {\n\t\t\t\tvs := s.getVRegState(use.ID())\n\t\t\t\tkilled := vs.lastUse == pc\n\t\t\t\tr := vs.r\n\n\t\t\t\tif r == RealRegInvalid {\n\t\t\t\t\tr = a.findOrSpillAllocatable(s, a.regInfo.AllocatableRegisters[use.RegType()], currentUsedSet,\n\t\t\t\t\t\t// Prefer the desired register if it's available.\n\t\t\t\t\t\tvs.desiredLoc.realReg())\n\t\t\t\t\tvs.recordReload(f, blk)\n\t\t\t\t\tf.ReloadRegisterBefore(use.SetRealReg(r), instr)\n\t\t\t\t\ts.useRealReg(r, vs)\n\t\t\t\t}\n\t\t\t\tif wazevoapi.RegAllocLoggingEnabled {\n\t\t\t\t\tfmt.Printf(\"\\ttrying to use v%v on %s\\n\", use.ID(), a.regInfo.RealRegName(r))\n\t\t\t\t}\n\t\t\t\tinstr.AssignUse(i, use.SetRealReg(r))\n\t\t\t\tcurrentUsedSet = currentUsedSet.add(r)\n\t\t\t\tif killed {\n\t\t\t\t\tif wazevoapi.RegAllocLoggingEnabled {\n\t\t\t\t\t\tfmt.Printf(\"\\tkill v%d with %s\\n\", use.ID(), a.regInfo.RealRegName(r))\n\t\t\t\t\t}\n\t\t\t\t\tkillSet = append(killSet, r)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tisIndirect := instr.IsIndirectCall()\n\t\tif instr.IsCall() || isIndirect {\n\t\t\taddr := RealRegInvalid\n\t\t\tif isIndirect {\n\t\t\t\taddr = a.vs[0].RealReg()\n\t\t\t}\n\t\t\ta.releaseCallerSavedRegs(addr)\n\t\t}\n\n\t\tfor _, r := range killSet {\n\t\t\ts.releaseRealReg(r)\n\t\t}\n\t\ta.reals = killSet\n\n\t\tdefs := instr.Defs(&a.vs)\n\t\tswitch len(defs) {\n\t\tdefault:\n\t\t\t// Some instructions define multiple values on real registers.\n\t\t\t// E.g. call instructions (following calling convention) / div instruction on x64 that defines both rax and rdx.\n\t\t\t//\n\t\t\t// Note that currently I assume that such instructions define only the pre colored real registers, not the VRegs\n\t\t\t// that require allocations. If we need to support such case, we need to add the logic to handle it here,\n\t\t\t// though is there any such instruction?\n\t\t\tfor _, def := range defs {\n\t\t\t\tif !def.IsRealReg() {\n\t\t\t\t\tpanic(\"BUG: multiple defs should be on real registers\")\n\t\t\t\t}\n\t\t\t\tr := def.RealReg()\n\t\t\t\tif s.regsInUse.has(r) {\n\t\t\t\t\ts.releaseRealReg(r)\n\t\t\t\t}\n\t\t\t\ts.useRealReg(r, s.getVRegState(def.ID()))\n\t\t\t}\n\t\tcase 0:\n\t\tcase 1:\n\t\t\tdef := defs[0]\n\t\t\tvState := s.getVRegState(def.ID())\n\t\t\tif def.IsRealReg() {\n\t\t\t\tr := def.RealReg()\n\t\t\t\tif a.allocatableSet.has(r) {\n\t\t\t\t\tif s.regsInUse.has(r) {\n\t\t\t\t\t\ts.releaseRealReg(r)\n\t\t\t\t\t}\n\t\t\t\t\ts.useRealReg(r, vState)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tr := vState.r\n\n\t\t\t\tif desired := vState.desiredLoc.realReg(); desired != RealRegInvalid {\n\t\t\t\t\tif r != desired {\n\t\t\t\t\t\tif (vState.isPhi && vState.defBlk == succ) ||\n\t\t\t\t\t\t\t// If this is not a phi and it's already assigned a real reg,\n\t\t\t\t\t\t\t// this value has multiple definitions, hence we cannot assign the desired register.\n\t\t\t\t\t\t\t(!s.regsInUse.has(desired) && r == RealRegInvalid) {\n\t\t\t\t\t\t\t// If the phi value is passed via a real register, we force the value to be in the desired register.\n\t\t\t\t\t\t\tif wazevoapi.RegAllocLoggingEnabled {\n\t\t\t\t\t\t\t\tfmt.Printf(\"\\t\\tv%d is phi and desiredReg=%s\\n\", def.ID(), a.regInfo.RealRegName(desired))\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif r != RealRegInvalid {\n\t\t\t\t\t\t\t\t// If the value is already in a different real register, we release it to change the state.\n\t\t\t\t\t\t\t\t// Otherwise, multiple registers might have the same values at the end, which results in\n\t\t\t\t\t\t\t\t// messing up the merge state reconciliation.\n\t\t\t\t\t\t\t\ts.releaseRealReg(r)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tr = desired\n\t\t\t\t\t\t\ts.releaseRealReg(r)\n\t\t\t\t\t\t\ts.useRealReg(r, vState)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Allocate a new real register if `def` is not currently assigned one.\n\t\t\t\t// It can happen when multiple instructions define the same VReg (e.g. const loads).\n\t\t\t\tif r == RealRegInvalid {\n\t\t\t\t\tif instr.IsCopy() {\n\t\t\t\t\t\tcopySrc := instr.Uses(&a.vs)[0].RealReg()\n\t\t\t\t\t\tif a.allocatableSet.has(copySrc) && !s.regsInUse.has(copySrc) {\n\t\t\t\t\t\t\tr = copySrc\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif r == RealRegInvalid {\n\t\t\t\t\t\ttyp := def.RegType()\n\t\t\t\t\t\tr = a.findOrSpillAllocatable(s, a.regInfo.AllocatableRegisters[typ], RegSet(0), RealRegInvalid)\n\t\t\t\t\t}\n\t\t\t\t\ts.useRealReg(r, vState)\n\t\t\t\t}\n\t\t\t\tdr := def.SetRealReg(r)\n\t\t\t\tinstr.AssignDef(dr)\n\t\t\t\tif wazevoapi.RegAllocLoggingEnabled {\n\t\t\t\t\tfmt.Printf(\"\\tdefining v%d with %s\\n\", def.ID(), a.regInfo.RealRegName(r))\n\t\t\t\t}\n\t\t\t\tif vState.isPhi {\n\t\t\t\t\tif vState.desiredLoc.stack() { // Stack based phi value.\n\t\t\t\t\t\tf.StoreRegisterAfter(dr, instr)\n\t\t\t\t\t\t// Release the real register as it's not used anymore.\n\t\t\t\t\t\ts.releaseRealReg(r)\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Only the register based phis are necessary to track the defining instructions\n\t\t\t\t\t\t// since the stack-based phis are already having stores inserted ^.\n\t\t\t\t\t\tn := a.phiDefInstListPool.Allocate()\n\t\t\t\t\t\tn.instr = instr\n\t\t\t\t\t\tn.next = vState.phiDefInstList\n\t\t\t\t\t\tn.v = dr\n\t\t\t\t\t\tvState.phiDefInstList = n\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tvState.defInstr = instr\n\t\t\t\t\tvState.defBlk = blk\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif wazevoapi.RegAllocLoggingEnabled {\n\t\t\tfmt.Println(instr)\n\t\t}\n\t\tpc++\n\t}\n\n\ts.regsInUse.range_(func(allocated RealReg, v *vrState[I, B, F]) { currentBlkState.endRegs.add(allocated, v) })\n\n\tcurrentBlkState.visited = true\n\tif wazevoapi.RegAllocLoggingEnabled {\n\t\tcurrentBlkState.dump(a.regInfo)\n\t}\n\n\t// Reset the desired end location.\n\tfor _, vs := range desiredUpdated {\n\t\tvs.desiredLoc = desiredLocUnspecified\n\t}\n\ta.ss = desiredUpdated[:0]\n\n\tfor i := 0; i < blk.Succs(); i++ {\n\t\tsucc := f.Succ(blk, i)\n\t\tif succ == nilBlk {\n\t\t\tcontinue\n\t\t}\n\t\t// If the successor is not visited yet, finalize the start state.\n\t\ta.finalizeStartReg(f, succ)\n\t}\n}\n\nfunc (a *Allocator[I, B, F]) releaseCallerSavedRegs(addrReg RealReg) {\n\ts := &a.state\n\n\tfor allocated := RealReg(0); allocated < 64; allocated++ {\n\t\tif allocated == addrReg { // If this is the call indirect, we should not touch the addr register.\n\t\t\tcontinue\n\t\t}\n\t\tif vs := s.regsInUse.get(allocated); vs != nil {\n\t\t\tif vs.v.IsRealReg() {\n\t\t\t\tcontinue // This is the argument register as it's already used by VReg backed by the corresponding RealReg.\n\t\t\t}\n\t\t\tif !a.regInfo.CallerSavedRegisters.has(allocated) {\n\t\t\t\t// If this is not a caller-saved register, it is safe to keep it across the call.\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\ts.releaseRealReg(allocated)\n\t\t}\n\t}\n}\n\nfunc (a *Allocator[I, B, F]) fixMergeState(f F, blk B) {\n\tpreds := blk.Preds()\n\tif preds <= 1 {\n\t\treturn\n\t}\n\n\ts := &a.state\n\n\t// Restores the state at the beginning of the block.\n\tbID := blk.ID()\n\tblkSt := a.getOrAllocateBlockState(bID)\n\tdesiredOccupants := &blkSt.startRegs\n\tvar desiredOccupantsSet RegSet\n\tfor i, v := range desiredOccupants {\n\t\tif v != nil {\n\t\t\tdesiredOccupantsSet = desiredOccupantsSet.add(RealReg(i))\n\t\t}\n\t}\n\n\tif wazevoapi.RegAllocLoggingEnabled {\n\t\tfmt.Println(\"fixMergeState\", blk.ID(), \":\", desiredOccupants.format(a.regInfo))\n\t}\n\n\ts.currentBlockID = bID\n\ta.updateLiveInVRState(blkSt)\n\n\tfor i := 0; i < preds; i++ {\n\t\tif i == blkSt.startFromPredIndex {\n\t\t\tcontinue\n\t\t}\n\n\t\tpred := f.Pred(blk, i)\n\t\tpredSt := a.getOrAllocateBlockState(pred.ID())\n\n\t\ts.resetAt(predSt)\n\n\t\t// Finds the free registers if any.\n\t\tintTmp, floatTmp := VRegInvalid, VRegInvalid\n\t\tif intFree := s.findAllocatable(\n\t\t\ta.regInfo.AllocatableRegisters[RegTypeInt], desiredOccupantsSet,\n\t\t); intFree != RealRegInvalid {\n\t\t\tintTmp = FromRealReg(intFree, RegTypeInt)\n\t\t}\n\t\tif floatFree := s.findAllocatable(\n\t\t\ta.regInfo.AllocatableRegisters[RegTypeFloat], desiredOccupantsSet,\n\t\t); floatFree != RealRegInvalid {\n\t\t\tfloatTmp = FromRealReg(floatFree, RegTypeFloat)\n\t\t}\n\n\t\tfor r := RealReg(0); r < 64; r++ {\n\t\t\tdesiredVReg := desiredOccupants.get(r)\n\t\t\tif desiredVReg == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tcurrentVReg := s.regsInUse.get(r)\n\t\t\tif currentVReg != nil && desiredVReg.v.ID() == currentVReg.v.ID() {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\ttyp := desiredVReg.v.RegType()\n\t\t\tvar tmpRealReg VReg\n\t\t\tif typ == RegTypeInt {\n\t\t\t\ttmpRealReg = intTmp\n\t\t\t} else {\n\t\t\t\ttmpRealReg = floatTmp\n\t\t\t}\n\t\t\ta.reconcileEdge(f, r, pred, currentVReg, desiredVReg, tmpRealReg, typ)\n\t\t}\n\t}\n}\n\n// reconcileEdge reconciles the register state between the current block and the predecessor for the real register `r`.\n//\n//   - currentVReg is the current VReg value that sits on the register `r`. This can be VRegInvalid if the register is not used at the end of the predecessor.\n//   - desiredVReg is the desired VReg value that should be on the register `r`.\n//   - freeReg is the temporary register that can be used to swap the values, which may or may not be used.\n//   - typ is the register type of the `r`.\nfunc (a *Allocator[I, B, F]) reconcileEdge(f F,\n\tr RealReg,\n\tpred B,\n\tcurrentState, desiredState *vrState[I, B, F],\n\tfreeReg VReg,\n\ttyp RegType,\n) {\n\tdesiredVReg := desiredState.v\n\tcurrentVReg := VRegInvalid\n\tif currentState != nil {\n\t\tcurrentVReg = currentState.v\n\t}\n\t// There are four cases to consider:\n\t// 1. currentVReg is valid, but desiredVReg is on the stack.\n\t// 2. Both currentVReg and desiredVReg are valid.\n\t// 3. Desired is on a different register than `r` and currentReg is not valid.\n\t// 4. Desired is on the stack and currentReg is not valid.\n\n\ts := &a.state\n\tif currentVReg.Valid() {\n\t\ter := desiredState.r\n\t\tif er == RealRegInvalid {\n\t\t\t// Case 1: currentVReg is valid, but desiredVReg is on the stack.\n\t\t\tif wazevoapi.RegAllocLoggingEnabled {\n\t\t\t\tfmt.Printf(\"\\t\\tv%d is desired to be on %s, but currently on the stack\\n\",\n\t\t\t\t\tdesiredVReg.ID(), a.regInfo.RealRegName(r),\n\t\t\t\t)\n\t\t\t}\n\t\t\t// We need to move the current value to the stack, and reload the desired value into the register.\n\t\t\t// TODO: we can do better here.\n\t\t\tf.StoreRegisterBefore(currentVReg.SetRealReg(r), pred.LastInstrForInsertion())\n\t\t\ts.releaseRealReg(r)\n\n\t\t\tdesiredState.recordReload(f, pred)\n\t\t\tf.ReloadRegisterBefore(desiredVReg.SetRealReg(r), pred.LastInstrForInsertion())\n\t\t\ts.useRealReg(r, desiredState)\n\t\t\treturn\n\t\t} else {\n\t\t\t// Case 2: Both currentVReg and desiredVReg are valid.\n\t\t\tif wazevoapi.RegAllocLoggingEnabled {\n\t\t\t\tfmt.Printf(\"\\t\\tv%d is desired to be on %s, but currently on %s\\n\",\n\t\t\t\t\tdesiredVReg.ID(), a.regInfo.RealRegName(r), a.regInfo.RealRegName(er),\n\t\t\t\t)\n\t\t\t}\n\t\t\t// This case, we need to swap the values between the current and desired values.\n\t\t\tf.SwapBefore(\n\t\t\t\tcurrentVReg.SetRealReg(r),\n\t\t\t\tdesiredVReg.SetRealReg(er),\n\t\t\t\tfreeReg,\n\t\t\t\tpred.LastInstrForInsertion(),\n\t\t\t)\n\t\t\ts.allocatedRegSet = s.allocatedRegSet.add(freeReg.RealReg())\n\t\t\ts.releaseRealReg(r)\n\t\t\ts.releaseRealReg(er)\n\t\t\ts.useRealReg(r, desiredState)\n\t\t\ts.useRealReg(er, currentState)\n\t\t\tif wazevoapi.RegAllocLoggingEnabled {\n\t\t\t\tfmt.Printf(\"\\t\\tv%d previously on %s moved to %s\\n\", currentVReg.ID(), a.regInfo.RealRegName(r), a.regInfo.RealRegName(er))\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif wazevoapi.RegAllocLoggingEnabled {\n\t\t\tfmt.Printf(\"\\t\\tv%d is desired to be on %s, current not used\\n\",\n\t\t\t\tdesiredVReg.ID(), a.regInfo.RealRegName(r),\n\t\t\t)\n\t\t}\n\t\tif currentReg := desiredState.r; currentReg != RealRegInvalid {\n\t\t\t// Case 3: Desired is on a different register than `r` and currentReg is not valid.\n\t\t\t// We simply need to move the desired value to the register.\n\t\t\tf.InsertMoveBefore(\n\t\t\t\tFromRealReg(r, typ),\n\t\t\t\tdesiredVReg.SetRealReg(currentReg),\n\t\t\t\tpred.LastInstrForInsertion(),\n\t\t\t)\n\t\t\ts.releaseRealReg(currentReg)\n\t\t} else {\n\t\t\t// Case 4: Both currentVReg and desiredVReg are not valid.\n\t\t\t// We simply need to reload the desired value into the register.\n\t\t\tdesiredState.recordReload(f, pred)\n\t\t\tf.ReloadRegisterBefore(desiredVReg.SetRealReg(r), pred.LastInstrForInsertion())\n\t\t}\n\t\ts.useRealReg(r, desiredState)\n\t}\n}\n\nfunc (a *Allocator[I, B, F]) scheduleSpills(f F) {\n\tstates := a.state.vrStates\n\tfor i := 0; i <= states.MaxIDEncountered(); i++ {\n\t\tvs := states.Get(i)\n\t\tif vs == nil {\n\t\t\tcontinue\n\t\t}\n\t\tif vs.spilled {\n\t\t\ta.scheduleSpill(f, vs)\n\t\t}\n\t}\n}\n\nfunc (a *Allocator[I, B, F]) scheduleSpill(f F, vs *vrState[I, B, F]) {\n\tv := vs.v\n\t// If the value is the phi value, we need to insert a spill after each phi definition.\n\tif vs.isPhi {\n\t\tfor defInstr := vs.phiDefInstList; defInstr != nil; defInstr = defInstr.next {\n\t\t\tf.StoreRegisterAfter(defInstr.v, defInstr.instr)\n\t\t}\n\t\treturn\n\t}\n\n\tpos := vs.lca\n\tdefiningBlk := vs.defBlk\n\tr := RealRegInvalid\n\tvar nilBlk B\n\tif definingBlk == nilBlk {\n\t\tpanic(fmt.Sprintf(\"BUG: definingBlk should not be nil for %s. This is likley a bug in backend lowering logic\", vs.v.String()))\n\t}\n\tif pos == nilBlk {\n\t\tpanic(fmt.Sprintf(\"BUG: pos should not be nil for %s. This is likley a bug in backend lowering logic\", vs.v.String()))\n\t}\n\n\tif wazevoapi.RegAllocLoggingEnabled {\n\t\tfmt.Printf(\"v%d is spilled in blk%d, lca=blk%d\\n\", v.ID(), definingBlk.ID(), pos.ID())\n\t}\n\tfor pos != definingBlk {\n\t\tst := a.getOrAllocateBlockState(pos.ID())\n\t\tfor rr := RealReg(0); rr < 64; rr++ {\n\t\t\tif vs := st.startRegs.get(rr); vs != nil && vs.v == v {\n\t\t\t\tr = rr\n\t\t\t\t// Already in the register, so we can place the spill at the beginning of the block.\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\t\tif r != RealRegInvalid {\n\t\t\tbreak\n\t\t}\n\n\t\tpos = f.Idom(pos)\n\t}\n\n\tif pos == definingBlk {\n\t\tdefInstr := vs.defInstr\n\t\tdefInstr.Defs(&a.vs)\n\t\tif wazevoapi.RegAllocLoggingEnabled {\n\t\t\tfmt.Printf(\"schedule spill v%d after %v\\n\", v.ID(), defInstr)\n\t\t}\n\t\tf.StoreRegisterAfter(a.vs[0], defInstr)\n\t} else {\n\t\t// Found an ancestor block that holds the value in the register at the beginning of the block.\n\t\t// We need to insert a spill before the last use.\n\t\tfirst := pos.FirstInstr()\n\t\tif wazevoapi.RegAllocLoggingEnabled {\n\t\t\tfmt.Printf(\"schedule spill v%d before %v\\n\", v.ID(), first)\n\t\t}\n\t\tf.StoreRegisterAfter(v.SetRealReg(r), first)\n\t}\n}\n\n// Reset resets the allocator's internal state so that it can be reused.\nfunc (a *Allocator[I, B, F]) Reset() {\n\ta.state.reset()\n\ta.blockStates.Reset()\n\ta.phiDefInstListPool.Reset()\n\ta.vs = a.vs[:0]\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/regalloc/regset.go",
    "content": "package regalloc\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n)\n\n// NewRegSet returns a new RegSet with the given registers.\nfunc NewRegSet(regs ...RealReg) RegSet {\n\tvar ret RegSet\n\tfor _, r := range regs {\n\t\tret = ret.add(r)\n\t}\n\treturn ret\n}\n\n// RegSet represents a set of registers.\ntype RegSet uint64\n\nfunc (rs RegSet) format(info *RegisterInfo) string { //nolint:unused\n\tvar ret []string\n\tfor i := 0; i < 64; i++ {\n\t\tif rs&(1<<uint(i)) != 0 {\n\t\t\tret = append(ret, info.RealRegName(RealReg(i)))\n\t\t}\n\t}\n\treturn strings.Join(ret, \", \")\n}\n\nfunc (rs RegSet) has(r RealReg) bool {\n\treturn rs&(1<<uint(r)) != 0\n}\n\nfunc (rs RegSet) add(r RealReg) RegSet {\n\tif r >= 64 {\n\t\treturn rs\n\t}\n\treturn rs | 1<<uint(r)\n}\n\nfunc (rs RegSet) Range(f func(allocatedRealReg RealReg)) {\n\tfor i := 0; i < 64; i++ {\n\t\tif rs&(1<<uint(i)) != 0 {\n\t\t\tf(RealReg(i))\n\t\t}\n\t}\n}\n\ntype regInUseSet[I Instr, B Block[I], F Function[I, B]] [64]*vrState[I, B, F]\n\nfunc newRegInUseSet[I Instr, B Block[I], F Function[I, B]]() regInUseSet[I, B, F] {\n\tvar ret regInUseSet[I, B, F]\n\tret.reset()\n\treturn ret\n}\n\nfunc (rs *regInUseSet[I, B, F]) reset() {\n\tclear(rs[:])\n}\n\nfunc (rs *regInUseSet[I, B, F]) format(info *RegisterInfo) string { //nolint:unused\n\tvar ret []string\n\tfor i, vr := range rs {\n\t\tif vr != nil {\n\t\t\tret = append(ret, fmt.Sprintf(\"(%s->v%d)\", info.RealRegName(RealReg(i)), vr.v.ID()))\n\t\t}\n\t}\n\treturn strings.Join(ret, \", \")\n}\n\nfunc (rs *regInUseSet[I, B, F]) has(r RealReg) bool {\n\treturn r < 64 && rs[r] != nil\n}\n\nfunc (rs *regInUseSet[I, B, F]) get(r RealReg) *vrState[I, B, F] {\n\treturn rs[r]\n}\n\nfunc (rs *regInUseSet[I, B, F]) remove(r RealReg) {\n\trs[r] = nil\n}\n\nfunc (rs *regInUseSet[I, B, F]) add(r RealReg, vr *vrState[I, B, F]) {\n\tif r >= 64 {\n\t\treturn\n\t}\n\trs[r] = vr\n}\n\nfunc (rs *regInUseSet[I, B, F]) range_(f func(allocatedRealReg RealReg, vr *vrState[I, B, F])) {\n\tfor i, vr := range rs {\n\t\tif vr != nil {\n\t\t\tf(RealReg(i), vr)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/vdef.go",
    "content": "package backend\n\nimport (\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/ssa\"\n)\n\n// SSAValueDefinition represents a definition of an SSA value.\ntype SSAValueDefinition struct {\n\tV ssa.Value\n\t// Instr is not nil if this is a definition from an instruction.\n\tInstr *ssa.Instruction\n\t// RefCount is the number of references to the result.\n\tRefCount uint32\n}\n\n// IsFromInstr returns true if this definition is from an instruction.\nfunc (d *SSAValueDefinition) IsFromInstr() bool {\n\treturn d.Instr != nil\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/call_engine.go",
    "content": "package wazevo\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"reflect\"\n\t\"runtime\"\n\t\"sync/atomic\"\n\t\"unsafe\"\n\n\t\"github.com/tetratelabs/wazero/api\"\n\t\"github.com/tetratelabs/wazero/experimental\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi\"\n\t\"github.com/tetratelabs/wazero/internal/expctxkeys\"\n\t\"github.com/tetratelabs/wazero/internal/internalapi\"\n\t\"github.com/tetratelabs/wazero/internal/wasm\"\n\t\"github.com/tetratelabs/wazero/internal/wasmdebug\"\n\t\"github.com/tetratelabs/wazero/internal/wasmruntime\"\n)\n\ntype (\n\t// callEngine implements api.Function.\n\tcallEngine struct {\n\t\tinternalapi.WazeroOnly\n\t\tstack []byte\n\t\t// stackTop is the pointer to the *aligned* top of the stack. This must be updated\n\t\t// whenever the stack is changed. This is passed to the assembly function\n\t\t// at the very beginning of api.Function Call/CallWithStack.\n\t\tstackTop uintptr\n\t\t// executable is the pointer to the executable code for this function.\n\t\texecutable         *byte\n\t\tpreambleExecutable *byte\n\t\t// parent is the *moduleEngine from which this callEngine is created.\n\t\tparent *moduleEngine\n\t\t// indexInModule is the index of the function in the module.\n\t\tindexInModule wasm.Index\n\t\t// sizeOfParamResultSlice is the size of the parameter/result slice.\n\t\tsizeOfParamResultSlice int\n\t\trequiredParams         int\n\t\t// execCtx holds various information to be read/written by assembly functions.\n\t\texecCtx executionContext\n\t\t// execCtxPtr holds the pointer to the executionContext which doesn't change after callEngine is created.\n\t\texecCtxPtr        uintptr\n\t\tnumberOfResults   int\n\t\tstackIteratorImpl stackIterator\n\t}\n\n\t// executionContext is the struct to be read/written by assembly functions.\n\texecutionContext struct {\n\t\t// exitCode holds the wazevoapi.ExitCode describing the state of the function execution.\n\t\texitCode wazevoapi.ExitCode\n\t\t// callerModuleContextPtr holds the moduleContextOpaque for Go function calls.\n\t\tcallerModuleContextPtr *byte\n\t\t// originalFramePointer holds the original frame pointer of the caller of the assembly function.\n\t\toriginalFramePointer uintptr\n\t\t// originalStackPointer holds the original stack pointer of the caller of the assembly function.\n\t\toriginalStackPointer uintptr\n\t\t// goReturnAddress holds the return address to go back to the caller of the assembly function.\n\t\tgoReturnAddress uintptr\n\t\t// stackBottomPtr holds the pointer to the bottom of the stack.\n\t\tstackBottomPtr *byte\n\t\t// goCallReturnAddress holds the return address to go back to the caller of the Go function.\n\t\tgoCallReturnAddress *byte\n\t\t// stackPointerBeforeGoCall holds the stack pointer before calling a Go function.\n\t\tstackPointerBeforeGoCall *uint64\n\t\t// stackGrowRequiredSize holds the required size of stack grow.\n\t\tstackGrowRequiredSize uintptr\n\t\t// memoryGrowTrampolineAddress holds the address of memory grow trampoline function.\n\t\tmemoryGrowTrampolineAddress *byte\n\t\t// stackGrowCallTrampolineAddress holds the address of stack grow trampoline function.\n\t\tstackGrowCallTrampolineAddress *byte\n\t\t// checkModuleExitCodeTrampolineAddress holds the address of check-module-exit-code function.\n\t\tcheckModuleExitCodeTrampolineAddress *byte\n\t\t// savedRegisters is the opaque spaces for save/restore registers.\n\t\t// We want to align 16 bytes for each register, so we use [64][2]uint64.\n\t\tsavedRegisters [64][2]uint64\n\t\t// goFunctionCallCalleeModuleContextOpaque is the pointer to the target Go function's moduleContextOpaque.\n\t\tgoFunctionCallCalleeModuleContextOpaque uintptr\n\t\t// tableGrowTrampolineAddress holds the address of table grow trampoline function.\n\t\ttableGrowTrampolineAddress *byte\n\t\t// refFuncTrampolineAddress holds the address of ref-func trampoline function.\n\t\trefFuncTrampolineAddress *byte\n\t\t// memmoveAddress holds the address of memmove function implemented by Go runtime. See memmove.go.\n\t\tmemmoveAddress uintptr\n\t\t// framePointerBeforeGoCall holds the frame pointer before calling a Go function. Note: only used in amd64.\n\t\tframePointerBeforeGoCall uintptr\n\t\t// memoryWait32TrampolineAddress holds the address of memory_wait32 trampoline function.\n\t\tmemoryWait32TrampolineAddress *byte\n\t\t// memoryWait32TrampolineAddress holds the address of memory_wait64 trampoline function.\n\t\tmemoryWait64TrampolineAddress *byte\n\t\t// memoryNotifyTrampolineAddress holds the address of the memory_notify trampoline function.\n\t\tmemoryNotifyTrampolineAddress *byte\n\t}\n)\n\nfunc (c *callEngine) requiredInitialStackSize() int {\n\tconst initialStackSizeDefault = 10240\n\tstackSize := initialStackSizeDefault\n\tparamResultInBytes := c.sizeOfParamResultSlice * 8 * 2 // * 8 because uint64 is 8 bytes, and *2 because we need both separated param/result slots.\n\trequired := paramResultInBytes + 32 + 16               // 32 is enough to accommodate the call frame info, and 16 exists just in case when []byte is not aligned to 16 bytes.\n\tif required > stackSize {\n\t\tstackSize = required\n\t}\n\treturn stackSize\n}\n\nfunc (c *callEngine) init() {\n\tstackSize := c.requiredInitialStackSize()\n\tif wazevoapi.StackGuardCheckEnabled {\n\t\tstackSize += wazevoapi.StackGuardCheckGuardPageSize\n\t}\n\tc.stack = make([]byte, stackSize)\n\tc.stackTop = alignedStackTop(c.stack)\n\tif wazevoapi.StackGuardCheckEnabled {\n\t\tc.execCtx.stackBottomPtr = &c.stack[wazevoapi.StackGuardCheckGuardPageSize]\n\t} else {\n\t\tc.execCtx.stackBottomPtr = &c.stack[0]\n\t}\n\tc.execCtxPtr = uintptr(unsafe.Pointer(&c.execCtx))\n}\n\n// alignedStackTop returns 16-bytes aligned stack top of given stack.\n// 16 bytes should be good for all platform (arm64/amd64).\nfunc alignedStackTop(s []byte) uintptr {\n\tstackAddr := uintptr(unsafe.Pointer(&s[len(s)-1]))\n\treturn stackAddr - (stackAddr & (16 - 1))\n}\n\n// Definition implements api.Function.\nfunc (c *callEngine) Definition() api.FunctionDefinition {\n\treturn c.parent.module.Source.FunctionDefinition(c.indexInModule)\n}\n\n// Call implements api.Function.\nfunc (c *callEngine) Call(ctx context.Context, params ...uint64) ([]uint64, error) {\n\tif c.requiredParams != len(params) {\n\t\treturn nil, fmt.Errorf(\"expected %d params, but passed %d\", c.requiredParams, len(params))\n\t}\n\tparamResultSlice := make([]uint64, c.sizeOfParamResultSlice)\n\tcopy(paramResultSlice, params)\n\tif err := c.callWithStack(ctx, paramResultSlice); err != nil {\n\t\treturn nil, err\n\t}\n\treturn paramResultSlice[:c.numberOfResults], nil\n}\n\nfunc (c *callEngine) addFrame(builder wasmdebug.ErrorBuilder, addr uintptr) (def api.FunctionDefinition, listener experimental.FunctionListener) {\n\teng := c.parent.parent.parent\n\tcm := eng.compiledModuleOfAddr(addr)\n\tif cm == nil {\n\t\t// This case, the module might have been closed and deleted from the engine.\n\t\t// We fall back to searching the imported modules that can be referenced from this callEngine.\n\n\t\t// First, we check itself.\n\t\tif checkAddrInBytes(addr, c.parent.parent.executable) {\n\t\t\tcm = c.parent.parent\n\t\t} else {\n\t\t\t// Otherwise, search all imported modules. TODO: maybe recursive, but not sure it's useful in practice.\n\t\t\tp := c.parent\n\t\t\tfor i := range p.importedFunctions {\n\t\t\t\tcandidate := p.importedFunctions[i].me.parent\n\t\t\t\tif checkAddrInBytes(addr, candidate.executable) {\n\t\t\t\t\tcm = candidate\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif cm != nil {\n\t\tindex := cm.functionIndexOf(addr)\n\t\tdef = cm.module.FunctionDefinition(cm.module.ImportFunctionCount + index)\n\t\tvar sources []string\n\t\tif dw := cm.module.DWARFLines; dw != nil {\n\t\t\tsourceOffset := cm.getSourceOffset(addr)\n\t\t\tsources = dw.Line(sourceOffset)\n\t\t}\n\t\tbuilder.AddFrame(def.DebugName(), def.ParamTypes(), def.ResultTypes(), sources)\n\t\tif len(cm.listeners) > 0 {\n\t\t\tlistener = cm.listeners[index]\n\t\t}\n\t}\n\treturn\n}\n\n// CallWithStack implements api.Function.\nfunc (c *callEngine) CallWithStack(ctx context.Context, paramResultStack []uint64) (err error) {\n\tif c.sizeOfParamResultSlice > len(paramResultStack) {\n\t\treturn fmt.Errorf(\"need %d params, but stack size is %d\", c.sizeOfParamResultSlice, len(paramResultStack))\n\t}\n\treturn c.callWithStack(ctx, paramResultStack)\n}\n\n// CallWithStack implements api.Function.\nfunc (c *callEngine) callWithStack(ctx context.Context, paramResultStack []uint64) (err error) {\n\tsnapshotEnabled := ctx.Value(expctxkeys.EnableSnapshotterKey{}) != nil\n\tif snapshotEnabled {\n\t\tctx = context.WithValue(ctx, expctxkeys.SnapshotterKey{}, c)\n\t}\n\n\tif wazevoapi.StackGuardCheckEnabled {\n\t\tdefer func() {\n\t\t\twazevoapi.CheckStackGuardPage(c.stack)\n\t\t}()\n\t}\n\n\tp := c.parent\n\tensureTermination := p.parent.ensureTermination\n\tm := p.module\n\tif ensureTermination {\n\t\tselect {\n\t\tcase <-ctx.Done():\n\t\t\t// If the provided context is already done, close the module and return the error.\n\t\t\tm.CloseWithCtxErr(ctx)\n\t\t\treturn m.FailIfClosed()\n\t\tdefault:\n\t\t}\n\t}\n\n\tvar paramResultPtr *uint64\n\tif len(paramResultStack) > 0 {\n\t\tparamResultPtr = &paramResultStack[0]\n\t}\n\tdefer func() {\n\t\tr := recover()\n\t\tif s, ok := r.(*snapshot); ok {\n\t\t\t// A snapshot that wasn't handled was created by a different call engine possibly from a nested wasm invocation,\n\t\t\t// let it propagate up to be handled by the caller.\n\t\t\tpanic(s)\n\t\t}\n\t\tif r != nil {\n\t\t\ttype listenerForAbort struct {\n\t\t\t\tdef api.FunctionDefinition\n\t\t\t\tlsn experimental.FunctionListener\n\t\t\t}\n\n\t\t\tvar listeners []listenerForAbort\n\t\t\tbuilder := wasmdebug.NewErrorBuilder()\n\t\t\tdef, lsn := c.addFrame(builder, uintptr(unsafe.Pointer(c.execCtx.goCallReturnAddress)))\n\t\t\tif lsn != nil {\n\t\t\t\tlisteners = append(listeners, listenerForAbort{def, lsn})\n\t\t\t}\n\t\t\treturnAddrs := unwindStack(\n\t\t\t\tuintptr(unsafe.Pointer(c.execCtx.stackPointerBeforeGoCall)),\n\t\t\t\tc.execCtx.framePointerBeforeGoCall,\n\t\t\t\tc.stackTop,\n\t\t\t\tnil,\n\t\t\t)\n\t\t\tfor _, retAddr := range returnAddrs[:len(returnAddrs)-1] { // the last return addr is the trampoline, so we skip it.\n\t\t\t\tdef, lsn = c.addFrame(builder, retAddr)\n\t\t\t\tif lsn != nil {\n\t\t\t\t\tlisteners = append(listeners, listenerForAbort{def, lsn})\n\t\t\t\t}\n\t\t\t}\n\t\t\terr = builder.FromRecovered(r)\n\n\t\t\tfor _, lsn := range listeners {\n\t\t\t\tlsn.lsn.Abort(ctx, m, lsn.def, err)\n\t\t\t}\n\t\t} else {\n\t\t\tif err != wasmruntime.ErrRuntimeStackOverflow { // Stackoverflow case shouldn't be panic (to avoid extreme stack unwinding).\n\t\t\t\terr = c.parent.module.FailIfClosed()\n\t\t\t}\n\t\t}\n\n\t\tif err != nil {\n\t\t\t// Ensures that we can reuse this callEngine even after an error.\n\t\t\tc.execCtx.exitCode = wazevoapi.ExitCodeOK\n\t\t}\n\t}()\n\n\tif ensureTermination {\n\t\tdone := m.CloseModuleOnCanceledOrTimeout(ctx)\n\t\tdefer done()\n\t}\n\n\tif c.stackTop&(16-1) != 0 {\n\t\tpanic(\"BUG: stack must be aligned to 16 bytes\")\n\t}\n\tentrypoint(c.preambleExecutable, c.executable, c.execCtxPtr, c.parent.opaquePtr, paramResultPtr, c.stackTop)\n\tfor {\n\t\tswitch ec := c.execCtx.exitCode; ec & wazevoapi.ExitCodeMask {\n\t\tcase wazevoapi.ExitCodeOK:\n\t\t\treturn nil\n\t\tcase wazevoapi.ExitCodeGrowStack:\n\t\t\toldsp := uintptr(unsafe.Pointer(c.execCtx.stackPointerBeforeGoCall))\n\t\t\toldTop := c.stackTop\n\t\t\toldStack := c.stack\n\t\t\tvar newsp, newfp uintptr\n\t\t\tif wazevoapi.StackGuardCheckEnabled {\n\t\t\t\tnewsp, newfp, err = c.growStackWithGuarded()\n\t\t\t} else {\n\t\t\t\tnewsp, newfp, err = c.growStack()\n\t\t\t}\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tadjustClonedStack(oldsp, oldTop, newsp, newfp, c.stackTop)\n\t\t\t// Old stack must be alive until the new stack is adjusted.\n\t\t\truntime.KeepAlive(oldStack)\n\t\t\tc.execCtx.exitCode = wazevoapi.ExitCodeOK\n\t\t\tafterGoFunctionCallEntrypoint(c.execCtx.goCallReturnAddress, c.execCtxPtr, newsp, newfp)\n\t\tcase wazevoapi.ExitCodeGrowMemory:\n\t\t\tmod := c.callerModuleInstance()\n\t\t\tmem := mod.MemoryInstance\n\t\t\ts := goCallStackView(c.execCtx.stackPointerBeforeGoCall)\n\t\t\targRes := &s[0]\n\t\t\tif res, ok := mem.Grow(uint32(*argRes)); !ok {\n\t\t\t\t*argRes = uint64(0xffffffff) // = -1 in signed 32-bit integer.\n\t\t\t} else {\n\t\t\t\t*argRes = uint64(res)\n\t\t\t}\n\t\t\tc.execCtx.exitCode = wazevoapi.ExitCodeOK\n\t\t\tafterGoFunctionCallEntrypoint(c.execCtx.goCallReturnAddress, c.execCtxPtr, uintptr(unsafe.Pointer(c.execCtx.stackPointerBeforeGoCall)), c.execCtx.framePointerBeforeGoCall)\n\t\tcase wazevoapi.ExitCodeTableGrow:\n\t\t\tmod := c.callerModuleInstance()\n\t\t\ts := goCallStackView(c.execCtx.stackPointerBeforeGoCall)\n\t\t\ttableIndex, num, ref := uint32(s[0]), uint32(s[1]), uintptr(s[2])\n\t\t\ttable := mod.Tables[tableIndex]\n\t\t\ts[0] = uint64(uint32(int32(table.Grow(num, ref))))\n\t\t\tc.execCtx.exitCode = wazevoapi.ExitCodeOK\n\t\t\tafterGoFunctionCallEntrypoint(c.execCtx.goCallReturnAddress, c.execCtxPtr,\n\t\t\t\tuintptr(unsafe.Pointer(c.execCtx.stackPointerBeforeGoCall)), c.execCtx.framePointerBeforeGoCall)\n\t\tcase wazevoapi.ExitCodeCallGoFunction:\n\t\t\tindex := wazevoapi.GoFunctionIndexFromExitCode(ec)\n\t\t\tf := hostModuleGoFuncFromOpaque[api.GoFunction](index, c.execCtx.goFunctionCallCalleeModuleContextOpaque)\n\t\t\tfunc() {\n\t\t\t\tif snapshotEnabled {\n\t\t\t\t\tdefer snapshotRecoverFn(c)\n\t\t\t\t}\n\t\t\t\tf.Call(ctx, goCallStackView(c.execCtx.stackPointerBeforeGoCall))\n\t\t\t}()\n\t\t\t// Back to the native code.\n\t\t\tc.execCtx.exitCode = wazevoapi.ExitCodeOK\n\t\t\tafterGoFunctionCallEntrypoint(c.execCtx.goCallReturnAddress, c.execCtxPtr,\n\t\t\t\tuintptr(unsafe.Pointer(c.execCtx.stackPointerBeforeGoCall)), c.execCtx.framePointerBeforeGoCall)\n\t\tcase wazevoapi.ExitCodeCallGoFunctionWithListener:\n\t\t\tindex := wazevoapi.GoFunctionIndexFromExitCode(ec)\n\t\t\tf := hostModuleGoFuncFromOpaque[api.GoFunction](index, c.execCtx.goFunctionCallCalleeModuleContextOpaque)\n\t\t\tlisteners := hostModuleListenersSliceFromOpaque(c.execCtx.goFunctionCallCalleeModuleContextOpaque)\n\t\t\ts := goCallStackView(c.execCtx.stackPointerBeforeGoCall)\n\t\t\t// Call Listener.Before.\n\t\t\tcallerModule := c.callerModuleInstance()\n\t\t\tlistener := listeners[index]\n\t\t\thostModule := hostModuleFromOpaque(c.execCtx.goFunctionCallCalleeModuleContextOpaque)\n\t\t\tdef := hostModule.FunctionDefinition(wasm.Index(index))\n\t\t\tlistener.Before(ctx, callerModule, def, s, c.stackIterator(true))\n\t\t\t// Call into the Go function.\n\t\t\tfunc() {\n\t\t\t\tif snapshotEnabled {\n\t\t\t\t\tdefer snapshotRecoverFn(c)\n\t\t\t\t}\n\t\t\t\tf.Call(ctx, s)\n\t\t\t}()\n\t\t\t// Call Listener.After.\n\t\t\tlistener.After(ctx, callerModule, def, s)\n\t\t\t// Back to the native code.\n\t\t\tc.execCtx.exitCode = wazevoapi.ExitCodeOK\n\t\t\tafterGoFunctionCallEntrypoint(c.execCtx.goCallReturnAddress, c.execCtxPtr,\n\t\t\t\tuintptr(unsafe.Pointer(c.execCtx.stackPointerBeforeGoCall)), c.execCtx.framePointerBeforeGoCall)\n\t\tcase wazevoapi.ExitCodeCallGoModuleFunction:\n\t\t\tindex := wazevoapi.GoFunctionIndexFromExitCode(ec)\n\t\t\tf := hostModuleGoFuncFromOpaque[api.GoModuleFunction](index, c.execCtx.goFunctionCallCalleeModuleContextOpaque)\n\t\t\tmod := c.callerModuleInstance()\n\t\t\tfunc() {\n\t\t\t\tif snapshotEnabled {\n\t\t\t\t\tdefer snapshotRecoverFn(c)\n\t\t\t\t}\n\t\t\t\tf.Call(ctx, mod, goCallStackView(c.execCtx.stackPointerBeforeGoCall))\n\t\t\t}()\n\t\t\t// Back to the native code.\n\t\t\tc.execCtx.exitCode = wazevoapi.ExitCodeOK\n\t\t\tafterGoFunctionCallEntrypoint(c.execCtx.goCallReturnAddress, c.execCtxPtr,\n\t\t\t\tuintptr(unsafe.Pointer(c.execCtx.stackPointerBeforeGoCall)), c.execCtx.framePointerBeforeGoCall)\n\t\tcase wazevoapi.ExitCodeCallGoModuleFunctionWithListener:\n\t\t\tindex := wazevoapi.GoFunctionIndexFromExitCode(ec)\n\t\t\tf := hostModuleGoFuncFromOpaque[api.GoModuleFunction](index, c.execCtx.goFunctionCallCalleeModuleContextOpaque)\n\t\t\tlisteners := hostModuleListenersSliceFromOpaque(c.execCtx.goFunctionCallCalleeModuleContextOpaque)\n\t\t\ts := goCallStackView(c.execCtx.stackPointerBeforeGoCall)\n\t\t\t// Call Listener.Before.\n\t\t\tcallerModule := c.callerModuleInstance()\n\t\t\tlistener := listeners[index]\n\t\t\thostModule := hostModuleFromOpaque(c.execCtx.goFunctionCallCalleeModuleContextOpaque)\n\t\t\tdef := hostModule.FunctionDefinition(wasm.Index(index))\n\t\t\tlistener.Before(ctx, callerModule, def, s, c.stackIterator(true))\n\t\t\t// Call into the Go function.\n\t\t\tfunc() {\n\t\t\t\tif snapshotEnabled {\n\t\t\t\t\tdefer snapshotRecoverFn(c)\n\t\t\t\t}\n\t\t\t\tf.Call(ctx, callerModule, s)\n\t\t\t}()\n\t\t\t// Call Listener.After.\n\t\t\tlistener.After(ctx, callerModule, def, s)\n\t\t\t// Back to the native code.\n\t\t\tc.execCtx.exitCode = wazevoapi.ExitCodeOK\n\t\t\tafterGoFunctionCallEntrypoint(c.execCtx.goCallReturnAddress, c.execCtxPtr,\n\t\t\t\tuintptr(unsafe.Pointer(c.execCtx.stackPointerBeforeGoCall)), c.execCtx.framePointerBeforeGoCall)\n\t\tcase wazevoapi.ExitCodeCallListenerBefore:\n\t\t\tstack := goCallStackView(c.execCtx.stackPointerBeforeGoCall)\n\t\t\tindex := wasm.Index(stack[0])\n\t\t\tmod := c.callerModuleInstance()\n\t\t\tlistener := mod.Engine.(*moduleEngine).listeners[index]\n\t\t\tdef := mod.Source.FunctionDefinition(index + mod.Source.ImportFunctionCount)\n\t\t\tlistener.Before(ctx, mod, def, stack[1:], c.stackIterator(false))\n\t\t\tc.execCtx.exitCode = wazevoapi.ExitCodeOK\n\t\t\tafterGoFunctionCallEntrypoint(c.execCtx.goCallReturnAddress, c.execCtxPtr,\n\t\t\t\tuintptr(unsafe.Pointer(c.execCtx.stackPointerBeforeGoCall)), c.execCtx.framePointerBeforeGoCall)\n\t\tcase wazevoapi.ExitCodeCallListenerAfter:\n\t\t\tstack := goCallStackView(c.execCtx.stackPointerBeforeGoCall)\n\t\t\tindex := wasm.Index(stack[0])\n\t\t\tmod := c.callerModuleInstance()\n\t\t\tlistener := mod.Engine.(*moduleEngine).listeners[index]\n\t\t\tdef := mod.Source.FunctionDefinition(index + mod.Source.ImportFunctionCount)\n\t\t\tlistener.After(ctx, mod, def, stack[1:])\n\t\t\tc.execCtx.exitCode = wazevoapi.ExitCodeOK\n\t\t\tafterGoFunctionCallEntrypoint(c.execCtx.goCallReturnAddress, c.execCtxPtr,\n\t\t\t\tuintptr(unsafe.Pointer(c.execCtx.stackPointerBeforeGoCall)), c.execCtx.framePointerBeforeGoCall)\n\t\tcase wazevoapi.ExitCodeCheckModuleExitCode:\n\t\t\t// Note: this operation must be done in Go, not native code. The reason is that\n\t\t\t// native code cannot be preempted and that means it can block forever if there are not\n\t\t\t// enough OS threads (which we don't have control over).\n\t\t\tif err := m.FailIfClosed(); err != nil {\n\t\t\t\tpanic(err)\n\t\t\t}\n\t\t\tc.execCtx.exitCode = wazevoapi.ExitCodeOK\n\t\t\tafterGoFunctionCallEntrypoint(c.execCtx.goCallReturnAddress, c.execCtxPtr,\n\t\t\t\tuintptr(unsafe.Pointer(c.execCtx.stackPointerBeforeGoCall)), c.execCtx.framePointerBeforeGoCall)\n\t\tcase wazevoapi.ExitCodeRefFunc:\n\t\t\tmod := c.callerModuleInstance()\n\t\t\ts := goCallStackView(c.execCtx.stackPointerBeforeGoCall)\n\t\t\tfuncIndex := wasm.Index(s[0])\n\t\t\tref := mod.Engine.FunctionInstanceReference(funcIndex)\n\t\t\ts[0] = uint64(ref)\n\t\t\tc.execCtx.exitCode = wazevoapi.ExitCodeOK\n\t\t\tafterGoFunctionCallEntrypoint(c.execCtx.goCallReturnAddress, c.execCtxPtr,\n\t\t\t\tuintptr(unsafe.Pointer(c.execCtx.stackPointerBeforeGoCall)), c.execCtx.framePointerBeforeGoCall)\n\t\tcase wazevoapi.ExitCodeMemoryWait32:\n\t\t\tmod := c.callerModuleInstance()\n\t\t\tmem := mod.MemoryInstance\n\t\t\tif !mem.Shared {\n\t\t\t\tpanic(wasmruntime.ErrRuntimeExpectedSharedMemory)\n\t\t\t}\n\n\t\t\ts := goCallStackView(c.execCtx.stackPointerBeforeGoCall)\n\t\t\ttimeout, exp, addr := int64(s[0]), uint32(s[1]), uintptr(s[2])\n\t\t\tbase := uintptr(unsafe.Pointer(&mem.Buffer[0]))\n\n\t\t\toffset := uint32(addr - base)\n\t\t\tres := mem.Wait32(offset, exp, timeout, func(mem *wasm.MemoryInstance, offset uint32) uint32 {\n\t\t\t\taddr := unsafe.Add(unsafe.Pointer(&mem.Buffer[0]), offset)\n\t\t\t\treturn atomic.LoadUint32((*uint32)(addr))\n\t\t\t})\n\t\t\ts[0] = res\n\t\t\tc.execCtx.exitCode = wazevoapi.ExitCodeOK\n\t\t\tafterGoFunctionCallEntrypoint(c.execCtx.goCallReturnAddress, c.execCtxPtr,\n\t\t\t\tuintptr(unsafe.Pointer(c.execCtx.stackPointerBeforeGoCall)), c.execCtx.framePointerBeforeGoCall)\n\t\tcase wazevoapi.ExitCodeMemoryWait64:\n\t\t\tmod := c.callerModuleInstance()\n\t\t\tmem := mod.MemoryInstance\n\t\t\tif !mem.Shared {\n\t\t\t\tpanic(wasmruntime.ErrRuntimeExpectedSharedMemory)\n\t\t\t}\n\n\t\t\ts := goCallStackView(c.execCtx.stackPointerBeforeGoCall)\n\t\t\ttimeout, exp, addr := int64(s[0]), uint64(s[1]), uintptr(s[2])\n\t\t\tbase := uintptr(unsafe.Pointer(&mem.Buffer[0]))\n\n\t\t\toffset := uint32(addr - base)\n\t\t\tres := mem.Wait64(offset, exp, timeout, func(mem *wasm.MemoryInstance, offset uint32) uint64 {\n\t\t\t\taddr := unsafe.Add(unsafe.Pointer(&mem.Buffer[0]), offset)\n\t\t\t\treturn atomic.LoadUint64((*uint64)(addr))\n\t\t\t})\n\t\t\ts[0] = uint64(res)\n\t\t\tc.execCtx.exitCode = wazevoapi.ExitCodeOK\n\t\t\tafterGoFunctionCallEntrypoint(c.execCtx.goCallReturnAddress, c.execCtxPtr,\n\t\t\t\tuintptr(unsafe.Pointer(c.execCtx.stackPointerBeforeGoCall)), c.execCtx.framePointerBeforeGoCall)\n\t\tcase wazevoapi.ExitCodeMemoryNotify:\n\t\t\tmod := c.callerModuleInstance()\n\t\t\tmem := mod.MemoryInstance\n\n\t\t\ts := goCallStackView(c.execCtx.stackPointerBeforeGoCall)\n\t\t\tcount, addr := uint32(s[0]), s[1]\n\t\t\toffset := uint32(uintptr(addr) - uintptr(unsafe.Pointer(&mem.Buffer[0])))\n\t\t\tres := mem.Notify(offset, count)\n\t\t\ts[0] = uint64(res)\n\t\t\tc.execCtx.exitCode = wazevoapi.ExitCodeOK\n\t\t\tafterGoFunctionCallEntrypoint(c.execCtx.goCallReturnAddress, c.execCtxPtr,\n\t\t\t\tuintptr(unsafe.Pointer(c.execCtx.stackPointerBeforeGoCall)), c.execCtx.framePointerBeforeGoCall)\n\t\tcase wazevoapi.ExitCodeUnreachable:\n\t\t\tpanic(wasmruntime.ErrRuntimeUnreachable)\n\t\tcase wazevoapi.ExitCodeMemoryOutOfBounds:\n\t\t\tpanic(wasmruntime.ErrRuntimeOutOfBoundsMemoryAccess)\n\t\tcase wazevoapi.ExitCodeTableOutOfBounds:\n\t\t\tpanic(wasmruntime.ErrRuntimeInvalidTableAccess)\n\t\tcase wazevoapi.ExitCodeIndirectCallNullPointer:\n\t\t\tpanic(wasmruntime.ErrRuntimeInvalidTableAccess)\n\t\tcase wazevoapi.ExitCodeIndirectCallTypeMismatch:\n\t\t\tpanic(wasmruntime.ErrRuntimeIndirectCallTypeMismatch)\n\t\tcase wazevoapi.ExitCodeIntegerOverflow:\n\t\t\tpanic(wasmruntime.ErrRuntimeIntegerOverflow)\n\t\tcase wazevoapi.ExitCodeIntegerDivisionByZero:\n\t\t\tpanic(wasmruntime.ErrRuntimeIntegerDivideByZero)\n\t\tcase wazevoapi.ExitCodeInvalidConversionToInteger:\n\t\t\tpanic(wasmruntime.ErrRuntimeInvalidConversionToInteger)\n\t\tcase wazevoapi.ExitCodeUnalignedAtomic:\n\t\t\tpanic(wasmruntime.ErrRuntimeUnalignedAtomic)\n\t\tdefault:\n\t\t\tpanic(\"BUG\")\n\t\t}\n\t}\n}\n\nfunc (c *callEngine) callerModuleInstance() *wasm.ModuleInstance {\n\treturn moduleInstanceFromOpaquePtr(c.execCtx.callerModuleContextPtr)\n}\n\nconst callStackCeiling = uintptr(50000000) // in uint64 (8 bytes) == 400000000 bytes in total == 400mb.\n\nfunc (c *callEngine) growStackWithGuarded() (newSP uintptr, newFP uintptr, err error) {\n\tif wazevoapi.StackGuardCheckEnabled {\n\t\twazevoapi.CheckStackGuardPage(c.stack)\n\t}\n\tnewSP, newFP, err = c.growStack()\n\tif err != nil {\n\t\treturn\n\t}\n\tif wazevoapi.StackGuardCheckEnabled {\n\t\tc.execCtx.stackBottomPtr = &c.stack[wazevoapi.StackGuardCheckGuardPageSize]\n\t}\n\treturn\n}\n\n// growStack grows the stack, and returns the new stack pointer.\nfunc (c *callEngine) growStack() (newSP, newFP uintptr, err error) {\n\tcurrentLen := uintptr(len(c.stack))\n\tif callStackCeiling < currentLen {\n\t\terr = wasmruntime.ErrRuntimeStackOverflow\n\t\treturn\n\t}\n\n\tnewLen := 2*currentLen + c.execCtx.stackGrowRequiredSize + 16 // Stack might be aligned to 16 bytes, so add 16 bytes just in case.\n\tnewSP, newFP, c.stackTop, c.stack = c.cloneStack(newLen)\n\tc.execCtx.stackBottomPtr = &c.stack[0]\n\treturn\n}\n\nfunc (c *callEngine) cloneStack(l uintptr) (newSP, newFP, newTop uintptr, newStack []byte) {\n\tnewStack = make([]byte, l)\n\n\trelSp := c.stackTop - uintptr(unsafe.Pointer(c.execCtx.stackPointerBeforeGoCall))\n\trelFp := c.stackTop - c.execCtx.framePointerBeforeGoCall\n\n\t// Copy the existing contents in the previous Go-allocated stack into the new one.\n\tvar prevStackAligned, newStackAligned []byte\n\t{\n\t\t//nolint:staticcheck\n\t\tsh := (*reflect.SliceHeader)(unsafe.Pointer(&prevStackAligned))\n\t\tsh.Data = c.stackTop - relSp\n\t\tsh.Len = int(relSp)\n\t\tsh.Cap = int(relSp)\n\t}\n\tnewTop = alignedStackTop(newStack)\n\t{\n\t\tnewSP = newTop - relSp\n\t\tnewFP = newTop - relFp\n\t\t//nolint:staticcheck\n\t\tsh := (*reflect.SliceHeader)(unsafe.Pointer(&newStackAligned))\n\t\tsh.Data = newSP\n\t\tsh.Len = int(relSp)\n\t\tsh.Cap = int(relSp)\n\t}\n\tcopy(newStackAligned, prevStackAligned)\n\treturn\n}\n\nfunc (c *callEngine) stackIterator(onHostCall bool) experimental.StackIterator {\n\tc.stackIteratorImpl.reset(c, onHostCall)\n\treturn &c.stackIteratorImpl\n}\n\n// stackIterator implements experimental.StackIterator.\ntype stackIterator struct {\n\tretAddrs      []uintptr\n\tretAddrCursor int\n\teng           *engine\n\tpc            uint64\n\n\tcurrentDef *wasm.FunctionDefinition\n}\n\nfunc (si *stackIterator) reset(c *callEngine, onHostCall bool) {\n\tif onHostCall {\n\t\tsi.retAddrs = append(si.retAddrs[:0], uintptr(unsafe.Pointer(c.execCtx.goCallReturnAddress)))\n\t} else {\n\t\tsi.retAddrs = si.retAddrs[:0]\n\t}\n\tsi.retAddrs = unwindStack(uintptr(unsafe.Pointer(c.execCtx.stackPointerBeforeGoCall)), c.execCtx.framePointerBeforeGoCall, c.stackTop, si.retAddrs)\n\tsi.retAddrs = si.retAddrs[:len(si.retAddrs)-1] // the last return addr is the trampoline, so we skip it.\n\tsi.retAddrCursor = 0\n\tsi.eng = c.parent.parent.parent\n}\n\n// Next implements the same method as documented on experimental.StackIterator.\nfunc (si *stackIterator) Next() bool {\n\tif si.retAddrCursor >= len(si.retAddrs) {\n\t\treturn false\n\t}\n\n\taddr := si.retAddrs[si.retAddrCursor]\n\tcm := si.eng.compiledModuleOfAddr(addr)\n\tif cm != nil {\n\t\tindex := cm.functionIndexOf(addr)\n\t\tdef := cm.module.FunctionDefinition(cm.module.ImportFunctionCount + index)\n\t\tsi.currentDef = def\n\t\tsi.retAddrCursor++\n\t\tsi.pc = uint64(addr)\n\t\treturn true\n\t}\n\treturn false\n}\n\n// ProgramCounter implements the same method as documented on experimental.StackIterator.\nfunc (si *stackIterator) ProgramCounter() experimental.ProgramCounter {\n\treturn experimental.ProgramCounter(si.pc)\n}\n\n// Function implements the same method as documented on experimental.StackIterator.\nfunc (si *stackIterator) Function() experimental.InternalFunction {\n\treturn si\n}\n\n// Definition implements the same method as documented on experimental.InternalFunction.\nfunc (si *stackIterator) Definition() api.FunctionDefinition {\n\treturn si.currentDef\n}\n\n// SourceOffsetForPC implements the same method as documented on experimental.InternalFunction.\nfunc (si *stackIterator) SourceOffsetForPC(pc experimental.ProgramCounter) uint64 {\n\tupc := uintptr(pc)\n\tcm := si.eng.compiledModuleOfAddr(upc)\n\treturn cm.getSourceOffset(upc)\n}\n\n// snapshot implements experimental.Snapshot\ntype snapshot struct {\n\tsp, fp, top    uintptr\n\treturnAddress  *byte\n\tstack          []byte\n\tsavedRegisters [64][2]uint64\n\tret            []uint64\n\tc              *callEngine\n}\n\n// Snapshot implements the same method as documented on experimental.Snapshotter.\nfunc (c *callEngine) Snapshot() experimental.Snapshot {\n\treturnAddress := c.execCtx.goCallReturnAddress\n\toldTop, oldSp := c.stackTop, uintptr(unsafe.Pointer(c.execCtx.stackPointerBeforeGoCall))\n\tnewSP, newFP, newTop, newStack := c.cloneStack(uintptr(len(c.stack)) + 16)\n\tadjustClonedStack(oldSp, oldTop, newSP, newFP, newTop)\n\treturn &snapshot{\n\t\tsp:             newSP,\n\t\tfp:             newFP,\n\t\ttop:            newTop,\n\t\tsavedRegisters: c.execCtx.savedRegisters,\n\t\treturnAddress:  returnAddress,\n\t\tstack:          newStack,\n\t\tc:              c,\n\t}\n}\n\n// Restore implements the same method as documented on experimental.Snapshot.\nfunc (s *snapshot) Restore(ret []uint64) {\n\ts.ret = ret\n\tpanic(s)\n}\n\nfunc (s *snapshot) doRestore() {\n\tspp := *(**uint64)(unsafe.Pointer(&s.sp))\n\tview := goCallStackView(spp)\n\tcopy(view, s.ret)\n\n\tc := s.c\n\tc.stack = s.stack\n\tc.stackTop = s.top\n\tec := &c.execCtx\n\tec.stackBottomPtr = &c.stack[0]\n\tec.stackPointerBeforeGoCall = spp\n\tec.framePointerBeforeGoCall = s.fp\n\tec.goCallReturnAddress = s.returnAddress\n\tec.savedRegisters = s.savedRegisters\n}\n\n// Error implements the same method on error.\nfunc (s *snapshot) Error() string {\n\treturn \"unhandled snapshot restore, this generally indicates restore was called from a different \" +\n\t\t\"exported function invocation than snapshot\"\n}\n\nfunc snapshotRecoverFn(c *callEngine) {\n\tif r := recover(); r != nil {\n\t\tif s, ok := r.(*snapshot); ok && s.c == c {\n\t\t\ts.doRestore()\n\t\t} else {\n\t\t\tpanic(r)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/engine.go",
    "content": "package wazevo\n\nimport (\n\t\"context\"\n\t\"encoding/hex\"\n\t\"errors\"\n\t\"fmt\"\n\t\"runtime\"\n\t\"slices\"\n\t\"sort\"\n\t\"sync\"\n\t\"sync/atomic\"\n\t\"unsafe\"\n\n\t\"github.com/tetratelabs/wazero/api\"\n\t\"github.com/tetratelabs/wazero/experimental\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/backend\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/frontend\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/ssa\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi\"\n\t\"github.com/tetratelabs/wazero/internal/filecache\"\n\t\"github.com/tetratelabs/wazero/internal/platform\"\n\t\"github.com/tetratelabs/wazero/internal/version\"\n\t\"github.com/tetratelabs/wazero/internal/wasm\"\n)\n\ntype (\n\tcompiledModuleWithCount struct {\n\t\t*compiledModule\n\t\trefCount int\n\t}\n\t// engine implements wasm.Engine.\n\tengine struct {\n\t\twazeroVersion   string\n\t\tfileCache       filecache.Cache\n\t\tcompiledModules map[wasm.ModuleID]*compiledModuleWithCount\n\t\t// sortedCompiledModules is a list of compiled modules sorted by the initial address of the executable.\n\t\tsortedCompiledModules []*compiledModule\n\t\tmux                   sync.RWMutex\n\t\t// sharedFunctions is compiled functions shared by all modules.\n\t\tsharedFunctions *sharedFunctions\n\t\t// setFinalizer defaults to runtime.SetFinalizer, but overridable for tests.\n\t\tsetFinalizer func(obj interface{}, finalizer interface{})\n\n\t\t// The followings are reused for compiling shared functions.\n\t\tmachine backend.Machine\n\t\tbe      backend.Compiler\n\t}\n\n\tsharedFunctions struct {\n\t\t// The compiled trampolines executable.\n\t\texecutable []byte\n\t\t// memoryGrowAddress is the address of memory.grow builtin function.\n\t\tmemoryGrowAddress *byte\n\t\t// checkModuleExitCodeAddress is the address of checking module instance exit code.\n\t\t// This is used when ensureTermination is true.\n\t\tcheckModuleExitCodeAddress *byte\n\t\t// stackGrowAddress is the address of growing stack builtin function.\n\t\tstackGrowAddress *byte\n\t\t// tableGrowAddress is the address of table.grow builtin function.\n\t\ttableGrowAddress *byte\n\t\t// refFuncAddress is the address of ref.func builtin function.\n\t\trefFuncAddress *byte\n\t\t// memoryWait32Address is the address of memory.wait32 builtin function\n\t\tmemoryWait32Address *byte\n\t\t// memoryWait64Address is the address of memory.wait64 builtin function\n\t\tmemoryWait64Address *byte\n\t\t// memoryNotifyAddress is the address of memory.notify builtin function\n\t\tmemoryNotifyAddress *byte\n\t\tlistenerTrampolines listenerTrampolines\n\t}\n\n\tlistenerTrampolines = map[*wasm.FunctionType]struct {\n\t\texecutable []byte\n\t\tbefore     *byte\n\t\tafter      *byte\n\t}\n\n\t// compiledModule is a compiled variant of a wasm.Module and ready to be used for instantiation.\n\tcompiledModule struct {\n\t\t*executables\n\t\t// functionOffsets maps a local function index to the offset in the executable.\n\t\tfunctionOffsets           []int\n\t\tparent                    *engine\n\t\tmodule                    *wasm.Module\n\t\tensureTermination         bool\n\t\tlisteners                 []experimental.FunctionListener\n\t\tlistenerBeforeTrampolines []*byte\n\t\tlistenerAfterTrampolines  []*byte\n\n\t\t// The followings are only available for non host modules.\n\n\t\toffsets         wazevoapi.ModuleContextOffsetData\n\t\tsharedFunctions *sharedFunctions\n\t\tsourceMap       sourceMap\n\t}\n\n\texecutables struct {\n\t\texecutable         []byte\n\t\tentryPreambles     []byte\n\t\tentryPreamblesPtrs []*byte\n\t}\n)\n\n// sourceMap is a mapping from the offset of the executable to the offset of the original wasm binary.\ntype sourceMap struct {\n\t// executableOffsets is a sorted list of offsets of the executable. This is index-correlated with wasmBinaryOffsets,\n\t// in other words executableOffsets[i] is the offset of the executable which corresponds to the offset of a Wasm\n\t// binary pointed by wasmBinaryOffsets[i].\n\texecutableOffsets []uintptr\n\t// wasmBinaryOffsets is the counterpart of executableOffsets.\n\twasmBinaryOffsets []uint64\n}\n\nvar _ wasm.Engine = (*engine)(nil)\n\n// NewEngine returns the implementation of wasm.Engine.\nfunc NewEngine(ctx context.Context, _ api.CoreFeatures, fc filecache.Cache) wasm.Engine {\n\tmachine := newMachine()\n\tbe := backend.NewCompiler(ctx, machine, ssa.NewBuilder())\n\te := &engine{\n\t\tcompiledModules: make(map[wasm.ModuleID]*compiledModuleWithCount),\n\t\tsetFinalizer:    runtime.SetFinalizer,\n\t\tmachine:         machine,\n\t\tbe:              be,\n\t\tfileCache:       fc,\n\t\twazeroVersion:   version.GetWazeroVersion(),\n\t}\n\te.compileSharedFunctions()\n\treturn e\n}\n\n// CompileModule implements wasm.Engine.\nfunc (e *engine) CompileModule(ctx context.Context, module *wasm.Module, listeners []experimental.FunctionListener, ensureTermination bool) (err error) {\n\tif wazevoapi.PerfMapEnabled {\n\t\twazevoapi.PerfMap.Lock()\n\t\tdefer wazevoapi.PerfMap.Unlock()\n\t}\n\n\tif _, ok, err := e.getCompiledModule(module, listeners, ensureTermination); ok { // cache hit!\n\t\treturn nil\n\t} else if err != nil {\n\t\treturn err\n\t}\n\n\tif wazevoapi.DeterministicCompilationVerifierEnabled {\n\t\tctx = wazevoapi.NewDeterministicCompilationVerifierContext(ctx, len(module.CodeSection))\n\t}\n\tcm, err := e.compileModule(ctx, module, listeners, ensureTermination)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif err = e.addCompiledModule(module, cm); err != nil {\n\t\treturn err\n\t}\n\n\tif wazevoapi.DeterministicCompilationVerifierEnabled {\n\t\tfor i := 0; i < wazevoapi.DeterministicCompilationVerifyingIter; i++ {\n\t\t\t_, err := e.compileModule(ctx, module, listeners, ensureTermination)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(listeners) > 0 {\n\t\tcm.listeners = listeners\n\t\tcm.listenerBeforeTrampolines = make([]*byte, len(module.TypeSection))\n\t\tcm.listenerAfterTrampolines = make([]*byte, len(module.TypeSection))\n\t\tfor i := range module.TypeSection {\n\t\t\ttyp := &module.TypeSection[i]\n\t\t\tbefore, after := e.getListenerTrampolineForType(typ)\n\t\t\tcm.listenerBeforeTrampolines[i] = before\n\t\t\tcm.listenerAfterTrampolines[i] = after\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (exec *executables) compileEntryPreambles(m *wasm.Module, machine backend.Machine, be backend.Compiler) {\n\tif len(m.TypeSection) == 0 {\n\t\treturn\n\t}\n\n\tvar preambles []byte\n\tsizes := make([]int, len(m.TypeSection))\n\n\tfor i := range sizes {\n\t\ttyp := &m.TypeSection[i]\n\t\tsig := frontend.SignatureForWasmFunctionType(typ)\n\t\tbe.Init()\n\t\tbuf := machine.CompileEntryPreamble(&sig)\n\t\tpreambles = append(preambles, buf...)\n\t\talign := 15 & -len(preambles) // Align 16-bytes boundary.\n\t\tpreambles = append(preambles, make([]byte, align)...)\n\t\tsizes[i] = len(buf) + align\n\t}\n\n\texec.entryPreambles = mmapExecutable(preambles)\n\texec.entryPreamblesPtrs = make([]*byte, len(sizes))\n\n\toffset := 0\n\tfor i, size := range sizes {\n\t\tptr := &exec.entryPreambles[offset]\n\t\texec.entryPreamblesPtrs[i] = ptr\n\t\toffset += size\n\n\t\tif wazevoapi.PerfMapEnabled {\n\t\t\ttyp := &m.TypeSection[i]\n\t\t\twazevoapi.PerfMap.AddEntry(uintptr(unsafe.Pointer(ptr)),\n\t\t\t\tuint64(size), fmt.Sprintf(\"entry_preamble::type=%s\", typ.String()))\n\t\t}\n\t}\n}\n\nfunc (e *engine) compileModule(ctx context.Context, module *wasm.Module, listeners []experimental.FunctionListener, ensureTermination bool) (*compiledModule, error) {\n\tif module.IsHostModule {\n\t\treturn e.compileHostModule(ctx, module, listeners)\n\t}\n\n\twithListener := len(listeners) > 0\n\tcm := &compiledModule{\n\t\toffsets: wazevoapi.NewModuleContextOffsetData(module, withListener), parent: e, module: module,\n\t\tensureTermination: ensureTermination,\n\t\texecutables:       &executables{},\n\t}\n\n\timportedFns, localFns := int(module.ImportFunctionCount), len(module.FunctionSection)\n\tif localFns == 0 {\n\t\treturn cm, nil\n\t}\n\n\tmachine := newMachine()\n\trelocator, err := newEngineRelocator(machine, importedFns, localFns)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tneedSourceInfo := module.DWARFLines != nil\n\n\tssaBuilder := ssa.NewBuilder()\n\tbe := backend.NewCompiler(ctx, machine, ssaBuilder)\n\tcm.executables.compileEntryPreambles(module, machine, be)\n\tcm.functionOffsets = make([]int, localFns)\n\n\tvar indexes []int\n\tif wazevoapi.DeterministicCompilationVerifierEnabled {\n\t\t// The compilation must be deterministic regardless of the order of functions being compiled.\n\t\tindexes = wazevoapi.DeterministicCompilationVerifierRandomizeIndexes(ctx)\n\t}\n\n\tif workers := experimental.GetCompilationWorkers(ctx); workers <= 1 {\n\t\t// Compile with a single goroutine.\n\t\tfe := frontend.NewFrontendCompiler(module, ssaBuilder, &cm.offsets, ensureTermination, withListener, needSourceInfo)\n\n\t\tfor i := range module.CodeSection {\n\t\t\tif wazevoapi.DeterministicCompilationVerifierEnabled {\n\t\t\t\ti = indexes[i]\n\t\t\t}\n\n\t\t\tfidx := wasm.Index(i + importedFns)\n\t\t\tfctx := functionContext(ctx, module, i, fidx)\n\n\t\t\tneedListener := len(listeners) > i && listeners[i] != nil\n\t\t\tbody, relsPerFunc, err := e.compileLocalWasmFunction(fctx, module, wasm.Index(i), fe, ssaBuilder, be, needListener)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"compile function %d/%d: %v\", i, len(module.CodeSection)-1, err)\n\t\t\t}\n\n\t\t\trelocator.appendFunction(fctx, module, cm, i, fidx, body, relsPerFunc, be.SourceOffsetInfo())\n\t\t}\n\t} else {\n\t\t// Compile with N worker goroutines.\n\t\t// Collect compiled functions across workers in a slice,\n\t\t// to be added to the relocator in-order and resolved serially at the end.\n\t\t// This uses more memory and CPU (across cores), but can be significantly faster.\n\t\ttype compiledFunc struct {\n\t\t\tfctx        context.Context\n\t\t\tfnum        int\n\t\t\tfidx        wasm.Index\n\t\t\tbody        []byte\n\t\t\trelsPerFunc []backend.RelocationInfo\n\t\t\toffsPerFunc []backend.SourceOffsetInfo\n\t\t}\n\n\t\tcompiledFuncs := make([]compiledFunc, len(module.CodeSection))\n\t\tctx, cancel := context.WithCancelCause(ctx)\n\t\tdefer cancel(nil)\n\n\t\tvar count atomic.Uint32\n\t\tvar wg sync.WaitGroup\n\t\twg.Add(workers)\n\n\t\tfor range workers {\n\t\t\tgo func() {\n\t\t\t\tdefer wg.Done()\n\n\t\t\t\t// Creates new compiler instances which are reused for each function.\n\t\t\t\tmachine := newMachine()\n\t\t\t\tssaBuilder := ssa.NewBuilder()\n\t\t\t\tbe := backend.NewCompiler(ctx, machine, ssaBuilder)\n\t\t\t\tfe := frontend.NewFrontendCompiler(module, ssaBuilder, &cm.offsets, ensureTermination, withListener, needSourceInfo)\n\n\t\t\t\tfor {\n\t\t\t\t\tif err := ctx.Err(); err != nil {\n\t\t\t\t\t\t// Compilation canceled!\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\n\t\t\t\t\ti := int(count.Add(1)) - 1\n\t\t\t\t\tif i >= len(module.CodeSection) {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\n\t\t\t\t\tif wazevoapi.DeterministicCompilationVerifierEnabled {\n\t\t\t\t\t\ti = indexes[i]\n\t\t\t\t\t}\n\n\t\t\t\t\tfidx := wasm.Index(i + importedFns)\n\t\t\t\t\tfctx := functionContext(ctx, module, i, fidx)\n\n\t\t\t\t\tneedListener := len(listeners) > i && listeners[i] != nil\n\t\t\t\t\tbody, relsPerFunc, err := e.compileLocalWasmFunction(fctx, module, wasm.Index(i), fe, ssaBuilder, be, needListener)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\tcancel(fmt.Errorf(\"compile function %d/%d: %v\", i, len(module.CodeSection)-1, err))\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\n\t\t\t\t\tcompiledFuncs[i] = compiledFunc{\n\t\t\t\t\t\tfctx, i, fidx, body,\n\t\t\t\t\t\t// These slices are internal to the backend compiler and since we are going to buffer them instead\n\t\t\t\t\t\t// of process them immediately we need to copy the memory.\n\t\t\t\t\t\tslices.Clone(relsPerFunc),\n\t\t\t\t\t\tslices.Clone(be.SourceOffsetInfo()),\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}()\n\t\t}\n\n\t\twg.Wait()\n\t\tif err := context.Cause(ctx); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tfor i := range compiledFuncs {\n\t\t\tfn := &compiledFuncs[i]\n\t\t\trelocator.appendFunction(fn.fctx, module, cm, fn.fnum, fn.fidx, fn.body, fn.relsPerFunc, fn.offsPerFunc)\n\t\t}\n\t}\n\n\t// Allocate executable memory and then copy the generated machine code.\n\texecutable, err := platform.MmapCodeSegment(relocator.totalSize)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tcm.executable = executable\n\n\tfor i, b := range relocator.bodies {\n\t\toffset := cm.functionOffsets[i]\n\t\tcopy(executable[offset:], b)\n\t}\n\n\tif wazevoapi.PerfMapEnabled {\n\t\twazevoapi.PerfMap.Flush(uintptr(unsafe.Pointer(&executable[0])), cm.functionOffsets)\n\t}\n\n\tif needSourceInfo {\n\t\tfor i := range cm.sourceMap.executableOffsets {\n\t\t\tcm.sourceMap.executableOffsets[i] += uintptr(unsafe.Pointer(&cm.executable[0]))\n\t\t}\n\t}\n\n\trelocator.resolveRelocations(machine, executable, importedFns)\n\n\tif err = platform.MprotectRX(executable); err != nil {\n\t\treturn nil, err\n\t}\n\tcm.sharedFunctions = e.sharedFunctions\n\te.setFinalizer(cm.executables, executablesFinalizer)\n\treturn cm, nil\n}\n\nfunc functionContext(ctx context.Context, module *wasm.Module, fnum int, fidx wasm.Index) context.Context {\n\tif wazevoapi.NeedFunctionNameInContext {\n\t\tdef := module.FunctionDefinition(fidx)\n\t\tname := def.DebugName()\n\t\tif len(def.ExportNames()) > 0 {\n\t\t\tname = def.ExportNames()[0]\n\t\t}\n\t\tctx = wazevoapi.SetCurrentFunctionName(ctx, fnum, fmt.Sprintf(\"[%d/%d]%s\", fnum, len(module.CodeSection)-1, name))\n\t}\n\treturn ctx\n}\n\ntype engineRelocator struct {\n\tbodies                      [][]byte\n\trefToBinaryOffset           []int\n\trels                        []backend.RelocationInfo\n\ttotalSize                   int // Total binary size of the executable.\n\ttrampolineInterval          int\n\tcallTrampolineIslandSize    int\n\tcallTrampolineIslandOffsets []int // Holds the offsets of trampoline islands.\n}\n\nfunc newEngineRelocator(\n\tmachine backend.Machine,\n\timportedFns, localFns int,\n) (r engineRelocator, err error) {\n\t// Trampoline relocation related variables.\n\tr.trampolineInterval, r.callTrampolineIslandSize, err = machine.CallTrampolineIslandInfo(localFns)\n\tr.refToBinaryOffset = make([]int, importedFns+localFns)\n\tr.bodies = make([][]byte, 0, localFns)\n\treturn\n}\n\nfunc (r *engineRelocator) resolveRelocations(machine backend.Machine, executable []byte, importedFns int) {\n\t// Resolve relocations for local function calls.\n\tif len(r.rels) > 0 {\n\t\tmachine.ResolveRelocations(r.refToBinaryOffset, importedFns, executable, r.rels, r.callTrampolineIslandOffsets)\n\t}\n}\n\nfunc (r *engineRelocator) appendFunction(\n\tctx context.Context,\n\tmodule *wasm.Module,\n\tcm *compiledModule,\n\tfnum int, fidx wasm.Index,\n\tbody []byte,\n\trelsPerFunc []backend.RelocationInfo,\n\toffsPerFunc []backend.SourceOffsetInfo,\n) {\n\t// Align 16-bytes boundary.\n\tr.totalSize = (r.totalSize + 15) &^ 15\n\tcm.functionOffsets[fnum] = r.totalSize\n\n\tneedSourceInfo := module.DWARFLines != nil\n\tif needSourceInfo {\n\t\t// At the beginning of the function, we add the offset of the function body so that\n\t\t// we can resolve the source location of the call site of before listener call.\n\t\tcm.sourceMap.executableOffsets = append(cm.sourceMap.executableOffsets, uintptr(r.totalSize))\n\t\tcm.sourceMap.wasmBinaryOffsets = append(cm.sourceMap.wasmBinaryOffsets, module.CodeSection[fnum].BodyOffsetInCodeSection)\n\n\t\tfor _, info := range offsPerFunc {\n\t\t\tcm.sourceMap.executableOffsets = append(cm.sourceMap.executableOffsets, uintptr(r.totalSize)+uintptr(info.ExecutableOffset))\n\t\t\tcm.sourceMap.wasmBinaryOffsets = append(cm.sourceMap.wasmBinaryOffsets, uint64(info.SourceOffset))\n\t\t}\n\t}\n\n\tfref := frontend.FunctionIndexToFuncRef(fidx)\n\tr.refToBinaryOffset[fref] = r.totalSize\n\n\t// At this point, relocation offsets are relative to the start of the function body,\n\t// so we adjust it to the start of the executable.\n\tr.rels = slices.Grow(r.rels, len(relsPerFunc))\n\tfor _, rel := range relsPerFunc {\n\t\trel.Offset += int64(r.totalSize)\n\t\tr.rels = append(r.rels, rel)\n\t}\n\n\tr.totalSize += len(body)\n\tr.bodies = append(r.bodies, body)\n\tif wazevoapi.PrintMachineCodeHexPerFunction {\n\t\tfmt.Printf(\"[[[machine code for %s]]]\\n%s\\n\\n\", wazevoapi.GetCurrentFunctionName(ctx), hex.EncodeToString(body))\n\t}\n\n\tif r.callTrampolineIslandSize > 0 {\n\t\t// If the total size exceeds the trampoline interval, we need to add a trampoline island.\n\t\tif r.totalSize/r.trampolineInterval > len(r.callTrampolineIslandOffsets) {\n\t\t\tr.callTrampolineIslandOffsets = append(r.callTrampolineIslandOffsets, r.totalSize)\n\t\t\tr.totalSize += r.callTrampolineIslandSize\n\t\t}\n\t}\n}\n\nfunc (e *engine) compileLocalWasmFunction(\n\tctx context.Context,\n\tmodule *wasm.Module,\n\tlocalFunctionIndex wasm.Index,\n\tfe *frontend.Compiler,\n\tssaBuilder ssa.Builder,\n\tbe backend.Compiler,\n\tneedListener bool,\n) (body []byte, rels []backend.RelocationInfo, err error) {\n\ttypIndex := module.FunctionSection[localFunctionIndex]\n\ttyp := &module.TypeSection[typIndex]\n\tcodeSeg := &module.CodeSection[localFunctionIndex]\n\n\t// Initializes both frontend and backend compilers.\n\tfe.Init(localFunctionIndex, typIndex, typ, codeSeg.LocalTypes, codeSeg.Body, needListener, codeSeg.BodyOffsetInCodeSection)\n\tbe.Init()\n\n\t// Lower Wasm to SSA.\n\tfe.LowerToSSA()\n\tif wazevoapi.PrintSSA && wazevoapi.PrintEnabledIndex(ctx) {\n\t\tfmt.Printf(\"[[[SSA for %s]]]%s\\n\", wazevoapi.GetCurrentFunctionName(ctx), ssaBuilder.Format())\n\t}\n\n\tif wazevoapi.DeterministicCompilationVerifierEnabled {\n\t\twazevoapi.VerifyOrSetDeterministicCompilationContextValue(ctx, \"SSA\", ssaBuilder.Format())\n\t}\n\n\t// Run SSA-level optimization passes.\n\tssaBuilder.RunPasses()\n\n\tif wazevoapi.PrintOptimizedSSA && wazevoapi.PrintEnabledIndex(ctx) {\n\t\tfmt.Printf(\"[[[Optimized SSA for %s]]]%s\\n\", wazevoapi.GetCurrentFunctionName(ctx), ssaBuilder.Format())\n\t}\n\n\tif wazevoapi.DeterministicCompilationVerifierEnabled {\n\t\twazevoapi.VerifyOrSetDeterministicCompilationContextValue(ctx, \"Optimized SSA\", ssaBuilder.Format())\n\t}\n\n\t// Now our ssaBuilder contains the necessary information to further lower them to\n\t// machine code.\n\toriginal, rels, err := be.Compile(ctx)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"ssa->machine code: %v\", err)\n\t}\n\n\t// TODO: optimize as zero copy.\n\treturn slices.Clone(original), rels, nil\n}\n\nfunc (e *engine) compileHostModule(ctx context.Context, module *wasm.Module, listeners []experimental.FunctionListener) (*compiledModule, error) {\n\tmachine := newMachine()\n\tbe := backend.NewCompiler(ctx, machine, ssa.NewBuilder())\n\n\tnum := len(module.CodeSection)\n\tcm := &compiledModule{module: module, listeners: listeners, executables: &executables{}}\n\tcm.functionOffsets = make([]int, num)\n\ttotalSize := 0 // Total binary size of the executable.\n\tbodies := make([][]byte, num)\n\tvar sig ssa.Signature\n\tfor i := range module.CodeSection {\n\t\ttotalSize = (totalSize + 15) &^ 15\n\t\tcm.functionOffsets[i] = totalSize\n\n\t\ttypIndex := module.FunctionSection[i]\n\t\ttyp := &module.TypeSection[typIndex]\n\n\t\t// We can relax until the index fits together in ExitCode as we do in wazevoapi.ExitCodeCallGoModuleFunctionWithIndex.\n\t\t// However, 1 << 16 should be large enough for a real use case.\n\t\tconst hostFunctionNumMaximum = 1 << 16\n\t\tif i >= hostFunctionNumMaximum {\n\t\t\treturn nil, fmt.Errorf(\"too many host functions (maximum %d)\", hostFunctionNumMaximum)\n\t\t}\n\n\t\tsig.ID = ssa.SignatureID(typIndex) // This is important since we reuse the `machine` which caches the ABI based on the SignatureID.\n\t\tsig.Params = append(sig.Params[:0],\n\t\t\tssa.TypeI64, // First argument must be exec context.\n\t\t\tssa.TypeI64, // The second argument is the moduleContextOpaque of this host module.\n\t\t)\n\t\tfor _, t := range typ.Params {\n\t\t\tsig.Params = append(sig.Params, frontend.WasmTypeToSSAType(t))\n\t\t}\n\n\t\tsig.Results = sig.Results[:0]\n\t\tfor _, t := range typ.Results {\n\t\t\tsig.Results = append(sig.Results, frontend.WasmTypeToSSAType(t))\n\t\t}\n\n\t\tc := &module.CodeSection[i]\n\t\tif c.GoFunc == nil {\n\t\t\tpanic(\"BUG: GoFunc must be set for host module\")\n\t\t}\n\n\t\twithListener := len(listeners) > 0 && listeners[i] != nil\n\t\tvar exitCode wazevoapi.ExitCode\n\t\tfn := c.GoFunc\n\t\tswitch fn.(type) {\n\t\tcase api.GoModuleFunction:\n\t\t\texitCode = wazevoapi.ExitCodeCallGoModuleFunctionWithIndex(i, withListener)\n\t\tcase api.GoFunction:\n\t\t\texitCode = wazevoapi.ExitCodeCallGoFunctionWithIndex(i, withListener)\n\t\t}\n\n\t\tbe.Init()\n\t\tmachine.CompileGoFunctionTrampoline(exitCode, &sig, true)\n\t\tif err := be.Finalize(ctx); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tbody := be.Buf()\n\n\t\tif wazevoapi.PerfMapEnabled {\n\t\t\tname := module.FunctionDefinition(wasm.Index(i)).DebugName()\n\t\t\twazevoapi.PerfMap.AddModuleEntry(i,\n\t\t\t\tint64(totalSize),\n\t\t\t\tuint64(len(body)),\n\t\t\t\tfmt.Sprintf(\"trampoline:%s\", name))\n\t\t}\n\n\t\t// TODO: optimize as zero copy.\n\t\tbodies[i] = slices.Clone(body)\n\t\ttotalSize += len(body)\n\t}\n\n\tif totalSize == 0 {\n\t\t// Empty module.\n\t\treturn cm, nil\n\t}\n\n\t// Allocate executable memory and then copy the generated machine code.\n\texecutable, err := platform.MmapCodeSegment(totalSize)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tcm.executable = executable\n\n\tfor i, b := range bodies {\n\t\toffset := cm.functionOffsets[i]\n\t\tcopy(executable[offset:], b)\n\t}\n\n\tif wazevoapi.PerfMapEnabled {\n\t\twazevoapi.PerfMap.Flush(uintptr(unsafe.Pointer(&executable[0])), cm.functionOffsets)\n\t}\n\n\tif err = platform.MprotectRX(executable); err != nil {\n\t\treturn nil, err\n\t}\n\te.setFinalizer(cm.executables, executablesFinalizer)\n\treturn cm, nil\n}\n\n// Close implements wasm.Engine.\nfunc (e *engine) Close() (err error) {\n\te.mux.Lock()\n\tdefer e.mux.Unlock()\n\te.sortedCompiledModules = nil\n\te.compiledModules = nil\n\te.sharedFunctions = nil\n\treturn nil\n}\n\n// CompiledModuleCount implements wasm.Engine.\nfunc (e *engine) CompiledModuleCount() uint32 {\n\te.mux.RLock()\n\tdefer e.mux.RUnlock()\n\treturn uint32(len(e.compiledModules))\n}\n\n// DeleteCompiledModule implements wasm.Engine.\nfunc (e *engine) DeleteCompiledModule(m *wasm.Module) {\n\te.mux.Lock()\n\tdefer e.mux.Unlock()\n\tcm, ok := e.compiledModules[m.ID]\n\tif !ok {\n\t\treturn\n\t}\n\tcm.refCount--\n\tif cm.refCount > 0 {\n\t\treturn\n\t}\n\tif len(cm.executable) > 0 {\n\t\te.deleteCompiledModuleFromSortedList(cm.compiledModule)\n\t}\n\tdelete(e.compiledModules, m.ID)\n}\n\nfunc (e *engine) addCompiledModuleToSortedList(cm *compiledModule) {\n\tptr := uintptr(unsafe.Pointer(&cm.executable[0]))\n\n\tindex := sort.Search(len(e.sortedCompiledModules), func(i int) bool {\n\t\treturn uintptr(unsafe.Pointer(&e.sortedCompiledModules[i].executable[0])) >= ptr\n\t})\n\te.sortedCompiledModules = append(e.sortedCompiledModules, nil)\n\tcopy(e.sortedCompiledModules[index+1:], e.sortedCompiledModules[index:])\n\te.sortedCompiledModules[index] = cm\n}\n\nfunc (e *engine) deleteCompiledModuleFromSortedList(cm *compiledModule) {\n\tptr := uintptr(unsafe.Pointer(&cm.executable[0]))\n\n\tindex := sort.Search(len(e.sortedCompiledModules), func(i int) bool {\n\t\treturn uintptr(unsafe.Pointer(&e.sortedCompiledModules[i].executable[0])) >= ptr\n\t})\n\tif index >= len(e.sortedCompiledModules) {\n\t\treturn\n\t}\n\tcopy(e.sortedCompiledModules[index:], e.sortedCompiledModules[index+1:])\n\te.sortedCompiledModules = e.sortedCompiledModules[:len(e.sortedCompiledModules)-1]\n}\n\nfunc (e *engine) compiledModuleOfAddr(addr uintptr) *compiledModule {\n\te.mux.RLock()\n\tdefer e.mux.RUnlock()\n\n\tindex := sort.Search(len(e.sortedCompiledModules), func(i int) bool {\n\t\treturn uintptr(unsafe.Pointer(&e.sortedCompiledModules[i].executable[0])) > addr\n\t})\n\tindex -= 1\n\tif index < 0 {\n\t\treturn nil\n\t}\n\tcandidate := e.sortedCompiledModules[index]\n\tif checkAddrInBytes(addr, candidate.executable) {\n\t\t// If a module is already deleted, the found module may have been wrong.\n\t\treturn candidate\n\t}\n\treturn nil\n}\n\nfunc checkAddrInBytes(addr uintptr, b []byte) bool {\n\treturn uintptr(unsafe.Pointer(&b[0])) <= addr && addr <= uintptr(unsafe.Pointer(&b[len(b)-1]))\n}\n\n// NewModuleEngine implements wasm.Engine.\nfunc (e *engine) NewModuleEngine(m *wasm.Module, mi *wasm.ModuleInstance) (wasm.ModuleEngine, error) {\n\tme := &moduleEngine{}\n\n\t// Note: imported functions are resolved in moduleEngine.ResolveImportedFunction.\n\tme.importedFunctions = make([]importedFunction, m.ImportFunctionCount)\n\n\tcompiled, ok := e.getCompiledModuleFromMemory(m, false)\n\tif !ok {\n\t\treturn nil, errors.New(\"source module must be compiled before instantiation\")\n\t}\n\tme.parent = compiled\n\tme.module = mi\n\tme.listeners = compiled.listeners\n\n\tif m.IsHostModule {\n\t\tme.opaque = buildHostModuleOpaque(m, compiled.listeners)\n\t\tme.opaquePtr = &me.opaque[0]\n\t} else {\n\t\tif size := compiled.offsets.TotalSize; size != 0 {\n\t\t\topaque := newAlignedOpaque(size)\n\t\t\tme.opaque = opaque\n\t\t\tme.opaquePtr = &opaque[0]\n\t\t}\n\t}\n\treturn me, nil\n}\n\nfunc (e *engine) compileSharedFunctions() {\n\tvar sizes [8]int\n\tvar trampolines []byte\n\n\taddTrampoline := func(i int, buf []byte) {\n\t\ttrampolines = append(trampolines, buf...)\n\t\talign := 15 & -len(trampolines) // Align 16-bytes boundary.\n\t\ttrampolines = append(trampolines, make([]byte, align)...)\n\t\tsizes[i] = len(buf) + align\n\t}\n\n\te.be.Init()\n\taddTrampoline(0,\n\t\te.machine.CompileGoFunctionTrampoline(wazevoapi.ExitCodeGrowMemory, &ssa.Signature{\n\t\t\tParams:  []ssa.Type{ssa.TypeI64 /* exec context */, ssa.TypeI32},\n\t\t\tResults: []ssa.Type{ssa.TypeI32},\n\t\t}, false))\n\n\te.be.Init()\n\taddTrampoline(1,\n\t\te.machine.CompileGoFunctionTrampoline(wazevoapi.ExitCodeTableGrow, &ssa.Signature{\n\t\t\tParams:  []ssa.Type{ssa.TypeI64 /* exec context */, ssa.TypeI32 /* table index */, ssa.TypeI32 /* num */, ssa.TypeI64 /* ref */},\n\t\t\tResults: []ssa.Type{ssa.TypeI32},\n\t\t}, false))\n\n\te.be.Init()\n\taddTrampoline(2,\n\t\te.machine.CompileGoFunctionTrampoline(wazevoapi.ExitCodeCheckModuleExitCode, &ssa.Signature{\n\t\t\tParams:  []ssa.Type{ssa.TypeI32 /* exec context */},\n\t\t\tResults: []ssa.Type{ssa.TypeI32},\n\t\t}, false))\n\n\te.be.Init()\n\taddTrampoline(3,\n\t\te.machine.CompileGoFunctionTrampoline(wazevoapi.ExitCodeRefFunc, &ssa.Signature{\n\t\t\tParams:  []ssa.Type{ssa.TypeI64 /* exec context */, ssa.TypeI32 /* function index */},\n\t\t\tResults: []ssa.Type{ssa.TypeI64}, // returns the function reference.\n\t\t}, false))\n\n\te.be.Init()\n\taddTrampoline(4, e.machine.CompileStackGrowCallSequence())\n\n\te.be.Init()\n\taddTrampoline(5,\n\t\te.machine.CompileGoFunctionTrampoline(wazevoapi.ExitCodeMemoryWait32, &ssa.Signature{\n\t\t\t// exec context, timeout, expected, addr\n\t\t\tParams: []ssa.Type{ssa.TypeI64, ssa.TypeI64, ssa.TypeI32, ssa.TypeI64},\n\t\t\t// Returns the status.\n\t\t\tResults: []ssa.Type{ssa.TypeI32},\n\t\t}, false))\n\n\te.be.Init()\n\taddTrampoline(6,\n\t\te.machine.CompileGoFunctionTrampoline(wazevoapi.ExitCodeMemoryWait64, &ssa.Signature{\n\t\t\t// exec context, timeout, expected, addr\n\t\t\tParams: []ssa.Type{ssa.TypeI64, ssa.TypeI64, ssa.TypeI64, ssa.TypeI64},\n\t\t\t// Returns the status.\n\t\t\tResults: []ssa.Type{ssa.TypeI32},\n\t\t}, false))\n\n\te.be.Init()\n\taddTrampoline(7,\n\t\te.machine.CompileGoFunctionTrampoline(wazevoapi.ExitCodeMemoryNotify, &ssa.Signature{\n\t\t\t// exec context, count, addr\n\t\t\tParams: []ssa.Type{ssa.TypeI64, ssa.TypeI32, ssa.TypeI64},\n\t\t\t// Returns the number notified.\n\t\t\tResults: []ssa.Type{ssa.TypeI32},\n\t\t}, false))\n\n\tfns := &sharedFunctions{\n\t\texecutable:          mmapExecutable(trampolines),\n\t\tlistenerTrampolines: make(listenerTrampolines),\n\t}\n\te.setFinalizer(fns, sharedFunctionsFinalizer)\n\n\toffset := 0\n\tfns.memoryGrowAddress = &fns.executable[offset]\n\toffset += sizes[0]\n\tfns.tableGrowAddress = &fns.executable[offset]\n\toffset += sizes[1]\n\tfns.checkModuleExitCodeAddress = &fns.executable[offset]\n\toffset += sizes[2]\n\tfns.refFuncAddress = &fns.executable[offset]\n\toffset += sizes[3]\n\tfns.stackGrowAddress = &fns.executable[offset]\n\toffset += sizes[4]\n\tfns.memoryWait32Address = &fns.executable[offset]\n\toffset += sizes[5]\n\tfns.memoryWait64Address = &fns.executable[offset]\n\toffset += sizes[6]\n\tfns.memoryNotifyAddress = &fns.executable[offset]\n\n\tif wazevoapi.PerfMapEnabled {\n\t\twazevoapi.PerfMap.AddEntry(uintptr(unsafe.Pointer(fns.memoryGrowAddress)), uint64(sizes[0]), \"memory_grow_trampoline\")\n\t\twazevoapi.PerfMap.AddEntry(uintptr(unsafe.Pointer(fns.tableGrowAddress)), uint64(sizes[1]), \"table_grow_trampoline\")\n\t\twazevoapi.PerfMap.AddEntry(uintptr(unsafe.Pointer(fns.checkModuleExitCodeAddress)), uint64(sizes[2]), \"check_module_exit_code_trampoline\")\n\t\twazevoapi.PerfMap.AddEntry(uintptr(unsafe.Pointer(fns.refFuncAddress)), uint64(sizes[3]), \"ref_func_trampoline\")\n\t\twazevoapi.PerfMap.AddEntry(uintptr(unsafe.Pointer(fns.stackGrowAddress)), uint64(sizes[4]), \"stack_grow_trampoline\")\n\t\twazevoapi.PerfMap.AddEntry(uintptr(unsafe.Pointer(fns.memoryWait32Address)), uint64(sizes[5]), \"memory_wait32_trampoline\")\n\t\twazevoapi.PerfMap.AddEntry(uintptr(unsafe.Pointer(fns.memoryWait64Address)), uint64(sizes[6]), \"memory_wait64_trampoline\")\n\t\twazevoapi.PerfMap.AddEntry(uintptr(unsafe.Pointer(fns.memoryNotifyAddress)), uint64(sizes[7]), \"memory_notify_trampoline\")\n\t}\n\n\te.sharedFunctions = fns\n}\n\nfunc sharedFunctionsFinalizer(sf *sharedFunctions) {\n\tif err := platform.MunmapCodeSegment(sf.executable); err != nil {\n\t\tpanic(err)\n\t}\n\tfor _, f := range sf.listenerTrampolines {\n\t\tif err := platform.MunmapCodeSegment(f.executable); err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t}\n\n\tsf.executable = nil\n\tsf.listenerTrampolines = nil\n}\n\nfunc executablesFinalizer(exec *executables) {\n\tif len(exec.executable) > 0 {\n\t\tif err := platform.MunmapCodeSegment(exec.executable); err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t}\n\texec.executable = nil\n\n\tif len(exec.entryPreambles) > 0 {\n\t\tif err := platform.MunmapCodeSegment(exec.entryPreambles); err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t}\n\texec.entryPreambles = nil\n\texec.entryPreamblesPtrs = nil\n}\n\nfunc mmapExecutable(src []byte) []byte {\n\texecutable, err := platform.MmapCodeSegment(len(src))\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tcopy(executable, src)\n\n\tif err = platform.MprotectRX(executable); err != nil {\n\t\tpanic(err)\n\t}\n\treturn executable\n}\n\nfunc (cm *compiledModule) functionIndexOf(addr uintptr) wasm.Index {\n\taddr -= uintptr(unsafe.Pointer(&cm.executable[0]))\n\toffset := cm.functionOffsets\n\tindex := sort.Search(len(offset), func(i int) bool {\n\t\treturn offset[i] > int(addr)\n\t})\n\tindex--\n\tif index < 0 {\n\t\tpanic(\"BUG\")\n\t}\n\treturn wasm.Index(index)\n}\n\nfunc (e *engine) getListenerTrampolineForType(functionType *wasm.FunctionType) (before, after *byte) {\n\te.mux.Lock()\n\tdefer e.mux.Unlock()\n\n\ttrampoline, ok := e.sharedFunctions.listenerTrampolines[functionType]\n\tif !ok {\n\t\tvar executable []byte\n\t\tbeforeSig, afterSig := frontend.SignatureForListener(functionType)\n\n\t\te.be.Init()\n\t\tbuf := e.machine.CompileGoFunctionTrampoline(wazevoapi.ExitCodeCallListenerBefore, beforeSig, false)\n\t\texecutable = append(executable, buf...)\n\n\t\talign := 15 & -len(executable) // Align 16-bytes boundary.\n\t\texecutable = append(executable, make([]byte, align)...)\n\t\toffset := len(executable)\n\n\t\te.be.Init()\n\t\tbuf = e.machine.CompileGoFunctionTrampoline(wazevoapi.ExitCodeCallListenerAfter, afterSig, false)\n\t\texecutable = append(executable, buf...)\n\n\t\ttrampoline.executable = mmapExecutable(executable)\n\t\ttrampoline.before = &trampoline.executable[0]\n\t\ttrampoline.after = &trampoline.executable[offset]\n\n\t\te.sharedFunctions.listenerTrampolines[functionType] = trampoline\n\t}\n\treturn trampoline.before, trampoline.after\n}\n\nfunc (cm *compiledModule) getSourceOffset(pc uintptr) uint64 {\n\toffsets := cm.sourceMap.executableOffsets\n\tif len(offsets) == 0 {\n\t\treturn 0\n\t}\n\n\tindex := sort.Search(len(offsets), func(i int) bool {\n\t\treturn offsets[i] >= pc\n\t})\n\n\tindex--\n\tif index < 0 {\n\t\treturn 0\n\t}\n\treturn cm.sourceMap.wasmBinaryOffsets[index]\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/engine_cache.go",
    "content": "package wazevo\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"crypto/sha256\"\n\t\"encoding/binary\"\n\t\"fmt\"\n\t\"hash/crc32\"\n\t\"io\"\n\t\"unsafe\"\n\n\t\"github.com/tetratelabs/wazero/experimental\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/backend\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/ssa\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi\"\n\t\"github.com/tetratelabs/wazero/internal/filecache\"\n\t\"github.com/tetratelabs/wazero/internal/platform\"\n\t\"github.com/tetratelabs/wazero/internal/u32\"\n\t\"github.com/tetratelabs/wazero/internal/u64\"\n\t\"github.com/tetratelabs/wazero/internal/wasm\"\n)\n\nvar crc = crc32.MakeTable(crc32.Castagnoli)\n\n// fileCacheKey returns a key for the file cache.\n// In order to avoid collisions with the existing compiler, we do not use m.ID directly,\n// but instead we rehash it with magic.\nfunc fileCacheKey(m *wasm.Module) (ret filecache.Key) {\n\ts := sha256.New()\n\ts.Write(m.ID[:])\n\ts.Write(magic)\n\t// Write the CPU features so that we can cache the compiled module for the same CPU.\n\t// This prevents the incompatible CPU features from being used.\n\tcpu := platform.CpuFeatures().Raw()\n\t// Reuse the `ret` buffer to write the first 8 bytes of the CPU features so that we can avoid the allocation.\n\tbinary.LittleEndian.PutUint64(ret[:8], cpu)\n\ts.Write(ret[:8])\n\t// Finally, write the hash to the ret buffer.\n\ts.Sum(ret[:0])\n\treturn\n}\n\nfunc (e *engine) addCompiledModule(module *wasm.Module, cm *compiledModule) (err error) {\n\te.addCompiledModuleToMemory(module, cm)\n\tif !module.IsHostModule && e.fileCache != nil {\n\t\terr = e.addCompiledModuleToCache(module, cm)\n\t}\n\treturn\n}\n\nfunc (e *engine) getCompiledModule(module *wasm.Module, listeners []experimental.FunctionListener, ensureTermination bool) (cm *compiledModule, ok bool, err error) {\n\tcm, ok = e.getCompiledModuleFromMemory(module, true)\n\tif ok {\n\t\treturn\n\t}\n\tcm, ok, err = e.getCompiledModuleFromCache(module)\n\tif ok {\n\t\tcm.parent = e\n\t\tcm.module = module\n\t\tcm.sharedFunctions = e.sharedFunctions\n\t\tcm.ensureTermination = ensureTermination\n\t\tcm.offsets = wazevoapi.NewModuleContextOffsetData(module, len(listeners) > 0)\n\t\tif len(listeners) > 0 {\n\t\t\tcm.listeners = listeners\n\t\t\tcm.listenerBeforeTrampolines = make([]*byte, len(module.TypeSection))\n\t\t\tcm.listenerAfterTrampolines = make([]*byte, len(module.TypeSection))\n\t\t\tfor i := range module.TypeSection {\n\t\t\t\ttyp := &module.TypeSection[i]\n\t\t\t\tbefore, after := e.getListenerTrampolineForType(typ)\n\t\t\t\tcm.listenerBeforeTrampolines[i] = before\n\t\t\t\tcm.listenerAfterTrampolines[i] = after\n\t\t\t}\n\t\t}\n\t\te.addCompiledModuleToMemory(module, cm)\n\t\tssaBuilder := ssa.NewBuilder()\n\t\tmachine := newMachine()\n\t\tbe := backend.NewCompiler(context.Background(), machine, ssaBuilder)\n\t\tcm.executables.compileEntryPreambles(module, machine, be)\n\n\t\t// Set the finalizer.\n\t\te.setFinalizer(cm.executables, executablesFinalizer)\n\t}\n\treturn\n}\n\nfunc (e *engine) addCompiledModuleToMemory(m *wasm.Module, cm *compiledModule) {\n\te.mux.Lock()\n\tdefer e.mux.Unlock()\n\te.compiledModules[m.ID] = &compiledModuleWithCount{compiledModule: cm, refCount: 1}\n\tif len(cm.executable) > 0 {\n\t\te.addCompiledModuleToSortedList(cm)\n\t}\n}\n\nfunc (e *engine) getCompiledModuleFromMemory(module *wasm.Module, increaseRefCount bool) (cm *compiledModule, ok bool) {\n\te.mux.Lock()\n\tdefer e.mux.Unlock()\n\n\tcmWithCount, ok := e.compiledModules[module.ID]\n\tif ok {\n\t\tcm = cmWithCount.compiledModule\n\t\tif increaseRefCount {\n\t\t\tcmWithCount.refCount++\n\t\t}\n\t}\n\treturn\n}\n\nfunc (e *engine) addCompiledModuleToCache(module *wasm.Module, cm *compiledModule) (err error) {\n\tif e.fileCache == nil || module.IsHostModule {\n\t\treturn\n\t}\n\terr = e.fileCache.Add(fileCacheKey(module), serializeCompiledModule(e.wazeroVersion, cm))\n\treturn\n}\n\nfunc (e *engine) getCompiledModuleFromCache(module *wasm.Module) (cm *compiledModule, hit bool, err error) {\n\tif e.fileCache == nil || module.IsHostModule {\n\t\treturn\n\t}\n\n\t// Check if the entries exist in the external cache.\n\tvar cached io.ReadCloser\n\tcached, hit, err = e.fileCache.Get(fileCacheKey(module))\n\tif !hit || err != nil {\n\t\treturn\n\t}\n\n\t// Otherwise, we hit the cache on external cache.\n\t// We retrieve *code structures from `cached`.\n\tvar staleCache bool\n\t// Note: cached.Close is ensured to be called in deserializeCodes.\n\tcm, staleCache, err = deserializeCompiledModule(e.wazeroVersion, cached)\n\tif err != nil {\n\t\thit = false\n\t\treturn\n\t} else if staleCache {\n\t\treturn nil, false, e.fileCache.Delete(fileCacheKey(module))\n\t}\n\treturn\n}\n\nvar magic = []byte{'W', 'A', 'Z', 'E', 'V', 'O'}\n\nfunc serializeCompiledModule(wazeroVersion string, cm *compiledModule) io.Reader {\n\tbuf := bytes.NewBuffer(nil)\n\t// First 6 byte: WAZEVO header.\n\tbuf.Write(magic)\n\t// Next 1 byte: length of version:\n\tbuf.WriteByte(byte(len(wazeroVersion)))\n\t// Version of wazero.\n\tbuf.WriteString(wazeroVersion)\n\t// Number of *code (== locally defined functions in the module): 4 bytes.\n\tbuf.Write(u32.LeBytes(uint32(len(cm.functionOffsets))))\n\tfor _, offset := range cm.functionOffsets {\n\t\t// The offset of this function in the executable (8 bytes).\n\t\tbuf.Write(u64.LeBytes(uint64(offset)))\n\t}\n\t// The length of code segment (8 bytes).\n\tbuf.Write(u64.LeBytes(uint64(len(cm.executable))))\n\t// Append the native code.\n\tbuf.Write(cm.executable)\n\t// Append checksum.\n\tchecksum := crc32.Checksum(cm.executable, crc)\n\tbuf.Write(u32.LeBytes(checksum))\n\tif sm := cm.sourceMap; len(sm.executableOffsets) > 0 {\n\t\tbuf.WriteByte(1) // indicates that source map is present.\n\t\tl := len(sm.wasmBinaryOffsets)\n\t\tbuf.Write(u64.LeBytes(uint64(l)))\n\t\texecutableAddr := uintptr(unsafe.Pointer(&cm.executable[0]))\n\t\tfor i := 0; i < l; i++ {\n\t\t\tbuf.Write(u64.LeBytes(sm.wasmBinaryOffsets[i]))\n\t\t\t// executableOffsets is absolute address, so we need to subtract executableAddr.\n\t\t\tbuf.Write(u64.LeBytes(uint64(sm.executableOffsets[i] - executableAddr)))\n\t\t}\n\t} else {\n\t\tbuf.WriteByte(0) // indicates that source map is not present.\n\t}\n\treturn bytes.NewReader(buf.Bytes())\n}\n\nfunc deserializeCompiledModule(wazeroVersion string, reader io.ReadCloser) (cm *compiledModule, staleCache bool, err error) {\n\tdefer reader.Close()\n\tcacheHeaderSize := len(magic) + 1 /* version size */ + len(wazeroVersion) + 4 /* number of functions */\n\n\t// Read the header before the native code.\n\theader := make([]byte, cacheHeaderSize)\n\tn, err := reader.Read(header)\n\tif err != nil {\n\t\treturn nil, false, fmt.Errorf(\"compilationcache: error reading header: %v\", err)\n\t}\n\n\tif n != cacheHeaderSize {\n\t\treturn nil, false, fmt.Errorf(\"compilationcache: invalid header length: %d\", n)\n\t}\n\n\tif !bytes.Equal(header[:len(magic)], magic) {\n\t\treturn nil, false, fmt.Errorf(\n\t\t\t\"compilationcache: invalid magic number: got %s but want %s\", magic, header[:len(magic)])\n\t}\n\n\t// Check the version compatibility.\n\tversionSize := int(header[len(magic)])\n\n\tcachedVersionBegin, cachedVersionEnd := len(magic)+1, len(magic)+1+versionSize\n\tif cachedVersionEnd >= len(header) {\n\t\tstaleCache = true\n\t\treturn\n\t} else if cachedVersion := string(header[cachedVersionBegin:cachedVersionEnd]); cachedVersion != wazeroVersion {\n\t\tstaleCache = true\n\t\treturn\n\t}\n\n\tfunctionsNum := binary.LittleEndian.Uint32(header[len(header)-4:])\n\tcm = &compiledModule{functionOffsets: make([]int, functionsNum), executables: &executables{}}\n\n\tvar eightBytes [8]byte\n\tfor i := uint32(0); i < functionsNum; i++ {\n\t\t// Read the offset of each function in the executable.\n\t\tvar offset uint64\n\t\tif offset, err = readUint64(reader, &eightBytes); err != nil {\n\t\t\terr = fmt.Errorf(\"compilationcache: error reading func[%d] executable offset: %v\", i, err)\n\t\t\treturn\n\t\t}\n\t\tcm.functionOffsets[i] = int(offset)\n\t}\n\n\texecutableLen, err := readUint64(reader, &eightBytes)\n\tif err != nil {\n\t\terr = fmt.Errorf(\"compilationcache: error reading executable size: %v\", err)\n\t\treturn\n\t}\n\n\tif executableLen > 0 {\n\t\texecutable, err := platform.MmapCodeSegment(int(executableLen))\n\t\tif err != nil {\n\t\t\terr = fmt.Errorf(\"compilationcache: error mmapping executable (len=%d): %v\", executableLen, err)\n\t\t\treturn nil, false, err\n\t\t}\n\n\t\t_, err = io.ReadFull(reader, executable)\n\t\tif err != nil {\n\t\t\terr = fmt.Errorf(\"compilationcache: error reading executable (len=%d): %v\", executableLen, err)\n\t\t\treturn nil, false, err\n\t\t}\n\n\t\texpected := crc32.Checksum(executable, crc)\n\t\tif _, err = io.ReadFull(reader, eightBytes[:4]); err != nil {\n\t\t\treturn nil, false, fmt.Errorf(\"compilationcache: could not read checksum: %v\", err)\n\t\t} else if checksum := binary.LittleEndian.Uint32(eightBytes[:4]); expected != checksum {\n\t\t\treturn nil, false, fmt.Errorf(\"compilationcache: checksum mismatch (expected %d, got %d)\", expected, checksum)\n\t\t}\n\n\t\tif err = platform.MprotectRX(executable); err != nil {\n\t\t\treturn nil, false, err\n\t\t}\n\t\tcm.executable = executable\n\t}\n\n\tif _, err := io.ReadFull(reader, eightBytes[:1]); err != nil {\n\t\treturn nil, false, fmt.Errorf(\"compilationcache: error reading source map presence: %v\", err)\n\t}\n\n\tif eightBytes[0] == 1 {\n\t\tsm := &cm.sourceMap\n\t\tsourceMapLen, err := readUint64(reader, &eightBytes)\n\t\tif err != nil {\n\t\t\terr = fmt.Errorf(\"compilationcache: error reading source map length: %v\", err)\n\t\t\treturn nil, false, err\n\t\t}\n\t\texecutableOffset := uintptr(unsafe.Pointer(&cm.executable[0]))\n\t\tfor i := uint64(0); i < sourceMapLen; i++ {\n\t\t\twasmBinaryOffset, err := readUint64(reader, &eightBytes)\n\t\t\tif err != nil {\n\t\t\t\terr = fmt.Errorf(\"compilationcache: error reading source map[%d] wasm binary offset: %v\", i, err)\n\t\t\t\treturn nil, false, err\n\t\t\t}\n\t\t\texecutableRelativeOffset, err := readUint64(reader, &eightBytes)\n\t\t\tif err != nil {\n\t\t\t\terr = fmt.Errorf(\"compilationcache: error reading source map[%d] executable offset: %v\", i, err)\n\t\t\t\treturn nil, false, err\n\t\t\t}\n\t\t\tsm.wasmBinaryOffsets = append(sm.wasmBinaryOffsets, wasmBinaryOffset)\n\t\t\t// executableOffsets is absolute address, so we need to add executableOffset.\n\t\t\tsm.executableOffsets = append(sm.executableOffsets, uintptr(executableRelativeOffset)+executableOffset)\n\t\t}\n\t}\n\treturn\n}\n\n// readUint64 strictly reads an uint64 in little-endian byte order, using the\n// given array as a buffer. This returns io.EOF if less than 8 bytes were read.\nfunc readUint64(reader io.Reader, b *[8]byte) (uint64, error) {\n\ts := b[0:8]\n\tn, err := reader.Read(s)\n\tif err != nil {\n\t\treturn 0, err\n\t} else if n < 8 { // more strict than reader.Read\n\t\treturn 0, io.EOF\n\t}\n\n\t// Read the u64 from the underlying buffer.\n\tret := binary.LittleEndian.Uint64(s)\n\treturn ret, nil\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/entrypoint_amd64.go",
    "content": "//go:build amd64 && !tinygo\n\npackage wazevo\n\nimport _ \"unsafe\"\n\n// entrypoint is implemented by the backend.\n//\n//go:linkname entrypoint github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/amd64.entrypoint\nfunc entrypoint(preambleExecutable, functionExecutable *byte, executionContextPtr uintptr, moduleContextPtr *byte, paramResultStackPtr *uint64, goAllocatedStackSlicePtr uintptr)\n\n// entrypoint is implemented by the backend.\n//\n//go:linkname afterGoFunctionCallEntrypoint github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/amd64.afterGoFunctionCallEntrypoint\nfunc afterGoFunctionCallEntrypoint(executable *byte, executionContextPtr uintptr, stackPointer, framePointer uintptr)\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/entrypoint_arm64.go",
    "content": "//go:build arm64 && !tinygo\n\npackage wazevo\n\nimport _ \"unsafe\"\n\n// entrypoint is implemented by the backend.\n//\n//go:linkname entrypoint github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/arm64.entrypoint\nfunc entrypoint(preambleExecutable, functionExecutable *byte, executionContextPtr uintptr, moduleContextPtr *byte, paramResultStackPtr *uint64, goAllocatedStackSlicePtr uintptr)\n\n// entrypoint is implemented by the backend.\n//\n//go:linkname afterGoFunctionCallEntrypoint github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/arm64.afterGoFunctionCallEntrypoint\nfunc afterGoFunctionCallEntrypoint(executable *byte, executionContextPtr uintptr, stackPointer, framePointer uintptr)\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/entrypoint_others.go",
    "content": "//go:build (!arm64 && !amd64) || tinygo\n\npackage wazevo\n\nimport (\n\t\"runtime\"\n)\n\nfunc entrypoint(preambleExecutable, functionExecutable *byte, executionContextPtr uintptr, moduleContextPtr *byte, paramResultStackPtr *uint64, goAllocatedStackSlicePtr uintptr) {\n\tpanic(runtime.GOARCH)\n}\n\nfunc afterGoFunctionCallEntrypoint(executable *byte, executionContextPtr uintptr, stackPointer, framePointer uintptr) {\n\tpanic(runtime.GOARCH)\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/frontend/frontend.go",
    "content": "// Package frontend implements the translation of WebAssembly to SSA IR using the ssa package.\npackage frontend\n\nimport (\n\t\"bytes\"\n\t\"math\"\n\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/ssa\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi\"\n\t\"github.com/tetratelabs/wazero/internal/wasm\"\n)\n\n// Compiler is in charge of lowering Wasm to SSA IR, and does the optimization\n// on top of it in architecture-independent way.\ntype Compiler struct {\n\t// Per-module data that is used across all functions.\n\n\tm      *wasm.Module\n\toffset *wazevoapi.ModuleContextOffsetData\n\t// ssaBuilder is a ssa.Builder used by this frontend.\n\tssaBuilder             ssa.Builder\n\tsignatures             map[*wasm.FunctionType]*ssa.Signature\n\tlistenerSignatures     map[*wasm.FunctionType][2]*ssa.Signature\n\tmemoryGrowSig          ssa.Signature\n\tmemoryWait32Sig        ssa.Signature\n\tmemoryWait64Sig        ssa.Signature\n\tmemoryNotifySig        ssa.Signature\n\tcheckModuleExitCodeSig ssa.Signature\n\ttableGrowSig           ssa.Signature\n\trefFuncSig             ssa.Signature\n\tmemmoveSig             ssa.Signature\n\tensureTermination      bool\n\n\t// Followings are reset by per function.\n\n\t// wasmLocalToVariable maps the index (considered as wasm.Index of locals)\n\t// to the corresponding ssa.Variable.\n\twasmLocalToVariable                   [] /* local index to */ ssa.Variable\n\twasmLocalFunctionIndex                wasm.Index\n\twasmFunctionTypeIndex                 wasm.Index\n\twasmFunctionTyp                       *wasm.FunctionType\n\twasmFunctionLocalTypes                []wasm.ValueType\n\twasmFunctionBody                      []byte\n\twasmFunctionBodyOffsetInCodeSection   uint64\n\tmemoryBaseVariable, memoryLenVariable ssa.Variable\n\tneedMemory                            bool\n\tmemoryShared                          bool\n\tglobalVariables                       []ssa.Variable\n\tglobalVariablesTypes                  []ssa.Type\n\tmutableGlobalVariablesIndexes         []wasm.Index // index to ^.\n\tneedListener                          bool\n\tneedSourceOffsetInfo                  bool\n\t// br is reused during lowering.\n\tbr            *bytes.Reader\n\tloweringState loweringState\n\n\tknownSafeBounds    [] /* ssa.ValueID to */ knownSafeBound\n\tknownSafeBoundsSet []ssa.ValueID\n\n\tknownSafeBoundsAtTheEndOfBlocks   [] /* ssa.BlockID to */ knownSafeBoundsAtTheEndOfBlock\n\tvarLengthKnownSafeBoundWithIDPool wazevoapi.VarLengthPool[knownSafeBoundWithID]\n\n\texecCtxPtrValue, moduleCtxPtrValue ssa.Value\n\n\t// Following are reused for the known safe bounds analysis.\n\n\tpointers []int\n\tbounds   [][]knownSafeBoundWithID\n}\n\ntype (\n\t// knownSafeBound represents a known safe bound for a value.\n\tknownSafeBound struct {\n\t\t// bound is a constant upper bound for the value.\n\t\tbound uint64\n\t\t// absoluteAddr is the absolute address of the value.\n\t\tabsoluteAddr ssa.Value\n\t}\n\t// knownSafeBoundWithID is a knownSafeBound with the ID of the value.\n\tknownSafeBoundWithID struct {\n\t\tknownSafeBound\n\t\tid ssa.ValueID\n\t}\n\tknownSafeBoundsAtTheEndOfBlock = wazevoapi.VarLength[knownSafeBoundWithID]\n)\n\nvar knownSafeBoundsAtTheEndOfBlockNil = wazevoapi.NewNilVarLength[knownSafeBoundWithID]()\n\n// NewFrontendCompiler returns a frontend Compiler.\nfunc NewFrontendCompiler(m *wasm.Module, ssaBuilder ssa.Builder, offset *wazevoapi.ModuleContextOffsetData, ensureTermination bool, listenerOn bool, sourceInfo bool) *Compiler {\n\tc := &Compiler{\n\t\tm:                                 m,\n\t\tssaBuilder:                        ssaBuilder,\n\t\tbr:                                bytes.NewReader(nil),\n\t\toffset:                            offset,\n\t\tensureTermination:                 ensureTermination,\n\t\tneedSourceOffsetInfo:              sourceInfo,\n\t\tvarLengthKnownSafeBoundWithIDPool: wazevoapi.NewVarLengthPool[knownSafeBoundWithID](),\n\t}\n\tc.declareSignatures(listenerOn)\n\treturn c\n}\n\nfunc (c *Compiler) declareSignatures(listenerOn bool) {\n\tm := c.m\n\tc.signatures = make(map[*wasm.FunctionType]*ssa.Signature, len(m.TypeSection)+2)\n\tif listenerOn {\n\t\tc.listenerSignatures = make(map[*wasm.FunctionType][2]*ssa.Signature, len(m.TypeSection))\n\t}\n\tfor i := range m.TypeSection {\n\t\twasmSig := &m.TypeSection[i]\n\t\tsig := SignatureForWasmFunctionType(wasmSig)\n\t\tsig.ID = ssa.SignatureID(i)\n\t\tc.signatures[wasmSig] = &sig\n\t\tc.ssaBuilder.DeclareSignature(&sig)\n\n\t\tif listenerOn {\n\t\t\tbeforeSig, afterSig := SignatureForListener(wasmSig)\n\t\t\tbeforeSig.ID = ssa.SignatureID(i) + ssa.SignatureID(len(m.TypeSection))\n\t\t\tafterSig.ID = ssa.SignatureID(i) + ssa.SignatureID(len(m.TypeSection))*2\n\t\t\tc.listenerSignatures[wasmSig] = [2]*ssa.Signature{beforeSig, afterSig}\n\t\t\tc.ssaBuilder.DeclareSignature(beforeSig)\n\t\t\tc.ssaBuilder.DeclareSignature(afterSig)\n\t\t}\n\t}\n\n\tbegin := ssa.SignatureID(len(m.TypeSection))\n\tif listenerOn {\n\t\tbegin *= 3\n\t}\n\tc.memoryGrowSig = ssa.Signature{\n\t\tID: begin,\n\t\t// Takes execution context and the page size to grow.\n\t\tParams: []ssa.Type{ssa.TypeI64, ssa.TypeI32},\n\t\t// Returns the previous page size.\n\t\tResults: []ssa.Type{ssa.TypeI32},\n\t}\n\tc.ssaBuilder.DeclareSignature(&c.memoryGrowSig)\n\n\tc.checkModuleExitCodeSig = ssa.Signature{\n\t\tID: c.memoryGrowSig.ID + 1,\n\t\t// Only takes execution context.\n\t\tParams: []ssa.Type{ssa.TypeI64},\n\t}\n\tc.ssaBuilder.DeclareSignature(&c.checkModuleExitCodeSig)\n\n\tc.tableGrowSig = ssa.Signature{\n\t\tID:     c.checkModuleExitCodeSig.ID + 1,\n\t\tParams: []ssa.Type{ssa.TypeI64 /* exec context */, ssa.TypeI32 /* table index */, ssa.TypeI32 /* num */, ssa.TypeI64 /* ref */},\n\t\t// Returns the previous size.\n\t\tResults: []ssa.Type{ssa.TypeI32},\n\t}\n\tc.ssaBuilder.DeclareSignature(&c.tableGrowSig)\n\n\tc.refFuncSig = ssa.Signature{\n\t\tID:     c.tableGrowSig.ID + 1,\n\t\tParams: []ssa.Type{ssa.TypeI64 /* exec context */, ssa.TypeI32 /* func index */},\n\t\t// Returns the function reference.\n\t\tResults: []ssa.Type{ssa.TypeI64},\n\t}\n\tc.ssaBuilder.DeclareSignature(&c.refFuncSig)\n\n\tc.memmoveSig = ssa.Signature{\n\t\tID: c.refFuncSig.ID + 1,\n\t\t// dst, src, and the byte count.\n\t\tParams: []ssa.Type{ssa.TypeI64, ssa.TypeI64, ssa.TypeI64},\n\t}\n\n\tc.ssaBuilder.DeclareSignature(&c.memmoveSig)\n\n\tc.memoryWait32Sig = ssa.Signature{\n\t\tID: c.memmoveSig.ID + 1,\n\t\t// exec context, timeout, expected, addr\n\t\tParams: []ssa.Type{ssa.TypeI64, ssa.TypeI64, ssa.TypeI32, ssa.TypeI64},\n\t\t// Returns the status.\n\t\tResults: []ssa.Type{ssa.TypeI32},\n\t}\n\tc.ssaBuilder.DeclareSignature(&c.memoryWait32Sig)\n\n\tc.memoryWait64Sig = ssa.Signature{\n\t\tID: c.memoryWait32Sig.ID + 1,\n\t\t// exec context, timeout, expected, addr\n\t\tParams: []ssa.Type{ssa.TypeI64, ssa.TypeI64, ssa.TypeI64, ssa.TypeI64},\n\t\t// Returns the status.\n\t\tResults: []ssa.Type{ssa.TypeI32},\n\t}\n\tc.ssaBuilder.DeclareSignature(&c.memoryWait64Sig)\n\n\tc.memoryNotifySig = ssa.Signature{\n\t\tID: c.memoryWait64Sig.ID + 1,\n\t\t// exec context, count, addr\n\t\tParams: []ssa.Type{ssa.TypeI64, ssa.TypeI32, ssa.TypeI64},\n\t\t// Returns the number notified.\n\t\tResults: []ssa.Type{ssa.TypeI32},\n\t}\n\tc.ssaBuilder.DeclareSignature(&c.memoryNotifySig)\n}\n\n// SignatureForWasmFunctionType returns the ssa.Signature for the given wasm.FunctionType.\nfunc SignatureForWasmFunctionType(typ *wasm.FunctionType) ssa.Signature {\n\tsig := ssa.Signature{\n\t\t// +2 to pass moduleContextPtr and executionContextPtr. See the inline comment LowerToSSA.\n\t\tParams:  make([]ssa.Type, len(typ.Params)+2),\n\t\tResults: make([]ssa.Type, len(typ.Results)),\n\t}\n\tsig.Params[0] = executionContextPtrTyp\n\tsig.Params[1] = moduleContextPtrTyp\n\tfor j, typ := range typ.Params {\n\t\tsig.Params[j+2] = WasmTypeToSSAType(typ)\n\t}\n\tfor j, typ := range typ.Results {\n\t\tsig.Results[j] = WasmTypeToSSAType(typ)\n\t}\n\treturn sig\n}\n\n// Init initializes the state of frontendCompiler and make it ready for a next function.\nfunc (c *Compiler) Init(idx, typIndex wasm.Index, typ *wasm.FunctionType, localTypes []wasm.ValueType, body []byte, needListener bool, bodyOffsetInCodeSection uint64) {\n\tc.ssaBuilder.Init(c.signatures[typ])\n\tc.loweringState.reset()\n\n\tc.wasmFunctionTypeIndex = typIndex\n\tc.wasmLocalFunctionIndex = idx\n\tc.wasmFunctionTyp = typ\n\tc.wasmFunctionLocalTypes = localTypes\n\tc.wasmFunctionBody = body\n\tc.wasmFunctionBodyOffsetInCodeSection = bodyOffsetInCodeSection\n\tc.needListener = needListener\n\tc.clearSafeBounds()\n\tc.varLengthKnownSafeBoundWithIDPool.Reset()\n\tc.knownSafeBoundsAtTheEndOfBlocks = c.knownSafeBoundsAtTheEndOfBlocks[:0]\n}\n\n// Note: this assumes 64-bit platform (I believe we won't have 32-bit backend ;)).\nconst executionContextPtrTyp, moduleContextPtrTyp = ssa.TypeI64, ssa.TypeI64\n\n// LowerToSSA lowers the current function to SSA function which will be held by ssaBuilder.\n// After calling this, the caller will be able to access the SSA info in *Compiler.ssaBuilder.\n//\n// Note that this only does the naive lowering, and do not do any optimization, instead the caller is expected to do so.\nfunc (c *Compiler) LowerToSSA() {\n\tbuilder := c.ssaBuilder\n\n\t// Set up the entry block.\n\tentryBlock := builder.AllocateBasicBlock()\n\tbuilder.SetCurrentBlock(entryBlock)\n\n\t// Functions always take two parameters in addition to Wasm-level parameters:\n\t//\n\t//  1. executionContextPtr: pointer to the *executionContext in wazevo package.\n\t//    This will be used to exit the execution in the face of trap, plus used for host function calls.\n\t//\n\t// \t2. moduleContextPtr: pointer to the *moduleContextOpaque in wazevo package.\n\t//\t  This will be used to access memory, etc. Also, this will be used during host function calls.\n\t//\n\t// Note: it's clear that sometimes a function won't need them. For example,\n\t//  if the function doesn't trap and doesn't make function call, then\n\t// \twe might be able to eliminate the parameter. However, if that function\n\t//\tcan be called via call_indirect, then we cannot eliminate because the\n\t//  signature won't match with the expected one.\n\t// TODO: maybe there's some way to do this optimization without glitches, but so far I have no clue about the feasibility.\n\t//\n\t// Note: In Wasmtime or many other runtimes, moduleContextPtr is called \"vmContext\". Also note that `moduleContextPtr`\n\t//  is wazero-specific since other runtimes can naturally use the OS-level signal to do this job thanks to the fact that\n\t//  they can use native stack vs wazero cannot use Go-routine stack and have to use Go-runtime allocated []byte as a stack.\n\tc.execCtxPtrValue = entryBlock.AddParam(builder, executionContextPtrTyp)\n\tc.moduleCtxPtrValue = entryBlock.AddParam(builder, moduleContextPtrTyp)\n\tbuilder.AnnotateValue(c.execCtxPtrValue, \"exec_ctx\")\n\tbuilder.AnnotateValue(c.moduleCtxPtrValue, \"module_ctx\")\n\n\tfor i, typ := range c.wasmFunctionTyp.Params {\n\t\tst := WasmTypeToSSAType(typ)\n\t\tvariable := builder.DeclareVariable(st)\n\t\tvalue := entryBlock.AddParam(builder, st)\n\t\tbuilder.DefineVariable(variable, value, entryBlock)\n\t\tc.setWasmLocalVariable(wasm.Index(i), variable)\n\t}\n\tc.declareWasmLocals()\n\tc.declareNecessaryVariables()\n\n\tc.lowerBody(entryBlock)\n}\n\n// localVariable returns the SSA variable for the given Wasm local index.\nfunc (c *Compiler) localVariable(index wasm.Index) ssa.Variable {\n\treturn c.wasmLocalToVariable[index]\n}\n\nfunc (c *Compiler) setWasmLocalVariable(index wasm.Index, variable ssa.Variable) {\n\tidx := int(index)\n\tif idx >= len(c.wasmLocalToVariable) {\n\t\tc.wasmLocalToVariable = append(c.wasmLocalToVariable, make([]ssa.Variable, idx+1-len(c.wasmLocalToVariable))...)\n\t}\n\tc.wasmLocalToVariable[idx] = variable\n}\n\n// declareWasmLocals declares the SSA variables for the Wasm locals.\nfunc (c *Compiler) declareWasmLocals() {\n\tlocalCount := wasm.Index(len(c.wasmFunctionTyp.Params))\n\tfor i, typ := range c.wasmFunctionLocalTypes {\n\t\tst := WasmTypeToSSAType(typ)\n\t\tvariable := c.ssaBuilder.DeclareVariable(st)\n\t\tc.setWasmLocalVariable(wasm.Index(i)+localCount, variable)\n\t\tc.ssaBuilder.InsertZeroValue(st)\n\t}\n}\n\nfunc (c *Compiler) declareNecessaryVariables() {\n\tif c.needMemory = c.m.MemorySection != nil; c.needMemory {\n\t\tc.memoryShared = c.m.MemorySection.IsShared\n\t} else if c.needMemory = c.m.ImportMemoryCount > 0; c.needMemory {\n\t\tfor _, imp := range c.m.ImportSection {\n\t\t\tif imp.Type == wasm.ExternTypeMemory {\n\t\t\t\tc.memoryShared = imp.DescMem.IsShared\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\n\tif c.needMemory {\n\t\tc.memoryBaseVariable = c.ssaBuilder.DeclareVariable(ssa.TypeI64)\n\t\tc.memoryLenVariable = c.ssaBuilder.DeclareVariable(ssa.TypeI64)\n\t}\n\n\tc.globalVariables = c.globalVariables[:0]\n\tc.mutableGlobalVariablesIndexes = c.mutableGlobalVariablesIndexes[:0]\n\tc.globalVariablesTypes = c.globalVariablesTypes[:0]\n\tfor _, imp := range c.m.ImportSection {\n\t\tif imp.Type == wasm.ExternTypeGlobal {\n\t\t\tdesc := imp.DescGlobal\n\t\t\tc.declareWasmGlobal(desc.ValType, desc.Mutable)\n\t\t}\n\t}\n\tfor _, g := range c.m.GlobalSection {\n\t\tdesc := g.Type\n\t\tc.declareWasmGlobal(desc.ValType, desc.Mutable)\n\t}\n\n\t// TODO: add tables.\n}\n\nfunc (c *Compiler) declareWasmGlobal(typ wasm.ValueType, mutable bool) {\n\tvar st ssa.Type\n\tswitch typ {\n\tcase wasm.ValueTypeI32:\n\t\tst = ssa.TypeI32\n\tcase wasm.ValueTypeI64,\n\t\t// Both externref and funcref are represented as I64 since we only support 64-bit platforms.\n\t\twasm.ValueTypeExternref, wasm.ValueTypeFuncref:\n\t\tst = ssa.TypeI64\n\tcase wasm.ValueTypeF32:\n\t\tst = ssa.TypeF32\n\tcase wasm.ValueTypeF64:\n\t\tst = ssa.TypeF64\n\tcase wasm.ValueTypeV128:\n\t\tst = ssa.TypeV128\n\tdefault:\n\t\tpanic(\"TODO: \" + wasm.ValueTypeName(typ))\n\t}\n\tv := c.ssaBuilder.DeclareVariable(st)\n\tindex := wasm.Index(len(c.globalVariables))\n\tc.globalVariables = append(c.globalVariables, v)\n\tc.globalVariablesTypes = append(c.globalVariablesTypes, st)\n\tif mutable {\n\t\tc.mutableGlobalVariablesIndexes = append(c.mutableGlobalVariablesIndexes, index)\n\t}\n}\n\n// WasmTypeToSSAType converts wasm.ValueType to ssa.Type.\nfunc WasmTypeToSSAType(vt wasm.ValueType) ssa.Type {\n\tswitch vt {\n\tcase wasm.ValueTypeI32:\n\t\treturn ssa.TypeI32\n\tcase wasm.ValueTypeI64,\n\t\t// Both externref and funcref are represented as I64 since we only support 64-bit platforms.\n\t\twasm.ValueTypeExternref, wasm.ValueTypeFuncref:\n\t\treturn ssa.TypeI64\n\tcase wasm.ValueTypeF32:\n\t\treturn ssa.TypeF32\n\tcase wasm.ValueTypeF64:\n\t\treturn ssa.TypeF64\n\tcase wasm.ValueTypeV128:\n\t\treturn ssa.TypeV128\n\tdefault:\n\t\tpanic(\"TODO: \" + wasm.ValueTypeName(vt))\n\t}\n}\n\n// addBlockParamsFromWasmTypes adds the block parameters to the given block.\nfunc (c *Compiler) addBlockParamsFromWasmTypes(tps []wasm.ValueType, blk ssa.BasicBlock) {\n\tfor _, typ := range tps {\n\t\tst := WasmTypeToSSAType(typ)\n\t\tblk.AddParam(c.ssaBuilder, st)\n\t}\n}\n\n// formatBuilder outputs the constructed SSA function as a string with a source information.\nfunc (c *Compiler) formatBuilder() string {\n\treturn c.ssaBuilder.Format()\n}\n\n// SignatureForListener returns the signatures for the listener functions.\nfunc SignatureForListener(wasmSig *wasm.FunctionType) (*ssa.Signature, *ssa.Signature) {\n\tbeforeSig := &ssa.Signature{}\n\tbeforeSig.Params = make([]ssa.Type, len(wasmSig.Params)+2)\n\tbeforeSig.Params[0] = ssa.TypeI64 // Execution context.\n\tbeforeSig.Params[1] = ssa.TypeI32 // Function index.\n\tfor i, p := range wasmSig.Params {\n\t\tbeforeSig.Params[i+2] = WasmTypeToSSAType(p)\n\t}\n\tafterSig := &ssa.Signature{}\n\tafterSig.Params = make([]ssa.Type, len(wasmSig.Results)+2)\n\tafterSig.Params[0] = ssa.TypeI64 // Execution context.\n\tafterSig.Params[1] = ssa.TypeI32 // Function index.\n\tfor i, p := range wasmSig.Results {\n\t\tafterSig.Params[i+2] = WasmTypeToSSAType(p)\n\t}\n\treturn beforeSig, afterSig\n}\n\n// isBoundSafe returns true if the given value is known to be safe to access up to the given bound.\nfunc (c *Compiler) getKnownSafeBound(v ssa.ValueID) *knownSafeBound {\n\tif int(v) >= len(c.knownSafeBounds) {\n\t\treturn nil\n\t}\n\treturn &c.knownSafeBounds[v]\n}\n\n// recordKnownSafeBound records the given safe bound for the given value.\nfunc (c *Compiler) recordKnownSafeBound(v ssa.ValueID, safeBound uint64, absoluteAddr ssa.Value) {\n\tif int(v) >= len(c.knownSafeBounds) {\n\t\tc.knownSafeBounds = append(c.knownSafeBounds, make([]knownSafeBound, v+1)...)\n\t}\n\n\tif exiting := c.knownSafeBounds[v]; exiting.bound == 0 {\n\t\tc.knownSafeBounds[v] = knownSafeBound{\n\t\t\tbound:        safeBound,\n\t\t\tabsoluteAddr: absoluteAddr,\n\t\t}\n\t\tc.knownSafeBoundsSet = append(c.knownSafeBoundsSet, v)\n\t} else if safeBound > exiting.bound {\n\t\tc.knownSafeBounds[v].bound = safeBound\n\t}\n}\n\n// clearSafeBounds clears the known safe bounds.\nfunc (c *Compiler) clearSafeBounds() {\n\tfor _, v := range c.knownSafeBoundsSet {\n\t\tptr := &c.knownSafeBounds[v]\n\t\tptr.bound = 0\n\t\tptr.absoluteAddr = ssa.ValueInvalid\n\t}\n\tc.knownSafeBoundsSet = c.knownSafeBoundsSet[:0]\n}\n\n// resetAbsoluteAddressInSafeBounds resets the absolute addresses recorded in the known safe bounds.\nfunc (c *Compiler) resetAbsoluteAddressInSafeBounds() {\n\tfor _, v := range c.knownSafeBoundsSet {\n\t\tptr := &c.knownSafeBounds[v]\n\t\tptr.absoluteAddr = ssa.ValueInvalid\n\t}\n}\n\nfunc (k *knownSafeBound) valid() bool {\n\treturn k != nil && k.bound > 0\n}\n\nfunc (c *Compiler) allocateVarLengthValues(_cap int, vs ...ssa.Value) ssa.Values {\n\tbuilder := c.ssaBuilder\n\tpool := builder.VarLengthPool()\n\targs := pool.Allocate(_cap)\n\targs = args.Append(pool, vs...)\n\treturn args\n}\n\nfunc (c *Compiler) finalizeKnownSafeBoundsAtTheEndOfBlock(bID ssa.BasicBlockID) {\n\t_bID := int(bID)\n\tif l := len(c.knownSafeBoundsAtTheEndOfBlocks); _bID >= l {\n\t\tc.knownSafeBoundsAtTheEndOfBlocks = append(c.knownSafeBoundsAtTheEndOfBlocks,\n\t\t\tmake([]knownSafeBoundsAtTheEndOfBlock, _bID+1-len(c.knownSafeBoundsAtTheEndOfBlocks))...)\n\t\tfor i := l; i < len(c.knownSafeBoundsAtTheEndOfBlocks); i++ {\n\t\t\tc.knownSafeBoundsAtTheEndOfBlocks[i] = knownSafeBoundsAtTheEndOfBlockNil\n\t\t}\n\t}\n\tp := &c.varLengthKnownSafeBoundWithIDPool\n\tsize := len(c.knownSafeBoundsSet)\n\tallocated := c.varLengthKnownSafeBoundWithIDPool.Allocate(size)\n\t// Sort the known safe bounds by the value ID so that we can use the intersection algorithm in initializeCurrentBlockKnownBounds.\n\tsortSSAValueIDs(c.knownSafeBoundsSet)\n\tfor _, vID := range c.knownSafeBoundsSet {\n\t\tkb := c.knownSafeBounds[vID]\n\t\tallocated = allocated.Append(p, knownSafeBoundWithID{\n\t\t\tknownSafeBound: kb,\n\t\t\tid:             vID,\n\t\t})\n\t}\n\tc.knownSafeBoundsAtTheEndOfBlocks[bID] = allocated\n\tc.clearSafeBounds()\n}\n\nfunc (c *Compiler) initializeCurrentBlockKnownBounds() {\n\tcurrentBlk := c.ssaBuilder.CurrentBlock()\n\tswitch preds := currentBlk.Preds(); preds {\n\tcase 0:\n\tcase 1:\n\t\tpred := currentBlk.Pred(0).ID()\n\t\tfor _, kb := range c.getKnownSafeBoundsAtTheEndOfBlocks(pred).View() {\n\t\t\t// Unless the block is sealed, we cannot assume the absolute address is valid:\n\t\t\t// later we might add another predecessor that has no visibility of that value.\n\t\t\taddr := ssa.ValueInvalid\n\t\t\tif currentBlk.Sealed() {\n\t\t\t\taddr = kb.absoluteAddr\n\t\t\t}\n\t\t\tc.recordKnownSafeBound(kb.id, kb.bound, addr)\n\t\t}\n\tdefault:\n\t\tc.pointers = c.pointers[:0]\n\t\tc.bounds = c.bounds[:0]\n\t\tfor i := 0; i < preds; i++ {\n\t\t\tc.bounds = append(c.bounds, c.getKnownSafeBoundsAtTheEndOfBlocks(currentBlk.Pred(i).ID()).View())\n\t\t\tc.pointers = append(c.pointers, 0)\n\t\t}\n\n\t\t// If there are multiple predecessors, we need to find the intersection of the known safe bounds.\n\n\touter:\n\t\tfor {\n\t\t\tsmallestID := ssa.ValueID(math.MaxUint32)\n\t\t\tfor i, ptr := range c.pointers {\n\t\t\t\tif ptr >= len(c.bounds[i]) {\n\t\t\t\t\tbreak outer\n\t\t\t\t}\n\t\t\t\tcb := &c.bounds[i][ptr]\n\t\t\t\tif id := cb.id; id < smallestID {\n\t\t\t\t\tsmallestID = cb.id\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Check if current elements are the same across all lists.\n\t\t\tsame := true\n\t\t\tminBound := uint64(math.MaxUint64)\n\t\t\tfor i := 0; i < preds; i++ {\n\t\t\t\tcb := &c.bounds[i][c.pointers[i]]\n\t\t\t\tif cb.id != smallestID {\n\t\t\t\t\tsame = false\n\t\t\t\t} else {\n\t\t\t\t\tif cb.bound < minBound {\n\t\t\t\t\t\tminBound = cb.bound\n\t\t\t\t\t}\n\t\t\t\t\tc.pointers[i]++\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif same { // All elements are the same.\n\t\t\t\t// Absolute address cannot be used in the intersection since the value might be only defined in one of the predecessors.\n\t\t\t\tc.recordKnownSafeBound(smallestID, minBound, ssa.ValueInvalid)\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc (c *Compiler) getKnownSafeBoundsAtTheEndOfBlocks(id ssa.BasicBlockID) knownSafeBoundsAtTheEndOfBlock {\n\tif int(id) >= len(c.knownSafeBoundsAtTheEndOfBlocks) {\n\t\treturn knownSafeBoundsAtTheEndOfBlockNil\n\t}\n\treturn c.knownSafeBoundsAtTheEndOfBlocks[id]\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/frontend/lower.go",
    "content": "package frontend\n\nimport (\n\t\"encoding/binary\"\n\t\"fmt\"\n\t\"math\"\n\t\"runtime\"\n\t\"strings\"\n\n\t\"github.com/tetratelabs/wazero/api\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/ssa\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi\"\n\t\"github.com/tetratelabs/wazero/internal/leb128\"\n\t\"github.com/tetratelabs/wazero/internal/wasm\"\n)\n\ntype (\n\t// loweringState is used to keep the state of lowering.\n\tloweringState struct {\n\t\t// values holds the values on the Wasm stack.\n\t\tvalues           []ssa.Value\n\t\tcontrolFrames    []controlFrame\n\t\tunreachable      bool\n\t\tunreachableDepth int\n\t\ttmpForBrTable    []uint32\n\t\tpc               int\n\t}\n\tcontrolFrame struct {\n\t\tkind controlFrameKind\n\t\t// originalStackLen holds the number of values on the Wasm stack\n\t\t// when start executing this control frame minus params for the block.\n\t\toriginalStackLenWithoutParam int\n\t\t// blk is the loop header if this is loop, and is the else-block if this is an if frame.\n\t\tblk,\n\t\t// followingBlock is the basic block we enter if we reach \"end\" of block.\n\t\tfollowingBlock ssa.BasicBlock\n\t\tblockType *wasm.FunctionType\n\t\t// clonedArgs hold the arguments to Else block.\n\t\tclonedArgs ssa.Values\n\t}\n\n\tcontrolFrameKind byte\n)\n\n// String implements fmt.Stringer for debugging.\nfunc (l *loweringState) String() string {\n\tvar str []string\n\tfor _, v := range l.values {\n\t\tstr = append(str, fmt.Sprintf(\"v%v\", v.ID()))\n\t}\n\tvar frames []string\n\tfor i := range l.controlFrames {\n\t\tframes = append(frames, l.controlFrames[i].kind.String())\n\t}\n\treturn fmt.Sprintf(\"\\n\\tunreachable=%v(depth=%d)\\n\\tstack: %s\\n\\tcontrol frames: %s\",\n\t\tl.unreachable, l.unreachableDepth,\n\t\tstrings.Join(str, \", \"),\n\t\tstrings.Join(frames, \", \"),\n\t)\n}\n\nconst (\n\tcontrolFrameKindFunction = iota + 1\n\tcontrolFrameKindLoop\n\tcontrolFrameKindIfWithElse\n\tcontrolFrameKindIfWithoutElse\n\tcontrolFrameKindBlock\n)\n\n// String implements fmt.Stringer for debugging.\nfunc (k controlFrameKind) String() string {\n\tswitch k {\n\tcase controlFrameKindFunction:\n\t\treturn \"function\"\n\tcase controlFrameKindLoop:\n\t\treturn \"loop\"\n\tcase controlFrameKindIfWithElse:\n\t\treturn \"if_with_else\"\n\tcase controlFrameKindIfWithoutElse:\n\t\treturn \"if_without_else\"\n\tcase controlFrameKindBlock:\n\t\treturn \"block\"\n\tdefault:\n\t\tpanic(k)\n\t}\n}\n\n// isLoop returns true if this is a loop frame.\nfunc (ctrl *controlFrame) isLoop() bool {\n\treturn ctrl.kind == controlFrameKindLoop\n}\n\n// reset resets the state of loweringState for reuse.\nfunc (l *loweringState) reset() {\n\tl.values = l.values[:0]\n\tl.controlFrames = l.controlFrames[:0]\n\tl.pc = 0\n\tl.unreachable = false\n\tl.unreachableDepth = 0\n}\n\nfunc (l *loweringState) peek() (ret ssa.Value) {\n\ttail := len(l.values) - 1\n\treturn l.values[tail]\n}\n\nfunc (l *loweringState) pop() (ret ssa.Value) {\n\ttail := len(l.values) - 1\n\tret = l.values[tail]\n\tl.values = l.values[:tail]\n\treturn\n}\n\nfunc (l *loweringState) push(ret ssa.Value) {\n\tl.values = append(l.values, ret)\n}\n\nfunc (c *Compiler) nPeekDup(n int) ssa.Values {\n\tif n == 0 {\n\t\treturn ssa.ValuesNil\n\t}\n\n\tl := c.state()\n\ttail := len(l.values)\n\n\targs := c.allocateVarLengthValues(n, l.values[tail-n:tail]...)\n\treturn args\n}\n\nfunc (l *loweringState) ctrlPop() (ret controlFrame) {\n\ttail := len(l.controlFrames) - 1\n\tret = l.controlFrames[tail]\n\tl.controlFrames = l.controlFrames[:tail]\n\treturn\n}\n\nfunc (l *loweringState) ctrlPush(ret controlFrame) {\n\tl.controlFrames = append(l.controlFrames, ret)\n}\n\nfunc (l *loweringState) ctrlPeekAt(n int) (ret *controlFrame) {\n\ttail := len(l.controlFrames) - 1\n\treturn &l.controlFrames[tail-n]\n}\n\n// lowerBody lowers the body of the Wasm function to the SSA form.\nfunc (c *Compiler) lowerBody(entryBlk ssa.BasicBlock) {\n\tc.ssaBuilder.Seal(entryBlk)\n\n\tif c.needListener {\n\t\tc.callListenerBefore()\n\t}\n\n\t// Pushes the empty control frame which corresponds to the function return.\n\tc.loweringState.ctrlPush(controlFrame{\n\t\tkind:           controlFrameKindFunction,\n\t\tblockType:      c.wasmFunctionTyp,\n\t\tfollowingBlock: c.ssaBuilder.ReturnBlock(),\n\t})\n\n\tfor c.loweringState.pc < len(c.wasmFunctionBody) {\n\t\tblkBeforeLowering := c.ssaBuilder.CurrentBlock()\n\t\tc.lowerCurrentOpcode()\n\t\tblkAfterLowering := c.ssaBuilder.CurrentBlock()\n\t\tif blkBeforeLowering != blkAfterLowering {\n\t\t\t// In Wasm, once a block exits, that means we've done compiling the block.\n\t\t\t// Therefore, we finalize the known bounds at the end of the block for the exiting block.\n\t\t\tc.finalizeKnownSafeBoundsAtTheEndOfBlock(blkBeforeLowering.ID())\n\t\t\t// After that, we initialize the known bounds for the new compilation target block.\n\t\t\tc.initializeCurrentBlockKnownBounds()\n\t\t}\n\t}\n}\n\nfunc (c *Compiler) state() *loweringState {\n\treturn &c.loweringState\n}\n\nfunc (c *Compiler) lowerCurrentOpcode() {\n\top := c.wasmFunctionBody[c.loweringState.pc]\n\n\tif c.needSourceOffsetInfo {\n\t\tc.ssaBuilder.SetCurrentSourceOffset(\n\t\t\tssa.SourceOffset(c.loweringState.pc) + ssa.SourceOffset(c.wasmFunctionBodyOffsetInCodeSection),\n\t\t)\n\t}\n\n\tbuilder := c.ssaBuilder\n\tstate := c.state()\n\tswitch op {\n\tcase wasm.OpcodeI32Const:\n\t\tc := c.readI32s()\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\n\t\ticonst := builder.AllocateInstruction().AsIconst32(uint32(c)).Insert(builder)\n\t\tvalue := iconst.Return()\n\t\tstate.push(value)\n\tcase wasm.OpcodeI64Const:\n\t\tc := c.readI64s()\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\ticonst := builder.AllocateInstruction().AsIconst64(uint64(c)).Insert(builder)\n\t\tvalue := iconst.Return()\n\t\tstate.push(value)\n\tcase wasm.OpcodeF32Const:\n\t\tf32 := c.readF32()\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\tf32const := builder.AllocateInstruction().\n\t\t\tAsF32const(f32).\n\t\t\tInsert(builder).\n\t\t\tReturn()\n\t\tstate.push(f32const)\n\tcase wasm.OpcodeF64Const:\n\t\tf64 := c.readF64()\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\tf64const := builder.AllocateInstruction().\n\t\t\tAsF64const(f64).\n\t\t\tInsert(builder).\n\t\t\tReturn()\n\t\tstate.push(f64const)\n\tcase wasm.OpcodeI32Add, wasm.OpcodeI64Add:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\ty, x := state.pop(), state.pop()\n\t\tiadd := builder.AllocateInstruction()\n\t\tiadd.AsIadd(x, y)\n\t\tbuilder.InsertInstruction(iadd)\n\t\tvalue := iadd.Return()\n\t\tstate.push(value)\n\tcase wasm.OpcodeI32Sub, wasm.OpcodeI64Sub:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\ty, x := state.pop(), state.pop()\n\t\tisub := builder.AllocateInstruction()\n\t\tisub.AsIsub(x, y)\n\t\tbuilder.InsertInstruction(isub)\n\t\tvalue := isub.Return()\n\t\tstate.push(value)\n\tcase wasm.OpcodeF32Add, wasm.OpcodeF64Add:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\ty, x := state.pop(), state.pop()\n\t\tiadd := builder.AllocateInstruction()\n\t\tiadd.AsFadd(x, y)\n\t\tbuilder.InsertInstruction(iadd)\n\t\tvalue := iadd.Return()\n\t\tstate.push(value)\n\tcase wasm.OpcodeI32Mul, wasm.OpcodeI64Mul:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\ty, x := state.pop(), state.pop()\n\t\timul := builder.AllocateInstruction()\n\t\timul.AsImul(x, y)\n\t\tbuilder.InsertInstruction(imul)\n\t\tvalue := imul.Return()\n\t\tstate.push(value)\n\tcase wasm.OpcodeF32Sub, wasm.OpcodeF64Sub:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\ty, x := state.pop(), state.pop()\n\t\tisub := builder.AllocateInstruction()\n\t\tisub.AsFsub(x, y)\n\t\tbuilder.InsertInstruction(isub)\n\t\tvalue := isub.Return()\n\t\tstate.push(value)\n\tcase wasm.OpcodeF32Mul, wasm.OpcodeF64Mul:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\ty, x := state.pop(), state.pop()\n\t\tisub := builder.AllocateInstruction()\n\t\tisub.AsFmul(x, y)\n\t\tbuilder.InsertInstruction(isub)\n\t\tvalue := isub.Return()\n\t\tstate.push(value)\n\tcase wasm.OpcodeF32Div, wasm.OpcodeF64Div:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\ty, x := state.pop(), state.pop()\n\t\tisub := builder.AllocateInstruction()\n\t\tisub.AsFdiv(x, y)\n\t\tbuilder.InsertInstruction(isub)\n\t\tvalue := isub.Return()\n\t\tstate.push(value)\n\tcase wasm.OpcodeF32Max, wasm.OpcodeF64Max:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\ty, x := state.pop(), state.pop()\n\t\tisub := builder.AllocateInstruction()\n\t\tisub.AsFmax(x, y)\n\t\tbuilder.InsertInstruction(isub)\n\t\tvalue := isub.Return()\n\t\tstate.push(value)\n\tcase wasm.OpcodeF32Min, wasm.OpcodeF64Min:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\ty, x := state.pop(), state.pop()\n\t\tisub := builder.AllocateInstruction()\n\t\tisub.AsFmin(x, y)\n\t\tbuilder.InsertInstruction(isub)\n\t\tvalue := isub.Return()\n\t\tstate.push(value)\n\tcase wasm.OpcodeI64Extend8S:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\tc.insertIntegerExtend(true, 8, 64)\n\tcase wasm.OpcodeI64Extend16S:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\tc.insertIntegerExtend(true, 16, 64)\n\tcase wasm.OpcodeI64Extend32S, wasm.OpcodeI64ExtendI32S:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\tc.insertIntegerExtend(true, 32, 64)\n\tcase wasm.OpcodeI64ExtendI32U:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\tc.insertIntegerExtend(false, 32, 64)\n\tcase wasm.OpcodeI32Extend8S:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\tc.insertIntegerExtend(true, 8, 32)\n\tcase wasm.OpcodeI32Extend16S:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\tc.insertIntegerExtend(true, 16, 32)\n\tcase wasm.OpcodeI32Eqz, wasm.OpcodeI64Eqz:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\tx := state.pop()\n\t\tzero := builder.AllocateInstruction()\n\t\tif op == wasm.OpcodeI32Eqz {\n\t\t\tzero.AsIconst32(0)\n\t\t} else {\n\t\t\tzero.AsIconst64(0)\n\t\t}\n\t\tbuilder.InsertInstruction(zero)\n\t\ticmp := builder.AllocateInstruction().\n\t\t\tAsIcmp(x, zero.Return(), ssa.IntegerCmpCondEqual).\n\t\t\tInsert(builder).\n\t\t\tReturn()\n\t\tstate.push(icmp)\n\tcase wasm.OpcodeI32Eq, wasm.OpcodeI64Eq:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\tc.insertIcmp(ssa.IntegerCmpCondEqual)\n\tcase wasm.OpcodeI32Ne, wasm.OpcodeI64Ne:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\tc.insertIcmp(ssa.IntegerCmpCondNotEqual)\n\tcase wasm.OpcodeI32LtS, wasm.OpcodeI64LtS:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\tc.insertIcmp(ssa.IntegerCmpCondSignedLessThan)\n\tcase wasm.OpcodeI32LtU, wasm.OpcodeI64LtU:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\tc.insertIcmp(ssa.IntegerCmpCondUnsignedLessThan)\n\tcase wasm.OpcodeI32GtS, wasm.OpcodeI64GtS:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\tc.insertIcmp(ssa.IntegerCmpCondSignedGreaterThan)\n\tcase wasm.OpcodeI32GtU, wasm.OpcodeI64GtU:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\tc.insertIcmp(ssa.IntegerCmpCondUnsignedGreaterThan)\n\tcase wasm.OpcodeI32LeS, wasm.OpcodeI64LeS:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\tc.insertIcmp(ssa.IntegerCmpCondSignedLessThanOrEqual)\n\tcase wasm.OpcodeI32LeU, wasm.OpcodeI64LeU:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\tc.insertIcmp(ssa.IntegerCmpCondUnsignedLessThanOrEqual)\n\tcase wasm.OpcodeI32GeS, wasm.OpcodeI64GeS:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\tc.insertIcmp(ssa.IntegerCmpCondSignedGreaterThanOrEqual)\n\tcase wasm.OpcodeI32GeU, wasm.OpcodeI64GeU:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\tc.insertIcmp(ssa.IntegerCmpCondUnsignedGreaterThanOrEqual)\n\n\tcase wasm.OpcodeF32Eq, wasm.OpcodeF64Eq:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\tc.insertFcmp(ssa.FloatCmpCondEqual)\n\tcase wasm.OpcodeF32Ne, wasm.OpcodeF64Ne:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\tc.insertFcmp(ssa.FloatCmpCondNotEqual)\n\tcase wasm.OpcodeF32Lt, wasm.OpcodeF64Lt:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\tc.insertFcmp(ssa.FloatCmpCondLessThan)\n\tcase wasm.OpcodeF32Gt, wasm.OpcodeF64Gt:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\tc.insertFcmp(ssa.FloatCmpCondGreaterThan)\n\tcase wasm.OpcodeF32Le, wasm.OpcodeF64Le:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\tc.insertFcmp(ssa.FloatCmpCondLessThanOrEqual)\n\tcase wasm.OpcodeF32Ge, wasm.OpcodeF64Ge:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\tc.insertFcmp(ssa.FloatCmpCondGreaterThanOrEqual)\n\tcase wasm.OpcodeF32Neg, wasm.OpcodeF64Neg:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\tx := state.pop()\n\t\tv := builder.AllocateInstruction().AsFneg(x).Insert(builder).Return()\n\t\tstate.push(v)\n\tcase wasm.OpcodeF32Sqrt, wasm.OpcodeF64Sqrt:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\tx := state.pop()\n\t\tv := builder.AllocateInstruction().AsSqrt(x).Insert(builder).Return()\n\t\tstate.push(v)\n\tcase wasm.OpcodeF32Abs, wasm.OpcodeF64Abs:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\tx := state.pop()\n\t\tv := builder.AllocateInstruction().AsFabs(x).Insert(builder).Return()\n\t\tstate.push(v)\n\tcase wasm.OpcodeF32Copysign, wasm.OpcodeF64Copysign:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\ty, x := state.pop(), state.pop()\n\t\tv := builder.AllocateInstruction().AsFcopysign(x, y).Insert(builder).Return()\n\t\tstate.push(v)\n\n\tcase wasm.OpcodeF32Ceil, wasm.OpcodeF64Ceil:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\tx := state.pop()\n\t\tv := builder.AllocateInstruction().AsCeil(x).Insert(builder).Return()\n\t\tstate.push(v)\n\tcase wasm.OpcodeF32Floor, wasm.OpcodeF64Floor:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\tx := state.pop()\n\t\tv := builder.AllocateInstruction().AsFloor(x).Insert(builder).Return()\n\t\tstate.push(v)\n\tcase wasm.OpcodeF32Trunc, wasm.OpcodeF64Trunc:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\tx := state.pop()\n\t\tv := builder.AllocateInstruction().AsTrunc(x).Insert(builder).Return()\n\t\tstate.push(v)\n\tcase wasm.OpcodeF32Nearest, wasm.OpcodeF64Nearest:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\tx := state.pop()\n\t\tv := builder.AllocateInstruction().AsNearest(x).Insert(builder).Return()\n\t\tstate.push(v)\n\tcase wasm.OpcodeI64TruncF64S, wasm.OpcodeI64TruncF32S,\n\t\twasm.OpcodeI32TruncF64S, wasm.OpcodeI32TruncF32S,\n\t\twasm.OpcodeI64TruncF64U, wasm.OpcodeI64TruncF32U,\n\t\twasm.OpcodeI32TruncF64U, wasm.OpcodeI32TruncF32U:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\tret := builder.AllocateInstruction().AsFcvtToInt(\n\t\t\tstate.pop(),\n\t\t\tc.execCtxPtrValue,\n\t\t\top == wasm.OpcodeI64TruncF64S || op == wasm.OpcodeI64TruncF32S || op == wasm.OpcodeI32TruncF32S || op == wasm.OpcodeI32TruncF64S,\n\t\t\top == wasm.OpcodeI64TruncF64S || op == wasm.OpcodeI64TruncF32S || op == wasm.OpcodeI64TruncF64U || op == wasm.OpcodeI64TruncF32U,\n\t\t\tfalse,\n\t\t).Insert(builder).Return()\n\t\tstate.push(ret)\n\tcase wasm.OpcodeMiscPrefix:\n\t\tstate.pc++\n\t\t// A misc opcode is encoded as an unsigned variable 32-bit integer.\n\t\tmiscOpUint, num, err := leb128.LoadUint32(c.wasmFunctionBody[state.pc:])\n\t\tif err != nil {\n\t\t\t// In normal conditions this should never happen because the function has passed validation.\n\t\t\tpanic(fmt.Sprintf(\"failed to read misc opcode: %v\", err))\n\t\t}\n\t\tstate.pc += int(num - 1)\n\t\tmiscOp := wasm.OpcodeMisc(miscOpUint)\n\t\tswitch miscOp {\n\t\tcase wasm.OpcodeMiscI64TruncSatF64S, wasm.OpcodeMiscI64TruncSatF32S,\n\t\t\twasm.OpcodeMiscI32TruncSatF64S, wasm.OpcodeMiscI32TruncSatF32S,\n\t\t\twasm.OpcodeMiscI64TruncSatF64U, wasm.OpcodeMiscI64TruncSatF32U,\n\t\t\twasm.OpcodeMiscI32TruncSatF64U, wasm.OpcodeMiscI32TruncSatF32U:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tret := builder.AllocateInstruction().AsFcvtToInt(\n\t\t\t\tstate.pop(),\n\t\t\t\tc.execCtxPtrValue,\n\t\t\t\tmiscOp == wasm.OpcodeMiscI64TruncSatF64S || miscOp == wasm.OpcodeMiscI64TruncSatF32S || miscOp == wasm.OpcodeMiscI32TruncSatF32S || miscOp == wasm.OpcodeMiscI32TruncSatF64S,\n\t\t\t\tmiscOp == wasm.OpcodeMiscI64TruncSatF64S || miscOp == wasm.OpcodeMiscI64TruncSatF32S || miscOp == wasm.OpcodeMiscI64TruncSatF64U || miscOp == wasm.OpcodeMiscI64TruncSatF32U,\n\t\t\t\ttrue,\n\t\t\t).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\n\t\tcase wasm.OpcodeMiscTableSize:\n\t\t\ttableIndex := c.readI32u()\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\t// Load the table.\n\t\t\tloadTableInstancePtr := builder.AllocateInstruction()\n\t\t\tloadTableInstancePtr.AsLoad(c.moduleCtxPtrValue, c.offset.TableOffset(int(tableIndex)).U32(), ssa.TypeI64)\n\t\t\tbuilder.InsertInstruction(loadTableInstancePtr)\n\t\t\ttableInstancePtr := loadTableInstancePtr.Return()\n\n\t\t\t// Load the table's length.\n\t\t\tloadTableLen := builder.AllocateInstruction().\n\t\t\t\tAsLoad(tableInstancePtr, tableInstanceLenOffset, ssa.TypeI32).\n\t\t\t\tInsert(builder)\n\t\t\tstate.push(loadTableLen.Return())\n\n\t\tcase wasm.OpcodeMiscTableGrow:\n\t\t\ttableIndex := c.readI32u()\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tc.storeCallerModuleContext()\n\n\t\t\ttableIndexVal := builder.AllocateInstruction().AsIconst32(tableIndex).Insert(builder).Return()\n\n\t\t\tnum := state.pop()\n\t\t\tr := state.pop()\n\n\t\t\ttableGrowPtr := builder.AllocateInstruction().\n\t\t\t\tAsLoad(c.execCtxPtrValue,\n\t\t\t\t\twazevoapi.ExecutionContextOffsetTableGrowTrampolineAddress.U32(),\n\t\t\t\t\tssa.TypeI64,\n\t\t\t\t).Insert(builder).Return()\n\n\t\t\targs := c.allocateVarLengthValues(4, c.execCtxPtrValue, tableIndexVal, num, r)\n\t\t\tcallGrowRet := builder.\n\t\t\t\tAllocateInstruction().\n\t\t\t\tAsCallIndirect(tableGrowPtr, &c.tableGrowSig, args).\n\t\t\t\tInsert(builder).Return()\n\t\t\tstate.push(callGrowRet)\n\n\t\tcase wasm.OpcodeMiscTableCopy:\n\t\t\tdstTableIndex := c.readI32u()\n\t\t\tsrcTableIndex := c.readI32u()\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tcopySize := builder.\n\t\t\t\tAllocateInstruction().AsUExtend(state.pop(), 32, 64).Insert(builder).Return()\n\t\t\tsrcOffset := builder.\n\t\t\t\tAllocateInstruction().AsUExtend(state.pop(), 32, 64).Insert(builder).Return()\n\t\t\tdstOffset := builder.\n\t\t\t\tAllocateInstruction().AsUExtend(state.pop(), 32, 64).Insert(builder).Return()\n\n\t\t\t// Out of bounds check.\n\t\t\tdstTableInstancePtr := c.boundsCheckInTable(dstTableIndex, dstOffset, copySize)\n\t\t\tsrcTableInstancePtr := c.boundsCheckInTable(srcTableIndex, srcOffset, copySize)\n\n\t\t\tdstTableBaseAddr := c.loadTableBaseAddr(dstTableInstancePtr)\n\t\t\tsrcTableBaseAddr := c.loadTableBaseAddr(srcTableInstancePtr)\n\n\t\t\tthree := builder.AllocateInstruction().AsIconst64(3).Insert(builder).Return()\n\n\t\t\tdstOffsetInBytes := builder.AllocateInstruction().AsIshl(dstOffset, three).Insert(builder).Return()\n\t\t\tdstAddr := builder.AllocateInstruction().AsIadd(dstTableBaseAddr, dstOffsetInBytes).Insert(builder).Return()\n\t\t\tsrcOffsetInBytes := builder.AllocateInstruction().AsIshl(srcOffset, three).Insert(builder).Return()\n\t\t\tsrcAddr := builder.AllocateInstruction().AsIadd(srcTableBaseAddr, srcOffsetInBytes).Insert(builder).Return()\n\n\t\t\tcopySizeInBytes := builder.AllocateInstruction().AsIshl(copySize, three).Insert(builder).Return()\n\t\t\tc.callMemmove(dstAddr, srcAddr, copySizeInBytes)\n\n\t\tcase wasm.OpcodeMiscMemoryCopy:\n\t\t\tstate.pc += 2 // +2 to skip two memory indexes which are fixed to zero.\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tcopySize := builder.\n\t\t\t\tAllocateInstruction().AsUExtend(state.pop(), 32, 64).Insert(builder).Return()\n\t\t\tsrcOffset := builder.\n\t\t\t\tAllocateInstruction().AsUExtend(state.pop(), 32, 64).Insert(builder).Return()\n\t\t\tdstOffset := builder.\n\t\t\t\tAllocateInstruction().AsUExtend(state.pop(), 32, 64).Insert(builder).Return()\n\n\t\t\t// Out of bounds check.\n\t\t\tmemLen := c.getMemoryLenValue(false)\n\t\t\tc.boundsCheckInMemory(memLen, dstOffset, copySize)\n\t\t\tc.boundsCheckInMemory(memLen, srcOffset, copySize)\n\n\t\t\tmemBase := c.getMemoryBaseValue(false)\n\t\t\tdstAddr := builder.AllocateInstruction().AsIadd(memBase, dstOffset).Insert(builder).Return()\n\t\t\tsrcAddr := builder.AllocateInstruction().AsIadd(memBase, srcOffset).Insert(builder).Return()\n\n\t\t\tc.callMemmove(dstAddr, srcAddr, copySize)\n\n\t\tcase wasm.OpcodeMiscTableFill:\n\t\t\ttableIndex := c.readI32u()\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tfillSize := state.pop()\n\t\t\tvalue := state.pop()\n\t\t\toffset := state.pop()\n\n\t\t\tfillSizeExt := builder.\n\t\t\t\tAllocateInstruction().AsUExtend(fillSize, 32, 64).Insert(builder).Return()\n\t\t\toffsetExt := builder.\n\t\t\t\tAllocateInstruction().AsUExtend(offset, 32, 64).Insert(builder).Return()\n\t\t\ttableInstancePtr := c.boundsCheckInTable(tableIndex, offsetExt, fillSizeExt)\n\n\t\t\tthree := builder.AllocateInstruction().AsIconst64(3).Insert(builder).Return()\n\t\t\toffsetInBytes := builder.AllocateInstruction().AsIshl(offsetExt, three).Insert(builder).Return()\n\t\t\tfillSizeInBytes := builder.AllocateInstruction().AsIshl(fillSizeExt, three).Insert(builder).Return()\n\n\t\t\t// Calculate the base address of the table.\n\t\t\ttableBaseAddr := c.loadTableBaseAddr(tableInstancePtr)\n\t\t\taddr := builder.AllocateInstruction().AsIadd(tableBaseAddr, offsetInBytes).Insert(builder).Return()\n\n\t\t\t// Uses the copy trick for faster filling buffer like memory.fill, but in this case we copy 8 bytes at a time.\n\t\t\t// Tables are rarely huge, so ignore the 8KB maximum.\n\t\t\t// https://github.com/golang/go/blob/go1.24.0/src/slices/slices.go#L514-L517\n\t\t\t//\n\t\t\t// \tbuf := memoryInst.Buffer[offset : offset+fillSize]\n\t\t\t// \tbuf[0:8] = value\n\t\t\t// \tfor i := 8; i < fillSize; i *= 2 { Begin with 8 bytes.\n\t\t\t// \t\tcopy(buf[i:], buf[:i])\n\t\t\t// \t}\n\n\t\t\t// Prepare the loop and following block.\n\t\t\tbeforeLoop := builder.AllocateBasicBlock()\n\t\t\tloopBlk := builder.AllocateBasicBlock()\n\t\t\tloopVar := loopBlk.AddParam(builder, ssa.TypeI64)\n\t\t\tfollowingBlk := builder.AllocateBasicBlock()\n\n\t\t\t// Insert the jump to the beforeLoop block; If the fillSize is zero, then jump to the following block to skip entire logics.\n\t\t\tzero := builder.AllocateInstruction().AsIconst64(0).Insert(builder).Return()\n\t\t\tifFillSizeZero := builder.AllocateInstruction().AsIcmp(fillSizeExt, zero, ssa.IntegerCmpCondEqual).\n\t\t\t\tInsert(builder).Return()\n\t\t\tbuilder.AllocateInstruction().AsBrnz(ifFillSizeZero, ssa.ValuesNil, followingBlk).Insert(builder)\n\t\t\tc.insertJumpToBlock(ssa.ValuesNil, beforeLoop)\n\n\t\t\t// buf[0:8] = value\n\t\t\tbuilder.SetCurrentBlock(beforeLoop)\n\t\t\tbuilder.AllocateInstruction().AsStore(ssa.OpcodeStore, value, addr, 0).Insert(builder)\n\t\t\teight := builder.AllocateInstruction().AsIconst64(8).Insert(builder).Return()\n\t\t\tc.insertJumpToBlock(c.allocateVarLengthValues(1, eight), loopBlk)\n\n\t\t\tbuilder.SetCurrentBlock(loopBlk)\n\t\t\tdstAddr := builder.AllocateInstruction().AsIadd(addr, loopVar).Insert(builder).Return()\n\n\t\t\tnewLoopVar := builder.AllocateInstruction().AsIadd(loopVar, loopVar).Insert(builder).Return()\n\t\t\tnewLoopVarLessThanFillSize := builder.AllocateInstruction().\n\t\t\t\tAsIcmp(newLoopVar, fillSizeInBytes, ssa.IntegerCmpCondUnsignedLessThan).Insert(builder).Return()\n\n\t\t\t// On the last iteration, count must be fillSizeInBytes-loopVar.\n\t\t\tdiff := builder.AllocateInstruction().AsIsub(fillSizeInBytes, loopVar).Insert(builder).Return()\n\t\t\tcount := builder.AllocateInstruction().AsSelect(newLoopVarLessThanFillSize, loopVar, diff).Insert(builder).Return()\n\n\t\t\tc.callMemmove(dstAddr, addr, count)\n\n\t\t\tbuilder.AllocateInstruction().\n\t\t\t\tAsBrnz(newLoopVarLessThanFillSize, c.allocateVarLengthValues(1, newLoopVar), loopBlk).\n\t\t\t\tInsert(builder)\n\n\t\t\tc.insertJumpToBlock(ssa.ValuesNil, followingBlk)\n\t\t\tbuilder.SetCurrentBlock(followingBlk)\n\n\t\t\tbuilder.Seal(beforeLoop)\n\t\t\tbuilder.Seal(loopBlk)\n\t\t\tbuilder.Seal(followingBlk)\n\n\t\tcase wasm.OpcodeMiscMemoryFill:\n\t\t\tstate.pc++ // Skip the memory index which is fixed to zero.\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tfillSize := builder.\n\t\t\t\tAllocateInstruction().AsUExtend(state.pop(), 32, 64).Insert(builder).Return()\n\t\t\tvalue := state.pop()\n\t\t\toffset := builder.\n\t\t\t\tAllocateInstruction().AsUExtend(state.pop(), 32, 64).Insert(builder).Return()\n\n\t\t\t// Out of bounds check.\n\t\t\tc.boundsCheckInMemory(c.getMemoryLenValue(false), offset, fillSize)\n\n\t\t\t// Calculate the base address:\n\t\t\taddr := builder.AllocateInstruction().AsIadd(c.getMemoryBaseValue(false), offset).Insert(builder).Return()\n\n\t\t\t// Uses the copy trick for faster filling buffer, with a maximum chunk size of 8KB.\n\t\t\t// https://github.com/golang/go/blob/go1.24.0/src/bytes/bytes.go#L664-L673\n\t\t\t//\n\t\t\t// \tbuf := memoryInst.Buffer[offset : offset+fillSize]\n\t\t\t// \tbuf[0] = value\n\t\t\t// \tfor i := 1; i < fillSize; {\n\t\t\t// \t\tchunk := ((i - 1) & 8191) + 1\n\t\t\t// \t\tcopy(buf[i:], buf[:chunk])\n\t\t\t// \t\ti += chunk\n\t\t\t// \t}\n\n\t\t\t// Prepare the loop and following block.\n\t\t\tbeforeLoop := builder.AllocateBasicBlock()\n\t\t\tloopBlk := builder.AllocateBasicBlock()\n\t\t\tloopVar := loopBlk.AddParam(builder, ssa.TypeI64)\n\t\t\tfollowingBlk := builder.AllocateBasicBlock()\n\n\t\t\t// Insert the jump to the beforeLoop block; If the fillSize is zero, then jump to the following block to skip entire logics.\n\t\t\tzero := builder.AllocateInstruction().AsIconst64(0).Insert(builder).Return()\n\t\t\tifFillSizeZero := builder.AllocateInstruction().AsIcmp(fillSize, zero, ssa.IntegerCmpCondEqual).\n\t\t\t\tInsert(builder).Return()\n\t\t\tbuilder.AllocateInstruction().AsBrnz(ifFillSizeZero, ssa.ValuesNil, followingBlk).Insert(builder)\n\t\t\tc.insertJumpToBlock(ssa.ValuesNil, beforeLoop)\n\n\t\t\t// buf[0] = value\n\t\t\tbuilder.SetCurrentBlock(beforeLoop)\n\t\t\tbuilder.AllocateInstruction().AsStore(ssa.OpcodeIstore8, value, addr, 0).Insert(builder)\n\t\t\tone := builder.AllocateInstruction().AsIconst64(1).Insert(builder).Return()\n\t\t\tc.insertJumpToBlock(c.allocateVarLengthValues(1, one), loopBlk)\n\n\t\t\tbuilder.SetCurrentBlock(loopBlk)\n\t\t\tdstAddr := builder.AllocateInstruction().AsIadd(addr, loopVar).Insert(builder).Return()\n\n\t\t\t// chunk := ((i - 1) & 8191) + 1\n\t\t\tmask := builder.AllocateInstruction().AsIconst64(8191).Insert(builder).Return()\n\t\t\ttmp1 := builder.AllocateInstruction().AsIsub(loopVar, one).Insert(builder).Return()\n\t\t\ttmp2 := builder.AllocateInstruction().AsBand(tmp1, mask).Insert(builder).Return()\n\t\t\tchunk := builder.AllocateInstruction().AsIadd(tmp2, one).Insert(builder).Return()\n\n\t\t\t// i += chunk\n\t\t\tnewLoopVar := builder.AllocateInstruction().AsIadd(loopVar, chunk).Insert(builder).Return()\n\t\t\tnewLoopVarLessThanFillSize := builder.AllocateInstruction().\n\t\t\t\tAsIcmp(newLoopVar, fillSize, ssa.IntegerCmpCondUnsignedLessThan).Insert(builder).Return()\n\n\t\t\t// count = min(chunk, fillSize-loopVar)\n\t\t\tdiff := builder.AllocateInstruction().AsIsub(fillSize, loopVar).Insert(builder).Return()\n\t\t\tcount := builder.AllocateInstruction().AsSelect(newLoopVarLessThanFillSize, chunk, diff).Insert(builder).Return()\n\n\t\t\tc.callMemmove(dstAddr, addr, count)\n\n\t\t\tbuilder.AllocateInstruction().\n\t\t\t\tAsBrnz(newLoopVarLessThanFillSize, c.allocateVarLengthValues(1, newLoopVar), loopBlk).\n\t\t\t\tInsert(builder)\n\n\t\t\tc.insertJumpToBlock(ssa.ValuesNil, followingBlk)\n\t\t\tbuilder.SetCurrentBlock(followingBlk)\n\n\t\t\tbuilder.Seal(beforeLoop)\n\t\t\tbuilder.Seal(loopBlk)\n\t\t\tbuilder.Seal(followingBlk)\n\n\t\tcase wasm.OpcodeMiscMemoryInit:\n\t\t\tindex := c.readI32u()\n\t\t\tstate.pc++ // Skip the memory index which is fixed to zero.\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tcopySize := builder.\n\t\t\t\tAllocateInstruction().AsUExtend(state.pop(), 32, 64).Insert(builder).Return()\n\t\t\toffsetInDataInstance := builder.\n\t\t\t\tAllocateInstruction().AsUExtend(state.pop(), 32, 64).Insert(builder).Return()\n\t\t\toffsetInMemory := builder.\n\t\t\t\tAllocateInstruction().AsUExtend(state.pop(), 32, 64).Insert(builder).Return()\n\n\t\t\tdataInstPtr := c.dataOrElementInstanceAddr(index, c.offset.DataInstances1stElement)\n\n\t\t\t// Bounds check.\n\t\t\tc.boundsCheckInMemory(c.getMemoryLenValue(false), offsetInMemory, copySize)\n\t\t\tc.boundsCheckInDataOrElementInstance(dataInstPtr, offsetInDataInstance, copySize, wazevoapi.ExitCodeMemoryOutOfBounds)\n\n\t\t\tdataInstBaseAddr := builder.AllocateInstruction().AsLoad(dataInstPtr, 0, ssa.TypeI64).Insert(builder).Return()\n\t\t\tsrcAddr := builder.AllocateInstruction().AsIadd(dataInstBaseAddr, offsetInDataInstance).Insert(builder).Return()\n\n\t\t\tmemBase := c.getMemoryBaseValue(false)\n\t\t\tdstAddr := builder.AllocateInstruction().AsIadd(memBase, offsetInMemory).Insert(builder).Return()\n\n\t\t\tc.callMemmove(dstAddr, srcAddr, copySize)\n\n\t\tcase wasm.OpcodeMiscTableInit:\n\t\t\telemIndex := c.readI32u()\n\t\t\ttableIndex := c.readI32u()\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tcopySize := builder.\n\t\t\t\tAllocateInstruction().AsUExtend(state.pop(), 32, 64).Insert(builder).Return()\n\t\t\toffsetInElementInstance := builder.\n\t\t\t\tAllocateInstruction().AsUExtend(state.pop(), 32, 64).Insert(builder).Return()\n\t\t\toffsetInTable := builder.\n\t\t\t\tAllocateInstruction().AsUExtend(state.pop(), 32, 64).Insert(builder).Return()\n\n\t\t\telemInstPtr := c.dataOrElementInstanceAddr(elemIndex, c.offset.ElementInstances1stElement)\n\n\t\t\t// Bounds check.\n\t\t\ttableInstancePtr := c.boundsCheckInTable(tableIndex, offsetInTable, copySize)\n\t\t\tc.boundsCheckInDataOrElementInstance(elemInstPtr, offsetInElementInstance, copySize, wazevoapi.ExitCodeTableOutOfBounds)\n\n\t\t\tthree := builder.AllocateInstruction().AsIconst64(3).Insert(builder).Return()\n\t\t\t// Calculates the destination address in the table.\n\t\t\ttableOffsetInBytes := builder.AllocateInstruction().AsIshl(offsetInTable, three).Insert(builder).Return()\n\t\t\ttableBaseAddr := c.loadTableBaseAddr(tableInstancePtr)\n\t\t\tdstAddr := builder.AllocateInstruction().AsIadd(tableBaseAddr, tableOffsetInBytes).Insert(builder).Return()\n\n\t\t\t// Calculates the source address in the element instance.\n\t\t\tsrcOffsetInBytes := builder.AllocateInstruction().AsIshl(offsetInElementInstance, three).Insert(builder).Return()\n\t\t\telemInstBaseAddr := builder.AllocateInstruction().AsLoad(elemInstPtr, 0, ssa.TypeI64).Insert(builder).Return()\n\t\t\tsrcAddr := builder.AllocateInstruction().AsIadd(elemInstBaseAddr, srcOffsetInBytes).Insert(builder).Return()\n\n\t\t\tcopySizeInBytes := builder.AllocateInstruction().AsIshl(copySize, three).Insert(builder).Return()\n\t\t\tc.callMemmove(dstAddr, srcAddr, copySizeInBytes)\n\n\t\tcase wasm.OpcodeMiscElemDrop:\n\t\t\tindex := c.readI32u()\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tc.dropDataOrElementInstance(index, c.offset.ElementInstances1stElement)\n\n\t\tcase wasm.OpcodeMiscDataDrop:\n\t\t\tindex := c.readI32u()\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tc.dropDataOrElementInstance(index, c.offset.DataInstances1stElement)\n\n\t\tdefault:\n\t\t\tpanic(\"Unknown MiscOp \" + wasm.MiscInstructionName(miscOp))\n\t\t}\n\n\tcase wasm.OpcodeI32ReinterpretF32:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\treinterpret := builder.AllocateInstruction().\n\t\t\tAsBitcast(state.pop(), ssa.TypeI32).\n\t\t\tInsert(builder).Return()\n\t\tstate.push(reinterpret)\n\n\tcase wasm.OpcodeI64ReinterpretF64:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\treinterpret := builder.AllocateInstruction().\n\t\t\tAsBitcast(state.pop(), ssa.TypeI64).\n\t\t\tInsert(builder).Return()\n\t\tstate.push(reinterpret)\n\n\tcase wasm.OpcodeF32ReinterpretI32:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\treinterpret := builder.AllocateInstruction().\n\t\t\tAsBitcast(state.pop(), ssa.TypeF32).\n\t\t\tInsert(builder).Return()\n\t\tstate.push(reinterpret)\n\n\tcase wasm.OpcodeF64ReinterpretI64:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\treinterpret := builder.AllocateInstruction().\n\t\t\tAsBitcast(state.pop(), ssa.TypeF64).\n\t\t\tInsert(builder).Return()\n\t\tstate.push(reinterpret)\n\n\tcase wasm.OpcodeI32DivS, wasm.OpcodeI64DivS:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\ty, x := state.pop(), state.pop()\n\t\tresult := builder.AllocateInstruction().AsSDiv(x, y, c.execCtxPtrValue).Insert(builder).Return()\n\t\tstate.push(result)\n\n\tcase wasm.OpcodeI32DivU, wasm.OpcodeI64DivU:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\ty, x := state.pop(), state.pop()\n\t\tresult := builder.AllocateInstruction().AsUDiv(x, y, c.execCtxPtrValue).Insert(builder).Return()\n\t\tstate.push(result)\n\n\tcase wasm.OpcodeI32RemS, wasm.OpcodeI64RemS:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\ty, x := state.pop(), state.pop()\n\t\tresult := builder.AllocateInstruction().AsSRem(x, y, c.execCtxPtrValue).Insert(builder).Return()\n\t\tstate.push(result)\n\n\tcase wasm.OpcodeI32RemU, wasm.OpcodeI64RemU:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\ty, x := state.pop(), state.pop()\n\t\tresult := builder.AllocateInstruction().AsURem(x, y, c.execCtxPtrValue).Insert(builder).Return()\n\t\tstate.push(result)\n\n\tcase wasm.OpcodeI32And, wasm.OpcodeI64And:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\ty, x := state.pop(), state.pop()\n\t\tand := builder.AllocateInstruction()\n\t\tand.AsBand(x, y)\n\t\tbuilder.InsertInstruction(and)\n\t\tvalue := and.Return()\n\t\tstate.push(value)\n\tcase wasm.OpcodeI32Or, wasm.OpcodeI64Or:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\ty, x := state.pop(), state.pop()\n\t\tor := builder.AllocateInstruction()\n\t\tor.AsBor(x, y)\n\t\tbuilder.InsertInstruction(or)\n\t\tvalue := or.Return()\n\t\tstate.push(value)\n\tcase wasm.OpcodeI32Xor, wasm.OpcodeI64Xor:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\ty, x := state.pop(), state.pop()\n\t\txor := builder.AllocateInstruction()\n\t\txor.AsBxor(x, y)\n\t\tbuilder.InsertInstruction(xor)\n\t\tvalue := xor.Return()\n\t\tstate.push(value)\n\tcase wasm.OpcodeI32Shl, wasm.OpcodeI64Shl:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\ty, x := state.pop(), state.pop()\n\t\tishl := builder.AllocateInstruction()\n\t\tishl.AsIshl(x, y)\n\t\tbuilder.InsertInstruction(ishl)\n\t\tvalue := ishl.Return()\n\t\tstate.push(value)\n\tcase wasm.OpcodeI32ShrU, wasm.OpcodeI64ShrU:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\ty, x := state.pop(), state.pop()\n\t\tishl := builder.AllocateInstruction()\n\t\tishl.AsUshr(x, y)\n\t\tbuilder.InsertInstruction(ishl)\n\t\tvalue := ishl.Return()\n\t\tstate.push(value)\n\tcase wasm.OpcodeI32ShrS, wasm.OpcodeI64ShrS:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\ty, x := state.pop(), state.pop()\n\t\tishl := builder.AllocateInstruction()\n\t\tishl.AsSshr(x, y)\n\t\tbuilder.InsertInstruction(ishl)\n\t\tvalue := ishl.Return()\n\t\tstate.push(value)\n\tcase wasm.OpcodeI32Rotl, wasm.OpcodeI64Rotl:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\ty, x := state.pop(), state.pop()\n\t\trotl := builder.AllocateInstruction()\n\t\trotl.AsRotl(x, y)\n\t\tbuilder.InsertInstruction(rotl)\n\t\tvalue := rotl.Return()\n\t\tstate.push(value)\n\tcase wasm.OpcodeI32Rotr, wasm.OpcodeI64Rotr:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\ty, x := state.pop(), state.pop()\n\t\trotr := builder.AllocateInstruction()\n\t\trotr.AsRotr(x, y)\n\t\tbuilder.InsertInstruction(rotr)\n\t\tvalue := rotr.Return()\n\t\tstate.push(value)\n\tcase wasm.OpcodeI32Clz, wasm.OpcodeI64Clz:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\tx := state.pop()\n\t\tclz := builder.AllocateInstruction()\n\t\tclz.AsClz(x)\n\t\tbuilder.InsertInstruction(clz)\n\t\tvalue := clz.Return()\n\t\tstate.push(value)\n\tcase wasm.OpcodeI32Ctz, wasm.OpcodeI64Ctz:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\tx := state.pop()\n\t\tctz := builder.AllocateInstruction()\n\t\tctz.AsCtz(x)\n\t\tbuilder.InsertInstruction(ctz)\n\t\tvalue := ctz.Return()\n\t\tstate.push(value)\n\tcase wasm.OpcodeI32Popcnt, wasm.OpcodeI64Popcnt:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\tx := state.pop()\n\t\tpopcnt := builder.AllocateInstruction()\n\t\tpopcnt.AsPopcnt(x)\n\t\tbuilder.InsertInstruction(popcnt)\n\t\tvalue := popcnt.Return()\n\t\tstate.push(value)\n\n\tcase wasm.OpcodeI32WrapI64:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\tx := state.pop()\n\t\twrap := builder.AllocateInstruction().AsIreduce(x, ssa.TypeI32).Insert(builder).Return()\n\t\tstate.push(wrap)\n\tcase wasm.OpcodeGlobalGet:\n\t\tindex := c.readI32u()\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\tv := c.getWasmGlobalValue(index, false)\n\t\tstate.push(v)\n\tcase wasm.OpcodeGlobalSet:\n\t\tindex := c.readI32u()\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\tv := state.pop()\n\t\tc.setWasmGlobalValue(index, v)\n\tcase wasm.OpcodeLocalGet:\n\t\tindex := c.readI32u()\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\tvariable := c.localVariable(index)\n\t\tstate.push(builder.MustFindValue(variable))\n\n\tcase wasm.OpcodeLocalSet:\n\t\tindex := c.readI32u()\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\tvariable := c.localVariable(index)\n\t\tnewValue := state.pop()\n\t\tbuilder.DefineVariableInCurrentBB(variable, newValue)\n\n\tcase wasm.OpcodeLocalTee:\n\t\tindex := c.readI32u()\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\tvariable := c.localVariable(index)\n\t\tnewValue := state.peek()\n\t\tbuilder.DefineVariableInCurrentBB(variable, newValue)\n\n\tcase wasm.OpcodeSelect, wasm.OpcodeTypedSelect:\n\t\tif op == wasm.OpcodeTypedSelect {\n\t\t\tstate.pc += 2 // ignores the type which is only needed during validation.\n\t\t}\n\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\n\t\tcond := state.pop()\n\t\tv2 := state.pop()\n\t\tv1 := state.pop()\n\n\t\tsl := builder.AllocateInstruction().\n\t\t\tAsSelect(cond, v1, v2).\n\t\t\tInsert(builder).\n\t\t\tReturn()\n\t\tstate.push(sl)\n\n\tcase wasm.OpcodeMemorySize:\n\t\tstate.pc++ // skips the memory index.\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\n\t\tvar memSizeInBytes ssa.Value\n\t\tif c.offset.LocalMemoryBegin < 0 {\n\t\t\tmemInstPtr := builder.AllocateInstruction().\n\t\t\t\tAsLoad(c.moduleCtxPtrValue, c.offset.ImportedMemoryBegin.U32(), ssa.TypeI64).\n\t\t\t\tInsert(builder).\n\t\t\t\tReturn()\n\n\t\t\tmemSizeInBytes = builder.AllocateInstruction().\n\t\t\t\tAsLoad(memInstPtr, memoryInstanceBufSizeOffset, ssa.TypeI32).\n\t\t\t\tInsert(builder).\n\t\t\t\tReturn()\n\t\t} else {\n\t\t\tmemSizeInBytes = builder.AllocateInstruction().\n\t\t\t\tAsLoad(c.moduleCtxPtrValue, c.offset.LocalMemoryLen().U32(), ssa.TypeI32).\n\t\t\t\tInsert(builder).\n\t\t\t\tReturn()\n\t\t}\n\n\t\tamount := builder.AllocateInstruction()\n\t\tamount.AsIconst32(uint32(wasm.MemoryPageSizeInBits))\n\t\tbuilder.InsertInstruction(amount)\n\t\tmemSize := builder.AllocateInstruction().\n\t\t\tAsUshr(memSizeInBytes, amount.Return()).\n\t\t\tInsert(builder).\n\t\t\tReturn()\n\t\tstate.push(memSize)\n\n\tcase wasm.OpcodeMemoryGrow:\n\t\tstate.pc++ // skips the memory index.\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\n\t\tc.storeCallerModuleContext()\n\n\t\tpages := state.pop()\n\t\tmemoryGrowPtr := builder.AllocateInstruction().\n\t\t\tAsLoad(c.execCtxPtrValue,\n\t\t\t\twazevoapi.ExecutionContextOffsetMemoryGrowTrampolineAddress.U32(),\n\t\t\t\tssa.TypeI64,\n\t\t\t).Insert(builder).Return()\n\n\t\targs := c.allocateVarLengthValues(2, c.execCtxPtrValue, pages)\n\t\tcallGrowRet := builder.\n\t\t\tAllocateInstruction().\n\t\t\tAsCallIndirect(memoryGrowPtr, &c.memoryGrowSig, args).\n\t\t\tInsert(builder).Return()\n\t\tstate.push(callGrowRet)\n\n\t\t// After the memory grow, reload the cached memory base and len.\n\t\tc.reloadMemoryBaseLen()\n\n\tcase wasm.OpcodeI32Store,\n\t\twasm.OpcodeI64Store,\n\t\twasm.OpcodeF32Store,\n\t\twasm.OpcodeF64Store,\n\t\twasm.OpcodeI32Store8,\n\t\twasm.OpcodeI32Store16,\n\t\twasm.OpcodeI64Store8,\n\t\twasm.OpcodeI64Store16,\n\t\twasm.OpcodeI64Store32:\n\n\t\t_, offset := c.readMemArg()\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\tvar opSize uint64\n\t\tvar opcode ssa.Opcode\n\t\tswitch op {\n\t\tcase wasm.OpcodeI32Store, wasm.OpcodeF32Store:\n\t\t\topcode = ssa.OpcodeStore\n\t\t\topSize = 4\n\t\tcase wasm.OpcodeI64Store, wasm.OpcodeF64Store:\n\t\t\topcode = ssa.OpcodeStore\n\t\t\topSize = 8\n\t\tcase wasm.OpcodeI32Store8, wasm.OpcodeI64Store8:\n\t\t\topcode = ssa.OpcodeIstore8\n\t\t\topSize = 1\n\t\tcase wasm.OpcodeI32Store16, wasm.OpcodeI64Store16:\n\t\t\topcode = ssa.OpcodeIstore16\n\t\t\topSize = 2\n\t\tcase wasm.OpcodeI64Store32:\n\t\t\topcode = ssa.OpcodeIstore32\n\t\t\topSize = 4\n\t\tdefault:\n\t\t\tpanic(\"BUG\")\n\t\t}\n\n\t\tvalue := state.pop()\n\t\tbaseAddr := state.pop()\n\t\taddr := c.memOpSetup(baseAddr, uint64(offset), opSize)\n\t\tbuilder.AllocateInstruction().\n\t\t\tAsStore(opcode, value, addr, offset).\n\t\t\tInsert(builder)\n\n\tcase wasm.OpcodeI32Load,\n\t\twasm.OpcodeI64Load,\n\t\twasm.OpcodeF32Load,\n\t\twasm.OpcodeF64Load,\n\t\twasm.OpcodeI32Load8S,\n\t\twasm.OpcodeI32Load8U,\n\t\twasm.OpcodeI32Load16S,\n\t\twasm.OpcodeI32Load16U,\n\t\twasm.OpcodeI64Load8S,\n\t\twasm.OpcodeI64Load8U,\n\t\twasm.OpcodeI64Load16S,\n\t\twasm.OpcodeI64Load16U,\n\t\twasm.OpcodeI64Load32S,\n\t\twasm.OpcodeI64Load32U:\n\t\t_, offset := c.readMemArg()\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\n\t\tvar opSize uint64\n\t\tswitch op {\n\t\tcase wasm.OpcodeI32Load, wasm.OpcodeF32Load:\n\t\t\topSize = 4\n\t\tcase wasm.OpcodeI64Load, wasm.OpcodeF64Load:\n\t\t\topSize = 8\n\t\tcase wasm.OpcodeI32Load8S, wasm.OpcodeI32Load8U:\n\t\t\topSize = 1\n\t\tcase wasm.OpcodeI32Load16S, wasm.OpcodeI32Load16U:\n\t\t\topSize = 2\n\t\tcase wasm.OpcodeI64Load8S, wasm.OpcodeI64Load8U:\n\t\t\topSize = 1\n\t\tcase wasm.OpcodeI64Load16S, wasm.OpcodeI64Load16U:\n\t\t\topSize = 2\n\t\tcase wasm.OpcodeI64Load32S, wasm.OpcodeI64Load32U:\n\t\t\topSize = 4\n\t\tdefault:\n\t\t\tpanic(\"BUG\")\n\t\t}\n\n\t\tbaseAddr := state.pop()\n\t\taddr := c.memOpSetup(baseAddr, uint64(offset), opSize)\n\t\tload := builder.AllocateInstruction()\n\t\tswitch op {\n\t\tcase wasm.OpcodeI32Load:\n\t\t\tload.AsLoad(addr, offset, ssa.TypeI32)\n\t\tcase wasm.OpcodeI64Load:\n\t\t\tload.AsLoad(addr, offset, ssa.TypeI64)\n\t\tcase wasm.OpcodeF32Load:\n\t\t\tload.AsLoad(addr, offset, ssa.TypeF32)\n\t\tcase wasm.OpcodeF64Load:\n\t\t\tload.AsLoad(addr, offset, ssa.TypeF64)\n\t\tcase wasm.OpcodeI32Load8S:\n\t\t\tload.AsExtLoad(ssa.OpcodeSload8, addr, offset, false)\n\t\tcase wasm.OpcodeI32Load8U:\n\t\t\tload.AsExtLoad(ssa.OpcodeUload8, addr, offset, false)\n\t\tcase wasm.OpcodeI32Load16S:\n\t\t\tload.AsExtLoad(ssa.OpcodeSload16, addr, offset, false)\n\t\tcase wasm.OpcodeI32Load16U:\n\t\t\tload.AsExtLoad(ssa.OpcodeUload16, addr, offset, false)\n\t\tcase wasm.OpcodeI64Load8S:\n\t\t\tload.AsExtLoad(ssa.OpcodeSload8, addr, offset, true)\n\t\tcase wasm.OpcodeI64Load8U:\n\t\t\tload.AsExtLoad(ssa.OpcodeUload8, addr, offset, true)\n\t\tcase wasm.OpcodeI64Load16S:\n\t\t\tload.AsExtLoad(ssa.OpcodeSload16, addr, offset, true)\n\t\tcase wasm.OpcodeI64Load16U:\n\t\t\tload.AsExtLoad(ssa.OpcodeUload16, addr, offset, true)\n\t\tcase wasm.OpcodeI64Load32S:\n\t\t\tload.AsExtLoad(ssa.OpcodeSload32, addr, offset, true)\n\t\tcase wasm.OpcodeI64Load32U:\n\t\t\tload.AsExtLoad(ssa.OpcodeUload32, addr, offset, true)\n\t\tdefault:\n\t\t\tpanic(\"BUG\")\n\t\t}\n\t\tbuilder.InsertInstruction(load)\n\t\tstate.push(load.Return())\n\tcase wasm.OpcodeBlock:\n\t\t// Note: we do not need to create a BB for this as that would always have only one predecessor\n\t\t// which is the current BB, and therefore it's always ok to merge them in any way.\n\n\t\tbt := c.readBlockType()\n\n\t\tif state.unreachable {\n\t\t\tstate.unreachableDepth++\n\t\t\tbreak\n\t\t}\n\n\t\tfollowingBlk := builder.AllocateBasicBlock()\n\t\tc.addBlockParamsFromWasmTypes(bt.Results, followingBlk)\n\n\t\tstate.ctrlPush(controlFrame{\n\t\t\tkind:                         controlFrameKindBlock,\n\t\t\toriginalStackLenWithoutParam: len(state.values) - len(bt.Params),\n\t\t\tfollowingBlock:               followingBlk,\n\t\t\tblockType:                    bt,\n\t\t})\n\tcase wasm.OpcodeLoop:\n\t\tbt := c.readBlockType()\n\n\t\tif state.unreachable {\n\t\t\tstate.unreachableDepth++\n\t\t\tbreak\n\t\t}\n\n\t\tloopHeader, afterLoopBlock := builder.AllocateBasicBlock(), builder.AllocateBasicBlock()\n\t\tc.addBlockParamsFromWasmTypes(bt.Params, loopHeader)\n\t\tc.addBlockParamsFromWasmTypes(bt.Results, afterLoopBlock)\n\n\t\toriginalLen := len(state.values) - len(bt.Params)\n\t\tstate.ctrlPush(controlFrame{\n\t\t\toriginalStackLenWithoutParam: originalLen,\n\t\t\tkind:                         controlFrameKindLoop,\n\t\t\tblk:                          loopHeader,\n\t\t\tfollowingBlock:               afterLoopBlock,\n\t\t\tblockType:                    bt,\n\t\t})\n\n\t\targs := c.allocateVarLengthValues(len(bt.Params), state.values[originalLen:]...)\n\n\t\t// Insert the jump to the header of loop.\n\t\tbr := builder.AllocateInstruction()\n\t\tbr.AsJump(args, loopHeader)\n\t\tbuilder.InsertInstruction(br)\n\n\t\tc.switchTo(originalLen, loopHeader)\n\n\t\tif c.ensureTermination {\n\t\t\tcheckModuleExitCodePtr := builder.AllocateInstruction().\n\t\t\t\tAsLoad(c.execCtxPtrValue,\n\t\t\t\t\twazevoapi.ExecutionContextOffsetCheckModuleExitCodeTrampolineAddress.U32(),\n\t\t\t\t\tssa.TypeI64,\n\t\t\t\t).Insert(builder).Return()\n\n\t\t\targs := c.allocateVarLengthValues(1, c.execCtxPtrValue)\n\t\t\tbuilder.AllocateInstruction().\n\t\t\t\tAsCallIndirect(checkModuleExitCodePtr, &c.checkModuleExitCodeSig, args).\n\t\t\t\tInsert(builder)\n\t\t}\n\tcase wasm.OpcodeIf:\n\t\tbt := c.readBlockType()\n\n\t\tif state.unreachable {\n\t\t\tstate.unreachableDepth++\n\t\t\tbreak\n\t\t}\n\n\t\tv := state.pop()\n\t\tthenBlk, elseBlk, followingBlk := builder.AllocateBasicBlock(), builder.AllocateBasicBlock(), builder.AllocateBasicBlock()\n\n\t\t// We do not make the Wasm-level block parameters as SSA-level block params for if-else blocks\n\t\t// since they won't be PHI and the definition is unique.\n\n\t\t// On the other hand, the following block after if-else-end will likely have\n\t\t// multiple definitions (one in Then and another in Else blocks).\n\t\tc.addBlockParamsFromWasmTypes(bt.Results, followingBlk)\n\n\t\targs := c.allocateVarLengthValues(len(bt.Params), state.values[len(state.values)-len(bt.Params):]...)\n\n\t\t// Insert the conditional jump to the Else block.\n\t\tbrz := builder.AllocateInstruction()\n\t\tbrz.AsBrz(v, ssa.ValuesNil, elseBlk)\n\t\tbuilder.InsertInstruction(brz)\n\n\t\t// Then, insert the jump to the Then block.\n\t\tbr := builder.AllocateInstruction()\n\t\tbr.AsJump(ssa.ValuesNil, thenBlk)\n\t\tbuilder.InsertInstruction(br)\n\n\t\tstate.ctrlPush(controlFrame{\n\t\t\tkind:                         controlFrameKindIfWithoutElse,\n\t\t\toriginalStackLenWithoutParam: len(state.values) - len(bt.Params),\n\t\t\tblk:                          elseBlk,\n\t\t\tfollowingBlock:               followingBlk,\n\t\t\tblockType:                    bt,\n\t\t\tclonedArgs:                   args,\n\t\t})\n\n\t\tbuilder.SetCurrentBlock(thenBlk)\n\n\t\t// Then and Else (if exists) have only one predecessor.\n\t\tbuilder.Seal(thenBlk)\n\t\tbuilder.Seal(elseBlk)\n\tcase wasm.OpcodeElse:\n\t\tifctrl := state.ctrlPeekAt(0)\n\t\tif unreachable := state.unreachable; unreachable && state.unreachableDepth > 0 {\n\t\t\t// If it is currently in unreachable and is a nested if,\n\t\t\t// we just remove the entire else block.\n\t\t\tbreak\n\t\t}\n\n\t\tifctrl.kind = controlFrameKindIfWithElse\n\t\tif !state.unreachable {\n\t\t\t// If this Then block is currently reachable, we have to insert the branching to the following BB.\n\t\t\tfollowingBlk := ifctrl.followingBlock // == the BB after if-then-else.\n\t\t\targs := c.nPeekDup(len(ifctrl.blockType.Results))\n\t\t\tc.insertJumpToBlock(args, followingBlk)\n\t\t} else {\n\t\t\tstate.unreachable = false\n\t\t}\n\n\t\t// Reset the stack so that we can correctly handle the else block.\n\t\tstate.values = state.values[:ifctrl.originalStackLenWithoutParam]\n\t\telseBlk := ifctrl.blk\n\t\tfor _, arg := range ifctrl.clonedArgs.View() {\n\t\t\tstate.push(arg)\n\t\t}\n\n\t\tbuilder.SetCurrentBlock(elseBlk)\n\n\tcase wasm.OpcodeEnd:\n\t\tif state.unreachableDepth > 0 {\n\t\t\tstate.unreachableDepth--\n\t\t\tbreak\n\t\t}\n\n\t\tctrl := state.ctrlPop()\n\t\tfollowingBlk := ctrl.followingBlock\n\n\t\tunreachable := state.unreachable\n\t\tif !unreachable {\n\t\t\t// Top n-th args will be used as a result of the current control frame.\n\t\t\targs := c.nPeekDup(len(ctrl.blockType.Results))\n\n\t\t\t// Insert the unconditional branch to the target.\n\t\t\tc.insertJumpToBlock(args, followingBlk)\n\t\t} else { // recover from the unreachable state.\n\t\t\tstate.unreachable = false\n\t\t}\n\n\t\tswitch ctrl.kind {\n\t\tcase controlFrameKindFunction:\n\t\t\tbreak // This is the very end of function.\n\t\tcase controlFrameKindLoop:\n\t\t\t// Loop header block can be reached from any br/br_table contained in the loop,\n\t\t\t// so now that we've reached End of it, we can seal it.\n\t\t\tbuilder.Seal(ctrl.blk)\n\t\tcase controlFrameKindIfWithoutElse:\n\t\t\t// If this is the end of Then block, we have to emit the empty Else block.\n\t\t\telseBlk := ctrl.blk\n\t\t\tbuilder.SetCurrentBlock(elseBlk)\n\t\t\tc.insertJumpToBlock(ctrl.clonedArgs, followingBlk)\n\t\t}\n\n\t\tbuilder.Seal(followingBlk)\n\n\t\t// Ready to start translating the following block.\n\t\tc.switchTo(ctrl.originalStackLenWithoutParam, followingBlk)\n\n\tcase wasm.OpcodeBr:\n\t\tlabelIndex := c.readI32u()\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\n\t\ttargetBlk, argNum := state.brTargetArgNumFor(labelIndex)\n\t\targs := c.nPeekDup(argNum)\n\t\tc.insertJumpToBlock(args, targetBlk)\n\n\t\tstate.unreachable = true\n\n\tcase wasm.OpcodeBrIf:\n\t\tlabelIndex := c.readI32u()\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\n\t\tv := state.pop()\n\n\t\ttargetBlk, argNum := state.brTargetArgNumFor(labelIndex)\n\t\targs := c.nPeekDup(argNum)\n\t\tvar sealTargetBlk bool\n\t\tif c.needListener && targetBlk.ReturnBlock() { // In this case, we have to call the listener before returning.\n\t\t\t// Save the currently active block.\n\t\t\tcurrent := builder.CurrentBlock()\n\n\t\t\t// Allocate the trampoline block to the return where we call the listener.\n\t\t\ttargetBlk = builder.AllocateBasicBlock()\n\t\t\tbuilder.SetCurrentBlock(targetBlk)\n\t\t\tsealTargetBlk = true\n\n\t\t\tc.callListenerAfter()\n\n\t\t\tinstr := builder.AllocateInstruction()\n\t\t\tinstr.AsReturn(args)\n\t\t\tbuilder.InsertInstruction(instr)\n\n\t\t\targs = ssa.ValuesNil\n\n\t\t\t// Revert the current block.\n\t\t\tbuilder.SetCurrentBlock(current)\n\t\t}\n\n\t\t// Insert the conditional jump to the target block.\n\t\tbrnz := builder.AllocateInstruction()\n\t\tbrnz.AsBrnz(v, args, targetBlk)\n\t\tbuilder.InsertInstruction(brnz)\n\n\t\tif sealTargetBlk {\n\t\t\tbuilder.Seal(targetBlk)\n\t\t}\n\n\t\t// Insert the unconditional jump to the Else block which corresponds to after br_if.\n\t\telseBlk := builder.AllocateBasicBlock()\n\t\tc.insertJumpToBlock(ssa.ValuesNil, elseBlk)\n\n\t\t// Now start translating the instructions after br_if.\n\t\tbuilder.Seal(elseBlk) // Else of br_if has the current block as the only one successor.\n\t\tbuilder.SetCurrentBlock(elseBlk)\n\n\tcase wasm.OpcodeBrTable:\n\t\tlabels := state.tmpForBrTable[:0]\n\t\tlabelCount := c.readI32u()\n\t\tfor i := 0; i < int(labelCount); i++ {\n\t\t\tlabels = append(labels, c.readI32u())\n\t\t}\n\t\tlabels = append(labels, c.readI32u()) // default label.\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\n\t\tindex := state.pop()\n\t\tif labelCount == 0 { // If this br_table is empty, we can just emit the unconditional jump.\n\t\t\ttargetBlk, argNum := state.brTargetArgNumFor(labels[0])\n\t\t\targs := c.nPeekDup(argNum)\n\t\t\tc.insertJumpToBlock(args, targetBlk)\n\t\t} else {\n\t\t\tc.lowerBrTable(labels, index)\n\t\t}\n\t\tstate.tmpForBrTable = labels // reuse the temporary slice for next use.\n\t\tstate.unreachable = true\n\n\tcase wasm.OpcodeNop:\n\tcase wasm.OpcodeReturn:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\tif c.needListener {\n\t\t\tc.callListenerAfter()\n\t\t}\n\n\t\tc.lowerReturn(builder)\n\t\tstate.unreachable = true\n\n\tcase wasm.OpcodeUnreachable:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\texit := builder.AllocateInstruction()\n\t\texit.AsExitWithCode(c.execCtxPtrValue, wazevoapi.ExitCodeUnreachable)\n\t\tbuilder.InsertInstruction(exit)\n\t\tstate.unreachable = true\n\n\tcase wasm.OpcodeCallIndirect:\n\t\ttypeIndex := c.readI32u()\n\t\ttableIndex := c.readI32u()\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\tc.lowerCallIndirect(typeIndex, tableIndex)\n\n\tcase wasm.OpcodeCall:\n\t\tfnIndex := c.readI32u()\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\tc.lowerCall(fnIndex)\n\n\tcase wasm.OpcodeDrop:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\t_ = state.pop()\n\tcase wasm.OpcodeF64ConvertI32S, wasm.OpcodeF64ConvertI64S, wasm.OpcodeF64ConvertI32U, wasm.OpcodeF64ConvertI64U:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\tresult := builder.AllocateInstruction().AsFcvtFromInt(\n\t\t\tstate.pop(),\n\t\t\top == wasm.OpcodeF64ConvertI32S || op == wasm.OpcodeF64ConvertI64S,\n\t\t\ttrue,\n\t\t).Insert(builder).Return()\n\t\tstate.push(result)\n\tcase wasm.OpcodeF32ConvertI32S, wasm.OpcodeF32ConvertI64S, wasm.OpcodeF32ConvertI32U, wasm.OpcodeF32ConvertI64U:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\tresult := builder.AllocateInstruction().AsFcvtFromInt(\n\t\t\tstate.pop(),\n\t\t\top == wasm.OpcodeF32ConvertI32S || op == wasm.OpcodeF32ConvertI64S,\n\t\t\tfalse,\n\t\t).Insert(builder).Return()\n\t\tstate.push(result)\n\tcase wasm.OpcodeF32DemoteF64:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\tcvt := builder.AllocateInstruction()\n\t\tcvt.AsFdemote(state.pop())\n\t\tbuilder.InsertInstruction(cvt)\n\t\tstate.push(cvt.Return())\n\tcase wasm.OpcodeF64PromoteF32:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\tcvt := builder.AllocateInstruction()\n\t\tcvt.AsFpromote(state.pop())\n\t\tbuilder.InsertInstruction(cvt)\n\t\tstate.push(cvt.Return())\n\n\tcase wasm.OpcodeVecPrefix:\n\t\tstate.pc++\n\t\tvecOp := c.wasmFunctionBody[state.pc]\n\t\tswitch vecOp {\n\t\tcase wasm.OpcodeVecV128Const:\n\t\t\tstate.pc++\n\t\t\tlo := binary.LittleEndian.Uint64(c.wasmFunctionBody[state.pc:])\n\t\t\tstate.pc += 8\n\t\t\thi := binary.LittleEndian.Uint64(c.wasmFunctionBody[state.pc:])\n\t\t\tstate.pc += 7\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tret := builder.AllocateInstruction().AsVconst(lo, hi).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecV128Load:\n\t\t\t_, offset := c.readMemArg()\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tbaseAddr := state.pop()\n\t\t\taddr := c.memOpSetup(baseAddr, uint64(offset), 16)\n\t\t\tload := builder.AllocateInstruction()\n\t\t\tload.AsLoad(addr, offset, ssa.TypeV128)\n\t\t\tbuilder.InsertInstruction(load)\n\t\t\tstate.push(load.Return())\n\t\tcase wasm.OpcodeVecV128Load8Lane, wasm.OpcodeVecV128Load16Lane, wasm.OpcodeVecV128Load32Lane:\n\t\t\t_, offset := c.readMemArg()\n\t\t\tstate.pc++\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar lane ssa.VecLane\n\t\t\tvar loadOp ssa.Opcode\n\t\t\tvar opSize uint64\n\t\t\tswitch vecOp {\n\t\t\tcase wasm.OpcodeVecV128Load8Lane:\n\t\t\t\tloadOp, lane, opSize = ssa.OpcodeUload8, ssa.VecLaneI8x16, 1\n\t\t\tcase wasm.OpcodeVecV128Load16Lane:\n\t\t\t\tloadOp, lane, opSize = ssa.OpcodeUload16, ssa.VecLaneI16x8, 2\n\t\t\tcase wasm.OpcodeVecV128Load32Lane:\n\t\t\t\tloadOp, lane, opSize = ssa.OpcodeUload32, ssa.VecLaneI32x4, 4\n\t\t\t}\n\t\t\tlaneIndex := c.wasmFunctionBody[state.pc]\n\t\t\tvector := state.pop()\n\t\t\tbaseAddr := state.pop()\n\t\t\taddr := c.memOpSetup(baseAddr, uint64(offset), opSize)\n\t\t\tload := builder.AllocateInstruction().\n\t\t\t\tAsExtLoad(loadOp, addr, offset, false).\n\t\t\t\tInsert(builder).Return()\n\t\t\tret := builder.AllocateInstruction().\n\t\t\t\tAsInsertlane(vector, load, laneIndex, lane).\n\t\t\t\tInsert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecV128Load64Lane:\n\t\t\t_, offset := c.readMemArg()\n\t\t\tstate.pc++\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tlaneIndex := c.wasmFunctionBody[state.pc]\n\t\t\tvector := state.pop()\n\t\t\tbaseAddr := state.pop()\n\t\t\taddr := c.memOpSetup(baseAddr, uint64(offset), 8)\n\t\t\tload := builder.AllocateInstruction().\n\t\t\t\tAsLoad(addr, offset, ssa.TypeI64).\n\t\t\t\tInsert(builder).Return()\n\t\t\tret := builder.AllocateInstruction().\n\t\t\t\tAsInsertlane(vector, load, laneIndex, ssa.VecLaneI64x2).\n\t\t\t\tInsert(builder).Return()\n\t\t\tstate.push(ret)\n\n\t\tcase wasm.OpcodeVecV128Load32zero, wasm.OpcodeVecV128Load64zero:\n\t\t\t_, offset := c.readMemArg()\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tvar scalarType ssa.Type\n\t\t\tswitch vecOp {\n\t\t\tcase wasm.OpcodeVecV128Load32zero:\n\t\t\t\tscalarType = ssa.TypeF32\n\t\t\tcase wasm.OpcodeVecV128Load64zero:\n\t\t\t\tscalarType = ssa.TypeF64\n\t\t\t}\n\n\t\t\tbaseAddr := state.pop()\n\t\t\taddr := c.memOpSetup(baseAddr, uint64(offset), uint64(scalarType.Size()))\n\n\t\t\tret := builder.AllocateInstruction().\n\t\t\t\tAsVZeroExtLoad(addr, offset, scalarType).\n\t\t\t\tInsert(builder).Return()\n\t\t\tstate.push(ret)\n\n\t\tcase wasm.OpcodeVecV128Load8x8u, wasm.OpcodeVecV128Load8x8s,\n\t\t\twasm.OpcodeVecV128Load16x4u, wasm.OpcodeVecV128Load16x4s,\n\t\t\twasm.OpcodeVecV128Load32x2u, wasm.OpcodeVecV128Load32x2s:\n\t\t\t_, offset := c.readMemArg()\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar lane ssa.VecLane\n\t\t\tvar signed bool\n\t\t\tswitch vecOp {\n\t\t\tcase wasm.OpcodeVecV128Load8x8s:\n\t\t\t\tsigned = true\n\t\t\t\tfallthrough\n\t\t\tcase wasm.OpcodeVecV128Load8x8u:\n\t\t\t\tlane = ssa.VecLaneI8x16\n\t\t\tcase wasm.OpcodeVecV128Load16x4s:\n\t\t\t\tsigned = true\n\t\t\t\tfallthrough\n\t\t\tcase wasm.OpcodeVecV128Load16x4u:\n\t\t\t\tlane = ssa.VecLaneI16x8\n\t\t\tcase wasm.OpcodeVecV128Load32x2s:\n\t\t\t\tsigned = true\n\t\t\t\tfallthrough\n\t\t\tcase wasm.OpcodeVecV128Load32x2u:\n\t\t\t\tlane = ssa.VecLaneI32x4\n\t\t\t}\n\t\t\tbaseAddr := state.pop()\n\t\t\taddr := c.memOpSetup(baseAddr, uint64(offset), 8)\n\t\t\tload := builder.AllocateInstruction().\n\t\t\t\tAsLoad(addr, offset, ssa.TypeF64).\n\t\t\t\tInsert(builder).Return()\n\t\t\tret := builder.AllocateInstruction().\n\t\t\t\tAsWiden(load, lane, signed, true).\n\t\t\t\tInsert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecV128Load8Splat, wasm.OpcodeVecV128Load16Splat,\n\t\t\twasm.OpcodeVecV128Load32Splat, wasm.OpcodeVecV128Load64Splat:\n\t\t\t_, offset := c.readMemArg()\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar lane ssa.VecLane\n\t\t\tvar opSize uint64\n\t\t\tswitch vecOp {\n\t\t\tcase wasm.OpcodeVecV128Load8Splat:\n\t\t\t\tlane, opSize = ssa.VecLaneI8x16, 1\n\t\t\tcase wasm.OpcodeVecV128Load16Splat:\n\t\t\t\tlane, opSize = ssa.VecLaneI16x8, 2\n\t\t\tcase wasm.OpcodeVecV128Load32Splat:\n\t\t\t\tlane, opSize = ssa.VecLaneI32x4, 4\n\t\t\tcase wasm.OpcodeVecV128Load64Splat:\n\t\t\t\tlane, opSize = ssa.VecLaneI64x2, 8\n\t\t\t}\n\t\t\tbaseAddr := state.pop()\n\t\t\taddr := c.memOpSetup(baseAddr, uint64(offset), opSize)\n\t\t\tret := builder.AllocateInstruction().\n\t\t\t\tAsLoadSplat(addr, offset, lane).\n\t\t\t\tInsert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecV128Store:\n\t\t\t_, offset := c.readMemArg()\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvalue := state.pop()\n\t\t\tbaseAddr := state.pop()\n\t\t\taddr := c.memOpSetup(baseAddr, uint64(offset), 16)\n\t\t\tbuilder.AllocateInstruction().\n\t\t\t\tAsStore(ssa.OpcodeStore, value, addr, offset).\n\t\t\t\tInsert(builder)\n\t\tcase wasm.OpcodeVecV128Store8Lane, wasm.OpcodeVecV128Store16Lane,\n\t\t\twasm.OpcodeVecV128Store32Lane, wasm.OpcodeVecV128Store64Lane:\n\t\t\t_, offset := c.readMemArg()\n\t\t\tstate.pc++\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tlaneIndex := c.wasmFunctionBody[state.pc]\n\t\t\tvar storeOp ssa.Opcode\n\t\t\tvar lane ssa.VecLane\n\t\t\tvar opSize uint64\n\t\t\tswitch vecOp {\n\t\t\tcase wasm.OpcodeVecV128Store8Lane:\n\t\t\t\tstoreOp, lane, opSize = ssa.OpcodeIstore8, ssa.VecLaneI8x16, 1\n\t\t\tcase wasm.OpcodeVecV128Store16Lane:\n\t\t\t\tstoreOp, lane, opSize = ssa.OpcodeIstore16, ssa.VecLaneI16x8, 2\n\t\t\tcase wasm.OpcodeVecV128Store32Lane:\n\t\t\t\tstoreOp, lane, opSize = ssa.OpcodeIstore32, ssa.VecLaneI32x4, 4\n\t\t\tcase wasm.OpcodeVecV128Store64Lane:\n\t\t\t\tstoreOp, lane, opSize = ssa.OpcodeStore, ssa.VecLaneI64x2, 8\n\t\t\t}\n\t\t\tvector := state.pop()\n\t\t\tbaseAddr := state.pop()\n\t\t\taddr := c.memOpSetup(baseAddr, uint64(offset), opSize)\n\t\t\tvalue := builder.AllocateInstruction().\n\t\t\t\tAsExtractlane(vector, laneIndex, lane, false).\n\t\t\t\tInsert(builder).Return()\n\t\t\tbuilder.AllocateInstruction().\n\t\t\t\tAsStore(storeOp, value, addr, offset).\n\t\t\t\tInsert(builder)\n\t\tcase wasm.OpcodeVecV128Not:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().AsVbnot(v1).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecV128And:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tv2 := state.pop()\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().AsVband(v1, v2).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecV128AndNot:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tv2 := state.pop()\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().AsVbandnot(v1, v2).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecV128Or:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tv2 := state.pop()\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().AsVbor(v1, v2).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecV128Xor:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tv2 := state.pop()\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().AsVbxor(v1, v2).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecV128Bitselect:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tc := state.pop()\n\t\t\tv2 := state.pop()\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().AsVbitselect(c, v1, v2).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecV128AnyTrue:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().AsVanyTrue(v1).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecI8x16AllTrue, wasm.OpcodeVecI16x8AllTrue, wasm.OpcodeVecI32x4AllTrue, wasm.OpcodeVecI64x2AllTrue:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar lane ssa.VecLane\n\t\t\tswitch vecOp {\n\t\t\tcase wasm.OpcodeVecI8x16AllTrue:\n\t\t\t\tlane = ssa.VecLaneI8x16\n\t\t\tcase wasm.OpcodeVecI16x8AllTrue:\n\t\t\t\tlane = ssa.VecLaneI16x8\n\t\t\tcase wasm.OpcodeVecI32x4AllTrue:\n\t\t\t\tlane = ssa.VecLaneI32x4\n\t\t\tcase wasm.OpcodeVecI64x2AllTrue:\n\t\t\t\tlane = ssa.VecLaneI64x2\n\t\t\t}\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().AsVallTrue(v1, lane).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecI8x16BitMask, wasm.OpcodeVecI16x8BitMask, wasm.OpcodeVecI32x4BitMask, wasm.OpcodeVecI64x2BitMask:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar lane ssa.VecLane\n\t\t\tswitch vecOp {\n\t\t\tcase wasm.OpcodeVecI8x16BitMask:\n\t\t\t\tlane = ssa.VecLaneI8x16\n\t\t\tcase wasm.OpcodeVecI16x8BitMask:\n\t\t\t\tlane = ssa.VecLaneI16x8\n\t\t\tcase wasm.OpcodeVecI32x4BitMask:\n\t\t\t\tlane = ssa.VecLaneI32x4\n\t\t\tcase wasm.OpcodeVecI64x2BitMask:\n\t\t\t\tlane = ssa.VecLaneI64x2\n\t\t\t}\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().AsVhighBits(v1, lane).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecI8x16Abs, wasm.OpcodeVecI16x8Abs, wasm.OpcodeVecI32x4Abs, wasm.OpcodeVecI64x2Abs:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar lane ssa.VecLane\n\t\t\tswitch vecOp {\n\t\t\tcase wasm.OpcodeVecI8x16Abs:\n\t\t\t\tlane = ssa.VecLaneI8x16\n\t\t\tcase wasm.OpcodeVecI16x8Abs:\n\t\t\t\tlane = ssa.VecLaneI16x8\n\t\t\tcase wasm.OpcodeVecI32x4Abs:\n\t\t\t\tlane = ssa.VecLaneI32x4\n\t\t\tcase wasm.OpcodeVecI64x2Abs:\n\t\t\t\tlane = ssa.VecLaneI64x2\n\t\t\t}\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().AsVIabs(v1, lane).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecI8x16Neg, wasm.OpcodeVecI16x8Neg, wasm.OpcodeVecI32x4Neg, wasm.OpcodeVecI64x2Neg:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar lane ssa.VecLane\n\t\t\tswitch vecOp {\n\t\t\tcase wasm.OpcodeVecI8x16Neg:\n\t\t\t\tlane = ssa.VecLaneI8x16\n\t\t\tcase wasm.OpcodeVecI16x8Neg:\n\t\t\t\tlane = ssa.VecLaneI16x8\n\t\t\tcase wasm.OpcodeVecI32x4Neg:\n\t\t\t\tlane = ssa.VecLaneI32x4\n\t\t\tcase wasm.OpcodeVecI64x2Neg:\n\t\t\t\tlane = ssa.VecLaneI64x2\n\t\t\t}\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().AsVIneg(v1, lane).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecI8x16Popcnt:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tlane := ssa.VecLaneI8x16\n\t\t\tv1 := state.pop()\n\n\t\t\tret := builder.AllocateInstruction().AsVIpopcnt(v1, lane).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecI8x16Add, wasm.OpcodeVecI16x8Add, wasm.OpcodeVecI32x4Add, wasm.OpcodeVecI64x2Add:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar lane ssa.VecLane\n\t\t\tswitch vecOp {\n\t\t\tcase wasm.OpcodeVecI8x16Add:\n\t\t\t\tlane = ssa.VecLaneI8x16\n\t\t\tcase wasm.OpcodeVecI16x8Add:\n\t\t\t\tlane = ssa.VecLaneI16x8\n\t\t\tcase wasm.OpcodeVecI32x4Add:\n\t\t\t\tlane = ssa.VecLaneI32x4\n\t\t\tcase wasm.OpcodeVecI64x2Add:\n\t\t\t\tlane = ssa.VecLaneI64x2\n\t\t\t}\n\t\t\tv2 := state.pop()\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().AsVIadd(v1, v2, lane).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecI8x16AddSatS, wasm.OpcodeVecI16x8AddSatS:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar lane ssa.VecLane\n\t\t\tswitch vecOp {\n\t\t\tcase wasm.OpcodeVecI8x16AddSatS:\n\t\t\t\tlane = ssa.VecLaneI8x16\n\t\t\tcase wasm.OpcodeVecI16x8AddSatS:\n\t\t\t\tlane = ssa.VecLaneI16x8\n\t\t\t}\n\t\t\tv2 := state.pop()\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().AsVSaddSat(v1, v2, lane).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecI8x16AddSatU, wasm.OpcodeVecI16x8AddSatU:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar lane ssa.VecLane\n\t\t\tswitch vecOp {\n\t\t\tcase wasm.OpcodeVecI8x16AddSatU:\n\t\t\t\tlane = ssa.VecLaneI8x16\n\t\t\tcase wasm.OpcodeVecI16x8AddSatU:\n\t\t\t\tlane = ssa.VecLaneI16x8\n\t\t\t}\n\t\t\tv2 := state.pop()\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().AsVUaddSat(v1, v2, lane).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecI8x16SubSatS, wasm.OpcodeVecI16x8SubSatS:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar lane ssa.VecLane\n\t\t\tswitch vecOp {\n\t\t\tcase wasm.OpcodeVecI8x16SubSatS:\n\t\t\t\tlane = ssa.VecLaneI8x16\n\t\t\tcase wasm.OpcodeVecI16x8SubSatS:\n\t\t\t\tlane = ssa.VecLaneI16x8\n\t\t\t}\n\t\t\tv2 := state.pop()\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().AsVSsubSat(v1, v2, lane).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecI8x16SubSatU, wasm.OpcodeVecI16x8SubSatU:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar lane ssa.VecLane\n\t\t\tswitch vecOp {\n\t\t\tcase wasm.OpcodeVecI8x16SubSatU:\n\t\t\t\tlane = ssa.VecLaneI8x16\n\t\t\tcase wasm.OpcodeVecI16x8SubSatU:\n\t\t\t\tlane = ssa.VecLaneI16x8\n\t\t\t}\n\t\t\tv2 := state.pop()\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().AsVUsubSat(v1, v2, lane).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\n\t\tcase wasm.OpcodeVecI8x16Sub, wasm.OpcodeVecI16x8Sub, wasm.OpcodeVecI32x4Sub, wasm.OpcodeVecI64x2Sub:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar lane ssa.VecLane\n\t\t\tswitch vecOp {\n\t\t\tcase wasm.OpcodeVecI8x16Sub:\n\t\t\t\tlane = ssa.VecLaneI8x16\n\t\t\tcase wasm.OpcodeVecI16x8Sub:\n\t\t\t\tlane = ssa.VecLaneI16x8\n\t\t\tcase wasm.OpcodeVecI32x4Sub:\n\t\t\t\tlane = ssa.VecLaneI32x4\n\t\t\tcase wasm.OpcodeVecI64x2Sub:\n\t\t\t\tlane = ssa.VecLaneI64x2\n\t\t\t}\n\t\t\tv2 := state.pop()\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().AsVIsub(v1, v2, lane).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecI8x16MinS, wasm.OpcodeVecI16x8MinS, wasm.OpcodeVecI32x4MinS:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar lane ssa.VecLane\n\t\t\tswitch vecOp {\n\t\t\tcase wasm.OpcodeVecI8x16MinS:\n\t\t\t\tlane = ssa.VecLaneI8x16\n\t\t\tcase wasm.OpcodeVecI16x8MinS:\n\t\t\t\tlane = ssa.VecLaneI16x8\n\t\t\tcase wasm.OpcodeVecI32x4MinS:\n\t\t\t\tlane = ssa.VecLaneI32x4\n\t\t\t}\n\t\t\tv2 := state.pop()\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().AsVImin(v1, v2, lane).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecI8x16MinU, wasm.OpcodeVecI16x8MinU, wasm.OpcodeVecI32x4MinU:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar lane ssa.VecLane\n\t\t\tswitch vecOp {\n\t\t\tcase wasm.OpcodeVecI8x16MinU:\n\t\t\t\tlane = ssa.VecLaneI8x16\n\t\t\tcase wasm.OpcodeVecI16x8MinU:\n\t\t\t\tlane = ssa.VecLaneI16x8\n\t\t\tcase wasm.OpcodeVecI32x4MinU:\n\t\t\t\tlane = ssa.VecLaneI32x4\n\t\t\t}\n\t\t\tv2 := state.pop()\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().AsVUmin(v1, v2, lane).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecI8x16MaxS, wasm.OpcodeVecI16x8MaxS, wasm.OpcodeVecI32x4MaxS:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar lane ssa.VecLane\n\t\t\tswitch vecOp {\n\t\t\tcase wasm.OpcodeVecI8x16MaxS:\n\t\t\t\tlane = ssa.VecLaneI8x16\n\t\t\tcase wasm.OpcodeVecI16x8MaxS:\n\t\t\t\tlane = ssa.VecLaneI16x8\n\t\t\tcase wasm.OpcodeVecI32x4MaxS:\n\t\t\t\tlane = ssa.VecLaneI32x4\n\t\t\t}\n\t\t\tv2 := state.pop()\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().AsVImax(v1, v2, lane).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecI8x16MaxU, wasm.OpcodeVecI16x8MaxU, wasm.OpcodeVecI32x4MaxU:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar lane ssa.VecLane\n\t\t\tswitch vecOp {\n\t\t\tcase wasm.OpcodeVecI8x16MaxU:\n\t\t\t\tlane = ssa.VecLaneI8x16\n\t\t\tcase wasm.OpcodeVecI16x8MaxU:\n\t\t\t\tlane = ssa.VecLaneI16x8\n\t\t\tcase wasm.OpcodeVecI32x4MaxU:\n\t\t\t\tlane = ssa.VecLaneI32x4\n\t\t\t}\n\t\t\tv2 := state.pop()\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().AsVUmax(v1, v2, lane).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecI8x16AvgrU, wasm.OpcodeVecI16x8AvgrU:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar lane ssa.VecLane\n\t\t\tswitch vecOp {\n\t\t\tcase wasm.OpcodeVecI8x16AvgrU:\n\t\t\t\tlane = ssa.VecLaneI8x16\n\t\t\tcase wasm.OpcodeVecI16x8AvgrU:\n\t\t\t\tlane = ssa.VecLaneI16x8\n\t\t\t}\n\t\t\tv2 := state.pop()\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().AsVAvgRound(v1, v2, lane).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecI16x8Mul, wasm.OpcodeVecI32x4Mul, wasm.OpcodeVecI64x2Mul:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar lane ssa.VecLane\n\t\t\tswitch vecOp {\n\t\t\tcase wasm.OpcodeVecI16x8Mul:\n\t\t\t\tlane = ssa.VecLaneI16x8\n\t\t\tcase wasm.OpcodeVecI32x4Mul:\n\t\t\t\tlane = ssa.VecLaneI32x4\n\t\t\tcase wasm.OpcodeVecI64x2Mul:\n\t\t\t\tlane = ssa.VecLaneI64x2\n\t\t\t}\n\t\t\tv2 := state.pop()\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().AsVImul(v1, v2, lane).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecI16x8Q15mulrSatS:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tv2 := state.pop()\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().AsSqmulRoundSat(v1, v2, ssa.VecLaneI16x8).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecI8x16Eq, wasm.OpcodeVecI16x8Eq, wasm.OpcodeVecI32x4Eq, wasm.OpcodeVecI64x2Eq:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar lane ssa.VecLane\n\t\t\tswitch vecOp {\n\t\t\tcase wasm.OpcodeVecI8x16Eq:\n\t\t\t\tlane = ssa.VecLaneI8x16\n\t\t\tcase wasm.OpcodeVecI16x8Eq:\n\t\t\t\tlane = ssa.VecLaneI16x8\n\t\t\tcase wasm.OpcodeVecI32x4Eq:\n\t\t\t\tlane = ssa.VecLaneI32x4\n\t\t\tcase wasm.OpcodeVecI64x2Eq:\n\t\t\t\tlane = ssa.VecLaneI64x2\n\t\t\t}\n\t\t\tv2 := state.pop()\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().\n\t\t\t\tAsVIcmp(v1, v2, ssa.IntegerCmpCondEqual, lane).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecI8x16Ne, wasm.OpcodeVecI16x8Ne, wasm.OpcodeVecI32x4Ne, wasm.OpcodeVecI64x2Ne:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar lane ssa.VecLane\n\t\t\tswitch vecOp {\n\t\t\tcase wasm.OpcodeVecI8x16Ne:\n\t\t\t\tlane = ssa.VecLaneI8x16\n\t\t\tcase wasm.OpcodeVecI16x8Ne:\n\t\t\t\tlane = ssa.VecLaneI16x8\n\t\t\tcase wasm.OpcodeVecI32x4Ne:\n\t\t\t\tlane = ssa.VecLaneI32x4\n\t\t\tcase wasm.OpcodeVecI64x2Ne:\n\t\t\t\tlane = ssa.VecLaneI64x2\n\t\t\t}\n\t\t\tv2 := state.pop()\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().\n\t\t\t\tAsVIcmp(v1, v2, ssa.IntegerCmpCondNotEqual, lane).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecI8x16LtS, wasm.OpcodeVecI16x8LtS, wasm.OpcodeVecI32x4LtS, wasm.OpcodeVecI64x2LtS:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar lane ssa.VecLane\n\t\t\tswitch vecOp {\n\t\t\tcase wasm.OpcodeVecI8x16LtS:\n\t\t\t\tlane = ssa.VecLaneI8x16\n\t\t\tcase wasm.OpcodeVecI16x8LtS:\n\t\t\t\tlane = ssa.VecLaneI16x8\n\t\t\tcase wasm.OpcodeVecI32x4LtS:\n\t\t\t\tlane = ssa.VecLaneI32x4\n\t\t\tcase wasm.OpcodeVecI64x2LtS:\n\t\t\t\tlane = ssa.VecLaneI64x2\n\t\t\t}\n\t\t\tv2 := state.pop()\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().\n\t\t\t\tAsVIcmp(v1, v2, ssa.IntegerCmpCondSignedLessThan, lane).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecI8x16LtU, wasm.OpcodeVecI16x8LtU, wasm.OpcodeVecI32x4LtU:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar lane ssa.VecLane\n\t\t\tswitch vecOp {\n\t\t\tcase wasm.OpcodeVecI8x16LtU:\n\t\t\t\tlane = ssa.VecLaneI8x16\n\t\t\tcase wasm.OpcodeVecI16x8LtU:\n\t\t\t\tlane = ssa.VecLaneI16x8\n\t\t\tcase wasm.OpcodeVecI32x4LtU:\n\t\t\t\tlane = ssa.VecLaneI32x4\n\t\t\t}\n\t\t\tv2 := state.pop()\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().\n\t\t\t\tAsVIcmp(v1, v2, ssa.IntegerCmpCondUnsignedLessThan, lane).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecI8x16LeS, wasm.OpcodeVecI16x8LeS, wasm.OpcodeVecI32x4LeS, wasm.OpcodeVecI64x2LeS:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar lane ssa.VecLane\n\t\t\tswitch vecOp {\n\t\t\tcase wasm.OpcodeVecI8x16LeS:\n\t\t\t\tlane = ssa.VecLaneI8x16\n\t\t\tcase wasm.OpcodeVecI16x8LeS:\n\t\t\t\tlane = ssa.VecLaneI16x8\n\t\t\tcase wasm.OpcodeVecI32x4LeS:\n\t\t\t\tlane = ssa.VecLaneI32x4\n\t\t\tcase wasm.OpcodeVecI64x2LeS:\n\t\t\t\tlane = ssa.VecLaneI64x2\n\t\t\t}\n\t\t\tv2 := state.pop()\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().\n\t\t\t\tAsVIcmp(v1, v2, ssa.IntegerCmpCondSignedLessThanOrEqual, lane).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecI8x16LeU, wasm.OpcodeVecI16x8LeU, wasm.OpcodeVecI32x4LeU:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar lane ssa.VecLane\n\t\t\tswitch vecOp {\n\t\t\tcase wasm.OpcodeVecI8x16LeU:\n\t\t\t\tlane = ssa.VecLaneI8x16\n\t\t\tcase wasm.OpcodeVecI16x8LeU:\n\t\t\t\tlane = ssa.VecLaneI16x8\n\t\t\tcase wasm.OpcodeVecI32x4LeU:\n\t\t\t\tlane = ssa.VecLaneI32x4\n\t\t\t}\n\t\t\tv2 := state.pop()\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().\n\t\t\t\tAsVIcmp(v1, v2, ssa.IntegerCmpCondUnsignedLessThanOrEqual, lane).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecI8x16GtS, wasm.OpcodeVecI16x8GtS, wasm.OpcodeVecI32x4GtS, wasm.OpcodeVecI64x2GtS:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar lane ssa.VecLane\n\t\t\tswitch vecOp {\n\t\t\tcase wasm.OpcodeVecI8x16GtS:\n\t\t\t\tlane = ssa.VecLaneI8x16\n\t\t\tcase wasm.OpcodeVecI16x8GtS:\n\t\t\t\tlane = ssa.VecLaneI16x8\n\t\t\tcase wasm.OpcodeVecI32x4GtS:\n\t\t\t\tlane = ssa.VecLaneI32x4\n\t\t\tcase wasm.OpcodeVecI64x2GtS:\n\t\t\t\tlane = ssa.VecLaneI64x2\n\t\t\t}\n\t\t\tv2 := state.pop()\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().\n\t\t\t\tAsVIcmp(v1, v2, ssa.IntegerCmpCondSignedGreaterThan, lane).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecI8x16GtU, wasm.OpcodeVecI16x8GtU, wasm.OpcodeVecI32x4GtU:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar lane ssa.VecLane\n\t\t\tswitch vecOp {\n\t\t\tcase wasm.OpcodeVecI8x16GtU:\n\t\t\t\tlane = ssa.VecLaneI8x16\n\t\t\tcase wasm.OpcodeVecI16x8GtU:\n\t\t\t\tlane = ssa.VecLaneI16x8\n\t\t\tcase wasm.OpcodeVecI32x4GtU:\n\t\t\t\tlane = ssa.VecLaneI32x4\n\t\t\t}\n\t\t\tv2 := state.pop()\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().\n\t\t\t\tAsVIcmp(v1, v2, ssa.IntegerCmpCondUnsignedGreaterThan, lane).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecI8x16GeS, wasm.OpcodeVecI16x8GeS, wasm.OpcodeVecI32x4GeS, wasm.OpcodeVecI64x2GeS:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar lane ssa.VecLane\n\t\t\tswitch vecOp {\n\t\t\tcase wasm.OpcodeVecI8x16GeS:\n\t\t\t\tlane = ssa.VecLaneI8x16\n\t\t\tcase wasm.OpcodeVecI16x8GeS:\n\t\t\t\tlane = ssa.VecLaneI16x8\n\t\t\tcase wasm.OpcodeVecI32x4GeS:\n\t\t\t\tlane = ssa.VecLaneI32x4\n\t\t\tcase wasm.OpcodeVecI64x2GeS:\n\t\t\t\tlane = ssa.VecLaneI64x2\n\t\t\t}\n\t\t\tv2 := state.pop()\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().\n\t\t\t\tAsVIcmp(v1, v2, ssa.IntegerCmpCondSignedGreaterThanOrEqual, lane).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecI8x16GeU, wasm.OpcodeVecI16x8GeU, wasm.OpcodeVecI32x4GeU:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar lane ssa.VecLane\n\t\t\tswitch vecOp {\n\t\t\tcase wasm.OpcodeVecI8x16GeU:\n\t\t\t\tlane = ssa.VecLaneI8x16\n\t\t\tcase wasm.OpcodeVecI16x8GeU:\n\t\t\t\tlane = ssa.VecLaneI16x8\n\t\t\tcase wasm.OpcodeVecI32x4GeU:\n\t\t\t\tlane = ssa.VecLaneI32x4\n\t\t\t}\n\t\t\tv2 := state.pop()\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().\n\t\t\t\tAsVIcmp(v1, v2, ssa.IntegerCmpCondUnsignedGreaterThanOrEqual, lane).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecF32x4Max, wasm.OpcodeVecF64x2Max:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar lane ssa.VecLane\n\t\t\tswitch vecOp {\n\t\t\tcase wasm.OpcodeVecF32x4Max:\n\t\t\t\tlane = ssa.VecLaneF32x4\n\t\t\tcase wasm.OpcodeVecF64x2Max:\n\t\t\t\tlane = ssa.VecLaneF64x2\n\t\t\t}\n\t\t\tv2 := state.pop()\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().AsVFmax(v1, v2, lane).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecF32x4Abs, wasm.OpcodeVecF64x2Abs:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar lane ssa.VecLane\n\t\t\tswitch vecOp {\n\t\t\tcase wasm.OpcodeVecF32x4Abs:\n\t\t\t\tlane = ssa.VecLaneF32x4\n\t\t\tcase wasm.OpcodeVecF64x2Abs:\n\t\t\t\tlane = ssa.VecLaneF64x2\n\t\t\t}\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().AsVFabs(v1, lane).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecF32x4Min, wasm.OpcodeVecF64x2Min:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar lane ssa.VecLane\n\t\t\tswitch vecOp {\n\t\t\tcase wasm.OpcodeVecF32x4Min:\n\t\t\t\tlane = ssa.VecLaneF32x4\n\t\t\tcase wasm.OpcodeVecF64x2Min:\n\t\t\t\tlane = ssa.VecLaneF64x2\n\t\t\t}\n\t\t\tv2 := state.pop()\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().AsVFmin(v1, v2, lane).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecF32x4Neg, wasm.OpcodeVecF64x2Neg:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar lane ssa.VecLane\n\t\t\tswitch vecOp {\n\t\t\tcase wasm.OpcodeVecF32x4Neg:\n\t\t\t\tlane = ssa.VecLaneF32x4\n\t\t\tcase wasm.OpcodeVecF64x2Neg:\n\t\t\t\tlane = ssa.VecLaneF64x2\n\t\t\t}\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().AsVFneg(v1, lane).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecF32x4Sqrt, wasm.OpcodeVecF64x2Sqrt:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar lane ssa.VecLane\n\t\t\tswitch vecOp {\n\t\t\tcase wasm.OpcodeVecF32x4Sqrt:\n\t\t\t\tlane = ssa.VecLaneF32x4\n\t\t\tcase wasm.OpcodeVecF64x2Sqrt:\n\t\t\t\tlane = ssa.VecLaneF64x2\n\t\t\t}\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().AsVSqrt(v1, lane).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\n\t\tcase wasm.OpcodeVecF32x4Add, wasm.OpcodeVecF64x2Add:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar lane ssa.VecLane\n\t\t\tswitch vecOp {\n\t\t\tcase wasm.OpcodeVecF32x4Add:\n\t\t\t\tlane = ssa.VecLaneF32x4\n\t\t\tcase wasm.OpcodeVecF64x2Add:\n\t\t\t\tlane = ssa.VecLaneF64x2\n\t\t\t}\n\t\t\tv2 := state.pop()\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().AsVFadd(v1, v2, lane).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecF32x4Sub, wasm.OpcodeVecF64x2Sub:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar lane ssa.VecLane\n\t\t\tswitch vecOp {\n\t\t\tcase wasm.OpcodeVecF32x4Sub:\n\t\t\t\tlane = ssa.VecLaneF32x4\n\t\t\tcase wasm.OpcodeVecF64x2Sub:\n\t\t\t\tlane = ssa.VecLaneF64x2\n\t\t\t}\n\t\t\tv2 := state.pop()\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().AsVFsub(v1, v2, lane).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecF32x4Mul, wasm.OpcodeVecF64x2Mul:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar lane ssa.VecLane\n\t\t\tswitch vecOp {\n\t\t\tcase wasm.OpcodeVecF32x4Mul:\n\t\t\t\tlane = ssa.VecLaneF32x4\n\t\t\tcase wasm.OpcodeVecF64x2Mul:\n\t\t\t\tlane = ssa.VecLaneF64x2\n\t\t\t}\n\t\t\tv2 := state.pop()\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().AsVFmul(v1, v2, lane).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecF32x4Div, wasm.OpcodeVecF64x2Div:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar lane ssa.VecLane\n\t\t\tswitch vecOp {\n\t\t\tcase wasm.OpcodeVecF32x4Div:\n\t\t\t\tlane = ssa.VecLaneF32x4\n\t\t\tcase wasm.OpcodeVecF64x2Div:\n\t\t\t\tlane = ssa.VecLaneF64x2\n\t\t\t}\n\t\t\tv2 := state.pop()\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().AsVFdiv(v1, v2, lane).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\n\t\tcase wasm.OpcodeVecI16x8ExtaddPairwiseI8x16S, wasm.OpcodeVecI16x8ExtaddPairwiseI8x16U:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tv := state.pop()\n\t\t\tsigned := vecOp == wasm.OpcodeVecI16x8ExtaddPairwiseI8x16S\n\t\t\tret := builder.AllocateInstruction().AsExtIaddPairwise(v, ssa.VecLaneI8x16, signed).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\n\t\tcase wasm.OpcodeVecI32x4ExtaddPairwiseI16x8S, wasm.OpcodeVecI32x4ExtaddPairwiseI16x8U:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tv := state.pop()\n\t\t\tsigned := vecOp == wasm.OpcodeVecI32x4ExtaddPairwiseI16x8S\n\t\t\tret := builder.AllocateInstruction().AsExtIaddPairwise(v, ssa.VecLaneI16x8, signed).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\n\t\tcase wasm.OpcodeVecI16x8ExtMulLowI8x16S, wasm.OpcodeVecI16x8ExtMulLowI8x16U:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tv2 := state.pop()\n\t\t\tv1 := state.pop()\n\t\t\tret := c.lowerExtMul(\n\t\t\t\tv1, v2,\n\t\t\t\tssa.VecLaneI8x16, ssa.VecLaneI16x8,\n\t\t\t\tvecOp == wasm.OpcodeVecI16x8ExtMulLowI8x16S, true)\n\t\t\tstate.push(ret)\n\n\t\tcase wasm.OpcodeVecI16x8ExtMulHighI8x16S, wasm.OpcodeVecI16x8ExtMulHighI8x16U:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tv2 := state.pop()\n\t\t\tv1 := state.pop()\n\t\t\tret := c.lowerExtMul(\n\t\t\t\tv1, v2,\n\t\t\t\tssa.VecLaneI8x16, ssa.VecLaneI16x8,\n\t\t\t\tvecOp == wasm.OpcodeVecI16x8ExtMulHighI8x16S, false)\n\t\t\tstate.push(ret)\n\n\t\tcase wasm.OpcodeVecI32x4ExtMulLowI16x8S, wasm.OpcodeVecI32x4ExtMulLowI16x8U:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tv2 := state.pop()\n\t\t\tv1 := state.pop()\n\t\t\tret := c.lowerExtMul(\n\t\t\t\tv1, v2,\n\t\t\t\tssa.VecLaneI16x8, ssa.VecLaneI32x4,\n\t\t\t\tvecOp == wasm.OpcodeVecI32x4ExtMulLowI16x8S, true)\n\t\t\tstate.push(ret)\n\n\t\tcase wasm.OpcodeVecI32x4ExtMulHighI16x8S, wasm.OpcodeVecI32x4ExtMulHighI16x8U:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tv2 := state.pop()\n\t\t\tv1 := state.pop()\n\t\t\tret := c.lowerExtMul(\n\t\t\t\tv1, v2,\n\t\t\t\tssa.VecLaneI16x8, ssa.VecLaneI32x4,\n\t\t\t\tvecOp == wasm.OpcodeVecI32x4ExtMulHighI16x8S, false)\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecI64x2ExtMulLowI32x4S, wasm.OpcodeVecI64x2ExtMulLowI32x4U:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tv2 := state.pop()\n\t\t\tv1 := state.pop()\n\t\t\tret := c.lowerExtMul(\n\t\t\t\tv1, v2,\n\t\t\t\tssa.VecLaneI32x4, ssa.VecLaneI64x2,\n\t\t\t\tvecOp == wasm.OpcodeVecI64x2ExtMulLowI32x4S, true)\n\t\t\tstate.push(ret)\n\n\t\tcase wasm.OpcodeVecI64x2ExtMulHighI32x4S, wasm.OpcodeVecI64x2ExtMulHighI32x4U:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tv2 := state.pop()\n\t\t\tv1 := state.pop()\n\t\t\tret := c.lowerExtMul(\n\t\t\t\tv1, v2,\n\t\t\t\tssa.VecLaneI32x4, ssa.VecLaneI64x2,\n\t\t\t\tvecOp == wasm.OpcodeVecI64x2ExtMulHighI32x4S, false)\n\t\t\tstate.push(ret)\n\n\t\tcase wasm.OpcodeVecI32x4DotI16x8S:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tv2 := state.pop()\n\t\t\tv1 := state.pop()\n\n\t\t\tret := builder.AllocateInstruction().AsWideningPairwiseDotProductS(v1, v2).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\n\t\tcase wasm.OpcodeVecF32x4Eq, wasm.OpcodeVecF64x2Eq:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar lane ssa.VecLane\n\t\t\tswitch vecOp {\n\t\t\tcase wasm.OpcodeVecF32x4Eq:\n\t\t\t\tlane = ssa.VecLaneF32x4\n\t\t\tcase wasm.OpcodeVecF64x2Eq:\n\t\t\t\tlane = ssa.VecLaneF64x2\n\t\t\t}\n\t\t\tv2 := state.pop()\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().\n\t\t\t\tAsVFcmp(v1, v2, ssa.FloatCmpCondEqual, lane).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecF32x4Ne, wasm.OpcodeVecF64x2Ne:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar lane ssa.VecLane\n\t\t\tswitch vecOp {\n\t\t\tcase wasm.OpcodeVecF32x4Ne:\n\t\t\t\tlane = ssa.VecLaneF32x4\n\t\t\tcase wasm.OpcodeVecF64x2Ne:\n\t\t\t\tlane = ssa.VecLaneF64x2\n\t\t\t}\n\t\t\tv2 := state.pop()\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().\n\t\t\t\tAsVFcmp(v1, v2, ssa.FloatCmpCondNotEqual, lane).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecF32x4Lt, wasm.OpcodeVecF64x2Lt:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar lane ssa.VecLane\n\t\t\tswitch vecOp {\n\t\t\tcase wasm.OpcodeVecF32x4Lt:\n\t\t\t\tlane = ssa.VecLaneF32x4\n\t\t\tcase wasm.OpcodeVecF64x2Lt:\n\t\t\t\tlane = ssa.VecLaneF64x2\n\t\t\t}\n\t\t\tv2 := state.pop()\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().\n\t\t\t\tAsVFcmp(v1, v2, ssa.FloatCmpCondLessThan, lane).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecF32x4Le, wasm.OpcodeVecF64x2Le:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar lane ssa.VecLane\n\t\t\tswitch vecOp {\n\t\t\tcase wasm.OpcodeVecF32x4Le:\n\t\t\t\tlane = ssa.VecLaneF32x4\n\t\t\tcase wasm.OpcodeVecF64x2Le:\n\t\t\t\tlane = ssa.VecLaneF64x2\n\t\t\t}\n\t\t\tv2 := state.pop()\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().\n\t\t\t\tAsVFcmp(v1, v2, ssa.FloatCmpCondLessThanOrEqual, lane).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecF32x4Gt, wasm.OpcodeVecF64x2Gt:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar lane ssa.VecLane\n\t\t\tswitch vecOp {\n\t\t\tcase wasm.OpcodeVecF32x4Gt:\n\t\t\t\tlane = ssa.VecLaneF32x4\n\t\t\tcase wasm.OpcodeVecF64x2Gt:\n\t\t\t\tlane = ssa.VecLaneF64x2\n\t\t\t}\n\t\t\tv2 := state.pop()\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().\n\t\t\t\tAsVFcmp(v1, v2, ssa.FloatCmpCondGreaterThan, lane).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecF32x4Ge, wasm.OpcodeVecF64x2Ge:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar lane ssa.VecLane\n\t\t\tswitch vecOp {\n\t\t\tcase wasm.OpcodeVecF32x4Ge:\n\t\t\t\tlane = ssa.VecLaneF32x4\n\t\t\tcase wasm.OpcodeVecF64x2Ge:\n\t\t\t\tlane = ssa.VecLaneF64x2\n\t\t\t}\n\t\t\tv2 := state.pop()\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().\n\t\t\t\tAsVFcmp(v1, v2, ssa.FloatCmpCondGreaterThanOrEqual, lane).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecF32x4Ceil, wasm.OpcodeVecF64x2Ceil:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar lane ssa.VecLane\n\t\t\tswitch vecOp {\n\t\t\tcase wasm.OpcodeVecF32x4Ceil:\n\t\t\t\tlane = ssa.VecLaneF32x4\n\t\t\tcase wasm.OpcodeVecF64x2Ceil:\n\t\t\t\tlane = ssa.VecLaneF64x2\n\t\t\t}\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().AsVCeil(v1, lane).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecF32x4Floor, wasm.OpcodeVecF64x2Floor:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar lane ssa.VecLane\n\t\t\tswitch vecOp {\n\t\t\tcase wasm.OpcodeVecF32x4Floor:\n\t\t\t\tlane = ssa.VecLaneF32x4\n\t\t\tcase wasm.OpcodeVecF64x2Floor:\n\t\t\t\tlane = ssa.VecLaneF64x2\n\t\t\t}\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().AsVFloor(v1, lane).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecF32x4Trunc, wasm.OpcodeVecF64x2Trunc:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar lane ssa.VecLane\n\t\t\tswitch vecOp {\n\t\t\tcase wasm.OpcodeVecF32x4Trunc:\n\t\t\t\tlane = ssa.VecLaneF32x4\n\t\t\tcase wasm.OpcodeVecF64x2Trunc:\n\t\t\t\tlane = ssa.VecLaneF64x2\n\t\t\t}\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().AsVTrunc(v1, lane).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecF32x4Nearest, wasm.OpcodeVecF64x2Nearest:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar lane ssa.VecLane\n\t\t\tswitch vecOp {\n\t\t\tcase wasm.OpcodeVecF32x4Nearest:\n\t\t\t\tlane = ssa.VecLaneF32x4\n\t\t\tcase wasm.OpcodeVecF64x2Nearest:\n\t\t\t\tlane = ssa.VecLaneF64x2\n\t\t\t}\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().AsVNearest(v1, lane).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecF32x4Pmin, wasm.OpcodeVecF64x2Pmin:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar lane ssa.VecLane\n\t\t\tswitch vecOp {\n\t\t\tcase wasm.OpcodeVecF32x4Pmin:\n\t\t\t\tlane = ssa.VecLaneF32x4\n\t\t\tcase wasm.OpcodeVecF64x2Pmin:\n\t\t\t\tlane = ssa.VecLaneF64x2\n\t\t\t}\n\t\t\tv2 := state.pop()\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().AsVMinPseudo(v1, v2, lane).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecF32x4Pmax, wasm.OpcodeVecF64x2Pmax:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar lane ssa.VecLane\n\t\t\tswitch vecOp {\n\t\t\tcase wasm.OpcodeVecF32x4Pmax:\n\t\t\t\tlane = ssa.VecLaneF32x4\n\t\t\tcase wasm.OpcodeVecF64x2Pmax:\n\t\t\t\tlane = ssa.VecLaneF64x2\n\t\t\t}\n\t\t\tv2 := state.pop()\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().AsVMaxPseudo(v1, v2, lane).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecI32x4TruncSatF32x4S, wasm.OpcodeVecI32x4TruncSatF32x4U:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().\n\t\t\t\tAsVFcvtToIntSat(v1, ssa.VecLaneF32x4, vecOp == wasm.OpcodeVecI32x4TruncSatF32x4S).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecI32x4TruncSatF64x2SZero, wasm.OpcodeVecI32x4TruncSatF64x2UZero:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().\n\t\t\t\tAsVFcvtToIntSat(v1, ssa.VecLaneF64x2, vecOp == wasm.OpcodeVecI32x4TruncSatF64x2SZero).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecF32x4ConvertI32x4S, wasm.OpcodeVecF32x4ConvertI32x4U:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().\n\t\t\t\tAsVFcvtFromInt(v1, ssa.VecLaneF32x4, vecOp == wasm.OpcodeVecF32x4ConvertI32x4S).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecF64x2ConvertLowI32x4S, wasm.OpcodeVecF64x2ConvertLowI32x4U:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tv1 := state.pop()\n\t\t\tif runtime.GOARCH == \"arm64\" {\n\t\t\t\t// TODO: this is weird. fix.\n\t\t\t\tv1 = builder.AllocateInstruction().\n\t\t\t\t\tAsWiden(v1, ssa.VecLaneI32x4, vecOp == wasm.OpcodeVecF64x2ConvertLowI32x4S, true).Insert(builder).Return()\n\t\t\t}\n\t\t\tret := builder.AllocateInstruction().\n\t\t\t\tAsVFcvtFromInt(v1, ssa.VecLaneF64x2, vecOp == wasm.OpcodeVecF64x2ConvertLowI32x4S).\n\t\t\t\tInsert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecI8x16NarrowI16x8S, wasm.OpcodeVecI8x16NarrowI16x8U:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tv2 := state.pop()\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().\n\t\t\t\tAsNarrow(v1, v2, ssa.VecLaneI16x8, vecOp == wasm.OpcodeVecI8x16NarrowI16x8S).\n\t\t\t\tInsert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecI16x8NarrowI32x4S, wasm.OpcodeVecI16x8NarrowI32x4U:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tv2 := state.pop()\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().\n\t\t\t\tAsNarrow(v1, v2, ssa.VecLaneI32x4, vecOp == wasm.OpcodeVecI16x8NarrowI32x4S).\n\t\t\t\tInsert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecI16x8ExtendLowI8x16S, wasm.OpcodeVecI16x8ExtendLowI8x16U:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().\n\t\t\t\tAsWiden(v1, ssa.VecLaneI8x16, vecOp == wasm.OpcodeVecI16x8ExtendLowI8x16S, true).\n\t\t\t\tInsert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecI16x8ExtendHighI8x16S, wasm.OpcodeVecI16x8ExtendHighI8x16U:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().\n\t\t\t\tAsWiden(v1, ssa.VecLaneI8x16, vecOp == wasm.OpcodeVecI16x8ExtendHighI8x16S, false).\n\t\t\t\tInsert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecI32x4ExtendLowI16x8S, wasm.OpcodeVecI32x4ExtendLowI16x8U:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().\n\t\t\t\tAsWiden(v1, ssa.VecLaneI16x8, vecOp == wasm.OpcodeVecI32x4ExtendLowI16x8S, true).\n\t\t\t\tInsert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecI32x4ExtendHighI16x8S, wasm.OpcodeVecI32x4ExtendHighI16x8U:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().\n\t\t\t\tAsWiden(v1, ssa.VecLaneI16x8, vecOp == wasm.OpcodeVecI32x4ExtendHighI16x8S, false).\n\t\t\t\tInsert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecI64x2ExtendLowI32x4S, wasm.OpcodeVecI64x2ExtendLowI32x4U:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().\n\t\t\t\tAsWiden(v1, ssa.VecLaneI32x4, vecOp == wasm.OpcodeVecI64x2ExtendLowI32x4S, true).\n\t\t\t\tInsert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecI64x2ExtendHighI32x4S, wasm.OpcodeVecI64x2ExtendHighI32x4U:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().\n\t\t\t\tAsWiden(v1, ssa.VecLaneI32x4, vecOp == wasm.OpcodeVecI64x2ExtendHighI32x4S, false).\n\t\t\t\tInsert(builder).Return()\n\t\t\tstate.push(ret)\n\n\t\tcase wasm.OpcodeVecF64x2PromoteLowF32x4Zero:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().\n\t\t\t\tAsFvpromoteLow(v1, ssa.VecLaneF32x4).\n\t\t\t\tInsert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecF32x4DemoteF64x2Zero:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().\n\t\t\t\tAsFvdemote(v1, ssa.VecLaneF64x2).\n\t\t\t\tInsert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecI8x16Shl, wasm.OpcodeVecI16x8Shl, wasm.OpcodeVecI32x4Shl, wasm.OpcodeVecI64x2Shl:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar lane ssa.VecLane\n\t\t\tswitch vecOp {\n\t\t\tcase wasm.OpcodeVecI8x16Shl:\n\t\t\t\tlane = ssa.VecLaneI8x16\n\t\t\tcase wasm.OpcodeVecI16x8Shl:\n\t\t\t\tlane = ssa.VecLaneI16x8\n\t\t\tcase wasm.OpcodeVecI32x4Shl:\n\t\t\t\tlane = ssa.VecLaneI32x4\n\t\t\tcase wasm.OpcodeVecI64x2Shl:\n\t\t\t\tlane = ssa.VecLaneI64x2\n\t\t\t}\n\t\t\tv2 := state.pop()\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().AsVIshl(v1, v2, lane).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecI8x16ShrS, wasm.OpcodeVecI16x8ShrS, wasm.OpcodeVecI32x4ShrS, wasm.OpcodeVecI64x2ShrS:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar lane ssa.VecLane\n\t\t\tswitch vecOp {\n\t\t\tcase wasm.OpcodeVecI8x16ShrS:\n\t\t\t\tlane = ssa.VecLaneI8x16\n\t\t\tcase wasm.OpcodeVecI16x8ShrS:\n\t\t\t\tlane = ssa.VecLaneI16x8\n\t\t\tcase wasm.OpcodeVecI32x4ShrS:\n\t\t\t\tlane = ssa.VecLaneI32x4\n\t\t\tcase wasm.OpcodeVecI64x2ShrS:\n\t\t\t\tlane = ssa.VecLaneI64x2\n\t\t\t}\n\t\t\tv2 := state.pop()\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().AsVSshr(v1, v2, lane).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecI8x16ShrU, wasm.OpcodeVecI16x8ShrU, wasm.OpcodeVecI32x4ShrU, wasm.OpcodeVecI64x2ShrU:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar lane ssa.VecLane\n\t\t\tswitch vecOp {\n\t\t\tcase wasm.OpcodeVecI8x16ShrU:\n\t\t\t\tlane = ssa.VecLaneI8x16\n\t\t\tcase wasm.OpcodeVecI16x8ShrU:\n\t\t\t\tlane = ssa.VecLaneI16x8\n\t\t\tcase wasm.OpcodeVecI32x4ShrU:\n\t\t\t\tlane = ssa.VecLaneI32x4\n\t\t\tcase wasm.OpcodeVecI64x2ShrU:\n\t\t\t\tlane = ssa.VecLaneI64x2\n\t\t\t}\n\t\t\tv2 := state.pop()\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().AsVUshr(v1, v2, lane).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecI8x16ExtractLaneS, wasm.OpcodeVecI16x8ExtractLaneS:\n\t\t\tstate.pc++\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar lane ssa.VecLane\n\t\t\tswitch vecOp {\n\t\t\tcase wasm.OpcodeVecI8x16ExtractLaneS:\n\t\t\t\tlane = ssa.VecLaneI8x16\n\t\t\tcase wasm.OpcodeVecI16x8ExtractLaneS:\n\t\t\t\tlane = ssa.VecLaneI16x8\n\t\t\t}\n\t\t\tv1 := state.pop()\n\t\t\tindex := c.wasmFunctionBody[state.pc]\n\t\t\text := builder.AllocateInstruction().AsExtractlane(v1, index, lane, true).Insert(builder).Return()\n\t\t\tstate.push(ext)\n\t\tcase wasm.OpcodeVecI8x16ExtractLaneU, wasm.OpcodeVecI16x8ExtractLaneU,\n\t\t\twasm.OpcodeVecI32x4ExtractLane, wasm.OpcodeVecI64x2ExtractLane,\n\t\t\twasm.OpcodeVecF32x4ExtractLane, wasm.OpcodeVecF64x2ExtractLane:\n\t\t\tstate.pc++ // Skip the immediate value.\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar lane ssa.VecLane\n\t\t\tswitch vecOp {\n\t\t\tcase wasm.OpcodeVecI8x16ExtractLaneU:\n\t\t\t\tlane = ssa.VecLaneI8x16\n\t\t\tcase wasm.OpcodeVecI16x8ExtractLaneU:\n\t\t\t\tlane = ssa.VecLaneI16x8\n\t\t\tcase wasm.OpcodeVecI32x4ExtractLane:\n\t\t\t\tlane = ssa.VecLaneI32x4\n\t\t\tcase wasm.OpcodeVecI64x2ExtractLane:\n\t\t\t\tlane = ssa.VecLaneI64x2\n\t\t\tcase wasm.OpcodeVecF32x4ExtractLane:\n\t\t\t\tlane = ssa.VecLaneF32x4\n\t\t\tcase wasm.OpcodeVecF64x2ExtractLane:\n\t\t\t\tlane = ssa.VecLaneF64x2\n\t\t\t}\n\t\t\tv1 := state.pop()\n\t\t\tindex := c.wasmFunctionBody[state.pc]\n\t\t\text := builder.AllocateInstruction().AsExtractlane(v1, index, lane, false).Insert(builder).Return()\n\t\t\tstate.push(ext)\n\t\tcase wasm.OpcodeVecI8x16ReplaceLane, wasm.OpcodeVecI16x8ReplaceLane,\n\t\t\twasm.OpcodeVecI32x4ReplaceLane, wasm.OpcodeVecI64x2ReplaceLane,\n\t\t\twasm.OpcodeVecF32x4ReplaceLane, wasm.OpcodeVecF64x2ReplaceLane:\n\t\t\tstate.pc++\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar lane ssa.VecLane\n\t\t\tswitch vecOp {\n\t\t\tcase wasm.OpcodeVecI8x16ReplaceLane:\n\t\t\t\tlane = ssa.VecLaneI8x16\n\t\t\tcase wasm.OpcodeVecI16x8ReplaceLane:\n\t\t\t\tlane = ssa.VecLaneI16x8\n\t\t\tcase wasm.OpcodeVecI32x4ReplaceLane:\n\t\t\t\tlane = ssa.VecLaneI32x4\n\t\t\tcase wasm.OpcodeVecI64x2ReplaceLane:\n\t\t\t\tlane = ssa.VecLaneI64x2\n\t\t\tcase wasm.OpcodeVecF32x4ReplaceLane:\n\t\t\t\tlane = ssa.VecLaneF32x4\n\t\t\tcase wasm.OpcodeVecF64x2ReplaceLane:\n\t\t\t\tlane = ssa.VecLaneF64x2\n\t\t\t}\n\t\t\tv2 := state.pop()\n\t\t\tv1 := state.pop()\n\t\t\tindex := c.wasmFunctionBody[state.pc]\n\t\t\tret := builder.AllocateInstruction().AsInsertlane(v1, v2, index, lane).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\t\tcase wasm.OpcodeVecV128i8x16Shuffle:\n\t\t\tstate.pc++\n\t\t\tlaneIndexes := c.wasmFunctionBody[state.pc : state.pc+16]\n\t\t\tstate.pc += 15\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tv2 := state.pop()\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().AsShuffle(v1, v2, laneIndexes).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\n\t\tcase wasm.OpcodeVecI8x16Swizzle:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tv2 := state.pop()\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().AsSwizzle(v1, v2, ssa.VecLaneI8x16).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\n\t\tcase wasm.OpcodeVecI8x16Splat,\n\t\t\twasm.OpcodeVecI16x8Splat,\n\t\t\twasm.OpcodeVecI32x4Splat,\n\t\t\twasm.OpcodeVecI64x2Splat,\n\t\t\twasm.OpcodeVecF32x4Splat,\n\t\t\twasm.OpcodeVecF64x2Splat:\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar lane ssa.VecLane\n\t\t\tswitch vecOp {\n\t\t\tcase wasm.OpcodeVecI8x16Splat:\n\t\t\t\tlane = ssa.VecLaneI8x16\n\t\t\tcase wasm.OpcodeVecI16x8Splat:\n\t\t\t\tlane = ssa.VecLaneI16x8\n\t\t\tcase wasm.OpcodeVecI32x4Splat:\n\t\t\t\tlane = ssa.VecLaneI32x4\n\t\t\tcase wasm.OpcodeVecI64x2Splat:\n\t\t\t\tlane = ssa.VecLaneI64x2\n\t\t\tcase wasm.OpcodeVecF32x4Splat:\n\t\t\t\tlane = ssa.VecLaneF32x4\n\t\t\tcase wasm.OpcodeVecF64x2Splat:\n\t\t\t\tlane = ssa.VecLaneF64x2\n\t\t\t}\n\t\t\tv1 := state.pop()\n\t\t\tret := builder.AllocateInstruction().AsSplat(v1, lane).Insert(builder).Return()\n\t\t\tstate.push(ret)\n\n\t\tdefault:\n\t\t\tpanic(\"TODO: unsupported vector instruction: \" + wasm.VectorInstructionName(vecOp))\n\t\t}\n\tcase wasm.OpcodeAtomicPrefix:\n\t\tstate.pc++\n\t\tatomicOp := c.wasmFunctionBody[state.pc]\n\t\tswitch atomicOp {\n\t\tcase wasm.OpcodeAtomicMemoryWait32, wasm.OpcodeAtomicMemoryWait64:\n\t\t\t_, offset := c.readMemArg()\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tc.storeCallerModuleContext()\n\n\t\t\tvar opSize uint64\n\t\t\tvar trampoline wazevoapi.Offset\n\t\t\tvar sig *ssa.Signature\n\t\t\tswitch atomicOp {\n\t\t\tcase wasm.OpcodeAtomicMemoryWait32:\n\t\t\t\topSize = 4\n\t\t\t\ttrampoline = wazevoapi.ExecutionContextOffsetMemoryWait32TrampolineAddress\n\t\t\t\tsig = &c.memoryWait32Sig\n\t\t\tcase wasm.OpcodeAtomicMemoryWait64:\n\t\t\t\topSize = 8\n\t\t\t\ttrampoline = wazevoapi.ExecutionContextOffsetMemoryWait64TrampolineAddress\n\t\t\t\tsig = &c.memoryWait64Sig\n\t\t\t}\n\n\t\t\ttimeout := state.pop()\n\t\t\texp := state.pop()\n\t\t\tbaseAddr := state.pop()\n\t\t\taddr := c.atomicMemOpSetup(baseAddr, uint64(offset), opSize)\n\n\t\t\tmemoryWaitPtr := builder.AllocateInstruction().\n\t\t\t\tAsLoad(c.execCtxPtrValue,\n\t\t\t\t\ttrampoline.U32(),\n\t\t\t\t\tssa.TypeI64,\n\t\t\t\t).Insert(builder).Return()\n\n\t\t\targs := c.allocateVarLengthValues(4, c.execCtxPtrValue, timeout, exp, addr)\n\t\t\tmemoryWaitRet := builder.AllocateInstruction().\n\t\t\t\tAsCallIndirect(memoryWaitPtr, sig, args).\n\t\t\t\tInsert(builder).Return()\n\t\t\tstate.push(memoryWaitRet)\n\t\tcase wasm.OpcodeAtomicMemoryNotify:\n\t\t\t_, offset := c.readMemArg()\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tc.storeCallerModuleContext()\n\t\t\tcount := state.pop()\n\t\t\tbaseAddr := state.pop()\n\t\t\taddr := c.atomicMemOpSetup(baseAddr, uint64(offset), 4)\n\n\t\t\tmemoryNotifyPtr := builder.AllocateInstruction().\n\t\t\t\tAsLoad(c.execCtxPtrValue,\n\t\t\t\t\twazevoapi.ExecutionContextOffsetMemoryNotifyTrampolineAddress.U32(),\n\t\t\t\t\tssa.TypeI64,\n\t\t\t\t).Insert(builder).Return()\n\t\t\targs := c.allocateVarLengthValues(3, c.execCtxPtrValue, count, addr)\n\t\t\tmemoryNotifyRet := builder.AllocateInstruction().\n\t\t\t\tAsCallIndirect(memoryNotifyPtr, &c.memoryNotifySig, args).\n\t\t\t\tInsert(builder).Return()\n\t\t\tstate.push(memoryNotifyRet)\n\t\tcase wasm.OpcodeAtomicI32Load, wasm.OpcodeAtomicI64Load, wasm.OpcodeAtomicI32Load8U, wasm.OpcodeAtomicI32Load16U, wasm.OpcodeAtomicI64Load8U, wasm.OpcodeAtomicI64Load16U, wasm.OpcodeAtomicI64Load32U:\n\t\t\t_, offset := c.readMemArg()\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tbaseAddr := state.pop()\n\n\t\t\tvar size uint64\n\t\t\tswitch atomicOp {\n\t\t\tcase wasm.OpcodeAtomicI64Load:\n\t\t\t\tsize = 8\n\t\t\tcase wasm.OpcodeAtomicI32Load, wasm.OpcodeAtomicI64Load32U:\n\t\t\t\tsize = 4\n\t\t\tcase wasm.OpcodeAtomicI32Load16U, wasm.OpcodeAtomicI64Load16U:\n\t\t\t\tsize = 2\n\t\t\tcase wasm.OpcodeAtomicI32Load8U, wasm.OpcodeAtomicI64Load8U:\n\t\t\t\tsize = 1\n\t\t\t}\n\n\t\t\tvar typ ssa.Type\n\t\t\tswitch atomicOp {\n\t\t\tcase wasm.OpcodeAtomicI64Load, wasm.OpcodeAtomicI64Load32U, wasm.OpcodeAtomicI64Load16U, wasm.OpcodeAtomicI64Load8U:\n\t\t\t\ttyp = ssa.TypeI64\n\t\t\tcase wasm.OpcodeAtomicI32Load, wasm.OpcodeAtomicI32Load16U, wasm.OpcodeAtomicI32Load8U:\n\t\t\t\ttyp = ssa.TypeI32\n\t\t\t}\n\n\t\t\taddr := c.atomicMemOpSetup(baseAddr, uint64(offset), size)\n\t\t\tres := builder.AllocateInstruction().AsAtomicLoad(addr, size, typ).Insert(builder).Return()\n\t\t\tstate.push(res)\n\t\tcase wasm.OpcodeAtomicI32Store, wasm.OpcodeAtomicI64Store, wasm.OpcodeAtomicI32Store8, wasm.OpcodeAtomicI32Store16, wasm.OpcodeAtomicI64Store8, wasm.OpcodeAtomicI64Store16, wasm.OpcodeAtomicI64Store32:\n\t\t\t_, offset := c.readMemArg()\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tval := state.pop()\n\t\t\tbaseAddr := state.pop()\n\n\t\t\tvar size uint64\n\t\t\tswitch atomicOp {\n\t\t\tcase wasm.OpcodeAtomicI64Store:\n\t\t\t\tsize = 8\n\t\t\tcase wasm.OpcodeAtomicI32Store, wasm.OpcodeAtomicI64Store32:\n\t\t\t\tsize = 4\n\t\t\tcase wasm.OpcodeAtomicI32Store16, wasm.OpcodeAtomicI64Store16:\n\t\t\t\tsize = 2\n\t\t\tcase wasm.OpcodeAtomicI32Store8, wasm.OpcodeAtomicI64Store8:\n\t\t\t\tsize = 1\n\t\t\t}\n\n\t\t\taddr := c.atomicMemOpSetup(baseAddr, uint64(offset), size)\n\t\t\tbuilder.AllocateInstruction().AsAtomicStore(addr, val, size).Insert(builder)\n\t\tcase wasm.OpcodeAtomicI32RmwAdd, wasm.OpcodeAtomicI64RmwAdd, wasm.OpcodeAtomicI32Rmw8AddU, wasm.OpcodeAtomicI32Rmw16AddU, wasm.OpcodeAtomicI64Rmw8AddU, wasm.OpcodeAtomicI64Rmw16AddU, wasm.OpcodeAtomicI64Rmw32AddU,\n\t\t\twasm.OpcodeAtomicI32RmwSub, wasm.OpcodeAtomicI64RmwSub, wasm.OpcodeAtomicI32Rmw8SubU, wasm.OpcodeAtomicI32Rmw16SubU, wasm.OpcodeAtomicI64Rmw8SubU, wasm.OpcodeAtomicI64Rmw16SubU, wasm.OpcodeAtomicI64Rmw32SubU,\n\t\t\twasm.OpcodeAtomicI32RmwAnd, wasm.OpcodeAtomicI64RmwAnd, wasm.OpcodeAtomicI32Rmw8AndU, wasm.OpcodeAtomicI32Rmw16AndU, wasm.OpcodeAtomicI64Rmw8AndU, wasm.OpcodeAtomicI64Rmw16AndU, wasm.OpcodeAtomicI64Rmw32AndU,\n\t\t\twasm.OpcodeAtomicI32RmwOr, wasm.OpcodeAtomicI64RmwOr, wasm.OpcodeAtomicI32Rmw8OrU, wasm.OpcodeAtomicI32Rmw16OrU, wasm.OpcodeAtomicI64Rmw8OrU, wasm.OpcodeAtomicI64Rmw16OrU, wasm.OpcodeAtomicI64Rmw32OrU,\n\t\t\twasm.OpcodeAtomicI32RmwXor, wasm.OpcodeAtomicI64RmwXor, wasm.OpcodeAtomicI32Rmw8XorU, wasm.OpcodeAtomicI32Rmw16XorU, wasm.OpcodeAtomicI64Rmw8XorU, wasm.OpcodeAtomicI64Rmw16XorU, wasm.OpcodeAtomicI64Rmw32XorU,\n\t\t\twasm.OpcodeAtomicI32RmwXchg, wasm.OpcodeAtomicI64RmwXchg, wasm.OpcodeAtomicI32Rmw8XchgU, wasm.OpcodeAtomicI32Rmw16XchgU, wasm.OpcodeAtomicI64Rmw8XchgU, wasm.OpcodeAtomicI64Rmw16XchgU, wasm.OpcodeAtomicI64Rmw32XchgU:\n\t\t\t_, offset := c.readMemArg()\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tval := state.pop()\n\t\t\tbaseAddr := state.pop()\n\n\t\t\tvar rmwOp ssa.AtomicRmwOp\n\t\t\tvar size uint64\n\t\t\tswitch atomicOp {\n\t\t\tcase wasm.OpcodeAtomicI32RmwAdd, wasm.OpcodeAtomicI64RmwAdd, wasm.OpcodeAtomicI32Rmw8AddU, wasm.OpcodeAtomicI32Rmw16AddU, wasm.OpcodeAtomicI64Rmw8AddU, wasm.OpcodeAtomicI64Rmw16AddU, wasm.OpcodeAtomicI64Rmw32AddU:\n\t\t\t\trmwOp = ssa.AtomicRmwOpAdd\n\t\t\t\tswitch atomicOp {\n\t\t\t\tcase wasm.OpcodeAtomicI64RmwAdd:\n\t\t\t\t\tsize = 8\n\t\t\t\tcase wasm.OpcodeAtomicI32RmwAdd, wasm.OpcodeAtomicI64Rmw32AddU:\n\t\t\t\t\tsize = 4\n\t\t\t\tcase wasm.OpcodeAtomicI32Rmw16AddU, wasm.OpcodeAtomicI64Rmw16AddU:\n\t\t\t\t\tsize = 2\n\t\t\t\tcase wasm.OpcodeAtomicI32Rmw8AddU, wasm.OpcodeAtomicI64Rmw8AddU:\n\t\t\t\t\tsize = 1\n\t\t\t\t}\n\t\t\tcase wasm.OpcodeAtomicI32RmwSub, wasm.OpcodeAtomicI64RmwSub, wasm.OpcodeAtomicI32Rmw8SubU, wasm.OpcodeAtomicI32Rmw16SubU, wasm.OpcodeAtomicI64Rmw8SubU, wasm.OpcodeAtomicI64Rmw16SubU, wasm.OpcodeAtomicI64Rmw32SubU:\n\t\t\t\trmwOp = ssa.AtomicRmwOpSub\n\t\t\t\tswitch atomicOp {\n\t\t\t\tcase wasm.OpcodeAtomicI64RmwSub:\n\t\t\t\t\tsize = 8\n\t\t\t\tcase wasm.OpcodeAtomicI32RmwSub, wasm.OpcodeAtomicI64Rmw32SubU:\n\t\t\t\t\tsize = 4\n\t\t\t\tcase wasm.OpcodeAtomicI32Rmw16SubU, wasm.OpcodeAtomicI64Rmw16SubU:\n\t\t\t\t\tsize = 2\n\t\t\t\tcase wasm.OpcodeAtomicI32Rmw8SubU, wasm.OpcodeAtomicI64Rmw8SubU:\n\t\t\t\t\tsize = 1\n\t\t\t\t}\n\t\t\tcase wasm.OpcodeAtomicI32RmwAnd, wasm.OpcodeAtomicI64RmwAnd, wasm.OpcodeAtomicI32Rmw8AndU, wasm.OpcodeAtomicI32Rmw16AndU, wasm.OpcodeAtomicI64Rmw8AndU, wasm.OpcodeAtomicI64Rmw16AndU, wasm.OpcodeAtomicI64Rmw32AndU:\n\t\t\t\trmwOp = ssa.AtomicRmwOpAnd\n\t\t\t\tswitch atomicOp {\n\t\t\t\tcase wasm.OpcodeAtomicI64RmwAnd:\n\t\t\t\t\tsize = 8\n\t\t\t\tcase wasm.OpcodeAtomicI32RmwAnd, wasm.OpcodeAtomicI64Rmw32AndU:\n\t\t\t\t\tsize = 4\n\t\t\t\tcase wasm.OpcodeAtomicI32Rmw16AndU, wasm.OpcodeAtomicI64Rmw16AndU:\n\t\t\t\t\tsize = 2\n\t\t\t\tcase wasm.OpcodeAtomicI32Rmw8AndU, wasm.OpcodeAtomicI64Rmw8AndU:\n\t\t\t\t\tsize = 1\n\t\t\t\t}\n\t\t\tcase wasm.OpcodeAtomicI32RmwOr, wasm.OpcodeAtomicI64RmwOr, wasm.OpcodeAtomicI32Rmw8OrU, wasm.OpcodeAtomicI32Rmw16OrU, wasm.OpcodeAtomicI64Rmw8OrU, wasm.OpcodeAtomicI64Rmw16OrU, wasm.OpcodeAtomicI64Rmw32OrU:\n\t\t\t\trmwOp = ssa.AtomicRmwOpOr\n\t\t\t\tswitch atomicOp {\n\t\t\t\tcase wasm.OpcodeAtomicI64RmwOr:\n\t\t\t\t\tsize = 8\n\t\t\t\tcase wasm.OpcodeAtomicI32RmwOr, wasm.OpcodeAtomicI64Rmw32OrU:\n\t\t\t\t\tsize = 4\n\t\t\t\tcase wasm.OpcodeAtomicI32Rmw16OrU, wasm.OpcodeAtomicI64Rmw16OrU:\n\t\t\t\t\tsize = 2\n\t\t\t\tcase wasm.OpcodeAtomicI32Rmw8OrU, wasm.OpcodeAtomicI64Rmw8OrU:\n\t\t\t\t\tsize = 1\n\t\t\t\t}\n\t\t\tcase wasm.OpcodeAtomicI32RmwXor, wasm.OpcodeAtomicI64RmwXor, wasm.OpcodeAtomicI32Rmw8XorU, wasm.OpcodeAtomicI32Rmw16XorU, wasm.OpcodeAtomicI64Rmw8XorU, wasm.OpcodeAtomicI64Rmw16XorU, wasm.OpcodeAtomicI64Rmw32XorU:\n\t\t\t\trmwOp = ssa.AtomicRmwOpXor\n\t\t\t\tswitch atomicOp {\n\t\t\t\tcase wasm.OpcodeAtomicI64RmwXor:\n\t\t\t\t\tsize = 8\n\t\t\t\tcase wasm.OpcodeAtomicI32RmwXor, wasm.OpcodeAtomicI64Rmw32XorU:\n\t\t\t\t\tsize = 4\n\t\t\t\tcase wasm.OpcodeAtomicI32Rmw16XorU, wasm.OpcodeAtomicI64Rmw16XorU:\n\t\t\t\t\tsize = 2\n\t\t\t\tcase wasm.OpcodeAtomicI32Rmw8XorU, wasm.OpcodeAtomicI64Rmw8XorU:\n\t\t\t\t\tsize = 1\n\t\t\t\t}\n\t\t\tcase wasm.OpcodeAtomicI32RmwXchg, wasm.OpcodeAtomicI64RmwXchg, wasm.OpcodeAtomicI32Rmw8XchgU, wasm.OpcodeAtomicI32Rmw16XchgU, wasm.OpcodeAtomicI64Rmw8XchgU, wasm.OpcodeAtomicI64Rmw16XchgU, wasm.OpcodeAtomicI64Rmw32XchgU:\n\t\t\t\trmwOp = ssa.AtomicRmwOpXchg\n\t\t\t\tswitch atomicOp {\n\t\t\t\tcase wasm.OpcodeAtomicI64RmwXchg:\n\t\t\t\t\tsize = 8\n\t\t\t\tcase wasm.OpcodeAtomicI32RmwXchg, wasm.OpcodeAtomicI64Rmw32XchgU:\n\t\t\t\t\tsize = 4\n\t\t\t\tcase wasm.OpcodeAtomicI32Rmw16XchgU, wasm.OpcodeAtomicI64Rmw16XchgU:\n\t\t\t\t\tsize = 2\n\t\t\t\tcase wasm.OpcodeAtomicI32Rmw8XchgU, wasm.OpcodeAtomicI64Rmw8XchgU:\n\t\t\t\t\tsize = 1\n\t\t\t\t}\n\t\t\t}\n\n\t\t\taddr := c.atomicMemOpSetup(baseAddr, uint64(offset), size)\n\t\t\tres := builder.AllocateInstruction().AsAtomicRmw(rmwOp, addr, val, size).Insert(builder).Return()\n\t\t\tstate.push(res)\n\t\tcase wasm.OpcodeAtomicI32RmwCmpxchg, wasm.OpcodeAtomicI64RmwCmpxchg, wasm.OpcodeAtomicI32Rmw8CmpxchgU, wasm.OpcodeAtomicI32Rmw16CmpxchgU, wasm.OpcodeAtomicI64Rmw8CmpxchgU, wasm.OpcodeAtomicI64Rmw16CmpxchgU, wasm.OpcodeAtomicI64Rmw32CmpxchgU:\n\t\t\t_, offset := c.readMemArg()\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\trepl := state.pop()\n\t\t\texp := state.pop()\n\t\t\tbaseAddr := state.pop()\n\n\t\t\tvar size uint64\n\t\t\tswitch atomicOp {\n\t\t\tcase wasm.OpcodeAtomicI64RmwCmpxchg:\n\t\t\t\tsize = 8\n\t\t\tcase wasm.OpcodeAtomicI32RmwCmpxchg, wasm.OpcodeAtomicI64Rmw32CmpxchgU:\n\t\t\t\tsize = 4\n\t\t\tcase wasm.OpcodeAtomicI32Rmw16CmpxchgU, wasm.OpcodeAtomicI64Rmw16CmpxchgU:\n\t\t\t\tsize = 2\n\t\t\tcase wasm.OpcodeAtomicI32Rmw8CmpxchgU, wasm.OpcodeAtomicI64Rmw8CmpxchgU:\n\t\t\t\tsize = 1\n\t\t\t}\n\t\t\taddr := c.atomicMemOpSetup(baseAddr, uint64(offset), size)\n\t\t\tres := builder.AllocateInstruction().AsAtomicCas(addr, exp, repl, size).Insert(builder).Return()\n\t\t\tstate.push(res)\n\t\tcase wasm.OpcodeAtomicFence:\n\t\t\torder := c.readByte()\n\t\t\tif state.unreachable {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tif c.needMemory {\n\t\t\t\tbuilder.AllocateInstruction().AsFence(order).Insert(builder)\n\t\t\t}\n\t\tdefault:\n\t\t\tpanic(\"TODO: unsupported atomic instruction: \" + wasm.AtomicInstructionName(atomicOp))\n\t\t}\n\tcase wasm.OpcodeRefFunc:\n\t\tfuncIndex := c.readI32u()\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\n\t\tc.storeCallerModuleContext()\n\n\t\tfuncIndexVal := builder.AllocateInstruction().AsIconst32(funcIndex).Insert(builder).Return()\n\n\t\trefFuncPtr := builder.AllocateInstruction().\n\t\t\tAsLoad(c.execCtxPtrValue,\n\t\t\t\twazevoapi.ExecutionContextOffsetRefFuncTrampolineAddress.U32(),\n\t\t\t\tssa.TypeI64,\n\t\t\t).Insert(builder).Return()\n\n\t\targs := c.allocateVarLengthValues(2, c.execCtxPtrValue, funcIndexVal)\n\t\trefFuncRet := builder.\n\t\t\tAllocateInstruction().\n\t\t\tAsCallIndirect(refFuncPtr, &c.refFuncSig, args).\n\t\t\tInsert(builder).Return()\n\t\tstate.push(refFuncRet)\n\n\tcase wasm.OpcodeRefNull:\n\t\tc.loweringState.pc++ // skips the reference type as we treat both of them as i64(0).\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\tret := builder.AllocateInstruction().AsIconst64(0).Insert(builder).Return()\n\t\tstate.push(ret)\n\tcase wasm.OpcodeRefIsNull:\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\tr := state.pop()\n\t\tzero := builder.AllocateInstruction().AsIconst64(0).Insert(builder)\n\t\ticmp := builder.AllocateInstruction().\n\t\t\tAsIcmp(r, zero.Return(), ssa.IntegerCmpCondEqual).\n\t\t\tInsert(builder).\n\t\t\tReturn()\n\t\tstate.push(icmp)\n\tcase wasm.OpcodeTableSet:\n\t\ttableIndex := c.readI32u()\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\tr := state.pop()\n\t\ttargetOffsetInTable := state.pop()\n\n\t\telementAddr := c.lowerAccessTableWithBoundsCheck(tableIndex, targetOffsetInTable)\n\t\tbuilder.AllocateInstruction().AsStore(ssa.OpcodeStore, r, elementAddr, 0).Insert(builder)\n\n\tcase wasm.OpcodeTableGet:\n\t\ttableIndex := c.readI32u()\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\ttargetOffsetInTable := state.pop()\n\t\telementAddr := c.lowerAccessTableWithBoundsCheck(tableIndex, targetOffsetInTable)\n\t\tloaded := builder.AllocateInstruction().AsLoad(elementAddr, 0, ssa.TypeI64).Insert(builder).Return()\n\t\tstate.push(loaded)\n\n\tcase wasm.OpcodeTailCallReturnCallIndirect:\n\t\ttypeIndex := c.readI32u()\n\t\ttableIndex := c.readI32u()\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\t_, _ = typeIndex, tableIndex\n\t\tc.lowerTailCallReturnCallIndirect(typeIndex, tableIndex)\n\t\tstate.unreachable = true\n\n\tcase wasm.OpcodeTailCallReturnCall:\n\t\tfnIndex := c.readI32u()\n\t\tif state.unreachable {\n\t\t\tbreak\n\t\t}\n\t\tc.lowerTailCallReturnCall(fnIndex)\n\t\tstate.unreachable = true\n\n\tdefault:\n\t\tpanic(\"TODO: unsupported in wazevo yet: \" + wasm.InstructionName(op))\n\t}\n\n\tif wazevoapi.FrontEndLoggingEnabled {\n\t\tfmt.Println(\"--------- Translated \" + wasm.InstructionName(op) + \" --------\")\n\t\tfmt.Println(\"state: \" + c.loweringState.String())\n\t\tfmt.Println(c.formatBuilder())\n\t\tfmt.Println(\"--------------------------\")\n\t}\n\tc.loweringState.pc++\n}\n\nfunc (c *Compiler) lowerReturn(builder ssa.Builder) {\n\tresults := c.nPeekDup(c.results())\n\tinstr := builder.AllocateInstruction()\n\n\tinstr.AsReturn(results)\n\tbuilder.InsertInstruction(instr)\n}\n\nfunc (c *Compiler) lowerExtMul(v1, v2 ssa.Value, from, to ssa.VecLane, signed, low bool) ssa.Value {\n\t// TODO: The sequence `Widen; Widen; VIMul` can be substituted for a single instruction on some ISAs.\n\tbuilder := c.ssaBuilder\n\n\tv1lo := builder.AllocateInstruction().AsWiden(v1, from, signed, low).Insert(builder).Return()\n\tv2lo := builder.AllocateInstruction().AsWiden(v2, from, signed, low).Insert(builder).Return()\n\n\treturn builder.AllocateInstruction().AsVImul(v1lo, v2lo, to).Insert(builder).Return()\n}\n\nconst (\n\ttableInstanceBaseAddressOffset = 0\n\ttableInstanceLenOffset         = tableInstanceBaseAddressOffset + 8\n)\n\nfunc (c *Compiler) lowerAccessTableWithBoundsCheck(tableIndex uint32, elementOffsetInTable ssa.Value) (elementAddress ssa.Value) {\n\tbuilder := c.ssaBuilder\n\n\t// Load the table.\n\tloadTableInstancePtr := builder.AllocateInstruction()\n\tloadTableInstancePtr.AsLoad(c.moduleCtxPtrValue, c.offset.TableOffset(int(tableIndex)).U32(), ssa.TypeI64)\n\tbuilder.InsertInstruction(loadTableInstancePtr)\n\ttableInstancePtr := loadTableInstancePtr.Return()\n\n\t// Load the table's length.\n\tloadTableLen := builder.AllocateInstruction()\n\tloadTableLen.AsLoad(tableInstancePtr, tableInstanceLenOffset, ssa.TypeI32)\n\tbuilder.InsertInstruction(loadTableLen)\n\ttableLen := loadTableLen.Return()\n\n\t// Compare the length and the target, and trap if out of bounds.\n\tcheckOOB := builder.AllocateInstruction()\n\tcheckOOB.AsIcmp(elementOffsetInTable, tableLen, ssa.IntegerCmpCondUnsignedGreaterThanOrEqual)\n\tbuilder.InsertInstruction(checkOOB)\n\texitIfOOB := builder.AllocateInstruction()\n\texitIfOOB.AsExitIfTrueWithCode(c.execCtxPtrValue, checkOOB.Return(), wazevoapi.ExitCodeTableOutOfBounds)\n\tbuilder.InsertInstruction(exitIfOOB)\n\n\t// Get the base address of wasm.TableInstance.References.\n\tloadTableBaseAddress := builder.AllocateInstruction()\n\tloadTableBaseAddress.AsLoad(tableInstancePtr, tableInstanceBaseAddressOffset, ssa.TypeI64)\n\tbuilder.InsertInstruction(loadTableBaseAddress)\n\ttableBase := loadTableBaseAddress.Return()\n\n\t// Calculate the address of the target function. First we need to multiply targetOffsetInTable by 8 (pointer size).\n\tmultiplyBy8 := builder.AllocateInstruction()\n\tthree := builder.AllocateInstruction()\n\tthree.AsIconst64(3)\n\tbuilder.InsertInstruction(three)\n\tmultiplyBy8.AsIshl(elementOffsetInTable, three.Return())\n\tbuilder.InsertInstruction(multiplyBy8)\n\ttargetOffsetInTableMultipliedBy8 := multiplyBy8.Return()\n\n\t// Then add the multiplied value to the base which results in the address of the target function (*wazevo.functionInstance)\n\tcalcElementAddressInTable := builder.AllocateInstruction()\n\tcalcElementAddressInTable.AsIadd(tableBase, targetOffsetInTableMultipliedBy8)\n\tbuilder.InsertInstruction(calcElementAddressInTable)\n\treturn calcElementAddressInTable.Return()\n}\n\nfunc (c *Compiler) prepareCall(fnIndex uint32) (isIndirect bool, sig *ssa.Signature, args ssa.Values, funcRefOrPtrValue uint64) {\n\tbuilder := c.ssaBuilder\n\tstate := c.state()\n\tvar typIndex wasm.Index\n\tif fnIndex < c.m.ImportFunctionCount {\n\t\t// Before transfer the control to the callee, we have to store the current module's moduleContextPtr\n\t\t// into execContext.callerModuleContextPtr in case when the callee is a Go function.\n\t\tc.storeCallerModuleContext()\n\t\tvar fi int\n\t\tfor i := range c.m.ImportSection {\n\t\t\timp := &c.m.ImportSection[i]\n\t\t\tif imp.Type == wasm.ExternTypeFunc {\n\t\t\t\tif fi == int(fnIndex) {\n\t\t\t\t\ttypIndex = imp.DescFunc\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tfi++\n\t\t\t}\n\t\t}\n\t} else {\n\t\ttypIndex = c.m.FunctionSection[fnIndex-c.m.ImportFunctionCount]\n\t}\n\ttyp := &c.m.TypeSection[typIndex]\n\n\targN := len(typ.Params)\n\ttail := len(state.values) - argN\n\tvs := state.values[tail:]\n\tstate.values = state.values[:tail]\n\targs = c.allocateVarLengthValues(2+len(vs), c.execCtxPtrValue)\n\n\tsig = c.signatures[typ]\n\tif fnIndex >= c.m.ImportFunctionCount {\n\t\targs = args.Append(builder.VarLengthPool(), c.moduleCtxPtrValue) // This case the callee module is itself.\n\t\targs = args.Append(builder.VarLengthPool(), vs...)\n\t\treturn false, sig, args, uint64(FunctionIndexToFuncRef(fnIndex))\n\t} else {\n\t\t// This case we have to read the address of the imported function from the module context.\n\t\tmoduleCtx := c.moduleCtxPtrValue\n\t\tloadFuncPtr, loadModuleCtxPtr := builder.AllocateInstruction(), builder.AllocateInstruction()\n\t\tfuncPtrOffset, moduleCtxPtrOffset, _ := c.offset.ImportedFunctionOffset(fnIndex)\n\t\tloadFuncPtr.AsLoad(moduleCtx, funcPtrOffset.U32(), ssa.TypeI64)\n\t\tloadModuleCtxPtr.AsLoad(moduleCtx, moduleCtxPtrOffset.U32(), ssa.TypeI64)\n\t\tbuilder.InsertInstruction(loadFuncPtr)\n\t\tbuilder.InsertInstruction(loadModuleCtxPtr)\n\n\t\targs = args.Append(builder.VarLengthPool(), loadModuleCtxPtr.Return())\n\t\targs = args.Append(builder.VarLengthPool(), vs...)\n\n\t\treturn true, sig, args, uint64(loadFuncPtr.Return())\n\t}\n}\n\nfunc (c *Compiler) lowerCall(fnIndex uint32) {\n\tbuilder := c.ssaBuilder\n\tstate := c.state()\n\tisIndirect, sig, args, funcRefOrPtrValue := c.prepareCall(fnIndex)\n\n\tcall := builder.AllocateInstruction()\n\tif isIndirect {\n\t\tcall.AsCallIndirect(ssa.Value(funcRefOrPtrValue), sig, args)\n\t} else {\n\t\tcall.AsCall(ssa.FuncRef(funcRefOrPtrValue), sig, args)\n\t}\n\tbuilder.InsertInstruction(call)\n\n\tfirst, rest := call.Returns()\n\tif first.Valid() {\n\t\tstate.push(first)\n\t}\n\tfor _, v := range rest {\n\t\tstate.push(v)\n\t}\n\n\tc.reloadAfterCall()\n}\n\nfunc (c *Compiler) prepareCallIndirect(typeIndex, tableIndex uint32) (ssa.Value, *wasm.FunctionType, ssa.Values) {\n\tbuilder := c.ssaBuilder\n\tstate := c.state()\n\n\telementOffsetInTable := state.pop()\n\tfunctionInstancePtrAddress := c.lowerAccessTableWithBoundsCheck(tableIndex, elementOffsetInTable)\n\tloadFunctionInstancePtr := builder.AllocateInstruction()\n\tloadFunctionInstancePtr.AsLoad(functionInstancePtrAddress, 0, ssa.TypeI64)\n\tbuilder.InsertInstruction(loadFunctionInstancePtr)\n\tfunctionInstancePtr := loadFunctionInstancePtr.Return()\n\n\t// Check if it is not the null pointer.\n\tzero := builder.AllocateInstruction()\n\tzero.AsIconst64(0)\n\tbuilder.InsertInstruction(zero)\n\tcheckNull := builder.AllocateInstruction()\n\tcheckNull.AsIcmp(functionInstancePtr, zero.Return(), ssa.IntegerCmpCondEqual)\n\tbuilder.InsertInstruction(checkNull)\n\texitIfNull := builder.AllocateInstruction()\n\texitIfNull.AsExitIfTrueWithCode(c.execCtxPtrValue, checkNull.Return(), wazevoapi.ExitCodeIndirectCallNullPointer)\n\tbuilder.InsertInstruction(exitIfNull)\n\n\t// We need to do the type check. First, load the target function instance's typeID.\n\tloadTypeID := builder.AllocateInstruction()\n\tloadTypeID.AsLoad(functionInstancePtr, wazevoapi.FunctionInstanceTypeIDOffset, ssa.TypeI32)\n\tbuilder.InsertInstruction(loadTypeID)\n\tactualTypeID := loadTypeID.Return()\n\n\t// Next, we load the expected TypeID:\n\tloadTypeIDsBegin := builder.AllocateInstruction()\n\tloadTypeIDsBegin.AsLoad(c.moduleCtxPtrValue, c.offset.TypeIDs1stElement.U32(), ssa.TypeI64)\n\tbuilder.InsertInstruction(loadTypeIDsBegin)\n\ttypeIDsBegin := loadTypeIDsBegin.Return()\n\n\tloadExpectedTypeID := builder.AllocateInstruction()\n\tloadExpectedTypeID.AsLoad(typeIDsBegin, uint32(typeIndex)*4 /* size of wasm.FunctionTypeID */, ssa.TypeI32)\n\tbuilder.InsertInstruction(loadExpectedTypeID)\n\texpectedTypeID := loadExpectedTypeID.Return()\n\n\t// Check if the type ID matches.\n\tcheckTypeID := builder.AllocateInstruction()\n\tcheckTypeID.AsIcmp(actualTypeID, expectedTypeID, ssa.IntegerCmpCondNotEqual)\n\tbuilder.InsertInstruction(checkTypeID)\n\texitIfNotMatch := builder.AllocateInstruction()\n\texitIfNotMatch.AsExitIfTrueWithCode(c.execCtxPtrValue, checkTypeID.Return(), wazevoapi.ExitCodeIndirectCallTypeMismatch)\n\tbuilder.InsertInstruction(exitIfNotMatch)\n\n\t// Now ready to call the function. Load the executable and moduleContextOpaquePtr from the function instance.\n\tloadExecutablePtr := builder.AllocateInstruction()\n\tloadExecutablePtr.AsLoad(functionInstancePtr, wazevoapi.FunctionInstanceExecutableOffset, ssa.TypeI64)\n\tbuilder.InsertInstruction(loadExecutablePtr)\n\texecutablePtr := loadExecutablePtr.Return()\n\tloadModuleContextOpaquePtr := builder.AllocateInstruction()\n\tloadModuleContextOpaquePtr.AsLoad(functionInstancePtr, wazevoapi.FunctionInstanceModuleContextOpaquePtrOffset, ssa.TypeI64)\n\tbuilder.InsertInstruction(loadModuleContextOpaquePtr)\n\tmoduleContextOpaquePtr := loadModuleContextOpaquePtr.Return()\n\n\ttyp := &c.m.TypeSection[typeIndex]\n\ttail := len(state.values) - len(typ.Params)\n\tvs := state.values[tail:]\n\tstate.values = state.values[:tail]\n\targs := c.allocateVarLengthValues(2+len(vs), c.execCtxPtrValue, moduleContextOpaquePtr)\n\targs = args.Append(builder.VarLengthPool(), vs...)\n\n\t// Before transfer the control to the callee, we have to store the current module's moduleContextPtr\n\t// into execContext.callerModuleContextPtr in case when the callee is a Go function.\n\tc.storeCallerModuleContext()\n\n\treturn executablePtr, typ, args\n}\n\nfunc (c *Compiler) lowerCallIndirect(typeIndex, tableIndex uint32) {\n\tbuilder := c.ssaBuilder\n\tstate := c.state()\n\texecutablePtr, typ, args := c.prepareCallIndirect(typeIndex, tableIndex)\n\n\tcall := builder.AllocateInstruction()\n\tcall.AsCallIndirect(executablePtr, c.signatures[typ], args)\n\tbuilder.InsertInstruction(call)\n\n\tfirst, rest := call.Returns()\n\tif first.Valid() {\n\t\tstate.push(first)\n\t}\n\tfor _, v := range rest {\n\t\tstate.push(v)\n\t}\n\n\tc.reloadAfterCall()\n}\n\nfunc (c *Compiler) lowerTailCallReturnCall(fnIndex uint32) {\n\tisIndirect, sig, args, funcRefOrPtrValue := c.prepareCall(fnIndex)\n\tbuilder := c.ssaBuilder\n\tstate := c.state()\n\n\tcall := builder.AllocateInstruction()\n\tif isIndirect {\n\t\tcall.AsTailCallReturnCallIndirect(ssa.Value(funcRefOrPtrValue), sig, args)\n\t} else {\n\t\tcall.AsTailCallReturnCall(ssa.FuncRef(funcRefOrPtrValue), sig, args)\n\t}\n\tbuilder.InsertInstruction(call)\n\n\t// In a proper tail call, the following code is unreachable since execution\n\t// transfers to the callee. However, sometimes the backend might need to fall back to\n\t// a regular call, so we include return handling and let the backend delete it\n\t// when redundant.\n\t// For details, see internal/engine/RATIONALE.md\n\tfirst, rest := call.Returns()\n\tif first.Valid() {\n\t\tstate.push(first)\n\t}\n\tfor _, v := range rest {\n\t\tstate.push(v)\n\t}\n\n\tc.reloadAfterCall()\n\tc.lowerReturn(builder)\n}\n\nfunc (c *Compiler) lowerTailCallReturnCallIndirect(typeIndex, tableIndex uint32) {\n\tbuilder := c.ssaBuilder\n\tstate := c.state()\n\texecutablePtr, typ, args := c.prepareCallIndirect(typeIndex, tableIndex)\n\n\tcall := builder.AllocateInstruction()\n\tcall.AsTailCallReturnCallIndirect(executablePtr, c.signatures[typ], args)\n\tbuilder.InsertInstruction(call)\n\n\t// In a proper tail call, the following code is unreachable since execution\n\t// transfers to the callee. However, sometimes the backend might need to fall back to\n\t// a regular call, so we include return handling and let the backend delete it\n\t// when redundant.\n\t// For details, see internal/engine/RATIONALE.md\n\tfirst, rest := call.Returns()\n\tif first.Valid() {\n\t\tstate.push(first)\n\t}\n\tfor _, v := range rest {\n\t\tstate.push(v)\n\t}\n\n\tc.reloadAfterCall()\n\tc.lowerReturn(builder)\n}\n\n// memOpSetup inserts the bounds check and calculates the address of the memory operation (loads/stores).\nfunc (c *Compiler) memOpSetup(baseAddr ssa.Value, constOffset, operationSizeInBytes uint64) (address ssa.Value) {\n\taddress = ssa.ValueInvalid\n\tbuilder := c.ssaBuilder\n\n\tbaseAddrID := baseAddr.ID()\n\tceil := constOffset + operationSizeInBytes\n\tif known := c.getKnownSafeBound(baseAddrID); known.valid() {\n\t\t// We reuse the calculated absolute address even if the bound is not known to be safe.\n\t\taddress = known.absoluteAddr\n\t\tif ceil <= known.bound {\n\t\t\tif !address.Valid() {\n\t\t\t\t// This means that, the bound is known to be safe, but the memory base might have changed.\n\t\t\t\t// So, we re-calculate the address.\n\t\t\t\tmemBase := c.getMemoryBaseValue(false)\n\t\t\t\textBaseAddr := builder.AllocateInstruction().\n\t\t\t\t\tAsUExtend(baseAddr, 32, 64).\n\t\t\t\t\tInsert(builder).\n\t\t\t\t\tReturn()\n\t\t\t\taddress = builder.AllocateInstruction().\n\t\t\t\t\tAsIadd(memBase, extBaseAddr).Insert(builder).Return()\n\t\t\t\tknown.absoluteAddr = address // Update the absolute address for the subsequent memory access.\n\t\t\t}\n\t\t\treturn\n\t\t}\n\t}\n\n\tceilConst := builder.AllocateInstruction()\n\tceilConst.AsIconst64(ceil)\n\tbuilder.InsertInstruction(ceilConst)\n\n\t// We calculate the offset in 64-bit space.\n\textBaseAddr := builder.AllocateInstruction().\n\t\tAsUExtend(baseAddr, 32, 64).\n\t\tInsert(builder).\n\t\tReturn()\n\n\t// Note: memLen is already zero extended to 64-bit space at the load time.\n\tmemLen := c.getMemoryLenValue(false)\n\n\t// baseAddrPlusCeil = baseAddr + ceil\n\tbaseAddrPlusCeil := builder.AllocateInstruction()\n\tbaseAddrPlusCeil.AsIadd(extBaseAddr, ceilConst.Return())\n\tbuilder.InsertInstruction(baseAddrPlusCeil)\n\n\t// Check for out of bounds memory access: `memLen >= baseAddrPlusCeil`.\n\tcmp := builder.AllocateInstruction()\n\tcmp.AsIcmp(memLen, baseAddrPlusCeil.Return(), ssa.IntegerCmpCondUnsignedLessThan)\n\tbuilder.InsertInstruction(cmp)\n\texitIfNZ := builder.AllocateInstruction()\n\texitIfNZ.AsExitIfTrueWithCode(c.execCtxPtrValue, cmp.Return(), wazevoapi.ExitCodeMemoryOutOfBounds)\n\tbuilder.InsertInstruction(exitIfNZ)\n\n\t// Load the value from memBase + extBaseAddr.\n\tif address == ssa.ValueInvalid { // Reuse the value if the memBase is already calculated at this point.\n\t\tmemBase := c.getMemoryBaseValue(false)\n\t\taddress = builder.AllocateInstruction().\n\t\t\tAsIadd(memBase, extBaseAddr).Insert(builder).Return()\n\t}\n\n\t// Record the bound ceil for this baseAddr is known to be safe for the subsequent memory access in the same block.\n\tc.recordKnownSafeBound(baseAddrID, ceil, address)\n\treturn\n}\n\n// atomicMemOpSetup inserts the bounds check and calculates the address of the memory operation (loads/stores), including\n// the constant offset and performs an alignment check on the final address.\nfunc (c *Compiler) atomicMemOpSetup(baseAddr ssa.Value, constOffset, operationSizeInBytes uint64) (address ssa.Value) {\n\tbuilder := c.ssaBuilder\n\n\taddrWithoutOffset := c.memOpSetup(baseAddr, constOffset, operationSizeInBytes)\n\tvar addr ssa.Value\n\tif constOffset == 0 {\n\t\taddr = addrWithoutOffset\n\t} else {\n\t\toffset := builder.AllocateInstruction().AsIconst64(constOffset).Insert(builder).Return()\n\t\taddr = builder.AllocateInstruction().AsIadd(addrWithoutOffset, offset).Insert(builder).Return()\n\t}\n\n\tc.memAlignmentCheck(addr, operationSizeInBytes)\n\n\treturn addr\n}\n\nfunc (c *Compiler) memAlignmentCheck(addr ssa.Value, operationSizeInBytes uint64) {\n\tif operationSizeInBytes == 1 {\n\t\treturn // No alignment restrictions when accessing a byte\n\t}\n\tvar checkBits uint64\n\tswitch operationSizeInBytes {\n\tcase 2:\n\t\tcheckBits = 0b1\n\tcase 4:\n\t\tcheckBits = 0b11\n\tcase 8:\n\t\tcheckBits = 0b111\n\t}\n\n\tbuilder := c.ssaBuilder\n\n\tmask := builder.AllocateInstruction().AsIconst64(checkBits).Insert(builder).Return()\n\tmasked := builder.AllocateInstruction().AsBand(addr, mask).Insert(builder).Return()\n\tzero := builder.AllocateInstruction().AsIconst64(0).Insert(builder).Return()\n\tcmp := builder.AllocateInstruction().AsIcmp(masked, zero, ssa.IntegerCmpCondNotEqual).Insert(builder).Return()\n\tbuilder.AllocateInstruction().AsExitIfTrueWithCode(c.execCtxPtrValue, cmp, wazevoapi.ExitCodeUnalignedAtomic).Insert(builder)\n}\n\nfunc (c *Compiler) callMemmove(dst, src, size ssa.Value) {\n\targs := c.allocateVarLengthValues(3, dst, src, size)\n\tif size.Type() != ssa.TypeI64 {\n\t\tpanic(\"TODO: memmove size must be i64\")\n\t}\n\n\tbuilder := c.ssaBuilder\n\tmemmovePtr := builder.AllocateInstruction().\n\t\tAsLoad(c.execCtxPtrValue,\n\t\t\twazevoapi.ExecutionContextOffsetMemmoveAddress.U32(),\n\t\t\tssa.TypeI64,\n\t\t).Insert(builder).Return()\n\tbuilder.AllocateInstruction().AsCallGoRuntimeMemmove(memmovePtr, &c.memmoveSig, args).Insert(builder)\n}\n\nfunc (c *Compiler) reloadAfterCall() {\n\t// Note that when these are not used in the following instructions, they will be optimized out.\n\t// So in any ways, we define them!\n\n\t// After calling any function, memory buffer might have changed. So we need to re-define the variable.\n\t// However, if the memory is shared, we don't need to reload the memory base and length as the base will never change.\n\tif c.needMemory && !c.memoryShared {\n\t\tc.reloadMemoryBaseLen()\n\t}\n\n\t// Also, any mutable Global can change.\n\tfor _, index := range c.mutableGlobalVariablesIndexes {\n\t\t_ = c.getWasmGlobalValue(index, true)\n\t}\n}\n\nfunc (c *Compiler) reloadMemoryBaseLen() {\n\t_ = c.getMemoryBaseValue(true)\n\t_ = c.getMemoryLenValue(true)\n\n\t// This function being called means that the memory base might have changed.\n\t// Therefore, we need to clear the absolute addresses recorded in the known safe bounds\n\t// because we cache the absolute address of the memory access per each base offset.\n\tc.resetAbsoluteAddressInSafeBounds()\n}\n\nfunc (c *Compiler) setWasmGlobalValue(index wasm.Index, v ssa.Value) {\n\tvariable := c.globalVariables[index]\n\topaqueOffset := c.offset.GlobalInstanceOffset(index)\n\n\tbuilder := c.ssaBuilder\n\tif index < c.m.ImportGlobalCount {\n\t\tloadGlobalInstPtr := builder.AllocateInstruction()\n\t\tloadGlobalInstPtr.AsLoad(c.moduleCtxPtrValue, uint32(opaqueOffset), ssa.TypeI64)\n\t\tbuilder.InsertInstruction(loadGlobalInstPtr)\n\n\t\tstore := builder.AllocateInstruction()\n\t\tstore.AsStore(ssa.OpcodeStore, v, loadGlobalInstPtr.Return(), uint32(0))\n\t\tbuilder.InsertInstruction(store)\n\n\t} else {\n\t\tstore := builder.AllocateInstruction()\n\t\tstore.AsStore(ssa.OpcodeStore, v, c.moduleCtxPtrValue, uint32(opaqueOffset))\n\t\tbuilder.InsertInstruction(store)\n\t}\n\n\t// The value has changed to `v`, so we record it.\n\tbuilder.DefineVariableInCurrentBB(variable, v)\n}\n\nfunc (c *Compiler) getWasmGlobalValue(index wasm.Index, forceLoad bool) ssa.Value {\n\tvariable := c.globalVariables[index]\n\ttyp := c.globalVariablesTypes[index]\n\topaqueOffset := c.offset.GlobalInstanceOffset(index)\n\n\tbuilder := c.ssaBuilder\n\tif !forceLoad {\n\t\tif v := builder.FindValueInLinearPath(variable); v.Valid() {\n\t\t\treturn v\n\t\t}\n\t}\n\n\tvar load *ssa.Instruction\n\tif index < c.m.ImportGlobalCount {\n\t\tloadGlobalInstPtr := builder.AllocateInstruction()\n\t\tloadGlobalInstPtr.AsLoad(c.moduleCtxPtrValue, uint32(opaqueOffset), ssa.TypeI64)\n\t\tbuilder.InsertInstruction(loadGlobalInstPtr)\n\t\tload = builder.AllocateInstruction().\n\t\t\tAsLoad(loadGlobalInstPtr.Return(), uint32(0), typ)\n\t} else {\n\t\tload = builder.AllocateInstruction().\n\t\t\tAsLoad(c.moduleCtxPtrValue, uint32(opaqueOffset), typ)\n\t}\n\n\tv := load.Insert(builder).Return()\n\tbuilder.DefineVariableInCurrentBB(variable, v)\n\treturn v\n}\n\nconst (\n\tmemoryInstanceBufOffset     = 0\n\tmemoryInstanceBufSizeOffset = memoryInstanceBufOffset + 8\n)\n\nfunc (c *Compiler) getMemoryBaseValue(forceReload bool) ssa.Value {\n\tbuilder := c.ssaBuilder\n\tvariable := c.memoryBaseVariable\n\tif !forceReload {\n\t\tif v := builder.FindValueInLinearPath(variable); v.Valid() {\n\t\t\treturn v\n\t\t}\n\t}\n\n\tvar ret ssa.Value\n\tif c.offset.LocalMemoryBegin < 0 {\n\t\tloadMemInstPtr := builder.AllocateInstruction()\n\t\tloadMemInstPtr.AsLoad(c.moduleCtxPtrValue, c.offset.ImportedMemoryBegin.U32(), ssa.TypeI64)\n\t\tbuilder.InsertInstruction(loadMemInstPtr)\n\t\tmemInstPtr := loadMemInstPtr.Return()\n\n\t\tloadBufPtr := builder.AllocateInstruction()\n\t\tloadBufPtr.AsLoad(memInstPtr, memoryInstanceBufOffset, ssa.TypeI64)\n\t\tbuilder.InsertInstruction(loadBufPtr)\n\t\tret = loadBufPtr.Return()\n\t} else {\n\t\tload := builder.AllocateInstruction()\n\t\tload.AsLoad(c.moduleCtxPtrValue, c.offset.LocalMemoryBase().U32(), ssa.TypeI64)\n\t\tbuilder.InsertInstruction(load)\n\t\tret = load.Return()\n\t}\n\n\tbuilder.DefineVariableInCurrentBB(variable, ret)\n\treturn ret\n}\n\nfunc (c *Compiler) getMemoryLenValue(forceReload bool) ssa.Value {\n\tvariable := c.memoryLenVariable\n\tbuilder := c.ssaBuilder\n\tif !forceReload && !c.memoryShared {\n\t\tif v := builder.FindValueInLinearPath(variable); v.Valid() {\n\t\t\treturn v\n\t\t}\n\t}\n\n\tvar ret ssa.Value\n\tif c.offset.LocalMemoryBegin < 0 {\n\t\tloadMemInstPtr := builder.AllocateInstruction()\n\t\tloadMemInstPtr.AsLoad(c.moduleCtxPtrValue, c.offset.ImportedMemoryBegin.U32(), ssa.TypeI64)\n\t\tbuilder.InsertInstruction(loadMemInstPtr)\n\t\tmemInstPtr := loadMemInstPtr.Return()\n\n\t\tloadBufSizePtr := builder.AllocateInstruction()\n\t\tif c.memoryShared {\n\t\t\tsizeOffset := builder.AllocateInstruction().AsIconst64(memoryInstanceBufSizeOffset).Insert(builder).Return()\n\t\t\taddr := builder.AllocateInstruction().AsIadd(memInstPtr, sizeOffset).Insert(builder).Return()\n\t\t\tloadBufSizePtr.AsAtomicLoad(addr, 8, ssa.TypeI64)\n\t\t} else {\n\t\t\tloadBufSizePtr.AsLoad(memInstPtr, memoryInstanceBufSizeOffset, ssa.TypeI64)\n\t\t}\n\t\tbuilder.InsertInstruction(loadBufSizePtr)\n\n\t\tret = loadBufSizePtr.Return()\n\t} else {\n\t\tload := builder.AllocateInstruction()\n\t\tif c.memoryShared {\n\t\t\tlenOffset := builder.AllocateInstruction().AsIconst64(c.offset.LocalMemoryLen().U64()).Insert(builder).Return()\n\t\t\taddr := builder.AllocateInstruction().AsIadd(c.moduleCtxPtrValue, lenOffset).Insert(builder).Return()\n\t\t\tload.AsAtomicLoad(addr, 8, ssa.TypeI64)\n\t\t} else {\n\t\t\tload.AsExtLoad(ssa.OpcodeUload32, c.moduleCtxPtrValue, c.offset.LocalMemoryLen().U32(), true)\n\t\t}\n\t\tbuilder.InsertInstruction(load)\n\t\tret = load.Return()\n\t}\n\n\tbuilder.DefineVariableInCurrentBB(variable, ret)\n\treturn ret\n}\n\nfunc (c *Compiler) insertIcmp(cond ssa.IntegerCmpCond) {\n\tstate, builder := c.state(), c.ssaBuilder\n\ty, x := state.pop(), state.pop()\n\tcmp := builder.AllocateInstruction()\n\tcmp.AsIcmp(x, y, cond)\n\tbuilder.InsertInstruction(cmp)\n\tvalue := cmp.Return()\n\tstate.push(value)\n}\n\nfunc (c *Compiler) insertFcmp(cond ssa.FloatCmpCond) {\n\tstate, builder := c.state(), c.ssaBuilder\n\ty, x := state.pop(), state.pop()\n\tcmp := builder.AllocateInstruction()\n\tcmp.AsFcmp(x, y, cond)\n\tbuilder.InsertInstruction(cmp)\n\tvalue := cmp.Return()\n\tstate.push(value)\n}\n\n// storeCallerModuleContext stores the current module's moduleContextPtr into execContext.callerModuleContextPtr.\nfunc (c *Compiler) storeCallerModuleContext() {\n\tbuilder := c.ssaBuilder\n\texecCtx := c.execCtxPtrValue\n\tstore := builder.AllocateInstruction()\n\tstore.AsStore(ssa.OpcodeStore,\n\t\tc.moduleCtxPtrValue, execCtx, wazevoapi.ExecutionContextOffsetCallerModuleContextPtr.U32())\n\tbuilder.InsertInstruction(store)\n}\n\nfunc (c *Compiler) readByte() byte {\n\tv := c.wasmFunctionBody[c.loweringState.pc+1]\n\tc.loweringState.pc++\n\treturn v\n}\n\nfunc (c *Compiler) readI32u() uint32 {\n\tv, n, err := leb128.LoadUint32(c.wasmFunctionBody[c.loweringState.pc+1:])\n\tif err != nil {\n\t\tpanic(err) // shouldn't be reached since compilation comes after validation.\n\t}\n\tc.loweringState.pc += int(n)\n\treturn v\n}\n\nfunc (c *Compiler) readI32s() int32 {\n\tv, n, err := leb128.LoadInt32(c.wasmFunctionBody[c.loweringState.pc+1:])\n\tif err != nil {\n\t\tpanic(err) // shouldn't be reached since compilation comes after validation.\n\t}\n\tc.loweringState.pc += int(n)\n\treturn v\n}\n\nfunc (c *Compiler) readI64s() int64 {\n\tv, n, err := leb128.LoadInt64(c.wasmFunctionBody[c.loweringState.pc+1:])\n\tif err != nil {\n\t\tpanic(err) // shouldn't be reached since compilation comes after validation.\n\t}\n\tc.loweringState.pc += int(n)\n\treturn v\n}\n\nfunc (c *Compiler) readF32() float32 {\n\tv := math.Float32frombits(binary.LittleEndian.Uint32(c.wasmFunctionBody[c.loweringState.pc+1:]))\n\tc.loweringState.pc += 4\n\treturn v\n}\n\nfunc (c *Compiler) readF64() float64 {\n\tv := math.Float64frombits(binary.LittleEndian.Uint64(c.wasmFunctionBody[c.loweringState.pc+1:]))\n\tc.loweringState.pc += 8\n\treturn v\n}\n\n// readBlockType reads the block type from the current position of the bytecode reader.\nfunc (c *Compiler) readBlockType() *wasm.FunctionType {\n\tstate := c.state()\n\n\tc.br.Reset(c.wasmFunctionBody[state.pc+1:])\n\tbt, num, err := wasm.DecodeBlockType(c.m.TypeSection, c.br, api.CoreFeaturesV2)\n\tif err != nil {\n\t\tpanic(err) // shouldn't be reached since compilation comes after validation.\n\t}\n\tstate.pc += int(num)\n\n\treturn bt\n}\n\nfunc (c *Compiler) readMemArg() (align, offset uint32) {\n\tstate := c.state()\n\n\talign, num, err := leb128.LoadUint32(c.wasmFunctionBody[state.pc+1:])\n\tif err != nil {\n\t\tpanic(fmt.Errorf(\"read memory align: %v\", err))\n\t}\n\n\tstate.pc += int(num)\n\toffset, num, err = leb128.LoadUint32(c.wasmFunctionBody[state.pc+1:])\n\tif err != nil {\n\t\tpanic(fmt.Errorf(\"read memory offset: %v\", err))\n\t}\n\n\tstate.pc += int(num)\n\treturn align, offset\n}\n\n// insertJumpToBlock inserts a jump instruction to the given block in the current block.\nfunc (c *Compiler) insertJumpToBlock(args ssa.Values, targetBlk ssa.BasicBlock) {\n\tif targetBlk.ReturnBlock() {\n\t\tif c.needListener {\n\t\t\tc.callListenerAfter()\n\t\t}\n\t}\n\n\tbuilder := c.ssaBuilder\n\tjmp := builder.AllocateInstruction()\n\tjmp.AsJump(args, targetBlk)\n\tbuilder.InsertInstruction(jmp)\n}\n\nfunc (c *Compiler) insertIntegerExtend(signed bool, from, to byte) {\n\tstate := c.state()\n\tbuilder := c.ssaBuilder\n\tv := state.pop()\n\textend := builder.AllocateInstruction()\n\tif signed {\n\t\textend.AsSExtend(v, from, to)\n\t} else {\n\t\textend.AsUExtend(v, from, to)\n\t}\n\tbuilder.InsertInstruction(extend)\n\tvalue := extend.Return()\n\tstate.push(value)\n}\n\nfunc (c *Compiler) switchTo(originalStackLen int, targetBlk ssa.BasicBlock) {\n\tif targetBlk.Preds() == 0 {\n\t\tc.loweringState.unreachable = true\n\t}\n\n\t// Now we should adjust the stack and start translating the continuation block.\n\tc.loweringState.values = c.loweringState.values[:originalStackLen]\n\n\tc.ssaBuilder.SetCurrentBlock(targetBlk)\n\n\t// At this point, blocks params consist only of the Wasm-level parameters,\n\t// (since it's added only when we are trying to resolve variable *inside* this block).\n\tfor i := 0; i < targetBlk.Params(); i++ {\n\t\tvalue := targetBlk.Param(i)\n\t\tc.loweringState.push(value)\n\t}\n}\n\n// results returns the number of results of the current function.\nfunc (c *Compiler) results() int {\n\treturn len(c.wasmFunctionTyp.Results)\n}\n\nfunc (c *Compiler) lowerBrTable(labels []uint32, index ssa.Value) {\n\tstate := c.state()\n\tbuilder := c.ssaBuilder\n\n\tf := state.ctrlPeekAt(int(labels[0]))\n\tvar numArgs int\n\tif f.isLoop() {\n\t\tnumArgs = len(f.blockType.Params)\n\t} else {\n\t\tnumArgs = len(f.blockType.Results)\n\t}\n\n\tvarPool := builder.VarLengthPool()\n\ttrampolineBlockIDs := varPool.Allocate(len(labels))\n\n\t// We need trampoline blocks since depending on the target block structure, we might end up inserting moves before jumps,\n\t// which cannot be done with br_table. Instead, we can do such per-block moves in the trampoline blocks.\n\t// At the linking phase (very end of the backend), we can remove the unnecessary jumps, and therefore no runtime overhead.\n\tcurrentBlk := builder.CurrentBlock()\n\tfor _, l := range labels {\n\t\t// Args are always on the top of the stack. Note that we should not share the args slice\n\t\t// among the jump instructions since the args are modified during passes (e.g. redundant phi elimination).\n\t\targs := c.nPeekDup(numArgs)\n\t\ttargetBlk, _ := state.brTargetArgNumFor(l)\n\t\ttrampoline := builder.AllocateBasicBlock()\n\t\tbuilder.SetCurrentBlock(trampoline)\n\t\tc.insertJumpToBlock(args, targetBlk)\n\t\ttrampolineBlockIDs = trampolineBlockIDs.Append(builder.VarLengthPool(), ssa.Value(trampoline.ID()))\n\t}\n\tbuilder.SetCurrentBlock(currentBlk)\n\n\t// If the target block has no arguments, we can just jump to the target block.\n\tbrTable := builder.AllocateInstruction()\n\tbrTable.AsBrTable(index, trampolineBlockIDs)\n\tbuilder.InsertInstruction(brTable)\n\n\tfor _, trampolineID := range trampolineBlockIDs.View() {\n\t\tbuilder.Seal(builder.BasicBlock(ssa.BasicBlockID(trampolineID)))\n\t}\n}\n\nfunc (l *loweringState) brTargetArgNumFor(labelIndex uint32) (targetBlk ssa.BasicBlock, argNum int) {\n\ttargetFrame := l.ctrlPeekAt(int(labelIndex))\n\tif targetFrame.isLoop() {\n\t\ttargetBlk, argNum = targetFrame.blk, len(targetFrame.blockType.Params)\n\t} else {\n\t\ttargetBlk, argNum = targetFrame.followingBlock, len(targetFrame.blockType.Results)\n\t}\n\treturn\n}\n\nfunc (c *Compiler) callListenerBefore() {\n\tc.storeCallerModuleContext()\n\n\tbuilder := c.ssaBuilder\n\tbeforeListeners1stElement := builder.AllocateInstruction().\n\t\tAsLoad(c.moduleCtxPtrValue,\n\t\t\tc.offset.BeforeListenerTrampolines1stElement.U32(),\n\t\t\tssa.TypeI64,\n\t\t).Insert(builder).Return()\n\n\tbeforeListenerPtr := builder.AllocateInstruction().\n\t\tAsLoad(beforeListeners1stElement, uint32(c.wasmFunctionTypeIndex)*8 /* 8 bytes per index */, ssa.TypeI64).Insert(builder).Return()\n\n\tentry := builder.EntryBlock()\n\tps := entry.Params()\n\n\targs := c.allocateVarLengthValues(ps, c.execCtxPtrValue,\n\t\tbuilder.AllocateInstruction().AsIconst32(c.wasmLocalFunctionIndex).Insert(builder).Return())\n\tfor i := 2; i < ps; i++ {\n\t\targs = args.Append(builder.VarLengthPool(), entry.Param(i))\n\t}\n\n\tbeforeSig := c.listenerSignatures[c.wasmFunctionTyp][0]\n\tbuilder.AllocateInstruction().\n\t\tAsCallIndirect(beforeListenerPtr, beforeSig, args).\n\t\tInsert(builder)\n}\n\nfunc (c *Compiler) callListenerAfter() {\n\tc.storeCallerModuleContext()\n\n\tbuilder := c.ssaBuilder\n\tafterListeners1stElement := builder.AllocateInstruction().\n\t\tAsLoad(c.moduleCtxPtrValue,\n\t\t\tc.offset.AfterListenerTrampolines1stElement.U32(),\n\t\t\tssa.TypeI64,\n\t\t).Insert(builder).Return()\n\n\tafterListenerPtr := builder.AllocateInstruction().\n\t\tAsLoad(afterListeners1stElement,\n\t\t\tuint32(c.wasmFunctionTypeIndex)*8 /* 8 bytes per index */, ssa.TypeI64).\n\t\tInsert(builder).\n\t\tReturn()\n\n\tafterSig := c.listenerSignatures[c.wasmFunctionTyp][1]\n\targs := c.allocateVarLengthValues(\n\t\tc.results()+2,\n\t\tc.execCtxPtrValue,\n\t\tbuilder.AllocateInstruction().AsIconst32(c.wasmLocalFunctionIndex).Insert(builder).Return(),\n\t)\n\n\tl := c.state()\n\ttail := len(l.values)\n\targs = args.Append(c.ssaBuilder.VarLengthPool(), l.values[tail-c.results():tail]...)\n\tbuilder.AllocateInstruction().\n\t\tAsCallIndirect(afterListenerPtr, afterSig, args).\n\t\tInsert(builder)\n}\n\nconst (\n\telementOrDataInstanceLenOffset = 8\n\telementOrDataInstanceSize      = 24\n)\n\n// dropInstance inserts instructions to drop the element/data instance specified by the given index.\nfunc (c *Compiler) dropDataOrElementInstance(index uint32, firstItemOffset wazevoapi.Offset) {\n\tbuilder := c.ssaBuilder\n\tinstPtr := c.dataOrElementInstanceAddr(index, firstItemOffset)\n\n\tzero := builder.AllocateInstruction().AsIconst64(0).Insert(builder).Return()\n\n\t// Clear the instance.\n\tbuilder.AllocateInstruction().AsStore(ssa.OpcodeStore, zero, instPtr, 0).Insert(builder)\n\tbuilder.AllocateInstruction().AsStore(ssa.OpcodeStore, zero, instPtr, elementOrDataInstanceLenOffset).Insert(builder)\n\tbuilder.AllocateInstruction().AsStore(ssa.OpcodeStore, zero, instPtr, elementOrDataInstanceLenOffset+8).Insert(builder)\n}\n\nfunc (c *Compiler) dataOrElementInstanceAddr(index uint32, firstItemOffset wazevoapi.Offset) ssa.Value {\n\tbuilder := c.ssaBuilder\n\n\t_1stItemPtr := builder.\n\t\tAllocateInstruction().\n\t\tAsLoad(c.moduleCtxPtrValue, firstItemOffset.U32(), ssa.TypeI64).\n\t\tInsert(builder).Return()\n\n\t// Each data/element instance is a slice, so we need to multiply index by 16 to get the offset of the target instance.\n\tindex = index * elementOrDataInstanceSize\n\tindexExt := builder.AllocateInstruction().AsIconst64(uint64(index)).Insert(builder).Return()\n\t// Then, add the offset to the address of the instance.\n\tinstPtr := builder.AllocateInstruction().AsIadd(_1stItemPtr, indexExt).Insert(builder).Return()\n\treturn instPtr\n}\n\nfunc (c *Compiler) boundsCheckInDataOrElementInstance(instPtr, offsetInInstance, copySize ssa.Value, exitCode wazevoapi.ExitCode) {\n\tbuilder := c.ssaBuilder\n\tdataInstLen := builder.AllocateInstruction().\n\t\tAsLoad(instPtr, elementOrDataInstanceLenOffset, ssa.TypeI64).\n\t\tInsert(builder).Return()\n\tceil := builder.AllocateInstruction().AsIadd(offsetInInstance, copySize).Insert(builder).Return()\n\tcmp := builder.AllocateInstruction().\n\t\tAsIcmp(dataInstLen, ceil, ssa.IntegerCmpCondUnsignedLessThan).\n\t\tInsert(builder).\n\t\tReturn()\n\tbuilder.AllocateInstruction().\n\t\tAsExitIfTrueWithCode(c.execCtxPtrValue, cmp, exitCode).\n\t\tInsert(builder)\n}\n\nfunc (c *Compiler) boundsCheckInTable(tableIndex uint32, offset, size ssa.Value) (tableInstancePtr ssa.Value) {\n\tbuilder := c.ssaBuilder\n\tdstCeil := builder.AllocateInstruction().AsIadd(offset, size).Insert(builder).Return()\n\n\t// Load the table.\n\ttableInstancePtr = builder.AllocateInstruction().\n\t\tAsLoad(c.moduleCtxPtrValue, c.offset.TableOffset(int(tableIndex)).U32(), ssa.TypeI64).\n\t\tInsert(builder).Return()\n\n\t// Load the table's length.\n\ttableLen := builder.AllocateInstruction().\n\t\tAsLoad(tableInstancePtr, tableInstanceLenOffset, ssa.TypeI32).Insert(builder).Return()\n\ttableLenExt := builder.AllocateInstruction().AsUExtend(tableLen, 32, 64).Insert(builder).Return()\n\n\t// Compare the length and the target, and trap if out of bounds.\n\tcheckOOB := builder.AllocateInstruction()\n\tcheckOOB.AsIcmp(tableLenExt, dstCeil, ssa.IntegerCmpCondUnsignedLessThan)\n\tbuilder.InsertInstruction(checkOOB)\n\texitIfOOB := builder.AllocateInstruction()\n\texitIfOOB.AsExitIfTrueWithCode(c.execCtxPtrValue, checkOOB.Return(), wazevoapi.ExitCodeTableOutOfBounds)\n\tbuilder.InsertInstruction(exitIfOOB)\n\treturn\n}\n\nfunc (c *Compiler) loadTableBaseAddr(tableInstancePtr ssa.Value) ssa.Value {\n\tbuilder := c.ssaBuilder\n\tloadTableBaseAddress := builder.\n\t\tAllocateInstruction().\n\t\tAsLoad(tableInstancePtr, tableInstanceBaseAddressOffset, ssa.TypeI64).\n\t\tInsert(builder)\n\treturn loadTableBaseAddress.Return()\n}\n\nfunc (c *Compiler) boundsCheckInMemory(memLen, offset, size ssa.Value) {\n\tbuilder := c.ssaBuilder\n\tceil := builder.AllocateInstruction().AsIadd(offset, size).Insert(builder).Return()\n\tcmp := builder.AllocateInstruction().\n\t\tAsIcmp(memLen, ceil, ssa.IntegerCmpCondUnsignedLessThan).\n\t\tInsert(builder).\n\t\tReturn()\n\tbuilder.AllocateInstruction().\n\t\tAsExitIfTrueWithCode(c.execCtxPtrValue, cmp, wazevoapi.ExitCodeMemoryOutOfBounds).\n\t\tInsert(builder)\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/frontend/misc.go",
    "content": "package frontend\n\nimport (\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/ssa\"\n\t\"github.com/tetratelabs/wazero/internal/wasm\"\n)\n\nfunc FunctionIndexToFuncRef(idx wasm.Index) ssa.FuncRef {\n\treturn ssa.FuncRef(idx)\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/frontend/sort_id.go",
    "content": "package frontend\n\nimport (\n\t\"slices\"\n\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/ssa\"\n)\n\nfunc sortSSAValueIDs(IDs []ssa.ValueID) {\n\tslices.SortFunc(IDs, func(i, j ssa.ValueID) int {\n\t\treturn int(i) - int(j)\n\t})\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/hostmodule.go",
    "content": "package wazevo\n\nimport (\n\t\"encoding/binary\"\n\t\"reflect\"\n\t\"unsafe\"\n\n\t\"github.com/tetratelabs/wazero/experimental\"\n\t\"github.com/tetratelabs/wazero/internal/wasm\"\n)\n\nfunc buildHostModuleOpaque(m *wasm.Module, listeners []experimental.FunctionListener) moduleContextOpaque {\n\tsize := len(m.CodeSection)*16 + 32\n\tret := newAlignedOpaque(size)\n\n\tbinary.LittleEndian.PutUint64(ret[0:], uint64(uintptr(unsafe.Pointer(m))))\n\n\tif len(listeners) > 0 {\n\t\t//nolint:staticcheck\n\t\tsliceHeader := (*reflect.SliceHeader)(unsafe.Pointer(&listeners))\n\t\tbinary.LittleEndian.PutUint64(ret[8:], uint64(sliceHeader.Data))\n\t\tbinary.LittleEndian.PutUint64(ret[16:], uint64(sliceHeader.Len))\n\t\tbinary.LittleEndian.PutUint64(ret[24:], uint64(sliceHeader.Cap))\n\t}\n\n\toffset := 32\n\tfor i := range m.CodeSection {\n\t\tgoFn := m.CodeSection[i].GoFunc\n\t\twriteIface(goFn, ret[offset:])\n\t\toffset += 16\n\t}\n\treturn ret\n}\n\nfunc hostModuleFromOpaque(opaqueBegin uintptr) *wasm.Module {\n\tvar opaqueViewOverSlice []byte\n\t//nolint:staticcheck\n\tsh := (*reflect.SliceHeader)(unsafe.Pointer(&opaqueViewOverSlice))\n\tsh.Data = opaqueBegin\n\tsh.Len = 32\n\tsh.Cap = 32\n\treturn *(**wasm.Module)(unsafe.Pointer(&opaqueViewOverSlice[0]))\n}\n\nfunc hostModuleListenersSliceFromOpaque(opaqueBegin uintptr) []experimental.FunctionListener {\n\tvar opaqueViewOverSlice []byte\n\t//nolint:staticcheck\n\tsh := (*reflect.SliceHeader)(unsafe.Pointer(&opaqueViewOverSlice))\n\tsh.Data = opaqueBegin\n\tsh.Len = 32\n\tsh.Cap = 32\n\n\tb := binary.LittleEndian.Uint64(opaqueViewOverSlice[8:])\n\tl := binary.LittleEndian.Uint64(opaqueViewOverSlice[16:])\n\tc := binary.LittleEndian.Uint64(opaqueViewOverSlice[24:])\n\tvar ret []experimental.FunctionListener\n\t//nolint:staticcheck\n\tsh = (*reflect.SliceHeader)(unsafe.Pointer(&ret))\n\tsh.Data = uintptr(b)\n\tsh.Len = int(l)\n\tsh.Cap = int(c)\n\treturn ret\n}\n\nfunc hostModuleGoFuncFromOpaque[T any](index int, opaqueBegin uintptr) T {\n\toffset := uintptr(index*16) + 32\n\tptr := opaqueBegin + offset\n\n\tvar opaqueViewOverFunction []byte\n\t//nolint:staticcheck\n\tsh := (*reflect.SliceHeader)(unsafe.Pointer(&opaqueViewOverFunction))\n\tsh.Data = ptr\n\tsh.Len = 16\n\tsh.Cap = 16\n\treturn readIface(opaqueViewOverFunction).(T)\n}\n\nfunc writeIface(goFn interface{}, buf []byte) {\n\tgoFnIface := *(*[2]uint64)(unsafe.Pointer(&goFn))\n\tbinary.LittleEndian.PutUint64(buf, goFnIface[0])\n\tbinary.LittleEndian.PutUint64(buf[8:], goFnIface[1])\n}\n\nfunc readIface(buf []byte) interface{} {\n\tb := binary.LittleEndian.Uint64(buf)\n\ts := binary.LittleEndian.Uint64(buf[8:])\n\treturn *(*interface{})(unsafe.Pointer(&[2]uint64{b, s}))\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/isa_amd64.go",
    "content": "//go:build amd64\n\npackage wazevo\n\nimport (\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/backend\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/amd64\"\n)\n\nfunc newMachine() backend.Machine {\n\treturn amd64.NewBackend()\n}\n\n// unwindStack is a function to unwind the stack, and appends return addresses to `returnAddresses` slice.\n// The implementation must be aligned with the ABI/Calling convention.\nfunc unwindStack(sp, fp, top uintptr, returnAddresses []uintptr) []uintptr {\n\treturn amd64.UnwindStack(sp, fp, top, returnAddresses)\n}\n\n// goCallStackView is a function to get a view of the stack before a Go call, which\n// is the view of the stack allocated in CompileGoFunctionTrampoline.\nfunc goCallStackView(stackPointerBeforeGoCall *uint64) []uint64 {\n\treturn amd64.GoCallStackView(stackPointerBeforeGoCall)\n}\n\n// adjustClonedStack is a function to adjust the stack after it is grown.\n// More precisely, absolute addresses (frame pointers) in the stack must be adjusted.\nfunc adjustClonedStack(oldsp, oldTop, sp, fp, top uintptr) {\n\tamd64.AdjustClonedStack(oldsp, oldTop, sp, fp, top)\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/isa_arm64.go",
    "content": "//go:build arm64\n\npackage wazevo\n\nimport (\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/backend\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/arm64\"\n)\n\nfunc newMachine() backend.Machine {\n\treturn arm64.NewBackend()\n}\n\n// unwindStack is a function to unwind the stack, and appends return addresses to `returnAddresses` slice.\n// The implementation must be aligned with the ABI/Calling convention.\nfunc unwindStack(sp, fp, top uintptr, returnAddresses []uintptr) []uintptr {\n\treturn arm64.UnwindStack(sp, fp, top, returnAddresses)\n}\n\n// goCallStackView is a function to get a view of the stack before a Go call, which\n// is the view of the stack allocated in CompileGoFunctionTrampoline.\nfunc goCallStackView(stackPointerBeforeGoCall *uint64) []uint64 {\n\treturn arm64.GoCallStackView(stackPointerBeforeGoCall)\n}\n\n// adjustClonedStack is a function to adjust the stack after it is grown.\n// More precisely, absolute addresses (frame pointers) in the stack must be adjusted.\nfunc adjustClonedStack(oldsp, oldTop, sp, fp, top uintptr) {\n\t// TODO: currently, the frame pointers are not used, and saved old sps are relative to the current stack pointer,\n\t//  so no need to adjustment on arm64. However, when we make it absolute, which in my opinion is better perf-wise\n\t//  at the expense of slightly costly stack growth, we need to adjust the pushed frame pointers.\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/isa_other.go",
    "content": "//go:build !(amd64 || arm64)\n\npackage wazevo\n\nimport (\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/backend\"\n)\n\nfunc newMachine() backend.Machine {\n\tpanic(\"unsupported architecture\")\n}\n\n// unwindStack is a function to unwind the stack, and appends return addresses to `returnAddresses` slice.\n// The implementation must be aligned with the ABI/Calling convention.\nfunc unwindStack(sp, fp, top uintptr, returnAddresses []uintptr) []uintptr {\n\tpanic(\"unsupported architecture\")\n}\n\n// goCallStackView is a function to get a view of the stack before a Go call, which\n// is the view of the stack allocated in CompileGoFunctionTrampoline.\nfunc goCallStackView(stackPointerBeforeGoCall *uint64) []uint64 {\n\tpanic(\"unsupported architecture\")\n}\n\n// adjustClonedStack is a function to adjust the stack after it is grown.\n// More precisely, absolute addresses (frame pointers) in the stack must be adjusted.\nfunc adjustClonedStack(oldsp, oldTop, sp, fp, top uintptr) {\n\tpanic(\"unsupported architecture\")\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/memmove.go",
    "content": "package wazevo\n\nimport (\n\t\"reflect\"\n\t\"unsafe\"\n)\n\n//go:linkname memmove runtime.memmove\nfunc memmove(_, _ unsafe.Pointer, _ uintptr)\n\nvar memmovPtr = reflect.ValueOf(memmove).Pointer()\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/module_engine.go",
    "content": "package wazevo\n\nimport (\n\t\"encoding/binary\"\n\t\"unsafe\"\n\n\t\"github.com/tetratelabs/wazero/api\"\n\t\"github.com/tetratelabs/wazero/experimental\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi\"\n\t\"github.com/tetratelabs/wazero/internal/wasm\"\n\t\"github.com/tetratelabs/wazero/internal/wasmruntime\"\n)\n\ntype (\n\t// moduleEngine implements wasm.ModuleEngine.\n\tmoduleEngine struct {\n\t\t// opaquePtr equals &opaque[0].\n\t\topaquePtr              *byte\n\t\tparent                 *compiledModule\n\t\tmodule                 *wasm.ModuleInstance\n\t\topaque                 moduleContextOpaque\n\t\tlocalFunctionInstances []*functionInstance\n\t\timportedFunctions      []importedFunction\n\t\tlisteners              []experimental.FunctionListener\n\t}\n\n\tfunctionInstance struct {\n\t\texecutable             *byte\n\t\tmoduleContextOpaquePtr *byte\n\t\ttypeID                 wasm.FunctionTypeID\n\t\tindexInModule          wasm.Index\n\t}\n\n\timportedFunction struct {\n\t\tme            *moduleEngine\n\t\tindexInModule wasm.Index\n\t}\n\n\t// moduleContextOpaque is the opaque byte slice of Module instance specific contents whose size\n\t// is only Wasm-compile-time known, hence dynamic. Its contents are basically the pointers to the module instance,\n\t// specific objects as well as functions. This is sometimes called \"VMContext\" in other Wasm runtimes.\n\t//\n\t// Internally, the buffer is structured as follows:\n\t//\n\t// \ttype moduleContextOpaque struct {\n\t// \t    moduleInstance                            *wasm.ModuleInstance\n\t// \t    localMemoryBufferPtr                      *byte                (optional)\n\t// \t    localMemoryLength                         uint64               (optional)\n\t// \t    importedMemoryInstance                    *wasm.MemoryInstance (optional)\n\t// \t    importedMemoryOwnerOpaqueCtx              *byte                (optional)\n\t// \t    importedFunctions                         [# of importedFunctions]functionInstance\n\t//      importedGlobals                           []ImportedGlobal       (optional)\n\t//      localGlobals                              []Global               (optional)\n\t//      typeIDsBegin                              &wasm.ModuleInstance.TypeIDs[0]  (optional)\n\t//      tables                                    []*wasm.TableInstance  (optional)\n\t// \t    beforeListenerTrampolines1stElement       **byte                 (optional)\n\t// \t    afterListenerTrampolines1stElement        **byte                 (optional)\n\t//      dataInstances1stElement                   []wasm.DataInstance    (optional)\n\t//      elementInstances1stElement                []wasm.ElementInstance (optional)\n\t// \t}\n\t//\n\t//  type ImportedGlobal struct {\n\t// \t\t*Global\n\t// \t\t_ uint64 // padding\n\t//  }\n\t//\n\t//  type Global struct {\n\t// \t\tVal, ValHi uint64\n\t//  }\n\t//\n\t// See wazevoapi.NewModuleContextOffsetData for the details of the offsets.\n\t//\n\t// Note that for host modules, the structure is entirely different. See buildHostModuleOpaque.\n\tmoduleContextOpaque []byte\n)\n\nfunc newAlignedOpaque(size int) moduleContextOpaque {\n\t// Check if the size is a multiple of 16.\n\tif size%16 != 0 {\n\t\tpanic(\"size must be a multiple of 16\")\n\t}\n\tbuf := make([]byte, size+16)\n\t// Align the buffer to 16 bytes.\n\trem := uintptr(unsafe.Pointer(&buf[0])) % 16\n\tbuf = buf[16-rem:]\n\treturn buf\n}\n\nfunc (m *moduleEngine) setupOpaque() {\n\tinst := m.module\n\toffsets := &m.parent.offsets\n\topaque := m.opaque\n\n\tbinary.LittleEndian.PutUint64(opaque[offsets.ModuleInstanceOffset:],\n\t\tuint64(uintptr(unsafe.Pointer(m.module))),\n\t)\n\n\tif lm := offsets.LocalMemoryBegin; lm >= 0 {\n\t\tm.putLocalMemory()\n\t}\n\n\t// Note: imported memory is resolved in ResolveImportedFunction.\n\n\t// Note: imported functions are resolved in ResolveImportedFunction.\n\n\tif globalOffset := offsets.GlobalsBegin; globalOffset >= 0 {\n\t\tfor i, g := range inst.Globals {\n\t\t\tif i < int(inst.Source.ImportGlobalCount) {\n\t\t\t\timportedME := g.Me.(*moduleEngine)\n\t\t\t\toffset := importedME.parent.offsets.GlobalInstanceOffset(g.Index)\n\t\t\t\timportedMEOpaque := importedME.opaque\n\t\t\t\tbinary.LittleEndian.PutUint64(opaque[globalOffset:],\n\t\t\t\t\tuint64(uintptr(unsafe.Pointer(&importedMEOpaque[offset]))))\n\t\t\t} else {\n\t\t\t\tbinary.LittleEndian.PutUint64(opaque[globalOffset:], g.Val)\n\t\t\t\tbinary.LittleEndian.PutUint64(opaque[globalOffset+8:], g.ValHi)\n\t\t\t}\n\t\t\tglobalOffset += 16\n\t\t}\n\t}\n\n\tif tableOffset := offsets.TablesBegin; tableOffset >= 0 {\n\t\t// First we write the first element's address of typeIDs.\n\t\tif len(inst.TypeIDs) > 0 {\n\t\t\tbinary.LittleEndian.PutUint64(opaque[offsets.TypeIDs1stElement:], uint64(uintptr(unsafe.Pointer(&inst.TypeIDs[0]))))\n\t\t}\n\n\t\t// Then we write the table addresses.\n\t\tfor _, table := range inst.Tables {\n\t\t\tbinary.LittleEndian.PutUint64(opaque[tableOffset:], uint64(uintptr(unsafe.Pointer(table))))\n\t\t\ttableOffset += 8\n\t\t}\n\t}\n\n\tif beforeListenerOffset := offsets.BeforeListenerTrampolines1stElement; beforeListenerOffset >= 0 {\n\t\tbinary.LittleEndian.PutUint64(opaque[beforeListenerOffset:], uint64(uintptr(unsafe.Pointer(&m.parent.listenerBeforeTrampolines[0]))))\n\t}\n\tif afterListenerOffset := offsets.AfterListenerTrampolines1stElement; afterListenerOffset >= 0 {\n\t\tbinary.LittleEndian.PutUint64(opaque[afterListenerOffset:], uint64(uintptr(unsafe.Pointer(&m.parent.listenerAfterTrampolines[0]))))\n\t}\n\tif len(inst.DataInstances) > 0 {\n\t\tbinary.LittleEndian.PutUint64(opaque[offsets.DataInstances1stElement:], uint64(uintptr(unsafe.Pointer(&inst.DataInstances[0]))))\n\t}\n\tif len(inst.ElementInstances) > 0 {\n\t\tbinary.LittleEndian.PutUint64(opaque[offsets.ElementInstances1stElement:], uint64(uintptr(unsafe.Pointer(&inst.ElementInstances[0]))))\n\t}\n}\n\n// NewFunction implements wasm.ModuleEngine.\nfunc (m *moduleEngine) NewFunction(index wasm.Index) api.Function {\n\tif wazevoapi.PrintMachineCodeHexPerFunctionDisassemblable {\n\t\tpanic(\"When PrintMachineCodeHexPerFunctionDisassemblable enabled, functions must not be called\")\n\t}\n\n\tlocalIndex := index\n\tif importedFnCount := m.module.Source.ImportFunctionCount; index < importedFnCount {\n\t\timported := &m.importedFunctions[index]\n\t\treturn imported.me.NewFunction(imported.indexInModule)\n\t} else {\n\t\tlocalIndex -= importedFnCount\n\t}\n\n\tsrc := m.module.Source\n\ttypIndex := src.FunctionSection[localIndex]\n\ttyp := src.TypeSection[typIndex]\n\tsizeOfParamResultSlice := typ.ResultNumInUint64\n\tif ps := typ.ParamNumInUint64; ps > sizeOfParamResultSlice {\n\t\tsizeOfParamResultSlice = ps\n\t}\n\tp := m.parent\n\toffset := p.functionOffsets[localIndex]\n\n\tce := &callEngine{\n\t\tindexInModule:          index,\n\t\texecutable:             &p.executable[offset],\n\t\tparent:                 m,\n\t\tpreambleExecutable:     p.entryPreamblesPtrs[typIndex],\n\t\tsizeOfParamResultSlice: sizeOfParamResultSlice,\n\t\trequiredParams:         typ.ParamNumInUint64,\n\t\tnumberOfResults:        typ.ResultNumInUint64,\n\t}\n\n\tsharedFunctions := p.sharedFunctions\n\tce.execCtx.memoryGrowTrampolineAddress = sharedFunctions.memoryGrowAddress\n\tce.execCtx.stackGrowCallTrampolineAddress = sharedFunctions.stackGrowAddress\n\tce.execCtx.checkModuleExitCodeTrampolineAddress = sharedFunctions.checkModuleExitCodeAddress\n\tce.execCtx.tableGrowTrampolineAddress = sharedFunctions.tableGrowAddress\n\tce.execCtx.refFuncTrampolineAddress = sharedFunctions.refFuncAddress\n\tce.execCtx.memoryWait32TrampolineAddress = sharedFunctions.memoryWait32Address\n\tce.execCtx.memoryWait64TrampolineAddress = sharedFunctions.memoryWait64Address\n\tce.execCtx.memoryNotifyTrampolineAddress = sharedFunctions.memoryNotifyAddress\n\tce.execCtx.memmoveAddress = memmovPtr\n\tce.init()\n\treturn ce\n}\n\n// GetGlobalValue implements the same method as documented on wasm.ModuleEngine.\nfunc (m *moduleEngine) GetGlobalValue(i wasm.Index) (lo, hi uint64) {\n\toffset := m.parent.offsets.GlobalInstanceOffset(i)\n\tbuf := m.opaque[offset:]\n\tif i < m.module.Source.ImportGlobalCount {\n\t\tpanic(\"GetGlobalValue should not be called for imported globals\")\n\t}\n\treturn binary.LittleEndian.Uint64(buf), binary.LittleEndian.Uint64(buf[8:])\n}\n\n// SetGlobalValue implements the same method as documented on wasm.ModuleEngine.\nfunc (m *moduleEngine) SetGlobalValue(i wasm.Index, lo, hi uint64) {\n\toffset := m.parent.offsets.GlobalInstanceOffset(i)\n\tbuf := m.opaque[offset:]\n\tif i < m.module.Source.ImportGlobalCount {\n\t\tpanic(\"GetGlobalValue should not be called for imported globals\")\n\t}\n\tbinary.LittleEndian.PutUint64(buf, lo)\n\tbinary.LittleEndian.PutUint64(buf[8:], hi)\n}\n\n// OwnsGlobals implements the same method as documented on wasm.ModuleEngine.\nfunc (m *moduleEngine) OwnsGlobals() bool { return true }\n\n// MemoryGrown implements wasm.ModuleEngine.\nfunc (m *moduleEngine) MemoryGrown() {\n\tm.putLocalMemory()\n}\n\n// putLocalMemory writes the local memory buffer pointer and length to the opaque buffer.\nfunc (m *moduleEngine) putLocalMemory() {\n\tmem := m.module.MemoryInstance\n\toffset := m.parent.offsets.LocalMemoryBegin\n\n\ts := uint64(len(mem.Buffer))\n\tvar b uint64\n\tif len(mem.Buffer) > 0 {\n\t\tb = uint64(uintptr(unsafe.Pointer(&mem.Buffer[0])))\n\t}\n\tbinary.LittleEndian.PutUint64(m.opaque[offset:], b)\n\tbinary.LittleEndian.PutUint64(m.opaque[offset+8:], s)\n}\n\n// ResolveImportedFunction implements wasm.ModuleEngine.\nfunc (m *moduleEngine) ResolveImportedFunction(index, descFunc, indexInImportedModule wasm.Index, importedModuleEngine wasm.ModuleEngine) {\n\texecutableOffset, moduleCtxOffset, typeIDOffset := m.parent.offsets.ImportedFunctionOffset(index)\n\timportedME := importedModuleEngine.(*moduleEngine)\n\n\tif int(indexInImportedModule) >= len(importedME.importedFunctions) {\n\t\tindexInImportedModule -= wasm.Index(len(importedME.importedFunctions))\n\t} else {\n\t\timported := &importedME.importedFunctions[indexInImportedModule]\n\t\tm.ResolveImportedFunction(index, descFunc, imported.indexInModule, imported.me)\n\t\treturn // Recursively resolve the imported function.\n\t}\n\n\toffset := importedME.parent.functionOffsets[indexInImportedModule]\n\ttypeID := m.module.TypeIDs[descFunc]\n\texecutable := &importedME.parent.executable[offset]\n\t// Write functionInstance.\n\tbinary.LittleEndian.PutUint64(m.opaque[executableOffset:], uint64(uintptr(unsafe.Pointer(executable))))\n\tbinary.LittleEndian.PutUint64(m.opaque[moduleCtxOffset:], uint64(uintptr(unsafe.Pointer(importedME.opaquePtr))))\n\tbinary.LittleEndian.PutUint64(m.opaque[typeIDOffset:], uint64(typeID))\n\n\t// Write importedFunction so that it can be used by NewFunction.\n\tm.importedFunctions[index] = importedFunction{me: importedME, indexInModule: indexInImportedModule}\n}\n\n// ResolveImportedMemory implements wasm.ModuleEngine.\nfunc (m *moduleEngine) ResolveImportedMemory(importedModuleEngine wasm.ModuleEngine) {\n\timportedME := importedModuleEngine.(*moduleEngine)\n\tinst := importedME.module\n\n\tvar memInstPtr uint64\n\tvar memOwnerOpaquePtr uint64\n\tif offs := importedME.parent.offsets; offs.ImportedMemoryBegin >= 0 {\n\t\toffset := offs.ImportedMemoryBegin\n\t\tmemInstPtr = binary.LittleEndian.Uint64(importedME.opaque[offset:])\n\t\tmemOwnerOpaquePtr = binary.LittleEndian.Uint64(importedME.opaque[offset+8:])\n\t} else {\n\t\tmemInstPtr = uint64(uintptr(unsafe.Pointer(inst.MemoryInstance)))\n\t\tmemOwnerOpaquePtr = uint64(uintptr(unsafe.Pointer(importedME.opaquePtr)))\n\t}\n\toffset := m.parent.offsets.ImportedMemoryBegin\n\tbinary.LittleEndian.PutUint64(m.opaque[offset:], memInstPtr)\n\tbinary.LittleEndian.PutUint64(m.opaque[offset+8:], memOwnerOpaquePtr)\n}\n\n// DoneInstantiation implements wasm.ModuleEngine.\nfunc (m *moduleEngine) DoneInstantiation() {\n\tif !m.module.Source.IsHostModule {\n\t\tm.setupOpaque()\n\t}\n}\n\n// FunctionInstanceReference implements wasm.ModuleEngine.\nfunc (m *moduleEngine) FunctionInstanceReference(funcIndex wasm.Index) wasm.Reference {\n\tif funcIndex < m.module.Source.ImportFunctionCount {\n\t\tbegin, _, _ := m.parent.offsets.ImportedFunctionOffset(funcIndex)\n\t\treturn uintptr(unsafe.Pointer(&m.opaque[begin]))\n\t}\n\tlocalIndex := funcIndex - m.module.Source.ImportFunctionCount\n\tp := m.parent\n\texecutable := &p.executable[p.functionOffsets[localIndex]]\n\ttypeID := m.module.TypeIDs[m.module.Source.FunctionSection[localIndex]]\n\n\tlf := &functionInstance{\n\t\texecutable:             executable,\n\t\tmoduleContextOpaquePtr: m.opaquePtr,\n\t\ttypeID:                 typeID,\n\t\tindexInModule:          funcIndex,\n\t}\n\tm.localFunctionInstances = append(m.localFunctionInstances, lf)\n\treturn uintptr(unsafe.Pointer(lf))\n}\n\n// LookupFunction implements wasm.ModuleEngine.\nfunc (m *moduleEngine) LookupFunction(t *wasm.TableInstance, typeId wasm.FunctionTypeID, tableOffset wasm.Index) (*wasm.ModuleInstance, wasm.Index) {\n\tif tableOffset >= uint32(len(t.References)) || t.Type != wasm.RefTypeFuncref {\n\t\tpanic(wasmruntime.ErrRuntimeInvalidTableAccess)\n\t}\n\trawPtr := t.References[tableOffset]\n\tif rawPtr == 0 {\n\t\tpanic(wasmruntime.ErrRuntimeInvalidTableAccess)\n\t}\n\n\ttf := wazevoapi.PtrFromUintptr[functionInstance](rawPtr)\n\tif tf.typeID != typeId {\n\t\tpanic(wasmruntime.ErrRuntimeIndirectCallTypeMismatch)\n\t}\n\treturn moduleInstanceFromOpaquePtr(tf.moduleContextOpaquePtr), tf.indexInModule\n}\n\nfunc moduleInstanceFromOpaquePtr(ptr *byte) *wasm.ModuleInstance {\n\treturn *(**wasm.ModuleInstance)(unsafe.Pointer(ptr))\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/ssa/basic_block.go",
    "content": "package ssa\n\nimport (\n\t\"fmt\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi\"\n)\n\n// BasicBlock represents the Basic Block of an SSA function.\n// Each BasicBlock always ends with branching instructions (e.g. Branch, Return, etc.),\n// and at most two branches are allowed. If there's two branches, these two are placed together at the end of the block.\n// In other words, there's no branching instruction in the middle of the block.\n//\n// Note: we use the \"block argument\" variant of SSA, instead of PHI functions. See the package level doc comments.\n//\n// Note: we use \"parameter/param\" as a placeholder which represents a variant of PHI, and \"argument/arg\" as an actual\n// Value passed to that \"parameter/param\".\ntype BasicBlock interface {\n\t// ID returns the unique ID of this block.\n\tID() BasicBlockID\n\n\t// Name returns the unique string ID of this block. e.g. blk0, blk1, ...\n\tName() string\n\n\t// AddParam adds the parameter to the block whose type specified by `t`.\n\tAddParam(b Builder, t Type) Value\n\n\t// Params returns the number of parameters to this block.\n\tParams() int\n\n\t// Param returns (Variable, Value) which corresponds to the i-th parameter of this block.\n\t// The returned Value is the definition of the param in this block.\n\tParam(i int) Value\n\n\t// Root returns the root instruction of this block.\n\tRoot() *Instruction\n\n\t// Tail returns the tail instruction of this block.\n\tTail() *Instruction\n\n\t// EntryBlock returns true if this block represents the function entry.\n\tEntryBlock() bool\n\n\t// ReturnBlock returns ture if this block represents the function return.\n\tReturnBlock() bool\n\n\t// Valid is true if this block is still valid even after optimizations.\n\tValid() bool\n\n\t// Sealed is true if this block has been sealed.\n\tSealed() bool\n\n\t// Preds returns the number of predecessors of this block.\n\tPreds() int\n\n\t// Pred returns the i-th predecessor of this block.\n\tPred(i int) BasicBlock\n\n\t// Succs returns the number of successors of this block.\n\tSuccs() int\n\n\t// Succ returns the i-th successor of this block.\n\tSucc(i int) BasicBlock\n\n\t// LoopHeader returns true if this block is a loop header.\n\tLoopHeader() bool\n\n\t// LoopNestingForestChildren returns the children of this block in the loop nesting forest.\n\tLoopNestingForestChildren() []BasicBlock\n}\n\ntype (\n\t// basicBlock is a basic block in a SSA-transformed function.\n\tbasicBlock struct {\n\t\tid                      BasicBlockID\n\t\trootInstr, currentInstr *Instruction\n\t\t// params are Values that represent parameters to a basicBlock.\n\t\t// Each parameter can be considered as an output of PHI instruction in traditional SSA.\n\t\tparams  Values\n\t\tpreds   []basicBlockPredecessorInfo\n\t\tsuccess []*basicBlock\n\t\t// singlePred is the alias to preds[0] for fast lookup, and only set after Seal is called.\n\t\tsinglePred *basicBlock\n\t\t// lastDefinitions maps Variable to its last definition in this block.\n\t\tlastDefinitions map[Variable]Value\n\t\t// unknownsValues are used in builder.findValue. The usage is well-described in the paper.\n\t\tunknownValues []unknownValue\n\t\t// invalid is true if this block is made invalid during optimizations.\n\t\tinvalid bool\n\t\t// sealed is true if this is sealed (all the predecessors are known).\n\t\tsealed bool\n\t\t// loopHeader is true if this block is a loop header:\n\t\t//\n\t\t// > A loop header (sometimes called the entry point of the loop) is a dominator that is the target\n\t\t// > of a loop-forming back edge. The loop header dominates all blocks in the loop body.\n\t\t// > A block may be a loop header for more than one loop. A loop may have multiple entry points,\n\t\t// > in which case it has no \"loop header\".\n\t\t//\n\t\t// See https://en.wikipedia.org/wiki/Control-flow_graph for more details.\n\t\t//\n\t\t// This is modified during the subPassLoopDetection pass.\n\t\tloopHeader bool\n\n\t\t// loopNestingForestChildren holds the children of this block in the loop nesting forest.\n\t\t// Non-empty if and only if this block is a loop header (i.e. loopHeader=true)\n\t\tloopNestingForestChildren wazevoapi.VarLength[BasicBlock]\n\n\t\t// reversePostOrder is used to sort all the blocks in the function in reverse post order.\n\t\t// This is used in builder.LayoutBlocks.\n\t\treversePostOrder int32\n\n\t\t// visited is used during various traversals.\n\t\tvisited int32\n\n\t\t// child and sibling are the ones in the dominator tree.\n\t\tchild, sibling *basicBlock\n\t}\n\t// BasicBlockID is the unique ID of a basicBlock.\n\tBasicBlockID uint32\n\n\tunknownValue struct {\n\t\t// variable is the variable that this unknownValue represents.\n\t\tvariable Variable\n\t\t// value is the value that this unknownValue represents.\n\t\tvalue Value\n\t}\n)\n\n// basicBlockVarLengthNil is the default nil value for basicBlock.loopNestingForestChildren.\nvar basicBlockVarLengthNil = wazevoapi.NewNilVarLength[BasicBlock]()\n\nconst basicBlockIDReturnBlock = 0xffffffff\n\n// Name implements BasicBlock.Name.\nfunc (bb *basicBlock) Name() string {\n\tif bb.id == basicBlockIDReturnBlock {\n\t\treturn \"blk_ret\"\n\t} else {\n\t\treturn fmt.Sprintf(\"blk%d\", bb.id)\n\t}\n}\n\n// String implements fmt.Stringer for debugging.\nfunc (bid BasicBlockID) String() string {\n\tif bid == basicBlockIDReturnBlock {\n\t\treturn \"blk_ret\"\n\t} else {\n\t\treturn fmt.Sprintf(\"blk%d\", bid)\n\t}\n}\n\n// ID implements BasicBlock.ID.\nfunc (bb *basicBlock) ID() BasicBlockID {\n\treturn bb.id\n}\n\n// basicBlockPredecessorInfo is the information of a predecessor of a basicBlock.\n// predecessor is determined by a pair of block and the branch instruction used to jump to the successor.\ntype basicBlockPredecessorInfo struct {\n\tblk    *basicBlock\n\tbranch *Instruction\n}\n\n// EntryBlock implements BasicBlock.EntryBlock.\nfunc (bb *basicBlock) EntryBlock() bool {\n\treturn bb.id == 0\n}\n\n// ReturnBlock implements BasicBlock.ReturnBlock.\nfunc (bb *basicBlock) ReturnBlock() bool {\n\treturn bb.id == basicBlockIDReturnBlock\n}\n\n// AddParam implements BasicBlock.AddParam.\nfunc (bb *basicBlock) AddParam(b Builder, typ Type) Value {\n\tparamValue := b.allocateValue(typ)\n\tbb.params = bb.params.Append(&b.(*builder).varLengthPool, paramValue)\n\treturn paramValue\n}\n\n// addParamOn adds a parameter to this block whose value is already allocated.\nfunc (bb *basicBlock) addParamOn(b *builder, value Value) {\n\tbb.params = bb.params.Append(&b.varLengthPool, value)\n}\n\n// Params implements BasicBlock.Params.\nfunc (bb *basicBlock) Params() int {\n\treturn len(bb.params.View())\n}\n\n// Param implements BasicBlock.Param.\nfunc (bb *basicBlock) Param(i int) Value {\n\treturn bb.params.View()[i]\n}\n\n// Valid implements BasicBlock.Valid.\nfunc (bb *basicBlock) Valid() bool {\n\treturn !bb.invalid\n}\n\n// Sealed implements BasicBlock.Sealed.\nfunc (bb *basicBlock) Sealed() bool {\n\treturn bb.sealed\n}\n\n// insertInstruction implements BasicBlock.InsertInstruction.\nfunc (bb *basicBlock) insertInstruction(b *builder, next *Instruction) {\n\tcurrent := bb.currentInstr\n\tif current != nil {\n\t\tcurrent.next = next\n\t\tnext.prev = current\n\t} else {\n\t\tbb.rootInstr = next\n\t}\n\tbb.currentInstr = next\n\n\tswitch next.opcode {\n\tcase OpcodeJump, OpcodeBrz, OpcodeBrnz:\n\t\ttarget := BasicBlockID(next.rValue)\n\t\tb.basicBlock(target).addPred(bb, next)\n\tcase OpcodeBrTable:\n\t\tfor _, _target := range next.rValues.View() {\n\t\t\ttarget := BasicBlockID(_target)\n\t\t\tb.basicBlock(target).addPred(bb, next)\n\t\t}\n\t}\n}\n\n// NumPreds implements BasicBlock.NumPreds.\nfunc (bb *basicBlock) NumPreds() int {\n\treturn len(bb.preds)\n}\n\n// Preds implements BasicBlock.Preds.\nfunc (bb *basicBlock) Preds() int {\n\treturn len(bb.preds)\n}\n\n// Pred implements BasicBlock.Pred.\nfunc (bb *basicBlock) Pred(i int) BasicBlock {\n\treturn bb.preds[i].blk\n}\n\n// Succs implements BasicBlock.Succs.\nfunc (bb *basicBlock) Succs() int {\n\treturn len(bb.success)\n}\n\n// Succ implements BasicBlock.Succ.\nfunc (bb *basicBlock) Succ(i int) BasicBlock {\n\treturn bb.success[i]\n}\n\n// Root implements BasicBlock.Root.\nfunc (bb *basicBlock) Root() *Instruction {\n\treturn bb.rootInstr\n}\n\n// Tail implements BasicBlock.Tail.\nfunc (bb *basicBlock) Tail() *Instruction {\n\treturn bb.currentInstr\n}\n\n// reset resets the basicBlock to its initial state so that it can be reused for another function.\nfunc resetBasicBlock(bb *basicBlock) {\n\tbb.params = ValuesNil\n\tbb.rootInstr, bb.currentInstr = nil, nil\n\tbb.preds = bb.preds[:0]\n\tbb.success = bb.success[:0]\n\tbb.invalid, bb.sealed = false, false\n\tbb.singlePred = nil\n\tbb.unknownValues = bb.unknownValues[:0]\n\tbb.lastDefinitions = wazevoapi.ResetMap(bb.lastDefinitions)\n\tbb.reversePostOrder = -1\n\tbb.visited = 0\n\tbb.loopNestingForestChildren = basicBlockVarLengthNil\n\tbb.loopHeader = false\n\tbb.sibling = nil\n\tbb.child = nil\n}\n\n// addPred adds a predecessor to this block specified by the branch instruction.\nfunc (bb *basicBlock) addPred(blk BasicBlock, branch *Instruction) {\n\tif bb.sealed {\n\t\tpanic(\"BUG: trying to add predecessor to a sealed block: \" + bb.Name())\n\t}\n\n\tpred := blk.(*basicBlock)\n\tfor i := range bb.preds {\n\t\texistingPred := &bb.preds[i]\n\t\tif existingPred.blk == pred && existingPred.branch != branch {\n\t\t\t// If the target is already added, then this must come from the same BrTable,\n\t\t\t// otherwise such redundant branch should be eliminated by the frontend. (which should be simpler).\n\t\t\tpanic(fmt.Sprintf(\"BUG: redundant non BrTable jumps in %s whose targes are the same\", bb.Name()))\n\t\t}\n\t}\n\n\tbb.preds = append(bb.preds, basicBlockPredecessorInfo{\n\t\tblk:    pred,\n\t\tbranch: branch,\n\t})\n\n\tpred.success = append(pred.success, bb)\n}\n\n// formatHeader returns the string representation of the header of the basicBlock.\nfunc (bb *basicBlock) formatHeader(b Builder) string {\n\tps := make([]string, len(bb.params.View()))\n\tfor i, p := range bb.params.View() {\n\t\tps[i] = p.formatWithType(b)\n\t}\n\n\tif len(bb.preds) > 0 {\n\t\tpreds := make([]string, 0, len(bb.preds))\n\t\tfor _, pred := range bb.preds {\n\t\t\tif pred.blk.invalid {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tpreds = append(preds, fmt.Sprintf(\"blk%d\", pred.blk.id))\n\n\t\t}\n\t\treturn fmt.Sprintf(\"blk%d: (%s) <-- (%s)\",\n\t\t\tbb.id, strings.Join(ps, \",\"), strings.Join(preds, \",\"))\n\t} else {\n\t\treturn fmt.Sprintf(\"blk%d: (%s)\", bb.id, strings.Join(ps, \", \"))\n\t}\n}\n\n// validates validates the basicBlock for debugging purpose.\nfunc (bb *basicBlock) validate(b *builder) {\n\tif bb.invalid {\n\t\tpanic(\"BUG: trying to validate an invalid block: \" + bb.Name())\n\t}\n\tif len(bb.preds) > 0 {\n\t\tfor _, pred := range bb.preds {\n\t\t\tif pred.branch.opcode != OpcodeBrTable {\n\t\t\t\tblockID := int(pred.branch.rValue)\n\t\t\t\ttarget := b.basicBlocksPool.View(blockID)\n\t\t\t\tif target != bb {\n\t\t\t\t\tpanic(fmt.Sprintf(\"BUG: '%s' is not branch to %s, but to %s\",\n\t\t\t\t\t\tpred.branch.Format(b), bb.Name(), target.Name()))\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar exp int\n\t\t\tif bb.ReturnBlock() {\n\t\t\t\texp = len(b.currentSignature.Results)\n\t\t\t} else {\n\t\t\t\texp = len(bb.params.View())\n\t\t\t}\n\n\t\t\tif len(pred.branch.vs.View()) != exp {\n\t\t\t\tpanic(fmt.Sprintf(\n\t\t\t\t\t\"BUG: len(argument at %s) != len(params at %s): %d != %d: %s\",\n\t\t\t\t\tpred.blk.Name(), bb.Name(),\n\t\t\t\t\tlen(pred.branch.vs.View()), len(bb.params.View()), pred.branch.Format(b),\n\t\t\t\t))\n\t\t\t}\n\n\t\t}\n\t}\n}\n\n// String implements fmt.Stringer for debugging purpose only.\nfunc (bb *basicBlock) String() string {\n\treturn strconv.Itoa(int(bb.id))\n}\n\n// LoopNestingForestChildren implements BasicBlock.LoopNestingForestChildren.\nfunc (bb *basicBlock) LoopNestingForestChildren() []BasicBlock {\n\treturn bb.loopNestingForestChildren.View()\n}\n\n// LoopHeader implements BasicBlock.LoopHeader.\nfunc (bb *basicBlock) LoopHeader() bool {\n\treturn bb.loopHeader\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/ssa/basic_block_sort.go",
    "content": "package ssa\n\nimport (\n\t\"slices\"\n)\n\nfunc sortBlocks(blocks []*basicBlock) {\n\tslices.SortFunc(blocks, func(i, j *basicBlock) int {\n\t\tjIsReturn := j.ReturnBlock()\n\t\tiIsReturn := i.ReturnBlock()\n\t\tif iIsReturn && jIsReturn {\n\t\t\treturn 0\n\t\t}\n\t\tif jIsReturn {\n\t\t\treturn 1\n\t\t}\n\t\tif iIsReturn {\n\t\t\treturn -1\n\t\t}\n\t\tiRoot, jRoot := i.rootInstr, j.rootInstr\n\t\tif iRoot == nil && jRoot == nil { // For testing.\n\t\t\treturn 0\n\t\t}\n\t\tif jRoot == nil {\n\t\t\treturn 1\n\t\t}\n\t\tif iRoot == nil {\n\t\t\treturn -1\n\t\t}\n\t\treturn i.rootInstr.id - j.rootInstr.id\n\t})\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/ssa/builder.go",
    "content": "package ssa\n\nimport (\n\t\"fmt\"\n\t\"sort\"\n\t\"strings\"\n\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi\"\n)\n\n// Builder is used to builds SSA consisting of Basic Blocks per function.\ntype Builder interface {\n\t// Init must be called to reuse this builder for the next function.\n\tInit(typ *Signature)\n\n\t// Signature returns the Signature of the currently-compiled function.\n\tSignature() *Signature\n\n\t// BlockIDMax returns the maximum value of BasicBlocksID existing in the currently-compiled function.\n\tBlockIDMax() BasicBlockID\n\n\t// AllocateBasicBlock creates a basic block in SSA function.\n\tAllocateBasicBlock() BasicBlock\n\n\t// CurrentBlock returns the currently handled BasicBlock which is set by the latest call to SetCurrentBlock.\n\tCurrentBlock() BasicBlock\n\n\t// EntryBlock returns the entry BasicBlock of the currently-compiled function.\n\tEntryBlock() BasicBlock\n\n\t// SetCurrentBlock sets the instruction insertion target to the BasicBlock `b`.\n\tSetCurrentBlock(b BasicBlock)\n\n\t// DeclareVariable declares a Variable of the given Type.\n\tDeclareVariable(Type) Variable\n\n\t// DefineVariable defines a variable in the `block` with value.\n\t// The defining instruction will be inserted into the `block`.\n\tDefineVariable(variable Variable, value Value, block BasicBlock)\n\n\t// DefineVariableInCurrentBB is the same as DefineVariable except the definition is\n\t// inserted into the current BasicBlock. Alias to DefineVariable(x, y, CurrentBlock()).\n\tDefineVariableInCurrentBB(variable Variable, value Value)\n\n\t// AllocateInstruction returns a new Instruction.\n\tAllocateInstruction() *Instruction\n\n\t// InsertInstruction executes BasicBlock.InsertInstruction for the currently handled basic block.\n\tInsertInstruction(raw *Instruction)\n\n\t// allocateValue allocates an unused Value.\n\tallocateValue(typ Type) Value\n\n\t// MustFindValue searches the latest definition of the given Variable and returns the result.\n\tMustFindValue(variable Variable) Value\n\n\t// FindValueInLinearPath tries to find the latest definition of the given Variable in the linear path to the current BasicBlock.\n\t// If it cannot find the definition, or it's not sealed yet, it returns ValueInvalid.\n\tFindValueInLinearPath(variable Variable) Value\n\n\t// Seal declares that we've known all the predecessors to this block and were added via AddPred.\n\t// After calling this, AddPred will be forbidden.\n\tSeal(blk BasicBlock)\n\n\t// AnnotateValue is for debugging purpose.\n\tAnnotateValue(value Value, annotation string)\n\n\t// DeclareSignature appends the *Signature to be referenced by various instructions (e.g. OpcodeCall).\n\tDeclareSignature(signature *Signature)\n\n\t// Signatures returns the slice of declared Signatures.\n\tSignatures() []*Signature\n\n\t// ResolveSignature returns the Signature which corresponds to SignatureID.\n\tResolveSignature(id SignatureID) *Signature\n\n\t// RunPasses runs various passes on the constructed SSA function.\n\tRunPasses()\n\n\t// Format returns the debugging string of the SSA function.\n\tFormat() string\n\n\t// BlockIteratorBegin initializes the state to iterate over all the valid BasicBlock(s) compiled.\n\t// Combined with BlockIteratorNext, we can use this like:\n\t//\n\t// \tfor blk := builder.BlockIteratorBegin(); blk != nil; blk = builder.BlockIteratorNext() {\n\t// \t\t// ...\n\t//\t}\n\t//\n\t// The returned blocks are ordered in the order of AllocateBasicBlock being called.\n\tBlockIteratorBegin() BasicBlock\n\n\t// BlockIteratorNext advances the state for iteration initialized by BlockIteratorBegin.\n\t// Returns nil if there's no unseen BasicBlock.\n\tBlockIteratorNext() BasicBlock\n\n\t// ValuesInfo returns the data per Value used to lower the SSA in backend.\n\t// This is indexed by ValueID.\n\tValuesInfo() []ValueInfo\n\n\t// BlockIteratorReversePostOrderBegin is almost the same as BlockIteratorBegin except it returns the BasicBlock in the reverse post-order.\n\t// This is available after RunPasses is run.\n\tBlockIteratorReversePostOrderBegin() BasicBlock\n\n\t// BlockIteratorReversePostOrderNext is almost the same as BlockIteratorPostOrderNext except it returns the BasicBlock in the reverse post-order.\n\t// This is available after RunPasses is run.\n\tBlockIteratorReversePostOrderNext() BasicBlock\n\n\t// ReturnBlock returns the BasicBlock which is used to return from the function.\n\tReturnBlock() BasicBlock\n\n\t// InsertUndefined inserts an undefined instruction at the current position.\n\tInsertUndefined()\n\n\t// SetCurrentSourceOffset sets the current source offset. The incoming instruction will be annotated with this offset.\n\tSetCurrentSourceOffset(line SourceOffset)\n\n\t// LoopNestingForestRoots returns the roots of the loop nesting forest.\n\tLoopNestingForestRoots() []BasicBlock\n\n\t// LowestCommonAncestor returns the lowest common ancestor in the dominator tree of the given BasicBlock(s).\n\tLowestCommonAncestor(blk1, blk2 BasicBlock) BasicBlock\n\n\t// Idom returns the immediate dominator of the given BasicBlock.\n\tIdom(blk BasicBlock) BasicBlock\n\n\t// VarLengthPool returns the VarLengthPool of Value.\n\tVarLengthPool() *wazevoapi.VarLengthPool[Value]\n\n\t// InsertZeroValue inserts a zero value constant instruction of the given type.\n\tInsertZeroValue(t Type)\n\n\t// BasicBlock returns the BasicBlock of the given ID.\n\tBasicBlock(id BasicBlockID) BasicBlock\n\n\t// InstructionOfValue returns the Instruction that produces the given Value or nil if the Value is not produced by any Instruction.\n\tInstructionOfValue(v Value) *Instruction\n}\n\n// NewBuilder returns a new Builder implementation.\nfunc NewBuilder() Builder {\n\treturn &builder{\n\t\tinstructionsPool:        wazevoapi.NewPool[Instruction](resetInstruction),\n\t\tbasicBlocksPool:         wazevoapi.NewPool[basicBlock](resetBasicBlock),\n\t\tvarLengthBasicBlockPool: wazevoapi.NewVarLengthPool[BasicBlock](),\n\t\tvarLengthPool:           wazevoapi.NewVarLengthPool[Value](),\n\t\tvalueAnnotations:        make(map[ValueID]string),\n\t\tsignatures:              make(map[SignatureID]*Signature),\n\t\treturnBlk:               &basicBlock{id: basicBlockIDReturnBlock},\n\t}\n}\n\n// builder implements Builder interface.\ntype builder struct {\n\tbasicBlocksPool  wazevoapi.Pool[basicBlock]\n\tinstructionsPool wazevoapi.Pool[Instruction]\n\tvarLengthPool    wazevoapi.VarLengthPool[Value]\n\tsignatures       map[SignatureID]*Signature\n\tcurrentSignature *Signature\n\n\t// reversePostOrderedBasicBlocks are the BasicBlock(s) ordered in the reverse post-order after passCalculateImmediateDominators.\n\treversePostOrderedBasicBlocks []*basicBlock\n\tcurrentBB                     *basicBlock\n\treturnBlk                     *basicBlock\n\n\t// nextValueID is used by builder.AllocateValue.\n\tnextValueID ValueID\n\t// nextVariable is used by builder.AllocateVariable.\n\tnextVariable Variable\n\n\t// valueAnnotations contains the annotations for each Value, only used for debugging.\n\tvalueAnnotations map[ValueID]string\n\n\t// valuesInfo contains the data per Value used to lower the SSA in backend. This is indexed by ValueID.\n\tvaluesInfo []ValueInfo\n\n\t// dominators stores the immediate dominator of each BasicBlock.\n\t// The index is blockID of the BasicBlock.\n\tdominators []*basicBlock\n\tsparseTree dominatorSparseTree\n\n\tvarLengthBasicBlockPool wazevoapi.VarLengthPool[BasicBlock]\n\n\t// loopNestingForestRoots are the roots of the loop nesting forest.\n\tloopNestingForestRoots []BasicBlock\n\n\t// The followings are used for optimization passes/deterministic compilation.\n\tinstStack       []*Instruction\n\tblkStack        []*basicBlock\n\tblkStack2       []*basicBlock\n\tredundantParams []redundantParam\n\n\t// blockIterCur is used to implement blockIteratorBegin and blockIteratorNext.\n\tblockIterCur int\n\n\t// donePreBlockLayoutPasses is true if all the passes before LayoutBlocks are called.\n\tdonePreBlockLayoutPasses bool\n\t// doneBlockLayout is true if LayoutBlocks is called.\n\tdoneBlockLayout bool\n\t// donePostBlockLayoutPasses is true if all the passes after LayoutBlocks are called.\n\tdonePostBlockLayoutPasses bool\n\n\tcurrentSourceOffset SourceOffset\n\n\t// zeros are the zero value constants for each type.\n\tzeros [typeEnd]Value\n}\n\n// ValueInfo contains the data per Value used to lower the SSA in backend.\ntype ValueInfo struct {\n\t// RefCount is the reference count of the Value.\n\tRefCount uint32\n\talias    Value\n}\n\n// redundantParam is a pair of the index of the redundant parameter and the Value.\n// This is used to eliminate the redundant parameters in the optimization pass.\ntype redundantParam struct {\n\t// index is the index of the redundant parameter in the basicBlock.\n\tindex int\n\t// uniqueValue is the Value which is passed to the redundant parameter.\n\tuniqueValue Value\n}\n\n// BasicBlock implements Builder.BasicBlock.\nfunc (b *builder) BasicBlock(id BasicBlockID) BasicBlock {\n\treturn b.basicBlock(id)\n}\n\nfunc (b *builder) basicBlock(id BasicBlockID) *basicBlock {\n\tif id == basicBlockIDReturnBlock {\n\t\treturn b.returnBlk\n\t}\n\treturn b.basicBlocksPool.View(int(id))\n}\n\n// InsertZeroValue implements Builder.InsertZeroValue.\nfunc (b *builder) InsertZeroValue(t Type) {\n\tif b.zeros[t].Valid() {\n\t\treturn\n\t}\n\tzeroInst := b.AllocateInstruction()\n\tswitch t {\n\tcase TypeI32:\n\t\tzeroInst.AsIconst32(0)\n\tcase TypeI64:\n\t\tzeroInst.AsIconst64(0)\n\tcase TypeF32:\n\t\tzeroInst.AsF32const(0)\n\tcase TypeF64:\n\t\tzeroInst.AsF64const(0)\n\tcase TypeV128:\n\t\tzeroInst.AsVconst(0, 0)\n\tdefault:\n\t\tpanic(\"TODO: \" + t.String())\n\t}\n\tb.zeros[t] = zeroInst.Insert(b).Return()\n}\n\nfunc (b *builder) VarLengthPool() *wazevoapi.VarLengthPool[Value] {\n\treturn &b.varLengthPool\n}\n\n// ReturnBlock implements Builder.ReturnBlock.\nfunc (b *builder) ReturnBlock() BasicBlock {\n\treturn b.returnBlk\n}\n\n// Init implements Builder.Reset.\nfunc (b *builder) Init(s *Signature) {\n\tb.nextVariable = 0\n\tb.currentSignature = s\n\tb.zeros = [typeEnd]Value{ValueInvalid, ValueInvalid, ValueInvalid, ValueInvalid, ValueInvalid, ValueInvalid}\n\tresetBasicBlock(b.returnBlk)\n\tb.instructionsPool.Reset()\n\tb.basicBlocksPool.Reset()\n\tb.varLengthPool.Reset()\n\tb.varLengthBasicBlockPool.Reset()\n\tb.donePreBlockLayoutPasses = false\n\tb.doneBlockLayout = false\n\tb.donePostBlockLayoutPasses = false\n\tfor _, sig := range b.signatures {\n\t\tsig.used = false\n\t}\n\n\tb.redundantParams = b.redundantParams[:0]\n\tb.blkStack = b.blkStack[:0]\n\tb.blkStack2 = b.blkStack2[:0]\n\tb.dominators = b.dominators[:0]\n\tb.loopNestingForestRoots = b.loopNestingForestRoots[:0]\n\tb.basicBlocksPool.Reset()\n\n\tfor v := ValueID(0); v < b.nextValueID; v++ {\n\t\tdelete(b.valueAnnotations, v)\n\t\tb.valuesInfo[v] = ValueInfo{alias: ValueInvalid}\n\t}\n\tb.nextValueID = 0\n\tb.reversePostOrderedBasicBlocks = b.reversePostOrderedBasicBlocks[:0]\n\tb.doneBlockLayout = false\n\tb.currentSourceOffset = sourceOffsetUnknown\n}\n\n// Signature implements Builder.Signature.\nfunc (b *builder) Signature() *Signature {\n\treturn b.currentSignature\n}\n\n// AnnotateValue implements Builder.AnnotateValue.\nfunc (b *builder) AnnotateValue(value Value, a string) {\n\tb.valueAnnotations[value.ID()] = a\n}\n\n// AllocateInstruction implements Builder.AllocateInstruction.\nfunc (b *builder) AllocateInstruction() *Instruction {\n\tinstr := b.instructionsPool.Allocate()\n\tinstr.id = b.instructionsPool.Allocated()\n\treturn instr\n}\n\n// DeclareSignature implements Builder.AnnotateValue.\nfunc (b *builder) DeclareSignature(s *Signature) {\n\tb.signatures[s.ID] = s\n\ts.used = false\n}\n\n// Signatures implements Builder.Signatures.\nfunc (b *builder) Signatures() (ret []*Signature) {\n\tfor _, sig := range b.signatures {\n\t\tret = append(ret, sig)\n\t}\n\tsort.Slice(ret, func(i, j int) bool {\n\t\treturn ret[i].ID < ret[j].ID\n\t})\n\treturn\n}\n\n// SetCurrentSourceOffset implements Builder.SetCurrentSourceOffset.\nfunc (b *builder) SetCurrentSourceOffset(l SourceOffset) {\n\tb.currentSourceOffset = l\n}\n\nfunc (b *builder) usedSignatures() (ret []*Signature) {\n\tfor _, sig := range b.signatures {\n\t\tif sig.used {\n\t\t\tret = append(ret, sig)\n\t\t}\n\t}\n\tsort.Slice(ret, func(i, j int) bool {\n\t\treturn ret[i].ID < ret[j].ID\n\t})\n\treturn\n}\n\n// ResolveSignature implements Builder.ResolveSignature.\nfunc (b *builder) ResolveSignature(id SignatureID) *Signature {\n\treturn b.signatures[id]\n}\n\n// AllocateBasicBlock implements Builder.AllocateBasicBlock.\nfunc (b *builder) AllocateBasicBlock() BasicBlock {\n\treturn b.allocateBasicBlock()\n}\n\n// allocateBasicBlock allocates a new basicBlock.\nfunc (b *builder) allocateBasicBlock() *basicBlock {\n\tid := BasicBlockID(b.basicBlocksPool.Allocated())\n\tblk := b.basicBlocksPool.Allocate()\n\tblk.id = id\n\treturn blk\n}\n\n// Idom implements Builder.Idom.\nfunc (b *builder) Idom(blk BasicBlock) BasicBlock {\n\treturn b.dominators[blk.ID()]\n}\n\n// InsertInstruction implements Builder.InsertInstruction.\nfunc (b *builder) InsertInstruction(instr *Instruction) {\n\tb.currentBB.insertInstruction(b, instr)\n\n\tif l := b.currentSourceOffset; l.Valid() {\n\t\t// Emit the source offset info only when the instruction has side effect because\n\t\t// these are the only instructions that are accessed by stack unwinding.\n\t\t// This reduces the significant amount of the offset info in the binary.\n\t\tif instr.sideEffect() != sideEffectNone {\n\t\t\tinstr.annotateSourceOffset(l)\n\t\t}\n\t}\n\n\tresultTypesFn := instructionReturnTypes[instr.opcode]\n\tif resultTypesFn == nil {\n\t\tpanic(\"TODO: \" + instr.Format(b))\n\t}\n\n\tt1, ts := resultTypesFn(b, instr)\n\tif t1.invalid() {\n\t\treturn\n\t}\n\n\tr1 := b.allocateValue(t1)\n\tinstr.rValue = r1.setInstructionID(instr.id)\n\n\ttsl := len(ts)\n\tif tsl == 0 {\n\t\treturn\n\t}\n\n\trValues := b.varLengthPool.Allocate(tsl)\n\tfor i := 0; i < tsl; i++ {\n\t\trn := b.allocateValue(ts[i])\n\t\trValues = rValues.Append(&b.varLengthPool, rn.setInstructionID(instr.id))\n\t}\n\tinstr.rValues = rValues\n}\n\n// DefineVariable implements Builder.DefineVariable.\nfunc (b *builder) DefineVariable(variable Variable, value Value, block BasicBlock) {\n\tbb := block.(*basicBlock)\n\tbb.lastDefinitions[variable] = value\n}\n\n// DefineVariableInCurrentBB implements Builder.DefineVariableInCurrentBB.\nfunc (b *builder) DefineVariableInCurrentBB(variable Variable, value Value) {\n\tb.DefineVariable(variable, value, b.currentBB)\n}\n\n// SetCurrentBlock implements Builder.SetCurrentBlock.\nfunc (b *builder) SetCurrentBlock(bb BasicBlock) {\n\tb.currentBB = bb.(*basicBlock)\n}\n\n// CurrentBlock implements Builder.CurrentBlock.\nfunc (b *builder) CurrentBlock() BasicBlock {\n\treturn b.currentBB\n}\n\n// EntryBlock implements Builder.EntryBlock.\nfunc (b *builder) EntryBlock() BasicBlock {\n\treturn b.entryBlk()\n}\n\n// DeclareVariable implements Builder.DeclareVariable.\nfunc (b *builder) DeclareVariable(typ Type) Variable {\n\tv := b.nextVariable\n\tb.nextVariable++\n\treturn v.setType(typ)\n}\n\n// allocateValue implements Builder.AllocateValue.\nfunc (b *builder) allocateValue(typ Type) (v Value) {\n\tv = Value(b.nextValueID)\n\tv = v.setType(typ)\n\tb.nextValueID++\n\treturn\n}\n\n// FindValueInLinearPath implements Builder.FindValueInLinearPath.\nfunc (b *builder) FindValueInLinearPath(variable Variable) Value {\n\treturn b.findValueInLinearPath(variable, b.currentBB)\n}\n\nfunc (b *builder) findValueInLinearPath(variable Variable, blk *basicBlock) Value {\n\tif val, ok := blk.lastDefinitions[variable]; ok {\n\t\treturn val\n\t} else if !blk.sealed {\n\t\treturn ValueInvalid\n\t}\n\n\tif pred := blk.singlePred; pred != nil {\n\t\t// If this block is sealed and have only one predecessor,\n\t\t// we can use the value in that block without ambiguity on definition.\n\t\treturn b.findValueInLinearPath(variable, pred)\n\t}\n\tif len(blk.preds) == 1 {\n\t\tpanic(\"BUG\")\n\t}\n\treturn ValueInvalid\n}\n\n// MustFindValue implements Builder.MustFindValue.\nfunc (b *builder) MustFindValue(variable Variable) Value {\n\treturn b.findValue(variable.getType(), variable, b.currentBB)\n}\n\n// findValue recursively tries to find the latest definition of a `variable`. The algorithm is described in\n// the section 2 of the paper https://link.springer.com/content/pdf/10.1007/978-3-642-37051-9_6.pdf.\n//\n// TODO: reimplement this in iterative, not recursive, to avoid stack overflow.\nfunc (b *builder) findValue(typ Type, variable Variable, blk *basicBlock) Value {\n\tif val, ok := blk.lastDefinitions[variable]; ok {\n\t\t// The value is already defined in this block!\n\t\treturn val\n\t} else if !blk.sealed { // Incomplete CFG as in the paper.\n\t\t// If this is not sealed, that means it might have additional unknown predecessor later on.\n\t\t// So we temporarily define the placeholder value here (not add as a parameter yet!),\n\t\t// and record it as unknown.\n\t\t// The unknown values are resolved when we call seal this block via BasicBlock.Seal().\n\t\tvalue := b.allocateValue(typ)\n\t\tif wazevoapi.SSALoggingEnabled {\n\t\t\tfmt.Printf(\"adding unknown value placeholder for %s at %d\\n\", variable, blk.id)\n\t\t}\n\t\tblk.lastDefinitions[variable] = value\n\t\tblk.unknownValues = append(blk.unknownValues, unknownValue{\n\t\t\tvariable: variable,\n\t\t\tvalue:    value,\n\t\t})\n\t\treturn value\n\t} else if blk.EntryBlock() {\n\t\t// If this is the entry block, we reach the uninitialized variable which has zero value.\n\t\treturn b.zeros[variable.getType()]\n\t}\n\n\tif pred := blk.singlePred; pred != nil {\n\t\t// If this block is sealed and have only one predecessor,\n\t\t// we can use the value in that block without ambiguity on definition.\n\t\treturn b.findValue(typ, variable, pred)\n\t} else if len(blk.preds) == 0 {\n\t\tpanic(\"BUG: value is not defined for \" + variable.String())\n\t}\n\n\t// If this block has multiple predecessors, we have to gather the definitions,\n\t// and treat them as an argument to this block.\n\t//\n\t// But before that, we have to check if the possible definitions are the same Value.\n\ttmpValue := b.allocateValue(typ)\n\t// Break the cycle by defining the variable with the tmpValue.\n\tb.DefineVariable(variable, tmpValue, blk)\n\t// Check all the predecessors if they have the same definition.\n\tuniqueValue := ValueInvalid\n\tfor i := range blk.preds {\n\t\tpredValue := b.findValue(typ, variable, blk.preds[i].blk)\n\t\tif uniqueValue == ValueInvalid {\n\t\t\tuniqueValue = predValue\n\t\t} else if uniqueValue != predValue {\n\t\t\tuniqueValue = ValueInvalid\n\t\t\tbreak\n\t\t}\n\t}\n\n\tif uniqueValue != ValueInvalid {\n\t\t// If all the predecessors have the same definition, we can use that value.\n\t\tb.alias(tmpValue, uniqueValue)\n\t\treturn uniqueValue\n\t} else {\n\t\t// Otherwise, add the tmpValue to this block as a parameter which may or may not be redundant, but\n\t\t// later we eliminate trivial params in an optimization pass. This must be done before finding the\n\t\t// definitions in the predecessors so that we can break the cycle.\n\t\tblk.addParamOn(b, tmpValue)\n\t\t// After the new param is added, we have to manipulate the original branching instructions\n\t\t// in predecessors so that they would pass the definition of `variable` as the argument to\n\t\t// the newly added PHI.\n\t\tfor i := range blk.preds {\n\t\t\tpred := &blk.preds[i]\n\t\t\tvalue := b.findValue(typ, variable, pred.blk)\n\t\t\tpred.branch.addArgumentBranchInst(b, value)\n\t\t}\n\t\treturn tmpValue\n\t}\n}\n\n// Seal implements Builder.Seal.\nfunc (b *builder) Seal(raw BasicBlock) {\n\tblk := raw.(*basicBlock)\n\tif len(blk.preds) == 1 {\n\t\tblk.singlePred = blk.preds[0].blk\n\t}\n\tblk.sealed = true\n\n\tfor _, v := range blk.unknownValues {\n\t\tvariable, phiValue := v.variable, v.value\n\t\ttyp := variable.getType()\n\t\tblk.addParamOn(b, phiValue)\n\t\tfor i := range blk.preds {\n\t\t\tpred := &blk.preds[i]\n\t\t\tpredValue := b.findValue(typ, variable, pred.blk)\n\t\t\tif !predValue.Valid() {\n\t\t\t\tpanic(\"BUG: value is not defined anywhere in the predecessors in the CFG\")\n\t\t\t}\n\t\t\tpred.branch.addArgumentBranchInst(b, predValue)\n\t\t}\n\t}\n}\n\n// Format implements Builder.Format.\nfunc (b *builder) Format() string {\n\tstr := strings.Builder{}\n\tusedSigs := b.usedSignatures()\n\tif len(usedSigs) > 0 {\n\t\tstr.WriteByte('\\n')\n\t\tstr.WriteString(\"signatures:\\n\")\n\t\tfor _, sig := range usedSigs {\n\t\t\tstr.WriteByte('\\t')\n\t\t\tstr.WriteString(sig.String())\n\t\t\tstr.WriteByte('\\n')\n\t\t}\n\t}\n\n\tvar iterBegin, iterNext func() *basicBlock\n\tif b.doneBlockLayout {\n\t\titerBegin, iterNext = b.blockIteratorReversePostOrderBegin, b.blockIteratorReversePostOrderNext\n\t} else {\n\t\titerBegin, iterNext = b.blockIteratorBegin, b.blockIteratorNext\n\t}\n\tfor bb := iterBegin(); bb != nil; bb = iterNext() {\n\t\tstr.WriteByte('\\n')\n\t\tstr.WriteString(bb.formatHeader(b))\n\t\tstr.WriteByte('\\n')\n\n\t\tfor cur := bb.Root(); cur != nil; cur = cur.Next() {\n\t\t\tstr.WriteByte('\\t')\n\t\t\tstr.WriteString(cur.Format(b))\n\t\t\tstr.WriteByte('\\n')\n\t\t}\n\t}\n\treturn str.String()\n}\n\n// BlockIteratorNext implements Builder.BlockIteratorNext.\nfunc (b *builder) BlockIteratorNext() BasicBlock {\n\tif blk := b.blockIteratorNext(); blk == nil {\n\t\treturn nil // BasicBlock((*basicBlock)(nil)) != BasicBlock(nil)\n\t} else {\n\t\treturn blk\n\t}\n}\n\n// BlockIteratorNext implements Builder.BlockIteratorNext.\nfunc (b *builder) blockIteratorNext() *basicBlock {\n\tindex := b.blockIterCur\n\tfor {\n\t\tif index == b.basicBlocksPool.Allocated() {\n\t\t\treturn nil\n\t\t}\n\t\tret := b.basicBlocksPool.View(index)\n\t\tindex++\n\t\tif !ret.invalid {\n\t\t\tb.blockIterCur = index\n\t\t\treturn ret\n\t\t}\n\t}\n}\n\n// BlockIteratorBegin implements Builder.BlockIteratorBegin.\nfunc (b *builder) BlockIteratorBegin() BasicBlock {\n\treturn b.blockIteratorBegin()\n}\n\n// BlockIteratorBegin implements Builder.BlockIteratorBegin.\nfunc (b *builder) blockIteratorBegin() *basicBlock {\n\tb.blockIterCur = 0\n\treturn b.blockIteratorNext()\n}\n\n// BlockIteratorReversePostOrderBegin implements Builder.BlockIteratorReversePostOrderBegin.\nfunc (b *builder) BlockIteratorReversePostOrderBegin() BasicBlock {\n\treturn b.blockIteratorReversePostOrderBegin()\n}\n\n// BlockIteratorBegin implements Builder.BlockIteratorBegin.\nfunc (b *builder) blockIteratorReversePostOrderBegin() *basicBlock {\n\tb.blockIterCur = 0\n\treturn b.blockIteratorReversePostOrderNext()\n}\n\n// BlockIteratorReversePostOrderNext implements Builder.BlockIteratorReversePostOrderNext.\nfunc (b *builder) BlockIteratorReversePostOrderNext() BasicBlock {\n\tif blk := b.blockIteratorReversePostOrderNext(); blk == nil {\n\t\treturn nil // BasicBlock((*basicBlock)(nil)) != BasicBlock(nil)\n\t} else {\n\t\treturn blk\n\t}\n}\n\n// BlockIteratorNext implements Builder.BlockIteratorNext.\nfunc (b *builder) blockIteratorReversePostOrderNext() *basicBlock {\n\tif b.blockIterCur >= len(b.reversePostOrderedBasicBlocks) {\n\t\treturn nil\n\t} else {\n\t\tret := b.reversePostOrderedBasicBlocks[b.blockIterCur]\n\t\tb.blockIterCur++\n\t\treturn ret\n\t}\n}\n\n// ValuesInfo implements Builder.ValuesInfo.\nfunc (b *builder) ValuesInfo() []ValueInfo {\n\treturn b.valuesInfo\n}\n\n// alias records the alias of the given values. The alias(es) will be\n// eliminated in the optimization pass via resolveArgumentAlias.\nfunc (b *builder) alias(dst, src Value) {\n\tdid := int(dst.ID())\n\tif did >= len(b.valuesInfo) {\n\t\tl := did + 1 - len(b.valuesInfo)\n\t\tb.valuesInfo = append(b.valuesInfo, make([]ValueInfo, l)...)\n\t\tview := b.valuesInfo[len(b.valuesInfo)-l:]\n\t\tfor i := range view {\n\t\t\tview[i].alias = ValueInvalid\n\t\t}\n\t}\n\tb.valuesInfo[did].alias = src\n}\n\n// resolveArgumentAlias resolves the alias of the arguments of the given instruction.\nfunc (b *builder) resolveArgumentAlias(instr *Instruction) {\n\tif instr.v.Valid() {\n\t\tinstr.v = b.resolveAlias(instr.v)\n\t}\n\n\tif instr.v2.Valid() {\n\t\tinstr.v2 = b.resolveAlias(instr.v2)\n\t}\n\n\tif instr.v3.Valid() {\n\t\tinstr.v3 = b.resolveAlias(instr.v3)\n\t}\n\n\tview := instr.vs.View()\n\tfor i, v := range view {\n\t\tview[i] = b.resolveAlias(v)\n\t}\n}\n\n// resolveAlias resolves the alias of the given value.\nfunc (b *builder) resolveAlias(v Value) Value {\n\tinfo := b.valuesInfo\n\tl := ValueID(len(info))\n\t// Some aliases are chained, so we need to resolve them recursively.\n\tfor {\n\t\tvid := v.ID()\n\t\tif vid < l && info[vid].alias.Valid() {\n\t\t\tv = info[vid].alias\n\t\t} else {\n\t\t\tbreak\n\t\t}\n\t}\n\treturn v\n}\n\n// entryBlk returns the entry block of the function.\nfunc (b *builder) entryBlk() *basicBlock {\n\treturn b.basicBlocksPool.View(0)\n}\n\n// isDominatedBy returns true if the given block `n` is dominated by the given block `d`.\n// Before calling this, the builder must pass by passCalculateImmediateDominators.\nfunc (b *builder) isDominatedBy(n *basicBlock, d *basicBlock) bool {\n\tif len(b.dominators) == 0 {\n\t\tpanic(\"BUG: passCalculateImmediateDominators must be called before calling isDominatedBy\")\n\t}\n\tent := b.entryBlk()\n\tdoms := b.dominators\n\tfor n != d && n != ent {\n\t\tn = doms[n.id]\n\t}\n\treturn n == d\n}\n\n// BlockIDMax implements Builder.BlockIDMax.\nfunc (b *builder) BlockIDMax() BasicBlockID {\n\treturn BasicBlockID(b.basicBlocksPool.Allocated())\n}\n\n// InsertUndefined implements Builder.InsertUndefined.\nfunc (b *builder) InsertUndefined() {\n\tinstr := b.AllocateInstruction()\n\tinstr.opcode = OpcodeUndefined\n\tb.InsertInstruction(instr)\n}\n\n// LoopNestingForestRoots implements Builder.LoopNestingForestRoots.\nfunc (b *builder) LoopNestingForestRoots() []BasicBlock {\n\treturn b.loopNestingForestRoots\n}\n\n// LowestCommonAncestor implements Builder.LowestCommonAncestor.\nfunc (b *builder) LowestCommonAncestor(blk1, blk2 BasicBlock) BasicBlock {\n\treturn b.sparseTree.findLCA(blk1.ID(), blk2.ID())\n}\n\n// InstructionOfValue returns the instruction that produces the given Value, or nil\n// if the Value is not produced by any instruction.\nfunc (b *builder) InstructionOfValue(v Value) *Instruction {\n\tinstrID := v.instructionID()\n\tif instrID <= 0 {\n\t\treturn nil\n\t}\n\treturn b.instructionsPool.View(instrID - 1)\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/ssa/cmp.go",
    "content": "package ssa\n\n// IntegerCmpCond represents a condition for integer comparison.\ntype IntegerCmpCond byte\n\nconst (\n\t// IntegerCmpCondInvalid represents an invalid condition.\n\tIntegerCmpCondInvalid IntegerCmpCond = iota\n\t// IntegerCmpCondEqual represents \"==\".\n\tIntegerCmpCondEqual\n\t// IntegerCmpCondNotEqual represents \"!=\".\n\tIntegerCmpCondNotEqual\n\t// IntegerCmpCondSignedLessThan represents Signed \"<\".\n\tIntegerCmpCondSignedLessThan\n\t// IntegerCmpCondSignedGreaterThanOrEqual represents Signed \">=\".\n\tIntegerCmpCondSignedGreaterThanOrEqual\n\t// IntegerCmpCondSignedGreaterThan represents Signed \">\".\n\tIntegerCmpCondSignedGreaterThan\n\t// IntegerCmpCondSignedLessThanOrEqual represents Signed \"<=\".\n\tIntegerCmpCondSignedLessThanOrEqual\n\t// IntegerCmpCondUnsignedLessThan represents Unsigned \"<\".\n\tIntegerCmpCondUnsignedLessThan\n\t// IntegerCmpCondUnsignedGreaterThanOrEqual represents Unsigned \">=\".\n\tIntegerCmpCondUnsignedGreaterThanOrEqual\n\t// IntegerCmpCondUnsignedGreaterThan represents Unsigned \">\".\n\tIntegerCmpCondUnsignedGreaterThan\n\t// IntegerCmpCondUnsignedLessThanOrEqual represents Unsigned \"<=\".\n\tIntegerCmpCondUnsignedLessThanOrEqual\n)\n\n// String implements fmt.Stringer.\nfunc (i IntegerCmpCond) String() string {\n\tswitch i {\n\tcase IntegerCmpCondEqual:\n\t\treturn \"eq\"\n\tcase IntegerCmpCondNotEqual:\n\t\treturn \"neq\"\n\tcase IntegerCmpCondSignedLessThan:\n\t\treturn \"lt_s\"\n\tcase IntegerCmpCondSignedGreaterThanOrEqual:\n\t\treturn \"ge_s\"\n\tcase IntegerCmpCondSignedGreaterThan:\n\t\treturn \"gt_s\"\n\tcase IntegerCmpCondSignedLessThanOrEqual:\n\t\treturn \"le_s\"\n\tcase IntegerCmpCondUnsignedLessThan:\n\t\treturn \"lt_u\"\n\tcase IntegerCmpCondUnsignedGreaterThanOrEqual:\n\t\treturn \"ge_u\"\n\tcase IntegerCmpCondUnsignedGreaterThan:\n\t\treturn \"gt_u\"\n\tcase IntegerCmpCondUnsignedLessThanOrEqual:\n\t\treturn \"le_u\"\n\tdefault:\n\t\tpanic(\"invalid integer comparison condition\")\n\t}\n}\n\n// Signed returns true if the condition is signed integer comparison.\nfunc (i IntegerCmpCond) Signed() bool {\n\tswitch i {\n\tcase IntegerCmpCondSignedLessThan, IntegerCmpCondSignedGreaterThanOrEqual,\n\t\tIntegerCmpCondSignedGreaterThan, IntegerCmpCondSignedLessThanOrEqual:\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\ntype FloatCmpCond byte\n\nconst (\n\t// FloatCmpCondInvalid represents an invalid condition.\n\tFloatCmpCondInvalid FloatCmpCond = iota\n\t// FloatCmpCondEqual represents \"==\".\n\tFloatCmpCondEqual\n\t// FloatCmpCondNotEqual represents \"!=\".\n\tFloatCmpCondNotEqual\n\t// FloatCmpCondLessThan represents \"<\".\n\tFloatCmpCondLessThan\n\t// FloatCmpCondLessThanOrEqual represents \"<=\".\n\tFloatCmpCondLessThanOrEqual\n\t// FloatCmpCondGreaterThan represents \">\".\n\tFloatCmpCondGreaterThan\n\t// FloatCmpCondGreaterThanOrEqual represents \">=\".\n\tFloatCmpCondGreaterThanOrEqual\n)\n\n// String implements fmt.Stringer.\nfunc (f FloatCmpCond) String() string {\n\tswitch f {\n\tcase FloatCmpCondEqual:\n\t\treturn \"eq\"\n\tcase FloatCmpCondNotEqual:\n\t\treturn \"neq\"\n\tcase FloatCmpCondLessThan:\n\t\treturn \"lt\"\n\tcase FloatCmpCondLessThanOrEqual:\n\t\treturn \"le\"\n\tcase FloatCmpCondGreaterThan:\n\t\treturn \"gt\"\n\tcase FloatCmpCondGreaterThanOrEqual:\n\t\treturn \"ge\"\n\tdefault:\n\t\tpanic(\"invalid float comparison condition\")\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/ssa/funcref.go",
    "content": "package ssa\n\nimport \"fmt\"\n\n// FuncRef is a unique identifier for a function of the frontend,\n// and is used to reference the function in function call.\ntype FuncRef uint32\n\n// String implements fmt.Stringer.\nfunc (r FuncRef) String() string {\n\treturn fmt.Sprintf(\"f%d\", r)\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/ssa/instructions.go",
    "content": "package ssa\n\nimport (\n\t\"fmt\"\n\t\"math\"\n\t\"strings\"\n\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi\"\n)\n\n// Opcode represents a SSA instruction.\ntype Opcode uint32\n\n// Instruction represents an instruction whose opcode is specified by\n// Opcode. Since Go doesn't have union type, we use this flattened type\n// for all instructions, and therefore each field has different meaning\n// depending on Opcode.\ntype Instruction struct {\n\t// id is the unique ID of this instruction which ascends from 0 following the order of program.\n\tid         int\n\topcode     Opcode\n\tu1, u2     uint64\n\tv          Value\n\tv2         Value\n\tv3         Value\n\tvs         Values\n\ttyp        Type\n\tprev, next *Instruction\n\n\t// rValue is the (first) return value of this instruction.\n\t// For branching instructions except for OpcodeBrTable, they hold BlockID to jump cast to Value.\n\trValue Value\n\t// rValues are the rest of the return values of this instruction.\n\t// For OpcodeBrTable, it holds the list of BlockID to jump cast to Value.\n\trValues        Values\n\tgid            InstructionGroupID\n\tsourceOffset   SourceOffset\n\tlive           bool\n\talreadyLowered bool\n}\n\n// SourceOffset represents the offset of the source of an instruction.\ntype SourceOffset int64\n\nconst sourceOffsetUnknown = -1\n\n// Valid returns true if this source offset is valid.\nfunc (l SourceOffset) Valid() bool {\n\treturn l != sourceOffsetUnknown\n}\n\nfunc (i *Instruction) annotateSourceOffset(line SourceOffset) {\n\ti.sourceOffset = line\n}\n\n// SourceOffset returns the source offset of this instruction.\nfunc (i *Instruction) SourceOffset() SourceOffset {\n\treturn i.sourceOffset\n}\n\n// Opcode returns the opcode of this instruction.\nfunc (i *Instruction) Opcode() Opcode {\n\treturn i.opcode\n}\n\n// GroupID returns the InstructionGroupID of this instruction.\nfunc (i *Instruction) GroupID() InstructionGroupID {\n\treturn i.gid\n}\n\n// MarkLowered marks this instruction as already lowered.\nfunc (i *Instruction) MarkLowered() {\n\ti.alreadyLowered = true\n}\n\n// Lowered returns true if this instruction is already lowered.\nfunc (i *Instruction) Lowered() bool {\n\treturn i.alreadyLowered\n}\n\n// resetInstruction resets this instruction to the initial state.\nfunc resetInstruction(i *Instruction) {\n\t*i = Instruction{}\n\ti.v = ValueInvalid\n\ti.v2 = ValueInvalid\n\ti.v3 = ValueInvalid\n\ti.rValue = ValueInvalid\n\ti.typ = typeInvalid\n\ti.vs = ValuesNil\n\ti.sourceOffset = sourceOffsetUnknown\n}\n\n// InstructionGroupID is assigned to each instruction and represents a group of instructions\n// where each instruction is interchangeable with others except for the last instruction\n// in the group which has side effects. In short, InstructionGroupID is determined by the side effects of instructions.\n// That means, if there's an instruction with side effect between two instructions, then these two instructions\n// will have different instructionGroupID. Note that each block always ends with branching, which is with side effects,\n// therefore, instructions in different blocks always have different InstructionGroupID(s).\n//\n// The notable application of this is used in lowering SSA-level instruction to a ISA specific instruction,\n// where we eagerly try to merge multiple instructions into single operation etc. Such merging cannot be done\n// if these instruction have different InstructionGroupID since it will change the semantics of a program.\n//\n// See passDeadCodeElimination.\ntype InstructionGroupID uint32\n\n// Returns Value(s) produced by this instruction if any.\n// The `first` is the first return value, and `rest` is the rest of the values.\nfunc (i *Instruction) Returns() (first Value, rest []Value) {\n\tif i.IsBranching() {\n\t\treturn ValueInvalid, nil\n\t}\n\treturn i.rValue, i.rValues.View()\n}\n\n// Return returns a Value(s) produced by this instruction if any.\n// If there's multiple return values, only the first one is returned.\nfunc (i *Instruction) Return() (first Value) {\n\treturn i.rValue\n}\n\n// Args returns the arguments to this instruction.\nfunc (i *Instruction) Args() (v1, v2, v3 Value, vs []Value) {\n\treturn i.v, i.v2, i.v3, i.vs.View()\n}\n\n// Arg returns the first argument to this instruction.\nfunc (i *Instruction) Arg() Value {\n\treturn i.v\n}\n\n// Arg2 returns the first two arguments to this instruction.\nfunc (i *Instruction) Arg2() (Value, Value) {\n\treturn i.v, i.v2\n}\n\n// ArgWithLane returns the first argument to this instruction, and the lane type.\nfunc (i *Instruction) ArgWithLane() (Value, VecLane) {\n\treturn i.v, VecLane(i.u1)\n}\n\n// Arg2WithLane returns the first two arguments to this instruction, and the lane type.\nfunc (i *Instruction) Arg2WithLane() (Value, Value, VecLane) {\n\treturn i.v, i.v2, VecLane(i.u1)\n}\n\n// ShuffleData returns the first two arguments to this instruction and 2 uint64s `lo`, `hi`.\n//\n// Note: Each uint64 encodes a sequence of 8 bytes where each byte encodes a VecLane,\n// so that the 128bit integer `hi<<64|lo` packs a slice `[16]VecLane`,\n// where `lane[0]` is the least significant byte, and `lane[n]` is shifted to offset `n*8`.\nfunc (i *Instruction) ShuffleData() (v Value, v2 Value, lo uint64, hi uint64) {\n\treturn i.v, i.v2, i.u1, i.u2\n}\n\n// Arg3 returns the first three arguments to this instruction.\nfunc (i *Instruction) Arg3() (Value, Value, Value) {\n\treturn i.v, i.v2, i.v3\n}\n\n// Next returns the next instruction laid out next to itself.\nfunc (i *Instruction) Next() *Instruction {\n\treturn i.next\n}\n\n// Prev returns the previous instruction laid out prior to itself.\nfunc (i *Instruction) Prev() *Instruction {\n\treturn i.prev\n}\n\n// IsBranching returns true if this instruction is a branching instruction.\nfunc (i *Instruction) IsBranching() bool {\n\tswitch i.opcode {\n\tcase OpcodeJump, OpcodeBrz, OpcodeBrnz, OpcodeBrTable:\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\n// TODO: complete opcode comments.\nconst (\n\tOpcodeInvalid Opcode = iota\n\n\t// OpcodeUndefined is a placeholder for undefined opcode. This can be used for debugging to intentionally\n\t// cause a crash at certain point.\n\tOpcodeUndefined\n\n\t// OpcodeJump takes the list of args to the `block` and unconditionally jumps to it.\n\tOpcodeJump\n\n\t// OpcodeBrz branches into `blk` with `args`  if the value `c` equals zero: `Brz c, blk, args`.\n\tOpcodeBrz\n\n\t// OpcodeBrnz branches into `blk` with `args`  if the value `c` is not zero: `Brnz c, blk, args`.\n\tOpcodeBrnz\n\n\t// OpcodeBrTable takes the index value `index`, and branches into `labelX`. If the `index` is out of range,\n\t// it branches into the last labelN: `BrTable index, [label1, label2, ... labelN]`.\n\tOpcodeBrTable\n\n\t// OpcodeExitWithCode exit the execution immediately.\n\tOpcodeExitWithCode\n\n\t// OpcodeExitIfTrueWithCode exits the execution immediately if the value `c` is not zero.\n\tOpcodeExitIfTrueWithCode\n\n\t// OpcodeReturn returns from the function: `return rvalues`.\n\tOpcodeReturn\n\n\t// OpcodeCall calls a function specified by the symbol FN with arguments `args`: `returnvals = Call FN, args...`\n\t// This is a \"near\" call, which means the call target is known at compile time, and the target is relatively close\n\t// to this function. If the target cannot be reached by near call, the backend fails to compile.\n\tOpcodeCall\n\n\t// OpcodeCallIndirect calls a function specified by `callee` which is a function address: `returnvals = call_indirect SIG, callee, args`.\n\t// Note that this is different from call_indirect in Wasm, which also does type checking, etc.\n\tOpcodeCallIndirect\n\n\t// OpcodeSplat performs a vector splat operation: `v = Splat.lane x`.\n\tOpcodeSplat\n\n\t// OpcodeSwizzle performs a vector swizzle operation: `v = Swizzle.lane x, y`.\n\tOpcodeSwizzle\n\n\t// OpcodeInsertlane inserts a lane value into a vector: `v = InsertLane x, y, Idx`.\n\tOpcodeInsertlane\n\n\t// OpcodeExtractlane extracts a lane value from a vector: `v = ExtractLane x, Idx`.\n\tOpcodeExtractlane\n\n\t// OpcodeLoad loads a Type value from the [base + offset] address: `v = Load base, offset`.\n\tOpcodeLoad\n\n\t// OpcodeStore stores a Type value to the [base + offset] address: `Store v, base, offset`.\n\tOpcodeStore\n\n\t// OpcodeUload8 loads the 8-bit value from the [base + offset] address, zero-extended to 64 bits: `v = Uload8 base, offset`.\n\tOpcodeUload8\n\n\t// OpcodeSload8 loads the 8-bit value from the [base + offset] address, sign-extended to 64 bits: `v = Sload8 base, offset`.\n\tOpcodeSload8\n\n\t// OpcodeIstore8 stores the 8-bit value to the [base + offset] address, sign-extended to 64 bits: `Istore8 v, base, offset`.\n\tOpcodeIstore8\n\n\t// OpcodeUload16 loads the 16-bit value from the [base + offset] address, zero-extended to 64 bits: `v = Uload16 base, offset`.\n\tOpcodeUload16\n\n\t// OpcodeSload16 loads the 16-bit value from the [base + offset] address, sign-extended to 64 bits: `v = Sload16 base, offset`.\n\tOpcodeSload16\n\n\t// OpcodeIstore16 stores the 16-bit value to the [base + offset] address, zero-extended to 64 bits: `Istore16 v, base, offset`.\n\tOpcodeIstore16\n\n\t// OpcodeUload32 loads the 32-bit value from the [base + offset] address, zero-extended to 64 bits: `v = Uload32 base, offset`.\n\tOpcodeUload32\n\n\t// OpcodeSload32 loads the 32-bit value from the [base + offset] address, sign-extended to 64 bits: `v = Sload32 base, offset`.\n\tOpcodeSload32\n\n\t// OpcodeIstore32 stores the 32-bit value to the [base + offset] address, zero-extended to 64 bits: `Istore16 v, base, offset`.\n\tOpcodeIstore32\n\n\t// OpcodeLoadSplat represents a load that replicates the loaded value to all lanes `v = LoadSplat.lane p, Offset`.\n\tOpcodeLoadSplat\n\n\t// OpcodeVZeroExtLoad loads a scalar single/double precision floating point value from the [p + Offset] address,\n\t// and zero-extend it to the V128 value: `v = VExtLoad  p, Offset`.\n\tOpcodeVZeroExtLoad\n\n\t// OpcodeIconst represents the integer const.\n\tOpcodeIconst\n\n\t// OpcodeF32const represents the single-precision const.\n\tOpcodeF32const\n\n\t// OpcodeF64const represents the double-precision const.\n\tOpcodeF64const\n\n\t// OpcodeVconst represents the 128bit vector const.\n\tOpcodeVconst\n\n\t// OpcodeVbor computes binary or between two 128bit vectors: `v = bor x, y`.\n\tOpcodeVbor\n\n\t// OpcodeVbxor computes binary xor between two 128bit vectors: `v = bxor x, y`.\n\tOpcodeVbxor\n\n\t// OpcodeVband computes binary and between two 128bit vectors: `v = band x, y`.\n\tOpcodeVband\n\n\t// OpcodeVbandnot computes binary and-not between two 128bit vectors: `v = bandnot x, y`.\n\tOpcodeVbandnot\n\n\t// OpcodeVbnot negates a 128bit vector: `v = bnot x`.\n\tOpcodeVbnot\n\n\t// OpcodeVbitselect uses the bits in the control mask c to select the corresponding bit from x when 1\n\t// and y when 0: `v = bitselect c, x, y`.\n\tOpcodeVbitselect\n\n\t// OpcodeShuffle shuffles two vectors using the given 128-bit immediate: `v = shuffle imm, x, y`.\n\t// For each byte in the immediate, a value i in [0, 15] selects the i-th byte in vector x;\n\t// i in [16, 31] selects the (i-16)-th byte in vector y.\n\tOpcodeShuffle\n\n\t// OpcodeSelect chooses between two values based on a condition `c`: `v = Select c, x, y`.\n\tOpcodeSelect\n\n\t// OpcodeVanyTrue performs a any true operation: `s = VanyTrue a`.\n\tOpcodeVanyTrue\n\n\t// OpcodeVallTrue performs a lane-wise all true operation: `s = VallTrue.lane a`.\n\tOpcodeVallTrue\n\n\t// OpcodeVhighBits performs a lane-wise extract of the high bits: `v = VhighBits.lane a`.\n\tOpcodeVhighBits\n\n\t// OpcodeIcmp compares two integer values with the given condition: `v = icmp Cond, x, y`.\n\tOpcodeIcmp\n\n\t// OpcodeVIcmp compares two integer values with the given condition: `v = vicmp Cond, x, y` on vector.\n\tOpcodeVIcmp\n\n\t// OpcodeIcmpImm compares an integer value with the immediate value on the given condition: `v = icmp_imm Cond, x, Y`.\n\tOpcodeIcmpImm\n\n\t// OpcodeIadd performs an integer addition: `v = Iadd x, y`.\n\tOpcodeIadd\n\n\t// OpcodeVIadd performs an integer addition: `v = VIadd.lane x, y` on vector.\n\tOpcodeVIadd\n\n\t// OpcodeVSaddSat performs a signed saturating vector addition: `v = VSaddSat.lane x, y` on vector.\n\tOpcodeVSaddSat\n\n\t// OpcodeVUaddSat performs an unsigned saturating vector addition: `v = VUaddSat.lane x, y` on vector.\n\tOpcodeVUaddSat\n\n\t// OpcodeIsub performs an integer subtraction: `v = Isub x, y`.\n\tOpcodeIsub\n\n\t// OpcodeVIsub performs an integer subtraction: `v = VIsub.lane x, y` on vector.\n\tOpcodeVIsub\n\n\t// OpcodeVSsubSat performs a signed saturating vector subtraction: `v = VSsubSat.lane x, y` on vector.\n\tOpcodeVSsubSat\n\n\t// OpcodeVUsubSat performs an unsigned saturating vector subtraction: `v = VUsubSat.lane x, y` on vector.\n\tOpcodeVUsubSat\n\n\t// OpcodeVImin performs a signed integer min: `v = VImin.lane x, y` on vector.\n\tOpcodeVImin\n\n\t// OpcodeVUmin performs an unsigned integer min: `v = VUmin.lane x, y` on vector.\n\tOpcodeVUmin\n\n\t// OpcodeVImax performs a signed integer max: `v = VImax.lane x, y` on vector.\n\tOpcodeVImax\n\n\t// OpcodeVUmax performs an unsigned integer max: `v = VUmax.lane x, y` on vector.\n\tOpcodeVUmax\n\n\t// OpcodeVAvgRound performs an unsigned integer avg, truncating to zero: `v = VAvgRound.lane x, y` on vector.\n\tOpcodeVAvgRound\n\n\t// OpcodeVImul performs an integer multiplication: `v = VImul.lane x, y` on vector.\n\tOpcodeVImul\n\n\t// OpcodeVIneg negates the given integer vector value: `v = VIneg x`.\n\tOpcodeVIneg\n\n\t// OpcodeVIpopcnt counts the number of 1-bits in the given vector: `v = VIpopcnt x`.\n\tOpcodeVIpopcnt\n\n\t// OpcodeVIabs returns the absolute value for the given vector value: `v = VIabs.lane x`.\n\tOpcodeVIabs\n\n\t// OpcodeVIshl shifts x left by (y mod lane-width): `v = VIshl.lane x, y` on vector.\n\tOpcodeVIshl\n\n\t// OpcodeVUshr shifts x right by (y mod lane-width), unsigned: `v = VUshr.lane x, y` on vector.\n\tOpcodeVUshr\n\n\t// OpcodeVSshr shifts x right by (y mod lane-width), signed: `v = VSshr.lane x, y` on vector.\n\tOpcodeVSshr\n\n\t// OpcodeVFabs takes the absolute value of a floating point value: `v = VFabs.lane x on vector.\n\tOpcodeVFabs\n\n\t// OpcodeVFmax takes the maximum of two floating point values: `v = VFmax.lane x, y on vector.\n\tOpcodeVFmax\n\n\t// OpcodeVFmin takes the minimum of two floating point values: `v = VFmin.lane x, y on vector.\n\tOpcodeVFmin\n\n\t// OpcodeVFneg negates the given floating point vector value: `v = VFneg x`.\n\tOpcodeVFneg\n\n\t// OpcodeVFadd performs a floating point addition: `v = VFadd.lane x, y` on vector.\n\tOpcodeVFadd\n\n\t// OpcodeVFsub performs a floating point subtraction: `v = VFsub.lane x, y` on vector.\n\tOpcodeVFsub\n\n\t// OpcodeVFmul performs a floating point multiplication: `v = VFmul.lane x, y` on vector.\n\tOpcodeVFmul\n\n\t// OpcodeVFdiv performs a floating point division: `v = VFdiv.lane x, y` on vector.\n\tOpcodeVFdiv\n\n\t// OpcodeVFcmp compares two float values with the given condition: `v = VFcmp.lane Cond, x, y` on float.\n\tOpcodeVFcmp\n\n\t// OpcodeVCeil takes the ceiling of the given floating point value: `v = ceil.lane x` on vector.\n\tOpcodeVCeil\n\n\t// OpcodeVFloor takes the floor of the given floating point value: `v = floor.lane x` on vector.\n\tOpcodeVFloor\n\n\t// OpcodeVTrunc takes the truncation of the given floating point value: `v = trunc.lane x` on vector.\n\tOpcodeVTrunc\n\n\t// OpcodeVNearest takes the nearest integer of the given floating point value: `v = nearest.lane x` on vector.\n\tOpcodeVNearest\n\n\t// OpcodeVMaxPseudo computes the lane-wise maximum value `v = VMaxPseudo.lane x, y` on vector defined as `x < y ? x : y`.\n\tOpcodeVMaxPseudo\n\n\t// OpcodeVMinPseudo computes the lane-wise minimum value `v = VMinPseudo.lane x, y` on vector defined as `y < x ? x : y`.\n\tOpcodeVMinPseudo\n\n\t// OpcodeVSqrt takes the minimum of two floating point values: `v = VFmin.lane x, y` on vector.\n\tOpcodeVSqrt\n\n\t// OpcodeVFcvtToUintSat converts a floating point value to an unsigned integer: `v = FcvtToUintSat.lane x` on vector.\n\tOpcodeVFcvtToUintSat\n\n\t// OpcodeVFcvtToSintSat converts a floating point value to a signed integer: `v = VFcvtToSintSat.lane x` on vector.\n\tOpcodeVFcvtToSintSat\n\n\t// OpcodeVFcvtFromUint converts a floating point value from an unsigned integer: `v = FcvtFromUint.lane x` on vector.\n\t// x is always a 32-bit integer lane, and the result is either a 32-bit or 64-bit floating point-sized vector.\n\tOpcodeVFcvtFromUint\n\n\t// OpcodeVFcvtFromSint converts a floating point value from a signed integer: `v = VFcvtFromSint.lane x` on vector.\n\t// x is always a 32-bit integer lane, and the result is either a 32-bit or 64-bit floating point-sized vector.\n\tOpcodeVFcvtFromSint\n\n\t// OpcodeImul performs an integer multiplication: `v = Imul x, y`.\n\tOpcodeImul\n\n\t// OpcodeUdiv performs the unsigned integer division `v = Udiv x, y`.\n\tOpcodeUdiv\n\n\t// OpcodeSdiv performs the signed integer division `v = Sdiv x, y`.\n\tOpcodeSdiv\n\n\t// OpcodeUrem computes the remainder of the unsigned integer division `v = Urem x, y`.\n\tOpcodeUrem\n\n\t// OpcodeSrem computes the remainder of the signed integer division `v = Srem x, y`.\n\tOpcodeSrem\n\n\t// OpcodeBand performs a binary and: `v = Band x, y`.\n\tOpcodeBand\n\n\t// OpcodeBor performs a binary or: `v = Bor x, y`.\n\tOpcodeBor\n\n\t// OpcodeBxor performs a binary xor: `v = Bxor x, y`.\n\tOpcodeBxor\n\n\t// OpcodeBnot performs a binary not: `v = Bnot x`.\n\tOpcodeBnot\n\n\t// OpcodeRotl rotates the given integer value to the left: `v = Rotl x, y`.\n\tOpcodeRotl\n\n\t// OpcodeRotr rotates the given integer value to the right: `v = Rotr x, y`.\n\tOpcodeRotr\n\n\t// OpcodeIshl does logical shift left: `v = Ishl x, y`.\n\tOpcodeIshl\n\n\t// OpcodeUshr does logical shift right: `v = Ushr x, y`.\n\tOpcodeUshr\n\n\t// OpcodeSshr does arithmetic shift right: `v = Sshr x, y`.\n\tOpcodeSshr\n\n\t// OpcodeClz counts the number of leading zeros: `v = clz x`.\n\tOpcodeClz\n\n\t// OpcodeCtz counts the number of trailing zeros: `v = ctz x`.\n\tOpcodeCtz\n\n\t// OpcodePopcnt counts the number of 1-bits: `v = popcnt x`.\n\tOpcodePopcnt\n\n\t// OpcodeFcmp compares two floating point values: `v = fcmp Cond, x, y`.\n\tOpcodeFcmp\n\n\t// OpcodeFadd performs a floating point addition: / `v = Fadd x, y`.\n\tOpcodeFadd\n\n\t// OpcodeFsub performs a floating point subtraction: `v = Fsub x, y`.\n\tOpcodeFsub\n\n\t// OpcodeFmul performs a floating point multiplication: `v = Fmul x, y`.\n\tOpcodeFmul\n\n\t// OpcodeSqmulRoundSat performs a lane-wise saturating rounding multiplication\n\t// in Q15 format: `v = SqmulRoundSat.lane x,y` on vector.\n\tOpcodeSqmulRoundSat\n\n\t// OpcodeFdiv performs a floating point division: `v = Fdiv x, y`.\n\tOpcodeFdiv\n\n\t// OpcodeSqrt takes the square root of the given floating point value: `v = sqrt x`.\n\tOpcodeSqrt\n\n\t// OpcodeFneg negates the given floating point value: `v = Fneg x`.\n\tOpcodeFneg\n\n\t// OpcodeFabs takes the absolute value of the given floating point value: `v = fabs x`.\n\tOpcodeFabs\n\n\t// OpcodeFcopysign copies the sign of the second floating point value to the first floating point value:\n\t// `v = Fcopysign x, y`.\n\tOpcodeFcopysign\n\n\t// OpcodeFmin takes the minimum of two floating point values: `v = fmin x, y`.\n\tOpcodeFmin\n\n\t// OpcodeFmax takes the maximum of two floating point values: `v = fmax x, y`.\n\tOpcodeFmax\n\n\t// OpcodeCeil takes the ceiling of the given floating point value: `v = ceil x`.\n\tOpcodeCeil\n\n\t// OpcodeFloor takes the floor of the given floating point value: `v = floor x`.\n\tOpcodeFloor\n\n\t// OpcodeTrunc takes the truncation of the given floating point value: `v = trunc x`.\n\tOpcodeTrunc\n\n\t// OpcodeNearest takes the nearest integer of the given floating point value: `v = nearest x`.\n\tOpcodeNearest\n\n\t// OpcodeBitcast is a bitcast operation: `v = bitcast x`.\n\tOpcodeBitcast\n\n\t// OpcodeIreduce narrow the given integer: `v = Ireduce x`.\n\tOpcodeIreduce\n\n\t// OpcodeSnarrow converts two input vectors x, y into a smaller lane vector by narrowing each lane, signed `v = Snarrow.lane x, y`.\n\tOpcodeSnarrow\n\n\t// OpcodeUnarrow converts two input vectors x, y into a smaller lane vector by narrowing each lane, unsigned `v = Unarrow.lane x, y`.\n\tOpcodeUnarrow\n\n\t// OpcodeSwidenLow converts low half of the smaller lane vector to a larger lane vector, sign extended: `v = SwidenLow.lane x`.\n\tOpcodeSwidenLow\n\n\t// OpcodeSwidenHigh converts high half of the smaller lane vector to a larger lane vector, sign extended: `v = SwidenHigh.lane x`.\n\tOpcodeSwidenHigh\n\n\t// OpcodeUwidenLow converts low half of the smaller lane vector to a larger lane vector, zero (unsigned) extended: `v = UwidenLow.lane x`.\n\tOpcodeUwidenLow\n\n\t// OpcodeUwidenHigh converts high half of the smaller lane vector to a larger lane vector, zero (unsigned) extended: `v = UwidenHigh.lane x`.\n\tOpcodeUwidenHigh\n\n\t// OpcodeExtIaddPairwise is a lane-wise integer extended pairwise addition producing extended results (twice wider results than the inputs): `v = extiadd_pairwise x, y` on vector.\n\tOpcodeExtIaddPairwise\n\n\t// OpcodeWideningPairwiseDotProductS is a lane-wise widening pairwise dot product with signed saturation: `v = WideningPairwiseDotProductS x, y` on vector.\n\t// Currently, the only lane is i16, and the result is i32.\n\tOpcodeWideningPairwiseDotProductS\n\n\t// OpcodeUExtend zero-extends the given integer: `v = UExtend x, from->to`.\n\tOpcodeUExtend\n\n\t// OpcodeSExtend sign-extends the given integer: `v = SExtend x, from->to`.\n\tOpcodeSExtend\n\n\t// OpcodeFpromote promotes the given floating point value: `v = Fpromote x`.\n\tOpcodeFpromote\n\n\t// OpcodeFvpromoteLow converts the two lower single-precision floating point lanes\n\t// to the two double-precision lanes of the result: `v = FvpromoteLow.lane x` on vector.\n\tOpcodeFvpromoteLow\n\n\t// OpcodeFdemote demotes the given float point value: `v = Fdemote x`.\n\tOpcodeFdemote\n\n\t// OpcodeFvdemote converts the two double-precision floating point lanes\n\t// to two lower single-precision lanes of the result `v = Fvdemote.lane x`.\n\tOpcodeFvdemote\n\n\t// OpcodeFcvtToUint converts a floating point value to an unsigned integer: `v = FcvtToUint x`.\n\tOpcodeFcvtToUint\n\n\t// OpcodeFcvtToSint converts a floating point value to a signed integer: `v = FcvtToSint x`.\n\tOpcodeFcvtToSint\n\n\t// OpcodeFcvtToUintSat converts a floating point value to an unsigned integer: `v = FcvtToUintSat x` which saturates on overflow.\n\tOpcodeFcvtToUintSat\n\n\t// OpcodeFcvtToSintSat converts a floating point value to a signed integer: `v = FcvtToSintSat x` which saturates on overflow.\n\tOpcodeFcvtToSintSat\n\n\t// OpcodeFcvtFromUint converts an unsigned integer to a floating point value: `v = FcvtFromUint x`.\n\tOpcodeFcvtFromUint\n\n\t// OpcodeFcvtFromSint converts a signed integer to a floating point value: `v = FcvtFromSint x`.\n\tOpcodeFcvtFromSint\n\n\t// OpcodeAtomicRmw is atomic read-modify-write operation: `v = atomic_rmw op, p, offset, value`.\n\tOpcodeAtomicRmw\n\n\t// OpcodeAtomicCas is atomic compare-and-swap operation.\n\tOpcodeAtomicCas\n\n\t// OpcodeAtomicLoad is atomic load operation.\n\tOpcodeAtomicLoad\n\n\t// OpcodeAtomicStore is atomic store operation.\n\tOpcodeAtomicStore\n\n\t// OpcodeFence is a memory fence operation.\n\tOpcodeFence\n\n\t// OpcodeTailCallReturnCall is the equivalent of OpcodeCall (a \"near\" call)\n\t// for tail calls. Semantically, it combines Call + Return into a single operation.\n\tOpcodeTailCallReturnCall\n\n\t// OpcodeTailCallReturnCallIndirect is the equivalent of OpcodeCallIndirect (a call to a function address)\n\t// for tail calls. Semantically, it combines CallIndirect + Return into a single operation.\n\tOpcodeTailCallReturnCallIndirect\n\n\t// opcodeEnd marks the end of the opcode list.\n\topcodeEnd\n)\n\n// AtomicRmwOp represents the atomic read-modify-write operation.\ntype AtomicRmwOp byte\n\nconst (\n\t// AtomicRmwOpAdd is an atomic add operation.\n\tAtomicRmwOpAdd AtomicRmwOp = iota\n\t// AtomicRmwOpSub is an atomic sub operation.\n\tAtomicRmwOpSub\n\t// AtomicRmwOpAnd is an atomic and operation.\n\tAtomicRmwOpAnd\n\t// AtomicRmwOpOr is an atomic or operation.\n\tAtomicRmwOpOr\n\t// AtomicRmwOpXor is an atomic xor operation.\n\tAtomicRmwOpXor\n\t// AtomicRmwOpXchg is an atomic swap operation.\n\tAtomicRmwOpXchg\n)\n\n// String implements the fmt.Stringer.\nfunc (op AtomicRmwOp) String() string {\n\tswitch op {\n\tcase AtomicRmwOpAdd:\n\t\treturn \"add\"\n\tcase AtomicRmwOpSub:\n\t\treturn \"sub\"\n\tcase AtomicRmwOpAnd:\n\t\treturn \"and\"\n\tcase AtomicRmwOpOr:\n\t\treturn \"or\"\n\tcase AtomicRmwOpXor:\n\t\treturn \"xor\"\n\tcase AtomicRmwOpXchg:\n\t\treturn \"xchg\"\n\t}\n\tpanic(fmt.Sprintf(\"unknown AtomicRmwOp: %d\", op))\n}\n\n// returnTypesFn provides the info to determine the type of instruction.\n// t1 is the type of the first result, ts are the types of the remaining results.\ntype returnTypesFn func(b *builder, instr *Instruction) (t1 Type, ts []Type)\n\nvar (\n\treturnTypesFnNoReturns    returnTypesFn = func(b *builder, instr *Instruction) (t1 Type, ts []Type) { return typeInvalid, nil }\n\treturnTypesFnSingle                     = func(b *builder, instr *Instruction) (t1 Type, ts []Type) { return instr.typ, nil }\n\treturnTypesFnI32                        = func(b *builder, instr *Instruction) (t1 Type, ts []Type) { return TypeI32, nil }\n\treturnTypesFnF32                        = func(b *builder, instr *Instruction) (t1 Type, ts []Type) { return TypeF32, nil }\n\treturnTypesFnF64                        = func(b *builder, instr *Instruction) (t1 Type, ts []Type) { return TypeF64, nil }\n\treturnTypesFnV128                       = func(b *builder, instr *Instruction) (t1 Type, ts []Type) { return TypeV128, nil }\n\treturnTypesFnCallIndirect               = func(b *builder, instr *Instruction) (t1 Type, ts []Type) {\n\t\tsigID := SignatureID(instr.u1)\n\t\tsig, ok := b.signatures[sigID]\n\t\tif !ok {\n\t\t\tpanic(\"BUG\")\n\t\t}\n\t\tswitch len(sig.Results) {\n\t\tcase 0:\n\t\t\tt1 = typeInvalid\n\t\tcase 1:\n\t\t\tt1 = sig.Results[0]\n\t\tdefault:\n\t\t\tt1, ts = sig.Results[0], sig.Results[1:]\n\t\t}\n\t\treturn\n\t}\n\treturnTypesFnCall = func(b *builder, instr *Instruction) (t1 Type, ts []Type) {\n\t\tsigID := SignatureID(instr.u2)\n\t\tsig, ok := b.signatures[sigID]\n\t\tif !ok {\n\t\t\tpanic(\"BUG\")\n\t\t}\n\t\tswitch len(sig.Results) {\n\t\tcase 0:\n\t\t\tt1 = typeInvalid\n\t\tcase 1:\n\t\t\tt1 = sig.Results[0]\n\t\tdefault:\n\t\t\tt1, ts = sig.Results[0], sig.Results[1:]\n\t\t}\n\t\treturn\n\t}\n)\n\n// sideEffect provides the info to determine if an instruction has side effects which\n// is used to determine if it can be optimized out, interchanged with others, etc.\ntype sideEffect byte\n\nconst (\n\tsideEffectUnknown sideEffect = iota\n\t// sideEffectStrict represents an instruction with side effects, and should be always alive plus cannot be reordered.\n\tsideEffectStrict\n\t// sideEffectTraps represents an instruction that can trap, and should be always alive but can be reordered within the group.\n\tsideEffectTraps\n\t// sideEffectNone represents an instruction without side effects, and can be eliminated if the result is not used, plus can be reordered within the group.\n\tsideEffectNone\n)\n\n// instructionSideEffects provides the info to determine if an instruction has side effects.\n// Instructions with side effects must not be eliminated regardless whether the result is used or not.\nvar instructionSideEffects = [opcodeEnd]sideEffect{\n\tOpcodeUndefined:                   sideEffectStrict,\n\tOpcodeJump:                        sideEffectStrict,\n\tOpcodeIconst:                      sideEffectNone,\n\tOpcodeCall:                        sideEffectStrict,\n\tOpcodeCallIndirect:                sideEffectStrict,\n\tOpcodeIadd:                        sideEffectNone,\n\tOpcodeImul:                        sideEffectNone,\n\tOpcodeIsub:                        sideEffectNone,\n\tOpcodeIcmp:                        sideEffectNone,\n\tOpcodeExtractlane:                 sideEffectNone,\n\tOpcodeInsertlane:                  sideEffectNone,\n\tOpcodeBand:                        sideEffectNone,\n\tOpcodeBor:                         sideEffectNone,\n\tOpcodeBxor:                        sideEffectNone,\n\tOpcodeRotl:                        sideEffectNone,\n\tOpcodeRotr:                        sideEffectNone,\n\tOpcodeFcmp:                        sideEffectNone,\n\tOpcodeFadd:                        sideEffectNone,\n\tOpcodeClz:                         sideEffectNone,\n\tOpcodeCtz:                         sideEffectNone,\n\tOpcodePopcnt:                      sideEffectNone,\n\tOpcodeLoad:                        sideEffectNone,\n\tOpcodeLoadSplat:                   sideEffectNone,\n\tOpcodeUload8:                      sideEffectNone,\n\tOpcodeUload16:                     sideEffectNone,\n\tOpcodeUload32:                     sideEffectNone,\n\tOpcodeSload8:                      sideEffectNone,\n\tOpcodeSload16:                     sideEffectNone,\n\tOpcodeSload32:                     sideEffectNone,\n\tOpcodeSExtend:                     sideEffectNone,\n\tOpcodeUExtend:                     sideEffectNone,\n\tOpcodeSwidenLow:                   sideEffectNone,\n\tOpcodeUwidenLow:                   sideEffectNone,\n\tOpcodeSwidenHigh:                  sideEffectNone,\n\tOpcodeUwidenHigh:                  sideEffectNone,\n\tOpcodeSnarrow:                     sideEffectNone,\n\tOpcodeUnarrow:                     sideEffectNone,\n\tOpcodeSwizzle:                     sideEffectNone,\n\tOpcodeShuffle:                     sideEffectNone,\n\tOpcodeSplat:                       sideEffectNone,\n\tOpcodeFsub:                        sideEffectNone,\n\tOpcodeF32const:                    sideEffectNone,\n\tOpcodeF64const:                    sideEffectNone,\n\tOpcodeIshl:                        sideEffectNone,\n\tOpcodeSshr:                        sideEffectNone,\n\tOpcodeUshr:                        sideEffectNone,\n\tOpcodeStore:                       sideEffectStrict,\n\tOpcodeIstore8:                     sideEffectStrict,\n\tOpcodeIstore16:                    sideEffectStrict,\n\tOpcodeIstore32:                    sideEffectStrict,\n\tOpcodeExitWithCode:                sideEffectStrict,\n\tOpcodeExitIfTrueWithCode:          sideEffectStrict,\n\tOpcodeReturn:                      sideEffectStrict,\n\tOpcodeBrz:                         sideEffectStrict,\n\tOpcodeBrnz:                        sideEffectStrict,\n\tOpcodeBrTable:                     sideEffectStrict,\n\tOpcodeFdiv:                        sideEffectNone,\n\tOpcodeFmul:                        sideEffectNone,\n\tOpcodeFmax:                        sideEffectNone,\n\tOpcodeSqmulRoundSat:               sideEffectNone,\n\tOpcodeSelect:                      sideEffectNone,\n\tOpcodeFmin:                        sideEffectNone,\n\tOpcodeFneg:                        sideEffectNone,\n\tOpcodeFcvtToSint:                  sideEffectTraps,\n\tOpcodeFcvtToUint:                  sideEffectTraps,\n\tOpcodeFcvtFromSint:                sideEffectNone,\n\tOpcodeFcvtFromUint:                sideEffectNone,\n\tOpcodeFcvtToSintSat:               sideEffectNone,\n\tOpcodeFcvtToUintSat:               sideEffectNone,\n\tOpcodeVFcvtFromUint:               sideEffectNone,\n\tOpcodeVFcvtFromSint:               sideEffectNone,\n\tOpcodeFdemote:                     sideEffectNone,\n\tOpcodeFvpromoteLow:                sideEffectNone,\n\tOpcodeFvdemote:                    sideEffectNone,\n\tOpcodeFpromote:                    sideEffectNone,\n\tOpcodeBitcast:                     sideEffectNone,\n\tOpcodeIreduce:                     sideEffectNone,\n\tOpcodeSqrt:                        sideEffectNone,\n\tOpcodeCeil:                        sideEffectNone,\n\tOpcodeFloor:                       sideEffectNone,\n\tOpcodeTrunc:                       sideEffectNone,\n\tOpcodeNearest:                     sideEffectNone,\n\tOpcodeSdiv:                        sideEffectTraps,\n\tOpcodeSrem:                        sideEffectTraps,\n\tOpcodeUdiv:                        sideEffectTraps,\n\tOpcodeUrem:                        sideEffectTraps,\n\tOpcodeFabs:                        sideEffectNone,\n\tOpcodeFcopysign:                   sideEffectNone,\n\tOpcodeExtIaddPairwise:             sideEffectNone,\n\tOpcodeVconst:                      sideEffectNone,\n\tOpcodeVbor:                        sideEffectNone,\n\tOpcodeVbxor:                       sideEffectNone,\n\tOpcodeVband:                       sideEffectNone,\n\tOpcodeVbandnot:                    sideEffectNone,\n\tOpcodeVbnot:                       sideEffectNone,\n\tOpcodeVbitselect:                  sideEffectNone,\n\tOpcodeVanyTrue:                    sideEffectNone,\n\tOpcodeVallTrue:                    sideEffectNone,\n\tOpcodeVhighBits:                   sideEffectNone,\n\tOpcodeVIadd:                       sideEffectNone,\n\tOpcodeVSaddSat:                    sideEffectNone,\n\tOpcodeVUaddSat:                    sideEffectNone,\n\tOpcodeVIsub:                       sideEffectNone,\n\tOpcodeVSsubSat:                    sideEffectNone,\n\tOpcodeVUsubSat:                    sideEffectNone,\n\tOpcodeVIcmp:                       sideEffectNone,\n\tOpcodeVImin:                       sideEffectNone,\n\tOpcodeVUmin:                       sideEffectNone,\n\tOpcodeVImax:                       sideEffectNone,\n\tOpcodeVUmax:                       sideEffectNone,\n\tOpcodeVAvgRound:                   sideEffectNone,\n\tOpcodeVImul:                       sideEffectNone,\n\tOpcodeVIabs:                       sideEffectNone,\n\tOpcodeVIneg:                       sideEffectNone,\n\tOpcodeVIpopcnt:                    sideEffectNone,\n\tOpcodeVIshl:                       sideEffectNone,\n\tOpcodeVSshr:                       sideEffectNone,\n\tOpcodeVUshr:                       sideEffectNone,\n\tOpcodeVSqrt:                       sideEffectNone,\n\tOpcodeVFabs:                       sideEffectNone,\n\tOpcodeVFmin:                       sideEffectNone,\n\tOpcodeVFmax:                       sideEffectNone,\n\tOpcodeVFneg:                       sideEffectNone,\n\tOpcodeVFadd:                       sideEffectNone,\n\tOpcodeVFsub:                       sideEffectNone,\n\tOpcodeVFmul:                       sideEffectNone,\n\tOpcodeVFdiv:                       sideEffectNone,\n\tOpcodeVFcmp:                       sideEffectNone,\n\tOpcodeVCeil:                       sideEffectNone,\n\tOpcodeVFloor:                      sideEffectNone,\n\tOpcodeVTrunc:                      sideEffectNone,\n\tOpcodeVNearest:                    sideEffectNone,\n\tOpcodeVMaxPseudo:                  sideEffectNone,\n\tOpcodeVMinPseudo:                  sideEffectNone,\n\tOpcodeVFcvtToUintSat:              sideEffectNone,\n\tOpcodeVFcvtToSintSat:              sideEffectNone,\n\tOpcodeVZeroExtLoad:                sideEffectNone,\n\tOpcodeAtomicRmw:                   sideEffectStrict,\n\tOpcodeAtomicLoad:                  sideEffectStrict,\n\tOpcodeAtomicStore:                 sideEffectStrict,\n\tOpcodeAtomicCas:                   sideEffectStrict,\n\tOpcodeFence:                       sideEffectStrict,\n\tOpcodeTailCallReturnCall:          sideEffectStrict,\n\tOpcodeTailCallReturnCallIndirect:  sideEffectStrict,\n\tOpcodeWideningPairwiseDotProductS: sideEffectNone,\n}\n\n// sideEffect returns true if this instruction has side effects.\nfunc (i *Instruction) sideEffect() sideEffect {\n\tif e := instructionSideEffects[i.opcode]; e == sideEffectUnknown {\n\t\tpanic(\"BUG: side effect info not registered for \" + i.opcode.String())\n\t} else {\n\t\treturn e\n\t}\n}\n\n// instructionReturnTypes provides the function to determine the return types of an instruction.\nvar instructionReturnTypes = [opcodeEnd]returnTypesFn{\n\tOpcodeExtIaddPairwise:             returnTypesFnV128,\n\tOpcodeVbor:                        returnTypesFnV128,\n\tOpcodeVbxor:                       returnTypesFnV128,\n\tOpcodeVband:                       returnTypesFnV128,\n\tOpcodeVbnot:                       returnTypesFnV128,\n\tOpcodeVbandnot:                    returnTypesFnV128,\n\tOpcodeVbitselect:                  returnTypesFnV128,\n\tOpcodeVanyTrue:                    returnTypesFnI32,\n\tOpcodeVallTrue:                    returnTypesFnI32,\n\tOpcodeVhighBits:                   returnTypesFnI32,\n\tOpcodeVIadd:                       returnTypesFnV128,\n\tOpcodeVSaddSat:                    returnTypesFnV128,\n\tOpcodeVUaddSat:                    returnTypesFnV128,\n\tOpcodeVIsub:                       returnTypesFnV128,\n\tOpcodeVSsubSat:                    returnTypesFnV128,\n\tOpcodeVUsubSat:                    returnTypesFnV128,\n\tOpcodeVIcmp:                       returnTypesFnV128,\n\tOpcodeVImin:                       returnTypesFnV128,\n\tOpcodeVUmin:                       returnTypesFnV128,\n\tOpcodeVImax:                       returnTypesFnV128,\n\tOpcodeVUmax:                       returnTypesFnV128,\n\tOpcodeVImul:                       returnTypesFnV128,\n\tOpcodeVAvgRound:                   returnTypesFnV128,\n\tOpcodeVIabs:                       returnTypesFnV128,\n\tOpcodeVIneg:                       returnTypesFnV128,\n\tOpcodeVIpopcnt:                    returnTypesFnV128,\n\tOpcodeVIshl:                       returnTypesFnV128,\n\tOpcodeVSshr:                       returnTypesFnV128,\n\tOpcodeVUshr:                       returnTypesFnV128,\n\tOpcodeExtractlane:                 returnTypesFnSingle,\n\tOpcodeInsertlane:                  returnTypesFnV128,\n\tOpcodeBand:                        returnTypesFnSingle,\n\tOpcodeFcopysign:                   returnTypesFnSingle,\n\tOpcodeBitcast:                     returnTypesFnSingle,\n\tOpcodeBor:                         returnTypesFnSingle,\n\tOpcodeBxor:                        returnTypesFnSingle,\n\tOpcodeRotl:                        returnTypesFnSingle,\n\tOpcodeRotr:                        returnTypesFnSingle,\n\tOpcodeIshl:                        returnTypesFnSingle,\n\tOpcodeSshr:                        returnTypesFnSingle,\n\tOpcodeSdiv:                        returnTypesFnSingle,\n\tOpcodeSrem:                        returnTypesFnSingle,\n\tOpcodeUdiv:                        returnTypesFnSingle,\n\tOpcodeUrem:                        returnTypesFnSingle,\n\tOpcodeUshr:                        returnTypesFnSingle,\n\tOpcodeJump:                        returnTypesFnNoReturns,\n\tOpcodeUndefined:                   returnTypesFnNoReturns,\n\tOpcodeIconst:                      returnTypesFnSingle,\n\tOpcodeSelect:                      returnTypesFnSingle,\n\tOpcodeSExtend:                     returnTypesFnSingle,\n\tOpcodeUExtend:                     returnTypesFnSingle,\n\tOpcodeSwidenLow:                   returnTypesFnV128,\n\tOpcodeUwidenLow:                   returnTypesFnV128,\n\tOpcodeSwidenHigh:                  returnTypesFnV128,\n\tOpcodeUwidenHigh:                  returnTypesFnV128,\n\tOpcodeSnarrow:                     returnTypesFnV128,\n\tOpcodeUnarrow:                     returnTypesFnV128,\n\tOpcodeSwizzle:                     returnTypesFnSingle,\n\tOpcodeShuffle:                     returnTypesFnV128,\n\tOpcodeSplat:                       returnTypesFnV128,\n\tOpcodeIreduce:                     returnTypesFnSingle,\n\tOpcodeFabs:                        returnTypesFnSingle,\n\tOpcodeSqrt:                        returnTypesFnSingle,\n\tOpcodeCeil:                        returnTypesFnSingle,\n\tOpcodeFloor:                       returnTypesFnSingle,\n\tOpcodeTrunc:                       returnTypesFnSingle,\n\tOpcodeNearest:                     returnTypesFnSingle,\n\tOpcodeCallIndirect:                returnTypesFnCallIndirect,\n\tOpcodeCall:                        returnTypesFnCall,\n\tOpcodeLoad:                        returnTypesFnSingle,\n\tOpcodeVZeroExtLoad:                returnTypesFnV128,\n\tOpcodeLoadSplat:                   returnTypesFnV128,\n\tOpcodeIadd:                        returnTypesFnSingle,\n\tOpcodeIsub:                        returnTypesFnSingle,\n\tOpcodeImul:                        returnTypesFnSingle,\n\tOpcodeIcmp:                        returnTypesFnI32,\n\tOpcodeFcmp:                        returnTypesFnI32,\n\tOpcodeFadd:                        returnTypesFnSingle,\n\tOpcodeFsub:                        returnTypesFnSingle,\n\tOpcodeFdiv:                        returnTypesFnSingle,\n\tOpcodeFmul:                        returnTypesFnSingle,\n\tOpcodeFmax:                        returnTypesFnSingle,\n\tOpcodeFmin:                        returnTypesFnSingle,\n\tOpcodeSqmulRoundSat:               returnTypesFnV128,\n\tOpcodeF32const:                    returnTypesFnF32,\n\tOpcodeF64const:                    returnTypesFnF64,\n\tOpcodeClz:                         returnTypesFnSingle,\n\tOpcodeCtz:                         returnTypesFnSingle,\n\tOpcodePopcnt:                      returnTypesFnSingle,\n\tOpcodeStore:                       returnTypesFnNoReturns,\n\tOpcodeIstore8:                     returnTypesFnNoReturns,\n\tOpcodeIstore16:                    returnTypesFnNoReturns,\n\tOpcodeIstore32:                    returnTypesFnNoReturns,\n\tOpcodeExitWithCode:                returnTypesFnNoReturns,\n\tOpcodeExitIfTrueWithCode:          returnTypesFnNoReturns,\n\tOpcodeReturn:                      returnTypesFnNoReturns,\n\tOpcodeBrz:                         returnTypesFnNoReturns,\n\tOpcodeBrnz:                        returnTypesFnNoReturns,\n\tOpcodeBrTable:                     returnTypesFnNoReturns,\n\tOpcodeUload8:                      returnTypesFnSingle,\n\tOpcodeUload16:                     returnTypesFnSingle,\n\tOpcodeUload32:                     returnTypesFnSingle,\n\tOpcodeSload8:                      returnTypesFnSingle,\n\tOpcodeSload16:                     returnTypesFnSingle,\n\tOpcodeSload32:                     returnTypesFnSingle,\n\tOpcodeFcvtToSint:                  returnTypesFnSingle,\n\tOpcodeFcvtToUint:                  returnTypesFnSingle,\n\tOpcodeFcvtFromSint:                returnTypesFnSingle,\n\tOpcodeFcvtFromUint:                returnTypesFnSingle,\n\tOpcodeFcvtToSintSat:               returnTypesFnSingle,\n\tOpcodeFcvtToUintSat:               returnTypesFnSingle,\n\tOpcodeVFcvtFromUint:               returnTypesFnV128,\n\tOpcodeVFcvtFromSint:               returnTypesFnV128,\n\tOpcodeFneg:                        returnTypesFnSingle,\n\tOpcodeFdemote:                     returnTypesFnF32,\n\tOpcodeFvdemote:                    returnTypesFnV128,\n\tOpcodeFvpromoteLow:                returnTypesFnV128,\n\tOpcodeFpromote:                    returnTypesFnF64,\n\tOpcodeVconst:                      returnTypesFnV128,\n\tOpcodeVFabs:                       returnTypesFnV128,\n\tOpcodeVSqrt:                       returnTypesFnV128,\n\tOpcodeVFmax:                       returnTypesFnV128,\n\tOpcodeVFmin:                       returnTypesFnV128,\n\tOpcodeVFneg:                       returnTypesFnV128,\n\tOpcodeVFadd:                       returnTypesFnV128,\n\tOpcodeVFsub:                       returnTypesFnV128,\n\tOpcodeVFmul:                       returnTypesFnV128,\n\tOpcodeVFdiv:                       returnTypesFnV128,\n\tOpcodeVFcmp:                       returnTypesFnV128,\n\tOpcodeVCeil:                       returnTypesFnV128,\n\tOpcodeVFloor:                      returnTypesFnV128,\n\tOpcodeVTrunc:                      returnTypesFnV128,\n\tOpcodeVNearest:                    returnTypesFnV128,\n\tOpcodeVMaxPseudo:                  returnTypesFnV128,\n\tOpcodeVMinPseudo:                  returnTypesFnV128,\n\tOpcodeVFcvtToUintSat:              returnTypesFnV128,\n\tOpcodeVFcvtToSintSat:              returnTypesFnV128,\n\tOpcodeAtomicRmw:                   returnTypesFnSingle,\n\tOpcodeAtomicLoad:                  returnTypesFnSingle,\n\tOpcodeAtomicStore:                 returnTypesFnNoReturns,\n\tOpcodeAtomicCas:                   returnTypesFnSingle,\n\tOpcodeFence:                       returnTypesFnNoReturns,\n\tOpcodeTailCallReturnCallIndirect:  returnTypesFnCallIndirect,\n\tOpcodeTailCallReturnCall:          returnTypesFnCall,\n\tOpcodeWideningPairwiseDotProductS: returnTypesFnV128,\n}\n\n// AsLoad initializes this instruction as a store instruction with OpcodeLoad.\nfunc (i *Instruction) AsLoad(ptr Value, offset uint32, typ Type) *Instruction {\n\ti.opcode = OpcodeLoad\n\ti.v = ptr\n\ti.u1 = uint64(offset)\n\ti.typ = typ\n\treturn i\n}\n\n// AsExtLoad initializes this instruction as a store instruction with OpcodeLoad.\nfunc (i *Instruction) AsExtLoad(op Opcode, ptr Value, offset uint32, dst64bit bool) *Instruction {\n\ti.opcode = op\n\ti.v = ptr\n\ti.u1 = uint64(offset)\n\tif dst64bit {\n\t\ti.typ = TypeI64\n\t} else {\n\t\ti.typ = TypeI32\n\t}\n\treturn i\n}\n\n// AsVZeroExtLoad initializes this instruction as a store instruction with OpcodeVExtLoad.\nfunc (i *Instruction) AsVZeroExtLoad(ptr Value, offset uint32, scalarType Type) *Instruction {\n\ti.opcode = OpcodeVZeroExtLoad\n\ti.v = ptr\n\ti.u1 = uint64(offset)\n\ti.u2 = uint64(scalarType)\n\ti.typ = TypeV128\n\treturn i\n}\n\n// VZeroExtLoadData returns the operands for a load instruction. The returned `typ` is the scalar type of the load target.\nfunc (i *Instruction) VZeroExtLoadData() (ptr Value, offset uint32, typ Type) {\n\treturn i.v, uint32(i.u1), Type(i.u2)\n}\n\n// AsLoadSplat initializes this instruction as a store instruction with OpcodeLoadSplat.\nfunc (i *Instruction) AsLoadSplat(ptr Value, offset uint32, lane VecLane) *Instruction {\n\ti.opcode = OpcodeLoadSplat\n\ti.v = ptr\n\ti.u1 = uint64(offset)\n\ti.u2 = uint64(lane)\n\ti.typ = TypeV128\n\treturn i\n}\n\n// LoadData returns the operands for a load instruction.\nfunc (i *Instruction) LoadData() (ptr Value, offset uint32, typ Type) {\n\treturn i.v, uint32(i.u1), i.typ\n}\n\n// LoadSplatData returns the operands for a load splat instruction.\nfunc (i *Instruction) LoadSplatData() (ptr Value, offset uint32, lane VecLane) {\n\treturn i.v, uint32(i.u1), VecLane(i.u2)\n}\n\n// AsStore initializes this instruction as a store instruction with OpcodeStore.\nfunc (i *Instruction) AsStore(storeOp Opcode, value, ptr Value, offset uint32) *Instruction {\n\ti.opcode = storeOp\n\ti.v = value\n\ti.v2 = ptr\n\n\tvar dstSize uint64\n\tswitch storeOp {\n\tcase OpcodeStore:\n\t\tdstSize = uint64(value.Type().Bits())\n\tcase OpcodeIstore8:\n\t\tdstSize = 8\n\tcase OpcodeIstore16:\n\t\tdstSize = 16\n\tcase OpcodeIstore32:\n\t\tdstSize = 32\n\tdefault:\n\t\tpanic(\"invalid store opcode\" + storeOp.String())\n\t}\n\ti.u1 = uint64(offset) | dstSize<<32\n\treturn i\n}\n\n// StoreData returns the operands for a store instruction.\nfunc (i *Instruction) StoreData() (value, ptr Value, offset uint32, storeSizeInBits byte) {\n\treturn i.v, i.v2, uint32(i.u1), byte(i.u1 >> 32)\n}\n\n// AsIconst64 initializes this instruction as a 64-bit integer constant instruction with OpcodeIconst.\nfunc (i *Instruction) AsIconst64(v uint64) *Instruction {\n\ti.opcode = OpcodeIconst\n\ti.typ = TypeI64\n\ti.u1 = v\n\treturn i\n}\n\n// AsIconst32 initializes this instruction as a 32-bit integer constant instruction with OpcodeIconst.\nfunc (i *Instruction) AsIconst32(v uint32) *Instruction {\n\ti.opcode = OpcodeIconst\n\ti.typ = TypeI32\n\ti.u1 = uint64(v)\n\treturn i\n}\n\n// AsIadd initializes this instruction as an integer addition instruction with OpcodeIadd.\nfunc (i *Instruction) AsIadd(x, y Value) *Instruction {\n\ti.opcode = OpcodeIadd\n\ti.v = x\n\ti.v2 = y\n\ti.typ = x.Type()\n\treturn i\n}\n\n// AsVIadd initializes this instruction as an integer addition instruction with OpcodeVIadd on a vector.\nfunc (i *Instruction) AsVIadd(x, y Value, lane VecLane) *Instruction {\n\ti.opcode = OpcodeVIadd\n\ti.v = x\n\ti.v2 = y\n\ti.u1 = uint64(lane)\n\ti.typ = TypeV128\n\treturn i\n}\n\n// AsWideningPairwiseDotProductS initializes this instruction as a lane-wise integer extended pairwise addition instruction\n// with OpcodeIaddPairwise on a vector.\nfunc (i *Instruction) AsWideningPairwiseDotProductS(x, y Value) *Instruction {\n\ti.opcode = OpcodeWideningPairwiseDotProductS\n\ti.v = x\n\ti.v2 = y\n\ti.typ = TypeV128\n\treturn i\n}\n\n// AsExtIaddPairwise initializes this instruction as a lane-wise integer extended pairwise addition instruction\n// with OpcodeIaddPairwise on a vector.\nfunc (i *Instruction) AsExtIaddPairwise(x Value, srcLane VecLane, signed bool) *Instruction {\n\ti.opcode = OpcodeExtIaddPairwise\n\ti.v = x\n\ti.u1 = uint64(srcLane)\n\tif signed {\n\t\ti.u2 = 1\n\t}\n\ti.typ = TypeV128\n\treturn i\n}\n\n// ExtIaddPairwiseData returns the operands for a lane-wise integer extended pairwise addition instruction.\nfunc (i *Instruction) ExtIaddPairwiseData() (x Value, srcLane VecLane, signed bool) {\n\treturn i.v, VecLane(i.u1), i.u2 != 0\n}\n\n// AsVSaddSat initializes this instruction as a vector addition with saturation instruction with OpcodeVSaddSat on a vector.\nfunc (i *Instruction) AsVSaddSat(x, y Value, lane VecLane) *Instruction {\n\ti.opcode = OpcodeVSaddSat\n\ti.v = x\n\ti.v2 = y\n\ti.u1 = uint64(lane)\n\ti.typ = TypeV128\n\treturn i\n}\n\n// AsVUaddSat initializes this instruction as a vector addition with saturation instruction with OpcodeVUaddSat on a vector.\nfunc (i *Instruction) AsVUaddSat(x, y Value, lane VecLane) *Instruction {\n\ti.opcode = OpcodeVUaddSat\n\ti.v = x\n\ti.v2 = y\n\ti.u1 = uint64(lane)\n\ti.typ = TypeV128\n\treturn i\n}\n\n// AsVIsub initializes this instruction as an integer subtraction instruction with OpcodeVIsub on a vector.\nfunc (i *Instruction) AsVIsub(x, y Value, lane VecLane) *Instruction {\n\ti.opcode = OpcodeVIsub\n\ti.v = x\n\ti.v2 = y\n\ti.u1 = uint64(lane)\n\ti.typ = TypeV128\n\treturn i\n}\n\n// AsVSsubSat initializes this instruction as a vector addition with saturation instruction with OpcodeVSsubSat on a vector.\nfunc (i *Instruction) AsVSsubSat(x, y Value, lane VecLane) *Instruction {\n\ti.opcode = OpcodeVSsubSat\n\ti.v = x\n\ti.v2 = y\n\ti.u1 = uint64(lane)\n\ti.typ = TypeV128\n\treturn i\n}\n\n// AsVUsubSat initializes this instruction as a vector addition with saturation instruction with OpcodeVUsubSat on a vector.\nfunc (i *Instruction) AsVUsubSat(x, y Value, lane VecLane) *Instruction {\n\ti.opcode = OpcodeVUsubSat\n\ti.v = x\n\ti.v2 = y\n\ti.u1 = uint64(lane)\n\ti.typ = TypeV128\n\treturn i\n}\n\n// AsVImin initializes this instruction as a signed integer min instruction with OpcodeVImin on a vector.\nfunc (i *Instruction) AsVImin(x, y Value, lane VecLane) *Instruction {\n\ti.opcode = OpcodeVImin\n\ti.v = x\n\ti.v2 = y\n\ti.u1 = uint64(lane)\n\ti.typ = TypeV128\n\treturn i\n}\n\n// AsVUmin initializes this instruction as an unsigned integer min instruction with OpcodeVUmin on a vector.\nfunc (i *Instruction) AsVUmin(x, y Value, lane VecLane) *Instruction {\n\ti.opcode = OpcodeVUmin\n\ti.v = x\n\ti.v2 = y\n\ti.u1 = uint64(lane)\n\ti.typ = TypeV128\n\treturn i\n}\n\n// AsVImax initializes this instruction as a signed integer max instruction with OpcodeVImax on a vector.\nfunc (i *Instruction) AsVImax(x, y Value, lane VecLane) *Instruction {\n\ti.opcode = OpcodeVImax\n\ti.v = x\n\ti.v2 = y\n\ti.u1 = uint64(lane)\n\ti.typ = TypeV128\n\treturn i\n}\n\n// AsVUmax initializes this instruction as an unsigned integer max instruction with OpcodeVUmax on a vector.\nfunc (i *Instruction) AsVUmax(x, y Value, lane VecLane) *Instruction {\n\ti.opcode = OpcodeVUmax\n\ti.v = x\n\ti.v2 = y\n\ti.u1 = uint64(lane)\n\ti.typ = TypeV128\n\treturn i\n}\n\n// AsVAvgRound initializes this instruction as an unsigned integer avg instruction, truncating to zero with OpcodeVAvgRound on a vector.\nfunc (i *Instruction) AsVAvgRound(x, y Value, lane VecLane) *Instruction {\n\ti.opcode = OpcodeVAvgRound\n\ti.v = x\n\ti.v2 = y\n\ti.u1 = uint64(lane)\n\ti.typ = TypeV128\n\treturn i\n}\n\n// AsVImul initializes this instruction as an integer multiplication with OpcodeVImul on a vector.\nfunc (i *Instruction) AsVImul(x, y Value, lane VecLane) *Instruction {\n\ti.opcode = OpcodeVImul\n\ti.v = x\n\ti.v2 = y\n\ti.u1 = uint64(lane)\n\ti.typ = TypeV128\n\treturn i\n}\n\n// AsSqmulRoundSat initializes this instruction as a lane-wise saturating rounding multiplication\n// in Q15 format with OpcodeSqmulRoundSat on a vector.\nfunc (i *Instruction) AsSqmulRoundSat(x, y Value, lane VecLane) *Instruction {\n\ti.opcode = OpcodeSqmulRoundSat\n\ti.v = x\n\ti.v2 = y\n\ti.u1 = uint64(lane)\n\ti.typ = TypeV128\n\treturn i\n}\n\n// AsVIabs initializes this instruction as a vector absolute value with OpcodeVIabs.\nfunc (i *Instruction) AsVIabs(x Value, lane VecLane) *Instruction {\n\ti.opcode = OpcodeVIabs\n\ti.v = x\n\ti.u1 = uint64(lane)\n\ti.typ = TypeV128\n\treturn i\n}\n\n// AsVIneg initializes this instruction as a vector negation with OpcodeVIneg.\nfunc (i *Instruction) AsVIneg(x Value, lane VecLane) *Instruction {\n\ti.opcode = OpcodeVIneg\n\ti.v = x\n\ti.u1 = uint64(lane)\n\ti.typ = TypeV128\n\treturn i\n}\n\n// AsVIpopcnt initializes this instruction as a Population Count instruction with OpcodeVIpopcnt on a vector.\nfunc (i *Instruction) AsVIpopcnt(x Value, lane VecLane) *Instruction {\n\tif lane != VecLaneI8x16 {\n\t\tpanic(\"Unsupported lane type \" + lane.String())\n\t}\n\ti.opcode = OpcodeVIpopcnt\n\ti.v = x\n\ti.u1 = uint64(lane)\n\ti.typ = TypeV128\n\treturn i\n}\n\n// AsVSqrt initializes this instruction as a sqrt instruction with OpcodeVSqrt on a vector.\nfunc (i *Instruction) AsVSqrt(x Value, lane VecLane) *Instruction {\n\ti.opcode = OpcodeVSqrt\n\ti.v = x\n\ti.u1 = uint64(lane)\n\ti.typ = TypeV128\n\treturn i\n}\n\n// AsVFabs initializes this instruction as a float abs instruction with OpcodeVFabs on a vector.\nfunc (i *Instruction) AsVFabs(x Value, lane VecLane) *Instruction {\n\ti.opcode = OpcodeVFabs\n\ti.v = x\n\ti.u1 = uint64(lane)\n\ti.typ = TypeV128\n\treturn i\n}\n\n// AsVFneg initializes this instruction as a float neg instruction with OpcodeVFneg on a vector.\nfunc (i *Instruction) AsVFneg(x Value, lane VecLane) *Instruction {\n\ti.opcode = OpcodeVFneg\n\ti.v = x\n\ti.u1 = uint64(lane)\n\ti.typ = TypeV128\n\treturn i\n}\n\n// AsVFmax initializes this instruction as a float max instruction with OpcodeVFmax on a vector.\nfunc (i *Instruction) AsVFmax(x, y Value, lane VecLane) *Instruction {\n\ti.opcode = OpcodeVFmax\n\ti.v = x\n\ti.v2 = y\n\ti.u1 = uint64(lane)\n\ti.typ = TypeV128\n\treturn i\n}\n\n// AsVFmin initializes this instruction as a float min instruction with OpcodeVFmin on a vector.\nfunc (i *Instruction) AsVFmin(x, y Value, lane VecLane) *Instruction {\n\ti.opcode = OpcodeVFmin\n\ti.v = x\n\ti.v2 = y\n\ti.u1 = uint64(lane)\n\ti.typ = TypeV128\n\treturn i\n}\n\n// AsVFadd initializes this instruction as a floating point add instruction with OpcodeVFadd on a vector.\nfunc (i *Instruction) AsVFadd(x, y Value, lane VecLane) *Instruction {\n\ti.opcode = OpcodeVFadd\n\ti.v = x\n\ti.v2 = y\n\ti.u1 = uint64(lane)\n\ti.typ = TypeV128\n\treturn i\n}\n\n// AsVFsub initializes this instruction as a floating point subtraction instruction with OpcodeVFsub on a vector.\nfunc (i *Instruction) AsVFsub(x, y Value, lane VecLane) *Instruction {\n\ti.opcode = OpcodeVFsub\n\ti.v = x\n\ti.v2 = y\n\ti.u1 = uint64(lane)\n\ti.typ = TypeV128\n\treturn i\n}\n\n// AsVFmul initializes this instruction as a floating point multiplication instruction with OpcodeVFmul on a vector.\nfunc (i *Instruction) AsVFmul(x, y Value, lane VecLane) *Instruction {\n\ti.opcode = OpcodeVFmul\n\ti.v = x\n\ti.v2 = y\n\ti.u1 = uint64(lane)\n\ti.typ = TypeV128\n\treturn i\n}\n\n// AsVFdiv initializes this instruction as a floating point division instruction with OpcodeVFdiv on a vector.\nfunc (i *Instruction) AsVFdiv(x, y Value, lane VecLane) *Instruction {\n\ti.opcode = OpcodeVFdiv\n\ti.v = x\n\ti.v2 = y\n\ti.u1 = uint64(lane)\n\ti.typ = TypeV128\n\treturn i\n}\n\n// AsImul initializes this instruction as an integer addition instruction with OpcodeImul.\nfunc (i *Instruction) AsImul(x, y Value) *Instruction {\n\ti.opcode = OpcodeImul\n\ti.v = x\n\ti.v2 = y\n\ti.typ = x.Type()\n\treturn i\n}\n\nfunc (i *Instruction) Insert(b Builder) *Instruction {\n\tb.InsertInstruction(i)\n\treturn i\n}\n\n// AsIsub initializes this instruction as an integer subtraction instruction with OpcodeIsub.\nfunc (i *Instruction) AsIsub(x, y Value) *Instruction {\n\ti.opcode = OpcodeIsub\n\ti.v = x\n\ti.v2 = y\n\ti.typ = x.Type()\n\treturn i\n}\n\n// AsIcmp initializes this instruction as an integer comparison instruction with OpcodeIcmp.\nfunc (i *Instruction) AsIcmp(x, y Value, c IntegerCmpCond) *Instruction {\n\ti.opcode = OpcodeIcmp\n\ti.v = x\n\ti.v2 = y\n\ti.u1 = uint64(c)\n\ti.typ = TypeI32\n\treturn i\n}\n\n// AsFcmp initializes this instruction as an integer comparison instruction with OpcodeFcmp.\nfunc (i *Instruction) AsFcmp(x, y Value, c FloatCmpCond) {\n\ti.opcode = OpcodeFcmp\n\ti.v = x\n\ti.v2 = y\n\ti.u1 = uint64(c)\n\ti.typ = TypeI32\n}\n\n// AsVIcmp initializes this instruction as an integer vector comparison instruction with OpcodeVIcmp.\nfunc (i *Instruction) AsVIcmp(x, y Value, c IntegerCmpCond, lane VecLane) *Instruction {\n\ti.opcode = OpcodeVIcmp\n\ti.v = x\n\ti.v2 = y\n\ti.u1 = uint64(c)\n\ti.u2 = uint64(lane)\n\ti.typ = TypeV128\n\treturn i\n}\n\n// AsVFcmp initializes this instruction as a float comparison instruction with OpcodeVFcmp on Vector.\nfunc (i *Instruction) AsVFcmp(x, y Value, c FloatCmpCond, lane VecLane) *Instruction {\n\ti.opcode = OpcodeVFcmp\n\ti.v = x\n\ti.v2 = y\n\ti.u1 = uint64(c)\n\ti.typ = TypeV128\n\ti.u2 = uint64(lane)\n\treturn i\n}\n\n// AsVCeil initializes this instruction as an instruction with OpcodeCeil.\nfunc (i *Instruction) AsVCeil(x Value, lane VecLane) *Instruction {\n\ti.opcode = OpcodeVCeil\n\ti.v = x\n\ti.typ = x.Type()\n\ti.u1 = uint64(lane)\n\treturn i\n}\n\n// AsVFloor initializes this instruction as an instruction with OpcodeFloor.\nfunc (i *Instruction) AsVFloor(x Value, lane VecLane) *Instruction {\n\ti.opcode = OpcodeVFloor\n\ti.v = x\n\ti.typ = x.Type()\n\ti.u1 = uint64(lane)\n\treturn i\n}\n\n// AsVTrunc initializes this instruction as an instruction with OpcodeTrunc.\nfunc (i *Instruction) AsVTrunc(x Value, lane VecLane) *Instruction {\n\ti.opcode = OpcodeVTrunc\n\ti.v = x\n\ti.typ = x.Type()\n\ti.u1 = uint64(lane)\n\treturn i\n}\n\n// AsVNearest initializes this instruction as an instruction with OpcodeNearest.\nfunc (i *Instruction) AsVNearest(x Value, lane VecLane) *Instruction {\n\ti.opcode = OpcodeVNearest\n\ti.v = x\n\ti.typ = x.Type()\n\ti.u1 = uint64(lane)\n\treturn i\n}\n\n// AsVMaxPseudo initializes this instruction as an instruction with OpcodeVMaxPseudo.\nfunc (i *Instruction) AsVMaxPseudo(x, y Value, lane VecLane) *Instruction {\n\ti.opcode = OpcodeVMaxPseudo\n\ti.typ = x.Type()\n\ti.v = x\n\ti.v2 = y\n\ti.u1 = uint64(lane)\n\treturn i\n}\n\n// AsVMinPseudo initializes this instruction as an instruction with OpcodeVMinPseudo.\nfunc (i *Instruction) AsVMinPseudo(x, y Value, lane VecLane) *Instruction {\n\ti.opcode = OpcodeVMinPseudo\n\ti.typ = x.Type()\n\ti.v = x\n\ti.v2 = y\n\ti.u1 = uint64(lane)\n\treturn i\n}\n\n// AsSDiv initializes this instruction as an integer bitwise and instruction with OpcodeSdiv.\nfunc (i *Instruction) AsSDiv(x, y, ctx Value) *Instruction {\n\ti.opcode = OpcodeSdiv\n\ti.v = x\n\ti.v2 = y\n\ti.v3 = ctx\n\ti.typ = x.Type()\n\treturn i\n}\n\n// AsUDiv initializes this instruction as an integer bitwise and instruction with OpcodeUdiv.\nfunc (i *Instruction) AsUDiv(x, y, ctx Value) *Instruction {\n\ti.opcode = OpcodeUdiv\n\ti.v = x\n\ti.v2 = y\n\ti.v3 = ctx\n\ti.typ = x.Type()\n\treturn i\n}\n\n// AsSRem initializes this instruction as an integer bitwise and instruction with OpcodeSrem.\nfunc (i *Instruction) AsSRem(x, y, ctx Value) *Instruction {\n\ti.opcode = OpcodeSrem\n\ti.v = x\n\ti.v2 = y\n\ti.v3 = ctx\n\ti.typ = x.Type()\n\treturn i\n}\n\n// AsURem initializes this instruction as an integer bitwise and instruction with OpcodeUrem.\nfunc (i *Instruction) AsURem(x, y, ctx Value) *Instruction {\n\ti.opcode = OpcodeUrem\n\ti.v = x\n\ti.v2 = y\n\ti.v3 = ctx\n\ti.typ = x.Type()\n\treturn i\n}\n\n// AsBand initializes this instruction as an integer bitwise and instruction with OpcodeBand.\nfunc (i *Instruction) AsBand(x, amount Value) *Instruction {\n\ti.opcode = OpcodeBand\n\ti.v = x\n\ti.v2 = amount\n\ti.typ = x.Type()\n\treturn i\n}\n\n// AsBor initializes this instruction as an integer bitwise or instruction with OpcodeBor.\nfunc (i *Instruction) AsBor(x, amount Value) {\n\ti.opcode = OpcodeBor\n\ti.v = x\n\ti.v2 = amount\n\ti.typ = x.Type()\n}\n\n// AsBxor initializes this instruction as an integer bitwise xor instruction with OpcodeBxor.\nfunc (i *Instruction) AsBxor(x, amount Value) {\n\ti.opcode = OpcodeBxor\n\ti.v = x\n\ti.v2 = amount\n\ti.typ = x.Type()\n}\n\n// AsIshl initializes this instruction as an integer shift left instruction with OpcodeIshl.\nfunc (i *Instruction) AsIshl(x, amount Value) *Instruction {\n\ti.opcode = OpcodeIshl\n\ti.v = x\n\ti.v2 = amount\n\ti.typ = x.Type()\n\treturn i\n}\n\n// AsVIshl initializes this instruction as an integer shift left instruction with OpcodeVIshl on vector.\nfunc (i *Instruction) AsVIshl(x, amount Value, lane VecLane) *Instruction {\n\ti.opcode = OpcodeVIshl\n\ti.v = x\n\ti.v2 = amount\n\ti.u1 = uint64(lane)\n\ti.typ = x.Type()\n\treturn i\n}\n\n// AsUshr initializes this instruction as an integer unsigned shift right (logical shift right) instruction with OpcodeUshr.\nfunc (i *Instruction) AsUshr(x, amount Value) *Instruction {\n\ti.opcode = OpcodeUshr\n\ti.v = x\n\ti.v2 = amount\n\ti.typ = x.Type()\n\treturn i\n}\n\n// AsVUshr initializes this instruction as an integer unsigned shift right (logical shift right) instruction with OpcodeVUshr on vector.\nfunc (i *Instruction) AsVUshr(x, amount Value, lane VecLane) *Instruction {\n\ti.opcode = OpcodeVUshr\n\ti.v = x\n\ti.v2 = amount\n\ti.u1 = uint64(lane)\n\ti.typ = x.Type()\n\treturn i\n}\n\n// AsSshr initializes this instruction as an integer signed shift right (arithmetic shift right) instruction with OpcodeSshr.\nfunc (i *Instruction) AsSshr(x, amount Value) *Instruction {\n\ti.opcode = OpcodeSshr\n\ti.v = x\n\ti.v2 = amount\n\ti.typ = x.Type()\n\treturn i\n}\n\n// AsVSshr initializes this instruction as an integer signed shift right (arithmetic shift right) instruction with OpcodeVSshr on vector.\nfunc (i *Instruction) AsVSshr(x, amount Value, lane VecLane) *Instruction {\n\ti.opcode = OpcodeVSshr\n\ti.v = x\n\ti.v2 = amount\n\ti.u1 = uint64(lane)\n\ti.typ = x.Type()\n\treturn i\n}\n\n// AsExtractlane initializes this instruction as an extract lane instruction with OpcodeExtractlane on vector.\nfunc (i *Instruction) AsExtractlane(x Value, index byte, lane VecLane, signed bool) *Instruction {\n\ti.opcode = OpcodeExtractlane\n\ti.v = x\n\t// We do not have a field for signedness, but `index` is a byte,\n\t// so we just encode the flag in the high bits of `u1`.\n\ti.u1 = uint64(index)\n\tif signed {\n\t\ti.u1 = i.u1 | 1<<32\n\t}\n\ti.u2 = uint64(lane)\n\tswitch lane {\n\tcase VecLaneI8x16, VecLaneI16x8, VecLaneI32x4:\n\t\ti.typ = TypeI32\n\tcase VecLaneI64x2:\n\t\ti.typ = TypeI64\n\tcase VecLaneF32x4:\n\t\ti.typ = TypeF32\n\tcase VecLaneF64x2:\n\t\ti.typ = TypeF64\n\t}\n\treturn i\n}\n\n// AsInsertlane initializes this instruction as an insert lane instruction with OpcodeInsertlane on vector.\nfunc (i *Instruction) AsInsertlane(x, y Value, index byte, lane VecLane) *Instruction {\n\ti.opcode = OpcodeInsertlane\n\ti.v = x\n\ti.v2 = y\n\ti.u1 = uint64(index)\n\ti.u2 = uint64(lane)\n\ti.typ = TypeV128\n\treturn i\n}\n\n// AsShuffle initializes this instruction as a shuffle instruction with OpcodeShuffle on vector.\nfunc (i *Instruction) AsShuffle(x, y Value, lane []byte) *Instruction {\n\ti.opcode = OpcodeShuffle\n\ti.v = x\n\ti.v2 = y\n\t// Encode the 16 bytes as 8 bytes in u1, and 8 bytes in u2.\n\ti.u1 = uint64(lane[7])<<56 | uint64(lane[6])<<48 | uint64(lane[5])<<40 | uint64(lane[4])<<32 | uint64(lane[3])<<24 | uint64(lane[2])<<16 | uint64(lane[1])<<8 | uint64(lane[0])\n\ti.u2 = uint64(lane[15])<<56 | uint64(lane[14])<<48 | uint64(lane[13])<<40 | uint64(lane[12])<<32 | uint64(lane[11])<<24 | uint64(lane[10])<<16 | uint64(lane[9])<<8 | uint64(lane[8])\n\ti.typ = TypeV128\n\treturn i\n}\n\n// AsSwizzle initializes this instruction as an insert lane instruction with OpcodeSwizzle on vector.\nfunc (i *Instruction) AsSwizzle(x, y Value, lane VecLane) *Instruction {\n\ti.opcode = OpcodeSwizzle\n\ti.v = x\n\ti.v2 = y\n\ti.u1 = uint64(lane)\n\ti.typ = TypeV128\n\treturn i\n}\n\n// AsSplat initializes this instruction as an insert lane instruction with OpcodeSplat on vector.\nfunc (i *Instruction) AsSplat(x Value, lane VecLane) *Instruction {\n\ti.opcode = OpcodeSplat\n\ti.v = x\n\ti.u1 = uint64(lane)\n\ti.typ = TypeV128\n\treturn i\n}\n\n// AsRotl initializes this instruction as a word rotate left instruction with OpcodeRotl.\nfunc (i *Instruction) AsRotl(x, amount Value) {\n\ti.opcode = OpcodeRotl\n\ti.v = x\n\ti.v2 = amount\n\ti.typ = x.Type()\n}\n\n// AsRotr initializes this instruction as a word rotate right instruction with OpcodeRotr.\nfunc (i *Instruction) AsRotr(x, amount Value) {\n\ti.opcode = OpcodeRotr\n\ti.v = x\n\ti.v2 = amount\n\ti.typ = x.Type()\n}\n\n// IcmpData returns the operands and comparison condition of this integer comparison instruction.\nfunc (i *Instruction) IcmpData() (x, y Value, c IntegerCmpCond) {\n\treturn i.v, i.v2, IntegerCmpCond(i.u1)\n}\n\n// FcmpData returns the operands and comparison condition of this floating-point comparison instruction.\nfunc (i *Instruction) FcmpData() (x, y Value, c FloatCmpCond) {\n\treturn i.v, i.v2, FloatCmpCond(i.u1)\n}\n\n// VIcmpData returns the operands and comparison condition of this integer comparison instruction on vector.\nfunc (i *Instruction) VIcmpData() (x, y Value, c IntegerCmpCond, l VecLane) {\n\treturn i.v, i.v2, IntegerCmpCond(i.u1), VecLane(i.u2)\n}\n\n// VFcmpData returns the operands and comparison condition of this float comparison instruction on vector.\nfunc (i *Instruction) VFcmpData() (x, y Value, c FloatCmpCond, l VecLane) {\n\treturn i.v, i.v2, FloatCmpCond(i.u1), VecLane(i.u2)\n}\n\n// ExtractlaneData returns the operands and sign flag of Extractlane on vector.\nfunc (i *Instruction) ExtractlaneData() (x Value, index byte, signed bool, l VecLane) {\n\tx = i.v\n\tindex = byte(0b00001111 & i.u1)\n\tsigned = i.u1>>32 != 0\n\tl = VecLane(i.u2)\n\treturn\n}\n\n// InsertlaneData returns the operands and sign flag of Insertlane on vector.\nfunc (i *Instruction) InsertlaneData() (x, y Value, index byte, l VecLane) {\n\tx = i.v\n\ty = i.v2\n\tindex = byte(i.u1)\n\tl = VecLane(i.u2)\n\treturn\n}\n\n// AsFadd initializes this instruction as a floating-point addition instruction with OpcodeFadd.\nfunc (i *Instruction) AsFadd(x, y Value) {\n\ti.opcode = OpcodeFadd\n\ti.v = x\n\ti.v2 = y\n\ti.typ = x.Type()\n}\n\n// AsFsub initializes this instruction as a floating-point subtraction instruction with OpcodeFsub.\nfunc (i *Instruction) AsFsub(x, y Value) {\n\ti.opcode = OpcodeFsub\n\ti.v = x\n\ti.v2 = y\n\ti.typ = x.Type()\n}\n\n// AsFmul initializes this instruction as a floating-point multiplication instruction with OpcodeFmul.\nfunc (i *Instruction) AsFmul(x, y Value) {\n\ti.opcode = OpcodeFmul\n\ti.v = x\n\ti.v2 = y\n\ti.typ = x.Type()\n}\n\n// AsFdiv initializes this instruction as a floating-point division instruction with OpcodeFdiv.\nfunc (i *Instruction) AsFdiv(x, y Value) {\n\ti.opcode = OpcodeFdiv\n\ti.v = x\n\ti.v2 = y\n\ti.typ = x.Type()\n}\n\n// AsFmin initializes this instruction to take the minimum of two floating-points with OpcodeFmin.\nfunc (i *Instruction) AsFmin(x, y Value) {\n\ti.opcode = OpcodeFmin\n\ti.v = x\n\ti.v2 = y\n\ti.typ = x.Type()\n}\n\n// AsFmax initializes this instruction to take the maximum of two floating-points with OpcodeFmax.\nfunc (i *Instruction) AsFmax(x, y Value) {\n\ti.opcode = OpcodeFmax\n\ti.v = x\n\ti.v2 = y\n\ti.typ = x.Type()\n}\n\n// AsF32const initializes this instruction as a 32-bit floating-point constant instruction with OpcodeF32const.\nfunc (i *Instruction) AsF32const(f float32) *Instruction {\n\ti.opcode = OpcodeF32const\n\ti.typ = TypeF64\n\ti.u1 = uint64(math.Float32bits(f))\n\treturn i\n}\n\n// AsF64const initializes this instruction as a 64-bit floating-point constant instruction with OpcodeF64const.\nfunc (i *Instruction) AsF64const(f float64) *Instruction {\n\ti.opcode = OpcodeF64const\n\ti.typ = TypeF64\n\ti.u1 = math.Float64bits(f)\n\treturn i\n}\n\n// AsVconst initializes this instruction as a vector constant instruction with OpcodeVconst.\nfunc (i *Instruction) AsVconst(lo, hi uint64) *Instruction {\n\ti.opcode = OpcodeVconst\n\ti.typ = TypeV128\n\ti.u1 = lo\n\ti.u2 = hi\n\treturn i\n}\n\n// AsVbnot initializes this instruction as a vector negation instruction with OpcodeVbnot.\nfunc (i *Instruction) AsVbnot(v Value) *Instruction {\n\ti.opcode = OpcodeVbnot\n\ti.typ = TypeV128\n\ti.v = v\n\treturn i\n}\n\n// AsVband initializes this instruction as an and vector instruction with OpcodeVband.\nfunc (i *Instruction) AsVband(x, y Value) *Instruction {\n\ti.opcode = OpcodeVband\n\ti.typ = TypeV128\n\ti.v = x\n\ti.v2 = y\n\treturn i\n}\n\n// AsVbor initializes this instruction as an or vector instruction with OpcodeVbor.\nfunc (i *Instruction) AsVbor(x, y Value) *Instruction {\n\ti.opcode = OpcodeVbor\n\ti.typ = TypeV128\n\ti.v = x\n\ti.v2 = y\n\treturn i\n}\n\n// AsVbxor initializes this instruction as a xor vector instruction with OpcodeVbxor.\nfunc (i *Instruction) AsVbxor(x, y Value) *Instruction {\n\ti.opcode = OpcodeVbxor\n\ti.typ = TypeV128\n\ti.v = x\n\ti.v2 = y\n\treturn i\n}\n\n// AsVbandnot initializes this instruction as an and-not vector instruction with OpcodeVbandnot.\nfunc (i *Instruction) AsVbandnot(x, y Value) *Instruction {\n\ti.opcode = OpcodeVbandnot\n\ti.typ = TypeV128\n\ti.v = x\n\ti.v2 = y\n\treturn i\n}\n\n// AsVbitselect initializes this instruction as a bit select vector instruction with OpcodeVbitselect.\nfunc (i *Instruction) AsVbitselect(c, x, y Value) *Instruction {\n\ti.opcode = OpcodeVbitselect\n\ti.typ = TypeV128\n\ti.v = c\n\ti.v2 = x\n\ti.v3 = y\n\treturn i\n}\n\n// AsVanyTrue initializes this instruction as an anyTrue vector instruction with OpcodeVanyTrue.\nfunc (i *Instruction) AsVanyTrue(x Value) *Instruction {\n\ti.opcode = OpcodeVanyTrue\n\ti.typ = TypeI32\n\ti.v = x\n\treturn i\n}\n\n// AsVallTrue initializes this instruction as an allTrue vector instruction with OpcodeVallTrue.\nfunc (i *Instruction) AsVallTrue(x Value, lane VecLane) *Instruction {\n\ti.opcode = OpcodeVallTrue\n\ti.typ = TypeI32\n\ti.v = x\n\ti.u1 = uint64(lane)\n\treturn i\n}\n\n// AsVhighBits initializes this instruction as a highBits vector instruction with OpcodeVhighBits.\nfunc (i *Instruction) AsVhighBits(x Value, lane VecLane) *Instruction {\n\ti.opcode = OpcodeVhighBits\n\ti.typ = TypeI32\n\ti.v = x\n\ti.u1 = uint64(lane)\n\treturn i\n}\n\n// VconstData returns the operands of this vector constant instruction.\nfunc (i *Instruction) VconstData() (lo, hi uint64) {\n\treturn i.u1, i.u2\n}\n\n// AsReturn initializes this instruction as a return instruction with OpcodeReturn.\nfunc (i *Instruction) AsReturn(vs wazevoapi.VarLength[Value]) *Instruction {\n\ti.opcode = OpcodeReturn\n\ti.vs = vs\n\treturn i\n}\n\n// AsIreduce initializes this instruction as a reduction instruction with OpcodeIreduce.\nfunc (i *Instruction) AsIreduce(v Value, dstType Type) *Instruction {\n\ti.opcode = OpcodeIreduce\n\ti.v = v\n\ti.typ = dstType\n\treturn i\n}\n\n// AsWiden initializes this instruction as a signed or unsigned widen instruction\n// on low half or high half of the given vector with OpcodeSwidenLow, OpcodeUwidenLow, OpcodeSwidenHigh, OpcodeUwidenHigh.\nfunc (i *Instruction) AsWiden(v Value, lane VecLane, signed, low bool) *Instruction {\n\tswitch {\n\tcase signed && low:\n\t\ti.opcode = OpcodeSwidenLow\n\tcase !signed && low:\n\t\ti.opcode = OpcodeUwidenLow\n\tcase signed && !low:\n\t\ti.opcode = OpcodeSwidenHigh\n\tcase !signed && !low:\n\t\ti.opcode = OpcodeUwidenHigh\n\t}\n\ti.v = v\n\ti.u1 = uint64(lane)\n\treturn i\n}\n\n// AsAtomicLoad initializes this instruction as an atomic load.\n// The size is in bytes and must be 1, 2, 4, or 8.\nfunc (i *Instruction) AsAtomicLoad(addr Value, size uint64, typ Type) *Instruction {\n\ti.opcode = OpcodeAtomicLoad\n\ti.u1 = size\n\ti.v = addr\n\ti.typ = typ\n\treturn i\n}\n\n// AsAtomicLoad initializes this instruction as an atomic store.\n// The size is in bytes and must be 1, 2, 4, or 8.\nfunc (i *Instruction) AsAtomicStore(addr, val Value, size uint64) *Instruction {\n\ti.opcode = OpcodeAtomicStore\n\ti.u1 = size\n\ti.v = addr\n\ti.v2 = val\n\ti.typ = val.Type()\n\treturn i\n}\n\n// AsAtomicRmw initializes this instruction as an atomic read-modify-write.\n// The size is in bytes and must be 1, 2, 4, or 8.\nfunc (i *Instruction) AsAtomicRmw(op AtomicRmwOp, addr, val Value, size uint64) *Instruction {\n\ti.opcode = OpcodeAtomicRmw\n\ti.u1 = uint64(op)\n\ti.u2 = size\n\ti.v = addr\n\ti.v2 = val\n\ti.typ = val.Type()\n\treturn i\n}\n\n// AsAtomicCas initializes this instruction as an atomic compare-and-swap.\n// The size is in bytes and must be 1, 2, 4, or 8.\nfunc (i *Instruction) AsAtomicCas(addr, exp, repl Value, size uint64) *Instruction {\n\ti.opcode = OpcodeAtomicCas\n\ti.u1 = size\n\ti.v = addr\n\ti.v2 = exp\n\ti.v3 = repl\n\ti.typ = repl.Type()\n\treturn i\n}\n\n// AsFence initializes this instruction as a memory fence.\n// A single byte immediate may be used to indicate fence ordering in the future\n// but is currently always 0 and ignored.\nfunc (i *Instruction) AsFence(order byte) *Instruction {\n\ti.opcode = OpcodeFence\n\ti.u1 = uint64(order)\n\treturn i\n}\n\n// AtomicRmwData returns the data for this atomic read-modify-write instruction.\nfunc (i *Instruction) AtomicRmwData() (op AtomicRmwOp, size uint64) {\n\treturn AtomicRmwOp(i.u1), i.u2\n}\n\n// AtomicTargetSize returns the target memory size of the atomic instruction.\nfunc (i *Instruction) AtomicTargetSize() (size uint64) {\n\treturn i.u1\n}\n\n// AsTailCallReturnCall initializes this instruction as a call instruction with OpcodeTailCallReturnCall.\nfunc (i *Instruction) AsTailCallReturnCall(ref FuncRef, sig *Signature, args Values) {\n\ti.opcode = OpcodeTailCallReturnCall\n\ti.u1 = uint64(ref)\n\ti.vs = args\n\ti.u2 = uint64(sig.ID)\n\tsig.used = true\n}\n\n// AsTailCallReturnCallIndirect initializes this instruction as a call-indirect instruction with OpcodeTailCallReturnCallIndirect.\nfunc (i *Instruction) AsTailCallReturnCallIndirect(funcPtr Value, sig *Signature, args Values) *Instruction {\n\ti.opcode = OpcodeTailCallReturnCallIndirect\n\ti.vs = args\n\ti.v = funcPtr\n\ti.u1 = uint64(sig.ID)\n\tsig.used = true\n\treturn i\n}\n\n// ReturnVals returns the return values of OpcodeReturn.\nfunc (i *Instruction) ReturnVals() []Value {\n\treturn i.vs.View()\n}\n\n// AsExitWithCode initializes this instruction as a trap instruction with OpcodeExitWithCode.\nfunc (i *Instruction) AsExitWithCode(ctx Value, code wazevoapi.ExitCode) {\n\ti.opcode = OpcodeExitWithCode\n\ti.v = ctx\n\ti.u1 = uint64(code)\n}\n\n// AsExitIfTrueWithCode initializes this instruction as a trap instruction with OpcodeExitIfTrueWithCode.\nfunc (i *Instruction) AsExitIfTrueWithCode(ctx, c Value, code wazevoapi.ExitCode) *Instruction {\n\ti.opcode = OpcodeExitIfTrueWithCode\n\ti.v = ctx\n\ti.v2 = c\n\ti.u1 = uint64(code)\n\treturn i\n}\n\n// ExitWithCodeData returns the context and exit code of OpcodeExitWithCode.\nfunc (i *Instruction) ExitWithCodeData() (ctx Value, code wazevoapi.ExitCode) {\n\treturn i.v, wazevoapi.ExitCode(i.u1)\n}\n\n// ExitIfTrueWithCodeData returns the context and exit code of OpcodeExitWithCode.\nfunc (i *Instruction) ExitIfTrueWithCodeData() (ctx, c Value, code wazevoapi.ExitCode) {\n\treturn i.v, i.v2, wazevoapi.ExitCode(i.u1)\n}\n\n// InvertBrx inverts either OpcodeBrz or OpcodeBrnz to the other.\nfunc (i *Instruction) InvertBrx() {\n\tswitch i.opcode {\n\tcase OpcodeBrz:\n\t\ti.opcode = OpcodeBrnz\n\tcase OpcodeBrnz:\n\t\ti.opcode = OpcodeBrz\n\tdefault:\n\t\tpanic(\"BUG\")\n\t}\n}\n\n// BranchData returns the branch data for this instruction necessary for backends.\nfunc (i *Instruction) BranchData() (condVal Value, blockArgs []Value, target BasicBlockID) {\n\tswitch i.opcode {\n\tcase OpcodeJump:\n\t\tcondVal = ValueInvalid\n\tcase OpcodeBrz, OpcodeBrnz:\n\t\tcondVal = i.v\n\tdefault:\n\t\tpanic(\"BUG\")\n\t}\n\tblockArgs = i.vs.View()\n\ttarget = BasicBlockID(i.rValue)\n\treturn\n}\n\n// BrTableData returns the branch table data for this instruction necessary for backends.\nfunc (i *Instruction) BrTableData() (index Value, targets Values) {\n\tif i.opcode != OpcodeBrTable {\n\t\tpanic(\"BUG: BrTableData only available for OpcodeBrTable\")\n\t}\n\tindex = i.v\n\ttargets = i.rValues\n\treturn\n}\n\n// AsJump initializes this instruction as a jump instruction with OpcodeJump.\nfunc (i *Instruction) AsJump(vs Values, target BasicBlock) *Instruction {\n\ti.opcode = OpcodeJump\n\ti.vs = vs\n\ti.rValue = Value(target.ID())\n\treturn i\n}\n\n// IsFallthroughJump returns true if this instruction is a fallthrough jump.\nfunc (i *Instruction) IsFallthroughJump() bool {\n\tif i.opcode != OpcodeJump {\n\t\tpanic(\"BUG: IsFallthrough only available for OpcodeJump\")\n\t}\n\treturn i.opcode == OpcodeJump && i.u1 != 0\n}\n\n// AsFallthroughJump marks this instruction as a fallthrough jump.\nfunc (i *Instruction) AsFallthroughJump() {\n\tif i.opcode != OpcodeJump {\n\t\tpanic(\"BUG: AsFallthroughJump only available for OpcodeJump\")\n\t}\n\ti.u1 = 1\n}\n\n// AsBrz initializes this instruction as a branch-if-zero instruction with OpcodeBrz.\nfunc (i *Instruction) AsBrz(v Value, args Values, target BasicBlock) {\n\ti.opcode = OpcodeBrz\n\ti.v = v\n\ti.vs = args\n\ti.rValue = Value(target.ID())\n}\n\n// AsBrnz initializes this instruction as a branch-if-not-zero instruction with OpcodeBrnz.\nfunc (i *Instruction) AsBrnz(v Value, args Values, target BasicBlock) *Instruction {\n\ti.opcode = OpcodeBrnz\n\ti.v = v\n\ti.vs = args\n\ti.rValue = Value(target.ID())\n\treturn i\n}\n\n// AsBrTable initializes this instruction as a branch-table instruction with OpcodeBrTable.\n// targets is a list of basic block IDs cast to Values.\nfunc (i *Instruction) AsBrTable(index Value, targets Values) {\n\ti.opcode = OpcodeBrTable\n\ti.v = index\n\ti.rValues = targets\n}\n\n// AsCall initializes this instruction as a call instruction with OpcodeCall.\nfunc (i *Instruction) AsCall(ref FuncRef, sig *Signature, args Values) {\n\ti.opcode = OpcodeCall\n\ti.u1 = uint64(ref)\n\ti.vs = args\n\ti.u2 = uint64(sig.ID)\n\tsig.used = true\n}\n\n// CallData returns the call data for this instruction necessary for backends.\nfunc (i *Instruction) CallData() (ref FuncRef, sigID SignatureID, args []Value) {\n\tif i.opcode != OpcodeCall && i.opcode != OpcodeTailCallReturnCall {\n\t\tpanic(\"BUG: CallData only available for OpcodeCall\")\n\t}\n\tref = FuncRef(i.u1)\n\tsigID = SignatureID(i.u2)\n\targs = i.vs.View()\n\treturn\n}\n\n// AsCallIndirect initializes this instruction as a call-indirect instruction with OpcodeCallIndirect.\nfunc (i *Instruction) AsCallIndirect(funcPtr Value, sig *Signature, args Values) *Instruction {\n\ti.opcode = OpcodeCallIndirect\n\ti.typ = TypeF64\n\ti.vs = args\n\ti.v = funcPtr\n\ti.u1 = uint64(sig.ID)\n\tsig.used = true\n\treturn i\n}\n\n// AsCallGoRuntimeMemmove is the same as AsCallIndirect, but with a special flag set to indicate that it is a call to the Go runtime memmove function.\nfunc (i *Instruction) AsCallGoRuntimeMemmove(funcPtr Value, sig *Signature, args Values) *Instruction {\n\ti.AsCallIndirect(funcPtr, sig, args)\n\ti.u2 = 1\n\treturn i\n}\n\n// CallIndirectData returns the call indirect data for this instruction necessary for backends.\nfunc (i *Instruction) CallIndirectData() (funcPtr Value, sigID SignatureID, args []Value, isGoMemmove bool) {\n\tif i.opcode != OpcodeCallIndirect && i.opcode != OpcodeTailCallReturnCallIndirect {\n\t\tpanic(\"BUG: CallIndirectData only available for OpcodeCallIndirect and OpcodeTailCallReturnCallIndirect\")\n\t}\n\tfuncPtr = i.v\n\tsigID = SignatureID(i.u1)\n\targs = i.vs.View()\n\tisGoMemmove = i.u2 == 1\n\treturn\n}\n\n// AsClz initializes this instruction as a Count Leading Zeroes instruction with OpcodeClz.\nfunc (i *Instruction) AsClz(x Value) {\n\ti.opcode = OpcodeClz\n\ti.v = x\n\ti.typ = x.Type()\n}\n\n// AsCtz initializes this instruction as a Count Trailing Zeroes instruction with OpcodeCtz.\nfunc (i *Instruction) AsCtz(x Value) {\n\ti.opcode = OpcodeCtz\n\ti.v = x\n\ti.typ = x.Type()\n}\n\n// AsPopcnt initializes this instruction as a Population Count instruction with OpcodePopcnt.\nfunc (i *Instruction) AsPopcnt(x Value) {\n\ti.opcode = OpcodePopcnt\n\ti.v = x\n\ti.typ = x.Type()\n}\n\n// AsFneg initializes this instruction as an instruction with OpcodeFneg.\nfunc (i *Instruction) AsFneg(x Value) *Instruction {\n\ti.opcode = OpcodeFneg\n\ti.v = x\n\ti.typ = x.Type()\n\treturn i\n}\n\n// AsSqrt initializes this instruction as an instruction with OpcodeSqrt.\nfunc (i *Instruction) AsSqrt(x Value) *Instruction {\n\ti.opcode = OpcodeSqrt\n\ti.v = x\n\ti.typ = x.Type()\n\treturn i\n}\n\n// AsFabs initializes this instruction as an instruction with OpcodeFabs.\nfunc (i *Instruction) AsFabs(x Value) *Instruction {\n\ti.opcode = OpcodeFabs\n\ti.v = x\n\ti.typ = x.Type()\n\treturn i\n}\n\n// AsFcopysign initializes this instruction as an instruction with OpcodeFcopysign.\nfunc (i *Instruction) AsFcopysign(x, y Value) *Instruction {\n\ti.opcode = OpcodeFcopysign\n\ti.v = x\n\ti.v2 = y\n\ti.typ = x.Type()\n\treturn i\n}\n\n// AsCeil initializes this instruction as an instruction with OpcodeCeil.\nfunc (i *Instruction) AsCeil(x Value) *Instruction {\n\ti.opcode = OpcodeCeil\n\ti.v = x\n\ti.typ = x.Type()\n\treturn i\n}\n\n// AsFloor initializes this instruction as an instruction with OpcodeFloor.\nfunc (i *Instruction) AsFloor(x Value) *Instruction {\n\ti.opcode = OpcodeFloor\n\ti.v = x\n\ti.typ = x.Type()\n\treturn i\n}\n\n// AsTrunc initializes this instruction as an instruction with OpcodeTrunc.\nfunc (i *Instruction) AsTrunc(x Value) *Instruction {\n\ti.opcode = OpcodeTrunc\n\ti.v = x\n\ti.typ = x.Type()\n\treturn i\n}\n\n// AsNearest initializes this instruction as an instruction with OpcodeNearest.\nfunc (i *Instruction) AsNearest(x Value) *Instruction {\n\ti.opcode = OpcodeNearest\n\ti.v = x\n\ti.typ = x.Type()\n\treturn i\n}\n\n// AsBitcast initializes this instruction as an instruction with OpcodeBitcast.\nfunc (i *Instruction) AsBitcast(x Value, dstType Type) *Instruction {\n\ti.opcode = OpcodeBitcast\n\ti.v = x\n\ti.typ = dstType\n\treturn i\n}\n\n// BitcastData returns the operands for a bitcast instruction.\nfunc (i *Instruction) BitcastData() (x Value, dstType Type) {\n\treturn i.v, i.typ\n}\n\n// AsFdemote initializes this instruction as an instruction with OpcodeFdemote.\nfunc (i *Instruction) AsFdemote(x Value) {\n\ti.opcode = OpcodeFdemote\n\ti.v = x\n\ti.typ = TypeF32\n}\n\n// AsFpromote initializes this instruction as an instruction with OpcodeFpromote.\nfunc (i *Instruction) AsFpromote(x Value) {\n\ti.opcode = OpcodeFpromote\n\ti.v = x\n\ti.typ = TypeF64\n}\n\n// AsFcvtFromInt initializes this instruction as an instruction with either OpcodeFcvtFromUint or OpcodeFcvtFromSint\nfunc (i *Instruction) AsFcvtFromInt(x Value, signed bool, dst64bit bool) *Instruction {\n\tif signed {\n\t\ti.opcode = OpcodeFcvtFromSint\n\t} else {\n\t\ti.opcode = OpcodeFcvtFromUint\n\t}\n\ti.v = x\n\tif dst64bit {\n\t\ti.typ = TypeF64\n\t} else {\n\t\ti.typ = TypeF32\n\t}\n\treturn i\n}\n\n// AsFcvtToInt initializes this instruction as an instruction with either OpcodeFcvtToUint or OpcodeFcvtToSint\nfunc (i *Instruction) AsFcvtToInt(x, ctx Value, signed bool, dst64bit bool, sat bool) *Instruction {\n\tswitch {\n\tcase signed && !sat:\n\t\ti.opcode = OpcodeFcvtToSint\n\tcase !signed && !sat:\n\t\ti.opcode = OpcodeFcvtToUint\n\tcase signed && sat:\n\t\ti.opcode = OpcodeFcvtToSintSat\n\tcase !signed && sat:\n\t\ti.opcode = OpcodeFcvtToUintSat\n\t}\n\ti.v = x\n\ti.v2 = ctx\n\tif dst64bit {\n\t\ti.typ = TypeI64\n\t} else {\n\t\ti.typ = TypeI32\n\t}\n\treturn i\n}\n\n// AsVFcvtToIntSat initializes this instruction as an instruction with either OpcodeVFcvtToSintSat or OpcodeVFcvtToUintSat\nfunc (i *Instruction) AsVFcvtToIntSat(x Value, lane VecLane, signed bool) *Instruction {\n\tif signed {\n\t\ti.opcode = OpcodeVFcvtToSintSat\n\t} else {\n\t\ti.opcode = OpcodeVFcvtToUintSat\n\t}\n\ti.v = x\n\ti.u1 = uint64(lane)\n\treturn i\n}\n\n// AsVFcvtFromInt initializes this instruction as an instruction with either OpcodeVFcvtToSintSat or OpcodeVFcvtToUintSat\nfunc (i *Instruction) AsVFcvtFromInt(x Value, lane VecLane, signed bool) *Instruction {\n\tif signed {\n\t\ti.opcode = OpcodeVFcvtFromSint\n\t} else {\n\t\ti.opcode = OpcodeVFcvtFromUint\n\t}\n\ti.v = x\n\ti.u1 = uint64(lane)\n\treturn i\n}\n\n// AsNarrow initializes this instruction as an instruction with either OpcodeSnarrow or OpcodeUnarrow\nfunc (i *Instruction) AsNarrow(x, y Value, lane VecLane, signed bool) *Instruction {\n\tif signed {\n\t\ti.opcode = OpcodeSnarrow\n\t} else {\n\t\ti.opcode = OpcodeUnarrow\n\t}\n\ti.v = x\n\ti.v2 = y\n\ti.u1 = uint64(lane)\n\treturn i\n}\n\n// AsFvpromoteLow initializes this instruction as an instruction with OpcodeFvpromoteLow\nfunc (i *Instruction) AsFvpromoteLow(x Value, lane VecLane) *Instruction {\n\ti.opcode = OpcodeFvpromoteLow\n\ti.v = x\n\ti.u1 = uint64(lane)\n\treturn i\n}\n\n// AsFvdemote initializes this instruction as an instruction with OpcodeFvdemote\nfunc (i *Instruction) AsFvdemote(x Value, lane VecLane) *Instruction {\n\ti.opcode = OpcodeFvdemote\n\ti.v = x\n\ti.u1 = uint64(lane)\n\treturn i\n}\n\n// AsSExtend initializes this instruction as a sign extension instruction with OpcodeSExtend.\nfunc (i *Instruction) AsSExtend(v Value, from, to byte) *Instruction {\n\ti.opcode = OpcodeSExtend\n\ti.v = v\n\ti.u1 = uint64(from)<<8 | uint64(to)\n\tif to == 64 {\n\t\ti.typ = TypeI64\n\t} else {\n\t\ti.typ = TypeI32\n\t}\n\treturn i\n}\n\n// AsUExtend initializes this instruction as an unsigned extension instruction with OpcodeUExtend.\nfunc (i *Instruction) AsUExtend(v Value, from, to byte) *Instruction {\n\ti.opcode = OpcodeUExtend\n\ti.v = v\n\ti.u1 = uint64(from)<<8 | uint64(to)\n\tif to == 64 {\n\t\ti.typ = TypeI64\n\t} else {\n\t\ti.typ = TypeI32\n\t}\n\treturn i\n}\n\nfunc (i *Instruction) ExtendData() (from, to byte, signed bool) {\n\tif i.opcode != OpcodeSExtend && i.opcode != OpcodeUExtend {\n\t\tpanic(\"BUG: ExtendData only available for OpcodeSExtend and OpcodeUExtend\")\n\t}\n\tfrom = byte(i.u1 >> 8)\n\tto = byte(i.u1)\n\tsigned = i.opcode == OpcodeSExtend\n\treturn\n}\n\n// AsSelect initializes this instruction as an unsigned extension instruction with OpcodeSelect.\nfunc (i *Instruction) AsSelect(c, x, y Value) *Instruction {\n\ti.opcode = OpcodeSelect\n\ti.v = c\n\ti.v2 = x\n\ti.v3 = y\n\ti.typ = x.Type()\n\treturn i\n}\n\n// SelectData returns the select data for this instruction necessary for backends.\nfunc (i *Instruction) SelectData() (c, x, y Value) {\n\tc = i.v\n\tx = i.v2\n\ty = i.v3\n\treturn\n}\n\n// ExtendFromToBits returns the from and to bit size for the extension instruction.\nfunc (i *Instruction) ExtendFromToBits() (from, to byte) {\n\tfrom = byte(i.u1 >> 8)\n\tto = byte(i.u1)\n\treturn\n}\n\n// Format returns a string representation of this instruction with the given builder.\n// For debugging purposes only.\nfunc (i *Instruction) Format(b Builder) string {\n\tvar instSuffix string\n\tswitch i.opcode {\n\tcase OpcodeExitWithCode:\n\t\tinstSuffix = fmt.Sprintf(\" %s, %s\", i.v.Format(b), wazevoapi.ExitCode(i.u1))\n\tcase OpcodeExitIfTrueWithCode:\n\t\tinstSuffix = fmt.Sprintf(\" %s, %s, %s\", i.v2.Format(b), i.v.Format(b), wazevoapi.ExitCode(i.u1))\n\tcase OpcodeIadd, OpcodeIsub, OpcodeImul, OpcodeFadd, OpcodeFsub, OpcodeFmin, OpcodeFmax, OpcodeFdiv, OpcodeFmul:\n\t\tinstSuffix = fmt.Sprintf(\" %s, %s\", i.v.Format(b), i.v2.Format(b))\n\tcase OpcodeIcmp:\n\t\tinstSuffix = fmt.Sprintf(\" %s, %s, %s\", IntegerCmpCond(i.u1), i.v.Format(b), i.v2.Format(b))\n\tcase OpcodeFcmp:\n\t\tinstSuffix = fmt.Sprintf(\" %s, %s, %s\", FloatCmpCond(i.u1), i.v.Format(b), i.v2.Format(b))\n\tcase OpcodeSExtend, OpcodeUExtend:\n\t\tinstSuffix = fmt.Sprintf(\" %s, %d->%d\", i.v.Format(b), i.u1>>8, i.u1&0xff)\n\tcase OpcodeCall, OpcodeCallIndirect:\n\t\tview := i.vs.View()\n\t\tvs := make([]string, len(view))\n\t\tfor idx := range vs {\n\t\t\tvs[idx] = view[idx].Format(b)\n\t\t}\n\t\tif i.opcode == OpcodeCallIndirect {\n\t\t\tinstSuffix = fmt.Sprintf(\" %s:%s, %s\", i.v.Format(b), SignatureID(i.u1), strings.Join(vs, \", \"))\n\t\t} else {\n\t\t\tinstSuffix = fmt.Sprintf(\" %s:%s, %s\", FuncRef(i.u1), SignatureID(i.u2), strings.Join(vs, \", \"))\n\t\t}\n\tcase OpcodeStore, OpcodeIstore8, OpcodeIstore16, OpcodeIstore32:\n\t\tinstSuffix = fmt.Sprintf(\" %s, %s, %#x\", i.v.Format(b), i.v2.Format(b), uint32(i.u1))\n\tcase OpcodeLoad, OpcodeVZeroExtLoad:\n\t\tinstSuffix = fmt.Sprintf(\" %s, %#x\", i.v.Format(b), int32(i.u1))\n\tcase OpcodeLoadSplat:\n\t\tinstSuffix = fmt.Sprintf(\".%s %s, %#x\", VecLane(i.u2), i.v.Format(b), int32(i.u1))\n\tcase OpcodeUload8, OpcodeUload16, OpcodeUload32, OpcodeSload8, OpcodeSload16, OpcodeSload32:\n\t\tinstSuffix = fmt.Sprintf(\" %s, %#x\", i.v.Format(b), int32(i.u1))\n\tcase OpcodeSelect, OpcodeVbitselect:\n\t\tinstSuffix = fmt.Sprintf(\" %s, %s, %s\", i.v.Format(b), i.v2.Format(b), i.v3.Format(b))\n\tcase OpcodeIconst:\n\t\tswitch i.typ {\n\t\tcase TypeI32:\n\t\t\tinstSuffix = fmt.Sprintf(\"_32 %#x\", uint32(i.u1))\n\t\tcase TypeI64:\n\t\t\tinstSuffix = fmt.Sprintf(\"_64 %#x\", i.u1)\n\t\t}\n\tcase OpcodeVconst:\n\t\tinstSuffix = fmt.Sprintf(\" %016x %016x\", i.u1, i.u2)\n\tcase OpcodeF32const:\n\t\tinstSuffix = fmt.Sprintf(\" %f\", math.Float32frombits(uint32(i.u1)))\n\tcase OpcodeF64const:\n\t\tinstSuffix = fmt.Sprintf(\" %f\", math.Float64frombits(i.u1))\n\tcase OpcodeReturn:\n\t\tview := i.vs.View()\n\t\tif len(view) == 0 {\n\t\t\tbreak\n\t\t}\n\t\tvs := make([]string, len(view))\n\t\tfor idx := range vs {\n\t\t\tvs[idx] = view[idx].Format(b)\n\t\t}\n\t\tinstSuffix = fmt.Sprintf(\" %s\", strings.Join(vs, \", \"))\n\tcase OpcodeJump:\n\t\tview := i.vs.View()\n\t\tvs := make([]string, len(view)+1)\n\t\tif i.IsFallthroughJump() {\n\t\t\tvs[0] = \" fallthrough\"\n\t\t} else {\n\t\t\tblockId := BasicBlockID(i.rValue)\n\t\t\tvs[0] = \" \" + b.BasicBlock(blockId).Name()\n\t\t}\n\t\tfor idx := range view {\n\t\t\tvs[idx+1] = view[idx].Format(b)\n\t\t}\n\n\t\tinstSuffix = strings.Join(vs, \", \")\n\tcase OpcodeBrz, OpcodeBrnz:\n\t\tview := i.vs.View()\n\t\tvs := make([]string, len(view)+2)\n\t\tvs[0] = \" \" + i.v.Format(b)\n\t\tblockId := BasicBlockID(i.rValue)\n\t\tvs[1] = b.BasicBlock(blockId).Name()\n\t\tfor idx := range view {\n\t\t\tvs[idx+2] = view[idx].Format(b)\n\t\t}\n\t\tinstSuffix = strings.Join(vs, \", \")\n\tcase OpcodeBrTable:\n\t\t// `BrTable index, [label1, label2, ... labelN]`\n\t\tinstSuffix = fmt.Sprintf(\" %s\", i.v.Format(b))\n\t\tinstSuffix += \", [\"\n\t\tfor i, target := range i.rValues.View() {\n\t\t\tblk := b.BasicBlock(BasicBlockID(target))\n\t\t\tif i == 0 {\n\t\t\t\tinstSuffix += blk.Name()\n\t\t\t} else {\n\t\t\t\tinstSuffix += \", \" + blk.Name()\n\t\t\t}\n\t\t}\n\t\tinstSuffix += \"]\"\n\tcase OpcodeBand, OpcodeBor, OpcodeBxor, OpcodeRotr, OpcodeRotl, OpcodeIshl, OpcodeSshr, OpcodeUshr,\n\t\tOpcodeSdiv, OpcodeUdiv, OpcodeFcopysign, OpcodeSrem, OpcodeUrem,\n\t\tOpcodeVbnot, OpcodeVbxor, OpcodeVbor, OpcodeVband, OpcodeVbandnot, OpcodeVIcmp, OpcodeVFcmp:\n\t\tinstSuffix = fmt.Sprintf(\" %s, %s\", i.v.Format(b), i.v2.Format(b))\n\tcase OpcodeUndefined:\n\tcase OpcodeClz, OpcodeCtz, OpcodePopcnt, OpcodeFneg, OpcodeFcvtToSint, OpcodeFcvtToUint, OpcodeFcvtFromSint,\n\t\tOpcodeFcvtFromUint, OpcodeFcvtToSintSat, OpcodeFcvtToUintSat, OpcodeFdemote, OpcodeFpromote, OpcodeIreduce, OpcodeBitcast, OpcodeSqrt, OpcodeFabs,\n\t\tOpcodeCeil, OpcodeFloor, OpcodeTrunc, OpcodeNearest:\n\t\tinstSuffix = \" \" + i.v.Format(b)\n\tcase OpcodeVIadd, OpcodeExtIaddPairwise, OpcodeVSaddSat, OpcodeVUaddSat, OpcodeVIsub, OpcodeVSsubSat, OpcodeVUsubSat,\n\t\tOpcodeVImin, OpcodeVUmin, OpcodeVImax, OpcodeVUmax, OpcodeVImul, OpcodeVAvgRound,\n\t\tOpcodeVFadd, OpcodeVFsub, OpcodeVFmul, OpcodeVFdiv,\n\t\tOpcodeVIshl, OpcodeVSshr, OpcodeVUshr,\n\t\tOpcodeVFmin, OpcodeVFmax, OpcodeVMinPseudo, OpcodeVMaxPseudo,\n\t\tOpcodeSnarrow, OpcodeUnarrow, OpcodeSwizzle, OpcodeSqmulRoundSat:\n\t\tinstSuffix = fmt.Sprintf(\".%s %s, %s\", VecLane(i.u1), i.v.Format(b), i.v2.Format(b))\n\tcase OpcodeVIabs, OpcodeVIneg, OpcodeVIpopcnt, OpcodeVhighBits, OpcodeVallTrue, OpcodeVanyTrue,\n\t\tOpcodeVFabs, OpcodeVFneg, OpcodeVSqrt, OpcodeVCeil, OpcodeVFloor, OpcodeVTrunc, OpcodeVNearest,\n\t\tOpcodeVFcvtToUintSat, OpcodeVFcvtToSintSat, OpcodeVFcvtFromUint, OpcodeVFcvtFromSint,\n\t\tOpcodeFvpromoteLow, OpcodeFvdemote, OpcodeSwidenLow, OpcodeUwidenLow, OpcodeSwidenHigh, OpcodeUwidenHigh,\n\t\tOpcodeSplat:\n\t\tinstSuffix = fmt.Sprintf(\".%s %s\", VecLane(i.u1), i.v.Format(b))\n\tcase OpcodeExtractlane:\n\t\tvar signedness string\n\t\tif i.u1 != 0 {\n\t\t\tsignedness = \"signed\"\n\t\t} else {\n\t\t\tsignedness = \"unsigned\"\n\t\t}\n\t\tinstSuffix = fmt.Sprintf(\".%s %d, %s (%s)\", VecLane(i.u2), 0x0000FFFF&i.u1, i.v.Format(b), signedness)\n\tcase OpcodeInsertlane:\n\t\tinstSuffix = fmt.Sprintf(\".%s %d, %s, %s\", VecLane(i.u2), i.u1, i.v.Format(b), i.v2.Format(b))\n\tcase OpcodeShuffle:\n\t\tlanes := make([]byte, 16)\n\t\tfor idx := 0; idx < 8; idx++ {\n\t\t\tlanes[idx] = byte(i.u1 >> (8 * idx))\n\t\t}\n\t\tfor idx := 0; idx < 8; idx++ {\n\t\t\tlanes[idx+8] = byte(i.u2 >> (8 * idx))\n\t\t}\n\t\t// Prints Shuffle.[0 1 2 3 4 5 6 7 ...] v2, v3\n\t\tinstSuffix = fmt.Sprintf(\".%v %s, %s\", lanes, i.v.Format(b), i.v2.Format(b))\n\tcase OpcodeAtomicRmw:\n\t\tinstSuffix = fmt.Sprintf(\" %s_%d, %s, %s\", AtomicRmwOp(i.u1), 8*i.u2, i.v.Format(b), i.v2.Format(b))\n\tcase OpcodeAtomicLoad:\n\t\tinstSuffix = fmt.Sprintf(\"_%d, %s\", 8*i.u1, i.v.Format(b))\n\tcase OpcodeAtomicStore:\n\t\tinstSuffix = fmt.Sprintf(\"_%d, %s, %s\", 8*i.u1, i.v.Format(b), i.v2.Format(b))\n\tcase OpcodeAtomicCas:\n\t\tinstSuffix = fmt.Sprintf(\"_%d, %s, %s, %s\", 8*i.u1, i.v.Format(b), i.v2.Format(b), i.v3.Format(b))\n\tcase OpcodeFence:\n\t\tinstSuffix = fmt.Sprintf(\" %d\", i.u1)\n\tcase OpcodeTailCallReturnCall, OpcodeTailCallReturnCallIndirect:\n\t\tview := i.vs.View()\n\t\tvs := make([]string, len(view))\n\t\tfor idx := range vs {\n\t\t\tvs[idx] = view[idx].Format(b)\n\t\t}\n\t\tif i.opcode == OpcodeCallIndirect {\n\t\t\tinstSuffix = fmt.Sprintf(\" %s:%s, %s\", i.v.Format(b), SignatureID(i.u1), strings.Join(vs, \", \"))\n\t\t} else {\n\t\t\tinstSuffix = fmt.Sprintf(\" %s:%s, %s\", FuncRef(i.u1), SignatureID(i.u2), strings.Join(vs, \", \"))\n\t\t}\n\tcase OpcodeWideningPairwiseDotProductS:\n\t\tinstSuffix = fmt.Sprintf(\" %s, %s\", i.v.Format(b), i.v2.Format(b))\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"TODO: format for %s\", i.opcode))\n\t}\n\n\tinstr := i.opcode.String() + instSuffix\n\n\tvar rvs []string\n\tr1, rs := i.Returns()\n\tif r1.Valid() {\n\t\trvs = append(rvs, r1.formatWithType(b))\n\t}\n\n\tfor _, v := range rs {\n\t\trvs = append(rvs, v.formatWithType(b))\n\t}\n\n\tif len(rvs) > 0 {\n\t\treturn fmt.Sprintf(\"%s = %s\", strings.Join(rvs, \", \"), instr)\n\t} else {\n\t\treturn instr\n\t}\n}\n\n// addArgumentBranchInst adds an argument to this instruction.\nfunc (i *Instruction) addArgumentBranchInst(b *builder, v Value) {\n\tswitch i.opcode {\n\tcase OpcodeJump, OpcodeBrz, OpcodeBrnz:\n\t\ti.vs = i.vs.Append(&b.varLengthPool, v)\n\tdefault:\n\t\tpanic(\"BUG: \" + i.opcode.String())\n\t}\n}\n\n// Constant returns true if this instruction is a constant instruction.\nfunc (i *Instruction) Constant() bool {\n\tswitch i.opcode {\n\tcase OpcodeIconst, OpcodeF32const, OpcodeF64const:\n\t\treturn true\n\t}\n\treturn false\n}\n\n// ConstantVal returns the constant value of this instruction.\n// How to interpret the return value depends on the opcode.\nfunc (i *Instruction) ConstantVal() (ret uint64) {\n\tswitch i.opcode {\n\tcase OpcodeIconst, OpcodeF32const, OpcodeF64const:\n\t\tret = i.u1\n\tdefault:\n\t\tpanic(\"TODO\")\n\t}\n\treturn\n}\n\n// String implements fmt.Stringer.\nfunc (o Opcode) String() (ret string) {\n\tswitch o {\n\tcase OpcodeInvalid:\n\t\treturn \"invalid\"\n\tcase OpcodeUndefined:\n\t\treturn \"Undefined\"\n\tcase OpcodeJump:\n\t\treturn \"Jump\"\n\tcase OpcodeBrz:\n\t\treturn \"Brz\"\n\tcase OpcodeBrnz:\n\t\treturn \"Brnz\"\n\tcase OpcodeBrTable:\n\t\treturn \"BrTable\"\n\tcase OpcodeExitWithCode:\n\t\treturn \"Exit\"\n\tcase OpcodeExitIfTrueWithCode:\n\t\treturn \"ExitIfTrue\"\n\tcase OpcodeReturn:\n\t\treturn \"Return\"\n\tcase OpcodeCall:\n\t\treturn \"Call\"\n\tcase OpcodeCallIndirect:\n\t\treturn \"CallIndirect\"\n\tcase OpcodeSplat:\n\t\treturn \"Splat\"\n\tcase OpcodeSwizzle:\n\t\treturn \"Swizzle\"\n\tcase OpcodeInsertlane:\n\t\treturn \"Insertlane\"\n\tcase OpcodeExtractlane:\n\t\treturn \"Extractlane\"\n\tcase OpcodeLoad:\n\t\treturn \"Load\"\n\tcase OpcodeLoadSplat:\n\t\treturn \"LoadSplat\"\n\tcase OpcodeStore:\n\t\treturn \"Store\"\n\tcase OpcodeUload8:\n\t\treturn \"Uload8\"\n\tcase OpcodeSload8:\n\t\treturn \"Sload8\"\n\tcase OpcodeIstore8:\n\t\treturn \"Istore8\"\n\tcase OpcodeUload16:\n\t\treturn \"Uload16\"\n\tcase OpcodeSload16:\n\t\treturn \"Sload16\"\n\tcase OpcodeIstore16:\n\t\treturn \"Istore16\"\n\tcase OpcodeUload32:\n\t\treturn \"Uload32\"\n\tcase OpcodeSload32:\n\t\treturn \"Sload32\"\n\tcase OpcodeIstore32:\n\t\treturn \"Istore32\"\n\tcase OpcodeIconst:\n\t\treturn \"Iconst\"\n\tcase OpcodeF32const:\n\t\treturn \"F32const\"\n\tcase OpcodeF64const:\n\t\treturn \"F64const\"\n\tcase OpcodeVconst:\n\t\treturn \"Vconst\"\n\tcase OpcodeShuffle:\n\t\treturn \"Shuffle\"\n\tcase OpcodeSelect:\n\t\treturn \"Select\"\n\tcase OpcodeVanyTrue:\n\t\treturn \"VanyTrue\"\n\tcase OpcodeVallTrue:\n\t\treturn \"VallTrue\"\n\tcase OpcodeVhighBits:\n\t\treturn \"VhighBits\"\n\tcase OpcodeIcmp:\n\t\treturn \"Icmp\"\n\tcase OpcodeIcmpImm:\n\t\treturn \"IcmpImm\"\n\tcase OpcodeVIcmp:\n\t\treturn \"VIcmp\"\n\tcase OpcodeIadd:\n\t\treturn \"Iadd\"\n\tcase OpcodeIsub:\n\t\treturn \"Isub\"\n\tcase OpcodeImul:\n\t\treturn \"Imul\"\n\tcase OpcodeUdiv:\n\t\treturn \"Udiv\"\n\tcase OpcodeSdiv:\n\t\treturn \"Sdiv\"\n\tcase OpcodeUrem:\n\t\treturn \"Urem\"\n\tcase OpcodeSrem:\n\t\treturn \"Srem\"\n\tcase OpcodeBand:\n\t\treturn \"Band\"\n\tcase OpcodeBor:\n\t\treturn \"Bor\"\n\tcase OpcodeBxor:\n\t\treturn \"Bxor\"\n\tcase OpcodeBnot:\n\t\treturn \"Bnot\"\n\tcase OpcodeRotl:\n\t\treturn \"Rotl\"\n\tcase OpcodeRotr:\n\t\treturn \"Rotr\"\n\tcase OpcodeIshl:\n\t\treturn \"Ishl\"\n\tcase OpcodeUshr:\n\t\treturn \"Ushr\"\n\tcase OpcodeSshr:\n\t\treturn \"Sshr\"\n\tcase OpcodeClz:\n\t\treturn \"Clz\"\n\tcase OpcodeCtz:\n\t\treturn \"Ctz\"\n\tcase OpcodePopcnt:\n\t\treturn \"Popcnt\"\n\tcase OpcodeFcmp:\n\t\treturn \"Fcmp\"\n\tcase OpcodeFadd:\n\t\treturn \"Fadd\"\n\tcase OpcodeFsub:\n\t\treturn \"Fsub\"\n\tcase OpcodeFmul:\n\t\treturn \"Fmul\"\n\tcase OpcodeFdiv:\n\t\treturn \"Fdiv\"\n\tcase OpcodeSqmulRoundSat:\n\t\treturn \"SqmulRoundSat\"\n\tcase OpcodeSqrt:\n\t\treturn \"Sqrt\"\n\tcase OpcodeFneg:\n\t\treturn \"Fneg\"\n\tcase OpcodeFabs:\n\t\treturn \"Fabs\"\n\tcase OpcodeFcopysign:\n\t\treturn \"Fcopysign\"\n\tcase OpcodeFmin:\n\t\treturn \"Fmin\"\n\tcase OpcodeFmax:\n\t\treturn \"Fmax\"\n\tcase OpcodeCeil:\n\t\treturn \"Ceil\"\n\tcase OpcodeFloor:\n\t\treturn \"Floor\"\n\tcase OpcodeTrunc:\n\t\treturn \"Trunc\"\n\tcase OpcodeNearest:\n\t\treturn \"Nearest\"\n\tcase OpcodeBitcast:\n\t\treturn \"Bitcast\"\n\tcase OpcodeIreduce:\n\t\treturn \"Ireduce\"\n\tcase OpcodeSnarrow:\n\t\treturn \"Snarrow\"\n\tcase OpcodeUnarrow:\n\t\treturn \"Unarrow\"\n\tcase OpcodeSwidenLow:\n\t\treturn \"SwidenLow\"\n\tcase OpcodeSwidenHigh:\n\t\treturn \"SwidenHigh\"\n\tcase OpcodeUwidenLow:\n\t\treturn \"UwidenLow\"\n\tcase OpcodeUwidenHigh:\n\t\treturn \"UwidenHigh\"\n\tcase OpcodeExtIaddPairwise:\n\t\treturn \"IaddPairwise\"\n\tcase OpcodeWideningPairwiseDotProductS:\n\t\treturn \"WideningPairwiseDotProductS\"\n\tcase OpcodeUExtend:\n\t\treturn \"UExtend\"\n\tcase OpcodeSExtend:\n\t\treturn \"SExtend\"\n\tcase OpcodeFpromote:\n\t\treturn \"Fpromote\"\n\tcase OpcodeFdemote:\n\t\treturn \"Fdemote\"\n\tcase OpcodeFvdemote:\n\t\treturn \"Fvdemote\"\n\tcase OpcodeFcvtToUint:\n\t\treturn \"FcvtToUint\"\n\tcase OpcodeFcvtToSint:\n\t\treturn \"FcvtToSint\"\n\tcase OpcodeFcvtToUintSat:\n\t\treturn \"FcvtToUintSat\"\n\tcase OpcodeFcvtToSintSat:\n\t\treturn \"FcvtToSintSat\"\n\tcase OpcodeFcvtFromUint:\n\t\treturn \"FcvtFromUint\"\n\tcase OpcodeFcvtFromSint:\n\t\treturn \"FcvtFromSint\"\n\tcase OpcodeAtomicRmw:\n\t\treturn \"AtomicRmw\"\n\tcase OpcodeAtomicCas:\n\t\treturn \"AtomicCas\"\n\tcase OpcodeAtomicLoad:\n\t\treturn \"AtomicLoad\"\n\tcase OpcodeAtomicStore:\n\t\treturn \"AtomicStore\"\n\tcase OpcodeFence:\n\t\treturn \"Fence\"\n\tcase OpcodeTailCallReturnCall:\n\t\treturn \"ReturnCall\"\n\tcase OpcodeTailCallReturnCallIndirect:\n\t\treturn \"ReturnCallIndirect\"\n\tcase OpcodeVbor:\n\t\treturn \"Vbor\"\n\tcase OpcodeVbxor:\n\t\treturn \"Vbxor\"\n\tcase OpcodeVband:\n\t\treturn \"Vband\"\n\tcase OpcodeVbandnot:\n\t\treturn \"Vbandnot\"\n\tcase OpcodeVbnot:\n\t\treturn \"Vbnot\"\n\tcase OpcodeVbitselect:\n\t\treturn \"Vbitselect\"\n\tcase OpcodeVIadd:\n\t\treturn \"VIadd\"\n\tcase OpcodeVSaddSat:\n\t\treturn \"VSaddSat\"\n\tcase OpcodeVUaddSat:\n\t\treturn \"VUaddSat\"\n\tcase OpcodeVSsubSat:\n\t\treturn \"VSsubSat\"\n\tcase OpcodeVUsubSat:\n\t\treturn \"VUsubSat\"\n\tcase OpcodeVAvgRound:\n\t\treturn \"OpcodeVAvgRound\"\n\tcase OpcodeVIsub:\n\t\treturn \"VIsub\"\n\tcase OpcodeVImin:\n\t\treturn \"VImin\"\n\tcase OpcodeVUmin:\n\t\treturn \"VUmin\"\n\tcase OpcodeVImax:\n\t\treturn \"VImax\"\n\tcase OpcodeVUmax:\n\t\treturn \"VUmax\"\n\tcase OpcodeVImul:\n\t\treturn \"VImul\"\n\tcase OpcodeVIabs:\n\t\treturn \"VIabs\"\n\tcase OpcodeVIneg:\n\t\treturn \"VIneg\"\n\tcase OpcodeVIpopcnt:\n\t\treturn \"VIpopcnt\"\n\tcase OpcodeVIshl:\n\t\treturn \"VIshl\"\n\tcase OpcodeVUshr:\n\t\treturn \"VUshr\"\n\tcase OpcodeVSshr:\n\t\treturn \"VSshr\"\n\tcase OpcodeVFabs:\n\t\treturn \"VFabs\"\n\tcase OpcodeVFmax:\n\t\treturn \"VFmax\"\n\tcase OpcodeVFmin:\n\t\treturn \"VFmin\"\n\tcase OpcodeVFneg:\n\t\treturn \"VFneg\"\n\tcase OpcodeVFadd:\n\t\treturn \"VFadd\"\n\tcase OpcodeVFsub:\n\t\treturn \"VFsub\"\n\tcase OpcodeVFmul:\n\t\treturn \"VFmul\"\n\tcase OpcodeVFdiv:\n\t\treturn \"VFdiv\"\n\tcase OpcodeVFcmp:\n\t\treturn \"VFcmp\"\n\tcase OpcodeVCeil:\n\t\treturn \"VCeil\"\n\tcase OpcodeVFloor:\n\t\treturn \"VFloor\"\n\tcase OpcodeVTrunc:\n\t\treturn \"VTrunc\"\n\tcase OpcodeVNearest:\n\t\treturn \"VNearest\"\n\tcase OpcodeVMaxPseudo:\n\t\treturn \"VMaxPseudo\"\n\tcase OpcodeVMinPseudo:\n\t\treturn \"VMinPseudo\"\n\tcase OpcodeVSqrt:\n\t\treturn \"VSqrt\"\n\tcase OpcodeVFcvtToUintSat:\n\t\treturn \"VFcvtToUintSat\"\n\tcase OpcodeVFcvtToSintSat:\n\t\treturn \"VFcvtToSintSat\"\n\tcase OpcodeVFcvtFromUint:\n\t\treturn \"VFcvtFromUint\"\n\tcase OpcodeVFcvtFromSint:\n\t\treturn \"VFcvtFromSint\"\n\tcase OpcodeFvpromoteLow:\n\t\treturn \"FvpromoteLow\"\n\tcase OpcodeVZeroExtLoad:\n\t\treturn \"VZeroExtLoad\"\n\t}\n\tpanic(fmt.Sprintf(\"unknown opcode %d\", o))\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/ssa/pass.go",
    "content": "package ssa\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi\"\n)\n\n// RunPasses implements Builder.RunPasses.\n//\n// The order here matters; some pass depends on the previous ones.\n//\n// Note that passes suffixed with \"Opt\" are the optimization passes, meaning that they edit the instructions and blocks\n// while the other passes are not, like passEstimateBranchProbabilities does not edit them, but only calculates the additional information.\nfunc (b *builder) RunPasses() {\n\tb.runPreBlockLayoutPasses()\n\tb.runBlockLayoutPass()\n\tb.runPostBlockLayoutPasses()\n\tb.runFinalizingPasses()\n}\n\nfunc (b *builder) runPreBlockLayoutPasses() {\n\tpassSortSuccessors(b)\n\tpassDeadBlockEliminationOpt(b)\n\t// The result of passCalculateImmediateDominators will be used by various passes below.\n\tpassCalculateImmediateDominators(b)\n\tpassRedundantPhiEliminationOpt(b)\n\tpassNopInstElimination(b)\n\n\t// TODO: implement either conversion of irreducible CFG into reducible one, or irreducible CFG detection where we panic.\n\t// \tWebAssembly program shouldn't result in irreducible CFG, but we should handle it properly in just in case.\n\t// \tSee FixIrreducible pass in LLVM: https://llvm.org/doxygen/FixIrreducible_8cpp_source.html\n\n\t// TODO: implement more optimization passes like:\n\t// \tblock coalescing.\n\t// \tCopy-propagation.\n\t// \tConstant folding.\n\t// \tCommon subexpression elimination.\n\t// \tArithmetic simplifications.\n\t// \tand more!\n\n\t// passDeadCodeEliminationOpt could be more accurate if we do this after other optimizations.\n\tpassDeadCodeEliminationOpt(b)\n\tb.donePreBlockLayoutPasses = true\n}\n\nfunc (b *builder) runBlockLayoutPass() {\n\tif !b.donePreBlockLayoutPasses {\n\t\tpanic(\"runBlockLayoutPass must be called after all pre passes are done\")\n\t}\n\tpassLayoutBlocks(b)\n\tb.doneBlockLayout = true\n}\n\n// runPostBlockLayoutPasses runs the post block layout passes. After this point, CFG is somewhat stable,\n// but still can be modified before finalizing passes. At this point, critical edges are split by passLayoutBlocks.\nfunc (b *builder) runPostBlockLayoutPasses() {\n\tif !b.doneBlockLayout {\n\t\tpanic(\"runPostBlockLayoutPasses must be called after block layout pass is done\")\n\t}\n\t// TODO: Do more. e.g. tail duplication, loop unrolling, etc.\n\n\tb.donePostBlockLayoutPasses = true\n}\n\n// runFinalizingPasses runs the finalizing passes. After this point, CFG should not be modified.\nfunc (b *builder) runFinalizingPasses() {\n\tif !b.donePostBlockLayoutPasses {\n\t\tpanic(\"runFinalizingPasses must be called after post block layout passes are done\")\n\t}\n\t// Critical edges are split, so we fix the loop nesting forest.\n\tpassBuildLoopNestingForest(b)\n\tpassBuildDominatorTree(b)\n\t// Now that we know the final placement of the blocks, we can explicitly mark the fallthrough jumps.\n\tb.markFallthroughJumps()\n}\n\n// passDeadBlockEliminationOpt searches the unreachable blocks, and sets the basicBlock.invalid flag true if so.\nfunc passDeadBlockEliminationOpt(b *builder) {\n\tentryBlk := b.entryBlk()\n\tb.blkStack = append(b.blkStack, entryBlk)\n\tfor len(b.blkStack) > 0 {\n\t\treachableBlk := b.blkStack[len(b.blkStack)-1]\n\t\tb.blkStack = b.blkStack[:len(b.blkStack)-1]\n\t\treachableBlk.visited = 1\n\n\t\tif !reachableBlk.sealed && !reachableBlk.ReturnBlock() {\n\t\t\tpanic(fmt.Sprintf(\"%s is not sealed\", reachableBlk))\n\t\t}\n\n\t\tif wazevoapi.SSAValidationEnabled {\n\t\t\treachableBlk.validate(b)\n\t\t}\n\n\t\tfor _, succ := range reachableBlk.success {\n\t\t\tif succ.visited == 1 {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tb.blkStack = append(b.blkStack, succ)\n\t\t}\n\t}\n\n\tfor blk := b.blockIteratorBegin(); blk != nil; blk = b.blockIteratorNext() {\n\t\tif blk.visited != 1 {\n\t\t\tblk.invalid = true\n\t\t}\n\t\tblk.visited = 0\n\t}\n}\n\n// passRedundantPhiEliminationOpt eliminates the redundant PHIs (in our terminology, parameters of a block).\n// This requires the reverse post-order traversal to be calculated before calling this function,\n// hence passCalculateImmediateDominators must be called before this.\nfunc passRedundantPhiEliminationOpt(b *builder) {\n\tredundantParams := b.redundantParams[:0] // reuse the slice from previous iterations.\n\n\t// TODO: this might be costly for large programs, but at least, as far as I did the experiment, it's almost the\n\t//  same as the single iteration version in terms of the overall compilation time. That *might be* mostly thanks to the fact\n\t//  that removing many PHIs results in the reduction of the total instructions, not because of this indefinite iteration is\n\t//  relatively small. For example, sqlite speedtest binary results in the large number of redundant PHIs,\n\t//  the maximum number of iteration was 22, which seems to be acceptable but not that small either since the\n\t//  complexity here is O(BlockNum * Iterations) at the worst case where BlockNum might be the order of thousands.\n\t//  -- Note --\n\t// \tCurrently, each iteration can run in any order of blocks, but it empirically converges quickly in practice when\n\t// \trunning on the reverse post-order. It might be possible to optimize this further by using the dominator tree.\n\tfor {\n\t\tchanged := false\n\t\t_ = b.blockIteratorReversePostOrderBegin() // skip entry block!\n\t\t// Below, we intentionally use the named iteration variable name, as this comes with inevitable nested for loops!\n\t\tfor blk := b.blockIteratorReversePostOrderNext(); blk != nil; blk = b.blockIteratorReversePostOrderNext() {\n\t\t\tparams := blk.params.View()\n\t\t\tparamNum := len(params)\n\n\t\t\tfor paramIndex := 0; paramIndex < paramNum; paramIndex++ {\n\t\t\t\tphiValue := params[paramIndex]\n\t\t\t\tredundant := true\n\n\t\t\t\tnonSelfReferencingValue := ValueInvalid\n\t\t\t\tfor predIndex := range blk.preds {\n\t\t\t\t\tbr := blk.preds[predIndex].branch\n\t\t\t\t\t// Resolve the alias in the arguments so that we could use the previous iteration's result.\n\t\t\t\t\tb.resolveArgumentAlias(br)\n\t\t\t\t\tpred := br.vs.View()[paramIndex]\n\t\t\t\t\tif pred == phiValue {\n\t\t\t\t\t\t// This is self-referencing: PHI from the same PHI.\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\n\t\t\t\t\tif !nonSelfReferencingValue.Valid() {\n\t\t\t\t\t\tnonSelfReferencingValue = pred\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\n\t\t\t\t\tif nonSelfReferencingValue != pred {\n\t\t\t\t\t\tredundant = false\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif !nonSelfReferencingValue.Valid() {\n\t\t\t\t\t// This shouldn't happen, and must be a bug in builder.go.\n\t\t\t\t\tpanic(\"BUG: params added but only self-referencing\")\n\t\t\t\t}\n\n\t\t\t\tif redundant {\n\t\t\t\t\tredundantParams = append(redundantParams, redundantParam{\n\t\t\t\t\t\tindex: paramIndex, uniqueValue: nonSelfReferencingValue,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif len(redundantParams) == 0 {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tchanged = true\n\n\t\t\t// Remove the redundant PHIs from the argument list of branching instructions.\n\t\t\tfor predIndex := range blk.preds {\n\t\t\t\tredundantParamsCur, predParamCur := 0, 0\n\t\t\t\tpredBlk := blk.preds[predIndex]\n\t\t\t\tbranchInst := predBlk.branch\n\t\t\t\tview := branchInst.vs.View()\n\t\t\t\tfor argIndex, value := range view {\n\t\t\t\t\tif len(redundantParams) == redundantParamsCur ||\n\t\t\t\t\t\tredundantParams[redundantParamsCur].index != argIndex {\n\t\t\t\t\t\tview[predParamCur] = value\n\t\t\t\t\t\tpredParamCur++\n\t\t\t\t\t} else {\n\t\t\t\t\t\tredundantParamsCur++\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbranchInst.vs.Cut(predParamCur)\n\t\t\t}\n\n\t\t\t// Still need to have the definition of the value of the PHI (previously as the parameter).\n\t\t\tfor i := range redundantParams {\n\t\t\t\tredundantValue := &redundantParams[i]\n\t\t\t\tphiValue := params[redundantValue.index]\n\t\t\t\t// Create an alias in this block from the only phi argument to the phi value.\n\t\t\t\tb.alias(phiValue, redundantValue.uniqueValue)\n\t\t\t}\n\n\t\t\t// Finally, Remove the param from the blk.\n\t\t\tparamsCur, redundantParamsCur := 0, 0\n\t\t\tfor paramIndex := 0; paramIndex < paramNum; paramIndex++ {\n\t\t\t\tparam := params[paramIndex]\n\t\t\t\tif len(redundantParams) == redundantParamsCur || redundantParams[redundantParamsCur].index != paramIndex {\n\t\t\t\t\tparams[paramsCur] = param\n\t\t\t\t\tparamsCur++\n\t\t\t\t} else {\n\t\t\t\t\tredundantParamsCur++\n\t\t\t\t}\n\t\t\t}\n\t\t\tblk.params.Cut(paramsCur)\n\n\t\t\t// Clears the map for the next iteration.\n\t\t\tredundantParams = redundantParams[:0]\n\t\t}\n\n\t\tif !changed {\n\t\t\tbreak\n\t\t}\n\t}\n\n\t// Reuse the slice for the future passes.\n\tb.redundantParams = redundantParams\n}\n\n// passDeadCodeEliminationOpt traverses all the instructions, and calculates the reference count of each Value, and\n// eliminates all the unnecessary instructions whose ref count is zero.\n// The results are stored at builder.valueRefCounts. This also assigns a InstructionGroupID to each Instruction\n// during the process. This is the last SSA-level optimization pass and after this,\n// the SSA function is ready to be used by backends.\n//\n// TODO: the algorithm here might not be efficient. Get back to this later.\nfunc passDeadCodeEliminationOpt(b *builder) {\n\tnvid := int(b.nextValueID)\n\tif nvid >= len(b.valuesInfo) {\n\t\tl := nvid - len(b.valuesInfo) + 1\n\t\tb.valuesInfo = append(b.valuesInfo, make([]ValueInfo, l)...)\n\t\tview := b.valuesInfo[len(b.valuesInfo)-l:]\n\t\tfor i := range view {\n\t\t\tview[i].alias = ValueInvalid\n\t\t}\n\t}\n\n\t// First, we gather all the instructions with side effects.\n\tliveInstructions := b.instStack[:0]\n\t// During the process, we will assign InstructionGroupID to each instruction, which is not\n\t// relevant to dead code elimination, but we need in the backend.\n\tvar gid InstructionGroupID\n\tfor blk := b.blockIteratorBegin(); blk != nil; blk = b.blockIteratorNext() {\n\t\tfor cur := blk.rootInstr; cur != nil; cur = cur.next {\n\t\t\tcur.gid = gid\n\t\t\tswitch cur.sideEffect() {\n\t\t\tcase sideEffectTraps:\n\t\t\t\t// The trappable should always be alive.\n\t\t\t\tliveInstructions = append(liveInstructions, cur)\n\t\t\tcase sideEffectStrict:\n\t\t\t\tliveInstructions = append(liveInstructions, cur)\n\t\t\t\t// The strict side effect should create different instruction groups.\n\t\t\t\tgid++\n\t\t\t}\n\t\t}\n\t}\n\n\t// Find all the instructions referenced by live instructions transitively.\n\tfor len(liveInstructions) > 0 {\n\t\ttail := len(liveInstructions) - 1\n\t\tlive := liveInstructions[tail]\n\t\tliveInstructions = liveInstructions[:tail]\n\t\tif live.live {\n\t\t\t// If it's already marked alive, this is referenced multiple times,\n\t\t\t// so we can skip it.\n\t\t\tcontinue\n\t\t}\n\t\tlive.live = true\n\n\t\t// Before we walk, we need to resolve the alias first.\n\t\tb.resolveArgumentAlias(live)\n\n\t\tv1, v2, v3, vs := live.Args()\n\t\tif v1.Valid() {\n\t\t\tproducingInst := b.InstructionOfValue(v1)\n\t\t\tif producingInst != nil {\n\t\t\t\tliveInstructions = append(liveInstructions, producingInst)\n\t\t\t}\n\t\t}\n\n\t\tif v2.Valid() {\n\t\t\tproducingInst := b.InstructionOfValue(v2)\n\t\t\tif producingInst != nil {\n\t\t\t\tliveInstructions = append(liveInstructions, producingInst)\n\t\t\t}\n\t\t}\n\n\t\tif v3.Valid() {\n\t\t\tproducingInst := b.InstructionOfValue(v3)\n\t\t\tif producingInst != nil {\n\t\t\t\tliveInstructions = append(liveInstructions, producingInst)\n\t\t\t}\n\t\t}\n\n\t\tfor _, v := range vs {\n\t\t\tproducingInst := b.InstructionOfValue(v)\n\t\t\tif producingInst != nil {\n\t\t\t\tliveInstructions = append(liveInstructions, producingInst)\n\t\t\t}\n\t\t}\n\t}\n\n\t// Now that all the live instructions are flagged as live=true, we eliminate all dead instructions.\n\tfor blk := b.blockIteratorBegin(); blk != nil; blk = b.blockIteratorNext() {\n\t\tfor cur := blk.rootInstr; cur != nil; cur = cur.next {\n\t\t\tif !cur.live {\n\t\t\t\t// Remove the instruction from the list.\n\t\t\t\tif prev := cur.prev; prev != nil {\n\t\t\t\t\tprev.next = cur.next\n\t\t\t\t} else {\n\t\t\t\t\tblk.rootInstr = cur.next\n\t\t\t\t}\n\t\t\t\tif next := cur.next; next != nil {\n\t\t\t\t\tnext.prev = cur.prev\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// If the value alive, we can be sure that arguments are used definitely.\n\t\t\t// Hence, we can increment the value reference counts.\n\t\t\tv1, v2, v3, vs := cur.Args()\n\t\t\tif v1.Valid() {\n\t\t\t\tb.incRefCount(v1.ID(), cur)\n\t\t\t}\n\t\t\tif v2.Valid() {\n\t\t\t\tb.incRefCount(v2.ID(), cur)\n\t\t\t}\n\t\t\tif v3.Valid() {\n\t\t\t\tb.incRefCount(v3.ID(), cur)\n\t\t\t}\n\t\t\tfor _, v := range vs {\n\t\t\t\tb.incRefCount(v.ID(), cur)\n\t\t\t}\n\t\t}\n\t}\n\n\tb.instStack = liveInstructions // we reuse the stack for the next iteration.\n}\n\nfunc (b *builder) incRefCount(id ValueID, from *Instruction) {\n\tif wazevoapi.SSALoggingEnabled {\n\t\tfmt.Printf(\"v%d referenced from %v\\n\", id, from.Format(b))\n\t}\n\tinfo := &b.valuesInfo[id]\n\tinfo.RefCount++\n}\n\n// passNopInstElimination eliminates the instructions which is essentially a no-op.\nfunc passNopInstElimination(b *builder) {\n\tfor blk := b.blockIteratorBegin(); blk != nil; blk = b.blockIteratorNext() {\n\t\tfor cur := blk.rootInstr; cur != nil; cur = cur.next {\n\t\t\tswitch cur.Opcode() {\n\t\t\t// TODO: add more logics here.\n\t\t\tcase OpcodeIshl, OpcodeSshr, OpcodeUshr:\n\t\t\t\tx, amount := cur.Arg2()\n\t\t\t\tdefiningInst := b.InstructionOfValue(amount)\n\t\t\t\tif definingInst == nil {\n\t\t\t\t\t// If there's no defining instruction, that means the amount is coming from the parameter.\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif definingInst.Constant() {\n\t\t\t\t\tv := definingInst.ConstantVal()\n\n\t\t\t\t\tif x.Type().Bits() == 64 {\n\t\t\t\t\t\tv = v % 64\n\t\t\t\t\t} else {\n\t\t\t\t\t\tv = v % 32\n\t\t\t\t\t}\n\t\t\t\t\tif v == 0 {\n\t\t\t\t\t\tb.alias(cur.Return(), x)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n// passSortSuccessors sorts the successors of each block in the natural program order.\nfunc passSortSuccessors(b *builder) {\n\tfor i := 0; i < b.basicBlocksPool.Allocated(); i++ {\n\t\tblk := b.basicBlocksPool.View(i)\n\t\tsortBlocks(blk.success)\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/ssa/pass_blk_layouts.go",
    "content": "package ssa\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi\"\n)\n\n// passLayoutBlocks implements Builder.LayoutBlocks. This re-organizes builder.reversePostOrderedBasicBlocks.\n//\n// TODO: there are tons of room for improvement here. e.g. LLVM has BlockPlacementPass using BlockFrequencyInfo,\n// BranchProbabilityInfo, and LoopInfo to do a much better job. Also, if we have the profiling instrumentation\n// like ball-larus algorithm, then we could do profile-guided optimization. Basically all of them are trying\n// to maximize the fall-through opportunities which is most efficient.\n//\n// Here, fallthrough happens when a block ends with jump instruction whose target is the right next block in the\n// builder.reversePostOrderedBasicBlocks.\n//\n// Currently, we just place blocks using the DFS reverse post-order of the dominator tree with the heuristics:\n//  1. a split edge trampoline towards a loop header will be placed as a fallthrough.\n//  2. we invert the brz and brnz if it makes the fallthrough more likely.\n//\n// This heuristic is done in maybeInvertBranches function.\nfunc passLayoutBlocks(b *builder) {\n\t// We might end up splitting critical edges which adds more basic blocks,\n\t// so we store the currently existing basic blocks in nonSplitBlocks temporarily.\n\t// That way we can iterate over the original basic blocks while appending new ones into reversePostOrderedBasicBlocks.\n\tnonSplitBlocks := b.blkStack[:0]\n\tfor i, blk := range b.reversePostOrderedBasicBlocks {\n\t\tif !blk.Valid() {\n\t\t\tcontinue\n\t\t}\n\t\tnonSplitBlocks = append(nonSplitBlocks, blk)\n\t\tif i != len(b.reversePostOrderedBasicBlocks)-1 {\n\t\t\t_ = maybeInvertBranches(b, blk, b.reversePostOrderedBasicBlocks[i+1])\n\t\t}\n\t}\n\n\tvar trampolines []*basicBlock\n\n\t// Reset the order slice since we update on the fly by splitting critical edges.\n\tb.reversePostOrderedBasicBlocks = b.reversePostOrderedBasicBlocks[:0]\n\tuninsertedTrampolines := b.blkStack2[:0]\n\tfor _, blk := range nonSplitBlocks {\n\t\tfor i := range blk.preds {\n\t\t\tpred := blk.preds[i].blk\n\t\t\tif pred.visited == 1 || !pred.Valid() {\n\t\t\t\tcontinue\n\t\t\t} else if pred.reversePostOrder < blk.reversePostOrder {\n\t\t\t\t// This means the edge is critical, and this pred is the trampoline and yet to be inserted.\n\t\t\t\t// Split edge trampolines must come before the destination in reverse post-order.\n\t\t\t\tb.reversePostOrderedBasicBlocks = append(b.reversePostOrderedBasicBlocks, pred)\n\t\t\t\tpred.visited = 1 // mark as inserted.\n\t\t\t}\n\t\t}\n\n\t\t// Now that we've already added all the potential trampoline blocks incoming to this block,\n\t\t// we can add this block itself.\n\t\tb.reversePostOrderedBasicBlocks = append(b.reversePostOrderedBasicBlocks, blk)\n\t\tblk.visited = 1 // mark as inserted.\n\n\t\tif len(blk.success) < 2 {\n\t\t\t// There won't be critical edge originating from this block.\n\t\t\tcontinue\n\t\t} else if blk.currentInstr.opcode == OpcodeBrTable {\n\t\t\t// We don't split critical edges here, because at the construction site of BrTable, we already split the edges.\n\t\t\tcontinue\n\t\t}\n\n\t\tfor sidx, succ := range blk.success {\n\t\t\tif !succ.ReturnBlock() && // If the successor is a return block, we need to split the edge any way because we need \"epilogue\" to be inserted.\n\t\t\t\t// Plus if there's no multiple incoming edges to this successor, (pred, succ) is not critical.\n\t\t\t\tlen(succ.preds) < 2 {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// Otherwise, we are sure this is a critical edge. To modify the CFG, we need to find the predecessor info\n\t\t\t// from the successor.\n\t\t\tvar predInfo *basicBlockPredecessorInfo\n\t\t\tfor i := range succ.preds { // This linear search should not be a problem since the number of predecessors should almost always small.\n\t\t\t\tpred := &succ.preds[i]\n\t\t\t\tif pred.blk == blk {\n\t\t\t\t\tpredInfo = pred\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif predInfo == nil {\n\t\t\t\t// This must be a bug in somewhere around branch manipulation.\n\t\t\t\tpanic(\"BUG: predecessor info not found while the successor exists in successors list\")\n\t\t\t}\n\n\t\t\tif wazevoapi.SSALoggingEnabled {\n\t\t\t\tfmt.Printf(\"trying to split edge from %d->%d at %s\\n\",\n\t\t\t\t\tblk.ID(), succ.ID(), predInfo.branch.Format(b))\n\t\t\t}\n\n\t\t\ttrampoline := b.splitCriticalEdge(blk, succ, predInfo)\n\t\t\t// Update the successors slice because the target is no longer the original `succ`.\n\t\t\tblk.success[sidx] = trampoline\n\n\t\t\tif wazevoapi.SSAValidationEnabled {\n\t\t\t\ttrampolines = append(trampolines, trampoline)\n\t\t\t}\n\n\t\t\tif wazevoapi.SSALoggingEnabled {\n\t\t\t\tfmt.Printf(\"edge split from %d->%d at %s as %d->%d->%d \\n\",\n\t\t\t\t\tblk.ID(), succ.ID(), predInfo.branch.Format(b),\n\t\t\t\t\tblk.ID(), trampoline.ID(), succ.ID())\n\t\t\t}\n\n\t\t\tfallthroughBranch := blk.currentInstr\n\t\t\tif fallthroughBranch.opcode == OpcodeJump && BasicBlockID(fallthroughBranch.rValue) == trampoline.id {\n\t\t\t\t// This can be lowered as fallthrough at the end of the block.\n\t\t\t\tb.reversePostOrderedBasicBlocks = append(b.reversePostOrderedBasicBlocks, trampoline)\n\t\t\t\ttrampoline.visited = 1 // mark as inserted.\n\t\t\t} else {\n\t\t\t\tuninsertedTrampolines = append(uninsertedTrampolines, trampoline)\n\t\t\t}\n\t\t}\n\n\t\tfor _, trampoline := range uninsertedTrampolines {\n\t\t\tif trampoline.success[0].reversePostOrder <= trampoline.reversePostOrder { // \"<=\", not \"<\" because the target might be itself.\n\t\t\t\t// This means the critical edge was backward, so we insert after the current block immediately.\n\t\t\t\tb.reversePostOrderedBasicBlocks = append(b.reversePostOrderedBasicBlocks, trampoline)\n\t\t\t\ttrampoline.visited = 1 // mark as inserted.\n\t\t\t} // If the target is forward, we can wait to insert until the target is inserted.\n\t\t}\n\t\tuninsertedTrampolines = uninsertedTrampolines[:0] // Reuse the stack for the next block.\n\t}\n\n\tif wazevoapi.SSALoggingEnabled {\n\t\tvar bs []string\n\t\tfor _, blk := range b.reversePostOrderedBasicBlocks {\n\t\t\tbs = append(bs, blk.Name())\n\t\t}\n\t\tfmt.Println(\"ordered blocks: \", strings.Join(bs, \", \"))\n\t}\n\n\tif wazevoapi.SSAValidationEnabled {\n\t\tfor _, trampoline := range trampolines {\n\t\t\tif trampoline.visited != 1 {\n\t\t\t\tpanic(\"BUG: trampoline block not inserted: \" + trampoline.formatHeader(b))\n\t\t\t}\n\t\t\ttrampoline.validate(b)\n\t\t}\n\t}\n\n\t// Reuse the stack for the next iteration.\n\tb.blkStack2 = uninsertedTrampolines[:0]\n}\n\n// markFallthroughJumps finds the fallthrough jumps and marks them as such.\nfunc (b *builder) markFallthroughJumps() {\n\tl := len(b.reversePostOrderedBasicBlocks) - 1\n\tfor i, blk := range b.reversePostOrderedBasicBlocks {\n\t\tif i < l {\n\t\t\tcur := blk.currentInstr\n\t\t\tif cur.opcode == OpcodeJump && BasicBlockID(cur.rValue) == b.reversePostOrderedBasicBlocks[i+1].id {\n\t\t\t\tcur.AsFallthroughJump()\n\t\t\t}\n\t\t}\n\t}\n}\n\n// maybeInvertBranches inverts the branch instructions if it is likely possible to the fallthrough more likely with simple heuristics.\n// nextInRPO is the next block in the reverse post-order.\n//\n// Returns true if the branch is inverted for testing purpose.\nfunc maybeInvertBranches(b *builder, now *basicBlock, nextInRPO *basicBlock) bool {\n\tfallthroughBranch := now.currentInstr\n\tif fallthroughBranch.opcode == OpcodeBrTable {\n\t\treturn false\n\t}\n\n\tcondBranch := fallthroughBranch.prev\n\tif condBranch == nil || (condBranch.opcode != OpcodeBrnz && condBranch.opcode != OpcodeBrz) {\n\t\treturn false\n\t}\n\n\tif len(fallthroughBranch.vs.View()) != 0 || len(condBranch.vs.View()) != 0 {\n\t\t// If either one of them has arguments, we don't invert the branches.\n\t\treturn false\n\t}\n\n\t// So this block has two branches (a conditional branch followed by an unconditional branch) at the end.\n\t// We can invert the condition of the branch if it makes the fallthrough more likely.\n\n\tfallthroughTarget := b.basicBlock(BasicBlockID(fallthroughBranch.rValue))\n\tcondTarget := b.basicBlock(BasicBlockID(condBranch.rValue))\n\n\tif fallthroughTarget.loopHeader {\n\t\t// First, if the tail's target is loopHeader, we don't need to do anything here,\n\t\t// because the edge is likely to be critical edge for complex loops (e.g. loop with branches inside it).\n\t\t// That means, we will split the edge in the end of LayoutBlocks function, and insert the trampoline block\n\t\t// right after this block, which will be fallthrough in any way.\n\t\treturn false\n\t} else if condTarget.loopHeader {\n\t\t// On the other hand, if the condBranch's target is loopHeader, we invert the condition of the branch\n\t\t// so that we could get the fallthrough to the trampoline block.\n\t\tgoto invert\n\t}\n\n\tif fallthroughTarget == nextInRPO {\n\t\t// Also, if the tail's target is the next block in the reverse post-order, we don't need to do anything here,\n\t\t// because if this is not critical edge, we would end up placing these two blocks adjacent to each other.\n\t\t// Even if it is the critical edge, we place the trampoline block right after this block, which will be fallthrough in any way.\n\t\treturn false\n\t} else if condTarget == nextInRPO {\n\t\t// If the condBranch's target is the next block in the reverse post-order, we invert the condition of the branch\n\t\t// so that we could get the fallthrough to the block.\n\t\tgoto invert\n\t} else {\n\t\treturn false\n\t}\n\ninvert:\n\tfor i := range fallthroughTarget.preds {\n\t\tpred := &fallthroughTarget.preds[i]\n\t\tif pred.branch == fallthroughBranch {\n\t\t\tpred.branch = condBranch\n\t\t\tbreak\n\t\t}\n\t}\n\tfor i := range condTarget.preds {\n\t\tpred := &condTarget.preds[i]\n\t\tif pred.branch == condBranch {\n\t\t\tpred.branch = fallthroughBranch\n\t\t\tbreak\n\t\t}\n\t}\n\n\tcondBranch.InvertBrx()\n\tcondBranch.rValue = Value(fallthroughTarget.ID())\n\tfallthroughBranch.rValue = Value(condTarget.ID())\n\tif wazevoapi.SSALoggingEnabled {\n\t\tfmt.Printf(\"inverting branches at %d->%d and %d->%d\\n\",\n\t\t\tnow.ID(), fallthroughTarget.ID(), now.ID(), condTarget.ID())\n\t}\n\n\treturn true\n}\n\n// splitCriticalEdge splits the critical edge between the given predecessor (`pred`) and successor (owning `predInfo`).\n//\n// - `pred` is the source of the critical edge,\n// - `succ` is the destination of the critical edge,\n// - `predInfo` is the predecessor info in the succ.preds slice which represents the critical edge.\n//\n// Why splitting critical edges is important? See following links:\n//\n//   - https://en.wikipedia.org/wiki/Control-flow_graph\n//   - https://nickdesaulniers.github.io/blog/2023/01/27/critical-edge-splitting/\n//\n// The returned basic block is the trampoline block which is inserted to split the critical edge.\nfunc (b *builder) splitCriticalEdge(pred, succ *basicBlock, predInfo *basicBlockPredecessorInfo) *basicBlock {\n\t// In the following, we convert the following CFG:\n\t//\n\t//     pred --(originalBranch)--> succ\n\t//\n\t// to the following CFG:\n\t//\n\t//     pred --(newBranch)--> trampoline --(originalBranch)-> succ\n\t//\n\t// where trampoline is a new basic block which is created to split the critical edge.\n\n\ttrampoline := b.allocateBasicBlock()\n\tif int(trampoline.id) >= len(b.dominators) {\n\t\tb.dominators = append(b.dominators, make([]*basicBlock, trampoline.id+1)...)\n\t}\n\tb.dominators[trampoline.id] = pred\n\n\toriginalBranch := predInfo.branch\n\n\t// Replace originalBranch with the newBranch.\n\tnewBranch := b.AllocateInstruction()\n\tnewBranch.opcode = originalBranch.opcode\n\tnewBranch.rValue = Value(trampoline.ID())\n\tswitch originalBranch.opcode {\n\tcase OpcodeJump:\n\tcase OpcodeBrz, OpcodeBrnz:\n\t\toriginalBranch.opcode = OpcodeJump // Trampoline consists of one unconditional branch.\n\t\tnewBranch.v = originalBranch.v\n\t\toriginalBranch.v = ValueInvalid\n\tdefault:\n\t\tpanic(\"BUG: critical edge shouldn't be originated from br_table\")\n\t}\n\tswapInstruction(pred, originalBranch, newBranch)\n\n\t// Replace the original branch with the new branch.\n\ttrampoline.rootInstr = originalBranch\n\ttrampoline.currentInstr = originalBranch\n\ttrampoline.success = append(trampoline.success, succ) // Do not use []*basicBlock{pred} because we might have already allocated the slice.\n\ttrampoline.preds = append(trampoline.preds,           // same as ^.\n\t\tbasicBlockPredecessorInfo{blk: pred, branch: newBranch})\n\tb.Seal(trampoline)\n\n\t// Update the original branch to point to the trampoline.\n\tpredInfo.blk = trampoline\n\tpredInfo.branch = originalBranch\n\n\tif wazevoapi.SSAValidationEnabled {\n\t\ttrampoline.validate(b)\n\t}\n\n\tif len(trampoline.params.View()) > 0 {\n\t\tpanic(\"trampoline should not have params\")\n\t}\n\n\t// Assign the same order as the original block so that this will be placed before the actual destination.\n\ttrampoline.reversePostOrder = pred.reversePostOrder\n\treturn trampoline\n}\n\n// swapInstruction replaces `old` in the block `blk` with `New`.\nfunc swapInstruction(blk *basicBlock, old, New *Instruction) {\n\tif blk.rootInstr == old {\n\t\tblk.rootInstr = New\n\t\tnext := old.next\n\t\tNew.next = next\n\t\tnext.prev = New\n\t} else {\n\t\tif blk.currentInstr == old {\n\t\t\tblk.currentInstr = New\n\t\t}\n\t\tprev := old.prev\n\t\tprev.next, New.prev = New, prev\n\t\tif next := old.next; next != nil {\n\t\t\tNew.next, next.prev = next, New\n\t\t}\n\t}\n\told.prev, old.next = nil, nil\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/ssa/pass_cfg.go",
    "content": "package ssa\n\nimport (\n\t\"fmt\"\n\t\"math\"\n\t\"strings\"\n\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi\"\n)\n\n// passCalculateImmediateDominators calculates immediate dominators for each basic block.\n// The result is stored in b.dominators. This make it possible for the following passes to\n// use builder.isDominatedBy to check if a block is dominated by another block.\n//\n// At the last of pass, this function also does the loop detection and sets the basicBlock.loop flag.\nfunc passCalculateImmediateDominators(b *builder) {\n\treversePostOrder := b.reversePostOrderedBasicBlocks[:0]\n\n\t// Store the reverse postorder from the entrypoint into reversePostOrder slice.\n\t// This calculation of reverse postorder is not described in the paper,\n\t// so we use heuristic to calculate it so that we could potentially handle arbitrary\n\t// complex CFGs under the assumption that success is sorted in program's natural order.\n\t// That means blk.success[i] always appears before blk.success[i+1] in the source program,\n\t// which is a reasonable assumption as long as SSA Builder is properly used.\n\t//\n\t// First we push blocks in postorder iteratively visit successors of the entry block.\n\tentryBlk := b.entryBlk()\n\texploreStack := append(b.blkStack[:0], entryBlk)\n\t// These flags are used to track the state of the block in the DFS traversal.\n\t// We temporarily use the reversePostOrder field to store the state.\n\tconst visitStateUnseen, visitStateSeen, visitStateDone = 0, 1, 2\n\tentryBlk.visited = visitStateSeen\n\tfor len(exploreStack) > 0 {\n\t\ttail := len(exploreStack) - 1\n\t\tblk := exploreStack[tail]\n\t\texploreStack = exploreStack[:tail]\n\t\tswitch blk.visited {\n\t\tcase visitStateUnseen:\n\t\t\t// This is likely a bug in the frontend.\n\t\t\tpanic(\"BUG: unsupported CFG\")\n\t\tcase visitStateSeen:\n\t\t\t// This is the first time to pop this block, and we have to see the successors first.\n\t\t\t// So push this block again to the stack.\n\t\t\texploreStack = append(exploreStack, blk)\n\t\t\t// And push the successors to the stack if necessary.\n\t\t\tfor _, succ := range blk.success {\n\t\t\t\tif succ.ReturnBlock() || succ.invalid {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif succ.visited == visitStateUnseen {\n\t\t\t\t\tsucc.visited = visitStateSeen\n\t\t\t\t\texploreStack = append(exploreStack, succ)\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Finally, we could pop this block once we pop all of its successors.\n\t\t\tblk.visited = visitStateDone\n\t\tcase visitStateDone:\n\t\t\t// Note: at this point we push blk in postorder despite its name.\n\t\t\treversePostOrder = append(reversePostOrder, blk)\n\t\tdefault:\n\t\t\tpanic(\"BUG\")\n\t\t}\n\t}\n\t// At this point, reversePostOrder has postorder actually, so we reverse it.\n\tfor i := len(reversePostOrder)/2 - 1; i >= 0; i-- {\n\t\tj := len(reversePostOrder) - 1 - i\n\t\treversePostOrder[i], reversePostOrder[j] = reversePostOrder[j], reversePostOrder[i]\n\t}\n\n\tfor i, blk := range reversePostOrder {\n\t\tblk.reversePostOrder = int32(i)\n\t}\n\n\t// Reuse the dominators slice if possible from the previous computation of function.\n\tb.dominators = b.dominators[:cap(b.dominators)]\n\tif len(b.dominators) < b.basicBlocksPool.Allocated() {\n\t\t// Generously reserve space in the slice because the slice will be reused future allocation.\n\t\tb.dominators = append(b.dominators, make([]*basicBlock, b.basicBlocksPool.Allocated())...)\n\t}\n\tcalculateDominators(reversePostOrder, b.dominators)\n\n\t// Reuse the slices for the future use.\n\tb.blkStack = exploreStack\n\n\t// For the following passes.\n\tb.reversePostOrderedBasicBlocks = reversePostOrder\n\n\t// Ready to detect loops!\n\tsubPassLoopDetection(b)\n}\n\n// calculateDominators calculates the immediate dominator of each node in the CFG, and store the result in `doms`.\n// The algorithm is based on the one described in the paper \"A Simple, Fast Dominance Algorithm\"\n// https://www.cs.rice.edu/~keith/EMBED/dom.pdf which is a faster/simple alternative to the well known Lengauer-Tarjan algorithm.\n//\n// The following code almost matches the pseudocode in the paper with one exception (see the code comment below).\n//\n// The result slice `doms` must be pre-allocated with the size larger than the size of dfsBlocks.\nfunc calculateDominators(reversePostOrderedBlks []*basicBlock, doms []*basicBlock) {\n\tentry, reversePostOrderedBlks := reversePostOrderedBlks[0], reversePostOrderedBlks[1: /* skips entry point */]\n\tfor _, blk := range reversePostOrderedBlks {\n\t\tdoms[blk.id] = nil\n\t}\n\tdoms[entry.id] = entry\n\n\tchanged := true\n\tfor changed {\n\t\tchanged = false\n\t\tfor _, blk := range reversePostOrderedBlks {\n\t\t\tvar u *basicBlock\n\t\t\tfor i := range blk.preds {\n\t\t\t\tpred := blk.preds[i].blk\n\t\t\t\t// Skip if this pred is not reachable yet. Note that this is not described in the paper,\n\t\t\t\t// but it is necessary to handle nested loops etc.\n\t\t\t\tif doms[pred.id] == nil {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tif u == nil {\n\t\t\t\t\tu = pred\n\t\t\t\t\tcontinue\n\t\t\t\t} else {\n\t\t\t\t\tu = intersect(doms, u, pred)\n\t\t\t\t}\n\t\t\t}\n\t\t\tif doms[blk.id] != u {\n\t\t\t\tdoms[blk.id] = u\n\t\t\t\tchanged = true\n\t\t\t}\n\t\t}\n\t}\n}\n\n// intersect returns the common dominator of blk1 and blk2.\n//\n// This is the `intersect` function in the paper.\nfunc intersect(doms []*basicBlock, blk1 *basicBlock, blk2 *basicBlock) *basicBlock {\n\tfinger1, finger2 := blk1, blk2\n\tfor finger1 != finger2 {\n\t\t// Move the 'finger1' upwards to its immediate dominator.\n\t\tfor finger1.reversePostOrder > finger2.reversePostOrder {\n\t\t\tfinger1 = doms[finger1.id]\n\t\t}\n\t\t// Move the 'finger2' upwards to its immediate dominator.\n\t\tfor finger2.reversePostOrder > finger1.reversePostOrder {\n\t\t\tfinger2 = doms[finger2.id]\n\t\t}\n\t}\n\treturn finger1\n}\n\n// subPassLoopDetection detects loops in the function using the immediate dominators.\n//\n// This is run at the last of passCalculateImmediateDominators.\nfunc subPassLoopDetection(b *builder) {\n\tfor blk := b.blockIteratorBegin(); blk != nil; blk = b.blockIteratorNext() {\n\t\tfor i := range blk.preds {\n\t\t\tpred := blk.preds[i].blk\n\t\t\tif pred.invalid {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif b.isDominatedBy(pred, blk) {\n\t\t\t\tblk.loopHeader = true\n\t\t\t}\n\t\t}\n\t}\n}\n\n// buildLoopNestingForest builds the loop nesting forest for the function.\n// This must be called after branch splitting since it relies on the CFG.\nfunc passBuildLoopNestingForest(b *builder) {\n\tent := b.entryBlk()\n\tdoms := b.dominators\n\tfor _, blk := range b.reversePostOrderedBasicBlocks {\n\t\tn := doms[blk.id]\n\t\tfor !n.loopHeader && n != ent {\n\t\t\tn = doms[n.id]\n\t\t}\n\n\t\tif n == ent && blk.loopHeader {\n\t\t\tb.loopNestingForestRoots = append(b.loopNestingForestRoots, blk)\n\t\t} else if n == ent {\n\t\t} else if n.loopHeader {\n\t\t\tn.loopNestingForestChildren = n.loopNestingForestChildren.Append(&b.varLengthBasicBlockPool, blk)\n\t\t}\n\t}\n\n\tif wazevoapi.SSALoggingEnabled {\n\t\tfor _, root := range b.loopNestingForestRoots {\n\t\t\tprintLoopNestingForest(root.(*basicBlock), 0)\n\t\t}\n\t}\n}\n\nfunc printLoopNestingForest(root *basicBlock, depth int) {\n\tfmt.Println(strings.Repeat(\"\\t\", depth), \"loop nesting forest root:\", root.ID())\n\tfor _, child := range root.loopNestingForestChildren.View() {\n\t\tfmt.Println(strings.Repeat(\"\\t\", depth+1), \"child:\", child.ID())\n\t\tif child.LoopHeader() {\n\t\t\tprintLoopNestingForest(child.(*basicBlock), depth+2)\n\t\t}\n\t}\n}\n\ntype dominatorSparseTree struct {\n\ttime         int32\n\teuler        []*basicBlock\n\tfirst, depth []int32\n\ttable        [][]int32\n}\n\n// passBuildDominatorTree builds the dominator tree for the function, and constructs builder.sparseTree.\nfunc passBuildDominatorTree(b *builder) {\n\t// First we materialize the children of each node in the dominator tree.\n\tidoms := b.dominators\n\tfor _, blk := range b.reversePostOrderedBasicBlocks {\n\t\tparent := idoms[blk.id]\n\t\tif parent == nil {\n\t\t\tpanic(\"BUG\")\n\t\t} else if parent == blk {\n\t\t\t// This is the entry block.\n\t\t\tcontinue\n\t\t}\n\t\tif prev := parent.child; prev == nil {\n\t\t\tparent.child = blk\n\t\t} else {\n\t\t\tparent.child = blk\n\t\t\tblk.sibling = prev\n\t\t}\n\t}\n\n\t// Reset the state from the previous computation.\n\tn := b.basicBlocksPool.Allocated()\n\tst := &b.sparseTree\n\tst.euler = append(st.euler[:0], make([]*basicBlock, 2*n-1)...)\n\tst.first = append(st.first[:0], make([]int32, n)...)\n\tfor i := range st.first {\n\t\tst.first[i] = -1\n\t}\n\tst.depth = append(st.depth[:0], make([]int32, 2*n-1)...)\n\tst.time = 0\n\n\t// Start building the sparse tree.\n\tst.eulerTour(b.entryBlk(), 0)\n\tst.buildSparseTable()\n}\n\nfunc (dt *dominatorSparseTree) eulerTour(node *basicBlock, height int32) {\n\tif wazevoapi.SSALoggingEnabled {\n\t\tfmt.Println(strings.Repeat(\"\\t\", int(height)), \"euler tour:\", node.ID())\n\t}\n\tdt.euler[dt.time] = node\n\tdt.depth[dt.time] = height\n\tif dt.first[node.id] == -1 {\n\t\tdt.first[node.id] = dt.time\n\t}\n\tdt.time++\n\n\tfor child := node.child; child != nil; child = child.sibling {\n\t\tdt.eulerTour(child, height+1)\n\t\tdt.euler[dt.time] = node // add the current node again after visiting a child\n\t\tdt.depth[dt.time] = height\n\t\tdt.time++\n\t}\n}\n\n// buildSparseTable builds a sparse table for RMQ queries.\nfunc (dt *dominatorSparseTree) buildSparseTable() {\n\tn := len(dt.depth)\n\tk := int(math.Log2(float64(n))) + 1\n\ttable := dt.table\n\n\tif n >= len(table) {\n\t\ttable = append(table, make([][]int32, n-len(table)+1)...)\n\t}\n\tfor i := range table {\n\t\tif len(table[i]) < k {\n\t\t\ttable[i] = append(table[i], make([]int32, k-len(table[i]))...)\n\t\t}\n\t\ttable[i][0] = int32(i)\n\t}\n\n\tfor j := 1; 1<<j <= n; j++ {\n\t\tfor i := 0; i+(1<<j)-1 < n; i++ {\n\t\t\tif dt.depth[table[i][j-1]] < dt.depth[table[i+(1<<(j-1))][j-1]] {\n\t\t\t\ttable[i][j] = table[i][j-1]\n\t\t\t} else {\n\t\t\t\ttable[i][j] = table[i+(1<<(j-1))][j-1]\n\t\t\t}\n\t\t}\n\t}\n\tdt.table = table\n}\n\n// rmq performs a range minimum query on the sparse table.\nfunc (dt *dominatorSparseTree) rmq(l, r int32) int32 {\n\ttable := dt.table\n\tdepth := dt.depth\n\tj := int(math.Log2(float64(r - l + 1)))\n\tif depth[table[l][j]] <= depth[table[r-(1<<j)+1][j]] {\n\t\treturn table[l][j]\n\t}\n\treturn table[r-(1<<j)+1][j]\n}\n\n// findLCA finds the LCA using the Euler tour and RMQ.\nfunc (dt *dominatorSparseTree) findLCA(u, v BasicBlockID) *basicBlock {\n\tfirst := dt.first\n\tif first[u] > first[v] {\n\t\tu, v = v, u\n\t}\n\treturn dt.euler[dt.rmq(first[u], first[v])]\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/ssa/signature.go",
    "content": "package ssa\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n)\n\n// Signature is a function prototype.\ntype Signature struct {\n\t// ID is a unique identifier for this signature used to lookup.\n\tID SignatureID\n\t// Params and Results are the types of the parameters and results of the function.\n\tParams, Results []Type\n\n\t// used is true if this is used by the currently-compiled function.\n\t// Debugging only.\n\tused bool\n}\n\n// String implements fmt.Stringer.\nfunc (s *Signature) String() string {\n\tstr := strings.Builder{}\n\tstr.WriteString(s.ID.String())\n\tstr.WriteString(\": \")\n\tif len(s.Params) > 0 {\n\t\tfor _, typ := range s.Params {\n\t\t\tstr.WriteString(typ.String())\n\t\t}\n\t} else {\n\t\tstr.WriteByte('v')\n\t}\n\tstr.WriteByte('_')\n\tif len(s.Results) > 0 {\n\t\tfor _, typ := range s.Results {\n\t\t\tstr.WriteString(typ.String())\n\t\t}\n\t} else {\n\t\tstr.WriteByte('v')\n\t}\n\treturn str.String()\n}\n\n// SignatureID is an unique identifier used to lookup.\ntype SignatureID int\n\n// String implements fmt.Stringer.\nfunc (s SignatureID) String() string {\n\treturn fmt.Sprintf(\"sig%d\", s)\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/ssa/ssa.go",
    "content": "// Package ssa is used to construct SSA function. By nature this is free of Wasm specific thing\n// and ISA.\n//\n// We use the \"block argument\" variant of SSA: https://en.wikipedia.org/wiki/Static_single-assignment_form#Block_arguments\n// which is equivalent to the traditional PHI function based one, but more convenient during optimizations.\n// However, in this package's source code comment, we might use PHI whenever it seems necessary in order to be aligned with\n// existing literatures, e.g. SSA level optimization algorithms are often described using PHI nodes.\n//\n// The rationale doc for the choice of \"block argument\" by MLIR of LLVM is worth a read:\n// https://mlir.llvm.org/docs/Rationale/Rationale/#block-arguments-vs-phi-nodes\n//\n// The algorithm to resolve variable definitions used here is based on the paper\n// \"Simple and Efficient Construction of Static Single Assignment Form\": https://link.springer.com/content/pdf/10.1007/978-3-642-37051-9_6.pdf.\npackage ssa\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/ssa/type.go",
    "content": "package ssa\n\ntype Type byte\n\nconst (\n\ttypeInvalid Type = iota\n\n\t// TODO: add 8, 16 bit types when it's needed for optimizations.\n\n\t// TypeI32 represents an integer type with 32 bits.\n\tTypeI32\n\n\t// TypeI64 represents an integer type with 64 bits.\n\tTypeI64\n\n\t// TypeF32 represents 32-bit floats in the IEEE 754.\n\tTypeF32\n\n\t// TypeF64 represents 64-bit floats in the IEEE 754.\n\tTypeF64\n\n\t// TypeV128 represents 128-bit SIMD vectors.\n\tTypeV128\n\n\t// -- Do not add new types after this line. ----\n\ttypeEnd\n)\n\n// String implements fmt.Stringer.\nfunc (t Type) String() (ret string) {\n\tswitch t {\n\tcase typeInvalid:\n\t\treturn \"invalid\"\n\tcase TypeI32:\n\t\treturn \"i32\"\n\tcase TypeI64:\n\t\treturn \"i64\"\n\tcase TypeF32:\n\t\treturn \"f32\"\n\tcase TypeF64:\n\t\treturn \"f64\"\n\tcase TypeV128:\n\t\treturn \"v128\"\n\tdefault:\n\t\tpanic(int(t))\n\t}\n}\n\n// IsInt returns true if the type is an integer type.\nfunc (t Type) IsInt() bool {\n\treturn t == TypeI32 || t == TypeI64\n}\n\n// IsFloat returns true if the type is a floating point type.\nfunc (t Type) IsFloat() bool {\n\treturn t == TypeF32 || t == TypeF64\n}\n\n// Bits returns the number of bits required to represent the type.\nfunc (t Type) Bits() byte {\n\tswitch t {\n\tcase TypeI32, TypeF32:\n\t\treturn 32\n\tcase TypeI64, TypeF64:\n\t\treturn 64\n\tcase TypeV128:\n\t\treturn 128\n\tdefault:\n\t\tpanic(int(t))\n\t}\n}\n\n// Size returns the number of bytes required to represent the type.\nfunc (t Type) Size() byte {\n\treturn t.Bits() / 8\n}\n\nfunc (t Type) invalid() bool {\n\treturn t == typeInvalid\n}\n\n// VecLane represents a lane in a SIMD vector.\ntype VecLane byte\n\nconst (\n\tVecLaneInvalid VecLane = 1 + iota\n\tVecLaneI8x16\n\tVecLaneI16x8\n\tVecLaneI32x4\n\tVecLaneI64x2\n\tVecLaneF32x4\n\tVecLaneF64x2\n)\n\n// String implements fmt.Stringer.\nfunc (vl VecLane) String() (ret string) {\n\tswitch vl {\n\tcase VecLaneInvalid:\n\t\treturn \"invalid\"\n\tcase VecLaneI8x16:\n\t\treturn \"i8x16\"\n\tcase VecLaneI16x8:\n\t\treturn \"i16x8\"\n\tcase VecLaneI32x4:\n\t\treturn \"i32x4\"\n\tcase VecLaneI64x2:\n\t\treturn \"i64x2\"\n\tcase VecLaneF32x4:\n\t\treturn \"f32x4\"\n\tcase VecLaneF64x2:\n\t\treturn \"f64x2\"\n\tdefault:\n\t\tpanic(int(vl))\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/ssa/vs.go",
    "content": "package ssa\n\nimport (\n\t\"fmt\"\n\t\"math\"\n\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi\"\n)\n\n// Variable is a unique identifier for a source program's variable and will correspond to\n// multiple ssa Value(s).\n//\n// For example, `Local 1` is a Variable in WebAssembly, and Value(s) will be created for it\n// whenever it executes `local.set 1`.\n//\n// Variable is useful to track the SSA Values of a variable in the source program, and\n// can be used to find the corresponding latest SSA Value via Builder.FindValue.\n//\n// Higher 4-bit is used to store Type for this variable.\ntype Variable uint32\n\n// String implements fmt.Stringer.\nfunc (v Variable) String() string {\n\treturn fmt.Sprintf(\"var%d\", v&0x0fffffff)\n}\n\nfunc (v Variable) setType(typ Type) Variable {\n\tif v >= 1<<28 {\n\t\tpanic(fmt.Sprintf(\"Too large variable: %d\", v))\n\t}\n\treturn Variable(typ)<<28 | v\n}\n\nfunc (v Variable) getType() Type {\n\treturn Type(v >> 28)\n}\n\n// Value represents an SSA value with a type information. The relationship with Variable is 1: N (including 0),\n// that means there might be multiple Variable(s) for a Value.\n//\n// 32 to 59-bit is used to store the unique identifier of the Instruction that generates this value if any.\n// 60 to 63-bit is used to store Type for this value.\ntype Value uint64\n\n// ValueID is the lower 32bit of Value, which is the pure identifier of Value without type info.\ntype ValueID uint32\n\nconst (\n\tvalueIDInvalid ValueID = math.MaxUint32\n\tValueInvalid           = Value(valueIDInvalid)\n)\n\n// Format creates a debug string for this Value using the data stored in Builder.\nfunc (v Value) Format(b Builder) string {\n\tif annotation, ok := b.(*builder).valueAnnotations[v.ID()]; ok {\n\t\treturn annotation\n\t}\n\treturn fmt.Sprintf(\"v%d\", v.ID())\n}\n\nfunc (v Value) formatWithType(b Builder) (ret string) {\n\tif annotation, ok := b.(*builder).valueAnnotations[v.ID()]; ok {\n\t\tret = annotation + \":\" + v.Type().String()\n\t} else {\n\t\tret = fmt.Sprintf(\"v%d:%s\", v.ID(), v.Type())\n\t}\n\n\tif wazevoapi.SSALoggingEnabled { // This is useful to check live value analysis bugs.\n\t\tif bd := b.(*builder); bd.donePostBlockLayoutPasses {\n\t\t\tid := v.ID()\n\t\t\tret += fmt.Sprintf(\"(ref=%d)\", bd.valuesInfo[id].RefCount)\n\t\t}\n\t}\n\treturn ret\n}\n\n// Valid returns true if this value is valid.\nfunc (v Value) Valid() bool {\n\treturn v.ID() != valueIDInvalid\n}\n\n// Type returns the Type of this value.\nfunc (v Value) Type() Type {\n\treturn Type(v >> 60)\n}\n\n// ID returns the valueID of this value.\nfunc (v Value) ID() ValueID {\n\treturn ValueID(v)\n}\n\n// setType sets a type to this Value and returns the updated Value.\nfunc (v Value) setType(typ Type) Value {\n\treturn v | Value(typ)<<60\n}\n\n// setInstructionID sets an Instruction.id to this Value and returns the updated Value.\nfunc (v Value) setInstructionID(id int) Value {\n\tif id < 0 || uint(id) >= 1<<28 {\n\t\tpanic(fmt.Sprintf(\"Too large instruction ID: %d\", id))\n\t}\n\treturn v | Value(id)<<32\n}\n\n// instructionID() returns the Instruction.id of this Value.\nfunc (v Value) instructionID() int {\n\treturn int(v>>32) & 0x0fffffff\n}\n\n// Values is a slice of Value. Use this instead of []Value to reuse the underlying memory.\ntype Values = wazevoapi.VarLength[Value]\n\n// ValuesNil is a nil Values.\nvar ValuesNil = wazevoapi.NewNilVarLength[Value]()\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/debug_options.go",
    "content": "package wazevoapi\n\nimport (\n\t\"context\"\n\t\"encoding/hex\"\n\t\"fmt\"\n\t\"math/rand\"\n\t\"os\"\n\t\"sync\"\n\t\"time\"\n)\n\n// These consts are used various places in the wazevo implementations.\n// Instead of defining them in each file, we define them here so that we can quickly iterate on\n// debugging without spending \"where do we have debug logging?\" time.\n\n// ----- Debug logging -----\n// These consts must be disabled by default. Enable them only when debugging.\n\nconst (\n\tFrontEndLoggingEnabled = false\n\tSSALoggingEnabled      = false\n\tRegAllocLoggingEnabled = false\n)\n\n// ----- Output prints -----\n// These consts must be disabled by default. Enable them only when debugging.\n\nconst (\n\tPrintSSA                                 = false\n\tPrintOptimizedSSA                        = false\n\tPrintSSAToBackendIRLowering              = false\n\tPrintRegisterAllocated                   = false\n\tPrintFinalizedMachineCode                = false\n\tPrintMachineCodeHexPerFunction           = printMachineCodeHexPerFunctionUnmodified || PrintMachineCodeHexPerFunctionDisassemblable //nolint\n\tprintMachineCodeHexPerFunctionUnmodified = false\n\t// PrintMachineCodeHexPerFunctionDisassemblable prints the machine code while modifying the actual result\n\t// to make it disassemblable. This is useful when debugging the final machine code. See the places where this is used for detail.\n\t// When this is enabled, functions must not be called.\n\tPrintMachineCodeHexPerFunctionDisassemblable = false\n)\n\n// printTarget is the function index to print the machine code. This is used for debugging to print the machine code\n// of a specific function.\nconst printTarget = -1\n\n// PrintEnabledIndex returns true if the current function index is the print target.\nfunc PrintEnabledIndex(ctx context.Context) bool {\n\tif printTarget == -1 {\n\t\treturn true\n\t}\n\treturn GetCurrentFunctionIndex(ctx) == printTarget\n}\n\n// ----- Validations -----\nconst (\n\t// SSAValidationEnabled enables the SSA validation. This is disabled by default since the operation is expensive.\n\tSSAValidationEnabled = false\n)\n\n// ----- Stack Guard Check -----\nconst (\n\t// StackGuardCheckEnabled enables the stack guard check to ensure that our stack bounds check works correctly.\n\tStackGuardCheckEnabled       = false\n\tStackGuardCheckGuardPageSize = 8096\n)\n\n// CheckStackGuardPage checks the given stack guard page is not corrupted.\nfunc CheckStackGuardPage(s []byte) {\n\tfor i := 0; i < StackGuardCheckGuardPageSize; i++ {\n\t\tif s[i] != 0 {\n\t\t\tpanic(\n\t\t\t\tfmt.Sprintf(\"BUG: stack guard page is corrupted:\\n\\tguard_page=%s\\n\\tstack=%s\",\n\t\t\t\t\thex.EncodeToString(s[:StackGuardCheckGuardPageSize]),\n\t\t\t\t\thex.EncodeToString(s[StackGuardCheckGuardPageSize:]),\n\t\t\t\t))\n\t\t}\n\t}\n}\n\n// ----- Deterministic compilation verifier -----\n\nconst (\n\t// DeterministicCompilationVerifierEnabled enables the deterministic compilation verifier. This is disabled by default\n\t// since the operation is expensive. But when in doubt, enable this to make sure the compilation is deterministic.\n\tDeterministicCompilationVerifierEnabled = false\n\tDeterministicCompilationVerifyingIter   = 5\n)\n\ntype (\n\tverifierState struct {\n\t\tinitialCompilationDone bool\n\t\tmaybeRandomizedIndexes []int\n\t\tr                      *rand.Rand\n\t\tvalues                 sync.Map\n\t}\n\tverifierStateContextKey struct{}\n\tcurrentFunctionNameKey  struct{}\n\tcurrentFunctionIndexKey struct{}\n)\n\n// NewDeterministicCompilationVerifierContext creates a new context with the deterministic compilation verifier used per wasm.Module.\nfunc NewDeterministicCompilationVerifierContext(ctx context.Context, localFunctions int) context.Context {\n\tmaybeRandomizedIndexes := make([]int, localFunctions)\n\tfor i := range maybeRandomizedIndexes {\n\t\tmaybeRandomizedIndexes[i] = i\n\t}\n\tr := rand.New(rand.NewSource(time.Now().UnixNano()))\n\treturn context.WithValue(ctx, verifierStateContextKey{}, &verifierState{\n\t\tr: r, maybeRandomizedIndexes: maybeRandomizedIndexes, values: sync.Map{},\n\t})\n}\n\n// DeterministicCompilationVerifierRandomizeIndexes randomizes the indexes for the deterministic compilation verifier.\n// Returns a slice that maps an index to the randomized index.\nfunc DeterministicCompilationVerifierRandomizeIndexes(ctx context.Context) []int {\n\tstate := ctx.Value(verifierStateContextKey{}).(*verifierState)\n\tif !state.initialCompilationDone {\n\t\t// If this is the first attempt, we use the index as-is order.\n\t\tstate.initialCompilationDone = true\n\t\treturn state.maybeRandomizedIndexes\n\t}\n\tr := state.r\n\tr.Shuffle(len(state.maybeRandomizedIndexes), func(i, j int) {\n\t\tstate.maybeRandomizedIndexes[i], state.maybeRandomizedIndexes[j] = state.maybeRandomizedIndexes[j], state.maybeRandomizedIndexes[i]\n\t})\n\treturn state.maybeRandomizedIndexes\n}\n\n// VerifyOrSetDeterministicCompilationContextValue verifies that the `newValue` is the same as the previous value for the given `scope`\n// and the current function name. If the previous value doesn't exist, it sets the value to the given `newValue`.\n//\n// If the verification fails, this prints the diff and exits the process.\nfunc VerifyOrSetDeterministicCompilationContextValue(ctx context.Context, scope string, newValue string) {\n\tfn := ctx.Value(currentFunctionNameKey{}).(string)\n\tkey := fn + \": \" + scope\n\tverifierCtx := ctx.Value(verifierStateContextKey{}).(*verifierState)\n\toldValue, loaded := verifierCtx.values.LoadOrStore(key, newValue)\n\tif !loaded {\n\t\treturn\n\t}\n\tif oldValue != newValue {\n\t\tfmt.Printf(\n\t\t\t`BUG: Deterministic compilation failed for function%s at scope=\"%s\".\n\nThis is mostly due to (but might not be limited to):\n\t* Resetting ssa.Builder, backend.Compiler or frontend.Compiler, etc doens't work as expected, and the compilation has been affected by the previous iterations.\n\t* Using a map with non-deterministic iteration order.\n\n---------- [old] ----------\n%s\n\n---------- [new] ----------\n%s\n`,\n\t\t\tfn, scope, oldValue, newValue,\n\t\t)\n\t\tos.Exit(1)\n\t}\n}\n\n// nolint\nconst NeedFunctionNameInContext = PrintSSA ||\n\tPrintOptimizedSSA ||\n\tPrintSSAToBackendIRLowering ||\n\tPrintRegisterAllocated ||\n\tPrintFinalizedMachineCode ||\n\tPrintMachineCodeHexPerFunction ||\n\tDeterministicCompilationVerifierEnabled ||\n\tPerfMapEnabled\n\n// SetCurrentFunctionName sets the current function name to the given `functionName`.\nfunc SetCurrentFunctionName(ctx context.Context, index int, functionName string) context.Context {\n\tctx = context.WithValue(ctx, currentFunctionNameKey{}, functionName)\n\tctx = context.WithValue(ctx, currentFunctionIndexKey{}, index)\n\treturn ctx\n}\n\n// GetCurrentFunctionName returns the current function name.\nfunc GetCurrentFunctionName(ctx context.Context) string {\n\tret, _ := ctx.Value(currentFunctionNameKey{}).(string)\n\treturn ret\n}\n\n// GetCurrentFunctionIndex returns the current function index.\nfunc GetCurrentFunctionIndex(ctx context.Context) int {\n\tret, _ := ctx.Value(currentFunctionIndexKey{}).(int)\n\treturn ret\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/exitcode.go",
    "content": "package wazevoapi\n\n// ExitCode is an exit code of an execution of a function.\ntype ExitCode uint32\n\nconst (\n\tExitCodeOK ExitCode = iota\n\tExitCodeGrowStack\n\tExitCodeGrowMemory\n\tExitCodeUnreachable\n\tExitCodeMemoryOutOfBounds\n\t// ExitCodeCallGoModuleFunction is an exit code for a call to an api.GoModuleFunction.\n\tExitCodeCallGoModuleFunction\n\t// ExitCodeCallGoFunction is an exit code for a call to an api.GoFunction.\n\tExitCodeCallGoFunction\n\tExitCodeTableOutOfBounds\n\tExitCodeIndirectCallNullPointer\n\tExitCodeIndirectCallTypeMismatch\n\tExitCodeIntegerDivisionByZero\n\tExitCodeIntegerOverflow\n\tExitCodeInvalidConversionToInteger\n\tExitCodeCheckModuleExitCode\n\tExitCodeCallListenerBefore\n\tExitCodeCallListenerAfter\n\tExitCodeCallGoModuleFunctionWithListener\n\tExitCodeCallGoFunctionWithListener\n\tExitCodeTableGrow\n\tExitCodeRefFunc\n\tExitCodeMemoryWait32\n\tExitCodeMemoryWait64\n\tExitCodeMemoryNotify\n\tExitCodeUnalignedAtomic\n\texitCodeMax\n)\n\nconst ExitCodeMask = 0xff\n\n// String implements fmt.Stringer.\nfunc (e ExitCode) String() string {\n\tswitch e {\n\tcase ExitCodeOK:\n\t\treturn \"ok\"\n\tcase ExitCodeGrowStack:\n\t\treturn \"grow_stack\"\n\tcase ExitCodeCallGoModuleFunction:\n\t\treturn \"call_go_module_function\"\n\tcase ExitCodeCallGoFunction:\n\t\treturn \"call_go_function\"\n\tcase ExitCodeUnreachable:\n\t\treturn \"unreachable\"\n\tcase ExitCodeMemoryOutOfBounds:\n\t\treturn \"memory_out_of_bounds\"\n\tcase ExitCodeUnalignedAtomic:\n\t\treturn \"unaligned_atomic\"\n\tcase ExitCodeTableOutOfBounds:\n\t\treturn \"table_out_of_bounds\"\n\tcase ExitCodeIndirectCallNullPointer:\n\t\treturn \"indirect_call_null_pointer\"\n\tcase ExitCodeIndirectCallTypeMismatch:\n\t\treturn \"indirect_call_type_mismatch\"\n\tcase ExitCodeIntegerDivisionByZero:\n\t\treturn \"integer_division_by_zero\"\n\tcase ExitCodeIntegerOverflow:\n\t\treturn \"integer_overflow\"\n\tcase ExitCodeInvalidConversionToInteger:\n\t\treturn \"invalid_conversion_to_integer\"\n\tcase ExitCodeCheckModuleExitCode:\n\t\treturn \"check_module_exit_code\"\n\tcase ExitCodeCallListenerBefore:\n\t\treturn \"call_listener_before\"\n\tcase ExitCodeCallListenerAfter:\n\t\treturn \"call_listener_after\"\n\tcase ExitCodeCallGoModuleFunctionWithListener:\n\t\treturn \"call_go_module_function_with_listener\"\n\tcase ExitCodeCallGoFunctionWithListener:\n\t\treturn \"call_go_function_with_listener\"\n\tcase ExitCodeGrowMemory:\n\t\treturn \"grow_memory\"\n\tcase ExitCodeTableGrow:\n\t\treturn \"table_grow\"\n\tcase ExitCodeRefFunc:\n\t\treturn \"ref_func\"\n\tcase ExitCodeMemoryWait32:\n\t\treturn \"memory_wait32\"\n\tcase ExitCodeMemoryWait64:\n\t\treturn \"memory_wait64\"\n\tcase ExitCodeMemoryNotify:\n\t\treturn \"memory_notify\"\n\t}\n\tpanic(\"TODO\")\n}\n\nfunc ExitCodeCallGoModuleFunctionWithIndex(index int, withListener bool) ExitCode {\n\tif withListener {\n\t\treturn ExitCodeCallGoModuleFunctionWithListener | ExitCode(index<<8)\n\t}\n\treturn ExitCodeCallGoModuleFunction | ExitCode(index<<8)\n}\n\nfunc ExitCodeCallGoFunctionWithIndex(index int, withListener bool) ExitCode {\n\tif withListener {\n\t\treturn ExitCodeCallGoFunctionWithListener | ExitCode(index<<8)\n\t}\n\treturn ExitCodeCallGoFunction | ExitCode(index<<8)\n}\n\nfunc GoFunctionIndexFromExitCode(exitCode ExitCode) int {\n\treturn int(exitCode >> 8)\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/offsetdata.go",
    "content": "package wazevoapi\n\nimport (\n\t\"github.com/tetratelabs/wazero/internal/wasm\"\n)\n\nconst (\n\t// FunctionInstanceSize is the size of wazevo.functionInstance.\n\tFunctionInstanceSize = 24\n\t// FunctionInstanceExecutableOffset is an offset of `executable` field in wazevo.functionInstance\n\tFunctionInstanceExecutableOffset = 0\n\t// FunctionInstanceModuleContextOpaquePtrOffset is an offset of `moduleContextOpaquePtr` field in wazevo.functionInstance\n\tFunctionInstanceModuleContextOpaquePtrOffset = 8\n\t// FunctionInstanceTypeIDOffset is an offset of `typeID` field in wazevo.functionInstance\n\tFunctionInstanceTypeIDOffset = 16\n)\n\nconst (\n\t// ExecutionContextOffsetExitCodeOffset is an offset of `exitCode` field in wazevo.executionContext\n\tExecutionContextOffsetExitCodeOffset Offset = 0\n\t// ExecutionContextOffsetCallerModuleContextPtr is an offset of `callerModuleContextPtr` field in wazevo.executionContext\n\tExecutionContextOffsetCallerModuleContextPtr Offset = 8\n\t// ExecutionContextOffsetOriginalFramePointer is an offset of `originalFramePointer` field in wazevo.executionContext\n\tExecutionContextOffsetOriginalFramePointer Offset = 16\n\t// ExecutionContextOffsetOriginalStackPointer is an offset of `originalStackPointer` field in wazevo.executionContext\n\tExecutionContextOffsetOriginalStackPointer Offset = 24\n\t// ExecutionContextOffsetGoReturnAddress is an offset of `goReturnAddress` field in wazevo.executionContext\n\tExecutionContextOffsetGoReturnAddress Offset = 32\n\t// ExecutionContextOffsetStackBottomPtr is an offset of `stackBottomPtr` field in wazevo.executionContext\n\tExecutionContextOffsetStackBottomPtr Offset = 40\n\t// ExecutionContextOffsetGoCallReturnAddress is an offset of `goCallReturnAddress` field in wazevo.executionContext\n\tExecutionContextOffsetGoCallReturnAddress Offset = 48\n\t// ExecutionContextOffsetStackPointerBeforeGoCall is an offset of `StackPointerBeforeGoCall` field in wazevo.executionContext\n\tExecutionContextOffsetStackPointerBeforeGoCall Offset = 56\n\t// ExecutionContextOffsetStackGrowRequiredSize is an offset of `stackGrowRequiredSize` field in wazevo.executionContext\n\tExecutionContextOffsetStackGrowRequiredSize Offset = 64\n\t// ExecutionContextOffsetMemoryGrowTrampolineAddress is an offset of `memoryGrowTrampolineAddress` field in wazevo.executionContext\n\tExecutionContextOffsetMemoryGrowTrampolineAddress Offset = 72\n\t// ExecutionContextOffsetStackGrowCallTrampolineAddress is an offset of `stackGrowCallTrampolineAddress` field in wazevo.executionContext.\n\tExecutionContextOffsetStackGrowCallTrampolineAddress Offset = 80\n\t// ExecutionContextOffsetCheckModuleExitCodeTrampolineAddress is an offset of `checkModuleExitCodeTrampolineAddress` field in wazevo.executionContext.\n\tExecutionContextOffsetCheckModuleExitCodeTrampolineAddress Offset = 88\n\t// ExecutionContextOffsetSavedRegistersBegin is an offset of the first element of `savedRegisters` field in wazevo.executionContext\n\tExecutionContextOffsetSavedRegistersBegin Offset = 96\n\t// ExecutionContextOffsetGoFunctionCallCalleeModuleContextOpaque is an offset of `goFunctionCallCalleeModuleContextOpaque` field in wazevo.executionContext\n\tExecutionContextOffsetGoFunctionCallCalleeModuleContextOpaque Offset = 1120\n\t// ExecutionContextOffsetTableGrowTrampolineAddress is an offset of `tableGrowTrampolineAddress` field in wazevo.executionContext\n\tExecutionContextOffsetTableGrowTrampolineAddress Offset = 1128\n\t// ExecutionContextOffsetRefFuncTrampolineAddress is an offset of `refFuncTrampolineAddress` field in wazevo.executionContext\n\tExecutionContextOffsetRefFuncTrampolineAddress      Offset = 1136\n\tExecutionContextOffsetMemmoveAddress                Offset = 1144\n\tExecutionContextOffsetFramePointerBeforeGoCall      Offset = 1152\n\tExecutionContextOffsetMemoryWait32TrampolineAddress Offset = 1160\n\tExecutionContextOffsetMemoryWait64TrampolineAddress Offset = 1168\n\tExecutionContextOffsetMemoryNotifyTrampolineAddress Offset = 1176\n)\n\n// ModuleContextOffsetData allows the compilers to get the information about offsets to the fields of wazevo.moduleContextOpaque,\n// This is unique per module.\ntype ModuleContextOffsetData struct {\n\tTotalSize int\n\tModuleInstanceOffset,\n\tLocalMemoryBegin,\n\tImportedMemoryBegin,\n\tImportedFunctionsBegin,\n\tGlobalsBegin,\n\tTypeIDs1stElement,\n\tTablesBegin,\n\tBeforeListenerTrampolines1stElement,\n\tAfterListenerTrampolines1stElement,\n\tDataInstances1stElement,\n\tElementInstances1stElement Offset\n}\n\n// ImportedFunctionOffset returns an offset of the i-th imported function.\n// Each item is stored as wazevo.functionInstance whose size matches FunctionInstanceSize.\nfunc (m *ModuleContextOffsetData) ImportedFunctionOffset(i wasm.Index) (\n\texecutableOffset, moduleCtxOffset, typeIDOffset Offset,\n) {\n\tbase := m.ImportedFunctionsBegin + Offset(i)*FunctionInstanceSize\n\treturn base, base + 8, base + 16\n}\n\n// GlobalInstanceOffset returns an offset of the i-th global instance.\nfunc (m *ModuleContextOffsetData) GlobalInstanceOffset(i wasm.Index) Offset {\n\treturn m.GlobalsBegin + Offset(i)*16\n}\n\n// Offset represents an offset of a field of a struct.\ntype Offset int32\n\n// U32 encodes an Offset as uint32 for convenience.\nfunc (o Offset) U32() uint32 {\n\treturn uint32(o)\n}\n\n// I64 encodes an Offset as int64 for convenience.\nfunc (o Offset) I64() int64 {\n\treturn int64(o)\n}\n\n// U64 encodes an Offset as int64 for convenience.\nfunc (o Offset) U64() uint64 {\n\treturn uint64(o)\n}\n\n// LocalMemoryBase returns an offset of the first byte of the local memory.\nfunc (m *ModuleContextOffsetData) LocalMemoryBase() Offset {\n\treturn m.LocalMemoryBegin\n}\n\n// LocalMemoryLen returns an offset of the length of the local memory buffer.\nfunc (m *ModuleContextOffsetData) LocalMemoryLen() Offset {\n\tif l := m.LocalMemoryBegin; l >= 0 {\n\t\treturn l + 8\n\t}\n\treturn -1\n}\n\n// TableOffset returns an offset of the i-th table instance.\nfunc (m *ModuleContextOffsetData) TableOffset(tableIndex int) Offset {\n\treturn m.TablesBegin + Offset(tableIndex)*8\n}\n\n// NewModuleContextOffsetData creates a ModuleContextOffsetData determining the structure of moduleContextOpaque for the given Module.\n// The structure is described in the comment of wazevo.moduleContextOpaque.\nfunc NewModuleContextOffsetData(m *wasm.Module, withListener bool) ModuleContextOffsetData {\n\tret := ModuleContextOffsetData{}\n\tvar offset Offset\n\n\tret.ModuleInstanceOffset = 0\n\toffset += 8\n\n\tif m.MemorySection != nil {\n\t\tret.LocalMemoryBegin = offset\n\t\t// buffer base + memory size.\n\t\tconst localMemorySizeInOpaqueModuleContext = 16\n\t\toffset += localMemorySizeInOpaqueModuleContext\n\t} else {\n\t\t// Indicates that there's no local memory\n\t\tret.LocalMemoryBegin = -1\n\t}\n\n\tif m.ImportMemoryCount > 0 {\n\t\toffset = align8(offset)\n\t\t// *wasm.MemoryInstance + imported memory's owner (moduleContextOpaque)\n\t\tconst importedMemorySizeInOpaqueModuleContext = 16\n\t\tret.ImportedMemoryBegin = offset\n\t\toffset += importedMemorySizeInOpaqueModuleContext\n\t} else {\n\t\t// Indicates that there's no imported memory\n\t\tret.ImportedMemoryBegin = -1\n\t}\n\n\tif m.ImportFunctionCount > 0 {\n\t\toffset = align8(offset)\n\t\tret.ImportedFunctionsBegin = offset\n\t\t// Each function is stored wazevo.functionInstance.\n\t\tsize := int(m.ImportFunctionCount) * FunctionInstanceSize\n\t\toffset += Offset(size)\n\t} else {\n\t\tret.ImportedFunctionsBegin = -1\n\t}\n\n\tif globals := int(m.ImportGlobalCount) + len(m.GlobalSection); globals > 0 {\n\t\t// Align to 16 bytes for globals, as f32/f64/v128 might be loaded via SIMD instructions.\n\t\toffset = align16(offset)\n\t\tret.GlobalsBegin = offset\n\t\t// Pointers to *wasm.GlobalInstance.\n\t\toffset += Offset(globals) * 16\n\t} else {\n\t\tret.GlobalsBegin = -1\n\t}\n\n\tif tables := len(m.TableSection) + int(m.ImportTableCount); tables > 0 {\n\t\toffset = align8(offset)\n\t\tret.TypeIDs1stElement = offset\n\t\toffset += 8 // First element of TypeIDs.\n\n\t\tret.TablesBegin = offset\n\t\t// Pointers to *wasm.TableInstance.\n\t\toffset += Offset(tables) * 8\n\t} else {\n\t\tret.TypeIDs1stElement = -1\n\t\tret.TablesBegin = -1\n\t}\n\n\tif withListener {\n\t\toffset = align8(offset)\n\t\tret.BeforeListenerTrampolines1stElement = offset\n\t\toffset += 8 // First element of BeforeListenerTrampolines.\n\n\t\tret.AfterListenerTrampolines1stElement = offset\n\t\toffset += 8 // First element of AfterListenerTrampolines.\n\t} else {\n\t\tret.BeforeListenerTrampolines1stElement = -1\n\t\tret.AfterListenerTrampolines1stElement = -1\n\t}\n\n\tret.DataInstances1stElement = offset\n\toffset += 8 // First element of DataInstances.\n\n\tret.ElementInstances1stElement = offset\n\toffset += 8 // First element of ElementInstances.\n\n\tret.TotalSize = int(align16(offset))\n\treturn ret\n}\n\nfunc align16(o Offset) Offset {\n\treturn (o + 15) &^ 15\n}\n\nfunc align8(o Offset) Offset {\n\treturn (o + 7) &^ 7\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/perfmap.go",
    "content": "package wazevoapi\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"strconv\"\n\t\"sync\"\n)\n\nvar PerfMap *Perfmap\n\nfunc init() {\n\tif PerfMapEnabled {\n\t\tpid := os.Getpid()\n\t\tfilename := \"/tmp/perf-\" + strconv.Itoa(pid) + \".map\"\n\n\t\tfh, err := os.OpenFile(filename, os.O_APPEND|os.O_RDWR|os.O_CREATE, 0o644)\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\n\t\tPerfMap = &Perfmap{fh: fh}\n\t}\n}\n\n// Perfmap holds perfmap entries to be flushed into a perfmap file.\ntype Perfmap struct {\n\tentries []entry\n\tmux     sync.Mutex\n\tfh      *os.File\n}\n\ntype entry struct {\n\tindex  int\n\toffset int64\n\tsize   uint64\n\tname   string\n}\n\nfunc (f *Perfmap) Lock() {\n\tf.mux.Lock()\n}\n\nfunc (f *Perfmap) Unlock() {\n\tf.mux.Unlock()\n}\n\n// AddModuleEntry adds a perfmap entry into the perfmap file.\n// index is the index of the function in the module, offset is the offset of the function in the module,\n// size is the size of the function, and name is the name of the function.\n//\n// Note that the entries are not flushed into the perfmap file until Flush is called,\n// and the entries are module-scoped; Perfmap must be locked until Flush is called.\nfunc (f *Perfmap) AddModuleEntry(index int, offset int64, size uint64, name string) {\n\te := entry{index: index, offset: offset, size: size, name: name}\n\tif f.entries == nil {\n\t\tf.entries = []entry{e}\n\t\treturn\n\t}\n\tf.entries = append(f.entries, e)\n}\n\n// Flush writes the perfmap entries into the perfmap file where the entries are adjusted by the given `addr` and `functionOffsets`.\nfunc (f *Perfmap) Flush(addr uintptr, functionOffsets []int) {\n\tdefer func() {\n\t\t_ = f.fh.Sync()\n\t}()\n\n\tfor _, e := range f.entries {\n\t\tif _, err := f.fh.WriteString(fmt.Sprintf(\"%x %s %s\\n\",\n\t\t\tuintptr(e.offset)+addr+uintptr(functionOffsets[e.index]),\n\t\t\tstrconv.FormatUint(e.size, 16),\n\t\t\te.name,\n\t\t)); err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t}\n\tf.entries = f.entries[:0]\n}\n\n// Clear clears the perfmap entries not yet flushed.\nfunc (f *Perfmap) Clear() {\n\tf.entries = f.entries[:0]\n}\n\n// AddEntry writes a perfmap entry directly into the perfmap file, not using the entries.\nfunc (f *Perfmap) AddEntry(addr uintptr, size uint64, name string) {\n\t_, err := f.fh.WriteString(fmt.Sprintf(\"%x %s %s\\n\",\n\t\taddr,\n\t\tstrconv.FormatUint(size, 16),\n\t\tname,\n\t))\n\tif err != nil {\n\t\tpanic(err)\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/perfmap_disabled.go",
    "content": "//go:build !perfmap\n\npackage wazevoapi\n\nconst PerfMapEnabled = false\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/perfmap_enabled.go",
    "content": "//go:build perfmap\n\npackage wazevoapi\n\nconst PerfMapEnabled = true\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/pool.go",
    "content": "package wazevoapi\n\nconst poolPageSize = 128\n\n// Pool is a pool of T that can be allocated and reset.\n// This is useful to avoid unnecessary allocations.\ntype Pool[T any] struct {\n\tpages            []*[poolPageSize]T\n\tresetFn          func(*T)\n\tallocated, index int\n}\n\n// NewPool returns a new Pool.\n// resetFn is called when a new T is allocated in Pool.Allocate.\nfunc NewPool[T any](resetFn func(*T)) Pool[T] {\n\tvar ret Pool[T]\n\tret.resetFn = resetFn\n\tret.Reset()\n\treturn ret\n}\n\n// Allocated returns the number of allocated T currently in the pool.\nfunc (p *Pool[T]) Allocated() int {\n\treturn p.allocated\n}\n\n// Allocate allocates a new T from the pool.\nfunc (p *Pool[T]) Allocate() *T {\n\tif p.index == poolPageSize {\n\t\tif len(p.pages) == cap(p.pages) {\n\t\t\tp.pages = append(p.pages, new([poolPageSize]T))\n\t\t} else {\n\t\t\ti := len(p.pages)\n\t\t\tp.pages = p.pages[:i+1]\n\t\t\tif p.pages[i] == nil {\n\t\t\t\tp.pages[i] = new([poolPageSize]T)\n\t\t\t}\n\t\t}\n\t\tp.index = 0\n\t}\n\tret := &p.pages[len(p.pages)-1][p.index]\n\tif p.resetFn != nil {\n\t\tp.resetFn(ret)\n\t}\n\tp.index++\n\tp.allocated++\n\treturn ret\n}\n\n// View returns the pointer to i-th item from the pool.\nfunc (p *Pool[T]) View(i int) *T {\n\tpage, index := i/poolPageSize, i%poolPageSize\n\treturn &p.pages[page][index]\n}\n\n// Reset resets the pool.\nfunc (p *Pool[T]) Reset() {\n\tp.pages = p.pages[:0]\n\tp.index = poolPageSize\n\tp.allocated = 0\n}\n\n// IDedPool is a pool of T that can be allocated and reset, with a way to get T by an ID.\ntype IDedPool[T any] struct {\n\tpool             Pool[T]\n\tidToItems        []*T\n\tmaxIDEncountered int\n}\n\n// NewIDedPool returns a new IDedPool.\nfunc NewIDedPool[T any](resetFn func(*T)) IDedPool[T] {\n\treturn IDedPool[T]{pool: NewPool(resetFn), maxIDEncountered: -1}\n}\n\n// GetOrAllocate returns the T with the given id.\nfunc (p *IDedPool[T]) GetOrAllocate(id int) *T {\n\tif p.maxIDEncountered < id {\n\t\tp.maxIDEncountered = id\n\t}\n\tif id >= len(p.idToItems) {\n\t\tp.idToItems = append(p.idToItems, make([]*T, id-len(p.idToItems)+1)...)\n\t}\n\tif p.idToItems[id] == nil {\n\t\tp.idToItems[id] = p.pool.Allocate()\n\t}\n\treturn p.idToItems[id]\n}\n\n// Get returns the T with the given id, or nil if it's not allocated.\nfunc (p *IDedPool[T]) Get(id int) *T {\n\tif id >= len(p.idToItems) {\n\t\treturn nil\n\t}\n\treturn p.idToItems[id]\n}\n\n// Reset resets the pool.\nfunc (p *IDedPool[T]) Reset() {\n\tp.pool.Reset()\n\tfor i := 0; i <= p.maxIDEncountered; i++ {\n\t\tp.idToItems[i] = nil\n\t}\n\tp.maxIDEncountered = -1\n}\n\n// MaxIDEncountered returns the maximum id encountered so far.\nfunc (p *IDedPool[T]) MaxIDEncountered() int {\n\treturn p.maxIDEncountered\n}\n\n// arraySize is the size of the array used in VarLengthPool's arrayPool.\n// This is chosen to be 8, which is empirically a good number among 8, 12, 16 and 20.\nconst arraySize = 8\n\n// VarLengthPool is a pool of VarLength[T] that can be allocated and reset.\ntype (\n\tVarLengthPool[T any] struct {\n\t\tarrayPool Pool[varLengthPoolArray[T]]\n\t\tslicePool Pool[[]T]\n\t}\n\t// varLengthPoolArray wraps an array and keeps track of the next index to be used to avoid the heap allocation.\n\tvarLengthPoolArray[T any] struct {\n\t\tarr  [arraySize]T\n\t\tnext int\n\t}\n)\n\n// VarLength is a variable length array that can be reused via a pool.\ntype VarLength[T any] struct {\n\tarr *varLengthPoolArray[T]\n\tslc *[]T\n}\n\n// NewVarLengthPool returns a new VarLengthPool.\nfunc NewVarLengthPool[T any]() VarLengthPool[T] {\n\treturn VarLengthPool[T]{\n\t\tarrayPool: NewPool(func(v *varLengthPoolArray[T]) {\n\t\t\tv.next = 0\n\t\t}),\n\t\tslicePool: NewPool(func(i *[]T) {\n\t\t\t*i = (*i)[:0]\n\t\t}),\n\t}\n}\n\n// NewNilVarLength returns a new VarLength[T] with a nil backing.\nfunc NewNilVarLength[T any]() VarLength[T] {\n\treturn VarLength[T]{}\n}\n\n// Allocate allocates a new VarLength[T] from the pool.\nfunc (p *VarLengthPool[T]) Allocate(knownMin int) VarLength[T] {\n\tif knownMin <= arraySize {\n\t\tarr := p.arrayPool.Allocate()\n\t\treturn VarLength[T]{arr: arr}\n\t}\n\tslc := p.slicePool.Allocate()\n\tif cap(*slc) < knownMin {\n\t\t*slc = make([]T, 0, knownMin)\n\t}\n\treturn VarLength[T]{slc: slc}\n}\n\n// Reset resets the pool.\nfunc (p *VarLengthPool[T]) Reset() {\n\tp.arrayPool.Reset()\n\tp.slicePool.Reset()\n}\n\n// Append appends items to the backing slice just like the `append` builtin function in Go.\nfunc (i VarLength[T]) Append(p *VarLengthPool[T], items ...T) VarLength[T] {\n\tslc := i.slc\n\tif slc != nil {\n\t\t*slc = append(*slc, items...)\n\t\treturn i\n\t}\n\n\tarr := i.arr\n\tif arr == nil {\n\t\tarr = p.arrayPool.Allocate()\n\t\ti.arr = arr\n\t}\n\n\tif arr.next+len(items) <= arraySize {\n\t\tarr.next += copy(arr.arr[arr.next:], items)\n\t} else {\n\t\tslc = p.slicePool.Allocate()\n\t\t// Copy the array to the slice.\n\t\t*slc = append(*slc, arr.arr[:arr.next]...)\n\t\t*slc = append(*slc, items...)\n\t\ti.slc = slc\n\t}\n\treturn i\n}\n\n// View returns the backing slice.\nfunc (i VarLength[T]) View() []T {\n\tif slc := i.slc; slc != nil {\n\t\treturn *i.slc\n\t}\n\tif arr := i.arr; arr != nil {\n\t\treturn arr.arr[:arr.next]\n\t}\n\treturn nil\n}\n\n// Cut cuts the backing slice to the given length.\n// Precondition: n <= len(i.backing).\nfunc (i VarLength[T]) Cut(n int) {\n\tif slc := i.slc; slc != nil {\n\t\t*slc = (*slc)[:n]\n\t} else if arr := i.arr; arr != nil {\n\t\tarr.next = n\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/ptr.go",
    "content": "package wazevoapi\n\nimport \"unsafe\"\n\n// PtrFromUintptr resurrects the original *T from the given uintptr.\n// The caller of this function MUST be sure that ptr is valid.\nfunc PtrFromUintptr[T any](ptr uintptr) *T {\n\t// Wraps ptrs as the double pointer in order to avoid the unsafe access as detected by race detector.\n\t//\n\t// For example, if we have (*function)(unsafe.Pointer(ptr)) instead, then the race detector's \"checkptr\"\n\t// subroutine wanrs as \"checkptr: pointer arithmetic result points to invalid allocation\"\n\t// https://github.com/golang/go/blob/1ce7fcf139417d618c2730010ede2afb41664211/src/runtime/checkptr.go#L69\n\tvar wrapped *uintptr = &ptr\n\treturn *(**T)(unsafe.Pointer(wrapped))\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/queue.go",
    "content": "package wazevoapi\n\n// Queue is the resettable queue where the underlying slice is reused.\ntype Queue[T any] struct {\n\tindex int\n\tData  []T\n}\n\nfunc (q *Queue[T]) Enqueue(v T) {\n\tq.Data = append(q.Data, v)\n}\n\nfunc (q *Queue[T]) Dequeue() (ret T) {\n\tret = q.Data[q.index]\n\tq.index++\n\treturn\n}\n\nfunc (q *Queue[T]) Empty() bool {\n\treturn q.index >= len(q.Data)\n}\n\nfunc (q *Queue[T]) Reset() {\n\tq.index = 0\n\tq.Data = q.Data[:0]\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/resetmap.go",
    "content": "package wazevoapi\n\n// ResetMap resets the map to an empty state, or creates a new map if it is nil.\nfunc ResetMap[K comparable, V any](m map[K]V) map[K]V {\n\tif m == nil {\n\t\tm = make(map[K]V)\n\t} else {\n\t\tclear(m)\n\t}\n\treturn m\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/expctxkeys/checkpoint.go",
    "content": "package expctxkeys\n\n// EnableSnapshotterKey is a context key to indicate that snapshotting should be enabled.\n// The context.Context passed to a exported function invocation should have this key set\n// to a non-nil value, and host functions will be able to retrieve it using SnapshotterKey.\ntype EnableSnapshotterKey struct{}\n\n// SnapshotterKey is a context key to access a Snapshotter from a host function.\n// It is only present if EnableSnapshotter was set in the function invocation context.\ntype SnapshotterKey struct{}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/expctxkeys/close.go",
    "content": "package expctxkeys\n\n// CloseNotifierKey is a context.Context Value key. Its associated value should be a\n// Notifier.\ntype CloseNotifierKey struct{}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/expctxkeys/compilationworkers.go",
    "content": "package expctxkeys\n\n// CompilationWorkers is a context.Context Value key.\n// Its associated value should be an int representing the number of workers\n// we want to spawn to compile a given wasm input.\ntype CompilationWorkers struct{}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/expctxkeys/expctxkeys.go",
    "content": "// Package expctxkeys provides keys for the context used to store the experimental APIs.\npackage expctxkeys\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/expctxkeys/importresolver.go",
    "content": "package expctxkeys\n\n// ImportResolverKey is a context.Context Value key.\n// Its associated value should be an ImportResolver.\n// See issue 2294.\ntype ImportResolverKey struct{}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/expctxkeys/listener.go",
    "content": "package expctxkeys\n\n// FunctionListenerFactoryKey is a context.Context Value key.\n// Its associated value should be a FunctionListenerFactory.\n//\n// See https://github.com/tetratelabs/wazero/issues/451\ntype FunctionListenerFactoryKey struct{}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/expctxkeys/memory.go",
    "content": "package expctxkeys\n\n// MemoryAllocatorKey is a context.Context key for the experimental memory allocator.\ntype MemoryAllocatorKey struct{}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/filecache/compilationcache.go",
    "content": "package filecache\n\nimport (\n\t\"crypto/sha256\"\n\t\"io\"\n)\n\n// Cache allows the compiler engine to skip compilation of wasm to machine code\n// where doing so is redundant for the same wasm binary and version of wazero.\n//\n// This augments the default in-memory cache of compiled functions, by\n// decoupling it from a wazero.Runtime instance. Concretely, a runtime loses\n// its cache once closed. This cache allows the runtime to rebuild its\n// in-memory cache quicker, significantly reducing first-hit penalty on a hit.\n//\n// See New for the example implementation.\ntype Cache interface {\n\t// Get is called when the runtime is trying to get the cached compiled functions.\n\t// Implementations are supposed to return compiled function in io.Reader with ok=true\n\t// if the key exists on the cache. In the case of not-found, this should return\n\t// ok=false with err=nil. content.Close() is automatically called by\n\t// the caller of this Get.\n\t//\n\t// Note: the returned content won't go through the validation pass of Wasm binary\n\t// which is applied when the binary is compiled from scratch without cache hit.\n\tGet(key Key) (content io.ReadCloser, ok bool, err error)\n\t//\n\t// Add is called when the runtime is trying to add the new cache entry.\n\t// The given `content` must be un-modified, and returned as-is in Get method.\n\t//\n\t// Note: the `content` is ensured to be safe through the validation phase applied on the Wasm binary.\n\tAdd(key Key, content io.Reader) (err error)\n\t//\n\t// Delete is called when the cache on the `key` returned by Get is no longer usable, and\n\t// must be purged. Specifically, this is called happens when the wazero's version has been changed.\n\t// For example, that is when there's a difference between the version of compiling wazero and the\n\t// version of the currently used wazero.\n\tDelete(key Key) (err error)\n}\n\n// Key represents the 256-bit unique identifier assigned to each cache entry.\ntype Key = [sha256.Size]byte\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/filecache/file_cache.go",
    "content": "package filecache\n\nimport (\n\t\"encoding/hex\"\n\t\"errors\"\n\t\"io\"\n\t\"os\"\n\t\"path\"\n\t\"path/filepath\"\n)\n\n// New returns a new Cache implemented by fileCache.\nfunc New(dir string) Cache {\n\treturn newFileCache(dir)\n}\n\nfunc newFileCache(dir string) *fileCache {\n\treturn &fileCache{dirPath: dir}\n}\n\n// fileCache persists compiled functions into dirPath.\n//\n// Note: this can be expanded to do binary signing/verification, set TTL on each entry, etc.\ntype fileCache struct {\n\tdirPath string\n}\n\nfunc (fc *fileCache) path(key Key) string {\n\treturn path.Join(fc.dirPath, hex.EncodeToString(key[:]))\n}\n\nfunc (fc *fileCache) Get(key Key) (content io.ReadCloser, ok bool, err error) {\n\tf, err := os.Open(fc.path(key))\n\tif errors.Is(err, os.ErrNotExist) {\n\t\treturn nil, false, nil\n\t} else if err != nil {\n\t\treturn nil, false, err\n\t} else {\n\t\treturn f, true, nil\n\t}\n}\n\nfunc (fc *fileCache) Add(key Key, content io.Reader) (err error) {\n\tpath := fc.path(key)\n\tdirPath, fileName := filepath.Split(path)\n\n\tfile, err := os.CreateTemp(dirPath, fileName+\".*.tmp\")\n\tif err != nil {\n\t\treturn\n\t}\n\tdefer func() {\n\t\tfile.Close()\n\t\tif err != nil {\n\t\t\t_ = os.Remove(file.Name())\n\t\t}\n\t}()\n\tif _, err = io.Copy(file, content); err != nil {\n\t\treturn\n\t}\n\tif err = file.Sync(); err != nil {\n\t\treturn\n\t}\n\tif err = file.Close(); err != nil {\n\t\treturn\n\t}\n\terr = os.Rename(file.Name(), path)\n\treturn\n}\n\nfunc (fc *fileCache) Delete(key Key) (err error) {\n\terr = os.Remove(fc.path(key))\n\tif errors.Is(err, os.ErrNotExist) {\n\t\terr = nil\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/fsapi/file.go",
    "content": "package fsapi\n\nimport experimentalsys \"github.com/tetratelabs/wazero/experimental/sys\"\n\n// File includes methods not yet ready to document for end users, notably\n// non-blocking functionality.\n//\n// Particularly, Poll is subject to debate. For example, whether a user should\n// be able to choose how to implement timeout or not. Currently, this interface\n// allows the user to choose to sleep or use native polling, and which choice\n// they make impacts thread behavior as summarized here:\n// https://github.com/tetratelabs/wazero/pull/1606#issuecomment-1665475516\ntype File interface {\n\texperimentalsys.File\n\n\t// IsNonblock returns true if the file was opened with O_NONBLOCK, or\n\t// SetNonblock was successfully enabled on this file.\n\t//\n\t// # Notes\n\t//\n\t//   - This might not match the underlying state of the file descriptor if\n\t//     the file was not opened via OpenFile.\n\tIsNonblock() bool\n\n\t// SetNonblock toggles the non-blocking mode (O_NONBLOCK) of this file.\n\t//\n\t// # Errors\n\t//\n\t// A zero Errno is success. The below are expected otherwise:\n\t//   - ENOSYS: the implementation does not support this function.\n\t//   - EBADF: the file or directory was closed.\n\t//\n\t// # Notes\n\t//\n\t//   - This is like syscall.SetNonblock and `fcntl` with O_NONBLOCK in\n\t//     POSIX. See https://pubs.opengroup.org/onlinepubs/9699919799/functions/fcntl.html\n\tSetNonblock(enable bool) experimentalsys.Errno\n\n\t// Poll returns if the file has data ready to be read or written.\n\t//\n\t// # Parameters\n\t//\n\t// The `flag` parameter determines which event to await, such as POLLIN,\n\t// POLLOUT, or a combination like `POLLIN|POLLOUT`.\n\t//\n\t// The `timeoutMillis` parameter is how long to block for an event, or\n\t// interrupted, in milliseconds. There are two special values:\n\t//   - zero returns immediately\n\t//   - any negative value blocks any amount of time\n\t//\n\t// # Results\n\t//\n\t// `ready` means there was data ready to read or written. False can mean no\n\t// event was ready or `errno` is not zero.\n\t//\n\t// A zero `errno` is success. The below are expected otherwise:\n\t//   - ENOSYS: the implementation does not support this function.\n\t//   - ENOTSUP: the implementation does not the flag combination.\n\t//   - EINTR: the call was interrupted prior to an event.\n\t//\n\t// # Notes\n\t//\n\t//   - This is like `poll` in POSIX, for a single file.\n\t//     See https://pubs.opengroup.org/onlinepubs/9699919799/functions/poll.html\n\t//   - No-op files, such as those which read from /dev/null, should return\n\t//     immediately true, as data will never become available.\n\t//   - See /RATIONALE.md for detailed notes including impact of blocking.\n\tPoll(flag Pflag, timeoutMillis int32) (ready bool, errno experimentalsys.Errno)\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/fsapi/poll.go",
    "content": "package fsapi\n\n// Pflag are bit flags used for File.Poll. Values, including zero, should not\n// be interpreted numerically. Instead, use by constants prefixed with 'POLL'.\n//\n// # Notes\n//\n//   - This is like `pollfd.events` flags for `poll` in POSIX. See\n//     https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/poll.h.html\ntype Pflag uint32\n\n// Only define bitflags we support and are needed by `poll_oneoff` in wasip1\n// See https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#eventrwflags\nconst (\n\t// POLLIN is a read event.\n\tPOLLIN Pflag = 1 << iota\n\n\t// POLLOUT is a write event.\n\tPOLLOUT\n)\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/fsapi/unimplemented.go",
    "content": "package fsapi\n\nimport experimentalsys \"github.com/tetratelabs/wazero/experimental/sys\"\n\nfunc Adapt(f experimentalsys.File) File {\n\tif f, ok := f.(File); ok {\n\t\treturn f\n\t}\n\treturn unimplementedFile{f}\n}\n\ntype unimplementedFile struct{ experimentalsys.File }\n\n// IsNonblock implements File.IsNonblock\nfunc (unimplementedFile) IsNonblock() bool {\n\treturn false\n}\n\n// SetNonblock implements File.SetNonblock\nfunc (unimplementedFile) SetNonblock(bool) experimentalsys.Errno {\n\treturn experimentalsys.ENOSYS\n}\n\n// Poll implements File.Poll\nfunc (unimplementedFile) Poll(Pflag, int32) (ready bool, errno experimentalsys.Errno) {\n\treturn false, experimentalsys.ENOSYS\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/ieee754/ieee754.go",
    "content": "package ieee754\n\nimport (\n\t\"encoding/binary\"\n\t\"io\"\n\t\"math\"\n)\n\n// DecodeFloat32 decodes a float32 in IEEE 754 binary representation.\n// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#floating-point%E2%91%A2\nfunc DecodeFloat32(buf []byte) (float32, error) {\n\tif len(buf) < 4 {\n\t\treturn 0, io.ErrUnexpectedEOF\n\t}\n\n\traw := binary.LittleEndian.Uint32(buf[:4])\n\treturn math.Float32frombits(raw), nil\n}\n\n// DecodeFloat64 decodes a float64 in IEEE 754 binary representation.\n// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#floating-point%E2%91%A2\nfunc DecodeFloat64(buf []byte) (float64, error) {\n\tif len(buf) < 8 {\n\t\treturn 0, io.ErrUnexpectedEOF\n\t}\n\n\traw := binary.LittleEndian.Uint64(buf)\n\treturn math.Float64frombits(raw), nil\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/internalapi/internal.go",
    "content": "package internalapi\n\ntype WazeroOnly interface {\n\twazeroOnly()\n}\n\ntype WazeroOnlyType struct{}\n\nfunc (WazeroOnlyType) wazeroOnly() {}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/leb128/leb128.go",
    "content": "package leb128\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n)\n\nconst (\n\tmaxVarintLen32 = 5\n\tmaxVarintLen33 = maxVarintLen32\n\tmaxVarintLen64 = 10\n\n\tint33Mask  int64 = 1 << 7\n\tint33Mask2       = ^int33Mask\n\tint33Mask3       = 1 << 6\n\tint33Mask4       = 8589934591 // 2^33-1\n\tint33Mask5       = 1 << 32\n\tint33Mask6       = int33Mask4 + 1 // 2^33\n\n\tint64Mask3 = 1 << 6\n\tint64Mask4 = ^0\n)\n\nvar (\n\terrOverflow32 = errors.New(\"overflows a 32-bit integer\")\n\terrOverflow33 = errors.New(\"overflows a 33-bit integer\")\n\terrOverflow64 = errors.New(\"overflows a 64-bit integer\")\n)\n\n// EncodeInt32 encodes the signed value into a buffer in LEB128 format\n//\n// See https://en.wikipedia.org/wiki/LEB128#Encode_signed_integer\nfunc EncodeInt32(value int32) []byte {\n\treturn EncodeInt64(int64(value))\n}\n\n// EncodeInt64 encodes the signed value into a buffer in LEB128 format\n//\n// See https://en.wikipedia.org/wiki/LEB128#Encode_signed_integer\nfunc EncodeInt64(value int64) (buf []byte) {\n\tfor {\n\t\t// Take 7 remaining low-order bits from the value into b.\n\t\tb := uint8(value & 0x7f)\n\t\t// Extract the sign bit.\n\t\ts := uint8(value & 0x40)\n\t\tvalue >>= 7\n\n\t\t// The encoding unsigned numbers is simpler as it only needs to check if the value is non-zero to tell if there\n\t\t// are more bits to encode. Signed is a little more complicated as you have to double-check the sign bit.\n\t\t// If either case, set the high-order bit to tell the reader there are more bytes in this int.\n\t\tif (value != -1 || s == 0) && (value != 0 || s != 0) {\n\t\t\tb |= 0x80\n\t\t}\n\n\t\t// Append b into the buffer\n\t\tbuf = append(buf, b)\n\t\tif b&0x80 == 0 {\n\t\t\tbreak\n\t\t}\n\t}\n\treturn buf\n}\n\n// EncodeUint32 encodes the value into a buffer in LEB128 format\n//\n// See https://en.wikipedia.org/wiki/LEB128#Encode_unsigned_integer\nfunc EncodeUint32(value uint32) []byte {\n\treturn EncodeUint64(uint64(value))\n}\n\n// EncodeUint64 encodes the value into a buffer in LEB128 format\n//\n// See https://en.wikipedia.org/wiki/LEB128#Encode_unsigned_integer\nfunc EncodeUint64(value uint64) (buf []byte) {\n\t// This is effectively a do/while loop where we take 7 bits of the value and encode them until it is zero.\n\tfor {\n\t\t// Take 7 remaining low-order bits from the value into b.\n\t\tb := uint8(value & 0x7f)\n\t\tvalue = value >> 7\n\n\t\t// If there are remaining bits, the value won't be zero: Set the high-\n\t\t// order bit to tell the reader there are more bytes in this uint.\n\t\tif value != 0 {\n\t\t\tb |= 0x80\n\t\t}\n\n\t\t// Append b into the buffer\n\t\tbuf = append(buf, b)\n\t\tif b&0x80 == 0 {\n\t\t\treturn buf\n\t\t}\n\t}\n}\n\ntype nextByte func(i int) (byte, error)\n\nfunc DecodeUint32(r io.ByteReader) (ret uint32, bytesRead uint64, err error) {\n\treturn decodeUint32(func(_ int) (byte, error) { return r.ReadByte() })\n}\n\nfunc LoadUint32(buf []byte) (ret uint32, bytesRead uint64, err error) {\n\treturn decodeUint32(func(i int) (byte, error) {\n\t\tif i >= len(buf) {\n\t\t\treturn 0, io.EOF\n\t\t}\n\t\treturn buf[i], nil\n\t})\n}\n\nfunc decodeUint32(next nextByte) (ret uint32, bytesRead uint64, err error) {\n\t// Derived from https://github.com/golang/go/blob/go1.20/src/encoding/binary/varint.go\n\t// with the modification on the overflow handling tailored for 32-bits.\n\tvar s uint32\n\tfor i := 0; i < maxVarintLen32; i++ {\n\t\tb, err := next(i)\n\t\tif err != nil {\n\t\t\treturn 0, 0, err\n\t\t}\n\t\tif b < 0x80 {\n\t\t\t// Unused bits must be all zero.\n\t\t\tif i == maxVarintLen32-1 && (b&0xf0) > 0 {\n\t\t\t\treturn 0, 0, errOverflow32\n\t\t\t}\n\t\t\treturn ret | uint32(b)<<s, uint64(i) + 1, nil\n\t\t}\n\t\tret |= (uint32(b) & 0x7f) << s\n\t\ts += 7\n\t}\n\treturn 0, 0, errOverflow32\n}\n\nfunc LoadUint64(buf []byte) (ret uint64, bytesRead uint64, err error) {\n\tbufLen := len(buf)\n\tif bufLen == 0 {\n\t\treturn 0, 0, io.EOF\n\t}\n\n\t// Derived from https://github.com/golang/go/blob/go1.20/src/encoding/binary/varint.go\n\tvar s uint64\n\tfor i := 0; i < maxVarintLen64; i++ {\n\t\tif i >= bufLen {\n\t\t\treturn 0, 0, io.EOF\n\t\t}\n\t\tb := buf[i]\n\t\tif b < 0x80 {\n\t\t\t// Unused bits (non first bit) must all be zero.\n\t\t\tif i == maxVarintLen64-1 && b > 1 {\n\t\t\t\treturn 0, 0, errOverflow64\n\t\t\t}\n\t\t\treturn ret | uint64(b)<<s, uint64(i) + 1, nil\n\t\t}\n\t\tret |= (uint64(b) & 0x7f) << s\n\t\ts += 7\n\t}\n\treturn 0, 0, errOverflow64\n}\n\nfunc DecodeInt32(r io.ByteReader) (ret int32, bytesRead uint64, err error) {\n\treturn decodeInt32(func(_ int) (byte, error) { return r.ReadByte() })\n}\n\nfunc LoadInt32(buf []byte) (ret int32, bytesRead uint64, err error) {\n\treturn decodeInt32(func(i int) (byte, error) {\n\t\tif i >= len(buf) {\n\t\t\treturn 0, io.EOF\n\t\t}\n\t\treturn buf[i], nil\n\t})\n}\n\nfunc decodeInt32(next nextByte) (ret int32, bytesRead uint64, err error) {\n\tvar shift int\n\tvar b byte\n\tfor {\n\t\tb, err = next(int(bytesRead))\n\t\tif err != nil {\n\t\t\treturn 0, 0, fmt.Errorf(\"readByte failed: %w\", err)\n\t\t}\n\t\tret |= (int32(b) & 0x7f) << shift\n\t\tshift += 7\n\t\tbytesRead++\n\t\tif b&0x80 == 0 {\n\t\t\tif shift < 32 && (b&0x40) != 0 {\n\t\t\t\tret |= ^0 << shift\n\t\t\t}\n\t\t\t// Over flow checks.\n\t\t\t// fixme: can be optimized.\n\t\t\tif bytesRead > maxVarintLen32 {\n\t\t\t\treturn 0, 0, errOverflow32\n\t\t\t} else if unused := b & 0b00110000; bytesRead == maxVarintLen32 && ret < 0 && unused != 0b00110000 {\n\t\t\t\treturn 0, 0, errOverflow32\n\t\t\t} else if bytesRead == maxVarintLen32 && ret >= 0 && unused != 0x00 {\n\t\t\t\treturn 0, 0, errOverflow32\n\t\t\t}\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// DecodeInt33AsInt64 is a special cased decoder for wasm.BlockType which is encoded as a positive signed integer, yet\n// still needs to fit the 32-bit range of allowed indices. Hence, this is 33, not 32-bit!\n//\n// See https://webassembly.github.io/spec/core/binary/instructions.html#control-instructions\nfunc DecodeInt33AsInt64(r io.ByteReader) (ret int64, bytesRead uint64, err error) {\n\tvar shift int\n\tvar b int64\n\tvar rb byte\n\tfor shift < 35 {\n\t\trb, err = r.ReadByte()\n\t\tif err != nil {\n\t\t\treturn 0, 0, fmt.Errorf(\"readByte failed: %w\", err)\n\t\t}\n\t\tb = int64(rb)\n\t\tret |= (b & int33Mask2) << shift\n\t\tshift += 7\n\t\tbytesRead++\n\t\tif b&int33Mask == 0 {\n\t\t\tbreak\n\t\t}\n\t}\n\n\t// fixme: can be optimized\n\tif shift < 33 && (b&int33Mask3) == int33Mask3 {\n\t\tret |= int33Mask4 << shift\n\t}\n\tret = ret & int33Mask4\n\n\t// if 33rd bit == 1, we translate it as a corresponding signed-33bit minus value\n\tif ret&int33Mask5 > 0 {\n\t\tret = ret - int33Mask6\n\t}\n\t// Over flow checks.\n\t// fixme: can be optimized.\n\tif bytesRead > maxVarintLen33 {\n\t\treturn 0, 0, errOverflow33\n\t} else if unused := b & 0b00100000; bytesRead == maxVarintLen33 && ret < 0 && unused != 0b00100000 {\n\t\treturn 0, 0, errOverflow33\n\t} else if bytesRead == maxVarintLen33 && ret >= 0 && unused != 0x00 {\n\t\treturn 0, 0, errOverflow33\n\t}\n\treturn ret, bytesRead, nil\n}\n\nfunc DecodeInt64(r io.ByteReader) (ret int64, bytesRead uint64, err error) {\n\treturn decodeInt64(func(_ int) (byte, error) { return r.ReadByte() })\n}\n\nfunc LoadInt64(buf []byte) (ret int64, bytesRead uint64, err error) {\n\treturn decodeInt64(func(i int) (byte, error) {\n\t\tif i >= len(buf) {\n\t\t\treturn 0, io.EOF\n\t\t}\n\t\treturn buf[i], nil\n\t})\n}\n\nfunc decodeInt64(next nextByte) (ret int64, bytesRead uint64, err error) {\n\tvar shift int\n\tvar b byte\n\tfor {\n\t\tb, err = next(int(bytesRead))\n\t\tif err != nil {\n\t\t\treturn 0, 0, fmt.Errorf(\"readByte failed: %w\", err)\n\t\t}\n\t\tret |= (int64(b) & 0x7f) << shift\n\t\tshift += 7\n\t\tbytesRead++\n\t\tif b&0x80 == 0 {\n\t\t\tif shift < 64 && (b&int64Mask3) == int64Mask3 {\n\t\t\t\tret |= int64Mask4 << shift\n\t\t\t}\n\t\t\t// Over flow checks.\n\t\t\t// fixme: can be optimized.\n\t\t\tif bytesRead > maxVarintLen64 {\n\t\t\t\treturn 0, 0, errOverflow64\n\t\t\t} else if unused := b & 0b00111110; bytesRead == maxVarintLen64 && ret < 0 && unused != 0b00111110 {\n\t\t\t\treturn 0, 0, errOverflow64\n\t\t\t} else if bytesRead == maxVarintLen64 && ret >= 0 && unused != 0x00 {\n\t\t\t\treturn 0, 0, errOverflow64\n\t\t\t}\n\t\t\treturn\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/moremath/moremath.go",
    "content": "package moremath\n\nimport (\n\t\"math\"\n)\n\n// https://www.w3.org/TR/2022/WD-wasm-core-2-20220419/syntax/values.html#floating-point\nconst (\n\t// F32CanonicalNaNBits is the 32-bit float where payload's MSB equals 1 and others are all zero.\n\tF32CanonicalNaNBits = uint32(0x7fc0_0000)\n\t// F32CanonicalNaNBitsMask can be used to judge the value `v` is canonical nan as \"v&F32CanonicalNaNBitsMask == F32CanonicalNaNBits\"\n\tF32CanonicalNaNBitsMask = uint32(0x7fff_ffff)\n\t// F64CanonicalNaNBits is the 64-bit float where payload's MSB equals 1 and others are all zero.\n\tF64CanonicalNaNBits = uint64(0x7ff8_0000_0000_0000)\n\t// F64CanonicalNaNBitsMask can be used to judge the value `v` is canonical nan as \"v&F64CanonicalNaNBitsMask == F64CanonicalNaNBits\"\n\tF64CanonicalNaNBitsMask = uint64(0x7fff_ffff_ffff_ffff)\n\t// F32ArithmeticNaNPayloadMSB is used to extract the most significant bit of payload of 32-bit arithmetic NaN values\n\tF32ArithmeticNaNPayloadMSB = uint32(0x0040_0000)\n\t// F32ExponentMask is used to extract the exponent of 32-bit floating point.\n\tF32ExponentMask = uint32(0x7f80_0000)\n\t// F32ArithmeticNaNBits is an example 32-bit arithmetic NaN.\n\tF32ArithmeticNaNBits = F32CanonicalNaNBits | 0b1 // Set first bit to make this different from the canonical NaN.\n\t// F64ArithmeticNaNPayloadMSB is used to extract the most significant bit of payload of 64-bit arithmetic NaN values\n\tF64ArithmeticNaNPayloadMSB = uint64(0x0008_0000_0000_0000)\n\t// F64ExponentMask is used to extract the exponent of 64-bit floating point.\n\tF64ExponentMask = uint64(0x7ff0_0000_0000_0000)\n\t// F64ArithmeticNaNBits is an example 64-bit arithmetic NaN.\n\tF64ArithmeticNaNBits = F64CanonicalNaNBits | 0b1 // Set first bit to make this different from the canonical NaN.\n)\n\n// WasmCompatMin64 is the Wasm spec compatible variant of math.Min for 64-bit floating points.\nfunc WasmCompatMin64(x, y float64) float64 {\n\tswitch {\n\tcase math.IsNaN(x) || math.IsNaN(y):\n\t\treturn returnF64NaNBinOp(x, y)\n\tcase math.IsInf(x, -1) || math.IsInf(y, -1):\n\t\treturn math.Inf(-1)\n\tcase x == 0 && x == y:\n\t\tif math.Signbit(x) {\n\t\t\treturn x\n\t\t}\n\t\treturn y\n\t}\n\tif x < y {\n\t\treturn x\n\t}\n\treturn y\n}\n\n// WasmCompatMin32 is the Wasm spec compatible variant of math.Min for 32-bit floating points.\nfunc WasmCompatMin32(x, y float32) float32 {\n\tx64, y64 := float64(x), float64(y)\n\tswitch {\n\tcase math.IsNaN(x64) || math.IsNaN(y64):\n\t\treturn returnF32NaNBinOp(x, y)\n\tcase math.IsInf(x64, -1) || math.IsInf(y64, -1):\n\t\treturn float32(math.Inf(-1))\n\tcase x == 0 && x == y:\n\t\tif math.Signbit(x64) {\n\t\t\treturn x\n\t\t}\n\t\treturn y\n\t}\n\tif x < y {\n\t\treturn x\n\t}\n\treturn y\n}\n\n// WasmCompatMax64 is the Wasm spec compatible variant of math.Max for 64-bit floating points.\nfunc WasmCompatMax64(x, y float64) float64 {\n\tswitch {\n\tcase math.IsNaN(x) || math.IsNaN(y):\n\t\treturn returnF64NaNBinOp(x, y)\n\tcase math.IsInf(x, 1) || math.IsInf(y, 1):\n\t\treturn math.Inf(1)\n\tcase x == 0 && x == y:\n\t\tif math.Signbit(x) {\n\t\t\treturn y\n\t\t}\n\t\treturn x\n\t}\n\tif x > y {\n\t\treturn x\n\t}\n\treturn y\n}\n\n// WasmCompatMax32 is the Wasm spec compatible variant of math.Max for 32-bit floating points.\nfunc WasmCompatMax32(x, y float32) float32 {\n\tx64, y64 := float64(x), float64(y)\n\tswitch {\n\tcase math.IsNaN(x64) || math.IsNaN(y64):\n\t\treturn returnF32NaNBinOp(x, y)\n\tcase math.IsInf(x64, 1) || math.IsInf(y64, 1):\n\t\treturn float32(math.Inf(1))\n\tcase x == 0 && x == y:\n\t\tif math.Signbit(x64) {\n\t\t\treturn y\n\t\t}\n\t\treturn x\n\t}\n\tif x > y {\n\t\treturn x\n\t}\n\treturn y\n}\n\n// WasmCompatNearestF32 is the Wasm spec compatible variant of math.Round, used for Nearest instruction.\n// For example, this converts 1.9 to 2.0, and this has the semantics of LLVM's rint intrinsic.\n//\n// e.g. math.Round(-4.5) results in -5 while this results in -4.\n//\n// See https://llvm.org/docs/LangRef.html#llvm-rint-intrinsic.\nfunc WasmCompatNearestF32(f float32) float32 {\n\tvar res float32\n\t// TODO: look at https://github.com/bytecodealliance/wasmtime/pull/2171 and reconsider this algorithm\n\tif f != 0 {\n\t\tceil := float32(math.Ceil(float64(f)))\n\t\tfloor := float32(math.Floor(float64(f)))\n\t\tdistToCeil := math.Abs(float64(f - ceil))\n\t\tdistToFloor := math.Abs(float64(f - floor))\n\t\th := ceil / 2.0\n\t\tif distToCeil < distToFloor {\n\t\t\tres = ceil\n\t\t} else if distToCeil == distToFloor && float32(math.Floor(float64(h))) == h {\n\t\t\tres = ceil\n\t\t} else {\n\t\t\tres = floor\n\t\t}\n\t} else {\n\t\tres = f\n\t}\n\treturn returnF32UniOp(f, res)\n}\n\n// WasmCompatNearestF64 is the Wasm spec compatible variant of math.Round, used for Nearest instruction.\n// For example, this converts 1.9 to 2.0, and this has the semantics of LLVM's rint intrinsic.\n//\n// e.g. math.Round(-4.5) results in -5 while this results in -4.\n//\n// See https://llvm.org/docs/LangRef.html#llvm-rint-intrinsic.\nfunc WasmCompatNearestF64(f float64) float64 {\n\t// TODO: look at https://github.com/bytecodealliance/wasmtime/pull/2171 and reconsider this algorithm\n\tvar res float64\n\tif f != 0 {\n\t\tceil := math.Ceil(f)\n\t\tfloor := math.Floor(f)\n\t\tdistToCeil := math.Abs(f - ceil)\n\t\tdistToFloor := math.Abs(f - floor)\n\t\th := ceil / 2.0\n\t\tif distToCeil < distToFloor {\n\t\t\tres = ceil\n\t\t} else if distToCeil == distToFloor && math.Floor(h) == h {\n\t\t\tres = ceil\n\t\t} else {\n\t\t\tres = floor\n\t\t}\n\t} else {\n\t\tres = f\n\t}\n\treturn returnF64UniOp(f, res)\n}\n\n// WasmCompatCeilF32 is the same as math.Ceil on 32-bit except that\n// the returned NaN value follows the Wasm specification on NaN\n// propagation.\n// https://www.w3.org/TR/2022/WD-wasm-core-2-20220419/exec/numerics.html#nan-propagation\nfunc WasmCompatCeilF32(f float32) float32 {\n\treturn returnF32UniOp(f, float32(math.Ceil(float64(f))))\n}\n\n// WasmCompatCeilF64 is the same as math.Ceil on 64-bit except that\n// the returned NaN value follows the Wasm specification on NaN\n// propagation.\n// https://www.w3.org/TR/2022/WD-wasm-core-2-20220419/exec/numerics.html#nan-propagation\nfunc WasmCompatCeilF64(f float64) float64 {\n\treturn returnF64UniOp(f, math.Ceil(f))\n}\n\n// WasmCompatFloorF32 is the same as math.Floor on 32-bit except that\n// the returned NaN value follows the Wasm specification on NaN\n// propagation.\n// https://www.w3.org/TR/2022/WD-wasm-core-2-20220419/exec/numerics.html#nan-propagation\nfunc WasmCompatFloorF32(f float32) float32 {\n\treturn returnF32UniOp(f, float32(math.Floor(float64(f))))\n}\n\n// WasmCompatFloorF64 is the same as math.Floor on 64-bit except that\n// the returned NaN value follows the Wasm specification on NaN\n// propagation.\n// https://www.w3.org/TR/2022/WD-wasm-core-2-20220419/exec/numerics.html#nan-propagation\nfunc WasmCompatFloorF64(f float64) float64 {\n\treturn returnF64UniOp(f, math.Floor(f))\n}\n\n// WasmCompatTruncF32 is the same as math.Trunc on 32-bit except that\n// the returned NaN value follows the Wasm specification on NaN\n// propagation.\n// https://www.w3.org/TR/2022/WD-wasm-core-2-20220419/exec/numerics.html#nan-propagation\nfunc WasmCompatTruncF32(f float32) float32 {\n\treturn returnF32UniOp(f, float32(math.Trunc(float64(f))))\n}\n\n// WasmCompatTruncF64 is the same as math.Trunc on 64-bit except that\n// the returned NaN value follows the Wasm specification on NaN\n// propagation.\n// https://www.w3.org/TR/2022/WD-wasm-core-2-20220419/exec/numerics.html#nan-propagation\nfunc WasmCompatTruncF64(f float64) float64 {\n\treturn returnF64UniOp(f, math.Trunc(f))\n}\n\nfunc f32IsNaN(v float32) bool {\n\treturn v != v // this is how NaN is defined.\n}\n\nfunc f64IsNaN(v float64) bool {\n\treturn v != v // this is how NaN is defined.\n}\n\n// returnF32UniOp returns the result of 32-bit unary operation. This accepts `original` which is the operand,\n// and `result` which is its result. This returns the `result` as-is if the result is not NaN. Otherwise, this follows\n// the same logic as in the reference interpreter as well as the amd64 and arm64 floating point handling.\nfunc returnF32UniOp(original, result float32) float32 {\n\t// Following the same logic as in the reference interpreter:\n\t// https://github.com/WebAssembly/spec/blob/d48af683f5e6d00c13f775ab07d29a15daf92203/interpreter/exec/fxx.ml#L115-L122\n\tif !f32IsNaN(result) {\n\t\treturn result\n\t}\n\tif !f32IsNaN(original) {\n\t\treturn math.Float32frombits(F32CanonicalNaNBits)\n\t}\n\treturn math.Float32frombits(math.Float32bits(original) | F32CanonicalNaNBits)\n}\n\n// returnF32UniOp returns the result of 64-bit unary operation. This accepts `original` which is the operand,\n// and `result` which is its result. This returns the `result` as-is if the result is not NaN. Otherwise, this follows\n// the same logic as in the reference interpreter as well as the amd64 and arm64 floating point handling.\nfunc returnF64UniOp(original, result float64) float64 {\n\t// Following the same logic as in the reference interpreter (== amd64 and arm64's behavior):\n\t// https://github.com/WebAssembly/spec/blob/d48af683f5e6d00c13f775ab07d29a15daf92203/interpreter/exec/fxx.ml#L115-L122\n\tif !f64IsNaN(result) {\n\t\treturn result\n\t}\n\tif !f64IsNaN(original) {\n\t\treturn math.Float64frombits(F64CanonicalNaNBits)\n\t}\n\treturn math.Float64frombits(math.Float64bits(original) | F64CanonicalNaNBits)\n}\n\n// returnF64NaNBinOp returns a NaN for 64-bit binary operations. `x` and `y` are original floats\n// and at least one of them is NaN. The returned NaN is guaranteed to comply with the NaN propagation\n// procedure: https://www.w3.org/TR/2022/WD-wasm-core-2-20220419/exec/numerics.html#nan-propagation\nfunc returnF64NaNBinOp(x, y float64) float64 {\n\tif f64IsNaN(x) {\n\t\treturn math.Float64frombits(math.Float64bits(x) | F64CanonicalNaNBits)\n\t} else {\n\t\treturn math.Float64frombits(math.Float64bits(y) | F64CanonicalNaNBits)\n\t}\n}\n\n// returnF64NaNBinOp returns a NaN for 32-bit binary operations. `x` and `y` are original floats\n// and at least one of them is NaN. The returned NaN is guaranteed to comply with the NaN propagation\n// procedure: https://www.w3.org/TR/2022/WD-wasm-core-2-20220419/exec/numerics.html#nan-propagation\nfunc returnF32NaNBinOp(x, y float32) float32 {\n\tif f32IsNaN(x) {\n\t\treturn math.Float32frombits(math.Float32bits(x) | F32CanonicalNaNBits)\n\t} else {\n\t\treturn math.Float32frombits(math.Float32bits(y) | F32CanonicalNaNBits)\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/platform/cpuid.go",
    "content": "package platform\n\n// CpuFeatureFlags exposes methods for querying CPU capabilities\ntype CpuFeatureFlags interface {\n\t// Has returns true when the specified flag (represented as uint64) is supported\n\tHas(cpuFeature CpuFeature) bool\n\t// HasExtra returns true when the specified extraFlag (represented as uint64) is supported\n\tHasExtra(cpuFeature CpuFeature) bool\n\t// Raw returns the raw bitset that represents CPU features used by wazero. This can be used for cache keying.\n\t// For now, we only use four features, so uint64 is enough.\n\tRaw() uint64\n}\n\ntype CpuFeature uint64\n\nconst (\n\t// CpuFeatureAmd64SSE3 is the flag to query CpuFeatureFlags.Has for SSEv3 capabilities on amd64\n\tCpuFeatureAmd64SSE3 CpuFeature = 1\n\t// CpuFeatureAmd64SSE4_1 is the flag to query CpuFeatureFlags.Has for SSEv4.1 capabilities on amd64\n\tCpuFeatureAmd64SSE4_1 CpuFeature = 1 << 19\n\t// CpuFeatureAmd64SSE4_2 is the flag to query CpuFeatureFlags.Has for SSEv4.2 capabilities on amd64\n\tCpuFeatureAmd64SSE4_2 CpuFeature = 1 << 20\n\t// Note: when adding new features, ensure that the feature is included in CpuFeatureFlags.Raw.\n)\n\nconst (\n\t// CpuExtraFeatureAmd64ABM is the flag to query CpuFeatureFlags.HasExtra for Advanced Bit Manipulation capabilities (e.g. LZCNT) on amd64\n\tCpuExtraFeatureAmd64ABM CpuFeature = 1 << 5\n\t// Note: when adding new features, ensure that the feature is included in CpuFeatureFlags.Raw.\n)\n\nconst (\n\t// CpuFeatureArm64Atomic is the flag to query CpuFeatureFlags.Has for Large System Extensions capabilities on arm64\n\tCpuFeatureArm64Atomic CpuFeature = 1 << 21\n)\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/platform/cpuid_amd64.go",
    "content": "//go:build gc\n\npackage platform\n\nimport \"sync\"\n\n// CpuFeatures exposes the capabilities for this CPU, queried via the Has, HasExtra methods.\nvar CpuFeatures = sync.OnceValue(loadCpuFeatureFlags)\n\n// cpuFeatureFlags implements CpuFeatureFlags interface.\ntype cpuFeatureFlags struct {\n\tflags      uint64\n\textraFlags uint64\n}\n\n// cpuid exposes the CPUID instruction to the Go layer (https://www.amd.com/system/files/TechDocs/25481.pdf)\n// implemented in cpuid_amd64.s\nfunc cpuid(arg1, arg2 uint32) (eax, ebx, ecx, edx uint32)\n\n// cpuidAsBitmap combines the result of invoking cpuid to uint64 bitmap.\nfunc cpuidAsBitmap(arg1, arg2 uint32) uint64 {\n\t_ /* eax */, _ /* ebx */, ecx, edx := cpuid(arg1, arg2)\n\treturn (uint64(edx) << 32) | uint64(ecx)\n}\n\n// loadStandardRange load flags from the standard range, panics otherwise.\nfunc loadStandardRange(id uint32) uint64 {\n\t// ensure that the id is in the valid range, returned by cpuid(0,0)\n\tmaxRange, _, _, _ := cpuid(0, 0)\n\tif id > maxRange {\n\t\tpanic(\"cannot query standard CPU flags\")\n\t}\n\treturn cpuidAsBitmap(id, 0)\n}\n\n// loadStandardRange load flags from the extended range, panics otherwise.\nfunc loadExtendedRange(id uint32) uint64 {\n\t// ensure that the id is in the valid range, returned by cpuid(0x80000000,0)\n\tmaxRange, _, _, _ := cpuid(0x80000000, 0)\n\tif id > maxRange {\n\t\tpanic(\"cannot query extended CPU flags\")\n\t}\n\treturn cpuidAsBitmap(id, 0)\n}\n\nfunc loadCpuFeatureFlags() CpuFeatureFlags {\n\treturn &cpuFeatureFlags{\n\t\tflags:      loadStandardRange(1),\n\t\textraFlags: loadExtendedRange(0x80000001),\n\t}\n}\n\n// Has implements the same method on the CpuFeatureFlags interface.\nfunc (f *cpuFeatureFlags) Has(cpuFeature CpuFeature) bool {\n\treturn (f.flags & uint64(cpuFeature)) != 0\n}\n\n// HasExtra implements the same method on the CpuFeatureFlags interface.\nfunc (f *cpuFeatureFlags) HasExtra(cpuFeature CpuFeature) bool {\n\treturn (f.extraFlags & uint64(cpuFeature)) != 0\n}\n\n// Raw implements the same method on the CpuFeatureFlags interface.\nfunc (f *cpuFeatureFlags) Raw() uint64 {\n\t// Below, we only set bits for the features we care about,\n\t// instead of setting all the unnecessary bits obtained from the\n\t// CPUID instruction.\n\tvar ret uint64\n\tif f.Has(CpuFeatureAmd64SSE3) {\n\t\tret = 1 << 0\n\t}\n\tif f.Has(CpuFeatureAmd64SSE4_1) {\n\t\tret |= 1 << 1\n\t}\n\tif f.Has(CpuFeatureAmd64SSE4_2) {\n\t\tret |= 1 << 2\n\t}\n\tif f.HasExtra(CpuExtraFeatureAmd64ABM) {\n\t\tret |= 1 << 3\n\t}\n\treturn ret\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/platform/cpuid_amd64.s",
    "content": "//go:build gc\n\n#include \"textflag.h\"\n\n// lifted from github.com/intel-go/cpuid and src/internal/cpu/cpu_x86.s\n\n// func cpuid(arg1, arg2 uint32) (eax, ebx, ecx, edx uint32)\nTEXT ·cpuid(SB), NOSPLIT, $0-24\n\tMOVL arg1+0(FP), AX\n\tMOVL arg2+4(FP), CX\n\tCPUID\n\tMOVL AX, eax+8(FP)\n\tMOVL BX, ebx+12(FP)\n\tMOVL CX, ecx+16(FP)\n\tMOVL DX, edx+20(FP)\n\tRET\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/platform/cpuid_arm64.go",
    "content": "//go:build gc\n\npackage platform\n\nimport (\n\t\"runtime\"\n\t\"sync\"\n)\n\n// CpuFeatures exposes the capabilities for this CPU, queried via the Has, HasExtra methods.\nvar CpuFeatures = sync.OnceValue(loadCpuFeatureFlags)\n\n// cpuFeatureFlags implements CpuFeatureFlags interface.\ntype cpuFeatureFlags struct {\n\tisar0 uint64\n\tisar1 uint64\n}\n\n// implemented in cpuid_arm64.s\nfunc getisar0() uint64\n\n// implemented in cpuid_arm64.s\nfunc getisar1() uint64\n\nfunc loadCpuFeatureFlags() CpuFeatureFlags {\n\tswitch runtime.GOOS {\n\tcase \"darwin\", \"windows\":\n\t\t// These OSes do not allow userland to read the instruction set attribute registers,\n\t\t// but basically require atomic instructions:\n\t\t// - \"darwin\" is the desktop version (mobile version is \"ios\"),\n\t\t//   and the M1 is a ARMv8.4.\n\t\t// - \"windows\" requires them from Windows 11, see page 12\n\t\t//   https://download.microsoft.com/download/7/8/8/788bf5ab-0751-4928-a22c-dffdc23c27f2/Minimum%20Hardware%20Requirements%20for%20Windows%2011.pdf\n\t\treturn &cpuFeatureFlags{\n\t\t\tisar0: uint64(CpuFeatureArm64Atomic),\n\t\t\tisar1: 0,\n\t\t}\n\tcase \"linux\", \"freebsd\":\n\t\t// These OSes allow userland to read the instruction set attribute registers,\n\t\t// which is otherwise restricted to EL0:\n\t\t// https://kernel.org/doc/Documentation/arm64/cpu-feature-registers.txt\n\t\t// See these for contents of the registers:\n\t\t// https://developer.arm.com/documentation/ddi0601/latest/AArch64-Registers/ID-AA64ISAR0-EL1--AArch64-Instruction-Set-Attribute-Register-0\n\t\t// https://developer.arm.com/documentation/ddi0601/latest/AArch64-Registers/ID-AA64ISAR1-EL1--AArch64-Instruction-Set-Attribute-Register-1\n\t\treturn &cpuFeatureFlags{\n\t\t\tisar0: getisar0(),\n\t\t\tisar1: getisar1(),\n\t\t}\n\tdefault:\n\t\treturn &cpuFeatureFlags{}\n\t}\n}\n\n// Has implements the same method on the CpuFeatureFlags interface.\nfunc (f *cpuFeatureFlags) Has(cpuFeature CpuFeature) bool {\n\treturn (f.isar0 & uint64(cpuFeature)) != 0\n}\n\n// HasExtra implements the same method on the CpuFeatureFlags interface.\nfunc (f *cpuFeatureFlags) HasExtra(cpuFeature CpuFeature) bool {\n\treturn (f.isar1 & uint64(cpuFeature)) != 0\n}\n\n// Raw implements the same method on the CpuFeatureFlags interface.\nfunc (f *cpuFeatureFlags) Raw() uint64 {\n\t// Below, we only set bits for the features we care about,\n\t// instead of setting all the unnecessary bits obtained from the\n\t// instruction set attribute registers.\n\tvar ret uint64\n\tif f.Has(CpuFeatureArm64Atomic) {\n\t\tret = 1 << 0\n\t}\n\treturn ret\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/platform/cpuid_arm64.s",
    "content": "//go:build gc\n\n#include \"textflag.h\"\n\n// lifted from github.com/golang/sys and cpu/cpu_arm64.s\n\n// func getisar0() uint64\nTEXT ·getisar0(SB), NOSPLIT, $0-8\n\t// get Instruction Set Attributes 0 into x0\n\t// mrs x0, ID_AA64ISAR0_EL1 = d5380600\n\tWORD $0xd5380600\n\tMOVD R0, ret+0(FP)\n\tRET\n\n// func getisar1() uint64\nTEXT ·getisar1(SB), NOSPLIT, $0-8\n\t// get Instruction Set Attributes 1 into x0\n\t// mrs x0, ID_AA64ISAR1_EL1 = d5380620\n\tWORD $0xd5380620\n\tMOVD R0, ret+0(FP)\n\tRET\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/platform/cpuid_unsupported.go",
    "content": "//go:build !(amd64 || arm64) || !gc\n\npackage platform\n\nvar CpuFeatures = func() CpuFeatureFlags { return &cpuFeatureFlags{} }\n\n// cpuFeatureFlags implements CpuFeatureFlags for unsupported platforms.\ntype cpuFeatureFlags struct{}\n\n// Has implements the same method on the CpuFeatureFlags interface.\nfunc (c *cpuFeatureFlags) Has(cpuFeature CpuFeature) bool { return false }\n\n// HasExtra implements the same method on the CpuFeatureFlags interface.\nfunc (c *cpuFeatureFlags) HasExtra(cpuFeature CpuFeature) bool { return false }\n\n// Raw implements the same method on the CpuFeatureFlags interface.\nfunc (c *cpuFeatureFlags) Raw() uint64 { return 0 }\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/platform/crypto.go",
    "content": "package platform\n\nimport (\n\t\"io\"\n\t\"math/rand\"\n)\n\n// seed is a fixed seed value for NewFakeRandSource.\n//\n// Trivia: While arbitrary, 42 was chosen as it is the \"Ultimate Answer\" in\n// the Douglas Adams novel \"The Hitchhiker's Guide to the Galaxy.\"\nconst seed = int64(42)\n\n// NewFakeRandSource returns a deterministic source of random values.\nfunc NewFakeRandSource() io.Reader {\n\treturn rand.New(rand.NewSource(seed))\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/platform/mmap_linux.go",
    "content": "package platform\n\nimport (\n\t\"math/bits\"\n\t\"os\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\t\"syscall\"\n)\n\nconst (\n\t// https://man7.org/linux/man-pages/man2/mmap.2.html\n\t__MAP_HUGE_SHIFT = 26\n\t__MAP_HUGETLB    = 0x40000\n)\n\nvar hugePagesConfigs []hugePagesConfig\n\ntype hugePagesConfig struct {\n\tsize int\n\tflag int\n}\n\nfunc (hpc *hugePagesConfig) match(size int) bool {\n\treturn (size & (hpc.size - 1)) == 0\n}\n\nfunc init() {\n\tdirents, err := os.ReadDir(\"/sys/kernel/mm/hugepages/\")\n\tif err != nil {\n\t\treturn\n\t}\n\n\tfor _, dirent := range dirents {\n\t\tname := dirent.Name()\n\t\tif !strings.HasPrefix(name, \"hugepages-\") {\n\t\t\tcontinue\n\t\t}\n\t\tif !strings.HasSuffix(name, \"kB\") {\n\t\t\tcontinue\n\t\t}\n\t\tn, err := strconv.ParseUint(name[10:len(name)-2], 10, 64)\n\t\tif err != nil {\n\t\t\tcontinue\n\t\t}\n\t\tif bits.OnesCount64(n) != 1 {\n\t\t\tcontinue\n\t\t}\n\t\tn *= 1024\n\t\thugePagesConfigs = append(hugePagesConfigs, hugePagesConfig{\n\t\t\tsize: int(n),\n\t\t\tflag: int(bits.TrailingZeros64(n)<<__MAP_HUGE_SHIFT) | __MAP_HUGETLB,\n\t\t})\n\t}\n\n\tsort.Slice(hugePagesConfigs, func(i, j int) bool {\n\t\treturn hugePagesConfigs[i].size > hugePagesConfigs[j].size\n\t})\n}\n\nfunc mmapCodeSegment(size int) ([]byte, error) {\n\tflag := syscall.MAP_ANON | syscall.MAP_PRIVATE\n\tprot := syscall.PROT_READ | syscall.PROT_WRITE\n\tif noopMprotectRX {\n\t\tprot = syscall.PROT_READ | syscall.PROT_WRITE | syscall.PROT_EXEC\n\t}\n\n\tfor _, hugePagesConfig := range hugePagesConfigs {\n\t\tif hugePagesConfig.match(size) {\n\t\t\tb, err := syscall.Mmap(-1, 0, size, prot, flag|hugePagesConfig.flag)\n\t\t\tif err != nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\treturn b, nil\n\t\t}\n\t}\n\n\treturn syscall.Mmap(-1, 0, size, prot, flag)\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/platform/mmap_other.go",
    "content": "// Separated from linux which has support for huge pages.\n//go:build darwin || freebsd || netbsd || dragonfly || solaris\n\npackage platform\n\nimport \"syscall\"\n\nfunc mmapCodeSegment(size int) ([]byte, error) {\n\tprot := syscall.PROT_READ | syscall.PROT_WRITE\n\tif noopMprotectRX {\n\t\tprot = syscall.PROT_READ | syscall.PROT_WRITE | syscall.PROT_EXEC\n\t}\n\treturn syscall.Mmap(\n\t\t-1,\n\t\t0,\n\t\tsize,\n\t\tprot,\n\t\t// Anonymous as this is not an actual file, but a memory,\n\t\t// Private as this is in-process memory region.\n\t\tsyscall.MAP_ANON|syscall.MAP_PRIVATE,\n\t)\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/platform/mmap_unix.go",
    "content": "//go:build (linux || darwin || freebsd || netbsd || dragonfly || solaris) && !tinygo\n\npackage platform\n\nimport \"syscall\"\n\nfunc munmapCodeSegment(code []byte) error {\n\treturn syscall.Munmap(code)\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/platform/mmap_unsupported.go",
    "content": "//go:build !(linux || darwin || freebsd || netbsd || dragonfly || solaris || windows) || tinygo\n\npackage platform\n\nimport (\n\t\"fmt\"\n\t\"runtime\"\n)\n\nvar errUnsupported = fmt.Errorf(\"mmap unsupported on GOOS=%s. Use interpreter instead.\", runtime.GOOS)\n\nfunc munmapCodeSegment(code []byte) error {\n\tpanic(errUnsupported)\n}\n\nfunc mmapCodeSegment(size int) ([]byte, error) {\n\tpanic(errUnsupported)\n}\n\nfunc MprotectRX(b []byte) (err error) {\n\tpanic(errUnsupported)\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/platform/mmap_windows.go",
    "content": "package platform\n\nimport (\n\t\"fmt\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar (\n\tkernel32           = syscall.NewLazyDLL(\"kernel32.dll\")\n\tprocVirtualAlloc   = kernel32.NewProc(\"VirtualAlloc\")\n\tprocVirtualProtect = kernel32.NewProc(\"VirtualProtect\")\n\tprocVirtualFree    = kernel32.NewProc(\"VirtualFree\")\n)\n\nconst (\n\twindows_MEM_COMMIT             uintptr = 0x00001000\n\twindows_MEM_RELEASE            uintptr = 0x00008000\n\twindows_PAGE_READWRITE         uintptr = 0x00000004\n\twindows_PAGE_EXECUTE_READ      uintptr = 0x00000020\n\twindows_PAGE_EXECUTE_READWRITE uintptr = 0x00000040\n)\n\nfunc munmapCodeSegment(code []byte) error {\n\treturn freeMemory(code)\n}\n\n// allocateMemory commits the memory region via the \"VirtualAlloc\" function.\n// See https://docs.microsoft.com/en-us/windows/win32/api/memoryapi/nf-memoryapi-virtualalloc\nfunc allocateMemory(size uintptr, protect uintptr) (uintptr, error) {\n\taddress := uintptr(0) // system determines where to allocate the region.\n\talloctype := windows_MEM_COMMIT\n\tif r, _, err := procVirtualAlloc.Call(address, size, alloctype, protect); r == 0 {\n\t\treturn 0, fmt.Errorf(\"compiler: VirtualAlloc error: %w\", ensureErr(err))\n\t} else {\n\t\treturn r, nil\n\t}\n}\n\n// freeMemory releases the memory region via the \"VirtualFree\" function.\n// See https://docs.microsoft.com/en-us/windows/win32/api/memoryapi/nf-memoryapi-virtualfree\nfunc freeMemory(code []byte) error {\n\taddress := unsafe.Pointer(&code[0])\n\tsize := uintptr(0) // size must be 0 because we're using MEM_RELEASE.\n\tfreetype := windows_MEM_RELEASE\n\tif r, _, err := procVirtualFree.Call(uintptr(address), size, freetype); r == 0 {\n\t\treturn fmt.Errorf(\"compiler: VirtualFree error: %w\", ensureErr(err))\n\t}\n\treturn nil\n}\n\nfunc virtualProtect(address, size, newprotect uintptr, oldprotect *uint32) error {\n\tif r, _, err := procVirtualProtect.Call(address, size, newprotect, uintptr(unsafe.Pointer(oldprotect))); r == 0 {\n\t\treturn fmt.Errorf(\"compiler: VirtualProtect error: %w\", ensureErr(err))\n\t}\n\treturn nil\n}\n\nfunc mmapCodeSegment(size int) ([]byte, error) {\n\tp, err := allocateMemory(uintptr(size), windows_PAGE_READWRITE)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn unsafe.Slice((*byte)(unsafe.Pointer(p)), size), nil\n}\n\nvar old = uint32(windows_PAGE_READWRITE)\n\nfunc MprotectRX(b []byte) (err error) {\n\terr = virtualProtect(uintptr(unsafe.Pointer(&b[0])), uintptr(len(b)), windows_PAGE_EXECUTE_READ, &old)\n\treturn\n}\n\n// ensureErr returns syscall.EINVAL when the input error is nil.\n//\n// We are supposed to use \"GetLastError\" which is more precise, but it is not safe to execute in goroutines. While\n// \"GetLastError\" is thread-local, goroutines are not pinned to threads.\n//\n// See https://docs.microsoft.com/en-us/windows/win32/api/errhandlingapi/nf-errhandlingapi-getlasterror\nfunc ensureErr(err error) error {\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn syscall.EINVAL\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/platform/mprotect_bsd.go",
    "content": "//go:build (freebsd || netbsd || dragonfly) && !tinygo\n\npackage platform\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nconst noopMprotectRX = false\n\n// MprotectRX is like syscall.Mprotect with RX permission, defined locally so that BSD compiles.\nfunc MprotectRX(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t}\n\tconst prot = syscall.PROT_READ | syscall.PROT_EXEC\n\t_, _, e1 := syscall.Syscall(syscall.SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = syscall.Errno(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/platform/mprotect_syscall.go",
    "content": "//go:build (linux || darwin) && !tinygo\n\npackage platform\n\nimport \"syscall\"\n\nconst noopMprotectRX = false\n\n// MprotectRX is like syscall.Mprotect with RX permission.\nfunc MprotectRX(b []byte) (err error) {\n\treturn syscall.Mprotect(b, syscall.PROT_READ|syscall.PROT_EXEC)\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/platform/mprotect_unsupported.go",
    "content": "//go:build solaris && !tinygo\n\npackage platform\n\nconst noopMprotectRX = true\n\nfunc MprotectRX(b []byte) error {\n\t// Assume we already called mmap with at least RX.\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/platform/path.go",
    "content": "//go:build !windows\n\npackage platform\n\n// ToPosixPath returns the input, as only windows might return backslashes.\nfunc ToPosixPath(in string) string { return in }\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/platform/path_windows.go",
    "content": "package platform\n\nimport \"strings\"\n\n// ToPosixPath returns the input, converting any backslashes to forward ones.\nfunc ToPosixPath(in string) string {\n\t// strings.Map only allocates on change, which is good enough especially as\n\t// path.Join uses forward slash even on windows.\n\treturn strings.Map(windowsToPosixSeparator, in)\n}\n\nfunc windowsToPosixSeparator(r rune) rune {\n\tif r == '\\\\' {\n\t\treturn '/'\n\t}\n\treturn r\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/platform/platform.go",
    "content": "// Package platform includes runtime-specific code needed for the compiler or otherwise.\n//\n// Note: This is a dependency-free alternative to depending on parts of Go's x/sys.\n// See /RATIONALE.md for more context.\npackage platform\n\nimport (\n\t\"runtime\"\n\n\t\"github.com/tetratelabs/wazero/api\"\n\t\"github.com/tetratelabs/wazero/experimental\"\n)\n\n// CompilerSupported includes constraints here and also the assembler.\nfunc CompilerSupported() bool {\n\treturn CompilerSupports(api.CoreFeaturesV2)\n}\n\nfunc CompilerSupports(features api.CoreFeatures) bool {\n\tswitch runtime.GOOS {\n\tcase \"linux\", \"darwin\", \"freebsd\", \"netbsd\", \"dragonfly\", \"windows\":\n\t\tif runtime.GOARCH == \"arm64\" {\n\t\t\tif features.IsEnabled(experimental.CoreFeaturesThreads) {\n\t\t\t\treturn CpuFeatures().Has(CpuFeatureArm64Atomic)\n\t\t\t}\n\t\t\treturn true\n\t\t}\n\t\tfallthrough\n\tcase \"solaris\", \"illumos\":\n\t\treturn runtime.GOARCH == \"amd64\" && CpuFeatures().Has(CpuFeatureAmd64SSE4_1)\n\tdefault:\n\t\treturn false\n\t}\n}\n\n// MmapCodeSegment copies the code into the executable region and returns the byte slice of the region.\n//\n// See https://man7.org/linux/man-pages/man2/mmap.2.html for mmap API and flags.\nfunc MmapCodeSegment(size int) ([]byte, error) {\n\tif size == 0 {\n\t\tpanic(\"BUG: MmapCodeSegment with zero length\")\n\t}\n\treturn mmapCodeSegment(size)\n}\n\n// MunmapCodeSegment unmaps the given memory region.\nfunc MunmapCodeSegment(code []byte) error {\n\tif len(code) == 0 {\n\t\tpanic(\"BUG: MunmapCodeSegment with zero length\")\n\t}\n\treturn munmapCodeSegment(code)\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/platform/time.go",
    "content": "package platform\n\nimport (\n\t\"sync/atomic\"\n\t\"time\"\n\n\t\"github.com/tetratelabs/wazero/sys\"\n)\n\nconst (\n\tms = int64(time.Millisecond)\n\t// FakeEpochNanos is midnight UTC 2022-01-01 and exposed for testing\n\tFakeEpochNanos = 1640995200000 * ms\n)\n\n// NewFakeWalltime implements sys.Walltime with FakeEpochNanos that increases by 1ms each reading.\n// See /RATIONALE.md\nfunc NewFakeWalltime() sys.Walltime {\n\t// AddInt64 returns the new value. Adjust so the first reading will be FakeEpochNanos\n\tt := FakeEpochNanos - ms\n\treturn func() (sec int64, nsec int32) {\n\t\twt := atomic.AddInt64(&t, ms)\n\t\treturn wt / 1e9, int32(wt % 1e9)\n\t}\n}\n\n// NewFakeNanotime implements sys.Nanotime that increases by 1ms each reading.\n// See /RATIONALE.md\nfunc NewFakeNanotime() sys.Nanotime {\n\t// AddInt64 returns the new value. Adjust so the first reading will be zero.\n\tt := int64(0) - ms\n\treturn func() int64 {\n\t\treturn atomic.AddInt64(&t, ms)\n\t}\n}\n\n// FakeNanosleep implements sys.Nanosleep by returning without sleeping.\nvar FakeNanosleep = sys.Nanosleep(func(int64) {})\n\n// FakeOsyield implements sys.Osyield by returning without yielding.\nvar FakeOsyield = sys.Osyield(func() {})\n\n// Walltime implements sys.Walltime with time.Now.\n//\n// Note: This is only notably less efficient than it could be is reading\n// runtime.walltime(). time.Now defensively reads nanotime also, just in case\n// time.Since is used. This doubles the performance impact. However, wall time\n// is likely to be read less frequently than Nanotime. Also, doubling the cost\n// matters less on fast platforms that can return both in <=100ns.\nfunc Walltime() (sec int64, nsec int32) {\n\tt := time.Now()\n\treturn t.Unix(), int32(t.Nanosecond())\n}\n\n// nanoBase uses time.Now to ensure a monotonic clock reading on all platforms\n// via time.Since.\nvar nanoBase = time.Now()\n\n// nanotimePortable implements sys.Nanotime with time.Since.\n//\n// Note: This is less efficient than it could be is reading runtime.nanotime(),\n// Just to do that requires CGO.\nfunc nanotimePortable() int64 {\n\treturn time.Since(nanoBase).Nanoseconds()\n}\n\n// Nanotime implements sys.Nanotime with runtime.nanotime() if CGO is available\n// and time.Since if not.\nfunc Nanotime() int64 {\n\treturn nanotime()\n}\n\n// Nanosleep implements sys.Nanosleep with time.Sleep.\nfunc Nanosleep(ns int64) {\n\ttime.Sleep(time.Duration(ns))\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/platform/time_cgo.go",
    "content": "//go:build cgo && !windows\n\npackage platform\n\nimport _ \"unsafe\" // for go:linkname\n\n// nanotime uses runtime.nanotime as it is available on all platforms and\n// benchmarks faster than using time.Since.\n//\n//go:linkname nanotime runtime.nanotime\nfunc nanotime() int64\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/platform/time_notcgo.go",
    "content": "//go:build !cgo && !windows\n\npackage platform\n\nfunc nanotime() int64 {\n\treturn nanotimePortable()\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/platform/time_windows.go",
    "content": "//go:build windows\n\npackage platform\n\nimport (\n\t\"math/bits\"\n\t\"time\"\n\t\"unsafe\"\n)\n\nvar (\n\t_QueryPerformanceCounter   = kernel32.NewProc(\"QueryPerformanceCounter\")\n\t_QueryPerformanceFrequency = kernel32.NewProc(\"QueryPerformanceFrequency\")\n)\n\nvar qpcfreq uint64\n\nfunc init() {\n\t_, _, _ = _QueryPerformanceFrequency.Call(uintptr(unsafe.Pointer(&qpcfreq)))\n}\n\n// On Windows, time.Time handled in time package cannot have the nanosecond precision.\n// The reason is that by default, it doesn't use QueryPerformanceCounter[1], but instead, use \"interrupt time\"\n// which doesn't support nanoseconds precision (though it is a monotonic) [2, 3, 4, 5].\n//\n// [1] https://learn.microsoft.com/en-us/windows/win32/api/profileapi/nf-profileapi-queryperformancecounter\n// [2] https://github.com/golang/go/blob/0cd309e12818f988693bf8e4d9f1453331dcf9f2/src/runtime/sys_windows_amd64.s#L297-L298\n// [3] https://github.com/golang/go/blob/0cd309e12818f988693bf8e4d9f1453331dcf9f2/src/runtime/os_windows.go#L549-L551\n// [4] https://github.com/golang/go/blob/master/src/runtime/time_windows.h#L7-L13\n// [5] http://web.archive.org/web/20210411000829/https://wrkhpi.wordpress.com/2007/08/09/getting-os-information-the-kuser_shared_data-structure/\n//\n// Therefore, on Windows, we directly invoke the syscall for QPC instead of time.Now or runtime.nanotime.\n// See https://github.com/golang/go/issues/31160 for example.\nfunc nanotime() int64 {\n\tvar counter uint64\n\t_, _, _ = _QueryPerformanceCounter.Call(uintptr(unsafe.Pointer(&counter)))\n\thi, lo := bits.Mul64(counter, uint64(time.Second))\n\tnanos, _ := bits.Div64(hi, lo, qpcfreq)\n\treturn int64(nanos)\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sock/sock.go",
    "content": "package sock\n\nimport (\n\t\"fmt\"\n\t\"net\"\n\n\t\"github.com/tetratelabs/wazero/experimental/sys\"\n)\n\n// TCPSock is a pseudo-file representing a TCP socket.\ntype TCPSock interface {\n\tsys.File\n\n\tAccept() (TCPConn, sys.Errno)\n}\n\n// TCPConn is a pseudo-file representing a TCP connection.\ntype TCPConn interface {\n\tsys.File\n\n\t// Recvfrom only supports the flag sysfs.MSG_PEEK\n\t// TODO: document this like sys.File with known sys.Errno\n\tRecvfrom(p []byte, flags int) (n int, errno sys.Errno)\n\n\t// TODO: document this like sys.File with known sys.Errno\n\tShutdown(how int) sys.Errno\n}\n\n// ConfigKey is a context.Context Value key. Its associated value should be a Config.\ntype ConfigKey struct{}\n\n// Config is an internal struct meant to implement\n// the interface in experimental/sock/Config.\ntype Config struct {\n\t// TCPAddresses is a slice of the configured host:port pairs.\n\tTCPAddresses []TCPAddress\n}\n\n// TCPAddress is a host:port pair to pre-open.\ntype TCPAddress struct {\n\t// Host is the host name for this listener.\n\tHost string\n\t// Port is the port number for this listener.\n\tPort int\n}\n\n// WithTCPListener implements the method of the same name in experimental/sock/Config.\n//\n// However, to avoid cyclic dependencies, this is returning the *Config in this scope.\n// The interface is implemented in experimental/sock/Config via delegation.\nfunc (c *Config) WithTCPListener(host string, port int) *Config {\n\tret := c.clone()\n\tret.TCPAddresses = append(ret.TCPAddresses, TCPAddress{host, port})\n\treturn &ret\n}\n\n// Makes a deep copy of this sockConfig.\nfunc (c *Config) clone() Config {\n\tret := *c\n\tret.TCPAddresses = make([]TCPAddress, 0, len(c.TCPAddresses))\n\tret.TCPAddresses = append(ret.TCPAddresses, c.TCPAddresses...)\n\treturn ret\n}\n\n// BuildTCPListeners build listeners from the current configuration.\nfunc (c *Config) BuildTCPListeners() (tcpListeners []*net.TCPListener, err error) {\n\tfor _, tcpAddr := range c.TCPAddresses {\n\t\tvar ln net.Listener\n\t\tln, err = net.Listen(\"tcp\", tcpAddr.String())\n\t\tif err != nil {\n\t\t\tbreak\n\t\t}\n\t\tif tcpln, ok := ln.(*net.TCPListener); ok {\n\t\t\ttcpListeners = append(tcpListeners, tcpln)\n\t\t}\n\t}\n\tif err != nil {\n\t\t// An error occurred, cleanup.\n\t\tfor _, l := range tcpListeners {\n\t\t\t_ = l.Close() // Ignore errors, we are already cleaning.\n\t\t}\n\t\ttcpListeners = nil\n\t}\n\treturn\n}\n\nfunc (t TCPAddress) String() string {\n\treturn fmt.Sprintf(\"%s:%d\", t.Host, t.Port)\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sock/sock_supported.go",
    "content": "//go:build !plan9 && !js && !tinygo\n\npackage sock\n\nimport \"syscall\"\n\nconst (\n\tSHUT_RD   = syscall.SHUT_RD\n\tSHUT_RDWR = syscall.SHUT_RDWR\n\tSHUT_WR   = syscall.SHUT_WR\n)\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sock/sock_unsupported.go",
    "content": "//go:build plan9 || js || tinygo\n\npackage sock\n\n// plan9/js doesn't declare these constants\nconst (\n\tSHUT_RD = 1 << iota\n\tSHUT_WR\n\tSHUT_RDWR = SHUT_RD | SHUT_WR\n)\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sys/fs.go",
    "content": "package sys\n\nimport (\n\t\"io\"\n\t\"io/fs\"\n\t\"net\"\n\n\t\"github.com/tetratelabs/wazero/experimental/sys\"\n\t\"github.com/tetratelabs/wazero/internal/descriptor\"\n\t\"github.com/tetratelabs/wazero/internal/fsapi\"\n\tsocketapi \"github.com/tetratelabs/wazero/internal/sock\"\n\t\"github.com/tetratelabs/wazero/internal/sysfs\"\n)\n\nconst (\n\tFdStdin int32 = iota\n\tFdStdout\n\tFdStderr\n\t// FdPreopen is the file descriptor of the first pre-opened directory.\n\t//\n\t// # Why file descriptor 3?\n\t//\n\t// While not specified, the most common WASI implementation, wasi-libc,\n\t// expects POSIX style file descriptor allocation, where the lowest\n\t// available number is used to open the next file. Since 1 and 2 are taken\n\t// by stdout and stderr, the next is 3.\n\t//   - https://github.com/WebAssembly/WASI/issues/122\n\t//   - https://pubs.opengroup.org/onlinepubs/9699919799/functions/V2_chap02.html#tag_15_14\n\t//   - https://github.com/WebAssembly/wasi-libc/blob/wasi-sdk-16/libc-bottom-half/sources/preopens.c#L215\n\tFdPreopen\n)\n\nconst modeDevice = fs.ModeDevice | 0o640\n\n// FileEntry maps a path to an open file in a file system.\ntype FileEntry struct {\n\t// Name is the name of the directory up to its pre-open, or the pre-open\n\t// name itself when IsPreopen.\n\t//\n\t// # Notes\n\t//\n\t//   - This can drift on rename.\n\t//   - This relates to the guest path, which is not the real file path\n\t//     except if the entire host filesystem was made available.\n\tName string\n\n\t// IsPreopen is a directory that is lazily opened.\n\tIsPreopen bool\n\n\t// FS is the filesystem associated with the pre-open.\n\tFS sys.FS\n\n\t// File is always non-nil.\n\tFile fsapi.File\n\n\t// direntCache is nil until DirentCache was called.\n\tdirentCache *DirentCache\n}\n\n// DirentCache gets or creates a DirentCache for this file or returns an error.\n//\n// # Errors\n//\n// A zero sys.Errno is success. The below are expected otherwise:\n//   - sys.ENOSYS: the implementation does not support this function.\n//   - sys.EBADF: the dir was closed or not readable.\n//   - sys.ENOTDIR: the file was not a directory.\n//\n// # Notes\n//\n//   - See /RATIONALE.md for design notes.\nfunc (f *FileEntry) DirentCache() (*DirentCache, sys.Errno) {\n\tif dir := f.direntCache; dir != nil {\n\t\treturn dir, 0\n\t}\n\n\t// Require the file to be a directory vs a late error on the same.\n\tif isDir, errno := f.File.IsDir(); errno != 0 {\n\t\treturn nil, errno\n\t} else if !isDir {\n\t\treturn nil, sys.ENOTDIR\n\t}\n\n\t// Generate the dotEntries only once.\n\tif dotEntries, errno := synthesizeDotEntries(f); errno != 0 {\n\t\treturn nil, errno\n\t} else {\n\t\tf.direntCache = &DirentCache{f: f.File, dotEntries: dotEntries}\n\t}\n\n\treturn f.direntCache, 0\n}\n\n// DirentCache is a caching abstraction of sys.File Readdir.\n//\n// This is special-cased for \"wasi_snapshot_preview1.fd_readdir\", and may be\n// unneeded, or require changes, to support preview1 or preview2.\n//   - The position of the dirents are serialized as `d_next`. For reasons\n//     described below, any may need to be re-read. This accepts any positions\n//     in the cache, rather than track the position of the last dirent.\n//   - dot entries (\".\" and \"..\") must be returned. See /RATIONALE.md for why.\n//   - An sys.Dirent Name is variable length, it could exceed memory size and\n//     need to be re-read.\n//   - Multiple dirents may be returned. It is more efficient to read from the\n//     underlying file in bulk vs one-at-a-time.\n//\n// The last results returned by Read are cached, but entries before that\n// position are not. This support re-reading entries that couldn't fit into\n// memory without accidentally caching all entries in a large directory. This\n// approach is sometimes called a sliding window.\ntype DirentCache struct {\n\t// f is the underlying file\n\tf sys.File\n\n\t// dotEntries are the \".\" and \"..\" entries added when the directory is\n\t// initialized.\n\tdotEntries []sys.Dirent\n\n\t// dirents are the potentially unread directory entries.\n\t//\n\t// Internal detail: nil is different from zero length. Zero length is an\n\t// exhausted directory (eof). nil means the re-read.\n\tdirents []sys.Dirent\n\n\t// countRead is the total count of dirents read since last rewind.\n\tcountRead uint64\n\n\t// eof is true when the underlying file is at EOF. This avoids re-reading\n\t// the directory when it is exhausted. Entires in an exhausted directory\n\t// are not visible until it is rewound via calling Read with `pos==0`.\n\teof bool\n}\n\n// synthesizeDotEntries generates a slice of the two elements \".\" and \"..\".\nfunc synthesizeDotEntries(f *FileEntry) ([]sys.Dirent, sys.Errno) {\n\tdotIno, errno := f.File.Ino()\n\tif errno != 0 {\n\t\treturn nil, errno\n\t}\n\tresult := [2]sys.Dirent{}\n\tresult[0] = sys.Dirent{Name: \".\", Ino: dotIno, Type: fs.ModeDir}\n\t// See /RATIONALE.md for why we don't attempt to get an inode for \"..\" and\n\t// why in wasi-libc this won't fan-out either.\n\tresult[1] = sys.Dirent{Name: \"..\", Ino: 0, Type: fs.ModeDir}\n\treturn result[:], 0\n}\n\n// exhaustedDirents avoids allocating empty slices.\nvar exhaustedDirents = [0]sys.Dirent{}\n\n// Read is similar to and returns the same errors as `Readdir` on sys.File.\n// The main difference is this caches entries returned, resulting in multiple\n// valid positions to read from.\n//\n// When zero, `pos` means rewind to the beginning of this directory. This\n// implies a rewind (Seek to zero on the underlying sys.File), unless the\n// initial entries are still cached.\n//\n// When non-zero, `pos` is the zero based index of all dirents returned since\n// last rewind. Only entries beginning at `pos` are cached for subsequent\n// calls. A non-zero `pos` before the cache returns sys.ENOENT for reasons\n// described on DirentCache documentation.\n//\n// Up to `n` entries are cached and returned. When `n` exceeds the cache, the\n// difference are read from the underlying sys.File via `Readdir`. EOF is\n// when `len(dirents)` returned are less than `n`.\nfunc (d *DirentCache) Read(pos uint64, n uint32) (dirents []sys.Dirent, errno sys.Errno) {\n\tswitch {\n\tcase pos > d.countRead: // farther than read or negative coerced to uint64.\n\t\treturn nil, sys.ENOENT\n\tcase pos == 0 && d.dirents != nil:\n\t\t// Rewind if we have already read entries. This allows us to see new\n\t\t// entries added after the directory was opened.\n\t\tif _, errno = d.f.Seek(0, io.SeekStart); errno != 0 {\n\t\t\treturn\n\t\t}\n\t\td.dirents = nil // dump cache\n\t\td.countRead = 0\n\t}\n\n\tif n == 0 {\n\t\treturn // special case no entries.\n\t}\n\n\tif d.dirents == nil {\n\t\t// Always populate dot entries, which makes min len(dirents) == 2.\n\t\td.dirents = d.dotEntries\n\t\td.countRead = 2\n\t\td.eof = false\n\n\t\tif countToRead := int(n - 2); countToRead <= 0 {\n\t\t\treturn\n\t\t} else if dirents, errno = d.f.Readdir(countToRead); errno != 0 {\n\t\t\treturn\n\t\t} else if countRead := len(dirents); countRead > 0 {\n\t\t\td.eof = countRead < countToRead\n\t\t\td.dirents = append(d.dotEntries, dirents...)\n\t\t\td.countRead += uint64(countRead)\n\t\t}\n\n\t\treturn d.cachedDirents(n), 0\n\t}\n\n\t// Reset our cache to the first entry being read.\n\tcacheStart := d.countRead - uint64(len(d.dirents))\n\tif pos < cacheStart {\n\t\t// We don't currently allow reads before our cache because Seek(0) is\n\t\t// the only portable way. Doing otherwise requires skipping, which we\n\t\t// won't do unless wasi-testsuite starts requiring it. Implementing\n\t\t// this would allow re-reading a large directory, so care would be\n\t\t// needed to not buffer the entire directory in memory while skipping.\n\t\terrno = sys.ENOENT\n\t\treturn\n\t} else if posInCache := pos - cacheStart; posInCache != 0 {\n\t\tif uint64(len(d.dirents)) == posInCache {\n\t\t\t// Avoid allocation re-slicing to zero length.\n\t\t\td.dirents = exhaustedDirents[:]\n\t\t} else {\n\t\t\td.dirents = d.dirents[posInCache:]\n\t\t}\n\t}\n\n\t// See if we need more entries.\n\tif countToRead := int(n) - len(d.dirents); countToRead > 0 && !d.eof {\n\t\t// Try to read more, which could fail.\n\t\tif dirents, errno = d.f.Readdir(countToRead); errno != 0 {\n\t\t\treturn\n\t\t}\n\n\t\t// Append the next read entries if we weren't at EOF.\n\t\tif countRead := len(dirents); countRead > 0 {\n\t\t\td.eof = countRead < countToRead\n\t\t\td.dirents = append(d.dirents, dirents...)\n\t\t\td.countRead += uint64(countRead)\n\t\t}\n\t}\n\n\treturn d.cachedDirents(n), 0\n}\n\n// cachedDirents returns up to `n` dirents from the cache.\nfunc (d *DirentCache) cachedDirents(n uint32) []sys.Dirent {\n\tdirentCount := uint32(len(d.dirents))\n\tswitch {\n\tcase direntCount == 0:\n\t\treturn nil\n\tcase direntCount > n:\n\t\treturn d.dirents[:n]\n\t}\n\treturn d.dirents\n}\n\ntype FSContext struct {\n\t// openedFiles is a map of file descriptor numbers (>=FdPreopen) to open files\n\t// (or directories) and defaults to empty.\n\t// TODO: This is unguarded, so not goroutine-safe!\n\topenedFiles FileTable\n}\n\n// FileTable is a specialization of the descriptor.Table type used to map file\n// descriptors to file entries.\ntype FileTable = descriptor.Table[int32, *FileEntry]\n\n// LookupFile returns a file if it is in the table.\nfunc (c *FSContext) LookupFile(fd int32) (*FileEntry, bool) {\n\treturn c.openedFiles.Lookup(fd)\n}\n\n// OpenFile opens the file into the table and returns its file descriptor.\n// The result must be closed by CloseFile or Close.\nfunc (c *FSContext) OpenFile(fs sys.FS, path string, flag sys.Oflag, perm fs.FileMode) (int32, sys.Errno) {\n\tif f, errno := fs.OpenFile(path, flag, perm); errno != 0 {\n\t\treturn 0, errno\n\t} else {\n\t\tfe := &FileEntry{FS: fs, File: fsapi.Adapt(f)}\n\t\tif path == \"/\" || path == \".\" {\n\t\t\tfe.Name = \"\"\n\t\t} else {\n\t\t\tfe.Name = path\n\t\t}\n\t\tif newFD, ok := c.openedFiles.Insert(fe); !ok {\n\t\t\treturn 0, sys.EBADF\n\t\t} else {\n\t\t\treturn newFD, 0\n\t\t}\n\t}\n}\n\n// Renumber assigns the file pointed by the descriptor `from` to `to`.\nfunc (c *FSContext) Renumber(from, to int32) sys.Errno {\n\tfromFile, ok := c.openedFiles.Lookup(from)\n\tif !ok || to < 0 {\n\t\treturn sys.EBADF\n\t} else if fromFile.IsPreopen {\n\t\treturn sys.ENOTSUP\n\t}\n\n\t// If toFile is already open, we close it to prevent windows lock issues.\n\t//\n\t// The doc is unclear and other implementations do nothing for already-opened To FDs.\n\t// https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#-fd_renumberfd-fd-to-fd---errno\n\t// https://github.com/bytecodealliance/wasmtime/blob/main/crates/wasi-common/src/snapshots/preview_1.rs#L531-L546\n\tif toFile, ok := c.openedFiles.Lookup(to); ok {\n\t\tif toFile.IsPreopen {\n\t\t\treturn sys.ENOTSUP\n\t\t}\n\t\t_ = toFile.File.Close()\n\t}\n\n\tc.openedFiles.Delete(from)\n\tif !c.openedFiles.InsertAt(fromFile, to) {\n\t\treturn sys.EBADF\n\t}\n\treturn 0\n}\n\n// SockAccept accepts a sock.TCPConn into the file table and returns its file\n// descriptor.\nfunc (c *FSContext) SockAccept(sockFD int32, nonblock bool) (int32, sys.Errno) {\n\tvar sock socketapi.TCPSock\n\tif e, ok := c.LookupFile(sockFD); !ok || !e.IsPreopen {\n\t\treturn 0, sys.EBADF // Not a preopen\n\t} else if sock, ok = e.File.(socketapi.TCPSock); !ok {\n\t\treturn 0, sys.EBADF // Not a sock\n\t}\n\n\tconn, errno := sock.Accept()\n\tif errno != 0 {\n\t\treturn 0, errno\n\t}\n\n\tfe := &FileEntry{File: fsapi.Adapt(conn)}\n\n\tif nonblock {\n\t\tif errno = fe.File.SetNonblock(true); errno != 0 {\n\t\t\t_ = conn.Close()\n\t\t\treturn 0, errno\n\t\t}\n\t}\n\n\tif newFD, ok := c.openedFiles.Insert(fe); !ok {\n\t\treturn 0, sys.EBADF\n\t} else {\n\t\treturn newFD, 0\n\t}\n}\n\n// CloseFile returns any error closing the existing file.\nfunc (c *FSContext) CloseFile(fd int32) (errno sys.Errno) {\n\tf, ok := c.openedFiles.Lookup(fd)\n\tif !ok {\n\t\treturn sys.EBADF\n\t}\n\tif errno = f.File.Close(); errno != 0 {\n\t\treturn errno\n\t}\n\tc.openedFiles.Delete(fd)\n\treturn errno\n}\n\n// Close implements io.Closer\nfunc (c *FSContext) Close() (err error) {\n\t// Close any files opened in this context\n\tc.openedFiles.Range(func(fd int32, entry *FileEntry) bool {\n\t\tif errno := entry.File.Close(); errno != 0 {\n\t\t\terr = errno // This means err returned == the last non-nil error.\n\t\t}\n\t\treturn true\n\t})\n\t// A closed FSContext cannot be reused so clear the state.\n\tc.openedFiles = FileTable{}\n\treturn\n}\n\n// InitFSContext initializes a FSContext with stdio streams and optional\n// pre-opened filesystems and TCP listeners.\nfunc (c *Context) InitFSContext(\n\tstdin io.Reader,\n\tstdout, stderr io.Writer,\n\tfs []sys.FS, guestPaths []string,\n\ttcpListeners []*net.TCPListener,\n) (err error) {\n\tinFile, err := stdinFileEntry(stdin)\n\tif err != nil {\n\t\treturn err\n\t}\n\tc.fsc.openedFiles.Insert(inFile)\n\toutWriter, err := stdioWriterFileEntry(\"stdout\", stdout)\n\tif err != nil {\n\t\treturn err\n\t}\n\tc.fsc.openedFiles.Insert(outWriter)\n\terrWriter, err := stdioWriterFileEntry(\"stderr\", stderr)\n\tif err != nil {\n\t\treturn err\n\t}\n\tc.fsc.openedFiles.Insert(errWriter)\n\n\tfor i, f := range fs {\n\t\tguestPath := guestPaths[i]\n\n\t\tif StripPrefixesAndTrailingSlash(guestPath) == \"\" {\n\t\t\t// Default to bind to '/' when guestPath is effectively empty.\n\t\t\tguestPath = \"/\"\n\t\t}\n\t\tc.fsc.openedFiles.Insert(&FileEntry{\n\t\t\tFS:        f,\n\t\t\tName:      guestPath,\n\t\t\tIsPreopen: true,\n\t\t\tFile:      &lazyDir{fs: f},\n\t\t})\n\t}\n\n\tfor _, tl := range tcpListeners {\n\t\tc.fsc.openedFiles.Insert(&FileEntry{IsPreopen: true, File: fsapi.Adapt(sysfs.NewTCPListenerFile(tl))})\n\t}\n\treturn nil\n}\n\n// StripPrefixesAndTrailingSlash skips any leading \"./\" or \"/\" such that the\n// result index begins with another string. A result of \".\" coerces to the\n// empty string \"\" because the current directory is handled by the guest.\n//\n// Results are the offset/len pair which is an optimization to avoid re-slicing\n// overhead, as this function is called for every path operation.\n//\n// Note: Relative paths should be handled by the guest, as that's what knows\n// what the current directory is. However, paths that escape the current\n// directory e.g. \"../..\" have been found in `tinygo test` and this\n// implementation takes care to avoid it.\nfunc StripPrefixesAndTrailingSlash(path string) string {\n\t// strip trailing slashes\n\tpathLen := len(path)\n\tfor ; pathLen > 0 && path[pathLen-1] == '/'; pathLen-- {\n\t}\n\n\tpathI := 0\nloop:\n\tfor pathI < pathLen {\n\t\tswitch path[pathI] {\n\t\tcase '/':\n\t\t\tpathI++\n\t\tcase '.':\n\t\t\tnextI := pathI + 1\n\t\t\tif nextI < pathLen && path[nextI] == '/' {\n\t\t\t\tpathI = nextI + 1\n\t\t\t} else if nextI == pathLen {\n\t\t\t\tpathI = nextI\n\t\t\t} else {\n\t\t\t\tbreak loop\n\t\t\t}\n\t\tdefault:\n\t\t\tbreak loop\n\t\t}\n\t}\n\treturn path[pathI:pathLen]\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sys/lazy.go",
    "content": "package sys\n\nimport (\n\texperimentalsys \"github.com/tetratelabs/wazero/experimental/sys\"\n\t\"github.com/tetratelabs/wazero/internal/fsapi\"\n\t\"github.com/tetratelabs/wazero/sys\"\n)\n\n// compile-time check to ensure lazyDir implements sys.File.\nvar _ experimentalsys.File = (*lazyDir)(nil)\n\ntype lazyDir struct {\n\texperimentalsys.DirFile\n\n\tfs experimentalsys.FS\n\tf  experimentalsys.File\n}\n\n// Dev implements the same method as documented on sys.File\nfunc (d *lazyDir) Dev() (uint64, experimentalsys.Errno) {\n\tif f, ok := d.file(); !ok {\n\t\treturn 0, experimentalsys.EBADF\n\t} else {\n\t\treturn f.Dev()\n\t}\n}\n\n// Ino implements the same method as documented on sys.File\nfunc (d *lazyDir) Ino() (sys.Inode, experimentalsys.Errno) {\n\tif f, ok := d.file(); !ok {\n\t\treturn 0, experimentalsys.EBADF\n\t} else {\n\t\treturn f.Ino()\n\t}\n}\n\n// IsDir implements the same method as documented on sys.File\nfunc (d *lazyDir) IsDir() (bool, experimentalsys.Errno) {\n\t// Note: we don't return a constant because we don't know if this is really\n\t// backed by a dir, until the first call.\n\tif f, ok := d.file(); !ok {\n\t\treturn false, experimentalsys.EBADF\n\t} else {\n\t\treturn f.IsDir()\n\t}\n}\n\n// IsAppend implements the same method as documented on sys.File\nfunc (d *lazyDir) IsAppend() bool {\n\treturn false\n}\n\n// SetAppend implements the same method as documented on sys.File\nfunc (d *lazyDir) SetAppend(bool) experimentalsys.Errno {\n\treturn experimentalsys.EISDIR\n}\n\n// Seek implements the same method as documented on sys.File\nfunc (d *lazyDir) Seek(offset int64, whence int) (newOffset int64, errno experimentalsys.Errno) {\n\tif f, ok := d.file(); !ok {\n\t\treturn 0, experimentalsys.EBADF\n\t} else {\n\t\treturn f.Seek(offset, whence)\n\t}\n}\n\n// Stat implements the same method as documented on sys.File\nfunc (d *lazyDir) Stat() (sys.Stat_t, experimentalsys.Errno) {\n\tif f, ok := d.file(); !ok {\n\t\treturn sys.Stat_t{}, experimentalsys.EBADF\n\t} else {\n\t\treturn f.Stat()\n\t}\n}\n\n// Readdir implements the same method as documented on sys.File\nfunc (d *lazyDir) Readdir(n int) (dirents []experimentalsys.Dirent, errno experimentalsys.Errno) {\n\tif f, ok := d.file(); !ok {\n\t\treturn nil, experimentalsys.EBADF\n\t} else {\n\t\treturn f.Readdir(n)\n\t}\n}\n\n// Sync implements the same method as documented on sys.File\nfunc (d *lazyDir) Sync() experimentalsys.Errno {\n\tif f, ok := d.file(); !ok {\n\t\treturn experimentalsys.EBADF\n\t} else {\n\t\treturn f.Sync()\n\t}\n}\n\n// Datasync implements the same method as documented on sys.File\nfunc (d *lazyDir) Datasync() experimentalsys.Errno {\n\tif f, ok := d.file(); !ok {\n\t\treturn experimentalsys.EBADF\n\t} else {\n\t\treturn f.Datasync()\n\t}\n}\n\n// Utimens implements the same method as documented on sys.File\nfunc (d *lazyDir) Utimens(atim, mtim int64) experimentalsys.Errno {\n\tif f, ok := d.file(); !ok {\n\t\treturn experimentalsys.EBADF\n\t} else {\n\t\treturn f.Utimens(atim, mtim)\n\t}\n}\n\n// file returns the underlying file or false if it doesn't exist.\nfunc (d *lazyDir) file() (experimentalsys.File, bool) {\n\tif f := d.f; d.f != nil {\n\t\treturn f, true\n\t}\n\tvar errno experimentalsys.Errno\n\td.f, errno = d.fs.OpenFile(\".\", experimentalsys.O_RDONLY, 0)\n\tswitch errno {\n\tcase 0:\n\t\treturn d.f, true\n\tcase experimentalsys.ENOENT:\n\t\treturn nil, false\n\tdefault:\n\t\tpanic(errno) // unexpected\n\t}\n}\n\n// Close implements fs.File\nfunc (d *lazyDir) Close() experimentalsys.Errno {\n\tf := d.f\n\tif f == nil {\n\t\treturn 0 // never opened\n\t}\n\treturn f.Close()\n}\n\n// IsNonblock implements the same method as documented on fsapi.File\nfunc (d *lazyDir) IsNonblock() bool {\n\treturn false\n}\n\n// SetNonblock implements the same method as documented on fsapi.File\nfunc (d *lazyDir) SetNonblock(bool) experimentalsys.Errno {\n\treturn experimentalsys.EISDIR\n}\n\n// Poll implements the same method as documented on fsapi.File\nfunc (d *lazyDir) Poll(fsapi.Pflag, int32) (ready bool, errno experimentalsys.Errno) {\n\treturn false, experimentalsys.ENOSYS\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sys/stdio.go",
    "content": "package sys\n\nimport (\n\t\"io\"\n\t\"os\"\n\n\texperimentalsys \"github.com/tetratelabs/wazero/experimental/sys\"\n\t\"github.com/tetratelabs/wazero/internal/fsapi\"\n\t\"github.com/tetratelabs/wazero/internal/sysfs\"\n\t\"github.com/tetratelabs/wazero/sys\"\n)\n\n// StdinFile is a fs.ModeDevice file for use implementing FdStdin.\n// This is safer than reading from os.DevNull as it can never overrun\n// operating system file descriptors.\ntype StdinFile struct {\n\tnoopStdinFile\n\tio.Reader\n}\n\n// Read implements the same method as documented on sys.File\nfunc (f *StdinFile) Read(buf []byte) (int, experimentalsys.Errno) {\n\tn, err := f.Reader.Read(buf)\n\treturn n, experimentalsys.UnwrapOSError(err)\n}\n\ntype writerFile struct {\n\tnoopStdoutFile\n\n\tw io.Writer\n}\n\n// Write implements the same method as documented on sys.File\nfunc (f *writerFile) Write(buf []byte) (int, experimentalsys.Errno) {\n\tn, err := f.w.Write(buf)\n\treturn n, experimentalsys.UnwrapOSError(err)\n}\n\n// noopStdinFile is a fs.ModeDevice file for use implementing FdStdin. This is\n// safer than reading from os.DevNull as it can never overrun operating system\n// file descriptors.\ntype noopStdinFile struct {\n\tnoopStdioFile\n}\n\n// Read implements the same method as documented on sys.File\nfunc (noopStdinFile) Read([]byte) (int, experimentalsys.Errno) {\n\treturn 0, 0 // Always EOF\n}\n\n// Poll implements the same method as documented on fsapi.File\nfunc (noopStdinFile) Poll(flag fsapi.Pflag, timeoutMillis int32) (ready bool, errno experimentalsys.Errno) {\n\tif flag != fsapi.POLLIN {\n\t\treturn false, experimentalsys.ENOTSUP\n\t}\n\treturn true, 0 // always ready to read nothing\n}\n\n// noopStdoutFile is a fs.ModeDevice file for use implementing FdStdout and\n// FdStderr.\ntype noopStdoutFile struct {\n\tnoopStdioFile\n}\n\n// Write implements the same method as documented on sys.File\nfunc (noopStdoutFile) Write(buf []byte) (int, experimentalsys.Errno) {\n\treturn len(buf), 0 // same as io.Discard\n}\n\ntype noopStdioFile struct {\n\texperimentalsys.UnimplementedFile\n}\n\n// Stat implements the same method as documented on sys.File\nfunc (noopStdioFile) Stat() (sys.Stat_t, experimentalsys.Errno) {\n\treturn sys.Stat_t{Mode: modeDevice, Nlink: 1}, 0\n}\n\n// IsDir implements the same method as documented on sys.File\nfunc (noopStdioFile) IsDir() (bool, experimentalsys.Errno) {\n\treturn false, 0\n}\n\n// Close implements the same method as documented on sys.File\nfunc (noopStdioFile) Close() (errno experimentalsys.Errno) { return }\n\n// IsNonblock implements the same method as documented on fsapi.File\nfunc (noopStdioFile) IsNonblock() bool {\n\treturn false\n}\n\n// SetNonblock implements the same method as documented on fsapi.File\nfunc (noopStdioFile) SetNonblock(bool) experimentalsys.Errno {\n\treturn experimentalsys.ENOSYS\n}\n\n// Poll implements the same method as documented on fsapi.File\nfunc (noopStdioFile) Poll(fsapi.Pflag, int32) (ready bool, errno experimentalsys.Errno) {\n\treturn false, experimentalsys.ENOSYS\n}\n\nfunc stdinFileEntry(r io.Reader) (*FileEntry, error) {\n\tif r == nil {\n\t\treturn &FileEntry{Name: \"stdin\", IsPreopen: true, File: &noopStdinFile{}}, nil\n\t} else if f, ok := r.(*os.File); ok {\n\t\tif f, err := sysfs.NewStdioFile(true, f); err != nil {\n\t\t\treturn nil, err\n\t\t} else {\n\t\t\treturn &FileEntry{Name: \"stdin\", IsPreopen: true, File: f}, nil\n\t\t}\n\t} else {\n\t\treturn &FileEntry{Name: \"stdin\", IsPreopen: true, File: &StdinFile{Reader: r}}, nil\n\t}\n}\n\nfunc stdioWriterFileEntry(name string, w io.Writer) (*FileEntry, error) {\n\tif w == nil {\n\t\treturn &FileEntry{Name: name, IsPreopen: true, File: &noopStdoutFile{}}, nil\n\t} else if f, ok := w.(*os.File); ok {\n\t\tif f, err := sysfs.NewStdioFile(false, f); err != nil {\n\t\t\treturn nil, err\n\t\t} else {\n\t\t\treturn &FileEntry{Name: name, IsPreopen: true, File: f}, nil\n\t\t}\n\t} else {\n\t\treturn &FileEntry{Name: name, IsPreopen: true, File: &writerFile{w: w}}, nil\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sys/sys.go",
    "content": "package sys\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"net\"\n\t\"time\"\n\n\texperimentalsys \"github.com/tetratelabs/wazero/experimental/sys\"\n\t\"github.com/tetratelabs/wazero/internal/platform\"\n\t\"github.com/tetratelabs/wazero/sys\"\n)\n\n// Context holds module-scoped system resources currently only supported by\n// built-in host functions.\ntype Context struct {\n\targs, environ         [][]byte\n\targsSize, environSize uint32\n\n\twalltime           sys.Walltime\n\twalltimeResolution sys.ClockResolution\n\tnanotime           sys.Nanotime\n\tnanotimeResolution sys.ClockResolution\n\tnanosleep          sys.Nanosleep\n\tosyield            sys.Osyield\n\trandSource         io.Reader\n\tfsc                FSContext\n}\n\n// Args is like os.Args and defaults to nil.\n//\n// Note: The count will never be more than math.MaxUint32.\n// See wazero.ModuleConfig WithArgs\nfunc (c *Context) Args() [][]byte {\n\treturn c.args\n}\n\n// ArgsSize is the size to encode Args as Null-terminated strings.\n//\n// Note: To get the size without null-terminators, subtract the length of Args from this value.\n// See wazero.ModuleConfig WithArgs\n// See https://en.wikipedia.org/wiki/Null-terminated_string\nfunc (c *Context) ArgsSize() uint32 {\n\treturn c.argsSize\n}\n\n// Environ are \"key=value\" entries like os.Environ and default to nil.\n//\n// Note: The count will never be more than math.MaxUint32.\n// See wazero.ModuleConfig WithEnv\nfunc (c *Context) Environ() [][]byte {\n\treturn c.environ\n}\n\n// EnvironSize is the size to encode Environ as Null-terminated strings.\n//\n// Note: To get the size without null-terminators, subtract the length of Environ from this value.\n// See wazero.ModuleConfig WithEnv\n// See https://en.wikipedia.org/wiki/Null-terminated_string\nfunc (c *Context) EnvironSize() uint32 {\n\treturn c.environSize\n}\n\n// Walltime implements platform.Walltime.\nfunc (c *Context) Walltime() (sec int64, nsec int32) {\n\treturn c.walltime()\n}\n\n// WalltimeNanos returns platform.Walltime as epoch nanoseconds.\nfunc (c *Context) WalltimeNanos() int64 {\n\tsec, nsec := c.Walltime()\n\treturn (sec * time.Second.Nanoseconds()) + int64(nsec)\n}\n\n// WalltimeResolution returns resolution of Walltime.\nfunc (c *Context) WalltimeResolution() sys.ClockResolution {\n\treturn c.walltimeResolution\n}\n\n// Nanotime implements sys.Nanotime.\nfunc (c *Context) Nanotime() int64 {\n\treturn c.nanotime()\n}\n\n// NanotimeResolution returns resolution of Nanotime.\nfunc (c *Context) NanotimeResolution() sys.ClockResolution {\n\treturn c.nanotimeResolution\n}\n\n// Nanosleep implements sys.Nanosleep.\nfunc (c *Context) Nanosleep(ns int64) {\n\tc.nanosleep(ns)\n}\n\n// Osyield implements sys.Osyield.\nfunc (c *Context) Osyield() {\n\tc.osyield()\n}\n\n// FS returns the possibly empty (UnimplementedFS) file system context.\nfunc (c *Context) FS() *FSContext {\n\treturn &c.fsc\n}\n\n// RandSource is a source of random bytes and defaults to a deterministic source.\n// see wazero.ModuleConfig WithRandSource\nfunc (c *Context) RandSource() io.Reader {\n\treturn c.randSource\n}\n\n// DefaultContext returns Context with no values set except a possible nil\n// sys.FS.\n//\n// Note: This is only used for testing.\nfunc DefaultContext(fs experimentalsys.FS) *Context {\n\tif sysCtx, err := NewContext(0, nil, nil, nil, nil, nil, nil, nil, 0, nil, 0, nil, nil, []experimentalsys.FS{fs}, []string{\"\"}, nil); err != nil {\n\t\tpanic(fmt.Errorf(\"BUG: DefaultContext should never error: %w\", err))\n\t} else {\n\t\treturn sysCtx\n\t}\n}\n\n// NewContext is a factory function which helps avoid needing to know defaults or exporting all fields.\n// Note: max is exposed for testing. max is only used for env/args validation.\nfunc NewContext(\n\tmax uint32,\n\targs, environ [][]byte,\n\tstdin io.Reader,\n\tstdout, stderr io.Writer,\n\trandSource io.Reader,\n\twalltime sys.Walltime,\n\twalltimeResolution sys.ClockResolution,\n\tnanotime sys.Nanotime,\n\tnanotimeResolution sys.ClockResolution,\n\tnanosleep sys.Nanosleep,\n\tosyield sys.Osyield,\n\tfs []experimentalsys.FS, guestPaths []string,\n\ttcpListeners []*net.TCPListener,\n) (sysCtx *Context, err error) {\n\tsysCtx = &Context{args: args, environ: environ}\n\n\tif sysCtx.argsSize, err = nullTerminatedByteCount(max, args); err != nil {\n\t\treturn nil, fmt.Errorf(\"args invalid: %w\", err)\n\t}\n\n\tif sysCtx.environSize, err = nullTerminatedByteCount(max, environ); err != nil {\n\t\treturn nil, fmt.Errorf(\"environ invalid: %w\", err)\n\t}\n\n\tif randSource == nil {\n\t\tsysCtx.randSource = platform.NewFakeRandSource()\n\t} else {\n\t\tsysCtx.randSource = randSource\n\t}\n\n\tif walltime != nil {\n\t\tif clockResolutionInvalid(walltimeResolution) {\n\t\t\treturn nil, fmt.Errorf(\"invalid Walltime resolution: %d\", walltimeResolution)\n\t\t}\n\t\tsysCtx.walltime = walltime\n\t\tsysCtx.walltimeResolution = walltimeResolution\n\t} else {\n\t\tsysCtx.walltime = platform.NewFakeWalltime()\n\t\tsysCtx.walltimeResolution = sys.ClockResolution(time.Microsecond.Nanoseconds())\n\t}\n\n\tif nanotime != nil {\n\t\tif clockResolutionInvalid(nanotimeResolution) {\n\t\t\treturn nil, fmt.Errorf(\"invalid Nanotime resolution: %d\", nanotimeResolution)\n\t\t}\n\t\tsysCtx.nanotime = nanotime\n\t\tsysCtx.nanotimeResolution = nanotimeResolution\n\t} else {\n\t\tsysCtx.nanotime = platform.NewFakeNanotime()\n\t\tsysCtx.nanotimeResolution = sys.ClockResolution(time.Nanosecond)\n\t}\n\n\tif nanosleep != nil {\n\t\tsysCtx.nanosleep = nanosleep\n\t} else {\n\t\tsysCtx.nanosleep = platform.FakeNanosleep\n\t}\n\n\tif osyield != nil {\n\t\tsysCtx.osyield = osyield\n\t} else {\n\t\tsysCtx.osyield = platform.FakeOsyield\n\t}\n\n\terr = sysCtx.InitFSContext(stdin, stdout, stderr, fs, guestPaths, tcpListeners)\n\n\treturn\n}\n\n// clockResolutionInvalid returns true if the value stored isn't reasonable.\nfunc clockResolutionInvalid(resolution sys.ClockResolution) bool {\n\treturn resolution < 1 || resolution > sys.ClockResolution(time.Hour.Nanoseconds())\n}\n\n// nullTerminatedByteCount ensures the count or Nul-terminated length of the elements doesn't exceed max, and that no\n// element includes the nul character.\nfunc nullTerminatedByteCount(max uint32, elements [][]byte) (uint32, error) {\n\tcount := uint32(len(elements))\n\tif count > max {\n\t\treturn 0, errors.New(\"exceeds maximum count\")\n\t}\n\n\t// The buffer size is the total size including null terminators. The null terminator count == value count, sum\n\t// count with each value length. This works because in Go, the length of a string is the same as its byte count.\n\tbufSize, maxSize := uint64(count), uint64(max) // uint64 to allow summing without overflow\n\tfor _, e := range elements {\n\t\t// As this is null-terminated, We have to validate there are no null characters in the string.\n\t\tfor _, c := range e {\n\t\t\tif c == 0 {\n\t\t\t\treturn 0, errors.New(\"contains NUL character\")\n\t\t\t}\n\t\t}\n\n\t\tnextSize := bufSize + uint64(len(e))\n\t\tif nextSize > maxSize {\n\t\t\treturn 0, errors.New(\"exceeds maximum size\")\n\t\t}\n\t\tbufSize = nextSize\n\n\t}\n\treturn uint32(bufSize), nil\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/adapter.go",
    "content": "package sysfs\n\nimport (\n\t\"fmt\"\n\t\"io/fs\"\n\t\"path\"\n\n\texperimentalsys \"github.com/tetratelabs/wazero/experimental/sys\"\n\t\"github.com/tetratelabs/wazero/sys\"\n)\n\ntype AdaptFS struct {\n\tFS fs.FS\n}\n\n// String implements fmt.Stringer\nfunc (a *AdaptFS) String() string {\n\treturn fmt.Sprintf(\"%v\", a.FS)\n}\n\n// OpenFile implements the same method as documented on sys.FS\nfunc (a *AdaptFS) OpenFile(path string, flag experimentalsys.Oflag, perm fs.FileMode) (experimentalsys.File, experimentalsys.Errno) {\n\treturn OpenFSFile(a.FS, cleanPath(path), flag, perm)\n}\n\n// Lstat implements the same method as documented on sys.FS\nfunc (a *AdaptFS) Lstat(path string) (sys.Stat_t, experimentalsys.Errno) {\n\t// At this time, we make the assumption sys.FS instances do not support\n\t// symbolic links, therefore Lstat is the same as Stat. This is obviously\n\t// not true, but until FS.FS has a solid story for how to handle symlinks,\n\t// we are better off not making a decision that would be difficult to\n\t// revert later on.\n\t//\n\t// For further discussions on the topic, see:\n\t// https://github.com/golang/go/issues/49580\n\treturn a.Stat(path)\n}\n\n// Stat implements the same method as documented on sys.FS\nfunc (a *AdaptFS) Stat(path string) (sys.Stat_t, experimentalsys.Errno) {\n\tf, errno := a.OpenFile(path, experimentalsys.O_RDONLY, 0)\n\tif errno != 0 {\n\t\treturn sys.Stat_t{}, errno\n\t}\n\tdefer f.Close()\n\treturn f.Stat()\n}\n\n// Readlink implements the same method as documented on sys.FS\nfunc (a *AdaptFS) Readlink(string) (string, experimentalsys.Errno) {\n\treturn \"\", experimentalsys.ENOSYS\n}\n\n// Mkdir implements the same method as documented on sys.FS\nfunc (a *AdaptFS) Mkdir(string, fs.FileMode) experimentalsys.Errno {\n\treturn experimentalsys.ENOSYS\n}\n\n// Chmod implements the same method as documented on sys.FS\nfunc (a *AdaptFS) Chmod(string, fs.FileMode) experimentalsys.Errno {\n\treturn experimentalsys.ENOSYS\n}\n\n// Rename implements the same method as documented on sys.FS\nfunc (a *AdaptFS) Rename(string, string) experimentalsys.Errno {\n\treturn experimentalsys.ENOSYS\n}\n\n// Rmdir implements the same method as documented on sys.FS\nfunc (a *AdaptFS) Rmdir(string) experimentalsys.Errno {\n\treturn experimentalsys.ENOSYS\n}\n\n// Link implements the same method as documented on sys.FS\nfunc (a *AdaptFS) Link(string, string) experimentalsys.Errno {\n\treturn experimentalsys.ENOSYS\n}\n\n// Symlink implements the same method as documented on sys.FS\nfunc (a *AdaptFS) Symlink(string, string) experimentalsys.Errno {\n\treturn experimentalsys.ENOSYS\n}\n\n// Unlink implements the same method as documented on sys.FS\nfunc (a *AdaptFS) Unlink(string) experimentalsys.Errno {\n\treturn experimentalsys.ENOSYS\n}\n\n// Utimens implements the same method as documented on sys.FS\nfunc (a *AdaptFS) Utimens(string, int64, int64) experimentalsys.Errno {\n\treturn experimentalsys.ENOSYS\n}\n\nfunc cleanPath(name string) string {\n\tif len(name) == 0 {\n\t\treturn name\n\t}\n\t// fs.ValidFile cannot be rooted (start with '/')\n\tcleaned := name\n\tif name[0] == '/' {\n\t\tcleaned = name[1:]\n\t}\n\tcleaned = path.Clean(cleaned) // e.g. \"sub/.\" -> \"sub\"\n\treturn cleaned\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/datasync_linux.go",
    "content": "//go:build linux && !tinygo\n\npackage sysfs\n\nimport (\n\t\"os\"\n\t\"syscall\"\n\n\t\"github.com/tetratelabs/wazero/experimental/sys\"\n)\n\nfunc datasync(f *os.File) sys.Errno {\n\treturn sys.UnwrapOSError(syscall.Fdatasync(int(f.Fd())))\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/datasync_tinygo.go",
    "content": "//go:build tinygo\n\npackage sysfs\n\nimport (\n\t\"os\"\n\n\t\"github.com/tetratelabs/wazero/experimental/sys\"\n)\n\nfunc datasync(f *os.File) sys.Errno {\n\treturn sys.ENOSYS\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/datasync_unsupported.go",
    "content": "//go:build !linux\n\npackage sysfs\n\nimport (\n\t\"os\"\n\n\t\"github.com/tetratelabs/wazero/experimental/sys\"\n)\n\nfunc datasync(f *os.File) sys.Errno {\n\t// Attempt to sync everything, even if we only need to sync the data.\n\treturn fsync(f)\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/dir.go",
    "content": "package sysfs\n\nimport (\n\t\"io\"\n\n\t\"github.com/tetratelabs/wazero/experimental/sys\"\n)\n\nfunc adjustReaddirErr(f sys.File, isClosed bool, err error) sys.Errno {\n\tif err == io.EOF {\n\t\treturn 0 // e.g. Readdir on darwin returns io.EOF, but linux doesn't.\n\t} else if errno := sys.UnwrapOSError(err); errno != 0 {\n\t\terrno = dirError(f, isClosed, errno)\n\t\t// Comply with errors allowed on sys.File Readdir\n\t\tswitch errno {\n\t\tcase sys.EINVAL: // os.File Readdir can return this\n\t\t\treturn sys.EBADF\n\t\tcase sys.ENOTDIR: // dirError can return this\n\t\t\treturn sys.EBADF\n\t\t}\n\t\treturn errno\n\t}\n\treturn 0\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/dirfs.go",
    "content": "package sysfs\n\nimport (\n\t\"io/fs\"\n\t\"os\"\n\n\texperimentalsys \"github.com/tetratelabs/wazero/experimental/sys\"\n\t\"github.com/tetratelabs/wazero/internal/platform\"\n\t\"github.com/tetratelabs/wazero/sys\"\n)\n\nfunc DirFS(dir string) experimentalsys.FS {\n\treturn &dirFS{\n\t\tdir:        dir,\n\t\tcleanedDir: ensureTrailingPathSeparator(dir),\n\t}\n}\n\nfunc ensureTrailingPathSeparator(dir string) string {\n\tif !os.IsPathSeparator(dir[len(dir)-1]) {\n\t\treturn dir + string(os.PathSeparator)\n\t}\n\treturn dir\n}\n\n// dirFS is not exported because the input fields must be maintained together.\n// This is likely why os.DirFS doesn't, either!\ntype dirFS struct {\n\texperimentalsys.UnimplementedFS\n\n\tdir string\n\t// cleanedDir is for easier OS-specific concatenation, as it always has\n\t// a trailing path separator.\n\tcleanedDir string\n}\n\n// String implements fmt.Stringer\nfunc (d *dirFS) String() string {\n\treturn d.dir\n}\n\n// OpenFile implements the same method as documented on sys.FS\nfunc (d *dirFS) OpenFile(path string, flag experimentalsys.Oflag, perm fs.FileMode) (experimentalsys.File, experimentalsys.Errno) {\n\treturn OpenOSFile(d.join(path), flag, perm)\n}\n\n// Lstat implements the same method as documented on sys.FS\nfunc (d *dirFS) Lstat(path string) (sys.Stat_t, experimentalsys.Errno) {\n\treturn lstat(d.join(path))\n}\n\n// Stat implements the same method as documented on sys.FS\nfunc (d *dirFS) Stat(path string) (sys.Stat_t, experimentalsys.Errno) {\n\treturn stat(d.join(path))\n}\n\n// Mkdir implements the same method as documented on sys.FS\nfunc (d *dirFS) Mkdir(path string, perm fs.FileMode) (errno experimentalsys.Errno) {\n\terr := os.Mkdir(d.join(path), perm)\n\tif errno = experimentalsys.UnwrapOSError(err); errno == experimentalsys.ENOTDIR {\n\t\terrno = experimentalsys.ENOENT\n\t}\n\treturn\n}\n\n// Readlink implements the same method as documented on sys.FS\nfunc (d *dirFS) Readlink(path string) (string, experimentalsys.Errno) {\n\t// Note: do not use syscall.Readlink as that causes race on Windows.\n\t// In any case, syscall.Readlink does almost the same logic as os.Readlink.\n\tdst, err := os.Readlink(d.join(path))\n\tif err != nil {\n\t\treturn \"\", experimentalsys.UnwrapOSError(err)\n\t}\n\treturn platform.ToPosixPath(dst), 0\n}\n\n// Rmdir implements the same method as documented on sys.FS\nfunc (d *dirFS) Rmdir(path string) experimentalsys.Errno {\n\treturn rmdir(d.join(path))\n}\n\n// Utimens implements the same method as documented on sys.FS\nfunc (d *dirFS) Utimens(path string, atim, mtim int64) experimentalsys.Errno {\n\treturn utimens(d.join(path), atim, mtim)\n}\n\nfunc (d *dirFS) join(path string) string {\n\tswitch path {\n\tcase \"\", \".\", \"/\":\n\t\tif d.cleanedDir == \"/\" {\n\t\t\treturn \"/\"\n\t\t}\n\t\t// cleanedDir includes an unnecessary delimiter for the root path.\n\t\treturn d.cleanedDir[:len(d.cleanedDir)-1]\n\t}\n\t// TODO: Enforce similar to safefilepath.FromFS(path), but be careful as\n\t// relative path inputs are allowed. e.g. dir or path == ../\n\treturn d.cleanedDir + path\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/dirfs_supported.go",
    "content": "//go:build !tinygo\n\npackage sysfs\n\nimport (\n\t\"io/fs\"\n\t\"os\"\n\t\"path\"\n\n\texperimentalsys \"github.com/tetratelabs/wazero/experimental/sys\"\n)\n\n// Link implements the same method as documented on sys.FS\nfunc (d *dirFS) Link(oldName, newName string) experimentalsys.Errno {\n\terr := os.Link(d.join(oldName), d.join(newName))\n\treturn experimentalsys.UnwrapOSError(err)\n}\n\n// Unlink implements the same method as documented on sys.FS\nfunc (d *dirFS) Unlink(path string) (err experimentalsys.Errno) {\n\treturn unlink(d.join(path))\n}\n\n// Rename implements the same method as documented on sys.FS\nfunc (d *dirFS) Rename(from, to string) experimentalsys.Errno {\n\tfrom, to = d.join(from), d.join(to)\n\treturn rename(from, to)\n}\n\n// Chmod implements the same method as documented on sys.FS\nfunc (d *dirFS) Chmod(path string, perm fs.FileMode) experimentalsys.Errno {\n\terr := os.Chmod(d.join(path), perm)\n\treturn experimentalsys.UnwrapOSError(err)\n}\n\n// Symlink implements the same method as documented on sys.FS\nfunc (d *dirFS) Symlink(oldName, link string) experimentalsys.Errno {\n\t// Creating a symlink with an absolute path string fails with a \"not permitted\" error.\n\t// https://github.com/WebAssembly/wasi-filesystem/blob/v0.2.0/path-resolution.md#symlinks\n\tif path.IsAbs(oldName) {\n\t\treturn experimentalsys.EPERM\n\t}\n\t// Note: do not resolve `oldName` relative to this dirFS. The link result is always resolved\n\t// when dereference the `link` on its usage (e.g. readlink, read, etc).\n\t// https://github.com/bytecodealliance/cap-std/blob/v1.0.4/cap-std/src/fs/dir.rs#L404-L409\n\terr := os.Symlink(oldName, d.join(link))\n\treturn experimentalsys.UnwrapOSError(err)\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/dirfs_unsupported.go",
    "content": "//go:build tinygo\n\npackage sysfs\n\nimport (\n\t\"io/fs\"\n\n\texperimentalsys \"github.com/tetratelabs/wazero/experimental/sys\"\n)\n\n// Link implements the same method as documented on sys.FS\nfunc (d *dirFS) Link(oldName, newName string) experimentalsys.Errno {\n\treturn experimentalsys.ENOSYS\n}\n\n// Unlink implements the same method as documented on sys.FS\nfunc (d *dirFS) Unlink(path string) (err experimentalsys.Errno) {\n\treturn experimentalsys.ENOSYS\n}\n\n// Rename implements the same method as documented on sys.FS\nfunc (d *dirFS) Rename(from, to string) experimentalsys.Errno {\n\treturn experimentalsys.ENOSYS\n}\n\n// Chmod implements the same method as documented on sys.FS\nfunc (d *dirFS) Chmod(path string, perm fs.FileMode) experimentalsys.Errno {\n\treturn experimentalsys.ENOSYS\n}\n\n// Symlink implements the same method as documented on sys.FS\nfunc (d *dirFS) Symlink(oldName, link string) experimentalsys.Errno {\n\treturn experimentalsys.ENOSYS\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/file.go",
    "content": "package sysfs\n\nimport (\n\t\"io\"\n\t\"io/fs\"\n\t\"os\"\n\t\"time\"\n\n\texperimentalsys \"github.com/tetratelabs/wazero/experimental/sys\"\n\t\"github.com/tetratelabs/wazero/internal/fsapi\"\n\t\"github.com/tetratelabs/wazero/sys\"\n)\n\nfunc NewStdioFile(stdin bool, f fs.File) (fsapi.File, error) {\n\t// Return constant stat, which has fake times, but keep the underlying\n\t// file mode. Fake times are needed to pass wasi-testsuite.\n\t// https://github.com/WebAssembly/wasi-testsuite/blob/af57727/tests/rust/src/bin/fd_filestat_get.rs#L1-L19\n\tvar mode fs.FileMode\n\tif st, err := f.Stat(); err != nil {\n\t\treturn nil, err\n\t} else {\n\t\tmode = st.Mode()\n\t}\n\tvar flag experimentalsys.Oflag\n\tif stdin {\n\t\tflag = experimentalsys.O_RDONLY\n\t} else {\n\t\tflag = experimentalsys.O_WRONLY\n\t}\n\tvar file fsapi.File\n\tif of, ok := f.(*os.File); ok {\n\t\t// This is ok because functions that need path aren't used by stdioFile\n\t\tfile = newOsFile(\"\", flag, 0, of)\n\t} else {\n\t\tfile = &fsFile{file: f}\n\t}\n\treturn &stdioFile{File: file, st: sys.Stat_t{Mode: mode, Nlink: 1}}, nil\n}\n\nfunc OpenFile(path string, flag experimentalsys.Oflag, perm fs.FileMode) (*os.File, experimentalsys.Errno) {\n\treturn openFile(path, flag, perm)\n}\n\nfunc OpenOSFile(path string, flag experimentalsys.Oflag, perm fs.FileMode) (experimentalsys.File, experimentalsys.Errno) {\n\tf, errno := OpenFile(path, flag, perm)\n\tif errno != 0 {\n\t\treturn nil, errno\n\t}\n\treturn newOsFile(path, flag, perm, f), 0\n}\n\nfunc OpenFSFile(fs fs.FS, path string, flag experimentalsys.Oflag, perm fs.FileMode) (experimentalsys.File, experimentalsys.Errno) {\n\tif flag&experimentalsys.O_DIRECTORY != 0 && flag&(experimentalsys.O_WRONLY|experimentalsys.O_RDWR) != 0 {\n\t\treturn nil, experimentalsys.EISDIR // invalid to open a directory writeable\n\t}\n\tf, err := fs.Open(path)\n\tif errno := experimentalsys.UnwrapOSError(err); errno != 0 {\n\t\treturn nil, errno\n\t}\n\t// Don't return an os.File because the path is not absolute. osFile needs\n\t// the path to be real and certain FS.File impls are subrooted.\n\treturn &fsFile{fs: fs, name: path, file: f}, 0\n}\n\ntype stdioFile struct {\n\tfsapi.File\n\tst sys.Stat_t\n}\n\n// SetAppend implements File.SetAppend\nfunc (f *stdioFile) SetAppend(bool) experimentalsys.Errno {\n\t// Ignore for stdio.\n\treturn 0\n}\n\n// IsAppend implements File.SetAppend\nfunc (f *stdioFile) IsAppend() bool {\n\treturn true\n}\n\n// Stat implements File.Stat\nfunc (f *stdioFile) Stat() (sys.Stat_t, experimentalsys.Errno) {\n\treturn f.st, 0\n}\n\n// Close implements File.Close\nfunc (f *stdioFile) Close() experimentalsys.Errno {\n\treturn 0\n}\n\n// fsFile is used for wrapped fs.File, like os.Stdin or any fs.File\n// implementation. Notably, this does not have access to the full file path.\n// so certain operations can't be supported, such as inode lookups on Windows.\ntype fsFile struct {\n\texperimentalsys.UnimplementedFile\n\n\t// fs is the file-system that opened the file, or nil when wrapped for\n\t// pre-opens like stdio.\n\tfs fs.FS\n\n\t// name is what was used in fs for Open, so it may not be the actual path.\n\tname string\n\n\t// file is always set, possibly an os.File like os.Stdin.\n\tfile fs.File\n\n\t// reopenDir is true if reopen should be called before Readdir. This flag\n\t// is deferred until Readdir to prevent redundant rewinds. This could\n\t// happen if Seek(0) was called twice, or if in Windows, Seek(0) was called\n\t// before Readdir.\n\treopenDir bool\n\n\t// closed is true when closed was called. This ensures proper sys.EBADF\n\tclosed bool\n\n\t// cachedStat includes fields that won't change while a file is open.\n\tcachedSt *cachedStat\n}\n\ntype cachedStat struct {\n\t// dev is the same as sys.Stat_t Dev.\n\tdev uint64\n\n\t// dev is the same as sys.Stat_t Ino.\n\tino sys.Inode\n\n\t// isDir is sys.Stat_t Mode masked with fs.ModeDir\n\tisDir bool\n}\n\n// cachedStat returns the cacheable parts of sys.Stat_t or an error if they\n// couldn't be retrieved.\nfunc (f *fsFile) cachedStat() (dev uint64, ino sys.Inode, isDir bool, errno experimentalsys.Errno) {\n\tif f.cachedSt == nil {\n\t\tif _, errno = f.Stat(); errno != 0 {\n\t\t\treturn\n\t\t}\n\t}\n\treturn f.cachedSt.dev, f.cachedSt.ino, f.cachedSt.isDir, 0\n}\n\n// Dev implements the same method as documented on sys.File\nfunc (f *fsFile) Dev() (uint64, experimentalsys.Errno) {\n\tdev, _, _, errno := f.cachedStat()\n\treturn dev, errno\n}\n\n// Ino implements the same method as documented on sys.File\nfunc (f *fsFile) Ino() (sys.Inode, experimentalsys.Errno) {\n\t_, ino, _, errno := f.cachedStat()\n\treturn ino, errno\n}\n\n// IsDir implements the same method as documented on sys.File\nfunc (f *fsFile) IsDir() (bool, experimentalsys.Errno) {\n\t_, _, isDir, errno := f.cachedStat()\n\treturn isDir, errno\n}\n\n// IsAppend implements the same method as documented on sys.File\nfunc (f *fsFile) IsAppend() bool {\n\treturn false\n}\n\n// SetAppend implements the same method as documented on sys.File\nfunc (f *fsFile) SetAppend(bool) (errno experimentalsys.Errno) {\n\treturn fileError(f, f.closed, experimentalsys.ENOSYS)\n}\n\n// Stat implements the same method as documented on sys.File\nfunc (f *fsFile) Stat() (sys.Stat_t, experimentalsys.Errno) {\n\tif f.closed {\n\t\treturn sys.Stat_t{}, experimentalsys.EBADF\n\t}\n\n\tst, errno := statFile(f.file)\n\tswitch errno {\n\tcase 0:\n\t\tf.cachedSt = &cachedStat{dev: st.Dev, ino: st.Ino, isDir: st.Mode&fs.ModeDir == fs.ModeDir}\n\tcase experimentalsys.EIO:\n\t\terrno = experimentalsys.EBADF\n\t}\n\treturn st, errno\n}\n\n// Read implements the same method as documented on sys.File\nfunc (f *fsFile) Read(buf []byte) (n int, errno experimentalsys.Errno) {\n\tif n, errno = read(f.file, buf); errno != 0 {\n\t\t// Defer validation overhead until we've already had an error.\n\t\terrno = fileError(f, f.closed, errno)\n\t}\n\treturn\n}\n\n// Pread implements the same method as documented on sys.File\nfunc (f *fsFile) Pread(buf []byte, off int64) (n int, errno experimentalsys.Errno) {\n\tif ra, ok := f.file.(io.ReaderAt); ok {\n\t\tif n, errno = pread(ra, buf, off); errno != 0 {\n\t\t\t// Defer validation overhead until we've already had an error.\n\t\t\terrno = fileError(f, f.closed, errno)\n\t\t}\n\t\treturn\n\t}\n\n\t// See /RATIONALE.md \"fd_pread: io.Seeker fallback when io.ReaderAt is not supported\"\n\tif rs, ok := f.file.(io.ReadSeeker); ok {\n\t\t// Determine the current position in the file, as we need to revert it.\n\t\tcurrentOffset, err := rs.Seek(0, io.SeekCurrent)\n\t\tif err != nil {\n\t\t\treturn 0, fileError(f, f.closed, experimentalsys.UnwrapOSError(err))\n\t\t}\n\n\t\t// Put the read position back when complete.\n\t\tdefer func() { _, _ = rs.Seek(currentOffset, io.SeekStart) }()\n\n\t\t// If the current offset isn't in sync with this reader, move it.\n\t\tif off != currentOffset {\n\t\t\tif _, err = rs.Seek(off, io.SeekStart); err != nil {\n\t\t\t\treturn 0, fileError(f, f.closed, experimentalsys.UnwrapOSError(err))\n\t\t\t}\n\t\t}\n\n\t\tn, err = rs.Read(buf)\n\t\tif errno = experimentalsys.UnwrapOSError(err); errno != 0 {\n\t\t\t// Defer validation overhead until we've already had an error.\n\t\t\terrno = fileError(f, f.closed, errno)\n\t\t}\n\t} else {\n\t\terrno = experimentalsys.ENOSYS // unsupported\n\t}\n\treturn\n}\n\n// Seek implements the same method as documented on sys.File\nfunc (f *fsFile) Seek(offset int64, whence int) (newOffset int64, errno experimentalsys.Errno) {\n\t// If this is a directory, and we're attempting to seek to position zero,\n\t// we have to re-open the file to ensure the directory state is reset.\n\tvar isDir bool\n\tif offset == 0 && whence == io.SeekStart {\n\t\tif isDir, errno = f.IsDir(); errno == 0 && isDir {\n\t\t\tf.reopenDir = true\n\t\t\treturn\n\t\t}\n\t}\n\n\tif s, ok := f.file.(io.Seeker); ok {\n\t\tif newOffset, errno = seek(s, offset, whence); errno != 0 {\n\t\t\t// Defer validation overhead until we've already had an error.\n\t\t\terrno = fileError(f, f.closed, errno)\n\t\t}\n\t} else {\n\t\terrno = experimentalsys.ENOSYS // unsupported\n\t}\n\treturn\n}\n\n// Readdir implements the same method as documented on sys.File\n//\n// Notably, this uses readdirFile or fs.ReadDirFile if available. This does not\n// return inodes on windows.\nfunc (f *fsFile) Readdir(n int) (dirents []experimentalsys.Dirent, errno experimentalsys.Errno) {\n\t// Windows lets you Readdir after close, FS.File also may not implement\n\t// close in a meaningful way. read our closed field to return consistent\n\t// results.\n\tif f.closed {\n\t\terrno = experimentalsys.EBADF\n\t\treturn\n\t}\n\n\tif f.reopenDir { // re-open the directory if needed.\n\t\tf.reopenDir = false\n\t\tif errno = adjustReaddirErr(f, f.closed, f.rewindDir()); errno != 0 {\n\t\t\treturn\n\t\t}\n\t}\n\n\tif of, ok := f.file.(readdirFile); ok {\n\t\t// We can't use f.name here because it is the path up to the sys.FS,\n\t\t// not necessarily the real path. For this reason, Windows may not be\n\t\t// able to populate inodes. However, Darwin and Linux will.\n\t\tif dirents, errno = readdir(of, \"\", n); errno != 0 {\n\t\t\terrno = adjustReaddirErr(f, f.closed, errno)\n\t\t}\n\t\treturn\n\t}\n\n\t// Try with FS.ReadDirFile which is available on api.FS implementations\n\t// like embed:FS.\n\tif rdf, ok := f.file.(fs.ReadDirFile); ok {\n\t\tentries, e := rdf.ReadDir(n)\n\t\tif errno = adjustReaddirErr(f, f.closed, e); errno != 0 {\n\t\t\treturn\n\t\t}\n\t\tdirents = make([]experimentalsys.Dirent, 0, len(entries))\n\t\tfor _, e := range entries {\n\t\t\t// By default, we don't attempt to read inode data\n\t\t\tdirents = append(dirents, experimentalsys.Dirent{Name: e.Name(), Type: e.Type()})\n\t\t}\n\t} else {\n\t\terrno = experimentalsys.EBADF // not a directory\n\t}\n\treturn\n}\n\n// Write implements the same method as documented on sys.File.\nfunc (f *fsFile) Write(buf []byte) (n int, errno experimentalsys.Errno) {\n\tif w, ok := f.file.(io.Writer); ok {\n\t\tif n, errno = write(w, buf); errno != 0 {\n\t\t\t// Defer validation overhead until we've already had an error.\n\t\t\terrno = fileError(f, f.closed, errno)\n\t\t}\n\t} else {\n\t\terrno = experimentalsys.ENOSYS // unsupported\n\t}\n\treturn\n}\n\n// Pwrite implements the same method as documented on sys.File.\nfunc (f *fsFile) Pwrite(buf []byte, off int64) (n int, errno experimentalsys.Errno) {\n\tif wa, ok := f.file.(io.WriterAt); ok {\n\t\tif n, errno = pwrite(wa, buf, off); errno != 0 {\n\t\t\t// Defer validation overhead until we've already had an error.\n\t\t\terrno = fileError(f, f.closed, errno)\n\t\t}\n\t} else {\n\t\terrno = experimentalsys.ENOSYS // unsupported\n\t}\n\treturn\n}\n\n// Close implements the same method as documented on sys.File.\nfunc (f *fsFile) Close() experimentalsys.Errno {\n\tif f.closed {\n\t\treturn 0\n\t}\n\tf.closed = true\n\treturn f.close()\n}\n\nfunc (f *fsFile) close() experimentalsys.Errno {\n\treturn experimentalsys.UnwrapOSError(f.file.Close())\n}\n\n// IsNonblock implements the same method as documented on fsapi.File\nfunc (f *fsFile) IsNonblock() bool {\n\treturn false\n}\n\n// SetNonblock implements the same method as documented on fsapi.File\nfunc (f *fsFile) SetNonblock(bool) experimentalsys.Errno {\n\treturn experimentalsys.ENOSYS\n}\n\n// Poll implements the same method as documented on fsapi.File\nfunc (f *fsFile) Poll(fsapi.Pflag, int32) (ready bool, errno experimentalsys.Errno) {\n\treturn false, experimentalsys.ENOSYS\n}\n\n// dirError is used for commands that work against a directory, but not a file.\nfunc dirError(f experimentalsys.File, isClosed bool, errno experimentalsys.Errno) experimentalsys.Errno {\n\tif vErrno := validate(f, isClosed, false, true); vErrno != 0 {\n\t\treturn vErrno\n\t}\n\treturn errno\n}\n\n// fileError is used for commands that work against a file, but not a directory.\nfunc fileError(f experimentalsys.File, isClosed bool, errno experimentalsys.Errno) experimentalsys.Errno {\n\tif vErrno := validate(f, isClosed, true, false); vErrno != 0 {\n\t\treturn vErrno\n\t}\n\treturn errno\n}\n\n// validate is used to making syscalls which will fail.\nfunc validate(f experimentalsys.File, isClosed, wantFile, wantDir bool) experimentalsys.Errno {\n\tif isClosed {\n\t\treturn experimentalsys.EBADF\n\t}\n\n\tisDir, errno := f.IsDir()\n\tif errno != 0 {\n\t\treturn errno\n\t}\n\n\tif wantFile && isDir {\n\t\treturn experimentalsys.EISDIR\n\t} else if wantDir && !isDir {\n\t\treturn experimentalsys.ENOTDIR\n\t}\n\treturn 0\n}\n\nfunc read(r io.Reader, buf []byte) (n int, errno experimentalsys.Errno) {\n\tif len(buf) == 0 {\n\t\treturn 0, 0 // less overhead on zero-length reads.\n\t}\n\n\tn, err := r.Read(buf)\n\treturn n, experimentalsys.UnwrapOSError(err)\n}\n\nfunc pread(ra io.ReaderAt, buf []byte, off int64) (n int, errno experimentalsys.Errno) {\n\tif len(buf) == 0 {\n\t\treturn 0, 0 // less overhead on zero-length reads.\n\t}\n\n\tn, err := ra.ReadAt(buf, off)\n\treturn n, experimentalsys.UnwrapOSError(err)\n}\n\nfunc seek(s io.Seeker, offset int64, whence int) (int64, experimentalsys.Errno) {\n\tif uint(whence) > io.SeekEnd {\n\t\treturn 0, experimentalsys.EINVAL // negative or exceeds the largest valid whence\n\t}\n\n\tnewOffset, err := s.Seek(offset, whence)\n\treturn newOffset, experimentalsys.UnwrapOSError(err)\n}\n\nfunc (f *fsFile) rewindDir() experimentalsys.Errno {\n\t// Reopen the directory to rewind it.\n\tfile, err := f.fs.Open(f.name)\n\tif err != nil {\n\t\treturn experimentalsys.UnwrapOSError(err)\n\t}\n\tfi, err := file.Stat()\n\tif err != nil {\n\t\treturn experimentalsys.UnwrapOSError(err)\n\t}\n\t// Can't check if it's still the same file,\n\t// but is it still a directory, at least?\n\tif !fi.IsDir() {\n\t\treturn experimentalsys.ENOTDIR\n\t}\n\t// Only update f on success.\n\t_ = f.file.Close()\n\tf.file = file\n\treturn 0\n}\n\n// readdirFile allows masking the `Readdir` function on os.File.\ntype readdirFile interface {\n\tReaddir(n int) ([]fs.FileInfo, error)\n}\n\n// readdir uses readdirFile.Readdir, special casing windows when path !=\"\".\nfunc readdir(f readdirFile, path string, n int) (dirents []experimentalsys.Dirent, errno experimentalsys.Errno) {\n\tfis, e := f.Readdir(n)\n\tif errno = experimentalsys.UnwrapOSError(e); errno != 0 {\n\t\treturn\n\t}\n\n\tdirents = make([]experimentalsys.Dirent, 0, len(fis))\n\n\t// linux/darwin won't have to fan out to lstat, but windows will.\n\tvar ino sys.Inode\n\tfor fi := range fis {\n\t\tt := fis[fi]\n\t\t// inoFromFileInfo is more efficient than sys.NewStat_t, as it gets the\n\t\t// inode without allocating an instance and filling other fields.\n\t\tif ino, errno = inoFromFileInfo(path, t); errno != 0 {\n\t\t\treturn\n\t\t}\n\t\tdirents = append(dirents, experimentalsys.Dirent{Name: t.Name(), Ino: ino, Type: t.Mode().Type()})\n\t}\n\treturn\n}\n\nfunc write(w io.Writer, buf []byte) (n int, errno experimentalsys.Errno) {\n\tif len(buf) == 0 {\n\t\treturn 0, 0 // less overhead on zero-length writes.\n\t}\n\n\tn, err := w.Write(buf)\n\treturn n, experimentalsys.UnwrapOSError(err)\n}\n\nfunc pwrite(w io.WriterAt, buf []byte, off int64) (n int, errno experimentalsys.Errno) {\n\tif len(buf) == 0 {\n\t\treturn 0, 0 // less overhead on zero-length writes.\n\t}\n\n\tn, err := w.WriteAt(buf, off)\n\treturn n, experimentalsys.UnwrapOSError(err)\n}\n\nfunc chtimes(path string, atim, mtim int64) (errno experimentalsys.Errno) { //nolint:unused\n\t// When both inputs are omitted, there is nothing to change.\n\tif atim == experimentalsys.UTIME_OMIT && mtim == experimentalsys.UTIME_OMIT {\n\t\treturn\n\t}\n\n\t// UTIME_OMIT is expensive until progress is made in Go, as it requires a\n\t// stat to read-back the value to re-apply.\n\t// - https://github.com/golang/go/issues/32558.\n\t// - https://go-review.googlesource.com/c/go/+/219638 (unmerged)\n\tvar st sys.Stat_t\n\tif atim == experimentalsys.UTIME_OMIT || mtim == experimentalsys.UTIME_OMIT {\n\t\tif st, errno = stat(path); errno != 0 {\n\t\t\treturn\n\t\t}\n\t}\n\n\tvar atime, mtime time.Time\n\tif atim == experimentalsys.UTIME_OMIT {\n\t\tatime = epochNanosToTime(st.Atim)\n\t\tmtime = epochNanosToTime(mtim)\n\t} else if mtim == experimentalsys.UTIME_OMIT {\n\t\tatime = epochNanosToTime(atim)\n\t\tmtime = epochNanosToTime(st.Mtim)\n\t} else {\n\t\tatime = epochNanosToTime(atim)\n\t\tmtime = epochNanosToTime(mtim)\n\t}\n\treturn experimentalsys.UnwrapOSError(os.Chtimes(path, atime, mtime))\n}\n\nfunc epochNanosToTime(epochNanos int64) time.Time { //nolint:unused\n\tseconds := epochNanos / 1e9\n\tnanos := epochNanos % 1e9\n\treturn time.Unix(seconds, nanos)\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/file_unix.go",
    "content": "//go:build unix && !tinygo\n\npackage sysfs\n\nimport (\n\t\"syscall\"\n\n\t\"github.com/tetratelabs/wazero/experimental/sys\"\n)\n\nconst (\n\tnonBlockingFileReadSupported  = true\n\tnonBlockingFileWriteSupported = true\n)\n\nfunc rmdir(path string) sys.Errno {\n\terr := syscall.Rmdir(path)\n\treturn sys.UnwrapOSError(err)\n}\n\n// readFd exposes syscall.Read.\nfunc readFd(fd uintptr, buf []byte) (int, sys.Errno) {\n\tif len(buf) == 0 {\n\t\treturn 0, 0 // Short-circuit 0-len reads.\n\t}\n\tn, err := syscall.Read(int(fd), buf)\n\terrno := sys.UnwrapOSError(err)\n\treturn n, errno\n}\n\n// writeFd exposes syscall.Write.\nfunc writeFd(fd uintptr, buf []byte) (int, sys.Errno) {\n\tif len(buf) == 0 {\n\t\treturn 0, 0 // Short-circuit 0-len writes.\n\t}\n\tn, err := syscall.Write(int(fd), buf)\n\terrno := sys.UnwrapOSError(err)\n\treturn n, errno\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/file_unsupported.go",
    "content": "//go:build !(unix || windows) || tinygo\n\npackage sysfs\n\nimport (\n\t\"os\"\n\n\t\"github.com/tetratelabs/wazero/experimental/sys\"\n)\n\nconst (\n\tnonBlockingFileReadSupported  = false\n\tnonBlockingFileWriteSupported = false\n)\n\nfunc rmdir(path string) sys.Errno {\n\treturn sys.UnwrapOSError(os.Remove(path))\n}\n\n// readFd returns ENOSYS on unsupported platforms.\nfunc readFd(fd uintptr, buf []byte) (int, sys.Errno) {\n\treturn -1, sys.ENOSYS\n}\n\n// writeFd returns ENOSYS on unsupported platforms.\nfunc writeFd(fd uintptr, buf []byte) (int, sys.Errno) {\n\treturn -1, sys.ENOSYS\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/file_windows.go",
    "content": "package sysfs\n\nimport (\n\t\"errors\"\n\t\"syscall\"\n\t\"unsafe\"\n\n\t\"github.com/tetratelabs/wazero/experimental/sys\"\n)\n\nconst (\n\tnonBlockingFileReadSupported  = true\n\tnonBlockingFileWriteSupported = false\n\n\t_ERROR_IO_INCOMPLETE = syscall.Errno(996)\n)\n\nvar kernel32 = syscall.NewLazyDLL(\"kernel32.dll\")\n\n// procPeekNamedPipe is the syscall.LazyProc in kernel32 for PeekNamedPipe\nvar (\n\t// procPeekNamedPipe is the syscall.LazyProc in kernel32 for PeekNamedPipe\n\tprocPeekNamedPipe = kernel32.NewProc(\"PeekNamedPipe\")\n\t// procGetOverlappedResult is the syscall.LazyProc in kernel32 for GetOverlappedResult\n\tprocGetOverlappedResult = kernel32.NewProc(\"GetOverlappedResult\")\n\t// procCreateEventW is the syscall.LazyProc in kernel32 for CreateEventW\n\tprocCreateEventW = kernel32.NewProc(\"CreateEventW\")\n)\n\n// readFd returns ENOSYS on unsupported platforms.\n//\n// PeekNamedPipe: https://learn.microsoft.com/en-us/windows/win32/api/namedpipeapi/nf-namedpipeapi-peeknamedpipe\n// \"GetFileType can assist in determining what device type the handle refers to. A console handle presents as FILE_TYPE_CHAR.\"\n// https://learn.microsoft.com/en-us/windows/console/console-handles\nfunc readFd(fd uintptr, buf []byte) (int, sys.Errno) {\n\thandle := syscall.Handle(fd)\n\tfileType, err := syscall.GetFileType(handle)\n\tif err != nil {\n\t\treturn 0, sys.UnwrapOSError(err)\n\t}\n\tif fileType&syscall.FILE_TYPE_CHAR == 0 {\n\t\treturn -1, sys.ENOSYS\n\t}\n\tn, errno := peekNamedPipe(handle)\n\tif errno == syscall.ERROR_BROKEN_PIPE {\n\t\treturn 0, 0\n\t}\n\tif n == 0 {\n\t\treturn -1, sys.EAGAIN\n\t}\n\tun, err := syscall.Read(handle, buf[0:n])\n\treturn un, sys.UnwrapOSError(err)\n}\n\nfunc writeFd(fd uintptr, buf []byte) (int, sys.Errno) {\n\treturn -1, sys.ENOSYS\n}\n\nfunc readSocket(h uintptr, buf []byte) (int, sys.Errno) {\n\t// Poll the socket to ensure that we never perform a blocking/overlapped Read.\n\t//\n\t// When the socket is closed by the remote peer, wsaPoll will return n=1 and\n\t// errno=0, and syscall.ReadFile will return n=0 and errno=0 -- which indicates\n\t// io.EOF.\n\tif n, errno := wsaPoll(\n\t\t[]pollFd{newPollFd(h, _POLLIN, 0)}, 0); !errors.Is(errno, sys.Errno(0)) {\n\t\treturn 0, sys.UnwrapOSError(errno)\n\t} else if n <= 0 {\n\t\treturn 0, sys.EAGAIN\n\t}\n\n\t// Properly use overlapped result.\n\t//\n\t// If hFile was opened with FILE_FLAG_OVERLAPPED, the following conditions are in effect:\n\t//  - The lpOverlapped parameter must point to a valid and unique OVERLAPPED structure,\n\t//  otherwise the function can incorrectly report that the read operation is complete.\n\t//  - The lpNumberOfBytesRead parameter should be set to NULL. Use the GetOverlappedResult\n\t//  function to get the actual number of bytes read. If the hFile parameter is associated\n\t//  with an I/O completion port, you can also get the number of bytes read by calling the\n\t//  GetQueuedCompletionStatus function.\n\t//\n\t// We are currently skipping checking if hFile was opened with FILE_FLAG_OVERLAPPED but using\n\t// both lpOverlapped and lpNumberOfBytesRead.\n\tvar overlapped syscall.Overlapped\n\n\t// Create an event to wait on.\n\tif hEvent, err := createEventW(nil, true, false, nil); err != 0 {\n\t\treturn 0, sys.UnwrapOSError(err)\n\t} else {\n\t\toverlapped.HEvent = syscall.Handle(hEvent)\n\t}\n\n\tvar done uint32\n\terrno := syscall.ReadFile(syscall.Handle(h), buf, &done, &overlapped)\n\tif errors.Is(errno, syscall.ERROR_IO_PENDING) {\n\t\terrno = syscall.CancelIo(syscall.Handle(h))\n\t\tif errno != nil {\n\t\t\treturn 0, sys.UnwrapOSError(errno) // This is a fatal error. CancelIo failed.\n\t\t}\n\n\t\tdone, errno = getOverlappedResult(syscall.Handle(h), &overlapped, true) // wait for I/O to complete(cancel or finish). Overwrite done and errno.\n\t\tif errors.Is(errno, syscall.ERROR_OPERATION_ABORTED) {\n\t\t\treturn int(done), sys.EAGAIN // This is one of the expected behavior, I/O was cancelled(completed) before finished.\n\t\t}\n\t}\n\n\treturn int(done), sys.UnwrapOSError(errno)\n}\n\nfunc writeSocket(fd uintptr, buf []byte) (int, sys.Errno) {\n\tvar done uint32\n\tvar overlapped syscall.Overlapped\n\terrno := syscall.WriteFile(syscall.Handle(fd), buf, &done, &overlapped)\n\tif errors.Is(errno, syscall.ERROR_IO_PENDING) {\n\t\terrno = syscall.EAGAIN\n\t}\n\treturn int(done), sys.UnwrapOSError(errno)\n}\n\n// peekNamedPipe partially exposes PeekNamedPipe from the Win32 API\n// see https://learn.microsoft.com/en-us/windows/win32/api/namedpipeapi/nf-namedpipeapi-peeknamedpipe\nfunc peekNamedPipe(handle syscall.Handle) (uint32, syscall.Errno) {\n\tvar totalBytesAvail uint32\n\ttotalBytesPtr := unsafe.Pointer(&totalBytesAvail)\n\t_, _, errno := syscall.SyscallN(\n\t\tprocPeekNamedPipe.Addr(),\n\t\tuintptr(handle),        // [in]            HANDLE  hNamedPipe,\n\t\t0,                      // [out, optional] LPVOID  lpBuffer,\n\t\t0,                      // [in]            DWORD   nBufferSize,\n\t\t0,                      // [out, optional] LPDWORD lpBytesRead\n\t\tuintptr(totalBytesPtr), // [out, optional] LPDWORD lpTotalBytesAvail,\n\t\t0)                      // [out, optional] LPDWORD lpBytesLeftThisMessage\n\treturn totalBytesAvail, errno\n}\n\nfunc rmdir(path string) sys.Errno {\n\terr := syscall.Rmdir(path)\n\treturn sys.UnwrapOSError(err)\n}\n\nfunc getOverlappedResult(handle syscall.Handle, overlapped *syscall.Overlapped, wait bool) (uint32, syscall.Errno) {\n\tvar totalBytesAvail uint32\n\tvar bwait uintptr\n\tif wait {\n\t\tbwait = 0xFFFFFFFF\n\t}\n\ttotalBytesPtr := unsafe.Pointer(&totalBytesAvail)\n\t_, _, errno := syscall.SyscallN(\n\t\tprocGetOverlappedResult.Addr(),\n\t\tuintptr(handle),                     // [in]  HANDLE       hFile,\n\t\tuintptr(unsafe.Pointer(overlapped)), // [in]  LPOVERLAPPED lpOverlapped,\n\t\tuintptr(totalBytesPtr),              // [out] LPDWORD      lpNumberOfBytesTransferred,\n\t\tbwait)                               // [in]  BOOL         bWait\n\treturn totalBytesAvail, errno\n}\n\nfunc createEventW(lpEventAttributes *syscall.SecurityAttributes, bManualReset bool, bInitialState bool, lpName *uint16) (uintptr, syscall.Errno) {\n\tvar manualReset uintptr\n\tvar initialState uintptr\n\tif bManualReset {\n\t\tmanualReset = 1\n\t}\n\tif bInitialState {\n\t\tinitialState = 1\n\t}\n\thandle, _, errno := syscall.SyscallN(\n\t\tprocCreateEventW.Addr(),\n\t\tuintptr(unsafe.Pointer(lpEventAttributes)), // [in]     LPSECURITY_ATTRIBUTES lpEventAttributes,\n\t\tmanualReset,                     // [in]     BOOL                  bManualReset,\n\t\tinitialState,                    // [in]     BOOL                  bInitialState,\n\t\tuintptr(unsafe.Pointer(lpName)), // [in, opt]LPCWSTR               lpName,\n\t)\n\n\treturn handle, errno\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/futimens.go",
    "content": "//go:build (linux || darwin) && !tinygo\n\npackage sysfs\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n\n\t\"github.com/tetratelabs/wazero/experimental/sys\"\n)\n\nfunc timesToPtr(times *[2]syscall.Timespec) unsafe.Pointer { //nolint:unused\n\tif times != nil {\n\t\treturn unsafe.Pointer(&times[0])\n\t}\n\treturn unsafe.Pointer(nil)\n}\n\nfunc timesToTimespecs(atim int64, mtim int64) (times *[2]syscall.Timespec) {\n\t// When both inputs are omitted, there is nothing to change.\n\tif atim == sys.UTIME_OMIT && mtim == sys.UTIME_OMIT {\n\t\treturn\n\t}\n\n\ttimes = &[2]syscall.Timespec{}\n\tif atim == sys.UTIME_OMIT {\n\t\ttimes[0] = syscall.Timespec{Nsec: _UTIME_OMIT}\n\t\ttimes[1] = syscall.NsecToTimespec(mtim)\n\t} else if mtim == sys.UTIME_OMIT {\n\t\ttimes[0] = syscall.NsecToTimespec(atim)\n\t\ttimes[1] = syscall.Timespec{Nsec: _UTIME_OMIT}\n\t} else {\n\t\ttimes[0] = syscall.NsecToTimespec(atim)\n\t\ttimes[1] = syscall.NsecToTimespec(mtim)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/futimens_darwin.go",
    "content": "package sysfs\n\nimport (\n\t\"syscall\"\n\t_ \"unsafe\"\n\n\texperimentalsys \"github.com/tetratelabs/wazero/experimental/sys\"\n)\n\nconst (\n\t_AT_FDCWD            = -0x2\n\t_AT_SYMLINK_NOFOLLOW = 0x0020\n\t_UTIME_OMIT          = -2\n)\n\n//go:noescape\n//go:linkname utimensat syscall.utimensat\nfunc utimensat(dirfd int, path string, times *[2]syscall.Timespec, flags int) error\n\nfunc utimens(path string, atim, mtim int64) experimentalsys.Errno {\n\ttimes := timesToTimespecs(atim, mtim)\n\tif times == nil {\n\t\treturn 0\n\t}\n\tvar flags int\n\treturn experimentalsys.UnwrapOSError(utimensat(_AT_FDCWD, path, times, flags))\n}\n\nfunc futimens(fd uintptr, atim, mtim int64) experimentalsys.Errno {\n\ttimes := timesToTimespecs(atim, mtim)\n\tif times == nil {\n\t\treturn 0\n\t}\n\t_p0 := timesToPtr(times)\n\n\t// Warning: futimens only exists since High Sierra (10.13).\n\t_, _, e1 := syscall_syscall6(libc_futimens_trampoline_addr, fd, uintptr(_p0), 0, 0, 0, 0)\n\treturn experimentalsys.UnwrapOSError(e1)\n}\n\n// libc_futimens_trampoline_addr is the address of the\n// `libc_futimens_trampoline` symbol, defined in `futimens_darwin.s`.\n//\n// We use this to invoke the syscall through syscall_syscall6 imported below.\nvar libc_futimens_trampoline_addr uintptr\n\n// Imports the futimens symbol from libc as `libc_futimens`.\n//\n// Note: CGO mechanisms are used in darwin regardless of the CGO_ENABLED value\n// or the \"cgo\" build flag. See /RATIONALE.md for why.\n//go:cgo_import_dynamic libc_futimens futimens \"/usr/lib/libSystem.B.dylib\"\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/futimens_darwin.s",
    "content": "// lifted from golang.org/x/sys unix\n#include \"textflag.h\"\n\nTEXT libc_futimens_trampoline<>(SB), NOSPLIT, $0-0\n\tJMP libc_futimens(SB)\n\nGLOBL ·libc_futimens_trampoline_addr(SB), RODATA, $8\nDATA ·libc_futimens_trampoline_addr(SB)/8, $libc_futimens_trampoline<>(SB)\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/futimens_linux.go",
    "content": "//go:build !tinygo\n\npackage sysfs\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n\t_ \"unsafe\"\n\n\texperimentalsys \"github.com/tetratelabs/wazero/experimental/sys\"\n)\n\nconst (\n\t_AT_FDCWD   = -0x64\n\t_UTIME_OMIT = (1 << 30) - 2\n)\n\nfunc utimens(path string, atim, mtim int64) experimentalsys.Errno {\n\ttimes := timesToTimespecs(atim, mtim)\n\tif times == nil {\n\t\treturn 0\n\t}\n\n\tvar flags int\n\tvar _p0 *byte\n\t_p0, err := syscall.BytePtrFromString(path)\n\tif err == nil {\n\t\terr = utimensat(_AT_FDCWD, uintptr(unsafe.Pointer(_p0)), times, flags)\n\t}\n\treturn experimentalsys.UnwrapOSError(err)\n}\n\n// On linux, implement futimens via utimensat with the NUL path.\nfunc futimens(fd uintptr, atim, mtim int64) experimentalsys.Errno {\n\ttimes := timesToTimespecs(atim, mtim)\n\tif times == nil {\n\t\treturn 0\n\t}\n\treturn experimentalsys.UnwrapOSError(utimensat(int(fd), 0 /* NUL */, times, 0))\n}\n\n// utimensat is like syscall.utimensat special-cased to accept a NUL string for the path value.\nfunc utimensat(dirfd int, strPtr uintptr, times *[2]syscall.Timespec, flags int) (err error) {\n\t_, _, e1 := syscall.Syscall6(syscall.SYS_UTIMENSAT, uintptr(dirfd), strPtr, uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/futimens_unsupported.go",
    "content": "//go:build (!windows && !linux && !darwin) || tinygo\n\npackage sysfs\n\nimport (\n\t\"github.com/tetratelabs/wazero/experimental/sys\"\n)\n\nfunc utimens(path string, atim, mtim int64) sys.Errno {\n\treturn chtimes(path, atim, mtim)\n}\n\nfunc futimens(fd uintptr, atim, mtim int64) error {\n\t// Go exports syscall.Futimes, which is microsecond granularity, and\n\t// WASI tests expect nanosecond. We don't yet have a way to invoke the\n\t// futimens syscall portably.\n\treturn sys.ENOSYS\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/futimens_windows.go",
    "content": "package sysfs\n\nimport (\n\t\"syscall\"\n\n\t\"github.com/tetratelabs/wazero/experimental/sys\"\n)\n\nfunc utimens(path string, atim, mtim int64) sys.Errno {\n\treturn chtimes(path, atim, mtim)\n}\n\nfunc futimens(fd uintptr, atim, mtim int64) error {\n\t// Per docs, zero isn't a valid timestamp as it cannot be differentiated\n\t// from nil. In both cases, it is a marker like sys.UTIME_OMIT.\n\t// See https://learn.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-setfiletime\n\ta, w := timespecToFiletime(atim, mtim)\n\n\tif a == nil && w == nil {\n\t\treturn nil // both omitted, so nothing to change\n\t}\n\n\t// Attempt to get the stat by handle, which works for normal files\n\th := syscall.Handle(fd)\n\n\t// Note: This returns ERROR_ACCESS_DENIED when the input is a directory.\n\treturn syscall.SetFileTime(h, nil, a, w)\n}\n\nfunc timespecToFiletime(atim, mtim int64) (a, w *syscall.Filetime) {\n\ta = timespecToFileTime(atim)\n\tw = timespecToFileTime(mtim)\n\treturn\n}\n\nfunc timespecToFileTime(tim int64) *syscall.Filetime {\n\tif tim == sys.UTIME_OMIT {\n\t\treturn nil\n\t}\n\tft := syscall.NsecToFiletime(tim)\n\treturn &ft\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/ino.go",
    "content": "//go:build !windows && !plan9 && !tinygo\n\npackage sysfs\n\nimport (\n\t\"io/fs\"\n\t\"syscall\"\n\n\texperimentalsys \"github.com/tetratelabs/wazero/experimental/sys\"\n\t\"github.com/tetratelabs/wazero/sys\"\n)\n\nfunc inoFromFileInfo(_ string, info fs.FileInfo) (sys.Inode, experimentalsys.Errno) {\n\tswitch v := info.Sys().(type) {\n\tcase *sys.Stat_t:\n\t\treturn v.Ino, 0\n\tcase *syscall.Stat_t:\n\t\treturn v.Ino, 0\n\tdefault:\n\t\treturn 0, 0\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/ino_plan9.go",
    "content": "package sysfs\n\nimport (\n\t\"io/fs\"\n\n\texperimentalsys \"github.com/tetratelabs/wazero/experimental/sys\"\n\t\"github.com/tetratelabs/wazero/sys\"\n)\n\nfunc inoFromFileInfo(_ string, info fs.FileInfo) (sys.Inode, experimentalsys.Errno) {\n\tif v, ok := info.Sys().(*sys.Stat_t); ok {\n\t\treturn v.Ino, 0\n\t}\n\treturn 0, 0\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/ino_tinygo.go",
    "content": "//go:build tinygo\n\npackage sysfs\n\nimport (\n\t\"io/fs\"\n\n\texperimentalsys \"github.com/tetratelabs/wazero/experimental/sys\"\n\t\"github.com/tetratelabs/wazero/sys\"\n)\n\nfunc inoFromFileInfo(_ string, info fs.FileInfo) (sys.Inode, experimentalsys.Errno) {\n\treturn 0, experimentalsys.ENOTSUP\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/ino_windows.go",
    "content": "package sysfs\n\nimport (\n\t\"io/fs\"\n\t\"path\"\n\n\texperimentalsys \"github.com/tetratelabs/wazero/experimental/sys\"\n\t\"github.com/tetratelabs/wazero/sys\"\n)\n\n// inoFromFileInfo uses stat to get the inode information of the file.\nfunc inoFromFileInfo(dirPath string, info fs.FileInfo) (ino sys.Inode, errno experimentalsys.Errno) {\n\tif v, ok := info.Sys().(*sys.Stat_t); ok {\n\t\treturn v.Ino, 0\n\t}\n\tif dirPath == \"\" {\n\t\t// This is a FS.File backed implementation which doesn't have access to\n\t\t// the original file path.\n\t\treturn\n\t}\n\t// Ino is no not in Win32FileAttributeData\n\tinoPath := path.Clean(path.Join(dirPath, info.Name()))\n\tvar st sys.Stat_t\n\tif st, errno = lstat(inoPath); errno == 0 {\n\t\tino = st.Ino\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/nonblock_unix.go",
    "content": "//go:build !windows && !plan9 && !tinygo\n\npackage sysfs\n\nimport (\n\t\"syscall\"\n\n\t\"github.com/tetratelabs/wazero/experimental/sys\"\n)\n\nfunc setNonblock(fd uintptr, enable bool) sys.Errno {\n\treturn sys.UnwrapOSError(syscall.SetNonblock(int(fd), enable))\n}\n\nfunc isNonblock(f *osFile) bool {\n\treturn f.flag&sys.O_NONBLOCK == sys.O_NONBLOCK\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/nonblock_unsupported.go",
    "content": "//go:build plan9 || tinygo\n\npackage sysfs\n\nimport \"github.com/tetratelabs/wazero/experimental/sys\"\n\nfunc setNonblock(fd uintptr, enable bool) sys.Errno {\n\treturn sys.ENOSYS\n}\n\nfunc isNonblock(f *osFile) bool {\n\treturn false\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/nonblock_windows.go",
    "content": "package sysfs\n\nimport (\n\t\"io/fs\"\n\t\"syscall\"\n\n\t\"github.com/tetratelabs/wazero/experimental/sys\"\n)\n\nfunc setNonblock(fd uintptr, enable bool) sys.Errno {\n\t// We invoke the syscall, but this is currently no-op.\n\treturn sys.UnwrapOSError(syscall.SetNonblock(syscall.Handle(fd), enable))\n}\n\nfunc isNonblock(f *osFile) bool {\n\t// On Windows, we support non-blocking reads only on named pipes.\n\tisValid := false\n\tst, errno := f.Stat()\n\tif errno == 0 {\n\t\tisValid = st.Mode&fs.ModeNamedPipe != 0\n\t}\n\treturn isValid && f.flag&sys.O_NONBLOCK == sys.O_NONBLOCK\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/oflag.go",
    "content": "package sysfs\n\nimport (\n\t\"os\"\n\n\t\"github.com/tetratelabs/wazero/experimental/sys\"\n)\n\n// toOsOpenFlag converts the input to the flag parameter of os.OpenFile\nfunc toOsOpenFlag(oflag sys.Oflag) (flag int) {\n\t// First flags are exclusive\n\tswitch oflag & (sys.O_RDONLY | sys.O_RDWR | sys.O_WRONLY) {\n\tcase sys.O_RDONLY:\n\t\tflag |= os.O_RDONLY\n\tcase sys.O_RDWR:\n\t\tflag |= os.O_RDWR\n\tcase sys.O_WRONLY:\n\t\tflag |= os.O_WRONLY\n\t}\n\n\t// Run down the flags defined in the os package\n\tif oflag&sys.O_APPEND != 0 {\n\t\tflag |= os.O_APPEND\n\t}\n\tif oflag&sys.O_CREAT != 0 {\n\t\tflag |= os.O_CREATE\n\t}\n\tif oflag&sys.O_EXCL != 0 {\n\t\tflag |= os.O_EXCL\n\t}\n\tif oflag&sys.O_SYNC != 0 {\n\t\tflag |= os.O_SYNC\n\t}\n\tif oflag&sys.O_TRUNC != 0 {\n\t\tflag |= os.O_TRUNC\n\t}\n\treturn withSyscallOflag(oflag, flag)\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_darwin.go",
    "content": "package sysfs\n\nimport (\n\t\"syscall\"\n\n\t\"github.com/tetratelabs/wazero/experimental/sys\"\n)\n\nconst supportedSyscallOflag = sys.O_DIRECTORY | sys.O_DSYNC | sys.O_NOFOLLOW | sys.O_NONBLOCK\n\nfunc withSyscallOflag(oflag sys.Oflag, flag int) int {\n\tif oflag&sys.O_DIRECTORY != 0 {\n\t\tflag |= syscall.O_DIRECTORY\n\t}\n\tif oflag&sys.O_DSYNC != 0 {\n\t\tflag |= syscall.O_DSYNC\n\t}\n\tif oflag&sys.O_NOFOLLOW != 0 {\n\t\tflag |= syscall.O_NOFOLLOW\n\t}\n\tif oflag&sys.O_NONBLOCK != 0 {\n\t\tflag |= syscall.O_NONBLOCK\n\t}\n\t// syscall.O_RSYNC not defined on darwin\n\treturn flag\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_freebsd.go",
    "content": "package sysfs\n\nimport (\n\t\"syscall\"\n\n\t\"github.com/tetratelabs/wazero/experimental/sys\"\n)\n\nconst supportedSyscallOflag = sys.O_DIRECTORY | sys.O_NOFOLLOW | sys.O_NONBLOCK\n\nfunc withSyscallOflag(oflag sys.Oflag, flag int) int {\n\tif oflag&sys.O_DIRECTORY != 0 {\n\t\tflag |= syscall.O_DIRECTORY\n\t}\n\t// syscall.O_DSYNC not defined on darwin\n\tif oflag&sys.O_NOFOLLOW != 0 {\n\t\tflag |= syscall.O_NOFOLLOW\n\t}\n\tif oflag&sys.O_NONBLOCK != 0 {\n\t\tflag |= syscall.O_NONBLOCK\n\t}\n\t// syscall.O_RSYNC not defined on darwin\n\treturn flag\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_linux.go",
    "content": "//go:build !tinygo\n\npackage sysfs\n\nimport (\n\t\"syscall\"\n\n\t\"github.com/tetratelabs/wazero/experimental/sys\"\n)\n\nconst supportedSyscallOflag = sys.O_DIRECTORY | sys.O_DSYNC | sys.O_NOFOLLOW | sys.O_NONBLOCK | sys.O_RSYNC\n\nfunc withSyscallOflag(oflag sys.Oflag, flag int) int {\n\tif oflag&sys.O_DIRECTORY != 0 {\n\t\tflag |= syscall.O_DIRECTORY\n\t}\n\tif oflag&sys.O_DSYNC != 0 {\n\t\tflag |= syscall.O_DSYNC\n\t}\n\tif oflag&sys.O_NOFOLLOW != 0 {\n\t\tflag |= syscall.O_NOFOLLOW\n\t}\n\tif oflag&sys.O_NONBLOCK != 0 {\n\t\tflag |= syscall.O_NONBLOCK\n\t}\n\tif oflag&sys.O_RSYNC != 0 {\n\t\tflag |= syscall.O_RSYNC\n\t}\n\treturn flag\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_notwindows.go",
    "content": "//go:build !windows && !tinygo\n\npackage sysfs\n\nimport (\n\t\"io/fs\"\n\t\"os\"\n\n\t\"github.com/tetratelabs/wazero/experimental/sys\"\n)\n\n// openFile is like os.OpenFile except it accepts a sys.Oflag and returns\n// sys.Errno. A zero sys.Errno is success.\nfunc openFile(path string, oflag sys.Oflag, perm fs.FileMode) (*os.File, sys.Errno) {\n\tf, err := os.OpenFile(path, toOsOpenFlag(oflag), perm)\n\t// Note: This does not return a sys.File because sys.FS that returns\n\t// one may want to hide the real OS path. For example, this is needed for\n\t// pre-opens.\n\treturn f, sys.UnwrapOSError(err)\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_sun.go",
    "content": "//go:build illumos || solaris\n\npackage sysfs\n\nimport (\n\t\"syscall\"\n\n\t\"github.com/tetratelabs/wazero/experimental/sys\"\n)\n\nconst supportedSyscallOflag = sys.O_DIRECTORY | sys.O_DSYNC | sys.O_NOFOLLOW | sys.O_NONBLOCK | sys.O_RSYNC\n\nfunc withSyscallOflag(oflag sys.Oflag, flag int) int {\n\tif oflag&sys.O_DIRECTORY != 0 {\n\t\t// See https://github.com/illumos/illumos-gate/blob/edd580643f2cf1434e252cd7779e83182ea84945/usr/src/uts/common/sys/fcntl.h#L90\n\t\tflag |= 0x1000000\n\t}\n\tif oflag&sys.O_DSYNC != 0 {\n\t\tflag |= syscall.O_DSYNC\n\t}\n\tif oflag&sys.O_NOFOLLOW != 0 {\n\t\tflag |= syscall.O_NOFOLLOW\n\t}\n\tif oflag&sys.O_NONBLOCK != 0 {\n\t\tflag |= syscall.O_NONBLOCK\n\t}\n\tif oflag&sys.O_RSYNC != 0 {\n\t\tflag |= syscall.O_RSYNC\n\t}\n\treturn flag\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_tinygo.go",
    "content": "//go:build tinygo\n\npackage sysfs\n\nimport (\n\t\"io/fs\"\n\t\"os\"\n\n\t\"github.com/tetratelabs/wazero/experimental/sys\"\n)\n\nconst supportedSyscallOflag = sys.Oflag(0)\n\nfunc withSyscallOflag(oflag sys.Oflag, flag int) int {\n\t// O_DIRECTORY not defined\n\t// O_DSYNC not defined\n\t// O_NOFOLLOW not defined\n\t// O_NONBLOCK not defined\n\t// O_RSYNC not defined\n\treturn flag\n}\n\nfunc openFile(path string, oflag sys.Oflag, perm fs.FileMode) (*os.File, sys.Errno) {\n\treturn nil, sys.ENOSYS\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_unsupported.go",
    "content": "//go:build !darwin && !linux && !windows && !illumos && !solaris && !freebsd\n\npackage sysfs\n\nimport (\n\t\"github.com/tetratelabs/wazero/experimental/sys\"\n)\n\nconst supportedSyscallOflag = sys.Oflag(0)\n\nfunc withSyscallOflag(oflag sys.Oflag, flag int) int {\n\t// O_DIRECTORY not defined\n\t// O_DSYNC not defined\n\t// O_NOFOLLOW not defined\n\t// O_NONBLOCK not defined\n\t// O_RSYNC not defined\n\treturn flag\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_windows.go",
    "content": "package sysfs\n\nimport (\n\t\"io/fs\"\n\t\"os\"\n\t\"strings\"\n\t\"syscall\"\n\t\"unsafe\"\n\n\t\"github.com/tetratelabs/wazero/experimental/sys\"\n)\n\nfunc openFile(path string, oflag sys.Oflag, perm fs.FileMode) (*os.File, sys.Errno) {\n\tisDir := oflag&sys.O_DIRECTORY > 0\n\tflag := toOsOpenFlag(oflag)\n\n\t// TODO: document why we are opening twice\n\tfd, err := open(path, flag|syscall.O_CLOEXEC, uint32(perm))\n\tif err == nil {\n\t\treturn os.NewFile(uintptr(fd), path), 0\n\t}\n\n\t// TODO: Set FILE_SHARE_DELETE for directory as well.\n\tf, err := os.OpenFile(path, flag, perm)\n\terrno := sys.UnwrapOSError(err)\n\tif errno == 0 {\n\t\treturn f, 0\n\t}\n\n\tswitch errno {\n\tcase sys.EINVAL:\n\t\t// WASI expects ENOTDIR for a file path with a trailing slash.\n\t\tif strings.HasSuffix(path, \"/\") {\n\t\t\terrno = sys.ENOTDIR\n\t\t}\n\t// To match expectations of WASI, e.g. TinyGo TestStatBadDir, return\n\t// ENOENT, not ENOTDIR.\n\tcase sys.ENOTDIR:\n\t\tif !strings.HasSuffix(path, \"/\") {\n\t\t\terrno = sys.ENOENT\n\t\t}\n\tcase sys.ENOENT:\n\t\tif isSymlink(path) {\n\t\t\t// Either symlink or hard link not found. We change the returned\n\t\t\t// errno depending on if it is symlink or not to have consistent\n\t\t\t// behavior across OSes.\n\t\t\tif isDir {\n\t\t\t\t// Dangling symlink dir must raise ENOTDIR.\n\t\t\t\terrno = sys.ENOTDIR\n\t\t\t} else {\n\t\t\t\terrno = sys.ELOOP\n\t\t\t}\n\t\t}\n\t}\n\treturn f, errno\n}\n\nconst supportedSyscallOflag = sys.O_NONBLOCK\n\n// Map to synthetic values here https://github.com/golang/go/blob/go1.20/src/syscall/types_windows.go#L34-L48\nfunc withSyscallOflag(oflag sys.Oflag, flag int) int {\n\t// O_DIRECTORY not defined in windows\n\t// O_DSYNC not defined in windows\n\t// O_NOFOLLOW not defined in windows\n\tif oflag&sys.O_NONBLOCK != 0 {\n\t\tflag |= syscall.O_NONBLOCK\n\t}\n\t// O_RSYNC not defined in windows\n\treturn flag\n}\n\nfunc isSymlink(path string) bool {\n\tif st, e := os.Lstat(path); e == nil && st.Mode()&os.ModeSymlink != 0 {\n\t\treturn true\n\t}\n\treturn false\n}\n\n// # Differences from syscall.Open\n//\n// This code is based on syscall.Open from the below link with some differences\n// https://github.com/golang/go/blame/go1.20/src/syscall/syscall_windows.go#L308-L379\n//\n//   - syscall.O_CREAT doesn't imply syscall.GENERIC_WRITE as that breaks\n//     flag expectations in wasi.\n//   - add support for setting FILE_SHARE_DELETE.\nfunc open(path string, mode int, perm uint32) (fd syscall.Handle, err error) {\n\tif len(path) == 0 {\n\t\treturn syscall.InvalidHandle, syscall.ERROR_FILE_NOT_FOUND\n\t}\n\tpathp, err := syscall.UTF16PtrFromString(path)\n\tif err != nil {\n\t\treturn syscall.InvalidHandle, err\n\t}\n\tvar access uint32\n\tswitch mode & (syscall.O_RDONLY | syscall.O_WRONLY | syscall.O_RDWR) {\n\tcase syscall.O_RDONLY:\n\t\taccess = syscall.GENERIC_READ\n\tcase syscall.O_WRONLY:\n\t\taccess = syscall.GENERIC_WRITE\n\tcase syscall.O_RDWR:\n\t\taccess = syscall.GENERIC_READ | syscall.GENERIC_WRITE\n\t}\n\tif mode&syscall.O_APPEND != 0 {\n\t\taccess &^= syscall.GENERIC_WRITE\n\t\taccess |= syscall.FILE_APPEND_DATA\n\t}\n\tsharemode := uint32(syscall.FILE_SHARE_READ | syscall.FILE_SHARE_WRITE | syscall.FILE_SHARE_DELETE)\n\tvar sa *syscall.SecurityAttributes\n\tif mode&syscall.O_CLOEXEC == 0 {\n\t\tvar _sa syscall.SecurityAttributes\n\t\t_sa.Length = uint32(unsafe.Sizeof(sa))\n\t\t_sa.InheritHandle = 1\n\t\tsa = &_sa\n\t}\n\tvar createmode uint32\n\tswitch {\n\tcase mode&(syscall.O_CREAT|syscall.O_EXCL) == (syscall.O_CREAT | syscall.O_EXCL):\n\t\tcreatemode = syscall.CREATE_NEW\n\tcase mode&(syscall.O_CREAT|syscall.O_TRUNC) == (syscall.O_CREAT | syscall.O_TRUNC):\n\t\tcreatemode = syscall.CREATE_ALWAYS\n\tcase mode&syscall.O_CREAT == syscall.O_CREAT:\n\t\tcreatemode = syscall.OPEN_ALWAYS\n\tcase mode&syscall.O_TRUNC == syscall.O_TRUNC:\n\t\tcreatemode = syscall.TRUNCATE_EXISTING\n\tdefault:\n\t\tcreatemode = syscall.OPEN_EXISTING\n\t}\n\tvar attrs uint32 = syscall.FILE_ATTRIBUTE_NORMAL\n\tif perm&syscall.S_IWRITE == 0 {\n\t\tattrs = syscall.FILE_ATTRIBUTE_READONLY\n\t\tif createmode == syscall.CREATE_ALWAYS {\n\t\t\t// We have been asked to create a read-only file.\n\t\t\t// If the file already exists, the semantics of\n\t\t\t// the Unix open system call is to preserve the\n\t\t\t// existing permissions. If we pass CREATE_ALWAYS\n\t\t\t// and FILE_ATTRIBUTE_READONLY to CreateFile,\n\t\t\t// and the file already exists, CreateFile will\n\t\t\t// change the file permissions.\n\t\t\t// Avoid that to preserve the Unix semantics.\n\t\t\th, e := syscall.CreateFile(pathp, access, sharemode, sa, syscall.TRUNCATE_EXISTING, syscall.FILE_ATTRIBUTE_NORMAL, 0)\n\t\t\tswitch e {\n\t\t\tcase syscall.ERROR_FILE_NOT_FOUND, syscall.ERROR_PATH_NOT_FOUND:\n\t\t\t\t// File does not exist. These are the same\n\t\t\t\t// errors as Errno.Is checks for ErrNotExist.\n\t\t\t\t// Carry on to create the file.\n\t\t\tdefault:\n\t\t\t\t// Success or some different error.\n\t\t\t\treturn h, e\n\t\t\t}\n\t\t}\n\t}\n\n\t// This shouldn't be included before 1.20 to have consistent behavior.\n\t// https://github.com/golang/go/commit/0f0aa5d8a6a0253627d58b3aa083b24a1091933f\n\tif createmode == syscall.OPEN_EXISTING && access == syscall.GENERIC_READ {\n\t\t// Necessary for opening directory handles.\n\t\tattrs |= syscall.FILE_FLAG_BACKUP_SEMANTICS\n\t}\n\n\th, e := syscall.CreateFile(pathp, access, sharemode, sa, createmode, attrs, 0)\n\treturn h, e\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/osfile.go",
    "content": "package sysfs\n\nimport (\n\t\"io\"\n\t\"io/fs\"\n\t\"os\"\n\n\texperimentalsys \"github.com/tetratelabs/wazero/experimental/sys\"\n\t\"github.com/tetratelabs/wazero/internal/fsapi\"\n\t\"github.com/tetratelabs/wazero/sys\"\n)\n\nfunc newOsFile(path string, flag experimentalsys.Oflag, perm fs.FileMode, f *os.File) fsapi.File {\n\t// On POSIX, if a file is removed from or added to the directory after the\n\t// most recent call to opendir() or rewinddir(), whether a subsequent call\n\t// to readdir() returns an entry for that file is unspecified.\n\t//\n\t// And Windows cannot read files added to a directory after it was opened.\n\t// This was noticed in #1087 in zig tests.\n\t//\n\t// So there is no guarantee that files added after opendir() will be visible\n\t// in readdir(). Since we want those files to be visible, we need to\n\t// reopendir() to get the new state of the directory before readdir().\n\treturn &osFile{path: path, flag: flag, perm: perm, reopenDir: true, file: f, fd: f.Fd()}\n}\n\n// osFile is a file opened with this package, and uses os.File or syscalls to\n// implement api.File.\ntype osFile struct {\n\tpath string\n\tflag experimentalsys.Oflag\n\tperm fs.FileMode\n\tfile *os.File\n\tfd   uintptr\n\n\t// reopenDir is true if reopen should be called before Readdir. This flag\n\t// is deferred until Readdir to prevent redundant rewinds. This could\n\t// happen if Seek(0) was called twice, or if in Windows, Seek(0) was called\n\t// before Readdir.\n\treopenDir bool\n\n\t// closed is true when closed was called. This ensures proper sys.EBADF\n\tclosed bool\n\n\t// cachedStat includes fields that won't change while a file is open.\n\tcachedSt *cachedStat\n}\n\n// cachedStat returns the cacheable parts of sys.Stat_t or an error if they\n// couldn't be retrieved.\nfunc (f *osFile) cachedStat() (dev uint64, ino sys.Inode, isDir bool, errno experimentalsys.Errno) {\n\tif f.cachedSt == nil {\n\t\tif _, errno = f.Stat(); errno != 0 {\n\t\t\treturn\n\t\t}\n\t}\n\treturn f.cachedSt.dev, f.cachedSt.ino, f.cachedSt.isDir, 0\n}\n\n// Dev implements the same method as documented on sys.File\nfunc (f *osFile) Dev() (uint64, experimentalsys.Errno) {\n\tdev, _, _, errno := f.cachedStat()\n\treturn dev, errno\n}\n\n// Ino implements the same method as documented on sys.File\nfunc (f *osFile) Ino() (sys.Inode, experimentalsys.Errno) {\n\t_, ino, _, errno := f.cachedStat()\n\treturn ino, errno\n}\n\n// IsDir implements the same method as documented on sys.File\nfunc (f *osFile) IsDir() (bool, experimentalsys.Errno) {\n\t_, _, isDir, errno := f.cachedStat()\n\treturn isDir, errno\n}\n\n// IsAppend implements File.IsAppend\nfunc (f *osFile) IsAppend() bool {\n\treturn f.flag&experimentalsys.O_APPEND == experimentalsys.O_APPEND\n}\n\n// SetAppend implements the same method as documented on sys.File\nfunc (f *osFile) SetAppend(enable bool) (errno experimentalsys.Errno) {\n\tif enable {\n\t\tf.flag |= experimentalsys.O_APPEND\n\t} else {\n\t\tf.flag &= ^experimentalsys.O_APPEND\n\t}\n\n\t// appendMode cannot be changed later, so we have to re-open the file\n\t// https://github.com/golang/go/blob/go1.23/src/os/file_unix.go#L60\n\treturn fileError(f, f.closed, f.reopen())\n}\n\nfunc (f *osFile) reopen() (errno experimentalsys.Errno) {\n\tvar (\n\t\tisDir  bool\n\t\toffset int64\n\t\terr    error\n\t)\n\n\tisDir, errno = f.IsDir()\n\tif errno != 0 {\n\t\treturn errno\n\t}\n\n\tif !isDir {\n\t\toffset, err = f.file.Seek(0, io.SeekCurrent)\n\t\tif err != nil {\n\t\t\treturn experimentalsys.UnwrapOSError(err)\n\t\t}\n\t}\n\n\t// Clear any create or trunc flag, as we are re-opening, not re-creating.\n\tflag := f.flag &^ (experimentalsys.O_CREAT | experimentalsys.O_TRUNC)\n\tfile, errno := OpenFile(f.path, flag, f.perm)\n\tif errno != 0 {\n\t\treturn errno\n\t}\n\terrno = f.checkSameFile(file)\n\tif errno != 0 {\n\t\treturn errno\n\t}\n\n\tif !isDir {\n\t\t_, err = file.Seek(offset, io.SeekStart)\n\t\tif err != nil {\n\t\t\t_ = file.Close()\n\t\t\treturn experimentalsys.UnwrapOSError(err)\n\t\t}\n\t}\n\n\t// Only update f on success.\n\t_ = f.file.Close()\n\tf.file = file\n\tf.fd = file.Fd()\n\treturn 0\n}\n\nfunc (f *osFile) checkSameFile(osf *os.File) experimentalsys.Errno {\n\tfi1, err := f.file.Stat()\n\tif err != nil {\n\t\treturn experimentalsys.UnwrapOSError(err)\n\t}\n\tfi2, err := osf.Stat()\n\tif err != nil {\n\t\treturn experimentalsys.UnwrapOSError(err)\n\t}\n\tif os.SameFile(fi1, fi2) {\n\t\treturn 0\n\t}\n\treturn experimentalsys.ENOENT\n}\n\n// IsNonblock implements the same method as documented on fsapi.File\nfunc (f *osFile) IsNonblock() bool {\n\treturn isNonblock(f)\n}\n\n// SetNonblock implements the same method as documented on fsapi.File\nfunc (f *osFile) SetNonblock(enable bool) (errno experimentalsys.Errno) {\n\tif enable {\n\t\tf.flag |= experimentalsys.O_NONBLOCK\n\t} else {\n\t\tf.flag &= ^experimentalsys.O_NONBLOCK\n\t}\n\tif errno = setNonblock(f.fd, enable); errno != 0 {\n\t\treturn fileError(f, f.closed, errno)\n\t}\n\treturn 0\n}\n\n// Stat implements the same method as documented on sys.File\nfunc (f *osFile) Stat() (sys.Stat_t, experimentalsys.Errno) {\n\tif f.closed {\n\t\treturn sys.Stat_t{}, experimentalsys.EBADF\n\t}\n\n\tst, errno := statFile(f.file)\n\tswitch errno {\n\tcase 0:\n\t\tf.cachedSt = &cachedStat{dev: st.Dev, ino: st.Ino, isDir: st.Mode&fs.ModeDir == fs.ModeDir}\n\tcase experimentalsys.EIO:\n\t\terrno = experimentalsys.EBADF\n\t}\n\treturn st, errno\n}\n\n// Read implements the same method as documented on sys.File\nfunc (f *osFile) Read(buf []byte) (n int, errno experimentalsys.Errno) {\n\tif len(buf) == 0 {\n\t\treturn 0, 0 // Short-circuit 0-len reads.\n\t}\n\tif nonBlockingFileReadSupported && f.IsNonblock() {\n\t\tn, errno = readFd(f.fd, buf)\n\t} else {\n\t\tn, errno = read(f.file, buf)\n\t}\n\tif errno != 0 {\n\t\t// Defer validation overhead until we've already had an error.\n\t\terrno = fileError(f, f.closed, errno)\n\t}\n\treturn\n}\n\n// Pread implements the same method as documented on sys.File\nfunc (f *osFile) Pread(buf []byte, off int64) (n int, errno experimentalsys.Errno) {\n\tif n, errno = pread(f.file, buf, off); errno != 0 {\n\t\t// Defer validation overhead until we've already had an error.\n\t\terrno = fileError(f, f.closed, errno)\n\t}\n\treturn\n}\n\n// Seek implements the same method as documented on sys.File\nfunc (f *osFile) Seek(offset int64, whence int) (newOffset int64, errno experimentalsys.Errno) {\n\tif newOffset, errno = seek(f.file, offset, whence); errno != 0 {\n\t\t// Defer validation overhead until we've already had an error.\n\t\terrno = fileError(f, f.closed, errno)\n\n\t\t// If the error was trying to rewind a directory, re-open it. Notably,\n\t\t// seeking to zero on a directory doesn't work on Windows with Go 1.19.\n\t\tif errno == experimentalsys.EISDIR && offset == 0 && whence == io.SeekStart {\n\t\t\terrno = 0\n\t\t\tf.reopenDir = true\n\t\t}\n\t}\n\treturn\n}\n\n// Poll implements the same method as documented on fsapi.File\nfunc (f *osFile) Poll(flag fsapi.Pflag, timeoutMillis int32) (ready bool, errno experimentalsys.Errno) {\n\treturn poll(f.fd, flag, timeoutMillis)\n}\n\n// Readdir implements File.Readdir. Notably, this uses \"Readdir\", not\n// \"ReadDir\", from os.File.\nfunc (f *osFile) Readdir(n int) (dirents []experimentalsys.Dirent, errno experimentalsys.Errno) {\n\tif f.reopenDir { // re-open the directory if needed.\n\t\tf.reopenDir = false\n\t\tif errno = adjustReaddirErr(f, f.closed, f.reopen()); errno != 0 {\n\t\t\treturn\n\t\t}\n\t}\n\n\tif dirents, errno = readdir(f.file, f.path, n); errno != 0 {\n\t\terrno = adjustReaddirErr(f, f.closed, errno)\n\t}\n\treturn\n}\n\n// Write implements the same method as documented on sys.File\nfunc (f *osFile) Write(buf []byte) (n int, errno experimentalsys.Errno) {\n\tif len(buf) == 0 {\n\t\treturn 0, 0 // Short-circuit 0-len writes.\n\t}\n\tif nonBlockingFileWriteSupported && f.IsNonblock() {\n\t\tn, errno = writeFd(f.fd, buf)\n\t} else if n, errno = write(f.file, buf); errno != 0 {\n\t\t// Defer validation overhead until we've already had an error.\n\t\terrno = fileError(f, f.closed, errno)\n\t}\n\treturn\n}\n\n// Pwrite implements the same method as documented on sys.File\nfunc (f *osFile) Pwrite(buf []byte, off int64) (n int, errno experimentalsys.Errno) {\n\tif n, errno = pwrite(f.file, buf, off); errno != 0 {\n\t\t// Defer validation overhead until we've already had an error.\n\t\terrno = fileError(f, f.closed, errno)\n\t}\n\treturn\n}\n\n// Truncate implements the same method as documented on sys.File\nfunc (f *osFile) Truncate(size int64) (errno experimentalsys.Errno) {\n\tif size < 0 {\n\t\treturn experimentalsys.EINVAL\n\t}\n\tif errno = experimentalsys.UnwrapOSError(f.file.Truncate(size)); errno != 0 {\n\t\t// Defer validation overhead until we've already had an error.\n\t\terrno = fileError(f, f.closed, errno)\n\t}\n\treturn\n}\n\n// Sync implements the same method as documented on sys.File\nfunc (f *osFile) Sync() experimentalsys.Errno {\n\treturn fsync(f.file)\n}\n\n// Datasync implements the same method as documented on sys.File\nfunc (f *osFile) Datasync() experimentalsys.Errno {\n\treturn datasync(f.file)\n}\n\n// Utimens implements the same method as documented on sys.File\nfunc (f *osFile) Utimens(atim, mtim int64) experimentalsys.Errno {\n\tif f.closed {\n\t\treturn experimentalsys.EBADF\n\t}\n\n\terr := futimens(f.fd, atim, mtim)\n\treturn experimentalsys.UnwrapOSError(err)\n}\n\n// Close implements the same method as documented on sys.File\nfunc (f *osFile) Close() experimentalsys.Errno {\n\tif f.closed {\n\t\treturn 0\n\t}\n\tf.closed = true\n\treturn f.close()\n}\n\nfunc (f *osFile) close() experimentalsys.Errno {\n\treturn experimentalsys.UnwrapOSError(f.file.Close())\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/poll.go",
    "content": "//go:build windows || (linux && !tinygo) || darwin\n\npackage sysfs\n\nimport (\n\t\"github.com/tetratelabs/wazero/experimental/sys\"\n\t\"github.com/tetratelabs/wazero/internal/fsapi\"\n)\n\n// poll implements `Poll` as documented on sys.File via a file descriptor.\nfunc poll(fd uintptr, flag fsapi.Pflag, timeoutMillis int32) (ready bool, errno sys.Errno) {\n\tif flag != fsapi.POLLIN {\n\t\treturn false, sys.ENOTSUP\n\t}\n\tfds := []pollFd{newPollFd(fd, _POLLIN, 0)}\n\tcount, errno := _poll(fds, timeoutMillis)\n\treturn count > 0, errno\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/poll_darwin.go",
    "content": "package sysfs\n\nimport (\n\t\"unsafe\"\n\n\t\"github.com/tetratelabs/wazero/experimental/sys\"\n)\n\n// pollFd is the struct to query for file descriptor events using poll.\ntype pollFd struct {\n\t// fd is the file descriptor.\n\tfd int32\n\t// events is a bitmap containing the requested events.\n\tevents int16\n\t// revents is a bitmap containing the returned events.\n\trevents int16\n}\n\n// newPollFd is a constructor for pollFd that abstracts the platform-specific type of file descriptors.\nfunc newPollFd(fd uintptr, events, revents int16) pollFd {\n\treturn pollFd{fd: int32(fd), events: events, revents: revents}\n}\n\n// _POLLIN subscribes a notification when any readable data is available.\nconst _POLLIN = 0x0001\n\n// _poll implements poll on Darwin via the corresponding libc function.\nfunc _poll(fds []pollFd, timeoutMillis int32) (n int, errno sys.Errno) {\n\tvar fdptr *pollFd\n\tnfds := len(fds)\n\tif nfds > 0 {\n\t\tfdptr = &fds[0]\n\t}\n\tn1, _, err := syscall_syscall6(\n\t\tlibc_poll_trampoline_addr,\n\t\tuintptr(unsafe.Pointer(fdptr)),\n\t\tuintptr(nfds),\n\t\tuintptr(int(timeoutMillis)),\n\t\tuintptr(unsafe.Pointer(nil)),\n\t\tuintptr(unsafe.Pointer(nil)),\n\t\tuintptr(unsafe.Pointer(nil)))\n\treturn int(n1), sys.UnwrapOSError(err)\n}\n\n// libc_poll_trampoline_addr is the address of the\n// `libc_poll_trampoline` symbol, defined in `poll_darwin.s`.\n//\n// We use this to invoke the syscall through syscall_syscall6 imported below.\nvar libc_poll_trampoline_addr uintptr\n\n// Imports the select symbol from libc as `libc_poll`.\n//\n// Note: CGO mechanisms are used in darwin regardless of the CGO_ENABLED value\n// or the \"cgo\" build flag. See /RATIONALE.md for why.\n//go:cgo_import_dynamic libc_poll poll \"/usr/lib/libSystem.B.dylib\"\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/poll_darwin.s",
    "content": "// lifted from golang.org/x/sys unix\n#include \"textflag.h\"\n\nTEXT libc_poll_trampoline<>(SB), NOSPLIT, $0-0\n\tJMP libc_poll(SB)\n\nGLOBL ·libc_poll_trampoline_addr(SB), RODATA, $8\nDATA ·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB)\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/poll_linux.go",
    "content": "//go:build !tinygo\n\npackage sysfs\n\nimport (\n\t\"syscall\"\n\t\"time\"\n\t\"unsafe\"\n\n\t\"github.com/tetratelabs/wazero/experimental/sys\"\n)\n\n// pollFd is the struct to query for file descriptor events using poll.\ntype pollFd struct {\n\t// fd is the file descriptor.\n\tfd int32\n\t// events is a bitmap containing the requested events.\n\tevents int16\n\t// revents is a bitmap containing the returned events.\n\trevents int16\n}\n\n// newPollFd is a constructor for pollFd that abstracts the platform-specific type of file descriptors.\nfunc newPollFd(fd uintptr, events, revents int16) pollFd {\n\treturn pollFd{fd: int32(fd), events: events, revents: revents}\n}\n\n// _POLLIN subscribes a notification when any readable data is available.\nconst _POLLIN = 0x0001\n\n// _poll implements poll on Linux via ppoll.\nfunc _poll(fds []pollFd, timeoutMillis int32) (n int, errno sys.Errno) {\n\tvar ts syscall.Timespec\n\tif timeoutMillis >= 0 {\n\t\tts = syscall.NsecToTimespec(int64(time.Duration(timeoutMillis) * time.Millisecond))\n\t}\n\treturn ppoll(fds, &ts)\n}\n\n// ppoll is a poll variant that allows to subscribe to a mask of signals.\n// However, we do not need such mask, so the corresponding argument is always nil.\nfunc ppoll(fds []pollFd, timespec *syscall.Timespec) (n int, err sys.Errno) {\n\tvar fdptr *pollFd\n\tnfd := len(fds)\n\tif nfd != 0 {\n\t\tfdptr = &fds[0]\n\t}\n\n\tn1, _, errno := syscall.Syscall6(\n\t\tuintptr(syscall.SYS_PPOLL),\n\t\tuintptr(unsafe.Pointer(fdptr)),\n\t\tuintptr(nfd),\n\t\tuintptr(unsafe.Pointer(timespec)),\n\t\tuintptr(unsafe.Pointer(nil)), // sigmask is currently always ignored\n\t\tuintptr(unsafe.Pointer(nil)),\n\t\tuintptr(unsafe.Pointer(nil)))\n\n\treturn int(n1), sys.UnwrapOSError(errno)\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/poll_unsupported.go",
    "content": "//go:build !(linux || darwin || windows) || tinygo\n\npackage sysfs\n\nimport (\n\t\"github.com/tetratelabs/wazero/experimental/sys\"\n\t\"github.com/tetratelabs/wazero/internal/fsapi\"\n)\n\n// poll implements `Poll` as documented on fsapi.File via a file descriptor.\nfunc poll(uintptr, fsapi.Pflag, int32) (bool, sys.Errno) {\n\treturn false, sys.ENOSYS\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/poll_windows.go",
    "content": "package sysfs\n\nimport (\n\t\"syscall\"\n\t\"time\"\n\t\"unsafe\"\n\n\t\"github.com/tetratelabs/wazero/experimental/sys\"\n)\n\nvar (\n\tprocWSAPoll          = modws2_32.NewProc(\"WSAPoll\")\n\tprocGetNamedPipeInfo = kernel32.NewProc(\"GetNamedPipeInfo\")\n)\n\nconst (\n\t// _POLLRDNORM subscribes to normal data for read.\n\t_POLLRDNORM = 0x0100\n\t// _POLLRDBAND subscribes to priority band (out-of-band) data for read.\n\t_POLLRDBAND = 0x0200\n\t// _POLLIN subscribes a notification when any readable data is available.\n\t_POLLIN = (_POLLRDNORM | _POLLRDBAND)\n)\n\n// pollFd is the struct to query for file descriptor events using poll.\ntype pollFd struct {\n\t// fd is the file descriptor.\n\tfd uintptr\n\t// events is a bitmap containing the requested events.\n\tevents int16\n\t// revents is a bitmap containing the returned events.\n\trevents int16\n}\n\n// newPollFd is a constructor for pollFd that abstracts the platform-specific type of file descriptors.\nfunc newPollFd(fd uintptr, events, revents int16) pollFd {\n\treturn pollFd{fd: fd, events: events, revents: revents}\n}\n\n// pollInterval is the interval between each calls to peekNamedPipe in selectAllHandles\nconst pollInterval = 100 * time.Millisecond\n\n// _poll implements poll on Windows, for a subset of cases.\n//\n// fds may contain any number of file handles, but regular files and pipes are only processed for _POLLIN.\n// Stdin is a pipe, thus it is checked for readiness when present. Pipes are checked using PeekNamedPipe.\n// Regular files always immediately reported as ready, regardless their actual state and timeouts.\n//\n// If n==0 it will wait for the given timeout duration, but it will return sys.ENOSYS if timeout is nil,\n// i.e. it won't block indefinitely. The given ctx is used to allow for cancellation,\n// and it is currently used only in tests.\n//\n// The implementation actually polls every 100 milliseconds (pollInterval) until it reaches the\n// given timeout (in millis).\n//\n// The duration may be negative, in which case it will wait indefinitely. The given ctx is\n// used to allow for cancellation, and it is currently used only in tests.\nfunc _poll(fds []pollFd, timeoutMillis int32) (n int, errno sys.Errno) {\n\tif fds == nil {\n\t\treturn -1, sys.ENOSYS\n\t}\n\n\tregular, pipes, sockets, errno := partionByFtype(fds)\n\tnregular := len(regular)\n\tif errno != 0 {\n\t\treturn -1, errno\n\t}\n\n\t// Ticker that emits at every pollInterval.\n\ttick := time.NewTicker(pollInterval)\n\ttickCh := tick.C\n\tdefer tick.Stop()\n\n\t// Timer that expires after the given duration.\n\t// Initialize afterCh as nil: the select below will wait forever.\n\tvar afterCh <-chan time.Time\n\tif timeoutMillis >= 0 {\n\t\t// If duration is not nil, instantiate the timer.\n\t\tafter := time.NewTimer(time.Duration(timeoutMillis) * time.Millisecond)\n\t\tdefer after.Stop()\n\t\tafterCh = after.C\n\t}\n\n\tnpipes, nsockets, errno := peekAll(pipes, sockets)\n\tif errno != 0 {\n\t\treturn -1, errno\n\t}\n\tcount := nregular + npipes + nsockets\n\tif count > 0 {\n\t\treturn count, 0\n\t}\n\n\tfor {\n\t\tselect {\n\t\tcase <-afterCh:\n\t\t\treturn 0, 0\n\t\tcase <-tickCh:\n\t\t\tnpipes, nsockets, errno := peekAll(pipes, sockets)\n\t\t\tif errno != 0 {\n\t\t\t\treturn -1, errno\n\t\t\t}\n\t\t\tcount = nregular + npipes + nsockets\n\t\t\tif count > 0 {\n\t\t\t\treturn count, 0\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc peekAll(pipes, sockets []pollFd) (npipes, nsockets int, errno sys.Errno) {\n\tnpipes, errno = peekPipes(pipes)\n\tif errno != 0 {\n\t\treturn\n\t}\n\n\t// Invoke wsaPoll with a 0-timeout to avoid blocking.\n\t// Timeouts are handled in pollWithContext instead.\n\tnsockets, errno = wsaPoll(sockets, 0)\n\tif errno != 0 {\n\t\treturn\n\t}\n\n\tcount := npipes + nsockets\n\tif count > 0 {\n\t\treturn\n\t}\n\n\treturn\n}\n\nfunc peekPipes(fds []pollFd) (n int, errno sys.Errno) {\n\tfor _, fd := range fds {\n\t\tbytes, errno := peekNamedPipe(syscall.Handle(fd.fd))\n\t\tif errno != 0 {\n\t\t\treturn -1, sys.UnwrapOSError(errno)\n\t\t}\n\t\tif bytes > 0 {\n\t\t\tn++\n\t\t}\n\t}\n\treturn\n}\n\n// wsaPoll is the WSAPoll function from winsock2.\n//\n// See https://learn.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-wsapoll\nfunc wsaPoll(fds []pollFd, timeout int) (n int, errno sys.Errno) {\n\tif len(fds) > 0 {\n\t\tsockptr := &fds[0]\n\t\tns, _, e := syscall.SyscallN(\n\t\t\tprocWSAPoll.Addr(),\n\t\t\tuintptr(unsafe.Pointer(sockptr)),\n\t\t\tuintptr(len(fds)),\n\t\t\tuintptr(timeout))\n\t\tif e != 0 {\n\t\t\treturn -1, sys.UnwrapOSError(e)\n\t\t}\n\t\tn = int(ns)\n\t}\n\treturn\n}\n\n// ftype is a type of file that can be handled by poll.\ntype ftype uint8\n\nconst (\n\tftype_regular ftype = iota\n\tftype_pipe\n\tftype_socket\n)\n\n// partionByFtype checks the type of each fd in fds and returns 3 distinct partitions\n// for regular files, named pipes and sockets.\nfunc partionByFtype(fds []pollFd) (regular, pipe, socket []pollFd, errno sys.Errno) {\n\tfor _, pfd := range fds {\n\t\tt, errno := ftypeOf(pfd.fd)\n\t\tif errno != 0 {\n\t\t\treturn nil, nil, nil, errno\n\t\t}\n\t\tswitch t {\n\t\tcase ftype_regular:\n\t\t\tregular = append(regular, pfd)\n\t\tcase ftype_pipe:\n\t\t\tpipe = append(pipe, pfd)\n\t\tcase ftype_socket:\n\t\t\tsocket = append(socket, pfd)\n\t\t}\n\t}\n\treturn\n}\n\n// ftypeOf checks the type of fd and return the corresponding ftype.\nfunc ftypeOf(fd uintptr) (ftype, sys.Errno) {\n\th := syscall.Handle(fd)\n\tt, err := syscall.GetFileType(h)\n\tif err != nil {\n\t\treturn 0, sys.UnwrapOSError(err)\n\t}\n\tswitch t {\n\tcase syscall.FILE_TYPE_CHAR, syscall.FILE_TYPE_DISK:\n\t\treturn ftype_regular, 0\n\tcase syscall.FILE_TYPE_PIPE:\n\t\tif isSocket(h) {\n\t\t\treturn ftype_socket, 0\n\t\t} else {\n\t\t\treturn ftype_pipe, 0\n\t\t}\n\tdefault:\n\t\treturn ftype_regular, 0\n\t}\n}\n\n// isSocket returns true if the given file handle\n// is a pipe.\nfunc isSocket(fd syscall.Handle) bool {\n\tr, _, errno := syscall.SyscallN(\n\t\tprocGetNamedPipeInfo.Addr(),\n\t\tuintptr(fd),\n\t\tuintptr(unsafe.Pointer(nil)),\n\t\tuintptr(unsafe.Pointer(nil)),\n\t\tuintptr(unsafe.Pointer(nil)),\n\t\tuintptr(unsafe.Pointer(nil)))\n\treturn r == 0 || errno != 0\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/readfs.go",
    "content": "package sysfs\n\nimport (\n\t\"io/fs\"\n\n\texperimentalsys \"github.com/tetratelabs/wazero/experimental/sys\"\n)\n\ntype ReadFS struct {\n\texperimentalsys.FS\n}\n\n// OpenFile implements the same method as documented on sys.FS\nfunc (r *ReadFS) OpenFile(path string, flag experimentalsys.Oflag, perm fs.FileMode) (experimentalsys.File, experimentalsys.Errno) {\n\t// Mask the mutually exclusive bits as they determine write mode.\n\tswitch flag & (experimentalsys.O_RDONLY | experimentalsys.O_WRONLY | experimentalsys.O_RDWR) {\n\tcase experimentalsys.O_WRONLY, experimentalsys.O_RDWR:\n\t\t// Return the correct error if a directory was opened for write.\n\t\tif flag&experimentalsys.O_DIRECTORY != 0 {\n\t\t\treturn nil, experimentalsys.EISDIR\n\t\t}\n\t\treturn nil, experimentalsys.ENOSYS\n\tdefault: // sys.O_RDONLY (integer zero) so we are ok!\n\t}\n\n\tf, errno := r.FS.OpenFile(path, flag, perm)\n\tif errno != 0 {\n\t\treturn nil, errno\n\t}\n\treturn &readFile{f}, 0\n}\n\n// Mkdir implements the same method as documented on sys.FS\nfunc (r *ReadFS) Mkdir(path string, perm fs.FileMode) experimentalsys.Errno {\n\treturn experimentalsys.EROFS\n}\n\n// Chmod implements the same method as documented on sys.FS\nfunc (r *ReadFS) Chmod(path string, perm fs.FileMode) experimentalsys.Errno {\n\treturn experimentalsys.EROFS\n}\n\n// Rename implements the same method as documented on sys.FS\nfunc (r *ReadFS) Rename(from, to string) experimentalsys.Errno {\n\treturn experimentalsys.EROFS\n}\n\n// Rmdir implements the same method as documented on sys.FS\nfunc (r *ReadFS) Rmdir(path string) experimentalsys.Errno {\n\treturn experimentalsys.EROFS\n}\n\n// Link implements the same method as documented on sys.FS\nfunc (r *ReadFS) Link(_, _ string) experimentalsys.Errno {\n\treturn experimentalsys.EROFS\n}\n\n// Symlink implements the same method as documented on sys.FS\nfunc (r *ReadFS) Symlink(_, _ string) experimentalsys.Errno {\n\treturn experimentalsys.EROFS\n}\n\n// Unlink implements the same method as documented on sys.FS\nfunc (r *ReadFS) Unlink(path string) experimentalsys.Errno {\n\treturn experimentalsys.EROFS\n}\n\n// Utimens implements the same method as documented on sys.FS\nfunc (r *ReadFS) Utimens(path string, atim, mtim int64) experimentalsys.Errno {\n\treturn experimentalsys.EROFS\n}\n\n// compile-time check to ensure readFile implements api.File.\nvar _ experimentalsys.File = (*readFile)(nil)\n\ntype readFile struct {\n\texperimentalsys.File\n}\n\n// Write implements the same method as documented on sys.File.\nfunc (r *readFile) Write([]byte) (int, experimentalsys.Errno) {\n\treturn 0, r.writeErr()\n}\n\n// Pwrite implements the same method as documented on sys.File.\nfunc (r *readFile) Pwrite([]byte, int64) (n int, errno experimentalsys.Errno) {\n\treturn 0, r.writeErr()\n}\n\n// Truncate implements the same method as documented on sys.File.\nfunc (r *readFile) Truncate(int64) experimentalsys.Errno {\n\treturn r.writeErr()\n}\n\n// Sync implements the same method as documented on sys.File.\nfunc (r *readFile) Sync() experimentalsys.Errno {\n\treturn experimentalsys.EBADF\n}\n\n// Datasync implements the same method as documented on sys.File.\nfunc (r *readFile) Datasync() experimentalsys.Errno {\n\treturn experimentalsys.EBADF\n}\n\n// Utimens implements the same method as documented on sys.File.\nfunc (r *readFile) Utimens(int64, int64) experimentalsys.Errno {\n\treturn experimentalsys.EBADF\n}\n\nfunc (r *readFile) writeErr() experimentalsys.Errno {\n\tif isDir, errno := r.IsDir(); errno != 0 {\n\t\treturn errno\n\t} else if isDir {\n\t\treturn experimentalsys.EISDIR\n\t}\n\treturn experimentalsys.EBADF\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/rename.go",
    "content": "//go:build !windows && !plan9 && !tinygo\n\npackage sysfs\n\nimport (\n\t\"syscall\"\n\n\t\"github.com/tetratelabs/wazero/experimental/sys\"\n)\n\nfunc rename(from, to string) sys.Errno {\n\tif from == to {\n\t\treturn 0\n\t}\n\treturn sys.UnwrapOSError(syscall.Rename(from, to))\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/rename_plan9.go",
    "content": "package sysfs\n\nimport (\n\t\"os\"\n\n\t\"github.com/tetratelabs/wazero/experimental/sys\"\n)\n\nfunc rename(from, to string) sys.Errno {\n\tif from == to {\n\t\treturn 0\n\t}\n\treturn sys.UnwrapOSError(os.Rename(from, to))\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/rename_windows.go",
    "content": "package sysfs\n\nimport (\n\t\"os\"\n\t\"syscall\"\n\n\t\"github.com/tetratelabs/wazero/experimental/sys\"\n)\n\nfunc rename(from, to string) sys.Errno {\n\tif from == to {\n\t\treturn 0\n\t}\n\n\tvar fromIsDir, toIsDir bool\n\tif fromStat, errno := stat(from); errno != 0 {\n\t\treturn errno // failed to stat from\n\t} else {\n\t\tfromIsDir = fromStat.Mode.IsDir()\n\t}\n\tif toStat, errno := stat(to); errno == sys.ENOENT {\n\t\treturn syscallRename(from, to) // file or dir to not-exist is ok\n\t} else if errno != 0 {\n\t\treturn errno // failed to stat to\n\t} else {\n\t\ttoIsDir = toStat.Mode.IsDir()\n\t}\n\n\t// Now, handle known cases\n\tswitch {\n\tcase !fromIsDir && toIsDir: // file to dir\n\t\treturn sys.EISDIR\n\tcase !fromIsDir && !toIsDir: // file to file\n\t\t// Use os.Rename instead of syscall.Rename to overwrite a file.\n\t\t// This uses MoveFileEx instead of MoveFile (used by syscall.Rename).\n\t\treturn sys.UnwrapOSError(os.Rename(from, to))\n\tcase fromIsDir && !toIsDir: // dir to file\n\t\treturn sys.ENOTDIR\n\tdefault: // dir to dir\n\n\t\t// We can't tell if a directory is empty or not, via stat information.\n\t\t// Reading the directory is expensive, as it can buffer large amounts\n\t\t// of data on fail. Instead, speculatively try to remove the directory.\n\t\t// This is only one syscall and won't buffer anything.\n\t\tif errno := rmdir(to); errno == 0 || errno == sys.ENOENT {\n\t\t\treturn syscallRename(from, to)\n\t\t} else {\n\t\t\treturn errno\n\t\t}\n\t}\n}\n\nfunc syscallRename(from string, to string) sys.Errno {\n\treturn sys.UnwrapOSError(syscall.Rename(from, to))\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/sock.go",
    "content": "package sysfs\n\nimport (\n\t\"net\"\n\t\"os\"\n\n\texperimentalsys \"github.com/tetratelabs/wazero/experimental/sys\"\n\t\"github.com/tetratelabs/wazero/internal/fsapi\"\n\tsocketapi \"github.com/tetratelabs/wazero/internal/sock\"\n\t\"github.com/tetratelabs/wazero/sys\"\n)\n\n// NewTCPListenerFile creates a socketapi.TCPSock for a given *net.TCPListener.\nfunc NewTCPListenerFile(tl *net.TCPListener) socketapi.TCPSock {\n\treturn newTCPListenerFile(tl)\n}\n\n// baseSockFile implements base behavior for all TCPSock, TCPConn files,\n// regardless the platform.\ntype baseSockFile struct {\n\texperimentalsys.UnimplementedFile\n}\n\nvar _ experimentalsys.File = (*baseSockFile)(nil)\n\n// IsDir implements the same method as documented on File.IsDir\nfunc (*baseSockFile) IsDir() (bool, experimentalsys.Errno) {\n\t// We need to override this method because WASI-libc prestats the FD\n\t// and the default impl returns ENOSYS otherwise.\n\treturn false, 0\n}\n\n// Stat implements the same method as documented on File.Stat\nfunc (f *baseSockFile) Stat() (fs sys.Stat_t, errno experimentalsys.Errno) {\n\t// The mode is not really important, but it should be neither a regular file nor a directory.\n\tfs.Mode = os.ModeIrregular\n\treturn\n}\n\nvar _ socketapi.TCPSock = (*tcpListenerFile)(nil)\n\ntype tcpListenerFile struct {\n\tbaseSockFile\n\n\ttl       *net.TCPListener\n\tclosed   bool\n\tnonblock bool\n}\n\n// newTCPListenerFile is a constructor for a socketapi.TCPSock.\n//\n// The current strategy is to wrap a net.TCPListener\n// and invoking raw syscalls using syscallConnControl:\n// this internal calls RawConn.Control(func(fd)), making sure\n// that the underlying file descriptor is valid throughout\n// the duration of the syscall.\nfunc newDefaultTCPListenerFile(tl *net.TCPListener) socketapi.TCPSock {\n\treturn &tcpListenerFile{tl: tl}\n}\n\n// Close implements the same method as documented on experimentalsys.File\nfunc (f *tcpListenerFile) Close() experimentalsys.Errno {\n\tif !f.closed {\n\t\treturn experimentalsys.UnwrapOSError(f.tl.Close())\n\t}\n\treturn 0\n}\n\n// Addr is exposed for testing.\nfunc (f *tcpListenerFile) Addr() *net.TCPAddr {\n\treturn f.tl.Addr().(*net.TCPAddr)\n}\n\n// IsNonblock implements the same method as documented on fsapi.File\nfunc (f *tcpListenerFile) IsNonblock() bool {\n\treturn f.nonblock\n}\n\n// Poll implements the same method as documented on fsapi.File\nfunc (f *tcpListenerFile) Poll(flag fsapi.Pflag, timeoutMillis int32) (ready bool, errno experimentalsys.Errno) {\n\treturn false, experimentalsys.ENOSYS\n}\n\nvar _ socketapi.TCPConn = (*tcpConnFile)(nil)\n\ntype tcpConnFile struct {\n\tbaseSockFile\n\n\ttc *net.TCPConn\n\n\t// nonblock is true when the underlying connection is flagged as non-blocking.\n\t// This ensures that reads and writes return experimentalsys.EAGAIN without blocking the caller.\n\tnonblock bool\n\t// closed is true when closed was called. This ensures proper experimentalsys.EBADF\n\tclosed bool\n}\n\nfunc newTcpConn(tc *net.TCPConn) socketapi.TCPConn {\n\treturn &tcpConnFile{tc: tc}\n}\n\n// Read implements the same method as documented on experimentalsys.File\nfunc (f *tcpConnFile) Read(buf []byte) (n int, errno experimentalsys.Errno) {\n\tif len(buf) == 0 {\n\t\treturn 0, 0 // Short-circuit 0-len reads.\n\t}\n\tif nonBlockingFileReadSupported && f.IsNonblock() {\n\t\tn, errno = syscallConnControl(f.tc, func(fd uintptr) (int, experimentalsys.Errno) {\n\t\t\tn, err := readSocket(fd, buf)\n\t\t\terrno = experimentalsys.UnwrapOSError(err)\n\t\t\terrno = fileError(f, f.closed, errno)\n\t\t\treturn n, errno\n\t\t})\n\t} else {\n\t\tn, errno = read(f.tc, buf)\n\t}\n\tif errno != 0 {\n\t\t// Defer validation overhead until we've already had an error.\n\t\terrno = fileError(f, f.closed, errno)\n\t}\n\treturn\n}\n\n// Write implements the same method as documented on experimentalsys.File\nfunc (f *tcpConnFile) Write(buf []byte) (n int, errno experimentalsys.Errno) {\n\tif nonBlockingFileWriteSupported && f.IsNonblock() {\n\t\treturn syscallConnControl(f.tc, func(fd uintptr) (int, experimentalsys.Errno) {\n\t\t\tn, err := writeSocket(fd, buf)\n\t\t\terrno = experimentalsys.UnwrapOSError(err)\n\t\t\terrno = fileError(f, f.closed, errno)\n\t\t\treturn n, errno\n\t\t})\n\t} else {\n\t\tn, errno = write(f.tc, buf)\n\t}\n\tif errno != 0 {\n\t\t// Defer validation overhead until we've already had an error.\n\t\terrno = fileError(f, f.closed, errno)\n\t}\n\treturn\n}\n\n// Recvfrom implements the same method as documented on socketapi.TCPConn\nfunc (f *tcpConnFile) Recvfrom(p []byte, flags int) (n int, errno experimentalsys.Errno) {\n\tif flags != MSG_PEEK {\n\t\terrno = experimentalsys.EINVAL\n\t\treturn\n\t}\n\treturn syscallConnControl(f.tc, func(fd uintptr) (int, experimentalsys.Errno) {\n\t\tn, err := recvfrom(fd, p, MSG_PEEK)\n\t\terrno = experimentalsys.UnwrapOSError(err)\n\t\terrno = fileError(f, f.closed, errno)\n\t\treturn n, errno\n\t})\n}\n\n// Close implements the same method as documented on experimentalsys.File\nfunc (f *tcpConnFile) Close() experimentalsys.Errno {\n\treturn f.close()\n}\n\nfunc (f *tcpConnFile) close() experimentalsys.Errno {\n\tif f.closed {\n\t\treturn 0\n\t}\n\tf.closed = true\n\treturn f.Shutdown(socketapi.SHUT_RDWR)\n}\n\n// SetNonblock implements the same method as documented on fsapi.File\nfunc (f *tcpConnFile) SetNonblock(enabled bool) (errno experimentalsys.Errno) {\n\tf.nonblock = enabled\n\t_, errno = syscallConnControl(f.tc, func(fd uintptr) (int, experimentalsys.Errno) {\n\t\treturn 0, experimentalsys.UnwrapOSError(setNonblockSocket(fd, enabled))\n\t})\n\treturn\n}\n\n// IsNonblock implements the same method as documented on fsapi.File\nfunc (f *tcpConnFile) IsNonblock() bool {\n\treturn f.nonblock\n}\n\n// Poll implements the same method as documented on fsapi.File\nfunc (f *tcpConnFile) Poll(flag fsapi.Pflag, timeoutMillis int32) (ready bool, errno experimentalsys.Errno) {\n\treturn false, experimentalsys.ENOSYS\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/sock_supported.go",
    "content": "//go:build (linux || darwin || windows) && !tinygo\n\npackage sysfs\n\nimport (\n\t\"net\"\n\t\"syscall\"\n\n\texperimentalsys \"github.com/tetratelabs/wazero/experimental/sys\"\n\t\"github.com/tetratelabs/wazero/internal/fsapi\"\n\tsocketapi \"github.com/tetratelabs/wazero/internal/sock\"\n)\n\n// Accept implements the same method as documented on socketapi.TCPSock\nfunc (f *tcpListenerFile) Accept() (socketapi.TCPConn, experimentalsys.Errno) {\n\t// Ensure we have an incoming connection, otherwise return immediately.\n\tif f.nonblock {\n\t\tif ready, errno := _pollSock(f.tl, fsapi.POLLIN, 0); !ready || errno != 0 {\n\t\t\treturn nil, experimentalsys.EAGAIN\n\t\t}\n\t}\n\n\t// Accept normally blocks goroutines, but we\n\t// made sure that we have an incoming connection,\n\t// so we should be safe.\n\tif conn, err := f.tl.Accept(); err != nil {\n\t\treturn nil, experimentalsys.UnwrapOSError(err)\n\t} else {\n\t\treturn newTcpConn(conn.(*net.TCPConn)), 0\n\t}\n}\n\n// SetNonblock implements the same method as documented on fsapi.File\nfunc (f *tcpListenerFile) SetNonblock(enabled bool) (errno experimentalsys.Errno) {\n\tf.nonblock = enabled\n\t_, errno = syscallConnControl(f.tl, func(fd uintptr) (int, experimentalsys.Errno) {\n\t\treturn 0, setNonblockSocket(fd, enabled)\n\t})\n\treturn\n}\n\n// Shutdown implements the same method as documented on experimentalsys.Conn\nfunc (f *tcpConnFile) Shutdown(how int) experimentalsys.Errno {\n\t// FIXME: can userland shutdown listeners?\n\tvar err error\n\tswitch how {\n\tcase socketapi.SHUT_RD:\n\t\terr = f.tc.CloseRead()\n\tcase socketapi.SHUT_WR:\n\t\terr = f.tc.CloseWrite()\n\tcase socketapi.SHUT_RDWR:\n\t\treturn f.close()\n\tdefault:\n\t\treturn experimentalsys.EINVAL\n\t}\n\treturn experimentalsys.UnwrapOSError(err)\n}\n\n// syscallConnControl extracts a syscall.RawConn from the given syscall.Conn and applies\n// the given fn to a file descriptor, returning an integer or a nonzero syscall.Errno on failure.\n//\n// syscallConnControl streamlines the pattern of extracting the syscall.Rawconn,\n// invoking its syscall.RawConn.Control method, then handling properly the errors that may occur\n// within fn or returned by syscall.RawConn.Control itself.\nfunc syscallConnControl(conn syscall.Conn, fn func(fd uintptr) (int, experimentalsys.Errno)) (n int, errno experimentalsys.Errno) {\n\tsyscallConn, err := conn.SyscallConn()\n\tif err != nil {\n\t\treturn 0, experimentalsys.UnwrapOSError(err)\n\t}\n\t// Prioritize the inner errno over Control\n\tif controlErr := syscallConn.Control(func(fd uintptr) {\n\t\tn, errno = fn(fd)\n\t}); errno == 0 {\n\t\terrno = experimentalsys.UnwrapOSError(controlErr)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/sock_unix.go",
    "content": "//go:build (linux || darwin) && !tinygo\n\npackage sysfs\n\nimport (\n\t\"net\"\n\t\"syscall\"\n\n\t\"github.com/tetratelabs/wazero/experimental/sys\"\n\t\"github.com/tetratelabs/wazero/internal/fsapi\"\n\tsocketapi \"github.com/tetratelabs/wazero/internal/sock\"\n)\n\n// MSG_PEEK is the constant syscall.MSG_PEEK\nconst MSG_PEEK = syscall.MSG_PEEK\n\nfunc newTCPListenerFile(tl *net.TCPListener) socketapi.TCPSock {\n\treturn newDefaultTCPListenerFile(tl)\n}\n\nfunc _pollSock(conn syscall.Conn, flag fsapi.Pflag, timeoutMillis int32) (bool, sys.Errno) {\n\tn, errno := syscallConnControl(conn, func(fd uintptr) (int, sys.Errno) {\n\t\tif ready, errno := poll(fd, fsapi.POLLIN, 0); !ready || errno != 0 {\n\t\t\treturn -1, errno\n\t\t} else {\n\t\t\treturn 0, errno\n\t\t}\n\t})\n\treturn n >= 0, errno\n}\n\nfunc setNonblockSocket(fd uintptr, enabled bool) sys.Errno {\n\treturn sys.UnwrapOSError(setNonblock(fd, enabled))\n}\n\nfunc readSocket(fd uintptr, buf []byte) (int, sys.Errno) {\n\tn, err := syscall.Read(int(fd), buf)\n\treturn n, sys.UnwrapOSError(err)\n}\n\nfunc writeSocket(fd uintptr, buf []byte) (int, sys.Errno) {\n\tn, err := syscall.Write(int(fd), buf)\n\treturn n, sys.UnwrapOSError(err)\n}\n\nfunc recvfrom(fd uintptr, buf []byte, flags int32) (n int, errno sys.Errno) {\n\tn, _, err := syscall.Recvfrom(int(fd), buf, int(flags))\n\treturn n, sys.UnwrapOSError(err)\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/sock_unsupported.go",
    "content": "//go:build (!linux && !darwin && !windows) || tinygo\n\npackage sysfs\n\nimport (\n\t\"net\"\n\t\"syscall\"\n\n\t\"github.com/tetratelabs/wazero/experimental/sys\"\n\texperimentalsys \"github.com/tetratelabs/wazero/experimental/sys\"\n\t\"github.com/tetratelabs/wazero/internal/fsapi\"\n\tsocketapi \"github.com/tetratelabs/wazero/internal/sock\"\n)\n\n// MSG_PEEK is a filler value.\nconst MSG_PEEK = 0x2\n\nfunc newTCPListenerFile(tl *net.TCPListener) socketapi.TCPSock {\n\treturn &unsupportedSockFile{}\n}\n\ntype unsupportedSockFile struct {\n\tbaseSockFile\n}\n\n// Accept implements the same method as documented on socketapi.TCPSock\nfunc (f *unsupportedSockFile) Accept() (socketapi.TCPConn, sys.Errno) {\n\treturn nil, sys.ENOSYS\n}\n\nfunc _pollSock(conn syscall.Conn, flag fsapi.Pflag, timeoutMillis int32) (bool, sys.Errno) {\n\treturn false, sys.ENOTSUP\n}\n\nfunc setNonblockSocket(fd uintptr, enabled bool) sys.Errno {\n\treturn sys.ENOTSUP\n}\n\nfunc readSocket(fd uintptr, buf []byte) (int, sys.Errno) {\n\treturn -1, sys.ENOTSUP\n}\n\nfunc writeSocket(fd uintptr, buf []byte) (int, sys.Errno) {\n\treturn -1, sys.ENOTSUP\n}\n\nfunc recvfrom(fd uintptr, buf []byte, flags int32) (n int, errno sys.Errno) {\n\treturn -1, sys.ENOTSUP\n}\n\n// syscallConnControl extracts a syscall.RawConn from the given syscall.Conn and applies\n// the given fn to a file descriptor, returning an integer or a nonzero syscall.Errno on failure.\n//\n// syscallConnControl streamlines the pattern of extracting the syscall.Rawconn,\n// invoking its syscall.RawConn.Control method, then handling properly the errors that may occur\n// within fn or returned by syscall.RawConn.Control itself.\nfunc syscallConnControl(conn syscall.Conn, fn func(fd uintptr) (int, experimentalsys.Errno)) (n int, errno sys.Errno) {\n\treturn -1, sys.ENOTSUP\n}\n\n// Accept implements the same method as documented on socketapi.TCPSock\nfunc (f *tcpListenerFile) Accept() (socketapi.TCPConn, experimentalsys.Errno) {\n\treturn nil, experimentalsys.ENOSYS\n}\n\n// Shutdown implements the same method as documented on experimentalsys.Conn\nfunc (f *tcpConnFile) Shutdown(how int) experimentalsys.Errno {\n\t// FIXME: can userland shutdown listeners?\n\tvar err error\n\tswitch how {\n\tcase socketapi.SHUT_RD:\n\t\terr = f.tc.Close()\n\tcase socketapi.SHUT_WR:\n\t\terr = f.tc.Close()\n\tcase socketapi.SHUT_RDWR:\n\t\treturn f.close()\n\tdefault:\n\t\treturn experimentalsys.EINVAL\n\t}\n\treturn experimentalsys.UnwrapOSError(err)\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/sock_windows.go",
    "content": "//go:build windows\n\npackage sysfs\n\nimport (\n\t\"net\"\n\t\"syscall\"\n\t\"unsafe\"\n\n\t\"github.com/tetratelabs/wazero/experimental/sys\"\n\t\"github.com/tetratelabs/wazero/internal/fsapi\"\n\tsocketapi \"github.com/tetratelabs/wazero/internal/sock\"\n)\n\nconst (\n\t// MSG_PEEK is the flag PEEK for syscall.Recvfrom on Windows.\n\t// This constant is not exported on this platform.\n\tMSG_PEEK = 0x2\n\t// _FIONBIO is the flag to set the O_NONBLOCK flag on socket handles using ioctlsocket.\n\t_FIONBIO = 0x8004667e\n)\n\nvar (\n\t// modws2_32 is WinSock.\n\tmodws2_32 = syscall.NewLazyDLL(\"ws2_32.dll\")\n\t// procrecvfrom exposes recvfrom from WinSock.\n\tprocrecvfrom = modws2_32.NewProc(\"recvfrom\")\n\t// procioctlsocket exposes ioctlsocket from WinSock.\n\tprocioctlsocket = modws2_32.NewProc(\"ioctlsocket\")\n)\n\nfunc newTCPListenerFile(tl *net.TCPListener) socketapi.TCPSock {\n\treturn newDefaultTCPListenerFile(tl)\n}\n\n// recvfrom exposes the underlying syscall in Windows.\n//\n// Note: since we are only using this to expose MSG_PEEK,\n// we do not need really need all the parameters that are actually\n// allowed in WinSock.\n// We ignore `from *sockaddr` and `fromlen *int`.\nfunc recvfrom(s uintptr, buf []byte, flags int32) (n int, errno sys.Errno) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tr0, _, e1 := syscall.SyscallN(\n\t\tprocrecvfrom.Addr(),\n\t\ts,\n\t\tuintptr(unsafe.Pointer(_p0)),\n\t\tuintptr(len(buf)),\n\t\tuintptr(flags),\n\t\t0, // from *sockaddr (optional)\n\t\t0) // fromlen *int (optional)\n\treturn int(r0), sys.UnwrapOSError(e1)\n}\n\nfunc setNonblockSocket(fd uintptr, enabled bool) sys.Errno {\n\topt := uint64(0)\n\tif enabled {\n\t\topt = 1\n\t}\n\t// ioctlsocket(fd, FIONBIO, &opt)\n\t_, _, errno := syscall.SyscallN(\n\t\tprocioctlsocket.Addr(),\n\t\tuintptr(fd),\n\t\tuintptr(_FIONBIO),\n\t\tuintptr(unsafe.Pointer(&opt)))\n\treturn sys.UnwrapOSError(errno)\n}\n\nfunc _pollSock(conn syscall.Conn, flag fsapi.Pflag, timeoutMillis int32) (bool, sys.Errno) {\n\tif flag != fsapi.POLLIN {\n\t\treturn false, sys.ENOTSUP\n\t}\n\tn, errno := syscallConnControl(conn, func(fd uintptr) (int, sys.Errno) {\n\t\treturn _poll([]pollFd{newPollFd(fd, _POLLIN, 0)}, timeoutMillis)\n\t})\n\treturn n > 0, errno\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/stat.go",
    "content": "package sysfs\n\nimport (\n\t\"io/fs\"\n\n\texperimentalsys \"github.com/tetratelabs/wazero/experimental/sys\"\n\t\"github.com/tetratelabs/wazero/sys\"\n)\n\nfunc defaultStatFile(f fs.File) (sys.Stat_t, experimentalsys.Errno) {\n\tif info, err := f.Stat(); err != nil {\n\t\treturn sys.Stat_t{}, experimentalsys.UnwrapOSError(err)\n\t} else {\n\t\treturn sys.NewStat_t(info), 0\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/stat_bsd.go",
    "content": "//go:build (amd64 || arm64) && (darwin || freebsd)\n\npackage sysfs\n\nimport (\n\t\"io/fs\"\n\t\"os\"\n\n\texperimentalsys \"github.com/tetratelabs/wazero/experimental/sys\"\n\t\"github.com/tetratelabs/wazero/sys\"\n)\n\n// dirNlinkIncludesDot is true because even though os.File filters out dot\n// entries, the underlying syscall.Stat includes them.\n//\n// Note: this is only used in tests\nconst dirNlinkIncludesDot = true\n\nfunc lstat(path string) (sys.Stat_t, experimentalsys.Errno) {\n\tif info, err := os.Lstat(path); err != nil {\n\t\treturn sys.Stat_t{}, experimentalsys.UnwrapOSError(err)\n\t} else {\n\t\treturn sys.NewStat_t(info), 0\n\t}\n}\n\nfunc stat(path string) (sys.Stat_t, experimentalsys.Errno) {\n\tif info, err := os.Stat(path); err != nil {\n\t\treturn sys.Stat_t{}, experimentalsys.UnwrapOSError(err)\n\t} else {\n\t\treturn sys.NewStat_t(info), 0\n\t}\n}\n\nfunc statFile(f fs.File) (sys.Stat_t, experimentalsys.Errno) {\n\treturn defaultStatFile(f)\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/stat_linux.go",
    "content": "//go:build (amd64 || arm64 || ppc64le || riscv64 || s390x) && linux\n\n// Note: This expression is not the same as compiler support, even if it looks\n// similar. Platform functions here are used in interpreter mode as well.\n\npackage sysfs\n\nimport (\n\t\"io/fs\"\n\t\"os\"\n\n\texperimentalsys \"github.com/tetratelabs/wazero/experimental/sys\"\n\t\"github.com/tetratelabs/wazero/sys\"\n)\n\n// dirNlinkIncludesDot is true because even though os.File filters out dot\n// entries, the underlying syscall.Stat includes them.\n//\n// Note: this is only used in tests\nconst dirNlinkIncludesDot = true\n\nfunc lstat(path string) (sys.Stat_t, experimentalsys.Errno) {\n\tif info, err := os.Lstat(path); err != nil {\n\t\treturn sys.Stat_t{}, experimentalsys.UnwrapOSError(err)\n\t} else {\n\t\treturn sys.NewStat_t(info), 0\n\t}\n}\n\nfunc stat(path string) (sys.Stat_t, experimentalsys.Errno) {\n\tif info, err := os.Stat(path); err != nil {\n\t\treturn sys.Stat_t{}, experimentalsys.UnwrapOSError(err)\n\t} else {\n\t\treturn sys.NewStat_t(info), 0\n\t}\n}\n\nfunc statFile(f fs.File) (sys.Stat_t, experimentalsys.Errno) {\n\treturn defaultStatFile(f)\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/stat_unsupported.go",
    "content": "//go:build (!((amd64 || arm64 || ppc64le || riscv64 || s390x) && linux) && !((amd64 || arm64) && (darwin || freebsd)) && !((amd64 || arm64) && windows)) || js\n\npackage sysfs\n\nimport (\n\t\"io/fs\"\n\t\"os\"\n\n\texperimentalsys \"github.com/tetratelabs/wazero/experimental/sys\"\n\t\"github.com/tetratelabs/wazero/sys\"\n)\n\n// Note: go:build constraints must be the same as /sys.stat_unsupported.go for\n// the same reasons.\n\n// dirNlinkIncludesDot might be true for some operating systems, which can have\n// new stat_XX.go files as necessary.\n//\n// Note: this is only used in tests\nconst dirNlinkIncludesDot = false\n\nfunc lstat(path string) (sys.Stat_t, experimentalsys.Errno) {\n\tif info, err := os.Lstat(path); err != nil {\n\t\treturn sys.Stat_t{}, experimentalsys.UnwrapOSError(err)\n\t} else {\n\t\treturn sys.NewStat_t(info), 0\n\t}\n}\n\nfunc stat(path string) (sys.Stat_t, experimentalsys.Errno) {\n\tif info, err := os.Stat(path); err != nil {\n\t\treturn sys.Stat_t{}, experimentalsys.UnwrapOSError(err)\n\t} else {\n\t\treturn sys.NewStat_t(info), 0\n\t}\n}\n\nfunc statFile(f fs.File) (sys.Stat_t, experimentalsys.Errno) {\n\treturn defaultStatFile(f)\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/stat_windows.go",
    "content": "//go:build (amd64 || arm64) && windows\n\npackage sysfs\n\nimport (\n\t\"io/fs\"\n\t\"syscall\"\n\n\texperimentalsys \"github.com/tetratelabs/wazero/experimental/sys\"\n\t\"github.com/tetratelabs/wazero/sys\"\n)\n\n// dirNlinkIncludesDot is false because Windows does not return dot entries.\n//\n// Note: this is only used in tests\nconst dirNlinkIncludesDot = false\n\nfunc lstat(path string) (sys.Stat_t, experimentalsys.Errno) {\n\tattrs := uint32(syscall.FILE_FLAG_BACKUP_SEMANTICS)\n\t// Use FILE_FLAG_OPEN_REPARSE_POINT, otherwise CreateFile will follow symlink.\n\t// See https://docs.microsoft.com/en-us/windows/desktop/FileIO/symbolic-link-effects-on-file-systems-functions#createfile-and-createfiletransacted\n\tattrs |= syscall.FILE_FLAG_OPEN_REPARSE_POINT\n\treturn statPath(attrs, path)\n}\n\nfunc stat(path string) (sys.Stat_t, experimentalsys.Errno) {\n\tattrs := uint32(syscall.FILE_FLAG_BACKUP_SEMANTICS)\n\treturn statPath(attrs, path)\n}\n\nfunc statPath(createFileAttrs uint32, path string) (sys.Stat_t, experimentalsys.Errno) {\n\tif len(path) == 0 {\n\t\treturn sys.Stat_t{}, experimentalsys.ENOENT\n\t}\n\tpathp, err := syscall.UTF16PtrFromString(path)\n\tif err != nil {\n\t\treturn sys.Stat_t{}, experimentalsys.EINVAL\n\t}\n\n\t// open the file handle\n\th, err := syscall.CreateFile(pathp, 0, 0, nil,\n\t\tsyscall.OPEN_EXISTING, createFileAttrs, 0)\n\tif err != nil {\n\t\terrno := experimentalsys.UnwrapOSError(err)\n\t\t// To match expectations of WASI, e.g. TinyGo TestStatBadDir, return\n\t\t// ENOENT, not ENOTDIR.\n\t\tif errno == experimentalsys.ENOTDIR {\n\t\t\terrno = experimentalsys.ENOENT\n\t\t}\n\t\treturn sys.Stat_t{}, errno\n\t}\n\tdefer syscall.CloseHandle(h)\n\n\treturn statHandle(h)\n}\n\n// fdFile allows masking the `Fd` function on os.File.\ntype fdFile interface {\n\tFd() uintptr\n}\n\nfunc statFile(f fs.File) (sys.Stat_t, experimentalsys.Errno) {\n\tif osF, ok := f.(fdFile); ok {\n\t\t// Attempt to get the stat by handle, which works for normal files\n\t\tst, err := statHandle(syscall.Handle(osF.Fd()))\n\n\t\t// ERROR_INVALID_HANDLE happens before Go 1.20. Don't fail as we only\n\t\t// use that approach to fill in inode data, which is not critical.\n\t\t//\n\t\t// Note: statHandle uses UnwrapOSError which coerces\n\t\t// ERROR_INVALID_HANDLE to EBADF.\n\t\tif err != experimentalsys.EBADF {\n\t\t\treturn st, err\n\t\t}\n\t}\n\treturn defaultStatFile(f)\n}\n\nfunc statHandle(h syscall.Handle) (sys.Stat_t, experimentalsys.Errno) {\n\twinFt, err := syscall.GetFileType(h)\n\tif err != nil {\n\t\treturn sys.Stat_t{}, experimentalsys.UnwrapOSError(err)\n\t}\n\n\tvar fi syscall.ByHandleFileInformation\n\tif err = syscall.GetFileInformationByHandle(h, &fi); err != nil {\n\t\treturn sys.Stat_t{}, experimentalsys.UnwrapOSError(err)\n\t}\n\n\tvar m fs.FileMode\n\tif fi.FileAttributes&syscall.FILE_ATTRIBUTE_READONLY != 0 {\n\t\tm |= 0o444\n\t} else {\n\t\tm |= 0o666\n\t}\n\n\tswitch { // check whether this is a symlink first\n\tcase fi.FileAttributes&syscall.FILE_ATTRIBUTE_REPARSE_POINT != 0:\n\t\tm |= fs.ModeSymlink\n\tcase winFt == syscall.FILE_TYPE_PIPE:\n\t\tm |= fs.ModeNamedPipe\n\tcase winFt == syscall.FILE_TYPE_CHAR:\n\t\tm |= fs.ModeDevice | fs.ModeCharDevice\n\tcase fi.FileAttributes&syscall.FILE_ATTRIBUTE_DIRECTORY != 0:\n\t\tm |= fs.ModeDir | 0o111 // e.g. 0o444 -> 0o555\n\t}\n\n\tst := sys.Stat_t{}\n\t// FileIndex{High,Low} can be combined and used as a unique identifier like inode.\n\t// https://learn.microsoft.com/en-us/windows/win32/api/fileapi/ns-fileapi-by_handle_file_information\n\tst.Dev = uint64(fi.VolumeSerialNumber)\n\tst.Ino = (uint64(fi.FileIndexHigh) << 32) | uint64(fi.FileIndexLow)\n\tst.Mode = m\n\tst.Nlink = uint64(fi.NumberOfLinks)\n\tst.Size = int64(fi.FileSizeHigh)<<32 + int64(fi.FileSizeLow)\n\tst.Atim = fi.LastAccessTime.Nanoseconds()\n\tst.Mtim = fi.LastWriteTime.Nanoseconds()\n\tst.Ctim = fi.CreationTime.Nanoseconds()\n\treturn st, 0\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/sync.go",
    "content": "//go:build !windows\n\npackage sysfs\n\nimport (\n\t\"os\"\n\n\t\"github.com/tetratelabs/wazero/experimental/sys\"\n)\n\nfunc fsync(f *os.File) sys.Errno {\n\treturn sys.UnwrapOSError(f.Sync())\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/sync_windows.go",
    "content": "package sysfs\n\nimport (\n\t\"os\"\n\n\t\"github.com/tetratelabs/wazero/experimental/sys\"\n)\n\nfunc fsync(f *os.File) sys.Errno {\n\terrno := sys.UnwrapOSError(f.Sync())\n\t// Coerce error performing stat on a directory to 0, as it won't work\n\t// on Windows.\n\tswitch errno {\n\tcase sys.EACCES /* Go 1.20 */, sys.EBADF /* Go 1.19 */ :\n\t\tif st, err := f.Stat(); err == nil && st.IsDir() {\n\t\t\terrno = 0\n\t\t}\n\t}\n\treturn errno\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/syscall6_darwin.go",
    "content": "package sysfs\n\nimport (\n\t\"syscall\"\n\t_ \"unsafe\"\n)\n\n// syscall_syscall6 is a private symbol that we link below. We need to use this\n// instead of syscall.Syscall6 because the public syscall.Syscall6 won't work\n// when fn is an address.\n//\n//go:linkname syscall_syscall6 syscall.syscall6\nfunc syscall_syscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno)\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/sysfs.go",
    "content": "// Package sysfs includes a low-level filesystem interface and utilities needed\n// for WebAssembly host functions (ABI) such as WASI.\n//\n// The name sysfs was chosen because wazero's public API has a \"sys\" package,\n// which was named after https://github.com/golang/sys.\npackage sysfs\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/unlink.go",
    "content": "//go:build !windows && !plan9 && !tinygo\n\npackage sysfs\n\nimport (\n\t\"syscall\"\n\n\t\"github.com/tetratelabs/wazero/experimental/sys\"\n)\n\nfunc unlink(name string) (errno sys.Errno) {\n\terr := syscall.Unlink(name)\n\tif errno = sys.UnwrapOSError(err); errno == sys.EPERM {\n\t\terrno = sys.EISDIR\n\t}\n\treturn errno\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/unlink_plan9.go",
    "content": "package sysfs\n\nimport (\n\t\"syscall\"\n\n\t\"github.com/tetratelabs/wazero/experimental/sys\"\n)\n\nfunc unlink(name string) sys.Errno {\n\terr := syscall.Remove(name)\n\treturn sys.UnwrapOSError(err)\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/sysfs/unlink_windows.go",
    "content": "package sysfs\n\nimport (\n\t\"os\"\n\t\"syscall\"\n\n\t\"github.com/tetratelabs/wazero/experimental/sys\"\n)\n\nfunc unlink(name string) sys.Errno {\n\terr := syscall.Unlink(name)\n\tif err == nil {\n\t\treturn 0\n\t}\n\terrno := sys.UnwrapOSError(err)\n\tif errno == sys.EBADF {\n\t\tlstat, errLstat := os.Lstat(name)\n\t\tif errLstat == nil && lstat.Mode()&os.ModeSymlink != 0 {\n\t\t\terrno = sys.UnwrapOSError(os.Remove(name))\n\t\t} else {\n\t\t\terrno = sys.EISDIR\n\t\t}\n\t}\n\treturn errno\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/u32/u32.go",
    "content": "package u32\n\n// LeBytes returns a byte slice corresponding to the 4 bytes in the uint32 in little-endian byte order.\nfunc LeBytes(v uint32) []byte {\n\treturn []byte{\n\t\tbyte(v),\n\t\tbyte(v >> 8),\n\t\tbyte(v >> 16),\n\t\tbyte(v >> 24),\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/u64/u64.go",
    "content": "package u64\n\n// LeBytes returns a byte slice corresponding to the 8 bytes in the uint64 in little-endian byte order.\nfunc LeBytes(v uint64) []byte {\n\treturn []byte{\n\t\tbyte(v),\n\t\tbyte(v >> 8),\n\t\tbyte(v >> 16),\n\t\tbyte(v >> 24),\n\t\tbyte(v >> 32),\n\t\tbyte(v >> 40),\n\t\tbyte(v >> 48),\n\t\tbyte(v >> 56),\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/version/version.go",
    "content": "package version\n\nimport (\n\t\"runtime/debug\"\n\t\"strings\"\n)\n\n// Default is the default version value used when none was found.\nconst Default = \"dev\"\n\n// version holds the current version from the go.mod of downstream users or set by ldflag for wazero CLI.\nvar version string\n\n// GetWazeroVersion returns the current version of wazero either in the go.mod or set by ldflag for wazero CLI.\n//\n// If this is not CLI, this assumes that downstream users of wazero imports wazero as \"github.com/tetratelabs/wazero\".\n// To be precise, the returned string matches the require statement there.\n// For example, if the go.mod has \"require github.com/tetratelabs/wazero 0.1.2-12314124-abcd\",\n// then this returns \"0.1.2-12314124-abcd\".\n//\n// Note: this is tested in ./testdata/main_test.go with a separate go.mod to pretend as the wazero user.\nfunc GetWazeroVersion() (ret string) {\n\tif len(version) != 0 {\n\t\treturn version\n\t}\n\n\tinfo, ok := debug.ReadBuildInfo()\n\tif ok {\n\t\tfor _, dep := range info.Deps {\n\t\t\t// Note: here's the assumption that wazero is imported as github.com/tetratelabs/wazero.\n\t\t\tif strings.Contains(dep.Path, \"github.com/tetratelabs/wazero\") {\n\t\t\t\tret = dep.Version\n\t\t\t}\n\t\t}\n\n\t\t// In wazero CLI, wazero is a main module, so we have to get the version info from info.Main.\n\t\tif versionMissing(ret) {\n\t\t\tret = info.Main.Version\n\t\t}\n\t}\n\tif versionMissing(ret) {\n\t\treturn Default // don't return parens\n\t}\n\n\t// Cache for the subsequent calls.\n\tversion = ret\n\treturn ret\n}\n\nfunc versionMissing(ret string) bool {\n\treturn ret == \"\" || ret == \"(devel)\" // pkg.go defaults to (devel)\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/wasip1/args.go",
    "content": "package wasip1\n\nconst (\n\tArgsGetName      = \"args_get\"\n\tArgsSizesGetName = \"args_sizes_get\"\n)\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/wasip1/clock.go",
    "content": "package wasip1\n\nconst (\n\tClockResGetName  = \"clock_res_get\"\n\tClockTimeGetName = \"clock_time_get\"\n)\n\n// https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#-clockid-enumu32\nconst (\n\t// ClockIDRealtime is the name ID named \"realtime\" like sys.Walltime\n\tClockIDRealtime = iota\n\t// ClockIDMonotonic is the name ID named \"monotonic\" like sys.Nanotime\n\tClockIDMonotonic\n\t// Note: clockIDProcessCputime and clockIDThreadCputime were removed by\n\t// WASI maintainers: https://github.com/WebAssembly/wasi-libc/pull/294\n)\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/wasip1/environ.go",
    "content": "package wasip1\n\nconst (\n\tEnvironGetName      = \"environ_get\"\n\tEnvironSizesGetName = \"environ_sizes_get\"\n)\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/wasip1/errno.go",
    "content": "package wasip1\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/tetratelabs/wazero/experimental/sys\"\n)\n\n// Errno is neither uint16 nor an alias for parity with wasm.ValueType.\ntype Errno = uint32\n\n// ErrnoName returns the POSIX error code name, except ErrnoSuccess, which is\n// not an error. e.g. Errno2big -> \"E2BIG\"\nfunc ErrnoName(errno uint32) string {\n\tif int(errno) < len(errnoToString) {\n\t\treturn errnoToString[errno]\n\t}\n\treturn fmt.Sprintf(\"errno(%d)\", errno)\n}\n\n// Note: Below prefers POSIX symbol names over WASI ones, even if the docs are from WASI.\n// See https://linux.die.net/man/3/errno\n// See https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#variants-1\nconst (\n\t// ErrnoSuccess No error occurred. System call completed successfully.\n\tErrnoSuccess Errno = iota\n\t// Errno2big Argument list too long.\n\tErrno2big\n\t// ErrnoAcces Permission denied.\n\tErrnoAcces\n\t// ErrnoAddrinuse Address in use.\n\tErrnoAddrinuse\n\t// ErrnoAddrnotavail Address not available.\n\tErrnoAddrnotavail\n\t// ErrnoAfnosupport Address family not supported.\n\tErrnoAfnosupport\n\t// ErrnoAgain Resource unavailable, or operation would block.\n\tErrnoAgain\n\t// ErrnoAlready Connection already in progress.\n\tErrnoAlready\n\t// ErrnoBadf Bad file descriptor.\n\tErrnoBadf\n\t// ErrnoBadmsg Bad message.\n\tErrnoBadmsg\n\t// ErrnoBusy Device or resource busy.\n\tErrnoBusy\n\t// ErrnoCanceled Operation canceled.\n\tErrnoCanceled\n\t// ErrnoChild No child processes.\n\tErrnoChild\n\t// ErrnoConnaborted Connection aborted.\n\tErrnoConnaborted\n\t// ErrnoConnrefused Connection refused.\n\tErrnoConnrefused\n\t// ErrnoConnreset Connection reset.\n\tErrnoConnreset\n\t// ErrnoDeadlk Resource deadlock would occur.\n\tErrnoDeadlk\n\t// ErrnoDestaddrreq Destination address required.\n\tErrnoDestaddrreq\n\t// ErrnoDom Mathematics argument out of domain of function.\n\tErrnoDom\n\t// ErrnoDquot Reserved.\n\tErrnoDquot\n\t// ErrnoExist File exists.\n\tErrnoExist\n\t// ErrnoFault Bad address.\n\tErrnoFault\n\t// ErrnoFbig File too large.\n\tErrnoFbig\n\t// ErrnoHostunreach Host is unreachable.\n\tErrnoHostunreach\n\t// ErrnoIdrm Identifier removed.\n\tErrnoIdrm\n\t// ErrnoIlseq Illegal byte sequence.\n\tErrnoIlseq\n\t// ErrnoInprogress Operation in progress.\n\tErrnoInprogress\n\t// ErrnoIntr Interrupted function.\n\tErrnoIntr\n\t// ErrnoInval Invalid argument.\n\tErrnoInval\n\t// ErrnoIo I/O error.\n\tErrnoIo\n\t// ErrnoIsconn Socket is connected.\n\tErrnoIsconn\n\t// ErrnoIsdir Is a directory.\n\tErrnoIsdir\n\t// ErrnoLoop Too many levels of symbolic links.\n\tErrnoLoop\n\t// ErrnoMfile File descriptor value too large.\n\tErrnoMfile\n\t// ErrnoMlink Too many links.\n\tErrnoMlink\n\t// ErrnoMsgsize Message too large.\n\tErrnoMsgsize\n\t// ErrnoMultihop Reserved.\n\tErrnoMultihop\n\t// ErrnoNametoolong Filename too long.\n\tErrnoNametoolong\n\t// ErrnoNetdown Network is down.\n\tErrnoNetdown\n\t// ErrnoNetreset Connection aborted by network.\n\tErrnoNetreset\n\t// ErrnoNetunreach Network unreachable.\n\tErrnoNetunreach\n\t// ErrnoNfile Too many files open in system.\n\tErrnoNfile\n\t// ErrnoNobufs No buffer space available.\n\tErrnoNobufs\n\t// ErrnoNodev No such device.\n\tErrnoNodev\n\t// ErrnoNoent No such file or directory.\n\tErrnoNoent\n\t// ErrnoNoexec Executable file format error.\n\tErrnoNoexec\n\t// ErrnoNolck No locks available.\n\tErrnoNolck\n\t// ErrnoNolink Reserved.\n\tErrnoNolink\n\t// ErrnoNomem Not enough space.\n\tErrnoNomem\n\t// ErrnoNomsg No message of the desired type.\n\tErrnoNomsg\n\t// ErrnoNoprotoopt No message of the desired type.\n\tErrnoNoprotoopt\n\t// ErrnoNospc No space left on device.\n\tErrnoNospc\n\t// ErrnoNosys function not supported.\n\tErrnoNosys\n\t// ErrnoNotconn The socket is not connected.\n\tErrnoNotconn\n\t// ErrnoNotdir Not a directory or a symbolic link to a directory.\n\tErrnoNotdir\n\t// ErrnoNotempty Directory not empty.\n\tErrnoNotempty\n\t// ErrnoNotrecoverable State not recoverable.\n\tErrnoNotrecoverable\n\t// ErrnoNotsock Not a socket.\n\tErrnoNotsock\n\t// ErrnoNotsup Not supported, or operation not supported on socket.\n\tErrnoNotsup\n\t// ErrnoNotty Inappropriate I/O control operation.\n\tErrnoNotty\n\t// ErrnoNxio No such device or address.\n\tErrnoNxio\n\t// ErrnoOverflow Value too large to be stored in data type.\n\tErrnoOverflow\n\t// ErrnoOwnerdead Previous owner died.\n\tErrnoOwnerdead\n\t// ErrnoPerm Operation not permitted.\n\tErrnoPerm\n\t// ErrnoPipe Broken pipe.\n\tErrnoPipe\n\t// ErrnoProto Protocol error.\n\tErrnoProto\n\t// ErrnoProtonosupport Protocol error.\n\tErrnoProtonosupport\n\t// ErrnoPrototype Protocol wrong type for socket.\n\tErrnoPrototype\n\t// ErrnoRange Result too large.\n\tErrnoRange\n\t// ErrnoRofs Read-only file system.\n\tErrnoRofs\n\t// ErrnoSpipe Invalid seek.\n\tErrnoSpipe\n\t// ErrnoSrch No such process.\n\tErrnoSrch\n\t// ErrnoStale Reserved.\n\tErrnoStale\n\t// ErrnoTimedout Connection timed out.\n\tErrnoTimedout\n\t// ErrnoTxtbsy Text file busy.\n\tErrnoTxtbsy\n\t// ErrnoXdev Cross-device link.\n\tErrnoXdev\n\n\t// Note: ErrnoNotcapable was removed by WASI maintainers.\n\t// See https://github.com/WebAssembly/wasi-libc/pull/294\n)\n\nvar errnoToString = [...]string{\n\t\"ESUCCESS\",\n\t\"E2BIG\",\n\t\"EACCES\",\n\t\"EADDRINUSE\",\n\t\"EADDRNOTAVAIL\",\n\t\"EAFNOSUPPORT\",\n\t\"EAGAIN\",\n\t\"EALREADY\",\n\t\"EBADF\",\n\t\"EBADMSG\",\n\t\"EBUSY\",\n\t\"ECANCELED\",\n\t\"ECHILD\",\n\t\"ECONNABORTED\",\n\t\"ECONNREFUSED\",\n\t\"ECONNRESET\",\n\t\"EDEADLK\",\n\t\"EDESTADDRREQ\",\n\t\"EDOM\",\n\t\"EDQUOT\",\n\t\"EEXIST\",\n\t\"EFAULT\",\n\t\"EFBIG\",\n\t\"EHOSTUNREACH\",\n\t\"EIDRM\",\n\t\"EILSEQ\",\n\t\"EINPROGRESS\",\n\t\"EINTR\",\n\t\"EINVAL\",\n\t\"EIO\",\n\t\"EISCONN\",\n\t\"EISDIR\",\n\t\"ELOOP\",\n\t\"EMFILE\",\n\t\"EMLINK\",\n\t\"EMSGSIZE\",\n\t\"EMULTIHOP\",\n\t\"ENAMETOOLONG\",\n\t\"ENETDOWN\",\n\t\"ENETRESET\",\n\t\"ENETUNREACH\",\n\t\"ENFILE\",\n\t\"ENOBUFS\",\n\t\"ENODEV\",\n\t\"ENOENT\",\n\t\"ENOEXEC\",\n\t\"ENOLCK\",\n\t\"ENOLINK\",\n\t\"ENOMEM\",\n\t\"ENOMSG\",\n\t\"ENOPROTOOPT\",\n\t\"ENOSPC\",\n\t\"ENOSYS\",\n\t\"ENOTCONN\",\n\t\"ENOTDIR\",\n\t\"ENOTEMPTY\",\n\t\"ENOTRECOVERABLE\",\n\t\"ENOTSOCK\",\n\t\"ENOTSUP\",\n\t\"ENOTTY\",\n\t\"ENXIO\",\n\t\"EOVERFLOW\",\n\t\"EOWNERDEAD\",\n\t\"EPERM\",\n\t\"EPIPE\",\n\t\"EPROTO\",\n\t\"EPROTONOSUPPORT\",\n\t\"EPROTOTYPE\",\n\t\"ERANGE\",\n\t\"EROFS\",\n\t\"ESPIPE\",\n\t\"ESRCH\",\n\t\"ESTALE\",\n\t\"ETIMEDOUT\",\n\t\"ETXTBSY\",\n\t\"EXDEV\",\n\t\"ENOTCAPABLE\",\n}\n\n// ToErrno coerces the error to a WASI Errno.\n//\n// Note: Coercion isn't centralized in sys.FSContext because ABI use different\n// error codes. For example, wasi-filesystem doesn't map to these\n// Errno.\nfunc ToErrno(errno sys.Errno) Errno {\n\tswitch errno {\n\tcase 0:\n\t\treturn ErrnoSuccess\n\tcase sys.EACCES:\n\t\treturn ErrnoAcces\n\tcase sys.EAGAIN:\n\t\treturn ErrnoAgain\n\tcase sys.EBADF:\n\t\treturn ErrnoBadf\n\tcase sys.EEXIST:\n\t\treturn ErrnoExist\n\tcase sys.EFAULT:\n\t\treturn ErrnoFault\n\tcase sys.EINTR:\n\t\treturn ErrnoIntr\n\tcase sys.EINVAL:\n\t\treturn ErrnoInval\n\tcase sys.EIO:\n\t\treturn ErrnoIo\n\tcase sys.EISDIR:\n\t\treturn ErrnoIsdir\n\tcase sys.ELOOP:\n\t\treturn ErrnoLoop\n\tcase sys.ENAMETOOLONG:\n\t\treturn ErrnoNametoolong\n\tcase sys.ENOENT:\n\t\treturn ErrnoNoent\n\tcase sys.ENOSYS:\n\t\treturn ErrnoNosys\n\tcase sys.ENOTDIR:\n\t\treturn ErrnoNotdir\n\tcase sys.ERANGE:\n\t\treturn ErrnoRange\n\tcase sys.ENOTEMPTY:\n\t\treturn ErrnoNotempty\n\tcase sys.ENOTSOCK:\n\t\treturn ErrnoNotsock\n\tcase sys.ENOTSUP:\n\t\treturn ErrnoNotsup\n\tcase sys.EPERM:\n\t\treturn ErrnoPerm\n\tcase sys.EROFS:\n\t\treturn ErrnoRofs\n\tdefault:\n\t\treturn ErrnoIo\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/wasip1/fs.go",
    "content": "package wasip1\n\nimport (\n\t\"fmt\"\n)\n\nconst (\n\tFdAdviseName           = \"fd_advise\"\n\tFdAllocateName         = \"fd_allocate\"\n\tFdCloseName            = \"fd_close\"\n\tFdDatasyncName         = \"fd_datasync\"\n\tFdFdstatGetName        = \"fd_fdstat_get\"\n\tFdFdstatSetFlagsName   = \"fd_fdstat_set_flags\"\n\tFdFdstatSetRightsName  = \"fd_fdstat_set_rights\"\n\tFdFilestatGetName      = \"fd_filestat_get\"\n\tFdFilestatSetSizeName  = \"fd_filestat_set_size\"\n\tFdFilestatSetTimesName = \"fd_filestat_set_times\"\n\tFdPreadName            = \"fd_pread\"\n\tFdPrestatGetName       = \"fd_prestat_get\"\n\tFdPrestatDirNameName   = \"fd_prestat_dir_name\"\n\tFdPwriteName           = \"fd_pwrite\"\n\tFdReadName             = \"fd_read\"\n\tFdReaddirName          = \"fd_readdir\"\n\tFdRenumberName         = \"fd_renumber\"\n\tFdSeekName             = \"fd_seek\"\n\tFdSyncName             = \"fd_sync\"\n\tFdTellName             = \"fd_tell\"\n\tFdWriteName            = \"fd_write\"\n\n\tPathCreateDirectoryName  = \"path_create_directory\"\n\tPathFilestatGetName      = \"path_filestat_get\"\n\tPathFilestatSetTimesName = \"path_filestat_set_times\"\n\tPathLinkName             = \"path_link\"\n\tPathOpenName             = \"path_open\"\n\tPathReadlinkName         = \"path_readlink\"\n\tPathRemoveDirectoryName  = \"path_remove_directory\"\n\tPathRenameName           = \"path_rename\"\n\tPathSymlinkName          = \"path_symlink\"\n\tPathUnlinkFileName       = \"path_unlink_file\"\n)\n\n// oflags are open flags used by path_open\n// See https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#-oflags-flagsu16\nconst (\n\t// O_CREAT creates a file if it does not exist.\n\tO_CREAT uint16 = 1 << iota //nolint\n\t// O_DIRECTORY fails if not a directory.\n\tO_DIRECTORY\n\t// O_EXCL fails if file already exists.\n\tO_EXCL //nolint\n\t// O_TRUNC truncates the file to size 0.\n\tO_TRUNC //nolint\n)\n\nfunc OflagsString(oflags int) string {\n\treturn flagsString(oflagNames[:], oflags)\n}\n\nvar oflagNames = [...]string{\n\t\"CREAT\",\n\t\"DIRECTORY\",\n\t\"EXCL\",\n\t\"TRUNC\",\n}\n\n// file descriptor flags\n// See https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#fdflags\nconst (\n\tFD_APPEND uint16 = 1 << iota //nolint\n\tFD_DSYNC\n\tFD_NONBLOCK\n\tFD_RSYNC\n\tFD_SYNC\n)\n\nfunc FdFlagsString(fdflags int) string {\n\treturn flagsString(fdflagNames[:], fdflags)\n}\n\nvar fdflagNames = [...]string{\n\t\"APPEND\",\n\t\"DSYNC\",\n\t\"NONBLOCK\",\n\t\"RSYNC\",\n\t\"SYNC\",\n}\n\n// See https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#lookupflags\nconst (\n\t// LOOKUP_SYMLINK_FOLLOW expands a path if it resolves into a symbolic\n\t// link.\n\tLOOKUP_SYMLINK_FOLLOW uint16 = 1 << iota //nolint\n)\n\nvar lookupflagNames = [...]string{\n\t\"SYMLINK_FOLLOW\",\n}\n\nfunc LookupflagsString(lookupflags int) string {\n\treturn flagsString(lookupflagNames[:], lookupflags)\n}\n\n// DirentSize is the size of the dirent struct, which should be followed by the\n// length of a file name.\nconst DirentSize = uint32(24)\n\nconst (\n\tFILETYPE_UNKNOWN uint8 = iota\n\tFILETYPE_BLOCK_DEVICE\n\tFILETYPE_CHARACTER_DEVICE\n\tFILETYPE_DIRECTORY\n\tFILETYPE_REGULAR_FILE\n\tFILETYPE_SOCKET_DGRAM\n\tFILETYPE_SOCKET_STREAM\n\tFILETYPE_SYMBOLIC_LINK\n)\n\n// FiletypeName returns string name of the file type.\nfunc FiletypeName(filetype uint8) string {\n\tif int(filetype) < len(filetypeToString) {\n\t\treturn filetypeToString[filetype]\n\t}\n\treturn fmt.Sprintf(\"filetype(%d)\", filetype)\n}\n\nvar filetypeToString = [...]string{\n\t\"UNKNOWN\",\n\t\"BLOCK_DEVICE\",\n\t\"CHARACTER_DEVICE\",\n\t\"DIRECTORY\",\n\t\"REGULAR_FILE\",\n\t\"SOCKET_DGRAM\",\n\t\"SOCKET_STREAM\",\n\t\"SYMBOLIC_LINK\",\n}\n\n// https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#fstflags\nconst (\n\tFstflagsAtim uint16 = 1 << iota\n\tFstflagsAtimNow\n\tFstflagsMtim\n\tFstflagsMtimNow\n)\n\nvar fstflagNames = [...]string{\n\t\"ATIM\",\n\t\"ATIM_NOW\",\n\t\"MTIM\",\n\t\"MTIM_NOW\",\n}\n\nfunc FstflagsString(fdflags int) string {\n\treturn flagsString(fstflagNames[:], fdflags)\n}\n\n// https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#-advice-enumu8\nconst (\n\tFdAdviceNormal byte = iota\n\tFdAdviceSequential\n\tFdAdviceRandom\n\tFdAdviceWillNeed\n\tFdAdviceDontNeed\n\tFdAdviceNoReuse\n)\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/wasip1/poll.go",
    "content": "package wasip1\n\n// https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#-eventtype-enumu8\nconst (\n\t// EventTypeClock is the timeout event named \"name\".\n\tEventTypeClock = iota\n\t// EventTypeFdRead is the data available event named \"fd_read\".\n\tEventTypeFdRead\n\t// EventTypeFdWrite is the capacity available event named \"fd_write\".\n\tEventTypeFdWrite\n)\n\nconst (\n\tPollOneoffName = \"poll_oneoff\"\n)\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/wasip1/proc.go",
    "content": "package wasip1\n\nconst (\n\tProcExitName  = \"proc_exit\"\n\tProcRaiseName = \"proc_raise\"\n)\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/wasip1/random.go",
    "content": "package wasip1\n\nconst RandomGetName = \"random_get\"\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/wasip1/rights.go",
    "content": "package wasip1\n\n// See https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#-rights-flagsu64\nconst (\n\t// RIGHT_FD_DATASYNC is the right to invoke fd_datasync. If RIGHT_PATH_OPEN\n\t// is set, includes the right to invoke path_open with FD_DSYNC.\n\tRIGHT_FD_DATASYNC uint32 = 1 << iota //nolint\n\n\t// RIGHT_FD_READ is he right to invoke fd_read and sock_recv. If\n\t// RIGHT_FD_SYNC is set, includes the right to invoke fd_pread.\n\tRIGHT_FD_READ\n\n\t// RIGHT_FD_SEEK is the right to invoke fd_seek. This flag implies\n\t// RIGHT_FD_TELL.\n\tRIGHT_FD_SEEK\n\n\t// RIGHT_FDSTAT_SET_FLAGS is the right to invoke fd_fdstat_set_flags.\n\tRIGHT_FDSTAT_SET_FLAGS\n\n\t// RIGHT_FD_SYNC The right to invoke fd_sync. If path_open is set, includes\n\t// the right to invoke path_open with FD_RSYNC and FD_DSYNC.\n\tRIGHT_FD_SYNC\n\n\t// RIGHT_FD_TELL is the right to invoke fd_seek in such a way that the file\n\t// offset remains unaltered (i.e., whence::cur with offset zero), or to\n\t// invoke fd_tell.\n\tRIGHT_FD_TELL\n\n\t// RIGHT_FD_WRITE is the right to invoke fd_write and sock_send. If\n\t// RIGHT_FD_SEEK is set, includes the right to invoke fd_pwrite.\n\tRIGHT_FD_WRITE\n\n\t// RIGHT_FD_ADVISE is the right to invoke fd_advise.\n\tRIGHT_FD_ADVISE\n\n\t// RIGHT_FD_ALLOCATE is the right to invoke fd_allocate.\n\tRIGHT_FD_ALLOCATE\n\n\t// RIGHT_PATH_CREATE_DIRECTORY is the right to invoke\n\t// path_create_directory.\n\tRIGHT_PATH_CREATE_DIRECTORY\n\n\t// RIGHT_PATH_CREATE_FILE when RIGHT_PATH_OPEN is set, the right to invoke\n\t// path_open with O_CREAT.\n\tRIGHT_PATH_CREATE_FILE\n\n\t// RIGHT_PATH_LINK_SOURCE is the right to invoke path_link with the file\n\t// descriptor as the source directory.\n\tRIGHT_PATH_LINK_SOURCE\n\n\t// RIGHT_PATH_LINK_TARGET is the right to invoke path_link with the file\n\t// descriptor as the target directory.\n\tRIGHT_PATH_LINK_TARGET\n\n\t// RIGHT_PATH_OPEN is the right to invoke path_open.\n\tRIGHT_PATH_OPEN\n\n\t// RIGHT_FD_READDIR is the right to invoke fd_readdir.\n\tRIGHT_FD_READDIR\n\n\t// RIGHT_PATH_READLINK is the right to invoke path_readlink.\n\tRIGHT_PATH_READLINK\n\n\t// RIGHT_PATH_RENAME_SOURCE is the right to invoke path_rename with the\n\t// file descriptor as the source directory.\n\tRIGHT_PATH_RENAME_SOURCE\n\n\t// RIGHT_PATH_RENAME_TARGET is the right to invoke path_rename with the\n\t// file descriptor as the target directory.\n\tRIGHT_PATH_RENAME_TARGET\n\n\t// RIGHT_PATH_FILESTAT_GET is the right to invoke path_filestat_get.\n\tRIGHT_PATH_FILESTAT_GET\n\n\t// RIGHT_PATH_FILESTAT_SET_SIZE is the right to change a file's size (there\n\t// is no path_filestat_set_size). If RIGHT_PATH_OPEN is set, includes the\n\t// right to invoke path_open with O_TRUNC.\n\tRIGHT_PATH_FILESTAT_SET_SIZE\n\n\t// RIGHT_PATH_FILESTAT_SET_TIMES is the right to invoke\n\t// path_filestat_set_times.\n\tRIGHT_PATH_FILESTAT_SET_TIMES\n\n\t// RIGHT_FD_FILESTAT_GET is the right to invoke fd_filestat_get.\n\tRIGHT_FD_FILESTAT_GET\n\n\t// RIGHT_FD_FILESTAT_SET_SIZE is the right to invoke fd_filestat_set_size.\n\tRIGHT_FD_FILESTAT_SET_SIZE\n\n\t// RIGHT_FD_FILESTAT_SET_TIMES is the right to invoke\n\t// fd_filestat_set_times.\n\tRIGHT_FD_FILESTAT_SET_TIMES\n\n\t// RIGHT_PATH_SYMLINK is the right to invoke path_symlink.\n\tRIGHT_PATH_SYMLINK\n\n\t// RIGHT_PATH_REMOVE_DIRECTORY is the right to invoke\n\t// path_remove_directory.\n\tRIGHT_PATH_REMOVE_DIRECTORY\n\n\t// RIGHT_PATH_UNLINK_FILE is the right to invoke path_unlink_file.\n\tRIGHT_PATH_UNLINK_FILE\n\n\t// RIGHT_POLL_FD_READWRITE when RIGHT_FD_READ is set, includes the right to\n\t// invoke poll_oneoff to subscribe to eventtype::fd_read. If RIGHT_FD_WRITE\n\t// is set, includes the right to invoke poll_oneoff to subscribe to\n\t// eventtype::fd_write.\n\tRIGHT_POLL_FD_READWRITE\n\n\t// RIGHT_SOCK_SHUTDOWN is the right to invoke sock_shutdown.\n\tRIGHT_SOCK_SHUTDOWN\n)\n\nfunc RightsString(rights int) string {\n\treturn flagsString(rightNames[:], rights)\n}\n\nvar rightNames = [...]string{\n\t\"FD_DATASYNC\",\n\t\"FD_READ\",\n\t\"FD_SEEK\",\n\t\"FDSTAT_SET_FLAGS\",\n\t\"FD_SYNC\",\n\t\"FD_TELL\",\n\t\"FD_WRITE\",\n\t\"FD_ADVISE\",\n\t\"FD_ALLOCATE\",\n\t\"PATH_CREATE_DIRECTORY\",\n\t\"PATH_CREATE_FILE\",\n\t\"PATH_LINK_SOURCE\",\n\t\"PATH_LINK_TARGET\",\n\t\"PATH_OPEN\",\n\t\"FD_READDIR\",\n\t\"PATH_READLINK\",\n\t\"PATH_RENAME_SOURCE\",\n\t\"PATH_RENAME_TARGET\",\n\t\"PATH_FILESTAT_GET\",\n\t\"PATH_FILESTAT_SET_SIZE\",\n\t\"PATH_FILESTAT_SET_TIMES\",\n\t\"FD_FILESTAT_GET\",\n\t\"FD_FILESTAT_SET_SIZE\",\n\t\"FD_FILESTAT_SET_TIMES\",\n\t\"PATH_SYMLINK\",\n\t\"PATH_REMOVE_DIRECTORY\",\n\t\"PATH_UNLINK_FILE\",\n\t\"POLL_FD_READWRITE\",\n\t\"SOCK_SHUTDOWN\",\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/wasip1/sched.go",
    "content": "package wasip1\n\nconst SchedYieldName = \"sched_yield\"\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/wasip1/sock.go",
    "content": "package wasip1\n\nimport \"strconv\"\n\nconst (\n\tSockAcceptName   = \"sock_accept\"\n\tSockRecvName     = \"sock_recv\"\n\tSockSendName     = \"sock_send\"\n\tSockShutdownName = \"sock_shutdown\"\n)\n\n// SD Flags indicate which channels on a socket to shut down.\n// https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#-sdflags-flagsu8\nconst (\n\t// SD_RD disables further receive operations.\n\tSD_RD uint8 = 1 << iota //nolint\n\t// SD_WR disables further send operations.\n\tSD_WR\n)\n\nfunc SdFlagsString(sdflags int) string {\n\treturn flagsString(sdflagNames[:], sdflags)\n}\n\nvar sdflagNames = [...]string{\n\t\"RD\",\n\t\"WR\",\n}\n\n// SI Flags are flags provided to sock_send. As there are currently no flags defined, it must be set to zero.\n// https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#-siflags-u16\n\nfunc SiFlagsString(siflags int) string {\n\tif siflags == 0 {\n\t\treturn \"\"\n\t}\n\treturn strconv.Itoa(siflags)\n}\n\n// RI Flags are flags provided to sock_recv.\n// https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#-riflags-flagsu16\nconst (\n\t// RI_RECV_PEEK returns the message without removing it from the socket's receive queue\n\tRI_RECV_PEEK uint8 = 1 << iota //nolint\n\t// RI_RECV_WAITALL on byte-stream sockets, block until the full amount of data can be returned.\n\tRI_RECV_WAITALL\n)\n\nfunc RiFlagsString(riflags int) string {\n\treturn flagsString(riflagNames[:], riflags)\n}\n\nvar riflagNames = [...]string{\n\t\"RECV_PEEK\",\n\t\"RECV_WAITALL\",\n}\n\n// RO Flags are flags returned by sock_recv.\n// https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#-roflags-flagsu16\nconst (\n\t// RO_RECV_DATA_TRUNCATED is returned by sock_recv when message data has been truncated.\n\tRO_RECV_DATA_TRUNCATED uint8 = 1 << iota //nolint\n)\n\nfunc RoFlagsString(roflags int) string {\n\treturn flagsString(roflagNames[:], roflags)\n}\n\nvar roflagNames = [...]string{\n\t\"RECV_DATA_TRUNCATED\",\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/wasip1/wasi.go",
    "content": "// Package wasip1 is a helper to remove package cycles re-using constants.\npackage wasip1\n\nimport (\n\t\"strings\"\n)\n\n// InternalModuleName is not named ModuleName, to avoid a clash on dot imports.\nconst InternalModuleName = \"wasi_snapshot_preview1\"\n\nfunc flagsString(names []string, f int) string {\n\tvar builder strings.Builder\n\tfirst := true\n\tfor i, sf := range names {\n\t\ttarget := 1 << i\n\t\tif target&f != 0 {\n\t\t\tif !first {\n\t\t\t\tbuilder.WriteByte('|')\n\t\t\t} else {\n\t\t\t\tfirst = false\n\t\t\t}\n\t\t\tbuilder.WriteString(sf)\n\t\t}\n\t}\n\treturn builder.String()\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/wasm/binary/code.go",
    "content": "package binary\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"math\"\n\n\t\"github.com/tetratelabs/wazero/internal/leb128\"\n\t\"github.com/tetratelabs/wazero/internal/wasm\"\n)\n\nfunc decodeCode(r *bytes.Reader, codeSectionStart uint64, ret *wasm.Code) (err error) {\n\tss, _, err := leb128.DecodeUint32(r)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"get the size of code: %w\", err)\n\t}\n\tremaining := int64(ss)\n\n\t// Parse #locals.\n\tls, bytesRead, err := leb128.DecodeUint32(r)\n\tremaining -= int64(bytesRead)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"get the size locals: %v\", err)\n\t} else if remaining < 0 {\n\t\treturn io.EOF\n\t}\n\n\t// Validate the locals.\n\tbytesRead = 0\n\tvar sum uint64\n\tfor i := uint32(0); i < ls; i++ {\n\t\tnum, n, err := leb128.DecodeUint32(r)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"read n of locals: %v\", err)\n\t\t} else if remaining < 0 {\n\t\t\treturn io.EOF\n\t\t}\n\n\t\tsum += uint64(num)\n\n\t\tb, err := r.ReadByte()\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"read type of local: %v\", err)\n\t\t}\n\n\t\tbytesRead += n + 1\n\t\tswitch vt := b; vt {\n\t\tcase wasm.ValueTypeI32, wasm.ValueTypeF32, wasm.ValueTypeI64, wasm.ValueTypeF64,\n\t\t\twasm.ValueTypeFuncref, wasm.ValueTypeExternref, wasm.ValueTypeV128:\n\t\tdefault:\n\t\t\treturn fmt.Errorf(\"invalid local type: 0x%x\", vt)\n\t\t}\n\t}\n\n\tif sum > math.MaxUint32 {\n\t\treturn fmt.Errorf(\"too many locals: %d\", sum)\n\t}\n\n\t// Rewind the buffer.\n\t_, err = r.Seek(-int64(bytesRead), io.SeekCurrent)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tlocalTypes := make([]wasm.ValueType, 0, sum)\n\tfor i := uint32(0); i < ls; i++ {\n\t\tnum, bytesRead, err := leb128.DecodeUint32(r)\n\t\tremaining -= int64(bytesRead) + 1 // +1 for the subsequent ReadByte\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"read n of locals: %v\", err)\n\t\t} else if remaining < 0 {\n\t\t\treturn io.EOF\n\t\t}\n\n\t\tb, err := r.ReadByte()\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"read type of local: %v\", err)\n\t\t}\n\n\t\tfor j := uint32(0); j < num; j++ {\n\t\t\tlocalTypes = append(localTypes, b)\n\t\t}\n\t}\n\n\tbodyOffsetInCodeSection := codeSectionStart - uint64(r.Len())\n\tbody := make([]byte, remaining)\n\tif _, err = io.ReadFull(r, body); err != nil {\n\t\treturn fmt.Errorf(\"read body: %w\", err)\n\t}\n\n\tif endIndex := len(body) - 1; endIndex < 0 || body[endIndex] != wasm.OpcodeEnd {\n\t\treturn fmt.Errorf(\"expr not end with OpcodeEnd\")\n\t}\n\n\tret.BodyOffsetInCodeSection = bodyOffsetInCodeSection\n\tret.LocalTypes = localTypes\n\tret.Body = body\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/wasm/binary/const_expr.go",
    "content": "package binary\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\n\t\"github.com/tetratelabs/wazero/api\"\n\t\"github.com/tetratelabs/wazero/internal/ieee754\"\n\t\"github.com/tetratelabs/wazero/internal/leb128\"\n\t\"github.com/tetratelabs/wazero/internal/wasm\"\n)\n\nfunc decodeConstantExpression(r *bytes.Reader, enabledFeatures api.CoreFeatures, ret *wasm.ConstantExpression) error {\n\tb, err := r.ReadByte()\n\tif err != nil {\n\t\treturn fmt.Errorf(\"read opcode: %v\", err)\n\t}\n\n\tremainingBeforeData := int64(r.Len())\n\toffsetAtData := r.Size() - remainingBeforeData\n\n\topcode := b\n\tswitch opcode {\n\tcase wasm.OpcodeI32Const:\n\t\t// Treat constants as signed as their interpretation is not yet known per /RATIONALE.md\n\t\t_, _, err = leb128.DecodeInt32(r)\n\tcase wasm.OpcodeI64Const:\n\t\t// Treat constants as signed as their interpretation is not yet known per /RATIONALE.md\n\t\t_, _, err = leb128.DecodeInt64(r)\n\tcase wasm.OpcodeF32Const:\n\t\tbuf := make([]byte, 4)\n\t\tif _, err := io.ReadFull(r, buf); err != nil {\n\t\t\treturn fmt.Errorf(\"read f32 constant: %v\", err)\n\t\t}\n\t\t_, err = ieee754.DecodeFloat32(buf)\n\tcase wasm.OpcodeF64Const:\n\t\tbuf := make([]byte, 8)\n\t\tif _, err := io.ReadFull(r, buf); err != nil {\n\t\t\treturn fmt.Errorf(\"read f64 constant: %v\", err)\n\t\t}\n\t\t_, err = ieee754.DecodeFloat64(buf)\n\tcase wasm.OpcodeGlobalGet:\n\t\t_, _, err = leb128.DecodeUint32(r)\n\tcase wasm.OpcodeRefNull:\n\t\tif err := enabledFeatures.RequireEnabled(api.CoreFeatureBulkMemoryOperations); err != nil {\n\t\t\treturn fmt.Errorf(\"ref.null is not supported as %w\", err)\n\t\t}\n\t\treftype, err := r.ReadByte()\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"read reference type for ref.null: %w\", err)\n\t\t} else if reftype != wasm.RefTypeFuncref && reftype != wasm.RefTypeExternref {\n\t\t\treturn fmt.Errorf(\"invalid type for ref.null: 0x%x\", reftype)\n\t\t}\n\tcase wasm.OpcodeRefFunc:\n\t\tif err := enabledFeatures.RequireEnabled(api.CoreFeatureBulkMemoryOperations); err != nil {\n\t\t\treturn fmt.Errorf(\"ref.func is not supported as %w\", err)\n\t\t}\n\t\t// Parsing index.\n\t\t_, _, err = leb128.DecodeUint32(r)\n\tcase wasm.OpcodeVecPrefix:\n\t\tif err := enabledFeatures.RequireEnabled(api.CoreFeatureSIMD); err != nil {\n\t\t\treturn fmt.Errorf(\"vector instructions are not supported as %w\", err)\n\t\t}\n\t\topcode, err = r.ReadByte()\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"read vector instruction opcode suffix: %w\", err)\n\t\t}\n\n\t\tif opcode != wasm.OpcodeVecV128Const {\n\t\t\treturn fmt.Errorf(\"invalid vector opcode for const expression: %#x\", opcode)\n\t\t}\n\n\t\tremainingBeforeData = int64(r.Len())\n\t\toffsetAtData = r.Size() - remainingBeforeData\n\n\t\tn, err := r.Read(make([]byte, 16))\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"read vector const instruction immediates: %w\", err)\n\t\t} else if n != 16 {\n\t\t\treturn fmt.Errorf(\"read vector const instruction immediates: needs 16 bytes but was %d bytes\", n)\n\t\t}\n\tdefault:\n\t\treturn fmt.Errorf(\"%v for const expression opt code: %#x\", ErrInvalidByte, b)\n\t}\n\n\tif err != nil {\n\t\treturn fmt.Errorf(\"read value: %v\", err)\n\t}\n\n\tif b, err = r.ReadByte(); err != nil {\n\t\treturn fmt.Errorf(\"look for end opcode: %v\", err)\n\t}\n\n\tif b != wasm.OpcodeEnd {\n\t\treturn fmt.Errorf(\"constant expression has been not terminated\")\n\t}\n\n\tret.Data = make([]byte, remainingBeforeData-int64(r.Len())-1)\n\tif _, err = r.ReadAt(ret.Data, offsetAtData); err != nil {\n\t\treturn fmt.Errorf(\"error re-buffering ConstantExpression.Data\")\n\t}\n\tret.Opcode = opcode\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/wasm/binary/custom.go",
    "content": "package binary\n\nimport (\n\t\"bytes\"\n\n\t\"github.com/tetratelabs/wazero/internal/wasm\"\n)\n\n// decodeCustomSection deserializes the data **not** associated with the \"name\" key in SectionIDCustom.\n//\n// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#custom-section%E2%91%A0\nfunc decodeCustomSection(r *bytes.Reader, name string, limit uint64) (result *wasm.CustomSection, err error) {\n\tbuf := make([]byte, limit)\n\t_, err = r.Read(buf)\n\n\tresult = &wasm.CustomSection{\n\t\tName: name,\n\t\tData: buf,\n\t}\n\n\treturn\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/wasm/binary/data.go",
    "content": "package binary\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\n\t\"github.com/tetratelabs/wazero/api\"\n\t\"github.com/tetratelabs/wazero/internal/leb128\"\n\t\"github.com/tetratelabs/wazero/internal/wasm\"\n)\n\n// dataSegmentPrefix represents three types of data segments.\n//\n// https://www.w3.org/TR/2022/WD-wasm-core-2-20220419/binary/modules.html#data-section\ntype dataSegmentPrefix = uint32\n\nconst (\n\t// dataSegmentPrefixActive is the prefix for the version 1.0 compatible data segment, which is classified as \"active\" in 2.0.\n\tdataSegmentPrefixActive dataSegmentPrefix = 0x0\n\t// dataSegmentPrefixPassive prefixes the \"passive\" data segment as in version 2.0 specification.\n\tdataSegmentPrefixPassive dataSegmentPrefix = 0x1\n\t// dataSegmentPrefixActiveWithMemoryIndex is the active prefix with memory index encoded which is defined for futur use as of 2.0.\n\tdataSegmentPrefixActiveWithMemoryIndex dataSegmentPrefix = 0x2\n)\n\nfunc decodeDataSegment(r *bytes.Reader, enabledFeatures api.CoreFeatures, ret *wasm.DataSegment) (err error) {\n\tdataSegmentPrefx, _, err := leb128.DecodeUint32(r)\n\tif err != nil {\n\t\terr = fmt.Errorf(\"read data segment prefix: %w\", err)\n\t\treturn\n\t}\n\n\tif dataSegmentPrefx != dataSegmentPrefixActive {\n\t\tif err = enabledFeatures.RequireEnabled(api.CoreFeatureBulkMemoryOperations); err != nil {\n\t\t\terr = fmt.Errorf(\"non-zero prefix for data segment is invalid as %w\", err)\n\t\t\treturn\n\t\t}\n\t}\n\n\tswitch dataSegmentPrefx {\n\tcase dataSegmentPrefixActive,\n\t\tdataSegmentPrefixActiveWithMemoryIndex:\n\t\t// Active data segment as in\n\t\t// https://www.w3.org/TR/2022/WD-wasm-core-2-20220419/binary/modules.html#data-section\n\t\tif dataSegmentPrefx == 0x2 {\n\t\t\td, _, err := leb128.DecodeUint32(r)\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"read memory index: %v\", err)\n\t\t\t} else if d != 0 {\n\t\t\t\treturn fmt.Errorf(\"memory index must be zero but was %d\", d)\n\t\t\t}\n\t\t}\n\n\t\terr = decodeConstantExpression(r, enabledFeatures, &ret.OffsetExpression)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"read offset expression: %v\", err)\n\t\t}\n\tcase dataSegmentPrefixPassive:\n\t\t// Passive data segment doesn't need const expr nor memory index encoded.\n\t\t// https://www.w3.org/TR/2022/WD-wasm-core-2-20220419/binary/modules.html#data-section\n\t\tret.Passive = true\n\tdefault:\n\t\terr = fmt.Errorf(\"invalid data segment prefix: 0x%x\", dataSegmentPrefx)\n\t\treturn\n\t}\n\n\tvs, _, err := leb128.DecodeUint32(r)\n\tif err != nil {\n\t\terr = fmt.Errorf(\"get the size of vector: %v\", err)\n\t\treturn\n\t}\n\n\tret.Init = make([]byte, vs)\n\tif _, err = io.ReadFull(r, ret.Init); err != nil {\n\t\terr = fmt.Errorf(\"read bytes for init: %v\", err)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/wasm/binary/decoder.go",
    "content": "package binary\n\nimport (\n\t\"bytes\"\n\t\"debug/dwarf\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\n\t\"github.com/tetratelabs/wazero/api\"\n\t\"github.com/tetratelabs/wazero/internal/leb128\"\n\t\"github.com/tetratelabs/wazero/internal/wasm\"\n\t\"github.com/tetratelabs/wazero/internal/wasmdebug\"\n)\n\n// DecodeModule implements wasm.DecodeModule for the WebAssembly 1.0 (20191205) Binary Format\n// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#binary-format%E2%91%A0\nfunc DecodeModule(\n\tbinary []byte,\n\tenabledFeatures api.CoreFeatures,\n\tmemoryLimitPages uint32,\n\tmemoryCapacityFromMax,\n\tdwarfEnabled, storeCustomSections bool,\n) (*wasm.Module, error) {\n\tr := bytes.NewReader(binary)\n\n\t// Magic number.\n\tbuf := make([]byte, 4)\n\tif _, err := io.ReadFull(r, buf); err != nil || !bytes.Equal(buf, Magic) {\n\t\treturn nil, ErrInvalidMagicNumber\n\t}\n\n\t// Version.\n\tif _, err := io.ReadFull(r, buf); err != nil || !bytes.Equal(buf, version) {\n\t\treturn nil, ErrInvalidVersion\n\t}\n\n\tmemSizer := newMemorySizer(memoryLimitPages, memoryCapacityFromMax)\n\n\tm := &wasm.Module{}\n\tvar info, line, str, abbrev, ranges []byte // For DWARF Data.\n\tfor {\n\t\t// TODO: except custom sections, all others are required to be in order, but we aren't checking yet.\n\t\t// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#modules%E2%91%A0%E2%93%AA\n\t\tsectionID, err := r.ReadByte()\n\t\tif err == io.EOF {\n\t\t\tbreak\n\t\t} else if err != nil {\n\t\t\treturn nil, fmt.Errorf(\"read section id: %w\", err)\n\t\t}\n\n\t\tsectionSize, _, err := leb128.DecodeUint32(r)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"get size of section %s: %v\", wasm.SectionIDName(sectionID), err)\n\t\t}\n\n\t\tsectionContentStart := r.Len()\n\t\tswitch sectionID {\n\t\tcase wasm.SectionIDCustom:\n\t\t\t// First, validate the section and determine if the section for this name has already been set\n\t\t\tname, nameSize, decodeErr := decodeUTF8(r, \"custom section name\")\n\t\t\tif decodeErr != nil {\n\t\t\t\terr = decodeErr\n\t\t\t\tbreak\n\t\t\t} else if sectionSize < nameSize {\n\t\t\t\terr = fmt.Errorf(\"malformed custom section %s\", name)\n\t\t\t\tbreak\n\t\t\t} else if name == \"name\" && m.NameSection != nil {\n\t\t\t\terr = fmt.Errorf(\"redundant custom section %s\", name)\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\t// Now, either decode the NameSection or CustomSection\n\t\t\tlimit := sectionSize - nameSize\n\n\t\t\tvar c *wasm.CustomSection\n\t\t\tif name != \"name\" {\n\t\t\t\tif storeCustomSections || dwarfEnabled {\n\t\t\t\t\tc, err = decodeCustomSection(r, name, uint64(limit))\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn nil, fmt.Errorf(\"failed to read custom section name[%s]: %w\", name, err)\n\t\t\t\t\t}\n\t\t\t\t\tm.CustomSections = append(m.CustomSections, c)\n\t\t\t\t\tif dwarfEnabled {\n\t\t\t\t\t\tswitch name {\n\t\t\t\t\t\tcase \".debug_info\":\n\t\t\t\t\t\t\tinfo = c.Data\n\t\t\t\t\t\tcase \".debug_line\":\n\t\t\t\t\t\t\tline = c.Data\n\t\t\t\t\t\tcase \".debug_str\":\n\t\t\t\t\t\t\tstr = c.Data\n\t\t\t\t\t\tcase \".debug_abbrev\":\n\t\t\t\t\t\t\tabbrev = c.Data\n\t\t\t\t\t\tcase \".debug_ranges\":\n\t\t\t\t\t\t\tranges = c.Data\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif _, err = io.CopyN(io.Discard, r, int64(limit)); err != nil {\n\t\t\t\t\t\treturn nil, fmt.Errorf(\"failed to skip name[%s]: %w\", name, err)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tm.NameSection, err = decodeNameSection(r, uint64(limit))\n\t\t\t}\n\t\tcase wasm.SectionIDType:\n\t\t\tm.TypeSection, err = decodeTypeSection(enabledFeatures, r)\n\t\tcase wasm.SectionIDImport:\n\t\t\tm.ImportSection, m.ImportPerModule, m.ImportFunctionCount, m.ImportGlobalCount, m.ImportMemoryCount, m.ImportTableCount, err = decodeImportSection(r, memSizer, memoryLimitPages, enabledFeatures)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err // avoid re-wrapping the error.\n\t\t\t}\n\t\tcase wasm.SectionIDFunction:\n\t\t\tm.FunctionSection, err = decodeFunctionSection(r)\n\t\tcase wasm.SectionIDTable:\n\t\t\tm.TableSection, err = decodeTableSection(r, enabledFeatures)\n\t\tcase wasm.SectionIDMemory:\n\t\t\tm.MemorySection, err = decodeMemorySection(r, enabledFeatures, memSizer, memoryLimitPages)\n\t\tcase wasm.SectionIDGlobal:\n\t\t\tif m.GlobalSection, err = decodeGlobalSection(r, enabledFeatures); err != nil {\n\t\t\t\treturn nil, err // avoid re-wrapping the error.\n\t\t\t}\n\t\tcase wasm.SectionIDExport:\n\t\t\tm.ExportSection, m.Exports, err = decodeExportSection(r)\n\t\tcase wasm.SectionIDStart:\n\t\t\tif m.StartSection != nil {\n\t\t\t\treturn nil, errors.New(\"multiple start sections are invalid\")\n\t\t\t}\n\t\t\tm.StartSection, err = decodeStartSection(r)\n\t\tcase wasm.SectionIDElement:\n\t\t\tm.ElementSection, err = decodeElementSection(r, enabledFeatures)\n\t\tcase wasm.SectionIDCode:\n\t\t\tm.CodeSection, err = decodeCodeSection(r)\n\t\tcase wasm.SectionIDData:\n\t\t\tm.DataSection, err = decodeDataSection(r, enabledFeatures)\n\t\tcase wasm.SectionIDDataCount:\n\t\t\tif err := enabledFeatures.RequireEnabled(api.CoreFeatureBulkMemoryOperations); err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"data count section not supported as %v\", err)\n\t\t\t}\n\t\t\tm.DataCountSection, err = decodeDataCountSection(r)\n\t\tdefault:\n\t\t\terr = ErrInvalidSectionID\n\t\t}\n\n\t\treadBytes := sectionContentStart - r.Len()\n\t\tif err == nil && int(sectionSize) != readBytes {\n\t\t\terr = fmt.Errorf(\"invalid section length: expected to be %d but got %d\", sectionSize, readBytes)\n\t\t}\n\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"section %s: %v\", wasm.SectionIDName(sectionID), err)\n\t\t}\n\t}\n\n\tif dwarfEnabled {\n\t\td, _ := dwarf.New(abbrev, nil, nil, info, line, nil, ranges, str)\n\t\tm.DWARFLines = wasmdebug.NewDWARFLines(d)\n\t}\n\n\tfunctionCount, codeCount := m.SectionElementCount(wasm.SectionIDFunction), m.SectionElementCount(wasm.SectionIDCode)\n\tif functionCount != codeCount {\n\t\treturn nil, fmt.Errorf(\"function and code section have inconsistent lengths: %d != %d\", functionCount, codeCount)\n\t}\n\treturn m, nil\n}\n\n// memorySizer derives min, capacity and max pages from decoded wasm.\ntype memorySizer func(minPages uint32, maxPages *uint32) (min uint32, capacity uint32, max uint32)\n\n// newMemorySizer sets capacity to minPages unless max is defined and\n// memoryCapacityFromMax is true.\nfunc newMemorySizer(memoryLimitPages uint32, memoryCapacityFromMax bool) memorySizer {\n\treturn func(minPages uint32, maxPages *uint32) (min, capacity, max uint32) {\n\t\tif maxPages != nil {\n\t\t\tif memoryCapacityFromMax {\n\t\t\t\treturn minPages, *maxPages, *maxPages\n\t\t\t}\n\t\t\t// This is an invalid value: let it propagate, we will fail later.\n\t\t\tif *maxPages > wasm.MemoryLimitPages {\n\t\t\t\treturn minPages, minPages, *maxPages\n\t\t\t}\n\t\t\t// This is a valid value, but it goes over the run-time limit: return the limit.\n\t\t\tif *maxPages > memoryLimitPages {\n\t\t\t\treturn minPages, minPages, memoryLimitPages\n\t\t\t}\n\t\t\treturn minPages, minPages, *maxPages\n\t\t}\n\t\tif memoryCapacityFromMax {\n\t\t\treturn minPages, memoryLimitPages, memoryLimitPages\n\t\t}\n\t\treturn minPages, minPages, memoryLimitPages\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/wasm/binary/element.go",
    "content": "package binary\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\n\t\"github.com/tetratelabs/wazero/api\"\n\t\"github.com/tetratelabs/wazero/internal/leb128\"\n\t\"github.com/tetratelabs/wazero/internal/wasm\"\n)\n\nfunc ensureElementKindFuncRef(r *bytes.Reader) error {\n\telemKind, err := r.ReadByte()\n\tif err != nil {\n\t\treturn fmt.Errorf(\"read element prefix: %w\", err)\n\t}\n\tif elemKind != 0x0 { // ElemKind is fixed to 0x0 now: https://www.w3.org/TR/2022/WD-wasm-core-2-20220419/binary/modules.html#element-section\n\t\treturn fmt.Errorf(\"element kind must be zero but was 0x%x\", elemKind)\n\t}\n\treturn nil\n}\n\nfunc decodeElementInitValueVector(r *bytes.Reader) ([]wasm.Index, error) {\n\tvs, _, err := leb128.DecodeUint32(r)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"get size of vector: %w\", err)\n\t}\n\n\tvec := make([]wasm.Index, vs)\n\tfor i := range vec {\n\t\tu32, _, err := leb128.DecodeUint32(r)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"read function index: %w\", err)\n\t\t}\n\n\t\tif u32 >= wasm.MaximumFunctionIndex {\n\t\t\treturn nil, fmt.Errorf(\"too large function index in Element init: %d\", u32)\n\t\t}\n\t\tvec[i] = u32\n\t}\n\treturn vec, nil\n}\n\nfunc decodeElementConstExprVector(r *bytes.Reader, elemType wasm.RefType, enabledFeatures api.CoreFeatures) ([]wasm.Index, error) {\n\tvs, _, err := leb128.DecodeUint32(r)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to get the size of constexpr vector: %w\", err)\n\t}\n\tvec := make([]wasm.Index, vs)\n\tfor i := range vec {\n\t\tvar expr wasm.ConstantExpression\n\t\terr := decodeConstantExpression(r, enabledFeatures, &expr)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tswitch expr.Opcode {\n\t\tcase wasm.OpcodeRefFunc:\n\t\t\tif elemType != wasm.RefTypeFuncref {\n\t\t\t\treturn nil, fmt.Errorf(\"element type mismatch: want %s, but constexpr has funcref\", wasm.RefTypeName(elemType))\n\t\t\t}\n\t\t\tv, _, _ := leb128.LoadUint32(expr.Data)\n\t\t\tif v >= wasm.MaximumFunctionIndex {\n\t\t\t\treturn nil, fmt.Errorf(\"too large function index in Element init: %d\", v)\n\t\t\t}\n\t\t\tvec[i] = v\n\t\tcase wasm.OpcodeRefNull:\n\t\t\tif elemType != expr.Data[0] {\n\t\t\t\treturn nil, fmt.Errorf(\"element type mismatch: want %s, but constexpr has %s\",\n\t\t\t\t\twasm.RefTypeName(elemType), wasm.RefTypeName(expr.Data[0]))\n\t\t\t}\n\t\t\tvec[i] = wasm.ElementInitNullReference\n\t\tcase wasm.OpcodeGlobalGet:\n\t\t\ti32, _, _ := leb128.LoadInt32(expr.Data)\n\t\t\t// Resolving the reference type from globals is done at instantiation phase. See the comment on\n\t\t\t// wasm.elementInitImportedGlobalReferenceType.\n\t\t\tvec[i] = wasm.WrapGlobalIndexAsElementInit(wasm.Index(i32))\n\t\tdefault:\n\t\t\treturn nil, fmt.Errorf(\"const expr must be either ref.null or ref.func but was %s\", wasm.InstructionName(expr.Opcode))\n\t\t}\n\t}\n\treturn vec, nil\n}\n\nfunc decodeElementRefType(r *bytes.Reader) (ret wasm.RefType, err error) {\n\tret, err = r.ReadByte()\n\tif err != nil {\n\t\terr = fmt.Errorf(\"read element ref type: %w\", err)\n\t\treturn\n\t}\n\tif ret != wasm.RefTypeFuncref && ret != wasm.RefTypeExternref {\n\t\treturn 0, errors.New(\"ref type must be funcref or externref for element as of WebAssembly 2.0\")\n\t}\n\treturn\n}\n\nconst (\n\t// The prefix is explained at https://www.w3.org/TR/2022/WD-wasm-core-2-20220419/binary/modules.html#element-section\n\n\t// elementSegmentPrefixLegacy is the legacy prefix and is only valid one before CoreFeatureBulkMemoryOperations.\n\telementSegmentPrefixLegacy = iota\n\t// elementSegmentPrefixPassiveFuncrefValueVector is the passive element whose indexes are encoded as vec(varint), and reftype is fixed to funcref.\n\telementSegmentPrefixPassiveFuncrefValueVector\n\t// elementSegmentPrefixActiveFuncrefValueVectorWithTableIndex is the same as elementSegmentPrefixPassiveFuncrefValueVector but active and table index is encoded.\n\telementSegmentPrefixActiveFuncrefValueVectorWithTableIndex\n\t// elementSegmentPrefixDeclarativeFuncrefValueVector is the same as elementSegmentPrefixPassiveFuncrefValueVector but declarative.\n\telementSegmentPrefixDeclarativeFuncrefValueVector\n\t// elementSegmentPrefixActiveFuncrefConstExprVector is active whoce reftype is fixed to funcref and indexes are encoded as vec(const_expr).\n\telementSegmentPrefixActiveFuncrefConstExprVector\n\t// elementSegmentPrefixPassiveConstExprVector is passive whoce indexes are encoded as vec(const_expr), and reftype is encoded.\n\telementSegmentPrefixPassiveConstExprVector\n\t// elementSegmentPrefixPassiveConstExprVector is active whoce indexes are encoded as vec(const_expr), and reftype and table index are encoded.\n\telementSegmentPrefixActiveConstExprVector\n\t// elementSegmentPrefixDeclarativeConstExprVector is declarative whoce indexes are encoded as vec(const_expr), and reftype is encoded.\n\telementSegmentPrefixDeclarativeConstExprVector\n)\n\nfunc decodeElementSegment(r *bytes.Reader, enabledFeatures api.CoreFeatures, ret *wasm.ElementSegment) error {\n\tprefix, _, err := leb128.DecodeUint32(r)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"read element prefix: %w\", err)\n\t}\n\n\tif prefix != elementSegmentPrefixLegacy {\n\t\tif err := enabledFeatures.RequireEnabled(api.CoreFeatureBulkMemoryOperations); err != nil {\n\t\t\treturn fmt.Errorf(\"non-zero prefix for element segment is invalid as %w\", err)\n\t\t}\n\t}\n\n\t// Encoding depends on the prefix and described at https://www.w3.org/TR/2022/WD-wasm-core-2-20220419/binary/modules.html#element-section\n\tswitch prefix {\n\tcase elementSegmentPrefixLegacy:\n\t\t// Legacy prefix which is WebAssembly 1.0 compatible.\n\t\terr = decodeConstantExpression(r, enabledFeatures, &ret.OffsetExpr)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"read expr for offset: %w\", err)\n\t\t}\n\n\t\tret.Init, err = decodeElementInitValueVector(r)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tret.Mode = wasm.ElementModeActive\n\t\tret.Type = wasm.RefTypeFuncref\n\t\treturn nil\n\tcase elementSegmentPrefixPassiveFuncrefValueVector:\n\t\t// Prefix 1 requires funcref.\n\t\tif err = ensureElementKindFuncRef(r); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tret.Init, err = decodeElementInitValueVector(r)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tret.Mode = wasm.ElementModePassive\n\t\tret.Type = wasm.RefTypeFuncref\n\t\treturn nil\n\tcase elementSegmentPrefixActiveFuncrefValueVectorWithTableIndex:\n\t\tret.TableIndex, _, err = leb128.DecodeUint32(r)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"get size of vector: %w\", err)\n\t\t}\n\n\t\tif ret.TableIndex != 0 {\n\t\t\tif err := enabledFeatures.RequireEnabled(api.CoreFeatureReferenceTypes); err != nil {\n\t\t\t\treturn fmt.Errorf(\"table index must be zero but was %d: %w\", ret.TableIndex, err)\n\t\t\t}\n\t\t}\n\n\t\terr := decodeConstantExpression(r, enabledFeatures, &ret.OffsetExpr)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"read expr for offset: %w\", err)\n\t\t}\n\n\t\t// Prefix 2 requires funcref.\n\t\tif err = ensureElementKindFuncRef(r); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tret.Init, err = decodeElementInitValueVector(r)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tret.Mode = wasm.ElementModeActive\n\t\tret.Type = wasm.RefTypeFuncref\n\t\treturn nil\n\tcase elementSegmentPrefixDeclarativeFuncrefValueVector:\n\t\t// Prefix 3 requires funcref.\n\t\tif err = ensureElementKindFuncRef(r); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tret.Init, err = decodeElementInitValueVector(r)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tret.Type = wasm.RefTypeFuncref\n\t\tret.Mode = wasm.ElementModeDeclarative\n\t\treturn nil\n\tcase elementSegmentPrefixActiveFuncrefConstExprVector:\n\t\terr := decodeConstantExpression(r, enabledFeatures, &ret.OffsetExpr)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"read expr for offset: %w\", err)\n\t\t}\n\n\t\tret.Init, err = decodeElementConstExprVector(r, wasm.RefTypeFuncref, enabledFeatures)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tret.Mode = wasm.ElementModeActive\n\t\tret.Type = wasm.RefTypeFuncref\n\t\treturn nil\n\tcase elementSegmentPrefixPassiveConstExprVector:\n\t\tret.Type, err = decodeElementRefType(r)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tret.Init, err = decodeElementConstExprVector(r, ret.Type, enabledFeatures)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tret.Mode = wasm.ElementModePassive\n\t\treturn nil\n\tcase elementSegmentPrefixActiveConstExprVector:\n\t\tret.TableIndex, _, err = leb128.DecodeUint32(r)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"get size of vector: %w\", err)\n\t\t}\n\n\t\tif ret.TableIndex != 0 {\n\t\t\tif err := enabledFeatures.RequireEnabled(api.CoreFeatureReferenceTypes); err != nil {\n\t\t\t\treturn fmt.Errorf(\"table index must be zero but was %d: %w\", ret.TableIndex, err)\n\t\t\t}\n\t\t}\n\t\terr := decodeConstantExpression(r, enabledFeatures, &ret.OffsetExpr)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"read expr for offset: %w\", err)\n\t\t}\n\n\t\tret.Type, err = decodeElementRefType(r)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tret.Init, err = decodeElementConstExprVector(r, ret.Type, enabledFeatures)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tret.Mode = wasm.ElementModeActive\n\t\treturn nil\n\tcase elementSegmentPrefixDeclarativeConstExprVector:\n\t\tret.Type, err = decodeElementRefType(r)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tret.Init, err = decodeElementConstExprVector(r, ret.Type, enabledFeatures)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tret.Mode = wasm.ElementModeDeclarative\n\t\treturn nil\n\tdefault:\n\t\treturn fmt.Errorf(\"invalid element segment prefix: 0x%x\", prefix)\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/wasm/binary/errors.go",
    "content": "package binary\n\nimport \"errors\"\n\nvar (\n\tErrInvalidByte           = errors.New(\"invalid byte\")\n\tErrInvalidMagicNumber    = errors.New(\"invalid magic number\")\n\tErrInvalidVersion        = errors.New(\"invalid version header\")\n\tErrInvalidSectionID      = errors.New(\"invalid section id\")\n\tErrCustomSectionNotFound = errors.New(\"custom section not found\")\n)\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/wasm/binary/export.go",
    "content": "package binary\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\n\t\"github.com/tetratelabs/wazero/internal/leb128\"\n\t\"github.com/tetratelabs/wazero/internal/wasm\"\n)\n\nfunc decodeExport(r *bytes.Reader, ret *wasm.Export) (err error) {\n\tif ret.Name, _, err = decodeUTF8(r, \"export name\"); err != nil {\n\t\treturn\n\t}\n\n\tb, err := r.ReadByte()\n\tif err != nil {\n\t\terr = fmt.Errorf(\"error decoding export kind: %w\", err)\n\t\treturn\n\t}\n\n\tret.Type = b\n\tswitch ret.Type {\n\tcase wasm.ExternTypeFunc, wasm.ExternTypeTable, wasm.ExternTypeMemory, wasm.ExternTypeGlobal:\n\t\tif ret.Index, _, err = leb128.DecodeUint32(r); err != nil {\n\t\t\terr = fmt.Errorf(\"error decoding export index: %w\", err)\n\t\t}\n\tdefault:\n\t\terr = fmt.Errorf(\"%w: invalid byte for exportdesc: %#x\", ErrInvalidByte, b)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/wasm/binary/function.go",
    "content": "package binary\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\n\t\"github.com/tetratelabs/wazero/api\"\n\t\"github.com/tetratelabs/wazero/internal/leb128\"\n\t\"github.com/tetratelabs/wazero/internal/wasm\"\n)\n\nfunc decodeFunctionType(enabledFeatures api.CoreFeatures, r *bytes.Reader, ret *wasm.FunctionType) (err error) {\n\tb, err := r.ReadByte()\n\tif err != nil {\n\t\treturn fmt.Errorf(\"read leading byte: %w\", err)\n\t}\n\n\tif b != 0x60 {\n\t\treturn fmt.Errorf(\"%w: %#x != 0x60\", ErrInvalidByte, b)\n\t}\n\n\tparamCount, _, err := leb128.DecodeUint32(r)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"could not read parameter count: %w\", err)\n\t}\n\n\tparamTypes, err := decodeValueTypes(r, paramCount)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"could not read parameter types: %w\", err)\n\t}\n\n\tresultCount, _, err := leb128.DecodeUint32(r)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"could not read result count: %w\", err)\n\t}\n\n\t// Guard >1.0 feature multi-value\n\tif resultCount > 1 {\n\t\tif err = enabledFeatures.RequireEnabled(api.CoreFeatureMultiValue); err != nil {\n\t\t\treturn fmt.Errorf(\"multiple result types invalid as %v\", err)\n\t\t}\n\t}\n\n\tresultTypes, err := decodeValueTypes(r, resultCount)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"could not read result types: %w\", err)\n\t}\n\n\tret.Params = paramTypes\n\tret.Results = resultTypes\n\n\t// cache the key for the function type\n\t_ = ret.String()\n\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/wasm/binary/global.go",
    "content": "package binary\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\n\t\"github.com/tetratelabs/wazero/api\"\n\t\"github.com/tetratelabs/wazero/internal/wasm\"\n)\n\n// decodeGlobal returns the api.Global decoded with the WebAssembly 1.0 (20191205) Binary Format.\n//\n// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#binary-global\nfunc decodeGlobal(r *bytes.Reader, enabledFeatures api.CoreFeatures, ret *wasm.Global) (err error) {\n\tret.Type, err = decodeGlobalType(r)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\terr = decodeConstantExpression(r, enabledFeatures, &ret.Init)\n\treturn\n}\n\n// decodeGlobalType returns the wasm.GlobalType decoded with the WebAssembly 1.0 (20191205) Binary Format.\n//\n// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#binary-globaltype\nfunc decodeGlobalType(r *bytes.Reader) (wasm.GlobalType, error) {\n\tvt, err := decodeValueTypes(r, 1)\n\tif err != nil {\n\t\treturn wasm.GlobalType{}, fmt.Errorf(\"read value type: %w\", err)\n\t}\n\n\tret := wasm.GlobalType{\n\t\tValType: vt[0],\n\t}\n\n\tb, err := r.ReadByte()\n\tif err != nil {\n\t\treturn wasm.GlobalType{}, fmt.Errorf(\"read mutablity: %w\", err)\n\t}\n\n\tswitch mut := b; mut {\n\tcase 0x00: // not mutable\n\tcase 0x01: // mutable\n\t\tret.Mutable = true\n\tdefault:\n\t\treturn wasm.GlobalType{}, fmt.Errorf(\"%w for mutability: %#x != 0x00 or 0x01\", ErrInvalidByte, mut)\n\t}\n\treturn ret, nil\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/wasm/binary/header.go",
    "content": "package binary\n\n// Magic is the 4 byte preamble (literally \"\\0asm\") of the binary format\n// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#binary-magic\nvar Magic = []byte{0x00, 0x61, 0x73, 0x6D}\n\n// version is format version and doesn't change between known specification versions\n// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#binary-version\nvar version = []byte{0x01, 0x00, 0x00, 0x00}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/wasm/binary/import.go",
    "content": "package binary\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\n\t\"github.com/tetratelabs/wazero/api\"\n\t\"github.com/tetratelabs/wazero/internal/leb128\"\n\t\"github.com/tetratelabs/wazero/internal/wasm\"\n)\n\nfunc decodeImport(\n\tr *bytes.Reader,\n\tidx uint32,\n\tmemorySizer memorySizer,\n\tmemoryLimitPages uint32,\n\tenabledFeatures api.CoreFeatures,\n\tret *wasm.Import,\n) (err error) {\n\tif ret.Module, _, err = decodeUTF8(r, \"import module\"); err != nil {\n\t\terr = fmt.Errorf(\"import[%d] error decoding module: %w\", idx, err)\n\t\treturn\n\t}\n\n\tif ret.Name, _, err = decodeUTF8(r, \"import name\"); err != nil {\n\t\terr = fmt.Errorf(\"import[%d] error decoding name: %w\", idx, err)\n\t\treturn\n\t}\n\n\tb, err := r.ReadByte()\n\tif err != nil {\n\t\terr = fmt.Errorf(\"import[%d] error decoding type: %w\", idx, err)\n\t\treturn\n\t}\n\tret.Type = b\n\tswitch ret.Type {\n\tcase wasm.ExternTypeFunc:\n\t\tret.DescFunc, _, err = leb128.DecodeUint32(r)\n\tcase wasm.ExternTypeTable:\n\t\terr = decodeTable(r, enabledFeatures, &ret.DescTable)\n\tcase wasm.ExternTypeMemory:\n\t\tret.DescMem, err = decodeMemory(r, enabledFeatures, memorySizer, memoryLimitPages)\n\tcase wasm.ExternTypeGlobal:\n\t\tret.DescGlobal, err = decodeGlobalType(r)\n\tdefault:\n\t\terr = fmt.Errorf(\"%w: invalid byte for importdesc: %#x\", ErrInvalidByte, b)\n\t}\n\tif err != nil {\n\t\terr = fmt.Errorf(\"import[%d] %s[%s.%s]: %w\", idx, wasm.ExternTypeName(ret.Type), ret.Module, ret.Name, err)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/wasm/binary/limits.go",
    "content": "package binary\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\n\t\"github.com/tetratelabs/wazero/internal/leb128\"\n)\n\n// decodeLimitsType returns the `limitsType` (min, max) decoded with the WebAssembly 1.0 (20191205) Binary Format.\n//\n// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#limits%E2%91%A6\n//\n// Extended in threads proposal: https://webassembly.github.io/threads/core/binary/types.html#limits\nfunc decodeLimitsType(r *bytes.Reader) (min uint32, max *uint32, shared bool, err error) {\n\tvar flag byte\n\tif flag, err = r.ReadByte(); err != nil {\n\t\terr = fmt.Errorf(\"read leading byte: %v\", err)\n\t\treturn\n\t}\n\n\tswitch flag {\n\tcase 0x00, 0x02:\n\t\tmin, _, err = leb128.DecodeUint32(r)\n\t\tif err != nil {\n\t\t\terr = fmt.Errorf(\"read min of limit: %v\", err)\n\t\t}\n\tcase 0x01, 0x03:\n\t\tmin, _, err = leb128.DecodeUint32(r)\n\t\tif err != nil {\n\t\t\terr = fmt.Errorf(\"read min of limit: %v\", err)\n\t\t\treturn\n\t\t}\n\t\tvar m uint32\n\t\tif m, _, err = leb128.DecodeUint32(r); err != nil {\n\t\t\terr = fmt.Errorf(\"read max of limit: %v\", err)\n\t\t} else {\n\t\t\tmax = &m\n\t\t}\n\tdefault:\n\t\terr = fmt.Errorf(\"%v for limits: %#x not in (0x00, 0x01, 0x02, 0x03)\", ErrInvalidByte, flag)\n\t}\n\n\tshared = flag == 0x02 || flag == 0x03\n\n\treturn\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/wasm/binary/memory.go",
    "content": "package binary\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\n\t\"github.com/tetratelabs/wazero/api\"\n\t\"github.com/tetratelabs/wazero/experimental\"\n\t\"github.com/tetratelabs/wazero/internal/wasm\"\n)\n\n// decodeMemory returns the api.Memory decoded with the WebAssembly 1.0 (20191205) Binary Format.\n//\n// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#binary-memory\nfunc decodeMemory(\n\tr *bytes.Reader,\n\tenabledFeatures api.CoreFeatures,\n\tmemorySizer func(minPages uint32, maxPages *uint32) (min, capacity, max uint32),\n\tmemoryLimitPages uint32,\n) (*wasm.Memory, error) {\n\tmin, maxP, shared, err := decodeLimitsType(r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif shared {\n\t\tif !enabledFeatures.IsEnabled(experimental.CoreFeaturesThreads) {\n\t\t\treturn nil, fmt.Errorf(\"shared memory requested but threads feature not enabled\")\n\t\t}\n\n\t\t// This restriction may be lifted in the future.\n\t\t// https://webassembly.github.io/threads/core/binary/types.html#memory-types\n\t\tif maxP == nil {\n\t\t\treturn nil, fmt.Errorf(\"shared memory requires a maximum size to be specified\")\n\t\t}\n\t}\n\n\tmin, capacity, max := memorySizer(min, maxP)\n\tmem := &wasm.Memory{Min: min, Cap: capacity, Max: max, IsMaxEncoded: maxP != nil, IsShared: shared}\n\n\treturn mem, mem.Validate(memoryLimitPages)\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/wasm/binary/names.go",
    "content": "package binary\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\n\t\"github.com/tetratelabs/wazero/internal/leb128\"\n\t\"github.com/tetratelabs/wazero/internal/wasm\"\n)\n\nconst (\n\t// subsectionIDModuleName contains only the module name.\n\tsubsectionIDModuleName = uint8(0)\n\t// subsectionIDFunctionNames is a map of indices to function names, in ascending order by function index\n\tsubsectionIDFunctionNames = uint8(1)\n\t// subsectionIDLocalNames contain a map of function indices to a map of local indices to their names, in ascending\n\t// order by function and local index\n\tsubsectionIDLocalNames = uint8(2)\n)\n\n// decodeNameSection deserializes the data associated with the \"name\" key in SectionIDCustom according to the\n// standard:\n//\n// * ModuleName decode from subsection 0\n// * FunctionNames decode from subsection 1\n// * LocalNames decode from subsection 2\n//\n// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#binary-namesec\nfunc decodeNameSection(r *bytes.Reader, limit uint64) (result *wasm.NameSection, err error) {\n\t// TODO: add leb128 functions that work on []byte and offset. While using a reader allows us to reuse reader-based\n\t// leb128 functions, it is less efficient, causes untestable code and in some cases more complex vs plain []byte.\n\tresult = &wasm.NameSection{}\n\n\t// subsectionID is decoded if known, and skipped if not\n\tvar subsectionID uint8\n\t// subsectionSize is the length to skip when the subsectionID is unknown\n\tvar subsectionSize uint32\n\tvar bytesRead uint64\n\tfor limit > 0 {\n\t\tif subsectionID, err = r.ReadByte(); err != nil {\n\t\t\tif err == io.EOF {\n\t\t\t\treturn result, nil\n\t\t\t}\n\t\t\t// TODO: untestable as this can't fail for a reason beside EOF reading a byte from a buffer\n\t\t\treturn nil, fmt.Errorf(\"failed to read a subsection ID: %w\", err)\n\t\t}\n\t\tlimit--\n\n\t\tif subsectionSize, bytesRead, err = leb128.DecodeUint32(r); err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed to read the size of subsection[%d]: %w\", subsectionID, err)\n\t\t}\n\t\tlimit -= bytesRead\n\n\t\tswitch subsectionID {\n\t\tcase subsectionIDModuleName:\n\t\t\tif result.ModuleName, _, err = decodeUTF8(r, \"module name\"); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\tcase subsectionIDFunctionNames:\n\t\t\tif result.FunctionNames, err = decodeFunctionNames(r); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\tcase subsectionIDLocalNames:\n\t\t\tif result.LocalNames, err = decodeLocalNames(r); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\tdefault: // Skip other subsections.\n\t\t\t// Note: Not Seek because it doesn't err when given an offset past EOF. Rather, it leads to undefined state.\n\t\t\tif _, err = io.CopyN(io.Discard, r, int64(subsectionSize)); err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"failed to skip subsection[%d]: %w\", subsectionID, err)\n\t\t\t}\n\t\t}\n\t\tlimit -= uint64(subsectionSize)\n\t}\n\treturn\n}\n\nfunc decodeFunctionNames(r *bytes.Reader) (wasm.NameMap, error) {\n\tfunctionCount, err := decodeFunctionCount(r, subsectionIDFunctionNames)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tresult := make(wasm.NameMap, functionCount)\n\tfor i := uint32(0); i < functionCount; i++ {\n\t\tfunctionIndex, err := decodeFunctionIndex(r, subsectionIDFunctionNames)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tname, _, err := decodeUTF8(r, \"function[%d] name\", functionIndex)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tresult[i] = wasm.NameAssoc{Index: functionIndex, Name: name}\n\t}\n\treturn result, nil\n}\n\nfunc decodeLocalNames(r *bytes.Reader) (wasm.IndirectNameMap, error) {\n\tfunctionCount, err := decodeFunctionCount(r, subsectionIDLocalNames)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tresult := make(wasm.IndirectNameMap, functionCount)\n\tfor i := uint32(0); i < functionCount; i++ {\n\t\tfunctionIndex, err := decodeFunctionIndex(r, subsectionIDLocalNames)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tlocalCount, _, err := leb128.DecodeUint32(r)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed to read the local count for function[%d]: %w\", functionIndex, err)\n\t\t}\n\n\t\tlocals := make(wasm.NameMap, localCount)\n\t\tfor j := uint32(0); j < localCount; j++ {\n\t\t\tlocalIndex, _, err := leb128.DecodeUint32(r)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"failed to read a local index of function[%d]: %w\", functionIndex, err)\n\t\t\t}\n\n\t\t\tname, _, err := decodeUTF8(r, \"function[%d] local[%d] name\", functionIndex, localIndex)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tlocals[j] = wasm.NameAssoc{Index: localIndex, Name: name}\n\t\t}\n\t\tresult[i] = wasm.NameMapAssoc{Index: functionIndex, NameMap: locals}\n\t}\n\treturn result, nil\n}\n\nfunc decodeFunctionIndex(r *bytes.Reader, subsectionID uint8) (uint32, error) {\n\tfunctionIndex, _, err := leb128.DecodeUint32(r)\n\tif err != nil {\n\t\treturn 0, fmt.Errorf(\"failed to read a function index in subsection[%d]: %w\", subsectionID, err)\n\t}\n\treturn functionIndex, nil\n}\n\nfunc decodeFunctionCount(r *bytes.Reader, subsectionID uint8) (uint32, error) {\n\tfunctionCount, _, err := leb128.DecodeUint32(r)\n\tif err != nil {\n\t\treturn 0, fmt.Errorf(\"failed to read the function count of subsection[%d]: %w\", subsectionID, err)\n\t}\n\treturn functionCount, nil\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/wasm/binary/section.go",
    "content": "package binary\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\n\t\"github.com/tetratelabs/wazero/api\"\n\t\"github.com/tetratelabs/wazero/internal/leb128\"\n\t\"github.com/tetratelabs/wazero/internal/wasm\"\n)\n\nfunc decodeTypeSection(enabledFeatures api.CoreFeatures, r *bytes.Reader) ([]wasm.FunctionType, error) {\n\tvs, _, err := leb128.DecodeUint32(r)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"get size of vector: %w\", err)\n\t}\n\n\tresult := make([]wasm.FunctionType, vs)\n\tfor i := uint32(0); i < vs; i++ {\n\t\tif err = decodeFunctionType(enabledFeatures, r, &result[i]); err != nil {\n\t\t\treturn nil, fmt.Errorf(\"read %d-th type: %v\", i, err)\n\t\t}\n\t}\n\treturn result, nil\n}\n\n// decodeImportSection decodes the decoded import segments plus the count per wasm.ExternType.\nfunc decodeImportSection(\n\tr *bytes.Reader,\n\tmemorySizer memorySizer,\n\tmemoryLimitPages uint32,\n\tenabledFeatures api.CoreFeatures,\n) (result []wasm.Import,\n\tperModule map[string][]*wasm.Import,\n\tfuncCount, globalCount, memoryCount, tableCount wasm.Index, err error,\n) {\n\tvs, _, err := leb128.DecodeUint32(r)\n\tif err != nil {\n\t\terr = fmt.Errorf(\"get size of vector: %w\", err)\n\t\treturn\n\t}\n\n\tperModule = make(map[string][]*wasm.Import)\n\tresult = make([]wasm.Import, vs)\n\tfor i := uint32(0); i < vs; i++ {\n\t\timp := &result[i]\n\t\tif err = decodeImport(r, i, memorySizer, memoryLimitPages, enabledFeatures, imp); err != nil {\n\t\t\treturn\n\t\t}\n\t\tswitch imp.Type {\n\t\tcase wasm.ExternTypeFunc:\n\t\t\timp.IndexPerType = funcCount\n\t\t\tfuncCount++\n\t\tcase wasm.ExternTypeGlobal:\n\t\t\timp.IndexPerType = globalCount\n\t\t\tglobalCount++\n\t\tcase wasm.ExternTypeMemory:\n\t\t\timp.IndexPerType = memoryCount\n\t\t\tmemoryCount++\n\t\tcase wasm.ExternTypeTable:\n\t\t\timp.IndexPerType = tableCount\n\t\t\ttableCount++\n\t\t}\n\t\tperModule[imp.Module] = append(perModule[imp.Module], imp)\n\t}\n\treturn\n}\n\nfunc decodeFunctionSection(r *bytes.Reader) ([]uint32, error) {\n\tvs, _, err := leb128.DecodeUint32(r)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"get size of vector: %w\", err)\n\t}\n\n\tresult := make([]uint32, vs)\n\tfor i := uint32(0); i < vs; i++ {\n\t\tif result[i], _, err = leb128.DecodeUint32(r); err != nil {\n\t\t\treturn nil, fmt.Errorf(\"get type index: %w\", err)\n\t\t}\n\t}\n\treturn result, err\n}\n\nfunc decodeTableSection(r *bytes.Reader, enabledFeatures api.CoreFeatures) ([]wasm.Table, error) {\n\tvs, _, err := leb128.DecodeUint32(r)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error reading size\")\n\t}\n\tif vs > 1 {\n\t\tif err := enabledFeatures.RequireEnabled(api.CoreFeatureReferenceTypes); err != nil {\n\t\t\treturn nil, fmt.Errorf(\"at most one table allowed in module as %w\", err)\n\t\t}\n\t}\n\n\tret := make([]wasm.Table, vs)\n\tfor i := range ret {\n\t\terr = decodeTable(r, enabledFeatures, &ret[i])\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\treturn ret, nil\n}\n\nfunc decodeMemorySection(\n\tr *bytes.Reader,\n\tenabledFeatures api.CoreFeatures,\n\tmemorySizer memorySizer,\n\tmemoryLimitPages uint32,\n) (*wasm.Memory, error) {\n\tvs, _, err := leb128.DecodeUint32(r)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error reading size\")\n\t}\n\tif vs > 1 {\n\t\treturn nil, fmt.Errorf(\"at most one memory allowed in module, but read %d\", vs)\n\t} else if vs == 0 {\n\t\t// memory count can be zero.\n\t\treturn nil, nil\n\t}\n\n\treturn decodeMemory(r, enabledFeatures, memorySizer, memoryLimitPages)\n}\n\nfunc decodeGlobalSection(r *bytes.Reader, enabledFeatures api.CoreFeatures) ([]wasm.Global, error) {\n\tvs, _, err := leb128.DecodeUint32(r)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"get size of vector: %w\", err)\n\t}\n\n\tresult := make([]wasm.Global, vs)\n\tfor i := uint32(0); i < vs; i++ {\n\t\tif err = decodeGlobal(r, enabledFeatures, &result[i]); err != nil {\n\t\t\treturn nil, fmt.Errorf(\"global[%d]: %w\", i, err)\n\t\t}\n\t}\n\treturn result, nil\n}\n\nfunc decodeExportSection(r *bytes.Reader) ([]wasm.Export, map[string]*wasm.Export, error) {\n\tvs, _, sizeErr := leb128.DecodeUint32(r)\n\tif sizeErr != nil {\n\t\treturn nil, nil, fmt.Errorf(\"get size of vector: %v\", sizeErr)\n\t}\n\n\texportMap := make(map[string]*wasm.Export, vs)\n\texportSection := make([]wasm.Export, vs)\n\tfor i := wasm.Index(0); i < vs; i++ {\n\t\texport := &exportSection[i]\n\t\terr := decodeExport(r, export)\n\t\tif err != nil {\n\t\t\treturn nil, nil, fmt.Errorf(\"read export: %w\", err)\n\t\t}\n\t\tif _, ok := exportMap[export.Name]; ok {\n\t\t\treturn nil, nil, fmt.Errorf(\"export[%d] duplicates name %q\", i, export.Name)\n\t\t} else {\n\t\t\texportMap[export.Name] = export\n\t\t}\n\t}\n\treturn exportSection, exportMap, nil\n}\n\nfunc decodeStartSection(r *bytes.Reader) (*wasm.Index, error) {\n\tvs, _, err := leb128.DecodeUint32(r)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"get function index: %w\", err)\n\t}\n\treturn &vs, nil\n}\n\nfunc decodeElementSection(r *bytes.Reader, enabledFeatures api.CoreFeatures) ([]wasm.ElementSegment, error) {\n\tvs, _, err := leb128.DecodeUint32(r)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"get size of vector: %w\", err)\n\t}\n\n\tresult := make([]wasm.ElementSegment, vs)\n\tfor i := uint32(0); i < vs; i++ {\n\t\tif err = decodeElementSegment(r, enabledFeatures, &result[i]); err != nil {\n\t\t\treturn nil, fmt.Errorf(\"read element: %w\", err)\n\t\t}\n\t}\n\treturn result, nil\n}\n\nfunc decodeCodeSection(r *bytes.Reader) ([]wasm.Code, error) {\n\tcodeSectionStart := uint64(r.Len())\n\tvs, _, err := leb128.DecodeUint32(r)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"get size of vector: %w\", err)\n\t}\n\n\tresult := make([]wasm.Code, vs)\n\tfor i := uint32(0); i < vs; i++ {\n\t\terr = decodeCode(r, codeSectionStart, &result[i])\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"read %d-th code segment: %v\", i, err)\n\t\t}\n\t}\n\treturn result, nil\n}\n\nfunc decodeDataSection(r *bytes.Reader, enabledFeatures api.CoreFeatures) ([]wasm.DataSegment, error) {\n\tvs, _, err := leb128.DecodeUint32(r)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"get size of vector: %w\", err)\n\t}\n\n\tresult := make([]wasm.DataSegment, vs)\n\tfor i := uint32(0); i < vs; i++ {\n\t\tif err = decodeDataSegment(r, enabledFeatures, &result[i]); err != nil {\n\t\t\treturn nil, fmt.Errorf(\"read data segment: %w\", err)\n\t\t}\n\t}\n\treturn result, nil\n}\n\nfunc decodeDataCountSection(r *bytes.Reader) (count *uint32, err error) {\n\tv, _, err := leb128.DecodeUint32(r)\n\tif err != nil && err != io.EOF {\n\t\t// data count is optional, so EOF is fine.\n\t\treturn nil, err\n\t}\n\treturn &v, nil\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/wasm/binary/table.go",
    "content": "package binary\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\n\t\"github.com/tetratelabs/wazero/api\"\n\t\"github.com/tetratelabs/wazero/internal/wasm\"\n)\n\n// decodeTable returns the wasm.Table decoded with the WebAssembly 1.0 (20191205) Binary Format.\n//\n// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#binary-table\nfunc decodeTable(r *bytes.Reader, enabledFeatures api.CoreFeatures, ret *wasm.Table) (err error) {\n\tret.Type, err = r.ReadByte()\n\tif err != nil {\n\t\treturn fmt.Errorf(\"read leading byte: %v\", err)\n\t}\n\n\tif ret.Type != wasm.RefTypeFuncref {\n\t\tif err = enabledFeatures.RequireEnabled(api.CoreFeatureReferenceTypes); err != nil {\n\t\t\treturn fmt.Errorf(\"table type funcref is invalid: %w\", err)\n\t\t}\n\t}\n\n\tvar shared bool\n\tret.Min, ret.Max, shared, err = decodeLimitsType(r)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"read limits: %v\", err)\n\t}\n\tif ret.Min > wasm.MaximumFunctionIndex {\n\t\treturn fmt.Errorf(\"table min must be at most %d\", wasm.MaximumFunctionIndex)\n\t}\n\tif ret.Max != nil {\n\t\tif *ret.Max < ret.Min {\n\t\t\treturn fmt.Errorf(\"table size minimum must not be greater than maximum\")\n\t\t}\n\t}\n\tif shared {\n\t\treturn fmt.Errorf(\"tables cannot be marked as shared\")\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/wasm/binary/value.go",
    "content": "package binary\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"unicode/utf8\"\n\t\"unsafe\"\n\n\t\"github.com/tetratelabs/wazero/internal/leb128\"\n\t\"github.com/tetratelabs/wazero/internal/wasm\"\n)\n\nfunc decodeValueTypes(r *bytes.Reader, num uint32) ([]wasm.ValueType, error) {\n\tif num == 0 {\n\t\treturn nil, nil\n\t}\n\n\tret := make([]wasm.ValueType, num)\n\t_, err := io.ReadFull(r, ret)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tfor _, v := range ret {\n\t\tswitch v {\n\t\tcase wasm.ValueTypeI32, wasm.ValueTypeF32, wasm.ValueTypeI64, wasm.ValueTypeF64,\n\t\t\twasm.ValueTypeExternref, wasm.ValueTypeFuncref, wasm.ValueTypeV128:\n\t\tdefault:\n\t\t\treturn nil, fmt.Errorf(\"invalid value type: %d\", v)\n\t\t}\n\t}\n\treturn ret, nil\n}\n\n// decodeUTF8 decodes a size prefixed string from the reader, returning it and the count of bytes read.\n// contextFormat and contextArgs apply an error format when present\nfunc decodeUTF8(r *bytes.Reader, contextFormat string, contextArgs ...interface{}) (string, uint32, error) {\n\tsize, sizeOfSize, err := leb128.DecodeUint32(r)\n\tif err != nil {\n\t\treturn \"\", 0, fmt.Errorf(\"failed to read %s size: %w\", fmt.Sprintf(contextFormat, contextArgs...), err)\n\t}\n\n\tif size == 0 {\n\t\treturn \"\", uint32(sizeOfSize), nil\n\t}\n\n\tbuf := make([]byte, size)\n\tif _, err = io.ReadFull(r, buf); err != nil {\n\t\treturn \"\", 0, fmt.Errorf(\"failed to read %s: %w\", fmt.Sprintf(contextFormat, contextArgs...), err)\n\t}\n\n\tif !utf8.Valid(buf) {\n\t\treturn \"\", 0, fmt.Errorf(\"%s is not valid UTF-8\", fmt.Sprintf(contextFormat, contextArgs...))\n\t}\n\n\tret := unsafe.String(&buf[0], int(size))\n\treturn ret, size + uint32(sizeOfSize), nil\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/wasm/counts.go",
    "content": "package wasm\n\nimport \"fmt\"\n\n// SectionElementCount returns the count of elements in a given section ID\n//\n// For example...\n// * SectionIDType returns the count of FunctionType\n// * SectionIDCustom returns the count of CustomSections plus one if NameSection is present\n// * SectionIDHostFunction returns the count of HostFunctionSection\n// * SectionIDExport returns the count of unique export names\nfunc (m *Module) SectionElementCount(sectionID SectionID) uint32 { // element as in vector elements!\n\tswitch sectionID {\n\tcase SectionIDCustom:\n\t\tnumCustomSections := uint32(len(m.CustomSections))\n\t\tif m.NameSection != nil {\n\t\t\tnumCustomSections++\n\t\t}\n\t\treturn numCustomSections\n\tcase SectionIDType:\n\t\treturn uint32(len(m.TypeSection))\n\tcase SectionIDImport:\n\t\treturn uint32(len(m.ImportSection))\n\tcase SectionIDFunction:\n\t\treturn uint32(len(m.FunctionSection))\n\tcase SectionIDTable:\n\t\treturn uint32(len(m.TableSection))\n\tcase SectionIDMemory:\n\t\tif m.MemorySection != nil {\n\t\t\treturn 1\n\t\t}\n\t\treturn 0\n\tcase SectionIDGlobal:\n\t\treturn uint32(len(m.GlobalSection))\n\tcase SectionIDExport:\n\t\treturn uint32(len(m.ExportSection))\n\tcase SectionIDStart:\n\t\tif m.StartSection != nil {\n\t\t\treturn 1\n\t\t}\n\t\treturn 0\n\tcase SectionIDElement:\n\t\treturn uint32(len(m.ElementSection))\n\tcase SectionIDCode:\n\t\treturn uint32(len(m.CodeSection))\n\tcase SectionIDData:\n\t\treturn uint32(len(m.DataSection))\n\tdefault:\n\t\tpanic(fmt.Errorf(\"BUG: unknown section: %d\", sectionID))\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/wasm/engine.go",
    "content": "package wasm\n\nimport (\n\t\"context\"\n\n\t\"github.com/tetratelabs/wazero/api\"\n\t\"github.com/tetratelabs/wazero/experimental\"\n)\n\n// Engine is a Store-scoped mechanism to compile functions declared or imported by a module.\n// This is a top-level type implemented by an interpreter or compiler.\ntype Engine interface {\n\t// Close closes this engine, and releases all the compiled cache.\n\tClose() (err error)\n\n\t// CompileModule implements the same method as documented on wasm.Engine.\n\tCompileModule(ctx context.Context, module *Module, listeners []experimental.FunctionListener, ensureTermination bool) error\n\n\t// CompiledModuleCount is exported for testing, to track the size of the compilation cache.\n\tCompiledModuleCount() uint32\n\n\t// DeleteCompiledModule releases compilation caches for the given module (source).\n\t// Note: it is safe to call this function for a module from which module instances are instantiated even when these\n\t// module instances have outstanding calls.\n\tDeleteCompiledModule(module *Module)\n\n\t// NewModuleEngine compiles down the function instances in a module, and returns ModuleEngine for the module.\n\t//\n\t// * module is the source module from which moduleFunctions are instantiated. This is used for caching.\n\t// * instance is the *ModuleInstance which is created from `module`.\n\t//\n\t// Note: Input parameters must be pre-validated with wasm.Module Validate, to ensure no fields are invalid\n\t// due to reasons such as out-of-bounds.\n\tNewModuleEngine(module *Module, instance *ModuleInstance) (ModuleEngine, error)\n}\n\n// ModuleEngine implements function calls for a given module.\ntype ModuleEngine interface {\n\t// DoneInstantiation is called at the end of the instantiation of the module.\n\tDoneInstantiation()\n\n\t// NewFunction returns an api.Function for the given function pointed by the given Index.\n\tNewFunction(index Index) api.Function\n\n\t// ResolveImportedFunction is used to add imported functions needed to make this ModuleEngine fully functional.\n\t// \t- `index` is the function Index of this imported function.\n\t// \t- `descFunc` is the type Index in Module.TypeSection of this imported function. It corresponds to Import.DescFunc.\n\t// \t- `indexInImportedModule` is the function Index of the imported function in the imported module.\n\t//\t- `importedModuleEngine` is the ModuleEngine for the imported ModuleInstance.\n\tResolveImportedFunction(index, descFunc, indexInImportedModule Index, importedModuleEngine ModuleEngine)\n\n\t// ResolveImportedMemory is called when this module imports a memory from another module.\n\tResolveImportedMemory(importedModuleEngine ModuleEngine)\n\n\t// LookupFunction returns the FunctionModule and the Index of the function in the returned ModuleInstance at the given offset in the table.\n\tLookupFunction(t *TableInstance, typeId FunctionTypeID, tableOffset Index) (*ModuleInstance, Index)\n\n\t// GetGlobalValue returns the value of the global variable at the given Index.\n\t// Only called when OwnsGlobals() returns true, and must not be called for imported globals\n\tGetGlobalValue(idx Index) (lo, hi uint64)\n\n\t// SetGlobalValue sets the value of the global variable at the given Index.\n\t// Only called when OwnsGlobals() returns true, and must not be called for imported globals\n\tSetGlobalValue(idx Index, lo, hi uint64)\n\n\t// OwnsGlobals returns true if this ModuleEngine owns the global variables. If true, wasm.GlobalInstance's Val,ValHi should\n\t// not be accessed directly.\n\tOwnsGlobals() bool\n\n\t// FunctionInstanceReference returns Reference for the given Index for a FunctionInstance. The returned values are used by\n\t// the initialization via ElementSegment.\n\tFunctionInstanceReference(funcIndex Index) Reference\n\n\t// MemoryGrown notifies the engine that the memory has grown.\n\tMemoryGrown()\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/wasm/func_validation.go",
    "content": "package wasm\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"slices\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/tetratelabs/wazero/api\"\n\t\"github.com/tetratelabs/wazero/experimental\"\n\t\"github.com/tetratelabs/wazero/internal/leb128\"\n)\n\n// The wazero specific limitation described at RATIONALE.md.\nconst maximumValuesOnStack = 1 << 27\n\n// validateFunction validates the instruction sequence of a function.\n// following the specification https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#instructions%E2%91%A2.\n//\n// * idx is the index in the FunctionSection\n// * functions are the function index, which is prefixed by imports. The value is the TypeSection index.\n// * globals are the global index, which is prefixed by imports.\n// * memory is the potentially imported memory and can be nil.\n// * table is the potentially imported table and can be nil.\n// * declaredFunctionIndexes is the set of function indexes declared by declarative element segments which can be acceed by OpcodeRefFunc instruction.\n//\n// Returns an error if the instruction sequence is not valid,\n// or potentially it can exceed the maximum number of values on the stack.\nfunc (m *Module) validateFunction(sts *stacks, enabledFeatures api.CoreFeatures, idx Index, functions []Index,\n\tglobals []GlobalType, memory *Memory, tables []Table, declaredFunctionIndexes map[Index]struct{}, br *bytes.Reader,\n) error {\n\treturn m.validateFunctionWithMaxStackValues(sts, enabledFeatures, idx, functions, globals, memory, tables, maximumValuesOnStack, declaredFunctionIndexes, br)\n}\n\nfunc readMemArg(pc uint64, body []byte) (align, offset uint32, read uint64, err error) {\n\talign, num, err := leb128.LoadUint32(body[pc:])\n\tif err != nil {\n\t\terr = fmt.Errorf(\"read memory align: %v\", err)\n\t\treturn\n\t}\n\tread += num\n\n\toffset, num, err = leb128.LoadUint32(body[pc+num:])\n\tif err != nil {\n\t\terr = fmt.Errorf(\"read memory offset: %v\", err)\n\t\treturn\n\t}\n\n\tread += num\n\treturn align, offset, read, nil\n}\n\n// validateFunctionWithMaxStackValues is like validateFunction, but allows overriding maxStackValues for testing.\n//\n// * stacks is to track the state of Wasm value and control frame stacks at anypoint of execution, and reused to reduce allocation.\n// * maxStackValues is the maximum height of values stack which the target is allowed to reach.\nfunc (m *Module) validateFunctionWithMaxStackValues(\n\tsts *stacks,\n\tenabledFeatures api.CoreFeatures,\n\tidx Index,\n\tfunctions []Index,\n\tglobals []GlobalType,\n\tmemory *Memory,\n\ttables []Table,\n\tmaxStackValues int,\n\tdeclaredFunctionIndexes map[Index]struct{},\n\tbr *bytes.Reader,\n) error {\n\tfunctionType := &m.TypeSection[m.FunctionSection[idx]]\n\tcode := &m.CodeSection[idx]\n\tbody := code.Body\n\tlocalTypes := code.LocalTypes\n\n\tsts.reset(functionType)\n\tvalueTypeStack := &sts.vs\n\t// We start with the outermost control block which is for function return if the code branches into it.\n\tcontrolBlockStack := &sts.cs\n\n\t// Now start walking through all the instructions in the body while tracking\n\t// control blocks and value types to check the validity of all instructions.\n\tfor pc := uint64(0); pc < uint64(len(body)); pc++ {\n\t\top := body[pc]\n\t\tif false {\n\t\t\tvar instName string\n\t\t\tif op == OpcodeMiscPrefix {\n\t\t\t\tinstName = MiscInstructionName(body[pc+1])\n\t\t\t} else if op == OpcodeVecPrefix {\n\t\t\t\tinstName = VectorInstructionName(body[pc+1])\n\t\t\t} else if op == OpcodeAtomicPrefix {\n\t\t\t\tinstName = AtomicInstructionName(body[pc+1])\n\t\t\t} else {\n\t\t\t\tinstName = InstructionName(op)\n\t\t\t}\n\t\t\tfmt.Printf(\"handling %s, stack=%s, blocks: %v\\n\", instName, valueTypeStack.stack, controlBlockStack)\n\t\t}\n\n\t\tif len(controlBlockStack.stack) == 0 {\n\t\t\treturn fmt.Errorf(\"unexpected end of function at pc=%#x\", pc)\n\t\t}\n\n\t\tif OpcodeI32Load <= op && op <= OpcodeI64Store32 {\n\t\t\tif memory == nil {\n\t\t\t\treturn fmt.Errorf(\"memory must exist for %s\", InstructionName(op))\n\t\t\t}\n\t\t\tpc++\n\t\t\talign, _, read, err := readMemArg(pc, body)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tpc += read - 1\n\t\t\tswitch op {\n\t\t\tcase OpcodeI32Load:\n\t\t\t\tif 1<<align > 32/8 {\n\t\t\t\t\treturn fmt.Errorf(\"invalid memory alignment\")\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeI32)\n\t\t\tcase OpcodeF32Load:\n\t\t\t\tif 1<<align > 32/8 {\n\t\t\t\t\treturn fmt.Errorf(\"invalid memory alignment\")\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeF32)\n\t\t\tcase OpcodeI32Store:\n\t\t\t\tif 1<<align > 32/8 {\n\t\t\t\t\treturn fmt.Errorf(\"invalid memory alignment\")\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\tcase OpcodeF32Store:\n\t\t\t\tif 1<<align > 32/8 {\n\t\t\t\t\treturn fmt.Errorf(\"invalid memory alignment\")\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeF32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\tcase OpcodeI64Load:\n\t\t\t\tif 1<<align > 64/8 {\n\t\t\t\t\treturn fmt.Errorf(\"invalid memory alignment\")\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeI64)\n\t\t\tcase OpcodeF64Load:\n\t\t\t\tif 1<<align > 64/8 {\n\t\t\t\t\treturn fmt.Errorf(\"invalid memory alignment\")\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeF64)\n\t\t\tcase OpcodeI64Store:\n\t\t\t\tif 1<<align > 64/8 {\n\t\t\t\t\treturn fmt.Errorf(\"invalid memory alignment\")\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI64); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\tcase OpcodeF64Store:\n\t\t\t\tif 1<<align > 64/8 {\n\t\t\t\t\treturn fmt.Errorf(\"invalid memory alignment\")\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeF64); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\tcase OpcodeI32Load8S:\n\t\t\t\tif 1<<align > 1 {\n\t\t\t\t\treturn fmt.Errorf(\"invalid memory alignment\")\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeI32)\n\t\t\tcase OpcodeI32Load8U:\n\t\t\t\tif 1<<align > 1 {\n\t\t\t\t\treturn fmt.Errorf(\"invalid memory alignment\")\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeI32)\n\t\t\tcase OpcodeI64Load8S, OpcodeI64Load8U:\n\t\t\t\tif 1<<align > 1 {\n\t\t\t\t\treturn fmt.Errorf(\"invalid memory alignment\")\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeI64)\n\t\t\tcase OpcodeI32Store8:\n\t\t\t\tif 1<<align > 1 {\n\t\t\t\t\treturn fmt.Errorf(\"invalid memory alignment\")\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\tcase OpcodeI64Store8:\n\t\t\t\tif 1<<align > 1 {\n\t\t\t\t\treturn fmt.Errorf(\"invalid memory alignment\")\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI64); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\tcase OpcodeI32Load16S, OpcodeI32Load16U:\n\t\t\t\tif 1<<align > 16/8 {\n\t\t\t\t\treturn fmt.Errorf(\"invalid memory alignment\")\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeI32)\n\t\t\tcase OpcodeI64Load16S, OpcodeI64Load16U:\n\t\t\t\tif 1<<align > 16/8 {\n\t\t\t\t\treturn fmt.Errorf(\"invalid memory alignment\")\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeI64)\n\t\t\tcase OpcodeI32Store16:\n\t\t\t\tif 1<<align > 16/8 {\n\t\t\t\t\treturn fmt.Errorf(\"invalid memory alignment\")\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\tcase OpcodeI64Store16:\n\t\t\t\tif 1<<align > 16/8 {\n\t\t\t\t\treturn fmt.Errorf(\"invalid memory alignment\")\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI64); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\tcase OpcodeI64Load32S, OpcodeI64Load32U:\n\t\t\t\tif 1<<align > 32/8 {\n\t\t\t\t\treturn fmt.Errorf(\"invalid memory alignment\")\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeI64)\n\t\t\tcase OpcodeI64Store32:\n\t\t\t\tif 1<<align > 32/8 {\n\t\t\t\t\treturn fmt.Errorf(\"invalid memory alignment\")\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI64); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t}\n\t\t} else if OpcodeMemorySize <= op && op <= OpcodeMemoryGrow {\n\t\t\tif memory == nil {\n\t\t\t\treturn fmt.Errorf(\"memory must exist for %s\", InstructionName(op))\n\t\t\t}\n\t\t\tpc++\n\t\t\tval, num, err := leb128.LoadUint32(body[pc:])\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"read immediate: %v\", err)\n\t\t\t}\n\t\t\tif val != 0 || num != 1 {\n\t\t\t\treturn fmt.Errorf(\"memory instruction reserved bytes not zero with 1 byte\")\n\t\t\t}\n\t\t\tswitch Opcode(op) {\n\t\t\tcase OpcodeMemoryGrow:\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeI32)\n\t\t\tcase OpcodeMemorySize:\n\t\t\t\tvalueTypeStack.push(ValueTypeI32)\n\t\t\t}\n\t\t\tpc += num - 1\n\t\t} else if OpcodeI32Const <= op && op <= OpcodeF64Const {\n\t\t\tpc++\n\t\t\tswitch Opcode(op) {\n\t\t\tcase OpcodeI32Const:\n\t\t\t\t_, num, err := leb128.LoadInt32(body[pc:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"read i32 immediate: %s\", err)\n\t\t\t\t}\n\t\t\t\tpc += num - 1\n\t\t\t\tvalueTypeStack.push(ValueTypeI32)\n\t\t\tcase OpcodeI64Const:\n\t\t\t\t_, num, err := leb128.LoadInt64(body[pc:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"read i64 immediate: %v\", err)\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeI64)\n\t\t\t\tpc += num - 1\n\t\t\tcase OpcodeF32Const:\n\t\t\t\tvalueTypeStack.push(ValueTypeF32)\n\t\t\t\tpc += 3\n\t\t\tcase OpcodeF64Const:\n\t\t\t\tvalueTypeStack.push(ValueTypeF64)\n\t\t\t\tpc += 7\n\t\t\t}\n\t\t} else if OpcodeLocalGet <= op && op <= OpcodeGlobalSet {\n\t\t\tpc++\n\t\t\tindex, num, err := leb128.LoadUint32(body[pc:])\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"read immediate: %v\", err)\n\t\t\t}\n\t\t\tpc += num - 1\n\t\t\tswitch op {\n\t\t\tcase OpcodeLocalGet:\n\t\t\t\tinputLen := uint32(len(functionType.Params))\n\t\t\t\tif l := uint32(len(localTypes)) + inputLen; index >= l {\n\t\t\t\t\treturn fmt.Errorf(\"invalid local index for %s %d >= %d(=len(locals)+len(parameters))\",\n\t\t\t\t\t\tOpcodeLocalGetName, index, l)\n\t\t\t\t}\n\t\t\t\tif index < inputLen {\n\t\t\t\t\tvalueTypeStack.push(functionType.Params[index])\n\t\t\t\t} else {\n\t\t\t\t\tvalueTypeStack.push(localTypes[index-inputLen])\n\t\t\t\t}\n\t\t\tcase OpcodeLocalSet:\n\t\t\t\tinputLen := uint32(len(functionType.Params))\n\t\t\t\tif l := uint32(len(localTypes)) + inputLen; index >= l {\n\t\t\t\t\treturn fmt.Errorf(\"invalid local index for %s %d >= %d(=len(locals)+len(parameters))\",\n\t\t\t\t\t\tOpcodeLocalSetName, index, l)\n\t\t\t\t}\n\t\t\t\tvar expType ValueType\n\t\t\t\tif index < inputLen {\n\t\t\t\t\texpType = functionType.Params[index]\n\t\t\t\t} else {\n\t\t\t\t\texpType = localTypes[index-inputLen]\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(expType); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\tcase OpcodeLocalTee:\n\t\t\t\tinputLen := uint32(len(functionType.Params))\n\t\t\t\tif l := uint32(len(localTypes)) + inputLen; index >= l {\n\t\t\t\t\treturn fmt.Errorf(\"invalid local index for %s %d >= %d(=len(locals)+len(parameters))\",\n\t\t\t\t\t\tOpcodeLocalTeeName, index, l)\n\t\t\t\t}\n\t\t\t\tvar expType ValueType\n\t\t\t\tif index < inputLen {\n\t\t\t\t\texpType = functionType.Params[index]\n\t\t\t\t} else {\n\t\t\t\t\texpType = localTypes[index-inputLen]\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(expType); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(expType)\n\t\t\tcase OpcodeGlobalGet:\n\t\t\t\tif index >= uint32(len(globals)) {\n\t\t\t\t\treturn fmt.Errorf(\"invalid index for %s\", OpcodeGlobalGetName)\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(globals[index].ValType)\n\t\t\tcase OpcodeGlobalSet:\n\t\t\t\tif index >= uint32(len(globals)) {\n\t\t\t\t\treturn fmt.Errorf(\"invalid global index\")\n\t\t\t\t} else if !globals[index].Mutable {\n\t\t\t\t\treturn fmt.Errorf(\"%s when not mutable\", OpcodeGlobalSetName)\n\t\t\t\t} else if err := valueTypeStack.popAndVerifyType(\n\t\t\t\t\tglobals[index].ValType); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t}\n\t\t} else if op == OpcodeBr {\n\t\t\tpc++\n\t\t\tindex, num, err := leb128.LoadUint32(body[pc:])\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"read immediate: %v\", err)\n\t\t\t} else if int(index) >= len(controlBlockStack.stack) {\n\t\t\t\treturn fmt.Errorf(\"invalid %s operation: index out of range\", OpcodeBrName)\n\t\t\t}\n\t\t\tpc += num - 1\n\t\t\t// Check type soundness.\n\t\t\ttarget := &controlBlockStack.stack[len(controlBlockStack.stack)-int(index)-1]\n\t\t\tvar targetResultType []ValueType\n\t\t\tif target.op == OpcodeLoop {\n\t\t\t\ttargetResultType = target.blockType.Params\n\t\t\t} else {\n\t\t\t\ttargetResultType = target.blockType.Results\n\t\t\t}\n\t\t\tif err = valueTypeStack.popResults(op, targetResultType, false); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\t// br instruction is stack-polymorphic.\n\t\t\tvalueTypeStack.unreachable()\n\t\t} else if op == OpcodeBrIf {\n\t\t\tpc++\n\t\t\tindex, num, err := leb128.LoadUint32(body[pc:])\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"read immediate: %v\", err)\n\t\t\t} else if int(index) >= len(controlBlockStack.stack) {\n\t\t\t\treturn fmt.Errorf(\n\t\t\t\t\t\"invalid ln param given for %s: index=%d with %d for the current label stack length\",\n\t\t\t\t\tOpcodeBrIfName, index, len(controlBlockStack.stack))\n\t\t\t}\n\t\t\tpc += num - 1\n\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\treturn fmt.Errorf(\"cannot pop the required operand for %s\", OpcodeBrIfName)\n\t\t\t}\n\t\t\t// Check type soundness.\n\t\t\ttarget := &controlBlockStack.stack[len(controlBlockStack.stack)-int(index)-1]\n\t\t\tvar targetResultType []ValueType\n\t\t\tif target.op == OpcodeLoop {\n\t\t\t\ttargetResultType = target.blockType.Params\n\t\t\t} else {\n\t\t\t\ttargetResultType = target.blockType.Results\n\t\t\t}\n\t\t\tif err := valueTypeStack.popResults(op, targetResultType, false); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\t// Push back the result\n\t\t\tfor _, t := range targetResultType {\n\t\t\t\tvalueTypeStack.push(t)\n\t\t\t}\n\t\t} else if op == OpcodeBrTable {\n\t\t\tpc++\n\t\t\tbr.Reset(body[pc:])\n\t\t\tnl, num, err := leb128.DecodeUint32(br)\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"read immediate: %w\", err)\n\t\t\t}\n\n\t\t\tsts.ls = sts.ls[:0]\n\t\t\tfor i := uint32(0); i < nl; i++ {\n\t\t\t\tl, n, err := leb128.DecodeUint32(br)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"read immediate: %w\", err)\n\t\t\t\t}\n\t\t\t\tnum += n\n\t\t\t\tsts.ls = append(sts.ls, l)\n\t\t\t}\n\t\t\tln, n, err := leb128.DecodeUint32(br)\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"read immediate: %w\", err)\n\t\t\t} else if int(ln) >= len(controlBlockStack.stack) {\n\t\t\t\treturn fmt.Errorf(\n\t\t\t\t\t\"invalid ln param given for %s: ln=%d with %d for the current label stack length\",\n\t\t\t\t\tOpcodeBrTableName, ln, len(controlBlockStack.stack))\n\t\t\t}\n\t\t\tpc += n + num - 1\n\t\t\t// Check type soundness.\n\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\treturn fmt.Errorf(\"cannot pop the required operand for %s\", OpcodeBrTableName)\n\t\t\t}\n\t\t\tlnLabel := &controlBlockStack.stack[len(controlBlockStack.stack)-1-int(ln)]\n\t\t\tvar defaultLabelType []ValueType\n\t\t\t// Below, we might modify the slice in case of unreachable. Therefore,\n\t\t\t// we have to copy the content of block result types, otherwise the original\n\t\t\t// function type might result in invalid value types if the block is the outermost label\n\t\t\t// which equals the function's type.\n\t\t\tif lnLabel.op != OpcodeLoop { // Loop operation doesn't require results since the continuation is the beginning of the loop.\n\t\t\t\tdefaultLabelType = slices.Clone(lnLabel.blockType.Results)\n\t\t\t} else {\n\t\t\t\tdefaultLabelType = slices.Clone(lnLabel.blockType.Params)\n\t\t\t}\n\n\t\t\tif enabledFeatures.IsEnabled(api.CoreFeatureReferenceTypes) {\n\t\t\t\t// As of reference-types proposal, br_table on unreachable state\n\t\t\t\t// can choose unknown types for expected parameter types for each label.\n\t\t\t\t// https://github.com/WebAssembly/reference-types/pull/116\n\t\t\t\tfor i := range defaultLabelType {\n\t\t\t\t\tindex := len(defaultLabelType) - 1 - i\n\t\t\t\t\texp := defaultLabelType[index]\n\t\t\t\t\tactual, err := valueTypeStack.pop()\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t\tif actual == valueTypeUnknown {\n\t\t\t\t\t\t// Re-assign the expected type to unknown.\n\t\t\t\t\t\tdefaultLabelType[index] = valueTypeUnknown\n\t\t\t\t\t} else if actual != exp {\n\t\t\t\t\t\treturn typeMismatchError(true, OpcodeBrTableName, actual, exp, i)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif err = valueTypeStack.popResults(op, defaultLabelType, false); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor _, l := range sts.ls {\n\t\t\t\tif int(l) >= len(controlBlockStack.stack) {\n\t\t\t\t\treturn fmt.Errorf(\"invalid l param given for %s\", OpcodeBrTableName)\n\t\t\t\t}\n\t\t\t\tlabel := &controlBlockStack.stack[len(controlBlockStack.stack)-1-int(l)]\n\t\t\t\tvar tableLabelType []ValueType\n\t\t\t\tif label.op != OpcodeLoop {\n\t\t\t\t\ttableLabelType = label.blockType.Results\n\t\t\t\t} else {\n\t\t\t\t\ttableLabelType = label.blockType.Params\n\t\t\t\t}\n\t\t\t\tif len(defaultLabelType) != len(tableLabelType) {\n\t\t\t\t\treturn fmt.Errorf(\"inconsistent block type length for %s at %d; %v (ln=%d) != %v (l=%d)\", OpcodeBrTableName, l, defaultLabelType, ln, tableLabelType, l)\n\t\t\t\t}\n\t\t\t\tfor i := range defaultLabelType {\n\t\t\t\t\tif defaultLabelType[i] != valueTypeUnknown && defaultLabelType[i] != tableLabelType[i] {\n\t\t\t\t\t\treturn fmt.Errorf(\"incosistent block type for %s at %d\", OpcodeBrTableName, l)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// br_table instruction is stack-polymorphic.\n\t\t\tvalueTypeStack.unreachable()\n\t\t} else if op == OpcodeCall || op == OpcodeTailCallReturnCall {\n\t\t\tpc++\n\t\t\tindex, num, err := leb128.LoadUint32(body[pc:])\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"read immediate: %v\", err)\n\t\t\t}\n\t\t\tpc += num - 1\n\t\t\tif int(index) >= len(functions) {\n\t\t\t\treturn fmt.Errorf(\"invalid function index\")\n\t\t\t}\n\n\t\t\tvar opcodeName string\n\t\t\tif op == OpcodeCall {\n\t\t\t\topcodeName = OpcodeCallName\n\t\t\t} else {\n\t\t\t\topcodeName = OpcodeTailCallReturnCallName\n\t\t\t}\n\n\t\t\tfuncType := &m.TypeSection[functions[index]]\n\t\t\tfor i := 0; i < len(funcType.Params); i++ {\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(funcType.Params[len(funcType.Params)-1-i]); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"type mismatch on %s operation param type: %v\", opcodeName, err)\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor _, exp := range funcType.Results {\n\t\t\t\tvalueTypeStack.push(exp)\n\t\t\t}\n\t\t\tif op == OpcodeTailCallReturnCall {\n\t\t\t\tif err := enabledFeatures.RequireEnabled(experimental.CoreFeaturesTailCall); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"%s invalid as %v\", OpcodeTailCallReturnCallName, err)\n\t\t\t\t}\n\t\t\t\t// Same formatting as OpcodeEnd on the outer-most block\n\t\t\t\tif err := valueTypeStack.requireStackValues(false, \"\", functionType.Results, false); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\t// behaves as a jump.\n\t\t\t\tvalueTypeStack.unreachable()\n\t\t\t}\n\t\t} else if op == OpcodeCallIndirect || op == OpcodeTailCallReturnCallIndirect {\n\t\t\tpc++\n\t\t\ttypeIndex, num, err := leb128.LoadUint32(body[pc:])\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"read immediate: %v\", err)\n\t\t\t}\n\t\t\tpc += num\n\n\t\t\tvar opcodeName string\n\t\t\tif op == OpcodeCallIndirect {\n\t\t\t\topcodeName = OpcodeCallIndirectName\n\t\t\t} else {\n\t\t\t\topcodeName = OpcodeTailCallReturnCallIndirectName\n\t\t\t}\n\n\t\t\tif int(typeIndex) >= len(m.TypeSection) {\n\t\t\t\treturn fmt.Errorf(\"invalid type index at %s: %d\", opcodeName, typeIndex)\n\t\t\t}\n\n\t\t\ttableIndex, num, err := leb128.LoadUint32(body[pc:])\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"read table index: %v\", err)\n\t\t\t}\n\t\t\tpc += num - 1\n\t\t\tif tableIndex != 0 {\n\t\t\t\tif err := enabledFeatures.RequireEnabled(api.CoreFeatureReferenceTypes); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"table index must be zero but was %d: %w\", tableIndex, err)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif tableIndex >= uint32(len(tables)) {\n\t\t\t\treturn fmt.Errorf(\"unknown table index: %d\", tableIndex)\n\t\t\t}\n\n\t\t\ttable := tables[tableIndex]\n\t\t\tif table.Type != RefTypeFuncref {\n\t\t\t\treturn fmt.Errorf(\"table is not funcref type but was %s for %s\", RefTypeName(table.Type), opcodeName)\n\t\t\t}\n\n\t\t\tif err = valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\treturn fmt.Errorf(\"cannot pop the offset in table for %s\", opcodeName)\n\t\t\t}\n\t\t\tfuncType := &m.TypeSection[typeIndex]\n\t\t\tfor i := 0; i < len(funcType.Params); i++ {\n\t\t\t\tif err = valueTypeStack.popAndVerifyType(funcType.Params[len(funcType.Params)-1-i]); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"type mismatch on %s operation input type\", opcodeName)\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor _, exp := range funcType.Results {\n\t\t\t\tvalueTypeStack.push(exp)\n\t\t\t}\n\n\t\t\tif op == OpcodeTailCallReturnCallIndirect {\n\t\t\t\tif err := enabledFeatures.RequireEnabled(experimental.CoreFeaturesTailCall); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"%s invalid as %v\", OpcodeTailCallReturnCallIndirectName, err)\n\t\t\t\t}\n\t\t\t\t// Same formatting as OpcodeEnd on the outer-most block\n\t\t\t\tif err := valueTypeStack.requireStackValues(false, \"\", functionType.Results, false); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\t// behaves as a jump.\n\t\t\t\tvalueTypeStack.unreachable()\n\t\t\t}\n\t\t} else if OpcodeI32Eqz <= op && op <= OpcodeI64Extend32S {\n\t\t\tswitch op {\n\t\t\tcase OpcodeI32Eqz:\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the operand for %s: %v\", OpcodeI32EqzName, err)\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeI32)\n\t\t\tcase OpcodeI32Eq, OpcodeI32Ne, OpcodeI32LtS,\n\t\t\t\tOpcodeI32LtU, OpcodeI32GtS, OpcodeI32GtU, OpcodeI32LeS,\n\t\t\t\tOpcodeI32LeU, OpcodeI32GeS, OpcodeI32GeU:\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the 1st i32 operand for %s: %v\", InstructionName(op), err)\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the 2nd i32 operand for %s: %v\", InstructionName(op), err)\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeI32)\n\t\t\tcase OpcodeI64Eqz:\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI64); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the operand for %s: %v\", OpcodeI64EqzName, err)\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeI32)\n\t\t\tcase OpcodeI64Eq, OpcodeI64Ne, OpcodeI64LtS,\n\t\t\t\tOpcodeI64LtU, OpcodeI64GtS, OpcodeI64GtU,\n\t\t\t\tOpcodeI64LeS, OpcodeI64LeU, OpcodeI64GeS, OpcodeI64GeU:\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI64); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the 1st i64 operand for %s: %v\", InstructionName(op), err)\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI64); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the 2nd i64 operand for %s: %v\", InstructionName(op), err)\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeI32)\n\t\t\tcase OpcodeF32Eq, OpcodeF32Ne, OpcodeF32Lt, OpcodeF32Gt, OpcodeF32Le, OpcodeF32Ge:\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeF32); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the 1st f32 operand for %s: %v\", InstructionName(op), err)\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeF32); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the 2nd f32 operand for %s: %v\", InstructionName(op), err)\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeI32)\n\t\t\tcase OpcodeF64Eq, OpcodeF64Ne, OpcodeF64Lt, OpcodeF64Gt, OpcodeF64Le, OpcodeF64Ge:\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeF64); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the 1st f64 operand for %s: %v\", InstructionName(op), err)\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeF64); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the 2nd f64 operand for %s: %v\", InstructionName(op), err)\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeI32)\n\t\t\tcase OpcodeI32Clz, OpcodeI32Ctz, OpcodeI32Popcnt:\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the i32 operand for %s: %v\", InstructionName(op), err)\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeI32)\n\t\t\tcase OpcodeI32Add, OpcodeI32Sub, OpcodeI32Mul, OpcodeI32DivS,\n\t\t\t\tOpcodeI32DivU, OpcodeI32RemS, OpcodeI32RemU, OpcodeI32And,\n\t\t\t\tOpcodeI32Or, OpcodeI32Xor, OpcodeI32Shl, OpcodeI32ShrS,\n\t\t\t\tOpcodeI32ShrU, OpcodeI32Rotl, OpcodeI32Rotr:\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the 1st operand for %s: %v\", InstructionName(op), err)\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the 2nd operand for %s: %v\", InstructionName(op), err)\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeI32)\n\t\t\tcase OpcodeI64Clz, OpcodeI64Ctz, OpcodeI64Popcnt:\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI64); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the i64 operand for %s: %v\", InstructionName(op), err)\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeI64)\n\t\t\tcase OpcodeI64Add, OpcodeI64Sub, OpcodeI64Mul, OpcodeI64DivS,\n\t\t\t\tOpcodeI64DivU, OpcodeI64RemS, OpcodeI64RemU, OpcodeI64And,\n\t\t\t\tOpcodeI64Or, OpcodeI64Xor, OpcodeI64Shl, OpcodeI64ShrS,\n\t\t\t\tOpcodeI64ShrU, OpcodeI64Rotl, OpcodeI64Rotr:\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI64); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the 1st i64 operand for %s: %v\", InstructionName(op), err)\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI64); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the 2nd i64 operand for %s: %v\", InstructionName(op), err)\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeI64)\n\t\t\tcase OpcodeF32Abs, OpcodeF32Neg, OpcodeF32Ceil,\n\t\t\t\tOpcodeF32Floor, OpcodeF32Trunc, OpcodeF32Nearest,\n\t\t\t\tOpcodeF32Sqrt:\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeF32); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the 1st f32 operand for %s: %v\", InstructionName(op), err)\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeF32)\n\t\t\tcase OpcodeF32Add, OpcodeF32Sub, OpcodeF32Mul,\n\t\t\t\tOpcodeF32Div, OpcodeF32Min, OpcodeF32Max,\n\t\t\t\tOpcodeF32Copysign:\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeF32); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the 1st f32 operand for %s: %v\", InstructionName(op), err)\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeF32); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the 2nd f32 operand for %s: %v\", InstructionName(op), err)\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeF32)\n\t\t\tcase OpcodeF64Abs, OpcodeF64Neg, OpcodeF64Ceil,\n\t\t\t\tOpcodeF64Floor, OpcodeF64Trunc, OpcodeF64Nearest,\n\t\t\t\tOpcodeF64Sqrt:\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeF64); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the 1st f64 operand for %s: %v\", InstructionName(op), err)\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeF64)\n\t\t\tcase OpcodeF64Add, OpcodeF64Sub, OpcodeF64Mul,\n\t\t\t\tOpcodeF64Div, OpcodeF64Min, OpcodeF64Max,\n\t\t\t\tOpcodeF64Copysign:\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeF64); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the 1st f64 operand for %s: %v\", InstructionName(op), err)\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeF64); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the 2nd f64 operand for %s: %v\", InstructionName(op), err)\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeF64)\n\t\t\tcase OpcodeI32WrapI64:\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI64); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the operand for %s: %v\", OpcodeI32WrapI64Name, err)\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeI32)\n\t\t\tcase OpcodeI32TruncF32S, OpcodeI32TruncF32U:\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeF32); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the f32 operand for %s: %v\", InstructionName(op), err)\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeI32)\n\t\t\tcase OpcodeI32TruncF64S, OpcodeI32TruncF64U:\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeF64); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the f64 operand for %s: %v\", InstructionName(op), err)\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeI32)\n\t\t\tcase OpcodeI64ExtendI32S, OpcodeI64ExtendI32U:\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the i32 operand for %s: %v\", InstructionName(op), err)\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeI64)\n\t\t\tcase OpcodeI64TruncF32S, OpcodeI64TruncF32U:\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeF32); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the f32 operand for %s: %v\", InstructionName(op), err)\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeI64)\n\t\t\tcase OpcodeI64TruncF64S, OpcodeI64TruncF64U:\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeF64); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the f64 operand for %s: %v\", InstructionName(op), err)\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeI64)\n\t\t\tcase OpcodeF32ConvertI32S, OpcodeF32ConvertI32U:\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the i32 operand for %s: %v\", InstructionName(op), err)\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeF32)\n\t\t\tcase OpcodeF32ConvertI64S, OpcodeF32ConvertI64U:\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI64); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the i64 operand for %s: %v\", InstructionName(op), err)\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeF32)\n\t\t\tcase OpcodeF32DemoteF64:\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeF64); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the operand for %s: %v\", OpcodeF32DemoteF64Name, err)\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeF32)\n\t\t\tcase OpcodeF64ConvertI32S, OpcodeF64ConvertI32U:\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the i32 operand for %s: %v\", InstructionName(op), err)\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeF64)\n\t\t\tcase OpcodeF64ConvertI64S, OpcodeF64ConvertI64U:\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI64); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the i64 operand for %s: %v\", InstructionName(op), err)\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeF64)\n\t\t\tcase OpcodeF64PromoteF32:\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeF32); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the operand for %s: %v\", OpcodeF64PromoteF32Name, err)\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeF64)\n\t\t\tcase OpcodeI32ReinterpretF32:\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeF32); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the operand for %s: %v\", OpcodeI32ReinterpretF32Name, err)\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeI32)\n\t\t\tcase OpcodeI64ReinterpretF64:\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeF64); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the operand for %s: %v\", OpcodeI64ReinterpretF64Name, err)\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeI64)\n\t\t\tcase OpcodeF32ReinterpretI32:\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the operand for %s: %v\", OpcodeF32ReinterpretI32Name, err)\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeF32)\n\t\t\tcase OpcodeF64ReinterpretI64:\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI64); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the operand for %s: %v\", OpcodeF64ReinterpretI64Name, err)\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeF64)\n\t\t\tcase OpcodeI32Extend8S, OpcodeI32Extend16S:\n\t\t\t\tif err := enabledFeatures.RequireEnabled(api.CoreFeatureSignExtensionOps); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"%s invalid as %v\", instructionNames[op], err)\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the operand for %s: %v\", instructionNames[op], err)\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeI32)\n\t\t\tcase OpcodeI64Extend8S, OpcodeI64Extend16S, OpcodeI64Extend32S:\n\t\t\t\tif err := enabledFeatures.RequireEnabled(api.CoreFeatureSignExtensionOps); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"%s invalid as %v\", instructionNames[op], err)\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI64); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the operand for %s: %v\", instructionNames[op], err)\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeI64)\n\t\t\tdefault:\n\t\t\t\treturn fmt.Errorf(\"invalid numeric instruction 0x%x\", op)\n\t\t\t}\n\t\t} else if op >= OpcodeRefNull && op <= OpcodeRefFunc {\n\t\t\tif err := enabledFeatures.RequireEnabled(api.CoreFeatureReferenceTypes); err != nil {\n\t\t\t\treturn fmt.Errorf(\"%s invalid as %v\", instructionNames[op], err)\n\t\t\t}\n\t\t\tswitch op {\n\t\t\tcase OpcodeRefNull:\n\t\t\t\tpc++\n\t\t\t\tswitch reftype := body[pc]; reftype {\n\t\t\t\tcase ValueTypeExternref:\n\t\t\t\t\tvalueTypeStack.push(ValueTypeExternref)\n\t\t\t\tcase ValueTypeFuncref:\n\t\t\t\t\tvalueTypeStack.push(ValueTypeFuncref)\n\t\t\t\tdefault:\n\t\t\t\t\treturn fmt.Errorf(\"unknown type for ref.null: 0x%x\", reftype)\n\t\t\t\t}\n\t\t\tcase OpcodeRefIsNull:\n\t\t\t\ttp, err := valueTypeStack.pop()\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the operand for ref.is_null: %v\", err)\n\t\t\t\t} else if !isReferenceValueType(tp) && tp != valueTypeUnknown {\n\t\t\t\t\treturn fmt.Errorf(\"type mismatch: expected reference type but was %s\", ValueTypeName(tp))\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeI32)\n\t\t\tcase OpcodeRefFunc:\n\t\t\t\tpc++\n\t\t\t\tindex, num, err := leb128.LoadUint32(body[pc:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"failed to read function index for ref.func: %v\", err)\n\t\t\t\t}\n\t\t\t\tif _, ok := declaredFunctionIndexes[index]; !ok {\n\t\t\t\t\treturn fmt.Errorf(\"undeclared function index %d for ref.func\", index)\n\t\t\t\t}\n\t\t\t\tpc += num - 1\n\t\t\t\tvalueTypeStack.push(ValueTypeFuncref)\n\t\t\t}\n\t\t} else if op == OpcodeTableGet || op == OpcodeTableSet {\n\t\t\tif err := enabledFeatures.RequireEnabled(api.CoreFeatureReferenceTypes); err != nil {\n\t\t\t\treturn fmt.Errorf(\"%s is invalid as %v\", InstructionName(op), err)\n\t\t\t}\n\t\t\tpc++\n\t\t\ttableIndex, num, err := leb128.LoadUint32(body[pc:])\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"read immediate: %v\", err)\n\t\t\t}\n\t\t\tif tableIndex >= uint32(len(tables)) {\n\t\t\t\treturn fmt.Errorf(\"table of index %d not found\", tableIndex)\n\t\t\t}\n\n\t\t\trefType := tables[tableIndex].Type\n\t\t\tif op == OpcodeTableGet {\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(api.ValueTypeI32); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the operand for table.get: %v\", err)\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(refType)\n\t\t\t} else {\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(refType); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the operand for table.set: %v\", err)\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(api.ValueTypeI32); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the operand for table.set: %v\", err)\n\t\t\t\t}\n\t\t\t}\n\t\t\tpc += num - 1\n\t\t} else if op == OpcodeMiscPrefix {\n\t\t\tpc++\n\t\t\t// A misc opcode is encoded as an unsigned variable 32-bit integer.\n\t\t\tmiscOp32, num, err := leb128.LoadUint32(body[pc:])\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"failed to read misc opcode: %v\", err)\n\t\t\t}\n\t\t\tpc += num - 1\n\t\t\tmiscOpcode := byte(miscOp32)\n\t\t\t// If the misc opcode is beyond byte range, it is highly likely this is an invalid binary, or\n\t\t\t// it is due to the new opcode from a new proposal. In the latter case, we have to\n\t\t\t// change the alias type of OpcodeMisc (which is currently byte) to uint32.\n\t\t\tif uint32(byte(miscOp32)) != miscOp32 {\n\t\t\t\treturn fmt.Errorf(\"invalid misc opcode: %#x\", miscOp32)\n\t\t\t}\n\t\t\tif miscOpcode >= OpcodeMiscI32TruncSatF32S && miscOpcode <= OpcodeMiscI64TruncSatF64U {\n\t\t\t\tif err := enabledFeatures.RequireEnabled(api.CoreFeatureNonTrappingFloatToIntConversion); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"%s invalid as %v\", miscInstructionNames[miscOpcode], err)\n\t\t\t\t}\n\t\t\t\tvar inType, outType ValueType\n\t\t\t\tswitch miscOpcode {\n\t\t\t\tcase OpcodeMiscI32TruncSatF32S, OpcodeMiscI32TruncSatF32U:\n\t\t\t\t\tinType, outType = ValueTypeF32, ValueTypeI32\n\t\t\t\tcase OpcodeMiscI32TruncSatF64S, OpcodeMiscI32TruncSatF64U:\n\t\t\t\t\tinType, outType = ValueTypeF64, ValueTypeI32\n\t\t\t\tcase OpcodeMiscI64TruncSatF32S, OpcodeMiscI64TruncSatF32U:\n\t\t\t\t\tinType, outType = ValueTypeF32, ValueTypeI64\n\t\t\t\tcase OpcodeMiscI64TruncSatF64S, OpcodeMiscI64TruncSatF64U:\n\t\t\t\t\tinType, outType = ValueTypeF64, ValueTypeI64\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(inType); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the operand for %s: %v\", miscInstructionNames[miscOpcode], err)\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(outType)\n\t\t\t} else if miscOpcode >= OpcodeMiscMemoryInit && miscOpcode <= OpcodeMiscTableCopy {\n\t\t\t\tif err := enabledFeatures.RequireEnabled(api.CoreFeatureBulkMemoryOperations); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"%s invalid as %v\", miscInstructionNames[miscOpcode], err)\n\t\t\t\t}\n\t\t\t\tvar params []ValueType\n\t\t\t\t// Handle opcodes added in bulk-memory-operations/WebAssembly 2.0.\n\t\t\t\tswitch miscOpcode {\n\t\t\t\tcase OpcodeMiscDataDrop:\n\t\t\t\t\tif m.DataCountSection == nil {\n\t\t\t\t\t\treturn fmt.Errorf(\"%s requires data count section\", MiscInstructionName(miscOpcode))\n\t\t\t\t\t}\n\n\t\t\t\t\t// We need to read the index to the data section.\n\t\t\t\t\tpc++\n\t\t\t\t\tindex, num, err := leb128.LoadUint32(body[pc:])\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn fmt.Errorf(\"failed to read data segment index for %s: %v\", MiscInstructionName(miscOpcode), err)\n\t\t\t\t\t}\n\t\t\t\t\tif int(index) >= len(m.DataSection) {\n\t\t\t\t\t\treturn fmt.Errorf(\"index %d out of range of data section(len=%d)\", index, len(m.DataSection))\n\t\t\t\t\t}\n\t\t\t\t\tpc += num - 1\n\t\t\t\tcase OpcodeMiscMemoryInit, OpcodeMiscMemoryCopy, OpcodeMiscMemoryFill:\n\t\t\t\t\tif memory == nil {\n\t\t\t\t\t\treturn fmt.Errorf(\"memory must exist for %s\", MiscInstructionName(miscOpcode))\n\t\t\t\t\t}\n\t\t\t\t\tparams = []ValueType{ValueTypeI32, ValueTypeI32, ValueTypeI32}\n\n\t\t\t\t\tif miscOpcode == OpcodeMiscMemoryInit {\n\t\t\t\t\t\tif m.DataCountSection == nil {\n\t\t\t\t\t\t\treturn fmt.Errorf(\"%s requires data count section\", MiscInstructionName(miscOpcode))\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// We need to read the index to the data section.\n\t\t\t\t\t\tpc++\n\t\t\t\t\t\tindex, num, err := leb128.LoadUint32(body[pc:])\n\t\t\t\t\t\tif err != nil {\n\t\t\t\t\t\t\treturn fmt.Errorf(\"failed to read data segment index for %s: %v\", MiscInstructionName(miscOpcode), err)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif int(index) >= len(m.DataSection) {\n\t\t\t\t\t\t\treturn fmt.Errorf(\"index %d out of range of data section(len=%d)\", index, len(m.DataSection))\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpc += num - 1\n\t\t\t\t\t}\n\n\t\t\t\t\tpc++\n\t\t\t\t\tval, num, err := leb128.LoadUint32(body[pc:])\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn fmt.Errorf(\"failed to read memory index for %s: %v\", MiscInstructionName(miscOpcode), err)\n\t\t\t\t\t}\n\t\t\t\t\tif val != 0 || num != 1 {\n\t\t\t\t\t\treturn fmt.Errorf(\"%s reserved byte must be zero encoded with 1 byte\", MiscInstructionName(miscOpcode))\n\t\t\t\t\t}\n\t\t\t\t\tif miscOpcode == OpcodeMiscMemoryCopy {\n\t\t\t\t\t\tpc++\n\t\t\t\t\t\t// memory.copy needs two memory index which are reserved as zero.\n\t\t\t\t\t\tval, num, err := leb128.LoadUint32(body[pc:])\n\t\t\t\t\t\tif err != nil {\n\t\t\t\t\t\t\treturn fmt.Errorf(\"failed to read memory index for %s: %v\", MiscInstructionName(miscOpcode), err)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif val != 0 || num != 1 {\n\t\t\t\t\t\t\treturn fmt.Errorf(\"%s reserved byte must be zero encoded with 1 byte\", MiscInstructionName(miscOpcode))\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\tcase OpcodeMiscTableInit:\n\t\t\t\t\tparams = []ValueType{ValueTypeI32, ValueTypeI32, ValueTypeI32}\n\t\t\t\t\tpc++\n\t\t\t\t\telementIndex, num, err := leb128.LoadUint32(body[pc:])\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn fmt.Errorf(\"failed to read element segment index for %s: %v\", MiscInstructionName(miscOpcode), err)\n\t\t\t\t\t}\n\t\t\t\t\tif int(elementIndex) >= len(m.ElementSection) {\n\t\t\t\t\t\treturn fmt.Errorf(\"index %d out of range of element section(len=%d)\", elementIndex, len(m.ElementSection))\n\t\t\t\t\t}\n\t\t\t\t\tpc += num\n\n\t\t\t\t\ttableIndex, num, err := leb128.LoadUint32(body[pc:])\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn fmt.Errorf(\"failed to read source table index for %s: %v\", MiscInstructionName(miscOpcode), err)\n\t\t\t\t\t}\n\t\t\t\t\tif tableIndex != 0 {\n\t\t\t\t\t\tif err := enabledFeatures.RequireEnabled(api.CoreFeatureReferenceTypes); err != nil {\n\t\t\t\t\t\t\treturn fmt.Errorf(\"source table index must be zero for %s as %v\", MiscInstructionName(miscOpcode), err)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif tableIndex >= uint32(len(tables)) {\n\t\t\t\t\t\treturn fmt.Errorf(\"table of index %d not found\", tableIndex)\n\t\t\t\t\t}\n\n\t\t\t\t\tif m.ElementSection[elementIndex].Type != tables[tableIndex].Type {\n\t\t\t\t\t\treturn fmt.Errorf(\"type mismatch for table.init: element type %s does not match table type %s\",\n\t\t\t\t\t\t\tRefTypeName(m.ElementSection[elementIndex].Type),\n\t\t\t\t\t\t\tRefTypeName(tables[tableIndex].Type),\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t\tpc += num - 1\n\t\t\t\tcase OpcodeMiscElemDrop:\n\t\t\t\t\tpc++\n\t\t\t\t\telementIndex, num, err := leb128.LoadUint32(body[pc:])\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn fmt.Errorf(\"failed to read element segment index for %s: %v\", MiscInstructionName(miscOpcode), err)\n\t\t\t\t\t} else if int(elementIndex) >= len(m.ElementSection) {\n\t\t\t\t\t\treturn fmt.Errorf(\"index %d out of range of element section(len=%d)\", elementIndex, len(m.ElementSection))\n\t\t\t\t\t}\n\t\t\t\t\tpc += num - 1\n\t\t\t\tcase OpcodeMiscTableCopy:\n\t\t\t\t\tparams = []ValueType{ValueTypeI32, ValueTypeI32, ValueTypeI32}\n\t\t\t\t\tpc++\n\n\t\t\t\t\tdstTableIndex, num, err := leb128.LoadUint32(body[pc:])\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn fmt.Errorf(\"failed to read destination table index for %s: %v\", MiscInstructionName(miscOpcode), err)\n\t\t\t\t\t}\n\t\t\t\t\tif dstTableIndex != 0 {\n\t\t\t\t\t\tif err := enabledFeatures.RequireEnabled(api.CoreFeatureReferenceTypes); err != nil {\n\t\t\t\t\t\t\treturn fmt.Errorf(\"destination table index must be zero for %s as %v\", MiscInstructionName(miscOpcode), err)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif dstTableIndex >= uint32(len(tables)) {\n\t\t\t\t\t\treturn fmt.Errorf(\"table of index %d not found\", dstTableIndex)\n\t\t\t\t\t}\n\t\t\t\t\tpc += num\n\n\t\t\t\t\tsrcTableIndex, num, err := leb128.LoadUint32(body[pc:])\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn fmt.Errorf(\"failed to read source table index for %s: %v\", MiscInstructionName(miscOpcode), err)\n\t\t\t\t\t}\n\t\t\t\t\tif srcTableIndex != 0 {\n\t\t\t\t\t\tif err := enabledFeatures.RequireEnabled(api.CoreFeatureReferenceTypes); err != nil {\n\t\t\t\t\t\t\treturn fmt.Errorf(\"source table index must be zero for %s as %v\", MiscInstructionName(miscOpcode), err)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif srcTableIndex >= uint32(len(tables)) {\n\t\t\t\t\t\treturn fmt.Errorf(\"table of index %d not found\", srcTableIndex)\n\t\t\t\t\t}\n\n\t\t\t\t\tif tables[srcTableIndex].Type != tables[dstTableIndex].Type {\n\t\t\t\t\t\treturn fmt.Errorf(\"table type mismatch for table.copy: %s (src) != %s (dst)\",\n\t\t\t\t\t\t\tRefTypeName(tables[srcTableIndex].Type), RefTypeName(tables[dstTableIndex].Type))\n\t\t\t\t\t}\n\n\t\t\t\t\tpc += num - 1\n\t\t\t\t}\n\t\t\t\tfor _, p := range params {\n\t\t\t\t\tif err := valueTypeStack.popAndVerifyType(p); err != nil {\n\t\t\t\t\t\treturn fmt.Errorf(\"cannot pop the operand for %s: %v\", miscInstructionNames[miscOpcode], err)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if miscOpcode >= OpcodeMiscTableGrow && miscOpcode <= OpcodeMiscTableFill {\n\t\t\t\tif err := enabledFeatures.RequireEnabled(api.CoreFeatureReferenceTypes); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"%s invalid as %v\", miscInstructionNames[miscOpcode], err)\n\t\t\t\t}\n\n\t\t\t\tpc++\n\t\t\t\ttableIndex, num, err := leb128.LoadUint32(body[pc:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"failed to read table index for %s: %v\", MiscInstructionName(miscOpcode), err)\n\t\t\t\t}\n\t\t\t\tif tableIndex >= uint32(len(tables)) {\n\t\t\t\t\treturn fmt.Errorf(\"table of index %d not found\", tableIndex)\n\t\t\t\t}\n\t\t\t\tpc += num - 1\n\n\t\t\t\tvar params, results []ValueType\n\t\t\t\treftype := tables[tableIndex].Type\n\t\t\t\tif miscOpcode == OpcodeMiscTableGrow {\n\t\t\t\t\tparams = []ValueType{ValueTypeI32, reftype}\n\t\t\t\t\tresults = []ValueType{ValueTypeI32}\n\t\t\t\t} else if miscOpcode == OpcodeMiscTableSize {\n\t\t\t\t\tresults = []ValueType{ValueTypeI32}\n\t\t\t\t} else if miscOpcode == OpcodeMiscTableFill {\n\t\t\t\t\tparams = []ValueType{ValueTypeI32, reftype, ValueTypeI32}\n\t\t\t\t}\n\n\t\t\t\tfor _, p := range params {\n\t\t\t\t\tif err := valueTypeStack.popAndVerifyType(p); err != nil {\n\t\t\t\t\t\treturn fmt.Errorf(\"cannot pop the operand for %s: %v\", miscInstructionNames[miscOpcode], err)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor _, r := range results {\n\t\t\t\t\tvalueTypeStack.push(r)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn fmt.Errorf(\"unknown misc opcode %#x\", miscOpcode)\n\t\t\t}\n\t\t} else if op == OpcodeVecPrefix {\n\t\t\tpc++\n\t\t\t// Vector instructions come with two bytes where the first byte is always OpcodeVecPrefix,\n\t\t\t// and the second byte determines the actual instruction.\n\t\t\tvecOpcode := body[pc]\n\t\t\tif err := enabledFeatures.RequireEnabled(api.CoreFeatureSIMD); err != nil {\n\t\t\t\treturn fmt.Errorf(\"%s invalid as %v\", vectorInstructionName[vecOpcode], err)\n\t\t\t}\n\n\t\t\tswitch vecOpcode {\n\t\t\tcase OpcodeVecV128Const:\n\t\t\t\t// Read 128-bit = 16 bytes constants\n\t\t\t\tif int(pc+16) >= len(body) {\n\t\t\t\t\treturn fmt.Errorf(\"cannot read constant vector value for %s\", vectorInstructionName[vecOpcode])\n\t\t\t\t}\n\t\t\t\tpc += 16\n\t\t\t\tvalueTypeStack.push(ValueTypeV128)\n\t\t\tcase OpcodeVecV128AnyTrue, OpcodeVecI8x16AllTrue, OpcodeVecI16x8AllTrue, OpcodeVecI32x4AllTrue, OpcodeVecI64x2AllTrue,\n\t\t\t\tOpcodeVecI8x16BitMask, OpcodeVecI16x8BitMask, OpcodeVecI32x4BitMask, OpcodeVecI64x2BitMask:\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeV128); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the operand for %s: %v\", vectorInstructionName[vecOpcode], err)\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeI32)\n\t\t\tcase OpcodeVecV128Load, OpcodeVecV128Load8x8s, OpcodeVecV128Load8x8u, OpcodeVecV128Load16x4s, OpcodeVecV128Load16x4u,\n\t\t\t\tOpcodeVecV128Load32x2s, OpcodeVecV128Load32x2u, OpcodeVecV128Load8Splat, OpcodeVecV128Load16Splat,\n\t\t\t\tOpcodeVecV128Load32Splat, OpcodeVecV128Load64Splat,\n\t\t\t\tOpcodeVecV128Load32zero, OpcodeVecV128Load64zero:\n\t\t\t\tif memory == nil {\n\t\t\t\t\treturn fmt.Errorf(\"memory must exist for %s\", VectorInstructionName(vecOpcode))\n\t\t\t\t}\n\t\t\t\tpc++\n\t\t\t\talign, _, read, err := readMemArg(pc, body)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tpc += read - 1\n\t\t\t\tvar maxAlign uint32\n\t\t\t\tswitch vecOpcode {\n\t\t\t\tcase OpcodeVecV128Load:\n\t\t\t\t\tmaxAlign = 128 / 8\n\t\t\t\tcase OpcodeVecV128Load8x8s, OpcodeVecV128Load8x8u, OpcodeVecV128Load16x4s, OpcodeVecV128Load16x4u,\n\t\t\t\t\tOpcodeVecV128Load32x2s, OpcodeVecV128Load32x2u:\n\t\t\t\t\tmaxAlign = 64 / 8\n\t\t\t\tcase OpcodeVecV128Load8Splat:\n\t\t\t\t\tmaxAlign = 1\n\t\t\t\tcase OpcodeVecV128Load16Splat:\n\t\t\t\t\tmaxAlign = 16 / 8\n\t\t\t\tcase OpcodeVecV128Load32Splat:\n\t\t\t\t\tmaxAlign = 32 / 8\n\t\t\t\tcase OpcodeVecV128Load64Splat:\n\t\t\t\t\tmaxAlign = 64 / 8\n\t\t\t\tcase OpcodeVecV128Load32zero:\n\t\t\t\t\tmaxAlign = 32 / 8\n\t\t\t\tcase OpcodeVecV128Load64zero:\n\t\t\t\t\tmaxAlign = 64 / 8\n\t\t\t\t}\n\n\t\t\t\tif 1<<align > maxAlign {\n\t\t\t\t\treturn fmt.Errorf(\"invalid memory alignment %d for %s\", align, VectorInstructionName(vecOpcode))\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the operand for %s: %v\", VectorInstructionName(vecOpcode), err)\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeV128)\n\t\t\tcase OpcodeVecV128Store:\n\t\t\t\tif memory == nil {\n\t\t\t\t\treturn fmt.Errorf(\"memory must exist for %s\", VectorInstructionName(vecOpcode))\n\t\t\t\t}\n\t\t\t\tpc++\n\t\t\t\talign, _, read, err := readMemArg(pc, body)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tpc += read - 1\n\t\t\t\tif 1<<align > 128/8 {\n\t\t\t\t\treturn fmt.Errorf(\"invalid memory alignment %d for %s\", align, OpcodeVecV128StoreName)\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeV128); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the operand for %s: %v\", OpcodeVecV128StoreName, err)\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the operand for %s: %v\", OpcodeVecV128StoreName, err)\n\t\t\t\t}\n\t\t\tcase OpcodeVecV128Load8Lane, OpcodeVecV128Load16Lane, OpcodeVecV128Load32Lane, OpcodeVecV128Load64Lane:\n\t\t\t\tif memory == nil {\n\t\t\t\t\treturn fmt.Errorf(\"memory must exist for %s\", VectorInstructionName(vecOpcode))\n\t\t\t\t}\n\t\t\t\tattr := vecLoadLanes[vecOpcode]\n\t\t\t\tpc++\n\t\t\t\talign, _, read, err := readMemArg(pc, body)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tif 1<<align > attr.alignMax {\n\t\t\t\t\treturn fmt.Errorf(\"invalid memory alignment %d for %s\", align, vectorInstructionName[vecOpcode])\n\t\t\t\t}\n\t\t\t\tpc += read\n\t\t\t\tif pc >= uint64(len(body)) {\n\t\t\t\t\treturn fmt.Errorf(\"lane for %s not found\", OpcodeVecV128Load64LaneName)\n\t\t\t\t}\n\t\t\t\tlane := body[pc]\n\t\t\t\tif lane >= attr.laneCeil {\n\t\t\t\t\treturn fmt.Errorf(\"invalid lane index %d >= %d for %s\", lane, attr.laneCeil, vectorInstructionName[vecOpcode])\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeV128); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the operand for %s: %v\", vectorInstructionName[vecOpcode], err)\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the operand for %s: %v\", vectorInstructionName[vecOpcode], err)\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeV128)\n\t\t\tcase OpcodeVecV128Store8Lane, OpcodeVecV128Store16Lane, OpcodeVecV128Store32Lane, OpcodeVecV128Store64Lane:\n\t\t\t\tif memory == nil {\n\t\t\t\t\treturn fmt.Errorf(\"memory must exist for %s\", VectorInstructionName(vecOpcode))\n\t\t\t\t}\n\t\t\t\tattr := vecStoreLanes[vecOpcode]\n\t\t\t\tpc++\n\t\t\t\talign, _, read, err := readMemArg(pc, body)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tif 1<<align > attr.alignMax {\n\t\t\t\t\treturn fmt.Errorf(\"invalid memory alignment %d for %s\", align, vectorInstructionName[vecOpcode])\n\t\t\t\t}\n\t\t\t\tpc += read\n\t\t\t\tif pc >= uint64(len(body)) {\n\t\t\t\t\treturn fmt.Errorf(\"lane for %s not found\", vectorInstructionName[vecOpcode])\n\t\t\t\t}\n\t\t\t\tlane := body[pc]\n\t\t\t\tif lane >= attr.laneCeil {\n\t\t\t\t\treturn fmt.Errorf(\"invalid lane index %d >= %d for %s\", lane, attr.laneCeil, vectorInstructionName[vecOpcode])\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeV128); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the operand for %s: %v\", vectorInstructionName[vecOpcode], err)\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the operand for %s: %v\", vectorInstructionName[vecOpcode], err)\n\t\t\t\t}\n\t\t\tcase OpcodeVecI8x16ExtractLaneS,\n\t\t\t\tOpcodeVecI8x16ExtractLaneU,\n\t\t\t\tOpcodeVecI16x8ExtractLaneS,\n\t\t\t\tOpcodeVecI16x8ExtractLaneU,\n\t\t\t\tOpcodeVecI32x4ExtractLane,\n\t\t\t\tOpcodeVecI64x2ExtractLane,\n\t\t\t\tOpcodeVecF32x4ExtractLane,\n\t\t\t\tOpcodeVecF64x2ExtractLane:\n\t\t\t\tpc++\n\t\t\t\tif pc >= uint64(len(body)) {\n\t\t\t\t\treturn fmt.Errorf(\"lane for %s not found\", vectorInstructionName[vecOpcode])\n\t\t\t\t}\n\t\t\t\tattr := vecExtractLanes[vecOpcode]\n\t\t\t\tlane := body[pc]\n\t\t\t\tif lane >= attr.laneCeil {\n\t\t\t\t\treturn fmt.Errorf(\"invalid lane index %d >= %d for %s\", lane, attr.laneCeil, vectorInstructionName[vecOpcode])\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeV128); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the operand for %s: %v\", vectorInstructionName[vecOpcode], err)\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(attr.resultType)\n\t\t\tcase OpcodeVecI8x16ReplaceLane, OpcodeVecI16x8ReplaceLane, OpcodeVecI32x4ReplaceLane,\n\t\t\t\tOpcodeVecI64x2ReplaceLane, OpcodeVecF32x4ReplaceLane, OpcodeVecF64x2ReplaceLane:\n\t\t\t\tpc++\n\t\t\t\tif pc >= uint64(len(body)) {\n\t\t\t\t\treturn fmt.Errorf(\"lane for %s not found\", vectorInstructionName[vecOpcode])\n\t\t\t\t}\n\t\t\t\tattr := vecReplaceLanes[vecOpcode]\n\t\t\t\tlane := body[pc]\n\t\t\t\tif lane >= attr.laneCeil {\n\t\t\t\t\treturn fmt.Errorf(\"invalid lane index %d >= %d for %s\", lane, attr.laneCeil, vectorInstructionName[vecOpcode])\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(attr.paramType); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the operand for %s: %v\", vectorInstructionName[vecOpcode], err)\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeV128); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the operand for %s: %v\", vectorInstructionName[vecOpcode], err)\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeV128)\n\t\t\tcase OpcodeVecI8x16Splat, OpcodeVecI16x8Splat, OpcodeVecI32x4Splat,\n\t\t\t\tOpcodeVecI64x2Splat, OpcodeVecF32x4Splat, OpcodeVecF64x2Splat:\n\t\t\t\ttp := vecSplatValueTypes[vecOpcode]\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(tp); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the operand for %s: %v\", vectorInstructionName[vecOpcode], err)\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeV128)\n\t\t\tcase OpcodeVecI8x16Swizzle, OpcodeVecV128And, OpcodeVecV128Or, OpcodeVecV128Xor, OpcodeVecV128AndNot:\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeV128); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the operand for %s: %v\", vectorInstructionName[vecOpcode], err)\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeV128); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the operand for %s: %v\", vectorInstructionName[vecOpcode], err)\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeV128)\n\t\t\tcase OpcodeVecV128Bitselect:\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeV128); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the operand for %s: %v\", vectorInstructionName[vecOpcode], err)\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeV128); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the operand for %s: %v\", vectorInstructionName[vecOpcode], err)\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeV128); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the operand for %s: %v\", vectorInstructionName[vecOpcode], err)\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeV128)\n\t\t\tcase OpcodeVecV128Not:\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeV128); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the operand for %s: %v\", vectorInstructionName[vecOpcode], err)\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeV128)\n\t\t\tcase OpcodeVecV128i8x16Shuffle:\n\t\t\t\tpc++\n\t\t\t\tif pc+15 >= uint64(len(body)) {\n\t\t\t\t\treturn fmt.Errorf(\"16 lane indexes for %s not found\", vectorInstructionName[vecOpcode])\n\t\t\t\t}\n\t\t\t\tlanes := body[pc : pc+16]\n\t\t\t\tfor i, l := range lanes {\n\t\t\t\t\tif l >= 32 {\n\t\t\t\t\t\treturn fmt.Errorf(\"invalid lane index[%d] %d >= %d for %s\", i, l, 32, vectorInstructionName[vecOpcode])\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeV128); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the operand for %s: %v\", vectorInstructionName[vecOpcode], err)\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeV128); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the operand for %s: %v\", vectorInstructionName[vecOpcode], err)\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeV128)\n\t\t\t\tpc += 15\n\t\t\tcase OpcodeVecI8x16Shl, OpcodeVecI8x16ShrS, OpcodeVecI8x16ShrU,\n\t\t\t\tOpcodeVecI16x8Shl, OpcodeVecI16x8ShrS, OpcodeVecI16x8ShrU,\n\t\t\t\tOpcodeVecI32x4Shl, OpcodeVecI32x4ShrS, OpcodeVecI32x4ShrU,\n\t\t\t\tOpcodeVecI64x2Shl, OpcodeVecI64x2ShrS, OpcodeVecI64x2ShrU:\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the operand for %s: %v\", vectorInstructionName[vecOpcode], err)\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeV128); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the operand for %s: %v\", vectorInstructionName[vecOpcode], err)\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeV128)\n\t\t\tcase OpcodeVecI8x16Eq, OpcodeVecI8x16Ne, OpcodeVecI8x16LtS, OpcodeVecI8x16LtU, OpcodeVecI8x16GtS,\n\t\t\t\tOpcodeVecI8x16GtU, OpcodeVecI8x16LeS, OpcodeVecI8x16LeU, OpcodeVecI8x16GeS, OpcodeVecI8x16GeU,\n\t\t\t\tOpcodeVecI16x8Eq, OpcodeVecI16x8Ne, OpcodeVecI16x8LtS, OpcodeVecI16x8LtU, OpcodeVecI16x8GtS,\n\t\t\t\tOpcodeVecI16x8GtU, OpcodeVecI16x8LeS, OpcodeVecI16x8LeU, OpcodeVecI16x8GeS, OpcodeVecI16x8GeU,\n\t\t\t\tOpcodeVecI32x4Eq, OpcodeVecI32x4Ne, OpcodeVecI32x4LtS, OpcodeVecI32x4LtU, OpcodeVecI32x4GtS,\n\t\t\t\tOpcodeVecI32x4GtU, OpcodeVecI32x4LeS, OpcodeVecI32x4LeU, OpcodeVecI32x4GeS, OpcodeVecI32x4GeU,\n\t\t\t\tOpcodeVecI64x2Eq, OpcodeVecI64x2Ne, OpcodeVecI64x2LtS, OpcodeVecI64x2GtS, OpcodeVecI64x2LeS,\n\t\t\t\tOpcodeVecI64x2GeS, OpcodeVecF32x4Eq, OpcodeVecF32x4Ne, OpcodeVecF32x4Lt, OpcodeVecF32x4Gt,\n\t\t\t\tOpcodeVecF32x4Le, OpcodeVecF32x4Ge, OpcodeVecF64x2Eq, OpcodeVecF64x2Ne, OpcodeVecF64x2Lt,\n\t\t\t\tOpcodeVecF64x2Gt, OpcodeVecF64x2Le, OpcodeVecF64x2Ge,\n\t\t\t\tOpcodeVecI32x4DotI16x8S,\n\t\t\t\tOpcodeVecI8x16NarrowI16x8S, OpcodeVecI8x16NarrowI16x8U, OpcodeVecI16x8NarrowI32x4S, OpcodeVecI16x8NarrowI32x4U:\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeV128); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the operand for %s: %v\", vectorInstructionName[vecOpcode], err)\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeV128); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the operand for %s: %v\", vectorInstructionName[vecOpcode], err)\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeV128)\n\t\t\tcase OpcodeVecI8x16Neg, OpcodeVecI16x8Neg, OpcodeVecI32x4Neg, OpcodeVecI64x2Neg, OpcodeVecF32x4Neg, OpcodeVecF64x2Neg,\n\t\t\t\tOpcodeVecF32x4Sqrt, OpcodeVecF64x2Sqrt,\n\t\t\t\tOpcodeVecI8x16Abs, OpcodeVecI8x16Popcnt, OpcodeVecI16x8Abs, OpcodeVecI32x4Abs, OpcodeVecI64x2Abs,\n\t\t\t\tOpcodeVecF32x4Abs, OpcodeVecF64x2Abs,\n\t\t\t\tOpcodeVecF32x4Ceil, OpcodeVecF32x4Floor, OpcodeVecF32x4Trunc, OpcodeVecF32x4Nearest,\n\t\t\t\tOpcodeVecF64x2Ceil, OpcodeVecF64x2Floor, OpcodeVecF64x2Trunc, OpcodeVecF64x2Nearest,\n\t\t\t\tOpcodeVecI16x8ExtendLowI8x16S, OpcodeVecI16x8ExtendHighI8x16S, OpcodeVecI16x8ExtendLowI8x16U, OpcodeVecI16x8ExtendHighI8x16U,\n\t\t\t\tOpcodeVecI32x4ExtendLowI16x8S, OpcodeVecI32x4ExtendHighI16x8S, OpcodeVecI32x4ExtendLowI16x8U, OpcodeVecI32x4ExtendHighI16x8U,\n\t\t\t\tOpcodeVecI64x2ExtendLowI32x4S, OpcodeVecI64x2ExtendHighI32x4S, OpcodeVecI64x2ExtendLowI32x4U, OpcodeVecI64x2ExtendHighI32x4U,\n\t\t\t\tOpcodeVecI16x8ExtaddPairwiseI8x16S, OpcodeVecI16x8ExtaddPairwiseI8x16U,\n\t\t\t\tOpcodeVecI32x4ExtaddPairwiseI16x8S, OpcodeVecI32x4ExtaddPairwiseI16x8U,\n\t\t\t\tOpcodeVecF64x2PromoteLowF32x4Zero, OpcodeVecF32x4DemoteF64x2Zero,\n\t\t\t\tOpcodeVecF32x4ConvertI32x4S, OpcodeVecF32x4ConvertI32x4U,\n\t\t\t\tOpcodeVecF64x2ConvertLowI32x4S, OpcodeVecF64x2ConvertLowI32x4U,\n\t\t\t\tOpcodeVecI32x4TruncSatF32x4S, OpcodeVecI32x4TruncSatF32x4U, OpcodeVecI32x4TruncSatF64x2SZero, OpcodeVecI32x4TruncSatF64x2UZero:\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeV128); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the operand for %s: %v\", vectorInstructionName[vecOpcode], err)\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeV128)\n\n\t\t\tcase OpcodeVecI8x16Add, OpcodeVecI8x16AddSatS, OpcodeVecI8x16AddSatU, OpcodeVecI8x16Sub, OpcodeVecI8x16SubSatS, OpcodeVecI8x16SubSatU,\n\t\t\t\tOpcodeVecI16x8Add, OpcodeVecI16x8AddSatS, OpcodeVecI16x8AddSatU, OpcodeVecI16x8Sub, OpcodeVecI16x8SubSatS, OpcodeVecI16x8SubSatU, OpcodeVecI16x8Mul,\n\t\t\t\tOpcodeVecI32x4Add, OpcodeVecI32x4Sub, OpcodeVecI32x4Mul,\n\t\t\t\tOpcodeVecI64x2Add, OpcodeVecI64x2Sub, OpcodeVecI64x2Mul,\n\t\t\t\tOpcodeVecF32x4Add, OpcodeVecF32x4Sub, OpcodeVecF32x4Mul, OpcodeVecF32x4Div,\n\t\t\t\tOpcodeVecF64x2Add, OpcodeVecF64x2Sub, OpcodeVecF64x2Mul, OpcodeVecF64x2Div,\n\t\t\t\tOpcodeVecI8x16MinS, OpcodeVecI8x16MinU, OpcodeVecI8x16MaxS, OpcodeVecI8x16MaxU,\n\t\t\t\tOpcodeVecI8x16AvgrU,\n\t\t\t\tOpcodeVecI16x8MinS, OpcodeVecI16x8MinU, OpcodeVecI16x8MaxS, OpcodeVecI16x8MaxU,\n\t\t\t\tOpcodeVecI16x8AvgrU,\n\t\t\t\tOpcodeVecI32x4MinS, OpcodeVecI32x4MinU, OpcodeVecI32x4MaxS, OpcodeVecI32x4MaxU,\n\t\t\t\tOpcodeVecF32x4Min, OpcodeVecF32x4Max, OpcodeVecF64x2Min, OpcodeVecF64x2Max,\n\t\t\t\tOpcodeVecF32x4Pmin, OpcodeVecF32x4Pmax, OpcodeVecF64x2Pmin, OpcodeVecF64x2Pmax,\n\t\t\t\tOpcodeVecI16x8Q15mulrSatS,\n\t\t\t\tOpcodeVecI16x8ExtMulLowI8x16S, OpcodeVecI16x8ExtMulHighI8x16S, OpcodeVecI16x8ExtMulLowI8x16U, OpcodeVecI16x8ExtMulHighI8x16U,\n\t\t\t\tOpcodeVecI32x4ExtMulLowI16x8S, OpcodeVecI32x4ExtMulHighI16x8S, OpcodeVecI32x4ExtMulLowI16x8U, OpcodeVecI32x4ExtMulHighI16x8U,\n\t\t\t\tOpcodeVecI64x2ExtMulLowI32x4S, OpcodeVecI64x2ExtMulHighI32x4S, OpcodeVecI64x2ExtMulLowI32x4U, OpcodeVecI64x2ExtMulHighI32x4U:\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeV128); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the operand for %s: %v\", vectorInstructionName[vecOpcode], err)\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeV128); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"cannot pop the operand for %s: %v\", vectorInstructionName[vecOpcode], err)\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeV128)\n\t\t\tdefault:\n\t\t\t\treturn fmt.Errorf(\"unknown SIMD instruction %s\", vectorInstructionName[vecOpcode])\n\t\t\t}\n\t\t} else if op == OpcodeBlock {\n\t\t\tbr.Reset(body[pc+1:])\n\t\t\tbt, num, err := DecodeBlockType(m.TypeSection, br, enabledFeatures)\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"read block: %w\", err)\n\t\t\t}\n\t\t\tcontrolBlockStack.push(pc, 0, 0, bt, num, 0)\n\t\t\tif err = valueTypeStack.popParams(op, bt.Params, false); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\t// Plus we have to push any block params again.\n\t\t\tfor _, p := range bt.Params {\n\t\t\t\tvalueTypeStack.push(p)\n\t\t\t}\n\t\t\tvalueTypeStack.pushStackLimit(len(bt.Params))\n\t\t\tpc += num\n\t\t} else if op == OpcodeAtomicPrefix {\n\t\t\tpc++\n\t\t\t// Atomic instructions come with two bytes where the first byte is always OpcodeAtomicPrefix,\n\t\t\t// and the second byte determines the actual instruction.\n\t\t\tatomicOpcode := body[pc]\n\t\t\tif err := enabledFeatures.RequireEnabled(experimental.CoreFeaturesThreads); err != nil {\n\t\t\t\treturn fmt.Errorf(\"%s invalid as %v\", atomicInstructionName[atomicOpcode], err)\n\t\t\t}\n\t\t\tpc++\n\n\t\t\tif atomicOpcode == OpcodeAtomicFence {\n\t\t\t\t// No memory requirement and no arguments or return, however the immediate byte value must be 0.\n\t\t\t\timm := body[pc]\n\t\t\t\tif imm != 0x0 {\n\t\t\t\t\treturn fmt.Errorf(\"invalid immediate value for %s\", AtomicInstructionName(atomicOpcode))\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// All atomic operations except fence (checked above) require memory\n\t\t\tif memory == nil {\n\t\t\t\treturn fmt.Errorf(\"memory must exist for %s\", AtomicInstructionName(atomicOpcode))\n\t\t\t}\n\t\t\talign, _, read, err := readMemArg(pc, body)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tpc += read - 1\n\t\t\tswitch atomicOpcode {\n\t\t\tcase OpcodeAtomicMemoryNotify:\n\t\t\t\tif 1<<align > 32/8 {\n\t\t\t\t\treturn fmt.Errorf(\"invalid memory alignment\")\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeI32)\n\t\t\tcase OpcodeAtomicMemoryWait32:\n\t\t\t\tif 1<<align > 32/8 {\n\t\t\t\t\treturn fmt.Errorf(\"invalid memory alignment\")\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI64); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeI32)\n\t\t\tcase OpcodeAtomicMemoryWait64:\n\t\t\t\tif 1<<align > 64/8 {\n\t\t\t\t\treturn fmt.Errorf(\"invalid memory alignment\")\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI64); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI64); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeI32)\n\t\t\tcase OpcodeAtomicI32Load:\n\t\t\t\tif 1<<align > 32/8 {\n\t\t\t\t\treturn fmt.Errorf(\"invalid memory alignment\")\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeI32)\n\t\t\tcase OpcodeAtomicI64Load:\n\t\t\t\tif 1<<align > 64/8 {\n\t\t\t\t\treturn fmt.Errorf(\"invalid memory alignment\")\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeI64)\n\t\t\tcase OpcodeAtomicI32Load8U:\n\t\t\t\tif 1<<align != 1 {\n\t\t\t\t\treturn fmt.Errorf(\"invalid memory alignment\")\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeI32)\n\t\t\tcase OpcodeAtomicI32Load16U:\n\t\t\t\tif 1<<align != 16/8 {\n\t\t\t\t\treturn fmt.Errorf(\"invalid memory alignment\")\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeI32)\n\t\t\tcase OpcodeAtomicI64Load8U:\n\t\t\t\tif 1<<align != 1 {\n\t\t\t\t\treturn fmt.Errorf(\"invalid memory alignment\")\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeI64)\n\t\t\tcase OpcodeAtomicI64Load16U:\n\t\t\t\tif 1<<align > 16/8 {\n\t\t\t\t\treturn fmt.Errorf(\"invalid memory alignment\")\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeI64)\n\t\t\tcase OpcodeAtomicI64Load32U:\n\t\t\t\tif 1<<align > 32/8 {\n\t\t\t\t\treturn fmt.Errorf(\"invalid memory alignment\")\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeI64)\n\t\t\tcase OpcodeAtomicI32Store:\n\t\t\t\tif 1<<align > 32/8 {\n\t\t\t\t\treturn fmt.Errorf(\"invalid memory alignment\")\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\tcase OpcodeAtomicI64Store:\n\t\t\t\tif 1<<align > 64/8 {\n\t\t\t\t\treturn fmt.Errorf(\"invalid memory alignment\")\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI64); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\tcase OpcodeAtomicI32Store8:\n\t\t\t\tif 1<<align > 1 {\n\t\t\t\t\treturn fmt.Errorf(\"invalid memory alignment\")\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\tcase OpcodeAtomicI32Store16:\n\t\t\t\tif 1<<align > 16/8 {\n\t\t\t\t\treturn fmt.Errorf(\"invalid memory alignment\")\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\tcase OpcodeAtomicI64Store8:\n\t\t\t\tif 1<<align > 1 {\n\t\t\t\t\treturn fmt.Errorf(\"invalid memory alignment\")\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI64); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\tcase OpcodeAtomicI64Store16:\n\t\t\t\tif 1<<align > 16/8 {\n\t\t\t\t\treturn fmt.Errorf(\"invalid memory alignment\")\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI64); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\tcase OpcodeAtomicI64Store32:\n\t\t\t\tif 1<<align > 32/8 {\n\t\t\t\t\treturn fmt.Errorf(\"invalid memory alignment\")\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI64); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\tcase OpcodeAtomicI32RmwAdd, OpcodeAtomicI32RmwSub, OpcodeAtomicI32RmwAnd, OpcodeAtomicI32RmwOr, OpcodeAtomicI32RmwXor, OpcodeAtomicI32RmwXchg:\n\t\t\t\tif 1<<align > 32/8 {\n\t\t\t\t\treturn fmt.Errorf(\"invalid memory alignment\")\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeI32)\n\t\t\tcase OpcodeAtomicI32Rmw8AddU, OpcodeAtomicI32Rmw8SubU, OpcodeAtomicI32Rmw8AndU, OpcodeAtomicI32Rmw8OrU, OpcodeAtomicI32Rmw8XorU, OpcodeAtomicI32Rmw8XchgU:\n\t\t\t\tif 1<<align > 1 {\n\t\t\t\t\treturn fmt.Errorf(\"invalid memory alignment\")\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeI32)\n\t\t\tcase OpcodeAtomicI32Rmw16AddU, OpcodeAtomicI32Rmw16SubU, OpcodeAtomicI32Rmw16AndU, OpcodeAtomicI32Rmw16OrU, OpcodeAtomicI32Rmw16XorU, OpcodeAtomicI32Rmw16XchgU:\n\t\t\t\tif 1<<align > 16/8 {\n\t\t\t\t\treturn fmt.Errorf(\"invalid memory alignment\")\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeI32)\n\t\t\tcase OpcodeAtomicI64RmwAdd, OpcodeAtomicI64RmwSub, OpcodeAtomicI64RmwAnd, OpcodeAtomicI64RmwOr, OpcodeAtomicI64RmwXor, OpcodeAtomicI64RmwXchg:\n\t\t\t\tif 1<<align > 64/8 {\n\t\t\t\t\treturn fmt.Errorf(\"invalid memory alignment\")\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI64); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeI64)\n\t\t\tcase OpcodeAtomicI64Rmw8AddU, OpcodeAtomicI64Rmw8SubU, OpcodeAtomicI64Rmw8AndU, OpcodeAtomicI64Rmw8OrU, OpcodeAtomicI64Rmw8XorU, OpcodeAtomicI64Rmw8XchgU:\n\t\t\t\tif 1<<align > 1 {\n\t\t\t\t\treturn fmt.Errorf(\"invalid memory alignment\")\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI64); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeI64)\n\t\t\tcase OpcodeAtomicI64Rmw16AddU, OpcodeAtomicI64Rmw16SubU, OpcodeAtomicI64Rmw16AndU, OpcodeAtomicI64Rmw16OrU, OpcodeAtomicI64Rmw16XorU, OpcodeAtomicI64Rmw16XchgU:\n\t\t\t\tif 1<<align > 16/8 {\n\t\t\t\t\treturn fmt.Errorf(\"invalid memory alignment\")\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI64); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeI64)\n\t\t\tcase OpcodeAtomicI64Rmw32AddU, OpcodeAtomicI64Rmw32SubU, OpcodeAtomicI64Rmw32AndU, OpcodeAtomicI64Rmw32OrU, OpcodeAtomicI64Rmw32XorU, OpcodeAtomicI64Rmw32XchgU:\n\t\t\t\tif 1<<align > 32/8 {\n\t\t\t\t\treturn fmt.Errorf(\"invalid memory alignment\")\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI64); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeI64)\n\t\t\tcase OpcodeAtomicI32RmwCmpxchg:\n\t\t\t\tif 1<<align > 32/8 {\n\t\t\t\t\treturn fmt.Errorf(\"invalid memory alignment\")\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeI32)\n\t\t\tcase OpcodeAtomicI32Rmw8CmpxchgU:\n\t\t\t\tif 1<<align > 1 {\n\t\t\t\t\treturn fmt.Errorf(\"invalid memory alignment\")\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeI32)\n\t\t\tcase OpcodeAtomicI32Rmw16CmpxchgU:\n\t\t\t\tif 1<<align > 16/8 {\n\t\t\t\t\treturn fmt.Errorf(\"invalid memory alignment\")\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeI32)\n\t\t\tcase OpcodeAtomicI64RmwCmpxchg:\n\t\t\t\tif 1<<align > 64/8 {\n\t\t\t\t\treturn fmt.Errorf(\"invalid memory alignment\")\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI64); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI64); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeI64)\n\t\t\tcase OpcodeAtomicI64Rmw8CmpxchgU:\n\t\t\t\tif 1<<align > 1 {\n\t\t\t\t\treturn fmt.Errorf(\"invalid memory alignment\")\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI64); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI64); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeI64)\n\t\t\tcase OpcodeAtomicI64Rmw16CmpxchgU:\n\t\t\t\tif 1<<align > 16/8 {\n\t\t\t\t\treturn fmt.Errorf(\"invalid memory alignment\")\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI64); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI64); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeI64)\n\t\t\tcase OpcodeAtomicI64Rmw32CmpxchgU:\n\t\t\t\tif 1<<align > 32/8 {\n\t\t\t\t\treturn fmt.Errorf(\"invalid memory alignment\")\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI64); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI64); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tvalueTypeStack.push(ValueTypeI64)\n\t\t\tdefault:\n\t\t\t\treturn fmt.Errorf(\"invalid atomic opcode: 0x%x\", atomicOpcode)\n\t\t\t}\n\t\t} else if op == OpcodeLoop {\n\t\t\tbr.Reset(body[pc+1:])\n\t\t\tbt, num, err := DecodeBlockType(m.TypeSection, br, enabledFeatures)\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"read block: %w\", err)\n\t\t\t}\n\t\t\tcontrolBlockStack.push(pc, 0, 0, bt, num, op)\n\t\t\tif err = valueTypeStack.popParams(op, bt.Params, false); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\t// Plus we have to push any block params again.\n\t\t\tfor _, p := range bt.Params {\n\t\t\t\tvalueTypeStack.push(p)\n\t\t\t}\n\t\t\tvalueTypeStack.pushStackLimit(len(bt.Params))\n\t\t\tpc += num\n\t\t} else if op == OpcodeIf {\n\t\t\tbr.Reset(body[pc+1:])\n\t\t\tbt, num, err := DecodeBlockType(m.TypeSection, br, enabledFeatures)\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"read block: %w\", err)\n\t\t\t}\n\t\t\tcontrolBlockStack.push(pc, 0, 0, bt, num, op)\n\t\t\tif err = valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\treturn fmt.Errorf(\"cannot pop the operand for 'if': %v\", err)\n\t\t\t}\n\t\t\tif err = valueTypeStack.popParams(op, bt.Params, false); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\t// Plus we have to push any block params again.\n\t\t\tfor _, p := range bt.Params {\n\t\t\t\tvalueTypeStack.push(p)\n\t\t\t}\n\t\t\tvalueTypeStack.pushStackLimit(len(bt.Params))\n\t\t\tpc += num\n\t\t} else if op == OpcodeElse {\n\t\t\tbl := &controlBlockStack.stack[len(controlBlockStack.stack)-1]\n\t\t\tif bl.op != OpcodeIf {\n\t\t\t\treturn fmt.Errorf(\"else instruction must be used in if block: %#x\", pc)\n\t\t\t}\n\t\t\tbl.op = OpcodeElse\n\t\t\tbl.elseAt = pc\n\t\t\t// Check the type soundness of the instructions *before* entering this else Op.\n\t\t\tif err := valueTypeStack.popResults(OpcodeIf, bl.blockType.Results, true); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\t// Before entering instructions inside else, we pop all the values pushed by then block.\n\t\t\tvalueTypeStack.resetAtStackLimit()\n\t\t\t// Plus we have to push any block params again.\n\t\t\tfor _, p := range bl.blockType.Params {\n\t\t\t\tvalueTypeStack.push(p)\n\t\t\t}\n\t\t} else if op == OpcodeEnd {\n\t\t\tbl := controlBlockStack.pop()\n\t\t\tbl.endAt = pc\n\n\t\t\t// OpcodeEnd can end a block or the function itself. Check to see what it is:\n\n\t\t\tifMissingElse := bl.op == OpcodeIf && bl.elseAt <= bl.startAt\n\t\t\tif ifMissingElse {\n\t\t\t\t// If this is the end of block without else, the number of block's results and params must be same.\n\t\t\t\t// Otherwise, the value stack would result in the inconsistent state at runtime.\n\t\t\t\tif !bytes.Equal(bl.blockType.Results, bl.blockType.Params) {\n\t\t\t\t\treturn typeCountError(false, OpcodeElseName, bl.blockType.Params, bl.blockType.Results)\n\t\t\t\t}\n\t\t\t\t// -1 skips else, to handle if block without else properly.\n\t\t\t\tbl.elseAt = bl.endAt - 1\n\t\t\t}\n\n\t\t\t// Determine the block context\n\t\t\tctx := \"\" // the outer-most block: the function return\n\t\t\tif bl.op == OpcodeIf && !ifMissingElse && bl.elseAt > 0 {\n\t\t\t\tctx = OpcodeElseName\n\t\t\t} else if bl.op != 0 {\n\t\t\t\tctx = InstructionName(bl.op)\n\t\t\t}\n\n\t\t\t// Check return types match\n\t\t\tif err := valueTypeStack.requireStackValues(false, ctx, bl.blockType.Results, true); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\t// Put the result types at the end after resetting at the stack limit\n\t\t\t// since we might have Any type between the limit and the current top.\n\t\t\tvalueTypeStack.resetAtStackLimit()\n\t\t\tfor _, exp := range bl.blockType.Results {\n\t\t\t\tvalueTypeStack.push(exp)\n\t\t\t}\n\t\t\t// We exit if/loop/block, so reset the constraints on the stack manipulation\n\t\t\t// on values previously pushed by outer blocks.\n\t\t\tvalueTypeStack.popStackLimit()\n\t\t} else if op == OpcodeReturn {\n\t\t\t// Same formatting as OpcodeEnd on the outer-most block\n\t\t\tif err := valueTypeStack.requireStackValues(false, \"\", functionType.Results, false); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\t// return instruction is stack-polymorphic.\n\t\t\tvalueTypeStack.unreachable()\n\t\t} else if op == OpcodeDrop {\n\t\t\t_, err := valueTypeStack.pop()\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"invalid drop: %v\", err)\n\t\t\t}\n\t\t} else if op == OpcodeSelect || op == OpcodeTypedSelect {\n\t\t\tif err := valueTypeStack.popAndVerifyType(ValueTypeI32); err != nil {\n\t\t\t\treturn fmt.Errorf(\"type mismatch on 3rd select operand: %v\", err)\n\t\t\t}\n\t\t\tv1, err := valueTypeStack.pop()\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"invalid select: %v\", err)\n\t\t\t}\n\t\t\tv2, err := valueTypeStack.pop()\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"invalid select: %v\", err)\n\t\t\t}\n\n\t\t\tif op == OpcodeTypedSelect {\n\t\t\t\tif err := enabledFeatures.RequireEnabled(api.CoreFeatureReferenceTypes); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"%s is invalid as %w\", InstructionName(op), err)\n\t\t\t\t}\n\t\t\t\tpc++\n\t\t\t\tif numTypeImmeidates := body[pc]; numTypeImmeidates != 1 {\n\t\t\t\t\treturn fmt.Errorf(\"too many type immediates for %s\", InstructionName(op))\n\t\t\t\t}\n\t\t\t\tpc++\n\t\t\t\ttp := body[pc]\n\t\t\t\tif tp != ValueTypeI32 && tp != ValueTypeI64 && tp != ValueTypeF32 && tp != ValueTypeF64 &&\n\t\t\t\t\ttp != api.ValueTypeExternref && tp != ValueTypeFuncref && tp != ValueTypeV128 {\n\t\t\t\t\treturn fmt.Errorf(\"invalid type %s for %s\", ValueTypeName(tp), OpcodeTypedSelectName)\n\t\t\t\t}\n\t\t\t} else if isReferenceValueType(v1) || isReferenceValueType(v2) {\n\t\t\t\treturn fmt.Errorf(\"reference types cannot be used for non typed select instruction\")\n\t\t\t}\n\n\t\t\tif v1 != v2 && v1 != valueTypeUnknown && v2 != valueTypeUnknown {\n\t\t\t\treturn fmt.Errorf(\"type mismatch on 1st and 2nd select operands\")\n\t\t\t}\n\t\t\tif v1 == valueTypeUnknown {\n\t\t\t\tvalueTypeStack.push(v2)\n\t\t\t} else {\n\t\t\t\tvalueTypeStack.push(v1)\n\t\t\t}\n\t\t} else if op == OpcodeUnreachable {\n\t\t\t// unreachable instruction is stack-polymorphic.\n\t\t\tvalueTypeStack.unreachable()\n\t\t} else if op == OpcodeNop {\n\t\t} else {\n\t\t\treturn fmt.Errorf(\"invalid instruction 0x%x\", op)\n\t\t}\n\t}\n\n\tif len(controlBlockStack.stack) > 0 {\n\t\treturn fmt.Errorf(\"ill-nested block exists\")\n\t}\n\tif valueTypeStack.maximumStackPointer > maxStackValues {\n\t\treturn fmt.Errorf(\"function may have %d stack values, which exceeds limit %d\", valueTypeStack.maximumStackPointer, maxStackValues)\n\t}\n\treturn nil\n}\n\nvar vecExtractLanes = [...]struct {\n\tlaneCeil   byte\n\tresultType ValueType\n}{\n\tOpcodeVecI8x16ExtractLaneS: {laneCeil: 16, resultType: ValueTypeI32},\n\tOpcodeVecI8x16ExtractLaneU: {laneCeil: 16, resultType: ValueTypeI32},\n\tOpcodeVecI16x8ExtractLaneS: {laneCeil: 8, resultType: ValueTypeI32},\n\tOpcodeVecI16x8ExtractLaneU: {laneCeil: 8, resultType: ValueTypeI32},\n\tOpcodeVecI32x4ExtractLane:  {laneCeil: 4, resultType: ValueTypeI32},\n\tOpcodeVecI64x2ExtractLane:  {laneCeil: 2, resultType: ValueTypeI64},\n\tOpcodeVecF32x4ExtractLane:  {laneCeil: 4, resultType: ValueTypeF32},\n\tOpcodeVecF64x2ExtractLane:  {laneCeil: 2, resultType: ValueTypeF64},\n}\n\nvar vecReplaceLanes = [...]struct {\n\tlaneCeil  byte\n\tparamType ValueType\n}{\n\tOpcodeVecI8x16ReplaceLane: {laneCeil: 16, paramType: ValueTypeI32},\n\tOpcodeVecI16x8ReplaceLane: {laneCeil: 8, paramType: ValueTypeI32},\n\tOpcodeVecI32x4ReplaceLane: {laneCeil: 4, paramType: ValueTypeI32},\n\tOpcodeVecI64x2ReplaceLane: {laneCeil: 2, paramType: ValueTypeI64},\n\tOpcodeVecF32x4ReplaceLane: {laneCeil: 4, paramType: ValueTypeF32},\n\tOpcodeVecF64x2ReplaceLane: {laneCeil: 2, paramType: ValueTypeF64},\n}\n\nvar vecStoreLanes = [...]struct {\n\talignMax uint32\n\tlaneCeil byte\n}{\n\tOpcodeVecV128Store64Lane: {alignMax: 64 / 8, laneCeil: 128 / 64},\n\tOpcodeVecV128Store32Lane: {alignMax: 32 / 8, laneCeil: 128 / 32},\n\tOpcodeVecV128Store16Lane: {alignMax: 16 / 8, laneCeil: 128 / 16},\n\tOpcodeVecV128Store8Lane:  {alignMax: 1, laneCeil: 128 / 8},\n}\n\nvar vecLoadLanes = [...]struct {\n\talignMax uint32\n\tlaneCeil byte\n}{\n\tOpcodeVecV128Load64Lane: {alignMax: 64 / 8, laneCeil: 128 / 64},\n\tOpcodeVecV128Load32Lane: {alignMax: 32 / 8, laneCeil: 128 / 32},\n\tOpcodeVecV128Load16Lane: {alignMax: 16 / 8, laneCeil: 128 / 16},\n\tOpcodeVecV128Load8Lane:  {alignMax: 1, laneCeil: 128 / 8},\n}\n\nvar vecSplatValueTypes = [...]ValueType{\n\tOpcodeVecI8x16Splat: ValueTypeI32,\n\tOpcodeVecI16x8Splat: ValueTypeI32,\n\tOpcodeVecI32x4Splat: ValueTypeI32,\n\tOpcodeVecI64x2Splat: ValueTypeI64,\n\tOpcodeVecF32x4Splat: ValueTypeF32,\n\tOpcodeVecF64x2Splat: ValueTypeF64,\n}\n\ntype stacks struct {\n\tvs valueTypeStack\n\tcs controlBlockStack\n\t// ls is the label slice that is reused for each br_table instruction.\n\tls []uint32\n}\n\nfunc (sts *stacks) reset(functionType *FunctionType) {\n\t// Reset valueStack for reuse.\n\tsts.vs.stack = sts.vs.stack[:0]\n\tsts.vs.stackLimits = sts.vs.stackLimits[:0]\n\tsts.vs.maximumStackPointer = 0\n\tsts.cs.stack = sts.cs.stack[:0]\n\tsts.cs.stack = append(sts.cs.stack, controlBlock{blockType: functionType})\n\tsts.ls = sts.ls[:0]\n}\n\ntype controlBlockStack struct {\n\tstack []controlBlock\n}\n\nfunc (s *controlBlockStack) pop() *controlBlock {\n\ttail := len(s.stack) - 1\n\tret := &s.stack[tail]\n\ts.stack = s.stack[:tail]\n\treturn ret\n}\n\nfunc (s *controlBlockStack) push(startAt, elseAt, endAt uint64, blockType *FunctionType, blockTypeBytes uint64, op Opcode) {\n\ts.stack = append(s.stack, controlBlock{\n\t\tstartAt:        startAt,\n\t\telseAt:         elseAt,\n\t\tendAt:          endAt,\n\t\tblockType:      blockType,\n\t\tblockTypeBytes: blockTypeBytes,\n\t\top:             op,\n\t})\n}\n\ntype valueTypeStack struct {\n\tstack               []ValueType\n\tstackLimits         []int\n\tmaximumStackPointer int\n\t// requireStackValuesTmp is used in requireStackValues function to reduce the allocation.\n\trequireStackValuesTmp []ValueType\n}\n\n// Only used in the analyzeFunction below.\nconst valueTypeUnknown = ValueType(0xFF)\n\nfunc (s *valueTypeStack) tryPop() (vt ValueType, limit int, ok bool) {\n\tif len(s.stackLimits) > 0 {\n\t\tlimit = s.stackLimits[len(s.stackLimits)-1]\n\t}\n\tstackLen := len(s.stack)\n\tif stackLen <= limit {\n\t\treturn\n\t} else if stackLen == limit+1 && s.stack[limit] == valueTypeUnknown {\n\t\tvt = valueTypeUnknown\n\t\tok = true\n\t\treturn\n\t} else {\n\t\tvt = s.stack[stackLen-1]\n\t\ts.stack = s.stack[:stackLen-1]\n\t\tok = true\n\t\treturn\n\t}\n}\n\nfunc (s *valueTypeStack) pop() (ValueType, error) {\n\tif vt, limit, ok := s.tryPop(); ok {\n\t\treturn vt, nil\n\t} else {\n\t\treturn 0, fmt.Errorf(\"invalid operation: trying to pop at %d with limit %d\", len(s.stack), limit)\n\t}\n}\n\n// popAndVerifyType returns an error if the stack value is unexpected.\nfunc (s *valueTypeStack) popAndVerifyType(expected ValueType) error {\n\thave, _, ok := s.tryPop()\n\tif !ok {\n\t\treturn fmt.Errorf(\"%s missing\", ValueTypeName(expected))\n\t}\n\tif have != expected && have != valueTypeUnknown && expected != valueTypeUnknown {\n\t\treturn fmt.Errorf(\"type mismatch: expected %s, but was %s\", ValueTypeName(expected), ValueTypeName(have))\n\t}\n\treturn nil\n}\n\nfunc (s *valueTypeStack) push(v ValueType) {\n\ts.stack = append(s.stack, v)\n\tif sp := len(s.stack); sp > s.maximumStackPointer {\n\t\ts.maximumStackPointer = sp\n\t}\n}\n\nfunc (s *valueTypeStack) unreachable() {\n\ts.resetAtStackLimit()\n\ts.stack = append(s.stack, valueTypeUnknown)\n}\n\nfunc (s *valueTypeStack) resetAtStackLimit() {\n\tif len(s.stackLimits) != 0 {\n\t\ts.stack = s.stack[:s.stackLimits[len(s.stackLimits)-1]]\n\t} else {\n\t\ts.stack = s.stack[:0]\n\t}\n}\n\nfunc (s *valueTypeStack) popStackLimit() {\n\tif len(s.stackLimits) != 0 {\n\t\ts.stackLimits = s.stackLimits[:len(s.stackLimits)-1]\n\t}\n}\n\n// pushStackLimit pushes the control frame's bottom of the stack.\nfunc (s *valueTypeStack) pushStackLimit(params int) {\n\tlimit := len(s.stack) - params\n\ts.stackLimits = append(s.stackLimits, limit)\n}\n\nfunc (s *valueTypeStack) popParams(oc Opcode, want []ValueType, checkAboveLimit bool) error {\n\treturn s.requireStackValues(true, InstructionName(oc), want, checkAboveLimit)\n}\n\nfunc (s *valueTypeStack) popResults(oc Opcode, want []ValueType, checkAboveLimit bool) error {\n\treturn s.requireStackValues(false, InstructionName(oc), want, checkAboveLimit)\n}\n\nfunc (s *valueTypeStack) requireStackValues(\n\tisParam bool,\n\tcontext string,\n\twant []ValueType,\n\tcheckAboveLimit bool,\n) error {\n\tlimit := 0\n\tif len(s.stackLimits) > 0 {\n\t\tlimit = s.stackLimits[len(s.stackLimits)-1]\n\t}\n\t// Iterate backwards as we are comparing the desired slice against stack value types.\n\tcountWanted := len(want)\n\n\t// First, check if there are enough values on the stack.\n\ts.requireStackValuesTmp = s.requireStackValuesTmp[:0]\n\tfor i := countWanted - 1; i >= 0; i-- {\n\t\tpopped, _, ok := s.tryPop()\n\t\tif !ok {\n\t\t\tif len(s.requireStackValuesTmp) > len(want) {\n\t\t\t\treturn typeCountError(isParam, context, s.requireStackValuesTmp, want)\n\t\t\t}\n\t\t\treturn typeCountError(isParam, context, s.requireStackValuesTmp, want)\n\t\t}\n\t\ts.requireStackValuesTmp = append(s.requireStackValuesTmp, popped)\n\t}\n\n\t// Now, check if there are too many values.\n\tif checkAboveLimit {\n\t\tif !(limit == len(s.stack) || (limit+1 == len(s.stack) && s.stack[limit] == valueTypeUnknown)) {\n\t\t\treturn typeCountError(isParam, context, append(s.stack, want...), want)\n\t\t}\n\t}\n\n\t// Finally, check the types of the values:\n\tfor i, v := range s.requireStackValuesTmp {\n\t\tnextWant := want[countWanted-i-1] // have is in reverse order (stack)\n\t\tif v != nextWant && v != valueTypeUnknown && nextWant != valueTypeUnknown {\n\t\t\treturn typeMismatchError(isParam, context, v, nextWant, i)\n\t\t}\n\t}\n\treturn nil\n}\n\n// typeMismatchError returns an error similar to go compiler's error on type mismatch.\nfunc typeMismatchError(isParam bool, context string, have ValueType, want ValueType, i int) error {\n\tvar ret strings.Builder\n\tret.WriteString(\"cannot use \")\n\tret.WriteString(ValueTypeName(have))\n\tif context != \"\" {\n\t\tret.WriteString(\" in \")\n\t\tret.WriteString(context)\n\t\tret.WriteString(\" block\")\n\t}\n\tif isParam {\n\t\tret.WriteString(\" as param\")\n\t} else {\n\t\tret.WriteString(\" as result\")\n\t}\n\tret.WriteString(\"[\")\n\tret.WriteString(strconv.Itoa(i))\n\tret.WriteString(\"] type \")\n\tret.WriteString(ValueTypeName(want))\n\treturn errors.New(ret.String())\n}\n\n// typeCountError returns an error similar to go compiler's error on type count mismatch.\nfunc typeCountError(isParam bool, context string, have []ValueType, want []ValueType) error {\n\tvar ret strings.Builder\n\tif len(have) > len(want) {\n\t\tret.WriteString(\"too many \")\n\t} else {\n\t\tret.WriteString(\"not enough \")\n\t}\n\tif isParam {\n\t\tret.WriteString(\"params\")\n\t} else {\n\t\tret.WriteString(\"results\")\n\t}\n\tif context != \"\" {\n\t\tif isParam {\n\t\t\tret.WriteString(\" for \")\n\t\t} else {\n\t\t\tret.WriteString(\" in \")\n\t\t}\n\t\tret.WriteString(context)\n\t\tret.WriteString(\" block\")\n\t}\n\tret.WriteString(\"\\n\\thave (\")\n\twriteValueTypes(have, &ret)\n\tret.WriteString(\")\\n\\twant (\")\n\twriteValueTypes(want, &ret)\n\tret.WriteByte(')')\n\treturn errors.New(ret.String())\n}\n\nfunc writeValueTypes(vts []ValueType, ret *strings.Builder) {\n\tswitch len(vts) {\n\tcase 0:\n\tcase 1:\n\t\tret.WriteString(ValueTypeName(vts[0]))\n\tdefault:\n\t\tret.WriteString(ValueTypeName(vts[0]))\n\t\tfor _, vt := range vts[1:] {\n\t\t\tret.WriteString(\", \")\n\t\t\tret.WriteString(ValueTypeName(vt))\n\t\t}\n\t}\n}\n\nfunc (s *valueTypeStack) String() string {\n\tvar typeStrs, limits []string\n\tfor _, v := range s.stack {\n\t\tvar str string\n\t\tif v == valueTypeUnknown {\n\t\t\tstr = \"unknown\"\n\t\t} else {\n\t\t\tstr = ValueTypeName(v)\n\t\t}\n\t\ttypeStrs = append(typeStrs, str)\n\t}\n\tfor _, d := range s.stackLimits {\n\t\tlimits = append(limits, fmt.Sprintf(\"%d\", d))\n\t}\n\treturn fmt.Sprintf(\"{stack: [%s], limits: [%s]}\",\n\t\tstrings.Join(typeStrs, \", \"), strings.Join(limits, \",\"))\n}\n\ntype controlBlock struct {\n\tstartAt, elseAt, endAt uint64\n\tblockType              *FunctionType\n\tblockTypeBytes         uint64\n\t// op is zero when the outermost block\n\top Opcode\n}\n\n// DecodeBlockType decodes the type index from a positive 33-bit signed integer. Negative numbers indicate up to one\n// WebAssembly 1.0 (20191205) compatible result type. Positive numbers are decoded when `enabledFeatures` include\n// CoreFeatureMultiValue and include an index in the Module.TypeSection.\n//\n// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#binary-blocktype\n// See https://github.com/WebAssembly/spec/blob/wg-2.0.draft1/proposals/multi-value/Overview.md\nfunc DecodeBlockType(types []FunctionType, r *bytes.Reader, enabledFeatures api.CoreFeatures) (*FunctionType, uint64, error) {\n\traw, num, err := leb128.DecodeInt33AsInt64(r)\n\tif err != nil {\n\t\treturn nil, 0, fmt.Errorf(\"decode int33: %w\", err)\n\t}\n\n\tvar ret *FunctionType\n\tswitch raw {\n\tcase -64: // 0x40 in original byte = nil\n\t\tret = blockType_v_v\n\tcase -1: // 0x7f in original byte = i32\n\t\tret = blockType_v_i32\n\tcase -2: // 0x7e in original byte = i64\n\t\tret = blockType_v_i64\n\tcase -3: // 0x7d in original byte = f32\n\t\tret = blockType_v_f32\n\tcase -4: // 0x7c in original byte = f64\n\t\tret = blockType_v_f64\n\tcase -5: // 0x7b in original byte = v128\n\t\tret = blockType_v_v128\n\tcase -16: // 0x70 in original byte = funcref\n\t\tret = blockType_v_funcref\n\tcase -17: // 0x6f in original byte = externref\n\t\tret = blockType_v_externref\n\tdefault:\n\t\tif err = enabledFeatures.RequireEnabled(api.CoreFeatureMultiValue); err != nil {\n\t\t\treturn nil, num, fmt.Errorf(\"block with function type return invalid as %v\", err)\n\t\t}\n\t\tif raw < 0 || (raw >= int64(len(types))) {\n\t\t\treturn nil, 0, fmt.Errorf(\"type index out of range: %d\", raw)\n\t\t}\n\t\tret = &types[raw]\n\t}\n\treturn ret, num, err\n}\n\n// These block types are defined as globals in order to avoid allocations in DecodeBlockType.\nvar (\n\tblockType_v_v         = &FunctionType{}\n\tblockType_v_i32       = &FunctionType{Results: []ValueType{ValueTypeI32}, ResultNumInUint64: 1}\n\tblockType_v_i64       = &FunctionType{Results: []ValueType{ValueTypeI64}, ResultNumInUint64: 1}\n\tblockType_v_f32       = &FunctionType{Results: []ValueType{ValueTypeF32}, ResultNumInUint64: 1}\n\tblockType_v_f64       = &FunctionType{Results: []ValueType{ValueTypeF64}, ResultNumInUint64: 1}\n\tblockType_v_v128      = &FunctionType{Results: []ValueType{ValueTypeV128}, ResultNumInUint64: 2}\n\tblockType_v_funcref   = &FunctionType{Results: []ValueType{ValueTypeFuncref}, ResultNumInUint64: 1}\n\tblockType_v_externref = &FunctionType{Results: []ValueType{ValueTypeExternref}, ResultNumInUint64: 1}\n)\n\n// SplitCallStack returns the input stack resliced to the count of params and\n// results, or errors if it isn't long enough for either.\nfunc SplitCallStack(ft *FunctionType, stack []uint64) (params []uint64, results []uint64, err error) {\n\tstackLen := len(stack)\n\tif n := ft.ParamNumInUint64; n > stackLen {\n\t\treturn nil, nil, fmt.Errorf(\"need %d params, but stack size is %d\", n, stackLen)\n\t} else if n > 0 {\n\t\tparams = stack[:n]\n\t}\n\tif n := ft.ResultNumInUint64; n > stackLen {\n\t\treturn nil, nil, fmt.Errorf(\"need %d results, but stack size is %d\", n, stackLen)\n\t} else if n > 0 {\n\t\tresults = stack[:n]\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/wasm/function_definition.go",
    "content": "package wasm\n\nimport (\n\t\"github.com/tetratelabs/wazero/api\"\n\t\"github.com/tetratelabs/wazero/internal/internalapi\"\n\t\"github.com/tetratelabs/wazero/internal/wasmdebug\"\n)\n\n// ImportedFunctions returns the definitions of each imported function.\n//\n// Note: Unlike ExportedFunctions, there is no unique constraint on imports.\nfunc (m *Module) ImportedFunctions() (ret []api.FunctionDefinition) {\n\tfor i := uint32(0); i < m.ImportFunctionCount; i++ {\n\t\tret = append(ret, m.FunctionDefinition(i))\n\t}\n\treturn\n}\n\n// ExportedFunctions returns the definitions of each exported function.\nfunc (m *Module) ExportedFunctions() map[string]api.FunctionDefinition {\n\tret := map[string]api.FunctionDefinition{}\n\tfor i := range m.ExportSection {\n\t\texp := &m.ExportSection[i]\n\t\tif exp.Type == ExternTypeFunc {\n\t\t\td := m.FunctionDefinition(exp.Index)\n\t\t\tret[exp.Name] = d\n\t\t}\n\t}\n\treturn ret\n}\n\n// FunctionDefinition returns the FunctionDefinition for the given `index`.\nfunc (m *Module) FunctionDefinition(index Index) *FunctionDefinition {\n\t// TODO: function initialization is lazy, but bulk. Make it per function.\n\tm.buildFunctionDefinitions()\n\treturn &m.FunctionDefinitionSection[index]\n}\n\n// buildFunctionDefinitions generates function metadata that can be parsed from\n// the module. This must be called after all validation.\nfunc (m *Module) buildFunctionDefinitions() {\n\tm.functionDefinitionSectionInitOnce.Do(m.buildFunctionDefinitionsOnce)\n}\n\nfunc (m *Module) buildFunctionDefinitionsOnce() {\n\tvar moduleName string\n\tvar functionNames NameMap\n\tvar localNames, resultNames IndirectNameMap\n\tif m.NameSection != nil {\n\t\tmoduleName = m.NameSection.ModuleName\n\t\tfunctionNames = m.NameSection.FunctionNames\n\t\tlocalNames = m.NameSection.LocalNames\n\t\tresultNames = m.NameSection.ResultNames\n\t}\n\n\timportCount := m.ImportFunctionCount\n\tm.FunctionDefinitionSection = make([]FunctionDefinition, importCount+uint32(len(m.FunctionSection)))\n\n\timportFuncIdx := Index(0)\n\tfor i := range m.ImportSection {\n\t\timp := &m.ImportSection[i]\n\t\tif imp.Type != ExternTypeFunc {\n\t\t\tcontinue\n\t\t}\n\n\t\tdef := &m.FunctionDefinitionSection[importFuncIdx]\n\t\tdef.importDesc = imp\n\t\tdef.index = importFuncIdx\n\t\tdef.Functype = &m.TypeSection[imp.DescFunc]\n\t\timportFuncIdx++\n\t}\n\n\tfor codeIndex, typeIndex := range m.FunctionSection {\n\t\tcode := &m.CodeSection[codeIndex]\n\t\tidx := importFuncIdx + Index(codeIndex)\n\t\tdef := &m.FunctionDefinitionSection[idx]\n\t\tdef.index = idx\n\t\tdef.Functype = &m.TypeSection[typeIndex]\n\t\tdef.goFunc = code.GoFunc\n\t}\n\n\tn, nLen := 0, len(functionNames)\n\tfor i := range m.FunctionDefinitionSection {\n\t\td := &m.FunctionDefinitionSection[i]\n\t\t// The function name section begins with imports, but can be sparse.\n\t\t// This keeps track of how far in the name section we've searched.\n\t\tfuncIdx := d.index\n\t\tvar funcName string\n\t\tfor ; n < nLen; n++ {\n\t\t\tnext := &functionNames[n]\n\t\t\tif next.Index > funcIdx {\n\t\t\t\tbreak // we have function names, but starting at a later index.\n\t\t\t} else if next.Index == funcIdx {\n\t\t\t\tfuncName = next.Name\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\t\td.moduleName = moduleName\n\t\td.name = funcName\n\t\td.Debugname = wasmdebug.FuncName(moduleName, funcName, funcIdx)\n\t\td.paramNames = paramNames(localNames, funcIdx, len(d.Functype.Params))\n\t\td.resultNames = paramNames(resultNames, funcIdx, len(d.Functype.Results))\n\n\t\tfor i := range m.ExportSection {\n\t\t\te := &m.ExportSection[i]\n\t\t\tif e.Type == ExternTypeFunc && e.Index == funcIdx {\n\t\t\t\td.exportNames = append(d.exportNames, e.Name)\n\t\t\t}\n\t\t}\n\t}\n}\n\n// FunctionDefinition implements api.FunctionDefinition\ntype FunctionDefinition struct {\n\tinternalapi.WazeroOnlyType\n\tmoduleName string\n\tindex      Index\n\tname       string\n\t// Debugname is exported for testing purpose.\n\tDebugname string\n\tgoFunc    interface{}\n\t// Functype is exported for testing purpose.\n\tFunctype    *FunctionType\n\timportDesc  *Import\n\texportNames []string\n\tparamNames  []string\n\tresultNames []string\n}\n\n// ModuleName implements the same method as documented on api.FunctionDefinition.\nfunc (f *FunctionDefinition) ModuleName() string {\n\treturn f.moduleName\n}\n\n// Index implements the same method as documented on api.FunctionDefinition.\nfunc (f *FunctionDefinition) Index() uint32 {\n\treturn f.index\n}\n\n// Name implements the same method as documented on api.FunctionDefinition.\nfunc (f *FunctionDefinition) Name() string {\n\treturn f.name\n}\n\n// DebugName implements the same method as documented on api.FunctionDefinition.\nfunc (f *FunctionDefinition) DebugName() string {\n\treturn f.Debugname\n}\n\n// Import implements the same method as documented on api.FunctionDefinition.\nfunc (f *FunctionDefinition) Import() (moduleName, name string, isImport bool) {\n\tif f.importDesc != nil {\n\t\timportDesc := f.importDesc\n\t\tmoduleName, name, isImport = importDesc.Module, importDesc.Name, true\n\t}\n\treturn\n}\n\n// ExportNames implements the same method as documented on api.FunctionDefinition.\nfunc (f *FunctionDefinition) ExportNames() []string {\n\treturn f.exportNames\n}\n\n// GoFunction implements the same method as documented on api.FunctionDefinition.\nfunc (f *FunctionDefinition) GoFunction() interface{} {\n\treturn f.goFunc\n}\n\n// ParamTypes implements api.FunctionDefinition ParamTypes.\nfunc (f *FunctionDefinition) ParamTypes() []ValueType {\n\treturn f.Functype.Params\n}\n\n// ParamNames implements the same method as documented on api.FunctionDefinition.\nfunc (f *FunctionDefinition) ParamNames() []string {\n\treturn f.paramNames\n}\n\n// ResultTypes implements api.FunctionDefinition ResultTypes.\nfunc (f *FunctionDefinition) ResultTypes() []ValueType {\n\treturn f.Functype.Results\n}\n\n// ResultNames implements the same method as documented on api.FunctionDefinition.\nfunc (f *FunctionDefinition) ResultNames() []string {\n\treturn f.resultNames\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/wasm/global.go",
    "content": "package wasm\n\nimport (\n\t\"github.com/tetratelabs/wazero/api\"\n\t\"github.com/tetratelabs/wazero/internal/internalapi\"\n)\n\n// constantGlobal wraps GlobalInstance to implement api.Global.\ntype constantGlobal struct {\n\tinternalapi.WazeroOnlyType\n\tg *GlobalInstance\n}\n\n// Type implements api.Global.\nfunc (g constantGlobal) Type() api.ValueType {\n\treturn g.g.Type.ValType\n}\n\n// Get implements api.Global.\nfunc (g constantGlobal) Get() uint64 {\n\tret, _ := g.g.Value()\n\treturn ret\n}\n\n// String implements api.Global.\nfunc (g constantGlobal) String() string {\n\treturn g.g.String()\n}\n\n// mutableGlobal extends constantGlobal to allow updates.\ntype mutableGlobal struct {\n\tinternalapi.WazeroOnlyType\n\tg *GlobalInstance\n}\n\n// Type implements api.Global.\nfunc (g mutableGlobal) Type() api.ValueType {\n\treturn g.g.Type.ValType\n}\n\n// Get implements api.Global.\nfunc (g mutableGlobal) Get() uint64 {\n\tret, _ := g.g.Value()\n\treturn ret\n}\n\n// String implements api.Global.\nfunc (g mutableGlobal) String() string {\n\treturn g.g.String()\n}\n\n// Set implements the same method as documented on api.MutableGlobal.\nfunc (g mutableGlobal) Set(v uint64) {\n\tg.g.SetValue(v, 0)\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/wasm/gofunc.go",
    "content": "package wasm\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"math\"\n\t\"reflect\"\n\n\t\"github.com/tetratelabs/wazero/api\"\n)\n\ntype paramsKind byte\n\nconst (\n\tparamsKindNoContext paramsKind = iota\n\tparamsKindContext\n\tparamsKindContextModule\n)\n\n// Below are reflection code to get the interface type used to parse functions and set values.\n\nvar (\n\tmoduleType    = reflect.TypeOf((*api.Module)(nil)).Elem()\n\tgoContextType = reflect.TypeOf((*context.Context)(nil)).Elem()\n\terrorType     = reflect.TypeOf((*error)(nil)).Elem()\n)\n\n// compile-time check to ensure reflectGoModuleFunction implements\n// api.GoModuleFunction.\nvar _ api.GoModuleFunction = (*reflectGoModuleFunction)(nil)\n\ntype reflectGoModuleFunction struct {\n\tfn              *reflect.Value\n\tparams, results []ValueType\n}\n\n// Call implements the same method as documented on api.GoModuleFunction.\nfunc (f *reflectGoModuleFunction) Call(ctx context.Context, mod api.Module, stack []uint64) {\n\tcallGoFunc(ctx, mod, f.fn, stack)\n}\n\n// EqualTo is exposed for testing.\nfunc (f *reflectGoModuleFunction) EqualTo(that interface{}) bool {\n\tif f2, ok := that.(*reflectGoModuleFunction); !ok {\n\t\treturn false\n\t} else {\n\t\t// TODO compare reflect pointers\n\t\treturn bytes.Equal(f.params, f2.params) && bytes.Equal(f.results, f2.results)\n\t}\n}\n\n// compile-time check to ensure reflectGoFunction implements api.GoFunction.\nvar _ api.GoFunction = (*reflectGoFunction)(nil)\n\ntype reflectGoFunction struct {\n\tfn              *reflect.Value\n\tpk              paramsKind\n\tparams, results []ValueType\n}\n\n// EqualTo is exposed for testing.\nfunc (f *reflectGoFunction) EqualTo(that interface{}) bool {\n\tif f2, ok := that.(*reflectGoFunction); !ok {\n\t\treturn false\n\t} else {\n\t\t// TODO compare reflect pointers\n\t\treturn f.pk == f2.pk &&\n\t\t\tbytes.Equal(f.params, f2.params) && bytes.Equal(f.results, f2.results)\n\t}\n}\n\n// Call implements the same method as documented on api.GoFunction.\nfunc (f *reflectGoFunction) Call(ctx context.Context, stack []uint64) {\n\tif f.pk == paramsKindNoContext {\n\t\tctx = nil\n\t}\n\tcallGoFunc(ctx, nil, f.fn, stack)\n}\n\n// callGoFunc executes the reflective function by converting params to Go\n// types. The results of the function call are converted back to api.ValueType.\nfunc callGoFunc(ctx context.Context, mod api.Module, fn *reflect.Value, stack []uint64) {\n\ttp := fn.Type()\n\n\tvar in []reflect.Value\n\tpLen := tp.NumIn()\n\tif pLen != 0 {\n\t\tin = make([]reflect.Value, pLen)\n\n\t\ti := 0\n\t\tif ctx != nil {\n\t\t\tin[0] = newContextVal(ctx)\n\t\t\ti++\n\t\t}\n\t\tif mod != nil {\n\t\t\tin[1] = newModuleVal(mod)\n\t\t\ti++\n\t\t}\n\n\t\tfor j := 0; i < pLen; i++ {\n\t\t\tnext := tp.In(i)\n\t\t\tval := reflect.New(next).Elem()\n\t\t\tk := next.Kind()\n\t\t\traw := stack[j]\n\t\t\tj++\n\n\t\t\tswitch k {\n\t\t\tcase reflect.Float32:\n\t\t\t\tval.SetFloat(float64(math.Float32frombits(uint32(raw))))\n\t\t\tcase reflect.Float64:\n\t\t\t\tval.SetFloat(math.Float64frombits(raw))\n\t\t\tcase reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\t\t\tval.SetUint(raw)\n\t\t\tcase reflect.Int32, reflect.Int64:\n\t\t\t\tval.SetInt(int64(raw))\n\t\t\tdefault:\n\t\t\t\tpanic(fmt.Errorf(\"BUG: param[%d] has an invalid type: %v\", i, k))\n\t\t\t}\n\t\t\tin[i] = val\n\t\t}\n\t}\n\n\t// Execute the host function and push back the call result onto the stack.\n\tfor i, ret := range fn.Call(in) {\n\t\tswitch ret.Kind() {\n\t\tcase reflect.Float32:\n\t\t\tstack[i] = uint64(math.Float32bits(float32(ret.Float())))\n\t\tcase reflect.Float64:\n\t\t\tstack[i] = math.Float64bits(ret.Float())\n\t\tcase reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\t\tstack[i] = ret.Uint()\n\t\tcase reflect.Int32, reflect.Int64:\n\t\t\tstack[i] = uint64(ret.Int())\n\t\tdefault:\n\t\t\tpanic(fmt.Errorf(\"BUG: result[%d] has an invalid type: %v\", i, ret.Kind()))\n\t\t}\n\t}\n}\n\nfunc newContextVal(ctx context.Context) reflect.Value {\n\tval := reflect.New(goContextType).Elem()\n\tval.Set(reflect.ValueOf(ctx))\n\treturn val\n}\n\nfunc newModuleVal(m api.Module) reflect.Value {\n\tval := reflect.New(moduleType).Elem()\n\tval.Set(reflect.ValueOf(m))\n\treturn val\n}\n\n// MustParseGoReflectFuncCode parses Code from the go function or panics.\n//\n// Exposing this simplifies FunctionDefinition of host functions in built-in host\n// modules and tests.\nfunc MustParseGoReflectFuncCode(fn interface{}) Code {\n\t_, _, code, err := parseGoReflectFunc(fn)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn code\n}\n\nfunc parseGoReflectFunc(fn interface{}) (params, results []ValueType, code Code, err error) {\n\tfnV := reflect.ValueOf(fn)\n\tp := fnV.Type()\n\n\tif fnV.Kind() != reflect.Func {\n\t\terr = fmt.Errorf(\"kind != func: %s\", fnV.Kind().String())\n\t\treturn\n\t}\n\n\tpk, kindErr := kind(p)\n\tif kindErr != nil {\n\t\terr = kindErr\n\t\treturn\n\t}\n\n\tpOffset := 0\n\tswitch pk {\n\tcase paramsKindNoContext:\n\tcase paramsKindContext:\n\t\tpOffset = 1\n\tcase paramsKindContextModule:\n\t\tpOffset = 2\n\t}\n\n\tpCount := p.NumIn() - pOffset\n\tif pCount > 0 {\n\t\tparams = make([]ValueType, pCount)\n\t}\n\tfor i := 0; i < len(params); i++ {\n\t\tpI := p.In(i + pOffset)\n\t\tif t, ok := getTypeOf(pI.Kind()); ok {\n\t\t\tparams[i] = t\n\t\t\tcontinue\n\t\t}\n\n\t\t// Now, we will definitely err, decide which message is best\n\t\tvar arg0Type reflect.Type\n\t\tif hc := pI.Implements(moduleType); hc {\n\t\t\targ0Type = moduleType\n\t\t} else if gc := pI.Implements(goContextType); gc {\n\t\t\targ0Type = goContextType\n\t\t}\n\n\t\tif arg0Type != nil {\n\t\t\terr = fmt.Errorf(\"param[%d] is a %s, which may be defined only once as param[0]\", i+pOffset, arg0Type)\n\t\t} else {\n\t\t\terr = fmt.Errorf(\"param[%d] is unsupported: %s\", i+pOffset, pI.Kind())\n\t\t}\n\t\treturn\n\t}\n\n\trCount := p.NumOut()\n\tif rCount > 0 {\n\t\tresults = make([]ValueType, rCount)\n\t}\n\tfor i := 0; i < len(results); i++ {\n\t\trI := p.Out(i)\n\t\tif t, ok := getTypeOf(rI.Kind()); ok {\n\t\t\tresults[i] = t\n\t\t\tcontinue\n\t\t}\n\n\t\t// Now, we will definitely err, decide which message is best\n\t\tif rI.Implements(errorType) {\n\t\t\terr = fmt.Errorf(\"result[%d] is an error, which is unsupported\", i)\n\t\t} else {\n\t\t\terr = fmt.Errorf(\"result[%d] is unsupported: %s\", i, rI.Kind())\n\t\t}\n\t\treturn\n\t}\n\n\tcode = Code{}\n\tif pk == paramsKindContextModule {\n\t\tcode.GoFunc = &reflectGoModuleFunction{fn: &fnV, params: params, results: results}\n\t} else {\n\t\tcode.GoFunc = &reflectGoFunction{pk: pk, fn: &fnV, params: params, results: results}\n\t}\n\treturn\n}\n\nfunc kind(p reflect.Type) (paramsKind, error) {\n\tpCount := p.NumIn()\n\tif pCount > 0 && p.In(0).Kind() == reflect.Interface {\n\t\tp0 := p.In(0)\n\t\tif p0.Implements(moduleType) {\n\t\t\treturn 0, errors.New(\"invalid signature: api.Module parameter must be preceded by context.Context\")\n\t\t} else if p0.Implements(goContextType) {\n\t\t\tif pCount >= 2 && p.In(1).Implements(moduleType) {\n\t\t\t\treturn paramsKindContextModule, nil\n\t\t\t}\n\t\t\treturn paramsKindContext, nil\n\t\t}\n\t}\n\t// Without context param allows portability with reflective runtimes.\n\t// This allows people to more easily port to wazero.\n\treturn paramsKindNoContext, nil\n}\n\nfunc getTypeOf(kind reflect.Kind) (ValueType, bool) {\n\tswitch kind {\n\tcase reflect.Float64:\n\t\treturn ValueTypeF64, true\n\tcase reflect.Float32:\n\t\treturn ValueTypeF32, true\n\tcase reflect.Int32, reflect.Uint32:\n\t\treturn ValueTypeI32, true\n\tcase reflect.Int64, reflect.Uint64:\n\t\treturn ValueTypeI64, true\n\tcase reflect.Uintptr:\n\t\treturn ValueTypeExternref, true\n\tdefault:\n\t\treturn 0x00, false\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/wasm/host.go",
    "content": "package wasm\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\n\t\"github.com/tetratelabs/wazero/api\"\n\t\"github.com/tetratelabs/wazero/internal/wasmdebug\"\n)\n\ntype HostFuncExporter interface {\n\tExportHostFunc(*HostFunc)\n}\n\n// HostFunc is a function with an inlined type, used for NewHostModule.\n// Any corresponding FunctionType will be reused or added to the Module.\ntype HostFunc struct {\n\t// ExportName is the only value returned by api.FunctionDefinition.\n\tExportName string\n\n\t// Name is equivalent to the same method on api.FunctionDefinition.\n\tName string\n\n\t// ParamTypes is equivalent to the same method on api.FunctionDefinition.\n\tParamTypes []ValueType\n\n\t// ParamNames is equivalent to the same method on api.FunctionDefinition.\n\tParamNames []string\n\n\t// ResultTypes is equivalent to the same method on api.FunctionDefinition.\n\tResultTypes []ValueType\n\n\t// ResultNames is equivalent to the same method on api.FunctionDefinition.\n\tResultNames []string\n\n\t// Code is the equivalent function in the SectionIDCode.\n\tCode Code\n}\n\n// WithGoModuleFunc returns a copy of the function, replacing its Code.GoFunc.\nfunc (f *HostFunc) WithGoModuleFunc(fn api.GoModuleFunc) *HostFunc {\n\tret := *f\n\tret.Code.GoFunc = fn\n\treturn &ret\n}\n\n// NewHostModule is defined internally for use in WASI tests and to keep the code size in the root directory small.\nfunc NewHostModule(\n\tmoduleName string,\n\texportNames []string,\n\tnameToHostFunc map[string]*HostFunc,\n\tenabledFeatures api.CoreFeatures,\n) (m *Module, err error) {\n\tif moduleName != \"\" {\n\t\tm = &Module{NameSection: &NameSection{ModuleName: moduleName}}\n\t} else {\n\t\treturn nil, errors.New(\"a module name must not be empty\")\n\t}\n\n\tif exportCount := uint32(len(nameToHostFunc)); exportCount > 0 {\n\t\tm.ExportSection = make([]Export, 0, exportCount)\n\t\tm.Exports = make(map[string]*Export, exportCount)\n\t\tif err = addFuncs(m, exportNames, nameToHostFunc, enabledFeatures); err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\n\tm.IsHostModule = true\n\t// Uses the address of *wasm.Module as the module ID so that host functions can have each state per compilation.\n\t// Downside of this is that compilation cache on host functions (trampoline codes for Go functions and\n\t// Wasm codes for Wasm-implemented host functions) are not available and compiles each time. On the other hand,\n\t// compilation of host modules is not costly as it's merely small trampolines vs the real-world native Wasm binary.\n\t// TODO: refactor engines so that we can properly cache compiled machine codes for host modules.\n\tm.AssignModuleID([]byte(fmt.Sprintf(\"@@@@@@@@%p\", m)), // @@@@@@@@ = any 8 bytes different from Wasm header.\n\t\tnil, false)\n\treturn\n}\n\nfunc addFuncs(\n\tm *Module,\n\texportNames []string,\n\tnameToHostFunc map[string]*HostFunc,\n\tenabledFeatures api.CoreFeatures,\n) (err error) {\n\tif m.NameSection == nil {\n\t\tm.NameSection = &NameSection{}\n\t}\n\tmoduleName := m.NameSection.ModuleName\n\n\tfor _, k := range exportNames {\n\t\thf := nameToHostFunc[k]\n\t\tif hf.Name == \"\" {\n\t\t\thf.Name = k // default name to export name\n\t\t}\n\t\tswitch hf.Code.GoFunc.(type) {\n\t\tcase api.GoModuleFunction, api.GoFunction:\n\t\t\tcontinue // already parsed\n\t\t}\n\n\t\t// Resolve the code using reflection\n\t\thf.ParamTypes, hf.ResultTypes, hf.Code, err = parseGoReflectFunc(hf.Code.GoFunc)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"func[%s.%s] %w\", moduleName, k, err)\n\t\t}\n\n\t\t// Assign names to the function, if they exist.\n\t\tparams := hf.ParamTypes\n\t\tif paramNames := hf.ParamNames; paramNames != nil {\n\t\t\tif paramNamesLen := len(paramNames); paramNamesLen != len(params) {\n\t\t\t\treturn fmt.Errorf(\"func[%s.%s] has %d params, but %d params names\", moduleName, k, paramNamesLen, len(params))\n\t\t\t}\n\t\t}\n\n\t\tresults := hf.ResultTypes\n\t\tif resultNames := hf.ResultNames; resultNames != nil {\n\t\t\tif resultNamesLen := len(resultNames); resultNamesLen != len(results) {\n\t\t\t\treturn fmt.Errorf(\"func[%s.%s] has %d results, but %d results names\", moduleName, k, resultNamesLen, len(results))\n\t\t\t}\n\t\t}\n\t}\n\n\tfuncCount := uint32(len(exportNames))\n\tm.NameSection.FunctionNames = make([]NameAssoc, 0, funcCount)\n\tm.FunctionSection = make([]Index, 0, funcCount)\n\tm.CodeSection = make([]Code, 0, funcCount)\n\n\tidx := Index(0)\n\tfor _, name := range exportNames {\n\t\thf := nameToHostFunc[name]\n\t\tdebugName := wasmdebug.FuncName(moduleName, name, idx)\n\t\ttypeIdx, typeErr := m.maybeAddType(hf.ParamTypes, hf.ResultTypes, enabledFeatures)\n\t\tif typeErr != nil {\n\t\t\treturn fmt.Errorf(\"func[%s] %v\", debugName, typeErr)\n\t\t}\n\t\tm.FunctionSection = append(m.FunctionSection, typeIdx)\n\t\tm.CodeSection = append(m.CodeSection, hf.Code)\n\n\t\texport := hf.ExportName\n\t\tm.ExportSection = append(m.ExportSection, Export{Type: ExternTypeFunc, Name: export, Index: idx})\n\t\tm.Exports[export] = &m.ExportSection[len(m.ExportSection)-1]\n\t\tm.NameSection.FunctionNames = append(m.NameSection.FunctionNames, NameAssoc{Index: idx, Name: hf.Name})\n\n\t\tif len(hf.ParamNames) > 0 {\n\t\t\tlocalNames := NameMapAssoc{Index: idx}\n\t\t\tfor i, n := range hf.ParamNames {\n\t\t\t\tlocalNames.NameMap = append(localNames.NameMap, NameAssoc{Index: Index(i), Name: n})\n\t\t\t}\n\t\t\tm.NameSection.LocalNames = append(m.NameSection.LocalNames, localNames)\n\t\t}\n\t\tif len(hf.ResultNames) > 0 {\n\t\t\tresultNames := NameMapAssoc{Index: idx}\n\t\t\tfor i, n := range hf.ResultNames {\n\t\t\t\tresultNames.NameMap = append(resultNames.NameMap, NameAssoc{Index: Index(i), Name: n})\n\t\t\t}\n\t\t\tm.NameSection.ResultNames = append(m.NameSection.ResultNames, resultNames)\n\t\t}\n\t\tidx++\n\t}\n\treturn nil\n}\n\nfunc (m *Module) maybeAddType(params, results []ValueType, enabledFeatures api.CoreFeatures) (Index, error) {\n\tif len(results) > 1 {\n\t\t// Guard >1.0 feature multi-value\n\t\tif err := enabledFeatures.RequireEnabled(api.CoreFeatureMultiValue); err != nil {\n\t\t\treturn 0, fmt.Errorf(\"multiple result types invalid as %v\", err)\n\t\t}\n\t}\n\tfor i := range m.TypeSection {\n\t\tt := &m.TypeSection[i]\n\t\tif t.EqualsSignature(params, results) {\n\t\t\treturn Index(i), nil\n\t\t}\n\t}\n\n\tresult := m.SectionElementCount(SectionIDType)\n\tm.TypeSection = append(m.TypeSection, FunctionType{Params: params, Results: results})\n\treturn result, nil\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/wasm/instruction.go",
    "content": "package wasm\n\n// Opcode is the binary Opcode of an instruction. See also InstructionName\ntype Opcode = byte\n\nconst (\n\t// OpcodeUnreachable causes an unconditional trap.\n\tOpcodeUnreachable Opcode = 0x00\n\t// OpcodeNop does nothing\n\tOpcodeNop Opcode = 0x01\n\t// OpcodeBlock brackets a sequence of instructions. A branch instruction on an if label breaks out to after its\n\t// OpcodeEnd.\n\tOpcodeBlock Opcode = 0x02\n\t// OpcodeLoop brackets a sequence of instructions. A branch instruction on a loop label will jump back to the\n\t// beginning of its block.\n\tOpcodeLoop Opcode = 0x03\n\t// OpcodeIf brackets a sequence of instructions. When the top of the stack evaluates to 1, the block is executed.\n\t// Zero jumps to the optional OpcodeElse. A branch instruction on an if label breaks out to after its OpcodeEnd.\n\tOpcodeIf Opcode = 0x04\n\t// OpcodeElse brackets a sequence of instructions enclosed by an OpcodeIf. A branch instruction on a then label\n\t// breaks out to after the OpcodeEnd on the enclosing OpcodeIf.\n\tOpcodeElse Opcode = 0x05\n\t// OpcodeEnd terminates a control instruction OpcodeBlock, OpcodeLoop or OpcodeIf.\n\tOpcodeEnd Opcode = 0x0b\n\n\t// OpcodeBr is a stack-polymorphic opcode that performs an unconditional branch. How the stack is modified depends\n\t// on whether the \"br\" is enclosed by a loop, and if CoreFeatureMultiValue is enabled.\n\t//\n\t// Here are the rules in pseudocode about how the stack is modified based on the \"br\" operand L (label):\n\t//\tif L is loop: append(L.originalStackWithoutInputs, N-values popped from the stack) where N == L.inputs\n\t//\telse: append(L.originalStackWithoutInputs, N-values popped from the stack) where N == L.results\n\t//\n\t// In WebAssembly 1.0 (20191205), N can be zero or one. When CoreFeatureMultiValue is enabled, N can be more than one,\n\t// depending on the type use of the label L.\n\t//\n\t// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#-hrefsyntax-instr-controlmathsfbrl\n\tOpcodeBr Opcode = 0x0c\n\n\tOpcodeBrIf         Opcode = 0x0d\n\tOpcodeBrTable      Opcode = 0x0e\n\tOpcodeReturn       Opcode = 0x0f\n\tOpcodeCall         Opcode = 0x10\n\tOpcodeCallIndirect Opcode = 0x11\n\n\t// parametric instructions\n\n\tOpcodeDrop        Opcode = 0x1a\n\tOpcodeSelect      Opcode = 0x1b\n\tOpcodeTypedSelect Opcode = 0x1c\n\n\t// variable instructions\n\n\tOpcodeLocalGet  Opcode = 0x20\n\tOpcodeLocalSet  Opcode = 0x21\n\tOpcodeLocalTee  Opcode = 0x22\n\tOpcodeGlobalGet Opcode = 0x23\n\tOpcodeGlobalSet Opcode = 0x24\n\n\t// Below are toggled with CoreFeatureReferenceTypes\n\n\tOpcodeTableGet Opcode = 0x25\n\tOpcodeTableSet Opcode = 0x26\n\n\t// memory instructions\n\n\tOpcodeI32Load    Opcode = 0x28\n\tOpcodeI64Load    Opcode = 0x29\n\tOpcodeF32Load    Opcode = 0x2a\n\tOpcodeF64Load    Opcode = 0x2b\n\tOpcodeI32Load8S  Opcode = 0x2c\n\tOpcodeI32Load8U  Opcode = 0x2d\n\tOpcodeI32Load16S Opcode = 0x2e\n\tOpcodeI32Load16U Opcode = 0x2f\n\tOpcodeI64Load8S  Opcode = 0x30\n\tOpcodeI64Load8U  Opcode = 0x31\n\tOpcodeI64Load16S Opcode = 0x32\n\tOpcodeI64Load16U Opcode = 0x33\n\tOpcodeI64Load32S Opcode = 0x34\n\tOpcodeI64Load32U Opcode = 0x35\n\tOpcodeI32Store   Opcode = 0x36\n\tOpcodeI64Store   Opcode = 0x37\n\tOpcodeF32Store   Opcode = 0x38\n\tOpcodeF64Store   Opcode = 0x39\n\tOpcodeI32Store8  Opcode = 0x3a\n\tOpcodeI32Store16 Opcode = 0x3b\n\tOpcodeI64Store8  Opcode = 0x3c\n\tOpcodeI64Store16 Opcode = 0x3d\n\tOpcodeI64Store32 Opcode = 0x3e\n\tOpcodeMemorySize Opcode = 0x3f\n\tOpcodeMemoryGrow Opcode = 0x40\n\n\t// const instructions\n\n\tOpcodeI32Const Opcode = 0x41\n\tOpcodeI64Const Opcode = 0x42\n\tOpcodeF32Const Opcode = 0x43\n\tOpcodeF64Const Opcode = 0x44\n\n\t// numeric instructions\n\n\tOpcodeI32Eqz Opcode = 0x45\n\tOpcodeI32Eq  Opcode = 0x46\n\tOpcodeI32Ne  Opcode = 0x47\n\tOpcodeI32LtS Opcode = 0x48\n\tOpcodeI32LtU Opcode = 0x49\n\tOpcodeI32GtS Opcode = 0x4a\n\tOpcodeI32GtU Opcode = 0x4b\n\tOpcodeI32LeS Opcode = 0x4c\n\tOpcodeI32LeU Opcode = 0x4d\n\tOpcodeI32GeS Opcode = 0x4e\n\tOpcodeI32GeU Opcode = 0x4f\n\n\tOpcodeI64Eqz Opcode = 0x50\n\tOpcodeI64Eq  Opcode = 0x51\n\tOpcodeI64Ne  Opcode = 0x52\n\tOpcodeI64LtS Opcode = 0x53\n\tOpcodeI64LtU Opcode = 0x54\n\tOpcodeI64GtS Opcode = 0x55\n\tOpcodeI64GtU Opcode = 0x56\n\tOpcodeI64LeS Opcode = 0x57\n\tOpcodeI64LeU Opcode = 0x58\n\tOpcodeI64GeS Opcode = 0x59\n\tOpcodeI64GeU Opcode = 0x5a\n\n\tOpcodeF32Eq Opcode = 0x5b\n\tOpcodeF32Ne Opcode = 0x5c\n\tOpcodeF32Lt Opcode = 0x5d\n\tOpcodeF32Gt Opcode = 0x5e\n\tOpcodeF32Le Opcode = 0x5f\n\tOpcodeF32Ge Opcode = 0x60\n\n\tOpcodeF64Eq Opcode = 0x61\n\tOpcodeF64Ne Opcode = 0x62\n\tOpcodeF64Lt Opcode = 0x63\n\tOpcodeF64Gt Opcode = 0x64\n\tOpcodeF64Le Opcode = 0x65\n\tOpcodeF64Ge Opcode = 0x66\n\n\tOpcodeI32Clz    Opcode = 0x67\n\tOpcodeI32Ctz    Opcode = 0x68\n\tOpcodeI32Popcnt Opcode = 0x69\n\tOpcodeI32Add    Opcode = 0x6a\n\tOpcodeI32Sub    Opcode = 0x6b\n\tOpcodeI32Mul    Opcode = 0x6c\n\tOpcodeI32DivS   Opcode = 0x6d\n\tOpcodeI32DivU   Opcode = 0x6e\n\tOpcodeI32RemS   Opcode = 0x6f\n\tOpcodeI32RemU   Opcode = 0x70\n\tOpcodeI32And    Opcode = 0x71\n\tOpcodeI32Or     Opcode = 0x72\n\tOpcodeI32Xor    Opcode = 0x73\n\tOpcodeI32Shl    Opcode = 0x74\n\tOpcodeI32ShrS   Opcode = 0x75\n\tOpcodeI32ShrU   Opcode = 0x76\n\tOpcodeI32Rotl   Opcode = 0x77\n\tOpcodeI32Rotr   Opcode = 0x78\n\n\tOpcodeI64Clz    Opcode = 0x79\n\tOpcodeI64Ctz    Opcode = 0x7a\n\tOpcodeI64Popcnt Opcode = 0x7b\n\tOpcodeI64Add    Opcode = 0x7c\n\tOpcodeI64Sub    Opcode = 0x7d\n\tOpcodeI64Mul    Opcode = 0x7e\n\tOpcodeI64DivS   Opcode = 0x7f\n\tOpcodeI64DivU   Opcode = 0x80\n\tOpcodeI64RemS   Opcode = 0x81\n\tOpcodeI64RemU   Opcode = 0x82\n\tOpcodeI64And    Opcode = 0x83\n\tOpcodeI64Or     Opcode = 0x84\n\tOpcodeI64Xor    Opcode = 0x85\n\tOpcodeI64Shl    Opcode = 0x86\n\tOpcodeI64ShrS   Opcode = 0x87\n\tOpcodeI64ShrU   Opcode = 0x88\n\tOpcodeI64Rotl   Opcode = 0x89\n\tOpcodeI64Rotr   Opcode = 0x8a\n\n\tOpcodeF32Abs      Opcode = 0x8b\n\tOpcodeF32Neg      Opcode = 0x8c\n\tOpcodeF32Ceil     Opcode = 0x8d\n\tOpcodeF32Floor    Opcode = 0x8e\n\tOpcodeF32Trunc    Opcode = 0x8f\n\tOpcodeF32Nearest  Opcode = 0x90\n\tOpcodeF32Sqrt     Opcode = 0x91\n\tOpcodeF32Add      Opcode = 0x92\n\tOpcodeF32Sub      Opcode = 0x93\n\tOpcodeF32Mul      Opcode = 0x94\n\tOpcodeF32Div      Opcode = 0x95\n\tOpcodeF32Min      Opcode = 0x96\n\tOpcodeF32Max      Opcode = 0x97\n\tOpcodeF32Copysign Opcode = 0x98\n\n\tOpcodeF64Abs      Opcode = 0x99\n\tOpcodeF64Neg      Opcode = 0x9a\n\tOpcodeF64Ceil     Opcode = 0x9b\n\tOpcodeF64Floor    Opcode = 0x9c\n\tOpcodeF64Trunc    Opcode = 0x9d\n\tOpcodeF64Nearest  Opcode = 0x9e\n\tOpcodeF64Sqrt     Opcode = 0x9f\n\tOpcodeF64Add      Opcode = 0xa0\n\tOpcodeF64Sub      Opcode = 0xa1\n\tOpcodeF64Mul      Opcode = 0xa2\n\tOpcodeF64Div      Opcode = 0xa3\n\tOpcodeF64Min      Opcode = 0xa4\n\tOpcodeF64Max      Opcode = 0xa5\n\tOpcodeF64Copysign Opcode = 0xa6\n\n\tOpcodeI32WrapI64   Opcode = 0xa7\n\tOpcodeI32TruncF32S Opcode = 0xa8\n\tOpcodeI32TruncF32U Opcode = 0xa9\n\tOpcodeI32TruncF64S Opcode = 0xaa\n\tOpcodeI32TruncF64U Opcode = 0xab\n\n\tOpcodeI64ExtendI32S Opcode = 0xac\n\tOpcodeI64ExtendI32U Opcode = 0xad\n\tOpcodeI64TruncF32S  Opcode = 0xae\n\tOpcodeI64TruncF32U  Opcode = 0xaf\n\tOpcodeI64TruncF64S  Opcode = 0xb0\n\tOpcodeI64TruncF64U  Opcode = 0xb1\n\n\tOpcodeF32ConvertI32S Opcode = 0xb2\n\tOpcodeF32ConvertI32U Opcode = 0xb3\n\tOpcodeF32ConvertI64S Opcode = 0xb4\n\tOpcodeF32ConvertI64U Opcode = 0xb5\n\tOpcodeF32DemoteF64   Opcode = 0xb6\n\n\tOpcodeF64ConvertI32S Opcode = 0xb7\n\tOpcodeF64ConvertI32U Opcode = 0xb8\n\tOpcodeF64ConvertI64S Opcode = 0xb9\n\tOpcodeF64ConvertI64U Opcode = 0xba\n\tOpcodeF64PromoteF32  Opcode = 0xbb\n\n\tOpcodeI32ReinterpretF32 Opcode = 0xbc\n\tOpcodeI64ReinterpretF64 Opcode = 0xbd\n\tOpcodeF32ReinterpretI32 Opcode = 0xbe\n\tOpcodeF64ReinterpretI64 Opcode = 0xbf\n\n\t// OpcodeRefNull pushes a null reference value whose type is specified by immediate to this opcode.\n\t// This is defined in the reference-types proposal, but necessary for CoreFeatureBulkMemoryOperations as well.\n\t//\n\t// Currently only supported in the constant expression in element segments.\n\tOpcodeRefNull = 0xd0\n\t// OpcodeRefIsNull pops a reference value, and pushes 1 if it is null, 0 otherwise.\n\t// This is defined in the reference-types proposal, but necessary for CoreFeatureBulkMemoryOperations as well.\n\t//\n\t// Currently not supported.\n\tOpcodeRefIsNull = 0xd1\n\t// OpcodeRefFunc pushes a funcref value whose index equals the immediate to this opcode.\n\t// This is defined in the reference-types proposal, but necessary for CoreFeatureBulkMemoryOperations as well.\n\t//\n\t// Currently, this is only supported in the constant expression in element segments.\n\tOpcodeRefFunc = 0xd2\n\n\t// Below are toggled with CoreFeatureSignExtensionOps\n\n\t// OpcodeI32Extend8S extends a signed 8-bit integer to a 32-bit integer.\n\t// Note: This is dependent on the flag CoreFeatureSignExtensionOps\n\tOpcodeI32Extend8S Opcode = 0xc0\n\n\t// OpcodeI32Extend16S extends a signed 16-bit integer to a 32-bit integer.\n\t// Note: This is dependent on the flag CoreFeatureSignExtensionOps\n\tOpcodeI32Extend16S Opcode = 0xc1\n\n\t// OpcodeI64Extend8S extends a signed 8-bit integer to a 64-bit integer.\n\t// Note: This is dependent on the flag CoreFeatureSignExtensionOps\n\tOpcodeI64Extend8S Opcode = 0xc2\n\n\t// OpcodeI64Extend16S extends a signed 16-bit integer to a 64-bit integer.\n\t// Note: This is dependent on the flag CoreFeatureSignExtensionOps\n\tOpcodeI64Extend16S Opcode = 0xc3\n\n\t// OpcodeI64Extend32S extends a signed 32-bit integer to a 64-bit integer.\n\t// Note: This is dependent on the flag CoreFeatureSignExtensionOps\n\tOpcodeI64Extend32S Opcode = 0xc4\n\n\t// OpcodeMiscPrefix is the prefix of various multi-byte opcodes.\n\t// Introduced in CoreFeatureNonTrappingFloatToIntConversion, but used in other\n\t// features, such as CoreFeatureBulkMemoryOperations.\n\tOpcodeMiscPrefix Opcode = 0xfc\n\n\t// OpcodeVecPrefix is the prefix of all vector isntructions introduced in\n\t// CoreFeatureSIMD.\n\tOpcodeVecPrefix Opcode = 0xfd\n\n\t// OpcodeAtomicPrefix is the prefix of all atomic instructions introduced in\n\t// CoreFeatureThreads.\n\tOpcodeAtomicPrefix Opcode = 0xfe\n)\n\n// OpcodeMisc represents opcodes of the miscellaneous operations.\n// Such an operations has multi-byte encoding which is prefixed by OpcodeMiscPrefix.\ntype OpcodeMisc = byte\n\nconst (\n\t// Below are toggled with CoreFeatureNonTrappingFloatToIntConversion.\n\t// https://github.com/WebAssembly/spec/blob/ce4b6c4d47eb06098cc7ab2e81f24748da822f20/proposals/nontrapping-float-to-int-conversion/Overview.md\n\n\tOpcodeMiscI32TruncSatF32S OpcodeMisc = 0x00\n\tOpcodeMiscI32TruncSatF32U OpcodeMisc = 0x01\n\tOpcodeMiscI32TruncSatF64S OpcodeMisc = 0x02\n\tOpcodeMiscI32TruncSatF64U OpcodeMisc = 0x03\n\tOpcodeMiscI64TruncSatF32S OpcodeMisc = 0x04\n\tOpcodeMiscI64TruncSatF32U OpcodeMisc = 0x05\n\tOpcodeMiscI64TruncSatF64S OpcodeMisc = 0x06\n\tOpcodeMiscI64TruncSatF64U OpcodeMisc = 0x07\n\n\t// Below are toggled with CoreFeatureBulkMemoryOperations.\n\t// Opcodes are those new in document/core/appendix/index-instructions.rst (the commit that merged the feature).\n\t// See https://github.com/WebAssembly/spec/commit/7fa2f20a6df4cf1c114582c8cb60f5bfcdbf1be1\n\t// See https://www.w3.org/TR/2022/WD-wasm-core-2-20220419/appendix/changes.html#bulk-memory-and-table-instructions\n\n\tOpcodeMiscMemoryInit OpcodeMisc = 0x08\n\tOpcodeMiscDataDrop   OpcodeMisc = 0x09\n\tOpcodeMiscMemoryCopy OpcodeMisc = 0x0a\n\tOpcodeMiscMemoryFill OpcodeMisc = 0x0b\n\tOpcodeMiscTableInit  OpcodeMisc = 0x0c\n\tOpcodeMiscElemDrop   OpcodeMisc = 0x0d\n\tOpcodeMiscTableCopy  OpcodeMisc = 0x0e\n\n\t// Below are toggled with CoreFeatureReferenceTypes\n\n\tOpcodeMiscTableGrow OpcodeMisc = 0x0f\n\tOpcodeMiscTableSize OpcodeMisc = 0x10\n\tOpcodeMiscTableFill OpcodeMisc = 0x11\n)\n\n// OpcodeVec represents an opcode of a vector instructions which has\n// multi-byte encoding and is prefixed by OpcodeMiscPrefix.\n//\n// These opcodes are toggled with CoreFeatureSIMD.\ntype OpcodeVec = byte\n\nconst (\n\t// Loads and stores.\n\n\tOpcodeVecV128Load        OpcodeVec = 0x00\n\tOpcodeVecV128Load8x8s    OpcodeVec = 0x01\n\tOpcodeVecV128Load8x8u    OpcodeVec = 0x02\n\tOpcodeVecV128Load16x4s   OpcodeVec = 0x03\n\tOpcodeVecV128Load16x4u   OpcodeVec = 0x04\n\tOpcodeVecV128Load32x2s   OpcodeVec = 0x05\n\tOpcodeVecV128Load32x2u   OpcodeVec = 0x06\n\tOpcodeVecV128Load8Splat  OpcodeVec = 0x07\n\tOpcodeVecV128Load16Splat OpcodeVec = 0x08\n\tOpcodeVecV128Load32Splat OpcodeVec = 0x09\n\tOpcodeVecV128Load64Splat OpcodeVec = 0x0a\n\n\tOpcodeVecV128Load32zero OpcodeVec = 0x5c\n\tOpcodeVecV128Load64zero OpcodeVec = 0x5d\n\n\tOpcodeVecV128Store       OpcodeVec = 0x0b\n\tOpcodeVecV128Load8Lane   OpcodeVec = 0x54\n\tOpcodeVecV128Load16Lane  OpcodeVec = 0x55\n\tOpcodeVecV128Load32Lane  OpcodeVec = 0x56\n\tOpcodeVecV128Load64Lane  OpcodeVec = 0x57\n\tOpcodeVecV128Store8Lane  OpcodeVec = 0x58\n\tOpcodeVecV128Store16Lane OpcodeVec = 0x59\n\tOpcodeVecV128Store32Lane OpcodeVec = 0x5a\n\tOpcodeVecV128Store64Lane OpcodeVec = 0x5b\n\n\t// OpcodeVecV128Const is the vector const instruction.\n\tOpcodeVecV128Const OpcodeVec = 0x0c\n\n\t// OpcodeVecV128i8x16Shuffle is the vector shuffle instruction.\n\tOpcodeVecV128i8x16Shuffle OpcodeVec = 0x0d\n\n\t// Extrac and replaces.\n\n\tOpcodeVecI8x16ExtractLaneS OpcodeVec = 0x15\n\tOpcodeVecI8x16ExtractLaneU OpcodeVec = 0x16\n\tOpcodeVecI8x16ReplaceLane  OpcodeVec = 0x17\n\tOpcodeVecI16x8ExtractLaneS OpcodeVec = 0x18\n\tOpcodeVecI16x8ExtractLaneU OpcodeVec = 0x19\n\tOpcodeVecI16x8ReplaceLane  OpcodeVec = 0x1a\n\tOpcodeVecI32x4ExtractLane  OpcodeVec = 0x1b\n\tOpcodeVecI32x4ReplaceLane  OpcodeVec = 0x1c\n\tOpcodeVecI64x2ExtractLane  OpcodeVec = 0x1d\n\tOpcodeVecI64x2ReplaceLane  OpcodeVec = 0x1e\n\tOpcodeVecF32x4ExtractLane  OpcodeVec = 0x1f\n\tOpcodeVecF32x4ReplaceLane  OpcodeVec = 0x20\n\tOpcodeVecF64x2ExtractLane  OpcodeVec = 0x21\n\tOpcodeVecF64x2ReplaceLane  OpcodeVec = 0x22\n\n\t// Splat and swizzle.\n\n\tOpcodeVecI8x16Swizzle OpcodeVec = 0x0e\n\tOpcodeVecI8x16Splat   OpcodeVec = 0x0f\n\tOpcodeVecI16x8Splat   OpcodeVec = 0x10\n\tOpcodeVecI32x4Splat   OpcodeVec = 0x11\n\tOpcodeVecI64x2Splat   OpcodeVec = 0x12\n\tOpcodeVecF32x4Splat   OpcodeVec = 0x13\n\tOpcodeVecF64x2Splat   OpcodeVec = 0x14\n\n\t// i8 comparisons.\n\n\tOpcodeVecI8x16Eq  OpcodeVec = 0x23\n\tOpcodeVecI8x16Ne  OpcodeVec = 0x24\n\tOpcodeVecI8x16LtS OpcodeVec = 0x25\n\tOpcodeVecI8x16LtU OpcodeVec = 0x26\n\tOpcodeVecI8x16GtS OpcodeVec = 0x27\n\tOpcodeVecI8x16GtU OpcodeVec = 0x28\n\tOpcodeVecI8x16LeS OpcodeVec = 0x29\n\tOpcodeVecI8x16LeU OpcodeVec = 0x2a\n\tOpcodeVecI8x16GeS OpcodeVec = 0x2b\n\tOpcodeVecI8x16GeU OpcodeVec = 0x2c\n\n\t// i16 comparisons.\n\n\tOpcodeVecI16x8Eq  OpcodeVec = 0x2d\n\tOpcodeVecI16x8Ne  OpcodeVec = 0x2e\n\tOpcodeVecI16x8LtS OpcodeVec = 0x2f\n\tOpcodeVecI16x8LtU OpcodeVec = 0x30\n\tOpcodeVecI16x8GtS OpcodeVec = 0x31\n\tOpcodeVecI16x8GtU OpcodeVec = 0x32\n\tOpcodeVecI16x8LeS OpcodeVec = 0x33\n\tOpcodeVecI16x8LeU OpcodeVec = 0x34\n\tOpcodeVecI16x8GeS OpcodeVec = 0x35\n\tOpcodeVecI16x8GeU OpcodeVec = 0x36\n\n\t// i32 comparisons.\n\n\tOpcodeVecI32x4Eq  OpcodeVec = 0x37\n\tOpcodeVecI32x4Ne  OpcodeVec = 0x38\n\tOpcodeVecI32x4LtS OpcodeVec = 0x39\n\tOpcodeVecI32x4LtU OpcodeVec = 0x3a\n\tOpcodeVecI32x4GtS OpcodeVec = 0x3b\n\tOpcodeVecI32x4GtU OpcodeVec = 0x3c\n\tOpcodeVecI32x4LeS OpcodeVec = 0x3d\n\tOpcodeVecI32x4LeU OpcodeVec = 0x3e\n\tOpcodeVecI32x4GeS OpcodeVec = 0x3f\n\tOpcodeVecI32x4GeU OpcodeVec = 0x40\n\n\t// i64 comparisons.\n\n\tOpcodeVecI64x2Eq  OpcodeVec = 0xd6\n\tOpcodeVecI64x2Ne  OpcodeVec = 0xd7\n\tOpcodeVecI64x2LtS OpcodeVec = 0xd8\n\tOpcodeVecI64x2GtS OpcodeVec = 0xd9\n\tOpcodeVecI64x2LeS OpcodeVec = 0xda\n\tOpcodeVecI64x2GeS OpcodeVec = 0xdb\n\n\t// f32 comparisons.\n\n\tOpcodeVecF32x4Eq OpcodeVec = 0x41\n\tOpcodeVecF32x4Ne OpcodeVec = 0x42\n\tOpcodeVecF32x4Lt OpcodeVec = 0x43\n\tOpcodeVecF32x4Gt OpcodeVec = 0x44\n\tOpcodeVecF32x4Le OpcodeVec = 0x45\n\tOpcodeVecF32x4Ge OpcodeVec = 0x46\n\n\t// f64 comparisons.\n\n\tOpcodeVecF64x2Eq OpcodeVec = 0x47\n\tOpcodeVecF64x2Ne OpcodeVec = 0x48\n\tOpcodeVecF64x2Lt OpcodeVec = 0x49\n\tOpcodeVecF64x2Gt OpcodeVec = 0x4a\n\tOpcodeVecF64x2Le OpcodeVec = 0x4b\n\tOpcodeVecF64x2Ge OpcodeVec = 0x4c\n\n\t// v128 logical instructions.\n\n\tOpcodeVecV128Not       OpcodeVec = 0x4d\n\tOpcodeVecV128And       OpcodeVec = 0x4e\n\tOpcodeVecV128AndNot    OpcodeVec = 0x4f\n\tOpcodeVecV128Or        OpcodeVec = 0x50\n\tOpcodeVecV128Xor       OpcodeVec = 0x51\n\tOpcodeVecV128Bitselect OpcodeVec = 0x52\n\tOpcodeVecV128AnyTrue   OpcodeVec = 0x53\n\n\t// i8 misc.\n\n\tOpcodeVecI8x16Abs          OpcodeVec = 0x60\n\tOpcodeVecI8x16Neg          OpcodeVec = 0x61\n\tOpcodeVecI8x16Popcnt       OpcodeVec = 0x62\n\tOpcodeVecI8x16AllTrue      OpcodeVec = 0x63\n\tOpcodeVecI8x16BitMask      OpcodeVec = 0x64\n\tOpcodeVecI8x16NarrowI16x8S OpcodeVec = 0x65\n\tOpcodeVecI8x16NarrowI16x8U OpcodeVec = 0x66\n\n\tOpcodeVecI8x16Shl     OpcodeVec = 0x6b\n\tOpcodeVecI8x16ShrS    OpcodeVec = 0x6c\n\tOpcodeVecI8x16ShrU    OpcodeVec = 0x6d\n\tOpcodeVecI8x16Add     OpcodeVec = 0x6e\n\tOpcodeVecI8x16AddSatS OpcodeVec = 0x6f\n\n\tOpcodeVecI8x16AddSatU OpcodeVec = 0x70\n\tOpcodeVecI8x16Sub     OpcodeVec = 0x71\n\tOpcodeVecI8x16SubSatS OpcodeVec = 0x72\n\tOpcodeVecI8x16SubSatU OpcodeVec = 0x73\n\tOpcodeVecI8x16MinS    OpcodeVec = 0x76\n\tOpcodeVecI8x16MinU    OpcodeVec = 0x77\n\tOpcodeVecI8x16MaxS    OpcodeVec = 0x78\n\tOpcodeVecI8x16MaxU    OpcodeVec = 0x79\n\tOpcodeVecI8x16AvgrU   OpcodeVec = 0x7b\n\n\t// i16 misc.\n\n\tOpcodeVecI16x8ExtaddPairwiseI8x16S OpcodeVec = 0x7c\n\tOpcodeVecI16x8ExtaddPairwiseI8x16U OpcodeVec = 0x7d\n\tOpcodeVecI16x8Abs                  OpcodeVec = 0x80\n\tOpcodeVecI16x8Neg                  OpcodeVec = 0x81\n\tOpcodeVecI16x8Q15mulrSatS          OpcodeVec = 0x82\n\tOpcodeVecI16x8AllTrue              OpcodeVec = 0x83\n\tOpcodeVecI16x8BitMask              OpcodeVec = 0x84\n\tOpcodeVecI16x8NarrowI32x4S         OpcodeVec = 0x85\n\tOpcodeVecI16x8NarrowI32x4U         OpcodeVec = 0x86\n\tOpcodeVecI16x8ExtendLowI8x16S      OpcodeVec = 0x87\n\tOpcodeVecI16x8ExtendHighI8x16S     OpcodeVec = 0x88\n\tOpcodeVecI16x8ExtendLowI8x16U      OpcodeVec = 0x89\n\tOpcodeVecI16x8ExtendHighI8x16U     OpcodeVec = 0x8a\n\tOpcodeVecI16x8Shl                  OpcodeVec = 0x8b\n\tOpcodeVecI16x8ShrS                 OpcodeVec = 0x8c\n\tOpcodeVecI16x8ShrU                 OpcodeVec = 0x8d\n\tOpcodeVecI16x8Add                  OpcodeVec = 0x8e\n\tOpcodeVecI16x8AddSatS              OpcodeVec = 0x8f\n\tOpcodeVecI16x8AddSatU              OpcodeVec = 0x90\n\tOpcodeVecI16x8Sub                  OpcodeVec = 0x91\n\tOpcodeVecI16x8SubSatS              OpcodeVec = 0x92\n\tOpcodeVecI16x8SubSatU              OpcodeVec = 0x93\n\tOpcodeVecI16x8Mul                  OpcodeVec = 0x95\n\tOpcodeVecI16x8MinS                 OpcodeVec = 0x96\n\tOpcodeVecI16x8MinU                 OpcodeVec = 0x97\n\tOpcodeVecI16x8MaxS                 OpcodeVec = 0x98\n\tOpcodeVecI16x8MaxU                 OpcodeVec = 0x99\n\tOpcodeVecI16x8AvgrU                OpcodeVec = 0x9b\n\tOpcodeVecI16x8ExtMulLowI8x16S      OpcodeVec = 0x9c\n\tOpcodeVecI16x8ExtMulHighI8x16S     OpcodeVec = 0x9d\n\tOpcodeVecI16x8ExtMulLowI8x16U      OpcodeVec = 0x9e\n\tOpcodeVecI16x8ExtMulHighI8x16U     OpcodeVec = 0x9f\n\n\t// i32 misc.\n\n\tOpcodeVecI32x4ExtaddPairwiseI16x8S OpcodeVec = 0x7e\n\tOpcodeVecI32x4ExtaddPairwiseI16x8U OpcodeVec = 0x7f\n\tOpcodeVecI32x4Abs                  OpcodeVec = 0xa0\n\tOpcodeVecI32x4Neg                  OpcodeVec = 0xa1\n\tOpcodeVecI32x4AllTrue              OpcodeVec = 0xa3\n\tOpcodeVecI32x4BitMask              OpcodeVec = 0xa4\n\tOpcodeVecI32x4ExtendLowI16x8S      OpcodeVec = 0xa7\n\tOpcodeVecI32x4ExtendHighI16x8S     OpcodeVec = 0xa8\n\tOpcodeVecI32x4ExtendLowI16x8U      OpcodeVec = 0xa9\n\tOpcodeVecI32x4ExtendHighI16x8U     OpcodeVec = 0xaa\n\tOpcodeVecI32x4Shl                  OpcodeVec = 0xab\n\tOpcodeVecI32x4ShrS                 OpcodeVec = 0xac\n\tOpcodeVecI32x4ShrU                 OpcodeVec = 0xad\n\tOpcodeVecI32x4Add                  OpcodeVec = 0xae\n\tOpcodeVecI32x4Sub                  OpcodeVec = 0xb1\n\tOpcodeVecI32x4Mul                  OpcodeVec = 0xb5\n\tOpcodeVecI32x4MinS                 OpcodeVec = 0xb6\n\tOpcodeVecI32x4MinU                 OpcodeVec = 0xb7\n\tOpcodeVecI32x4MaxS                 OpcodeVec = 0xb8\n\tOpcodeVecI32x4MaxU                 OpcodeVec = 0xb9\n\tOpcodeVecI32x4DotI16x8S            OpcodeVec = 0xba\n\tOpcodeVecI32x4ExtMulLowI16x8S      OpcodeVec = 0xbc\n\tOpcodeVecI32x4ExtMulHighI16x8S     OpcodeVec = 0xbd\n\tOpcodeVecI32x4ExtMulLowI16x8U      OpcodeVec = 0xbe\n\tOpcodeVecI32x4ExtMulHighI16x8U     OpcodeVec = 0xbf\n\n\t// i64 misc.\n\n\tOpcodeVecI64x2Abs              OpcodeVec = 0xc0\n\tOpcodeVecI64x2Neg              OpcodeVec = 0xc1\n\tOpcodeVecI64x2AllTrue          OpcodeVec = 0xc3\n\tOpcodeVecI64x2BitMask          OpcodeVec = 0xc4\n\tOpcodeVecI64x2ExtendLowI32x4S  OpcodeVec = 0xc7\n\tOpcodeVecI64x2ExtendHighI32x4S OpcodeVec = 0xc8\n\tOpcodeVecI64x2ExtendLowI32x4U  OpcodeVec = 0xc9\n\tOpcodeVecI64x2ExtendHighI32x4U OpcodeVec = 0xca\n\tOpcodeVecI64x2Shl              OpcodeVec = 0xcb\n\tOpcodeVecI64x2ShrS             OpcodeVec = 0xcc\n\tOpcodeVecI64x2ShrU             OpcodeVec = 0xcd\n\tOpcodeVecI64x2Add              OpcodeVec = 0xce\n\tOpcodeVecI64x2Sub              OpcodeVec = 0xd1\n\tOpcodeVecI64x2Mul              OpcodeVec = 0xd5\n\tOpcodeVecI64x2ExtMulLowI32x4S  OpcodeVec = 0xdc\n\tOpcodeVecI64x2ExtMulHighI32x4S OpcodeVec = 0xdd\n\tOpcodeVecI64x2ExtMulLowI32x4U  OpcodeVec = 0xde\n\tOpcodeVecI64x2ExtMulHighI32x4U OpcodeVec = 0xdf\n\n\t// f32 misc.\n\n\tOpcodeVecF32x4Ceil    OpcodeVec = 0x67\n\tOpcodeVecF32x4Floor   OpcodeVec = 0x68\n\tOpcodeVecF32x4Trunc   OpcodeVec = 0x69\n\tOpcodeVecF32x4Nearest OpcodeVec = 0x6a\n\tOpcodeVecF32x4Abs     OpcodeVec = 0xe0\n\tOpcodeVecF32x4Neg     OpcodeVec = 0xe1\n\tOpcodeVecF32x4Sqrt    OpcodeVec = 0xe3\n\tOpcodeVecF32x4Add     OpcodeVec = 0xe4\n\tOpcodeVecF32x4Sub     OpcodeVec = 0xe5\n\tOpcodeVecF32x4Mul     OpcodeVec = 0xe6\n\tOpcodeVecF32x4Div     OpcodeVec = 0xe7\n\tOpcodeVecF32x4Min     OpcodeVec = 0xe8\n\tOpcodeVecF32x4Max     OpcodeVec = 0xe9\n\tOpcodeVecF32x4Pmin    OpcodeVec = 0xea\n\tOpcodeVecF32x4Pmax    OpcodeVec = 0xeb\n\n\t// f64 misc.\n\n\tOpcodeVecF64x2Ceil    OpcodeVec = 0x74\n\tOpcodeVecF64x2Floor   OpcodeVec = 0x75\n\tOpcodeVecF64x2Trunc   OpcodeVec = 0x7a\n\tOpcodeVecF64x2Nearest OpcodeVec = 0x94\n\tOpcodeVecF64x2Abs     OpcodeVec = 0xec\n\tOpcodeVecF64x2Neg     OpcodeVec = 0xed\n\tOpcodeVecF64x2Sqrt    OpcodeVec = 0xef\n\tOpcodeVecF64x2Add     OpcodeVec = 0xf0\n\tOpcodeVecF64x2Sub     OpcodeVec = 0xf1\n\tOpcodeVecF64x2Mul     OpcodeVec = 0xf2\n\tOpcodeVecF64x2Div     OpcodeVec = 0xf3\n\tOpcodeVecF64x2Min     OpcodeVec = 0xf4\n\tOpcodeVecF64x2Max     OpcodeVec = 0xf5\n\tOpcodeVecF64x2Pmin    OpcodeVec = 0xf6\n\tOpcodeVecF64x2Pmax    OpcodeVec = 0xf7\n\n\t// conversions.\n\n\tOpcodeVecI32x4TruncSatF32x4S      OpcodeVec = 0xf8\n\tOpcodeVecI32x4TruncSatF32x4U      OpcodeVec = 0xf9\n\tOpcodeVecF32x4ConvertI32x4S       OpcodeVec = 0xfa\n\tOpcodeVecF32x4ConvertI32x4U       OpcodeVec = 0xfb\n\tOpcodeVecI32x4TruncSatF64x2SZero  OpcodeVec = 0xfc\n\tOpcodeVecI32x4TruncSatF64x2UZero  OpcodeVec = 0xfd\n\tOpcodeVecF64x2ConvertLowI32x4S    OpcodeVec = 0xfe\n\tOpcodeVecF64x2ConvertLowI32x4U    OpcodeVec = 0xff\n\tOpcodeVecF32x4DemoteF64x2Zero     OpcodeVec = 0x5e\n\tOpcodeVecF64x2PromoteLowF32x4Zero OpcodeVec = 0x5f\n)\n\n// OpcodeAtomic represents an opcode of atomic instructions which has\n// multi-byte encoding and is prefixed by OpcodeAtomicPrefix.\n//\n// These opcodes are toggled with CoreFeaturesThreads.\ntype OpcodeAtomic = byte\n\nconst (\n\t// OpcodeAtomicMemoryNotify represents the instruction memory.atomic.notify.\n\tOpcodeAtomicMemoryNotify OpcodeAtomic = 0x00\n\t// OpcodeAtomicMemoryWait32 represents the instruction memory.atomic.wait32.\n\tOpcodeAtomicMemoryWait32 OpcodeAtomic = 0x01\n\t// OpcodeAtomicMemoryWait64 represents the instruction memory.atomic.wait64.\n\tOpcodeAtomicMemoryWait64 OpcodeAtomic = 0x02\n\t// OpcodeAtomicFence represents the instruction atomic.fence.\n\tOpcodeAtomicFence OpcodeAtomic = 0x03\n\n\t// OpcodeAtomicI32Load represents the instruction i32.atomic.load.\n\tOpcodeAtomicI32Load OpcodeAtomic = 0x10\n\t// OpcodeAtomicI64Load represents the instruction i64.atomic.load.\n\tOpcodeAtomicI64Load OpcodeAtomic = 0x11\n\t// OpcodeAtomicI32Load8U represents the instruction i32.atomic.load8_u.\n\tOpcodeAtomicI32Load8U OpcodeAtomic = 0x12\n\t// OpcodeAtomicI32Load16U represents the instruction i32.atomic.load16_u.\n\tOpcodeAtomicI32Load16U OpcodeAtomic = 0x13\n\t// OpcodeAtomicI64Load8U represents the instruction i64.atomic.load8_u.\n\tOpcodeAtomicI64Load8U OpcodeAtomic = 0x14\n\t// OpcodeAtomicI64Load16U represents the instruction i64.atomic.load16_u.\n\tOpcodeAtomicI64Load16U OpcodeAtomic = 0x15\n\t// OpcodeAtomicI64Load32U represents the instruction i64.atomic.load32_u.\n\tOpcodeAtomicI64Load32U OpcodeAtomic = 0x16\n\t// OpcodeAtomicI32Store represents the instruction i32.atomic.store.\n\tOpcodeAtomicI32Store OpcodeAtomic = 0x17\n\t// OpcodeAtomicI64Store represents the instruction i64.atomic.store.\n\tOpcodeAtomicI64Store OpcodeAtomic = 0x18\n\t// OpcodeAtomicI32Store8 represents the instruction i32.atomic.store8.\n\tOpcodeAtomicI32Store8 OpcodeAtomic = 0x19\n\t// OpcodeAtomicI32Store16 represents the instruction i32.atomic.store16.\n\tOpcodeAtomicI32Store16 OpcodeAtomic = 0x1a\n\t// OpcodeAtomicI64Store8 represents the instruction i64.atomic.store8.\n\tOpcodeAtomicI64Store8 OpcodeAtomic = 0x1b\n\t// OpcodeAtomicI64Store16 represents the instruction i64.atomic.store16.\n\tOpcodeAtomicI64Store16 OpcodeAtomic = 0x1c\n\t// OpcodeAtomicI64Store32 represents the instruction i64.atomic.store32.\n\tOpcodeAtomicI64Store32 OpcodeAtomic = 0x1d\n\n\t// OpcodeAtomicI32RmwAdd represents the instruction i32.atomic.rmw.add.\n\tOpcodeAtomicI32RmwAdd OpcodeAtomic = 0x1e\n\t// OpcodeAtomicI64RmwAdd represents the instruction i64.atomic.rmw.add.\n\tOpcodeAtomicI64RmwAdd OpcodeAtomic = 0x1f\n\t// OpcodeAtomicI32Rmw8AddU represents the instruction i32.atomic.rmw8.add_u.\n\tOpcodeAtomicI32Rmw8AddU OpcodeAtomic = 0x20\n\t// OpcodeAtomicI32Rmw16AddU represents the instruction i32.atomic.rmw16.add_u.\n\tOpcodeAtomicI32Rmw16AddU OpcodeAtomic = 0x21\n\t// OpcodeAtomicI64Rmw8AddU represents the instruction i64.atomic.rmw8.add_u.\n\tOpcodeAtomicI64Rmw8AddU OpcodeAtomic = 0x22\n\t// OpcodeAtomicI64Rmw16AddU represents the instruction i64.atomic.rmw16.add_u.\n\tOpcodeAtomicI64Rmw16AddU OpcodeAtomic = 0x23\n\t// OpcodeAtomicI64Rmw32AddU represents the instruction i64.atomic.rmw32.add_u.\n\tOpcodeAtomicI64Rmw32AddU OpcodeAtomic = 0x24\n\n\t// OpcodeAtomicI32RmwSub represents the instruction i32.atomic.rmw.sub.\n\tOpcodeAtomicI32RmwSub OpcodeAtomic = 0x25\n\t// OpcodeAtomicI64RmwSub represents the instruction i64.atomic.rmw.sub.\n\tOpcodeAtomicI64RmwSub OpcodeAtomic = 0x26\n\t// OpcodeAtomicI32Rmw8SubU represents the instruction i32.atomic.rmw8.sub_u.\n\tOpcodeAtomicI32Rmw8SubU OpcodeAtomic = 0x27\n\t// OpcodeAtomicI32Rmw16SubU represents the instruction i32.atomic.rmw16.sub_u.\n\tOpcodeAtomicI32Rmw16SubU OpcodeAtomic = 0x28\n\t// OpcodeAtomicI64Rmw8SubU represents the instruction i64.atomic.rmw8.sub_u.\n\tOpcodeAtomicI64Rmw8SubU OpcodeAtomic = 0x29\n\t// OpcodeAtomicI64Rmw16SubU represents the instruction i64.atomic.rmw16.sub_u.\n\tOpcodeAtomicI64Rmw16SubU OpcodeAtomic = 0x2a\n\t// OpcodeAtomicI64Rmw32SubU represents the instruction i64.atomic.rmw32.sub_u.\n\tOpcodeAtomicI64Rmw32SubU OpcodeAtomic = 0x2b\n\n\t// OpcodeAtomicI32RmwAnd represents the instruction i32.atomic.rmw.and.\n\tOpcodeAtomicI32RmwAnd OpcodeAtomic = 0x2c\n\t// OpcodeAtomicI64RmwAnd represents the instruction i64.atomic.rmw.and.\n\tOpcodeAtomicI64RmwAnd OpcodeAtomic = 0x2d\n\t// OpcodeAtomicI32Rmw8AndU represents the instruction i32.atomic.rmw8.and_u.\n\tOpcodeAtomicI32Rmw8AndU OpcodeAtomic = 0x2e\n\t// OpcodeAtomicI32Rmw16AndU represents the instruction i32.atomic.rmw16.and_u.\n\tOpcodeAtomicI32Rmw16AndU OpcodeAtomic = 0x2f\n\t// OpcodeAtomicI64Rmw8AndU represents the instruction i64.atomic.rmw8.and_u.\n\tOpcodeAtomicI64Rmw8AndU OpcodeAtomic = 0x30\n\t// OpcodeAtomicI64Rmw16AndU represents the instruction i64.atomic.rmw16.and_u.\n\tOpcodeAtomicI64Rmw16AndU OpcodeAtomic = 0x31\n\t// OpcodeAtomicI64Rmw32AndU represents the instruction i64.atomic.rmw32.and_u.\n\tOpcodeAtomicI64Rmw32AndU OpcodeAtomic = 0x32\n\n\t// OpcodeAtomicI32RmwOr represents the instruction i32.atomic.rmw.or.\n\tOpcodeAtomicI32RmwOr OpcodeAtomic = 0x33\n\t// OpcodeAtomicI64RmwOr represents the instruction i64.atomic.rmw.or.\n\tOpcodeAtomicI64RmwOr OpcodeAtomic = 0x34\n\t// OpcodeAtomicI32Rmw8OrU represents the instruction i32.atomic.rmw8.or_u.\n\tOpcodeAtomicI32Rmw8OrU OpcodeAtomic = 0x35\n\t// OpcodeAtomicI32Rmw16OrU represents the instruction i32.atomic.rmw16.or_u.\n\tOpcodeAtomicI32Rmw16OrU OpcodeAtomic = 0x36\n\t// OpcodeAtomicI64Rmw8OrU represents the instruction i64.atomic.rmw8.or_u.\n\tOpcodeAtomicI64Rmw8OrU OpcodeAtomic = 0x37\n\t// OpcodeAtomicI64Rmw16OrU represents the instruction i64.atomic.rmw16.or_u.\n\tOpcodeAtomicI64Rmw16OrU OpcodeAtomic = 0x38\n\t// OpcodeAtomicI64Rmw32OrU represents the instruction i64.atomic.rmw32.or_u.\n\tOpcodeAtomicI64Rmw32OrU OpcodeAtomic = 0x39\n\n\t// OpcodeAtomicI32RmwXor represents the instruction i32.atomic.rmw.xor.\n\tOpcodeAtomicI32RmwXor OpcodeAtomic = 0x3a\n\t// OpcodeAtomicI64RmwXor represents the instruction i64.atomic.rmw.xor.\n\tOpcodeAtomicI64RmwXor OpcodeAtomic = 0x3b\n\t// OpcodeAtomicI32Rmw8XorU represents the instruction i32.atomic.rmw8.xor_u.\n\tOpcodeAtomicI32Rmw8XorU OpcodeAtomic = 0x3c\n\t// OpcodeAtomicI32Rmw16XorU represents the instruction i32.atomic.rmw16.xor_u.\n\tOpcodeAtomicI32Rmw16XorU OpcodeAtomic = 0x3d\n\t// OpcodeAtomicI64Rmw8XorU represents the instruction i64.atomic.rmw8.xor_u.\n\tOpcodeAtomicI64Rmw8XorU OpcodeAtomic = 0x3e\n\t// OpcodeAtomicI64Rmw16XorU represents the instruction i64.atomic.rmw16.xor_u.\n\tOpcodeAtomicI64Rmw16XorU OpcodeAtomic = 0x3f\n\t// OpcodeAtomicI64Rmw32XorU represents the instruction i64.atomic.rmw32.xor_u.\n\tOpcodeAtomicI64Rmw32XorU OpcodeAtomic = 0x40\n\n\t// OpcodeAtomicI32RmwXchg represents the instruction i32.atomic.rmw.xchg.\n\tOpcodeAtomicI32RmwXchg OpcodeAtomic = 0x41\n\t// OpcodeAtomicI64RmwXchg represents the instruction i64.atomic.rmw.xchg.\n\tOpcodeAtomicI64RmwXchg OpcodeAtomic = 0x42\n\t// OpcodeAtomicI32Rmw8XchgU represents the instruction i32.atomic.rmw8.xchg_u.\n\tOpcodeAtomicI32Rmw8XchgU OpcodeAtomic = 0x43\n\t// OpcodeAtomicI32Rmw16XchgU represents the instruction i32.atomic.rmw16.xchg_u.\n\tOpcodeAtomicI32Rmw16XchgU OpcodeAtomic = 0x44\n\t// OpcodeAtomicI64Rmw8XchgU represents the instruction i64.atomic.rmw8.xchg_u.\n\tOpcodeAtomicI64Rmw8XchgU OpcodeAtomic = 0x45\n\t// OpcodeAtomicI64Rmw16XchgU represents the instruction i64.atomic.rmw16.xchg_u.\n\tOpcodeAtomicI64Rmw16XchgU OpcodeAtomic = 0x46\n\t// OpcodeAtomicI64Rmw32XchgU represents the instruction i64.atomic.rmw32.xchg_u.\n\tOpcodeAtomicI64Rmw32XchgU OpcodeAtomic = 0x47\n\n\t// OpcodeAtomicI32RmwCmpxchg represents the instruction i32.atomic.rmw.cmpxchg.\n\tOpcodeAtomicI32RmwCmpxchg OpcodeAtomic = 0x48\n\t// OpcodeAtomicI64RmwCmpxchg represents the instruction i64.atomic.rmw.cmpxchg.\n\tOpcodeAtomicI64RmwCmpxchg OpcodeAtomic = 0x49\n\t// OpcodeAtomicI32Rmw8CmpxchgU represents the instruction i32.atomic.rmw8.cmpxchg_u.\n\tOpcodeAtomicI32Rmw8CmpxchgU OpcodeAtomic = 0x4a\n\t// OpcodeAtomicI32Rmw16CmpxchgU represents the instruction i32.atomic.rmw16.cmpxchg_u.\n\tOpcodeAtomicI32Rmw16CmpxchgU OpcodeAtomic = 0x4b\n\t// OpcodeAtomicI64Rmw8CmpxchgU represents the instruction i64.atomic.rmw8.cmpxchg_u.\n\tOpcodeAtomicI64Rmw8CmpxchgU OpcodeAtomic = 0x4c\n\t// OpcodeAtomicI64Rmw16CmpxchgU represents the instruction i64.atomic.rmw16.cmpxchg_u.\n\tOpcodeAtomicI64Rmw16CmpxchgU OpcodeAtomic = 0x4d\n\t// OpcodeAtomicI64Rmw32CmpxchgU represents the instruction i64.atomic.rmw32.cmpxchg_u.\n\tOpcodeAtomicI64Rmw32CmpxchgU OpcodeAtomic = 0x4e\n)\n\n// OpcodeTailCall represents an opcode of a tail call instructions.\n//\n// These opcodes are toggled with CoreFeaturesTailCall.\ntype OpcodeTailCall = byte\n\nconst (\n\tOpcodeTailCallReturnCall         OpcodeTailCall = 0x12\n\tOpcodeTailCallReturnCallIndirect OpcodeTailCall = 0x13\n)\n\nconst (\n\tOpcodeUnreachableName       = \"unreachable\"\n\tOpcodeNopName               = \"nop\"\n\tOpcodeBlockName             = \"block\"\n\tOpcodeLoopName              = \"loop\"\n\tOpcodeIfName                = \"if\"\n\tOpcodeElseName              = \"else\"\n\tOpcodeEndName               = \"end\"\n\tOpcodeBrName                = \"br\"\n\tOpcodeBrIfName              = \"br_if\"\n\tOpcodeBrTableName           = \"br_table\"\n\tOpcodeReturnName            = \"return\"\n\tOpcodeCallName              = \"call\"\n\tOpcodeCallIndirectName      = \"call_indirect\"\n\tOpcodeDropName              = \"drop\"\n\tOpcodeSelectName            = \"select\"\n\tOpcodeTypedSelectName       = \"typed_select\"\n\tOpcodeLocalGetName          = \"local.get\"\n\tOpcodeLocalSetName          = \"local.set\"\n\tOpcodeLocalTeeName          = \"local.tee\"\n\tOpcodeGlobalGetName         = \"global.get\"\n\tOpcodeGlobalSetName         = \"global.set\"\n\tOpcodeI32LoadName           = \"i32.load\"\n\tOpcodeI64LoadName           = \"i64.load\"\n\tOpcodeF32LoadName           = \"f32.load\"\n\tOpcodeF64LoadName           = \"f64.load\"\n\tOpcodeI32Load8SName         = \"i32.load8_s\"\n\tOpcodeI32Load8UName         = \"i32.load8_u\"\n\tOpcodeI32Load16SName        = \"i32.load16_s\"\n\tOpcodeI32Load16UName        = \"i32.load16_u\"\n\tOpcodeI64Load8SName         = \"i64.load8_s\"\n\tOpcodeI64Load8UName         = \"i64.load8_u\"\n\tOpcodeI64Load16SName        = \"i64.load16_s\"\n\tOpcodeI64Load16UName        = \"i64.load16_u\"\n\tOpcodeI64Load32SName        = \"i64.load32_s\"\n\tOpcodeI64Load32UName        = \"i64.load32_u\"\n\tOpcodeI32StoreName          = \"i32.store\"\n\tOpcodeI64StoreName          = \"i64.store\"\n\tOpcodeF32StoreName          = \"f32.store\"\n\tOpcodeF64StoreName          = \"f64.store\"\n\tOpcodeI32Store8Name         = \"i32.store8\"\n\tOpcodeI32Store16Name        = \"i32.store16\"\n\tOpcodeI64Store8Name         = \"i64.store8\"\n\tOpcodeI64Store16Name        = \"i64.store16\"\n\tOpcodeI64Store32Name        = \"i64.store32\"\n\tOpcodeMemorySizeName        = \"memory.size\"\n\tOpcodeMemoryGrowName        = \"memory.grow\"\n\tOpcodeI32ConstName          = \"i32.const\"\n\tOpcodeI64ConstName          = \"i64.const\"\n\tOpcodeF32ConstName          = \"f32.const\"\n\tOpcodeF64ConstName          = \"f64.const\"\n\tOpcodeI32EqzName            = \"i32.eqz\"\n\tOpcodeI32EqName             = \"i32.eq\"\n\tOpcodeI32NeName             = \"i32.ne\"\n\tOpcodeI32LtSName            = \"i32.lt_s\"\n\tOpcodeI32LtUName            = \"i32.lt_u\"\n\tOpcodeI32GtSName            = \"i32.gt_s\"\n\tOpcodeI32GtUName            = \"i32.gt_u\"\n\tOpcodeI32LeSName            = \"i32.le_s\"\n\tOpcodeI32LeUName            = \"i32.le_u\"\n\tOpcodeI32GeSName            = \"i32.ge_s\"\n\tOpcodeI32GeUName            = \"i32.ge_u\"\n\tOpcodeI64EqzName            = \"i64.eqz\"\n\tOpcodeI64EqName             = \"i64.eq\"\n\tOpcodeI64NeName             = \"i64.ne\"\n\tOpcodeI64LtSName            = \"i64.lt_s\"\n\tOpcodeI64LtUName            = \"i64.lt_u\"\n\tOpcodeI64GtSName            = \"i64.gt_s\"\n\tOpcodeI64GtUName            = \"i64.gt_u\"\n\tOpcodeI64LeSName            = \"i64.le_s\"\n\tOpcodeI64LeUName            = \"i64.le_u\"\n\tOpcodeI64GeSName            = \"i64.ge_s\"\n\tOpcodeI64GeUName            = \"i64.ge_u\"\n\tOpcodeF32EqName             = \"f32.eq\"\n\tOpcodeF32NeName             = \"f32.ne\"\n\tOpcodeF32LtName             = \"f32.lt\"\n\tOpcodeF32GtName             = \"f32.gt\"\n\tOpcodeF32LeName             = \"f32.le\"\n\tOpcodeF32GeName             = \"f32.ge\"\n\tOpcodeF64EqName             = \"f64.eq\"\n\tOpcodeF64NeName             = \"f64.ne\"\n\tOpcodeF64LtName             = \"f64.lt\"\n\tOpcodeF64GtName             = \"f64.gt\"\n\tOpcodeF64LeName             = \"f64.le\"\n\tOpcodeF64GeName             = \"f64.ge\"\n\tOpcodeI32ClzName            = \"i32.clz\"\n\tOpcodeI32CtzName            = \"i32.ctz\"\n\tOpcodeI32PopcntName         = \"i32.popcnt\"\n\tOpcodeI32AddName            = \"i32.add\"\n\tOpcodeI32SubName            = \"i32.sub\"\n\tOpcodeI32MulName            = \"i32.mul\"\n\tOpcodeI32DivSName           = \"i32.div_s\"\n\tOpcodeI32DivUName           = \"i32.div_u\"\n\tOpcodeI32RemSName           = \"i32.rem_s\"\n\tOpcodeI32RemUName           = \"i32.rem_u\"\n\tOpcodeI32AndName            = \"i32.and\"\n\tOpcodeI32OrName             = \"i32.or\"\n\tOpcodeI32XorName            = \"i32.xor\"\n\tOpcodeI32ShlName            = \"i32.shl\"\n\tOpcodeI32ShrSName           = \"i32.shr_s\"\n\tOpcodeI32ShrUName           = \"i32.shr_u\"\n\tOpcodeI32RotlName           = \"i32.rotl\"\n\tOpcodeI32RotrName           = \"i32.rotr\"\n\tOpcodeI64ClzName            = \"i64.clz\"\n\tOpcodeI64CtzName            = \"i64.ctz\"\n\tOpcodeI64PopcntName         = \"i64.popcnt\"\n\tOpcodeI64AddName            = \"i64.add\"\n\tOpcodeI64SubName            = \"i64.sub\"\n\tOpcodeI64MulName            = \"i64.mul\"\n\tOpcodeI64DivSName           = \"i64.div_s\"\n\tOpcodeI64DivUName           = \"i64.div_u\"\n\tOpcodeI64RemSName           = \"i64.rem_s\"\n\tOpcodeI64RemUName           = \"i64.rem_u\"\n\tOpcodeI64AndName            = \"i64.and\"\n\tOpcodeI64OrName             = \"i64.or\"\n\tOpcodeI64XorName            = \"i64.xor\"\n\tOpcodeI64ShlName            = \"i64.shl\"\n\tOpcodeI64ShrSName           = \"i64.shr_s\"\n\tOpcodeI64ShrUName           = \"i64.shr_u\"\n\tOpcodeI64RotlName           = \"i64.rotl\"\n\tOpcodeI64RotrName           = \"i64.rotr\"\n\tOpcodeF32AbsName            = \"f32.abs\"\n\tOpcodeF32NegName            = \"f32.neg\"\n\tOpcodeF32CeilName           = \"f32.ceil\"\n\tOpcodeF32FloorName          = \"f32.floor\"\n\tOpcodeF32TruncName          = \"f32.trunc\"\n\tOpcodeF32NearestName        = \"f32.nearest\"\n\tOpcodeF32SqrtName           = \"f32.sqrt\"\n\tOpcodeF32AddName            = \"f32.add\"\n\tOpcodeF32SubName            = \"f32.sub\"\n\tOpcodeF32MulName            = \"f32.mul\"\n\tOpcodeF32DivName            = \"f32.div\"\n\tOpcodeF32MinName            = \"f32.min\"\n\tOpcodeF32MaxName            = \"f32.max\"\n\tOpcodeF32CopysignName       = \"f32.copysign\"\n\tOpcodeF64AbsName            = \"f64.abs\"\n\tOpcodeF64NegName            = \"f64.neg\"\n\tOpcodeF64CeilName           = \"f64.ceil\"\n\tOpcodeF64FloorName          = \"f64.floor\"\n\tOpcodeF64TruncName          = \"f64.trunc\"\n\tOpcodeF64NearestName        = \"f64.nearest\"\n\tOpcodeF64SqrtName           = \"f64.sqrt\"\n\tOpcodeF64AddName            = \"f64.add\"\n\tOpcodeF64SubName            = \"f64.sub\"\n\tOpcodeF64MulName            = \"f64.mul\"\n\tOpcodeF64DivName            = \"f64.div\"\n\tOpcodeF64MinName            = \"f64.min\"\n\tOpcodeF64MaxName            = \"f64.max\"\n\tOpcodeF64CopysignName       = \"f64.copysign\"\n\tOpcodeI32WrapI64Name        = \"i32.wrap_i64\"\n\tOpcodeI32TruncF32SName      = \"i32.trunc_f32_s\"\n\tOpcodeI32TruncF32UName      = \"i32.trunc_f32_u\"\n\tOpcodeI32TruncF64SName      = \"i32.trunc_f64_s\"\n\tOpcodeI32TruncF64UName      = \"i32.trunc_f64_u\"\n\tOpcodeI64ExtendI32SName     = \"i64.extend_i32_s\"\n\tOpcodeI64ExtendI32UName     = \"i64.extend_i32_u\"\n\tOpcodeI64TruncF32SName      = \"i64.trunc_f32_s\"\n\tOpcodeI64TruncF32UName      = \"i64.trunc_f32_u\"\n\tOpcodeI64TruncF64SName      = \"i64.trunc_f64_s\"\n\tOpcodeI64TruncF64UName      = \"i64.trunc_f64_u\"\n\tOpcodeF32ConvertI32SName    = \"f32.convert_i32_s\"\n\tOpcodeF32ConvertI32UName    = \"f32.convert_i32_u\"\n\tOpcodeF32ConvertI64SName    = \"f32.convert_i64_s\"\n\tOpcodeF32ConvertI64UName    = \"f32.convert_i64u\"\n\tOpcodeF32DemoteF64Name      = \"f32.demote_f64\"\n\tOpcodeF64ConvertI32SName    = \"f64.convert_i32_s\"\n\tOpcodeF64ConvertI32UName    = \"f64.convert_i32_u\"\n\tOpcodeF64ConvertI64SName    = \"f64.convert_i64_s\"\n\tOpcodeF64ConvertI64UName    = \"f64.convert_i64_u\"\n\tOpcodeF64PromoteF32Name     = \"f64.promote_f32\"\n\tOpcodeI32ReinterpretF32Name = \"i32.reinterpret_f32\"\n\tOpcodeI64ReinterpretF64Name = \"i64.reinterpret_f64\"\n\tOpcodeF32ReinterpretI32Name = \"f32.reinterpret_i32\"\n\tOpcodeF64ReinterpretI64Name = \"f64.reinterpret_i64\"\n\n\tOpcodeRefNullName   = \"ref.null\"\n\tOpcodeRefIsNullName = \"ref.is_null\"\n\tOpcodeRefFuncName   = \"ref.func\"\n\n\tOpcodeTableGetName = \"table.get\"\n\tOpcodeTableSetName = \"table.set\"\n\n\t// Below are toggled with CoreFeatureSignExtensionOps\n\n\tOpcodeI32Extend8SName  = \"i32.extend8_s\"\n\tOpcodeI32Extend16SName = \"i32.extend16_s\"\n\tOpcodeI64Extend8SName  = \"i64.extend8_s\"\n\tOpcodeI64Extend16SName = \"i64.extend16_s\"\n\tOpcodeI64Extend32SName = \"i64.extend32_s\"\n\n\tOpcodeMiscPrefixName   = \"misc_prefix\"\n\tOpcodeVecPrefixName    = \"vector_prefix\"\n\tOpcodeAtomicPrefixName = \"atomic_prefix\"\n)\n\nvar instructionNames = [256]string{\n\tOpcodeUnreachable:       OpcodeUnreachableName,\n\tOpcodeNop:               OpcodeNopName,\n\tOpcodeBlock:             OpcodeBlockName,\n\tOpcodeLoop:              OpcodeLoopName,\n\tOpcodeIf:                OpcodeIfName,\n\tOpcodeElse:              OpcodeElseName,\n\tOpcodeEnd:               OpcodeEndName,\n\tOpcodeBr:                OpcodeBrName,\n\tOpcodeBrIf:              OpcodeBrIfName,\n\tOpcodeBrTable:           OpcodeBrTableName,\n\tOpcodeReturn:            OpcodeReturnName,\n\tOpcodeCall:              OpcodeCallName,\n\tOpcodeCallIndirect:      OpcodeCallIndirectName,\n\tOpcodeDrop:              OpcodeDropName,\n\tOpcodeSelect:            OpcodeSelectName,\n\tOpcodeTypedSelect:       OpcodeTypedSelectName,\n\tOpcodeLocalGet:          OpcodeLocalGetName,\n\tOpcodeLocalSet:          OpcodeLocalSetName,\n\tOpcodeLocalTee:          OpcodeLocalTeeName,\n\tOpcodeGlobalGet:         OpcodeGlobalGetName,\n\tOpcodeGlobalSet:         OpcodeGlobalSetName,\n\tOpcodeI32Load:           OpcodeI32LoadName,\n\tOpcodeI64Load:           OpcodeI64LoadName,\n\tOpcodeF32Load:           OpcodeF32LoadName,\n\tOpcodeF64Load:           OpcodeF64LoadName,\n\tOpcodeI32Load8S:         OpcodeI32Load8SName,\n\tOpcodeI32Load8U:         OpcodeI32Load8UName,\n\tOpcodeI32Load16S:        OpcodeI32Load16SName,\n\tOpcodeI32Load16U:        OpcodeI32Load16UName,\n\tOpcodeI64Load8S:         OpcodeI64Load8SName,\n\tOpcodeI64Load8U:         OpcodeI64Load8UName,\n\tOpcodeI64Load16S:        OpcodeI64Load16SName,\n\tOpcodeI64Load16U:        OpcodeI64Load16UName,\n\tOpcodeI64Load32S:        OpcodeI64Load32SName,\n\tOpcodeI64Load32U:        OpcodeI64Load32UName,\n\tOpcodeI32Store:          OpcodeI32StoreName,\n\tOpcodeI64Store:          OpcodeI64StoreName,\n\tOpcodeF32Store:          OpcodeF32StoreName,\n\tOpcodeF64Store:          OpcodeF64StoreName,\n\tOpcodeI32Store8:         OpcodeI32Store8Name,\n\tOpcodeI32Store16:        OpcodeI32Store16Name,\n\tOpcodeI64Store8:         OpcodeI64Store8Name,\n\tOpcodeI64Store16:        OpcodeI64Store16Name,\n\tOpcodeI64Store32:        OpcodeI64Store32Name,\n\tOpcodeMemorySize:        OpcodeMemorySizeName,\n\tOpcodeMemoryGrow:        OpcodeMemoryGrowName,\n\tOpcodeI32Const:          OpcodeI32ConstName,\n\tOpcodeI64Const:          OpcodeI64ConstName,\n\tOpcodeF32Const:          OpcodeF32ConstName,\n\tOpcodeF64Const:          OpcodeF64ConstName,\n\tOpcodeI32Eqz:            OpcodeI32EqzName,\n\tOpcodeI32Eq:             OpcodeI32EqName,\n\tOpcodeI32Ne:             OpcodeI32NeName,\n\tOpcodeI32LtS:            OpcodeI32LtSName,\n\tOpcodeI32LtU:            OpcodeI32LtUName,\n\tOpcodeI32GtS:            OpcodeI32GtSName,\n\tOpcodeI32GtU:            OpcodeI32GtUName,\n\tOpcodeI32LeS:            OpcodeI32LeSName,\n\tOpcodeI32LeU:            OpcodeI32LeUName,\n\tOpcodeI32GeS:            OpcodeI32GeSName,\n\tOpcodeI32GeU:            OpcodeI32GeUName,\n\tOpcodeI64Eqz:            OpcodeI64EqzName,\n\tOpcodeI64Eq:             OpcodeI64EqName,\n\tOpcodeI64Ne:             OpcodeI64NeName,\n\tOpcodeI64LtS:            OpcodeI64LtSName,\n\tOpcodeI64LtU:            OpcodeI64LtUName,\n\tOpcodeI64GtS:            OpcodeI64GtSName,\n\tOpcodeI64GtU:            OpcodeI64GtUName,\n\tOpcodeI64LeS:            OpcodeI64LeSName,\n\tOpcodeI64LeU:            OpcodeI64LeUName,\n\tOpcodeI64GeS:            OpcodeI64GeSName,\n\tOpcodeI64GeU:            OpcodeI64GeUName,\n\tOpcodeF32Eq:             OpcodeF32EqName,\n\tOpcodeF32Ne:             OpcodeF32NeName,\n\tOpcodeF32Lt:             OpcodeF32LtName,\n\tOpcodeF32Gt:             OpcodeF32GtName,\n\tOpcodeF32Le:             OpcodeF32LeName,\n\tOpcodeF32Ge:             OpcodeF32GeName,\n\tOpcodeF64Eq:             OpcodeF64EqName,\n\tOpcodeF64Ne:             OpcodeF64NeName,\n\tOpcodeF64Lt:             OpcodeF64LtName,\n\tOpcodeF64Gt:             OpcodeF64GtName,\n\tOpcodeF64Le:             OpcodeF64LeName,\n\tOpcodeF64Ge:             OpcodeF64GeName,\n\tOpcodeI32Clz:            OpcodeI32ClzName,\n\tOpcodeI32Ctz:            OpcodeI32CtzName,\n\tOpcodeI32Popcnt:         OpcodeI32PopcntName,\n\tOpcodeI32Add:            OpcodeI32AddName,\n\tOpcodeI32Sub:            OpcodeI32SubName,\n\tOpcodeI32Mul:            OpcodeI32MulName,\n\tOpcodeI32DivS:           OpcodeI32DivSName,\n\tOpcodeI32DivU:           OpcodeI32DivUName,\n\tOpcodeI32RemS:           OpcodeI32RemSName,\n\tOpcodeI32RemU:           OpcodeI32RemUName,\n\tOpcodeI32And:            OpcodeI32AndName,\n\tOpcodeI32Or:             OpcodeI32OrName,\n\tOpcodeI32Xor:            OpcodeI32XorName,\n\tOpcodeI32Shl:            OpcodeI32ShlName,\n\tOpcodeI32ShrS:           OpcodeI32ShrSName,\n\tOpcodeI32ShrU:           OpcodeI32ShrUName,\n\tOpcodeI32Rotl:           OpcodeI32RotlName,\n\tOpcodeI32Rotr:           OpcodeI32RotrName,\n\tOpcodeI64Clz:            OpcodeI64ClzName,\n\tOpcodeI64Ctz:            OpcodeI64CtzName,\n\tOpcodeI64Popcnt:         OpcodeI64PopcntName,\n\tOpcodeI64Add:            OpcodeI64AddName,\n\tOpcodeI64Sub:            OpcodeI64SubName,\n\tOpcodeI64Mul:            OpcodeI64MulName,\n\tOpcodeI64DivS:           OpcodeI64DivSName,\n\tOpcodeI64DivU:           OpcodeI64DivUName,\n\tOpcodeI64RemS:           OpcodeI64RemSName,\n\tOpcodeI64RemU:           OpcodeI64RemUName,\n\tOpcodeI64And:            OpcodeI64AndName,\n\tOpcodeI64Or:             OpcodeI64OrName,\n\tOpcodeI64Xor:            OpcodeI64XorName,\n\tOpcodeI64Shl:            OpcodeI64ShlName,\n\tOpcodeI64ShrS:           OpcodeI64ShrSName,\n\tOpcodeI64ShrU:           OpcodeI64ShrUName,\n\tOpcodeI64Rotl:           OpcodeI64RotlName,\n\tOpcodeI64Rotr:           OpcodeI64RotrName,\n\tOpcodeF32Abs:            OpcodeF32AbsName,\n\tOpcodeF32Neg:            OpcodeF32NegName,\n\tOpcodeF32Ceil:           OpcodeF32CeilName,\n\tOpcodeF32Floor:          OpcodeF32FloorName,\n\tOpcodeF32Trunc:          OpcodeF32TruncName,\n\tOpcodeF32Nearest:        OpcodeF32NearestName,\n\tOpcodeF32Sqrt:           OpcodeF32SqrtName,\n\tOpcodeF32Add:            OpcodeF32AddName,\n\tOpcodeF32Sub:            OpcodeF32SubName,\n\tOpcodeF32Mul:            OpcodeF32MulName,\n\tOpcodeF32Div:            OpcodeF32DivName,\n\tOpcodeF32Min:            OpcodeF32MinName,\n\tOpcodeF32Max:            OpcodeF32MaxName,\n\tOpcodeF32Copysign:       OpcodeF32CopysignName,\n\tOpcodeF64Abs:            OpcodeF64AbsName,\n\tOpcodeF64Neg:            OpcodeF64NegName,\n\tOpcodeF64Ceil:           OpcodeF64CeilName,\n\tOpcodeF64Floor:          OpcodeF64FloorName,\n\tOpcodeF64Trunc:          OpcodeF64TruncName,\n\tOpcodeF64Nearest:        OpcodeF64NearestName,\n\tOpcodeF64Sqrt:           OpcodeF64SqrtName,\n\tOpcodeF64Add:            OpcodeF64AddName,\n\tOpcodeF64Sub:            OpcodeF64SubName,\n\tOpcodeF64Mul:            OpcodeF64MulName,\n\tOpcodeF64Div:            OpcodeF64DivName,\n\tOpcodeF64Min:            OpcodeF64MinName,\n\tOpcodeF64Max:            OpcodeF64MaxName,\n\tOpcodeF64Copysign:       OpcodeF64CopysignName,\n\tOpcodeI32WrapI64:        OpcodeI32WrapI64Name,\n\tOpcodeI32TruncF32S:      OpcodeI32TruncF32SName,\n\tOpcodeI32TruncF32U:      OpcodeI32TruncF32UName,\n\tOpcodeI32TruncF64S:      OpcodeI32TruncF64SName,\n\tOpcodeI32TruncF64U:      OpcodeI32TruncF64UName,\n\tOpcodeI64ExtendI32S:     OpcodeI64ExtendI32SName,\n\tOpcodeI64ExtendI32U:     OpcodeI64ExtendI32UName,\n\tOpcodeI64TruncF32S:      OpcodeI64TruncF32SName,\n\tOpcodeI64TruncF32U:      OpcodeI64TruncF32UName,\n\tOpcodeI64TruncF64S:      OpcodeI64TruncF64SName,\n\tOpcodeI64TruncF64U:      OpcodeI64TruncF64UName,\n\tOpcodeF32ConvertI32S:    OpcodeF32ConvertI32SName,\n\tOpcodeF32ConvertI32U:    OpcodeF32ConvertI32UName,\n\tOpcodeF32ConvertI64S:    OpcodeF32ConvertI64SName,\n\tOpcodeF32ConvertI64U:    OpcodeF32ConvertI64UName,\n\tOpcodeF32DemoteF64:      OpcodeF32DemoteF64Name,\n\tOpcodeF64ConvertI32S:    OpcodeF64ConvertI32SName,\n\tOpcodeF64ConvertI32U:    OpcodeF64ConvertI32UName,\n\tOpcodeF64ConvertI64S:    OpcodeF64ConvertI64SName,\n\tOpcodeF64ConvertI64U:    OpcodeF64ConvertI64UName,\n\tOpcodeF64PromoteF32:     OpcodeF64PromoteF32Name,\n\tOpcodeI32ReinterpretF32: OpcodeI32ReinterpretF32Name,\n\tOpcodeI64ReinterpretF64: OpcodeI64ReinterpretF64Name,\n\tOpcodeF32ReinterpretI32: OpcodeF32ReinterpretI32Name,\n\tOpcodeF64ReinterpretI64: OpcodeF64ReinterpretI64Name,\n\n\tOpcodeRefNull:   OpcodeRefNullName,\n\tOpcodeRefIsNull: OpcodeRefIsNullName,\n\tOpcodeRefFunc:   OpcodeRefFuncName,\n\n\tOpcodeTableGet: OpcodeTableGetName,\n\tOpcodeTableSet: OpcodeTableSetName,\n\n\t// Below are toggled with CoreFeatureSignExtensionOps\n\n\tOpcodeI32Extend8S:  OpcodeI32Extend8SName,\n\tOpcodeI32Extend16S: OpcodeI32Extend16SName,\n\tOpcodeI64Extend8S:  OpcodeI64Extend8SName,\n\tOpcodeI64Extend16S: OpcodeI64Extend16SName,\n\tOpcodeI64Extend32S: OpcodeI64Extend32SName,\n\n\tOpcodeMiscPrefix: OpcodeMiscPrefixName,\n\tOpcodeVecPrefix:  OpcodeVecPrefixName,\n}\n\n// InstructionName returns the instruction corresponding to this binary Opcode.\n// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#a7-index-of-instructions\nfunc InstructionName(oc Opcode) string {\n\treturn instructionNames[oc]\n}\n\nconst (\n\tOpcodeI32TruncSatF32SName = \"i32.trunc_sat_f32_s\"\n\tOpcodeI32TruncSatF32UName = \"i32.trunc_sat_f32_u\"\n\tOpcodeI32TruncSatF64SName = \"i32.trunc_sat_f64_s\"\n\tOpcodeI32TruncSatF64UName = \"i32.trunc_sat_f64_u\"\n\tOpcodeI64TruncSatF32SName = \"i64.trunc_sat_f32_s\"\n\tOpcodeI64TruncSatF32UName = \"i64.trunc_sat_f32_u\"\n\tOpcodeI64TruncSatF64SName = \"i64.trunc_sat_f64_s\"\n\tOpcodeI64TruncSatF64UName = \"i64.trunc_sat_f64_u\"\n\n\tOpcodeMemoryInitName = \"memory.init\"\n\tOpcodeDataDropName   = \"data.drop\"\n\tOpcodeMemoryCopyName = \"memory.copy\"\n\tOpcodeMemoryFillName = \"memory.fill\"\n\tOpcodeTableInitName  = \"table.init\"\n\tOpcodeElemDropName   = \"elem.drop\"\n\tOpcodeTableCopyName  = \"table.copy\"\n\tOpcodeTableGrowName  = \"table.grow\"\n\tOpcodeTableSizeName  = \"table.size\"\n\tOpcodeTableFillName  = \"table.fill\"\n)\n\nvar miscInstructionNames = [256]string{\n\tOpcodeMiscI32TruncSatF32S: OpcodeI32TruncSatF32SName,\n\tOpcodeMiscI32TruncSatF32U: OpcodeI32TruncSatF32UName,\n\tOpcodeMiscI32TruncSatF64S: OpcodeI32TruncSatF64SName,\n\tOpcodeMiscI32TruncSatF64U: OpcodeI32TruncSatF64UName,\n\tOpcodeMiscI64TruncSatF32S: OpcodeI64TruncSatF32SName,\n\tOpcodeMiscI64TruncSatF32U: OpcodeI64TruncSatF32UName,\n\tOpcodeMiscI64TruncSatF64S: OpcodeI64TruncSatF64SName,\n\tOpcodeMiscI64TruncSatF64U: OpcodeI64TruncSatF64UName,\n\n\tOpcodeMiscMemoryInit: OpcodeMemoryInitName,\n\tOpcodeMiscDataDrop:   OpcodeDataDropName,\n\tOpcodeMiscMemoryCopy: OpcodeMemoryCopyName,\n\tOpcodeMiscMemoryFill: OpcodeMemoryFillName,\n\tOpcodeMiscTableInit:  OpcodeTableInitName,\n\tOpcodeMiscElemDrop:   OpcodeElemDropName,\n\tOpcodeMiscTableCopy:  OpcodeTableCopyName,\n\tOpcodeMiscTableGrow:  OpcodeTableGrowName,\n\tOpcodeMiscTableSize:  OpcodeTableSizeName,\n\tOpcodeMiscTableFill:  OpcodeTableFillName,\n}\n\n// MiscInstructionName returns the instruction corresponding to this miscellaneous Opcode.\nfunc MiscInstructionName(oc OpcodeMisc) string {\n\treturn miscInstructionNames[oc]\n}\n\nconst (\n\tOpcodeVecV128LoadName                  = \"v128.load\"\n\tOpcodeVecV128Load8x8SName              = \"v128.load8x8_s\"\n\tOpcodeVecV128Load8x8UName              = \"v128.load8x8_u\"\n\tOpcodeVecV128Load16x4SName             = \"v128.load16x4_s\"\n\tOpcodeVecV128Load16x4UName             = \"v128.load16x4_u\"\n\tOpcodeVecV128Load32x2SName             = \"v128.load32x2_s\"\n\tOpcodeVecV128Load32x2UName             = \"v128.load32x2_u\"\n\tOpcodeVecV128Load8SplatName            = \"v128.load8_splat\"\n\tOpcodeVecV128Load16SplatName           = \"v128.load16_splat\"\n\tOpcodeVecV128Load32SplatName           = \"v128.load32_splat\"\n\tOpcodeVecV128Load64SplatName           = \"v128.load64_splat\"\n\tOpcodeVecV128Load32zeroName            = \"v128.load32_zero\"\n\tOpcodeVecV128Load64zeroName            = \"v128.load64_zero\"\n\tOpcodeVecV128StoreName                 = \"v128.store\"\n\tOpcodeVecV128Load8LaneName             = \"v128.load8_lane\"\n\tOpcodeVecV128Load16LaneName            = \"v128.load16_lane\"\n\tOpcodeVecV128Load32LaneName            = \"v128.load32_lane\"\n\tOpcodeVecV128Load64LaneName            = \"v128.load64_lane\"\n\tOpcodeVecV128Store8LaneName            = \"v128.store8_lane\"\n\tOpcodeVecV128Store16LaneName           = \"v128.store16_lane\"\n\tOpcodeVecV128Store32LaneName           = \"v128.store32_lane\"\n\tOpcodeVecV128Store64LaneName           = \"v128.store64_lane\"\n\tOpcodeVecV128ConstName                 = \"v128.const\"\n\tOpcodeVecV128i8x16ShuffleName          = \"v128.shuffle\"\n\tOpcodeVecI8x16ExtractLaneSName         = \"i8x16.extract_lane_s\"\n\tOpcodeVecI8x16ExtractLaneUName         = \"i8x16.extract_lane_u\"\n\tOpcodeVecI8x16ReplaceLaneName          = \"i8x16.replace_lane\"\n\tOpcodeVecI16x8ExtractLaneSName         = \"i16x8.extract_lane_s\"\n\tOpcodeVecI16x8ExtractLaneUName         = \"i16x8.extract_lane_u\"\n\tOpcodeVecI16x8ReplaceLaneName          = \"i16x8.replace_lane\"\n\tOpcodeVecI32x4ExtractLaneName          = \"i32x4.extract_lane\"\n\tOpcodeVecI32x4ReplaceLaneName          = \"i32x4.replace_lane\"\n\tOpcodeVecI64x2ExtractLaneName          = \"i64x2.extract_lane\"\n\tOpcodeVecI64x2ReplaceLaneName          = \"i64x2.replace_lane\"\n\tOpcodeVecF32x4ExtractLaneName          = \"f32x4.extract_lane\"\n\tOpcodeVecF32x4ReplaceLaneName          = \"f32x4.replace_lane\"\n\tOpcodeVecF64x2ExtractLaneName          = \"f64x2.extract_lane\"\n\tOpcodeVecF64x2ReplaceLaneName          = \"f64x2.replace_lane\"\n\tOpcodeVecI8x16SwizzleName              = \"i8x16.swizzle\"\n\tOpcodeVecI8x16SplatName                = \"i8x16.splat\"\n\tOpcodeVecI16x8SplatName                = \"i16x8.splat\"\n\tOpcodeVecI32x4SplatName                = \"i32x4.splat\"\n\tOpcodeVecI64x2SplatName                = \"i64x2.splat\"\n\tOpcodeVecF32x4SplatName                = \"f32x4.splat\"\n\tOpcodeVecF64x2SplatName                = \"f64x2.splat\"\n\tOpcodeVecI8x16EqName                   = \"i8x16.eq\"\n\tOpcodeVecI8x16NeName                   = \"i8x16.ne\"\n\tOpcodeVecI8x16LtSName                  = \"i8x16.lt_s\"\n\tOpcodeVecI8x16LtUName                  = \"i8x16.lt_u\"\n\tOpcodeVecI8x16GtSName                  = \"i8x16.gt_s\"\n\tOpcodeVecI8x16GtUName                  = \"i8x16.gt_u\"\n\tOpcodeVecI8x16LeSName                  = \"i8x16.le_s\"\n\tOpcodeVecI8x16LeUName                  = \"i8x16.le_u\"\n\tOpcodeVecI8x16GeSName                  = \"i8x16.ge_s\"\n\tOpcodeVecI8x16GeUName                  = \"i8x16.ge_u\"\n\tOpcodeVecI16x8EqName                   = \"i16x8.eq\"\n\tOpcodeVecI16x8NeName                   = \"i16x8.ne\"\n\tOpcodeVecI16x8LtSName                  = \"i16x8.lt_s\"\n\tOpcodeVecI16x8LtUName                  = \"i16x8.lt_u\"\n\tOpcodeVecI16x8GtSName                  = \"i16x8.gt_s\"\n\tOpcodeVecI16x8GtUName                  = \"i16x8.gt_u\"\n\tOpcodeVecI16x8LeSName                  = \"i16x8.le_s\"\n\tOpcodeVecI16x8LeUName                  = \"i16x8.le_u\"\n\tOpcodeVecI16x8GeSName                  = \"i16x8.ge_s\"\n\tOpcodeVecI16x8GeUName                  = \"i16x8.ge_u\"\n\tOpcodeVecI32x4EqName                   = \"i32x4.eq\"\n\tOpcodeVecI32x4NeName                   = \"i32x4.ne\"\n\tOpcodeVecI32x4LtSName                  = \"i32x4.lt_s\"\n\tOpcodeVecI32x4LtUName                  = \"i32x4.lt_u\"\n\tOpcodeVecI32x4GtSName                  = \"i32x4.gt_s\"\n\tOpcodeVecI32x4GtUName                  = \"i32x4.gt_u\"\n\tOpcodeVecI32x4LeSName                  = \"i32x4.le_s\"\n\tOpcodeVecI32x4LeUName                  = \"i32x4.le_u\"\n\tOpcodeVecI32x4GeSName                  = \"i32x4.ge_s\"\n\tOpcodeVecI32x4GeUName                  = \"i32x4.ge_u\"\n\tOpcodeVecI64x2EqName                   = \"i64x2.eq\"\n\tOpcodeVecI64x2NeName                   = \"i64x2.ne\"\n\tOpcodeVecI64x2LtSName                  = \"i64x2.lt\"\n\tOpcodeVecI64x2GtSName                  = \"i64x2.gt\"\n\tOpcodeVecI64x2LeSName                  = \"i64x2.le\"\n\tOpcodeVecI64x2GeSName                  = \"i64x2.ge\"\n\tOpcodeVecF32x4EqName                   = \"f32x4.eq\"\n\tOpcodeVecF32x4NeName                   = \"f32x4.ne\"\n\tOpcodeVecF32x4LtName                   = \"f32x4.lt\"\n\tOpcodeVecF32x4GtName                   = \"f32x4.gt\"\n\tOpcodeVecF32x4LeName                   = \"f32x4.le\"\n\tOpcodeVecF32x4GeName                   = \"f32x4.ge\"\n\tOpcodeVecF64x2EqName                   = \"f64x2.eq\"\n\tOpcodeVecF64x2NeName                   = \"f64x2.ne\"\n\tOpcodeVecF64x2LtName                   = \"f64x2.lt\"\n\tOpcodeVecF64x2GtName                   = \"f64x2.gt\"\n\tOpcodeVecF64x2LeName                   = \"f64x2.le\"\n\tOpcodeVecF64x2GeName                   = \"f64x2.ge\"\n\tOpcodeVecV128NotName                   = \"v128.not\"\n\tOpcodeVecV128AndName                   = \"v128.and\"\n\tOpcodeVecV128AndNotName                = \"v128.andnot\"\n\tOpcodeVecV128OrName                    = \"v128.or\"\n\tOpcodeVecV128XorName                   = \"v128.xor\"\n\tOpcodeVecV128BitselectName             = \"v128.bitselect\"\n\tOpcodeVecV128AnyTrueName               = \"v128.any_true\"\n\tOpcodeVecI8x16AbsName                  = \"i8x16.abs\"\n\tOpcodeVecI8x16NegName                  = \"i8x16.neg\"\n\tOpcodeVecI8x16PopcntName               = \"i8x16.popcnt\"\n\tOpcodeVecI8x16AllTrueName              = \"i8x16.all_true\"\n\tOpcodeVecI8x16BitMaskName              = \"i8x16.bitmask\"\n\tOpcodeVecI8x16NarrowI16x8SName         = \"i8x16.narrow_i16x8_s\"\n\tOpcodeVecI8x16NarrowI16x8UName         = \"i8x16.narrow_i16x8_u\"\n\tOpcodeVecI8x16ShlName                  = \"i8x16.shl\"\n\tOpcodeVecI8x16ShrSName                 = \"i8x16.shr_s\"\n\tOpcodeVecI8x16ShrUName                 = \"i8x16.shr_u\"\n\tOpcodeVecI8x16AddName                  = \"i8x16.add\"\n\tOpcodeVecI8x16AddSatSName              = \"i8x16.add_sat_s\"\n\tOpcodeVecI8x16AddSatUName              = \"i8x16.add_sat_u\"\n\tOpcodeVecI8x16SubName                  = \"i8x16.sub\"\n\tOpcodeVecI8x16SubSatSName              = \"i8x16.sub_s\"\n\tOpcodeVecI8x16SubSatUName              = \"i8x16.sub_u\"\n\tOpcodeVecI8x16MinSName                 = \"i8x16.min_s\"\n\tOpcodeVecI8x16MinUName                 = \"i8x16.min_u\"\n\tOpcodeVecI8x16MaxSName                 = \"i8x16.max_s\"\n\tOpcodeVecI8x16MaxUName                 = \"i8x16.max_u\"\n\tOpcodeVecI8x16AvgrUName                = \"i8x16.avgr_u\"\n\tOpcodeVecI16x8ExtaddPairwiseI8x16SName = \"i16x8.extadd_pairwise_i8x16_s\"\n\tOpcodeVecI16x8ExtaddPairwiseI8x16UName = \"i16x8.extadd_pairwise_i8x16_u\"\n\tOpcodeVecI16x8AbsName                  = \"i16x8.abs\"\n\tOpcodeVecI16x8NegName                  = \"i16x8.neg\"\n\tOpcodeVecI16x8Q15mulrSatSName          = \"i16x8.q15mulr_sat_s\"\n\tOpcodeVecI16x8AllTrueName              = \"i16x8.all_true\"\n\tOpcodeVecI16x8BitMaskName              = \"i16x8.bitmask\"\n\tOpcodeVecI16x8NarrowI32x4SName         = \"i16x8.narrow_i32x4_s\"\n\tOpcodeVecI16x8NarrowI32x4UName         = \"i16x8.narrow_i32x4_u\"\n\tOpcodeVecI16x8ExtendLowI8x16SName      = \"i16x8.extend_low_i8x16_s\"\n\tOpcodeVecI16x8ExtendHighI8x16SName     = \"i16x8.extend_high_i8x16_s\"\n\tOpcodeVecI16x8ExtendLowI8x16UName      = \"i16x8.extend_low_i8x16_u\"\n\tOpcodeVecI16x8ExtendHighI8x16UName     = \"i16x8.extend_high_i8x16_u\"\n\tOpcodeVecI16x8ShlName                  = \"i16x8.shl\"\n\tOpcodeVecI16x8ShrSName                 = \"i16x8.shr_s\"\n\tOpcodeVecI16x8ShrUName                 = \"i16x8.shr_u\"\n\tOpcodeVecI16x8AddName                  = \"i16x8.add\"\n\tOpcodeVecI16x8AddSatSName              = \"i16x8.add_sat_s\"\n\tOpcodeVecI16x8AddSatUName              = \"i16x8.add_sat_u\"\n\tOpcodeVecI16x8SubName                  = \"i16x8.sub\"\n\tOpcodeVecI16x8SubSatSName              = \"i16x8.sub_sat_s\"\n\tOpcodeVecI16x8SubSatUName              = \"i16x8.sub_sat_u\"\n\tOpcodeVecI16x8MulName                  = \"i16x8.mul\"\n\tOpcodeVecI16x8MinSName                 = \"i16x8.min_s\"\n\tOpcodeVecI16x8MinUName                 = \"i16x8.min_u\"\n\tOpcodeVecI16x8MaxSName                 = \"i16x8.max_s\"\n\tOpcodeVecI16x8MaxUName                 = \"i16x8.max_u\"\n\tOpcodeVecI16x8AvgrUName                = \"i16x8.avgr_u\"\n\tOpcodeVecI16x8ExtMulLowI8x16SName      = \"i16x8.extmul_low_i8x16_s\"\n\tOpcodeVecI16x8ExtMulHighI8x16SName     = \"i16x8.extmul_high_i8x16_s\"\n\tOpcodeVecI16x8ExtMulLowI8x16UName      = \"i16x8.extmul_low_i8x16_u\"\n\tOpcodeVecI16x8ExtMulHighI8x16UName     = \"i16x8.extmul_high_i8x16_u\"\n\tOpcodeVecI32x4ExtaddPairwiseI16x8SName = \"i32x4.extadd_pairwise_i16x8_s\"\n\tOpcodeVecI32x4ExtaddPairwiseI16x8UName = \"i32x4.extadd_pairwise_i16x8_u\"\n\tOpcodeVecI32x4AbsName                  = \"i32x4.abs\"\n\tOpcodeVecI32x4NegName                  = \"i32x4.neg\"\n\tOpcodeVecI32x4AllTrueName              = \"i32x4.all_true\"\n\tOpcodeVecI32x4BitMaskName              = \"i32x4.bitmask\"\n\tOpcodeVecI32x4ExtendLowI16x8SName      = \"i32x4.extend_low_i16x8_s\"\n\tOpcodeVecI32x4ExtendHighI16x8SName     = \"i32x4.extend_high_i16x8_s\"\n\tOpcodeVecI32x4ExtendLowI16x8UName      = \"i32x4.extend_low_i16x8_u\"\n\tOpcodeVecI32x4ExtendHighI16x8UName     = \"i32x4.extend_high_i16x8_u\"\n\tOpcodeVecI32x4ShlName                  = \"i32x4.shl\"\n\tOpcodeVecI32x4ShrSName                 = \"i32x4.shr_s\"\n\tOpcodeVecI32x4ShrUName                 = \"i32x4.shr_u\"\n\tOpcodeVecI32x4AddName                  = \"i32x4.add\"\n\tOpcodeVecI32x4SubName                  = \"i32x4.sub\"\n\tOpcodeVecI32x4MulName                  = \"i32x4.mul\"\n\tOpcodeVecI32x4MinSName                 = \"i32x4.min_s\"\n\tOpcodeVecI32x4MinUName                 = \"i32x4.min_u\"\n\tOpcodeVecI32x4MaxSName                 = \"i32x4.max_s\"\n\tOpcodeVecI32x4MaxUName                 = \"i32x4.max_u\"\n\tOpcodeVecI32x4DotI16x8SName            = \"i32x4.dot_i16x8_s\"\n\tOpcodeVecI32x4ExtMulLowI16x8SName      = \"i32x4.extmul_low_i16x8_s\"\n\tOpcodeVecI32x4ExtMulHighI16x8SName     = \"i32x4.extmul_high_i16x8_s\"\n\tOpcodeVecI32x4ExtMulLowI16x8UName      = \"i32x4.extmul_low_i16x8_u\"\n\tOpcodeVecI32x4ExtMulHighI16x8UName     = \"i32x4.extmul_high_i16x8_u\"\n\tOpcodeVecI64x2AbsName                  = \"i64x2.abs\"\n\tOpcodeVecI64x2NegName                  = \"i64x2.neg\"\n\tOpcodeVecI64x2AllTrueName              = \"i64x2.all_true\"\n\tOpcodeVecI64x2BitMaskName              = \"i64x2.bitmask\"\n\tOpcodeVecI64x2ExtendLowI32x4SName      = \"i64x2.extend_low_i32x4_s\"\n\tOpcodeVecI64x2ExtendHighI32x4SName     = \"i64x2.extend_high_i32x4_s\"\n\tOpcodeVecI64x2ExtendLowI32x4UName      = \"i64x2.extend_low_i32x4_u\"\n\tOpcodeVecI64x2ExtendHighI32x4UName     = \"i64x2.extend_high_i32x4_u\"\n\tOpcodeVecI64x2ShlName                  = \"i64x2.shl\"\n\tOpcodeVecI64x2ShrSName                 = \"i64x2.shr_s\"\n\tOpcodeVecI64x2ShrUName                 = \"i64x2.shr_u\"\n\tOpcodeVecI64x2AddName                  = \"i64x2.add\"\n\tOpcodeVecI64x2SubName                  = \"i64x2.sub\"\n\tOpcodeVecI64x2MulName                  = \"i64x2.mul\"\n\tOpcodeVecI64x2ExtMulLowI32x4SName      = \"i64x2.extmul_low_i32x4_s\"\n\tOpcodeVecI64x2ExtMulHighI32x4SName     = \"i64x2.extmul_high_i32x4_s\"\n\tOpcodeVecI64x2ExtMulLowI32x4UName      = \"i64x2.extmul_low_i32x4_u\"\n\tOpcodeVecI64x2ExtMulHighI32x4UName     = \"i64x2.extmul_high_i32x4_u\"\n\tOpcodeVecF32x4CeilName                 = \"f32x4.ceil\"\n\tOpcodeVecF32x4FloorName                = \"f32x4.floor\"\n\tOpcodeVecF32x4TruncName                = \"f32x4.trunc\"\n\tOpcodeVecF32x4NearestName              = \"f32x4.nearest\"\n\tOpcodeVecF32x4AbsName                  = \"f32x4.abs\"\n\tOpcodeVecF32x4NegName                  = \"f32x4.neg\"\n\tOpcodeVecF32x4SqrtName                 = \"f32x4.sqrt\"\n\tOpcodeVecF32x4AddName                  = \"f32x4.add\"\n\tOpcodeVecF32x4SubName                  = \"f32x4.sub\"\n\tOpcodeVecF32x4MulName                  = \"f32x4.mul\"\n\tOpcodeVecF32x4DivName                  = \"f32x4.div\"\n\tOpcodeVecF32x4MinName                  = \"f32x4.min\"\n\tOpcodeVecF32x4MaxName                  = \"f32x4.max\"\n\tOpcodeVecF32x4PminName                 = \"f32x4.pmin\"\n\tOpcodeVecF32x4PmaxName                 = \"f32x4.pmax\"\n\tOpcodeVecF64x2CeilName                 = \"f64x2.ceil\"\n\tOpcodeVecF64x2FloorName                = \"f64x2.floor\"\n\tOpcodeVecF64x2TruncName                = \"f64x2.trunc\"\n\tOpcodeVecF64x2NearestName              = \"f64x2.nearest\"\n\tOpcodeVecF64x2AbsName                  = \"f64x2.abs\"\n\tOpcodeVecF64x2NegName                  = \"f64x2.neg\"\n\tOpcodeVecF64x2SqrtName                 = \"f64x2.sqrt\"\n\tOpcodeVecF64x2AddName                  = \"f64x2.add\"\n\tOpcodeVecF64x2SubName                  = \"f64x2.sub\"\n\tOpcodeVecF64x2MulName                  = \"f64x2.mul\"\n\tOpcodeVecF64x2DivName                  = \"f64x2.div\"\n\tOpcodeVecF64x2MinName                  = \"f64x2.min\"\n\tOpcodeVecF64x2MaxName                  = \"f64x2.max\"\n\tOpcodeVecF64x2PminName                 = \"f64x2.pmin\"\n\tOpcodeVecF64x2PmaxName                 = \"f64x2.pmax\"\n\tOpcodeVecI32x4TruncSatF32x4SName       = \"i32x4.trunc_sat_f32x4_s\"\n\tOpcodeVecI32x4TruncSatF32x4UName       = \"i32x4.trunc_sat_f32x4_u\"\n\tOpcodeVecF32x4ConvertI32x4SName        = \"f32x4.convert_i32x4_s\"\n\tOpcodeVecF32x4ConvertI32x4UName        = \"f32x4.convert_i32x4_u\"\n\tOpcodeVecI32x4TruncSatF64x2SZeroName   = \"i32x4.trunc_sat_f64x2_s_zero\"\n\tOpcodeVecI32x4TruncSatF64x2UZeroName   = \"i32x4.trunc_sat_f64x2_u_zero\"\n\tOpcodeVecF64x2ConvertLowI32x4SName     = \"f64x2.convert_low_i32x4_s\"\n\tOpcodeVecF64x2ConvertLowI32x4UName     = \"f64x2.convert_low_i32x4_u\"\n\tOpcodeVecF32x4DemoteF64x2ZeroName      = \"f32x4.demote_f64x2_zero\"\n\tOpcodeVecF64x2PromoteLowF32x4ZeroName  = \"f64x2.promote_low_f32x4\"\n)\n\nvar vectorInstructionName = map[OpcodeVec]string{\n\tOpcodeVecV128Load:                  OpcodeVecV128LoadName,\n\tOpcodeVecV128Load8x8s:              OpcodeVecV128Load8x8SName,\n\tOpcodeVecV128Load8x8u:              OpcodeVecV128Load8x8UName,\n\tOpcodeVecV128Load16x4s:             OpcodeVecV128Load16x4SName,\n\tOpcodeVecV128Load16x4u:             OpcodeVecV128Load16x4UName,\n\tOpcodeVecV128Load32x2s:             OpcodeVecV128Load32x2SName,\n\tOpcodeVecV128Load32x2u:             OpcodeVecV128Load32x2UName,\n\tOpcodeVecV128Load8Splat:            OpcodeVecV128Load8SplatName,\n\tOpcodeVecV128Load16Splat:           OpcodeVecV128Load16SplatName,\n\tOpcodeVecV128Load32Splat:           OpcodeVecV128Load32SplatName,\n\tOpcodeVecV128Load64Splat:           OpcodeVecV128Load64SplatName,\n\tOpcodeVecV128Load32zero:            OpcodeVecV128Load32zeroName,\n\tOpcodeVecV128Load64zero:            OpcodeVecV128Load64zeroName,\n\tOpcodeVecV128Store:                 OpcodeVecV128StoreName,\n\tOpcodeVecV128Load8Lane:             OpcodeVecV128Load8LaneName,\n\tOpcodeVecV128Load16Lane:            OpcodeVecV128Load16LaneName,\n\tOpcodeVecV128Load32Lane:            OpcodeVecV128Load32LaneName,\n\tOpcodeVecV128Load64Lane:            OpcodeVecV128Load64LaneName,\n\tOpcodeVecV128Store8Lane:            OpcodeVecV128Store8LaneName,\n\tOpcodeVecV128Store16Lane:           OpcodeVecV128Store16LaneName,\n\tOpcodeVecV128Store32Lane:           OpcodeVecV128Store32LaneName,\n\tOpcodeVecV128Store64Lane:           OpcodeVecV128Store64LaneName,\n\tOpcodeVecV128Const:                 OpcodeVecV128ConstName,\n\tOpcodeVecV128i8x16Shuffle:          OpcodeVecV128i8x16ShuffleName,\n\tOpcodeVecI8x16ExtractLaneS:         OpcodeVecI8x16ExtractLaneSName,\n\tOpcodeVecI8x16ExtractLaneU:         OpcodeVecI8x16ExtractLaneUName,\n\tOpcodeVecI8x16ReplaceLane:          OpcodeVecI8x16ReplaceLaneName,\n\tOpcodeVecI16x8ExtractLaneS:         OpcodeVecI16x8ExtractLaneSName,\n\tOpcodeVecI16x8ExtractLaneU:         OpcodeVecI16x8ExtractLaneUName,\n\tOpcodeVecI16x8ReplaceLane:          OpcodeVecI16x8ReplaceLaneName,\n\tOpcodeVecI32x4ExtractLane:          OpcodeVecI32x4ExtractLaneName,\n\tOpcodeVecI32x4ReplaceLane:          OpcodeVecI32x4ReplaceLaneName,\n\tOpcodeVecI64x2ExtractLane:          OpcodeVecI64x2ExtractLaneName,\n\tOpcodeVecI64x2ReplaceLane:          OpcodeVecI64x2ReplaceLaneName,\n\tOpcodeVecF32x4ExtractLane:          OpcodeVecF32x4ExtractLaneName,\n\tOpcodeVecF32x4ReplaceLane:          OpcodeVecF32x4ReplaceLaneName,\n\tOpcodeVecF64x2ExtractLane:          OpcodeVecF64x2ExtractLaneName,\n\tOpcodeVecF64x2ReplaceLane:          OpcodeVecF64x2ReplaceLaneName,\n\tOpcodeVecI8x16Swizzle:              OpcodeVecI8x16SwizzleName,\n\tOpcodeVecI8x16Splat:                OpcodeVecI8x16SplatName,\n\tOpcodeVecI16x8Splat:                OpcodeVecI16x8SplatName,\n\tOpcodeVecI32x4Splat:                OpcodeVecI32x4SplatName,\n\tOpcodeVecI64x2Splat:                OpcodeVecI64x2SplatName,\n\tOpcodeVecF32x4Splat:                OpcodeVecF32x4SplatName,\n\tOpcodeVecF64x2Splat:                OpcodeVecF64x2SplatName,\n\tOpcodeVecI8x16Eq:                   OpcodeVecI8x16EqName,\n\tOpcodeVecI8x16Ne:                   OpcodeVecI8x16NeName,\n\tOpcodeVecI8x16LtS:                  OpcodeVecI8x16LtSName,\n\tOpcodeVecI8x16LtU:                  OpcodeVecI8x16LtUName,\n\tOpcodeVecI8x16GtS:                  OpcodeVecI8x16GtSName,\n\tOpcodeVecI8x16GtU:                  OpcodeVecI8x16GtUName,\n\tOpcodeVecI8x16LeS:                  OpcodeVecI8x16LeSName,\n\tOpcodeVecI8x16LeU:                  OpcodeVecI8x16LeUName,\n\tOpcodeVecI8x16GeS:                  OpcodeVecI8x16GeSName,\n\tOpcodeVecI8x16GeU:                  OpcodeVecI8x16GeUName,\n\tOpcodeVecI16x8Eq:                   OpcodeVecI16x8EqName,\n\tOpcodeVecI16x8Ne:                   OpcodeVecI16x8NeName,\n\tOpcodeVecI16x8LtS:                  OpcodeVecI16x8LtSName,\n\tOpcodeVecI16x8LtU:                  OpcodeVecI16x8LtUName,\n\tOpcodeVecI16x8GtS:                  OpcodeVecI16x8GtSName,\n\tOpcodeVecI16x8GtU:                  OpcodeVecI16x8GtUName,\n\tOpcodeVecI16x8LeS:                  OpcodeVecI16x8LeSName,\n\tOpcodeVecI16x8LeU:                  OpcodeVecI16x8LeUName,\n\tOpcodeVecI16x8GeS:                  OpcodeVecI16x8GeSName,\n\tOpcodeVecI16x8GeU:                  OpcodeVecI16x8GeUName,\n\tOpcodeVecI32x4Eq:                   OpcodeVecI32x4EqName,\n\tOpcodeVecI32x4Ne:                   OpcodeVecI32x4NeName,\n\tOpcodeVecI32x4LtS:                  OpcodeVecI32x4LtSName,\n\tOpcodeVecI32x4LtU:                  OpcodeVecI32x4LtUName,\n\tOpcodeVecI32x4GtS:                  OpcodeVecI32x4GtSName,\n\tOpcodeVecI32x4GtU:                  OpcodeVecI32x4GtUName,\n\tOpcodeVecI32x4LeS:                  OpcodeVecI32x4LeSName,\n\tOpcodeVecI32x4LeU:                  OpcodeVecI32x4LeUName,\n\tOpcodeVecI32x4GeS:                  OpcodeVecI32x4GeSName,\n\tOpcodeVecI32x4GeU:                  OpcodeVecI32x4GeUName,\n\tOpcodeVecI64x2Eq:                   OpcodeVecI64x2EqName,\n\tOpcodeVecI64x2Ne:                   OpcodeVecI64x2NeName,\n\tOpcodeVecI64x2LtS:                  OpcodeVecI64x2LtSName,\n\tOpcodeVecI64x2GtS:                  OpcodeVecI64x2GtSName,\n\tOpcodeVecI64x2LeS:                  OpcodeVecI64x2LeSName,\n\tOpcodeVecI64x2GeS:                  OpcodeVecI64x2GeSName,\n\tOpcodeVecF32x4Eq:                   OpcodeVecF32x4EqName,\n\tOpcodeVecF32x4Ne:                   OpcodeVecF32x4NeName,\n\tOpcodeVecF32x4Lt:                   OpcodeVecF32x4LtName,\n\tOpcodeVecF32x4Gt:                   OpcodeVecF32x4GtName,\n\tOpcodeVecF32x4Le:                   OpcodeVecF32x4LeName,\n\tOpcodeVecF32x4Ge:                   OpcodeVecF32x4GeName,\n\tOpcodeVecF64x2Eq:                   OpcodeVecF64x2EqName,\n\tOpcodeVecF64x2Ne:                   OpcodeVecF64x2NeName,\n\tOpcodeVecF64x2Lt:                   OpcodeVecF64x2LtName,\n\tOpcodeVecF64x2Gt:                   OpcodeVecF64x2GtName,\n\tOpcodeVecF64x2Le:                   OpcodeVecF64x2LeName,\n\tOpcodeVecF64x2Ge:                   OpcodeVecF64x2GeName,\n\tOpcodeVecV128Not:                   OpcodeVecV128NotName,\n\tOpcodeVecV128And:                   OpcodeVecV128AndName,\n\tOpcodeVecV128AndNot:                OpcodeVecV128AndNotName,\n\tOpcodeVecV128Or:                    OpcodeVecV128OrName,\n\tOpcodeVecV128Xor:                   OpcodeVecV128XorName,\n\tOpcodeVecV128Bitselect:             OpcodeVecV128BitselectName,\n\tOpcodeVecV128AnyTrue:               OpcodeVecV128AnyTrueName,\n\tOpcodeVecI8x16Abs:                  OpcodeVecI8x16AbsName,\n\tOpcodeVecI8x16Neg:                  OpcodeVecI8x16NegName,\n\tOpcodeVecI8x16Popcnt:               OpcodeVecI8x16PopcntName,\n\tOpcodeVecI8x16AllTrue:              OpcodeVecI8x16AllTrueName,\n\tOpcodeVecI8x16BitMask:              OpcodeVecI8x16BitMaskName,\n\tOpcodeVecI8x16NarrowI16x8S:         OpcodeVecI8x16NarrowI16x8SName,\n\tOpcodeVecI8x16NarrowI16x8U:         OpcodeVecI8x16NarrowI16x8UName,\n\tOpcodeVecI8x16Shl:                  OpcodeVecI8x16ShlName,\n\tOpcodeVecI8x16ShrS:                 OpcodeVecI8x16ShrSName,\n\tOpcodeVecI8x16ShrU:                 OpcodeVecI8x16ShrUName,\n\tOpcodeVecI8x16Add:                  OpcodeVecI8x16AddName,\n\tOpcodeVecI8x16AddSatS:              OpcodeVecI8x16AddSatSName,\n\tOpcodeVecI8x16AddSatU:              OpcodeVecI8x16AddSatUName,\n\tOpcodeVecI8x16Sub:                  OpcodeVecI8x16SubName,\n\tOpcodeVecI8x16SubSatS:              OpcodeVecI8x16SubSatSName,\n\tOpcodeVecI8x16SubSatU:              OpcodeVecI8x16SubSatUName,\n\tOpcodeVecI8x16MinS:                 OpcodeVecI8x16MinSName,\n\tOpcodeVecI8x16MinU:                 OpcodeVecI8x16MinUName,\n\tOpcodeVecI8x16MaxS:                 OpcodeVecI8x16MaxSName,\n\tOpcodeVecI8x16MaxU:                 OpcodeVecI8x16MaxUName,\n\tOpcodeVecI8x16AvgrU:                OpcodeVecI8x16AvgrUName,\n\tOpcodeVecI16x8ExtaddPairwiseI8x16S: OpcodeVecI16x8ExtaddPairwiseI8x16SName,\n\tOpcodeVecI16x8ExtaddPairwiseI8x16U: OpcodeVecI16x8ExtaddPairwiseI8x16UName,\n\tOpcodeVecI16x8Abs:                  OpcodeVecI16x8AbsName,\n\tOpcodeVecI16x8Neg:                  OpcodeVecI16x8NegName,\n\tOpcodeVecI16x8Q15mulrSatS:          OpcodeVecI16x8Q15mulrSatSName,\n\tOpcodeVecI16x8AllTrue:              OpcodeVecI16x8AllTrueName,\n\tOpcodeVecI16x8BitMask:              OpcodeVecI16x8BitMaskName,\n\tOpcodeVecI16x8NarrowI32x4S:         OpcodeVecI16x8NarrowI32x4SName,\n\tOpcodeVecI16x8NarrowI32x4U:         OpcodeVecI16x8NarrowI32x4UName,\n\tOpcodeVecI16x8ExtendLowI8x16S:      OpcodeVecI16x8ExtendLowI8x16SName,\n\tOpcodeVecI16x8ExtendHighI8x16S:     OpcodeVecI16x8ExtendHighI8x16SName,\n\tOpcodeVecI16x8ExtendLowI8x16U:      OpcodeVecI16x8ExtendLowI8x16UName,\n\tOpcodeVecI16x8ExtendHighI8x16U:     OpcodeVecI16x8ExtendHighI8x16UName,\n\tOpcodeVecI16x8Shl:                  OpcodeVecI16x8ShlName,\n\tOpcodeVecI16x8ShrS:                 OpcodeVecI16x8ShrSName,\n\tOpcodeVecI16x8ShrU:                 OpcodeVecI16x8ShrUName,\n\tOpcodeVecI16x8Add:                  OpcodeVecI16x8AddName,\n\tOpcodeVecI16x8AddSatS:              OpcodeVecI16x8AddSatSName,\n\tOpcodeVecI16x8AddSatU:              OpcodeVecI16x8AddSatUName,\n\tOpcodeVecI16x8Sub:                  OpcodeVecI16x8SubName,\n\tOpcodeVecI16x8SubSatS:              OpcodeVecI16x8SubSatSName,\n\tOpcodeVecI16x8SubSatU:              OpcodeVecI16x8SubSatUName,\n\tOpcodeVecI16x8Mul:                  OpcodeVecI16x8MulName,\n\tOpcodeVecI16x8MinS:                 OpcodeVecI16x8MinSName,\n\tOpcodeVecI16x8MinU:                 OpcodeVecI16x8MinUName,\n\tOpcodeVecI16x8MaxS:                 OpcodeVecI16x8MaxSName,\n\tOpcodeVecI16x8MaxU:                 OpcodeVecI16x8MaxUName,\n\tOpcodeVecI16x8AvgrU:                OpcodeVecI16x8AvgrUName,\n\tOpcodeVecI16x8ExtMulLowI8x16S:      OpcodeVecI16x8ExtMulLowI8x16SName,\n\tOpcodeVecI16x8ExtMulHighI8x16S:     OpcodeVecI16x8ExtMulHighI8x16SName,\n\tOpcodeVecI16x8ExtMulLowI8x16U:      OpcodeVecI16x8ExtMulLowI8x16UName,\n\tOpcodeVecI16x8ExtMulHighI8x16U:     OpcodeVecI16x8ExtMulHighI8x16UName,\n\tOpcodeVecI32x4ExtaddPairwiseI16x8S: OpcodeVecI32x4ExtaddPairwiseI16x8SName,\n\tOpcodeVecI32x4ExtaddPairwiseI16x8U: OpcodeVecI32x4ExtaddPairwiseI16x8UName,\n\tOpcodeVecI32x4Abs:                  OpcodeVecI32x4AbsName,\n\tOpcodeVecI32x4Neg:                  OpcodeVecI32x4NegName,\n\tOpcodeVecI32x4AllTrue:              OpcodeVecI32x4AllTrueName,\n\tOpcodeVecI32x4BitMask:              OpcodeVecI32x4BitMaskName,\n\tOpcodeVecI32x4ExtendLowI16x8S:      OpcodeVecI32x4ExtendLowI16x8SName,\n\tOpcodeVecI32x4ExtendHighI16x8S:     OpcodeVecI32x4ExtendHighI16x8SName,\n\tOpcodeVecI32x4ExtendLowI16x8U:      OpcodeVecI32x4ExtendLowI16x8UName,\n\tOpcodeVecI32x4ExtendHighI16x8U:     OpcodeVecI32x4ExtendHighI16x8UName,\n\tOpcodeVecI32x4Shl:                  OpcodeVecI32x4ShlName,\n\tOpcodeVecI32x4ShrS:                 OpcodeVecI32x4ShrSName,\n\tOpcodeVecI32x4ShrU:                 OpcodeVecI32x4ShrUName,\n\tOpcodeVecI32x4Add:                  OpcodeVecI32x4AddName,\n\tOpcodeVecI32x4Sub:                  OpcodeVecI32x4SubName,\n\tOpcodeVecI32x4Mul:                  OpcodeVecI32x4MulName,\n\tOpcodeVecI32x4MinS:                 OpcodeVecI32x4MinSName,\n\tOpcodeVecI32x4MinU:                 OpcodeVecI32x4MinUName,\n\tOpcodeVecI32x4MaxS:                 OpcodeVecI32x4MaxSName,\n\tOpcodeVecI32x4MaxU:                 OpcodeVecI32x4MaxUName,\n\tOpcodeVecI32x4DotI16x8S:            OpcodeVecI32x4DotI16x8SName,\n\tOpcodeVecI32x4ExtMulLowI16x8S:      OpcodeVecI32x4ExtMulLowI16x8SName,\n\tOpcodeVecI32x4ExtMulHighI16x8S:     OpcodeVecI32x4ExtMulHighI16x8SName,\n\tOpcodeVecI32x4ExtMulLowI16x8U:      OpcodeVecI32x4ExtMulLowI16x8UName,\n\tOpcodeVecI32x4ExtMulHighI16x8U:     OpcodeVecI32x4ExtMulHighI16x8UName,\n\tOpcodeVecI64x2Abs:                  OpcodeVecI64x2AbsName,\n\tOpcodeVecI64x2Neg:                  OpcodeVecI64x2NegName,\n\tOpcodeVecI64x2AllTrue:              OpcodeVecI64x2AllTrueName,\n\tOpcodeVecI64x2BitMask:              OpcodeVecI64x2BitMaskName,\n\tOpcodeVecI64x2ExtendLowI32x4S:      OpcodeVecI64x2ExtendLowI32x4SName,\n\tOpcodeVecI64x2ExtendHighI32x4S:     OpcodeVecI64x2ExtendHighI32x4SName,\n\tOpcodeVecI64x2ExtendLowI32x4U:      OpcodeVecI64x2ExtendLowI32x4UName,\n\tOpcodeVecI64x2ExtendHighI32x4U:     OpcodeVecI64x2ExtendHighI32x4UName,\n\tOpcodeVecI64x2Shl:                  OpcodeVecI64x2ShlName,\n\tOpcodeVecI64x2ShrS:                 OpcodeVecI64x2ShrSName,\n\tOpcodeVecI64x2ShrU:                 OpcodeVecI64x2ShrUName,\n\tOpcodeVecI64x2Add:                  OpcodeVecI64x2AddName,\n\tOpcodeVecI64x2Sub:                  OpcodeVecI64x2SubName,\n\tOpcodeVecI64x2Mul:                  OpcodeVecI64x2MulName,\n\tOpcodeVecI64x2ExtMulLowI32x4S:      OpcodeVecI64x2ExtMulLowI32x4SName,\n\tOpcodeVecI64x2ExtMulHighI32x4S:     OpcodeVecI64x2ExtMulHighI32x4SName,\n\tOpcodeVecI64x2ExtMulLowI32x4U:      OpcodeVecI64x2ExtMulLowI32x4UName,\n\tOpcodeVecI64x2ExtMulHighI32x4U:     OpcodeVecI64x2ExtMulHighI32x4UName,\n\tOpcodeVecF32x4Ceil:                 OpcodeVecF32x4CeilName,\n\tOpcodeVecF32x4Floor:                OpcodeVecF32x4FloorName,\n\tOpcodeVecF32x4Trunc:                OpcodeVecF32x4TruncName,\n\tOpcodeVecF32x4Nearest:              OpcodeVecF32x4NearestName,\n\tOpcodeVecF32x4Abs:                  OpcodeVecF32x4AbsName,\n\tOpcodeVecF32x4Neg:                  OpcodeVecF32x4NegName,\n\tOpcodeVecF32x4Sqrt:                 OpcodeVecF32x4SqrtName,\n\tOpcodeVecF32x4Add:                  OpcodeVecF32x4AddName,\n\tOpcodeVecF32x4Sub:                  OpcodeVecF32x4SubName,\n\tOpcodeVecF32x4Mul:                  OpcodeVecF32x4MulName,\n\tOpcodeVecF32x4Div:                  OpcodeVecF32x4DivName,\n\tOpcodeVecF32x4Min:                  OpcodeVecF32x4MinName,\n\tOpcodeVecF32x4Max:                  OpcodeVecF32x4MaxName,\n\tOpcodeVecF32x4Pmin:                 OpcodeVecF32x4PminName,\n\tOpcodeVecF32x4Pmax:                 OpcodeVecF32x4PmaxName,\n\tOpcodeVecF64x2Ceil:                 OpcodeVecF64x2CeilName,\n\tOpcodeVecF64x2Floor:                OpcodeVecF64x2FloorName,\n\tOpcodeVecF64x2Trunc:                OpcodeVecF64x2TruncName,\n\tOpcodeVecF64x2Nearest:              OpcodeVecF64x2NearestName,\n\tOpcodeVecF64x2Abs:                  OpcodeVecF64x2AbsName,\n\tOpcodeVecF64x2Neg:                  OpcodeVecF64x2NegName,\n\tOpcodeVecF64x2Sqrt:                 OpcodeVecF64x2SqrtName,\n\tOpcodeVecF64x2Add:                  OpcodeVecF64x2AddName,\n\tOpcodeVecF64x2Sub:                  OpcodeVecF64x2SubName,\n\tOpcodeVecF64x2Mul:                  OpcodeVecF64x2MulName,\n\tOpcodeVecF64x2Div:                  OpcodeVecF64x2DivName,\n\tOpcodeVecF64x2Min:                  OpcodeVecF64x2MinName,\n\tOpcodeVecF64x2Max:                  OpcodeVecF64x2MaxName,\n\tOpcodeVecF64x2Pmin:                 OpcodeVecF64x2PminName,\n\tOpcodeVecF64x2Pmax:                 OpcodeVecF64x2PmaxName,\n\tOpcodeVecI32x4TruncSatF32x4S:       OpcodeVecI32x4TruncSatF32x4SName,\n\tOpcodeVecI32x4TruncSatF32x4U:       OpcodeVecI32x4TruncSatF32x4UName,\n\tOpcodeVecF32x4ConvertI32x4S:        OpcodeVecF32x4ConvertI32x4SName,\n\tOpcodeVecF32x4ConvertI32x4U:        OpcodeVecF32x4ConvertI32x4UName,\n\tOpcodeVecI32x4TruncSatF64x2SZero:   OpcodeVecI32x4TruncSatF64x2SZeroName,\n\tOpcodeVecI32x4TruncSatF64x2UZero:   OpcodeVecI32x4TruncSatF64x2UZeroName,\n\tOpcodeVecF64x2ConvertLowI32x4S:     OpcodeVecF64x2ConvertLowI32x4SName,\n\tOpcodeVecF64x2ConvertLowI32x4U:     OpcodeVecF64x2ConvertLowI32x4UName,\n\tOpcodeVecF32x4DemoteF64x2Zero:      OpcodeVecF32x4DemoteF64x2ZeroName,\n\tOpcodeVecF64x2PromoteLowF32x4Zero:  OpcodeVecF64x2PromoteLowF32x4ZeroName,\n}\n\n// VectorInstructionName returns the instruction name corresponding to the vector Opcode.\nfunc VectorInstructionName(oc OpcodeVec) (ret string) {\n\treturn vectorInstructionName[oc]\n}\n\nconst (\n\tOpcodeAtomicMemoryNotifyName = \"memory.atomic.notify\"\n\tOpcodeAtomicMemoryWait32Name = \"memory.atomic.wait32\"\n\tOpcodeAtomicMemoryWait64Name = \"memory.atomic.wait64\"\n\tOpcodeAtomicFenceName        = \"atomic.fence\"\n\n\tOpcodeAtomicI32LoadName    = \"i32.atomic.load\"\n\tOpcodeAtomicI64LoadName    = \"i64.atomic.load\"\n\tOpcodeAtomicI32Load8UName  = \"i32.atomic.load8_u\"\n\tOpcodeAtomicI32Load16UName = \"i32.atomic.load16_u\"\n\tOpcodeAtomicI64Load8UName  = \"i64.atomic.load8_u\"\n\tOpcodeAtomicI64Load16UName = \"i64.atomic.load16_u\"\n\tOpcodeAtomicI64Load32UName = \"i64.atomic.load32_u\"\n\tOpcodeAtomicI32StoreName   = \"i32.atomic.store\"\n\tOpcodeAtomicI64StoreName   = \"i64.atomic.store\"\n\tOpcodeAtomicI32Store8Name  = \"i32.atomic.store8\"\n\tOpcodeAtomicI32Store16Name = \"i32.atomic.store16\"\n\tOpcodeAtomicI64Store8Name  = \"i64.atomic.store8\"\n\tOpcodeAtomicI64Store16Name = \"i64.atomic.store16\"\n\tOpcodeAtomicI64Store32Name = \"i64.atomic.store32\"\n\n\tOpcodeAtomicI32RmwAddName    = \"i32.atomic.rmw.add\"\n\tOpcodeAtomicI64RmwAddName    = \"i64.atomic.rmw.add\"\n\tOpcodeAtomicI32Rmw8AddUName  = \"i32.atomic.rmw8.add_u\"\n\tOpcodeAtomicI32Rmw16AddUName = \"i32.atomic.rmw16.add_u\"\n\tOpcodeAtomicI64Rmw8AddUName  = \"i64.atomic.rmw8.add_u\"\n\tOpcodeAtomicI64Rmw16AddUName = \"i64.atomic.rmw16.add_u\"\n\tOpcodeAtomicI64Rmw32AddUName = \"i64.atomic.rmw32.add_u\"\n\n\tOpcodeAtomicI32RmwSubName    = \"i32.atomic.rmw.sub\"\n\tOpcodeAtomicI64RmwSubName    = \"i64.atomic.rmw.sub\"\n\tOpcodeAtomicI32Rmw8SubUName  = \"i32.atomic.rmw8.sub_u\"\n\tOpcodeAtomicI32Rmw16SubUName = \"i32.atomic.rmw16.sub_u\"\n\tOpcodeAtomicI64Rmw8SubUName  = \"i64.atomic.rmw8.sub_u\"\n\tOpcodeAtomicI64Rmw16SubUName = \"i64.atomic.rmw16.sub_u\"\n\tOpcodeAtomicI64Rmw32SubUName = \"i64.atomic.rmw32.sub_u\"\n\n\tOpcodeAtomicI32RmwAndName    = \"i32.atomic.rmw.and\"\n\tOpcodeAtomicI64RmwAndName    = \"i64.atomic.rmw.and\"\n\tOpcodeAtomicI32Rmw8AndUName  = \"i32.atomic.rmw8.and_u\"\n\tOpcodeAtomicI32Rmw16AndUName = \"i32.atomic.rmw16.and_u\"\n\tOpcodeAtomicI64Rmw8AndUName  = \"i64.atomic.rmw8.and_u\"\n\tOpcodeAtomicI64Rmw16AndUName = \"i64.atomic.rmw16.and_u\"\n\tOpcodeAtomicI64Rmw32AndUName = \"i64.atomic.rmw32.and_u\"\n\n\tOpcodeAtomicI32RmwOrName    = \"i32.atomic.rmw.or\"\n\tOpcodeAtomicI64RmwOrName    = \"i64.atomic.rmw.or\"\n\tOpcodeAtomicI32Rmw8OrUName  = \"i32.atomic.rmw8.or_u\"\n\tOpcodeAtomicI32Rmw16OrUName = \"i32.atomic.rmw16.or_u\"\n\tOpcodeAtomicI64Rmw8OrUName  = \"i64.atomic.rmw8.or_u\"\n\tOpcodeAtomicI64Rmw16OrUName = \"i64.atomic.rmw16.or_u\"\n\tOpcodeAtomicI64Rmw32OrUName = \"i64.atomic.rmw32.or_u\"\n\n\tOpcodeAtomicI32RmwXorName    = \"i32.atomic.rmw.xor\"\n\tOpcodeAtomicI64RmwXorName    = \"i64.atomic.rmw.xor\"\n\tOpcodeAtomicI32Rmw8XorUName  = \"i32.atomic.rmw8.xor_u\"\n\tOpcodeAtomicI32Rmw16XorUName = \"i32.atomic.rmw16.xor_u\"\n\tOpcodeAtomicI64Rmw8XorUName  = \"i64.atomic.rmw8.xor_u\"\n\tOpcodeAtomicI64Rmw16XorUName = \"i64.atomic.rmw16.xor_u\"\n\tOpcodeAtomicI64Rmw32XorUName = \"i64.atomic.rmw32.xor_u\"\n\n\tOpcodeAtomicI32RmwXchgName    = \"i32.atomic.rmw.xchg\"\n\tOpcodeAtomicI64RmwXchgName    = \"i64.atomic.rmw.xchg\"\n\tOpcodeAtomicI32Rmw8XchgUName  = \"i32.atomic.rmw8.xchg_u\"\n\tOpcodeAtomicI32Rmw16XchgUName = \"i32.atomic.rmw16.xchg_u\"\n\tOpcodeAtomicI64Rmw8XchgUName  = \"i64.atomic.rmw8.xchg_u\"\n\tOpcodeAtomicI64Rmw16XchgUName = \"i64.atomic.rmw16.xchg_u\"\n\tOpcodeAtomicI64Rmw32XchgUName = \"i64.atomic.rmw32.xchg_u\"\n\n\tOpcodeAtomicI32RmwCmpxchgName    = \"i32.atomic.rmw.cmpxchg\"\n\tOpcodeAtomicI64RmwCmpxchgName    = \"i64.atomic.rmw.cmpxchg\"\n\tOpcodeAtomicI32Rmw8CmpxchgUName  = \"i32.atomic.rmw8.cmpxchg_u\"\n\tOpcodeAtomicI32Rmw16CmpxchgUName = \"i32.atomic.rmw16.cmpxchg_u\"\n\tOpcodeAtomicI64Rmw8CmpxchgUName  = \"i64.atomic.rmw8.cmpxchg_u\"\n\tOpcodeAtomicI64Rmw16CmpxchgUName = \"i64.atomic.rmw16.cmpxchg_u\"\n\tOpcodeAtomicI64Rmw32CmpxchgUName = \"i64.atomic.rmw32.cmpxchg_u\"\n)\n\nvar atomicInstructionName = map[OpcodeAtomic]string{\n\tOpcodeAtomicMemoryNotify: OpcodeAtomicMemoryNotifyName,\n\tOpcodeAtomicMemoryWait32: OpcodeAtomicMemoryWait32Name,\n\tOpcodeAtomicMemoryWait64: OpcodeAtomicMemoryWait64Name,\n\tOpcodeAtomicFence:        OpcodeAtomicFenceName,\n\n\tOpcodeAtomicI32Load:    OpcodeAtomicI32LoadName,\n\tOpcodeAtomicI64Load:    OpcodeAtomicI64LoadName,\n\tOpcodeAtomicI32Load8U:  OpcodeAtomicI32Load8UName,\n\tOpcodeAtomicI32Load16U: OpcodeAtomicI32Load16UName,\n\tOpcodeAtomicI64Load8U:  OpcodeAtomicI64Load8UName,\n\tOpcodeAtomicI64Load16U: OpcodeAtomicI64Load16UName,\n\tOpcodeAtomicI64Load32U: OpcodeAtomicI64Load32UName,\n\tOpcodeAtomicI32Store:   OpcodeAtomicI32StoreName,\n\tOpcodeAtomicI64Store:   OpcodeAtomicI64StoreName,\n\tOpcodeAtomicI32Store8:  OpcodeAtomicI32Store8Name,\n\tOpcodeAtomicI32Store16: OpcodeAtomicI32Store16Name,\n\tOpcodeAtomicI64Store8:  OpcodeAtomicI64Store8Name,\n\tOpcodeAtomicI64Store16: OpcodeAtomicI64Store16Name,\n\tOpcodeAtomicI64Store32: OpcodeAtomicI64Store32Name,\n\n\tOpcodeAtomicI32RmwAdd:    OpcodeAtomicI32RmwAddName,\n\tOpcodeAtomicI64RmwAdd:    OpcodeAtomicI64RmwAddName,\n\tOpcodeAtomicI32Rmw8AddU:  OpcodeAtomicI32Rmw8AddUName,\n\tOpcodeAtomicI32Rmw16AddU: OpcodeAtomicI32Rmw16AddUName,\n\tOpcodeAtomicI64Rmw8AddU:  OpcodeAtomicI64Rmw8AddUName,\n\tOpcodeAtomicI64Rmw16AddU: OpcodeAtomicI64Rmw16AddUName,\n\tOpcodeAtomicI64Rmw32AddU: OpcodeAtomicI64Rmw32AddUName,\n\n\tOpcodeAtomicI32RmwSub:    OpcodeAtomicI32RmwSubName,\n\tOpcodeAtomicI64RmwSub:    OpcodeAtomicI64RmwSubName,\n\tOpcodeAtomicI32Rmw8SubU:  OpcodeAtomicI32Rmw8SubUName,\n\tOpcodeAtomicI32Rmw16SubU: OpcodeAtomicI32Rmw16SubUName,\n\tOpcodeAtomicI64Rmw8SubU:  OpcodeAtomicI64Rmw8SubUName,\n\tOpcodeAtomicI64Rmw16SubU: OpcodeAtomicI64Rmw16SubUName,\n\tOpcodeAtomicI64Rmw32SubU: OpcodeAtomicI64Rmw32SubUName,\n\n\tOpcodeAtomicI32RmwAnd:    OpcodeAtomicI32RmwAndName,\n\tOpcodeAtomicI64RmwAnd:    OpcodeAtomicI64RmwAndName,\n\tOpcodeAtomicI32Rmw8AndU:  OpcodeAtomicI32Rmw8AndUName,\n\tOpcodeAtomicI32Rmw16AndU: OpcodeAtomicI32Rmw16AndUName,\n\tOpcodeAtomicI64Rmw8AndU:  OpcodeAtomicI64Rmw8AndUName,\n\tOpcodeAtomicI64Rmw16AndU: OpcodeAtomicI64Rmw16AndUName,\n\tOpcodeAtomicI64Rmw32AndU: OpcodeAtomicI64Rmw32AndUName,\n\n\tOpcodeAtomicI32RmwOr:    OpcodeAtomicI32RmwOrName,\n\tOpcodeAtomicI64RmwOr:    OpcodeAtomicI64RmwOrName,\n\tOpcodeAtomicI32Rmw8OrU:  OpcodeAtomicI32Rmw8OrUName,\n\tOpcodeAtomicI32Rmw16OrU: OpcodeAtomicI32Rmw16OrUName,\n\tOpcodeAtomicI64Rmw8OrU:  OpcodeAtomicI64Rmw8OrUName,\n\tOpcodeAtomicI64Rmw16OrU: OpcodeAtomicI64Rmw16OrUName,\n\tOpcodeAtomicI64Rmw32OrU: OpcodeAtomicI64Rmw32OrUName,\n\n\tOpcodeAtomicI32RmwXor:    OpcodeAtomicI32RmwXorName,\n\tOpcodeAtomicI64RmwXor:    OpcodeAtomicI64RmwXorName,\n\tOpcodeAtomicI32Rmw8XorU:  OpcodeAtomicI32Rmw8XorUName,\n\tOpcodeAtomicI32Rmw16XorU: OpcodeAtomicI32Rmw16XorUName,\n\tOpcodeAtomicI64Rmw8XorU:  OpcodeAtomicI64Rmw8XorUName,\n\tOpcodeAtomicI64Rmw16XorU: OpcodeAtomicI64Rmw16XorUName,\n\tOpcodeAtomicI64Rmw32XorU: OpcodeAtomicI64Rmw32XorUName,\n\n\tOpcodeAtomicI32RmwXchg:    OpcodeAtomicI32RmwXchgName,\n\tOpcodeAtomicI64RmwXchg:    OpcodeAtomicI64RmwXchgName,\n\tOpcodeAtomicI32Rmw8XchgU:  OpcodeAtomicI32Rmw8XchgUName,\n\tOpcodeAtomicI32Rmw16XchgU: OpcodeAtomicI32Rmw16XchgUName,\n\tOpcodeAtomicI64Rmw8XchgU:  OpcodeAtomicI64Rmw8XchgUName,\n\tOpcodeAtomicI64Rmw16XchgU: OpcodeAtomicI64Rmw16XchgUName,\n\tOpcodeAtomicI64Rmw32XchgU: OpcodeAtomicI64Rmw32XchgUName,\n\n\tOpcodeAtomicI32RmwCmpxchg:    OpcodeAtomicI32RmwCmpxchgName,\n\tOpcodeAtomicI64RmwCmpxchg:    OpcodeAtomicI64RmwCmpxchgName,\n\tOpcodeAtomicI32Rmw8CmpxchgU:  OpcodeAtomicI32Rmw8CmpxchgUName,\n\tOpcodeAtomicI32Rmw16CmpxchgU: OpcodeAtomicI32Rmw16CmpxchgUName,\n\tOpcodeAtomicI64Rmw8CmpxchgU:  OpcodeAtomicI64Rmw8CmpxchgUName,\n\tOpcodeAtomicI64Rmw16CmpxchgU: OpcodeAtomicI64Rmw16CmpxchgUName,\n\tOpcodeAtomicI64Rmw32CmpxchgU: OpcodeAtomicI64Rmw32CmpxchgUName,\n}\n\n// AtomicInstructionName returns the instruction name corresponding to the atomic Opcode.\nfunc AtomicInstructionName(oc OpcodeAtomic) (ret string) {\n\treturn atomicInstructionName[oc]\n}\n\nconst (\n\tOpcodeTailCallReturnCallName         = \"return_call\"\n\tOpcodeTailCallReturnCallIndirectName = \"return_call_indirect\"\n)\n\nvar tailCallInstructionName = map[OpcodeTailCall]string{\n\tOpcodeTailCallReturnCall:         OpcodeTailCallReturnCallName,\n\tOpcodeTailCallReturnCallIndirect: OpcodeTailCallReturnCallIndirectName,\n}\n\n// TailCallInstructionName returns the instruction name corresponding to the tail call Opcode.\nfunc TailCallInstructionName(oc OpcodeTailCall) (ret string) {\n\treturn tailCallInstructionName[oc]\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/wasm/memory.go",
    "content": "package wasm\n\nimport (\n\t\"container/list\"\n\t\"encoding/binary\"\n\t\"fmt\"\n\t\"math\"\n\t\"reflect\"\n\t\"sync\"\n\t\"sync/atomic\"\n\t\"time\"\n\t\"unsafe\"\n\n\t\"github.com/tetratelabs/wazero/api\"\n\t\"github.com/tetratelabs/wazero/experimental\"\n\t\"github.com/tetratelabs/wazero/internal/internalapi\"\n\t\"github.com/tetratelabs/wazero/internal/wasmruntime\"\n)\n\nconst (\n\t// MemoryPageSize is the unit of memory length in WebAssembly,\n\t// and is defined as 2^16 = 65536.\n\t// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#memory-instances%E2%91%A0\n\tMemoryPageSize = uint32(65536)\n\t// MemoryLimitPages is maximum number of pages defined (2^16).\n\t// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#grow-mem\n\tMemoryLimitPages = uint32(65536)\n\t// MemoryPageSizeInBits satisfies the relation: \"1 << MemoryPageSizeInBits == MemoryPageSize\".\n\tMemoryPageSizeInBits = 16\n)\n\n// compile-time check to ensure MemoryInstance implements api.Memory\nvar _ api.Memory = &MemoryInstance{}\n\ntype waiters struct {\n\tmux sync.Mutex\n\tl   *list.List\n}\n\n// MemoryInstance represents a memory instance in a store, and implements api.Memory.\n//\n// Note: In WebAssembly 1.0 (20191205), there may be up to one Memory per store, which means the precise memory is always\n// wasm.Store Memories index zero: `store.Memories[0]`\n// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#memory-instances%E2%91%A0.\ntype MemoryInstance struct {\n\tinternalapi.WazeroOnlyType\n\n\tBuffer        []byte\n\tMin, Cap, Max uint32\n\tShared        bool\n\t// definition is known at compile time.\n\tdefinition api.MemoryDefinition\n\n\t// Mux is used in interpreter mode to prevent overlapping calls to atomic instructions,\n\t// introduced with WebAssembly threads proposal, and in compiler mode to make memory modifications\n\t// within Grow non-racy for the Go race detector.\n\tMux sync.Mutex\n\n\t// waiters implements atomic wait and notify. It is implemented similarly to golang.org/x/sync/semaphore,\n\t// with a fixed weight of 1 and no spurious notifications.\n\twaiters sync.Map\n\n\t// ownerModuleEngine is the module engine that owns this memory instance.\n\townerModuleEngine ModuleEngine\n\n\texpBuffer experimental.LinearMemory\n}\n\n// NewMemoryInstance creates a new instance based on the parameters in the SectionIDMemory.\nfunc NewMemoryInstance(memSec *Memory, allocator experimental.MemoryAllocator, moduleEngine ModuleEngine) *MemoryInstance {\n\tminBytes := MemoryPagesToBytesNum(memSec.Min)\n\tcapBytes := MemoryPagesToBytesNum(memSec.Cap)\n\tmaxBytes := MemoryPagesToBytesNum(memSec.Max)\n\n\tvar buffer []byte\n\tvar expBuffer experimental.LinearMemory\n\tif allocator != nil {\n\t\texpBuffer = allocator.Allocate(capBytes, maxBytes)\n\t\tbuffer = expBuffer.Reallocate(minBytes)\n\t\t_ = buffer[:minBytes] // Bounds check that the minimum was allocated.\n\t} else if memSec.IsShared {\n\t\t// Shared memory needs a fixed buffer, so allocate with the maximum size.\n\t\t//\n\t\t// The rationale as to why we can simply use make([]byte) to a fixed buffer is that Go's GC is non-relocating.\n\t\t// That is not a part of Go spec, but is well-known thing in Go community (wazero's compiler heavily relies on it!)\n\t\t// \t* https://github.com/go4org/unsafe-assume-no-moving-gc\n\t\t//\n\t\t// Also, allocating Max here isn't harmful as the Go runtime uses mmap for large allocations, therefore,\n\t\t// the memory buffer allocation here is virtual and doesn't consume physical memory until it's used.\n\t\t// \t* https://github.com/golang/go/blob/8121604559035734c9677d5281bbdac8b1c17a1e/src/runtime/malloc.go#L1059\n\t\t//\t* https://github.com/golang/go/blob/8121604559035734c9677d5281bbdac8b1c17a1e/src/runtime/malloc.go#L1165\n\t\tbuffer = make([]byte, minBytes, maxBytes)\n\t} else {\n\t\tbuffer = make([]byte, minBytes, capBytes)\n\t}\n\treturn &MemoryInstance{\n\t\tBuffer:            buffer,\n\t\tMin:               memSec.Min,\n\t\tCap:               memoryBytesNumToPages(uint64(cap(buffer))),\n\t\tMax:               memSec.Max,\n\t\tShared:            memSec.IsShared,\n\t\texpBuffer:         expBuffer,\n\t\townerModuleEngine: moduleEngine,\n\t}\n}\n\n// Definition implements the same method as documented on api.Memory.\nfunc (m *MemoryInstance) Definition() api.MemoryDefinition {\n\treturn m.definition\n}\n\n// Size implements the same method as documented on api.Memory.\nfunc (m *MemoryInstance) Size() uint32 {\n\treturn uint32(len(m.Buffer))\n}\n\n// ReadByte implements the same method as documented on api.Memory.\nfunc (m *MemoryInstance) ReadByte(offset uint32) (byte, bool) {\n\tif !m.hasSize(offset, 1) {\n\t\treturn 0, false\n\t}\n\treturn m.Buffer[offset], true\n}\n\n// ReadUint16Le implements the same method as documented on api.Memory.\nfunc (m *MemoryInstance) ReadUint16Le(offset uint32) (uint16, bool) {\n\tif !m.hasSize(offset, 2) {\n\t\treturn 0, false\n\t}\n\treturn binary.LittleEndian.Uint16(m.Buffer[offset : offset+2]), true\n}\n\n// ReadUint32Le implements the same method as documented on api.Memory.\nfunc (m *MemoryInstance) ReadUint32Le(offset uint32) (uint32, bool) {\n\treturn m.readUint32Le(offset)\n}\n\n// ReadFloat32Le implements the same method as documented on api.Memory.\nfunc (m *MemoryInstance) ReadFloat32Le(offset uint32) (float32, bool) {\n\tv, ok := m.readUint32Le(offset)\n\tif !ok {\n\t\treturn 0, false\n\t}\n\treturn math.Float32frombits(v), true\n}\n\n// ReadUint64Le implements the same method as documented on api.Memory.\nfunc (m *MemoryInstance) ReadUint64Le(offset uint32) (uint64, bool) {\n\treturn m.readUint64Le(offset)\n}\n\n// ReadFloat64Le implements the same method as documented on api.Memory.\nfunc (m *MemoryInstance) ReadFloat64Le(offset uint32) (float64, bool) {\n\tv, ok := m.readUint64Le(offset)\n\tif !ok {\n\t\treturn 0, false\n\t}\n\treturn math.Float64frombits(v), true\n}\n\n// Read implements the same method as documented on api.Memory.\nfunc (m *MemoryInstance) Read(offset, byteCount uint32) ([]byte, bool) {\n\tif !m.hasSize(offset, uint64(byteCount)) {\n\t\treturn nil, false\n\t}\n\treturn m.Buffer[offset : offset+byteCount : offset+byteCount], true\n}\n\n// WriteByte implements the same method as documented on api.Memory.\nfunc (m *MemoryInstance) WriteByte(offset uint32, v byte) bool {\n\tif !m.hasSize(offset, 1) {\n\t\treturn false\n\t}\n\tm.Buffer[offset] = v\n\treturn true\n}\n\n// WriteUint16Le implements the same method as documented on api.Memory.\nfunc (m *MemoryInstance) WriteUint16Le(offset uint32, v uint16) bool {\n\tif !m.hasSize(offset, 2) {\n\t\treturn false\n\t}\n\tbinary.LittleEndian.PutUint16(m.Buffer[offset:], v)\n\treturn true\n}\n\n// WriteUint32Le implements the same method as documented on api.Memory.\nfunc (m *MemoryInstance) WriteUint32Le(offset, v uint32) bool {\n\treturn m.writeUint32Le(offset, v)\n}\n\n// WriteFloat32Le implements the same method as documented on api.Memory.\nfunc (m *MemoryInstance) WriteFloat32Le(offset uint32, v float32) bool {\n\treturn m.writeUint32Le(offset, math.Float32bits(v))\n}\n\n// WriteUint64Le implements the same method as documented on api.Memory.\nfunc (m *MemoryInstance) WriteUint64Le(offset uint32, v uint64) bool {\n\treturn m.writeUint64Le(offset, v)\n}\n\n// WriteFloat64Le implements the same method as documented on api.Memory.\nfunc (m *MemoryInstance) WriteFloat64Le(offset uint32, v float64) bool {\n\treturn m.writeUint64Le(offset, math.Float64bits(v))\n}\n\n// Write implements the same method as documented on api.Memory.\nfunc (m *MemoryInstance) Write(offset uint32, val []byte) bool {\n\tif !m.hasSize(offset, uint64(len(val))) {\n\t\treturn false\n\t}\n\tcopy(m.Buffer[offset:], val)\n\treturn true\n}\n\n// WriteString implements the same method as documented on api.Memory.\nfunc (m *MemoryInstance) WriteString(offset uint32, val string) bool {\n\tif !m.hasSize(offset, uint64(len(val))) {\n\t\treturn false\n\t}\n\tcopy(m.Buffer[offset:], val)\n\treturn true\n}\n\n// MemoryPagesToBytesNum converts the given pages into the number of bytes contained in these pages.\nfunc MemoryPagesToBytesNum(pages uint32) (bytesNum uint64) {\n\treturn uint64(pages) << MemoryPageSizeInBits\n}\n\n// Grow implements the same method as documented on api.Memory.\nfunc (m *MemoryInstance) Grow(delta uint32) (result uint32, ok bool) {\n\tif m.Shared {\n\t\tm.Mux.Lock()\n\t\tdefer m.Mux.Unlock()\n\t}\n\n\tcurrentPages := m.Pages()\n\tif delta == 0 {\n\t\treturn currentPages, true\n\t}\n\n\tnewPages := currentPages + delta\n\tif newPages > m.Max || int32(delta) < 0 {\n\t\treturn 0, false\n\t} else if m.expBuffer != nil {\n\t\tbuffer := m.expBuffer.Reallocate(MemoryPagesToBytesNum(newPages))\n\t\tif buffer == nil {\n\t\t\t// Allocator failed to grow.\n\t\t\treturn 0, false\n\t\t}\n\t\tif m.Shared {\n\t\t\tif unsafe.SliceData(buffer) != unsafe.SliceData(m.Buffer) {\n\t\t\t\tpanic(\"shared memory cannot move, this is a bug in the memory allocator\")\n\t\t\t}\n\t\t\t// We assume grow is called under a guest lock.\n\t\t\t// But the memory length is accessed elsewhere,\n\t\t\t// so use atomic to make the new length visible across threads.\n\t\t\tatomicStoreLengthAndCap(&m.Buffer, uintptr(len(buffer)), uintptr(cap(buffer)))\n\t\t\tm.Cap = memoryBytesNumToPages(uint64(cap(buffer)))\n\t\t} else {\n\t\t\tm.Buffer = buffer\n\t\t\tm.Cap = newPages\n\t\t}\n\t} else if newPages > m.Cap { // grow the memory.\n\t\tif m.Shared {\n\t\t\tpanic(\"shared memory cannot be grown, this is a bug in wazero\")\n\t\t}\n\t\tm.Buffer = append(m.Buffer, make([]byte, MemoryPagesToBytesNum(delta))...)\n\t\tm.Cap = newPages\n\t} else { // We already have the capacity we need.\n\t\tif m.Shared {\n\t\t\t// We assume grow is called under a guest lock.\n\t\t\t// But the memory length is accessed elsewhere,\n\t\t\t// so use atomic to make the new length visible across threads.\n\t\t\tatomicStoreLength(&m.Buffer, uintptr(MemoryPagesToBytesNum(newPages)))\n\t\t} else {\n\t\t\tm.Buffer = m.Buffer[:MemoryPagesToBytesNum(newPages)]\n\t\t}\n\t}\n\tm.ownerModuleEngine.MemoryGrown()\n\treturn currentPages, true\n}\n\n// Pages implements the same method as documented on api.Memory.\nfunc (m *MemoryInstance) Pages() (result uint32) {\n\treturn memoryBytesNumToPages(uint64(len(m.Buffer)))\n}\n\n// PagesToUnitOfBytes converts the pages to a human-readable form similar to what's specified. e.g. 1 -> \"64Ki\"\n//\n// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#memory-instances%E2%91%A0\nfunc PagesToUnitOfBytes(pages uint32) string {\n\tk := pages * 64\n\tif k < 1024 {\n\t\treturn fmt.Sprintf(\"%d Ki\", k)\n\t}\n\tm := k / 1024\n\tif m < 1024 {\n\t\treturn fmt.Sprintf(\"%d Mi\", m)\n\t}\n\tg := m / 1024\n\tif g < 1024 {\n\t\treturn fmt.Sprintf(\"%d Gi\", g)\n\t}\n\treturn fmt.Sprintf(\"%d Ti\", g/1024)\n}\n\n// Below are raw functions used to implement the api.Memory API:\n\n// Uses atomic write to update the length of a slice.\nfunc atomicStoreLengthAndCap(slice *[]byte, length uintptr, cap uintptr) {\n\t//nolint:staticcheck\n\tslicePtr := (*reflect.SliceHeader)(unsafe.Pointer(slice))\n\tcapPtr := (*uintptr)(unsafe.Pointer(&slicePtr.Cap))\n\tatomic.StoreUintptr(capPtr, cap)\n\tlenPtr := (*uintptr)(unsafe.Pointer(&slicePtr.Len))\n\tatomic.StoreUintptr(lenPtr, length)\n}\n\n// Uses atomic write to update the length of a slice.\nfunc atomicStoreLength(slice *[]byte, length uintptr) {\n\t//nolint:staticcheck\n\tslicePtr := (*reflect.SliceHeader)(unsafe.Pointer(slice))\n\tlenPtr := (*uintptr)(unsafe.Pointer(&slicePtr.Len))\n\tatomic.StoreUintptr(lenPtr, length)\n}\n\n// memoryBytesNumToPages converts the given number of bytes into the number of pages.\nfunc memoryBytesNumToPages(bytesNum uint64) (pages uint32) {\n\treturn uint32(bytesNum >> MemoryPageSizeInBits)\n}\n\n// hasSize returns true if Len is sufficient for byteCount at the given offset.\n//\n// Note: This is always fine, because memory can grow, but never shrink.\nfunc (m *MemoryInstance) hasSize(offset uint32, byteCount uint64) bool {\n\treturn uint64(offset)+byteCount <= uint64(len(m.Buffer)) // uint64 prevents overflow on add\n}\n\n// readUint32Le implements ReadUint32Le without using a context. This is extracted as both ints and floats are stored in\n// memory as uint32le.\nfunc (m *MemoryInstance) readUint32Le(offset uint32) (uint32, bool) {\n\tif !m.hasSize(offset, 4) {\n\t\treturn 0, false\n\t}\n\treturn binary.LittleEndian.Uint32(m.Buffer[offset : offset+4]), true\n}\n\n// readUint64Le implements ReadUint64Le without using a context. This is extracted as both ints and floats are stored in\n// memory as uint64le.\nfunc (m *MemoryInstance) readUint64Le(offset uint32) (uint64, bool) {\n\tif !m.hasSize(offset, 8) {\n\t\treturn 0, false\n\t}\n\treturn binary.LittleEndian.Uint64(m.Buffer[offset : offset+8]), true\n}\n\n// writeUint32Le implements WriteUint32Le without using a context. This is extracted as both ints and floats are stored\n// in memory as uint32le.\nfunc (m *MemoryInstance) writeUint32Le(offset uint32, v uint32) bool {\n\tif !m.hasSize(offset, 4) {\n\t\treturn false\n\t}\n\tbinary.LittleEndian.PutUint32(m.Buffer[offset:], v)\n\treturn true\n}\n\n// writeUint64Le implements WriteUint64Le without using a context. This is extracted as both ints and floats are stored\n// in memory as uint64le.\nfunc (m *MemoryInstance) writeUint64Le(offset uint32, v uint64) bool {\n\tif !m.hasSize(offset, 8) {\n\t\treturn false\n\t}\n\tbinary.LittleEndian.PutUint64(m.Buffer[offset:], v)\n\treturn true\n}\n\n// Wait32 suspends the caller until the offset is notified by a different agent.\nfunc (m *MemoryInstance) Wait32(offset uint32, exp uint32, timeout int64, reader func(mem *MemoryInstance, offset uint32) uint32) uint64 {\n\tw := m.getWaiters(offset)\n\tw.mux.Lock()\n\n\tcur := reader(m, offset)\n\tif cur != exp {\n\t\tw.mux.Unlock()\n\t\treturn 1\n\t}\n\n\treturn m.wait(w, timeout)\n}\n\n// Wait64 suspends the caller until the offset is notified by a different agent.\nfunc (m *MemoryInstance) Wait64(offset uint32, exp uint64, timeout int64, reader func(mem *MemoryInstance, offset uint32) uint64) uint64 {\n\tw := m.getWaiters(offset)\n\tw.mux.Lock()\n\n\tcur := reader(m, offset)\n\tif cur != exp {\n\t\tw.mux.Unlock()\n\t\treturn 1\n\t}\n\n\treturn m.wait(w, timeout)\n}\n\nfunc (m *MemoryInstance) wait(w *waiters, timeout int64) uint64 {\n\tif w.l == nil {\n\t\tw.l = list.New()\n\t}\n\n\t// The specification requires a trap if the number of existing waiters + 1 == 2^32, so we add a check here.\n\t// In practice, it is unlikely the application would ever accumulate such a large number of waiters as it\n\t// indicates several GB of RAM used just for the list of waiters.\n\t// https://github.com/WebAssembly/threads/blob/main/proposals/threads/Overview.md#wait\n\tif uint64(w.l.Len()+1) == 1<<32 {\n\t\tw.mux.Unlock()\n\t\tpanic(wasmruntime.ErrRuntimeTooManyWaiters)\n\t}\n\n\tready := make(chan struct{})\n\telem := w.l.PushBack(ready)\n\tw.mux.Unlock()\n\n\tif timeout < 0 {\n\t\t<-ready\n\t\treturn 0\n\t} else {\n\t\tselect {\n\t\tcase <-ready:\n\t\t\treturn 0\n\t\tcase <-time.After(time.Duration(timeout)):\n\t\t\t// While we could see if the channel completed by now and ignore the timeout, similar to x/sync/semaphore,\n\t\t\t// the Wasm spec doesn't specify this behavior, so we keep things simple by prioritizing the timeout.\n\t\t\tw.mux.Lock()\n\t\t\tw.l.Remove(elem)\n\t\t\tw.mux.Unlock()\n\t\t\treturn 2\n\t\t}\n\t}\n}\n\nfunc (m *MemoryInstance) getWaiters(offset uint32) *waiters {\n\twAny, ok := m.waiters.Load(offset)\n\tif !ok {\n\t\t// The first time an address is waited on, simultaneous waits will cause extra allocations.\n\t\t// Further operations will be loaded above, which is also the general pattern of usage with\n\t\t// mutexes.\n\t\twAny, _ = m.waiters.LoadOrStore(offset, &waiters{})\n\t}\n\n\treturn wAny.(*waiters)\n}\n\n// Notify wakes up at most count waiters at the given offset.\nfunc (m *MemoryInstance) Notify(offset uint32, count uint32) uint32 {\n\twAny, ok := m.waiters.Load(offset)\n\tif !ok {\n\t\treturn 0\n\t}\n\tw := wAny.(*waiters)\n\n\tw.mux.Lock()\n\tdefer w.mux.Unlock()\n\tif w.l == nil {\n\t\treturn 0\n\t}\n\n\tres := uint32(0)\n\tfor num := w.l.Len(); num > 0 && res < count; num = w.l.Len() {\n\t\tw := w.l.Remove(w.l.Front()).(chan struct{})\n\t\tclose(w)\n\t\tres++\n\t}\n\n\treturn res\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/wasm/memory_definition.go",
    "content": "package wasm\n\nimport (\n\t\"github.com/tetratelabs/wazero/api\"\n\t\"github.com/tetratelabs/wazero/internal/internalapi\"\n)\n\n// ImportedMemories implements the same method as documented on wazero.CompiledModule.\nfunc (m *Module) ImportedMemories() (ret []api.MemoryDefinition) {\n\tfor i := range m.MemoryDefinitionSection {\n\t\td := &m.MemoryDefinitionSection[i]\n\t\tif d.importDesc != nil {\n\t\t\tret = append(ret, d)\n\t\t}\n\t}\n\treturn\n}\n\n// ExportedMemories implements the same method as documented on wazero.CompiledModule.\nfunc (m *Module) ExportedMemories() map[string]api.MemoryDefinition {\n\tret := map[string]api.MemoryDefinition{}\n\tfor i := range m.MemoryDefinitionSection {\n\t\td := &m.MemoryDefinitionSection[i]\n\t\tfor _, e := range d.exportNames {\n\t\t\tret[e] = d\n\t\t}\n\t}\n\treturn ret\n}\n\n// BuildMemoryDefinitions generates memory metadata that can be parsed from\n// the module. This must be called after all validation.\n//\n// Note: This is exported for wazero.Runtime `CompileModule`.\nfunc (m *Module) BuildMemoryDefinitions() {\n\tvar moduleName string\n\tif m.NameSection != nil {\n\t\tmoduleName = m.NameSection.ModuleName\n\t}\n\n\tmemoryCount := m.ImportMemoryCount\n\tif m.MemorySection != nil {\n\t\tmemoryCount++\n\t}\n\n\tif memoryCount == 0 {\n\t\treturn\n\t}\n\n\tm.MemoryDefinitionSection = make([]MemoryDefinition, 0, memoryCount)\n\timportMemIdx := Index(0)\n\tfor i := range m.ImportSection {\n\t\timp := &m.ImportSection[i]\n\t\tif imp.Type != ExternTypeMemory {\n\t\t\tcontinue\n\t\t}\n\n\t\tm.MemoryDefinitionSection = append(m.MemoryDefinitionSection, MemoryDefinition{\n\t\t\timportDesc: &[2]string{imp.Module, imp.Name},\n\t\t\tindex:      importMemIdx,\n\t\t\tmemory:     imp.DescMem,\n\t\t})\n\t\timportMemIdx++\n\t}\n\n\tif m.MemorySection != nil {\n\t\tm.MemoryDefinitionSection = append(m.MemoryDefinitionSection, MemoryDefinition{\n\t\t\tindex:  importMemIdx,\n\t\t\tmemory: m.MemorySection,\n\t\t})\n\t}\n\n\tfor i := range m.MemoryDefinitionSection {\n\t\td := &m.MemoryDefinitionSection[i]\n\t\td.moduleName = moduleName\n\t\tfor i := range m.ExportSection {\n\t\t\te := &m.ExportSection[i]\n\t\t\tif e.Type == ExternTypeMemory && e.Index == d.index {\n\t\t\t\td.exportNames = append(d.exportNames, e.Name)\n\t\t\t}\n\t\t}\n\t}\n}\n\n// MemoryDefinition implements api.MemoryDefinition\ntype MemoryDefinition struct {\n\tinternalapi.WazeroOnlyType\n\tmoduleName  string\n\tindex       Index\n\timportDesc  *[2]string\n\texportNames []string\n\tmemory      *Memory\n}\n\n// ModuleName implements the same method as documented on api.MemoryDefinition.\nfunc (f *MemoryDefinition) ModuleName() string {\n\treturn f.moduleName\n}\n\n// Index implements the same method as documented on api.MemoryDefinition.\nfunc (f *MemoryDefinition) Index() uint32 {\n\treturn f.index\n}\n\n// Import implements the same method as documented on api.MemoryDefinition.\nfunc (f *MemoryDefinition) Import() (moduleName, name string, isImport bool) {\n\tif importDesc := f.importDesc; importDesc != nil {\n\t\tmoduleName, name, isImport = importDesc[0], importDesc[1], true\n\t}\n\treturn\n}\n\n// ExportNames implements the same method as documented on api.MemoryDefinition.\nfunc (f *MemoryDefinition) ExportNames() []string {\n\treturn f.exportNames\n}\n\n// Min implements the same method as documented on api.MemoryDefinition.\nfunc (f *MemoryDefinition) Min() uint32 {\n\treturn f.memory.Min\n}\n\n// Max implements the same method as documented on api.MemoryDefinition.\nfunc (f *MemoryDefinition) Max() (max uint32, encoded bool) {\n\tmax = f.memory.Max\n\tencoded = f.memory.IsMaxEncoded\n\treturn\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/wasm/module.go",
    "content": "package wasm\n\nimport (\n\t\"bytes\"\n\t\"crypto/sha256\"\n\t\"encoding/binary\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"sort\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"github.com/tetratelabs/wazero/api\"\n\t\"github.com/tetratelabs/wazero/experimental\"\n\t\"github.com/tetratelabs/wazero/internal/ieee754\"\n\t\"github.com/tetratelabs/wazero/internal/leb128\"\n\t\"github.com/tetratelabs/wazero/internal/wasmdebug\"\n)\n\n// Module is a WebAssembly binary representation.\n// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#modules%E2%91%A8\n//\n// Differences from the specification:\n// * NameSection is the only key (\"name\") decoded from the SectionIDCustom.\n// * ExportSection is represented as a map for lookup convenience.\n// * Code.GoFunc is contains any go `func`. It may be present when Code.Body is not.\ntype Module struct {\n\t// TypeSection contains the unique FunctionType of functions imported or defined in this module.\n\t//\n\t// Note: Currently, there is no type ambiguity in the index as WebAssembly 1.0 only defines function type.\n\t// In the future, other types may be introduced to support CoreFeatures such as module linking.\n\t//\n\t// Note: In the Binary Format, this is SectionIDType.\n\t//\n\t// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#types%E2%91%A0%E2%91%A0\n\tTypeSection []FunctionType\n\n\t// ImportSection contains imported functions, tables, memories or globals required for instantiation\n\t// (Store.Instantiate).\n\t//\n\t// Note: there are no unique constraints relating to the two-level namespace of Import.Module and Import.Name.\n\t//\n\t// Note: In the Binary Format, this is SectionIDImport.\n\t//\n\t// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#import-section%E2%91%A0\n\tImportSection []Import\n\t// ImportFunctionCount ImportGlobalCount ImportMemoryCount, and ImportTableCount are\n\t// the cached import count per ExternType set during decoding.\n\tImportFunctionCount,\n\tImportGlobalCount,\n\tImportMemoryCount,\n\tImportTableCount Index\n\t// ImportPerModule maps a module name to the list of Import to be imported from the module.\n\t// This is used to do fast import resolution during instantiation.\n\tImportPerModule map[string][]*Import\n\n\t// FunctionSection contains the index in TypeSection of each function defined in this module.\n\t//\n\t// Note: The function Index space begins with imported functions and ends with those defined in this module.\n\t// For example, if there are two imported functions and one defined in this module, the function Index 3 is defined\n\t// in this module at FunctionSection[0].\n\t//\n\t// Note: FunctionSection is index correlated with the CodeSection. If given the same position, e.g. 2, a function\n\t// type is at TypeSection[FunctionSection[2]], while its locals and body are at CodeSection[2].\n\t//\n\t// Note: In the Binary Format, this is SectionIDFunction.\n\t//\n\t// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#function-section%E2%91%A0\n\tFunctionSection []Index\n\n\t// TableSection contains each table defined in this module.\n\t//\n\t// Note: The table Index space begins with imported tables and ends with those defined in this module.\n\t// For example, if there are two imported tables and one defined in this module, the table Index 3 is defined in\n\t// this module at TableSection[0].\n\t//\n\t// Note: Version 1.0 (20191205) of the WebAssembly spec allows at most one table definition per module, so the\n\t// length of the TableSection can be zero or one, and can only be one if there is no imported table.\n\t//\n\t// Note: In the Binary Format, this is SectionIDTable.\n\t//\n\t// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#table-section%E2%91%A0\n\tTableSection []Table\n\n\t// MemorySection contains each memory defined in this module.\n\t//\n\t// Note: The memory Index space begins with imported memories and ends with those defined in this module.\n\t// For example, if there are two imported memories and one defined in this module, the memory Index 3 is defined in\n\t// this module at TableSection[0].\n\t//\n\t// Note: Version 1.0 (20191205) of the WebAssembly spec allows at most one memory definition per module, so the\n\t// length of the MemorySection can be zero or one, and can only be one if there is no imported memory.\n\t//\n\t// Note: In the Binary Format, this is SectionIDMemory.\n\t//\n\t// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#memory-section%E2%91%A0\n\tMemorySection *Memory\n\n\t// GlobalSection contains each global defined in this module.\n\t//\n\t// Global indexes are offset by any imported globals because the global index begins with imports, followed by\n\t// ones defined in this module. For example, if there are two imported globals and three defined in this module, the\n\t// global at index 3 is defined in this module at GlobalSection[0].\n\t//\n\t// Note: In the Binary Format, this is SectionIDGlobal.\n\t//\n\t// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#global-section%E2%91%A0\n\tGlobalSection []Global\n\n\t// ExportSection contains each export defined in this module.\n\t//\n\t// Note: In the Binary Format, this is SectionIDExport.\n\t//\n\t// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#exports%E2%91%A0\n\tExportSection []Export\n\t// Exports maps a name to Export, and is convenient for fast look up of exported instances at runtime.\n\t// Each item of this map points to an element of ExportSection.\n\tExports map[string]*Export\n\n\t// StartSection is the index of a function to call before returning from Store.Instantiate.\n\t//\n\t// Note: The index here is not the position in the FunctionSection, rather in the function index, which\n\t// begins with imported functions.\n\t//\n\t// Note: In the Binary Format, this is SectionIDStart.\n\t//\n\t// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#start-section%E2%91%A0\n\tStartSection *Index\n\n\t// Note: In the Binary Format, this is SectionIDElement.\n\tElementSection []ElementSegment\n\n\t// CodeSection is index-correlated with FunctionSection and contains each\n\t// function's locals and body.\n\t//\n\t// When present, the HostFunctionSection of the same index must be nil.\n\t//\n\t// Note: In the Binary Format, this is SectionIDCode.\n\t//\n\t// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#code-section%E2%91%A0\n\tCodeSection []Code\n\n\t// Note: In the Binary Format, this is SectionIDData.\n\tDataSection []DataSegment\n\n\t// NameSection is set when the SectionIDCustom \"name\" was successfully decoded from the binary format.\n\t//\n\t// Note: This is the only SectionIDCustom defined in the WebAssembly 1.0 (20191205) Binary Format.\n\t// Others are skipped as they are not used in wazero.\n\t//\n\t// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#name-section%E2%91%A0\n\t// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#custom-section%E2%91%A0\n\tNameSection *NameSection\n\n\t// CustomSections are set when the SectionIDCustom other than \"name\" were successfully decoded from the binary format.\n\t//\n\t// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#custom-section%E2%91%A0\n\tCustomSections []*CustomSection\n\n\t// DataCountSection is the optional section and holds the number of data segments in the data section.\n\t//\n\t// Note: This may exist in WebAssembly 2.0 or WebAssembly 1.0 with CoreFeatureBulkMemoryOperations.\n\t// See https://www.w3.org/TR/2022/WD-wasm-core-2-20220419/binary/modules.html#data-count-section\n\t// See https://www.w3.org/TR/2022/WD-wasm-core-2-20220419/appendix/changes.html#bulk-memory-and-table-instructions\n\tDataCountSection *uint32\n\n\t// ID is the sha256 value of the source wasm plus the configurations which affect the runtime representation of\n\t// Wasm binary. This is only used for caching.\n\tID ModuleID\n\n\t// IsHostModule true if this is the host module, false otherwise.\n\tIsHostModule bool\n\n\t// functionDefinitionSectionInitOnce guards FunctionDefinitionSection so that it is initialized exactly once.\n\tfunctionDefinitionSectionInitOnce sync.Once\n\n\t// FunctionDefinitionSection is a wazero-specific section.\n\tFunctionDefinitionSection []FunctionDefinition\n\n\t// MemoryDefinitionSection is a wazero-specific section.\n\tMemoryDefinitionSection []MemoryDefinition\n\n\t// DWARFLines is used to emit DWARF based stack trace. This is created from the multiple custom sections\n\t// as described in https://yurydelendik.github.io/webassembly-dwarf/, though it is not specified in the Wasm\n\t// specification: https://github.com/WebAssembly/debugging/issues/1\n\tDWARFLines *wasmdebug.DWARFLines\n}\n\n// ModuleID represents sha256 hash value uniquely assigned to Module.\ntype ModuleID = [sha256.Size]byte\n\n// The wazero specific limitation described at RATIONALE.md.\n// TL;DR; We multiply by 8 (to get offsets in bytes) and the multiplication result must be less than 32bit max\nconst (\n\tMaximumGlobals       = uint32(1 << 27)\n\tMaximumFunctionIndex = uint32(1 << 27)\n\tMaximumTableIndex    = uint32(1 << 27)\n)\n\n// AssignModuleID calculates a sha256 checksum on `wasm` and other args, and set Module.ID to the result.\n// See the doc on Module.ID on what it's used for.\nfunc (m *Module) AssignModuleID(wasm []byte, listeners []experimental.FunctionListener, withEnsureTermination bool) {\n\th := sha256.New()\n\th.Write(wasm)\n\t// Use the pre-allocated space backed by m.ID below.\n\n\t// Write the existence of listeners to the checksum per function.\n\tfor i, l := range listeners {\n\t\tbinary.LittleEndian.PutUint32(m.ID[:], uint32(i))\n\t\tm.ID[4] = boolToByte(l != nil)\n\t\th.Write(m.ID[:5])\n\t}\n\t// Write the flag of ensureTermination to the checksum.\n\tm.ID[0] = boolToByte(withEnsureTermination)\n\th.Write(m.ID[:1])\n\t// Get checksum by passing the slice underlying m.ID.\n\th.Sum(m.ID[:0])\n}\n\nfunc boolToByte(b bool) (ret byte) {\n\tif b {\n\t\tret = 1\n\t}\n\treturn\n}\n\n// typeOfFunction returns the wasm.FunctionType for the given function space index or nil.\nfunc (m *Module) typeOfFunction(funcIdx Index) *FunctionType {\n\ttypeSectionLength, importedFunctionCount := uint32(len(m.TypeSection)), m.ImportFunctionCount\n\tif funcIdx < importedFunctionCount {\n\t\t// Imports are not exclusively functions. This is the current function index in the loop.\n\t\tcur := Index(0)\n\t\tfor i := range m.ImportSection {\n\t\t\timp := &m.ImportSection[i]\n\t\t\tif imp.Type != ExternTypeFunc {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif funcIdx == cur {\n\t\t\t\tif imp.DescFunc >= typeSectionLength {\n\t\t\t\t\treturn nil\n\t\t\t\t}\n\t\t\t\treturn &m.TypeSection[imp.DescFunc]\n\t\t\t}\n\t\t\tcur++\n\t\t}\n\t}\n\n\tfuncSectionIdx := funcIdx - m.ImportFunctionCount\n\tif funcSectionIdx >= uint32(len(m.FunctionSection)) {\n\t\treturn nil\n\t}\n\ttypeIdx := m.FunctionSection[funcSectionIdx]\n\tif typeIdx >= typeSectionLength {\n\t\treturn nil\n\t}\n\treturn &m.TypeSection[typeIdx]\n}\n\nfunc (m *Module) Validate(enabledFeatures api.CoreFeatures) error {\n\tfor i := range m.TypeSection {\n\t\ttp := &m.TypeSection[i]\n\t\ttp.CacheNumInUint64()\n\t}\n\n\tif err := m.validateStartSection(); err != nil {\n\t\treturn err\n\t}\n\n\tfunctions, globals, memory, tables, err := m.AllDeclarations()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif err = m.validateImports(enabledFeatures); err != nil {\n\t\treturn err\n\t}\n\n\tif err = m.validateGlobals(globals, uint32(len(functions)), MaximumGlobals); err != nil {\n\t\treturn err\n\t}\n\n\tif err = m.validateMemory(memory, globals, enabledFeatures); err != nil {\n\t\treturn err\n\t}\n\n\tif err = m.validateExports(enabledFeatures, functions, globals, memory, tables); err != nil {\n\t\treturn err\n\t}\n\n\tif m.CodeSection != nil {\n\t\tif err = m.validateFunctions(enabledFeatures, functions, globals, memory, tables, MaximumFunctionIndex); err != nil {\n\t\t\treturn err\n\t\t}\n\t} // No need to validate host functions as NewHostModule validates\n\n\tif err = m.validateTable(enabledFeatures, tables, MaximumTableIndex); err != nil {\n\t\treturn err\n\t}\n\n\tif err = m.validateDataCountSection(); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc (m *Module) validateStartSection() error {\n\t// Check the start function is valid.\n\t// TODO: this should be verified during decode so that errors have the correct source positions\n\tif m.StartSection != nil {\n\t\tstartIndex := *m.StartSection\n\t\tft := m.typeOfFunction(startIndex)\n\t\tif ft == nil { // TODO: move this check to decoder so that a module can never be decoded invalidly\n\t\t\treturn fmt.Errorf(\"invalid start function: func[%d] has an invalid type\", startIndex)\n\t\t}\n\t\tif len(ft.Params) > 0 || len(ft.Results) > 0 {\n\t\t\treturn fmt.Errorf(\"invalid start function: func[%d] must have an empty (nullary) signature: %s\", startIndex, ft)\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (m *Module) validateGlobals(globals []GlobalType, numFuncts, maxGlobals uint32) error {\n\tif uint32(len(globals)) > maxGlobals {\n\t\treturn fmt.Errorf(\"too many globals in a module\")\n\t}\n\n\t// Global initialization constant expression can only reference the imported globals.\n\t// See the note on https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#constant-expressions%E2%91%A0\n\timportedGlobals := globals[:m.ImportGlobalCount]\n\tfor i := range m.GlobalSection {\n\t\tg := &m.GlobalSection[i]\n\t\tif err := validateConstExpression(importedGlobals, numFuncts, &g.Init, g.Type.ValType); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (m *Module) validateFunctions(enabledFeatures api.CoreFeatures, functions []Index, globals []GlobalType, memory *Memory, tables []Table, maximumFunctionIndex uint32) error {\n\tif uint32(len(functions)) > maximumFunctionIndex {\n\t\treturn fmt.Errorf(\"too many functions (%d) in a module\", len(functions))\n\t}\n\n\tfunctionCount := m.SectionElementCount(SectionIDFunction)\n\tcodeCount := m.SectionElementCount(SectionIDCode)\n\tif functionCount == 0 && codeCount == 0 {\n\t\treturn nil\n\t}\n\n\ttypeCount := m.SectionElementCount(SectionIDType)\n\tif codeCount != functionCount {\n\t\treturn fmt.Errorf(\"code count (%d) != function count (%d)\", codeCount, functionCount)\n\t}\n\n\tdeclaredFuncIndexes, err := m.declaredFunctionIndexes()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// Create bytes.Reader once as it causes allocation, and\n\t// we frequently need it (e.g. on every If instruction).\n\tbr := bytes.NewReader(nil)\n\t// Also, we reuse the stacks across multiple function validations to reduce allocations.\n\tvs := &stacks{}\n\tfor idx, typeIndex := range m.FunctionSection {\n\t\tif typeIndex >= typeCount {\n\t\t\treturn fmt.Errorf(\"invalid %s: type section index %d out of range\", m.funcDesc(SectionIDFunction, Index(idx)), typeIndex)\n\t\t}\n\t\tc := &m.CodeSection[idx]\n\t\tif c.GoFunc != nil {\n\t\t\tcontinue\n\t\t}\n\t\tif err = m.validateFunction(vs, enabledFeatures, Index(idx), functions, globals, memory, tables, declaredFuncIndexes, br); err != nil {\n\t\t\treturn fmt.Errorf(\"invalid %s: %w\", m.funcDesc(SectionIDFunction, Index(idx)), err)\n\t\t}\n\t}\n\treturn nil\n}\n\n// declaredFunctionIndexes returns a set of function indexes that can be used as an immediate for OpcodeRefFunc instruction.\n//\n// The criteria for which function indexes can be available for that instruction is vague in the spec:\n//\n//   - \"References: the list of function indices that occur in the module outside functions and can hence be used to form references inside them.\"\n//   - https://www.w3.org/TR/2022/WD-wasm-core-2-20220419/valid/conventions.html#contexts\n//   - \"Ref is the set funcidx(module with functions=ε, start=ε) , i.e., the set of function indices occurring in the module, except in its functions or start function.\"\n//   - https://www.w3.org/TR/2022/WD-wasm-core-2-20220419/valid/modules.html#valid-module\n//\n// To clarify, we reverse-engineer logic required to pass the WebAssembly Core specification 2.0 test suite:\n// https://github.com/WebAssembly/spec/blob/d39195773112a22b245ffbe864bab6d1182ccb06/test/core/ref_func.wast#L78-L115\n//\n// To summarize, the function indexes OpcodeRefFunc can refer include:\n//   - existing in an element section regardless of its mode (active, passive, declarative).\n//   - defined as globals whose value type is ValueRefFunc.\n//   - used as an exported function.\n//\n// See https://github.com/WebAssembly/reference-types/issues/31\n// See https://github.com/WebAssembly/reference-types/issues/76\nfunc (m *Module) declaredFunctionIndexes() (ret map[Index]struct{}, err error) {\n\tret = map[uint32]struct{}{}\n\n\tfor i := range m.ExportSection {\n\t\texp := &m.ExportSection[i]\n\t\tif exp.Type == ExternTypeFunc {\n\t\t\tret[exp.Index] = struct{}{}\n\t\t}\n\t}\n\n\tfor i := range m.GlobalSection {\n\t\tg := &m.GlobalSection[i]\n\t\tif g.Init.Opcode == OpcodeRefFunc {\n\t\t\tvar index uint32\n\t\t\tindex, _, err = leb128.LoadUint32(g.Init.Data)\n\t\t\tif err != nil {\n\t\t\t\terr = fmt.Errorf(\"%s[%d] failed to initialize: %w\", SectionIDName(SectionIDGlobal), i, err)\n\t\t\t\treturn\n\t\t\t}\n\t\t\tret[index] = struct{}{}\n\t\t}\n\t}\n\n\tfor i := range m.ElementSection {\n\t\telem := &m.ElementSection[i]\n\t\tfor _, index := range elem.Init {\n\t\t\tif index != ElementInitNullReference {\n\t\t\t\tret[index] = struct{}{}\n\t\t\t}\n\t\t}\n\t}\n\treturn\n}\n\nfunc (m *Module) funcDesc(sectionID SectionID, sectionIndex Index) string {\n\t// Try to improve the error message by collecting any exports:\n\tvar exportNames []string\n\tfuncIdx := sectionIndex + m.ImportFunctionCount\n\tfor i := range m.ExportSection {\n\t\texp := &m.ExportSection[i]\n\t\tif exp.Index == funcIdx && exp.Type == ExternTypeFunc {\n\t\t\texportNames = append(exportNames, fmt.Sprintf(\"%q\", exp.Name))\n\t\t}\n\t}\n\tsectionIDName := SectionIDName(sectionID)\n\tif exportNames == nil {\n\t\treturn fmt.Sprintf(\"%s[%d]\", sectionIDName, sectionIndex)\n\t}\n\tsort.Strings(exportNames) // go map keys do not iterate consistently\n\treturn fmt.Sprintf(\"%s[%d] export[%s]\", sectionIDName, sectionIndex, strings.Join(exportNames, \",\"))\n}\n\nfunc (m *Module) validateMemory(memory *Memory, globals []GlobalType, _ api.CoreFeatures) error {\n\tvar activeElementCount int\n\tfor i := range m.DataSection {\n\t\td := &m.DataSection[i]\n\t\tif !d.IsPassive() {\n\t\t\tactiveElementCount++\n\t\t}\n\t}\n\tif activeElementCount > 0 && memory == nil {\n\t\treturn fmt.Errorf(\"unknown memory\")\n\t}\n\n\t// Constant expression can only reference imported globals.\n\t// https://github.com/WebAssembly/spec/blob/5900d839f38641989a9d8df2df4aee0513365d39/test/core/data.wast#L84-L91\n\timportedGlobals := globals[:m.ImportGlobalCount]\n\tfor i := range m.DataSection {\n\t\td := &m.DataSection[i]\n\t\tif !d.IsPassive() {\n\t\t\tif err := validateConstExpression(importedGlobals, 0, &d.OffsetExpression, ValueTypeI32); err != nil {\n\t\t\t\treturn fmt.Errorf(\"calculate offset: %w\", err)\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (m *Module) validateImports(enabledFeatures api.CoreFeatures) error {\n\tfor i := range m.ImportSection {\n\t\timp := &m.ImportSection[i]\n\t\tif imp.Module == \"\" {\n\t\t\treturn fmt.Errorf(\"import[%d] has an empty module name\", i)\n\t\t}\n\t\tswitch imp.Type {\n\t\tcase ExternTypeFunc:\n\t\t\tif int(imp.DescFunc) >= len(m.TypeSection) {\n\t\t\t\treturn fmt.Errorf(\"invalid import[%q.%q] function: type index out of range\", imp.Module, imp.Name)\n\t\t\t}\n\t\tcase ExternTypeGlobal:\n\t\t\tif !imp.DescGlobal.Mutable {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := enabledFeatures.RequireEnabled(api.CoreFeatureMutableGlobal); err != nil {\n\t\t\t\treturn fmt.Errorf(\"invalid import[%q.%q] global: %w\", imp.Module, imp.Name, err)\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (m *Module) validateExports(enabledFeatures api.CoreFeatures, functions []Index, globals []GlobalType, memory *Memory, tables []Table) error {\n\tfor i := range m.ExportSection {\n\t\texp := &m.ExportSection[i]\n\t\tindex := exp.Index\n\t\tswitch exp.Type {\n\t\tcase ExternTypeFunc:\n\t\t\tif index >= uint32(len(functions)) {\n\t\t\t\treturn fmt.Errorf(\"unknown function for export[%q]\", exp.Name)\n\t\t\t}\n\t\tcase ExternTypeGlobal:\n\t\t\tif index >= uint32(len(globals)) {\n\t\t\t\treturn fmt.Errorf(\"unknown global for export[%q]\", exp.Name)\n\t\t\t}\n\t\t\tif !globals[index].Mutable {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := enabledFeatures.RequireEnabled(api.CoreFeatureMutableGlobal); err != nil {\n\t\t\t\treturn fmt.Errorf(\"invalid export[%q] global[%d]: %w\", exp.Name, index, err)\n\t\t\t}\n\t\tcase ExternTypeMemory:\n\t\t\tif index > 0 || memory == nil {\n\t\t\t\treturn fmt.Errorf(\"memory for export[%q] out of range\", exp.Name)\n\t\t\t}\n\t\tcase ExternTypeTable:\n\t\t\tif index >= uint32(len(tables)) {\n\t\t\t\treturn fmt.Errorf(\"table for export[%q] out of range\", exp.Name)\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc validateConstExpression(globals []GlobalType, numFuncs uint32, expr *ConstantExpression, expectedType ValueType) (err error) {\n\tvar actualType ValueType\n\tswitch expr.Opcode {\n\tcase OpcodeI32Const:\n\t\t// Treat constants as signed as their interpretation is not yet known per /RATIONALE.md\n\t\t_, _, err = leb128.LoadInt32(expr.Data)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"read i32: %w\", err)\n\t\t}\n\t\tactualType = ValueTypeI32\n\tcase OpcodeI64Const:\n\t\t// Treat constants as signed as their interpretation is not yet known per /RATIONALE.md\n\t\t_, _, err = leb128.LoadInt64(expr.Data)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"read i64: %w\", err)\n\t\t}\n\t\tactualType = ValueTypeI64\n\tcase OpcodeF32Const:\n\t\t_, err = ieee754.DecodeFloat32(expr.Data)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"read f32: %w\", err)\n\t\t}\n\t\tactualType = ValueTypeF32\n\tcase OpcodeF64Const:\n\t\t_, err = ieee754.DecodeFloat64(expr.Data)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"read f64: %w\", err)\n\t\t}\n\t\tactualType = ValueTypeF64\n\tcase OpcodeGlobalGet:\n\t\tid, _, err := leb128.LoadUint32(expr.Data)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"read index of global: %w\", err)\n\t\t}\n\t\tif uint32(len(globals)) <= id {\n\t\t\treturn fmt.Errorf(\"global index out of range\")\n\t\t}\n\t\tactualType = globals[id].ValType\n\tcase OpcodeRefNull:\n\t\tif len(expr.Data) == 0 {\n\t\t\treturn fmt.Errorf(\"read reference type for ref.null: %w\", io.ErrShortBuffer)\n\t\t}\n\t\treftype := expr.Data[0]\n\t\tif reftype != RefTypeFuncref && reftype != RefTypeExternref {\n\t\t\treturn fmt.Errorf(\"invalid type for ref.null: 0x%x\", reftype)\n\t\t}\n\t\tactualType = reftype\n\tcase OpcodeRefFunc:\n\t\tindex, _, err := leb128.LoadUint32(expr.Data)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"read i32: %w\", err)\n\t\t} else if index >= numFuncs {\n\t\t\treturn fmt.Errorf(\"ref.func index out of range [%d] with length %d\", index, numFuncs-1)\n\t\t}\n\t\tactualType = ValueTypeFuncref\n\tcase OpcodeVecV128Const:\n\t\tif len(expr.Data) != 16 {\n\t\t\treturn fmt.Errorf(\"%s needs 16 bytes but was %d bytes\", OpcodeVecV128ConstName, len(expr.Data))\n\t\t}\n\t\tactualType = ValueTypeV128\n\tdefault:\n\t\treturn fmt.Errorf(\"invalid opcode for const expression: 0x%x\", expr.Opcode)\n\t}\n\n\tif actualType != expectedType {\n\t\treturn fmt.Errorf(\"const expression type mismatch expected %s but got %s\",\n\t\t\tValueTypeName(expectedType), ValueTypeName(actualType))\n\t}\n\treturn nil\n}\n\nfunc (m *Module) validateDataCountSection() (err error) {\n\tif m.DataCountSection != nil && int(*m.DataCountSection) != len(m.DataSection) {\n\t\terr = fmt.Errorf(\"data count section (%d) doesn't match the length of data section (%d)\",\n\t\t\t*m.DataCountSection, len(m.DataSection))\n\t}\n\treturn\n}\n\nfunc (m *ModuleInstance) buildGlobals(module *Module, funcRefResolver func(funcIndex Index) Reference) {\n\timportedGlobals := m.Globals[:module.ImportGlobalCount]\n\n\tme := m.Engine\n\tengineOwnGlobal := me.OwnsGlobals()\n\tfor i := Index(0); i < Index(len(module.GlobalSection)); i++ {\n\t\tgs := &module.GlobalSection[i]\n\t\tg := &GlobalInstance{}\n\t\tif engineOwnGlobal {\n\t\t\tg.Me = me\n\t\t\tg.Index = i + module.ImportGlobalCount\n\t\t}\n\t\tm.Globals[i+module.ImportGlobalCount] = g\n\t\tg.Type = gs.Type\n\t\tg.initialize(importedGlobals, &gs.Init, funcRefResolver)\n\t}\n}\n\nfunc paramNames(localNames IndirectNameMap, funcIdx uint32, paramLen int) []string {\n\tfor i := range localNames {\n\t\tnm := &localNames[i]\n\t\t// Only build parameter names if we have one for each.\n\t\tif nm.Index != funcIdx || len(nm.NameMap) < paramLen {\n\t\t\tcontinue\n\t\t}\n\n\t\tret := make([]string, paramLen)\n\t\tfor j := range nm.NameMap {\n\t\t\tp := &nm.NameMap[j]\n\t\t\tif int(p.Index) < paramLen {\n\t\t\t\tret[p.Index] = p.Name\n\t\t\t}\n\t\t}\n\t\treturn ret\n\t}\n\treturn nil\n}\n\nfunc (m *ModuleInstance) buildMemory(module *Module, allocator experimental.MemoryAllocator) {\n\tmemSec := module.MemorySection\n\tif memSec != nil {\n\t\tm.MemoryInstance = NewMemoryInstance(memSec, allocator, m.Engine)\n\t\tm.MemoryInstance.definition = &module.MemoryDefinitionSection[0]\n\t}\n}\n\n// Index is the offset in an index, not necessarily an absolute position in a Module section. This is because\n// indexs are often preceded by a corresponding type in the Module.ImportSection.\n//\n// For example, the function index starts with any ExternTypeFunc in the Module.ImportSection followed by\n// the Module.FunctionSection\n//\n// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#binary-index\ntype Index = uint32\n\n// FunctionType is a possibly empty function signature.\n//\n// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#function-types%E2%91%A0\ntype FunctionType struct {\n\t// Params are the possibly empty sequence of value types accepted by a function with this signature.\n\tParams []ValueType\n\n\t// Results are the possibly empty sequence of value types returned by a function with this signature.\n\t//\n\t// Note: In WebAssembly 1.0 (20191205), there can be at most one result.\n\t// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#result-types%E2%91%A0\n\tResults []ValueType\n\n\t// string is cached as it is used both for String and key\n\tstring string\n\n\t// ParamNumInUint64 is the number of uint64 values requires to represent the Wasm param type.\n\tParamNumInUint64 int\n\n\t// ResultsNumInUint64 is the number of uint64 values requires to represent the Wasm result type.\n\tResultNumInUint64 int\n}\n\nfunc (f *FunctionType) CacheNumInUint64() {\n\tif f.ParamNumInUint64 == 0 {\n\t\tfor _, tp := range f.Params {\n\t\t\tf.ParamNumInUint64++\n\t\t\tif tp == ValueTypeV128 {\n\t\t\t\tf.ParamNumInUint64++\n\t\t\t}\n\t\t}\n\t}\n\n\tif f.ResultNumInUint64 == 0 {\n\t\tfor _, tp := range f.Results {\n\t\t\tf.ResultNumInUint64++\n\t\t\tif tp == ValueTypeV128 {\n\t\t\t\tf.ResultNumInUint64++\n\t\t\t}\n\t\t}\n\t}\n}\n\n// EqualsSignature returns true if the function type has the same parameters and results.\nfunc (f *FunctionType) EqualsSignature(params []ValueType, results []ValueType) bool {\n\treturn bytes.Equal(f.Params, params) && bytes.Equal(f.Results, results)\n}\n\n// key gets or generates the key for Store.typeIDs. e.g. \"i32_v\" for one i32 parameter and no (void) result.\nfunc (f *FunctionType) key() string {\n\tif f.string != \"\" {\n\t\treturn f.string\n\t}\n\tvar ret string\n\tfor _, b := range f.Params {\n\t\tret += ValueTypeName(b)\n\t}\n\tif len(f.Params) == 0 {\n\t\tret += \"v_\"\n\t} else {\n\t\tret += \"_\"\n\t}\n\tfor _, b := range f.Results {\n\t\tret += ValueTypeName(b)\n\t}\n\tif len(f.Results) == 0 {\n\t\tret += \"v\"\n\t}\n\tf.string = ret\n\treturn ret\n}\n\n// String implements fmt.Stringer.\nfunc (f *FunctionType) String() string {\n\treturn f.key()\n}\n\n// Import is the binary representation of an import indicated by Type\n// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#binary-import\ntype Import struct {\n\tType ExternType\n\t// Module is the possibly empty primary namespace of this import\n\tModule string\n\t// Module is the possibly empty secondary namespace of this import\n\tName string\n\t// DescFunc is the index in Module.TypeSection when Type equals ExternTypeFunc\n\tDescFunc Index\n\t// DescTable is the inlined Table when Type equals ExternTypeTable\n\tDescTable Table\n\t// DescMem is the inlined Memory when Type equals ExternTypeMemory\n\tDescMem *Memory\n\t// DescGlobal is the inlined GlobalType when Type equals ExternTypeGlobal\n\tDescGlobal GlobalType\n\t// IndexPerType has the index of this import per ExternType.\n\tIndexPerType Index\n}\n\n// Memory describes the limits of pages (64KB) in a memory.\ntype Memory struct {\n\tMin, Cap, Max uint32\n\t// IsMaxEncoded true if the Max is encoded in the original binary.\n\tIsMaxEncoded bool\n\t// IsShared true if the memory is shared for access from multiple agents.\n\tIsShared bool\n}\n\n// Validate ensures values assigned to Min, Cap and Max are within valid thresholds.\nfunc (m *Memory) Validate(memoryLimitPages uint32) error {\n\tmin, capacity, max := m.Min, m.Cap, m.Max\n\n\tif max > memoryLimitPages {\n\t\treturn fmt.Errorf(\"max %d pages (%s) over limit of %d pages (%s)\",\n\t\t\tmax, PagesToUnitOfBytes(max), memoryLimitPages, PagesToUnitOfBytes(memoryLimitPages))\n\t} else if min > memoryLimitPages {\n\t\treturn fmt.Errorf(\"min %d pages (%s) over limit of %d pages (%s)\",\n\t\t\tmin, PagesToUnitOfBytes(min), memoryLimitPages, PagesToUnitOfBytes(memoryLimitPages))\n\t} else if min > max {\n\t\treturn fmt.Errorf(\"min %d pages (%s) > max %d pages (%s)\",\n\t\t\tmin, PagesToUnitOfBytes(min), max, PagesToUnitOfBytes(max))\n\t} else if capacity < min {\n\t\treturn fmt.Errorf(\"capacity %d pages (%s) less than minimum %d pages (%s)\",\n\t\t\tcapacity, PagesToUnitOfBytes(capacity), min, PagesToUnitOfBytes(min))\n\t} else if capacity > memoryLimitPages {\n\t\treturn fmt.Errorf(\"capacity %d pages (%s) over limit of %d pages (%s)\",\n\t\t\tcapacity, PagesToUnitOfBytes(capacity), memoryLimitPages, PagesToUnitOfBytes(memoryLimitPages))\n\t}\n\treturn nil\n}\n\ntype GlobalType struct {\n\tValType ValueType\n\tMutable bool\n}\n\ntype Global struct {\n\tType GlobalType\n\tInit ConstantExpression\n}\n\ntype ConstantExpression struct {\n\tOpcode Opcode\n\tData   []byte\n}\n\n// Export is the binary representation of an export indicated by Type\n// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#binary-export\ntype Export struct {\n\tType ExternType\n\n\t// Name is what the host refers to this definition as.\n\tName string\n\n\t// Index is the index of the definition to export, the index is by Type\n\t// e.g. If ExternTypeFunc, this is a position in the function index.\n\tIndex Index\n}\n\n// Code is an entry in the Module.CodeSection containing the locals and body of the function.\n// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#binary-code\ntype Code struct {\n\t// LocalTypes are any function-scoped variables in insertion order.\n\t// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#binary-local\n\tLocalTypes []ValueType\n\n\t// Body is a sequence of expressions ending in OpcodeEnd\n\t// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#binary-expr\n\tBody []byte\n\n\t// GoFunc is non-nil when IsHostFunction and defined in go, either\n\t// api.GoFunction or api.GoModuleFunction. When present, LocalTypes and Body must\n\t// be nil.\n\t//\n\t// Note: This has no serialization format, so is not encodable.\n\t// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#host-functions%E2%91%A2\n\tGoFunc interface{}\n\n\t// BodyOffsetInCodeSection is the offset of the beginning of the body in the code section.\n\t// This is used for DWARF based stack trace where a program counter represents an offset in code section.\n\tBodyOffsetInCodeSection uint64\n}\n\ntype DataSegment struct {\n\tOffsetExpression ConstantExpression\n\tInit             []byte\n\tPassive          bool\n}\n\n// IsPassive returns true if this data segment is \"passive\" in the sense that memory offset and\n// index is determined at runtime and used by OpcodeMemoryInitName instruction in the bulk memory\n// operations proposal.\n//\n// See https://www.w3.org/TR/2022/WD-wasm-core-2-20220419/appendix/changes.html#bulk-memory-and-table-instructions\nfunc (d *DataSegment) IsPassive() bool {\n\treturn d.Passive\n}\n\n// NameSection represent the known custom name subsections defined in the WebAssembly Binary Format\n//\n// Note: This can be nil if no names were decoded for any reason including configuration.\n// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#name-section%E2%91%A0\ntype NameSection struct {\n\t// ModuleName is the symbolic identifier for a module. e.g. math\n\t//\n\t// Note: This can be empty for any reason including configuration.\n\tModuleName string\n\n\t// FunctionNames is an association of a function index to its symbolic identifier. e.g. add\n\t//\n\t// * the key (idx) is in the function index, where module defined functions are preceded by imported ones.\n\t// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#functions%E2%91%A7\n\t//\n\t// For example, assuming the below text format is the second import, you would expect FunctionNames[1] = \"mul\"\n\t//\t(import \"Math\" \"Mul\" (func $mul (param $x f32) (param $y f32) (result f32)))\n\t//\n\t// Note: FunctionNames are only used for debugging. At runtime, functions are called based on raw numeric index.\n\t// Note: This can be nil for any reason including configuration.\n\tFunctionNames NameMap\n\n\t// LocalNames contains symbolic names for function parameters or locals that have one.\n\t//\n\t// Note: In the Text Format, function local names can inherit parameter\n\t// names from their type. Here are some examples:\n\t//  * (module (import (func (param $x i32) (param i32))) (func (type 0))) = [{0, {x,0}}]\n\t//  * (module (import (func (param i32) (param $y i32))) (func (type 0) (local $z i32))) = [0, [{y,1},{z,2}]]\n\t//  * (module (func (param $x i32) (local $y i32) (local $z i32))) = [{x,0},{y,1},{z,2}]\n\t//\n\t// Note: LocalNames are only used for debugging. At runtime, locals are called based on raw numeric index.\n\t// Note: This can be nil for any reason including configuration.\n\tLocalNames IndirectNameMap\n\n\t// ResultNames is a wazero-specific mechanism to store result names.\n\tResultNames IndirectNameMap\n}\n\n// CustomSection contains the name and raw data of a custom section.\ntype CustomSection struct {\n\tName string\n\tData []byte\n}\n\n// NameMap associates an index with any associated names.\n//\n// Note: Often the index bridges multiple sections. For example, the function index starts with any\n// ExternTypeFunc in the Module.ImportSection followed by the Module.FunctionSection\n//\n// Note: NameMap is unique by NameAssoc.Index, but NameAssoc.Name needn't be unique.\n// Note: When encoding in the Binary format, this must be ordered by NameAssoc.Index\n// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#binary-namemap\ntype NameMap []NameAssoc\n\ntype NameAssoc struct {\n\tIndex Index\n\tName  string\n}\n\n// IndirectNameMap associates an index with an association of names.\n//\n// Note: IndirectNameMap is unique by NameMapAssoc.Index, but NameMapAssoc.NameMap needn't be unique.\n// Note: When encoding in the Binary format, this must be ordered by NameMapAssoc.Index\n// https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#binary-indirectnamemap\ntype IndirectNameMap []NameMapAssoc\n\ntype NameMapAssoc struct {\n\tIndex   Index\n\tNameMap NameMap\n}\n\n// AllDeclarations returns all declarations for functions, globals, memories and tables in a module including imported ones.\nfunc (m *Module) AllDeclarations() (functions []Index, globals []GlobalType, memory *Memory, tables []Table, err error) {\n\tfor i := range m.ImportSection {\n\t\timp := &m.ImportSection[i]\n\t\tswitch imp.Type {\n\t\tcase ExternTypeFunc:\n\t\t\tfunctions = append(functions, imp.DescFunc)\n\t\tcase ExternTypeGlobal:\n\t\t\tglobals = append(globals, imp.DescGlobal)\n\t\tcase ExternTypeMemory:\n\t\t\tmemory = imp.DescMem\n\t\tcase ExternTypeTable:\n\t\t\ttables = append(tables, imp.DescTable)\n\t\t}\n\t}\n\n\tfunctions = append(functions, m.FunctionSection...)\n\tfor i := range m.GlobalSection {\n\t\tg := &m.GlobalSection[i]\n\t\tglobals = append(globals, g.Type)\n\t}\n\tif m.MemorySection != nil {\n\t\tif memory != nil { // shouldn't be possible due to Validate\n\t\t\terr = errors.New(\"at most one table allowed in module\")\n\t\t\treturn\n\t\t}\n\t\tmemory = m.MemorySection\n\t}\n\tif m.TableSection != nil {\n\t\ttables = append(tables, m.TableSection...)\n\t}\n\treturn\n}\n\n// SectionID identifies the sections of a Module in the WebAssembly 1.0 (20191205) Binary Format.\n//\n// Note: these are defined in the wasm package, instead of the binary package, as a key per section is needed regardless\n// of format, and deferring to the binary type avoids confusion.\n//\n// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#sections%E2%91%A0\ntype SectionID = byte\n\nconst (\n\t// SectionIDCustom includes the standard defined NameSection and possibly others not defined in the standard.\n\tSectionIDCustom SectionID = iota // don't add anything not in https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#sections%E2%91%A0\n\tSectionIDType\n\tSectionIDImport\n\tSectionIDFunction\n\tSectionIDTable\n\tSectionIDMemory\n\tSectionIDGlobal\n\tSectionIDExport\n\tSectionIDStart\n\tSectionIDElement\n\tSectionIDCode\n\tSectionIDData\n\n\t// SectionIDDataCount may exist in WebAssembly 2.0 or WebAssembly 1.0 with CoreFeatureBulkMemoryOperations enabled.\n\t//\n\t// See https://www.w3.org/TR/2022/WD-wasm-core-2-20220419/binary/modules.html#data-count-section\n\t// See https://www.w3.org/TR/2022/WD-wasm-core-2-20220419/appendix/changes.html#bulk-memory-and-table-instructions\n\tSectionIDDataCount\n)\n\n// SectionIDName returns the canonical name of a module section.\n// https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#sections%E2%91%A0\nfunc SectionIDName(sectionID SectionID) string {\n\tswitch sectionID {\n\tcase SectionIDCustom:\n\t\treturn \"custom\"\n\tcase SectionIDType:\n\t\treturn \"type\"\n\tcase SectionIDImport:\n\t\treturn \"import\"\n\tcase SectionIDFunction:\n\t\treturn \"function\"\n\tcase SectionIDTable:\n\t\treturn \"table\"\n\tcase SectionIDMemory:\n\t\treturn \"memory\"\n\tcase SectionIDGlobal:\n\t\treturn \"global\"\n\tcase SectionIDExport:\n\t\treturn \"export\"\n\tcase SectionIDStart:\n\t\treturn \"start\"\n\tcase SectionIDElement:\n\t\treturn \"element\"\n\tcase SectionIDCode:\n\t\treturn \"code\"\n\tcase SectionIDData:\n\t\treturn \"data\"\n\tcase SectionIDDataCount:\n\t\treturn \"data_count\"\n\t}\n\treturn \"unknown\"\n}\n\n// ValueType is an alias of api.ValueType defined to simplify imports.\ntype ValueType = api.ValueType\n\nconst (\n\tValueTypeI32 = api.ValueTypeI32\n\tValueTypeI64 = api.ValueTypeI64\n\tValueTypeF32 = api.ValueTypeF32\n\tValueTypeF64 = api.ValueTypeF64\n\t// TODO: ValueTypeV128 is not exposed in the api pkg yet.\n\tValueTypeV128 ValueType = 0x7b\n\t// TODO: ValueTypeFuncref is not exposed in the api pkg yet.\n\tValueTypeFuncref   ValueType = 0x70\n\tValueTypeExternref           = api.ValueTypeExternref\n)\n\n// ValueTypeName is an alias of api.ValueTypeName defined to simplify imports.\nfunc ValueTypeName(t ValueType) string {\n\tif t == ValueTypeFuncref {\n\t\treturn \"funcref\"\n\t} else if t == ValueTypeV128 {\n\t\treturn \"v128\"\n\t}\n\treturn api.ValueTypeName(t)\n}\n\nfunc isReferenceValueType(vt ValueType) bool {\n\treturn vt == ValueTypeExternref || vt == ValueTypeFuncref\n}\n\n// ExternType is an alias of api.ExternType defined to simplify imports.\ntype ExternType = api.ExternType\n\nconst (\n\tExternTypeFunc       = api.ExternTypeFunc\n\tExternTypeFuncName   = api.ExternTypeFuncName\n\tExternTypeTable      = api.ExternTypeTable\n\tExternTypeTableName  = api.ExternTypeTableName\n\tExternTypeMemory     = api.ExternTypeMemory\n\tExternTypeMemoryName = api.ExternTypeMemoryName\n\tExternTypeGlobal     = api.ExternTypeGlobal\n\tExternTypeGlobalName = api.ExternTypeGlobalName\n)\n\n// ExternTypeName is an alias of api.ExternTypeName defined to simplify imports.\nfunc ExternTypeName(t ValueType) string {\n\treturn api.ExternTypeName(t)\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/wasm/module_instance.go",
    "content": "package wasm\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\n\t\"github.com/tetratelabs/wazero/api\"\n\t\"github.com/tetratelabs/wazero/sys\"\n)\n\n// FailIfClosed returns a sys.ExitError if CloseWithExitCode was called.\nfunc (m *ModuleInstance) FailIfClosed() (err error) {\n\tif closed := m.Closed.Load(); closed != 0 {\n\t\tswitch closed & exitCodeFlagMask {\n\t\tcase exitCodeFlagResourceClosed:\n\t\tcase exitCodeFlagResourceNotClosed:\n\t\t\t// This happens when this module is closed asynchronously in CloseModuleOnCanceledOrTimeout,\n\t\t\t// and the closure of resources have been deferred here.\n\t\t\t_ = m.ensureResourcesClosed(context.Background())\n\t\t}\n\t\treturn sys.NewExitError(uint32(closed >> 32)) // Unpack the high order bits as the exit code.\n\t}\n\treturn nil\n}\n\n// CloseModuleOnCanceledOrTimeout take a context `ctx`, which might be a Cancel or Timeout context,\n// and spawns the Goroutine to check the context is canceled ot deadline exceeded. If it reaches\n// one of the conditions, it sets the appropriate exit code.\n//\n// Callers of this function must invoke the returned context.CancelFunc to release the spawned Goroutine.\nfunc (m *ModuleInstance) CloseModuleOnCanceledOrTimeout(ctx context.Context) context.CancelFunc {\n\t// Creating an empty channel in this case is a bit more efficient than\n\t// creating a context.Context and canceling it with the same effect. We\n\t// really just need to be notified when to stop listening to the users\n\t// context. Closing the channel will unblock the select in the goroutine\n\t// causing it to return an stop listening to ctx.Done().\n\tcancelChan := make(chan struct{})\n\tgo m.closeModuleOnCanceledOrTimeout(ctx, cancelChan)\n\treturn func() { close(cancelChan) }\n}\n\n// closeModuleOnCanceledOrTimeout is extracted from CloseModuleOnCanceledOrTimeout for testing.\nfunc (m *ModuleInstance) closeModuleOnCanceledOrTimeout(ctx context.Context, cancelChan <-chan struct{}) {\n\tselect {\n\tcase <-ctx.Done():\n\t\tselect {\n\t\tcase <-cancelChan:\n\t\t\t// In some cases by the time this goroutine is scheduled, the caller\n\t\t\t// has already closed both the context and the cancelChan. In this\n\t\t\t// case go will randomize which branch of the outer select to enter\n\t\t\t// and we don't want to close the module.\n\t\tdefault:\n\t\t\t// This is the same logic as CloseWithCtxErr except this calls closeWithExitCodeWithoutClosingResource\n\t\t\t// so that we can defer the resource closure in FailIfClosed.\n\t\t\tswitch {\n\t\t\tcase errors.Is(ctx.Err(), context.Canceled):\n\t\t\t\t// TODO: figure out how to report error here.\n\t\t\t\t_ = m.closeWithExitCodeWithoutClosingResource(sys.ExitCodeContextCanceled)\n\t\t\tcase errors.Is(ctx.Err(), context.DeadlineExceeded):\n\t\t\t\t// TODO: figure out how to report error here.\n\t\t\t\t_ = m.closeWithExitCodeWithoutClosingResource(sys.ExitCodeDeadlineExceeded)\n\t\t\t}\n\t\t}\n\tcase <-cancelChan:\n\t}\n}\n\n// CloseWithCtxErr closes the module with an exit code based on the type of\n// error reported by the context.\n//\n// If the context's error is unknown or nil, the module does not close.\nfunc (m *ModuleInstance) CloseWithCtxErr(ctx context.Context) {\n\tswitch {\n\tcase errors.Is(ctx.Err(), context.Canceled):\n\t\t// TODO: figure out how to report error here.\n\t\t_ = m.CloseWithExitCode(ctx, sys.ExitCodeContextCanceled)\n\tcase errors.Is(ctx.Err(), context.DeadlineExceeded):\n\t\t// TODO: figure out how to report error here.\n\t\t_ = m.CloseWithExitCode(ctx, sys.ExitCodeDeadlineExceeded)\n\t}\n}\n\n// Name implements the same method as documented on api.Module\nfunc (m *ModuleInstance) Name() string {\n\treturn m.ModuleName\n}\n\n// String implements the same method as documented on api.Module\nfunc (m *ModuleInstance) String() string {\n\treturn fmt.Sprintf(\"Module[%s]\", m.Name())\n}\n\n// Close implements the same method as documented on api.Module.\nfunc (m *ModuleInstance) Close(ctx context.Context) (err error) {\n\treturn m.CloseWithExitCode(ctx, 0)\n}\n\n// CloseWithExitCode implements the same method as documented on api.Module.\nfunc (m *ModuleInstance) CloseWithExitCode(ctx context.Context, exitCode uint32) (err error) {\n\tif !m.setExitCode(exitCode, exitCodeFlagResourceClosed) {\n\t\treturn nil // not an error to have already closed\n\t}\n\t_ = m.s.deleteModule(m)\n\treturn m.ensureResourcesClosed(ctx)\n}\n\n// IsClosed implements the same method as documented on api.Module.\nfunc (m *ModuleInstance) IsClosed() bool {\n\treturn m.Closed.Load() != 0\n}\n\nfunc (m *ModuleInstance) closeWithExitCodeWithoutClosingResource(exitCode uint32) (err error) {\n\tif !m.setExitCode(exitCode, exitCodeFlagResourceNotClosed) {\n\t\treturn nil // not an error to have already closed\n\t}\n\t_ = m.s.deleteModule(m)\n\treturn nil\n}\n\n// closeWithExitCode is the same as CloseWithExitCode besides this doesn't delete it from Store.moduleList.\nfunc (m *ModuleInstance) closeWithExitCode(ctx context.Context, exitCode uint32) (err error) {\n\tif !m.setExitCode(exitCode, exitCodeFlagResourceClosed) {\n\t\treturn nil // not an error to have already closed\n\t}\n\treturn m.ensureResourcesClosed(ctx)\n}\n\ntype exitCodeFlag = uint64\n\nconst exitCodeFlagMask = 0xff\n\nconst (\n\t// exitCodeFlagResourceClosed indicates that the module was closed and resources were already closed.\n\texitCodeFlagResourceClosed = 1 << iota\n\t// exitCodeFlagResourceNotClosed indicates that the module was closed while resources are not closed yet.\n\texitCodeFlagResourceNotClosed\n)\n\nfunc (m *ModuleInstance) setExitCode(exitCode uint32, flag exitCodeFlag) bool {\n\tclosed := flag | uint64(exitCode)<<32 // Store exitCode as high-order bits.\n\treturn m.Closed.CompareAndSwap(0, closed)\n}\n\n// ensureResourcesClosed ensures that resources assigned to ModuleInstance is released.\n// Only one call will happen per module, due to external atomic guards on Closed.\nfunc (m *ModuleInstance) ensureResourcesClosed(ctx context.Context) (err error) {\n\tif closeNotifier := m.CloseNotifier; closeNotifier != nil { // experimental\n\t\tcloseNotifier.CloseNotify(ctx, uint32(m.Closed.Load()>>32))\n\t\tm.CloseNotifier = nil\n\t}\n\n\tif sysCtx := m.Sys; sysCtx != nil { // nil if from HostModuleBuilder\n\t\terr = sysCtx.FS().Close()\n\t\tm.Sys = nil\n\t}\n\n\tif mem := m.MemoryInstance; mem != nil {\n\t\tif mem.expBuffer != nil {\n\t\t\tmem.expBuffer.Free()\n\t\t\tmem.expBuffer = nil\n\t\t}\n\t}\n\n\tif m.CodeCloser != nil {\n\t\tif e := m.CodeCloser.Close(ctx); err == nil {\n\t\t\terr = e\n\t\t}\n\t\tm.CodeCloser = nil\n\t}\n\treturn err\n}\n\n// Memory implements the same method as documented on api.Module.\nfunc (m *ModuleInstance) Memory() api.Memory {\n\treturn m.MemoryInstance\n}\n\n// ExportedMemory implements the same method as documented on api.Module.\nfunc (m *ModuleInstance) ExportedMemory(name string) api.Memory {\n\t_, err := m.getExport(name, ExternTypeMemory)\n\tif err != nil {\n\t\treturn nil\n\t}\n\t// We Assume that we have at most one memory.\n\treturn m.MemoryInstance\n}\n\n// ExportedMemoryDefinitions implements the same method as documented on\n// api.Module.\nfunc (m *ModuleInstance) ExportedMemoryDefinitions() map[string]api.MemoryDefinition {\n\t// Special case as we currently only support one memory.\n\tif mem := m.MemoryInstance; mem != nil {\n\t\t// Now, find out if it is exported\n\t\tfor name, exp := range m.Exports {\n\t\t\tif exp.Type == ExternTypeMemory {\n\t\t\t\treturn map[string]api.MemoryDefinition{name: mem.definition}\n\t\t\t}\n\t\t}\n\t}\n\treturn map[string]api.MemoryDefinition{}\n}\n\n// ExportedFunction implements the same method as documented on api.Module.\nfunc (m *ModuleInstance) ExportedFunction(name string) api.Function {\n\texp, err := m.getExport(name, ExternTypeFunc)\n\tif err != nil {\n\t\treturn nil\n\t}\n\treturn m.Engine.NewFunction(exp.Index)\n}\n\n// ExportedFunctionDefinitions implements the same method as documented on\n// api.Module.\nfunc (m *ModuleInstance) ExportedFunctionDefinitions() map[string]api.FunctionDefinition {\n\tresult := map[string]api.FunctionDefinition{}\n\tfor name, exp := range m.Exports {\n\t\tif exp.Type == ExternTypeFunc {\n\t\t\tresult[name] = m.Source.FunctionDefinition(exp.Index)\n\t\t}\n\t}\n\treturn result\n}\n\n// GlobalVal is an internal hack to get the lower 64 bits of a global.\nfunc (m *ModuleInstance) GlobalVal(idx Index) uint64 {\n\treturn m.Globals[idx].Val\n}\n\n// ExportedGlobal implements the same method as documented on api.Module.\nfunc (m *ModuleInstance) ExportedGlobal(name string) api.Global {\n\texp, err := m.getExport(name, ExternTypeGlobal)\n\tif err != nil {\n\t\treturn nil\n\t}\n\tg := m.Globals[exp.Index]\n\tif g.Type.Mutable {\n\t\treturn mutableGlobal{g: g}\n\t}\n\treturn constantGlobal{g: g}\n}\n\n// NumGlobal implements experimental.InternalModule.\nfunc (m *ModuleInstance) NumGlobal() int {\n\treturn len(m.Globals)\n}\n\n// Global implements experimental.InternalModule.\nfunc (m *ModuleInstance) Global(idx int) api.Global {\n\treturn constantGlobal{g: m.Globals[idx]}\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/wasm/module_instance_lookup.go",
    "content": "package wasm\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\t\"github.com/tetratelabs/wazero/api\"\n\t\"github.com/tetratelabs/wazero/internal/internalapi\"\n)\n\n// LookupFunction looks up the table by the given index, and returns the api.Function implementation if found,\n// otherwise this panics according to the same semantics as call_indirect instruction.\n// Currently, this is only used by emscripten which needs to do call_indirect-like operation in the host function.\nfunc (m *ModuleInstance) LookupFunction(t *TableInstance, typeId FunctionTypeID, tableOffset Index) api.Function {\n\tfm, index := m.Engine.LookupFunction(t, typeId, tableOffset)\n\tif source := fm.Source; source.IsHostModule {\n\t\t// This case, the found function is a host function stored in the table. Generally, Engine.NewFunction are only\n\t\t// responsible for calling Wasm-defined functions (not designed for calling Go functions!). Hence we need to wrap\n\t\t// the host function as a special case.\n\t\tdef := &source.FunctionDefinitionSection[index]\n\t\tgoF := source.CodeSection[index].GoFunc\n\t\tswitch typed := goF.(type) {\n\t\tcase api.GoFunction:\n\t\t\t// GoFunction doesn't need looked up module.\n\t\t\treturn &lookedUpGoFunction{def: def, g: goFunctionAsGoModuleFunction(typed)}\n\t\tcase api.GoModuleFunction:\n\t\t\treturn &lookedUpGoFunction{def: def, lookedUpModule: m, g: typed}\n\t\tdefault:\n\t\t\tpanic(fmt.Sprintf(\"unexpected GoFunc type: %T\", goF))\n\t\t}\n\t} else {\n\t\treturn fm.Engine.NewFunction(index)\n\t}\n}\n\n// lookedUpGoFunction implements lookedUpGoModuleFunction.\ntype lookedUpGoFunction struct {\n\tinternalapi.WazeroOnly\n\tdef *FunctionDefinition\n\t// lookedUpModule is the *ModuleInstance from which this Go function is looked up, i.e. owner of the table.\n\tlookedUpModule *ModuleInstance\n\tg              api.GoModuleFunction\n}\n\n// goFunctionAsGoModuleFunction converts api.GoFunction to api.GoModuleFunction which ignores the api.Module argument.\nfunc goFunctionAsGoModuleFunction(g api.GoFunction) api.GoModuleFunction {\n\treturn api.GoModuleFunc(func(ctx context.Context, _ api.Module, stack []uint64) {\n\t\tg.Call(ctx, stack)\n\t})\n}\n\n// Definition implements api.Function.\nfunc (l *lookedUpGoFunction) Definition() api.FunctionDefinition { return l.def }\n\n// Call implements api.Function.\nfunc (l *lookedUpGoFunction) Call(ctx context.Context, params ...uint64) ([]uint64, error) {\n\ttyp := l.def.Functype\n\tstackSize := typ.ParamNumInUint64\n\trn := typ.ResultNumInUint64\n\tif rn > stackSize {\n\t\tstackSize = rn\n\t}\n\tstack := make([]uint64, stackSize)\n\tcopy(stack, params)\n\treturn stack[:rn], l.CallWithStack(ctx, stack)\n}\n\n// CallWithStack implements api.Function.\nfunc (l *lookedUpGoFunction) CallWithStack(ctx context.Context, stack []uint64) error {\n\t// The Go host function always needs to access caller's module, in this case the one holding the table.\n\tl.g.Call(ctx, l.lookedUpModule, stack)\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/wasm/store.go",
    "content": "package wasm\n\nimport (\n\t\"context\"\n\t\"encoding/binary\"\n\t\"errors\"\n\t\"fmt\"\n\t\"sync\"\n\t\"sync/atomic\"\n\n\t\"github.com/tetratelabs/wazero/api\"\n\t\"github.com/tetratelabs/wazero/experimental\"\n\t\"github.com/tetratelabs/wazero/internal/expctxkeys\"\n\t\"github.com/tetratelabs/wazero/internal/internalapi\"\n\t\"github.com/tetratelabs/wazero/internal/leb128\"\n\tinternalsys \"github.com/tetratelabs/wazero/internal/sys\"\n\t\"github.com/tetratelabs/wazero/sys\"\n)\n\n// nameToModuleShrinkThreshold is the size the nameToModule map can grow to\n// before it starts to be monitored for shrinking.\n// The capacity will never be smaller than this once the threshold is met.\nconst nameToModuleShrinkThreshold = 100\n\ntype (\n\t// Store is the runtime representation of \"instantiated\" Wasm module and objects.\n\t// Multiple modules can be instantiated within a single store, and each instance,\n\t// (e.g. function instance) can be referenced by other module instances in a Store via Module.ImportSection.\n\t//\n\t// Every type whose name ends with \"Instance\" suffix belongs to exactly one store.\n\t//\n\t// Note that store is not thread (concurrency) safe, meaning that using single Store\n\t// via multiple goroutines might result in race conditions. In that case, the invocation\n\t// and access to any methods and field of Store must be guarded by mutex.\n\t//\n\t// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#store%E2%91%A0\n\tStore struct {\n\t\t// moduleList ensures modules are closed in reverse initialization order.\n\t\tmoduleList *ModuleInstance // guarded by mux\n\n\t\t// nameToModule holds the instantiated Wasm modules by module name from Instantiate.\n\t\t// It ensures no race conditions instantiating two modules of the same name.\n\t\tnameToModule map[string]*ModuleInstance // guarded by mux\n\n\t\t// nameToModuleCap tracks the growth of the nameToModule map in order to\n\t\t// track when to shrink it.\n\t\tnameToModuleCap int // guarded by mux\n\n\t\t// EnabledFeatures are read-only to allow optimizations.\n\t\tEnabledFeatures api.CoreFeatures\n\n\t\t// Engine is a global context for a Store which is in responsible for compilation and execution of Wasm modules.\n\t\tEngine Engine\n\n\t\t// typeIDs maps each FunctionType.String() to a unique FunctionTypeID. This is used at runtime to\n\t\t// do type-checks on indirect function calls.\n\t\ttypeIDs map[string]FunctionTypeID\n\n\t\t// functionMaxTypes represents the limit on the number of function types in a store.\n\t\t// Note: this is fixed to 2^27 but have this a field for testability.\n\t\tfunctionMaxTypes uint32\n\n\t\t// mux is used to guard the fields from concurrent access.\n\t\tmux sync.RWMutex\n\t}\n\n\t// ModuleInstance represents instantiated wasm module.\n\t// The difference from the spec is that in wazero, a ModuleInstance holds pointers\n\t// to the instances, rather than \"addresses\" (i.e. index to Store.Functions, Globals, etc) for convenience.\n\t//\n\t// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#syntax-moduleinst\n\t//\n\t// This implements api.Module.\n\tModuleInstance struct {\n\t\tinternalapi.WazeroOnlyType\n\n\t\tModuleName     string\n\t\tExports        map[string]*Export\n\t\tGlobals        []*GlobalInstance\n\t\tMemoryInstance *MemoryInstance\n\t\tTables         []*TableInstance\n\n\t\t// Engine implements function calls for this module.\n\t\tEngine ModuleEngine\n\n\t\t// TypeIDs is index-correlated with types and holds typeIDs which is uniquely assigned to a type by store.\n\t\t// This is necessary to achieve fast runtime type checking for indirect function calls at runtime.\n\t\tTypeIDs []FunctionTypeID\n\n\t\t// DataInstances holds data segments bytes of the module.\n\t\t// This is only used by bulk memory operations.\n\t\t//\n\t\t// https://www.w3.org/TR/2022/WD-wasm-core-2-20220419/exec/runtime.html#data-instances\n\t\tDataInstances []DataInstance\n\n\t\t// ElementInstances holds the element instance, and each holds the references to either functions\n\t\t// or external objects (unimplemented).\n\t\tElementInstances []ElementInstance\n\n\t\t// Sys is exposed for use in special imports such as WASI, assemblyscript.\n\t\t//\n\t\t// # Notes\n\t\t//\n\t\t//   - This is a part of ModuleInstance so that scope and Close is coherent.\n\t\t//   - This is not exposed outside this repository (as a host function\n\t\t//\t  parameter) because we haven't thought through capabilities based\n\t\t//\t  security implications.\n\t\tSys *internalsys.Context\n\n\t\t// Closed is used both to guard moduleEngine.CloseWithExitCode and to store the exit code.\n\t\t//\n\t\t// The update value is closedType + exitCode << 32. This ensures an exit code of zero isn't mistaken for never closed.\n\t\t//\n\t\t// Note: Exclusively reading and updating this with atomics guarantees cross-goroutine observations.\n\t\t// See /RATIONALE.md\n\t\tClosed atomic.Uint64\n\n\t\t// CodeCloser is non-nil when the code should be closed after this module.\n\t\tCodeCloser api.Closer\n\n\t\t// s is the Store on which this module is instantiated.\n\t\ts *Store\n\t\t// prev and next hold the nodes in the linked list of ModuleInstance held by Store.\n\t\tprev, next *ModuleInstance\n\t\t// Source is a pointer to the Module from which this ModuleInstance derives.\n\t\tSource *Module\n\n\t\t// CloseNotifier is an experimental hook called once on close.\n\t\tCloseNotifier experimental.CloseNotifier\n\t}\n\n\t// DataInstance holds bytes corresponding to the data segment in a module.\n\t//\n\t// https://www.w3.org/TR/2022/WD-wasm-core-2-20220419/exec/runtime.html#data-instances\n\tDataInstance = []byte\n\n\t// GlobalInstance represents a global instance in a store.\n\t// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#global-instances%E2%91%A0\n\tGlobalInstance struct {\n\t\tType GlobalType\n\t\t// Val holds a 64-bit representation of the actual value.\n\t\t// If me is non-nil, the value will not be updated and the current value is stored in the module engine.\n\t\tVal uint64\n\t\t// ValHi is only used for vector type globals, and holds the higher bits of the vector.\n\t\t// If me is non-nil, the value will not be updated and the current value is stored in the module engine.\n\t\tValHi uint64\n\t\t// Me is the module engine that owns this global instance.\n\t\t// The .Val and .ValHi fields are only valid when me is nil.\n\t\t// If me is non-nil, the value is stored in the module engine.\n\t\tMe    ModuleEngine\n\t\tIndex Index\n\t}\n\n\t// FunctionTypeID is a uniquely assigned integer for a function type.\n\t// This is wazero specific runtime object and specific to a store,\n\t// and used at runtime to do type-checks on indirect function calls.\n\tFunctionTypeID uint32\n)\n\n// The wazero specific limitations described at RATIONALE.md.\nconst maximumFunctionTypes = 1 << 27\n\n// GetFunctionTypeID is used by emscripten.\nfunc (m *ModuleInstance) GetFunctionTypeID(t *FunctionType) FunctionTypeID {\n\tid, err := m.s.GetFunctionTypeID(t)\n\tif err != nil {\n\t\t// This is not recoverable in practice since the only error GetFunctionTypeID returns is\n\t\t// when there's too many function types in the store.\n\t\tpanic(err)\n\t}\n\treturn id\n}\n\nfunc (m *ModuleInstance) buildElementInstances(elements []ElementSegment) {\n\tm.ElementInstances = make([][]Reference, len(elements))\n\tfor i, elm := range elements {\n\t\tif elm.Type == RefTypeFuncref && elm.Mode == ElementModePassive {\n\t\t\t// Only passive elements can be access as element instances.\n\t\t\t// See https://www.w3.org/TR/2022/WD-wasm-core-2-20220419/syntax/modules.html#element-segments\n\t\t\tinits := elm.Init\n\t\t\tinst := make([]Reference, len(inits))\n\t\t\tm.ElementInstances[i] = inst\n\t\t\tfor j, idx := range inits {\n\t\t\t\tif index, ok := unwrapElementInitGlobalReference(idx); ok {\n\t\t\t\t\tglobal := m.Globals[index]\n\t\t\t\t\tinst[j] = Reference(global.Val)\n\t\t\t\t} else {\n\t\t\t\t\tif idx != ElementInitNullReference {\n\t\t\t\t\t\tinst[j] = m.Engine.FunctionInstanceReference(idx)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc (m *ModuleInstance) applyElements(elems []ElementSegment) {\n\tfor elemI := range elems {\n\t\telem := &elems[elemI]\n\t\tif !elem.IsActive() ||\n\t\t\t// Per https://github.com/WebAssembly/spec/issues/1427 init can be no-op.\n\t\t\tlen(elem.Init) == 0 {\n\t\t\tcontinue\n\t\t}\n\t\tvar offset uint32\n\t\tif elem.OffsetExpr.Opcode == OpcodeGlobalGet {\n\t\t\t// Ignore error as it's already validated.\n\t\t\tglobalIdx, _, _ := leb128.LoadUint32(elem.OffsetExpr.Data)\n\t\t\tglobal := m.Globals[globalIdx]\n\t\t\toffset = uint32(global.Val)\n\t\t} else {\n\t\t\t// Ignore error as it's already validated.\n\t\t\to, _, _ := leb128.LoadInt32(elem.OffsetExpr.Data)\n\t\t\toffset = uint32(o)\n\t\t}\n\n\t\ttable := m.Tables[elem.TableIndex]\n\t\treferences := table.References\n\t\tif int(offset)+len(elem.Init) > len(references) {\n\t\t\t// ErrElementOffsetOutOfBounds is the error raised when the active element offset exceeds the table length.\n\t\t\t// Before CoreFeatureReferenceTypes, this was checked statically before instantiation, after the proposal,\n\t\t\t// this must be raised as runtime error (as in assert_trap in spectest), not even an instantiation error.\n\t\t\t// https://github.com/WebAssembly/spec/blob/d39195773112a22b245ffbe864bab6d1182ccb06/test/core/linking.wast#L264-L274\n\t\t\t//\n\t\t\t// In wazero, we ignore it since in any way, the instantiated module and engines are fine and can be used\n\t\t\t// for function invocations.\n\t\t\treturn\n\t\t}\n\n\t\tif table.Type == RefTypeExternref {\n\t\t\tfor i := 0; i < len(elem.Init); i++ {\n\t\t\t\treferences[offset+uint32(i)] = Reference(0)\n\t\t\t}\n\t\t} else {\n\t\t\tfor i, init := range elem.Init {\n\t\t\t\tif init == ElementInitNullReference {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tvar ref Reference\n\t\t\t\tif index, ok := unwrapElementInitGlobalReference(init); ok {\n\t\t\t\t\tglobal := m.Globals[index]\n\t\t\t\t\tref = Reference(global.Val)\n\t\t\t\t} else {\n\t\t\t\t\tref = m.Engine.FunctionInstanceReference(index)\n\t\t\t\t}\n\t\t\t\treferences[offset+uint32(i)] = ref\n\t\t\t}\n\t\t}\n\t}\n}\n\n// validateData ensures that data segments are valid in terms of memory boundary.\n// Note: this is used only when bulk-memory/reference type feature is disabled.\nfunc (m *ModuleInstance) validateData(data []DataSegment) (err error) {\n\tfor i := range data {\n\t\td := &data[i]\n\t\tif !d.IsPassive() {\n\t\t\toffset := int(executeConstExpressionI32(m.Globals, &d.OffsetExpression))\n\t\t\tceil := offset + len(d.Init)\n\t\t\tif offset < 0 || ceil > len(m.MemoryInstance.Buffer) {\n\t\t\t\treturn fmt.Errorf(\"%s[%d]: out of bounds memory access\", SectionIDName(SectionIDData), i)\n\t\t\t}\n\t\t}\n\t}\n\treturn\n}\n\n// applyData uses the given data segments and mutate the memory according to the initial contents on it\n// and populate the `DataInstances`. This is called after all the validation phase passes and out of\n// bounds memory access error here is not a validation error, but rather a runtime error.\nfunc (m *ModuleInstance) applyData(data []DataSegment) error {\n\tm.DataInstances = make([][]byte, len(data))\n\tfor i := range data {\n\t\td := &data[i]\n\t\tm.DataInstances[i] = d.Init\n\t\tif !d.IsPassive() {\n\t\t\toffset := executeConstExpressionI32(m.Globals, &d.OffsetExpression)\n\t\t\tif offset < 0 || int(offset)+len(d.Init) > len(m.MemoryInstance.Buffer) {\n\t\t\t\treturn fmt.Errorf(\"%s[%d]: out of bounds memory access\", SectionIDName(SectionIDData), i)\n\t\t\t}\n\t\t\tcopy(m.MemoryInstance.Buffer[offset:], d.Init)\n\t\t}\n\t}\n\treturn nil\n}\n\n// GetExport returns an export of the given name and type or errs if not exported or the wrong type.\nfunc (m *ModuleInstance) getExport(name string, et ExternType) (*Export, error) {\n\texp, ok := m.Exports[name]\n\tif !ok {\n\t\treturn nil, fmt.Errorf(\"%q is not exported in module %q\", name, m.ModuleName)\n\t}\n\tif exp.Type != et {\n\t\treturn nil, fmt.Errorf(\"export %q in module %q is a %s, not a %s\", name, m.ModuleName, ExternTypeName(exp.Type), ExternTypeName(et))\n\t}\n\treturn exp, nil\n}\n\nfunc NewStore(enabledFeatures api.CoreFeatures, engine Engine) *Store {\n\treturn &Store{\n\t\tnameToModule:     map[string]*ModuleInstance{},\n\t\tnameToModuleCap:  nameToModuleShrinkThreshold,\n\t\tEnabledFeatures:  enabledFeatures,\n\t\tEngine:           engine,\n\t\ttypeIDs:          map[string]FunctionTypeID{},\n\t\tfunctionMaxTypes: maximumFunctionTypes,\n\t}\n}\n\n// Instantiate uses name instead of the Module.NameSection ModuleName as it allows instantiating the same module under\n// different names safely and concurrently.\n//\n// * ctx: the default context used for function calls.\n// * name: the name of the module.\n// * sys: the system context, which will be closed (SysContext.Close) on ModuleInstance.Close.\n//\n// Note: Module.Validate must be called prior to instantiation.\nfunc (s *Store) Instantiate(\n\tctx context.Context,\n\tmodule *Module,\n\tname string,\n\tsys *internalsys.Context,\n\ttypeIDs []FunctionTypeID,\n) (*ModuleInstance, error) {\n\t// Instantiate the module and add it to the store so that other modules can import it.\n\tm, err := s.instantiate(ctx, module, name, sys, typeIDs)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Now that the instantiation is complete without error, add it.\n\tif err = s.registerModule(m); err != nil {\n\t\t_ = m.Close(ctx)\n\t\treturn nil, err\n\t}\n\treturn m, nil\n}\n\nfunc (s *Store) instantiate(\n\tctx context.Context,\n\tmodule *Module,\n\tname string,\n\tsysCtx *internalsys.Context,\n\ttypeIDs []FunctionTypeID,\n) (m *ModuleInstance, err error) {\n\tm = &ModuleInstance{ModuleName: name, TypeIDs: typeIDs, Sys: sysCtx, s: s, Source: module}\n\n\tm.Tables = make([]*TableInstance, int(module.ImportTableCount)+len(module.TableSection))\n\tm.Globals = make([]*GlobalInstance, int(module.ImportGlobalCount)+len(module.GlobalSection))\n\tm.Engine, err = s.Engine.NewModuleEngine(module, m)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif err = m.resolveImports(ctx, module); err != nil {\n\t\treturn nil, err\n\t}\n\n\terr = m.buildTables(module,\n\t\t// As of reference-types proposal, boundary check must be done after instantiation.\n\t\ts.EnabledFeatures.IsEnabled(api.CoreFeatureReferenceTypes))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tallocator, _ := ctx.Value(expctxkeys.MemoryAllocatorKey{}).(experimental.MemoryAllocator)\n\n\tm.buildGlobals(module, m.Engine.FunctionInstanceReference)\n\tm.buildMemory(module, allocator)\n\tm.Exports = module.Exports\n\tfor _, exp := range m.Exports {\n\t\tif exp.Type == ExternTypeTable {\n\t\t\tt := m.Tables[exp.Index]\n\t\t\tt.involvingModuleInstances = append(t.involvingModuleInstances, m)\n\t\t}\n\t}\n\n\t// As of reference types proposal, data segment validation must happen after instantiation,\n\t// and the side effect must persist even if there's out of bounds error after instantiation.\n\t// https://github.com/WebAssembly/spec/blob/d39195773112a22b245ffbe864bab6d1182ccb06/test/core/linking.wast#L395-L405\n\tif !s.EnabledFeatures.IsEnabled(api.CoreFeatureReferenceTypes) {\n\t\tif err = m.validateData(module.DataSection); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\t// After engine creation, we can create the funcref element instances and initialize funcref type globals.\n\tm.buildElementInstances(module.ElementSection)\n\n\t// Now all the validation passes, we are safe to mutate memory instances (possibly imported ones).\n\tif err = m.applyData(module.DataSection); err != nil {\n\t\treturn nil, err\n\t}\n\n\tm.applyElements(module.ElementSection)\n\n\tm.Engine.DoneInstantiation()\n\n\t// Execute the start function.\n\tif module.StartSection != nil {\n\t\tfuncIdx := *module.StartSection\n\t\tce := m.Engine.NewFunction(funcIdx)\n\t\t_, err = ce.Call(ctx)\n\t\tif exitErr, ok := err.(*sys.ExitError); ok { // Don't wrap an exit error!\n\t\t\treturn nil, exitErr\n\t\t} else if err != nil {\n\t\t\treturn nil, fmt.Errorf(\"start %s failed: %w\", module.funcDesc(SectionIDFunction, funcIdx), err)\n\t\t}\n\t}\n\treturn\n}\n\nfunc (m *ModuleInstance) resolveImports(ctx context.Context, module *Module) (err error) {\n\t// Check if ctx contains an ImportResolver.\n\tresolveImport, _ := ctx.Value(expctxkeys.ImportResolverKey{}).(experimental.ImportResolver)\n\n\tfor moduleName, imports := range module.ImportPerModule {\n\t\tvar importedModule *ModuleInstance\n\t\tif resolveImport != nil {\n\t\t\tif v := resolveImport(moduleName); v != nil {\n\t\t\t\timportedModule = v.(*ModuleInstance)\n\t\t\t}\n\t\t}\n\t\tif importedModule == nil {\n\t\t\timportedModule, err = m.s.module(moduleName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\n\t\tfor _, i := range imports {\n\t\t\tvar imported *Export\n\t\t\timported, err = importedModule.getExport(i.Name, i.Type)\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tswitch i.Type {\n\t\t\tcase ExternTypeFunc:\n\t\t\t\texpectedType := &module.TypeSection[i.DescFunc]\n\t\t\t\tsrc := importedModule.Source\n\t\t\t\tactual := src.typeOfFunction(imported.Index)\n\t\t\t\tif !actual.EqualsSignature(expectedType.Params, expectedType.Results) {\n\t\t\t\t\terr = errorInvalidImport(i, fmt.Errorf(\"signature mismatch: %s != %s\", expectedType, actual))\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tm.Engine.ResolveImportedFunction(i.IndexPerType, i.DescFunc, imported.Index, importedModule.Engine)\n\t\t\tcase ExternTypeTable:\n\t\t\t\texpected := i.DescTable\n\t\t\t\timportedTable := importedModule.Tables[imported.Index]\n\t\t\t\tif expected.Type != importedTable.Type {\n\t\t\t\t\terr = errorInvalidImport(i, fmt.Errorf(\"table type mismatch: %s != %s\",\n\t\t\t\t\t\tRefTypeName(expected.Type), RefTypeName(importedTable.Type)))\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tif expected.Min > importedTable.Min {\n\t\t\t\t\terr = errorMinSizeMismatch(i, expected.Min, importedTable.Min)\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tif expected.Max != nil {\n\t\t\t\t\texpectedMax := *expected.Max\n\t\t\t\t\tif importedTable.Max == nil {\n\t\t\t\t\t\terr = errorNoMax(i, expectedMax)\n\t\t\t\t\t\treturn\n\t\t\t\t\t} else if expectedMax < *importedTable.Max {\n\t\t\t\t\t\terr = errorMaxSizeMismatch(i, expectedMax, *importedTable.Max)\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tm.Tables[i.IndexPerType] = importedTable\n\t\t\t\timportedTable.involvingModuleInstancesMutex.Lock()\n\t\t\t\tif len(importedTable.involvingModuleInstances) == 0 {\n\t\t\t\t\tpanic(\"BUG: involvingModuleInstances must not be nil when it's imported\")\n\t\t\t\t}\n\t\t\t\timportedTable.involvingModuleInstances = append(importedTable.involvingModuleInstances, m)\n\t\t\t\timportedTable.involvingModuleInstancesMutex.Unlock()\n\t\t\tcase ExternTypeMemory:\n\t\t\t\texpected := i.DescMem\n\t\t\t\timportedMemory := importedModule.MemoryInstance\n\n\t\t\t\tif expected.Min > memoryBytesNumToPages(uint64(len(importedMemory.Buffer))) {\n\t\t\t\t\terr = errorMinSizeMismatch(i, expected.Min, importedMemory.Min)\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tif expected.Max < importedMemory.Max {\n\t\t\t\t\terr = errorMaxSizeMismatch(i, expected.Max, importedMemory.Max)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tm.MemoryInstance = importedMemory\n\t\t\t\tm.Engine.ResolveImportedMemory(importedModule.Engine)\n\t\t\tcase ExternTypeGlobal:\n\t\t\t\texpected := i.DescGlobal\n\t\t\t\timportedGlobal := importedModule.Globals[imported.Index]\n\n\t\t\t\tif expected.Mutable != importedGlobal.Type.Mutable {\n\t\t\t\t\terr = errorInvalidImport(i, fmt.Errorf(\"mutability mismatch: %t != %t\",\n\t\t\t\t\t\texpected.Mutable, importedGlobal.Type.Mutable))\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tif expected.ValType != importedGlobal.Type.ValType {\n\t\t\t\t\terr = errorInvalidImport(i, fmt.Errorf(\"value type mismatch: %s != %s\",\n\t\t\t\t\t\tValueTypeName(expected.ValType), ValueTypeName(importedGlobal.Type.ValType)))\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tm.Globals[i.IndexPerType] = importedGlobal\n\t\t\t}\n\t\t}\n\t}\n\treturn\n}\n\nfunc errorMinSizeMismatch(i *Import, expected, actual uint32) error {\n\treturn errorInvalidImport(i, fmt.Errorf(\"minimum size mismatch: %d > %d\", expected, actual))\n}\n\nfunc errorNoMax(i *Import, expected uint32) error {\n\treturn errorInvalidImport(i, fmt.Errorf(\"maximum size mismatch: %d, but actual has no max\", expected))\n}\n\nfunc errorMaxSizeMismatch(i *Import, expected, actual uint32) error {\n\treturn errorInvalidImport(i, fmt.Errorf(\"maximum size mismatch: %d < %d\", expected, actual))\n}\n\nfunc errorInvalidImport(i *Import, err error) error {\n\treturn fmt.Errorf(\"import %s[%s.%s]: %w\", ExternTypeName(i.Type), i.Module, i.Name, err)\n}\n\n// executeConstExpressionI32 executes the ConstantExpression which returns ValueTypeI32.\n// The validity of the expression is ensured when calling this function as this is only called\n// during instantiation phrase, and the validation happens in compilation (validateConstExpression).\nfunc executeConstExpressionI32(importedGlobals []*GlobalInstance, expr *ConstantExpression) (ret int32) {\n\tswitch expr.Opcode {\n\tcase OpcodeI32Const:\n\t\tret, _, _ = leb128.LoadInt32(expr.Data)\n\tcase OpcodeGlobalGet:\n\t\tid, _, _ := leb128.LoadUint32(expr.Data)\n\t\tg := importedGlobals[id]\n\t\tret = int32(g.Val)\n\t}\n\treturn\n}\n\n// initialize initializes the value of this global instance given the const expr and imported globals.\n// funcRefResolver is called to get the actual funcref (engine specific) from the OpcodeRefFunc const expr.\n//\n// Global initialization constant expression can only reference the imported globals.\n// See the note on https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#constant-expressions%E2%91%A0\nfunc (g *GlobalInstance) initialize(importedGlobals []*GlobalInstance, expr *ConstantExpression, funcRefResolver func(funcIndex Index) Reference) {\n\tswitch expr.Opcode {\n\tcase OpcodeI32Const:\n\t\t// Treat constants as signed as their interpretation is not yet known per /RATIONALE.md\n\t\tv, _, _ := leb128.LoadInt32(expr.Data)\n\t\tg.Val = uint64(uint32(v))\n\tcase OpcodeI64Const:\n\t\t// Treat constants as signed as their interpretation is not yet known per /RATIONALE.md\n\t\tv, _, _ := leb128.LoadInt64(expr.Data)\n\t\tg.Val = uint64(v)\n\tcase OpcodeF32Const:\n\t\tg.Val = uint64(binary.LittleEndian.Uint32(expr.Data))\n\tcase OpcodeF64Const:\n\t\tg.Val = binary.LittleEndian.Uint64(expr.Data)\n\tcase OpcodeGlobalGet:\n\t\tid, _, _ := leb128.LoadUint32(expr.Data)\n\t\timportedG := importedGlobals[id]\n\t\tswitch importedG.Type.ValType {\n\t\tcase ValueTypeI32:\n\t\t\tg.Val = uint64(uint32(importedG.Val))\n\t\tcase ValueTypeI64:\n\t\t\tg.Val = importedG.Val\n\t\tcase ValueTypeF32:\n\t\t\tg.Val = importedG.Val\n\t\tcase ValueTypeF64:\n\t\t\tg.Val = importedG.Val\n\t\tcase ValueTypeV128:\n\t\t\tg.Val, g.ValHi = importedG.Val, importedG.ValHi\n\t\tcase ValueTypeFuncref, ValueTypeExternref:\n\t\t\tg.Val = importedG.Val\n\t\t}\n\tcase OpcodeRefNull:\n\t\tswitch expr.Data[0] {\n\t\tcase ValueTypeExternref, ValueTypeFuncref:\n\t\t\tg.Val = 0 // Reference types are opaque 64bit pointer at runtime.\n\t\t}\n\tcase OpcodeRefFunc:\n\t\tv, _, _ := leb128.LoadUint32(expr.Data)\n\t\tg.Val = uint64(funcRefResolver(v))\n\tcase OpcodeVecV128Const:\n\t\tg.Val, g.ValHi = binary.LittleEndian.Uint64(expr.Data[0:8]), binary.LittleEndian.Uint64(expr.Data[8:16])\n\t}\n}\n\n// String implements api.Global.\nfunc (g *GlobalInstance) String() string {\n\tswitch g.Type.ValType {\n\tcase ValueTypeI32, ValueTypeI64:\n\t\treturn fmt.Sprintf(\"global(%d)\", g.Val)\n\tcase ValueTypeF32:\n\t\treturn fmt.Sprintf(\"global(%f)\", api.DecodeF32(g.Val))\n\tcase ValueTypeF64:\n\t\treturn fmt.Sprintf(\"global(%f)\", api.DecodeF64(g.Val))\n\tdefault:\n\t\tpanic(fmt.Errorf(\"BUG: unknown value type %X\", g.Type.ValType))\n\t}\n}\n\nfunc (g *GlobalInstance) Value() (uint64, uint64) {\n\tif g.Me != nil {\n\t\treturn g.Me.GetGlobalValue(g.Index)\n\t}\n\treturn g.Val, g.ValHi\n}\n\nfunc (g *GlobalInstance) SetValue(lo, hi uint64) {\n\tif g.Me != nil {\n\t\tg.Me.SetGlobalValue(g.Index, lo, hi)\n\t} else {\n\t\tg.Val, g.ValHi = lo, hi\n\t}\n}\n\nfunc (s *Store) GetFunctionTypeIDs(ts []FunctionType) ([]FunctionTypeID, error) {\n\tret := make([]FunctionTypeID, len(ts))\n\tfor i := range ts {\n\t\tt := &ts[i]\n\t\tinst, err := s.GetFunctionTypeID(t)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tret[i] = inst\n\t}\n\treturn ret, nil\n}\n\nfunc (s *Store) GetFunctionTypeID(t *FunctionType) (FunctionTypeID, error) {\n\ts.mux.RLock()\n\tkey := t.key()\n\tid, ok := s.typeIDs[key]\n\ts.mux.RUnlock()\n\tif !ok {\n\t\ts.mux.Lock()\n\t\tdefer s.mux.Unlock()\n\t\t// Check again in case another goroutine has already added the type.\n\t\tif id, ok = s.typeIDs[key]; ok {\n\t\t\treturn id, nil\n\t\t}\n\t\tl := len(s.typeIDs)\n\t\tif uint32(l) >= s.functionMaxTypes {\n\t\t\treturn 0, fmt.Errorf(\"too many function types in a store\")\n\t\t}\n\t\tid = FunctionTypeID(l)\n\t\ts.typeIDs[key] = id\n\t}\n\treturn id, nil\n}\n\n// CloseWithExitCode implements the same method as documented on wazero.Runtime.\nfunc (s *Store) CloseWithExitCode(ctx context.Context, exitCode uint32) error {\n\ts.mux.Lock()\n\tdefer s.mux.Unlock()\n\t// Close modules in reverse initialization order.\n\tvar errs []error\n\tfor m := s.moduleList; m != nil; m = m.next {\n\t\t// If closing this module errs, proceed anyway to close the others.\n\t\tif err := m.closeWithExitCode(ctx, exitCode); err != nil {\n\t\t\terrs = append(errs, err)\n\t\t}\n\t}\n\ts.moduleList = nil\n\ts.nameToModule = nil\n\ts.nameToModuleCap = 0\n\ts.typeIDs = nil\n\treturn errors.Join(errs...)\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/wasm/store_module_list.go",
    "content": "package wasm\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n)\n\n// deleteModule makes the moduleName available for instantiation again.\nfunc (s *Store) deleteModule(m *ModuleInstance) error {\n\ts.mux.Lock()\n\tdefer s.mux.Unlock()\n\n\t// Remove this module name.\n\tif m.prev != nil {\n\t\tm.prev.next = m.next\n\t}\n\tif m.next != nil {\n\t\tm.next.prev = m.prev\n\t}\n\tif s.moduleList == m {\n\t\ts.moduleList = m.next\n\t}\n\t// Clear the m state so it does not enter any other branch\n\t// on subsequent calls to deleteModule.\n\tm.prev = nil\n\tm.next = nil\n\n\tif m.ModuleName != \"\" {\n\t\tdelete(s.nameToModule, m.ModuleName)\n\n\t\t// Shrink the map if it's allocated more than twice the size of the list\n\t\tnewCap := len(s.nameToModule)\n\t\tif newCap < nameToModuleShrinkThreshold {\n\t\t\tnewCap = nameToModuleShrinkThreshold\n\t\t}\n\t\tif newCap*2 <= s.nameToModuleCap {\n\t\t\tnameToModule := make(map[string]*ModuleInstance, newCap)\n\t\t\tfor k, v := range s.nameToModule {\n\t\t\t\tnameToModule[k] = v\n\t\t\t}\n\t\t\ts.nameToModule = nameToModule\n\t\t\ts.nameToModuleCap = newCap\n\t\t}\n\t}\n\treturn nil\n}\n\n// module returns the module of the given name or error if not in this store\nfunc (s *Store) module(moduleName string) (*ModuleInstance, error) {\n\ts.mux.RLock()\n\tdefer s.mux.RUnlock()\n\tm, ok := s.nameToModule[moduleName]\n\tif !ok {\n\t\treturn nil, fmt.Errorf(\"module[%s] not instantiated\", moduleName)\n\t}\n\treturn m, nil\n}\n\n// registerModule registers a ModuleInstance into the store.\n// This makes the ModuleInstance visible for import if it's not anonymous, and ensures it is closed when the store is.\nfunc (s *Store) registerModule(m *ModuleInstance) error {\n\ts.mux.Lock()\n\tdefer s.mux.Unlock()\n\n\tif s.nameToModule == nil {\n\t\treturn errors.New(\"already closed\")\n\t}\n\n\tif m.ModuleName != \"\" {\n\t\tif _, ok := s.nameToModule[m.ModuleName]; ok {\n\t\t\treturn fmt.Errorf(\"module[%s] has already been instantiated\", m.ModuleName)\n\t\t}\n\t\ts.nameToModule[m.ModuleName] = m\n\t\tif len(s.nameToModule) > s.nameToModuleCap {\n\t\t\ts.nameToModuleCap = len(s.nameToModule)\n\t\t}\n\t}\n\n\t// Add the newest node to the moduleNamesList as the head.\n\tm.next = s.moduleList\n\tif m.next != nil {\n\t\tm.next.prev = m\n\t}\n\ts.moduleList = m\n\treturn nil\n}\n\n// Module implements wazero.Runtime Module\nfunc (s *Store) Module(moduleName string) *ModuleInstance {\n\tm, err := s.module(moduleName)\n\tif err != nil {\n\t\treturn nil\n\t}\n\treturn m\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/wasm/table.go",
    "content": "package wasm\n\nimport (\n\t\"fmt\"\n\t\"math\"\n\t\"sync\"\n\n\t\"github.com/tetratelabs/wazero/api\"\n\t\"github.com/tetratelabs/wazero/internal/leb128\"\n)\n\n// Table describes the limits of elements and its type in a table.\ntype Table struct {\n\tMin  uint32\n\tMax  *uint32\n\tType RefType\n}\n\n// RefType is either RefTypeFuncref or RefTypeExternref as of WebAssembly core 2.0.\ntype RefType = byte\n\nconst (\n\t// RefTypeFuncref represents a reference to a function.\n\tRefTypeFuncref = ValueTypeFuncref\n\t// RefTypeExternref represents a reference to a host object, which is not currently supported in wazero.\n\tRefTypeExternref = ValueTypeExternref\n)\n\nfunc RefTypeName(t RefType) (ret string) {\n\tswitch t {\n\tcase RefTypeFuncref:\n\t\tret = \"funcref\"\n\tcase RefTypeExternref:\n\t\tret = \"externref\"\n\tdefault:\n\t\tret = fmt.Sprintf(\"unknown(0x%x)\", t)\n\t}\n\treturn\n}\n\n// ElementMode represents a mode of element segment which is either active, passive or declarative.\n//\n// https://www.w3.org/TR/2022/WD-wasm-core-2-20220419/syntax/modules.html#element-segments\ntype ElementMode = byte\n\nconst (\n\t// ElementModeActive is the mode which requires the runtime to initialize table with the contents in .Init field combined with OffsetExpr.\n\tElementModeActive ElementMode = iota\n\t// ElementModePassive is the mode which doesn't require the runtime to initialize table, and only used with OpcodeTableInitName.\n\tElementModePassive\n\t// ElementModeDeclarative is introduced in reference-types proposal which can be used to declare function indexes used by OpcodeRefFunc.\n\tElementModeDeclarative\n)\n\n// ElementSegment are initialization instructions for a TableInstance\n//\n// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#syntax-elem\ntype ElementSegment struct {\n\t// OffsetExpr returns the table element offset to apply to Init indices.\n\t// Note: This can be validated prior to instantiation unless it includes OpcodeGlobalGet (an imported global).\n\tOffsetExpr ConstantExpression\n\n\t// TableIndex is the table's index to which this element segment is applied.\n\t// Note: This is used if and only if the Mode is active.\n\tTableIndex Index\n\n\t// Followings are set/used regardless of the Mode.\n\n\t// Init indices are (nullable) table elements where each index is the function index by which the module initialize the table.\n\tInit []Index\n\n\t// Type holds the type of this element segment, which is the RefType in WebAssembly 2.0.\n\tType RefType\n\n\t// Mode is the mode of this element segment.\n\tMode ElementMode\n}\n\nconst (\n\t// ElementInitNullReference represents the null reference in ElementSegment's Init.\n\t// In Wasm spec, an init item represents either Function's Index or null reference,\n\t// and in wazero, we limit the maximum number of functions available in a module to\n\t// MaximumFunctionIndex. Therefore, it is safe to use 1 << 31 to represent the null\n\t// reference in Element segments.\n\tElementInitNullReference Index = 1 << 31\n\t// elementInitImportedGlobalReferenceType represents an init item which is resolved via an imported global constexpr.\n\t// The actual function reference stored at Global is only known at instantiation-time, so we set this flag\n\t// to items of ElementSegment.Init at binary decoding, and unwrap this flag at instantiation to resolve the value.\n\t//\n\t// This might collide the init element resolved via ref.func instruction which is resolved with the func index at decoding,\n\t// but in practice, that is not allowed in wazero thanks to our limit MaximumFunctionIndex. Thus, it is safe to set this flag\n\t// in init element to indicate as such.\n\telementInitImportedGlobalReferenceType Index = 1 << 30\n)\n\n// unwrapElementInitGlobalReference takes an item of the init vector of an ElementSegment,\n// and returns the Global index if it is supposed to get generated from a global.\n// ok is true if the given init item is as such.\nfunc unwrapElementInitGlobalReference(init Index) (_ Index, ok bool) {\n\tif init&elementInitImportedGlobalReferenceType == elementInitImportedGlobalReferenceType {\n\t\treturn init &^ elementInitImportedGlobalReferenceType, true\n\t}\n\treturn init, false\n}\n\n// WrapGlobalIndexAsElementInit wraps the given index as an init item which is resolved via an imported global value.\n// See the comments on elementInitImportedGlobalReferenceType for more details.\nfunc WrapGlobalIndexAsElementInit(init Index) Index {\n\treturn init | elementInitImportedGlobalReferenceType\n}\n\n// IsActive returns true if the element segment is \"active\" mode which requires the runtime to initialize table\n// with the contents in .Init field.\nfunc (e *ElementSegment) IsActive() bool {\n\treturn e.Mode == ElementModeActive\n}\n\n// TableInstance represents a table of (RefTypeFuncref) elements in a module.\n//\n// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#table-instances%E2%91%A0\ntype TableInstance struct {\n\t// References holds references whose type is either RefTypeFuncref or RefTypeExternref (unsupported).\n\t//\n\t// Currently, only function references are supported.\n\tReferences []Reference\n\n\t// Min is the minimum (function) elements in this table and cannot grow to accommodate ElementSegment.\n\tMin uint32\n\n\t// Max if present is the maximum (function) elements in this table, or nil if unbounded.\n\tMax *uint32\n\n\t// Type is either RefTypeFuncref or RefTypeExternRef.\n\tType RefType\n\n\t// The following is only used when the table is exported.\n\n\t// involvingModuleInstances is a set of module instances which are involved in the table instance.\n\t// This is critical for safety purpose because once a table is imported, it can hold any reference to\n\t// any function in the owner and importing module instances. Therefore, these module instance,\n\t// transitively the compiled modules, must be alive as long as the table instance is alive.\n\tinvolvingModuleInstances []*ModuleInstance\n\t// involvingModuleInstancesMutex is a mutex to protect involvingModuleInstances.\n\tinvolvingModuleInstancesMutex sync.RWMutex\n}\n\n// ElementInstance represents an element instance in a module.\n//\n// See https://www.w3.org/TR/2022/WD-wasm-core-2-20220419/exec/runtime.html#element-instances\ntype ElementInstance = []Reference\n\n// Reference is the runtime representation of RefType which is either RefTypeFuncref or RefTypeExternref.\ntype Reference = uintptr\n\n// validateTable ensures any ElementSegment is valid. This caches results via Module.validatedActiveElementSegments.\n// Note: limitsType are validated by decoders, so not re-validated here.\nfunc (m *Module) validateTable(enabledFeatures api.CoreFeatures, tables []Table, maximumTableIndex uint32) error {\n\tif len(tables) > int(maximumTableIndex) {\n\t\treturn fmt.Errorf(\"too many tables in a module: %d given with limit %d\", len(tables), maximumTableIndex)\n\t}\n\n\timportedTableCount := m.ImportTableCount\n\n\t// Create bounds checks as these can err prior to instantiation\n\tfuncCount := m.ImportFunctionCount + m.SectionElementCount(SectionIDFunction)\n\tglobalsCount := m.ImportGlobalCount + m.SectionElementCount(SectionIDGlobal)\n\n\t// Now, we have to figure out which table elements can be resolved before instantiation and also fail early if there\n\t// are any imported globals that are known to be invalid by their declarations.\n\tfor i := range m.ElementSection {\n\t\telem := &m.ElementSection[i]\n\t\tidx := Index(i)\n\t\tinitCount := uint32(len(elem.Init))\n\n\t\t// Any offset applied is to the element, not the function index: validate here if the funcidx is sound.\n\t\tfor ei, init := range elem.Init {\n\t\t\tif init == ElementInitNullReference {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tindex, ok := unwrapElementInitGlobalReference(init)\n\t\t\tif ok {\n\t\t\t\tif index >= globalsCount {\n\t\t\t\t\treturn fmt.Errorf(\"%s[%d].init[%d] global index %d out of range\", SectionIDName(SectionIDElement), idx, ei, index)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif elem.Type == RefTypeExternref {\n\t\t\t\t\treturn fmt.Errorf(\"%s[%d].init[%d] must be ref.null but was %d\", SectionIDName(SectionIDElement), idx, ei, init)\n\t\t\t\t}\n\t\t\t\tif index >= funcCount {\n\t\t\t\t\treturn fmt.Errorf(\"%s[%d].init[%d] func index %d out of range\", SectionIDName(SectionIDElement), idx, ei, index)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif elem.IsActive() {\n\t\t\tif len(tables) <= int(elem.TableIndex) {\n\t\t\t\treturn fmt.Errorf(\"unknown table %d as active element target\", elem.TableIndex)\n\t\t\t}\n\n\t\t\tt := tables[elem.TableIndex]\n\t\t\tif t.Type != elem.Type {\n\t\t\t\treturn fmt.Errorf(\"element type mismatch: table has %s but element has %s\",\n\t\t\t\t\tRefTypeName(t.Type), RefTypeName(elem.Type),\n\t\t\t\t)\n\t\t\t}\n\n\t\t\t// global.get needs to be discovered during initialization\n\t\t\toc := elem.OffsetExpr.Opcode\n\t\t\tif oc == OpcodeGlobalGet {\n\t\t\t\tglobalIdx, _, err := leb128.LoadUint32(elem.OffsetExpr.Data)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"%s[%d] couldn't read global.get parameter: %w\", SectionIDName(SectionIDElement), idx, err)\n\t\t\t\t} else if err = m.verifyImportGlobalI32(SectionIDElement, idx, globalIdx); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t} else if oc == OpcodeI32Const {\n\t\t\t\t// Per https://github.com/WebAssembly/spec/blob/wg-1.0/test/core/elem.wast#L117 we must pass if imported\n\t\t\t\t// table has set its min=0. Per https://github.com/WebAssembly/spec/blob/wg-1.0/test/core/elem.wast#L142, we\n\t\t\t\t// have to do fail if module-defined min=0.\n\t\t\t\tif !enabledFeatures.IsEnabled(api.CoreFeatureReferenceTypes) && elem.TableIndex >= importedTableCount {\n\t\t\t\t\t// Treat constants as signed as their interpretation is not yet known per /RATIONALE.md\n\t\t\t\t\to, _, err := leb128.LoadInt32(elem.OffsetExpr.Data)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn fmt.Errorf(\"%s[%d] couldn't read i32.const parameter: %w\", SectionIDName(SectionIDElement), idx, err)\n\t\t\t\t\t}\n\t\t\t\t\toffset := Index(o)\n\t\t\t\t\tif err = checkSegmentBounds(t.Min, uint64(initCount)+uint64(offset), idx); err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn fmt.Errorf(\"%s[%d] has an invalid const expression: %s\", SectionIDName(SectionIDElement), idx, InstructionName(oc))\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\n// buildTable returns TableInstances if the module defines or imports a table.\n//   - importedTables: returned as `tables` unmodified.\n//   - importedGlobals: include all instantiated, imported globals.\n//\n// If the result `init` is non-nil, it is the `tableInit` parameter of Engine.NewModuleEngine.\n//\n// Note: An error is only possible when an ElementSegment.OffsetExpr is out of range of the TableInstance.Min.\nfunc (m *ModuleInstance) buildTables(module *Module, skipBoundCheck bool) (err error) {\n\tidx := module.ImportTableCount\n\tfor i := range module.TableSection {\n\t\ttsec := &module.TableSection[i]\n\t\t// The module defining the table is the one that sets its Min/Max etc.\n\t\tm.Tables[idx] = &TableInstance{\n\t\t\tReferences: make([]Reference, tsec.Min), Min: tsec.Min, Max: tsec.Max,\n\t\t\tType: tsec.Type,\n\t\t}\n\t\tidx++\n\t}\n\n\tif !skipBoundCheck {\n\t\tfor elemI := range module.ElementSection { // Do not loop over the value since elementSegments is a slice of value.\n\t\t\telem := &module.ElementSection[elemI]\n\t\t\ttable := m.Tables[elem.TableIndex]\n\t\t\tvar offset uint32\n\t\t\tif elem.OffsetExpr.Opcode == OpcodeGlobalGet {\n\t\t\t\t// Ignore error as it's already validated.\n\t\t\t\tglobalIdx, _, _ := leb128.LoadUint32(elem.OffsetExpr.Data)\n\t\t\t\tglobal := m.Globals[globalIdx]\n\t\t\t\toffset = uint32(global.Val)\n\t\t\t} else { // i32.const\n\t\t\t\t// Ignore error as it's already validated.\n\t\t\t\to, _, _ := leb128.LoadInt32(elem.OffsetExpr.Data)\n\t\t\t\toffset = uint32(o)\n\t\t\t}\n\n\t\t\t// Check to see if we are out-of-bounds\n\t\t\tinitCount := uint64(len(elem.Init))\n\t\t\tif err = checkSegmentBounds(table.Min, uint64(offset)+initCount, Index(elemI)); err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n\treturn\n}\n\n// checkSegmentBounds fails if the capacity needed for an ElementSegment.Init is larger than limitsType.Min\n//\n// WebAssembly 1.0 (20191205) doesn't forbid growing to accommodate element segments, and spectests are inconsistent.\n// For example, the spectests enforce elements within Table limitsType.Min, but ignore Import.DescTable min. What this\n// means is we have to delay offset checks on imported tables until we link to them.\n// e.g. https://github.com/WebAssembly/spec/blob/wg-1.0/test/core/elem.wast#L117 wants pass on min=0 for import\n// e.g. https://github.com/WebAssembly/spec/blob/wg-1.0/test/core/elem.wast#L142 wants fail on min=0 module-defined\nfunc checkSegmentBounds(min uint32, requireMin uint64, idx Index) error { // uint64 in case offset was set to -1\n\tif requireMin > uint64(min) {\n\t\treturn fmt.Errorf(\"%s[%d].init exceeds min table size\", SectionIDName(SectionIDElement), idx)\n\t}\n\treturn nil\n}\n\nfunc (m *Module) verifyImportGlobalI32(sectionID SectionID, sectionIdx Index, idx uint32) error {\n\tig := uint32(math.MaxUint32) // +1 == 0\n\tfor i := range m.ImportSection {\n\t\timp := &m.ImportSection[i]\n\t\tif imp.Type == ExternTypeGlobal {\n\t\t\tig++\n\t\t\tif ig == idx {\n\t\t\t\tif imp.DescGlobal.ValType != ValueTypeI32 {\n\t\t\t\t\treturn fmt.Errorf(\"%s[%d] (global.get %d): import[%d].global.ValType != i32\", SectionIDName(sectionID), sectionIdx, idx, i)\n\t\t\t\t}\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\treturn fmt.Errorf(\"%s[%d] (global.get %d): out of range of imported globals\", SectionIDName(sectionID), sectionIdx, idx)\n}\n\n// Grow appends the `initialRef` by `delta` times into the References slice.\n// Returns -1 if the operation is not valid, otherwise the old length of the table.\n//\n// https://www.w3.org/TR/2022/WD-wasm-core-2-20220419/exec/instructions.html#xref-syntax-instructions-syntax-instr-table-mathsf-table-grow-x\nfunc (t *TableInstance) Grow(delta uint32, initialRef Reference) (currentLen uint32) {\n\tcurrentLen = uint32(len(t.References))\n\tif delta == 0 {\n\t\treturn\n\t}\n\n\tif newLen := int64(currentLen) + int64(delta); // adding as 64bit ints to avoid overflow.\n\tnewLen >= math.MaxUint32 || (t.Max != nil && newLen > int64(*t.Max)) {\n\t\treturn 0xffffffff // = -1 in signed 32-bit integer.\n\t}\n\n\tt.References = append(t.References, make([]uintptr, delta)...)\n\tif initialRef == 0 {\n\t\treturn\n\t}\n\n\t// Uses the copy trick for faster filling the new region with the initial value.\n\t// https://github.com/golang/go/blob/go1.24.0/src/slices/slices.go#L514-L517\n\tnewRegion := t.References[currentLen:]\n\tnewRegion[0] = initialRef\n\tfor i := 1; i < len(newRegion); i *= 2 {\n\t\tcopy(newRegion[i:], newRegion[:i])\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/wasmdebug/debug.go",
    "content": "// Package wasmdebug contains utilities used to give consistent search keys between stack traces and error messages.\n// Note: This is named wasmdebug to avoid conflicts with the normal go module.\n// Note: This only imports \"api\" as importing \"wasm\" would create a cyclic dependency.\npackage wasmdebug\n\nimport (\n\t\"fmt\"\n\t\"runtime\"\n\t\"runtime/debug\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/tetratelabs/wazero/api\"\n\t\"github.com/tetratelabs/wazero/internal/wasmruntime\"\n\t\"github.com/tetratelabs/wazero/sys\"\n)\n\n// FuncName returns the naming convention of \"moduleName.funcName\".\n//\n//   - moduleName is the possibly empty name the module was instantiated with.\n//   - funcName is the name in the Custom Name section.\n//   - funcIdx is the position in the function index, prefixed with\n//     imported functions.\n//\n// Note: \"moduleName.$funcIdx\" is used when the funcName is empty, as commonly\n// the case in TinyGo.\nfunc FuncName(moduleName, funcName string, funcIdx uint32) string {\n\tvar ret strings.Builder\n\n\t// Start module.function\n\tret.WriteString(moduleName)\n\tret.WriteByte('.')\n\tif funcName == \"\" {\n\t\tret.WriteByte('$')\n\t\tret.WriteString(strconv.Itoa(int(funcIdx)))\n\t} else {\n\t\tret.WriteString(funcName)\n\t}\n\n\treturn ret.String()\n}\n\n// signature returns a formatted signature similar to how it is defined in Go.\n//\n// * paramTypes should be from wasm.FunctionType\n// * resultTypes should be from wasm.FunctionType\n// TODO: add paramNames\nfunc signature(funcName string, paramTypes []api.ValueType, resultTypes []api.ValueType) string {\n\tvar ret strings.Builder\n\tret.WriteString(funcName)\n\n\t// Start params\n\tret.WriteByte('(')\n\tparamCount := len(paramTypes)\n\tswitch paramCount {\n\tcase 0:\n\tcase 1:\n\t\tret.WriteString(api.ValueTypeName(paramTypes[0]))\n\tdefault:\n\t\tret.WriteString(api.ValueTypeName(paramTypes[0]))\n\t\tfor _, vt := range paramTypes[1:] {\n\t\t\tret.WriteByte(',')\n\t\t\tret.WriteString(api.ValueTypeName(vt))\n\t\t}\n\t}\n\tret.WriteByte(')')\n\n\t// Start results\n\tresultCount := len(resultTypes)\n\tswitch resultCount {\n\tcase 0:\n\tcase 1:\n\t\tret.WriteByte(' ')\n\t\tret.WriteString(api.ValueTypeName(resultTypes[0]))\n\tdefault: // As this is used for errors, don't panic if there are multiple returns, even if that's invalid!\n\t\tret.WriteByte(' ')\n\t\tret.WriteByte('(')\n\t\tret.WriteString(api.ValueTypeName(resultTypes[0]))\n\t\tfor _, vt := range resultTypes[1:] {\n\t\t\tret.WriteByte(',')\n\t\t\tret.WriteString(api.ValueTypeName(vt))\n\t\t}\n\t\tret.WriteByte(')')\n\t}\n\n\treturn ret.String()\n}\n\n// ErrorBuilder helps build consistent errors, particularly adding a WASM stack trace.\n//\n// AddFrame should be called beginning at the frame that panicked until no more frames exist. Once done, call Format.\ntype ErrorBuilder interface {\n\t// AddFrame adds the next frame.\n\t//\n\t// * funcName should be from FuncName\n\t// * paramTypes should be from wasm.FunctionType\n\t// * resultTypes should be from wasm.FunctionType\n\t// * sources is the source code information for this frame and can be empty.\n\t//\n\t// Note: paramTypes and resultTypes are present because signature misunderstanding, mismatch or overflow are common.\n\tAddFrame(funcName string, paramTypes, resultTypes []api.ValueType, sources []string)\n\n\t// FromRecovered returns an error with the wasm stack trace appended to it.\n\tFromRecovered(recovered interface{}) error\n}\n\nfunc NewErrorBuilder() ErrorBuilder {\n\treturn &stackTrace{}\n}\n\ntype stackTrace struct {\n\t// frameCount is the number of stack frame currently pushed into lines.\n\tframeCount int\n\t// lines contains the stack trace and possibly the inlined source code information.\n\tlines []string\n}\n\n// GoRuntimeErrorTracePrefix is the prefix coming before the Go runtime stack trace included in the face of runtime.Error.\n// This is exported for testing purpose.\nconst GoRuntimeErrorTracePrefix = \"Go runtime stack trace:\"\n\nfunc (s *stackTrace) FromRecovered(recovered interface{}) error {\n\tif false {\n\t\tdebug.PrintStack()\n\t}\n\n\tif exitErr, ok := recovered.(*sys.ExitError); ok { // Don't wrap an exit error!\n\t\treturn exitErr\n\t}\n\n\tstack := strings.Join(s.lines, \"\\n\\t\")\n\n\t// If the error was internal, don't mention it was recovered.\n\tif wasmErr, ok := recovered.(*wasmruntime.Error); ok {\n\t\treturn fmt.Errorf(\"wasm error: %w\\nwasm stack trace:\\n\\t%s\", wasmErr, stack)\n\t}\n\n\t// If we have a runtime.Error, something severe happened which should include the stack trace. This could be\n\t// a nil pointer from wazero or a user-defined function from HostModuleBuilder.\n\tif runtimeErr, ok := recovered.(runtime.Error); ok {\n\t\treturn fmt.Errorf(\"%w (recovered by wazero)\\nwasm stack trace:\\n\\t%s\\n\\n%s\\n%s\",\n\t\t\truntimeErr, stack, GoRuntimeErrorTracePrefix, debug.Stack())\n\t}\n\n\t// At this point we expect the error was from a function defined by HostModuleBuilder that intentionally called panic.\n\tif runtimeErr, ok := recovered.(error); ok { // e.g. panic(errors.New(\"whoops\"))\n\t\treturn fmt.Errorf(\"%w (recovered by wazero)\\nwasm stack trace:\\n\\t%s\", runtimeErr, stack)\n\t} else { // e.g. panic(\"whoops\")\n\t\treturn fmt.Errorf(\"%v (recovered by wazero)\\nwasm stack trace:\\n\\t%s\", recovered, stack)\n\t}\n}\n\n// MaxFrames is the maximum number of frames to include in the stack trace.\nconst MaxFrames = 30\n\n// AddFrame implements ErrorBuilder.AddFrame\nfunc (s *stackTrace) AddFrame(funcName string, paramTypes, resultTypes []api.ValueType, sources []string) {\n\tif s.frameCount == MaxFrames {\n\t\treturn\n\t}\n\ts.frameCount++\n\tsig := signature(funcName, paramTypes, resultTypes)\n\ts.lines = append(s.lines, sig)\n\tfor _, source := range sources {\n\t\ts.lines = append(s.lines, \"\\t\"+source)\n\t}\n\tif s.frameCount == MaxFrames {\n\t\ts.lines = append(s.lines, \"... maybe followed by omitted frames\")\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/wasmdebug/dwarf.go",
    "content": "package wasmdebug\n\nimport (\n\t\"debug/dwarf\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"sort\"\n\t\"strings\"\n\t\"sync\"\n)\n\n// DWARFLines is used to retrieve source code line information from the DWARF data.\ntype DWARFLines struct {\n\t// d is created by DWARF custom sections.\n\td *dwarf.Data\n\t// linesPerEntry maps dwarf.Offset for dwarf.Entry to the list of lines contained by the entry.\n\t// The value is sorted in the increasing order by the address.\n\tlinesPerEntry map[dwarf.Offset][]line\n\tmux           sync.Mutex\n}\n\ntype line struct {\n\taddr uint64\n\tpos  dwarf.LineReaderPos\n}\n\n// NewDWARFLines returns DWARFLines for the given *dwarf.Data.\nfunc NewDWARFLines(d *dwarf.Data) *DWARFLines {\n\tif d == nil {\n\t\treturn nil\n\t}\n\treturn &DWARFLines{d: d, linesPerEntry: map[dwarf.Offset][]line{}}\n}\n\n// isTombstoneAddr returns true if the given address is invalid a.k.a tombstone address which was made no longer valid\n// by linker. According to the DWARF spec[1], the value is encoded as 0xffffffff for Wasm (as 32-bit target),\n// but some tools encode it either in -1, -2 [2] or 1<<32 (This might not be by tools, but by debug/dwarf package's bug).\n//\n// [1] https://dwarfstd.org/issues/200609.1.html\n// [2] https://github.com/WebAssembly/binaryen/blob/97178d08d4a20d2a5e3a6be813fc6a7079ef86e1/src/wasm/wasm-debug.cpp#L651-L660\n// [3] https://reviews.llvm.org/D81784\nfunc isTombstoneAddr(addr uint64) bool {\n\taddr32 := int32(addr)\n\treturn addr32 == -1 || addr32 == -2 ||\n\t\taddr32 == 0 // This covers 1 <<32.\n}\n\n// Line returns the line information for the given instructionOffset which is an offset in\n// the code section of the original Wasm binary. Returns empty string if the info is not found.\nfunc (d *DWARFLines) Line(instructionOffset uint64) (ret []string) {\n\tif d == nil {\n\t\treturn\n\t}\n\n\t// DWARFLines is created per Wasm binary, so there's a possibility that multiple instances\n\t// created from a same binary face runtime error at the same time, and that results in\n\t// concurrent access to this function.\n\td.mux.Lock()\n\tdefer d.mux.Unlock()\n\n\tr := d.d.Reader()\n\n\tvar inlinedRoutines []*dwarf.Entry\n\tvar cu *dwarf.Entry\n\tvar inlinedDone bool\nentry:\n\tfor {\n\t\tent, err := r.Next()\n\t\tif err != nil || ent == nil {\n\t\t\tbreak\n\t\t}\n\n\t\t// If we already found the compilation unit and relevant inlined routines, we can stop searching entries.\n\t\tif cu != nil && inlinedDone {\n\t\t\tbreak\n\t\t}\n\n\t\tswitch ent.Tag {\n\t\tcase dwarf.TagCompileUnit, dwarf.TagInlinedSubroutine:\n\t\tdefault:\n\t\t\t// Only CompileUnit and InlinedSubroutines are relevant.\n\t\t\tcontinue\n\t\t}\n\n\t\t// Check if the entry spans the range which contains the target instruction.\n\t\tranges, err := d.d.Ranges(ent)\n\t\tif err != nil {\n\t\t\tcontinue\n\t\t}\n\t\tfor _, pcs := range ranges {\n\t\t\tstart, end := pcs[0], pcs[1]\n\t\t\tif isTombstoneAddr(start) || isTombstoneAddr(end) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif start <= instructionOffset && instructionOffset < end {\n\t\t\t\tswitch ent.Tag {\n\t\t\t\tcase dwarf.TagCompileUnit:\n\t\t\t\t\tcu = ent\n\t\t\t\tcase dwarf.TagInlinedSubroutine:\n\t\t\t\t\tinlinedRoutines = append(inlinedRoutines, ent)\n\t\t\t\t\t// Search inlined subroutines until all the children.\n\t\t\t\t\tinlinedDone = !ent.Children\n\t\t\t\t\t// Not that \"children\" in the DWARF spec is defined as the next entry to this entry.\n\t\t\t\t\t// See \"2.3 Relationship of Debugging Information Entries\" in https://dwarfstd.org/doc/DWARF4.pdf\n\t\t\t\t}\n\t\t\t\tcontinue entry\n\t\t\t}\n\t\t}\n\t}\n\n\t// If the relevant compilation unit is not found, nothing we can do with this DWARF info.\n\tif cu == nil {\n\t\treturn\n\t}\n\n\tlineReader, err := d.d.LineReader(cu)\n\tif err != nil || lineReader == nil {\n\t\treturn\n\t}\n\tvar lines []line\n\tvar ok bool\n\tvar le dwarf.LineEntry\n\t// Get the lines inside the entry.\n\tif lines, ok = d.linesPerEntry[cu.Offset]; !ok {\n\t\t// If not found, we create the list of lines by reading all the LineEntries in the Entry.\n\t\t//\n\t\t// Note that the dwarf.LineEntry.SeekPC API shouldn't be used because the Go's dwarf package assumes that\n\t\t// all the line entries in an Entry are sorted in increasing order which *might not* be true\n\t\t// for some languages. Such order requirement is not a part of DWARF specification,\n\t\t// and in fact Zig language tends to emit interleaved line information.\n\t\t//\n\t\t// Thus, here we read all line entries here, and sort them in the increasing order wrt addresses.\n\t\tfor {\n\t\t\tpos := lineReader.Tell()\n\t\t\terr = lineReader.Next(&le)\n\t\t\tif errors.Is(err, io.EOF) {\n\t\t\t\tbreak\n\t\t\t} else if err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// TODO: Maybe we should ignore tombstone addresses by using isTombstoneAddr,\n\t\t\t//  but not sure if that would be an issue in practice.\n\t\t\tlines = append(lines, line{addr: le.Address, pos: pos})\n\t\t}\n\t\tsort.Slice(lines, func(i, j int) bool { return lines[i].addr < lines[j].addr })\n\t\td.linesPerEntry[cu.Offset] = lines // Caches for the future inquiries for the same Entry.\n\t}\n\n\t// Now we have the lines for this entry. We can find the corresponding source line for instructionOffset\n\t// via binary search on the list.\n\tn := len(lines)\n\tindex := sort.Search(n, func(i int) bool { return lines[i].addr >= instructionOffset })\n\n\tif index == n { // This case the address is not found. See the doc sort.Search.\n\t\treturn\n\t}\n\n\tln := lines[index]\n\tif ln.addr != instructionOffset {\n\t\t// If the address doesn't match exactly, the previous entry is the one that contains the instruction.\n\t\t// That can happen anytime as the DWARF spec allows it, and other tools can handle it in this way conventionally\n\t\t// https://github.com/gimli-rs/addr2line/blob/3a2dbaf84551a06a429f26e9c96071bb409b371f/src/lib.rs#L236-L242\n\t\t// https://github.com/kateinoigakukun/wasminspect/blob/f29f052f1b03104da9f702508ac0c1bbc3530ae4/crates/debugger/src/dwarf/mod.rs#L453-L459\n\t\tif index-1 < 0 {\n\t\t\treturn\n\t\t}\n\t\tln = lines[index-1]\n\t}\n\n\t// Advance the line reader for the found position.\n\tlineReader.Seek(ln.pos)\n\terr = lineReader.Next(&le)\n\tif err != nil {\n\t\t// If we reach this block, that means there's a bug in the []line creation logic above.\n\t\tpanic(\"BUG: stored dwarf.LineReaderPos is invalid\")\n\t}\n\n\t// In the inlined case, the line info is the innermost inlined function call.\n\tinlined := len(inlinedRoutines) != 0\n\tprefix := fmt.Sprintf(\"%#x: \", instructionOffset)\n\tret = append(ret, formatLine(prefix, le.File.Name, int64(le.Line), int64(le.Column), inlined))\n\n\tif inlined {\n\t\tprefix = strings.Repeat(\" \", len(prefix))\n\t\tfiles := lineReader.Files()\n\t\t// inlinedRoutines contain the inlined call information in the reverse order (children is higher than parent),\n\t\t// so we traverse the reverse order and emit the inlined calls.\n\t\tfor i := len(inlinedRoutines) - 1; i >= 0; i-- {\n\t\t\tinlined := inlinedRoutines[i]\n\t\t\tfileIndex, ok := inlined.Val(dwarf.AttrCallFile).(int64)\n\t\t\tif !ok {\n\t\t\t\treturn\n\t\t\t} else if fileIndex >= int64(len(files)) {\n\t\t\t\t// This in theory shouldn't happen according to the spec, but guard against ill-formed DWARF info.\n\t\t\t\treturn\n\t\t\t}\n\t\t\tfileName := files[fileIndex]\n\t\t\tline, _ := inlined.Val(dwarf.AttrCallLine).(int64)\n\t\t\tcol, _ := inlined.Val(dwarf.AttrCallColumn).(int64)\n\t\t\tret = append(ret, formatLine(prefix, fileName.Name, line, col,\n\t\t\t\t// Last one is the origin of the inlined function calls.\n\t\t\t\ti != 0))\n\t\t}\n\t}\n\treturn\n}\n\nfunc formatLine(prefix, fileName string, line, col int64, inlined bool) string {\n\tbuilder := strings.Builder{}\n\tbuilder.WriteString(prefix)\n\tbuilder.WriteString(fileName)\n\n\tif line != 0 {\n\t\tbuilder.WriteString(fmt.Sprintf(\":%d\", line))\n\t\tif col != 0 {\n\t\t\tbuilder.WriteString(fmt.Sprintf(\":%d\", col))\n\t\t}\n\t}\n\n\tif inlined {\n\t\tbuilder.WriteString(\" (inlined)\")\n\t}\n\treturn builder.String()\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/internal/wasmruntime/errors.go",
    "content": "// Package wasmruntime contains internal symbols shared between modules for error handling.\n// Note: This is named wasmruntime to avoid conflicts with the normal go module.\n// Note: This only imports \"api\" as importing \"wasm\" would create a cyclic dependency.\npackage wasmruntime\n\nvar (\n\t// ErrRuntimeStackOverflow indicates that there are too many function calls,\n\t// and the Engine terminated the execution.\n\tErrRuntimeStackOverflow = New(\"stack overflow\")\n\t// ErrRuntimeInvalidConversionToInteger indicates the Wasm function tries to\n\t// convert NaN floating point value to integers during trunc variant instructions.\n\tErrRuntimeInvalidConversionToInteger = New(\"invalid conversion to integer\")\n\t// ErrRuntimeIntegerOverflow indicates that an integer arithmetic resulted in\n\t// overflow value. For example, when the program tried to truncate a float value\n\t// which doesn't fit in the range of target integer.\n\tErrRuntimeIntegerOverflow = New(\"integer overflow\")\n\t// ErrRuntimeIntegerDivideByZero indicates that an integer div or rem instructions\n\t// was executed with 0 as the divisor.\n\tErrRuntimeIntegerDivideByZero = New(\"integer divide by zero\")\n\t// ErrRuntimeUnreachable means \"unreachable\" instruction was executed by the program.\n\tErrRuntimeUnreachable = New(\"unreachable\")\n\t// ErrRuntimeOutOfBoundsMemoryAccess indicates that the program tried to access the\n\t// region beyond the linear memory.\n\tErrRuntimeOutOfBoundsMemoryAccess = New(\"out of bounds memory access\")\n\t// ErrRuntimeInvalidTableAccess means either offset to the table was out of bounds of table, or\n\t// the target element in the table was uninitialized during call_indirect instruction.\n\tErrRuntimeInvalidTableAccess = New(\"invalid table access\")\n\t// ErrRuntimeIndirectCallTypeMismatch indicates that the type check failed during call_indirect.\n\tErrRuntimeIndirectCallTypeMismatch = New(\"indirect call type mismatch\")\n\t// ErrRuntimeUnalignedAtomic indicates that an atomic operation was made with incorrect memory alignment.\n\tErrRuntimeUnalignedAtomic = New(\"unaligned atomic\")\n\t// ErrRuntimeExpectedSharedMemory indicates that an operation was made against unshared memory when not allowed.\n\tErrRuntimeExpectedSharedMemory = New(\"expected shared memory\")\n\t// ErrRuntimeTooManyWaiters indicates that atomic.wait was called with too many waiters.\n\tErrRuntimeTooManyWaiters = New(\"too many waiters\")\n)\n\n// Error is returned by a wasm.Engine during the execution of Wasm functions, and they indicate that the Wasm runtime\n// state is unrecoverable.\ntype Error struct {\n\ts string\n}\n\nfunc New(text string) *Error {\n\treturn &Error{s: text}\n}\n\nfunc (e *Error) Error() string {\n\treturn e.s\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/netlify.toml",
    "content": "[build]\n  base = \"site\"\n  publish = \"public\"\n\n[build.environment]\n  HUGO_VERSION = \"0.115.2\"\n\n[context.production]\n  command = \"git submodule update --init && hugo --gc --minify\"\n\n[context.deploy-preview]\n  command = \"git submodule update --init && hugo --gc --minify -b $DEPLOY_PRIME_URL\"\n\n[context.branch-deploy]\n  command = \"git submodule update --init && hugo --gc --minify -b $DEPLOY_PRIME_URL\"\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/runtime.go",
    "content": "package wazero\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"sync/atomic\"\n\n\t\"github.com/tetratelabs/wazero/api\"\n\texperimentalapi \"github.com/tetratelabs/wazero/experimental\"\n\t\"github.com/tetratelabs/wazero/internal/engine/interpreter\"\n\t\"github.com/tetratelabs/wazero/internal/engine/wazevo\"\n\t\"github.com/tetratelabs/wazero/internal/expctxkeys\"\n\t\"github.com/tetratelabs/wazero/internal/platform\"\n\tinternalsock \"github.com/tetratelabs/wazero/internal/sock\"\n\tinternalsys \"github.com/tetratelabs/wazero/internal/sys\"\n\t\"github.com/tetratelabs/wazero/internal/wasm\"\n\tbinaryformat \"github.com/tetratelabs/wazero/internal/wasm/binary\"\n\t\"github.com/tetratelabs/wazero/sys\"\n)\n\n// Runtime allows embedding of WebAssembly modules.\n//\n// The below is an example of basic initialization:\n//\n//\tctx := context.Background()\n//\tr := wazero.NewRuntime(ctx)\n//\tdefer r.Close(ctx) // This closes everything this Runtime created.\n//\n//\tmod, _ := r.Instantiate(ctx, wasm)\n//\n// # Notes\n//\n//   - This is an interface for decoupling, not third-party implementations.\n//     All implementations are in wazero.\n//   - Closing this closes any CompiledModule or Module it instantiated.\ntype Runtime interface {\n\t// Instantiate instantiates a module from the WebAssembly binary (%.wasm)\n\t// with default configuration, which notably calls the \"_start\" function,\n\t// if it exists.\n\t//\n\t// Here's an example:\n\t//\tctx := context.Background()\n\t//\tr := wazero.NewRuntime(ctx)\n\t//\tdefer r.Close(ctx) // This closes everything this Runtime created.\n\t//\n\t//\tmod, _ := r.Instantiate(ctx, wasm)\n\t//\n\t// # Notes\n\t//\n\t//   - See notes on InstantiateModule for error scenarios.\n\t//   - See InstantiateWithConfig for configuration overrides.\n\tInstantiate(ctx context.Context, source []byte) (api.Module, error)\n\n\t// InstantiateWithConfig instantiates a module from the WebAssembly binary\n\t// (%.wasm) or errs for reasons including exit or validation.\n\t//\n\t// Here's an example:\n\t//\tctx := context.Background()\n\t//\tr := wazero.NewRuntime(ctx)\n\t//\tdefer r.Close(ctx) // This closes everything this Runtime created.\n\t//\n\t//\tmod, _ := r.InstantiateWithConfig(ctx, wasm,\n\t//\t\twazero.NewModuleConfig().WithName(\"rotate\"))\n\t//\n\t// # Notes\n\t//\n\t//   - See notes on InstantiateModule for error scenarios.\n\t//   - If you aren't overriding defaults, use Instantiate.\n\t//   - This is a convenience utility that chains CompileModule with\n\t//     InstantiateModule. To instantiate the same source multiple times,\n\t//     use CompileModule as InstantiateModule avoids redundant decoding\n\t//     and/or compilation.\n\tInstantiateWithConfig(ctx context.Context, source []byte, config ModuleConfig) (api.Module, error)\n\n\t// NewHostModuleBuilder lets you create modules out of functions defined in Go.\n\t//\n\t// Below defines and instantiates a module named \"env\" with one function:\n\t//\n\t//\tctx := context.Background()\n\t//\thello := func() {\n\t//\t\tfmt.Fprintln(stdout, \"hello!\")\n\t//\t}\n\t//\t_, err := r.NewHostModuleBuilder(\"env\").\n\t//\t\tNewFunctionBuilder().WithFunc(hello).Export(\"hello\").\n\t//\t\tInstantiate(ctx, r)\n\t//\n\t// Note: empty `moduleName` is not allowed.\n\tNewHostModuleBuilder(moduleName string) HostModuleBuilder\n\n\t// CompileModule decodes the WebAssembly binary (%.wasm) or errs if invalid.\n\t// Any pre-compilation done after decoding wasm is dependent on RuntimeConfig.\n\t//\n\t// There are two main reasons to use CompileModule instead of Instantiate:\n\t//   - Improve performance when the same module is instantiated multiple times under different names\n\t//   - Reduce the amount of errors that can occur during InstantiateModule.\n\t//\n\t// # Notes\n\t//\n\t//   - The resulting module name defaults to what was binary from the custom name section.\n\t//   - Any pre-compilation done after decoding the source is dependent on RuntimeConfig.\n\t//\n\t// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#name-section%E2%91%A0\n\tCompileModule(ctx context.Context, binary []byte) (CompiledModule, error)\n\n\t// InstantiateModule instantiates the module or errs for reasons including\n\t// exit or validation.\n\t//\n\t// Here's an example:\n\t//\tmod, _ := n.InstantiateModule(ctx, compiled, wazero.NewModuleConfig().\n\t//\t\tWithName(\"prod\"))\n\t//\n\t// # Errors\n\t//\n\t// While CompiledModule is pre-validated, there are a few situations which\n\t// can cause an error:\n\t//   - The module name is already in use.\n\t//   - The module has a table element initializer that resolves to an index\n\t//     outside the Table minimum size.\n\t//   - The module has a start function, and it failed to execute.\n\t//   - The module was compiled to WASI and exited with a non-zero exit\n\t//     code, you'll receive a sys.ExitError.\n\t//   - RuntimeConfig.WithCloseOnContextDone was enabled and a context\n\t//     cancellation or deadline triggered before a start function returned.\n\tInstantiateModule(ctx context.Context, compiled CompiledModule, config ModuleConfig) (api.Module, error)\n\n\t// CloseWithExitCode closes all the modules that have been initialized in this Runtime with the provided exit code.\n\t// An error is returned if any module returns an error when closed.\n\t//\n\t// Here's an example:\n\t//\tctx := context.Background()\n\t//\tr := wazero.NewRuntime(ctx)\n\t//\tdefer r.CloseWithExitCode(ctx, 2) // This closes everything this Runtime created.\n\t//\n\t//\t// Everything below here can be closed, but will anyway due to above.\n\t//\t_, _ = wasi_snapshot_preview1.InstantiateSnapshotPreview1(ctx, r)\n\t//\tmod, _ := r.Instantiate(ctx, wasm)\n\tCloseWithExitCode(ctx context.Context, exitCode uint32) error\n\n\t// Module returns an instantiated module in this runtime or nil if there aren't any.\n\tModule(moduleName string) api.Module\n\n\t// Closer closes all compiled code by delegating to CloseWithExitCode with an exit code of zero.\n\tapi.Closer\n}\n\n// NewRuntime returns a runtime with a configuration assigned by NewRuntimeConfig.\nfunc NewRuntime(ctx context.Context) Runtime {\n\treturn NewRuntimeWithConfig(ctx, NewRuntimeConfig())\n}\n\n// NewRuntimeWithConfig returns a runtime with the given configuration.\nfunc NewRuntimeWithConfig(ctx context.Context, rConfig RuntimeConfig) Runtime {\n\tconfig := rConfig.(*runtimeConfig)\n\tconfigKind := config.engineKind\n\tconfigEngine := config.newEngine\n\tif configKind == engineKindAuto {\n\t\tif platform.CompilerSupports(config.enabledFeatures) {\n\t\t\tconfigKind = engineKindCompiler\n\t\t} else {\n\t\t\tconfigKind = engineKindInterpreter\n\t\t}\n\t}\n\tif configEngine == nil {\n\t\tif configKind == engineKindCompiler {\n\t\t\tconfigEngine = wazevo.NewEngine\n\t\t} else {\n\t\t\tconfigEngine = interpreter.NewEngine\n\t\t}\n\t}\n\tvar engine wasm.Engine\n\tvar cacheImpl *cache\n\tif c := config.cache; c != nil {\n\t\t// If the Cache is configured, we share the engine.\n\t\tcacheImpl = c.(*cache)\n\t\tengine = cacheImpl.initEngine(configKind, configEngine, ctx, config.enabledFeatures)\n\t} else {\n\t\t// Otherwise, we create a new engine.\n\t\tengine = configEngine(ctx, config.enabledFeatures, nil)\n\t}\n\tstore := wasm.NewStore(config.enabledFeatures, engine)\n\treturn &runtime{\n\t\tcache:                 cacheImpl,\n\t\tstore:                 store,\n\t\tenabledFeatures:       config.enabledFeatures,\n\t\tmemoryLimitPages:      config.memoryLimitPages,\n\t\tmemoryCapacityFromMax: config.memoryCapacityFromMax,\n\t\tdwarfDisabled:         config.dwarfDisabled,\n\t\tstoreCustomSections:   config.storeCustomSections,\n\t\tensureTermination:     config.ensureTermination,\n\t}\n}\n\n// runtime allows decoupling of public interfaces from internal representation.\ntype runtime struct {\n\tstore                 *wasm.Store\n\tcache                 *cache\n\tenabledFeatures       api.CoreFeatures\n\tmemoryLimitPages      uint32\n\tmemoryCapacityFromMax bool\n\tdwarfDisabled         bool\n\tstoreCustomSections   bool\n\n\t// closed is the pointer used both to guard moduleEngine.CloseWithExitCode and to store the exit code.\n\t//\n\t// The update value is 1 + exitCode << 32. This ensures an exit code of zero isn't mistaken for never closed.\n\t//\n\t// Note: Exclusively reading and updating this with atomics guarantees cross-goroutine observations.\n\t// See /RATIONALE.md\n\tclosed atomic.Uint64\n\n\tensureTermination bool\n}\n\n// Module implements Runtime.Module.\nfunc (r *runtime) Module(moduleName string) api.Module {\n\tif len(moduleName) == 0 {\n\t\treturn nil\n\t}\n\tm := r.store.Module(moduleName)\n\tif m == nil {\n\t\treturn nil\n\t} else if m.Source.IsHostModule {\n\t\treturn hostModuleInstance{m}\n\t}\n\treturn m\n}\n\n// CompileModule implements Runtime.CompileModule\nfunc (r *runtime) CompileModule(ctx context.Context, binary []byte) (CompiledModule, error) {\n\tif err := r.failIfClosed(); err != nil {\n\t\treturn nil, err\n\t}\n\n\tinternal, err := binaryformat.DecodeModule(binary, r.enabledFeatures,\n\t\tr.memoryLimitPages, r.memoryCapacityFromMax, !r.dwarfDisabled, r.storeCustomSections)\n\tif err != nil {\n\t\treturn nil, err\n\t} else if err = internal.Validate(r.enabledFeatures); err != nil {\n\t\t// TODO: decoders should validate before returning, as that allows\n\t\t// them to err with the correct position in the wasm binary.\n\t\treturn nil, err\n\t}\n\n\t// Now that the module is validated, cache the memory definitions.\n\t// TODO: lazy initialization of memory definition.\n\tinternal.BuildMemoryDefinitions()\n\n\tc := &compiledModule{module: internal, compiledEngine: r.store.Engine}\n\n\t// typeIDs are static and compile-time known.\n\ttypeIDs, err := r.store.GetFunctionTypeIDs(internal.TypeSection)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tc.typeIDs = typeIDs\n\n\tlisteners, err := buildFunctionListeners(ctx, internal)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tinternal.AssignModuleID(binary, listeners, r.ensureTermination)\n\tif err = r.store.Engine.CompileModule(ctx, internal, listeners, r.ensureTermination); err != nil {\n\t\treturn nil, err\n\t}\n\treturn c, nil\n}\n\nfunc buildFunctionListeners(ctx context.Context, internal *wasm.Module) ([]experimentalapi.FunctionListener, error) {\n\t// Test to see if internal code are using an experimental feature.\n\tfnlf := ctx.Value(expctxkeys.FunctionListenerFactoryKey{})\n\tif fnlf == nil {\n\t\treturn nil, nil\n\t}\n\tfactory := fnlf.(experimentalapi.FunctionListenerFactory)\n\timportCount := internal.ImportFunctionCount\n\tlisteners := make([]experimentalapi.FunctionListener, len(internal.FunctionSection))\n\tfor i := 0; i < len(listeners); i++ {\n\t\tlisteners[i] = factory.NewFunctionListener(internal.FunctionDefinition(uint32(i) + importCount))\n\t}\n\treturn listeners, nil\n}\n\n// failIfClosed returns an error if CloseWithExitCode was called implicitly (by Close) or explicitly.\nfunc (r *runtime) failIfClosed() error {\n\tif closed := r.closed.Load(); closed != 0 {\n\t\treturn fmt.Errorf(\"runtime closed with exit_code(%d)\", uint32(closed>>32))\n\t}\n\treturn nil\n}\n\n// Instantiate implements Runtime.Instantiate\nfunc (r *runtime) Instantiate(ctx context.Context, binary []byte) (api.Module, error) {\n\treturn r.InstantiateWithConfig(ctx, binary, NewModuleConfig())\n}\n\n// InstantiateWithConfig implements Runtime.InstantiateWithConfig\nfunc (r *runtime) InstantiateWithConfig(ctx context.Context, binary []byte, config ModuleConfig) (api.Module, error) {\n\tif compiled, err := r.CompileModule(ctx, binary); err != nil {\n\t\treturn nil, err\n\t} else {\n\t\tcompiled.(*compiledModule).closeWithModule = true\n\t\treturn r.InstantiateModule(ctx, compiled, config)\n\t}\n}\n\n// InstantiateModule implements Runtime.InstantiateModule.\nfunc (r *runtime) InstantiateModule(\n\tctx context.Context,\n\tcompiled CompiledModule,\n\tmConfig ModuleConfig,\n) (mod api.Module, err error) {\n\tif err = r.failIfClosed(); err != nil {\n\t\treturn nil, err\n\t}\n\n\tcode := compiled.(*compiledModule)\n\tconfig := mConfig.(*moduleConfig)\n\n\t// Only add guest module configuration to guests.\n\tif !code.module.IsHostModule {\n\t\tif sockConfig, ok := ctx.Value(internalsock.ConfigKey{}).(*internalsock.Config); ok {\n\t\t\tconfig.sockConfig = sockConfig\n\t\t}\n\t}\n\n\tvar sysCtx *internalsys.Context\n\tif sysCtx, err = config.toSysContext(); err != nil {\n\t\treturn nil, err\n\t}\n\n\tname := config.name\n\tif !config.nameSet && code.module.NameSection != nil && code.module.NameSection.ModuleName != \"\" {\n\t\tname = code.module.NameSection.ModuleName\n\t}\n\n\t// Instantiate the module.\n\tmod, err = r.store.Instantiate(ctx, code.module, name, sysCtx, code.typeIDs)\n\tif err != nil {\n\t\t// If there was an error, don't leak the compiled module.\n\t\tif code.closeWithModule {\n\t\t\t_ = code.Close(ctx) // don't overwrite the error\n\t\t}\n\t\treturn nil, err\n\t}\n\n\tif closeNotifier, ok := ctx.Value(expctxkeys.CloseNotifierKey{}).(experimentalapi.CloseNotifier); ok {\n\t\tmod.(*wasm.ModuleInstance).CloseNotifier = closeNotifier\n\t}\n\n\t// Attach the code closer so that anything afterward closes the compiled\n\t// code when closing the module.\n\tif code.closeWithModule {\n\t\tmod.(*wasm.ModuleInstance).CodeCloser = code\n\t}\n\n\t// Now, invoke any start functions, failing at first error.\n\tfor _, fn := range config.startFunctions {\n\t\tstart := mod.ExportedFunction(fn)\n\t\tif start == nil {\n\t\t\tcontinue\n\t\t}\n\t\tif _, err = start.Call(ctx); err != nil {\n\t\t\t_ = mod.Close(ctx) // Don't leak the module on error.\n\n\t\t\tif se, ok := err.(*sys.ExitError); ok {\n\t\t\t\tif se.ExitCode() == 0 { // Don't err on success.\n\t\t\t\t\terr = nil\n\t\t\t\t}\n\t\t\t\treturn // Don't wrap an exit error\n\t\t\t}\n\t\t\terr = fmt.Errorf(\"module[%s] function[%s] failed: %w\", name, fn, err)\n\t\t\treturn\n\t\t}\n\t}\n\treturn\n}\n\n// Close implements api.Closer embedded in Runtime.\nfunc (r *runtime) Close(ctx context.Context) error {\n\treturn r.CloseWithExitCode(ctx, 0)\n}\n\n// CloseWithExitCode implements Runtime.CloseWithExitCode\n//\n// Note: it also marks the internal `closed` field\nfunc (r *runtime) CloseWithExitCode(ctx context.Context, exitCode uint32) error {\n\tclosed := uint64(1) + uint64(exitCode)<<32 // Store exitCode as high-order bits.\n\tif !r.closed.CompareAndSwap(0, closed) {\n\t\treturn nil\n\t}\n\terr := r.store.CloseWithExitCode(ctx, exitCode)\n\tif r.cache == nil {\n\t\t// Close the engine if the cache is not configured, which means that this engine is scoped in this runtime.\n\t\tif errCloseEngine := r.store.Engine.Close(); errCloseEngine != nil {\n\t\t\treturn errCloseEngine\n\t\t}\n\t}\n\treturn err\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/sys/clock.go",
    "content": "package sys\n\n// ClockResolution is a positive granularity of clock precision in\n// nanoseconds. For example, if the resolution is 1us, this returns 1000.\n//\n// Note: Some implementations return arbitrary resolution because there's\n// no perfect alternative. For example, according to the source in time.go,\n// windows monotonic resolution can be 15ms. See /RATIONALE.md.\ntype ClockResolution uint32\n\n// Walltime returns the current unix/epoch time, seconds since midnight UTC\n// 1 January 1970, with a nanosecond fraction.\ntype Walltime func() (sec int64, nsec int32)\n\n// Nanotime returns nanoseconds since an arbitrary start point, used to measure\n// elapsed time. This is sometimes referred to as a tick or monotonic time.\n//\n// Note: There are no constraints on the value return except that it\n// increments. For example, -1 is a valid if the next value is >= 0.\ntype Nanotime func() int64\n\n// Nanosleep puts the current goroutine to sleep for at least ns nanoseconds.\ntype Nanosleep func(ns int64)\n\n// Osyield yields the processor, typically to implement spin-wait loops.\ntype Osyield func()\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/sys/error.go",
    "content": "// Package sys includes constants and types used by both public and internal APIs.\npackage sys\n\nimport (\n\t\"context\"\n\t\"fmt\"\n)\n\n// These two special exit codes are reserved by wazero for context Cancel and Timeout integrations.\n// The assumption here is that well-behaving Wasm programs won't use these two exit codes.\nconst (\n\t// ExitCodeContextCanceled corresponds to context.Canceled and returned by ExitError.ExitCode in that case.\n\tExitCodeContextCanceled uint32 = 0xffffffff\n\t// ExitCodeDeadlineExceeded corresponds to context.DeadlineExceeded and returned by ExitError.ExitCode in that case.\n\tExitCodeDeadlineExceeded uint32 = 0xefffffff\n)\n\n// ExitError is returned to a caller of api.Function when api.Module CloseWithExitCode was invoked,\n// or context.Context passed to api.Function Call was canceled or reached the Timeout.\n//\n// ExitCode zero value means success while any other value is an error.\n//\n// Here's an example of how to get the exit code:\n//\n//\tmain := module.ExportedFunction(\"main\")\n//\tif err := main(ctx); err != nil {\n//\t\tif exitErr, ok := err.(*sys.ExitError); ok {\n//\t\t\t// This means your module exited with non-zero code!\n//\t\t}\n//\t--snip--\n//\n// Note: While possible the reason of this was \"proc_exit\" from \"wasi_snapshot_preview1\", it could be from other host\n// functions, for example an AssemblyScript's abort handler, or any arbitrary caller of CloseWithExitCode.\n//\n// See https://github.com/WebAssembly/WASI/blob/main/phases/snapshot/docs.md#proc_exit and\n// https://www.assemblyscript.org/concepts.html#special-imports\n//\n// Note: In the case of context cancellation or timeout, the api.Module from which the api.Function created is closed.\ntype ExitError struct {\n\t// Note: this is a struct not a uint32 type as it was originally one and\n\t// we don't want to break call-sites that cast into it.\n\texitCode uint32\n}\n\nvar exitZero = &ExitError{}\n\nfunc NewExitError(exitCode uint32) *ExitError {\n\tif exitCode == 0 {\n\t\treturn exitZero\n\t}\n\treturn &ExitError{exitCode: exitCode}\n}\n\n// ExitCode returns zero on success, and an arbitrary value otherwise.\nfunc (e *ExitError) ExitCode() uint32 {\n\treturn e.exitCode\n}\n\n// Error implements the error interface.\nfunc (e *ExitError) Error() string {\n\tswitch e.exitCode {\n\tcase ExitCodeContextCanceled:\n\t\treturn fmt.Sprintf(\"module closed with %s\", context.Canceled)\n\tcase ExitCodeDeadlineExceeded:\n\t\treturn fmt.Sprintf(\"module closed with %s\", context.DeadlineExceeded)\n\tdefault:\n\t\treturn fmt.Sprintf(\"module closed with exit_code(%d)\", e.exitCode)\n\t}\n}\n\n// Is allows use via errors.Is\nfunc (e *ExitError) Is(err error) bool {\n\tif target, ok := err.(*ExitError); ok {\n\t\treturn e.exitCode == target.exitCode\n\t}\n\tif e.exitCode == ExitCodeContextCanceled && err == context.Canceled {\n\t\treturn true\n\t}\n\tif e.exitCode == ExitCodeDeadlineExceeded && err == context.DeadlineExceeded {\n\t\treturn true\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/sys/stat.go",
    "content": "package sys\n\nimport \"io/fs\"\n\n// Inode is the file serial number, or zero if unknown.\n//\n// Any constant value will invalidate functions that use this for\n// equivalence, such as os.SameFile (Stat_t.Ino).\n//\n// When zero is returned by a `readdir`, some compilers will attempt to\n// get a non-zero value with `lstat`. Those using this for darwin's definition\n// of `getdirentries` conflate zero `d_fileno` with a deleted file, so skip the\n// entry. See /RATIONALE.md for more on this.\ntype Inode = uint64\n\n// ^-- Inode is a type alias to consolidate documentation and aid in reference\n// searches. While only Stat_t is exposed publicly at the moment, this is used\n// internally for Dirent and several function return values.\n\n// EpochNanos is a timestamp in epoch nanoseconds, or zero if unknown.\n//\n// This defines epoch time the same way as Walltime, except this value is\n// packed into an int64. Common conversions are detailed in the examples.\ntype EpochNanos = int64\n\n// Stat_t is similar to syscall.Stat_t, except available on all operating\n// systems, including Windows.\n//\n// # Notes\n//\n//   - This is used for WebAssembly ABI emulating the POSIX `stat` system call.\n//     See https://pubs.opengroup.org/onlinepubs/9699919799/functions/stat.html\n//   - Fields here are required for WebAssembly ABI including wasip1\n//     (a.k.a. wasix) and wasi-filesystem (a.k.a. wasip2).\n//   - This isn't the same as syscall.Stat_t because wazero supports Windows,\n//     which doesn't have that type. runtime.GOOS that has this already also\n//     have inconsistent field lengths, which complicates wasm binding.\n//   - Use NewStat_t to create this from an existing fs.FileInfo.\n//   - For portability, numeric fields are 64-bit when at least one platform\n//     defines it that large.\ntype Stat_t struct {\n\t// Dev is the device ID of device containing the file.\n\tDev uint64\n\n\t// Ino is the file serial number, or zero if not available. See Inode for\n\t// more details including impact returning a zero value.\n\tIno Inode\n\n\t// Mode is the same as Mode on fs.FileInfo containing bits to identify the\n\t// type of the file (fs.ModeType) and its permissions (fs.ModePerm).\n\tMode fs.FileMode\n\n\t// Nlink is the number of hard links to the file.\n\t//\n\t// Note: This value is platform-specific and often at least one. Linux will\n\t// return 1+N for a directory, where BSD (like Darwin) return 2+N, which\n\t// includes the dot entry.\n\tNlink uint64\n\n\t// Size is the length in bytes for regular files. For symbolic links, this\n\t// is length in bytes of the pathname contained in the symbolic link.\n\tSize int64\n\n\t// Atim is the last data access timestamp in epoch nanoseconds.\n\tAtim EpochNanos\n\n\t// Mtim is the last data modification timestamp in epoch nanoseconds.\n\tMtim EpochNanos\n\n\t// Ctim is the last file status change timestamp in epoch nanoseconds.\n\tCtim EpochNanos\n}\n\n// NewStat_t fills a new Stat_t from `info`, including any runtime.GOOS-specific\n// details from fs.FileInfo `Sys`. When `Sys` is already a *Stat_t, it is\n// returned as-is.\n//\n// # Notes\n//\n//   - When already in fs.FileInfo `Sys`, Stat_t must be a pointer.\n//   - When runtime.GOOS is \"windows\" Stat_t.Ino will be zero.\n//   - When fs.FileInfo `Sys` is nil or unknown, some fields not in fs.FileInfo\n//     are defaulted: Stat_t.Atim and Stat_t.Ctim are set to `ModTime`, and\n//     are set to ModTime and Stat_t.Nlink is set to 1.\nfunc NewStat_t(info fs.FileInfo) Stat_t {\n\t// Note: Pointer, not val, for parity with Go, which sets *syscall.Stat_t\n\tif st, ok := info.Sys().(*Stat_t); ok {\n\t\treturn *st\n\t}\n\treturn statFromFileInfo(info)\n}\n\nfunc defaultStatFromFileInfo(info fs.FileInfo) Stat_t {\n\tst := Stat_t{}\n\tst.Ino = 0\n\tst.Dev = 0\n\tst.Mode = info.Mode()\n\tst.Nlink = 1\n\tst.Size = info.Size()\n\tmtim := info.ModTime().UnixNano() // Set all times to the mod time\n\tst.Atim = mtim\n\tst.Mtim = mtim\n\tst.Ctim = mtim\n\treturn st\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/sys/stat_bsd.go",
    "content": "//go:build (amd64 || arm64) && (darwin || freebsd)\n\npackage sys\n\nimport (\n\t\"io/fs\"\n\t\"syscall\"\n)\n\nconst sysParseable = true\n\nfunc statFromFileInfo(info fs.FileInfo) Stat_t {\n\tif d, ok := info.Sys().(*syscall.Stat_t); ok {\n\t\tst := Stat_t{}\n\t\tst.Dev = uint64(d.Dev)\n\t\tst.Ino = d.Ino\n\t\tst.Mode = info.Mode()\n\t\tst.Nlink = uint64(d.Nlink)\n\t\tst.Size = d.Size\n\t\tatime := d.Atimespec\n\t\tst.Atim = atime.Sec*1e9 + atime.Nsec\n\t\tmtime := d.Mtimespec\n\t\tst.Mtim = mtime.Sec*1e9 + mtime.Nsec\n\t\tctime := d.Ctimespec\n\t\tst.Ctim = ctime.Sec*1e9 + ctime.Nsec\n\t\treturn st\n\t}\n\treturn defaultStatFromFileInfo(info)\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/sys/stat_linux.go",
    "content": "//go:build (amd64 || arm64 || ppc64le || riscv64 || s390x) && linux\n\n// Note: This expression is not the same as compiler support, even if it looks\n// similar. Platform functions here are used in interpreter mode as well.\n\npackage sys\n\nimport (\n\t\"io/fs\"\n\t\"syscall\"\n)\n\nconst sysParseable = true\n\nfunc statFromFileInfo(info fs.FileInfo) Stat_t {\n\tif d, ok := info.Sys().(*syscall.Stat_t); ok {\n\t\tst := Stat_t{}\n\t\tst.Dev = uint64(d.Dev)\n\t\tst.Ino = uint64(d.Ino)\n\t\tst.Mode = info.Mode()\n\t\tst.Nlink = uint64(d.Nlink)\n\t\tst.Size = d.Size\n\t\tatime := d.Atim\n\t\tst.Atim = atime.Sec*1e9 + atime.Nsec\n\t\tmtime := d.Mtim\n\t\tst.Mtim = mtime.Sec*1e9 + mtime.Nsec\n\t\tctime := d.Ctim\n\t\tst.Ctim = ctime.Sec*1e9 + ctime.Nsec\n\t\treturn st\n\t}\n\treturn defaultStatFromFileInfo(info)\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/sys/stat_unsupported.go",
    "content": "//go:build (!((amd64 || arm64 || ppc64le || riscv64 || s390x) && linux) && !((amd64 || arm64) && (darwin || freebsd)) && !((amd64 || arm64) && windows)) || js\n\npackage sys\n\nimport \"io/fs\"\n\n// sysParseable is only used here as we define \"supported\" as being able to\n// parse `info.Sys()`. The above `go:build` constraints exclude 32-bit until\n// that's requested.\nconst sysParseable = false\n\nfunc statFromFileInfo(info fs.FileInfo) Stat_t {\n\treturn defaultStatFromFileInfo(info)\n}\n"
  },
  {
    "path": "vendor/github.com/tetratelabs/wazero/sys/stat_windows.go",
    "content": "//go:build (amd64 || arm64) && windows\n\npackage sys\n\nimport (\n\t\"io/fs\"\n\t\"syscall\"\n)\n\nconst sysParseable = true\n\nfunc statFromFileInfo(info fs.FileInfo) Stat_t {\n\tif d, ok := info.Sys().(*syscall.Win32FileAttributeData); ok {\n\t\tst := Stat_t{}\n\t\tst.Ino = 0 // not in Win32FileAttributeData\n\t\tst.Dev = 0 // not in Win32FileAttributeData\n\t\tst.Mode = info.Mode()\n\t\tst.Nlink = 1 // not in Win32FileAttributeData\n\t\tst.Size = info.Size()\n\t\tst.Atim = d.LastAccessTime.Nanoseconds()\n\t\tst.Mtim = d.LastWriteTime.Nanoseconds()\n\t\tst.Ctim = d.CreationTime.Nanoseconds()\n\t\treturn st\n\t}\n\treturn defaultStatFromFileInfo(info)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/mod/LICENSE",
    "content": "Copyright 2009 The Go Authors.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n   * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n   * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n   * Neither the name of Google LLC nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
  },
  {
    "path": "vendor/golang.org/x/mod/PATENTS",
    "content": "Additional IP Rights Grant (Patents)\n\n\"This implementation\" means the copyrightable works distributed by\nGoogle as part of the Go project.\n\nGoogle hereby grants to You a perpetual, worldwide, non-exclusive,\nno-charge, royalty-free, irrevocable (except as stated in this section)\npatent license to make, have made, use, offer to sell, sell, import,\ntransfer and otherwise run, modify and propagate the contents of this\nimplementation of Go, where such license applies only to those patent\nclaims, both currently owned or controlled by Google and acquired in\nthe future, licensable by Google that are necessarily infringed by this\nimplementation of Go.  This grant does not include claims that would be\ninfringed only as a consequence of further modification of this\nimplementation.  If you or your agent or exclusive licensee institute or\norder or agree to the institution of patent litigation against any\nentity (including a cross-claim or counterclaim in a lawsuit) alleging\nthat this implementation of Go or any code incorporated within this\nimplementation of Go constitutes direct or contributory patent\ninfringement, or inducement of patent infringement, then any patent\nrights granted to you under this License for this implementation of Go\nshall terminate as of the date such litigation is filed.\n"
  },
  {
    "path": "vendor/golang.org/x/mod/semver/semver.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package semver implements comparison of semantic version strings.\n// In this package, semantic version strings must begin with a leading \"v\",\n// as in \"v1.0.0\".\n//\n// The general form of a semantic version string accepted by this package is\n//\n//\tvMAJOR[.MINOR[.PATCH[-PRERELEASE][+BUILD]]]\n//\n// where square brackets indicate optional parts of the syntax;\n// MAJOR, MINOR, and PATCH are decimal integers without extra leading zeros;\n// PRERELEASE and BUILD are each a series of non-empty dot-separated identifiers\n// using only alphanumeric characters and hyphens; and\n// all-numeric PRERELEASE identifiers must not have leading zeros.\n//\n// This package follows Semantic Versioning 2.0.0 (see semver.org)\n// with two exceptions. First, it requires the \"v\" prefix. Second, it recognizes\n// vMAJOR and vMAJOR.MINOR (with no prerelease or build suffixes)\n// as shorthands for vMAJOR.0.0 and vMAJOR.MINOR.0.\npackage semver\n\nimport (\n\t\"slices\"\n\t\"strings\"\n)\n\n// parsed returns the parsed form of a semantic version string.\ntype parsed struct {\n\tmajor      string\n\tminor      string\n\tpatch      string\n\tshort      string\n\tprerelease string\n\tbuild      string\n}\n\n// IsValid reports whether v is a valid semantic version string.\nfunc IsValid(v string) bool {\n\t_, ok := parse(v)\n\treturn ok\n}\n\n// Canonical returns the canonical formatting of the semantic version v.\n// It fills in any missing .MINOR or .PATCH and discards build metadata.\n// Two semantic versions compare equal only if their canonical formatting\n// is an identical string.\n// The canonical invalid semantic version is the empty string.\nfunc Canonical(v string) string {\n\tp, ok := parse(v)\n\tif !ok {\n\t\treturn \"\"\n\t}\n\tif p.build != \"\" {\n\t\treturn v[:len(v)-len(p.build)]\n\t}\n\tif p.short != \"\" {\n\t\treturn v + p.short\n\t}\n\treturn v\n}\n\n// Major returns the major version prefix of the semantic version v.\n// For example, Major(\"v2.1.0\") == \"v2\".\n// If v is an invalid semantic version string, Major returns the empty string.\nfunc Major(v string) string {\n\tpv, ok := parse(v)\n\tif !ok {\n\t\treturn \"\"\n\t}\n\treturn v[:1+len(pv.major)]\n}\n\n// MajorMinor returns the major.minor version prefix of the semantic version v.\n// For example, MajorMinor(\"v2.1.0\") == \"v2.1\".\n// If v is an invalid semantic version string, MajorMinor returns the empty string.\nfunc MajorMinor(v string) string {\n\tpv, ok := parse(v)\n\tif !ok {\n\t\treturn \"\"\n\t}\n\ti := 1 + len(pv.major)\n\tif j := i + 1 + len(pv.minor); j <= len(v) && v[i] == '.' && v[i+1:j] == pv.minor {\n\t\treturn v[:j]\n\t}\n\treturn v[:i] + \".\" + pv.minor\n}\n\n// Prerelease returns the prerelease suffix of the semantic version v.\n// For example, Prerelease(\"v2.1.0-pre+meta\") == \"-pre\".\n// If v is an invalid semantic version string, Prerelease returns the empty string.\nfunc Prerelease(v string) string {\n\tpv, ok := parse(v)\n\tif !ok {\n\t\treturn \"\"\n\t}\n\treturn pv.prerelease\n}\n\n// Build returns the build suffix of the semantic version v.\n// For example, Build(\"v2.1.0+meta\") == \"+meta\".\n// If v is an invalid semantic version string, Build returns the empty string.\nfunc Build(v string) string {\n\tpv, ok := parse(v)\n\tif !ok {\n\t\treturn \"\"\n\t}\n\treturn pv.build\n}\n\n// Compare returns an integer comparing two versions according to\n// semantic version precedence.\n// The result will be 0 if v == w, -1 if v < w, or +1 if v > w.\n//\n// An invalid semantic version string is considered less than a valid one.\n// All invalid semantic version strings compare equal to each other.\nfunc Compare(v, w string) int {\n\tpv, ok1 := parse(v)\n\tpw, ok2 := parse(w)\n\tif !ok1 && !ok2 {\n\t\treturn 0\n\t}\n\tif !ok1 {\n\t\treturn -1\n\t}\n\tif !ok2 {\n\t\treturn +1\n\t}\n\tif c := compareInt(pv.major, pw.major); c != 0 {\n\t\treturn c\n\t}\n\tif c := compareInt(pv.minor, pw.minor); c != 0 {\n\t\treturn c\n\t}\n\tif c := compareInt(pv.patch, pw.patch); c != 0 {\n\t\treturn c\n\t}\n\treturn comparePrerelease(pv.prerelease, pw.prerelease)\n}\n\n// Max canonicalizes its arguments and then returns the version string\n// that compares greater.\n//\n// Deprecated: use [Compare] instead. In most cases, returning a canonicalized\n// version is not expected or desired.\nfunc Max(v, w string) string {\n\tv = Canonical(v)\n\tw = Canonical(w)\n\tif Compare(v, w) > 0 {\n\t\treturn v\n\t}\n\treturn w\n}\n\n// ByVersion implements [sort.Interface] for sorting semantic version strings.\ntype ByVersion []string\n\nfunc (vs ByVersion) Len() int           { return len(vs) }\nfunc (vs ByVersion) Swap(i, j int)      { vs[i], vs[j] = vs[j], vs[i] }\nfunc (vs ByVersion) Less(i, j int) bool { return compareVersion(vs[i], vs[j]) < 0 }\n\n// Sort sorts a list of semantic version strings using [Compare] and falls back\n// to use [strings.Compare] if both versions are considered equal.\nfunc Sort(list []string) {\n\tslices.SortFunc(list, compareVersion)\n}\n\nfunc compareVersion(a, b string) int {\n\tcmp := Compare(a, b)\n\tif cmp != 0 {\n\t\treturn cmp\n\t}\n\treturn strings.Compare(a, b)\n}\n\nfunc parse(v string) (p parsed, ok bool) {\n\tif v == \"\" || v[0] != 'v' {\n\t\treturn\n\t}\n\tp.major, v, ok = parseInt(v[1:])\n\tif !ok {\n\t\treturn\n\t}\n\tif v == \"\" {\n\t\tp.minor = \"0\"\n\t\tp.patch = \"0\"\n\t\tp.short = \".0.0\"\n\t\treturn\n\t}\n\tif v[0] != '.' {\n\t\tok = false\n\t\treturn\n\t}\n\tp.minor, v, ok = parseInt(v[1:])\n\tif !ok {\n\t\treturn\n\t}\n\tif v == \"\" {\n\t\tp.patch = \"0\"\n\t\tp.short = \".0\"\n\t\treturn\n\t}\n\tif v[0] != '.' {\n\t\tok = false\n\t\treturn\n\t}\n\tp.patch, v, ok = parseInt(v[1:])\n\tif !ok {\n\t\treturn\n\t}\n\tif len(v) > 0 && v[0] == '-' {\n\t\tp.prerelease, v, ok = parsePrerelease(v)\n\t\tif !ok {\n\t\t\treturn\n\t\t}\n\t}\n\tif len(v) > 0 && v[0] == '+' {\n\t\tp.build, v, ok = parseBuild(v)\n\t\tif !ok {\n\t\t\treturn\n\t\t}\n\t}\n\tif v != \"\" {\n\t\tok = false\n\t\treturn\n\t}\n\tok = true\n\treturn\n}\n\nfunc parseInt(v string) (t, rest string, ok bool) {\n\tif v == \"\" {\n\t\treturn\n\t}\n\tif v[0] < '0' || '9' < v[0] {\n\t\treturn\n\t}\n\ti := 1\n\tfor i < len(v) && '0' <= v[i] && v[i] <= '9' {\n\t\ti++\n\t}\n\tif v[0] == '0' && i != 1 {\n\t\treturn\n\t}\n\treturn v[:i], v[i:], true\n}\n\nfunc parsePrerelease(v string) (t, rest string, ok bool) {\n\t// \"A pre-release version MAY be denoted by appending a hyphen and\n\t// a series of dot separated identifiers immediately following the patch version.\n\t// Identifiers MUST comprise only ASCII alphanumerics and hyphen [0-9A-Za-z-].\n\t// Identifiers MUST NOT be empty. Numeric identifiers MUST NOT include leading zeroes.\"\n\tif v == \"\" || v[0] != '-' {\n\t\treturn\n\t}\n\ti := 1\n\tstart := 1\n\tfor i < len(v) && v[i] != '+' {\n\t\tif !isIdentChar(v[i]) && v[i] != '.' {\n\t\t\treturn\n\t\t}\n\t\tif v[i] == '.' {\n\t\t\tif start == i || isBadNum(v[start:i]) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tstart = i + 1\n\t\t}\n\t\ti++\n\t}\n\tif start == i || isBadNum(v[start:i]) {\n\t\treturn\n\t}\n\treturn v[:i], v[i:], true\n}\n\nfunc parseBuild(v string) (t, rest string, ok bool) {\n\tif v == \"\" || v[0] != '+' {\n\t\treturn\n\t}\n\ti := 1\n\tstart := 1\n\tfor i < len(v) {\n\t\tif !isIdentChar(v[i]) && v[i] != '.' {\n\t\t\treturn\n\t\t}\n\t\tif v[i] == '.' {\n\t\t\tif start == i {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tstart = i + 1\n\t\t}\n\t\ti++\n\t}\n\tif start == i {\n\t\treturn\n\t}\n\treturn v[:i], v[i:], true\n}\n\nfunc isIdentChar(c byte) bool {\n\treturn 'A' <= c && c <= 'Z' || 'a' <= c && c <= 'z' || '0' <= c && c <= '9' || c == '-'\n}\n\nfunc isBadNum(v string) bool {\n\ti := 0\n\tfor i < len(v) && '0' <= v[i] && v[i] <= '9' {\n\t\ti++\n\t}\n\treturn i == len(v) && i > 1 && v[0] == '0'\n}\n\nfunc isNum(v string) bool {\n\ti := 0\n\tfor i < len(v) && '0' <= v[i] && v[i] <= '9' {\n\t\ti++\n\t}\n\treturn i == len(v)\n}\n\nfunc compareInt(x, y string) int {\n\tif x == y {\n\t\treturn 0\n\t}\n\tif len(x) < len(y) {\n\t\treturn -1\n\t}\n\tif len(x) > len(y) {\n\t\treturn +1\n\t}\n\tif x < y {\n\t\treturn -1\n\t} else {\n\t\treturn +1\n\t}\n}\n\nfunc comparePrerelease(x, y string) int {\n\t// \"When major, minor, and patch are equal, a pre-release version has\n\t// lower precedence than a normal version.\n\t// Example: 1.0.0-alpha < 1.0.0.\n\t// Precedence for two pre-release versions with the same major, minor,\n\t// and patch version MUST be determined by comparing each dot separated\n\t// identifier from left to right until a difference is found as follows:\n\t// identifiers consisting of only digits are compared numerically and\n\t// identifiers with letters or hyphens are compared lexically in ASCII\n\t// sort order. Numeric identifiers always have lower precedence than\n\t// non-numeric identifiers. A larger set of pre-release fields has a\n\t// higher precedence than a smaller set, if all of the preceding\n\t// identifiers are equal.\n\t// Example: 1.0.0-alpha < 1.0.0-alpha.1 < 1.0.0-alpha.beta <\n\t// 1.0.0-beta < 1.0.0-beta.2 < 1.0.0-beta.11 < 1.0.0-rc.1 < 1.0.0.\"\n\tif x == y {\n\t\treturn 0\n\t}\n\tif x == \"\" {\n\t\treturn +1\n\t}\n\tif y == \"\" {\n\t\treturn -1\n\t}\n\tfor x != \"\" && y != \"\" {\n\t\tx = x[1:] // skip - or .\n\t\ty = y[1:] // skip - or .\n\t\tvar dx, dy string\n\t\tdx, x = nextIdent(x)\n\t\tdy, y = nextIdent(y)\n\t\tif dx != dy {\n\t\t\tix := isNum(dx)\n\t\t\tiy := isNum(dy)\n\t\t\tif ix != iy {\n\t\t\t\tif ix {\n\t\t\t\t\treturn -1\n\t\t\t\t} else {\n\t\t\t\t\treturn +1\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ix {\n\t\t\t\tif len(dx) < len(dy) {\n\t\t\t\t\treturn -1\n\t\t\t\t}\n\t\t\t\tif len(dx) > len(dy) {\n\t\t\t\t\treturn +1\n\t\t\t\t}\n\t\t\t}\n\t\t\tif dx < dy {\n\t\t\t\treturn -1\n\t\t\t} else {\n\t\t\t\treturn +1\n\t\t\t}\n\t\t}\n\t}\n\tif x == \"\" {\n\t\treturn -1\n\t} else {\n\t\treturn +1\n\t}\n}\n\nfunc nextIdent(x string) (dx, rest string) {\n\ti := 0\n\tfor i < len(x) && x[i] != '.' {\n\t\ti++\n\t}\n\treturn x[:i], x[i:]\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/LICENSE",
    "content": "Copyright 2009 The Go Authors.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n   * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n   * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n   * Neither the name of Google LLC nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
  },
  {
    "path": "vendor/golang.org/x/sys/PATENTS",
    "content": "Additional IP Rights Grant (Patents)\n\n\"This implementation\" means the copyrightable works distributed by\nGoogle as part of the Go project.\n\nGoogle hereby grants to You a perpetual, worldwide, non-exclusive,\nno-charge, royalty-free, irrevocable (except as stated in this section)\npatent license to make, have made, use, offer to sell, sell, import,\ntransfer and otherwise run, modify and propagate the contents of this\nimplementation of Go, where such license applies only to those patent\nclaims, both currently owned or controlled by Google and acquired in\nthe future, licensable by Google that are necessarily infringed by this\nimplementation of Go.  This grant does not include claims that would be\ninfringed only as a consequence of further modification of this\nimplementation.  If you or your agent or exclusive licensee institute or\norder or agree to the institution of patent litigation against any\nentity (including a cross-claim or counterclaim in a lawsuit) alleging\nthat this implementation of Go or any code incorporated within this\nimplementation of Go constitutes direct or contributory patent\ninfringement, or inducement of patent infringement, then any patent\nrights granted to you under this License for this implementation of Go\nshall terminate as of the date such litigation is filed.\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/.gitignore",
    "content": "_obj/\nunix.test\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/README.md",
    "content": "# Building `sys/unix`\n\nThe sys/unix package provides access to the raw system call interface of the\nunderlying operating system. See: https://godoc.org/golang.org/x/sys/unix\n\nPorting Go to a new architecture/OS combination or adding syscalls, types, or\nconstants to an existing architecture/OS pair requires some manual effort;\nhowever, there are tools that automate much of the process.\n\n## Build Systems\n\nThere are currently two ways we generate the necessary files. We are currently\nmigrating the build system to use containers so the builds are reproducible.\nThis is being done on an OS-by-OS basis. Please update this documentation as\ncomponents of the build system change.\n\n### Old Build System (currently for `GOOS != \"linux\"`)\n\nThe old build system generates the Go files based on the C header files\npresent on your system. This means that files\nfor a given GOOS/GOARCH pair must be generated on a system with that OS and\narchitecture. This also means that the generated code can differ from system\nto system, based on differences in the header files.\n\nTo avoid this, if you are using the old build system, only generate the Go\nfiles on an installation with unmodified header files. It is also important to\nkeep track of which version of the OS the files were generated from (ex.\nDarwin 14 vs Darwin 15). This makes it easier to track the progress of changes\nand have each OS upgrade correspond to a single change.\n\nTo build the files for your current OS and architecture, make sure GOOS and\nGOARCH are set correctly and run `mkall.sh`. This will generate the files for\nyour specific system. Running `mkall.sh -n` shows the commands that will be run.\n\nRequirements: bash, go\n\n### New Build System (currently for `GOOS == \"linux\"`)\n\nThe new build system uses a Docker container to generate the go files directly\nfrom source checkouts of the kernel and various system libraries. This means\nthat on any platform that supports Docker, all the files using the new build\nsystem can be generated at once, and generated files will not change based on\nwhat the person running the scripts has installed on their computer.\n\nThe OS specific files for the new build system are located in the `${GOOS}`\ndirectory, and the build is coordinated by the `${GOOS}/mkall.go` program. When\nthe kernel or system library updates, modify the Dockerfile at\n`${GOOS}/Dockerfile` to checkout the new release of the source.\n\nTo build all the files under the new build system, you must be on an amd64/Linux\nsystem and have your GOOS and GOARCH set accordingly. Running `mkall.sh` will\nthen generate all of the files for all of the GOOS/GOARCH pairs in the new build\nsystem. Running `mkall.sh -n` shows the commands that will be run.\n\nRequirements: bash, go, docker\n\n## Component files\n\nThis section describes the various files used in the code generation process.\nIt also contains instructions on how to modify these files to add a new\narchitecture/OS or to add additional syscalls, types, or constants. Note that\nif you are using the new build system, the scripts/programs cannot be called normally.\nThey must be called from within the docker container.\n\n### asm files\n\nThe hand-written assembly file at `asm_${GOOS}_${GOARCH}.s` implements system\ncall dispatch. There are three entry points:\n```\n  func Syscall(trap, a1, a2, a3 uintptr) (r1, r2, err uintptr)\n  func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2, err uintptr)\n  func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2, err uintptr)\n```\nThe first and second are the standard ones; they differ only in how many\narguments can be passed to the kernel. The third is for low-level use by the\nForkExec wrapper. Unlike the first two, it does not call into the scheduler to\nlet it know that a system call is running.\n\nWhen porting Go to a new architecture/OS, this file must be implemented for\neach GOOS/GOARCH pair.\n\n### mksysnum\n\nMksysnum is a Go program located at `${GOOS}/mksysnum.go` (or `mksysnum_${GOOS}.go`\nfor the old system). This program takes in a list of header files containing the\nsyscall number declarations and parses them to produce the corresponding list of\nGo numeric constants. See `zsysnum_${GOOS}_${GOARCH}.go` for the generated\nconstants.\n\nAdding new syscall numbers is mostly done by running the build on a sufficiently\nnew installation of the target OS (or updating the source checkouts for the\nnew build system). However, depending on the OS, you may need to update the\nparsing in mksysnum.\n\n### mksyscall.go\n\nThe `syscall.go`, `syscall_${GOOS}.go`, `syscall_${GOOS}_${GOARCH}.go` are\nhand-written Go files which implement system calls (for unix, the specific OS,\nor the specific OS/Architecture pair respectively) that need special handling\nand list `//sys` comments giving prototypes for ones that can be generated.\n\nThe mksyscall.go program takes the `//sys` and `//sysnb` comments and converts\nthem into syscalls. This requires the name of the prototype in the comment to\nmatch a syscall number in the `zsysnum_${GOOS}_${GOARCH}.go` file. The function\nprototype can be exported (capitalized) or not.\n\nAdding a new syscall often just requires adding a new `//sys` function prototype\nwith the desired arguments and a capitalized name so it is exported. However, if\nyou want the interface to the syscall to be different, often one will make an\nunexported `//sys` prototype, and then write a custom wrapper in\n`syscall_${GOOS}.go`.\n\n### types files\n\nFor each OS, there is a hand-written Go file at `${GOOS}/types.go` (or\n`types_${GOOS}.go` on the old system). This file includes standard C headers and\ncreates Go type aliases to the corresponding C types. The file is then fed\nthrough godef to get the Go compatible definitions. Finally, the generated code\nis fed though mkpost.go to format the code correctly and remove any hidden or\nprivate identifiers. This cleaned-up code is written to\n`ztypes_${GOOS}_${GOARCH}.go`.\n\nThe hardest part about preparing this file is figuring out which headers to\ninclude and which symbols need to be `#define`d to get the actual data\nstructures that pass through to the kernel system calls. Some C libraries\npreset alternate versions for binary compatibility and translate them on the\nway in and out of system calls, but there is almost always a `#define` that can\nget the real ones.\nSee `types_darwin.go` and `linux/types.go` for examples.\n\nTo add a new type, add in the necessary include statement at the top of the\nfile (if it is not already there) and add in a type alias line. Note that if\nyour type is significantly different on different architectures, you may need\nsome `#if/#elif` macros in your include statements.\n\n### mkerrors.sh\n\nThis script is used to generate the system's various constants. This doesn't\njust include the error numbers and error strings, but also the signal numbers\nand a wide variety of miscellaneous constants. The constants come from the list\nof include files in the `includes_${uname}` variable. A regex then picks out\nthe desired `#define` statements, and generates the corresponding Go constants.\nThe error numbers and strings are generated from `#include <errno.h>`, and the\nsignal numbers and strings are generated from `#include <signal.h>`. All of\nthese constants are written to `zerrors_${GOOS}_${GOARCH}.go` via a C program,\n`_errors.c`, which prints out all the constants.\n\nTo add a constant, add the header that includes it to the appropriate variable.\nThen, edit the regex (if necessary) to match the desired constant. Avoid making\nthe regex too broad to avoid matching unintended constants.\n\n### internal/mkmerge\n\nThis program is used to extract duplicate const, func, and type declarations\nfrom the generated architecture-specific files listed below, and merge these\ninto a common file for each OS.\n\nThe merge is performed in the following steps:\n1. Construct the set of common code that is identical in all architecture-specific files.\n2. Write this common code to the merged file.\n3. Remove the common code from all architecture-specific files.\n\n\n## Generated files\n\n### `zerrors_${GOOS}_${GOARCH}.go`\n\nA file containing all of the system's generated error numbers, error strings,\nsignal numbers, and constants. Generated by `mkerrors.sh` (see above).\n\n### `zsyscall_${GOOS}_${GOARCH}.go`\n\nA file containing all the generated syscalls for a specific GOOS and GOARCH.\nGenerated by `mksyscall.go` (see above).\n\n### `zsysnum_${GOOS}_${GOARCH}.go`\n\nA list of numeric constants for all the syscall number of the specific GOOS\nand GOARCH. Generated by mksysnum (see above).\n\n### `ztypes_${GOOS}_${GOARCH}.go`\n\nA file containing Go types for passing into (or returning from) syscalls.\nGenerated by godefs and the types file (see above).\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/affinity_linux.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// CPU affinity functions\n\npackage unix\n\nimport (\n\t\"math/bits\"\n\t\"unsafe\"\n)\n\nconst cpuSetSize = _CPU_SETSIZE / _NCPUBITS\n\n// CPUSet represents a CPU affinity mask.\ntype CPUSet [cpuSetSize]cpuMask\n\nfunc schedAffinity(trap uintptr, pid int, set *CPUSet) error {\n\t_, _, e := RawSyscall(trap, uintptr(pid), uintptr(unsafe.Sizeof(*set)), uintptr(unsafe.Pointer(set)))\n\tif e != 0 {\n\t\treturn errnoErr(e)\n\t}\n\treturn nil\n}\n\n// SchedGetaffinity gets the CPU affinity mask of the thread specified by pid.\n// If pid is 0 the calling thread is used.\nfunc SchedGetaffinity(pid int, set *CPUSet) error {\n\treturn schedAffinity(SYS_SCHED_GETAFFINITY, pid, set)\n}\n\n// SchedSetaffinity sets the CPU affinity mask of the thread specified by pid.\n// If pid is 0 the calling thread is used.\nfunc SchedSetaffinity(pid int, set *CPUSet) error {\n\treturn schedAffinity(SYS_SCHED_SETAFFINITY, pid, set)\n}\n\n// Zero clears the set s, so that it contains no CPUs.\nfunc (s *CPUSet) Zero() {\n\tclear(s[:])\n}\n\n// Fill adds all possible CPU bits to the set s. On Linux, [SchedSetaffinity]\n// will silently ignore any invalid CPU bits in [CPUSet] so this is an\n// efficient way of resetting the CPU affinity of a process.\nfunc (s *CPUSet) Fill() {\n\tfor i := range s {\n\t\ts[i] = ^cpuMask(0)\n\t}\n}\n\nfunc cpuBitsIndex(cpu int) int {\n\treturn cpu / _NCPUBITS\n}\n\nfunc cpuBitsMask(cpu int) cpuMask {\n\treturn cpuMask(1 << (uint(cpu) % _NCPUBITS))\n}\n\n// Set adds cpu to the set s.\nfunc (s *CPUSet) Set(cpu int) {\n\ti := cpuBitsIndex(cpu)\n\tif i < len(s) {\n\t\ts[i] |= cpuBitsMask(cpu)\n\t}\n}\n\n// Clear removes cpu from the set s.\nfunc (s *CPUSet) Clear(cpu int) {\n\ti := cpuBitsIndex(cpu)\n\tif i < len(s) {\n\t\ts[i] &^= cpuBitsMask(cpu)\n\t}\n}\n\n// IsSet reports whether cpu is in the set s.\nfunc (s *CPUSet) IsSet(cpu int) bool {\n\ti := cpuBitsIndex(cpu)\n\tif i < len(s) {\n\t\treturn s[i]&cpuBitsMask(cpu) != 0\n\t}\n\treturn false\n}\n\n// Count returns the number of CPUs in the set s.\nfunc (s *CPUSet) Count() int {\n\tc := 0\n\tfor _, b := range s {\n\t\tc += bits.OnesCount64(uint64(b))\n\t}\n\treturn c\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/aliases.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos\n\npackage unix\n\nimport \"syscall\"\n\ntype Signal = syscall.Signal\ntype Errno = syscall.Errno\ntype SysProcAttr = syscall.SysProcAttr\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_aix_ppc64.s",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gc\n\n#include \"textflag.h\"\n\n//\n// System calls for ppc64, AIX are implemented in runtime/syscall_aix.go\n//\n\nTEXT ·syscall6(SB),NOSPLIT,$0-88\n\tJMP\tsyscall·syscall6(SB)\n\nTEXT ·rawSyscall6(SB),NOSPLIT,$0-88\n\tJMP\tsyscall·rawSyscall6(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_bsd_386.s",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (freebsd || netbsd || openbsd) && gc\n\n#include \"textflag.h\"\n\n// System call support for 386 BSD\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT\t·Syscall(SB),NOSPLIT,$0-28\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT\t·Syscall6(SB),NOSPLIT,$0-40\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT\t·Syscall9(SB),NOSPLIT,$0-52\n\tJMP\tsyscall·Syscall9(SB)\n\nTEXT\t·RawSyscall(SB),NOSPLIT,$0-28\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT\t·RawSyscall6(SB),NOSPLIT,$0-40\n\tJMP\tsyscall·RawSyscall6(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_bsd_amd64.s",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (darwin || dragonfly || freebsd || netbsd || openbsd) && gc\n\n#include \"textflag.h\"\n\n// System call support for AMD64 BSD\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT\t·Syscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT\t·Syscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT\t·Syscall9(SB),NOSPLIT,$0-104\n\tJMP\tsyscall·Syscall9(SB)\n\nTEXT\t·RawSyscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT\t·RawSyscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·RawSyscall6(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_bsd_arm.s",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (freebsd || netbsd || openbsd) && gc\n\n#include \"textflag.h\"\n\n// System call support for ARM BSD\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT\t·Syscall(SB),NOSPLIT,$0-28\n\tB\tsyscall·Syscall(SB)\n\nTEXT\t·Syscall6(SB),NOSPLIT,$0-40\n\tB\tsyscall·Syscall6(SB)\n\nTEXT\t·Syscall9(SB),NOSPLIT,$0-52\n\tB\tsyscall·Syscall9(SB)\n\nTEXT\t·RawSyscall(SB),NOSPLIT,$0-28\n\tB\tsyscall·RawSyscall(SB)\n\nTEXT\t·RawSyscall6(SB),NOSPLIT,$0-40\n\tB\tsyscall·RawSyscall6(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_bsd_arm64.s",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (darwin || freebsd || netbsd || openbsd) && gc\n\n#include \"textflag.h\"\n\n// System call support for ARM64 BSD\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT\t·Syscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT\t·Syscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT\t·Syscall9(SB),NOSPLIT,$0-104\n\tJMP\tsyscall·Syscall9(SB)\n\nTEXT\t·RawSyscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT\t·RawSyscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·RawSyscall6(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_bsd_ppc64.s",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (darwin || freebsd || netbsd || openbsd) && gc\n\n#include \"textflag.h\"\n\n//\n// System call support for ppc64, BSD\n//\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT\t·Syscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT\t·Syscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT\t·Syscall9(SB),NOSPLIT,$0-104\n\tJMP\tsyscall·Syscall9(SB)\n\nTEXT\t·RawSyscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT\t·RawSyscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·RawSyscall6(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_bsd_riscv64.s",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (darwin || freebsd || netbsd || openbsd) && gc\n\n#include \"textflag.h\"\n\n// System call support for RISCV64 BSD\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT\t·Syscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT\t·Syscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT\t·Syscall9(SB),NOSPLIT,$0-104\n\tJMP\tsyscall·Syscall9(SB)\n\nTEXT\t·RawSyscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT\t·RawSyscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·RawSyscall6(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_linux_386.s",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gc\n\n#include \"textflag.h\"\n\n//\n// System calls for 386, Linux\n//\n\n// See ../runtime/sys_linux_386.s for the reason why we always use int 0x80\n// instead of the glibc-specific \"CALL 0x10(GS)\".\n#define INVOKE_SYSCALL\tINT\t$0x80\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT ·Syscall(SB),NOSPLIT,$0-28\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT ·Syscall6(SB),NOSPLIT,$0-40\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT ·SyscallNoError(SB),NOSPLIT,$0-24\n\tCALL\truntime·entersyscall(SB)\n\tMOVL\ttrap+0(FP), AX  // syscall entry\n\tMOVL\ta1+4(FP), BX\n\tMOVL\ta2+8(FP), CX\n\tMOVL\ta3+12(FP), DX\n\tMOVL\t$0, SI\n\tMOVL\t$0, DI\n\tINVOKE_SYSCALL\n\tMOVL\tAX, r1+16(FP)\n\tMOVL\tDX, r2+20(FP)\n\tCALL\truntime·exitsyscall(SB)\n\tRET\n\nTEXT ·RawSyscall(SB),NOSPLIT,$0-28\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT ·RawSyscall6(SB),NOSPLIT,$0-40\n\tJMP\tsyscall·RawSyscall6(SB)\n\nTEXT ·RawSyscallNoError(SB),NOSPLIT,$0-24\n\tMOVL\ttrap+0(FP), AX  // syscall entry\n\tMOVL\ta1+4(FP), BX\n\tMOVL\ta2+8(FP), CX\n\tMOVL\ta3+12(FP), DX\n\tMOVL\t$0, SI\n\tMOVL\t$0, DI\n\tINVOKE_SYSCALL\n\tMOVL\tAX, r1+16(FP)\n\tMOVL\tDX, r2+20(FP)\n\tRET\n\nTEXT ·socketcall(SB),NOSPLIT,$0-36\n\tJMP\tsyscall·socketcall(SB)\n\nTEXT ·rawsocketcall(SB),NOSPLIT,$0-36\n\tJMP\tsyscall·rawsocketcall(SB)\n\nTEXT ·seek(SB),NOSPLIT,$0-28\n\tJMP\tsyscall·seek(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_linux_amd64.s",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gc\n\n#include \"textflag.h\"\n\n//\n// System calls for AMD64, Linux\n//\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT ·Syscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT ·Syscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT ·SyscallNoError(SB),NOSPLIT,$0-48\n\tCALL\truntime·entersyscall(SB)\n\tMOVQ\ta1+8(FP), DI\n\tMOVQ\ta2+16(FP), SI\n\tMOVQ\ta3+24(FP), DX\n\tMOVQ\t$0, R10\n\tMOVQ\t$0, R8\n\tMOVQ\t$0, R9\n\tMOVQ\ttrap+0(FP), AX\t// syscall entry\n\tSYSCALL\n\tMOVQ\tAX, r1+32(FP)\n\tMOVQ\tDX, r2+40(FP)\n\tCALL\truntime·exitsyscall(SB)\n\tRET\n\nTEXT ·RawSyscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT ·RawSyscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·RawSyscall6(SB)\n\nTEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48\n\tMOVQ\ta1+8(FP), DI\n\tMOVQ\ta2+16(FP), SI\n\tMOVQ\ta3+24(FP), DX\n\tMOVQ\t$0, R10\n\tMOVQ\t$0, R8\n\tMOVQ\t$0, R9\n\tMOVQ\ttrap+0(FP), AX\t// syscall entry\n\tSYSCALL\n\tMOVQ\tAX, r1+32(FP)\n\tMOVQ\tDX, r2+40(FP)\n\tRET\n\nTEXT ·gettimeofday(SB),NOSPLIT,$0-16\n\tJMP\tsyscall·gettimeofday(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_linux_arm.s",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gc\n\n#include \"textflag.h\"\n\n//\n// System calls for arm, Linux\n//\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT ·Syscall(SB),NOSPLIT,$0-28\n\tB\tsyscall·Syscall(SB)\n\nTEXT ·Syscall6(SB),NOSPLIT,$0-40\n\tB\tsyscall·Syscall6(SB)\n\nTEXT ·SyscallNoError(SB),NOSPLIT,$0-24\n\tBL\truntime·entersyscall(SB)\n\tMOVW\ttrap+0(FP), R7\n\tMOVW\ta1+4(FP), R0\n\tMOVW\ta2+8(FP), R1\n\tMOVW\ta3+12(FP), R2\n\tMOVW\t$0, R3\n\tMOVW\t$0, R4\n\tMOVW\t$0, R5\n\tSWI\t$0\n\tMOVW\tR0, r1+16(FP)\n\tMOVW\t$0, R0\n\tMOVW\tR0, r2+20(FP)\n\tBL\truntime·exitsyscall(SB)\n\tRET\n\nTEXT ·RawSyscall(SB),NOSPLIT,$0-28\n\tB\tsyscall·RawSyscall(SB)\n\nTEXT ·RawSyscall6(SB),NOSPLIT,$0-40\n\tB\tsyscall·RawSyscall6(SB)\n\nTEXT ·RawSyscallNoError(SB),NOSPLIT,$0-24\n\tMOVW\ttrap+0(FP), R7\t// syscall entry\n\tMOVW\ta1+4(FP), R0\n\tMOVW\ta2+8(FP), R1\n\tMOVW\ta3+12(FP), R2\n\tSWI\t$0\n\tMOVW\tR0, r1+16(FP)\n\tMOVW\t$0, R0\n\tMOVW\tR0, r2+20(FP)\n\tRET\n\nTEXT ·seek(SB),NOSPLIT,$0-28\n\tB\tsyscall·seek(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_linux_arm64.s",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && arm64 && gc\n\n#include \"textflag.h\"\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT ·Syscall(SB),NOSPLIT,$0-56\n\tB\tsyscall·Syscall(SB)\n\nTEXT ·Syscall6(SB),NOSPLIT,$0-80\n\tB\tsyscall·Syscall6(SB)\n\nTEXT ·SyscallNoError(SB),NOSPLIT,$0-48\n\tBL\truntime·entersyscall(SB)\n\tMOVD\ta1+8(FP), R0\n\tMOVD\ta2+16(FP), R1\n\tMOVD\ta3+24(FP), R2\n\tMOVD\t$0, R3\n\tMOVD\t$0, R4\n\tMOVD\t$0, R5\n\tMOVD\ttrap+0(FP), R8\t// syscall entry\n\tSVC\n\tMOVD\tR0, r1+32(FP)\t// r1\n\tMOVD\tR1, r2+40(FP)\t// r2\n\tBL\truntime·exitsyscall(SB)\n\tRET\n\nTEXT ·RawSyscall(SB),NOSPLIT,$0-56\n\tB\tsyscall·RawSyscall(SB)\n\nTEXT ·RawSyscall6(SB),NOSPLIT,$0-80\n\tB\tsyscall·RawSyscall6(SB)\n\nTEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48\n\tMOVD\ta1+8(FP), R0\n\tMOVD\ta2+16(FP), R1\n\tMOVD\ta3+24(FP), R2\n\tMOVD\t$0, R3\n\tMOVD\t$0, R4\n\tMOVD\t$0, R5\n\tMOVD\ttrap+0(FP), R8\t// syscall entry\n\tSVC\n\tMOVD\tR0, r1+32(FP)\n\tMOVD\tR1, r2+40(FP)\n\tRET\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_linux_loong64.s",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && loong64 && gc\n\n#include \"textflag.h\"\n\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT ·Syscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT ·Syscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT ·SyscallNoError(SB),NOSPLIT,$0-48\n\tJAL\truntime·entersyscall(SB)\n\tMOVV\ta1+8(FP), R4\n\tMOVV\ta2+16(FP), R5\n\tMOVV\ta3+24(FP), R6\n\tMOVV\tR0, R7\n\tMOVV\tR0, R8\n\tMOVV\tR0, R9\n\tMOVV\ttrap+0(FP), R11\t// syscall entry\n\tSYSCALL\n\tMOVV\tR4, r1+32(FP)\n\tMOVV\tR0, r2+40(FP)\t// r2 is not used. Always set to 0\n\tJAL\truntime·exitsyscall(SB)\n\tRET\n\nTEXT ·RawSyscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT ·RawSyscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·RawSyscall6(SB)\n\nTEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48\n\tMOVV\ta1+8(FP), R4\n\tMOVV\ta2+16(FP), R5\n\tMOVV\ta3+24(FP), R6\n\tMOVV\tR0, R7\n\tMOVV\tR0, R8\n\tMOVV\tR0, R9\n\tMOVV\ttrap+0(FP), R11\t// syscall entry\n\tSYSCALL\n\tMOVV\tR4, r1+32(FP)\n\tMOVV\tR0, r2+40(FP)\t// r2 is not used. Always set to 0\n\tRET\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_linux_mips64x.s",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && (mips64 || mips64le) && gc\n\n#include \"textflag.h\"\n\n//\n// System calls for mips64, Linux\n//\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT ·Syscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT ·Syscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT ·SyscallNoError(SB),NOSPLIT,$0-48\n\tJAL\truntime·entersyscall(SB)\n\tMOVV\ta1+8(FP), R4\n\tMOVV\ta2+16(FP), R5\n\tMOVV\ta3+24(FP), R6\n\tMOVV\tR0, R7\n\tMOVV\tR0, R8\n\tMOVV\tR0, R9\n\tMOVV\ttrap+0(FP), R2\t// syscall entry\n\tSYSCALL\n\tMOVV\tR2, r1+32(FP)\n\tMOVV\tR3, r2+40(FP)\n\tJAL\truntime·exitsyscall(SB)\n\tRET\n\nTEXT ·RawSyscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT ·RawSyscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·RawSyscall6(SB)\n\nTEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48\n\tMOVV\ta1+8(FP), R4\n\tMOVV\ta2+16(FP), R5\n\tMOVV\ta3+24(FP), R6\n\tMOVV\tR0, R7\n\tMOVV\tR0, R8\n\tMOVV\tR0, R9\n\tMOVV\ttrap+0(FP), R2\t// syscall entry\n\tSYSCALL\n\tMOVV\tR2, r1+32(FP)\n\tMOVV\tR3, r2+40(FP)\n\tRET\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_linux_mipsx.s",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && (mips || mipsle) && gc\n\n#include \"textflag.h\"\n\n//\n// System calls for mips, Linux\n//\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT ·Syscall(SB),NOSPLIT,$0-28\n\tJMP syscall·Syscall(SB)\n\nTEXT ·Syscall6(SB),NOSPLIT,$0-40\n\tJMP syscall·Syscall6(SB)\n\nTEXT ·Syscall9(SB),NOSPLIT,$0-52\n\tJMP syscall·Syscall9(SB)\n\nTEXT ·SyscallNoError(SB),NOSPLIT,$0-24\n\tJAL\truntime·entersyscall(SB)\n\tMOVW\ta1+4(FP), R4\n\tMOVW\ta2+8(FP), R5\n\tMOVW\ta3+12(FP), R6\n\tMOVW\tR0, R7\n\tMOVW\ttrap+0(FP), R2\t// syscall entry\n\tSYSCALL\n\tMOVW\tR2, r1+16(FP)\t// r1\n\tMOVW\tR3, r2+20(FP)\t// r2\n\tJAL\truntime·exitsyscall(SB)\n\tRET\n\nTEXT ·RawSyscall(SB),NOSPLIT,$0-28\n\tJMP syscall·RawSyscall(SB)\n\nTEXT ·RawSyscall6(SB),NOSPLIT,$0-40\n\tJMP syscall·RawSyscall6(SB)\n\nTEXT ·RawSyscallNoError(SB),NOSPLIT,$0-24\n\tMOVW\ta1+4(FP), R4\n\tMOVW\ta2+8(FP), R5\n\tMOVW\ta3+12(FP), R6\n\tMOVW\ttrap+0(FP), R2\t// syscall entry\n\tSYSCALL\n\tMOVW\tR2, r1+16(FP)\n\tMOVW\tR3, r2+20(FP)\n\tRET\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && (ppc64 || ppc64le) && gc\n\n#include \"textflag.h\"\n\n//\n// System calls for ppc64, Linux\n//\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT ·SyscallNoError(SB),NOSPLIT,$0-48\n\tBL\truntime·entersyscall(SB)\n\tMOVD\ta1+8(FP), R3\n\tMOVD\ta2+16(FP), R4\n\tMOVD\ta3+24(FP), R5\n\tMOVD\tR0, R6\n\tMOVD\tR0, R7\n\tMOVD\tR0, R8\n\tMOVD\ttrap+0(FP), R9\t// syscall entry\n\tSYSCALL R9\n\tMOVD\tR3, r1+32(FP)\n\tMOVD\tR4, r2+40(FP)\n\tBL\truntime·exitsyscall(SB)\n\tRET\n\nTEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48\n\tMOVD\ta1+8(FP), R3\n\tMOVD\ta2+16(FP), R4\n\tMOVD\ta3+24(FP), R5\n\tMOVD\tR0, R6\n\tMOVD\tR0, R7\n\tMOVD\tR0, R8\n\tMOVD\ttrap+0(FP), R9\t// syscall entry\n\tSYSCALL R9\n\tMOVD\tR3, r1+32(FP)\n\tMOVD\tR4, r2+40(FP)\n\tRET\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_linux_riscv64.s",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build riscv64 && gc\n\n#include \"textflag.h\"\n\n//\n// System calls for linux/riscv64.\n//\n// Where available, just jump to package syscall's implementation of\n// these functions.\n\nTEXT ·Syscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT ·Syscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT ·SyscallNoError(SB),NOSPLIT,$0-48\n\tCALL\truntime·entersyscall(SB)\n\tMOV\ta1+8(FP), A0\n\tMOV\ta2+16(FP), A1\n\tMOV\ta3+24(FP), A2\n\tMOV\ttrap+0(FP), A7\t// syscall entry\n\tECALL\n\tMOV\tA0, r1+32(FP)\t// r1\n\tMOV\tA1, r2+40(FP)\t// r2\n\tCALL\truntime·exitsyscall(SB)\n\tRET\n\nTEXT ·RawSyscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT ·RawSyscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·RawSyscall6(SB)\n\nTEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48\n\tMOV\ta1+8(FP), A0\n\tMOV\ta2+16(FP), A1\n\tMOV\ta3+24(FP), A2\n\tMOV\ttrap+0(FP), A7\t// syscall entry\n\tECALL\n\tMOV\tA0, r1+32(FP)\n\tMOV\tA1, r2+40(FP)\n\tRET\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_linux_s390x.s",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && s390x && gc\n\n#include \"textflag.h\"\n\n//\n// System calls for s390x, Linux\n//\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT ·Syscall(SB),NOSPLIT,$0-56\n\tBR\tsyscall·Syscall(SB)\n\nTEXT ·Syscall6(SB),NOSPLIT,$0-80\n\tBR\tsyscall·Syscall6(SB)\n\nTEXT ·SyscallNoError(SB),NOSPLIT,$0-48\n\tBL\truntime·entersyscall(SB)\n\tMOVD\ta1+8(FP), R2\n\tMOVD\ta2+16(FP), R3\n\tMOVD\ta3+24(FP), R4\n\tMOVD\t$0, R5\n\tMOVD\t$0, R6\n\tMOVD\t$0, R7\n\tMOVD\ttrap+0(FP), R1\t// syscall entry\n\tSYSCALL\n\tMOVD\tR2, r1+32(FP)\n\tMOVD\tR3, r2+40(FP)\n\tBL\truntime·exitsyscall(SB)\n\tRET\n\nTEXT ·RawSyscall(SB),NOSPLIT,$0-56\n\tBR\tsyscall·RawSyscall(SB)\n\nTEXT ·RawSyscall6(SB),NOSPLIT,$0-80\n\tBR\tsyscall·RawSyscall6(SB)\n\nTEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48\n\tMOVD\ta1+8(FP), R2\n\tMOVD\ta2+16(FP), R3\n\tMOVD\ta3+24(FP), R4\n\tMOVD\t$0, R5\n\tMOVD\t$0, R6\n\tMOVD\t$0, R7\n\tMOVD\ttrap+0(FP), R1\t// syscall entry\n\tSYSCALL\n\tMOVD\tR2, r1+32(FP)\n\tMOVD\tR3, r2+40(FP)\n\tRET\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_openbsd_mips64.s",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gc\n\n#include \"textflag.h\"\n\n//\n// System call support for mips64, OpenBSD\n//\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT\t·Syscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT\t·Syscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT\t·Syscall9(SB),NOSPLIT,$0-104\n\tJMP\tsyscall·Syscall9(SB)\n\nTEXT\t·RawSyscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT\t·RawSyscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·RawSyscall6(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_solaris_amd64.s",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gc\n\n#include \"textflag.h\"\n\n//\n// System calls for amd64, Solaris are implemented in runtime/syscall_solaris.go\n//\n\nTEXT ·sysvicall6(SB),NOSPLIT,$0-88\n\tJMP\tsyscall·sysvicall6(SB)\n\nTEXT ·rawSysvicall6(SB),NOSPLIT,$0-88\n\tJMP\tsyscall·rawSysvicall6(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_zos_s390x.s",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build zos && s390x && gc\n\n#include \"textflag.h\"\n\n#define PSALAA            1208(R0)\n#define GTAB64(x)           80(x)\n#define LCA64(x)            88(x)\n#define SAVSTACK_ASYNC(x)  336(x) // in the LCA\n#define CAA(x)               8(x)\n#define CEECAATHDID(x)     976(x) // in the CAA\n#define EDCHPXV(x)        1016(x) // in the CAA\n#define GOCB(x)           1104(x) // in the CAA\n\n// SS_*, where x=SAVSTACK_ASYNC\n#define SS_LE(x)             0(x)\n#define SS_GO(x)             8(x)\n#define SS_ERRNO(x)         16(x)\n#define SS_ERRNOJR(x)       20(x)\n\n// Function Descriptor Offsets\n#define __errno  0x156*16\n#define __err2ad 0x16C*16\n\n// Call Instructions\n#define LE_CALL    BYTE $0x0D; BYTE $0x76 // BL R7, R6\n#define SVC_LOAD   BYTE $0x0A; BYTE $0x08 // SVC 08 LOAD\n#define SVC_DELETE BYTE $0x0A; BYTE $0x09 // SVC 09 DELETE\n\nDATA zosLibVec<>(SB)/8, $0\nGLOBL zosLibVec<>(SB), NOPTR, $8\n\nTEXT ·initZosLibVec(SB), NOSPLIT|NOFRAME, $0-0\n\tMOVW PSALAA, R8\n\tMOVD LCA64(R8), R8\n\tMOVD CAA(R8), R8\n\tMOVD EDCHPXV(R8), R8\n\tMOVD R8, zosLibVec<>(SB)\n\tRET\n\nTEXT ·GetZosLibVec(SB), NOSPLIT|NOFRAME, $0-0\n\tMOVD zosLibVec<>(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\nTEXT ·clearErrno(SB), NOSPLIT, $0-0\n\tBL   addrerrno<>(SB)\n\tMOVD $0, 0(R3)\n\tRET\n\n// Returns the address of errno in R3.\nTEXT addrerrno<>(SB), NOSPLIT|NOFRAME, $0-0\n\t// Get library control area (LCA).\n\tMOVW PSALAA, R8\n\tMOVD LCA64(R8), R8\n\n\t// Get __errno FuncDesc.\n\tMOVD CAA(R8), R9\n\tMOVD EDCHPXV(R9), R9\n\tADD  $(__errno), R9\n\tLMG  0(R9), R5, R6\n\n\t// Switch to saved LE stack.\n\tMOVD SAVSTACK_ASYNC(R8), R9\n\tMOVD 0(R9), R4\n\tMOVD $0, 0(R9)\n\n\t// Call __errno function.\n\tLE_CALL\n\tNOPH\n\n\t// Switch back to Go stack.\n\tXOR  R0, R0    // Restore R0 to $0.\n\tMOVD R4, 0(R9) // Save stack pointer.\n\tRET\n\n// func svcCall(fnptr unsafe.Pointer, argv *unsafe.Pointer, dsa *uint64)\nTEXT ·svcCall(SB), NOSPLIT, $0\n\tBL   runtime·save_g(SB)     // Save g and stack pointer\n\tMOVW PSALAA, R8\n\tMOVD LCA64(R8), R8\n\tMOVD SAVSTACK_ASYNC(R8), R9\n\tMOVD R15, 0(R9)\n\n\tMOVD argv+8(FP), R1   // Move function arguments into registers\n\tMOVD dsa+16(FP), g\n\tMOVD fnptr+0(FP), R15\n\n\tBYTE $0x0D // Branch to function\n\tBYTE $0xEF\n\n\tBL   runtime·load_g(SB)     // Restore g and stack pointer\n\tMOVW PSALAA, R8\n\tMOVD LCA64(R8), R8\n\tMOVD SAVSTACK_ASYNC(R8), R9\n\tMOVD 0(R9), R15\n\n\tRET\n\n// func svcLoad(name *byte) unsafe.Pointer\nTEXT ·svcLoad(SB), NOSPLIT, $0\n\tMOVD R15, R2         // Save go stack pointer\n\tMOVD name+0(FP), R0  // Move SVC args into registers\n\tMOVD $0x80000000, R1\n\tMOVD $0, R15\n\tSVC_LOAD\n\tMOVW R15, R3         // Save return code from SVC\n\tMOVD R2, R15         // Restore go stack pointer\n\tCMP  R3, $0          // Check SVC return code\n\tBNE  error\n\n\tMOVD $-2, R3       // Reset last bit of entry point to zero\n\tAND  R0, R3\n\tMOVD R3, ret+8(FP) // Return entry point returned by SVC\n\tCMP  R0, R3        // Check if last bit of entry point was set\n\tBNE  done\n\n\tMOVD R15, R2 // Save go stack pointer\n\tMOVD $0, R15 // Move SVC args into registers (entry point still in r0 from SVC 08)\n\tSVC_DELETE\n\tMOVD R2, R15 // Restore go stack pointer\n\nerror:\n\tMOVD $0, ret+8(FP) // Return 0 on failure\n\ndone:\n\tXOR R0, R0 // Reset r0 to 0\n\tRET\n\n// func svcUnload(name *byte, fnptr unsafe.Pointer) int64\nTEXT ·svcUnload(SB), NOSPLIT, $0\n\tMOVD R15, R2          // Save go stack pointer\n\tMOVD name+0(FP), R0   // Move SVC args into registers\n\tMOVD fnptr+8(FP), R15\n\tSVC_DELETE\n\tXOR  R0, R0           // Reset r0 to 0\n\tMOVD R15, R1          // Save SVC return code\n\tMOVD R2, R15          // Restore go stack pointer\n\tMOVD R1, ret+16(FP)   // Return SVC return code\n\tRET\n\n// func gettid() uint64\nTEXT ·gettid(SB), NOSPLIT, $0\n\t// Get library control area (LCA).\n\tMOVW PSALAA, R8\n\tMOVD LCA64(R8), R8\n\n\t// Get CEECAATHDID\n\tMOVD CAA(R8), R9\n\tMOVD CEECAATHDID(R9), R9\n\tMOVD R9, ret+0(FP)\n\n\tRET\n\n//\n// Call LE function, if the return is -1\n// errno and errno2 is retrieved\n//\nTEXT ·CallLeFuncWithErr(SB), NOSPLIT, $0\n\tMOVW PSALAA, R8\n\tMOVD LCA64(R8), R8\n\tMOVD CAA(R8), R9\n\tMOVD g, GOCB(R9)\n\n\t// Restore LE stack.\n\tMOVD SAVSTACK_ASYNC(R8), R9 // R9-> LE stack frame saving address\n\tMOVD 0(R9), R4              // R4-> restore previously saved stack frame pointer\n\n\tMOVD parms_base+8(FP), R7 // R7 -> argument array\n\tMOVD parms_len+16(FP), R8 // R8 number of arguments\n\n\t//  arg 1 ---> R1\n\tCMP  R8, $0\n\tBEQ  docall\n\tSUB  $1, R8\n\tMOVD 0(R7), R1\n\n\t//  arg 2 ---> R2\n\tCMP  R8, $0\n\tBEQ  docall\n\tSUB  $1, R8\n\tADD  $8, R7\n\tMOVD 0(R7), R2\n\n\t//  arg 3 --> R3\n\tCMP  R8, $0\n\tBEQ  docall\n\tSUB  $1, R8\n\tADD  $8, R7\n\tMOVD 0(R7), R3\n\n\tCMP  R8, $0\n\tBEQ  docall\n\tMOVD $2176+16, R6 // starting LE stack address-8 to store 4th argument\n\nrepeat:\n\tADD  $8, R7\n\tMOVD 0(R7), R0      // advance arg pointer by 8 byte\n\tADD  $8, R6         // advance LE argument address by 8 byte\n\tMOVD R0, (R4)(R6*1) // copy argument from go-slice to le-frame\n\tSUB  $1, R8\n\tCMP  R8, $0\n\tBNE  repeat\n\ndocall:\n\tMOVD funcdesc+0(FP), R8 // R8-> function descriptor\n\tLMG  0(R8), R5, R6\n\tMOVD $0, 0(R9)          // R9 address of SAVSTACK_ASYNC\n\tLE_CALL                 // balr R7, R6 (return #1)\n\tNOPH\n\tMOVD R3, ret+32(FP)\n\tCMP  R3, $-1            // compare result to -1\n\tBNE  done\n\n\t// retrieve errno and errno2\n\tMOVD  zosLibVec<>(SB), R8\n\tADD   $(__errno), R8\n\tLMG   0(R8), R5, R6\n\tLE_CALL                   // balr R7, R6 __errno (return #3)\n\tNOPH\n\tMOVWZ 0(R3), R3\n\tMOVD  R3, err+48(FP)\n\tMOVD  zosLibVec<>(SB), R8\n\tADD   $(__err2ad), R8\n\tLMG   0(R8), R5, R6\n\tLE_CALL                   // balr R7, R6 __err2ad (return #2)\n\tNOPH\n\tMOVW  (R3), R2            // retrieve errno2\n\tMOVD  R2, errno2+40(FP)   // store in return area\n\ndone:\n\tMOVD R4, 0(R9)            // Save stack pointer.\n\tRET\n\n//\n// Call LE function, if the return is 0\n// errno and errno2 is retrieved\n//\nTEXT ·CallLeFuncWithPtrReturn(SB), NOSPLIT, $0\n\tMOVW PSALAA, R8\n\tMOVD LCA64(R8), R8\n\tMOVD CAA(R8), R9\n\tMOVD g, GOCB(R9)\n\n\t// Restore LE stack.\n\tMOVD SAVSTACK_ASYNC(R8), R9 // R9-> LE stack frame saving address\n\tMOVD 0(R9), R4              // R4-> restore previously saved stack frame pointer\n\n\tMOVD parms_base+8(FP), R7 // R7 -> argument array\n\tMOVD parms_len+16(FP), R8 // R8 number of arguments\n\n\t//  arg 1 ---> R1\n\tCMP  R8, $0\n\tBEQ  docall\n\tSUB  $1, R8\n\tMOVD 0(R7), R1\n\n\t//  arg 2 ---> R2\n\tCMP  R8, $0\n\tBEQ  docall\n\tSUB  $1, R8\n\tADD  $8, R7\n\tMOVD 0(R7), R2\n\n\t//  arg 3 --> R3\n\tCMP  R8, $0\n\tBEQ  docall\n\tSUB  $1, R8\n\tADD  $8, R7\n\tMOVD 0(R7), R3\n\n\tCMP  R8, $0\n\tBEQ  docall\n\tMOVD $2176+16, R6 // starting LE stack address-8 to store 4th argument\n\nrepeat:\n\tADD  $8, R7\n\tMOVD 0(R7), R0      // advance arg pointer by 8 byte\n\tADD  $8, R6         // advance LE argument address by 8 byte\n\tMOVD R0, (R4)(R6*1) // copy argument from go-slice to le-frame\n\tSUB  $1, R8\n\tCMP  R8, $0\n\tBNE  repeat\n\ndocall:\n\tMOVD funcdesc+0(FP), R8 // R8-> function descriptor\n\tLMG  0(R8), R5, R6\n\tMOVD $0, 0(R9)          // R9 address of SAVSTACK_ASYNC\n\tLE_CALL                 // balr R7, R6 (return #1)\n\tNOPH\n\tMOVD R3, ret+32(FP)\n\tCMP  R3, $0             // compare result to 0\n\tBNE  done\n\n\t// retrieve errno and errno2\n\tMOVD  zosLibVec<>(SB), R8\n\tADD   $(__errno), R8\n\tLMG   0(R8), R5, R6\n\tLE_CALL                   // balr R7, R6 __errno (return #3)\n\tNOPH\n\tMOVWZ 0(R3), R3\n\tMOVD  R3, err+48(FP)\n\tMOVD  zosLibVec<>(SB), R8\n\tADD   $(__err2ad), R8\n\tLMG   0(R8), R5, R6\n\tLE_CALL                   // balr R7, R6 __err2ad (return #2)\n\tNOPH\n\tMOVW  (R3), R2            // retrieve errno2\n\tMOVD  R2, errno2+40(FP)   // store in return area\n\tXOR   R2, R2\n\tMOVWZ R2, (R3)            // clear errno2\n\ndone:\n\tMOVD R4, 0(R9)            // Save stack pointer.\n\tRET\n\n//\n// function to test if a pointer can be safely dereferenced (content read)\n// return 0 for succces\n//\nTEXT ·ptrtest(SB), NOSPLIT, $0-16\n\tMOVD arg+0(FP), R10 // test pointer in R10\n\n\t// set up R2 to point to CEECAADMC\n\tBYTE $0xE3; BYTE $0x20; BYTE $0x04; BYTE $0xB8; BYTE $0x00; BYTE $0x17 // llgt  2,1208\n\tBYTE $0xB9; BYTE $0x17; BYTE $0x00; BYTE $0x22                         // llgtr 2,2\n\tBYTE $0xA5; BYTE $0x26; BYTE $0x7F; BYTE $0xFF                         // nilh  2,32767\n\tBYTE $0xE3; BYTE $0x22; BYTE $0x00; BYTE $0x58; BYTE $0x00; BYTE $0x04 // lg    2,88(2)\n\tBYTE $0xE3; BYTE $0x22; BYTE $0x00; BYTE $0x08; BYTE $0x00; BYTE $0x04 // lg    2,8(2)\n\tBYTE $0x41; BYTE $0x22; BYTE $0x03; BYTE $0x68                         // la    2,872(2)\n\n\t// set up R5 to point to the \"shunt\" path which set 1 to R3 (failure)\n\tBYTE $0xB9; BYTE $0x82; BYTE $0x00; BYTE $0x33 // xgr   3,3\n\tBYTE $0xA7; BYTE $0x55; BYTE $0x00; BYTE $0x04 // bras  5,lbl1\n\tBYTE $0xA7; BYTE $0x39; BYTE $0x00; BYTE $0x01 // lghi  3,1\n\n\t// if r3 is not zero (failed) then branch to finish\n\tBYTE $0xB9; BYTE $0x02; BYTE $0x00; BYTE $0x33 // lbl1     ltgr  3,3\n\tBYTE $0xA7; BYTE $0x74; BYTE $0x00; BYTE $0x08 // brc   b'0111',lbl2\n\n\t// stomic store shunt address in R5 into CEECAADMC\n\tBYTE $0xE3; BYTE $0x52; BYTE $0x00; BYTE $0x00; BYTE $0x00; BYTE $0x24 // stg   5,0(2)\n\n\t// now try reading from the test pointer in R10, if it fails it branches to the \"lghi\" instruction above\n\tBYTE $0xE3; BYTE $0x9A; BYTE $0x00; BYTE $0x00; BYTE $0x00; BYTE $0x04 // lg    9,0(10)\n\n\t// finish here, restore 0 into CEECAADMC\n\tBYTE $0xB9; BYTE $0x82; BYTE $0x00; BYTE $0x99                         // lbl2     xgr   9,9\n\tBYTE $0xE3; BYTE $0x92; BYTE $0x00; BYTE $0x00; BYTE $0x00; BYTE $0x24 // stg   9,0(2)\n\tMOVD R3, ret+8(FP)                                                     // result in R3\n\tRET\n\n//\n// function to test if a untptr can be loaded from a pointer\n// return 1: the 8-byte content\n//        2: 0 for success, 1 for failure\n//\n// func safeload(ptr uintptr) ( value uintptr, error uintptr)\nTEXT ·safeload(SB), NOSPLIT, $0-24\n\tMOVD ptr+0(FP), R10                                                    // test pointer in R10\n\tMOVD $0x0, R6\n\tBYTE $0xE3; BYTE $0x20; BYTE $0x04; BYTE $0xB8; BYTE $0x00; BYTE $0x17 // llgt  2,1208\n\tBYTE $0xB9; BYTE $0x17; BYTE $0x00; BYTE $0x22                         // llgtr 2,2\n\tBYTE $0xA5; BYTE $0x26; BYTE $0x7F; BYTE $0xFF                         // nilh  2,32767\n\tBYTE $0xE3; BYTE $0x22; BYTE $0x00; BYTE $0x58; BYTE $0x00; BYTE $0x04 // lg    2,88(2)\n\tBYTE $0xE3; BYTE $0x22; BYTE $0x00; BYTE $0x08; BYTE $0x00; BYTE $0x04 // lg    2,8(2)\n\tBYTE $0x41; BYTE $0x22; BYTE $0x03; BYTE $0x68                         // la    2,872(2)\n\tBYTE $0xB9; BYTE $0x82; BYTE $0x00; BYTE $0x33                         // xgr   3,3\n\tBYTE $0xA7; BYTE $0x55; BYTE $0x00; BYTE $0x04                         // bras  5,lbl1\n\tBYTE $0xA7; BYTE $0x39; BYTE $0x00; BYTE $0x01                         // lghi  3,1\n\tBYTE $0xB9; BYTE $0x02; BYTE $0x00; BYTE $0x33                         // lbl1     ltgr  3,3\n\tBYTE $0xA7; BYTE $0x74; BYTE $0x00; BYTE $0x08                         // brc   b'0111',lbl2\n\tBYTE $0xE3; BYTE $0x52; BYTE $0x00; BYTE $0x00; BYTE $0x00; BYTE $0x24 // stg 5,0(2)\n\tBYTE $0xE3; BYTE $0x6A; BYTE $0x00; BYTE $0x00; BYTE $0x00; BYTE $0x04 // lg    6,0(10)\n\tBYTE $0xB9; BYTE $0x82; BYTE $0x00; BYTE $0x99                         // lbl2     xgr   9,9\n\tBYTE $0xE3; BYTE $0x92; BYTE $0x00; BYTE $0x00; BYTE $0x00; BYTE $0x24 // stg   9,0(2)\n\tMOVD R6, value+8(FP)                                                   // result in R6\n\tMOVD R3, error+16(FP)                                                  // error in R3\n\tRET\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/auxv.go",
    "content": "// Copyright 2025 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build go1.21 && (aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos)\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n//go:linkname runtime_getAuxv runtime.getAuxv\nfunc runtime_getAuxv() []uintptr\n\n// Auxv returns the ELF auxiliary vector as a sequence of key/value pairs.\n// The returned slice is always a fresh copy, owned by the caller.\n// It returns an error on non-ELF platforms, or if the auxiliary vector cannot be accessed,\n// which happens in some locked-down environments and build modes.\nfunc Auxv() ([][2]uintptr, error) {\n\tvec := runtime_getAuxv()\n\tvecLen := len(vec)\n\n\tif vecLen == 0 {\n\t\treturn nil, syscall.ENOENT\n\t}\n\n\tif vecLen%2 != 0 {\n\t\treturn nil, syscall.EINVAL\n\t}\n\n\tresult := make([]uintptr, vecLen)\n\tcopy(result, vec)\n\treturn unsafe.Slice((*[2]uintptr)(unsafe.Pointer(&result[0])), vecLen/2), nil\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/auxv_unsupported.go",
    "content": "// Copyright 2025 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build !go1.21 && (aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos)\n\npackage unix\n\nimport \"syscall\"\n\nfunc Auxv() ([][2]uintptr, error) {\n\treturn nil, syscall.ENOTSUP\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/bluetooth_linux.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Bluetooth sockets and messages\n\npackage unix\n\n// Bluetooth Protocols\nconst (\n\tBTPROTO_L2CAP  = 0\n\tBTPROTO_HCI    = 1\n\tBTPROTO_SCO    = 2\n\tBTPROTO_RFCOMM = 3\n\tBTPROTO_BNEP   = 4\n\tBTPROTO_CMTP   = 5\n\tBTPROTO_HIDP   = 6\n\tBTPROTO_AVDTP  = 7\n)\n\nconst (\n\tHCI_CHANNEL_RAW     = 0\n\tHCI_CHANNEL_USER    = 1\n\tHCI_CHANNEL_MONITOR = 2\n\tHCI_CHANNEL_CONTROL = 3\n\tHCI_CHANNEL_LOGGING = 4\n)\n\n// Socketoption Level\nconst (\n\tSOL_BLUETOOTH = 0x112\n\tSOL_HCI       = 0x0\n\tSOL_L2CAP     = 0x6\n\tSOL_RFCOMM    = 0x12\n\tSOL_SCO       = 0x11\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/bpxsvc_zos.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build zos\n\npackage unix\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"unsafe\"\n)\n\n//go:noescape\nfunc bpxcall(plist []unsafe.Pointer, bpx_offset int64)\n\n//go:noescape\nfunc A2e([]byte)\n\n//go:noescape\nfunc E2a([]byte)\n\nconst (\n\tBPX4STA = 192  // stat\n\tBPX4FST = 104  // fstat\n\tBPX4LST = 132  // lstat\n\tBPX4OPN = 156  // open\n\tBPX4CLO = 72   // close\n\tBPX4CHR = 500  // chattr\n\tBPX4FCR = 504  // fchattr\n\tBPX4LCR = 1180 // lchattr\n\tBPX4CTW = 492  // cond_timed_wait\n\tBPX4GTH = 1056 // __getthent\n\tBPX4PTQ = 412  // pthread_quiesc\n\tBPX4PTR = 320  // ptrace\n)\n\nconst (\n\t//options\n\t//byte1\n\tBPX_OPNFHIGH = 0x80\n\t//byte2\n\tBPX_OPNFEXEC = 0x80\n\t//byte3\n\tBPX_O_NOLARGEFILE = 0x08\n\tBPX_O_LARGEFILE   = 0x04\n\tBPX_O_ASYNCSIG    = 0x02\n\tBPX_O_SYNC        = 0x01\n\t//byte4\n\tBPX_O_CREXCL   = 0xc0\n\tBPX_O_CREAT    = 0x80\n\tBPX_O_EXCL     = 0x40\n\tBPX_O_NOCTTY   = 0x20\n\tBPX_O_TRUNC    = 0x10\n\tBPX_O_APPEND   = 0x08\n\tBPX_O_NONBLOCK = 0x04\n\tBPX_FNDELAY    = 0x04\n\tBPX_O_RDWR     = 0x03\n\tBPX_O_RDONLY   = 0x02\n\tBPX_O_WRONLY   = 0x01\n\tBPX_O_ACCMODE  = 0x03\n\tBPX_O_GETFL    = 0x0f\n\n\t//mode\n\t// byte1 (file type)\n\tBPX_FT_DIR      = 1\n\tBPX_FT_CHARSPEC = 2\n\tBPX_FT_REGFILE  = 3\n\tBPX_FT_FIFO     = 4\n\tBPX_FT_SYMLINK  = 5\n\tBPX_FT_SOCKET   = 6\n\t//byte3\n\tBPX_S_ISUID  = 0x08\n\tBPX_S_ISGID  = 0x04\n\tBPX_S_ISVTX  = 0x02\n\tBPX_S_IRWXU1 = 0x01\n\tBPX_S_IRUSR  = 0x01\n\t//byte4\n\tBPX_S_IRWXU2 = 0xc0\n\tBPX_S_IWUSR  = 0x80\n\tBPX_S_IXUSR  = 0x40\n\tBPX_S_IRWXG  = 0x38\n\tBPX_S_IRGRP  = 0x20\n\tBPX_S_IWGRP  = 0x10\n\tBPX_S_IXGRP  = 0x08\n\tBPX_S_IRWXOX = 0x07\n\tBPX_S_IROTH  = 0x04\n\tBPX_S_IWOTH  = 0x02\n\tBPX_S_IXOTH  = 0x01\n\n\tCW_INTRPT  = 1\n\tCW_CONDVAR = 32\n\tCW_TIMEOUT = 64\n\n\tPGTHA_NEXT        = 2\n\tPGTHA_CURRENT     = 1\n\tPGTHA_FIRST       = 0\n\tPGTHA_LAST        = 3\n\tPGTHA_PROCESS     = 0x80\n\tPGTHA_CONTTY      = 0x40\n\tPGTHA_PATH        = 0x20\n\tPGTHA_COMMAND     = 0x10\n\tPGTHA_FILEDATA    = 0x08\n\tPGTHA_THREAD      = 0x04\n\tPGTHA_PTAG        = 0x02\n\tPGTHA_COMMANDLONG = 0x01\n\tPGTHA_THREADFAST  = 0x80\n\tPGTHA_FILEPATH    = 0x40\n\tPGTHA_THDSIGMASK  = 0x20\n\t// thread quiece mode\n\tQUIESCE_TERM       int32 = 1\n\tQUIESCE_FORCE      int32 = 2\n\tQUIESCE_QUERY      int32 = 3\n\tQUIESCE_FREEZE     int32 = 4\n\tQUIESCE_UNFREEZE   int32 = 5\n\tFREEZE_THIS_THREAD int32 = 6\n\tFREEZE_EXIT        int32 = 8\n\tQUIESCE_SRB        int32 = 9\n)\n\ntype Pgtha struct {\n\tPid        uint32 // 0\n\tTid0       uint32 // 4\n\tTid1       uint32\n\tAccesspid  byte    // C\n\tAccesstid  byte    // D\n\tAccessasid uint16  // E\n\tLoginname  [8]byte // 10\n\tFlag1      byte    // 18\n\tFlag1b2    byte    // 19\n}\n\ntype Bpxystat_t struct { // DSECT BPXYSTAT\n\tSt_id           [4]uint8  // 0\n\tSt_length       uint16    // 0x4\n\tSt_version      uint16    // 0x6\n\tSt_mode         uint32    // 0x8\n\tSt_ino          uint32    // 0xc\n\tSt_dev          uint32    // 0x10\n\tSt_nlink        uint32    // 0x14\n\tSt_uid          uint32    // 0x18\n\tSt_gid          uint32    // 0x1c\n\tSt_size         uint64    // 0x20\n\tSt_atime        uint32    // 0x28\n\tSt_mtime        uint32    // 0x2c\n\tSt_ctime        uint32    // 0x30\n\tSt_rdev         uint32    // 0x34\n\tSt_auditoraudit uint32    // 0x38\n\tSt_useraudit    uint32    // 0x3c\n\tSt_blksize      uint32    // 0x40\n\tSt_createtime   uint32    // 0x44\n\tSt_auditid      [4]uint32 // 0x48\n\tSt_res01        uint32    // 0x58\n\tFt_ccsid        uint16    // 0x5c\n\tFt_flags        uint16    // 0x5e\n\tSt_res01a       [2]uint32 // 0x60\n\tSt_res02        uint32    // 0x68\n\tSt_blocks       uint32    // 0x6c\n\tSt_opaque       [3]uint8  // 0x70\n\tSt_visible      uint8     // 0x73\n\tSt_reftime      uint32    // 0x74\n\tSt_fid          uint64    // 0x78\n\tSt_filefmt      uint8     // 0x80\n\tSt_fspflag2     uint8     // 0x81\n\tSt_res03        [2]uint8  // 0x82\n\tSt_ctimemsec    uint32    // 0x84\n\tSt_seclabel     [8]uint8  // 0x88\n\tSt_res04        [4]uint8  // 0x90\n\t// end of version 1\n\t_               uint32    // 0x94\n\tSt_atime64      uint64    // 0x98\n\tSt_mtime64      uint64    // 0xa0\n\tSt_ctime64      uint64    // 0xa8\n\tSt_createtime64 uint64    // 0xb0\n\tSt_reftime64    uint64    // 0xb8\n\t_               uint64    // 0xc0\n\tSt_res05        [16]uint8 // 0xc8\n\t// end of version 2\n}\n\ntype BpxFilestatus struct {\n\tOflag1 byte\n\tOflag2 byte\n\tOflag3 byte\n\tOflag4 byte\n}\n\ntype BpxMode struct {\n\tFtype byte\n\tMode1 byte\n\tMode2 byte\n\tMode3 byte\n}\n\n// Thr attribute structure for extended attributes\ntype Bpxyatt_t struct { // DSECT BPXYATT\n\tAtt_id           [4]uint8\n\tAtt_version      uint16\n\tAtt_res01        [2]uint8\n\tAtt_setflags1    uint8\n\tAtt_setflags2    uint8\n\tAtt_setflags3    uint8\n\tAtt_setflags4    uint8\n\tAtt_mode         uint32\n\tAtt_uid          uint32\n\tAtt_gid          uint32\n\tAtt_opaquemask   [3]uint8\n\tAtt_visblmaskres uint8\n\tAtt_opaque       [3]uint8\n\tAtt_visibleres   uint8\n\tAtt_size_h       uint32\n\tAtt_size_l       uint32\n\tAtt_atime        uint32\n\tAtt_mtime        uint32\n\tAtt_auditoraudit uint32\n\tAtt_useraudit    uint32\n\tAtt_ctime        uint32\n\tAtt_reftime      uint32\n\t// end of version 1\n\tAtt_filefmt uint8\n\tAtt_res02   [3]uint8\n\tAtt_filetag uint32\n\tAtt_res03   [8]uint8\n\t// end of version 2\n\tAtt_atime64   uint64\n\tAtt_mtime64   uint64\n\tAtt_ctime64   uint64\n\tAtt_reftime64 uint64\n\tAtt_seclabel  [8]uint8\n\tAtt_ver3res02 [8]uint8\n\t// end of version 3\n}\n\nfunc BpxOpen(name string, options *BpxFilestatus, mode *BpxMode) (rv int32, rc int32, rn int32) {\n\tif len(name) < 1024 {\n\t\tvar namebuf [1024]byte\n\t\tsz := int32(copy(namebuf[:], name))\n\t\tA2e(namebuf[:sz])\n\t\tvar parms [7]unsafe.Pointer\n\t\tparms[0] = unsafe.Pointer(&sz)\n\t\tparms[1] = unsafe.Pointer(&namebuf[0])\n\t\tparms[2] = unsafe.Pointer(options)\n\t\tparms[3] = unsafe.Pointer(mode)\n\t\tparms[4] = unsafe.Pointer(&rv)\n\t\tparms[5] = unsafe.Pointer(&rc)\n\t\tparms[6] = unsafe.Pointer(&rn)\n\t\tbpxcall(parms[:], BPX4OPN)\n\t\treturn rv, rc, rn\n\t}\n\treturn -1, -1, -1\n}\n\nfunc BpxClose(fd int32) (rv int32, rc int32, rn int32) {\n\tvar parms [4]unsafe.Pointer\n\tparms[0] = unsafe.Pointer(&fd)\n\tparms[1] = unsafe.Pointer(&rv)\n\tparms[2] = unsafe.Pointer(&rc)\n\tparms[3] = unsafe.Pointer(&rn)\n\tbpxcall(parms[:], BPX4CLO)\n\treturn rv, rc, rn\n}\n\nfunc BpxFileFStat(fd int32, st *Bpxystat_t) (rv int32, rc int32, rn int32) {\n\tst.St_id = [4]uint8{0xe2, 0xe3, 0xc1, 0xe3}\n\tst.St_version = 2\n\tstat_sz := uint32(unsafe.Sizeof(*st))\n\tvar parms [6]unsafe.Pointer\n\tparms[0] = unsafe.Pointer(&fd)\n\tparms[1] = unsafe.Pointer(&stat_sz)\n\tparms[2] = unsafe.Pointer(st)\n\tparms[3] = unsafe.Pointer(&rv)\n\tparms[4] = unsafe.Pointer(&rc)\n\tparms[5] = unsafe.Pointer(&rn)\n\tbpxcall(parms[:], BPX4FST)\n\treturn rv, rc, rn\n}\n\nfunc BpxFileStat(name string, st *Bpxystat_t) (rv int32, rc int32, rn int32) {\n\tif len(name) < 1024 {\n\t\tvar namebuf [1024]byte\n\t\tsz := int32(copy(namebuf[:], name))\n\t\tA2e(namebuf[:sz])\n\t\tst.St_id = [4]uint8{0xe2, 0xe3, 0xc1, 0xe3}\n\t\tst.St_version = 2\n\t\tstat_sz := uint32(unsafe.Sizeof(*st))\n\t\tvar parms [7]unsafe.Pointer\n\t\tparms[0] = unsafe.Pointer(&sz)\n\t\tparms[1] = unsafe.Pointer(&namebuf[0])\n\t\tparms[2] = unsafe.Pointer(&stat_sz)\n\t\tparms[3] = unsafe.Pointer(st)\n\t\tparms[4] = unsafe.Pointer(&rv)\n\t\tparms[5] = unsafe.Pointer(&rc)\n\t\tparms[6] = unsafe.Pointer(&rn)\n\t\tbpxcall(parms[:], BPX4STA)\n\t\treturn rv, rc, rn\n\t}\n\treturn -1, -1, -1\n}\n\nfunc BpxFileLStat(name string, st *Bpxystat_t) (rv int32, rc int32, rn int32) {\n\tif len(name) < 1024 {\n\t\tvar namebuf [1024]byte\n\t\tsz := int32(copy(namebuf[:], name))\n\t\tA2e(namebuf[:sz])\n\t\tst.St_id = [4]uint8{0xe2, 0xe3, 0xc1, 0xe3}\n\t\tst.St_version = 2\n\t\tstat_sz := uint32(unsafe.Sizeof(*st))\n\t\tvar parms [7]unsafe.Pointer\n\t\tparms[0] = unsafe.Pointer(&sz)\n\t\tparms[1] = unsafe.Pointer(&namebuf[0])\n\t\tparms[2] = unsafe.Pointer(&stat_sz)\n\t\tparms[3] = unsafe.Pointer(st)\n\t\tparms[4] = unsafe.Pointer(&rv)\n\t\tparms[5] = unsafe.Pointer(&rc)\n\t\tparms[6] = unsafe.Pointer(&rn)\n\t\tbpxcall(parms[:], BPX4LST)\n\t\treturn rv, rc, rn\n\t}\n\treturn -1, -1, -1\n}\n\nfunc BpxChattr(path string, attr *Bpxyatt_t) (rv int32, rc int32, rn int32) {\n\tif len(path) >= 1024 {\n\t\treturn -1, -1, -1\n\t}\n\tvar namebuf [1024]byte\n\tsz := int32(copy(namebuf[:], path))\n\tA2e(namebuf[:sz])\n\tattr_sz := uint32(unsafe.Sizeof(*attr))\n\tvar parms [7]unsafe.Pointer\n\tparms[0] = unsafe.Pointer(&sz)\n\tparms[1] = unsafe.Pointer(&namebuf[0])\n\tparms[2] = unsafe.Pointer(&attr_sz)\n\tparms[3] = unsafe.Pointer(attr)\n\tparms[4] = unsafe.Pointer(&rv)\n\tparms[5] = unsafe.Pointer(&rc)\n\tparms[6] = unsafe.Pointer(&rn)\n\tbpxcall(parms[:], BPX4CHR)\n\treturn rv, rc, rn\n}\n\nfunc BpxLchattr(path string, attr *Bpxyatt_t) (rv int32, rc int32, rn int32) {\n\tif len(path) >= 1024 {\n\t\treturn -1, -1, -1\n\t}\n\tvar namebuf [1024]byte\n\tsz := int32(copy(namebuf[:], path))\n\tA2e(namebuf[:sz])\n\tattr_sz := uint32(unsafe.Sizeof(*attr))\n\tvar parms [7]unsafe.Pointer\n\tparms[0] = unsafe.Pointer(&sz)\n\tparms[1] = unsafe.Pointer(&namebuf[0])\n\tparms[2] = unsafe.Pointer(&attr_sz)\n\tparms[3] = unsafe.Pointer(attr)\n\tparms[4] = unsafe.Pointer(&rv)\n\tparms[5] = unsafe.Pointer(&rc)\n\tparms[6] = unsafe.Pointer(&rn)\n\tbpxcall(parms[:], BPX4LCR)\n\treturn rv, rc, rn\n}\n\nfunc BpxFchattr(fd int32, attr *Bpxyatt_t) (rv int32, rc int32, rn int32) {\n\tattr_sz := uint32(unsafe.Sizeof(*attr))\n\tvar parms [6]unsafe.Pointer\n\tparms[0] = unsafe.Pointer(&fd)\n\tparms[1] = unsafe.Pointer(&attr_sz)\n\tparms[2] = unsafe.Pointer(attr)\n\tparms[3] = unsafe.Pointer(&rv)\n\tparms[4] = unsafe.Pointer(&rc)\n\tparms[5] = unsafe.Pointer(&rn)\n\tbpxcall(parms[:], BPX4FCR)\n\treturn rv, rc, rn\n}\n\nfunc BpxCondTimedWait(sec uint32, nsec uint32, events uint32, secrem *uint32, nsecrem *uint32) (rv int32, rc int32, rn int32) {\n\tvar parms [8]unsafe.Pointer\n\tparms[0] = unsafe.Pointer(&sec)\n\tparms[1] = unsafe.Pointer(&nsec)\n\tparms[2] = unsafe.Pointer(&events)\n\tparms[3] = unsafe.Pointer(secrem)\n\tparms[4] = unsafe.Pointer(nsecrem)\n\tparms[5] = unsafe.Pointer(&rv)\n\tparms[6] = unsafe.Pointer(&rc)\n\tparms[7] = unsafe.Pointer(&rn)\n\tbpxcall(parms[:], BPX4CTW)\n\treturn rv, rc, rn\n}\nfunc BpxGetthent(in *Pgtha, outlen *uint32, out unsafe.Pointer) (rv int32, rc int32, rn int32) {\n\tvar parms [7]unsafe.Pointer\n\tinlen := uint32(26) // nothing else will work. Go says Pgtha is 28-byte because of alignment, but Pgtha is \"packed\" and must be 26-byte\n\tparms[0] = unsafe.Pointer(&inlen)\n\tparms[1] = unsafe.Pointer(&in)\n\tparms[2] = unsafe.Pointer(outlen)\n\tparms[3] = unsafe.Pointer(&out)\n\tparms[4] = unsafe.Pointer(&rv)\n\tparms[5] = unsafe.Pointer(&rc)\n\tparms[6] = unsafe.Pointer(&rn)\n\tbpxcall(parms[:], BPX4GTH)\n\treturn rv, rc, rn\n}\nfunc ZosJobname() (jobname string, err error) {\n\tvar pgtha Pgtha\n\tpgtha.Pid = uint32(Getpid())\n\tpgtha.Accesspid = PGTHA_CURRENT\n\tpgtha.Flag1 = PGTHA_PROCESS\n\tvar out [256]byte\n\tvar outlen uint32\n\toutlen = 256\n\trv, rc, rn := BpxGetthent(&pgtha, &outlen, unsafe.Pointer(&out[0]))\n\tif rv == 0 {\n\t\tgthc := []byte{0x87, 0xa3, 0x88, 0x83} // 'gthc' in ebcdic\n\t\tix := bytes.Index(out[:], gthc)\n\t\tif ix == -1 {\n\t\t\terr = fmt.Errorf(\"BPX4GTH: gthc return data not found\")\n\t\t\treturn\n\t\t}\n\t\tjn := out[ix+80 : ix+88] // we didn't declare Pgthc, but jobname is 8-byte at offset 80\n\t\tE2a(jn)\n\t\tjobname = string(bytes.TrimRight(jn, \" \"))\n\n\t} else {\n\t\terr = fmt.Errorf(\"BPX4GTH: rc=%d errno=%d reason=code=0x%x\", rv, rc, rn)\n\t}\n\treturn\n}\nfunc Bpx4ptq(code int32, data string) (rv int32, rc int32, rn int32) {\n\tvar userdata [8]byte\n\tvar parms [5]unsafe.Pointer\n\tcopy(userdata[:], data+\"        \")\n\tA2e(userdata[:])\n\tparms[0] = unsafe.Pointer(&code)\n\tparms[1] = unsafe.Pointer(&userdata[0])\n\tparms[2] = unsafe.Pointer(&rv)\n\tparms[3] = unsafe.Pointer(&rc)\n\tparms[4] = unsafe.Pointer(&rn)\n\tbpxcall(parms[:], BPX4PTQ)\n\treturn rv, rc, rn\n}\n\nconst (\n\tPT_TRACE_ME             = 0  // Debug this process\n\tPT_READ_I               = 1  // Read a full word\n\tPT_READ_D               = 2  // Read a full word\n\tPT_READ_U               = 3  // Read control info\n\tPT_WRITE_I              = 4  //Write a full word\n\tPT_WRITE_D              = 5  //Write a full word\n\tPT_CONTINUE             = 7  //Continue the process\n\tPT_KILL                 = 8  //Terminate the process\n\tPT_READ_GPR             = 11 // Read GPR, CR, PSW\n\tPT_READ_FPR             = 12 // Read FPR\n\tPT_READ_VR              = 13 // Read VR\n\tPT_WRITE_GPR            = 14 // Write GPR, CR, PSW\n\tPT_WRITE_FPR            = 15 // Write FPR\n\tPT_WRITE_VR             = 16 // Write VR\n\tPT_READ_BLOCK           = 17 // Read storage\n\tPT_WRITE_BLOCK          = 19 // Write storage\n\tPT_READ_GPRH            = 20 // Read GPRH\n\tPT_WRITE_GPRH           = 21 // Write GPRH\n\tPT_REGHSET              = 22 // Read all GPRHs\n\tPT_ATTACH               = 30 // Attach to a process\n\tPT_DETACH               = 31 // Detach from a process\n\tPT_REGSET               = 32 // Read all GPRs\n\tPT_REATTACH             = 33 // Reattach to a process\n\tPT_LDINFO               = 34 // Read loader info\n\tPT_MULTI                = 35 // Multi process mode\n\tPT_LD64INFO             = 36 // RMODE64 Info Area\n\tPT_BLOCKREQ             = 40 // Block request\n\tPT_THREAD_INFO          = 60 // Read thread info\n\tPT_THREAD_MODIFY        = 61\n\tPT_THREAD_READ_FOCUS    = 62\n\tPT_THREAD_WRITE_FOCUS   = 63\n\tPT_THREAD_HOLD          = 64\n\tPT_THREAD_SIGNAL        = 65\n\tPT_EXPLAIN              = 66\n\tPT_EVENTS               = 67\n\tPT_THREAD_INFO_EXTENDED = 68\n\tPT_REATTACH2            = 71\n\tPT_CAPTURE              = 72\n\tPT_UNCAPTURE            = 73\n\tPT_GET_THREAD_TCB       = 74\n\tPT_GET_ALET             = 75\n\tPT_SWAPIN               = 76\n\tPT_EXTENDED_EVENT       = 98\n\tPT_RECOVER              = 99  // Debug a program check\n\tPT_GPR0                 = 0   // General purpose register 0\n\tPT_GPR1                 = 1   // General purpose register 1\n\tPT_GPR2                 = 2   // General purpose register 2\n\tPT_GPR3                 = 3   // General purpose register 3\n\tPT_GPR4                 = 4   // General purpose register 4\n\tPT_GPR5                 = 5   // General purpose register 5\n\tPT_GPR6                 = 6   // General purpose register 6\n\tPT_GPR7                 = 7   // General purpose register 7\n\tPT_GPR8                 = 8   // General purpose register 8\n\tPT_GPR9                 = 9   // General purpose register 9\n\tPT_GPR10                = 10  // General purpose register 10\n\tPT_GPR11                = 11  // General purpose register 11\n\tPT_GPR12                = 12  // General purpose register 12\n\tPT_GPR13                = 13  // General purpose register 13\n\tPT_GPR14                = 14  // General purpose register 14\n\tPT_GPR15                = 15  // General purpose register 15\n\tPT_FPR0                 = 16  // Floating point register 0\n\tPT_FPR1                 = 17  // Floating point register 1\n\tPT_FPR2                 = 18  // Floating point register 2\n\tPT_FPR3                 = 19  // Floating point register 3\n\tPT_FPR4                 = 20  // Floating point register 4\n\tPT_FPR5                 = 21  // Floating point register 5\n\tPT_FPR6                 = 22  // Floating point register 6\n\tPT_FPR7                 = 23  // Floating point register 7\n\tPT_FPR8                 = 24  // Floating point register 8\n\tPT_FPR9                 = 25  // Floating point register 9\n\tPT_FPR10                = 26  // Floating point register 10\n\tPT_FPR11                = 27  // Floating point register 11\n\tPT_FPR12                = 28  // Floating point register 12\n\tPT_FPR13                = 29  // Floating point register 13\n\tPT_FPR14                = 30  // Floating point register 14\n\tPT_FPR15                = 31  // Floating point register 15\n\tPT_FPC                  = 32  // Floating point control register\n\tPT_PSW                  = 40  // PSW\n\tPT_PSW0                 = 40  // Left half of the PSW\n\tPT_PSW1                 = 41  // Right half of the PSW\n\tPT_CR0                  = 42  // Control register 0\n\tPT_CR1                  = 43  // Control register 1\n\tPT_CR2                  = 44  // Control register 2\n\tPT_CR3                  = 45  // Control register 3\n\tPT_CR4                  = 46  // Control register 4\n\tPT_CR5                  = 47  // Control register 5\n\tPT_CR6                  = 48  // Control register 6\n\tPT_CR7                  = 49  // Control register 7\n\tPT_CR8                  = 50  // Control register 8\n\tPT_CR9                  = 51  // Control register 9\n\tPT_CR10                 = 52  // Control register 10\n\tPT_CR11                 = 53  // Control register 11\n\tPT_CR12                 = 54  // Control register 12\n\tPT_CR13                 = 55  // Control register 13\n\tPT_CR14                 = 56  // Control register 14\n\tPT_CR15                 = 57  // Control register 15\n\tPT_GPRH0                = 58  // GP High register 0\n\tPT_GPRH1                = 59  // GP High register 1\n\tPT_GPRH2                = 60  // GP High register 2\n\tPT_GPRH3                = 61  // GP High register 3\n\tPT_GPRH4                = 62  // GP High register 4\n\tPT_GPRH5                = 63  // GP High register 5\n\tPT_GPRH6                = 64  // GP High register 6\n\tPT_GPRH7                = 65  // GP High register 7\n\tPT_GPRH8                = 66  // GP High register 8\n\tPT_GPRH9                = 67  // GP High register 9\n\tPT_GPRH10               = 68  // GP High register 10\n\tPT_GPRH11               = 69  // GP High register 11\n\tPT_GPRH12               = 70  // GP High register 12\n\tPT_GPRH13               = 71  // GP High register 13\n\tPT_GPRH14               = 72  // GP High register 14\n\tPT_GPRH15               = 73  // GP High register 15\n\tPT_VR0                  = 74  // Vector register 0\n\tPT_VR1                  = 75  // Vector register 1\n\tPT_VR2                  = 76  // Vector register 2\n\tPT_VR3                  = 77  // Vector register 3\n\tPT_VR4                  = 78  // Vector register 4\n\tPT_VR5                  = 79  // Vector register 5\n\tPT_VR6                  = 80  // Vector register 6\n\tPT_VR7                  = 81  // Vector register 7\n\tPT_VR8                  = 82  // Vector register 8\n\tPT_VR9                  = 83  // Vector register 9\n\tPT_VR10                 = 84  // Vector register 10\n\tPT_VR11                 = 85  // Vector register 11\n\tPT_VR12                 = 86  // Vector register 12\n\tPT_VR13                 = 87  // Vector register 13\n\tPT_VR14                 = 88  // Vector register 14\n\tPT_VR15                 = 89  // Vector register 15\n\tPT_VR16                 = 90  // Vector register 16\n\tPT_VR17                 = 91  // Vector register 17\n\tPT_VR18                 = 92  // Vector register 18\n\tPT_VR19                 = 93  // Vector register 19\n\tPT_VR20                 = 94  // Vector register 20\n\tPT_VR21                 = 95  // Vector register 21\n\tPT_VR22                 = 96  // Vector register 22\n\tPT_VR23                 = 97  // Vector register 23\n\tPT_VR24                 = 98  // Vector register 24\n\tPT_VR25                 = 99  // Vector register 25\n\tPT_VR26                 = 100 // Vector register 26\n\tPT_VR27                 = 101 // Vector register 27\n\tPT_VR28                 = 102 // Vector register 28\n\tPT_VR29                 = 103 // Vector register 29\n\tPT_VR30                 = 104 // Vector register 30\n\tPT_VR31                 = 105 // Vector register 31\n\tPT_PSWG                 = 106 // PSWG\n\tPT_PSWG0                = 106 // Bytes 0-3\n\tPT_PSWG1                = 107 // Bytes 4-7\n\tPT_PSWG2                = 108 // Bytes 8-11 (IA high word)\n\tPT_PSWG3                = 109 // Bytes 12-15 (IA low word)\n)\n\nfunc Bpx4ptr(request int32, pid int32, addr unsafe.Pointer, data unsafe.Pointer, buffer unsafe.Pointer) (rv int32, rc int32, rn int32) {\n\tvar parms [8]unsafe.Pointer\n\tparms[0] = unsafe.Pointer(&request)\n\tparms[1] = unsafe.Pointer(&pid)\n\tparms[2] = unsafe.Pointer(&addr)\n\tparms[3] = unsafe.Pointer(&data)\n\tparms[4] = unsafe.Pointer(&buffer)\n\tparms[5] = unsafe.Pointer(&rv)\n\tparms[6] = unsafe.Pointer(&rc)\n\tparms[7] = unsafe.Pointer(&rn)\n\tbpxcall(parms[:], BPX4PTR)\n\treturn rv, rc, rn\n}\n\nfunc copyU8(val uint8, dest []uint8) int {\n\tif len(dest) < 1 {\n\t\treturn 0\n\t}\n\tdest[0] = val\n\treturn 1\n}\n\nfunc copyU8Arr(src, dest []uint8) int {\n\tif len(dest) < len(src) {\n\t\treturn 0\n\t}\n\tfor i, v := range src {\n\t\tdest[i] = v\n\t}\n\treturn len(src)\n}\n\nfunc copyU16(val uint16, dest []uint16) int {\n\tif len(dest) < 1 {\n\t\treturn 0\n\t}\n\tdest[0] = val\n\treturn 1\n}\n\nfunc copyU32(val uint32, dest []uint32) int {\n\tif len(dest) < 1 {\n\t\treturn 0\n\t}\n\tdest[0] = val\n\treturn 1\n}\n\nfunc copyU32Arr(src, dest []uint32) int {\n\tif len(dest) < len(src) {\n\t\treturn 0\n\t}\n\tfor i, v := range src {\n\t\tdest[i] = v\n\t}\n\treturn len(src)\n}\n\nfunc copyU64(val uint64, dest []uint64) int {\n\tif len(dest) < 1 {\n\t\treturn 0\n\t}\n\tdest[0] = val\n\treturn 1\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/bpxsvc_zos.s",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n#include \"go_asm.h\"\n#include \"textflag.h\"\n\n// function to call USS assembly language services\n//\n// doc: https://www.ibm.com/support/knowledgecenter/en/SSLTBW_3.1.0/com.ibm.zos.v3r1.bpxb100/bit64env.htm\n//\n//   arg1 unsafe.Pointer array that ressembles an OS PLIST\n//\n//   arg2 function offset as in\n//       doc: https://www.ibm.com/support/knowledgecenter/en/SSLTBW_3.1.0/com.ibm.zos.v3r1.bpxb100/bpx2cr_List_of_offsets.htm\n//\n// func bpxcall(plist []unsafe.Pointer, bpx_offset int64)\n\nTEXT ·bpxcall(SB), NOSPLIT|NOFRAME, $0\n\tMOVD  plist_base+0(FP), R1  // r1 points to plist\n\tMOVD  bpx_offset+24(FP), R2 // r2 offset to BPX vector table\n\tMOVD  R14, R7               // save r14\n\tMOVD  R15, R8               // save r15\n\tMOVWZ 16(R0), R9\n\tMOVWZ 544(R9), R9\n\tMOVWZ 24(R9), R9            // call vector in r9\n\tADD   R2, R9                // add offset to vector table\n\tMOVWZ (R9), R9              // r9 points to entry point\n\tBYTE  $0x0D                 // BL R14,R9 --> basr r14,r9\n\tBYTE  $0xE9                 // clobbers 0,1,14,15\n\tMOVD  R8, R15               // restore 15\n\tJMP   R7                    // return via saved return address\n\n//   func A2e(arr [] byte)\n//   code page conversion from  819 to 1047\nTEXT ·A2e(SB), NOSPLIT|NOFRAME, $0\n\tMOVD arg_base+0(FP), R2                        // pointer to arry of characters\n\tMOVD arg_len+8(FP), R3                         // count\n\tXOR  R0, R0\n\tXOR  R1, R1\n\tBYTE $0xA7; BYTE $0x15; BYTE $0x00; BYTE $0x82 // BRAS 1,(2+(256/2))\n\n\t// ASCII -> EBCDIC conversion table:\n\tBYTE $0x00; BYTE $0x01; BYTE $0x02; BYTE $0x03\n\tBYTE $0x37; BYTE $0x2d; BYTE $0x2e; BYTE $0x2f\n\tBYTE $0x16; BYTE $0x05; BYTE $0x15; BYTE $0x0b\n\tBYTE $0x0c; BYTE $0x0d; BYTE $0x0e; BYTE $0x0f\n\tBYTE $0x10; BYTE $0x11; BYTE $0x12; BYTE $0x13\n\tBYTE $0x3c; BYTE $0x3d; BYTE $0x32; BYTE $0x26\n\tBYTE $0x18; BYTE $0x19; BYTE $0x3f; BYTE $0x27\n\tBYTE $0x1c; BYTE $0x1d; BYTE $0x1e; BYTE $0x1f\n\tBYTE $0x40; BYTE $0x5a; BYTE $0x7f; BYTE $0x7b\n\tBYTE $0x5b; BYTE $0x6c; BYTE $0x50; BYTE $0x7d\n\tBYTE $0x4d; BYTE $0x5d; BYTE $0x5c; BYTE $0x4e\n\tBYTE $0x6b; BYTE $0x60; BYTE $0x4b; BYTE $0x61\n\tBYTE $0xf0; BYTE $0xf1; BYTE $0xf2; BYTE $0xf3\n\tBYTE $0xf4; BYTE $0xf5; BYTE $0xf6; BYTE $0xf7\n\tBYTE $0xf8; BYTE $0xf9; BYTE $0x7a; BYTE $0x5e\n\tBYTE $0x4c; BYTE $0x7e; BYTE $0x6e; BYTE $0x6f\n\tBYTE $0x7c; BYTE $0xc1; BYTE $0xc2; BYTE $0xc3\n\tBYTE $0xc4; BYTE $0xc5; BYTE $0xc6; BYTE $0xc7\n\tBYTE $0xc8; BYTE $0xc9; BYTE $0xd1; BYTE $0xd2\n\tBYTE $0xd3; BYTE $0xd4; BYTE $0xd5; BYTE $0xd6\n\tBYTE $0xd7; BYTE $0xd8; BYTE $0xd9; BYTE $0xe2\n\tBYTE $0xe3; BYTE $0xe4; BYTE $0xe5; BYTE $0xe6\n\tBYTE $0xe7; BYTE $0xe8; BYTE $0xe9; BYTE $0xad\n\tBYTE $0xe0; BYTE $0xbd; BYTE $0x5f; BYTE $0x6d\n\tBYTE $0x79; BYTE $0x81; BYTE $0x82; BYTE $0x83\n\tBYTE $0x84; BYTE $0x85; BYTE $0x86; BYTE $0x87\n\tBYTE $0x88; BYTE $0x89; BYTE $0x91; BYTE $0x92\n\tBYTE $0x93; BYTE $0x94; BYTE $0x95; BYTE $0x96\n\tBYTE $0x97; BYTE $0x98; BYTE $0x99; BYTE $0xa2\n\tBYTE $0xa3; BYTE $0xa4; BYTE $0xa5; BYTE $0xa6\n\tBYTE $0xa7; BYTE $0xa8; BYTE $0xa9; BYTE $0xc0\n\tBYTE $0x4f; BYTE $0xd0; BYTE $0xa1; BYTE $0x07\n\tBYTE $0x20; BYTE $0x21; BYTE $0x22; BYTE $0x23\n\tBYTE $0x24; BYTE $0x25; BYTE $0x06; BYTE $0x17\n\tBYTE $0x28; BYTE $0x29; BYTE $0x2a; BYTE $0x2b\n\tBYTE $0x2c; BYTE $0x09; BYTE $0x0a; BYTE $0x1b\n\tBYTE $0x30; BYTE $0x31; BYTE $0x1a; BYTE $0x33\n\tBYTE $0x34; BYTE $0x35; BYTE $0x36; BYTE $0x08\n\tBYTE $0x38; BYTE $0x39; BYTE $0x3a; BYTE $0x3b\n\tBYTE $0x04; BYTE $0x14; BYTE $0x3e; BYTE $0xff\n\tBYTE $0x41; BYTE $0xaa; BYTE $0x4a; BYTE $0xb1\n\tBYTE $0x9f; BYTE $0xb2; BYTE $0x6a; BYTE $0xb5\n\tBYTE $0xbb; BYTE $0xb4; BYTE $0x9a; BYTE $0x8a\n\tBYTE $0xb0; BYTE $0xca; BYTE $0xaf; BYTE $0xbc\n\tBYTE $0x90; BYTE $0x8f; BYTE $0xea; BYTE $0xfa\n\tBYTE $0xbe; BYTE $0xa0; BYTE $0xb6; BYTE $0xb3\n\tBYTE $0x9d; BYTE $0xda; BYTE $0x9b; BYTE $0x8b\n\tBYTE $0xb7; BYTE $0xb8; BYTE $0xb9; BYTE $0xab\n\tBYTE $0x64; BYTE $0x65; BYTE $0x62; BYTE $0x66\n\tBYTE $0x63; BYTE $0x67; BYTE $0x9e; BYTE $0x68\n\tBYTE $0x74; BYTE $0x71; BYTE $0x72; BYTE $0x73\n\tBYTE $0x78; BYTE $0x75; BYTE $0x76; BYTE $0x77\n\tBYTE $0xac; BYTE $0x69; BYTE $0xed; BYTE $0xee\n\tBYTE $0xeb; BYTE $0xef; BYTE $0xec; BYTE $0xbf\n\tBYTE $0x80; BYTE $0xfd; BYTE $0xfe; BYTE $0xfb\n\tBYTE $0xfc; BYTE $0xba; BYTE $0xae; BYTE $0x59\n\tBYTE $0x44; BYTE $0x45; BYTE $0x42; BYTE $0x46\n\tBYTE $0x43; BYTE $0x47; BYTE $0x9c; BYTE $0x48\n\tBYTE $0x54; BYTE $0x51; BYTE $0x52; BYTE $0x53\n\tBYTE $0x58; BYTE $0x55; BYTE $0x56; BYTE $0x57\n\tBYTE $0x8c; BYTE $0x49; BYTE $0xcd; BYTE $0xce\n\tBYTE $0xcb; BYTE $0xcf; BYTE $0xcc; BYTE $0xe1\n\tBYTE $0x70; BYTE $0xdd; BYTE $0xde; BYTE $0xdb\n\tBYTE $0xdc; BYTE $0x8d; BYTE $0x8e; BYTE $0xdf\n\nretry:\n\tWORD $0xB9931022 // TROO 2,2,b'0001'\n\tBVS  retry\n\tRET\n\n//   func e2a(arr [] byte)\n//   code page conversion from  1047 to 819\nTEXT ·E2a(SB), NOSPLIT|NOFRAME, $0\n\tMOVD arg_base+0(FP), R2                        // pointer to arry of characters\n\tMOVD arg_len+8(FP), R3                         // count\n\tXOR  R0, R0\n\tXOR  R1, R1\n\tBYTE $0xA7; BYTE $0x15; BYTE $0x00; BYTE $0x82 // BRAS 1,(2+(256/2))\n\n\t// EBCDIC -> ASCII conversion table:\n\tBYTE $0x00; BYTE $0x01; BYTE $0x02; BYTE $0x03\n\tBYTE $0x9c; BYTE $0x09; BYTE $0x86; BYTE $0x7f\n\tBYTE $0x97; BYTE $0x8d; BYTE $0x8e; BYTE $0x0b\n\tBYTE $0x0c; BYTE $0x0d; BYTE $0x0e; BYTE $0x0f\n\tBYTE $0x10; BYTE $0x11; BYTE $0x12; BYTE $0x13\n\tBYTE $0x9d; BYTE $0x0a; BYTE $0x08; BYTE $0x87\n\tBYTE $0x18; BYTE $0x19; BYTE $0x92; BYTE $0x8f\n\tBYTE $0x1c; BYTE $0x1d; BYTE $0x1e; BYTE $0x1f\n\tBYTE $0x80; BYTE $0x81; BYTE $0x82; BYTE $0x83\n\tBYTE $0x84; BYTE $0x85; BYTE $0x17; BYTE $0x1b\n\tBYTE $0x88; BYTE $0x89; BYTE $0x8a; BYTE $0x8b\n\tBYTE $0x8c; BYTE $0x05; BYTE $0x06; BYTE $0x07\n\tBYTE $0x90; BYTE $0x91; BYTE $0x16; BYTE $0x93\n\tBYTE $0x94; BYTE $0x95; BYTE $0x96; BYTE $0x04\n\tBYTE $0x98; BYTE $0x99; BYTE $0x9a; BYTE $0x9b\n\tBYTE $0x14; BYTE $0x15; BYTE $0x9e; BYTE $0x1a\n\tBYTE $0x20; BYTE $0xa0; BYTE $0xe2; BYTE $0xe4\n\tBYTE $0xe0; BYTE $0xe1; BYTE $0xe3; BYTE $0xe5\n\tBYTE $0xe7; BYTE $0xf1; BYTE $0xa2; BYTE $0x2e\n\tBYTE $0x3c; BYTE $0x28; BYTE $0x2b; BYTE $0x7c\n\tBYTE $0x26; BYTE $0xe9; BYTE $0xea; BYTE $0xeb\n\tBYTE $0xe8; BYTE $0xed; BYTE $0xee; BYTE $0xef\n\tBYTE $0xec; BYTE $0xdf; BYTE $0x21; BYTE $0x24\n\tBYTE $0x2a; BYTE $0x29; BYTE $0x3b; BYTE $0x5e\n\tBYTE $0x2d; BYTE $0x2f; BYTE $0xc2; BYTE $0xc4\n\tBYTE $0xc0; BYTE $0xc1; BYTE $0xc3; BYTE $0xc5\n\tBYTE $0xc7; BYTE $0xd1; BYTE $0xa6; BYTE $0x2c\n\tBYTE $0x25; BYTE $0x5f; BYTE $0x3e; BYTE $0x3f\n\tBYTE $0xf8; BYTE $0xc9; BYTE $0xca; BYTE $0xcb\n\tBYTE $0xc8; BYTE $0xcd; BYTE $0xce; BYTE $0xcf\n\tBYTE $0xcc; BYTE $0x60; BYTE $0x3a; BYTE $0x23\n\tBYTE $0x40; BYTE $0x27; BYTE $0x3d; BYTE $0x22\n\tBYTE $0xd8; BYTE $0x61; BYTE $0x62; BYTE $0x63\n\tBYTE $0x64; BYTE $0x65; BYTE $0x66; BYTE $0x67\n\tBYTE $0x68; BYTE $0x69; BYTE $0xab; BYTE $0xbb\n\tBYTE $0xf0; BYTE $0xfd; BYTE $0xfe; BYTE $0xb1\n\tBYTE $0xb0; BYTE $0x6a; BYTE $0x6b; BYTE $0x6c\n\tBYTE $0x6d; BYTE $0x6e; BYTE $0x6f; BYTE $0x70\n\tBYTE $0x71; BYTE $0x72; BYTE $0xaa; BYTE $0xba\n\tBYTE $0xe6; BYTE $0xb8; BYTE $0xc6; BYTE $0xa4\n\tBYTE $0xb5; BYTE $0x7e; BYTE $0x73; BYTE $0x74\n\tBYTE $0x75; BYTE $0x76; BYTE $0x77; BYTE $0x78\n\tBYTE $0x79; BYTE $0x7a; BYTE $0xa1; BYTE $0xbf\n\tBYTE $0xd0; BYTE $0x5b; BYTE $0xde; BYTE $0xae\n\tBYTE $0xac; BYTE $0xa3; BYTE $0xa5; BYTE $0xb7\n\tBYTE $0xa9; BYTE $0xa7; BYTE $0xb6; BYTE $0xbc\n\tBYTE $0xbd; BYTE $0xbe; BYTE $0xdd; BYTE $0xa8\n\tBYTE $0xaf; BYTE $0x5d; BYTE $0xb4; BYTE $0xd7\n\tBYTE $0x7b; BYTE $0x41; BYTE $0x42; BYTE $0x43\n\tBYTE $0x44; BYTE $0x45; BYTE $0x46; BYTE $0x47\n\tBYTE $0x48; BYTE $0x49; BYTE $0xad; BYTE $0xf4\n\tBYTE $0xf6; BYTE $0xf2; BYTE $0xf3; BYTE $0xf5\n\tBYTE $0x7d; BYTE $0x4a; BYTE $0x4b; BYTE $0x4c\n\tBYTE $0x4d; BYTE $0x4e; BYTE $0x4f; BYTE $0x50\n\tBYTE $0x51; BYTE $0x52; BYTE $0xb9; BYTE $0xfb\n\tBYTE $0xfc; BYTE $0xf9; BYTE $0xfa; BYTE $0xff\n\tBYTE $0x5c; BYTE $0xf7; BYTE $0x53; BYTE $0x54\n\tBYTE $0x55; BYTE $0x56; BYTE $0x57; BYTE $0x58\n\tBYTE $0x59; BYTE $0x5a; BYTE $0xb2; BYTE $0xd4\n\tBYTE $0xd6; BYTE $0xd2; BYTE $0xd3; BYTE $0xd5\n\tBYTE $0x30; BYTE $0x31; BYTE $0x32; BYTE $0x33\n\tBYTE $0x34; BYTE $0x35; BYTE $0x36; BYTE $0x37\n\tBYTE $0x38; BYTE $0x39; BYTE $0xb3; BYTE $0xdb\n\tBYTE $0xdc; BYTE $0xd9; BYTE $0xda; BYTE $0x9f\n\nretry:\n\tWORD $0xB9931022 // TROO 2,2,b'0001'\n\tBVS  retry\n\tRET\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/cap_freebsd.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build freebsd\n\npackage unix\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n)\n\n// Go implementation of C mostly found in /usr/src/sys/kern/subr_capability.c\n\nconst (\n\t// This is the version of CapRights this package understands. See C implementation for parallels.\n\tcapRightsGoVersion = CAP_RIGHTS_VERSION_00\n\tcapArSizeMin       = CAP_RIGHTS_VERSION_00 + 2\n\tcapArSizeMax       = capRightsGoVersion + 2\n)\n\nvar (\n\tbit2idx = []int{\n\t\t-1, 0, 1, -1, 2, -1, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1,\n\t\t4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n\t}\n)\n\nfunc capidxbit(right uint64) int {\n\treturn int((right >> 57) & 0x1f)\n}\n\nfunc rightToIndex(right uint64) (int, error) {\n\tidx := capidxbit(right)\n\tif idx < 0 || idx >= len(bit2idx) {\n\t\treturn -2, fmt.Errorf(\"index for right 0x%x out of range\", right)\n\t}\n\treturn bit2idx[idx], nil\n}\n\nfunc caprver(right uint64) int {\n\treturn int(right >> 62)\n}\n\nfunc capver(rights *CapRights) int {\n\treturn caprver(rights.Rights[0])\n}\n\nfunc caparsize(rights *CapRights) int {\n\treturn capver(rights) + 2\n}\n\n// CapRightsSet sets the permissions in setrights in rights.\nfunc CapRightsSet(rights *CapRights, setrights []uint64) error {\n\t// This is essentially a copy of cap_rights_vset()\n\tif capver(rights) != CAP_RIGHTS_VERSION_00 {\n\t\treturn fmt.Errorf(\"bad rights version %d\", capver(rights))\n\t}\n\n\tn := caparsize(rights)\n\tif n < capArSizeMin || n > capArSizeMax {\n\t\treturn errors.New(\"bad rights size\")\n\t}\n\n\tfor _, right := range setrights {\n\t\tif caprver(right) != CAP_RIGHTS_VERSION_00 {\n\t\t\treturn errors.New(\"bad right version\")\n\t\t}\n\t\ti, err := rightToIndex(right)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif i >= n {\n\t\t\treturn errors.New(\"index overflow\")\n\t\t}\n\t\tif capidxbit(rights.Rights[i]) != capidxbit(right) {\n\t\t\treturn errors.New(\"index mismatch\")\n\t\t}\n\t\trights.Rights[i] |= right\n\t\tif capidxbit(rights.Rights[i]) != capidxbit(right) {\n\t\t\treturn errors.New(\"index mismatch (after assign)\")\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// CapRightsClear clears the permissions in clearrights from rights.\nfunc CapRightsClear(rights *CapRights, clearrights []uint64) error {\n\t// This is essentially a copy of cap_rights_vclear()\n\tif capver(rights) != CAP_RIGHTS_VERSION_00 {\n\t\treturn fmt.Errorf(\"bad rights version %d\", capver(rights))\n\t}\n\n\tn := caparsize(rights)\n\tif n < capArSizeMin || n > capArSizeMax {\n\t\treturn errors.New(\"bad rights size\")\n\t}\n\n\tfor _, right := range clearrights {\n\t\tif caprver(right) != CAP_RIGHTS_VERSION_00 {\n\t\t\treturn errors.New(\"bad right version\")\n\t\t}\n\t\ti, err := rightToIndex(right)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif i >= n {\n\t\t\treturn errors.New(\"index overflow\")\n\t\t}\n\t\tif capidxbit(rights.Rights[i]) != capidxbit(right) {\n\t\t\treturn errors.New(\"index mismatch\")\n\t\t}\n\t\trights.Rights[i] &= ^(right & 0x01FFFFFFFFFFFFFF)\n\t\tif capidxbit(rights.Rights[i]) != capidxbit(right) {\n\t\t\treturn errors.New(\"index mismatch (after assign)\")\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// CapRightsIsSet checks whether all the permissions in setrights are present in rights.\nfunc CapRightsIsSet(rights *CapRights, setrights []uint64) (bool, error) {\n\t// This is essentially a copy of cap_rights_is_vset()\n\tif capver(rights) != CAP_RIGHTS_VERSION_00 {\n\t\treturn false, fmt.Errorf(\"bad rights version %d\", capver(rights))\n\t}\n\n\tn := caparsize(rights)\n\tif n < capArSizeMin || n > capArSizeMax {\n\t\treturn false, errors.New(\"bad rights size\")\n\t}\n\n\tfor _, right := range setrights {\n\t\tif caprver(right) != CAP_RIGHTS_VERSION_00 {\n\t\t\treturn false, errors.New(\"bad right version\")\n\t\t}\n\t\ti, err := rightToIndex(right)\n\t\tif err != nil {\n\t\t\treturn false, err\n\t\t}\n\t\tif i >= n {\n\t\t\treturn false, errors.New(\"index overflow\")\n\t\t}\n\t\tif capidxbit(rights.Rights[i]) != capidxbit(right) {\n\t\t\treturn false, errors.New(\"index mismatch\")\n\t\t}\n\t\tif (rights.Rights[i] & right) != right {\n\t\t\treturn false, nil\n\t\t}\n\t}\n\n\treturn true, nil\n}\n\nfunc capright(idx uint64, bit uint64) uint64 {\n\treturn ((1 << (57 + idx)) | bit)\n}\n\n// CapRightsInit returns a pointer to an initialised CapRights structure filled with rights.\n// See man cap_rights_init(3) and rights(4).\nfunc CapRightsInit(rights []uint64) (*CapRights, error) {\n\tvar r CapRights\n\tr.Rights[0] = (capRightsGoVersion << 62) | capright(0, 0)\n\tr.Rights[1] = capright(1, 0)\n\n\terr := CapRightsSet(&r, rights)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &r, nil\n}\n\n// CapRightsLimit reduces the operations permitted on fd to at most those contained in rights.\n// The capability rights on fd can never be increased by CapRightsLimit.\n// See man cap_rights_limit(2) and rights(4).\nfunc CapRightsLimit(fd uintptr, rights *CapRights) error {\n\treturn capRightsLimit(int(fd), rights)\n}\n\n// CapRightsGet returns a CapRights structure containing the operations permitted on fd.\n// See man cap_rights_get(3) and rights(4).\nfunc CapRightsGet(fd uintptr) (*CapRights, error) {\n\tr, err := CapRightsInit(nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\terr = capRightsGet(capRightsGoVersion, int(fd), r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn r, nil\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/constants.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos\n\npackage unix\n\nconst (\n\tR_OK = 0x4\n\tW_OK = 0x2\n\tX_OK = 0x1\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/dev_aix_ppc.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix && ppc\n\n// Functions to access/create device major and minor numbers matching the\n// encoding used by AIX.\n\npackage unix\n\n// Major returns the major component of a Linux device number.\nfunc Major(dev uint64) uint32 {\n\treturn uint32((dev >> 16) & 0xffff)\n}\n\n// Minor returns the minor component of a Linux device number.\nfunc Minor(dev uint64) uint32 {\n\treturn uint32(dev & 0xffff)\n}\n\n// Mkdev returns a Linux device number generated from the given major and minor\n// components.\nfunc Mkdev(major, minor uint32) uint64 {\n\treturn uint64(((major) << 16) | (minor))\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/dev_aix_ppc64.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix && ppc64\n\n// Functions to access/create device major and minor numbers matching the\n// encoding used AIX.\n\npackage unix\n\n// Major returns the major component of a Linux device number.\nfunc Major(dev uint64) uint32 {\n\treturn uint32((dev & 0x3fffffff00000000) >> 32)\n}\n\n// Minor returns the minor component of a Linux device number.\nfunc Minor(dev uint64) uint32 {\n\treturn uint32((dev & 0x00000000ffffffff) >> 0)\n}\n\n// Mkdev returns a Linux device number generated from the given major and minor\n// components.\nfunc Mkdev(major, minor uint32) uint64 {\n\tvar DEVNO64 uint64\n\tDEVNO64 = 0x8000000000000000\n\treturn ((uint64(major) << 32) | (uint64(minor) & 0x00000000FFFFFFFF) | DEVNO64)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/dev_darwin.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Functions to access/create device major and minor numbers matching the\n// encoding used in Darwin's sys/types.h header.\n\npackage unix\n\n// Major returns the major component of a Darwin device number.\nfunc Major(dev uint64) uint32 {\n\treturn uint32((dev >> 24) & 0xff)\n}\n\n// Minor returns the minor component of a Darwin device number.\nfunc Minor(dev uint64) uint32 {\n\treturn uint32(dev & 0xffffff)\n}\n\n// Mkdev returns a Darwin device number generated from the given major and minor\n// components.\nfunc Mkdev(major, minor uint32) uint64 {\n\treturn (uint64(major) << 24) | uint64(minor)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/dev_dragonfly.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Functions to access/create device major and minor numbers matching the\n// encoding used in Dragonfly's sys/types.h header.\n//\n// The information below is extracted and adapted from sys/types.h:\n//\n// Minor gives a cookie instead of an index since in order to avoid changing the\n// meanings of bits 0-15 or wasting time and space shifting bits 16-31 for\n// devices that don't use them.\n\npackage unix\n\n// Major returns the major component of a DragonFlyBSD device number.\nfunc Major(dev uint64) uint32 {\n\treturn uint32((dev >> 8) & 0xff)\n}\n\n// Minor returns the minor component of a DragonFlyBSD device number.\nfunc Minor(dev uint64) uint32 {\n\treturn uint32(dev & 0xffff00ff)\n}\n\n// Mkdev returns a DragonFlyBSD device number generated from the given major and\n// minor components.\nfunc Mkdev(major, minor uint32) uint64 {\n\treturn (uint64(major) << 8) | uint64(minor)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/dev_freebsd.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Functions to access/create device major and minor numbers matching the\n// encoding used in FreeBSD's sys/types.h header.\n//\n// The information below is extracted and adapted from sys/types.h:\n//\n// Minor gives a cookie instead of an index since in order to avoid changing the\n// meanings of bits 0-15 or wasting time and space shifting bits 16-31 for\n// devices that don't use them.\n\npackage unix\n\n// Major returns the major component of a FreeBSD device number.\nfunc Major(dev uint64) uint32 {\n\treturn uint32((dev >> 8) & 0xff)\n}\n\n// Minor returns the minor component of a FreeBSD device number.\nfunc Minor(dev uint64) uint32 {\n\treturn uint32(dev & 0xffff00ff)\n}\n\n// Mkdev returns a FreeBSD device number generated from the given major and\n// minor components.\nfunc Mkdev(major, minor uint32) uint64 {\n\treturn (uint64(major) << 8) | uint64(minor)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/dev_linux.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Functions to access/create device major and minor numbers matching the\n// encoding used by the Linux kernel and glibc.\n//\n// The information below is extracted and adapted from bits/sysmacros.h in the\n// glibc sources:\n//\n// dev_t in glibc is 64-bit, with 32-bit major and minor numbers. glibc's\n// default encoding is MMMM Mmmm mmmM MMmm, where M is a hex digit of the major\n// number and m is a hex digit of the minor number. This is backward compatible\n// with legacy systems where dev_t is 16 bits wide, encoded as MMmm. It is also\n// backward compatible with the Linux kernel, which for some architectures uses\n// 32-bit dev_t, encoded as mmmM MMmm.\n\npackage unix\n\n// Major returns the major component of a Linux device number.\nfunc Major(dev uint64) uint32 {\n\tmajor := uint32((dev & 0x00000000000fff00) >> 8)\n\tmajor |= uint32((dev & 0xfffff00000000000) >> 32)\n\treturn major\n}\n\n// Minor returns the minor component of a Linux device number.\nfunc Minor(dev uint64) uint32 {\n\tminor := uint32((dev & 0x00000000000000ff) >> 0)\n\tminor |= uint32((dev & 0x00000ffffff00000) >> 12)\n\treturn minor\n}\n\n// Mkdev returns a Linux device number generated from the given major and minor\n// components.\nfunc Mkdev(major, minor uint32) uint64 {\n\tdev := (uint64(major) & 0x00000fff) << 8\n\tdev |= (uint64(major) & 0xfffff000) << 32\n\tdev |= (uint64(minor) & 0x000000ff) << 0\n\tdev |= (uint64(minor) & 0xffffff00) << 12\n\treturn dev\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/dev_netbsd.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Functions to access/create device major and minor numbers matching the\n// encoding used in NetBSD's sys/types.h header.\n\npackage unix\n\n// Major returns the major component of a NetBSD device number.\nfunc Major(dev uint64) uint32 {\n\treturn uint32((dev & 0x000fff00) >> 8)\n}\n\n// Minor returns the minor component of a NetBSD device number.\nfunc Minor(dev uint64) uint32 {\n\tminor := uint32((dev & 0x000000ff) >> 0)\n\tminor |= uint32((dev & 0xfff00000) >> 12)\n\treturn minor\n}\n\n// Mkdev returns a NetBSD device number generated from the given major and minor\n// components.\nfunc Mkdev(major, minor uint32) uint64 {\n\tdev := (uint64(major) << 8) & 0x000fff00\n\tdev |= (uint64(minor) << 12) & 0xfff00000\n\tdev |= (uint64(minor) << 0) & 0x000000ff\n\treturn dev\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/dev_openbsd.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Functions to access/create device major and minor numbers matching the\n// encoding used in OpenBSD's sys/types.h header.\n\npackage unix\n\n// Major returns the major component of an OpenBSD device number.\nfunc Major(dev uint64) uint32 {\n\treturn uint32((dev & 0x0000ff00) >> 8)\n}\n\n// Minor returns the minor component of an OpenBSD device number.\nfunc Minor(dev uint64) uint32 {\n\tminor := uint32((dev & 0x000000ff) >> 0)\n\tminor |= uint32((dev & 0xffff0000) >> 8)\n\treturn minor\n}\n\n// Mkdev returns an OpenBSD device number generated from the given major and minor\n// components.\nfunc Mkdev(major, minor uint32) uint64 {\n\tdev := (uint64(major) << 8) & 0x0000ff00\n\tdev |= (uint64(minor) << 8) & 0xffff0000\n\tdev |= (uint64(minor) << 0) & 0x000000ff\n\treturn dev\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/dev_zos.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build zos && s390x\n\n// Functions to access/create device major and minor numbers matching the\n// encoding used by z/OS.\n//\n// The information below is extracted and adapted from <sys/stat.h> macros.\n\npackage unix\n\n// Major returns the major component of a z/OS device number.\nfunc Major(dev uint64) uint32 {\n\treturn uint32((dev >> 16) & 0x0000FFFF)\n}\n\n// Minor returns the minor component of a z/OS device number.\nfunc Minor(dev uint64) uint32 {\n\treturn uint32(dev & 0x0000FFFF)\n}\n\n// Mkdev returns a z/OS device number generated from the given major and minor\n// components.\nfunc Mkdev(major, minor uint32) uint64 {\n\treturn (uint64(major) << 16) | uint64(minor)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/dirent.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos\n\npackage unix\n\nimport \"unsafe\"\n\n// readInt returns the size-bytes unsigned integer in native byte order at offset off.\nfunc readInt(b []byte, off, size uintptr) (u uint64, ok bool) {\n\tif len(b) < int(off+size) {\n\t\treturn 0, false\n\t}\n\tif isBigEndian {\n\t\treturn readIntBE(b[off:], size), true\n\t}\n\treturn readIntLE(b[off:], size), true\n}\n\nfunc readIntBE(b []byte, size uintptr) uint64 {\n\tswitch size {\n\tcase 1:\n\t\treturn uint64(b[0])\n\tcase 2:\n\t\t_ = b[1] // bounds check hint to compiler; see golang.org/issue/14808\n\t\treturn uint64(b[1]) | uint64(b[0])<<8\n\tcase 4:\n\t\t_ = b[3] // bounds check hint to compiler; see golang.org/issue/14808\n\t\treturn uint64(b[3]) | uint64(b[2])<<8 | uint64(b[1])<<16 | uint64(b[0])<<24\n\tcase 8:\n\t\t_ = b[7] // bounds check hint to compiler; see golang.org/issue/14808\n\t\treturn uint64(b[7]) | uint64(b[6])<<8 | uint64(b[5])<<16 | uint64(b[4])<<24 |\n\t\t\tuint64(b[3])<<32 | uint64(b[2])<<40 | uint64(b[1])<<48 | uint64(b[0])<<56\n\tdefault:\n\t\tpanic(\"syscall: readInt with unsupported size\")\n\t}\n}\n\nfunc readIntLE(b []byte, size uintptr) uint64 {\n\tswitch size {\n\tcase 1:\n\t\treturn uint64(b[0])\n\tcase 2:\n\t\t_ = b[1] // bounds check hint to compiler; see golang.org/issue/14808\n\t\treturn uint64(b[0]) | uint64(b[1])<<8\n\tcase 4:\n\t\t_ = b[3] // bounds check hint to compiler; see golang.org/issue/14808\n\t\treturn uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24\n\tcase 8:\n\t\t_ = b[7] // bounds check hint to compiler; see golang.org/issue/14808\n\t\treturn uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 |\n\t\t\tuint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56\n\tdefault:\n\t\tpanic(\"syscall: readInt with unsupported size\")\n\t}\n}\n\n// ParseDirent parses up to max directory entries in buf,\n// appending the names to names. It returns the number of\n// bytes consumed from buf, the number of entries added\n// to names, and the new names slice.\nfunc ParseDirent(buf []byte, max int, names []string) (consumed int, count int, newnames []string) {\n\toriglen := len(buf)\n\tcount = 0\n\tfor max != 0 && len(buf) > 0 {\n\t\treclen, ok := direntReclen(buf)\n\t\tif !ok || reclen > uint64(len(buf)) {\n\t\t\treturn origlen, count, names\n\t\t}\n\t\trec := buf[:reclen]\n\t\tbuf = buf[reclen:]\n\t\tino, ok := direntIno(rec)\n\t\tif !ok {\n\t\t\tbreak\n\t\t}\n\t\tif ino == 0 { // File absent in directory.\n\t\t\tcontinue\n\t\t}\n\t\tconst namoff = uint64(unsafe.Offsetof(Dirent{}.Name))\n\t\tnamlen, ok := direntNamlen(rec)\n\t\tif !ok || namoff+namlen > uint64(len(rec)) {\n\t\t\tbreak\n\t\t}\n\t\tname := rec[namoff : namoff+namlen]\n\t\tfor i, c := range name {\n\t\t\tif c == 0 {\n\t\t\t\tname = name[:i]\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\t// Check for useless names before allocating a string.\n\t\tif string(name) == \".\" || string(name) == \"..\" {\n\t\t\tcontinue\n\t\t}\n\t\tmax--\n\t\tcount++\n\t\tnames = append(names, string(name))\n\t}\n\treturn origlen - len(buf), count, names\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/endian_big.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n//\n//go:build armbe || arm64be || m68k || mips || mips64 || mips64p32 || ppc || ppc64 || s390 || s390x || shbe || sparc || sparc64\n\npackage unix\n\nconst isBigEndian = true\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/endian_little.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n//\n//go:build 386 || amd64 || amd64p32 || alpha || arm || arm64 || loong64 || mipsle || mips64le || mips64p32le || nios2 || ppc64le || riscv || riscv64 || sh\n\npackage unix\n\nconst isBigEndian = false\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/env_unix.go",
    "content": "// Copyright 2010 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos\n\n// Unix environment variables.\n\npackage unix\n\nimport \"syscall\"\n\nfunc Getenv(key string) (value string, found bool) {\n\treturn syscall.Getenv(key)\n}\n\nfunc Setenv(key, value string) error {\n\treturn syscall.Setenv(key, value)\n}\n\nfunc Clearenv() {\n\tsyscall.Clearenv()\n}\n\nfunc Environ() []string {\n\treturn syscall.Environ()\n}\n\nfunc Unsetenv(key string) error {\n\treturn syscall.Unsetenv(key)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/fcntl.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build dragonfly || freebsd || linux || netbsd\n\npackage unix\n\nimport \"unsafe\"\n\n// fcntl64Syscall is usually SYS_FCNTL, but is overridden on 32-bit Linux\n// systems by fcntl_linux_32bit.go to be SYS_FCNTL64.\nvar fcntl64Syscall uintptr = SYS_FCNTL\n\nfunc fcntl(fd int, cmd, arg int) (int, error) {\n\tvalptr, _, errno := Syscall(fcntl64Syscall, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tvar err error\n\tif errno != 0 {\n\t\terr = errno\n\t}\n\treturn int(valptr), err\n}\n\n// FcntlInt performs a fcntl syscall on fd with the provided command and argument.\nfunc FcntlInt(fd uintptr, cmd, arg int) (int, error) {\n\treturn fcntl(int(fd), cmd, arg)\n}\n\n// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command.\nfunc FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error {\n\t_, _, errno := Syscall(fcntl64Syscall, fd, uintptr(cmd), uintptr(unsafe.Pointer(lk)))\n\tif errno == 0 {\n\t\treturn nil\n\t}\n\treturn errno\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/fcntl_darwin.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage unix\n\nimport \"unsafe\"\n\n// FcntlInt performs a fcntl syscall on fd with the provided command and argument.\nfunc FcntlInt(fd uintptr, cmd, arg int) (int, error) {\n\treturn fcntl(int(fd), cmd, arg)\n}\n\n// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command.\nfunc FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error {\n\t_, err := fcntl(int(fd), cmd, int(uintptr(unsafe.Pointer(lk))))\n\treturn err\n}\n\n// FcntlFstore performs a fcntl syscall for the F_PREALLOCATE command.\nfunc FcntlFstore(fd uintptr, cmd int, fstore *Fstore_t) error {\n\t_, err := fcntl(int(fd), cmd, int(uintptr(unsafe.Pointer(fstore))))\n\treturn err\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (linux && 386) || (linux && arm) || (linux && mips) || (linux && mipsle) || (linux && ppc)\n\npackage unix\n\nfunc init() {\n\t// On 32-bit Linux systems, the fcntl syscall that matches Go's\n\t// Flock_t type is SYS_FCNTL64, not SYS_FCNTL.\n\tfcntl64Syscall = SYS_FCNTL64\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/fdset.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos\n\npackage unix\n\n// Set adds fd to the set fds.\nfunc (fds *FdSet) Set(fd int) {\n\tfds.Bits[fd/NFDBITS] |= (1 << (uintptr(fd) % NFDBITS))\n}\n\n// Clear removes fd from the set fds.\nfunc (fds *FdSet) Clear(fd int) {\n\tfds.Bits[fd/NFDBITS] &^= (1 << (uintptr(fd) % NFDBITS))\n}\n\n// IsSet returns whether fd is in the set fds.\nfunc (fds *FdSet) IsSet(fd int) bool {\n\treturn fds.Bits[fd/NFDBITS]&(1<<(uintptr(fd)%NFDBITS)) != 0\n}\n\n// Zero clears the set fds.\nfunc (fds *FdSet) Zero() {\n\tclear(fds.Bits[:])\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/gccgo.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gccgo && !aix && !hurd\n\npackage unix\n\nimport \"syscall\"\n\n// We can't use the gc-syntax .s files for gccgo. On the plus side\n// much of the functionality can be written directly in Go.\n\nfunc realSyscallNoError(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r uintptr)\n\nfunc realSyscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r, errno uintptr)\n\nfunc SyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr) {\n\tsyscall.Entersyscall()\n\tr := realSyscallNoError(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0)\n\tsyscall.Exitsyscall()\n\treturn r, 0\n}\n\nfunc Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) {\n\tsyscall.Entersyscall()\n\tr, errno := realSyscall(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0)\n\tsyscall.Exitsyscall()\n\treturn r, 0, syscall.Errno(errno)\n}\n\nfunc Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) {\n\tsyscall.Entersyscall()\n\tr, errno := realSyscall(trap, a1, a2, a3, a4, a5, a6, 0, 0, 0)\n\tsyscall.Exitsyscall()\n\treturn r, 0, syscall.Errno(errno)\n}\n\nfunc Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) {\n\tsyscall.Entersyscall()\n\tr, errno := realSyscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9)\n\tsyscall.Exitsyscall()\n\treturn r, 0, syscall.Errno(errno)\n}\n\nfunc RawSyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr) {\n\tr := realSyscallNoError(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0)\n\treturn r, 0\n}\n\nfunc RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) {\n\tr, errno := realSyscall(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0)\n\treturn r, 0, syscall.Errno(errno)\n}\n\nfunc RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) {\n\tr, errno := realSyscall(trap, a1, a2, a3, a4, a5, a6, 0, 0, 0)\n\treturn r, 0, syscall.Errno(errno)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/gccgo_c.c",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gccgo && !aix && !hurd\n\n#include <errno.h>\n#include <stdint.h>\n#include <unistd.h>\n\n#define _STRINGIFY2_(x) #x\n#define _STRINGIFY_(x) _STRINGIFY2_(x)\n#define GOSYM_PREFIX _STRINGIFY_(__USER_LABEL_PREFIX__)\n\n// Call syscall from C code because the gccgo support for calling from\n// Go to C does not support varargs functions.\n\nstruct ret {\n\tuintptr_t r;\n\tuintptr_t err;\n};\n\nstruct ret gccgoRealSyscall(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5, uintptr_t a6, uintptr_t a7, uintptr_t a8, uintptr_t a9)\n  __asm__(GOSYM_PREFIX GOPKGPATH \".realSyscall\");\n\nstruct ret\ngccgoRealSyscall(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5, uintptr_t a6, uintptr_t a7, uintptr_t a8, uintptr_t a9)\n{\n\tstruct ret r;\n\n\terrno = 0;\n\tr.r = syscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9);\n\tr.err = errno;\n\treturn r;\n}\n\nuintptr_t gccgoRealSyscallNoError(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5, uintptr_t a6, uintptr_t a7, uintptr_t a8, uintptr_t a9)\n  __asm__(GOSYM_PREFIX GOPKGPATH \".realSyscallNoError\");\n\nuintptr_t\ngccgoRealSyscallNoError(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5, uintptr_t a6, uintptr_t a7, uintptr_t a8, uintptr_t a9)\n{\n\treturn syscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9);\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gccgo && linux && amd64\n\npackage unix\n\nimport \"syscall\"\n\n//extern gettimeofday\nfunc realGettimeofday(*Timeval, *byte) int32\n\nfunc gettimeofday(tv *Timeval) (err syscall.Errno) {\n\tr := realGettimeofday(tv, nil)\n\tif r < 0 {\n\t\treturn syscall.GetErrno()\n\t}\n\treturn 0\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ifreq_linux.go",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux\n\npackage unix\n\nimport (\n\t\"unsafe\"\n)\n\n// Helpers for dealing with ifreq since it contains a union and thus requires a\n// lot of unsafe.Pointer casts to use properly.\n\n// An Ifreq is a type-safe wrapper around the raw ifreq struct. An Ifreq\n// contains an interface name and a union of arbitrary data which can be\n// accessed using the Ifreq's methods. To create an Ifreq, use the NewIfreq\n// function.\n//\n// Use the Name method to access the stored interface name. The union data\n// fields can be get and set using the following methods:\n//   - Uint16/SetUint16: flags\n//   - Uint32/SetUint32: ifindex, metric, mtu\ntype Ifreq struct{ raw ifreq }\n\n// NewIfreq creates an Ifreq with the input network interface name after\n// validating the name does not exceed IFNAMSIZ-1 (trailing NULL required)\n// bytes.\nfunc NewIfreq(name string) (*Ifreq, error) {\n\t// Leave room for terminating NULL byte.\n\tif len(name) >= IFNAMSIZ {\n\t\treturn nil, EINVAL\n\t}\n\n\tvar ifr ifreq\n\tcopy(ifr.Ifrn[:], name)\n\n\treturn &Ifreq{raw: ifr}, nil\n}\n\n// TODO(mdlayher): get/set methods for hardware address sockaddr, char array, etc.\n\n// Name returns the interface name associated with the Ifreq.\nfunc (ifr *Ifreq) Name() string {\n\treturn ByteSliceToString(ifr.raw.Ifrn[:])\n}\n\n// According to netdevice(7), only AF_INET addresses are returned for numerous\n// sockaddr ioctls. For convenience, we expose these as Inet4Addr since the Port\n// field and other data is always empty.\n\n// Inet4Addr returns the Ifreq union data from an embedded sockaddr as a C\n// in_addr/Go []byte (4-byte IPv4 address) value. If the sockaddr family is not\n// AF_INET, an error is returned.\nfunc (ifr *Ifreq) Inet4Addr() ([]byte, error) {\n\traw := *(*RawSockaddrInet4)(unsafe.Pointer(&ifr.raw.Ifru[:SizeofSockaddrInet4][0]))\n\tif raw.Family != AF_INET {\n\t\t// Cannot safely interpret raw.Addr bytes as an IPv4 address.\n\t\treturn nil, EINVAL\n\t}\n\n\treturn raw.Addr[:], nil\n}\n\n// SetInet4Addr sets a C in_addr/Go []byte (4-byte IPv4 address) value in an\n// embedded sockaddr within the Ifreq's union data. v must be 4 bytes in length\n// or an error will be returned.\nfunc (ifr *Ifreq) SetInet4Addr(v []byte) error {\n\tif len(v) != 4 {\n\t\treturn EINVAL\n\t}\n\n\tvar addr [4]byte\n\tcopy(addr[:], v)\n\n\tifr.clear()\n\t*(*RawSockaddrInet4)(\n\t\tunsafe.Pointer(&ifr.raw.Ifru[:SizeofSockaddrInet4][0]),\n\t) = RawSockaddrInet4{\n\t\t// Always set IP family as ioctls would require it anyway.\n\t\tFamily: AF_INET,\n\t\tAddr:   addr,\n\t}\n\n\treturn nil\n}\n\n// Uint16 returns the Ifreq union data as a C short/Go uint16 value.\nfunc (ifr *Ifreq) Uint16() uint16 {\n\treturn *(*uint16)(unsafe.Pointer(&ifr.raw.Ifru[:2][0]))\n}\n\n// SetUint16 sets a C short/Go uint16 value as the Ifreq's union data.\nfunc (ifr *Ifreq) SetUint16(v uint16) {\n\tifr.clear()\n\t*(*uint16)(unsafe.Pointer(&ifr.raw.Ifru[:2][0])) = v\n}\n\n// Uint32 returns the Ifreq union data as a C int/Go uint32 value.\nfunc (ifr *Ifreq) Uint32() uint32 {\n\treturn *(*uint32)(unsafe.Pointer(&ifr.raw.Ifru[:4][0]))\n}\n\n// SetUint32 sets a C int/Go uint32 value as the Ifreq's union data.\nfunc (ifr *Ifreq) SetUint32(v uint32) {\n\tifr.clear()\n\t*(*uint32)(unsafe.Pointer(&ifr.raw.Ifru[:4][0])) = v\n}\n\n// clear zeroes the ifreq's union field to prevent trailing garbage data from\n// being sent to the kernel if an ifreq is reused.\nfunc (ifr *Ifreq) clear() {\n\tclear(ifr.raw.Ifru[:])\n}\n\n// TODO(mdlayher): export as IfreqData? For now we can provide helpers such as\n// IoctlGetEthtoolDrvinfo which use these APIs under the hood.\n\n// An ifreqData is an Ifreq which carries pointer data. To produce an ifreqData,\n// use the Ifreq.withData method.\ntype ifreqData struct {\n\tname [IFNAMSIZ]byte\n\t// A type separate from ifreq is required in order to comply with the\n\t// unsafe.Pointer rules since the \"pointer-ness\" of data would not be\n\t// preserved if it were cast into the byte array of a raw ifreq.\n\tdata unsafe.Pointer\n\t// Pad to the same size as ifreq.\n\t_ [len(ifreq{}.Ifru) - SizeofPtr]byte\n}\n\n// withData produces an ifreqData with the pointer p set for ioctls which require\n// arbitrary pointer data.\nfunc (ifr Ifreq) withData(p unsafe.Pointer) ifreqData {\n\treturn ifreqData{\n\t\tname: ifr.raw.Ifrn,\n\t\tdata: p,\n\t}\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ioctl_linux.go",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage unix\n\nimport \"unsafe\"\n\n// IoctlRetInt performs an ioctl operation specified by req on a device\n// associated with opened file descriptor fd, and returns a non-negative\n// integer that is returned by the ioctl syscall.\nfunc IoctlRetInt(fd int, req uint) (int, error) {\n\tret, _, err := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), 0)\n\tif err != 0 {\n\t\treturn 0, err\n\t}\n\treturn int(ret), nil\n}\n\nfunc IoctlGetUint32(fd int, req uint) (uint32, error) {\n\tvar value uint32\n\terr := ioctlPtr(fd, req, unsafe.Pointer(&value))\n\treturn value, err\n}\n\nfunc IoctlGetRTCTime(fd int) (*RTCTime, error) {\n\tvar value RTCTime\n\terr := ioctlPtr(fd, RTC_RD_TIME, unsafe.Pointer(&value))\n\treturn &value, err\n}\n\nfunc IoctlSetRTCTime(fd int, value *RTCTime) error {\n\treturn ioctlPtr(fd, RTC_SET_TIME, unsafe.Pointer(value))\n}\n\nfunc IoctlGetRTCWkAlrm(fd int) (*RTCWkAlrm, error) {\n\tvar value RTCWkAlrm\n\terr := ioctlPtr(fd, RTC_WKALM_RD, unsafe.Pointer(&value))\n\treturn &value, err\n}\n\nfunc IoctlSetRTCWkAlrm(fd int, value *RTCWkAlrm) error {\n\treturn ioctlPtr(fd, RTC_WKALM_SET, unsafe.Pointer(value))\n}\n\n// IoctlGetEthtoolDrvinfo fetches ethtool driver information for the network\n// device specified by ifname.\nfunc IoctlGetEthtoolDrvinfo(fd int, ifname string) (*EthtoolDrvinfo, error) {\n\tifr, err := NewIfreq(ifname)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvalue := EthtoolDrvinfo{Cmd: ETHTOOL_GDRVINFO}\n\tifrd := ifr.withData(unsafe.Pointer(&value))\n\n\terr = ioctlIfreqData(fd, SIOCETHTOOL, &ifrd)\n\treturn &value, err\n}\n\n// IoctlGetEthtoolTsInfo fetches ethtool timestamping and PHC\n// association for the network device specified by ifname.\nfunc IoctlGetEthtoolTsInfo(fd int, ifname string) (*EthtoolTsInfo, error) {\n\tifr, err := NewIfreq(ifname)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvalue := EthtoolTsInfo{Cmd: ETHTOOL_GET_TS_INFO}\n\tifrd := ifr.withData(unsafe.Pointer(&value))\n\n\terr = ioctlIfreqData(fd, SIOCETHTOOL, &ifrd)\n\treturn &value, err\n}\n\n// IoctlGetHwTstamp retrieves the hardware timestamping configuration\n// for the network device specified by ifname.\nfunc IoctlGetHwTstamp(fd int, ifname string) (*HwTstampConfig, error) {\n\tifr, err := NewIfreq(ifname)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvalue := HwTstampConfig{}\n\tifrd := ifr.withData(unsafe.Pointer(&value))\n\n\terr = ioctlIfreqData(fd, SIOCGHWTSTAMP, &ifrd)\n\treturn &value, err\n}\n\n// IoctlSetHwTstamp updates the hardware timestamping configuration for\n// the network device specified by ifname.\nfunc IoctlSetHwTstamp(fd int, ifname string, cfg *HwTstampConfig) error {\n\tifr, err := NewIfreq(ifname)\n\tif err != nil {\n\t\treturn err\n\t}\n\tifrd := ifr.withData(unsafe.Pointer(cfg))\n\treturn ioctlIfreqData(fd, SIOCSHWTSTAMP, &ifrd)\n}\n\n// FdToClockID derives the clock ID from the file descriptor number\n// - see clock_gettime(3), FD_TO_CLOCKID macros. The resulting ID is\n// suitable for system calls like ClockGettime.\nfunc FdToClockID(fd int) int32 { return int32((int(^fd) << 3) | 3) }\n\n// IoctlPtpClockGetcaps returns the description of a given PTP device.\nfunc IoctlPtpClockGetcaps(fd int) (*PtpClockCaps, error) {\n\tvar value PtpClockCaps\n\terr := ioctlPtr(fd, PTP_CLOCK_GETCAPS2, unsafe.Pointer(&value))\n\treturn &value, err\n}\n\n// IoctlPtpSysOffsetPrecise returns a description of the clock\n// offset compared to the system clock.\nfunc IoctlPtpSysOffsetPrecise(fd int) (*PtpSysOffsetPrecise, error) {\n\tvar value PtpSysOffsetPrecise\n\terr := ioctlPtr(fd, PTP_SYS_OFFSET_PRECISE2, unsafe.Pointer(&value))\n\treturn &value, err\n}\n\n// IoctlPtpSysOffsetExtended returns an extended description of the\n// clock offset compared to the system clock. The samples parameter\n// specifies the desired number of measurements.\nfunc IoctlPtpSysOffsetExtended(fd int, samples uint) (*PtpSysOffsetExtended, error) {\n\tvalue := PtpSysOffsetExtended{Samples: uint32(samples)}\n\terr := ioctlPtr(fd, PTP_SYS_OFFSET_EXTENDED2, unsafe.Pointer(&value))\n\treturn &value, err\n}\n\n// IoctlPtpPinGetfunc returns the configuration of the specified\n// I/O pin on given PTP device.\nfunc IoctlPtpPinGetfunc(fd int, index uint) (*PtpPinDesc, error) {\n\tvalue := PtpPinDesc{Index: uint32(index)}\n\terr := ioctlPtr(fd, PTP_PIN_GETFUNC2, unsafe.Pointer(&value))\n\treturn &value, err\n}\n\n// IoctlPtpPinSetfunc updates configuration of the specified PTP\n// I/O pin.\nfunc IoctlPtpPinSetfunc(fd int, pd *PtpPinDesc) error {\n\treturn ioctlPtr(fd, PTP_PIN_SETFUNC2, unsafe.Pointer(pd))\n}\n\n// IoctlPtpPeroutRequest configures the periodic output mode of the\n// PTP I/O pins.\nfunc IoctlPtpPeroutRequest(fd int, r *PtpPeroutRequest) error {\n\treturn ioctlPtr(fd, PTP_PEROUT_REQUEST2, unsafe.Pointer(r))\n}\n\n// IoctlPtpExttsRequest configures the external timestamping mode\n// of the PTP I/O pins.\nfunc IoctlPtpExttsRequest(fd int, r *PtpExttsRequest) error {\n\treturn ioctlPtr(fd, PTP_EXTTS_REQUEST2, unsafe.Pointer(r))\n}\n\n// IoctlGetWatchdogInfo fetches information about a watchdog device from the\n// Linux watchdog API. For more information, see:\n// https://www.kernel.org/doc/html/latest/watchdog/watchdog-api.html.\nfunc IoctlGetWatchdogInfo(fd int) (*WatchdogInfo, error) {\n\tvar value WatchdogInfo\n\terr := ioctlPtr(fd, WDIOC_GETSUPPORT, unsafe.Pointer(&value))\n\treturn &value, err\n}\n\n// IoctlWatchdogKeepalive issues a keepalive ioctl to a watchdog device. For\n// more information, see:\n// https://www.kernel.org/doc/html/latest/watchdog/watchdog-api.html.\nfunc IoctlWatchdogKeepalive(fd int) error {\n\t// arg is ignored and not a pointer, so ioctl is fine instead of ioctlPtr.\n\treturn ioctl(fd, WDIOC_KEEPALIVE, 0)\n}\n\n// IoctlFileCloneRange performs an FICLONERANGE ioctl operation to clone the\n// range of data conveyed in value to the file associated with the file\n// descriptor destFd. See the ioctl_ficlonerange(2) man page for details.\nfunc IoctlFileCloneRange(destFd int, value *FileCloneRange) error {\n\treturn ioctlPtr(destFd, FICLONERANGE, unsafe.Pointer(value))\n}\n\n// IoctlFileClone performs an FICLONE ioctl operation to clone the entire file\n// associated with the file description srcFd to the file associated with the\n// file descriptor destFd. See the ioctl_ficlone(2) man page for details.\nfunc IoctlFileClone(destFd, srcFd int) error {\n\treturn ioctl(destFd, FICLONE, uintptr(srcFd))\n}\n\ntype FileDedupeRange struct {\n\tSrc_offset uint64\n\tSrc_length uint64\n\tReserved1  uint16\n\tReserved2  uint32\n\tInfo       []FileDedupeRangeInfo\n}\n\ntype FileDedupeRangeInfo struct {\n\tDest_fd       int64\n\tDest_offset   uint64\n\tBytes_deduped uint64\n\tStatus        int32\n\tReserved      uint32\n}\n\n// IoctlFileDedupeRange performs an FIDEDUPERANGE ioctl operation to share the\n// range of data conveyed in value from the file associated with the file\n// descriptor srcFd to the value.Info destinations. See the\n// ioctl_fideduperange(2) man page for details.\nfunc IoctlFileDedupeRange(srcFd int, value *FileDedupeRange) error {\n\tbuf := make([]byte, SizeofRawFileDedupeRange+\n\t\tlen(value.Info)*SizeofRawFileDedupeRangeInfo)\n\trawrange := (*RawFileDedupeRange)(unsafe.Pointer(&buf[0]))\n\trawrange.Src_offset = value.Src_offset\n\trawrange.Src_length = value.Src_length\n\trawrange.Dest_count = uint16(len(value.Info))\n\trawrange.Reserved1 = value.Reserved1\n\trawrange.Reserved2 = value.Reserved2\n\n\tfor i := range value.Info {\n\t\trawinfo := (*RawFileDedupeRangeInfo)(unsafe.Pointer(\n\t\t\tuintptr(unsafe.Pointer(&buf[0])) + uintptr(SizeofRawFileDedupeRange) +\n\t\t\t\tuintptr(i*SizeofRawFileDedupeRangeInfo)))\n\t\trawinfo.Dest_fd = value.Info[i].Dest_fd\n\t\trawinfo.Dest_offset = value.Info[i].Dest_offset\n\t\trawinfo.Bytes_deduped = value.Info[i].Bytes_deduped\n\t\trawinfo.Status = value.Info[i].Status\n\t\trawinfo.Reserved = value.Info[i].Reserved\n\t}\n\n\terr := ioctlPtr(srcFd, FIDEDUPERANGE, unsafe.Pointer(&buf[0]))\n\n\t// Output\n\tfor i := range value.Info {\n\t\trawinfo := (*RawFileDedupeRangeInfo)(unsafe.Pointer(\n\t\t\tuintptr(unsafe.Pointer(&buf[0])) + uintptr(SizeofRawFileDedupeRange) +\n\t\t\t\tuintptr(i*SizeofRawFileDedupeRangeInfo)))\n\t\tvalue.Info[i].Dest_fd = rawinfo.Dest_fd\n\t\tvalue.Info[i].Dest_offset = rawinfo.Dest_offset\n\t\tvalue.Info[i].Bytes_deduped = rawinfo.Bytes_deduped\n\t\tvalue.Info[i].Status = rawinfo.Status\n\t\tvalue.Info[i].Reserved = rawinfo.Reserved\n\t}\n\n\treturn err\n}\n\nfunc IoctlHIDGetDesc(fd int, value *HIDRawReportDescriptor) error {\n\treturn ioctlPtr(fd, HIDIOCGRDESC, unsafe.Pointer(value))\n}\n\nfunc IoctlHIDGetRawInfo(fd int) (*HIDRawDevInfo, error) {\n\tvar value HIDRawDevInfo\n\terr := ioctlPtr(fd, HIDIOCGRAWINFO, unsafe.Pointer(&value))\n\treturn &value, err\n}\n\nfunc IoctlHIDGetRawName(fd int) (string, error) {\n\tvar value [_HIDIOCGRAWNAME_LEN]byte\n\terr := ioctlPtr(fd, _HIDIOCGRAWNAME, unsafe.Pointer(&value[0]))\n\treturn ByteSliceToString(value[:]), err\n}\n\nfunc IoctlHIDGetRawPhys(fd int) (string, error) {\n\tvar value [_HIDIOCGRAWPHYS_LEN]byte\n\terr := ioctlPtr(fd, _HIDIOCGRAWPHYS, unsafe.Pointer(&value[0]))\n\treturn ByteSliceToString(value[:]), err\n}\n\nfunc IoctlHIDGetRawUniq(fd int) (string, error) {\n\tvar value [_HIDIOCGRAWUNIQ_LEN]byte\n\terr := ioctlPtr(fd, _HIDIOCGRAWUNIQ, unsafe.Pointer(&value[0]))\n\treturn ByteSliceToString(value[:]), err\n}\n\n// IoctlIfreq performs an ioctl using an Ifreq structure for input and/or\n// output. See the netdevice(7) man page for details.\nfunc IoctlIfreq(fd int, req uint, value *Ifreq) error {\n\t// It is possible we will add more fields to *Ifreq itself later to prevent\n\t// misuse, so pass the raw *ifreq directly.\n\treturn ioctlPtr(fd, req, unsafe.Pointer(&value.raw))\n}\n\n// TODO(mdlayher): export if and when IfreqData is exported.\n\n// ioctlIfreqData performs an ioctl using an ifreqData structure for input\n// and/or output. See the netdevice(7) man page for details.\nfunc ioctlIfreqData(fd int, req uint, value *ifreqData) error {\n\t// The memory layout of IfreqData (type-safe) and ifreq (not type-safe) are\n\t// identical so pass *IfreqData directly.\n\treturn ioctlPtr(fd, req, unsafe.Pointer(value))\n}\n\n// IoctlKCMClone attaches a new file descriptor to a multiplexor by cloning an\n// existing KCM socket, returning a structure containing the file descriptor of\n// the new socket.\nfunc IoctlKCMClone(fd int) (*KCMClone, error) {\n\tvar info KCMClone\n\tif err := ioctlPtr(fd, SIOCKCMCLONE, unsafe.Pointer(&info)); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &info, nil\n}\n\n// IoctlKCMAttach attaches a TCP socket and associated BPF program file\n// descriptor to a multiplexor.\nfunc IoctlKCMAttach(fd int, info KCMAttach) error {\n\treturn ioctlPtr(fd, SIOCKCMATTACH, unsafe.Pointer(&info))\n}\n\n// IoctlKCMUnattach unattaches a TCP socket file descriptor from a multiplexor.\nfunc IoctlKCMUnattach(fd int, info KCMUnattach) error {\n\treturn ioctlPtr(fd, SIOCKCMUNATTACH, unsafe.Pointer(&info))\n}\n\n// IoctlLoopGetStatus64 gets the status of the loop device associated with the\n// file descriptor fd using the LOOP_GET_STATUS64 operation.\nfunc IoctlLoopGetStatus64(fd int) (*LoopInfo64, error) {\n\tvar value LoopInfo64\n\tif err := ioctlPtr(fd, LOOP_GET_STATUS64, unsafe.Pointer(&value)); err != nil {\n\t\treturn nil, err\n\t}\n\treturn &value, nil\n}\n\n// IoctlLoopSetStatus64 sets the status of the loop device associated with the\n// file descriptor fd using the LOOP_SET_STATUS64 operation.\nfunc IoctlLoopSetStatus64(fd int, value *LoopInfo64) error {\n\treturn ioctlPtr(fd, LOOP_SET_STATUS64, unsafe.Pointer(value))\n}\n\n// IoctlLoopConfigure configures all loop device parameters in a single step\nfunc IoctlLoopConfigure(fd int, value *LoopConfig) error {\n\treturn ioctlPtr(fd, LOOP_CONFIGURE, unsafe.Pointer(value))\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ioctl_signed.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || solaris\n\npackage unix\n\nimport \"unsafe\"\n\n// ioctl itself should not be exposed directly, but additional get/set\n// functions for specific types are permissible.\n\n// IoctlSetInt performs an ioctl operation which sets an integer value\n// on fd, using the specified request number.\nfunc IoctlSetInt(fd int, req int, value int) error {\n\treturn ioctl(fd, req, uintptr(value))\n}\n\n// IoctlSetPointerInt performs an ioctl operation which sets an\n// integer value on fd, using the specified request number. The ioctl\n// argument is called with a pointer to the integer value, rather than\n// passing the integer value directly.\nfunc IoctlSetPointerInt(fd int, req int, value int) error {\n\tv := int32(value)\n\treturn ioctlPtr(fd, req, unsafe.Pointer(&v))\n}\n\n// IoctlSetString performs an ioctl operation which sets a string value\n// on fd, using the specified request number.\nfunc IoctlSetString(fd int, req int, value string) error {\n\tbs := append([]byte(value), 0)\n\treturn ioctlPtr(fd, req, unsafe.Pointer(&bs[0]))\n}\n\n// IoctlSetWinsize performs an ioctl on fd with a *Winsize argument.\n//\n// To change fd's window size, the req argument should be TIOCSWINSZ.\nfunc IoctlSetWinsize(fd int, req int, value *Winsize) error {\n\t// TODO: if we get the chance, remove the req parameter and\n\t// hardcode TIOCSWINSZ.\n\treturn ioctlPtr(fd, req, unsafe.Pointer(value))\n}\n\n// IoctlSetTermios performs an ioctl on fd with a *Termios.\n//\n// The req value will usually be TCSETA or TIOCSETA.\nfunc IoctlSetTermios(fd int, req int, value *Termios) error {\n\t// TODO: if we get the chance, remove the req parameter.\n\treturn ioctlPtr(fd, req, unsafe.Pointer(value))\n}\n\n// IoctlGetInt performs an ioctl operation which gets an integer value\n// from fd, using the specified request number.\n//\n// A few ioctl requests use the return value as an output parameter;\n// for those, IoctlRetInt should be used instead of this function.\nfunc IoctlGetInt(fd int, req int) (int, error) {\n\tvar value int\n\terr := ioctlPtr(fd, req, unsafe.Pointer(&value))\n\treturn value, err\n}\n\nfunc IoctlGetWinsize(fd int, req int) (*Winsize, error) {\n\tvar value Winsize\n\terr := ioctlPtr(fd, req, unsafe.Pointer(&value))\n\treturn &value, err\n}\n\nfunc IoctlGetTermios(fd int, req int) (*Termios, error) {\n\tvar value Termios\n\terr := ioctlPtr(fd, req, unsafe.Pointer(&value))\n\treturn &value, err\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ioctl_unsigned.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build darwin || dragonfly || freebsd || hurd || linux || netbsd || openbsd\n\npackage unix\n\nimport \"unsafe\"\n\n// ioctl itself should not be exposed directly, but additional get/set\n// functions for specific types are permissible.\n\n// IoctlSetInt performs an ioctl operation which sets an integer value\n// on fd, using the specified request number.\nfunc IoctlSetInt(fd int, req uint, value int) error {\n\treturn ioctl(fd, req, uintptr(value))\n}\n\n// IoctlSetPointerInt performs an ioctl operation which sets an\n// integer value on fd, using the specified request number. The ioctl\n// argument is called with a pointer to the integer value, rather than\n// passing the integer value directly.\nfunc IoctlSetPointerInt(fd int, req uint, value int) error {\n\tv := int32(value)\n\treturn ioctlPtr(fd, req, unsafe.Pointer(&v))\n}\n\n// IoctlSetString performs an ioctl operation which sets a string value\n// on fd, using the specified request number.\nfunc IoctlSetString(fd int, req uint, value string) error {\n\tbs := append([]byte(value), 0)\n\treturn ioctlPtr(fd, req, unsafe.Pointer(&bs[0]))\n}\n\n// IoctlSetWinsize performs an ioctl on fd with a *Winsize argument.\n//\n// To change fd's window size, the req argument should be TIOCSWINSZ.\nfunc IoctlSetWinsize(fd int, req uint, value *Winsize) error {\n\t// TODO: if we get the chance, remove the req parameter and\n\t// hardcode TIOCSWINSZ.\n\treturn ioctlPtr(fd, req, unsafe.Pointer(value))\n}\n\n// IoctlSetTermios performs an ioctl on fd with a *Termios.\n//\n// The req value will usually be TCSETA or TIOCSETA.\nfunc IoctlSetTermios(fd int, req uint, value *Termios) error {\n\t// TODO: if we get the chance, remove the req parameter.\n\treturn ioctlPtr(fd, req, unsafe.Pointer(value))\n}\n\n// IoctlGetInt performs an ioctl operation which gets an integer value\n// from fd, using the specified request number.\n//\n// A few ioctl requests use the return value as an output parameter;\n// for those, IoctlRetInt should be used instead of this function.\nfunc IoctlGetInt(fd int, req uint) (int, error) {\n\tvar value int\n\terr := ioctlPtr(fd, req, unsafe.Pointer(&value))\n\treturn value, err\n}\n\nfunc IoctlGetWinsize(fd int, req uint) (*Winsize, error) {\n\tvar value Winsize\n\terr := ioctlPtr(fd, req, unsafe.Pointer(&value))\n\treturn &value, err\n}\n\nfunc IoctlGetTermios(fd int, req uint) (*Termios, error) {\n\tvar value Termios\n\terr := ioctlPtr(fd, req, unsafe.Pointer(&value))\n\treturn &value, err\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ioctl_zos.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build zos && s390x\n\npackage unix\n\nimport (\n\t\"runtime\"\n\t\"unsafe\"\n)\n\n// ioctl itself should not be exposed directly, but additional get/set\n// functions for specific types are permissible.\n\n// IoctlSetInt performs an ioctl operation which sets an integer value\n// on fd, using the specified request number.\nfunc IoctlSetInt(fd int, req int, value int) error {\n\treturn ioctl(fd, req, uintptr(value))\n}\n\n// IoctlSetWinsize performs an ioctl on fd with a *Winsize argument.\n//\n// To change fd's window size, the req argument should be TIOCSWINSZ.\nfunc IoctlSetWinsize(fd int, req int, value *Winsize) error {\n\t// TODO: if we get the chance, remove the req parameter and\n\t// hardcode TIOCSWINSZ.\n\treturn ioctlPtr(fd, req, unsafe.Pointer(value))\n}\n\n// IoctlSetTermios performs an ioctl on fd with a *Termios.\n//\n// The req value is expected to be TCSETS, TCSETSW, or TCSETSF\nfunc IoctlSetTermios(fd int, req int, value *Termios) error {\n\tif (req != TCSETS) && (req != TCSETSW) && (req != TCSETSF) {\n\t\treturn ENOSYS\n\t}\n\terr := Tcsetattr(fd, int(req), value)\n\truntime.KeepAlive(value)\n\treturn err\n}\n\n// IoctlGetInt performs an ioctl operation which gets an integer value\n// from fd, using the specified request number.\n//\n// A few ioctl requests use the return value as an output parameter;\n// for those, IoctlRetInt should be used instead of this function.\nfunc IoctlGetInt(fd int, req int) (int, error) {\n\tvar value int\n\terr := ioctlPtr(fd, req, unsafe.Pointer(&value))\n\treturn value, err\n}\n\nfunc IoctlGetWinsize(fd int, req int) (*Winsize, error) {\n\tvar value Winsize\n\terr := ioctlPtr(fd, req, unsafe.Pointer(&value))\n\treturn &value, err\n}\n\n// IoctlGetTermios performs an ioctl on fd with a *Termios.\n//\n// The req value is expected to be TCGETS\nfunc IoctlGetTermios(fd int, req int) (*Termios, error) {\n\tvar value Termios\n\tif req != TCGETS {\n\t\treturn &value, ENOSYS\n\t}\n\terr := Tcgetattr(fd, &value)\n\treturn &value, err\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/mkall.sh",
    "content": "#!/usr/bin/env bash\n# Copyright 2009 The Go Authors. All rights reserved.\n# Use of this source code is governed by a BSD-style\n# license that can be found in the LICENSE file.\n\n# This script runs or (given -n) prints suggested commands to generate files for\n# the Architecture/OS specified by the GOARCH and GOOS environment variables.\n# See README.md for more information about how the build system works.\n\nGOOSARCH=\"${GOOS}_${GOARCH}\"\n\n# defaults\nmksyscall=\"go run mksyscall.go\"\nmkerrors=\"./mkerrors.sh\"\nzerrors=\"zerrors_$GOOSARCH.go\"\nmksysctl=\"\"\nzsysctl=\"zsysctl_$GOOSARCH.go\"\nmksysnum=\nmktypes=\nmkasm=\nrun=\"sh\"\ncmd=\"\"\n\ncase \"$1\" in\n-syscalls)\n\tfor i in zsyscall*go\n\tdo\n\t\t# Run the command line that appears in the first line\n\t\t# of the generated file to regenerate it.\n\t\tsed 1q $i | sed 's;^// ;;' | sh > _$i && gofmt < _$i > $i\n\t\trm _$i\n\tdone\n\texit 0\n\t;;\n-n)\n\trun=\"cat\"\n\tcmd=\"echo\"\n\tshift\nesac\n\ncase \"$#\" in\n0)\n\t;;\n*)\n\techo 'usage: mkall.sh [-n]' 1>&2\n\texit 2\nesac\n\nif [[ \"$GOOS\" = \"linux\" ]]; then\n\t# Use the Docker-based build system\n\t# Files generated through docker (use $cmd so you can Ctl-C the build or run)\n\tset -e\n\t$cmd docker build --tag generate:$GOOS $GOOS\n\t$cmd docker run --interactive --tty --volume $(cd -- \"$(dirname -- \"$0\")/..\" && pwd):/build generate:$GOOS\n\texit\nfi\n\nGOOSARCH_in=syscall_$GOOSARCH.go\ncase \"$GOOSARCH\" in\n_* | *_ | _)\n\techo 'undefined $GOOS_$GOARCH:' \"$GOOSARCH\" 1>&2\n\texit 1\n\t;;\naix_ppc)\n\tmkerrors=\"$mkerrors -maix32\"\n\tmksyscall=\"go run mksyscall_aix_ppc.go -aix\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\naix_ppc64)\n\tmkerrors=\"$mkerrors -maix64\"\n\tmksyscall=\"go run mksyscall_aix_ppc64.go -aix\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\ndarwin_amd64)\n\tmkerrors=\"$mkerrors -m64\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\tmkasm=\"go run mkasm.go\"\n\t;;\ndarwin_arm64)\n\tmkerrors=\"$mkerrors -m64\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\tmkasm=\"go run mkasm.go\"\n\t;;\ndragonfly_amd64)\n\tmkerrors=\"$mkerrors -m64\"\n\tmksyscall=\"go run mksyscall.go -dragonfly\"\n\tmksysnum=\"go run mksysnum.go 'https://gitweb.dragonflybsd.org/dragonfly.git/blob_plain/HEAD:/sys/kern/syscalls.master'\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\nfreebsd_386)\n\tmkerrors=\"$mkerrors -m32\"\n\tmksyscall=\"go run mksyscall.go -l32\"\n\tmksysnum=\"go run mksysnum.go 'https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12'\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\nfreebsd_amd64)\n\tmkerrors=\"$mkerrors -m64\"\n\tmksysnum=\"go run mksysnum.go 'https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12'\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\nfreebsd_arm)\n\tmkerrors=\"$mkerrors\"\n\tmksyscall=\"go run mksyscall.go -l32 -arm\"\n\tmksysnum=\"go run mksysnum.go 'https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12'\"\n\t# Let the type of C char be signed for making the bare syscall\n\t# API consistent across platforms.\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char\"\n\t;;\nfreebsd_arm64)\n\tmkerrors=\"$mkerrors -m64\"\n\tmksysnum=\"go run mksysnum.go 'https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12'\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char\"\n\t;;\nfreebsd_riscv64)\n\tmkerrors=\"$mkerrors -m64\"\n\tmksysnum=\"go run mksysnum.go 'https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12'\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char\"\n\t;;\nnetbsd_386)\n\tmkerrors=\"$mkerrors -m32\"\n\tmksyscall=\"go run mksyscall.go -l32 -netbsd\"\n\tmksysnum=\"go run mksysnum.go 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master'\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\nnetbsd_amd64)\n\tmkerrors=\"$mkerrors -m64\"\n\tmksyscall=\"go run mksyscall.go -netbsd\"\n\tmksysnum=\"go run mksysnum.go 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master'\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\nnetbsd_arm)\n\tmkerrors=\"$mkerrors\"\n\tmksyscall=\"go run mksyscall.go -l32 -netbsd -arm\"\n\tmksysnum=\"go run mksysnum.go 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master'\"\n\t# Let the type of C char be signed for making the bare syscall\n\t# API consistent across platforms.\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char\"\n\t;;\nnetbsd_arm64)\n\tmkerrors=\"$mkerrors -m64\"\n\tmksyscall=\"go run mksyscall.go -netbsd\"\n\tmksysnum=\"go run mksysnum.go 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master'\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\nopenbsd_386)\n\tmkasm=\"go run mkasm.go\"\n\tmkerrors=\"$mkerrors -m32\"\n\tmksyscall=\"go run mksyscall.go -l32 -openbsd -libc\"\n\tmksysctl=\"go run mksysctl_openbsd.go\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\nopenbsd_amd64)\n\tmkasm=\"go run mkasm.go\"\n\tmkerrors=\"$mkerrors -m64\"\n\tmksyscall=\"go run mksyscall.go -openbsd -libc\"\n\tmksysctl=\"go run mksysctl_openbsd.go\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\nopenbsd_arm)\n\tmkasm=\"go run mkasm.go\"\n\tmkerrors=\"$mkerrors\"\n\tmksyscall=\"go run mksyscall.go -l32 -openbsd -arm -libc\"\n\tmksysctl=\"go run mksysctl_openbsd.go\"\n\t# Let the type of C char be signed for making the bare syscall\n\t# API consistent across platforms.\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char\"\n\t;;\nopenbsd_arm64)\n\tmkasm=\"go run mkasm.go\"\n\tmkerrors=\"$mkerrors -m64\"\n\tmksyscall=\"go run mksyscall.go -openbsd -libc\"\n\tmksysctl=\"go run mksysctl_openbsd.go\"\n\t# Let the type of C char be signed for making the bare syscall\n\t# API consistent across platforms.\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char\"\n\t;;\nopenbsd_mips64)\n\tmkasm=\"go run mkasm.go\"\n\tmkerrors=\"$mkerrors -m64\"\n\tmksyscall=\"go run mksyscall.go -openbsd -libc\"\n\tmksysctl=\"go run mksysctl_openbsd.go\"\n\t# Let the type of C char be signed for making the bare syscall\n\t# API consistent across platforms.\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char\"\n\t;;\nopenbsd_ppc64)\n\tmkasm=\"go run mkasm.go\"\n\tmkerrors=\"$mkerrors -m64\"\n\tmksyscall=\"go run mksyscall.go -openbsd -libc\"\n\tmksysctl=\"go run mksysctl_openbsd.go\"\n\t# Let the type of C char be signed for making the bare syscall\n\t# API consistent across platforms.\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char\"\n\t;;\nopenbsd_riscv64)\n\tmkasm=\"go run mkasm.go\"\n\tmkerrors=\"$mkerrors -m64\"\n\tmksyscall=\"go run mksyscall.go -openbsd -libc\"\n\tmksysctl=\"go run mksysctl_openbsd.go\"\n\t# Let the type of C char be signed for making the bare syscall\n\t# API consistent across platforms.\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char\"\n\t;;\nsolaris_amd64)\n\tmksyscall=\"go run mksyscall_solaris.go\"\n\tmkerrors=\"$mkerrors -m64\"\n\tmksysnum=\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\nillumos_amd64)\n        mksyscall=\"go run mksyscall_solaris.go\"\n\tmkerrors=\n\tmksysnum=\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\n*)\n\techo 'unrecognized $GOOS_$GOARCH: ' \"$GOOSARCH\" 1>&2\n\texit 1\n\t;;\nesac\n\n(\n\tif [ -n \"$mkerrors\" ]; then echo \"$mkerrors |gofmt >$zerrors\"; fi\n\tcase \"$GOOS\" in\n\t*)\n\t\tsyscall_goos=\"syscall_$GOOS.go\"\n\t\tcase \"$GOOS\" in\n\t\tdarwin | dragonfly | freebsd | netbsd | openbsd)\n\t\t\tsyscall_goos=\"syscall_bsd.go $syscall_goos\"\n\t\t\t;;\n\t\tesac\n\t\tif [ -n \"$mksyscall\" ]; then\n\t\t\tif [ \"$GOOSARCH\" == \"aix_ppc64\" ]; then\n\t\t\t\t# aix/ppc64 script generates files instead of writing to stdin.\n\t\t\t\techo \"$mksyscall -tags $GOOS,$GOARCH $syscall_goos $GOOSARCH_in && gofmt -w zsyscall_$GOOSARCH.go && gofmt -w zsyscall_\"$GOOSARCH\"_gccgo.go && gofmt -w zsyscall_\"$GOOSARCH\"_gc.go \" ;\n\t\t\telif [ \"$GOOS\" == \"illumos\" ]; then\n\t\t\t        # illumos code generation requires a --illumos switch\n\t\t\t        echo \"$mksyscall -illumos -tags illumos,$GOARCH syscall_illumos.go |gofmt > zsyscall_illumos_$GOARCH.go\";\n\t\t\t        # illumos implies solaris, so solaris code generation is also required\n\t\t\t\techo \"$mksyscall -tags solaris,$GOARCH syscall_solaris.go syscall_solaris_$GOARCH.go |gofmt >zsyscall_solaris_$GOARCH.go\";\n\t\t\telse\n\t\t\t\techo \"$mksyscall -tags $GOOS,$GOARCH $syscall_goos $GOOSARCH_in |gofmt >zsyscall_$GOOSARCH.go\";\n\t\t\tfi\n\t\tfi\n\tesac\n\tif [ -n \"$mksysctl\" ]; then echo \"$mksysctl |gofmt >$zsysctl\"; fi\n\tif [ -n \"$mksysnum\" ]; then echo \"$mksysnum |gofmt >zsysnum_$GOOSARCH.go\"; fi\n\tif [ -n \"$mktypes\" ]; then echo \"$mktypes types_$GOOS.go | go run mkpost.go > ztypes_$GOOSARCH.go\"; fi\n\tif [ -n \"$mkasm\" ]; then echo \"$mkasm $GOOS $GOARCH\"; fi\n) | $run\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/mkerrors.sh",
    "content": "#!/usr/bin/env bash\n# Copyright 2009 The Go Authors. All rights reserved.\n# Use of this source code is governed by a BSD-style\n# license that can be found in the LICENSE file.\n\n# Generate Go code listing errors and other #defined constant\n# values (ENAMETOOLONG etc.), by asking the preprocessor\n# about the definitions.\n\nunset LANG\nexport LC_ALL=C\nexport LC_CTYPE=C\n\nif test -z \"$GOARCH\" -o -z \"$GOOS\"; then\n\techo 1>&2 \"GOARCH or GOOS not defined in environment\"\n\texit 1\nfi\n\n# Check that we are using the new build system if we should\nif [[ \"$GOOS\" = \"linux\" ]] && [[ \"$GOLANG_SYS_BUILD\" != \"docker\" ]]; then\n\techo 1>&2 \"In the Docker based build system, mkerrors should not be called directly.\"\n\techo 1>&2 \"See README.md\"\n\texit 1\nfi\n\nif [[ \"$GOOS\" = \"aix\" ]]; then\n\tCC=${CC:-gcc}\nelse\n\tCC=${CC:-cc}\nfi\n\nif [[ \"$GOOS\" = \"solaris\" ]]; then\n\t# Assumes GNU versions of utilities in PATH.\n\texport PATH=/usr/gnu/bin:$PATH\nfi\n\nuname=$(uname)\n\nincludes_AIX='\n#include <net/if.h>\n#include <net/netopt.h>\n#include <netinet/ip_mroute.h>\n#include <sys/protosw.h>\n#include <sys/stropts.h>\n#include <sys/mman.h>\n#include <sys/poll.h>\n#include <sys/select.h>\n#include <sys/termio.h>\n#include <termios.h>\n#include <fcntl.h>\n\n#define AF_LOCAL AF_UNIX\n'\n\nincludes_Darwin='\n#define _DARWIN_C_SOURCE\n#define KERNEL 1\n#define _DARWIN_USE_64_BIT_INODE\n#define __APPLE_USE_RFC_3542\n#include <stdint.h>\n#include <sys/stdio.h>\n#include <sys/attr.h>\n#include <sys/clonefile.h>\n#include <sys/kern_control.h>\n#include <sys/types.h>\n#include <sys/event.h>\n#include <sys/ptrace.h>\n#include <sys/select.h>\n#include <sys/socket.h>\n#include <sys/stat.h>\n#include <sys/un.h>\n#include <sys/sockio.h>\n#include <sys/sys_domain.h>\n#include <sys/sysctl.h>\n#include <sys/mman.h>\n#include <sys/mount.h>\n#include <sys/utsname.h>\n#include <sys/wait.h>\n#include <sys/xattr.h>\n#include <sys/vsock.h>\n#include <net/bpf.h>\n#include <net/if.h>\n#include <net/if_types.h>\n#include <net/route.h>\n#include <netinet/in.h>\n#include <netinet/ip.h>\n#include <termios.h>\n\n// for backwards compatibility because moved TIOCREMOTE to Kernel.framework after MacOSX12.0.sdk.\n#define TIOCREMOTE 0x80047469\n'\n\nincludes_DragonFly='\n#include <sys/types.h>\n#include <sys/event.h>\n#include <sys/select.h>\n#include <sys/socket.h>\n#include <sys/sockio.h>\n#include <sys/stat.h>\n#include <sys/sysctl.h>\n#include <sys/mman.h>\n#include <sys/mount.h>\n#include <sys/wait.h>\n#include <sys/ioctl.h>\n#include <net/bpf.h>\n#include <net/if.h>\n#include <net/if_clone.h>\n#include <net/if_types.h>\n#include <net/route.h>\n#include <netinet/in.h>\n#include <termios.h>\n#include <netinet/ip.h>\n#include <net/ip_mroute/ip_mroute.h>\n'\n\nincludes_FreeBSD='\n#include <sys/capsicum.h>\n#include <sys/param.h>\n#include <sys/types.h>\n#include <sys/disk.h>\n#include <sys/event.h>\n#include <sys/sched.h>\n#include <sys/select.h>\n#include <sys/socket.h>\n#include <sys/un.h>\n#include <sys/sockio.h>\n#include <sys/stat.h>\n#include <sys/sysctl.h>\n#include <sys/mman.h>\n#include <sys/mount.h>\n#include <sys/wait.h>\n#include <sys/ioctl.h>\n#include <sys/ptrace.h>\n#include <net/bpf.h>\n#include <net/if.h>\n#include <net/if_types.h>\n#include <net/route.h>\n#include <netinet/in.h>\n#include <termios.h>\n#include <netinet/ip.h>\n#include <netinet/ip_mroute.h>\n#include <sys/extattr.h>\n\n#if __FreeBSD__ >= 10\n#define IFT_CARP\t0xf8\t// IFT_CARP is deprecated in FreeBSD 10\n#undef SIOCAIFADDR\n#define SIOCAIFADDR\t_IOW(105, 26, struct oifaliasreq)\t// ifaliasreq contains if_data\n#undef SIOCSIFPHYADDR\n#define SIOCSIFPHYADDR\t_IOW(105, 70, struct oifaliasreq)\t// ifaliasreq contains if_data\n#endif\n'\n\nincludes_Linux='\n#define _LARGEFILE_SOURCE\n#define _LARGEFILE64_SOURCE\n#ifndef __LP64__\n#define _FILE_OFFSET_BITS 64\n#endif\n#define _GNU_SOURCE\n\n// See the description in unix/linux/types.go\n#if defined(__ARM_EABI__) || \\\n\t(defined(__mips__) && (_MIPS_SIM == _ABIO32)) || \\\n\t(defined(__powerpc__) && (!defined(__powerpc64__)))\n# ifdef   _TIME_BITS\n#  undef  _TIME_BITS\n# endif\n# define  _TIME_BITS 32\n#endif\n\n// <sys/ioctl.h> is broken on powerpc64, as it fails to include definitions of\n// these structures. We just include them copied from <bits/termios.h>.\n#if defined(__powerpc__)\nstruct sgttyb {\n        char    sg_ispeed;\n        char    sg_ospeed;\n        char    sg_erase;\n        char    sg_kill;\n        short   sg_flags;\n};\n\nstruct tchars {\n        char    t_intrc;\n        char    t_quitc;\n        char    t_startc;\n        char    t_stopc;\n        char    t_eofc;\n        char    t_brkc;\n};\n\nstruct ltchars {\n        char    t_suspc;\n        char    t_dsuspc;\n        char    t_rprntc;\n        char    t_flushc;\n        char    t_werasc;\n        char    t_lnextc;\n};\n#endif\n\n#include <bits/sockaddr.h>\n#include <sys/epoll.h>\n#include <sys/eventfd.h>\n#include <sys/inotify.h>\n#include <sys/ioctl.h>\n#include <sys/mman.h>\n#include <sys/mount.h>\n#include <sys/prctl.h>\n#include <sys/stat.h>\n#include <sys/types.h>\n#include <sys/time.h>\n#include <sys/select.h>\n#include <sys/signalfd.h>\n#include <sys/socket.h>\n#include <sys/timerfd.h>\n#include <sys/uio.h>\n#include <sys/xattr.h>\n#include <netinet/udp.h>\n#include <linux/audit.h>\n#include <linux/bpf.h>\n#include <linux/can.h>\n#include <linux/can/error.h>\n#include <linux/can/netlink.h>\n#include <linux/can/raw.h>\n#include <linux/capability.h>\n#include <linux/cryptouser.h>\n#include <linux/devlink.h>\n#include <linux/dm-ioctl.h>\n#include <linux/elf.h>\n#include <linux/errqueue.h>\n#include <linux/ethtool_netlink.h>\n#include <linux/falloc.h>\n#include <linux/fanotify.h>\n#include <linux/fib_rules.h>\n#include <linux/filter.h>\n#include <linux/fs.h>\n#include <linux/fscrypt.h>\n#include <linux/fsverity.h>\n#include <linux/genetlink.h>\n#include <linux/hdreg.h>\n#include <linux/hidraw.h>\n#include <linux/if.h>\n#include <linux/if_addr.h>\n#include <linux/if_alg.h>\n#include <linux/if_arp.h>\n#include <linux/if_ether.h>\n#include <linux/if_ppp.h>\n#include <linux/if_tun.h>\n#include <linux/if_packet.h>\n#include <linux/if_xdp.h>\n#include <linux/input.h>\n#include <linux/kcm.h>\n#include <linux/kexec.h>\n#include <linux/keyctl.h>\n#include <linux/landlock.h>\n#include <linux/loop.h>\n#include <linux/lwtunnel.h>\n#include <linux/magic.h>\n#include <linux/mei.h>\n#include <linux/memfd.h>\n#include <linux/module.h>\n#include <linux/mount.h>\n#include <linux/netfilter/nfnetlink.h>\n#include <linux/netfilter/nf_tables.h>\n#include <linux/netlink.h>\n#include <linux/net_namespace.h>\n#include <linux/nfc.h>\n#include <linux/nsfs.h>\n#include <linux/perf_event.h>\n#include <linux/pps.h>\n#include <linux/ptp_clock.h>\n#include <linux/ptrace.h>\n#include <linux/random.h>\n#include <linux/reboot.h>\n#include <linux/rtc.h>\n#include <linux/rtnetlink.h>\n#include <linux/sched.h>\n#include <linux/seccomp.h>\n#include <linux/serial.h>\n#include <linux/sock_diag.h>\n#include <linux/sockios.h>\n#include <linux/taskstats.h>\n#include <linux/tipc.h>\n#include <linux/vm_sockets.h>\n#include <linux/wait.h>\n#include <linux/watchdog.h>\n#include <linux/wireguard.h>\n\n#include <mtd/ubi-user.h>\n#include <mtd/mtd-user.h>\n#include <net/route.h>\n\n#if defined(__sparc__)\n// On sparc{,64}, the kernel defines struct termios2 itself which clashes with the\n// definition in glibc. As only the error constants are needed here, include the\n// generic termibits.h (which is included by termbits.h on sparc).\n#include <asm-generic/termbits.h>\n#else\n#include <asm/termbits.h>\n#endif\n\n#ifndef PTRACE_GETREGS\n#define PTRACE_GETREGS\t0xc\n#endif\n\n#ifndef PTRACE_SETREGS\n#define PTRACE_SETREGS\t0xd\n#endif\n\n#ifdef SOL_BLUETOOTH\n// SPARC includes this in /usr/include/sparc64-linux-gnu/bits/socket.h\n// but it is already in bluetooth_linux.go\n#undef SOL_BLUETOOTH\n#endif\n\n// Certain constants are missing from the fs/crypto UAPI\n#define FS_KEY_DESC_PREFIX              \"fscrypt:\"\n#define FS_KEY_DESC_PREFIX_SIZE         8\n#define FS_MAX_KEY_SIZE                 64\n\n// The code generator produces -0x1 for (~0), but an unsigned value is necessary\n// for the tipc_subscr timeout __u32 field.\n#undef TIPC_WAIT_FOREVER\n#define TIPC_WAIT_FOREVER 0xffffffff\n\n// Copied from linux/netfilter/nf_nat.h\n// Including linux/netfilter/nf_nat.h here causes conflicts between linux/in.h\n// and netinet/in.h.\n#define NF_NAT_RANGE_MAP_IPS\t\t\t(1 << 0)\n#define NF_NAT_RANGE_PROTO_SPECIFIED\t\t(1 << 1)\n#define NF_NAT_RANGE_PROTO_RANDOM\t\t(1 << 2)\n#define NF_NAT_RANGE_PERSISTENT\t\t\t(1 << 3)\n#define NF_NAT_RANGE_PROTO_RANDOM_FULLY\t\t(1 << 4)\n#define NF_NAT_RANGE_PROTO_OFFSET\t\t(1 << 5)\n#define NF_NAT_RANGE_NETMAP\t\t\t(1 << 6)\n#define NF_NAT_RANGE_PROTO_RANDOM_ALL\t\t\\\n\t(NF_NAT_RANGE_PROTO_RANDOM | NF_NAT_RANGE_PROTO_RANDOM_FULLY)\n#define NF_NAT_RANGE_MASK\t\t\t\t\t\\\n\t(NF_NAT_RANGE_MAP_IPS | NF_NAT_RANGE_PROTO_SPECIFIED |\t\\\n\t NF_NAT_RANGE_PROTO_RANDOM | NF_NAT_RANGE_PERSISTENT |\t\\\n\t NF_NAT_RANGE_PROTO_RANDOM_FULLY | NF_NAT_RANGE_PROTO_OFFSET | \\\n\t NF_NAT_RANGE_NETMAP)\n\n// Copied from linux/hid.h.\n// Keep in sync with the size of the referenced fields.\n#define _HIDIOCGRAWNAME_LEN\t128 // sizeof_field(struct hid_device, name)\n#define _HIDIOCGRAWPHYS_LEN\t64  // sizeof_field(struct hid_device, phys)\n#define _HIDIOCGRAWUNIQ_LEN\t64  // sizeof_field(struct hid_device, uniq)\n\n#define _HIDIOCGRAWNAME\t\tHIDIOCGRAWNAME(_HIDIOCGRAWNAME_LEN)\n#define _HIDIOCGRAWPHYS\t\tHIDIOCGRAWPHYS(_HIDIOCGRAWPHYS_LEN)\n#define _HIDIOCGRAWUNIQ\t\tHIDIOCGRAWUNIQ(_HIDIOCGRAWUNIQ_LEN)\n\n// Renamed in v6.16, commit c6d732c38f93 (\"net: ethtool: remove duplicate defines for family info\")\n#define ETHTOOL_FAMILY_NAME\tETHTOOL_GENL_NAME\n#define ETHTOOL_FAMILY_VERSION\tETHTOOL_GENL_VERSION\n'\n\nincludes_NetBSD='\n#include <sys/types.h>\n#include <sys/param.h>\n#include <sys/event.h>\n#include <sys/extattr.h>\n#include <sys/mman.h>\n#include <sys/mount.h>\n#include <sys/sched.h>\n#include <sys/select.h>\n#include <sys/socket.h>\n#include <sys/sockio.h>\n#include <sys/sysctl.h>\n#include <sys/termios.h>\n#include <sys/ttycom.h>\n#include <sys/wait.h>\n#include <net/bpf.h>\n#include <net/if.h>\n#include <net/if_types.h>\n#include <net/route.h>\n#include <netinet/in.h>\n#include <netinet/in_systm.h>\n#include <netinet/ip.h>\n#include <netinet/ip_mroute.h>\n#include <netinet/if_ether.h>\n\n// Needed since <sys/param.h> refers to it...\n#define schedppq 1\n'\n\nincludes_OpenBSD='\n#include <sys/types.h>\n#include <sys/param.h>\n#include <sys/event.h>\n#include <sys/mman.h>\n#include <sys/mount.h>\n#include <sys/select.h>\n#include <sys/sched.h>\n#include <sys/socket.h>\n#include <sys/sockio.h>\n#include <sys/stat.h>\n#include <sys/sysctl.h>\n#include <sys/termios.h>\n#include <sys/ttycom.h>\n#include <sys/unistd.h>\n#include <sys/wait.h>\n#include <net/bpf.h>\n#include <net/if.h>\n#include <net/if_types.h>\n#include <net/if_var.h>\n#include <net/route.h>\n#include <netinet/in.h>\n#include <netinet/in_systm.h>\n#include <netinet/ip.h>\n#include <netinet/ip_mroute.h>\n#include <netinet/if_ether.h>\n#include <net/if_bridge.h>\n\n// We keep some constants not supported in OpenBSD 5.5 and beyond for\n// the promise of compatibility.\n#define EMUL_ENABLED\t\t0x1\n#define EMUL_NATIVE\t\t0x2\n#define IPV6_FAITH\t\t0x1d\n#define IPV6_OPTIONS\t\t0x1\n#define IPV6_RTHDR_STRICT\t0x1\n#define IPV6_SOCKOPT_RESERVED1\t0x3\n#define SIOCGIFGENERIC\t\t0xc020693a\n#define SIOCSIFGENERIC\t\t0x80206939\n#define WALTSIG\t\t\t0x4\n'\n\nincludes_SunOS='\n#include <limits.h>\n#include <sys/types.h>\n#include <sys/select.h>\n#include <sys/socket.h>\n#include <sys/sockio.h>\n#include <sys/stat.h>\n#include <sys/stream.h>\n#include <sys/mman.h>\n#include <sys/wait.h>\n#include <sys/ioctl.h>\n#include <sys/mkdev.h>\n#include <net/bpf.h>\n#include <net/if.h>\n#include <net/if_arp.h>\n#include <net/if_types.h>\n#include <net/route.h>\n#include <netinet/icmp6.h>\n#include <netinet/in.h>\n#include <netinet/ip.h>\n#include <netinet/ip_mroute.h>\n#include <termios.h>\n'\n\n\nincludes='\n#include <sys/types.h>\n#include <sys/file.h>\n#include <fcntl.h>\n#include <dirent.h>\n#include <sys/socket.h>\n#include <netinet/in.h>\n#include <netinet/ip.h>\n#include <netinet/ip6.h>\n#include <netinet/tcp.h>\n#include <errno.h>\n#include <sys/signal.h>\n#include <signal.h>\n#include <sys/resource.h>\n#include <time.h>\n'\nccflags=\"$@\"\n\n# Write go tool cgo -godefs input.\n(\n\techo package unix\n\techo\n\techo '/*'\n\tindirect=\"includes_$(uname)\"\n\techo \"${!indirect} $includes\"\n\techo '*/'\n\techo 'import \"C\"'\n\techo 'import \"syscall\"'\n\techo\n\techo 'const ('\n\n\t# The gcc command line prints all the #defines\n\t# it encounters while processing the input\n\techo \"${!indirect} $includes\" | $CC -x c - -E -dM $ccflags |\n\tawk '\n\t\t$1 != \"#define\" || $2 ~ /\\(/ || $3 == \"\" {next}\n\n\t\t$2 ~ /^E([ABCD]X|[BIS]P|[SD]I|S|FL)$/ {next}  # 386 registers\n\t\t$2 ~ /^(SIGEV_|SIGSTKSZ|SIGRT(MIN|MAX))/ {next}\n\t\t$2 ~ /^(SCM_SRCRT)$/ {next}\n\t\t$2 ~ /^(MAP_FAILED)$/ {next}\n\t\t$2 ~ /^ELF_.*$/ {next}# <asm/elf.h> contains ELF_ARCH, etc.\n\n\t\t$2 ~ /^EXTATTR_NAMESPACE_NAMES/ ||\n\t\t$2 ~ /^EXTATTR_NAMESPACE_[A-Z]+_STRING/ {next}\n\n\t\t$2 !~ /^ECCAPBITS/ &&\n\t\t$2 !~ /^ETH_/ &&\n\t\t$2 !~ /^EPROC_/ &&\n\t\t$2 !~ /^EQUIV_/ &&\n\t\t$2 !~ /^EXPR_/ &&\n\t\t$2 !~ /^EVIOC/ &&\n\t\t$2 ~ /^E[A-Z0-9_]+$/ ||\n\t\t$2 ~ /^B[0-9_]+$/ ||\n\t\t$2 ~ /^(OLD|NEW)DEV$/ ||\n\t\t$2 == \"BOTHER\" ||\n\t\t$2 ~ /^CI?BAUD(EX)?$/ ||\n\t\t$2 == \"IBSHIFT\" ||\n\t\t$2 ~ /^V[A-Z0-9]+$/ ||\n\t\t$2 ~ /^CS[A-Z0-9]/ ||\n\t\t$2 ~ /^I(SIG|CANON|CRNL|UCLC|EXTEN|MAXBEL|STRIP|UTF8)$/ ||\n\t\t$2 ~ /^IGN/ ||\n\t\t$2 ~ /^IX(ON|ANY|OFF)$/ ||\n\t\t$2 ~ /^IN(LCR|PCK)$/ ||\n\t\t$2 !~ \"X86_CR3_PCID_NOFLUSH\" &&\n\t\t$2 ~ /(^FLU?SH)|(FLU?SH$)/ ||\n\t\t$2 ~ /^C(LOCAL|READ|MSPAR|RTSCTS)$/ ||\n\t\t$2 == \"BRKINT\" ||\n\t\t$2 == \"HUPCL\" ||\n\t\t$2 == \"PENDIN\" ||\n\t\t$2 == \"TOSTOP\" ||\n\t\t$2 == \"XCASE\" ||\n\t\t$2 == \"ALTWERASE\" ||\n\t\t$2 == \"NOKERNINFO\" ||\n\t\t$2 == \"NFDBITS\" ||\n\t\t$2 ~ /^PAR/ ||\n\t\t$2 ~ /^SIG[^_]/ ||\n\t\t$2 ~ /^O[CNPFPL][A-Z]+[^_][A-Z]+$/ ||\n\t\t$2 ~ /^(NL|CR|TAB|BS|VT|FF)DLY$/ ||\n\t\t$2 ~ /^(NL|CR|TAB|BS|VT|FF)[0-9]$/ ||\n\t\t$2 ~ /^(DT|EI|ELF|EV|NN|NT|PF|SHF|SHN|SHT|STB|STT|VER)_/ ||\n\t\t$2 ~ /^O?XTABS$/ ||\n\t\t$2 ~ /^TC[IO](ON|OFF)$/ ||\n\t\t$2 ~ /^IN_/ ||\n\t\t$2 ~ /^KCM/ ||\n\t\t$2 ~ /^LANDLOCK_/ ||\n\t\t$2 ~ /^LOCK_(SH|EX|NB|UN)$/ ||\n\t\t$2 ~ /^LO_(KEY|NAME)_SIZE$/ ||\n\t\t$2 ~ /^LOOP_(CLR|CTL|GET|SET)_/ ||\n\t\t$2 == \"LOOP_CONFIGURE\" ||\n\t\t$2 ~ /^(AF|SOCK|SO|SOL|IPPROTO|IP|IPV6|TCP|MCAST|EVFILT|NOTE|SHUT|PROT|MAP|MREMAP|MFD|T?PACKET|MSG|SCM|MCL|DT|MADV|PR|LOCAL|TCPOPT|UDP)_/ ||\n\t\t$2 ~ /^NFC_(GENL|PROTO|COMM|RF|SE|DIRECTION|LLCP|SOCKPROTO)_/ ||\n\t\t$2 ~ /^NFC_.*_(MAX)?SIZE$/ ||\n\t\t$2 ~ /^PTP_/ ||\n\t\t$2 ~ /^RAW_PAYLOAD_/ ||\n\t\t$2 ~ /^[US]F_/ ||\n\t\t$2 ~ /^TP_STATUS_/ ||\n\t\t$2 ~ /^FALLOC_/ ||\n\t\t$2 ~ /^ICMPV?6?_(FILTER|SEC)/ ||\n\t\t$2 == \"SOMAXCONN\" ||\n\t\t$2 == \"NAME_MAX\" ||\n\t\t$2 == \"IFNAMSIZ\" ||\n\t\t$2 ~ /^CTL_(HW|KERN|MAXNAME|NET|QUERY)$/ ||\n\t\t$2 ~ /^KERN_(HOSTNAME|OS(RELEASE|TYPE)|VERSION)$/ ||\n\t\t$2 ~ /^HW_MACHINE$/ ||\n\t\t$2 ~ /^SYSCTL_VERS/ ||\n\t\t$2 !~ \"MNT_BITS\" &&\n\t\t$2 ~ /^(MS|MNT|MOUNT|UMOUNT)_/ ||\n\t\t$2 ~ /^NS_GET_/ ||\n\t\t$2 ~ /^TUN(SET|GET|ATTACH|DETACH)/ ||\n\t\t$2 ~ /^(O|F|[ES]?FD|NAME|S|PTRACE|PT|PIOD|TFD)_/ ||\n\t\t$2 ~ /^KEXEC_/ ||\n\t\t$2 ~ /^LINUX_REBOOT_CMD_/ ||\n\t\t$2 ~ /^LINUX_REBOOT_MAGIC[12]$/ ||\n\t\t$2 ~ /^MODULE_INIT_/ ||\n\t\t$2 !~ \"NLA_TYPE_MASK\" &&\n\t\t$2 !~ /^RTC_VL_(ACCURACY|BACKUP|DATA)/ &&\n\t\t$2 ~ /^(NETLINK|NLM|NLMSG|NLA|IFA|IFAN|RT|RTC|RTCF|RTN|RTPROT|RTNH|ARPHRD|ETH_P|NETNSA)_/ ||\n\t\t$2 ~ /^SOCK_|SK_DIAG_|SKNLGRP_$/ ||\n\t\t$2 ~ /^(CONNECT|SAE)_/ ||\n\t\t$2 ~ /^FIORDCHK$/ ||\n\t\t$2 ~ /^SIOC/ ||\n\t\t$2 ~ /^TIOC/ ||\n\t\t$2 ~ /^TCGET/ ||\n\t\t$2 ~ /^TCSET/ ||\n\t\t$2 ~ /^TC(FLSH|SBRKP?|XONC)$/ ||\n\t\t$2 !~ \"RTF_BITS\" &&\n\t\t$2 ~ /^(IFF|IFT|NET_RT|RTM(GRP)?|RTF|RTV|RTA|RTAX)_/ ||\n\t\t$2 ~ /^BIOC/ ||\n\t\t$2 ~ /^DIOC/ ||\n\t\t$2 ~ /^RUSAGE_(SELF|CHILDREN|THREAD)/ ||\n\t\t$2 ~ /^RLIMIT_(AS|CORE|CPU|DATA|FSIZE|LOCKS|MEMLOCK|MSGQUEUE|NICE|NOFILE|NPROC|RSS|RTPRIO|RTTIME|SIGPENDING|STACK)|RLIM_INFINITY/ ||\n\t\t$2 ~ /^PRIO_(PROCESS|PGRP|USER)/ ||\n\t\t$2 ~ /^CLONE_[A-Z_]+/ ||\n\t\t$2 !~ /^(BPF_TIMEVAL|BPF_FIB_LOOKUP_[A-Z]+|BPF_F_LINK)$/ &&\n\t\t$2 ~ /^(BPF|DLT)_/ ||\n\t\t$2 ~ /^AUDIT_/ ||\n\t\t$2 ~ /^(CLOCK|TIMER)_/ ||\n\t\t$2 ~ /^CAN_/ ||\n\t\t$2 ~ /^CAP_/ ||\n\t\t$2 ~ /^CP_/ ||\n\t\t$2 ~ /^CPUSTATES$/ ||\n\t\t$2 ~ /^CTLIOCGINFO$/ ||\n\t\t$2 ~ /^ALG_/ ||\n\t\t$2 ~ /^FI(CLONE|DEDUPERANGE)/ ||\n\t\t$2 ~ /^FS_(POLICY_FLAGS|KEY_DESC|ENCRYPTION_MODE|[A-Z0-9_]+_KEY_SIZE)/ ||\n\t\t$2 ~ /^FS_IOC_.*(ENCRYPTION|VERITY|[GS]ETFLAGS)/ ||\n\t\t$2 ~ /^FS_VERITY_/ ||\n\t\t$2 ~ /^FSCRYPT_/ ||\n\t\t$2 ~ /^DM_/ ||\n\t\t$2 ~ /^GRND_/ ||\n\t\t$2 ~ /^RND/ ||\n\t\t$2 ~ /^KEY_(SPEC|REQKEY_DEFL)_/ ||\n\t\t$2 ~ /^KEYCTL_/ ||\n\t\t$2 ~ /^PERF_/ ||\n\t\t$2 ~ /^SECCOMP_/ ||\n\t\t$2 ~ /^SEEK_/ ||\n\t\t$2 ~ /^SCHED_/ ||\n\t\t$2 ~ /^SPLICE_/ ||\n\t\t$2 ~ /^SYNC_FILE_RANGE_/ ||\n\t\t$2 !~ /IOC_MAGIC/ &&\n\t\t$2 ~ /^[A-Z][A-Z0-9_]+_MAGIC2?$/ ||\n\t\t$2 ~ /^(VM|VMADDR)_/ ||\n\t\t$2 ~ /^(IOCTL_VM_SOCKETS_|IOCTL_MEI_)/ ||\n\t\t$2 ~ /^(TASKSTATS|TS)_/ ||\n\t\t$2 ~ /^CGROUPSTATS_/ ||\n\t\t$2 ~ /^GENL_/ ||\n\t\t$2 ~ /^STATX_/ ||\n\t\t$2 ~ /^RENAME/ ||\n\t\t$2 ~ /^UBI_IOC[A-Z]/ ||\n\t\t$2 ~ /^UTIME_/ ||\n\t\t$2 ~ /^XATTR_(CREATE|REPLACE|NO(DEFAULT|FOLLOW|SECURITY)|SHOWCOMPRESSION)/ ||\n\t\t$2 ~ /^ATTR_(BIT_MAP_COUNT|(CMN|VOL|FILE)_)/ ||\n\t\t$2 ~ /^FSOPT_/ ||\n\t\t$2 ~ /^WDIO[CFS]_/ ||\n\t\t$2 ~ /^NFN/ ||\n\t\t$2 !~ /^NFT_META_IIFTYPE/ &&\n\t\t$2 ~ /^NFT_/ ||\n\t\t$2 ~ /^NF_NAT_/ ||\n\t\t$2 ~ /^XDP_/ ||\n\t\t$2 ~ /^RWF_/ ||\n\t\t$2 ~ /^(HDIO|WIN|SMART)_/ ||\n\t\t$2 ~ /^CRYPTO_/ ||\n\t\t$2 ~ /^TIPC_/ ||\n\t\t$2 !~  \"DEVLINK_RELOAD_LIMITS_VALID_MASK\" &&\n\t\t$2 ~ /^DEVLINK_/ ||\n\t\t$2 ~ /^ETHTOOL_/ ||\n\t\t$2 ~ /^LWTUNNEL_IP/ ||\n\t\t$2 ~ /^ITIMER_/ ||\n\t\t$2 !~ \"WMESGLEN\" &&\n\t\t$2 ~ /^W[A-Z0-9]+$/ ||\n\t\t$2 ~ /^P_/ ||\n\t\t$2 ~/^PPPIOC/ ||\n\t\t$2 ~ /^FAN_|FANOTIFY_/ ||\n\t\t$2 == \"HID_MAX_DESCRIPTOR_SIZE\" ||\n\t\t$2 ~ /^_?HIDIOC/ ||\n\t\t$2 ~ /^BUS_(USB|HIL|BLUETOOTH|VIRTUAL)$/ ||\n\t\t$2 ~ /^MTD/ ||\n\t\t$2 ~ /^OTP/ ||\n\t\t$2 ~ /^MEM/ ||\n\t\t$2 ~ /^WG/ ||\n\t\t$2 ~ /^FIB_RULE_/ ||\n\t\t$2 ~ /^BLK[A-Z]*(GET$|SET$|BUF$|PART$|SIZE|IOMIN$|IOOPT$|ALIGNOFF$|DISCARD|ROTATIONAL$|ZEROOUT$|GETDISKSEQ$)/ {printf(\"\\t%s = C.%s\\n\", $2, $2)}\n\t\t$2 ~ /^__WCOREFLAG$/ {next}\n\t\t$2 ~ /^__W[A-Z0-9]+$/ {printf(\"\\t%s = C.%s\\n\", substr($2,3), $2)}\n\n\t\t{next}\n\t' | sort\n\n\techo ')'\n) >_const.go\n\n# Pull out the error names for later.\nerrors=$(\n\techo '#include <errno.h>' | $CC -x c - -E -dM $ccflags |\n\tawk '$1==\"#define\" && $2 ~ /^E[A-Z0-9_]+$/ { print $2 }' |\n\tsort\n)\n\n# Pull out the signal names for later.\nsignals=$(\n\techo '#include <signal.h>' | $CC -x c - -E -dM $ccflags |\n\tawk '$1==\"#define\" && $2 ~ /^SIG[A-Z0-9]+$/ { print $2 }' |\n\tgrep -E -v '(SIGSTKSIZE|SIGSTKSZ|SIGRT|SIGMAX64)' |\n\tsort\n)\n\n# Again, writing regexps to a file.\necho '#include <errno.h>' | $CC -x c - -E -dM $ccflags |\n\tawk '$1==\"#define\" && $2 ~ /^E[A-Z0-9_]+$/ { print \"^\\t\" $2 \"[ \\t]*=\" }' |\n\tsort >_error.grep\necho '#include <signal.h>' | $CC -x c - -E -dM $ccflags |\n\tawk '$1==\"#define\" && $2 ~ /^SIG[A-Z0-9]+$/ { print \"^\\t\" $2 \"[ \\t]*=\" }' |\n\tgrep -E -v '(SIGSTKSIZE|SIGSTKSZ|SIGRT|SIGMAX64)' |\n\tsort >_signal.grep\n\necho '// mkerrors.sh' \"$@\"\necho '// Code generated by the command above; see README.md. DO NOT EDIT.'\necho\necho \"//go:build ${GOARCH} && ${GOOS}\"\necho\ngo tool cgo -godefs -- \"$@\" _const.go >_error.out\ncat _error.out | grep -vf _error.grep | grep -vf _signal.grep\necho\necho '// Errors'\necho 'const ('\ncat _error.out | grep -f _error.grep | sed 's/=\\(.*\\)/= syscall.Errno(\\1)/'\necho ')'\n\necho\necho '// Signals'\necho 'const ('\ncat _error.out | grep -f _signal.grep | sed 's/=\\(.*\\)/= syscall.Signal(\\1)/'\necho ')'\n\n# Run C program to print error and syscall strings.\n(\n\techo -E \"\n#include <stdio.h>\n#include <stdlib.h>\n#include <errno.h>\n#include <ctype.h>\n#include <string.h>\n#include <signal.h>\n\n#define nelem(x) (sizeof(x)/sizeof((x)[0]))\n\nenum { A = 'A', Z = 'Z', a = 'a', z = 'z' }; // avoid need for single quotes below\n\nstruct tuple {\n\tint num;\n\tconst char *name;\n};\n\nstruct tuple errors[] = {\n\"\n\tfor i in $errors\n\tdo\n\t\techo -E '\t{'$i', \"'$i'\" },'\n\tdone\n\n\techo -E \"\n};\n\nstruct tuple signals[] = {\n\"\n\tfor i in $signals\n\tdo\n\t\techo -E '\t{'$i', \"'$i'\" },'\n\tdone\n\n\t# Use -E because on some systems bash builtin interprets \\n itself.\n\techo -E '\n};\n\nstatic int\ntuplecmp(const void *a, const void *b)\n{\n\treturn ((struct tuple *)a)->num - ((struct tuple *)b)->num;\n}\n\nint\nmain(void)\n{\n\tint i, e;\n\tchar buf[1024], *p;\n\n\tprintf(\"\\n\\n// Error table\\n\");\n\tprintf(\"var errorList = [...]struct {\\n\");\n\tprintf(\"\\tnum  syscall.Errno\\n\");\n\tprintf(\"\\tname string\\n\");\n\tprintf(\"\\tdesc string\\n\");\n\tprintf(\"} {\\n\");\n\tqsort(errors, nelem(errors), sizeof errors[0], tuplecmp);\n\tfor(i=0; i<nelem(errors); i++) {\n\t\te = errors[i].num;\n\t\tif(i > 0 && errors[i-1].num == e)\n\t\t\tcontinue;\n\t\tstrncpy(buf, strerror(e), sizeof(buf) - 1);\n\t\tbuf[sizeof(buf) - 1] = '\\0';\n\t\t// lowercase first letter: Bad -> bad, but STREAM -> STREAM.\n\t\tif(A <= buf[0] && buf[0] <= Z && a <= buf[1] && buf[1] <= z)\n\t\t\tbuf[0] += a - A;\n\t\tprintf(\"\\t{ %d, \\\"%s\\\", \\\"%s\\\" },\\n\", e, errors[i].name, buf);\n\t}\n\tprintf(\"}\\n\\n\");\n\n\tprintf(\"\\n\\n// Signal table\\n\");\n\tprintf(\"var signalList = [...]struct {\\n\");\n\tprintf(\"\\tnum  syscall.Signal\\n\");\n\tprintf(\"\\tname string\\n\");\n\tprintf(\"\\tdesc string\\n\");\n\tprintf(\"} {\\n\");\n\tqsort(signals, nelem(signals), sizeof signals[0], tuplecmp);\n\tfor(i=0; i<nelem(signals); i++) {\n\t\te = signals[i].num;\n\t\tif(i > 0 && signals[i-1].num == e)\n\t\t\tcontinue;\n\t\tstrncpy(buf, strsignal(e), sizeof(buf) - 1);\n\t\tbuf[sizeof(buf) - 1] = '\\0';\n\t\t// lowercase first letter: Bad -> bad, but STREAM -> STREAM.\n\t\tif(A <= buf[0] && buf[0] <= Z && a <= buf[1] && buf[1] <= z)\n\t\t\tbuf[0] += a - A;\n\t\t// cut trailing : number.\n\t\tp = strrchr(buf, \":\"[0]);\n\t\tif(p)\n\t\t\t*p = '\\0';\n\t\tprintf(\"\\t{ %d, \\\"%s\\\", \\\"%s\\\" },\\n\", e, signals[i].name, buf);\n\t}\n\tprintf(\"}\\n\\n\");\n\n\treturn 0;\n}\n\n'\n) >_errors.c\n\n$CC $ccflags -o _errors _errors.c && $GORUN ./_errors && rm -f _errors.c _errors _const.go _error.grep _signal.grep _error.out\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/mmap_nomremap.go",
    "content": "// Copyright 2023 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || darwin || dragonfly || freebsd || openbsd || solaris || zos\n\npackage unix\n\nvar mapper = &mmapper{\n\tactive: make(map[*byte][]byte),\n\tmmap:   mmap,\n\tmunmap: munmap,\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/mremap.go",
    "content": "// Copyright 2023 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux || netbsd\n\npackage unix\n\nimport \"unsafe\"\n\ntype mremapMmapper struct {\n\tmmapper\n\tmremap func(oldaddr uintptr, oldlength uintptr, newlength uintptr, flags int, newaddr uintptr) (xaddr uintptr, err error)\n}\n\nvar mapper = &mremapMmapper{\n\tmmapper: mmapper{\n\t\tactive: make(map[*byte][]byte),\n\t\tmmap:   mmap,\n\t\tmunmap: munmap,\n\t},\n\tmremap: mremap,\n}\n\nfunc (m *mremapMmapper) Mremap(oldData []byte, newLength int, flags int) (data []byte, err error) {\n\tif newLength <= 0 || len(oldData) == 0 || len(oldData) != cap(oldData) || flags&mremapFixed != 0 {\n\t\treturn nil, EINVAL\n\t}\n\n\tpOld := &oldData[cap(oldData)-1]\n\tm.Lock()\n\tdefer m.Unlock()\n\tbOld := m.active[pOld]\n\tif bOld == nil || &bOld[0] != &oldData[0] {\n\t\treturn nil, EINVAL\n\t}\n\tnewAddr, errno := m.mremap(uintptr(unsafe.Pointer(&bOld[0])), uintptr(len(bOld)), uintptr(newLength), flags, 0)\n\tif errno != nil {\n\t\treturn nil, errno\n\t}\n\tbNew := unsafe.Slice((*byte)(unsafe.Pointer(newAddr)), newLength)\n\tpNew := &bNew[cap(bNew)-1]\n\tif flags&mremapDontunmap == 0 {\n\t\tdelete(m.active, pOld)\n\t}\n\tm.active[pNew] = bNew\n\treturn bNew, nil\n}\n\nfunc Mremap(oldData []byte, newLength int, flags int) (data []byte, err error) {\n\treturn mapper.Mremap(oldData, newLength, flags)\n}\n\nfunc MremapPtr(oldAddr unsafe.Pointer, oldSize uintptr, newAddr unsafe.Pointer, newSize uintptr, flags int) (ret unsafe.Pointer, err error) {\n\txaddr, err := mapper.mremap(uintptr(oldAddr), oldSize, newSize, flags, uintptr(newAddr))\n\treturn unsafe.Pointer(xaddr), err\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/pagesize_unix.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos\n\n// For Unix, get the pagesize from the runtime.\n\npackage unix\n\nimport \"syscall\"\n\nfunc Getpagesize() int {\n\treturn syscall.Getpagesize()\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/pledge_openbsd.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage unix\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"strconv\"\n)\n\n// Pledge implements the pledge syscall.\n//\n// This changes both the promises and execpromises; use PledgePromises or\n// PledgeExecpromises to only change the promises or execpromises\n// respectively.\n//\n// For more information see pledge(2).\nfunc Pledge(promises, execpromises string) error {\n\tif err := pledgeAvailable(); err != nil {\n\t\treturn err\n\t}\n\n\tpptr, err := BytePtrFromString(promises)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\texptr, err := BytePtrFromString(execpromises)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn pledge(pptr, exptr)\n}\n\n// PledgePromises implements the pledge syscall.\n//\n// This changes the promises and leaves the execpromises untouched.\n//\n// For more information see pledge(2).\nfunc PledgePromises(promises string) error {\n\tif err := pledgeAvailable(); err != nil {\n\t\treturn err\n\t}\n\n\tpptr, err := BytePtrFromString(promises)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn pledge(pptr, nil)\n}\n\n// PledgeExecpromises implements the pledge syscall.\n//\n// This changes the execpromises and leaves the promises untouched.\n//\n// For more information see pledge(2).\nfunc PledgeExecpromises(execpromises string) error {\n\tif err := pledgeAvailable(); err != nil {\n\t\treturn err\n\t}\n\n\texptr, err := BytePtrFromString(execpromises)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn pledge(nil, exptr)\n}\n\n// majmin returns major and minor version number for an OpenBSD system.\nfunc majmin() (major int, minor int, err error) {\n\tvar v Utsname\n\terr = Uname(&v)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tmajor, err = strconv.Atoi(string(v.Release[0]))\n\tif err != nil {\n\t\terr = errors.New(\"cannot parse major version number returned by uname\")\n\t\treturn\n\t}\n\n\tminor, err = strconv.Atoi(string(v.Release[2]))\n\tif err != nil {\n\t\terr = errors.New(\"cannot parse minor version number returned by uname\")\n\t\treturn\n\t}\n\n\treturn\n}\n\n// pledgeAvailable checks for availability of the pledge(2) syscall\n// based on the running OpenBSD version.\nfunc pledgeAvailable() error {\n\tmaj, min, err := majmin()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// Require OpenBSD 6.4 as a minimum.\n\tif maj < 6 || (maj == 6 && min <= 3) {\n\t\treturn fmt.Errorf(\"cannot call Pledge on OpenBSD %d.%d\", maj, min)\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ptrace_darwin.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build darwin && !ios\n\npackage unix\n\nfunc ptrace(request int, pid int, addr uintptr, data uintptr) error {\n\treturn ptrace1(request, pid, addr, data)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ptrace_ios.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build ios\n\npackage unix\n\nfunc ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {\n\treturn ENOTSUP\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/race.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (darwin && race) || (linux && race) || (freebsd && race)\n\npackage unix\n\nimport (\n\t\"runtime\"\n\t\"unsafe\"\n)\n\nconst raceenabled = true\n\nfunc raceAcquire(addr unsafe.Pointer) {\n\truntime.RaceAcquire(addr)\n}\n\nfunc raceReleaseMerge(addr unsafe.Pointer) {\n\truntime.RaceReleaseMerge(addr)\n}\n\nfunc raceReadRange(addr unsafe.Pointer, len int) {\n\truntime.RaceReadRange(addr, len)\n}\n\nfunc raceWriteRange(addr unsafe.Pointer, len int) {\n\truntime.RaceWriteRange(addr, len)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/race0.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || (darwin && !race) || (linux && !race) || (freebsd && !race) || netbsd || openbsd || solaris || dragonfly || zos\n\npackage unix\n\nimport (\n\t\"unsafe\"\n)\n\nconst raceenabled = false\n\nfunc raceAcquire(addr unsafe.Pointer) {\n}\n\nfunc raceReleaseMerge(addr unsafe.Pointer) {\n}\n\nfunc raceReadRange(addr unsafe.Pointer, len int) {\n}\n\nfunc raceWriteRange(addr unsafe.Pointer, len int) {\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/readdirent_getdents.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || dragonfly || freebsd || linux || netbsd || openbsd\n\npackage unix\n\n// ReadDirent reads directory entries from fd and writes them into buf.\nfunc ReadDirent(fd int, buf []byte) (n int, err error) {\n\treturn Getdents(fd, buf)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/readdirent_getdirentries.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build darwin || zos\n\npackage unix\n\nimport \"unsafe\"\n\n// ReadDirent reads directory entries from fd and writes them into buf.\nfunc ReadDirent(fd int, buf []byte) (n int, err error) {\n\t// Final argument is (basep *uintptr) and the syscall doesn't take nil.\n\t// 64 bits should be enough. (32 bits isn't even on 386). Since the\n\t// actual system call is getdirentries64, 64 is a good guess.\n\t// TODO(rsc): Can we use a single global basep for all calls?\n\tvar base = (*uintptr)(unsafe.Pointer(new(uint64)))\n\treturn Getdirentries(fd, buf, base)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/sockcmsg_dragonfly.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage unix\n\n// Round the length of a raw sockaddr up to align it properly.\nfunc cmsgAlignOf(salen int) int {\n\tsalign := SizeofPtr\n\tif SizeofPtr == 8 && !supportsABI(_dragonflyABIChangeVersion) {\n\t\t// 64-bit Dragonfly before the September 2019 ABI changes still requires\n\t\t// 32-bit aligned access to network subsystem.\n\t\tsalign = 4\n\t}\n\treturn (salen + salign - 1) & ^(salign - 1)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/sockcmsg_linux.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Socket control messages\n\npackage unix\n\nimport \"unsafe\"\n\n// UnixCredentials encodes credentials into a socket control message\n// for sending to another process. This can be used for\n// authentication.\nfunc UnixCredentials(ucred *Ucred) []byte {\n\tb := make([]byte, CmsgSpace(SizeofUcred))\n\th := (*Cmsghdr)(unsafe.Pointer(&b[0]))\n\th.Level = SOL_SOCKET\n\th.Type = SCM_CREDENTIALS\n\th.SetLen(CmsgLen(SizeofUcred))\n\t*(*Ucred)(h.data(0)) = *ucred\n\treturn b\n}\n\n// ParseUnixCredentials decodes a socket control message that contains\n// credentials in a Ucred structure. To receive such a message, the\n// SO_PASSCRED option must be enabled on the socket.\nfunc ParseUnixCredentials(m *SocketControlMessage) (*Ucred, error) {\n\tif m.Header.Level != SOL_SOCKET {\n\t\treturn nil, EINVAL\n\t}\n\tif m.Header.Type != SCM_CREDENTIALS {\n\t\treturn nil, EINVAL\n\t}\n\tucred := *(*Ucred)(unsafe.Pointer(&m.Data[0]))\n\treturn &ucred, nil\n}\n\n// PktInfo4 encodes Inet4Pktinfo into a socket control message of type IP_PKTINFO.\nfunc PktInfo4(info *Inet4Pktinfo) []byte {\n\tb := make([]byte, CmsgSpace(SizeofInet4Pktinfo))\n\th := (*Cmsghdr)(unsafe.Pointer(&b[0]))\n\th.Level = SOL_IP\n\th.Type = IP_PKTINFO\n\th.SetLen(CmsgLen(SizeofInet4Pktinfo))\n\t*(*Inet4Pktinfo)(h.data(0)) = *info\n\treturn b\n}\n\n// PktInfo6 encodes Inet6Pktinfo into a socket control message of type IPV6_PKTINFO.\nfunc PktInfo6(info *Inet6Pktinfo) []byte {\n\tb := make([]byte, CmsgSpace(SizeofInet6Pktinfo))\n\th := (*Cmsghdr)(unsafe.Pointer(&b[0]))\n\th.Level = SOL_IPV6\n\th.Type = IPV6_PKTINFO\n\th.SetLen(CmsgLen(SizeofInet6Pktinfo))\n\t*(*Inet6Pktinfo)(h.data(0)) = *info\n\treturn b\n}\n\n// ParseOrigDstAddr decodes a socket control message containing the original\n// destination address. To receive such a message the IP_RECVORIGDSTADDR or\n// IPV6_RECVORIGDSTADDR option must be enabled on the socket.\nfunc ParseOrigDstAddr(m *SocketControlMessage) (Sockaddr, error) {\n\tswitch {\n\tcase m.Header.Level == SOL_IP && m.Header.Type == IP_ORIGDSTADDR:\n\t\tpp := (*RawSockaddrInet4)(unsafe.Pointer(&m.Data[0]))\n\t\tsa := new(SockaddrInet4)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tsa.Addr = pp.Addr\n\t\treturn sa, nil\n\n\tcase m.Header.Level == SOL_IPV6 && m.Header.Type == IPV6_ORIGDSTADDR:\n\t\tpp := (*RawSockaddrInet6)(unsafe.Pointer(&m.Data[0]))\n\t\tsa := new(SockaddrInet6)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tsa.ZoneId = pp.Scope_id\n\t\tsa.Addr = pp.Addr\n\t\treturn sa, nil\n\n\tdefault:\n\t\treturn nil, EINVAL\n\t}\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/sockcmsg_unix.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos\n\n// Socket control messages\n\npackage unix\n\nimport (\n\t\"unsafe\"\n)\n\n// CmsgLen returns the value to store in the Len field of the Cmsghdr\n// structure, taking into account any necessary alignment.\nfunc CmsgLen(datalen int) int {\n\treturn cmsgAlignOf(SizeofCmsghdr) + datalen\n}\n\n// CmsgSpace returns the number of bytes an ancillary element with\n// payload of the passed data length occupies.\nfunc CmsgSpace(datalen int) int {\n\treturn cmsgAlignOf(SizeofCmsghdr) + cmsgAlignOf(datalen)\n}\n\nfunc (h *Cmsghdr) data(offset uintptr) unsafe.Pointer {\n\treturn unsafe.Pointer(uintptr(unsafe.Pointer(h)) + uintptr(cmsgAlignOf(SizeofCmsghdr)) + offset)\n}\n\n// SocketControlMessage represents a socket control message.\ntype SocketControlMessage struct {\n\tHeader Cmsghdr\n\tData   []byte\n}\n\n// ParseSocketControlMessage parses b as an array of socket control\n// messages.\nfunc ParseSocketControlMessage(b []byte) ([]SocketControlMessage, error) {\n\tvar msgs []SocketControlMessage\n\ti := 0\n\tfor i+CmsgLen(0) <= len(b) {\n\t\th, dbuf, err := socketControlMessageHeaderAndData(b[i:])\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tm := SocketControlMessage{Header: *h, Data: dbuf}\n\t\tmsgs = append(msgs, m)\n\t\ti += cmsgAlignOf(int(h.Len))\n\t}\n\treturn msgs, nil\n}\n\n// ParseOneSocketControlMessage parses a single socket control message from b, returning the message header,\n// message data (a slice of b), and the remainder of b after that single message.\n// When there are no remaining messages, len(remainder) == 0.\nfunc ParseOneSocketControlMessage(b []byte) (hdr Cmsghdr, data []byte, remainder []byte, err error) {\n\th, dbuf, err := socketControlMessageHeaderAndData(b)\n\tif err != nil {\n\t\treturn Cmsghdr{}, nil, nil, err\n\t}\n\tif i := cmsgAlignOf(int(h.Len)); i < len(b) {\n\t\tremainder = b[i:]\n\t}\n\treturn *h, dbuf, remainder, nil\n}\n\nfunc socketControlMessageHeaderAndData(b []byte) (*Cmsghdr, []byte, error) {\n\th := (*Cmsghdr)(unsafe.Pointer(&b[0]))\n\tif h.Len < SizeofCmsghdr || uint64(h.Len) > uint64(len(b)) {\n\t\treturn nil, nil, EINVAL\n\t}\n\treturn h, b[cmsgAlignOf(SizeofCmsghdr):h.Len], nil\n}\n\n// UnixRights encodes a set of open file descriptors into a socket\n// control message for sending to another process.\nfunc UnixRights(fds ...int) []byte {\n\tdatalen := len(fds) * 4\n\tb := make([]byte, CmsgSpace(datalen))\n\th := (*Cmsghdr)(unsafe.Pointer(&b[0]))\n\th.Level = SOL_SOCKET\n\th.Type = SCM_RIGHTS\n\th.SetLen(CmsgLen(datalen))\n\tfor i, fd := range fds {\n\t\t*(*int32)(h.data(4 * uintptr(i))) = int32(fd)\n\t}\n\treturn b\n}\n\n// ParseUnixRights decodes a socket control message that contains an\n// integer array of open file descriptors from another process.\nfunc ParseUnixRights(m *SocketControlMessage) ([]int, error) {\n\tif m.Header.Level != SOL_SOCKET {\n\t\treturn nil, EINVAL\n\t}\n\tif m.Header.Type != SCM_RIGHTS {\n\t\treturn nil, EINVAL\n\t}\n\tfds := make([]int, len(m.Data)>>2)\n\tfor i, j := 0, 0; i < len(m.Data); i += 4 {\n\t\tfds[j] = int(*(*int32)(unsafe.Pointer(&m.Data[i])))\n\t\tj++\n\t}\n\treturn fds, nil\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/sockcmsg_unix_other.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || darwin || freebsd || linux || netbsd || openbsd || solaris || zos\n\npackage unix\n\nimport (\n\t\"runtime\"\n)\n\n// Round the length of a raw sockaddr up to align it properly.\nfunc cmsgAlignOf(salen int) int {\n\tsalign := SizeofPtr\n\n\t// dragonfly needs to check ABI version at runtime, see cmsgAlignOf in\n\t// sockcmsg_dragonfly.go\n\tswitch runtime.GOOS {\n\tcase \"aix\":\n\t\t// There is no alignment on AIX.\n\t\tsalign = 1\n\tcase \"darwin\", \"ios\", \"illumos\", \"solaris\":\n\t\t// NOTE: It seems like 64-bit Darwin, Illumos and Solaris\n\t\t// kernels still require 32-bit aligned access to network\n\t\t// subsystem.\n\t\tif SizeofPtr == 8 {\n\t\t\tsalign = 4\n\t\t}\n\tcase \"netbsd\", \"openbsd\":\n\t\t// NetBSD and OpenBSD armv7 require 64-bit alignment.\n\t\tif runtime.GOARCH == \"arm\" {\n\t\t\tsalign = 8\n\t\t}\n\t\t// NetBSD aarch64 requires 128-bit alignment.\n\t\tif runtime.GOOS == \"netbsd\" && runtime.GOARCH == \"arm64\" {\n\t\t\tsalign = 16\n\t\t}\n\tcase \"zos\":\n\t\t// z/OS socket macros use [32-bit] sizeof(int) alignment,\n\t\t// not pointer width.\n\t\tsalign = SizeofInt\n\t}\n\n\treturn (salen + salign - 1) & ^(salign - 1)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/sockcmsg_zos.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Socket control messages\n\npackage unix\n\nimport \"unsafe\"\n\n// UnixCredentials encodes credentials into a socket control message\n// for sending to another process. This can be used for\n// authentication.\nfunc UnixCredentials(ucred *Ucred) []byte {\n\tb := make([]byte, CmsgSpace(SizeofUcred))\n\th := (*Cmsghdr)(unsafe.Pointer(&b[0]))\n\th.Level = SOL_SOCKET\n\th.Type = SCM_CREDENTIALS\n\th.SetLen(CmsgLen(SizeofUcred))\n\t*(*Ucred)(h.data(0)) = *ucred\n\treturn b\n}\n\n// ParseUnixCredentials decodes a socket control message that contains\n// credentials in a Ucred structure. To receive such a message, the\n// SO_PASSCRED option must be enabled on the socket.\nfunc ParseUnixCredentials(m *SocketControlMessage) (*Ucred, error) {\n\tif m.Header.Level != SOL_SOCKET {\n\t\treturn nil, EINVAL\n\t}\n\tif m.Header.Type != SCM_CREDENTIALS {\n\t\treturn nil, EINVAL\n\t}\n\tucred := *(*Ucred)(unsafe.Pointer(&m.Data[0]))\n\treturn &ucred, nil\n}\n\n// PktInfo4 encodes Inet4Pktinfo into a socket control message of type IP_PKTINFO.\nfunc PktInfo4(info *Inet4Pktinfo) []byte {\n\tb := make([]byte, CmsgSpace(SizeofInet4Pktinfo))\n\th := (*Cmsghdr)(unsafe.Pointer(&b[0]))\n\th.Level = SOL_IP\n\th.Type = IP_PKTINFO\n\th.SetLen(CmsgLen(SizeofInet4Pktinfo))\n\t*(*Inet4Pktinfo)(h.data(0)) = *info\n\treturn b\n}\n\n// PktInfo6 encodes Inet6Pktinfo into a socket control message of type IPV6_PKTINFO.\nfunc PktInfo6(info *Inet6Pktinfo) []byte {\n\tb := make([]byte, CmsgSpace(SizeofInet6Pktinfo))\n\th := (*Cmsghdr)(unsafe.Pointer(&b[0]))\n\th.Level = SOL_IPV6\n\th.Type = IPV6_PKTINFO\n\th.SetLen(CmsgLen(SizeofInet6Pktinfo))\n\t*(*Inet6Pktinfo)(h.data(0)) = *info\n\treturn b\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/symaddr_zos_s390x.s",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build zos && s390x && gc\n\n#include \"textflag.h\"\n\n//  provide the address of function variable to be fixed up.\n\nTEXT ·getPipe2Addr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Pipe2(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\nTEXT ·get_FlockAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Flock(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\nTEXT ·get_GetxattrAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Getxattr(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\nTEXT ·get_NanosleepAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Nanosleep(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\nTEXT ·get_SetxattrAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Setxattr(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\nTEXT ·get_Wait4Addr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Wait4(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\nTEXT ·get_MountAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Mount(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\nTEXT ·get_UnmountAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Unmount(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\nTEXT ·get_UtimesNanoAtAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·UtimesNanoAt(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\nTEXT ·get_UtimesNanoAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·UtimesNano(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\nTEXT ·get_MkfifoatAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Mkfifoat(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\nTEXT ·get_ChtagAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Chtag(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\nTEXT ·get_ReadlinkatAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Readlinkat(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\t\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos\n\n// Package unix contains an interface to the low-level operating system\n// primitives. OS details vary depending on the underlying system, and\n// by default, godoc will display OS-specific documentation for the current\n// system. If you want godoc to display OS documentation for another\n// system, set $GOOS and $GOARCH to the desired system. For example, if\n// you want to view documentation for freebsd/arm on linux/amd64, set $GOOS\n// to freebsd and $GOARCH to arm.\n//\n// The primary use of this package is inside other packages that provide a more\n// portable interface to the system, such as \"os\", \"time\" and \"net\".  Use\n// those packages rather than this one if you can.\n//\n// For details of the functions and data types in this package consult\n// the manuals for the appropriate operating system.\n//\n// These calls return err == nil to indicate success; otherwise\n// err represents an operating system error describing the failure and\n// holds a value of type syscall.Errno.\npackage unix // import \"golang.org/x/sys/unix\"\n\nimport (\n\t\"bytes\"\n\t\"strings\"\n\t\"unsafe\"\n)\n\n// ByteSliceFromString returns a NUL-terminated slice of bytes\n// containing the text of s. If s contains a NUL byte at any\n// location, it returns (nil, EINVAL).\nfunc ByteSliceFromString(s string) ([]byte, error) {\n\tif strings.IndexByte(s, 0) != -1 {\n\t\treturn nil, EINVAL\n\t}\n\ta := make([]byte, len(s)+1)\n\tcopy(a, s)\n\treturn a, nil\n}\n\n// BytePtrFromString returns a pointer to a NUL-terminated array of\n// bytes containing the text of s. If s contains a NUL byte at any\n// location, it returns (nil, EINVAL).\nfunc BytePtrFromString(s string) (*byte, error) {\n\ta, err := ByteSliceFromString(s)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &a[0], nil\n}\n\n// ByteSliceToString returns a string form of the text represented by the slice s, with a terminating NUL and any\n// bytes after the NUL removed.\nfunc ByteSliceToString(s []byte) string {\n\tif i := bytes.IndexByte(s, 0); i != -1 {\n\t\ts = s[:i]\n\t}\n\treturn string(s)\n}\n\n// BytePtrToString takes a pointer to a sequence of text and returns the corresponding string.\n// If the pointer is nil, it returns the empty string. It assumes that the text sequence is terminated\n// at a zero byte; if the zero byte is not present, the program may crash.\nfunc BytePtrToString(p *byte) string {\n\tif p == nil {\n\t\treturn \"\"\n\t}\n\tif *p == 0 {\n\t\treturn \"\"\n\t}\n\n\t// Find NUL terminator.\n\tn := 0\n\tfor ptr := unsafe.Pointer(p); *(*byte)(ptr) != 0; n++ {\n\t\tptr = unsafe.Pointer(uintptr(ptr) + 1)\n\t}\n\n\treturn string(unsafe.Slice(p, n))\n}\n\n// Single-word zero for use when we need a valid pointer to 0 bytes.\nvar _zero uintptr\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_aix.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix\n\n// Aix system calls.\n// This file is compiled as ordinary Go code,\n// but it is also input to mksyscall,\n// which parses the //sys lines and generates system call stubs.\n// Note that sometimes we use a lowercase //sys name and\n// wrap it in our own nicer implementation.\n\npackage unix\n\nimport \"unsafe\"\n\n/*\n * Wrapped\n */\n\nfunc Access(path string, mode uint32) (err error) {\n\treturn Faccessat(AT_FDCWD, path, mode, 0)\n}\n\nfunc Chmod(path string, mode uint32) (err error) {\n\treturn Fchmodat(AT_FDCWD, path, mode, 0)\n}\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\treturn Fchownat(AT_FDCWD, path, uid, gid, 0)\n}\n\nfunc Creat(path string, mode uint32) (fd int, err error) {\n\treturn Open(path, O_CREAT|O_WRONLY|O_TRUNC, mode)\n}\n\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\nfunc Utimes(path string, tv []Timeval) error {\n\tif len(tv) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))\n}\n\n//sys\tutimensat(dirfd int, path string, times *[2]Timespec, flag int) (err error)\n\nfunc UtimesNano(path string, ts []Timespec) error {\n\tif len(ts) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)\n}\n\nfunc UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error {\n\tif ts == nil {\n\t\treturn utimensat(dirfd, path, nil, flags)\n\t}\n\tif len(ts) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags)\n}\n\nfunc (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Port < 0 || sa.Port > 0xFFFF {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_INET\n\tp := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))\n\tp[0] = byte(sa.Port >> 8)\n\tp[1] = byte(sa.Port)\n\tsa.raw.Addr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrInet4, nil\n}\n\nfunc (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Port < 0 || sa.Port > 0xFFFF {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_INET6\n\tp := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))\n\tp[0] = byte(sa.Port >> 8)\n\tp[1] = byte(sa.Port)\n\tsa.raw.Scope_id = sa.ZoneId\n\tsa.raw.Addr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrInet6, nil\n}\n\nfunc (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tname := sa.Name\n\tn := len(name)\n\tif n > len(sa.raw.Path) {\n\t\treturn nil, 0, EINVAL\n\t}\n\tif n == len(sa.raw.Path) && name[0] != '@' {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_UNIX\n\tfor i := 0; i < n; i++ {\n\t\tsa.raw.Path[i] = uint8(name[i])\n\t}\n\t// length is family (uint16), name, NUL.\n\tsl := _Socklen(2)\n\tif n > 0 {\n\t\tsl += _Socklen(n) + 1\n\t}\n\tif sa.raw.Path[0] == '@' || (sa.raw.Path[0] == 0 && sl > 3) {\n\t\t// Check sl > 3 so we don't change unnamed socket behavior.\n\t\tsa.raw.Path[0] = 0\n\t\t// Don't count trailing NUL for abstract address.\n\t\tsl--\n\t}\n\n\treturn unsafe.Pointer(&sa.raw), sl, nil\n}\n\nfunc Getsockname(fd int) (sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tif err = getsockname(fd, &rsa, &len); err != nil {\n\t\treturn\n\t}\n\treturn anyToSockaddr(fd, &rsa)\n}\n\n//sys\tgetcwd(buf []byte) (err error)\n\nconst ImplementsGetwd = true\n\nfunc Getwd() (ret string, err error) {\n\tfor len := uint64(4096); ; len *= 2 {\n\t\tb := make([]byte, len)\n\t\terr := getcwd(b)\n\t\tif err == nil {\n\t\t\ti := 0\n\t\t\tfor b[i] != 0 {\n\t\t\t\ti++\n\t\t\t}\n\t\t\treturn string(b[0:i]), nil\n\t\t}\n\t\tif err != ERANGE {\n\t\t\treturn \"\", err\n\t\t}\n\t}\n}\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\terr = getcwd(buf)\n\tif err == nil {\n\t\ti := 0\n\t\tfor buf[i] != 0 {\n\t\t\ti++\n\t\t}\n\t\tn = i + 1\n\t}\n\treturn\n}\n\nfunc Getgroups() (gids []int, err error) {\n\tn, err := getgroups(0, nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif n == 0 {\n\t\treturn nil, nil\n\t}\n\n\t// Sanity check group count. Max is 16 on BSD.\n\tif n < 0 || n > 1000 {\n\t\treturn nil, EINVAL\n\t}\n\n\ta := make([]_Gid_t, n)\n\tn, err = getgroups(n, &a[0])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tgids = make([]int, n)\n\tfor i, v := range a[0:n] {\n\t\tgids[i] = int(v)\n\t}\n\treturn\n}\n\nfunc Setgroups(gids []int) (err error) {\n\tif len(gids) == 0 {\n\t\treturn setgroups(0, nil)\n\t}\n\n\ta := make([]_Gid_t, len(gids))\n\tfor i, v := range gids {\n\t\ta[i] = _Gid_t(v)\n\t}\n\treturn setgroups(len(a), &a[0])\n}\n\n/*\n * Socket\n */\n\n//sys\taccept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error)\n\nfunc Accept(fd int) (nfd int, sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tnfd, err = accept(fd, &rsa, &len)\n\tif nfd == -1 {\n\t\treturn\n\t}\n\tsa, err = anyToSockaddr(fd, &rsa)\n\tif err != nil {\n\t\tClose(nfd)\n\t\tnfd = 0\n\t}\n\treturn\n}\n\nfunc recvmsgRaw(fd int, iov []Iovec, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn int, recvflags int, err error) {\n\tvar msg Msghdr\n\tmsg.Name = (*byte)(unsafe.Pointer(rsa))\n\tmsg.Namelen = uint32(SizeofSockaddrAny)\n\tvar dummy byte\n\tif len(oob) > 0 {\n\t\t// receive at least one normal byte\n\t\tif emptyIovecs(iov) {\n\t\t\tvar iova [1]Iovec\n\t\t\tiova[0].Base = &dummy\n\t\t\tiova[0].SetLen(1)\n\t\t\tiov = iova[:]\n\t\t}\n\t\tmsg.Control = (*byte)(unsafe.Pointer(&oob[0]))\n\t\tmsg.SetControllen(len(oob))\n\t}\n\tif len(iov) > 0 {\n\t\tmsg.Iov = &iov[0]\n\t\tmsg.SetIovlen(len(iov))\n\t}\n\tif n, err = recvmsg(fd, &msg, flags); n == -1 {\n\t\treturn\n\t}\n\toobn = int(msg.Controllen)\n\trecvflags = int(msg.Flags)\n\treturn\n}\n\nfunc sendmsgN(fd int, iov []Iovec, oob []byte, ptr unsafe.Pointer, salen _Socklen, flags int) (n int, err error) {\n\tvar msg Msghdr\n\tmsg.Name = (*byte)(unsafe.Pointer(ptr))\n\tmsg.Namelen = uint32(salen)\n\tvar dummy byte\n\tvar empty bool\n\tif len(oob) > 0 {\n\t\t// send at least one normal byte\n\t\tempty = emptyIovecs(iov)\n\t\tif empty {\n\t\t\tvar iova [1]Iovec\n\t\t\tiova[0].Base = &dummy\n\t\t\tiova[0].SetLen(1)\n\t\t\tiov = iova[:]\n\t\t}\n\t\tmsg.Control = (*byte)(unsafe.Pointer(&oob[0]))\n\t\tmsg.SetControllen(len(oob))\n\t}\n\tif len(iov) > 0 {\n\t\tmsg.Iov = &iov[0]\n\t\tmsg.SetIovlen(len(iov))\n\t}\n\tif n, err = sendmsg(fd, &msg, flags); err != nil {\n\t\treturn 0, err\n\t}\n\tif len(oob) > 0 && empty {\n\t\tn = 0\n\t}\n\treturn n, nil\n}\n\nfunc anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {\n\tswitch rsa.Addr.Family {\n\n\tcase AF_UNIX:\n\t\tpp := (*RawSockaddrUnix)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrUnix)\n\n\t\t// Some versions of AIX have a bug in getsockname (see IV78655).\n\t\t// We can't rely on sa.Len being set correctly.\n\t\tn := SizeofSockaddrUnix - 3 // subtract leading Family, Len, terminating NUL.\n\t\tfor i := 0; i < n; i++ {\n\t\t\tif pp.Path[i] == 0 {\n\t\t\t\tn = i\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tsa.Name = string(unsafe.Slice((*byte)(unsafe.Pointer(&pp.Path[0])), n))\n\t\treturn sa, nil\n\n\tcase AF_INET:\n\t\tpp := (*RawSockaddrInet4)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrInet4)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tsa.Addr = pp.Addr\n\t\treturn sa, nil\n\n\tcase AF_INET6:\n\t\tpp := (*RawSockaddrInet6)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrInet6)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tsa.ZoneId = pp.Scope_id\n\t\tsa.Addr = pp.Addr\n\t\treturn sa, nil\n\t}\n\treturn nil, EAFNOSUPPORT\n}\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\terr = gettimeofday(tv, nil)\n\treturn\n}\n\nfunc Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\treturn sendfile(outfd, infd, offset, count)\n}\n\n// TODO\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\treturn -1, ENOSYS\n}\n\nfunc direntIno(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Ino), unsafe.Sizeof(Dirent{}.Ino))\n}\n\nfunc direntReclen(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen))\n}\n\nfunc direntNamlen(buf []byte) (uint64, bool) {\n\treclen, ok := direntReclen(buf)\n\tif !ok {\n\t\treturn 0, false\n\t}\n\treturn reclen - uint64(unsafe.Offsetof(Dirent{}.Name)), true\n}\n\n//sys\tgetdirent(fd int, buf []byte) (n int, err error)\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\treturn getdirent(fd, buf)\n}\n\n//sys\twait4(pid Pid_t, status *_C_int, options int, rusage *Rusage) (wpid Pid_t, err error)\n\nfunc Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) {\n\tvar status _C_int\n\tvar r Pid_t\n\terr = ERESTART\n\t// AIX wait4 may return with ERESTART errno, while the process is still\n\t// active.\n\tfor err == ERESTART {\n\t\tr, err = wait4(Pid_t(pid), &status, options, rusage)\n\t}\n\twpid = int(r)\n\tif wstatus != nil {\n\t\t*wstatus = WaitStatus(status)\n\t}\n\treturn\n}\n\n/*\n * Wait\n */\n\ntype WaitStatus uint32\n\nfunc (w WaitStatus) Stopped() bool { return w&0x40 != 0 }\nfunc (w WaitStatus) StopSignal() Signal {\n\tif !w.Stopped() {\n\t\treturn -1\n\t}\n\treturn Signal(w>>8) & 0xFF\n}\n\nfunc (w WaitStatus) Exited() bool { return w&0xFF == 0 }\nfunc (w WaitStatus) ExitStatus() int {\n\tif !w.Exited() {\n\t\treturn -1\n\t}\n\treturn int((w >> 8) & 0xFF)\n}\n\nfunc (w WaitStatus) Signaled() bool { return w&0x40 == 0 && w&0xFF != 0 }\nfunc (w WaitStatus) Signal() Signal {\n\tif !w.Signaled() {\n\t\treturn -1\n\t}\n\treturn Signal(w>>16) & 0xFF\n}\n\nfunc (w WaitStatus) Continued() bool { return w&0x01000000 != 0 }\n\nfunc (w WaitStatus) CoreDump() bool { return w&0x80 == 0x80 }\n\nfunc (w WaitStatus) TrapCause() int { return -1 }\n\n//sys\tioctl(fd int, req int, arg uintptr) (err error)\n//sys\tioctlPtr(fd int, req int, arg unsafe.Pointer) (err error) = ioctl\n\n// fcntl must never be called with cmd=F_DUP2FD because it doesn't work on AIX\n// There is no way to create a custom fcntl and to keep //sys fcntl easily,\n// Therefore, the programmer must call dup2 instead of fcntl in this case.\n\n// FcntlInt performs a fcntl syscall on fd with the provided command and argument.\n//sys\tFcntlInt(fd uintptr, cmd int, arg int) (r int,err error) = fcntl\n\n// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command.\n//sys\tFcntlFlock(fd uintptr, cmd int, lk *Flock_t) (err error) = fcntl\n\n//sys\tfcntl(fd int, cmd int, arg int) (val int, err error)\n\n//sys\tfsyncRange(fd int, how int, start int64, length int64) (err error) = fsync_range\n\nfunc Fsync(fd int) error {\n\treturn fsyncRange(fd, O_SYNC, 0, 0)\n}\n\n/*\n * Direct access\n */\n\n//sys\tAcct(path string) (err error)\n//sys\tChdir(path string) (err error)\n//sys\tChroot(path string) (err error)\n//sys\tClose(fd int) (err error)\n//sys\tDup(oldfd int) (fd int, err error)\n//sys\tExit(code int)\n//sys\tFaccessat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchdir(fd int) (err error)\n//sys\tFchmod(fd int, mode uint32) (err error)\n//sys\tFchmodat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchownat(dirfd int, path string, uid int, gid int, flags int) (err error)\n//sys\tFdatasync(fd int) (err error)\n// readdir_r\n//sysnb\tGetpgid(pid int) (pgid int, err error)\n\n//sys\tGetpgrp() (pid int)\n\n//sysnb\tGetpid() (pid int)\n//sysnb\tGetppid() (ppid int)\n//sys\tGetpriority(which int, who int) (prio int, err error)\n//sysnb\tGetrusage(who int, rusage *Rusage) (err error)\n//sysnb\tGetsid(pid int) (sid int, err error)\n//sysnb\tKill(pid int, sig Signal) (err error)\n//sys\tKlogctl(typ int, buf []byte) (n int, err error) = syslog\n//sys\tMkdir(dirfd int, path string, mode uint32) (err error)\n//sys\tMkdirat(dirfd int, path string, mode uint32) (err error)\n//sys\tMkfifo(path string, mode uint32) (err error)\n//sys\tMknod(path string, mode uint32, dev int) (err error)\n//sys\tMknodat(dirfd int, path string, mode uint32, dev int) (err error)\n//sys\tNanosleep(time *Timespec, leftover *Timespec) (err error)\n//sys\tOpen(path string, mode int, perm uint32) (fd int, err error) = open64\n//sys\tOpenat(dirfd int, path string, flags int, mode uint32) (fd int, err error)\n//sys\tread(fd int, p []byte) (n int, err error)\n//sys\tReadlink(path string, buf []byte) (n int, err error)\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSetdomainname(p []byte) (err error)\n//sys\tSethostname(p []byte) (err error)\n//sysnb\tSetpgid(pid int, pgid int) (err error)\n//sysnb\tSetsid() (pid int, err error)\n//sysnb\tSettimeofday(tv *Timeval) (err error)\n\n//sys\tSetuid(uid int) (err error)\n//sys\tSetgid(uid int) (err error)\n\n//sys\tSetpriority(which int, who int, prio int) (err error)\n//sys\tStatx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error)\n//sys\tSync()\n//sysnb\tTimes(tms *Tms) (ticks uintptr, err error)\n//sysnb\tUmask(mask int) (oldmask int)\n//sysnb\tUname(buf *Utsname) (err error)\n//sys\tUnlink(path string) (err error)\n//sys\tUnlinkat(dirfd int, path string, flags int) (err error)\n//sys\tUstat(dev int, ubuf *Ustat_t) (err error)\n//sys\twrite(fd int, p []byte) (n int, err error)\n\n//sys\tDup2(oldfd int, newfd int) (err error)\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = posix_fadvise64\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tfstat(fd int, stat *Stat_t) (err error)\n//sys\tfstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = fstatat\n//sys\tFstatfs(fd int, buf *Statfs_t) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetuid() (uid int)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tListen(s int, n int) (err error)\n//sys\tlstat(path string, stat *Stat_t) (err error)\n//sys\tPause() (err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = pread64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = pwrite64\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)\n//sys\tPselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error)\n//sysnb\tSetregid(rgid int, egid int) (err error)\n//sysnb\tSetreuid(ruid int, euid int) (err error)\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)\n//sys\tstat(path string, statptr *Stat_t) (err error)\n//sys\tStatfs(path string, buf *Statfs_t) (err error)\n//sys\tTruncate(path string, length int64) (err error)\n\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n\n// In order to use msghdr structure with Control, Controllen, nrecvmsg and nsendmsg must be used.\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error) = nrecvmsg\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error) = nsendmsg\n\n//sys\tmunmap(addr uintptr, length uintptr) (err error)\n//sys\tMadvise(b []byte, advice int) (err error)\n//sys\tMprotect(b []byte, prot int) (err error)\n//sys\tMlock(b []byte) (err error)\n//sys\tMlockall(flags int) (err error)\n//sys\tMsync(b []byte, flags int) (err error)\n//sys\tMunlock(b []byte) (err error)\n//sys\tMunlockall() (err error)\n\n//sysnb\tpipe(p *[2]_C_int) (err error)\n\nfunc Pipe(p []int) (err error) {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\terr = pipe(&pp)\n\tif err == nil {\n\t\tp[0] = int(pp[0])\n\t\tp[1] = int(pp[1])\n\t}\n\treturn\n}\n\n//sys\tpoll(fds *PollFd, nfds int, timeout int) (n int, err error)\n\nfunc Poll(fds []PollFd, timeout int) (n int, err error) {\n\tif len(fds) == 0 {\n\t\treturn poll(nil, 0, timeout)\n\t}\n\treturn poll(&fds[0], len(fds), timeout)\n}\n\n//sys\tgettimeofday(tv *Timeval, tzp *Timezone) (err error)\n//sysnb\tTime(t *Time_t) (tt Time_t, err error)\n//sys\tUtime(path string, buf *Utimbuf) (err error)\n\n//sys\tGetsystemcfg(label int) (n uint64)\n\n//sys\tumount(target string) (err error)\n\nfunc Unmount(target string, flags int) (err error) {\n\tif flags != 0 {\n\t\t// AIX doesn't have any flags for umount.\n\t\treturn ENOSYS\n\t}\n\treturn umount(target)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_aix_ppc.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix && ppc\n\npackage unix\n\n//sysnb\tGetrlimit(resource int, rlim *Rlimit) (err error) = getrlimit64\n//sys\tSeek(fd int, offset int64, whence int) (off int64, err error) = lseek64\n\n//sys\tmmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: int32(sec), Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: int32(sec), Usec: int32(usec)}\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc Fstat(fd int, stat *Stat_t) error {\n\treturn fstat(fd, stat)\n}\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) error {\n\treturn fstatat(dirfd, path, stat, flags)\n}\n\nfunc Lstat(path string, stat *Stat_t) error {\n\treturn lstat(path, stat)\n}\n\nfunc Stat(path string, statptr *Stat_t) error {\n\treturn stat(path, statptr)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix && ppc64\n\npackage unix\n\n//sysnb\tGetrlimit(resource int, rlim *Rlimit) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (off int64, err error) = lseek\n\n//sys\tmmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) = mmap64\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: int64(sec), Usec: int32(usec)}\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\n// In order to only have Timespec structure, type of Stat_t's fields\n// Atim, Mtim and Ctim is changed from StTimespec to Timespec during\n// ztypes generation.\n// On ppc64, Timespec.Nsec is an int64 while StTimespec.Nsec is an\n// int32, so the fields' value must be modified.\nfunc fixStatTimFields(stat *Stat_t) {\n\tstat.Atim.Nsec >>= 32\n\tstat.Mtim.Nsec >>= 32\n\tstat.Ctim.Nsec >>= 32\n}\n\nfunc Fstat(fd int, stat *Stat_t) error {\n\terr := fstat(fd, stat)\n\tif err != nil {\n\t\treturn err\n\t}\n\tfixStatTimFields(stat)\n\treturn nil\n}\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) error {\n\terr := fstatat(dirfd, path, stat, flags)\n\tif err != nil {\n\t\treturn err\n\t}\n\tfixStatTimFields(stat)\n\treturn nil\n}\n\nfunc Lstat(path string, stat *Stat_t) error {\n\terr := lstat(path, stat)\n\tif err != nil {\n\t\treturn err\n\t}\n\tfixStatTimFields(stat)\n\treturn nil\n}\n\nfunc Stat(path string, statptr *Stat_t) error {\n\terr := stat(path, statptr)\n\tif err != nil {\n\t\treturn err\n\t}\n\tfixStatTimFields(statptr)\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_bsd.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build darwin || dragonfly || freebsd || netbsd || openbsd\n\n// BSD system call wrappers shared by *BSD based systems\n// including OS X (Darwin) and FreeBSD.  Like the other\n// syscall_*.go files it is compiled as Go code but also\n// used as input to mksyscall which parses the //sys\n// lines and generates system call stubs.\n\npackage unix\n\nimport (\n\t\"runtime\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nconst ImplementsGetwd = true\n\nfunc Getwd() (string, error) {\n\tvar buf [PathMax]byte\n\t_, err := Getcwd(buf[0:])\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tn := clen(buf[:])\n\tif n < 1 {\n\t\treturn \"\", EINVAL\n\t}\n\treturn string(buf[:n]), nil\n}\n\n/*\n * Wrapped\n */\n\n//sysnb\tgetgroups(ngid int, gid *_Gid_t) (n int, err error)\n//sysnb\tsetgroups(ngid int, gid *_Gid_t) (err error)\n\nfunc Getgroups() (gids []int, err error) {\n\tn, err := getgroups(0, nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif n == 0 {\n\t\treturn nil, nil\n\t}\n\n\t// Sanity check group count. Max is 16 on BSD.\n\tif n < 0 || n > 1000 {\n\t\treturn nil, EINVAL\n\t}\n\n\ta := make([]_Gid_t, n)\n\tn, err = getgroups(n, &a[0])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tgids = make([]int, n)\n\tfor i, v := range a[0:n] {\n\t\tgids[i] = int(v)\n\t}\n\treturn\n}\n\nfunc Setgroups(gids []int) (err error) {\n\tif len(gids) == 0 {\n\t\treturn setgroups(0, nil)\n\t}\n\n\ta := make([]_Gid_t, len(gids))\n\tfor i, v := range gids {\n\t\ta[i] = _Gid_t(v)\n\t}\n\treturn setgroups(len(a), &a[0])\n}\n\n// Wait status is 7 bits at bottom, either 0 (exited),\n// 0x7F (stopped), or a signal number that caused an exit.\n// The 0x80 bit is whether there was a core dump.\n// An extra number (exit code, signal causing a stop)\n// is in the high bits.\n\ntype WaitStatus uint32\n\nconst (\n\tmask  = 0x7F\n\tcore  = 0x80\n\tshift = 8\n\n\texited  = 0\n\tkilled  = 9\n\tstopped = 0x7F\n)\n\nfunc (w WaitStatus) Exited() bool { return w&mask == exited }\n\nfunc (w WaitStatus) ExitStatus() int {\n\tif w&mask != exited {\n\t\treturn -1\n\t}\n\treturn int(w >> shift)\n}\n\nfunc (w WaitStatus) Signaled() bool { return w&mask != stopped && w&mask != 0 }\n\nfunc (w WaitStatus) Signal() syscall.Signal {\n\tsig := syscall.Signal(w & mask)\n\tif sig == stopped || sig == 0 {\n\t\treturn -1\n\t}\n\treturn sig\n}\n\nfunc (w WaitStatus) CoreDump() bool { return w.Signaled() && w&core != 0 }\n\nfunc (w WaitStatus) Stopped() bool { return w&mask == stopped && syscall.Signal(w>>shift) != SIGSTOP }\n\nfunc (w WaitStatus) Killed() bool { return w&mask == killed && syscall.Signal(w>>shift) != SIGKILL }\n\nfunc (w WaitStatus) Continued() bool { return w&mask == stopped && syscall.Signal(w>>shift) == SIGSTOP }\n\nfunc (w WaitStatus) StopSignal() syscall.Signal {\n\tif !w.Stopped() {\n\t\treturn -1\n\t}\n\treturn syscall.Signal(w>>shift) & 0xFF\n}\n\nfunc (w WaitStatus) TrapCause() int { return -1 }\n\n//sys\twait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error)\n\nfunc Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) {\n\tvar status _C_int\n\twpid, err = wait4(pid, &status, options, rusage)\n\tif wstatus != nil {\n\t\t*wstatus = WaitStatus(status)\n\t}\n\treturn\n}\n\n//sys\taccept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\tShutdown(s int, how int) (err error)\n\nfunc (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Port < 0 || sa.Port > 0xFFFF {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Len = SizeofSockaddrInet4\n\tsa.raw.Family = AF_INET\n\tp := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))\n\tp[0] = byte(sa.Port >> 8)\n\tp[1] = byte(sa.Port)\n\tsa.raw.Addr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil\n}\n\nfunc (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Port < 0 || sa.Port > 0xFFFF {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Len = SizeofSockaddrInet6\n\tsa.raw.Family = AF_INET6\n\tp := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))\n\tp[0] = byte(sa.Port >> 8)\n\tp[1] = byte(sa.Port)\n\tsa.raw.Scope_id = sa.ZoneId\n\tsa.raw.Addr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil\n}\n\nfunc (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tname := sa.Name\n\tn := len(name)\n\tif n >= len(sa.raw.Path) || n == 0 {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Len = byte(3 + n) // 2 for Family, Len; 1 for NUL\n\tsa.raw.Family = AF_UNIX\n\tfor i := 0; i < n; i++ {\n\t\tsa.raw.Path[i] = int8(name[i])\n\t}\n\treturn unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil\n}\n\nfunc (sa *SockaddrDatalink) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Index == 0 {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Len = sa.Len\n\tsa.raw.Family = AF_LINK\n\tsa.raw.Index = sa.Index\n\tsa.raw.Type = sa.Type\n\tsa.raw.Nlen = sa.Nlen\n\tsa.raw.Alen = sa.Alen\n\tsa.raw.Slen = sa.Slen\n\tsa.raw.Data = sa.Data\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrDatalink, nil\n}\n\nfunc anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {\n\tswitch rsa.Addr.Family {\n\tcase AF_LINK:\n\t\tpp := (*RawSockaddrDatalink)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrDatalink)\n\t\tsa.Len = pp.Len\n\t\tsa.Family = pp.Family\n\t\tsa.Index = pp.Index\n\t\tsa.Type = pp.Type\n\t\tsa.Nlen = pp.Nlen\n\t\tsa.Alen = pp.Alen\n\t\tsa.Slen = pp.Slen\n\t\tsa.Data = pp.Data\n\t\treturn sa, nil\n\n\tcase AF_UNIX:\n\t\tpp := (*RawSockaddrUnix)(unsafe.Pointer(rsa))\n\t\tif pp.Len < 2 || pp.Len > SizeofSockaddrUnix {\n\t\t\treturn nil, EINVAL\n\t\t}\n\t\tsa := new(SockaddrUnix)\n\n\t\t// Some BSDs include the trailing NUL in the length, whereas\n\t\t// others do not. Work around this by subtracting the leading\n\t\t// family and len. The path is then scanned to see if a NUL\n\t\t// terminator still exists within the length.\n\t\tn := int(pp.Len) - 2 // subtract leading Family, Len\n\t\tfor i := 0; i < n; i++ {\n\t\t\tif pp.Path[i] == 0 {\n\t\t\t\t// found early NUL; assume Len included the NUL\n\t\t\t\t// or was overestimating.\n\t\t\t\tn = i\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tsa.Name = string(unsafe.Slice((*byte)(unsafe.Pointer(&pp.Path[0])), n))\n\t\treturn sa, nil\n\n\tcase AF_INET:\n\t\tpp := (*RawSockaddrInet4)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrInet4)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tsa.Addr = pp.Addr\n\t\treturn sa, nil\n\n\tcase AF_INET6:\n\t\tpp := (*RawSockaddrInet6)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrInet6)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tsa.ZoneId = pp.Scope_id\n\t\tsa.Addr = pp.Addr\n\t\treturn sa, nil\n\t}\n\treturn anyToSockaddrGOOS(fd, rsa)\n}\n\nfunc Accept(fd int) (nfd int, sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tnfd, err = accept(fd, &rsa, &len)\n\tif err != nil {\n\t\treturn\n\t}\n\tif (runtime.GOOS == \"darwin\" || runtime.GOOS == \"ios\") && len == 0 {\n\t\t// Accepted socket has no address.\n\t\t// This is likely due to a bug in xnu kernels,\n\t\t// where instead of ECONNABORTED error socket\n\t\t// is accepted, but has no address.\n\t\tClose(nfd)\n\t\treturn 0, nil, ECONNABORTED\n\t}\n\tsa, err = anyToSockaddr(fd, &rsa)\n\tif err != nil {\n\t\tClose(nfd)\n\t\tnfd = 0\n\t}\n\treturn\n}\n\nfunc Getsockname(fd int) (sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tif err = getsockname(fd, &rsa, &len); err != nil {\n\t\treturn\n\t}\n\t// TODO(jsing): DragonFly has a \"bug\" (see issue 3349), which should be\n\t// reported upstream.\n\tif runtime.GOOS == \"dragonfly\" && rsa.Addr.Family == AF_UNSPEC && rsa.Addr.Len == 0 {\n\t\trsa.Addr.Family = AF_UNIX\n\t\trsa.Addr.Len = SizeofSockaddrUnix\n\t}\n\treturn anyToSockaddr(fd, &rsa)\n}\n\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n\n// GetsockoptString returns the string value of the socket option opt for the\n// socket associated with fd at the given socket level.\nfunc GetsockoptString(fd, level, opt int) (string, error) {\n\tbuf := make([]byte, 256)\n\tvallen := _Socklen(len(buf))\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\treturn ByteSliceToString(buf[:vallen]), nil\n}\n\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n\nfunc recvmsgRaw(fd int, iov []Iovec, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn int, recvflags int, err error) {\n\tvar msg Msghdr\n\tmsg.Name = (*byte)(unsafe.Pointer(rsa))\n\tmsg.Namelen = uint32(SizeofSockaddrAny)\n\tvar dummy byte\n\tif len(oob) > 0 {\n\t\t// receive at least one normal byte\n\t\tif emptyIovecs(iov) {\n\t\t\tvar iova [1]Iovec\n\t\t\tiova[0].Base = &dummy\n\t\t\tiova[0].SetLen(1)\n\t\t\tiov = iova[:]\n\t\t}\n\t\tmsg.Control = (*byte)(unsafe.Pointer(&oob[0]))\n\t\tmsg.SetControllen(len(oob))\n\t}\n\tif len(iov) > 0 {\n\t\tmsg.Iov = &iov[0]\n\t\tmsg.SetIovlen(len(iov))\n\t}\n\tif n, err = recvmsg(fd, &msg, flags); err != nil {\n\t\treturn\n\t}\n\toobn = int(msg.Controllen)\n\trecvflags = int(msg.Flags)\n\treturn\n}\n\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n\nfunc sendmsgN(fd int, iov []Iovec, oob []byte, ptr unsafe.Pointer, salen _Socklen, flags int) (n int, err error) {\n\tvar msg Msghdr\n\tmsg.Name = (*byte)(unsafe.Pointer(ptr))\n\tmsg.Namelen = uint32(salen)\n\tvar dummy byte\n\tvar empty bool\n\tif len(oob) > 0 {\n\t\t// send at least one normal byte\n\t\tempty = emptyIovecs(iov)\n\t\tif empty {\n\t\t\tvar iova [1]Iovec\n\t\t\tiova[0].Base = &dummy\n\t\t\tiova[0].SetLen(1)\n\t\t\tiov = iova[:]\n\t\t}\n\t\tmsg.Control = (*byte)(unsafe.Pointer(&oob[0]))\n\t\tmsg.SetControllen(len(oob))\n\t}\n\tif len(iov) > 0 {\n\t\tmsg.Iov = &iov[0]\n\t\tmsg.SetIovlen(len(iov))\n\t}\n\tif n, err = sendmsg(fd, &msg, flags); err != nil {\n\t\treturn 0, err\n\t}\n\tif len(oob) > 0 && empty {\n\t\tn = 0\n\t}\n\treturn n, nil\n}\n\n//sys\tkevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error)\n\nfunc Kevent(kq int, changes, events []Kevent_t, timeout *Timespec) (n int, err error) {\n\tvar change, event unsafe.Pointer\n\tif len(changes) > 0 {\n\t\tchange = unsafe.Pointer(&changes[0])\n\t}\n\tif len(events) > 0 {\n\t\tevent = unsafe.Pointer(&events[0])\n\t}\n\treturn kevent(kq, change, len(changes), event, len(events), timeout)\n}\n\n// sysctlmib translates name to mib number and appends any additional args.\nfunc sysctlmib(name string, args ...int) ([]_C_int, error) {\n\t// Translate name to mib number.\n\tmib, err := nametomib(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tfor _, a := range args {\n\t\tmib = append(mib, _C_int(a))\n\t}\n\n\treturn mib, nil\n}\n\nfunc Sysctl(name string) (string, error) {\n\treturn SysctlArgs(name)\n}\n\nfunc SysctlArgs(name string, args ...int) (string, error) {\n\tbuf, err := SysctlRaw(name, args...)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tn := len(buf)\n\n\t// Throw away terminating NUL.\n\tif n > 0 && buf[n-1] == '\\x00' {\n\t\tn--\n\t}\n\treturn string(buf[0:n]), nil\n}\n\nfunc SysctlUint32(name string) (uint32, error) {\n\treturn SysctlUint32Args(name)\n}\n\nfunc SysctlUint32Args(name string, args ...int) (uint32, error) {\n\tmib, err := sysctlmib(name, args...)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\tn := uintptr(4)\n\tbuf := make([]byte, 4)\n\tif err := sysctl(mib, &buf[0], &n, nil, 0); err != nil {\n\t\treturn 0, err\n\t}\n\tif n != 4 {\n\t\treturn 0, EIO\n\t}\n\treturn *(*uint32)(unsafe.Pointer(&buf[0])), nil\n}\n\nfunc SysctlUint64(name string, args ...int) (uint64, error) {\n\tmib, err := sysctlmib(name, args...)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\tn := uintptr(8)\n\tbuf := make([]byte, 8)\n\tif err := sysctl(mib, &buf[0], &n, nil, 0); err != nil {\n\t\treturn 0, err\n\t}\n\tif n != 8 {\n\t\treturn 0, EIO\n\t}\n\treturn *(*uint64)(unsafe.Pointer(&buf[0])), nil\n}\n\nfunc SysctlRaw(name string, args ...int) ([]byte, error) {\n\tmib, err := sysctlmib(name, args...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Find size.\n\tn := uintptr(0)\n\tif err := sysctl(mib, nil, &n, nil, 0); err != nil {\n\t\treturn nil, err\n\t}\n\tif n == 0 {\n\t\treturn nil, nil\n\t}\n\n\t// Read into buffer of that size.\n\tbuf := make([]byte, n)\n\tif err := sysctl(mib, &buf[0], &n, nil, 0); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// The actual call may return less than the original reported required\n\t// size so ensure we deal with that.\n\treturn buf[:n], nil\n}\n\nfunc SysctlClockinfo(name string) (*Clockinfo, error) {\n\tmib, err := sysctlmib(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tn := uintptr(SizeofClockinfo)\n\tvar ci Clockinfo\n\tif err := sysctl(mib, (*byte)(unsafe.Pointer(&ci)), &n, nil, 0); err != nil {\n\t\treturn nil, err\n\t}\n\tif n != SizeofClockinfo {\n\t\treturn nil, EIO\n\t}\n\treturn &ci, nil\n}\n\nfunc SysctlTimeval(name string) (*Timeval, error) {\n\tmib, err := sysctlmib(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar tv Timeval\n\tn := uintptr(unsafe.Sizeof(tv))\n\tif err := sysctl(mib, (*byte)(unsafe.Pointer(&tv)), &n, nil, 0); err != nil {\n\t\treturn nil, err\n\t}\n\tif n != unsafe.Sizeof(tv) {\n\t\treturn nil, EIO\n\t}\n\treturn &tv, nil\n}\n\n//sys\tutimes(path string, timeval *[2]Timeval) (err error)\n\nfunc Utimes(path string, tv []Timeval) error {\n\tif tv == nil {\n\t\treturn utimes(path, nil)\n\t}\n\tif len(tv) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))\n}\n\nfunc UtimesNano(path string, ts []Timespec) error {\n\tif ts == nil {\n\t\terr := utimensat(AT_FDCWD, path, nil, 0)\n\t\tif err != ENOSYS {\n\t\t\treturn err\n\t\t}\n\t\treturn utimes(path, nil)\n\t}\n\tif len(ts) != 2 {\n\t\treturn EINVAL\n\t}\n\terr := utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)\n\tif err != ENOSYS {\n\t\treturn err\n\t}\n\t// Not as efficient as it could be because Timespec and\n\t// Timeval have different types in the different OSes\n\ttv := [2]Timeval{\n\t\tNsecToTimeval(TimespecToNsec(ts[0])),\n\t\tNsecToTimeval(TimespecToNsec(ts[1])),\n\t}\n\treturn utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))\n}\n\nfunc UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error {\n\tif ts == nil {\n\t\treturn utimensat(dirfd, path, nil, flags)\n\t}\n\tif len(ts) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags)\n}\n\n//sys\tfutimes(fd int, timeval *[2]Timeval) (err error)\n\nfunc Futimes(fd int, tv []Timeval) error {\n\tif tv == nil {\n\t\treturn futimes(fd, nil)\n\t}\n\tif len(tv) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn futimes(fd, (*[2]Timeval)(unsafe.Pointer(&tv[0])))\n}\n\n//sys\tpoll(fds *PollFd, nfds int, timeout int) (n int, err error)\n\nfunc Poll(fds []PollFd, timeout int) (n int, err error) {\n\tif len(fds) == 0 {\n\t\treturn poll(nil, 0, timeout)\n\t}\n\treturn poll(&fds[0], len(fds), timeout)\n}\n\n// TODO: wrap\n//\tAcct(name nil-string) (err error)\n//\tGethostuuid(uuid *byte, timeout *Timespec) (err error)\n//\tPtrace(req int, pid int, addr uintptr, data int) (ret uintptr, err error)\n\n//sys\tMadvise(b []byte, behav int) (err error)\n//sys\tMlock(b []byte) (err error)\n//sys\tMlockall(flags int) (err error)\n//sys\tMprotect(b []byte, prot int) (err error)\n//sys\tMsync(b []byte, flags int) (err error)\n//sys\tMunlock(b []byte) (err error)\n//sys\tMunlockall() (err error)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_darwin.go",
    "content": "// Copyright 2009,2010 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Darwin system calls.\n// This file is compiled as ordinary Go code,\n// but it is also input to mksyscall,\n// which parses the //sys lines and generates system call stubs.\n// Note that sometimes we use a lowercase //sys name and wrap\n// it in our own nicer implementation, either here or in\n// syscall_bsd.go or syscall_unix.go.\n\npackage unix\n\nimport (\n\t\"fmt\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n//sys\tclosedir(dir uintptr) (err error)\n//sys\treaddir_r(dir uintptr, entry *Dirent, result **Dirent) (res Errno)\n\nfunc fdopendir(fd int) (dir uintptr, err error) {\n\tr0, _, e1 := syscall_syscallPtr(libc_fdopendir_trampoline_addr, uintptr(fd), 0, 0)\n\tdir = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fdopendir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fdopendir fdopendir \"/usr/lib/libSystem.B.dylib\"\n\nfunc Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {\n\t// Simulate Getdirentries using fdopendir/readdir_r/closedir.\n\t// We store the number of entries to skip in the seek\n\t// offset of fd. See issue #31368.\n\t// It's not the full required semantics, but should handle the case\n\t// of calling Getdirentries or ReadDirent repeatedly.\n\t// It won't handle assigning the results of lseek to *basep, or handle\n\t// the directory being edited underfoot.\n\tskip, err := Seek(fd, 0, 1 /* SEEK_CUR */)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\t// We need to duplicate the incoming file descriptor\n\t// because the caller expects to retain control of it, but\n\t// fdopendir expects to take control of its argument.\n\t// Just Dup'ing the file descriptor is not enough, as the\n\t// result shares underlying state. Use Openat to make a really\n\t// new file descriptor referring to the same directory.\n\tfd2, err := Openat(fd, \".\", O_RDONLY, 0)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\td, err := fdopendir(fd2)\n\tif err != nil {\n\t\tClose(fd2)\n\t\treturn 0, err\n\t}\n\tdefer closedir(d)\n\n\tvar cnt int64\n\tfor {\n\t\tvar entry Dirent\n\t\tvar entryp *Dirent\n\t\te := readdir_r(d, &entry, &entryp)\n\t\tif e != 0 {\n\t\t\treturn n, errnoErr(e)\n\t\t}\n\t\tif entryp == nil {\n\t\t\tbreak\n\t\t}\n\t\tif skip > 0 {\n\t\t\tskip--\n\t\t\tcnt++\n\t\t\tcontinue\n\t\t}\n\n\t\treclen := int(entry.Reclen)\n\t\tif reclen > len(buf) {\n\t\t\t// Not enough room. Return for now.\n\t\t\t// The counter will let us know where we should start up again.\n\t\t\t// Note: this strategy for suspending in the middle and\n\t\t\t// restarting is O(n^2) in the length of the directory. Oh well.\n\t\t\tbreak\n\t\t}\n\n\t\t// Copy entry into return buffer.\n\t\ts := unsafe.Slice((*byte)(unsafe.Pointer(&entry)), reclen)\n\t\tcopy(buf, s)\n\n\t\tbuf = buf[reclen:]\n\t\tn += reclen\n\t\tcnt++\n\t}\n\t// Set the seek offset of the input fd to record\n\t// how many files we've already returned.\n\t_, err = Seek(fd, cnt, 0 /* SEEK_SET */)\n\tif err != nil {\n\t\treturn n, err\n\t}\n\n\treturn n, nil\n}\n\n// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets.\ntype SockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [12]int8\n\traw    RawSockaddrDatalink\n}\n\n// SockaddrCtl implements the Sockaddr interface for AF_SYSTEM type sockets.\ntype SockaddrCtl struct {\n\tID   uint32\n\tUnit uint32\n\traw  RawSockaddrCtl\n}\n\nfunc (sa *SockaddrCtl) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tsa.raw.Sc_len = SizeofSockaddrCtl\n\tsa.raw.Sc_family = AF_SYSTEM\n\tsa.raw.Ss_sysaddr = AF_SYS_CONTROL\n\tsa.raw.Sc_id = sa.ID\n\tsa.raw.Sc_unit = sa.Unit\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrCtl, nil\n}\n\n// SockaddrVM implements the Sockaddr interface for AF_VSOCK type sockets.\n// SockaddrVM provides access to Darwin VM sockets: a mechanism that enables\n// bidirectional communication between a hypervisor and its guest virtual\n// machines.\ntype SockaddrVM struct {\n\t// CID and Port specify a context ID and port address for a VM socket.\n\t// Guests have a unique CID, and hosts may have a well-known CID of:\n\t//  - VMADDR_CID_HYPERVISOR: refers to the hypervisor process.\n\t//  - VMADDR_CID_LOCAL: refers to local communication (loopback).\n\t//  - VMADDR_CID_HOST: refers to other processes on the host.\n\tCID  uint32\n\tPort uint32\n\traw  RawSockaddrVM\n}\n\nfunc (sa *SockaddrVM) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tsa.raw.Len = SizeofSockaddrVM\n\tsa.raw.Family = AF_VSOCK\n\tsa.raw.Port = sa.Port\n\tsa.raw.Cid = sa.CID\n\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrVM, nil\n}\n\nfunc anyToSockaddrGOOS(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {\n\tswitch rsa.Addr.Family {\n\tcase AF_SYSTEM:\n\t\tpp := (*RawSockaddrCtl)(unsafe.Pointer(rsa))\n\t\tif pp.Ss_sysaddr == AF_SYS_CONTROL {\n\t\t\tsa := new(SockaddrCtl)\n\t\t\tsa.ID = pp.Sc_id\n\t\t\tsa.Unit = pp.Sc_unit\n\t\t\treturn sa, nil\n\t\t}\n\tcase AF_VSOCK:\n\t\tpp := (*RawSockaddrVM)(unsafe.Pointer(rsa))\n\t\tsa := &SockaddrVM{\n\t\t\tCID:  pp.Cid,\n\t\t\tPort: pp.Port,\n\t\t}\n\t\treturn sa, nil\n\t}\n\treturn nil, EAFNOSUPPORT\n}\n\n// Some external packages rely on SYS___SYSCTL being defined to implement their\n// own sysctl wrappers. Provide it here, even though direct syscalls are no\n// longer supported on darwin.\nconst SYS___SYSCTL = SYS_SYSCTL\n\n// Translate \"kern.hostname\" to []_C_int{0,1,2,3}.\nfunc nametomib(name string) (mib []_C_int, err error) {\n\tconst siz = unsafe.Sizeof(mib[0])\n\n\t// NOTE(rsc): It seems strange to set the buffer to have\n\t// size CTL_MAXNAME+2 but use only CTL_MAXNAME\n\t// as the size. I don't know why the +2 is here, but the\n\t// kernel uses +2 for its own implementation of this function.\n\t// I am scared that if we don't include the +2 here, the kernel\n\t// will silently write 2 words farther than we specify\n\t// and we'll get memory corruption.\n\tvar buf [CTL_MAXNAME + 2]_C_int\n\tn := uintptr(CTL_MAXNAME) * siz\n\n\tp := (*byte)(unsafe.Pointer(&buf[0]))\n\tbytes, err := ByteSliceFromString(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Magic sysctl: \"setting\" 0.3 to a string name\n\t// lets you read back the array of integers form.\n\tif err = sysctl([]_C_int{0, 3}, p, &n, &bytes[0], uintptr(len(name))); err != nil {\n\t\treturn nil, err\n\t}\n\treturn buf[0 : n/siz], nil\n}\n\nfunc direntIno(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Ino), unsafe.Sizeof(Dirent{}.Ino))\n}\n\nfunc direntReclen(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen))\n}\n\nfunc direntNamlen(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen))\n}\n\nfunc PtraceAttach(pid int) (err error) { return ptrace(PT_ATTACH, pid, 0, 0) }\nfunc PtraceDetach(pid int) (err error) { return ptrace(PT_DETACH, pid, 0, 0) }\nfunc PtraceDenyAttach() (err error)    { return ptrace(PT_DENY_ATTACH, 0, 0, 0) }\n\n//sysnb\tpipe(p *[2]int32) (err error)\n\nfunc Pipe(p []int) (err error) {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar x [2]int32\n\terr = pipe(&x)\n\tif err == nil {\n\t\tp[0] = int(x[0])\n\t\tp[1] = int(x[1])\n\t}\n\treturn\n}\n\nfunc Getfsstat(buf []Statfs_t, flags int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tvar bufsize uintptr\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t\tbufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf))\n\t}\n\treturn getfsstat(_p0, bufsize, flags)\n}\n\nfunc xattrPointer(dest []byte) *byte {\n\t// It's only when dest is set to NULL that the OS X implementations of\n\t// getxattr() and listxattr() return the current sizes of the named attributes.\n\t// An empty byte array is not sufficient. To maintain the same behaviour as the\n\t// linux implementation, we wrap around the system calls and pass in NULL when\n\t// dest is empty.\n\tvar destp *byte\n\tif len(dest) > 0 {\n\t\tdestp = &dest[0]\n\t}\n\treturn destp\n}\n\n//sys\tgetxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error)\n\nfunc Getxattr(path string, attr string, dest []byte) (sz int, err error) {\n\treturn getxattr(path, attr, xattrPointer(dest), len(dest), 0, 0)\n}\n\nfunc Lgetxattr(link string, attr string, dest []byte) (sz int, err error) {\n\treturn getxattr(link, attr, xattrPointer(dest), len(dest), 0, XATTR_NOFOLLOW)\n}\n\n//sys\tfgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error)\n\nfunc Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) {\n\treturn fgetxattr(fd, attr, xattrPointer(dest), len(dest), 0, 0)\n}\n\n//sys\tsetxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error)\n\nfunc Setxattr(path string, attr string, data []byte, flags int) (err error) {\n\t// The parameters for the OS X implementation vary slightly compared to the\n\t// linux system call, specifically the position parameter:\n\t//\n\t//  linux:\n\t//      int setxattr(\n\t//          const char *path,\n\t//          const char *name,\n\t//          const void *value,\n\t//          size_t size,\n\t//          int flags\n\t//      );\n\t//\n\t//  darwin:\n\t//      int setxattr(\n\t//          const char *path,\n\t//          const char *name,\n\t//          void *value,\n\t//          size_t size,\n\t//          u_int32_t position,\n\t//          int options\n\t//      );\n\t//\n\t// position specifies the offset within the extended attribute. In the\n\t// current implementation, only the resource fork extended attribute makes\n\t// use of this argument. For all others, position is reserved. We simply\n\t// default to setting it to zero.\n\treturn setxattr(path, attr, xattrPointer(data), len(data), 0, flags)\n}\n\nfunc Lsetxattr(link string, attr string, data []byte, flags int) (err error) {\n\treturn setxattr(link, attr, xattrPointer(data), len(data), 0, flags|XATTR_NOFOLLOW)\n}\n\n//sys\tfsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error)\n\nfunc Fsetxattr(fd int, attr string, data []byte, flags int) (err error) {\n\treturn fsetxattr(fd, attr, xattrPointer(data), len(data), 0, 0)\n}\n\n//sys\tremovexattr(path string, attr string, options int) (err error)\n\nfunc Removexattr(path string, attr string) (err error) {\n\t// We wrap around and explicitly zero out the options provided to the OS X\n\t// implementation of removexattr, we do so for interoperability with the\n\t// linux variant.\n\treturn removexattr(path, attr, 0)\n}\n\nfunc Lremovexattr(link string, attr string) (err error) {\n\treturn removexattr(link, attr, XATTR_NOFOLLOW)\n}\n\n//sys\tfremovexattr(fd int, attr string, options int) (err error)\n\nfunc Fremovexattr(fd int, attr string) (err error) {\n\treturn fremovexattr(fd, attr, 0)\n}\n\n//sys\tlistxattr(path string, dest *byte, size int, options int) (sz int, err error)\n\nfunc Listxattr(path string, dest []byte) (sz int, err error) {\n\treturn listxattr(path, xattrPointer(dest), len(dest), 0)\n}\n\nfunc Llistxattr(link string, dest []byte) (sz int, err error) {\n\treturn listxattr(link, xattrPointer(dest), len(dest), XATTR_NOFOLLOW)\n}\n\n//sys\tflistxattr(fd int, dest *byte, size int, options int) (sz int, err error)\n\nfunc Flistxattr(fd int, dest []byte) (sz int, err error) {\n\treturn flistxattr(fd, xattrPointer(dest), len(dest), 0)\n}\n\n//sys\tutimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error)\n\n/*\n * Wrapped\n */\n\n//sys\tfcntl(fd int, cmd int, arg int) (val int, err error)\n\n//sys\tkill(pid int, signum int, posix int) (err error)\n\nfunc Kill(pid int, signum syscall.Signal) (err error) { return kill(pid, int(signum), 1) }\n\n//sys\tioctl(fd int, req uint, arg uintptr) (err error)\n//sys\tioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) = SYS_IOCTL\n\nfunc IoctlCtlInfo(fd int, ctlInfo *CtlInfo) error {\n\treturn ioctlPtr(fd, CTLIOCGINFO, unsafe.Pointer(ctlInfo))\n}\n\n// IfreqMTU is struct ifreq used to get or set a network device's MTU.\ntype IfreqMTU struct {\n\tName [IFNAMSIZ]byte\n\tMTU  int32\n}\n\n// IoctlGetIfreqMTU performs the SIOCGIFMTU ioctl operation on fd to get the MTU\n// of the network device specified by ifname.\nfunc IoctlGetIfreqMTU(fd int, ifname string) (*IfreqMTU, error) {\n\tvar ifreq IfreqMTU\n\tcopy(ifreq.Name[:], ifname)\n\terr := ioctlPtr(fd, SIOCGIFMTU, unsafe.Pointer(&ifreq))\n\treturn &ifreq, err\n}\n\n// IoctlSetIfreqMTU performs the SIOCSIFMTU ioctl operation on fd to set the MTU\n// of the network device specified by ifreq.Name.\nfunc IoctlSetIfreqMTU(fd int, ifreq *IfreqMTU) error {\n\treturn ioctlPtr(fd, SIOCSIFMTU, unsafe.Pointer(ifreq))\n}\n\n//sys\trenamexNp(from string, to string, flag uint32) (err error)\n\nfunc RenamexNp(from string, to string, flag uint32) (err error) {\n\treturn renamexNp(from, to, flag)\n}\n\n//sys\trenameatxNp(fromfd int, from string, tofd int, to string, flag uint32) (err error)\n\nfunc RenameatxNp(fromfd int, from string, tofd int, to string, flag uint32) (err error) {\n\treturn renameatxNp(fromfd, from, tofd, to, flag)\n}\n\n//sys\tsysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS_SYSCTL\n\nfunc Uname(uname *Utsname) error {\n\tmib := []_C_int{CTL_KERN, KERN_OSTYPE}\n\tn := unsafe.Sizeof(uname.Sysname)\n\tif err := sysctl(mib, &uname.Sysname[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_HOSTNAME}\n\tn = unsafe.Sizeof(uname.Nodename)\n\tif err := sysctl(mib, &uname.Nodename[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_OSRELEASE}\n\tn = unsafe.Sizeof(uname.Release)\n\tif err := sysctl(mib, &uname.Release[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_VERSION}\n\tn = unsafe.Sizeof(uname.Version)\n\tif err := sysctl(mib, &uname.Version[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\t// The version might have newlines or tabs in it, convert them to\n\t// spaces.\n\tfor i, b := range uname.Version {\n\t\tif b == '\\n' || b == '\\t' {\n\t\t\tif i == len(uname.Version)-1 {\n\t\t\t\tuname.Version[i] = 0\n\t\t\t} else {\n\t\t\t\tuname.Version[i] = ' '\n\t\t\t}\n\t\t}\n\t}\n\n\tmib = []_C_int{CTL_HW, HW_MACHINE}\n\tn = unsafe.Sizeof(uname.Machine)\n\tif err := sysctl(mib, &uname.Machine[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\nfunc Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\tvar length = int64(count)\n\terr = sendfile(infd, outfd, *offset, &length, nil, 0)\n\twritten = int(length)\n\treturn\n}\n\nfunc GetsockoptIPMreqn(fd, level, opt int) (*IPMreqn, error) {\n\tvar value IPMreqn\n\tvallen := _Socklen(SizeofIPMreqn)\n\terrno := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, errno\n}\n\nfunc SetsockoptIPMreqn(fd, level, opt int, mreq *IPMreqn) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(mreq), unsafe.Sizeof(*mreq))\n}\n\n// GetsockoptXucred is a getsockopt wrapper that returns an Xucred struct.\n// The usual level and opt are SOL_LOCAL and LOCAL_PEERCRED, respectively.\nfunc GetsockoptXucred(fd, level, opt int) (*Xucred, error) {\n\tx := new(Xucred)\n\tvallen := _Socklen(SizeofXucred)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(x), &vallen)\n\treturn x, err\n}\n\nfunc GetsockoptTCPConnectionInfo(fd, level, opt int) (*TCPConnectionInfo, error) {\n\tvar value TCPConnectionInfo\n\tvallen := _Socklen(SizeofTCPConnectionInfo)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\nfunc SysctlKinfoProc(name string, args ...int) (*KinfoProc, error) {\n\tmib, err := sysctlmib(name, args...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar kinfo KinfoProc\n\tn := uintptr(SizeofKinfoProc)\n\tif err := sysctl(mib, (*byte)(unsafe.Pointer(&kinfo)), &n, nil, 0); err != nil {\n\t\treturn nil, err\n\t}\n\tif n != SizeofKinfoProc {\n\t\treturn nil, EIO\n\t}\n\treturn &kinfo, nil\n}\n\nfunc SysctlKinfoProcSlice(name string, args ...int) ([]KinfoProc, error) {\n\tmib, err := sysctlmib(name, args...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tfor {\n\t\t// Find size.\n\t\tn := uintptr(0)\n\t\tif err := sysctl(mib, nil, &n, nil, 0); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif n == 0 {\n\t\t\treturn nil, nil\n\t\t}\n\t\tif n%SizeofKinfoProc != 0 {\n\t\t\treturn nil, fmt.Errorf(\"sysctl() returned a size of %d, which is not a multiple of %d\", n, SizeofKinfoProc)\n\t\t}\n\n\t\t// Read into buffer of that size.\n\t\tbuf := make([]KinfoProc, n/SizeofKinfoProc)\n\t\tif err := sysctl(mib, (*byte)(unsafe.Pointer(&buf[0])), &n, nil, 0); err != nil {\n\t\t\tif err == ENOMEM {\n\t\t\t\t// Process table grew. Try again.\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\treturn nil, err\n\t\t}\n\t\tif n%SizeofKinfoProc != 0 {\n\t\t\treturn nil, fmt.Errorf(\"sysctl() returned a size of %d, which is not a multiple of %d\", n, SizeofKinfoProc)\n\t\t}\n\n\t\t// The actual call may return less than the original reported required\n\t\t// size so ensure we deal with that.\n\t\treturn buf[:n/SizeofKinfoProc], nil\n\t}\n}\n\n//sys\tpthread_chdir_np(path string) (err error)\n\nfunc PthreadChdir(path string) (err error) {\n\treturn pthread_chdir_np(path)\n}\n\n//sys\tpthread_fchdir_np(fd int) (err error)\n\nfunc PthreadFchdir(fd int) (err error) {\n\treturn pthread_fchdir_np(fd)\n}\n\n// Connectx calls connectx(2) to initiate a connection on a socket.\n//\n// srcIf, srcAddr, and dstAddr are filled into a [SaEndpoints] struct and passed as the endpoints argument.\n//\n//   - srcIf is the optional source interface index. 0 means unspecified.\n//   - srcAddr is the optional source address. nil means unspecified.\n//   - dstAddr is the destination address.\n//\n// On success, Connectx returns the number of bytes enqueued for transmission.\nfunc Connectx(fd int, srcIf uint32, srcAddr, dstAddr Sockaddr, associd SaeAssocID, flags uint32, iov []Iovec, connid *SaeConnID) (n uintptr, err error) {\n\tendpoints := SaEndpoints{\n\t\tSrcif: srcIf,\n\t}\n\n\tif srcAddr != nil {\n\t\taddrp, addrlen, err := srcAddr.sockaddr()\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\tendpoints.Srcaddr = (*RawSockaddr)(addrp)\n\t\tendpoints.Srcaddrlen = uint32(addrlen)\n\t}\n\n\tif dstAddr != nil {\n\t\taddrp, addrlen, err := dstAddr.sockaddr()\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\tendpoints.Dstaddr = (*RawSockaddr)(addrp)\n\t\tendpoints.Dstaddrlen = uint32(addrlen)\n\t}\n\n\terr = connectx(fd, &endpoints, associd, flags, iov, &n, connid)\n\treturn\n}\n\nconst minIovec = 8\n\nfunc Readv(fd int, iovs [][]byte) (n int, err error) {\n\tiovecs := make([]Iovec, 0, minIovec)\n\tiovecs = appendBytes(iovecs, iovs)\n\tn, err = readv(fd, iovecs)\n\treadvRacedetect(iovecs, n, err)\n\treturn n, err\n}\n\nfunc Preadv(fd int, iovs [][]byte, offset int64) (n int, err error) {\n\tiovecs := make([]Iovec, 0, minIovec)\n\tiovecs = appendBytes(iovecs, iovs)\n\tn, err = preadv(fd, iovecs, offset)\n\treadvRacedetect(iovecs, n, err)\n\treturn n, err\n}\n\nfunc Writev(fd int, iovs [][]byte) (n int, err error) {\n\tiovecs := make([]Iovec, 0, minIovec)\n\tiovecs = appendBytes(iovecs, iovs)\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\tn, err = writev(fd, iovecs)\n\twritevRacedetect(iovecs, n)\n\treturn n, err\n}\n\nfunc Pwritev(fd int, iovs [][]byte, offset int64) (n int, err error) {\n\tiovecs := make([]Iovec, 0, minIovec)\n\tiovecs = appendBytes(iovecs, iovs)\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\tn, err = pwritev(fd, iovecs, offset)\n\twritevRacedetect(iovecs, n)\n\treturn n, err\n}\n\nfunc appendBytes(vecs []Iovec, bs [][]byte) []Iovec {\n\tfor _, b := range bs {\n\t\tvar v Iovec\n\t\tv.SetLen(len(b))\n\t\tif len(b) > 0 {\n\t\t\tv.Base = &b[0]\n\t\t} else {\n\t\t\tv.Base = (*byte)(unsafe.Pointer(&_zero))\n\t\t}\n\t\tvecs = append(vecs, v)\n\t}\n\treturn vecs\n}\n\nfunc writevRacedetect(iovecs []Iovec, n int) {\n\tif !raceenabled {\n\t\treturn\n\t}\n\tfor i := 0; n > 0 && i < len(iovecs); i++ {\n\t\tm := int(iovecs[i].Len)\n\t\tif m > n {\n\t\t\tm = n\n\t\t}\n\t\tn -= m\n\t\tif m > 0 {\n\t\t\traceReadRange(unsafe.Pointer(iovecs[i].Base), m)\n\t\t}\n\t}\n}\n\nfunc readvRacedetect(iovecs []Iovec, n int, err error) {\n\tif !raceenabled {\n\t\treturn\n\t}\n\tfor i := 0; n > 0 && i < len(iovecs); i++ {\n\t\tm := int(iovecs[i].Len)\n\t\tif m > n {\n\t\t\tm = n\n\t\t}\n\t\tn -= m\n\t\tif m > 0 {\n\t\t\traceWriteRange(unsafe.Pointer(iovecs[i].Base), m)\n\t\t}\n\t}\n\tif err == nil {\n\t\traceAcquire(unsafe.Pointer(&ioSync))\n\t}\n}\n\n//sys\tconnectx(fd int, endpoints *SaEndpoints, associd SaeAssocID, flags uint32, iov []Iovec, n *uintptr, connid *SaeConnID) (err error)\n//sys\tsendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error)\n\n//sys\tshmat(id int, addr uintptr, flag int) (ret uintptr, err error)\n//sys\tshmctl(id int, cmd int, buf *SysvShmDesc) (result int, err error)\n//sys\tshmdt(addr uintptr) (err error)\n//sys\tshmget(key int, size int, flag int) (id int, err error)\n\n/*\n * Exposed directly\n */\n//sys\tAccess(path string, mode uint32) (err error)\n//sys\tAdjtime(delta *Timeval, olddelta *Timeval) (err error)\n//sys\tChdir(path string) (err error)\n//sys\tChflags(path string, flags int) (err error)\n//sys\tChmod(path string, mode uint32) (err error)\n//sys\tChown(path string, uid int, gid int) (err error)\n//sys\tChroot(path string) (err error)\n//sys\tClockGettime(clockid int32, time *Timespec) (err error)\n//sys\tClose(fd int) (err error)\n//sys\tClonefile(src string, dst string, flags int) (err error)\n//sys\tClonefileat(srcDirfd int, src string, dstDirfd int, dst string, flags int) (err error)\n//sys\tDup(fd int) (nfd int, err error)\n//sys\tDup2(from int, to int) (err error)\n//sys\tExchangedata(path1 string, path2 string, options int) (err error)\n//sys\tExit(code int)\n//sys\tFaccessat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchdir(fd int) (err error)\n//sys\tFchflags(fd int, flags int) (err error)\n//sys\tFchmod(fd int, mode uint32) (err error)\n//sys\tFchmodat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFchownat(dirfd int, path string, uid int, gid int, flags int) (err error)\n//sys\tFclonefileat(srcDirfd int, dstDirfd int, dst string, flags int) (err error)\n//sys\tFlock(fd int, how int) (err error)\n//sys\tFpathconf(fd int, name int) (val int, err error)\n//sys\tFsync(fd int) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sys\tGetcwd(buf []byte) (n int, err error)\n//sys\tGetdtablesize() (size int)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (uid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetpgid(pid int) (pgid int, err error)\n//sysnb\tGetpgrp() (pgrp int)\n//sysnb\tGetpid() (pid int)\n//sysnb\tGetppid() (ppid int)\n//sys\tGetpriority(which int, who int) (prio int, err error)\n//sysnb\tGetrlimit(which int, lim *Rlimit) (err error)\n//sysnb\tGetrusage(who int, rusage *Rusage) (err error)\n//sysnb\tGetsid(pid int) (sid int, err error)\n//sysnb\tGettimeofday(tp *Timeval) (err error)\n//sysnb\tGetuid() (uid int)\n//sysnb\tIssetugid() (tainted bool)\n//sys\tKqueue() (fd int, err error)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tLink(path string, link string) (err error)\n//sys\tLinkat(pathfd int, path string, linkfd int, link string, flags int) (err error)\n//sys\tListen(s int, backlog int) (err error)\n//sys\tMkdir(path string, mode uint32) (err error)\n//sys\tMkdirat(dirfd int, path string, mode uint32) (err error)\n//sys\tMkfifo(path string, mode uint32) (err error)\n//sys\tMknod(path string, mode uint32, dev int) (err error)\n//sys\tMount(fsType string, dir string, flags int, data unsafe.Pointer) (err error)\n//sys\tOpen(path string, mode int, perm uint32) (fd int, err error)\n//sys\tOpenat(dirfd int, path string, mode int, perm uint32) (fd int, err error)\n//sys\tPathconf(path string, name int) (val int, err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error)\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error)\n//sys\tread(fd int, p []byte) (n int, err error)\n//sys\tReadlink(path string, buf []byte) (n int, err error)\n//sys\tReadlinkat(dirfd int, path string, buf []byte) (n int, err error)\n//sys\tRename(from string, to string) (err error)\n//sys\tRenameat(fromfd int, from string, tofd int, to string) (err error)\n//sys\tRevoke(path string) (err error)\n//sys\tRmdir(path string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)\n//sys\tSetattrlist(path string, attrlist *Attrlist, attrBuf []byte, options int) (err error)\n//sys\tSetegid(egid int) (err error)\n//sysnb\tSeteuid(euid int) (err error)\n//sysnb\tSetgid(gid int) (err error)\n//sys\tSetlogin(name string) (err error)\n//sysnb\tSetpgid(pid int, pgid int) (err error)\n//sys\tSetpriority(which int, who int, prio int) (err error)\n//sys\tSetprivexec(flag int) (err error)\n//sysnb\tSetregid(rgid int, egid int) (err error)\n//sysnb\tSetreuid(ruid int, euid int) (err error)\n//sysnb\tSetsid() (pid int, err error)\n//sysnb\tSettimeofday(tp *Timeval) (err error)\n//sysnb\tSetuid(uid int) (err error)\n//sys\tSymlink(path string, link string) (err error)\n//sys\tSymlinkat(oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSync() (err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\tUmask(newmask int) (oldmask int)\n//sys\tUndelete(path string) (err error)\n//sys\tUnlink(path string) (err error)\n//sys\tUnlinkat(dirfd int, path string, flags int) (err error)\n//sys\tUnmount(path string, flags int) (err error)\n//sys\twrite(fd int, p []byte) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)\n//sys\tmunmap(addr uintptr, length uintptr) (err error)\n//sys\treadv(fd int, iovecs []Iovec) (n int, err error)\n//sys\tpreadv(fd int, iovecs []Iovec, offset int64) (n int, err error)\n//sys\twritev(fd int, iovecs []Iovec) (n int, err error)\n//sys\tpwritev(fd int, iovecs []Iovec, offset int64) (n int, err error)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build amd64 && darwin\n\npackage unix\n\nimport \"syscall\"\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: int32(usec)}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)\n\n//sys\tFstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64\n//sys\tFstatat(fd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64\n//sys\tFstatfs(fd int, stat *Statfs_t) (err error) = SYS_FSTATFS64\n//sys\tgetfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT64\n//sys\tLstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64\n//sys\tptrace1(request int, pid int, addr uintptr, data uintptr) (err error) = SYS_ptrace\n//sys\tStat(path string, stat *Stat_t) (err error) = SYS_STAT64\n//sys\tStatfs(path string, stat *Statfs_t) (err error) = SYS_STATFS64\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build arm64 && darwin\n\npackage unix\n\nimport \"syscall\"\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: int32(usec)}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) // sic\n\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(fd int, path string, stat *Stat_t, flags int) (err error)\n//sys\tFstatfs(fd int, stat *Statfs_t) (err error)\n//sys\tgetfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT\n//sys\tLstat(path string, stat *Stat_t) (err error)\n//sys\tptrace1(request int, pid int, addr uintptr, data uintptr) (err error) = SYS_ptrace\n//sys\tStat(path string, stat *Stat_t) (err error)\n//sys\tStatfs(path string, stat *Statfs_t) (err error)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build darwin\n\npackage unix\n\nimport _ \"unsafe\"\n\n// Implemented in the runtime package (runtime/sys_darwin.go)\nfunc syscall_syscall(fn, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno)\nfunc syscall_syscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)\nfunc syscall_syscall6X(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)\nfunc syscall_syscall9(fn, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err Errno) // 32-bit only\nfunc syscall_rawSyscall(fn, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno)\nfunc syscall_rawSyscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)\nfunc syscall_syscallPtr(fn, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno)\n\n//go:linkname syscall_syscall syscall.syscall\n//go:linkname syscall_syscall6 syscall.syscall6\n//go:linkname syscall_syscall6X syscall.syscall6X\n//go:linkname syscall_syscall9 syscall.syscall9\n//go:linkname syscall_rawSyscall syscall.rawSyscall\n//go:linkname syscall_rawSyscall6 syscall.rawSyscall6\n//go:linkname syscall_syscallPtr syscall.syscallPtr\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_dragonfly.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// DragonFly BSD system calls.\n// This file is compiled as ordinary Go code,\n// but it is also input to mksyscall,\n// which parses the //sys lines and generates system call stubs.\n// Note that sometimes we use a lowercase //sys name and wrap\n// it in our own nicer implementation, either here or in\n// syscall_bsd.go or syscall_unix.go.\n\npackage unix\n\nimport (\n\t\"sync\"\n\t\"unsafe\"\n)\n\n// See version list in https://github.com/DragonFlyBSD/DragonFlyBSD/blob/master/sys/sys/param.h\nvar (\n\tosreldateOnce sync.Once\n\tosreldate     uint32\n)\n\n// First __DragonFly_version after September 2019 ABI changes\n// http://lists.dragonflybsd.org/pipermail/users/2019-September/358280.html\nconst _dragonflyABIChangeVersion = 500705\n\nfunc supportsABI(ver uint32) bool {\n\tosreldateOnce.Do(func() { osreldate, _ = SysctlUint32(\"kern.osreldate\") })\n\treturn osreldate >= ver\n}\n\n// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets.\ntype SockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [12]int8\n\tRcf    uint16\n\tRoute  [16]uint16\n\traw    RawSockaddrDatalink\n}\n\nfunc anyToSockaddrGOOS(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {\n\treturn nil, EAFNOSUPPORT\n}\n\n// Translate \"kern.hostname\" to []_C_int{0,1,2,3}.\nfunc nametomib(name string) (mib []_C_int, err error) {\n\tconst siz = unsafe.Sizeof(mib[0])\n\n\t// NOTE(rsc): It seems strange to set the buffer to have\n\t// size CTL_MAXNAME+2 but use only CTL_MAXNAME\n\t// as the size. I don't know why the +2 is here, but the\n\t// kernel uses +2 for its own implementation of this function.\n\t// I am scared that if we don't include the +2 here, the kernel\n\t// will silently write 2 words farther than we specify\n\t// and we'll get memory corruption.\n\tvar buf [CTL_MAXNAME + 2]_C_int\n\tn := uintptr(CTL_MAXNAME) * siz\n\n\tp := (*byte)(unsafe.Pointer(&buf[0]))\n\tbytes, err := ByteSliceFromString(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Magic sysctl: \"setting\" 0.3 to a string name\n\t// lets you read back the array of integers form.\n\tif err = sysctl([]_C_int{0, 3}, p, &n, &bytes[0], uintptr(len(name))); err != nil {\n\t\treturn nil, err\n\t}\n\treturn buf[0 : n/siz], nil\n}\n\nfunc direntIno(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Fileno), unsafe.Sizeof(Dirent{}.Fileno))\n}\n\nfunc direntReclen(buf []byte) (uint64, bool) {\n\tnamlen, ok := direntNamlen(buf)\n\tif !ok {\n\t\treturn 0, false\n\t}\n\treturn (16 + namlen + 1 + 7) &^ 7, true\n}\n\nfunc direntNamlen(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen))\n}\n\n//sysnb\tpipe() (r int, w int, err error)\n\nfunc Pipe(p []int) (err error) {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tr, w, err := pipe()\n\tif err == nil {\n\t\tp[0], p[1] = r, w\n\t}\n\treturn\n}\n\n//sysnb\tpipe2(p *[2]_C_int, flags int) (r int, w int, err error)\n\nfunc Pipe2(p []int, flags int) (err error) {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\t// pipe2 on dragonfly takes an fds array as an argument, but still\n\t// returns the file descriptors.\n\tr, w, err := pipe2(&pp, flags)\n\tif err == nil {\n\t\tp[0], p[1] = r, w\n\t}\n\treturn err\n}\n\n//sys\textpread(fd int, p []byte, flags int, offset int64) (n int, err error)\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\treturn extpread(fd, p, 0, offset)\n}\n\n//sys\textpwrite(fd int, p []byte, flags int, offset int64) (n int, err error)\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\treturn extpwrite(fd, p, 0, offset)\n}\n\nfunc Accept4(fd, flags int) (nfd int, sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tnfd, err = accept4(fd, &rsa, &len, flags)\n\tif err != nil {\n\t\treturn\n\t}\n\tif len > SizeofSockaddrAny {\n\t\tpanic(\"RawSockaddrAny too small\")\n\t}\n\tsa, err = anyToSockaddr(fd, &rsa)\n\tif err != nil {\n\t\tClose(nfd)\n\t\tnfd = 0\n\t}\n\treturn\n}\n\n//sys\tGetcwd(buf []byte) (n int, err error) = SYS___GETCWD\n\nfunc Getfsstat(buf []Statfs_t, flags int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tvar bufsize uintptr\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t\tbufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf))\n\t}\n\tr0, _, e1 := Syscall(SYS_GETFSSTAT, uintptr(_p0), bufsize, uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n//sys\tioctl(fd int, req uint, arg uintptr) (err error)\n//sys\tioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) = SYS_IOCTL\n\n//sys\tsysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL\n\nfunc sysctlUname(mib []_C_int, old *byte, oldlen *uintptr) error {\n\terr := sysctl(mib, old, oldlen, nil, 0)\n\tif err != nil {\n\t\t// Utsname members on Dragonfly are only 32 bytes and\n\t\t// the syscall returns ENOMEM in case the actual value\n\t\t// is longer.\n\t\tif err == ENOMEM {\n\t\t\terr = nil\n\t\t}\n\t}\n\treturn err\n}\n\nfunc Uname(uname *Utsname) error {\n\tmib := []_C_int{CTL_KERN, KERN_OSTYPE}\n\tn := unsafe.Sizeof(uname.Sysname)\n\tif err := sysctlUname(mib, &uname.Sysname[0], &n); err != nil {\n\t\treturn err\n\t}\n\tuname.Sysname[unsafe.Sizeof(uname.Sysname)-1] = 0\n\n\tmib = []_C_int{CTL_KERN, KERN_HOSTNAME}\n\tn = unsafe.Sizeof(uname.Nodename)\n\tif err := sysctlUname(mib, &uname.Nodename[0], &n); err != nil {\n\t\treturn err\n\t}\n\tuname.Nodename[unsafe.Sizeof(uname.Nodename)-1] = 0\n\n\tmib = []_C_int{CTL_KERN, KERN_OSRELEASE}\n\tn = unsafe.Sizeof(uname.Release)\n\tif err := sysctlUname(mib, &uname.Release[0], &n); err != nil {\n\t\treturn err\n\t}\n\tuname.Release[unsafe.Sizeof(uname.Release)-1] = 0\n\n\tmib = []_C_int{CTL_KERN, KERN_VERSION}\n\tn = unsafe.Sizeof(uname.Version)\n\tif err := sysctlUname(mib, &uname.Version[0], &n); err != nil {\n\t\treturn err\n\t}\n\n\t// The version might have newlines or tabs in it, convert them to\n\t// spaces.\n\tfor i, b := range uname.Version {\n\t\tif b == '\\n' || b == '\\t' {\n\t\t\tif i == len(uname.Version)-1 {\n\t\t\t\tuname.Version[i] = 0\n\t\t\t} else {\n\t\t\t\tuname.Version[i] = ' '\n\t\t\t}\n\t\t}\n\t}\n\n\tmib = []_C_int{CTL_HW, HW_MACHINE}\n\tn = unsafe.Sizeof(uname.Machine)\n\tif err := sysctlUname(mib, &uname.Machine[0], &n); err != nil {\n\t\treturn err\n\t}\n\tuname.Machine[unsafe.Sizeof(uname.Machine)-1] = 0\n\n\treturn nil\n}\n\nfunc Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\treturn sendfile(outfd, infd, offset, count)\n}\n\nfunc Dup3(oldfd, newfd, flags int) error {\n\tif oldfd == newfd || flags&^O_CLOEXEC != 0 {\n\t\treturn EINVAL\n\t}\n\thow := F_DUP2FD\n\tif flags&O_CLOEXEC != 0 {\n\t\thow = F_DUP2FD_CLOEXEC\n\t}\n\t_, err := fcntl(oldfd, how, newfd)\n\treturn err\n}\n\n/*\n * Exposed directly\n */\n//sys\tAccess(path string, mode uint32) (err error)\n//sys\tAdjtime(delta *Timeval, olddelta *Timeval) (err error)\n//sys\tChdir(path string) (err error)\n//sys\tChflags(path string, flags int) (err error)\n//sys\tChmod(path string, mode uint32) (err error)\n//sys\tChown(path string, uid int, gid int) (err error)\n//sys\tChroot(path string) (err error)\n//sys\tClockGettime(clockid int32, time *Timespec) (err error)\n//sys\tClose(fd int) (err error)\n//sys\tDup(fd int) (nfd int, err error)\n//sys\tDup2(from int, to int) (err error)\n//sys\tExit(code int)\n//sys\tFaccessat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchdir(fd int) (err error)\n//sys\tFchflags(fd int, flags int) (err error)\n//sys\tFchmod(fd int, mode uint32) (err error)\n//sys\tFchmodat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFchownat(dirfd int, path string, uid int, gid int, flags int) (err error)\n//sys\tFlock(fd int, how int) (err error)\n//sys\tFpathconf(fd int, name int) (val int, err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(fd int, path string, stat *Stat_t, flags int) (err error)\n//sys\tFstatfs(fd int, stat *Statfs_t) (err error)\n//sys\tFsync(fd int) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sys\tGetdents(fd int, buf []byte) (n int, err error)\n//sys\tGetdirentries(fd int, buf []byte, basep *uintptr) (n int, err error)\n//sys\tGetdtablesize() (size int)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (uid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetpgid(pid int) (pgid int, err error)\n//sysnb\tGetpgrp() (pgrp int)\n//sysnb\tGetpid() (pid int)\n//sysnb\tGetppid() (ppid int)\n//sys\tGetpriority(which int, who int) (prio int, err error)\n//sysnb\tGetrlimit(which int, lim *Rlimit) (err error)\n//sysnb\tGetrusage(who int, rusage *Rusage) (err error)\n//sysnb\tGetsid(pid int) (sid int, err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tIssetugid() (tainted bool)\n//sys\tKill(pid int, signum syscall.Signal) (err error)\n//sys\tKqueue() (fd int, err error)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tLink(path string, link string) (err error)\n//sys\tLinkat(pathfd int, path string, linkfd int, link string, flags int) (err error)\n//sys\tListen(s int, backlog int) (err error)\n//sys\tLstat(path string, stat *Stat_t) (err error)\n//sys\tMkdir(path string, mode uint32) (err error)\n//sys\tMkdirat(dirfd int, path string, mode uint32) (err error)\n//sys\tMkfifo(path string, mode uint32) (err error)\n//sys\tMknod(path string, mode uint32, dev int) (err error)\n//sys\tMknodat(fd int, path string, mode uint32, dev int) (err error)\n//sys\tNanosleep(time *Timespec, leftover *Timespec) (err error)\n//sys\tOpen(path string, mode int, perm uint32) (fd int, err error)\n//sys\tOpenat(dirfd int, path string, mode int, perm uint32) (fd int, err error)\n//sys\tPathconf(path string, name int) (val int, err error)\n//sys\tread(fd int, p []byte) (n int, err error)\n//sys\tReadlink(path string, buf []byte) (n int, err error)\n//sys\tRename(from string, to string) (err error)\n//sys\tRenameat(fromfd int, from string, tofd int, to string) (err error)\n//sys\tRevoke(path string) (err error)\n//sys\tRmdir(path string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)\n//sysnb\tSetegid(egid int) (err error)\n//sysnb\tSeteuid(euid int) (err error)\n//sysnb\tSetgid(gid int) (err error)\n//sys\tSetlogin(name string) (err error)\n//sysnb\tSetpgid(pid int, pgid int) (err error)\n//sys\tSetpriority(which int, who int, prio int) (err error)\n//sysnb\tSetregid(rgid int, egid int) (err error)\n//sysnb\tSetreuid(ruid int, euid int) (err error)\n//sysnb\tSetresgid(rgid int, egid int, sgid int) (err error)\n//sysnb\tSetresuid(ruid int, euid int, suid int) (err error)\n//sysnb\tSetsid() (pid int, err error)\n//sysnb\tSettimeofday(tp *Timeval) (err error)\n//sysnb\tSetuid(uid int) (err error)\n//sys\tStat(path string, stat *Stat_t) (err error)\n//sys\tStatfs(path string, stat *Statfs_t) (err error)\n//sys\tSymlink(path string, link string) (err error)\n//sys\tSymlinkat(oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSync() (err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\tUmask(newmask int) (oldmask int)\n//sys\tUndelete(path string) (err error)\n//sys\tUnlink(path string) (err error)\n//sys\tUnlinkat(dirfd int, path string, flags int) (err error)\n//sys\tUnmount(path string, flags int) (err error)\n//sys\twrite(fd int, p []byte) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)\n//sys\tmunmap(addr uintptr, length uintptr) (err error)\n//sys\taccept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error)\n//sys\tutimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build amd64 && dragonfly\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tvar writtenOut uint64 = 0\n\t_, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0, 0)\n\n\twritten = int(writtenOut)\n\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\nfunc Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_freebsd.go",
    "content": "// Copyright 2009,2010 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// FreeBSD system calls.\n// This file is compiled as ordinary Go code,\n// but it is also input to mksyscall,\n// which parses the //sys lines and generates system call stubs.\n// Note that sometimes we use a lowercase //sys name and wrap\n// it in our own nicer implementation, either here or in\n// syscall_bsd.go or syscall_unix.go.\n\npackage unix\n\nimport (\n\t\"errors\"\n\t\"sync\"\n\t\"unsafe\"\n)\n\n// See https://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/versions.html.\nvar (\n\tosreldateOnce sync.Once\n\tosreldate     uint32\n)\n\nfunc supportsABI(ver uint32) bool {\n\tosreldateOnce.Do(func() { osreldate, _ = SysctlUint32(\"kern.osreldate\") })\n\treturn osreldate >= ver\n}\n\n// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets.\ntype SockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [46]int8\n\traw    RawSockaddrDatalink\n}\n\nfunc anyToSockaddrGOOS(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {\n\treturn nil, EAFNOSUPPORT\n}\n\n// Translate \"kern.hostname\" to []_C_int{0,1,2,3}.\nfunc nametomib(name string) (mib []_C_int, err error) {\n\tconst siz = unsafe.Sizeof(mib[0])\n\n\t// NOTE(rsc): It seems strange to set the buffer to have\n\t// size CTL_MAXNAME+2 but use only CTL_MAXNAME\n\t// as the size. I don't know why the +2 is here, but the\n\t// kernel uses +2 for its own implementation of this function.\n\t// I am scared that if we don't include the +2 here, the kernel\n\t// will silently write 2 words farther than we specify\n\t// and we'll get memory corruption.\n\tvar buf [CTL_MAXNAME + 2]_C_int\n\tn := uintptr(CTL_MAXNAME) * siz\n\n\tp := (*byte)(unsafe.Pointer(&buf[0]))\n\tbytes, err := ByteSliceFromString(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Magic sysctl: \"setting\" 0.3 to a string name\n\t// lets you read back the array of integers form.\n\tif err = sysctl([]_C_int{0, 3}, p, &n, &bytes[0], uintptr(len(name))); err != nil {\n\t\treturn nil, err\n\t}\n\treturn buf[0 : n/siz], nil\n}\n\nfunc direntIno(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Fileno), unsafe.Sizeof(Dirent{}.Fileno))\n}\n\nfunc direntReclen(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen))\n}\n\nfunc direntNamlen(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen))\n}\n\nfunc Pipe(p []int) (err error) {\n\treturn Pipe2(p, 0)\n}\n\n//sysnb\tpipe2(p *[2]_C_int, flags int) (err error)\n\nfunc Pipe2(p []int, flags int) error {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\terr := pipe2(&pp, flags)\n\tif err == nil {\n\t\tp[0] = int(pp[0])\n\t\tp[1] = int(pp[1])\n\t}\n\treturn err\n}\n\nfunc GetsockoptIPMreqn(fd, level, opt int) (*IPMreqn, error) {\n\tvar value IPMreqn\n\tvallen := _Socklen(SizeofIPMreqn)\n\terrno := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, errno\n}\n\nfunc SetsockoptIPMreqn(fd, level, opt int, mreq *IPMreqn) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(mreq), unsafe.Sizeof(*mreq))\n}\n\n// GetsockoptXucred is a getsockopt wrapper that returns an Xucred struct.\n// The usual level and opt are SOL_LOCAL and LOCAL_PEERCRED, respectively.\nfunc GetsockoptXucred(fd, level, opt int) (*Xucred, error) {\n\tx := new(Xucred)\n\tvallen := _Socklen(SizeofXucred)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(x), &vallen)\n\treturn x, err\n}\n\nfunc Accept4(fd, flags int) (nfd int, sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tnfd, err = accept4(fd, &rsa, &len, flags)\n\tif err != nil {\n\t\treturn\n\t}\n\tif len > SizeofSockaddrAny {\n\t\tpanic(\"RawSockaddrAny too small\")\n\t}\n\tsa, err = anyToSockaddr(fd, &rsa)\n\tif err != nil {\n\t\tClose(nfd)\n\t\tnfd = 0\n\t}\n\treturn\n}\n\n//sys\tGetcwd(buf []byte) (n int, err error) = SYS___GETCWD\n\nfunc Getfsstat(buf []Statfs_t, flags int) (n int, err error) {\n\tvar (\n\t\t_p0     unsafe.Pointer\n\t\tbufsize uintptr\n\t)\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t\tbufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf))\n\t}\n\tr0, _, e1 := Syscall(SYS_GETFSSTAT, uintptr(_p0), bufsize, uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n//sys\tioctl(fd int, req uint, arg uintptr) (err error) = SYS_IOCTL\n//sys\tioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) = SYS_IOCTL\n\n//sys\tsysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL\n\nfunc Uname(uname *Utsname) error {\n\tmib := []_C_int{CTL_KERN, KERN_OSTYPE}\n\tn := unsafe.Sizeof(uname.Sysname)\n\t// Suppress ENOMEM errors to be compatible with the C library __xuname() implementation.\n\tif err := sysctl(mib, &uname.Sysname[0], &n, nil, 0); err != nil && !errors.Is(err, ENOMEM) {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_HOSTNAME}\n\tn = unsafe.Sizeof(uname.Nodename)\n\tif err := sysctl(mib, &uname.Nodename[0], &n, nil, 0); err != nil && !errors.Is(err, ENOMEM) {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_OSRELEASE}\n\tn = unsafe.Sizeof(uname.Release)\n\tif err := sysctl(mib, &uname.Release[0], &n, nil, 0); err != nil && !errors.Is(err, ENOMEM) {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_VERSION}\n\tn = unsafe.Sizeof(uname.Version)\n\tif err := sysctl(mib, &uname.Version[0], &n, nil, 0); err != nil && !errors.Is(err, ENOMEM) {\n\t\treturn err\n\t}\n\n\t// The version might have newlines or tabs in it, convert them to\n\t// spaces.\n\tfor i, b := range uname.Version {\n\t\tif b == '\\n' || b == '\\t' {\n\t\t\tif i == len(uname.Version)-1 {\n\t\t\t\tuname.Version[i] = 0\n\t\t\t} else {\n\t\t\t\tuname.Version[i] = ' '\n\t\t\t}\n\t\t}\n\t}\n\n\tmib = []_C_int{CTL_HW, HW_MACHINE}\n\tn = unsafe.Sizeof(uname.Machine)\n\tif err := sysctl(mib, &uname.Machine[0], &n, nil, 0); err != nil && !errors.Is(err, ENOMEM) {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\nfunc Stat(path string, st *Stat_t) (err error) {\n\treturn Fstatat(AT_FDCWD, path, st, 0)\n}\n\nfunc Lstat(path string, st *Stat_t) (err error) {\n\treturn Fstatat(AT_FDCWD, path, st, AT_SYMLINK_NOFOLLOW)\n}\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\treturn Getdirentries(fd, buf, nil)\n}\n\nfunc Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {\n\tif basep == nil || unsafe.Sizeof(*basep) == 8 {\n\t\treturn getdirentries(fd, buf, (*uint64)(unsafe.Pointer(basep)))\n\t}\n\t// The syscall needs a 64-bit base. On 32-bit machines\n\t// we can't just use the basep passed in. See #32498.\n\tvar base uint64 = uint64(*basep)\n\tn, err = getdirentries(fd, buf, &base)\n\t*basep = uintptr(base)\n\tif base>>32 != 0 {\n\t\t// We can't stuff the base back into a uintptr, so any\n\t\t// future calls would be suspect. Generate an error.\n\t\t// EIO is allowed by getdirentries.\n\t\terr = EIO\n\t}\n\treturn\n}\n\nfunc Mknod(path string, mode uint32, dev uint64) (err error) {\n\treturn Mknodat(AT_FDCWD, path, mode, dev)\n}\n\nfunc Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\treturn sendfile(outfd, infd, offset, count)\n}\n\n//sys\tptrace(request int, pid int, addr uintptr, data int) (err error)\n//sys\tptracePtr(request int, pid int, addr unsafe.Pointer, data int) (err error) = SYS_PTRACE\n\nfunc PtraceAttach(pid int) (err error) {\n\treturn ptrace(PT_ATTACH, pid, 0, 0)\n}\n\nfunc PtraceCont(pid int, signal int) (err error) {\n\treturn ptrace(PT_CONTINUE, pid, 1, signal)\n}\n\nfunc PtraceDetach(pid int) (err error) {\n\treturn ptrace(PT_DETACH, pid, 1, 0)\n}\n\nfunc PtraceGetFpRegs(pid int, fpregsout *FpReg) (err error) {\n\treturn ptracePtr(PT_GETFPREGS, pid, unsafe.Pointer(fpregsout), 0)\n}\n\nfunc PtraceGetRegs(pid int, regsout *Reg) (err error) {\n\treturn ptracePtr(PT_GETREGS, pid, unsafe.Pointer(regsout), 0)\n}\n\nfunc PtraceIO(req int, pid int, offs uintptr, out []byte, countin int) (count int, err error) {\n\tioDesc := PtraceIoDesc{\n\t\tOp:   int32(req),\n\t\tOffs: offs,\n\t}\n\tif countin > 0 {\n\t\t_ = out[:countin] // check bounds\n\t\tioDesc.Addr = &out[0]\n\t} else if out != nil {\n\t\tioDesc.Addr = (*byte)(unsafe.Pointer(&_zero))\n\t}\n\tioDesc.SetLen(countin)\n\n\terr = ptracePtr(PT_IO, pid, unsafe.Pointer(&ioDesc), 0)\n\treturn int(ioDesc.Len), err\n}\n\nfunc PtraceLwpEvents(pid int, enable int) (err error) {\n\treturn ptrace(PT_LWP_EVENTS, pid, 0, enable)\n}\n\nfunc PtraceLwpInfo(pid int, info *PtraceLwpInfoStruct) (err error) {\n\treturn ptracePtr(PT_LWPINFO, pid, unsafe.Pointer(info), int(unsafe.Sizeof(*info)))\n}\n\nfunc PtracePeekData(pid int, addr uintptr, out []byte) (count int, err error) {\n\treturn PtraceIO(PIOD_READ_D, pid, addr, out, SizeofLong)\n}\n\nfunc PtracePeekText(pid int, addr uintptr, out []byte) (count int, err error) {\n\treturn PtraceIO(PIOD_READ_I, pid, addr, out, SizeofLong)\n}\n\nfunc PtracePokeData(pid int, addr uintptr, data []byte) (count int, err error) {\n\treturn PtraceIO(PIOD_WRITE_D, pid, addr, data, SizeofLong)\n}\n\nfunc PtracePokeText(pid int, addr uintptr, data []byte) (count int, err error) {\n\treturn PtraceIO(PIOD_WRITE_I, pid, addr, data, SizeofLong)\n}\n\nfunc PtraceSetRegs(pid int, regs *Reg) (err error) {\n\treturn ptracePtr(PT_SETREGS, pid, unsafe.Pointer(regs), 0)\n}\n\nfunc PtraceSingleStep(pid int) (err error) {\n\treturn ptrace(PT_STEP, pid, 1, 0)\n}\n\nfunc Dup3(oldfd, newfd, flags int) error {\n\tif oldfd == newfd || flags&^O_CLOEXEC != 0 {\n\t\treturn EINVAL\n\t}\n\thow := F_DUP2FD\n\tif flags&O_CLOEXEC != 0 {\n\t\thow = F_DUP2FD_CLOEXEC\n\t}\n\t_, err := fcntl(oldfd, how, newfd)\n\treturn err\n}\n\n/*\n * Exposed directly\n */\n//sys\tAccess(path string, mode uint32) (err error)\n//sys\tAdjtime(delta *Timeval, olddelta *Timeval) (err error)\n//sys\tCapEnter() (err error)\n//sys\tcapRightsGet(version int, fd int, rightsp *CapRights) (err error) = SYS___CAP_RIGHTS_GET\n//sys\tcapRightsLimit(fd int, rightsp *CapRights) (err error)\n//sys\tChdir(path string) (err error)\n//sys\tChflags(path string, flags int) (err error)\n//sys\tChmod(path string, mode uint32) (err error)\n//sys\tChown(path string, uid int, gid int) (err error)\n//sys\tChroot(path string) (err error)\n//sys\tClockGettime(clockid int32, time *Timespec) (err error)\n//sys\tClose(fd int) (err error)\n//sys\tDup(fd int) (nfd int, err error)\n//sys\tDup2(from int, to int) (err error)\n//sys\tExit(code int)\n//sys\tExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error)\n//sys\tExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error)\n//sys\tExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error)\n//sys\tExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error)\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_POSIX_FADVISE\n//sys\tFaccessat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchdir(fd int) (err error)\n//sys\tFchflags(fd int, flags int) (err error)\n//sys\tFchmod(fd int, mode uint32) (err error)\n//sys\tFchmodat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFchownat(dirfd int, path string, uid int, gid int, flags int) (err error)\n//sys\tFlock(fd int, how int) (err error)\n//sys\tFpathconf(fd int, name int) (val int, err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(fd int, path string, stat *Stat_t, flags int) (err error)\n//sys\tFstatfs(fd int, stat *Statfs_t) (err error)\n//sys\tFsync(fd int) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sys\tgetdirentries(fd int, buf []byte, basep *uint64) (n int, err error)\n//sys\tGetdtablesize() (size int)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (uid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetpgid(pid int) (pgid int, err error)\n//sysnb\tGetpgrp() (pgrp int)\n//sysnb\tGetpid() (pid int)\n//sysnb\tGetppid() (ppid int)\n//sys\tGetpriority(which int, who int) (prio int, err error)\n//sysnb\tGetrlimit(which int, lim *Rlimit) (err error)\n//sysnb\tGetrusage(who int, rusage *Rusage) (err error)\n//sysnb\tGetsid(pid int) (sid int, err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tIssetugid() (tainted bool)\n//sys\tKill(pid int, signum syscall.Signal) (err error)\n//sys\tKqueue() (fd int, err error)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tLink(path string, link string) (err error)\n//sys\tLinkat(pathfd int, path string, linkfd int, link string, flags int) (err error)\n//sys\tListen(s int, backlog int) (err error)\n//sys\tMkdir(path string, mode uint32) (err error)\n//sys\tMkdirat(dirfd int, path string, mode uint32) (err error)\n//sys\tMkfifo(path string, mode uint32) (err error)\n//sys\tMknodat(fd int, path string, mode uint32, dev uint64) (err error)\n//sys\tNanosleep(time *Timespec, leftover *Timespec) (err error)\n//sys\tOpen(path string, mode int, perm uint32) (fd int, err error)\n//sys\tOpenat(fdat int, path string, mode int, perm uint32) (fd int, err error)\n//sys\tPathconf(path string, name int) (val int, err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error)\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error)\n//sys\tread(fd int, p []byte) (n int, err error)\n//sys\tReadlink(path string, buf []byte) (n int, err error)\n//sys\tReadlinkat(dirfd int, path string, buf []byte) (n int, err error)\n//sys\tRename(from string, to string) (err error)\n//sys\tRenameat(fromfd int, from string, tofd int, to string) (err error)\n//sys\tRevoke(path string) (err error)\n//sys\tRmdir(path string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)\n//sysnb\tSetegid(egid int) (err error)\n//sysnb\tSeteuid(euid int) (err error)\n//sysnb\tSetgid(gid int) (err error)\n//sys\tSetlogin(name string) (err error)\n//sysnb\tSetpgid(pid int, pgid int) (err error)\n//sys\tSetpriority(which int, who int, prio int) (err error)\n//sysnb\tSetregid(rgid int, egid int) (err error)\n//sysnb\tSetreuid(ruid int, euid int) (err error)\n//sysnb\tSetresgid(rgid int, egid int, sgid int) (err error)\n//sysnb\tSetresuid(ruid int, euid int, suid int) (err error)\n//sysnb\tSetsid() (pid int, err error)\n//sysnb\tSettimeofday(tp *Timeval) (err error)\n//sysnb\tSetuid(uid int) (err error)\n//sys\tStatfs(path string, stat *Statfs_t) (err error)\n//sys\tSymlink(path string, link string) (err error)\n//sys\tSymlinkat(oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSync() (err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\tUmask(newmask int) (oldmask int)\n//sys\tUndelete(path string) (err error)\n//sys\tUnlink(path string) (err error)\n//sys\tUnlinkat(dirfd int, path string, flags int) (err error)\n//sys\tUnmount(path string, flags int) (err error)\n//sys\twrite(fd int, p []byte) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)\n//sys\tmunmap(addr uintptr, length uintptr) (err error)\n//sys\taccept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error)\n//sys\tutimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_freebsd_386.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build 386 && freebsd\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: int32(sec), Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: int32(sec), Usec: int32(usec)}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint32(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc (d *PtraceIoDesc) SetLen(length int) {\n\td.Len = uint32(length)\n}\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tvar writtenOut uint64 = 0\n\t_, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr((*offset)>>32), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0)\n\n\twritten = int(writtenOut)\n\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\nfunc Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)\n\nfunc PtraceGetFsBase(pid int, fsbase *int64) (err error) {\n\treturn ptracePtr(PT_GETFSBASE, pid, unsafe.Pointer(fsbase), 0)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build amd64 && freebsd\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc (d *PtraceIoDesc) SetLen(length int) {\n\td.Len = uint64(length)\n}\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tvar writtenOut uint64 = 0\n\t_, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0, 0)\n\n\twritten = int(writtenOut)\n\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\nfunc Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)\n\nfunc PtraceGetFsBase(pid int, fsbase *int64) (err error) {\n\treturn ptracePtr(PT_GETFSBASE, pid, unsafe.Pointer(fsbase), 0)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build arm && freebsd\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: int32(usec)}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint32(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc (d *PtraceIoDesc) SetLen(length int) {\n\td.Len = uint32(length)\n}\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tvar writtenOut uint64 = 0\n\t_, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr((*offset)>>32), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0)\n\n\twritten = int(writtenOut)\n\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\nfunc Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build arm64 && freebsd\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc (d *PtraceIoDesc) SetLen(length int) {\n\td.Len = uint64(length)\n}\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tvar writtenOut uint64 = 0\n\t_, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0, 0)\n\n\twritten = int(writtenOut)\n\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\nfunc Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_freebsd_riscv64.go",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build riscv64 && freebsd\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc (d *PtraceIoDesc) SetLen(length int) {\n\td.Len = uint64(length)\n}\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tvar writtenOut uint64 = 0\n\t_, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0, 0)\n\n\twritten = int(writtenOut)\n\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\nfunc Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_hurd.go",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build hurd\n\npackage unix\n\n/*\n#include <stdint.h>\nint ioctl(int, unsigned long int, uintptr_t);\n*/\nimport \"C\"\nimport \"unsafe\"\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\tr0, er := C.ioctl(C.int(fd), C.ulong(req), C.uintptr_t(arg))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\tr0, er := C.ioctl(C.int(fd), C.ulong(req), C.uintptr_t(uintptr(arg)))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_hurd_386.go",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build 386 && hurd\n\npackage unix\n\nconst (\n\tTIOCGETA = 0x62251713\n)\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_illumos.go",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// illumos system calls not present on Solaris.\n\n//go:build amd64 && illumos\n\npackage unix\n\nimport (\n\t\"unsafe\"\n)\n\nfunc bytes2iovec(bs [][]byte) []Iovec {\n\tiovecs := make([]Iovec, len(bs))\n\tfor i, b := range bs {\n\t\tiovecs[i].SetLen(len(b))\n\t\tif len(b) > 0 {\n\t\t\tiovecs[i].Base = &b[0]\n\t\t} else {\n\t\t\tiovecs[i].Base = (*byte)(unsafe.Pointer(&_zero))\n\t\t}\n\t}\n\treturn iovecs\n}\n\n//sys\treadv(fd int, iovs []Iovec) (n int, err error)\n\nfunc Readv(fd int, iovs [][]byte) (n int, err error) {\n\tiovecs := bytes2iovec(iovs)\n\tn, err = readv(fd, iovecs)\n\treturn n, err\n}\n\n//sys\tpreadv(fd int, iovs []Iovec, off int64) (n int, err error)\n\nfunc Preadv(fd int, iovs [][]byte, off int64) (n int, err error) {\n\tiovecs := bytes2iovec(iovs)\n\tn, err = preadv(fd, iovecs, off)\n\treturn n, err\n}\n\n//sys\twritev(fd int, iovs []Iovec) (n int, err error)\n\nfunc Writev(fd int, iovs [][]byte) (n int, err error) {\n\tiovecs := bytes2iovec(iovs)\n\tn, err = writev(fd, iovecs)\n\treturn n, err\n}\n\n//sys\tpwritev(fd int, iovs []Iovec, off int64) (n int, err error)\n\nfunc Pwritev(fd int, iovs [][]byte, off int64) (n int, err error) {\n\tiovecs := bytes2iovec(iovs)\n\tn, err = pwritev(fd, iovecs, off)\n\treturn n, err\n}\n\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) = libsocket.accept4\n\nfunc Accept4(fd int, flags int) (nfd int, sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tnfd, err = accept4(fd, &rsa, &len, flags)\n\tif err != nil {\n\t\treturn\n\t}\n\tif len > SizeofSockaddrAny {\n\t\tpanic(\"RawSockaddrAny too small\")\n\t}\n\tsa, err = anyToSockaddr(fd, &rsa)\n\tif err != nil {\n\t\tClose(nfd)\n\t\tnfd = 0\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_linux.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Linux system calls.\n// This file is compiled as ordinary Go code,\n// but it is also input to mksyscall,\n// which parses the //sys lines and generates system call stubs.\n// Note that sometimes we use a lowercase //sys name and\n// wrap it in our own nicer implementation.\n\npackage unix\n\nimport (\n\t\"encoding/binary\"\n\t\"slices\"\n\t\"strconv\"\n\t\"syscall\"\n\t\"time\"\n\t\"unsafe\"\n)\n\n/*\n * Wrapped\n */\n\nfunc Access(path string, mode uint32) (err error) {\n\treturn Faccessat(AT_FDCWD, path, mode, 0)\n}\n\nfunc Chmod(path string, mode uint32) (err error) {\n\treturn Fchmodat(AT_FDCWD, path, mode, 0)\n}\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\treturn Fchownat(AT_FDCWD, path, uid, gid, 0)\n}\n\nfunc Creat(path string, mode uint32) (fd int, err error) {\n\treturn Open(path, O_CREAT|O_WRONLY|O_TRUNC, mode)\n}\n\nfunc EpollCreate(size int) (fd int, err error) {\n\tif size <= 0 {\n\t\treturn -1, EINVAL\n\t}\n\treturn EpollCreate1(0)\n}\n\n//sys\tFanotifyInit(flags uint, event_f_flags uint) (fd int, err error)\n//sys\tfanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error)\n\nfunc FanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname string) (err error) {\n\tif pathname == \"\" {\n\t\treturn fanotifyMark(fd, flags, mask, dirFd, nil)\n\t}\n\tp, err := BytePtrFromString(pathname)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn fanotifyMark(fd, flags, mask, dirFd, p)\n}\n\n//sys\tfchmodat(dirfd int, path string, mode uint32) (err error)\n//sys\tfchmodat2(dirfd int, path string, mode uint32, flags int) (err error)\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) error {\n\t// Linux fchmodat doesn't support the flags parameter, but fchmodat2 does.\n\t// Try fchmodat2 if flags are specified.\n\tif flags != 0 {\n\t\terr := fchmodat2(dirfd, path, mode, flags)\n\t\tif err == ENOSYS {\n\t\t\t// fchmodat2 isn't available. If the flags are known to be valid,\n\t\t\t// return EOPNOTSUPP to indicate that fchmodat doesn't support them.\n\t\t\tif flags&^(AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) != 0 {\n\t\t\t\treturn EINVAL\n\t\t\t} else if flags&(AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) != 0 {\n\t\t\t\treturn EOPNOTSUPP\n\t\t\t}\n\t\t}\n\t\treturn err\n\t}\n\treturn fchmodat(dirfd, path, mode)\n}\n\nfunc InotifyInit() (fd int, err error) {\n\treturn InotifyInit1(0)\n}\n\n//sys\tioctl(fd int, req uint, arg uintptr) (err error) = SYS_IOCTL\n//sys\tioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) = SYS_IOCTL\n\n// ioctl itself should not be exposed directly, but additional get/set functions\n// for specific types are permissible. These are defined in ioctl.go and\n// ioctl_linux.go.\n//\n// The third argument to ioctl is often a pointer but sometimes an integer.\n// Callers should use ioctlPtr when the third argument is a pointer and ioctl\n// when the third argument is an integer.\n//\n// TODO: some existing code incorrectly uses ioctl when it should use ioctlPtr.\n\n//sys\tLinkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error)\n\nfunc Link(oldpath string, newpath string) (err error) {\n\treturn Linkat(AT_FDCWD, oldpath, AT_FDCWD, newpath, 0)\n}\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\treturn Mkdirat(AT_FDCWD, path, mode)\n}\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\treturn Mknodat(AT_FDCWD, path, mode, dev)\n}\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\treturn openat(AT_FDCWD, path, mode|O_LARGEFILE, perm)\n}\n\n//sys\topenat(dirfd int, path string, flags int, mode uint32) (fd int, err error)\n\nfunc Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {\n\treturn openat(dirfd, path, flags|O_LARGEFILE, mode)\n}\n\n//sys\topenat2(dirfd int, path string, open_how *OpenHow, size int) (fd int, err error)\n\nfunc Openat2(dirfd int, path string, how *OpenHow) (fd int, err error) {\n\treturn openat2(dirfd, path, how, SizeofOpenHow)\n}\n\nfunc Pipe(p []int) error {\n\treturn Pipe2(p, 0)\n}\n\n//sysnb\tpipe2(p *[2]_C_int, flags int) (err error)\n\nfunc Pipe2(p []int, flags int) error {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\terr := pipe2(&pp, flags)\n\tif err == nil {\n\t\tp[0] = int(pp[0])\n\t\tp[1] = int(pp[1])\n\t}\n\treturn err\n}\n\n//sys\tppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error)\n\nfunc Ppoll(fds []PollFd, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tif len(fds) == 0 {\n\t\treturn ppoll(nil, 0, timeout, sigmask)\n\t}\n\treturn ppoll(&fds[0], len(fds), timeout, sigmask)\n}\n\nfunc Poll(fds []PollFd, timeout int) (n int, err error) {\n\tvar ts *Timespec\n\tif timeout >= 0 {\n\t\tts = new(Timespec)\n\t\t*ts = NsecToTimespec(int64(timeout) * 1e6)\n\t}\n\treturn Ppoll(fds, ts, nil)\n}\n\n//sys\tReadlinkat(dirfd int, path string, buf []byte) (n int, err error)\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\treturn Readlinkat(AT_FDCWD, path, buf)\n}\n\nfunc Rename(oldpath string, newpath string) (err error) {\n\treturn Renameat(AT_FDCWD, oldpath, AT_FDCWD, newpath)\n}\n\nfunc Rmdir(path string) error {\n\treturn Unlinkat(AT_FDCWD, path, AT_REMOVEDIR)\n}\n\n//sys\tSymlinkat(oldpath string, newdirfd int, newpath string) (err error)\n\nfunc Symlink(oldpath string, newpath string) (err error) {\n\treturn Symlinkat(oldpath, AT_FDCWD, newpath)\n}\n\nfunc Unlink(path string) error {\n\treturn Unlinkat(AT_FDCWD, path, 0)\n}\n\n//sys\tUnlinkat(dirfd int, path string, flags int) (err error)\n\nfunc Utimes(path string, tv []Timeval) error {\n\tif tv == nil {\n\t\terr := utimensat(AT_FDCWD, path, nil, 0)\n\t\tif err != ENOSYS {\n\t\t\treturn err\n\t\t}\n\t\treturn utimes(path, nil)\n\t}\n\tif len(tv) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar ts [2]Timespec\n\tts[0] = NsecToTimespec(TimevalToNsec(tv[0]))\n\tts[1] = NsecToTimespec(TimevalToNsec(tv[1]))\n\terr := utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)\n\tif err != ENOSYS {\n\t\treturn err\n\t}\n\treturn utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))\n}\n\n//sys\tutimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error)\n\nfunc UtimesNano(path string, ts []Timespec) error {\n\treturn UtimesNanoAt(AT_FDCWD, path, ts, 0)\n}\n\nfunc UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error {\n\tif ts == nil {\n\t\treturn utimensat(dirfd, path, nil, flags)\n\t}\n\tif len(ts) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags)\n}\n\nfunc Futimesat(dirfd int, path string, tv []Timeval) error {\n\tif tv == nil {\n\t\treturn futimesat(dirfd, path, nil)\n\t}\n\tif len(tv) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn futimesat(dirfd, path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))\n}\n\nfunc Futimes(fd int, tv []Timeval) (err error) {\n\t// Believe it or not, this is the best we can do on Linux\n\t// (and is what glibc does).\n\treturn Utimes(\"/proc/self/fd/\"+strconv.Itoa(fd), tv)\n}\n\nconst ImplementsGetwd = true\n\n//sys\tGetcwd(buf []byte) (n int, err error)\n\nfunc Getwd() (wd string, err error) {\n\tvar buf [PathMax]byte\n\tn, err := Getcwd(buf[0:])\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\t// Getcwd returns the number of bytes written to buf, including the NUL.\n\tif n < 1 || n > len(buf) || buf[n-1] != 0 {\n\t\treturn \"\", EINVAL\n\t}\n\t// In some cases, Linux can return a path that starts with the\n\t// \"(unreachable)\" prefix, which can potentially be a valid relative\n\t// path. To work around that, return ENOENT if path is not absolute.\n\tif buf[0] != '/' {\n\t\treturn \"\", ENOENT\n\t}\n\n\treturn string(buf[0 : n-1]), nil\n}\n\nfunc Getgroups() (gids []int, err error) {\n\tn, err := getgroups(0, nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif n == 0 {\n\t\treturn nil, nil\n\t}\n\n\t// Sanity check group count. Max is 1<<16 on Linux.\n\tif n < 0 || n > 1<<20 {\n\t\treturn nil, EINVAL\n\t}\n\n\ta := make([]_Gid_t, n)\n\tn, err = getgroups(n, &a[0])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tgids = make([]int, n)\n\tfor i, v := range a[0:n] {\n\t\tgids[i] = int(v)\n\t}\n\treturn\n}\n\nfunc Setgroups(gids []int) (err error) {\n\tif len(gids) == 0 {\n\t\treturn setgroups(0, nil)\n\t}\n\n\ta := make([]_Gid_t, len(gids))\n\tfor i, v := range gids {\n\t\ta[i] = _Gid_t(v)\n\t}\n\treturn setgroups(len(a), &a[0])\n}\n\ntype WaitStatus uint32\n\n// Wait status is 7 bits at bottom, either 0 (exited),\n// 0x7F (stopped), or a signal number that caused an exit.\n// The 0x80 bit is whether there was a core dump.\n// An extra number (exit code, signal causing a stop)\n// is in the high bits. At least that's the idea.\n// There are various irregularities. For example, the\n// \"continued\" status is 0xFFFF, distinguishing itself\n// from stopped via the core dump bit.\n\nconst (\n\tmask    = 0x7F\n\tcore    = 0x80\n\texited  = 0x00\n\tstopped = 0x7F\n\tshift   = 8\n)\n\nfunc (w WaitStatus) Exited() bool { return w&mask == exited }\n\nfunc (w WaitStatus) Signaled() bool { return w&mask != stopped && w&mask != exited }\n\nfunc (w WaitStatus) Stopped() bool { return w&0xFF == stopped }\n\nfunc (w WaitStatus) Continued() bool { return w == 0xFFFF }\n\nfunc (w WaitStatus) CoreDump() bool { return w.Signaled() && w&core != 0 }\n\nfunc (w WaitStatus) ExitStatus() int {\n\tif !w.Exited() {\n\t\treturn -1\n\t}\n\treturn int(w>>shift) & 0xFF\n}\n\nfunc (w WaitStatus) Signal() syscall.Signal {\n\tif !w.Signaled() {\n\t\treturn -1\n\t}\n\treturn syscall.Signal(w & mask)\n}\n\nfunc (w WaitStatus) StopSignal() syscall.Signal {\n\tif !w.Stopped() {\n\t\treturn -1\n\t}\n\treturn syscall.Signal(w>>shift) & 0xFF\n}\n\nfunc (w WaitStatus) TrapCause() int {\n\tif w.StopSignal() != SIGTRAP {\n\t\treturn -1\n\t}\n\treturn int(w>>shift) >> 8\n}\n\n//sys\twait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error)\n\nfunc Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) {\n\tvar status _C_int\n\twpid, err = wait4(pid, &status, options, rusage)\n\tif wstatus != nil {\n\t\t*wstatus = WaitStatus(status)\n\t}\n\treturn\n}\n\n//sys\tWaitid(idType int, id int, info *Siginfo, options int, rusage *Rusage) (err error)\n\nfunc Mkfifo(path string, mode uint32) error {\n\treturn Mknod(path, mode|S_IFIFO, 0)\n}\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) error {\n\treturn Mknodat(dirfd, path, mode|S_IFIFO, 0)\n}\n\nfunc (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Port < 0 || sa.Port > 0xFFFF {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_INET\n\tp := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))\n\tp[0] = byte(sa.Port >> 8)\n\tp[1] = byte(sa.Port)\n\tsa.raw.Addr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrInet4, nil\n}\n\nfunc (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Port < 0 || sa.Port > 0xFFFF {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_INET6\n\tp := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))\n\tp[0] = byte(sa.Port >> 8)\n\tp[1] = byte(sa.Port)\n\tsa.raw.Scope_id = sa.ZoneId\n\tsa.raw.Addr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrInet6, nil\n}\n\nfunc (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tname := sa.Name\n\tn := len(name)\n\tif n >= len(sa.raw.Path) {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_UNIX\n\tfor i := range n {\n\t\tsa.raw.Path[i] = int8(name[i])\n\t}\n\t// length is family (uint16), name, NUL.\n\tsl := _Socklen(2)\n\tif n > 0 {\n\t\tsl += _Socklen(n) + 1\n\t}\n\tif sa.raw.Path[0] == '@' || (sa.raw.Path[0] == 0 && sl > 3) {\n\t\t// Check sl > 3 so we don't change unnamed socket behavior.\n\t\tsa.raw.Path[0] = 0\n\t\t// Don't count trailing NUL for abstract address.\n\t\tsl--\n\t}\n\n\treturn unsafe.Pointer(&sa.raw), sl, nil\n}\n\n// SockaddrLinklayer implements the Sockaddr interface for AF_PACKET type sockets.\ntype SockaddrLinklayer struct {\n\tProtocol uint16\n\tIfindex  int\n\tHatype   uint16\n\tPkttype  uint8\n\tHalen    uint8\n\tAddr     [8]byte\n\traw      RawSockaddrLinklayer\n}\n\nfunc (sa *SockaddrLinklayer) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Ifindex < 0 || sa.Ifindex > 0x7fffffff {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_PACKET\n\tsa.raw.Protocol = sa.Protocol\n\tsa.raw.Ifindex = int32(sa.Ifindex)\n\tsa.raw.Hatype = sa.Hatype\n\tsa.raw.Pkttype = sa.Pkttype\n\tsa.raw.Halen = sa.Halen\n\tsa.raw.Addr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrLinklayer, nil\n}\n\n// SockaddrNetlink implements the Sockaddr interface for AF_NETLINK type sockets.\ntype SockaddrNetlink struct {\n\tFamily uint16\n\tPad    uint16\n\tPid    uint32\n\tGroups uint32\n\traw    RawSockaddrNetlink\n}\n\nfunc (sa *SockaddrNetlink) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tsa.raw.Family = AF_NETLINK\n\tsa.raw.Pad = sa.Pad\n\tsa.raw.Pid = sa.Pid\n\tsa.raw.Groups = sa.Groups\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrNetlink, nil\n}\n\n// SockaddrHCI implements the Sockaddr interface for AF_BLUETOOTH type sockets\n// using the HCI protocol.\ntype SockaddrHCI struct {\n\tDev     uint16\n\tChannel uint16\n\traw     RawSockaddrHCI\n}\n\nfunc (sa *SockaddrHCI) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tsa.raw.Family = AF_BLUETOOTH\n\tsa.raw.Dev = sa.Dev\n\tsa.raw.Channel = sa.Channel\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrHCI, nil\n}\n\n// SockaddrL2 implements the Sockaddr interface for AF_BLUETOOTH type sockets\n// using the L2CAP protocol.\ntype SockaddrL2 struct {\n\tPSM      uint16\n\tCID      uint16\n\tAddr     [6]uint8\n\tAddrType uint8\n\traw      RawSockaddrL2\n}\n\nfunc (sa *SockaddrL2) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tsa.raw.Family = AF_BLUETOOTH\n\tpsm := (*[2]byte)(unsafe.Pointer(&sa.raw.Psm))\n\tpsm[0] = byte(sa.PSM)\n\tpsm[1] = byte(sa.PSM >> 8)\n\tfor i := range len(sa.Addr) {\n\t\tsa.raw.Bdaddr[i] = sa.Addr[len(sa.Addr)-1-i]\n\t}\n\tcid := (*[2]byte)(unsafe.Pointer(&sa.raw.Cid))\n\tcid[0] = byte(sa.CID)\n\tcid[1] = byte(sa.CID >> 8)\n\tsa.raw.Bdaddr_type = sa.AddrType\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrL2, nil\n}\n\n// SockaddrRFCOMM implements the Sockaddr interface for AF_BLUETOOTH type sockets\n// using the RFCOMM protocol.\n//\n// Server example:\n//\n//\tfd, _ := Socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM)\n//\t_ = unix.Bind(fd, &unix.SockaddrRFCOMM{\n//\t\tChannel: 1,\n//\t\tAddr:    [6]uint8{0, 0, 0, 0, 0, 0}, // BDADDR_ANY or 00:00:00:00:00:00\n//\t})\n//\t_ = Listen(fd, 1)\n//\tnfd, sa, _ := Accept(fd)\n//\tfmt.Printf(\"conn addr=%v fd=%d\", sa.(*unix.SockaddrRFCOMM).Addr, nfd)\n//\tRead(nfd, buf)\n//\n// Client example:\n//\n//\tfd, _ := Socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM)\n//\t_ = Connect(fd, &SockaddrRFCOMM{\n//\t\tChannel: 1,\n//\t\tAddr:    [6]byte{0x11, 0x22, 0x33, 0xaa, 0xbb, 0xcc}, // CC:BB:AA:33:22:11\n//\t})\n//\tWrite(fd, []byte(`hello`))\ntype SockaddrRFCOMM struct {\n\t// Addr represents a bluetooth address, byte ordering is little-endian.\n\tAddr [6]uint8\n\n\t// Channel is a designated bluetooth channel, only 1-30 are available for use.\n\t// Since Linux 2.6.7 and further zero value is the first available channel.\n\tChannel uint8\n\n\traw RawSockaddrRFCOMM\n}\n\nfunc (sa *SockaddrRFCOMM) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tsa.raw.Family = AF_BLUETOOTH\n\tsa.raw.Channel = sa.Channel\n\tsa.raw.Bdaddr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrRFCOMM, nil\n}\n\n// SockaddrCAN implements the Sockaddr interface for AF_CAN type sockets.\n// The RxID and TxID fields are used for transport protocol addressing in\n// (CAN_TP16, CAN_TP20, CAN_MCNET, and CAN_ISOTP), they can be left with\n// zero values for CAN_RAW and CAN_BCM sockets as they have no meaning.\n//\n// The SockaddrCAN struct must be bound to the socket file descriptor\n// using Bind before the CAN socket can be used.\n//\n//\t// Read one raw CAN frame\n//\tfd, _ := Socket(AF_CAN, SOCK_RAW, CAN_RAW)\n//\taddr := &SockaddrCAN{Ifindex: index}\n//\tBind(fd, addr)\n//\tframe := make([]byte, 16)\n//\tRead(fd, frame)\n//\n// The full SocketCAN documentation can be found in the linux kernel\n// archives at: https://www.kernel.org/doc/Documentation/networking/can.txt\ntype SockaddrCAN struct {\n\tIfindex int\n\tRxID    uint32\n\tTxID    uint32\n\traw     RawSockaddrCAN\n}\n\nfunc (sa *SockaddrCAN) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Ifindex < 0 || sa.Ifindex > 0x7fffffff {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_CAN\n\tsa.raw.Ifindex = int32(sa.Ifindex)\n\trx := (*[4]byte)(unsafe.Pointer(&sa.RxID))\n\tfor i := range 4 {\n\t\tsa.raw.Addr[i] = rx[i]\n\t}\n\ttx := (*[4]byte)(unsafe.Pointer(&sa.TxID))\n\tfor i := range 4 {\n\t\tsa.raw.Addr[i+4] = tx[i]\n\t}\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrCAN, nil\n}\n\n// SockaddrCANJ1939 implements the Sockaddr interface for AF_CAN using J1939\n// protocol (https://en.wikipedia.org/wiki/SAE_J1939). For more information\n// on the purposes of the fields, check the official linux kernel documentation\n// available here: https://www.kernel.org/doc/Documentation/networking/j1939.rst\ntype SockaddrCANJ1939 struct {\n\tIfindex int\n\tName    uint64\n\tPGN     uint32\n\tAddr    uint8\n\traw     RawSockaddrCAN\n}\n\nfunc (sa *SockaddrCANJ1939) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Ifindex < 0 || sa.Ifindex > 0x7fffffff {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_CAN\n\tsa.raw.Ifindex = int32(sa.Ifindex)\n\tn := (*[8]byte)(unsafe.Pointer(&sa.Name))\n\tfor i := range 8 {\n\t\tsa.raw.Addr[i] = n[i]\n\t}\n\tp := (*[4]byte)(unsafe.Pointer(&sa.PGN))\n\tfor i := range 4 {\n\t\tsa.raw.Addr[i+8] = p[i]\n\t}\n\tsa.raw.Addr[12] = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrCAN, nil\n}\n\n// SockaddrALG implements the Sockaddr interface for AF_ALG type sockets.\n// SockaddrALG enables userspace access to the Linux kernel's cryptography\n// subsystem. The Type and Name fields specify which type of hash or cipher\n// should be used with a given socket.\n//\n// To create a file descriptor that provides access to a hash or cipher, both\n// Bind and Accept must be used. Once the setup process is complete, input\n// data can be written to the socket, processed by the kernel, and then read\n// back as hash output or ciphertext.\n//\n// Here is an example of using an AF_ALG socket with SHA1 hashing.\n// The initial socket setup process is as follows:\n//\n//\t// Open a socket to perform SHA1 hashing.\n//\tfd, _ := unix.Socket(unix.AF_ALG, unix.SOCK_SEQPACKET, 0)\n//\taddr := &unix.SockaddrALG{Type: \"hash\", Name: \"sha1\"}\n//\tunix.Bind(fd, addr)\n//\t// Note: unix.Accept does not work at this time; must invoke accept()\n//\t// manually using unix.Syscall.\n//\thashfd, _, _ := unix.Syscall(unix.SYS_ACCEPT, uintptr(fd), 0, 0)\n//\n// Once a file descriptor has been returned from Accept, it may be used to\n// perform SHA1 hashing. The descriptor is not safe for concurrent use, but\n// may be re-used repeatedly with subsequent Write and Read operations.\n//\n// When hashing a small byte slice or string, a single Write and Read may\n// be used:\n//\n//\t// Assume hashfd is already configured using the setup process.\n//\thash := os.NewFile(hashfd, \"sha1\")\n//\t// Hash an input string and read the results. Each Write discards\n//\t// previous hash state. Read always reads the current state.\n//\tb := make([]byte, 20)\n//\tfor i := 0; i < 2; i++ {\n//\t    io.WriteString(hash, \"Hello, world.\")\n//\t    hash.Read(b)\n//\t    fmt.Println(hex.EncodeToString(b))\n//\t}\n//\t// Output:\n//\t// 2ae01472317d1935a84797ec1983ae243fc6aa28\n//\t// 2ae01472317d1935a84797ec1983ae243fc6aa28\n//\n// For hashing larger byte slices, or byte streams such as those read from\n// a file or socket, use Sendto with MSG_MORE to instruct the kernel to update\n// the hash digest instead of creating a new one for a given chunk and finalizing it.\n//\n//\t// Assume hashfd and addr are already configured using the setup process.\n//\thash := os.NewFile(hashfd, \"sha1\")\n//\t// Hash the contents of a file.\n//\tf, _ := os.Open(\"/tmp/linux-4.10-rc7.tar.xz\")\n//\tb := make([]byte, 4096)\n//\tfor {\n//\t    n, err := f.Read(b)\n//\t    if err == io.EOF {\n//\t        break\n//\t    }\n//\t    unix.Sendto(hashfd, b[:n], unix.MSG_MORE, addr)\n//\t}\n//\thash.Read(b)\n//\tfmt.Println(hex.EncodeToString(b))\n//\t// Output: 85cdcad0c06eef66f805ecce353bec9accbeecc5\n//\n// For more information, see: http://www.chronox.de/crypto-API/crypto/userspace-if.html.\ntype SockaddrALG struct {\n\tType    string\n\tName    string\n\tFeature uint32\n\tMask    uint32\n\traw     RawSockaddrALG\n}\n\nfunc (sa *SockaddrALG) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\t// Leave room for NUL byte terminator.\n\tif len(sa.Type) > len(sa.raw.Type)-1 {\n\t\treturn nil, 0, EINVAL\n\t}\n\tif len(sa.Name) > len(sa.raw.Name)-1 {\n\t\treturn nil, 0, EINVAL\n\t}\n\n\tsa.raw.Family = AF_ALG\n\tsa.raw.Feat = sa.Feature\n\tsa.raw.Mask = sa.Mask\n\n\tcopy(sa.raw.Type[:], sa.Type)\n\tcopy(sa.raw.Name[:], sa.Name)\n\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrALG, nil\n}\n\n// SockaddrVM implements the Sockaddr interface for AF_VSOCK type sockets.\n// SockaddrVM provides access to Linux VM sockets: a mechanism that enables\n// bidirectional communication between a hypervisor and its guest virtual\n// machines.\ntype SockaddrVM struct {\n\t// CID and Port specify a context ID and port address for a VM socket.\n\t// Guests have a unique CID, and hosts may have a well-known CID of:\n\t//  - VMADDR_CID_HYPERVISOR: refers to the hypervisor process.\n\t//  - VMADDR_CID_LOCAL: refers to local communication (loopback).\n\t//  - VMADDR_CID_HOST: refers to other processes on the host.\n\tCID   uint32\n\tPort  uint32\n\tFlags uint8\n\traw   RawSockaddrVM\n}\n\nfunc (sa *SockaddrVM) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tsa.raw.Family = AF_VSOCK\n\tsa.raw.Port = sa.Port\n\tsa.raw.Cid = sa.CID\n\tsa.raw.Flags = sa.Flags\n\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrVM, nil\n}\n\ntype SockaddrXDP struct {\n\tFlags        uint16\n\tIfindex      uint32\n\tQueueID      uint32\n\tSharedUmemFD uint32\n\traw          RawSockaddrXDP\n}\n\nfunc (sa *SockaddrXDP) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tsa.raw.Family = AF_XDP\n\tsa.raw.Flags = sa.Flags\n\tsa.raw.Ifindex = sa.Ifindex\n\tsa.raw.Queue_id = sa.QueueID\n\tsa.raw.Shared_umem_fd = sa.SharedUmemFD\n\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrXDP, nil\n}\n\n// This constant mirrors the #define of PX_PROTO_OE in\n// linux/if_pppox.h. We're defining this by hand here instead of\n// autogenerating through mkerrors.sh because including\n// linux/if_pppox.h causes some declaration conflicts with other\n// includes (linux/if_pppox.h includes linux/in.h, which conflicts\n// with netinet/in.h). Given that we only need a single zero constant\n// out of that file, it's cleaner to just define it by hand here.\nconst px_proto_oe = 0\n\ntype SockaddrPPPoE struct {\n\tSID    uint16\n\tRemote []byte\n\tDev    string\n\traw    RawSockaddrPPPoX\n}\n\nfunc (sa *SockaddrPPPoE) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif len(sa.Remote) != 6 {\n\t\treturn nil, 0, EINVAL\n\t}\n\tif len(sa.Dev) > IFNAMSIZ-1 {\n\t\treturn nil, 0, EINVAL\n\t}\n\n\t*(*uint16)(unsafe.Pointer(&sa.raw[0])) = AF_PPPOX\n\t// This next field is in host-endian byte order. We can't use the\n\t// same unsafe pointer cast as above, because this value is not\n\t// 32-bit aligned and some architectures don't allow unaligned\n\t// access.\n\t//\n\t// However, the value of px_proto_oe is 0, so we can use\n\t// encoding/binary helpers to write the bytes without worrying\n\t// about the ordering.\n\tbinary.BigEndian.PutUint32(sa.raw[2:6], px_proto_oe)\n\t// This field is deliberately big-endian, unlike the previous\n\t// one. The kernel expects SID to be in network byte order.\n\tbinary.BigEndian.PutUint16(sa.raw[6:8], sa.SID)\n\tcopy(sa.raw[8:14], sa.Remote)\n\tclear(sa.raw[14 : 14+IFNAMSIZ])\n\tcopy(sa.raw[14:], sa.Dev)\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrPPPoX, nil\n}\n\n// SockaddrTIPC implements the Sockaddr interface for AF_TIPC type sockets.\n// For more information on TIPC, see: http://tipc.sourceforge.net/.\ntype SockaddrTIPC struct {\n\t// Scope is the publication scopes when binding service/service range.\n\t// Should be set to TIPC_CLUSTER_SCOPE or TIPC_NODE_SCOPE.\n\tScope int\n\n\t// Addr is the type of address used to manipulate a socket. Addr must be\n\t// one of:\n\t//  - *TIPCSocketAddr: \"id\" variant in the C addr union\n\t//  - *TIPCServiceRange: \"nameseq\" variant in the C addr union\n\t//  - *TIPCServiceName: \"name\" variant in the C addr union\n\t//\n\t// If nil, EINVAL will be returned when the structure is used.\n\tAddr TIPCAddr\n\n\traw RawSockaddrTIPC\n}\n\n// TIPCAddr is implemented by types that can be used as an address for\n// SockaddrTIPC. It is only implemented by *TIPCSocketAddr, *TIPCServiceRange,\n// and *TIPCServiceName.\ntype TIPCAddr interface {\n\ttipcAddrtype() uint8\n\ttipcAddr() [12]byte\n}\n\nfunc (sa *TIPCSocketAddr) tipcAddr() [12]byte {\n\tvar out [12]byte\n\tcopy(out[:], (*(*[unsafe.Sizeof(TIPCSocketAddr{})]byte)(unsafe.Pointer(sa)))[:])\n\treturn out\n}\n\nfunc (sa *TIPCSocketAddr) tipcAddrtype() uint8 { return TIPC_SOCKET_ADDR }\n\nfunc (sa *TIPCServiceRange) tipcAddr() [12]byte {\n\tvar out [12]byte\n\tcopy(out[:], (*(*[unsafe.Sizeof(TIPCServiceRange{})]byte)(unsafe.Pointer(sa)))[:])\n\treturn out\n}\n\nfunc (sa *TIPCServiceRange) tipcAddrtype() uint8 { return TIPC_SERVICE_RANGE }\n\nfunc (sa *TIPCServiceName) tipcAddr() [12]byte {\n\tvar out [12]byte\n\tcopy(out[:], (*(*[unsafe.Sizeof(TIPCServiceName{})]byte)(unsafe.Pointer(sa)))[:])\n\treturn out\n}\n\nfunc (sa *TIPCServiceName) tipcAddrtype() uint8 { return TIPC_SERVICE_ADDR }\n\nfunc (sa *SockaddrTIPC) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Addr == nil {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_TIPC\n\tsa.raw.Scope = int8(sa.Scope)\n\tsa.raw.Addrtype = sa.Addr.tipcAddrtype()\n\tsa.raw.Addr = sa.Addr.tipcAddr()\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrTIPC, nil\n}\n\n// SockaddrL2TPIP implements the Sockaddr interface for IPPROTO_L2TP/AF_INET sockets.\ntype SockaddrL2TPIP struct {\n\tAddr   [4]byte\n\tConnId uint32\n\traw    RawSockaddrL2TPIP\n}\n\nfunc (sa *SockaddrL2TPIP) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tsa.raw.Family = AF_INET\n\tsa.raw.Conn_id = sa.ConnId\n\tsa.raw.Addr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrL2TPIP, nil\n}\n\n// SockaddrL2TPIP6 implements the Sockaddr interface for IPPROTO_L2TP/AF_INET6 sockets.\ntype SockaddrL2TPIP6 struct {\n\tAddr   [16]byte\n\tZoneId uint32\n\tConnId uint32\n\traw    RawSockaddrL2TPIP6\n}\n\nfunc (sa *SockaddrL2TPIP6) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tsa.raw.Family = AF_INET6\n\tsa.raw.Conn_id = sa.ConnId\n\tsa.raw.Scope_id = sa.ZoneId\n\tsa.raw.Addr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrL2TPIP6, nil\n}\n\n// SockaddrIUCV implements the Sockaddr interface for AF_IUCV sockets.\ntype SockaddrIUCV struct {\n\tUserID string\n\tName   string\n\traw    RawSockaddrIUCV\n}\n\nfunc (sa *SockaddrIUCV) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tsa.raw.Family = AF_IUCV\n\t// These are EBCDIC encoded by the kernel, but we still need to pad them\n\t// with blanks. Initializing with blanks allows the caller to feed in either\n\t// a padded or an unpadded string.\n\tfor i := range 8 {\n\t\tsa.raw.Nodeid[i] = ' '\n\t\tsa.raw.User_id[i] = ' '\n\t\tsa.raw.Name[i] = ' '\n\t}\n\tif len(sa.UserID) > 8 || len(sa.Name) > 8 {\n\t\treturn nil, 0, EINVAL\n\t}\n\tfor i, b := range []byte(sa.UserID[:]) {\n\t\tsa.raw.User_id[i] = int8(b)\n\t}\n\tfor i, b := range []byte(sa.Name[:]) {\n\t\tsa.raw.Name[i] = int8(b)\n\t}\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrIUCV, nil\n}\n\ntype SockaddrNFC struct {\n\tDeviceIdx   uint32\n\tTargetIdx   uint32\n\tNFCProtocol uint32\n\traw         RawSockaddrNFC\n}\n\nfunc (sa *SockaddrNFC) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tsa.raw.Sa_family = AF_NFC\n\tsa.raw.Dev_idx = sa.DeviceIdx\n\tsa.raw.Target_idx = sa.TargetIdx\n\tsa.raw.Nfc_protocol = sa.NFCProtocol\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrNFC, nil\n}\n\ntype SockaddrNFCLLCP struct {\n\tDeviceIdx      uint32\n\tTargetIdx      uint32\n\tNFCProtocol    uint32\n\tDestinationSAP uint8\n\tSourceSAP      uint8\n\tServiceName    string\n\traw            RawSockaddrNFCLLCP\n}\n\nfunc (sa *SockaddrNFCLLCP) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tsa.raw.Sa_family = AF_NFC\n\tsa.raw.Dev_idx = sa.DeviceIdx\n\tsa.raw.Target_idx = sa.TargetIdx\n\tsa.raw.Nfc_protocol = sa.NFCProtocol\n\tsa.raw.Dsap = sa.DestinationSAP\n\tsa.raw.Ssap = sa.SourceSAP\n\tif len(sa.ServiceName) > len(sa.raw.Service_name) {\n\t\treturn nil, 0, EINVAL\n\t}\n\tcopy(sa.raw.Service_name[:], sa.ServiceName)\n\tsa.raw.SetServiceNameLen(len(sa.ServiceName))\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrNFCLLCP, nil\n}\n\nvar socketProtocol = func(fd int) (int, error) {\n\treturn GetsockoptInt(fd, SOL_SOCKET, SO_PROTOCOL)\n}\n\nfunc anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {\n\tswitch rsa.Addr.Family {\n\tcase AF_NETLINK:\n\t\tpp := (*RawSockaddrNetlink)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrNetlink)\n\t\tsa.Family = pp.Family\n\t\tsa.Pad = pp.Pad\n\t\tsa.Pid = pp.Pid\n\t\tsa.Groups = pp.Groups\n\t\treturn sa, nil\n\n\tcase AF_PACKET:\n\t\tpp := (*RawSockaddrLinklayer)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrLinklayer)\n\t\tsa.Protocol = pp.Protocol\n\t\tsa.Ifindex = int(pp.Ifindex)\n\t\tsa.Hatype = pp.Hatype\n\t\tsa.Pkttype = pp.Pkttype\n\t\tsa.Halen = pp.Halen\n\t\tsa.Addr = pp.Addr\n\t\treturn sa, nil\n\n\tcase AF_UNIX:\n\t\tpp := (*RawSockaddrUnix)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrUnix)\n\t\tif pp.Path[0] == 0 {\n\t\t\t// \"Abstract\" Unix domain socket.\n\t\t\t// Rewrite leading NUL as @ for textual display.\n\t\t\t// (This is the standard convention.)\n\t\t\t// Not friendly to overwrite in place,\n\t\t\t// but the callers below don't care.\n\t\t\tpp.Path[0] = '@'\n\t\t}\n\n\t\t// Assume path ends at NUL.\n\t\t// This is not technically the Linux semantics for\n\t\t// abstract Unix domain sockets--they are supposed\n\t\t// to be uninterpreted fixed-size binary blobs--but\n\t\t// everyone uses this convention.\n\t\tn := 0\n\t\tfor n < len(pp.Path) && pp.Path[n] != 0 {\n\t\t\tn++\n\t\t}\n\t\tsa.Name = string(unsafe.Slice((*byte)(unsafe.Pointer(&pp.Path[0])), n))\n\t\treturn sa, nil\n\n\tcase AF_INET:\n\t\tproto, err := socketProtocol(fd)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tswitch proto {\n\t\tcase IPPROTO_L2TP:\n\t\t\tpp := (*RawSockaddrL2TPIP)(unsafe.Pointer(rsa))\n\t\t\tsa := new(SockaddrL2TPIP)\n\t\t\tsa.ConnId = pp.Conn_id\n\t\t\tsa.Addr = pp.Addr\n\t\t\treturn sa, nil\n\t\tdefault:\n\t\t\tpp := (*RawSockaddrInet4)(unsafe.Pointer(rsa))\n\t\t\tsa := new(SockaddrInet4)\n\t\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\t\tsa.Addr = pp.Addr\n\t\t\treturn sa, nil\n\t\t}\n\n\tcase AF_INET6:\n\t\tproto, err := socketProtocol(fd)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tswitch proto {\n\t\tcase IPPROTO_L2TP:\n\t\t\tpp := (*RawSockaddrL2TPIP6)(unsafe.Pointer(rsa))\n\t\t\tsa := new(SockaddrL2TPIP6)\n\t\t\tsa.ConnId = pp.Conn_id\n\t\t\tsa.ZoneId = pp.Scope_id\n\t\t\tsa.Addr = pp.Addr\n\t\t\treturn sa, nil\n\t\tdefault:\n\t\t\tpp := (*RawSockaddrInet6)(unsafe.Pointer(rsa))\n\t\t\tsa := new(SockaddrInet6)\n\t\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\t\tsa.ZoneId = pp.Scope_id\n\t\t\tsa.Addr = pp.Addr\n\t\t\treturn sa, nil\n\t\t}\n\n\tcase AF_VSOCK:\n\t\tpp := (*RawSockaddrVM)(unsafe.Pointer(rsa))\n\t\tsa := &SockaddrVM{\n\t\t\tCID:   pp.Cid,\n\t\t\tPort:  pp.Port,\n\t\t\tFlags: pp.Flags,\n\t\t}\n\t\treturn sa, nil\n\tcase AF_BLUETOOTH:\n\t\tproto, err := socketProtocol(fd)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\t// only BTPROTO_L2CAP and BTPROTO_RFCOMM can accept connections\n\t\tswitch proto {\n\t\tcase BTPROTO_L2CAP:\n\t\t\tpp := (*RawSockaddrL2)(unsafe.Pointer(rsa))\n\t\t\tsa := &SockaddrL2{\n\t\t\t\tPSM:      pp.Psm,\n\t\t\t\tCID:      pp.Cid,\n\t\t\t\tAddr:     pp.Bdaddr,\n\t\t\t\tAddrType: pp.Bdaddr_type,\n\t\t\t}\n\t\t\treturn sa, nil\n\t\tcase BTPROTO_RFCOMM:\n\t\t\tpp := (*RawSockaddrRFCOMM)(unsafe.Pointer(rsa))\n\t\t\tsa := &SockaddrRFCOMM{\n\t\t\t\tChannel: pp.Channel,\n\t\t\t\tAddr:    pp.Bdaddr,\n\t\t\t}\n\t\t\treturn sa, nil\n\t\t}\n\tcase AF_XDP:\n\t\tpp := (*RawSockaddrXDP)(unsafe.Pointer(rsa))\n\t\tsa := &SockaddrXDP{\n\t\t\tFlags:        pp.Flags,\n\t\t\tIfindex:      pp.Ifindex,\n\t\t\tQueueID:      pp.Queue_id,\n\t\t\tSharedUmemFD: pp.Shared_umem_fd,\n\t\t}\n\t\treturn sa, nil\n\tcase AF_PPPOX:\n\t\tpp := (*RawSockaddrPPPoX)(unsafe.Pointer(rsa))\n\t\tif binary.BigEndian.Uint32(pp[2:6]) != px_proto_oe {\n\t\t\treturn nil, EINVAL\n\t\t}\n\t\tsa := &SockaddrPPPoE{\n\t\t\tSID:    binary.BigEndian.Uint16(pp[6:8]),\n\t\t\tRemote: pp[8:14],\n\t\t}\n\t\tfor i := 14; i < 14+IFNAMSIZ; i++ {\n\t\t\tif pp[i] == 0 {\n\t\t\t\tsa.Dev = string(pp[14:i])\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\treturn sa, nil\n\tcase AF_TIPC:\n\t\tpp := (*RawSockaddrTIPC)(unsafe.Pointer(rsa))\n\n\t\tsa := &SockaddrTIPC{\n\t\t\tScope: int(pp.Scope),\n\t\t}\n\n\t\t// Determine which union variant is present in pp.Addr by checking\n\t\t// pp.Addrtype.\n\t\tswitch pp.Addrtype {\n\t\tcase TIPC_SERVICE_RANGE:\n\t\t\tsa.Addr = (*TIPCServiceRange)(unsafe.Pointer(&pp.Addr))\n\t\tcase TIPC_SERVICE_ADDR:\n\t\t\tsa.Addr = (*TIPCServiceName)(unsafe.Pointer(&pp.Addr))\n\t\tcase TIPC_SOCKET_ADDR:\n\t\t\tsa.Addr = (*TIPCSocketAddr)(unsafe.Pointer(&pp.Addr))\n\t\tdefault:\n\t\t\treturn nil, EINVAL\n\t\t}\n\n\t\treturn sa, nil\n\tcase AF_IUCV:\n\t\tpp := (*RawSockaddrIUCV)(unsafe.Pointer(rsa))\n\n\t\tvar user [8]byte\n\t\tvar name [8]byte\n\n\t\tfor i := range 8 {\n\t\t\tuser[i] = byte(pp.User_id[i])\n\t\t\tname[i] = byte(pp.Name[i])\n\t\t}\n\n\t\tsa := &SockaddrIUCV{\n\t\t\tUserID: string(user[:]),\n\t\t\tName:   string(name[:]),\n\t\t}\n\t\treturn sa, nil\n\n\tcase AF_CAN:\n\t\tproto, err := socketProtocol(fd)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tpp := (*RawSockaddrCAN)(unsafe.Pointer(rsa))\n\n\t\tswitch proto {\n\t\tcase CAN_J1939:\n\t\t\tsa := &SockaddrCANJ1939{\n\t\t\t\tIfindex: int(pp.Ifindex),\n\t\t\t}\n\t\t\tname := (*[8]byte)(unsafe.Pointer(&sa.Name))\n\t\t\tfor i := range 8 {\n\t\t\t\tname[i] = pp.Addr[i]\n\t\t\t}\n\t\t\tpgn := (*[4]byte)(unsafe.Pointer(&sa.PGN))\n\t\t\tfor i := range 4 {\n\t\t\t\tpgn[i] = pp.Addr[i+8]\n\t\t\t}\n\t\t\taddr := (*[1]byte)(unsafe.Pointer(&sa.Addr))\n\t\t\taddr[0] = pp.Addr[12]\n\t\t\treturn sa, nil\n\t\tdefault:\n\t\t\tsa := &SockaddrCAN{\n\t\t\t\tIfindex: int(pp.Ifindex),\n\t\t\t}\n\t\t\trx := (*[4]byte)(unsafe.Pointer(&sa.RxID))\n\t\t\tfor i := range 4 {\n\t\t\t\trx[i] = pp.Addr[i]\n\t\t\t}\n\t\t\ttx := (*[4]byte)(unsafe.Pointer(&sa.TxID))\n\t\t\tfor i := range 4 {\n\t\t\t\ttx[i] = pp.Addr[i+4]\n\t\t\t}\n\t\t\treturn sa, nil\n\t\t}\n\tcase AF_NFC:\n\t\tproto, err := socketProtocol(fd)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tswitch proto {\n\t\tcase NFC_SOCKPROTO_RAW:\n\t\t\tpp := (*RawSockaddrNFC)(unsafe.Pointer(rsa))\n\t\t\tsa := &SockaddrNFC{\n\t\t\t\tDeviceIdx:   pp.Dev_idx,\n\t\t\t\tTargetIdx:   pp.Target_idx,\n\t\t\t\tNFCProtocol: pp.Nfc_protocol,\n\t\t\t}\n\t\t\treturn sa, nil\n\t\tcase NFC_SOCKPROTO_LLCP:\n\t\t\tpp := (*RawSockaddrNFCLLCP)(unsafe.Pointer(rsa))\n\t\t\tif uint64(pp.Service_name_len) > uint64(len(pp.Service_name)) {\n\t\t\t\treturn nil, EINVAL\n\t\t\t}\n\t\t\tsa := &SockaddrNFCLLCP{\n\t\t\t\tDeviceIdx:      pp.Dev_idx,\n\t\t\t\tTargetIdx:      pp.Target_idx,\n\t\t\t\tNFCProtocol:    pp.Nfc_protocol,\n\t\t\t\tDestinationSAP: pp.Dsap,\n\t\t\t\tSourceSAP:      pp.Ssap,\n\t\t\t\tServiceName:    string(pp.Service_name[:pp.Service_name_len]),\n\t\t\t}\n\t\t\treturn sa, nil\n\t\tdefault:\n\t\t\treturn nil, EINVAL\n\t\t}\n\t}\n\treturn nil, EAFNOSUPPORT\n}\n\nfunc Accept(fd int) (nfd int, sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tnfd, err = accept4(fd, &rsa, &len, 0)\n\tif err != nil {\n\t\treturn\n\t}\n\tsa, err = anyToSockaddr(fd, &rsa)\n\tif err != nil {\n\t\tClose(nfd)\n\t\tnfd = 0\n\t}\n\treturn\n}\n\nfunc Accept4(fd int, flags int) (nfd int, sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tnfd, err = accept4(fd, &rsa, &len, flags)\n\tif err != nil {\n\t\treturn\n\t}\n\tif len > SizeofSockaddrAny {\n\t\tpanic(\"RawSockaddrAny too small\")\n\t}\n\tsa, err = anyToSockaddr(fd, &rsa)\n\tif err != nil {\n\t\tClose(nfd)\n\t\tnfd = 0\n\t}\n\treturn\n}\n\nfunc Getsockname(fd int) (sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tif err = getsockname(fd, &rsa, &len); err != nil {\n\t\treturn\n\t}\n\treturn anyToSockaddr(fd, &rsa)\n}\n\nfunc GetsockoptIPMreqn(fd, level, opt int) (*IPMreqn, error) {\n\tvar value IPMreqn\n\tvallen := _Socklen(SizeofIPMreqn)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\nfunc GetsockoptUcred(fd, level, opt int) (*Ucred, error) {\n\tvar value Ucred\n\tvallen := _Socklen(SizeofUcred)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\nfunc GetsockoptTCPInfo(fd, level, opt int) (*TCPInfo, error) {\n\tvar value TCPInfo\n\tvallen := _Socklen(SizeofTCPInfo)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\n// GetsockoptTCPCCVegasInfo returns algorithm specific congestion control information for a socket using the \"vegas\"\n// algorithm.\n//\n// The socket's congestion control algorighm can be retrieved via [GetsockoptString] with the [TCP_CONGESTION] option:\n//\n//\talgo, err := unix.GetsockoptString(fd, unix.IPPROTO_TCP, unix.TCP_CONGESTION)\nfunc GetsockoptTCPCCVegasInfo(fd, level, opt int) (*TCPVegasInfo, error) {\n\tvar value [SizeofTCPCCInfo / 4]uint32 // ensure proper alignment\n\tvallen := _Socklen(SizeofTCPCCInfo)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value[0]), &vallen)\n\tout := (*TCPVegasInfo)(unsafe.Pointer(&value[0]))\n\treturn out, err\n}\n\n// GetsockoptTCPCCDCTCPInfo returns algorithm specific congestion control information for a socket using the \"dctp\"\n// algorithm.\n//\n// The socket's congestion control algorighm can be retrieved via [GetsockoptString] with the [TCP_CONGESTION] option:\n//\n//\talgo, err := unix.GetsockoptString(fd, unix.IPPROTO_TCP, unix.TCP_CONGESTION)\nfunc GetsockoptTCPCCDCTCPInfo(fd, level, opt int) (*TCPDCTCPInfo, error) {\n\tvar value [SizeofTCPCCInfo / 4]uint32 // ensure proper alignment\n\tvallen := _Socklen(SizeofTCPCCInfo)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value[0]), &vallen)\n\tout := (*TCPDCTCPInfo)(unsafe.Pointer(&value[0]))\n\treturn out, err\n}\n\n// GetsockoptTCPCCBBRInfo returns algorithm specific congestion control information for a socket using the \"bbr\"\n// algorithm.\n//\n// The socket's congestion control algorighm can be retrieved via [GetsockoptString] with the [TCP_CONGESTION] option:\n//\n//\talgo, err := unix.GetsockoptString(fd, unix.IPPROTO_TCP, unix.TCP_CONGESTION)\nfunc GetsockoptTCPCCBBRInfo(fd, level, opt int) (*TCPBBRInfo, error) {\n\tvar value [SizeofTCPCCInfo / 4]uint32 // ensure proper alignment\n\tvallen := _Socklen(SizeofTCPCCInfo)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value[0]), &vallen)\n\tout := (*TCPBBRInfo)(unsafe.Pointer(&value[0]))\n\treturn out, err\n}\n\n// GetsockoptString returns the string value of the socket option opt for the\n// socket associated with fd at the given socket level.\nfunc GetsockoptString(fd, level, opt int) (string, error) {\n\tbuf := make([]byte, 256)\n\tvallen := _Socklen(len(buf))\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen)\n\tif err != nil {\n\t\tif err == ERANGE {\n\t\t\tbuf = make([]byte, vallen)\n\t\t\terr = getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen)\n\t\t}\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t}\n\treturn ByteSliceToString(buf[:vallen]), nil\n}\n\nfunc GetsockoptTpacketStats(fd, level, opt int) (*TpacketStats, error) {\n\tvar value TpacketStats\n\tvallen := _Socklen(SizeofTpacketStats)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\nfunc GetsockoptTpacketStatsV3(fd, level, opt int) (*TpacketStatsV3, error) {\n\tvar value TpacketStatsV3\n\tvallen := _Socklen(SizeofTpacketStatsV3)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\nfunc SetsockoptIPMreqn(fd, level, opt int, mreq *IPMreqn) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(mreq), unsafe.Sizeof(*mreq))\n}\n\nfunc SetsockoptPacketMreq(fd, level, opt int, mreq *PacketMreq) error {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(mreq), unsafe.Sizeof(*mreq))\n}\n\n// SetsockoptSockFprog attaches a classic BPF or an extended BPF program to a\n// socket to filter incoming packets.  See 'man 7 socket' for usage information.\nfunc SetsockoptSockFprog(fd, level, opt int, fprog *SockFprog) error {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(fprog), unsafe.Sizeof(*fprog))\n}\n\nfunc SetsockoptCanRawFilter(fd, level, opt int, filter []CanFilter) error {\n\tvar p unsafe.Pointer\n\tif len(filter) > 0 {\n\t\tp = unsafe.Pointer(&filter[0])\n\t}\n\treturn setsockopt(fd, level, opt, p, uintptr(len(filter)*SizeofCanFilter))\n}\n\nfunc SetsockoptTpacketReq(fd, level, opt int, tp *TpacketReq) error {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(tp), unsafe.Sizeof(*tp))\n}\n\nfunc SetsockoptTpacketReq3(fd, level, opt int, tp *TpacketReq3) error {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(tp), unsafe.Sizeof(*tp))\n}\n\nfunc SetsockoptTCPRepairOpt(fd, level, opt int, o []TCPRepairOpt) (err error) {\n\tif len(o) == 0 {\n\t\treturn EINVAL\n\t}\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(&o[0]), uintptr(SizeofTCPRepairOpt*len(o)))\n}\n\nfunc SetsockoptTCPMD5Sig(fd, level, opt int, s *TCPMD5Sig) error {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(s), unsafe.Sizeof(*s))\n}\n\n// Keyctl Commands (http://man7.org/linux/man-pages/man2/keyctl.2.html)\n\n// KeyctlInt calls keyctl commands in which each argument is an int.\n// These commands are KEYCTL_REVOKE, KEYCTL_CHOWN, KEYCTL_CLEAR, KEYCTL_LINK,\n// KEYCTL_UNLINK, KEYCTL_NEGATE, KEYCTL_SET_REQKEY_KEYRING, KEYCTL_SET_TIMEOUT,\n// KEYCTL_ASSUME_AUTHORITY, KEYCTL_SESSION_TO_PARENT, KEYCTL_REJECT,\n// KEYCTL_INVALIDATE, and KEYCTL_GET_PERSISTENT.\n//sys\tKeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) = SYS_KEYCTL\n\n// KeyctlBuffer calls keyctl commands in which the third and fourth\n// arguments are a buffer and its length, respectively.\n// These commands are KEYCTL_UPDATE, KEYCTL_READ, and KEYCTL_INSTANTIATE.\n//sys\tKeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) = SYS_KEYCTL\n\n// KeyctlString calls keyctl commands which return a string.\n// These commands are KEYCTL_DESCRIBE and KEYCTL_GET_SECURITY.\nfunc KeyctlString(cmd int, id int) (string, error) {\n\t// We must loop as the string data may change in between the syscalls.\n\t// We could allocate a large buffer here to reduce the chance that the\n\t// syscall needs to be called twice; however, this is unnecessary as\n\t// the performance loss is negligible.\n\tvar buffer []byte\n\tfor {\n\t\t// Try to fill the buffer with data\n\t\tlength, err := KeyctlBuffer(cmd, id, buffer, 0)\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\n\t\t// Check if the data was written\n\t\tif length <= len(buffer) {\n\t\t\t// Exclude the null terminator\n\t\t\treturn string(buffer[:length-1]), nil\n\t\t}\n\n\t\t// Make a bigger buffer if needed\n\t\tbuffer = make([]byte, length)\n\t}\n}\n\n// Keyctl commands with special signatures.\n\n// KeyctlGetKeyringID implements the KEYCTL_GET_KEYRING_ID command.\n// See the full documentation at:\n// http://man7.org/linux/man-pages/man3/keyctl_get_keyring_ID.3.html\nfunc KeyctlGetKeyringID(id int, create bool) (ringid int, err error) {\n\tcreateInt := 0\n\tif create {\n\t\tcreateInt = 1\n\t}\n\treturn KeyctlInt(KEYCTL_GET_KEYRING_ID, id, createInt, 0, 0)\n}\n\n// KeyctlSetperm implements the KEYCTL_SETPERM command. The perm value is the\n// key handle permission mask as described in the \"keyctl setperm\" section of\n// http://man7.org/linux/man-pages/man1/keyctl.1.html.\n// See the full documentation at:\n// http://man7.org/linux/man-pages/man3/keyctl_setperm.3.html\nfunc KeyctlSetperm(id int, perm uint32) error {\n\t_, err := KeyctlInt(KEYCTL_SETPERM, id, int(perm), 0, 0)\n\treturn err\n}\n\n//sys\tkeyctlJoin(cmd int, arg2 string) (ret int, err error) = SYS_KEYCTL\n\n// KeyctlJoinSessionKeyring implements the KEYCTL_JOIN_SESSION_KEYRING command.\n// See the full documentation at:\n// http://man7.org/linux/man-pages/man3/keyctl_join_session_keyring.3.html\nfunc KeyctlJoinSessionKeyring(name string) (ringid int, err error) {\n\treturn keyctlJoin(KEYCTL_JOIN_SESSION_KEYRING, name)\n}\n\n//sys\tkeyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) = SYS_KEYCTL\n\n// KeyctlSearch implements the KEYCTL_SEARCH command.\n// See the full documentation at:\n// http://man7.org/linux/man-pages/man3/keyctl_search.3.html\nfunc KeyctlSearch(ringid int, keyType, description string, destRingid int) (id int, err error) {\n\treturn keyctlSearch(KEYCTL_SEARCH, ringid, keyType, description, destRingid)\n}\n\n//sys\tkeyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) = SYS_KEYCTL\n\n// KeyctlInstantiateIOV implements the KEYCTL_INSTANTIATE_IOV command. This\n// command is similar to KEYCTL_INSTANTIATE, except that the payload is a slice\n// of Iovec (each of which represents a buffer) instead of a single buffer.\n// See the full documentation at:\n// http://man7.org/linux/man-pages/man3/keyctl_instantiate_iov.3.html\nfunc KeyctlInstantiateIOV(id int, payload []Iovec, ringid int) error {\n\treturn keyctlIOV(KEYCTL_INSTANTIATE_IOV, id, payload, ringid)\n}\n\n//sys\tkeyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) = SYS_KEYCTL\n\n// KeyctlDHCompute implements the KEYCTL_DH_COMPUTE command. This command\n// computes a Diffie-Hellman shared secret based on the provide params. The\n// secret is written to the provided buffer and the returned size is the number\n// of bytes written (returning an error if there is insufficient space in the\n// buffer). If a nil buffer is passed in, this function returns the minimum\n// buffer length needed to store the appropriate data. Note that this differs\n// from KEYCTL_READ's behavior which always returns the requested payload size.\n// See the full documentation at:\n// http://man7.org/linux/man-pages/man3/keyctl_dh_compute.3.html\nfunc KeyctlDHCompute(params *KeyctlDHParams, buffer []byte) (size int, err error) {\n\treturn keyctlDH(KEYCTL_DH_COMPUTE, params, buffer)\n}\n\n// KeyctlRestrictKeyring implements the KEYCTL_RESTRICT_KEYRING command. This\n// command limits the set of keys that can be linked to the keyring, regardless\n// of keyring permissions. The command requires the \"setattr\" permission.\n//\n// When called with an empty keyType the command locks the keyring, preventing\n// any further keys from being linked to the keyring.\n//\n// The \"asymmetric\" keyType defines restrictions requiring key payloads to be\n// DER encoded X.509 certificates signed by keys in another keyring. Restrictions\n// for \"asymmetric\" include \"builtin_trusted\", \"builtin_and_secondary_trusted\",\n// \"key_or_keyring:<key>\", and \"key_or_keyring:<key>:chain\".\n//\n// As of Linux 4.12, only the \"asymmetric\" keyType defines type-specific\n// restrictions.\n//\n// See the full documentation at:\n// http://man7.org/linux/man-pages/man3/keyctl_restrict_keyring.3.html\n// http://man7.org/linux/man-pages/man2/keyctl.2.html\nfunc KeyctlRestrictKeyring(ringid int, keyType string, restriction string) error {\n\tif keyType == \"\" {\n\t\treturn keyctlRestrictKeyring(KEYCTL_RESTRICT_KEYRING, ringid)\n\t}\n\treturn keyctlRestrictKeyringByType(KEYCTL_RESTRICT_KEYRING, ringid, keyType, restriction)\n}\n\n//sys\tkeyctlRestrictKeyringByType(cmd int, arg2 int, keyType string, restriction string) (err error) = SYS_KEYCTL\n//sys\tkeyctlRestrictKeyring(cmd int, arg2 int) (err error) = SYS_KEYCTL\n\nfunc recvmsgRaw(fd int, iov []Iovec, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn int, recvflags int, err error) {\n\tvar msg Msghdr\n\tmsg.Name = (*byte)(unsafe.Pointer(rsa))\n\tmsg.Namelen = uint32(SizeofSockaddrAny)\n\tvar dummy byte\n\tif len(oob) > 0 {\n\t\tif emptyIovecs(iov) {\n\t\t\tvar sockType int\n\t\t\tsockType, err = GetsockoptInt(fd, SOL_SOCKET, SO_TYPE)\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// receive at least one normal byte\n\t\t\tif sockType != SOCK_DGRAM {\n\t\t\t\tvar iova [1]Iovec\n\t\t\t\tiova[0].Base = &dummy\n\t\t\t\tiova[0].SetLen(1)\n\t\t\t\tiov = iova[:]\n\t\t\t}\n\t\t}\n\t\tmsg.Control = &oob[0]\n\t\tmsg.SetControllen(len(oob))\n\t}\n\tif len(iov) > 0 {\n\t\tmsg.Iov = &iov[0]\n\t\tmsg.SetIovlen(len(iov))\n\t}\n\tif n, err = recvmsg(fd, &msg, flags); err != nil {\n\t\treturn\n\t}\n\toobn = int(msg.Controllen)\n\trecvflags = int(msg.Flags)\n\treturn\n}\n\nfunc sendmsgN(fd int, iov []Iovec, oob []byte, ptr unsafe.Pointer, salen _Socklen, flags int) (n int, err error) {\n\tvar msg Msghdr\n\tmsg.Name = (*byte)(ptr)\n\tmsg.Namelen = uint32(salen)\n\tvar dummy byte\n\tvar empty bool\n\tif len(oob) > 0 {\n\t\tempty = emptyIovecs(iov)\n\t\tif empty {\n\t\t\tvar sockType int\n\t\t\tsockType, err = GetsockoptInt(fd, SOL_SOCKET, SO_TYPE)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\t// send at least one normal byte\n\t\t\tif sockType != SOCK_DGRAM {\n\t\t\t\tvar iova [1]Iovec\n\t\t\t\tiova[0].Base = &dummy\n\t\t\t\tiova[0].SetLen(1)\n\t\t\t\tiov = iova[:]\n\t\t\t}\n\t\t}\n\t\tmsg.Control = &oob[0]\n\t\tmsg.SetControllen(len(oob))\n\t}\n\tif len(iov) > 0 {\n\t\tmsg.Iov = &iov[0]\n\t\tmsg.SetIovlen(len(iov))\n\t}\n\tif n, err = sendmsg(fd, &msg, flags); err != nil {\n\t\treturn 0, err\n\t}\n\tif len(oob) > 0 && empty {\n\t\tn = 0\n\t}\n\treturn n, nil\n}\n\n// BindToDevice binds the socket associated with fd to device.\nfunc BindToDevice(fd int, device string) (err error) {\n\treturn SetsockoptString(fd, SOL_SOCKET, SO_BINDTODEVICE, device)\n}\n\n//sys\tptrace(request int, pid int, addr uintptr, data uintptr) (err error)\n//sys\tptracePtr(request int, pid int, addr uintptr, data unsafe.Pointer) (err error) = SYS_PTRACE\n\nfunc ptracePeek(req int, pid int, addr uintptr, out []byte) (count int, err error) {\n\t// The peek requests are machine-size oriented, so we wrap it\n\t// to retrieve arbitrary-length data.\n\n\t// The ptrace syscall differs from glibc's ptrace.\n\t// Peeks returns the word in *data, not as the return value.\n\n\tvar buf [SizeofPtr]byte\n\n\t// Leading edge. PEEKTEXT/PEEKDATA don't require aligned\n\t// access (PEEKUSER warns that it might), but if we don't\n\t// align our reads, we might straddle an unmapped page\n\t// boundary and not get the bytes leading up to the page\n\t// boundary.\n\tn := 0\n\tif addr%SizeofPtr != 0 {\n\t\terr = ptracePtr(req, pid, addr-addr%SizeofPtr, unsafe.Pointer(&buf[0]))\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\tn += copy(out, buf[addr%SizeofPtr:])\n\t\tout = out[n:]\n\t}\n\n\t// Remainder.\n\tfor len(out) > 0 {\n\t\t// We use an internal buffer to guarantee alignment.\n\t\t// It's not documented if this is necessary, but we're paranoid.\n\t\terr = ptracePtr(req, pid, addr+uintptr(n), unsafe.Pointer(&buf[0]))\n\t\tif err != nil {\n\t\t\treturn n, err\n\t\t}\n\t\tcopied := copy(out, buf[0:])\n\t\tn += copied\n\t\tout = out[copied:]\n\t}\n\n\treturn n, nil\n}\n\nfunc PtracePeekText(pid int, addr uintptr, out []byte) (count int, err error) {\n\treturn ptracePeek(PTRACE_PEEKTEXT, pid, addr, out)\n}\n\nfunc PtracePeekData(pid int, addr uintptr, out []byte) (count int, err error) {\n\treturn ptracePeek(PTRACE_PEEKDATA, pid, addr, out)\n}\n\nfunc PtracePeekUser(pid int, addr uintptr, out []byte) (count int, err error) {\n\treturn ptracePeek(PTRACE_PEEKUSR, pid, addr, out)\n}\n\nfunc ptracePoke(pokeReq int, peekReq int, pid int, addr uintptr, data []byte) (count int, err error) {\n\t// As for ptracePeek, we need to align our accesses to deal\n\t// with the possibility of straddling an invalid page.\n\n\t// Leading edge.\n\tn := 0\n\tif addr%SizeofPtr != 0 {\n\t\tvar buf [SizeofPtr]byte\n\t\terr = ptracePtr(peekReq, pid, addr-addr%SizeofPtr, unsafe.Pointer(&buf[0]))\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\tn += copy(buf[addr%SizeofPtr:], data)\n\t\tword := *((*uintptr)(unsafe.Pointer(&buf[0])))\n\t\terr = ptrace(pokeReq, pid, addr-addr%SizeofPtr, word)\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\tdata = data[n:]\n\t}\n\n\t// Interior.\n\tfor len(data) > SizeofPtr {\n\t\tword := *((*uintptr)(unsafe.Pointer(&data[0])))\n\t\terr = ptrace(pokeReq, pid, addr+uintptr(n), word)\n\t\tif err != nil {\n\t\t\treturn n, err\n\t\t}\n\t\tn += SizeofPtr\n\t\tdata = data[SizeofPtr:]\n\t}\n\n\t// Trailing edge.\n\tif len(data) > 0 {\n\t\tvar buf [SizeofPtr]byte\n\t\terr = ptracePtr(peekReq, pid, addr+uintptr(n), unsafe.Pointer(&buf[0]))\n\t\tif err != nil {\n\t\t\treturn n, err\n\t\t}\n\t\tcopy(buf[0:], data)\n\t\tword := *((*uintptr)(unsafe.Pointer(&buf[0])))\n\t\terr = ptrace(pokeReq, pid, addr+uintptr(n), word)\n\t\tif err != nil {\n\t\t\treturn n, err\n\t\t}\n\t\tn += len(data)\n\t}\n\n\treturn n, nil\n}\n\nfunc PtracePokeText(pid int, addr uintptr, data []byte) (count int, err error) {\n\treturn ptracePoke(PTRACE_POKETEXT, PTRACE_PEEKTEXT, pid, addr, data)\n}\n\nfunc PtracePokeData(pid int, addr uintptr, data []byte) (count int, err error) {\n\treturn ptracePoke(PTRACE_POKEDATA, PTRACE_PEEKDATA, pid, addr, data)\n}\n\nfunc PtracePokeUser(pid int, addr uintptr, data []byte) (count int, err error) {\n\treturn ptracePoke(PTRACE_POKEUSR, PTRACE_PEEKUSR, pid, addr, data)\n}\n\n// elfNT_PRSTATUS is a copy of the debug/elf.NT_PRSTATUS constant so\n// x/sys/unix doesn't need to depend on debug/elf and thus\n// compress/zlib, debug/dwarf, and other packages.\nconst elfNT_PRSTATUS = 1\n\nfunc PtraceGetRegs(pid int, regsout *PtraceRegs) (err error) {\n\tvar iov Iovec\n\tiov.Base = (*byte)(unsafe.Pointer(regsout))\n\tiov.SetLen(int(unsafe.Sizeof(*regsout)))\n\treturn ptracePtr(PTRACE_GETREGSET, pid, uintptr(elfNT_PRSTATUS), unsafe.Pointer(&iov))\n}\n\nfunc PtraceSetRegs(pid int, regs *PtraceRegs) (err error) {\n\tvar iov Iovec\n\tiov.Base = (*byte)(unsafe.Pointer(regs))\n\tiov.SetLen(int(unsafe.Sizeof(*regs)))\n\treturn ptracePtr(PTRACE_SETREGSET, pid, uintptr(elfNT_PRSTATUS), unsafe.Pointer(&iov))\n}\n\nfunc PtraceSetOptions(pid int, options int) (err error) {\n\treturn ptrace(PTRACE_SETOPTIONS, pid, 0, uintptr(options))\n}\n\nfunc PtraceGetEventMsg(pid int) (msg uint, err error) {\n\tvar data _C_long\n\terr = ptracePtr(PTRACE_GETEVENTMSG, pid, 0, unsafe.Pointer(&data))\n\tmsg = uint(data)\n\treturn\n}\n\nfunc PtraceCont(pid int, signal int) (err error) {\n\treturn ptrace(PTRACE_CONT, pid, 0, uintptr(signal))\n}\n\nfunc PtraceSyscall(pid int, signal int) (err error) {\n\treturn ptrace(PTRACE_SYSCALL, pid, 0, uintptr(signal))\n}\n\nfunc PtraceSingleStep(pid int) (err error) { return ptrace(PTRACE_SINGLESTEP, pid, 0, 0) }\n\nfunc PtraceInterrupt(pid int) (err error) { return ptrace(PTRACE_INTERRUPT, pid, 0, 0) }\n\nfunc PtraceAttach(pid int) (err error) { return ptrace(PTRACE_ATTACH, pid, 0, 0) }\n\nfunc PtraceSeize(pid int) (err error) { return ptrace(PTRACE_SEIZE, pid, 0, 0) }\n\nfunc PtraceDetach(pid int) (err error) { return ptrace(PTRACE_DETACH, pid, 0, 0) }\n\n//sys\treboot(magic1 uint, magic2 uint, cmd int, arg string) (err error)\n\nfunc Reboot(cmd int) (err error) {\n\treturn reboot(LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, cmd, \"\")\n}\n\nfunc direntIno(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Ino), unsafe.Sizeof(Dirent{}.Ino))\n}\n\nfunc direntReclen(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen))\n}\n\nfunc direntNamlen(buf []byte) (uint64, bool) {\n\treclen, ok := direntReclen(buf)\n\tif !ok {\n\t\treturn 0, false\n\t}\n\treturn reclen - uint64(unsafe.Offsetof(Dirent{}.Name)), true\n}\n\n//sys\tmount(source string, target string, fstype string, flags uintptr, data *byte) (err error)\n\nfunc Mount(source string, target string, fstype string, flags uintptr, data string) (err error) {\n\t// Certain file systems get rather angry and EINVAL if you give\n\t// them an empty string of data, rather than NULL.\n\tif data == \"\" {\n\t\treturn mount(source, target, fstype, flags, nil)\n\t}\n\tdatap, err := BytePtrFromString(data)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn mount(source, target, fstype, flags, datap)\n}\n\n//sys\tmountSetattr(dirfd int, pathname string, flags uint, attr *MountAttr, size uintptr) (err error) = SYS_MOUNT_SETATTR\n\n// MountSetattr is a wrapper for mount_setattr(2).\n// https://man7.org/linux/man-pages/man2/mount_setattr.2.html\n//\n// Requires kernel >= 5.12.\nfunc MountSetattr(dirfd int, pathname string, flags uint, attr *MountAttr) error {\n\treturn mountSetattr(dirfd, pathname, flags, attr, unsafe.Sizeof(*attr))\n}\n\nfunc Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\treturn sendfile(outfd, infd, offset, count)\n}\n\n// Sendto\n// Recvfrom\n// Socketpair\n\n/*\n * Direct access\n */\n//sys\tAcct(path string) (err error)\n//sys\tAddKey(keyType string, description string, payload []byte, ringid int) (id int, err error)\n//sys\tAdjtimex(buf *Timex) (state int, err error)\n//sysnb\tCapget(hdr *CapUserHeader, data *CapUserData) (err error)\n//sysnb\tCapset(hdr *CapUserHeader, data *CapUserData) (err error)\n//sys\tChdir(path string) (err error)\n//sys\tChroot(path string) (err error)\n//sys\tClockAdjtime(clockid int32, buf *Timex) (state int, err error)\n//sys\tClockGetres(clockid int32, res *Timespec) (err error)\n//sys\tClockGettime(clockid int32, time *Timespec) (err error)\n//sys\tClockSettime(clockid int32, time *Timespec) (err error)\n//sys\tClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error)\n//sys\tClose(fd int) (err error)\n//sys\tCloseRange(first uint, last uint, flags uint) (err error)\n//sys\tCopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error)\n//sys\tDeleteModule(name string, flags int) (err error)\n//sys\tDup(oldfd int) (fd int, err error)\n\nfunc Dup2(oldfd, newfd int) error {\n\treturn Dup3(oldfd, newfd, 0)\n}\n\n//sys\tDup3(oldfd int, newfd int, flags int) (err error)\n//sysnb\tEpollCreate1(flag int) (fd int, err error)\n//sysnb\tEpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error)\n//sys\tEventfd(initval uint, flags int) (fd int, err error) = SYS_EVENTFD2\n//sys\tExit(code int) = SYS_EXIT_GROUP\n//sys\tFallocate(fd int, mode uint32, off int64, len int64) (err error)\n//sys\tFchdir(fd int) (err error)\n//sys\tFchmod(fd int, mode uint32) (err error)\n//sys\tFchownat(dirfd int, path string, uid int, gid int, flags int) (err error)\n//sys\tFdatasync(fd int) (err error)\n//sys\tFgetxattr(fd int, attr string, dest []byte) (sz int, err error)\n//sys\tFinitModule(fd int, params string, flags int) (err error)\n//sys\tFlistxattr(fd int, dest []byte) (sz int, err error)\n//sys\tFlock(fd int, how int) (err error)\n//sys\tFremovexattr(fd int, attr string) (err error)\n//sys\tFsetxattr(fd int, attr string, dest []byte, flags int) (err error)\n//sys\tFsync(fd int) (err error)\n//sys\tFsmount(fd int, flags int, mountAttrs int) (fsfd int, err error)\n//sys\tFsopen(fsName string, flags int) (fd int, err error)\n//sys\tFspick(dirfd int, pathName string, flags int) (fd int, err error)\n\n//sys\tfsconfig(fd int, cmd uint, key *byte, value *byte, aux int) (err error)\n\nfunc fsconfigCommon(fd int, cmd uint, key string, value *byte, aux int) (err error) {\n\tvar keyp *byte\n\tif keyp, err = BytePtrFromString(key); err != nil {\n\t\treturn\n\t}\n\treturn fsconfig(fd, cmd, keyp, value, aux)\n}\n\n// FsconfigSetFlag is equivalent to fsconfig(2) called\n// with cmd == FSCONFIG_SET_FLAG.\n//\n// fd is the filesystem context to act upon.\n// key the parameter key to set.\nfunc FsconfigSetFlag(fd int, key string) (err error) {\n\treturn fsconfigCommon(fd, FSCONFIG_SET_FLAG, key, nil, 0)\n}\n\n// FsconfigSetString is equivalent to fsconfig(2) called\n// with cmd == FSCONFIG_SET_STRING.\n//\n// fd is the filesystem context to act upon.\n// key the parameter key to set.\n// value is the parameter value to set.\nfunc FsconfigSetString(fd int, key string, value string) (err error) {\n\tvar valuep *byte\n\tif valuep, err = BytePtrFromString(value); err != nil {\n\t\treturn\n\t}\n\treturn fsconfigCommon(fd, FSCONFIG_SET_STRING, key, valuep, 0)\n}\n\n// FsconfigSetBinary is equivalent to fsconfig(2) called\n// with cmd == FSCONFIG_SET_BINARY.\n//\n// fd is the filesystem context to act upon.\n// key the parameter key to set.\n// value is the parameter value to set.\nfunc FsconfigSetBinary(fd int, key string, value []byte) (err error) {\n\tif len(value) == 0 {\n\t\treturn EINVAL\n\t}\n\treturn fsconfigCommon(fd, FSCONFIG_SET_BINARY, key, &value[0], len(value))\n}\n\n// FsconfigSetPath is equivalent to fsconfig(2) called\n// with cmd == FSCONFIG_SET_PATH.\n//\n// fd is the filesystem context to act upon.\n// key the parameter key to set.\n// path is a non-empty path for specified key.\n// atfd is a file descriptor at which to start lookup from or AT_FDCWD.\nfunc FsconfigSetPath(fd int, key string, path string, atfd int) (err error) {\n\tvar valuep *byte\n\tif valuep, err = BytePtrFromString(path); err != nil {\n\t\treturn\n\t}\n\treturn fsconfigCommon(fd, FSCONFIG_SET_PATH, key, valuep, atfd)\n}\n\n// FsconfigSetPathEmpty is equivalent to fsconfig(2) called\n// with cmd == FSCONFIG_SET_PATH_EMPTY. The same as\n// FconfigSetPath but with AT_PATH_EMPTY implied.\nfunc FsconfigSetPathEmpty(fd int, key string, path string, atfd int) (err error) {\n\tvar valuep *byte\n\tif valuep, err = BytePtrFromString(path); err != nil {\n\t\treturn\n\t}\n\treturn fsconfigCommon(fd, FSCONFIG_SET_PATH_EMPTY, key, valuep, atfd)\n}\n\n// FsconfigSetFd is equivalent to fsconfig(2) called\n// with cmd == FSCONFIG_SET_FD.\n//\n// fd is the filesystem context to act upon.\n// key the parameter key to set.\n// value is a file descriptor to be assigned to specified key.\nfunc FsconfigSetFd(fd int, key string, value int) (err error) {\n\treturn fsconfigCommon(fd, FSCONFIG_SET_FD, key, nil, value)\n}\n\n// FsconfigCreate is equivalent to fsconfig(2) called\n// with cmd == FSCONFIG_CMD_CREATE.\n//\n// fd is the filesystem context to act upon.\nfunc FsconfigCreate(fd int) (err error) {\n\treturn fsconfig(fd, FSCONFIG_CMD_CREATE, nil, nil, 0)\n}\n\n// FsconfigReconfigure is equivalent to fsconfig(2) called\n// with cmd == FSCONFIG_CMD_RECONFIGURE.\n//\n// fd is the filesystem context to act upon.\nfunc FsconfigReconfigure(fd int) (err error) {\n\treturn fsconfig(fd, FSCONFIG_CMD_RECONFIGURE, nil, nil, 0)\n}\n\n//sys\tGetdents(fd int, buf []byte) (n int, err error) = SYS_GETDENTS64\n//sysnb\tGetpgid(pid int) (pgid int, err error)\n\nfunc Getpgrp() (pid int) {\n\tpid, _ = Getpgid(0)\n\treturn\n}\n\n//sysnb\tGetpid() (pid int)\n//sysnb\tGetppid() (ppid int)\n//sys\tGetpriority(which int, who int) (prio int, err error)\n\nfunc Getrandom(buf []byte, flags int) (n int, err error) {\n\tvdsoRet, supported := vgetrandom(buf, uint32(flags))\n\tif supported {\n\t\tif vdsoRet < 0 {\n\t\t\treturn 0, errnoErr(syscall.Errno(-vdsoRet))\n\t\t}\n\t\treturn vdsoRet, nil\n\t}\n\tvar p *byte\n\tif len(buf) > 0 {\n\t\tp = &buf[0]\n\t}\n\tr, _, e := Syscall(SYS_GETRANDOM, uintptr(unsafe.Pointer(p)), uintptr(len(buf)), uintptr(flags))\n\tif e != 0 {\n\t\treturn 0, errnoErr(e)\n\t}\n\treturn int(r), nil\n}\n\n//sysnb\tGetrusage(who int, rusage *Rusage) (err error)\n//sysnb\tGetsid(pid int) (sid int, err error)\n//sysnb\tGettid() (tid int)\n//sys\tGetxattr(path string, attr string, dest []byte) (sz int, err error)\n//sys\tInitModule(moduleImage []byte, params string) (err error)\n//sys\tInotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error)\n//sysnb\tInotifyInit1(flags int) (fd int, err error)\n//sysnb\tInotifyRmWatch(fd int, watchdesc uint32) (success int, err error)\n//sysnb\tKill(pid int, sig syscall.Signal) (err error)\n//sys\tKlogctl(typ int, buf []byte) (n int, err error) = SYS_SYSLOG\n//sys\tLgetxattr(path string, attr string, dest []byte) (sz int, err error)\n//sys\tListxattr(path string, dest []byte) (sz int, err error)\n//sys\tLlistxattr(path string, dest []byte) (sz int, err error)\n//sys\tLremovexattr(path string, attr string) (err error)\n//sys\tLsetxattr(path string, attr string, data []byte, flags int) (err error)\n//sys\tMemfdCreate(name string, flags int) (fd int, err error)\n//sys\tMkdirat(dirfd int, path string, mode uint32) (err error)\n//sys\tMknodat(dirfd int, path string, mode uint32, dev int) (err error)\n//sys\tMoveMount(fromDirfd int, fromPathName string, toDirfd int, toPathName string, flags int) (err error)\n//sys\tNanosleep(time *Timespec, leftover *Timespec) (err error)\n//sys\tOpenTree(dfd int, fileName string, flags uint) (r int, err error)\n//sys\tPerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error)\n//sys\tPivotRoot(newroot string, putold string) (err error) = SYS_PIVOT_ROOT\n//sys\tPrctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error)\n//sys\tpselect6(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *sigset_argpack) (n int, err error)\n//sys\tread(fd int, p []byte) (n int, err error)\n//sys\tRemovexattr(path string, attr string) (err error)\n//sys\tRenameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error)\n//sys\tRequestKey(keyType string, description string, callback string, destRingid int) (id int, err error)\n//sys\tSetdomainname(p []byte) (err error)\n//sys\tSethostname(p []byte) (err error)\n//sysnb\tSetpgid(pid int, pgid int) (err error)\n//sysnb\tSetsid() (pid int, err error)\n//sysnb\tSettimeofday(tv *Timeval) (err error)\n//sys\tSetns(fd int, nstype int) (err error)\n\n//go:linkname syscall_prlimit syscall.prlimit\nfunc syscall_prlimit(pid, resource int, newlimit, old *syscall.Rlimit) error\n\nfunc Prlimit(pid, resource int, newlimit, old *Rlimit) error {\n\t// Just call the syscall version, because as of Go 1.21\n\t// it will affect starting a new process.\n\treturn syscall_prlimit(pid, resource, (*syscall.Rlimit)(newlimit), (*syscall.Rlimit)(old))\n}\n\n// PrctlRetInt performs a prctl operation specified by option and further\n// optional arguments arg2 through arg5 depending on option. It returns a\n// non-negative integer that is returned by the prctl syscall.\nfunc PrctlRetInt(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (int, error) {\n\tret, _, err := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)\n\tif err != 0 {\n\t\treturn 0, err\n\t}\n\treturn int(ret), nil\n}\n\nfunc Setuid(uid int) (err error) {\n\treturn syscall.Setuid(uid)\n}\n\nfunc Setgid(gid int) (err error) {\n\treturn syscall.Setgid(gid)\n}\n\nfunc Setreuid(ruid, euid int) (err error) {\n\treturn syscall.Setreuid(ruid, euid)\n}\n\nfunc Setregid(rgid, egid int) (err error) {\n\treturn syscall.Setregid(rgid, egid)\n}\n\nfunc Setresuid(ruid, euid, suid int) (err error) {\n\treturn syscall.Setresuid(ruid, euid, suid)\n}\n\nfunc Setresgid(rgid, egid, sgid int) (err error) {\n\treturn syscall.Setresgid(rgid, egid, sgid)\n}\n\n// SetfsgidRetGid sets fsgid for current thread and returns previous fsgid set.\n// setfsgid(2) will return a non-nil error only if its caller lacks CAP_SETUID capability.\n// If the call fails due to other reasons, current fsgid will be returned.\nfunc SetfsgidRetGid(gid int) (int, error) {\n\treturn setfsgid(gid)\n}\n\n// SetfsuidRetUid sets fsuid for current thread and returns previous fsuid set.\n// setfsgid(2) will return a non-nil error only if its caller lacks CAP_SETUID capability\n// If the call fails due to other reasons, current fsuid will be returned.\nfunc SetfsuidRetUid(uid int) (int, error) {\n\treturn setfsuid(uid)\n}\n\nfunc Setfsgid(gid int) error {\n\t_, err := setfsgid(gid)\n\treturn err\n}\n\nfunc Setfsuid(uid int) error {\n\t_, err := setfsuid(uid)\n\treturn err\n}\n\nfunc Signalfd(fd int, sigmask *Sigset_t, flags int) (newfd int, err error) {\n\treturn signalfd(fd, sigmask, _C__NSIG/8, flags)\n}\n\n//sys\tSetpriority(which int, who int, prio int) (err error)\n//sys\tSetxattr(path string, attr string, data []byte, flags int) (err error)\n//sys\tsignalfd(fd int, sigmask *Sigset_t, maskSize uintptr, flags int) (newfd int, err error) = SYS_SIGNALFD4\n//sys\tStatx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error)\n//sys\tSync()\n//sys\tSyncfs(fd int) (err error)\n//sysnb\tSysinfo(info *Sysinfo_t) (err error)\n//sys\tTee(rfd int, wfd int, len int, flags int) (n int64, err error)\n//sysnb\tTimerfdCreate(clockid int, flags int) (fd int, err error)\n//sysnb\tTimerfdGettime(fd int, currValue *ItimerSpec) (err error)\n//sysnb\tTimerfdSettime(fd int, flags int, newValue *ItimerSpec, oldValue *ItimerSpec) (err error)\n//sysnb\tTgkill(tgid int, tid int, sig syscall.Signal) (err error)\n//sysnb\tTimes(tms *Tms) (ticks uintptr, err error)\n//sysnb\tUmask(mask int) (oldmask int)\n//sysnb\tUname(buf *Utsname) (err error)\n//sys\tUnmount(target string, flags int) (err error) = SYS_UMOUNT2\n//sys\tUnshare(flags int) (err error)\n//sys\twrite(fd int, p []byte) (n int, err error)\n//sys\texitThread(code int) (err error) = SYS_EXIT\n//sys\treadv(fd int, iovs []Iovec) (n int, err error) = SYS_READV\n//sys\twritev(fd int, iovs []Iovec) (n int, err error) = SYS_WRITEV\n//sys\tpreadv(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr) (n int, err error) = SYS_PREADV\n//sys\tpwritev(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr) (n int, err error) = SYS_PWRITEV\n//sys\tpreadv2(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr, flags int) (n int, err error) = SYS_PREADV2\n//sys\tpwritev2(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr, flags int) (n int, err error) = SYS_PWRITEV2\n\n// minIovec is the size of the small initial allocation used by\n// Readv, Writev, etc.\n//\n// This small allocation gets stack allocated, which lets the\n// common use case of len(iovs) <= minIovs avoid more expensive\n// heap allocations.\nconst minIovec = 8\n\n// appendBytes converts bs to Iovecs and appends them to vecs.\nfunc appendBytes(vecs []Iovec, bs [][]byte) []Iovec {\n\tfor _, b := range bs {\n\t\tvar v Iovec\n\t\tv.SetLen(len(b))\n\t\tif len(b) > 0 {\n\t\t\tv.Base = &b[0]\n\t\t} else {\n\t\t\tv.Base = (*byte)(unsafe.Pointer(&_zero))\n\t\t}\n\t\tvecs = append(vecs, v)\n\t}\n\treturn vecs\n}\n\n// offs2lohi splits offs into its low and high order bits.\nfunc offs2lohi(offs int64) (lo, hi uintptr) {\n\tconst longBits = SizeofLong * 8\n\treturn uintptr(offs), uintptr(uint64(offs) >> (longBits - 1) >> 1) // two shifts to avoid false positive in vet\n}\n\nfunc Readv(fd int, iovs [][]byte) (n int, err error) {\n\tiovecs := make([]Iovec, 0, minIovec)\n\tiovecs = appendBytes(iovecs, iovs)\n\tn, err = readv(fd, iovecs)\n\treadvRacedetect(iovecs, n, err)\n\treturn n, err\n}\n\nfunc Preadv(fd int, iovs [][]byte, offset int64) (n int, err error) {\n\tiovecs := make([]Iovec, 0, minIovec)\n\tiovecs = appendBytes(iovecs, iovs)\n\tlo, hi := offs2lohi(offset)\n\tn, err = preadv(fd, iovecs, lo, hi)\n\treadvRacedetect(iovecs, n, err)\n\treturn n, err\n}\n\nfunc Preadv2(fd int, iovs [][]byte, offset int64, flags int) (n int, err error) {\n\tiovecs := make([]Iovec, 0, minIovec)\n\tiovecs = appendBytes(iovecs, iovs)\n\tlo, hi := offs2lohi(offset)\n\tn, err = preadv2(fd, iovecs, lo, hi, flags)\n\treadvRacedetect(iovecs, n, err)\n\treturn n, err\n}\n\nfunc readvRacedetect(iovecs []Iovec, n int, err error) {\n\tif !raceenabled {\n\t\treturn\n\t}\n\tfor i := 0; n > 0 && i < len(iovecs); i++ {\n\t\tm := min(int(iovecs[i].Len), n)\n\t\tn -= m\n\t\tif m > 0 {\n\t\t\traceWriteRange(unsafe.Pointer(iovecs[i].Base), m)\n\t\t}\n\t}\n\tif err == nil {\n\t\traceAcquire(unsafe.Pointer(&ioSync))\n\t}\n}\n\nfunc Writev(fd int, iovs [][]byte) (n int, err error) {\n\tiovecs := make([]Iovec, 0, minIovec)\n\tiovecs = appendBytes(iovecs, iovs)\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\tn, err = writev(fd, iovecs)\n\twritevRacedetect(iovecs, n)\n\treturn n, err\n}\n\nfunc Pwritev(fd int, iovs [][]byte, offset int64) (n int, err error) {\n\tiovecs := make([]Iovec, 0, minIovec)\n\tiovecs = appendBytes(iovecs, iovs)\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\tlo, hi := offs2lohi(offset)\n\tn, err = pwritev(fd, iovecs, lo, hi)\n\twritevRacedetect(iovecs, n)\n\treturn n, err\n}\n\nfunc Pwritev2(fd int, iovs [][]byte, offset int64, flags int) (n int, err error) {\n\tiovecs := make([]Iovec, 0, minIovec)\n\tiovecs = appendBytes(iovecs, iovs)\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\tlo, hi := offs2lohi(offset)\n\tn, err = pwritev2(fd, iovecs, lo, hi, flags)\n\twritevRacedetect(iovecs, n)\n\treturn n, err\n}\n\nfunc writevRacedetect(iovecs []Iovec, n int) {\n\tif !raceenabled {\n\t\treturn\n\t}\n\tfor i := 0; n > 0 && i < len(iovecs); i++ {\n\t\tm := min(int(iovecs[i].Len), n)\n\t\tn -= m\n\t\tif m > 0 {\n\t\t\traceReadRange(unsafe.Pointer(iovecs[i].Base), m)\n\t\t}\n\t}\n}\n\n// mmap varies by architecture; see syscall_linux_*.go.\n//sys\tmunmap(addr uintptr, length uintptr) (err error)\n//sys\tmremap(oldaddr uintptr, oldlength uintptr, newlength uintptr, flags int, newaddr uintptr) (xaddr uintptr, err error)\n//sys\tMadvise(b []byte, advice int) (err error)\n//sys\tMprotect(b []byte, prot int) (err error)\n//sys\tMlock(b []byte) (err error)\n//sys\tMlockall(flags int) (err error)\n//sys\tMsync(b []byte, flags int) (err error)\n//sys\tMunlock(b []byte) (err error)\n//sys\tMunlockall() (err error)\n\nconst (\n\tmremapFixed     = MREMAP_FIXED\n\tmremapDontunmap = MREMAP_DONTUNMAP\n\tmremapMaymove   = MREMAP_MAYMOVE\n)\n\n// Vmsplice splices user pages from a slice of Iovecs into a pipe specified by fd,\n// using the specified flags.\nfunc Vmsplice(fd int, iovs []Iovec, flags int) (int, error) {\n\tvar p unsafe.Pointer\n\tif len(iovs) > 0 {\n\t\tp = unsafe.Pointer(&iovs[0])\n\t}\n\n\tn, _, errno := Syscall6(SYS_VMSPLICE, uintptr(fd), uintptr(p), uintptr(len(iovs)), uintptr(flags), 0, 0)\n\tif errno != 0 {\n\t\treturn 0, syscall.Errno(errno)\n\t}\n\n\treturn int(n), nil\n}\n\nfunc isGroupMember(gid int) bool {\n\tgroups, err := Getgroups()\n\tif err != nil {\n\t\treturn false\n\t}\n\n\treturn slices.Contains(groups, gid)\n}\n\nfunc isCapDacOverrideSet() bool {\n\thdr := CapUserHeader{Version: LINUX_CAPABILITY_VERSION_3}\n\tdata := [2]CapUserData{}\n\terr := Capget(&hdr, &data[0])\n\n\treturn err == nil && data[0].Effective&(1<<CAP_DAC_OVERRIDE) != 0\n}\n\n//sys\tfaccessat(dirfd int, path string, mode uint32) (err error)\n//sys\tFaccessat2(dirfd int, path string, mode uint32, flags int) (err error)\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tif flags == 0 {\n\t\treturn faccessat(dirfd, path, mode)\n\t}\n\n\tif err := Faccessat2(dirfd, path, mode, flags); err != ENOSYS && err != EPERM {\n\t\treturn err\n\t}\n\n\t// The Linux kernel faccessat system call does not take any flags.\n\t// The glibc faccessat implements the flags itself; see\n\t// https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/faccessat.c;hb=HEAD\n\t// Because people naturally expect syscall.Faccessat to act\n\t// like C faccessat, we do the same.\n\n\tif flags & ^(AT_SYMLINK_NOFOLLOW|AT_EACCESS) != 0 {\n\t\treturn EINVAL\n\t}\n\n\tvar st Stat_t\n\tif err := Fstatat(dirfd, path, &st, flags&AT_SYMLINK_NOFOLLOW); err != nil {\n\t\treturn err\n\t}\n\n\tmode &= 7\n\tif mode == 0 {\n\t\treturn nil\n\t}\n\n\tvar uid int\n\tif flags&AT_EACCESS != 0 {\n\t\tuid = Geteuid()\n\t\tif uid != 0 && isCapDacOverrideSet() {\n\t\t\t// If CAP_DAC_OVERRIDE is set, file access check is\n\t\t\t// done by the kernel in the same way as for root\n\t\t\t// (see generic_permission() in the Linux sources).\n\t\t\tuid = 0\n\t\t}\n\t} else {\n\t\tuid = Getuid()\n\t}\n\n\tif uid == 0 {\n\t\tif mode&1 == 0 {\n\t\t\t// Root can read and write any file.\n\t\t\treturn nil\n\t\t}\n\t\tif st.Mode&0111 != 0 {\n\t\t\t// Root can execute any file that anybody can execute.\n\t\t\treturn nil\n\t\t}\n\t\treturn EACCES\n\t}\n\n\tvar fmode uint32\n\tif uint32(uid) == st.Uid {\n\t\tfmode = (st.Mode >> 6) & 7\n\t} else {\n\t\tvar gid int\n\t\tif flags&AT_EACCESS != 0 {\n\t\t\tgid = Getegid()\n\t\t} else {\n\t\t\tgid = Getgid()\n\t\t}\n\n\t\tif uint32(gid) == st.Gid || isGroupMember(int(st.Gid)) {\n\t\t\tfmode = (st.Mode >> 3) & 7\n\t\t} else {\n\t\t\tfmode = st.Mode & 7\n\t\t}\n\t}\n\n\tif fmode&mode == mode {\n\t\treturn nil\n\t}\n\n\treturn EACCES\n}\n\n//sys\tnameToHandleAt(dirFD int, pathname string, fh *fileHandle, mountID *_C_int, flags int) (err error) = SYS_NAME_TO_HANDLE_AT\n//sys\topenByHandleAt(mountFD int, fh *fileHandle, flags int) (fd int, err error) = SYS_OPEN_BY_HANDLE_AT\n\n// fileHandle is the argument to nameToHandleAt and openByHandleAt. We\n// originally tried to generate it via unix/linux/types.go with \"type\n// fileHandle C.struct_file_handle\" but that generated empty structs\n// for mips64 and mips64le. Instead, hard code it for now (it's the\n// same everywhere else) until the mips64 generator issue is fixed.\ntype fileHandle struct {\n\tBytes uint32\n\tType  int32\n}\n\n// FileHandle represents the C struct file_handle used by\n// name_to_handle_at (see NameToHandleAt) and open_by_handle_at (see\n// OpenByHandleAt).\ntype FileHandle struct {\n\t*fileHandle\n}\n\n// NewFileHandle constructs a FileHandle.\nfunc NewFileHandle(handleType int32, handle []byte) FileHandle {\n\tconst hdrSize = unsafe.Sizeof(fileHandle{})\n\tbuf := make([]byte, hdrSize+uintptr(len(handle)))\n\tcopy(buf[hdrSize:], handle)\n\tfh := (*fileHandle)(unsafe.Pointer(&buf[0]))\n\tfh.Type = handleType\n\tfh.Bytes = uint32(len(handle))\n\treturn FileHandle{fh}\n}\n\nfunc (fh *FileHandle) Size() int   { return int(fh.fileHandle.Bytes) }\nfunc (fh *FileHandle) Type() int32 { return fh.fileHandle.Type }\nfunc (fh *FileHandle) Bytes() []byte {\n\tn := fh.Size()\n\tif n == 0 {\n\t\treturn nil\n\t}\n\treturn unsafe.Slice((*byte)(unsafe.Pointer(uintptr(unsafe.Pointer(&fh.fileHandle.Type))+4)), n)\n}\n\n// NameToHandleAt wraps the name_to_handle_at system call; it obtains\n// a handle for a path name.\nfunc NameToHandleAt(dirfd int, path string, flags int) (handle FileHandle, mountID int, err error) {\n\tvar mid _C_int\n\t// Try first with a small buffer, assuming the handle will\n\t// only be 32 bytes.\n\tsize := uint32(32 + unsafe.Sizeof(fileHandle{}))\n\tdidResize := false\n\tfor {\n\t\tbuf := make([]byte, size)\n\t\tfh := (*fileHandle)(unsafe.Pointer(&buf[0]))\n\t\tfh.Bytes = size - uint32(unsafe.Sizeof(fileHandle{}))\n\t\terr = nameToHandleAt(dirfd, path, fh, &mid, flags)\n\t\tif err == EOVERFLOW {\n\t\t\tif didResize {\n\t\t\t\t// We shouldn't need to resize more than once\n\t\t\t\treturn\n\t\t\t}\n\t\t\tdidResize = true\n\t\t\tsize = fh.Bytes + uint32(unsafe.Sizeof(fileHandle{}))\n\t\t\tcontinue\n\t\t}\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t\treturn FileHandle{fh}, int(mid), nil\n\t}\n}\n\n// OpenByHandleAt wraps the open_by_handle_at system call; it opens a\n// file via a handle as previously returned by NameToHandleAt.\nfunc OpenByHandleAt(mountFD int, handle FileHandle, flags int) (fd int, err error) {\n\treturn openByHandleAt(mountFD, handle.fileHandle, flags)\n}\n\n// Klogset wraps the sys_syslog system call; it sets console_loglevel to\n// the value specified by arg and passes a dummy pointer to bufp.\nfunc Klogset(typ int, arg int) (err error) {\n\tvar p unsafe.Pointer\n\t_, _, errno := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(p), uintptr(arg))\n\tif errno != 0 {\n\t\treturn errnoErr(errno)\n\t}\n\treturn nil\n}\n\n// RemoteIovec is Iovec with the pointer replaced with an integer.\n// It is used for ProcessVMReadv and ProcessVMWritev, where the pointer\n// refers to a location in a different process' address space, which\n// would confuse the Go garbage collector.\ntype RemoteIovec struct {\n\tBase uintptr\n\tLen  int\n}\n\n//sys\tProcessVMReadv(pid int, localIov []Iovec, remoteIov []RemoteIovec, flags uint) (n int, err error) = SYS_PROCESS_VM_READV\n//sys\tProcessVMWritev(pid int, localIov []Iovec, remoteIov []RemoteIovec, flags uint) (n int, err error) = SYS_PROCESS_VM_WRITEV\n\n//sys\tPidfdOpen(pid int, flags int) (fd int, err error) = SYS_PIDFD_OPEN\n//sys\tPidfdGetfd(pidfd int, targetfd int, flags int) (fd int, err error) = SYS_PIDFD_GETFD\n//sys\tPidfdSendSignal(pidfd int, sig Signal, info *Siginfo, flags int) (err error) = SYS_PIDFD_SEND_SIGNAL\n\n//sys\tshmat(id int, addr uintptr, flag int) (ret uintptr, err error)\n//sys\tshmctl(id int, cmd int, buf *SysvShmDesc) (result int, err error)\n//sys\tshmdt(addr uintptr) (err error)\n//sys\tshmget(key int, size int, flag int) (id int, err error)\n\n//sys\tgetitimer(which int, currValue *Itimerval) (err error)\n//sys\tsetitimer(which int, newValue *Itimerval, oldValue *Itimerval) (err error)\n\n// MakeItimerval creates an Itimerval from interval and value durations.\nfunc MakeItimerval(interval, value time.Duration) Itimerval {\n\treturn Itimerval{\n\t\tInterval: NsecToTimeval(interval.Nanoseconds()),\n\t\tValue:    NsecToTimeval(value.Nanoseconds()),\n\t}\n}\n\n// A value which may be passed to the which parameter for Getitimer and\n// Setitimer.\ntype ItimerWhich int\n\n// Possible which values for Getitimer and Setitimer.\nconst (\n\tItimerReal    ItimerWhich = ITIMER_REAL\n\tItimerVirtual ItimerWhich = ITIMER_VIRTUAL\n\tItimerProf    ItimerWhich = ITIMER_PROF\n)\n\n// Getitimer wraps getitimer(2) to return the current value of the timer\n// specified by which.\nfunc Getitimer(which ItimerWhich) (Itimerval, error) {\n\tvar it Itimerval\n\tif err := getitimer(int(which), &it); err != nil {\n\t\treturn Itimerval{}, err\n\t}\n\n\treturn it, nil\n}\n\n// Setitimer wraps setitimer(2) to arm or disarm the timer specified by which.\n// It returns the previous value of the timer.\n//\n// If the Itimerval argument is the zero value, the timer will be disarmed.\nfunc Setitimer(which ItimerWhich, it Itimerval) (Itimerval, error) {\n\tvar prev Itimerval\n\tif err := setitimer(int(which), &it, &prev); err != nil {\n\t\treturn Itimerval{}, err\n\t}\n\n\treturn prev, nil\n}\n\n//sysnb\trtSigprocmask(how int, set *Sigset_t, oldset *Sigset_t, sigsetsize uintptr) (err error) = SYS_RT_SIGPROCMASK\n\nfunc PthreadSigmask(how int, set, oldset *Sigset_t) error {\n\tif oldset != nil {\n\t\t// Explicitly clear in case Sigset_t is larger than _C__NSIG.\n\t\t*oldset = Sigset_t{}\n\t}\n\treturn rtSigprocmask(how, set, oldset, _C__NSIG/8)\n}\n\n//sysnb\tgetresuid(ruid *_C_int, euid *_C_int, suid *_C_int)\n//sysnb\tgetresgid(rgid *_C_int, egid *_C_int, sgid *_C_int)\n\nfunc Getresuid() (ruid, euid, suid int) {\n\tvar r, e, s _C_int\n\tgetresuid(&r, &e, &s)\n\treturn int(r), int(e), int(s)\n}\n\nfunc Getresgid() (rgid, egid, sgid int) {\n\tvar r, e, s _C_int\n\tgetresgid(&r, &e, &s)\n\treturn int(r), int(e), int(s)\n}\n\n// Pselect is a wrapper around the Linux pselect6 system call.\n// This version does not modify the timeout argument.\nfunc Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\t// Per https://man7.org/linux/man-pages/man2/select.2.html#NOTES,\n\t// The Linux pselect6() system call modifies its timeout argument.\n\t// [Not modifying the argument] is the behavior required by POSIX.1-2001.\n\tvar mutableTimeout *Timespec\n\tif timeout != nil {\n\t\tmutableTimeout = new(Timespec)\n\t\t*mutableTimeout = *timeout\n\t}\n\n\t// The final argument of the pselect6() system call is not a\n\t// sigset_t * pointer, but is instead a structure\n\tvar kernelMask *sigset_argpack\n\tif sigmask != nil {\n\t\twordBits := 32 << (^uintptr(0) >> 63) // see math.intSize\n\n\t\t// A sigset stores one bit per signal,\n\t\t// offset by 1 (because signal 0 does not exist).\n\t\t// So the number of words needed is ⌈__C_NSIG - 1 / wordBits⌉.\n\t\tsigsetWords := (_C__NSIG - 1 + wordBits - 1) / (wordBits)\n\n\t\tsigsetBytes := uintptr(sigsetWords * (wordBits / 8))\n\t\tkernelMask = &sigset_argpack{\n\t\t\tss:    sigmask,\n\t\t\tssLen: sigsetBytes,\n\t\t}\n\t}\n\n\treturn pselect6(nfd, r, w, e, mutableTimeout, kernelMask)\n}\n\n//sys\tschedSetattr(pid int, attr *SchedAttr, flags uint) (err error)\n//sys\tschedGetattr(pid int, attr *SchedAttr, size uint, flags uint) (err error)\n\n// SchedSetAttr is a wrapper for sched_setattr(2) syscall.\n// https://man7.org/linux/man-pages/man2/sched_setattr.2.html\nfunc SchedSetAttr(pid int, attr *SchedAttr, flags uint) error {\n\tif attr == nil {\n\t\treturn EINVAL\n\t}\n\tattr.Size = SizeofSchedAttr\n\treturn schedSetattr(pid, attr, flags)\n}\n\n// SchedGetAttr is a wrapper for sched_getattr(2) syscall.\n// https://man7.org/linux/man-pages/man2/sched_getattr.2.html\nfunc SchedGetAttr(pid int, flags uint) (*SchedAttr, error) {\n\tattr := &SchedAttr{}\n\tif err := schedGetattr(pid, attr, SizeofSchedAttr, flags); err != nil {\n\t\treturn nil, err\n\t}\n\treturn attr, nil\n}\n\n//sys\tCachestat(fd uint, crange *CachestatRange, cstat *Cachestat_t, flags uint) (err error)\n//sys\tMseal(b []byte, flags uint) (err error)\n\n//sys\tsetMemPolicy(mode int, mask *CPUSet, size int) (err error) = SYS_SET_MEMPOLICY\n\nfunc SetMemPolicy(mode int, mask *CPUSet) error {\n\treturn setMemPolicy(mode, mask, _CPU_SETSIZE)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_linux_386.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build 386 && linux\n\npackage unix\n\nimport (\n\t\"unsafe\"\n)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: int32(sec), Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: int32(sec), Usec: int32(usec)}\n}\n\n// 64-bit file system and 32-bit uid calls\n// (386 default is 32-bit file system and 16-bit uid).\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64_64\n//sys\tFchown(fd int, uid int, gid int) (err error) = SYS_FCHOWN32\n//sys\tFstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64\n//sys\tFstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64\n//sys\tFtruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64\n//sysnb\tGetegid() (egid int) = SYS_GETEGID32\n//sysnb\tGeteuid() (euid int) = SYS_GETEUID32\n//sysnb\tGetgid() (gid int) = SYS_GETGID32\n//sysnb\tGetuid() (uid int) = SYS_GETUID32\n//sys\tIoperm(from int, num int, on int) (err error)\n//sys\tIopl(level int) (err error)\n//sys\tLchown(path string, uid int, gid int) (err error) = SYS_LCHOWN32\n//sys\tLstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64\n//sys\tsetfsgid(gid int) (prev int, err error) = SYS_SETFSGID32\n//sys\tsetfsuid(uid int) (prev int, err error) = SYS_SETFSUID32\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error)\n//sys\tStat(path string, stat *Stat_t) (err error) = SYS_STAT64\n//sys\tSyncFileRange(fd int, off int64, n int64, flags int) (err error)\n//sys\tTruncate(path string, length int64) (err error) = SYS_TRUNCATE64\n//sys\tUstat(dev int, ubuf *Ustat_t) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error) = SYS_GETGROUPS32\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error) = SYS_SETGROUPS32\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT\n\n//sys\tmmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error)\n//sys\tPause() (err error)\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tpage := uintptr(offset / 4096)\n\tif offset != int64(page)*4096 {\n\t\treturn 0, EINVAL\n\t}\n\treturn mmap2(addr, length, prot, flags, fd, page)\n}\n\ntype rlimit32 struct {\n\tCur uint32\n\tMax uint32\n}\n\n//sysnb\tgetrlimit(resource int, rlim *rlimit32) (err error) = SYS_GETRLIMIT\n\nconst rlimInf32 = ^uint32(0)\nconst rlimInf64 = ^uint64(0)\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\terr = Prlimit(0, resource, nil, rlim)\n\tif err != ENOSYS {\n\t\treturn err\n\t}\n\n\trl := rlimit32{}\n\terr = getrlimit(resource, &rl)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif rl.Cur == rlimInf32 {\n\t\trlim.Cur = rlimInf64\n\t} else {\n\t\trlim.Cur = uint64(rl.Cur)\n\t}\n\n\tif rl.Max == rlimInf32 {\n\t\trlim.Max = rlimInf64\n\t} else {\n\t\trlim.Max = uint64(rl.Max)\n\t}\n\treturn\n}\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tnewoffset, errno := seek(fd, offset, whence)\n\tif errno != 0 {\n\t\treturn 0, errno\n\t}\n\treturn newoffset, nil\n}\n\n//sys\tfutimesat(dirfd int, path string, times *[2]Timeval) (err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n//sysnb\tTime(t *Time_t) (tt Time_t, err error)\n//sys\tUtime(path string, buf *Utimbuf) (err error)\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\n// On x86 Linux, all the socket calls go through an extra indirection,\n// I think because the 5-register system call interface can't handle\n// the 6-argument calls like sendto and recvfrom. Instead the\n// arguments to the underlying system call are the number below\n// and a pointer to an array of uintptr. We hide the pointer in the\n// socketcall assembly to avoid allocation on every system call.\n\nconst (\n\t// see linux/net.h\n\t_SOCKET      = 1\n\t_BIND        = 2\n\t_CONNECT     = 3\n\t_LISTEN      = 4\n\t_ACCEPT      = 5\n\t_GETSOCKNAME = 6\n\t_GETPEERNAME = 7\n\t_SOCKETPAIR  = 8\n\t_SEND        = 9\n\t_RECV        = 10\n\t_SENDTO      = 11\n\t_RECVFROM    = 12\n\t_SHUTDOWN    = 13\n\t_SETSOCKOPT  = 14\n\t_GETSOCKOPT  = 15\n\t_SENDMSG     = 16\n\t_RECVMSG     = 17\n\t_ACCEPT4     = 18\n\t_RECVMMSG    = 19\n\t_SENDMMSG    = 20\n)\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tfd, e := socketcall(_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc getsockname(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, e := rawsocketcall(_GETSOCKNAME, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc getpeername(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, e := rawsocketcall(_GETPEERNAME, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc socketpair(domain int, typ int, flags int, fd *[2]int32) (err error) {\n\t_, e := rawsocketcall(_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(flags), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, e := socketcall(_BIND, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, e := socketcall(_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tfd, e := rawsocketcall(_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto), 0, 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, e := socketcall(_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, e := socketcall(_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), vallen, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc recvfrom(s int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar base uintptr\n\tif len(p) > 0 {\n\t\tbase = uintptr(unsafe.Pointer(&p[0]))\n\t}\n\tn, e := socketcall(_RECVFROM, uintptr(s), base, uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc sendto(s int, p []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar base uintptr\n\tif len(p) > 0 {\n\t\tbase = uintptr(unsafe.Pointer(&p[0]))\n\t}\n\t_, e := socketcall(_SENDTO, uintptr(s), base, uintptr(len(p)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tn, e := socketcall(_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tn, e := socketcall(_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc Listen(s int, n int) (err error) {\n\t_, e := socketcall(_LISTEN, uintptr(s), uintptr(n), 0, 0, 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc Shutdown(s, how int) (err error) {\n\t_, e := socketcall(_SHUTDOWN, uintptr(s), uintptr(how), 0, 0, 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e := Syscall(SYS_FSTATFS64, uintptr(fd), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf)))\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tpathp, err := BytePtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\t_, _, e := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(pathp)), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf)))\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return uint64(uint32(r.Eip)) }\n\nfunc (r *PtraceRegs) SetPC(pc uint64) { r.Eip = int32(pc) }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {\n\trsa.Service_name_len = uint32(length)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_linux_alarm.go",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && (386 || amd64 || mips || mipsle || mips64 || mipsle || ppc64 || ppc64le || ppc || s390x || sparc64)\n\npackage unix\n\n// SYS_ALARM is not defined on arm or riscv, but is available for other GOARCH\n// values.\n\n//sys\tAlarm(seconds uint) (remaining uint, err error)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_linux_amd64.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build amd64 && linux\n\npackage unix\n\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_NEWFSTATAT\n//sys\tFstatfs(fd int, buf *Statfs_t) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetrlimit(resource int, rlim *Rlimit) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tIoperm(from int, num int, on int) (err error)\n//sys\tIopl(level int) (err error)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tListen(s int, n int) (err error)\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\treturn Fstatat(AT_FDCWD, path, stat, AT_SYMLINK_NOFOLLOW)\n}\n\n//sys\tMemfdSecret(flags int) (fd int, err error)\n//sys\tPause() (err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tvar ts *Timespec\n\tif timeout != nil {\n\t\tts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000}\n\t}\n\treturn pselect6(nfd, r, w, e, ts, nil)\n}\n\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error)\n//sys\tsetfsgid(gid int) (prev int, err error)\n//sys\tsetfsuid(uid int) (prev int, err error)\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\t// Use fstatat, because Android's seccomp policy blocks stat.\n\treturn Fstatat(AT_FDCWD, path, stat, 0)\n}\n\n//sys\tStatfs(path string, buf *Statfs_t) (err error)\n//sys\tSyncFileRange(fd int, off int64, n int64, flags int) (err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\tUstat(dev int, ubuf *Ustat_t) (err error)\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)\n\n//sys\tfutimesat(dirfd int, path string, times *[2]Timeval) (err error)\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\terrno := gettimeofday(tv)\n\tif errno != 0 {\n\t\treturn errno\n\t}\n\treturn nil\n}\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tvar tv Timeval\n\terrno := gettimeofday(&tv)\n\tif errno != 0 {\n\t\treturn 0, errno\n\t}\n\tif t != nil {\n\t\t*t = Time_t(tv.Sec)\n\t}\n\treturn Time_t(tv.Sec), nil\n}\n\n//sys\tUtime(path string, buf *Utimbuf) (err error)\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return r.Rip }\n\nfunc (r *PtraceRegs) SetPC(pc uint64) { r.Rip = pc }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint64(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint64(length)\n}\n\nfunc (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {\n\trsa.Service_name_len = uint64(length)\n}\n\n//sys\tkexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error)\n\nfunc KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error {\n\tcmdlineLen := len(cmdline)\n\tif cmdlineLen > 0 {\n\t\t// Account for the additional NULL byte added by\n\t\t// BytePtrFromString in kexecFileLoad. The kexec_file_load\n\t\t// syscall expects a NULL-terminated string.\n\t\tcmdlineLen++\n\t}\n\treturn kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build amd64 && linux && gc\n\npackage unix\n\nimport \"syscall\"\n\n//go:noescape\nfunc gettimeofday(tv *Timeval) (err syscall.Errno)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_linux_arm.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build arm && linux\n\npackage unix\n\nimport (\n\t\"unsafe\"\n)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: int32(sec), Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: int32(sec), Usec: int32(usec)}\n}\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tnewoffset, errno := seek(fd, offset, whence)\n\tif errno != 0 {\n\t\treturn 0, errno\n\t}\n\treturn newoffset, nil\n}\n\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error) = SYS_GETGROUPS32\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error) = SYS_SETGROUPS32\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tsocketpair(domain int, typ int, flags int, fd *[2]int32) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n\n// 64-bit file system and 32-bit uid calls\n// (16-bit uid calls are not always supported in newer kernels)\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)\n//sys\tFchown(fd int, uid int, gid int) (err error) = SYS_FCHOWN32\n//sys\tFstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64\n//sys\tFstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64\n//sysnb\tGetegid() (egid int) = SYS_GETEGID32\n//sysnb\tGeteuid() (euid int) = SYS_GETEUID32\n//sysnb\tGetgid() (gid int) = SYS_GETGID32\n//sysnb\tGetuid() (uid int) = SYS_GETUID32\n//sys\tLchown(path string, uid int, gid int) (err error) = SYS_LCHOWN32\n//sys\tListen(s int, n int) (err error)\n//sys\tLstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64\n//sys\tPause() (err error)\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT\n//sys\tsetfsgid(gid int) (prev int, err error) = SYS_SETFSGID32\n//sys\tsetfsuid(uid int) (prev int, err error) = SYS_SETFSUID32\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error)\n//sys\tStat(path string, stat *Stat_t) (err error) = SYS_STAT64\n//sys\tUstat(dev int, ubuf *Ustat_t) (err error)\n\n//sys\tfutimesat(dirfd int, path string, times *[2]Timeval) (err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n\nfunc Time(t *Time_t) (Time_t, error) {\n\tvar tv Timeval\n\terr := Gettimeofday(&tv)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tif t != nil {\n\t\t*t = Time_t(tv.Sec)\n\t}\n\treturn Time_t(tv.Sec), nil\n}\n\nfunc Utime(path string, buf *Utimbuf) error {\n\ttv := []Timeval{\n\t\t{Sec: buf.Actime},\n\t\t{Sec: buf.Modtime},\n\t}\n\treturn Utimes(path, tv)\n}\n\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tTruncate(path string, length int64) (err error) = SYS_TRUNCATE64\n//sys\tFtruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_ARM_FADVISE64_64, uintptr(fd), uintptr(advice), uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n//sys\tmmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error)\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e := Syscall(SYS_FSTATFS64, uintptr(fd), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf)))\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tpathp, err := BytePtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\t_, _, e := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(pathp)), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf)))\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tpage := uintptr(offset / 4096)\n\tif offset != int64(page)*4096 {\n\t\treturn 0, EINVAL\n\t}\n\treturn mmap2(addr, length, prot, flags, fd, page)\n}\n\ntype rlimit32 struct {\n\tCur uint32\n\tMax uint32\n}\n\n//sysnb\tgetrlimit(resource int, rlim *rlimit32) (err error) = SYS_UGETRLIMIT\n\nconst rlimInf32 = ^uint32(0)\nconst rlimInf64 = ^uint64(0)\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\terr = Prlimit(0, resource, nil, rlim)\n\tif err != ENOSYS {\n\t\treturn err\n\t}\n\n\trl := rlimit32{}\n\terr = getrlimit(resource, &rl)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif rl.Cur == rlimInf32 {\n\t\trlim.Cur = rlimInf64\n\t} else {\n\t\trlim.Cur = uint64(rl.Cur)\n\t}\n\n\tif rl.Max == rlimInf32 {\n\t\trlim.Max = rlimInf64\n\t} else {\n\t\trlim.Max = uint64(rl.Max)\n\t}\n\treturn\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return uint64(r.Uregs[15]) }\n\nfunc (r *PtraceRegs) SetPC(pc uint64) { r.Uregs[15] = uint32(pc) }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {\n\trsa.Service_name_len = uint32(length)\n}\n\n//sys\tarmSyncFileRange(fd int, flags int, off int64, n int64) (err error) = SYS_ARM_SYNC_FILE_RANGE\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) error {\n\t// The sync_file_range and arm_sync_file_range syscalls differ only in the\n\t// order of their arguments.\n\treturn armSyncFileRange(fd, flags, off, n)\n}\n\n//sys\tkexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error)\n\nfunc KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error {\n\tcmdlineLen := len(cmdline)\n\tif cmdlineLen > 0 {\n\t\t// Account for the additional NULL byte added by\n\t\t// BytePtrFromString in kexecFileLoad. The kexec_file_load\n\t\t// syscall expects a NULL-terminated string.\n\t\tcmdlineLen++\n\t}\n\treturn kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_linux_arm64.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build arm64 && linux\n\npackage unix\n\nimport \"unsafe\"\n\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) = SYS_EPOLL_PWAIT\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(fd int, path string, stat *Stat_t, flags int) (err error)\n//sys\tFstatfs(fd int, buf *Statfs_t) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tgetrlimit(resource int, rlim *Rlimit) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tListen(s int, n int) (err error)\n//sys\tMemfdSecret(flags int) (fd int, err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tvar ts *Timespec\n\tif timeout != nil {\n\t\tts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000}\n\t}\n\treturn pselect6(nfd, r, w, e, ts, nil)\n}\n\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error)\n//sys\tsetfsgid(gid int) (prev int, err error)\n//sys\tsetfsuid(uid int) (prev int, err error)\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\treturn Fstatat(AT_FDCWD, path, stat, 0)\n}\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\treturn Fchownat(AT_FDCWD, path, uid, gid, AT_SYMLINK_NOFOLLOW)\n}\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\treturn Fstatat(AT_FDCWD, path, stat, AT_SYMLINK_NOFOLLOW)\n}\n\n//sys\tStatfs(path string, buf *Statfs_t) (err error)\n//sys\tSyncFileRange(fd int, off int64, n int64, flags int) (err error)\n//sys\tTruncate(path string, length int64) (err error)\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\treturn ENOSYS\n}\n\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)\n\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc futimesat(dirfd int, path string, tv *[2]Timeval) (err error) {\n\tif tv == nil {\n\t\treturn utimensat(dirfd, path, nil, 0)\n\t}\n\n\tts := []Timespec{\n\t\tNsecToTimespec(TimevalToNsec(tv[0])),\n\t\tNsecToTimespec(TimevalToNsec(tv[1])),\n\t}\n\treturn utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)\n}\n\nfunc Time(t *Time_t) (Time_t, error) {\n\tvar tv Timeval\n\terr := Gettimeofday(&tv)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tif t != nil {\n\t\t*t = Time_t(tv.Sec)\n\t}\n\treturn Time_t(tv.Sec), nil\n}\n\nfunc Utime(path string, buf *Utimbuf) error {\n\ttv := []Timeval{\n\t\t{Sec: buf.Actime},\n\t\t{Sec: buf.Modtime},\n\t}\n\treturn Utimes(path, tv)\n}\n\nfunc utimes(path string, tv *[2]Timeval) (err error) {\n\tif tv == nil {\n\t\treturn utimensat(AT_FDCWD, path, nil, 0)\n\t}\n\n\tts := []Timespec{\n\t\tNsecToTimespec(TimevalToNsec(tv[0])),\n\t\tNsecToTimespec(TimevalToNsec(tv[1])),\n\t}\n\treturn utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)\n}\n\n// Getrlimit prefers the prlimit64 system call. See issue 38604.\nfunc Getrlimit(resource int, rlim *Rlimit) error {\n\terr := Prlimit(0, resource, nil, rlim)\n\tif err != ENOSYS {\n\t\treturn err\n\t}\n\treturn getrlimit(resource, rlim)\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return r.Pc }\n\nfunc (r *PtraceRegs) SetPC(pc uint64) { r.Pc = pc }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint64(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint64(length)\n}\n\nfunc (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {\n\trsa.Service_name_len = uint64(length)\n}\n\nfunc Pause() error {\n\t_, err := ppoll(nil, 0, nil, nil)\n\treturn err\n}\n\n//sys\tkexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error)\n\nfunc KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error {\n\tcmdlineLen := len(cmdline)\n\tif cmdlineLen > 0 {\n\t\t// Account for the additional NULL byte added by\n\t\t// BytePtrFromString in kexecFileLoad. The kexec_file_load\n\t\t// syscall expects a NULL-terminated string.\n\t\tcmdlineLen++\n\t}\n\treturn kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)\n}\n\nconst SYS_FSTATAT = SYS_NEWFSTATAT\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_linux_gc.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && gc\n\npackage unix\n\n// SyscallNoError may be used instead of Syscall for syscalls that don't fail.\nfunc SyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr)\n\n// RawSyscallNoError may be used instead of RawSyscall for syscalls that don't\n// fail.\nfunc RawSyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && gc && 386\n\npackage unix\n\nimport \"syscall\"\n\n// Underlying system call writes to newoffset via pointer.\n// Implemented in assembly to avoid allocation.\nfunc seek(fd int, offset int64, whence int) (newoffset int64, err syscall.Errno)\n\nfunc socketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (n int, err syscall.Errno)\nfunc rawsocketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (n int, err syscall.Errno)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_linux_gc_arm.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build arm && gc && linux\n\npackage unix\n\nimport \"syscall\"\n\n// Underlying system call writes to newoffset via pointer.\n// Implemented in assembly to avoid allocation.\nfunc seek(fd int, offset int64, whence int) (newoffset int64, err syscall.Errno)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && gccgo && 386\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc seek(fd int, offset int64, whence int) (int64, syscall.Errno) {\n\tvar newoffset int64\n\toffsetLow := uint32(offset & 0xffffffff)\n\toffsetHigh := uint32((offset >> 32) & 0xffffffff)\n\t_, _, err := Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offsetHigh), uintptr(offsetLow), uintptr(unsafe.Pointer(&newoffset)), uintptr(whence), 0)\n\treturn newoffset, err\n}\n\nfunc socketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (int, syscall.Errno) {\n\tfd, _, err := Syscall(SYS_SOCKETCALL, uintptr(call), uintptr(unsafe.Pointer(&a0)), 0)\n\treturn int(fd), err\n}\n\nfunc rawsocketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (int, syscall.Errno) {\n\tfd, _, err := RawSyscall(SYS_SOCKETCALL, uintptr(call), uintptr(unsafe.Pointer(&a0)), 0)\n\treturn int(fd), err\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && gccgo && arm\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc seek(fd int, offset int64, whence int) (int64, syscall.Errno) {\n\tvar newoffset int64\n\toffsetLow := uint32(offset & 0xffffffff)\n\toffsetHigh := uint32((offset >> 32) & 0xffffffff)\n\t_, _, err := Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offsetHigh), uintptr(offsetLow), uintptr(unsafe.Pointer(&newoffset)), uintptr(whence), 0)\n\treturn newoffset, err\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_linux_loong64.go",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build loong64 && linux\n\npackage unix\n\nimport \"unsafe\"\n\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) = SYS_EPOLL_PWAIT\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFstatfs(fd int, buf *Statfs_t) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetuid() (uid int)\n//sys\tListen(s int, n int) (err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tSeek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tvar ts *Timespec\n\tif timeout != nil {\n\t\tts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000}\n\t}\n\treturn pselect6(nfd, r, w, e, ts, nil)\n}\n\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error)\n//sys\tsetfsgid(gid int) (prev int, err error)\n//sys\tsetfsuid(uid int) (prev int, err error)\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)\n\nfunc timespecFromStatxTimestamp(x StatxTimestamp) Timespec {\n\treturn Timespec{\n\t\tSec:  x.Sec,\n\t\tNsec: int64(x.Nsec),\n\t}\n}\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) error {\n\tvar r Statx_t\n\t// Do it the glibc way, add AT_NO_AUTOMOUNT.\n\tif err := Statx(fd, path, AT_NO_AUTOMOUNT|flags, STATX_BASIC_STATS, &r); err != nil {\n\t\treturn err\n\t}\n\n\tstat.Dev = Mkdev(r.Dev_major, r.Dev_minor)\n\tstat.Ino = r.Ino\n\tstat.Mode = uint32(r.Mode)\n\tstat.Nlink = r.Nlink\n\tstat.Uid = r.Uid\n\tstat.Gid = r.Gid\n\tstat.Rdev = Mkdev(r.Rdev_major, r.Rdev_minor)\n\t// hope we don't get to process files so large to overflow these size\n\t// fields...\n\tstat.Size = int64(r.Size)\n\tstat.Blksize = int32(r.Blksize)\n\tstat.Blocks = int64(r.Blocks)\n\tstat.Atim = timespecFromStatxTimestamp(r.Atime)\n\tstat.Mtim = timespecFromStatxTimestamp(r.Mtime)\n\tstat.Ctim = timespecFromStatxTimestamp(r.Ctime)\n\n\treturn nil\n}\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\treturn Fstatat(fd, \"\", stat, AT_EMPTY_PATH)\n}\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\treturn Fstatat(AT_FDCWD, path, stat, 0)\n}\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\treturn Fchownat(AT_FDCWD, path, uid, gid, AT_SYMLINK_NOFOLLOW)\n}\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\treturn Fstatat(AT_FDCWD, path, stat, AT_SYMLINK_NOFOLLOW)\n}\n\n//sys\tStatfs(path string, buf *Statfs_t) (err error)\n//sys\tSyncFileRange(fd int, off int64, n int64, flags int) (err error)\n//sys\tTruncate(path string, length int64) (err error)\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\treturn ENOSYS\n}\n\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)\n\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\terr = Prlimit(0, resource, nil, rlim)\n\treturn\n}\n\nfunc futimesat(dirfd int, path string, tv *[2]Timeval) (err error) {\n\tif tv == nil {\n\t\treturn utimensat(dirfd, path, nil, 0)\n\t}\n\n\tts := []Timespec{\n\t\tNsecToTimespec(TimevalToNsec(tv[0])),\n\t\tNsecToTimespec(TimevalToNsec(tv[1])),\n\t}\n\treturn utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)\n}\n\nfunc Time(t *Time_t) (Time_t, error) {\n\tvar tv Timeval\n\terr := Gettimeofday(&tv)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tif t != nil {\n\t\t*t = Time_t(tv.Sec)\n\t}\n\treturn Time_t(tv.Sec), nil\n}\n\nfunc Utime(path string, buf *Utimbuf) error {\n\ttv := []Timeval{\n\t\t{Sec: buf.Actime},\n\t\t{Sec: buf.Modtime},\n\t}\n\treturn Utimes(path, tv)\n}\n\nfunc utimes(path string, tv *[2]Timeval) (err error) {\n\tif tv == nil {\n\t\treturn utimensat(AT_FDCWD, path, nil, 0)\n\t}\n\n\tts := []Timespec{\n\t\tNsecToTimespec(TimevalToNsec(tv[0])),\n\t\tNsecToTimespec(TimevalToNsec(tv[1])),\n\t}\n\treturn utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return r.Era }\n\nfunc (r *PtraceRegs) SetPC(era uint64) { r.Era = era }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint64(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint64(length)\n}\n\nfunc (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {\n\trsa.Service_name_len = uint64(length)\n}\n\nfunc Pause() error {\n\t_, err := ppoll(nil, 0, nil, nil)\n\treturn err\n}\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\treturn Renameat2(olddirfd, oldpath, newdirfd, newpath, 0)\n}\n\n//sys\tkexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error)\n\nfunc KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error {\n\tcmdlineLen := len(cmdline)\n\tif cmdlineLen > 0 {\n\t\t// Account for the additional NULL byte added by\n\t\t// BytePtrFromString in kexecFileLoad. The kexec_file_load\n\t\t// syscall expects a NULL-terminated string.\n\t\tcmdlineLen++\n\t}\n\treturn kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)\n}\n\nconst SYS_FSTATAT = SYS_NEWFSTATAT\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && (mips64 || mips64le)\n\npackage unix\n\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFstatfs(fd int, buf *Statfs_t) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetrlimit(resource int, rlim *Rlimit) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tListen(s int, n int) (err error)\n//sys\tPause() (err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tvar ts *Timespec\n\tif timeout != nil {\n\t\tts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000}\n\t}\n\treturn pselect6(nfd, r, w, e, ts, nil)\n}\n\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error)\n//sys\tsetfsgid(gid int) (prev int, err error)\n//sys\tsetfsuid(uid int) (prev int, err error)\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)\n//sys\tStatfs(path string, buf *Statfs_t) (err error)\n//sys\tSyncFileRange(fd int, off int64, n int64, flags int) (err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\tUstat(dev int, ubuf *Ustat_t) (err error)\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)\n\n//sys\tfutimesat(dirfd int, path string, times *[2]Timeval) (err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tvar tv Timeval\n\terr = Gettimeofday(&tv)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tif t != nil {\n\t\t*t = Time_t(tv.Sec)\n\t}\n\treturn Time_t(tv.Sec), nil\n}\n\n//sys\tUtime(path string, buf *Utimbuf) (err error)\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc Ioperm(from int, num int, on int) (err error) {\n\treturn ENOSYS\n}\n\nfunc Iopl(level int) (err error) {\n\treturn ENOSYS\n}\n\ntype stat_t struct {\n\tDev        uint32\n\tPad0       [3]int32\n\tIno        uint64\n\tMode       uint32\n\tNlink      uint32\n\tUid        uint32\n\tGid        uint32\n\tRdev       uint32\n\tPad1       [3]uint32\n\tSize       int64\n\tAtime      uint32\n\tAtime_nsec uint32\n\tMtime      uint32\n\tMtime_nsec uint32\n\tCtime      uint32\n\tCtime_nsec uint32\n\tBlksize    uint32\n\tPad2       uint32\n\tBlocks     int64\n}\n\n//sys\tfstat(fd int, st *stat_t) (err error)\n//sys\tfstatat(dirfd int, path string, st *stat_t, flags int) (err error) = SYS_NEWFSTATAT\n//sys\tlstat(path string, st *stat_t) (err error)\n//sys\tstat(path string, st *stat_t) (err error)\n\nfunc Fstat(fd int, s *Stat_t) (err error) {\n\tst := &stat_t{}\n\terr = fstat(fd, st)\n\tfillStat_t(s, st)\n\treturn\n}\n\nfunc Fstatat(dirfd int, path string, s *Stat_t, flags int) (err error) {\n\tst := &stat_t{}\n\terr = fstatat(dirfd, path, st, flags)\n\tfillStat_t(s, st)\n\treturn\n}\n\nfunc Lstat(path string, s *Stat_t) (err error) {\n\tst := &stat_t{}\n\terr = lstat(path, st)\n\tfillStat_t(s, st)\n\treturn\n}\n\nfunc Stat(path string, s *Stat_t) (err error) {\n\tst := &stat_t{}\n\terr = stat(path, st)\n\tfillStat_t(s, st)\n\treturn\n}\n\nfunc fillStat_t(s *Stat_t, st *stat_t) {\n\ts.Dev = st.Dev\n\ts.Ino = st.Ino\n\ts.Mode = st.Mode\n\ts.Nlink = st.Nlink\n\ts.Uid = st.Uid\n\ts.Gid = st.Gid\n\ts.Rdev = st.Rdev\n\ts.Size = st.Size\n\ts.Atim = Timespec{int64(st.Atime), int64(st.Atime_nsec)}\n\ts.Mtim = Timespec{int64(st.Mtime), int64(st.Mtime_nsec)}\n\ts.Ctim = Timespec{int64(st.Ctime), int64(st.Ctime_nsec)}\n\ts.Blksize = st.Blksize\n\ts.Blocks = st.Blocks\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return r.Epc }\n\nfunc (r *PtraceRegs) SetPC(pc uint64) { r.Epc = pc }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint64(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint64(length)\n}\n\nfunc (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {\n\trsa.Service_name_len = uint64(length)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && (mips || mipsle)\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)\n\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFtruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetuid() (uid int)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tListen(s int, n int) (err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64\n//sys\tsetfsgid(gid int) (prev int, err error)\n//sys\tsetfsuid(uid int) (prev int, err error)\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error)\n//sys\tSyncFileRange(fd int, off int64, n int64, flags int) (err error)\n//sys\tTruncate(path string, length int64) (err error) = SYS_TRUNCATE64\n//sys\tUstat(dev int, ubuf *Ustat_t) (err error)\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n\n//sys\tIoperm(from int, num int, on int) (err error)\n//sys\tIopl(level int) (err error)\n\n//sys\tfutimesat(dirfd int, path string, times *[2]Timeval) (err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n//sysnb\tTime(t *Time_t) (tt Time_t, err error)\n//sys\tUtime(path string, buf *Utimbuf) (err error)\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\n//sys\tLstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64\n//sys\tFstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64\n//sys\tFstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64\n//sys\tStat(path string, stat *Stat_t) (err error) = SYS_STAT64\n\n//sys\tPause() (err error)\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e := Syscall(SYS_FSTATFS64, uintptr(fd), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf)))\n\tif e != 0 {\n\t\terr = errnoErr(e)\n\t}\n\treturn\n}\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tp, err := BytePtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\t_, _, e := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(p)), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf)))\n\tif e != 0 {\n\t\terr = errnoErr(e)\n\t}\n\treturn\n}\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\t_, _, e := Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offset>>32), uintptr(offset), uintptr(unsafe.Pointer(&off)), uintptr(whence), 0)\n\tif e != 0 {\n\t\terr = errnoErr(e)\n\t}\n\treturn\n}\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: int32(sec), Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: int32(sec), Usec: int32(usec)}\n}\n\n//sys\tmmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error)\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tpage := uintptr(offset / 4096)\n\tif offset != int64(page)*4096 {\n\t\treturn 0, EINVAL\n\t}\n\treturn mmap2(addr, length, prot, flags, fd, page)\n}\n\nconst rlimInf32 = ^uint32(0)\nconst rlimInf64 = ^uint64(0)\n\ntype rlimit32 struct {\n\tCur uint32\n\tMax uint32\n}\n\n//sysnb\tgetrlimit(resource int, rlim *rlimit32) (err error) = SYS_GETRLIMIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\terr = Prlimit(0, resource, nil, rlim)\n\tif err != ENOSYS {\n\t\treturn err\n\t}\n\n\trl := rlimit32{}\n\terr = getrlimit(resource, &rl)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif rl.Cur == rlimInf32 {\n\t\trlim.Cur = rlimInf64\n\t} else {\n\t\trlim.Cur = uint64(rl.Cur)\n\t}\n\n\tif rl.Max == rlimInf32 {\n\t\trlim.Max = rlimInf64\n\t} else {\n\t\trlim.Max = uint64(rl.Max)\n\t}\n\treturn\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return r.Epc }\n\nfunc (r *PtraceRegs) SetPC(pc uint64) { r.Epc = pc }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {\n\trsa.Service_name_len = uint32(length)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_linux_ppc.go",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && ppc\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64\n//sys\tFstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64\n//sys\tFtruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetuid() (uid int)\n//sys\tIoperm(from int, num int, on int) (err error)\n//sys\tIopl(level int) (err error)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tListen(s int, n int) (err error)\n//sys\tLstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64\n//sys\tPause() (err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64\n//sys\tsetfsgid(gid int) (prev int, err error)\n//sys\tsetfsuid(uid int) (prev int, err error)\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error)\n//sys\tStat(path string, stat *Stat_t) (err error) = SYS_STAT64\n//sys\tTruncate(path string, length int64) (err error) = SYS_TRUNCATE64\n//sys\tUstat(dev int, ubuf *Ustat_t) (err error)\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n\n//sys\tfutimesat(dirfd int, path string, times *[2]Timeval) (err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n//sysnb\tTime(t *Time_t) (tt Time_t, err error)\n//sys\tUtime(path string, buf *Utimbuf) (err error)\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64_64, uintptr(fd), uintptr(advice), uintptr(offset>>32), uintptr(offset), uintptr(length>>32), uintptr(length))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc seek(fd int, offset int64, whence int) (int64, syscall.Errno) {\n\tvar newoffset int64\n\toffsetLow := uint32(offset & 0xffffffff)\n\toffsetHigh := uint32((offset >> 32) & 0xffffffff)\n\t_, _, err := Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offsetHigh), uintptr(offsetLow), uintptr(unsafe.Pointer(&newoffset)), uintptr(whence), 0)\n\treturn newoffset, err\n}\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tnewoffset, errno := seek(fd, offset, whence)\n\tif errno != 0 {\n\t\treturn 0, errno\n\t}\n\treturn newoffset, nil\n}\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e := Syscall(SYS_FSTATFS64, uintptr(fd), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf)))\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tpathp, err := BytePtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\t_, _, e := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(pathp)), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf)))\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\n//sys\tmmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error)\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tpage := uintptr(offset / 4096)\n\tif offset != int64(page)*4096 {\n\t\treturn 0, EINVAL\n\t}\n\treturn mmap2(addr, length, prot, flags, fd, page)\n}\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: int32(sec), Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: int32(sec), Usec: int32(usec)}\n}\n\ntype rlimit32 struct {\n\tCur uint32\n\tMax uint32\n}\n\n//sysnb\tgetrlimit(resource int, rlim *rlimit32) (err error) = SYS_UGETRLIMIT\n\nconst rlimInf32 = ^uint32(0)\nconst rlimInf64 = ^uint64(0)\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\terr = Prlimit(0, resource, nil, rlim)\n\tif err != ENOSYS {\n\t\treturn err\n\t}\n\n\trl := rlimit32{}\n\terr = getrlimit(resource, &rl)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif rl.Cur == rlimInf32 {\n\t\trlim.Cur = rlimInf64\n\t} else {\n\t\trlim.Cur = uint64(rl.Cur)\n\t}\n\n\tif rl.Max == rlimInf32 {\n\t\trlim.Max = rlimInf64\n\t} else {\n\t\trlim.Max = uint64(rl.Max)\n\t}\n\treturn\n}\n\nfunc (r *PtraceRegs) PC() uint32 { return r.Nip }\n\nfunc (r *PtraceRegs) SetPC(pc uint32) { r.Nip = pc }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {\n\trsa.Service_name_len = uint32(length)\n}\n\n//sys\tsyncFileRange2(fd int, flags int, off int64, n int64) (err error) = SYS_SYNC_FILE_RANGE2\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) error {\n\t// The sync_file_range and sync_file_range2 syscalls differ only in the\n\t// order of their arguments.\n\treturn syncFileRange2(fd, flags, off, n)\n}\n\n//sys\tkexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error)\n\nfunc KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error {\n\tcmdlineLen := len(cmdline)\n\tif cmdlineLen > 0 {\n\t\t// Account for the additional NULL byte added by\n\t\t// BytePtrFromString in kexecFileLoad. The kexec_file_load\n\t\t// syscall expects a NULL-terminated string.\n\t\tcmdlineLen++\n\t}\n\treturn kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && (ppc64 || ppc64le)\n\npackage unix\n\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_NEWFSTATAT\n//sys\tFstatfs(fd int, buf *Statfs_t) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetrlimit(resource int, rlim *Rlimit) (err error) = SYS_UGETRLIMIT\n//sysnb\tGetuid() (uid int)\n//sys\tIoperm(from int, num int, on int) (err error)\n//sys\tIopl(level int) (err error)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tListen(s int, n int) (err error)\n//sys\tLstat(path string, stat *Stat_t) (err error)\n//sys\tPause() (err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error)\n//sys\tsetfsgid(gid int) (prev int, err error)\n//sys\tsetfsuid(uid int) (prev int, err error)\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)\n//sys\tStat(path string, stat *Stat_t) (err error)\n//sys\tStatfs(path string, buf *Statfs_t) (err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\tUstat(dev int, ubuf *Ustat_t) (err error)\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)\n\n//sys\tfutimesat(dirfd int, path string, times *[2]Timeval) (err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n//sysnb\tTime(t *Time_t) (tt Time_t, err error)\n//sys\tUtime(path string, buf *Utimbuf) (err error)\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return r.Nip }\n\nfunc (r *PtraceRegs) SetPC(pc uint64) { r.Nip = pc }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint64(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint64(length)\n}\n\nfunc (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {\n\trsa.Service_name_len = uint64(length)\n}\n\n//sys\tsyncFileRange2(fd int, flags int, off int64, n int64) (err error) = SYS_SYNC_FILE_RANGE2\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) error {\n\t// The sync_file_range and sync_file_range2 syscalls differ only in the\n\t// order of their arguments.\n\treturn syncFileRange2(fd, flags, off, n)\n}\n\n//sys\tkexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error)\n\nfunc KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error {\n\tcmdlineLen := len(cmdline)\n\tif cmdlineLen > 0 {\n\t\t// Account for the additional NULL byte added by\n\t\t// BytePtrFromString in kexecFileLoad. The kexec_file_load\n\t\t// syscall expects a NULL-terminated string.\n\t\tcmdlineLen++\n\t}\n\treturn kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build riscv64 && linux\n\npackage unix\n\nimport \"unsafe\"\n\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) = SYS_EPOLL_PWAIT\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(fd int, path string, stat *Stat_t, flags int) (err error)\n//sys\tFstatfs(fd int, buf *Statfs_t) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetrlimit(resource int, rlim *Rlimit) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tListen(s int, n int) (err error)\n//sys\tMemfdSecret(flags int) (fd int, err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tSeek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tvar ts *Timespec\n\tif timeout != nil {\n\t\tts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000}\n\t}\n\treturn pselect6(nfd, r, w, e, ts, nil)\n}\n\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error)\n//sys\tsetfsgid(gid int) (prev int, err error)\n//sys\tsetfsuid(uid int) (prev int, err error)\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\treturn Fstatat(AT_FDCWD, path, stat, 0)\n}\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\treturn Fchownat(AT_FDCWD, path, uid, gid, AT_SYMLINK_NOFOLLOW)\n}\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\treturn Fstatat(AT_FDCWD, path, stat, AT_SYMLINK_NOFOLLOW)\n}\n\n//sys\tStatfs(path string, buf *Statfs_t) (err error)\n//sys\tSyncFileRange(fd int, off int64, n int64, flags int) (err error)\n//sys\tTruncate(path string, length int64) (err error)\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\treturn ENOSYS\n}\n\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)\n\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc futimesat(dirfd int, path string, tv *[2]Timeval) (err error) {\n\tif tv == nil {\n\t\treturn utimensat(dirfd, path, nil, 0)\n\t}\n\n\tts := []Timespec{\n\t\tNsecToTimespec(TimevalToNsec(tv[0])),\n\t\tNsecToTimespec(TimevalToNsec(tv[1])),\n\t}\n\treturn utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)\n}\n\nfunc Time(t *Time_t) (Time_t, error) {\n\tvar tv Timeval\n\terr := Gettimeofday(&tv)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tif t != nil {\n\t\t*t = Time_t(tv.Sec)\n\t}\n\treturn Time_t(tv.Sec), nil\n}\n\nfunc Utime(path string, buf *Utimbuf) error {\n\ttv := []Timeval{\n\t\t{Sec: buf.Actime},\n\t\t{Sec: buf.Modtime},\n\t}\n\treturn Utimes(path, tv)\n}\n\nfunc utimes(path string, tv *[2]Timeval) (err error) {\n\tif tv == nil {\n\t\treturn utimensat(AT_FDCWD, path, nil, 0)\n\t}\n\n\tts := []Timespec{\n\t\tNsecToTimespec(TimevalToNsec(tv[0])),\n\t\tNsecToTimespec(TimevalToNsec(tv[1])),\n\t}\n\treturn utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return r.Pc }\n\nfunc (r *PtraceRegs) SetPC(pc uint64) { r.Pc = pc }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint64(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint64(length)\n}\n\nfunc (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {\n\trsa.Service_name_len = uint64(length)\n}\n\nfunc Pause() error {\n\t_, err := ppoll(nil, 0, nil, nil)\n\treturn err\n}\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\treturn Renameat2(olddirfd, oldpath, newdirfd, newpath, 0)\n}\n\n//sys\tkexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error)\n\nfunc KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error {\n\tcmdlineLen := len(cmdline)\n\tif cmdlineLen > 0 {\n\t\t// Account for the additional NULL byte added by\n\t\t// BytePtrFromString in kexecFileLoad. The kexec_file_load\n\t\t// syscall expects a NULL-terminated string.\n\t\tcmdlineLen++\n\t}\n\treturn kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)\n}\n\n//sys\triscvHWProbe(pairs []RISCVHWProbePairs, cpuCount uintptr, cpus *CPUSet, flags uint) (err error)\n\nfunc RISCVHWProbe(pairs []RISCVHWProbePairs, set *CPUSet, flags uint) (err error) {\n\tvar setSize uintptr\n\n\tif set != nil {\n\t\tsetSize = uintptr(unsafe.Sizeof(*set))\n\t}\n\treturn riscvHWProbe(pairs, setSize, set, flags)\n}\n\nconst SYS_FSTATAT = SYS_NEWFSTATAT\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_linux_s390x.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build s390x && linux\n\npackage unix\n\nimport (\n\t\"unsafe\"\n)\n\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_NEWFSTATAT\n//sys\tFstatfs(fd int, buf *Statfs_t) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetrlimit(resource int, rlim *Rlimit) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tLstat(path string, stat *Stat_t) (err error)\n//sys\tPause() (err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error)\n//sys\tsetfsgid(gid int) (prev int, err error)\n//sys\tsetfsuid(uid int) (prev int, err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)\n//sys\tStat(path string, stat *Stat_t) (err error)\n//sys\tStatfs(path string, buf *Statfs_t) (err error)\n//sys\tSyncFileRange(fd int, off int64, n int64, flags int) (err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\tUstat(dev int, ubuf *Ustat_t) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n\n//sys\tfutimesat(dirfd int, path string, times *[2]Timeval) (err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tvar tv Timeval\n\terr = Gettimeofday(&tv)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tif t != nil {\n\t\t*t = Time_t(tv.Sec)\n\t}\n\treturn Time_t(tv.Sec), nil\n}\n\n//sys\tUtime(path string, buf *Utimbuf) (err error)\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc Ioperm(from int, num int, on int) (err error) {\n\treturn ENOSYS\n}\n\nfunc Iopl(level int) (err error) {\n\treturn ENOSYS\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return r.Psw.Addr }\n\nfunc (r *PtraceRegs) SetPC(pc uint64) { r.Psw.Addr = pc }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint64(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint64(length)\n}\n\nfunc (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {\n\trsa.Service_name_len = uint64(length)\n}\n\n// Linux on s390x uses the old mmap interface, which requires arguments to be passed in a struct.\n// mmap2 also requires arguments to be passed in a struct; it is currently not exposed in <asm/unistd.h>.\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tmmap_args := [6]uintptr{addr, length, uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)}\n\tr0, _, e1 := Syscall(SYS_MMAP, uintptr(unsafe.Pointer(&mmap_args[0])), 0, 0)\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// On s390x Linux, all the socket calls go through an extra indirection.\n// The arguments to the underlying system call (SYS_SOCKETCALL) are the\n// number below and a pointer to an array of uintptr.\nconst (\n\t// see linux/net.h\n\tnetSocket      = 1\n\tnetBind        = 2\n\tnetConnect     = 3\n\tnetListen      = 4\n\tnetAccept      = 5\n\tnetGetSockName = 6\n\tnetGetPeerName = 7\n\tnetSocketPair  = 8\n\tnetSend        = 9\n\tnetRecv        = 10\n\tnetSendTo      = 11\n\tnetRecvFrom    = 12\n\tnetShutdown    = 13\n\tnetSetSockOpt  = 14\n\tnetGetSockOpt  = 15\n\tnetSendMsg     = 16\n\tnetRecvMsg     = 17\n\tnetAccept4     = 18\n\tnetRecvMMsg    = 19\n\tnetSendMMsg    = 20\n)\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (int, error) {\n\targs := [4]uintptr{uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags)}\n\tfd, _, err := Syscall(SYS_SOCKETCALL, netAccept4, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn 0, err\n\t}\n\treturn int(fd), nil\n}\n\nfunc getsockname(s int, rsa *RawSockaddrAny, addrlen *_Socklen) error {\n\targs := [3]uintptr{uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))}\n\t_, _, err := RawSyscall(SYS_SOCKETCALL, netGetSockName, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc getpeername(s int, rsa *RawSockaddrAny, addrlen *_Socklen) error {\n\targs := [3]uintptr{uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))}\n\t_, _, err := RawSyscall(SYS_SOCKETCALL, netGetPeerName, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc socketpair(domain int, typ int, flags int, fd *[2]int32) error {\n\targs := [4]uintptr{uintptr(domain), uintptr(typ), uintptr(flags), uintptr(unsafe.Pointer(fd))}\n\t_, _, err := RawSyscall(SYS_SOCKETCALL, netSocketPair, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) error {\n\targs := [3]uintptr{uintptr(s), uintptr(addr), uintptr(addrlen)}\n\t_, _, err := Syscall(SYS_SOCKETCALL, netBind, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) error {\n\targs := [3]uintptr{uintptr(s), uintptr(addr), uintptr(addrlen)}\n\t_, _, err := Syscall(SYS_SOCKETCALL, netConnect, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc socket(domain int, typ int, proto int) (int, error) {\n\targs := [3]uintptr{uintptr(domain), uintptr(typ), uintptr(proto)}\n\tfd, _, err := RawSyscall(SYS_SOCKETCALL, netSocket, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn 0, err\n\t}\n\treturn int(fd), nil\n}\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) error {\n\targs := [5]uintptr{uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen))}\n\t_, _, err := Syscall(SYS_SOCKETCALL, netGetSockOpt, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) error {\n\targs := [5]uintptr{uintptr(s), uintptr(level), uintptr(name), uintptr(val), vallen}\n\t_, _, err := Syscall(SYS_SOCKETCALL, netSetSockOpt, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc recvfrom(s int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (int, error) {\n\tvar base uintptr\n\tif len(p) > 0 {\n\t\tbase = uintptr(unsafe.Pointer(&p[0]))\n\t}\n\targs := [6]uintptr{uintptr(s), base, uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))}\n\tn, _, err := Syscall(SYS_SOCKETCALL, netRecvFrom, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn 0, err\n\t}\n\treturn int(n), nil\n}\n\nfunc sendto(s int, p []byte, flags int, to unsafe.Pointer, addrlen _Socklen) error {\n\tvar base uintptr\n\tif len(p) > 0 {\n\t\tbase = uintptr(unsafe.Pointer(&p[0]))\n\t}\n\targs := [6]uintptr{uintptr(s), base, uintptr(len(p)), uintptr(flags), uintptr(to), uintptr(addrlen)}\n\t_, _, err := Syscall(SYS_SOCKETCALL, netSendTo, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (int, error) {\n\targs := [3]uintptr{uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)}\n\tn, _, err := Syscall(SYS_SOCKETCALL, netRecvMsg, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn 0, err\n\t}\n\treturn int(n), nil\n}\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (int, error) {\n\targs := [3]uintptr{uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)}\n\tn, _, err := Syscall(SYS_SOCKETCALL, netSendMsg, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn 0, err\n\t}\n\treturn int(n), nil\n}\n\nfunc Listen(s int, n int) error {\n\targs := [2]uintptr{uintptr(s), uintptr(n)}\n\t_, _, err := Syscall(SYS_SOCKETCALL, netListen, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc Shutdown(s, how int) error {\n\targs := [2]uintptr{uintptr(s), uintptr(how)}\n\t_, _, err := Syscall(SYS_SOCKETCALL, netShutdown, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n//sys\tkexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error)\n\nfunc KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error {\n\tcmdlineLen := len(cmdline)\n\tif cmdlineLen > 0 {\n\t\t// Account for the additional NULL byte added by\n\t\t// BytePtrFromString in kexecFileLoad. The kexec_file_load\n\t\t// syscall expects a NULL-terminated string.\n\t\tcmdlineLen++\n\t}\n\treturn kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build sparc64 && linux\n\npackage unix\n\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64\n//sys\tFstatfs(fd int, buf *Statfs_t) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetrlimit(resource int, rlim *Rlimit) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tListen(s int, n int) (err error)\n//sys\tLstat(path string, stat *Stat_t) (err error)\n//sys\tPause() (err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error)\n//sys\tsetfsgid(gid int) (prev int, err error)\n//sys\tsetfsuid(uid int) (prev int, err error)\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)\n//sys\tStat(path string, stat *Stat_t) (err error)\n//sys\tStatfs(path string, buf *Statfs_t) (err error)\n//sys\tSyncFileRange(fd int, off int64, n int64, flags int) (err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)\n\nfunc Ioperm(from int, num int, on int) (err error) {\n\treturn ENOSYS\n}\n\nfunc Iopl(level int) (err error) {\n\treturn ENOSYS\n}\n\n//sys\tfutimesat(dirfd int, path string, times *[2]Timeval) (err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tvar tv Timeval\n\terr = Gettimeofday(&tv)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tif t != nil {\n\t\t*t = Time_t(tv.Sec)\n\t}\n\treturn Time_t(tv.Sec), nil\n}\n\n//sys\tUtime(path string, buf *Utimbuf) (err error)\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: int32(usec)}\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return r.Tpc }\n\nfunc (r *PtraceRegs) SetPC(pc uint64) { r.Tpc = pc }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint64(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint64(length)\n}\n\nfunc (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {\n\trsa.Service_name_len = uint64(length)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_netbsd.go",
    "content": "// Copyright 2009,2010 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// NetBSD system calls.\n// This file is compiled as ordinary Go code,\n// but it is also input to mksyscall,\n// which parses the //sys lines and generates system call stubs.\n// Note that sometimes we use a lowercase //sys name and wrap\n// it in our own nicer implementation, either here or in\n// syscall_bsd.go or syscall_unix.go.\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets.\ntype SockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [12]int8\n\traw    RawSockaddrDatalink\n}\n\nfunc anyToSockaddrGOOS(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {\n\treturn nil, EAFNOSUPPORT\n}\n\nfunc Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)\n\nfunc sysctlNodes(mib []_C_int) (nodes []Sysctlnode, err error) {\n\tvar olen uintptr\n\n\t// Get a list of all sysctl nodes below the given MIB by performing\n\t// a sysctl for the given MIB with CTL_QUERY appended.\n\tmib = append(mib, CTL_QUERY)\n\tqnode := Sysctlnode{Flags: SYSCTL_VERS_1}\n\tqp := (*byte)(unsafe.Pointer(&qnode))\n\tsz := unsafe.Sizeof(qnode)\n\tif err = sysctl(mib, nil, &olen, qp, sz); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Now that we know the size, get the actual nodes.\n\tnodes = make([]Sysctlnode, olen/sz)\n\tnp := (*byte)(unsafe.Pointer(&nodes[0]))\n\tif err = sysctl(mib, np, &olen, qp, sz); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn nodes, nil\n}\n\nfunc nametomib(name string) (mib []_C_int, err error) {\n\t// Split name into components.\n\tvar parts []string\n\tlast := 0\n\tfor i := 0; i < len(name); i++ {\n\t\tif name[i] == '.' {\n\t\t\tparts = append(parts, name[last:i])\n\t\t\tlast = i + 1\n\t\t}\n\t}\n\tparts = append(parts, name[last:])\n\n\t// Discover the nodes and construct the MIB OID.\n\tfor partno, part := range parts {\n\t\tnodes, err := sysctlNodes(mib)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tfor _, node := range nodes {\n\t\t\tn := make([]byte, 0)\n\t\t\tfor i := range node.Name {\n\t\t\t\tif node.Name[i] != 0 {\n\t\t\t\t\tn = append(n, byte(node.Name[i]))\n\t\t\t\t}\n\t\t\t}\n\t\t\tif string(n) == part {\n\t\t\t\tmib = append(mib, _C_int(node.Num))\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif len(mib) != partno+1 {\n\t\t\treturn nil, EINVAL\n\t\t}\n\t}\n\n\treturn mib, nil\n}\n\nfunc direntIno(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Fileno), unsafe.Sizeof(Dirent{}.Fileno))\n}\n\nfunc direntReclen(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen))\n}\n\nfunc direntNamlen(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen))\n}\n\nfunc SysctlUvmexp(name string) (*Uvmexp, error) {\n\tmib, err := sysctlmib(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tn := uintptr(SizeofUvmexp)\n\tvar u Uvmexp\n\tif err := sysctl(mib, (*byte)(unsafe.Pointer(&u)), &n, nil, 0); err != nil {\n\t\treturn nil, err\n\t}\n\treturn &u, nil\n}\n\nfunc Pipe(p []int) (err error) {\n\treturn Pipe2(p, 0)\n}\n\n//sysnb\tpipe2(p *[2]_C_int, flags int) (err error)\n\nfunc Pipe2(p []int, flags int) error {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\terr := pipe2(&pp, flags)\n\tif err == nil {\n\t\tp[0] = int(pp[0])\n\t\tp[1] = int(pp[1])\n\t}\n\treturn err\n}\n\n//sys\tGetdents(fd int, buf []byte) (n int, err error)\n\nfunc Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {\n\tn, err = Getdents(fd, buf)\n\tif err != nil || basep == nil {\n\t\treturn\n\t}\n\n\tvar off int64\n\toff, err = Seek(fd, 0, 1 /* SEEK_CUR */)\n\tif err != nil {\n\t\t*basep = ^uintptr(0)\n\t\treturn\n\t}\n\t*basep = uintptr(off)\n\tif unsafe.Sizeof(*basep) == 8 {\n\t\treturn\n\t}\n\tif off>>32 != 0 {\n\t\t// We can't stuff the offset back into a uintptr, so any\n\t\t// future calls would be suspect. Generate an error.\n\t\t// EIO is allowed by getdirentries.\n\t\terr = EIO\n\t}\n\treturn\n}\n\n//sys\tGetcwd(buf []byte) (n int, err error) = SYS___GETCWD\n\n// TODO\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\treturn -1, ENOSYS\n}\n\n//sys\tioctl(fd int, req uint, arg uintptr) (err error)\n//sys\tioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) = SYS_IOCTL\n\n//sys\tsysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL\n\nfunc IoctlGetPtmget(fd int, req uint) (*Ptmget, error) {\n\tvar value Ptmget\n\terr := ioctlPtr(fd, req, unsafe.Pointer(&value))\n\treturn &value, err\n}\n\nfunc Uname(uname *Utsname) error {\n\tmib := []_C_int{CTL_KERN, KERN_OSTYPE}\n\tn := unsafe.Sizeof(uname.Sysname)\n\tif err := sysctl(mib, &uname.Sysname[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_HOSTNAME}\n\tn = unsafe.Sizeof(uname.Nodename)\n\tif err := sysctl(mib, &uname.Nodename[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_OSRELEASE}\n\tn = unsafe.Sizeof(uname.Release)\n\tif err := sysctl(mib, &uname.Release[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_VERSION}\n\tn = unsafe.Sizeof(uname.Version)\n\tif err := sysctl(mib, &uname.Version[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\t// The version might have newlines or tabs in it, convert them to\n\t// spaces.\n\tfor i, b := range uname.Version {\n\t\tif b == '\\n' || b == '\\t' {\n\t\t\tif i == len(uname.Version)-1 {\n\t\t\t\tuname.Version[i] = 0\n\t\t\t} else {\n\t\t\t\tuname.Version[i] = ' '\n\t\t\t}\n\t\t}\n\t}\n\n\tmib = []_C_int{CTL_HW, HW_MACHINE}\n\tn = unsafe.Sizeof(uname.Machine)\n\tif err := sysctl(mib, &uname.Machine[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\nfunc Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\treturn sendfile(outfd, infd, offset, count)\n}\n\nfunc Fstatvfs(fd int, buf *Statvfs_t) (err error) {\n\treturn Fstatvfs1(fd, buf, ST_WAIT)\n}\n\nfunc Statvfs(path string, buf *Statvfs_t) (err error) {\n\treturn Statvfs1(path, buf, ST_WAIT)\n}\n\nfunc Getvfsstat(buf []Statvfs_t, flags int) (n int, err error) {\n\tvar (\n\t\t_p0     unsafe.Pointer\n\t\tbufsize uintptr\n\t)\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t\tbufsize = unsafe.Sizeof(Statvfs_t{}) * uintptr(len(buf))\n\t}\n\tr0, _, e1 := Syscall(SYS_GETVFSSTAT, uintptr(_p0), bufsize, uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n/*\n * Exposed directly\n */\n//sys\tAccess(path string, mode uint32) (err error)\n//sys\tAdjtime(delta *Timeval, olddelta *Timeval) (err error)\n//sys\tChdir(path string) (err error)\n//sys\tChflags(path string, flags int) (err error)\n//sys\tChmod(path string, mode uint32) (err error)\n//sys\tChown(path string, uid int, gid int) (err error)\n//sys\tChroot(path string) (err error)\n//sys\tClockGettime(clockid int32, time *Timespec) (err error)\n//sys\tClose(fd int) (err error)\n//sys\tDup(fd int) (nfd int, err error)\n//sys\tDup2(from int, to int) (err error)\n//sys\tDup3(from int, to int, flags int) (err error)\n//sys\tExit(code int)\n//sys\tExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error)\n//sys\tExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error)\n//sys\tExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error)\n//sys\tExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error)\n//sys\tFaccessat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_POSIX_FADVISE\n//sys\tFchdir(fd int) (err error)\n//sys\tFchflags(fd int, flags int) (err error)\n//sys\tFchmod(fd int, mode uint32) (err error)\n//sys\tFchmodat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFchownat(dirfd int, path string, uid int, gid int, flags int) (err error)\n//sys\tFlock(fd int, how int) (err error)\n//sys\tFpathconf(fd int, name int) (val int, err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(fd int, path string, stat *Stat_t, flags int) (err error)\n//sys\tFstatvfs1(fd int, buf *Statvfs_t, flags int) (err error) = SYS_FSTATVFS1\n//sys\tFsync(fd int) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (uid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetpgid(pid int) (pgid int, err error)\n//sysnb\tGetpgrp() (pgrp int)\n//sysnb\tGetpid() (pid int)\n//sysnb\tGetppid() (ppid int)\n//sys\tGetpriority(which int, who int) (prio int, err error)\n//sysnb\tGetrlimit(which int, lim *Rlimit) (err error)\n//sysnb\tGetrusage(who int, rusage *Rusage) (err error)\n//sysnb\tGetsid(pid int) (sid int, err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tIssetugid() (tainted bool)\n//sys\tKill(pid int, signum syscall.Signal) (err error)\n//sys\tKqueue() (fd int, err error)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tLink(path string, link string) (err error)\n//sys\tLinkat(pathfd int, path string, linkfd int, link string, flags int) (err error)\n//sys\tListen(s int, backlog int) (err error)\n//sys\tLstat(path string, stat *Stat_t) (err error)\n//sys\tMkdir(path string, mode uint32) (err error)\n//sys\tMkdirat(dirfd int, path string, mode uint32) (err error)\n//sys\tMkfifo(path string, mode uint32) (err error)\n//sys\tMkfifoat(dirfd int, path string, mode uint32) (err error)\n//sys\tMknod(path string, mode uint32, dev int) (err error)\n//sys\tMknodat(dirfd int, path string, mode uint32, dev int) (err error)\n//sys\tNanosleep(time *Timespec, leftover *Timespec) (err error)\n//sys\tOpen(path string, mode int, perm uint32) (fd int, err error)\n//sys\tOpenat(dirfd int, path string, mode int, perm uint32) (fd int, err error)\n//sys\tPathconf(path string, name int) (val int, err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error)\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error)\n//sys\tread(fd int, p []byte) (n int, err error)\n//sys\tReadlink(path string, buf []byte) (n int, err error)\n//sys\tReadlinkat(dirfd int, path string, buf []byte) (n int, err error)\n//sys\tRename(from string, to string) (err error)\n//sys\tRenameat(fromfd int, from string, tofd int, to string) (err error)\n//sys\tRevoke(path string) (err error)\n//sys\tRmdir(path string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)\n//sysnb\tSetegid(egid int) (err error)\n//sysnb\tSeteuid(euid int) (err error)\n//sysnb\tSetgid(gid int) (err error)\n//sysnb\tSetpgid(pid int, pgid int) (err error)\n//sys\tSetpriority(which int, who int, prio int) (err error)\n//sysnb\tSetregid(rgid int, egid int) (err error)\n//sysnb\tSetreuid(ruid int, euid int) (err error)\n//sysnb\tSetsid() (pid int, err error)\n//sysnb\tSettimeofday(tp *Timeval) (err error)\n//sysnb\tSetuid(uid int) (err error)\n//sys\tStat(path string, stat *Stat_t) (err error)\n//sys\tStatvfs1(path string, buf *Statvfs_t, flags int) (err error) = SYS_STATVFS1\n//sys\tSymlink(path string, link string) (err error)\n//sys\tSymlinkat(oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSync() (err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\tUmask(newmask int) (oldmask int)\n//sys\tUnlink(path string) (err error)\n//sys\tUnlinkat(dirfd int, path string, flags int) (err error)\n//sys\tUnmount(path string, flags int) (err error)\n//sys\twrite(fd int, p []byte) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)\n//sys\tmunmap(addr uintptr, length uintptr) (err error)\n//sys\tutimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error)\n\nconst (\n\tmremapFixed     = MAP_FIXED\n\tmremapDontunmap = 0\n\tmremapMaymove   = 0\n)\n\n//sys\tmremapNetBSD(oldp uintptr, oldsize uintptr, newp uintptr, newsize uintptr, flags int) (xaddr uintptr, err error) = SYS_MREMAP\n\nfunc mremap(oldaddr uintptr, oldlength uintptr, newlength uintptr, flags int, newaddr uintptr) (uintptr, error) {\n\treturn mremapNetBSD(oldaddr, oldlength, newaddr, newlength, flags)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_netbsd_386.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build 386 && netbsd\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: int32(usec)}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint32(fd)\n\tk.Filter = uint32(mode)\n\tk.Flags = uint32(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build amd64 && netbsd\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: int32(usec)}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = uint32(mode)\n\tk.Flags = uint32(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build arm && netbsd\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: int32(usec)}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint32(fd)\n\tk.Filter = uint32(mode)\n\tk.Flags = uint32(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build arm64 && netbsd\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: int32(usec)}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = uint32(mode)\n\tk.Flags = uint32(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_openbsd.go",
    "content": "// Copyright 2009,2010 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// OpenBSD system calls.\n// This file is compiled as ordinary Go code,\n// but it is also input to mksyscall,\n// which parses the //sys lines and generates system call stubs.\n// Note that sometimes we use a lowercase //sys name and wrap\n// it in our own nicer implementation, either here or in\n// syscall_bsd.go or syscall_unix.go.\n\npackage unix\n\nimport (\n\t\"sort\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets.\ntype SockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [24]int8\n\traw    RawSockaddrDatalink\n}\n\nfunc anyToSockaddrGOOS(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {\n\treturn nil, EAFNOSUPPORT\n}\n\nfunc Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)\n\nfunc nametomib(name string) (mib []_C_int, err error) {\n\ti := sort.Search(len(sysctlMib), func(i int) bool {\n\t\treturn sysctlMib[i].ctlname >= name\n\t})\n\tif i < len(sysctlMib) && sysctlMib[i].ctlname == name {\n\t\treturn sysctlMib[i].ctloid, nil\n\t}\n\treturn nil, EINVAL\n}\n\nfunc direntIno(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Fileno), unsafe.Sizeof(Dirent{}.Fileno))\n}\n\nfunc direntReclen(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen))\n}\n\nfunc direntNamlen(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen))\n}\n\nfunc SysctlUvmexp(name string) (*Uvmexp, error) {\n\tmib, err := sysctlmib(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tn := uintptr(SizeofUvmexp)\n\tvar u Uvmexp\n\tif err := sysctl(mib, (*byte)(unsafe.Pointer(&u)), &n, nil, 0); err != nil {\n\t\treturn nil, err\n\t}\n\tif n != SizeofUvmexp {\n\t\treturn nil, EIO\n\t}\n\treturn &u, nil\n}\n\nfunc Pipe(p []int) (err error) {\n\treturn Pipe2(p, 0)\n}\n\n//sysnb\tpipe2(p *[2]_C_int, flags int) (err error)\n\nfunc Pipe2(p []int, flags int) error {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\terr := pipe2(&pp, flags)\n\tif err == nil {\n\t\tp[0] = int(pp[0])\n\t\tp[1] = int(pp[1])\n\t}\n\treturn err\n}\n\n//sys\tGetdents(fd int, buf []byte) (n int, err error)\n\nfunc Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {\n\tn, err = Getdents(fd, buf)\n\tif err != nil || basep == nil {\n\t\treturn\n\t}\n\n\tvar off int64\n\toff, err = Seek(fd, 0, 1 /* SEEK_CUR */)\n\tif err != nil {\n\t\t*basep = ^uintptr(0)\n\t\treturn\n\t}\n\t*basep = uintptr(off)\n\tif unsafe.Sizeof(*basep) == 8 {\n\t\treturn\n\t}\n\tif off>>32 != 0 {\n\t\t// We can't stuff the offset back into a uintptr, so any\n\t\t// future calls would be suspect. Generate an error.\n\t\t// EIO was allowed by getdirentries.\n\t\terr = EIO\n\t}\n\treturn\n}\n\n//sys\tGetcwd(buf []byte) (n int, err error) = SYS___GETCWD\n\nfunc Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\treturn sendfile(outfd, infd, offset, count)\n}\n\n// TODO\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\treturn -1, ENOSYS\n}\n\nfunc Getfsstat(buf []Statfs_t, flags int) (n int, err error) {\n\tvar bufptr *Statfs_t\n\tvar bufsize uintptr\n\tif len(buf) > 0 {\n\t\tbufptr = &buf[0]\n\t\tbufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf))\n\t}\n\treturn getfsstat(bufptr, bufsize, flags)\n}\n\n//sysnb\tgetresuid(ruid *_C_int, euid *_C_int, suid *_C_int)\n//sysnb\tgetresgid(rgid *_C_int, egid *_C_int, sgid *_C_int)\n\nfunc Getresuid() (ruid, euid, suid int) {\n\tvar r, e, s _C_int\n\tgetresuid(&r, &e, &s)\n\treturn int(r), int(e), int(s)\n}\n\nfunc Getresgid() (rgid, egid, sgid int) {\n\tvar r, e, s _C_int\n\tgetresgid(&r, &e, &s)\n\treturn int(r), int(e), int(s)\n}\n\n//sys\tioctl(fd int, req uint, arg uintptr) (err error)\n//sys\tioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) = SYS_IOCTL\n\n//sys\tsysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL\n\n//sys\tfcntl(fd int, cmd int, arg int) (n int, err error)\n//sys\tfcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) = SYS_FCNTL\n\n// FcntlInt performs a fcntl syscall on fd with the provided command and argument.\nfunc FcntlInt(fd uintptr, cmd, arg int) (int, error) {\n\treturn fcntl(int(fd), cmd, arg)\n}\n\n// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command.\nfunc FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error {\n\t_, err := fcntlPtr(int(fd), cmd, unsafe.Pointer(lk))\n\treturn err\n}\n\n//sys\tppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error)\n\nfunc Ppoll(fds []PollFd, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tif len(fds) == 0 {\n\t\treturn ppoll(nil, 0, timeout, sigmask)\n\t}\n\treturn ppoll(&fds[0], len(fds), timeout, sigmask)\n}\n\nfunc Uname(uname *Utsname) error {\n\tmib := []_C_int{CTL_KERN, KERN_OSTYPE}\n\tn := unsafe.Sizeof(uname.Sysname)\n\tif err := sysctl(mib, &uname.Sysname[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_HOSTNAME}\n\tn = unsafe.Sizeof(uname.Nodename)\n\tif err := sysctl(mib, &uname.Nodename[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_OSRELEASE}\n\tn = unsafe.Sizeof(uname.Release)\n\tif err := sysctl(mib, &uname.Release[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_VERSION}\n\tn = unsafe.Sizeof(uname.Version)\n\tif err := sysctl(mib, &uname.Version[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\t// The version might have newlines or tabs in it, convert them to\n\t// spaces.\n\tfor i, b := range uname.Version {\n\t\tif b == '\\n' || b == '\\t' {\n\t\t\tif i == len(uname.Version)-1 {\n\t\t\t\tuname.Version[i] = 0\n\t\t\t} else {\n\t\t\t\tuname.Version[i] = ' '\n\t\t\t}\n\t\t}\n\t}\n\n\tmib = []_C_int{CTL_HW, HW_MACHINE}\n\tn = unsafe.Sizeof(uname.Machine)\n\tif err := sysctl(mib, &uname.Machine[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\n/*\n * Exposed directly\n */\n//sys\tAccess(path string, mode uint32) (err error)\n//sys\tAdjtime(delta *Timeval, olddelta *Timeval) (err error)\n//sys\tChdir(path string) (err error)\n//sys\tChflags(path string, flags int) (err error)\n//sys\tChmod(path string, mode uint32) (err error)\n//sys\tChown(path string, uid int, gid int) (err error)\n//sys\tChroot(path string) (err error)\n//sys\tClockGettime(clockid int32, time *Timespec) (err error)\n//sys\tClose(fd int) (err error)\n//sys\tDup(fd int) (nfd int, err error)\n//sys\tDup2(from int, to int) (err error)\n//sys\tDup3(from int, to int, flags int) (err error)\n//sys\tExit(code int)\n//sys\tFaccessat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchdir(fd int) (err error)\n//sys\tFchflags(fd int, flags int) (err error)\n//sys\tFchmod(fd int, mode uint32) (err error)\n//sys\tFchmodat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFchownat(dirfd int, path string, uid int, gid int, flags int) (err error)\n//sys\tFlock(fd int, how int) (err error)\n//sys\tFpathconf(fd int, name int) (val int, err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(fd int, path string, stat *Stat_t, flags int) (err error)\n//sys\tFstatfs(fd int, stat *Statfs_t) (err error)\n//sys\tFsync(fd int) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (uid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetpgid(pid int) (pgid int, err error)\n//sysnb\tGetpgrp() (pgrp int)\n//sysnb\tGetpid() (pid int)\n//sysnb\tGetppid() (ppid int)\n//sys\tGetpriority(which int, who int) (prio int, err error)\n//sysnb\tGetrlimit(which int, lim *Rlimit) (err error)\n//sysnb\tGetrtable() (rtable int, err error)\n//sysnb\tGetrusage(who int, rusage *Rusage) (err error)\n//sysnb\tGetsid(pid int) (sid int, err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tIssetugid() (tainted bool)\n//sys\tKill(pid int, signum syscall.Signal) (err error)\n//sys\tKqueue() (fd int, err error)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tLink(path string, link string) (err error)\n//sys\tLinkat(pathfd int, path string, linkfd int, link string, flags int) (err error)\n//sys\tListen(s int, backlog int) (err error)\n//sys\tLstat(path string, stat *Stat_t) (err error)\n//sys\tMkdir(path string, mode uint32) (err error)\n//sys\tMkdirat(dirfd int, path string, mode uint32) (err error)\n//sys\tMkfifo(path string, mode uint32) (err error)\n//sys\tMkfifoat(dirfd int, path string, mode uint32) (err error)\n//sys\tMknod(path string, mode uint32, dev int) (err error)\n//sys\tMknodat(dirfd int, path string, mode uint32, dev int) (err error)\n//sys\tMount(fsType string, dir string, flags int, data unsafe.Pointer) (err error)\n//sys\tNanosleep(time *Timespec, leftover *Timespec) (err error)\n//sys\tOpen(path string, mode int, perm uint32) (fd int, err error)\n//sys\tOpenat(dirfd int, path string, mode int, perm uint32) (fd int, err error)\n//sys\tPathconf(path string, name int) (val int, err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error)\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error)\n//sys\tread(fd int, p []byte) (n int, err error)\n//sys\tReadlink(path string, buf []byte) (n int, err error)\n//sys\tReadlinkat(dirfd int, path string, buf []byte) (n int, err error)\n//sys\tRename(from string, to string) (err error)\n//sys\tRenameat(fromfd int, from string, tofd int, to string) (err error)\n//sys\tRevoke(path string) (err error)\n//sys\tRmdir(path string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)\n//sysnb\tSetegid(egid int) (err error)\n//sysnb\tSeteuid(euid int) (err error)\n//sysnb\tSetgid(gid int) (err error)\n//sys\tSetlogin(name string) (err error)\n//sysnb\tSetpgid(pid int, pgid int) (err error)\n//sys\tSetpriority(which int, who int, prio int) (err error)\n//sysnb\tSetregid(rgid int, egid int) (err error)\n//sysnb\tSetreuid(ruid int, euid int) (err error)\n//sysnb\tSetresgid(rgid int, egid int, sgid int) (err error)\n//sysnb\tSetresuid(ruid int, euid int, suid int) (err error)\n//sysnb\tSetrtable(rtable int) (err error)\n//sysnb\tSetsid() (pid int, err error)\n//sysnb\tSettimeofday(tp *Timeval) (err error)\n//sysnb\tSetuid(uid int) (err error)\n//sys\tStat(path string, stat *Stat_t) (err error)\n//sys\tStatfs(path string, stat *Statfs_t) (err error)\n//sys\tSymlink(path string, link string) (err error)\n//sys\tSymlinkat(oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSync() (err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\tUmask(newmask int) (oldmask int)\n//sys\tUnlink(path string) (err error)\n//sys\tUnlinkat(dirfd int, path string, flags int) (err error)\n//sys\tUnmount(path string, flags int) (err error)\n//sys\twrite(fd int, p []byte) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)\n//sys\tmunmap(addr uintptr, length uintptr) (err error)\n//sys\tgetfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error)\n//sys\tutimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error)\n//sys\tpledge(promises *byte, execpromises *byte) (err error)\n//sys\tunveil(path *byte, flags *byte) (err error)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_openbsd_386.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build 386 && openbsd\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: int32(usec)}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint32(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\n// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions\n// of openbsd/386 the syscall is called sysctl instead of __sysctl.\nconst SYS___SYSCTL = SYS_SYSCTL\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build amd64 && openbsd\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\n// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions\n// of openbsd/amd64 the syscall is called sysctl instead of __sysctl.\nconst SYS___SYSCTL = SYS_SYSCTL\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build arm && openbsd\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: int32(usec)}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint32(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\n// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions\n// of openbsd/arm the syscall is called sysctl instead of __sysctl.\nconst SYS___SYSCTL = SYS_SYSCTL\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build arm64 && openbsd\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\n// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions\n// of openbsd/amd64 the syscall is called sysctl instead of __sysctl.\nconst SYS___SYSCTL = SYS_SYSCTL\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_openbsd_libc.go",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build openbsd\n\npackage unix\n\nimport _ \"unsafe\"\n\n// Implemented in the runtime package (runtime/sys_openbsd3.go)\nfunc syscall_syscall(fn, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno)\nfunc syscall_syscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)\nfunc syscall_syscall10(fn, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 uintptr) (r1, r2 uintptr, err Errno)\nfunc syscall_rawSyscall(fn, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno)\nfunc syscall_rawSyscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)\n\n//go:linkname syscall_syscall syscall.syscall\n//go:linkname syscall_syscall6 syscall.syscall6\n//go:linkname syscall_syscall10 syscall.syscall10\n//go:linkname syscall_rawSyscall syscall.rawSyscall\n//go:linkname syscall_rawSyscall6 syscall.rawSyscall6\n\nfunc syscall_syscall9(fn, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err Errno) {\n\treturn syscall_syscall10(fn, a1, a2, a3, a4, a5, a6, a7, a8, a9, 0)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_openbsd_mips64.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\n// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions\n// of OpenBSD the syscall is called sysctl instead of __sysctl.\nconst SYS___SYSCTL = SYS_SYSCTL\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_openbsd_ppc64.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build ppc64 && openbsd\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\n// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions\n// of openbsd/ppc64 the syscall is called sysctl instead of __sysctl.\nconst SYS___SYSCTL = SYS_SYSCTL\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_openbsd_riscv64.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build riscv64 && openbsd\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\n// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions\n// of openbsd/riscv64 the syscall is called sysctl instead of __sysctl.\nconst SYS___SYSCTL = SYS_SYSCTL\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_solaris.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Solaris system calls.\n// This file is compiled as ordinary Go code,\n// but it is also input to mksyscall,\n// which parses the //sys lines and generates system call stubs.\n// Note that sometimes we use a lowercase //sys name and wrap\n// it in our own nicer implementation, either here or in\n// syscall_solaris.go or syscall_unix.go.\n\npackage unix\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"runtime\"\n\t\"sync\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// Implemented in runtime/syscall_solaris.go.\ntype syscallFunc uintptr\n\nfunc rawSysvicall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno)\nfunc sysvicall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno)\n\n// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets.\ntype SockaddrDatalink struct {\n\tFamily uint16\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [244]int8\n\traw    RawSockaddrDatalink\n}\n\nfunc direntIno(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Ino), unsafe.Sizeof(Dirent{}.Ino))\n}\n\nfunc direntReclen(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen))\n}\n\nfunc direntNamlen(buf []byte) (uint64, bool) {\n\treclen, ok := direntReclen(buf)\n\tif !ok {\n\t\treturn 0, false\n\t}\n\treturn reclen - uint64(unsafe.Offsetof(Dirent{}.Name)), true\n}\n\n//sysnb\tpipe(p *[2]_C_int) (n int, err error)\n\nfunc Pipe(p []int) (err error) {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\tn, err := pipe(&pp)\n\tif n != 0 {\n\t\treturn err\n\t}\n\tif err == nil {\n\t\tp[0] = int(pp[0])\n\t\tp[1] = int(pp[1])\n\t}\n\treturn nil\n}\n\n//sysnb\tpipe2(p *[2]_C_int, flags int) (err error)\n\nfunc Pipe2(p []int, flags int) error {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\terr := pipe2(&pp, flags)\n\tif err == nil {\n\t\tp[0] = int(pp[0])\n\t\tp[1] = int(pp[1])\n\t}\n\treturn err\n}\n\nfunc (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Port < 0 || sa.Port > 0xFFFF {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_INET\n\tp := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))\n\tp[0] = byte(sa.Port >> 8)\n\tp[1] = byte(sa.Port)\n\tsa.raw.Addr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrInet4, nil\n}\n\nfunc (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Port < 0 || sa.Port > 0xFFFF {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_INET6\n\tp := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))\n\tp[0] = byte(sa.Port >> 8)\n\tp[1] = byte(sa.Port)\n\tsa.raw.Scope_id = sa.ZoneId\n\tsa.raw.Addr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrInet6, nil\n}\n\nfunc (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tname := sa.Name\n\tn := len(name)\n\tif n >= len(sa.raw.Path) {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_UNIX\n\tfor i := 0; i < n; i++ {\n\t\tsa.raw.Path[i] = int8(name[i])\n\t}\n\t// length is family (uint16), name, NUL.\n\tsl := _Socklen(2)\n\tif n > 0 {\n\t\tsl += _Socklen(n) + 1\n\t}\n\tif sa.raw.Path[0] == '@' || (sa.raw.Path[0] == 0 && sl > 3) {\n\t\t// Check sl > 3 so we don't change unnamed socket behavior.\n\t\tsa.raw.Path[0] = 0\n\t\t// Don't count trailing NUL for abstract address.\n\t\tsl--\n\t}\n\n\treturn unsafe.Pointer(&sa.raw), sl, nil\n}\n\n//sys\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) = libsocket.getsockname\n\nfunc Getsockname(fd int) (sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tif err = getsockname(fd, &rsa, &len); err != nil {\n\t\treturn\n\t}\n\treturn anyToSockaddr(fd, &rsa)\n}\n\n// GetsockoptString returns the string value of the socket option opt for the\n// socket associated with fd at the given socket level.\nfunc GetsockoptString(fd, level, opt int) (string, error) {\n\tbuf := make([]byte, 256)\n\tvallen := _Socklen(len(buf))\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\treturn ByteSliceToString(buf[:vallen]), nil\n}\n\nconst ImplementsGetwd = true\n\n//sys\tGetcwd(buf []byte) (n int, err error)\n\nfunc Getwd() (wd string, err error) {\n\tvar buf [PathMax]byte\n\t// Getcwd will return an error if it failed for any reason.\n\t_, err = Getcwd(buf[0:])\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tn := clen(buf[:])\n\tif n < 1 {\n\t\treturn \"\", EINVAL\n\t}\n\treturn string(buf[:n]), nil\n}\n\n/*\n * Wrapped\n */\n\n//sysnb\tgetgroups(ngid int, gid *_Gid_t) (n int, err error)\n//sysnb\tsetgroups(ngid int, gid *_Gid_t) (err error)\n\nfunc Getgroups() (gids []int, err error) {\n\tn, err := getgroups(0, nil)\n\t// Check for error and sanity check group count. Newer versions of\n\t// Solaris allow up to 1024 (NGROUPS_MAX).\n\tif n < 0 || n > 1024 {\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn nil, EINVAL\n\t} else if n == 0 {\n\t\treturn nil, nil\n\t}\n\n\ta := make([]_Gid_t, n)\n\tn, err = getgroups(n, &a[0])\n\tif n == -1 {\n\t\treturn nil, err\n\t}\n\tgids = make([]int, n)\n\tfor i, v := range a[0:n] {\n\t\tgids[i] = int(v)\n\t}\n\treturn\n}\n\nfunc Setgroups(gids []int) (err error) {\n\tif len(gids) == 0 {\n\t\treturn setgroups(0, nil)\n\t}\n\n\ta := make([]_Gid_t, len(gids))\n\tfor i, v := range gids {\n\t\ta[i] = _Gid_t(v)\n\t}\n\treturn setgroups(len(a), &a[0])\n}\n\n// ReadDirent reads directory entries from fd and writes them into buf.\nfunc ReadDirent(fd int, buf []byte) (n int, err error) {\n\t// Final argument is (basep *uintptr) and the syscall doesn't take nil.\n\t// TODO(rsc): Can we use a single global basep for all calls?\n\treturn Getdents(fd, buf, new(uintptr))\n}\n\n// Wait status is 7 bits at bottom, either 0 (exited),\n// 0x7F (stopped), or a signal number that caused an exit.\n// The 0x80 bit is whether there was a core dump.\n// An extra number (exit code, signal causing a stop)\n// is in the high bits.\n\ntype WaitStatus uint32\n\nconst (\n\tmask  = 0x7F\n\tcore  = 0x80\n\tshift = 8\n\n\texited  = 0\n\tstopped = 0x7F\n)\n\nfunc (w WaitStatus) Exited() bool { return w&mask == exited }\n\nfunc (w WaitStatus) ExitStatus() int {\n\tif w&mask != exited {\n\t\treturn -1\n\t}\n\treturn int(w >> shift)\n}\n\nfunc (w WaitStatus) Signaled() bool { return w&mask != stopped && w&mask != 0 }\n\nfunc (w WaitStatus) Signal() syscall.Signal {\n\tsig := syscall.Signal(w & mask)\n\tif sig == stopped || sig == 0 {\n\t\treturn -1\n\t}\n\treturn sig\n}\n\nfunc (w WaitStatus) CoreDump() bool { return w.Signaled() && w&core != 0 }\n\nfunc (w WaitStatus) Stopped() bool { return w&mask == stopped && syscall.Signal(w>>shift) != SIGSTOP }\n\nfunc (w WaitStatus) Continued() bool { return w&mask == stopped && syscall.Signal(w>>shift) == SIGSTOP }\n\nfunc (w WaitStatus) StopSignal() syscall.Signal {\n\tif !w.Stopped() {\n\t\treturn -1\n\t}\n\treturn syscall.Signal(w>>shift) & 0xFF\n}\n\nfunc (w WaitStatus) TrapCause() int { return -1 }\n\n//sys\twait4(pid int32, statusp *_C_int, options int, rusage *Rusage) (wpid int32, err error)\n\nfunc Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (int, error) {\n\tvar status _C_int\n\trpid, err := wait4(int32(pid), &status, options, rusage)\n\twpid := int(rpid)\n\tif wpid == -1 {\n\t\treturn wpid, err\n\t}\n\tif wstatus != nil {\n\t\t*wstatus = WaitStatus(status)\n\t}\n\treturn wpid, nil\n}\n\n//sys\tgethostname(buf []byte) (n int, err error)\n\nfunc Gethostname() (name string, err error) {\n\tvar buf [MaxHostNameLen]byte\n\tn, err := gethostname(buf[:])\n\tif n != 0 {\n\t\treturn \"\", err\n\t}\n\tn = clen(buf[:])\n\tif n < 1 {\n\t\treturn \"\", EFAULT\n\t}\n\treturn string(buf[:n]), nil\n}\n\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\nfunc Utimes(path string, tv []Timeval) (err error) {\n\tif tv == nil {\n\t\treturn utimes(path, nil)\n\t}\n\tif len(tv) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))\n}\n\n//sys\tutimensat(fd int, path string, times *[2]Timespec, flag int) (err error)\n\nfunc UtimesNano(path string, ts []Timespec) error {\n\tif ts == nil {\n\t\treturn utimensat(AT_FDCWD, path, nil, 0)\n\t}\n\tif len(ts) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)\n}\n\nfunc UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error {\n\tif ts == nil {\n\t\treturn utimensat(dirfd, path, nil, flags)\n\t}\n\tif len(ts) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags)\n}\n\n//sys\tfcntl(fd int, cmd int, arg int) (val int, err error)\n\n// FcntlInt performs a fcntl syscall on fd with the provided command and argument.\nfunc FcntlInt(fd uintptr, cmd, arg int) (int, error) {\n\tvalptr, _, errno := sysvicall6(uintptr(unsafe.Pointer(&procfcntl)), 3, uintptr(fd), uintptr(cmd), uintptr(arg), 0, 0, 0)\n\tvar err error\n\tif errno != 0 {\n\t\terr = errno\n\t}\n\treturn int(valptr), err\n}\n\n// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command.\nfunc FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procfcntl)), 3, uintptr(fd), uintptr(cmd), uintptr(unsafe.Pointer(lk)), 0, 0, 0)\n\tif e1 != 0 {\n\t\treturn e1\n\t}\n\treturn nil\n}\n\n//sys\tfutimesat(fildes int, path *byte, times *[2]Timeval) (err error)\n\nfunc Futimesat(dirfd int, path string, tv []Timeval) error {\n\tpathp, err := BytePtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif tv == nil {\n\t\treturn futimesat(dirfd, pathp, nil)\n\t}\n\tif len(tv) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn futimesat(dirfd, pathp, (*[2]Timeval)(unsafe.Pointer(&tv[0])))\n}\n\n// Solaris doesn't have an futimes function because it allows NULL to be\n// specified as the path for futimesat. However, Go doesn't like\n// NULL-style string interfaces, so this simple wrapper is provided.\nfunc Futimes(fd int, tv []Timeval) error {\n\tif tv == nil {\n\t\treturn futimesat(fd, nil, nil)\n\t}\n\tif len(tv) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn futimesat(fd, nil, (*[2]Timeval)(unsafe.Pointer(&tv[0])))\n}\n\nfunc anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {\n\tswitch rsa.Addr.Family {\n\tcase AF_UNIX:\n\t\tpp := (*RawSockaddrUnix)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrUnix)\n\t\t// Assume path ends at NUL.\n\t\t// This is not technically the Solaris semantics for\n\t\t// abstract Unix domain sockets -- they are supposed\n\t\t// to be uninterpreted fixed-size binary blobs -- but\n\t\t// everyone uses this convention.\n\t\tn := 0\n\t\tfor n < len(pp.Path) && pp.Path[n] != 0 {\n\t\t\tn++\n\t\t}\n\t\tsa.Name = string(unsafe.Slice((*byte)(unsafe.Pointer(&pp.Path[0])), n))\n\t\treturn sa, nil\n\n\tcase AF_INET:\n\t\tpp := (*RawSockaddrInet4)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrInet4)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tsa.Addr = pp.Addr\n\t\treturn sa, nil\n\n\tcase AF_INET6:\n\t\tpp := (*RawSockaddrInet6)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrInet6)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tsa.ZoneId = pp.Scope_id\n\t\tsa.Addr = pp.Addr\n\t\treturn sa, nil\n\t}\n\treturn nil, EAFNOSUPPORT\n}\n\n//sys\taccept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) = libsocket.accept\n\nfunc Accept(fd int) (nfd int, sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tnfd, err = accept(fd, &rsa, &len)\n\tif nfd == -1 {\n\t\treturn\n\t}\n\tsa, err = anyToSockaddr(fd, &rsa)\n\tif err != nil {\n\t\tClose(nfd)\n\t\tnfd = 0\n\t}\n\treturn\n}\n\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error) = libsocket.__xnet_recvmsg\n\nfunc recvmsgRaw(fd int, iov []Iovec, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn int, recvflags int, err error) {\n\tvar msg Msghdr\n\tmsg.Name = (*byte)(unsafe.Pointer(rsa))\n\tmsg.Namelen = uint32(SizeofSockaddrAny)\n\tvar dummy byte\n\tif len(oob) > 0 {\n\t\t// receive at least one normal byte\n\t\tif emptyIovecs(iov) {\n\t\t\tvar iova [1]Iovec\n\t\t\tiova[0].Base = &dummy\n\t\t\tiova[0].SetLen(1)\n\t\t\tiov = iova[:]\n\t\t}\n\t\tmsg.Accrightslen = int32(len(oob))\n\t}\n\tif len(iov) > 0 {\n\t\tmsg.Iov = &iov[0]\n\t\tmsg.SetIovlen(len(iov))\n\t}\n\tif n, err = recvmsg(fd, &msg, flags); n == -1 {\n\t\treturn\n\t}\n\toobn = int(msg.Accrightslen)\n\treturn\n}\n\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error) = libsocket.__xnet_sendmsg\n\nfunc sendmsgN(fd int, iov []Iovec, oob []byte, ptr unsafe.Pointer, salen _Socklen, flags int) (n int, err error) {\n\tvar msg Msghdr\n\tmsg.Name = (*byte)(unsafe.Pointer(ptr))\n\tmsg.Namelen = uint32(salen)\n\tvar dummy byte\n\tvar empty bool\n\tif len(oob) > 0 {\n\t\t// send at least one normal byte\n\t\tempty = emptyIovecs(iov)\n\t\tif empty {\n\t\t\tvar iova [1]Iovec\n\t\t\tiova[0].Base = &dummy\n\t\t\tiova[0].SetLen(1)\n\t\t\tiov = iova[:]\n\t\t}\n\t\tmsg.Accrightslen = int32(len(oob))\n\t}\n\tif len(iov) > 0 {\n\t\tmsg.Iov = &iov[0]\n\t\tmsg.SetIovlen(len(iov))\n\t}\n\tif n, err = sendmsg(fd, &msg, flags); err != nil {\n\t\treturn 0, err\n\t}\n\tif len(oob) > 0 && empty {\n\t\tn = 0\n\t}\n\treturn n, nil\n}\n\n//sys\tacct(path *byte) (err error)\n\nfunc Acct(path string) (err error) {\n\tif len(path) == 0 {\n\t\t// Assume caller wants to disable accounting.\n\t\treturn acct(nil)\n\t}\n\n\tpathp, err := BytePtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn acct(pathp)\n}\n\n//sys\t__makedev(version int, major uint, minor uint) (val uint64)\n\nfunc Mkdev(major, minor uint32) uint64 {\n\treturn __makedev(NEWDEV, uint(major), uint(minor))\n}\n\n//sys\t__major(version int, dev uint64) (val uint)\n\nfunc Major(dev uint64) uint32 {\n\treturn uint32(__major(NEWDEV, dev))\n}\n\n//sys\t__minor(version int, dev uint64) (val uint)\n\nfunc Minor(dev uint64) uint32 {\n\treturn uint32(__minor(NEWDEV, dev))\n}\n\n/*\n * Expose the ioctl function\n */\n\n//sys\tioctlRet(fd int, req int, arg uintptr) (ret int, err error) = libc.ioctl\n//sys\tioctlPtrRet(fd int, req int, arg unsafe.Pointer) (ret int, err error) = libc.ioctl\n\nfunc ioctl(fd int, req int, arg uintptr) (err error) {\n\t_, err = ioctlRet(fd, req, arg)\n\treturn err\n}\n\nfunc ioctlPtr(fd int, req int, arg unsafe.Pointer) (err error) {\n\t_, err = ioctlPtrRet(fd, req, arg)\n\treturn err\n}\n\nfunc IoctlSetTermio(fd int, req int, value *Termio) error {\n\treturn ioctlPtr(fd, req, unsafe.Pointer(value))\n}\n\nfunc IoctlGetTermio(fd int, req int) (*Termio, error) {\n\tvar value Termio\n\terr := ioctlPtr(fd, req, unsafe.Pointer(&value))\n\treturn &value, err\n}\n\n//sys\tpoll(fds *PollFd, nfds int, timeout int) (n int, err error)\n\nfunc Poll(fds []PollFd, timeout int) (n int, err error) {\n\tif len(fds) == 0 {\n\t\treturn poll(nil, 0, timeout)\n\t}\n\treturn poll(&fds[0], len(fds), timeout)\n}\n\nfunc Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\treturn sendfile(outfd, infd, offset, count)\n}\n\n/*\n * Exposed directly\n */\n//sys\tAccess(path string, mode uint32) (err error)\n//sys\tAdjtime(delta *Timeval, olddelta *Timeval) (err error)\n//sys\tChdir(path string) (err error)\n//sys\tChmod(path string, mode uint32) (err error)\n//sys\tChown(path string, uid int, gid int) (err error)\n//sys\tChroot(path string) (err error)\n//sys\tClockGettime(clockid int32, time *Timespec) (err error)\n//sys\tClose(fd int) (err error)\n//sys\tCreat(path string, mode uint32) (fd int, err error)\n//sys\tDup(fd int) (nfd int, err error)\n//sys\tDup2(oldfd int, newfd int) (err error)\n//sys\tExit(code int)\n//sys\tFaccessat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchdir(fd int) (err error)\n//sys\tFchmod(fd int, mode uint32) (err error)\n//sys\tFchmodat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFchownat(dirfd int, path string, uid int, gid int, flags int) (err error)\n//sys\tFdatasync(fd int) (err error)\n//sys\tFlock(fd int, how int) (err error)\n//sys\tFpathconf(fd int, name int) (val int, err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(fd int, path string, stat *Stat_t, flags int) (err error)\n//sys\tFstatvfs(fd int, vfsstat *Statvfs_t) (err error)\n//sys\tGetdents(fd int, buf []byte, basep *uintptr) (n int, err error)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetpid() (pid int)\n//sysnb\tGetpgid(pid int) (pgid int, err error)\n//sysnb\tGetpgrp() (pgid int, err error)\n//sys\tGeteuid() (euid int)\n//sys\tGetegid() (egid int)\n//sys\tGetppid() (ppid int)\n//sys\tGetpriority(which int, who int) (n int, err error)\n//sysnb\tGetrlimit(which int, lim *Rlimit) (err error)\n//sysnb\tGetrusage(who int, rusage *Rusage) (err error)\n//sysnb\tGetsid(pid int) (sid int, err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tKill(pid int, signum syscall.Signal) (err error)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tLink(path string, link string) (err error)\n//sys\tListen(s int, backlog int) (err error) = libsocket.__xnet_listen\n//sys\tLstat(path string, stat *Stat_t) (err error)\n//sys\tMadvise(b []byte, advice int) (err error)\n//sys\tMkdir(path string, mode uint32) (err error)\n//sys\tMkdirat(dirfd int, path string, mode uint32) (err error)\n//sys\tMkfifo(path string, mode uint32) (err error)\n//sys\tMkfifoat(dirfd int, path string, mode uint32) (err error)\n//sys\tMknod(path string, mode uint32, dev int) (err error)\n//sys\tMknodat(dirfd int, path string, mode uint32, dev int) (err error)\n//sys\tMlock(b []byte) (err error)\n//sys\tMlockall(flags int) (err error)\n//sys\tMprotect(b []byte, prot int) (err error)\n//sys\tMsync(b []byte, flags int) (err error)\n//sys\tMunlock(b []byte) (err error)\n//sys\tMunlockall() (err error)\n//sys\tNanosleep(time *Timespec, leftover *Timespec) (err error)\n//sys\tOpen(path string, mode int, perm uint32) (fd int, err error)\n//sys\tOpenat(dirfd int, path string, flags int, mode uint32) (fd int, err error)\n//sys\tPathconf(path string, name int) (val int, err error)\n//sys\tPause() (err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error)\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error)\n//sys\tread(fd int, p []byte) (n int, err error)\n//sys\tReadlink(path string, buf []byte) (n int, err error)\n//sys\tRename(from string, to string) (err error)\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\n//sys\tRmdir(path string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (newoffset int64, err error) = lseek\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)\n//sysnb\tSetegid(egid int) (err error)\n//sysnb\tSeteuid(euid int) (err error)\n//sysnb\tSetgid(gid int) (err error)\n//sys\tSethostname(p []byte) (err error)\n//sysnb\tSetpgid(pid int, pgid int) (err error)\n//sys\tSetpriority(which int, who int, prio int) (err error)\n//sysnb\tSetregid(rgid int, egid int) (err error)\n//sysnb\tSetreuid(ruid int, euid int) (err error)\n//sysnb\tSetsid() (pid int, err error)\n//sysnb\tSetuid(uid int) (err error)\n//sys\tShutdown(s int, how int) (err error) = libsocket.shutdown\n//sys\tStat(path string, stat *Stat_t) (err error)\n//sys\tStatvfs(path string, vfsstat *Statvfs_t) (err error)\n//sys\tSymlink(path string, link string) (err error)\n//sys\tSync() (err error)\n//sys\tSysconf(which int) (n int64, err error)\n//sysnb\tTimes(tms *Tms) (ticks uintptr, err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\tFsync(fd int) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sys\tUmask(mask int) (oldmask int)\n//sysnb\tUname(buf *Utsname) (err error)\n//sys\tUnmount(target string, flags int) (err error) = libc.umount\n//sys\tUnlink(path string) (err error)\n//sys\tUnlinkat(dirfd int, path string, flags int) (err error)\n//sys\tUstat(dev int, ubuf *Ustat_t) (err error)\n//sys\tUtime(path string, buf *Utimbuf) (err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) = libsocket.__xnet_bind\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) = libsocket.__xnet_connect\n//sys\tmmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)\n//sys\tmunmap(addr uintptr, length uintptr) (err error)\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = libsendfile.sendfile\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) = libsocket.__xnet_sendto\n//sys\tsocket(domain int, typ int, proto int) (fd int, err error) = libsocket.__xnet_socket\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error) = libsocket.__xnet_socketpair\n//sys\twrite(fd int, p []byte) (n int, err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) = libsocket.__xnet_getsockopt\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) = libsocket.getpeername\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) = libsocket.setsockopt\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) = libsocket.recvfrom\n\n// Event Ports\n\ntype fileObjCookie struct {\n\tfobj   *fileObj\n\tcookie interface{}\n}\n\n// EventPort provides a safe abstraction on top of Solaris/illumos Event Ports.\ntype EventPort struct {\n\tport  int\n\tmu    sync.Mutex\n\tfds   map[uintptr]*fileObjCookie\n\tpaths map[string]*fileObjCookie\n\t// The user cookie presents an interesting challenge from a memory management perspective.\n\t// There are two paths by which we can discover that it is no longer in use:\n\t// 1. The user calls port_dissociate before any events fire\n\t// 2. An event fires and we return it to the user\n\t// The tricky situation is if the event has fired in the kernel but\n\t// the user hasn't requested/received it yet.\n\t// If the user wants to port_dissociate before the event has been processed,\n\t// we should handle things gracefully. To do so, we need to keep an extra\n\t// reference to the cookie around until the event is processed\n\t// thus the otherwise seemingly extraneous \"cookies\" map\n\t// The key of this map is a pointer to the corresponding fCookie\n\tcookies map[*fileObjCookie]struct{}\n}\n\n// PortEvent is an abstraction of the port_event C struct.\n// Compare Source against PORT_SOURCE_FILE or PORT_SOURCE_FD\n// to see if Path or Fd was the event source. The other will be\n// uninitialized.\ntype PortEvent struct {\n\tCookie interface{}\n\tEvents int32\n\tFd     uintptr\n\tPath   string\n\tSource uint16\n\tfobj   *fileObj\n}\n\n// NewEventPort creates a new EventPort including the\n// underlying call to port_create(3c).\nfunc NewEventPort() (*EventPort, error) {\n\tport, err := port_create()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\te := &EventPort{\n\t\tport:    port,\n\t\tfds:     make(map[uintptr]*fileObjCookie),\n\t\tpaths:   make(map[string]*fileObjCookie),\n\t\tcookies: make(map[*fileObjCookie]struct{}),\n\t}\n\treturn e, nil\n}\n\n//sys\tport_create() (n int, err error)\n//sys\tport_associate(port int, source int, object uintptr, events int, user *byte) (n int, err error)\n//sys\tport_dissociate(port int, source int, object uintptr) (n int, err error)\n//sys\tport_get(port int, pe *portEvent, timeout *Timespec) (n int, err error)\n//sys\tport_getn(port int, pe *portEvent, max uint32, nget *uint32, timeout *Timespec) (n int, err error)\n\n// Close closes the event port.\nfunc (e *EventPort) Close() error {\n\te.mu.Lock()\n\tdefer e.mu.Unlock()\n\terr := Close(e.port)\n\tif err != nil {\n\t\treturn err\n\t}\n\te.fds = nil\n\te.paths = nil\n\te.cookies = nil\n\treturn nil\n}\n\n// PathIsWatched checks to see if path is associated with this EventPort.\nfunc (e *EventPort) PathIsWatched(path string) bool {\n\te.mu.Lock()\n\tdefer e.mu.Unlock()\n\t_, found := e.paths[path]\n\treturn found\n}\n\n// FdIsWatched checks to see if fd is associated with this EventPort.\nfunc (e *EventPort) FdIsWatched(fd uintptr) bool {\n\te.mu.Lock()\n\tdefer e.mu.Unlock()\n\t_, found := e.fds[fd]\n\treturn found\n}\n\n// AssociatePath wraps port_associate(3c) for a filesystem path including\n// creating the necessary file_obj from the provided stat information.\nfunc (e *EventPort) AssociatePath(path string, stat os.FileInfo, events int, cookie interface{}) error {\n\te.mu.Lock()\n\tdefer e.mu.Unlock()\n\tif _, found := e.paths[path]; found {\n\t\treturn fmt.Errorf(\"%v is already associated with this Event Port\", path)\n\t}\n\tfCookie, err := createFileObjCookie(path, stat, cookie)\n\tif err != nil {\n\t\treturn err\n\t}\n\t_, err = port_associate(e.port, PORT_SOURCE_FILE, uintptr(unsafe.Pointer(fCookie.fobj)), events, (*byte)(unsafe.Pointer(fCookie)))\n\tif err != nil {\n\t\treturn err\n\t}\n\te.paths[path] = fCookie\n\te.cookies[fCookie] = struct{}{}\n\treturn nil\n}\n\n// DissociatePath wraps port_dissociate(3c) for a filesystem path.\nfunc (e *EventPort) DissociatePath(path string) error {\n\te.mu.Lock()\n\tdefer e.mu.Unlock()\n\tf, ok := e.paths[path]\n\tif !ok {\n\t\treturn fmt.Errorf(\"%v is not associated with this Event Port\", path)\n\t}\n\t_, err := port_dissociate(e.port, PORT_SOURCE_FILE, uintptr(unsafe.Pointer(f.fobj)))\n\t// If the path is no longer associated with this event port (ENOENT)\n\t// we should delete it from our map. We can still return ENOENT to the caller.\n\t// But we need to save the cookie\n\tif err != nil && err != ENOENT {\n\t\treturn err\n\t}\n\tif err == nil {\n\t\t// dissociate was successful, safe to delete the cookie\n\t\tfCookie := e.paths[path]\n\t\tdelete(e.cookies, fCookie)\n\t}\n\tdelete(e.paths, path)\n\treturn err\n}\n\n// AssociateFd wraps calls to port_associate(3c) on file descriptors.\nfunc (e *EventPort) AssociateFd(fd uintptr, events int, cookie interface{}) error {\n\te.mu.Lock()\n\tdefer e.mu.Unlock()\n\tif _, found := e.fds[fd]; found {\n\t\treturn fmt.Errorf(\"%v is already associated with this Event Port\", fd)\n\t}\n\tfCookie, err := createFileObjCookie(\"\", nil, cookie)\n\tif err != nil {\n\t\treturn err\n\t}\n\t_, err = port_associate(e.port, PORT_SOURCE_FD, fd, events, (*byte)(unsafe.Pointer(fCookie)))\n\tif err != nil {\n\t\treturn err\n\t}\n\te.fds[fd] = fCookie\n\te.cookies[fCookie] = struct{}{}\n\treturn nil\n}\n\n// DissociateFd wraps calls to port_dissociate(3c) on file descriptors.\nfunc (e *EventPort) DissociateFd(fd uintptr) error {\n\te.mu.Lock()\n\tdefer e.mu.Unlock()\n\t_, ok := e.fds[fd]\n\tif !ok {\n\t\treturn fmt.Errorf(\"%v is not associated with this Event Port\", fd)\n\t}\n\t_, err := port_dissociate(e.port, PORT_SOURCE_FD, fd)\n\tif err != nil && err != ENOENT {\n\t\treturn err\n\t}\n\tif err == nil {\n\t\t// dissociate was successful, safe to delete the cookie\n\t\tfCookie := e.fds[fd]\n\t\tdelete(e.cookies, fCookie)\n\t}\n\tdelete(e.fds, fd)\n\treturn err\n}\n\nfunc createFileObjCookie(name string, stat os.FileInfo, cookie interface{}) (*fileObjCookie, error) {\n\tfCookie := new(fileObjCookie)\n\tfCookie.cookie = cookie\n\tif name != \"\" && stat != nil {\n\t\tfCookie.fobj = new(fileObj)\n\t\tbs, err := ByteSliceFromString(name)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tfCookie.fobj.Name = (*int8)(unsafe.Pointer(&bs[0]))\n\t\ts := stat.Sys().(*syscall.Stat_t)\n\t\tfCookie.fobj.Atim.Sec = s.Atim.Sec\n\t\tfCookie.fobj.Atim.Nsec = s.Atim.Nsec\n\t\tfCookie.fobj.Mtim.Sec = s.Mtim.Sec\n\t\tfCookie.fobj.Mtim.Nsec = s.Mtim.Nsec\n\t\tfCookie.fobj.Ctim.Sec = s.Ctim.Sec\n\t\tfCookie.fobj.Ctim.Nsec = s.Ctim.Nsec\n\t}\n\treturn fCookie, nil\n}\n\n// GetOne wraps port_get(3c) and returns a single PortEvent.\nfunc (e *EventPort) GetOne(t *Timespec) (*PortEvent, error) {\n\tpe := new(portEvent)\n\t_, err := port_get(e.port, pe, t)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tp := new(PortEvent)\n\te.mu.Lock()\n\tdefer e.mu.Unlock()\n\terr = e.peIntToExt(pe, p)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn p, nil\n}\n\n// peIntToExt converts a cgo portEvent struct into the friendlier PortEvent\n// NOTE: Always call this function while holding the e.mu mutex\nfunc (e *EventPort) peIntToExt(peInt *portEvent, peExt *PortEvent) error {\n\tif e.cookies == nil {\n\t\treturn fmt.Errorf(\"this EventPort is already closed\")\n\t}\n\tpeExt.Events = peInt.Events\n\tpeExt.Source = peInt.Source\n\tfCookie := (*fileObjCookie)(unsafe.Pointer(peInt.User))\n\t_, found := e.cookies[fCookie]\n\n\tif !found {\n\t\tpanic(\"unexpected event port address; may be due to kernel bug; see https://go.dev/issue/54254\")\n\t}\n\tpeExt.Cookie = fCookie.cookie\n\tdelete(e.cookies, fCookie)\n\n\tswitch peInt.Source {\n\tcase PORT_SOURCE_FD:\n\t\tpeExt.Fd = uintptr(peInt.Object)\n\t\t// Only remove the fds entry if it exists and this cookie matches\n\t\tif fobj, ok := e.fds[peExt.Fd]; ok {\n\t\t\tif fobj == fCookie {\n\t\t\t\tdelete(e.fds, peExt.Fd)\n\t\t\t}\n\t\t}\n\tcase PORT_SOURCE_FILE:\n\t\tpeExt.fobj = fCookie.fobj\n\t\tpeExt.Path = BytePtrToString((*byte)(unsafe.Pointer(peExt.fobj.Name)))\n\t\t// Only remove the paths entry if it exists and this cookie matches\n\t\tif fobj, ok := e.paths[peExt.Path]; ok {\n\t\t\tif fobj == fCookie {\n\t\t\t\tdelete(e.paths, peExt.Path)\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\n// Pending wraps port_getn(3c) and returns how many events are pending.\nfunc (e *EventPort) Pending() (int, error) {\n\tvar n uint32 = 0\n\t_, err := port_getn(e.port, nil, 0, &n, nil)\n\treturn int(n), err\n}\n\n// Get wraps port_getn(3c) and fills a slice of PortEvent.\n// It will block until either min events have been received\n// or the timeout has been exceeded. It will return how many\n// events were actually received along with any error information.\nfunc (e *EventPort) Get(s []PortEvent, min int, timeout *Timespec) (int, error) {\n\tif min == 0 {\n\t\treturn 0, fmt.Errorf(\"need to request at least one event or use Pending() instead\")\n\t}\n\tif len(s) < min {\n\t\treturn 0, fmt.Errorf(\"len(s) (%d) is less than min events requested (%d)\", len(s), min)\n\t}\n\tgot := uint32(min)\n\tmax := uint32(len(s))\n\tvar err error\n\tps := make([]portEvent, max)\n\t_, err = port_getn(e.port, &ps[0], max, &got, timeout)\n\t// got will be trustworthy with ETIME, but not any other error.\n\tif err != nil && err != ETIME {\n\t\treturn 0, err\n\t}\n\te.mu.Lock()\n\tdefer e.mu.Unlock()\n\tvalid := 0\n\tfor i := 0; i < int(got); i++ {\n\t\terr2 := e.peIntToExt(&ps[i], &s[i])\n\t\tif err2 != nil {\n\t\t\tif valid == 0 && err == nil {\n\t\t\t\t// If err2 is the only error and there are no valid events\n\t\t\t\t// to return, return it to the caller.\n\t\t\t\terr = err2\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t\tvalid = i + 1\n\t}\n\treturn valid, err\n}\n\n//sys\tputmsg(fd int, clptr *strbuf, dataptr *strbuf, flags int) (err error)\n\nfunc Putmsg(fd int, cl []byte, data []byte, flags int) (err error) {\n\tvar clp, datap *strbuf\n\tif len(cl) > 0 {\n\t\tclp = &strbuf{\n\t\t\tLen: int32(len(cl)),\n\t\t\tBuf: (*int8)(unsafe.Pointer(&cl[0])),\n\t\t}\n\t}\n\tif len(data) > 0 {\n\t\tdatap = &strbuf{\n\t\t\tLen: int32(len(data)),\n\t\t\tBuf: (*int8)(unsafe.Pointer(&data[0])),\n\t\t}\n\t}\n\treturn putmsg(fd, clp, datap, flags)\n}\n\n//sys\tgetmsg(fd int, clptr *strbuf, dataptr *strbuf, flags *int) (err error)\n\nfunc Getmsg(fd int, cl []byte, data []byte) (retCl []byte, retData []byte, flags int, err error) {\n\tvar clp, datap *strbuf\n\tif len(cl) > 0 {\n\t\tclp = &strbuf{\n\t\t\tMaxlen: int32(len(cl)),\n\t\t\tBuf:    (*int8)(unsafe.Pointer(&cl[0])),\n\t\t}\n\t}\n\tif len(data) > 0 {\n\t\tdatap = &strbuf{\n\t\t\tMaxlen: int32(len(data)),\n\t\t\tBuf:    (*int8)(unsafe.Pointer(&data[0])),\n\t\t}\n\t}\n\n\tif err = getmsg(fd, clp, datap, &flags); err != nil {\n\t\treturn nil, nil, 0, err\n\t}\n\n\tif len(cl) > 0 {\n\t\tretCl = cl[:clp.Len]\n\t}\n\tif len(data) > 0 {\n\t\tretData = data[:datap.Len]\n\t}\n\treturn retCl, retData, flags, nil\n}\n\nfunc IoctlSetIntRetInt(fd int, req int, arg int) (int, error) {\n\treturn ioctlRet(fd, req, uintptr(arg))\n}\n\n// Lifreq Helpers\n\nfunc (l *Lifreq) SetName(name string) error {\n\tif len(name) >= len(l.Name) {\n\t\treturn fmt.Errorf(\"name cannot be more than %d characters\", len(l.Name)-1)\n\t}\n\tfor i := range name {\n\t\tl.Name[i] = int8(name[i])\n\t}\n\treturn nil\n}\n\nfunc (l *Lifreq) SetLifruInt(d int) {\n\t*(*int)(unsafe.Pointer(&l.Lifru[0])) = d\n}\n\nfunc (l *Lifreq) GetLifruInt() int {\n\treturn *(*int)(unsafe.Pointer(&l.Lifru[0]))\n}\n\nfunc (l *Lifreq) SetLifruUint(d uint) {\n\t*(*uint)(unsafe.Pointer(&l.Lifru[0])) = d\n}\n\nfunc (l *Lifreq) GetLifruUint() uint {\n\treturn *(*uint)(unsafe.Pointer(&l.Lifru[0]))\n}\n\nfunc IoctlLifreq(fd int, req int, l *Lifreq) error {\n\treturn ioctlPtr(fd, req, unsafe.Pointer(l))\n}\n\n// Strioctl Helpers\n\nfunc (s *Strioctl) SetInt(i int) {\n\ts.Len = int32(unsafe.Sizeof(i))\n\ts.Dp = (*int8)(unsafe.Pointer(&i))\n}\n\nfunc IoctlSetStrioctlRetInt(fd int, req int, s *Strioctl) (int, error) {\n\treturn ioctlPtrRet(fd, req, unsafe.Pointer(s))\n}\n\n// Ucred Helpers\n// See ucred(3c) and getpeerucred(3c)\n\n//sys\tgetpeerucred(fd uintptr, ucred *uintptr) (err error)\n//sys\tucredFree(ucred uintptr) = ucred_free\n//sys\tucredGet(pid int) (ucred uintptr, err error) = ucred_get\n//sys\tucredGeteuid(ucred uintptr) (uid int) = ucred_geteuid\n//sys\tucredGetegid(ucred uintptr) (gid int) = ucred_getegid\n//sys\tucredGetruid(ucred uintptr) (uid int) = ucred_getruid\n//sys\tucredGetrgid(ucred uintptr) (gid int) = ucred_getrgid\n//sys\tucredGetsuid(ucred uintptr) (uid int) = ucred_getsuid\n//sys\tucredGetsgid(ucred uintptr) (gid int) = ucred_getsgid\n//sys\tucredGetpid(ucred uintptr) (pid int) = ucred_getpid\n\n// Ucred is an opaque struct that holds user credentials.\ntype Ucred struct {\n\tucred uintptr\n}\n\n// We need to ensure that ucredFree is called on the underlying ucred\n// when the Ucred is garbage collected.\nfunc ucredFinalizer(u *Ucred) {\n\tucredFree(u.ucred)\n}\n\nfunc GetPeerUcred(fd uintptr) (*Ucred, error) {\n\tvar ucred uintptr\n\terr := getpeerucred(fd, &ucred)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tresult := &Ucred{\n\t\tucred: ucred,\n\t}\n\t// set the finalizer on the result so that the ucred will be freed\n\truntime.SetFinalizer(result, ucredFinalizer)\n\treturn result, nil\n}\n\nfunc UcredGet(pid int) (*Ucred, error) {\n\tucred, err := ucredGet(pid)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tresult := &Ucred{\n\t\tucred: ucred,\n\t}\n\t// set the finalizer on the result so that the ucred will be freed\n\truntime.SetFinalizer(result, ucredFinalizer)\n\treturn result, nil\n}\n\nfunc (u *Ucred) Geteuid() int {\n\tdefer runtime.KeepAlive(u)\n\treturn ucredGeteuid(u.ucred)\n}\n\nfunc (u *Ucred) Getruid() int {\n\tdefer runtime.KeepAlive(u)\n\treturn ucredGetruid(u.ucred)\n}\n\nfunc (u *Ucred) Getsuid() int {\n\tdefer runtime.KeepAlive(u)\n\treturn ucredGetsuid(u.ucred)\n}\n\nfunc (u *Ucred) Getegid() int {\n\tdefer runtime.KeepAlive(u)\n\treturn ucredGetegid(u.ucred)\n}\n\nfunc (u *Ucred) Getrgid() int {\n\tdefer runtime.KeepAlive(u)\n\treturn ucredGetrgid(u.ucred)\n}\n\nfunc (u *Ucred) Getsgid() int {\n\tdefer runtime.KeepAlive(u)\n\treturn ucredGetsgid(u.ucred)\n}\n\nfunc (u *Ucred) Getpid() int {\n\tdefer runtime.KeepAlive(u)\n\treturn ucredGetpid(u.ucred)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build amd64 && solaris\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_unix.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris\n\npackage unix\n\nimport (\n\t\"bytes\"\n\t\"sort\"\n\t\"sync\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar (\n\tStdin  = 0\n\tStdout = 1\n\tStderr = 2\n)\n\n// Do the interface allocations only once for common\n// Errno values.\nvar (\n\terrEAGAIN error = syscall.EAGAIN\n\terrEINVAL error = syscall.EINVAL\n\terrENOENT error = syscall.ENOENT\n)\n\nvar (\n\tsignalNameMapOnce sync.Once\n\tsignalNameMap     map[string]syscall.Signal\n)\n\n// errnoErr returns common boxed Errno values, to prevent\n// allocations at runtime.\nfunc errnoErr(e syscall.Errno) error {\n\tswitch e {\n\tcase 0:\n\t\treturn nil\n\tcase EAGAIN:\n\t\treturn errEAGAIN\n\tcase EINVAL:\n\t\treturn errEINVAL\n\tcase ENOENT:\n\t\treturn errENOENT\n\t}\n\treturn e\n}\n\n// ErrnoName returns the error name for error number e.\nfunc ErrnoName(e syscall.Errno) string {\n\ti := sort.Search(len(errorList), func(i int) bool {\n\t\treturn errorList[i].num >= e\n\t})\n\tif i < len(errorList) && errorList[i].num == e {\n\t\treturn errorList[i].name\n\t}\n\treturn \"\"\n}\n\n// SignalName returns the signal name for signal number s.\nfunc SignalName(s syscall.Signal) string {\n\ti := sort.Search(len(signalList), func(i int) bool {\n\t\treturn signalList[i].num >= s\n\t})\n\tif i < len(signalList) && signalList[i].num == s {\n\t\treturn signalList[i].name\n\t}\n\treturn \"\"\n}\n\n// SignalNum returns the syscall.Signal for signal named s,\n// or 0 if a signal with such name is not found.\n// The signal name should start with \"SIG\".\nfunc SignalNum(s string) syscall.Signal {\n\tsignalNameMapOnce.Do(func() {\n\t\tsignalNameMap = make(map[string]syscall.Signal, len(signalList))\n\t\tfor _, signal := range signalList {\n\t\t\tsignalNameMap[signal.name] = signal.num\n\t\t}\n\t})\n\treturn signalNameMap[s]\n}\n\n// clen returns the index of the first NULL byte in n or len(n) if n contains no NULL byte.\nfunc clen(n []byte) int {\n\ti := bytes.IndexByte(n, 0)\n\tif i == -1 {\n\t\ti = len(n)\n\t}\n\treturn i\n}\n\n// Mmap manager, for use by operating system-specific implementations.\n\ntype mmapper struct {\n\tsync.Mutex\n\tactive map[*byte][]byte // active mappings; key is last byte in mapping\n\tmmap   func(addr, length uintptr, prot, flags, fd int, offset int64) (uintptr, error)\n\tmunmap func(addr uintptr, length uintptr) error\n}\n\nfunc (m *mmapper) Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) {\n\tif length <= 0 {\n\t\treturn nil, EINVAL\n\t}\n\n\t// Map the requested memory.\n\taddr, errno := m.mmap(0, uintptr(length), prot, flags, fd, offset)\n\tif errno != nil {\n\t\treturn nil, errno\n\t}\n\n\t// Use unsafe to convert addr into a []byte.\n\tb := unsafe.Slice((*byte)(unsafe.Pointer(addr)), length)\n\n\t// Register mapping in m and return it.\n\tp := &b[cap(b)-1]\n\tm.Lock()\n\tdefer m.Unlock()\n\tm.active[p] = b\n\treturn b, nil\n}\n\nfunc (m *mmapper) Munmap(data []byte) (err error) {\n\tif len(data) == 0 || len(data) != cap(data) {\n\t\treturn EINVAL\n\t}\n\n\t// Find the base of the mapping.\n\tp := &data[cap(data)-1]\n\tm.Lock()\n\tdefer m.Unlock()\n\tb := m.active[p]\n\tif b == nil || &b[0] != &data[0] {\n\t\treturn EINVAL\n\t}\n\n\t// Unmap the memory and update m.\n\tif errno := m.munmap(uintptr(unsafe.Pointer(&b[0])), uintptr(len(b))); errno != nil {\n\t\treturn errno\n\t}\n\tdelete(m.active, p)\n\treturn nil\n}\n\nfunc Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) {\n\treturn mapper.Mmap(fd, offset, length, prot, flags)\n}\n\nfunc Munmap(b []byte) (err error) {\n\treturn mapper.Munmap(b)\n}\n\nfunc MmapPtr(fd int, offset int64, addr unsafe.Pointer, length uintptr, prot int, flags int) (ret unsafe.Pointer, err error) {\n\txaddr, err := mapper.mmap(uintptr(addr), length, prot, flags, fd, offset)\n\treturn unsafe.Pointer(xaddr), err\n}\n\nfunc MunmapPtr(addr unsafe.Pointer, length uintptr) (err error) {\n\treturn mapper.munmap(uintptr(addr), length)\n}\n\nfunc Read(fd int, p []byte) (n int, err error) {\n\tn, err = read(fd, p)\n\tif raceenabled {\n\t\tif n > 0 {\n\t\t\traceWriteRange(unsafe.Pointer(&p[0]), n)\n\t\t}\n\t\tif err == nil {\n\t\t\traceAcquire(unsafe.Pointer(&ioSync))\n\t\t}\n\t}\n\treturn\n}\n\nfunc Write(fd int, p []byte) (n int, err error) {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\tn, err = write(fd, p)\n\tif raceenabled && n > 0 {\n\t\traceReadRange(unsafe.Pointer(&p[0]), n)\n\t}\n\treturn\n}\n\nfunc Pread(fd int, p []byte, offset int64) (n int, err error) {\n\tn, err = pread(fd, p, offset)\n\tif raceenabled {\n\t\tif n > 0 {\n\t\t\traceWriteRange(unsafe.Pointer(&p[0]), n)\n\t\t}\n\t\tif err == nil {\n\t\t\traceAcquire(unsafe.Pointer(&ioSync))\n\t\t}\n\t}\n\treturn\n}\n\nfunc Pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\tn, err = pwrite(fd, p, offset)\n\tif raceenabled && n > 0 {\n\t\traceReadRange(unsafe.Pointer(&p[0]), n)\n\t}\n\treturn\n}\n\n// For testing: clients can set this flag to force\n// creation of IPv6 sockets to return EAFNOSUPPORT.\nvar SocketDisableIPv6 bool\n\n// Sockaddr represents a socket address.\ntype Sockaddr interface {\n\tsockaddr() (ptr unsafe.Pointer, len _Socklen, err error) // lowercase; only we can define Sockaddrs\n}\n\n// SockaddrInet4 implements the Sockaddr interface for AF_INET type sockets.\ntype SockaddrInet4 struct {\n\tPort int\n\tAddr [4]byte\n\traw  RawSockaddrInet4\n}\n\n// SockaddrInet6 implements the Sockaddr interface for AF_INET6 type sockets.\ntype SockaddrInet6 struct {\n\tPort   int\n\tZoneId uint32\n\tAddr   [16]byte\n\traw    RawSockaddrInet6\n}\n\n// SockaddrUnix implements the Sockaddr interface for AF_UNIX type sockets.\ntype SockaddrUnix struct {\n\tName string\n\traw  RawSockaddrUnix\n}\n\nfunc Bind(fd int, sa Sockaddr) (err error) {\n\tptr, n, err := sa.sockaddr()\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn bind(fd, ptr, n)\n}\n\nfunc Connect(fd int, sa Sockaddr) (err error) {\n\tptr, n, err := sa.sockaddr()\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn connect(fd, ptr, n)\n}\n\nfunc Getpeername(fd int) (sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tif err = getpeername(fd, &rsa, &len); err != nil {\n\t\treturn\n\t}\n\treturn anyToSockaddr(fd, &rsa)\n}\n\nfunc GetsockoptByte(fd, level, opt int) (value byte, err error) {\n\tvar n byte\n\tvallen := _Socklen(1)\n\terr = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen)\n\treturn n, err\n}\n\nfunc GetsockoptInt(fd, level, opt int) (value int, err error) {\n\tvar n int32\n\tvallen := _Socklen(4)\n\terr = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen)\n\treturn int(n), err\n}\n\nfunc GetsockoptInet4Addr(fd, level, opt int) (value [4]byte, err error) {\n\tvallen := _Socklen(4)\n\terr = getsockopt(fd, level, opt, unsafe.Pointer(&value[0]), &vallen)\n\treturn value, err\n}\n\nfunc GetsockoptIPMreq(fd, level, opt int) (*IPMreq, error) {\n\tvar value IPMreq\n\tvallen := _Socklen(SizeofIPMreq)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\nfunc GetsockoptIPv6Mreq(fd, level, opt int) (*IPv6Mreq, error) {\n\tvar value IPv6Mreq\n\tvallen := _Socklen(SizeofIPv6Mreq)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\nfunc GetsockoptIPv6MTUInfo(fd, level, opt int) (*IPv6MTUInfo, error) {\n\tvar value IPv6MTUInfo\n\tvallen := _Socklen(SizeofIPv6MTUInfo)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\nfunc GetsockoptICMPv6Filter(fd, level, opt int) (*ICMPv6Filter, error) {\n\tvar value ICMPv6Filter\n\tvallen := _Socklen(SizeofICMPv6Filter)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\nfunc GetsockoptLinger(fd, level, opt int) (*Linger, error) {\n\tvar linger Linger\n\tvallen := _Socklen(SizeofLinger)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&linger), &vallen)\n\treturn &linger, err\n}\n\nfunc GetsockoptTimeval(fd, level, opt int) (*Timeval, error) {\n\tvar tv Timeval\n\tvallen := _Socklen(unsafe.Sizeof(tv))\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&tv), &vallen)\n\treturn &tv, err\n}\n\nfunc GetsockoptUint64(fd, level, opt int) (value uint64, err error) {\n\tvar n uint64\n\tvallen := _Socklen(8)\n\terr = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen)\n\treturn n, err\n}\n\nfunc Recvfrom(fd int, p []byte, flags int) (n int, from Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tif n, err = recvfrom(fd, p, flags, &rsa, &len); err != nil {\n\t\treturn\n\t}\n\tif rsa.Addr.Family != AF_UNSPEC {\n\t\tfrom, err = anyToSockaddr(fd, &rsa)\n\t}\n\treturn\n}\n\n// Recvmsg receives a message from a socket using the recvmsg system call. The\n// received non-control data will be written to p, and any \"out of band\"\n// control data will be written to oob. The flags are passed to recvmsg.\n//\n// The results are:\n//   - n is the number of non-control data bytes read into p\n//   - oobn is the number of control data bytes read into oob; this may be interpreted using [ParseSocketControlMessage]\n//   - recvflags is flags returned by recvmsg\n//   - from is the address of the sender\n//\n// If the underlying socket type is not SOCK_DGRAM, a received message\n// containing oob data and a single '\\0' of non-control data is treated as if\n// the message contained only control data, i.e. n will be zero on return.\nfunc Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) {\n\tvar iov [1]Iovec\n\tif len(p) > 0 {\n\t\tiov[0].Base = &p[0]\n\t\tiov[0].SetLen(len(p))\n\t}\n\tvar rsa RawSockaddrAny\n\tif n, oobn, recvflags, err = recvmsgRaw(fd, iov[:], oob, flags, &rsa); err != nil {\n\t\treturn\n\t}\n\t// source address is only specified if the socket is unconnected\n\tif rsa.Addr.Family != AF_UNSPEC {\n\t\tfrom, err = anyToSockaddr(fd, &rsa)\n\t}\n\treturn\n}\n\n// RecvmsgBuffers receives a message from a socket using the recvmsg system\n// call. This function is equivalent to Recvmsg, but non-control data read is\n// scattered into the buffers slices.\nfunc RecvmsgBuffers(fd int, buffers [][]byte, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) {\n\tiov := make([]Iovec, len(buffers))\n\tfor i := range buffers {\n\t\tif len(buffers[i]) > 0 {\n\t\t\tiov[i].Base = &buffers[i][0]\n\t\t\tiov[i].SetLen(len(buffers[i]))\n\t\t} else {\n\t\t\tiov[i].Base = (*byte)(unsafe.Pointer(&_zero))\n\t\t}\n\t}\n\tvar rsa RawSockaddrAny\n\tif n, oobn, recvflags, err = recvmsgRaw(fd, iov, oob, flags, &rsa); err != nil {\n\t\treturn\n\t}\n\tif rsa.Addr.Family != AF_UNSPEC {\n\t\tfrom, err = anyToSockaddr(fd, &rsa)\n\t}\n\treturn\n}\n\n// Sendmsg sends a message on a socket to an address using the sendmsg system\n// call. This function is equivalent to SendmsgN, but does not return the\n// number of bytes actually sent.\nfunc Sendmsg(fd int, p, oob []byte, to Sockaddr, flags int) (err error) {\n\t_, err = SendmsgN(fd, p, oob, to, flags)\n\treturn\n}\n\n// SendmsgN sends a message on a socket to an address using the sendmsg system\n// call. p contains the non-control data to send, and oob contains the \"out of\n// band\" control data. The flags are passed to sendmsg. The number of\n// non-control bytes actually written to the socket is returned.\n//\n// Some socket types do not support sending control data without accompanying\n// non-control data. If p is empty, and oob contains control data, and the\n// underlying socket type is not SOCK_DGRAM, p will be treated as containing a\n// single '\\0' and the return value will indicate zero bytes sent.\n//\n// The Go function Recvmsg, if called with an empty p and a non-empty oob,\n// will read and ignore this additional '\\0'.  If the message is received by\n// code that does not use Recvmsg, or that does not use Go at all, that code\n// will need to be written to expect and ignore the additional '\\0'.\n//\n// If you need to send non-empty oob with p actually empty, and if the\n// underlying socket type supports it, you can do so via a raw system call as\n// follows:\n//\n//\tmsg := &unix.Msghdr{\n//\t    Control: &oob[0],\n//\t}\n//\tmsg.SetControllen(len(oob))\n//\tn, _, errno := unix.Syscall(unix.SYS_SENDMSG, uintptr(fd), uintptr(unsafe.Pointer(msg)), flags)\nfunc SendmsgN(fd int, p, oob []byte, to Sockaddr, flags int) (n int, err error) {\n\tvar iov [1]Iovec\n\tif len(p) > 0 {\n\t\tiov[0].Base = &p[0]\n\t\tiov[0].SetLen(len(p))\n\t}\n\tvar ptr unsafe.Pointer\n\tvar salen _Socklen\n\tif to != nil {\n\t\tptr, salen, err = to.sockaddr()\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t}\n\treturn sendmsgN(fd, iov[:], oob, ptr, salen, flags)\n}\n\n// SendmsgBuffers sends a message on a socket to an address using the sendmsg\n// system call. This function is equivalent to SendmsgN, but the non-control\n// data is gathered from buffers.\nfunc SendmsgBuffers(fd int, buffers [][]byte, oob []byte, to Sockaddr, flags int) (n int, err error) {\n\tiov := make([]Iovec, len(buffers))\n\tfor i := range buffers {\n\t\tif len(buffers[i]) > 0 {\n\t\t\tiov[i].Base = &buffers[i][0]\n\t\t\tiov[i].SetLen(len(buffers[i]))\n\t\t} else {\n\t\t\tiov[i].Base = (*byte)(unsafe.Pointer(&_zero))\n\t\t}\n\t}\n\tvar ptr unsafe.Pointer\n\tvar salen _Socklen\n\tif to != nil {\n\t\tptr, salen, err = to.sockaddr()\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t}\n\treturn sendmsgN(fd, iov, oob, ptr, salen, flags)\n}\n\nfunc Send(s int, buf []byte, flags int) (err error) {\n\treturn sendto(s, buf, flags, nil, 0)\n}\n\nfunc Sendto(fd int, p []byte, flags int, to Sockaddr) (err error) {\n\tvar ptr unsafe.Pointer\n\tvar salen _Socklen\n\tif to != nil {\n\t\tptr, salen, err = to.sockaddr()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn sendto(fd, p, flags, ptr, salen)\n}\n\nfunc SetsockoptByte(fd, level, opt int, value byte) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(&value), 1)\n}\n\nfunc SetsockoptInt(fd, level, opt int, value int) (err error) {\n\tvar n = int32(value)\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(&n), 4)\n}\n\nfunc SetsockoptInet4Addr(fd, level, opt int, value [4]byte) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(&value[0]), 4)\n}\n\nfunc SetsockoptIPMreq(fd, level, opt int, mreq *IPMreq) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(mreq), SizeofIPMreq)\n}\n\nfunc SetsockoptIPv6Mreq(fd, level, opt int, mreq *IPv6Mreq) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(mreq), SizeofIPv6Mreq)\n}\n\nfunc SetsockoptICMPv6Filter(fd, level, opt int, filter *ICMPv6Filter) error {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(filter), SizeofICMPv6Filter)\n}\n\nfunc SetsockoptLinger(fd, level, opt int, l *Linger) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(l), SizeofLinger)\n}\n\nfunc SetsockoptString(fd, level, opt int, s string) (err error) {\n\tvar p unsafe.Pointer\n\tif len(s) > 0 {\n\t\tp = unsafe.Pointer(&[]byte(s)[0])\n\t}\n\treturn setsockopt(fd, level, opt, p, uintptr(len(s)))\n}\n\nfunc SetsockoptTimeval(fd, level, opt int, tv *Timeval) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(tv), unsafe.Sizeof(*tv))\n}\n\nfunc SetsockoptUint64(fd, level, opt int, value uint64) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(&value), 8)\n}\n\nfunc Socket(domain, typ, proto int) (fd int, err error) {\n\tif domain == AF_INET6 && SocketDisableIPv6 {\n\t\treturn -1, EAFNOSUPPORT\n\t}\n\tfd, err = socket(domain, typ, proto)\n\treturn\n}\n\nfunc Socketpair(domain, typ, proto int) (fd [2]int, err error) {\n\tvar fdx [2]int32\n\terr = socketpair(domain, typ, proto, &fdx)\n\tif err == nil {\n\t\tfd[0] = int(fdx[0])\n\t\tfd[1] = int(fdx[1])\n\t}\n\treturn\n}\n\nvar ioSync int64\n\nfunc CloseOnExec(fd int) { fcntl(fd, F_SETFD, FD_CLOEXEC) }\n\nfunc SetNonblock(fd int, nonblocking bool) (err error) {\n\tflag, err := fcntl(fd, F_GETFL, 0)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif (flag&O_NONBLOCK != 0) == nonblocking {\n\t\treturn nil\n\t}\n\tif nonblocking {\n\t\tflag |= O_NONBLOCK\n\t} else {\n\t\tflag &= ^O_NONBLOCK\n\t}\n\t_, err = fcntl(fd, F_SETFL, flag)\n\treturn err\n}\n\n// Exec calls execve(2), which replaces the calling executable in the process\n// tree. argv0 should be the full path to an executable (\"/bin/ls\") and the\n// executable name should also be the first argument in argv ([\"ls\", \"-l\"]).\n// envv are the environment variables that should be passed to the new\n// process ([\"USER=go\", \"PWD=/tmp\"]).\nfunc Exec(argv0 string, argv []string, envv []string) error {\n\treturn syscall.Exec(argv0, argv, envv)\n}\n\n// Lutimes sets the access and modification times tv on path. If path refers to\n// a symlink, it is not dereferenced and the timestamps are set on the symlink.\n// If tv is nil, the access and modification times are set to the current time.\n// Otherwise tv must contain exactly 2 elements, with access time as the first\n// element and modification time as the second element.\nfunc Lutimes(path string, tv []Timeval) error {\n\tif tv == nil {\n\t\treturn UtimesNanoAt(AT_FDCWD, path, nil, AT_SYMLINK_NOFOLLOW)\n\t}\n\tif len(tv) != 2 {\n\t\treturn EINVAL\n\t}\n\tts := []Timespec{\n\t\tNsecToTimespec(TimevalToNsec(tv[0])),\n\t\tNsecToTimespec(TimevalToNsec(tv[1])),\n\t}\n\treturn UtimesNanoAt(AT_FDCWD, path, ts, AT_SYMLINK_NOFOLLOW)\n}\n\n// emptyIovecs reports whether there are no bytes in the slice of Iovec.\nfunc emptyIovecs(iov []Iovec) bool {\n\tfor i := range iov {\n\t\tif iov[i].Len > 0 {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// Setrlimit sets a resource limit.\nfunc Setrlimit(resource int, rlim *Rlimit) error {\n\t// Just call the syscall version, because as of Go 1.21\n\t// it will affect starting a new process.\n\treturn syscall.Setrlimit(resource, (*syscall.Rlimit)(rlim))\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_unix_gc.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (darwin || dragonfly || freebsd || (linux && !ppc64 && !ppc64le) || netbsd || openbsd || solaris) && gc\n\npackage unix\n\nimport \"syscall\"\n\nfunc Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno)\nfunc Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno)\nfunc RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno)\nfunc RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && (ppc64le || ppc64) && gc\n\npackage unix\n\nimport \"syscall\"\n\nfunc Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) {\n\treturn syscall.Syscall(trap, a1, a2, a3)\n}\nfunc Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) {\n\treturn syscall.Syscall6(trap, a1, a2, a3, a4, a5, a6)\n}\nfunc RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) {\n\treturn syscall.RawSyscall(trap, a1, a2, a3)\n}\nfunc RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) {\n\treturn syscall.RawSyscall6(trap, a1, a2, a3, a4, a5, a6)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_zos_s390x.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build zos && s390x\n\n// Many of the following syscalls are not available on all versions of z/OS.\n// Some missing calls have legacy implementations/simulations but others\n// will be missing completely. To achieve consistent failing behaviour on\n// legacy systems, we first test the function pointer via a safeloading\n// mechanism to see if the function exists on a given system. Then execution\n// is branched to either continue the function call, or return an error.\n\npackage unix\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"os\"\n\t\"reflect\"\n\t\"regexp\"\n\t\"runtime\"\n\t\"sort\"\n\t\"strings\"\n\t\"sync\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n//go:noescape\nfunc initZosLibVec()\n\n//go:noescape\nfunc GetZosLibVec() uintptr\n\nfunc init() {\n\tinitZosLibVec()\n\tr0, _, _ := CallLeFuncWithPtrReturn(GetZosLibVec()+SYS_____GETENV_A<<4, uintptr(unsafe.Pointer(&([]byte(\"__ZOS_XSYSTRACE\\x00\"))[0])))\n\tif r0 != 0 {\n\t\tn, _, _ := CallLeFuncWithPtrReturn(GetZosLibVec()+SYS___ATOI_A<<4, r0)\n\t\tZosTraceLevel = int(n)\n\t\tr0, _, _ := CallLeFuncWithPtrReturn(GetZosLibVec()+SYS_____GETENV_A<<4, uintptr(unsafe.Pointer(&([]byte(\"__ZOS_XSYSTRACEFD\\x00\"))[0])))\n\t\tif r0 != 0 {\n\t\t\tfd, _, _ := CallLeFuncWithPtrReturn(GetZosLibVec()+SYS___ATOI_A<<4, r0)\n\t\t\tf := os.NewFile(fd, \"zostracefile\")\n\t\t\tif f != nil {\n\t\t\t\tZosTracefile = f\n\t\t\t}\n\t\t}\n\n\t}\n}\n\n//go:noescape\nfunc CallLeFuncWithErr(funcdesc uintptr, parms ...uintptr) (ret, errno2 uintptr, err Errno)\n\n//go:noescape\nfunc CallLeFuncWithPtrReturn(funcdesc uintptr, parms ...uintptr) (ret, errno2 uintptr, err Errno)\n\n// -------------------------------\n// pointer validity test\n// good pointer returns 0\n// bad pointer returns 1\n//\n//go:nosplit\nfunc ptrtest(uintptr) uint64\n\n// Load memory at ptr location with error handling if the location is invalid\n//\n//go:noescape\nfunc safeload(ptr uintptr) (value uintptr, error uintptr)\n\nconst (\n\tentrypointLocationOffset = 8 // From function descriptor\n\n\txplinkEyecatcher   = 0x00c300c500c500f1 // \".C.E.E.1\"\n\teyecatcherOffset   = 16                 // From function entrypoint (negative)\n\tppa1LocationOffset = 8                  // From function entrypoint (negative)\n\n\tnameLenOffset = 0x14 // From PPA1 start\n\tnameOffset    = 0x16 // From PPA1 start\n)\n\nfunc getPpaOffset(funcptr uintptr) int64 {\n\tentrypoint, err := safeload(funcptr + entrypointLocationOffset)\n\tif err != 0 {\n\t\treturn -1\n\t}\n\n\t// XPLink functions have \".C.E.E.1\" as the first 8 bytes (EBCDIC)\n\tval, err := safeload(entrypoint - eyecatcherOffset)\n\tif err != 0 {\n\t\treturn -1\n\t}\n\tif val != xplinkEyecatcher {\n\t\treturn -1\n\t}\n\n\tppaoff, err := safeload(entrypoint - ppa1LocationOffset)\n\tif err != 0 {\n\t\treturn -1\n\t}\n\n\tppaoff >>= 32\n\treturn int64(ppaoff)\n}\n\n//-------------------------------\n// function descriptor pointer validity test\n// good pointer returns 0\n// bad pointer returns 1\n\n// TODO: currently mksyscall_zos_s390x.go generate empty string for funcName\n// have correct funcName pass to the funcptrtest function\nfunc funcptrtest(funcptr uintptr, funcName string) uint64 {\n\tentrypoint, err := safeload(funcptr + entrypointLocationOffset)\n\tif err != 0 {\n\t\treturn 1\n\t}\n\n\tppaoff := getPpaOffset(funcptr)\n\tif ppaoff == -1 {\n\t\treturn 1\n\t}\n\n\t// PPA1 offset value is from the start of the entire function block, not the entrypoint\n\tppa1 := (entrypoint - eyecatcherOffset) + uintptr(ppaoff)\n\n\tnameLen, err := safeload(ppa1 + nameLenOffset)\n\tif err != 0 {\n\t\treturn 1\n\t}\n\n\tnameLen >>= 48\n\tif nameLen > 128 {\n\t\treturn 1\n\t}\n\n\t// no function name input to argument end here\n\tif funcName == \"\" {\n\t\treturn 0\n\t}\n\n\tvar funcname [128]byte\n\tfor i := 0; i < int(nameLen); i += 8 {\n\t\tv, err := safeload(ppa1 + nameOffset + uintptr(i))\n\t\tif err != 0 {\n\t\t\treturn 1\n\t\t}\n\t\tfuncname[i] = byte(v >> 56)\n\t\tfuncname[i+1] = byte(v >> 48)\n\t\tfuncname[i+2] = byte(v >> 40)\n\t\tfuncname[i+3] = byte(v >> 32)\n\t\tfuncname[i+4] = byte(v >> 24)\n\t\tfuncname[i+5] = byte(v >> 16)\n\t\tfuncname[i+6] = byte(v >> 8)\n\t\tfuncname[i+7] = byte(v)\n\t}\n\n\truntime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS___E2A_L<<4, // __e2a_l\n\t\t[]uintptr{uintptr(unsafe.Pointer(&funcname[0])), nameLen})\n\n\tname := string(funcname[:nameLen])\n\tif name != funcName {\n\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n// For detection of capabilities on a system.\n// Is function descriptor f a valid function?\nfunc isValidLeFunc(f uintptr) error {\n\tret := funcptrtest(f, \"\")\n\tif ret != 0 {\n\t\treturn fmt.Errorf(\"Bad pointer, not an LE function \")\n\t}\n\treturn nil\n}\n\n// Retrieve function name from descriptor\nfunc getLeFuncName(f uintptr) (string, error) {\n\t// assume it has been checked, only check ppa1 validity here\n\tentry := ((*[2]uintptr)(unsafe.Pointer(f)))[1]\n\tpreamp := ((*[4]uint32)(unsafe.Pointer(entry - eyecatcherOffset)))\n\n\toffsetPpa1 := preamp[2]\n\tif offsetPpa1 > 0x0ffff {\n\t\treturn \"\", fmt.Errorf(\"PPA1 offset seems too big 0x%x\\n\", offsetPpa1)\n\t}\n\n\tppa1 := uintptr(unsafe.Pointer(preamp)) + uintptr(offsetPpa1)\n\tres := ptrtest(ppa1)\n\tif res != 0 {\n\t\treturn \"\", fmt.Errorf(\"PPA1 address not valid\")\n\t}\n\n\tsize := *(*uint16)(unsafe.Pointer(ppa1 + nameLenOffset))\n\tif size > 128 {\n\t\treturn \"\", fmt.Errorf(\"Function name seems too long, length=%d\\n\", size)\n\t}\n\n\tvar name [128]byte\n\tfuncname := (*[128]byte)(unsafe.Pointer(ppa1 + nameOffset))\n\tcopy(name[0:size], funcname[0:size])\n\n\truntime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS___E2A_L<<4, // __e2a_l\n\t\t[]uintptr{uintptr(unsafe.Pointer(&name[0])), uintptr(size)})\n\n\treturn string(name[:size]), nil\n}\n\n// Check z/OS version\nfunc zosLeVersion() (version, release uint32) {\n\tp1 := (*(*uintptr)(unsafe.Pointer(uintptr(1208)))) >> 32\n\tp1 = *(*uintptr)(unsafe.Pointer(uintptr(p1 + 88)))\n\tp1 = *(*uintptr)(unsafe.Pointer(uintptr(p1 + 8)))\n\tp1 = *(*uintptr)(unsafe.Pointer(uintptr(p1 + 984)))\n\tvrm := *(*uint32)(unsafe.Pointer(p1 + 80))\n\tversion = (vrm & 0x00ff0000) >> 16\n\trelease = (vrm & 0x0000ff00) >> 8\n\treturn\n}\n\n// returns a zos C FILE * for stdio fd 0, 1, 2\nfunc ZosStdioFilep(fd int32) uintptr {\n\treturn uintptr(*(*uint64)(unsafe.Pointer(uintptr(*(*uint64)(unsafe.Pointer(uintptr(*(*uint64)(unsafe.Pointer(uintptr(uint64(*(*uint32)(unsafe.Pointer(uintptr(1208)))) + 80))) + uint64((fd+2)<<3))))))))\n}\n\nfunc copyStat(stat *Stat_t, statLE *Stat_LE_t) {\n\tstat.Dev = uint64(statLE.Dev)\n\tstat.Ino = uint64(statLE.Ino)\n\tstat.Nlink = uint64(statLE.Nlink)\n\tstat.Mode = uint32(statLE.Mode)\n\tstat.Uid = uint32(statLE.Uid)\n\tstat.Gid = uint32(statLE.Gid)\n\tstat.Rdev = uint64(statLE.Rdev)\n\tstat.Size = statLE.Size\n\tstat.Atim.Sec = int64(statLE.Atim)\n\tstat.Atim.Nsec = 0 //zos doesn't return nanoseconds\n\tstat.Mtim.Sec = int64(statLE.Mtim)\n\tstat.Mtim.Nsec = 0 //zos doesn't return nanoseconds\n\tstat.Ctim.Sec = int64(statLE.Ctim)\n\tstat.Ctim.Nsec = 0 //zos doesn't return nanoseconds\n\tstat.Blksize = int64(statLE.Blksize)\n\tstat.Blocks = statLE.Blocks\n}\n\nfunc svcCall(fnptr unsafe.Pointer, argv *unsafe.Pointer, dsa *uint64)\nfunc svcLoad(name *byte) unsafe.Pointer\nfunc svcUnload(name *byte, fnptr unsafe.Pointer) int64\n\nfunc (d *Dirent) NameString() string {\n\tif d == nil {\n\t\treturn \"\"\n\t}\n\ts := string(d.Name[:])\n\tidx := strings.IndexByte(s, 0)\n\tif idx == -1 {\n\t\treturn s\n\t} else {\n\t\treturn s[:idx]\n\t}\n}\n\nfunc DecodeData(dest []byte, sz int, val uint64) {\n\tfor i := 0; i < sz; i++ {\n\t\tdest[sz-1-i] = byte((val >> (uint64(i * 8))) & 0xff)\n\t}\n}\n\nfunc EncodeData(data []byte) uint64 {\n\tvar value uint64\n\tsz := len(data)\n\tfor i := 0; i < sz; i++ {\n\t\tvalue |= uint64(data[i]) << uint64(((sz - i - 1) * 8))\n\t}\n\treturn value\n}\n\nfunc (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Port < 0 || sa.Port > 0xFFFF {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Len = SizeofSockaddrInet4\n\tsa.raw.Family = AF_INET\n\tp := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))\n\tp[0] = byte(sa.Port >> 8)\n\tp[1] = byte(sa.Port)\n\tfor i := 0; i < len(sa.Addr); i++ {\n\t\tsa.raw.Addr[i] = sa.Addr[i]\n\t}\n\treturn unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil\n}\n\nfunc (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Port < 0 || sa.Port > 0xFFFF {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Len = SizeofSockaddrInet6\n\tsa.raw.Family = AF_INET6\n\tp := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))\n\tp[0] = byte(sa.Port >> 8)\n\tp[1] = byte(sa.Port)\n\tsa.raw.Scope_id = sa.ZoneId\n\tfor i := 0; i < len(sa.Addr); i++ {\n\t\tsa.raw.Addr[i] = sa.Addr[i]\n\t}\n\treturn unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil\n}\n\nfunc (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tname := sa.Name\n\tn := len(name)\n\tif n >= len(sa.raw.Path) || n == 0 {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Len = byte(3 + n) // 2 for Family, Len; 1 for NUL\n\tsa.raw.Family = AF_UNIX\n\tfor i := 0; i < n; i++ {\n\t\tsa.raw.Path[i] = int8(name[i])\n\t}\n\treturn unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil\n}\n\nfunc anyToSockaddr(_ int, rsa *RawSockaddrAny) (Sockaddr, error) {\n\t// TODO(neeilan): Implement use of first param (fd)\n\tswitch rsa.Addr.Family {\n\tcase AF_UNIX:\n\t\tpp := (*RawSockaddrUnix)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrUnix)\n\t\t// For z/OS, only replace NUL with @ when the\n\t\t// length is not zero.\n\t\tif pp.Len != 0 && pp.Path[0] == 0 {\n\t\t\t// \"Abstract\" Unix domain socket.\n\t\t\t// Rewrite leading NUL as @ for textual display.\n\t\t\t// (This is the standard convention.)\n\t\t\t// Not friendly to overwrite in place,\n\t\t\t// but the callers below don't care.\n\t\t\tpp.Path[0] = '@'\n\t\t}\n\n\t\t// Assume path ends at NUL.\n\t\t//\n\t\t// For z/OS, the length of the name is a field\n\t\t// in the structure. To be on the safe side, we\n\t\t// will still scan the name for a NUL but only\n\t\t// to the length provided in the structure.\n\t\t//\n\t\t// This is not technically the Linux semantics for\n\t\t// abstract Unix domain sockets--they are supposed\n\t\t// to be uninterpreted fixed-size binary blobs--but\n\t\t// everyone uses this convention.\n\t\tn := 0\n\t\tfor n < int(pp.Len) && pp.Path[n] != 0 {\n\t\t\tn++\n\t\t}\n\t\tsa.Name = string(unsafe.Slice((*byte)(unsafe.Pointer(&pp.Path[0])), n))\n\t\treturn sa, nil\n\n\tcase AF_INET:\n\t\tpp := (*RawSockaddrInet4)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrInet4)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tfor i := 0; i < len(sa.Addr); i++ {\n\t\t\tsa.Addr[i] = pp.Addr[i]\n\t\t}\n\t\treturn sa, nil\n\n\tcase AF_INET6:\n\t\tpp := (*RawSockaddrInet6)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrInet6)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tsa.ZoneId = pp.Scope_id\n\t\tfor i := 0; i < len(sa.Addr); i++ {\n\t\t\tsa.Addr[i] = pp.Addr[i]\n\t\t}\n\t\treturn sa, nil\n\t}\n\treturn nil, EAFNOSUPPORT\n}\n\nfunc Accept(fd int) (nfd int, sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tnfd, err = accept(fd, &rsa, &len)\n\tif err != nil {\n\t\treturn\n\t}\n\t// TODO(neeilan): Remove 0 in call\n\tsa, err = anyToSockaddr(0, &rsa)\n\tif err != nil {\n\t\tClose(nfd)\n\t\tnfd = 0\n\t}\n\treturn\n}\n\nfunc Accept4(fd int, flags int) (nfd int, sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tnfd, err = accept4(fd, &rsa, &len, flags)\n\tif err != nil {\n\t\treturn\n\t}\n\tif len > SizeofSockaddrAny {\n\t\tpanic(\"RawSockaddrAny too small\")\n\t}\n\t// TODO(neeilan): Remove 0 in call\n\tsa, err = anyToSockaddr(0, &rsa)\n\tif err != nil {\n\t\tClose(nfd)\n\t\tnfd = 0\n\t}\n\treturn\n}\n\nfunc Ctermid() (tty string, err error) {\n\tvar termdev [1025]byte\n\truntime.EnterSyscall()\n\tr0, err2, err1 := CallLeFuncWithPtrReturn(GetZosLibVec()+SYS___CTERMID_A<<4, uintptr(unsafe.Pointer(&termdev[0])))\n\truntime.ExitSyscall()\n\tif r0 == 0 {\n\t\treturn \"\", fmt.Errorf(\"%s (errno2=0x%x)\\n\", err1.Error(), err2)\n\t}\n\ts := string(termdev[:])\n\tidx := strings.Index(s, string(rune(0)))\n\tif idx == -1 {\n\t\ttty = s\n\t} else {\n\t\ttty = s[:idx]\n\t}\n\treturn\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = int32(length)\n}\n\n//sys   fcntl(fd int, cmd int, arg int) (val int, err error)\n//sys   Flistxattr(fd int, dest []byte) (sz int, err error) = SYS___FLISTXATTR_A\n//sys   Fremovexattr(fd int, attr string) (err error) = SYS___FREMOVEXATTR_A\n//sys\tread(fd int, p []byte) (n int, err error)\n//sys\twrite(fd int, p []byte) (n int, err error)\n\n//sys   Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) = SYS___FGETXATTR_A\n//sys   Fsetxattr(fd int, attr string, data []byte, flag int) (err error) = SYS___FSETXATTR_A\n\n//sys\taccept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) = SYS___ACCEPT_A\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) = SYS___ACCEPT4_A\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) = SYS___BIND_A\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) = SYS___CONNECT_A\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) = SYS___GETPEERNAME_A\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) = SYS___GETSOCKNAME_A\n//sys   Removexattr(path string, attr string) (err error) = SYS___REMOVEXATTR_A\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) = SYS___RECVFROM_A\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) = SYS___SENDTO_A\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error) = SYS___RECVMSG_A\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error) = SYS___SENDMSG_A\n//sys   mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) = SYS_MMAP\n//sys   munmap(addr uintptr, length uintptr) (err error) = SYS_MUNMAP\n//sys   ioctl(fd int, req int, arg uintptr) (err error) = SYS_IOCTL\n//sys   ioctlPtr(fd int, req int, arg unsafe.Pointer) (err error) = SYS_IOCTL\n//sys\tshmat(id int, addr uintptr, flag int) (ret uintptr, err error) = SYS_SHMAT\n//sys\tshmctl(id int, cmd int, buf *SysvShmDesc) (result int, err error) = SYS_SHMCTL64\n//sys\tshmdt(addr uintptr) (err error) = SYS_SHMDT\n//sys\tshmget(key int, size int, flag int) (id int, err error) = SYS_SHMGET\n\n//sys   Access(path string, mode uint32) (err error) = SYS___ACCESS_A\n//sys   Chdir(path string) (err error) = SYS___CHDIR_A\n//sys\tChown(path string, uid int, gid int) (err error) = SYS___CHOWN_A\n//sys\tChmod(path string, mode uint32) (err error) = SYS___CHMOD_A\n//sys   Creat(path string, mode uint32) (fd int, err error) = SYS___CREAT_A\n//sys\tDup(oldfd int) (fd int, err error)\n//sys\tDup2(oldfd int, newfd int) (err error)\n//sys\tDup3(oldfd int, newfd int, flags int) (err error) = SYS_DUP3\n//sys\tDirfd(dirp uintptr) (fd int, err error) = SYS_DIRFD\n//sys\tEpollCreate(size int) (fd int, err error) = SYS_EPOLL_CREATE\n//sys\tEpollCreate1(flags int) (fd int, err error) = SYS_EPOLL_CREATE1\n//sys\tEpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) = SYS_EPOLL_CTL\n//sys\tEpollPwait(epfd int, events []EpollEvent, msec int, sigmask *int) (n int, err error) = SYS_EPOLL_PWAIT\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) = SYS_EPOLL_WAIT\n//sys\tErrno2() (er2 int) = SYS___ERRNO2\n//sys\tEventfd(initval uint, flags int) (fd int, err error) = SYS_EVENTFD\n//sys\tExit(code int)\n//sys\tFaccessat(dirfd int, path string, mode uint32, flags int) (err error) = SYS___FACCESSAT_A\n\nfunc Faccessat2(dirfd int, path string, mode uint32, flags int) (err error) {\n\treturn Faccessat(dirfd, path, mode, flags)\n}\n\n//sys\tFchdir(fd int) (err error)\n//sys\tFchmod(fd int, mode uint32) (err error)\n//sys\tFchmodat(dirfd int, path string, mode uint32, flags int) (err error) = SYS___FCHMODAT_A\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFchownat(fd int, path string, uid int, gid int, flags int) (err error) = SYS___FCHOWNAT_A\n//sys\tFcntlInt(fd uintptr, cmd int, arg int) (retval int, err error) = SYS_FCNTL\n//sys\tFdatasync(fd int) (err error) = SYS_FDATASYNC\n//sys\tfstat(fd int, stat *Stat_LE_t) (err error)\n//sys\tfstatat(dirfd int, path string, stat *Stat_LE_t, flags int) (err error) = SYS___FSTATAT_A\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\tvar statLE Stat_LE_t\n\terr = fstat(fd, &statLE)\n\tcopyStat(stat, &statLE)\n\treturn\n}\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar statLE Stat_LE_t\n\terr = fstatat(dirfd, path, &statLE, flags)\n\tcopyStat(stat, &statLE)\n\treturn\n}\n\nfunc impl_Getxattr(path string, attr string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p2 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___GETXATTR_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)))\n\tsz = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_GetxattrAddr() *(func(path string, attr string, dest []byte) (sz int, err error))\n\nvar Getxattr = enter_Getxattr\n\nfunc enter_Getxattr(path string, attr string, dest []byte) (sz int, err error) {\n\tfuncref := get_GetxattrAddr()\n\tif validGetxattr() {\n\t\t*funcref = impl_Getxattr\n\t} else {\n\t\t*funcref = error_Getxattr\n\t}\n\treturn (*funcref)(path, attr, dest)\n}\n\nfunc error_Getxattr(path string, attr string, dest []byte) (sz int, err error) {\n\treturn -1, ENOSYS\n}\n\nfunc validGetxattr() bool {\n\tif funcptrtest(GetZosLibVec()+SYS___GETXATTR_A<<4, \"\") == 0 {\n\t\tif name, err := getLeFuncName(GetZosLibVec() + SYS___GETXATTR_A<<4); err == nil {\n\t\t\treturn name == \"__getxattr_a\"\n\t\t}\n\t}\n\treturn false\n}\n\n//sys   Lgetxattr(link string, attr string, dest []byte) (sz int, err error) = SYS___LGETXATTR_A\n//sys   Lsetxattr(path string, attr string, data []byte, flags int) (err error) = SYS___LSETXATTR_A\n\nfunc impl_Setxattr(path string, attr string, data []byte, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(data) > 0 {\n\t\t_p2 = unsafe.Pointer(&data[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___SETXATTR_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags))\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_SetxattrAddr() *(func(path string, attr string, data []byte, flags int) (err error))\n\nvar Setxattr = enter_Setxattr\n\nfunc enter_Setxattr(path string, attr string, data []byte, flags int) (err error) {\n\tfuncref := get_SetxattrAddr()\n\tif validSetxattr() {\n\t\t*funcref = impl_Setxattr\n\t} else {\n\t\t*funcref = error_Setxattr\n\t}\n\treturn (*funcref)(path, attr, data, flags)\n}\n\nfunc error_Setxattr(path string, attr string, data []byte, flags int) (err error) {\n\treturn ENOSYS\n}\n\nfunc validSetxattr() bool {\n\tif funcptrtest(GetZosLibVec()+SYS___SETXATTR_A<<4, \"\") == 0 {\n\t\tif name, err := getLeFuncName(GetZosLibVec() + SYS___SETXATTR_A<<4); err == nil {\n\t\t\treturn name == \"__setxattr_a\"\n\t\t}\n\t}\n\treturn false\n}\n\n//sys\tFstatfs(fd int, buf *Statfs_t) (err error) = SYS_FSTATFS\n//sys\tFstatvfs(fd int, stat *Statvfs_t) (err error) = SYS_FSTATVFS\n//sys\tFsync(fd int) (err error)\n//sys\tFutimes(fd int, tv []Timeval) (err error) = SYS_FUTIMES\n//sys\tFutimesat(dirfd int, path string, tv []Timeval) (err error) = SYS___FUTIMESAT_A\n//sys\tFtruncate(fd int, length int64) (err error)\n//sys\tGetrandom(buf []byte, flags int) (n int, err error) = SYS_GETRANDOM\n//sys\tInotifyInit() (fd int, err error) = SYS_INOTIFY_INIT\n//sys\tInotifyInit1(flags int) (fd int, err error) = SYS_INOTIFY_INIT1\n//sys\tInotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) = SYS___INOTIFY_ADD_WATCH_A\n//sys\tInotifyRmWatch(fd int, watchdesc uint32) (success int, err error) = SYS_INOTIFY_RM_WATCH\n//sys   Listxattr(path string, dest []byte) (sz int, err error) = SYS___LISTXATTR_A\n//sys   Llistxattr(path string, dest []byte) (sz int, err error) = SYS___LLISTXATTR_A\n//sys   Lremovexattr(path string, attr string) (err error) = SYS___LREMOVEXATTR_A\n//sys\tLutimes(path string, tv []Timeval) (err error) = SYS___LUTIMES_A\n//sys   Mprotect(b []byte, prot int) (err error) = SYS_MPROTECT\n//sys   Msync(b []byte, flags int) (err error) = SYS_MSYNC\n//sys   Console2(cmsg *ConsMsg2, modstr *byte, concmd *uint32) (err error) = SYS___CONSOLE2\n\n// Pipe2 begin\n\n//go:nosplit\nfunc getPipe2Addr() *(func([]int, int) error)\n\nvar Pipe2 = pipe2Enter\n\nfunc pipe2Enter(p []int, flags int) (err error) {\n\tif funcptrtest(GetZosLibVec()+SYS_PIPE2<<4, \"\") == 0 {\n\t\t*getPipe2Addr() = pipe2Impl\n\t} else {\n\t\t*getPipe2Addr() = pipe2Error\n\t}\n\treturn (*getPipe2Addr())(p, flags)\n}\n\nfunc pipe2Impl(p []int, flags int) (err error) {\n\tvar pp [2]_C_int\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_PIPE2<<4, uintptr(unsafe.Pointer(&pp[0])), uintptr(flags))\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t} else {\n\t\tp[0] = int(pp[0])\n\t\tp[1] = int(pp[1])\n\t}\n\treturn\n}\nfunc pipe2Error(p []int, flags int) (err error) {\n\treturn fmt.Errorf(\"Pipe2 is not available on this system\")\n}\n\n// Pipe2 end\n\n//sys   Poll(fds []PollFd, timeout int) (n int, err error) = SYS_POLL\n\nfunc Readdir(dir uintptr) (dirent *Dirent, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___READDIR_A<<4, uintptr(dir))\n\truntime.ExitSyscall()\n\tdirent = (*Dirent)(unsafe.Pointer(r0))\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//sys\tReaddir_r(dirp uintptr, entry *direntLE, result **direntLE) (err error) = SYS___READDIR_R_A\n//sys\tStatfs(path string, buf *Statfs_t) (err error) = SYS___STATFS_A\n//sys\tSyncfs(fd int) (err error) = SYS_SYNCFS\n//sys   Times(tms *Tms) (ticks uintptr, err error) = SYS_TIMES\n//sys   W_Getmntent(buff *byte, size int) (lastsys int, err error) = SYS_W_GETMNTENT\n//sys   W_Getmntent_A(buff *byte, size int) (lastsys int, err error) = SYS___W_GETMNTENT_A\n\n//sys   mount_LE(path string, filesystem string, fstype string, mtm uint32, parmlen int32, parm string) (err error) = SYS___MOUNT_A\n//sys   unmount_LE(filesystem string, mtm int) (err error) = SYS___UMOUNT_A\n//sys   Chroot(path string) (err error) = SYS___CHROOT_A\n//sys   Select(nmsgsfds int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (ret int, err error) = SYS_SELECT\n//sysnb Uname(buf *Utsname) (err error) = SYS_____OSNAME_A\n//sys   Unshare(flags int) (err error) = SYS_UNSHARE\n\nfunc Ptsname(fd int) (name string, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithPtrReturn(GetZosLibVec()+SYS___PTSNAME_A<<4, uintptr(fd))\n\truntime.ExitSyscall()\n\tif r0 == 0 {\n\t\terr = errnoErr2(e1, e2)\n\t} else {\n\t\tname = u2s(unsafe.Pointer(r0))\n\t}\n\treturn\n}\n\nfunc u2s(cstr unsafe.Pointer) string {\n\tstr := (*[1024]uint8)(cstr)\n\ti := 0\n\tfor str[i] != 0 {\n\t\ti++\n\t}\n\treturn string(str[:i])\n}\n\nfunc Close(fd int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_CLOSE<<4, uintptr(fd))\n\truntime.ExitSyscall()\n\tfor i := 0; e1 == EAGAIN && i < 10; i++ {\n\t\truntime.EnterSyscall()\n\t\tCallLeFuncWithErr(GetZosLibVec()+SYS_USLEEP<<4, uintptr(10))\n\t\truntime.ExitSyscall()\n\t\truntime.EnterSyscall()\n\t\tr0, e2, e1 = CallLeFuncWithErr(GetZosLibVec()+SYS_CLOSE<<4, uintptr(fd))\n\t\truntime.ExitSyscall()\n\t}\n\tif r0 != 0 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// Dummy function: there are no semantics for Madvise on z/OS\nfunc Madvise(b []byte, advice int) (err error) {\n\treturn\n}\n\nfunc Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) {\n\treturn mapper.Mmap(fd, offset, length, prot, flags)\n}\n\nfunc Munmap(b []byte) (err error) {\n\treturn mapper.Munmap(b)\n}\n\nfunc MmapPtr(fd int, offset int64, addr unsafe.Pointer, length uintptr, prot int, flags int) (ret unsafe.Pointer, err error) {\n\txaddr, err := mapper.mmap(uintptr(addr), length, prot, flags, fd, offset)\n\treturn unsafe.Pointer(xaddr), err\n}\n\nfunc MunmapPtr(addr unsafe.Pointer, length uintptr) (err error) {\n\treturn mapper.munmap(uintptr(addr), length)\n}\n\n//sys   Gethostname(buf []byte) (err error) = SYS___GETHOSTNAME_A\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetpid() (pid int)\n//sysnb\tGetpgid(pid int) (pgid int, err error) = SYS_GETPGID\n\nfunc Getpgrp() (pid int) {\n\tpid, _ = Getpgid(0)\n\treturn\n}\n\n//sysnb\tGetppid() (pid int)\n//sys\tGetpriority(which int, who int) (prio int, err error)\n//sysnb\tGetrlimit(resource int, rlim *Rlimit) (err error) = SYS_GETRLIMIT\n\n//sysnb getrusage(who int, rusage *rusage_zos) (err error) = SYS_GETRUSAGE\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\tvar ruz rusage_zos\n\terr = getrusage(who, &ruz)\n\t//Only the first two fields of Rusage are set\n\trusage.Utime.Sec = ruz.Utime.Sec\n\trusage.Utime.Usec = int64(ruz.Utime.Usec)\n\trusage.Stime.Sec = ruz.Stime.Sec\n\trusage.Stime.Usec = int64(ruz.Stime.Usec)\n\treturn\n}\n\n//sys\tGetegid() (egid int) = SYS_GETEGID\n//sys\tGeteuid() (euid int) = SYS_GETEUID\n//sysnb Getsid(pid int) (sid int, err error) = SYS_GETSID\n//sysnb\tGetuid() (uid int)\n//sysnb\tKill(pid int, sig Signal) (err error)\n//sys\tLchown(path string, uid int, gid int) (err error) = SYS___LCHOWN_A\n//sys\tLink(path string, link string) (err error) = SYS___LINK_A\n//sys\tLinkat(oldDirFd int, oldPath string, newDirFd int, newPath string, flags int) (err error) = SYS___LINKAT_A\n//sys\tListen(s int, n int) (err error)\n//sys\tlstat(path string, stat *Stat_LE_t) (err error) = SYS___LSTAT_A\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar statLE Stat_LE_t\n\terr = lstat(path, &statLE)\n\tcopyStat(stat, &statLE)\n\treturn\n}\n\n// for checking symlinks begins with $VERSION/ $SYSNAME/ $SYSSYMR/ $SYSSYMA/\nfunc isSpecialPath(path []byte) (v bool) {\n\tvar special = [4][8]byte{\n\t\t{'V', 'E', 'R', 'S', 'I', 'O', 'N', '/'},\n\t\t{'S', 'Y', 'S', 'N', 'A', 'M', 'E', '/'},\n\t\t{'S', 'Y', 'S', 'S', 'Y', 'M', 'R', '/'},\n\t\t{'S', 'Y', 'S', 'S', 'Y', 'M', 'A', '/'}}\n\n\tvar i, j int\n\tfor i = 0; i < len(special); i++ {\n\t\tfor j = 0; j < len(special[i]); j++ {\n\t\t\tif path[j] != special[i][j] {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif j == len(special[i]) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc realpath(srcpath string, abspath []byte) (pathlen int, errno int) {\n\tvar source [1024]byte\n\tcopy(source[:], srcpath)\n\tsource[len(srcpath)] = 0\n\tret := runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS___REALPATH_A<<4, //__realpath_a()\n\t\t[]uintptr{uintptr(unsafe.Pointer(&source[0])),\n\t\t\tuintptr(unsafe.Pointer(&abspath[0]))})\n\tif ret != 0 {\n\t\tindex := bytes.IndexByte(abspath[:], byte(0))\n\t\tif index != -1 {\n\t\t\treturn index, 0\n\t\t}\n\t} else {\n\t\terrptr := (*int)(unsafe.Pointer(runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS___ERRNO<<4, []uintptr{}))) //__errno()\n\t\treturn 0, *errptr\n\t}\n\treturn 0, 245 // EBADDATA   245\n}\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tn = int(runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS___READLINK_A<<4,\n\t\t[]uintptr{uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))}))\n\truntime.KeepAlive(unsafe.Pointer(_p0))\n\tif n == -1 {\n\t\tvalue := *(*int32)(unsafe.Pointer(runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS___ERRNO<<4, []uintptr{})))\n\t\terr = errnoErr(Errno(value))\n\t} else {\n\t\tif buf[0] == '$' {\n\t\t\tif isSpecialPath(buf[1:9]) {\n\t\t\t\tcnt, err1 := realpath(path, buf)\n\t\t\t\tif err1 == 0 {\n\t\t\t\t\tn = cnt\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn\n}\n\nfunc impl_Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___READLINKAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\truntime.ExitSyscall()\n\tn = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t\treturn n, err\n\t} else {\n\t\tif buf[0] == '$' {\n\t\t\tif isSpecialPath(buf[1:9]) {\n\t\t\t\tcnt, err1 := realpath(path, buf)\n\t\t\t\tif err1 == 0 {\n\t\t\t\t\tn = cnt\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_ReadlinkatAddr() *(func(dirfd int, path string, buf []byte) (n int, err error))\n\nvar Readlinkat = enter_Readlinkat\n\nfunc enter_Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tfuncref := get_ReadlinkatAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___READLINKAT_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Readlinkat\n\t} else {\n\t\t*funcref = error_Readlinkat\n\t}\n\treturn (*funcref)(dirfd, path, buf)\n}\n\nfunc error_Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tn = -1\n\terr = ENOSYS\n\treturn\n}\n\n//sys\tMkdir(path string, mode uint32) (err error) = SYS___MKDIR_A\n//sys\tMkdirat(dirfd int, path string, mode uint32) (err error) = SYS___MKDIRAT_A\n//sys   Mkfifo(path string, mode uint32) (err error) = SYS___MKFIFO_A\n//sys\tMknod(path string, mode uint32, dev int) (err error) = SYS___MKNOD_A\n//sys\tMknodat(dirfd int, path string, mode uint32, dev int) (err error) = SYS___MKNODAT_A\n//sys\tPivotRoot(newroot string, oldroot string) (err error) = SYS___PIVOT_ROOT_A\n//sys\tPread(fd int, p []byte, offset int64) (n int, err error)\n//sys\tPwrite(fd int, p []byte, offset int64) (n int, err error)\n//sys\tPrctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) = SYS___PRCTL_A\n//sysnb\tPrlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) = SYS_PRLIMIT\n//sys\tRename(from string, to string) (err error) = SYS___RENAME_A\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) = SYS___RENAMEAT_A\n//sys\tRenameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) = SYS___RENAMEAT2_A\n//sys\tRmdir(path string) (err error) = SYS___RMDIR_A\n//sys   Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK\n//sys\tSetegid(egid int) (err error) = SYS_SETEGID\n//sys\tSeteuid(euid int) (err error) = SYS_SETEUID\n//sys\tSethostname(p []byte) (err error) = SYS___SETHOSTNAME_A\n//sys   Setns(fd int, nstype int) (err error) = SYS_SETNS\n//sys\tSetpriority(which int, who int, prio int) (err error)\n//sysnb\tSetpgid(pid int, pgid int) (err error) = SYS_SETPGID\n//sysnb\tSetrlimit(resource int, lim *Rlimit) (err error)\n//sysnb\tSetregid(rgid int, egid int) (err error) = SYS_SETREGID\n//sysnb\tSetreuid(ruid int, euid int) (err error) = SYS_SETREUID\n//sysnb\tSetsid() (pid int, err error) = SYS_SETSID\n//sys\tSetuid(uid int) (err error) = SYS_SETUID\n//sys\tSetgid(uid int) (err error) = SYS_SETGID\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tstat(path string, statLE *Stat_LE_t) (err error) = SYS___STAT_A\n\nfunc Stat(path string, sta *Stat_t) (err error) {\n\tvar statLE Stat_LE_t\n\terr = stat(path, &statLE)\n\tcopyStat(sta, &statLE)\n\treturn\n}\n\n//sys\tSymlink(path string, link string) (err error) = SYS___SYMLINK_A\n//sys\tSymlinkat(oldPath string, dirfd int, newPath string) (err error) = SYS___SYMLINKAT_A\n//sys\tSync() = SYS_SYNC\n//sys\tTruncate(path string, length int64) (err error) = SYS___TRUNCATE_A\n//sys\tTcgetattr(fildes int, termptr *Termios) (err error) = SYS_TCGETATTR\n//sys\tTcsetattr(fildes int, when int, termptr *Termios) (err error) = SYS_TCSETATTR\n//sys\tUmask(mask int) (oldmask int)\n//sys\tUnlink(path string) (err error) = SYS___UNLINK_A\n//sys\tUnlinkat(dirfd int, path string, flags int) (err error) = SYS___UNLINKAT_A\n//sys\tUtime(path string, utim *Utimbuf) (err error) = SYS___UTIME_A\n\n//sys\topen(path string, mode int, perm uint32) (fd int, err error) = SYS___OPEN_A\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tif mode&O_ACCMODE == 0 {\n\t\tmode |= O_RDONLY\n\t}\n\treturn open(path, mode, perm)\n}\n\n//sys\topenat(dirfd int, path string, flags int, mode uint32) (fd int, err error) = SYS___OPENAT_A\n\nfunc Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {\n\tif flags&O_ACCMODE == 0 {\n\t\tflags |= O_RDONLY\n\t}\n\treturn openat(dirfd, path, flags, mode)\n}\n\n//sys\topenat2(dirfd int, path string, open_how *OpenHow, size int) (fd int, err error) = SYS___OPENAT2_A\n\nfunc Openat2(dirfd int, path string, how *OpenHow) (fd int, err error) {\n\tif how.Flags&O_ACCMODE == 0 {\n\t\thow.Flags |= O_RDONLY\n\t}\n\treturn openat2(dirfd, path, how, SizeofOpenHow)\n}\n\nfunc ZosFdToPath(dirfd int) (path string, err error) {\n\tvar buffer [1024]byte\n\truntime.EnterSyscall()\n\tret, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_W_IOCTL<<4, uintptr(dirfd), 17, 1024, uintptr(unsafe.Pointer(&buffer[0])))\n\truntime.ExitSyscall()\n\tif ret == 0 {\n\t\tzb := bytes.IndexByte(buffer[:], 0)\n\t\tif zb == -1 {\n\t\t\tzb = len(buffer)\n\t\t}\n\t\tCallLeFuncWithErr(GetZosLibVec()+SYS___E2A_L<<4, uintptr(unsafe.Pointer(&buffer[0])), uintptr(zb))\n\t\treturn string(buffer[:zb]), nil\n\t}\n\treturn \"\", errnoErr2(e1, e2)\n}\n\n//sys\tremove(path string) (err error)\n\nfunc Remove(path string) error {\n\treturn remove(path)\n}\n\nconst ImplementsGetwd = true\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar p unsafe.Pointer\n\tif len(buf) > 0 {\n\t\tp = unsafe.Pointer(&buf[0])\n\t} else {\n\t\tp = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithPtrReturn(GetZosLibVec()+SYS___GETCWD_A<<4, uintptr(p), uintptr(len(buf)))\n\truntime.ExitSyscall()\n\tn = clen(buf) + 1\n\tif r0 == 0 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\nfunc Getwd() (wd string, err error) {\n\tvar buf [PathMax]byte\n\tn, err := Getcwd(buf[0:])\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\t// Getcwd returns the number of bytes written to buf, including the NUL.\n\tif n < 1 || n > len(buf) || buf[n-1] != 0 {\n\t\treturn \"\", EINVAL\n\t}\n\treturn string(buf[0 : n-1]), nil\n}\n\nfunc Getgroups() (gids []int, err error) {\n\tn, err := getgroups(0, nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif n == 0 {\n\t\treturn nil, nil\n\t}\n\n\t// Sanity check group count.  Max is 1<<16 on Linux.\n\tif n < 0 || n > 1<<20 {\n\t\treturn nil, EINVAL\n\t}\n\n\ta := make([]_Gid_t, n)\n\tn, err = getgroups(n, &a[0])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tgids = make([]int, n)\n\tfor i, v := range a[0:n] {\n\t\tgids[i] = int(v)\n\t}\n\treturn\n}\n\nfunc Setgroups(gids []int) (err error) {\n\tif len(gids) == 0 {\n\t\treturn setgroups(0, nil)\n\t}\n\n\ta := make([]_Gid_t, len(gids))\n\tfor i, v := range gids {\n\t\ta[i] = _Gid_t(v)\n\t}\n\treturn setgroups(len(a), &a[0])\n}\n\nfunc gettid() uint64\n\nfunc Gettid() (tid int) {\n\treturn int(gettid())\n}\n\ntype WaitStatus uint32\n\n// Wait status is 7 bits at bottom, either 0 (exited),\n// 0x7F (stopped), or a signal number that caused an exit.\n// The 0x80 bit is whether there was a core dump.\n// An extra number (exit code, signal causing a stop)\n// is in the high bits.  At least that's the idea.\n// There are various irregularities.  For example, the\n// \"continued\" status is 0xFFFF, distinguishing itself\n// from stopped via the core dump bit.\n\nconst (\n\tmask    = 0x7F\n\tcore    = 0x80\n\texited  = 0x00\n\tstopped = 0x7F\n\tshift   = 8\n)\n\nfunc (w WaitStatus) Exited() bool { return w&mask == exited }\n\nfunc (w WaitStatus) Signaled() bool { return w&mask != stopped && w&mask != exited }\n\nfunc (w WaitStatus) Stopped() bool { return w&0xFF == stopped }\n\nfunc (w WaitStatus) Continued() bool { return w == 0xFFFF }\n\nfunc (w WaitStatus) CoreDump() bool { return w.Signaled() && w&core != 0 }\n\nfunc (w WaitStatus) ExitStatus() int {\n\tif !w.Exited() {\n\t\treturn -1\n\t}\n\treturn int(w>>shift) & 0xFF\n}\n\nfunc (w WaitStatus) Signal() Signal {\n\tif !w.Signaled() {\n\t\treturn -1\n\t}\n\treturn Signal(w & mask)\n}\n\nfunc (w WaitStatus) StopSignal() Signal {\n\tif !w.Stopped() {\n\t\treturn -1\n\t}\n\treturn Signal(w>>shift) & 0xFF\n}\n\nfunc (w WaitStatus) TrapCause() int { return -1 }\n\n//sys\twaitid(idType int, id int, info *Siginfo, options int) (err error)\n\nfunc Waitid(idType int, id int, info *Siginfo, options int, rusage *Rusage) (err error) {\n\treturn waitid(idType, id, info, options)\n}\n\n//sys\twaitpid(pid int, wstatus *_C_int, options int) (wpid int, err error)\n\nfunc impl_Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_WAIT4<<4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)))\n\truntime.ExitSyscall()\n\twpid = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_Wait4Addr() *(func(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error))\n\nvar Wait4 = enter_Wait4\n\nfunc enter_Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) {\n\tfuncref := get_Wait4Addr()\n\tif funcptrtest(GetZosLibVec()+SYS_WAIT4<<4, \"\") == 0 {\n\t\t*funcref = impl_Wait4\n\t} else {\n\t\t*funcref = legacyWait4\n\t}\n\treturn (*funcref)(pid, wstatus, options, rusage)\n}\n\nfunc legacyWait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) {\n\t// TODO(mundaym): z/OS doesn't have wait4. I don't think getrusage does what we want.\n\t// At the moment rusage will not be touched.\n\tvar status _C_int\n\twpid, err = waitpid(pid, &status, options)\n\tif wstatus != nil {\n\t\t*wstatus = WaitStatus(status)\n\t}\n\treturn\n}\n\n//sysnb\tgettimeofday(tv *timeval_zos) (err error)\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\tvar tvz timeval_zos\n\terr = gettimeofday(&tvz)\n\ttv.Sec = tvz.Sec\n\ttv.Usec = int64(tvz.Usec)\n\treturn\n}\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tvar tv Timeval\n\terr = Gettimeofday(&tv)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tif t != nil {\n\t\t*t = Time_t(tv.Sec)\n\t}\n\treturn Time_t(tv.Sec), nil\n}\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval { //fix\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\n//sysnb pipe(p *[2]_C_int) (err error)\n\nfunc Pipe(p []int) (err error) {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\terr = pipe(&pp)\n\tp[0] = int(pp[0])\n\tp[1] = int(pp[1])\n\treturn\n}\n\n//sys\tutimes(path string, timeval *[2]Timeval) (err error) = SYS___UTIMES_A\n\nfunc Utimes(path string, tv []Timeval) (err error) {\n\tif tv == nil {\n\t\treturn utimes(path, nil)\n\t}\n\tif len(tv) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))\n}\n\n//sys\tutimensat(dirfd int, path string, ts *[2]Timespec, flags int) (err error) = SYS___UTIMENSAT_A\n\nfunc validUtimensat() bool {\n\tif funcptrtest(GetZosLibVec()+SYS___UTIMENSAT_A<<4, \"\") == 0 {\n\t\tif name, err := getLeFuncName(GetZosLibVec() + SYS___UTIMENSAT_A<<4); err == nil {\n\t\t\treturn name == \"__utimensat_a\"\n\t\t}\n\t}\n\treturn false\n}\n\n// Begin UtimesNano\n\n//go:nosplit\nfunc get_UtimesNanoAddr() *(func(path string, ts []Timespec) (err error))\n\nvar UtimesNano = enter_UtimesNano\n\nfunc enter_UtimesNano(path string, ts []Timespec) (err error) {\n\tfuncref := get_UtimesNanoAddr()\n\tif validUtimensat() {\n\t\t*funcref = utimesNanoImpl\n\t} else {\n\t\t*funcref = legacyUtimesNano\n\t}\n\treturn (*funcref)(path, ts)\n}\n\nfunc utimesNanoImpl(path string, ts []Timespec) (err error) {\n\tif ts == nil {\n\t\treturn utimensat(AT_FDCWD, path, nil, 0)\n\t}\n\tif len(ts) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)\n}\n\nfunc legacyUtimesNano(path string, ts []Timespec) (err error) {\n\tif len(ts) != 2 {\n\t\treturn EINVAL\n\t}\n\t// Not as efficient as it could be because Timespec and\n\t// Timeval have different types in the different OSes\n\ttv := [2]Timeval{\n\t\tNsecToTimeval(TimespecToNsec(ts[0])),\n\t\tNsecToTimeval(TimespecToNsec(ts[1])),\n\t}\n\treturn utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))\n}\n\n// End UtimesNano\n\n// Begin UtimesNanoAt\n\n//go:nosplit\nfunc get_UtimesNanoAtAddr() *(func(dirfd int, path string, ts []Timespec, flags int) (err error))\n\nvar UtimesNanoAt = enter_UtimesNanoAt\n\nfunc enter_UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) (err error) {\n\tfuncref := get_UtimesNanoAtAddr()\n\tif validUtimensat() {\n\t\t*funcref = utimesNanoAtImpl\n\t} else {\n\t\t*funcref = legacyUtimesNanoAt\n\t}\n\treturn (*funcref)(dirfd, path, ts, flags)\n}\n\nfunc utimesNanoAtImpl(dirfd int, path string, ts []Timespec, flags int) (err error) {\n\tif ts == nil {\n\t\treturn utimensat(dirfd, path, nil, flags)\n\t}\n\tif len(ts) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags)\n}\n\nfunc legacyUtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) (err error) {\n\tif path[0] != '/' {\n\t\tdirPath, err := ZosFdToPath(dirfd)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpath = dirPath + \"/\" + path\n\t}\n\tif flags == AT_SYMLINK_NOFOLLOW {\n\t\tif len(ts) != 2 {\n\t\t\treturn EINVAL\n\t\t}\n\n\t\tif ts[0].Nsec >= 5e8 {\n\t\t\tts[0].Sec++\n\t\t}\n\t\tts[0].Nsec = 0\n\t\tif ts[1].Nsec >= 5e8 {\n\t\t\tts[1].Sec++\n\t\t}\n\t\tts[1].Nsec = 0\n\n\t\t// Not as efficient as it could be because Timespec and\n\t\t// Timeval have different types in the different OSes\n\t\ttv := []Timeval{\n\t\t\tNsecToTimeval(TimespecToNsec(ts[0])),\n\t\t\tNsecToTimeval(TimespecToNsec(ts[1])),\n\t\t}\n\t\treturn Lutimes(path, tv)\n\t}\n\treturn UtimesNano(path, ts)\n}\n\n// End UtimesNanoAt\n\nfunc Getsockname(fd int) (sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tif err = getsockname(fd, &rsa, &len); err != nil {\n\t\treturn\n\t}\n\t// TODO(neeilan) : Remove this 0 ( added to get sys/unix compiling on z/OS )\n\treturn anyToSockaddr(0, &rsa)\n}\n\nconst (\n\t// identifier constants\n\tnwmHeaderIdentifier    = 0xd5e6d4c8\n\tnwmFilterIdentifier    = 0xd5e6d4c6\n\tnwmTCPConnIdentifier   = 0xd5e6d4c3\n\tnwmRecHeaderIdentifier = 0xd5e6d4d9\n\tnwmIPStatsIdentifier   = 0xd5e6d4c9d7e2e340\n\tnwmIPGStatsIdentifier  = 0xd5e6d4c9d7c7e2e3\n\tnwmTCPStatsIdentifier  = 0xd5e6d4e3c3d7e2e3\n\tnwmUDPStatsIdentifier  = 0xd5e6d4e4c4d7e2e3\n\tnwmICMPGStatsEntry     = 0xd5e6d4c9c3d4d7c7\n\tnwmICMPTStatsEntry     = 0xd5e6d4c9c3d4d7e3\n\n\t// nwmHeader constants\n\tnwmVersion1   = 1\n\tnwmVersion2   = 2\n\tnwmCurrentVer = 2\n\n\tnwmTCPConnType     = 1\n\tnwmGlobalStatsType = 14\n\n\t// nwmFilter constants\n\tnwmFilterLclAddrMask = 0x20000000 // Local address\n\tnwmFilterSrcAddrMask = 0x20000000 // Source address\n\tnwmFilterLclPortMask = 0x10000000 // Local port\n\tnwmFilterSrcPortMask = 0x10000000 // Source port\n\n\t// nwmConnEntry constants\n\tnwmTCPStateClosed   = 1\n\tnwmTCPStateListen   = 2\n\tnwmTCPStateSynSent  = 3\n\tnwmTCPStateSynRcvd  = 4\n\tnwmTCPStateEstab    = 5\n\tnwmTCPStateFinWait1 = 6\n\tnwmTCPStateFinWait2 = 7\n\tnwmTCPStateClosWait = 8\n\tnwmTCPStateLastAck  = 9\n\tnwmTCPStateClosing  = 10\n\tnwmTCPStateTimeWait = 11\n\tnwmTCPStateDeletTCB = 12\n\n\t// Existing constants on linux\n\tBPF_TCP_CLOSE        = 1\n\tBPF_TCP_LISTEN       = 2\n\tBPF_TCP_SYN_SENT     = 3\n\tBPF_TCP_SYN_RECV     = 4\n\tBPF_TCP_ESTABLISHED  = 5\n\tBPF_TCP_FIN_WAIT1    = 6\n\tBPF_TCP_FIN_WAIT2    = 7\n\tBPF_TCP_CLOSE_WAIT   = 8\n\tBPF_TCP_LAST_ACK     = 9\n\tBPF_TCP_CLOSING      = 10\n\tBPF_TCP_TIME_WAIT    = 11\n\tBPF_TCP_NEW_SYN_RECV = -1\n\tBPF_TCP_MAX_STATES   = -2\n)\n\ntype nwmTriplet struct {\n\toffset uint32\n\tlength uint32\n\tnumber uint32\n}\n\ntype nwmQuadruplet struct {\n\toffset uint32\n\tlength uint32\n\tnumber uint32\n\tmatch  uint32\n}\n\ntype nwmHeader struct {\n\tident       uint32\n\tlength      uint32\n\tversion     uint16\n\tnwmType     uint16\n\tbytesNeeded uint32\n\toptions     uint32\n\t_           [16]byte\n\tinputDesc   nwmTriplet\n\toutputDesc  nwmQuadruplet\n}\n\ntype nwmFilter struct {\n\tident         uint32\n\tflags         uint32\n\tresourceName  [8]byte\n\tresourceId    uint32\n\tlistenerId    uint32\n\tlocal         [28]byte // union of sockaddr4 and sockaddr6\n\tremote        [28]byte // union of sockaddr4 and sockaddr6\n\t_             uint16\n\t_             uint16\n\tasid          uint16\n\t_             [2]byte\n\ttnLuName      [8]byte\n\ttnMonGrp      uint32\n\ttnAppl        [8]byte\n\tapplData      [40]byte\n\tnInterface    [16]byte\n\tdVipa         [16]byte\n\tdVipaPfx      uint16\n\tdVipaPort     uint16\n\tdVipaFamily   byte\n\t_             [3]byte\n\tdestXCF       [16]byte\n\tdestXCFPfx    uint16\n\tdestXCFFamily byte\n\t_             [1]byte\n\ttargIP        [16]byte\n\ttargIPPfx     uint16\n\ttargIPFamily  byte\n\t_             [1]byte\n\t_             [20]byte\n}\n\ntype nwmRecHeader struct {\n\tident  uint32\n\tlength uint32\n\tnumber byte\n\t_      [3]byte\n}\n\ntype nwmTCPStatsEntry struct {\n\tident             uint64\n\tcurrEstab         uint32\n\tactiveOpened      uint32\n\tpassiveOpened     uint32\n\tconnClosed        uint32\n\testabResets       uint32\n\tattemptFails      uint32\n\tpassiveDrops      uint32\n\ttimeWaitReused    uint32\n\tinSegs            uint64\n\tpredictAck        uint32\n\tpredictData       uint32\n\tinDupAck          uint32\n\tinBadSum          uint32\n\tinBadLen          uint32\n\tinShort           uint32\n\tinDiscOldTime     uint32\n\tinAllBeforeWin    uint32\n\tinSomeBeforeWin   uint32\n\tinAllAfterWin     uint32\n\tinSomeAfterWin    uint32\n\tinOutOfOrder      uint32\n\tinAfterClose      uint32\n\tinWinProbes       uint32\n\tinWinUpdates      uint32\n\toutWinUpdates     uint32\n\toutSegs           uint64\n\toutDelayAcks      uint32\n\toutRsts           uint32\n\tretransSegs       uint32\n\tretransTimeouts   uint32\n\tretransDrops      uint32\n\tpmtuRetrans       uint32\n\tpmtuErrors        uint32\n\toutWinProbes      uint32\n\tprobeDrops        uint32\n\tkeepAliveProbes   uint32\n\tkeepAliveDrops    uint32\n\tfinwait2Drops     uint32\n\tacceptCount       uint64\n\tinBulkQSegs       uint64\n\tinDiscards        uint64\n\tconnFloods        uint32\n\tconnStalls        uint32\n\tcfgEphemDef       uint16\n\tephemInUse        uint16\n\tephemHiWater      uint16\n\tflags             byte\n\t_                 [1]byte\n\tephemExhaust      uint32\n\tsmcRCurrEstabLnks uint32\n\tsmcRLnkActTimeOut uint32\n\tsmcRActLnkOpened  uint32\n\tsmcRPasLnkOpened  uint32\n\tsmcRLnksClosed    uint32\n\tsmcRCurrEstab     uint32\n\tsmcRActiveOpened  uint32\n\tsmcRPassiveOpened uint32\n\tsmcRConnClosed    uint32\n\tsmcRInSegs        uint64\n\tsmcROutSegs       uint64\n\tsmcRInRsts        uint32\n\tsmcROutRsts       uint32\n\tsmcDCurrEstabLnks uint32\n\tsmcDActLnkOpened  uint32\n\tsmcDPasLnkOpened  uint32\n\tsmcDLnksClosed    uint32\n\tsmcDCurrEstab     uint32\n\tsmcDActiveOpened  uint32\n\tsmcDPassiveOpened uint32\n\tsmcDConnClosed    uint32\n\tsmcDInSegs        uint64\n\tsmcDOutSegs       uint64\n\tsmcDInRsts        uint32\n\tsmcDOutRsts       uint32\n}\n\ntype nwmConnEntry struct {\n\tident             uint32\n\tlocal             [28]byte // union of sockaddr4 and sockaddr6\n\tremote            [28]byte // union of sockaddr4 and sockaddr6\n\tstartTime         [8]byte  // uint64, changed to prevent padding from being inserted\n\tlastActivity      [8]byte  // uint64\n\tbytesIn           [8]byte  // uint64\n\tbytesOut          [8]byte  // uint64\n\tinSegs            [8]byte  // uint64\n\toutSegs           [8]byte  // uint64\n\tstate             uint16\n\tactiveOpen        byte\n\tflag01            byte\n\toutBuffered       uint32\n\tinBuffered        uint32\n\tmaxSndWnd         uint32\n\treXmtCount        uint32\n\tcongestionWnd     uint32\n\tssThresh          uint32\n\troundTripTime     uint32\n\troundTripVar      uint32\n\tsendMSS           uint32\n\tsndWnd            uint32\n\trcvBufSize        uint32\n\tsndBufSize        uint32\n\toutOfOrderCount   uint32\n\tlcl0WindowCount   uint32\n\trmt0WindowCount   uint32\n\tdupacks           uint32\n\tflag02            byte\n\tsockOpt6Cont      byte\n\tasid              uint16\n\tresourceName      [8]byte\n\tresourceId        uint32\n\tsubtask           uint32\n\tsockOpt           byte\n\tsockOpt6          byte\n\tclusterConnFlag   byte\n\tproto             byte\n\ttargetAppl        [8]byte\n\tluName            [8]byte\n\tclientUserId      [8]byte\n\tlogMode           [8]byte\n\ttimeStamp         uint32\n\ttimeStampAge      uint32\n\tserverResourceId  uint32\n\tintfName          [16]byte\n\tttlsStatPol       byte\n\tttlsStatConn      byte\n\tttlsSSLProt       uint16\n\tttlsNegCiph       [2]byte\n\tttlsSecType       byte\n\tttlsFIPS140Mode   byte\n\tttlsUserID        [8]byte\n\tapplData          [40]byte\n\tinOldestTime      [8]byte // uint64\n\toutOldestTime     [8]byte // uint64\n\ttcpTrustedPartner byte\n\t_                 [3]byte\n\tbulkDataIntfName  [16]byte\n\tttlsNegCiph4      [4]byte\n\tsmcReason         uint32\n\tlclSMCLinkId      uint32\n\trmtSMCLinkId      uint32\n\tsmcStatus         byte\n\tsmcFlags          byte\n\t_                 [2]byte\n\trcvWnd            uint32\n\tlclSMCBufSz       uint32\n\trmtSMCBufSz       uint32\n\tttlsSessID        [32]byte\n\tttlsSessIDLen     int16\n\t_                 [1]byte\n\tsmcDStatus        byte\n\tsmcDReason        uint32\n}\n\nvar svcNameTable [][]byte = [][]byte{\n\t[]byte(\"\\xc5\\xe9\\xc2\\xd5\\xd4\\xc9\\xc6\\xf4\"), // svc_EZBNMIF4\n}\n\nconst (\n\tsvc_EZBNMIF4 = 0\n)\n\nfunc GetsockoptTCPInfo(fd, level, opt int) (*TCPInfo, error) {\n\tjobname := []byte(\"\\x5c\\x40\\x40\\x40\\x40\\x40\\x40\\x40\") // \"*\"\n\tresponseBuffer := [4096]byte{0}\n\tvar bufferAlet, reasonCode uint32 = 0, 0\n\tvar bufferLen, returnValue, returnCode int32 = 4096, 0, 0\n\n\tdsa := [18]uint64{0}\n\tvar argv [7]unsafe.Pointer\n\targv[0] = unsafe.Pointer(&jobname[0])\n\targv[1] = unsafe.Pointer(&responseBuffer[0])\n\targv[2] = unsafe.Pointer(&bufferAlet)\n\targv[3] = unsafe.Pointer(&bufferLen)\n\targv[4] = unsafe.Pointer(&returnValue)\n\targv[5] = unsafe.Pointer(&returnCode)\n\targv[6] = unsafe.Pointer(&reasonCode)\n\n\trequest := (*struct {\n\t\theader nwmHeader\n\t\tfilter nwmFilter\n\t})(unsafe.Pointer(&responseBuffer[0]))\n\n\tEZBNMIF4 := svcLoad(&svcNameTable[svc_EZBNMIF4][0])\n\tif EZBNMIF4 == nil {\n\t\treturn nil, errnoErr(EINVAL)\n\t}\n\n\t// GetGlobalStats EZBNMIF4 call\n\trequest.header.ident = nwmHeaderIdentifier\n\trequest.header.length = uint32(unsafe.Sizeof(request.header))\n\trequest.header.version = nwmCurrentVer\n\trequest.header.nwmType = nwmGlobalStatsType\n\trequest.header.options = 0x80000000\n\n\tsvcCall(EZBNMIF4, &argv[0], &dsa[0])\n\n\t// outputDesc field is filled by EZBNMIF4 on success\n\tif returnCode != 0 || request.header.outputDesc.offset == 0 {\n\t\treturn nil, errnoErr(EINVAL)\n\t}\n\n\t// Check that EZBNMIF4 returned a nwmRecHeader\n\trecHeader := (*nwmRecHeader)(unsafe.Pointer(&responseBuffer[request.header.outputDesc.offset]))\n\tif recHeader.ident != nwmRecHeaderIdentifier {\n\t\treturn nil, errnoErr(EINVAL)\n\t}\n\n\t// Parse nwmTriplets to get offsets of returned entries\n\tvar sections []*uint64\n\tvar sectionDesc *nwmTriplet = (*nwmTriplet)(unsafe.Pointer(&responseBuffer[0]))\n\tfor i := uint32(0); i < uint32(recHeader.number); i++ {\n\t\toffset := request.header.outputDesc.offset + uint32(unsafe.Sizeof(*recHeader)) + i*uint32(unsafe.Sizeof(*sectionDesc))\n\t\tsectionDesc = (*nwmTriplet)(unsafe.Pointer(&responseBuffer[offset]))\n\t\tfor j := uint32(0); j < sectionDesc.number; j++ {\n\t\t\toffset = request.header.outputDesc.offset + sectionDesc.offset + j*sectionDesc.length\n\t\t\tsections = append(sections, (*uint64)(unsafe.Pointer(&responseBuffer[offset])))\n\t\t}\n\t}\n\n\t// Find nwmTCPStatsEntry in returned entries\n\tvar tcpStats *nwmTCPStatsEntry = nil\n\tfor _, ptr := range sections {\n\t\tswitch *ptr {\n\t\tcase nwmTCPStatsIdentifier:\n\t\t\tif tcpStats != nil {\n\t\t\t\treturn nil, errnoErr(EINVAL)\n\t\t\t}\n\t\t\ttcpStats = (*nwmTCPStatsEntry)(unsafe.Pointer(ptr))\n\t\tcase nwmIPStatsIdentifier:\n\t\tcase nwmIPGStatsIdentifier:\n\t\tcase nwmUDPStatsIdentifier:\n\t\tcase nwmICMPGStatsEntry:\n\t\tcase nwmICMPTStatsEntry:\n\t\tdefault:\n\t\t\treturn nil, errnoErr(EINVAL)\n\t\t}\n\t}\n\tif tcpStats == nil {\n\t\treturn nil, errnoErr(EINVAL)\n\t}\n\n\t// GetConnectionDetail EZBNMIF4 call\n\tresponseBuffer = [4096]byte{0}\n\tdsa = [18]uint64{0}\n\tbufferAlet, reasonCode = 0, 0\n\tbufferLen, returnValue, returnCode = 4096, 0, 0\n\tnameptr := (*uint32)(unsafe.Pointer(uintptr(0x21c))) // Get jobname of current process\n\tnameptr = (*uint32)(unsafe.Pointer(uintptr(*nameptr + 12)))\n\targv[0] = unsafe.Pointer(uintptr(*nameptr))\n\n\trequest.header.ident = nwmHeaderIdentifier\n\trequest.header.length = uint32(unsafe.Sizeof(request.header))\n\trequest.header.version = nwmCurrentVer\n\trequest.header.nwmType = nwmTCPConnType\n\trequest.header.options = 0x80000000\n\n\trequest.filter.ident = nwmFilterIdentifier\n\n\tvar localSockaddr RawSockaddrAny\n\tsocklen := _Socklen(SizeofSockaddrAny)\n\terr := getsockname(fd, &localSockaddr, &socklen)\n\tif err != nil {\n\t\treturn nil, errnoErr(EINVAL)\n\t}\n\tif localSockaddr.Addr.Family == AF_INET {\n\t\tlocalSockaddr := (*RawSockaddrInet4)(unsafe.Pointer(&localSockaddr.Addr))\n\t\tlocalSockFilter := (*RawSockaddrInet4)(unsafe.Pointer(&request.filter.local[0]))\n\t\tlocalSockFilter.Family = AF_INET\n\t\tvar i int\n\t\tfor i = 0; i < 4; i++ {\n\t\t\tif localSockaddr.Addr[i] != 0 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif i != 4 {\n\t\t\trequest.filter.flags |= nwmFilterLclAddrMask\n\t\t\tfor i = 0; i < 4; i++ {\n\t\t\t\tlocalSockFilter.Addr[i] = localSockaddr.Addr[i]\n\t\t\t}\n\t\t}\n\t\tif localSockaddr.Port != 0 {\n\t\t\trequest.filter.flags |= nwmFilterLclPortMask\n\t\t\tlocalSockFilter.Port = localSockaddr.Port\n\t\t}\n\t} else if localSockaddr.Addr.Family == AF_INET6 {\n\t\tlocalSockaddr := (*RawSockaddrInet6)(unsafe.Pointer(&localSockaddr.Addr))\n\t\tlocalSockFilter := (*RawSockaddrInet6)(unsafe.Pointer(&request.filter.local[0]))\n\t\tlocalSockFilter.Family = AF_INET6\n\t\tvar i int\n\t\tfor i = 0; i < 16; i++ {\n\t\t\tif localSockaddr.Addr[i] != 0 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif i != 16 {\n\t\t\trequest.filter.flags |= nwmFilterLclAddrMask\n\t\t\tfor i = 0; i < 16; i++ {\n\t\t\t\tlocalSockFilter.Addr[i] = localSockaddr.Addr[i]\n\t\t\t}\n\t\t}\n\t\tif localSockaddr.Port != 0 {\n\t\t\trequest.filter.flags |= nwmFilterLclPortMask\n\t\t\tlocalSockFilter.Port = localSockaddr.Port\n\t\t}\n\t}\n\n\tsvcCall(EZBNMIF4, &argv[0], &dsa[0])\n\n\t// outputDesc field is filled by EZBNMIF4 on success\n\tif returnCode != 0 || request.header.outputDesc.offset == 0 {\n\t\treturn nil, errnoErr(EINVAL)\n\t}\n\n\t// Check that EZBNMIF4 returned a nwmConnEntry\n\tconn := (*nwmConnEntry)(unsafe.Pointer(&responseBuffer[request.header.outputDesc.offset]))\n\tif conn.ident != nwmTCPConnIdentifier {\n\t\treturn nil, errnoErr(EINVAL)\n\t}\n\n\t// Copy data from the returned data structures into tcpInfo\n\t// Stats from nwmConnEntry are specific to that connection.\n\t// Stats from nwmTCPStatsEntry are global (to the interface?)\n\t// Fields may not be an exact match. Some fields have no equivalent.\n\tvar tcpinfo TCPInfo\n\ttcpinfo.State = uint8(conn.state)\n\ttcpinfo.Ca_state = 0 // dummy\n\ttcpinfo.Retransmits = uint8(tcpStats.retransSegs)\n\ttcpinfo.Probes = uint8(tcpStats.outWinProbes)\n\ttcpinfo.Backoff = 0 // dummy\n\ttcpinfo.Options = 0 // dummy\n\ttcpinfo.Rto = tcpStats.retransTimeouts\n\ttcpinfo.Ato = tcpStats.outDelayAcks\n\ttcpinfo.Snd_mss = conn.sendMSS\n\ttcpinfo.Rcv_mss = conn.sendMSS // dummy\n\ttcpinfo.Unacked = 0            // dummy\n\ttcpinfo.Sacked = 0             // dummy\n\ttcpinfo.Lost = 0               // dummy\n\ttcpinfo.Retrans = conn.reXmtCount\n\ttcpinfo.Fackets = 0 // dummy\n\ttcpinfo.Last_data_sent = uint32(*(*uint64)(unsafe.Pointer(&conn.lastActivity[0])))\n\ttcpinfo.Last_ack_sent = uint32(*(*uint64)(unsafe.Pointer(&conn.outOldestTime[0])))\n\ttcpinfo.Last_data_recv = uint32(*(*uint64)(unsafe.Pointer(&conn.inOldestTime[0])))\n\ttcpinfo.Last_ack_recv = uint32(*(*uint64)(unsafe.Pointer(&conn.inOldestTime[0])))\n\ttcpinfo.Pmtu = conn.sendMSS // dummy, NWMIfRouteMtu is a candidate\n\ttcpinfo.Rcv_ssthresh = conn.ssThresh\n\ttcpinfo.Rtt = conn.roundTripTime\n\ttcpinfo.Rttvar = conn.roundTripVar\n\ttcpinfo.Snd_ssthresh = conn.ssThresh // dummy\n\ttcpinfo.Snd_cwnd = conn.congestionWnd\n\ttcpinfo.Advmss = conn.sendMSS        // dummy\n\ttcpinfo.Reordering = 0               // dummy\n\ttcpinfo.Rcv_rtt = conn.roundTripTime // dummy\n\ttcpinfo.Rcv_space = conn.sendMSS     // dummy\n\ttcpinfo.Total_retrans = conn.reXmtCount\n\n\tsvcUnload(&svcNameTable[svc_EZBNMIF4][0], EZBNMIF4)\n\n\treturn &tcpinfo, nil\n}\n\n// GetsockoptString returns the string value of the socket option opt for the\n// socket associated with fd at the given socket level.\nfunc GetsockoptString(fd, level, opt int) (string, error) {\n\tbuf := make([]byte, 256)\n\tvallen := _Socklen(len(buf))\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\treturn ByteSliceToString(buf[:vallen]), nil\n}\n\nfunc Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) {\n\tvar msg Msghdr\n\tvar rsa RawSockaddrAny\n\tmsg.Name = (*byte)(unsafe.Pointer(&rsa))\n\tmsg.Namelen = SizeofSockaddrAny\n\tvar iov Iovec\n\tif len(p) > 0 {\n\t\tiov.Base = (*byte)(unsafe.Pointer(&p[0]))\n\t\tiov.SetLen(len(p))\n\t}\n\tvar dummy byte\n\tif len(oob) > 0 {\n\t\t// receive at least one normal byte\n\t\tif len(p) == 0 {\n\t\t\tiov.Base = &dummy\n\t\t\tiov.SetLen(1)\n\t\t}\n\t\tmsg.Control = (*byte)(unsafe.Pointer(&oob[0]))\n\t\tmsg.SetControllen(len(oob))\n\t}\n\tmsg.Iov = &iov\n\tmsg.Iovlen = 1\n\tif n, err = recvmsg(fd, &msg, flags); err != nil {\n\t\treturn\n\t}\n\toobn = int(msg.Controllen)\n\trecvflags = int(msg.Flags)\n\t// source address is only specified if the socket is unconnected\n\tif rsa.Addr.Family != AF_UNSPEC {\n\t\t// TODO(neeilan): Remove 0 arg added to get this compiling on z/OS\n\t\tfrom, err = anyToSockaddr(0, &rsa)\n\t}\n\treturn\n}\n\nfunc Sendmsg(fd int, p, oob []byte, to Sockaddr, flags int) (err error) {\n\t_, err = SendmsgN(fd, p, oob, to, flags)\n\treturn\n}\n\nfunc SendmsgN(fd int, p, oob []byte, to Sockaddr, flags int) (n int, err error) {\n\tvar ptr unsafe.Pointer\n\tvar salen _Socklen\n\tif to != nil {\n\t\tvar err error\n\t\tptr, salen, err = to.sockaddr()\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t}\n\tvar msg Msghdr\n\tmsg.Name = (*byte)(unsafe.Pointer(ptr))\n\tmsg.Namelen = int32(salen)\n\tvar iov Iovec\n\tif len(p) > 0 {\n\t\tiov.Base = (*byte)(unsafe.Pointer(&p[0]))\n\t\tiov.SetLen(len(p))\n\t}\n\tvar dummy byte\n\tif len(oob) > 0 {\n\t\t// send at least one normal byte\n\t\tif len(p) == 0 {\n\t\t\tiov.Base = &dummy\n\t\t\tiov.SetLen(1)\n\t\t}\n\t\tmsg.Control = (*byte)(unsafe.Pointer(&oob[0]))\n\t\tmsg.SetControllen(len(oob))\n\t}\n\tmsg.Iov = &iov\n\tmsg.Iovlen = 1\n\tif n, err = sendmsg(fd, &msg, flags); err != nil {\n\t\treturn 0, err\n\t}\n\tif len(oob) > 0 && len(p) == 0 {\n\t\tn = 0\n\t}\n\treturn n, nil\n}\n\nfunc Opendir(name string) (uintptr, error) {\n\tp, err := BytePtrFromString(name)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\terr = nil\n\truntime.EnterSyscall()\n\tdir, e2, e1 := CallLeFuncWithPtrReturn(GetZosLibVec()+SYS___OPENDIR_A<<4, uintptr(unsafe.Pointer(p)))\n\truntime.ExitSyscall()\n\truntime.KeepAlive(unsafe.Pointer(p))\n\tif dir == 0 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn dir, err\n}\n\n// clearsyscall.Errno resets the errno value to 0.\nfunc clearErrno()\n\nfunc Closedir(dir uintptr) error {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_CLOSEDIR<<4, dir)\n\truntime.ExitSyscall()\n\tif r0 != 0 {\n\t\treturn errnoErr2(e1, e2)\n\t}\n\treturn nil\n}\n\nfunc Seekdir(dir uintptr, pos int) {\n\truntime.EnterSyscall()\n\tCallLeFuncWithErr(GetZosLibVec()+SYS_SEEKDIR<<4, dir, uintptr(pos))\n\truntime.ExitSyscall()\n}\n\nfunc Telldir(dir uintptr) (int, error) {\n\tp, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_TELLDIR<<4, dir)\n\tpos := int(p)\n\tif int64(p) == -1 {\n\t\treturn pos, errnoErr2(e1, e2)\n\t}\n\treturn pos, nil\n}\n\n// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command.\nfunc FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error {\n\t// struct flock is packed on z/OS. We can't emulate that in Go so\n\t// instead we pack it here.\n\tvar flock [24]byte\n\t*(*int16)(unsafe.Pointer(&flock[0])) = lk.Type\n\t*(*int16)(unsafe.Pointer(&flock[2])) = lk.Whence\n\t*(*int64)(unsafe.Pointer(&flock[4])) = lk.Start\n\t*(*int64)(unsafe.Pointer(&flock[12])) = lk.Len\n\t*(*int32)(unsafe.Pointer(&flock[20])) = lk.Pid\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FCNTL<<4, fd, uintptr(cmd), uintptr(unsafe.Pointer(&flock)))\n\truntime.ExitSyscall()\n\tlk.Type = *(*int16)(unsafe.Pointer(&flock[0]))\n\tlk.Whence = *(*int16)(unsafe.Pointer(&flock[2]))\n\tlk.Start = *(*int64)(unsafe.Pointer(&flock[4]))\n\tlk.Len = *(*int64)(unsafe.Pointer(&flock[12]))\n\tlk.Pid = *(*int32)(unsafe.Pointer(&flock[20]))\n\tif r0 == 0 {\n\t\treturn nil\n\t}\n\treturn errnoErr2(e1, e2)\n}\n\nfunc impl_Flock(fd int, how int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FLOCK<<4, uintptr(fd), uintptr(how))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_FlockAddr() *(func(fd int, how int) (err error))\n\nvar Flock = enter_Flock\n\nfunc validFlock(fp uintptr) bool {\n\tif funcptrtest(GetZosLibVec()+SYS_FLOCK<<4, \"\") == 0 {\n\t\tif name, err := getLeFuncName(GetZosLibVec() + SYS_FLOCK<<4); err == nil {\n\t\t\treturn name == \"flock\"\n\t\t}\n\t}\n\treturn false\n}\n\nfunc enter_Flock(fd int, how int) (err error) {\n\tfuncref := get_FlockAddr()\n\tif validFlock(GetZosLibVec() + SYS_FLOCK<<4) {\n\t\t*funcref = impl_Flock\n\t} else {\n\t\t*funcref = legacyFlock\n\t}\n\treturn (*funcref)(fd, how)\n}\n\nfunc legacyFlock(fd int, how int) error {\n\n\tvar flock_type int16\n\tvar fcntl_cmd int\n\n\tswitch how {\n\tcase LOCK_SH | LOCK_NB:\n\t\tflock_type = F_RDLCK\n\t\tfcntl_cmd = F_SETLK\n\tcase LOCK_EX | LOCK_NB:\n\t\tflock_type = F_WRLCK\n\t\tfcntl_cmd = F_SETLK\n\tcase LOCK_EX:\n\t\tflock_type = F_WRLCK\n\t\tfcntl_cmd = F_SETLKW\n\tcase LOCK_UN:\n\t\tflock_type = F_UNLCK\n\t\tfcntl_cmd = F_SETLKW\n\tdefault:\n\t}\n\n\tflock := Flock_t{\n\t\tType:   int16(flock_type),\n\t\tWhence: int16(0),\n\t\tStart:  int64(0),\n\t\tLen:    int64(0),\n\t\tPid:    int32(Getppid()),\n\t}\n\n\terr := FcntlFlock(uintptr(fd), fcntl_cmd, &flock)\n\treturn err\n}\n\nfunc Mlock(b []byte) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MLOCKALL<<4, _BPX_NONSWAP)\n\truntime.ExitSyscall()\n\tif r0 != 0 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\nfunc Mlock2(b []byte, flags int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MLOCKALL<<4, _BPX_NONSWAP)\n\truntime.ExitSyscall()\n\tif r0 != 0 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\nfunc Mlockall(flags int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MLOCKALL<<4, _BPX_NONSWAP)\n\truntime.ExitSyscall()\n\tif r0 != 0 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\nfunc Munlock(b []byte) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MLOCKALL<<4, _BPX_SWAP)\n\truntime.ExitSyscall()\n\tif r0 != 0 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\nfunc Munlockall() (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MLOCKALL<<4, _BPX_SWAP)\n\truntime.ExitSyscall()\n\tif r0 != 0 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\nfunc ClockGettime(clockid int32, ts *Timespec) error {\n\n\tvar ticks_per_sec uint32 = 100 //TODO(kenan): value is currently hardcoded; need sysconf() call otherwise\n\tvar nsec_per_sec int64 = 1000000000\n\n\tif ts == nil {\n\t\treturn EFAULT\n\t}\n\tif clockid == CLOCK_REALTIME || clockid == CLOCK_MONOTONIC {\n\t\tvar nanotime int64 = runtime.Nanotime1()\n\t\tts.Sec = nanotime / nsec_per_sec\n\t\tts.Nsec = nanotime % nsec_per_sec\n\t} else if clockid == CLOCK_PROCESS_CPUTIME_ID || clockid == CLOCK_THREAD_CPUTIME_ID {\n\t\tvar tm Tms\n\t\t_, err := Times(&tm)\n\t\tif err != nil {\n\t\t\treturn EFAULT\n\t\t}\n\t\tts.Sec = int64(tm.Utime / ticks_per_sec)\n\t\tts.Nsec = int64(tm.Utime) * nsec_per_sec / int64(ticks_per_sec)\n\t} else {\n\t\treturn EINVAL\n\t}\n\treturn nil\n}\n\n// Chtag\n\n//go:nosplit\nfunc get_ChtagAddr() *(func(path string, ccsid uint64, textbit uint64) error)\n\nvar Chtag = enter_Chtag\n\nfunc enter_Chtag(path string, ccsid uint64, textbit uint64) error {\n\tfuncref := get_ChtagAddr()\n\tif validSetxattr() {\n\t\t*funcref = impl_Chtag\n\t} else {\n\t\t*funcref = legacy_Chtag\n\t}\n\treturn (*funcref)(path, ccsid, textbit)\n}\n\nfunc legacy_Chtag(path string, ccsid uint64, textbit uint64) error {\n\ttag := ccsid<<16 | textbit<<15\n\tvar tag_buff [8]byte\n\tDecodeData(tag_buff[:], 8, tag)\n\treturn Setxattr(path, \"filetag\", tag_buff[:], XATTR_REPLACE)\n}\n\nfunc impl_Chtag(path string, ccsid uint64, textbit uint64) error {\n\ttag := ccsid<<16 | textbit<<15\n\tvar tag_buff [4]byte\n\tDecodeData(tag_buff[:], 4, tag)\n\treturn Setxattr(path, \"system.filetag\", tag_buff[:], XATTR_REPLACE)\n}\n\n// End of Chtag\n\n// Nanosleep\n\n//go:nosplit\nfunc get_NanosleepAddr() *(func(time *Timespec, leftover *Timespec) error)\n\nvar Nanosleep = enter_Nanosleep\n\nfunc enter_Nanosleep(time *Timespec, leftover *Timespec) error {\n\tfuncref := get_NanosleepAddr()\n\tif funcptrtest(GetZosLibVec()+SYS_NANOSLEEP<<4, \"\") == 0 {\n\t\t*funcref = impl_Nanosleep\n\t} else {\n\t\t*funcref = legacyNanosleep\n\t}\n\treturn (*funcref)(time, leftover)\n}\n\nfunc impl_Nanosleep(time *Timespec, leftover *Timespec) error {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_NANOSLEEP<<4, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\treturn errnoErr2(e1, e2)\n\t}\n\treturn nil\n}\n\nfunc legacyNanosleep(time *Timespec, leftover *Timespec) error {\n\tt0 := runtime.Nanotime1()\n\tvar secrem uint32\n\tvar nsecrem uint32\n\ttotal := time.Sec*1000000000 + time.Nsec\n\telapsed := runtime.Nanotime1() - t0\n\tvar rv int32\n\tvar rc int32\n\tvar err error\n\t// repeatedly sleep for 1 second until less than 1 second left\n\tfor total-elapsed > 1000000000 {\n\t\trv, rc, _ = BpxCondTimedWait(uint32(1), uint32(0), uint32(CW_CONDVAR), &secrem, &nsecrem)\n\t\tif rv != 0 && rc != 112 { // 112 is EAGAIN\n\t\t\tif leftover != nil && rc == 120 { // 120 is EINTR\n\t\t\t\tleftover.Sec = int64(secrem)\n\t\t\t\tleftover.Nsec = int64(nsecrem)\n\t\t\t}\n\t\t\terr = Errno(rc)\n\t\t\treturn err\n\t\t}\n\t\telapsed = runtime.Nanotime1() - t0\n\t}\n\t// sleep the remainder\n\tif total > elapsed {\n\t\trv, rc, _ = BpxCondTimedWait(uint32(0), uint32(total-elapsed), uint32(CW_CONDVAR), &secrem, &nsecrem)\n\t}\n\tif leftover != nil && rc == 120 {\n\t\tleftover.Sec = int64(secrem)\n\t\tleftover.Nsec = int64(nsecrem)\n\t}\n\tif rv != 0 && rc != 112 {\n\t\terr = Errno(rc)\n\t}\n\treturn err\n}\n\n// End of Nanosleep\n\nvar (\n\tStdin  = 0\n\tStdout = 1\n\tStderr = 2\n)\n\n// Do the interface allocations only once for common\n// Errno values.\nvar (\n\terrEAGAIN error = syscall.EAGAIN\n\terrEINVAL error = syscall.EINVAL\n\terrENOENT error = syscall.ENOENT\n)\n\nvar ZosTraceLevel int\nvar ZosTracefile *os.File\n\nvar (\n\tsignalNameMapOnce sync.Once\n\tsignalNameMap     map[string]syscall.Signal\n)\n\n// errnoErr returns common boxed Errno values, to prevent\n// allocations at runtime.\nfunc errnoErr(e Errno) error {\n\tswitch e {\n\tcase 0:\n\t\treturn nil\n\tcase EAGAIN:\n\t\treturn errEAGAIN\n\tcase EINVAL:\n\t\treturn errEINVAL\n\tcase ENOENT:\n\t\treturn errENOENT\n\t}\n\treturn e\n}\n\nvar reg *regexp.Regexp\n\n// enhanced with zos specific errno2\nfunc errnoErr2(e Errno, e2 uintptr) error {\n\tswitch e {\n\tcase 0:\n\t\treturn nil\n\tcase EAGAIN:\n\t\treturn errEAGAIN\n\t\t/*\n\t\t\tAllow the retrieval of errno2 for EINVAL and ENOENT on zos\n\t\t\t\tcase EINVAL:\n\t\t\t\t\treturn errEINVAL\n\t\t\t\tcase ENOENT:\n\t\t\t\t\treturn errENOENT\n\t\t*/\n\t}\n\tif ZosTraceLevel > 0 {\n\t\tvar name string\n\t\tif reg == nil {\n\t\t\treg = regexp.MustCompile(\"(^unix\\\\.[^/]+$|.*\\\\/unix\\\\.[^/]+$)\")\n\t\t}\n\t\ti := 1\n\t\tpc, file, line, ok := runtime.Caller(i)\n\t\tif ok {\n\t\t\tname = runtime.FuncForPC(pc).Name()\n\t\t}\n\t\tfor ok && reg.MatchString(runtime.FuncForPC(pc).Name()) {\n\t\t\ti += 1\n\t\t\tpc, file, line, ok = runtime.Caller(i)\n\t\t}\n\t\tif ok {\n\t\t\tif ZosTracefile == nil {\n\t\t\t\tZosConsolePrintf(\"From %s:%d\\n\", file, line)\n\t\t\t\tZosConsolePrintf(\"%s: %s (errno2=0x%x)\\n\", name, e.Error(), e2)\n\t\t\t} else {\n\t\t\t\tfmt.Fprintf(ZosTracefile, \"From %s:%d\\n\", file, line)\n\t\t\t\tfmt.Fprintf(ZosTracefile, \"%s: %s (errno2=0x%x)\\n\", name, e.Error(), e2)\n\t\t\t}\n\t\t} else {\n\t\t\tif ZosTracefile == nil {\n\t\t\t\tZosConsolePrintf(\"%s (errno2=0x%x)\\n\", e.Error(), e2)\n\t\t\t} else {\n\t\t\t\tfmt.Fprintf(ZosTracefile, \"%s (errno2=0x%x)\\n\", e.Error(), e2)\n\t\t\t}\n\t\t}\n\t}\n\treturn e\n}\n\n// ErrnoName returns the error name for error number e.\nfunc ErrnoName(e Errno) string {\n\ti := sort.Search(len(errorList), func(i int) bool {\n\t\treturn errorList[i].num >= e\n\t})\n\tif i < len(errorList) && errorList[i].num == e {\n\t\treturn errorList[i].name\n\t}\n\treturn \"\"\n}\n\n// SignalName returns the signal name for signal number s.\nfunc SignalName(s syscall.Signal) string {\n\ti := sort.Search(len(signalList), func(i int) bool {\n\t\treturn signalList[i].num >= s\n\t})\n\tif i < len(signalList) && signalList[i].num == s {\n\t\treturn signalList[i].name\n\t}\n\treturn \"\"\n}\n\n// SignalNum returns the syscall.Signal for signal named s,\n// or 0 if a signal with such name is not found.\n// The signal name should start with \"SIG\".\nfunc SignalNum(s string) syscall.Signal {\n\tsignalNameMapOnce.Do(func() {\n\t\tsignalNameMap = make(map[string]syscall.Signal, len(signalList))\n\t\tfor _, signal := range signalList {\n\t\t\tsignalNameMap[signal.name] = signal.num\n\t\t}\n\t})\n\treturn signalNameMap[s]\n}\n\n// clen returns the index of the first NULL byte in n or len(n) if n contains no NULL byte.\nfunc clen(n []byte) int {\n\ti := bytes.IndexByte(n, 0)\n\tif i == -1 {\n\t\ti = len(n)\n\t}\n\treturn i\n}\n\n// Mmap manager, for use by operating system-specific implementations.\n\ntype mmapper struct {\n\tsync.Mutex\n\tactive map[*byte][]byte // active mappings; key is last byte in mapping\n\tmmap   func(addr, length uintptr, prot, flags, fd int, offset int64) (uintptr, error)\n\tmunmap func(addr uintptr, length uintptr) error\n}\n\nfunc (m *mmapper) Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) {\n\tif length <= 0 {\n\t\treturn nil, EINVAL\n\t}\n\n\t// Set __MAP_64 by default\n\tflags |= __MAP_64\n\n\t// Map the requested memory.\n\taddr, errno := m.mmap(0, uintptr(length), prot, flags, fd, offset)\n\tif errno != nil {\n\t\treturn nil, errno\n\t}\n\n\t// Slice memory layout\n\tvar sl = struct {\n\t\taddr uintptr\n\t\tlen  int\n\t\tcap  int\n\t}{addr, length, length}\n\n\t// Use unsafe to turn sl into a []byte.\n\tb := *(*[]byte)(unsafe.Pointer(&sl))\n\n\t// Register mapping in m and return it.\n\tp := &b[cap(b)-1]\n\tm.Lock()\n\tdefer m.Unlock()\n\tm.active[p] = b\n\treturn b, nil\n}\n\nfunc (m *mmapper) Munmap(data []byte) (err error) {\n\tif len(data) == 0 || len(data) != cap(data) {\n\t\treturn EINVAL\n\t}\n\n\t// Find the base of the mapping.\n\tp := &data[cap(data)-1]\n\tm.Lock()\n\tdefer m.Unlock()\n\tb := m.active[p]\n\tif b == nil || &b[0] != &data[0] {\n\t\treturn EINVAL\n\t}\n\n\t// Unmap the memory and update m.\n\tif errno := m.munmap(uintptr(unsafe.Pointer(&b[0])), uintptr(len(b))); errno != nil {\n\t\treturn errno\n\t}\n\tdelete(m.active, p)\n\treturn nil\n}\n\nfunc Read(fd int, p []byte) (n int, err error) {\n\tn, err = read(fd, p)\n\tif raceenabled {\n\t\tif n > 0 {\n\t\t\traceWriteRange(unsafe.Pointer(&p[0]), n)\n\t\t}\n\t\tif err == nil {\n\t\t\traceAcquire(unsafe.Pointer(&ioSync))\n\t\t}\n\t}\n\treturn\n}\n\nfunc Write(fd int, p []byte) (n int, err error) {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\tn, err = write(fd, p)\n\tif raceenabled && n > 0 {\n\t\traceReadRange(unsafe.Pointer(&p[0]), n)\n\t}\n\treturn\n}\n\n// For testing: clients can set this flag to force\n// creation of IPv6 sockets to return EAFNOSUPPORT.\nvar SocketDisableIPv6 bool\n\n// Sockaddr represents a socket address.\ntype Sockaddr interface {\n\tsockaddr() (ptr unsafe.Pointer, len _Socklen, err error) // lowercase; only we can define Sockaddrs\n}\n\n// SockaddrInet4 implements the Sockaddr interface for AF_INET type sockets.\ntype SockaddrInet4 struct {\n\tPort int\n\tAddr [4]byte\n\traw  RawSockaddrInet4\n}\n\n// SockaddrInet6 implements the Sockaddr interface for AF_INET6 type sockets.\ntype SockaddrInet6 struct {\n\tPort   int\n\tZoneId uint32\n\tAddr   [16]byte\n\traw    RawSockaddrInet6\n}\n\n// SockaddrUnix implements the Sockaddr interface for AF_UNIX type sockets.\ntype SockaddrUnix struct {\n\tName string\n\traw  RawSockaddrUnix\n}\n\nfunc Bind(fd int, sa Sockaddr) (err error) {\n\tptr, n, err := sa.sockaddr()\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn bind(fd, ptr, n)\n}\n\nfunc Connect(fd int, sa Sockaddr) (err error) {\n\tptr, n, err := sa.sockaddr()\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn connect(fd, ptr, n)\n}\n\nfunc Getpeername(fd int) (sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tif err = getpeername(fd, &rsa, &len); err != nil {\n\t\treturn\n\t}\n\treturn anyToSockaddr(fd, &rsa)\n}\n\nfunc GetsockoptByte(fd, level, opt int) (value byte, err error) {\n\tvar n byte\n\tvallen := _Socklen(1)\n\terr = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen)\n\treturn n, err\n}\n\nfunc GetsockoptInt(fd, level, opt int) (value int, err error) {\n\tvar n int32\n\tvallen := _Socklen(4)\n\terr = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen)\n\treturn int(n), err\n}\n\nfunc GetsockoptInet4Addr(fd, level, opt int) (value [4]byte, err error) {\n\tvallen := _Socklen(4)\n\terr = getsockopt(fd, level, opt, unsafe.Pointer(&value[0]), &vallen)\n\treturn value, err\n}\n\nfunc GetsockoptIPMreq(fd, level, opt int) (*IPMreq, error) {\n\tvar value IPMreq\n\tvallen := _Socklen(SizeofIPMreq)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\nfunc GetsockoptIPv6Mreq(fd, level, opt int) (*IPv6Mreq, error) {\n\tvar value IPv6Mreq\n\tvallen := _Socklen(SizeofIPv6Mreq)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\nfunc GetsockoptIPv6MTUInfo(fd, level, opt int) (*IPv6MTUInfo, error) {\n\tvar value IPv6MTUInfo\n\tvallen := _Socklen(SizeofIPv6MTUInfo)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\nfunc GetsockoptICMPv6Filter(fd, level, opt int) (*ICMPv6Filter, error) {\n\tvar value ICMPv6Filter\n\tvallen := _Socklen(SizeofICMPv6Filter)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\nfunc GetsockoptLinger(fd, level, opt int) (*Linger, error) {\n\tvar linger Linger\n\tvallen := _Socklen(SizeofLinger)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&linger), &vallen)\n\treturn &linger, err\n}\n\nfunc GetsockoptTimeval(fd, level, opt int) (*Timeval, error) {\n\tvar tv Timeval\n\tvallen := _Socklen(unsafe.Sizeof(tv))\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&tv), &vallen)\n\treturn &tv, err\n}\n\nfunc GetsockoptUint64(fd, level, opt int) (value uint64, err error) {\n\tvar n uint64\n\tvallen := _Socklen(8)\n\terr = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen)\n\treturn n, err\n}\n\nfunc Recvfrom(fd int, p []byte, flags int) (n int, from Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tif n, err = recvfrom(fd, p, flags, &rsa, &len); err != nil {\n\t\treturn\n\t}\n\tif rsa.Addr.Family != AF_UNSPEC {\n\t\tfrom, err = anyToSockaddr(fd, &rsa)\n\t}\n\treturn\n}\n\nfunc Sendto(fd int, p []byte, flags int, to Sockaddr) (err error) {\n\tptr, n, err := to.sockaddr()\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn sendto(fd, p, flags, ptr, n)\n}\n\nfunc SetsockoptByte(fd, level, opt int, value byte) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(&value), 1)\n}\n\nfunc SetsockoptInt(fd, level, opt int, value int) (err error) {\n\tvar n = int32(value)\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(&n), 4)\n}\n\nfunc SetsockoptInet4Addr(fd, level, opt int, value [4]byte) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(&value[0]), 4)\n}\n\nfunc SetsockoptIPMreq(fd, level, opt int, mreq *IPMreq) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(mreq), SizeofIPMreq)\n}\n\nfunc SetsockoptIPv6Mreq(fd, level, opt int, mreq *IPv6Mreq) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(mreq), SizeofIPv6Mreq)\n}\n\nfunc SetsockoptICMPv6Filter(fd, level, opt int, filter *ICMPv6Filter) error {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(filter), SizeofICMPv6Filter)\n}\n\nfunc SetsockoptLinger(fd, level, opt int, l *Linger) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(l), SizeofLinger)\n}\n\nfunc SetsockoptString(fd, level, opt int, s string) (err error) {\n\tvar p unsafe.Pointer\n\tif len(s) > 0 {\n\t\tp = unsafe.Pointer(&[]byte(s)[0])\n\t}\n\treturn setsockopt(fd, level, opt, p, uintptr(len(s)))\n}\n\nfunc SetsockoptTimeval(fd, level, opt int, tv *Timeval) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(tv), unsafe.Sizeof(*tv))\n}\n\nfunc SetsockoptUint64(fd, level, opt int, value uint64) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(&value), 8)\n}\n\nfunc Socket(domain, typ, proto int) (fd int, err error) {\n\tif domain == AF_INET6 && SocketDisableIPv6 {\n\t\treturn -1, EAFNOSUPPORT\n\t}\n\tfd, err = socket(domain, typ, proto)\n\treturn\n}\n\nfunc Socketpair(domain, typ, proto int) (fd [2]int, err error) {\n\tvar fdx [2]int32\n\terr = socketpair(domain, typ, proto, &fdx)\n\tif err == nil {\n\t\tfd[0] = int(fdx[0])\n\t\tfd[1] = int(fdx[1])\n\t}\n\treturn\n}\n\nvar ioSync int64\n\nfunc CloseOnExec(fd int) { fcntl(fd, F_SETFD, FD_CLOEXEC) }\n\nfunc SetNonblock(fd int, nonblocking bool) (err error) {\n\tflag, err := fcntl(fd, F_GETFL, 0)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif nonblocking {\n\t\tflag |= O_NONBLOCK\n\t} else {\n\t\tflag &= ^O_NONBLOCK\n\t}\n\t_, err = fcntl(fd, F_SETFL, flag)\n\treturn err\n}\n\n// Exec calls execve(2), which replaces the calling executable in the process\n// tree. argv0 should be the full path to an executable (\"/bin/ls\") and the\n// executable name should also be the first argument in argv ([\"ls\", \"-l\"]).\n// envv are the environment variables that should be passed to the new\n// process ([\"USER=go\", \"PWD=/tmp\"]).\nfunc Exec(argv0 string, argv []string, envv []string) error {\n\treturn syscall.Exec(argv0, argv, envv)\n}\n\nfunc Getag(path string) (ccsid uint16, flag uint16, err error) {\n\tvar val [8]byte\n\tsz, err := Getxattr(path, \"ccsid\", val[:])\n\tif err != nil {\n\t\treturn\n\t}\n\tccsid = uint16(EncodeData(val[0:sz]))\n\tsz, err = Getxattr(path, \"flags\", val[:])\n\tif err != nil {\n\t\treturn\n\t}\n\tflag = uint16(EncodeData(val[0:sz]) >> 15)\n\treturn\n}\n\n// Mount begin\nfunc impl_Mount(source string, target string, fstype string, flags uintptr, data string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(source)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(target)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 *byte\n\t_p2, err = BytePtrFromString(fstype)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p3 *byte\n\t_p3, err = BytePtrFromString(data)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MOUNT1_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(_p3)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_MountAddr() *(func(source string, target string, fstype string, flags uintptr, data string) (err error))\n\nvar Mount = enter_Mount\n\nfunc enter_Mount(source string, target string, fstype string, flags uintptr, data string) (err error) {\n\tfuncref := get_MountAddr()\n\tif validMount() {\n\t\t*funcref = impl_Mount\n\t} else {\n\t\t*funcref = legacyMount\n\t}\n\treturn (*funcref)(source, target, fstype, flags, data)\n}\n\nfunc legacyMount(source string, target string, fstype string, flags uintptr, data string) (err error) {\n\tif needspace := 8 - len(fstype); needspace <= 0 {\n\t\tfstype = fstype[0:8]\n\t} else {\n\t\tfstype += \"        \"[0:needspace]\n\t}\n\treturn mount_LE(target, source, fstype, uint32(flags), int32(len(data)), data)\n}\n\nfunc validMount() bool {\n\tif funcptrtest(GetZosLibVec()+SYS___MOUNT1_A<<4, \"\") == 0 {\n\t\tif name, err := getLeFuncName(GetZosLibVec() + SYS___MOUNT1_A<<4); err == nil {\n\t\t\treturn name == \"__mount1_a\"\n\t\t}\n\t}\n\treturn false\n}\n\n// Mount end\n\n// Unmount begin\nfunc impl_Unmount(target string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(target)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___UMOUNT2_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_UnmountAddr() *(func(target string, flags int) (err error))\n\nvar Unmount = enter_Unmount\n\nfunc enter_Unmount(target string, flags int) (err error) {\n\tfuncref := get_UnmountAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___UMOUNT2_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Unmount\n\t} else {\n\t\t*funcref = legacyUnmount\n\t}\n\treturn (*funcref)(target, flags)\n}\n\nfunc legacyUnmount(name string, mtm int) (err error) {\n\t// mountpoint is always a full path and starts with a '/'\n\t// check if input string is not a mountpoint but a filesystem name\n\tif name[0] != '/' {\n\t\treturn unmount_LE(name, mtm)\n\t}\n\t// treat name as mountpoint\n\tb2s := func(arr []byte) string {\n\t\tvar str string\n\t\tfor i := 0; i < len(arr); i++ {\n\t\t\tif arr[i] == 0 {\n\t\t\t\tstr = string(arr[:i])\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\treturn str\n\t}\n\tvar buffer struct {\n\t\theader W_Mnth\n\t\tfsinfo [64]W_Mntent\n\t}\n\tfs_count, err := W_Getmntent_A((*byte)(unsafe.Pointer(&buffer)), int(unsafe.Sizeof(buffer)))\n\tif err == nil {\n\t\terr = EINVAL\n\t\tfor i := 0; i < fs_count; i++ {\n\t\t\tif b2s(buffer.fsinfo[i].Mountpoint[:]) == name {\n\t\t\t\terr = unmount_LE(b2s(buffer.fsinfo[i].Fsname[:]), mtm)\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t} else if fs_count == 0 {\n\t\terr = EINVAL\n\t}\n\treturn err\n}\n\n// Unmount end\n\nfunc direntIno(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Ino), unsafe.Sizeof(Dirent{}.Ino))\n}\n\nfunc direntReclen(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen))\n}\n\nfunc direntNamlen(buf []byte) (uint64, bool) {\n\treclen, ok := direntReclen(buf)\n\tif !ok {\n\t\treturn 0, false\n\t}\n\treturn reclen - uint64(unsafe.Offsetof(Dirent{}.Name)), true\n}\n\nfunc direntLeToDirentUnix(dirent *direntLE, dir uintptr, path string) (Dirent, error) {\n\tvar d Dirent\n\n\td.Ino = uint64(dirent.Ino)\n\toffset, err := Telldir(dir)\n\tif err != nil {\n\t\treturn d, err\n\t}\n\n\td.Off = int64(offset)\n\ts := string(bytes.Split(dirent.Name[:], []byte{0})[0])\n\tcopy(d.Name[:], s)\n\n\td.Reclen = uint16(24 + len(d.NameString()))\n\tvar st Stat_t\n\tpath = path + \"/\" + s\n\terr = Lstat(path, &st)\n\tif err != nil {\n\t\treturn d, err\n\t}\n\n\td.Type = uint8(st.Mode >> 24)\n\treturn d, err\n}\n\nfunc Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {\n\t// Simulation of Getdirentries port from the Darwin implementation.\n\t// COMMENTS FROM DARWIN:\n\t// It's not the full required semantics, but should handle the case\n\t// of calling Getdirentries or ReadDirent repeatedly.\n\t// It won't handle assigning the results of lseek to *basep, or handle\n\t// the directory being edited underfoot.\n\n\tskip, err := Seek(fd, 0, 1 /* SEEK_CUR */)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\t// Get path from fd to avoid unavailable call (fdopendir)\n\tpath, err := ZosFdToPath(fd)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\td, err := Opendir(path)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tdefer Closedir(d)\n\n\tvar cnt int64\n\tfor {\n\t\tvar entryLE direntLE\n\t\tvar entrypLE *direntLE\n\t\te := Readdir_r(d, &entryLE, &entrypLE)\n\t\tif e != nil {\n\t\t\treturn n, e\n\t\t}\n\t\tif entrypLE == nil {\n\t\t\tbreak\n\t\t}\n\t\tif skip > 0 {\n\t\t\tskip--\n\t\t\tcnt++\n\t\t\tcontinue\n\t\t}\n\n\t\t// Dirent on zos has a different structure\n\t\tentry, e := direntLeToDirentUnix(&entryLE, d, path)\n\t\tif e != nil {\n\t\t\treturn n, e\n\t\t}\n\n\t\treclen := int(entry.Reclen)\n\t\tif reclen > len(buf) {\n\t\t\t// Not enough room. Return for now.\n\t\t\t// The counter will let us know where we should start up again.\n\t\t\t// Note: this strategy for suspending in the middle and\n\t\t\t// restarting is O(n^2) in the length of the directory. Oh well.\n\t\t\tbreak\n\t\t}\n\n\t\t// Copy entry into return buffer.\n\t\ts := unsafe.Slice((*byte)(unsafe.Pointer(&entry)), reclen)\n\t\tcopy(buf, s)\n\n\t\tbuf = buf[reclen:]\n\t\tn += reclen\n\t\tcnt++\n\t}\n\t// Set the seek offset of the input fd to record\n\t// how many files we've already returned.\n\t_, err = Seek(fd, cnt, 0 /* SEEK_SET */)\n\tif err != nil {\n\t\treturn n, err\n\t}\n\n\treturn n, nil\n}\n\nfunc Err2ad() (eadd *int) {\n\tr0, _, _ := CallLeFuncWithErr(GetZosLibVec() + SYS___ERR2AD<<4)\n\teadd = (*int)(unsafe.Pointer(r0))\n\treturn\n}\n\nfunc ZosConsolePrintf(format string, v ...interface{}) (int, error) {\n\ttype __cmsg struct {\n\t\t_            uint16\n\t\t_            [2]uint8\n\t\t__msg_length uint32\n\t\t__msg        uintptr\n\t\t_            [4]uint8\n\t}\n\tmsg := fmt.Sprintf(format, v...)\n\tstrptr := unsafe.Pointer((*reflect.StringHeader)(unsafe.Pointer(&msg)).Data)\n\tlen := (*reflect.StringHeader)(unsafe.Pointer(&msg)).Len\n\tcmsg := __cmsg{__msg_length: uint32(len), __msg: uintptr(strptr)}\n\tcmd := uint32(0)\n\truntime.EnterSyscall()\n\trc, err2, err1 := CallLeFuncWithErr(GetZosLibVec()+SYS_____CONSOLE_A<<4, uintptr(unsafe.Pointer(&cmsg)), 0, uintptr(unsafe.Pointer(&cmd)))\n\truntime.ExitSyscall()\n\tif rc != 0 {\n\t\treturn 0, fmt.Errorf(\"%s (errno2=0x%x)\\n\", err1.Error(), err2)\n\t}\n\treturn 0, nil\n}\nfunc ZosStringToEbcdicBytes(str string, nullterm bool) (ebcdicBytes []byte) {\n\tif nullterm {\n\t\tebcdicBytes = []byte(str + \"\\x00\")\n\t} else {\n\t\tebcdicBytes = []byte(str)\n\t}\n\tA2e(ebcdicBytes)\n\treturn\n}\nfunc ZosEbcdicBytesToString(b []byte, trimRight bool) (str string) {\n\tres := make([]byte, len(b))\n\tcopy(res, b)\n\tE2a(res)\n\tif trimRight {\n\t\tstr = string(bytes.TrimRight(res, \" \\x00\"))\n\t} else {\n\t\tstr = string(res)\n\t}\n\treturn\n}\n\nfunc fdToPath(dirfd int) (path string, err error) {\n\tvar buffer [1024]byte\n\t// w_ctrl()\n\tret := runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS_W_IOCTL<<4,\n\t\t[]uintptr{uintptr(dirfd), 17, 1024, uintptr(unsafe.Pointer(&buffer[0]))})\n\tif ret == 0 {\n\t\tzb := bytes.IndexByte(buffer[:], 0)\n\t\tif zb == -1 {\n\t\t\tzb = len(buffer)\n\t\t}\n\t\t// __e2a_l()\n\t\truntime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS___E2A_L<<4,\n\t\t\t[]uintptr{uintptr(unsafe.Pointer(&buffer[0])), uintptr(zb)})\n\t\treturn string(buffer[:zb]), nil\n\t}\n\t// __errno()\n\terrno := int(*(*int32)(unsafe.Pointer(runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS___ERRNO<<4,\n\t\t[]uintptr{}))))\n\t// __errno2()\n\terrno2 := int(runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS___ERRNO2<<4,\n\t\t[]uintptr{}))\n\t// strerror_r()\n\tret = runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS_STRERROR_R<<4,\n\t\t[]uintptr{uintptr(errno), uintptr(unsafe.Pointer(&buffer[0])), 1024})\n\tif ret == 0 {\n\t\tzb := bytes.IndexByte(buffer[:], 0)\n\t\tif zb == -1 {\n\t\t\tzb = len(buffer)\n\t\t}\n\t\treturn \"\", fmt.Errorf(\"%s (errno2=0x%x)\", buffer[:zb], errno2)\n\t} else {\n\t\treturn \"\", fmt.Errorf(\"fdToPath errno %d (errno2=0x%x)\", errno, errno2)\n\t}\n}\n\nfunc impl_Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MKFIFOAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_MkfifoatAddr() *(func(dirfd int, path string, mode uint32) (err error))\n\nvar Mkfifoat = enter_Mkfifoat\n\nfunc enter_Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tfuncref := get_MkfifoatAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___MKFIFOAT_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Mkfifoat\n\t} else {\n\t\t*funcref = legacy_Mkfifoat\n\t}\n\treturn (*funcref)(dirfd, path, mode)\n}\n\nfunc legacy_Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tdirname, err := ZosFdToPath(dirfd)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn Mkfifo(dirname+\"/\"+path, mode)\n}\n\n//sys\tPosix_openpt(oflag int) (fd int, err error) = SYS_POSIX_OPENPT\n//sys\tGrantpt(fildes int) (rc int, err error) = SYS_GRANTPT\n//sys\tUnlockpt(fildes int) (rc int, err error) = SYS_UNLOCKPT\n\nfunc fcntlAsIs(fd uintptr, cmd int, arg uintptr) (val int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FCNTL<<4, uintptr(fd), uintptr(cmd), arg)\n\truntime.ExitSyscall()\n\tval = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\nfunc Fcntl(fd uintptr, cmd int, op interface{}) (ret int, err error) {\n\tswitch op.(type) {\n\tcase *Flock_t:\n\t\terr = FcntlFlock(fd, cmd, op.(*Flock_t))\n\t\tif err != nil {\n\t\t\tret = -1\n\t\t}\n\t\treturn\n\tcase int:\n\t\treturn FcntlInt(fd, cmd, op.(int))\n\tcase *F_cnvrt:\n\t\treturn fcntlAsIs(fd, cmd, uintptr(unsafe.Pointer(op.(*F_cnvrt))))\n\tcase unsafe.Pointer:\n\t\treturn fcntlAsIs(fd, cmd, uintptr(op.(unsafe.Pointer)))\n\tdefault:\n\t\treturn -1, EINVAL\n\t}\n\treturn\n}\n\nfunc Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\treturn sendfile(outfd, infd, offset, count)\n}\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\t// TODO: use LE call instead if the call is implemented\n\toriginalOffset, err := Seek(infd, 0, SEEK_CUR)\n\tif err != nil {\n\t\treturn -1, err\n\t}\n\t//start reading data from in_fd\n\tif offset != nil {\n\t\t_, err := Seek(infd, *offset, SEEK_SET)\n\t\tif err != nil {\n\t\t\treturn -1, err\n\t\t}\n\t}\n\n\tbuf := make([]byte, count)\n\treadBuf := make([]byte, 0)\n\tvar n int = 0\n\tfor i := 0; i < count; i += n {\n\t\tn, err := Read(infd, buf)\n\t\tif n == 0 {\n\t\t\tif err != nil {\n\t\t\t\treturn -1, err\n\t\t\t} else { // EOF\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\treadBuf = append(readBuf, buf...)\n\t\tbuf = buf[0:0]\n\t}\n\n\tn2, err := Write(outfd, readBuf)\n\tif err != nil {\n\t\treturn -1, err\n\t}\n\n\t//When sendfile() returns, this variable will be set to the\n\t// offset of the byte following the last byte that was read.\n\tif offset != nil {\n\t\t*offset = *offset + int64(n)\n\t\t// If offset is not NULL, then sendfile() does not modify the file\n\t\t// offset of in_fd\n\t\t_, err := Seek(infd, originalOffset, SEEK_SET)\n\t\tif err != nil {\n\t\t\treturn -1, err\n\t\t}\n\t}\n\treturn n2, nil\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/sysvshm_linux.go",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux\n\npackage unix\n\nimport \"runtime\"\n\n// SysvShmCtl performs control operations on the shared memory segment\n// specified by id.\nfunc SysvShmCtl(id, cmd int, desc *SysvShmDesc) (result int, err error) {\n\tif runtime.GOARCH == \"arm\" ||\n\t\truntime.GOARCH == \"mips64\" || runtime.GOARCH == \"mips64le\" {\n\t\tcmd |= ipc_64\n\t}\n\n\treturn shmctl(id, cmd, desc)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/sysvshm_unix.go",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (darwin && !ios) || linux || zos\n\npackage unix\n\nimport \"unsafe\"\n\n// SysvShmAttach attaches the Sysv shared memory segment associated with the\n// shared memory identifier id.\nfunc SysvShmAttach(id int, addr uintptr, flag int) ([]byte, error) {\n\taddr, errno := shmat(id, addr, flag)\n\tif errno != nil {\n\t\treturn nil, errno\n\t}\n\n\t// Retrieve the size of the shared memory to enable slice creation\n\tvar info SysvShmDesc\n\n\t_, err := SysvShmCtl(id, IPC_STAT, &info)\n\tif err != nil {\n\t\t// release the shared memory if we can't find the size\n\n\t\t// ignoring error from shmdt as there's nothing sensible to return here\n\t\tshmdt(addr)\n\t\treturn nil, err\n\t}\n\n\t// Use unsafe to convert addr into a []byte.\n\tb := unsafe.Slice((*byte)(unsafe.Pointer(addr)), int(info.Segsz))\n\treturn b, nil\n}\n\n// SysvShmDetach unmaps the shared memory slice returned from SysvShmAttach.\n//\n// It is not safe to use the slice after calling this function.\nfunc SysvShmDetach(data []byte) error {\n\tif len(data) == 0 {\n\t\treturn EINVAL\n\t}\n\n\treturn shmdt(uintptr(unsafe.Pointer(&data[0])))\n}\n\n// SysvShmGet returns the Sysv shared memory identifier associated with key.\n// If the IPC_CREAT flag is specified a new segment is created.\nfunc SysvShmGet(key, size, flag int) (id int, err error) {\n\treturn shmget(key, size, flag)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/sysvshm_unix_other.go",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (darwin && !ios) || zos\n\npackage unix\n\n// SysvShmCtl performs control operations on the shared memory segment\n// specified by id.\nfunc SysvShmCtl(id, cmd int, desc *SysvShmDesc) (result int, err error) {\n\treturn shmctl(id, cmd, desc)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/timestruct.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos\n\npackage unix\n\nimport \"time\"\n\n// TimespecToNsec returns the time stored in ts as nanoseconds.\nfunc TimespecToNsec(ts Timespec) int64 { return ts.Nano() }\n\n// NsecToTimespec converts a number of nanoseconds into a Timespec.\nfunc NsecToTimespec(nsec int64) Timespec {\n\tsec := nsec / 1e9\n\tnsec = nsec % 1e9\n\tif nsec < 0 {\n\t\tnsec += 1e9\n\t\tsec--\n\t}\n\treturn setTimespec(sec, nsec)\n}\n\n// TimeToTimespec converts t into a Timespec.\n// On some 32-bit systems the range of valid Timespec values are smaller\n// than that of time.Time values.  So if t is out of the valid range of\n// Timespec, it returns a zero Timespec and ERANGE.\nfunc TimeToTimespec(t time.Time) (Timespec, error) {\n\tsec := t.Unix()\n\tnsec := int64(t.Nanosecond())\n\tts := setTimespec(sec, nsec)\n\n\t// Currently all targets have either int32 or int64 for Timespec.Sec.\n\t// If there were a new target with floating point type for it, we have\n\t// to consider the rounding error.\n\tif int64(ts.Sec) != sec {\n\t\treturn Timespec{}, ERANGE\n\t}\n\treturn ts, nil\n}\n\n// TimevalToNsec returns the time stored in tv as nanoseconds.\nfunc TimevalToNsec(tv Timeval) int64 { return tv.Nano() }\n\n// NsecToTimeval converts a number of nanoseconds into a Timeval.\nfunc NsecToTimeval(nsec int64) Timeval {\n\tnsec += 999 // round up to microsecond\n\tusec := nsec % 1e9 / 1e3\n\tsec := nsec / 1e9\n\tif usec < 0 {\n\t\tusec += 1e6\n\t\tsec--\n\t}\n\treturn setTimeval(sec, usec)\n}\n\n// Unix returns the time stored in ts as seconds plus nanoseconds.\nfunc (ts *Timespec) Unix() (sec int64, nsec int64) {\n\treturn int64(ts.Sec), int64(ts.Nsec)\n}\n\n// Unix returns the time stored in tv as seconds plus nanoseconds.\nfunc (tv *Timeval) Unix() (sec int64, nsec int64) {\n\treturn int64(tv.Sec), int64(tv.Usec) * 1000\n}\n\n// Nano returns the time stored in ts as nanoseconds.\nfunc (ts *Timespec) Nano() int64 {\n\treturn int64(ts.Sec)*1e9 + int64(ts.Nsec)\n}\n\n// Nano returns the time stored in tv as nanoseconds.\nfunc (tv *Timeval) Nano() int64 {\n\treturn int64(tv.Sec)*1e9 + int64(tv.Usec)*1000\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/unveil_openbsd.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage unix\n\nimport \"fmt\"\n\n// Unveil implements the unveil syscall.\n// For more information see unveil(2).\n// Note that the special case of blocking further\n// unveil calls is handled by UnveilBlock.\nfunc Unveil(path string, flags string) error {\n\tif err := supportsUnveil(); err != nil {\n\t\treturn err\n\t}\n\tpathPtr, err := BytePtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\tflagsPtr, err := BytePtrFromString(flags)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn unveil(pathPtr, flagsPtr)\n}\n\n// UnveilBlock blocks future unveil calls.\n// For more information see unveil(2).\nfunc UnveilBlock() error {\n\tif err := supportsUnveil(); err != nil {\n\t\treturn err\n\t}\n\treturn unveil(nil, nil)\n}\n\n// supportsUnveil checks for availability of the unveil(2) system call based\n// on the running OpenBSD version.\nfunc supportsUnveil() error {\n\tmaj, min, err := majmin()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// unveil is not available before 6.4\n\tif maj < 6 || (maj == 6 && min <= 3) {\n\t\treturn fmt.Errorf(\"cannot call Unveil on OpenBSD %d.%d\", maj, min)\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/vgetrandom_linux.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && go1.24\n\npackage unix\n\nimport _ \"unsafe\"\n\n//go:linkname vgetrandom runtime.vgetrandom\n//go:noescape\nfunc vgetrandom(p []byte, flags uint32) (ret int, supported bool)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/vgetrandom_unsupported.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build !linux || !go1.24\n\npackage unix\n\nfunc vgetrandom(p []byte, flags uint32) (ret int, supported bool) {\n\treturn -1, false\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/xattr_bsd.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build freebsd || netbsd\n\npackage unix\n\nimport (\n\t\"strings\"\n\t\"unsafe\"\n)\n\n// Derive extattr namespace and attribute name\n\nfunc xattrnamespace(fullattr string) (ns int, attr string, err error) {\n\ts := strings.IndexByte(fullattr, '.')\n\tif s == -1 {\n\t\treturn -1, \"\", ENOATTR\n\t}\n\n\tnamespace := fullattr[0:s]\n\tattr = fullattr[s+1:]\n\n\tswitch namespace {\n\tcase \"user\":\n\t\treturn EXTATTR_NAMESPACE_USER, attr, nil\n\tcase \"system\":\n\t\treturn EXTATTR_NAMESPACE_SYSTEM, attr, nil\n\tdefault:\n\t\treturn -1, \"\", ENOATTR\n\t}\n}\n\nfunc initxattrdest(dest []byte, idx int) (d unsafe.Pointer) {\n\tif len(dest) > idx {\n\t\treturn unsafe.Pointer(&dest[idx])\n\t}\n\tif dest != nil {\n\t\t// extattr_get_file and extattr_list_file treat NULL differently from\n\t\t// a non-NULL pointer of length zero. Preserve the property of nilness,\n\t\t// even if we can't use dest directly.\n\t\treturn unsafe.Pointer(&_zero)\n\t}\n\treturn nil\n}\n\n// FreeBSD and NetBSD implement their own syscalls to handle extended attributes\n\nfunc Getxattr(file string, attr string, dest []byte) (sz int, err error) {\n\td := initxattrdest(dest, 0)\n\tdestsize := len(dest)\n\n\tnsid, a, err := xattrnamespace(attr)\n\tif err != nil {\n\t\treturn -1, err\n\t}\n\n\treturn ExtattrGetFile(file, nsid, a, uintptr(d), destsize)\n}\n\nfunc Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) {\n\td := initxattrdest(dest, 0)\n\tdestsize := len(dest)\n\n\tnsid, a, err := xattrnamespace(attr)\n\tif err != nil {\n\t\treturn -1, err\n\t}\n\n\treturn ExtattrGetFd(fd, nsid, a, uintptr(d), destsize)\n}\n\nfunc Lgetxattr(link string, attr string, dest []byte) (sz int, err error) {\n\td := initxattrdest(dest, 0)\n\tdestsize := len(dest)\n\n\tnsid, a, err := xattrnamespace(attr)\n\tif err != nil {\n\t\treturn -1, err\n\t}\n\n\treturn ExtattrGetLink(link, nsid, a, uintptr(d), destsize)\n}\n\n// flags are unused on FreeBSD\n\nfunc Fsetxattr(fd int, attr string, data []byte, flags int) (err error) {\n\tvar d unsafe.Pointer\n\tif len(data) > 0 {\n\t\td = unsafe.Pointer(&data[0])\n\t}\n\tdatasiz := len(data)\n\n\tnsid, a, err := xattrnamespace(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\n\t_, err = ExtattrSetFd(fd, nsid, a, uintptr(d), datasiz)\n\treturn\n}\n\nfunc Setxattr(file string, attr string, data []byte, flags int) (err error) {\n\tvar d unsafe.Pointer\n\tif len(data) > 0 {\n\t\td = unsafe.Pointer(&data[0])\n\t}\n\tdatasiz := len(data)\n\n\tnsid, a, err := xattrnamespace(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\n\t_, err = ExtattrSetFile(file, nsid, a, uintptr(d), datasiz)\n\treturn\n}\n\nfunc Lsetxattr(link string, attr string, data []byte, flags int) (err error) {\n\tvar d unsafe.Pointer\n\tif len(data) > 0 {\n\t\td = unsafe.Pointer(&data[0])\n\t}\n\tdatasiz := len(data)\n\n\tnsid, a, err := xattrnamespace(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\n\t_, err = ExtattrSetLink(link, nsid, a, uintptr(d), datasiz)\n\treturn\n}\n\nfunc Removexattr(file string, attr string) (err error) {\n\tnsid, a, err := xattrnamespace(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\n\terr = ExtattrDeleteFile(file, nsid, a)\n\treturn\n}\n\nfunc Fremovexattr(fd int, attr string) (err error) {\n\tnsid, a, err := xattrnamespace(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\n\terr = ExtattrDeleteFd(fd, nsid, a)\n\treturn\n}\n\nfunc Lremovexattr(link string, attr string) (err error) {\n\tnsid, a, err := xattrnamespace(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\n\terr = ExtattrDeleteLink(link, nsid, a)\n\treturn\n}\n\nfunc Listxattr(file string, dest []byte) (sz int, err error) {\n\tdestsiz := len(dest)\n\n\t// FreeBSD won't allow you to list xattrs from multiple namespaces\n\ts, pos := 0, 0\n\tfor _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} {\n\t\tstmp, e := ListxattrNS(file, nsid, dest[pos:])\n\n\t\t/* Errors accessing system attrs are ignored so that\n\t\t * we can implement the Linux-like behavior of omitting errors that\n\t\t * we don't have read permissions on\n\t\t *\n\t\t * Linux will still error if we ask for user attributes on a file that\n\t\t * we don't have read permissions on, so don't ignore those errors\n\t\t */\n\t\tif e != nil {\n\t\t\tif e == EPERM && nsid != EXTATTR_NAMESPACE_USER {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\treturn s, e\n\t\t}\n\n\t\ts += stmp\n\t\tpos = s\n\t\tif pos > destsiz {\n\t\t\tpos = destsiz\n\t\t}\n\t}\n\n\treturn s, nil\n}\n\nfunc ListxattrNS(file string, nsid int, dest []byte) (sz int, err error) {\n\td := initxattrdest(dest, 0)\n\tdestsiz := len(dest)\n\n\ts, e := ExtattrListFile(file, nsid, uintptr(d), destsiz)\n\tif e != nil {\n\t\treturn 0, err\n\t}\n\n\treturn s, nil\n}\n\nfunc Flistxattr(fd int, dest []byte) (sz int, err error) {\n\tdestsiz := len(dest)\n\n\ts, pos := 0, 0\n\tfor _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} {\n\t\tstmp, e := FlistxattrNS(fd, nsid, dest[pos:])\n\n\t\tif e != nil {\n\t\t\tif e == EPERM && nsid != EXTATTR_NAMESPACE_USER {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\treturn s, e\n\t\t}\n\n\t\ts += stmp\n\t\tpos = s\n\t\tif pos > destsiz {\n\t\t\tpos = destsiz\n\t\t}\n\t}\n\n\treturn s, nil\n}\n\nfunc FlistxattrNS(fd int, nsid int, dest []byte) (sz int, err error) {\n\td := initxattrdest(dest, 0)\n\tdestsiz := len(dest)\n\n\ts, e := ExtattrListFd(fd, nsid, uintptr(d), destsiz)\n\tif e != nil {\n\t\treturn 0, err\n\t}\n\n\treturn s, nil\n}\n\nfunc Llistxattr(link string, dest []byte) (sz int, err error) {\n\tdestsiz := len(dest)\n\n\ts, pos := 0, 0\n\tfor _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} {\n\t\tstmp, e := LlistxattrNS(link, nsid, dest[pos:])\n\n\t\tif e != nil {\n\t\t\tif e == EPERM && nsid != EXTATTR_NAMESPACE_USER {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\treturn s, e\n\t\t}\n\n\t\ts += stmp\n\t\tpos = s\n\t\tif pos > destsiz {\n\t\t\tpos = destsiz\n\t\t}\n\t}\n\n\treturn s, nil\n}\n\nfunc LlistxattrNS(link string, nsid int, dest []byte) (sz int, err error) {\n\td := initxattrdest(dest, 0)\n\tdestsiz := len(dest)\n\n\ts, e := ExtattrListLink(link, nsid, uintptr(d), destsiz)\n\tif e != nil {\n\t\treturn 0, err\n\t}\n\n\treturn s, nil\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go",
    "content": "// mkerrors.sh -maix32\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc && aix\n\n// Created by cgo -godefs - DO NOT EDIT\n// cgo -godefs -- -maix32 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                  = 0x10\n\tAF_BYPASS                     = 0x19\n\tAF_CCITT                      = 0xa\n\tAF_CHAOS                      = 0x5\n\tAF_DATAKIT                    = 0x9\n\tAF_DECnet                     = 0xc\n\tAF_DLI                        = 0xd\n\tAF_ECMA                       = 0x8\n\tAF_HYLINK                     = 0xf\n\tAF_IMPLINK                    = 0x3\n\tAF_INET                       = 0x2\n\tAF_INET6                      = 0x18\n\tAF_INTF                       = 0x14\n\tAF_ISO                        = 0x7\n\tAF_LAT                        = 0xe\n\tAF_LINK                       = 0x12\n\tAF_LOCAL                      = 0x1\n\tAF_MAX                        = 0x1e\n\tAF_NDD                        = 0x17\n\tAF_NETWARE                    = 0x16\n\tAF_NS                         = 0x6\n\tAF_OSI                        = 0x7\n\tAF_PUP                        = 0x4\n\tAF_RIF                        = 0x15\n\tAF_ROUTE                      = 0x11\n\tAF_SNA                        = 0xb\n\tAF_UNIX                       = 0x1\n\tAF_UNSPEC                     = 0x0\n\tALTWERASE                     = 0x400000\n\tARPHRD_802_3                  = 0x6\n\tARPHRD_802_5                  = 0x6\n\tARPHRD_ETHER                  = 0x1\n\tARPHRD_FDDI                   = 0x1\n\tB0                            = 0x0\n\tB110                          = 0x3\n\tB1200                         = 0x9\n\tB134                          = 0x4\n\tB150                          = 0x5\n\tB1800                         = 0xa\n\tB19200                        = 0xe\n\tB200                          = 0x6\n\tB2400                         = 0xb\n\tB300                          = 0x7\n\tB38400                        = 0xf\n\tB4800                         = 0xc\n\tB50                           = 0x1\n\tB600                          = 0x8\n\tB75                           = 0x2\n\tB9600                         = 0xd\n\tBRKINT                        = 0x2\n\tBS0                           = 0x0\n\tBS1                           = 0x1000\n\tBSDLY                         = 0x1000\n\tCAP_AACCT                     = 0x6\n\tCAP_ARM_APPLICATION           = 0x5\n\tCAP_BYPASS_RAC_VMM            = 0x3\n\tCAP_CLEAR                     = 0x0\n\tCAP_CREDENTIALS               = 0x7\n\tCAP_EFFECTIVE                 = 0x1\n\tCAP_EWLM_AGENT                = 0x4\n\tCAP_INHERITABLE               = 0x2\n\tCAP_MAXIMUM                   = 0x7\n\tCAP_NUMA_ATTACH               = 0x2\n\tCAP_PERMITTED                 = 0x3\n\tCAP_PROPAGATE                 = 0x1\n\tCAP_PROPOGATE                 = 0x1\n\tCAP_SET                       = 0x1\n\tCBAUD                         = 0xf\n\tCFLUSH                        = 0xf\n\tCIBAUD                        = 0xf0000\n\tCLOCAL                        = 0x800\n\tCLOCK_MONOTONIC               = 0xa\n\tCLOCK_PROCESS_CPUTIME_ID      = 0xb\n\tCLOCK_REALTIME                = 0x9\n\tCLOCK_THREAD_CPUTIME_ID       = 0xc\n\tCR0                           = 0x0\n\tCR1                           = 0x100\n\tCR2                           = 0x200\n\tCR3                           = 0x300\n\tCRDLY                         = 0x300\n\tCREAD                         = 0x80\n\tCS5                           = 0x0\n\tCS6                           = 0x10\n\tCS7                           = 0x20\n\tCS8                           = 0x30\n\tCSIOCGIFCONF                  = -0x3ff796dc\n\tCSIZE                         = 0x30\n\tCSMAP_DIR                     = \"/usr/lib/nls/csmap/\"\n\tCSTART                        = '\\021'\n\tCSTOP                         = '\\023'\n\tCSTOPB                        = 0x40\n\tCSUSP                         = 0x1a\n\tECHO                          = 0x8\n\tECHOCTL                       = 0x20000\n\tECHOE                         = 0x10\n\tECHOK                         = 0x20\n\tECHOKE                        = 0x80000\n\tECHONL                        = 0x40\n\tECHOPRT                       = 0x40000\n\tECH_ICMPID                    = 0x2\n\tETHERNET_CSMACD               = 0x6\n\tEVENP                         = 0x80\n\tEXCONTINUE                    = 0x0\n\tEXDLOK                        = 0x3\n\tEXIO                          = 0x2\n\tEXPGIO                        = 0x0\n\tEXRESUME                      = 0x2\n\tEXRETURN                      = 0x1\n\tEXSIG                         = 0x4\n\tEXTA                          = 0xe\n\tEXTB                          = 0xf\n\tEXTRAP                        = 0x1\n\tEYEC_RTENTRYA                 = 0x257274656e747241\n\tEYEC_RTENTRYF                 = 0x257274656e747246\n\tE_ACC                         = 0x0\n\tFD_CLOEXEC                    = 0x1\n\tFD_SETSIZE                    = 0xfffe\n\tFF0                           = 0x0\n\tFF1                           = 0x2000\n\tFFDLY                         = 0x2000\n\tFLUSHBAND                     = 0x40\n\tFLUSHLOW                      = 0x8\n\tFLUSHO                        = 0x100000\n\tFLUSHR                        = 0x1\n\tFLUSHRW                       = 0x3\n\tFLUSHW                        = 0x2\n\tF_CLOSEM                      = 0xa\n\tF_DUP2FD                      = 0xe\n\tF_DUPFD                       = 0x0\n\tF_GETFD                       = 0x1\n\tF_GETFL                       = 0x3\n\tF_GETLK                       = 0x5\n\tF_GETLK64                     = 0xb\n\tF_GETOWN                      = 0x8\n\tF_LOCK                        = 0x1\n\tF_OK                          = 0x0\n\tF_RDLCK                       = 0x1\n\tF_SETFD                       = 0x2\n\tF_SETFL                       = 0x4\n\tF_SETLK                       = 0x6\n\tF_SETLK64                     = 0xc\n\tF_SETLKW                      = 0x7\n\tF_SETLKW64                    = 0xd\n\tF_SETOWN                      = 0x9\n\tF_TEST                        = 0x3\n\tF_TLOCK                       = 0x2\n\tF_TSTLK                       = 0xf\n\tF_ULOCK                       = 0x0\n\tF_UNLCK                       = 0x3\n\tF_WRLCK                       = 0x2\n\tHUPCL                         = 0x400\n\tIBSHIFT                       = 0x10\n\tICANON                        = 0x2\n\tICMP6_FILTER                  = 0x26\n\tICMP6_SEC_SEND_DEL            = 0x46\n\tICMP6_SEC_SEND_GET            = 0x47\n\tICMP6_SEC_SEND_SET            = 0x44\n\tICMP6_SEC_SEND_SET_CGA_ADDR   = 0x45\n\tICRNL                         = 0x100\n\tIEXTEN                        = 0x200000\n\tIFA_FIRSTALIAS                = 0x2000\n\tIFA_ROUTE                     = 0x1\n\tIFF_64BIT                     = 0x4000000\n\tIFF_ALLCAST                   = 0x20000\n\tIFF_ALLMULTI                  = 0x200\n\tIFF_BPF                       = 0x8000000\n\tIFF_BRIDGE                    = 0x40000\n\tIFF_BROADCAST                 = 0x2\n\tIFF_CANTCHANGE                = 0x80c52\n\tIFF_CHECKSUM_OFFLOAD          = 0x10000000\n\tIFF_D1                        = 0x8000\n\tIFF_D2                        = 0x4000\n\tIFF_D3                        = 0x2000\n\tIFF_D4                        = 0x1000\n\tIFF_DEBUG                     = 0x4\n\tIFF_DEVHEALTH                 = 0x4000\n\tIFF_DO_HW_LOOPBACK            = 0x10000\n\tIFF_GROUP_ROUTING             = 0x2000000\n\tIFF_IFBUFMGT                  = 0x800000\n\tIFF_LINK0                     = 0x100000\n\tIFF_LINK1                     = 0x200000\n\tIFF_LINK2                     = 0x400000\n\tIFF_LOOPBACK                  = 0x8\n\tIFF_MULTICAST                 = 0x80000\n\tIFF_NOARP                     = 0x80\n\tIFF_NOECHO                    = 0x800\n\tIFF_NOTRAILERS                = 0x20\n\tIFF_OACTIVE                   = 0x400\n\tIFF_POINTOPOINT               = 0x10\n\tIFF_PROMISC                   = 0x100\n\tIFF_PSEG                      = 0x40000000\n\tIFF_RUNNING                   = 0x40\n\tIFF_SIMPLEX                   = 0x800\n\tIFF_SNAP                      = 0x8000\n\tIFF_TCP_DISABLE_CKSUM         = 0x20000000\n\tIFF_TCP_NOCKSUM               = 0x1000000\n\tIFF_UP                        = 0x1\n\tIFF_VIPA                      = 0x80000000\n\tIFNAMSIZ                      = 0x10\n\tIFO_FLUSH                     = 0x1\n\tIFT_1822                      = 0x2\n\tIFT_AAL5                      = 0x31\n\tIFT_ARCNET                    = 0x23\n\tIFT_ARCNETPLUS                = 0x24\n\tIFT_ATM                       = 0x25\n\tIFT_CEPT                      = 0x13\n\tIFT_CLUSTER                   = 0x3e\n\tIFT_DS3                       = 0x1e\n\tIFT_EON                       = 0x19\n\tIFT_ETHER                     = 0x6\n\tIFT_FCS                       = 0x3a\n\tIFT_FDDI                      = 0xf\n\tIFT_FRELAY                    = 0x20\n\tIFT_FRELAYDCE                 = 0x2c\n\tIFT_GIFTUNNEL                 = 0x3c\n\tIFT_HDH1822                   = 0x3\n\tIFT_HF                        = 0x3d\n\tIFT_HIPPI                     = 0x2f\n\tIFT_HSSI                      = 0x2e\n\tIFT_HY                        = 0xe\n\tIFT_IB                        = 0xc7\n\tIFT_ISDNBASIC                 = 0x14\n\tIFT_ISDNPRIMARY               = 0x15\n\tIFT_ISO88022LLC               = 0x29\n\tIFT_ISO88023                  = 0x7\n\tIFT_ISO88024                  = 0x8\n\tIFT_ISO88025                  = 0x9\n\tIFT_ISO88026                  = 0xa\n\tIFT_LAPB                      = 0x10\n\tIFT_LOCALTALK                 = 0x2a\n\tIFT_LOOP                      = 0x18\n\tIFT_MIOX25                    = 0x26\n\tIFT_MODEM                     = 0x30\n\tIFT_NSIP                      = 0x1b\n\tIFT_OTHER                     = 0x1\n\tIFT_P10                       = 0xc\n\tIFT_P80                       = 0xd\n\tIFT_PARA                      = 0x22\n\tIFT_PPP                       = 0x17\n\tIFT_PROPMUX                   = 0x36\n\tIFT_PROPVIRTUAL               = 0x35\n\tIFT_PTPSERIAL                 = 0x16\n\tIFT_RS232                     = 0x21\n\tIFT_SDLC                      = 0x11\n\tIFT_SIP                       = 0x1f\n\tIFT_SLIP                      = 0x1c\n\tIFT_SMDSDXI                   = 0x2b\n\tIFT_SMDSICIP                  = 0x34\n\tIFT_SN                        = 0x38\n\tIFT_SONET                     = 0x27\n\tIFT_SONETPATH                 = 0x32\n\tIFT_SONETVT                   = 0x33\n\tIFT_SP                        = 0x39\n\tIFT_STARLAN                   = 0xb\n\tIFT_T1                        = 0x12\n\tIFT_TUNNEL                    = 0x3b\n\tIFT_ULTRA                     = 0x1d\n\tIFT_V35                       = 0x2d\n\tIFT_VIPA                      = 0x37\n\tIFT_X25                       = 0x5\n\tIFT_X25DDN                    = 0x4\n\tIFT_X25PLE                    = 0x28\n\tIFT_XETHER                    = 0x1a\n\tIGNBRK                        = 0x1\n\tIGNCR                         = 0x80\n\tIGNPAR                        = 0x4\n\tIMAXBEL                       = 0x10000\n\tINLCR                         = 0x40\n\tINPCK                         = 0x10\n\tIN_CLASSA_HOST                = 0xffffff\n\tIN_CLASSA_MAX                 = 0x80\n\tIN_CLASSA_NET                 = 0xff000000\n\tIN_CLASSA_NSHIFT              = 0x18\n\tIN_CLASSB_HOST                = 0xffff\n\tIN_CLASSB_MAX                 = 0x10000\n\tIN_CLASSB_NET                 = 0xffff0000\n\tIN_CLASSB_NSHIFT              = 0x10\n\tIN_CLASSC_HOST                = 0xff\n\tIN_CLASSC_NET                 = 0xffffff00\n\tIN_CLASSC_NSHIFT              = 0x8\n\tIN_CLASSD_HOST                = 0xfffffff\n\tIN_CLASSD_NET                 = 0xf0000000\n\tIN_CLASSD_NSHIFT              = 0x1c\n\tIN_LOOPBACKNET                = 0x7f\n\tIN_USE                        = 0x1\n\tIPPROTO_AH                    = 0x33\n\tIPPROTO_BIP                   = 0x53\n\tIPPROTO_DSTOPTS               = 0x3c\n\tIPPROTO_EGP                   = 0x8\n\tIPPROTO_EON                   = 0x50\n\tIPPROTO_ESP                   = 0x32\n\tIPPROTO_FRAGMENT              = 0x2c\n\tIPPROTO_GGP                   = 0x3\n\tIPPROTO_GIF                   = 0x8c\n\tIPPROTO_GRE                   = 0x2f\n\tIPPROTO_HOPOPTS               = 0x0\n\tIPPROTO_ICMP                  = 0x1\n\tIPPROTO_ICMPV6                = 0x3a\n\tIPPROTO_IDP                   = 0x16\n\tIPPROTO_IGMP                  = 0x2\n\tIPPROTO_IP                    = 0x0\n\tIPPROTO_IPIP                  = 0x4\n\tIPPROTO_IPV6                  = 0x29\n\tIPPROTO_LOCAL                 = 0x3f\n\tIPPROTO_MAX                   = 0x100\n\tIPPROTO_MH                    = 0x87\n\tIPPROTO_NONE                  = 0x3b\n\tIPPROTO_PUP                   = 0xc\n\tIPPROTO_QOS                   = 0x2d\n\tIPPROTO_RAW                   = 0xff\n\tIPPROTO_ROUTING               = 0x2b\n\tIPPROTO_RSVP                  = 0x2e\n\tIPPROTO_SCTP                  = 0x84\n\tIPPROTO_TCP                   = 0x6\n\tIPPROTO_TP                    = 0x1d\n\tIPPROTO_UDP                   = 0x11\n\tIPV6_ADDRFORM                 = 0x16\n\tIPV6_ADDR_PREFERENCES         = 0x4a\n\tIPV6_ADD_MEMBERSHIP           = 0xc\n\tIPV6_AIXRAWSOCKET             = 0x39\n\tIPV6_CHECKSUM                 = 0x27\n\tIPV6_DONTFRAG                 = 0x2d\n\tIPV6_DROP_MEMBERSHIP          = 0xd\n\tIPV6_DSTOPTS                  = 0x36\n\tIPV6_FLOWINFO_FLOWLABEL       = 0xffffff\n\tIPV6_FLOWINFO_PRIFLOW         = 0xfffffff\n\tIPV6_FLOWINFO_PRIORITY        = 0xf000000\n\tIPV6_FLOWINFO_SRFLAG          = 0x10000000\n\tIPV6_FLOWINFO_VERSION         = 0xf0000000\n\tIPV6_HOPLIMIT                 = 0x28\n\tIPV6_HOPOPTS                  = 0x34\n\tIPV6_JOIN_GROUP               = 0xc\n\tIPV6_LEAVE_GROUP              = 0xd\n\tIPV6_MIPDSTOPTS               = 0x36\n\tIPV6_MULTICAST_HOPS           = 0xa\n\tIPV6_MULTICAST_IF             = 0x9\n\tIPV6_MULTICAST_LOOP           = 0xb\n\tIPV6_NEXTHOP                  = 0x30\n\tIPV6_NOPROBE                  = 0x1c\n\tIPV6_PATHMTU                  = 0x2e\n\tIPV6_PKTINFO                  = 0x21\n\tIPV6_PKTOPTIONS               = 0x24\n\tIPV6_PRIORITY_10              = 0xa000000\n\tIPV6_PRIORITY_11              = 0xb000000\n\tIPV6_PRIORITY_12              = 0xc000000\n\tIPV6_PRIORITY_13              = 0xd000000\n\tIPV6_PRIORITY_14              = 0xe000000\n\tIPV6_PRIORITY_15              = 0xf000000\n\tIPV6_PRIORITY_8               = 0x8000000\n\tIPV6_PRIORITY_9               = 0x9000000\n\tIPV6_PRIORITY_BULK            = 0x4000000\n\tIPV6_PRIORITY_CONTROL         = 0x7000000\n\tIPV6_PRIORITY_FILLER          = 0x1000000\n\tIPV6_PRIORITY_INTERACTIVE     = 0x6000000\n\tIPV6_PRIORITY_RESERVED1       = 0x3000000\n\tIPV6_PRIORITY_RESERVED2       = 0x5000000\n\tIPV6_PRIORITY_UNATTENDED      = 0x2000000\n\tIPV6_PRIORITY_UNCHARACTERIZED = 0x0\n\tIPV6_RECVDSTOPTS              = 0x38\n\tIPV6_RECVHOPLIMIT             = 0x29\n\tIPV6_RECVHOPOPTS              = 0x35\n\tIPV6_RECVHOPS                 = 0x22\n\tIPV6_RECVIF                   = 0x1e\n\tIPV6_RECVPATHMTU              = 0x2f\n\tIPV6_RECVPKTINFO              = 0x23\n\tIPV6_RECVRTHDR                = 0x33\n\tIPV6_RECVSRCRT                = 0x1d\n\tIPV6_RECVTCLASS               = 0x2a\n\tIPV6_RTHDR                    = 0x32\n\tIPV6_RTHDRDSTOPTS             = 0x37\n\tIPV6_RTHDR_TYPE_0             = 0x0\n\tIPV6_RTHDR_TYPE_2             = 0x2\n\tIPV6_SENDIF                   = 0x1f\n\tIPV6_SRFLAG_LOOSE             = 0x0\n\tIPV6_SRFLAG_STRICT            = 0x10000000\n\tIPV6_TCLASS                   = 0x2b\n\tIPV6_TOKEN_LENGTH             = 0x40\n\tIPV6_UNICAST_HOPS             = 0x4\n\tIPV6_USE_MIN_MTU              = 0x2c\n\tIPV6_V6ONLY                   = 0x25\n\tIPV6_VERSION                  = 0x60000000\n\tIP_ADDRFORM                   = 0x16\n\tIP_ADD_MEMBERSHIP             = 0xc\n\tIP_ADD_SOURCE_MEMBERSHIP      = 0x3c\n\tIP_BLOCK_SOURCE               = 0x3a\n\tIP_BROADCAST_IF               = 0x10\n\tIP_CACHE_LINE_SIZE            = 0x80\n\tIP_DEFAULT_MULTICAST_LOOP     = 0x1\n\tIP_DEFAULT_MULTICAST_TTL      = 0x1\n\tIP_DF                         = 0x4000\n\tIP_DHCPMODE                   = 0x11\n\tIP_DONTFRAG                   = 0x19\n\tIP_DROP_MEMBERSHIP            = 0xd\n\tIP_DROP_SOURCE_MEMBERSHIP     = 0x3d\n\tIP_FINDPMTU                   = 0x1a\n\tIP_HDRINCL                    = 0x2\n\tIP_INC_MEMBERSHIPS            = 0x14\n\tIP_INIT_MEMBERSHIP            = 0x14\n\tIP_MAXPACKET                  = 0xffff\n\tIP_MF                         = 0x2000\n\tIP_MSS                        = 0x240\n\tIP_MULTICAST_HOPS             = 0xa\n\tIP_MULTICAST_IF               = 0x9\n\tIP_MULTICAST_LOOP             = 0xb\n\tIP_MULTICAST_TTL              = 0xa\n\tIP_OPT                        = 0x1b\n\tIP_OPTIONS                    = 0x1\n\tIP_PMTUAGE                    = 0x1b\n\tIP_RECVDSTADDR                = 0x7\n\tIP_RECVIF                     = 0x14\n\tIP_RECVIFINFO                 = 0xf\n\tIP_RECVINTERFACE              = 0x20\n\tIP_RECVMACHDR                 = 0xe\n\tIP_RECVOPTS                   = 0x5\n\tIP_RECVRETOPTS                = 0x6\n\tIP_RECVTTL                    = 0x22\n\tIP_RETOPTS                    = 0x8\n\tIP_SOURCE_FILTER              = 0x48\n\tIP_TOS                        = 0x3\n\tIP_TTL                        = 0x4\n\tIP_UNBLOCK_SOURCE             = 0x3b\n\tIP_UNICAST_HOPS               = 0x4\n\tISIG                          = 0x1\n\tISTRIP                        = 0x20\n\tIUCLC                         = 0x800\n\tIXANY                         = 0x1000\n\tIXOFF                         = 0x400\n\tIXON                          = 0x200\n\tI_FLUSH                       = 0x20005305\n\tLNOFLSH                       = 0x8000\n\tLOCK_EX                       = 0x2\n\tLOCK_NB                       = 0x4\n\tLOCK_SH                       = 0x1\n\tLOCK_UN                       = 0x8\n\tMADV_DONTNEED                 = 0x4\n\tMADV_NORMAL                   = 0x0\n\tMADV_RANDOM                   = 0x1\n\tMADV_SEQUENTIAL               = 0x2\n\tMADV_SPACEAVAIL               = 0x5\n\tMADV_WILLNEED                 = 0x3\n\tMAP_ANON                      = 0x10\n\tMAP_ANONYMOUS                 = 0x10\n\tMAP_FILE                      = 0x0\n\tMAP_FIXED                     = 0x100\n\tMAP_PRIVATE                   = 0x2\n\tMAP_SHARED                    = 0x1\n\tMAP_TYPE                      = 0xf0\n\tMAP_VARIABLE                  = 0x0\n\tMCAST_BLOCK_SOURCE            = 0x40\n\tMCAST_EXCLUDE                 = 0x2\n\tMCAST_INCLUDE                 = 0x1\n\tMCAST_JOIN_GROUP              = 0x3e\n\tMCAST_JOIN_SOURCE_GROUP       = 0x42\n\tMCAST_LEAVE_GROUP             = 0x3f\n\tMCAST_LEAVE_SOURCE_GROUP      = 0x43\n\tMCAST_SOURCE_FILTER           = 0x49\n\tMCAST_UNBLOCK_SOURCE          = 0x41\n\tMCL_CURRENT                   = 0x100\n\tMCL_FUTURE                    = 0x200\n\tMSG_ANY                       = 0x4\n\tMSG_ARGEXT                    = 0x400\n\tMSG_BAND                      = 0x2\n\tMSG_COMPAT                    = 0x8000\n\tMSG_CTRUNC                    = 0x20\n\tMSG_DONTROUTE                 = 0x4\n\tMSG_EOR                       = 0x8\n\tMSG_HIPRI                     = 0x1\n\tMSG_MAXIOVLEN                 = 0x10\n\tMSG_MPEG2                     = 0x80\n\tMSG_NONBLOCK                  = 0x4000\n\tMSG_NOSIGNAL                  = 0x100\n\tMSG_OOB                       = 0x1\n\tMSG_PEEK                      = 0x2\n\tMSG_TRUNC                     = 0x10\n\tMSG_WAITALL                   = 0x40\n\tMSG_WAITFORONE                = 0x200\n\tMS_ASYNC                      = 0x10\n\tMS_EINTR                      = 0x80\n\tMS_INVALIDATE                 = 0x40\n\tMS_PER_SEC                    = 0x3e8\n\tMS_SYNC                       = 0x20\n\tNFDBITS                       = 0x20\n\tNL0                           = 0x0\n\tNL1                           = 0x4000\n\tNL2                           = 0x8000\n\tNL3                           = 0xc000\n\tNLDLY                         = 0x4000\n\tNOFLSH                        = 0x80\n\tNOFLUSH                       = 0x80000000\n\tOCRNL                         = 0x8\n\tOFDEL                         = 0x80\n\tOFILL                         = 0x40\n\tOLCUC                         = 0x2\n\tONLCR                         = 0x4\n\tONLRET                        = 0x20\n\tONOCR                         = 0x10\n\tONOEOT                        = 0x80000\n\tOPOST                         = 0x1\n\tOXTABS                        = 0x40000\n\tO_ACCMODE                     = 0x23\n\tO_APPEND                      = 0x8\n\tO_CIO                         = 0x80\n\tO_CIOR                        = 0x800000000\n\tO_CLOEXEC                     = 0x800000\n\tO_CREAT                       = 0x100\n\tO_DEFER                       = 0x2000\n\tO_DELAY                       = 0x4000\n\tO_DIRECT                      = 0x8000000\n\tO_DIRECTORY                   = 0x80000\n\tO_DSYNC                       = 0x400000\n\tO_EFSOFF                      = 0x400000000\n\tO_EFSON                       = 0x200000000\n\tO_EXCL                        = 0x400\n\tO_EXEC                        = 0x20\n\tO_LARGEFILE                   = 0x4000000\n\tO_NDELAY                      = 0x8000\n\tO_NOCACHE                     = 0x100000\n\tO_NOCTTY                      = 0x800\n\tO_NOFOLLOW                    = 0x1000000\n\tO_NONBLOCK                    = 0x4\n\tO_NONE                        = 0x3\n\tO_NSHARE                      = 0x10000\n\tO_RAW                         = 0x100000000\n\tO_RDONLY                      = 0x0\n\tO_RDWR                        = 0x2\n\tO_RSHARE                      = 0x1000\n\tO_RSYNC                       = 0x200000\n\tO_SEARCH                      = 0x20\n\tO_SNAPSHOT                    = 0x40\n\tO_SYNC                        = 0x10\n\tO_TRUNC                       = 0x200\n\tO_TTY_INIT                    = 0x0\n\tO_WRONLY                      = 0x1\n\tPARENB                        = 0x100\n\tPAREXT                        = 0x100000\n\tPARMRK                        = 0x8\n\tPARODD                        = 0x200\n\tPENDIN                        = 0x20000000\n\tPRIO_PGRP                     = 0x1\n\tPRIO_PROCESS                  = 0x0\n\tPRIO_USER                     = 0x2\n\tPROT_EXEC                     = 0x4\n\tPROT_NONE                     = 0x0\n\tPROT_READ                     = 0x1\n\tPROT_WRITE                    = 0x2\n\tPR_64BIT                      = 0x20\n\tPR_ADDR                       = 0x2\n\tPR_ARGEXT                     = 0x400\n\tPR_ATOMIC                     = 0x1\n\tPR_CONNREQUIRED               = 0x4\n\tPR_FASTHZ                     = 0x5\n\tPR_INP                        = 0x40\n\tPR_INTRLEVEL                  = 0x8000\n\tPR_MLS                        = 0x100\n\tPR_MLS_1_LABEL                = 0x200\n\tPR_NOEOR                      = 0x4000\n\tPR_RIGHTS                     = 0x10\n\tPR_SLOWHZ                     = 0x2\n\tPR_WANTRCVD                   = 0x8\n\tRLIMIT_AS                     = 0x6\n\tRLIMIT_CORE                   = 0x4\n\tRLIMIT_CPU                    = 0x0\n\tRLIMIT_DATA                   = 0x2\n\tRLIMIT_FSIZE                  = 0x1\n\tRLIMIT_NOFILE                 = 0x7\n\tRLIMIT_NPROC                  = 0x9\n\tRLIMIT_RSS                    = 0x5\n\tRLIMIT_STACK                  = 0x3\n\tRLIM_INFINITY                 = 0x7fffffff\n\tRTAX_AUTHOR                   = 0x6\n\tRTAX_BRD                      = 0x7\n\tRTAX_DST                      = 0x0\n\tRTAX_GATEWAY                  = 0x1\n\tRTAX_GENMASK                  = 0x3\n\tRTAX_IFA                      = 0x5\n\tRTAX_IFP                      = 0x4\n\tRTAX_MAX                      = 0x8\n\tRTAX_NETMASK                  = 0x2\n\tRTA_AUTHOR                    = 0x40\n\tRTA_BRD                       = 0x80\n\tRTA_DOWNSTREAM                = 0x100\n\tRTA_DST                       = 0x1\n\tRTA_GATEWAY                   = 0x2\n\tRTA_GENMASK                   = 0x8\n\tRTA_IFA                       = 0x20\n\tRTA_IFP                       = 0x10\n\tRTA_NETMASK                   = 0x4\n\tRTC_IA64                      = 0x3\n\tRTC_POWER                     = 0x1\n\tRTC_POWER_PC                  = 0x2\n\tRTF_ACTIVE_DGD                = 0x1000000\n\tRTF_BCE                       = 0x80000\n\tRTF_BLACKHOLE                 = 0x1000\n\tRTF_BROADCAST                 = 0x400000\n\tRTF_BUL                       = 0x2000\n\tRTF_CLONE                     = 0x10000\n\tRTF_CLONED                    = 0x20000\n\tRTF_CLONING                   = 0x100\n\tRTF_DONE                      = 0x40\n\tRTF_DYNAMIC                   = 0x10\n\tRTF_FREE_IN_PROG              = 0x4000000\n\tRTF_GATEWAY                   = 0x2\n\tRTF_HOST                      = 0x4\n\tRTF_LLINFO                    = 0x400\n\tRTF_LOCAL                     = 0x200000\n\tRTF_MASK                      = 0x80\n\tRTF_MODIFIED                  = 0x20\n\tRTF_MULTICAST                 = 0x800000\n\tRTF_PERMANENT6                = 0x8000000\n\tRTF_PINNED                    = 0x100000\n\tRTF_PROTO1                    = 0x8000\n\tRTF_PROTO2                    = 0x4000\n\tRTF_PROTO3                    = 0x40000\n\tRTF_REJECT                    = 0x8\n\tRTF_SMALLMTU                  = 0x40000\n\tRTF_STATIC                    = 0x800\n\tRTF_STOPSRCH                  = 0x2000000\n\tRTF_UNREACHABLE               = 0x10000000\n\tRTF_UP                        = 0x1\n\tRTF_XRESOLVE                  = 0x200\n\tRTM_ADD                       = 0x1\n\tRTM_CHANGE                    = 0x3\n\tRTM_DELADDR                   = 0xd\n\tRTM_DELETE                    = 0x2\n\tRTM_EXPIRE                    = 0xf\n\tRTM_GET                       = 0x4\n\tRTM_GETNEXT                   = 0x11\n\tRTM_IFINFO                    = 0xe\n\tRTM_LOCK                      = 0x8\n\tRTM_LOSING                    = 0x5\n\tRTM_MISS                      = 0x7\n\tRTM_NEWADDR                   = 0xc\n\tRTM_OLDADD                    = 0x9\n\tRTM_OLDDEL                    = 0xa\n\tRTM_REDIRECT                  = 0x6\n\tRTM_RESOLVE                   = 0xb\n\tRTM_RTLOST                    = 0x10\n\tRTM_RTTUNIT                   = 0xf4240\n\tRTM_SAMEADDR                  = 0x12\n\tRTM_SET                       = 0x13\n\tRTM_VERSION                   = 0x2\n\tRTM_VERSION_GR                = 0x4\n\tRTM_VERSION_GR_COMPAT         = 0x3\n\tRTM_VERSION_POLICY            = 0x5\n\tRTM_VERSION_POLICY_EXT        = 0x6\n\tRTM_VERSION_POLICY_PRFN       = 0x7\n\tRTV_EXPIRE                    = 0x4\n\tRTV_HOPCOUNT                  = 0x2\n\tRTV_MTU                       = 0x1\n\tRTV_RPIPE                     = 0x8\n\tRTV_RTT                       = 0x40\n\tRTV_RTTVAR                    = 0x80\n\tRTV_SPIPE                     = 0x10\n\tRTV_SSTHRESH                  = 0x20\n\tRUSAGE_CHILDREN               = -0x1\n\tRUSAGE_SELF                   = 0x0\n\tRUSAGE_THREAD                 = 0x1\n\tSCM_RIGHTS                    = 0x1\n\tSHUT_RD                       = 0x0\n\tSHUT_RDWR                     = 0x2\n\tSHUT_WR                       = 0x1\n\tSIGMAX64                      = 0xff\n\tSIGQUEUE_MAX                  = 0x20\n\tSIOCADDIFVIPA                 = 0x20006942\n\tSIOCADDMTU                    = -0x7ffb9690\n\tSIOCADDMULTI                  = -0x7fdf96cf\n\tSIOCADDNETID                  = -0x7fd796a9\n\tSIOCADDRT                     = -0x7fcf8df6\n\tSIOCAIFADDR                   = -0x7fbf96e6\n\tSIOCATMARK                    = 0x40047307\n\tSIOCDARP                      = -0x7fb396e0\n\tSIOCDELIFVIPA                 = 0x20006943\n\tSIOCDELMTU                    = -0x7ffb968f\n\tSIOCDELMULTI                  = -0x7fdf96ce\n\tSIOCDELPMTU                   = -0x7fd78ff6\n\tSIOCDELRT                     = -0x7fcf8df5\n\tSIOCDIFADDR                   = -0x7fd796e7\n\tSIOCDNETOPT                   = -0x3ffe9680\n\tSIOCDX25XLATE                 = -0x7fd7969b\n\tSIOCFIFADDR                   = -0x7fdf966d\n\tSIOCGARP                      = -0x3fb396da\n\tSIOCGETMTUS                   = 0x2000696f\n\tSIOCGETSGCNT                  = -0x3feb8acc\n\tSIOCGETVIFCNT                 = -0x3feb8acd\n\tSIOCGHIWAT                    = 0x40047301\n\tSIOCGIFADDR                   = -0x3fd796df\n\tSIOCGIFADDRS                  = 0x2000698c\n\tSIOCGIFBAUDRATE               = -0x3fdf9669\n\tSIOCGIFBRDADDR                = -0x3fd796dd\n\tSIOCGIFCONF                   = -0x3ff796bb\n\tSIOCGIFCONFGLOB               = -0x3ff79670\n\tSIOCGIFDSTADDR                = -0x3fd796de\n\tSIOCGIFFLAGS                  = -0x3fd796ef\n\tSIOCGIFGIDLIST                = 0x20006968\n\tSIOCGIFHWADDR                 = -0x3fab966b\n\tSIOCGIFMETRIC                 = -0x3fd796e9\n\tSIOCGIFMTU                    = -0x3fd796aa\n\tSIOCGIFNETMASK                = -0x3fd796db\n\tSIOCGIFOPTIONS                = -0x3fd796d6\n\tSIOCGISNO                     = -0x3fd79695\n\tSIOCGLOADF                    = -0x3ffb967e\n\tSIOCGLOWAT                    = 0x40047303\n\tSIOCGNETOPT                   = -0x3ffe96a5\n\tSIOCGNETOPT1                  = -0x3fdf967f\n\tSIOCGNMTUS                    = 0x2000696e\n\tSIOCGPGRP                     = 0x40047309\n\tSIOCGSIZIFCONF                = 0x4004696a\n\tSIOCGSRCFILTER                = -0x3fe796cb\n\tSIOCGTUNEPHASE                = -0x3ffb9676\n\tSIOCGX25XLATE                 = -0x3fd7969c\n\tSIOCIFATTACH                  = -0x7fdf9699\n\tSIOCIFDETACH                  = -0x7fdf969a\n\tSIOCIFGETPKEY                 = -0x7fdf969b\n\tSIOCIF_ATM_DARP               = -0x7fdf9683\n\tSIOCIF_ATM_DUMPARP            = -0x7fdf9685\n\tSIOCIF_ATM_GARP               = -0x7fdf9682\n\tSIOCIF_ATM_IDLE               = -0x7fdf9686\n\tSIOCIF_ATM_SARP               = -0x7fdf9681\n\tSIOCIF_ATM_SNMPARP            = -0x7fdf9687\n\tSIOCIF_ATM_SVC                = -0x7fdf9684\n\tSIOCIF_ATM_UBR                = -0x7fdf9688\n\tSIOCIF_DEVHEALTH              = -0x7ffb966c\n\tSIOCIF_IB_ARP_INCOMP          = -0x7fdf9677\n\tSIOCIF_IB_ARP_TIMER           = -0x7fdf9678\n\tSIOCIF_IB_CLEAR_PINFO         = -0x3fdf966f\n\tSIOCIF_IB_DEL_ARP             = -0x7fdf967f\n\tSIOCIF_IB_DEL_PINFO           = -0x3fdf9670\n\tSIOCIF_IB_DUMP_ARP            = -0x7fdf9680\n\tSIOCIF_IB_GET_ARP             = -0x7fdf967e\n\tSIOCIF_IB_GET_INFO            = -0x3f879675\n\tSIOCIF_IB_GET_STATS           = -0x3f879672\n\tSIOCIF_IB_NOTIFY_ADDR_REM     = -0x3f87966a\n\tSIOCIF_IB_RESET_STATS         = -0x3f879671\n\tSIOCIF_IB_RESIZE_CQ           = -0x7fdf9679\n\tSIOCIF_IB_SET_ARP             = -0x7fdf967d\n\tSIOCIF_IB_SET_PKEY            = -0x7fdf967c\n\tSIOCIF_IB_SET_PORT            = -0x7fdf967b\n\tSIOCIF_IB_SET_QKEY            = -0x7fdf9676\n\tSIOCIF_IB_SET_QSIZE           = -0x7fdf967a\n\tSIOCLISTIFVIPA                = 0x20006944\n\tSIOCSARP                      = -0x7fb396e2\n\tSIOCSHIWAT                    = 0x80047300\n\tSIOCSIFADDR                   = -0x7fd796f4\n\tSIOCSIFADDRORI                = -0x7fdb9673\n\tSIOCSIFBRDADDR                = -0x7fd796ed\n\tSIOCSIFDSTADDR                = -0x7fd796f2\n\tSIOCSIFFLAGS                  = -0x7fd796f0\n\tSIOCSIFGIDLIST                = 0x20006969\n\tSIOCSIFMETRIC                 = -0x7fd796e8\n\tSIOCSIFMTU                    = -0x7fd796a8\n\tSIOCSIFNETDUMP                = -0x7fd796e4\n\tSIOCSIFNETMASK                = -0x7fd796ea\n\tSIOCSIFOPTIONS                = -0x7fd796d7\n\tSIOCSIFSUBCHAN                = -0x7fd796e5\n\tSIOCSISNO                     = -0x7fd79694\n\tSIOCSLOADF                    = -0x3ffb967d\n\tSIOCSLOWAT                    = 0x80047302\n\tSIOCSNETOPT                   = -0x7ffe96a6\n\tSIOCSPGRP                     = 0x80047308\n\tSIOCSX25XLATE                 = -0x7fd7969d\n\tSOCK_CONN_DGRAM               = 0x6\n\tSOCK_DGRAM                    = 0x2\n\tSOCK_RAW                      = 0x3\n\tSOCK_RDM                      = 0x4\n\tSOCK_SEQPACKET                = 0x5\n\tSOCK_STREAM                   = 0x1\n\tSOL_SOCKET                    = 0xffff\n\tSOMAXCONN                     = 0x400\n\tSO_ACCEPTCONN                 = 0x2\n\tSO_AUDIT                      = 0x8000\n\tSO_BROADCAST                  = 0x20\n\tSO_CKSUMRECV                  = 0x800\n\tSO_DEBUG                      = 0x1\n\tSO_DONTROUTE                  = 0x10\n\tSO_ERROR                      = 0x1007\n\tSO_KEEPALIVE                  = 0x8\n\tSO_KERNACCEPT                 = 0x2000\n\tSO_LINGER                     = 0x80\n\tSO_NOMULTIPATH                = 0x4000\n\tSO_NOREUSEADDR                = 0x1000\n\tSO_OOBINLINE                  = 0x100\n\tSO_PEERID                     = 0x1009\n\tSO_RCVBUF                     = 0x1002\n\tSO_RCVLOWAT                   = 0x1004\n\tSO_RCVTIMEO                   = 0x1006\n\tSO_REUSEADDR                  = 0x4\n\tSO_REUSEPORT                  = 0x200\n\tSO_SNDBUF                     = 0x1001\n\tSO_SNDLOWAT                   = 0x1003\n\tSO_SNDTIMEO                   = 0x1005\n\tSO_TIMESTAMPNS                = 0x100a\n\tSO_TYPE                       = 0x1008\n\tSO_USELOOPBACK                = 0x40\n\tSO_USE_IFBUFS                 = 0x400\n\tS_BANDURG                     = 0x400\n\tS_EMODFMT                     = 0x3c000000\n\tS_ENFMT                       = 0x400\n\tS_ERROR                       = 0x100\n\tS_HANGUP                      = 0x200\n\tS_HIPRI                       = 0x2\n\tS_ICRYPTO                     = 0x80000\n\tS_IEXEC                       = 0x40\n\tS_IFBLK                       = 0x6000\n\tS_IFCHR                       = 0x2000\n\tS_IFDIR                       = 0x4000\n\tS_IFIFO                       = 0x1000\n\tS_IFJOURNAL                   = 0x10000\n\tS_IFLNK                       = 0xa000\n\tS_IFMPX                       = 0x2200\n\tS_IFMT                        = 0xf000\n\tS_IFPDIR                      = 0x4000000\n\tS_IFPSDIR                     = 0x8000000\n\tS_IFPSSDIR                    = 0xc000000\n\tS_IFREG                       = 0x8000\n\tS_IFSOCK                      = 0xc000\n\tS_IFSYSEA                     = 0x30000000\n\tS_INPUT                       = 0x1\n\tS_IREAD                       = 0x100\n\tS_IRGRP                       = 0x20\n\tS_IROTH                       = 0x4\n\tS_IRUSR                       = 0x100\n\tS_IRWXG                       = 0x38\n\tS_IRWXO                       = 0x7\n\tS_IRWXU                       = 0x1c0\n\tS_ISGID                       = 0x400\n\tS_ISUID                       = 0x800\n\tS_ISVTX                       = 0x200\n\tS_ITCB                        = 0x1000000\n\tS_ITP                         = 0x800000\n\tS_IWGRP                       = 0x10\n\tS_IWOTH                       = 0x2\n\tS_IWRITE                      = 0x80\n\tS_IWUSR                       = 0x80\n\tS_IXACL                       = 0x2000000\n\tS_IXATTR                      = 0x40000\n\tS_IXGRP                       = 0x8\n\tS_IXINTERFACE                 = 0x100000\n\tS_IXMOD                       = 0x40000000\n\tS_IXOTH                       = 0x1\n\tS_IXUSR                       = 0x40\n\tS_MSG                         = 0x8\n\tS_OUTPUT                      = 0x4\n\tS_RDBAND                      = 0x20\n\tS_RDNORM                      = 0x10\n\tS_RESERVED1                   = 0x20000\n\tS_RESERVED2                   = 0x200000\n\tS_RESERVED3                   = 0x400000\n\tS_RESERVED4                   = 0x80000000\n\tS_RESFMT1                     = 0x10000000\n\tS_RESFMT10                    = 0x34000000\n\tS_RESFMT11                    = 0x38000000\n\tS_RESFMT12                    = 0x3c000000\n\tS_RESFMT2                     = 0x14000000\n\tS_RESFMT3                     = 0x18000000\n\tS_RESFMT4                     = 0x1c000000\n\tS_RESFMT5                     = 0x20000000\n\tS_RESFMT6                     = 0x24000000\n\tS_RESFMT7                     = 0x28000000\n\tS_RESFMT8                     = 0x2c000000\n\tS_WRBAND                      = 0x80\n\tS_WRNORM                      = 0x40\n\tTAB0                          = 0x0\n\tTAB1                          = 0x400\n\tTAB2                          = 0x800\n\tTAB3                          = 0xc00\n\tTABDLY                        = 0xc00\n\tTCFLSH                        = 0x540c\n\tTCGETA                        = 0x5405\n\tTCGETS                        = 0x5401\n\tTCIFLUSH                      = 0x0\n\tTCIOFF                        = 0x2\n\tTCIOFLUSH                     = 0x2\n\tTCION                         = 0x3\n\tTCOFLUSH                      = 0x1\n\tTCOOFF                        = 0x0\n\tTCOON                         = 0x1\n\tTCP_24DAYS_WORTH_OF_SLOWTICKS = 0x3f4800\n\tTCP_ACLADD                    = 0x23\n\tTCP_ACLBIND                   = 0x26\n\tTCP_ACLCLEAR                  = 0x22\n\tTCP_ACLDEL                    = 0x24\n\tTCP_ACLDENY                   = 0x8\n\tTCP_ACLFLUSH                  = 0x21\n\tTCP_ACLGID                    = 0x1\n\tTCP_ACLLS                     = 0x25\n\tTCP_ACLSUBNET                 = 0x4\n\tTCP_ACLUID                    = 0x2\n\tTCP_CWND_DF                   = 0x16\n\tTCP_CWND_IF                   = 0x15\n\tTCP_DELAY_ACK_FIN             = 0x2\n\tTCP_DELAY_ACK_SYN             = 0x1\n\tTCP_FASTNAME                  = 0x101080a\n\tTCP_KEEPCNT                   = 0x13\n\tTCP_KEEPIDLE                  = 0x11\n\tTCP_KEEPINTVL                 = 0x12\n\tTCP_LSPRIV                    = 0x29\n\tTCP_LUID                      = 0x20\n\tTCP_MAXBURST                  = 0x8\n\tTCP_MAXDF                     = 0x64\n\tTCP_MAXIF                     = 0x64\n\tTCP_MAXSEG                    = 0x2\n\tTCP_MAXWIN                    = 0xffff\n\tTCP_MAXWINDOWSCALE            = 0xe\n\tTCP_MAX_SACK                  = 0x4\n\tTCP_MSS                       = 0x5b4\n\tTCP_NODELAY                   = 0x1\n\tTCP_NODELAYACK                = 0x14\n\tTCP_NOREDUCE_CWND_EXIT_FRXMT  = 0x19\n\tTCP_NOREDUCE_CWND_IN_FRXMT    = 0x18\n\tTCP_NOTENTER_SSTART           = 0x17\n\tTCP_OPT                       = 0x19\n\tTCP_RFC1323                   = 0x4\n\tTCP_SETPRIV                   = 0x27\n\tTCP_STDURG                    = 0x10\n\tTCP_TIMESTAMP_OPTLEN          = 0xc\n\tTCP_UNSETPRIV                 = 0x28\n\tTCSAFLUSH                     = 0x2\n\tTCSBRK                        = 0x5409\n\tTCSETA                        = 0x5406\n\tTCSETAF                       = 0x5408\n\tTCSETAW                       = 0x5407\n\tTCSETS                        = 0x5402\n\tTCSETSF                       = 0x5404\n\tTCSETSW                       = 0x5403\n\tTCXONC                        = 0x540b\n\tTIMER_ABSTIME                 = 0x3e7\n\tTIMER_MAX                     = 0x20\n\tTIOC                          = 0x5400\n\tTIOCCBRK                      = 0x2000747a\n\tTIOCCDTR                      = 0x20007478\n\tTIOCCONS                      = 0x80047462\n\tTIOCEXCL                      = 0x2000740d\n\tTIOCFLUSH                     = 0x80047410\n\tTIOCGETC                      = 0x40067412\n\tTIOCGETD                      = 0x40047400\n\tTIOCGETP                      = 0x40067408\n\tTIOCGLTC                      = 0x40067474\n\tTIOCGPGRP                     = 0x40047477\n\tTIOCGSID                      = 0x40047448\n\tTIOCGSIZE                     = 0x40087468\n\tTIOCGWINSZ                    = 0x40087468\n\tTIOCHPCL                      = 0x20007402\n\tTIOCLBIC                      = 0x8004747e\n\tTIOCLBIS                      = 0x8004747f\n\tTIOCLGET                      = 0x4004747c\n\tTIOCLSET                      = 0x8004747d\n\tTIOCMBIC                      = 0x8004746b\n\tTIOCMBIS                      = 0x8004746c\n\tTIOCMGET                      = 0x4004746a\n\tTIOCMIWAIT                    = 0x80047464\n\tTIOCMODG                      = 0x40047403\n\tTIOCMODS                      = 0x80047404\n\tTIOCMSET                      = 0x8004746d\n\tTIOCM_CAR                     = 0x40\n\tTIOCM_CD                      = 0x40\n\tTIOCM_CTS                     = 0x20\n\tTIOCM_DSR                     = 0x100\n\tTIOCM_DTR                     = 0x2\n\tTIOCM_LE                      = 0x1\n\tTIOCM_RI                      = 0x80\n\tTIOCM_RNG                     = 0x80\n\tTIOCM_RTS                     = 0x4\n\tTIOCM_SR                      = 0x10\n\tTIOCM_ST                      = 0x8\n\tTIOCNOTTY                     = 0x20007471\n\tTIOCNXCL                      = 0x2000740e\n\tTIOCOUTQ                      = 0x40047473\n\tTIOCPKT                       = 0x80047470\n\tTIOCPKT_DATA                  = 0x0\n\tTIOCPKT_DOSTOP                = 0x20\n\tTIOCPKT_FLUSHREAD             = 0x1\n\tTIOCPKT_FLUSHWRITE            = 0x2\n\tTIOCPKT_NOSTOP                = 0x10\n\tTIOCPKT_START                 = 0x8\n\tTIOCPKT_STOP                  = 0x4\n\tTIOCREMOTE                    = 0x80047469\n\tTIOCSBRK                      = 0x2000747b\n\tTIOCSDTR                      = 0x20007479\n\tTIOCSETC                      = 0x80067411\n\tTIOCSETD                      = 0x80047401\n\tTIOCSETN                      = 0x8006740a\n\tTIOCSETP                      = 0x80067409\n\tTIOCSLTC                      = 0x80067475\n\tTIOCSPGRP                     = 0x80047476\n\tTIOCSSIZE                     = 0x80087467\n\tTIOCSTART                     = 0x2000746e\n\tTIOCSTI                       = 0x80017472\n\tTIOCSTOP                      = 0x2000746f\n\tTIOCSWINSZ                    = 0x80087467\n\tTIOCUCNTL                     = 0x80047466\n\tTOSTOP                        = 0x10000\n\tUTIME_NOW                     = -0x2\n\tUTIME_OMIT                    = -0x3\n\tVDISCRD                       = 0xc\n\tVDSUSP                        = 0xa\n\tVEOF                          = 0x4\n\tVEOL                          = 0x5\n\tVEOL2                         = 0x6\n\tVERASE                        = 0x2\n\tVINTR                         = 0x0\n\tVKILL                         = 0x3\n\tVLNEXT                        = 0xe\n\tVMIN                          = 0x4\n\tVQUIT                         = 0x1\n\tVREPRINT                      = 0xb\n\tVSTART                        = 0x7\n\tVSTOP                         = 0x8\n\tVSTRT                         = 0x7\n\tVSUSP                         = 0x9\n\tVT0                           = 0x0\n\tVT1                           = 0x8000\n\tVTDELAY                       = 0x2000\n\tVTDLY                         = 0x8000\n\tVTIME                         = 0x5\n\tVWERSE                        = 0xd\n\tWPARSTART                     = 0x1\n\tWPARSTOP                      = 0x2\n\tWPARTTYNAME                   = \"Global\"\n\tXCASE                         = 0x4\n\tXTABS                         = 0xc00\n\t_FDATAFLUSH                   = 0x2000000000\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x43)\n\tEADDRNOTAVAIL   = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x42)\n\tEAGAIN          = syscall.Errno(0xb)\n\tEALREADY        = syscall.Errno(0x38)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x78)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x75)\n\tECHILD          = syscall.Errno(0xa)\n\tECHRNG          = syscall.Errno(0x25)\n\tECLONEME        = syscall.Errno(0x52)\n\tECONNABORTED    = syscall.Errno(0x48)\n\tECONNREFUSED    = syscall.Errno(0x4f)\n\tECONNRESET      = syscall.Errno(0x49)\n\tECORRUPT        = syscall.Errno(0x59)\n\tEDEADLK         = syscall.Errno(0x2d)\n\tEDESTADDREQ     = syscall.Errno(0x3a)\n\tEDESTADDRREQ    = syscall.Errno(0x3a)\n\tEDIST           = syscall.Errno(0x35)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x58)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFORMAT         = syscall.Errno(0x30)\n\tEHOSTDOWN       = syscall.Errno(0x50)\n\tEHOSTUNREACH    = syscall.Errno(0x51)\n\tEIDRM           = syscall.Errno(0x24)\n\tEILSEQ          = syscall.Errno(0x74)\n\tEINPROGRESS     = syscall.Errno(0x37)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x4b)\n\tEISDIR          = syscall.Errno(0x15)\n\tEL2HLT          = syscall.Errno(0x2c)\n\tEL2NSYNC        = syscall.Errno(0x26)\n\tEL3HLT          = syscall.Errno(0x27)\n\tEL3RST          = syscall.Errno(0x28)\n\tELNRNG          = syscall.Errno(0x29)\n\tELOOP           = syscall.Errno(0x55)\n\tEMEDIA          = syscall.Errno(0x6e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x3b)\n\tEMULTIHOP       = syscall.Errno(0x7d)\n\tENAMETOOLONG    = syscall.Errno(0x56)\n\tENETDOWN        = syscall.Errno(0x45)\n\tENETRESET       = syscall.Errno(0x47)\n\tENETUNREACH     = syscall.Errno(0x46)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x70)\n\tENOBUFS         = syscall.Errno(0x4a)\n\tENOCONNECT      = syscall.Errno(0x32)\n\tENOCSI          = syscall.Errno(0x2b)\n\tENODATA         = syscall.Errno(0x7a)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x31)\n\tENOLINK         = syscall.Errno(0x7e)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x23)\n\tENOPROTOOPT     = syscall.Errno(0x3d)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x76)\n\tENOSTR          = syscall.Errno(0x7b)\n\tENOSYS          = syscall.Errno(0x6d)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x4c)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x11)\n\tENOTREADY       = syscall.Errno(0x2e)\n\tENOTRECOVERABLE = syscall.Errno(0x5e)\n\tENOTRUST        = syscall.Errno(0x72)\n\tENOTSOCK        = syscall.Errno(0x39)\n\tENOTSUP         = syscall.Errno(0x7c)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x40)\n\tEOVERFLOW       = syscall.Errno(0x7f)\n\tEOWNERDEAD      = syscall.Errno(0x5f)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x41)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x53)\n\tEPROTO          = syscall.Errno(0x79)\n\tEPROTONOSUPPORT = syscall.Errno(0x3e)\n\tEPROTOTYPE      = syscall.Errno(0x3c)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x5d)\n\tERESTART        = syscall.Errno(0x52)\n\tEROFS           = syscall.Errno(0x1e)\n\tESAD            = syscall.Errno(0x71)\n\tESHUTDOWN       = syscall.Errno(0x4d)\n\tESOCKTNOSUPPORT = syscall.Errno(0x3f)\n\tESOFT           = syscall.Errno(0x6f)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x34)\n\tESYSERROR       = syscall.Errno(0x5a)\n\tETIME           = syscall.Errno(0x77)\n\tETIMEDOUT       = syscall.Errno(0x4e)\n\tETOOMANYREFS    = syscall.Errno(0x73)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUNATCH         = syscall.Errno(0x2a)\n\tEUSERS          = syscall.Errno(0x54)\n\tEWOULDBLOCK     = syscall.Errno(0xb)\n\tEWRPROTECT      = syscall.Errno(0x2f)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT     = syscall.Signal(0x6)\n\tSIGAIO      = syscall.Signal(0x17)\n\tSIGALRM     = syscall.Signal(0xe)\n\tSIGALRM1    = syscall.Signal(0x26)\n\tSIGBUS      = syscall.Signal(0xa)\n\tSIGCAPI     = syscall.Signal(0x31)\n\tSIGCHLD     = syscall.Signal(0x14)\n\tSIGCLD      = syscall.Signal(0x14)\n\tSIGCONT     = syscall.Signal(0x13)\n\tSIGCPUFAIL  = syscall.Signal(0x3b)\n\tSIGDANGER   = syscall.Signal(0x21)\n\tSIGEMT      = syscall.Signal(0x7)\n\tSIGFPE      = syscall.Signal(0x8)\n\tSIGGRANT    = syscall.Signal(0x3c)\n\tSIGHUP      = syscall.Signal(0x1)\n\tSIGILL      = syscall.Signal(0x4)\n\tSIGINT      = syscall.Signal(0x2)\n\tSIGIO       = syscall.Signal(0x17)\n\tSIGIOINT    = syscall.Signal(0x10)\n\tSIGIOT      = syscall.Signal(0x6)\n\tSIGKAP      = syscall.Signal(0x3c)\n\tSIGKILL     = syscall.Signal(0x9)\n\tSIGLOST     = syscall.Signal(0x6)\n\tSIGMAX      = syscall.Signal(0x3f)\n\tSIGMAX32    = syscall.Signal(0x3f)\n\tSIGMIGRATE  = syscall.Signal(0x23)\n\tSIGMSG      = syscall.Signal(0x1b)\n\tSIGPIPE     = syscall.Signal(0xd)\n\tSIGPOLL     = syscall.Signal(0x17)\n\tSIGPRE      = syscall.Signal(0x24)\n\tSIGPROF     = syscall.Signal(0x20)\n\tSIGPTY      = syscall.Signal(0x17)\n\tSIGPWR      = syscall.Signal(0x1d)\n\tSIGQUIT     = syscall.Signal(0x3)\n\tSIGRECONFIG = syscall.Signal(0x3a)\n\tSIGRETRACT  = syscall.Signal(0x3d)\n\tSIGSAK      = syscall.Signal(0x3f)\n\tSIGSEGV     = syscall.Signal(0xb)\n\tSIGSOUND    = syscall.Signal(0x3e)\n\tSIGSTOP     = syscall.Signal(0x11)\n\tSIGSYS      = syscall.Signal(0xc)\n\tSIGSYSERROR = syscall.Signal(0x30)\n\tSIGTALRM    = syscall.Signal(0x26)\n\tSIGTERM     = syscall.Signal(0xf)\n\tSIGTRAP     = syscall.Signal(0x5)\n\tSIGTSTP     = syscall.Signal(0x12)\n\tSIGTTIN     = syscall.Signal(0x15)\n\tSIGTTOU     = syscall.Signal(0x16)\n\tSIGURG      = syscall.Signal(0x10)\n\tSIGUSR1     = syscall.Signal(0x1e)\n\tSIGUSR2     = syscall.Signal(0x1f)\n\tSIGVIRT     = syscall.Signal(0x25)\n\tSIGVTALRM   = syscall.Signal(0x22)\n\tSIGWAITING  = syscall.Signal(0x27)\n\tSIGWINCH    = syscall.Signal(0x1c)\n\tSIGXCPU     = syscall.Signal(0x18)\n\tSIGXFSZ     = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"not owner\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"I/O error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"arg list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file number\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EWOULDBLOCK\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"not enough space\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"ENOTEMPTY\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"file table overflow\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"not a typewriter\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"ENOMSG\", \"no message of desired type\"},\n\t{36, \"EIDRM\", \"identifier removed\"},\n\t{37, \"ECHRNG\", \"channel number out of range\"},\n\t{38, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{39, \"EL3HLT\", \"level 3 halted\"},\n\t{40, \"EL3RST\", \"level 3 reset\"},\n\t{41, \"ELNRNG\", \"link number out of range\"},\n\t{42, \"EUNATCH\", \"protocol driver not attached\"},\n\t{43, \"ENOCSI\", \"no CSI structure available\"},\n\t{44, \"EL2HLT\", \"level 2 halted\"},\n\t{45, \"EDEADLK\", \"deadlock condition if locked\"},\n\t{46, \"ENOTREADY\", \"device not ready\"},\n\t{47, \"EWRPROTECT\", \"write-protected media\"},\n\t{48, \"EFORMAT\", \"unformatted or incompatible media\"},\n\t{49, \"ENOLCK\", \"no locks available\"},\n\t{50, \"ENOCONNECT\", \"cannot Establish Connection\"},\n\t{52, \"ESTALE\", \"missing file or filesystem\"},\n\t{53, \"EDIST\", \"requests blocked by Administrator\"},\n\t{55, \"EINPROGRESS\", \"operation now in progress\"},\n\t{56, \"EALREADY\", \"operation already in progress\"},\n\t{57, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{58, \"EDESTADDREQ\", \"destination address required\"},\n\t{59, \"EMSGSIZE\", \"message too long\"},\n\t{60, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{61, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{62, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{63, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{64, \"EOPNOTSUPP\", \"operation not supported on socket\"},\n\t{65, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{66, \"EAFNOSUPPORT\", \"addr family not supported by protocol\"},\n\t{67, \"EADDRINUSE\", \"address already in use\"},\n\t{68, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{69, \"ENETDOWN\", \"network is down\"},\n\t{70, \"ENETUNREACH\", \"network is unreachable\"},\n\t{71, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{72, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{73, \"ECONNRESET\", \"connection reset by peer\"},\n\t{74, \"ENOBUFS\", \"no buffer space available\"},\n\t{75, \"EISCONN\", \"socket is already connected\"},\n\t{76, \"ENOTCONN\", \"socket is not connected\"},\n\t{77, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{78, \"ETIMEDOUT\", \"connection timed out\"},\n\t{79, \"ECONNREFUSED\", \"connection refused\"},\n\t{80, \"EHOSTDOWN\", \"host is down\"},\n\t{81, \"EHOSTUNREACH\", \"no route to host\"},\n\t{82, \"ERESTART\", \"restart the system call\"},\n\t{83, \"EPROCLIM\", \"too many processes\"},\n\t{84, \"EUSERS\", \"too many users\"},\n\t{85, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{86, \"ENAMETOOLONG\", \"file name too long\"},\n\t{88, \"EDQUOT\", \"disk quota exceeded\"},\n\t{89, \"ECORRUPT\", \"invalid file system control data detected\"},\n\t{90, \"ESYSERROR\", \"for future use \"},\n\t{93, \"EREMOTE\", \"item is not local to host\"},\n\t{94, \"ENOTRECOVERABLE\", \"state not recoverable \"},\n\t{95, \"EOWNERDEAD\", \"previous owner died \"},\n\t{109, \"ENOSYS\", \"function not implemented\"},\n\t{110, \"EMEDIA\", \"media surface error\"},\n\t{111, \"ESOFT\", \"I/O completed, but needs relocation\"},\n\t{112, \"ENOATTR\", \"no attribute found\"},\n\t{113, \"ESAD\", \"security Authentication Denied\"},\n\t{114, \"ENOTRUST\", \"not a Trusted Program\"},\n\t{115, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{116, \"EILSEQ\", \"invalid wide character\"},\n\t{117, \"ECANCELED\", \"asynchronous I/O cancelled\"},\n\t{118, \"ENOSR\", \"out of STREAMS resources\"},\n\t{119, \"ETIME\", \"system call timed out\"},\n\t{120, \"EBADMSG\", \"next message has wrong type\"},\n\t{121, \"EPROTO\", \"error in protocol\"},\n\t{122, \"ENODATA\", \"no message on stream head read q\"},\n\t{123, \"ENOSTR\", \"fd not associated with a stream\"},\n\t{124, \"ENOTSUP\", \"unsupported attribute value\"},\n\t{125, \"EMULTIHOP\", \"multihop is not allowed\"},\n\t{126, \"ENOLINK\", \"the server link has been severed\"},\n\t{127, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"IOT/Abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"stopped (signal)\"},\n\t{18, \"SIGTSTP\", \"stopped\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible/complete\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{27, \"SIGMSG\", \"input device data\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGPWR\", \"power-failure\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGPROF\", \"profiling timer expired\"},\n\t{33, \"SIGDANGER\", \"paging space low\"},\n\t{34, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{35, \"SIGMIGRATE\", \"signal 35\"},\n\t{36, \"SIGPRE\", \"signal 36\"},\n\t{37, \"SIGVIRT\", \"signal 37\"},\n\t{38, \"SIGTALRM\", \"signal 38\"},\n\t{39, \"SIGWAITING\", \"signal 39\"},\n\t{48, \"SIGSYSERROR\", \"signal 48\"},\n\t{49, \"SIGCAPI\", \"signal 49\"},\n\t{58, \"SIGRECONFIG\", \"signal 58\"},\n\t{59, \"SIGCPUFAIL\", \"CPU Failure Predicted\"},\n\t{60, \"SIGKAP\", \"monitor mode granted\"},\n\t{61, \"SIGRETRACT\", \"monitor mode retracted\"},\n\t{62, \"SIGSOUND\", \"sound completed\"},\n\t{63, \"SIGSAK\", \"secure attention\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go",
    "content": "// mkerrors.sh -maix64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc64 && aix\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -maix64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                  = 0x10\n\tAF_BYPASS                     = 0x19\n\tAF_CCITT                      = 0xa\n\tAF_CHAOS                      = 0x5\n\tAF_DATAKIT                    = 0x9\n\tAF_DECnet                     = 0xc\n\tAF_DLI                        = 0xd\n\tAF_ECMA                       = 0x8\n\tAF_HYLINK                     = 0xf\n\tAF_IMPLINK                    = 0x3\n\tAF_INET                       = 0x2\n\tAF_INET6                      = 0x18\n\tAF_INTF                       = 0x14\n\tAF_ISO                        = 0x7\n\tAF_LAT                        = 0xe\n\tAF_LINK                       = 0x12\n\tAF_LOCAL                      = 0x1\n\tAF_MAX                        = 0x1e\n\tAF_NDD                        = 0x17\n\tAF_NETWARE                    = 0x16\n\tAF_NS                         = 0x6\n\tAF_OSI                        = 0x7\n\tAF_PUP                        = 0x4\n\tAF_RIF                        = 0x15\n\tAF_ROUTE                      = 0x11\n\tAF_SNA                        = 0xb\n\tAF_UNIX                       = 0x1\n\tAF_UNSPEC                     = 0x0\n\tALTWERASE                     = 0x400000\n\tARPHRD_802_3                  = 0x6\n\tARPHRD_802_5                  = 0x6\n\tARPHRD_ETHER                  = 0x1\n\tARPHRD_FDDI                   = 0x1\n\tB0                            = 0x0\n\tB110                          = 0x3\n\tB1200                         = 0x9\n\tB134                          = 0x4\n\tB150                          = 0x5\n\tB1800                         = 0xa\n\tB19200                        = 0xe\n\tB200                          = 0x6\n\tB2400                         = 0xb\n\tB300                          = 0x7\n\tB38400                        = 0xf\n\tB4800                         = 0xc\n\tB50                           = 0x1\n\tB600                          = 0x8\n\tB75                           = 0x2\n\tB9600                         = 0xd\n\tBRKINT                        = 0x2\n\tBS0                           = 0x0\n\tBS1                           = 0x1000\n\tBSDLY                         = 0x1000\n\tCAP_AACCT                     = 0x6\n\tCAP_ARM_APPLICATION           = 0x5\n\tCAP_BYPASS_RAC_VMM            = 0x3\n\tCAP_CLEAR                     = 0x0\n\tCAP_CREDENTIALS               = 0x7\n\tCAP_EFFECTIVE                 = 0x1\n\tCAP_EWLM_AGENT                = 0x4\n\tCAP_INHERITABLE               = 0x2\n\tCAP_MAXIMUM                   = 0x7\n\tCAP_NUMA_ATTACH               = 0x2\n\tCAP_PERMITTED                 = 0x3\n\tCAP_PROPAGATE                 = 0x1\n\tCAP_PROPOGATE                 = 0x1\n\tCAP_SET                       = 0x1\n\tCBAUD                         = 0xf\n\tCFLUSH                        = 0xf\n\tCIBAUD                        = 0xf0000\n\tCLOCAL                        = 0x800\n\tCLOCK_MONOTONIC               = 0xa\n\tCLOCK_PROCESS_CPUTIME_ID      = 0xb\n\tCLOCK_REALTIME                = 0x9\n\tCLOCK_THREAD_CPUTIME_ID       = 0xc\n\tCR0                           = 0x0\n\tCR1                           = 0x100\n\tCR2                           = 0x200\n\tCR3                           = 0x300\n\tCRDLY                         = 0x300\n\tCREAD                         = 0x80\n\tCS5                           = 0x0\n\tCS6                           = 0x10\n\tCS7                           = 0x20\n\tCS8                           = 0x30\n\tCSIOCGIFCONF                  = -0x3fef96dc\n\tCSIZE                         = 0x30\n\tCSMAP_DIR                     = \"/usr/lib/nls/csmap/\"\n\tCSTART                        = '\\021'\n\tCSTOP                         = '\\023'\n\tCSTOPB                        = 0x40\n\tCSUSP                         = 0x1a\n\tECHO                          = 0x8\n\tECHOCTL                       = 0x20000\n\tECHOE                         = 0x10\n\tECHOK                         = 0x20\n\tECHOKE                        = 0x80000\n\tECHONL                        = 0x40\n\tECHOPRT                       = 0x40000\n\tECH_ICMPID                    = 0x2\n\tETHERNET_CSMACD               = 0x6\n\tEVENP                         = 0x80\n\tEXCONTINUE                    = 0x0\n\tEXDLOK                        = 0x3\n\tEXIO                          = 0x2\n\tEXPGIO                        = 0x0\n\tEXRESUME                      = 0x2\n\tEXRETURN                      = 0x1\n\tEXSIG                         = 0x4\n\tEXTA                          = 0xe\n\tEXTB                          = 0xf\n\tEXTRAP                        = 0x1\n\tEYEC_RTENTRYA                 = 0x257274656e747241\n\tEYEC_RTENTRYF                 = 0x257274656e747246\n\tE_ACC                         = 0x0\n\tFD_CLOEXEC                    = 0x1\n\tFD_SETSIZE                    = 0xfffe\n\tFF0                           = 0x0\n\tFF1                           = 0x2000\n\tFFDLY                         = 0x2000\n\tFLUSHBAND                     = 0x40\n\tFLUSHLOW                      = 0x8\n\tFLUSHO                        = 0x100000\n\tFLUSHR                        = 0x1\n\tFLUSHRW                       = 0x3\n\tFLUSHW                        = 0x2\n\tF_CLOSEM                      = 0xa\n\tF_DUP2FD                      = 0xe\n\tF_DUPFD                       = 0x0\n\tF_GETFD                       = 0x1\n\tF_GETFL                       = 0x3\n\tF_GETLK                       = 0xb\n\tF_GETLK64                     = 0xb\n\tF_GETOWN                      = 0x8\n\tF_LOCK                        = 0x1\n\tF_OK                          = 0x0\n\tF_RDLCK                       = 0x1\n\tF_SETFD                       = 0x2\n\tF_SETFL                       = 0x4\n\tF_SETLK                       = 0xc\n\tF_SETLK64                     = 0xc\n\tF_SETLKW                      = 0xd\n\tF_SETLKW64                    = 0xd\n\tF_SETOWN                      = 0x9\n\tF_TEST                        = 0x3\n\tF_TLOCK                       = 0x2\n\tF_TSTLK                       = 0xf\n\tF_ULOCK                       = 0x0\n\tF_UNLCK                       = 0x3\n\tF_WRLCK                       = 0x2\n\tHUPCL                         = 0x400\n\tIBSHIFT                       = 0x10\n\tICANON                        = 0x2\n\tICMP6_FILTER                  = 0x26\n\tICMP6_SEC_SEND_DEL            = 0x46\n\tICMP6_SEC_SEND_GET            = 0x47\n\tICMP6_SEC_SEND_SET            = 0x44\n\tICMP6_SEC_SEND_SET_CGA_ADDR   = 0x45\n\tICRNL                         = 0x100\n\tIEXTEN                        = 0x200000\n\tIFA_FIRSTALIAS                = 0x2000\n\tIFA_ROUTE                     = 0x1\n\tIFF_64BIT                     = 0x4000000\n\tIFF_ALLCAST                   = 0x20000\n\tIFF_ALLMULTI                  = 0x200\n\tIFF_BPF                       = 0x8000000\n\tIFF_BRIDGE                    = 0x40000\n\tIFF_BROADCAST                 = 0x2\n\tIFF_CANTCHANGE                = 0x80c52\n\tIFF_CHECKSUM_OFFLOAD          = 0x10000000\n\tIFF_D1                        = 0x8000\n\tIFF_D2                        = 0x4000\n\tIFF_D3                        = 0x2000\n\tIFF_D4                        = 0x1000\n\tIFF_DEBUG                     = 0x4\n\tIFF_DEVHEALTH                 = 0x4000\n\tIFF_DO_HW_LOOPBACK            = 0x10000\n\tIFF_GROUP_ROUTING             = 0x2000000\n\tIFF_IFBUFMGT                  = 0x800000\n\tIFF_LINK0                     = 0x100000\n\tIFF_LINK1                     = 0x200000\n\tIFF_LINK2                     = 0x400000\n\tIFF_LOOPBACK                  = 0x8\n\tIFF_MULTICAST                 = 0x80000\n\tIFF_NOARP                     = 0x80\n\tIFF_NOECHO                    = 0x800\n\tIFF_NOTRAILERS                = 0x20\n\tIFF_OACTIVE                   = 0x400\n\tIFF_POINTOPOINT               = 0x10\n\tIFF_PROMISC                   = 0x100\n\tIFF_PSEG                      = 0x40000000\n\tIFF_RUNNING                   = 0x40\n\tIFF_SIMPLEX                   = 0x800\n\tIFF_SNAP                      = 0x8000\n\tIFF_TCP_DISABLE_CKSUM         = 0x20000000\n\tIFF_TCP_NOCKSUM               = 0x1000000\n\tIFF_UP                        = 0x1\n\tIFF_VIPA                      = 0x80000000\n\tIFNAMSIZ                      = 0x10\n\tIFO_FLUSH                     = 0x1\n\tIFT_1822                      = 0x2\n\tIFT_AAL5                      = 0x31\n\tIFT_ARCNET                    = 0x23\n\tIFT_ARCNETPLUS                = 0x24\n\tIFT_ATM                       = 0x25\n\tIFT_CEPT                      = 0x13\n\tIFT_CLUSTER                   = 0x3e\n\tIFT_DS3                       = 0x1e\n\tIFT_EON                       = 0x19\n\tIFT_ETHER                     = 0x6\n\tIFT_FCS                       = 0x3a\n\tIFT_FDDI                      = 0xf\n\tIFT_FRELAY                    = 0x20\n\tIFT_FRELAYDCE                 = 0x2c\n\tIFT_GIFTUNNEL                 = 0x3c\n\tIFT_HDH1822                   = 0x3\n\tIFT_HF                        = 0x3d\n\tIFT_HIPPI                     = 0x2f\n\tIFT_HSSI                      = 0x2e\n\tIFT_HY                        = 0xe\n\tIFT_IB                        = 0xc7\n\tIFT_ISDNBASIC                 = 0x14\n\tIFT_ISDNPRIMARY               = 0x15\n\tIFT_ISO88022LLC               = 0x29\n\tIFT_ISO88023                  = 0x7\n\tIFT_ISO88024                  = 0x8\n\tIFT_ISO88025                  = 0x9\n\tIFT_ISO88026                  = 0xa\n\tIFT_LAPB                      = 0x10\n\tIFT_LOCALTALK                 = 0x2a\n\tIFT_LOOP                      = 0x18\n\tIFT_MIOX25                    = 0x26\n\tIFT_MODEM                     = 0x30\n\tIFT_NSIP                      = 0x1b\n\tIFT_OTHER                     = 0x1\n\tIFT_P10                       = 0xc\n\tIFT_P80                       = 0xd\n\tIFT_PARA                      = 0x22\n\tIFT_PPP                       = 0x17\n\tIFT_PROPMUX                   = 0x36\n\tIFT_PROPVIRTUAL               = 0x35\n\tIFT_PTPSERIAL                 = 0x16\n\tIFT_RS232                     = 0x21\n\tIFT_SDLC                      = 0x11\n\tIFT_SIP                       = 0x1f\n\tIFT_SLIP                      = 0x1c\n\tIFT_SMDSDXI                   = 0x2b\n\tIFT_SMDSICIP                  = 0x34\n\tIFT_SN                        = 0x38\n\tIFT_SONET                     = 0x27\n\tIFT_SONETPATH                 = 0x32\n\tIFT_SONETVT                   = 0x33\n\tIFT_SP                        = 0x39\n\tIFT_STARLAN                   = 0xb\n\tIFT_T1                        = 0x12\n\tIFT_TUNNEL                    = 0x3b\n\tIFT_ULTRA                     = 0x1d\n\tIFT_V35                       = 0x2d\n\tIFT_VIPA                      = 0x37\n\tIFT_X25                       = 0x5\n\tIFT_X25DDN                    = 0x4\n\tIFT_X25PLE                    = 0x28\n\tIFT_XETHER                    = 0x1a\n\tIGNBRK                        = 0x1\n\tIGNCR                         = 0x80\n\tIGNPAR                        = 0x4\n\tIMAXBEL                       = 0x10000\n\tINLCR                         = 0x40\n\tINPCK                         = 0x10\n\tIN_CLASSA_HOST                = 0xffffff\n\tIN_CLASSA_MAX                 = 0x80\n\tIN_CLASSA_NET                 = 0xff000000\n\tIN_CLASSA_NSHIFT              = 0x18\n\tIN_CLASSB_HOST                = 0xffff\n\tIN_CLASSB_MAX                 = 0x10000\n\tIN_CLASSB_NET                 = 0xffff0000\n\tIN_CLASSB_NSHIFT              = 0x10\n\tIN_CLASSC_HOST                = 0xff\n\tIN_CLASSC_NET                 = 0xffffff00\n\tIN_CLASSC_NSHIFT              = 0x8\n\tIN_CLASSD_HOST                = 0xfffffff\n\tIN_CLASSD_NET                 = 0xf0000000\n\tIN_CLASSD_NSHIFT              = 0x1c\n\tIN_LOOPBACKNET                = 0x7f\n\tIN_USE                        = 0x1\n\tIPPROTO_AH                    = 0x33\n\tIPPROTO_BIP                   = 0x53\n\tIPPROTO_DSTOPTS               = 0x3c\n\tIPPROTO_EGP                   = 0x8\n\tIPPROTO_EON                   = 0x50\n\tIPPROTO_ESP                   = 0x32\n\tIPPROTO_FRAGMENT              = 0x2c\n\tIPPROTO_GGP                   = 0x3\n\tIPPROTO_GIF                   = 0x8c\n\tIPPROTO_GRE                   = 0x2f\n\tIPPROTO_HOPOPTS               = 0x0\n\tIPPROTO_ICMP                  = 0x1\n\tIPPROTO_ICMPV6                = 0x3a\n\tIPPROTO_IDP                   = 0x16\n\tIPPROTO_IGMP                  = 0x2\n\tIPPROTO_IP                    = 0x0\n\tIPPROTO_IPIP                  = 0x4\n\tIPPROTO_IPV6                  = 0x29\n\tIPPROTO_LOCAL                 = 0x3f\n\tIPPROTO_MAX                   = 0x100\n\tIPPROTO_MH                    = 0x87\n\tIPPROTO_NONE                  = 0x3b\n\tIPPROTO_PUP                   = 0xc\n\tIPPROTO_QOS                   = 0x2d\n\tIPPROTO_RAW                   = 0xff\n\tIPPROTO_ROUTING               = 0x2b\n\tIPPROTO_RSVP                  = 0x2e\n\tIPPROTO_SCTP                  = 0x84\n\tIPPROTO_TCP                   = 0x6\n\tIPPROTO_TP                    = 0x1d\n\tIPPROTO_UDP                   = 0x11\n\tIPV6_ADDRFORM                 = 0x16\n\tIPV6_ADDR_PREFERENCES         = 0x4a\n\tIPV6_ADD_MEMBERSHIP           = 0xc\n\tIPV6_AIXRAWSOCKET             = 0x39\n\tIPV6_CHECKSUM                 = 0x27\n\tIPV6_DONTFRAG                 = 0x2d\n\tIPV6_DROP_MEMBERSHIP          = 0xd\n\tIPV6_DSTOPTS                  = 0x36\n\tIPV6_FLOWINFO_FLOWLABEL       = 0xffffff\n\tIPV6_FLOWINFO_PRIFLOW         = 0xfffffff\n\tIPV6_FLOWINFO_PRIORITY        = 0xf000000\n\tIPV6_FLOWINFO_SRFLAG          = 0x10000000\n\tIPV6_FLOWINFO_VERSION         = 0xf0000000\n\tIPV6_HOPLIMIT                 = 0x28\n\tIPV6_HOPOPTS                  = 0x34\n\tIPV6_JOIN_GROUP               = 0xc\n\tIPV6_LEAVE_GROUP              = 0xd\n\tIPV6_MIPDSTOPTS               = 0x36\n\tIPV6_MULTICAST_HOPS           = 0xa\n\tIPV6_MULTICAST_IF             = 0x9\n\tIPV6_MULTICAST_LOOP           = 0xb\n\tIPV6_NEXTHOP                  = 0x30\n\tIPV6_NOPROBE                  = 0x1c\n\tIPV6_PATHMTU                  = 0x2e\n\tIPV6_PKTINFO                  = 0x21\n\tIPV6_PKTOPTIONS               = 0x24\n\tIPV6_PRIORITY_10              = 0xa000000\n\tIPV6_PRIORITY_11              = 0xb000000\n\tIPV6_PRIORITY_12              = 0xc000000\n\tIPV6_PRIORITY_13              = 0xd000000\n\tIPV6_PRIORITY_14              = 0xe000000\n\tIPV6_PRIORITY_15              = 0xf000000\n\tIPV6_PRIORITY_8               = 0x8000000\n\tIPV6_PRIORITY_9               = 0x9000000\n\tIPV6_PRIORITY_BULK            = 0x4000000\n\tIPV6_PRIORITY_CONTROL         = 0x7000000\n\tIPV6_PRIORITY_FILLER          = 0x1000000\n\tIPV6_PRIORITY_INTERACTIVE     = 0x6000000\n\tIPV6_PRIORITY_RESERVED1       = 0x3000000\n\tIPV6_PRIORITY_RESERVED2       = 0x5000000\n\tIPV6_PRIORITY_UNATTENDED      = 0x2000000\n\tIPV6_PRIORITY_UNCHARACTERIZED = 0x0\n\tIPV6_RECVDSTOPTS              = 0x38\n\tIPV6_RECVHOPLIMIT             = 0x29\n\tIPV6_RECVHOPOPTS              = 0x35\n\tIPV6_RECVHOPS                 = 0x22\n\tIPV6_RECVIF                   = 0x1e\n\tIPV6_RECVPATHMTU              = 0x2f\n\tIPV6_RECVPKTINFO              = 0x23\n\tIPV6_RECVRTHDR                = 0x33\n\tIPV6_RECVSRCRT                = 0x1d\n\tIPV6_RECVTCLASS               = 0x2a\n\tIPV6_RTHDR                    = 0x32\n\tIPV6_RTHDRDSTOPTS             = 0x37\n\tIPV6_RTHDR_TYPE_0             = 0x0\n\tIPV6_RTHDR_TYPE_2             = 0x2\n\tIPV6_SENDIF                   = 0x1f\n\tIPV6_SRFLAG_LOOSE             = 0x0\n\tIPV6_SRFLAG_STRICT            = 0x10000000\n\tIPV6_TCLASS                   = 0x2b\n\tIPV6_TOKEN_LENGTH             = 0x40\n\tIPV6_UNICAST_HOPS             = 0x4\n\tIPV6_USE_MIN_MTU              = 0x2c\n\tIPV6_V6ONLY                   = 0x25\n\tIPV6_VERSION                  = 0x60000000\n\tIP_ADDRFORM                   = 0x16\n\tIP_ADD_MEMBERSHIP             = 0xc\n\tIP_ADD_SOURCE_MEMBERSHIP      = 0x3c\n\tIP_BLOCK_SOURCE               = 0x3a\n\tIP_BROADCAST_IF               = 0x10\n\tIP_CACHE_LINE_SIZE            = 0x80\n\tIP_DEFAULT_MULTICAST_LOOP     = 0x1\n\tIP_DEFAULT_MULTICAST_TTL      = 0x1\n\tIP_DF                         = 0x4000\n\tIP_DHCPMODE                   = 0x11\n\tIP_DONTFRAG                   = 0x19\n\tIP_DROP_MEMBERSHIP            = 0xd\n\tIP_DROP_SOURCE_MEMBERSHIP     = 0x3d\n\tIP_FINDPMTU                   = 0x1a\n\tIP_HDRINCL                    = 0x2\n\tIP_INC_MEMBERSHIPS            = 0x14\n\tIP_INIT_MEMBERSHIP            = 0x14\n\tIP_MAXPACKET                  = 0xffff\n\tIP_MF                         = 0x2000\n\tIP_MSS                        = 0x240\n\tIP_MULTICAST_HOPS             = 0xa\n\tIP_MULTICAST_IF               = 0x9\n\tIP_MULTICAST_LOOP             = 0xb\n\tIP_MULTICAST_TTL              = 0xa\n\tIP_OPT                        = 0x1b\n\tIP_OPTIONS                    = 0x1\n\tIP_PMTUAGE                    = 0x1b\n\tIP_RECVDSTADDR                = 0x7\n\tIP_RECVIF                     = 0x14\n\tIP_RECVIFINFO                 = 0xf\n\tIP_RECVINTERFACE              = 0x20\n\tIP_RECVMACHDR                 = 0xe\n\tIP_RECVOPTS                   = 0x5\n\tIP_RECVRETOPTS                = 0x6\n\tIP_RECVTTL                    = 0x22\n\tIP_RETOPTS                    = 0x8\n\tIP_SOURCE_FILTER              = 0x48\n\tIP_TOS                        = 0x3\n\tIP_TTL                        = 0x4\n\tIP_UNBLOCK_SOURCE             = 0x3b\n\tIP_UNICAST_HOPS               = 0x4\n\tISIG                          = 0x1\n\tISTRIP                        = 0x20\n\tIUCLC                         = 0x800\n\tIXANY                         = 0x1000\n\tIXOFF                         = 0x400\n\tIXON                          = 0x200\n\tI_FLUSH                       = 0x20005305\n\tLNOFLSH                       = 0x8000\n\tLOCK_EX                       = 0x2\n\tLOCK_NB                       = 0x4\n\tLOCK_SH                       = 0x1\n\tLOCK_UN                       = 0x8\n\tMADV_DONTNEED                 = 0x4\n\tMADV_NORMAL                   = 0x0\n\tMADV_RANDOM                   = 0x1\n\tMADV_SEQUENTIAL               = 0x2\n\tMADV_SPACEAVAIL               = 0x5\n\tMADV_WILLNEED                 = 0x3\n\tMAP_ANON                      = 0x10\n\tMAP_ANONYMOUS                 = 0x10\n\tMAP_FILE                      = 0x0\n\tMAP_FIXED                     = 0x100\n\tMAP_PRIVATE                   = 0x2\n\tMAP_SHARED                    = 0x1\n\tMAP_TYPE                      = 0xf0\n\tMAP_VARIABLE                  = 0x0\n\tMCAST_BLOCK_SOURCE            = 0x40\n\tMCAST_EXCLUDE                 = 0x2\n\tMCAST_INCLUDE                 = 0x1\n\tMCAST_JOIN_GROUP              = 0x3e\n\tMCAST_JOIN_SOURCE_GROUP       = 0x42\n\tMCAST_LEAVE_GROUP             = 0x3f\n\tMCAST_LEAVE_SOURCE_GROUP      = 0x43\n\tMCAST_SOURCE_FILTER           = 0x49\n\tMCAST_UNBLOCK_SOURCE          = 0x41\n\tMCL_CURRENT                   = 0x100\n\tMCL_FUTURE                    = 0x200\n\tMSG_ANY                       = 0x4\n\tMSG_ARGEXT                    = 0x400\n\tMSG_BAND                      = 0x2\n\tMSG_COMPAT                    = 0x8000\n\tMSG_CTRUNC                    = 0x20\n\tMSG_DONTROUTE                 = 0x4\n\tMSG_EOR                       = 0x8\n\tMSG_HIPRI                     = 0x1\n\tMSG_MAXIOVLEN                 = 0x10\n\tMSG_MPEG2                     = 0x80\n\tMSG_NONBLOCK                  = 0x4000\n\tMSG_NOSIGNAL                  = 0x100\n\tMSG_OOB                       = 0x1\n\tMSG_PEEK                      = 0x2\n\tMSG_TRUNC                     = 0x10\n\tMSG_WAITALL                   = 0x40\n\tMSG_WAITFORONE                = 0x200\n\tMS_ASYNC                      = 0x10\n\tMS_EINTR                      = 0x80\n\tMS_INVALIDATE                 = 0x40\n\tMS_PER_SEC                    = 0x3e8\n\tMS_SYNC                       = 0x20\n\tNFDBITS                       = 0x40\n\tNL0                           = 0x0\n\tNL1                           = 0x4000\n\tNL2                           = 0x8000\n\tNL3                           = 0xc000\n\tNLDLY                         = 0x4000\n\tNOFLSH                        = 0x80\n\tNOFLUSH                       = 0x80000000\n\tOCRNL                         = 0x8\n\tOFDEL                         = 0x80\n\tOFILL                         = 0x40\n\tOLCUC                         = 0x2\n\tONLCR                         = 0x4\n\tONLRET                        = 0x20\n\tONOCR                         = 0x10\n\tONOEOT                        = 0x80000\n\tOPOST                         = 0x1\n\tOXTABS                        = 0x40000\n\tO_ACCMODE                     = 0x23\n\tO_APPEND                      = 0x8\n\tO_CIO                         = 0x80\n\tO_CIOR                        = 0x800000000\n\tO_CLOEXEC                     = 0x800000\n\tO_CREAT                       = 0x100\n\tO_DEFER                       = 0x2000\n\tO_DELAY                       = 0x4000\n\tO_DIRECT                      = 0x8000000\n\tO_DIRECTORY                   = 0x80000\n\tO_DSYNC                       = 0x400000\n\tO_EFSOFF                      = 0x400000000\n\tO_EFSON                       = 0x200000000\n\tO_EXCL                        = 0x400\n\tO_EXEC                        = 0x20\n\tO_LARGEFILE                   = 0x4000000\n\tO_NDELAY                      = 0x8000\n\tO_NOCACHE                     = 0x100000\n\tO_NOCTTY                      = 0x800\n\tO_NOFOLLOW                    = 0x1000000\n\tO_NONBLOCK                    = 0x4\n\tO_NONE                        = 0x3\n\tO_NSHARE                      = 0x10000\n\tO_RAW                         = 0x100000000\n\tO_RDONLY                      = 0x0\n\tO_RDWR                        = 0x2\n\tO_RSHARE                      = 0x1000\n\tO_RSYNC                       = 0x200000\n\tO_SEARCH                      = 0x20\n\tO_SNAPSHOT                    = 0x40\n\tO_SYNC                        = 0x10\n\tO_TRUNC                       = 0x200\n\tO_TTY_INIT                    = 0x0\n\tO_WRONLY                      = 0x1\n\tPARENB                        = 0x100\n\tPAREXT                        = 0x100000\n\tPARMRK                        = 0x8\n\tPARODD                        = 0x200\n\tPENDIN                        = 0x20000000\n\tPRIO_PGRP                     = 0x1\n\tPRIO_PROCESS                  = 0x0\n\tPRIO_USER                     = 0x2\n\tPROT_EXEC                     = 0x4\n\tPROT_NONE                     = 0x0\n\tPROT_READ                     = 0x1\n\tPROT_WRITE                    = 0x2\n\tPR_64BIT                      = 0x20\n\tPR_ADDR                       = 0x2\n\tPR_ARGEXT                     = 0x400\n\tPR_ATOMIC                     = 0x1\n\tPR_CONNREQUIRED               = 0x4\n\tPR_FASTHZ                     = 0x5\n\tPR_INP                        = 0x40\n\tPR_INTRLEVEL                  = 0x8000\n\tPR_MLS                        = 0x100\n\tPR_MLS_1_LABEL                = 0x200\n\tPR_NOEOR                      = 0x4000\n\tPR_RIGHTS                     = 0x10\n\tPR_SLOWHZ                     = 0x2\n\tPR_WANTRCVD                   = 0x8\n\tRLIMIT_AS                     = 0x6\n\tRLIMIT_CORE                   = 0x4\n\tRLIMIT_CPU                    = 0x0\n\tRLIMIT_DATA                   = 0x2\n\tRLIMIT_FSIZE                  = 0x1\n\tRLIMIT_NOFILE                 = 0x7\n\tRLIMIT_NPROC                  = 0x9\n\tRLIMIT_RSS                    = 0x5\n\tRLIMIT_STACK                  = 0x3\n\tRLIM_INFINITY                 = 0x7fffffffffffffff\n\tRTAX_AUTHOR                   = 0x6\n\tRTAX_BRD                      = 0x7\n\tRTAX_DST                      = 0x0\n\tRTAX_GATEWAY                  = 0x1\n\tRTAX_GENMASK                  = 0x3\n\tRTAX_IFA                      = 0x5\n\tRTAX_IFP                      = 0x4\n\tRTAX_MAX                      = 0x8\n\tRTAX_NETMASK                  = 0x2\n\tRTA_AUTHOR                    = 0x40\n\tRTA_BRD                       = 0x80\n\tRTA_DOWNSTREAM                = 0x100\n\tRTA_DST                       = 0x1\n\tRTA_GATEWAY                   = 0x2\n\tRTA_GENMASK                   = 0x8\n\tRTA_IFA                       = 0x20\n\tRTA_IFP                       = 0x10\n\tRTA_NETMASK                   = 0x4\n\tRTC_IA64                      = 0x3\n\tRTC_POWER                     = 0x1\n\tRTC_POWER_PC                  = 0x2\n\tRTF_ACTIVE_DGD                = 0x1000000\n\tRTF_BCE                       = 0x80000\n\tRTF_BLACKHOLE                 = 0x1000\n\tRTF_BROADCAST                 = 0x400000\n\tRTF_BUL                       = 0x2000\n\tRTF_CLONE                     = 0x10000\n\tRTF_CLONED                    = 0x20000\n\tRTF_CLONING                   = 0x100\n\tRTF_DONE                      = 0x40\n\tRTF_DYNAMIC                   = 0x10\n\tRTF_FREE_IN_PROG              = 0x4000000\n\tRTF_GATEWAY                   = 0x2\n\tRTF_HOST                      = 0x4\n\tRTF_LLINFO                    = 0x400\n\tRTF_LOCAL                     = 0x200000\n\tRTF_MASK                      = 0x80\n\tRTF_MODIFIED                  = 0x20\n\tRTF_MULTICAST                 = 0x800000\n\tRTF_PERMANENT6                = 0x8000000\n\tRTF_PINNED                    = 0x100000\n\tRTF_PROTO1                    = 0x8000\n\tRTF_PROTO2                    = 0x4000\n\tRTF_PROTO3                    = 0x40000\n\tRTF_REJECT                    = 0x8\n\tRTF_SMALLMTU                  = 0x40000\n\tRTF_STATIC                    = 0x800\n\tRTF_STOPSRCH                  = 0x2000000\n\tRTF_UNREACHABLE               = 0x10000000\n\tRTF_UP                        = 0x1\n\tRTF_XRESOLVE                  = 0x200\n\tRTM_ADD                       = 0x1\n\tRTM_CHANGE                    = 0x3\n\tRTM_DELADDR                   = 0xd\n\tRTM_DELETE                    = 0x2\n\tRTM_EXPIRE                    = 0xf\n\tRTM_GET                       = 0x4\n\tRTM_GETNEXT                   = 0x11\n\tRTM_IFINFO                    = 0xe\n\tRTM_LOCK                      = 0x8\n\tRTM_LOSING                    = 0x5\n\tRTM_MISS                      = 0x7\n\tRTM_NEWADDR                   = 0xc\n\tRTM_OLDADD                    = 0x9\n\tRTM_OLDDEL                    = 0xa\n\tRTM_REDIRECT                  = 0x6\n\tRTM_RESOLVE                   = 0xb\n\tRTM_RTLOST                    = 0x10\n\tRTM_RTTUNIT                   = 0xf4240\n\tRTM_SAMEADDR                  = 0x12\n\tRTM_SET                       = 0x13\n\tRTM_VERSION                   = 0x2\n\tRTM_VERSION_GR                = 0x4\n\tRTM_VERSION_GR_COMPAT         = 0x3\n\tRTM_VERSION_POLICY            = 0x5\n\tRTM_VERSION_POLICY_EXT        = 0x6\n\tRTM_VERSION_POLICY_PRFN       = 0x7\n\tRTV_EXPIRE                    = 0x4\n\tRTV_HOPCOUNT                  = 0x2\n\tRTV_MTU                       = 0x1\n\tRTV_RPIPE                     = 0x8\n\tRTV_RTT                       = 0x40\n\tRTV_RTTVAR                    = 0x80\n\tRTV_SPIPE                     = 0x10\n\tRTV_SSTHRESH                  = 0x20\n\tRUSAGE_CHILDREN               = -0x1\n\tRUSAGE_SELF                   = 0x0\n\tRUSAGE_THREAD                 = 0x1\n\tSCM_RIGHTS                    = 0x1\n\tSHUT_RD                       = 0x0\n\tSHUT_RDWR                     = 0x2\n\tSHUT_WR                       = 0x1\n\tSIGMAX64                      = 0xff\n\tSIGQUEUE_MAX                  = 0x20\n\tSIOCADDIFVIPA                 = 0x20006942\n\tSIOCADDMTU                    = -0x7ffb9690\n\tSIOCADDMULTI                  = -0x7fdf96cf\n\tSIOCADDNETID                  = -0x7fd796a9\n\tSIOCADDRT                     = -0x7fc78df6\n\tSIOCAIFADDR                   = -0x7fbf96e6\n\tSIOCATMARK                    = 0x40047307\n\tSIOCDARP                      = -0x7fb396e0\n\tSIOCDELIFVIPA                 = 0x20006943\n\tSIOCDELMTU                    = -0x7ffb968f\n\tSIOCDELMULTI                  = -0x7fdf96ce\n\tSIOCDELPMTU                   = -0x7fd78ff6\n\tSIOCDELRT                     = -0x7fc78df5\n\tSIOCDIFADDR                   = -0x7fd796e7\n\tSIOCDNETOPT                   = -0x3ffe9680\n\tSIOCDX25XLATE                 = -0x7fd7969b\n\tSIOCFIFADDR                   = -0x7fdf966d\n\tSIOCGARP                      = -0x3fb396da\n\tSIOCGETMTUS                   = 0x2000696f\n\tSIOCGETSGCNT                  = -0x3feb8acc\n\tSIOCGETVIFCNT                 = -0x3feb8acd\n\tSIOCGHIWAT                    = 0x40047301\n\tSIOCGIFADDR                   = -0x3fd796df\n\tSIOCGIFADDRS                  = 0x2000698c\n\tSIOCGIFBAUDRATE               = -0x3fdf9669\n\tSIOCGIFBRDADDR                = -0x3fd796dd\n\tSIOCGIFCONF                   = -0x3fef96bb\n\tSIOCGIFCONFGLOB               = -0x3fef9670\n\tSIOCGIFDSTADDR                = -0x3fd796de\n\tSIOCGIFFLAGS                  = -0x3fd796ef\n\tSIOCGIFGIDLIST                = 0x20006968\n\tSIOCGIFHWADDR                 = -0x3fab966b\n\tSIOCGIFMETRIC                 = -0x3fd796e9\n\tSIOCGIFMTU                    = -0x3fd796aa\n\tSIOCGIFNETMASK                = -0x3fd796db\n\tSIOCGIFOPTIONS                = -0x3fd796d6\n\tSIOCGISNO                     = -0x3fd79695\n\tSIOCGLOADF                    = -0x3ffb967e\n\tSIOCGLOWAT                    = 0x40047303\n\tSIOCGNETOPT                   = -0x3ffe96a5\n\tSIOCGNETOPT1                  = -0x3fdf967f\n\tSIOCGNMTUS                    = 0x2000696e\n\tSIOCGPGRP                     = 0x40047309\n\tSIOCGSIZIFCONF                = 0x4004696a\n\tSIOCGSRCFILTER                = -0x3fe796cb\n\tSIOCGTUNEPHASE                = -0x3ffb9676\n\tSIOCGX25XLATE                 = -0x3fd7969c\n\tSIOCIFATTACH                  = -0x7fdf9699\n\tSIOCIFDETACH                  = -0x7fdf969a\n\tSIOCIFGETPKEY                 = -0x7fdf969b\n\tSIOCIF_ATM_DARP               = -0x7fdf9683\n\tSIOCIF_ATM_DUMPARP            = -0x7fdf9685\n\tSIOCIF_ATM_GARP               = -0x7fdf9682\n\tSIOCIF_ATM_IDLE               = -0x7fdf9686\n\tSIOCIF_ATM_SARP               = -0x7fdf9681\n\tSIOCIF_ATM_SNMPARP            = -0x7fdf9687\n\tSIOCIF_ATM_SVC                = -0x7fdf9684\n\tSIOCIF_ATM_UBR                = -0x7fdf9688\n\tSIOCIF_DEVHEALTH              = -0x7ffb966c\n\tSIOCIF_IB_ARP_INCOMP          = -0x7fdf9677\n\tSIOCIF_IB_ARP_TIMER           = -0x7fdf9678\n\tSIOCIF_IB_CLEAR_PINFO         = -0x3fdf966f\n\tSIOCIF_IB_DEL_ARP             = -0x7fdf967f\n\tSIOCIF_IB_DEL_PINFO           = -0x3fdf9670\n\tSIOCIF_IB_DUMP_ARP            = -0x7fdf9680\n\tSIOCIF_IB_GET_ARP             = -0x7fdf967e\n\tSIOCIF_IB_GET_INFO            = -0x3f879675\n\tSIOCIF_IB_GET_STATS           = -0x3f879672\n\tSIOCIF_IB_NOTIFY_ADDR_REM     = -0x3f87966a\n\tSIOCIF_IB_RESET_STATS         = -0x3f879671\n\tSIOCIF_IB_RESIZE_CQ           = -0x7fdf9679\n\tSIOCIF_IB_SET_ARP             = -0x7fdf967d\n\tSIOCIF_IB_SET_PKEY            = -0x7fdf967c\n\tSIOCIF_IB_SET_PORT            = -0x7fdf967b\n\tSIOCIF_IB_SET_QKEY            = -0x7fdf9676\n\tSIOCIF_IB_SET_QSIZE           = -0x7fdf967a\n\tSIOCLISTIFVIPA                = 0x20006944\n\tSIOCSARP                      = -0x7fb396e2\n\tSIOCSHIWAT                    = 0xffffffff80047300\n\tSIOCSIFADDR                   = -0x7fd796f4\n\tSIOCSIFADDRORI                = -0x7fdb9673\n\tSIOCSIFBRDADDR                = -0x7fd796ed\n\tSIOCSIFDSTADDR                = -0x7fd796f2\n\tSIOCSIFFLAGS                  = -0x7fd796f0\n\tSIOCSIFGIDLIST                = 0x20006969\n\tSIOCSIFMETRIC                 = -0x7fd796e8\n\tSIOCSIFMTU                    = -0x7fd796a8\n\tSIOCSIFNETDUMP                = -0x7fd796e4\n\tSIOCSIFNETMASK                = -0x7fd796ea\n\tSIOCSIFOPTIONS                = -0x7fd796d7\n\tSIOCSIFSUBCHAN                = -0x7fd796e5\n\tSIOCSISNO                     = -0x7fd79694\n\tSIOCSLOADF                    = -0x3ffb967d\n\tSIOCSLOWAT                    = 0xffffffff80047302\n\tSIOCSNETOPT                   = -0x7ffe96a6\n\tSIOCSPGRP                     = 0xffffffff80047308\n\tSIOCSX25XLATE                 = -0x7fd7969d\n\tSOCK_CONN_DGRAM               = 0x6\n\tSOCK_DGRAM                    = 0x2\n\tSOCK_RAW                      = 0x3\n\tSOCK_RDM                      = 0x4\n\tSOCK_SEQPACKET                = 0x5\n\tSOCK_STREAM                   = 0x1\n\tSOL_SOCKET                    = 0xffff\n\tSOMAXCONN                     = 0x400\n\tSO_ACCEPTCONN                 = 0x2\n\tSO_AUDIT                      = 0x8000\n\tSO_BROADCAST                  = 0x20\n\tSO_CKSUMRECV                  = 0x800\n\tSO_DEBUG                      = 0x1\n\tSO_DONTROUTE                  = 0x10\n\tSO_ERROR                      = 0x1007\n\tSO_KEEPALIVE                  = 0x8\n\tSO_KERNACCEPT                 = 0x2000\n\tSO_LINGER                     = 0x80\n\tSO_NOMULTIPATH                = 0x4000\n\tSO_NOREUSEADDR                = 0x1000\n\tSO_OOBINLINE                  = 0x100\n\tSO_PEERID                     = 0x1009\n\tSO_RCVBUF                     = 0x1002\n\tSO_RCVLOWAT                   = 0x1004\n\tSO_RCVTIMEO                   = 0x1006\n\tSO_REUSEADDR                  = 0x4\n\tSO_REUSEPORT                  = 0x200\n\tSO_SNDBUF                     = 0x1001\n\tSO_SNDLOWAT                   = 0x1003\n\tSO_SNDTIMEO                   = 0x1005\n\tSO_TIMESTAMPNS                = 0x100a\n\tSO_TYPE                       = 0x1008\n\tSO_USELOOPBACK                = 0x40\n\tSO_USE_IFBUFS                 = 0x400\n\tS_BANDURG                     = 0x400\n\tS_EMODFMT                     = 0x3c000000\n\tS_ENFMT                       = 0x400\n\tS_ERROR                       = 0x100\n\tS_HANGUP                      = 0x200\n\tS_HIPRI                       = 0x2\n\tS_ICRYPTO                     = 0x80000\n\tS_IEXEC                       = 0x40\n\tS_IFBLK                       = 0x6000\n\tS_IFCHR                       = 0x2000\n\tS_IFDIR                       = 0x4000\n\tS_IFIFO                       = 0x1000\n\tS_IFJOURNAL                   = 0x10000\n\tS_IFLNK                       = 0xa000\n\tS_IFMPX                       = 0x2200\n\tS_IFMT                        = 0xf000\n\tS_IFPDIR                      = 0x4000000\n\tS_IFPSDIR                     = 0x8000000\n\tS_IFPSSDIR                    = 0xc000000\n\tS_IFREG                       = 0x8000\n\tS_IFSOCK                      = 0xc000\n\tS_IFSYSEA                     = 0x30000000\n\tS_INPUT                       = 0x1\n\tS_IREAD                       = 0x100\n\tS_IRGRP                       = 0x20\n\tS_IROTH                       = 0x4\n\tS_IRUSR                       = 0x100\n\tS_IRWXG                       = 0x38\n\tS_IRWXO                       = 0x7\n\tS_IRWXU                       = 0x1c0\n\tS_ISGID                       = 0x400\n\tS_ISUID                       = 0x800\n\tS_ISVTX                       = 0x200\n\tS_ITCB                        = 0x1000000\n\tS_ITP                         = 0x800000\n\tS_IWGRP                       = 0x10\n\tS_IWOTH                       = 0x2\n\tS_IWRITE                      = 0x80\n\tS_IWUSR                       = 0x80\n\tS_IXACL                       = 0x2000000\n\tS_IXATTR                      = 0x40000\n\tS_IXGRP                       = 0x8\n\tS_IXINTERFACE                 = 0x100000\n\tS_IXMOD                       = 0x40000000\n\tS_IXOTH                       = 0x1\n\tS_IXUSR                       = 0x40\n\tS_MSG                         = 0x8\n\tS_OUTPUT                      = 0x4\n\tS_RDBAND                      = 0x20\n\tS_RDNORM                      = 0x10\n\tS_RESERVED1                   = 0x20000\n\tS_RESERVED2                   = 0x200000\n\tS_RESERVED3                   = 0x400000\n\tS_RESERVED4                   = 0x80000000\n\tS_RESFMT1                     = 0x10000000\n\tS_RESFMT10                    = 0x34000000\n\tS_RESFMT11                    = 0x38000000\n\tS_RESFMT12                    = 0x3c000000\n\tS_RESFMT2                     = 0x14000000\n\tS_RESFMT3                     = 0x18000000\n\tS_RESFMT4                     = 0x1c000000\n\tS_RESFMT5                     = 0x20000000\n\tS_RESFMT6                     = 0x24000000\n\tS_RESFMT7                     = 0x28000000\n\tS_RESFMT8                     = 0x2c000000\n\tS_WRBAND                      = 0x80\n\tS_WRNORM                      = 0x40\n\tTAB0                          = 0x0\n\tTAB1                          = 0x400\n\tTAB2                          = 0x800\n\tTAB3                          = 0xc00\n\tTABDLY                        = 0xc00\n\tTCFLSH                        = 0x540c\n\tTCGETA                        = 0x5405\n\tTCGETS                        = 0x5401\n\tTCIFLUSH                      = 0x0\n\tTCIOFF                        = 0x2\n\tTCIOFLUSH                     = 0x2\n\tTCION                         = 0x3\n\tTCOFLUSH                      = 0x1\n\tTCOOFF                        = 0x0\n\tTCOON                         = 0x1\n\tTCP_24DAYS_WORTH_OF_SLOWTICKS = 0x3f4800\n\tTCP_ACLADD                    = 0x23\n\tTCP_ACLBIND                   = 0x26\n\tTCP_ACLCLEAR                  = 0x22\n\tTCP_ACLDEL                    = 0x24\n\tTCP_ACLDENY                   = 0x8\n\tTCP_ACLFLUSH                  = 0x21\n\tTCP_ACLGID                    = 0x1\n\tTCP_ACLLS                     = 0x25\n\tTCP_ACLSUBNET                 = 0x4\n\tTCP_ACLUID                    = 0x2\n\tTCP_CWND_DF                   = 0x16\n\tTCP_CWND_IF                   = 0x15\n\tTCP_DELAY_ACK_FIN             = 0x2\n\tTCP_DELAY_ACK_SYN             = 0x1\n\tTCP_FASTNAME                  = 0x101080a\n\tTCP_KEEPCNT                   = 0x13\n\tTCP_KEEPIDLE                  = 0x11\n\tTCP_KEEPINTVL                 = 0x12\n\tTCP_LSPRIV                    = 0x29\n\tTCP_LUID                      = 0x20\n\tTCP_MAXBURST                  = 0x8\n\tTCP_MAXDF                     = 0x64\n\tTCP_MAXIF                     = 0x64\n\tTCP_MAXSEG                    = 0x2\n\tTCP_MAXWIN                    = 0xffff\n\tTCP_MAXWINDOWSCALE            = 0xe\n\tTCP_MAX_SACK                  = 0x4\n\tTCP_MSS                       = 0x5b4\n\tTCP_NODELAY                   = 0x1\n\tTCP_NODELAYACK                = 0x14\n\tTCP_NOREDUCE_CWND_EXIT_FRXMT  = 0x19\n\tTCP_NOREDUCE_CWND_IN_FRXMT    = 0x18\n\tTCP_NOTENTER_SSTART           = 0x17\n\tTCP_OPT                       = 0x19\n\tTCP_RFC1323                   = 0x4\n\tTCP_SETPRIV                   = 0x27\n\tTCP_STDURG                    = 0x10\n\tTCP_TIMESTAMP_OPTLEN          = 0xc\n\tTCP_UNSETPRIV                 = 0x28\n\tTCSAFLUSH                     = 0x2\n\tTCSBRK                        = 0x5409\n\tTCSETA                        = 0x5406\n\tTCSETAF                       = 0x5408\n\tTCSETAW                       = 0x5407\n\tTCSETS                        = 0x5402\n\tTCSETSF                       = 0x5404\n\tTCSETSW                       = 0x5403\n\tTCXONC                        = 0x540b\n\tTIMER_ABSTIME                 = 0x3e7\n\tTIMER_MAX                     = 0x20\n\tTIOC                          = 0x5400\n\tTIOCCBRK                      = 0x2000747a\n\tTIOCCDTR                      = 0x20007478\n\tTIOCCONS                      = 0xffffffff80047462\n\tTIOCEXCL                      = 0x2000740d\n\tTIOCFLUSH                     = 0xffffffff80047410\n\tTIOCGETC                      = 0x40067412\n\tTIOCGETD                      = 0x40047400\n\tTIOCGETP                      = 0x40067408\n\tTIOCGLTC                      = 0x40067474\n\tTIOCGPGRP                     = 0x40047477\n\tTIOCGSID                      = 0x40047448\n\tTIOCGSIZE                     = 0x40087468\n\tTIOCGWINSZ                    = 0x40087468\n\tTIOCHPCL                      = 0x20007402\n\tTIOCLBIC                      = 0xffffffff8004747e\n\tTIOCLBIS                      = 0xffffffff8004747f\n\tTIOCLGET                      = 0x4004747c\n\tTIOCLSET                      = 0xffffffff8004747d\n\tTIOCMBIC                      = 0xffffffff8004746b\n\tTIOCMBIS                      = 0xffffffff8004746c\n\tTIOCMGET                      = 0x4004746a\n\tTIOCMIWAIT                    = 0xffffffff80047464\n\tTIOCMODG                      = 0x40047403\n\tTIOCMODS                      = 0xffffffff80047404\n\tTIOCMSET                      = 0xffffffff8004746d\n\tTIOCM_CAR                     = 0x40\n\tTIOCM_CD                      = 0x40\n\tTIOCM_CTS                     = 0x20\n\tTIOCM_DSR                     = 0x100\n\tTIOCM_DTR                     = 0x2\n\tTIOCM_LE                      = 0x1\n\tTIOCM_RI                      = 0x80\n\tTIOCM_RNG                     = 0x80\n\tTIOCM_RTS                     = 0x4\n\tTIOCM_SR                      = 0x10\n\tTIOCM_ST                      = 0x8\n\tTIOCNOTTY                     = 0x20007471\n\tTIOCNXCL                      = 0x2000740e\n\tTIOCOUTQ                      = 0x40047473\n\tTIOCPKT                       = 0xffffffff80047470\n\tTIOCPKT_DATA                  = 0x0\n\tTIOCPKT_DOSTOP                = 0x20\n\tTIOCPKT_FLUSHREAD             = 0x1\n\tTIOCPKT_FLUSHWRITE            = 0x2\n\tTIOCPKT_NOSTOP                = 0x10\n\tTIOCPKT_START                 = 0x8\n\tTIOCPKT_STOP                  = 0x4\n\tTIOCREMOTE                    = 0xffffffff80047469\n\tTIOCSBRK                      = 0x2000747b\n\tTIOCSDTR                      = 0x20007479\n\tTIOCSETC                      = 0xffffffff80067411\n\tTIOCSETD                      = 0xffffffff80047401\n\tTIOCSETN                      = 0xffffffff8006740a\n\tTIOCSETP                      = 0xffffffff80067409\n\tTIOCSLTC                      = 0xffffffff80067475\n\tTIOCSPGRP                     = 0xffffffff80047476\n\tTIOCSSIZE                     = 0xffffffff80087467\n\tTIOCSTART                     = 0x2000746e\n\tTIOCSTI                       = 0xffffffff80017472\n\tTIOCSTOP                      = 0x2000746f\n\tTIOCSWINSZ                    = 0xffffffff80087467\n\tTIOCUCNTL                     = 0xffffffff80047466\n\tTOSTOP                        = 0x10000\n\tUTIME_NOW                     = -0x2\n\tUTIME_OMIT                    = -0x3\n\tVDISCRD                       = 0xc\n\tVDSUSP                        = 0xa\n\tVEOF                          = 0x4\n\tVEOL                          = 0x5\n\tVEOL2                         = 0x6\n\tVERASE                        = 0x2\n\tVINTR                         = 0x0\n\tVKILL                         = 0x3\n\tVLNEXT                        = 0xe\n\tVMIN                          = 0x4\n\tVQUIT                         = 0x1\n\tVREPRINT                      = 0xb\n\tVSTART                        = 0x7\n\tVSTOP                         = 0x8\n\tVSTRT                         = 0x7\n\tVSUSP                         = 0x9\n\tVT0                           = 0x0\n\tVT1                           = 0x8000\n\tVTDELAY                       = 0x2000\n\tVTDLY                         = 0x8000\n\tVTIME                         = 0x5\n\tVWERSE                        = 0xd\n\tWPARSTART                     = 0x1\n\tWPARSTOP                      = 0x2\n\tWPARTTYNAME                   = \"Global\"\n\tXCASE                         = 0x4\n\tXTABS                         = 0xc00\n\t_FDATAFLUSH                   = 0x2000000000\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x43)\n\tEADDRNOTAVAIL   = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x42)\n\tEAGAIN          = syscall.Errno(0xb)\n\tEALREADY        = syscall.Errno(0x38)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x78)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x75)\n\tECHILD          = syscall.Errno(0xa)\n\tECHRNG          = syscall.Errno(0x25)\n\tECLONEME        = syscall.Errno(0x52)\n\tECONNABORTED    = syscall.Errno(0x48)\n\tECONNREFUSED    = syscall.Errno(0x4f)\n\tECONNRESET      = syscall.Errno(0x49)\n\tECORRUPT        = syscall.Errno(0x59)\n\tEDEADLK         = syscall.Errno(0x2d)\n\tEDESTADDREQ     = syscall.Errno(0x3a)\n\tEDESTADDRREQ    = syscall.Errno(0x3a)\n\tEDIST           = syscall.Errno(0x35)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x58)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFORMAT         = syscall.Errno(0x30)\n\tEHOSTDOWN       = syscall.Errno(0x50)\n\tEHOSTUNREACH    = syscall.Errno(0x51)\n\tEIDRM           = syscall.Errno(0x24)\n\tEILSEQ          = syscall.Errno(0x74)\n\tEINPROGRESS     = syscall.Errno(0x37)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x4b)\n\tEISDIR          = syscall.Errno(0x15)\n\tEL2HLT          = syscall.Errno(0x2c)\n\tEL2NSYNC        = syscall.Errno(0x26)\n\tEL3HLT          = syscall.Errno(0x27)\n\tEL3RST          = syscall.Errno(0x28)\n\tELNRNG          = syscall.Errno(0x29)\n\tELOOP           = syscall.Errno(0x55)\n\tEMEDIA          = syscall.Errno(0x6e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x3b)\n\tEMULTIHOP       = syscall.Errno(0x7d)\n\tENAMETOOLONG    = syscall.Errno(0x56)\n\tENETDOWN        = syscall.Errno(0x45)\n\tENETRESET       = syscall.Errno(0x47)\n\tENETUNREACH     = syscall.Errno(0x46)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x70)\n\tENOBUFS         = syscall.Errno(0x4a)\n\tENOCONNECT      = syscall.Errno(0x32)\n\tENOCSI          = syscall.Errno(0x2b)\n\tENODATA         = syscall.Errno(0x7a)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x31)\n\tENOLINK         = syscall.Errno(0x7e)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x23)\n\tENOPROTOOPT     = syscall.Errno(0x3d)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x76)\n\tENOSTR          = syscall.Errno(0x7b)\n\tENOSYS          = syscall.Errno(0x6d)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x4c)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x11)\n\tENOTREADY       = syscall.Errno(0x2e)\n\tENOTRECOVERABLE = syscall.Errno(0x5e)\n\tENOTRUST        = syscall.Errno(0x72)\n\tENOTSOCK        = syscall.Errno(0x39)\n\tENOTSUP         = syscall.Errno(0x7c)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x40)\n\tEOVERFLOW       = syscall.Errno(0x7f)\n\tEOWNERDEAD      = syscall.Errno(0x5f)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x41)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x53)\n\tEPROTO          = syscall.Errno(0x79)\n\tEPROTONOSUPPORT = syscall.Errno(0x3e)\n\tEPROTOTYPE      = syscall.Errno(0x3c)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x5d)\n\tERESTART        = syscall.Errno(0x52)\n\tEROFS           = syscall.Errno(0x1e)\n\tESAD            = syscall.Errno(0x71)\n\tESHUTDOWN       = syscall.Errno(0x4d)\n\tESOCKTNOSUPPORT = syscall.Errno(0x3f)\n\tESOFT           = syscall.Errno(0x6f)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x34)\n\tESYSERROR       = syscall.Errno(0x5a)\n\tETIME           = syscall.Errno(0x77)\n\tETIMEDOUT       = syscall.Errno(0x4e)\n\tETOOMANYREFS    = syscall.Errno(0x73)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUNATCH         = syscall.Errno(0x2a)\n\tEUSERS          = syscall.Errno(0x54)\n\tEWOULDBLOCK     = syscall.Errno(0xb)\n\tEWRPROTECT      = syscall.Errno(0x2f)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT     = syscall.Signal(0x6)\n\tSIGAIO      = syscall.Signal(0x17)\n\tSIGALRM     = syscall.Signal(0xe)\n\tSIGALRM1    = syscall.Signal(0x26)\n\tSIGBUS      = syscall.Signal(0xa)\n\tSIGCAPI     = syscall.Signal(0x31)\n\tSIGCHLD     = syscall.Signal(0x14)\n\tSIGCLD      = syscall.Signal(0x14)\n\tSIGCONT     = syscall.Signal(0x13)\n\tSIGCPUFAIL  = syscall.Signal(0x3b)\n\tSIGDANGER   = syscall.Signal(0x21)\n\tSIGEMT      = syscall.Signal(0x7)\n\tSIGFPE      = syscall.Signal(0x8)\n\tSIGGRANT    = syscall.Signal(0x3c)\n\tSIGHUP      = syscall.Signal(0x1)\n\tSIGILL      = syscall.Signal(0x4)\n\tSIGINT      = syscall.Signal(0x2)\n\tSIGIO       = syscall.Signal(0x17)\n\tSIGIOINT    = syscall.Signal(0x10)\n\tSIGIOT      = syscall.Signal(0x6)\n\tSIGKAP      = syscall.Signal(0x3c)\n\tSIGKILL     = syscall.Signal(0x9)\n\tSIGLOST     = syscall.Signal(0x6)\n\tSIGMAX      = syscall.Signal(0xff)\n\tSIGMAX32    = syscall.Signal(0x3f)\n\tSIGMIGRATE  = syscall.Signal(0x23)\n\tSIGMSG      = syscall.Signal(0x1b)\n\tSIGPIPE     = syscall.Signal(0xd)\n\tSIGPOLL     = syscall.Signal(0x17)\n\tSIGPRE      = syscall.Signal(0x24)\n\tSIGPROF     = syscall.Signal(0x20)\n\tSIGPTY      = syscall.Signal(0x17)\n\tSIGPWR      = syscall.Signal(0x1d)\n\tSIGQUIT     = syscall.Signal(0x3)\n\tSIGRECONFIG = syscall.Signal(0x3a)\n\tSIGRETRACT  = syscall.Signal(0x3d)\n\tSIGSAK      = syscall.Signal(0x3f)\n\tSIGSEGV     = syscall.Signal(0xb)\n\tSIGSOUND    = syscall.Signal(0x3e)\n\tSIGSTOP     = syscall.Signal(0x11)\n\tSIGSYS      = syscall.Signal(0xc)\n\tSIGSYSERROR = syscall.Signal(0x30)\n\tSIGTALRM    = syscall.Signal(0x26)\n\tSIGTERM     = syscall.Signal(0xf)\n\tSIGTRAP     = syscall.Signal(0x5)\n\tSIGTSTP     = syscall.Signal(0x12)\n\tSIGTTIN     = syscall.Signal(0x15)\n\tSIGTTOU     = syscall.Signal(0x16)\n\tSIGURG      = syscall.Signal(0x10)\n\tSIGUSR1     = syscall.Signal(0x1e)\n\tSIGUSR2     = syscall.Signal(0x1f)\n\tSIGVIRT     = syscall.Signal(0x25)\n\tSIGVTALRM   = syscall.Signal(0x22)\n\tSIGWAITING  = syscall.Signal(0x27)\n\tSIGWINCH    = syscall.Signal(0x1c)\n\tSIGXCPU     = syscall.Signal(0x18)\n\tSIGXFSZ     = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"not owner\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"I/O error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"arg list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file number\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EWOULDBLOCK\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"not enough space\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"ENOTEMPTY\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"file table overflow\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"not a typewriter\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"ENOMSG\", \"no message of desired type\"},\n\t{36, \"EIDRM\", \"identifier removed\"},\n\t{37, \"ECHRNG\", \"channel number out of range\"},\n\t{38, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{39, \"EL3HLT\", \"level 3 halted\"},\n\t{40, \"EL3RST\", \"level 3 reset\"},\n\t{41, \"ELNRNG\", \"link number out of range\"},\n\t{42, \"EUNATCH\", \"protocol driver not attached\"},\n\t{43, \"ENOCSI\", \"no CSI structure available\"},\n\t{44, \"EL2HLT\", \"level 2 halted\"},\n\t{45, \"EDEADLK\", \"deadlock condition if locked\"},\n\t{46, \"ENOTREADY\", \"device not ready\"},\n\t{47, \"EWRPROTECT\", \"write-protected media\"},\n\t{48, \"EFORMAT\", \"unformatted or incompatible media\"},\n\t{49, \"ENOLCK\", \"no locks available\"},\n\t{50, \"ENOCONNECT\", \"cannot Establish Connection\"},\n\t{52, \"ESTALE\", \"missing file or filesystem\"},\n\t{53, \"EDIST\", \"requests blocked by Administrator\"},\n\t{55, \"EINPROGRESS\", \"operation now in progress\"},\n\t{56, \"EALREADY\", \"operation already in progress\"},\n\t{57, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{58, \"EDESTADDREQ\", \"destination address required\"},\n\t{59, \"EMSGSIZE\", \"message too long\"},\n\t{60, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{61, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{62, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{63, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{64, \"EOPNOTSUPP\", \"operation not supported on socket\"},\n\t{65, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{66, \"EAFNOSUPPORT\", \"addr family not supported by protocol\"},\n\t{67, \"EADDRINUSE\", \"address already in use\"},\n\t{68, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{69, \"ENETDOWN\", \"network is down\"},\n\t{70, \"ENETUNREACH\", \"network is unreachable\"},\n\t{71, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{72, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{73, \"ECONNRESET\", \"connection reset by peer\"},\n\t{74, \"ENOBUFS\", \"no buffer space available\"},\n\t{75, \"EISCONN\", \"socket is already connected\"},\n\t{76, \"ENOTCONN\", \"socket is not connected\"},\n\t{77, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{78, \"ETIMEDOUT\", \"connection timed out\"},\n\t{79, \"ECONNREFUSED\", \"connection refused\"},\n\t{80, \"EHOSTDOWN\", \"host is down\"},\n\t{81, \"EHOSTUNREACH\", \"no route to host\"},\n\t{82, \"ERESTART\", \"restart the system call\"},\n\t{83, \"EPROCLIM\", \"too many processes\"},\n\t{84, \"EUSERS\", \"too many users\"},\n\t{85, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{86, \"ENAMETOOLONG\", \"file name too long\"},\n\t{88, \"EDQUOT\", \"disk quota exceeded\"},\n\t{89, \"ECORRUPT\", \"invalid file system control data detected\"},\n\t{90, \"ESYSERROR\", \"for future use \"},\n\t{93, \"EREMOTE\", \"item is not local to host\"},\n\t{94, \"ENOTRECOVERABLE\", \"state not recoverable \"},\n\t{95, \"EOWNERDEAD\", \"previous owner died \"},\n\t{109, \"ENOSYS\", \"function not implemented\"},\n\t{110, \"EMEDIA\", \"media surface error\"},\n\t{111, \"ESOFT\", \"I/O completed, but needs relocation\"},\n\t{112, \"ENOATTR\", \"no attribute found\"},\n\t{113, \"ESAD\", \"security Authentication Denied\"},\n\t{114, \"ENOTRUST\", \"not a Trusted Program\"},\n\t{115, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{116, \"EILSEQ\", \"invalid wide character\"},\n\t{117, \"ECANCELED\", \"asynchronous I/O cancelled\"},\n\t{118, \"ENOSR\", \"out of STREAMS resources\"},\n\t{119, \"ETIME\", \"system call timed out\"},\n\t{120, \"EBADMSG\", \"next message has wrong type\"},\n\t{121, \"EPROTO\", \"error in protocol\"},\n\t{122, \"ENODATA\", \"no message on stream head read q\"},\n\t{123, \"ENOSTR\", \"fd not associated with a stream\"},\n\t{124, \"ENOTSUP\", \"unsupported attribute value\"},\n\t{125, \"EMULTIHOP\", \"multihop is not allowed\"},\n\t{126, \"ENOLINK\", \"the server link has been severed\"},\n\t{127, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"IOT/Abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"stopped (signal)\"},\n\t{18, \"SIGTSTP\", \"stopped\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible/complete\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{27, \"SIGMSG\", \"input device data\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGPWR\", \"power-failure\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGPROF\", \"profiling timer expired\"},\n\t{33, \"SIGDANGER\", \"paging space low\"},\n\t{34, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{35, \"SIGMIGRATE\", \"signal 35\"},\n\t{36, \"SIGPRE\", \"signal 36\"},\n\t{37, \"SIGVIRT\", \"signal 37\"},\n\t{38, \"SIGTALRM\", \"signal 38\"},\n\t{39, \"SIGWAITING\", \"signal 39\"},\n\t{48, \"SIGSYSERROR\", \"signal 48\"},\n\t{49, \"SIGCAPI\", \"signal 49\"},\n\t{58, \"SIGRECONFIG\", \"signal 58\"},\n\t{59, \"SIGCPUFAIL\", \"CPU Failure Predicted\"},\n\t{60, \"SIGGRANT\", \"monitor mode granted\"},\n\t{61, \"SIGRETRACT\", \"monitor mode retracted\"},\n\t{62, \"SIGSOUND\", \"sound completed\"},\n\t{63, \"SIGMAX32\", \"secure attention\"},\n\t{255, \"SIGMAX\", \"signal 255\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && darwin\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                            = 0x10\n\tAF_CCITT                                = 0xa\n\tAF_CHAOS                                = 0x5\n\tAF_CNT                                  = 0x15\n\tAF_COIP                                 = 0x14\n\tAF_DATAKIT                              = 0x9\n\tAF_DECnet                               = 0xc\n\tAF_DLI                                  = 0xd\n\tAF_E164                                 = 0x1c\n\tAF_ECMA                                 = 0x8\n\tAF_HYLINK                               = 0xf\n\tAF_IEEE80211                            = 0x25\n\tAF_IMPLINK                              = 0x3\n\tAF_INET                                 = 0x2\n\tAF_INET6                                = 0x1e\n\tAF_IPX                                  = 0x17\n\tAF_ISDN                                 = 0x1c\n\tAF_ISO                                  = 0x7\n\tAF_LAT                                  = 0xe\n\tAF_LINK                                 = 0x12\n\tAF_LOCAL                                = 0x1\n\tAF_MAX                                  = 0x29\n\tAF_NATM                                 = 0x1f\n\tAF_NDRV                                 = 0x1b\n\tAF_NETBIOS                              = 0x21\n\tAF_NS                                   = 0x6\n\tAF_OSI                                  = 0x7\n\tAF_PPP                                  = 0x22\n\tAF_PUP                                  = 0x4\n\tAF_RESERVED_36                          = 0x24\n\tAF_ROUTE                                = 0x11\n\tAF_SIP                                  = 0x18\n\tAF_SNA                                  = 0xb\n\tAF_SYSTEM                               = 0x20\n\tAF_SYS_CONTROL                          = 0x2\n\tAF_UNIX                                 = 0x1\n\tAF_UNSPEC                               = 0x0\n\tAF_UTUN                                 = 0x26\n\tAF_VSOCK                                = 0x28\n\tALTWERASE                               = 0x200\n\tATTR_BIT_MAP_COUNT                      = 0x5\n\tATTR_CMN_ACCESSMASK                     = 0x20000\n\tATTR_CMN_ACCTIME                        = 0x1000\n\tATTR_CMN_ADDEDTIME                      = 0x10000000\n\tATTR_CMN_BKUPTIME                       = 0x2000\n\tATTR_CMN_CHGTIME                        = 0x800\n\tATTR_CMN_CRTIME                         = 0x200\n\tATTR_CMN_DATA_PROTECT_FLAGS             = 0x40000000\n\tATTR_CMN_DEVID                          = 0x2\n\tATTR_CMN_DOCUMENT_ID                    = 0x100000\n\tATTR_CMN_ERROR                          = 0x20000000\n\tATTR_CMN_EXTENDED_SECURITY              = 0x400000\n\tATTR_CMN_FILEID                         = 0x2000000\n\tATTR_CMN_FLAGS                          = 0x40000\n\tATTR_CMN_FNDRINFO                       = 0x4000\n\tATTR_CMN_FSID                           = 0x4\n\tATTR_CMN_FULLPATH                       = 0x8000000\n\tATTR_CMN_GEN_COUNT                      = 0x80000\n\tATTR_CMN_GRPID                          = 0x10000\n\tATTR_CMN_GRPUUID                        = 0x1000000\n\tATTR_CMN_MODTIME                        = 0x400\n\tATTR_CMN_NAME                           = 0x1\n\tATTR_CMN_NAMEDATTRCOUNT                 = 0x80000\n\tATTR_CMN_NAMEDATTRLIST                  = 0x100000\n\tATTR_CMN_OBJID                          = 0x20\n\tATTR_CMN_OBJPERMANENTID                 = 0x40\n\tATTR_CMN_OBJTAG                         = 0x10\n\tATTR_CMN_OBJTYPE                        = 0x8\n\tATTR_CMN_OWNERID                        = 0x8000\n\tATTR_CMN_PARENTID                       = 0x4000000\n\tATTR_CMN_PAROBJID                       = 0x80\n\tATTR_CMN_RETURNED_ATTRS                 = 0x80000000\n\tATTR_CMN_SCRIPT                         = 0x100\n\tATTR_CMN_SETMASK                        = 0x51c7ff00\n\tATTR_CMN_USERACCESS                     = 0x200000\n\tATTR_CMN_UUID                           = 0x800000\n\tATTR_CMN_VALIDMASK                      = 0xffffffff\n\tATTR_CMN_VOLSETMASK                     = 0x6700\n\tATTR_FILE_ALLOCSIZE                     = 0x4\n\tATTR_FILE_CLUMPSIZE                     = 0x10\n\tATTR_FILE_DATAALLOCSIZE                 = 0x400\n\tATTR_FILE_DATAEXTENTS                   = 0x800\n\tATTR_FILE_DATALENGTH                    = 0x200\n\tATTR_FILE_DEVTYPE                       = 0x20\n\tATTR_FILE_FILETYPE                      = 0x40\n\tATTR_FILE_FORKCOUNT                     = 0x80\n\tATTR_FILE_FORKLIST                      = 0x100\n\tATTR_FILE_IOBLOCKSIZE                   = 0x8\n\tATTR_FILE_LINKCOUNT                     = 0x1\n\tATTR_FILE_RSRCALLOCSIZE                 = 0x2000\n\tATTR_FILE_RSRCEXTENTS                   = 0x4000\n\tATTR_FILE_RSRCLENGTH                    = 0x1000\n\tATTR_FILE_SETMASK                       = 0x20\n\tATTR_FILE_TOTALSIZE                     = 0x2\n\tATTR_FILE_VALIDMASK                     = 0x37ff\n\tATTR_VOL_ALLOCATIONCLUMP                = 0x40\n\tATTR_VOL_ATTRIBUTES                     = 0x40000000\n\tATTR_VOL_CAPABILITIES                   = 0x20000\n\tATTR_VOL_DIRCOUNT                       = 0x400\n\tATTR_VOL_ENCODINGSUSED                  = 0x10000\n\tATTR_VOL_FILECOUNT                      = 0x200\n\tATTR_VOL_FSTYPE                         = 0x1\n\tATTR_VOL_INFO                           = 0x80000000\n\tATTR_VOL_IOBLOCKSIZE                    = 0x80\n\tATTR_VOL_MAXOBJCOUNT                    = 0x800\n\tATTR_VOL_MINALLOCATION                  = 0x20\n\tATTR_VOL_MOUNTEDDEVICE                  = 0x8000\n\tATTR_VOL_MOUNTFLAGS                     = 0x4000\n\tATTR_VOL_MOUNTPOINT                     = 0x1000\n\tATTR_VOL_NAME                           = 0x2000\n\tATTR_VOL_OBJCOUNT                       = 0x100\n\tATTR_VOL_QUOTA_SIZE                     = 0x10000000\n\tATTR_VOL_RESERVED_SIZE                  = 0x20000000\n\tATTR_VOL_SETMASK                        = 0x80002000\n\tATTR_VOL_SIGNATURE                      = 0x2\n\tATTR_VOL_SIZE                           = 0x4\n\tATTR_VOL_SPACEAVAIL                     = 0x10\n\tATTR_VOL_SPACEFREE                      = 0x8\n\tATTR_VOL_SPACEUSED                      = 0x800000\n\tATTR_VOL_UUID                           = 0x40000\n\tATTR_VOL_VALIDMASK                      = 0xf087ffff\n\tB0                                      = 0x0\n\tB110                                    = 0x6e\n\tB115200                                 = 0x1c200\n\tB1200                                   = 0x4b0\n\tB134                                    = 0x86\n\tB14400                                  = 0x3840\n\tB150                                    = 0x96\n\tB1800                                   = 0x708\n\tB19200                                  = 0x4b00\n\tB200                                    = 0xc8\n\tB230400                                 = 0x38400\n\tB2400                                   = 0x960\n\tB28800                                  = 0x7080\n\tB300                                    = 0x12c\n\tB38400                                  = 0x9600\n\tB4800                                   = 0x12c0\n\tB50                                     = 0x32\n\tB57600                                  = 0xe100\n\tB600                                    = 0x258\n\tB7200                                   = 0x1c20\n\tB75                                     = 0x4b\n\tB76800                                  = 0x12c00\n\tB9600                                   = 0x2580\n\tBIOCFLUSH                               = 0x20004268\n\tBIOCGBLEN                               = 0x40044266\n\tBIOCGDLT                                = 0x4004426a\n\tBIOCGDLTLIST                            = 0xc00c4279\n\tBIOCGETIF                               = 0x4020426b\n\tBIOCGHDRCMPLT                           = 0x40044274\n\tBIOCGRSIG                               = 0x40044272\n\tBIOCGRTIMEOUT                           = 0x4010426e\n\tBIOCGSEESENT                            = 0x40044276\n\tBIOCGSTATS                              = 0x4008426f\n\tBIOCIMMEDIATE                           = 0x80044270\n\tBIOCPROMISC                             = 0x20004269\n\tBIOCSBLEN                               = 0xc0044266\n\tBIOCSDLT                                = 0x80044278\n\tBIOCSETF                                = 0x80104267\n\tBIOCSETFNR                              = 0x8010427e\n\tBIOCSETIF                               = 0x8020426c\n\tBIOCSHDRCMPLT                           = 0x80044275\n\tBIOCSRSIG                               = 0x80044273\n\tBIOCSRTIMEOUT                           = 0x8010426d\n\tBIOCSSEESENT                            = 0x80044277\n\tBIOCVERSION                             = 0x40044271\n\tBPF_A                                   = 0x10\n\tBPF_ABS                                 = 0x20\n\tBPF_ADD                                 = 0x0\n\tBPF_ALIGNMENT                           = 0x4\n\tBPF_ALU                                 = 0x4\n\tBPF_AND                                 = 0x50\n\tBPF_B                                   = 0x10\n\tBPF_DIV                                 = 0x30\n\tBPF_H                                   = 0x8\n\tBPF_IMM                                 = 0x0\n\tBPF_IND                                 = 0x40\n\tBPF_JA                                  = 0x0\n\tBPF_JEQ                                 = 0x10\n\tBPF_JGE                                 = 0x30\n\tBPF_JGT                                 = 0x20\n\tBPF_JMP                                 = 0x5\n\tBPF_JSET                                = 0x40\n\tBPF_K                                   = 0x0\n\tBPF_LD                                  = 0x0\n\tBPF_LDX                                 = 0x1\n\tBPF_LEN                                 = 0x80\n\tBPF_LSH                                 = 0x60\n\tBPF_MAJOR_VERSION                       = 0x1\n\tBPF_MAXBUFSIZE                          = 0x80000\n\tBPF_MAXINSNS                            = 0x200\n\tBPF_MEM                                 = 0x60\n\tBPF_MEMWORDS                            = 0x10\n\tBPF_MINBUFSIZE                          = 0x20\n\tBPF_MINOR_VERSION                       = 0x1\n\tBPF_MISC                                = 0x7\n\tBPF_MSH                                 = 0xa0\n\tBPF_MUL                                 = 0x20\n\tBPF_NEG                                 = 0x80\n\tBPF_OR                                  = 0x40\n\tBPF_RELEASE                             = 0x30bb6\n\tBPF_RET                                 = 0x6\n\tBPF_RSH                                 = 0x70\n\tBPF_ST                                  = 0x2\n\tBPF_STX                                 = 0x3\n\tBPF_SUB                                 = 0x10\n\tBPF_TAX                                 = 0x0\n\tBPF_TXA                                 = 0x80\n\tBPF_W                                   = 0x0\n\tBPF_X                                   = 0x8\n\tBRKINT                                  = 0x2\n\tBS0                                     = 0x0\n\tBS1                                     = 0x8000\n\tBSDLY                                   = 0x8000\n\tCFLUSH                                  = 0xf\n\tCLOCAL                                  = 0x8000\n\tCLOCK_MONOTONIC                         = 0x6\n\tCLOCK_MONOTONIC_RAW                     = 0x4\n\tCLOCK_MONOTONIC_RAW_APPROX              = 0x5\n\tCLOCK_PROCESS_CPUTIME_ID                = 0xc\n\tCLOCK_REALTIME                          = 0x0\n\tCLOCK_THREAD_CPUTIME_ID                 = 0x10\n\tCLOCK_UPTIME_RAW                        = 0x8\n\tCLOCK_UPTIME_RAW_APPROX                 = 0x9\n\tCLONE_NOFOLLOW                          = 0x1\n\tCLONE_NOOWNERCOPY                       = 0x2\n\tCONNECT_DATA_AUTHENTICATED              = 0x4\n\tCONNECT_DATA_IDEMPOTENT                 = 0x2\n\tCONNECT_RESUME_ON_READ_WRITE            = 0x1\n\tCR0                                     = 0x0\n\tCR1                                     = 0x1000\n\tCR2                                     = 0x2000\n\tCR3                                     = 0x3000\n\tCRDLY                                   = 0x3000\n\tCREAD                                   = 0x800\n\tCRTSCTS                                 = 0x30000\n\tCS5                                     = 0x0\n\tCS6                                     = 0x100\n\tCS7                                     = 0x200\n\tCS8                                     = 0x300\n\tCSIZE                                   = 0x300\n\tCSTART                                  = 0x11\n\tCSTATUS                                 = 0x14\n\tCSTOP                                   = 0x13\n\tCSTOPB                                  = 0x400\n\tCSUSP                                   = 0x1a\n\tCTLIOCGINFO                             = 0xc0644e03\n\tCTL_HW                                  = 0x6\n\tCTL_KERN                                = 0x1\n\tCTL_MAXNAME                             = 0xc\n\tCTL_NET                                 = 0x4\n\tDLT_A429                                = 0xb8\n\tDLT_A653_ICM                            = 0xb9\n\tDLT_AIRONET_HEADER                      = 0x78\n\tDLT_AOS                                 = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394              = 0x8a\n\tDLT_ARCNET                              = 0x7\n\tDLT_ARCNET_LINUX                        = 0x81\n\tDLT_ATM_CLIP                            = 0x13\n\tDLT_ATM_RFC1483                         = 0xb\n\tDLT_AURORA                              = 0x7e\n\tDLT_AX25                                = 0x3\n\tDLT_AX25_KISS                           = 0xca\n\tDLT_BACNET_MS_TP                        = 0xa5\n\tDLT_BLUETOOTH_HCI_H4                    = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR          = 0xc9\n\tDLT_CAN20B                              = 0xbe\n\tDLT_CAN_SOCKETCAN                       = 0xe3\n\tDLT_CHAOS                               = 0x5\n\tDLT_CHDLC                               = 0x68\n\tDLT_CISCO_IOS                           = 0x76\n\tDLT_C_HDLC                              = 0x68\n\tDLT_C_HDLC_WITH_DIR                     = 0xcd\n\tDLT_DBUS                                = 0xe7\n\tDLT_DECT                                = 0xdd\n\tDLT_DOCSIS                              = 0x8f\n\tDLT_DVB_CI                              = 0xeb\n\tDLT_ECONET                              = 0x73\n\tDLT_EN10MB                              = 0x1\n\tDLT_EN3MB                               = 0x2\n\tDLT_ENC                                 = 0x6d\n\tDLT_ERF                                 = 0xc5\n\tDLT_ERF_ETH                             = 0xaf\n\tDLT_ERF_POS                             = 0xb0\n\tDLT_FC_2                                = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS              = 0xe1\n\tDLT_FDDI                                = 0xa\n\tDLT_FLEXRAY                             = 0xd2\n\tDLT_FRELAY                              = 0x6b\n\tDLT_FRELAY_WITH_DIR                     = 0xce\n\tDLT_GCOM_SERIAL                         = 0xad\n\tDLT_GCOM_T1E1                           = 0xac\n\tDLT_GPF_F                               = 0xab\n\tDLT_GPF_T                               = 0xaa\n\tDLT_GPRS_LLC                            = 0xa9\n\tDLT_GSMTAP_ABIS                         = 0xda\n\tDLT_GSMTAP_UM                           = 0xd9\n\tDLT_HHDLC                               = 0x79\n\tDLT_IBM_SN                              = 0x92\n\tDLT_IBM_SP                              = 0x91\n\tDLT_IEEE802                             = 0x6\n\tDLT_IEEE802_11                          = 0x69\n\tDLT_IEEE802_11_RADIO                    = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS                = 0xa3\n\tDLT_IEEE802_15_4                        = 0xc3\n\tDLT_IEEE802_15_4_LINUX                  = 0xbf\n\tDLT_IEEE802_15_4_NOFCS                  = 0xe6\n\tDLT_IEEE802_15_4_NONASK_PHY             = 0xd7\n\tDLT_IEEE802_16_MAC_CPS                  = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO            = 0xc1\n\tDLT_IPFILTER                            = 0x74\n\tDLT_IPMB                                = 0xc7\n\tDLT_IPMB_LINUX                          = 0xd1\n\tDLT_IPNET                               = 0xe2\n\tDLT_IPOIB                               = 0xf2\n\tDLT_IPV4                                = 0xe4\n\tDLT_IPV6                                = 0xe5\n\tDLT_IP_OVER_FC                          = 0x7a\n\tDLT_JUNIPER_ATM1                        = 0x89\n\tDLT_JUNIPER_ATM2                        = 0x87\n\tDLT_JUNIPER_ATM_CEMIC                   = 0xee\n\tDLT_JUNIPER_CHDLC                       = 0xb5\n\tDLT_JUNIPER_ES                          = 0x84\n\tDLT_JUNIPER_ETHER                       = 0xb2\n\tDLT_JUNIPER_FIBRECHANNEL                = 0xea\n\tDLT_JUNIPER_FRELAY                      = 0xb4\n\tDLT_JUNIPER_GGSN                        = 0x85\n\tDLT_JUNIPER_ISM                         = 0xc2\n\tDLT_JUNIPER_MFR                         = 0x86\n\tDLT_JUNIPER_MLFR                        = 0x83\n\tDLT_JUNIPER_MLPPP                       = 0x82\n\tDLT_JUNIPER_MONITOR                     = 0xa4\n\tDLT_JUNIPER_PIC_PEER                    = 0xae\n\tDLT_JUNIPER_PPP                         = 0xb3\n\tDLT_JUNIPER_PPPOE                       = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM                   = 0xa8\n\tDLT_JUNIPER_SERVICES                    = 0x88\n\tDLT_JUNIPER_SRX_E2E                     = 0xe9\n\tDLT_JUNIPER_ST                          = 0xc8\n\tDLT_JUNIPER_VP                          = 0xb7\n\tDLT_JUNIPER_VS                          = 0xe8\n\tDLT_LAPB_WITH_DIR                       = 0xcf\n\tDLT_LAPD                                = 0xcb\n\tDLT_LIN                                 = 0xd4\n\tDLT_LINUX_EVDEV                         = 0xd8\n\tDLT_LINUX_IRDA                          = 0x90\n\tDLT_LINUX_LAPD                          = 0xb1\n\tDLT_LINUX_PPP_WITHDIRECTION             = 0xa6\n\tDLT_LINUX_SLL                           = 0x71\n\tDLT_LOOP                                = 0x6c\n\tDLT_LTALK                               = 0x72\n\tDLT_MATCHING_MAX                        = 0x10a\n\tDLT_MATCHING_MIN                        = 0x68\n\tDLT_MFR                                 = 0xb6\n\tDLT_MOST                                = 0xd3\n\tDLT_MPEG_2_TS                           = 0xf3\n\tDLT_MPLS                                = 0xdb\n\tDLT_MTP2                                = 0x8c\n\tDLT_MTP2_WITH_PHDR                      = 0x8b\n\tDLT_MTP3                                = 0x8d\n\tDLT_MUX27010                            = 0xec\n\tDLT_NETANALYZER                         = 0xf0\n\tDLT_NETANALYZER_TRANSPARENT             = 0xf1\n\tDLT_NFC_LLCP                            = 0xf5\n\tDLT_NFLOG                               = 0xef\n\tDLT_NG40                                = 0xf4\n\tDLT_NULL                                = 0x0\n\tDLT_PCI_EXP                             = 0x7d\n\tDLT_PFLOG                               = 0x75\n\tDLT_PFSYNC                              = 0x12\n\tDLT_PPI                                 = 0xc0\n\tDLT_PPP                                 = 0x9\n\tDLT_PPP_BSDOS                           = 0x10\n\tDLT_PPP_ETHER                           = 0x33\n\tDLT_PPP_PPPD                            = 0xa6\n\tDLT_PPP_SERIAL                          = 0x32\n\tDLT_PPP_WITH_DIR                        = 0xcc\n\tDLT_PPP_WITH_DIRECTION                  = 0xa6\n\tDLT_PRISM_HEADER                        = 0x77\n\tDLT_PRONET                              = 0x4\n\tDLT_RAIF1                               = 0xc6\n\tDLT_RAW                                 = 0xc\n\tDLT_RIO                                 = 0x7c\n\tDLT_SCCP                                = 0x8e\n\tDLT_SITA                                = 0xc4\n\tDLT_SLIP                                = 0x8\n\tDLT_SLIP_BSDOS                          = 0xf\n\tDLT_STANAG_5066_D_PDU                   = 0xed\n\tDLT_SUNATM                              = 0x7b\n\tDLT_SYMANTEC_FIREWALL                   = 0x63\n\tDLT_TZSP                                = 0x80\n\tDLT_USB                                 = 0xba\n\tDLT_USB_DARWIN                          = 0x10a\n\tDLT_USB_LINUX                           = 0xbd\n\tDLT_USB_LINUX_MMAPPED                   = 0xdc\n\tDLT_USER0                               = 0x93\n\tDLT_USER1                               = 0x94\n\tDLT_USER10                              = 0x9d\n\tDLT_USER11                              = 0x9e\n\tDLT_USER12                              = 0x9f\n\tDLT_USER13                              = 0xa0\n\tDLT_USER14                              = 0xa1\n\tDLT_USER15                              = 0xa2\n\tDLT_USER2                               = 0x95\n\tDLT_USER3                               = 0x96\n\tDLT_USER4                               = 0x97\n\tDLT_USER5                               = 0x98\n\tDLT_USER6                               = 0x99\n\tDLT_USER7                               = 0x9a\n\tDLT_USER8                               = 0x9b\n\tDLT_USER9                               = 0x9c\n\tDLT_WIHART                              = 0xdf\n\tDLT_X2E_SERIAL                          = 0xd5\n\tDLT_X2E_XORAYA                          = 0xd6\n\tDT_BLK                                  = 0x6\n\tDT_CHR                                  = 0x2\n\tDT_DIR                                  = 0x4\n\tDT_FIFO                                 = 0x1\n\tDT_LNK                                  = 0xa\n\tDT_REG                                  = 0x8\n\tDT_SOCK                                 = 0xc\n\tDT_UNKNOWN                              = 0x0\n\tDT_WHT                                  = 0xe\n\tECHO                                    = 0x8\n\tECHOCTL                                 = 0x40\n\tECHOE                                   = 0x2\n\tECHOK                                   = 0x4\n\tECHOKE                                  = 0x1\n\tECHONL                                  = 0x10\n\tECHOPRT                                 = 0x20\n\tEVFILT_AIO                              = -0x3\n\tEVFILT_EXCEPT                           = -0xf\n\tEVFILT_FS                               = -0x9\n\tEVFILT_MACHPORT                         = -0x8\n\tEVFILT_PROC                             = -0x5\n\tEVFILT_READ                             = -0x1\n\tEVFILT_SIGNAL                           = -0x6\n\tEVFILT_SYSCOUNT                         = 0x11\n\tEVFILT_THREADMARKER                     = 0x11\n\tEVFILT_TIMER                            = -0x7\n\tEVFILT_USER                             = -0xa\n\tEVFILT_VM                               = -0xc\n\tEVFILT_VNODE                            = -0x4\n\tEVFILT_WRITE                            = -0x2\n\tEV_ADD                                  = 0x1\n\tEV_CLEAR                                = 0x20\n\tEV_DELETE                               = 0x2\n\tEV_DISABLE                              = 0x8\n\tEV_DISPATCH                             = 0x80\n\tEV_DISPATCH2                            = 0x180\n\tEV_ENABLE                               = 0x4\n\tEV_EOF                                  = 0x8000\n\tEV_ERROR                                = 0x4000\n\tEV_FLAG0                                = 0x1000\n\tEV_FLAG1                                = 0x2000\n\tEV_ONESHOT                              = 0x10\n\tEV_OOBAND                               = 0x2000\n\tEV_POLL                                 = 0x1000\n\tEV_RECEIPT                              = 0x40\n\tEV_SYSFLAGS                             = 0xf000\n\tEV_UDATA_SPECIFIC                       = 0x100\n\tEV_VANISHED                             = 0x200\n\tEXTA                                    = 0x4b00\n\tEXTB                                    = 0x9600\n\tEXTPROC                                 = 0x800\n\tFD_CLOEXEC                              = 0x1\n\tFD_SETSIZE                              = 0x400\n\tFF0                                     = 0x0\n\tFF1                                     = 0x4000\n\tFFDLY                                   = 0x4000\n\tFLUSHO                                  = 0x800000\n\tFSOPT_ATTR_CMN_EXTENDED                 = 0x20\n\tFSOPT_NOFOLLOW                          = 0x1\n\tFSOPT_NOINMEMUPDATE                     = 0x2\n\tFSOPT_PACK_INVAL_ATTRS                  = 0x8\n\tFSOPT_REPORT_FULLSIZE                   = 0x4\n\tFSOPT_RETURN_REALDEV                    = 0x200\n\tF_ADDFILESIGS                           = 0x3d\n\tF_ADDFILESIGS_FOR_DYLD_SIM              = 0x53\n\tF_ADDFILESIGS_INFO                      = 0x67\n\tF_ADDFILESIGS_RETURN                    = 0x61\n\tF_ADDFILESUPPL                          = 0x68\n\tF_ADDSIGS                               = 0x3b\n\tF_ALLOCATEALL                           = 0x4\n\tF_ALLOCATECONTIG                        = 0x2\n\tF_BARRIERFSYNC                          = 0x55\n\tF_CHECK_LV                              = 0x62\n\tF_CHKCLEAN                              = 0x29\n\tF_DUPFD                                 = 0x0\n\tF_DUPFD_CLOEXEC                         = 0x43\n\tF_FINDSIGS                              = 0x4e\n\tF_FLUSH_DATA                            = 0x28\n\tF_FREEZE_FS                             = 0x35\n\tF_FULLFSYNC                             = 0x33\n\tF_GETCODEDIR                            = 0x48\n\tF_GETFD                                 = 0x1\n\tF_GETFL                                 = 0x3\n\tF_GETLK                                 = 0x7\n\tF_GETLKPID                              = 0x42\n\tF_GETNOSIGPIPE                          = 0x4a\n\tF_GETOWN                                = 0x5\n\tF_GETPATH                               = 0x32\n\tF_GETPATH_MTMINFO                       = 0x47\n\tF_GETPATH_NOFIRMLINK                    = 0x66\n\tF_GETPROTECTIONCLASS                    = 0x3f\n\tF_GETPROTECTIONLEVEL                    = 0x4d\n\tF_GETSIGSINFO                           = 0x69\n\tF_GLOBAL_NOCACHE                        = 0x37\n\tF_LOG2PHYS                              = 0x31\n\tF_LOG2PHYS_EXT                          = 0x41\n\tF_NOCACHE                               = 0x30\n\tF_NODIRECT                              = 0x3e\n\tF_OK                                    = 0x0\n\tF_PATHPKG_CHECK                         = 0x34\n\tF_PEOFPOSMODE                           = 0x3\n\tF_PREALLOCATE                           = 0x2a\n\tF_PUNCHHOLE                             = 0x63\n\tF_RDADVISE                              = 0x2c\n\tF_RDAHEAD                               = 0x2d\n\tF_RDLCK                                 = 0x1\n\tF_SETBACKINGSTORE                       = 0x46\n\tF_SETFD                                 = 0x2\n\tF_SETFL                                 = 0x4\n\tF_SETLK                                 = 0x8\n\tF_SETLKW                                = 0x9\n\tF_SETLKWTIMEOUT                         = 0xa\n\tF_SETNOSIGPIPE                          = 0x49\n\tF_SETOWN                                = 0x6\n\tF_SETPROTECTIONCLASS                    = 0x40\n\tF_SETSIZE                               = 0x2b\n\tF_SINGLE_WRITER                         = 0x4c\n\tF_SPECULATIVE_READ                      = 0x65\n\tF_THAW_FS                               = 0x36\n\tF_TRANSCODEKEY                          = 0x4b\n\tF_TRIM_ACTIVE_FILE                      = 0x64\n\tF_UNLCK                                 = 0x2\n\tF_VOLPOSMODE                            = 0x4\n\tF_WRLCK                                 = 0x3\n\tHUPCL                                   = 0x4000\n\tHW_MACHINE                              = 0x1\n\tICANON                                  = 0x100\n\tICMP6_FILTER                            = 0x12\n\tICRNL                                   = 0x100\n\tIEXTEN                                  = 0x400\n\tIFF_ALLMULTI                            = 0x200\n\tIFF_ALTPHYS                             = 0x4000\n\tIFF_BROADCAST                           = 0x2\n\tIFF_DEBUG                               = 0x4\n\tIFF_LINK0                               = 0x1000\n\tIFF_LINK1                               = 0x2000\n\tIFF_LINK2                               = 0x4000\n\tIFF_LOOPBACK                            = 0x8\n\tIFF_MULTICAST                           = 0x8000\n\tIFF_NOARP                               = 0x80\n\tIFF_NOTRAILERS                          = 0x20\n\tIFF_OACTIVE                             = 0x400\n\tIFF_POINTOPOINT                         = 0x10\n\tIFF_PROMISC                             = 0x100\n\tIFF_RUNNING                             = 0x40\n\tIFF_SIMPLEX                             = 0x800\n\tIFF_UP                                  = 0x1\n\tIFNAMSIZ                                = 0x10\n\tIFT_1822                                = 0x2\n\tIFT_6LOWPAN                             = 0x40\n\tIFT_AAL5                                = 0x31\n\tIFT_ARCNET                              = 0x23\n\tIFT_ARCNETPLUS                          = 0x24\n\tIFT_ATM                                 = 0x25\n\tIFT_BRIDGE                              = 0xd1\n\tIFT_CARP                                = 0xf8\n\tIFT_CELLULAR                            = 0xff\n\tIFT_CEPT                                = 0x13\n\tIFT_DS3                                 = 0x1e\n\tIFT_ENC                                 = 0xf4\n\tIFT_EON                                 = 0x19\n\tIFT_ETHER                               = 0x6\n\tIFT_FAITH                               = 0x38\n\tIFT_FDDI                                = 0xf\n\tIFT_FRELAY                              = 0x20\n\tIFT_FRELAYDCE                           = 0x2c\n\tIFT_GIF                                 = 0x37\n\tIFT_HDH1822                             = 0x3\n\tIFT_HIPPI                               = 0x2f\n\tIFT_HSSI                                = 0x2e\n\tIFT_HY                                  = 0xe\n\tIFT_IEEE1394                            = 0x90\n\tIFT_IEEE8023ADLAG                       = 0x88\n\tIFT_ISDNBASIC                           = 0x14\n\tIFT_ISDNPRIMARY                         = 0x15\n\tIFT_ISO88022LLC                         = 0x29\n\tIFT_ISO88023                            = 0x7\n\tIFT_ISO88024                            = 0x8\n\tIFT_ISO88025                            = 0x9\n\tIFT_ISO88026                            = 0xa\n\tIFT_L2VLAN                              = 0x87\n\tIFT_LAPB                                = 0x10\n\tIFT_LOCALTALK                           = 0x2a\n\tIFT_LOOP                                = 0x18\n\tIFT_MIOX25                              = 0x26\n\tIFT_MODEM                               = 0x30\n\tIFT_NSIP                                = 0x1b\n\tIFT_OTHER                               = 0x1\n\tIFT_P10                                 = 0xc\n\tIFT_P80                                 = 0xd\n\tIFT_PARA                                = 0x22\n\tIFT_PDP                                 = 0xff\n\tIFT_PFLOG                               = 0xf5\n\tIFT_PFSYNC                              = 0xf6\n\tIFT_PKTAP                               = 0xfe\n\tIFT_PPP                                 = 0x17\n\tIFT_PROPMUX                             = 0x36\n\tIFT_PROPVIRTUAL                         = 0x35\n\tIFT_PTPSERIAL                           = 0x16\n\tIFT_RS232                               = 0x21\n\tIFT_SDLC                                = 0x11\n\tIFT_SIP                                 = 0x1f\n\tIFT_SLIP                                = 0x1c\n\tIFT_SMDSDXI                             = 0x2b\n\tIFT_SMDSICIP                            = 0x34\n\tIFT_SONET                               = 0x27\n\tIFT_SONETPATH                           = 0x32\n\tIFT_SONETVT                             = 0x33\n\tIFT_STARLAN                             = 0xb\n\tIFT_STF                                 = 0x39\n\tIFT_T1                                  = 0x12\n\tIFT_ULTRA                               = 0x1d\n\tIFT_V35                                 = 0x2d\n\tIFT_X25                                 = 0x5\n\tIFT_X25DDN                              = 0x4\n\tIFT_X25PLE                              = 0x28\n\tIFT_XETHER                              = 0x1a\n\tIGNBRK                                  = 0x1\n\tIGNCR                                   = 0x80\n\tIGNPAR                                  = 0x4\n\tIMAXBEL                                 = 0x2000\n\tINLCR                                   = 0x40\n\tINPCK                                   = 0x10\n\tIN_CLASSA_HOST                          = 0xffffff\n\tIN_CLASSA_MAX                           = 0x80\n\tIN_CLASSA_NET                           = 0xff000000\n\tIN_CLASSA_NSHIFT                        = 0x18\n\tIN_CLASSB_HOST                          = 0xffff\n\tIN_CLASSB_MAX                           = 0x10000\n\tIN_CLASSB_NET                           = 0xffff0000\n\tIN_CLASSB_NSHIFT                        = 0x10\n\tIN_CLASSC_HOST                          = 0xff\n\tIN_CLASSC_NET                           = 0xffffff00\n\tIN_CLASSC_NSHIFT                        = 0x8\n\tIN_CLASSD_HOST                          = 0xfffffff\n\tIN_CLASSD_NET                           = 0xf0000000\n\tIN_CLASSD_NSHIFT                        = 0x1c\n\tIN_LINKLOCALNETNUM                      = 0xa9fe0000\n\tIN_LOOPBACKNET                          = 0x7f\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID          = 0x400473d1\n\tIPPROTO_3PC                             = 0x22\n\tIPPROTO_ADFS                            = 0x44\n\tIPPROTO_AH                              = 0x33\n\tIPPROTO_AHIP                            = 0x3d\n\tIPPROTO_APES                            = 0x63\n\tIPPROTO_ARGUS                           = 0xd\n\tIPPROTO_AX25                            = 0x5d\n\tIPPROTO_BHA                             = 0x31\n\tIPPROTO_BLT                             = 0x1e\n\tIPPROTO_BRSATMON                        = 0x4c\n\tIPPROTO_CFTP                            = 0x3e\n\tIPPROTO_CHAOS                           = 0x10\n\tIPPROTO_CMTP                            = 0x26\n\tIPPROTO_CPHB                            = 0x49\n\tIPPROTO_CPNX                            = 0x48\n\tIPPROTO_DDP                             = 0x25\n\tIPPROTO_DGP                             = 0x56\n\tIPPROTO_DIVERT                          = 0xfe\n\tIPPROTO_DONE                            = 0x101\n\tIPPROTO_DSTOPTS                         = 0x3c\n\tIPPROTO_EGP                             = 0x8\n\tIPPROTO_EMCON                           = 0xe\n\tIPPROTO_ENCAP                           = 0x62\n\tIPPROTO_EON                             = 0x50\n\tIPPROTO_ESP                             = 0x32\n\tIPPROTO_ETHERIP                         = 0x61\n\tIPPROTO_FRAGMENT                        = 0x2c\n\tIPPROTO_GGP                             = 0x3\n\tIPPROTO_GMTP                            = 0x64\n\tIPPROTO_GRE                             = 0x2f\n\tIPPROTO_HELLO                           = 0x3f\n\tIPPROTO_HMP                             = 0x14\n\tIPPROTO_HOPOPTS                         = 0x0\n\tIPPROTO_ICMP                            = 0x1\n\tIPPROTO_ICMPV6                          = 0x3a\n\tIPPROTO_IDP                             = 0x16\n\tIPPROTO_IDPR                            = 0x23\n\tIPPROTO_IDRP                            = 0x2d\n\tIPPROTO_IGMP                            = 0x2\n\tIPPROTO_IGP                             = 0x55\n\tIPPROTO_IGRP                            = 0x58\n\tIPPROTO_IL                              = 0x28\n\tIPPROTO_INLSP                           = 0x34\n\tIPPROTO_INP                             = 0x20\n\tIPPROTO_IP                              = 0x0\n\tIPPROTO_IPCOMP                          = 0x6c\n\tIPPROTO_IPCV                            = 0x47\n\tIPPROTO_IPEIP                           = 0x5e\n\tIPPROTO_IPIP                            = 0x4\n\tIPPROTO_IPPC                            = 0x43\n\tIPPROTO_IPV4                            = 0x4\n\tIPPROTO_IPV6                            = 0x29\n\tIPPROTO_IRTP                            = 0x1c\n\tIPPROTO_KRYPTOLAN                       = 0x41\n\tIPPROTO_LARP                            = 0x5b\n\tIPPROTO_LEAF1                           = 0x19\n\tIPPROTO_LEAF2                           = 0x1a\n\tIPPROTO_MAX                             = 0x100\n\tIPPROTO_MAXID                           = 0x34\n\tIPPROTO_MEAS                            = 0x13\n\tIPPROTO_MHRP                            = 0x30\n\tIPPROTO_MICP                            = 0x5f\n\tIPPROTO_MTP                             = 0x5c\n\tIPPROTO_MUX                             = 0x12\n\tIPPROTO_ND                              = 0x4d\n\tIPPROTO_NHRP                            = 0x36\n\tIPPROTO_NONE                            = 0x3b\n\tIPPROTO_NSP                             = 0x1f\n\tIPPROTO_NVPII                           = 0xb\n\tIPPROTO_OSPFIGP                         = 0x59\n\tIPPROTO_PGM                             = 0x71\n\tIPPROTO_PIGP                            = 0x9\n\tIPPROTO_PIM                             = 0x67\n\tIPPROTO_PRM                             = 0x15\n\tIPPROTO_PUP                             = 0xc\n\tIPPROTO_PVP                             = 0x4b\n\tIPPROTO_RAW                             = 0xff\n\tIPPROTO_RCCMON                          = 0xa\n\tIPPROTO_RDP                             = 0x1b\n\tIPPROTO_ROUTING                         = 0x2b\n\tIPPROTO_RSVP                            = 0x2e\n\tIPPROTO_RVD                             = 0x42\n\tIPPROTO_SATEXPAK                        = 0x40\n\tIPPROTO_SATMON                          = 0x45\n\tIPPROTO_SCCSP                           = 0x60\n\tIPPROTO_SCTP                            = 0x84\n\tIPPROTO_SDRP                            = 0x2a\n\tIPPROTO_SEP                             = 0x21\n\tIPPROTO_SRPC                            = 0x5a\n\tIPPROTO_ST                              = 0x7\n\tIPPROTO_SVMTP                           = 0x52\n\tIPPROTO_SWIPE                           = 0x35\n\tIPPROTO_TCF                             = 0x57\n\tIPPROTO_TCP                             = 0x6\n\tIPPROTO_TP                              = 0x1d\n\tIPPROTO_TPXX                            = 0x27\n\tIPPROTO_TRUNK1                          = 0x17\n\tIPPROTO_TRUNK2                          = 0x18\n\tIPPROTO_TTP                             = 0x54\n\tIPPROTO_UDP                             = 0x11\n\tIPPROTO_VINES                           = 0x53\n\tIPPROTO_VISA                            = 0x46\n\tIPPROTO_VMTP                            = 0x51\n\tIPPROTO_WBEXPAK                         = 0x4f\n\tIPPROTO_WBMON                           = 0x4e\n\tIPPROTO_WSN                             = 0x4a\n\tIPPROTO_XNET                            = 0xf\n\tIPPROTO_XTP                             = 0x24\n\tIPV6_2292DSTOPTS                        = 0x17\n\tIPV6_2292HOPLIMIT                       = 0x14\n\tIPV6_2292HOPOPTS                        = 0x16\n\tIPV6_2292NEXTHOP                        = 0x15\n\tIPV6_2292PKTINFO                        = 0x13\n\tIPV6_2292PKTOPTIONS                     = 0x19\n\tIPV6_2292RTHDR                          = 0x18\n\tIPV6_3542DSTOPTS                        = 0x32\n\tIPV6_3542HOPLIMIT                       = 0x2f\n\tIPV6_3542HOPOPTS                        = 0x31\n\tIPV6_3542NEXTHOP                        = 0x30\n\tIPV6_3542PKTINFO                        = 0x2e\n\tIPV6_3542RTHDR                          = 0x33\n\tIPV6_ADDR_MC_FLAGS_PREFIX               = 0x20\n\tIPV6_ADDR_MC_FLAGS_TRANSIENT            = 0x10\n\tIPV6_ADDR_MC_FLAGS_UNICAST_BASED        = 0x30\n\tIPV6_AUTOFLOWLABEL                      = 0x3b\n\tIPV6_BINDV6ONLY                         = 0x1b\n\tIPV6_BOUND_IF                           = 0x7d\n\tIPV6_CHECKSUM                           = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS             = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP             = 0x1\n\tIPV6_DEFHLIM                            = 0x40\n\tIPV6_DONTFRAG                           = 0x3e\n\tIPV6_DSTOPTS                            = 0x32\n\tIPV6_FAITH                              = 0x1d\n\tIPV6_FLOWINFO_MASK                      = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK                     = 0xffff0f00\n\tIPV6_FLOW_ECN_MASK                      = 0x3000\n\tIPV6_FRAGTTL                            = 0x3c\n\tIPV6_FW_ADD                             = 0x1e\n\tIPV6_FW_DEL                             = 0x1f\n\tIPV6_FW_FLUSH                           = 0x20\n\tIPV6_FW_GET                             = 0x22\n\tIPV6_FW_ZERO                            = 0x21\n\tIPV6_HLIMDEC                            = 0x1\n\tIPV6_HOPLIMIT                           = 0x2f\n\tIPV6_HOPOPTS                            = 0x31\n\tIPV6_IPSEC_POLICY                       = 0x1c\n\tIPV6_JOIN_GROUP                         = 0xc\n\tIPV6_LEAVE_GROUP                        = 0xd\n\tIPV6_MAXHLIM                            = 0xff\n\tIPV6_MAXOPTHDR                          = 0x800\n\tIPV6_MAXPACKET                          = 0xffff\n\tIPV6_MAX_GROUP_SRC_FILTER               = 0x200\n\tIPV6_MAX_MEMBERSHIPS                    = 0xfff\n\tIPV6_MAX_SOCK_SRC_FILTER                = 0x80\n\tIPV6_MIN_MEMBERSHIPS                    = 0x1f\n\tIPV6_MMTU                               = 0x500\n\tIPV6_MSFILTER                           = 0x4a\n\tIPV6_MULTICAST_HOPS                     = 0xa\n\tIPV6_MULTICAST_IF                       = 0x9\n\tIPV6_MULTICAST_LOOP                     = 0xb\n\tIPV6_NEXTHOP                            = 0x30\n\tIPV6_PATHMTU                            = 0x2c\n\tIPV6_PKTINFO                            = 0x2e\n\tIPV6_PORTRANGE                          = 0xe\n\tIPV6_PORTRANGE_DEFAULT                  = 0x0\n\tIPV6_PORTRANGE_HIGH                     = 0x1\n\tIPV6_PORTRANGE_LOW                      = 0x2\n\tIPV6_PREFER_TEMPADDR                    = 0x3f\n\tIPV6_RECVDSTOPTS                        = 0x28\n\tIPV6_RECVHOPLIMIT                       = 0x25\n\tIPV6_RECVHOPOPTS                        = 0x27\n\tIPV6_RECVPATHMTU                        = 0x2b\n\tIPV6_RECVPKTINFO                        = 0x3d\n\tIPV6_RECVRTHDR                          = 0x26\n\tIPV6_RECVTCLASS                         = 0x23\n\tIPV6_RTHDR                              = 0x33\n\tIPV6_RTHDRDSTOPTS                       = 0x39\n\tIPV6_RTHDR_LOOSE                        = 0x0\n\tIPV6_RTHDR_STRICT                       = 0x1\n\tIPV6_RTHDR_TYPE_0                       = 0x0\n\tIPV6_SOCKOPT_RESERVED1                  = 0x3\n\tIPV6_TCLASS                             = 0x24\n\tIPV6_UNICAST_HOPS                       = 0x4\n\tIPV6_USE_MIN_MTU                        = 0x2a\n\tIPV6_V6ONLY                             = 0x1b\n\tIPV6_VERSION                            = 0x60\n\tIPV6_VERSION_MASK                       = 0xf0\n\tIP_ADD_MEMBERSHIP                       = 0xc\n\tIP_ADD_SOURCE_MEMBERSHIP                = 0x46\n\tIP_BLOCK_SOURCE                         = 0x48\n\tIP_BOUND_IF                             = 0x19\n\tIP_DEFAULT_MULTICAST_LOOP               = 0x1\n\tIP_DEFAULT_MULTICAST_TTL                = 0x1\n\tIP_DF                                   = 0x4000\n\tIP_DONTFRAG                             = 0x1c\n\tIP_DROP_MEMBERSHIP                      = 0xd\n\tIP_DROP_SOURCE_MEMBERSHIP               = 0x47\n\tIP_DUMMYNET_CONFIGURE                   = 0x3c\n\tIP_DUMMYNET_DEL                         = 0x3d\n\tIP_DUMMYNET_FLUSH                       = 0x3e\n\tIP_DUMMYNET_GET                         = 0x40\n\tIP_FAITH                                = 0x16\n\tIP_FW_ADD                               = 0x28\n\tIP_FW_DEL                               = 0x29\n\tIP_FW_FLUSH                             = 0x2a\n\tIP_FW_GET                               = 0x2c\n\tIP_FW_RESETLOG                          = 0x2d\n\tIP_FW_ZERO                              = 0x2b\n\tIP_HDRINCL                              = 0x2\n\tIP_IPSEC_POLICY                         = 0x15\n\tIP_MAXPACKET                            = 0xffff\n\tIP_MAX_GROUP_SRC_FILTER                 = 0x200\n\tIP_MAX_MEMBERSHIPS                      = 0xfff\n\tIP_MAX_SOCK_MUTE_FILTER                 = 0x80\n\tIP_MAX_SOCK_SRC_FILTER                  = 0x80\n\tIP_MF                                   = 0x2000\n\tIP_MIN_MEMBERSHIPS                      = 0x1f\n\tIP_MSFILTER                             = 0x4a\n\tIP_MSS                                  = 0x240\n\tIP_MULTICAST_IF                         = 0x9\n\tIP_MULTICAST_IFINDEX                    = 0x42\n\tIP_MULTICAST_LOOP                       = 0xb\n\tIP_MULTICAST_TTL                        = 0xa\n\tIP_MULTICAST_VIF                        = 0xe\n\tIP_NAT__XXX                             = 0x37\n\tIP_OFFMASK                              = 0x1fff\n\tIP_OLD_FW_ADD                           = 0x32\n\tIP_OLD_FW_DEL                           = 0x33\n\tIP_OLD_FW_FLUSH                         = 0x34\n\tIP_OLD_FW_GET                           = 0x36\n\tIP_OLD_FW_RESETLOG                      = 0x38\n\tIP_OLD_FW_ZERO                          = 0x35\n\tIP_OPTIONS                              = 0x1\n\tIP_PKTINFO                              = 0x1a\n\tIP_PORTRANGE                            = 0x13\n\tIP_PORTRANGE_DEFAULT                    = 0x0\n\tIP_PORTRANGE_HIGH                       = 0x1\n\tIP_PORTRANGE_LOW                        = 0x2\n\tIP_RECVDSTADDR                          = 0x7\n\tIP_RECVIF                               = 0x14\n\tIP_RECVOPTS                             = 0x5\n\tIP_RECVPKTINFO                          = 0x1a\n\tIP_RECVRETOPTS                          = 0x6\n\tIP_RECVTOS                              = 0x1b\n\tIP_RECVTTL                              = 0x18\n\tIP_RETOPTS                              = 0x8\n\tIP_RF                                   = 0x8000\n\tIP_RSVP_OFF                             = 0x10\n\tIP_RSVP_ON                              = 0xf\n\tIP_RSVP_VIF_OFF                         = 0x12\n\tIP_RSVP_VIF_ON                          = 0x11\n\tIP_STRIPHDR                             = 0x17\n\tIP_TOS                                  = 0x3\n\tIP_TRAFFIC_MGT_BACKGROUND               = 0x41\n\tIP_TTL                                  = 0x4\n\tIP_UNBLOCK_SOURCE                       = 0x49\n\tISIG                                    = 0x80\n\tISTRIP                                  = 0x20\n\tIUTF8                                   = 0x4000\n\tIXANY                                   = 0x800\n\tIXOFF                                   = 0x400\n\tIXON                                    = 0x200\n\tKERN_HOSTNAME                           = 0xa\n\tKERN_OSRELEASE                          = 0x2\n\tKERN_OSTYPE                             = 0x1\n\tKERN_VERSION                            = 0x4\n\tLOCAL_PEERCRED                          = 0x1\n\tLOCAL_PEEREPID                          = 0x3\n\tLOCAL_PEEREUUID                         = 0x5\n\tLOCAL_PEERPID                           = 0x2\n\tLOCAL_PEERTOKEN                         = 0x6\n\tLOCAL_PEERUUID                          = 0x4\n\tLOCK_EX                                 = 0x2\n\tLOCK_NB                                 = 0x4\n\tLOCK_SH                                 = 0x1\n\tLOCK_UN                                 = 0x8\n\tMADV_CAN_REUSE                          = 0x9\n\tMADV_DONTNEED                           = 0x4\n\tMADV_FREE                               = 0x5\n\tMADV_FREE_REUSABLE                      = 0x7\n\tMADV_FREE_REUSE                         = 0x8\n\tMADV_NORMAL                             = 0x0\n\tMADV_PAGEOUT                            = 0xa\n\tMADV_RANDOM                             = 0x1\n\tMADV_SEQUENTIAL                         = 0x2\n\tMADV_WILLNEED                           = 0x3\n\tMADV_ZERO_WIRED_PAGES                   = 0x6\n\tMAP_32BIT                               = 0x8000\n\tMAP_ANON                                = 0x1000\n\tMAP_ANONYMOUS                           = 0x1000\n\tMAP_COPY                                = 0x2\n\tMAP_FILE                                = 0x0\n\tMAP_FIXED                               = 0x10\n\tMAP_HASSEMAPHORE                        = 0x200\n\tMAP_JIT                                 = 0x800\n\tMAP_NOCACHE                             = 0x400\n\tMAP_NOEXTEND                            = 0x100\n\tMAP_NORESERVE                           = 0x40\n\tMAP_PRIVATE                             = 0x2\n\tMAP_RENAME                              = 0x20\n\tMAP_RESERVED0080                        = 0x80\n\tMAP_RESILIENT_CODESIGN                  = 0x2000\n\tMAP_RESILIENT_MEDIA                     = 0x4000\n\tMAP_SHARED                              = 0x1\n\tMAP_TRANSLATED_ALLOW_EXECUTE            = 0x20000\n\tMAP_UNIX03                              = 0x40000\n\tMCAST_BLOCK_SOURCE                      = 0x54\n\tMCAST_EXCLUDE                           = 0x2\n\tMCAST_INCLUDE                           = 0x1\n\tMCAST_JOIN_GROUP                        = 0x50\n\tMCAST_JOIN_SOURCE_GROUP                 = 0x52\n\tMCAST_LEAVE_GROUP                       = 0x51\n\tMCAST_LEAVE_SOURCE_GROUP                = 0x53\n\tMCAST_UNBLOCK_SOURCE                    = 0x55\n\tMCAST_UNDEFINED                         = 0x0\n\tMCL_CURRENT                             = 0x1\n\tMCL_FUTURE                              = 0x2\n\tMNT_ASYNC                               = 0x40\n\tMNT_AUTOMOUNTED                         = 0x400000\n\tMNT_CMDFLAGS                            = 0xf0000\n\tMNT_CPROTECT                            = 0x80\n\tMNT_DEFWRITE                            = 0x2000000\n\tMNT_DONTBROWSE                          = 0x100000\n\tMNT_DOVOLFS                             = 0x8000\n\tMNT_DWAIT                               = 0x4\n\tMNT_EXPORTED                            = 0x100\n\tMNT_EXT_ROOT_DATA_VOL                   = 0x1\n\tMNT_FORCE                               = 0x80000\n\tMNT_IGNORE_OWNERSHIP                    = 0x200000\n\tMNT_JOURNALED                           = 0x800000\n\tMNT_LOCAL                               = 0x1000\n\tMNT_MULTILABEL                          = 0x4000000\n\tMNT_NOATIME                             = 0x10000000\n\tMNT_NOBLOCK                             = 0x20000\n\tMNT_NODEV                               = 0x10\n\tMNT_NOEXEC                              = 0x4\n\tMNT_NOSUID                              = 0x8\n\tMNT_NOUSERXATTR                         = 0x1000000\n\tMNT_NOWAIT                              = 0x2\n\tMNT_QUARANTINE                          = 0x400\n\tMNT_QUOTA                               = 0x2000\n\tMNT_RDONLY                              = 0x1\n\tMNT_RELOAD                              = 0x40000\n\tMNT_REMOVABLE                           = 0x200\n\tMNT_ROOTFS                              = 0x4000\n\tMNT_SNAPSHOT                            = 0x40000000\n\tMNT_STRICTATIME                         = 0x80000000\n\tMNT_SYNCHRONOUS                         = 0x2\n\tMNT_UNION                               = 0x20\n\tMNT_UNKNOWNPERMISSIONS                  = 0x200000\n\tMNT_UPDATE                              = 0x10000\n\tMNT_VISFLAGMASK                         = 0xd7f0f7ff\n\tMNT_WAIT                                = 0x1\n\tMSG_CTRUNC                              = 0x20\n\tMSG_DONTROUTE                           = 0x4\n\tMSG_DONTWAIT                            = 0x80\n\tMSG_EOF                                 = 0x100\n\tMSG_EOR                                 = 0x8\n\tMSG_FLUSH                               = 0x400\n\tMSG_HAVEMORE                            = 0x2000\n\tMSG_HOLD                                = 0x800\n\tMSG_NEEDSA                              = 0x10000\n\tMSG_NOSIGNAL                            = 0x80000\n\tMSG_OOB                                 = 0x1\n\tMSG_PEEK                                = 0x2\n\tMSG_RCVMORE                             = 0x4000\n\tMSG_SEND                                = 0x1000\n\tMSG_TRUNC                               = 0x10\n\tMSG_WAITALL                             = 0x40\n\tMSG_WAITSTREAM                          = 0x200\n\tMS_ASYNC                                = 0x1\n\tMS_DEACTIVATE                           = 0x8\n\tMS_INVALIDATE                           = 0x2\n\tMS_KILLPAGES                            = 0x4\n\tMS_SYNC                                 = 0x10\n\tNAME_MAX                                = 0xff\n\tNET_RT_DUMP                             = 0x1\n\tNET_RT_DUMP2                            = 0x7\n\tNET_RT_FLAGS                            = 0x2\n\tNET_RT_FLAGS_PRIV                       = 0xa\n\tNET_RT_IFLIST                           = 0x3\n\tNET_RT_IFLIST2                          = 0x6\n\tNET_RT_MAXID                            = 0xb\n\tNET_RT_STAT                             = 0x4\n\tNET_RT_TRASH                            = 0x5\n\tNFDBITS                                 = 0x20\n\tNL0                                     = 0x0\n\tNL1                                     = 0x100\n\tNL2                                     = 0x200\n\tNL3                                     = 0x300\n\tNLDLY                                   = 0x300\n\tNOFLSH                                  = 0x80000000\n\tNOKERNINFO                              = 0x2000000\n\tNOTE_ABSOLUTE                           = 0x8\n\tNOTE_ATTRIB                             = 0x8\n\tNOTE_BACKGROUND                         = 0x40\n\tNOTE_CHILD                              = 0x4\n\tNOTE_CRITICAL                           = 0x20\n\tNOTE_DELETE                             = 0x1\n\tNOTE_EXEC                               = 0x20000000\n\tNOTE_EXIT                               = 0x80000000\n\tNOTE_EXITSTATUS                         = 0x4000000\n\tNOTE_EXIT_CSERROR                       = 0x40000\n\tNOTE_EXIT_DECRYPTFAIL                   = 0x10000\n\tNOTE_EXIT_DETAIL                        = 0x2000000\n\tNOTE_EXIT_DETAIL_MASK                   = 0x70000\n\tNOTE_EXIT_MEMORY                        = 0x20000\n\tNOTE_EXIT_REPARENTED                    = 0x80000\n\tNOTE_EXTEND                             = 0x4\n\tNOTE_FFAND                              = 0x40000000\n\tNOTE_FFCOPY                             = 0xc0000000\n\tNOTE_FFCTRLMASK                         = 0xc0000000\n\tNOTE_FFLAGSMASK                         = 0xffffff\n\tNOTE_FFNOP                              = 0x0\n\tNOTE_FFOR                               = 0x80000000\n\tNOTE_FORK                               = 0x40000000\n\tNOTE_FUNLOCK                            = 0x100\n\tNOTE_LEEWAY                             = 0x10\n\tNOTE_LINK                               = 0x10\n\tNOTE_LOWAT                              = 0x1\n\tNOTE_MACHTIME                           = 0x100\n\tNOTE_MACH_CONTINUOUS_TIME               = 0x80\n\tNOTE_NONE                               = 0x80\n\tNOTE_NSECONDS                           = 0x4\n\tNOTE_OOB                                = 0x2\n\tNOTE_PCTRLMASK                          = -0x100000\n\tNOTE_PDATAMASK                          = 0xfffff\n\tNOTE_REAP                               = 0x10000000\n\tNOTE_RENAME                             = 0x20\n\tNOTE_REVOKE                             = 0x40\n\tNOTE_SECONDS                            = 0x1\n\tNOTE_SIGNAL                             = 0x8000000\n\tNOTE_TRACK                              = 0x1\n\tNOTE_TRACKERR                           = 0x2\n\tNOTE_TRIGGER                            = 0x1000000\n\tNOTE_USECONDS                           = 0x2\n\tNOTE_VM_ERROR                           = 0x10000000\n\tNOTE_VM_PRESSURE                        = 0x80000000\n\tNOTE_VM_PRESSURE_SUDDEN_TERMINATE       = 0x20000000\n\tNOTE_VM_PRESSURE_TERMINATE              = 0x40000000\n\tNOTE_WRITE                              = 0x2\n\tOCRNL                                   = 0x10\n\tOFDEL                                   = 0x20000\n\tOFILL                                   = 0x80\n\tONLCR                                   = 0x2\n\tONLRET                                  = 0x40\n\tONOCR                                   = 0x20\n\tONOEOT                                  = 0x8\n\tOPOST                                   = 0x1\n\tOXTABS                                  = 0x4\n\tO_ACCMODE                               = 0x3\n\tO_ALERT                                 = 0x20000000\n\tO_APPEND                                = 0x8\n\tO_ASYNC                                 = 0x40\n\tO_CLOEXEC                               = 0x1000000\n\tO_CREAT                                 = 0x200\n\tO_DIRECTORY                             = 0x100000\n\tO_DP_GETRAWENCRYPTED                    = 0x1\n\tO_DP_GETRAWUNENCRYPTED                  = 0x2\n\tO_DSYNC                                 = 0x400000\n\tO_EVTONLY                               = 0x8000\n\tO_EXCL                                  = 0x800\n\tO_EXLOCK                                = 0x20\n\tO_FSYNC                                 = 0x80\n\tO_NDELAY                                = 0x4\n\tO_NOCTTY                                = 0x20000\n\tO_NOFOLLOW                              = 0x100\n\tO_NOFOLLOW_ANY                          = 0x20000000\n\tO_NONBLOCK                              = 0x4\n\tO_POPUP                                 = 0x80000000\n\tO_RDONLY                                = 0x0\n\tO_RDWR                                  = 0x2\n\tO_SHLOCK                                = 0x10\n\tO_SYMLINK                               = 0x200000\n\tO_SYNC                                  = 0x80\n\tO_TRUNC                                 = 0x400\n\tO_WRONLY                                = 0x1\n\tPARENB                                  = 0x1000\n\tPARMRK                                  = 0x8\n\tPARODD                                  = 0x2000\n\tPENDIN                                  = 0x20000000\n\tPRIO_PGRP                               = 0x1\n\tPRIO_PROCESS                            = 0x0\n\tPRIO_USER                               = 0x2\n\tPROT_EXEC                               = 0x4\n\tPROT_NONE                               = 0x0\n\tPROT_READ                               = 0x1\n\tPROT_WRITE                              = 0x2\n\tPT_ATTACH                               = 0xa\n\tPT_ATTACHEXC                            = 0xe\n\tPT_CONTINUE                             = 0x7\n\tPT_DENY_ATTACH                          = 0x1f\n\tPT_DETACH                               = 0xb\n\tPT_FIRSTMACH                            = 0x20\n\tPT_FORCEQUOTA                           = 0x1e\n\tPT_KILL                                 = 0x8\n\tPT_READ_D                               = 0x2\n\tPT_READ_I                               = 0x1\n\tPT_READ_U                               = 0x3\n\tPT_SIGEXC                               = 0xc\n\tPT_STEP                                 = 0x9\n\tPT_THUPDATE                             = 0xd\n\tPT_TRACE_ME                             = 0x0\n\tPT_WRITE_D                              = 0x5\n\tPT_WRITE_I                              = 0x4\n\tPT_WRITE_U                              = 0x6\n\tRENAME_EXCL                             = 0x4\n\tRENAME_NOFOLLOW_ANY                     = 0x10\n\tRENAME_RESERVED1                        = 0x8\n\tRENAME_SECLUDE                          = 0x1\n\tRENAME_SWAP                             = 0x2\n\tRLIMIT_AS                               = 0x5\n\tRLIMIT_CORE                             = 0x4\n\tRLIMIT_CPU                              = 0x0\n\tRLIMIT_CPU_USAGE_MONITOR                = 0x2\n\tRLIMIT_DATA                             = 0x2\n\tRLIMIT_FSIZE                            = 0x1\n\tRLIMIT_MEMLOCK                          = 0x6\n\tRLIMIT_NOFILE                           = 0x8\n\tRLIMIT_NPROC                            = 0x7\n\tRLIMIT_RSS                              = 0x5\n\tRLIMIT_STACK                            = 0x3\n\tRLIM_INFINITY                           = 0x7fffffffffffffff\n\tRTAX_AUTHOR                             = 0x6\n\tRTAX_BRD                                = 0x7\n\tRTAX_DST                                = 0x0\n\tRTAX_GATEWAY                            = 0x1\n\tRTAX_GENMASK                            = 0x3\n\tRTAX_IFA                                = 0x5\n\tRTAX_IFP                                = 0x4\n\tRTAX_MAX                                = 0x8\n\tRTAX_NETMASK                            = 0x2\n\tRTA_AUTHOR                              = 0x40\n\tRTA_BRD                                 = 0x80\n\tRTA_DST                                 = 0x1\n\tRTA_GATEWAY                             = 0x2\n\tRTA_GENMASK                             = 0x8\n\tRTA_IFA                                 = 0x20\n\tRTA_IFP                                 = 0x10\n\tRTA_NETMASK                             = 0x4\n\tRTF_BLACKHOLE                           = 0x1000\n\tRTF_BROADCAST                           = 0x400000\n\tRTF_CLONING                             = 0x100\n\tRTF_CONDEMNED                           = 0x2000000\n\tRTF_DEAD                                = 0x20000000\n\tRTF_DELCLONE                            = 0x80\n\tRTF_DONE                                = 0x40\n\tRTF_DYNAMIC                             = 0x10\n\tRTF_GATEWAY                             = 0x2\n\tRTF_GLOBAL                              = 0x40000000\n\tRTF_HOST                                = 0x4\n\tRTF_IFREF                               = 0x4000000\n\tRTF_IFSCOPE                             = 0x1000000\n\tRTF_LLDATA                              = 0x400\n\tRTF_LLINFO                              = 0x400\n\tRTF_LOCAL                               = 0x200000\n\tRTF_MODIFIED                            = 0x20\n\tRTF_MULTICAST                           = 0x800000\n\tRTF_NOIFREF                             = 0x2000\n\tRTF_PINNED                              = 0x100000\n\tRTF_PRCLONING                           = 0x10000\n\tRTF_PROTO1                              = 0x8000\n\tRTF_PROTO2                              = 0x4000\n\tRTF_PROTO3                              = 0x40000\n\tRTF_PROXY                               = 0x8000000\n\tRTF_REJECT                              = 0x8\n\tRTF_ROUTER                              = 0x10000000\n\tRTF_STATIC                              = 0x800\n\tRTF_UP                                  = 0x1\n\tRTF_WASCLONED                           = 0x20000\n\tRTF_XRESOLVE                            = 0x200\n\tRTM_ADD                                 = 0x1\n\tRTM_CHANGE                              = 0x3\n\tRTM_DELADDR                             = 0xd\n\tRTM_DELETE                              = 0x2\n\tRTM_DELMADDR                            = 0x10\n\tRTM_GET                                 = 0x4\n\tRTM_GET2                                = 0x14\n\tRTM_IFINFO                              = 0xe\n\tRTM_IFINFO2                             = 0x12\n\tRTM_LOCK                                = 0x8\n\tRTM_LOSING                              = 0x5\n\tRTM_MISS                                = 0x7\n\tRTM_NEWADDR                             = 0xc\n\tRTM_NEWMADDR                            = 0xf\n\tRTM_NEWMADDR2                           = 0x13\n\tRTM_OLDADD                              = 0x9\n\tRTM_OLDDEL                              = 0xa\n\tRTM_REDIRECT                            = 0x6\n\tRTM_RESOLVE                             = 0xb\n\tRTM_RTTUNIT                             = 0xf4240\n\tRTM_VERSION                             = 0x5\n\tRTV_EXPIRE                              = 0x4\n\tRTV_HOPCOUNT                            = 0x2\n\tRTV_MTU                                 = 0x1\n\tRTV_RPIPE                               = 0x8\n\tRTV_RTT                                 = 0x40\n\tRTV_RTTVAR                              = 0x80\n\tRTV_SPIPE                               = 0x10\n\tRTV_SSTHRESH                            = 0x20\n\tRUSAGE_CHILDREN                         = -0x1\n\tRUSAGE_SELF                             = 0x0\n\tSAE_ASSOCID_ALL                         = 0xffffffff\n\tSAE_ASSOCID_ANY                         = 0x0\n\tSAE_CONNID_ALL                          = 0xffffffff\n\tSAE_CONNID_ANY                          = 0x0\n\tSCM_CREDS                               = 0x3\n\tSCM_RIGHTS                              = 0x1\n\tSCM_TIMESTAMP                           = 0x2\n\tSCM_TIMESTAMP_MONOTONIC                 = 0x4\n\tSEEK_CUR                                = 0x1\n\tSEEK_DATA                               = 0x4\n\tSEEK_END                                = 0x2\n\tSEEK_HOLE                               = 0x3\n\tSEEK_SET                                = 0x0\n\tSF_APPEND                               = 0x40000\n\tSF_ARCHIVED                             = 0x10000\n\tSF_DATALESS                             = 0x40000000\n\tSF_FIRMLINK                             = 0x800000\n\tSF_IMMUTABLE                            = 0x20000\n\tSF_NOUNLINK                             = 0x100000\n\tSF_RESTRICTED                           = 0x80000\n\tSF_SETTABLE                             = 0x3fff0000\n\tSF_SUPPORTED                            = 0x9f0000\n\tSF_SYNTHETIC                            = 0xc0000000\n\tSHUT_RD                                 = 0x0\n\tSHUT_RDWR                               = 0x2\n\tSHUT_WR                                 = 0x1\n\tSIOCADDMULTI                            = 0x80206931\n\tSIOCAIFADDR                             = 0x8040691a\n\tSIOCARPIPLL                             = 0xc0206928\n\tSIOCATMARK                              = 0x40047307\n\tSIOCAUTOADDR                            = 0xc0206926\n\tSIOCAUTONETMASK                         = 0x80206927\n\tSIOCDELMULTI                            = 0x80206932\n\tSIOCDIFADDR                             = 0x80206919\n\tSIOCDIFPHYADDR                          = 0x80206941\n\tSIOCGDRVSPEC                            = 0xc028697b\n\tSIOCGETVLAN                             = 0xc020697f\n\tSIOCGHIWAT                              = 0x40047301\n\tSIOCGIF6LOWPAN                          = 0xc02069c5\n\tSIOCGIFADDR                             = 0xc0206921\n\tSIOCGIFALTMTU                           = 0xc0206948\n\tSIOCGIFASYNCMAP                         = 0xc020697c\n\tSIOCGIFBOND                             = 0xc0206947\n\tSIOCGIFBRDADDR                          = 0xc0206923\n\tSIOCGIFCAP                              = 0xc020695b\n\tSIOCGIFCONF                             = 0xc00c6924\n\tSIOCGIFDEVMTU                           = 0xc0206944\n\tSIOCGIFDSTADDR                          = 0xc0206922\n\tSIOCGIFFLAGS                            = 0xc0206911\n\tSIOCGIFFUNCTIONALTYPE                   = 0xc02069ad\n\tSIOCGIFGENERIC                          = 0xc020693a\n\tSIOCGIFKPI                              = 0xc0206987\n\tSIOCGIFMAC                              = 0xc0206982\n\tSIOCGIFMEDIA                            = 0xc02c6938\n\tSIOCGIFMETRIC                           = 0xc0206917\n\tSIOCGIFMTU                              = 0xc0206933\n\tSIOCGIFNETMASK                          = 0xc0206925\n\tSIOCGIFPDSTADDR                         = 0xc0206940\n\tSIOCGIFPHYS                             = 0xc0206935\n\tSIOCGIFPSRCADDR                         = 0xc020693f\n\tSIOCGIFSTATUS                           = 0xc331693d\n\tSIOCGIFVLAN                             = 0xc020697f\n\tSIOCGIFWAKEFLAGS                        = 0xc0206988\n\tSIOCGIFXMEDIA                           = 0xc02c6948\n\tSIOCGLOWAT                              = 0x40047303\n\tSIOCGPGRP                               = 0x40047309\n\tSIOCIFCREATE                            = 0xc0206978\n\tSIOCIFCREATE2                           = 0xc020697a\n\tSIOCIFDESTROY                           = 0x80206979\n\tSIOCIFGCLONERS                          = 0xc0106981\n\tSIOCRSLVMULTI                           = 0xc010693b\n\tSIOCSDRVSPEC                            = 0x8028697b\n\tSIOCSETVLAN                             = 0x8020697e\n\tSIOCSHIWAT                              = 0x80047300\n\tSIOCSIF6LOWPAN                          = 0x802069c4\n\tSIOCSIFADDR                             = 0x8020690c\n\tSIOCSIFALTMTU                           = 0x80206945\n\tSIOCSIFASYNCMAP                         = 0x8020697d\n\tSIOCSIFBOND                             = 0x80206946\n\tSIOCSIFBRDADDR                          = 0x80206913\n\tSIOCSIFCAP                              = 0x8020695a\n\tSIOCSIFDSTADDR                          = 0x8020690e\n\tSIOCSIFFLAGS                            = 0x80206910\n\tSIOCSIFGENERIC                          = 0x80206939\n\tSIOCSIFKPI                              = 0x80206986\n\tSIOCSIFLLADDR                           = 0x8020693c\n\tSIOCSIFMAC                              = 0x80206983\n\tSIOCSIFMEDIA                            = 0xc0206937\n\tSIOCSIFMETRIC                           = 0x80206918\n\tSIOCSIFMTU                              = 0x80206934\n\tSIOCSIFNETMASK                          = 0x80206916\n\tSIOCSIFPHYADDR                          = 0x8040693e\n\tSIOCSIFPHYS                             = 0x80206936\n\tSIOCSIFVLAN                             = 0x8020697e\n\tSIOCSLOWAT                              = 0x80047302\n\tSIOCSPGRP                               = 0x80047308\n\tSOCK_DGRAM                              = 0x2\n\tSOCK_MAXADDRLEN                         = 0xff\n\tSOCK_RAW                                = 0x3\n\tSOCK_RDM                                = 0x4\n\tSOCK_SEQPACKET                          = 0x5\n\tSOCK_STREAM                             = 0x1\n\tSOL_LOCAL                               = 0x0\n\tSOL_SOCKET                              = 0xffff\n\tSOMAXCONN                               = 0x80\n\tSO_ACCEPTCONN                           = 0x2\n\tSO_BROADCAST                            = 0x20\n\tSO_DEBUG                                = 0x1\n\tSO_DONTROUTE                            = 0x10\n\tSO_DONTTRUNC                            = 0x2000\n\tSO_ERROR                                = 0x1007\n\tSO_KEEPALIVE                            = 0x8\n\tSO_LABEL                                = 0x1010\n\tSO_LINGER                               = 0x80\n\tSO_LINGER_SEC                           = 0x1080\n\tSO_NETSVC_MARKING_LEVEL                 = 0x1119\n\tSO_NET_SERVICE_TYPE                     = 0x1116\n\tSO_NKE                                  = 0x1021\n\tSO_NOADDRERR                            = 0x1023\n\tSO_NOSIGPIPE                            = 0x1022\n\tSO_NOTIFYCONFLICT                       = 0x1026\n\tSO_NP_EXTENSIONS                        = 0x1083\n\tSO_NREAD                                = 0x1020\n\tSO_NUMRCVPKT                            = 0x1112\n\tSO_NWRITE                               = 0x1024\n\tSO_OOBINLINE                            = 0x100\n\tSO_PEERLABEL                            = 0x1011\n\tSO_RANDOMPORT                           = 0x1082\n\tSO_RCVBUF                               = 0x1002\n\tSO_RCVLOWAT                             = 0x1004\n\tSO_RCVTIMEO                             = 0x1006\n\tSO_REUSEADDR                            = 0x4\n\tSO_REUSEPORT                            = 0x200\n\tSO_REUSESHAREUID                        = 0x1025\n\tSO_SNDBUF                               = 0x1001\n\tSO_SNDLOWAT                             = 0x1003\n\tSO_SNDTIMEO                             = 0x1005\n\tSO_TIMESTAMP                            = 0x400\n\tSO_TIMESTAMP_MONOTONIC                  = 0x800\n\tSO_TRACKER_ATTRIBUTE_FLAGS_APP_APPROVED = 0x1\n\tSO_TRACKER_ATTRIBUTE_FLAGS_DOMAIN_SHORT = 0x4\n\tSO_TRACKER_ATTRIBUTE_FLAGS_TRACKER      = 0x2\n\tSO_TRACKER_TRANSPARENCY_VERSION         = 0x3\n\tSO_TYPE                                 = 0x1008\n\tSO_UPCALLCLOSEWAIT                      = 0x1027\n\tSO_USELOOPBACK                          = 0x40\n\tSO_WANTMORE                             = 0x4000\n\tSO_WANTOOBFLAG                          = 0x8000\n\tS_IEXEC                                 = 0x40\n\tS_IFBLK                                 = 0x6000\n\tS_IFCHR                                 = 0x2000\n\tS_IFDIR                                 = 0x4000\n\tS_IFIFO                                 = 0x1000\n\tS_IFLNK                                 = 0xa000\n\tS_IFMT                                  = 0xf000\n\tS_IFREG                                 = 0x8000\n\tS_IFSOCK                                = 0xc000\n\tS_IFWHT                                 = 0xe000\n\tS_IREAD                                 = 0x100\n\tS_IRGRP                                 = 0x20\n\tS_IROTH                                 = 0x4\n\tS_IRUSR                                 = 0x100\n\tS_IRWXG                                 = 0x38\n\tS_IRWXO                                 = 0x7\n\tS_IRWXU                                 = 0x1c0\n\tS_ISGID                                 = 0x400\n\tS_ISTXT                                 = 0x200\n\tS_ISUID                                 = 0x800\n\tS_ISVTX                                 = 0x200\n\tS_IWGRP                                 = 0x10\n\tS_IWOTH                                 = 0x2\n\tS_IWRITE                                = 0x80\n\tS_IWUSR                                 = 0x80\n\tS_IXGRP                                 = 0x8\n\tS_IXOTH                                 = 0x1\n\tS_IXUSR                                 = 0x40\n\tTAB0                                    = 0x0\n\tTAB1                                    = 0x400\n\tTAB2                                    = 0x800\n\tTAB3                                    = 0x4\n\tTABDLY                                  = 0xc04\n\tTCIFLUSH                                = 0x1\n\tTCIOFF                                  = 0x3\n\tTCIOFLUSH                               = 0x3\n\tTCION                                   = 0x4\n\tTCOFLUSH                                = 0x2\n\tTCOOFF                                  = 0x1\n\tTCOON                                   = 0x2\n\tTCPOPT_CC                               = 0xb\n\tTCPOPT_CCECHO                           = 0xd\n\tTCPOPT_CCNEW                            = 0xc\n\tTCPOPT_EOL                              = 0x0\n\tTCPOPT_FASTOPEN                         = 0x22\n\tTCPOPT_MAXSEG                           = 0x2\n\tTCPOPT_NOP                              = 0x1\n\tTCPOPT_SACK                             = 0x5\n\tTCPOPT_SACK_HDR                         = 0x1010500\n\tTCPOPT_SACK_PERMITTED                   = 0x4\n\tTCPOPT_SACK_PERMIT_HDR                  = 0x1010402\n\tTCPOPT_SIGNATURE                        = 0x13\n\tTCPOPT_TIMESTAMP                        = 0x8\n\tTCPOPT_TSTAMP_HDR                       = 0x101080a\n\tTCPOPT_WINDOW                           = 0x3\n\tTCP_CONNECTIONTIMEOUT                   = 0x20\n\tTCP_CONNECTION_INFO                     = 0x106\n\tTCP_ENABLE_ECN                          = 0x104\n\tTCP_FASTOPEN                            = 0x105\n\tTCP_KEEPALIVE                           = 0x10\n\tTCP_KEEPCNT                             = 0x102\n\tTCP_KEEPINTVL                           = 0x101\n\tTCP_MAXHLEN                             = 0x3c\n\tTCP_MAXOLEN                             = 0x28\n\tTCP_MAXSEG                              = 0x2\n\tTCP_MAXWIN                              = 0xffff\n\tTCP_MAX_SACK                            = 0x4\n\tTCP_MAX_WINSHIFT                        = 0xe\n\tTCP_MINMSS                              = 0xd8\n\tTCP_MSS                                 = 0x200\n\tTCP_NODELAY                             = 0x1\n\tTCP_NOOPT                               = 0x8\n\tTCP_NOPUSH                              = 0x4\n\tTCP_NOTSENT_LOWAT                       = 0x201\n\tTCP_RXT_CONNDROPTIME                    = 0x80\n\tTCP_RXT_FINDROP                         = 0x100\n\tTCP_SENDMOREACKS                        = 0x103\n\tTCSAFLUSH                               = 0x2\n\tTIOCCBRK                                = 0x2000747a\n\tTIOCCDTR                                = 0x20007478\n\tTIOCCONS                                = 0x80047462\n\tTIOCDCDTIMESTAMP                        = 0x40107458\n\tTIOCDRAIN                               = 0x2000745e\n\tTIOCDSIMICROCODE                        = 0x20007455\n\tTIOCEXCL                                = 0x2000740d\n\tTIOCEXT                                 = 0x80047460\n\tTIOCFLUSH                               = 0x80047410\n\tTIOCGDRAINWAIT                          = 0x40047456\n\tTIOCGETA                                = 0x40487413\n\tTIOCGETD                                = 0x4004741a\n\tTIOCGPGRP                               = 0x40047477\n\tTIOCGWINSZ                              = 0x40087468\n\tTIOCIXOFF                               = 0x20007480\n\tTIOCIXON                                = 0x20007481\n\tTIOCMBIC                                = 0x8004746b\n\tTIOCMBIS                                = 0x8004746c\n\tTIOCMGDTRWAIT                           = 0x4004745a\n\tTIOCMGET                                = 0x4004746a\n\tTIOCMODG                                = 0x40047403\n\tTIOCMODS                                = 0x80047404\n\tTIOCMSDTRWAIT                           = 0x8004745b\n\tTIOCMSET                                = 0x8004746d\n\tTIOCM_CAR                               = 0x40\n\tTIOCM_CD                                = 0x40\n\tTIOCM_CTS                               = 0x20\n\tTIOCM_DSR                               = 0x100\n\tTIOCM_DTR                               = 0x2\n\tTIOCM_LE                                = 0x1\n\tTIOCM_RI                                = 0x80\n\tTIOCM_RNG                               = 0x80\n\tTIOCM_RTS                               = 0x4\n\tTIOCM_SR                                = 0x10\n\tTIOCM_ST                                = 0x8\n\tTIOCNOTTY                               = 0x20007471\n\tTIOCNXCL                                = 0x2000740e\n\tTIOCOUTQ                                = 0x40047473\n\tTIOCPKT                                 = 0x80047470\n\tTIOCPKT_DATA                            = 0x0\n\tTIOCPKT_DOSTOP                          = 0x20\n\tTIOCPKT_FLUSHREAD                       = 0x1\n\tTIOCPKT_FLUSHWRITE                      = 0x2\n\tTIOCPKT_IOCTL                           = 0x40\n\tTIOCPKT_NOSTOP                          = 0x10\n\tTIOCPKT_START                           = 0x8\n\tTIOCPKT_STOP                            = 0x4\n\tTIOCPTYGNAME                            = 0x40807453\n\tTIOCPTYGRANT                            = 0x20007454\n\tTIOCPTYUNLK                             = 0x20007452\n\tTIOCREMOTE                              = 0x80047469\n\tTIOCSBRK                                = 0x2000747b\n\tTIOCSCONS                               = 0x20007463\n\tTIOCSCTTY                               = 0x20007461\n\tTIOCSDRAINWAIT                          = 0x80047457\n\tTIOCSDTR                                = 0x20007479\n\tTIOCSETA                                = 0x80487414\n\tTIOCSETAF                               = 0x80487416\n\tTIOCSETAW                               = 0x80487415\n\tTIOCSETD                                = 0x8004741b\n\tTIOCSIG                                 = 0x2000745f\n\tTIOCSPGRP                               = 0x80047476\n\tTIOCSTART                               = 0x2000746e\n\tTIOCSTAT                                = 0x20007465\n\tTIOCSTI                                 = 0x80017472\n\tTIOCSTOP                                = 0x2000746f\n\tTIOCSWINSZ                              = 0x80087467\n\tTIOCTIMESTAMP                           = 0x40107459\n\tTIOCUCNTL                               = 0x80047466\n\tTOSTOP                                  = 0x400000\n\tUF_APPEND                               = 0x4\n\tUF_COMPRESSED                           = 0x20\n\tUF_DATAVAULT                            = 0x80\n\tUF_HIDDEN                               = 0x8000\n\tUF_IMMUTABLE                            = 0x2\n\tUF_NODUMP                               = 0x1\n\tUF_OPAQUE                               = 0x8\n\tUF_SETTABLE                             = 0xffff\n\tUF_TRACKED                              = 0x40\n\tVDISCARD                                = 0xf\n\tVDSUSP                                  = 0xb\n\tVEOF                                    = 0x0\n\tVEOL                                    = 0x1\n\tVEOL2                                   = 0x2\n\tVERASE                                  = 0x3\n\tVINTR                                   = 0x8\n\tVKILL                                   = 0x5\n\tVLNEXT                                  = 0xe\n\tVMADDR_CID_ANY                          = 0xffffffff\n\tVMADDR_CID_HOST                         = 0x2\n\tVMADDR_CID_HYPERVISOR                   = 0x0\n\tVMADDR_CID_RESERVED                     = 0x1\n\tVMADDR_PORT_ANY                         = 0xffffffff\n\tVMIN                                    = 0x10\n\tVM_LOADAVG                              = 0x2\n\tVM_MACHFACTOR                           = 0x4\n\tVM_MAXID                                = 0x6\n\tVM_METER                                = 0x1\n\tVM_SWAPUSAGE                            = 0x5\n\tVQUIT                                   = 0x9\n\tVREPRINT                                = 0x6\n\tVSTART                                  = 0xc\n\tVSTATUS                                 = 0x12\n\tVSTOP                                   = 0xd\n\tVSUSP                                   = 0xa\n\tVT0                                     = 0x0\n\tVT1                                     = 0x10000\n\tVTDLY                                   = 0x10000\n\tVTIME                                   = 0x11\n\tVWERASE                                 = 0x4\n\tWCONTINUED                              = 0x10\n\tWCOREFLAG                               = 0x80\n\tWEXITED                                 = 0x4\n\tWNOHANG                                 = 0x1\n\tWNOWAIT                                 = 0x20\n\tWORDSIZE                                = 0x40\n\tWSTOPPED                                = 0x8\n\tWUNTRACED                               = 0x2\n\tXATTR_CREATE                            = 0x2\n\tXATTR_NODEFAULT                         = 0x10\n\tXATTR_NOFOLLOW                          = 0x1\n\tXATTR_NOSECURITY                        = 0x8\n\tXATTR_REPLACE                           = 0x4\n\tXATTR_SHOWCOMPRESSION                   = 0x20\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADARCH        = syscall.Errno(0x56)\n\tEBADEXEC        = syscall.Errno(0x55)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMACHO       = syscall.Errno(0x58)\n\tEBADMSG         = syscall.Errno(0x5e)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x59)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDEVERR         = syscall.Errno(0x53)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x5a)\n\tEILSEQ          = syscall.Errno(0x5c)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x6a)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5f)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x5d)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODATA         = syscall.Errno(0x60)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x61)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x5b)\n\tENOPOLICY       = syscall.Errno(0x67)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x62)\n\tENOSTR          = syscall.Errno(0x63)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x68)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x2d)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x66)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEOWNERDEAD      = syscall.Errno(0x69)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x64)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tEPWROFF         = syscall.Errno(0x52)\n\tEQFULL          = syscall.Errno(0x6a)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHLIBVERS      = syscall.Errno(0x57)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIME           = syscall.Errno(0x65)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"ENOTSUP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EPWROFF\", \"device power is off\"},\n\t{83, \"EDEVERR\", \"device error\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"EBADEXEC\", \"bad executable (or shared library)\"},\n\t{86, \"EBADARCH\", \"bad CPU type in executable\"},\n\t{87, \"ESHLIBVERS\", \"shared library version mismatch\"},\n\t{88, \"EBADMACHO\", \"malformed Mach-o file\"},\n\t{89, \"ECANCELED\", \"operation canceled\"},\n\t{90, \"EIDRM\", \"identifier removed\"},\n\t{91, \"ENOMSG\", \"no message of desired type\"},\n\t{92, \"EILSEQ\", \"illegal byte sequence\"},\n\t{93, \"ENOATTR\", \"attribute not found\"},\n\t{94, \"EBADMSG\", \"bad message\"},\n\t{95, \"EMULTIHOP\", \"EMULTIHOP (Reserved)\"},\n\t{96, \"ENODATA\", \"no message available on STREAM\"},\n\t{97, \"ENOLINK\", \"ENOLINK (Reserved)\"},\n\t{98, \"ENOSR\", \"no STREAM resources\"},\n\t{99, \"ENOSTR\", \"not a STREAM\"},\n\t{100, \"EPROTO\", \"protocol error\"},\n\t{101, \"ETIME\", \"STREAM ioctl timeout\"},\n\t{102, \"EOPNOTSUPP\", \"operation not supported on socket\"},\n\t{103, \"ENOPOLICY\", \"policy not found\"},\n\t{104, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{105, \"EOWNERDEAD\", \"previous owner died\"},\n\t{106, \"EQFULL\", \"interface output queue is full\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGABRT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && darwin\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                            = 0x10\n\tAF_CCITT                                = 0xa\n\tAF_CHAOS                                = 0x5\n\tAF_CNT                                  = 0x15\n\tAF_COIP                                 = 0x14\n\tAF_DATAKIT                              = 0x9\n\tAF_DECnet                               = 0xc\n\tAF_DLI                                  = 0xd\n\tAF_E164                                 = 0x1c\n\tAF_ECMA                                 = 0x8\n\tAF_HYLINK                               = 0xf\n\tAF_IEEE80211                            = 0x25\n\tAF_IMPLINK                              = 0x3\n\tAF_INET                                 = 0x2\n\tAF_INET6                                = 0x1e\n\tAF_IPX                                  = 0x17\n\tAF_ISDN                                 = 0x1c\n\tAF_ISO                                  = 0x7\n\tAF_LAT                                  = 0xe\n\tAF_LINK                                 = 0x12\n\tAF_LOCAL                                = 0x1\n\tAF_MAX                                  = 0x29\n\tAF_NATM                                 = 0x1f\n\tAF_NDRV                                 = 0x1b\n\tAF_NETBIOS                              = 0x21\n\tAF_NS                                   = 0x6\n\tAF_OSI                                  = 0x7\n\tAF_PPP                                  = 0x22\n\tAF_PUP                                  = 0x4\n\tAF_RESERVED_36                          = 0x24\n\tAF_ROUTE                                = 0x11\n\tAF_SIP                                  = 0x18\n\tAF_SNA                                  = 0xb\n\tAF_SYSTEM                               = 0x20\n\tAF_SYS_CONTROL                          = 0x2\n\tAF_UNIX                                 = 0x1\n\tAF_UNSPEC                               = 0x0\n\tAF_UTUN                                 = 0x26\n\tAF_VSOCK                                = 0x28\n\tALTWERASE                               = 0x200\n\tATTR_BIT_MAP_COUNT                      = 0x5\n\tATTR_CMN_ACCESSMASK                     = 0x20000\n\tATTR_CMN_ACCTIME                        = 0x1000\n\tATTR_CMN_ADDEDTIME                      = 0x10000000\n\tATTR_CMN_BKUPTIME                       = 0x2000\n\tATTR_CMN_CHGTIME                        = 0x800\n\tATTR_CMN_CRTIME                         = 0x200\n\tATTR_CMN_DATA_PROTECT_FLAGS             = 0x40000000\n\tATTR_CMN_DEVID                          = 0x2\n\tATTR_CMN_DOCUMENT_ID                    = 0x100000\n\tATTR_CMN_ERROR                          = 0x20000000\n\tATTR_CMN_EXTENDED_SECURITY              = 0x400000\n\tATTR_CMN_FILEID                         = 0x2000000\n\tATTR_CMN_FLAGS                          = 0x40000\n\tATTR_CMN_FNDRINFO                       = 0x4000\n\tATTR_CMN_FSID                           = 0x4\n\tATTR_CMN_FULLPATH                       = 0x8000000\n\tATTR_CMN_GEN_COUNT                      = 0x80000\n\tATTR_CMN_GRPID                          = 0x10000\n\tATTR_CMN_GRPUUID                        = 0x1000000\n\tATTR_CMN_MODTIME                        = 0x400\n\tATTR_CMN_NAME                           = 0x1\n\tATTR_CMN_NAMEDATTRCOUNT                 = 0x80000\n\tATTR_CMN_NAMEDATTRLIST                  = 0x100000\n\tATTR_CMN_OBJID                          = 0x20\n\tATTR_CMN_OBJPERMANENTID                 = 0x40\n\tATTR_CMN_OBJTAG                         = 0x10\n\tATTR_CMN_OBJTYPE                        = 0x8\n\tATTR_CMN_OWNERID                        = 0x8000\n\tATTR_CMN_PARENTID                       = 0x4000000\n\tATTR_CMN_PAROBJID                       = 0x80\n\tATTR_CMN_RETURNED_ATTRS                 = 0x80000000\n\tATTR_CMN_SCRIPT                         = 0x100\n\tATTR_CMN_SETMASK                        = 0x51c7ff00\n\tATTR_CMN_USERACCESS                     = 0x200000\n\tATTR_CMN_UUID                           = 0x800000\n\tATTR_CMN_VALIDMASK                      = 0xffffffff\n\tATTR_CMN_VOLSETMASK                     = 0x6700\n\tATTR_FILE_ALLOCSIZE                     = 0x4\n\tATTR_FILE_CLUMPSIZE                     = 0x10\n\tATTR_FILE_DATAALLOCSIZE                 = 0x400\n\tATTR_FILE_DATAEXTENTS                   = 0x800\n\tATTR_FILE_DATALENGTH                    = 0x200\n\tATTR_FILE_DEVTYPE                       = 0x20\n\tATTR_FILE_FILETYPE                      = 0x40\n\tATTR_FILE_FORKCOUNT                     = 0x80\n\tATTR_FILE_FORKLIST                      = 0x100\n\tATTR_FILE_IOBLOCKSIZE                   = 0x8\n\tATTR_FILE_LINKCOUNT                     = 0x1\n\tATTR_FILE_RSRCALLOCSIZE                 = 0x2000\n\tATTR_FILE_RSRCEXTENTS                   = 0x4000\n\tATTR_FILE_RSRCLENGTH                    = 0x1000\n\tATTR_FILE_SETMASK                       = 0x20\n\tATTR_FILE_TOTALSIZE                     = 0x2\n\tATTR_FILE_VALIDMASK                     = 0x37ff\n\tATTR_VOL_ALLOCATIONCLUMP                = 0x40\n\tATTR_VOL_ATTRIBUTES                     = 0x40000000\n\tATTR_VOL_CAPABILITIES                   = 0x20000\n\tATTR_VOL_DIRCOUNT                       = 0x400\n\tATTR_VOL_ENCODINGSUSED                  = 0x10000\n\tATTR_VOL_FILECOUNT                      = 0x200\n\tATTR_VOL_FSTYPE                         = 0x1\n\tATTR_VOL_INFO                           = 0x80000000\n\tATTR_VOL_IOBLOCKSIZE                    = 0x80\n\tATTR_VOL_MAXOBJCOUNT                    = 0x800\n\tATTR_VOL_MINALLOCATION                  = 0x20\n\tATTR_VOL_MOUNTEDDEVICE                  = 0x8000\n\tATTR_VOL_MOUNTFLAGS                     = 0x4000\n\tATTR_VOL_MOUNTPOINT                     = 0x1000\n\tATTR_VOL_NAME                           = 0x2000\n\tATTR_VOL_OBJCOUNT                       = 0x100\n\tATTR_VOL_QUOTA_SIZE                     = 0x10000000\n\tATTR_VOL_RESERVED_SIZE                  = 0x20000000\n\tATTR_VOL_SETMASK                        = 0x80002000\n\tATTR_VOL_SIGNATURE                      = 0x2\n\tATTR_VOL_SIZE                           = 0x4\n\tATTR_VOL_SPACEAVAIL                     = 0x10\n\tATTR_VOL_SPACEFREE                      = 0x8\n\tATTR_VOL_SPACEUSED                      = 0x800000\n\tATTR_VOL_UUID                           = 0x40000\n\tATTR_VOL_VALIDMASK                      = 0xf087ffff\n\tB0                                      = 0x0\n\tB110                                    = 0x6e\n\tB115200                                 = 0x1c200\n\tB1200                                   = 0x4b0\n\tB134                                    = 0x86\n\tB14400                                  = 0x3840\n\tB150                                    = 0x96\n\tB1800                                   = 0x708\n\tB19200                                  = 0x4b00\n\tB200                                    = 0xc8\n\tB230400                                 = 0x38400\n\tB2400                                   = 0x960\n\tB28800                                  = 0x7080\n\tB300                                    = 0x12c\n\tB38400                                  = 0x9600\n\tB4800                                   = 0x12c0\n\tB50                                     = 0x32\n\tB57600                                  = 0xe100\n\tB600                                    = 0x258\n\tB7200                                   = 0x1c20\n\tB75                                     = 0x4b\n\tB76800                                  = 0x12c00\n\tB9600                                   = 0x2580\n\tBIOCFLUSH                               = 0x20004268\n\tBIOCGBLEN                               = 0x40044266\n\tBIOCGDLT                                = 0x4004426a\n\tBIOCGDLTLIST                            = 0xc00c4279\n\tBIOCGETIF                               = 0x4020426b\n\tBIOCGHDRCMPLT                           = 0x40044274\n\tBIOCGRSIG                               = 0x40044272\n\tBIOCGRTIMEOUT                           = 0x4010426e\n\tBIOCGSEESENT                            = 0x40044276\n\tBIOCGSTATS                              = 0x4008426f\n\tBIOCIMMEDIATE                           = 0x80044270\n\tBIOCPROMISC                             = 0x20004269\n\tBIOCSBLEN                               = 0xc0044266\n\tBIOCSDLT                                = 0x80044278\n\tBIOCSETF                                = 0x80104267\n\tBIOCSETFNR                              = 0x8010427e\n\tBIOCSETIF                               = 0x8020426c\n\tBIOCSHDRCMPLT                           = 0x80044275\n\tBIOCSRSIG                               = 0x80044273\n\tBIOCSRTIMEOUT                           = 0x8010426d\n\tBIOCSSEESENT                            = 0x80044277\n\tBIOCVERSION                             = 0x40044271\n\tBPF_A                                   = 0x10\n\tBPF_ABS                                 = 0x20\n\tBPF_ADD                                 = 0x0\n\tBPF_ALIGNMENT                           = 0x4\n\tBPF_ALU                                 = 0x4\n\tBPF_AND                                 = 0x50\n\tBPF_B                                   = 0x10\n\tBPF_DIV                                 = 0x30\n\tBPF_H                                   = 0x8\n\tBPF_IMM                                 = 0x0\n\tBPF_IND                                 = 0x40\n\tBPF_JA                                  = 0x0\n\tBPF_JEQ                                 = 0x10\n\tBPF_JGE                                 = 0x30\n\tBPF_JGT                                 = 0x20\n\tBPF_JMP                                 = 0x5\n\tBPF_JSET                                = 0x40\n\tBPF_K                                   = 0x0\n\tBPF_LD                                  = 0x0\n\tBPF_LDX                                 = 0x1\n\tBPF_LEN                                 = 0x80\n\tBPF_LSH                                 = 0x60\n\tBPF_MAJOR_VERSION                       = 0x1\n\tBPF_MAXBUFSIZE                          = 0x80000\n\tBPF_MAXINSNS                            = 0x200\n\tBPF_MEM                                 = 0x60\n\tBPF_MEMWORDS                            = 0x10\n\tBPF_MINBUFSIZE                          = 0x20\n\tBPF_MINOR_VERSION                       = 0x1\n\tBPF_MISC                                = 0x7\n\tBPF_MSH                                 = 0xa0\n\tBPF_MUL                                 = 0x20\n\tBPF_NEG                                 = 0x80\n\tBPF_OR                                  = 0x40\n\tBPF_RELEASE                             = 0x30bb6\n\tBPF_RET                                 = 0x6\n\tBPF_RSH                                 = 0x70\n\tBPF_ST                                  = 0x2\n\tBPF_STX                                 = 0x3\n\tBPF_SUB                                 = 0x10\n\tBPF_TAX                                 = 0x0\n\tBPF_TXA                                 = 0x80\n\tBPF_W                                   = 0x0\n\tBPF_X                                   = 0x8\n\tBRKINT                                  = 0x2\n\tBS0                                     = 0x0\n\tBS1                                     = 0x8000\n\tBSDLY                                   = 0x8000\n\tCFLUSH                                  = 0xf\n\tCLOCAL                                  = 0x8000\n\tCLOCK_MONOTONIC                         = 0x6\n\tCLOCK_MONOTONIC_RAW                     = 0x4\n\tCLOCK_MONOTONIC_RAW_APPROX              = 0x5\n\tCLOCK_PROCESS_CPUTIME_ID                = 0xc\n\tCLOCK_REALTIME                          = 0x0\n\tCLOCK_THREAD_CPUTIME_ID                 = 0x10\n\tCLOCK_UPTIME_RAW                        = 0x8\n\tCLOCK_UPTIME_RAW_APPROX                 = 0x9\n\tCLONE_NOFOLLOW                          = 0x1\n\tCLONE_NOOWNERCOPY                       = 0x2\n\tCONNECT_DATA_AUTHENTICATED              = 0x4\n\tCONNECT_DATA_IDEMPOTENT                 = 0x2\n\tCONNECT_RESUME_ON_READ_WRITE            = 0x1\n\tCR0                                     = 0x0\n\tCR1                                     = 0x1000\n\tCR2                                     = 0x2000\n\tCR3                                     = 0x3000\n\tCRDLY                                   = 0x3000\n\tCREAD                                   = 0x800\n\tCRTSCTS                                 = 0x30000\n\tCS5                                     = 0x0\n\tCS6                                     = 0x100\n\tCS7                                     = 0x200\n\tCS8                                     = 0x300\n\tCSIZE                                   = 0x300\n\tCSTART                                  = 0x11\n\tCSTATUS                                 = 0x14\n\tCSTOP                                   = 0x13\n\tCSTOPB                                  = 0x400\n\tCSUSP                                   = 0x1a\n\tCTLIOCGINFO                             = 0xc0644e03\n\tCTL_HW                                  = 0x6\n\tCTL_KERN                                = 0x1\n\tCTL_MAXNAME                             = 0xc\n\tCTL_NET                                 = 0x4\n\tDLT_A429                                = 0xb8\n\tDLT_A653_ICM                            = 0xb9\n\tDLT_AIRONET_HEADER                      = 0x78\n\tDLT_AOS                                 = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394              = 0x8a\n\tDLT_ARCNET                              = 0x7\n\tDLT_ARCNET_LINUX                        = 0x81\n\tDLT_ATM_CLIP                            = 0x13\n\tDLT_ATM_RFC1483                         = 0xb\n\tDLT_AURORA                              = 0x7e\n\tDLT_AX25                                = 0x3\n\tDLT_AX25_KISS                           = 0xca\n\tDLT_BACNET_MS_TP                        = 0xa5\n\tDLT_BLUETOOTH_HCI_H4                    = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR          = 0xc9\n\tDLT_CAN20B                              = 0xbe\n\tDLT_CAN_SOCKETCAN                       = 0xe3\n\tDLT_CHAOS                               = 0x5\n\tDLT_CHDLC                               = 0x68\n\tDLT_CISCO_IOS                           = 0x76\n\tDLT_C_HDLC                              = 0x68\n\tDLT_C_HDLC_WITH_DIR                     = 0xcd\n\tDLT_DBUS                                = 0xe7\n\tDLT_DECT                                = 0xdd\n\tDLT_DOCSIS                              = 0x8f\n\tDLT_DVB_CI                              = 0xeb\n\tDLT_ECONET                              = 0x73\n\tDLT_EN10MB                              = 0x1\n\tDLT_EN3MB                               = 0x2\n\tDLT_ENC                                 = 0x6d\n\tDLT_ERF                                 = 0xc5\n\tDLT_ERF_ETH                             = 0xaf\n\tDLT_ERF_POS                             = 0xb0\n\tDLT_FC_2                                = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS              = 0xe1\n\tDLT_FDDI                                = 0xa\n\tDLT_FLEXRAY                             = 0xd2\n\tDLT_FRELAY                              = 0x6b\n\tDLT_FRELAY_WITH_DIR                     = 0xce\n\tDLT_GCOM_SERIAL                         = 0xad\n\tDLT_GCOM_T1E1                           = 0xac\n\tDLT_GPF_F                               = 0xab\n\tDLT_GPF_T                               = 0xaa\n\tDLT_GPRS_LLC                            = 0xa9\n\tDLT_GSMTAP_ABIS                         = 0xda\n\tDLT_GSMTAP_UM                           = 0xd9\n\tDLT_HHDLC                               = 0x79\n\tDLT_IBM_SN                              = 0x92\n\tDLT_IBM_SP                              = 0x91\n\tDLT_IEEE802                             = 0x6\n\tDLT_IEEE802_11                          = 0x69\n\tDLT_IEEE802_11_RADIO                    = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS                = 0xa3\n\tDLT_IEEE802_15_4                        = 0xc3\n\tDLT_IEEE802_15_4_LINUX                  = 0xbf\n\tDLT_IEEE802_15_4_NOFCS                  = 0xe6\n\tDLT_IEEE802_15_4_NONASK_PHY             = 0xd7\n\tDLT_IEEE802_16_MAC_CPS                  = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO            = 0xc1\n\tDLT_IPFILTER                            = 0x74\n\tDLT_IPMB                                = 0xc7\n\tDLT_IPMB_LINUX                          = 0xd1\n\tDLT_IPNET                               = 0xe2\n\tDLT_IPOIB                               = 0xf2\n\tDLT_IPV4                                = 0xe4\n\tDLT_IPV6                                = 0xe5\n\tDLT_IP_OVER_FC                          = 0x7a\n\tDLT_JUNIPER_ATM1                        = 0x89\n\tDLT_JUNIPER_ATM2                        = 0x87\n\tDLT_JUNIPER_ATM_CEMIC                   = 0xee\n\tDLT_JUNIPER_CHDLC                       = 0xb5\n\tDLT_JUNIPER_ES                          = 0x84\n\tDLT_JUNIPER_ETHER                       = 0xb2\n\tDLT_JUNIPER_FIBRECHANNEL                = 0xea\n\tDLT_JUNIPER_FRELAY                      = 0xb4\n\tDLT_JUNIPER_GGSN                        = 0x85\n\tDLT_JUNIPER_ISM                         = 0xc2\n\tDLT_JUNIPER_MFR                         = 0x86\n\tDLT_JUNIPER_MLFR                        = 0x83\n\tDLT_JUNIPER_MLPPP                       = 0x82\n\tDLT_JUNIPER_MONITOR                     = 0xa4\n\tDLT_JUNIPER_PIC_PEER                    = 0xae\n\tDLT_JUNIPER_PPP                         = 0xb3\n\tDLT_JUNIPER_PPPOE                       = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM                   = 0xa8\n\tDLT_JUNIPER_SERVICES                    = 0x88\n\tDLT_JUNIPER_SRX_E2E                     = 0xe9\n\tDLT_JUNIPER_ST                          = 0xc8\n\tDLT_JUNIPER_VP                          = 0xb7\n\tDLT_JUNIPER_VS                          = 0xe8\n\tDLT_LAPB_WITH_DIR                       = 0xcf\n\tDLT_LAPD                                = 0xcb\n\tDLT_LIN                                 = 0xd4\n\tDLT_LINUX_EVDEV                         = 0xd8\n\tDLT_LINUX_IRDA                          = 0x90\n\tDLT_LINUX_LAPD                          = 0xb1\n\tDLT_LINUX_PPP_WITHDIRECTION             = 0xa6\n\tDLT_LINUX_SLL                           = 0x71\n\tDLT_LOOP                                = 0x6c\n\tDLT_LTALK                               = 0x72\n\tDLT_MATCHING_MAX                        = 0x10a\n\tDLT_MATCHING_MIN                        = 0x68\n\tDLT_MFR                                 = 0xb6\n\tDLT_MOST                                = 0xd3\n\tDLT_MPEG_2_TS                           = 0xf3\n\tDLT_MPLS                                = 0xdb\n\tDLT_MTP2                                = 0x8c\n\tDLT_MTP2_WITH_PHDR                      = 0x8b\n\tDLT_MTP3                                = 0x8d\n\tDLT_MUX27010                            = 0xec\n\tDLT_NETANALYZER                         = 0xf0\n\tDLT_NETANALYZER_TRANSPARENT             = 0xf1\n\tDLT_NFC_LLCP                            = 0xf5\n\tDLT_NFLOG                               = 0xef\n\tDLT_NG40                                = 0xf4\n\tDLT_NULL                                = 0x0\n\tDLT_PCI_EXP                             = 0x7d\n\tDLT_PFLOG                               = 0x75\n\tDLT_PFSYNC                              = 0x12\n\tDLT_PPI                                 = 0xc0\n\tDLT_PPP                                 = 0x9\n\tDLT_PPP_BSDOS                           = 0x10\n\tDLT_PPP_ETHER                           = 0x33\n\tDLT_PPP_PPPD                            = 0xa6\n\tDLT_PPP_SERIAL                          = 0x32\n\tDLT_PPP_WITH_DIR                        = 0xcc\n\tDLT_PPP_WITH_DIRECTION                  = 0xa6\n\tDLT_PRISM_HEADER                        = 0x77\n\tDLT_PRONET                              = 0x4\n\tDLT_RAIF1                               = 0xc6\n\tDLT_RAW                                 = 0xc\n\tDLT_RIO                                 = 0x7c\n\tDLT_SCCP                                = 0x8e\n\tDLT_SITA                                = 0xc4\n\tDLT_SLIP                                = 0x8\n\tDLT_SLIP_BSDOS                          = 0xf\n\tDLT_STANAG_5066_D_PDU                   = 0xed\n\tDLT_SUNATM                              = 0x7b\n\tDLT_SYMANTEC_FIREWALL                   = 0x63\n\tDLT_TZSP                                = 0x80\n\tDLT_USB                                 = 0xba\n\tDLT_USB_DARWIN                          = 0x10a\n\tDLT_USB_LINUX                           = 0xbd\n\tDLT_USB_LINUX_MMAPPED                   = 0xdc\n\tDLT_USER0                               = 0x93\n\tDLT_USER1                               = 0x94\n\tDLT_USER10                              = 0x9d\n\tDLT_USER11                              = 0x9e\n\tDLT_USER12                              = 0x9f\n\tDLT_USER13                              = 0xa0\n\tDLT_USER14                              = 0xa1\n\tDLT_USER15                              = 0xa2\n\tDLT_USER2                               = 0x95\n\tDLT_USER3                               = 0x96\n\tDLT_USER4                               = 0x97\n\tDLT_USER5                               = 0x98\n\tDLT_USER6                               = 0x99\n\tDLT_USER7                               = 0x9a\n\tDLT_USER8                               = 0x9b\n\tDLT_USER9                               = 0x9c\n\tDLT_WIHART                              = 0xdf\n\tDLT_X2E_SERIAL                          = 0xd5\n\tDLT_X2E_XORAYA                          = 0xd6\n\tDT_BLK                                  = 0x6\n\tDT_CHR                                  = 0x2\n\tDT_DIR                                  = 0x4\n\tDT_FIFO                                 = 0x1\n\tDT_LNK                                  = 0xa\n\tDT_REG                                  = 0x8\n\tDT_SOCK                                 = 0xc\n\tDT_UNKNOWN                              = 0x0\n\tDT_WHT                                  = 0xe\n\tECHO                                    = 0x8\n\tECHOCTL                                 = 0x40\n\tECHOE                                   = 0x2\n\tECHOK                                   = 0x4\n\tECHOKE                                  = 0x1\n\tECHONL                                  = 0x10\n\tECHOPRT                                 = 0x20\n\tEVFILT_AIO                              = -0x3\n\tEVFILT_EXCEPT                           = -0xf\n\tEVFILT_FS                               = -0x9\n\tEVFILT_MACHPORT                         = -0x8\n\tEVFILT_PROC                             = -0x5\n\tEVFILT_READ                             = -0x1\n\tEVFILT_SIGNAL                           = -0x6\n\tEVFILT_SYSCOUNT                         = 0x11\n\tEVFILT_THREADMARKER                     = 0x11\n\tEVFILT_TIMER                            = -0x7\n\tEVFILT_USER                             = -0xa\n\tEVFILT_VM                               = -0xc\n\tEVFILT_VNODE                            = -0x4\n\tEVFILT_WRITE                            = -0x2\n\tEV_ADD                                  = 0x1\n\tEV_CLEAR                                = 0x20\n\tEV_DELETE                               = 0x2\n\tEV_DISABLE                              = 0x8\n\tEV_DISPATCH                             = 0x80\n\tEV_DISPATCH2                            = 0x180\n\tEV_ENABLE                               = 0x4\n\tEV_EOF                                  = 0x8000\n\tEV_ERROR                                = 0x4000\n\tEV_FLAG0                                = 0x1000\n\tEV_FLAG1                                = 0x2000\n\tEV_ONESHOT                              = 0x10\n\tEV_OOBAND                               = 0x2000\n\tEV_POLL                                 = 0x1000\n\tEV_RECEIPT                              = 0x40\n\tEV_SYSFLAGS                             = 0xf000\n\tEV_UDATA_SPECIFIC                       = 0x100\n\tEV_VANISHED                             = 0x200\n\tEXTA                                    = 0x4b00\n\tEXTB                                    = 0x9600\n\tEXTPROC                                 = 0x800\n\tFD_CLOEXEC                              = 0x1\n\tFD_SETSIZE                              = 0x400\n\tFF0                                     = 0x0\n\tFF1                                     = 0x4000\n\tFFDLY                                   = 0x4000\n\tFLUSHO                                  = 0x800000\n\tFSOPT_ATTR_CMN_EXTENDED                 = 0x20\n\tFSOPT_NOFOLLOW                          = 0x1\n\tFSOPT_NOINMEMUPDATE                     = 0x2\n\tFSOPT_PACK_INVAL_ATTRS                  = 0x8\n\tFSOPT_REPORT_FULLSIZE                   = 0x4\n\tFSOPT_RETURN_REALDEV                    = 0x200\n\tF_ADDFILESIGS                           = 0x3d\n\tF_ADDFILESIGS_FOR_DYLD_SIM              = 0x53\n\tF_ADDFILESIGS_INFO                      = 0x67\n\tF_ADDFILESIGS_RETURN                    = 0x61\n\tF_ADDFILESUPPL                          = 0x68\n\tF_ADDSIGS                               = 0x3b\n\tF_ALLOCATEALL                           = 0x4\n\tF_ALLOCATECONTIG                        = 0x2\n\tF_BARRIERFSYNC                          = 0x55\n\tF_CHECK_LV                              = 0x62\n\tF_CHKCLEAN                              = 0x29\n\tF_DUPFD                                 = 0x0\n\tF_DUPFD_CLOEXEC                         = 0x43\n\tF_FINDSIGS                              = 0x4e\n\tF_FLUSH_DATA                            = 0x28\n\tF_FREEZE_FS                             = 0x35\n\tF_FULLFSYNC                             = 0x33\n\tF_GETCODEDIR                            = 0x48\n\tF_GETFD                                 = 0x1\n\tF_GETFL                                 = 0x3\n\tF_GETLK                                 = 0x7\n\tF_GETLKPID                              = 0x42\n\tF_GETNOSIGPIPE                          = 0x4a\n\tF_GETOWN                                = 0x5\n\tF_GETPATH                               = 0x32\n\tF_GETPATH_MTMINFO                       = 0x47\n\tF_GETPATH_NOFIRMLINK                    = 0x66\n\tF_GETPROTECTIONCLASS                    = 0x3f\n\tF_GETPROTECTIONLEVEL                    = 0x4d\n\tF_GETSIGSINFO                           = 0x69\n\tF_GLOBAL_NOCACHE                        = 0x37\n\tF_LOG2PHYS                              = 0x31\n\tF_LOG2PHYS_EXT                          = 0x41\n\tF_NOCACHE                               = 0x30\n\tF_NODIRECT                              = 0x3e\n\tF_OK                                    = 0x0\n\tF_PATHPKG_CHECK                         = 0x34\n\tF_PEOFPOSMODE                           = 0x3\n\tF_PREALLOCATE                           = 0x2a\n\tF_PUNCHHOLE                             = 0x63\n\tF_RDADVISE                              = 0x2c\n\tF_RDAHEAD                               = 0x2d\n\tF_RDLCK                                 = 0x1\n\tF_SETBACKINGSTORE                       = 0x46\n\tF_SETFD                                 = 0x2\n\tF_SETFL                                 = 0x4\n\tF_SETLK                                 = 0x8\n\tF_SETLKW                                = 0x9\n\tF_SETLKWTIMEOUT                         = 0xa\n\tF_SETNOSIGPIPE                          = 0x49\n\tF_SETOWN                                = 0x6\n\tF_SETPROTECTIONCLASS                    = 0x40\n\tF_SETSIZE                               = 0x2b\n\tF_SINGLE_WRITER                         = 0x4c\n\tF_SPECULATIVE_READ                      = 0x65\n\tF_THAW_FS                               = 0x36\n\tF_TRANSCODEKEY                          = 0x4b\n\tF_TRIM_ACTIVE_FILE                      = 0x64\n\tF_UNLCK                                 = 0x2\n\tF_VOLPOSMODE                            = 0x4\n\tF_WRLCK                                 = 0x3\n\tHUPCL                                   = 0x4000\n\tHW_MACHINE                              = 0x1\n\tICANON                                  = 0x100\n\tICMP6_FILTER                            = 0x12\n\tICRNL                                   = 0x100\n\tIEXTEN                                  = 0x400\n\tIFF_ALLMULTI                            = 0x200\n\tIFF_ALTPHYS                             = 0x4000\n\tIFF_BROADCAST                           = 0x2\n\tIFF_DEBUG                               = 0x4\n\tIFF_LINK0                               = 0x1000\n\tIFF_LINK1                               = 0x2000\n\tIFF_LINK2                               = 0x4000\n\tIFF_LOOPBACK                            = 0x8\n\tIFF_MULTICAST                           = 0x8000\n\tIFF_NOARP                               = 0x80\n\tIFF_NOTRAILERS                          = 0x20\n\tIFF_OACTIVE                             = 0x400\n\tIFF_POINTOPOINT                         = 0x10\n\tIFF_PROMISC                             = 0x100\n\tIFF_RUNNING                             = 0x40\n\tIFF_SIMPLEX                             = 0x800\n\tIFF_UP                                  = 0x1\n\tIFNAMSIZ                                = 0x10\n\tIFT_1822                                = 0x2\n\tIFT_6LOWPAN                             = 0x40\n\tIFT_AAL5                                = 0x31\n\tIFT_ARCNET                              = 0x23\n\tIFT_ARCNETPLUS                          = 0x24\n\tIFT_ATM                                 = 0x25\n\tIFT_BRIDGE                              = 0xd1\n\tIFT_CARP                                = 0xf8\n\tIFT_CELLULAR                            = 0xff\n\tIFT_CEPT                                = 0x13\n\tIFT_DS3                                 = 0x1e\n\tIFT_ENC                                 = 0xf4\n\tIFT_EON                                 = 0x19\n\tIFT_ETHER                               = 0x6\n\tIFT_FAITH                               = 0x38\n\tIFT_FDDI                                = 0xf\n\tIFT_FRELAY                              = 0x20\n\tIFT_FRELAYDCE                           = 0x2c\n\tIFT_GIF                                 = 0x37\n\tIFT_HDH1822                             = 0x3\n\tIFT_HIPPI                               = 0x2f\n\tIFT_HSSI                                = 0x2e\n\tIFT_HY                                  = 0xe\n\tIFT_IEEE1394                            = 0x90\n\tIFT_IEEE8023ADLAG                       = 0x88\n\tIFT_ISDNBASIC                           = 0x14\n\tIFT_ISDNPRIMARY                         = 0x15\n\tIFT_ISO88022LLC                         = 0x29\n\tIFT_ISO88023                            = 0x7\n\tIFT_ISO88024                            = 0x8\n\tIFT_ISO88025                            = 0x9\n\tIFT_ISO88026                            = 0xa\n\tIFT_L2VLAN                              = 0x87\n\tIFT_LAPB                                = 0x10\n\tIFT_LOCALTALK                           = 0x2a\n\tIFT_LOOP                                = 0x18\n\tIFT_MIOX25                              = 0x26\n\tIFT_MODEM                               = 0x30\n\tIFT_NSIP                                = 0x1b\n\tIFT_OTHER                               = 0x1\n\tIFT_P10                                 = 0xc\n\tIFT_P80                                 = 0xd\n\tIFT_PARA                                = 0x22\n\tIFT_PDP                                 = 0xff\n\tIFT_PFLOG                               = 0xf5\n\tIFT_PFSYNC                              = 0xf6\n\tIFT_PKTAP                               = 0xfe\n\tIFT_PPP                                 = 0x17\n\tIFT_PROPMUX                             = 0x36\n\tIFT_PROPVIRTUAL                         = 0x35\n\tIFT_PTPSERIAL                           = 0x16\n\tIFT_RS232                               = 0x21\n\tIFT_SDLC                                = 0x11\n\tIFT_SIP                                 = 0x1f\n\tIFT_SLIP                                = 0x1c\n\tIFT_SMDSDXI                             = 0x2b\n\tIFT_SMDSICIP                            = 0x34\n\tIFT_SONET                               = 0x27\n\tIFT_SONETPATH                           = 0x32\n\tIFT_SONETVT                             = 0x33\n\tIFT_STARLAN                             = 0xb\n\tIFT_STF                                 = 0x39\n\tIFT_T1                                  = 0x12\n\tIFT_ULTRA                               = 0x1d\n\tIFT_V35                                 = 0x2d\n\tIFT_X25                                 = 0x5\n\tIFT_X25DDN                              = 0x4\n\tIFT_X25PLE                              = 0x28\n\tIFT_XETHER                              = 0x1a\n\tIGNBRK                                  = 0x1\n\tIGNCR                                   = 0x80\n\tIGNPAR                                  = 0x4\n\tIMAXBEL                                 = 0x2000\n\tINLCR                                   = 0x40\n\tINPCK                                   = 0x10\n\tIN_CLASSA_HOST                          = 0xffffff\n\tIN_CLASSA_MAX                           = 0x80\n\tIN_CLASSA_NET                           = 0xff000000\n\tIN_CLASSA_NSHIFT                        = 0x18\n\tIN_CLASSB_HOST                          = 0xffff\n\tIN_CLASSB_MAX                           = 0x10000\n\tIN_CLASSB_NET                           = 0xffff0000\n\tIN_CLASSB_NSHIFT                        = 0x10\n\tIN_CLASSC_HOST                          = 0xff\n\tIN_CLASSC_NET                           = 0xffffff00\n\tIN_CLASSC_NSHIFT                        = 0x8\n\tIN_CLASSD_HOST                          = 0xfffffff\n\tIN_CLASSD_NET                           = 0xf0000000\n\tIN_CLASSD_NSHIFT                        = 0x1c\n\tIN_LINKLOCALNETNUM                      = 0xa9fe0000\n\tIN_LOOPBACKNET                          = 0x7f\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID          = 0x400473d1\n\tIPPROTO_3PC                             = 0x22\n\tIPPROTO_ADFS                            = 0x44\n\tIPPROTO_AH                              = 0x33\n\tIPPROTO_AHIP                            = 0x3d\n\tIPPROTO_APES                            = 0x63\n\tIPPROTO_ARGUS                           = 0xd\n\tIPPROTO_AX25                            = 0x5d\n\tIPPROTO_BHA                             = 0x31\n\tIPPROTO_BLT                             = 0x1e\n\tIPPROTO_BRSATMON                        = 0x4c\n\tIPPROTO_CFTP                            = 0x3e\n\tIPPROTO_CHAOS                           = 0x10\n\tIPPROTO_CMTP                            = 0x26\n\tIPPROTO_CPHB                            = 0x49\n\tIPPROTO_CPNX                            = 0x48\n\tIPPROTO_DDP                             = 0x25\n\tIPPROTO_DGP                             = 0x56\n\tIPPROTO_DIVERT                          = 0xfe\n\tIPPROTO_DONE                            = 0x101\n\tIPPROTO_DSTOPTS                         = 0x3c\n\tIPPROTO_EGP                             = 0x8\n\tIPPROTO_EMCON                           = 0xe\n\tIPPROTO_ENCAP                           = 0x62\n\tIPPROTO_EON                             = 0x50\n\tIPPROTO_ESP                             = 0x32\n\tIPPROTO_ETHERIP                         = 0x61\n\tIPPROTO_FRAGMENT                        = 0x2c\n\tIPPROTO_GGP                             = 0x3\n\tIPPROTO_GMTP                            = 0x64\n\tIPPROTO_GRE                             = 0x2f\n\tIPPROTO_HELLO                           = 0x3f\n\tIPPROTO_HMP                             = 0x14\n\tIPPROTO_HOPOPTS                         = 0x0\n\tIPPROTO_ICMP                            = 0x1\n\tIPPROTO_ICMPV6                          = 0x3a\n\tIPPROTO_IDP                             = 0x16\n\tIPPROTO_IDPR                            = 0x23\n\tIPPROTO_IDRP                            = 0x2d\n\tIPPROTO_IGMP                            = 0x2\n\tIPPROTO_IGP                             = 0x55\n\tIPPROTO_IGRP                            = 0x58\n\tIPPROTO_IL                              = 0x28\n\tIPPROTO_INLSP                           = 0x34\n\tIPPROTO_INP                             = 0x20\n\tIPPROTO_IP                              = 0x0\n\tIPPROTO_IPCOMP                          = 0x6c\n\tIPPROTO_IPCV                            = 0x47\n\tIPPROTO_IPEIP                           = 0x5e\n\tIPPROTO_IPIP                            = 0x4\n\tIPPROTO_IPPC                            = 0x43\n\tIPPROTO_IPV4                            = 0x4\n\tIPPROTO_IPV6                            = 0x29\n\tIPPROTO_IRTP                            = 0x1c\n\tIPPROTO_KRYPTOLAN                       = 0x41\n\tIPPROTO_LARP                            = 0x5b\n\tIPPROTO_LEAF1                           = 0x19\n\tIPPROTO_LEAF2                           = 0x1a\n\tIPPROTO_MAX                             = 0x100\n\tIPPROTO_MAXID                           = 0x34\n\tIPPROTO_MEAS                            = 0x13\n\tIPPROTO_MHRP                            = 0x30\n\tIPPROTO_MICP                            = 0x5f\n\tIPPROTO_MTP                             = 0x5c\n\tIPPROTO_MUX                             = 0x12\n\tIPPROTO_ND                              = 0x4d\n\tIPPROTO_NHRP                            = 0x36\n\tIPPROTO_NONE                            = 0x3b\n\tIPPROTO_NSP                             = 0x1f\n\tIPPROTO_NVPII                           = 0xb\n\tIPPROTO_OSPFIGP                         = 0x59\n\tIPPROTO_PGM                             = 0x71\n\tIPPROTO_PIGP                            = 0x9\n\tIPPROTO_PIM                             = 0x67\n\tIPPROTO_PRM                             = 0x15\n\tIPPROTO_PUP                             = 0xc\n\tIPPROTO_PVP                             = 0x4b\n\tIPPROTO_RAW                             = 0xff\n\tIPPROTO_RCCMON                          = 0xa\n\tIPPROTO_RDP                             = 0x1b\n\tIPPROTO_ROUTING                         = 0x2b\n\tIPPROTO_RSVP                            = 0x2e\n\tIPPROTO_RVD                             = 0x42\n\tIPPROTO_SATEXPAK                        = 0x40\n\tIPPROTO_SATMON                          = 0x45\n\tIPPROTO_SCCSP                           = 0x60\n\tIPPROTO_SCTP                            = 0x84\n\tIPPROTO_SDRP                            = 0x2a\n\tIPPROTO_SEP                             = 0x21\n\tIPPROTO_SRPC                            = 0x5a\n\tIPPROTO_ST                              = 0x7\n\tIPPROTO_SVMTP                           = 0x52\n\tIPPROTO_SWIPE                           = 0x35\n\tIPPROTO_TCF                             = 0x57\n\tIPPROTO_TCP                             = 0x6\n\tIPPROTO_TP                              = 0x1d\n\tIPPROTO_TPXX                            = 0x27\n\tIPPROTO_TRUNK1                          = 0x17\n\tIPPROTO_TRUNK2                          = 0x18\n\tIPPROTO_TTP                             = 0x54\n\tIPPROTO_UDP                             = 0x11\n\tIPPROTO_VINES                           = 0x53\n\tIPPROTO_VISA                            = 0x46\n\tIPPROTO_VMTP                            = 0x51\n\tIPPROTO_WBEXPAK                         = 0x4f\n\tIPPROTO_WBMON                           = 0x4e\n\tIPPROTO_WSN                             = 0x4a\n\tIPPROTO_XNET                            = 0xf\n\tIPPROTO_XTP                             = 0x24\n\tIPV6_2292DSTOPTS                        = 0x17\n\tIPV6_2292HOPLIMIT                       = 0x14\n\tIPV6_2292HOPOPTS                        = 0x16\n\tIPV6_2292NEXTHOP                        = 0x15\n\tIPV6_2292PKTINFO                        = 0x13\n\tIPV6_2292PKTOPTIONS                     = 0x19\n\tIPV6_2292RTHDR                          = 0x18\n\tIPV6_3542DSTOPTS                        = 0x32\n\tIPV6_3542HOPLIMIT                       = 0x2f\n\tIPV6_3542HOPOPTS                        = 0x31\n\tIPV6_3542NEXTHOP                        = 0x30\n\tIPV6_3542PKTINFO                        = 0x2e\n\tIPV6_3542RTHDR                          = 0x33\n\tIPV6_ADDR_MC_FLAGS_PREFIX               = 0x20\n\tIPV6_ADDR_MC_FLAGS_TRANSIENT            = 0x10\n\tIPV6_ADDR_MC_FLAGS_UNICAST_BASED        = 0x30\n\tIPV6_AUTOFLOWLABEL                      = 0x3b\n\tIPV6_BINDV6ONLY                         = 0x1b\n\tIPV6_BOUND_IF                           = 0x7d\n\tIPV6_CHECKSUM                           = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS             = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP             = 0x1\n\tIPV6_DEFHLIM                            = 0x40\n\tIPV6_DONTFRAG                           = 0x3e\n\tIPV6_DSTOPTS                            = 0x32\n\tIPV6_FAITH                              = 0x1d\n\tIPV6_FLOWINFO_MASK                      = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK                     = 0xffff0f00\n\tIPV6_FLOW_ECN_MASK                      = 0x3000\n\tIPV6_FRAGTTL                            = 0x3c\n\tIPV6_FW_ADD                             = 0x1e\n\tIPV6_FW_DEL                             = 0x1f\n\tIPV6_FW_FLUSH                           = 0x20\n\tIPV6_FW_GET                             = 0x22\n\tIPV6_FW_ZERO                            = 0x21\n\tIPV6_HLIMDEC                            = 0x1\n\tIPV6_HOPLIMIT                           = 0x2f\n\tIPV6_HOPOPTS                            = 0x31\n\tIPV6_IPSEC_POLICY                       = 0x1c\n\tIPV6_JOIN_GROUP                         = 0xc\n\tIPV6_LEAVE_GROUP                        = 0xd\n\tIPV6_MAXHLIM                            = 0xff\n\tIPV6_MAXOPTHDR                          = 0x800\n\tIPV6_MAXPACKET                          = 0xffff\n\tIPV6_MAX_GROUP_SRC_FILTER               = 0x200\n\tIPV6_MAX_MEMBERSHIPS                    = 0xfff\n\tIPV6_MAX_SOCK_SRC_FILTER                = 0x80\n\tIPV6_MIN_MEMBERSHIPS                    = 0x1f\n\tIPV6_MMTU                               = 0x500\n\tIPV6_MSFILTER                           = 0x4a\n\tIPV6_MULTICAST_HOPS                     = 0xa\n\tIPV6_MULTICAST_IF                       = 0x9\n\tIPV6_MULTICAST_LOOP                     = 0xb\n\tIPV6_NEXTHOP                            = 0x30\n\tIPV6_PATHMTU                            = 0x2c\n\tIPV6_PKTINFO                            = 0x2e\n\tIPV6_PORTRANGE                          = 0xe\n\tIPV6_PORTRANGE_DEFAULT                  = 0x0\n\tIPV6_PORTRANGE_HIGH                     = 0x1\n\tIPV6_PORTRANGE_LOW                      = 0x2\n\tIPV6_PREFER_TEMPADDR                    = 0x3f\n\tIPV6_RECVDSTOPTS                        = 0x28\n\tIPV6_RECVHOPLIMIT                       = 0x25\n\tIPV6_RECVHOPOPTS                        = 0x27\n\tIPV6_RECVPATHMTU                        = 0x2b\n\tIPV6_RECVPKTINFO                        = 0x3d\n\tIPV6_RECVRTHDR                          = 0x26\n\tIPV6_RECVTCLASS                         = 0x23\n\tIPV6_RTHDR                              = 0x33\n\tIPV6_RTHDRDSTOPTS                       = 0x39\n\tIPV6_RTHDR_LOOSE                        = 0x0\n\tIPV6_RTHDR_STRICT                       = 0x1\n\tIPV6_RTHDR_TYPE_0                       = 0x0\n\tIPV6_SOCKOPT_RESERVED1                  = 0x3\n\tIPV6_TCLASS                             = 0x24\n\tIPV6_UNICAST_HOPS                       = 0x4\n\tIPV6_USE_MIN_MTU                        = 0x2a\n\tIPV6_V6ONLY                             = 0x1b\n\tIPV6_VERSION                            = 0x60\n\tIPV6_VERSION_MASK                       = 0xf0\n\tIP_ADD_MEMBERSHIP                       = 0xc\n\tIP_ADD_SOURCE_MEMBERSHIP                = 0x46\n\tIP_BLOCK_SOURCE                         = 0x48\n\tIP_BOUND_IF                             = 0x19\n\tIP_DEFAULT_MULTICAST_LOOP               = 0x1\n\tIP_DEFAULT_MULTICAST_TTL                = 0x1\n\tIP_DF                                   = 0x4000\n\tIP_DONTFRAG                             = 0x1c\n\tIP_DROP_MEMBERSHIP                      = 0xd\n\tIP_DROP_SOURCE_MEMBERSHIP               = 0x47\n\tIP_DUMMYNET_CONFIGURE                   = 0x3c\n\tIP_DUMMYNET_DEL                         = 0x3d\n\tIP_DUMMYNET_FLUSH                       = 0x3e\n\tIP_DUMMYNET_GET                         = 0x40\n\tIP_FAITH                                = 0x16\n\tIP_FW_ADD                               = 0x28\n\tIP_FW_DEL                               = 0x29\n\tIP_FW_FLUSH                             = 0x2a\n\tIP_FW_GET                               = 0x2c\n\tIP_FW_RESETLOG                          = 0x2d\n\tIP_FW_ZERO                              = 0x2b\n\tIP_HDRINCL                              = 0x2\n\tIP_IPSEC_POLICY                         = 0x15\n\tIP_MAXPACKET                            = 0xffff\n\tIP_MAX_GROUP_SRC_FILTER                 = 0x200\n\tIP_MAX_MEMBERSHIPS                      = 0xfff\n\tIP_MAX_SOCK_MUTE_FILTER                 = 0x80\n\tIP_MAX_SOCK_SRC_FILTER                  = 0x80\n\tIP_MF                                   = 0x2000\n\tIP_MIN_MEMBERSHIPS                      = 0x1f\n\tIP_MSFILTER                             = 0x4a\n\tIP_MSS                                  = 0x240\n\tIP_MULTICAST_IF                         = 0x9\n\tIP_MULTICAST_IFINDEX                    = 0x42\n\tIP_MULTICAST_LOOP                       = 0xb\n\tIP_MULTICAST_TTL                        = 0xa\n\tIP_MULTICAST_VIF                        = 0xe\n\tIP_NAT__XXX                             = 0x37\n\tIP_OFFMASK                              = 0x1fff\n\tIP_OLD_FW_ADD                           = 0x32\n\tIP_OLD_FW_DEL                           = 0x33\n\tIP_OLD_FW_FLUSH                         = 0x34\n\tIP_OLD_FW_GET                           = 0x36\n\tIP_OLD_FW_RESETLOG                      = 0x38\n\tIP_OLD_FW_ZERO                          = 0x35\n\tIP_OPTIONS                              = 0x1\n\tIP_PKTINFO                              = 0x1a\n\tIP_PORTRANGE                            = 0x13\n\tIP_PORTRANGE_DEFAULT                    = 0x0\n\tIP_PORTRANGE_HIGH                       = 0x1\n\tIP_PORTRANGE_LOW                        = 0x2\n\tIP_RECVDSTADDR                          = 0x7\n\tIP_RECVIF                               = 0x14\n\tIP_RECVOPTS                             = 0x5\n\tIP_RECVPKTINFO                          = 0x1a\n\tIP_RECVRETOPTS                          = 0x6\n\tIP_RECVTOS                              = 0x1b\n\tIP_RECVTTL                              = 0x18\n\tIP_RETOPTS                              = 0x8\n\tIP_RF                                   = 0x8000\n\tIP_RSVP_OFF                             = 0x10\n\tIP_RSVP_ON                              = 0xf\n\tIP_RSVP_VIF_OFF                         = 0x12\n\tIP_RSVP_VIF_ON                          = 0x11\n\tIP_STRIPHDR                             = 0x17\n\tIP_TOS                                  = 0x3\n\tIP_TRAFFIC_MGT_BACKGROUND               = 0x41\n\tIP_TTL                                  = 0x4\n\tIP_UNBLOCK_SOURCE                       = 0x49\n\tISIG                                    = 0x80\n\tISTRIP                                  = 0x20\n\tIUTF8                                   = 0x4000\n\tIXANY                                   = 0x800\n\tIXOFF                                   = 0x400\n\tIXON                                    = 0x200\n\tKERN_HOSTNAME                           = 0xa\n\tKERN_OSRELEASE                          = 0x2\n\tKERN_OSTYPE                             = 0x1\n\tKERN_VERSION                            = 0x4\n\tLOCAL_PEERCRED                          = 0x1\n\tLOCAL_PEEREPID                          = 0x3\n\tLOCAL_PEEREUUID                         = 0x5\n\tLOCAL_PEERPID                           = 0x2\n\tLOCAL_PEERTOKEN                         = 0x6\n\tLOCAL_PEERUUID                          = 0x4\n\tLOCK_EX                                 = 0x2\n\tLOCK_NB                                 = 0x4\n\tLOCK_SH                                 = 0x1\n\tLOCK_UN                                 = 0x8\n\tMADV_CAN_REUSE                          = 0x9\n\tMADV_DONTNEED                           = 0x4\n\tMADV_FREE                               = 0x5\n\tMADV_FREE_REUSABLE                      = 0x7\n\tMADV_FREE_REUSE                         = 0x8\n\tMADV_NORMAL                             = 0x0\n\tMADV_PAGEOUT                            = 0xa\n\tMADV_RANDOM                             = 0x1\n\tMADV_SEQUENTIAL                         = 0x2\n\tMADV_WILLNEED                           = 0x3\n\tMADV_ZERO_WIRED_PAGES                   = 0x6\n\tMAP_32BIT                               = 0x8000\n\tMAP_ANON                                = 0x1000\n\tMAP_ANONYMOUS                           = 0x1000\n\tMAP_COPY                                = 0x2\n\tMAP_FILE                                = 0x0\n\tMAP_FIXED                               = 0x10\n\tMAP_HASSEMAPHORE                        = 0x200\n\tMAP_JIT                                 = 0x800\n\tMAP_NOCACHE                             = 0x400\n\tMAP_NOEXTEND                            = 0x100\n\tMAP_NORESERVE                           = 0x40\n\tMAP_PRIVATE                             = 0x2\n\tMAP_RENAME                              = 0x20\n\tMAP_RESERVED0080                        = 0x80\n\tMAP_RESILIENT_CODESIGN                  = 0x2000\n\tMAP_RESILIENT_MEDIA                     = 0x4000\n\tMAP_SHARED                              = 0x1\n\tMAP_TRANSLATED_ALLOW_EXECUTE            = 0x20000\n\tMAP_UNIX03                              = 0x40000\n\tMCAST_BLOCK_SOURCE                      = 0x54\n\tMCAST_EXCLUDE                           = 0x2\n\tMCAST_INCLUDE                           = 0x1\n\tMCAST_JOIN_GROUP                        = 0x50\n\tMCAST_JOIN_SOURCE_GROUP                 = 0x52\n\tMCAST_LEAVE_GROUP                       = 0x51\n\tMCAST_LEAVE_SOURCE_GROUP                = 0x53\n\tMCAST_UNBLOCK_SOURCE                    = 0x55\n\tMCAST_UNDEFINED                         = 0x0\n\tMCL_CURRENT                             = 0x1\n\tMCL_FUTURE                              = 0x2\n\tMNT_ASYNC                               = 0x40\n\tMNT_AUTOMOUNTED                         = 0x400000\n\tMNT_CMDFLAGS                            = 0xf0000\n\tMNT_CPROTECT                            = 0x80\n\tMNT_DEFWRITE                            = 0x2000000\n\tMNT_DONTBROWSE                          = 0x100000\n\tMNT_DOVOLFS                             = 0x8000\n\tMNT_DWAIT                               = 0x4\n\tMNT_EXPORTED                            = 0x100\n\tMNT_EXT_ROOT_DATA_VOL                   = 0x1\n\tMNT_FORCE                               = 0x80000\n\tMNT_IGNORE_OWNERSHIP                    = 0x200000\n\tMNT_JOURNALED                           = 0x800000\n\tMNT_LOCAL                               = 0x1000\n\tMNT_MULTILABEL                          = 0x4000000\n\tMNT_NOATIME                             = 0x10000000\n\tMNT_NOBLOCK                             = 0x20000\n\tMNT_NODEV                               = 0x10\n\tMNT_NOEXEC                              = 0x4\n\tMNT_NOSUID                              = 0x8\n\tMNT_NOUSERXATTR                         = 0x1000000\n\tMNT_NOWAIT                              = 0x2\n\tMNT_QUARANTINE                          = 0x400\n\tMNT_QUOTA                               = 0x2000\n\tMNT_RDONLY                              = 0x1\n\tMNT_RELOAD                              = 0x40000\n\tMNT_REMOVABLE                           = 0x200\n\tMNT_ROOTFS                              = 0x4000\n\tMNT_SNAPSHOT                            = 0x40000000\n\tMNT_STRICTATIME                         = 0x80000000\n\tMNT_SYNCHRONOUS                         = 0x2\n\tMNT_UNION                               = 0x20\n\tMNT_UNKNOWNPERMISSIONS                  = 0x200000\n\tMNT_UPDATE                              = 0x10000\n\tMNT_VISFLAGMASK                         = 0xd7f0f7ff\n\tMNT_WAIT                                = 0x1\n\tMSG_CTRUNC                              = 0x20\n\tMSG_DONTROUTE                           = 0x4\n\tMSG_DONTWAIT                            = 0x80\n\tMSG_EOF                                 = 0x100\n\tMSG_EOR                                 = 0x8\n\tMSG_FLUSH                               = 0x400\n\tMSG_HAVEMORE                            = 0x2000\n\tMSG_HOLD                                = 0x800\n\tMSG_NEEDSA                              = 0x10000\n\tMSG_NOSIGNAL                            = 0x80000\n\tMSG_OOB                                 = 0x1\n\tMSG_PEEK                                = 0x2\n\tMSG_RCVMORE                             = 0x4000\n\tMSG_SEND                                = 0x1000\n\tMSG_TRUNC                               = 0x10\n\tMSG_WAITALL                             = 0x40\n\tMSG_WAITSTREAM                          = 0x200\n\tMS_ASYNC                                = 0x1\n\tMS_DEACTIVATE                           = 0x8\n\tMS_INVALIDATE                           = 0x2\n\tMS_KILLPAGES                            = 0x4\n\tMS_SYNC                                 = 0x10\n\tNAME_MAX                                = 0xff\n\tNET_RT_DUMP                             = 0x1\n\tNET_RT_DUMP2                            = 0x7\n\tNET_RT_FLAGS                            = 0x2\n\tNET_RT_FLAGS_PRIV                       = 0xa\n\tNET_RT_IFLIST                           = 0x3\n\tNET_RT_IFLIST2                          = 0x6\n\tNET_RT_MAXID                            = 0xb\n\tNET_RT_STAT                             = 0x4\n\tNET_RT_TRASH                            = 0x5\n\tNFDBITS                                 = 0x20\n\tNL0                                     = 0x0\n\tNL1                                     = 0x100\n\tNL2                                     = 0x200\n\tNL3                                     = 0x300\n\tNLDLY                                   = 0x300\n\tNOFLSH                                  = 0x80000000\n\tNOKERNINFO                              = 0x2000000\n\tNOTE_ABSOLUTE                           = 0x8\n\tNOTE_ATTRIB                             = 0x8\n\tNOTE_BACKGROUND                         = 0x40\n\tNOTE_CHILD                              = 0x4\n\tNOTE_CRITICAL                           = 0x20\n\tNOTE_DELETE                             = 0x1\n\tNOTE_EXEC                               = 0x20000000\n\tNOTE_EXIT                               = 0x80000000\n\tNOTE_EXITSTATUS                         = 0x4000000\n\tNOTE_EXIT_CSERROR                       = 0x40000\n\tNOTE_EXIT_DECRYPTFAIL                   = 0x10000\n\tNOTE_EXIT_DETAIL                        = 0x2000000\n\tNOTE_EXIT_DETAIL_MASK                   = 0x70000\n\tNOTE_EXIT_MEMORY                        = 0x20000\n\tNOTE_EXIT_REPARENTED                    = 0x80000\n\tNOTE_EXTEND                             = 0x4\n\tNOTE_FFAND                              = 0x40000000\n\tNOTE_FFCOPY                             = 0xc0000000\n\tNOTE_FFCTRLMASK                         = 0xc0000000\n\tNOTE_FFLAGSMASK                         = 0xffffff\n\tNOTE_FFNOP                              = 0x0\n\tNOTE_FFOR                               = 0x80000000\n\tNOTE_FORK                               = 0x40000000\n\tNOTE_FUNLOCK                            = 0x100\n\tNOTE_LEEWAY                             = 0x10\n\tNOTE_LINK                               = 0x10\n\tNOTE_LOWAT                              = 0x1\n\tNOTE_MACHTIME                           = 0x100\n\tNOTE_MACH_CONTINUOUS_TIME               = 0x80\n\tNOTE_NONE                               = 0x80\n\tNOTE_NSECONDS                           = 0x4\n\tNOTE_OOB                                = 0x2\n\tNOTE_PCTRLMASK                          = -0x100000\n\tNOTE_PDATAMASK                          = 0xfffff\n\tNOTE_REAP                               = 0x10000000\n\tNOTE_RENAME                             = 0x20\n\tNOTE_REVOKE                             = 0x40\n\tNOTE_SECONDS                            = 0x1\n\tNOTE_SIGNAL                             = 0x8000000\n\tNOTE_TRACK                              = 0x1\n\tNOTE_TRACKERR                           = 0x2\n\tNOTE_TRIGGER                            = 0x1000000\n\tNOTE_USECONDS                           = 0x2\n\tNOTE_VM_ERROR                           = 0x10000000\n\tNOTE_VM_PRESSURE                        = 0x80000000\n\tNOTE_VM_PRESSURE_SUDDEN_TERMINATE       = 0x20000000\n\tNOTE_VM_PRESSURE_TERMINATE              = 0x40000000\n\tNOTE_WRITE                              = 0x2\n\tOCRNL                                   = 0x10\n\tOFDEL                                   = 0x20000\n\tOFILL                                   = 0x80\n\tONLCR                                   = 0x2\n\tONLRET                                  = 0x40\n\tONOCR                                   = 0x20\n\tONOEOT                                  = 0x8\n\tOPOST                                   = 0x1\n\tOXTABS                                  = 0x4\n\tO_ACCMODE                               = 0x3\n\tO_ALERT                                 = 0x20000000\n\tO_APPEND                                = 0x8\n\tO_ASYNC                                 = 0x40\n\tO_CLOEXEC                               = 0x1000000\n\tO_CREAT                                 = 0x200\n\tO_DIRECTORY                             = 0x100000\n\tO_DP_GETRAWENCRYPTED                    = 0x1\n\tO_DP_GETRAWUNENCRYPTED                  = 0x2\n\tO_DSYNC                                 = 0x400000\n\tO_EVTONLY                               = 0x8000\n\tO_EXCL                                  = 0x800\n\tO_EXLOCK                                = 0x20\n\tO_FSYNC                                 = 0x80\n\tO_NDELAY                                = 0x4\n\tO_NOCTTY                                = 0x20000\n\tO_NOFOLLOW                              = 0x100\n\tO_NOFOLLOW_ANY                          = 0x20000000\n\tO_NONBLOCK                              = 0x4\n\tO_POPUP                                 = 0x80000000\n\tO_RDONLY                                = 0x0\n\tO_RDWR                                  = 0x2\n\tO_SHLOCK                                = 0x10\n\tO_SYMLINK                               = 0x200000\n\tO_SYNC                                  = 0x80\n\tO_TRUNC                                 = 0x400\n\tO_WRONLY                                = 0x1\n\tPARENB                                  = 0x1000\n\tPARMRK                                  = 0x8\n\tPARODD                                  = 0x2000\n\tPENDIN                                  = 0x20000000\n\tPRIO_PGRP                               = 0x1\n\tPRIO_PROCESS                            = 0x0\n\tPRIO_USER                               = 0x2\n\tPROT_EXEC                               = 0x4\n\tPROT_NONE                               = 0x0\n\tPROT_READ                               = 0x1\n\tPROT_WRITE                              = 0x2\n\tPT_ATTACH                               = 0xa\n\tPT_ATTACHEXC                            = 0xe\n\tPT_CONTINUE                             = 0x7\n\tPT_DENY_ATTACH                          = 0x1f\n\tPT_DETACH                               = 0xb\n\tPT_FIRSTMACH                            = 0x20\n\tPT_FORCEQUOTA                           = 0x1e\n\tPT_KILL                                 = 0x8\n\tPT_READ_D                               = 0x2\n\tPT_READ_I                               = 0x1\n\tPT_READ_U                               = 0x3\n\tPT_SIGEXC                               = 0xc\n\tPT_STEP                                 = 0x9\n\tPT_THUPDATE                             = 0xd\n\tPT_TRACE_ME                             = 0x0\n\tPT_WRITE_D                              = 0x5\n\tPT_WRITE_I                              = 0x4\n\tPT_WRITE_U                              = 0x6\n\tRENAME_EXCL                             = 0x4\n\tRENAME_NOFOLLOW_ANY                     = 0x10\n\tRENAME_RESERVED1                        = 0x8\n\tRENAME_SECLUDE                          = 0x1\n\tRENAME_SWAP                             = 0x2\n\tRLIMIT_AS                               = 0x5\n\tRLIMIT_CORE                             = 0x4\n\tRLIMIT_CPU                              = 0x0\n\tRLIMIT_CPU_USAGE_MONITOR                = 0x2\n\tRLIMIT_DATA                             = 0x2\n\tRLIMIT_FSIZE                            = 0x1\n\tRLIMIT_MEMLOCK                          = 0x6\n\tRLIMIT_NOFILE                           = 0x8\n\tRLIMIT_NPROC                            = 0x7\n\tRLIMIT_RSS                              = 0x5\n\tRLIMIT_STACK                            = 0x3\n\tRLIM_INFINITY                           = 0x7fffffffffffffff\n\tRTAX_AUTHOR                             = 0x6\n\tRTAX_BRD                                = 0x7\n\tRTAX_DST                                = 0x0\n\tRTAX_GATEWAY                            = 0x1\n\tRTAX_GENMASK                            = 0x3\n\tRTAX_IFA                                = 0x5\n\tRTAX_IFP                                = 0x4\n\tRTAX_MAX                                = 0x8\n\tRTAX_NETMASK                            = 0x2\n\tRTA_AUTHOR                              = 0x40\n\tRTA_BRD                                 = 0x80\n\tRTA_DST                                 = 0x1\n\tRTA_GATEWAY                             = 0x2\n\tRTA_GENMASK                             = 0x8\n\tRTA_IFA                                 = 0x20\n\tRTA_IFP                                 = 0x10\n\tRTA_NETMASK                             = 0x4\n\tRTF_BLACKHOLE                           = 0x1000\n\tRTF_BROADCAST                           = 0x400000\n\tRTF_CLONING                             = 0x100\n\tRTF_CONDEMNED                           = 0x2000000\n\tRTF_DEAD                                = 0x20000000\n\tRTF_DELCLONE                            = 0x80\n\tRTF_DONE                                = 0x40\n\tRTF_DYNAMIC                             = 0x10\n\tRTF_GATEWAY                             = 0x2\n\tRTF_GLOBAL                              = 0x40000000\n\tRTF_HOST                                = 0x4\n\tRTF_IFREF                               = 0x4000000\n\tRTF_IFSCOPE                             = 0x1000000\n\tRTF_LLDATA                              = 0x400\n\tRTF_LLINFO                              = 0x400\n\tRTF_LOCAL                               = 0x200000\n\tRTF_MODIFIED                            = 0x20\n\tRTF_MULTICAST                           = 0x800000\n\tRTF_NOIFREF                             = 0x2000\n\tRTF_PINNED                              = 0x100000\n\tRTF_PRCLONING                           = 0x10000\n\tRTF_PROTO1                              = 0x8000\n\tRTF_PROTO2                              = 0x4000\n\tRTF_PROTO3                              = 0x40000\n\tRTF_PROXY                               = 0x8000000\n\tRTF_REJECT                              = 0x8\n\tRTF_ROUTER                              = 0x10000000\n\tRTF_STATIC                              = 0x800\n\tRTF_UP                                  = 0x1\n\tRTF_WASCLONED                           = 0x20000\n\tRTF_XRESOLVE                            = 0x200\n\tRTM_ADD                                 = 0x1\n\tRTM_CHANGE                              = 0x3\n\tRTM_DELADDR                             = 0xd\n\tRTM_DELETE                              = 0x2\n\tRTM_DELMADDR                            = 0x10\n\tRTM_GET                                 = 0x4\n\tRTM_GET2                                = 0x14\n\tRTM_IFINFO                              = 0xe\n\tRTM_IFINFO2                             = 0x12\n\tRTM_LOCK                                = 0x8\n\tRTM_LOSING                              = 0x5\n\tRTM_MISS                                = 0x7\n\tRTM_NEWADDR                             = 0xc\n\tRTM_NEWMADDR                            = 0xf\n\tRTM_NEWMADDR2                           = 0x13\n\tRTM_OLDADD                              = 0x9\n\tRTM_OLDDEL                              = 0xa\n\tRTM_REDIRECT                            = 0x6\n\tRTM_RESOLVE                             = 0xb\n\tRTM_RTTUNIT                             = 0xf4240\n\tRTM_VERSION                             = 0x5\n\tRTV_EXPIRE                              = 0x4\n\tRTV_HOPCOUNT                            = 0x2\n\tRTV_MTU                                 = 0x1\n\tRTV_RPIPE                               = 0x8\n\tRTV_RTT                                 = 0x40\n\tRTV_RTTVAR                              = 0x80\n\tRTV_SPIPE                               = 0x10\n\tRTV_SSTHRESH                            = 0x20\n\tRUSAGE_CHILDREN                         = -0x1\n\tRUSAGE_SELF                             = 0x0\n\tSAE_ASSOCID_ALL                         = 0xffffffff\n\tSAE_ASSOCID_ANY                         = 0x0\n\tSAE_CONNID_ALL                          = 0xffffffff\n\tSAE_CONNID_ANY                          = 0x0\n\tSCM_CREDS                               = 0x3\n\tSCM_RIGHTS                              = 0x1\n\tSCM_TIMESTAMP                           = 0x2\n\tSCM_TIMESTAMP_MONOTONIC                 = 0x4\n\tSEEK_CUR                                = 0x1\n\tSEEK_DATA                               = 0x4\n\tSEEK_END                                = 0x2\n\tSEEK_HOLE                               = 0x3\n\tSEEK_SET                                = 0x0\n\tSF_APPEND                               = 0x40000\n\tSF_ARCHIVED                             = 0x10000\n\tSF_DATALESS                             = 0x40000000\n\tSF_FIRMLINK                             = 0x800000\n\tSF_IMMUTABLE                            = 0x20000\n\tSF_NOUNLINK                             = 0x100000\n\tSF_RESTRICTED                           = 0x80000\n\tSF_SETTABLE                             = 0x3fff0000\n\tSF_SUPPORTED                            = 0x9f0000\n\tSF_SYNTHETIC                            = 0xc0000000\n\tSHUT_RD                                 = 0x0\n\tSHUT_RDWR                               = 0x2\n\tSHUT_WR                                 = 0x1\n\tSIOCADDMULTI                            = 0x80206931\n\tSIOCAIFADDR                             = 0x8040691a\n\tSIOCARPIPLL                             = 0xc0206928\n\tSIOCATMARK                              = 0x40047307\n\tSIOCAUTOADDR                            = 0xc0206926\n\tSIOCAUTONETMASK                         = 0x80206927\n\tSIOCDELMULTI                            = 0x80206932\n\tSIOCDIFADDR                             = 0x80206919\n\tSIOCDIFPHYADDR                          = 0x80206941\n\tSIOCGDRVSPEC                            = 0xc028697b\n\tSIOCGETVLAN                             = 0xc020697f\n\tSIOCGHIWAT                              = 0x40047301\n\tSIOCGIF6LOWPAN                          = 0xc02069c5\n\tSIOCGIFADDR                             = 0xc0206921\n\tSIOCGIFALTMTU                           = 0xc0206948\n\tSIOCGIFASYNCMAP                         = 0xc020697c\n\tSIOCGIFBOND                             = 0xc0206947\n\tSIOCGIFBRDADDR                          = 0xc0206923\n\tSIOCGIFCAP                              = 0xc020695b\n\tSIOCGIFCONF                             = 0xc00c6924\n\tSIOCGIFDEVMTU                           = 0xc0206944\n\tSIOCGIFDSTADDR                          = 0xc0206922\n\tSIOCGIFFLAGS                            = 0xc0206911\n\tSIOCGIFFUNCTIONALTYPE                   = 0xc02069ad\n\tSIOCGIFGENERIC                          = 0xc020693a\n\tSIOCGIFKPI                              = 0xc0206987\n\tSIOCGIFMAC                              = 0xc0206982\n\tSIOCGIFMEDIA                            = 0xc02c6938\n\tSIOCGIFMETRIC                           = 0xc0206917\n\tSIOCGIFMTU                              = 0xc0206933\n\tSIOCGIFNETMASK                          = 0xc0206925\n\tSIOCGIFPDSTADDR                         = 0xc0206940\n\tSIOCGIFPHYS                             = 0xc0206935\n\tSIOCGIFPSRCADDR                         = 0xc020693f\n\tSIOCGIFSTATUS                           = 0xc331693d\n\tSIOCGIFVLAN                             = 0xc020697f\n\tSIOCGIFWAKEFLAGS                        = 0xc0206988\n\tSIOCGIFXMEDIA                           = 0xc02c6948\n\tSIOCGLOWAT                              = 0x40047303\n\tSIOCGPGRP                               = 0x40047309\n\tSIOCIFCREATE                            = 0xc0206978\n\tSIOCIFCREATE2                           = 0xc020697a\n\tSIOCIFDESTROY                           = 0x80206979\n\tSIOCIFGCLONERS                          = 0xc0106981\n\tSIOCRSLVMULTI                           = 0xc010693b\n\tSIOCSDRVSPEC                            = 0x8028697b\n\tSIOCSETVLAN                             = 0x8020697e\n\tSIOCSHIWAT                              = 0x80047300\n\tSIOCSIF6LOWPAN                          = 0x802069c4\n\tSIOCSIFADDR                             = 0x8020690c\n\tSIOCSIFALTMTU                           = 0x80206945\n\tSIOCSIFASYNCMAP                         = 0x8020697d\n\tSIOCSIFBOND                             = 0x80206946\n\tSIOCSIFBRDADDR                          = 0x80206913\n\tSIOCSIFCAP                              = 0x8020695a\n\tSIOCSIFDSTADDR                          = 0x8020690e\n\tSIOCSIFFLAGS                            = 0x80206910\n\tSIOCSIFGENERIC                          = 0x80206939\n\tSIOCSIFKPI                              = 0x80206986\n\tSIOCSIFLLADDR                           = 0x8020693c\n\tSIOCSIFMAC                              = 0x80206983\n\tSIOCSIFMEDIA                            = 0xc0206937\n\tSIOCSIFMETRIC                           = 0x80206918\n\tSIOCSIFMTU                              = 0x80206934\n\tSIOCSIFNETMASK                          = 0x80206916\n\tSIOCSIFPHYADDR                          = 0x8040693e\n\tSIOCSIFPHYS                             = 0x80206936\n\tSIOCSIFVLAN                             = 0x8020697e\n\tSIOCSLOWAT                              = 0x80047302\n\tSIOCSPGRP                               = 0x80047308\n\tSOCK_DGRAM                              = 0x2\n\tSOCK_MAXADDRLEN                         = 0xff\n\tSOCK_RAW                                = 0x3\n\tSOCK_RDM                                = 0x4\n\tSOCK_SEQPACKET                          = 0x5\n\tSOCK_STREAM                             = 0x1\n\tSOL_LOCAL                               = 0x0\n\tSOL_SOCKET                              = 0xffff\n\tSOMAXCONN                               = 0x80\n\tSO_ACCEPTCONN                           = 0x2\n\tSO_BROADCAST                            = 0x20\n\tSO_DEBUG                                = 0x1\n\tSO_DONTROUTE                            = 0x10\n\tSO_DONTTRUNC                            = 0x2000\n\tSO_ERROR                                = 0x1007\n\tSO_KEEPALIVE                            = 0x8\n\tSO_LABEL                                = 0x1010\n\tSO_LINGER                               = 0x80\n\tSO_LINGER_SEC                           = 0x1080\n\tSO_NETSVC_MARKING_LEVEL                 = 0x1119\n\tSO_NET_SERVICE_TYPE                     = 0x1116\n\tSO_NKE                                  = 0x1021\n\tSO_NOADDRERR                            = 0x1023\n\tSO_NOSIGPIPE                            = 0x1022\n\tSO_NOTIFYCONFLICT                       = 0x1026\n\tSO_NP_EXTENSIONS                        = 0x1083\n\tSO_NREAD                                = 0x1020\n\tSO_NUMRCVPKT                            = 0x1112\n\tSO_NWRITE                               = 0x1024\n\tSO_OOBINLINE                            = 0x100\n\tSO_PEERLABEL                            = 0x1011\n\tSO_RANDOMPORT                           = 0x1082\n\tSO_RCVBUF                               = 0x1002\n\tSO_RCVLOWAT                             = 0x1004\n\tSO_RCVTIMEO                             = 0x1006\n\tSO_REUSEADDR                            = 0x4\n\tSO_REUSEPORT                            = 0x200\n\tSO_REUSESHAREUID                        = 0x1025\n\tSO_SNDBUF                               = 0x1001\n\tSO_SNDLOWAT                             = 0x1003\n\tSO_SNDTIMEO                             = 0x1005\n\tSO_TIMESTAMP                            = 0x400\n\tSO_TIMESTAMP_MONOTONIC                  = 0x800\n\tSO_TRACKER_ATTRIBUTE_FLAGS_APP_APPROVED = 0x1\n\tSO_TRACKER_ATTRIBUTE_FLAGS_DOMAIN_SHORT = 0x4\n\tSO_TRACKER_ATTRIBUTE_FLAGS_TRACKER      = 0x2\n\tSO_TRACKER_TRANSPARENCY_VERSION         = 0x3\n\tSO_TYPE                                 = 0x1008\n\tSO_UPCALLCLOSEWAIT                      = 0x1027\n\tSO_USELOOPBACK                          = 0x40\n\tSO_WANTMORE                             = 0x4000\n\tSO_WANTOOBFLAG                          = 0x8000\n\tS_IEXEC                                 = 0x40\n\tS_IFBLK                                 = 0x6000\n\tS_IFCHR                                 = 0x2000\n\tS_IFDIR                                 = 0x4000\n\tS_IFIFO                                 = 0x1000\n\tS_IFLNK                                 = 0xa000\n\tS_IFMT                                  = 0xf000\n\tS_IFREG                                 = 0x8000\n\tS_IFSOCK                                = 0xc000\n\tS_IFWHT                                 = 0xe000\n\tS_IREAD                                 = 0x100\n\tS_IRGRP                                 = 0x20\n\tS_IROTH                                 = 0x4\n\tS_IRUSR                                 = 0x100\n\tS_IRWXG                                 = 0x38\n\tS_IRWXO                                 = 0x7\n\tS_IRWXU                                 = 0x1c0\n\tS_ISGID                                 = 0x400\n\tS_ISTXT                                 = 0x200\n\tS_ISUID                                 = 0x800\n\tS_ISVTX                                 = 0x200\n\tS_IWGRP                                 = 0x10\n\tS_IWOTH                                 = 0x2\n\tS_IWRITE                                = 0x80\n\tS_IWUSR                                 = 0x80\n\tS_IXGRP                                 = 0x8\n\tS_IXOTH                                 = 0x1\n\tS_IXUSR                                 = 0x40\n\tTAB0                                    = 0x0\n\tTAB1                                    = 0x400\n\tTAB2                                    = 0x800\n\tTAB3                                    = 0x4\n\tTABDLY                                  = 0xc04\n\tTCIFLUSH                                = 0x1\n\tTCIOFF                                  = 0x3\n\tTCIOFLUSH                               = 0x3\n\tTCION                                   = 0x4\n\tTCOFLUSH                                = 0x2\n\tTCOOFF                                  = 0x1\n\tTCOON                                   = 0x2\n\tTCPOPT_CC                               = 0xb\n\tTCPOPT_CCECHO                           = 0xd\n\tTCPOPT_CCNEW                            = 0xc\n\tTCPOPT_EOL                              = 0x0\n\tTCPOPT_FASTOPEN                         = 0x22\n\tTCPOPT_MAXSEG                           = 0x2\n\tTCPOPT_NOP                              = 0x1\n\tTCPOPT_SACK                             = 0x5\n\tTCPOPT_SACK_HDR                         = 0x1010500\n\tTCPOPT_SACK_PERMITTED                   = 0x4\n\tTCPOPT_SACK_PERMIT_HDR                  = 0x1010402\n\tTCPOPT_SIGNATURE                        = 0x13\n\tTCPOPT_TIMESTAMP                        = 0x8\n\tTCPOPT_TSTAMP_HDR                       = 0x101080a\n\tTCPOPT_WINDOW                           = 0x3\n\tTCP_CONNECTIONTIMEOUT                   = 0x20\n\tTCP_CONNECTION_INFO                     = 0x106\n\tTCP_ENABLE_ECN                          = 0x104\n\tTCP_FASTOPEN                            = 0x105\n\tTCP_KEEPALIVE                           = 0x10\n\tTCP_KEEPCNT                             = 0x102\n\tTCP_KEEPINTVL                           = 0x101\n\tTCP_MAXHLEN                             = 0x3c\n\tTCP_MAXOLEN                             = 0x28\n\tTCP_MAXSEG                              = 0x2\n\tTCP_MAXWIN                              = 0xffff\n\tTCP_MAX_SACK                            = 0x4\n\tTCP_MAX_WINSHIFT                        = 0xe\n\tTCP_MINMSS                              = 0xd8\n\tTCP_MSS                                 = 0x200\n\tTCP_NODELAY                             = 0x1\n\tTCP_NOOPT                               = 0x8\n\tTCP_NOPUSH                              = 0x4\n\tTCP_NOTSENT_LOWAT                       = 0x201\n\tTCP_RXT_CONNDROPTIME                    = 0x80\n\tTCP_RXT_FINDROP                         = 0x100\n\tTCP_SENDMOREACKS                        = 0x103\n\tTCSAFLUSH                               = 0x2\n\tTIOCCBRK                                = 0x2000747a\n\tTIOCCDTR                                = 0x20007478\n\tTIOCCONS                                = 0x80047462\n\tTIOCDCDTIMESTAMP                        = 0x40107458\n\tTIOCDRAIN                               = 0x2000745e\n\tTIOCDSIMICROCODE                        = 0x20007455\n\tTIOCEXCL                                = 0x2000740d\n\tTIOCEXT                                 = 0x80047460\n\tTIOCFLUSH                               = 0x80047410\n\tTIOCGDRAINWAIT                          = 0x40047456\n\tTIOCGETA                                = 0x40487413\n\tTIOCGETD                                = 0x4004741a\n\tTIOCGPGRP                               = 0x40047477\n\tTIOCGWINSZ                              = 0x40087468\n\tTIOCIXOFF                               = 0x20007480\n\tTIOCIXON                                = 0x20007481\n\tTIOCMBIC                                = 0x8004746b\n\tTIOCMBIS                                = 0x8004746c\n\tTIOCMGDTRWAIT                           = 0x4004745a\n\tTIOCMGET                                = 0x4004746a\n\tTIOCMODG                                = 0x40047403\n\tTIOCMODS                                = 0x80047404\n\tTIOCMSDTRWAIT                           = 0x8004745b\n\tTIOCMSET                                = 0x8004746d\n\tTIOCM_CAR                               = 0x40\n\tTIOCM_CD                                = 0x40\n\tTIOCM_CTS                               = 0x20\n\tTIOCM_DSR                               = 0x100\n\tTIOCM_DTR                               = 0x2\n\tTIOCM_LE                                = 0x1\n\tTIOCM_RI                                = 0x80\n\tTIOCM_RNG                               = 0x80\n\tTIOCM_RTS                               = 0x4\n\tTIOCM_SR                                = 0x10\n\tTIOCM_ST                                = 0x8\n\tTIOCNOTTY                               = 0x20007471\n\tTIOCNXCL                                = 0x2000740e\n\tTIOCOUTQ                                = 0x40047473\n\tTIOCPKT                                 = 0x80047470\n\tTIOCPKT_DATA                            = 0x0\n\tTIOCPKT_DOSTOP                          = 0x20\n\tTIOCPKT_FLUSHREAD                       = 0x1\n\tTIOCPKT_FLUSHWRITE                      = 0x2\n\tTIOCPKT_IOCTL                           = 0x40\n\tTIOCPKT_NOSTOP                          = 0x10\n\tTIOCPKT_START                           = 0x8\n\tTIOCPKT_STOP                            = 0x4\n\tTIOCPTYGNAME                            = 0x40807453\n\tTIOCPTYGRANT                            = 0x20007454\n\tTIOCPTYUNLK                             = 0x20007452\n\tTIOCREMOTE                              = 0x80047469\n\tTIOCSBRK                                = 0x2000747b\n\tTIOCSCONS                               = 0x20007463\n\tTIOCSCTTY                               = 0x20007461\n\tTIOCSDRAINWAIT                          = 0x80047457\n\tTIOCSDTR                                = 0x20007479\n\tTIOCSETA                                = 0x80487414\n\tTIOCSETAF                               = 0x80487416\n\tTIOCSETAW                               = 0x80487415\n\tTIOCSETD                                = 0x8004741b\n\tTIOCSIG                                 = 0x2000745f\n\tTIOCSPGRP                               = 0x80047476\n\tTIOCSTART                               = 0x2000746e\n\tTIOCSTAT                                = 0x20007465\n\tTIOCSTI                                 = 0x80017472\n\tTIOCSTOP                                = 0x2000746f\n\tTIOCSWINSZ                              = 0x80087467\n\tTIOCTIMESTAMP                           = 0x40107459\n\tTIOCUCNTL                               = 0x80047466\n\tTOSTOP                                  = 0x400000\n\tUF_APPEND                               = 0x4\n\tUF_COMPRESSED                           = 0x20\n\tUF_DATAVAULT                            = 0x80\n\tUF_HIDDEN                               = 0x8000\n\tUF_IMMUTABLE                            = 0x2\n\tUF_NODUMP                               = 0x1\n\tUF_OPAQUE                               = 0x8\n\tUF_SETTABLE                             = 0xffff\n\tUF_TRACKED                              = 0x40\n\tVDISCARD                                = 0xf\n\tVDSUSP                                  = 0xb\n\tVEOF                                    = 0x0\n\tVEOL                                    = 0x1\n\tVEOL2                                   = 0x2\n\tVERASE                                  = 0x3\n\tVINTR                                   = 0x8\n\tVKILL                                   = 0x5\n\tVLNEXT                                  = 0xe\n\tVMADDR_CID_ANY                          = 0xffffffff\n\tVMADDR_CID_HOST                         = 0x2\n\tVMADDR_CID_HYPERVISOR                   = 0x0\n\tVMADDR_CID_RESERVED                     = 0x1\n\tVMADDR_PORT_ANY                         = 0xffffffff\n\tVMIN                                    = 0x10\n\tVM_LOADAVG                              = 0x2\n\tVM_MACHFACTOR                           = 0x4\n\tVM_MAXID                                = 0x6\n\tVM_METER                                = 0x1\n\tVM_SWAPUSAGE                            = 0x5\n\tVQUIT                                   = 0x9\n\tVREPRINT                                = 0x6\n\tVSTART                                  = 0xc\n\tVSTATUS                                 = 0x12\n\tVSTOP                                   = 0xd\n\tVSUSP                                   = 0xa\n\tVT0                                     = 0x0\n\tVT1                                     = 0x10000\n\tVTDLY                                   = 0x10000\n\tVTIME                                   = 0x11\n\tVWERASE                                 = 0x4\n\tWCONTINUED                              = 0x10\n\tWCOREFLAG                               = 0x80\n\tWEXITED                                 = 0x4\n\tWNOHANG                                 = 0x1\n\tWNOWAIT                                 = 0x20\n\tWORDSIZE                                = 0x40\n\tWSTOPPED                                = 0x8\n\tWUNTRACED                               = 0x2\n\tXATTR_CREATE                            = 0x2\n\tXATTR_NODEFAULT                         = 0x10\n\tXATTR_NOFOLLOW                          = 0x1\n\tXATTR_NOSECURITY                        = 0x8\n\tXATTR_REPLACE                           = 0x4\n\tXATTR_SHOWCOMPRESSION                   = 0x20\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADARCH        = syscall.Errno(0x56)\n\tEBADEXEC        = syscall.Errno(0x55)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMACHO       = syscall.Errno(0x58)\n\tEBADMSG         = syscall.Errno(0x5e)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x59)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDEVERR         = syscall.Errno(0x53)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x5a)\n\tEILSEQ          = syscall.Errno(0x5c)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x6a)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5f)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x5d)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODATA         = syscall.Errno(0x60)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x61)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x5b)\n\tENOPOLICY       = syscall.Errno(0x67)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x62)\n\tENOSTR          = syscall.Errno(0x63)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x68)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x2d)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x66)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEOWNERDEAD      = syscall.Errno(0x69)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x64)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tEPWROFF         = syscall.Errno(0x52)\n\tEQFULL          = syscall.Errno(0x6a)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHLIBVERS      = syscall.Errno(0x57)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIME           = syscall.Errno(0x65)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"ENOTSUP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EPWROFF\", \"device power is off\"},\n\t{83, \"EDEVERR\", \"device error\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"EBADEXEC\", \"bad executable (or shared library)\"},\n\t{86, \"EBADARCH\", \"bad CPU type in executable\"},\n\t{87, \"ESHLIBVERS\", \"shared library version mismatch\"},\n\t{88, \"EBADMACHO\", \"malformed Mach-o file\"},\n\t{89, \"ECANCELED\", \"operation canceled\"},\n\t{90, \"EIDRM\", \"identifier removed\"},\n\t{91, \"ENOMSG\", \"no message of desired type\"},\n\t{92, \"EILSEQ\", \"illegal byte sequence\"},\n\t{93, \"ENOATTR\", \"attribute not found\"},\n\t{94, \"EBADMSG\", \"bad message\"},\n\t{95, \"EMULTIHOP\", \"EMULTIHOP (Reserved)\"},\n\t{96, \"ENODATA\", \"no message available on STREAM\"},\n\t{97, \"ENOLINK\", \"ENOLINK (Reserved)\"},\n\t{98, \"ENOSR\", \"no STREAM resources\"},\n\t{99, \"ENOSTR\", \"not a STREAM\"},\n\t{100, \"EPROTO\", \"protocol error\"},\n\t{101, \"ETIME\", \"STREAM ioctl timeout\"},\n\t{102, \"EOPNOTSUPP\", \"operation not supported on socket\"},\n\t{103, \"ENOPOLICY\", \"policy not found\"},\n\t{104, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{105, \"EOWNERDEAD\", \"previous owner died\"},\n\t{106, \"EQFULL\", \"interface output queue is full\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGABRT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && dragonfly\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_ATM                            = 0x1e\n\tAF_BLUETOOTH                      = 0x21\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_HYLINK                         = 0xf\n\tAF_IEEE80211                      = 0x23\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x1c\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x24\n\tAF_MPLS                           = 0x22\n\tAF_NATM                           = 0x1d\n\tAF_NETBIOS                        = 0x6\n\tAF_NETGRAPH                       = 0x20\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x11\n\tAF_SIP                            = 0x18\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tALTWERASE                         = 0x200\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB460800                           = 0x70800\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB921600                           = 0xe1000\n\tB9600                             = 0x2580\n\tBIOCFEEDBACK                      = 0x8004427d\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc0104279\n\tBIOCGETIF                         = 0x4020426b\n\tBIOCGFEEDBACK                     = 0x4004427c\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRSIG                         = 0x40044272\n\tBIOCGRTIMEOUT                     = 0x4010426e\n\tBIOCGSEESENT                      = 0x40044276\n\tBIOCGSTATS                        = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCLOCK                          = 0x2000427a\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDLT                          = 0x80044278\n\tBIOCSETF                          = 0x80104267\n\tBIOCSETIF                         = 0x8020426c\n\tBIOCSETWF                         = 0x8010427b\n\tBIOCSFEEDBACK                     = 0x8004427d\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRSIG                         = 0x80044273\n\tBIOCSRTIMEOUT                     = 0x8010426d\n\tBIOCSSEESENT                      = 0x80044277\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x8\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DEFAULTBUFSIZE                = 0x1000\n\tBPF_DIV                           = 0x30\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x80000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MAX_CLONES                    = 0x80\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MOD                           = 0x90\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBPF_XOR                           = 0xa0\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLOCK_MONOTONIC                   = 0x4\n\tCLOCK_MONOTONIC_FAST              = 0xc\n\tCLOCK_MONOTONIC_PRECISE           = 0xb\n\tCLOCK_PROCESS_CPUTIME_ID          = 0xf\n\tCLOCK_PROF                        = 0x2\n\tCLOCK_REALTIME                    = 0x0\n\tCLOCK_REALTIME_FAST               = 0xa\n\tCLOCK_REALTIME_PRECISE            = 0x9\n\tCLOCK_SECOND                      = 0xd\n\tCLOCK_THREAD_CPUTIME_ID           = 0xe\n\tCLOCK_UPTIME                      = 0x5\n\tCLOCK_UPTIME_FAST                 = 0x8\n\tCLOCK_UPTIME_PRECISE              = 0x7\n\tCLOCK_VIRTUAL                     = 0x1\n\tCPUSTATES                         = 0x5\n\tCP_IDLE                           = 0x4\n\tCP_INTR                           = 0x3\n\tCP_NICE                           = 0x1\n\tCP_SYS                            = 0x2\n\tCP_USER                           = 0x0\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x30000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0x14\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tDLT_A429                          = 0xb8\n\tDLT_A653_ICM                      = 0xb9\n\tDLT_AIRONET_HEADER                = 0x78\n\tDLT_AOS                           = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394        = 0x8a\n\tDLT_ARCNET                        = 0x7\n\tDLT_ARCNET_LINUX                  = 0x81\n\tDLT_ATM_CLIP                      = 0x13\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AURORA                        = 0x7e\n\tDLT_AX25                          = 0x3\n\tDLT_AX25_KISS                     = 0xca\n\tDLT_BACNET_MS_TP                  = 0xa5\n\tDLT_BLUETOOTH_BREDR_BB            = 0xff\n\tDLT_BLUETOOTH_HCI_H4              = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR    = 0xc9\n\tDLT_BLUETOOTH_LE_LL               = 0xfb\n\tDLT_BLUETOOTH_LE_LL_WITH_PHDR     = 0x100\n\tDLT_BLUETOOTH_LINUX_MONITOR       = 0xfe\n\tDLT_CAN20B                        = 0xbe\n\tDLT_CAN_SOCKETCAN                 = 0xe3\n\tDLT_CHAOS                         = 0x5\n\tDLT_CHDLC                         = 0x68\n\tDLT_CISCO_IOS                     = 0x76\n\tDLT_C_HDLC                        = 0x68\n\tDLT_C_HDLC_WITH_DIR               = 0xcd\n\tDLT_DBUS                          = 0xe7\n\tDLT_DECT                          = 0xdd\n\tDLT_DOCSIS                        = 0x8f\n\tDLT_DVB_CI                        = 0xeb\n\tDLT_ECONET                        = 0x73\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0x6d\n\tDLT_EPON                          = 0x103\n\tDLT_ERF                           = 0xc5\n\tDLT_ERF_ETH                       = 0xaf\n\tDLT_ERF_POS                       = 0xb0\n\tDLT_FC_2                          = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS        = 0xe1\n\tDLT_FDDI                          = 0xa\n\tDLT_FLEXRAY                       = 0xd2\n\tDLT_FRELAY                        = 0x6b\n\tDLT_FRELAY_WITH_DIR               = 0xce\n\tDLT_GCOM_SERIAL                   = 0xad\n\tDLT_GCOM_T1E1                     = 0xac\n\tDLT_GPF_F                         = 0xab\n\tDLT_GPF_T                         = 0xaa\n\tDLT_GPRS_LLC                      = 0xa9\n\tDLT_GSMTAP_ABIS                   = 0xda\n\tDLT_GSMTAP_UM                     = 0xd9\n\tDLT_HHDLC                         = 0x79\n\tDLT_IBM_SN                        = 0x92\n\tDLT_IBM_SP                        = 0x91\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS          = 0xa3\n\tDLT_IEEE802_15_4                  = 0xc3\n\tDLT_IEEE802_15_4_LINUX            = 0xbf\n\tDLT_IEEE802_15_4_NOFCS            = 0xe6\n\tDLT_IEEE802_15_4_NONASK_PHY       = 0xd7\n\tDLT_IEEE802_16_MAC_CPS            = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO      = 0xc1\n\tDLT_INFINIBAND                    = 0xf7\n\tDLT_IPFILTER                      = 0x74\n\tDLT_IPMB                          = 0xc7\n\tDLT_IPMB_LINUX                    = 0xd1\n\tDLT_IPMI_HPM_2                    = 0x104\n\tDLT_IPNET                         = 0xe2\n\tDLT_IPOIB                         = 0xf2\n\tDLT_IPV4                          = 0xe4\n\tDLT_IPV6                          = 0xe5\n\tDLT_IP_OVER_FC                    = 0x7a\n\tDLT_ISO_14443                     = 0x108\n\tDLT_JUNIPER_ATM1                  = 0x89\n\tDLT_JUNIPER_ATM2                  = 0x87\n\tDLT_JUNIPER_ATM_CEMIC             = 0xee\n\tDLT_JUNIPER_CHDLC                 = 0xb5\n\tDLT_JUNIPER_ES                    = 0x84\n\tDLT_JUNIPER_ETHER                 = 0xb2\n\tDLT_JUNIPER_FIBRECHANNEL          = 0xea\n\tDLT_JUNIPER_FRELAY                = 0xb4\n\tDLT_JUNIPER_GGSN                  = 0x85\n\tDLT_JUNIPER_ISM                   = 0xc2\n\tDLT_JUNIPER_MFR                   = 0x86\n\tDLT_JUNIPER_MLFR                  = 0x83\n\tDLT_JUNIPER_MLPPP                 = 0x82\n\tDLT_JUNIPER_MONITOR               = 0xa4\n\tDLT_JUNIPER_PIC_PEER              = 0xae\n\tDLT_JUNIPER_PPP                   = 0xb3\n\tDLT_JUNIPER_PPPOE                 = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM             = 0xa8\n\tDLT_JUNIPER_SERVICES              = 0x88\n\tDLT_JUNIPER_SRX_E2E               = 0xe9\n\tDLT_JUNIPER_ST                    = 0xc8\n\tDLT_JUNIPER_VP                    = 0xb7\n\tDLT_JUNIPER_VS                    = 0xe8\n\tDLT_LAPB_WITH_DIR                 = 0xcf\n\tDLT_LAPD                          = 0xcb\n\tDLT_LIN                           = 0xd4\n\tDLT_LINUX_EVDEV                   = 0xd8\n\tDLT_LINUX_IRDA                    = 0x90\n\tDLT_LINUX_LAPD                    = 0xb1\n\tDLT_LINUX_SLL                     = 0x71\n\tDLT_LOOP                          = 0x6c\n\tDLT_LTALK                         = 0x72\n\tDLT_MATCHING_MAX                  = 0x109\n\tDLT_MATCHING_MIN                  = 0x68\n\tDLT_MFR                           = 0xb6\n\tDLT_MOST                          = 0xd3\n\tDLT_MPEG_2_TS                     = 0xf3\n\tDLT_MPLS                          = 0xdb\n\tDLT_MTP2                          = 0x8c\n\tDLT_MTP2_WITH_PHDR                = 0x8b\n\tDLT_MTP3                          = 0x8d\n\tDLT_MUX27010                      = 0xec\n\tDLT_NETANALYZER                   = 0xf0\n\tDLT_NETANALYZER_TRANSPARENT       = 0xf1\n\tDLT_NETLINK                       = 0xfd\n\tDLT_NFC_LLCP                      = 0xf5\n\tDLT_NFLOG                         = 0xef\n\tDLT_NG40                          = 0xf4\n\tDLT_NULL                          = 0x0\n\tDLT_PCI_EXP                       = 0x7d\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PKTAP                         = 0x102\n\tDLT_PPI                           = 0xc0\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0x10\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_PPPD                      = 0xa6\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PPP_WITH_DIR                  = 0xcc\n\tDLT_PRISM_HEADER                  = 0x77\n\tDLT_PROFIBUS_DL                   = 0x101\n\tDLT_PRONET                        = 0x4\n\tDLT_RAIF1                         = 0xc6\n\tDLT_RAW                           = 0xc\n\tDLT_RDS                           = 0x109\n\tDLT_REDBACK_SMARTEDGE             = 0x20\n\tDLT_RIO                           = 0x7c\n\tDLT_RTAC_SERIAL                   = 0xfa\n\tDLT_SCCP                          = 0x8e\n\tDLT_SCTP                          = 0xf8\n\tDLT_SITA                          = 0xc4\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xf\n\tDLT_STANAG_5066_D_PDU             = 0xed\n\tDLT_SUNATM                        = 0x7b\n\tDLT_SYMANTEC_FIREWALL             = 0x63\n\tDLT_TZSP                          = 0x80\n\tDLT_USB                           = 0xba\n\tDLT_USBPCAP                       = 0xf9\n\tDLT_USB_FREEBSD                   = 0xba\n\tDLT_USB_LINUX                     = 0xbd\n\tDLT_USB_LINUX_MMAPPED             = 0xdc\n\tDLT_USER0                         = 0x93\n\tDLT_USER1                         = 0x94\n\tDLT_USER10                        = 0x9d\n\tDLT_USER11                        = 0x9e\n\tDLT_USER12                        = 0x9f\n\tDLT_USER13                        = 0xa0\n\tDLT_USER14                        = 0xa1\n\tDLT_USER15                        = 0xa2\n\tDLT_USER2                         = 0x95\n\tDLT_USER3                         = 0x96\n\tDLT_USER4                         = 0x97\n\tDLT_USER5                         = 0x98\n\tDLT_USER6                         = 0x99\n\tDLT_USER7                         = 0x9a\n\tDLT_USER8                         = 0x9b\n\tDLT_USER9                         = 0x9c\n\tDLT_WATTSTOPPER_DLM               = 0x107\n\tDLT_WIHART                        = 0xdf\n\tDLT_WIRESHARK_UPPER_PDU           = 0xfc\n\tDLT_X2E_SERIAL                    = 0xd5\n\tDLT_X2E_XORAYA                    = 0xd6\n\tDLT_ZWAVE_R1_R2                   = 0x105\n\tDLT_ZWAVE_R3                      = 0x106\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DBF                            = 0xf\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tDT_WHT                            = 0xe\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEVFILT_AIO                        = -0x3\n\tEVFILT_EXCEPT                     = -0x8\n\tEVFILT_FS                         = -0xa\n\tEVFILT_MARKER                     = 0xf\n\tEVFILT_PROC                       = -0x5\n\tEVFILT_READ                       = -0x1\n\tEVFILT_SIGNAL                     = -0x6\n\tEVFILT_SYSCOUNT                   = 0xa\n\tEVFILT_TIMER                      = -0x7\n\tEVFILT_USER                       = -0x9\n\tEVFILT_VNODE                      = -0x4\n\tEVFILT_WRITE                      = -0x2\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_DISPATCH                       = 0x80\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_HUP                            = 0x800\n\tEV_NODATA                         = 0x1000\n\tEV_ONESHOT                        = 0x10\n\tEV_RECEIPT                        = 0x40\n\tEV_SYSFLAGS                       = 0xf800\n\tEXTA                              = 0x4b00\n\tEXTB                              = 0x9600\n\tEXTEXIT_LWP                       = 0x10000\n\tEXTEXIT_PROC                      = 0x0\n\tEXTEXIT_SETINT                    = 0x1\n\tEXTEXIT_SIMPLE                    = 0x0\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x400\n\tFLUSHO                            = 0x800000\n\tF_DUP2FD                          = 0xa\n\tF_DUP2FD_CLOEXEC                  = 0x12\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0x11\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETOWN                          = 0x5\n\tF_OK                              = 0x0\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_ALTPHYS                       = 0x4000\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x318e72\n\tIFF_DEBUG                         = 0x4\n\tIFF_IDIRECT                       = 0x200000\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MONITOR                       = 0x40000\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_NPOLLING                      = 0x100000\n\tIFF_OACTIVE                       = 0x400\n\tIFF_OACTIVE_COMPAT                = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_POLLING                       = 0x10000\n\tIFF_POLLING_COMPAT                = 0x10000\n\tIFF_PPROMISC                      = 0x20000\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_SMART                         = 0x20\n\tIFF_STATICARP                     = 0x80000\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf8\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ENC                           = 0xf4\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf1\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_STF                           = 0xf3\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIN_RFC3021_MASK                   = 0xfffffffe\n\tIPPROTO_3PC                       = 0x22\n\tIPPROTO_ADFS                      = 0x44\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_AHIP                      = 0x3d\n\tIPPROTO_APES                      = 0x63\n\tIPPROTO_ARGUS                     = 0xd\n\tIPPROTO_AX25                      = 0x5d\n\tIPPROTO_BHA                       = 0x31\n\tIPPROTO_BLT                       = 0x1e\n\tIPPROTO_BRSATMON                  = 0x4c\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_CFTP                      = 0x3e\n\tIPPROTO_CHAOS                     = 0x10\n\tIPPROTO_CMTP                      = 0x26\n\tIPPROTO_CPHB                      = 0x49\n\tIPPROTO_CPNX                      = 0x48\n\tIPPROTO_DDP                       = 0x25\n\tIPPROTO_DGP                       = 0x56\n\tIPPROTO_DIVERT                    = 0xfe\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_EMCON                     = 0xe\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GMTP                      = 0x64\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HELLO                     = 0x3f\n\tIPPROTO_HMP                       = 0x14\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IDPR                      = 0x23\n\tIPPROTO_IDRP                      = 0x2d\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IGP                       = 0x55\n\tIPPROTO_IGRP                      = 0x58\n\tIPPROTO_IL                        = 0x28\n\tIPPROTO_INLSP                     = 0x34\n\tIPPROTO_INP                       = 0x20\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPCV                      = 0x47\n\tIPPROTO_IPEIP                     = 0x5e\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPPC                      = 0x43\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_IRTP                      = 0x1c\n\tIPPROTO_KRYPTOLAN                 = 0x41\n\tIPPROTO_LARP                      = 0x5b\n\tIPPROTO_LEAF1                     = 0x19\n\tIPPROTO_LEAF2                     = 0x1a\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x34\n\tIPPROTO_MEAS                      = 0x13\n\tIPPROTO_MHRP                      = 0x30\n\tIPPROTO_MICP                      = 0x5f\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_MTP                       = 0x5c\n\tIPPROTO_MUX                       = 0x12\n\tIPPROTO_ND                        = 0x4d\n\tIPPROTO_NHRP                      = 0x36\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_NSP                       = 0x1f\n\tIPPROTO_NVPII                     = 0xb\n\tIPPROTO_OSPFIGP                   = 0x59\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PGM                       = 0x71\n\tIPPROTO_PIGP                      = 0x9\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PRM                       = 0x15\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_PVP                       = 0x4b\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_RCCMON                    = 0xa\n\tIPPROTO_RDP                       = 0x1b\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_RVD                       = 0x42\n\tIPPROTO_SATEXPAK                  = 0x40\n\tIPPROTO_SATMON                    = 0x45\n\tIPPROTO_SCCSP                     = 0x60\n\tIPPROTO_SDRP                      = 0x2a\n\tIPPROTO_SEP                       = 0x21\n\tIPPROTO_SKIP                      = 0x39\n\tIPPROTO_SRPC                      = 0x5a\n\tIPPROTO_ST                        = 0x7\n\tIPPROTO_SVMTP                     = 0x52\n\tIPPROTO_SWIPE                     = 0x35\n\tIPPROTO_TCF                       = 0x57\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TLSP                      = 0x38\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_TPXX                      = 0x27\n\tIPPROTO_TRUNK1                    = 0x17\n\tIPPROTO_TRUNK2                    = 0x18\n\tIPPROTO_TTP                       = 0x54\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_UNKNOWN                   = 0x102\n\tIPPROTO_VINES                     = 0x53\n\tIPPROTO_VISA                      = 0x46\n\tIPPROTO_VMTP                      = 0x51\n\tIPPROTO_WBEXPAK                   = 0x4f\n\tIPPROTO_WBMON                     = 0x4e\n\tIPPROTO_WSN                       = 0x4a\n\tIPPROTO_XNET                      = 0xf\n\tIPPROTO_XTP                       = 0x24\n\tIPV6_AUTOFLOWLABEL                = 0x3b\n\tIPV6_BINDV6ONLY                   = 0x1b\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_FW_ADD                       = 0x1e\n\tIPV6_FW_DEL                       = 0x1f\n\tIPV6_FW_FLUSH                     = 0x20\n\tIPV6_FW_GET                       = 0x22\n\tIPV6_FW_ZERO                      = 0x21\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MINHLIM                      = 0x28\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MSFILTER                     = 0x4a\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PKTOPTIONS                   = 0x34\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_PREFER_TEMPADDR              = 0x3f\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_DUMMYNET_CONFIGURE             = 0x3c\n\tIP_DUMMYNET_DEL                   = 0x3d\n\tIP_DUMMYNET_FLUSH                 = 0x3e\n\tIP_DUMMYNET_GET                   = 0x40\n\tIP_FW_ADD                         = 0x32\n\tIP_FW_DEL                         = 0x33\n\tIP_FW_FLUSH                       = 0x34\n\tIP_FW_GET                         = 0x36\n\tIP_FW_RESETLOG                    = 0x37\n\tIP_FW_TBL_ADD                     = 0x2a\n\tIP_FW_TBL_CREATE                  = 0x28\n\tIP_FW_TBL_DEL                     = 0x2b\n\tIP_FW_TBL_DESTROY                 = 0x29\n\tIP_FW_TBL_EXPIRE                  = 0x2f\n\tIP_FW_TBL_FLUSH                   = 0x2c\n\tIP_FW_TBL_GET                     = 0x2d\n\tIP_FW_TBL_ZERO                    = 0x2e\n\tIP_FW_X                           = 0x31\n\tIP_FW_ZERO                        = 0x35\n\tIP_HDRINCL                        = 0x2\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0x14\n\tIP_MF                             = 0x2000\n\tIP_MINTTL                         = 0x42\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_MULTICAST_VIF                  = 0xe\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVIF                         = 0x14\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVTTL                        = 0x41\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_RSVP_OFF                       = 0x10\n\tIP_RSVP_ON                        = 0xf\n\tIP_RSVP_VIF_OFF                   = 0x12\n\tIP_RSVP_VIF_ON                    = 0x11\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_AUTOSYNC                     = 0x7\n\tMADV_CONTROL_END                  = 0xb\n\tMADV_CONTROL_START                = 0xa\n\tMADV_CORE                         = 0x9\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x5\n\tMADV_INVAL                        = 0xa\n\tMADV_NOCORE                       = 0x8\n\tMADV_NORMAL                       = 0x0\n\tMADV_NOSYNC                       = 0x6\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SETMAP                       = 0xb\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ANON                          = 0x1000\n\tMAP_ANONYMOUS                     = 0x1000\n\tMAP_COPY                          = 0x2\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_HASSEMAPHORE                  = 0x200\n\tMAP_INHERIT                       = 0x80\n\tMAP_NOCORE                        = 0x20000\n\tMAP_NOEXTEND                      = 0x100\n\tMAP_NORESERVE                     = 0x40\n\tMAP_NOSYNC                        = 0x800\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x20\n\tMAP_SHARED                        = 0x1\n\tMAP_SIZEALIGN                     = 0x40000\n\tMAP_STACK                         = 0x400\n\tMAP_TRYFIXED                      = 0x10000\n\tMAP_VPAGETABLE                    = 0x2000\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_AUTOMOUNTED                   = 0x20\n\tMNT_CMDFLAGS                      = 0xf0000\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DELEXPORT                     = 0x20000\n\tMNT_EXKERB                        = 0x800\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXPUBLIC                      = 0x20000000\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_FORCE                         = 0x80000\n\tMNT_IGNORE                        = 0x800000\n\tMNT_LAZY                          = 0x4\n\tMNT_LOCAL                         = 0x1000\n\tMNT_NOATIME                       = 0x10000000\n\tMNT_NOCLUSTERR                    = 0x40000000\n\tMNT_NOCLUSTERW                    = 0x80000000\n\tMNT_NODEV                         = 0x10\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOSYMFOLLOW                   = 0x400000\n\tMNT_NOWAIT                        = 0x2\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x200000\n\tMNT_SUIDDIR                       = 0x100000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_TRIM                          = 0x1000000\n\tMNT_UPDATE                        = 0x10000\n\tMNT_USER                          = 0x8000\n\tMNT_VISFLAGMASK                   = 0xf1f0ffff\n\tMNT_WAIT                          = 0x1\n\tMSG_CMSG_CLOEXEC                  = 0x1000\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOF                           = 0x100\n\tMSG_EOR                           = 0x8\n\tMSG_FBLOCKING                     = 0x10000\n\tMSG_FMASK                         = 0xffff0000\n\tMSG_FNONBLOCKING                  = 0x20000\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_SYNC                          = 0x800\n\tMSG_TRUNC                         = 0x10\n\tMSG_UNUSED09                      = 0x200\n\tMSG_WAITALL                       = 0x40\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x2\n\tMS_SYNC                           = 0x0\n\tNAME_MAX                          = 0xff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x3\n\tNET_RT_MAXID                      = 0x4\n\tNFDBITS                           = 0x40\n\tNOFLSH                            = 0x80000000\n\tNOKERNINFO                        = 0x2000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FFAND                        = 0x40000000\n\tNOTE_FFCOPY                       = 0xc0000000\n\tNOTE_FFCTRLMASK                   = 0xc0000000\n\tNOTE_FFLAGSMASK                   = 0xffffff\n\tNOTE_FFNOP                        = 0x0\n\tNOTE_FFOR                         = 0x80000000\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_OOB                          = 0x2\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_TRIGGER                      = 0x1000000\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tONLCR                             = 0x2\n\tONLRET                            = 0x40\n\tONOCR                             = 0x20\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tOXTABS                            = 0x4\n\tO_ACCMODE                         = 0x3\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x20000\n\tO_CREAT                           = 0x200\n\tO_DIRECT                          = 0x10000\n\tO_DIRECTORY                       = 0x8000000\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FAPPEND                         = 0x100000\n\tO_FASYNCWRITE                     = 0x800000\n\tO_FBLOCKING                       = 0x40000\n\tO_FMASK                           = 0xfc0000\n\tO_FNONBLOCKING                    = 0x80000\n\tO_FOFFSET                         = 0x200000\n\tO_FSYNC                           = 0x80\n\tO_FSYNCWRITE                      = 0x400000\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tRLIMIT_AS                         = 0xa\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BRD                          = 0x7\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_MAX                          = 0xb\n\tRTAX_MPLS1                        = 0x8\n\tRTAX_MPLS2                        = 0x9\n\tRTAX_MPLS3                        = 0xa\n\tRTAX_NETMASK                      = 0x2\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BRD                           = 0x80\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_MPLS1                         = 0x100\n\tRTA_MPLS2                         = 0x200\n\tRTA_MPLS3                         = 0x400\n\tRTA_NETMASK                       = 0x4\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_BROADCAST                     = 0x400000\n\tRTF_CLONING                       = 0x100\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_LOCAL                         = 0x200000\n\tRTF_MODIFIED                      = 0x20\n\tRTF_MPLSOPS                       = 0x1000000\n\tRTF_MULTICAST                     = 0x800000\n\tRTF_PINNED                        = 0x100000\n\tRTF_PRCLONING                     = 0x10000\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_PROTO3                        = 0x40000\n\tRTF_REJECT                        = 0x8\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_WASCLONED                     = 0x20000\n\tRTF_XRESOLVE                      = 0x200\n\tRTM_ADD                           = 0x1\n\tRTM_CHANGE                        = 0x3\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_DELMADDR                      = 0x10\n\tRTM_GET                           = 0x4\n\tRTM_IEEE80211                     = 0x12\n\tRTM_IFANNOUNCE                    = 0x11\n\tRTM_IFINFO                        = 0xe\n\tRTM_LOCK                          = 0x8\n\tRTM_LOSING                        = 0x5\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_NEWMADDR                      = 0xf\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_RTTUNIT                       = 0xf4240\n\tRTM_VERSION                       = 0x7\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_IWCAPSEGS                     = 0x400\n\tRTV_IWMAXSEGS                     = 0x200\n\tRTV_MSL                           = 0x100\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tSCM_CREDS                         = 0x3\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x2\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80206931\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCAIFGROUP                      = 0x80286987\n\tSIOCALIFADDR                      = 0x8118691b\n\tSIOCATMARK                        = 0x40047307\n\tSIOCDELMULTI                      = 0x80206932\n\tSIOCDIFADDR                       = 0x80206919\n\tSIOCDIFGROUP                      = 0x80286989\n\tSIOCDIFPHYADDR                    = 0x80206949\n\tSIOCDLIFADDR                      = 0x8118691d\n\tSIOCGDRVSPEC                      = 0xc028697b\n\tSIOCGETSGCNT                      = 0xc0207210\n\tSIOCGETVIFCNT                     = 0xc028720f\n\tSIOCGHIWAT                        = 0x40047301\n\tSIOCGIFADDR                       = 0xc0206921\n\tSIOCGIFALIAS                      = 0xc0406929\n\tSIOCGIFBRDADDR                    = 0xc0206923\n\tSIOCGIFCAP                        = 0xc020691f\n\tSIOCGIFCONF                       = 0xc0106924\n\tSIOCGIFDATA                       = 0xc0206926\n\tSIOCGIFDSTADDR                    = 0xc0206922\n\tSIOCGIFFLAGS                      = 0xc0206911\n\tSIOCGIFGENERIC                    = 0xc020693a\n\tSIOCGIFGMEMB                      = 0xc028698a\n\tSIOCGIFGROUP                      = 0xc0286988\n\tSIOCGIFINDEX                      = 0xc0206920\n\tSIOCGIFMEDIA                      = 0xc0306938\n\tSIOCGIFMETRIC                     = 0xc0206917\n\tSIOCGIFMTU                        = 0xc0206933\n\tSIOCGIFNETMASK                    = 0xc0206925\n\tSIOCGIFPDSTADDR                   = 0xc0206948\n\tSIOCGIFPHYS                       = 0xc0206935\n\tSIOCGIFPOLLCPU                    = 0xc020697e\n\tSIOCGIFPSRCADDR                   = 0xc0206947\n\tSIOCGIFSTATUS                     = 0xc331693b\n\tSIOCGIFTSOLEN                     = 0xc0206980\n\tSIOCGLIFADDR                      = 0xc118691c\n\tSIOCGLIFPHYADDR                   = 0xc118694b\n\tSIOCGLOWAT                        = 0x40047303\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGPRIVATE_0                    = 0xc0206950\n\tSIOCGPRIVATE_1                    = 0xc0206951\n\tSIOCIFCREATE                      = 0xc020697a\n\tSIOCIFCREATE2                     = 0xc020697c\n\tSIOCIFDESTROY                     = 0x80206979\n\tSIOCIFGCLONERS                    = 0xc0106978\n\tSIOCSDRVSPEC                      = 0x8028697b\n\tSIOCSHIWAT                        = 0x80047300\n\tSIOCSIFADDR                       = 0x8020690c\n\tSIOCSIFBRDADDR                    = 0x80206913\n\tSIOCSIFCAP                        = 0x8020691e\n\tSIOCSIFDSTADDR                    = 0x8020690e\n\tSIOCSIFFLAGS                      = 0x80206910\n\tSIOCSIFGENERIC                    = 0x80206939\n\tSIOCSIFLLADDR                     = 0x8020693c\n\tSIOCSIFMEDIA                      = 0xc0206937\n\tSIOCSIFMETRIC                     = 0x80206918\n\tSIOCSIFMTU                        = 0x80206934\n\tSIOCSIFNAME                       = 0x80206928\n\tSIOCSIFNETMASK                    = 0x80206916\n\tSIOCSIFPHYADDR                    = 0x80406946\n\tSIOCSIFPHYS                       = 0x80206936\n\tSIOCSIFPOLLCPU                    = 0x8020697d\n\tSIOCSIFTSOLEN                     = 0x8020697f\n\tSIOCSLIFPHYADDR                   = 0x8118694a\n\tSIOCSLOWAT                        = 0x80047302\n\tSIOCSPGRP                         = 0x80047308\n\tSOCK_CLOEXEC                      = 0x10000000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_MAXADDRLEN                   = 0xff\n\tSOCK_NONBLOCK                     = 0x20000000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_ACCEPTFILTER                   = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_CPUHINT                        = 0x1030\n\tSO_DEBUG                          = 0x1\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NOSIGPIPE                      = 0x800\n\tSO_OOBINLINE                      = 0x100\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x1006\n\tSO_RERROR                         = 0x2000\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDSPACE                       = 0x100a\n\tSO_SNDTIMEO                       = 0x1005\n\tSO_TIMESTAMP                      = 0x400\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDB                            = 0x9000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IFWHT                           = 0xe000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tTAB0                              = 0x0\n\tTAB3                              = 0x4\n\tTABDLY                            = 0x4\n\tTCIFLUSH                          = 0x1\n\tTCIOFF                            = 0x3\n\tTCIOFLUSH                         = 0x3\n\tTCION                             = 0x4\n\tTCOFLUSH                          = 0x2\n\tTCOOFF                            = 0x1\n\tTCOON                             = 0x2\n\tTCP_FASTKEEP                      = 0x80\n\tTCP_KEEPCNT                       = 0x400\n\tTCP_KEEPIDLE                      = 0x100\n\tTCP_KEEPINIT                      = 0x20\n\tTCP_KEEPINTVL                     = 0x200\n\tTCP_MAXBURST                      = 0x4\n\tTCP_MAXHLEN                       = 0x3c\n\tTCP_MAXOLEN                       = 0x28\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MINMSS                        = 0x100\n\tTCP_MIN_WINSHIFT                  = 0x5\n\tTCP_MSS                           = 0x200\n\tTCP_NODELAY                       = 0x1\n\tTCP_NOOPT                         = 0x8\n\tTCP_NOPUSH                        = 0x4\n\tTCP_SIGNATURE_ENABLE              = 0x10\n\tTCSAFLUSH                         = 0x2\n\tTIMER_ABSTIME                     = 0x1\n\tTIMER_RELTIME                     = 0x0\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCONS                          = 0x80047462\n\tTIOCDCDTIMESTAMP                  = 0x40107458\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGDRAINWAIT                    = 0x40047456\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGSID                          = 0x40047463\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCISPTMASTER                    = 0x20007455\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGDTRWAIT                     = 0x4004745a\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMODG                          = 0x40047403\n\tTIOCMODS                          = 0x80047404\n\tTIOCMSDTRWAIT                     = 0x8004745b\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDRAINWAIT                    = 0x80047457\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSIG                           = 0x2000745f\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x20007465\n\tTIOCSTI                           = 0x80017472\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCTIMESTAMP                     = 0x40107459\n\tTIOCUCNTL                         = 0x80047466\n\tTOSTOP                            = 0x400000\n\tUTIME_NOW                         = -0x1\n\tUTIME_OMIT                        = -0x2\n\tVCHECKPT                          = 0x13\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVERASE2                           = 0x7\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVM_BCACHE_SIZE_MAX                = 0x0\n\tVM_SWZONE_SIZE_MAX                = 0x4000000000\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWCONTINUED                        = 0x4\n\tWCOREFLAG                         = 0x80\n\tWEXITED                           = 0x10\n\tWLINUXCLONE                       = 0x80000000\n\tWNOHANG                           = 0x1\n\tWNOWAIT                           = 0x8\n\tWSTOPPED                          = 0x2\n\tWTRAPPED                          = 0x20\n\tWUNTRACED                         = 0x2\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEASYNC          = syscall.Errno(0x63)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x59)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x55)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDOOFUS         = syscall.Errno(0x58)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x52)\n\tEILSEQ          = syscall.Errno(0x56)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x63)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5a)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x57)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x5b)\n\tENOMEDIUM       = syscall.Errno(0x5d)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x53)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x2d)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5c)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT     = syscall.Signal(0x6)\n\tSIGALRM     = syscall.Signal(0xe)\n\tSIGBUS      = syscall.Signal(0xa)\n\tSIGCHLD     = syscall.Signal(0x14)\n\tSIGCKPT     = syscall.Signal(0x21)\n\tSIGCKPTEXIT = syscall.Signal(0x22)\n\tSIGCONT     = syscall.Signal(0x13)\n\tSIGEMT      = syscall.Signal(0x7)\n\tSIGFPE      = syscall.Signal(0x8)\n\tSIGHUP      = syscall.Signal(0x1)\n\tSIGILL      = syscall.Signal(0x4)\n\tSIGINFO     = syscall.Signal(0x1d)\n\tSIGINT      = syscall.Signal(0x2)\n\tSIGIO       = syscall.Signal(0x17)\n\tSIGIOT      = syscall.Signal(0x6)\n\tSIGKILL     = syscall.Signal(0x9)\n\tSIGPIPE     = syscall.Signal(0xd)\n\tSIGPROF     = syscall.Signal(0x1b)\n\tSIGQUIT     = syscall.Signal(0x3)\n\tSIGSEGV     = syscall.Signal(0xb)\n\tSIGSTOP     = syscall.Signal(0x11)\n\tSIGSYS      = syscall.Signal(0xc)\n\tSIGTERM     = syscall.Signal(0xf)\n\tSIGTHR      = syscall.Signal(0x20)\n\tSIGTRAP     = syscall.Signal(0x5)\n\tSIGTSTP     = syscall.Signal(0x12)\n\tSIGTTIN     = syscall.Signal(0x15)\n\tSIGTTOU     = syscall.Signal(0x16)\n\tSIGURG      = syscall.Signal(0x10)\n\tSIGUSR1     = syscall.Signal(0x1e)\n\tSIGUSR2     = syscall.Signal(0x1f)\n\tSIGVTALRM   = syscall.Signal(0x1a)\n\tSIGWINCH    = syscall.Signal(0x1c)\n\tSIGXCPU     = syscall.Signal(0x18)\n\tSIGXFSZ     = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EWOULDBLOCK\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIDRM\", \"identifier removed\"},\n\t{83, \"ENOMSG\", \"no message of desired type\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"ECANCELED\", \"operation canceled\"},\n\t{86, \"EILSEQ\", \"illegal byte sequence\"},\n\t{87, \"ENOATTR\", \"attribute not found\"},\n\t{88, \"EDOOFUS\", \"programming error\"},\n\t{89, \"EBADMSG\", \"bad message\"},\n\t{90, \"EMULTIHOP\", \"multihop attempted\"},\n\t{91, \"ENOLINK\", \"link has been severed\"},\n\t{92, \"EPROTO\", \"protocol error\"},\n\t{93, \"ENOMEDIUM\", \"no medium found\"},\n\t{99, \"EASYNC\", \"unknown error: 99\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"thread Scheduler\"},\n\t{33, \"SIGCKPT\", \"checkPoint\"},\n\t{34, \"SIGCKPTEXIT\", \"checkPointExit\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go",
    "content": "// mkerrors.sh -m32\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build 386 && freebsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m32 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                   = 0x10\n\tAF_ARP                         = 0x23\n\tAF_ATM                         = 0x1e\n\tAF_BLUETOOTH                   = 0x24\n\tAF_CCITT                       = 0xa\n\tAF_CHAOS                       = 0x5\n\tAF_CNT                         = 0x15\n\tAF_COIP                        = 0x14\n\tAF_DATAKIT                     = 0x9\n\tAF_DECnet                      = 0xc\n\tAF_DLI                         = 0xd\n\tAF_E164                        = 0x1a\n\tAF_ECMA                        = 0x8\n\tAF_HYLINK                      = 0xf\n\tAF_IEEE80211                   = 0x25\n\tAF_IMPLINK                     = 0x3\n\tAF_INET                        = 0x2\n\tAF_INET6                       = 0x1c\n\tAF_INET6_SDP                   = 0x2a\n\tAF_INET_SDP                    = 0x28\n\tAF_IPX                         = 0x17\n\tAF_ISDN                        = 0x1a\n\tAF_ISO                         = 0x7\n\tAF_LAT                         = 0xe\n\tAF_LINK                        = 0x12\n\tAF_LOCAL                       = 0x1\n\tAF_MAX                         = 0x2a\n\tAF_NATM                        = 0x1d\n\tAF_NETBIOS                     = 0x6\n\tAF_NETGRAPH                    = 0x20\n\tAF_OSI                         = 0x7\n\tAF_PUP                         = 0x4\n\tAF_ROUTE                       = 0x11\n\tAF_SCLUSTER                    = 0x22\n\tAF_SIP                         = 0x18\n\tAF_SLOW                        = 0x21\n\tAF_SNA                         = 0xb\n\tAF_UNIX                        = 0x1\n\tAF_UNSPEC                      = 0x0\n\tAF_VENDOR00                    = 0x27\n\tAF_VENDOR01                    = 0x29\n\tAF_VENDOR02                    = 0x2b\n\tAF_VENDOR03                    = 0x2d\n\tAF_VENDOR04                    = 0x2f\n\tAF_VENDOR05                    = 0x31\n\tAF_VENDOR06                    = 0x33\n\tAF_VENDOR07                    = 0x35\n\tAF_VENDOR08                    = 0x37\n\tAF_VENDOR09                    = 0x39\n\tAF_VENDOR10                    = 0x3b\n\tAF_VENDOR11                    = 0x3d\n\tAF_VENDOR12                    = 0x3f\n\tAF_VENDOR13                    = 0x41\n\tAF_VENDOR14                    = 0x43\n\tAF_VENDOR15                    = 0x45\n\tAF_VENDOR16                    = 0x47\n\tAF_VENDOR17                    = 0x49\n\tAF_VENDOR18                    = 0x4b\n\tAF_VENDOR19                    = 0x4d\n\tAF_VENDOR20                    = 0x4f\n\tAF_VENDOR21                    = 0x51\n\tAF_VENDOR22                    = 0x53\n\tAF_VENDOR23                    = 0x55\n\tAF_VENDOR24                    = 0x57\n\tAF_VENDOR25                    = 0x59\n\tAF_VENDOR26                    = 0x5b\n\tAF_VENDOR27                    = 0x5d\n\tAF_VENDOR28                    = 0x5f\n\tAF_VENDOR29                    = 0x61\n\tAF_VENDOR30                    = 0x63\n\tAF_VENDOR31                    = 0x65\n\tAF_VENDOR32                    = 0x67\n\tAF_VENDOR33                    = 0x69\n\tAF_VENDOR34                    = 0x6b\n\tAF_VENDOR35                    = 0x6d\n\tAF_VENDOR36                    = 0x6f\n\tAF_VENDOR37                    = 0x71\n\tAF_VENDOR38                    = 0x73\n\tAF_VENDOR39                    = 0x75\n\tAF_VENDOR40                    = 0x77\n\tAF_VENDOR41                    = 0x79\n\tAF_VENDOR42                    = 0x7b\n\tAF_VENDOR43                    = 0x7d\n\tAF_VENDOR44                    = 0x7f\n\tAF_VENDOR45                    = 0x81\n\tAF_VENDOR46                    = 0x83\n\tAF_VENDOR47                    = 0x85\n\tALTWERASE                      = 0x200\n\tB0                             = 0x0\n\tB110                           = 0x6e\n\tB115200                        = 0x1c200\n\tB1200                          = 0x4b0\n\tB134                           = 0x86\n\tB14400                         = 0x3840\n\tB150                           = 0x96\n\tB1800                          = 0x708\n\tB19200                         = 0x4b00\n\tB200                           = 0xc8\n\tB230400                        = 0x38400\n\tB2400                          = 0x960\n\tB28800                         = 0x7080\n\tB300                           = 0x12c\n\tB38400                         = 0x9600\n\tB460800                        = 0x70800\n\tB4800                          = 0x12c0\n\tB50                            = 0x32\n\tB57600                         = 0xe100\n\tB600                           = 0x258\n\tB7200                          = 0x1c20\n\tB75                            = 0x4b\n\tB76800                         = 0x12c00\n\tB921600                        = 0xe1000\n\tB9600                          = 0x2580\n\tBIOCFEEDBACK                   = 0x8004427c\n\tBIOCFLUSH                      = 0x20004268\n\tBIOCGBLEN                      = 0x40044266\n\tBIOCGDIRECTION                 = 0x40044276\n\tBIOCGDLT                       = 0x4004426a\n\tBIOCGDLTLIST                   = 0xc0084279\n\tBIOCGETBUFMODE                 = 0x4004427d\n\tBIOCGETIF                      = 0x4020426b\n\tBIOCGETZMAX                    = 0x4004427f\n\tBIOCGHDRCMPLT                  = 0x40044274\n\tBIOCGRSIG                      = 0x40044272\n\tBIOCGRTIMEOUT                  = 0x4008426e\n\tBIOCGSEESENT                   = 0x40044276\n\tBIOCGSTATS                     = 0x4008426f\n\tBIOCGTSTAMP                    = 0x40044283\n\tBIOCIMMEDIATE                  = 0x80044270\n\tBIOCLOCK                       = 0x2000427a\n\tBIOCPROMISC                    = 0x20004269\n\tBIOCROTZBUF                    = 0x400c4280\n\tBIOCSBLEN                      = 0xc0044266\n\tBIOCSDIRECTION                 = 0x80044277\n\tBIOCSDLT                       = 0x80044278\n\tBIOCSETBUFMODE                 = 0x8004427e\n\tBIOCSETF                       = 0x80084267\n\tBIOCSETFNR                     = 0x80084282\n\tBIOCSETIF                      = 0x8020426c\n\tBIOCSETVLANPCP                 = 0x80044285\n\tBIOCSETWF                      = 0x8008427b\n\tBIOCSETZBUF                    = 0x800c4281\n\tBIOCSHDRCMPLT                  = 0x80044275\n\tBIOCSRSIG                      = 0x80044273\n\tBIOCSRTIMEOUT                  = 0x8008426d\n\tBIOCSSEESENT                   = 0x80044277\n\tBIOCSTSTAMP                    = 0x80044284\n\tBIOCVERSION                    = 0x40044271\n\tBPF_A                          = 0x10\n\tBPF_ABS                        = 0x20\n\tBPF_ADD                        = 0x0\n\tBPF_ALIGNMENT                  = 0x4\n\tBPF_ALU                        = 0x4\n\tBPF_AND                        = 0x50\n\tBPF_B                          = 0x10\n\tBPF_BUFMODE_BUFFER             = 0x1\n\tBPF_BUFMODE_ZBUF               = 0x2\n\tBPF_DIV                        = 0x30\n\tBPF_H                          = 0x8\n\tBPF_IMM                        = 0x0\n\tBPF_IND                        = 0x40\n\tBPF_JA                         = 0x0\n\tBPF_JEQ                        = 0x10\n\tBPF_JGE                        = 0x30\n\tBPF_JGT                        = 0x20\n\tBPF_JMP                        = 0x5\n\tBPF_JSET                       = 0x40\n\tBPF_K                          = 0x0\n\tBPF_LD                         = 0x0\n\tBPF_LDX                        = 0x1\n\tBPF_LEN                        = 0x80\n\tBPF_LSH                        = 0x60\n\tBPF_MAJOR_VERSION              = 0x1\n\tBPF_MAXBUFSIZE                 = 0x80000\n\tBPF_MAXINSNS                   = 0x200\n\tBPF_MEM                        = 0x60\n\tBPF_MEMWORDS                   = 0x10\n\tBPF_MINBUFSIZE                 = 0x20\n\tBPF_MINOR_VERSION              = 0x1\n\tBPF_MISC                       = 0x7\n\tBPF_MOD                        = 0x90\n\tBPF_MSH                        = 0xa0\n\tBPF_MUL                        = 0x20\n\tBPF_NEG                        = 0x80\n\tBPF_OR                         = 0x40\n\tBPF_RELEASE                    = 0x30bb6\n\tBPF_RET                        = 0x6\n\tBPF_RSH                        = 0x70\n\tBPF_ST                         = 0x2\n\tBPF_STX                        = 0x3\n\tBPF_SUB                        = 0x10\n\tBPF_TAX                        = 0x0\n\tBPF_TXA                        = 0x80\n\tBPF_T_BINTIME                  = 0x2\n\tBPF_T_BINTIME_FAST             = 0x102\n\tBPF_T_BINTIME_MONOTONIC        = 0x202\n\tBPF_T_BINTIME_MONOTONIC_FAST   = 0x302\n\tBPF_T_FAST                     = 0x100\n\tBPF_T_FLAG_MASK                = 0x300\n\tBPF_T_FORMAT_MASK              = 0x3\n\tBPF_T_MICROTIME                = 0x0\n\tBPF_T_MICROTIME_FAST           = 0x100\n\tBPF_T_MICROTIME_MONOTONIC      = 0x200\n\tBPF_T_MICROTIME_MONOTONIC_FAST = 0x300\n\tBPF_T_MONOTONIC                = 0x200\n\tBPF_T_MONOTONIC_FAST           = 0x300\n\tBPF_T_NANOTIME                 = 0x1\n\tBPF_T_NANOTIME_FAST            = 0x101\n\tBPF_T_NANOTIME_MONOTONIC       = 0x201\n\tBPF_T_NANOTIME_MONOTONIC_FAST  = 0x301\n\tBPF_T_NONE                     = 0x3\n\tBPF_T_NORMAL                   = 0x0\n\tBPF_W                          = 0x0\n\tBPF_X                          = 0x8\n\tBPF_XOR                        = 0xa0\n\tBRKINT                         = 0x2\n\tCAP_ACCEPT                     = 0x200000020000000\n\tCAP_ACL_CHECK                  = 0x400000000010000\n\tCAP_ACL_DELETE                 = 0x400000000020000\n\tCAP_ACL_GET                    = 0x400000000040000\n\tCAP_ACL_SET                    = 0x400000000080000\n\tCAP_ALL0                       = 0x20007ffffffffff\n\tCAP_ALL1                       = 0x4000000001fffff\n\tCAP_BIND                       = 0x200000040000000\n\tCAP_BINDAT                     = 0x200008000000400\n\tCAP_CHFLAGSAT                  = 0x200000000001400\n\tCAP_CONNECT                    = 0x200000080000000\n\tCAP_CONNECTAT                  = 0x200010000000400\n\tCAP_CREATE                     = 0x200000000000040\n\tCAP_EVENT                      = 0x400000000000020\n\tCAP_EXTATTR_DELETE             = 0x400000000001000\n\tCAP_EXTATTR_GET                = 0x400000000002000\n\tCAP_EXTATTR_LIST               = 0x400000000004000\n\tCAP_EXTATTR_SET                = 0x400000000008000\n\tCAP_FCHDIR                     = 0x200000000000800\n\tCAP_FCHFLAGS                   = 0x200000000001000\n\tCAP_FCHMOD                     = 0x200000000002000\n\tCAP_FCHMODAT                   = 0x200000000002400\n\tCAP_FCHOWN                     = 0x200000000004000\n\tCAP_FCHOWNAT                   = 0x200000000004400\n\tCAP_FCNTL                      = 0x200000000008000\n\tCAP_FCNTL_ALL                  = 0x78\n\tCAP_FCNTL_GETFL                = 0x8\n\tCAP_FCNTL_GETOWN               = 0x20\n\tCAP_FCNTL_SETFL                = 0x10\n\tCAP_FCNTL_SETOWN               = 0x40\n\tCAP_FEXECVE                    = 0x200000000000080\n\tCAP_FLOCK                      = 0x200000000010000\n\tCAP_FPATHCONF                  = 0x200000000020000\n\tCAP_FSCK                       = 0x200000000040000\n\tCAP_FSTAT                      = 0x200000000080000\n\tCAP_FSTATAT                    = 0x200000000080400\n\tCAP_FSTATFS                    = 0x200000000100000\n\tCAP_FSYNC                      = 0x200000000000100\n\tCAP_FTRUNCATE                  = 0x200000000000200\n\tCAP_FUTIMES                    = 0x200000000200000\n\tCAP_FUTIMESAT                  = 0x200000000200400\n\tCAP_GETPEERNAME                = 0x200000100000000\n\tCAP_GETSOCKNAME                = 0x200000200000000\n\tCAP_GETSOCKOPT                 = 0x200000400000000\n\tCAP_IOCTL                      = 0x400000000000080\n\tCAP_IOCTLS_ALL                 = 0x7fffffff\n\tCAP_KQUEUE                     = 0x400000000100040\n\tCAP_KQUEUE_CHANGE              = 0x400000000100000\n\tCAP_KQUEUE_EVENT               = 0x400000000000040\n\tCAP_LINKAT_SOURCE              = 0x200020000000400\n\tCAP_LINKAT_TARGET              = 0x200000000400400\n\tCAP_LISTEN                     = 0x200000800000000\n\tCAP_LOOKUP                     = 0x200000000000400\n\tCAP_MAC_GET                    = 0x400000000000001\n\tCAP_MAC_SET                    = 0x400000000000002\n\tCAP_MKDIRAT                    = 0x200000000800400\n\tCAP_MKFIFOAT                   = 0x200000001000400\n\tCAP_MKNODAT                    = 0x200000002000400\n\tCAP_MMAP                       = 0x200000000000010\n\tCAP_MMAP_R                     = 0x20000000000001d\n\tCAP_MMAP_RW                    = 0x20000000000001f\n\tCAP_MMAP_RWX                   = 0x20000000000003f\n\tCAP_MMAP_RX                    = 0x20000000000003d\n\tCAP_MMAP_W                     = 0x20000000000001e\n\tCAP_MMAP_WX                    = 0x20000000000003e\n\tCAP_MMAP_X                     = 0x20000000000003c\n\tCAP_PDGETPID                   = 0x400000000000200\n\tCAP_PDKILL                     = 0x400000000000800\n\tCAP_PDWAIT                     = 0x400000000000400\n\tCAP_PEELOFF                    = 0x200001000000000\n\tCAP_POLL_EVENT                 = 0x400000000000020\n\tCAP_PREAD                      = 0x20000000000000d\n\tCAP_PWRITE                     = 0x20000000000000e\n\tCAP_READ                       = 0x200000000000001\n\tCAP_RECV                       = 0x200000000000001\n\tCAP_RENAMEAT_SOURCE            = 0x200000004000400\n\tCAP_RENAMEAT_TARGET            = 0x200040000000400\n\tCAP_RIGHTS_VERSION             = 0x0\n\tCAP_RIGHTS_VERSION_00          = 0x0\n\tCAP_SEEK                       = 0x20000000000000c\n\tCAP_SEEK_TELL                  = 0x200000000000004\n\tCAP_SEM_GETVALUE               = 0x400000000000004\n\tCAP_SEM_POST                   = 0x400000000000008\n\tCAP_SEM_WAIT                   = 0x400000000000010\n\tCAP_SEND                       = 0x200000000000002\n\tCAP_SETSOCKOPT                 = 0x200002000000000\n\tCAP_SHUTDOWN                   = 0x200004000000000\n\tCAP_SOCK_CLIENT                = 0x200007780000003\n\tCAP_SOCK_SERVER                = 0x200007f60000003\n\tCAP_SYMLINKAT                  = 0x200000008000400\n\tCAP_TTYHOOK                    = 0x400000000000100\n\tCAP_UNLINKAT                   = 0x200000010000400\n\tCAP_UNUSED0_44                 = 0x200080000000000\n\tCAP_UNUSED0_57                 = 0x300000000000000\n\tCAP_UNUSED1_22                 = 0x400000000200000\n\tCAP_UNUSED1_57                 = 0x500000000000000\n\tCAP_WRITE                      = 0x200000000000002\n\tCFLUSH                         = 0xf\n\tCLOCAL                         = 0x8000\n\tCLOCK_MONOTONIC                = 0x4\n\tCLOCK_MONOTONIC_FAST           = 0xc\n\tCLOCK_MONOTONIC_PRECISE        = 0xb\n\tCLOCK_PROCESS_CPUTIME_ID       = 0xf\n\tCLOCK_PROF                     = 0x2\n\tCLOCK_REALTIME                 = 0x0\n\tCLOCK_REALTIME_FAST            = 0xa\n\tCLOCK_REALTIME_PRECISE         = 0x9\n\tCLOCK_SECOND                   = 0xd\n\tCLOCK_THREAD_CPUTIME_ID        = 0xe\n\tCLOCK_UPTIME                   = 0x5\n\tCLOCK_UPTIME_FAST              = 0x8\n\tCLOCK_UPTIME_PRECISE           = 0x7\n\tCLOCK_VIRTUAL                  = 0x1\n\tCPUSTATES                      = 0x5\n\tCP_IDLE                        = 0x4\n\tCP_INTR                        = 0x3\n\tCP_NICE                        = 0x1\n\tCP_SYS                         = 0x2\n\tCP_USER                        = 0x0\n\tCREAD                          = 0x800\n\tCRTSCTS                        = 0x30000\n\tCS5                            = 0x0\n\tCS6                            = 0x100\n\tCS7                            = 0x200\n\tCS8                            = 0x300\n\tCSIZE                          = 0x300\n\tCSTART                         = 0x11\n\tCSTATUS                        = 0x14\n\tCSTOP                          = 0x13\n\tCSTOPB                         = 0x400\n\tCSUSP                          = 0x1a\n\tCTL_HW                         = 0x6\n\tCTL_KERN                       = 0x1\n\tCTL_MAXNAME                    = 0x18\n\tCTL_NET                        = 0x4\n\tDIOCGATTR                      = 0xc144648e\n\tDIOCGDELETE                    = 0x80106488\n\tDIOCGFLUSH                     = 0x20006487\n\tDIOCGFRONTSTUFF                = 0x40086486\n\tDIOCGFWHEADS                   = 0x40046483\n\tDIOCGFWSECTORS                 = 0x40046482\n\tDIOCGIDENT                     = 0x41006489\n\tDIOCGMEDIASIZE                 = 0x40086481\n\tDIOCGPHYSPATH                  = 0x4400648d\n\tDIOCGPROVIDERNAME              = 0x4400648a\n\tDIOCGSECTORSIZE                = 0x40046480\n\tDIOCGSTRIPEOFFSET              = 0x4008648c\n\tDIOCGSTRIPESIZE                = 0x4008648b\n\tDIOCSKERNELDUMP                = 0x804c6490\n\tDIOCSKERNELDUMP_FREEBSD11      = 0x80046485\n\tDIOCZONECMD                    = 0xc06c648f\n\tDLT_A429                       = 0xb8\n\tDLT_A653_ICM                   = 0xb9\n\tDLT_AIRONET_HEADER             = 0x78\n\tDLT_AOS                        = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394     = 0x8a\n\tDLT_ARCNET                     = 0x7\n\tDLT_ARCNET_LINUX               = 0x81\n\tDLT_ATM_CLIP                   = 0x13\n\tDLT_ATM_RFC1483                = 0xb\n\tDLT_AURORA                     = 0x7e\n\tDLT_AX25                       = 0x3\n\tDLT_AX25_KISS                  = 0xca\n\tDLT_BACNET_MS_TP               = 0xa5\n\tDLT_BLUETOOTH_BREDR_BB         = 0xff\n\tDLT_BLUETOOTH_HCI_H4           = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9\n\tDLT_BLUETOOTH_LE_LL            = 0xfb\n\tDLT_BLUETOOTH_LE_LL_WITH_PHDR  = 0x100\n\tDLT_BLUETOOTH_LINUX_MONITOR    = 0xfe\n\tDLT_CAN20B                     = 0xbe\n\tDLT_CAN_SOCKETCAN              = 0xe3\n\tDLT_CHAOS                      = 0x5\n\tDLT_CHDLC                      = 0x68\n\tDLT_CISCO_IOS                  = 0x76\n\tDLT_CLASS_NETBSD_RAWAF         = 0x2240000\n\tDLT_C_HDLC                     = 0x68\n\tDLT_C_HDLC_WITH_DIR            = 0xcd\n\tDLT_DBUS                       = 0xe7\n\tDLT_DECT                       = 0xdd\n\tDLT_DISPLAYPORT_AUX            = 0x113\n\tDLT_DOCSIS                     = 0x8f\n\tDLT_DOCSIS31_XRA31             = 0x111\n\tDLT_DVB_CI                     = 0xeb\n\tDLT_ECONET                     = 0x73\n\tDLT_EN10MB                     = 0x1\n\tDLT_EN3MB                      = 0x2\n\tDLT_ENC                        = 0x6d\n\tDLT_EPON                       = 0x103\n\tDLT_ERF                        = 0xc5\n\tDLT_ERF_ETH                    = 0xaf\n\tDLT_ERF_POS                    = 0xb0\n\tDLT_ETHERNET_MPACKET           = 0x112\n\tDLT_FC_2                       = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS     = 0xe1\n\tDLT_FDDI                       = 0xa\n\tDLT_FLEXRAY                    = 0xd2\n\tDLT_FRELAY                     = 0x6b\n\tDLT_FRELAY_WITH_DIR            = 0xce\n\tDLT_GCOM_SERIAL                = 0xad\n\tDLT_GCOM_T1E1                  = 0xac\n\tDLT_GPF_F                      = 0xab\n\tDLT_GPF_T                      = 0xaa\n\tDLT_GPRS_LLC                   = 0xa9\n\tDLT_GSMTAP_ABIS                = 0xda\n\tDLT_GSMTAP_UM                  = 0xd9\n\tDLT_IBM_SN                     = 0x92\n\tDLT_IBM_SP                     = 0x91\n\tDLT_IEEE802                    = 0x6\n\tDLT_IEEE802_11                 = 0x69\n\tDLT_IEEE802_11_RADIO           = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS       = 0xa3\n\tDLT_IEEE802_15_4               = 0xc3\n\tDLT_IEEE802_15_4_LINUX         = 0xbf\n\tDLT_IEEE802_15_4_NOFCS         = 0xe6\n\tDLT_IEEE802_15_4_NONASK_PHY    = 0xd7\n\tDLT_IEEE802_16_MAC_CPS         = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO   = 0xc1\n\tDLT_INFINIBAND                 = 0xf7\n\tDLT_IPFILTER                   = 0x74\n\tDLT_IPMB_KONTRON               = 0xc7\n\tDLT_IPMB_LINUX                 = 0xd1\n\tDLT_IPMI_HPM_2                 = 0x104\n\tDLT_IPNET                      = 0xe2\n\tDLT_IPOIB                      = 0xf2\n\tDLT_IPV4                       = 0xe4\n\tDLT_IPV6                       = 0xe5\n\tDLT_IP_OVER_FC                 = 0x7a\n\tDLT_ISO_14443                  = 0x108\n\tDLT_JUNIPER_ATM1               = 0x89\n\tDLT_JUNIPER_ATM2               = 0x87\n\tDLT_JUNIPER_ATM_CEMIC          = 0xee\n\tDLT_JUNIPER_CHDLC              = 0xb5\n\tDLT_JUNIPER_ES                 = 0x84\n\tDLT_JUNIPER_ETHER              = 0xb2\n\tDLT_JUNIPER_FIBRECHANNEL       = 0xea\n\tDLT_JUNIPER_FRELAY             = 0xb4\n\tDLT_JUNIPER_GGSN               = 0x85\n\tDLT_JUNIPER_ISM                = 0xc2\n\tDLT_JUNIPER_MFR                = 0x86\n\tDLT_JUNIPER_MLFR               = 0x83\n\tDLT_JUNIPER_MLPPP              = 0x82\n\tDLT_JUNIPER_MONITOR            = 0xa4\n\tDLT_JUNIPER_PIC_PEER           = 0xae\n\tDLT_JUNIPER_PPP                = 0xb3\n\tDLT_JUNIPER_PPPOE              = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM          = 0xa8\n\tDLT_JUNIPER_SERVICES           = 0x88\n\tDLT_JUNIPER_SRX_E2E            = 0xe9\n\tDLT_JUNIPER_ST                 = 0xc8\n\tDLT_JUNIPER_VP                 = 0xb7\n\tDLT_JUNIPER_VS                 = 0xe8\n\tDLT_LAPB_WITH_DIR              = 0xcf\n\tDLT_LAPD                       = 0xcb\n\tDLT_LIN                        = 0xd4\n\tDLT_LINUX_EVDEV                = 0xd8\n\tDLT_LINUX_IRDA                 = 0x90\n\tDLT_LINUX_LAPD                 = 0xb1\n\tDLT_LINUX_PPP_WITHDIRECTION    = 0xa6\n\tDLT_LINUX_SLL                  = 0x71\n\tDLT_LINUX_SLL2                 = 0x114\n\tDLT_LOOP                       = 0x6c\n\tDLT_LORATAP                    = 0x10e\n\tDLT_LTALK                      = 0x72\n\tDLT_MATCHING_MAX               = 0x114\n\tDLT_MATCHING_MIN               = 0x68\n\tDLT_MFR                        = 0xb6\n\tDLT_MOST                       = 0xd3\n\tDLT_MPEG_2_TS                  = 0xf3\n\tDLT_MPLS                       = 0xdb\n\tDLT_MTP2                       = 0x8c\n\tDLT_MTP2_WITH_PHDR             = 0x8b\n\tDLT_MTP3                       = 0x8d\n\tDLT_MUX27010                   = 0xec\n\tDLT_NETANALYZER                = 0xf0\n\tDLT_NETANALYZER_TRANSPARENT    = 0xf1\n\tDLT_NETLINK                    = 0xfd\n\tDLT_NFC_LLCP                   = 0xf5\n\tDLT_NFLOG                      = 0xef\n\tDLT_NG40                       = 0xf4\n\tDLT_NORDIC_BLE                 = 0x110\n\tDLT_NULL                       = 0x0\n\tDLT_OPENFLOW                   = 0x10b\n\tDLT_PCI_EXP                    = 0x7d\n\tDLT_PFLOG                      = 0x75\n\tDLT_PFSYNC                     = 0x79\n\tDLT_PKTAP                      = 0x102\n\tDLT_PPI                        = 0xc0\n\tDLT_PPP                        = 0x9\n\tDLT_PPP_BSDOS                  = 0xe\n\tDLT_PPP_ETHER                  = 0x33\n\tDLT_PPP_PPPD                   = 0xa6\n\tDLT_PPP_SERIAL                 = 0x32\n\tDLT_PPP_WITH_DIR               = 0xcc\n\tDLT_PPP_WITH_DIRECTION         = 0xa6\n\tDLT_PRISM_HEADER               = 0x77\n\tDLT_PROFIBUS_DL                = 0x101\n\tDLT_PRONET                     = 0x4\n\tDLT_RAIF1                      = 0xc6\n\tDLT_RAW                        = 0xc\n\tDLT_RDS                        = 0x109\n\tDLT_REDBACK_SMARTEDGE          = 0x20\n\tDLT_RIO                        = 0x7c\n\tDLT_RTAC_SERIAL                = 0xfa\n\tDLT_SCCP                       = 0x8e\n\tDLT_SCTP                       = 0xf8\n\tDLT_SDLC                       = 0x10c\n\tDLT_SITA                       = 0xc4\n\tDLT_SLIP                       = 0x8\n\tDLT_SLIP_BSDOS                 = 0xd\n\tDLT_STANAG_5066_D_PDU          = 0xed\n\tDLT_SUNATM                     = 0x7b\n\tDLT_SYMANTEC_FIREWALL          = 0x63\n\tDLT_TI_LLN_SNIFFER             = 0x10d\n\tDLT_TZSP                       = 0x80\n\tDLT_USB                        = 0xba\n\tDLT_USBPCAP                    = 0xf9\n\tDLT_USB_DARWIN                 = 0x10a\n\tDLT_USB_FREEBSD                = 0xba\n\tDLT_USB_LINUX                  = 0xbd\n\tDLT_USB_LINUX_MMAPPED          = 0xdc\n\tDLT_USER0                      = 0x93\n\tDLT_USER1                      = 0x94\n\tDLT_USER10                     = 0x9d\n\tDLT_USER11                     = 0x9e\n\tDLT_USER12                     = 0x9f\n\tDLT_USER13                     = 0xa0\n\tDLT_USER14                     = 0xa1\n\tDLT_USER15                     = 0xa2\n\tDLT_USER2                      = 0x95\n\tDLT_USER3                      = 0x96\n\tDLT_USER4                      = 0x97\n\tDLT_USER5                      = 0x98\n\tDLT_USER6                      = 0x99\n\tDLT_USER7                      = 0x9a\n\tDLT_USER8                      = 0x9b\n\tDLT_USER9                      = 0x9c\n\tDLT_VSOCK                      = 0x10f\n\tDLT_WATTSTOPPER_DLM            = 0x107\n\tDLT_WIHART                     = 0xdf\n\tDLT_WIRESHARK_UPPER_PDU        = 0xfc\n\tDLT_X2E_SERIAL                 = 0xd5\n\tDLT_X2E_XORAYA                 = 0xd6\n\tDLT_ZWAVE_R1_R2                = 0x105\n\tDLT_ZWAVE_R3                   = 0x106\n\tDT_BLK                         = 0x6\n\tDT_CHR                         = 0x2\n\tDT_DIR                         = 0x4\n\tDT_FIFO                        = 0x1\n\tDT_LNK                         = 0xa\n\tDT_REG                         = 0x8\n\tDT_SOCK                        = 0xc\n\tDT_UNKNOWN                     = 0x0\n\tDT_WHT                         = 0xe\n\tECHO                           = 0x8\n\tECHOCTL                        = 0x40\n\tECHOE                          = 0x2\n\tECHOK                          = 0x4\n\tECHOKE                         = 0x1\n\tECHONL                         = 0x10\n\tECHOPRT                        = 0x20\n\tEVFILT_AIO                     = -0x3\n\tEVFILT_EMPTY                   = -0xd\n\tEVFILT_FS                      = -0x9\n\tEVFILT_LIO                     = -0xa\n\tEVFILT_PROC                    = -0x5\n\tEVFILT_PROCDESC                = -0x8\n\tEVFILT_READ                    = -0x1\n\tEVFILT_SENDFILE                = -0xc\n\tEVFILT_SIGNAL                  = -0x6\n\tEVFILT_SYSCOUNT                = 0xd\n\tEVFILT_TIMER                   = -0x7\n\tEVFILT_USER                    = -0xb\n\tEVFILT_VNODE                   = -0x4\n\tEVFILT_WRITE                   = -0x2\n\tEVNAMEMAP_NAME_SIZE            = 0x40\n\tEV_ADD                         = 0x1\n\tEV_CLEAR                       = 0x20\n\tEV_DELETE                      = 0x2\n\tEV_DISABLE                     = 0x8\n\tEV_DISPATCH                    = 0x80\n\tEV_DROP                        = 0x1000\n\tEV_ENABLE                      = 0x4\n\tEV_EOF                         = 0x8000\n\tEV_ERROR                       = 0x4000\n\tEV_FLAG1                       = 0x2000\n\tEV_FLAG2                       = 0x4000\n\tEV_FORCEONESHOT                = 0x100\n\tEV_ONESHOT                     = 0x10\n\tEV_RECEIPT                     = 0x40\n\tEV_SYSFLAGS                    = 0xf000\n\tEXTA                           = 0x4b00\n\tEXTATTR_MAXNAMELEN             = 0xff\n\tEXTATTR_NAMESPACE_EMPTY        = 0x0\n\tEXTATTR_NAMESPACE_SYSTEM       = 0x2\n\tEXTATTR_NAMESPACE_USER         = 0x1\n\tEXTB                           = 0x9600\n\tEXTPROC                        = 0x800\n\tFD_CLOEXEC                     = 0x1\n\tFD_SETSIZE                     = 0x400\n\tFLUSHO                         = 0x800000\n\tF_CANCEL                       = 0x5\n\tF_DUP2FD                       = 0xa\n\tF_DUP2FD_CLOEXEC               = 0x12\n\tF_DUPFD                        = 0x0\n\tF_DUPFD_CLOEXEC                = 0x11\n\tF_GETFD                        = 0x1\n\tF_GETFL                        = 0x3\n\tF_GETLK                        = 0xb\n\tF_GETOWN                       = 0x5\n\tF_OGETLK                       = 0x7\n\tF_OK                           = 0x0\n\tF_OSETLK                       = 0x8\n\tF_OSETLKW                      = 0x9\n\tF_RDAHEAD                      = 0x10\n\tF_RDLCK                        = 0x1\n\tF_READAHEAD                    = 0xf\n\tF_SETFD                        = 0x2\n\tF_SETFL                        = 0x4\n\tF_SETLK                        = 0xc\n\tF_SETLKW                       = 0xd\n\tF_SETLK_REMOTE                 = 0xe\n\tF_SETOWN                       = 0x6\n\tF_UNLCK                        = 0x2\n\tF_UNLCKSYS                     = 0x4\n\tF_WRLCK                        = 0x3\n\tHUPCL                          = 0x4000\n\tHW_MACHINE                     = 0x1\n\tICANON                         = 0x100\n\tICMP6_FILTER                   = 0x12\n\tICRNL                          = 0x100\n\tIEXTEN                         = 0x400\n\tIFAN_ARRIVAL                   = 0x0\n\tIFAN_DEPARTURE                 = 0x1\n\tIFCAP_WOL_MAGIC                = 0x2000\n\tIFF_ALLMULTI                   = 0x200\n\tIFF_ALTPHYS                    = 0x4000\n\tIFF_BROADCAST                  = 0x2\n\tIFF_CANTCHANGE                 = 0x218f52\n\tIFF_CANTCONFIG                 = 0x10000\n\tIFF_DEBUG                      = 0x4\n\tIFF_DRV_OACTIVE                = 0x400\n\tIFF_DRV_RUNNING                = 0x40\n\tIFF_DYING                      = 0x200000\n\tIFF_LINK0                      = 0x1000\n\tIFF_LINK1                      = 0x2000\n\tIFF_LINK2                      = 0x4000\n\tIFF_LOOPBACK                   = 0x8\n\tIFF_MONITOR                    = 0x40000\n\tIFF_MULTICAST                  = 0x8000\n\tIFF_NOARP                      = 0x80\n\tIFF_NOGROUP                    = 0x800000\n\tIFF_OACTIVE                    = 0x400\n\tIFF_POINTOPOINT                = 0x10\n\tIFF_PPROMISC                   = 0x20000\n\tIFF_PROMISC                    = 0x100\n\tIFF_RENAMING                   = 0x400000\n\tIFF_RUNNING                    = 0x40\n\tIFF_SIMPLEX                    = 0x800\n\tIFF_STATICARP                  = 0x80000\n\tIFF_UP                         = 0x1\n\tIFNAMSIZ                       = 0x10\n\tIFT_BRIDGE                     = 0xd1\n\tIFT_CARP                       = 0xf8\n\tIFT_IEEE1394                   = 0x90\n\tIFT_INFINIBAND                 = 0xc7\n\tIFT_L2VLAN                     = 0x87\n\tIFT_L3IPVLAN                   = 0x88\n\tIFT_PPP                        = 0x17\n\tIFT_PROPVIRTUAL                = 0x35\n\tIGNBRK                         = 0x1\n\tIGNCR                          = 0x80\n\tIGNPAR                         = 0x4\n\tIMAXBEL                        = 0x2000\n\tINLCR                          = 0x40\n\tINPCK                          = 0x10\n\tIN_CLASSA_HOST                 = 0xffffff\n\tIN_CLASSA_MAX                  = 0x80\n\tIN_CLASSA_NET                  = 0xff000000\n\tIN_CLASSA_NSHIFT               = 0x18\n\tIN_CLASSB_HOST                 = 0xffff\n\tIN_CLASSB_MAX                  = 0x10000\n\tIN_CLASSB_NET                  = 0xffff0000\n\tIN_CLASSB_NSHIFT               = 0x10\n\tIN_CLASSC_HOST                 = 0xff\n\tIN_CLASSC_NET                  = 0xffffff00\n\tIN_CLASSC_NSHIFT               = 0x8\n\tIN_CLASSD_HOST                 = 0xfffffff\n\tIN_CLASSD_NET                  = 0xf0000000\n\tIN_CLASSD_NSHIFT               = 0x1c\n\tIN_LOOPBACKNET                 = 0x7f\n\tIN_RFC3021_MASK                = 0xfffffffe\n\tIPPROTO_3PC                    = 0x22\n\tIPPROTO_ADFS                   = 0x44\n\tIPPROTO_AH                     = 0x33\n\tIPPROTO_AHIP                   = 0x3d\n\tIPPROTO_APES                   = 0x63\n\tIPPROTO_ARGUS                  = 0xd\n\tIPPROTO_AX25                   = 0x5d\n\tIPPROTO_BHA                    = 0x31\n\tIPPROTO_BLT                    = 0x1e\n\tIPPROTO_BRSATMON               = 0x4c\n\tIPPROTO_CARP                   = 0x70\n\tIPPROTO_CFTP                   = 0x3e\n\tIPPROTO_CHAOS                  = 0x10\n\tIPPROTO_CMTP                   = 0x26\n\tIPPROTO_CPHB                   = 0x49\n\tIPPROTO_CPNX                   = 0x48\n\tIPPROTO_DCCP                   = 0x21\n\tIPPROTO_DDP                    = 0x25\n\tIPPROTO_DGP                    = 0x56\n\tIPPROTO_DIVERT                 = 0x102\n\tIPPROTO_DONE                   = 0x101\n\tIPPROTO_DSTOPTS                = 0x3c\n\tIPPROTO_EGP                    = 0x8\n\tIPPROTO_EMCON                  = 0xe\n\tIPPROTO_ENCAP                  = 0x62\n\tIPPROTO_EON                    = 0x50\n\tIPPROTO_ESP                    = 0x32\n\tIPPROTO_ETHERIP                = 0x61\n\tIPPROTO_FRAGMENT               = 0x2c\n\tIPPROTO_GGP                    = 0x3\n\tIPPROTO_GMTP                   = 0x64\n\tIPPROTO_GRE                    = 0x2f\n\tIPPROTO_HELLO                  = 0x3f\n\tIPPROTO_HIP                    = 0x8b\n\tIPPROTO_HMP                    = 0x14\n\tIPPROTO_HOPOPTS                = 0x0\n\tIPPROTO_ICMP                   = 0x1\n\tIPPROTO_ICMPV6                 = 0x3a\n\tIPPROTO_IDP                    = 0x16\n\tIPPROTO_IDPR                   = 0x23\n\tIPPROTO_IDRP                   = 0x2d\n\tIPPROTO_IGMP                   = 0x2\n\tIPPROTO_IGP                    = 0x55\n\tIPPROTO_IGRP                   = 0x58\n\tIPPROTO_IL                     = 0x28\n\tIPPROTO_INLSP                  = 0x34\n\tIPPROTO_INP                    = 0x20\n\tIPPROTO_IP                     = 0x0\n\tIPPROTO_IPCOMP                 = 0x6c\n\tIPPROTO_IPCV                   = 0x47\n\tIPPROTO_IPEIP                  = 0x5e\n\tIPPROTO_IPIP                   = 0x4\n\tIPPROTO_IPPC                   = 0x43\n\tIPPROTO_IPV4                   = 0x4\n\tIPPROTO_IPV6                   = 0x29\n\tIPPROTO_IRTP                   = 0x1c\n\tIPPROTO_KRYPTOLAN              = 0x41\n\tIPPROTO_LARP                   = 0x5b\n\tIPPROTO_LEAF1                  = 0x19\n\tIPPROTO_LEAF2                  = 0x1a\n\tIPPROTO_MAX                    = 0x100\n\tIPPROTO_MEAS                   = 0x13\n\tIPPROTO_MH                     = 0x87\n\tIPPROTO_MHRP                   = 0x30\n\tIPPROTO_MICP                   = 0x5f\n\tIPPROTO_MOBILE                 = 0x37\n\tIPPROTO_MPLS                   = 0x89\n\tIPPROTO_MTP                    = 0x5c\n\tIPPROTO_MUX                    = 0x12\n\tIPPROTO_ND                     = 0x4d\n\tIPPROTO_NHRP                   = 0x36\n\tIPPROTO_NONE                   = 0x3b\n\tIPPROTO_NSP                    = 0x1f\n\tIPPROTO_NVPII                  = 0xb\n\tIPPROTO_OLD_DIVERT             = 0xfe\n\tIPPROTO_OSPFIGP                = 0x59\n\tIPPROTO_PFSYNC                 = 0xf0\n\tIPPROTO_PGM                    = 0x71\n\tIPPROTO_PIGP                   = 0x9\n\tIPPROTO_PIM                    = 0x67\n\tIPPROTO_PRM                    = 0x15\n\tIPPROTO_PUP                    = 0xc\n\tIPPROTO_PVP                    = 0x4b\n\tIPPROTO_RAW                    = 0xff\n\tIPPROTO_RCCMON                 = 0xa\n\tIPPROTO_RDP                    = 0x1b\n\tIPPROTO_RESERVED_253           = 0xfd\n\tIPPROTO_RESERVED_254           = 0xfe\n\tIPPROTO_ROUTING                = 0x2b\n\tIPPROTO_RSVP                   = 0x2e\n\tIPPROTO_RVD                    = 0x42\n\tIPPROTO_SATEXPAK               = 0x40\n\tIPPROTO_SATMON                 = 0x45\n\tIPPROTO_SCCSP                  = 0x60\n\tIPPROTO_SCTP                   = 0x84\n\tIPPROTO_SDRP                   = 0x2a\n\tIPPROTO_SEND                   = 0x103\n\tIPPROTO_SHIM6                  = 0x8c\n\tIPPROTO_SKIP                   = 0x39\n\tIPPROTO_SPACER                 = 0x7fff\n\tIPPROTO_SRPC                   = 0x5a\n\tIPPROTO_ST                     = 0x7\n\tIPPROTO_SVMTP                  = 0x52\n\tIPPROTO_SWIPE                  = 0x35\n\tIPPROTO_TCF                    = 0x57\n\tIPPROTO_TCP                    = 0x6\n\tIPPROTO_TLSP                   = 0x38\n\tIPPROTO_TP                     = 0x1d\n\tIPPROTO_TPXX                   = 0x27\n\tIPPROTO_TRUNK1                 = 0x17\n\tIPPROTO_TRUNK2                 = 0x18\n\tIPPROTO_TTP                    = 0x54\n\tIPPROTO_UDP                    = 0x11\n\tIPPROTO_UDPLITE                = 0x88\n\tIPPROTO_VINES                  = 0x53\n\tIPPROTO_VISA                   = 0x46\n\tIPPROTO_VMTP                   = 0x51\n\tIPPROTO_WBEXPAK                = 0x4f\n\tIPPROTO_WBMON                  = 0x4e\n\tIPPROTO_WSN                    = 0x4a\n\tIPPROTO_XNET                   = 0xf\n\tIPPROTO_XTP                    = 0x24\n\tIPV6_AUTOFLOWLABEL             = 0x3b\n\tIPV6_BINDANY                   = 0x40\n\tIPV6_BINDMULTI                 = 0x41\n\tIPV6_BINDV6ONLY                = 0x1b\n\tIPV6_CHECKSUM                  = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS    = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP    = 0x1\n\tIPV6_DEFHLIM                   = 0x40\n\tIPV6_DONTFRAG                  = 0x3e\n\tIPV6_DSTOPTS                   = 0x32\n\tIPV6_FLOWID                    = 0x43\n\tIPV6_FLOWINFO_MASK             = 0xffffff0f\n\tIPV6_FLOWLABEL_LEN             = 0x14\n\tIPV6_FLOWLABEL_MASK            = 0xffff0f00\n\tIPV6_FLOWTYPE                  = 0x44\n\tIPV6_FRAGTTL                   = 0x78\n\tIPV6_FW_ADD                    = 0x1e\n\tIPV6_FW_DEL                    = 0x1f\n\tIPV6_FW_FLUSH                  = 0x20\n\tIPV6_FW_GET                    = 0x22\n\tIPV6_FW_ZERO                   = 0x21\n\tIPV6_HLIMDEC                   = 0x1\n\tIPV6_HOPLIMIT                  = 0x2f\n\tIPV6_HOPOPTS                   = 0x31\n\tIPV6_IPSEC_POLICY              = 0x1c\n\tIPV6_JOIN_GROUP                = 0xc\n\tIPV6_LEAVE_GROUP               = 0xd\n\tIPV6_MAXHLIM                   = 0xff\n\tIPV6_MAXOPTHDR                 = 0x800\n\tIPV6_MAXPACKET                 = 0xffff\n\tIPV6_MAX_GROUP_SRC_FILTER      = 0x200\n\tIPV6_MAX_MEMBERSHIPS           = 0xfff\n\tIPV6_MAX_SOCK_SRC_FILTER       = 0x80\n\tIPV6_MMTU                      = 0x500\n\tIPV6_MSFILTER                  = 0x4a\n\tIPV6_MULTICAST_HOPS            = 0xa\n\tIPV6_MULTICAST_IF              = 0x9\n\tIPV6_MULTICAST_LOOP            = 0xb\n\tIPV6_NEXTHOP                   = 0x30\n\tIPV6_ORIGDSTADDR               = 0x48\n\tIPV6_PATHMTU                   = 0x2c\n\tIPV6_PKTINFO                   = 0x2e\n\tIPV6_PORTRANGE                 = 0xe\n\tIPV6_PORTRANGE_DEFAULT         = 0x0\n\tIPV6_PORTRANGE_HIGH            = 0x1\n\tIPV6_PORTRANGE_LOW             = 0x2\n\tIPV6_PREFER_TEMPADDR           = 0x3f\n\tIPV6_RECVDSTOPTS               = 0x28\n\tIPV6_RECVFLOWID                = 0x46\n\tIPV6_RECVHOPLIMIT              = 0x25\n\tIPV6_RECVHOPOPTS               = 0x27\n\tIPV6_RECVORIGDSTADDR           = 0x48\n\tIPV6_RECVPATHMTU               = 0x2b\n\tIPV6_RECVPKTINFO               = 0x24\n\tIPV6_RECVRSSBUCKETID           = 0x47\n\tIPV6_RECVRTHDR                 = 0x26\n\tIPV6_RECVTCLASS                = 0x39\n\tIPV6_RSSBUCKETID               = 0x45\n\tIPV6_RSS_LISTEN_BUCKET         = 0x42\n\tIPV6_RTHDR                     = 0x33\n\tIPV6_RTHDRDSTOPTS              = 0x23\n\tIPV6_RTHDR_LOOSE               = 0x0\n\tIPV6_RTHDR_STRICT              = 0x1\n\tIPV6_RTHDR_TYPE_0              = 0x0\n\tIPV6_SOCKOPT_RESERVED1         = 0x3\n\tIPV6_TCLASS                    = 0x3d\n\tIPV6_UNICAST_HOPS              = 0x4\n\tIPV6_USE_MIN_MTU               = 0x2a\n\tIPV6_V6ONLY                    = 0x1b\n\tIPV6_VERSION                   = 0x60\n\tIPV6_VERSION_MASK              = 0xf0\n\tIPV6_VLAN_PCP                  = 0x4b\n\tIP_ADD_MEMBERSHIP              = 0xc\n\tIP_ADD_SOURCE_MEMBERSHIP       = 0x46\n\tIP_BINDANY                     = 0x18\n\tIP_BINDMULTI                   = 0x19\n\tIP_BLOCK_SOURCE                = 0x48\n\tIP_DEFAULT_MULTICAST_LOOP      = 0x1\n\tIP_DEFAULT_MULTICAST_TTL       = 0x1\n\tIP_DF                          = 0x4000\n\tIP_DONTFRAG                    = 0x43\n\tIP_DROP_MEMBERSHIP             = 0xd\n\tIP_DROP_SOURCE_MEMBERSHIP      = 0x47\n\tIP_DUMMYNET3                   = 0x31\n\tIP_DUMMYNET_CONFIGURE          = 0x3c\n\tIP_DUMMYNET_DEL                = 0x3d\n\tIP_DUMMYNET_FLUSH              = 0x3e\n\tIP_DUMMYNET_GET                = 0x40\n\tIP_FLOWID                      = 0x5a\n\tIP_FLOWTYPE                    = 0x5b\n\tIP_FW3                         = 0x30\n\tIP_FW_ADD                      = 0x32\n\tIP_FW_DEL                      = 0x33\n\tIP_FW_FLUSH                    = 0x34\n\tIP_FW_GET                      = 0x36\n\tIP_FW_NAT_CFG                  = 0x38\n\tIP_FW_NAT_DEL                  = 0x39\n\tIP_FW_NAT_GET_CONFIG           = 0x3a\n\tIP_FW_NAT_GET_LOG              = 0x3b\n\tIP_FW_RESETLOG                 = 0x37\n\tIP_FW_TABLE_ADD                = 0x28\n\tIP_FW_TABLE_DEL                = 0x29\n\tIP_FW_TABLE_FLUSH              = 0x2a\n\tIP_FW_TABLE_GETSIZE            = 0x2b\n\tIP_FW_TABLE_LIST               = 0x2c\n\tIP_FW_ZERO                     = 0x35\n\tIP_HDRINCL                     = 0x2\n\tIP_IPSEC_POLICY                = 0x15\n\tIP_MAXPACKET                   = 0xffff\n\tIP_MAX_GROUP_SRC_FILTER        = 0x200\n\tIP_MAX_MEMBERSHIPS             = 0xfff\n\tIP_MAX_SOCK_MUTE_FILTER        = 0x80\n\tIP_MAX_SOCK_SRC_FILTER         = 0x80\n\tIP_MF                          = 0x2000\n\tIP_MINTTL                      = 0x42\n\tIP_MSFILTER                    = 0x4a\n\tIP_MSS                         = 0x240\n\tIP_MULTICAST_IF                = 0x9\n\tIP_MULTICAST_LOOP              = 0xb\n\tIP_MULTICAST_TTL               = 0xa\n\tIP_MULTICAST_VIF               = 0xe\n\tIP_OFFMASK                     = 0x1fff\n\tIP_ONESBCAST                   = 0x17\n\tIP_OPTIONS                     = 0x1\n\tIP_ORIGDSTADDR                 = 0x1b\n\tIP_PORTRANGE                   = 0x13\n\tIP_PORTRANGE_DEFAULT           = 0x0\n\tIP_PORTRANGE_HIGH              = 0x1\n\tIP_PORTRANGE_LOW               = 0x2\n\tIP_RECVDSTADDR                 = 0x7\n\tIP_RECVFLOWID                  = 0x5d\n\tIP_RECVIF                      = 0x14\n\tIP_RECVOPTS                    = 0x5\n\tIP_RECVORIGDSTADDR             = 0x1b\n\tIP_RECVRETOPTS                 = 0x6\n\tIP_RECVRSSBUCKETID             = 0x5e\n\tIP_RECVTOS                     = 0x44\n\tIP_RECVTTL                     = 0x41\n\tIP_RETOPTS                     = 0x8\n\tIP_RF                          = 0x8000\n\tIP_RSSBUCKETID                 = 0x5c\n\tIP_RSS_LISTEN_BUCKET           = 0x1a\n\tIP_RSVP_OFF                    = 0x10\n\tIP_RSVP_ON                     = 0xf\n\tIP_RSVP_VIF_OFF                = 0x12\n\tIP_RSVP_VIF_ON                 = 0x11\n\tIP_SENDSRCADDR                 = 0x7\n\tIP_TOS                         = 0x3\n\tIP_TTL                         = 0x4\n\tIP_UNBLOCK_SOURCE              = 0x49\n\tIP_VLAN_PCP                    = 0x4b\n\tISIG                           = 0x80\n\tISTRIP                         = 0x20\n\tITIMER_PROF                    = 0x2\n\tITIMER_REAL                    = 0x0\n\tITIMER_VIRTUAL                 = 0x1\n\tIXANY                          = 0x800\n\tIXOFF                          = 0x400\n\tIXON                           = 0x200\n\tKERN_HOSTNAME                  = 0xa\n\tKERN_OSRELEASE                 = 0x2\n\tKERN_OSTYPE                    = 0x1\n\tKERN_VERSION                   = 0x4\n\tLOCAL_CONNWAIT                 = 0x4\n\tLOCAL_CREDS                    = 0x2\n\tLOCAL_PEERCRED                 = 0x1\n\tLOCAL_VENDOR                   = 0x80000000\n\tLOCK_EX                        = 0x2\n\tLOCK_NB                        = 0x4\n\tLOCK_SH                        = 0x1\n\tLOCK_UN                        = 0x8\n\tMADV_AUTOSYNC                  = 0x7\n\tMADV_CORE                      = 0x9\n\tMADV_DONTNEED                  = 0x4\n\tMADV_FREE                      = 0x5\n\tMADV_NOCORE                    = 0x8\n\tMADV_NORMAL                    = 0x0\n\tMADV_NOSYNC                    = 0x6\n\tMADV_PROTECT                   = 0xa\n\tMADV_RANDOM                    = 0x1\n\tMADV_SEQUENTIAL                = 0x2\n\tMADV_WILLNEED                  = 0x3\n\tMAP_ALIGNED_SUPER              = 0x1000000\n\tMAP_ALIGNMENT_MASK             = -0x1000000\n\tMAP_ALIGNMENT_SHIFT            = 0x18\n\tMAP_ANON                       = 0x1000\n\tMAP_ANONYMOUS                  = 0x1000\n\tMAP_COPY                       = 0x2\n\tMAP_EXCL                       = 0x4000\n\tMAP_FILE                       = 0x0\n\tMAP_FIXED                      = 0x10\n\tMAP_GUARD                      = 0x2000\n\tMAP_HASSEMAPHORE               = 0x200\n\tMAP_NOCORE                     = 0x20000\n\tMAP_NOSYNC                     = 0x800\n\tMAP_PREFAULT_READ              = 0x40000\n\tMAP_PRIVATE                    = 0x2\n\tMAP_RESERVED0020               = 0x20\n\tMAP_RESERVED0040               = 0x40\n\tMAP_RESERVED0080               = 0x80\n\tMAP_RESERVED0100               = 0x100\n\tMAP_SHARED                     = 0x1\n\tMAP_STACK                      = 0x400\n\tMCAST_BLOCK_SOURCE             = 0x54\n\tMCAST_EXCLUDE                  = 0x2\n\tMCAST_INCLUDE                  = 0x1\n\tMCAST_JOIN_GROUP               = 0x50\n\tMCAST_JOIN_SOURCE_GROUP        = 0x52\n\tMCAST_LEAVE_GROUP              = 0x51\n\tMCAST_LEAVE_SOURCE_GROUP       = 0x53\n\tMCAST_UNBLOCK_SOURCE           = 0x55\n\tMCAST_UNDEFINED                = 0x0\n\tMCL_CURRENT                    = 0x1\n\tMCL_FUTURE                     = 0x2\n\tMNT_ACLS                       = 0x8000000\n\tMNT_ASYNC                      = 0x40\n\tMNT_AUTOMOUNTED                = 0x200000000\n\tMNT_BYFSID                     = 0x8000000\n\tMNT_CMDFLAGS                   = 0xd0f0000\n\tMNT_DEFEXPORTED                = 0x200\n\tMNT_DELEXPORT                  = 0x20000\n\tMNT_EXKERB                     = 0x800\n\tMNT_EXPORTANON                 = 0x400\n\tMNT_EXPORTED                   = 0x100\n\tMNT_EXPUBLIC                   = 0x20000000\n\tMNT_EXRDONLY                   = 0x80\n\tMNT_FORCE                      = 0x80000\n\tMNT_GJOURNAL                   = 0x2000000\n\tMNT_IGNORE                     = 0x800000\n\tMNT_LAZY                       = 0x3\n\tMNT_LOCAL                      = 0x1000\n\tMNT_MULTILABEL                 = 0x4000000\n\tMNT_NFS4ACLS                   = 0x10\n\tMNT_NOATIME                    = 0x10000000\n\tMNT_NOCLUSTERR                 = 0x40000000\n\tMNT_NOCLUSTERW                 = 0x80000000\n\tMNT_NOEXEC                     = 0x4\n\tMNT_NONBUSY                    = 0x4000000\n\tMNT_NOSUID                     = 0x8\n\tMNT_NOSYMFOLLOW                = 0x400000\n\tMNT_NOWAIT                     = 0x2\n\tMNT_QUOTA                      = 0x2000\n\tMNT_RDONLY                     = 0x1\n\tMNT_RELOAD                     = 0x40000\n\tMNT_ROOTFS                     = 0x4000\n\tMNT_SNAPSHOT                   = 0x1000000\n\tMNT_SOFTDEP                    = 0x200000\n\tMNT_SUIDDIR                    = 0x100000\n\tMNT_SUJ                        = 0x100000000\n\tMNT_SUSPEND                    = 0x4\n\tMNT_SYNCHRONOUS                = 0x2\n\tMNT_UNION                      = 0x20\n\tMNT_UNTRUSTED                  = 0x800000000\n\tMNT_UPDATE                     = 0x10000\n\tMNT_UPDATEMASK                 = 0xad8d0807e\n\tMNT_USER                       = 0x8000\n\tMNT_VERIFIED                   = 0x400000000\n\tMNT_VISFLAGMASK                = 0xffef0ffff\n\tMNT_WAIT                       = 0x1\n\tMSG_CMSG_CLOEXEC               = 0x40000\n\tMSG_COMPAT                     = 0x8000\n\tMSG_CTRUNC                     = 0x20\n\tMSG_DONTROUTE                  = 0x4\n\tMSG_DONTWAIT                   = 0x80\n\tMSG_EOF                        = 0x100\n\tMSG_EOR                        = 0x8\n\tMSG_NBIO                       = 0x4000\n\tMSG_NOSIGNAL                   = 0x20000\n\tMSG_NOTIFICATION               = 0x2000\n\tMSG_OOB                        = 0x1\n\tMSG_PEEK                       = 0x2\n\tMSG_TRUNC                      = 0x10\n\tMSG_WAITALL                    = 0x40\n\tMSG_WAITFORONE                 = 0x80000\n\tMS_ASYNC                       = 0x1\n\tMS_INVALIDATE                  = 0x2\n\tMS_SYNC                        = 0x0\n\tNAME_MAX                       = 0xff\n\tNET_RT_DUMP                    = 0x1\n\tNET_RT_FLAGS                   = 0x2\n\tNET_RT_IFLIST                  = 0x3\n\tNET_RT_IFLISTL                 = 0x5\n\tNET_RT_IFMALIST                = 0x4\n\tNFDBITS                        = 0x20\n\tNOFLSH                         = 0x80000000\n\tNOKERNINFO                     = 0x2000000\n\tNOTE_ABSTIME                   = 0x10\n\tNOTE_ATTRIB                    = 0x8\n\tNOTE_CHILD                     = 0x4\n\tNOTE_CLOSE                     = 0x100\n\tNOTE_CLOSE_WRITE               = 0x200\n\tNOTE_DELETE                    = 0x1\n\tNOTE_EXEC                      = 0x20000000\n\tNOTE_EXIT                      = 0x80000000\n\tNOTE_EXTEND                    = 0x4\n\tNOTE_FFAND                     = 0x40000000\n\tNOTE_FFCOPY                    = 0xc0000000\n\tNOTE_FFCTRLMASK                = 0xc0000000\n\tNOTE_FFLAGSMASK                = 0xffffff\n\tNOTE_FFNOP                     = 0x0\n\tNOTE_FFOR                      = 0x80000000\n\tNOTE_FILE_POLL                 = 0x2\n\tNOTE_FORK                      = 0x40000000\n\tNOTE_LINK                      = 0x10\n\tNOTE_LOWAT                     = 0x1\n\tNOTE_MSECONDS                  = 0x2\n\tNOTE_NSECONDS                  = 0x8\n\tNOTE_OPEN                      = 0x80\n\tNOTE_PCTRLMASK                 = 0xf0000000\n\tNOTE_PDATAMASK                 = 0xfffff\n\tNOTE_READ                      = 0x400\n\tNOTE_RENAME                    = 0x20\n\tNOTE_REVOKE                    = 0x40\n\tNOTE_SECONDS                   = 0x1\n\tNOTE_TRACK                     = 0x1\n\tNOTE_TRACKERR                  = 0x2\n\tNOTE_TRIGGER                   = 0x1000000\n\tNOTE_USECONDS                  = 0x4\n\tNOTE_WRITE                     = 0x2\n\tOCRNL                          = 0x10\n\tONLCR                          = 0x2\n\tONLRET                         = 0x40\n\tONOCR                          = 0x20\n\tONOEOT                         = 0x8\n\tOPOST                          = 0x1\n\tOXTABS                         = 0x4\n\tO_ACCMODE                      = 0x3\n\tO_APPEND                       = 0x8\n\tO_ASYNC                        = 0x40\n\tO_CLOEXEC                      = 0x100000\n\tO_CREAT                        = 0x200\n\tO_DIRECT                       = 0x10000\n\tO_DIRECTORY                    = 0x20000\n\tO_EXCL                         = 0x800\n\tO_EXEC                         = 0x40000\n\tO_EXLOCK                       = 0x20\n\tO_FSYNC                        = 0x80\n\tO_NDELAY                       = 0x4\n\tO_NOCTTY                       = 0x8000\n\tO_NOFOLLOW                     = 0x100\n\tO_NONBLOCK                     = 0x4\n\tO_RDONLY                       = 0x0\n\tO_RDWR                         = 0x2\n\tO_RESOLVE_BENEATH              = 0x800000\n\tO_SEARCH                       = 0x40000\n\tO_SHLOCK                       = 0x10\n\tO_SYNC                         = 0x80\n\tO_TRUNC                        = 0x400\n\tO_TTY_INIT                     = 0x80000\n\tO_VERIFY                       = 0x200000\n\tO_WRONLY                       = 0x1\n\tPARENB                         = 0x1000\n\tPARMRK                         = 0x8\n\tPARODD                         = 0x2000\n\tPENDIN                         = 0x20000000\n\tPIOD_READ_D                    = 0x1\n\tPIOD_READ_I                    = 0x3\n\tPIOD_WRITE_D                   = 0x2\n\tPIOD_WRITE_I                   = 0x4\n\tPRIO_PGRP                      = 0x1\n\tPRIO_PROCESS                   = 0x0\n\tPRIO_USER                      = 0x2\n\tPROT_EXEC                      = 0x4\n\tPROT_NONE                      = 0x0\n\tPROT_READ                      = 0x1\n\tPROT_WRITE                     = 0x2\n\tPTRACE_DEFAULT                 = 0x1\n\tPTRACE_EXEC                    = 0x1\n\tPTRACE_FORK                    = 0x8\n\tPTRACE_LWP                     = 0x10\n\tPTRACE_SCE                     = 0x2\n\tPTRACE_SCX                     = 0x4\n\tPTRACE_SYSCALL                 = 0x6\n\tPTRACE_VFORK                   = 0x20\n\tPT_ATTACH                      = 0xa\n\tPT_CLEARSTEP                   = 0x10\n\tPT_CONTINUE                    = 0x7\n\tPT_DETACH                      = 0xb\n\tPT_FIRSTMACH                   = 0x40\n\tPT_FOLLOW_FORK                 = 0x17\n\tPT_GETDBREGS                   = 0x25\n\tPT_GETFPREGS                   = 0x23\n\tPT_GETFSBASE                   = 0x47\n\tPT_GETGSBASE                   = 0x49\n\tPT_GETLWPLIST                  = 0xf\n\tPT_GETNUMLWPS                  = 0xe\n\tPT_GETREGS                     = 0x21\n\tPT_GETXMMREGS                  = 0x40\n\tPT_GETXSTATE                   = 0x45\n\tPT_GETXSTATE_INFO              = 0x44\n\tPT_GET_EVENT_MASK              = 0x19\n\tPT_GET_SC_ARGS                 = 0x1b\n\tPT_GET_SC_RET                  = 0x1c\n\tPT_IO                          = 0xc\n\tPT_KILL                        = 0x8\n\tPT_LWPINFO                     = 0xd\n\tPT_LWP_EVENTS                  = 0x18\n\tPT_READ_D                      = 0x2\n\tPT_READ_I                      = 0x1\n\tPT_RESUME                      = 0x13\n\tPT_SETDBREGS                   = 0x26\n\tPT_SETFPREGS                   = 0x24\n\tPT_SETFSBASE                   = 0x48\n\tPT_SETGSBASE                   = 0x4a\n\tPT_SETREGS                     = 0x22\n\tPT_SETSTEP                     = 0x11\n\tPT_SETXMMREGS                  = 0x41\n\tPT_SETXSTATE                   = 0x46\n\tPT_SET_EVENT_MASK              = 0x1a\n\tPT_STEP                        = 0x9\n\tPT_SUSPEND                     = 0x12\n\tPT_SYSCALL                     = 0x16\n\tPT_TO_SCE                      = 0x14\n\tPT_TO_SCX                      = 0x15\n\tPT_TRACE_ME                    = 0x0\n\tPT_VM_ENTRY                    = 0x29\n\tPT_VM_TIMESTAMP                = 0x28\n\tPT_WRITE_D                     = 0x5\n\tPT_WRITE_I                     = 0x4\n\tP_ZONEID                       = 0xc\n\tRLIMIT_AS                      = 0xa\n\tRLIMIT_CORE                    = 0x4\n\tRLIMIT_CPU                     = 0x0\n\tRLIMIT_DATA                    = 0x2\n\tRLIMIT_FSIZE                   = 0x1\n\tRLIMIT_MEMLOCK                 = 0x6\n\tRLIMIT_NOFILE                  = 0x8\n\tRLIMIT_NPROC                   = 0x7\n\tRLIMIT_RSS                     = 0x5\n\tRLIMIT_STACK                   = 0x3\n\tRLIM_INFINITY                  = 0x7fffffffffffffff\n\tRTAX_AUTHOR                    = 0x6\n\tRTAX_BRD                       = 0x7\n\tRTAX_DST                       = 0x0\n\tRTAX_GATEWAY                   = 0x1\n\tRTAX_GENMASK                   = 0x3\n\tRTAX_IFA                       = 0x5\n\tRTAX_IFP                       = 0x4\n\tRTAX_MAX                       = 0x8\n\tRTAX_NETMASK                   = 0x2\n\tRTA_AUTHOR                     = 0x40\n\tRTA_BRD                        = 0x80\n\tRTA_DST                        = 0x1\n\tRTA_GATEWAY                    = 0x2\n\tRTA_GENMASK                    = 0x8\n\tRTA_IFA                        = 0x20\n\tRTA_IFP                        = 0x10\n\tRTA_NETMASK                    = 0x4\n\tRTF_BLACKHOLE                  = 0x1000\n\tRTF_BROADCAST                  = 0x400000\n\tRTF_DONE                       = 0x40\n\tRTF_DYNAMIC                    = 0x10\n\tRTF_FIXEDMTU                   = 0x80000\n\tRTF_FMASK                      = 0x1004d808\n\tRTF_GATEWAY                    = 0x2\n\tRTF_GWFLAG_COMPAT              = 0x80000000\n\tRTF_HOST                       = 0x4\n\tRTF_LLDATA                     = 0x400\n\tRTF_LLINFO                     = 0x400\n\tRTF_LOCAL                      = 0x200000\n\tRTF_MODIFIED                   = 0x20\n\tRTF_MULTICAST                  = 0x800000\n\tRTF_PINNED                     = 0x100000\n\tRTF_PROTO1                     = 0x8000\n\tRTF_PROTO2                     = 0x4000\n\tRTF_PROTO3                     = 0x40000\n\tRTF_REJECT                     = 0x8\n\tRTF_RNH_LOCKED                 = 0x40000000\n\tRTF_STATIC                     = 0x800\n\tRTF_STICKY                     = 0x10000000\n\tRTF_UP                         = 0x1\n\tRTF_XRESOLVE                   = 0x200\n\tRTM_ADD                        = 0x1\n\tRTM_CHANGE                     = 0x3\n\tRTM_DELADDR                    = 0xd\n\tRTM_DELETE                     = 0x2\n\tRTM_DELMADDR                   = 0x10\n\tRTM_GET                        = 0x4\n\tRTM_IEEE80211                  = 0x12\n\tRTM_IFANNOUNCE                 = 0x11\n\tRTM_IFINFO                     = 0xe\n\tRTM_LOCK                       = 0x8\n\tRTM_LOSING                     = 0x5\n\tRTM_MISS                       = 0x7\n\tRTM_NEWADDR                    = 0xc\n\tRTM_NEWMADDR                   = 0xf\n\tRTM_REDIRECT                   = 0x6\n\tRTM_RESOLVE                    = 0xb\n\tRTM_RTTUNIT                    = 0xf4240\n\tRTM_VERSION                    = 0x5\n\tRTV_EXPIRE                     = 0x4\n\tRTV_HOPCOUNT                   = 0x2\n\tRTV_MTU                        = 0x1\n\tRTV_RPIPE                      = 0x8\n\tRTV_RTT                        = 0x40\n\tRTV_RTTVAR                     = 0x80\n\tRTV_SPIPE                      = 0x10\n\tRTV_SSTHRESH                   = 0x20\n\tRTV_WEIGHT                     = 0x100\n\tRT_ALL_FIBS                    = -0x1\n\tRT_BLACKHOLE                   = 0x40\n\tRT_DEFAULT_FIB                 = 0x0\n\tRT_HAS_GW                      = 0x80\n\tRT_HAS_HEADER                  = 0x10\n\tRT_HAS_HEADER_BIT              = 0x4\n\tRT_L2_ME                       = 0x4\n\tRT_L2_ME_BIT                   = 0x2\n\tRT_LLE_CACHE                   = 0x100\n\tRT_MAY_LOOP                    = 0x8\n\tRT_MAY_LOOP_BIT                = 0x3\n\tRT_REJECT                      = 0x20\n\tRUSAGE_CHILDREN                = -0x1\n\tRUSAGE_SELF                    = 0x0\n\tRUSAGE_THREAD                  = 0x1\n\tSCM_BINTIME                    = 0x4\n\tSCM_CREDS                      = 0x3\n\tSCM_MONOTONIC                  = 0x6\n\tSCM_REALTIME                   = 0x5\n\tSCM_RIGHTS                     = 0x1\n\tSCM_TIMESTAMP                  = 0x2\n\tSCM_TIME_INFO                  = 0x7\n\tSEEK_CUR                       = 0x1\n\tSEEK_DATA                      = 0x3\n\tSEEK_END                       = 0x2\n\tSEEK_HOLE                      = 0x4\n\tSEEK_SET                       = 0x0\n\tSHUT_RD                        = 0x0\n\tSHUT_RDWR                      = 0x2\n\tSHUT_WR                        = 0x1\n\tSIOCADDMULTI                   = 0x80206931\n\tSIOCAIFADDR                    = 0x8040691a\n\tSIOCAIFGROUP                   = 0x80246987\n\tSIOCATMARK                     = 0x40047307\n\tSIOCDELMULTI                   = 0x80206932\n\tSIOCDIFADDR                    = 0x80206919\n\tSIOCDIFGROUP                   = 0x80246989\n\tSIOCDIFPHYADDR                 = 0x80206949\n\tSIOCGDRVSPEC                   = 0xc01c697b\n\tSIOCGETSGCNT                   = 0xc0147210\n\tSIOCGETVIFCNT                  = 0xc014720f\n\tSIOCGHIWAT                     = 0x40047301\n\tSIOCGHWADDR                    = 0xc020693e\n\tSIOCGI2C                       = 0xc020693d\n\tSIOCGIFADDR                    = 0xc0206921\n\tSIOCGIFALIAS                   = 0xc044692d\n\tSIOCGIFBRDADDR                 = 0xc0206923\n\tSIOCGIFCAP                     = 0xc020691f\n\tSIOCGIFCONF                    = 0xc0086924\n\tSIOCGIFDESCR                   = 0xc020692a\n\tSIOCGIFDOWNREASON              = 0xc058699a\n\tSIOCGIFDSTADDR                 = 0xc0206922\n\tSIOCGIFFIB                     = 0xc020695c\n\tSIOCGIFFLAGS                   = 0xc0206911\n\tSIOCGIFGENERIC                 = 0xc020693a\n\tSIOCGIFGMEMB                   = 0xc024698a\n\tSIOCGIFGROUP                   = 0xc0246988\n\tSIOCGIFINDEX                   = 0xc0206920\n\tSIOCGIFMAC                     = 0xc0206926\n\tSIOCGIFMEDIA                   = 0xc0286938\n\tSIOCGIFMETRIC                  = 0xc0206917\n\tSIOCGIFMTU                     = 0xc0206933\n\tSIOCGIFNETMASK                 = 0xc0206925\n\tSIOCGIFPDSTADDR                = 0xc0206948\n\tSIOCGIFPHYS                    = 0xc0206935\n\tSIOCGIFPSRCADDR                = 0xc0206947\n\tSIOCGIFRSSHASH                 = 0xc0186997\n\tSIOCGIFRSSKEY                  = 0xc0946996\n\tSIOCGIFSTATUS                  = 0xc331693b\n\tSIOCGIFXMEDIA                  = 0xc028698b\n\tSIOCGLANPCP                    = 0xc0206998\n\tSIOCGLOWAT                     = 0x40047303\n\tSIOCGPGRP                      = 0x40047309\n\tSIOCGPRIVATE_0                 = 0xc0206950\n\tSIOCGPRIVATE_1                 = 0xc0206951\n\tSIOCGTUNFIB                    = 0xc020695e\n\tSIOCIFCREATE                   = 0xc020697a\n\tSIOCIFCREATE2                  = 0xc020697c\n\tSIOCIFDESTROY                  = 0x80206979\n\tSIOCIFGCLONERS                 = 0xc00c6978\n\tSIOCSDRVSPEC                   = 0x801c697b\n\tSIOCSHIWAT                     = 0x80047300\n\tSIOCSIFADDR                    = 0x8020690c\n\tSIOCSIFBRDADDR                 = 0x80206913\n\tSIOCSIFCAP                     = 0x8020691e\n\tSIOCSIFDESCR                   = 0x80206929\n\tSIOCSIFDSTADDR                 = 0x8020690e\n\tSIOCSIFFIB                     = 0x8020695d\n\tSIOCSIFFLAGS                   = 0x80206910\n\tSIOCSIFGENERIC                 = 0x80206939\n\tSIOCSIFLLADDR                  = 0x8020693c\n\tSIOCSIFMAC                     = 0x80206927\n\tSIOCSIFMEDIA                   = 0xc0206937\n\tSIOCSIFMETRIC                  = 0x80206918\n\tSIOCSIFMTU                     = 0x80206934\n\tSIOCSIFNAME                    = 0x80206928\n\tSIOCSIFNETMASK                 = 0x80206916\n\tSIOCSIFPHYADDR                 = 0x80406946\n\tSIOCSIFPHYS                    = 0x80206936\n\tSIOCSIFRVNET                   = 0xc020695b\n\tSIOCSIFVNET                    = 0xc020695a\n\tSIOCSLANPCP                    = 0x80206999\n\tSIOCSLOWAT                     = 0x80047302\n\tSIOCSPGRP                      = 0x80047308\n\tSIOCSTUNFIB                    = 0x8020695f\n\tSOCK_CLOEXEC                   = 0x10000000\n\tSOCK_DGRAM                     = 0x2\n\tSOCK_MAXADDRLEN                = 0xff\n\tSOCK_NONBLOCK                  = 0x20000000\n\tSOCK_RAW                       = 0x3\n\tSOCK_RDM                       = 0x4\n\tSOCK_SEQPACKET                 = 0x5\n\tSOCK_STREAM                    = 0x1\n\tSOL_LOCAL                      = 0x0\n\tSOL_SOCKET                     = 0xffff\n\tSOMAXCONN                      = 0x80\n\tSO_ACCEPTCONN                  = 0x2\n\tSO_ACCEPTFILTER                = 0x1000\n\tSO_BINTIME                     = 0x2000\n\tSO_BROADCAST                   = 0x20\n\tSO_DEBUG                       = 0x1\n\tSO_DOMAIN                      = 0x1019\n\tSO_DONTROUTE                   = 0x10\n\tSO_ERROR                       = 0x1007\n\tSO_KEEPALIVE                   = 0x8\n\tSO_LABEL                       = 0x1009\n\tSO_LINGER                      = 0x80\n\tSO_LISTENINCQLEN               = 0x1013\n\tSO_LISTENQLEN                  = 0x1012\n\tSO_LISTENQLIMIT                = 0x1011\n\tSO_MAX_PACING_RATE             = 0x1018\n\tSO_NOSIGPIPE                   = 0x800\n\tSO_NO_DDP                      = 0x8000\n\tSO_NO_OFFLOAD                  = 0x4000\n\tSO_OOBINLINE                   = 0x100\n\tSO_PEERLABEL                   = 0x1010\n\tSO_PROTOCOL                    = 0x1016\n\tSO_PROTOTYPE                   = 0x1016\n\tSO_RCVBUF                      = 0x1002\n\tSO_RCVLOWAT                    = 0x1004\n\tSO_RCVTIMEO                    = 0x1006\n\tSO_RERROR                      = 0x20000\n\tSO_REUSEADDR                   = 0x4\n\tSO_REUSEPORT                   = 0x200\n\tSO_REUSEPORT_LB                = 0x10000\n\tSO_SETFIB                      = 0x1014\n\tSO_SNDBUF                      = 0x1001\n\tSO_SNDLOWAT                    = 0x1003\n\tSO_SNDTIMEO                    = 0x1005\n\tSO_TIMESTAMP                   = 0x400\n\tSO_TS_BINTIME                  = 0x1\n\tSO_TS_CLOCK                    = 0x1017\n\tSO_TS_CLOCK_MAX                = 0x3\n\tSO_TS_DEFAULT                  = 0x0\n\tSO_TS_MONOTONIC                = 0x3\n\tSO_TS_REALTIME                 = 0x2\n\tSO_TS_REALTIME_MICRO           = 0x0\n\tSO_TYPE                        = 0x1008\n\tSO_USELOOPBACK                 = 0x40\n\tSO_USER_COOKIE                 = 0x1015\n\tSO_VENDOR                      = 0x80000000\n\tS_BLKSIZE                      = 0x200\n\tS_IEXEC                        = 0x40\n\tS_IFBLK                        = 0x6000\n\tS_IFCHR                        = 0x2000\n\tS_IFDIR                        = 0x4000\n\tS_IFIFO                        = 0x1000\n\tS_IFLNK                        = 0xa000\n\tS_IFMT                         = 0xf000\n\tS_IFREG                        = 0x8000\n\tS_IFSOCK                       = 0xc000\n\tS_IFWHT                        = 0xe000\n\tS_IREAD                        = 0x100\n\tS_IRGRP                        = 0x20\n\tS_IROTH                        = 0x4\n\tS_IRUSR                        = 0x100\n\tS_IRWXG                        = 0x38\n\tS_IRWXO                        = 0x7\n\tS_IRWXU                        = 0x1c0\n\tS_ISGID                        = 0x400\n\tS_ISTXT                        = 0x200\n\tS_ISUID                        = 0x800\n\tS_ISVTX                        = 0x200\n\tS_IWGRP                        = 0x10\n\tS_IWOTH                        = 0x2\n\tS_IWRITE                       = 0x80\n\tS_IWUSR                        = 0x80\n\tS_IXGRP                        = 0x8\n\tS_IXOTH                        = 0x1\n\tS_IXUSR                        = 0x40\n\tTAB0                           = 0x0\n\tTAB3                           = 0x4\n\tTABDLY                         = 0x4\n\tTCIFLUSH                       = 0x1\n\tTCIOFF                         = 0x3\n\tTCIOFLUSH                      = 0x3\n\tTCION                          = 0x4\n\tTCOFLUSH                       = 0x2\n\tTCOOFF                         = 0x1\n\tTCOON                          = 0x2\n\tTCPOPT_EOL                     = 0x0\n\tTCPOPT_FAST_OPEN               = 0x22\n\tTCPOPT_MAXSEG                  = 0x2\n\tTCPOPT_NOP                     = 0x1\n\tTCPOPT_PAD                     = 0x0\n\tTCPOPT_SACK                    = 0x5\n\tTCPOPT_SACK_PERMITTED          = 0x4\n\tTCPOPT_SIGNATURE               = 0x13\n\tTCPOPT_TIMESTAMP               = 0x8\n\tTCPOPT_WINDOW                  = 0x3\n\tTCP_BBR_ACK_COMP_ALG           = 0x448\n\tTCP_BBR_ALGORITHM              = 0x43b\n\tTCP_BBR_DRAIN_INC_EXTRA        = 0x43c\n\tTCP_BBR_DRAIN_PG               = 0x42e\n\tTCP_BBR_EXTRA_GAIN             = 0x449\n\tTCP_BBR_EXTRA_STATE            = 0x453\n\tTCP_BBR_FLOOR_MIN_TSO          = 0x454\n\tTCP_BBR_HDWR_PACE              = 0x451\n\tTCP_BBR_HOLD_TARGET            = 0x436\n\tTCP_BBR_IWINTSO                = 0x42b\n\tTCP_BBR_LOWGAIN_FD             = 0x436\n\tTCP_BBR_LOWGAIN_HALF           = 0x435\n\tTCP_BBR_LOWGAIN_THRESH         = 0x434\n\tTCP_BBR_MAX_RTO                = 0x439\n\tTCP_BBR_MIN_RTO                = 0x438\n\tTCP_BBR_MIN_TOPACEOUT          = 0x455\n\tTCP_BBR_ONE_RETRAN             = 0x431\n\tTCP_BBR_PACE_CROSS             = 0x442\n\tTCP_BBR_PACE_DEL_TAR           = 0x43f\n\tTCP_BBR_PACE_OH                = 0x435\n\tTCP_BBR_PACE_PER_SEC           = 0x43e\n\tTCP_BBR_PACE_SEG_MAX           = 0x440\n\tTCP_BBR_PACE_SEG_MIN           = 0x441\n\tTCP_BBR_POLICER_DETECT         = 0x457\n\tTCP_BBR_PROBE_RTT_GAIN         = 0x44d\n\tTCP_BBR_PROBE_RTT_INT          = 0x430\n\tTCP_BBR_PROBE_RTT_LEN          = 0x44e\n\tTCP_BBR_RACK_RTT_USE           = 0x44a\n\tTCP_BBR_RECFORCE               = 0x42c\n\tTCP_BBR_REC_OVER_HPTS          = 0x43a\n\tTCP_BBR_RETRAN_WTSO            = 0x44b\n\tTCP_BBR_RWND_IS_APP            = 0x42f\n\tTCP_BBR_SEND_IWND_IN_TSO       = 0x44f\n\tTCP_BBR_STARTUP_EXIT_EPOCH     = 0x43d\n\tTCP_BBR_STARTUP_LOSS_EXIT      = 0x432\n\tTCP_BBR_STARTUP_PG             = 0x42d\n\tTCP_BBR_TMR_PACE_OH            = 0x448\n\tTCP_BBR_TSLIMITS               = 0x434\n\tTCP_BBR_TSTMP_RAISES           = 0x456\n\tTCP_BBR_UNLIMITED              = 0x43b\n\tTCP_BBR_USEDEL_RATE            = 0x437\n\tTCP_BBR_USE_LOWGAIN            = 0x433\n\tTCP_BBR_USE_RACK_CHEAT         = 0x450\n\tTCP_BBR_UTTER_MAX_TSO          = 0x452\n\tTCP_CA_NAME_MAX                = 0x10\n\tTCP_CCALGOOPT                  = 0x41\n\tTCP_CONGESTION                 = 0x40\n\tTCP_DATA_AFTER_CLOSE           = 0x44c\n\tTCP_DELACK                     = 0x48\n\tTCP_FASTOPEN                   = 0x401\n\tTCP_FASTOPEN_MAX_COOKIE_LEN    = 0x10\n\tTCP_FASTOPEN_MIN_COOKIE_LEN    = 0x4\n\tTCP_FASTOPEN_PSK_LEN           = 0x10\n\tTCP_FUNCTION_BLK               = 0x2000\n\tTCP_FUNCTION_NAME_LEN_MAX      = 0x20\n\tTCP_INFO                       = 0x20\n\tTCP_KEEPCNT                    = 0x400\n\tTCP_KEEPIDLE                   = 0x100\n\tTCP_KEEPINIT                   = 0x80\n\tTCP_KEEPINTVL                  = 0x200\n\tTCP_LOG                        = 0x22\n\tTCP_LOGBUF                     = 0x23\n\tTCP_LOGDUMP                    = 0x25\n\tTCP_LOGDUMPID                  = 0x26\n\tTCP_LOGID                      = 0x24\n\tTCP_LOG_ID_LEN                 = 0x40\n\tTCP_MAXBURST                   = 0x4\n\tTCP_MAXHLEN                    = 0x3c\n\tTCP_MAXOLEN                    = 0x28\n\tTCP_MAXSEG                     = 0x2\n\tTCP_MAXWIN                     = 0xffff\n\tTCP_MAX_SACK                   = 0x4\n\tTCP_MAX_WINSHIFT               = 0xe\n\tTCP_MD5SIG                     = 0x10\n\tTCP_MINMSS                     = 0xd8\n\tTCP_MSS                        = 0x218\n\tTCP_NODELAY                    = 0x1\n\tTCP_NOOPT                      = 0x8\n\tTCP_NOPUSH                     = 0x4\n\tTCP_PCAP_IN                    = 0x1000\n\tTCP_PCAP_OUT                   = 0x800\n\tTCP_RACK_EARLY_RECOV           = 0x423\n\tTCP_RACK_EARLY_SEG             = 0x424\n\tTCP_RACK_GP_INCREASE           = 0x446\n\tTCP_RACK_IDLE_REDUCE_HIGH      = 0x444\n\tTCP_RACK_MIN_PACE              = 0x445\n\tTCP_RACK_MIN_PACE_SEG          = 0x446\n\tTCP_RACK_MIN_TO                = 0x422\n\tTCP_RACK_PACE_ALWAYS           = 0x41f\n\tTCP_RACK_PACE_MAX_SEG          = 0x41e\n\tTCP_RACK_PACE_REDUCE           = 0x41d\n\tTCP_RACK_PKT_DELAY             = 0x428\n\tTCP_RACK_PROP                  = 0x41b\n\tTCP_RACK_PROP_RATE             = 0x420\n\tTCP_RACK_PRR_SENDALOT          = 0x421\n\tTCP_RACK_REORD_FADE            = 0x426\n\tTCP_RACK_REORD_THRESH          = 0x425\n\tTCP_RACK_TLP_INC_VAR           = 0x429\n\tTCP_RACK_TLP_REDUCE            = 0x41c\n\tTCP_RACK_TLP_THRESH            = 0x427\n\tTCP_RACK_TLP_USE               = 0x447\n\tTCP_VENDOR                     = 0x80000000\n\tTCSAFLUSH                      = 0x2\n\tTIMER_ABSTIME                  = 0x1\n\tTIMER_RELTIME                  = 0x0\n\tTIOCCBRK                       = 0x2000747a\n\tTIOCCDTR                       = 0x20007478\n\tTIOCCONS                       = 0x80047462\n\tTIOCDRAIN                      = 0x2000745e\n\tTIOCEXCL                       = 0x2000740d\n\tTIOCEXT                        = 0x80047460\n\tTIOCFLUSH                      = 0x80047410\n\tTIOCGDRAINWAIT                 = 0x40047456\n\tTIOCGETA                       = 0x402c7413\n\tTIOCGETD                       = 0x4004741a\n\tTIOCGPGRP                      = 0x40047477\n\tTIOCGPTN                       = 0x4004740f\n\tTIOCGSID                       = 0x40047463\n\tTIOCGWINSZ                     = 0x40087468\n\tTIOCMBIC                       = 0x8004746b\n\tTIOCMBIS                       = 0x8004746c\n\tTIOCMGDTRWAIT                  = 0x4004745a\n\tTIOCMGET                       = 0x4004746a\n\tTIOCMSDTRWAIT                  = 0x8004745b\n\tTIOCMSET                       = 0x8004746d\n\tTIOCM_CAR                      = 0x40\n\tTIOCM_CD                       = 0x40\n\tTIOCM_CTS                      = 0x20\n\tTIOCM_DCD                      = 0x40\n\tTIOCM_DSR                      = 0x100\n\tTIOCM_DTR                      = 0x2\n\tTIOCM_LE                       = 0x1\n\tTIOCM_RI                       = 0x80\n\tTIOCM_RNG                      = 0x80\n\tTIOCM_RTS                      = 0x4\n\tTIOCM_SR                       = 0x10\n\tTIOCM_ST                       = 0x8\n\tTIOCNOTTY                      = 0x20007471\n\tTIOCNXCL                       = 0x2000740e\n\tTIOCOUTQ                       = 0x40047473\n\tTIOCPKT                        = 0x80047470\n\tTIOCPKT_DATA                   = 0x0\n\tTIOCPKT_DOSTOP                 = 0x20\n\tTIOCPKT_FLUSHREAD              = 0x1\n\tTIOCPKT_FLUSHWRITE             = 0x2\n\tTIOCPKT_IOCTL                  = 0x40\n\tTIOCPKT_NOSTOP                 = 0x10\n\tTIOCPKT_START                  = 0x8\n\tTIOCPKT_STOP                   = 0x4\n\tTIOCPTMASTER                   = 0x2000741c\n\tTIOCSBRK                       = 0x2000747b\n\tTIOCSCTTY                      = 0x20007461\n\tTIOCSDRAINWAIT                 = 0x80047457\n\tTIOCSDTR                       = 0x20007479\n\tTIOCSETA                       = 0x802c7414\n\tTIOCSETAF                      = 0x802c7416\n\tTIOCSETAW                      = 0x802c7415\n\tTIOCSETD                       = 0x8004741b\n\tTIOCSIG                        = 0x2004745f\n\tTIOCSPGRP                      = 0x80047476\n\tTIOCSTART                      = 0x2000746e\n\tTIOCSTAT                       = 0x20007465\n\tTIOCSTI                        = 0x80017472\n\tTIOCSTOP                       = 0x2000746f\n\tTIOCSWINSZ                     = 0x80087467\n\tTIOCTIMESTAMP                  = 0x40087459\n\tTIOCUCNTL                      = 0x80047466\n\tTOSTOP                         = 0x400000\n\tUTIME_NOW                      = -0x1\n\tUTIME_OMIT                     = -0x2\n\tVDISCARD                       = 0xf\n\tVDSUSP                         = 0xb\n\tVEOF                           = 0x0\n\tVEOL                           = 0x1\n\tVEOL2                          = 0x2\n\tVERASE                         = 0x3\n\tVERASE2                        = 0x7\n\tVINTR                          = 0x8\n\tVKILL                          = 0x5\n\tVLNEXT                         = 0xe\n\tVMIN                           = 0x10\n\tVM_BCACHE_SIZE_MAX             = 0x70e0000\n\tVM_SWZONE_SIZE_MAX             = 0x2280000\n\tVQUIT                          = 0x9\n\tVREPRINT                       = 0x6\n\tVSTART                         = 0xc\n\tVSTATUS                        = 0x12\n\tVSTOP                          = 0xd\n\tVSUSP                          = 0xa\n\tVTIME                          = 0x11\n\tVWERASE                        = 0x4\n\tWCONTINUED                     = 0x4\n\tWCOREFLAG                      = 0x80\n\tWEXITED                        = 0x10\n\tWLINUXCLONE                    = 0x80000000\n\tWNOHANG                        = 0x1\n\tWNOWAIT                        = 0x8\n\tWSTOPPED                       = 0x2\n\tWTRAPPED                       = 0x20\n\tWUNTRACED                      = 0x2\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x59)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x55)\n\tECAPMODE        = syscall.Errno(0x5e)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDOOFUS         = syscall.Errno(0x58)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x52)\n\tEILSEQ          = syscall.Errno(0x56)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTEGRITY      = syscall.Errno(0x61)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x61)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5a)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x57)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x5b)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x53)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCAPABLE     = syscall.Errno(0x5d)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5f)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x2d)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEOWNERDEAD      = syscall.Errno(0x60)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5c)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGLIBRT  = syscall.Signal(0x21)\n\tSIGLWP    = syscall.Signal(0x20)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EWOULDBLOCK\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIDRM\", \"identifier removed\"},\n\t{83, \"ENOMSG\", \"no message of desired type\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"ECANCELED\", \"operation canceled\"},\n\t{86, \"EILSEQ\", \"illegal byte sequence\"},\n\t{87, \"ENOATTR\", \"attribute not found\"},\n\t{88, \"EDOOFUS\", \"programming error\"},\n\t{89, \"EBADMSG\", \"bad message\"},\n\t{90, \"EMULTIHOP\", \"multihop attempted\"},\n\t{91, \"ENOLINK\", \"link has been severed\"},\n\t{92, \"EPROTO\", \"protocol error\"},\n\t{93, \"ENOTCAPABLE\", \"capabilities insufficient\"},\n\t{94, \"ECAPMODE\", \"not permitted in capability mode\"},\n\t{95, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{96, \"EOWNERDEAD\", \"previous owner died\"},\n\t{97, \"EINTEGRITY\", \"integrity check failed\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"unknown signal\"},\n\t{33, \"SIGLIBRT\", \"unknown signal\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && freebsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                   = 0x10\n\tAF_ARP                         = 0x23\n\tAF_ATM                         = 0x1e\n\tAF_BLUETOOTH                   = 0x24\n\tAF_CCITT                       = 0xa\n\tAF_CHAOS                       = 0x5\n\tAF_CNT                         = 0x15\n\tAF_COIP                        = 0x14\n\tAF_DATAKIT                     = 0x9\n\tAF_DECnet                      = 0xc\n\tAF_DLI                         = 0xd\n\tAF_E164                        = 0x1a\n\tAF_ECMA                        = 0x8\n\tAF_HYLINK                      = 0xf\n\tAF_IEEE80211                   = 0x25\n\tAF_IMPLINK                     = 0x3\n\tAF_INET                        = 0x2\n\tAF_INET6                       = 0x1c\n\tAF_INET6_SDP                   = 0x2a\n\tAF_INET_SDP                    = 0x28\n\tAF_IPX                         = 0x17\n\tAF_ISDN                        = 0x1a\n\tAF_ISO                         = 0x7\n\tAF_LAT                         = 0xe\n\tAF_LINK                        = 0x12\n\tAF_LOCAL                       = 0x1\n\tAF_MAX                         = 0x2a\n\tAF_NATM                        = 0x1d\n\tAF_NETBIOS                     = 0x6\n\tAF_NETGRAPH                    = 0x20\n\tAF_OSI                         = 0x7\n\tAF_PUP                         = 0x4\n\tAF_ROUTE                       = 0x11\n\tAF_SCLUSTER                    = 0x22\n\tAF_SIP                         = 0x18\n\tAF_SLOW                        = 0x21\n\tAF_SNA                         = 0xb\n\tAF_UNIX                        = 0x1\n\tAF_UNSPEC                      = 0x0\n\tAF_VENDOR00                    = 0x27\n\tAF_VENDOR01                    = 0x29\n\tAF_VENDOR02                    = 0x2b\n\tAF_VENDOR03                    = 0x2d\n\tAF_VENDOR04                    = 0x2f\n\tAF_VENDOR05                    = 0x31\n\tAF_VENDOR06                    = 0x33\n\tAF_VENDOR07                    = 0x35\n\tAF_VENDOR08                    = 0x37\n\tAF_VENDOR09                    = 0x39\n\tAF_VENDOR10                    = 0x3b\n\tAF_VENDOR11                    = 0x3d\n\tAF_VENDOR12                    = 0x3f\n\tAF_VENDOR13                    = 0x41\n\tAF_VENDOR14                    = 0x43\n\tAF_VENDOR15                    = 0x45\n\tAF_VENDOR16                    = 0x47\n\tAF_VENDOR17                    = 0x49\n\tAF_VENDOR18                    = 0x4b\n\tAF_VENDOR19                    = 0x4d\n\tAF_VENDOR20                    = 0x4f\n\tAF_VENDOR21                    = 0x51\n\tAF_VENDOR22                    = 0x53\n\tAF_VENDOR23                    = 0x55\n\tAF_VENDOR24                    = 0x57\n\tAF_VENDOR25                    = 0x59\n\tAF_VENDOR26                    = 0x5b\n\tAF_VENDOR27                    = 0x5d\n\tAF_VENDOR28                    = 0x5f\n\tAF_VENDOR29                    = 0x61\n\tAF_VENDOR30                    = 0x63\n\tAF_VENDOR31                    = 0x65\n\tAF_VENDOR32                    = 0x67\n\tAF_VENDOR33                    = 0x69\n\tAF_VENDOR34                    = 0x6b\n\tAF_VENDOR35                    = 0x6d\n\tAF_VENDOR36                    = 0x6f\n\tAF_VENDOR37                    = 0x71\n\tAF_VENDOR38                    = 0x73\n\tAF_VENDOR39                    = 0x75\n\tAF_VENDOR40                    = 0x77\n\tAF_VENDOR41                    = 0x79\n\tAF_VENDOR42                    = 0x7b\n\tAF_VENDOR43                    = 0x7d\n\tAF_VENDOR44                    = 0x7f\n\tAF_VENDOR45                    = 0x81\n\tAF_VENDOR46                    = 0x83\n\tAF_VENDOR47                    = 0x85\n\tALTWERASE                      = 0x200\n\tB0                             = 0x0\n\tB110                           = 0x6e\n\tB115200                        = 0x1c200\n\tB1200                          = 0x4b0\n\tB134                           = 0x86\n\tB14400                         = 0x3840\n\tB150                           = 0x96\n\tB1800                          = 0x708\n\tB19200                         = 0x4b00\n\tB200                           = 0xc8\n\tB230400                        = 0x38400\n\tB2400                          = 0x960\n\tB28800                         = 0x7080\n\tB300                           = 0x12c\n\tB38400                         = 0x9600\n\tB460800                        = 0x70800\n\tB4800                          = 0x12c0\n\tB50                            = 0x32\n\tB57600                         = 0xe100\n\tB600                           = 0x258\n\tB7200                          = 0x1c20\n\tB75                            = 0x4b\n\tB76800                         = 0x12c00\n\tB921600                        = 0xe1000\n\tB9600                          = 0x2580\n\tBIOCFEEDBACK                   = 0x8004427c\n\tBIOCFLUSH                      = 0x20004268\n\tBIOCGBLEN                      = 0x40044266\n\tBIOCGDIRECTION                 = 0x40044276\n\tBIOCGDLT                       = 0x4004426a\n\tBIOCGDLTLIST                   = 0xc0104279\n\tBIOCGETBUFMODE                 = 0x4004427d\n\tBIOCGETIF                      = 0x4020426b\n\tBIOCGETZMAX                    = 0x4008427f\n\tBIOCGHDRCMPLT                  = 0x40044274\n\tBIOCGRSIG                      = 0x40044272\n\tBIOCGRTIMEOUT                  = 0x4010426e\n\tBIOCGSEESENT                   = 0x40044276\n\tBIOCGSTATS                     = 0x4008426f\n\tBIOCGTSTAMP                    = 0x40044283\n\tBIOCIMMEDIATE                  = 0x80044270\n\tBIOCLOCK                       = 0x2000427a\n\tBIOCPROMISC                    = 0x20004269\n\tBIOCROTZBUF                    = 0x40184280\n\tBIOCSBLEN                      = 0xc0044266\n\tBIOCSDIRECTION                 = 0x80044277\n\tBIOCSDLT                       = 0x80044278\n\tBIOCSETBUFMODE                 = 0x8004427e\n\tBIOCSETF                       = 0x80104267\n\tBIOCSETFNR                     = 0x80104282\n\tBIOCSETIF                      = 0x8020426c\n\tBIOCSETVLANPCP                 = 0x80044285\n\tBIOCSETWF                      = 0x8010427b\n\tBIOCSETZBUF                    = 0x80184281\n\tBIOCSHDRCMPLT                  = 0x80044275\n\tBIOCSRSIG                      = 0x80044273\n\tBIOCSRTIMEOUT                  = 0x8010426d\n\tBIOCSSEESENT                   = 0x80044277\n\tBIOCSTSTAMP                    = 0x80044284\n\tBIOCVERSION                    = 0x40044271\n\tBPF_A                          = 0x10\n\tBPF_ABS                        = 0x20\n\tBPF_ADD                        = 0x0\n\tBPF_ALIGNMENT                  = 0x8\n\tBPF_ALU                        = 0x4\n\tBPF_AND                        = 0x50\n\tBPF_B                          = 0x10\n\tBPF_BUFMODE_BUFFER             = 0x1\n\tBPF_BUFMODE_ZBUF               = 0x2\n\tBPF_DIV                        = 0x30\n\tBPF_H                          = 0x8\n\tBPF_IMM                        = 0x0\n\tBPF_IND                        = 0x40\n\tBPF_JA                         = 0x0\n\tBPF_JEQ                        = 0x10\n\tBPF_JGE                        = 0x30\n\tBPF_JGT                        = 0x20\n\tBPF_JMP                        = 0x5\n\tBPF_JSET                       = 0x40\n\tBPF_K                          = 0x0\n\tBPF_LD                         = 0x0\n\tBPF_LDX                        = 0x1\n\tBPF_LEN                        = 0x80\n\tBPF_LSH                        = 0x60\n\tBPF_MAJOR_VERSION              = 0x1\n\tBPF_MAXBUFSIZE                 = 0x80000\n\tBPF_MAXINSNS                   = 0x200\n\tBPF_MEM                        = 0x60\n\tBPF_MEMWORDS                   = 0x10\n\tBPF_MINBUFSIZE                 = 0x20\n\tBPF_MINOR_VERSION              = 0x1\n\tBPF_MISC                       = 0x7\n\tBPF_MOD                        = 0x90\n\tBPF_MSH                        = 0xa0\n\tBPF_MUL                        = 0x20\n\tBPF_NEG                        = 0x80\n\tBPF_OR                         = 0x40\n\tBPF_RELEASE                    = 0x30bb6\n\tBPF_RET                        = 0x6\n\tBPF_RSH                        = 0x70\n\tBPF_ST                         = 0x2\n\tBPF_STX                        = 0x3\n\tBPF_SUB                        = 0x10\n\tBPF_TAX                        = 0x0\n\tBPF_TXA                        = 0x80\n\tBPF_T_BINTIME                  = 0x2\n\tBPF_T_BINTIME_FAST             = 0x102\n\tBPF_T_BINTIME_MONOTONIC        = 0x202\n\tBPF_T_BINTIME_MONOTONIC_FAST   = 0x302\n\tBPF_T_FAST                     = 0x100\n\tBPF_T_FLAG_MASK                = 0x300\n\tBPF_T_FORMAT_MASK              = 0x3\n\tBPF_T_MICROTIME                = 0x0\n\tBPF_T_MICROTIME_FAST           = 0x100\n\tBPF_T_MICROTIME_MONOTONIC      = 0x200\n\tBPF_T_MICROTIME_MONOTONIC_FAST = 0x300\n\tBPF_T_MONOTONIC                = 0x200\n\tBPF_T_MONOTONIC_FAST           = 0x300\n\tBPF_T_NANOTIME                 = 0x1\n\tBPF_T_NANOTIME_FAST            = 0x101\n\tBPF_T_NANOTIME_MONOTONIC       = 0x201\n\tBPF_T_NANOTIME_MONOTONIC_FAST  = 0x301\n\tBPF_T_NONE                     = 0x3\n\tBPF_T_NORMAL                   = 0x0\n\tBPF_W                          = 0x0\n\tBPF_X                          = 0x8\n\tBPF_XOR                        = 0xa0\n\tBRKINT                         = 0x2\n\tCAP_ACCEPT                     = 0x200000020000000\n\tCAP_ACL_CHECK                  = 0x400000000010000\n\tCAP_ACL_DELETE                 = 0x400000000020000\n\tCAP_ACL_GET                    = 0x400000000040000\n\tCAP_ACL_SET                    = 0x400000000080000\n\tCAP_ALL0                       = 0x20007ffffffffff\n\tCAP_ALL1                       = 0x4000000001fffff\n\tCAP_BIND                       = 0x200000040000000\n\tCAP_BINDAT                     = 0x200008000000400\n\tCAP_CHFLAGSAT                  = 0x200000000001400\n\tCAP_CONNECT                    = 0x200000080000000\n\tCAP_CONNECTAT                  = 0x200010000000400\n\tCAP_CREATE                     = 0x200000000000040\n\tCAP_EVENT                      = 0x400000000000020\n\tCAP_EXTATTR_DELETE             = 0x400000000001000\n\tCAP_EXTATTR_GET                = 0x400000000002000\n\tCAP_EXTATTR_LIST               = 0x400000000004000\n\tCAP_EXTATTR_SET                = 0x400000000008000\n\tCAP_FCHDIR                     = 0x200000000000800\n\tCAP_FCHFLAGS                   = 0x200000000001000\n\tCAP_FCHMOD                     = 0x200000000002000\n\tCAP_FCHMODAT                   = 0x200000000002400\n\tCAP_FCHOWN                     = 0x200000000004000\n\tCAP_FCHOWNAT                   = 0x200000000004400\n\tCAP_FCNTL                      = 0x200000000008000\n\tCAP_FCNTL_ALL                  = 0x78\n\tCAP_FCNTL_GETFL                = 0x8\n\tCAP_FCNTL_GETOWN               = 0x20\n\tCAP_FCNTL_SETFL                = 0x10\n\tCAP_FCNTL_SETOWN               = 0x40\n\tCAP_FEXECVE                    = 0x200000000000080\n\tCAP_FLOCK                      = 0x200000000010000\n\tCAP_FPATHCONF                  = 0x200000000020000\n\tCAP_FSCK                       = 0x200000000040000\n\tCAP_FSTAT                      = 0x200000000080000\n\tCAP_FSTATAT                    = 0x200000000080400\n\tCAP_FSTATFS                    = 0x200000000100000\n\tCAP_FSYNC                      = 0x200000000000100\n\tCAP_FTRUNCATE                  = 0x200000000000200\n\tCAP_FUTIMES                    = 0x200000000200000\n\tCAP_FUTIMESAT                  = 0x200000000200400\n\tCAP_GETPEERNAME                = 0x200000100000000\n\tCAP_GETSOCKNAME                = 0x200000200000000\n\tCAP_GETSOCKOPT                 = 0x200000400000000\n\tCAP_IOCTL                      = 0x400000000000080\n\tCAP_IOCTLS_ALL                 = 0x7fffffffffffffff\n\tCAP_KQUEUE                     = 0x400000000100040\n\tCAP_KQUEUE_CHANGE              = 0x400000000100000\n\tCAP_KQUEUE_EVENT               = 0x400000000000040\n\tCAP_LINKAT_SOURCE              = 0x200020000000400\n\tCAP_LINKAT_TARGET              = 0x200000000400400\n\tCAP_LISTEN                     = 0x200000800000000\n\tCAP_LOOKUP                     = 0x200000000000400\n\tCAP_MAC_GET                    = 0x400000000000001\n\tCAP_MAC_SET                    = 0x400000000000002\n\tCAP_MKDIRAT                    = 0x200000000800400\n\tCAP_MKFIFOAT                   = 0x200000001000400\n\tCAP_MKNODAT                    = 0x200000002000400\n\tCAP_MMAP                       = 0x200000000000010\n\tCAP_MMAP_R                     = 0x20000000000001d\n\tCAP_MMAP_RW                    = 0x20000000000001f\n\tCAP_MMAP_RWX                   = 0x20000000000003f\n\tCAP_MMAP_RX                    = 0x20000000000003d\n\tCAP_MMAP_W                     = 0x20000000000001e\n\tCAP_MMAP_WX                    = 0x20000000000003e\n\tCAP_MMAP_X                     = 0x20000000000003c\n\tCAP_PDGETPID                   = 0x400000000000200\n\tCAP_PDKILL                     = 0x400000000000800\n\tCAP_PDWAIT                     = 0x400000000000400\n\tCAP_PEELOFF                    = 0x200001000000000\n\tCAP_POLL_EVENT                 = 0x400000000000020\n\tCAP_PREAD                      = 0x20000000000000d\n\tCAP_PWRITE                     = 0x20000000000000e\n\tCAP_READ                       = 0x200000000000001\n\tCAP_RECV                       = 0x200000000000001\n\tCAP_RENAMEAT_SOURCE            = 0x200000004000400\n\tCAP_RENAMEAT_TARGET            = 0x200040000000400\n\tCAP_RIGHTS_VERSION             = 0x0\n\tCAP_RIGHTS_VERSION_00          = 0x0\n\tCAP_SEEK                       = 0x20000000000000c\n\tCAP_SEEK_TELL                  = 0x200000000000004\n\tCAP_SEM_GETVALUE               = 0x400000000000004\n\tCAP_SEM_POST                   = 0x400000000000008\n\tCAP_SEM_WAIT                   = 0x400000000000010\n\tCAP_SEND                       = 0x200000000000002\n\tCAP_SETSOCKOPT                 = 0x200002000000000\n\tCAP_SHUTDOWN                   = 0x200004000000000\n\tCAP_SOCK_CLIENT                = 0x200007780000003\n\tCAP_SOCK_SERVER                = 0x200007f60000003\n\tCAP_SYMLINKAT                  = 0x200000008000400\n\tCAP_TTYHOOK                    = 0x400000000000100\n\tCAP_UNLINKAT                   = 0x200000010000400\n\tCAP_UNUSED0_44                 = 0x200080000000000\n\tCAP_UNUSED0_57                 = 0x300000000000000\n\tCAP_UNUSED1_22                 = 0x400000000200000\n\tCAP_UNUSED1_57                 = 0x500000000000000\n\tCAP_WRITE                      = 0x200000000000002\n\tCFLUSH                         = 0xf\n\tCLOCAL                         = 0x8000\n\tCLOCK_MONOTONIC                = 0x4\n\tCLOCK_MONOTONIC_FAST           = 0xc\n\tCLOCK_MONOTONIC_PRECISE        = 0xb\n\tCLOCK_PROCESS_CPUTIME_ID       = 0xf\n\tCLOCK_PROF                     = 0x2\n\tCLOCK_REALTIME                 = 0x0\n\tCLOCK_REALTIME_FAST            = 0xa\n\tCLOCK_REALTIME_PRECISE         = 0x9\n\tCLOCK_SECOND                   = 0xd\n\tCLOCK_THREAD_CPUTIME_ID        = 0xe\n\tCLOCK_UPTIME                   = 0x5\n\tCLOCK_UPTIME_FAST              = 0x8\n\tCLOCK_UPTIME_PRECISE           = 0x7\n\tCLOCK_VIRTUAL                  = 0x1\n\tCPUSTATES                      = 0x5\n\tCP_IDLE                        = 0x4\n\tCP_INTR                        = 0x3\n\tCP_NICE                        = 0x1\n\tCP_SYS                         = 0x2\n\tCP_USER                        = 0x0\n\tCREAD                          = 0x800\n\tCRTSCTS                        = 0x30000\n\tCS5                            = 0x0\n\tCS6                            = 0x100\n\tCS7                            = 0x200\n\tCS8                            = 0x300\n\tCSIZE                          = 0x300\n\tCSTART                         = 0x11\n\tCSTATUS                        = 0x14\n\tCSTOP                          = 0x13\n\tCSTOPB                         = 0x400\n\tCSUSP                          = 0x1a\n\tCTL_HW                         = 0x6\n\tCTL_KERN                       = 0x1\n\tCTL_MAXNAME                    = 0x18\n\tCTL_NET                        = 0x4\n\tDIOCGATTR                      = 0xc148648e\n\tDIOCGDELETE                    = 0x80106488\n\tDIOCGFLUSH                     = 0x20006487\n\tDIOCGFRONTSTUFF                = 0x40086486\n\tDIOCGFWHEADS                   = 0x40046483\n\tDIOCGFWSECTORS                 = 0x40046482\n\tDIOCGIDENT                     = 0x41006489\n\tDIOCGMEDIASIZE                 = 0x40086481\n\tDIOCGPHYSPATH                  = 0x4400648d\n\tDIOCGPROVIDERNAME              = 0x4400648a\n\tDIOCGSECTORSIZE                = 0x40046480\n\tDIOCGSTRIPEOFFSET              = 0x4008648c\n\tDIOCGSTRIPESIZE                = 0x4008648b\n\tDIOCSKERNELDUMP                = 0x80506490\n\tDIOCSKERNELDUMP_FREEBSD11      = 0x80046485\n\tDIOCZONECMD                    = 0xc080648f\n\tDLT_A429                       = 0xb8\n\tDLT_A653_ICM                   = 0xb9\n\tDLT_AIRONET_HEADER             = 0x78\n\tDLT_AOS                        = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394     = 0x8a\n\tDLT_ARCNET                     = 0x7\n\tDLT_ARCNET_LINUX               = 0x81\n\tDLT_ATM_CLIP                   = 0x13\n\tDLT_ATM_RFC1483                = 0xb\n\tDLT_AURORA                     = 0x7e\n\tDLT_AX25                       = 0x3\n\tDLT_AX25_KISS                  = 0xca\n\tDLT_BACNET_MS_TP               = 0xa5\n\tDLT_BLUETOOTH_BREDR_BB         = 0xff\n\tDLT_BLUETOOTH_HCI_H4           = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9\n\tDLT_BLUETOOTH_LE_LL            = 0xfb\n\tDLT_BLUETOOTH_LE_LL_WITH_PHDR  = 0x100\n\tDLT_BLUETOOTH_LINUX_MONITOR    = 0xfe\n\tDLT_CAN20B                     = 0xbe\n\tDLT_CAN_SOCKETCAN              = 0xe3\n\tDLT_CHAOS                      = 0x5\n\tDLT_CHDLC                      = 0x68\n\tDLT_CISCO_IOS                  = 0x76\n\tDLT_CLASS_NETBSD_RAWAF         = 0x2240000\n\tDLT_C_HDLC                     = 0x68\n\tDLT_C_HDLC_WITH_DIR            = 0xcd\n\tDLT_DBUS                       = 0xe7\n\tDLT_DECT                       = 0xdd\n\tDLT_DISPLAYPORT_AUX            = 0x113\n\tDLT_DOCSIS                     = 0x8f\n\tDLT_DOCSIS31_XRA31             = 0x111\n\tDLT_DVB_CI                     = 0xeb\n\tDLT_ECONET                     = 0x73\n\tDLT_EN10MB                     = 0x1\n\tDLT_EN3MB                      = 0x2\n\tDLT_ENC                        = 0x6d\n\tDLT_EPON                       = 0x103\n\tDLT_ERF                        = 0xc5\n\tDLT_ERF_ETH                    = 0xaf\n\tDLT_ERF_POS                    = 0xb0\n\tDLT_ETHERNET_MPACKET           = 0x112\n\tDLT_FC_2                       = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS     = 0xe1\n\tDLT_FDDI                       = 0xa\n\tDLT_FLEXRAY                    = 0xd2\n\tDLT_FRELAY                     = 0x6b\n\tDLT_FRELAY_WITH_DIR            = 0xce\n\tDLT_GCOM_SERIAL                = 0xad\n\tDLT_GCOM_T1E1                  = 0xac\n\tDLT_GPF_F                      = 0xab\n\tDLT_GPF_T                      = 0xaa\n\tDLT_GPRS_LLC                   = 0xa9\n\tDLT_GSMTAP_ABIS                = 0xda\n\tDLT_GSMTAP_UM                  = 0xd9\n\tDLT_IBM_SN                     = 0x92\n\tDLT_IBM_SP                     = 0x91\n\tDLT_IEEE802                    = 0x6\n\tDLT_IEEE802_11                 = 0x69\n\tDLT_IEEE802_11_RADIO           = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS       = 0xa3\n\tDLT_IEEE802_15_4               = 0xc3\n\tDLT_IEEE802_15_4_LINUX         = 0xbf\n\tDLT_IEEE802_15_4_NOFCS         = 0xe6\n\tDLT_IEEE802_15_4_NONASK_PHY    = 0xd7\n\tDLT_IEEE802_16_MAC_CPS         = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO   = 0xc1\n\tDLT_INFINIBAND                 = 0xf7\n\tDLT_IPFILTER                   = 0x74\n\tDLT_IPMB_KONTRON               = 0xc7\n\tDLT_IPMB_LINUX                 = 0xd1\n\tDLT_IPMI_HPM_2                 = 0x104\n\tDLT_IPNET                      = 0xe2\n\tDLT_IPOIB                      = 0xf2\n\tDLT_IPV4                       = 0xe4\n\tDLT_IPV6                       = 0xe5\n\tDLT_IP_OVER_FC                 = 0x7a\n\tDLT_ISO_14443                  = 0x108\n\tDLT_JUNIPER_ATM1               = 0x89\n\tDLT_JUNIPER_ATM2               = 0x87\n\tDLT_JUNIPER_ATM_CEMIC          = 0xee\n\tDLT_JUNIPER_CHDLC              = 0xb5\n\tDLT_JUNIPER_ES                 = 0x84\n\tDLT_JUNIPER_ETHER              = 0xb2\n\tDLT_JUNIPER_FIBRECHANNEL       = 0xea\n\tDLT_JUNIPER_FRELAY             = 0xb4\n\tDLT_JUNIPER_GGSN               = 0x85\n\tDLT_JUNIPER_ISM                = 0xc2\n\tDLT_JUNIPER_MFR                = 0x86\n\tDLT_JUNIPER_MLFR               = 0x83\n\tDLT_JUNIPER_MLPPP              = 0x82\n\tDLT_JUNIPER_MONITOR            = 0xa4\n\tDLT_JUNIPER_PIC_PEER           = 0xae\n\tDLT_JUNIPER_PPP                = 0xb3\n\tDLT_JUNIPER_PPPOE              = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM          = 0xa8\n\tDLT_JUNIPER_SERVICES           = 0x88\n\tDLT_JUNIPER_SRX_E2E            = 0xe9\n\tDLT_JUNIPER_ST                 = 0xc8\n\tDLT_JUNIPER_VP                 = 0xb7\n\tDLT_JUNIPER_VS                 = 0xe8\n\tDLT_LAPB_WITH_DIR              = 0xcf\n\tDLT_LAPD                       = 0xcb\n\tDLT_LIN                        = 0xd4\n\tDLT_LINUX_EVDEV                = 0xd8\n\tDLT_LINUX_IRDA                 = 0x90\n\tDLT_LINUX_LAPD                 = 0xb1\n\tDLT_LINUX_PPP_WITHDIRECTION    = 0xa6\n\tDLT_LINUX_SLL                  = 0x71\n\tDLT_LINUX_SLL2                 = 0x114\n\tDLT_LOOP                       = 0x6c\n\tDLT_LORATAP                    = 0x10e\n\tDLT_LTALK                      = 0x72\n\tDLT_MATCHING_MAX               = 0x114\n\tDLT_MATCHING_MIN               = 0x68\n\tDLT_MFR                        = 0xb6\n\tDLT_MOST                       = 0xd3\n\tDLT_MPEG_2_TS                  = 0xf3\n\tDLT_MPLS                       = 0xdb\n\tDLT_MTP2                       = 0x8c\n\tDLT_MTP2_WITH_PHDR             = 0x8b\n\tDLT_MTP3                       = 0x8d\n\tDLT_MUX27010                   = 0xec\n\tDLT_NETANALYZER                = 0xf0\n\tDLT_NETANALYZER_TRANSPARENT    = 0xf1\n\tDLT_NETLINK                    = 0xfd\n\tDLT_NFC_LLCP                   = 0xf5\n\tDLT_NFLOG                      = 0xef\n\tDLT_NG40                       = 0xf4\n\tDLT_NORDIC_BLE                 = 0x110\n\tDLT_NULL                       = 0x0\n\tDLT_OPENFLOW                   = 0x10b\n\tDLT_PCI_EXP                    = 0x7d\n\tDLT_PFLOG                      = 0x75\n\tDLT_PFSYNC                     = 0x79\n\tDLT_PKTAP                      = 0x102\n\tDLT_PPI                        = 0xc0\n\tDLT_PPP                        = 0x9\n\tDLT_PPP_BSDOS                  = 0xe\n\tDLT_PPP_ETHER                  = 0x33\n\tDLT_PPP_PPPD                   = 0xa6\n\tDLT_PPP_SERIAL                 = 0x32\n\tDLT_PPP_WITH_DIR               = 0xcc\n\tDLT_PPP_WITH_DIRECTION         = 0xa6\n\tDLT_PRISM_HEADER               = 0x77\n\tDLT_PROFIBUS_DL                = 0x101\n\tDLT_PRONET                     = 0x4\n\tDLT_RAIF1                      = 0xc6\n\tDLT_RAW                        = 0xc\n\tDLT_RDS                        = 0x109\n\tDLT_REDBACK_SMARTEDGE          = 0x20\n\tDLT_RIO                        = 0x7c\n\tDLT_RTAC_SERIAL                = 0xfa\n\tDLT_SCCP                       = 0x8e\n\tDLT_SCTP                       = 0xf8\n\tDLT_SDLC                       = 0x10c\n\tDLT_SITA                       = 0xc4\n\tDLT_SLIP                       = 0x8\n\tDLT_SLIP_BSDOS                 = 0xd\n\tDLT_STANAG_5066_D_PDU          = 0xed\n\tDLT_SUNATM                     = 0x7b\n\tDLT_SYMANTEC_FIREWALL          = 0x63\n\tDLT_TI_LLN_SNIFFER             = 0x10d\n\tDLT_TZSP                       = 0x80\n\tDLT_USB                        = 0xba\n\tDLT_USBPCAP                    = 0xf9\n\tDLT_USB_DARWIN                 = 0x10a\n\tDLT_USB_FREEBSD                = 0xba\n\tDLT_USB_LINUX                  = 0xbd\n\tDLT_USB_LINUX_MMAPPED          = 0xdc\n\tDLT_USER0                      = 0x93\n\tDLT_USER1                      = 0x94\n\tDLT_USER10                     = 0x9d\n\tDLT_USER11                     = 0x9e\n\tDLT_USER12                     = 0x9f\n\tDLT_USER13                     = 0xa0\n\tDLT_USER14                     = 0xa1\n\tDLT_USER15                     = 0xa2\n\tDLT_USER2                      = 0x95\n\tDLT_USER3                      = 0x96\n\tDLT_USER4                      = 0x97\n\tDLT_USER5                      = 0x98\n\tDLT_USER6                      = 0x99\n\tDLT_USER7                      = 0x9a\n\tDLT_USER8                      = 0x9b\n\tDLT_USER9                      = 0x9c\n\tDLT_VSOCK                      = 0x10f\n\tDLT_WATTSTOPPER_DLM            = 0x107\n\tDLT_WIHART                     = 0xdf\n\tDLT_WIRESHARK_UPPER_PDU        = 0xfc\n\tDLT_X2E_SERIAL                 = 0xd5\n\tDLT_X2E_XORAYA                 = 0xd6\n\tDLT_ZWAVE_R1_R2                = 0x105\n\tDLT_ZWAVE_R3                   = 0x106\n\tDT_BLK                         = 0x6\n\tDT_CHR                         = 0x2\n\tDT_DIR                         = 0x4\n\tDT_FIFO                        = 0x1\n\tDT_LNK                         = 0xa\n\tDT_REG                         = 0x8\n\tDT_SOCK                        = 0xc\n\tDT_UNKNOWN                     = 0x0\n\tDT_WHT                         = 0xe\n\tECHO                           = 0x8\n\tECHOCTL                        = 0x40\n\tECHOE                          = 0x2\n\tECHOK                          = 0x4\n\tECHOKE                         = 0x1\n\tECHONL                         = 0x10\n\tECHOPRT                        = 0x20\n\tEVFILT_AIO                     = -0x3\n\tEVFILT_EMPTY                   = -0xd\n\tEVFILT_FS                      = -0x9\n\tEVFILT_LIO                     = -0xa\n\tEVFILT_PROC                    = -0x5\n\tEVFILT_PROCDESC                = -0x8\n\tEVFILT_READ                    = -0x1\n\tEVFILT_SENDFILE                = -0xc\n\tEVFILT_SIGNAL                  = -0x6\n\tEVFILT_SYSCOUNT                = 0xd\n\tEVFILT_TIMER                   = -0x7\n\tEVFILT_USER                    = -0xb\n\tEVFILT_VNODE                   = -0x4\n\tEVFILT_WRITE                   = -0x2\n\tEVNAMEMAP_NAME_SIZE            = 0x40\n\tEV_ADD                         = 0x1\n\tEV_CLEAR                       = 0x20\n\tEV_DELETE                      = 0x2\n\tEV_DISABLE                     = 0x8\n\tEV_DISPATCH                    = 0x80\n\tEV_DROP                        = 0x1000\n\tEV_ENABLE                      = 0x4\n\tEV_EOF                         = 0x8000\n\tEV_ERROR                       = 0x4000\n\tEV_FLAG1                       = 0x2000\n\tEV_FLAG2                       = 0x4000\n\tEV_FORCEONESHOT                = 0x100\n\tEV_ONESHOT                     = 0x10\n\tEV_RECEIPT                     = 0x40\n\tEV_SYSFLAGS                    = 0xf000\n\tEXTA                           = 0x4b00\n\tEXTATTR_MAXNAMELEN             = 0xff\n\tEXTATTR_NAMESPACE_EMPTY        = 0x0\n\tEXTATTR_NAMESPACE_SYSTEM       = 0x2\n\tEXTATTR_NAMESPACE_USER         = 0x1\n\tEXTB                           = 0x9600\n\tEXTPROC                        = 0x800\n\tFD_CLOEXEC                     = 0x1\n\tFD_SETSIZE                     = 0x400\n\tFLUSHO                         = 0x800000\n\tF_CANCEL                       = 0x5\n\tF_DUP2FD                       = 0xa\n\tF_DUP2FD_CLOEXEC               = 0x12\n\tF_DUPFD                        = 0x0\n\tF_DUPFD_CLOEXEC                = 0x11\n\tF_GETFD                        = 0x1\n\tF_GETFL                        = 0x3\n\tF_GETLK                        = 0xb\n\tF_GETOWN                       = 0x5\n\tF_OGETLK                       = 0x7\n\tF_OK                           = 0x0\n\tF_OSETLK                       = 0x8\n\tF_OSETLKW                      = 0x9\n\tF_RDAHEAD                      = 0x10\n\tF_RDLCK                        = 0x1\n\tF_READAHEAD                    = 0xf\n\tF_SETFD                        = 0x2\n\tF_SETFL                        = 0x4\n\tF_SETLK                        = 0xc\n\tF_SETLKW                       = 0xd\n\tF_SETLK_REMOTE                 = 0xe\n\tF_SETOWN                       = 0x6\n\tF_UNLCK                        = 0x2\n\tF_UNLCKSYS                     = 0x4\n\tF_WRLCK                        = 0x3\n\tHUPCL                          = 0x4000\n\tHW_MACHINE                     = 0x1\n\tICANON                         = 0x100\n\tICMP6_FILTER                   = 0x12\n\tICRNL                          = 0x100\n\tIEXTEN                         = 0x400\n\tIFAN_ARRIVAL                   = 0x0\n\tIFAN_DEPARTURE                 = 0x1\n\tIFCAP_WOL_MAGIC                = 0x2000\n\tIFF_ALLMULTI                   = 0x200\n\tIFF_ALTPHYS                    = 0x4000\n\tIFF_BROADCAST                  = 0x2\n\tIFF_CANTCHANGE                 = 0x218f52\n\tIFF_CANTCONFIG                 = 0x10000\n\tIFF_DEBUG                      = 0x4\n\tIFF_DRV_OACTIVE                = 0x400\n\tIFF_DRV_RUNNING                = 0x40\n\tIFF_DYING                      = 0x200000\n\tIFF_LINK0                      = 0x1000\n\tIFF_LINK1                      = 0x2000\n\tIFF_LINK2                      = 0x4000\n\tIFF_LOOPBACK                   = 0x8\n\tIFF_MONITOR                    = 0x40000\n\tIFF_MULTICAST                  = 0x8000\n\tIFF_NOARP                      = 0x80\n\tIFF_NOGROUP                    = 0x800000\n\tIFF_OACTIVE                    = 0x400\n\tIFF_POINTOPOINT                = 0x10\n\tIFF_PPROMISC                   = 0x20000\n\tIFF_PROMISC                    = 0x100\n\tIFF_RENAMING                   = 0x400000\n\tIFF_RUNNING                    = 0x40\n\tIFF_SIMPLEX                    = 0x800\n\tIFF_STATICARP                  = 0x80000\n\tIFF_UP                         = 0x1\n\tIFNAMSIZ                       = 0x10\n\tIFT_BRIDGE                     = 0xd1\n\tIFT_CARP                       = 0xf8\n\tIFT_IEEE1394                   = 0x90\n\tIFT_INFINIBAND                 = 0xc7\n\tIFT_L2VLAN                     = 0x87\n\tIFT_L3IPVLAN                   = 0x88\n\tIFT_PPP                        = 0x17\n\tIFT_PROPVIRTUAL                = 0x35\n\tIGNBRK                         = 0x1\n\tIGNCR                          = 0x80\n\tIGNPAR                         = 0x4\n\tIMAXBEL                        = 0x2000\n\tINLCR                          = 0x40\n\tINPCK                          = 0x10\n\tIN_CLASSA_HOST                 = 0xffffff\n\tIN_CLASSA_MAX                  = 0x80\n\tIN_CLASSA_NET                  = 0xff000000\n\tIN_CLASSA_NSHIFT               = 0x18\n\tIN_CLASSB_HOST                 = 0xffff\n\tIN_CLASSB_MAX                  = 0x10000\n\tIN_CLASSB_NET                  = 0xffff0000\n\tIN_CLASSB_NSHIFT               = 0x10\n\tIN_CLASSC_HOST                 = 0xff\n\tIN_CLASSC_NET                  = 0xffffff00\n\tIN_CLASSC_NSHIFT               = 0x8\n\tIN_CLASSD_HOST                 = 0xfffffff\n\tIN_CLASSD_NET                  = 0xf0000000\n\tIN_CLASSD_NSHIFT               = 0x1c\n\tIN_LOOPBACKNET                 = 0x7f\n\tIN_RFC3021_MASK                = 0xfffffffe\n\tIPPROTO_3PC                    = 0x22\n\tIPPROTO_ADFS                   = 0x44\n\tIPPROTO_AH                     = 0x33\n\tIPPROTO_AHIP                   = 0x3d\n\tIPPROTO_APES                   = 0x63\n\tIPPROTO_ARGUS                  = 0xd\n\tIPPROTO_AX25                   = 0x5d\n\tIPPROTO_BHA                    = 0x31\n\tIPPROTO_BLT                    = 0x1e\n\tIPPROTO_BRSATMON               = 0x4c\n\tIPPROTO_CARP                   = 0x70\n\tIPPROTO_CFTP                   = 0x3e\n\tIPPROTO_CHAOS                  = 0x10\n\tIPPROTO_CMTP                   = 0x26\n\tIPPROTO_CPHB                   = 0x49\n\tIPPROTO_CPNX                   = 0x48\n\tIPPROTO_DCCP                   = 0x21\n\tIPPROTO_DDP                    = 0x25\n\tIPPROTO_DGP                    = 0x56\n\tIPPROTO_DIVERT                 = 0x102\n\tIPPROTO_DONE                   = 0x101\n\tIPPROTO_DSTOPTS                = 0x3c\n\tIPPROTO_EGP                    = 0x8\n\tIPPROTO_EMCON                  = 0xe\n\tIPPROTO_ENCAP                  = 0x62\n\tIPPROTO_EON                    = 0x50\n\tIPPROTO_ESP                    = 0x32\n\tIPPROTO_ETHERIP                = 0x61\n\tIPPROTO_FRAGMENT               = 0x2c\n\tIPPROTO_GGP                    = 0x3\n\tIPPROTO_GMTP                   = 0x64\n\tIPPROTO_GRE                    = 0x2f\n\tIPPROTO_HELLO                  = 0x3f\n\tIPPROTO_HIP                    = 0x8b\n\tIPPROTO_HMP                    = 0x14\n\tIPPROTO_HOPOPTS                = 0x0\n\tIPPROTO_ICMP                   = 0x1\n\tIPPROTO_ICMPV6                 = 0x3a\n\tIPPROTO_IDP                    = 0x16\n\tIPPROTO_IDPR                   = 0x23\n\tIPPROTO_IDRP                   = 0x2d\n\tIPPROTO_IGMP                   = 0x2\n\tIPPROTO_IGP                    = 0x55\n\tIPPROTO_IGRP                   = 0x58\n\tIPPROTO_IL                     = 0x28\n\tIPPROTO_INLSP                  = 0x34\n\tIPPROTO_INP                    = 0x20\n\tIPPROTO_IP                     = 0x0\n\tIPPROTO_IPCOMP                 = 0x6c\n\tIPPROTO_IPCV                   = 0x47\n\tIPPROTO_IPEIP                  = 0x5e\n\tIPPROTO_IPIP                   = 0x4\n\tIPPROTO_IPPC                   = 0x43\n\tIPPROTO_IPV4                   = 0x4\n\tIPPROTO_IPV6                   = 0x29\n\tIPPROTO_IRTP                   = 0x1c\n\tIPPROTO_KRYPTOLAN              = 0x41\n\tIPPROTO_LARP                   = 0x5b\n\tIPPROTO_LEAF1                  = 0x19\n\tIPPROTO_LEAF2                  = 0x1a\n\tIPPROTO_MAX                    = 0x100\n\tIPPROTO_MEAS                   = 0x13\n\tIPPROTO_MH                     = 0x87\n\tIPPROTO_MHRP                   = 0x30\n\tIPPROTO_MICP                   = 0x5f\n\tIPPROTO_MOBILE                 = 0x37\n\tIPPROTO_MPLS                   = 0x89\n\tIPPROTO_MTP                    = 0x5c\n\tIPPROTO_MUX                    = 0x12\n\tIPPROTO_ND                     = 0x4d\n\tIPPROTO_NHRP                   = 0x36\n\tIPPROTO_NONE                   = 0x3b\n\tIPPROTO_NSP                    = 0x1f\n\tIPPROTO_NVPII                  = 0xb\n\tIPPROTO_OLD_DIVERT             = 0xfe\n\tIPPROTO_OSPFIGP                = 0x59\n\tIPPROTO_PFSYNC                 = 0xf0\n\tIPPROTO_PGM                    = 0x71\n\tIPPROTO_PIGP                   = 0x9\n\tIPPROTO_PIM                    = 0x67\n\tIPPROTO_PRM                    = 0x15\n\tIPPROTO_PUP                    = 0xc\n\tIPPROTO_PVP                    = 0x4b\n\tIPPROTO_RAW                    = 0xff\n\tIPPROTO_RCCMON                 = 0xa\n\tIPPROTO_RDP                    = 0x1b\n\tIPPROTO_RESERVED_253           = 0xfd\n\tIPPROTO_RESERVED_254           = 0xfe\n\tIPPROTO_ROUTING                = 0x2b\n\tIPPROTO_RSVP                   = 0x2e\n\tIPPROTO_RVD                    = 0x42\n\tIPPROTO_SATEXPAK               = 0x40\n\tIPPROTO_SATMON                 = 0x45\n\tIPPROTO_SCCSP                  = 0x60\n\tIPPROTO_SCTP                   = 0x84\n\tIPPROTO_SDRP                   = 0x2a\n\tIPPROTO_SEND                   = 0x103\n\tIPPROTO_SHIM6                  = 0x8c\n\tIPPROTO_SKIP                   = 0x39\n\tIPPROTO_SPACER                 = 0x7fff\n\tIPPROTO_SRPC                   = 0x5a\n\tIPPROTO_ST                     = 0x7\n\tIPPROTO_SVMTP                  = 0x52\n\tIPPROTO_SWIPE                  = 0x35\n\tIPPROTO_TCF                    = 0x57\n\tIPPROTO_TCP                    = 0x6\n\tIPPROTO_TLSP                   = 0x38\n\tIPPROTO_TP                     = 0x1d\n\tIPPROTO_TPXX                   = 0x27\n\tIPPROTO_TRUNK1                 = 0x17\n\tIPPROTO_TRUNK2                 = 0x18\n\tIPPROTO_TTP                    = 0x54\n\tIPPROTO_UDP                    = 0x11\n\tIPPROTO_UDPLITE                = 0x88\n\tIPPROTO_VINES                  = 0x53\n\tIPPROTO_VISA                   = 0x46\n\tIPPROTO_VMTP                   = 0x51\n\tIPPROTO_WBEXPAK                = 0x4f\n\tIPPROTO_WBMON                  = 0x4e\n\tIPPROTO_WSN                    = 0x4a\n\tIPPROTO_XNET                   = 0xf\n\tIPPROTO_XTP                    = 0x24\n\tIPV6_AUTOFLOWLABEL             = 0x3b\n\tIPV6_BINDANY                   = 0x40\n\tIPV6_BINDMULTI                 = 0x41\n\tIPV6_BINDV6ONLY                = 0x1b\n\tIPV6_CHECKSUM                  = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS    = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP    = 0x1\n\tIPV6_DEFHLIM                   = 0x40\n\tIPV6_DONTFRAG                  = 0x3e\n\tIPV6_DSTOPTS                   = 0x32\n\tIPV6_FLOWID                    = 0x43\n\tIPV6_FLOWINFO_MASK             = 0xffffff0f\n\tIPV6_FLOWLABEL_LEN             = 0x14\n\tIPV6_FLOWLABEL_MASK            = 0xffff0f00\n\tIPV6_FLOWTYPE                  = 0x44\n\tIPV6_FRAGTTL                   = 0x78\n\tIPV6_FW_ADD                    = 0x1e\n\tIPV6_FW_DEL                    = 0x1f\n\tIPV6_FW_FLUSH                  = 0x20\n\tIPV6_FW_GET                    = 0x22\n\tIPV6_FW_ZERO                   = 0x21\n\tIPV6_HLIMDEC                   = 0x1\n\tIPV6_HOPLIMIT                  = 0x2f\n\tIPV6_HOPOPTS                   = 0x31\n\tIPV6_IPSEC_POLICY              = 0x1c\n\tIPV6_JOIN_GROUP                = 0xc\n\tIPV6_LEAVE_GROUP               = 0xd\n\tIPV6_MAXHLIM                   = 0xff\n\tIPV6_MAXOPTHDR                 = 0x800\n\tIPV6_MAXPACKET                 = 0xffff\n\tIPV6_MAX_GROUP_SRC_FILTER      = 0x200\n\tIPV6_MAX_MEMBERSHIPS           = 0xfff\n\tIPV6_MAX_SOCK_SRC_FILTER       = 0x80\n\tIPV6_MMTU                      = 0x500\n\tIPV6_MSFILTER                  = 0x4a\n\tIPV6_MULTICAST_HOPS            = 0xa\n\tIPV6_MULTICAST_IF              = 0x9\n\tIPV6_MULTICAST_LOOP            = 0xb\n\tIPV6_NEXTHOP                   = 0x30\n\tIPV6_ORIGDSTADDR               = 0x48\n\tIPV6_PATHMTU                   = 0x2c\n\tIPV6_PKTINFO                   = 0x2e\n\tIPV6_PORTRANGE                 = 0xe\n\tIPV6_PORTRANGE_DEFAULT         = 0x0\n\tIPV6_PORTRANGE_HIGH            = 0x1\n\tIPV6_PORTRANGE_LOW             = 0x2\n\tIPV6_PREFER_TEMPADDR           = 0x3f\n\tIPV6_RECVDSTOPTS               = 0x28\n\tIPV6_RECVFLOWID                = 0x46\n\tIPV6_RECVHOPLIMIT              = 0x25\n\tIPV6_RECVHOPOPTS               = 0x27\n\tIPV6_RECVORIGDSTADDR           = 0x48\n\tIPV6_RECVPATHMTU               = 0x2b\n\tIPV6_RECVPKTINFO               = 0x24\n\tIPV6_RECVRSSBUCKETID           = 0x47\n\tIPV6_RECVRTHDR                 = 0x26\n\tIPV6_RECVTCLASS                = 0x39\n\tIPV6_RSSBUCKETID               = 0x45\n\tIPV6_RSS_LISTEN_BUCKET         = 0x42\n\tIPV6_RTHDR                     = 0x33\n\tIPV6_RTHDRDSTOPTS              = 0x23\n\tIPV6_RTHDR_LOOSE               = 0x0\n\tIPV6_RTHDR_STRICT              = 0x1\n\tIPV6_RTHDR_TYPE_0              = 0x0\n\tIPV6_SOCKOPT_RESERVED1         = 0x3\n\tIPV6_TCLASS                    = 0x3d\n\tIPV6_UNICAST_HOPS              = 0x4\n\tIPV6_USE_MIN_MTU               = 0x2a\n\tIPV6_V6ONLY                    = 0x1b\n\tIPV6_VERSION                   = 0x60\n\tIPV6_VERSION_MASK              = 0xf0\n\tIPV6_VLAN_PCP                  = 0x4b\n\tIP_ADD_MEMBERSHIP              = 0xc\n\tIP_ADD_SOURCE_MEMBERSHIP       = 0x46\n\tIP_BINDANY                     = 0x18\n\tIP_BINDMULTI                   = 0x19\n\tIP_BLOCK_SOURCE                = 0x48\n\tIP_DEFAULT_MULTICAST_LOOP      = 0x1\n\tIP_DEFAULT_MULTICAST_TTL       = 0x1\n\tIP_DF                          = 0x4000\n\tIP_DONTFRAG                    = 0x43\n\tIP_DROP_MEMBERSHIP             = 0xd\n\tIP_DROP_SOURCE_MEMBERSHIP      = 0x47\n\tIP_DUMMYNET3                   = 0x31\n\tIP_DUMMYNET_CONFIGURE          = 0x3c\n\tIP_DUMMYNET_DEL                = 0x3d\n\tIP_DUMMYNET_FLUSH              = 0x3e\n\tIP_DUMMYNET_GET                = 0x40\n\tIP_FLOWID                      = 0x5a\n\tIP_FLOWTYPE                    = 0x5b\n\tIP_FW3                         = 0x30\n\tIP_FW_ADD                      = 0x32\n\tIP_FW_DEL                      = 0x33\n\tIP_FW_FLUSH                    = 0x34\n\tIP_FW_GET                      = 0x36\n\tIP_FW_NAT_CFG                  = 0x38\n\tIP_FW_NAT_DEL                  = 0x39\n\tIP_FW_NAT_GET_CONFIG           = 0x3a\n\tIP_FW_NAT_GET_LOG              = 0x3b\n\tIP_FW_RESETLOG                 = 0x37\n\tIP_FW_TABLE_ADD                = 0x28\n\tIP_FW_TABLE_DEL                = 0x29\n\tIP_FW_TABLE_FLUSH              = 0x2a\n\tIP_FW_TABLE_GETSIZE            = 0x2b\n\tIP_FW_TABLE_LIST               = 0x2c\n\tIP_FW_ZERO                     = 0x35\n\tIP_HDRINCL                     = 0x2\n\tIP_IPSEC_POLICY                = 0x15\n\tIP_MAXPACKET                   = 0xffff\n\tIP_MAX_GROUP_SRC_FILTER        = 0x200\n\tIP_MAX_MEMBERSHIPS             = 0xfff\n\tIP_MAX_SOCK_MUTE_FILTER        = 0x80\n\tIP_MAX_SOCK_SRC_FILTER         = 0x80\n\tIP_MF                          = 0x2000\n\tIP_MINTTL                      = 0x42\n\tIP_MSFILTER                    = 0x4a\n\tIP_MSS                         = 0x240\n\tIP_MULTICAST_IF                = 0x9\n\tIP_MULTICAST_LOOP              = 0xb\n\tIP_MULTICAST_TTL               = 0xa\n\tIP_MULTICAST_VIF               = 0xe\n\tIP_OFFMASK                     = 0x1fff\n\tIP_ONESBCAST                   = 0x17\n\tIP_OPTIONS                     = 0x1\n\tIP_ORIGDSTADDR                 = 0x1b\n\tIP_PORTRANGE                   = 0x13\n\tIP_PORTRANGE_DEFAULT           = 0x0\n\tIP_PORTRANGE_HIGH              = 0x1\n\tIP_PORTRANGE_LOW               = 0x2\n\tIP_RECVDSTADDR                 = 0x7\n\tIP_RECVFLOWID                  = 0x5d\n\tIP_RECVIF                      = 0x14\n\tIP_RECVOPTS                    = 0x5\n\tIP_RECVORIGDSTADDR             = 0x1b\n\tIP_RECVRETOPTS                 = 0x6\n\tIP_RECVRSSBUCKETID             = 0x5e\n\tIP_RECVTOS                     = 0x44\n\tIP_RECVTTL                     = 0x41\n\tIP_RETOPTS                     = 0x8\n\tIP_RF                          = 0x8000\n\tIP_RSSBUCKETID                 = 0x5c\n\tIP_RSS_LISTEN_BUCKET           = 0x1a\n\tIP_RSVP_OFF                    = 0x10\n\tIP_RSVP_ON                     = 0xf\n\tIP_RSVP_VIF_OFF                = 0x12\n\tIP_RSVP_VIF_ON                 = 0x11\n\tIP_SENDSRCADDR                 = 0x7\n\tIP_TOS                         = 0x3\n\tIP_TTL                         = 0x4\n\tIP_UNBLOCK_SOURCE              = 0x49\n\tIP_VLAN_PCP                    = 0x4b\n\tISIG                           = 0x80\n\tISTRIP                         = 0x20\n\tITIMER_PROF                    = 0x2\n\tITIMER_REAL                    = 0x0\n\tITIMER_VIRTUAL                 = 0x1\n\tIXANY                          = 0x800\n\tIXOFF                          = 0x400\n\tIXON                           = 0x200\n\tKERN_HOSTNAME                  = 0xa\n\tKERN_OSRELEASE                 = 0x2\n\tKERN_OSTYPE                    = 0x1\n\tKERN_VERSION                   = 0x4\n\tLOCAL_CONNWAIT                 = 0x4\n\tLOCAL_CREDS                    = 0x2\n\tLOCAL_PEERCRED                 = 0x1\n\tLOCAL_VENDOR                   = 0x80000000\n\tLOCK_EX                        = 0x2\n\tLOCK_NB                        = 0x4\n\tLOCK_SH                        = 0x1\n\tLOCK_UN                        = 0x8\n\tMADV_AUTOSYNC                  = 0x7\n\tMADV_CORE                      = 0x9\n\tMADV_DONTNEED                  = 0x4\n\tMADV_FREE                      = 0x5\n\tMADV_NOCORE                    = 0x8\n\tMADV_NORMAL                    = 0x0\n\tMADV_NOSYNC                    = 0x6\n\tMADV_PROTECT                   = 0xa\n\tMADV_RANDOM                    = 0x1\n\tMADV_SEQUENTIAL                = 0x2\n\tMADV_WILLNEED                  = 0x3\n\tMAP_32BIT                      = 0x80000\n\tMAP_ALIGNED_SUPER              = 0x1000000\n\tMAP_ALIGNMENT_MASK             = -0x1000000\n\tMAP_ALIGNMENT_SHIFT            = 0x18\n\tMAP_ANON                       = 0x1000\n\tMAP_ANONYMOUS                  = 0x1000\n\tMAP_COPY                       = 0x2\n\tMAP_EXCL                       = 0x4000\n\tMAP_FILE                       = 0x0\n\tMAP_FIXED                      = 0x10\n\tMAP_GUARD                      = 0x2000\n\tMAP_HASSEMAPHORE               = 0x200\n\tMAP_NOCORE                     = 0x20000\n\tMAP_NOSYNC                     = 0x800\n\tMAP_PREFAULT_READ              = 0x40000\n\tMAP_PRIVATE                    = 0x2\n\tMAP_RESERVED0020               = 0x20\n\tMAP_RESERVED0040               = 0x40\n\tMAP_RESERVED0080               = 0x80\n\tMAP_RESERVED0100               = 0x100\n\tMAP_SHARED                     = 0x1\n\tMAP_STACK                      = 0x400\n\tMCAST_BLOCK_SOURCE             = 0x54\n\tMCAST_EXCLUDE                  = 0x2\n\tMCAST_INCLUDE                  = 0x1\n\tMCAST_JOIN_GROUP               = 0x50\n\tMCAST_JOIN_SOURCE_GROUP        = 0x52\n\tMCAST_LEAVE_GROUP              = 0x51\n\tMCAST_LEAVE_SOURCE_GROUP       = 0x53\n\tMCAST_UNBLOCK_SOURCE           = 0x55\n\tMCAST_UNDEFINED                = 0x0\n\tMCL_CURRENT                    = 0x1\n\tMCL_FUTURE                     = 0x2\n\tMNT_ACLS                       = 0x8000000\n\tMNT_ASYNC                      = 0x40\n\tMNT_AUTOMOUNTED                = 0x200000000\n\tMNT_BYFSID                     = 0x8000000\n\tMNT_CMDFLAGS                   = 0xd0f0000\n\tMNT_DEFEXPORTED                = 0x200\n\tMNT_DELEXPORT                  = 0x20000\n\tMNT_EXKERB                     = 0x800\n\tMNT_EXPORTANON                 = 0x400\n\tMNT_EXPORTED                   = 0x100\n\tMNT_EXPUBLIC                   = 0x20000000\n\tMNT_EXRDONLY                   = 0x80\n\tMNT_FORCE                      = 0x80000\n\tMNT_GJOURNAL                   = 0x2000000\n\tMNT_IGNORE                     = 0x800000\n\tMNT_LAZY                       = 0x3\n\tMNT_LOCAL                      = 0x1000\n\tMNT_MULTILABEL                 = 0x4000000\n\tMNT_NFS4ACLS                   = 0x10\n\tMNT_NOATIME                    = 0x10000000\n\tMNT_NOCLUSTERR                 = 0x40000000\n\tMNT_NOCLUSTERW                 = 0x80000000\n\tMNT_NOEXEC                     = 0x4\n\tMNT_NONBUSY                    = 0x4000000\n\tMNT_NOSUID                     = 0x8\n\tMNT_NOSYMFOLLOW                = 0x400000\n\tMNT_NOWAIT                     = 0x2\n\tMNT_QUOTA                      = 0x2000\n\tMNT_RDONLY                     = 0x1\n\tMNT_RELOAD                     = 0x40000\n\tMNT_ROOTFS                     = 0x4000\n\tMNT_SNAPSHOT                   = 0x1000000\n\tMNT_SOFTDEP                    = 0x200000\n\tMNT_SUIDDIR                    = 0x100000\n\tMNT_SUJ                        = 0x100000000\n\tMNT_SUSPEND                    = 0x4\n\tMNT_SYNCHRONOUS                = 0x2\n\tMNT_UNION                      = 0x20\n\tMNT_UNTRUSTED                  = 0x800000000\n\tMNT_UPDATE                     = 0x10000\n\tMNT_UPDATEMASK                 = 0xad8d0807e\n\tMNT_USER                       = 0x8000\n\tMNT_VERIFIED                   = 0x400000000\n\tMNT_VISFLAGMASK                = 0xffef0ffff\n\tMNT_WAIT                       = 0x1\n\tMSG_CMSG_CLOEXEC               = 0x40000\n\tMSG_COMPAT                     = 0x8000\n\tMSG_CTRUNC                     = 0x20\n\tMSG_DONTROUTE                  = 0x4\n\tMSG_DONTWAIT                   = 0x80\n\tMSG_EOF                        = 0x100\n\tMSG_EOR                        = 0x8\n\tMSG_NBIO                       = 0x4000\n\tMSG_NOSIGNAL                   = 0x20000\n\tMSG_NOTIFICATION               = 0x2000\n\tMSG_OOB                        = 0x1\n\tMSG_PEEK                       = 0x2\n\tMSG_TRUNC                      = 0x10\n\tMSG_WAITALL                    = 0x40\n\tMSG_WAITFORONE                 = 0x80000\n\tMS_ASYNC                       = 0x1\n\tMS_INVALIDATE                  = 0x2\n\tMS_SYNC                        = 0x0\n\tNAME_MAX                       = 0xff\n\tNET_RT_DUMP                    = 0x1\n\tNET_RT_FLAGS                   = 0x2\n\tNET_RT_IFLIST                  = 0x3\n\tNET_RT_IFLISTL                 = 0x5\n\tNET_RT_IFMALIST                = 0x4\n\tNFDBITS                        = 0x40\n\tNOFLSH                         = 0x80000000\n\tNOKERNINFO                     = 0x2000000\n\tNOTE_ABSTIME                   = 0x10\n\tNOTE_ATTRIB                    = 0x8\n\tNOTE_CHILD                     = 0x4\n\tNOTE_CLOSE                     = 0x100\n\tNOTE_CLOSE_WRITE               = 0x200\n\tNOTE_DELETE                    = 0x1\n\tNOTE_EXEC                      = 0x20000000\n\tNOTE_EXIT                      = 0x80000000\n\tNOTE_EXTEND                    = 0x4\n\tNOTE_FFAND                     = 0x40000000\n\tNOTE_FFCOPY                    = 0xc0000000\n\tNOTE_FFCTRLMASK                = 0xc0000000\n\tNOTE_FFLAGSMASK                = 0xffffff\n\tNOTE_FFNOP                     = 0x0\n\tNOTE_FFOR                      = 0x80000000\n\tNOTE_FILE_POLL                 = 0x2\n\tNOTE_FORK                      = 0x40000000\n\tNOTE_LINK                      = 0x10\n\tNOTE_LOWAT                     = 0x1\n\tNOTE_MSECONDS                  = 0x2\n\tNOTE_NSECONDS                  = 0x8\n\tNOTE_OPEN                      = 0x80\n\tNOTE_PCTRLMASK                 = 0xf0000000\n\tNOTE_PDATAMASK                 = 0xfffff\n\tNOTE_READ                      = 0x400\n\tNOTE_RENAME                    = 0x20\n\tNOTE_REVOKE                    = 0x40\n\tNOTE_SECONDS                   = 0x1\n\tNOTE_TRACK                     = 0x1\n\tNOTE_TRACKERR                  = 0x2\n\tNOTE_TRIGGER                   = 0x1000000\n\tNOTE_USECONDS                  = 0x4\n\tNOTE_WRITE                     = 0x2\n\tOCRNL                          = 0x10\n\tONLCR                          = 0x2\n\tONLRET                         = 0x40\n\tONOCR                          = 0x20\n\tONOEOT                         = 0x8\n\tOPOST                          = 0x1\n\tOXTABS                         = 0x4\n\tO_ACCMODE                      = 0x3\n\tO_APPEND                       = 0x8\n\tO_ASYNC                        = 0x40\n\tO_CLOEXEC                      = 0x100000\n\tO_CREAT                        = 0x200\n\tO_DIRECT                       = 0x10000\n\tO_DIRECTORY                    = 0x20000\n\tO_EXCL                         = 0x800\n\tO_EXEC                         = 0x40000\n\tO_EXLOCK                       = 0x20\n\tO_FSYNC                        = 0x80\n\tO_NDELAY                       = 0x4\n\tO_NOCTTY                       = 0x8000\n\tO_NOFOLLOW                     = 0x100\n\tO_NONBLOCK                     = 0x4\n\tO_RDONLY                       = 0x0\n\tO_RDWR                         = 0x2\n\tO_RESOLVE_BENEATH              = 0x800000\n\tO_SEARCH                       = 0x40000\n\tO_SHLOCK                       = 0x10\n\tO_SYNC                         = 0x80\n\tO_TRUNC                        = 0x400\n\tO_TTY_INIT                     = 0x80000\n\tO_VERIFY                       = 0x200000\n\tO_WRONLY                       = 0x1\n\tPARENB                         = 0x1000\n\tPARMRK                         = 0x8\n\tPARODD                         = 0x2000\n\tPENDIN                         = 0x20000000\n\tPIOD_READ_D                    = 0x1\n\tPIOD_READ_I                    = 0x3\n\tPIOD_WRITE_D                   = 0x2\n\tPIOD_WRITE_I                   = 0x4\n\tPRIO_PGRP                      = 0x1\n\tPRIO_PROCESS                   = 0x0\n\tPRIO_USER                      = 0x2\n\tPROT_EXEC                      = 0x4\n\tPROT_NONE                      = 0x0\n\tPROT_READ                      = 0x1\n\tPROT_WRITE                     = 0x2\n\tPTRACE_DEFAULT                 = 0x1\n\tPTRACE_EXEC                    = 0x1\n\tPTRACE_FORK                    = 0x8\n\tPTRACE_LWP                     = 0x10\n\tPTRACE_SCE                     = 0x2\n\tPTRACE_SCX                     = 0x4\n\tPTRACE_SYSCALL                 = 0x6\n\tPTRACE_VFORK                   = 0x20\n\tPT_ATTACH                      = 0xa\n\tPT_CLEARSTEP                   = 0x10\n\tPT_CONTINUE                    = 0x7\n\tPT_DETACH                      = 0xb\n\tPT_FIRSTMACH                   = 0x40\n\tPT_FOLLOW_FORK                 = 0x17\n\tPT_GETDBREGS                   = 0x25\n\tPT_GETFPREGS                   = 0x23\n\tPT_GETFSBASE                   = 0x47\n\tPT_GETGSBASE                   = 0x49\n\tPT_GETLWPLIST                  = 0xf\n\tPT_GETNUMLWPS                  = 0xe\n\tPT_GETREGS                     = 0x21\n\tPT_GETXSTATE                   = 0x45\n\tPT_GETXSTATE_INFO              = 0x44\n\tPT_GET_EVENT_MASK              = 0x19\n\tPT_GET_SC_ARGS                 = 0x1b\n\tPT_GET_SC_RET                  = 0x1c\n\tPT_IO                          = 0xc\n\tPT_KILL                        = 0x8\n\tPT_LWPINFO                     = 0xd\n\tPT_LWP_EVENTS                  = 0x18\n\tPT_READ_D                      = 0x2\n\tPT_READ_I                      = 0x1\n\tPT_RESUME                      = 0x13\n\tPT_SETDBREGS                   = 0x26\n\tPT_SETFPREGS                   = 0x24\n\tPT_SETFSBASE                   = 0x48\n\tPT_SETGSBASE                   = 0x4a\n\tPT_SETREGS                     = 0x22\n\tPT_SETSTEP                     = 0x11\n\tPT_SETXSTATE                   = 0x46\n\tPT_SET_EVENT_MASK              = 0x1a\n\tPT_STEP                        = 0x9\n\tPT_SUSPEND                     = 0x12\n\tPT_SYSCALL                     = 0x16\n\tPT_TO_SCE                      = 0x14\n\tPT_TO_SCX                      = 0x15\n\tPT_TRACE_ME                    = 0x0\n\tPT_VM_ENTRY                    = 0x29\n\tPT_VM_TIMESTAMP                = 0x28\n\tPT_WRITE_D                     = 0x5\n\tPT_WRITE_I                     = 0x4\n\tP_ZONEID                       = 0xc\n\tRLIMIT_AS                      = 0xa\n\tRLIMIT_CORE                    = 0x4\n\tRLIMIT_CPU                     = 0x0\n\tRLIMIT_DATA                    = 0x2\n\tRLIMIT_FSIZE                   = 0x1\n\tRLIMIT_MEMLOCK                 = 0x6\n\tRLIMIT_NOFILE                  = 0x8\n\tRLIMIT_NPROC                   = 0x7\n\tRLIMIT_RSS                     = 0x5\n\tRLIMIT_STACK                   = 0x3\n\tRLIM_INFINITY                  = 0x7fffffffffffffff\n\tRTAX_AUTHOR                    = 0x6\n\tRTAX_BRD                       = 0x7\n\tRTAX_DST                       = 0x0\n\tRTAX_GATEWAY                   = 0x1\n\tRTAX_GENMASK                   = 0x3\n\tRTAX_IFA                       = 0x5\n\tRTAX_IFP                       = 0x4\n\tRTAX_MAX                       = 0x8\n\tRTAX_NETMASK                   = 0x2\n\tRTA_AUTHOR                     = 0x40\n\tRTA_BRD                        = 0x80\n\tRTA_DST                        = 0x1\n\tRTA_GATEWAY                    = 0x2\n\tRTA_GENMASK                    = 0x8\n\tRTA_IFA                        = 0x20\n\tRTA_IFP                        = 0x10\n\tRTA_NETMASK                    = 0x4\n\tRTF_BLACKHOLE                  = 0x1000\n\tRTF_BROADCAST                  = 0x400000\n\tRTF_DONE                       = 0x40\n\tRTF_DYNAMIC                    = 0x10\n\tRTF_FIXEDMTU                   = 0x80000\n\tRTF_FMASK                      = 0x1004d808\n\tRTF_GATEWAY                    = 0x2\n\tRTF_GWFLAG_COMPAT              = 0x80000000\n\tRTF_HOST                       = 0x4\n\tRTF_LLDATA                     = 0x400\n\tRTF_LLINFO                     = 0x400\n\tRTF_LOCAL                      = 0x200000\n\tRTF_MODIFIED                   = 0x20\n\tRTF_MULTICAST                  = 0x800000\n\tRTF_PINNED                     = 0x100000\n\tRTF_PROTO1                     = 0x8000\n\tRTF_PROTO2                     = 0x4000\n\tRTF_PROTO3                     = 0x40000\n\tRTF_REJECT                     = 0x8\n\tRTF_RNH_LOCKED                 = 0x40000000\n\tRTF_STATIC                     = 0x800\n\tRTF_STICKY                     = 0x10000000\n\tRTF_UP                         = 0x1\n\tRTF_XRESOLVE                   = 0x200\n\tRTM_ADD                        = 0x1\n\tRTM_CHANGE                     = 0x3\n\tRTM_DELADDR                    = 0xd\n\tRTM_DELETE                     = 0x2\n\tRTM_DELMADDR                   = 0x10\n\tRTM_GET                        = 0x4\n\tRTM_IEEE80211                  = 0x12\n\tRTM_IFANNOUNCE                 = 0x11\n\tRTM_IFINFO                     = 0xe\n\tRTM_LOCK                       = 0x8\n\tRTM_LOSING                     = 0x5\n\tRTM_MISS                       = 0x7\n\tRTM_NEWADDR                    = 0xc\n\tRTM_NEWMADDR                   = 0xf\n\tRTM_REDIRECT                   = 0x6\n\tRTM_RESOLVE                    = 0xb\n\tRTM_RTTUNIT                    = 0xf4240\n\tRTM_VERSION                    = 0x5\n\tRTV_EXPIRE                     = 0x4\n\tRTV_HOPCOUNT                   = 0x2\n\tRTV_MTU                        = 0x1\n\tRTV_RPIPE                      = 0x8\n\tRTV_RTT                        = 0x40\n\tRTV_RTTVAR                     = 0x80\n\tRTV_SPIPE                      = 0x10\n\tRTV_SSTHRESH                   = 0x20\n\tRTV_WEIGHT                     = 0x100\n\tRT_ALL_FIBS                    = -0x1\n\tRT_BLACKHOLE                   = 0x40\n\tRT_DEFAULT_FIB                 = 0x0\n\tRT_HAS_GW                      = 0x80\n\tRT_HAS_HEADER                  = 0x10\n\tRT_HAS_HEADER_BIT              = 0x4\n\tRT_L2_ME                       = 0x4\n\tRT_L2_ME_BIT                   = 0x2\n\tRT_LLE_CACHE                   = 0x100\n\tRT_MAY_LOOP                    = 0x8\n\tRT_MAY_LOOP_BIT                = 0x3\n\tRT_REJECT                      = 0x20\n\tRUSAGE_CHILDREN                = -0x1\n\tRUSAGE_SELF                    = 0x0\n\tRUSAGE_THREAD                  = 0x1\n\tSCM_BINTIME                    = 0x4\n\tSCM_CREDS                      = 0x3\n\tSCM_MONOTONIC                  = 0x6\n\tSCM_REALTIME                   = 0x5\n\tSCM_RIGHTS                     = 0x1\n\tSCM_TIMESTAMP                  = 0x2\n\tSCM_TIME_INFO                  = 0x7\n\tSEEK_CUR                       = 0x1\n\tSEEK_DATA                      = 0x3\n\tSEEK_END                       = 0x2\n\tSEEK_HOLE                      = 0x4\n\tSEEK_SET                       = 0x0\n\tSHUT_RD                        = 0x0\n\tSHUT_RDWR                      = 0x2\n\tSHUT_WR                        = 0x1\n\tSIOCADDMULTI                   = 0x80206931\n\tSIOCAIFADDR                    = 0x8040691a\n\tSIOCAIFGROUP                   = 0x80286987\n\tSIOCATMARK                     = 0x40047307\n\tSIOCDELMULTI                   = 0x80206932\n\tSIOCDIFADDR                    = 0x80206919\n\tSIOCDIFGROUP                   = 0x80286989\n\tSIOCDIFPHYADDR                 = 0x80206949\n\tSIOCGDRVSPEC                   = 0xc028697b\n\tSIOCGETSGCNT                   = 0xc0207210\n\tSIOCGETVIFCNT                  = 0xc028720f\n\tSIOCGHIWAT                     = 0x40047301\n\tSIOCGHWADDR                    = 0xc020693e\n\tSIOCGI2C                       = 0xc020693d\n\tSIOCGIFADDR                    = 0xc0206921\n\tSIOCGIFALIAS                   = 0xc044692d\n\tSIOCGIFBRDADDR                 = 0xc0206923\n\tSIOCGIFCAP                     = 0xc020691f\n\tSIOCGIFCONF                    = 0xc0106924\n\tSIOCGIFDESCR                   = 0xc020692a\n\tSIOCGIFDOWNREASON              = 0xc058699a\n\tSIOCGIFDSTADDR                 = 0xc0206922\n\tSIOCGIFFIB                     = 0xc020695c\n\tSIOCGIFFLAGS                   = 0xc0206911\n\tSIOCGIFGENERIC                 = 0xc020693a\n\tSIOCGIFGMEMB                   = 0xc028698a\n\tSIOCGIFGROUP                   = 0xc0286988\n\tSIOCGIFINDEX                   = 0xc0206920\n\tSIOCGIFMAC                     = 0xc0206926\n\tSIOCGIFMEDIA                   = 0xc0306938\n\tSIOCGIFMETRIC                  = 0xc0206917\n\tSIOCGIFMTU                     = 0xc0206933\n\tSIOCGIFNETMASK                 = 0xc0206925\n\tSIOCGIFPDSTADDR                = 0xc0206948\n\tSIOCGIFPHYS                    = 0xc0206935\n\tSIOCGIFPSRCADDR                = 0xc0206947\n\tSIOCGIFRSSHASH                 = 0xc0186997\n\tSIOCGIFRSSKEY                  = 0xc0946996\n\tSIOCGIFSTATUS                  = 0xc331693b\n\tSIOCGIFXMEDIA                  = 0xc030698b\n\tSIOCGLANPCP                    = 0xc0206998\n\tSIOCGLOWAT                     = 0x40047303\n\tSIOCGPGRP                      = 0x40047309\n\tSIOCGPRIVATE_0                 = 0xc0206950\n\tSIOCGPRIVATE_1                 = 0xc0206951\n\tSIOCGTUNFIB                    = 0xc020695e\n\tSIOCIFCREATE                   = 0xc020697a\n\tSIOCIFCREATE2                  = 0xc020697c\n\tSIOCIFDESTROY                  = 0x80206979\n\tSIOCIFGCLONERS                 = 0xc0106978\n\tSIOCSDRVSPEC                   = 0x8028697b\n\tSIOCSHIWAT                     = 0x80047300\n\tSIOCSIFADDR                    = 0x8020690c\n\tSIOCSIFBRDADDR                 = 0x80206913\n\tSIOCSIFCAP                     = 0x8020691e\n\tSIOCSIFDESCR                   = 0x80206929\n\tSIOCSIFDSTADDR                 = 0x8020690e\n\tSIOCSIFFIB                     = 0x8020695d\n\tSIOCSIFFLAGS                   = 0x80206910\n\tSIOCSIFGENERIC                 = 0x80206939\n\tSIOCSIFLLADDR                  = 0x8020693c\n\tSIOCSIFMAC                     = 0x80206927\n\tSIOCSIFMEDIA                   = 0xc0206937\n\tSIOCSIFMETRIC                  = 0x80206918\n\tSIOCSIFMTU                     = 0x80206934\n\tSIOCSIFNAME                    = 0x80206928\n\tSIOCSIFNETMASK                 = 0x80206916\n\tSIOCSIFPHYADDR                 = 0x80406946\n\tSIOCSIFPHYS                    = 0x80206936\n\tSIOCSIFRVNET                   = 0xc020695b\n\tSIOCSIFVNET                    = 0xc020695a\n\tSIOCSLANPCP                    = 0x80206999\n\tSIOCSLOWAT                     = 0x80047302\n\tSIOCSPGRP                      = 0x80047308\n\tSIOCSTUNFIB                    = 0x8020695f\n\tSOCK_CLOEXEC                   = 0x10000000\n\tSOCK_DGRAM                     = 0x2\n\tSOCK_MAXADDRLEN                = 0xff\n\tSOCK_NONBLOCK                  = 0x20000000\n\tSOCK_RAW                       = 0x3\n\tSOCK_RDM                       = 0x4\n\tSOCK_SEQPACKET                 = 0x5\n\tSOCK_STREAM                    = 0x1\n\tSOL_LOCAL                      = 0x0\n\tSOL_SOCKET                     = 0xffff\n\tSOMAXCONN                      = 0x80\n\tSO_ACCEPTCONN                  = 0x2\n\tSO_ACCEPTFILTER                = 0x1000\n\tSO_BINTIME                     = 0x2000\n\tSO_BROADCAST                   = 0x20\n\tSO_DEBUG                       = 0x1\n\tSO_DOMAIN                      = 0x1019\n\tSO_DONTROUTE                   = 0x10\n\tSO_ERROR                       = 0x1007\n\tSO_KEEPALIVE                   = 0x8\n\tSO_LABEL                       = 0x1009\n\tSO_LINGER                      = 0x80\n\tSO_LISTENINCQLEN               = 0x1013\n\tSO_LISTENQLEN                  = 0x1012\n\tSO_LISTENQLIMIT                = 0x1011\n\tSO_MAX_PACING_RATE             = 0x1018\n\tSO_NOSIGPIPE                   = 0x800\n\tSO_NO_DDP                      = 0x8000\n\tSO_NO_OFFLOAD                  = 0x4000\n\tSO_OOBINLINE                   = 0x100\n\tSO_PEERLABEL                   = 0x1010\n\tSO_PROTOCOL                    = 0x1016\n\tSO_PROTOTYPE                   = 0x1016\n\tSO_RCVBUF                      = 0x1002\n\tSO_RCVLOWAT                    = 0x1004\n\tSO_RCVTIMEO                    = 0x1006\n\tSO_RERROR                      = 0x20000\n\tSO_REUSEADDR                   = 0x4\n\tSO_REUSEPORT                   = 0x200\n\tSO_REUSEPORT_LB                = 0x10000\n\tSO_SETFIB                      = 0x1014\n\tSO_SNDBUF                      = 0x1001\n\tSO_SNDLOWAT                    = 0x1003\n\tSO_SNDTIMEO                    = 0x1005\n\tSO_TIMESTAMP                   = 0x400\n\tSO_TS_BINTIME                  = 0x1\n\tSO_TS_CLOCK                    = 0x1017\n\tSO_TS_CLOCK_MAX                = 0x3\n\tSO_TS_DEFAULT                  = 0x0\n\tSO_TS_MONOTONIC                = 0x3\n\tSO_TS_REALTIME                 = 0x2\n\tSO_TS_REALTIME_MICRO           = 0x0\n\tSO_TYPE                        = 0x1008\n\tSO_USELOOPBACK                 = 0x40\n\tSO_USER_COOKIE                 = 0x1015\n\tSO_VENDOR                      = 0x80000000\n\tS_BLKSIZE                      = 0x200\n\tS_IEXEC                        = 0x40\n\tS_IFBLK                        = 0x6000\n\tS_IFCHR                        = 0x2000\n\tS_IFDIR                        = 0x4000\n\tS_IFIFO                        = 0x1000\n\tS_IFLNK                        = 0xa000\n\tS_IFMT                         = 0xf000\n\tS_IFREG                        = 0x8000\n\tS_IFSOCK                       = 0xc000\n\tS_IFWHT                        = 0xe000\n\tS_IREAD                        = 0x100\n\tS_IRGRP                        = 0x20\n\tS_IROTH                        = 0x4\n\tS_IRUSR                        = 0x100\n\tS_IRWXG                        = 0x38\n\tS_IRWXO                        = 0x7\n\tS_IRWXU                        = 0x1c0\n\tS_ISGID                        = 0x400\n\tS_ISTXT                        = 0x200\n\tS_ISUID                        = 0x800\n\tS_ISVTX                        = 0x200\n\tS_IWGRP                        = 0x10\n\tS_IWOTH                        = 0x2\n\tS_IWRITE                       = 0x80\n\tS_IWUSR                        = 0x80\n\tS_IXGRP                        = 0x8\n\tS_IXOTH                        = 0x1\n\tS_IXUSR                        = 0x40\n\tTAB0                           = 0x0\n\tTAB3                           = 0x4\n\tTABDLY                         = 0x4\n\tTCIFLUSH                       = 0x1\n\tTCIOFF                         = 0x3\n\tTCIOFLUSH                      = 0x3\n\tTCION                          = 0x4\n\tTCOFLUSH                       = 0x2\n\tTCOOFF                         = 0x1\n\tTCOON                          = 0x2\n\tTCPOPT_EOL                     = 0x0\n\tTCPOPT_FAST_OPEN               = 0x22\n\tTCPOPT_MAXSEG                  = 0x2\n\tTCPOPT_NOP                     = 0x1\n\tTCPOPT_PAD                     = 0x0\n\tTCPOPT_SACK                    = 0x5\n\tTCPOPT_SACK_PERMITTED          = 0x4\n\tTCPOPT_SIGNATURE               = 0x13\n\tTCPOPT_TIMESTAMP               = 0x8\n\tTCPOPT_WINDOW                  = 0x3\n\tTCP_BBR_ACK_COMP_ALG           = 0x448\n\tTCP_BBR_ALGORITHM              = 0x43b\n\tTCP_BBR_DRAIN_INC_EXTRA        = 0x43c\n\tTCP_BBR_DRAIN_PG               = 0x42e\n\tTCP_BBR_EXTRA_GAIN             = 0x449\n\tTCP_BBR_EXTRA_STATE            = 0x453\n\tTCP_BBR_FLOOR_MIN_TSO          = 0x454\n\tTCP_BBR_HDWR_PACE              = 0x451\n\tTCP_BBR_HOLD_TARGET            = 0x436\n\tTCP_BBR_IWINTSO                = 0x42b\n\tTCP_BBR_LOWGAIN_FD             = 0x436\n\tTCP_BBR_LOWGAIN_HALF           = 0x435\n\tTCP_BBR_LOWGAIN_THRESH         = 0x434\n\tTCP_BBR_MAX_RTO                = 0x439\n\tTCP_BBR_MIN_RTO                = 0x438\n\tTCP_BBR_MIN_TOPACEOUT          = 0x455\n\tTCP_BBR_ONE_RETRAN             = 0x431\n\tTCP_BBR_PACE_CROSS             = 0x442\n\tTCP_BBR_PACE_DEL_TAR           = 0x43f\n\tTCP_BBR_PACE_OH                = 0x435\n\tTCP_BBR_PACE_PER_SEC           = 0x43e\n\tTCP_BBR_PACE_SEG_MAX           = 0x440\n\tTCP_BBR_PACE_SEG_MIN           = 0x441\n\tTCP_BBR_POLICER_DETECT         = 0x457\n\tTCP_BBR_PROBE_RTT_GAIN         = 0x44d\n\tTCP_BBR_PROBE_RTT_INT          = 0x430\n\tTCP_BBR_PROBE_RTT_LEN          = 0x44e\n\tTCP_BBR_RACK_RTT_USE           = 0x44a\n\tTCP_BBR_RECFORCE               = 0x42c\n\tTCP_BBR_REC_OVER_HPTS          = 0x43a\n\tTCP_BBR_RETRAN_WTSO            = 0x44b\n\tTCP_BBR_RWND_IS_APP            = 0x42f\n\tTCP_BBR_SEND_IWND_IN_TSO       = 0x44f\n\tTCP_BBR_STARTUP_EXIT_EPOCH     = 0x43d\n\tTCP_BBR_STARTUP_LOSS_EXIT      = 0x432\n\tTCP_BBR_STARTUP_PG             = 0x42d\n\tTCP_BBR_TMR_PACE_OH            = 0x448\n\tTCP_BBR_TSLIMITS               = 0x434\n\tTCP_BBR_TSTMP_RAISES           = 0x456\n\tTCP_BBR_UNLIMITED              = 0x43b\n\tTCP_BBR_USEDEL_RATE            = 0x437\n\tTCP_BBR_USE_LOWGAIN            = 0x433\n\tTCP_BBR_USE_RACK_CHEAT         = 0x450\n\tTCP_BBR_UTTER_MAX_TSO          = 0x452\n\tTCP_CA_NAME_MAX                = 0x10\n\tTCP_CCALGOOPT                  = 0x41\n\tTCP_CONGESTION                 = 0x40\n\tTCP_DATA_AFTER_CLOSE           = 0x44c\n\tTCP_DELACK                     = 0x48\n\tTCP_FASTOPEN                   = 0x401\n\tTCP_FASTOPEN_MAX_COOKIE_LEN    = 0x10\n\tTCP_FASTOPEN_MIN_COOKIE_LEN    = 0x4\n\tTCP_FASTOPEN_PSK_LEN           = 0x10\n\tTCP_FUNCTION_BLK               = 0x2000\n\tTCP_FUNCTION_NAME_LEN_MAX      = 0x20\n\tTCP_INFO                       = 0x20\n\tTCP_KEEPCNT                    = 0x400\n\tTCP_KEEPIDLE                   = 0x100\n\tTCP_KEEPINIT                   = 0x80\n\tTCP_KEEPINTVL                  = 0x200\n\tTCP_LOG                        = 0x22\n\tTCP_LOGBUF                     = 0x23\n\tTCP_LOGDUMP                    = 0x25\n\tTCP_LOGDUMPID                  = 0x26\n\tTCP_LOGID                      = 0x24\n\tTCP_LOG_ID_LEN                 = 0x40\n\tTCP_MAXBURST                   = 0x4\n\tTCP_MAXHLEN                    = 0x3c\n\tTCP_MAXOLEN                    = 0x28\n\tTCP_MAXSEG                     = 0x2\n\tTCP_MAXWIN                     = 0xffff\n\tTCP_MAX_SACK                   = 0x4\n\tTCP_MAX_WINSHIFT               = 0xe\n\tTCP_MD5SIG                     = 0x10\n\tTCP_MINMSS                     = 0xd8\n\tTCP_MSS                        = 0x218\n\tTCP_NODELAY                    = 0x1\n\tTCP_NOOPT                      = 0x8\n\tTCP_NOPUSH                     = 0x4\n\tTCP_PCAP_IN                    = 0x1000\n\tTCP_PCAP_OUT                   = 0x800\n\tTCP_RACK_EARLY_RECOV           = 0x423\n\tTCP_RACK_EARLY_SEG             = 0x424\n\tTCP_RACK_GP_INCREASE           = 0x446\n\tTCP_RACK_IDLE_REDUCE_HIGH      = 0x444\n\tTCP_RACK_MIN_PACE              = 0x445\n\tTCP_RACK_MIN_PACE_SEG          = 0x446\n\tTCP_RACK_MIN_TO                = 0x422\n\tTCP_RACK_PACE_ALWAYS           = 0x41f\n\tTCP_RACK_PACE_MAX_SEG          = 0x41e\n\tTCP_RACK_PACE_REDUCE           = 0x41d\n\tTCP_RACK_PKT_DELAY             = 0x428\n\tTCP_RACK_PROP                  = 0x41b\n\tTCP_RACK_PROP_RATE             = 0x420\n\tTCP_RACK_PRR_SENDALOT          = 0x421\n\tTCP_RACK_REORD_FADE            = 0x426\n\tTCP_RACK_REORD_THRESH          = 0x425\n\tTCP_RACK_TLP_INC_VAR           = 0x429\n\tTCP_RACK_TLP_REDUCE            = 0x41c\n\tTCP_RACK_TLP_THRESH            = 0x427\n\tTCP_RACK_TLP_USE               = 0x447\n\tTCP_VENDOR                     = 0x80000000\n\tTCSAFLUSH                      = 0x2\n\tTIMER_ABSTIME                  = 0x1\n\tTIMER_RELTIME                  = 0x0\n\tTIOCCBRK                       = 0x2000747a\n\tTIOCCDTR                       = 0x20007478\n\tTIOCCONS                       = 0x80047462\n\tTIOCDRAIN                      = 0x2000745e\n\tTIOCEXCL                       = 0x2000740d\n\tTIOCEXT                        = 0x80047460\n\tTIOCFLUSH                      = 0x80047410\n\tTIOCGDRAINWAIT                 = 0x40047456\n\tTIOCGETA                       = 0x402c7413\n\tTIOCGETD                       = 0x4004741a\n\tTIOCGPGRP                      = 0x40047477\n\tTIOCGPTN                       = 0x4004740f\n\tTIOCGSID                       = 0x40047463\n\tTIOCGWINSZ                     = 0x40087468\n\tTIOCMBIC                       = 0x8004746b\n\tTIOCMBIS                       = 0x8004746c\n\tTIOCMGDTRWAIT                  = 0x4004745a\n\tTIOCMGET                       = 0x4004746a\n\tTIOCMSDTRWAIT                  = 0x8004745b\n\tTIOCMSET                       = 0x8004746d\n\tTIOCM_CAR                      = 0x40\n\tTIOCM_CD                       = 0x40\n\tTIOCM_CTS                      = 0x20\n\tTIOCM_DCD                      = 0x40\n\tTIOCM_DSR                      = 0x100\n\tTIOCM_DTR                      = 0x2\n\tTIOCM_LE                       = 0x1\n\tTIOCM_RI                       = 0x80\n\tTIOCM_RNG                      = 0x80\n\tTIOCM_RTS                      = 0x4\n\tTIOCM_SR                       = 0x10\n\tTIOCM_ST                       = 0x8\n\tTIOCNOTTY                      = 0x20007471\n\tTIOCNXCL                       = 0x2000740e\n\tTIOCOUTQ                       = 0x40047473\n\tTIOCPKT                        = 0x80047470\n\tTIOCPKT_DATA                   = 0x0\n\tTIOCPKT_DOSTOP                 = 0x20\n\tTIOCPKT_FLUSHREAD              = 0x1\n\tTIOCPKT_FLUSHWRITE             = 0x2\n\tTIOCPKT_IOCTL                  = 0x40\n\tTIOCPKT_NOSTOP                 = 0x10\n\tTIOCPKT_START                  = 0x8\n\tTIOCPKT_STOP                   = 0x4\n\tTIOCPTMASTER                   = 0x2000741c\n\tTIOCSBRK                       = 0x2000747b\n\tTIOCSCTTY                      = 0x20007461\n\tTIOCSDRAINWAIT                 = 0x80047457\n\tTIOCSDTR                       = 0x20007479\n\tTIOCSETA                       = 0x802c7414\n\tTIOCSETAF                      = 0x802c7416\n\tTIOCSETAW                      = 0x802c7415\n\tTIOCSETD                       = 0x8004741b\n\tTIOCSIG                        = 0x2004745f\n\tTIOCSPGRP                      = 0x80047476\n\tTIOCSTART                      = 0x2000746e\n\tTIOCSTAT                       = 0x20007465\n\tTIOCSTI                        = 0x80017472\n\tTIOCSTOP                       = 0x2000746f\n\tTIOCSWINSZ                     = 0x80087467\n\tTIOCTIMESTAMP                  = 0x40107459\n\tTIOCUCNTL                      = 0x80047466\n\tTOSTOP                         = 0x400000\n\tUTIME_NOW                      = -0x1\n\tUTIME_OMIT                     = -0x2\n\tVDISCARD                       = 0xf\n\tVDSUSP                         = 0xb\n\tVEOF                           = 0x0\n\tVEOL                           = 0x1\n\tVEOL2                          = 0x2\n\tVERASE                         = 0x3\n\tVERASE2                        = 0x7\n\tVINTR                          = 0x8\n\tVKILL                          = 0x5\n\tVLNEXT                         = 0xe\n\tVMIN                           = 0x10\n\tVQUIT                          = 0x9\n\tVREPRINT                       = 0x6\n\tVSTART                         = 0xc\n\tVSTATUS                        = 0x12\n\tVSTOP                          = 0xd\n\tVSUSP                          = 0xa\n\tVTIME                          = 0x11\n\tVWERASE                        = 0x4\n\tWCONTINUED                     = 0x4\n\tWCOREFLAG                      = 0x80\n\tWEXITED                        = 0x10\n\tWLINUXCLONE                    = 0x80000000\n\tWNOHANG                        = 0x1\n\tWNOWAIT                        = 0x8\n\tWSTOPPED                       = 0x2\n\tWTRAPPED                       = 0x20\n\tWUNTRACED                      = 0x2\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x59)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x55)\n\tECAPMODE        = syscall.Errno(0x5e)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDOOFUS         = syscall.Errno(0x58)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x52)\n\tEILSEQ          = syscall.Errno(0x56)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTEGRITY      = syscall.Errno(0x61)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x61)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5a)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x57)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x5b)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x53)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCAPABLE     = syscall.Errno(0x5d)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5f)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x2d)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEOWNERDEAD      = syscall.Errno(0x60)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5c)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGLIBRT  = syscall.Signal(0x21)\n\tSIGLWP    = syscall.Signal(0x20)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EWOULDBLOCK\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIDRM\", \"identifier removed\"},\n\t{83, \"ENOMSG\", \"no message of desired type\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"ECANCELED\", \"operation canceled\"},\n\t{86, \"EILSEQ\", \"illegal byte sequence\"},\n\t{87, \"ENOATTR\", \"attribute not found\"},\n\t{88, \"EDOOFUS\", \"programming error\"},\n\t{89, \"EBADMSG\", \"bad message\"},\n\t{90, \"EMULTIHOP\", \"multihop attempted\"},\n\t{91, \"ENOLINK\", \"link has been severed\"},\n\t{92, \"EPROTO\", \"protocol error\"},\n\t{93, \"ENOTCAPABLE\", \"capabilities insufficient\"},\n\t{94, \"ECAPMODE\", \"not permitted in capability mode\"},\n\t{95, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{96, \"EOWNERDEAD\", \"previous owner died\"},\n\t{97, \"EINTEGRITY\", \"integrity check failed\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"unknown signal\"},\n\t{33, \"SIGLIBRT\", \"unknown signal\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go",
    "content": "// mkerrors.sh\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm && freebsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                   = 0x10\n\tAF_ARP                         = 0x23\n\tAF_ATM                         = 0x1e\n\tAF_BLUETOOTH                   = 0x24\n\tAF_CCITT                       = 0xa\n\tAF_CHAOS                       = 0x5\n\tAF_CNT                         = 0x15\n\tAF_COIP                        = 0x14\n\tAF_DATAKIT                     = 0x9\n\tAF_DECnet                      = 0xc\n\tAF_DLI                         = 0xd\n\tAF_E164                        = 0x1a\n\tAF_ECMA                        = 0x8\n\tAF_HYLINK                      = 0xf\n\tAF_IEEE80211                   = 0x25\n\tAF_IMPLINK                     = 0x3\n\tAF_INET                        = 0x2\n\tAF_INET6                       = 0x1c\n\tAF_INET6_SDP                   = 0x2a\n\tAF_INET_SDP                    = 0x28\n\tAF_IPX                         = 0x17\n\tAF_ISDN                        = 0x1a\n\tAF_ISO                         = 0x7\n\tAF_LAT                         = 0xe\n\tAF_LINK                        = 0x12\n\tAF_LOCAL                       = 0x1\n\tAF_MAX                         = 0x2a\n\tAF_NATM                        = 0x1d\n\tAF_NETBIOS                     = 0x6\n\tAF_NETGRAPH                    = 0x20\n\tAF_OSI                         = 0x7\n\tAF_PUP                         = 0x4\n\tAF_ROUTE                       = 0x11\n\tAF_SCLUSTER                    = 0x22\n\tAF_SIP                         = 0x18\n\tAF_SLOW                        = 0x21\n\tAF_SNA                         = 0xb\n\tAF_UNIX                        = 0x1\n\tAF_UNSPEC                      = 0x0\n\tAF_VENDOR00                    = 0x27\n\tAF_VENDOR01                    = 0x29\n\tAF_VENDOR02                    = 0x2b\n\tAF_VENDOR03                    = 0x2d\n\tAF_VENDOR04                    = 0x2f\n\tAF_VENDOR05                    = 0x31\n\tAF_VENDOR06                    = 0x33\n\tAF_VENDOR07                    = 0x35\n\tAF_VENDOR08                    = 0x37\n\tAF_VENDOR09                    = 0x39\n\tAF_VENDOR10                    = 0x3b\n\tAF_VENDOR11                    = 0x3d\n\tAF_VENDOR12                    = 0x3f\n\tAF_VENDOR13                    = 0x41\n\tAF_VENDOR14                    = 0x43\n\tAF_VENDOR15                    = 0x45\n\tAF_VENDOR16                    = 0x47\n\tAF_VENDOR17                    = 0x49\n\tAF_VENDOR18                    = 0x4b\n\tAF_VENDOR19                    = 0x4d\n\tAF_VENDOR20                    = 0x4f\n\tAF_VENDOR21                    = 0x51\n\tAF_VENDOR22                    = 0x53\n\tAF_VENDOR23                    = 0x55\n\tAF_VENDOR24                    = 0x57\n\tAF_VENDOR25                    = 0x59\n\tAF_VENDOR26                    = 0x5b\n\tAF_VENDOR27                    = 0x5d\n\tAF_VENDOR28                    = 0x5f\n\tAF_VENDOR29                    = 0x61\n\tAF_VENDOR30                    = 0x63\n\tAF_VENDOR31                    = 0x65\n\tAF_VENDOR32                    = 0x67\n\tAF_VENDOR33                    = 0x69\n\tAF_VENDOR34                    = 0x6b\n\tAF_VENDOR35                    = 0x6d\n\tAF_VENDOR36                    = 0x6f\n\tAF_VENDOR37                    = 0x71\n\tAF_VENDOR38                    = 0x73\n\tAF_VENDOR39                    = 0x75\n\tAF_VENDOR40                    = 0x77\n\tAF_VENDOR41                    = 0x79\n\tAF_VENDOR42                    = 0x7b\n\tAF_VENDOR43                    = 0x7d\n\tAF_VENDOR44                    = 0x7f\n\tAF_VENDOR45                    = 0x81\n\tAF_VENDOR46                    = 0x83\n\tAF_VENDOR47                    = 0x85\n\tALTWERASE                      = 0x200\n\tB0                             = 0x0\n\tB110                           = 0x6e\n\tB115200                        = 0x1c200\n\tB1200                          = 0x4b0\n\tB134                           = 0x86\n\tB14400                         = 0x3840\n\tB150                           = 0x96\n\tB1800                          = 0x708\n\tB19200                         = 0x4b00\n\tB200                           = 0xc8\n\tB230400                        = 0x38400\n\tB2400                          = 0x960\n\tB28800                         = 0x7080\n\tB300                           = 0x12c\n\tB38400                         = 0x9600\n\tB460800                        = 0x70800\n\tB4800                          = 0x12c0\n\tB50                            = 0x32\n\tB57600                         = 0xe100\n\tB600                           = 0x258\n\tB7200                          = 0x1c20\n\tB75                            = 0x4b\n\tB76800                         = 0x12c00\n\tB921600                        = 0xe1000\n\tB9600                          = 0x2580\n\tBIOCFEEDBACK                   = 0x8004427c\n\tBIOCFLUSH                      = 0x20004268\n\tBIOCGBLEN                      = 0x40044266\n\tBIOCGDIRECTION                 = 0x40044276\n\tBIOCGDLT                       = 0x4004426a\n\tBIOCGDLTLIST                   = 0xc0084279\n\tBIOCGETBUFMODE                 = 0x4004427d\n\tBIOCGETIF                      = 0x4020426b\n\tBIOCGETZMAX                    = 0x4004427f\n\tBIOCGHDRCMPLT                  = 0x40044274\n\tBIOCGRSIG                      = 0x40044272\n\tBIOCGRTIMEOUT                  = 0x4010426e\n\tBIOCGSEESENT                   = 0x40044276\n\tBIOCGSTATS                     = 0x4008426f\n\tBIOCGTSTAMP                    = 0x40044283\n\tBIOCIMMEDIATE                  = 0x80044270\n\tBIOCLOCK                       = 0x2000427a\n\tBIOCPROMISC                    = 0x20004269\n\tBIOCROTZBUF                    = 0x400c4280\n\tBIOCSBLEN                      = 0xc0044266\n\tBIOCSDIRECTION                 = 0x80044277\n\tBIOCSDLT                       = 0x80044278\n\tBIOCSETBUFMODE                 = 0x8004427e\n\tBIOCSETF                       = 0x80084267\n\tBIOCSETFNR                     = 0x80084282\n\tBIOCSETIF                      = 0x8020426c\n\tBIOCSETVLANPCP                 = 0x80044285\n\tBIOCSETWF                      = 0x8008427b\n\tBIOCSETZBUF                    = 0x800c4281\n\tBIOCSHDRCMPLT                  = 0x80044275\n\tBIOCSRSIG                      = 0x80044273\n\tBIOCSRTIMEOUT                  = 0x8010426d\n\tBIOCSSEESENT                   = 0x80044277\n\tBIOCSTSTAMP                    = 0x80044284\n\tBIOCVERSION                    = 0x40044271\n\tBPF_A                          = 0x10\n\tBPF_ABS                        = 0x20\n\tBPF_ADD                        = 0x0\n\tBPF_ALIGNMENT                  = 0x4\n\tBPF_ALU                        = 0x4\n\tBPF_AND                        = 0x50\n\tBPF_B                          = 0x10\n\tBPF_BUFMODE_BUFFER             = 0x1\n\tBPF_BUFMODE_ZBUF               = 0x2\n\tBPF_DIV                        = 0x30\n\tBPF_H                          = 0x8\n\tBPF_IMM                        = 0x0\n\tBPF_IND                        = 0x40\n\tBPF_JA                         = 0x0\n\tBPF_JEQ                        = 0x10\n\tBPF_JGE                        = 0x30\n\tBPF_JGT                        = 0x20\n\tBPF_JMP                        = 0x5\n\tBPF_JSET                       = 0x40\n\tBPF_K                          = 0x0\n\tBPF_LD                         = 0x0\n\tBPF_LDX                        = 0x1\n\tBPF_LEN                        = 0x80\n\tBPF_LSH                        = 0x60\n\tBPF_MAJOR_VERSION              = 0x1\n\tBPF_MAXBUFSIZE                 = 0x80000\n\tBPF_MAXINSNS                   = 0x200\n\tBPF_MEM                        = 0x60\n\tBPF_MEMWORDS                   = 0x10\n\tBPF_MINBUFSIZE                 = 0x20\n\tBPF_MINOR_VERSION              = 0x1\n\tBPF_MISC                       = 0x7\n\tBPF_MOD                        = 0x90\n\tBPF_MSH                        = 0xa0\n\tBPF_MUL                        = 0x20\n\tBPF_NEG                        = 0x80\n\tBPF_OR                         = 0x40\n\tBPF_RELEASE                    = 0x30bb6\n\tBPF_RET                        = 0x6\n\tBPF_RSH                        = 0x70\n\tBPF_ST                         = 0x2\n\tBPF_STX                        = 0x3\n\tBPF_SUB                        = 0x10\n\tBPF_TAX                        = 0x0\n\tBPF_TXA                        = 0x80\n\tBPF_T_BINTIME                  = 0x2\n\tBPF_T_BINTIME_FAST             = 0x102\n\tBPF_T_BINTIME_MONOTONIC        = 0x202\n\tBPF_T_BINTIME_MONOTONIC_FAST   = 0x302\n\tBPF_T_FAST                     = 0x100\n\tBPF_T_FLAG_MASK                = 0x300\n\tBPF_T_FORMAT_MASK              = 0x3\n\tBPF_T_MICROTIME                = 0x0\n\tBPF_T_MICROTIME_FAST           = 0x100\n\tBPF_T_MICROTIME_MONOTONIC      = 0x200\n\tBPF_T_MICROTIME_MONOTONIC_FAST = 0x300\n\tBPF_T_MONOTONIC                = 0x200\n\tBPF_T_MONOTONIC_FAST           = 0x300\n\tBPF_T_NANOTIME                 = 0x1\n\tBPF_T_NANOTIME_FAST            = 0x101\n\tBPF_T_NANOTIME_MONOTONIC       = 0x201\n\tBPF_T_NANOTIME_MONOTONIC_FAST  = 0x301\n\tBPF_T_NONE                     = 0x3\n\tBPF_T_NORMAL                   = 0x0\n\tBPF_W                          = 0x0\n\tBPF_X                          = 0x8\n\tBPF_XOR                        = 0xa0\n\tBRKINT                         = 0x2\n\tCAP_ACCEPT                     = 0x200000020000000\n\tCAP_ACL_CHECK                  = 0x400000000010000\n\tCAP_ACL_DELETE                 = 0x400000000020000\n\tCAP_ACL_GET                    = 0x400000000040000\n\tCAP_ACL_SET                    = 0x400000000080000\n\tCAP_ALL0                       = 0x20007ffffffffff\n\tCAP_ALL1                       = 0x4000000001fffff\n\tCAP_BIND                       = 0x200000040000000\n\tCAP_BINDAT                     = 0x200008000000400\n\tCAP_CHFLAGSAT                  = 0x200000000001400\n\tCAP_CONNECT                    = 0x200000080000000\n\tCAP_CONNECTAT                  = 0x200010000000400\n\tCAP_CREATE                     = 0x200000000000040\n\tCAP_EVENT                      = 0x400000000000020\n\tCAP_EXTATTR_DELETE             = 0x400000000001000\n\tCAP_EXTATTR_GET                = 0x400000000002000\n\tCAP_EXTATTR_LIST               = 0x400000000004000\n\tCAP_EXTATTR_SET                = 0x400000000008000\n\tCAP_FCHDIR                     = 0x200000000000800\n\tCAP_FCHFLAGS                   = 0x200000000001000\n\tCAP_FCHMOD                     = 0x200000000002000\n\tCAP_FCHMODAT                   = 0x200000000002400\n\tCAP_FCHOWN                     = 0x200000000004000\n\tCAP_FCHOWNAT                   = 0x200000000004400\n\tCAP_FCNTL                      = 0x200000000008000\n\tCAP_FCNTL_ALL                  = 0x78\n\tCAP_FCNTL_GETFL                = 0x8\n\tCAP_FCNTL_GETOWN               = 0x20\n\tCAP_FCNTL_SETFL                = 0x10\n\tCAP_FCNTL_SETOWN               = 0x40\n\tCAP_FEXECVE                    = 0x200000000000080\n\tCAP_FLOCK                      = 0x200000000010000\n\tCAP_FPATHCONF                  = 0x200000000020000\n\tCAP_FSCK                       = 0x200000000040000\n\tCAP_FSTAT                      = 0x200000000080000\n\tCAP_FSTATAT                    = 0x200000000080400\n\tCAP_FSTATFS                    = 0x200000000100000\n\tCAP_FSYNC                      = 0x200000000000100\n\tCAP_FTRUNCATE                  = 0x200000000000200\n\tCAP_FUTIMES                    = 0x200000000200000\n\tCAP_FUTIMESAT                  = 0x200000000200400\n\tCAP_GETPEERNAME                = 0x200000100000000\n\tCAP_GETSOCKNAME                = 0x200000200000000\n\tCAP_GETSOCKOPT                 = 0x200000400000000\n\tCAP_IOCTL                      = 0x400000000000080\n\tCAP_IOCTLS_ALL                 = 0x7fffffff\n\tCAP_KQUEUE                     = 0x400000000100040\n\tCAP_KQUEUE_CHANGE              = 0x400000000100000\n\tCAP_KQUEUE_EVENT               = 0x400000000000040\n\tCAP_LINKAT_SOURCE              = 0x200020000000400\n\tCAP_LINKAT_TARGET              = 0x200000000400400\n\tCAP_LISTEN                     = 0x200000800000000\n\tCAP_LOOKUP                     = 0x200000000000400\n\tCAP_MAC_GET                    = 0x400000000000001\n\tCAP_MAC_SET                    = 0x400000000000002\n\tCAP_MKDIRAT                    = 0x200000000800400\n\tCAP_MKFIFOAT                   = 0x200000001000400\n\tCAP_MKNODAT                    = 0x200000002000400\n\tCAP_MMAP                       = 0x200000000000010\n\tCAP_MMAP_R                     = 0x20000000000001d\n\tCAP_MMAP_RW                    = 0x20000000000001f\n\tCAP_MMAP_RWX                   = 0x20000000000003f\n\tCAP_MMAP_RX                    = 0x20000000000003d\n\tCAP_MMAP_W                     = 0x20000000000001e\n\tCAP_MMAP_WX                    = 0x20000000000003e\n\tCAP_MMAP_X                     = 0x20000000000003c\n\tCAP_PDGETPID                   = 0x400000000000200\n\tCAP_PDKILL                     = 0x400000000000800\n\tCAP_PDWAIT                     = 0x400000000000400\n\tCAP_PEELOFF                    = 0x200001000000000\n\tCAP_POLL_EVENT                 = 0x400000000000020\n\tCAP_PREAD                      = 0x20000000000000d\n\tCAP_PWRITE                     = 0x20000000000000e\n\tCAP_READ                       = 0x200000000000001\n\tCAP_RECV                       = 0x200000000000001\n\tCAP_RENAMEAT_SOURCE            = 0x200000004000400\n\tCAP_RENAMEAT_TARGET            = 0x200040000000400\n\tCAP_RIGHTS_VERSION             = 0x0\n\tCAP_RIGHTS_VERSION_00          = 0x0\n\tCAP_SEEK                       = 0x20000000000000c\n\tCAP_SEEK_TELL                  = 0x200000000000004\n\tCAP_SEM_GETVALUE               = 0x400000000000004\n\tCAP_SEM_POST                   = 0x400000000000008\n\tCAP_SEM_WAIT                   = 0x400000000000010\n\tCAP_SEND                       = 0x200000000000002\n\tCAP_SETSOCKOPT                 = 0x200002000000000\n\tCAP_SHUTDOWN                   = 0x200004000000000\n\tCAP_SOCK_CLIENT                = 0x200007780000003\n\tCAP_SOCK_SERVER                = 0x200007f60000003\n\tCAP_SYMLINKAT                  = 0x200000008000400\n\tCAP_TTYHOOK                    = 0x400000000000100\n\tCAP_UNLINKAT                   = 0x200000010000400\n\tCAP_UNUSED0_44                 = 0x200080000000000\n\tCAP_UNUSED0_57                 = 0x300000000000000\n\tCAP_UNUSED1_22                 = 0x400000000200000\n\tCAP_UNUSED1_57                 = 0x500000000000000\n\tCAP_WRITE                      = 0x200000000000002\n\tCFLUSH                         = 0xf\n\tCLOCAL                         = 0x8000\n\tCLOCK_MONOTONIC                = 0x4\n\tCLOCK_MONOTONIC_FAST           = 0xc\n\tCLOCK_MONOTONIC_PRECISE        = 0xb\n\tCLOCK_PROCESS_CPUTIME_ID       = 0xf\n\tCLOCK_PROF                     = 0x2\n\tCLOCK_REALTIME                 = 0x0\n\tCLOCK_REALTIME_FAST            = 0xa\n\tCLOCK_REALTIME_PRECISE         = 0x9\n\tCLOCK_SECOND                   = 0xd\n\tCLOCK_THREAD_CPUTIME_ID        = 0xe\n\tCLOCK_UPTIME                   = 0x5\n\tCLOCK_UPTIME_FAST              = 0x8\n\tCLOCK_UPTIME_PRECISE           = 0x7\n\tCLOCK_VIRTUAL                  = 0x1\n\tCPUSTATES                      = 0x5\n\tCP_IDLE                        = 0x4\n\tCP_INTR                        = 0x3\n\tCP_NICE                        = 0x1\n\tCP_SYS                         = 0x2\n\tCP_USER                        = 0x0\n\tCREAD                          = 0x800\n\tCRTSCTS                        = 0x30000\n\tCS5                            = 0x0\n\tCS6                            = 0x100\n\tCS7                            = 0x200\n\tCS8                            = 0x300\n\tCSIZE                          = 0x300\n\tCSTART                         = 0x11\n\tCSTATUS                        = 0x14\n\tCSTOP                          = 0x13\n\tCSTOPB                         = 0x400\n\tCSUSP                          = 0x1a\n\tCTL_HW                         = 0x6\n\tCTL_KERN                       = 0x1\n\tCTL_MAXNAME                    = 0x18\n\tCTL_NET                        = 0x4\n\tDIOCGATTR                      = 0xc148648e\n\tDIOCGDELETE                    = 0x80106488\n\tDIOCGFLUSH                     = 0x20006487\n\tDIOCGFRONTSTUFF                = 0x40086486\n\tDIOCGFWHEADS                   = 0x40046483\n\tDIOCGFWSECTORS                 = 0x40046482\n\tDIOCGIDENT                     = 0x41006489\n\tDIOCGMEDIASIZE                 = 0x40086481\n\tDIOCGPHYSPATH                  = 0x4400648d\n\tDIOCGPROVIDERNAME              = 0x4400648a\n\tDIOCGSECTORSIZE                = 0x40046480\n\tDIOCGSTRIPEOFFSET              = 0x4008648c\n\tDIOCGSTRIPESIZE                = 0x4008648b\n\tDIOCSKERNELDUMP                = 0x804c6490\n\tDIOCSKERNELDUMP_FREEBSD11      = 0x80046485\n\tDIOCZONECMD                    = 0xc078648f\n\tDLT_A429                       = 0xb8\n\tDLT_A653_ICM                   = 0xb9\n\tDLT_AIRONET_HEADER             = 0x78\n\tDLT_AOS                        = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394     = 0x8a\n\tDLT_ARCNET                     = 0x7\n\tDLT_ARCNET_LINUX               = 0x81\n\tDLT_ATM_CLIP                   = 0x13\n\tDLT_ATM_RFC1483                = 0xb\n\tDLT_AURORA                     = 0x7e\n\tDLT_AX25                       = 0x3\n\tDLT_AX25_KISS                  = 0xca\n\tDLT_BACNET_MS_TP               = 0xa5\n\tDLT_BLUETOOTH_BREDR_BB         = 0xff\n\tDLT_BLUETOOTH_HCI_H4           = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9\n\tDLT_BLUETOOTH_LE_LL            = 0xfb\n\tDLT_BLUETOOTH_LE_LL_WITH_PHDR  = 0x100\n\tDLT_BLUETOOTH_LINUX_MONITOR    = 0xfe\n\tDLT_CAN20B                     = 0xbe\n\tDLT_CAN_SOCKETCAN              = 0xe3\n\tDLT_CHAOS                      = 0x5\n\tDLT_CHDLC                      = 0x68\n\tDLT_CISCO_IOS                  = 0x76\n\tDLT_CLASS_NETBSD_RAWAF         = 0x2240000\n\tDLT_C_HDLC                     = 0x68\n\tDLT_C_HDLC_WITH_DIR            = 0xcd\n\tDLT_DBUS                       = 0xe7\n\tDLT_DECT                       = 0xdd\n\tDLT_DISPLAYPORT_AUX            = 0x113\n\tDLT_DOCSIS                     = 0x8f\n\tDLT_DOCSIS31_XRA31             = 0x111\n\tDLT_DVB_CI                     = 0xeb\n\tDLT_ECONET                     = 0x73\n\tDLT_EN10MB                     = 0x1\n\tDLT_EN3MB                      = 0x2\n\tDLT_ENC                        = 0x6d\n\tDLT_EPON                       = 0x103\n\tDLT_ERF                        = 0xc5\n\tDLT_ERF_ETH                    = 0xaf\n\tDLT_ERF_POS                    = 0xb0\n\tDLT_ETHERNET_MPACKET           = 0x112\n\tDLT_FC_2                       = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS     = 0xe1\n\tDLT_FDDI                       = 0xa\n\tDLT_FLEXRAY                    = 0xd2\n\tDLT_FRELAY                     = 0x6b\n\tDLT_FRELAY_WITH_DIR            = 0xce\n\tDLT_GCOM_SERIAL                = 0xad\n\tDLT_GCOM_T1E1                  = 0xac\n\tDLT_GPF_F                      = 0xab\n\tDLT_GPF_T                      = 0xaa\n\tDLT_GPRS_LLC                   = 0xa9\n\tDLT_GSMTAP_ABIS                = 0xda\n\tDLT_GSMTAP_UM                  = 0xd9\n\tDLT_IBM_SN                     = 0x92\n\tDLT_IBM_SP                     = 0x91\n\tDLT_IEEE802                    = 0x6\n\tDLT_IEEE802_11                 = 0x69\n\tDLT_IEEE802_11_RADIO           = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS       = 0xa3\n\tDLT_IEEE802_15_4               = 0xc3\n\tDLT_IEEE802_15_4_LINUX         = 0xbf\n\tDLT_IEEE802_15_4_NOFCS         = 0xe6\n\tDLT_IEEE802_15_4_NONASK_PHY    = 0xd7\n\tDLT_IEEE802_16_MAC_CPS         = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO   = 0xc1\n\tDLT_INFINIBAND                 = 0xf7\n\tDLT_IPFILTER                   = 0x74\n\tDLT_IPMB_KONTRON               = 0xc7\n\tDLT_IPMB_LINUX                 = 0xd1\n\tDLT_IPMI_HPM_2                 = 0x104\n\tDLT_IPNET                      = 0xe2\n\tDLT_IPOIB                      = 0xf2\n\tDLT_IPV4                       = 0xe4\n\tDLT_IPV6                       = 0xe5\n\tDLT_IP_OVER_FC                 = 0x7a\n\tDLT_ISO_14443                  = 0x108\n\tDLT_JUNIPER_ATM1               = 0x89\n\tDLT_JUNIPER_ATM2               = 0x87\n\tDLT_JUNIPER_ATM_CEMIC          = 0xee\n\tDLT_JUNIPER_CHDLC              = 0xb5\n\tDLT_JUNIPER_ES                 = 0x84\n\tDLT_JUNIPER_ETHER              = 0xb2\n\tDLT_JUNIPER_FIBRECHANNEL       = 0xea\n\tDLT_JUNIPER_FRELAY             = 0xb4\n\tDLT_JUNIPER_GGSN               = 0x85\n\tDLT_JUNIPER_ISM                = 0xc2\n\tDLT_JUNIPER_MFR                = 0x86\n\tDLT_JUNIPER_MLFR               = 0x83\n\tDLT_JUNIPER_MLPPP              = 0x82\n\tDLT_JUNIPER_MONITOR            = 0xa4\n\tDLT_JUNIPER_PIC_PEER           = 0xae\n\tDLT_JUNIPER_PPP                = 0xb3\n\tDLT_JUNIPER_PPPOE              = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM          = 0xa8\n\tDLT_JUNIPER_SERVICES           = 0x88\n\tDLT_JUNIPER_SRX_E2E            = 0xe9\n\tDLT_JUNIPER_ST                 = 0xc8\n\tDLT_JUNIPER_VP                 = 0xb7\n\tDLT_JUNIPER_VS                 = 0xe8\n\tDLT_LAPB_WITH_DIR              = 0xcf\n\tDLT_LAPD                       = 0xcb\n\tDLT_LIN                        = 0xd4\n\tDLT_LINUX_EVDEV                = 0xd8\n\tDLT_LINUX_IRDA                 = 0x90\n\tDLT_LINUX_LAPD                 = 0xb1\n\tDLT_LINUX_PPP_WITHDIRECTION    = 0xa6\n\tDLT_LINUX_SLL                  = 0x71\n\tDLT_LINUX_SLL2                 = 0x114\n\tDLT_LOOP                       = 0x6c\n\tDLT_LORATAP                    = 0x10e\n\tDLT_LTALK                      = 0x72\n\tDLT_MATCHING_MAX               = 0x114\n\tDLT_MATCHING_MIN               = 0x68\n\tDLT_MFR                        = 0xb6\n\tDLT_MOST                       = 0xd3\n\tDLT_MPEG_2_TS                  = 0xf3\n\tDLT_MPLS                       = 0xdb\n\tDLT_MTP2                       = 0x8c\n\tDLT_MTP2_WITH_PHDR             = 0x8b\n\tDLT_MTP3                       = 0x8d\n\tDLT_MUX27010                   = 0xec\n\tDLT_NETANALYZER                = 0xf0\n\tDLT_NETANALYZER_TRANSPARENT    = 0xf1\n\tDLT_NETLINK                    = 0xfd\n\tDLT_NFC_LLCP                   = 0xf5\n\tDLT_NFLOG                      = 0xef\n\tDLT_NG40                       = 0xf4\n\tDLT_NORDIC_BLE                 = 0x110\n\tDLT_NULL                       = 0x0\n\tDLT_OPENFLOW                   = 0x10b\n\tDLT_PCI_EXP                    = 0x7d\n\tDLT_PFLOG                      = 0x75\n\tDLT_PFSYNC                     = 0x79\n\tDLT_PKTAP                      = 0x102\n\tDLT_PPI                        = 0xc0\n\tDLT_PPP                        = 0x9\n\tDLT_PPP_BSDOS                  = 0xe\n\tDLT_PPP_ETHER                  = 0x33\n\tDLT_PPP_PPPD                   = 0xa6\n\tDLT_PPP_SERIAL                 = 0x32\n\tDLT_PPP_WITH_DIR               = 0xcc\n\tDLT_PPP_WITH_DIRECTION         = 0xa6\n\tDLT_PRISM_HEADER               = 0x77\n\tDLT_PROFIBUS_DL                = 0x101\n\tDLT_PRONET                     = 0x4\n\tDLT_RAIF1                      = 0xc6\n\tDLT_RAW                        = 0xc\n\tDLT_RDS                        = 0x109\n\tDLT_REDBACK_SMARTEDGE          = 0x20\n\tDLT_RIO                        = 0x7c\n\tDLT_RTAC_SERIAL                = 0xfa\n\tDLT_SCCP                       = 0x8e\n\tDLT_SCTP                       = 0xf8\n\tDLT_SDLC                       = 0x10c\n\tDLT_SITA                       = 0xc4\n\tDLT_SLIP                       = 0x8\n\tDLT_SLIP_BSDOS                 = 0xd\n\tDLT_STANAG_5066_D_PDU          = 0xed\n\tDLT_SUNATM                     = 0x7b\n\tDLT_SYMANTEC_FIREWALL          = 0x63\n\tDLT_TI_LLN_SNIFFER             = 0x10d\n\tDLT_TZSP                       = 0x80\n\tDLT_USB                        = 0xba\n\tDLT_USBPCAP                    = 0xf9\n\tDLT_USB_DARWIN                 = 0x10a\n\tDLT_USB_FREEBSD                = 0xba\n\tDLT_USB_LINUX                  = 0xbd\n\tDLT_USB_LINUX_MMAPPED          = 0xdc\n\tDLT_USER0                      = 0x93\n\tDLT_USER1                      = 0x94\n\tDLT_USER10                     = 0x9d\n\tDLT_USER11                     = 0x9e\n\tDLT_USER12                     = 0x9f\n\tDLT_USER13                     = 0xa0\n\tDLT_USER14                     = 0xa1\n\tDLT_USER15                     = 0xa2\n\tDLT_USER2                      = 0x95\n\tDLT_USER3                      = 0x96\n\tDLT_USER4                      = 0x97\n\tDLT_USER5                      = 0x98\n\tDLT_USER6                      = 0x99\n\tDLT_USER7                      = 0x9a\n\tDLT_USER8                      = 0x9b\n\tDLT_USER9                      = 0x9c\n\tDLT_VSOCK                      = 0x10f\n\tDLT_WATTSTOPPER_DLM            = 0x107\n\tDLT_WIHART                     = 0xdf\n\tDLT_WIRESHARK_UPPER_PDU        = 0xfc\n\tDLT_X2E_SERIAL                 = 0xd5\n\tDLT_X2E_XORAYA                 = 0xd6\n\tDLT_ZWAVE_R1_R2                = 0x105\n\tDLT_ZWAVE_R3                   = 0x106\n\tDT_BLK                         = 0x6\n\tDT_CHR                         = 0x2\n\tDT_DIR                         = 0x4\n\tDT_FIFO                        = 0x1\n\tDT_LNK                         = 0xa\n\tDT_REG                         = 0x8\n\tDT_SOCK                        = 0xc\n\tDT_UNKNOWN                     = 0x0\n\tDT_WHT                         = 0xe\n\tECHO                           = 0x8\n\tECHOCTL                        = 0x40\n\tECHOE                          = 0x2\n\tECHOK                          = 0x4\n\tECHOKE                         = 0x1\n\tECHONL                         = 0x10\n\tECHOPRT                        = 0x20\n\tEVFILT_AIO                     = -0x3\n\tEVFILT_EMPTY                   = -0xd\n\tEVFILT_FS                      = -0x9\n\tEVFILT_LIO                     = -0xa\n\tEVFILT_PROC                    = -0x5\n\tEVFILT_PROCDESC                = -0x8\n\tEVFILT_READ                    = -0x1\n\tEVFILT_SENDFILE                = -0xc\n\tEVFILT_SIGNAL                  = -0x6\n\tEVFILT_SYSCOUNT                = 0xd\n\tEVFILT_TIMER                   = -0x7\n\tEVFILT_USER                    = -0xb\n\tEVFILT_VNODE                   = -0x4\n\tEVFILT_WRITE                   = -0x2\n\tEVNAMEMAP_NAME_SIZE            = 0x40\n\tEV_ADD                         = 0x1\n\tEV_CLEAR                       = 0x20\n\tEV_DELETE                      = 0x2\n\tEV_DISABLE                     = 0x8\n\tEV_DISPATCH                    = 0x80\n\tEV_DROP                        = 0x1000\n\tEV_ENABLE                      = 0x4\n\tEV_EOF                         = 0x8000\n\tEV_ERROR                       = 0x4000\n\tEV_FLAG1                       = 0x2000\n\tEV_FLAG2                       = 0x4000\n\tEV_FORCEONESHOT                = 0x100\n\tEV_ONESHOT                     = 0x10\n\tEV_RECEIPT                     = 0x40\n\tEV_SYSFLAGS                    = 0xf000\n\tEXTA                           = 0x4b00\n\tEXTATTR_MAXNAMELEN             = 0xff\n\tEXTATTR_NAMESPACE_EMPTY        = 0x0\n\tEXTATTR_NAMESPACE_SYSTEM       = 0x2\n\tEXTATTR_NAMESPACE_USER         = 0x1\n\tEXTB                           = 0x9600\n\tEXTPROC                        = 0x800\n\tFD_CLOEXEC                     = 0x1\n\tFD_SETSIZE                     = 0x400\n\tFLUSHO                         = 0x800000\n\tF_CANCEL                       = 0x5\n\tF_DUP2FD                       = 0xa\n\tF_DUP2FD_CLOEXEC               = 0x12\n\tF_DUPFD                        = 0x0\n\tF_DUPFD_CLOEXEC                = 0x11\n\tF_GETFD                        = 0x1\n\tF_GETFL                        = 0x3\n\tF_GETLK                        = 0xb\n\tF_GETOWN                       = 0x5\n\tF_OGETLK                       = 0x7\n\tF_OK                           = 0x0\n\tF_OSETLK                       = 0x8\n\tF_OSETLKW                      = 0x9\n\tF_RDAHEAD                      = 0x10\n\tF_RDLCK                        = 0x1\n\tF_READAHEAD                    = 0xf\n\tF_SETFD                        = 0x2\n\tF_SETFL                        = 0x4\n\tF_SETLK                        = 0xc\n\tF_SETLKW                       = 0xd\n\tF_SETLK_REMOTE                 = 0xe\n\tF_SETOWN                       = 0x6\n\tF_UNLCK                        = 0x2\n\tF_UNLCKSYS                     = 0x4\n\tF_WRLCK                        = 0x3\n\tHUPCL                          = 0x4000\n\tHW_MACHINE                     = 0x1\n\tICANON                         = 0x100\n\tICMP6_FILTER                   = 0x12\n\tICRNL                          = 0x100\n\tIEXTEN                         = 0x400\n\tIFAN_ARRIVAL                   = 0x0\n\tIFAN_DEPARTURE                 = 0x1\n\tIFCAP_WOL_MAGIC                = 0x2000\n\tIFF_ALLMULTI                   = 0x200\n\tIFF_ALTPHYS                    = 0x4000\n\tIFF_BROADCAST                  = 0x2\n\tIFF_CANTCHANGE                 = 0x218f52\n\tIFF_CANTCONFIG                 = 0x10000\n\tIFF_DEBUG                      = 0x4\n\tIFF_DRV_OACTIVE                = 0x400\n\tIFF_DRV_RUNNING                = 0x40\n\tIFF_DYING                      = 0x200000\n\tIFF_LINK0                      = 0x1000\n\tIFF_LINK1                      = 0x2000\n\tIFF_LINK2                      = 0x4000\n\tIFF_LOOPBACK                   = 0x8\n\tIFF_MONITOR                    = 0x40000\n\tIFF_MULTICAST                  = 0x8000\n\tIFF_NOARP                      = 0x80\n\tIFF_NOGROUP                    = 0x800000\n\tIFF_OACTIVE                    = 0x400\n\tIFF_POINTOPOINT                = 0x10\n\tIFF_PPROMISC                   = 0x20000\n\tIFF_PROMISC                    = 0x100\n\tIFF_RENAMING                   = 0x400000\n\tIFF_RUNNING                    = 0x40\n\tIFF_SIMPLEX                    = 0x800\n\tIFF_STATICARP                  = 0x80000\n\tIFF_UP                         = 0x1\n\tIFNAMSIZ                       = 0x10\n\tIFT_BRIDGE                     = 0xd1\n\tIFT_CARP                       = 0xf8\n\tIFT_IEEE1394                   = 0x90\n\tIFT_INFINIBAND                 = 0xc7\n\tIFT_L2VLAN                     = 0x87\n\tIFT_L3IPVLAN                   = 0x88\n\tIFT_PPP                        = 0x17\n\tIFT_PROPVIRTUAL                = 0x35\n\tIGNBRK                         = 0x1\n\tIGNCR                          = 0x80\n\tIGNPAR                         = 0x4\n\tIMAXBEL                        = 0x2000\n\tINLCR                          = 0x40\n\tINPCK                          = 0x10\n\tIN_CLASSA_HOST                 = 0xffffff\n\tIN_CLASSA_MAX                  = 0x80\n\tIN_CLASSA_NET                  = 0xff000000\n\tIN_CLASSA_NSHIFT               = 0x18\n\tIN_CLASSB_HOST                 = 0xffff\n\tIN_CLASSB_MAX                  = 0x10000\n\tIN_CLASSB_NET                  = 0xffff0000\n\tIN_CLASSB_NSHIFT               = 0x10\n\tIN_CLASSC_HOST                 = 0xff\n\tIN_CLASSC_NET                  = 0xffffff00\n\tIN_CLASSC_NSHIFT               = 0x8\n\tIN_CLASSD_HOST                 = 0xfffffff\n\tIN_CLASSD_NET                  = 0xf0000000\n\tIN_CLASSD_NSHIFT               = 0x1c\n\tIN_LOOPBACKNET                 = 0x7f\n\tIN_RFC3021_MASK                = 0xfffffffe\n\tIPPROTO_3PC                    = 0x22\n\tIPPROTO_ADFS                   = 0x44\n\tIPPROTO_AH                     = 0x33\n\tIPPROTO_AHIP                   = 0x3d\n\tIPPROTO_APES                   = 0x63\n\tIPPROTO_ARGUS                  = 0xd\n\tIPPROTO_AX25                   = 0x5d\n\tIPPROTO_BHA                    = 0x31\n\tIPPROTO_BLT                    = 0x1e\n\tIPPROTO_BRSATMON               = 0x4c\n\tIPPROTO_CARP                   = 0x70\n\tIPPROTO_CFTP                   = 0x3e\n\tIPPROTO_CHAOS                  = 0x10\n\tIPPROTO_CMTP                   = 0x26\n\tIPPROTO_CPHB                   = 0x49\n\tIPPROTO_CPNX                   = 0x48\n\tIPPROTO_DCCP                   = 0x21\n\tIPPROTO_DDP                    = 0x25\n\tIPPROTO_DGP                    = 0x56\n\tIPPROTO_DIVERT                 = 0x102\n\tIPPROTO_DONE                   = 0x101\n\tIPPROTO_DSTOPTS                = 0x3c\n\tIPPROTO_EGP                    = 0x8\n\tIPPROTO_EMCON                  = 0xe\n\tIPPROTO_ENCAP                  = 0x62\n\tIPPROTO_EON                    = 0x50\n\tIPPROTO_ESP                    = 0x32\n\tIPPROTO_ETHERIP                = 0x61\n\tIPPROTO_FRAGMENT               = 0x2c\n\tIPPROTO_GGP                    = 0x3\n\tIPPROTO_GMTP                   = 0x64\n\tIPPROTO_GRE                    = 0x2f\n\tIPPROTO_HELLO                  = 0x3f\n\tIPPROTO_HIP                    = 0x8b\n\tIPPROTO_HMP                    = 0x14\n\tIPPROTO_HOPOPTS                = 0x0\n\tIPPROTO_ICMP                   = 0x1\n\tIPPROTO_ICMPV6                 = 0x3a\n\tIPPROTO_IDP                    = 0x16\n\tIPPROTO_IDPR                   = 0x23\n\tIPPROTO_IDRP                   = 0x2d\n\tIPPROTO_IGMP                   = 0x2\n\tIPPROTO_IGP                    = 0x55\n\tIPPROTO_IGRP                   = 0x58\n\tIPPROTO_IL                     = 0x28\n\tIPPROTO_INLSP                  = 0x34\n\tIPPROTO_INP                    = 0x20\n\tIPPROTO_IP                     = 0x0\n\tIPPROTO_IPCOMP                 = 0x6c\n\tIPPROTO_IPCV                   = 0x47\n\tIPPROTO_IPEIP                  = 0x5e\n\tIPPROTO_IPIP                   = 0x4\n\tIPPROTO_IPPC                   = 0x43\n\tIPPROTO_IPV4                   = 0x4\n\tIPPROTO_IPV6                   = 0x29\n\tIPPROTO_IRTP                   = 0x1c\n\tIPPROTO_KRYPTOLAN              = 0x41\n\tIPPROTO_LARP                   = 0x5b\n\tIPPROTO_LEAF1                  = 0x19\n\tIPPROTO_LEAF2                  = 0x1a\n\tIPPROTO_MAX                    = 0x100\n\tIPPROTO_MEAS                   = 0x13\n\tIPPROTO_MH                     = 0x87\n\tIPPROTO_MHRP                   = 0x30\n\tIPPROTO_MICP                   = 0x5f\n\tIPPROTO_MOBILE                 = 0x37\n\tIPPROTO_MPLS                   = 0x89\n\tIPPROTO_MTP                    = 0x5c\n\tIPPROTO_MUX                    = 0x12\n\tIPPROTO_ND                     = 0x4d\n\tIPPROTO_NHRP                   = 0x36\n\tIPPROTO_NONE                   = 0x3b\n\tIPPROTO_NSP                    = 0x1f\n\tIPPROTO_NVPII                  = 0xb\n\tIPPROTO_OLD_DIVERT             = 0xfe\n\tIPPROTO_OSPFIGP                = 0x59\n\tIPPROTO_PFSYNC                 = 0xf0\n\tIPPROTO_PGM                    = 0x71\n\tIPPROTO_PIGP                   = 0x9\n\tIPPROTO_PIM                    = 0x67\n\tIPPROTO_PRM                    = 0x15\n\tIPPROTO_PUP                    = 0xc\n\tIPPROTO_PVP                    = 0x4b\n\tIPPROTO_RAW                    = 0xff\n\tIPPROTO_RCCMON                 = 0xa\n\tIPPROTO_RDP                    = 0x1b\n\tIPPROTO_RESERVED_253           = 0xfd\n\tIPPROTO_RESERVED_254           = 0xfe\n\tIPPROTO_ROUTING                = 0x2b\n\tIPPROTO_RSVP                   = 0x2e\n\tIPPROTO_RVD                    = 0x42\n\tIPPROTO_SATEXPAK               = 0x40\n\tIPPROTO_SATMON                 = 0x45\n\tIPPROTO_SCCSP                  = 0x60\n\tIPPROTO_SCTP                   = 0x84\n\tIPPROTO_SDRP                   = 0x2a\n\tIPPROTO_SEND                   = 0x103\n\tIPPROTO_SHIM6                  = 0x8c\n\tIPPROTO_SKIP                   = 0x39\n\tIPPROTO_SPACER                 = 0x7fff\n\tIPPROTO_SRPC                   = 0x5a\n\tIPPROTO_ST                     = 0x7\n\tIPPROTO_SVMTP                  = 0x52\n\tIPPROTO_SWIPE                  = 0x35\n\tIPPROTO_TCF                    = 0x57\n\tIPPROTO_TCP                    = 0x6\n\tIPPROTO_TLSP                   = 0x38\n\tIPPROTO_TP                     = 0x1d\n\tIPPROTO_TPXX                   = 0x27\n\tIPPROTO_TRUNK1                 = 0x17\n\tIPPROTO_TRUNK2                 = 0x18\n\tIPPROTO_TTP                    = 0x54\n\tIPPROTO_UDP                    = 0x11\n\tIPPROTO_UDPLITE                = 0x88\n\tIPPROTO_VINES                  = 0x53\n\tIPPROTO_VISA                   = 0x46\n\tIPPROTO_VMTP                   = 0x51\n\tIPPROTO_WBEXPAK                = 0x4f\n\tIPPROTO_WBMON                  = 0x4e\n\tIPPROTO_WSN                    = 0x4a\n\tIPPROTO_XNET                   = 0xf\n\tIPPROTO_XTP                    = 0x24\n\tIPV6_AUTOFLOWLABEL             = 0x3b\n\tIPV6_BINDANY                   = 0x40\n\tIPV6_BINDMULTI                 = 0x41\n\tIPV6_BINDV6ONLY                = 0x1b\n\tIPV6_CHECKSUM                  = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS    = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP    = 0x1\n\tIPV6_DEFHLIM                   = 0x40\n\tIPV6_DONTFRAG                  = 0x3e\n\tIPV6_DSTOPTS                   = 0x32\n\tIPV6_FLOWID                    = 0x43\n\tIPV6_FLOWINFO_MASK             = 0xffffff0f\n\tIPV6_FLOWLABEL_LEN             = 0x14\n\tIPV6_FLOWLABEL_MASK            = 0xffff0f00\n\tIPV6_FLOWTYPE                  = 0x44\n\tIPV6_FRAGTTL                   = 0x78\n\tIPV6_FW_ADD                    = 0x1e\n\tIPV6_FW_DEL                    = 0x1f\n\tIPV6_FW_FLUSH                  = 0x20\n\tIPV6_FW_GET                    = 0x22\n\tIPV6_FW_ZERO                   = 0x21\n\tIPV6_HLIMDEC                   = 0x1\n\tIPV6_HOPLIMIT                  = 0x2f\n\tIPV6_HOPOPTS                   = 0x31\n\tIPV6_IPSEC_POLICY              = 0x1c\n\tIPV6_JOIN_GROUP                = 0xc\n\tIPV6_LEAVE_GROUP               = 0xd\n\tIPV6_MAXHLIM                   = 0xff\n\tIPV6_MAXOPTHDR                 = 0x800\n\tIPV6_MAXPACKET                 = 0xffff\n\tIPV6_MAX_GROUP_SRC_FILTER      = 0x200\n\tIPV6_MAX_MEMBERSHIPS           = 0xfff\n\tIPV6_MAX_SOCK_SRC_FILTER       = 0x80\n\tIPV6_MMTU                      = 0x500\n\tIPV6_MSFILTER                  = 0x4a\n\tIPV6_MULTICAST_HOPS            = 0xa\n\tIPV6_MULTICAST_IF              = 0x9\n\tIPV6_MULTICAST_LOOP            = 0xb\n\tIPV6_NEXTHOP                   = 0x30\n\tIPV6_ORIGDSTADDR               = 0x48\n\tIPV6_PATHMTU                   = 0x2c\n\tIPV6_PKTINFO                   = 0x2e\n\tIPV6_PORTRANGE                 = 0xe\n\tIPV6_PORTRANGE_DEFAULT         = 0x0\n\tIPV6_PORTRANGE_HIGH            = 0x1\n\tIPV6_PORTRANGE_LOW             = 0x2\n\tIPV6_PREFER_TEMPADDR           = 0x3f\n\tIPV6_RECVDSTOPTS               = 0x28\n\tIPV6_RECVFLOWID                = 0x46\n\tIPV6_RECVHOPLIMIT              = 0x25\n\tIPV6_RECVHOPOPTS               = 0x27\n\tIPV6_RECVORIGDSTADDR           = 0x48\n\tIPV6_RECVPATHMTU               = 0x2b\n\tIPV6_RECVPKTINFO               = 0x24\n\tIPV6_RECVRSSBUCKETID           = 0x47\n\tIPV6_RECVRTHDR                 = 0x26\n\tIPV6_RECVTCLASS                = 0x39\n\tIPV6_RSSBUCKETID               = 0x45\n\tIPV6_RSS_LISTEN_BUCKET         = 0x42\n\tIPV6_RTHDR                     = 0x33\n\tIPV6_RTHDRDSTOPTS              = 0x23\n\tIPV6_RTHDR_LOOSE               = 0x0\n\tIPV6_RTHDR_STRICT              = 0x1\n\tIPV6_RTHDR_TYPE_0              = 0x0\n\tIPV6_SOCKOPT_RESERVED1         = 0x3\n\tIPV6_TCLASS                    = 0x3d\n\tIPV6_UNICAST_HOPS              = 0x4\n\tIPV6_USE_MIN_MTU               = 0x2a\n\tIPV6_V6ONLY                    = 0x1b\n\tIPV6_VERSION                   = 0x60\n\tIPV6_VERSION_MASK              = 0xf0\n\tIPV6_VLAN_PCP                  = 0x4b\n\tIP_ADD_MEMBERSHIP              = 0xc\n\tIP_ADD_SOURCE_MEMBERSHIP       = 0x46\n\tIP_BINDANY                     = 0x18\n\tIP_BINDMULTI                   = 0x19\n\tIP_BLOCK_SOURCE                = 0x48\n\tIP_DEFAULT_MULTICAST_LOOP      = 0x1\n\tIP_DEFAULT_MULTICAST_TTL       = 0x1\n\tIP_DF                          = 0x4000\n\tIP_DONTFRAG                    = 0x43\n\tIP_DROP_MEMBERSHIP             = 0xd\n\tIP_DROP_SOURCE_MEMBERSHIP      = 0x47\n\tIP_DUMMYNET3                   = 0x31\n\tIP_DUMMYNET_CONFIGURE          = 0x3c\n\tIP_DUMMYNET_DEL                = 0x3d\n\tIP_DUMMYNET_FLUSH              = 0x3e\n\tIP_DUMMYNET_GET                = 0x40\n\tIP_FLOWID                      = 0x5a\n\tIP_FLOWTYPE                    = 0x5b\n\tIP_FW3                         = 0x30\n\tIP_FW_ADD                      = 0x32\n\tIP_FW_DEL                      = 0x33\n\tIP_FW_FLUSH                    = 0x34\n\tIP_FW_GET                      = 0x36\n\tIP_FW_NAT_CFG                  = 0x38\n\tIP_FW_NAT_DEL                  = 0x39\n\tIP_FW_NAT_GET_CONFIG           = 0x3a\n\tIP_FW_NAT_GET_LOG              = 0x3b\n\tIP_FW_RESETLOG                 = 0x37\n\tIP_FW_TABLE_ADD                = 0x28\n\tIP_FW_TABLE_DEL                = 0x29\n\tIP_FW_TABLE_FLUSH              = 0x2a\n\tIP_FW_TABLE_GETSIZE            = 0x2b\n\tIP_FW_TABLE_LIST               = 0x2c\n\tIP_FW_ZERO                     = 0x35\n\tIP_HDRINCL                     = 0x2\n\tIP_IPSEC_POLICY                = 0x15\n\tIP_MAXPACKET                   = 0xffff\n\tIP_MAX_GROUP_SRC_FILTER        = 0x200\n\tIP_MAX_MEMBERSHIPS             = 0xfff\n\tIP_MAX_SOCK_MUTE_FILTER        = 0x80\n\tIP_MAX_SOCK_SRC_FILTER         = 0x80\n\tIP_MF                          = 0x2000\n\tIP_MINTTL                      = 0x42\n\tIP_MSFILTER                    = 0x4a\n\tIP_MSS                         = 0x240\n\tIP_MULTICAST_IF                = 0x9\n\tIP_MULTICAST_LOOP              = 0xb\n\tIP_MULTICAST_TTL               = 0xa\n\tIP_MULTICAST_VIF               = 0xe\n\tIP_OFFMASK                     = 0x1fff\n\tIP_ONESBCAST                   = 0x17\n\tIP_OPTIONS                     = 0x1\n\tIP_ORIGDSTADDR                 = 0x1b\n\tIP_PORTRANGE                   = 0x13\n\tIP_PORTRANGE_DEFAULT           = 0x0\n\tIP_PORTRANGE_HIGH              = 0x1\n\tIP_PORTRANGE_LOW               = 0x2\n\tIP_RECVDSTADDR                 = 0x7\n\tIP_RECVFLOWID                  = 0x5d\n\tIP_RECVIF                      = 0x14\n\tIP_RECVOPTS                    = 0x5\n\tIP_RECVORIGDSTADDR             = 0x1b\n\tIP_RECVRETOPTS                 = 0x6\n\tIP_RECVRSSBUCKETID             = 0x5e\n\tIP_RECVTOS                     = 0x44\n\tIP_RECVTTL                     = 0x41\n\tIP_RETOPTS                     = 0x8\n\tIP_RF                          = 0x8000\n\tIP_RSSBUCKETID                 = 0x5c\n\tIP_RSS_LISTEN_BUCKET           = 0x1a\n\tIP_RSVP_OFF                    = 0x10\n\tIP_RSVP_ON                     = 0xf\n\tIP_RSVP_VIF_OFF                = 0x12\n\tIP_RSVP_VIF_ON                 = 0x11\n\tIP_SENDSRCADDR                 = 0x7\n\tIP_TOS                         = 0x3\n\tIP_TTL                         = 0x4\n\tIP_UNBLOCK_SOURCE              = 0x49\n\tIP_VLAN_PCP                    = 0x4b\n\tISIG                           = 0x80\n\tISTRIP                         = 0x20\n\tITIMER_PROF                    = 0x2\n\tITIMER_REAL                    = 0x0\n\tITIMER_VIRTUAL                 = 0x1\n\tIXANY                          = 0x800\n\tIXOFF                          = 0x400\n\tIXON                           = 0x200\n\tKERN_HOSTNAME                  = 0xa\n\tKERN_OSRELEASE                 = 0x2\n\tKERN_OSTYPE                    = 0x1\n\tKERN_VERSION                   = 0x4\n\tLOCAL_CONNWAIT                 = 0x4\n\tLOCAL_CREDS                    = 0x2\n\tLOCAL_PEERCRED                 = 0x1\n\tLOCAL_VENDOR                   = 0x80000000\n\tLOCK_EX                        = 0x2\n\tLOCK_NB                        = 0x4\n\tLOCK_SH                        = 0x1\n\tLOCK_UN                        = 0x8\n\tMADV_AUTOSYNC                  = 0x7\n\tMADV_CORE                      = 0x9\n\tMADV_DONTNEED                  = 0x4\n\tMADV_FREE                      = 0x5\n\tMADV_NOCORE                    = 0x8\n\tMADV_NORMAL                    = 0x0\n\tMADV_NOSYNC                    = 0x6\n\tMADV_PROTECT                   = 0xa\n\tMADV_RANDOM                    = 0x1\n\tMADV_SEQUENTIAL                = 0x2\n\tMADV_WILLNEED                  = 0x3\n\tMAP_ALIGNED_SUPER              = 0x1000000\n\tMAP_ALIGNMENT_MASK             = -0x1000000\n\tMAP_ALIGNMENT_SHIFT            = 0x18\n\tMAP_ANON                       = 0x1000\n\tMAP_ANONYMOUS                  = 0x1000\n\tMAP_COPY                       = 0x2\n\tMAP_EXCL                       = 0x4000\n\tMAP_FILE                       = 0x0\n\tMAP_FIXED                      = 0x10\n\tMAP_GUARD                      = 0x2000\n\tMAP_HASSEMAPHORE               = 0x200\n\tMAP_NOCORE                     = 0x20000\n\tMAP_NOSYNC                     = 0x800\n\tMAP_PREFAULT_READ              = 0x40000\n\tMAP_PRIVATE                    = 0x2\n\tMAP_RESERVED0020               = 0x20\n\tMAP_RESERVED0040               = 0x40\n\tMAP_RESERVED0080               = 0x80\n\tMAP_RESERVED0100               = 0x100\n\tMAP_SHARED                     = 0x1\n\tMAP_STACK                      = 0x400\n\tMCAST_BLOCK_SOURCE             = 0x54\n\tMCAST_EXCLUDE                  = 0x2\n\tMCAST_INCLUDE                  = 0x1\n\tMCAST_JOIN_GROUP               = 0x50\n\tMCAST_JOIN_SOURCE_GROUP        = 0x52\n\tMCAST_LEAVE_GROUP              = 0x51\n\tMCAST_LEAVE_SOURCE_GROUP       = 0x53\n\tMCAST_UNBLOCK_SOURCE           = 0x55\n\tMCAST_UNDEFINED                = 0x0\n\tMCL_CURRENT                    = 0x1\n\tMCL_FUTURE                     = 0x2\n\tMNT_ACLS                       = 0x8000000\n\tMNT_ASYNC                      = 0x40\n\tMNT_AUTOMOUNTED                = 0x200000000\n\tMNT_BYFSID                     = 0x8000000\n\tMNT_CMDFLAGS                   = 0xd0f0000\n\tMNT_DEFEXPORTED                = 0x200\n\tMNT_DELEXPORT                  = 0x20000\n\tMNT_EXKERB                     = 0x800\n\tMNT_EXPORTANON                 = 0x400\n\tMNT_EXPORTED                   = 0x100\n\tMNT_EXPUBLIC                   = 0x20000000\n\tMNT_EXRDONLY                   = 0x80\n\tMNT_FORCE                      = 0x80000\n\tMNT_GJOURNAL                   = 0x2000000\n\tMNT_IGNORE                     = 0x800000\n\tMNT_LAZY                       = 0x3\n\tMNT_LOCAL                      = 0x1000\n\tMNT_MULTILABEL                 = 0x4000000\n\tMNT_NFS4ACLS                   = 0x10\n\tMNT_NOATIME                    = 0x10000000\n\tMNT_NOCLUSTERR                 = 0x40000000\n\tMNT_NOCLUSTERW                 = 0x80000000\n\tMNT_NOEXEC                     = 0x4\n\tMNT_NONBUSY                    = 0x4000000\n\tMNT_NOSUID                     = 0x8\n\tMNT_NOSYMFOLLOW                = 0x400000\n\tMNT_NOWAIT                     = 0x2\n\tMNT_QUOTA                      = 0x2000\n\tMNT_RDONLY                     = 0x1\n\tMNT_RELOAD                     = 0x40000\n\tMNT_ROOTFS                     = 0x4000\n\tMNT_SNAPSHOT                   = 0x1000000\n\tMNT_SOFTDEP                    = 0x200000\n\tMNT_SUIDDIR                    = 0x100000\n\tMNT_SUJ                        = 0x100000000\n\tMNT_SUSPEND                    = 0x4\n\tMNT_SYNCHRONOUS                = 0x2\n\tMNT_UNION                      = 0x20\n\tMNT_UNTRUSTED                  = 0x800000000\n\tMNT_UPDATE                     = 0x10000\n\tMNT_UPDATEMASK                 = 0xad8d0807e\n\tMNT_USER                       = 0x8000\n\tMNT_VERIFIED                   = 0x400000000\n\tMNT_VISFLAGMASK                = 0xffef0ffff\n\tMNT_WAIT                       = 0x1\n\tMSG_CMSG_CLOEXEC               = 0x40000\n\tMSG_COMPAT                     = 0x8000\n\tMSG_CTRUNC                     = 0x20\n\tMSG_DONTROUTE                  = 0x4\n\tMSG_DONTWAIT                   = 0x80\n\tMSG_EOF                        = 0x100\n\tMSG_EOR                        = 0x8\n\tMSG_NBIO                       = 0x4000\n\tMSG_NOSIGNAL                   = 0x20000\n\tMSG_NOTIFICATION               = 0x2000\n\tMSG_OOB                        = 0x1\n\tMSG_PEEK                       = 0x2\n\tMSG_TRUNC                      = 0x10\n\tMSG_WAITALL                    = 0x40\n\tMSG_WAITFORONE                 = 0x80000\n\tMS_ASYNC                       = 0x1\n\tMS_INVALIDATE                  = 0x2\n\tMS_SYNC                        = 0x0\n\tNAME_MAX                       = 0xff\n\tNET_RT_DUMP                    = 0x1\n\tNET_RT_FLAGS                   = 0x2\n\tNET_RT_IFLIST                  = 0x3\n\tNET_RT_IFLISTL                 = 0x5\n\tNET_RT_IFMALIST                = 0x4\n\tNFDBITS                        = 0x20\n\tNOFLSH                         = 0x80000000\n\tNOKERNINFO                     = 0x2000000\n\tNOTE_ABSTIME                   = 0x10\n\tNOTE_ATTRIB                    = 0x8\n\tNOTE_CHILD                     = 0x4\n\tNOTE_CLOSE                     = 0x100\n\tNOTE_CLOSE_WRITE               = 0x200\n\tNOTE_DELETE                    = 0x1\n\tNOTE_EXEC                      = 0x20000000\n\tNOTE_EXIT                      = 0x80000000\n\tNOTE_EXTEND                    = 0x4\n\tNOTE_FFAND                     = 0x40000000\n\tNOTE_FFCOPY                    = 0xc0000000\n\tNOTE_FFCTRLMASK                = 0xc0000000\n\tNOTE_FFLAGSMASK                = 0xffffff\n\tNOTE_FFNOP                     = 0x0\n\tNOTE_FFOR                      = 0x80000000\n\tNOTE_FILE_POLL                 = 0x2\n\tNOTE_FORK                      = 0x40000000\n\tNOTE_LINK                      = 0x10\n\tNOTE_LOWAT                     = 0x1\n\tNOTE_MSECONDS                  = 0x2\n\tNOTE_NSECONDS                  = 0x8\n\tNOTE_OPEN                      = 0x80\n\tNOTE_PCTRLMASK                 = 0xf0000000\n\tNOTE_PDATAMASK                 = 0xfffff\n\tNOTE_READ                      = 0x400\n\tNOTE_RENAME                    = 0x20\n\tNOTE_REVOKE                    = 0x40\n\tNOTE_SECONDS                   = 0x1\n\tNOTE_TRACK                     = 0x1\n\tNOTE_TRACKERR                  = 0x2\n\tNOTE_TRIGGER                   = 0x1000000\n\tNOTE_USECONDS                  = 0x4\n\tNOTE_WRITE                     = 0x2\n\tOCRNL                          = 0x10\n\tONLCR                          = 0x2\n\tONLRET                         = 0x40\n\tONOCR                          = 0x20\n\tONOEOT                         = 0x8\n\tOPOST                          = 0x1\n\tOXTABS                         = 0x4\n\tO_ACCMODE                      = 0x3\n\tO_APPEND                       = 0x8\n\tO_ASYNC                        = 0x40\n\tO_CLOEXEC                      = 0x100000\n\tO_CREAT                        = 0x200\n\tO_DIRECT                       = 0x10000\n\tO_DIRECTORY                    = 0x20000\n\tO_EXCL                         = 0x800\n\tO_EXEC                         = 0x40000\n\tO_EXLOCK                       = 0x20\n\tO_FSYNC                        = 0x80\n\tO_NDELAY                       = 0x4\n\tO_NOCTTY                       = 0x8000\n\tO_NOFOLLOW                     = 0x100\n\tO_NONBLOCK                     = 0x4\n\tO_RDONLY                       = 0x0\n\tO_RDWR                         = 0x2\n\tO_RESOLVE_BENEATH              = 0x800000\n\tO_SEARCH                       = 0x40000\n\tO_SHLOCK                       = 0x10\n\tO_SYNC                         = 0x80\n\tO_TRUNC                        = 0x400\n\tO_TTY_INIT                     = 0x80000\n\tO_VERIFY                       = 0x200000\n\tO_WRONLY                       = 0x1\n\tPARENB                         = 0x1000\n\tPARMRK                         = 0x8\n\tPARODD                         = 0x2000\n\tPENDIN                         = 0x20000000\n\tPIOD_READ_D                    = 0x1\n\tPIOD_READ_I                    = 0x3\n\tPIOD_WRITE_D                   = 0x2\n\tPIOD_WRITE_I                   = 0x4\n\tPRIO_PGRP                      = 0x1\n\tPRIO_PROCESS                   = 0x0\n\tPRIO_USER                      = 0x2\n\tPROT_EXEC                      = 0x4\n\tPROT_NONE                      = 0x0\n\tPROT_READ                      = 0x1\n\tPROT_WRITE                     = 0x2\n\tPTRACE_DEFAULT                 = 0x1\n\tPTRACE_EXEC                    = 0x1\n\tPTRACE_FORK                    = 0x8\n\tPTRACE_LWP                     = 0x10\n\tPTRACE_SCE                     = 0x2\n\tPTRACE_SCX                     = 0x4\n\tPTRACE_SYSCALL                 = 0x6\n\tPTRACE_VFORK                   = 0x20\n\tPT_ATTACH                      = 0xa\n\tPT_CLEARSTEP                   = 0x10\n\tPT_CONTINUE                    = 0x7\n\tPT_DETACH                      = 0xb\n\tPT_FIRSTMACH                   = 0x40\n\tPT_FOLLOW_FORK                 = 0x17\n\tPT_GETDBREGS                   = 0x25\n\tPT_GETFPREGS                   = 0x23\n\tPT_GETLWPLIST                  = 0xf\n\tPT_GETNUMLWPS                  = 0xe\n\tPT_GETREGS                     = 0x21\n\tPT_GETVFPREGS                  = 0x40\n\tPT_GET_EVENT_MASK              = 0x19\n\tPT_GET_SC_ARGS                 = 0x1b\n\tPT_GET_SC_RET                  = 0x1c\n\tPT_IO                          = 0xc\n\tPT_KILL                        = 0x8\n\tPT_LWPINFO                     = 0xd\n\tPT_LWP_EVENTS                  = 0x18\n\tPT_READ_D                      = 0x2\n\tPT_READ_I                      = 0x1\n\tPT_RESUME                      = 0x13\n\tPT_SETDBREGS                   = 0x26\n\tPT_SETFPREGS                   = 0x24\n\tPT_SETREGS                     = 0x22\n\tPT_SETSTEP                     = 0x11\n\tPT_SETVFPREGS                  = 0x41\n\tPT_SET_EVENT_MASK              = 0x1a\n\tPT_STEP                        = 0x9\n\tPT_SUSPEND                     = 0x12\n\tPT_SYSCALL                     = 0x16\n\tPT_TO_SCE                      = 0x14\n\tPT_TO_SCX                      = 0x15\n\tPT_TRACE_ME                    = 0x0\n\tPT_VM_ENTRY                    = 0x29\n\tPT_VM_TIMESTAMP                = 0x28\n\tPT_WRITE_D                     = 0x5\n\tPT_WRITE_I                     = 0x4\n\tP_ZONEID                       = 0xc\n\tRLIMIT_AS                      = 0xa\n\tRLIMIT_CORE                    = 0x4\n\tRLIMIT_CPU                     = 0x0\n\tRLIMIT_DATA                    = 0x2\n\tRLIMIT_FSIZE                   = 0x1\n\tRLIMIT_MEMLOCK                 = 0x6\n\tRLIMIT_NOFILE                  = 0x8\n\tRLIMIT_NPROC                   = 0x7\n\tRLIMIT_RSS                     = 0x5\n\tRLIMIT_STACK                   = 0x3\n\tRLIM_INFINITY                  = 0x7fffffffffffffff\n\tRTAX_AUTHOR                    = 0x6\n\tRTAX_BRD                       = 0x7\n\tRTAX_DST                       = 0x0\n\tRTAX_GATEWAY                   = 0x1\n\tRTAX_GENMASK                   = 0x3\n\tRTAX_IFA                       = 0x5\n\tRTAX_IFP                       = 0x4\n\tRTAX_MAX                       = 0x8\n\tRTAX_NETMASK                   = 0x2\n\tRTA_AUTHOR                     = 0x40\n\tRTA_BRD                        = 0x80\n\tRTA_DST                        = 0x1\n\tRTA_GATEWAY                    = 0x2\n\tRTA_GENMASK                    = 0x8\n\tRTA_IFA                        = 0x20\n\tRTA_IFP                        = 0x10\n\tRTA_NETMASK                    = 0x4\n\tRTF_BLACKHOLE                  = 0x1000\n\tRTF_BROADCAST                  = 0x400000\n\tRTF_DONE                       = 0x40\n\tRTF_DYNAMIC                    = 0x10\n\tRTF_FIXEDMTU                   = 0x80000\n\tRTF_FMASK                      = 0x1004d808\n\tRTF_GATEWAY                    = 0x2\n\tRTF_GWFLAG_COMPAT              = 0x80000000\n\tRTF_HOST                       = 0x4\n\tRTF_LLDATA                     = 0x400\n\tRTF_LLINFO                     = 0x400\n\tRTF_LOCAL                      = 0x200000\n\tRTF_MODIFIED                   = 0x20\n\tRTF_MULTICAST                  = 0x800000\n\tRTF_PINNED                     = 0x100000\n\tRTF_PROTO1                     = 0x8000\n\tRTF_PROTO2                     = 0x4000\n\tRTF_PROTO3                     = 0x40000\n\tRTF_REJECT                     = 0x8\n\tRTF_RNH_LOCKED                 = 0x40000000\n\tRTF_STATIC                     = 0x800\n\tRTF_STICKY                     = 0x10000000\n\tRTF_UP                         = 0x1\n\tRTF_XRESOLVE                   = 0x200\n\tRTM_ADD                        = 0x1\n\tRTM_CHANGE                     = 0x3\n\tRTM_DELADDR                    = 0xd\n\tRTM_DELETE                     = 0x2\n\tRTM_DELMADDR                   = 0x10\n\tRTM_GET                        = 0x4\n\tRTM_IEEE80211                  = 0x12\n\tRTM_IFANNOUNCE                 = 0x11\n\tRTM_IFINFO                     = 0xe\n\tRTM_LOCK                       = 0x8\n\tRTM_LOSING                     = 0x5\n\tRTM_MISS                       = 0x7\n\tRTM_NEWADDR                    = 0xc\n\tRTM_NEWMADDR                   = 0xf\n\tRTM_REDIRECT                   = 0x6\n\tRTM_RESOLVE                    = 0xb\n\tRTM_RTTUNIT                    = 0xf4240\n\tRTM_VERSION                    = 0x5\n\tRTV_EXPIRE                     = 0x4\n\tRTV_HOPCOUNT                   = 0x2\n\tRTV_MTU                        = 0x1\n\tRTV_RPIPE                      = 0x8\n\tRTV_RTT                        = 0x40\n\tRTV_RTTVAR                     = 0x80\n\tRTV_SPIPE                      = 0x10\n\tRTV_SSTHRESH                   = 0x20\n\tRTV_WEIGHT                     = 0x100\n\tRT_ALL_FIBS                    = -0x1\n\tRT_BLACKHOLE                   = 0x40\n\tRT_DEFAULT_FIB                 = 0x0\n\tRT_HAS_GW                      = 0x80\n\tRT_HAS_HEADER                  = 0x10\n\tRT_HAS_HEADER_BIT              = 0x4\n\tRT_L2_ME                       = 0x4\n\tRT_L2_ME_BIT                   = 0x2\n\tRT_LLE_CACHE                   = 0x100\n\tRT_MAY_LOOP                    = 0x8\n\tRT_MAY_LOOP_BIT                = 0x3\n\tRT_REJECT                      = 0x20\n\tRUSAGE_CHILDREN                = -0x1\n\tRUSAGE_SELF                    = 0x0\n\tRUSAGE_THREAD                  = 0x1\n\tSCM_BINTIME                    = 0x4\n\tSCM_CREDS                      = 0x3\n\tSCM_MONOTONIC                  = 0x6\n\tSCM_REALTIME                   = 0x5\n\tSCM_RIGHTS                     = 0x1\n\tSCM_TIMESTAMP                  = 0x2\n\tSCM_TIME_INFO                  = 0x7\n\tSEEK_CUR                       = 0x1\n\tSEEK_DATA                      = 0x3\n\tSEEK_END                       = 0x2\n\tSEEK_HOLE                      = 0x4\n\tSEEK_SET                       = 0x0\n\tSHUT_RD                        = 0x0\n\tSHUT_RDWR                      = 0x2\n\tSHUT_WR                        = 0x1\n\tSIOCADDMULTI                   = 0x80206931\n\tSIOCAIFADDR                    = 0x8040691a\n\tSIOCAIFGROUP                   = 0x80246987\n\tSIOCATMARK                     = 0x40047307\n\tSIOCDELMULTI                   = 0x80206932\n\tSIOCDIFADDR                    = 0x80206919\n\tSIOCDIFGROUP                   = 0x80246989\n\tSIOCDIFPHYADDR                 = 0x80206949\n\tSIOCGDRVSPEC                   = 0xc01c697b\n\tSIOCGETSGCNT                   = 0xc0147210\n\tSIOCGETVIFCNT                  = 0xc014720f\n\tSIOCGHIWAT                     = 0x40047301\n\tSIOCGHWADDR                    = 0xc020693e\n\tSIOCGI2C                       = 0xc020693d\n\tSIOCGIFADDR                    = 0xc0206921\n\tSIOCGIFALIAS                   = 0xc044692d\n\tSIOCGIFBRDADDR                 = 0xc0206923\n\tSIOCGIFCAP                     = 0xc020691f\n\tSIOCGIFCONF                    = 0xc0086924\n\tSIOCGIFDESCR                   = 0xc020692a\n\tSIOCGIFDOWNREASON              = 0xc058699a\n\tSIOCGIFDSTADDR                 = 0xc0206922\n\tSIOCGIFFIB                     = 0xc020695c\n\tSIOCGIFFLAGS                   = 0xc0206911\n\tSIOCGIFGENERIC                 = 0xc020693a\n\tSIOCGIFGMEMB                   = 0xc024698a\n\tSIOCGIFGROUP                   = 0xc0246988\n\tSIOCGIFINDEX                   = 0xc0206920\n\tSIOCGIFMAC                     = 0xc0206926\n\tSIOCGIFMEDIA                   = 0xc0286938\n\tSIOCGIFMETRIC                  = 0xc0206917\n\tSIOCGIFMTU                     = 0xc0206933\n\tSIOCGIFNETMASK                 = 0xc0206925\n\tSIOCGIFPDSTADDR                = 0xc0206948\n\tSIOCGIFPHYS                    = 0xc0206935\n\tSIOCGIFPSRCADDR                = 0xc0206947\n\tSIOCGIFRSSHASH                 = 0xc0186997\n\tSIOCGIFRSSKEY                  = 0xc0946996\n\tSIOCGIFSTATUS                  = 0xc331693b\n\tSIOCGIFXMEDIA                  = 0xc028698b\n\tSIOCGLANPCP                    = 0xc0206998\n\tSIOCGLOWAT                     = 0x40047303\n\tSIOCGPGRP                      = 0x40047309\n\tSIOCGPRIVATE_0                 = 0xc0206950\n\tSIOCGPRIVATE_1                 = 0xc0206951\n\tSIOCGTUNFIB                    = 0xc020695e\n\tSIOCIFCREATE                   = 0xc020697a\n\tSIOCIFCREATE2                  = 0xc020697c\n\tSIOCIFDESTROY                  = 0x80206979\n\tSIOCIFGCLONERS                 = 0xc00c6978\n\tSIOCSDRVSPEC                   = 0x801c697b\n\tSIOCSHIWAT                     = 0x80047300\n\tSIOCSIFADDR                    = 0x8020690c\n\tSIOCSIFBRDADDR                 = 0x80206913\n\tSIOCSIFCAP                     = 0x8020691e\n\tSIOCSIFDESCR                   = 0x80206929\n\tSIOCSIFDSTADDR                 = 0x8020690e\n\tSIOCSIFFIB                     = 0x8020695d\n\tSIOCSIFFLAGS                   = 0x80206910\n\tSIOCSIFGENERIC                 = 0x80206939\n\tSIOCSIFLLADDR                  = 0x8020693c\n\tSIOCSIFMAC                     = 0x80206927\n\tSIOCSIFMEDIA                   = 0xc0206937\n\tSIOCSIFMETRIC                  = 0x80206918\n\tSIOCSIFMTU                     = 0x80206934\n\tSIOCSIFNAME                    = 0x80206928\n\tSIOCSIFNETMASK                 = 0x80206916\n\tSIOCSIFPHYADDR                 = 0x80406946\n\tSIOCSIFPHYS                    = 0x80206936\n\tSIOCSIFRVNET                   = 0xc020695b\n\tSIOCSIFVNET                    = 0xc020695a\n\tSIOCSLANPCP                    = 0x80206999\n\tSIOCSLOWAT                     = 0x80047302\n\tSIOCSPGRP                      = 0x80047308\n\tSIOCSTUNFIB                    = 0x8020695f\n\tSOCK_CLOEXEC                   = 0x10000000\n\tSOCK_DGRAM                     = 0x2\n\tSOCK_MAXADDRLEN                = 0xff\n\tSOCK_NONBLOCK                  = 0x20000000\n\tSOCK_RAW                       = 0x3\n\tSOCK_RDM                       = 0x4\n\tSOCK_SEQPACKET                 = 0x5\n\tSOCK_STREAM                    = 0x1\n\tSOL_LOCAL                      = 0x0\n\tSOL_SOCKET                     = 0xffff\n\tSOMAXCONN                      = 0x80\n\tSO_ACCEPTCONN                  = 0x2\n\tSO_ACCEPTFILTER                = 0x1000\n\tSO_BINTIME                     = 0x2000\n\tSO_BROADCAST                   = 0x20\n\tSO_DEBUG                       = 0x1\n\tSO_DOMAIN                      = 0x1019\n\tSO_DONTROUTE                   = 0x10\n\tSO_ERROR                       = 0x1007\n\tSO_KEEPALIVE                   = 0x8\n\tSO_LABEL                       = 0x1009\n\tSO_LINGER                      = 0x80\n\tSO_LISTENINCQLEN               = 0x1013\n\tSO_LISTENQLEN                  = 0x1012\n\tSO_LISTENQLIMIT                = 0x1011\n\tSO_MAX_PACING_RATE             = 0x1018\n\tSO_NOSIGPIPE                   = 0x800\n\tSO_NO_DDP                      = 0x8000\n\tSO_NO_OFFLOAD                  = 0x4000\n\tSO_OOBINLINE                   = 0x100\n\tSO_PEERLABEL                   = 0x1010\n\tSO_PROTOCOL                    = 0x1016\n\tSO_PROTOTYPE                   = 0x1016\n\tSO_RCVBUF                      = 0x1002\n\tSO_RCVLOWAT                    = 0x1004\n\tSO_RCVTIMEO                    = 0x1006\n\tSO_RERROR                      = 0x20000\n\tSO_REUSEADDR                   = 0x4\n\tSO_REUSEPORT                   = 0x200\n\tSO_REUSEPORT_LB                = 0x10000\n\tSO_SETFIB                      = 0x1014\n\tSO_SNDBUF                      = 0x1001\n\tSO_SNDLOWAT                    = 0x1003\n\tSO_SNDTIMEO                    = 0x1005\n\tSO_TIMESTAMP                   = 0x400\n\tSO_TS_BINTIME                  = 0x1\n\tSO_TS_CLOCK                    = 0x1017\n\tSO_TS_CLOCK_MAX                = 0x3\n\tSO_TS_DEFAULT                  = 0x0\n\tSO_TS_MONOTONIC                = 0x3\n\tSO_TS_REALTIME                 = 0x2\n\tSO_TS_REALTIME_MICRO           = 0x0\n\tSO_TYPE                        = 0x1008\n\tSO_USELOOPBACK                 = 0x40\n\tSO_USER_COOKIE                 = 0x1015\n\tSO_VENDOR                      = 0x80000000\n\tS_BLKSIZE                      = 0x200\n\tS_IEXEC                        = 0x40\n\tS_IFBLK                        = 0x6000\n\tS_IFCHR                        = 0x2000\n\tS_IFDIR                        = 0x4000\n\tS_IFIFO                        = 0x1000\n\tS_IFLNK                        = 0xa000\n\tS_IFMT                         = 0xf000\n\tS_IFREG                        = 0x8000\n\tS_IFSOCK                       = 0xc000\n\tS_IFWHT                        = 0xe000\n\tS_IREAD                        = 0x100\n\tS_IRGRP                        = 0x20\n\tS_IROTH                        = 0x4\n\tS_IRUSR                        = 0x100\n\tS_IRWXG                        = 0x38\n\tS_IRWXO                        = 0x7\n\tS_IRWXU                        = 0x1c0\n\tS_ISGID                        = 0x400\n\tS_ISTXT                        = 0x200\n\tS_ISUID                        = 0x800\n\tS_ISVTX                        = 0x200\n\tS_IWGRP                        = 0x10\n\tS_IWOTH                        = 0x2\n\tS_IWRITE                       = 0x80\n\tS_IWUSR                        = 0x80\n\tS_IXGRP                        = 0x8\n\tS_IXOTH                        = 0x1\n\tS_IXUSR                        = 0x40\n\tTAB0                           = 0x0\n\tTAB3                           = 0x4\n\tTABDLY                         = 0x4\n\tTCIFLUSH                       = 0x1\n\tTCIOFF                         = 0x3\n\tTCIOFLUSH                      = 0x3\n\tTCION                          = 0x4\n\tTCOFLUSH                       = 0x2\n\tTCOOFF                         = 0x1\n\tTCOON                          = 0x2\n\tTCPOPT_EOL                     = 0x0\n\tTCPOPT_FAST_OPEN               = 0x22\n\tTCPOPT_MAXSEG                  = 0x2\n\tTCPOPT_NOP                     = 0x1\n\tTCPOPT_PAD                     = 0x0\n\tTCPOPT_SACK                    = 0x5\n\tTCPOPT_SACK_PERMITTED          = 0x4\n\tTCPOPT_SIGNATURE               = 0x13\n\tTCPOPT_TIMESTAMP               = 0x8\n\tTCPOPT_WINDOW                  = 0x3\n\tTCP_BBR_ACK_COMP_ALG           = 0x448\n\tTCP_BBR_ALGORITHM              = 0x43b\n\tTCP_BBR_DRAIN_INC_EXTRA        = 0x43c\n\tTCP_BBR_DRAIN_PG               = 0x42e\n\tTCP_BBR_EXTRA_GAIN             = 0x449\n\tTCP_BBR_EXTRA_STATE            = 0x453\n\tTCP_BBR_FLOOR_MIN_TSO          = 0x454\n\tTCP_BBR_HDWR_PACE              = 0x451\n\tTCP_BBR_HOLD_TARGET            = 0x436\n\tTCP_BBR_IWINTSO                = 0x42b\n\tTCP_BBR_LOWGAIN_FD             = 0x436\n\tTCP_BBR_LOWGAIN_HALF           = 0x435\n\tTCP_BBR_LOWGAIN_THRESH         = 0x434\n\tTCP_BBR_MAX_RTO                = 0x439\n\tTCP_BBR_MIN_RTO                = 0x438\n\tTCP_BBR_MIN_TOPACEOUT          = 0x455\n\tTCP_BBR_ONE_RETRAN             = 0x431\n\tTCP_BBR_PACE_CROSS             = 0x442\n\tTCP_BBR_PACE_DEL_TAR           = 0x43f\n\tTCP_BBR_PACE_OH                = 0x435\n\tTCP_BBR_PACE_PER_SEC           = 0x43e\n\tTCP_BBR_PACE_SEG_MAX           = 0x440\n\tTCP_BBR_PACE_SEG_MIN           = 0x441\n\tTCP_BBR_POLICER_DETECT         = 0x457\n\tTCP_BBR_PROBE_RTT_GAIN         = 0x44d\n\tTCP_BBR_PROBE_RTT_INT          = 0x430\n\tTCP_BBR_PROBE_RTT_LEN          = 0x44e\n\tTCP_BBR_RACK_RTT_USE           = 0x44a\n\tTCP_BBR_RECFORCE               = 0x42c\n\tTCP_BBR_REC_OVER_HPTS          = 0x43a\n\tTCP_BBR_RETRAN_WTSO            = 0x44b\n\tTCP_BBR_RWND_IS_APP            = 0x42f\n\tTCP_BBR_SEND_IWND_IN_TSO       = 0x44f\n\tTCP_BBR_STARTUP_EXIT_EPOCH     = 0x43d\n\tTCP_BBR_STARTUP_LOSS_EXIT      = 0x432\n\tTCP_BBR_STARTUP_PG             = 0x42d\n\tTCP_BBR_TMR_PACE_OH            = 0x448\n\tTCP_BBR_TSLIMITS               = 0x434\n\tTCP_BBR_TSTMP_RAISES           = 0x456\n\tTCP_BBR_UNLIMITED              = 0x43b\n\tTCP_BBR_USEDEL_RATE            = 0x437\n\tTCP_BBR_USE_LOWGAIN            = 0x433\n\tTCP_BBR_USE_RACK_CHEAT         = 0x450\n\tTCP_BBR_UTTER_MAX_TSO          = 0x452\n\tTCP_CA_NAME_MAX                = 0x10\n\tTCP_CCALGOOPT                  = 0x41\n\tTCP_CONGESTION                 = 0x40\n\tTCP_DATA_AFTER_CLOSE           = 0x44c\n\tTCP_DELACK                     = 0x48\n\tTCP_FASTOPEN                   = 0x401\n\tTCP_FASTOPEN_MAX_COOKIE_LEN    = 0x10\n\tTCP_FASTOPEN_MIN_COOKIE_LEN    = 0x4\n\tTCP_FASTOPEN_PSK_LEN           = 0x10\n\tTCP_FUNCTION_BLK               = 0x2000\n\tTCP_FUNCTION_NAME_LEN_MAX      = 0x20\n\tTCP_INFO                       = 0x20\n\tTCP_KEEPCNT                    = 0x400\n\tTCP_KEEPIDLE                   = 0x100\n\tTCP_KEEPINIT                   = 0x80\n\tTCP_KEEPINTVL                  = 0x200\n\tTCP_LOG                        = 0x22\n\tTCP_LOGBUF                     = 0x23\n\tTCP_LOGDUMP                    = 0x25\n\tTCP_LOGDUMPID                  = 0x26\n\tTCP_LOGID                      = 0x24\n\tTCP_LOG_ID_LEN                 = 0x40\n\tTCP_MAXBURST                   = 0x4\n\tTCP_MAXHLEN                    = 0x3c\n\tTCP_MAXOLEN                    = 0x28\n\tTCP_MAXSEG                     = 0x2\n\tTCP_MAXWIN                     = 0xffff\n\tTCP_MAX_SACK                   = 0x4\n\tTCP_MAX_WINSHIFT               = 0xe\n\tTCP_MD5SIG                     = 0x10\n\tTCP_MINMSS                     = 0xd8\n\tTCP_MSS                        = 0x218\n\tTCP_NODELAY                    = 0x1\n\tTCP_NOOPT                      = 0x8\n\tTCP_NOPUSH                     = 0x4\n\tTCP_PCAP_IN                    = 0x1000\n\tTCP_PCAP_OUT                   = 0x800\n\tTCP_RACK_EARLY_RECOV           = 0x423\n\tTCP_RACK_EARLY_SEG             = 0x424\n\tTCP_RACK_GP_INCREASE           = 0x446\n\tTCP_RACK_IDLE_REDUCE_HIGH      = 0x444\n\tTCP_RACK_MIN_PACE              = 0x445\n\tTCP_RACK_MIN_PACE_SEG          = 0x446\n\tTCP_RACK_MIN_TO                = 0x422\n\tTCP_RACK_PACE_ALWAYS           = 0x41f\n\tTCP_RACK_PACE_MAX_SEG          = 0x41e\n\tTCP_RACK_PACE_REDUCE           = 0x41d\n\tTCP_RACK_PKT_DELAY             = 0x428\n\tTCP_RACK_PROP                  = 0x41b\n\tTCP_RACK_PROP_RATE             = 0x420\n\tTCP_RACK_PRR_SENDALOT          = 0x421\n\tTCP_RACK_REORD_FADE            = 0x426\n\tTCP_RACK_REORD_THRESH          = 0x425\n\tTCP_RACK_TLP_INC_VAR           = 0x429\n\tTCP_RACK_TLP_REDUCE            = 0x41c\n\tTCP_RACK_TLP_THRESH            = 0x427\n\tTCP_RACK_TLP_USE               = 0x447\n\tTCP_VENDOR                     = 0x80000000\n\tTCSAFLUSH                      = 0x2\n\tTIMER_ABSTIME                  = 0x1\n\tTIMER_RELTIME                  = 0x0\n\tTIOCCBRK                       = 0x2000747a\n\tTIOCCDTR                       = 0x20007478\n\tTIOCCONS                       = 0x80047462\n\tTIOCDRAIN                      = 0x2000745e\n\tTIOCEXCL                       = 0x2000740d\n\tTIOCEXT                        = 0x80047460\n\tTIOCFLUSH                      = 0x80047410\n\tTIOCGDRAINWAIT                 = 0x40047456\n\tTIOCGETA                       = 0x402c7413\n\tTIOCGETD                       = 0x4004741a\n\tTIOCGPGRP                      = 0x40047477\n\tTIOCGPTN                       = 0x4004740f\n\tTIOCGSID                       = 0x40047463\n\tTIOCGWINSZ                     = 0x40087468\n\tTIOCMBIC                       = 0x8004746b\n\tTIOCMBIS                       = 0x8004746c\n\tTIOCMGDTRWAIT                  = 0x4004745a\n\tTIOCMGET                       = 0x4004746a\n\tTIOCMSDTRWAIT                  = 0x8004745b\n\tTIOCMSET                       = 0x8004746d\n\tTIOCM_CAR                      = 0x40\n\tTIOCM_CD                       = 0x40\n\tTIOCM_CTS                      = 0x20\n\tTIOCM_DCD                      = 0x40\n\tTIOCM_DSR                      = 0x100\n\tTIOCM_DTR                      = 0x2\n\tTIOCM_LE                       = 0x1\n\tTIOCM_RI                       = 0x80\n\tTIOCM_RNG                      = 0x80\n\tTIOCM_RTS                      = 0x4\n\tTIOCM_SR                       = 0x10\n\tTIOCM_ST                       = 0x8\n\tTIOCNOTTY                      = 0x20007471\n\tTIOCNXCL                       = 0x2000740e\n\tTIOCOUTQ                       = 0x40047473\n\tTIOCPKT                        = 0x80047470\n\tTIOCPKT_DATA                   = 0x0\n\tTIOCPKT_DOSTOP                 = 0x20\n\tTIOCPKT_FLUSHREAD              = 0x1\n\tTIOCPKT_FLUSHWRITE             = 0x2\n\tTIOCPKT_IOCTL                  = 0x40\n\tTIOCPKT_NOSTOP                 = 0x10\n\tTIOCPKT_START                  = 0x8\n\tTIOCPKT_STOP                   = 0x4\n\tTIOCPTMASTER                   = 0x2000741c\n\tTIOCSBRK                       = 0x2000747b\n\tTIOCSCTTY                      = 0x20007461\n\tTIOCSDRAINWAIT                 = 0x80047457\n\tTIOCSDTR                       = 0x20007479\n\tTIOCSETA                       = 0x802c7414\n\tTIOCSETAF                      = 0x802c7416\n\tTIOCSETAW                      = 0x802c7415\n\tTIOCSETD                       = 0x8004741b\n\tTIOCSIG                        = 0x2004745f\n\tTIOCSPGRP                      = 0x80047476\n\tTIOCSTART                      = 0x2000746e\n\tTIOCSTAT                       = 0x20007465\n\tTIOCSTI                        = 0x80017472\n\tTIOCSTOP                       = 0x2000746f\n\tTIOCSWINSZ                     = 0x80087467\n\tTIOCTIMESTAMP                  = 0x40107459\n\tTIOCUCNTL                      = 0x80047466\n\tTOSTOP                         = 0x400000\n\tUTIME_NOW                      = -0x1\n\tUTIME_OMIT                     = -0x2\n\tVDISCARD                       = 0xf\n\tVDSUSP                         = 0xb\n\tVEOF                           = 0x0\n\tVEOL                           = 0x1\n\tVEOL2                          = 0x2\n\tVERASE                         = 0x3\n\tVERASE2                        = 0x7\n\tVINTR                          = 0x8\n\tVKILL                          = 0x5\n\tVLNEXT                         = 0xe\n\tVMIN                           = 0x10\n\tVQUIT                          = 0x9\n\tVREPRINT                       = 0x6\n\tVSTART                         = 0xc\n\tVSTATUS                        = 0x12\n\tVSTOP                          = 0xd\n\tVSUSP                          = 0xa\n\tVTIME                          = 0x11\n\tVWERASE                        = 0x4\n\tWCONTINUED                     = 0x4\n\tWCOREFLAG                      = 0x80\n\tWEXITED                        = 0x10\n\tWLINUXCLONE                    = 0x80000000\n\tWNOHANG                        = 0x1\n\tWNOWAIT                        = 0x8\n\tWSTOPPED                       = 0x2\n\tWTRAPPED                       = 0x20\n\tWUNTRACED                      = 0x2\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x59)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x55)\n\tECAPMODE        = syscall.Errno(0x5e)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDOOFUS         = syscall.Errno(0x58)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x52)\n\tEILSEQ          = syscall.Errno(0x56)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTEGRITY      = syscall.Errno(0x61)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x61)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5a)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x57)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x5b)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x53)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCAPABLE     = syscall.Errno(0x5d)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5f)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x2d)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEOWNERDEAD      = syscall.Errno(0x60)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5c)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGLIBRT  = syscall.Signal(0x21)\n\tSIGLWP    = syscall.Signal(0x20)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EWOULDBLOCK\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIDRM\", \"identifier removed\"},\n\t{83, \"ENOMSG\", \"no message of desired type\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"ECANCELED\", \"operation canceled\"},\n\t{86, \"EILSEQ\", \"illegal byte sequence\"},\n\t{87, \"ENOATTR\", \"attribute not found\"},\n\t{88, \"EDOOFUS\", \"programming error\"},\n\t{89, \"EBADMSG\", \"bad message\"},\n\t{90, \"EMULTIHOP\", \"multihop attempted\"},\n\t{91, \"ENOLINK\", \"link has been severed\"},\n\t{92, \"EPROTO\", \"protocol error\"},\n\t{93, \"ENOTCAPABLE\", \"capabilities insufficient\"},\n\t{94, \"ECAPMODE\", \"not permitted in capability mode\"},\n\t{95, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{96, \"EOWNERDEAD\", \"previous owner died\"},\n\t{97, \"EINTEGRITY\", \"integrity check failed\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"unknown signal\"},\n\t{33, \"SIGLIBRT\", \"unknown signal\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && freebsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                   = 0x10\n\tAF_ARP                         = 0x23\n\tAF_ATM                         = 0x1e\n\tAF_BLUETOOTH                   = 0x24\n\tAF_CCITT                       = 0xa\n\tAF_CHAOS                       = 0x5\n\tAF_CNT                         = 0x15\n\tAF_COIP                        = 0x14\n\tAF_DATAKIT                     = 0x9\n\tAF_DECnet                      = 0xc\n\tAF_DLI                         = 0xd\n\tAF_E164                        = 0x1a\n\tAF_ECMA                        = 0x8\n\tAF_HYLINK                      = 0xf\n\tAF_IEEE80211                   = 0x25\n\tAF_IMPLINK                     = 0x3\n\tAF_INET                        = 0x2\n\tAF_INET6                       = 0x1c\n\tAF_INET6_SDP                   = 0x2a\n\tAF_INET_SDP                    = 0x28\n\tAF_IPX                         = 0x17\n\tAF_ISDN                        = 0x1a\n\tAF_ISO                         = 0x7\n\tAF_LAT                         = 0xe\n\tAF_LINK                        = 0x12\n\tAF_LOCAL                       = 0x1\n\tAF_MAX                         = 0x2a\n\tAF_NATM                        = 0x1d\n\tAF_NETBIOS                     = 0x6\n\tAF_NETGRAPH                    = 0x20\n\tAF_OSI                         = 0x7\n\tAF_PUP                         = 0x4\n\tAF_ROUTE                       = 0x11\n\tAF_SCLUSTER                    = 0x22\n\tAF_SIP                         = 0x18\n\tAF_SLOW                        = 0x21\n\tAF_SNA                         = 0xb\n\tAF_UNIX                        = 0x1\n\tAF_UNSPEC                      = 0x0\n\tAF_VENDOR00                    = 0x27\n\tAF_VENDOR01                    = 0x29\n\tAF_VENDOR02                    = 0x2b\n\tAF_VENDOR03                    = 0x2d\n\tAF_VENDOR04                    = 0x2f\n\tAF_VENDOR05                    = 0x31\n\tAF_VENDOR06                    = 0x33\n\tAF_VENDOR07                    = 0x35\n\tAF_VENDOR08                    = 0x37\n\tAF_VENDOR09                    = 0x39\n\tAF_VENDOR10                    = 0x3b\n\tAF_VENDOR11                    = 0x3d\n\tAF_VENDOR12                    = 0x3f\n\tAF_VENDOR13                    = 0x41\n\tAF_VENDOR14                    = 0x43\n\tAF_VENDOR15                    = 0x45\n\tAF_VENDOR16                    = 0x47\n\tAF_VENDOR17                    = 0x49\n\tAF_VENDOR18                    = 0x4b\n\tAF_VENDOR19                    = 0x4d\n\tAF_VENDOR20                    = 0x4f\n\tAF_VENDOR21                    = 0x51\n\tAF_VENDOR22                    = 0x53\n\tAF_VENDOR23                    = 0x55\n\tAF_VENDOR24                    = 0x57\n\tAF_VENDOR25                    = 0x59\n\tAF_VENDOR26                    = 0x5b\n\tAF_VENDOR27                    = 0x5d\n\tAF_VENDOR28                    = 0x5f\n\tAF_VENDOR29                    = 0x61\n\tAF_VENDOR30                    = 0x63\n\tAF_VENDOR31                    = 0x65\n\tAF_VENDOR32                    = 0x67\n\tAF_VENDOR33                    = 0x69\n\tAF_VENDOR34                    = 0x6b\n\tAF_VENDOR35                    = 0x6d\n\tAF_VENDOR36                    = 0x6f\n\tAF_VENDOR37                    = 0x71\n\tAF_VENDOR38                    = 0x73\n\tAF_VENDOR39                    = 0x75\n\tAF_VENDOR40                    = 0x77\n\tAF_VENDOR41                    = 0x79\n\tAF_VENDOR42                    = 0x7b\n\tAF_VENDOR43                    = 0x7d\n\tAF_VENDOR44                    = 0x7f\n\tAF_VENDOR45                    = 0x81\n\tAF_VENDOR46                    = 0x83\n\tAF_VENDOR47                    = 0x85\n\tALTWERASE                      = 0x200\n\tB0                             = 0x0\n\tB110                           = 0x6e\n\tB115200                        = 0x1c200\n\tB1200                          = 0x4b0\n\tB134                           = 0x86\n\tB14400                         = 0x3840\n\tB150                           = 0x96\n\tB1800                          = 0x708\n\tB19200                         = 0x4b00\n\tB200                           = 0xc8\n\tB230400                        = 0x38400\n\tB2400                          = 0x960\n\tB28800                         = 0x7080\n\tB300                           = 0x12c\n\tB38400                         = 0x9600\n\tB460800                        = 0x70800\n\tB4800                          = 0x12c0\n\tB50                            = 0x32\n\tB57600                         = 0xe100\n\tB600                           = 0x258\n\tB7200                          = 0x1c20\n\tB75                            = 0x4b\n\tB76800                         = 0x12c00\n\tB921600                        = 0xe1000\n\tB9600                          = 0x2580\n\tBIOCFEEDBACK                   = 0x8004427c\n\tBIOCFLUSH                      = 0x20004268\n\tBIOCGBLEN                      = 0x40044266\n\tBIOCGDIRECTION                 = 0x40044276\n\tBIOCGDLT                       = 0x4004426a\n\tBIOCGDLTLIST                   = 0xc0104279\n\tBIOCGETBUFMODE                 = 0x4004427d\n\tBIOCGETIF                      = 0x4020426b\n\tBIOCGETZMAX                    = 0x4008427f\n\tBIOCGHDRCMPLT                  = 0x40044274\n\tBIOCGRSIG                      = 0x40044272\n\tBIOCGRTIMEOUT                  = 0x4010426e\n\tBIOCGSEESENT                   = 0x40044276\n\tBIOCGSTATS                     = 0x4008426f\n\tBIOCGTSTAMP                    = 0x40044283\n\tBIOCIMMEDIATE                  = 0x80044270\n\tBIOCLOCK                       = 0x2000427a\n\tBIOCPROMISC                    = 0x20004269\n\tBIOCROTZBUF                    = 0x40184280\n\tBIOCSBLEN                      = 0xc0044266\n\tBIOCSDIRECTION                 = 0x80044277\n\tBIOCSDLT                       = 0x80044278\n\tBIOCSETBUFMODE                 = 0x8004427e\n\tBIOCSETF                       = 0x80104267\n\tBIOCSETFNR                     = 0x80104282\n\tBIOCSETIF                      = 0x8020426c\n\tBIOCSETVLANPCP                 = 0x80044285\n\tBIOCSETWF                      = 0x8010427b\n\tBIOCSETZBUF                    = 0x80184281\n\tBIOCSHDRCMPLT                  = 0x80044275\n\tBIOCSRSIG                      = 0x80044273\n\tBIOCSRTIMEOUT                  = 0x8010426d\n\tBIOCSSEESENT                   = 0x80044277\n\tBIOCSTSTAMP                    = 0x80044284\n\tBIOCVERSION                    = 0x40044271\n\tBPF_A                          = 0x10\n\tBPF_ABS                        = 0x20\n\tBPF_ADD                        = 0x0\n\tBPF_ALIGNMENT                  = 0x8\n\tBPF_ALU                        = 0x4\n\tBPF_AND                        = 0x50\n\tBPF_B                          = 0x10\n\tBPF_BUFMODE_BUFFER             = 0x1\n\tBPF_BUFMODE_ZBUF               = 0x2\n\tBPF_DIV                        = 0x30\n\tBPF_H                          = 0x8\n\tBPF_IMM                        = 0x0\n\tBPF_IND                        = 0x40\n\tBPF_JA                         = 0x0\n\tBPF_JEQ                        = 0x10\n\tBPF_JGE                        = 0x30\n\tBPF_JGT                        = 0x20\n\tBPF_JMP                        = 0x5\n\tBPF_JSET                       = 0x40\n\tBPF_K                          = 0x0\n\tBPF_LD                         = 0x0\n\tBPF_LDX                        = 0x1\n\tBPF_LEN                        = 0x80\n\tBPF_LSH                        = 0x60\n\tBPF_MAJOR_VERSION              = 0x1\n\tBPF_MAXBUFSIZE                 = 0x80000\n\tBPF_MAXINSNS                   = 0x200\n\tBPF_MEM                        = 0x60\n\tBPF_MEMWORDS                   = 0x10\n\tBPF_MINBUFSIZE                 = 0x20\n\tBPF_MINOR_VERSION              = 0x1\n\tBPF_MISC                       = 0x7\n\tBPF_MOD                        = 0x90\n\tBPF_MSH                        = 0xa0\n\tBPF_MUL                        = 0x20\n\tBPF_NEG                        = 0x80\n\tBPF_OR                         = 0x40\n\tBPF_RELEASE                    = 0x30bb6\n\tBPF_RET                        = 0x6\n\tBPF_RSH                        = 0x70\n\tBPF_ST                         = 0x2\n\tBPF_STX                        = 0x3\n\tBPF_SUB                        = 0x10\n\tBPF_TAX                        = 0x0\n\tBPF_TXA                        = 0x80\n\tBPF_T_BINTIME                  = 0x2\n\tBPF_T_BINTIME_FAST             = 0x102\n\tBPF_T_BINTIME_MONOTONIC        = 0x202\n\tBPF_T_BINTIME_MONOTONIC_FAST   = 0x302\n\tBPF_T_FAST                     = 0x100\n\tBPF_T_FLAG_MASK                = 0x300\n\tBPF_T_FORMAT_MASK              = 0x3\n\tBPF_T_MICROTIME                = 0x0\n\tBPF_T_MICROTIME_FAST           = 0x100\n\tBPF_T_MICROTIME_MONOTONIC      = 0x200\n\tBPF_T_MICROTIME_MONOTONIC_FAST = 0x300\n\tBPF_T_MONOTONIC                = 0x200\n\tBPF_T_MONOTONIC_FAST           = 0x300\n\tBPF_T_NANOTIME                 = 0x1\n\tBPF_T_NANOTIME_FAST            = 0x101\n\tBPF_T_NANOTIME_MONOTONIC       = 0x201\n\tBPF_T_NANOTIME_MONOTONIC_FAST  = 0x301\n\tBPF_T_NONE                     = 0x3\n\tBPF_T_NORMAL                   = 0x0\n\tBPF_W                          = 0x0\n\tBPF_X                          = 0x8\n\tBPF_XOR                        = 0xa0\n\tBRKINT                         = 0x2\n\tCAP_ACCEPT                     = 0x200000020000000\n\tCAP_ACL_CHECK                  = 0x400000000010000\n\tCAP_ACL_DELETE                 = 0x400000000020000\n\tCAP_ACL_GET                    = 0x400000000040000\n\tCAP_ACL_SET                    = 0x400000000080000\n\tCAP_ALL0                       = 0x20007ffffffffff\n\tCAP_ALL1                       = 0x4000000001fffff\n\tCAP_BIND                       = 0x200000040000000\n\tCAP_BINDAT                     = 0x200008000000400\n\tCAP_CHFLAGSAT                  = 0x200000000001400\n\tCAP_CONNECT                    = 0x200000080000000\n\tCAP_CONNECTAT                  = 0x200010000000400\n\tCAP_CREATE                     = 0x200000000000040\n\tCAP_EVENT                      = 0x400000000000020\n\tCAP_EXTATTR_DELETE             = 0x400000000001000\n\tCAP_EXTATTR_GET                = 0x400000000002000\n\tCAP_EXTATTR_LIST               = 0x400000000004000\n\tCAP_EXTATTR_SET                = 0x400000000008000\n\tCAP_FCHDIR                     = 0x200000000000800\n\tCAP_FCHFLAGS                   = 0x200000000001000\n\tCAP_FCHMOD                     = 0x200000000002000\n\tCAP_FCHMODAT                   = 0x200000000002400\n\tCAP_FCHOWN                     = 0x200000000004000\n\tCAP_FCHOWNAT                   = 0x200000000004400\n\tCAP_FCNTL                      = 0x200000000008000\n\tCAP_FCNTL_ALL                  = 0x78\n\tCAP_FCNTL_GETFL                = 0x8\n\tCAP_FCNTL_GETOWN               = 0x20\n\tCAP_FCNTL_SETFL                = 0x10\n\tCAP_FCNTL_SETOWN               = 0x40\n\tCAP_FEXECVE                    = 0x200000000000080\n\tCAP_FLOCK                      = 0x200000000010000\n\tCAP_FPATHCONF                  = 0x200000000020000\n\tCAP_FSCK                       = 0x200000000040000\n\tCAP_FSTAT                      = 0x200000000080000\n\tCAP_FSTATAT                    = 0x200000000080400\n\tCAP_FSTATFS                    = 0x200000000100000\n\tCAP_FSYNC                      = 0x200000000000100\n\tCAP_FTRUNCATE                  = 0x200000000000200\n\tCAP_FUTIMES                    = 0x200000000200000\n\tCAP_FUTIMESAT                  = 0x200000000200400\n\tCAP_GETPEERNAME                = 0x200000100000000\n\tCAP_GETSOCKNAME                = 0x200000200000000\n\tCAP_GETSOCKOPT                 = 0x200000400000000\n\tCAP_IOCTL                      = 0x400000000000080\n\tCAP_IOCTLS_ALL                 = 0x7fffffffffffffff\n\tCAP_KQUEUE                     = 0x400000000100040\n\tCAP_KQUEUE_CHANGE              = 0x400000000100000\n\tCAP_KQUEUE_EVENT               = 0x400000000000040\n\tCAP_LINKAT_SOURCE              = 0x200020000000400\n\tCAP_LINKAT_TARGET              = 0x200000000400400\n\tCAP_LISTEN                     = 0x200000800000000\n\tCAP_LOOKUP                     = 0x200000000000400\n\tCAP_MAC_GET                    = 0x400000000000001\n\tCAP_MAC_SET                    = 0x400000000000002\n\tCAP_MKDIRAT                    = 0x200000000800400\n\tCAP_MKFIFOAT                   = 0x200000001000400\n\tCAP_MKNODAT                    = 0x200000002000400\n\tCAP_MMAP                       = 0x200000000000010\n\tCAP_MMAP_R                     = 0x20000000000001d\n\tCAP_MMAP_RW                    = 0x20000000000001f\n\tCAP_MMAP_RWX                   = 0x20000000000003f\n\tCAP_MMAP_RX                    = 0x20000000000003d\n\tCAP_MMAP_W                     = 0x20000000000001e\n\tCAP_MMAP_WX                    = 0x20000000000003e\n\tCAP_MMAP_X                     = 0x20000000000003c\n\tCAP_PDGETPID                   = 0x400000000000200\n\tCAP_PDKILL                     = 0x400000000000800\n\tCAP_PDWAIT                     = 0x400000000000400\n\tCAP_PEELOFF                    = 0x200001000000000\n\tCAP_POLL_EVENT                 = 0x400000000000020\n\tCAP_PREAD                      = 0x20000000000000d\n\tCAP_PWRITE                     = 0x20000000000000e\n\tCAP_READ                       = 0x200000000000001\n\tCAP_RECV                       = 0x200000000000001\n\tCAP_RENAMEAT_SOURCE            = 0x200000004000400\n\tCAP_RENAMEAT_TARGET            = 0x200040000000400\n\tCAP_RIGHTS_VERSION             = 0x0\n\tCAP_RIGHTS_VERSION_00          = 0x0\n\tCAP_SEEK                       = 0x20000000000000c\n\tCAP_SEEK_TELL                  = 0x200000000000004\n\tCAP_SEM_GETVALUE               = 0x400000000000004\n\tCAP_SEM_POST                   = 0x400000000000008\n\tCAP_SEM_WAIT                   = 0x400000000000010\n\tCAP_SEND                       = 0x200000000000002\n\tCAP_SETSOCKOPT                 = 0x200002000000000\n\tCAP_SHUTDOWN                   = 0x200004000000000\n\tCAP_SOCK_CLIENT                = 0x200007780000003\n\tCAP_SOCK_SERVER                = 0x200007f60000003\n\tCAP_SYMLINKAT                  = 0x200000008000400\n\tCAP_TTYHOOK                    = 0x400000000000100\n\tCAP_UNLINKAT                   = 0x200000010000400\n\tCAP_UNUSED0_44                 = 0x200080000000000\n\tCAP_UNUSED0_57                 = 0x300000000000000\n\tCAP_UNUSED1_22                 = 0x400000000200000\n\tCAP_UNUSED1_57                 = 0x500000000000000\n\tCAP_WRITE                      = 0x200000000000002\n\tCFLUSH                         = 0xf\n\tCLOCAL                         = 0x8000\n\tCLOCK_MONOTONIC                = 0x4\n\tCLOCK_MONOTONIC_FAST           = 0xc\n\tCLOCK_MONOTONIC_PRECISE        = 0xb\n\tCLOCK_PROCESS_CPUTIME_ID       = 0xf\n\tCLOCK_PROF                     = 0x2\n\tCLOCK_REALTIME                 = 0x0\n\tCLOCK_REALTIME_FAST            = 0xa\n\tCLOCK_REALTIME_PRECISE         = 0x9\n\tCLOCK_SECOND                   = 0xd\n\tCLOCK_THREAD_CPUTIME_ID        = 0xe\n\tCLOCK_UPTIME                   = 0x5\n\tCLOCK_UPTIME_FAST              = 0x8\n\tCLOCK_UPTIME_PRECISE           = 0x7\n\tCLOCK_VIRTUAL                  = 0x1\n\tCPUSTATES                      = 0x5\n\tCP_IDLE                        = 0x4\n\tCP_INTR                        = 0x3\n\tCP_NICE                        = 0x1\n\tCP_SYS                         = 0x2\n\tCP_USER                        = 0x0\n\tCREAD                          = 0x800\n\tCRTSCTS                        = 0x30000\n\tCS5                            = 0x0\n\tCS6                            = 0x100\n\tCS7                            = 0x200\n\tCS8                            = 0x300\n\tCSIZE                          = 0x300\n\tCSTART                         = 0x11\n\tCSTATUS                        = 0x14\n\tCSTOP                          = 0x13\n\tCSTOPB                         = 0x400\n\tCSUSP                          = 0x1a\n\tCTL_HW                         = 0x6\n\tCTL_KERN                       = 0x1\n\tCTL_MAXNAME                    = 0x18\n\tCTL_NET                        = 0x4\n\tDIOCGATTR                      = 0xc148648e\n\tDIOCGDELETE                    = 0x80106488\n\tDIOCGFLUSH                     = 0x20006487\n\tDIOCGFRONTSTUFF                = 0x40086486\n\tDIOCGFWHEADS                   = 0x40046483\n\tDIOCGFWSECTORS                 = 0x40046482\n\tDIOCGIDENT                     = 0x41006489\n\tDIOCGMEDIASIZE                 = 0x40086481\n\tDIOCGPHYSPATH                  = 0x4400648d\n\tDIOCGPROVIDERNAME              = 0x4400648a\n\tDIOCGSECTORSIZE                = 0x40046480\n\tDIOCGSTRIPEOFFSET              = 0x4008648c\n\tDIOCGSTRIPESIZE                = 0x4008648b\n\tDIOCSKERNELDUMP                = 0x80506490\n\tDIOCSKERNELDUMP_FREEBSD11      = 0x80046485\n\tDIOCZONECMD                    = 0xc080648f\n\tDLT_A429                       = 0xb8\n\tDLT_A653_ICM                   = 0xb9\n\tDLT_AIRONET_HEADER             = 0x78\n\tDLT_AOS                        = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394     = 0x8a\n\tDLT_ARCNET                     = 0x7\n\tDLT_ARCNET_LINUX               = 0x81\n\tDLT_ATM_CLIP                   = 0x13\n\tDLT_ATM_RFC1483                = 0xb\n\tDLT_AURORA                     = 0x7e\n\tDLT_AX25                       = 0x3\n\tDLT_AX25_KISS                  = 0xca\n\tDLT_BACNET_MS_TP               = 0xa5\n\tDLT_BLUETOOTH_BREDR_BB         = 0xff\n\tDLT_BLUETOOTH_HCI_H4           = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9\n\tDLT_BLUETOOTH_LE_LL            = 0xfb\n\tDLT_BLUETOOTH_LE_LL_WITH_PHDR  = 0x100\n\tDLT_BLUETOOTH_LINUX_MONITOR    = 0xfe\n\tDLT_CAN20B                     = 0xbe\n\tDLT_CAN_SOCKETCAN              = 0xe3\n\tDLT_CHAOS                      = 0x5\n\tDLT_CHDLC                      = 0x68\n\tDLT_CISCO_IOS                  = 0x76\n\tDLT_CLASS_NETBSD_RAWAF         = 0x2240000\n\tDLT_C_HDLC                     = 0x68\n\tDLT_C_HDLC_WITH_DIR            = 0xcd\n\tDLT_DBUS                       = 0xe7\n\tDLT_DECT                       = 0xdd\n\tDLT_DISPLAYPORT_AUX            = 0x113\n\tDLT_DOCSIS                     = 0x8f\n\tDLT_DOCSIS31_XRA31             = 0x111\n\tDLT_DVB_CI                     = 0xeb\n\tDLT_ECONET                     = 0x73\n\tDLT_EN10MB                     = 0x1\n\tDLT_EN3MB                      = 0x2\n\tDLT_ENC                        = 0x6d\n\tDLT_EPON                       = 0x103\n\tDLT_ERF                        = 0xc5\n\tDLT_ERF_ETH                    = 0xaf\n\tDLT_ERF_POS                    = 0xb0\n\tDLT_ETHERNET_MPACKET           = 0x112\n\tDLT_FC_2                       = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS     = 0xe1\n\tDLT_FDDI                       = 0xa\n\tDLT_FLEXRAY                    = 0xd2\n\tDLT_FRELAY                     = 0x6b\n\tDLT_FRELAY_WITH_DIR            = 0xce\n\tDLT_GCOM_SERIAL                = 0xad\n\tDLT_GCOM_T1E1                  = 0xac\n\tDLT_GPF_F                      = 0xab\n\tDLT_GPF_T                      = 0xaa\n\tDLT_GPRS_LLC                   = 0xa9\n\tDLT_GSMTAP_ABIS                = 0xda\n\tDLT_GSMTAP_UM                  = 0xd9\n\tDLT_IBM_SN                     = 0x92\n\tDLT_IBM_SP                     = 0x91\n\tDLT_IEEE802                    = 0x6\n\tDLT_IEEE802_11                 = 0x69\n\tDLT_IEEE802_11_RADIO           = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS       = 0xa3\n\tDLT_IEEE802_15_4               = 0xc3\n\tDLT_IEEE802_15_4_LINUX         = 0xbf\n\tDLT_IEEE802_15_4_NOFCS         = 0xe6\n\tDLT_IEEE802_15_4_NONASK_PHY    = 0xd7\n\tDLT_IEEE802_16_MAC_CPS         = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO   = 0xc1\n\tDLT_INFINIBAND                 = 0xf7\n\tDLT_IPFILTER                   = 0x74\n\tDLT_IPMB_KONTRON               = 0xc7\n\tDLT_IPMB_LINUX                 = 0xd1\n\tDLT_IPMI_HPM_2                 = 0x104\n\tDLT_IPNET                      = 0xe2\n\tDLT_IPOIB                      = 0xf2\n\tDLT_IPV4                       = 0xe4\n\tDLT_IPV6                       = 0xe5\n\tDLT_IP_OVER_FC                 = 0x7a\n\tDLT_ISO_14443                  = 0x108\n\tDLT_JUNIPER_ATM1               = 0x89\n\tDLT_JUNIPER_ATM2               = 0x87\n\tDLT_JUNIPER_ATM_CEMIC          = 0xee\n\tDLT_JUNIPER_CHDLC              = 0xb5\n\tDLT_JUNIPER_ES                 = 0x84\n\tDLT_JUNIPER_ETHER              = 0xb2\n\tDLT_JUNIPER_FIBRECHANNEL       = 0xea\n\tDLT_JUNIPER_FRELAY             = 0xb4\n\tDLT_JUNIPER_GGSN               = 0x85\n\tDLT_JUNIPER_ISM                = 0xc2\n\tDLT_JUNIPER_MFR                = 0x86\n\tDLT_JUNIPER_MLFR               = 0x83\n\tDLT_JUNIPER_MLPPP              = 0x82\n\tDLT_JUNIPER_MONITOR            = 0xa4\n\tDLT_JUNIPER_PIC_PEER           = 0xae\n\tDLT_JUNIPER_PPP                = 0xb3\n\tDLT_JUNIPER_PPPOE              = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM          = 0xa8\n\tDLT_JUNIPER_SERVICES           = 0x88\n\tDLT_JUNIPER_SRX_E2E            = 0xe9\n\tDLT_JUNIPER_ST                 = 0xc8\n\tDLT_JUNIPER_VP                 = 0xb7\n\tDLT_JUNIPER_VS                 = 0xe8\n\tDLT_LAPB_WITH_DIR              = 0xcf\n\tDLT_LAPD                       = 0xcb\n\tDLT_LIN                        = 0xd4\n\tDLT_LINUX_EVDEV                = 0xd8\n\tDLT_LINUX_IRDA                 = 0x90\n\tDLT_LINUX_LAPD                 = 0xb1\n\tDLT_LINUX_PPP_WITHDIRECTION    = 0xa6\n\tDLT_LINUX_SLL                  = 0x71\n\tDLT_LINUX_SLL2                 = 0x114\n\tDLT_LOOP                       = 0x6c\n\tDLT_LORATAP                    = 0x10e\n\tDLT_LTALK                      = 0x72\n\tDLT_MATCHING_MAX               = 0x114\n\tDLT_MATCHING_MIN               = 0x68\n\tDLT_MFR                        = 0xb6\n\tDLT_MOST                       = 0xd3\n\tDLT_MPEG_2_TS                  = 0xf3\n\tDLT_MPLS                       = 0xdb\n\tDLT_MTP2                       = 0x8c\n\tDLT_MTP2_WITH_PHDR             = 0x8b\n\tDLT_MTP3                       = 0x8d\n\tDLT_MUX27010                   = 0xec\n\tDLT_NETANALYZER                = 0xf0\n\tDLT_NETANALYZER_TRANSPARENT    = 0xf1\n\tDLT_NETLINK                    = 0xfd\n\tDLT_NFC_LLCP                   = 0xf5\n\tDLT_NFLOG                      = 0xef\n\tDLT_NG40                       = 0xf4\n\tDLT_NORDIC_BLE                 = 0x110\n\tDLT_NULL                       = 0x0\n\tDLT_OPENFLOW                   = 0x10b\n\tDLT_PCI_EXP                    = 0x7d\n\tDLT_PFLOG                      = 0x75\n\tDLT_PFSYNC                     = 0x79\n\tDLT_PKTAP                      = 0x102\n\tDLT_PPI                        = 0xc0\n\tDLT_PPP                        = 0x9\n\tDLT_PPP_BSDOS                  = 0xe\n\tDLT_PPP_ETHER                  = 0x33\n\tDLT_PPP_PPPD                   = 0xa6\n\tDLT_PPP_SERIAL                 = 0x32\n\tDLT_PPP_WITH_DIR               = 0xcc\n\tDLT_PPP_WITH_DIRECTION         = 0xa6\n\tDLT_PRISM_HEADER               = 0x77\n\tDLT_PROFIBUS_DL                = 0x101\n\tDLT_PRONET                     = 0x4\n\tDLT_RAIF1                      = 0xc6\n\tDLT_RAW                        = 0xc\n\tDLT_RDS                        = 0x109\n\tDLT_REDBACK_SMARTEDGE          = 0x20\n\tDLT_RIO                        = 0x7c\n\tDLT_RTAC_SERIAL                = 0xfa\n\tDLT_SCCP                       = 0x8e\n\tDLT_SCTP                       = 0xf8\n\tDLT_SDLC                       = 0x10c\n\tDLT_SITA                       = 0xc4\n\tDLT_SLIP                       = 0x8\n\tDLT_SLIP_BSDOS                 = 0xd\n\tDLT_STANAG_5066_D_PDU          = 0xed\n\tDLT_SUNATM                     = 0x7b\n\tDLT_SYMANTEC_FIREWALL          = 0x63\n\tDLT_TI_LLN_SNIFFER             = 0x10d\n\tDLT_TZSP                       = 0x80\n\tDLT_USB                        = 0xba\n\tDLT_USBPCAP                    = 0xf9\n\tDLT_USB_DARWIN                 = 0x10a\n\tDLT_USB_FREEBSD                = 0xba\n\tDLT_USB_LINUX                  = 0xbd\n\tDLT_USB_LINUX_MMAPPED          = 0xdc\n\tDLT_USER0                      = 0x93\n\tDLT_USER1                      = 0x94\n\tDLT_USER10                     = 0x9d\n\tDLT_USER11                     = 0x9e\n\tDLT_USER12                     = 0x9f\n\tDLT_USER13                     = 0xa0\n\tDLT_USER14                     = 0xa1\n\tDLT_USER15                     = 0xa2\n\tDLT_USER2                      = 0x95\n\tDLT_USER3                      = 0x96\n\tDLT_USER4                      = 0x97\n\tDLT_USER5                      = 0x98\n\tDLT_USER6                      = 0x99\n\tDLT_USER7                      = 0x9a\n\tDLT_USER8                      = 0x9b\n\tDLT_USER9                      = 0x9c\n\tDLT_VSOCK                      = 0x10f\n\tDLT_WATTSTOPPER_DLM            = 0x107\n\tDLT_WIHART                     = 0xdf\n\tDLT_WIRESHARK_UPPER_PDU        = 0xfc\n\tDLT_X2E_SERIAL                 = 0xd5\n\tDLT_X2E_XORAYA                 = 0xd6\n\tDLT_ZWAVE_R1_R2                = 0x105\n\tDLT_ZWAVE_R3                   = 0x106\n\tDT_BLK                         = 0x6\n\tDT_CHR                         = 0x2\n\tDT_DIR                         = 0x4\n\tDT_FIFO                        = 0x1\n\tDT_LNK                         = 0xa\n\tDT_REG                         = 0x8\n\tDT_SOCK                        = 0xc\n\tDT_UNKNOWN                     = 0x0\n\tDT_WHT                         = 0xe\n\tECHO                           = 0x8\n\tECHOCTL                        = 0x40\n\tECHOE                          = 0x2\n\tECHOK                          = 0x4\n\tECHOKE                         = 0x1\n\tECHONL                         = 0x10\n\tECHOPRT                        = 0x20\n\tEVFILT_AIO                     = -0x3\n\tEVFILT_EMPTY                   = -0xd\n\tEVFILT_FS                      = -0x9\n\tEVFILT_LIO                     = -0xa\n\tEVFILT_PROC                    = -0x5\n\tEVFILT_PROCDESC                = -0x8\n\tEVFILT_READ                    = -0x1\n\tEVFILT_SENDFILE                = -0xc\n\tEVFILT_SIGNAL                  = -0x6\n\tEVFILT_SYSCOUNT                = 0xd\n\tEVFILT_TIMER                   = -0x7\n\tEVFILT_USER                    = -0xb\n\tEVFILT_VNODE                   = -0x4\n\tEVFILT_WRITE                   = -0x2\n\tEVNAMEMAP_NAME_SIZE            = 0x40\n\tEV_ADD                         = 0x1\n\tEV_CLEAR                       = 0x20\n\tEV_DELETE                      = 0x2\n\tEV_DISABLE                     = 0x8\n\tEV_DISPATCH                    = 0x80\n\tEV_DROP                        = 0x1000\n\tEV_ENABLE                      = 0x4\n\tEV_EOF                         = 0x8000\n\tEV_ERROR                       = 0x4000\n\tEV_FLAG1                       = 0x2000\n\tEV_FLAG2                       = 0x4000\n\tEV_FORCEONESHOT                = 0x100\n\tEV_ONESHOT                     = 0x10\n\tEV_RECEIPT                     = 0x40\n\tEV_SYSFLAGS                    = 0xf000\n\tEXTA                           = 0x4b00\n\tEXTATTR_MAXNAMELEN             = 0xff\n\tEXTATTR_NAMESPACE_EMPTY        = 0x0\n\tEXTATTR_NAMESPACE_SYSTEM       = 0x2\n\tEXTATTR_NAMESPACE_USER         = 0x1\n\tEXTB                           = 0x9600\n\tEXTPROC                        = 0x800\n\tFD_CLOEXEC                     = 0x1\n\tFD_SETSIZE                     = 0x400\n\tFLUSHO                         = 0x800000\n\tF_CANCEL                       = 0x5\n\tF_DUP2FD                       = 0xa\n\tF_DUP2FD_CLOEXEC               = 0x12\n\tF_DUPFD                        = 0x0\n\tF_DUPFD_CLOEXEC                = 0x11\n\tF_GETFD                        = 0x1\n\tF_GETFL                        = 0x3\n\tF_GETLK                        = 0xb\n\tF_GETOWN                       = 0x5\n\tF_OGETLK                       = 0x7\n\tF_OK                           = 0x0\n\tF_OSETLK                       = 0x8\n\tF_OSETLKW                      = 0x9\n\tF_RDAHEAD                      = 0x10\n\tF_RDLCK                        = 0x1\n\tF_READAHEAD                    = 0xf\n\tF_SETFD                        = 0x2\n\tF_SETFL                        = 0x4\n\tF_SETLK                        = 0xc\n\tF_SETLKW                       = 0xd\n\tF_SETLK_REMOTE                 = 0xe\n\tF_SETOWN                       = 0x6\n\tF_UNLCK                        = 0x2\n\tF_UNLCKSYS                     = 0x4\n\tF_WRLCK                        = 0x3\n\tHUPCL                          = 0x4000\n\tHW_MACHINE                     = 0x1\n\tICANON                         = 0x100\n\tICMP6_FILTER                   = 0x12\n\tICRNL                          = 0x100\n\tIEXTEN                         = 0x400\n\tIFAN_ARRIVAL                   = 0x0\n\tIFAN_DEPARTURE                 = 0x1\n\tIFCAP_WOL_MAGIC                = 0x2000\n\tIFF_ALLMULTI                   = 0x200\n\tIFF_ALTPHYS                    = 0x4000\n\tIFF_BROADCAST                  = 0x2\n\tIFF_CANTCHANGE                 = 0x218f52\n\tIFF_CANTCONFIG                 = 0x10000\n\tIFF_DEBUG                      = 0x4\n\tIFF_DRV_OACTIVE                = 0x400\n\tIFF_DRV_RUNNING                = 0x40\n\tIFF_DYING                      = 0x200000\n\tIFF_LINK0                      = 0x1000\n\tIFF_LINK1                      = 0x2000\n\tIFF_LINK2                      = 0x4000\n\tIFF_LOOPBACK                   = 0x8\n\tIFF_MONITOR                    = 0x40000\n\tIFF_MULTICAST                  = 0x8000\n\tIFF_NOARP                      = 0x80\n\tIFF_NOGROUP                    = 0x800000\n\tIFF_OACTIVE                    = 0x400\n\tIFF_POINTOPOINT                = 0x10\n\tIFF_PPROMISC                   = 0x20000\n\tIFF_PROMISC                    = 0x100\n\tIFF_RENAMING                   = 0x400000\n\tIFF_RUNNING                    = 0x40\n\tIFF_SIMPLEX                    = 0x800\n\tIFF_STATICARP                  = 0x80000\n\tIFF_UP                         = 0x1\n\tIFNAMSIZ                       = 0x10\n\tIFT_BRIDGE                     = 0xd1\n\tIFT_CARP                       = 0xf8\n\tIFT_IEEE1394                   = 0x90\n\tIFT_INFINIBAND                 = 0xc7\n\tIFT_L2VLAN                     = 0x87\n\tIFT_L3IPVLAN                   = 0x88\n\tIFT_PPP                        = 0x17\n\tIFT_PROPVIRTUAL                = 0x35\n\tIGNBRK                         = 0x1\n\tIGNCR                          = 0x80\n\tIGNPAR                         = 0x4\n\tIMAXBEL                        = 0x2000\n\tINLCR                          = 0x40\n\tINPCK                          = 0x10\n\tIN_CLASSA_HOST                 = 0xffffff\n\tIN_CLASSA_MAX                  = 0x80\n\tIN_CLASSA_NET                  = 0xff000000\n\tIN_CLASSA_NSHIFT               = 0x18\n\tIN_CLASSB_HOST                 = 0xffff\n\tIN_CLASSB_MAX                  = 0x10000\n\tIN_CLASSB_NET                  = 0xffff0000\n\tIN_CLASSB_NSHIFT               = 0x10\n\tIN_CLASSC_HOST                 = 0xff\n\tIN_CLASSC_NET                  = 0xffffff00\n\tIN_CLASSC_NSHIFT               = 0x8\n\tIN_CLASSD_HOST                 = 0xfffffff\n\tIN_CLASSD_NET                  = 0xf0000000\n\tIN_CLASSD_NSHIFT               = 0x1c\n\tIN_LOOPBACKNET                 = 0x7f\n\tIN_RFC3021_MASK                = 0xfffffffe\n\tIPPROTO_3PC                    = 0x22\n\tIPPROTO_ADFS                   = 0x44\n\tIPPROTO_AH                     = 0x33\n\tIPPROTO_AHIP                   = 0x3d\n\tIPPROTO_APES                   = 0x63\n\tIPPROTO_ARGUS                  = 0xd\n\tIPPROTO_AX25                   = 0x5d\n\tIPPROTO_BHA                    = 0x31\n\tIPPROTO_BLT                    = 0x1e\n\tIPPROTO_BRSATMON               = 0x4c\n\tIPPROTO_CARP                   = 0x70\n\tIPPROTO_CFTP                   = 0x3e\n\tIPPROTO_CHAOS                  = 0x10\n\tIPPROTO_CMTP                   = 0x26\n\tIPPROTO_CPHB                   = 0x49\n\tIPPROTO_CPNX                   = 0x48\n\tIPPROTO_DCCP                   = 0x21\n\tIPPROTO_DDP                    = 0x25\n\tIPPROTO_DGP                    = 0x56\n\tIPPROTO_DIVERT                 = 0x102\n\tIPPROTO_DONE                   = 0x101\n\tIPPROTO_DSTOPTS                = 0x3c\n\tIPPROTO_EGP                    = 0x8\n\tIPPROTO_EMCON                  = 0xe\n\tIPPROTO_ENCAP                  = 0x62\n\tIPPROTO_EON                    = 0x50\n\tIPPROTO_ESP                    = 0x32\n\tIPPROTO_ETHERIP                = 0x61\n\tIPPROTO_FRAGMENT               = 0x2c\n\tIPPROTO_GGP                    = 0x3\n\tIPPROTO_GMTP                   = 0x64\n\tIPPROTO_GRE                    = 0x2f\n\tIPPROTO_HELLO                  = 0x3f\n\tIPPROTO_HIP                    = 0x8b\n\tIPPROTO_HMP                    = 0x14\n\tIPPROTO_HOPOPTS                = 0x0\n\tIPPROTO_ICMP                   = 0x1\n\tIPPROTO_ICMPV6                 = 0x3a\n\tIPPROTO_IDP                    = 0x16\n\tIPPROTO_IDPR                   = 0x23\n\tIPPROTO_IDRP                   = 0x2d\n\tIPPROTO_IGMP                   = 0x2\n\tIPPROTO_IGP                    = 0x55\n\tIPPROTO_IGRP                   = 0x58\n\tIPPROTO_IL                     = 0x28\n\tIPPROTO_INLSP                  = 0x34\n\tIPPROTO_INP                    = 0x20\n\tIPPROTO_IP                     = 0x0\n\tIPPROTO_IPCOMP                 = 0x6c\n\tIPPROTO_IPCV                   = 0x47\n\tIPPROTO_IPEIP                  = 0x5e\n\tIPPROTO_IPIP                   = 0x4\n\tIPPROTO_IPPC                   = 0x43\n\tIPPROTO_IPV4                   = 0x4\n\tIPPROTO_IPV6                   = 0x29\n\tIPPROTO_IRTP                   = 0x1c\n\tIPPROTO_KRYPTOLAN              = 0x41\n\tIPPROTO_LARP                   = 0x5b\n\tIPPROTO_LEAF1                  = 0x19\n\tIPPROTO_LEAF2                  = 0x1a\n\tIPPROTO_MAX                    = 0x100\n\tIPPROTO_MEAS                   = 0x13\n\tIPPROTO_MH                     = 0x87\n\tIPPROTO_MHRP                   = 0x30\n\tIPPROTO_MICP                   = 0x5f\n\tIPPROTO_MOBILE                 = 0x37\n\tIPPROTO_MPLS                   = 0x89\n\tIPPROTO_MTP                    = 0x5c\n\tIPPROTO_MUX                    = 0x12\n\tIPPROTO_ND                     = 0x4d\n\tIPPROTO_NHRP                   = 0x36\n\tIPPROTO_NONE                   = 0x3b\n\tIPPROTO_NSP                    = 0x1f\n\tIPPROTO_NVPII                  = 0xb\n\tIPPROTO_OLD_DIVERT             = 0xfe\n\tIPPROTO_OSPFIGP                = 0x59\n\tIPPROTO_PFSYNC                 = 0xf0\n\tIPPROTO_PGM                    = 0x71\n\tIPPROTO_PIGP                   = 0x9\n\tIPPROTO_PIM                    = 0x67\n\tIPPROTO_PRM                    = 0x15\n\tIPPROTO_PUP                    = 0xc\n\tIPPROTO_PVP                    = 0x4b\n\tIPPROTO_RAW                    = 0xff\n\tIPPROTO_RCCMON                 = 0xa\n\tIPPROTO_RDP                    = 0x1b\n\tIPPROTO_RESERVED_253           = 0xfd\n\tIPPROTO_RESERVED_254           = 0xfe\n\tIPPROTO_ROUTING                = 0x2b\n\tIPPROTO_RSVP                   = 0x2e\n\tIPPROTO_RVD                    = 0x42\n\tIPPROTO_SATEXPAK               = 0x40\n\tIPPROTO_SATMON                 = 0x45\n\tIPPROTO_SCCSP                  = 0x60\n\tIPPROTO_SCTP                   = 0x84\n\tIPPROTO_SDRP                   = 0x2a\n\tIPPROTO_SEND                   = 0x103\n\tIPPROTO_SHIM6                  = 0x8c\n\tIPPROTO_SKIP                   = 0x39\n\tIPPROTO_SPACER                 = 0x7fff\n\tIPPROTO_SRPC                   = 0x5a\n\tIPPROTO_ST                     = 0x7\n\tIPPROTO_SVMTP                  = 0x52\n\tIPPROTO_SWIPE                  = 0x35\n\tIPPROTO_TCF                    = 0x57\n\tIPPROTO_TCP                    = 0x6\n\tIPPROTO_TLSP                   = 0x38\n\tIPPROTO_TP                     = 0x1d\n\tIPPROTO_TPXX                   = 0x27\n\tIPPROTO_TRUNK1                 = 0x17\n\tIPPROTO_TRUNK2                 = 0x18\n\tIPPROTO_TTP                    = 0x54\n\tIPPROTO_UDP                    = 0x11\n\tIPPROTO_UDPLITE                = 0x88\n\tIPPROTO_VINES                  = 0x53\n\tIPPROTO_VISA                   = 0x46\n\tIPPROTO_VMTP                   = 0x51\n\tIPPROTO_WBEXPAK                = 0x4f\n\tIPPROTO_WBMON                  = 0x4e\n\tIPPROTO_WSN                    = 0x4a\n\tIPPROTO_XNET                   = 0xf\n\tIPPROTO_XTP                    = 0x24\n\tIPV6_AUTOFLOWLABEL             = 0x3b\n\tIPV6_BINDANY                   = 0x40\n\tIPV6_BINDMULTI                 = 0x41\n\tIPV6_BINDV6ONLY                = 0x1b\n\tIPV6_CHECKSUM                  = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS    = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP    = 0x1\n\tIPV6_DEFHLIM                   = 0x40\n\tIPV6_DONTFRAG                  = 0x3e\n\tIPV6_DSTOPTS                   = 0x32\n\tIPV6_FLOWID                    = 0x43\n\tIPV6_FLOWINFO_MASK             = 0xffffff0f\n\tIPV6_FLOWLABEL_LEN             = 0x14\n\tIPV6_FLOWLABEL_MASK            = 0xffff0f00\n\tIPV6_FLOWTYPE                  = 0x44\n\tIPV6_FRAGTTL                   = 0x78\n\tIPV6_FW_ADD                    = 0x1e\n\tIPV6_FW_DEL                    = 0x1f\n\tIPV6_FW_FLUSH                  = 0x20\n\tIPV6_FW_GET                    = 0x22\n\tIPV6_FW_ZERO                   = 0x21\n\tIPV6_HLIMDEC                   = 0x1\n\tIPV6_HOPLIMIT                  = 0x2f\n\tIPV6_HOPOPTS                   = 0x31\n\tIPV6_IPSEC_POLICY              = 0x1c\n\tIPV6_JOIN_GROUP                = 0xc\n\tIPV6_LEAVE_GROUP               = 0xd\n\tIPV6_MAXHLIM                   = 0xff\n\tIPV6_MAXOPTHDR                 = 0x800\n\tIPV6_MAXPACKET                 = 0xffff\n\tIPV6_MAX_GROUP_SRC_FILTER      = 0x200\n\tIPV6_MAX_MEMBERSHIPS           = 0xfff\n\tIPV6_MAX_SOCK_SRC_FILTER       = 0x80\n\tIPV6_MMTU                      = 0x500\n\tIPV6_MSFILTER                  = 0x4a\n\tIPV6_MULTICAST_HOPS            = 0xa\n\tIPV6_MULTICAST_IF              = 0x9\n\tIPV6_MULTICAST_LOOP            = 0xb\n\tIPV6_NEXTHOP                   = 0x30\n\tIPV6_ORIGDSTADDR               = 0x48\n\tIPV6_PATHMTU                   = 0x2c\n\tIPV6_PKTINFO                   = 0x2e\n\tIPV6_PORTRANGE                 = 0xe\n\tIPV6_PORTRANGE_DEFAULT         = 0x0\n\tIPV6_PORTRANGE_HIGH            = 0x1\n\tIPV6_PORTRANGE_LOW             = 0x2\n\tIPV6_PREFER_TEMPADDR           = 0x3f\n\tIPV6_RECVDSTOPTS               = 0x28\n\tIPV6_RECVFLOWID                = 0x46\n\tIPV6_RECVHOPLIMIT              = 0x25\n\tIPV6_RECVHOPOPTS               = 0x27\n\tIPV6_RECVORIGDSTADDR           = 0x48\n\tIPV6_RECVPATHMTU               = 0x2b\n\tIPV6_RECVPKTINFO               = 0x24\n\tIPV6_RECVRSSBUCKETID           = 0x47\n\tIPV6_RECVRTHDR                 = 0x26\n\tIPV6_RECVTCLASS                = 0x39\n\tIPV6_RSSBUCKETID               = 0x45\n\tIPV6_RSS_LISTEN_BUCKET         = 0x42\n\tIPV6_RTHDR                     = 0x33\n\tIPV6_RTHDRDSTOPTS              = 0x23\n\tIPV6_RTHDR_LOOSE               = 0x0\n\tIPV6_RTHDR_STRICT              = 0x1\n\tIPV6_RTHDR_TYPE_0              = 0x0\n\tIPV6_SOCKOPT_RESERVED1         = 0x3\n\tIPV6_TCLASS                    = 0x3d\n\tIPV6_UNICAST_HOPS              = 0x4\n\tIPV6_USE_MIN_MTU               = 0x2a\n\tIPV6_V6ONLY                    = 0x1b\n\tIPV6_VERSION                   = 0x60\n\tIPV6_VERSION_MASK              = 0xf0\n\tIPV6_VLAN_PCP                  = 0x4b\n\tIP_ADD_MEMBERSHIP              = 0xc\n\tIP_ADD_SOURCE_MEMBERSHIP       = 0x46\n\tIP_BINDANY                     = 0x18\n\tIP_BINDMULTI                   = 0x19\n\tIP_BLOCK_SOURCE                = 0x48\n\tIP_DEFAULT_MULTICAST_LOOP      = 0x1\n\tIP_DEFAULT_MULTICAST_TTL       = 0x1\n\tIP_DF                          = 0x4000\n\tIP_DONTFRAG                    = 0x43\n\tIP_DROP_MEMBERSHIP             = 0xd\n\tIP_DROP_SOURCE_MEMBERSHIP      = 0x47\n\tIP_DUMMYNET3                   = 0x31\n\tIP_DUMMYNET_CONFIGURE          = 0x3c\n\tIP_DUMMYNET_DEL                = 0x3d\n\tIP_DUMMYNET_FLUSH              = 0x3e\n\tIP_DUMMYNET_GET                = 0x40\n\tIP_FLOWID                      = 0x5a\n\tIP_FLOWTYPE                    = 0x5b\n\tIP_FW3                         = 0x30\n\tIP_FW_ADD                      = 0x32\n\tIP_FW_DEL                      = 0x33\n\tIP_FW_FLUSH                    = 0x34\n\tIP_FW_GET                      = 0x36\n\tIP_FW_NAT_CFG                  = 0x38\n\tIP_FW_NAT_DEL                  = 0x39\n\tIP_FW_NAT_GET_CONFIG           = 0x3a\n\tIP_FW_NAT_GET_LOG              = 0x3b\n\tIP_FW_RESETLOG                 = 0x37\n\tIP_FW_TABLE_ADD                = 0x28\n\tIP_FW_TABLE_DEL                = 0x29\n\tIP_FW_TABLE_FLUSH              = 0x2a\n\tIP_FW_TABLE_GETSIZE            = 0x2b\n\tIP_FW_TABLE_LIST               = 0x2c\n\tIP_FW_ZERO                     = 0x35\n\tIP_HDRINCL                     = 0x2\n\tIP_IPSEC_POLICY                = 0x15\n\tIP_MAXPACKET                   = 0xffff\n\tIP_MAX_GROUP_SRC_FILTER        = 0x200\n\tIP_MAX_MEMBERSHIPS             = 0xfff\n\tIP_MAX_SOCK_MUTE_FILTER        = 0x80\n\tIP_MAX_SOCK_SRC_FILTER         = 0x80\n\tIP_MF                          = 0x2000\n\tIP_MINTTL                      = 0x42\n\tIP_MSFILTER                    = 0x4a\n\tIP_MSS                         = 0x240\n\tIP_MULTICAST_IF                = 0x9\n\tIP_MULTICAST_LOOP              = 0xb\n\tIP_MULTICAST_TTL               = 0xa\n\tIP_MULTICAST_VIF               = 0xe\n\tIP_OFFMASK                     = 0x1fff\n\tIP_ONESBCAST                   = 0x17\n\tIP_OPTIONS                     = 0x1\n\tIP_ORIGDSTADDR                 = 0x1b\n\tIP_PORTRANGE                   = 0x13\n\tIP_PORTRANGE_DEFAULT           = 0x0\n\tIP_PORTRANGE_HIGH              = 0x1\n\tIP_PORTRANGE_LOW               = 0x2\n\tIP_RECVDSTADDR                 = 0x7\n\tIP_RECVFLOWID                  = 0x5d\n\tIP_RECVIF                      = 0x14\n\tIP_RECVOPTS                    = 0x5\n\tIP_RECVORIGDSTADDR             = 0x1b\n\tIP_RECVRETOPTS                 = 0x6\n\tIP_RECVRSSBUCKETID             = 0x5e\n\tIP_RECVTOS                     = 0x44\n\tIP_RECVTTL                     = 0x41\n\tIP_RETOPTS                     = 0x8\n\tIP_RF                          = 0x8000\n\tIP_RSSBUCKETID                 = 0x5c\n\tIP_RSS_LISTEN_BUCKET           = 0x1a\n\tIP_RSVP_OFF                    = 0x10\n\tIP_RSVP_ON                     = 0xf\n\tIP_RSVP_VIF_OFF                = 0x12\n\tIP_RSVP_VIF_ON                 = 0x11\n\tIP_SENDSRCADDR                 = 0x7\n\tIP_TOS                         = 0x3\n\tIP_TTL                         = 0x4\n\tIP_UNBLOCK_SOURCE              = 0x49\n\tIP_VLAN_PCP                    = 0x4b\n\tISIG                           = 0x80\n\tISTRIP                         = 0x20\n\tITIMER_PROF                    = 0x2\n\tITIMER_REAL                    = 0x0\n\tITIMER_VIRTUAL                 = 0x1\n\tIXANY                          = 0x800\n\tIXOFF                          = 0x400\n\tIXON                           = 0x200\n\tKERN_HOSTNAME                  = 0xa\n\tKERN_OSRELEASE                 = 0x2\n\tKERN_OSTYPE                    = 0x1\n\tKERN_VERSION                   = 0x4\n\tLOCAL_CONNWAIT                 = 0x4\n\tLOCAL_CREDS                    = 0x2\n\tLOCAL_PEERCRED                 = 0x1\n\tLOCAL_VENDOR                   = 0x80000000\n\tLOCK_EX                        = 0x2\n\tLOCK_NB                        = 0x4\n\tLOCK_SH                        = 0x1\n\tLOCK_UN                        = 0x8\n\tMADV_AUTOSYNC                  = 0x7\n\tMADV_CORE                      = 0x9\n\tMADV_DONTNEED                  = 0x4\n\tMADV_FREE                      = 0x5\n\tMADV_NOCORE                    = 0x8\n\tMADV_NORMAL                    = 0x0\n\tMADV_NOSYNC                    = 0x6\n\tMADV_PROTECT                   = 0xa\n\tMADV_RANDOM                    = 0x1\n\tMADV_SEQUENTIAL                = 0x2\n\tMADV_WILLNEED                  = 0x3\n\tMAP_32BIT                      = 0x80000\n\tMAP_ALIGNED_SUPER              = 0x1000000\n\tMAP_ALIGNMENT_MASK             = -0x1000000\n\tMAP_ALIGNMENT_SHIFT            = 0x18\n\tMAP_ANON                       = 0x1000\n\tMAP_ANONYMOUS                  = 0x1000\n\tMAP_COPY                       = 0x2\n\tMAP_EXCL                       = 0x4000\n\tMAP_FILE                       = 0x0\n\tMAP_FIXED                      = 0x10\n\tMAP_GUARD                      = 0x2000\n\tMAP_HASSEMAPHORE               = 0x200\n\tMAP_NOCORE                     = 0x20000\n\tMAP_NOSYNC                     = 0x800\n\tMAP_PREFAULT_READ              = 0x40000\n\tMAP_PRIVATE                    = 0x2\n\tMAP_RESERVED0020               = 0x20\n\tMAP_RESERVED0040               = 0x40\n\tMAP_RESERVED0080               = 0x80\n\tMAP_RESERVED0100               = 0x100\n\tMAP_SHARED                     = 0x1\n\tMAP_STACK                      = 0x400\n\tMCAST_BLOCK_SOURCE             = 0x54\n\tMCAST_EXCLUDE                  = 0x2\n\tMCAST_INCLUDE                  = 0x1\n\tMCAST_JOIN_GROUP               = 0x50\n\tMCAST_JOIN_SOURCE_GROUP        = 0x52\n\tMCAST_LEAVE_GROUP              = 0x51\n\tMCAST_LEAVE_SOURCE_GROUP       = 0x53\n\tMCAST_UNBLOCK_SOURCE           = 0x55\n\tMCAST_UNDEFINED                = 0x0\n\tMCL_CURRENT                    = 0x1\n\tMCL_FUTURE                     = 0x2\n\tMNT_ACLS                       = 0x8000000\n\tMNT_ASYNC                      = 0x40\n\tMNT_AUTOMOUNTED                = 0x200000000\n\tMNT_BYFSID                     = 0x8000000\n\tMNT_CMDFLAGS                   = 0xd0f0000\n\tMNT_DEFEXPORTED                = 0x200\n\tMNT_DELEXPORT                  = 0x20000\n\tMNT_EXKERB                     = 0x800\n\tMNT_EXPORTANON                 = 0x400\n\tMNT_EXPORTED                   = 0x100\n\tMNT_EXPUBLIC                   = 0x20000000\n\tMNT_EXRDONLY                   = 0x80\n\tMNT_FORCE                      = 0x80000\n\tMNT_GJOURNAL                   = 0x2000000\n\tMNT_IGNORE                     = 0x800000\n\tMNT_LAZY                       = 0x3\n\tMNT_LOCAL                      = 0x1000\n\tMNT_MULTILABEL                 = 0x4000000\n\tMNT_NFS4ACLS                   = 0x10\n\tMNT_NOATIME                    = 0x10000000\n\tMNT_NOCLUSTERR                 = 0x40000000\n\tMNT_NOCLUSTERW                 = 0x80000000\n\tMNT_NOEXEC                     = 0x4\n\tMNT_NONBUSY                    = 0x4000000\n\tMNT_NOSUID                     = 0x8\n\tMNT_NOSYMFOLLOW                = 0x400000\n\tMNT_NOWAIT                     = 0x2\n\tMNT_QUOTA                      = 0x2000\n\tMNT_RDONLY                     = 0x1\n\tMNT_RELOAD                     = 0x40000\n\tMNT_ROOTFS                     = 0x4000\n\tMNT_SNAPSHOT                   = 0x1000000\n\tMNT_SOFTDEP                    = 0x200000\n\tMNT_SUIDDIR                    = 0x100000\n\tMNT_SUJ                        = 0x100000000\n\tMNT_SUSPEND                    = 0x4\n\tMNT_SYNCHRONOUS                = 0x2\n\tMNT_UNION                      = 0x20\n\tMNT_UNTRUSTED                  = 0x800000000\n\tMNT_UPDATE                     = 0x10000\n\tMNT_UPDATEMASK                 = 0xad8d0807e\n\tMNT_USER                       = 0x8000\n\tMNT_VERIFIED                   = 0x400000000\n\tMNT_VISFLAGMASK                = 0xffef0ffff\n\tMNT_WAIT                       = 0x1\n\tMSG_CMSG_CLOEXEC               = 0x40000\n\tMSG_COMPAT                     = 0x8000\n\tMSG_CTRUNC                     = 0x20\n\tMSG_DONTROUTE                  = 0x4\n\tMSG_DONTWAIT                   = 0x80\n\tMSG_EOF                        = 0x100\n\tMSG_EOR                        = 0x8\n\tMSG_NBIO                       = 0x4000\n\tMSG_NOSIGNAL                   = 0x20000\n\tMSG_NOTIFICATION               = 0x2000\n\tMSG_OOB                        = 0x1\n\tMSG_PEEK                       = 0x2\n\tMSG_TRUNC                      = 0x10\n\tMSG_WAITALL                    = 0x40\n\tMSG_WAITFORONE                 = 0x80000\n\tMS_ASYNC                       = 0x1\n\tMS_INVALIDATE                  = 0x2\n\tMS_SYNC                        = 0x0\n\tNAME_MAX                       = 0xff\n\tNET_RT_DUMP                    = 0x1\n\tNET_RT_FLAGS                   = 0x2\n\tNET_RT_IFLIST                  = 0x3\n\tNET_RT_IFLISTL                 = 0x5\n\tNET_RT_IFMALIST                = 0x4\n\tNFDBITS                        = 0x40\n\tNOFLSH                         = 0x80000000\n\tNOKERNINFO                     = 0x2000000\n\tNOTE_ABSTIME                   = 0x10\n\tNOTE_ATTRIB                    = 0x8\n\tNOTE_CHILD                     = 0x4\n\tNOTE_CLOSE                     = 0x100\n\tNOTE_CLOSE_WRITE               = 0x200\n\tNOTE_DELETE                    = 0x1\n\tNOTE_EXEC                      = 0x20000000\n\tNOTE_EXIT                      = 0x80000000\n\tNOTE_EXTEND                    = 0x4\n\tNOTE_FFAND                     = 0x40000000\n\tNOTE_FFCOPY                    = 0xc0000000\n\tNOTE_FFCTRLMASK                = 0xc0000000\n\tNOTE_FFLAGSMASK                = 0xffffff\n\tNOTE_FFNOP                     = 0x0\n\tNOTE_FFOR                      = 0x80000000\n\tNOTE_FILE_POLL                 = 0x2\n\tNOTE_FORK                      = 0x40000000\n\tNOTE_LINK                      = 0x10\n\tNOTE_LOWAT                     = 0x1\n\tNOTE_MSECONDS                  = 0x2\n\tNOTE_NSECONDS                  = 0x8\n\tNOTE_OPEN                      = 0x80\n\tNOTE_PCTRLMASK                 = 0xf0000000\n\tNOTE_PDATAMASK                 = 0xfffff\n\tNOTE_READ                      = 0x400\n\tNOTE_RENAME                    = 0x20\n\tNOTE_REVOKE                    = 0x40\n\tNOTE_SECONDS                   = 0x1\n\tNOTE_TRACK                     = 0x1\n\tNOTE_TRACKERR                  = 0x2\n\tNOTE_TRIGGER                   = 0x1000000\n\tNOTE_USECONDS                  = 0x4\n\tNOTE_WRITE                     = 0x2\n\tOCRNL                          = 0x10\n\tONLCR                          = 0x2\n\tONLRET                         = 0x40\n\tONOCR                          = 0x20\n\tONOEOT                         = 0x8\n\tOPOST                          = 0x1\n\tOXTABS                         = 0x4\n\tO_ACCMODE                      = 0x3\n\tO_APPEND                       = 0x8\n\tO_ASYNC                        = 0x40\n\tO_CLOEXEC                      = 0x100000\n\tO_CREAT                        = 0x200\n\tO_DIRECT                       = 0x10000\n\tO_DIRECTORY                    = 0x20000\n\tO_EXCL                         = 0x800\n\tO_EXEC                         = 0x40000\n\tO_EXLOCK                       = 0x20\n\tO_FSYNC                        = 0x80\n\tO_NDELAY                       = 0x4\n\tO_NOCTTY                       = 0x8000\n\tO_NOFOLLOW                     = 0x100\n\tO_NONBLOCK                     = 0x4\n\tO_RDONLY                       = 0x0\n\tO_RDWR                         = 0x2\n\tO_RESOLVE_BENEATH              = 0x800000\n\tO_SEARCH                       = 0x40000\n\tO_SHLOCK                       = 0x10\n\tO_SYNC                         = 0x80\n\tO_TRUNC                        = 0x400\n\tO_TTY_INIT                     = 0x80000\n\tO_VERIFY                       = 0x200000\n\tO_WRONLY                       = 0x1\n\tPARENB                         = 0x1000\n\tPARMRK                         = 0x8\n\tPARODD                         = 0x2000\n\tPENDIN                         = 0x20000000\n\tPIOD_READ_D                    = 0x1\n\tPIOD_READ_I                    = 0x3\n\tPIOD_WRITE_D                   = 0x2\n\tPIOD_WRITE_I                   = 0x4\n\tPRIO_PGRP                      = 0x1\n\tPRIO_PROCESS                   = 0x0\n\tPRIO_USER                      = 0x2\n\tPROT_EXEC                      = 0x4\n\tPROT_NONE                      = 0x0\n\tPROT_READ                      = 0x1\n\tPROT_WRITE                     = 0x2\n\tPTRACE_DEFAULT                 = 0x1\n\tPTRACE_EXEC                    = 0x1\n\tPTRACE_FORK                    = 0x8\n\tPTRACE_LWP                     = 0x10\n\tPTRACE_SCE                     = 0x2\n\tPTRACE_SCX                     = 0x4\n\tPTRACE_SYSCALL                 = 0x6\n\tPTRACE_VFORK                   = 0x20\n\tPT_ATTACH                      = 0xa\n\tPT_CLEARSTEP                   = 0x10\n\tPT_CONTINUE                    = 0x7\n\tPT_DETACH                      = 0xb\n\tPT_FIRSTMACH                   = 0x40\n\tPT_FOLLOW_FORK                 = 0x17\n\tPT_GETDBREGS                   = 0x25\n\tPT_GETFPREGS                   = 0x23\n\tPT_GETLWPLIST                  = 0xf\n\tPT_GETNUMLWPS                  = 0xe\n\tPT_GETREGS                     = 0x21\n\tPT_GET_EVENT_MASK              = 0x19\n\tPT_GET_SC_ARGS                 = 0x1b\n\tPT_GET_SC_RET                  = 0x1c\n\tPT_IO                          = 0xc\n\tPT_KILL                        = 0x8\n\tPT_LWPINFO                     = 0xd\n\tPT_LWP_EVENTS                  = 0x18\n\tPT_READ_D                      = 0x2\n\tPT_READ_I                      = 0x1\n\tPT_RESUME                      = 0x13\n\tPT_SETDBREGS                   = 0x26\n\tPT_SETFPREGS                   = 0x24\n\tPT_SETREGS                     = 0x22\n\tPT_SETSTEP                     = 0x11\n\tPT_SET_EVENT_MASK              = 0x1a\n\tPT_STEP                        = 0x9\n\tPT_SUSPEND                     = 0x12\n\tPT_SYSCALL                     = 0x16\n\tPT_TO_SCE                      = 0x14\n\tPT_TO_SCX                      = 0x15\n\tPT_TRACE_ME                    = 0x0\n\tPT_VM_ENTRY                    = 0x29\n\tPT_VM_TIMESTAMP                = 0x28\n\tPT_WRITE_D                     = 0x5\n\tPT_WRITE_I                     = 0x4\n\tP_ZONEID                       = 0xc\n\tRLIMIT_AS                      = 0xa\n\tRLIMIT_CORE                    = 0x4\n\tRLIMIT_CPU                     = 0x0\n\tRLIMIT_DATA                    = 0x2\n\tRLIMIT_FSIZE                   = 0x1\n\tRLIMIT_MEMLOCK                 = 0x6\n\tRLIMIT_NOFILE                  = 0x8\n\tRLIMIT_NPROC                   = 0x7\n\tRLIMIT_RSS                     = 0x5\n\tRLIMIT_STACK                   = 0x3\n\tRLIM_INFINITY                  = 0x7fffffffffffffff\n\tRTAX_AUTHOR                    = 0x6\n\tRTAX_BRD                       = 0x7\n\tRTAX_DST                       = 0x0\n\tRTAX_GATEWAY                   = 0x1\n\tRTAX_GENMASK                   = 0x3\n\tRTAX_IFA                       = 0x5\n\tRTAX_IFP                       = 0x4\n\tRTAX_MAX                       = 0x8\n\tRTAX_NETMASK                   = 0x2\n\tRTA_AUTHOR                     = 0x40\n\tRTA_BRD                        = 0x80\n\tRTA_DST                        = 0x1\n\tRTA_GATEWAY                    = 0x2\n\tRTA_GENMASK                    = 0x8\n\tRTA_IFA                        = 0x20\n\tRTA_IFP                        = 0x10\n\tRTA_NETMASK                    = 0x4\n\tRTF_BLACKHOLE                  = 0x1000\n\tRTF_BROADCAST                  = 0x400000\n\tRTF_DONE                       = 0x40\n\tRTF_DYNAMIC                    = 0x10\n\tRTF_FIXEDMTU                   = 0x80000\n\tRTF_FMASK                      = 0x1004d808\n\tRTF_GATEWAY                    = 0x2\n\tRTF_GWFLAG_COMPAT              = 0x80000000\n\tRTF_HOST                       = 0x4\n\tRTF_LLDATA                     = 0x400\n\tRTF_LLINFO                     = 0x400\n\tRTF_LOCAL                      = 0x200000\n\tRTF_MODIFIED                   = 0x20\n\tRTF_MULTICAST                  = 0x800000\n\tRTF_PINNED                     = 0x100000\n\tRTF_PROTO1                     = 0x8000\n\tRTF_PROTO2                     = 0x4000\n\tRTF_PROTO3                     = 0x40000\n\tRTF_REJECT                     = 0x8\n\tRTF_RNH_LOCKED                 = 0x40000000\n\tRTF_STATIC                     = 0x800\n\tRTF_STICKY                     = 0x10000000\n\tRTF_UP                         = 0x1\n\tRTF_XRESOLVE                   = 0x200\n\tRTM_ADD                        = 0x1\n\tRTM_CHANGE                     = 0x3\n\tRTM_DELADDR                    = 0xd\n\tRTM_DELETE                     = 0x2\n\tRTM_DELMADDR                   = 0x10\n\tRTM_GET                        = 0x4\n\tRTM_IEEE80211                  = 0x12\n\tRTM_IFANNOUNCE                 = 0x11\n\tRTM_IFINFO                     = 0xe\n\tRTM_LOCK                       = 0x8\n\tRTM_LOSING                     = 0x5\n\tRTM_MISS                       = 0x7\n\tRTM_NEWADDR                    = 0xc\n\tRTM_NEWMADDR                   = 0xf\n\tRTM_REDIRECT                   = 0x6\n\tRTM_RESOLVE                    = 0xb\n\tRTM_RTTUNIT                    = 0xf4240\n\tRTM_VERSION                    = 0x5\n\tRTV_EXPIRE                     = 0x4\n\tRTV_HOPCOUNT                   = 0x2\n\tRTV_MTU                        = 0x1\n\tRTV_RPIPE                      = 0x8\n\tRTV_RTT                        = 0x40\n\tRTV_RTTVAR                     = 0x80\n\tRTV_SPIPE                      = 0x10\n\tRTV_SSTHRESH                   = 0x20\n\tRTV_WEIGHT                     = 0x100\n\tRT_ALL_FIBS                    = -0x1\n\tRT_BLACKHOLE                   = 0x40\n\tRT_DEFAULT_FIB                 = 0x0\n\tRT_HAS_GW                      = 0x80\n\tRT_HAS_HEADER                  = 0x10\n\tRT_HAS_HEADER_BIT              = 0x4\n\tRT_L2_ME                       = 0x4\n\tRT_L2_ME_BIT                   = 0x2\n\tRT_LLE_CACHE                   = 0x100\n\tRT_MAY_LOOP                    = 0x8\n\tRT_MAY_LOOP_BIT                = 0x3\n\tRT_REJECT                      = 0x20\n\tRUSAGE_CHILDREN                = -0x1\n\tRUSAGE_SELF                    = 0x0\n\tRUSAGE_THREAD                  = 0x1\n\tSCM_BINTIME                    = 0x4\n\tSCM_CREDS                      = 0x3\n\tSCM_MONOTONIC                  = 0x6\n\tSCM_REALTIME                   = 0x5\n\tSCM_RIGHTS                     = 0x1\n\tSCM_TIMESTAMP                  = 0x2\n\tSCM_TIME_INFO                  = 0x7\n\tSEEK_CUR                       = 0x1\n\tSEEK_DATA                      = 0x3\n\tSEEK_END                       = 0x2\n\tSEEK_HOLE                      = 0x4\n\tSEEK_SET                       = 0x0\n\tSHUT_RD                        = 0x0\n\tSHUT_RDWR                      = 0x2\n\tSHUT_WR                        = 0x1\n\tSIOCADDMULTI                   = 0x80206931\n\tSIOCAIFADDR                    = 0x8040691a\n\tSIOCAIFGROUP                   = 0x80286987\n\tSIOCATMARK                     = 0x40047307\n\tSIOCDELMULTI                   = 0x80206932\n\tSIOCDIFADDR                    = 0x80206919\n\tSIOCDIFGROUP                   = 0x80286989\n\tSIOCDIFPHYADDR                 = 0x80206949\n\tSIOCGDRVSPEC                   = 0xc028697b\n\tSIOCGETSGCNT                   = 0xc0207210\n\tSIOCGETVIFCNT                  = 0xc028720f\n\tSIOCGHIWAT                     = 0x40047301\n\tSIOCGHWADDR                    = 0xc020693e\n\tSIOCGI2C                       = 0xc020693d\n\tSIOCGIFADDR                    = 0xc0206921\n\tSIOCGIFALIAS                   = 0xc044692d\n\tSIOCGIFBRDADDR                 = 0xc0206923\n\tSIOCGIFCAP                     = 0xc020691f\n\tSIOCGIFCONF                    = 0xc0106924\n\tSIOCGIFDESCR                   = 0xc020692a\n\tSIOCGIFDOWNREASON              = 0xc058699a\n\tSIOCGIFDSTADDR                 = 0xc0206922\n\tSIOCGIFFIB                     = 0xc020695c\n\tSIOCGIFFLAGS                   = 0xc0206911\n\tSIOCGIFGENERIC                 = 0xc020693a\n\tSIOCGIFGMEMB                   = 0xc028698a\n\tSIOCGIFGROUP                   = 0xc0286988\n\tSIOCGIFINDEX                   = 0xc0206920\n\tSIOCGIFMAC                     = 0xc0206926\n\tSIOCGIFMEDIA                   = 0xc0306938\n\tSIOCGIFMETRIC                  = 0xc0206917\n\tSIOCGIFMTU                     = 0xc0206933\n\tSIOCGIFNETMASK                 = 0xc0206925\n\tSIOCGIFPDSTADDR                = 0xc0206948\n\tSIOCGIFPHYS                    = 0xc0206935\n\tSIOCGIFPSRCADDR                = 0xc0206947\n\tSIOCGIFRSSHASH                 = 0xc0186997\n\tSIOCGIFRSSKEY                  = 0xc0946996\n\tSIOCGIFSTATUS                  = 0xc331693b\n\tSIOCGIFXMEDIA                  = 0xc030698b\n\tSIOCGLANPCP                    = 0xc0206998\n\tSIOCGLOWAT                     = 0x40047303\n\tSIOCGPGRP                      = 0x40047309\n\tSIOCGPRIVATE_0                 = 0xc0206950\n\tSIOCGPRIVATE_1                 = 0xc0206951\n\tSIOCGTUNFIB                    = 0xc020695e\n\tSIOCIFCREATE                   = 0xc020697a\n\tSIOCIFCREATE2                  = 0xc020697c\n\tSIOCIFDESTROY                  = 0x80206979\n\tSIOCIFGCLONERS                 = 0xc0106978\n\tSIOCSDRVSPEC                   = 0x8028697b\n\tSIOCSHIWAT                     = 0x80047300\n\tSIOCSIFADDR                    = 0x8020690c\n\tSIOCSIFBRDADDR                 = 0x80206913\n\tSIOCSIFCAP                     = 0x8020691e\n\tSIOCSIFDESCR                   = 0x80206929\n\tSIOCSIFDSTADDR                 = 0x8020690e\n\tSIOCSIFFIB                     = 0x8020695d\n\tSIOCSIFFLAGS                   = 0x80206910\n\tSIOCSIFGENERIC                 = 0x80206939\n\tSIOCSIFLLADDR                  = 0x8020693c\n\tSIOCSIFMAC                     = 0x80206927\n\tSIOCSIFMEDIA                   = 0xc0206937\n\tSIOCSIFMETRIC                  = 0x80206918\n\tSIOCSIFMTU                     = 0x80206934\n\tSIOCSIFNAME                    = 0x80206928\n\tSIOCSIFNETMASK                 = 0x80206916\n\tSIOCSIFPHYADDR                 = 0x80406946\n\tSIOCSIFPHYS                    = 0x80206936\n\tSIOCSIFRVNET                   = 0xc020695b\n\tSIOCSIFVNET                    = 0xc020695a\n\tSIOCSLANPCP                    = 0x80206999\n\tSIOCSLOWAT                     = 0x80047302\n\tSIOCSPGRP                      = 0x80047308\n\tSIOCSTUNFIB                    = 0x8020695f\n\tSOCK_CLOEXEC                   = 0x10000000\n\tSOCK_DGRAM                     = 0x2\n\tSOCK_MAXADDRLEN                = 0xff\n\tSOCK_NONBLOCK                  = 0x20000000\n\tSOCK_RAW                       = 0x3\n\tSOCK_RDM                       = 0x4\n\tSOCK_SEQPACKET                 = 0x5\n\tSOCK_STREAM                    = 0x1\n\tSOL_LOCAL                      = 0x0\n\tSOL_SOCKET                     = 0xffff\n\tSOMAXCONN                      = 0x80\n\tSO_ACCEPTCONN                  = 0x2\n\tSO_ACCEPTFILTER                = 0x1000\n\tSO_BINTIME                     = 0x2000\n\tSO_BROADCAST                   = 0x20\n\tSO_DEBUG                       = 0x1\n\tSO_DOMAIN                      = 0x1019\n\tSO_DONTROUTE                   = 0x10\n\tSO_ERROR                       = 0x1007\n\tSO_KEEPALIVE                   = 0x8\n\tSO_LABEL                       = 0x1009\n\tSO_LINGER                      = 0x80\n\tSO_LISTENINCQLEN               = 0x1013\n\tSO_LISTENQLEN                  = 0x1012\n\tSO_LISTENQLIMIT                = 0x1011\n\tSO_MAX_PACING_RATE             = 0x1018\n\tSO_NOSIGPIPE                   = 0x800\n\tSO_NO_DDP                      = 0x8000\n\tSO_NO_OFFLOAD                  = 0x4000\n\tSO_OOBINLINE                   = 0x100\n\tSO_PEERLABEL                   = 0x1010\n\tSO_PROTOCOL                    = 0x1016\n\tSO_PROTOTYPE                   = 0x1016\n\tSO_RCVBUF                      = 0x1002\n\tSO_RCVLOWAT                    = 0x1004\n\tSO_RCVTIMEO                    = 0x1006\n\tSO_RERROR                      = 0x20000\n\tSO_REUSEADDR                   = 0x4\n\tSO_REUSEPORT                   = 0x200\n\tSO_REUSEPORT_LB                = 0x10000\n\tSO_SETFIB                      = 0x1014\n\tSO_SNDBUF                      = 0x1001\n\tSO_SNDLOWAT                    = 0x1003\n\tSO_SNDTIMEO                    = 0x1005\n\tSO_TIMESTAMP                   = 0x400\n\tSO_TS_BINTIME                  = 0x1\n\tSO_TS_CLOCK                    = 0x1017\n\tSO_TS_CLOCK_MAX                = 0x3\n\tSO_TS_DEFAULT                  = 0x0\n\tSO_TS_MONOTONIC                = 0x3\n\tSO_TS_REALTIME                 = 0x2\n\tSO_TS_REALTIME_MICRO           = 0x0\n\tSO_TYPE                        = 0x1008\n\tSO_USELOOPBACK                 = 0x40\n\tSO_USER_COOKIE                 = 0x1015\n\tSO_VENDOR                      = 0x80000000\n\tS_BLKSIZE                      = 0x200\n\tS_IEXEC                        = 0x40\n\tS_IFBLK                        = 0x6000\n\tS_IFCHR                        = 0x2000\n\tS_IFDIR                        = 0x4000\n\tS_IFIFO                        = 0x1000\n\tS_IFLNK                        = 0xa000\n\tS_IFMT                         = 0xf000\n\tS_IFREG                        = 0x8000\n\tS_IFSOCK                       = 0xc000\n\tS_IFWHT                        = 0xe000\n\tS_IREAD                        = 0x100\n\tS_IRGRP                        = 0x20\n\tS_IROTH                        = 0x4\n\tS_IRUSR                        = 0x100\n\tS_IRWXG                        = 0x38\n\tS_IRWXO                        = 0x7\n\tS_IRWXU                        = 0x1c0\n\tS_ISGID                        = 0x400\n\tS_ISTXT                        = 0x200\n\tS_ISUID                        = 0x800\n\tS_ISVTX                        = 0x200\n\tS_IWGRP                        = 0x10\n\tS_IWOTH                        = 0x2\n\tS_IWRITE                       = 0x80\n\tS_IWUSR                        = 0x80\n\tS_IXGRP                        = 0x8\n\tS_IXOTH                        = 0x1\n\tS_IXUSR                        = 0x40\n\tTAB0                           = 0x0\n\tTAB3                           = 0x4\n\tTABDLY                         = 0x4\n\tTCIFLUSH                       = 0x1\n\tTCIOFF                         = 0x3\n\tTCIOFLUSH                      = 0x3\n\tTCION                          = 0x4\n\tTCOFLUSH                       = 0x2\n\tTCOOFF                         = 0x1\n\tTCOON                          = 0x2\n\tTCPOPT_EOL                     = 0x0\n\tTCPOPT_FAST_OPEN               = 0x22\n\tTCPOPT_MAXSEG                  = 0x2\n\tTCPOPT_NOP                     = 0x1\n\tTCPOPT_PAD                     = 0x0\n\tTCPOPT_SACK                    = 0x5\n\tTCPOPT_SACK_PERMITTED          = 0x4\n\tTCPOPT_SIGNATURE               = 0x13\n\tTCPOPT_TIMESTAMP               = 0x8\n\tTCPOPT_WINDOW                  = 0x3\n\tTCP_BBR_ACK_COMP_ALG           = 0x448\n\tTCP_BBR_ALGORITHM              = 0x43b\n\tTCP_BBR_DRAIN_INC_EXTRA        = 0x43c\n\tTCP_BBR_DRAIN_PG               = 0x42e\n\tTCP_BBR_EXTRA_GAIN             = 0x449\n\tTCP_BBR_EXTRA_STATE            = 0x453\n\tTCP_BBR_FLOOR_MIN_TSO          = 0x454\n\tTCP_BBR_HDWR_PACE              = 0x451\n\tTCP_BBR_HOLD_TARGET            = 0x436\n\tTCP_BBR_IWINTSO                = 0x42b\n\tTCP_BBR_LOWGAIN_FD             = 0x436\n\tTCP_BBR_LOWGAIN_HALF           = 0x435\n\tTCP_BBR_LOWGAIN_THRESH         = 0x434\n\tTCP_BBR_MAX_RTO                = 0x439\n\tTCP_BBR_MIN_RTO                = 0x438\n\tTCP_BBR_MIN_TOPACEOUT          = 0x455\n\tTCP_BBR_ONE_RETRAN             = 0x431\n\tTCP_BBR_PACE_CROSS             = 0x442\n\tTCP_BBR_PACE_DEL_TAR           = 0x43f\n\tTCP_BBR_PACE_OH                = 0x435\n\tTCP_BBR_PACE_PER_SEC           = 0x43e\n\tTCP_BBR_PACE_SEG_MAX           = 0x440\n\tTCP_BBR_PACE_SEG_MIN           = 0x441\n\tTCP_BBR_POLICER_DETECT         = 0x457\n\tTCP_BBR_PROBE_RTT_GAIN         = 0x44d\n\tTCP_BBR_PROBE_RTT_INT          = 0x430\n\tTCP_BBR_PROBE_RTT_LEN          = 0x44e\n\tTCP_BBR_RACK_RTT_USE           = 0x44a\n\tTCP_BBR_RECFORCE               = 0x42c\n\tTCP_BBR_REC_OVER_HPTS          = 0x43a\n\tTCP_BBR_RETRAN_WTSO            = 0x44b\n\tTCP_BBR_RWND_IS_APP            = 0x42f\n\tTCP_BBR_SEND_IWND_IN_TSO       = 0x44f\n\tTCP_BBR_STARTUP_EXIT_EPOCH     = 0x43d\n\tTCP_BBR_STARTUP_LOSS_EXIT      = 0x432\n\tTCP_BBR_STARTUP_PG             = 0x42d\n\tTCP_BBR_TMR_PACE_OH            = 0x448\n\tTCP_BBR_TSLIMITS               = 0x434\n\tTCP_BBR_TSTMP_RAISES           = 0x456\n\tTCP_BBR_UNLIMITED              = 0x43b\n\tTCP_BBR_USEDEL_RATE            = 0x437\n\tTCP_BBR_USE_LOWGAIN            = 0x433\n\tTCP_BBR_USE_RACK_CHEAT         = 0x450\n\tTCP_BBR_UTTER_MAX_TSO          = 0x452\n\tTCP_CA_NAME_MAX                = 0x10\n\tTCP_CCALGOOPT                  = 0x41\n\tTCP_CONGESTION                 = 0x40\n\tTCP_DATA_AFTER_CLOSE           = 0x44c\n\tTCP_DELACK                     = 0x48\n\tTCP_FASTOPEN                   = 0x401\n\tTCP_FASTOPEN_MAX_COOKIE_LEN    = 0x10\n\tTCP_FASTOPEN_MIN_COOKIE_LEN    = 0x4\n\tTCP_FASTOPEN_PSK_LEN           = 0x10\n\tTCP_FUNCTION_BLK               = 0x2000\n\tTCP_FUNCTION_NAME_LEN_MAX      = 0x20\n\tTCP_INFO                       = 0x20\n\tTCP_KEEPCNT                    = 0x400\n\tTCP_KEEPIDLE                   = 0x100\n\tTCP_KEEPINIT                   = 0x80\n\tTCP_KEEPINTVL                  = 0x200\n\tTCP_LOG                        = 0x22\n\tTCP_LOGBUF                     = 0x23\n\tTCP_LOGDUMP                    = 0x25\n\tTCP_LOGDUMPID                  = 0x26\n\tTCP_LOGID                      = 0x24\n\tTCP_LOG_ID_LEN                 = 0x40\n\tTCP_MAXBURST                   = 0x4\n\tTCP_MAXHLEN                    = 0x3c\n\tTCP_MAXOLEN                    = 0x28\n\tTCP_MAXSEG                     = 0x2\n\tTCP_MAXWIN                     = 0xffff\n\tTCP_MAX_SACK                   = 0x4\n\tTCP_MAX_WINSHIFT               = 0xe\n\tTCP_MD5SIG                     = 0x10\n\tTCP_MINMSS                     = 0xd8\n\tTCP_MSS                        = 0x218\n\tTCP_NODELAY                    = 0x1\n\tTCP_NOOPT                      = 0x8\n\tTCP_NOPUSH                     = 0x4\n\tTCP_PCAP_IN                    = 0x1000\n\tTCP_PCAP_OUT                   = 0x800\n\tTCP_RACK_EARLY_RECOV           = 0x423\n\tTCP_RACK_EARLY_SEG             = 0x424\n\tTCP_RACK_GP_INCREASE           = 0x446\n\tTCP_RACK_IDLE_REDUCE_HIGH      = 0x444\n\tTCP_RACK_MIN_PACE              = 0x445\n\tTCP_RACK_MIN_PACE_SEG          = 0x446\n\tTCP_RACK_MIN_TO                = 0x422\n\tTCP_RACK_PACE_ALWAYS           = 0x41f\n\tTCP_RACK_PACE_MAX_SEG          = 0x41e\n\tTCP_RACK_PACE_REDUCE           = 0x41d\n\tTCP_RACK_PKT_DELAY             = 0x428\n\tTCP_RACK_PROP                  = 0x41b\n\tTCP_RACK_PROP_RATE             = 0x420\n\tTCP_RACK_PRR_SENDALOT          = 0x421\n\tTCP_RACK_REORD_FADE            = 0x426\n\tTCP_RACK_REORD_THRESH          = 0x425\n\tTCP_RACK_TLP_INC_VAR           = 0x429\n\tTCP_RACK_TLP_REDUCE            = 0x41c\n\tTCP_RACK_TLP_THRESH            = 0x427\n\tTCP_RACK_TLP_USE               = 0x447\n\tTCP_VENDOR                     = 0x80000000\n\tTCSAFLUSH                      = 0x2\n\tTIMER_ABSTIME                  = 0x1\n\tTIMER_RELTIME                  = 0x0\n\tTIOCCBRK                       = 0x2000747a\n\tTIOCCDTR                       = 0x20007478\n\tTIOCCONS                       = 0x80047462\n\tTIOCDRAIN                      = 0x2000745e\n\tTIOCEXCL                       = 0x2000740d\n\tTIOCEXT                        = 0x80047460\n\tTIOCFLUSH                      = 0x80047410\n\tTIOCGDRAINWAIT                 = 0x40047456\n\tTIOCGETA                       = 0x402c7413\n\tTIOCGETD                       = 0x4004741a\n\tTIOCGPGRP                      = 0x40047477\n\tTIOCGPTN                       = 0x4004740f\n\tTIOCGSID                       = 0x40047463\n\tTIOCGWINSZ                     = 0x40087468\n\tTIOCMBIC                       = 0x8004746b\n\tTIOCMBIS                       = 0x8004746c\n\tTIOCMGDTRWAIT                  = 0x4004745a\n\tTIOCMGET                       = 0x4004746a\n\tTIOCMSDTRWAIT                  = 0x8004745b\n\tTIOCMSET                       = 0x8004746d\n\tTIOCM_CAR                      = 0x40\n\tTIOCM_CD                       = 0x40\n\tTIOCM_CTS                      = 0x20\n\tTIOCM_DCD                      = 0x40\n\tTIOCM_DSR                      = 0x100\n\tTIOCM_DTR                      = 0x2\n\tTIOCM_LE                       = 0x1\n\tTIOCM_RI                       = 0x80\n\tTIOCM_RNG                      = 0x80\n\tTIOCM_RTS                      = 0x4\n\tTIOCM_SR                       = 0x10\n\tTIOCM_ST                       = 0x8\n\tTIOCNOTTY                      = 0x20007471\n\tTIOCNXCL                       = 0x2000740e\n\tTIOCOUTQ                       = 0x40047473\n\tTIOCPKT                        = 0x80047470\n\tTIOCPKT_DATA                   = 0x0\n\tTIOCPKT_DOSTOP                 = 0x20\n\tTIOCPKT_FLUSHREAD              = 0x1\n\tTIOCPKT_FLUSHWRITE             = 0x2\n\tTIOCPKT_IOCTL                  = 0x40\n\tTIOCPKT_NOSTOP                 = 0x10\n\tTIOCPKT_START                  = 0x8\n\tTIOCPKT_STOP                   = 0x4\n\tTIOCPTMASTER                   = 0x2000741c\n\tTIOCSBRK                       = 0x2000747b\n\tTIOCSCTTY                      = 0x20007461\n\tTIOCSDRAINWAIT                 = 0x80047457\n\tTIOCSDTR                       = 0x20007479\n\tTIOCSETA                       = 0x802c7414\n\tTIOCSETAF                      = 0x802c7416\n\tTIOCSETAW                      = 0x802c7415\n\tTIOCSETD                       = 0x8004741b\n\tTIOCSIG                        = 0x2004745f\n\tTIOCSPGRP                      = 0x80047476\n\tTIOCSTART                      = 0x2000746e\n\tTIOCSTAT                       = 0x20007465\n\tTIOCSTI                        = 0x80017472\n\tTIOCSTOP                       = 0x2000746f\n\tTIOCSWINSZ                     = 0x80087467\n\tTIOCTIMESTAMP                  = 0x40107459\n\tTIOCUCNTL                      = 0x80047466\n\tTOSTOP                         = 0x400000\n\tUTIME_NOW                      = -0x1\n\tUTIME_OMIT                     = -0x2\n\tVDISCARD                       = 0xf\n\tVDSUSP                         = 0xb\n\tVEOF                           = 0x0\n\tVEOL                           = 0x1\n\tVEOL2                          = 0x2\n\tVERASE                         = 0x3\n\tVERASE2                        = 0x7\n\tVINTR                          = 0x8\n\tVKILL                          = 0x5\n\tVLNEXT                         = 0xe\n\tVMIN                           = 0x10\n\tVM_BCACHE_SIZE_MAX             = 0x19000000\n\tVQUIT                          = 0x9\n\tVREPRINT                       = 0x6\n\tVSTART                         = 0xc\n\tVSTATUS                        = 0x12\n\tVSTOP                          = 0xd\n\tVSUSP                          = 0xa\n\tVTIME                          = 0x11\n\tVWERASE                        = 0x4\n\tWCONTINUED                     = 0x4\n\tWCOREFLAG                      = 0x80\n\tWEXITED                        = 0x10\n\tWLINUXCLONE                    = 0x80000000\n\tWNOHANG                        = 0x1\n\tWNOWAIT                        = 0x8\n\tWSTOPPED                       = 0x2\n\tWTRAPPED                       = 0x20\n\tWUNTRACED                      = 0x2\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x59)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x55)\n\tECAPMODE        = syscall.Errno(0x5e)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDOOFUS         = syscall.Errno(0x58)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x52)\n\tEILSEQ          = syscall.Errno(0x56)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTEGRITY      = syscall.Errno(0x61)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x61)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5a)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x57)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x5b)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x53)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCAPABLE     = syscall.Errno(0x5d)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5f)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x2d)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEOWNERDEAD      = syscall.Errno(0x60)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5c)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGLIBRT  = syscall.Signal(0x21)\n\tSIGLWP    = syscall.Signal(0x20)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EWOULDBLOCK\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIDRM\", \"identifier removed\"},\n\t{83, \"ENOMSG\", \"no message of desired type\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"ECANCELED\", \"operation canceled\"},\n\t{86, \"EILSEQ\", \"illegal byte sequence\"},\n\t{87, \"ENOATTR\", \"attribute not found\"},\n\t{88, \"EDOOFUS\", \"programming error\"},\n\t{89, \"EBADMSG\", \"bad message\"},\n\t{90, \"EMULTIHOP\", \"multihop attempted\"},\n\t{91, \"ENOLINK\", \"link has been severed\"},\n\t{92, \"EPROTO\", \"protocol error\"},\n\t{93, \"ENOTCAPABLE\", \"capabilities insufficient\"},\n\t{94, \"ECAPMODE\", \"not permitted in capability mode\"},\n\t{95, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{96, \"EOWNERDEAD\", \"previous owner died\"},\n\t{97, \"EINTEGRITY\", \"integrity check failed\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"unknown signal\"},\n\t{33, \"SIGLIBRT\", \"unknown signal\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_freebsd_riscv64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build riscv64 && freebsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                   = 0x10\n\tAF_ARP                         = 0x23\n\tAF_ATM                         = 0x1e\n\tAF_BLUETOOTH                   = 0x24\n\tAF_CCITT                       = 0xa\n\tAF_CHAOS                       = 0x5\n\tAF_CNT                         = 0x15\n\tAF_COIP                        = 0x14\n\tAF_DATAKIT                     = 0x9\n\tAF_DECnet                      = 0xc\n\tAF_DLI                         = 0xd\n\tAF_E164                        = 0x1a\n\tAF_ECMA                        = 0x8\n\tAF_HYLINK                      = 0xf\n\tAF_HYPERV                      = 0x2b\n\tAF_IEEE80211                   = 0x25\n\tAF_IMPLINK                     = 0x3\n\tAF_INET                        = 0x2\n\tAF_INET6                       = 0x1c\n\tAF_INET6_SDP                   = 0x2a\n\tAF_INET_SDP                    = 0x28\n\tAF_IPX                         = 0x17\n\tAF_ISDN                        = 0x1a\n\tAF_ISO                         = 0x7\n\tAF_LAT                         = 0xe\n\tAF_LINK                        = 0x12\n\tAF_LOCAL                       = 0x1\n\tAF_MAX                         = 0x2b\n\tAF_NATM                        = 0x1d\n\tAF_NETBIOS                     = 0x6\n\tAF_NETGRAPH                    = 0x20\n\tAF_OSI                         = 0x7\n\tAF_PUP                         = 0x4\n\tAF_ROUTE                       = 0x11\n\tAF_SCLUSTER                    = 0x22\n\tAF_SIP                         = 0x18\n\tAF_SLOW                        = 0x21\n\tAF_SNA                         = 0xb\n\tAF_UNIX                        = 0x1\n\tAF_UNSPEC                      = 0x0\n\tAF_VENDOR00                    = 0x27\n\tAF_VENDOR01                    = 0x29\n\tAF_VENDOR03                    = 0x2d\n\tAF_VENDOR04                    = 0x2f\n\tAF_VENDOR05                    = 0x31\n\tAF_VENDOR06                    = 0x33\n\tAF_VENDOR07                    = 0x35\n\tAF_VENDOR08                    = 0x37\n\tAF_VENDOR09                    = 0x39\n\tAF_VENDOR10                    = 0x3b\n\tAF_VENDOR11                    = 0x3d\n\tAF_VENDOR12                    = 0x3f\n\tAF_VENDOR13                    = 0x41\n\tAF_VENDOR14                    = 0x43\n\tAF_VENDOR15                    = 0x45\n\tAF_VENDOR16                    = 0x47\n\tAF_VENDOR17                    = 0x49\n\tAF_VENDOR18                    = 0x4b\n\tAF_VENDOR19                    = 0x4d\n\tAF_VENDOR20                    = 0x4f\n\tAF_VENDOR21                    = 0x51\n\tAF_VENDOR22                    = 0x53\n\tAF_VENDOR23                    = 0x55\n\tAF_VENDOR24                    = 0x57\n\tAF_VENDOR25                    = 0x59\n\tAF_VENDOR26                    = 0x5b\n\tAF_VENDOR27                    = 0x5d\n\tAF_VENDOR28                    = 0x5f\n\tAF_VENDOR29                    = 0x61\n\tAF_VENDOR30                    = 0x63\n\tAF_VENDOR31                    = 0x65\n\tAF_VENDOR32                    = 0x67\n\tAF_VENDOR33                    = 0x69\n\tAF_VENDOR34                    = 0x6b\n\tAF_VENDOR35                    = 0x6d\n\tAF_VENDOR36                    = 0x6f\n\tAF_VENDOR37                    = 0x71\n\tAF_VENDOR38                    = 0x73\n\tAF_VENDOR39                    = 0x75\n\tAF_VENDOR40                    = 0x77\n\tAF_VENDOR41                    = 0x79\n\tAF_VENDOR42                    = 0x7b\n\tAF_VENDOR43                    = 0x7d\n\tAF_VENDOR44                    = 0x7f\n\tAF_VENDOR45                    = 0x81\n\tAF_VENDOR46                    = 0x83\n\tAF_VENDOR47                    = 0x85\n\tALTWERASE                      = 0x200\n\tB0                             = 0x0\n\tB1000000                       = 0xf4240\n\tB110                           = 0x6e\n\tB115200                        = 0x1c200\n\tB1200                          = 0x4b0\n\tB134                           = 0x86\n\tB14400                         = 0x3840\n\tB150                           = 0x96\n\tB1500000                       = 0x16e360\n\tB1800                          = 0x708\n\tB19200                         = 0x4b00\n\tB200                           = 0xc8\n\tB2000000                       = 0x1e8480\n\tB230400                        = 0x38400\n\tB2400                          = 0x960\n\tB2500000                       = 0x2625a0\n\tB28800                         = 0x7080\n\tB300                           = 0x12c\n\tB3000000                       = 0x2dc6c0\n\tB3500000                       = 0x3567e0\n\tB38400                         = 0x9600\n\tB4000000                       = 0x3d0900\n\tB460800                        = 0x70800\n\tB4800                          = 0x12c0\n\tB50                            = 0x32\n\tB500000                        = 0x7a120\n\tB57600                         = 0xe100\n\tB600                           = 0x258\n\tB7200                          = 0x1c20\n\tB75                            = 0x4b\n\tB76800                         = 0x12c00\n\tB921600                        = 0xe1000\n\tB9600                          = 0x2580\n\tBIOCFEEDBACK                   = 0x8004427c\n\tBIOCFLUSH                      = 0x20004268\n\tBIOCGBLEN                      = 0x40044266\n\tBIOCGDIRECTION                 = 0x40044276\n\tBIOCGDLT                       = 0x4004426a\n\tBIOCGDLTLIST                   = 0xc0104279\n\tBIOCGETBUFMODE                 = 0x4004427d\n\tBIOCGETIF                      = 0x4020426b\n\tBIOCGETZMAX                    = 0x4008427f\n\tBIOCGHDRCMPLT                  = 0x40044274\n\tBIOCGRSIG                      = 0x40044272\n\tBIOCGRTIMEOUT                  = 0x4010426e\n\tBIOCGSEESENT                   = 0x40044276\n\tBIOCGSTATS                     = 0x4008426f\n\tBIOCGTSTAMP                    = 0x40044283\n\tBIOCIMMEDIATE                  = 0x80044270\n\tBIOCLOCK                       = 0x2000427a\n\tBIOCPROMISC                    = 0x20004269\n\tBIOCROTZBUF                    = 0x40184280\n\tBIOCSBLEN                      = 0xc0044266\n\tBIOCSDIRECTION                 = 0x80044277\n\tBIOCSDLT                       = 0x80044278\n\tBIOCSETBUFMODE                 = 0x8004427e\n\tBIOCSETF                       = 0x80104267\n\tBIOCSETFNR                     = 0x80104282\n\tBIOCSETIF                      = 0x8020426c\n\tBIOCSETVLANPCP                 = 0x80044285\n\tBIOCSETWF                      = 0x8010427b\n\tBIOCSETZBUF                    = 0x80184281\n\tBIOCSHDRCMPLT                  = 0x80044275\n\tBIOCSRSIG                      = 0x80044273\n\tBIOCSRTIMEOUT                  = 0x8010426d\n\tBIOCSSEESENT                   = 0x80044277\n\tBIOCSTSTAMP                    = 0x80044284\n\tBIOCVERSION                    = 0x40044271\n\tBPF_A                          = 0x10\n\tBPF_ABS                        = 0x20\n\tBPF_ADD                        = 0x0\n\tBPF_ALIGNMENT                  = 0x8\n\tBPF_ALU                        = 0x4\n\tBPF_AND                        = 0x50\n\tBPF_B                          = 0x10\n\tBPF_BUFMODE_BUFFER             = 0x1\n\tBPF_BUFMODE_ZBUF               = 0x2\n\tBPF_DIV                        = 0x30\n\tBPF_H                          = 0x8\n\tBPF_IMM                        = 0x0\n\tBPF_IND                        = 0x40\n\tBPF_JA                         = 0x0\n\tBPF_JEQ                        = 0x10\n\tBPF_JGE                        = 0x30\n\tBPF_JGT                        = 0x20\n\tBPF_JMP                        = 0x5\n\tBPF_JSET                       = 0x40\n\tBPF_K                          = 0x0\n\tBPF_LD                         = 0x0\n\tBPF_LDX                        = 0x1\n\tBPF_LEN                        = 0x80\n\tBPF_LSH                        = 0x60\n\tBPF_MAJOR_VERSION              = 0x1\n\tBPF_MAXBUFSIZE                 = 0x80000\n\tBPF_MAXINSNS                   = 0x200\n\tBPF_MEM                        = 0x60\n\tBPF_MEMWORDS                   = 0x10\n\tBPF_MINBUFSIZE                 = 0x20\n\tBPF_MINOR_VERSION              = 0x1\n\tBPF_MISC                       = 0x7\n\tBPF_MOD                        = 0x90\n\tBPF_MSH                        = 0xa0\n\tBPF_MUL                        = 0x20\n\tBPF_NEG                        = 0x80\n\tBPF_OR                         = 0x40\n\tBPF_RELEASE                    = 0x30bb6\n\tBPF_RET                        = 0x6\n\tBPF_RSH                        = 0x70\n\tBPF_ST                         = 0x2\n\tBPF_STX                        = 0x3\n\tBPF_SUB                        = 0x10\n\tBPF_TAX                        = 0x0\n\tBPF_TXA                        = 0x80\n\tBPF_T_BINTIME                  = 0x2\n\tBPF_T_BINTIME_FAST             = 0x102\n\tBPF_T_BINTIME_MONOTONIC        = 0x202\n\tBPF_T_BINTIME_MONOTONIC_FAST   = 0x302\n\tBPF_T_FAST                     = 0x100\n\tBPF_T_FLAG_MASK                = 0x300\n\tBPF_T_FORMAT_MASK              = 0x3\n\tBPF_T_MICROTIME                = 0x0\n\tBPF_T_MICROTIME_FAST           = 0x100\n\tBPF_T_MICROTIME_MONOTONIC      = 0x200\n\tBPF_T_MICROTIME_MONOTONIC_FAST = 0x300\n\tBPF_T_MONOTONIC                = 0x200\n\tBPF_T_MONOTONIC_FAST           = 0x300\n\tBPF_T_NANOTIME                 = 0x1\n\tBPF_T_NANOTIME_FAST            = 0x101\n\tBPF_T_NANOTIME_MONOTONIC       = 0x201\n\tBPF_T_NANOTIME_MONOTONIC_FAST  = 0x301\n\tBPF_T_NONE                     = 0x3\n\tBPF_T_NORMAL                   = 0x0\n\tBPF_W                          = 0x0\n\tBPF_X                          = 0x8\n\tBPF_XOR                        = 0xa0\n\tBRKINT                         = 0x2\n\tCAP_ACCEPT                     = 0x200000020000000\n\tCAP_ACL_CHECK                  = 0x400000000010000\n\tCAP_ACL_DELETE                 = 0x400000000020000\n\tCAP_ACL_GET                    = 0x400000000040000\n\tCAP_ACL_SET                    = 0x400000000080000\n\tCAP_ALL0                       = 0x20007ffffffffff\n\tCAP_ALL1                       = 0x4000000001fffff\n\tCAP_BIND                       = 0x200000040000000\n\tCAP_BINDAT                     = 0x200008000000400\n\tCAP_CHFLAGSAT                  = 0x200000000001400\n\tCAP_CONNECT                    = 0x200000080000000\n\tCAP_CONNECTAT                  = 0x200010000000400\n\tCAP_CREATE                     = 0x200000000000040\n\tCAP_EVENT                      = 0x400000000000020\n\tCAP_EXTATTR_DELETE             = 0x400000000001000\n\tCAP_EXTATTR_GET                = 0x400000000002000\n\tCAP_EXTATTR_LIST               = 0x400000000004000\n\tCAP_EXTATTR_SET                = 0x400000000008000\n\tCAP_FCHDIR                     = 0x200000000000800\n\tCAP_FCHFLAGS                   = 0x200000000001000\n\tCAP_FCHMOD                     = 0x200000000002000\n\tCAP_FCHMODAT                   = 0x200000000002400\n\tCAP_FCHOWN                     = 0x200000000004000\n\tCAP_FCHOWNAT                   = 0x200000000004400\n\tCAP_FCNTL                      = 0x200000000008000\n\tCAP_FCNTL_ALL                  = 0x78\n\tCAP_FCNTL_GETFL                = 0x8\n\tCAP_FCNTL_GETOWN               = 0x20\n\tCAP_FCNTL_SETFL                = 0x10\n\tCAP_FCNTL_SETOWN               = 0x40\n\tCAP_FEXECVE                    = 0x200000000000080\n\tCAP_FLOCK                      = 0x200000000010000\n\tCAP_FPATHCONF                  = 0x200000000020000\n\tCAP_FSCK                       = 0x200000000040000\n\tCAP_FSTAT                      = 0x200000000080000\n\tCAP_FSTATAT                    = 0x200000000080400\n\tCAP_FSTATFS                    = 0x200000000100000\n\tCAP_FSYNC                      = 0x200000000000100\n\tCAP_FTRUNCATE                  = 0x200000000000200\n\tCAP_FUTIMES                    = 0x200000000200000\n\tCAP_FUTIMESAT                  = 0x200000000200400\n\tCAP_GETPEERNAME                = 0x200000100000000\n\tCAP_GETSOCKNAME                = 0x200000200000000\n\tCAP_GETSOCKOPT                 = 0x200000400000000\n\tCAP_IOCTL                      = 0x400000000000080\n\tCAP_IOCTLS_ALL                 = 0x7fffffffffffffff\n\tCAP_KQUEUE                     = 0x400000000100040\n\tCAP_KQUEUE_CHANGE              = 0x400000000100000\n\tCAP_KQUEUE_EVENT               = 0x400000000000040\n\tCAP_LINKAT_SOURCE              = 0x200020000000400\n\tCAP_LINKAT_TARGET              = 0x200000000400400\n\tCAP_LISTEN                     = 0x200000800000000\n\tCAP_LOOKUP                     = 0x200000000000400\n\tCAP_MAC_GET                    = 0x400000000000001\n\tCAP_MAC_SET                    = 0x400000000000002\n\tCAP_MKDIRAT                    = 0x200000000800400\n\tCAP_MKFIFOAT                   = 0x200000001000400\n\tCAP_MKNODAT                    = 0x200000002000400\n\tCAP_MMAP                       = 0x200000000000010\n\tCAP_MMAP_R                     = 0x20000000000001d\n\tCAP_MMAP_RW                    = 0x20000000000001f\n\tCAP_MMAP_RWX                   = 0x20000000000003f\n\tCAP_MMAP_RX                    = 0x20000000000003d\n\tCAP_MMAP_W                     = 0x20000000000001e\n\tCAP_MMAP_WX                    = 0x20000000000003e\n\tCAP_MMAP_X                     = 0x20000000000003c\n\tCAP_PDGETPID                   = 0x400000000000200\n\tCAP_PDKILL                     = 0x400000000000800\n\tCAP_PDWAIT                     = 0x400000000000400\n\tCAP_PEELOFF                    = 0x200001000000000\n\tCAP_POLL_EVENT                 = 0x400000000000020\n\tCAP_PREAD                      = 0x20000000000000d\n\tCAP_PWRITE                     = 0x20000000000000e\n\tCAP_READ                       = 0x200000000000001\n\tCAP_RECV                       = 0x200000000000001\n\tCAP_RENAMEAT_SOURCE            = 0x200000004000400\n\tCAP_RENAMEAT_TARGET            = 0x200040000000400\n\tCAP_RIGHTS_VERSION             = 0x0\n\tCAP_RIGHTS_VERSION_00          = 0x0\n\tCAP_SEEK                       = 0x20000000000000c\n\tCAP_SEEK_TELL                  = 0x200000000000004\n\tCAP_SEM_GETVALUE               = 0x400000000000004\n\tCAP_SEM_POST                   = 0x400000000000008\n\tCAP_SEM_WAIT                   = 0x400000000000010\n\tCAP_SEND                       = 0x200000000000002\n\tCAP_SETSOCKOPT                 = 0x200002000000000\n\tCAP_SHUTDOWN                   = 0x200004000000000\n\tCAP_SOCK_CLIENT                = 0x200007780000003\n\tCAP_SOCK_SERVER                = 0x200007f60000003\n\tCAP_SYMLINKAT                  = 0x200000008000400\n\tCAP_TTYHOOK                    = 0x400000000000100\n\tCAP_UNLINKAT                   = 0x200000010000400\n\tCAP_UNUSED0_44                 = 0x200080000000000\n\tCAP_UNUSED0_57                 = 0x300000000000000\n\tCAP_UNUSED1_22                 = 0x400000000200000\n\tCAP_UNUSED1_57                 = 0x500000000000000\n\tCAP_WRITE                      = 0x200000000000002\n\tCFLUSH                         = 0xf\n\tCLOCAL                         = 0x8000\n\tCLOCK_BOOTTIME                 = 0x5\n\tCLOCK_MONOTONIC                = 0x4\n\tCLOCK_MONOTONIC_COARSE         = 0xc\n\tCLOCK_MONOTONIC_FAST           = 0xc\n\tCLOCK_MONOTONIC_PRECISE        = 0xb\n\tCLOCK_PROCESS_CPUTIME_ID       = 0xf\n\tCLOCK_PROF                     = 0x2\n\tCLOCK_REALTIME                 = 0x0\n\tCLOCK_REALTIME_COARSE          = 0xa\n\tCLOCK_REALTIME_FAST            = 0xa\n\tCLOCK_REALTIME_PRECISE         = 0x9\n\tCLOCK_SECOND                   = 0xd\n\tCLOCK_THREAD_CPUTIME_ID        = 0xe\n\tCLOCK_UPTIME                   = 0x5\n\tCLOCK_UPTIME_FAST              = 0x8\n\tCLOCK_UPTIME_PRECISE           = 0x7\n\tCLOCK_VIRTUAL                  = 0x1\n\tCPUSTATES                      = 0x5\n\tCP_IDLE                        = 0x4\n\tCP_INTR                        = 0x3\n\tCP_NICE                        = 0x1\n\tCP_SYS                         = 0x2\n\tCP_USER                        = 0x0\n\tCREAD                          = 0x800\n\tCRTSCTS                        = 0x30000\n\tCS5                            = 0x0\n\tCS6                            = 0x100\n\tCS7                            = 0x200\n\tCS8                            = 0x300\n\tCSIZE                          = 0x300\n\tCSTART                         = 0x11\n\tCSTATUS                        = 0x14\n\tCSTOP                          = 0x13\n\tCSTOPB                         = 0x400\n\tCSUSP                          = 0x1a\n\tCTL_HW                         = 0x6\n\tCTL_KERN                       = 0x1\n\tCTL_MAXNAME                    = 0x18\n\tCTL_NET                        = 0x4\n\tDIOCGATTR                      = 0xc148648e\n\tDIOCGDELETE                    = 0x80106488\n\tDIOCGFLUSH                     = 0x20006487\n\tDIOCGFWHEADS                   = 0x40046483\n\tDIOCGFWSECTORS                 = 0x40046482\n\tDIOCGIDENT                     = 0x41006489\n\tDIOCGKERNELDUMP                = 0xc0986492\n\tDIOCGMEDIASIZE                 = 0x40086481\n\tDIOCGPHYSPATH                  = 0x4400648d\n\tDIOCGPROVIDERNAME              = 0x4400648a\n\tDIOCGSECTORSIZE                = 0x40046480\n\tDIOCGSTRIPEOFFSET              = 0x4008648c\n\tDIOCGSTRIPESIZE                = 0x4008648b\n\tDIOCSKERNELDUMP                = 0x80986491\n\tDIOCSKERNELDUMP_FREEBSD11      = 0x80046485\n\tDIOCSKERNELDUMP_FREEBSD12      = 0x80506490\n\tDIOCZONECMD                    = 0xc080648f\n\tDLT_A429                       = 0xb8\n\tDLT_A653_ICM                   = 0xb9\n\tDLT_AIRONET_HEADER             = 0x78\n\tDLT_AOS                        = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394     = 0x8a\n\tDLT_ARCNET                     = 0x7\n\tDLT_ARCNET_LINUX               = 0x81\n\tDLT_ATM_CLIP                   = 0x13\n\tDLT_ATM_RFC1483                = 0xb\n\tDLT_AURORA                     = 0x7e\n\tDLT_AX25                       = 0x3\n\tDLT_AX25_KISS                  = 0xca\n\tDLT_BACNET_MS_TP               = 0xa5\n\tDLT_BLUETOOTH_BREDR_BB         = 0xff\n\tDLT_BLUETOOTH_HCI_H4           = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9\n\tDLT_BLUETOOTH_LE_LL            = 0xfb\n\tDLT_BLUETOOTH_LE_LL_WITH_PHDR  = 0x100\n\tDLT_BLUETOOTH_LINUX_MONITOR    = 0xfe\n\tDLT_CAN20B                     = 0xbe\n\tDLT_CAN_SOCKETCAN              = 0xe3\n\tDLT_CHAOS                      = 0x5\n\tDLT_CHDLC                      = 0x68\n\tDLT_CISCO_IOS                  = 0x76\n\tDLT_CLASS_NETBSD_RAWAF         = 0x2240000\n\tDLT_C_HDLC                     = 0x68\n\tDLT_C_HDLC_WITH_DIR            = 0xcd\n\tDLT_DBUS                       = 0xe7\n\tDLT_DECT                       = 0xdd\n\tDLT_DISPLAYPORT_AUX            = 0x113\n\tDLT_DOCSIS                     = 0x8f\n\tDLT_DOCSIS31_XRA31             = 0x111\n\tDLT_DVB_CI                     = 0xeb\n\tDLT_ECONET                     = 0x73\n\tDLT_EN10MB                     = 0x1\n\tDLT_EN3MB                      = 0x2\n\tDLT_ENC                        = 0x6d\n\tDLT_EPON                       = 0x103\n\tDLT_ERF                        = 0xc5\n\tDLT_ERF_ETH                    = 0xaf\n\tDLT_ERF_POS                    = 0xb0\n\tDLT_ETHERNET_MPACKET           = 0x112\n\tDLT_FC_2                       = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS     = 0xe1\n\tDLT_FDDI                       = 0xa\n\tDLT_FLEXRAY                    = 0xd2\n\tDLT_FRELAY                     = 0x6b\n\tDLT_FRELAY_WITH_DIR            = 0xce\n\tDLT_GCOM_SERIAL                = 0xad\n\tDLT_GCOM_T1E1                  = 0xac\n\tDLT_GPF_F                      = 0xab\n\tDLT_GPF_T                      = 0xaa\n\tDLT_GPRS_LLC                   = 0xa9\n\tDLT_GSMTAP_ABIS                = 0xda\n\tDLT_GSMTAP_UM                  = 0xd9\n\tDLT_IBM_SN                     = 0x92\n\tDLT_IBM_SP                     = 0x91\n\tDLT_IEEE802                    = 0x6\n\tDLT_IEEE802_11                 = 0x69\n\tDLT_IEEE802_11_RADIO           = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS       = 0xa3\n\tDLT_IEEE802_15_4               = 0xc3\n\tDLT_IEEE802_15_4_LINUX         = 0xbf\n\tDLT_IEEE802_15_4_NOFCS         = 0xe6\n\tDLT_IEEE802_15_4_NONASK_PHY    = 0xd7\n\tDLT_IEEE802_16_MAC_CPS         = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO   = 0xc1\n\tDLT_INFINIBAND                 = 0xf7\n\tDLT_IPFILTER                   = 0x74\n\tDLT_IPMB_KONTRON               = 0xc7\n\tDLT_IPMB_LINUX                 = 0xd1\n\tDLT_IPMI_HPM_2                 = 0x104\n\tDLT_IPNET                      = 0xe2\n\tDLT_IPOIB                      = 0xf2\n\tDLT_IPV4                       = 0xe4\n\tDLT_IPV6                       = 0xe5\n\tDLT_IP_OVER_FC                 = 0x7a\n\tDLT_ISO_14443                  = 0x108\n\tDLT_JUNIPER_ATM1               = 0x89\n\tDLT_JUNIPER_ATM2               = 0x87\n\tDLT_JUNIPER_ATM_CEMIC          = 0xee\n\tDLT_JUNIPER_CHDLC              = 0xb5\n\tDLT_JUNIPER_ES                 = 0x84\n\tDLT_JUNIPER_ETHER              = 0xb2\n\tDLT_JUNIPER_FIBRECHANNEL       = 0xea\n\tDLT_JUNIPER_FRELAY             = 0xb4\n\tDLT_JUNIPER_GGSN               = 0x85\n\tDLT_JUNIPER_ISM                = 0xc2\n\tDLT_JUNIPER_MFR                = 0x86\n\tDLT_JUNIPER_MLFR               = 0x83\n\tDLT_JUNIPER_MLPPP              = 0x82\n\tDLT_JUNIPER_MONITOR            = 0xa4\n\tDLT_JUNIPER_PIC_PEER           = 0xae\n\tDLT_JUNIPER_PPP                = 0xb3\n\tDLT_JUNIPER_PPPOE              = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM          = 0xa8\n\tDLT_JUNIPER_SERVICES           = 0x88\n\tDLT_JUNIPER_SRX_E2E            = 0xe9\n\tDLT_JUNIPER_ST                 = 0xc8\n\tDLT_JUNIPER_VP                 = 0xb7\n\tDLT_JUNIPER_VS                 = 0xe8\n\tDLT_LAPB_WITH_DIR              = 0xcf\n\tDLT_LAPD                       = 0xcb\n\tDLT_LIN                        = 0xd4\n\tDLT_LINUX_EVDEV                = 0xd8\n\tDLT_LINUX_IRDA                 = 0x90\n\tDLT_LINUX_LAPD                 = 0xb1\n\tDLT_LINUX_PPP_WITHDIRECTION    = 0xa6\n\tDLT_LINUX_SLL                  = 0x71\n\tDLT_LINUX_SLL2                 = 0x114\n\tDLT_LOOP                       = 0x6c\n\tDLT_LORATAP                    = 0x10e\n\tDLT_LTALK                      = 0x72\n\tDLT_MATCHING_MAX               = 0x114\n\tDLT_MATCHING_MIN               = 0x68\n\tDLT_MFR                        = 0xb6\n\tDLT_MOST                       = 0xd3\n\tDLT_MPEG_2_TS                  = 0xf3\n\tDLT_MPLS                       = 0xdb\n\tDLT_MTP2                       = 0x8c\n\tDLT_MTP2_WITH_PHDR             = 0x8b\n\tDLT_MTP3                       = 0x8d\n\tDLT_MUX27010                   = 0xec\n\tDLT_NETANALYZER                = 0xf0\n\tDLT_NETANALYZER_TRANSPARENT    = 0xf1\n\tDLT_NETLINK                    = 0xfd\n\tDLT_NFC_LLCP                   = 0xf5\n\tDLT_NFLOG                      = 0xef\n\tDLT_NG40                       = 0xf4\n\tDLT_NORDIC_BLE                 = 0x110\n\tDLT_NULL                       = 0x0\n\tDLT_OPENFLOW                   = 0x10b\n\tDLT_PCI_EXP                    = 0x7d\n\tDLT_PFLOG                      = 0x75\n\tDLT_PFSYNC                     = 0x79\n\tDLT_PKTAP                      = 0x102\n\tDLT_PPI                        = 0xc0\n\tDLT_PPP                        = 0x9\n\tDLT_PPP_BSDOS                  = 0xe\n\tDLT_PPP_ETHER                  = 0x33\n\tDLT_PPP_PPPD                   = 0xa6\n\tDLT_PPP_SERIAL                 = 0x32\n\tDLT_PPP_WITH_DIR               = 0xcc\n\tDLT_PPP_WITH_DIRECTION         = 0xa6\n\tDLT_PRISM_HEADER               = 0x77\n\tDLT_PROFIBUS_DL                = 0x101\n\tDLT_PRONET                     = 0x4\n\tDLT_RAIF1                      = 0xc6\n\tDLT_RAW                        = 0xc\n\tDLT_RDS                        = 0x109\n\tDLT_REDBACK_SMARTEDGE          = 0x20\n\tDLT_RIO                        = 0x7c\n\tDLT_RTAC_SERIAL                = 0xfa\n\tDLT_SCCP                       = 0x8e\n\tDLT_SCTP                       = 0xf8\n\tDLT_SDLC                       = 0x10c\n\tDLT_SITA                       = 0xc4\n\tDLT_SLIP                       = 0x8\n\tDLT_SLIP_BSDOS                 = 0xd\n\tDLT_STANAG_5066_D_PDU          = 0xed\n\tDLT_SUNATM                     = 0x7b\n\tDLT_SYMANTEC_FIREWALL          = 0x63\n\tDLT_TI_LLN_SNIFFER             = 0x10d\n\tDLT_TZSP                       = 0x80\n\tDLT_USB                        = 0xba\n\tDLT_USBPCAP                    = 0xf9\n\tDLT_USB_DARWIN                 = 0x10a\n\tDLT_USB_FREEBSD                = 0xba\n\tDLT_USB_LINUX                  = 0xbd\n\tDLT_USB_LINUX_MMAPPED          = 0xdc\n\tDLT_USER0                      = 0x93\n\tDLT_USER1                      = 0x94\n\tDLT_USER10                     = 0x9d\n\tDLT_USER11                     = 0x9e\n\tDLT_USER12                     = 0x9f\n\tDLT_USER13                     = 0xa0\n\tDLT_USER14                     = 0xa1\n\tDLT_USER15                     = 0xa2\n\tDLT_USER2                      = 0x95\n\tDLT_USER3                      = 0x96\n\tDLT_USER4                      = 0x97\n\tDLT_USER5                      = 0x98\n\tDLT_USER6                      = 0x99\n\tDLT_USER7                      = 0x9a\n\tDLT_USER8                      = 0x9b\n\tDLT_USER9                      = 0x9c\n\tDLT_VSOCK                      = 0x10f\n\tDLT_WATTSTOPPER_DLM            = 0x107\n\tDLT_WIHART                     = 0xdf\n\tDLT_WIRESHARK_UPPER_PDU        = 0xfc\n\tDLT_X2E_SERIAL                 = 0xd5\n\tDLT_X2E_XORAYA                 = 0xd6\n\tDLT_ZWAVE_R1_R2                = 0x105\n\tDLT_ZWAVE_R3                   = 0x106\n\tDT_BLK                         = 0x6\n\tDT_CHR                         = 0x2\n\tDT_DIR                         = 0x4\n\tDT_FIFO                        = 0x1\n\tDT_LNK                         = 0xa\n\tDT_REG                         = 0x8\n\tDT_SOCK                        = 0xc\n\tDT_UNKNOWN                     = 0x0\n\tDT_WHT                         = 0xe\n\tECHO                           = 0x8\n\tECHOCTL                        = 0x40\n\tECHOE                          = 0x2\n\tECHOK                          = 0x4\n\tECHOKE                         = 0x1\n\tECHONL                         = 0x10\n\tECHOPRT                        = 0x20\n\tEHE_DEAD_PRIORITY              = -0x1\n\tEVFILT_AIO                     = -0x3\n\tEVFILT_EMPTY                   = -0xd\n\tEVFILT_FS                      = -0x9\n\tEVFILT_LIO                     = -0xa\n\tEVFILT_PROC                    = -0x5\n\tEVFILT_PROCDESC                = -0x8\n\tEVFILT_READ                    = -0x1\n\tEVFILT_SENDFILE                = -0xc\n\tEVFILT_SIGNAL                  = -0x6\n\tEVFILT_SYSCOUNT                = 0xd\n\tEVFILT_TIMER                   = -0x7\n\tEVFILT_USER                    = -0xb\n\tEVFILT_VNODE                   = -0x4\n\tEVFILT_WRITE                   = -0x2\n\tEVNAMEMAP_NAME_SIZE            = 0x40\n\tEV_ADD                         = 0x1\n\tEV_CLEAR                       = 0x20\n\tEV_DELETE                      = 0x2\n\tEV_DISABLE                     = 0x8\n\tEV_DISPATCH                    = 0x80\n\tEV_DROP                        = 0x1000\n\tEV_ENABLE                      = 0x4\n\tEV_EOF                         = 0x8000\n\tEV_ERROR                       = 0x4000\n\tEV_FLAG1                       = 0x2000\n\tEV_FLAG2                       = 0x4000\n\tEV_FORCEONESHOT                = 0x100\n\tEV_ONESHOT                     = 0x10\n\tEV_RECEIPT                     = 0x40\n\tEV_SYSFLAGS                    = 0xf000\n\tEXTA                           = 0x4b00\n\tEXTATTR_MAXNAMELEN             = 0xff\n\tEXTATTR_NAMESPACE_EMPTY        = 0x0\n\tEXTATTR_NAMESPACE_SYSTEM       = 0x2\n\tEXTATTR_NAMESPACE_USER         = 0x1\n\tEXTB                           = 0x9600\n\tEXTPROC                        = 0x800\n\tFD_CLOEXEC                     = 0x1\n\tFD_NONE                        = -0xc8\n\tFD_SETSIZE                     = 0x400\n\tFLUSHO                         = 0x800000\n\tF_ADD_SEALS                    = 0x13\n\tF_CANCEL                       = 0x5\n\tF_DUP2FD                       = 0xa\n\tF_DUP2FD_CLOEXEC               = 0x12\n\tF_DUPFD                        = 0x0\n\tF_DUPFD_CLOEXEC                = 0x11\n\tF_GETFD                        = 0x1\n\tF_GETFL                        = 0x3\n\tF_GETLK                        = 0xb\n\tF_GETOWN                       = 0x5\n\tF_GET_SEALS                    = 0x14\n\tF_ISUNIONSTACK                 = 0x15\n\tF_KINFO                        = 0x16\n\tF_OGETLK                       = 0x7\n\tF_OK                           = 0x0\n\tF_OSETLK                       = 0x8\n\tF_OSETLKW                      = 0x9\n\tF_RDAHEAD                      = 0x10\n\tF_RDLCK                        = 0x1\n\tF_READAHEAD                    = 0xf\n\tF_SEAL_GROW                    = 0x4\n\tF_SEAL_SEAL                    = 0x1\n\tF_SEAL_SHRINK                  = 0x2\n\tF_SEAL_WRITE                   = 0x8\n\tF_SETFD                        = 0x2\n\tF_SETFL                        = 0x4\n\tF_SETLK                        = 0xc\n\tF_SETLKW                       = 0xd\n\tF_SETLK_REMOTE                 = 0xe\n\tF_SETOWN                       = 0x6\n\tF_UNLCK                        = 0x2\n\tF_UNLCKSYS                     = 0x4\n\tF_WRLCK                        = 0x3\n\tHUPCL                          = 0x4000\n\tHW_MACHINE                     = 0x1\n\tICANON                         = 0x100\n\tICMP6_FILTER                   = 0x12\n\tICRNL                          = 0x100\n\tIEXTEN                         = 0x400\n\tIFAN_ARRIVAL                   = 0x0\n\tIFAN_DEPARTURE                 = 0x1\n\tIFCAP_WOL_MAGIC                = 0x2000\n\tIFF_ALLMULTI                   = 0x200\n\tIFF_ALTPHYS                    = 0x4000\n\tIFF_BROADCAST                  = 0x2\n\tIFF_CANTCHANGE                 = 0x218f72\n\tIFF_CANTCONFIG                 = 0x10000\n\tIFF_DEBUG                      = 0x4\n\tIFF_DRV_OACTIVE                = 0x400\n\tIFF_DRV_RUNNING                = 0x40\n\tIFF_DYING                      = 0x200000\n\tIFF_KNOWSEPOCH                 = 0x20\n\tIFF_LINK0                      = 0x1000\n\tIFF_LINK1                      = 0x2000\n\tIFF_LINK2                      = 0x4000\n\tIFF_LOOPBACK                   = 0x8\n\tIFF_MONITOR                    = 0x40000\n\tIFF_MULTICAST                  = 0x8000\n\tIFF_NOARP                      = 0x80\n\tIFF_NOGROUP                    = 0x800000\n\tIFF_OACTIVE                    = 0x400\n\tIFF_POINTOPOINT                = 0x10\n\tIFF_PPROMISC                   = 0x20000\n\tIFF_PROMISC                    = 0x100\n\tIFF_RENAMING                   = 0x400000\n\tIFF_RUNNING                    = 0x40\n\tIFF_SIMPLEX                    = 0x800\n\tIFF_STATICARP                  = 0x80000\n\tIFF_UP                         = 0x1\n\tIFNAMSIZ                       = 0x10\n\tIFT_BRIDGE                     = 0xd1\n\tIFT_CARP                       = 0xf8\n\tIFT_IEEE1394                   = 0x90\n\tIFT_INFINIBAND                 = 0xc7\n\tIFT_L2VLAN                     = 0x87\n\tIFT_L3IPVLAN                   = 0x88\n\tIFT_PPP                        = 0x17\n\tIFT_PROPVIRTUAL                = 0x35\n\tIGNBRK                         = 0x1\n\tIGNCR                          = 0x80\n\tIGNPAR                         = 0x4\n\tIMAXBEL                        = 0x2000\n\tINLCR                          = 0x40\n\tINPCK                          = 0x10\n\tIN_CLASSA_HOST                 = 0xffffff\n\tIN_CLASSA_MAX                  = 0x80\n\tIN_CLASSA_NET                  = 0xff000000\n\tIN_CLASSA_NSHIFT               = 0x18\n\tIN_CLASSB_HOST                 = 0xffff\n\tIN_CLASSB_MAX                  = 0x10000\n\tIN_CLASSB_NET                  = 0xffff0000\n\tIN_CLASSB_NSHIFT               = 0x10\n\tIN_CLASSC_HOST                 = 0xff\n\tIN_CLASSC_NET                  = 0xffffff00\n\tIN_CLASSC_NSHIFT               = 0x8\n\tIN_CLASSD_HOST                 = 0xfffffff\n\tIN_CLASSD_NET                  = 0xf0000000\n\tIN_CLASSD_NSHIFT               = 0x1c\n\tIN_LOOPBACKNET                 = 0x7f\n\tIN_NETMASK_DEFAULT             = 0xffffff00\n\tIN_RFC3021_MASK                = 0xfffffffe\n\tIPPROTO_3PC                    = 0x22\n\tIPPROTO_ADFS                   = 0x44\n\tIPPROTO_AH                     = 0x33\n\tIPPROTO_AHIP                   = 0x3d\n\tIPPROTO_APES                   = 0x63\n\tIPPROTO_ARGUS                  = 0xd\n\tIPPROTO_AX25                   = 0x5d\n\tIPPROTO_BHA                    = 0x31\n\tIPPROTO_BLT                    = 0x1e\n\tIPPROTO_BRSATMON               = 0x4c\n\tIPPROTO_CARP                   = 0x70\n\tIPPROTO_CFTP                   = 0x3e\n\tIPPROTO_CHAOS                  = 0x10\n\tIPPROTO_CMTP                   = 0x26\n\tIPPROTO_CPHB                   = 0x49\n\tIPPROTO_CPNX                   = 0x48\n\tIPPROTO_DCCP                   = 0x21\n\tIPPROTO_DDP                    = 0x25\n\tIPPROTO_DGP                    = 0x56\n\tIPPROTO_DIVERT                 = 0x102\n\tIPPROTO_DONE                   = 0x101\n\tIPPROTO_DSTOPTS                = 0x3c\n\tIPPROTO_EGP                    = 0x8\n\tIPPROTO_EMCON                  = 0xe\n\tIPPROTO_ENCAP                  = 0x62\n\tIPPROTO_EON                    = 0x50\n\tIPPROTO_ESP                    = 0x32\n\tIPPROTO_ETHERIP                = 0x61\n\tIPPROTO_FRAGMENT               = 0x2c\n\tIPPROTO_GGP                    = 0x3\n\tIPPROTO_GMTP                   = 0x64\n\tIPPROTO_GRE                    = 0x2f\n\tIPPROTO_HELLO                  = 0x3f\n\tIPPROTO_HIP                    = 0x8b\n\tIPPROTO_HMP                    = 0x14\n\tIPPROTO_HOPOPTS                = 0x0\n\tIPPROTO_ICMP                   = 0x1\n\tIPPROTO_ICMPV6                 = 0x3a\n\tIPPROTO_IDP                    = 0x16\n\tIPPROTO_IDPR                   = 0x23\n\tIPPROTO_IDRP                   = 0x2d\n\tIPPROTO_IGMP                   = 0x2\n\tIPPROTO_IGP                    = 0x55\n\tIPPROTO_IGRP                   = 0x58\n\tIPPROTO_IL                     = 0x28\n\tIPPROTO_INLSP                  = 0x34\n\tIPPROTO_INP                    = 0x20\n\tIPPROTO_IP                     = 0x0\n\tIPPROTO_IPCOMP                 = 0x6c\n\tIPPROTO_IPCV                   = 0x47\n\tIPPROTO_IPEIP                  = 0x5e\n\tIPPROTO_IPIP                   = 0x4\n\tIPPROTO_IPPC                   = 0x43\n\tIPPROTO_IPV4                   = 0x4\n\tIPPROTO_IPV6                   = 0x29\n\tIPPROTO_IRTP                   = 0x1c\n\tIPPROTO_KRYPTOLAN              = 0x41\n\tIPPROTO_LARP                   = 0x5b\n\tIPPROTO_LEAF1                  = 0x19\n\tIPPROTO_LEAF2                  = 0x1a\n\tIPPROTO_MAX                    = 0x100\n\tIPPROTO_MEAS                   = 0x13\n\tIPPROTO_MH                     = 0x87\n\tIPPROTO_MHRP                   = 0x30\n\tIPPROTO_MICP                   = 0x5f\n\tIPPROTO_MOBILE                 = 0x37\n\tIPPROTO_MPLS                   = 0x89\n\tIPPROTO_MTP                    = 0x5c\n\tIPPROTO_MUX                    = 0x12\n\tIPPROTO_ND                     = 0x4d\n\tIPPROTO_NHRP                   = 0x36\n\tIPPROTO_NONE                   = 0x3b\n\tIPPROTO_NSP                    = 0x1f\n\tIPPROTO_NVPII                  = 0xb\n\tIPPROTO_OLD_DIVERT             = 0xfe\n\tIPPROTO_OSPFIGP                = 0x59\n\tIPPROTO_PFSYNC                 = 0xf0\n\tIPPROTO_PGM                    = 0x71\n\tIPPROTO_PIGP                   = 0x9\n\tIPPROTO_PIM                    = 0x67\n\tIPPROTO_PRM                    = 0x15\n\tIPPROTO_PUP                    = 0xc\n\tIPPROTO_PVP                    = 0x4b\n\tIPPROTO_RAW                    = 0xff\n\tIPPROTO_RCCMON                 = 0xa\n\tIPPROTO_RDP                    = 0x1b\n\tIPPROTO_RESERVED_253           = 0xfd\n\tIPPROTO_RESERVED_254           = 0xfe\n\tIPPROTO_ROUTING                = 0x2b\n\tIPPROTO_RSVP                   = 0x2e\n\tIPPROTO_RVD                    = 0x42\n\tIPPROTO_SATEXPAK               = 0x40\n\tIPPROTO_SATMON                 = 0x45\n\tIPPROTO_SCCSP                  = 0x60\n\tIPPROTO_SCTP                   = 0x84\n\tIPPROTO_SDRP                   = 0x2a\n\tIPPROTO_SEND                   = 0x103\n\tIPPROTO_SHIM6                  = 0x8c\n\tIPPROTO_SKIP                   = 0x39\n\tIPPROTO_SPACER                 = 0x7fff\n\tIPPROTO_SRPC                   = 0x5a\n\tIPPROTO_ST                     = 0x7\n\tIPPROTO_SVMTP                  = 0x52\n\tIPPROTO_SWIPE                  = 0x35\n\tIPPROTO_TCF                    = 0x57\n\tIPPROTO_TCP                    = 0x6\n\tIPPROTO_TLSP                   = 0x38\n\tIPPROTO_TP                     = 0x1d\n\tIPPROTO_TPXX                   = 0x27\n\tIPPROTO_TRUNK1                 = 0x17\n\tIPPROTO_TRUNK2                 = 0x18\n\tIPPROTO_TTP                    = 0x54\n\tIPPROTO_UDP                    = 0x11\n\tIPPROTO_UDPLITE                = 0x88\n\tIPPROTO_VINES                  = 0x53\n\tIPPROTO_VISA                   = 0x46\n\tIPPROTO_VMTP                   = 0x51\n\tIPPROTO_WBEXPAK                = 0x4f\n\tIPPROTO_WBMON                  = 0x4e\n\tIPPROTO_WSN                    = 0x4a\n\tIPPROTO_XNET                   = 0xf\n\tIPPROTO_XTP                    = 0x24\n\tIPV6_AUTOFLOWLABEL             = 0x3b\n\tIPV6_BINDANY                   = 0x40\n\tIPV6_BINDMULTI                 = 0x41\n\tIPV6_BINDV6ONLY                = 0x1b\n\tIPV6_CHECKSUM                  = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS    = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP    = 0x1\n\tIPV6_DEFHLIM                   = 0x40\n\tIPV6_DONTFRAG                  = 0x3e\n\tIPV6_DSTOPTS                   = 0x32\n\tIPV6_FLOWID                    = 0x43\n\tIPV6_FLOWINFO_MASK             = 0xffffff0f\n\tIPV6_FLOWLABEL_LEN             = 0x14\n\tIPV6_FLOWLABEL_MASK            = 0xffff0f00\n\tIPV6_FLOWTYPE                  = 0x44\n\tIPV6_FRAGTTL                   = 0x78\n\tIPV6_FW_ADD                    = 0x1e\n\tIPV6_FW_DEL                    = 0x1f\n\tIPV6_FW_FLUSH                  = 0x20\n\tIPV6_FW_GET                    = 0x22\n\tIPV6_FW_ZERO                   = 0x21\n\tIPV6_HLIMDEC                   = 0x1\n\tIPV6_HOPLIMIT                  = 0x2f\n\tIPV6_HOPOPTS                   = 0x31\n\tIPV6_IPSEC_POLICY              = 0x1c\n\tIPV6_JOIN_GROUP                = 0xc\n\tIPV6_LEAVE_GROUP               = 0xd\n\tIPV6_MAXHLIM                   = 0xff\n\tIPV6_MAXOPTHDR                 = 0x800\n\tIPV6_MAXPACKET                 = 0xffff\n\tIPV6_MAX_GROUP_SRC_FILTER      = 0x200\n\tIPV6_MAX_MEMBERSHIPS           = 0xfff\n\tIPV6_MAX_SOCK_SRC_FILTER       = 0x80\n\tIPV6_MMTU                      = 0x500\n\tIPV6_MSFILTER                  = 0x4a\n\tIPV6_MULTICAST_HOPS            = 0xa\n\tIPV6_MULTICAST_IF              = 0x9\n\tIPV6_MULTICAST_LOOP            = 0xb\n\tIPV6_NEXTHOP                   = 0x30\n\tIPV6_ORIGDSTADDR               = 0x48\n\tIPV6_PATHMTU                   = 0x2c\n\tIPV6_PKTINFO                   = 0x2e\n\tIPV6_PORTRANGE                 = 0xe\n\tIPV6_PORTRANGE_DEFAULT         = 0x0\n\tIPV6_PORTRANGE_HIGH            = 0x1\n\tIPV6_PORTRANGE_LOW             = 0x2\n\tIPV6_PREFER_TEMPADDR           = 0x3f\n\tIPV6_RECVDSTOPTS               = 0x28\n\tIPV6_RECVFLOWID                = 0x46\n\tIPV6_RECVHOPLIMIT              = 0x25\n\tIPV6_RECVHOPOPTS               = 0x27\n\tIPV6_RECVORIGDSTADDR           = 0x48\n\tIPV6_RECVPATHMTU               = 0x2b\n\tIPV6_RECVPKTINFO               = 0x24\n\tIPV6_RECVRSSBUCKETID           = 0x47\n\tIPV6_RECVRTHDR                 = 0x26\n\tIPV6_RECVTCLASS                = 0x39\n\tIPV6_RSSBUCKETID               = 0x45\n\tIPV6_RSS_LISTEN_BUCKET         = 0x42\n\tIPV6_RTHDR                     = 0x33\n\tIPV6_RTHDRDSTOPTS              = 0x23\n\tIPV6_RTHDR_LOOSE               = 0x0\n\tIPV6_RTHDR_STRICT              = 0x1\n\tIPV6_RTHDR_TYPE_0              = 0x0\n\tIPV6_SOCKOPT_RESERVED1         = 0x3\n\tIPV6_TCLASS                    = 0x3d\n\tIPV6_UNICAST_HOPS              = 0x4\n\tIPV6_USE_MIN_MTU               = 0x2a\n\tIPV6_V6ONLY                    = 0x1b\n\tIPV6_VERSION                   = 0x60\n\tIPV6_VERSION_MASK              = 0xf0\n\tIPV6_VLAN_PCP                  = 0x4b\n\tIP_ADD_MEMBERSHIP              = 0xc\n\tIP_ADD_SOURCE_MEMBERSHIP       = 0x46\n\tIP_BINDANY                     = 0x18\n\tIP_BINDMULTI                   = 0x19\n\tIP_BLOCK_SOURCE                = 0x48\n\tIP_DEFAULT_MULTICAST_LOOP      = 0x1\n\tIP_DEFAULT_MULTICAST_TTL       = 0x1\n\tIP_DF                          = 0x4000\n\tIP_DONTFRAG                    = 0x43\n\tIP_DROP_MEMBERSHIP             = 0xd\n\tIP_DROP_SOURCE_MEMBERSHIP      = 0x47\n\tIP_DUMMYNET3                   = 0x31\n\tIP_DUMMYNET_CONFIGURE          = 0x3c\n\tIP_DUMMYNET_DEL                = 0x3d\n\tIP_DUMMYNET_FLUSH              = 0x3e\n\tIP_DUMMYNET_GET                = 0x40\n\tIP_FLOWID                      = 0x5a\n\tIP_FLOWTYPE                    = 0x5b\n\tIP_FW3                         = 0x30\n\tIP_FW_ADD                      = 0x32\n\tIP_FW_DEL                      = 0x33\n\tIP_FW_FLUSH                    = 0x34\n\tIP_FW_GET                      = 0x36\n\tIP_FW_NAT_CFG                  = 0x38\n\tIP_FW_NAT_DEL                  = 0x39\n\tIP_FW_NAT_GET_CONFIG           = 0x3a\n\tIP_FW_NAT_GET_LOG              = 0x3b\n\tIP_FW_RESETLOG                 = 0x37\n\tIP_FW_TABLE_ADD                = 0x28\n\tIP_FW_TABLE_DEL                = 0x29\n\tIP_FW_TABLE_FLUSH              = 0x2a\n\tIP_FW_TABLE_GETSIZE            = 0x2b\n\tIP_FW_TABLE_LIST               = 0x2c\n\tIP_FW_ZERO                     = 0x35\n\tIP_HDRINCL                     = 0x2\n\tIP_IPSEC_POLICY                = 0x15\n\tIP_MAXPACKET                   = 0xffff\n\tIP_MAX_GROUP_SRC_FILTER        = 0x200\n\tIP_MAX_MEMBERSHIPS             = 0xfff\n\tIP_MAX_SOCK_MUTE_FILTER        = 0x80\n\tIP_MAX_SOCK_SRC_FILTER         = 0x80\n\tIP_MF                          = 0x2000\n\tIP_MINTTL                      = 0x42\n\tIP_MSFILTER                    = 0x4a\n\tIP_MSS                         = 0x240\n\tIP_MULTICAST_IF                = 0x9\n\tIP_MULTICAST_LOOP              = 0xb\n\tIP_MULTICAST_TTL               = 0xa\n\tIP_MULTICAST_VIF               = 0xe\n\tIP_OFFMASK                     = 0x1fff\n\tIP_ONESBCAST                   = 0x17\n\tIP_OPTIONS                     = 0x1\n\tIP_ORIGDSTADDR                 = 0x1b\n\tIP_PORTRANGE                   = 0x13\n\tIP_PORTRANGE_DEFAULT           = 0x0\n\tIP_PORTRANGE_HIGH              = 0x1\n\tIP_PORTRANGE_LOW               = 0x2\n\tIP_RECVDSTADDR                 = 0x7\n\tIP_RECVFLOWID                  = 0x5d\n\tIP_RECVIF                      = 0x14\n\tIP_RECVOPTS                    = 0x5\n\tIP_RECVORIGDSTADDR             = 0x1b\n\tIP_RECVRETOPTS                 = 0x6\n\tIP_RECVRSSBUCKETID             = 0x5e\n\tIP_RECVTOS                     = 0x44\n\tIP_RECVTTL                     = 0x41\n\tIP_RETOPTS                     = 0x8\n\tIP_RF                          = 0x8000\n\tIP_RSSBUCKETID                 = 0x5c\n\tIP_RSS_LISTEN_BUCKET           = 0x1a\n\tIP_RSVP_OFF                    = 0x10\n\tIP_RSVP_ON                     = 0xf\n\tIP_RSVP_VIF_OFF                = 0x12\n\tIP_RSVP_VIF_ON                 = 0x11\n\tIP_SENDSRCADDR                 = 0x7\n\tIP_TOS                         = 0x3\n\tIP_TTL                         = 0x4\n\tIP_UNBLOCK_SOURCE              = 0x49\n\tIP_VLAN_PCP                    = 0x4b\n\tISIG                           = 0x80\n\tISTRIP                         = 0x20\n\tITIMER_PROF                    = 0x2\n\tITIMER_REAL                    = 0x0\n\tITIMER_VIRTUAL                 = 0x1\n\tIXANY                          = 0x800\n\tIXOFF                          = 0x400\n\tIXON                           = 0x200\n\tKERN_HOSTNAME                  = 0xa\n\tKERN_OSRELEASE                 = 0x2\n\tKERN_OSTYPE                    = 0x1\n\tKERN_VERSION                   = 0x4\n\tLOCAL_CONNWAIT                 = 0x4\n\tLOCAL_CREDS                    = 0x2\n\tLOCAL_CREDS_PERSISTENT         = 0x3\n\tLOCAL_PEERCRED                 = 0x1\n\tLOCAL_VENDOR                   = 0x80000000\n\tLOCK_EX                        = 0x2\n\tLOCK_NB                        = 0x4\n\tLOCK_SH                        = 0x1\n\tLOCK_UN                        = 0x8\n\tMADV_AUTOSYNC                  = 0x7\n\tMADV_CORE                      = 0x9\n\tMADV_DONTNEED                  = 0x4\n\tMADV_FREE                      = 0x5\n\tMADV_NOCORE                    = 0x8\n\tMADV_NORMAL                    = 0x0\n\tMADV_NOSYNC                    = 0x6\n\tMADV_PROTECT                   = 0xa\n\tMADV_RANDOM                    = 0x1\n\tMADV_SEQUENTIAL                = 0x2\n\tMADV_WILLNEED                  = 0x3\n\tMAP_32BIT                      = 0x80000\n\tMAP_ALIGNED_SUPER              = 0x1000000\n\tMAP_ALIGNMENT_MASK             = -0x1000000\n\tMAP_ALIGNMENT_SHIFT            = 0x18\n\tMAP_ANON                       = 0x1000\n\tMAP_ANONYMOUS                  = 0x1000\n\tMAP_COPY                       = 0x2\n\tMAP_EXCL                       = 0x4000\n\tMAP_FILE                       = 0x0\n\tMAP_FIXED                      = 0x10\n\tMAP_GUARD                      = 0x2000\n\tMAP_HASSEMAPHORE               = 0x200\n\tMAP_NOCORE                     = 0x20000\n\tMAP_NOSYNC                     = 0x800\n\tMAP_PREFAULT_READ              = 0x40000\n\tMAP_PRIVATE                    = 0x2\n\tMAP_RESERVED0020               = 0x20\n\tMAP_RESERVED0040               = 0x40\n\tMAP_RESERVED0080               = 0x80\n\tMAP_RESERVED0100               = 0x100\n\tMAP_SHARED                     = 0x1\n\tMAP_STACK                      = 0x400\n\tMCAST_BLOCK_SOURCE             = 0x54\n\tMCAST_EXCLUDE                  = 0x2\n\tMCAST_INCLUDE                  = 0x1\n\tMCAST_JOIN_GROUP               = 0x50\n\tMCAST_JOIN_SOURCE_GROUP        = 0x52\n\tMCAST_LEAVE_GROUP              = 0x51\n\tMCAST_LEAVE_SOURCE_GROUP       = 0x53\n\tMCAST_UNBLOCK_SOURCE           = 0x55\n\tMCAST_UNDEFINED                = 0x0\n\tMCL_CURRENT                    = 0x1\n\tMCL_FUTURE                     = 0x2\n\tMFD_ALLOW_SEALING              = 0x2\n\tMFD_CLOEXEC                    = 0x1\n\tMFD_HUGETLB                    = 0x4\n\tMFD_HUGE_16GB                  = -0x78000000\n\tMFD_HUGE_16MB                  = 0x60000000\n\tMFD_HUGE_1GB                   = 0x78000000\n\tMFD_HUGE_1MB                   = 0x50000000\n\tMFD_HUGE_256MB                 = 0x70000000\n\tMFD_HUGE_2GB                   = 0x7c000000\n\tMFD_HUGE_2MB                   = 0x54000000\n\tMFD_HUGE_32MB                  = 0x64000000\n\tMFD_HUGE_512KB                 = 0x4c000000\n\tMFD_HUGE_512MB                 = 0x74000000\n\tMFD_HUGE_64KB                  = 0x40000000\n\tMFD_HUGE_8MB                   = 0x5c000000\n\tMFD_HUGE_MASK                  = 0xfc000000\n\tMFD_HUGE_SHIFT                 = 0x1a\n\tMNT_ACLS                       = 0x8000000\n\tMNT_ASYNC                      = 0x40\n\tMNT_AUTOMOUNTED                = 0x200000000\n\tMNT_BYFSID                     = 0x8000000\n\tMNT_CMDFLAGS                   = 0x300d0f0000\n\tMNT_DEFEXPORTED                = 0x200\n\tMNT_DELEXPORT                  = 0x20000\n\tMNT_EMPTYDIR                   = 0x2000000000\n\tMNT_EXKERB                     = 0x800\n\tMNT_EXPORTANON                 = 0x400\n\tMNT_EXPORTED                   = 0x100\n\tMNT_EXPUBLIC                   = 0x20000000\n\tMNT_EXRDONLY                   = 0x80\n\tMNT_EXTLS                      = 0x4000000000\n\tMNT_EXTLSCERT                  = 0x8000000000\n\tMNT_EXTLSCERTUSER              = 0x10000000000\n\tMNT_FORCE                      = 0x80000\n\tMNT_GJOURNAL                   = 0x2000000\n\tMNT_IGNORE                     = 0x800000\n\tMNT_LAZY                       = 0x3\n\tMNT_LOCAL                      = 0x1000\n\tMNT_MULTILABEL                 = 0x4000000\n\tMNT_NFS4ACLS                   = 0x10\n\tMNT_NOATIME                    = 0x10000000\n\tMNT_NOCLUSTERR                 = 0x40000000\n\tMNT_NOCLUSTERW                 = 0x80000000\n\tMNT_NOCOVER                    = 0x1000000000\n\tMNT_NOEXEC                     = 0x4\n\tMNT_NONBUSY                    = 0x4000000\n\tMNT_NOSUID                     = 0x8\n\tMNT_NOSYMFOLLOW                = 0x400000\n\tMNT_NOWAIT                     = 0x2\n\tMNT_QUOTA                      = 0x2000\n\tMNT_RDONLY                     = 0x1\n\tMNT_RELOAD                     = 0x40000\n\tMNT_ROOTFS                     = 0x4000\n\tMNT_SNAPSHOT                   = 0x1000000\n\tMNT_SOFTDEP                    = 0x200000\n\tMNT_SUIDDIR                    = 0x100000\n\tMNT_SUJ                        = 0x100000000\n\tMNT_SUSPEND                    = 0x4\n\tMNT_SYNCHRONOUS                = 0x2\n\tMNT_UNION                      = 0x20\n\tMNT_UNTRUSTED                  = 0x800000000\n\tMNT_UPDATE                     = 0x10000\n\tMNT_UPDATEMASK                 = 0xad8d0807e\n\tMNT_USER                       = 0x8000\n\tMNT_VERIFIED                   = 0x400000000\n\tMNT_VISFLAGMASK                = 0xffef0ffff\n\tMNT_WAIT                       = 0x1\n\tMSG_CMSG_CLOEXEC               = 0x40000\n\tMSG_COMPAT                     = 0x8000\n\tMSG_CTRUNC                     = 0x20\n\tMSG_DONTROUTE                  = 0x4\n\tMSG_DONTWAIT                   = 0x80\n\tMSG_EOF                        = 0x100\n\tMSG_EOR                        = 0x8\n\tMSG_NBIO                       = 0x4000\n\tMSG_NOSIGNAL                   = 0x20000\n\tMSG_NOTIFICATION               = 0x2000\n\tMSG_OOB                        = 0x1\n\tMSG_PEEK                       = 0x2\n\tMSG_TRUNC                      = 0x10\n\tMSG_WAITALL                    = 0x40\n\tMSG_WAITFORONE                 = 0x80000\n\tMS_ASYNC                       = 0x1\n\tMS_INVALIDATE                  = 0x2\n\tMS_SYNC                        = 0x0\n\tNAME_MAX                       = 0xff\n\tNET_RT_DUMP                    = 0x1\n\tNET_RT_FLAGS                   = 0x2\n\tNET_RT_IFLIST                  = 0x3\n\tNET_RT_IFLISTL                 = 0x5\n\tNET_RT_IFMALIST                = 0x4\n\tNET_RT_NHGRP                   = 0x7\n\tNET_RT_NHOP                    = 0x6\n\tNFDBITS                        = 0x40\n\tNOFLSH                         = 0x80000000\n\tNOKERNINFO                     = 0x2000000\n\tNOTE_ABSTIME                   = 0x10\n\tNOTE_ATTRIB                    = 0x8\n\tNOTE_CHILD                     = 0x4\n\tNOTE_CLOSE                     = 0x100\n\tNOTE_CLOSE_WRITE               = 0x200\n\tNOTE_DELETE                    = 0x1\n\tNOTE_EXEC                      = 0x20000000\n\tNOTE_EXIT                      = 0x80000000\n\tNOTE_EXTEND                    = 0x4\n\tNOTE_FFAND                     = 0x40000000\n\tNOTE_FFCOPY                    = 0xc0000000\n\tNOTE_FFCTRLMASK                = 0xc0000000\n\tNOTE_FFLAGSMASK                = 0xffffff\n\tNOTE_FFNOP                     = 0x0\n\tNOTE_FFOR                      = 0x80000000\n\tNOTE_FILE_POLL                 = 0x2\n\tNOTE_FORK                      = 0x40000000\n\tNOTE_LINK                      = 0x10\n\tNOTE_LOWAT                     = 0x1\n\tNOTE_MSECONDS                  = 0x2\n\tNOTE_NSECONDS                  = 0x8\n\tNOTE_OPEN                      = 0x80\n\tNOTE_PCTRLMASK                 = 0xf0000000\n\tNOTE_PDATAMASK                 = 0xfffff\n\tNOTE_READ                      = 0x400\n\tNOTE_RENAME                    = 0x20\n\tNOTE_REVOKE                    = 0x40\n\tNOTE_SECONDS                   = 0x1\n\tNOTE_TRACK                     = 0x1\n\tNOTE_TRACKERR                  = 0x2\n\tNOTE_TRIGGER                   = 0x1000000\n\tNOTE_USECONDS                  = 0x4\n\tNOTE_WRITE                     = 0x2\n\tOCRNL                          = 0x10\n\tONLCR                          = 0x2\n\tONLRET                         = 0x40\n\tONOCR                          = 0x20\n\tONOEOT                         = 0x8\n\tOPOST                          = 0x1\n\tOXTABS                         = 0x4\n\tO_ACCMODE                      = 0x3\n\tO_APPEND                       = 0x8\n\tO_ASYNC                        = 0x40\n\tO_CLOEXEC                      = 0x100000\n\tO_CREAT                        = 0x200\n\tO_DIRECT                       = 0x10000\n\tO_DIRECTORY                    = 0x20000\n\tO_DSYNC                        = 0x1000000\n\tO_EMPTY_PATH                   = 0x2000000\n\tO_EXCL                         = 0x800\n\tO_EXEC                         = 0x40000\n\tO_EXLOCK                       = 0x20\n\tO_FSYNC                        = 0x80\n\tO_NDELAY                       = 0x4\n\tO_NOCTTY                       = 0x8000\n\tO_NOFOLLOW                     = 0x100\n\tO_NONBLOCK                     = 0x4\n\tO_PATH                         = 0x400000\n\tO_RDONLY                       = 0x0\n\tO_RDWR                         = 0x2\n\tO_RESOLVE_BENEATH              = 0x800000\n\tO_SEARCH                       = 0x40000\n\tO_SHLOCK                       = 0x10\n\tO_SYNC                         = 0x80\n\tO_TRUNC                        = 0x400\n\tO_TTY_INIT                     = 0x80000\n\tO_VERIFY                       = 0x200000\n\tO_WRONLY                       = 0x1\n\tPARENB                         = 0x1000\n\tPARMRK                         = 0x8\n\tPARODD                         = 0x2000\n\tPENDIN                         = 0x20000000\n\tPIOD_READ_D                    = 0x1\n\tPIOD_READ_I                    = 0x3\n\tPIOD_WRITE_D                   = 0x2\n\tPIOD_WRITE_I                   = 0x4\n\tPRIO_PGRP                      = 0x1\n\tPRIO_PROCESS                   = 0x0\n\tPRIO_USER                      = 0x2\n\tPROT_EXEC                      = 0x4\n\tPROT_NONE                      = 0x0\n\tPROT_READ                      = 0x1\n\tPROT_WRITE                     = 0x2\n\tPTRACE_DEFAULT                 = 0x1\n\tPTRACE_EXEC                    = 0x1\n\tPTRACE_FORK                    = 0x8\n\tPTRACE_LWP                     = 0x10\n\tPTRACE_SCE                     = 0x2\n\tPTRACE_SCX                     = 0x4\n\tPTRACE_SYSCALL                 = 0x6\n\tPTRACE_VFORK                   = 0x20\n\tPT_ATTACH                      = 0xa\n\tPT_CLEARSTEP                   = 0x10\n\tPT_CONTINUE                    = 0x7\n\tPT_COREDUMP                    = 0x1d\n\tPT_DETACH                      = 0xb\n\tPT_FIRSTMACH                   = 0x40\n\tPT_FOLLOW_FORK                 = 0x17\n\tPT_GETDBREGS                   = 0x25\n\tPT_GETFPREGS                   = 0x23\n\tPT_GETLWPLIST                  = 0xf\n\tPT_GETNUMLWPS                  = 0xe\n\tPT_GETREGS                     = 0x21\n\tPT_GET_EVENT_MASK              = 0x19\n\tPT_GET_SC_ARGS                 = 0x1b\n\tPT_GET_SC_RET                  = 0x1c\n\tPT_IO                          = 0xc\n\tPT_KILL                        = 0x8\n\tPT_LWPINFO                     = 0xd\n\tPT_LWP_EVENTS                  = 0x18\n\tPT_READ_D                      = 0x2\n\tPT_READ_I                      = 0x1\n\tPT_RESUME                      = 0x13\n\tPT_SETDBREGS                   = 0x26\n\tPT_SETFPREGS                   = 0x24\n\tPT_SETREGS                     = 0x22\n\tPT_SETSTEP                     = 0x11\n\tPT_SET_EVENT_MASK              = 0x1a\n\tPT_STEP                        = 0x9\n\tPT_SUSPEND                     = 0x12\n\tPT_SYSCALL                     = 0x16\n\tPT_TO_SCE                      = 0x14\n\tPT_TO_SCX                      = 0x15\n\tPT_TRACE_ME                    = 0x0\n\tPT_VM_ENTRY                    = 0x29\n\tPT_VM_TIMESTAMP                = 0x28\n\tPT_WRITE_D                     = 0x5\n\tPT_WRITE_I                     = 0x4\n\tP_ZONEID                       = 0xc\n\tRLIMIT_AS                      = 0xa\n\tRLIMIT_CORE                    = 0x4\n\tRLIMIT_CPU                     = 0x0\n\tRLIMIT_DATA                    = 0x2\n\tRLIMIT_FSIZE                   = 0x1\n\tRLIMIT_MEMLOCK                 = 0x6\n\tRLIMIT_NOFILE                  = 0x8\n\tRLIMIT_NPROC                   = 0x7\n\tRLIMIT_RSS                     = 0x5\n\tRLIMIT_STACK                   = 0x3\n\tRLIM_INFINITY                  = 0x7fffffffffffffff\n\tRTAX_AUTHOR                    = 0x6\n\tRTAX_BRD                       = 0x7\n\tRTAX_DST                       = 0x0\n\tRTAX_GATEWAY                   = 0x1\n\tRTAX_GENMASK                   = 0x3\n\tRTAX_IFA                       = 0x5\n\tRTAX_IFP                       = 0x4\n\tRTAX_MAX                       = 0x8\n\tRTAX_NETMASK                   = 0x2\n\tRTA_AUTHOR                     = 0x40\n\tRTA_BRD                        = 0x80\n\tRTA_DST                        = 0x1\n\tRTA_GATEWAY                    = 0x2\n\tRTA_GENMASK                    = 0x8\n\tRTA_IFA                        = 0x20\n\tRTA_IFP                        = 0x10\n\tRTA_NETMASK                    = 0x4\n\tRTF_BLACKHOLE                  = 0x1000\n\tRTF_BROADCAST                  = 0x400000\n\tRTF_DONE                       = 0x40\n\tRTF_DYNAMIC                    = 0x10\n\tRTF_FIXEDMTU                   = 0x80000\n\tRTF_FMASK                      = 0x1004d808\n\tRTF_GATEWAY                    = 0x2\n\tRTF_GWFLAG_COMPAT              = 0x80000000\n\tRTF_HOST                       = 0x4\n\tRTF_LLDATA                     = 0x400\n\tRTF_LLINFO                     = 0x400\n\tRTF_LOCAL                      = 0x200000\n\tRTF_MODIFIED                   = 0x20\n\tRTF_MULTICAST                  = 0x800000\n\tRTF_PINNED                     = 0x100000\n\tRTF_PROTO1                     = 0x8000\n\tRTF_PROTO2                     = 0x4000\n\tRTF_PROTO3                     = 0x40000\n\tRTF_REJECT                     = 0x8\n\tRTF_STATIC                     = 0x800\n\tRTF_STICKY                     = 0x10000000\n\tRTF_UP                         = 0x1\n\tRTF_XRESOLVE                   = 0x200\n\tRTM_ADD                        = 0x1\n\tRTM_CHANGE                     = 0x3\n\tRTM_DELADDR                    = 0xd\n\tRTM_DELETE                     = 0x2\n\tRTM_DELMADDR                   = 0x10\n\tRTM_GET                        = 0x4\n\tRTM_IEEE80211                  = 0x12\n\tRTM_IFANNOUNCE                 = 0x11\n\tRTM_IFINFO                     = 0xe\n\tRTM_LOCK                       = 0x8\n\tRTM_LOSING                     = 0x5\n\tRTM_MISS                       = 0x7\n\tRTM_NEWADDR                    = 0xc\n\tRTM_NEWMADDR                   = 0xf\n\tRTM_REDIRECT                   = 0x6\n\tRTM_RESOLVE                    = 0xb\n\tRTM_RTTUNIT                    = 0xf4240\n\tRTM_VERSION                    = 0x5\n\tRTV_EXPIRE                     = 0x4\n\tRTV_HOPCOUNT                   = 0x2\n\tRTV_MTU                        = 0x1\n\tRTV_RPIPE                      = 0x8\n\tRTV_RTT                        = 0x40\n\tRTV_RTTVAR                     = 0x80\n\tRTV_SPIPE                      = 0x10\n\tRTV_SSTHRESH                   = 0x20\n\tRTV_WEIGHT                     = 0x100\n\tRT_ALL_FIBS                    = -0x1\n\tRT_BLACKHOLE                   = 0x40\n\tRT_DEFAULT_FIB                 = 0x0\n\tRT_DEFAULT_WEIGHT              = 0x1\n\tRT_HAS_GW                      = 0x80\n\tRT_HAS_HEADER                  = 0x10\n\tRT_HAS_HEADER_BIT              = 0x4\n\tRT_L2_ME                       = 0x4\n\tRT_L2_ME_BIT                   = 0x2\n\tRT_LLE_CACHE                   = 0x100\n\tRT_MAX_WEIGHT                  = 0xffffff\n\tRT_MAY_LOOP                    = 0x8\n\tRT_MAY_LOOP_BIT                = 0x3\n\tRT_REJECT                      = 0x20\n\tRUSAGE_CHILDREN                = -0x1\n\tRUSAGE_SELF                    = 0x0\n\tRUSAGE_THREAD                  = 0x1\n\tSCM_BINTIME                    = 0x4\n\tSCM_CREDS                      = 0x3\n\tSCM_CREDS2                     = 0x8\n\tSCM_MONOTONIC                  = 0x6\n\tSCM_REALTIME                   = 0x5\n\tSCM_RIGHTS                     = 0x1\n\tSCM_TIMESTAMP                  = 0x2\n\tSCM_TIME_INFO                  = 0x7\n\tSEEK_CUR                       = 0x1\n\tSEEK_DATA                      = 0x3\n\tSEEK_END                       = 0x2\n\tSEEK_HOLE                      = 0x4\n\tSEEK_SET                       = 0x0\n\tSHUT_RD                        = 0x0\n\tSHUT_RDWR                      = 0x2\n\tSHUT_WR                        = 0x1\n\tSIOCADDMULTI                   = 0x80206931\n\tSIOCAIFADDR                    = 0x8040691a\n\tSIOCAIFGROUP                   = 0x80286987\n\tSIOCATMARK                     = 0x40047307\n\tSIOCDELMULTI                   = 0x80206932\n\tSIOCDIFADDR                    = 0x80206919\n\tSIOCDIFGROUP                   = 0x80286989\n\tSIOCDIFPHYADDR                 = 0x80206949\n\tSIOCGDRVSPEC                   = 0xc028697b\n\tSIOCGETSGCNT                   = 0xc0207210\n\tSIOCGETVIFCNT                  = 0xc028720f\n\tSIOCGHIWAT                     = 0x40047301\n\tSIOCGHWADDR                    = 0xc020693e\n\tSIOCGI2C                       = 0xc020693d\n\tSIOCGIFADDR                    = 0xc0206921\n\tSIOCGIFALIAS                   = 0xc044692d\n\tSIOCGIFBRDADDR                 = 0xc0206923\n\tSIOCGIFCAP                     = 0xc020691f\n\tSIOCGIFCONF                    = 0xc0106924\n\tSIOCGIFDATA                    = 0x8020692c\n\tSIOCGIFDESCR                   = 0xc020692a\n\tSIOCGIFDOWNREASON              = 0xc058699a\n\tSIOCGIFDSTADDR                 = 0xc0206922\n\tSIOCGIFFIB                     = 0xc020695c\n\tSIOCGIFFLAGS                   = 0xc0206911\n\tSIOCGIFGENERIC                 = 0xc020693a\n\tSIOCGIFGMEMB                   = 0xc028698a\n\tSIOCGIFGROUP                   = 0xc0286988\n\tSIOCGIFINDEX                   = 0xc0206920\n\tSIOCGIFMAC                     = 0xc0206926\n\tSIOCGIFMEDIA                   = 0xc0306938\n\tSIOCGIFMETRIC                  = 0xc0206917\n\tSIOCGIFMTU                     = 0xc0206933\n\tSIOCGIFNETMASK                 = 0xc0206925\n\tSIOCGIFPDSTADDR                = 0xc0206948\n\tSIOCGIFPHYS                    = 0xc0206935\n\tSIOCGIFPSRCADDR                = 0xc0206947\n\tSIOCGIFRSSHASH                 = 0xc0186997\n\tSIOCGIFRSSKEY                  = 0xc0946996\n\tSIOCGIFSTATUS                  = 0xc331693b\n\tSIOCGIFXMEDIA                  = 0xc030698b\n\tSIOCGLANPCP                    = 0xc0206998\n\tSIOCGLOWAT                     = 0x40047303\n\tSIOCGPGRP                      = 0x40047309\n\tSIOCGPRIVATE_0                 = 0xc0206950\n\tSIOCGPRIVATE_1                 = 0xc0206951\n\tSIOCGTUNFIB                    = 0xc020695e\n\tSIOCIFCREATE                   = 0xc020697a\n\tSIOCIFCREATE2                  = 0xc020697c\n\tSIOCIFDESTROY                  = 0x80206979\n\tSIOCIFGCLONERS                 = 0xc0106978\n\tSIOCSDRVSPEC                   = 0x8028697b\n\tSIOCSHIWAT                     = 0x80047300\n\tSIOCSIFADDR                    = 0x8020690c\n\tSIOCSIFBRDADDR                 = 0x80206913\n\tSIOCSIFCAP                     = 0x8020691e\n\tSIOCSIFDESCR                   = 0x80206929\n\tSIOCSIFDSTADDR                 = 0x8020690e\n\tSIOCSIFFIB                     = 0x8020695d\n\tSIOCSIFFLAGS                   = 0x80206910\n\tSIOCSIFGENERIC                 = 0x80206939\n\tSIOCSIFLLADDR                  = 0x8020693c\n\tSIOCSIFMAC                     = 0x80206927\n\tSIOCSIFMEDIA                   = 0xc0206937\n\tSIOCSIFMETRIC                  = 0x80206918\n\tSIOCSIFMTU                     = 0x80206934\n\tSIOCSIFNAME                    = 0x80206928\n\tSIOCSIFNETMASK                 = 0x80206916\n\tSIOCSIFPHYADDR                 = 0x80406946\n\tSIOCSIFPHYS                    = 0x80206936\n\tSIOCSIFRVNET                   = 0xc020695b\n\tSIOCSIFVNET                    = 0xc020695a\n\tSIOCSLANPCP                    = 0x80206999\n\tSIOCSLOWAT                     = 0x80047302\n\tSIOCSPGRP                      = 0x80047308\n\tSIOCSTUNFIB                    = 0x8020695f\n\tSOCK_CLOEXEC                   = 0x10000000\n\tSOCK_DGRAM                     = 0x2\n\tSOCK_MAXADDRLEN                = 0xff\n\tSOCK_NONBLOCK                  = 0x20000000\n\tSOCK_RAW                       = 0x3\n\tSOCK_RDM                       = 0x4\n\tSOCK_SEQPACKET                 = 0x5\n\tSOCK_STREAM                    = 0x1\n\tSOL_LOCAL                      = 0x0\n\tSOL_SOCKET                     = 0xffff\n\tSOMAXCONN                      = 0x80\n\tSO_ACCEPTCONN                  = 0x2\n\tSO_ACCEPTFILTER                = 0x1000\n\tSO_BINTIME                     = 0x2000\n\tSO_BROADCAST                   = 0x20\n\tSO_DEBUG                       = 0x1\n\tSO_DOMAIN                      = 0x1019\n\tSO_DONTROUTE                   = 0x10\n\tSO_ERROR                       = 0x1007\n\tSO_KEEPALIVE                   = 0x8\n\tSO_LABEL                       = 0x1009\n\tSO_LINGER                      = 0x80\n\tSO_LISTENINCQLEN               = 0x1013\n\tSO_LISTENQLEN                  = 0x1012\n\tSO_LISTENQLIMIT                = 0x1011\n\tSO_MAX_PACING_RATE             = 0x1018\n\tSO_NOSIGPIPE                   = 0x800\n\tSO_NO_DDP                      = 0x8000\n\tSO_NO_OFFLOAD                  = 0x4000\n\tSO_OOBINLINE                   = 0x100\n\tSO_PEERLABEL                   = 0x1010\n\tSO_PROTOCOL                    = 0x1016\n\tSO_PROTOTYPE                   = 0x1016\n\tSO_RCVBUF                      = 0x1002\n\tSO_RCVLOWAT                    = 0x1004\n\tSO_RCVTIMEO                    = 0x1006\n\tSO_RERROR                      = 0x20000\n\tSO_REUSEADDR                   = 0x4\n\tSO_REUSEPORT                   = 0x200\n\tSO_REUSEPORT_LB                = 0x10000\n\tSO_SETFIB                      = 0x1014\n\tSO_SNDBUF                      = 0x1001\n\tSO_SNDLOWAT                    = 0x1003\n\tSO_SNDTIMEO                    = 0x1005\n\tSO_TIMESTAMP                   = 0x400\n\tSO_TS_BINTIME                  = 0x1\n\tSO_TS_CLOCK                    = 0x1017\n\tSO_TS_CLOCK_MAX                = 0x3\n\tSO_TS_DEFAULT                  = 0x0\n\tSO_TS_MONOTONIC                = 0x3\n\tSO_TS_REALTIME                 = 0x2\n\tSO_TS_REALTIME_MICRO           = 0x0\n\tSO_TYPE                        = 0x1008\n\tSO_USELOOPBACK                 = 0x40\n\tSO_USER_COOKIE                 = 0x1015\n\tSO_VENDOR                      = 0x80000000\n\tS_BLKSIZE                      = 0x200\n\tS_IEXEC                        = 0x40\n\tS_IFBLK                        = 0x6000\n\tS_IFCHR                        = 0x2000\n\tS_IFDIR                        = 0x4000\n\tS_IFIFO                        = 0x1000\n\tS_IFLNK                        = 0xa000\n\tS_IFMT                         = 0xf000\n\tS_IFREG                        = 0x8000\n\tS_IFSOCK                       = 0xc000\n\tS_IFWHT                        = 0xe000\n\tS_IREAD                        = 0x100\n\tS_IRGRP                        = 0x20\n\tS_IROTH                        = 0x4\n\tS_IRUSR                        = 0x100\n\tS_IRWXG                        = 0x38\n\tS_IRWXO                        = 0x7\n\tS_IRWXU                        = 0x1c0\n\tS_ISGID                        = 0x400\n\tS_ISTXT                        = 0x200\n\tS_ISUID                        = 0x800\n\tS_ISVTX                        = 0x200\n\tS_IWGRP                        = 0x10\n\tS_IWOTH                        = 0x2\n\tS_IWRITE                       = 0x80\n\tS_IWUSR                        = 0x80\n\tS_IXGRP                        = 0x8\n\tS_IXOTH                        = 0x1\n\tS_IXUSR                        = 0x40\n\tTAB0                           = 0x0\n\tTAB3                           = 0x4\n\tTABDLY                         = 0x4\n\tTCIFLUSH                       = 0x1\n\tTCIOFF                         = 0x3\n\tTCIOFLUSH                      = 0x3\n\tTCION                          = 0x4\n\tTCOFLUSH                       = 0x2\n\tTCOOFF                         = 0x1\n\tTCOON                          = 0x2\n\tTCPOPT_EOL                     = 0x0\n\tTCPOPT_FAST_OPEN               = 0x22\n\tTCPOPT_MAXSEG                  = 0x2\n\tTCPOPT_NOP                     = 0x1\n\tTCPOPT_PAD                     = 0x0\n\tTCPOPT_SACK                    = 0x5\n\tTCPOPT_SACK_PERMITTED          = 0x4\n\tTCPOPT_SIGNATURE               = 0x13\n\tTCPOPT_TIMESTAMP               = 0x8\n\tTCPOPT_WINDOW                  = 0x3\n\tTCP_BBR_ACK_COMP_ALG           = 0x448\n\tTCP_BBR_ALGORITHM              = 0x43b\n\tTCP_BBR_DRAIN_INC_EXTRA        = 0x43c\n\tTCP_BBR_DRAIN_PG               = 0x42e\n\tTCP_BBR_EXTRA_GAIN             = 0x449\n\tTCP_BBR_EXTRA_STATE            = 0x453\n\tTCP_BBR_FLOOR_MIN_TSO          = 0x454\n\tTCP_BBR_HDWR_PACE              = 0x451\n\tTCP_BBR_HOLD_TARGET            = 0x436\n\tTCP_BBR_IWINTSO                = 0x42b\n\tTCP_BBR_LOWGAIN_FD             = 0x436\n\tTCP_BBR_LOWGAIN_HALF           = 0x435\n\tTCP_BBR_LOWGAIN_THRESH         = 0x434\n\tTCP_BBR_MAX_RTO                = 0x439\n\tTCP_BBR_MIN_RTO                = 0x438\n\tTCP_BBR_MIN_TOPACEOUT          = 0x455\n\tTCP_BBR_ONE_RETRAN             = 0x431\n\tTCP_BBR_PACE_CROSS             = 0x442\n\tTCP_BBR_PACE_DEL_TAR           = 0x43f\n\tTCP_BBR_PACE_OH                = 0x435\n\tTCP_BBR_PACE_PER_SEC           = 0x43e\n\tTCP_BBR_PACE_SEG_MAX           = 0x440\n\tTCP_BBR_PACE_SEG_MIN           = 0x441\n\tTCP_BBR_POLICER_DETECT         = 0x457\n\tTCP_BBR_PROBE_RTT_GAIN         = 0x44d\n\tTCP_BBR_PROBE_RTT_INT          = 0x430\n\tTCP_BBR_PROBE_RTT_LEN          = 0x44e\n\tTCP_BBR_RACK_INIT_RATE         = 0x458\n\tTCP_BBR_RACK_RTT_USE           = 0x44a\n\tTCP_BBR_RECFORCE               = 0x42c\n\tTCP_BBR_REC_OVER_HPTS          = 0x43a\n\tTCP_BBR_RETRAN_WTSO            = 0x44b\n\tTCP_BBR_RWND_IS_APP            = 0x42f\n\tTCP_BBR_SEND_IWND_IN_TSO       = 0x44f\n\tTCP_BBR_STARTUP_EXIT_EPOCH     = 0x43d\n\tTCP_BBR_STARTUP_LOSS_EXIT      = 0x432\n\tTCP_BBR_STARTUP_PG             = 0x42d\n\tTCP_BBR_TMR_PACE_OH            = 0x448\n\tTCP_BBR_TSLIMITS               = 0x434\n\tTCP_BBR_TSTMP_RAISES           = 0x456\n\tTCP_BBR_UNLIMITED              = 0x43b\n\tTCP_BBR_USEDEL_RATE            = 0x437\n\tTCP_BBR_USE_LOWGAIN            = 0x433\n\tTCP_BBR_USE_RACK_CHEAT         = 0x450\n\tTCP_BBR_USE_RACK_RR            = 0x450\n\tTCP_BBR_UTTER_MAX_TSO          = 0x452\n\tTCP_CA_NAME_MAX                = 0x10\n\tTCP_CCALGOOPT                  = 0x41\n\tTCP_CONGESTION                 = 0x40\n\tTCP_DATA_AFTER_CLOSE           = 0x44c\n\tTCP_DEFER_OPTIONS              = 0x470\n\tTCP_DELACK                     = 0x48\n\tTCP_FASTOPEN                   = 0x401\n\tTCP_FASTOPEN_MAX_COOKIE_LEN    = 0x10\n\tTCP_FASTOPEN_MIN_COOKIE_LEN    = 0x4\n\tTCP_FASTOPEN_PSK_LEN           = 0x10\n\tTCP_FAST_RSM_HACK              = 0x471\n\tTCP_FIN_IS_RST                 = 0x49\n\tTCP_FUNCTION_BLK               = 0x2000\n\tTCP_FUNCTION_NAME_LEN_MAX      = 0x20\n\tTCP_HDWR_RATE_CAP              = 0x46a\n\tTCP_HDWR_UP_ONLY               = 0x46c\n\tTCP_IDLE_REDUCE                = 0x46\n\tTCP_INFO                       = 0x20\n\tTCP_IWND_NB                    = 0x2b\n\tTCP_IWND_NSEG                  = 0x2c\n\tTCP_KEEPCNT                    = 0x400\n\tTCP_KEEPIDLE                   = 0x100\n\tTCP_KEEPINIT                   = 0x80\n\tTCP_KEEPINTVL                  = 0x200\n\tTCP_LOG                        = 0x22\n\tTCP_LOGBUF                     = 0x23\n\tTCP_LOGDUMP                    = 0x25\n\tTCP_LOGDUMPID                  = 0x26\n\tTCP_LOGID                      = 0x24\n\tTCP_LOGID_CNT                  = 0x2e\n\tTCP_LOG_ID_LEN                 = 0x40\n\tTCP_LOG_LIMIT                  = 0x4a\n\tTCP_LOG_TAG                    = 0x2f\n\tTCP_MAXBURST                   = 0x4\n\tTCP_MAXHLEN                    = 0x3c\n\tTCP_MAXOLEN                    = 0x28\n\tTCP_MAXPEAKRATE                = 0x45\n\tTCP_MAXSEG                     = 0x2\n\tTCP_MAXUNACKTIME               = 0x44\n\tTCP_MAXWIN                     = 0xffff\n\tTCP_MAX_SACK                   = 0x4\n\tTCP_MAX_WINSHIFT               = 0xe\n\tTCP_MD5SIG                     = 0x10\n\tTCP_MINMSS                     = 0xd8\n\tTCP_MSS                        = 0x218\n\tTCP_NODELAY                    = 0x1\n\tTCP_NOOPT                      = 0x8\n\tTCP_NOPUSH                     = 0x4\n\tTCP_NO_PRR                     = 0x462\n\tTCP_PACING_RATE_CAP            = 0x46b\n\tTCP_PCAP_IN                    = 0x1000\n\tTCP_PCAP_OUT                   = 0x800\n\tTCP_PERF_INFO                  = 0x4e\n\tTCP_PROC_ACCOUNTING            = 0x4c\n\tTCP_RACK_ABC_VAL               = 0x46d\n\tTCP_RACK_CHEAT_NOT_CONF_RATE   = 0x459\n\tTCP_RACK_DO_DETECTION          = 0x449\n\tTCP_RACK_EARLY_RECOV           = 0x423\n\tTCP_RACK_EARLY_SEG             = 0x424\n\tTCP_RACK_FORCE_MSEG            = 0x45d\n\tTCP_RACK_GP_INCREASE           = 0x446\n\tTCP_RACK_GP_INCREASE_CA        = 0x45a\n\tTCP_RACK_GP_INCREASE_REC       = 0x45c\n\tTCP_RACK_GP_INCREASE_SS        = 0x45b\n\tTCP_RACK_IDLE_REDUCE_HIGH      = 0x444\n\tTCP_RACK_MBUF_QUEUE            = 0x41a\n\tTCP_RACK_MEASURE_CNT           = 0x46f\n\tTCP_RACK_MIN_PACE              = 0x445\n\tTCP_RACK_MIN_PACE_SEG          = 0x446\n\tTCP_RACK_MIN_TO                = 0x422\n\tTCP_RACK_NONRXT_CFG_RATE       = 0x463\n\tTCP_RACK_NO_PUSH_AT_MAX        = 0x466\n\tTCP_RACK_PACE_ALWAYS           = 0x41f\n\tTCP_RACK_PACE_MAX_SEG          = 0x41e\n\tTCP_RACK_PACE_RATE_CA          = 0x45e\n\tTCP_RACK_PACE_RATE_REC         = 0x460\n\tTCP_RACK_PACE_RATE_SS          = 0x45f\n\tTCP_RACK_PACE_REDUCE           = 0x41d\n\tTCP_RACK_PACE_TO_FILL          = 0x467\n\tTCP_RACK_PACING_BETA           = 0x472\n\tTCP_RACK_PACING_BETA_ECN       = 0x473\n\tTCP_RACK_PKT_DELAY             = 0x428\n\tTCP_RACK_PROFILE               = 0x469\n\tTCP_RACK_PROP                  = 0x41b\n\tTCP_RACK_PROP_RATE             = 0x420\n\tTCP_RACK_PRR_SENDALOT          = 0x421\n\tTCP_RACK_REORD_FADE            = 0x426\n\tTCP_RACK_REORD_THRESH          = 0x425\n\tTCP_RACK_RR_CONF               = 0x459\n\tTCP_RACK_TIMER_SLOP            = 0x474\n\tTCP_RACK_TLP_INC_VAR           = 0x429\n\tTCP_RACK_TLP_REDUCE            = 0x41c\n\tTCP_RACK_TLP_THRESH            = 0x427\n\tTCP_RACK_TLP_USE               = 0x447\n\tTCP_REC_ABC_VAL                = 0x46e\n\tTCP_REMOTE_UDP_ENCAPS_PORT     = 0x47\n\tTCP_REUSPORT_LB_NUMA           = 0x402\n\tTCP_REUSPORT_LB_NUMA_CURDOM    = -0x1\n\tTCP_REUSPORT_LB_NUMA_NODOM     = -0x2\n\tTCP_RXTLS_ENABLE               = 0x29\n\tTCP_RXTLS_MODE                 = 0x2a\n\tTCP_SHARED_CWND_ALLOWED        = 0x4b\n\tTCP_SHARED_CWND_ENABLE         = 0x464\n\tTCP_SHARED_CWND_TIME_LIMIT     = 0x468\n\tTCP_STATS                      = 0x21\n\tTCP_TIMELY_DYN_ADJ             = 0x465\n\tTCP_TLS_MODE_IFNET             = 0x2\n\tTCP_TLS_MODE_NONE              = 0x0\n\tTCP_TLS_MODE_SW                = 0x1\n\tTCP_TLS_MODE_TOE               = 0x3\n\tTCP_TXTLS_ENABLE               = 0x27\n\tTCP_TXTLS_MODE                 = 0x28\n\tTCP_USER_LOG                   = 0x30\n\tTCP_USE_CMP_ACKS               = 0x4d\n\tTCP_VENDOR                     = 0x80000000\n\tTCSAFLUSH                      = 0x2\n\tTIMER_ABSTIME                  = 0x1\n\tTIMER_RELTIME                  = 0x0\n\tTIOCCBRK                       = 0x2000747a\n\tTIOCCDTR                       = 0x20007478\n\tTIOCCONS                       = 0x80047462\n\tTIOCDRAIN                      = 0x2000745e\n\tTIOCEXCL                       = 0x2000740d\n\tTIOCEXT                        = 0x80047460\n\tTIOCFLUSH                      = 0x80047410\n\tTIOCGDRAINWAIT                 = 0x40047456\n\tTIOCGETA                       = 0x402c7413\n\tTIOCGETD                       = 0x4004741a\n\tTIOCGPGRP                      = 0x40047477\n\tTIOCGPTN                       = 0x4004740f\n\tTIOCGSID                       = 0x40047463\n\tTIOCGWINSZ                     = 0x40087468\n\tTIOCMBIC                       = 0x8004746b\n\tTIOCMBIS                       = 0x8004746c\n\tTIOCMGDTRWAIT                  = 0x4004745a\n\tTIOCMGET                       = 0x4004746a\n\tTIOCMSDTRWAIT                  = 0x8004745b\n\tTIOCMSET                       = 0x8004746d\n\tTIOCM_CAR                      = 0x40\n\tTIOCM_CD                       = 0x40\n\tTIOCM_CTS                      = 0x20\n\tTIOCM_DCD                      = 0x40\n\tTIOCM_DSR                      = 0x100\n\tTIOCM_DTR                      = 0x2\n\tTIOCM_LE                       = 0x1\n\tTIOCM_RI                       = 0x80\n\tTIOCM_RNG                      = 0x80\n\tTIOCM_RTS                      = 0x4\n\tTIOCM_SR                       = 0x10\n\tTIOCM_ST                       = 0x8\n\tTIOCNOTTY                      = 0x20007471\n\tTIOCNXCL                       = 0x2000740e\n\tTIOCOUTQ                       = 0x40047473\n\tTIOCPKT                        = 0x80047470\n\tTIOCPKT_DATA                   = 0x0\n\tTIOCPKT_DOSTOP                 = 0x20\n\tTIOCPKT_FLUSHREAD              = 0x1\n\tTIOCPKT_FLUSHWRITE             = 0x2\n\tTIOCPKT_IOCTL                  = 0x40\n\tTIOCPKT_NOSTOP                 = 0x10\n\tTIOCPKT_START                  = 0x8\n\tTIOCPKT_STOP                   = 0x4\n\tTIOCPTMASTER                   = 0x2000741c\n\tTIOCSBRK                       = 0x2000747b\n\tTIOCSCTTY                      = 0x20007461\n\tTIOCSDRAINWAIT                 = 0x80047457\n\tTIOCSDTR                       = 0x20007479\n\tTIOCSETA                       = 0x802c7414\n\tTIOCSETAF                      = 0x802c7416\n\tTIOCSETAW                      = 0x802c7415\n\tTIOCSETD                       = 0x8004741b\n\tTIOCSIG                        = 0x2004745f\n\tTIOCSPGRP                      = 0x80047476\n\tTIOCSTART                      = 0x2000746e\n\tTIOCSTAT                       = 0x20007465\n\tTIOCSTI                        = 0x80017472\n\tTIOCSTOP                       = 0x2000746f\n\tTIOCSWINSZ                     = 0x80087467\n\tTIOCTIMESTAMP                  = 0x40107459\n\tTIOCUCNTL                      = 0x80047466\n\tTOSTOP                         = 0x400000\n\tUTIME_NOW                      = -0x1\n\tUTIME_OMIT                     = -0x2\n\tVDISCARD                       = 0xf\n\tVDSUSP                         = 0xb\n\tVEOF                           = 0x0\n\tVEOL                           = 0x1\n\tVEOL2                          = 0x2\n\tVERASE                         = 0x3\n\tVERASE2                        = 0x7\n\tVINTR                          = 0x8\n\tVKILL                          = 0x5\n\tVLNEXT                         = 0xe\n\tVMIN                           = 0x10\n\tVQUIT                          = 0x9\n\tVREPRINT                       = 0x6\n\tVSTART                         = 0xc\n\tVSTATUS                        = 0x12\n\tVSTOP                          = 0xd\n\tVSUSP                          = 0xa\n\tVTIME                          = 0x11\n\tVWERASE                        = 0x4\n\tWCONTINUED                     = 0x4\n\tWCOREFLAG                      = 0x80\n\tWEXITED                        = 0x10\n\tWLINUXCLONE                    = 0x80000000\n\tWNOHANG                        = 0x1\n\tWNOWAIT                        = 0x8\n\tWSTOPPED                       = 0x2\n\tWTRAPPED                       = 0x20\n\tWUNTRACED                      = 0x2\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x59)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x55)\n\tECAPMODE        = syscall.Errno(0x5e)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDOOFUS         = syscall.Errno(0x58)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x52)\n\tEILSEQ          = syscall.Errno(0x56)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTEGRITY      = syscall.Errno(0x61)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x61)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5a)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x57)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x5b)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x53)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCAPABLE     = syscall.Errno(0x5d)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5f)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x2d)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEOWNERDEAD      = syscall.Errno(0x60)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5c)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGLIBRT  = syscall.Signal(0x21)\n\tSIGLWP    = syscall.Signal(0x20)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EWOULDBLOCK\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIDRM\", \"identifier removed\"},\n\t{83, \"ENOMSG\", \"no message of desired type\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"ECANCELED\", \"operation canceled\"},\n\t{86, \"EILSEQ\", \"illegal byte sequence\"},\n\t{87, \"ENOATTR\", \"attribute not found\"},\n\t{88, \"EDOOFUS\", \"programming error\"},\n\t{89, \"EBADMSG\", \"bad message\"},\n\t{90, \"EMULTIHOP\", \"multihop attempted\"},\n\t{91, \"ENOLINK\", \"link has been severed\"},\n\t{92, \"EPROTO\", \"protocol error\"},\n\t{93, \"ENOTCAPABLE\", \"capabilities insufficient\"},\n\t{94, \"ECAPMODE\", \"not permitted in capability mode\"},\n\t{95, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{96, \"EOWNERDEAD\", \"previous owner died\"},\n\t{97, \"EINTEGRITY\", \"integrity check failed\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"unknown signal\"},\n\t{33, \"SIGLIBRT\", \"unknown signal\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_linux.go",
    "content": "// Code generated by mkmerge; DO NOT EDIT.\n\n//go:build linux\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAAFS_MAGIC                                  = 0x5a3c69f0\n\tADFS_SUPER_MAGIC                            = 0xadf5\n\tAFFS_SUPER_MAGIC                            = 0xadff\n\tAFS_FS_MAGIC                                = 0x6b414653\n\tAFS_SUPER_MAGIC                             = 0x5346414f\n\tAF_ALG                                      = 0x26\n\tAF_APPLETALK                                = 0x5\n\tAF_ASH                                      = 0x12\n\tAF_ATMPVC                                   = 0x8\n\tAF_ATMSVC                                   = 0x14\n\tAF_AX25                                     = 0x3\n\tAF_BLUETOOTH                                = 0x1f\n\tAF_BRIDGE                                   = 0x7\n\tAF_CAIF                                     = 0x25\n\tAF_CAN                                      = 0x1d\n\tAF_DECnet                                   = 0xc\n\tAF_ECONET                                   = 0x13\n\tAF_FILE                                     = 0x1\n\tAF_IB                                       = 0x1b\n\tAF_IEEE802154                               = 0x24\n\tAF_INET                                     = 0x2\n\tAF_INET6                                    = 0xa\n\tAF_IPX                                      = 0x4\n\tAF_IRDA                                     = 0x17\n\tAF_ISDN                                     = 0x22\n\tAF_IUCV                                     = 0x20\n\tAF_KCM                                      = 0x29\n\tAF_KEY                                      = 0xf\n\tAF_LLC                                      = 0x1a\n\tAF_LOCAL                                    = 0x1\n\tAF_MAX                                      = 0x2e\n\tAF_MCTP                                     = 0x2d\n\tAF_MPLS                                     = 0x1c\n\tAF_NETBEUI                                  = 0xd\n\tAF_NETLINK                                  = 0x10\n\tAF_NETROM                                   = 0x6\n\tAF_NFC                                      = 0x27\n\tAF_PACKET                                   = 0x11\n\tAF_PHONET                                   = 0x23\n\tAF_PPPOX                                    = 0x18\n\tAF_QIPCRTR                                  = 0x2a\n\tAF_RDS                                      = 0x15\n\tAF_ROSE                                     = 0xb\n\tAF_ROUTE                                    = 0x10\n\tAF_RXRPC                                    = 0x21\n\tAF_SECURITY                                 = 0xe\n\tAF_SMC                                      = 0x2b\n\tAF_SNA                                      = 0x16\n\tAF_TIPC                                     = 0x1e\n\tAF_UNIX                                     = 0x1\n\tAF_UNSPEC                                   = 0x0\n\tAF_VSOCK                                    = 0x28\n\tAF_WANPIPE                                  = 0x19\n\tAF_X25                                      = 0x9\n\tAF_XDP                                      = 0x2c\n\tALG_OP_DECRYPT                              = 0x0\n\tALG_OP_ENCRYPT                              = 0x1\n\tALG_SET_AEAD_ASSOCLEN                       = 0x4\n\tALG_SET_AEAD_AUTHSIZE                       = 0x5\n\tALG_SET_DRBG_ENTROPY                        = 0x6\n\tALG_SET_IV                                  = 0x2\n\tALG_SET_KEY                                 = 0x1\n\tALG_SET_KEY_BY_KEY_SERIAL                   = 0x7\n\tALG_SET_OP                                  = 0x3\n\tANON_INODE_FS_MAGIC                         = 0x9041934\n\tARPHRD_6LOWPAN                              = 0x339\n\tARPHRD_ADAPT                                = 0x108\n\tARPHRD_APPLETLK                             = 0x8\n\tARPHRD_ARCNET                               = 0x7\n\tARPHRD_ASH                                  = 0x30d\n\tARPHRD_ATM                                  = 0x13\n\tARPHRD_AX25                                 = 0x3\n\tARPHRD_BIF                                  = 0x307\n\tARPHRD_CAIF                                 = 0x336\n\tARPHRD_CAN                                  = 0x118\n\tARPHRD_CHAOS                                = 0x5\n\tARPHRD_CISCO                                = 0x201\n\tARPHRD_CSLIP                                = 0x101\n\tARPHRD_CSLIP6                               = 0x103\n\tARPHRD_DDCMP                                = 0x205\n\tARPHRD_DLCI                                 = 0xf\n\tARPHRD_ECONET                               = 0x30e\n\tARPHRD_EETHER                               = 0x2\n\tARPHRD_ETHER                                = 0x1\n\tARPHRD_EUI64                                = 0x1b\n\tARPHRD_FCAL                                 = 0x311\n\tARPHRD_FCFABRIC                             = 0x313\n\tARPHRD_FCPL                                 = 0x312\n\tARPHRD_FCPP                                 = 0x310\n\tARPHRD_FDDI                                 = 0x306\n\tARPHRD_FRAD                                 = 0x302\n\tARPHRD_HDLC                                 = 0x201\n\tARPHRD_HIPPI                                = 0x30c\n\tARPHRD_HWX25                                = 0x110\n\tARPHRD_IEEE1394                             = 0x18\n\tARPHRD_IEEE802                              = 0x6\n\tARPHRD_IEEE80211                            = 0x321\n\tARPHRD_IEEE80211_PRISM                      = 0x322\n\tARPHRD_IEEE80211_RADIOTAP                   = 0x323\n\tARPHRD_IEEE802154                           = 0x324\n\tARPHRD_IEEE802154_MONITOR                   = 0x325\n\tARPHRD_IEEE802_TR                           = 0x320\n\tARPHRD_INFINIBAND                           = 0x20\n\tARPHRD_IP6GRE                               = 0x337\n\tARPHRD_IPDDP                                = 0x309\n\tARPHRD_IPGRE                                = 0x30a\n\tARPHRD_IRDA                                 = 0x30f\n\tARPHRD_LAPB                                 = 0x204\n\tARPHRD_LOCALTLK                             = 0x305\n\tARPHRD_LOOPBACK                             = 0x304\n\tARPHRD_MCTP                                 = 0x122\n\tARPHRD_METRICOM                             = 0x17\n\tARPHRD_NETLINK                              = 0x338\n\tARPHRD_NETROM                               = 0x0\n\tARPHRD_NONE                                 = 0xfffe\n\tARPHRD_PHONET                               = 0x334\n\tARPHRD_PHONET_PIPE                          = 0x335\n\tARPHRD_PIMREG                               = 0x30b\n\tARPHRD_PPP                                  = 0x200\n\tARPHRD_PRONET                               = 0x4\n\tARPHRD_RAWHDLC                              = 0x206\n\tARPHRD_RAWIP                                = 0x207\n\tARPHRD_ROSE                                 = 0x10e\n\tARPHRD_RSRVD                                = 0x104\n\tARPHRD_SIT                                  = 0x308\n\tARPHRD_SKIP                                 = 0x303\n\tARPHRD_SLIP                                 = 0x100\n\tARPHRD_SLIP6                                = 0x102\n\tARPHRD_TUNNEL                               = 0x300\n\tARPHRD_TUNNEL6                              = 0x301\n\tARPHRD_VOID                                 = 0xffff\n\tARPHRD_VSOCKMON                             = 0x33a\n\tARPHRD_X25                                  = 0x10f\n\tAUDIT_ADD                                   = 0x3eb\n\tAUDIT_ADD_RULE                              = 0x3f3\n\tAUDIT_ALWAYS                                = 0x2\n\tAUDIT_ANOM_ABEND                            = 0x6a5\n\tAUDIT_ANOM_CREAT                            = 0x6a7\n\tAUDIT_ANOM_LINK                             = 0x6a6\n\tAUDIT_ANOM_PROMISCUOUS                      = 0x6a4\n\tAUDIT_ARCH                                  = 0xb\n\tAUDIT_ARCH_AARCH64                          = 0xc00000b7\n\tAUDIT_ARCH_ALPHA                            = 0xc0009026\n\tAUDIT_ARCH_ARCOMPACT                        = 0x4000005d\n\tAUDIT_ARCH_ARCOMPACTBE                      = 0x5d\n\tAUDIT_ARCH_ARCV2                            = 0x400000c3\n\tAUDIT_ARCH_ARCV2BE                          = 0xc3\n\tAUDIT_ARCH_ARM                              = 0x40000028\n\tAUDIT_ARCH_ARMEB                            = 0x28\n\tAUDIT_ARCH_C6X                              = 0x4000008c\n\tAUDIT_ARCH_C6XBE                            = 0x8c\n\tAUDIT_ARCH_CRIS                             = 0x4000004c\n\tAUDIT_ARCH_CSKY                             = 0x400000fc\n\tAUDIT_ARCH_FRV                              = 0x5441\n\tAUDIT_ARCH_H8300                            = 0x2e\n\tAUDIT_ARCH_HEXAGON                          = 0xa4\n\tAUDIT_ARCH_I386                             = 0x40000003\n\tAUDIT_ARCH_IA64                             = 0xc0000032\n\tAUDIT_ARCH_LOONGARCH32                      = 0x40000102\n\tAUDIT_ARCH_LOONGARCH64                      = 0xc0000102\n\tAUDIT_ARCH_M32R                             = 0x58\n\tAUDIT_ARCH_M68K                             = 0x4\n\tAUDIT_ARCH_MICROBLAZE                       = 0xbd\n\tAUDIT_ARCH_MIPS                             = 0x8\n\tAUDIT_ARCH_MIPS64                           = 0x80000008\n\tAUDIT_ARCH_MIPS64N32                        = 0xa0000008\n\tAUDIT_ARCH_MIPSEL                           = 0x40000008\n\tAUDIT_ARCH_MIPSEL64                         = 0xc0000008\n\tAUDIT_ARCH_MIPSEL64N32                      = 0xe0000008\n\tAUDIT_ARCH_NDS32                            = 0x400000a7\n\tAUDIT_ARCH_NDS32BE                          = 0xa7\n\tAUDIT_ARCH_NIOS2                            = 0x40000071\n\tAUDIT_ARCH_OPENRISC                         = 0x5c\n\tAUDIT_ARCH_PARISC                           = 0xf\n\tAUDIT_ARCH_PARISC64                         = 0x8000000f\n\tAUDIT_ARCH_PPC                              = 0x14\n\tAUDIT_ARCH_PPC64                            = 0x80000015\n\tAUDIT_ARCH_PPC64LE                          = 0xc0000015\n\tAUDIT_ARCH_RISCV32                          = 0x400000f3\n\tAUDIT_ARCH_RISCV64                          = 0xc00000f3\n\tAUDIT_ARCH_S390                             = 0x16\n\tAUDIT_ARCH_S390X                            = 0x80000016\n\tAUDIT_ARCH_SH                               = 0x2a\n\tAUDIT_ARCH_SH64                             = 0x8000002a\n\tAUDIT_ARCH_SHEL                             = 0x4000002a\n\tAUDIT_ARCH_SHEL64                           = 0xc000002a\n\tAUDIT_ARCH_SPARC                            = 0x2\n\tAUDIT_ARCH_SPARC64                          = 0x8000002b\n\tAUDIT_ARCH_TILEGX                           = 0xc00000bf\n\tAUDIT_ARCH_TILEGX32                         = 0x400000bf\n\tAUDIT_ARCH_TILEPRO                          = 0x400000bc\n\tAUDIT_ARCH_UNICORE                          = 0x4000006e\n\tAUDIT_ARCH_X86_64                           = 0xc000003e\n\tAUDIT_ARCH_XTENSA                           = 0x5e\n\tAUDIT_ARG0                                  = 0xc8\n\tAUDIT_ARG1                                  = 0xc9\n\tAUDIT_ARG2                                  = 0xca\n\tAUDIT_ARG3                                  = 0xcb\n\tAUDIT_AVC                                   = 0x578\n\tAUDIT_AVC_PATH                              = 0x57a\n\tAUDIT_BITMASK_SIZE                          = 0x40\n\tAUDIT_BIT_MASK                              = 0x8000000\n\tAUDIT_BIT_TEST                              = 0x48000000\n\tAUDIT_BPF                                   = 0x536\n\tAUDIT_BPRM_FCAPS                            = 0x529\n\tAUDIT_CAPSET                                = 0x52a\n\tAUDIT_CLASS_CHATTR                          = 0x2\n\tAUDIT_CLASS_CHATTR_32                       = 0x3\n\tAUDIT_CLASS_DIR_WRITE                       = 0x0\n\tAUDIT_CLASS_DIR_WRITE_32                    = 0x1\n\tAUDIT_CLASS_READ                            = 0x4\n\tAUDIT_CLASS_READ_32                         = 0x5\n\tAUDIT_CLASS_SIGNAL                          = 0x8\n\tAUDIT_CLASS_SIGNAL_32                       = 0x9\n\tAUDIT_CLASS_WRITE                           = 0x6\n\tAUDIT_CLASS_WRITE_32                        = 0x7\n\tAUDIT_COMPARE_AUID_TO_EUID                  = 0x10\n\tAUDIT_COMPARE_AUID_TO_FSUID                 = 0xe\n\tAUDIT_COMPARE_AUID_TO_OBJ_UID               = 0x5\n\tAUDIT_COMPARE_AUID_TO_SUID                  = 0xf\n\tAUDIT_COMPARE_EGID_TO_FSGID                 = 0x17\n\tAUDIT_COMPARE_EGID_TO_OBJ_GID               = 0x4\n\tAUDIT_COMPARE_EGID_TO_SGID                  = 0x18\n\tAUDIT_COMPARE_EUID_TO_FSUID                 = 0x12\n\tAUDIT_COMPARE_EUID_TO_OBJ_UID               = 0x3\n\tAUDIT_COMPARE_EUID_TO_SUID                  = 0x11\n\tAUDIT_COMPARE_FSGID_TO_OBJ_GID              = 0x9\n\tAUDIT_COMPARE_FSUID_TO_OBJ_UID              = 0x8\n\tAUDIT_COMPARE_GID_TO_EGID                   = 0x14\n\tAUDIT_COMPARE_GID_TO_FSGID                  = 0x15\n\tAUDIT_COMPARE_GID_TO_OBJ_GID                = 0x2\n\tAUDIT_COMPARE_GID_TO_SGID                   = 0x16\n\tAUDIT_COMPARE_SGID_TO_FSGID                 = 0x19\n\tAUDIT_COMPARE_SGID_TO_OBJ_GID               = 0x7\n\tAUDIT_COMPARE_SUID_TO_FSUID                 = 0x13\n\tAUDIT_COMPARE_SUID_TO_OBJ_UID               = 0x6\n\tAUDIT_COMPARE_UID_TO_AUID                   = 0xa\n\tAUDIT_COMPARE_UID_TO_EUID                   = 0xb\n\tAUDIT_COMPARE_UID_TO_FSUID                  = 0xc\n\tAUDIT_COMPARE_UID_TO_OBJ_UID                = 0x1\n\tAUDIT_COMPARE_UID_TO_SUID                   = 0xd\n\tAUDIT_CONFIG_CHANGE                         = 0x519\n\tAUDIT_CWD                                   = 0x51b\n\tAUDIT_DAEMON_ABORT                          = 0x4b2\n\tAUDIT_DAEMON_CONFIG                         = 0x4b3\n\tAUDIT_DAEMON_END                            = 0x4b1\n\tAUDIT_DAEMON_START                          = 0x4b0\n\tAUDIT_DEL                                   = 0x3ec\n\tAUDIT_DEL_RULE                              = 0x3f4\n\tAUDIT_DEVMAJOR                              = 0x64\n\tAUDIT_DEVMINOR                              = 0x65\n\tAUDIT_DIR                                   = 0x6b\n\tAUDIT_DM_CTRL                               = 0x53a\n\tAUDIT_DM_EVENT                              = 0x53b\n\tAUDIT_EGID                                  = 0x6\n\tAUDIT_EOE                                   = 0x528\n\tAUDIT_EQUAL                                 = 0x40000000\n\tAUDIT_EUID                                  = 0x2\n\tAUDIT_EVENT_LISTENER                        = 0x537\n\tAUDIT_EXE                                   = 0x70\n\tAUDIT_EXECVE                                = 0x51d\n\tAUDIT_EXIT                                  = 0x67\n\tAUDIT_FAIL_PANIC                            = 0x2\n\tAUDIT_FAIL_PRINTK                           = 0x1\n\tAUDIT_FAIL_SILENT                           = 0x0\n\tAUDIT_FANOTIFY                              = 0x533\n\tAUDIT_FD_PAIR                               = 0x525\n\tAUDIT_FEATURE_BITMAP_ALL                    = 0x7f\n\tAUDIT_FEATURE_BITMAP_BACKLOG_LIMIT          = 0x1\n\tAUDIT_FEATURE_BITMAP_BACKLOG_WAIT_TIME      = 0x2\n\tAUDIT_FEATURE_BITMAP_EXCLUDE_EXTEND         = 0x8\n\tAUDIT_FEATURE_BITMAP_EXECUTABLE_PATH        = 0x4\n\tAUDIT_FEATURE_BITMAP_FILTER_FS              = 0x40\n\tAUDIT_FEATURE_BITMAP_LOST_RESET             = 0x20\n\tAUDIT_FEATURE_BITMAP_SESSIONID_FILTER       = 0x10\n\tAUDIT_FEATURE_CHANGE                        = 0x530\n\tAUDIT_FEATURE_LOGINUID_IMMUTABLE            = 0x1\n\tAUDIT_FEATURE_ONLY_UNSET_LOGINUID           = 0x0\n\tAUDIT_FEATURE_VERSION                       = 0x1\n\tAUDIT_FIELD_COMPARE                         = 0x6f\n\tAUDIT_FILETYPE                              = 0x6c\n\tAUDIT_FILTERKEY                             = 0xd2\n\tAUDIT_FILTER_ENTRY                          = 0x2\n\tAUDIT_FILTER_EXCLUDE                        = 0x5\n\tAUDIT_FILTER_EXIT                           = 0x4\n\tAUDIT_FILTER_FS                             = 0x6\n\tAUDIT_FILTER_PREPEND                        = 0x10\n\tAUDIT_FILTER_TASK                           = 0x1\n\tAUDIT_FILTER_TYPE                           = 0x5\n\tAUDIT_FILTER_URING_EXIT                     = 0x7\n\tAUDIT_FILTER_USER                           = 0x0\n\tAUDIT_FILTER_WATCH                          = 0x3\n\tAUDIT_FIRST_KERN_ANOM_MSG                   = 0x6a4\n\tAUDIT_FIRST_USER_MSG                        = 0x44c\n\tAUDIT_FIRST_USER_MSG2                       = 0x834\n\tAUDIT_FSGID                                 = 0x8\n\tAUDIT_FSTYPE                                = 0x1a\n\tAUDIT_FSUID                                 = 0x4\n\tAUDIT_GET                                   = 0x3e8\n\tAUDIT_GET_FEATURE                           = 0x3fb\n\tAUDIT_GID                                   = 0x5\n\tAUDIT_GREATER_THAN                          = 0x20000000\n\tAUDIT_GREATER_THAN_OR_EQUAL                 = 0x60000000\n\tAUDIT_INODE                                 = 0x66\n\tAUDIT_INTEGRITY_DATA                        = 0x708\n\tAUDIT_INTEGRITY_EVM_XATTR                   = 0x70e\n\tAUDIT_INTEGRITY_HASH                        = 0x70b\n\tAUDIT_INTEGRITY_METADATA                    = 0x709\n\tAUDIT_INTEGRITY_PCR                         = 0x70c\n\tAUDIT_INTEGRITY_POLICY_RULE                 = 0x70f\n\tAUDIT_INTEGRITY_RULE                        = 0x70d\n\tAUDIT_INTEGRITY_STATUS                      = 0x70a\n\tAUDIT_INTEGRITY_USERSPACE                   = 0x710\n\tAUDIT_IPC                                   = 0x517\n\tAUDIT_IPC_SET_PERM                          = 0x51f\n\tAUDIT_IPE_ACCESS                            = 0x58c\n\tAUDIT_IPE_CONFIG_CHANGE                     = 0x58d\n\tAUDIT_IPE_POLICY_LOAD                       = 0x58e\n\tAUDIT_KERNEL                                = 0x7d0\n\tAUDIT_KERNEL_OTHER                          = 0x524\n\tAUDIT_KERN_MODULE                           = 0x532\n\tAUDIT_LANDLOCK_ACCESS                       = 0x58f\n\tAUDIT_LANDLOCK_DOMAIN                       = 0x590\n\tAUDIT_LAST_FEATURE                          = 0x1\n\tAUDIT_LAST_KERN_ANOM_MSG                    = 0x707\n\tAUDIT_LAST_USER_MSG                         = 0x4af\n\tAUDIT_LAST_USER_MSG2                        = 0xbb7\n\tAUDIT_LESS_THAN                             = 0x10000000\n\tAUDIT_LESS_THAN_OR_EQUAL                    = 0x50000000\n\tAUDIT_LIST                                  = 0x3ea\n\tAUDIT_LIST_RULES                            = 0x3f5\n\tAUDIT_LOGIN                                 = 0x3ee\n\tAUDIT_LOGINUID                              = 0x9\n\tAUDIT_LOGINUID_SET                          = 0x18\n\tAUDIT_MAC_CALIPSO_ADD                       = 0x58a\n\tAUDIT_MAC_CALIPSO_DEL                       = 0x58b\n\tAUDIT_MAC_CIPSOV4_ADD                       = 0x57f\n\tAUDIT_MAC_CIPSOV4_DEL                       = 0x580\n\tAUDIT_MAC_CONFIG_CHANGE                     = 0x57d\n\tAUDIT_MAC_IPSEC_ADDSA                       = 0x583\n\tAUDIT_MAC_IPSEC_ADDSPD                      = 0x585\n\tAUDIT_MAC_IPSEC_DELSA                       = 0x584\n\tAUDIT_MAC_IPSEC_DELSPD                      = 0x586\n\tAUDIT_MAC_IPSEC_EVENT                       = 0x587\n\tAUDIT_MAC_MAP_ADD                           = 0x581\n\tAUDIT_MAC_MAP_DEL                           = 0x582\n\tAUDIT_MAC_POLICY_LOAD                       = 0x57b\n\tAUDIT_MAC_STATUS                            = 0x57c\n\tAUDIT_MAC_UNLBL_ALLOW                       = 0x57e\n\tAUDIT_MAC_UNLBL_STCADD                      = 0x588\n\tAUDIT_MAC_UNLBL_STCDEL                      = 0x589\n\tAUDIT_MAKE_EQUIV                            = 0x3f7\n\tAUDIT_MAX_FIELDS                            = 0x40\n\tAUDIT_MAX_FIELD_COMPARE                     = 0x19\n\tAUDIT_MAX_KEY_LEN                           = 0x100\n\tAUDIT_MESSAGE_TEXT_MAX                      = 0x2170\n\tAUDIT_MMAP                                  = 0x52b\n\tAUDIT_MQ_GETSETATTR                         = 0x523\n\tAUDIT_MQ_NOTIFY                             = 0x522\n\tAUDIT_MQ_OPEN                               = 0x520\n\tAUDIT_MQ_SENDRECV                           = 0x521\n\tAUDIT_MSGTYPE                               = 0xc\n\tAUDIT_NEGATE                                = 0x80000000\n\tAUDIT_NETFILTER_CFG                         = 0x52d\n\tAUDIT_NETFILTER_PKT                         = 0x52c\n\tAUDIT_NEVER                                 = 0x0\n\tAUDIT_NLGRP_MAX                             = 0x1\n\tAUDIT_NOT_EQUAL                             = 0x30000000\n\tAUDIT_NR_FILTERS                            = 0x8\n\tAUDIT_OBJ_GID                               = 0x6e\n\tAUDIT_OBJ_LEV_HIGH                          = 0x17\n\tAUDIT_OBJ_LEV_LOW                           = 0x16\n\tAUDIT_OBJ_PID                               = 0x526\n\tAUDIT_OBJ_ROLE                              = 0x14\n\tAUDIT_OBJ_TYPE                              = 0x15\n\tAUDIT_OBJ_UID                               = 0x6d\n\tAUDIT_OBJ_USER                              = 0x13\n\tAUDIT_OPENAT2                               = 0x539\n\tAUDIT_OPERATORS                             = 0x78000000\n\tAUDIT_PATH                                  = 0x516\n\tAUDIT_PERM                                  = 0x6a\n\tAUDIT_PERM_ATTR                             = 0x8\n\tAUDIT_PERM_EXEC                             = 0x1\n\tAUDIT_PERM_READ                             = 0x4\n\tAUDIT_PERM_WRITE                            = 0x2\n\tAUDIT_PERS                                  = 0xa\n\tAUDIT_PID                                   = 0x0\n\tAUDIT_POSSIBLE                              = 0x1\n\tAUDIT_PPID                                  = 0x12\n\tAUDIT_PROCTITLE                             = 0x52f\n\tAUDIT_REPLACE                               = 0x531\n\tAUDIT_SADDR_FAM                             = 0x71\n\tAUDIT_SECCOMP                               = 0x52e\n\tAUDIT_SELINUX_ERR                           = 0x579\n\tAUDIT_SESSIONID                             = 0x19\n\tAUDIT_SET                                   = 0x3e9\n\tAUDIT_SET_FEATURE                           = 0x3fa\n\tAUDIT_SGID                                  = 0x7\n\tAUDIT_SID_UNSET                             = 0xffffffff\n\tAUDIT_SIGNAL_INFO                           = 0x3f2\n\tAUDIT_SOCKADDR                              = 0x51a\n\tAUDIT_SOCKETCALL                            = 0x518\n\tAUDIT_STATUS_BACKLOG_LIMIT                  = 0x10\n\tAUDIT_STATUS_BACKLOG_WAIT_TIME              = 0x20\n\tAUDIT_STATUS_BACKLOG_WAIT_TIME_ACTUAL       = 0x80\n\tAUDIT_STATUS_ENABLED                        = 0x1\n\tAUDIT_STATUS_FAILURE                        = 0x2\n\tAUDIT_STATUS_LOST                           = 0x40\n\tAUDIT_STATUS_PID                            = 0x4\n\tAUDIT_STATUS_RATE_LIMIT                     = 0x8\n\tAUDIT_SUBJ_CLR                              = 0x11\n\tAUDIT_SUBJ_ROLE                             = 0xe\n\tAUDIT_SUBJ_SEN                              = 0x10\n\tAUDIT_SUBJ_TYPE                             = 0xf\n\tAUDIT_SUBJ_USER                             = 0xd\n\tAUDIT_SUCCESS                               = 0x68\n\tAUDIT_SUID                                  = 0x3\n\tAUDIT_SYSCALL                               = 0x514\n\tAUDIT_SYSCALL_CLASSES                       = 0x10\n\tAUDIT_TIME_ADJNTPVAL                        = 0x535\n\tAUDIT_TIME_INJOFFSET                        = 0x534\n\tAUDIT_TRIM                                  = 0x3f6\n\tAUDIT_TTY                                   = 0x527\n\tAUDIT_TTY_GET                               = 0x3f8\n\tAUDIT_TTY_SET                               = 0x3f9\n\tAUDIT_UID                                   = 0x1\n\tAUDIT_UID_UNSET                             = 0xffffffff\n\tAUDIT_UNUSED_BITS                           = 0x7fffc00\n\tAUDIT_URINGOP                               = 0x538\n\tAUDIT_USER                                  = 0x3ed\n\tAUDIT_USER_AVC                              = 0x453\n\tAUDIT_USER_TTY                              = 0x464\n\tAUDIT_VERSION_BACKLOG_LIMIT                 = 0x1\n\tAUDIT_VERSION_BACKLOG_WAIT_TIME             = 0x2\n\tAUDIT_VERSION_LATEST                        = 0x7f\n\tAUDIT_WATCH                                 = 0x69\n\tAUDIT_WATCH_INS                             = 0x3ef\n\tAUDIT_WATCH_LIST                            = 0x3f1\n\tAUDIT_WATCH_REM                             = 0x3f0\n\tAUTOFS_SUPER_MAGIC                          = 0x187\n\tB0                                          = 0x0\n\tB110                                        = 0x3\n\tB1200                                       = 0x9\n\tB134                                        = 0x4\n\tB150                                        = 0x5\n\tB1800                                       = 0xa\n\tB19200                                      = 0xe\n\tB200                                        = 0x6\n\tB2400                                       = 0xb\n\tB300                                        = 0x7\n\tB38400                                      = 0xf\n\tB4800                                       = 0xc\n\tB50                                         = 0x1\n\tB600                                        = 0x8\n\tB75                                         = 0x2\n\tB9600                                       = 0xd\n\tBCACHEFS_SUPER_MAGIC                        = 0xca451a4e\n\tBDEVFS_MAGIC                                = 0x62646576\n\tBINDERFS_SUPER_MAGIC                        = 0x6c6f6f70\n\tBINFMTFS_MAGIC                              = 0x42494e4d\n\tBPF_A                                       = 0x10\n\tBPF_ABS                                     = 0x20\n\tBPF_ADD                                     = 0x0\n\tBPF_ALU                                     = 0x4\n\tBPF_ALU64                                   = 0x7\n\tBPF_AND                                     = 0x50\n\tBPF_ARSH                                    = 0xc0\n\tBPF_ATOMIC                                  = 0xc0\n\tBPF_B                                       = 0x10\n\tBPF_BUILD_ID_SIZE                           = 0x14\n\tBPF_CALL                                    = 0x80\n\tBPF_CMPXCHG                                 = 0xf1\n\tBPF_DIV                                     = 0x30\n\tBPF_DW                                      = 0x18\n\tBPF_END                                     = 0xd0\n\tBPF_EXIT                                    = 0x90\n\tBPF_FETCH                                   = 0x1\n\tBPF_FROM_BE                                 = 0x8\n\tBPF_FROM_LE                                 = 0x0\n\tBPF_FS_MAGIC                                = 0xcafe4a11\n\tBPF_F_AFTER                                 = 0x10\n\tBPF_F_ALLOW_MULTI                           = 0x2\n\tBPF_F_ALLOW_OVERRIDE                        = 0x1\n\tBPF_F_ANY_ALIGNMENT                         = 0x2\n\tBPF_F_BEFORE                                = 0x8\n\tBPF_F_ID                                    = 0x20\n\tBPF_F_NETFILTER_IP_DEFRAG                   = 0x1\n\tBPF_F_PREORDER                              = 0x40\n\tBPF_F_QUERY_EFFECTIVE                       = 0x1\n\tBPF_F_REDIRECT_FLAGS                        = 0x19\n\tBPF_F_REPLACE                               = 0x4\n\tBPF_F_SLEEPABLE                             = 0x10\n\tBPF_F_STRICT_ALIGNMENT                      = 0x1\n\tBPF_F_TEST_REG_INVARIANTS                   = 0x80\n\tBPF_F_TEST_RND_HI32                         = 0x4\n\tBPF_F_TEST_RUN_ON_CPU                       = 0x1\n\tBPF_F_TEST_SKB_CHECKSUM_COMPLETE            = 0x4\n\tBPF_F_TEST_STATE_FREQ                       = 0x8\n\tBPF_F_TEST_XDP_LIVE_FRAMES                  = 0x2\n\tBPF_F_XDP_DEV_BOUND_ONLY                    = 0x40\n\tBPF_F_XDP_HAS_FRAGS                         = 0x20\n\tBPF_H                                       = 0x8\n\tBPF_IMM                                     = 0x0\n\tBPF_IND                                     = 0x40\n\tBPF_JA                                      = 0x0\n\tBPF_JCOND                                   = 0xe0\n\tBPF_JEQ                                     = 0x10\n\tBPF_JGE                                     = 0x30\n\tBPF_JGT                                     = 0x20\n\tBPF_JLE                                     = 0xb0\n\tBPF_JLT                                     = 0xa0\n\tBPF_JMP                                     = 0x5\n\tBPF_JMP32                                   = 0x6\n\tBPF_JNE                                     = 0x50\n\tBPF_JSET                                    = 0x40\n\tBPF_JSGE                                    = 0x70\n\tBPF_JSGT                                    = 0x60\n\tBPF_JSLE                                    = 0xd0\n\tBPF_JSLT                                    = 0xc0\n\tBPF_K                                       = 0x0\n\tBPF_LD                                      = 0x0\n\tBPF_LDX                                     = 0x1\n\tBPF_LEN                                     = 0x80\n\tBPF_LL_OFF                                  = -0x200000\n\tBPF_LOAD_ACQ                                = 0x100\n\tBPF_LSH                                     = 0x60\n\tBPF_MAJOR_VERSION                           = 0x1\n\tBPF_MAXINSNS                                = 0x1000\n\tBPF_MEM                                     = 0x60\n\tBPF_MEMSX                                   = 0x80\n\tBPF_MEMWORDS                                = 0x10\n\tBPF_MINOR_VERSION                           = 0x1\n\tBPF_MISC                                    = 0x7\n\tBPF_MOD                                     = 0x90\n\tBPF_MOV                                     = 0xb0\n\tBPF_MSH                                     = 0xa0\n\tBPF_MUL                                     = 0x20\n\tBPF_NEG                                     = 0x80\n\tBPF_NET_OFF                                 = -0x100000\n\tBPF_OBJ_NAME_LEN                            = 0x10\n\tBPF_OR                                      = 0x40\n\tBPF_PSEUDO_BTF_ID                           = 0x3\n\tBPF_PSEUDO_CALL                             = 0x1\n\tBPF_PSEUDO_FUNC                             = 0x4\n\tBPF_PSEUDO_KFUNC_CALL                       = 0x2\n\tBPF_PSEUDO_MAP_FD                           = 0x1\n\tBPF_PSEUDO_MAP_IDX                          = 0x5\n\tBPF_PSEUDO_MAP_IDX_VALUE                    = 0x6\n\tBPF_PSEUDO_MAP_VALUE                        = 0x2\n\tBPF_RET                                     = 0x6\n\tBPF_RSH                                     = 0x70\n\tBPF_ST                                      = 0x2\n\tBPF_STORE_REL                               = 0x110\n\tBPF_STX                                     = 0x3\n\tBPF_SUB                                     = 0x10\n\tBPF_TAG_SIZE                                = 0x8\n\tBPF_TAX                                     = 0x0\n\tBPF_TO_BE                                   = 0x8\n\tBPF_TO_LE                                   = 0x0\n\tBPF_TXA                                     = 0x80\n\tBPF_W                                       = 0x0\n\tBPF_X                                       = 0x8\n\tBPF_XADD                                    = 0xc0\n\tBPF_XCHG                                    = 0xe1\n\tBPF_XOR                                     = 0xa0\n\tBRKINT                                      = 0x2\n\tBS0                                         = 0x0\n\tBTRFS_SUPER_MAGIC                           = 0x9123683e\n\tBTRFS_TEST_MAGIC                            = 0x73727279\n\tBUS_BLUETOOTH                               = 0x5\n\tBUS_HIL                                     = 0x4\n\tBUS_USB                                     = 0x3\n\tBUS_VIRTUAL                                 = 0x6\n\tCAN_BCM                                     = 0x2\n\tCAN_BUS_OFF_THRESHOLD                       = 0x100\n\tCAN_CTRLMODE_3_SAMPLES                      = 0x4\n\tCAN_CTRLMODE_BERR_REPORTING                 = 0x10\n\tCAN_CTRLMODE_CC_LEN8_DLC                    = 0x100\n\tCAN_CTRLMODE_FD                             = 0x20\n\tCAN_CTRLMODE_FD_NON_ISO                     = 0x80\n\tCAN_CTRLMODE_LISTENONLY                     = 0x2\n\tCAN_CTRLMODE_LOOPBACK                       = 0x1\n\tCAN_CTRLMODE_ONE_SHOT                       = 0x8\n\tCAN_CTRLMODE_PRESUME_ACK                    = 0x40\n\tCAN_CTRLMODE_TDC_AUTO                       = 0x200\n\tCAN_CTRLMODE_TDC_MANUAL                     = 0x400\n\tCAN_EFF_FLAG                                = 0x80000000\n\tCAN_EFF_ID_BITS                             = 0x1d\n\tCAN_EFF_MASK                                = 0x1fffffff\n\tCAN_ERROR_PASSIVE_THRESHOLD                 = 0x80\n\tCAN_ERROR_WARNING_THRESHOLD                 = 0x60\n\tCAN_ERR_ACK                                 = 0x20\n\tCAN_ERR_BUSERROR                            = 0x80\n\tCAN_ERR_BUSOFF                              = 0x40\n\tCAN_ERR_CNT                                 = 0x200\n\tCAN_ERR_CRTL                                = 0x4\n\tCAN_ERR_CRTL_ACTIVE                         = 0x40\n\tCAN_ERR_CRTL_RX_OVERFLOW                    = 0x1\n\tCAN_ERR_CRTL_RX_PASSIVE                     = 0x10\n\tCAN_ERR_CRTL_RX_WARNING                     = 0x4\n\tCAN_ERR_CRTL_TX_OVERFLOW                    = 0x2\n\tCAN_ERR_CRTL_TX_PASSIVE                     = 0x20\n\tCAN_ERR_CRTL_TX_WARNING                     = 0x8\n\tCAN_ERR_CRTL_UNSPEC                         = 0x0\n\tCAN_ERR_DLC                                 = 0x8\n\tCAN_ERR_FLAG                                = 0x20000000\n\tCAN_ERR_LOSTARB                             = 0x2\n\tCAN_ERR_LOSTARB_UNSPEC                      = 0x0\n\tCAN_ERR_MASK                                = 0x1fffffff\n\tCAN_ERR_PROT                                = 0x8\n\tCAN_ERR_PROT_ACTIVE                         = 0x40\n\tCAN_ERR_PROT_BIT                            = 0x1\n\tCAN_ERR_PROT_BIT0                           = 0x8\n\tCAN_ERR_PROT_BIT1                           = 0x10\n\tCAN_ERR_PROT_FORM                           = 0x2\n\tCAN_ERR_PROT_LOC_ACK                        = 0x19\n\tCAN_ERR_PROT_LOC_ACK_DEL                    = 0x1b\n\tCAN_ERR_PROT_LOC_CRC_DEL                    = 0x18\n\tCAN_ERR_PROT_LOC_CRC_SEQ                    = 0x8\n\tCAN_ERR_PROT_LOC_DATA                       = 0xa\n\tCAN_ERR_PROT_LOC_DLC                        = 0xb\n\tCAN_ERR_PROT_LOC_EOF                        = 0x1a\n\tCAN_ERR_PROT_LOC_ID04_00                    = 0xe\n\tCAN_ERR_PROT_LOC_ID12_05                    = 0xf\n\tCAN_ERR_PROT_LOC_ID17_13                    = 0x7\n\tCAN_ERR_PROT_LOC_ID20_18                    = 0x6\n\tCAN_ERR_PROT_LOC_ID28_21                    = 0x2\n\tCAN_ERR_PROT_LOC_IDE                        = 0x5\n\tCAN_ERR_PROT_LOC_INTERM                     = 0x12\n\tCAN_ERR_PROT_LOC_RES0                       = 0x9\n\tCAN_ERR_PROT_LOC_RES1                       = 0xd\n\tCAN_ERR_PROT_LOC_RTR                        = 0xc\n\tCAN_ERR_PROT_LOC_SOF                        = 0x3\n\tCAN_ERR_PROT_LOC_SRTR                       = 0x4\n\tCAN_ERR_PROT_LOC_UNSPEC                     = 0x0\n\tCAN_ERR_PROT_OVERLOAD                       = 0x20\n\tCAN_ERR_PROT_STUFF                          = 0x4\n\tCAN_ERR_PROT_TX                             = 0x80\n\tCAN_ERR_PROT_UNSPEC                         = 0x0\n\tCAN_ERR_RESTARTED                           = 0x100\n\tCAN_ERR_TRX                                 = 0x10\n\tCAN_ERR_TRX_CANH_NO_WIRE                    = 0x4\n\tCAN_ERR_TRX_CANH_SHORT_TO_BAT               = 0x5\n\tCAN_ERR_TRX_CANH_SHORT_TO_GND               = 0x7\n\tCAN_ERR_TRX_CANH_SHORT_TO_VCC               = 0x6\n\tCAN_ERR_TRX_CANL_NO_WIRE                    = 0x40\n\tCAN_ERR_TRX_CANL_SHORT_TO_BAT               = 0x50\n\tCAN_ERR_TRX_CANL_SHORT_TO_CANH              = 0x80\n\tCAN_ERR_TRX_CANL_SHORT_TO_GND               = 0x70\n\tCAN_ERR_TRX_CANL_SHORT_TO_VCC               = 0x60\n\tCAN_ERR_TRX_UNSPEC                          = 0x0\n\tCAN_ERR_TX_TIMEOUT                          = 0x1\n\tCAN_INV_FILTER                              = 0x20000000\n\tCAN_ISOTP                                   = 0x6\n\tCAN_J1939                                   = 0x7\n\tCAN_MAX_DLC                                 = 0x8\n\tCAN_MAX_DLEN                                = 0x8\n\tCAN_MAX_RAW_DLC                             = 0xf\n\tCAN_MCNET                                   = 0x5\n\tCAN_MTU                                     = 0x10\n\tCAN_NPROTO                                  = 0x8\n\tCAN_RAW                                     = 0x1\n\tCAN_RAW_FILTER_MAX                          = 0x200\n\tCAN_RAW_XL_VCID_RX_FILTER                   = 0x4\n\tCAN_RAW_XL_VCID_TX_PASS                     = 0x2\n\tCAN_RAW_XL_VCID_TX_SET                      = 0x1\n\tCAN_RTR_FLAG                                = 0x40000000\n\tCAN_SFF_ID_BITS                             = 0xb\n\tCAN_SFF_MASK                                = 0x7ff\n\tCAN_TERMINATION_DISABLED                    = 0x0\n\tCAN_TP16                                    = 0x3\n\tCAN_TP20                                    = 0x4\n\tCAP_AUDIT_CONTROL                           = 0x1e\n\tCAP_AUDIT_READ                              = 0x25\n\tCAP_AUDIT_WRITE                             = 0x1d\n\tCAP_BLOCK_SUSPEND                           = 0x24\n\tCAP_BPF                                     = 0x27\n\tCAP_CHECKPOINT_RESTORE                      = 0x28\n\tCAP_CHOWN                                   = 0x0\n\tCAP_DAC_OVERRIDE                            = 0x1\n\tCAP_DAC_READ_SEARCH                         = 0x2\n\tCAP_FOWNER                                  = 0x3\n\tCAP_FSETID                                  = 0x4\n\tCAP_IPC_LOCK                                = 0xe\n\tCAP_IPC_OWNER                               = 0xf\n\tCAP_KILL                                    = 0x5\n\tCAP_LAST_CAP                                = 0x28\n\tCAP_LEASE                                   = 0x1c\n\tCAP_LINUX_IMMUTABLE                         = 0x9\n\tCAP_MAC_ADMIN                               = 0x21\n\tCAP_MAC_OVERRIDE                            = 0x20\n\tCAP_MKNOD                                   = 0x1b\n\tCAP_NET_ADMIN                               = 0xc\n\tCAP_NET_BIND_SERVICE                        = 0xa\n\tCAP_NET_BROADCAST                           = 0xb\n\tCAP_NET_RAW                                 = 0xd\n\tCAP_PERFMON                                 = 0x26\n\tCAP_SETFCAP                                 = 0x1f\n\tCAP_SETGID                                  = 0x6\n\tCAP_SETPCAP                                 = 0x8\n\tCAP_SETUID                                  = 0x7\n\tCAP_SYSLOG                                  = 0x22\n\tCAP_SYS_ADMIN                               = 0x15\n\tCAP_SYS_BOOT                                = 0x16\n\tCAP_SYS_CHROOT                              = 0x12\n\tCAP_SYS_MODULE                              = 0x10\n\tCAP_SYS_NICE                                = 0x17\n\tCAP_SYS_PACCT                               = 0x14\n\tCAP_SYS_PTRACE                              = 0x13\n\tCAP_SYS_RAWIO                               = 0x11\n\tCAP_SYS_RESOURCE                            = 0x18\n\tCAP_SYS_TIME                                = 0x19\n\tCAP_SYS_TTY_CONFIG                          = 0x1a\n\tCAP_WAKE_ALARM                              = 0x23\n\tCEPH_SUPER_MAGIC                            = 0xc36400\n\tCFLUSH                                      = 0xf\n\tCGROUP2_SUPER_MAGIC                         = 0x63677270\n\tCGROUP_SUPER_MAGIC                          = 0x27e0eb\n\tCIFS_SUPER_MAGIC                            = 0xff534d42\n\tCLOCK_BOOTTIME                              = 0x7\n\tCLOCK_BOOTTIME_ALARM                        = 0x9\n\tCLOCK_DEFAULT                               = 0x0\n\tCLOCK_EXT                                   = 0x1\n\tCLOCK_INT                                   = 0x2\n\tCLOCK_MONOTONIC                             = 0x1\n\tCLOCK_MONOTONIC_COARSE                      = 0x6\n\tCLOCK_MONOTONIC_RAW                         = 0x4\n\tCLOCK_PROCESS_CPUTIME_ID                    = 0x2\n\tCLOCK_REALTIME                              = 0x0\n\tCLOCK_REALTIME_ALARM                        = 0x8\n\tCLOCK_REALTIME_COARSE                       = 0x5\n\tCLOCK_TAI                                   = 0xb\n\tCLOCK_THREAD_CPUTIME_ID                     = 0x3\n\tCLOCK_TXFROMRX                              = 0x4\n\tCLOCK_TXINT                                 = 0x3\n\tCLONE_ARGS_SIZE_VER0                        = 0x40\n\tCLONE_ARGS_SIZE_VER1                        = 0x50\n\tCLONE_ARGS_SIZE_VER2                        = 0x58\n\tCLONE_CHILD_CLEARTID                        = 0x200000\n\tCLONE_CHILD_SETTID                          = 0x1000000\n\tCLONE_CLEAR_SIGHAND                         = 0x100000000\n\tCLONE_DETACHED                              = 0x400000\n\tCLONE_FILES                                 = 0x400\n\tCLONE_FS                                    = 0x200\n\tCLONE_INTO_CGROUP                           = 0x200000000\n\tCLONE_IO                                    = 0x80000000\n\tCLONE_NEWCGROUP                             = 0x2000000\n\tCLONE_NEWIPC                                = 0x8000000\n\tCLONE_NEWNET                                = 0x40000000\n\tCLONE_NEWNS                                 = 0x20000\n\tCLONE_NEWPID                                = 0x20000000\n\tCLONE_NEWTIME                               = 0x80\n\tCLONE_NEWUSER                               = 0x10000000\n\tCLONE_NEWUTS                                = 0x4000000\n\tCLONE_PARENT                                = 0x8000\n\tCLONE_PARENT_SETTID                         = 0x100000\n\tCLONE_PIDFD                                 = 0x1000\n\tCLONE_PTRACE                                = 0x2000\n\tCLONE_SETTLS                                = 0x80000\n\tCLONE_SIGHAND                               = 0x800\n\tCLONE_SYSVSEM                               = 0x40000\n\tCLONE_THREAD                                = 0x10000\n\tCLONE_UNTRACED                              = 0x800000\n\tCLONE_VFORK                                 = 0x4000\n\tCLONE_VM                                    = 0x100\n\tCMSPAR                                      = 0x40000000\n\tCODA_SUPER_MAGIC                            = 0x73757245\n\tCR0                                         = 0x0\n\tCRAMFS_MAGIC                                = 0x28cd3d45\n\tCRTSCTS                                     = 0x80000000\n\tCRYPTO_MAX_NAME                             = 0x40\n\tCRYPTO_MSG_MAX                              = 0x15\n\tCRYPTO_NR_MSGTYPES                          = 0x6\n\tCRYPTO_REPORT_MAXSIZE                       = 0x160\n\tCS5                                         = 0x0\n\tCSIGNAL                                     = 0xff\n\tCSTART                                      = 0x11\n\tCSTATUS                                     = 0x0\n\tCSTOP                                       = 0x13\n\tCSUSP                                       = 0x1a\n\tDAXFS_MAGIC                                 = 0x64646178\n\tDEBUGFS_MAGIC                               = 0x64626720\n\tDEVLINK_CMD_ESWITCH_MODE_GET                = 0x1d\n\tDEVLINK_CMD_ESWITCH_MODE_SET                = 0x1e\n\tDEVLINK_FLASH_OVERWRITE_IDENTIFIERS         = 0x2\n\tDEVLINK_FLASH_OVERWRITE_SETTINGS            = 0x1\n\tDEVLINK_GENL_MCGRP_CONFIG_NAME              = \"config\"\n\tDEVLINK_GENL_NAME                           = \"devlink\"\n\tDEVLINK_GENL_VERSION                        = 0x1\n\tDEVLINK_PORT_FN_CAP_IPSEC_CRYPTO            = 0x4\n\tDEVLINK_PORT_FN_CAP_IPSEC_PACKET            = 0x8\n\tDEVLINK_PORT_FN_CAP_MIGRATABLE              = 0x2\n\tDEVLINK_PORT_FN_CAP_ROCE                    = 0x1\n\tDEVLINK_SB_THRESHOLD_TO_ALPHA_MAX           = 0x14\n\tDEVLINK_SUPPORTED_FLASH_OVERWRITE_SECTIONS  = 0x3\n\tDEVMEM_MAGIC                                = 0x454d444d\n\tDEVPTS_SUPER_MAGIC                          = 0x1cd1\n\tDMA_BUF_MAGIC                               = 0x444d4142\n\tDM_ACTIVE_PRESENT_FLAG                      = 0x20\n\tDM_BUFFER_FULL_FLAG                         = 0x100\n\tDM_CONTROL_NODE                             = \"control\"\n\tDM_DATA_OUT_FLAG                            = 0x10000\n\tDM_DEFERRED_REMOVE                          = 0x20000\n\tDM_DEV_ARM_POLL                             = 0xc138fd10\n\tDM_DEV_CREATE                               = 0xc138fd03\n\tDM_DEV_REMOVE                               = 0xc138fd04\n\tDM_DEV_RENAME                               = 0xc138fd05\n\tDM_DEV_SET_GEOMETRY                         = 0xc138fd0f\n\tDM_DEV_STATUS                               = 0xc138fd07\n\tDM_DEV_SUSPEND                              = 0xc138fd06\n\tDM_DEV_WAIT                                 = 0xc138fd08\n\tDM_DIR                                      = \"mapper\"\n\tDM_GET_TARGET_VERSION                       = 0xc138fd11\n\tDM_IMA_MEASUREMENT_FLAG                     = 0x80000\n\tDM_INACTIVE_PRESENT_FLAG                    = 0x40\n\tDM_INTERNAL_SUSPEND_FLAG                    = 0x40000\n\tDM_IOCTL                                    = 0xfd\n\tDM_LIST_DEVICES                             = 0xc138fd02\n\tDM_LIST_VERSIONS                            = 0xc138fd0d\n\tDM_MAX_TYPE_NAME                            = 0x10\n\tDM_NAME_LEN                                 = 0x80\n\tDM_NAME_LIST_FLAG_DOESNT_HAVE_UUID          = 0x2\n\tDM_NAME_LIST_FLAG_HAS_UUID                  = 0x1\n\tDM_NOFLUSH_FLAG                             = 0x800\n\tDM_PERSISTENT_DEV_FLAG                      = 0x8\n\tDM_QUERY_INACTIVE_TABLE_FLAG                = 0x1000\n\tDM_READONLY_FLAG                            = 0x1\n\tDM_REMOVE_ALL                               = 0xc138fd01\n\tDM_SECURE_DATA_FLAG                         = 0x8000\n\tDM_SKIP_BDGET_FLAG                          = 0x200\n\tDM_SKIP_LOCKFS_FLAG                         = 0x400\n\tDM_STATUS_TABLE_FLAG                        = 0x10\n\tDM_SUSPEND_FLAG                             = 0x2\n\tDM_TABLE_CLEAR                              = 0xc138fd0a\n\tDM_TABLE_DEPS                               = 0xc138fd0b\n\tDM_TABLE_LOAD                               = 0xc138fd09\n\tDM_TABLE_STATUS                             = 0xc138fd0c\n\tDM_TARGET_MSG                               = 0xc138fd0e\n\tDM_UEVENT_GENERATED_FLAG                    = 0x2000\n\tDM_UUID_FLAG                                = 0x4000\n\tDM_UUID_LEN                                 = 0x81\n\tDM_VERSION                                  = 0xc138fd00\n\tDM_VERSION_EXTRA                            = \"-ioctl (2025-04-28)\"\n\tDM_VERSION_MAJOR                            = 0x4\n\tDM_VERSION_MINOR                            = 0x32\n\tDM_VERSION_PATCHLEVEL                       = 0x0\n\tDT_ADDRRNGHI                                = 0x6ffffeff\n\tDT_ADDRRNGLO                                = 0x6ffffe00\n\tDT_BLK                                      = 0x6\n\tDT_CHR                                      = 0x2\n\tDT_DEBUG                                    = 0x15\n\tDT_DIR                                      = 0x4\n\tDT_ENCODING                                 = 0x20\n\tDT_FIFO                                     = 0x1\n\tDT_FINI                                     = 0xd\n\tDT_FLAGS_1                                  = 0x6ffffffb\n\tDT_GNU_HASH                                 = 0x6ffffef5\n\tDT_HASH                                     = 0x4\n\tDT_HIOS                                     = 0x6ffff000\n\tDT_HIPROC                                   = 0x7fffffff\n\tDT_INIT                                     = 0xc\n\tDT_JMPREL                                   = 0x17\n\tDT_LNK                                      = 0xa\n\tDT_LOOS                                     = 0x6000000d\n\tDT_LOPROC                                   = 0x70000000\n\tDT_NEEDED                                   = 0x1\n\tDT_NULL                                     = 0x0\n\tDT_PLTGOT                                   = 0x3\n\tDT_PLTREL                                   = 0x14\n\tDT_PLTRELSZ                                 = 0x2\n\tDT_REG                                      = 0x8\n\tDT_REL                                      = 0x11\n\tDT_RELA                                     = 0x7\n\tDT_RELACOUNT                                = 0x6ffffff9\n\tDT_RELAENT                                  = 0x9\n\tDT_RELASZ                                   = 0x8\n\tDT_RELCOUNT                                 = 0x6ffffffa\n\tDT_RELENT                                   = 0x13\n\tDT_RELSZ                                    = 0x12\n\tDT_RPATH                                    = 0xf\n\tDT_SOCK                                     = 0xc\n\tDT_SONAME                                   = 0xe\n\tDT_STRSZ                                    = 0xa\n\tDT_STRTAB                                   = 0x5\n\tDT_SYMBOLIC                                 = 0x10\n\tDT_SYMENT                                   = 0xb\n\tDT_SYMTAB                                   = 0x6\n\tDT_TEXTREL                                  = 0x16\n\tDT_UNKNOWN                                  = 0x0\n\tDT_VALRNGHI                                 = 0x6ffffdff\n\tDT_VALRNGLO                                 = 0x6ffffd00\n\tDT_VERDEF                                   = 0x6ffffffc\n\tDT_VERDEFNUM                                = 0x6ffffffd\n\tDT_VERNEED                                  = 0x6ffffffe\n\tDT_VERNEEDNUM                               = 0x6fffffff\n\tDT_VERSYM                                   = 0x6ffffff0\n\tDT_WHT                                      = 0xe\n\tECHO                                        = 0x8\n\tECRYPTFS_SUPER_MAGIC                        = 0xf15f\n\tEFD_SEMAPHORE                               = 0x1\n\tEFIVARFS_MAGIC                              = 0xde5e81e4\n\tEFS_SUPER_MAGIC                             = 0x414a53\n\tEI_CLASS                                    = 0x4\n\tEI_DATA                                     = 0x5\n\tEI_MAG0                                     = 0x0\n\tEI_MAG1                                     = 0x1\n\tEI_MAG2                                     = 0x2\n\tEI_MAG3                                     = 0x3\n\tEI_NIDENT                                   = 0x10\n\tEI_OSABI                                    = 0x7\n\tEI_PAD                                      = 0x8\n\tEI_VERSION                                  = 0x6\n\tELFCLASS32                                  = 0x1\n\tELFCLASS64                                  = 0x2\n\tELFCLASSNONE                                = 0x0\n\tELFCLASSNUM                                 = 0x3\n\tELFDATA2LSB                                 = 0x1\n\tELFDATA2MSB                                 = 0x2\n\tELFDATANONE                                 = 0x0\n\tELFMAG                                      = \"\\177ELF\"\n\tELFMAG0                                     = 0x7f\n\tELFMAG1                                     = 'E'\n\tELFMAG2                                     = 'L'\n\tELFMAG3                                     = 'F'\n\tELFOSABI_LINUX                              = 0x3\n\tELFOSABI_NONE                               = 0x0\n\tEM_386                                      = 0x3\n\tEM_486                                      = 0x6\n\tEM_68K                                      = 0x4\n\tEM_860                                      = 0x7\n\tEM_88K                                      = 0x5\n\tEM_AARCH64                                  = 0xb7\n\tEM_ALPHA                                    = 0x9026\n\tEM_ALTERA_NIOS2                             = 0x71\n\tEM_ARCOMPACT                                = 0x5d\n\tEM_ARCV2                                    = 0xc3\n\tEM_ARM                                      = 0x28\n\tEM_BLACKFIN                                 = 0x6a\n\tEM_BPF                                      = 0xf7\n\tEM_CRIS                                     = 0x4c\n\tEM_CSKY                                     = 0xfc\n\tEM_CYGNUS_M32R                              = 0x9041\n\tEM_CYGNUS_MN10300                           = 0xbeef\n\tEM_FRV                                      = 0x5441\n\tEM_H8_300                                   = 0x2e\n\tEM_HEXAGON                                  = 0xa4\n\tEM_IA_64                                    = 0x32\n\tEM_LOONGARCH                                = 0x102\n\tEM_M32                                      = 0x1\n\tEM_M32R                                     = 0x58\n\tEM_MICROBLAZE                               = 0xbd\n\tEM_MIPS                                     = 0x8\n\tEM_MIPS_RS3_LE                              = 0xa\n\tEM_MIPS_RS4_BE                              = 0xa\n\tEM_MN10300                                  = 0x59\n\tEM_NDS32                                    = 0xa7\n\tEM_NONE                                     = 0x0\n\tEM_OPENRISC                                 = 0x5c\n\tEM_PARISC                                   = 0xf\n\tEM_PPC                                      = 0x14\n\tEM_PPC64                                    = 0x15\n\tEM_RISCV                                    = 0xf3\n\tEM_S390                                     = 0x16\n\tEM_S390_OLD                                 = 0xa390\n\tEM_SH                                       = 0x2a\n\tEM_SPARC                                    = 0x2\n\tEM_SPARC32PLUS                              = 0x12\n\tEM_SPARCV9                                  = 0x2b\n\tEM_SPU                                      = 0x17\n\tEM_TILEGX                                   = 0xbf\n\tEM_TILEPRO                                  = 0xbc\n\tEM_TI_C6000                                 = 0x8c\n\tEM_UNICORE                                  = 0x6e\n\tEM_X86_64                                   = 0x3e\n\tEM_XTENSA                                   = 0x5e\n\tENCODING_DEFAULT                            = 0x0\n\tENCODING_FM_MARK                            = 0x3\n\tENCODING_FM_SPACE                           = 0x4\n\tENCODING_MANCHESTER                         = 0x5\n\tENCODING_NRZ                                = 0x1\n\tENCODING_NRZI                               = 0x2\n\tEPOLLERR                                    = 0x8\n\tEPOLLET                                     = 0x80000000\n\tEPOLLEXCLUSIVE                              = 0x10000000\n\tEPOLLHUP                                    = 0x10\n\tEPOLLIN                                     = 0x1\n\tEPOLLMSG                                    = 0x400\n\tEPOLLONESHOT                                = 0x40000000\n\tEPOLLOUT                                    = 0x4\n\tEPOLLPRI                                    = 0x2\n\tEPOLLRDBAND                                 = 0x80\n\tEPOLLRDHUP                                  = 0x2000\n\tEPOLLRDNORM                                 = 0x40\n\tEPOLLWAKEUP                                 = 0x20000000\n\tEPOLLWRBAND                                 = 0x200\n\tEPOLLWRNORM                                 = 0x100\n\tEPOLL_CTL_ADD                               = 0x1\n\tEPOLL_CTL_DEL                               = 0x2\n\tEPOLL_CTL_MOD                               = 0x3\n\tEPOLL_IOC_TYPE                              = 0x8a\n\tEROFS_SUPER_MAGIC_V1                        = 0xe0f5e1e2\n\tETHTOOL_BUSINFO_LEN                         = 0x20\n\tETHTOOL_EROMVERS_LEN                        = 0x20\n\tETHTOOL_FAMILY_NAME                         = \"ethtool\"\n\tETHTOOL_FAMILY_VERSION                      = 0x1\n\tETHTOOL_FEC_AUTO                            = 0x2\n\tETHTOOL_FEC_BASER                           = 0x10\n\tETHTOOL_FEC_LLRS                            = 0x20\n\tETHTOOL_FEC_NONE                            = 0x1\n\tETHTOOL_FEC_OFF                             = 0x4\n\tETHTOOL_FEC_RS                              = 0x8\n\tETHTOOL_FLAG_ALL                            = 0x7\n\tETHTOOL_FLASHDEV                            = 0x33\n\tETHTOOL_FLASH_MAX_FILENAME                  = 0x80\n\tETHTOOL_FWVERS_LEN                          = 0x20\n\tETHTOOL_F_COMPAT                            = 0x4\n\tETHTOOL_F_UNSUPPORTED                       = 0x1\n\tETHTOOL_F_WISH                              = 0x2\n\tETHTOOL_GCHANNELS                           = 0x3c\n\tETHTOOL_GCOALESCE                           = 0xe\n\tETHTOOL_GDRVINFO                            = 0x3\n\tETHTOOL_GEEE                                = 0x44\n\tETHTOOL_GEEPROM                             = 0xb\n\tETHTOOL_GENL_NAME                           = \"ethtool\"\n\tETHTOOL_GENL_VERSION                        = 0x1\n\tETHTOOL_GET_DUMP_DATA                       = 0x40\n\tETHTOOL_GET_DUMP_FLAG                       = 0x3f\n\tETHTOOL_GET_TS_INFO                         = 0x41\n\tETHTOOL_GFEATURES                           = 0x3a\n\tETHTOOL_GFECPARAM                           = 0x50\n\tETHTOOL_GFLAGS                              = 0x25\n\tETHTOOL_GGRO                                = 0x2b\n\tETHTOOL_GGSO                                = 0x23\n\tETHTOOL_GLINK                               = 0xa\n\tETHTOOL_GLINKSETTINGS                       = 0x4c\n\tETHTOOL_GMODULEEEPROM                       = 0x43\n\tETHTOOL_GMODULEINFO                         = 0x42\n\tETHTOOL_GMSGLVL                             = 0x7\n\tETHTOOL_GPAUSEPARAM                         = 0x12\n\tETHTOOL_GPERMADDR                           = 0x20\n\tETHTOOL_GPFLAGS                             = 0x27\n\tETHTOOL_GPHYSTATS                           = 0x4a\n\tETHTOOL_GREGS                               = 0x4\n\tETHTOOL_GRINGPARAM                          = 0x10\n\tETHTOOL_GRSSH                               = 0x46\n\tETHTOOL_GRXCLSRLALL                         = 0x30\n\tETHTOOL_GRXCLSRLCNT                         = 0x2e\n\tETHTOOL_GRXCLSRULE                          = 0x2f\n\tETHTOOL_GRXCSUM                             = 0x14\n\tETHTOOL_GRXFH                               = 0x29\n\tETHTOOL_GRXFHINDIR                          = 0x38\n\tETHTOOL_GRXNTUPLE                           = 0x36\n\tETHTOOL_GRXRINGS                            = 0x2d\n\tETHTOOL_GSET                                = 0x1\n\tETHTOOL_GSG                                 = 0x18\n\tETHTOOL_GSSET_INFO                          = 0x37\n\tETHTOOL_GSTATS                              = 0x1d\n\tETHTOOL_GSTRINGS                            = 0x1b\n\tETHTOOL_GTSO                                = 0x1e\n\tETHTOOL_GTUNABLE                            = 0x48\n\tETHTOOL_GTXCSUM                             = 0x16\n\tETHTOOL_GUFO                                = 0x21\n\tETHTOOL_GWOL                                = 0x5\n\tETHTOOL_MCGRP_MONITOR_NAME                  = \"monitor\"\n\tETHTOOL_NWAY_RST                            = 0x9\n\tETHTOOL_PERQUEUE                            = 0x4b\n\tETHTOOL_PHYS_ID                             = 0x1c\n\tETHTOOL_PHY_EDPD_DFLT_TX_MSECS              = 0xffff\n\tETHTOOL_PHY_EDPD_DISABLE                    = 0x0\n\tETHTOOL_PHY_EDPD_NO_TX                      = 0xfffe\n\tETHTOOL_PHY_FAST_LINK_DOWN_OFF              = 0xff\n\tETHTOOL_PHY_FAST_LINK_DOWN_ON               = 0x0\n\tETHTOOL_PHY_GTUNABLE                        = 0x4e\n\tETHTOOL_PHY_STUNABLE                        = 0x4f\n\tETHTOOL_RESET                               = 0x34\n\tETHTOOL_RXNTUPLE_ACTION_CLEAR               = -0x2\n\tETHTOOL_RXNTUPLE_ACTION_DROP                = -0x1\n\tETHTOOL_RX_FLOW_SPEC_RING                   = 0xffffffff\n\tETHTOOL_RX_FLOW_SPEC_RING_VF                = 0xff00000000\n\tETHTOOL_RX_FLOW_SPEC_RING_VF_OFF            = 0x20\n\tETHTOOL_SCHANNELS                           = 0x3d\n\tETHTOOL_SCOALESCE                           = 0xf\n\tETHTOOL_SEEE                                = 0x45\n\tETHTOOL_SEEPROM                             = 0xc\n\tETHTOOL_SET_DUMP                            = 0x3e\n\tETHTOOL_SFEATURES                           = 0x3b\n\tETHTOOL_SFECPARAM                           = 0x51\n\tETHTOOL_SFLAGS                              = 0x26\n\tETHTOOL_SGRO                                = 0x2c\n\tETHTOOL_SGSO                                = 0x24\n\tETHTOOL_SLINKSETTINGS                       = 0x4d\n\tETHTOOL_SMSGLVL                             = 0x8\n\tETHTOOL_SPAUSEPARAM                         = 0x13\n\tETHTOOL_SPFLAGS                             = 0x28\n\tETHTOOL_SRINGPARAM                          = 0x11\n\tETHTOOL_SRSSH                               = 0x47\n\tETHTOOL_SRXCLSRLDEL                         = 0x31\n\tETHTOOL_SRXCLSRLINS                         = 0x32\n\tETHTOOL_SRXCSUM                             = 0x15\n\tETHTOOL_SRXFH                               = 0x2a\n\tETHTOOL_SRXFHINDIR                          = 0x39\n\tETHTOOL_SRXNTUPLE                           = 0x35\n\tETHTOOL_SSET                                = 0x2\n\tETHTOOL_SSG                                 = 0x19\n\tETHTOOL_STSO                                = 0x1f\n\tETHTOOL_STUNABLE                            = 0x49\n\tETHTOOL_STXCSUM                             = 0x17\n\tETHTOOL_SUFO                                = 0x22\n\tETHTOOL_SWOL                                = 0x6\n\tETHTOOL_TEST                                = 0x1a\n\tETH_P_1588                                  = 0x88f7\n\tETH_P_8021AD                                = 0x88a8\n\tETH_P_8021AH                                = 0x88e7\n\tETH_P_8021Q                                 = 0x8100\n\tETH_P_80221                                 = 0x8917\n\tETH_P_802_2                                 = 0x4\n\tETH_P_802_3                                 = 0x1\n\tETH_P_802_3_MIN                             = 0x600\n\tETH_P_802_EX1                               = 0x88b5\n\tETH_P_AARP                                  = 0x80f3\n\tETH_P_AF_IUCV                               = 0xfbfb\n\tETH_P_ALL                                   = 0x3\n\tETH_P_AOE                                   = 0x88a2\n\tETH_P_ARCNET                                = 0x1a\n\tETH_P_ARP                                   = 0x806\n\tETH_P_ATALK                                 = 0x809b\n\tETH_P_ATMFATE                               = 0x8884\n\tETH_P_ATMMPOA                               = 0x884c\n\tETH_P_AX25                                  = 0x2\n\tETH_P_BATMAN                                = 0x4305\n\tETH_P_BPQ                                   = 0x8ff\n\tETH_P_CAIF                                  = 0xf7\n\tETH_P_CAN                                   = 0xc\n\tETH_P_CANFD                                 = 0xd\n\tETH_P_CANXL                                 = 0xe\n\tETH_P_CFM                                   = 0x8902\n\tETH_P_CONTROL                               = 0x16\n\tETH_P_CUST                                  = 0x6006\n\tETH_P_DDCMP                                 = 0x6\n\tETH_P_DEC                                   = 0x6000\n\tETH_P_DIAG                                  = 0x6005\n\tETH_P_DNA_DL                                = 0x6001\n\tETH_P_DNA_RC                                = 0x6002\n\tETH_P_DNA_RT                                = 0x6003\n\tETH_P_DSA                                   = 0x1b\n\tETH_P_DSA_8021Q                             = 0xdadb\n\tETH_P_DSA_A5PSW                             = 0xe001\n\tETH_P_ECONET                                = 0x18\n\tETH_P_EDSA                                  = 0xdada\n\tETH_P_ERSPAN                                = 0x88be\n\tETH_P_ERSPAN2                               = 0x22eb\n\tETH_P_ETHERCAT                              = 0x88a4\n\tETH_P_FCOE                                  = 0x8906\n\tETH_P_FIP                                   = 0x8914\n\tETH_P_HDLC                                  = 0x19\n\tETH_P_HSR                                   = 0x892f\n\tETH_P_IBOE                                  = 0x8915\n\tETH_P_IEEE802154                            = 0xf6\n\tETH_P_IEEEPUP                               = 0xa00\n\tETH_P_IEEEPUPAT                             = 0xa01\n\tETH_P_IFE                                   = 0xed3e\n\tETH_P_IP                                    = 0x800\n\tETH_P_IPV6                                  = 0x86dd\n\tETH_P_IPX                                   = 0x8137\n\tETH_P_IRDA                                  = 0x17\n\tETH_P_LAT                                   = 0x6004\n\tETH_P_LINK_CTL                              = 0x886c\n\tETH_P_LLDP                                  = 0x88cc\n\tETH_P_LOCALTALK                             = 0x9\n\tETH_P_LOOP                                  = 0x60\n\tETH_P_LOOPBACK                              = 0x9000\n\tETH_P_MACSEC                                = 0x88e5\n\tETH_P_MAP                                   = 0xf9\n\tETH_P_MCTP                                  = 0xfa\n\tETH_P_MOBITEX                               = 0x15\n\tETH_P_MPLS_MC                               = 0x8848\n\tETH_P_MPLS_UC                               = 0x8847\n\tETH_P_MRP                                   = 0x88e3\n\tETH_P_MVRP                                  = 0x88f5\n\tETH_P_NCSI                                  = 0x88f8\n\tETH_P_NSH                                   = 0x894f\n\tETH_P_PAE                                   = 0x888e\n\tETH_P_PAUSE                                 = 0x8808\n\tETH_P_PHONET                                = 0xf5\n\tETH_P_PPPTALK                               = 0x10\n\tETH_P_PPP_DISC                              = 0x8863\n\tETH_P_PPP_MP                                = 0x8\n\tETH_P_PPP_SES                               = 0x8864\n\tETH_P_PREAUTH                               = 0x88c7\n\tETH_P_PROFINET                              = 0x8892\n\tETH_P_PRP                                   = 0x88fb\n\tETH_P_PUP                                   = 0x200\n\tETH_P_PUPAT                                 = 0x201\n\tETH_P_QINQ1                                 = 0x9100\n\tETH_P_QINQ2                                 = 0x9200\n\tETH_P_QINQ3                                 = 0x9300\n\tETH_P_RARP                                  = 0x8035\n\tETH_P_REALTEK                               = 0x8899\n\tETH_P_SCA                                   = 0x6007\n\tETH_P_SLOW                                  = 0x8809\n\tETH_P_SNAP                                  = 0x5\n\tETH_P_TDLS                                  = 0x890d\n\tETH_P_TEB                                   = 0x6558\n\tETH_P_TIPC                                  = 0x88ca\n\tETH_P_TRAILER                               = 0x1c\n\tETH_P_TR_802_2                              = 0x11\n\tETH_P_TSN                                   = 0x22f0\n\tETH_P_WAN_PPP                               = 0x7\n\tETH_P_WCCP                                  = 0x883e\n\tETH_P_X25                                   = 0x805\n\tETH_P_XDSA                                  = 0xf8\n\tET_CORE                                     = 0x4\n\tET_DYN                                      = 0x3\n\tET_EXEC                                     = 0x2\n\tET_HIPROC                                   = 0xffff\n\tET_LOPROC                                   = 0xff00\n\tET_NONE                                     = 0x0\n\tET_REL                                      = 0x1\n\tEV_ABS                                      = 0x3\n\tEV_CNT                                      = 0x20\n\tEV_CURRENT                                  = 0x1\n\tEV_FF                                       = 0x15\n\tEV_FF_STATUS                                = 0x17\n\tEV_KEY                                      = 0x1\n\tEV_LED                                      = 0x11\n\tEV_MAX                                      = 0x1f\n\tEV_MSC                                      = 0x4\n\tEV_NONE                                     = 0x0\n\tEV_NUM                                      = 0x2\n\tEV_PWR                                      = 0x16\n\tEV_REL                                      = 0x2\n\tEV_REP                                      = 0x14\n\tEV_SND                                      = 0x12\n\tEV_SW                                       = 0x5\n\tEV_SYN                                      = 0x0\n\tEV_VERSION                                  = 0x10001\n\tEXABYTE_ENABLE_NEST                         = 0xf0\n\tEXFAT_SUPER_MAGIC                           = 0x2011bab0\n\tEXT2_SUPER_MAGIC                            = 0xef53\n\tEXT3_SUPER_MAGIC                            = 0xef53\n\tEXT4_SUPER_MAGIC                            = 0xef53\n\tEXTA                                        = 0xe\n\tEXTB                                        = 0xf\n\tF2FS_SUPER_MAGIC                            = 0xf2f52010\n\tFALLOC_FL_ALLOCATE_RANGE                    = 0x0\n\tFALLOC_FL_COLLAPSE_RANGE                    = 0x8\n\tFALLOC_FL_INSERT_RANGE                      = 0x20\n\tFALLOC_FL_KEEP_SIZE                         = 0x1\n\tFALLOC_FL_NO_HIDE_STALE                     = 0x4\n\tFALLOC_FL_PUNCH_HOLE                        = 0x2\n\tFALLOC_FL_UNSHARE_RANGE                     = 0x40\n\tFALLOC_FL_ZERO_RANGE                        = 0x10\n\tFANOTIFY_METADATA_VERSION                   = 0x3\n\tFAN_ACCESS                                  = 0x1\n\tFAN_ACCESS_PERM                             = 0x20000\n\tFAN_ALLOW                                   = 0x1\n\tFAN_ALL_CLASS_BITS                          = 0xc\n\tFAN_ALL_EVENTS                              = 0x3b\n\tFAN_ALL_INIT_FLAGS                          = 0x3f\n\tFAN_ALL_MARK_FLAGS                          = 0xff\n\tFAN_ALL_OUTGOING_EVENTS                     = 0x3403b\n\tFAN_ALL_PERM_EVENTS                         = 0x30000\n\tFAN_ATTRIB                                  = 0x4\n\tFAN_AUDIT                                   = 0x10\n\tFAN_CLASS_CONTENT                           = 0x4\n\tFAN_CLASS_NOTIF                             = 0x0\n\tFAN_CLASS_PRE_CONTENT                       = 0x8\n\tFAN_CLOEXEC                                 = 0x1\n\tFAN_CLOSE                                   = 0x18\n\tFAN_CLOSE_NOWRITE                           = 0x10\n\tFAN_CLOSE_WRITE                             = 0x8\n\tFAN_CREATE                                  = 0x100\n\tFAN_DELETE                                  = 0x200\n\tFAN_DELETE_SELF                             = 0x400\n\tFAN_DENY                                    = 0x2\n\tFAN_ENABLE_AUDIT                            = 0x40\n\tFAN_EPIDFD                                  = -0x2\n\tFAN_ERRNO_BITS                              = 0x8\n\tFAN_ERRNO_MASK                              = 0xff\n\tFAN_ERRNO_SHIFT                             = 0x18\n\tFAN_EVENT_INFO_TYPE_DFID                    = 0x3\n\tFAN_EVENT_INFO_TYPE_DFID_NAME               = 0x2\n\tFAN_EVENT_INFO_TYPE_ERROR                   = 0x5\n\tFAN_EVENT_INFO_TYPE_FID                     = 0x1\n\tFAN_EVENT_INFO_TYPE_MNT                     = 0x7\n\tFAN_EVENT_INFO_TYPE_NEW_DFID_NAME           = 0xc\n\tFAN_EVENT_INFO_TYPE_OLD_DFID_NAME           = 0xa\n\tFAN_EVENT_INFO_TYPE_PIDFD                   = 0x4\n\tFAN_EVENT_INFO_TYPE_RANGE                   = 0x6\n\tFAN_EVENT_METADATA_LEN                      = 0x18\n\tFAN_EVENT_ON_CHILD                          = 0x8000000\n\tFAN_FS_ERROR                                = 0x8000\n\tFAN_INFO                                    = 0x20\n\tFAN_MARK_ADD                                = 0x1\n\tFAN_MARK_DONT_FOLLOW                        = 0x4\n\tFAN_MARK_EVICTABLE                          = 0x200\n\tFAN_MARK_FILESYSTEM                         = 0x100\n\tFAN_MARK_FLUSH                              = 0x80\n\tFAN_MARK_IGNORE                             = 0x400\n\tFAN_MARK_IGNORED_MASK                       = 0x20\n\tFAN_MARK_IGNORED_SURV_MODIFY                = 0x40\n\tFAN_MARK_IGNORE_SURV                        = 0x440\n\tFAN_MARK_INODE                              = 0x0\n\tFAN_MARK_MNTNS                              = 0x110\n\tFAN_MARK_MOUNT                              = 0x10\n\tFAN_MARK_ONLYDIR                            = 0x8\n\tFAN_MARK_REMOVE                             = 0x2\n\tFAN_MNT_ATTACH                              = 0x1000000\n\tFAN_MNT_DETACH                              = 0x2000000\n\tFAN_MODIFY                                  = 0x2\n\tFAN_MOVE                                    = 0xc0\n\tFAN_MOVED_FROM                              = 0x40\n\tFAN_MOVED_TO                                = 0x80\n\tFAN_MOVE_SELF                               = 0x800\n\tFAN_NOFD                                    = -0x1\n\tFAN_NONBLOCK                                = 0x2\n\tFAN_NOPIDFD                                 = -0x1\n\tFAN_ONDIR                                   = 0x40000000\n\tFAN_OPEN                                    = 0x20\n\tFAN_OPEN_EXEC                               = 0x1000\n\tFAN_OPEN_EXEC_PERM                          = 0x40000\n\tFAN_OPEN_PERM                               = 0x10000\n\tFAN_PRE_ACCESS                              = 0x100000\n\tFAN_Q_OVERFLOW                              = 0x4000\n\tFAN_RENAME                                  = 0x10000000\n\tFAN_REPORT_DFID_NAME                        = 0xc00\n\tFAN_REPORT_DFID_NAME_TARGET                 = 0x1e00\n\tFAN_REPORT_DIR_FID                          = 0x400\n\tFAN_REPORT_FD_ERROR                         = 0x2000\n\tFAN_REPORT_FID                              = 0x200\n\tFAN_REPORT_MNT                              = 0x4000\n\tFAN_REPORT_NAME                             = 0x800\n\tFAN_REPORT_PIDFD                            = 0x80\n\tFAN_REPORT_TARGET_FID                       = 0x1000\n\tFAN_REPORT_TID                              = 0x100\n\tFAN_RESPONSE_INFO_AUDIT_RULE                = 0x1\n\tFAN_RESPONSE_INFO_NONE                      = 0x0\n\tFAN_UNLIMITED_MARKS                         = 0x20\n\tFAN_UNLIMITED_QUEUE                         = 0x10\n\tFD_CLOEXEC                                  = 0x1\n\tFD_SETSIZE                                  = 0x400\n\tFF0                                         = 0x0\n\tFIB_RULE_DEV_DETACHED                       = 0x8\n\tFIB_RULE_FIND_SADDR                         = 0x10000\n\tFIB_RULE_IIF_DETACHED                       = 0x8\n\tFIB_RULE_INVERT                             = 0x2\n\tFIB_RULE_OIF_DETACHED                       = 0x10\n\tFIB_RULE_PERMANENT                          = 0x1\n\tFIB_RULE_UNRESOLVED                         = 0x4\n\tFIDEDUPERANGE                               = 0xc0189436\n\tFSCRYPT_ADD_KEY_FLAG_HW_WRAPPED             = 0x1\n\tFSCRYPT_KEY_DESCRIPTOR_SIZE                 = 0x8\n\tFSCRYPT_KEY_DESC_PREFIX                     = \"fscrypt:\"\n\tFSCRYPT_KEY_DESC_PREFIX_SIZE                = 0x8\n\tFSCRYPT_KEY_IDENTIFIER_SIZE                 = 0x10\n\tFSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY  = 0x1\n\tFSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS = 0x2\n\tFSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR            = 0x1\n\tFSCRYPT_KEY_SPEC_TYPE_IDENTIFIER            = 0x2\n\tFSCRYPT_KEY_STATUS_ABSENT                   = 0x1\n\tFSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF       = 0x1\n\tFSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED     = 0x3\n\tFSCRYPT_KEY_STATUS_PRESENT                  = 0x2\n\tFSCRYPT_MAX_KEY_SIZE                        = 0x40\n\tFSCRYPT_MODE_ADIANTUM                       = 0x9\n\tFSCRYPT_MODE_AES_128_CBC                    = 0x5\n\tFSCRYPT_MODE_AES_128_CTS                    = 0x6\n\tFSCRYPT_MODE_AES_256_CTS                    = 0x4\n\tFSCRYPT_MODE_AES_256_HCTR2                  = 0xa\n\tFSCRYPT_MODE_AES_256_XTS                    = 0x1\n\tFSCRYPT_MODE_SM4_CTS                        = 0x8\n\tFSCRYPT_MODE_SM4_XTS                        = 0x7\n\tFSCRYPT_POLICY_FLAGS_PAD_16                 = 0x2\n\tFSCRYPT_POLICY_FLAGS_PAD_32                 = 0x3\n\tFSCRYPT_POLICY_FLAGS_PAD_4                  = 0x0\n\tFSCRYPT_POLICY_FLAGS_PAD_8                  = 0x1\n\tFSCRYPT_POLICY_FLAGS_PAD_MASK               = 0x3\n\tFSCRYPT_POLICY_FLAG_DIRECT_KEY              = 0x4\n\tFSCRYPT_POLICY_FLAG_IV_INO_LBLK_32          = 0x10\n\tFSCRYPT_POLICY_FLAG_IV_INO_LBLK_64          = 0x8\n\tFSCRYPT_POLICY_V1                           = 0x0\n\tFSCRYPT_POLICY_V2                           = 0x2\n\tFS_ENCRYPTION_MODE_ADIANTUM                 = 0x9\n\tFS_ENCRYPTION_MODE_AES_128_CBC              = 0x5\n\tFS_ENCRYPTION_MODE_AES_128_CTS              = 0x6\n\tFS_ENCRYPTION_MODE_AES_256_CBC              = 0x3\n\tFS_ENCRYPTION_MODE_AES_256_CTS              = 0x4\n\tFS_ENCRYPTION_MODE_AES_256_GCM              = 0x2\n\tFS_ENCRYPTION_MODE_AES_256_XTS              = 0x1\n\tFS_ENCRYPTION_MODE_INVALID                  = 0x0\n\tFS_IOC_ADD_ENCRYPTION_KEY                   = 0xc0506617\n\tFS_IOC_GET_ENCRYPTION_KEY_STATUS            = 0xc080661a\n\tFS_IOC_GET_ENCRYPTION_POLICY_EX             = 0xc0096616\n\tFS_IOC_MEASURE_VERITY                       = 0xc0046686\n\tFS_IOC_READ_VERITY_METADATA                 = 0xc0286687\n\tFS_IOC_REMOVE_ENCRYPTION_KEY                = 0xc0406618\n\tFS_IOC_REMOVE_ENCRYPTION_KEY_ALL_USERS      = 0xc0406619\n\tFS_KEY_DESCRIPTOR_SIZE                      = 0x8\n\tFS_KEY_DESC_PREFIX                          = \"fscrypt:\"\n\tFS_KEY_DESC_PREFIX_SIZE                     = 0x8\n\tFS_MAX_KEY_SIZE                             = 0x40\n\tFS_POLICY_FLAGS_PAD_16                      = 0x2\n\tFS_POLICY_FLAGS_PAD_32                      = 0x3\n\tFS_POLICY_FLAGS_PAD_4                       = 0x0\n\tFS_POLICY_FLAGS_PAD_8                       = 0x1\n\tFS_POLICY_FLAGS_PAD_MASK                    = 0x3\n\tFS_POLICY_FLAGS_VALID                       = 0x7\n\tFS_VERITY_FL                                = 0x100000\n\tFS_VERITY_HASH_ALG_SHA256                   = 0x1\n\tFS_VERITY_HASH_ALG_SHA512                   = 0x2\n\tFS_VERITY_METADATA_TYPE_DESCRIPTOR          = 0x2\n\tFS_VERITY_METADATA_TYPE_MERKLE_TREE         = 0x1\n\tFS_VERITY_METADATA_TYPE_SIGNATURE           = 0x3\n\tFUSE_SUPER_MAGIC                            = 0x65735546\n\tFUTEXFS_SUPER_MAGIC                         = 0xbad1dea\n\tF_ADD_SEALS                                 = 0x409\n\tF_CREATED_QUERY                             = 0x404\n\tF_DUPFD                                     = 0x0\n\tF_DUPFD_CLOEXEC                             = 0x406\n\tF_DUPFD_QUERY                               = 0x403\n\tF_EXLCK                                     = 0x4\n\tF_GETFD                                     = 0x1\n\tF_GETFL                                     = 0x3\n\tF_GETLEASE                                  = 0x401\n\tF_GETOWN_EX                                 = 0x10\n\tF_GETPIPE_SZ                                = 0x408\n\tF_GETSIG                                    = 0xb\n\tF_GET_FILE_RW_HINT                          = 0x40d\n\tF_GET_RW_HINT                               = 0x40b\n\tF_GET_SEALS                                 = 0x40a\n\tF_LOCK                                      = 0x1\n\tF_NOTIFY                                    = 0x402\n\tF_OFD_GETLK                                 = 0x24\n\tF_OFD_SETLK                                 = 0x25\n\tF_OFD_SETLKW                                = 0x26\n\tF_OK                                        = 0x0\n\tF_SEAL_EXEC                                 = 0x20\n\tF_SEAL_FUTURE_WRITE                         = 0x10\n\tF_SEAL_GROW                                 = 0x4\n\tF_SEAL_SEAL                                 = 0x1\n\tF_SEAL_SHRINK                               = 0x2\n\tF_SEAL_WRITE                                = 0x8\n\tF_SETFD                                     = 0x2\n\tF_SETFL                                     = 0x4\n\tF_SETLEASE                                  = 0x400\n\tF_SETOWN_EX                                 = 0xf\n\tF_SETPIPE_SZ                                = 0x407\n\tF_SETSIG                                    = 0xa\n\tF_SET_FILE_RW_HINT                          = 0x40e\n\tF_SET_RW_HINT                               = 0x40c\n\tF_SHLCK                                     = 0x8\n\tF_TEST                                      = 0x3\n\tF_TLOCK                                     = 0x2\n\tF_ULOCK                                     = 0x0\n\tGENL_ADMIN_PERM                             = 0x1\n\tGENL_CMD_CAP_DO                             = 0x2\n\tGENL_CMD_CAP_DUMP                           = 0x4\n\tGENL_CMD_CAP_HASPOL                         = 0x8\n\tGENL_HDRLEN                                 = 0x4\n\tGENL_ID_CTRL                                = 0x10\n\tGENL_ID_PMCRAID                             = 0x12\n\tGENL_ID_VFS_DQUOT                           = 0x11\n\tGENL_MAX_ID                                 = 0x3ff\n\tGENL_MIN_ID                                 = 0x10\n\tGENL_NAMSIZ                                 = 0x10\n\tGENL_START_ALLOC                            = 0x13\n\tGENL_UNS_ADMIN_PERM                         = 0x10\n\tGRND_INSECURE                               = 0x4\n\tGRND_NONBLOCK                               = 0x1\n\tGRND_RANDOM                                 = 0x2\n\tHDIO_DRIVE_CMD                              = 0x31f\n\tHDIO_DRIVE_CMD_AEB                          = 0x31e\n\tHDIO_DRIVE_CMD_HDR_SIZE                     = 0x4\n\tHDIO_DRIVE_HOB_HDR_SIZE                     = 0x8\n\tHDIO_DRIVE_RESET                            = 0x31c\n\tHDIO_DRIVE_TASK                             = 0x31e\n\tHDIO_DRIVE_TASKFILE                         = 0x31d\n\tHDIO_DRIVE_TASK_HDR_SIZE                    = 0x8\n\tHDIO_GETGEO                                 = 0x301\n\tHDIO_GET_32BIT                              = 0x309\n\tHDIO_GET_ACOUSTIC                           = 0x30f\n\tHDIO_GET_ADDRESS                            = 0x310\n\tHDIO_GET_BUSSTATE                           = 0x31a\n\tHDIO_GET_DMA                                = 0x30b\n\tHDIO_GET_IDENTITY                           = 0x30d\n\tHDIO_GET_KEEPSETTINGS                       = 0x308\n\tHDIO_GET_MULTCOUNT                          = 0x304\n\tHDIO_GET_NICE                               = 0x30c\n\tHDIO_GET_NOWERR                             = 0x30a\n\tHDIO_GET_QDMA                               = 0x305\n\tHDIO_GET_UNMASKINTR                         = 0x302\n\tHDIO_GET_WCACHE                             = 0x30e\n\tHDIO_OBSOLETE_IDENTITY                      = 0x307\n\tHDIO_SCAN_HWIF                              = 0x328\n\tHDIO_SET_32BIT                              = 0x324\n\tHDIO_SET_ACOUSTIC                           = 0x32c\n\tHDIO_SET_ADDRESS                            = 0x32f\n\tHDIO_SET_BUSSTATE                           = 0x32d\n\tHDIO_SET_DMA                                = 0x326\n\tHDIO_SET_KEEPSETTINGS                       = 0x323\n\tHDIO_SET_MULTCOUNT                          = 0x321\n\tHDIO_SET_NICE                               = 0x329\n\tHDIO_SET_NOWERR                             = 0x325\n\tHDIO_SET_PIO_MODE                           = 0x327\n\tHDIO_SET_QDMA                               = 0x32e\n\tHDIO_SET_UNMASKINTR                         = 0x322\n\tHDIO_SET_WCACHE                             = 0x32b\n\tHDIO_SET_XFER                               = 0x306\n\tHDIO_TRISTATE_HWIF                          = 0x31b\n\tHDIO_UNREGISTER_HWIF                        = 0x32a\n\tHID_MAX_DESCRIPTOR_SIZE                     = 0x1000\n\tHOSTFS_SUPER_MAGIC                          = 0xc0ffee\n\tHPFS_SUPER_MAGIC                            = 0xf995e849\n\tHUGETLBFS_MAGIC                             = 0x958458f6\n\tIBSHIFT                                     = 0x10\n\tICRNL                                       = 0x100\n\tIFA_F_DADFAILED                             = 0x8\n\tIFA_F_DEPRECATED                            = 0x20\n\tIFA_F_HOMEADDRESS                           = 0x10\n\tIFA_F_MANAGETEMPADDR                        = 0x100\n\tIFA_F_MCAUTOJOIN                            = 0x400\n\tIFA_F_NODAD                                 = 0x2\n\tIFA_F_NOPREFIXROUTE                         = 0x200\n\tIFA_F_OPTIMISTIC                            = 0x4\n\tIFA_F_PERMANENT                             = 0x80\n\tIFA_F_SECONDARY                             = 0x1\n\tIFA_F_STABLE_PRIVACY                        = 0x800\n\tIFA_F_TEMPORARY                             = 0x1\n\tIFA_F_TENTATIVE                             = 0x40\n\tIFA_MAX                                     = 0xb\n\tIFF_ALLMULTI                                = 0x200\n\tIFF_ATTACH_QUEUE                            = 0x200\n\tIFF_AUTOMEDIA                               = 0x4000\n\tIFF_BROADCAST                               = 0x2\n\tIFF_DEBUG                                   = 0x4\n\tIFF_DETACH_QUEUE                            = 0x400\n\tIFF_DORMANT                                 = 0x20000\n\tIFF_DYNAMIC                                 = 0x8000\n\tIFF_ECHO                                    = 0x40000\n\tIFF_LOOPBACK                                = 0x8\n\tIFF_LOWER_UP                                = 0x10000\n\tIFF_MASTER                                  = 0x400\n\tIFF_MULTICAST                               = 0x1000\n\tIFF_MULTI_QUEUE                             = 0x100\n\tIFF_NAPI                                    = 0x10\n\tIFF_NAPI_FRAGS                              = 0x20\n\tIFF_NOARP                                   = 0x80\n\tIFF_NOFILTER                                = 0x1000\n\tIFF_NOTRAILERS                              = 0x20\n\tIFF_NO_CARRIER                              = 0x40\n\tIFF_NO_PI                                   = 0x1000\n\tIFF_ONE_QUEUE                               = 0x2000\n\tIFF_PERSIST                                 = 0x800\n\tIFF_POINTOPOINT                             = 0x10\n\tIFF_PORTSEL                                 = 0x2000\n\tIFF_PROMISC                                 = 0x100\n\tIFF_RUNNING                                 = 0x40\n\tIFF_SLAVE                                   = 0x800\n\tIFF_TAP                                     = 0x2\n\tIFF_TUN                                     = 0x1\n\tIFF_TUN_EXCL                                = 0x8000\n\tIFF_UP                                      = 0x1\n\tIFF_VNET_HDR                                = 0x4000\n\tIFF_VOLATILE                                = 0x70c5a\n\tIFNAMSIZ                                    = 0x10\n\tIGNBRK                                      = 0x1\n\tIGNCR                                       = 0x80\n\tIGNPAR                                      = 0x4\n\tIMAXBEL                                     = 0x2000\n\tINLCR                                       = 0x40\n\tINPCK                                       = 0x10\n\tIN_ACCESS                                   = 0x1\n\tIN_ALL_EVENTS                               = 0xfff\n\tIN_ATTRIB                                   = 0x4\n\tIN_CLASSA_HOST                              = 0xffffff\n\tIN_CLASSA_MAX                               = 0x80\n\tIN_CLASSA_NET                               = 0xff000000\n\tIN_CLASSA_NSHIFT                            = 0x18\n\tIN_CLASSB_HOST                              = 0xffff\n\tIN_CLASSB_MAX                               = 0x10000\n\tIN_CLASSB_NET                               = 0xffff0000\n\tIN_CLASSB_NSHIFT                            = 0x10\n\tIN_CLASSC_HOST                              = 0xff\n\tIN_CLASSC_NET                               = 0xffffff00\n\tIN_CLASSC_NSHIFT                            = 0x8\n\tIN_CLOSE                                    = 0x18\n\tIN_CLOSE_NOWRITE                            = 0x10\n\tIN_CLOSE_WRITE                              = 0x8\n\tIN_CREATE                                   = 0x100\n\tIN_DELETE                                   = 0x200\n\tIN_DELETE_SELF                              = 0x400\n\tIN_DONT_FOLLOW                              = 0x2000000\n\tIN_EXCL_UNLINK                              = 0x4000000\n\tIN_IGNORED                                  = 0x8000\n\tIN_ISDIR                                    = 0x40000000\n\tIN_LOOPBACKNET                              = 0x7f\n\tIN_MASK_ADD                                 = 0x20000000\n\tIN_MASK_CREATE                              = 0x10000000\n\tIN_MODIFY                                   = 0x2\n\tIN_MOVE                                     = 0xc0\n\tIN_MOVED_FROM                               = 0x40\n\tIN_MOVED_TO                                 = 0x80\n\tIN_MOVE_SELF                                = 0x800\n\tIN_ONESHOT                                  = 0x80000000\n\tIN_ONLYDIR                                  = 0x1000000\n\tIN_OPEN                                     = 0x20\n\tIN_Q_OVERFLOW                               = 0x4000\n\tIN_UNMOUNT                                  = 0x2000\n\tIOCTL_MEI_CONNECT_CLIENT                    = 0xc0104801\n\tIOCTL_MEI_CONNECT_CLIENT_VTAG               = 0xc0144804\n\tIPPROTO_AH                                  = 0x33\n\tIPPROTO_BEETPH                              = 0x5e\n\tIPPROTO_COMP                                = 0x6c\n\tIPPROTO_DCCP                                = 0x21\n\tIPPROTO_DSTOPTS                             = 0x3c\n\tIPPROTO_EGP                                 = 0x8\n\tIPPROTO_ENCAP                               = 0x62\n\tIPPROTO_ESP                                 = 0x32\n\tIPPROTO_ETHERNET                            = 0x8f\n\tIPPROTO_FRAGMENT                            = 0x2c\n\tIPPROTO_GRE                                 = 0x2f\n\tIPPROTO_HOPOPTS                             = 0x0\n\tIPPROTO_ICMP                                = 0x1\n\tIPPROTO_ICMPV6                              = 0x3a\n\tIPPROTO_IDP                                 = 0x16\n\tIPPROTO_IGMP                                = 0x2\n\tIPPROTO_IP                                  = 0x0\n\tIPPROTO_IPIP                                = 0x4\n\tIPPROTO_IPV6                                = 0x29\n\tIPPROTO_L2TP                                = 0x73\n\tIPPROTO_MH                                  = 0x87\n\tIPPROTO_MPLS                                = 0x89\n\tIPPROTO_MPTCP                               = 0x106\n\tIPPROTO_MTP                                 = 0x5c\n\tIPPROTO_NONE                                = 0x3b\n\tIPPROTO_PIM                                 = 0x67\n\tIPPROTO_PUP                                 = 0xc\n\tIPPROTO_RAW                                 = 0xff\n\tIPPROTO_ROUTING                             = 0x2b\n\tIPPROTO_RSVP                                = 0x2e\n\tIPPROTO_SCTP                                = 0x84\n\tIPPROTO_SMC                                 = 0x100\n\tIPPROTO_TCP                                 = 0x6\n\tIPPROTO_TP                                  = 0x1d\n\tIPPROTO_UDP                                 = 0x11\n\tIPPROTO_UDPLITE                             = 0x88\n\tIPV6_2292DSTOPTS                            = 0x4\n\tIPV6_2292HOPLIMIT                           = 0x8\n\tIPV6_2292HOPOPTS                            = 0x3\n\tIPV6_2292PKTINFO                            = 0x2\n\tIPV6_2292PKTOPTIONS                         = 0x6\n\tIPV6_2292RTHDR                              = 0x5\n\tIPV6_ADDRFORM                               = 0x1\n\tIPV6_ADDR_PREFERENCES                       = 0x48\n\tIPV6_ADD_MEMBERSHIP                         = 0x14\n\tIPV6_AUTHHDR                                = 0xa\n\tIPV6_AUTOFLOWLABEL                          = 0x46\n\tIPV6_CHECKSUM                               = 0x7\n\tIPV6_DONTFRAG                               = 0x3e\n\tIPV6_DROP_MEMBERSHIP                        = 0x15\n\tIPV6_DSTOPTS                                = 0x3b\n\tIPV6_FREEBIND                               = 0x4e\n\tIPV6_HDRINCL                                = 0x24\n\tIPV6_HOPLIMIT                               = 0x34\n\tIPV6_HOPOPTS                                = 0x36\n\tIPV6_IPSEC_POLICY                           = 0x22\n\tIPV6_JOIN_ANYCAST                           = 0x1b\n\tIPV6_JOIN_GROUP                             = 0x14\n\tIPV6_LEAVE_ANYCAST                          = 0x1c\n\tIPV6_LEAVE_GROUP                            = 0x15\n\tIPV6_MINHOPCOUNT                            = 0x49\n\tIPV6_MTU                                    = 0x18\n\tIPV6_MTU_DISCOVER                           = 0x17\n\tIPV6_MULTICAST_ALL                          = 0x1d\n\tIPV6_MULTICAST_HOPS                         = 0x12\n\tIPV6_MULTICAST_IF                           = 0x11\n\tIPV6_MULTICAST_LOOP                         = 0x13\n\tIPV6_NEXTHOP                                = 0x9\n\tIPV6_ORIGDSTADDR                            = 0x4a\n\tIPV6_PATHMTU                                = 0x3d\n\tIPV6_PKTINFO                                = 0x32\n\tIPV6_PMTUDISC_DO                            = 0x2\n\tIPV6_PMTUDISC_DONT                          = 0x0\n\tIPV6_PMTUDISC_INTERFACE                     = 0x4\n\tIPV6_PMTUDISC_OMIT                          = 0x5\n\tIPV6_PMTUDISC_PROBE                         = 0x3\n\tIPV6_PMTUDISC_WANT                          = 0x1\n\tIPV6_RECVDSTOPTS                            = 0x3a\n\tIPV6_RECVERR                                = 0x19\n\tIPV6_RECVERR_RFC4884                        = 0x1f\n\tIPV6_RECVFRAGSIZE                           = 0x4d\n\tIPV6_RECVHOPLIMIT                           = 0x33\n\tIPV6_RECVHOPOPTS                            = 0x35\n\tIPV6_RECVORIGDSTADDR                        = 0x4a\n\tIPV6_RECVPATHMTU                            = 0x3c\n\tIPV6_RECVPKTINFO                            = 0x31\n\tIPV6_RECVRTHDR                              = 0x38\n\tIPV6_RECVTCLASS                             = 0x42\n\tIPV6_ROUTER_ALERT                           = 0x16\n\tIPV6_ROUTER_ALERT_ISOLATE                   = 0x1e\n\tIPV6_RTHDR                                  = 0x39\n\tIPV6_RTHDRDSTOPTS                           = 0x37\n\tIPV6_RTHDR_LOOSE                            = 0x0\n\tIPV6_RTHDR_STRICT                           = 0x1\n\tIPV6_RTHDR_TYPE_0                           = 0x0\n\tIPV6_RXDSTOPTS                              = 0x3b\n\tIPV6_RXHOPOPTS                              = 0x36\n\tIPV6_TCLASS                                 = 0x43\n\tIPV6_TRANSPARENT                            = 0x4b\n\tIPV6_UNICAST_HOPS                           = 0x10\n\tIPV6_UNICAST_IF                             = 0x4c\n\tIPV6_V6ONLY                                 = 0x1a\n\tIPV6_VERSION                                = 0x60\n\tIPV6_VERSION_MASK                           = 0xf0\n\tIPV6_XFRM_POLICY                            = 0x23\n\tIP_ADD_MEMBERSHIP                           = 0x23\n\tIP_ADD_SOURCE_MEMBERSHIP                    = 0x27\n\tIP_BIND_ADDRESS_NO_PORT                     = 0x18\n\tIP_BLOCK_SOURCE                             = 0x26\n\tIP_CHECKSUM                                 = 0x17\n\tIP_DEFAULT_MULTICAST_LOOP                   = 0x1\n\tIP_DEFAULT_MULTICAST_TTL                    = 0x1\n\tIP_DF                                       = 0x4000\n\tIP_DROP_MEMBERSHIP                          = 0x24\n\tIP_DROP_SOURCE_MEMBERSHIP                   = 0x28\n\tIP_FREEBIND                                 = 0xf\n\tIP_HDRINCL                                  = 0x3\n\tIP_IPSEC_POLICY                             = 0x10\n\tIP_LOCAL_PORT_RANGE                         = 0x33\n\tIP_MAXPACKET                                = 0xffff\n\tIP_MAX_MEMBERSHIPS                          = 0x14\n\tIP_MF                                       = 0x2000\n\tIP_MINTTL                                   = 0x15\n\tIP_MSFILTER                                 = 0x29\n\tIP_MSS                                      = 0x240\n\tIP_MTU                                      = 0xe\n\tIP_MTU_DISCOVER                             = 0xa\n\tIP_MULTICAST_ALL                            = 0x31\n\tIP_MULTICAST_IF                             = 0x20\n\tIP_MULTICAST_LOOP                           = 0x22\n\tIP_MULTICAST_TTL                            = 0x21\n\tIP_NODEFRAG                                 = 0x16\n\tIP_OFFMASK                                  = 0x1fff\n\tIP_OPTIONS                                  = 0x4\n\tIP_ORIGDSTADDR                              = 0x14\n\tIP_PASSSEC                                  = 0x12\n\tIP_PKTINFO                                  = 0x8\n\tIP_PKTOPTIONS                               = 0x9\n\tIP_PMTUDISC                                 = 0xa\n\tIP_PMTUDISC_DO                              = 0x2\n\tIP_PMTUDISC_DONT                            = 0x0\n\tIP_PMTUDISC_INTERFACE                       = 0x4\n\tIP_PMTUDISC_OMIT                            = 0x5\n\tIP_PMTUDISC_PROBE                           = 0x3\n\tIP_PMTUDISC_WANT                            = 0x1\n\tIP_PROTOCOL                                 = 0x34\n\tIP_RECVERR                                  = 0xb\n\tIP_RECVERR_RFC4884                          = 0x1a\n\tIP_RECVFRAGSIZE                             = 0x19\n\tIP_RECVOPTS                                 = 0x6\n\tIP_RECVORIGDSTADDR                          = 0x14\n\tIP_RECVRETOPTS                              = 0x7\n\tIP_RECVTOS                                  = 0xd\n\tIP_RECVTTL                                  = 0xc\n\tIP_RETOPTS                                  = 0x7\n\tIP_RF                                       = 0x8000\n\tIP_ROUTER_ALERT                             = 0x5\n\tIP_TOS                                      = 0x1\n\tIP_TRANSPARENT                              = 0x13\n\tIP_TTL                                      = 0x2\n\tIP_UNBLOCK_SOURCE                           = 0x25\n\tIP_UNICAST_IF                               = 0x32\n\tIP_XFRM_POLICY                              = 0x11\n\tISOFS_SUPER_MAGIC                           = 0x9660\n\tISTRIP                                      = 0x20\n\tITIMER_PROF                                 = 0x2\n\tITIMER_REAL                                 = 0x0\n\tITIMER_VIRTUAL                              = 0x1\n\tIUTF8                                       = 0x4000\n\tIXANY                                       = 0x800\n\tJFFS2_SUPER_MAGIC                           = 0x72b6\n\tKCMPROTO_CONNECTED                          = 0x0\n\tKCM_RECV_DISABLE                            = 0x1\n\tKEXEC_ARCH_386                              = 0x30000\n\tKEXEC_ARCH_68K                              = 0x40000\n\tKEXEC_ARCH_AARCH64                          = 0xb70000\n\tKEXEC_ARCH_ARM                              = 0x280000\n\tKEXEC_ARCH_DEFAULT                          = 0x0\n\tKEXEC_ARCH_IA_64                            = 0x320000\n\tKEXEC_ARCH_LOONGARCH                        = 0x1020000\n\tKEXEC_ARCH_MASK                             = 0xffff0000\n\tKEXEC_ARCH_MIPS                             = 0x80000\n\tKEXEC_ARCH_MIPS_LE                          = 0xa0000\n\tKEXEC_ARCH_PARISC                           = 0xf0000\n\tKEXEC_ARCH_PPC                              = 0x140000\n\tKEXEC_ARCH_PPC64                            = 0x150000\n\tKEXEC_ARCH_RISCV                            = 0xf30000\n\tKEXEC_ARCH_S390                             = 0x160000\n\tKEXEC_ARCH_SH                               = 0x2a0000\n\tKEXEC_ARCH_X86_64                           = 0x3e0000\n\tKEXEC_CRASH_HOTPLUG_SUPPORT                 = 0x8\n\tKEXEC_FILE_DEBUG                            = 0x8\n\tKEXEC_FILE_NO_INITRAMFS                     = 0x4\n\tKEXEC_FILE_ON_CRASH                         = 0x2\n\tKEXEC_FILE_UNLOAD                           = 0x1\n\tKEXEC_ON_CRASH                              = 0x1\n\tKEXEC_PRESERVE_CONTEXT                      = 0x2\n\tKEXEC_SEGMENT_MAX                           = 0x10\n\tKEXEC_UPDATE_ELFCOREHDR                     = 0x4\n\tKEYCTL_ASSUME_AUTHORITY                     = 0x10\n\tKEYCTL_CAPABILITIES                         = 0x1f\n\tKEYCTL_CAPS0_BIG_KEY                        = 0x10\n\tKEYCTL_CAPS0_CAPABILITIES                   = 0x1\n\tKEYCTL_CAPS0_DIFFIE_HELLMAN                 = 0x4\n\tKEYCTL_CAPS0_INVALIDATE                     = 0x20\n\tKEYCTL_CAPS0_MOVE                           = 0x80\n\tKEYCTL_CAPS0_PERSISTENT_KEYRINGS            = 0x2\n\tKEYCTL_CAPS0_PUBLIC_KEY                     = 0x8\n\tKEYCTL_CAPS0_RESTRICT_KEYRING               = 0x40\n\tKEYCTL_CAPS1_NOTIFICATIONS                  = 0x4\n\tKEYCTL_CAPS1_NS_KEYRING_NAME                = 0x1\n\tKEYCTL_CAPS1_NS_KEY_TAG                     = 0x2\n\tKEYCTL_CHOWN                                = 0x4\n\tKEYCTL_CLEAR                                = 0x7\n\tKEYCTL_DESCRIBE                             = 0x6\n\tKEYCTL_DH_COMPUTE                           = 0x17\n\tKEYCTL_GET_KEYRING_ID                       = 0x0\n\tKEYCTL_GET_PERSISTENT                       = 0x16\n\tKEYCTL_GET_SECURITY                         = 0x11\n\tKEYCTL_INSTANTIATE                          = 0xc\n\tKEYCTL_INSTANTIATE_IOV                      = 0x14\n\tKEYCTL_INVALIDATE                           = 0x15\n\tKEYCTL_JOIN_SESSION_KEYRING                 = 0x1\n\tKEYCTL_LINK                                 = 0x8\n\tKEYCTL_MOVE                                 = 0x1e\n\tKEYCTL_MOVE_EXCL                            = 0x1\n\tKEYCTL_NEGATE                               = 0xd\n\tKEYCTL_PKEY_DECRYPT                         = 0x1a\n\tKEYCTL_PKEY_ENCRYPT                         = 0x19\n\tKEYCTL_PKEY_QUERY                           = 0x18\n\tKEYCTL_PKEY_SIGN                            = 0x1b\n\tKEYCTL_PKEY_VERIFY                          = 0x1c\n\tKEYCTL_READ                                 = 0xb\n\tKEYCTL_REJECT                               = 0x13\n\tKEYCTL_RESTRICT_KEYRING                     = 0x1d\n\tKEYCTL_REVOKE                               = 0x3\n\tKEYCTL_SEARCH                               = 0xa\n\tKEYCTL_SESSION_TO_PARENT                    = 0x12\n\tKEYCTL_SETPERM                              = 0x5\n\tKEYCTL_SET_REQKEY_KEYRING                   = 0xe\n\tKEYCTL_SET_TIMEOUT                          = 0xf\n\tKEYCTL_SUPPORTS_DECRYPT                     = 0x2\n\tKEYCTL_SUPPORTS_ENCRYPT                     = 0x1\n\tKEYCTL_SUPPORTS_SIGN                        = 0x4\n\tKEYCTL_SUPPORTS_VERIFY                      = 0x8\n\tKEYCTL_UNLINK                               = 0x9\n\tKEYCTL_UPDATE                               = 0x2\n\tKEYCTL_WATCH_KEY                            = 0x20\n\tKEY_REQKEY_DEFL_DEFAULT                     = 0x0\n\tKEY_REQKEY_DEFL_GROUP_KEYRING               = 0x6\n\tKEY_REQKEY_DEFL_NO_CHANGE                   = -0x1\n\tKEY_REQKEY_DEFL_PROCESS_KEYRING             = 0x2\n\tKEY_REQKEY_DEFL_REQUESTOR_KEYRING           = 0x7\n\tKEY_REQKEY_DEFL_SESSION_KEYRING             = 0x3\n\tKEY_REQKEY_DEFL_THREAD_KEYRING              = 0x1\n\tKEY_REQKEY_DEFL_USER_KEYRING                = 0x4\n\tKEY_REQKEY_DEFL_USER_SESSION_KEYRING        = 0x5\n\tKEY_SPEC_GROUP_KEYRING                      = -0x6\n\tKEY_SPEC_PROCESS_KEYRING                    = -0x2\n\tKEY_SPEC_REQKEY_AUTH_KEY                    = -0x7\n\tKEY_SPEC_REQUESTOR_KEYRING                  = -0x8\n\tKEY_SPEC_SESSION_KEYRING                    = -0x3\n\tKEY_SPEC_THREAD_KEYRING                     = -0x1\n\tKEY_SPEC_USER_KEYRING                       = -0x4\n\tKEY_SPEC_USER_SESSION_KEYRING               = -0x5\n\tLANDLOCK_ACCESS_FS_EXECUTE                  = 0x1\n\tLANDLOCK_ACCESS_FS_IOCTL_DEV                = 0x8000\n\tLANDLOCK_ACCESS_FS_MAKE_BLOCK               = 0x800\n\tLANDLOCK_ACCESS_FS_MAKE_CHAR                = 0x40\n\tLANDLOCK_ACCESS_FS_MAKE_DIR                 = 0x80\n\tLANDLOCK_ACCESS_FS_MAKE_FIFO                = 0x400\n\tLANDLOCK_ACCESS_FS_MAKE_REG                 = 0x100\n\tLANDLOCK_ACCESS_FS_MAKE_SOCK                = 0x200\n\tLANDLOCK_ACCESS_FS_MAKE_SYM                 = 0x1000\n\tLANDLOCK_ACCESS_FS_READ_DIR                 = 0x8\n\tLANDLOCK_ACCESS_FS_READ_FILE                = 0x4\n\tLANDLOCK_ACCESS_FS_REFER                    = 0x2000\n\tLANDLOCK_ACCESS_FS_REMOVE_DIR               = 0x10\n\tLANDLOCK_ACCESS_FS_REMOVE_FILE              = 0x20\n\tLANDLOCK_ACCESS_FS_TRUNCATE                 = 0x4000\n\tLANDLOCK_ACCESS_FS_WRITE_FILE               = 0x2\n\tLANDLOCK_ACCESS_NET_BIND_TCP                = 0x1\n\tLANDLOCK_ACCESS_NET_CONNECT_TCP             = 0x2\n\tLANDLOCK_CREATE_RULESET_ERRATA              = 0x2\n\tLANDLOCK_CREATE_RULESET_VERSION             = 0x1\n\tLANDLOCK_RESTRICT_SELF_LOG_NEW_EXEC_ON      = 0x2\n\tLANDLOCK_RESTRICT_SELF_LOG_SAME_EXEC_OFF    = 0x1\n\tLANDLOCK_RESTRICT_SELF_LOG_SUBDOMAINS_OFF   = 0x4\n\tLANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET         = 0x1\n\tLANDLOCK_SCOPE_SIGNAL                       = 0x2\n\tLINUX_REBOOT_CMD_CAD_OFF                    = 0x0\n\tLINUX_REBOOT_CMD_CAD_ON                     = 0x89abcdef\n\tLINUX_REBOOT_CMD_HALT                       = 0xcdef0123\n\tLINUX_REBOOT_CMD_KEXEC                      = 0x45584543\n\tLINUX_REBOOT_CMD_POWER_OFF                  = 0x4321fedc\n\tLINUX_REBOOT_CMD_RESTART                    = 0x1234567\n\tLINUX_REBOOT_CMD_RESTART2                   = 0xa1b2c3d4\n\tLINUX_REBOOT_CMD_SW_SUSPEND                 = 0xd000fce2\n\tLINUX_REBOOT_MAGIC1                         = 0xfee1dead\n\tLINUX_REBOOT_MAGIC2                         = 0x28121969\n\tLOCK_EX                                     = 0x2\n\tLOCK_NB                                     = 0x4\n\tLOCK_SH                                     = 0x1\n\tLOCK_UN                                     = 0x8\n\tLOOP_CLR_FD                                 = 0x4c01\n\tLOOP_CONFIGURE                              = 0x4c0a\n\tLOOP_CTL_ADD                                = 0x4c80\n\tLOOP_CTL_GET_FREE                           = 0x4c82\n\tLOOP_CTL_REMOVE                             = 0x4c81\n\tLOOP_GET_STATUS                             = 0x4c03\n\tLOOP_GET_STATUS64                           = 0x4c05\n\tLOOP_SET_BLOCK_SIZE                         = 0x4c09\n\tLOOP_SET_CAPACITY                           = 0x4c07\n\tLOOP_SET_DIRECT_IO                          = 0x4c08\n\tLOOP_SET_FD                                 = 0x4c00\n\tLOOP_SET_STATUS                             = 0x4c02\n\tLOOP_SET_STATUS64                           = 0x4c04\n\tLOOP_SET_STATUS_CLEARABLE_FLAGS             = 0x4\n\tLOOP_SET_STATUS_SETTABLE_FLAGS              = 0xc\n\tLO_KEY_SIZE                                 = 0x20\n\tLO_NAME_SIZE                                = 0x40\n\tLWTUNNEL_IP6_MAX                            = 0x8\n\tLWTUNNEL_IP_MAX                             = 0x8\n\tLWTUNNEL_IP_OPTS_MAX                        = 0x3\n\tLWTUNNEL_IP_OPT_ERSPAN_MAX                  = 0x4\n\tLWTUNNEL_IP_OPT_GENEVE_MAX                  = 0x3\n\tLWTUNNEL_IP_OPT_VXLAN_MAX                   = 0x1\n\tMADV_COLD                                   = 0x14\n\tMADV_COLLAPSE                               = 0x19\n\tMADV_DODUMP                                 = 0x11\n\tMADV_DOFORK                                 = 0xb\n\tMADV_DONTDUMP                               = 0x10\n\tMADV_DONTFORK                               = 0xa\n\tMADV_DONTNEED                               = 0x4\n\tMADV_DONTNEED_LOCKED                        = 0x18\n\tMADV_FREE                                   = 0x8\n\tMADV_HUGEPAGE                               = 0xe\n\tMADV_HWPOISON                               = 0x64\n\tMADV_KEEPONFORK                             = 0x13\n\tMADV_MERGEABLE                              = 0xc\n\tMADV_NOHUGEPAGE                             = 0xf\n\tMADV_NORMAL                                 = 0x0\n\tMADV_PAGEOUT                                = 0x15\n\tMADV_POPULATE_READ                          = 0x16\n\tMADV_POPULATE_WRITE                         = 0x17\n\tMADV_RANDOM                                 = 0x1\n\tMADV_REMOVE                                 = 0x9\n\tMADV_SEQUENTIAL                             = 0x2\n\tMADV_UNMERGEABLE                            = 0xd\n\tMADV_WILLNEED                               = 0x3\n\tMADV_WIPEONFORK                             = 0x12\n\tMAP_DROPPABLE                               = 0x8\n\tMAP_FILE                                    = 0x0\n\tMAP_FIXED                                   = 0x10\n\tMAP_FIXED_NOREPLACE                         = 0x100000\n\tMAP_HUGE_16GB                               = 0x88000000\n\tMAP_HUGE_16KB                               = 0x38000000\n\tMAP_HUGE_16MB                               = 0x60000000\n\tMAP_HUGE_1GB                                = 0x78000000\n\tMAP_HUGE_1MB                                = 0x50000000\n\tMAP_HUGE_256MB                              = 0x70000000\n\tMAP_HUGE_2GB                                = 0x7c000000\n\tMAP_HUGE_2MB                                = 0x54000000\n\tMAP_HUGE_32MB                               = 0x64000000\n\tMAP_HUGE_512KB                              = 0x4c000000\n\tMAP_HUGE_512MB                              = 0x74000000\n\tMAP_HUGE_64KB                               = 0x40000000\n\tMAP_HUGE_8MB                                = 0x5c000000\n\tMAP_HUGE_MASK                               = 0x3f\n\tMAP_HUGE_SHIFT                              = 0x1a\n\tMAP_PRIVATE                                 = 0x2\n\tMAP_SHARED                                  = 0x1\n\tMAP_SHARED_VALIDATE                         = 0x3\n\tMAP_TYPE                                    = 0xf\n\tMCAST_BLOCK_SOURCE                          = 0x2b\n\tMCAST_EXCLUDE                               = 0x0\n\tMCAST_INCLUDE                               = 0x1\n\tMCAST_JOIN_GROUP                            = 0x2a\n\tMCAST_JOIN_SOURCE_GROUP                     = 0x2e\n\tMCAST_LEAVE_GROUP                           = 0x2d\n\tMCAST_LEAVE_SOURCE_GROUP                    = 0x2f\n\tMCAST_MSFILTER                              = 0x30\n\tMCAST_UNBLOCK_SOURCE                        = 0x2c\n\tMEMGETREGIONINFO                            = 0xc0104d08\n\tMEMREADOOB64                                = 0xc0184d16\n\tMEMWRITE                                    = 0xc0304d18\n\tMEMWRITEOOB64                               = 0xc0184d15\n\tMFD_ALLOW_SEALING                           = 0x2\n\tMFD_CLOEXEC                                 = 0x1\n\tMFD_EXEC                                    = 0x10\n\tMFD_HUGETLB                                 = 0x4\n\tMFD_HUGE_16GB                               = 0x88000000\n\tMFD_HUGE_16MB                               = 0x60000000\n\tMFD_HUGE_1GB                                = 0x78000000\n\tMFD_HUGE_1MB                                = 0x50000000\n\tMFD_HUGE_256MB                              = 0x70000000\n\tMFD_HUGE_2GB                                = 0x7c000000\n\tMFD_HUGE_2MB                                = 0x54000000\n\tMFD_HUGE_32MB                               = 0x64000000\n\tMFD_HUGE_512KB                              = 0x4c000000\n\tMFD_HUGE_512MB                              = 0x74000000\n\tMFD_HUGE_64KB                               = 0x40000000\n\tMFD_HUGE_8MB                                = 0x5c000000\n\tMFD_HUGE_MASK                               = 0x3f\n\tMFD_HUGE_SHIFT                              = 0x1a\n\tMFD_NOEXEC_SEAL                             = 0x8\n\tMINIX2_SUPER_MAGIC                          = 0x2468\n\tMINIX2_SUPER_MAGIC2                         = 0x2478\n\tMINIX3_SUPER_MAGIC                          = 0x4d5a\n\tMINIX_SUPER_MAGIC                           = 0x137f\n\tMINIX_SUPER_MAGIC2                          = 0x138f\n\tMNT_DETACH                                  = 0x2\n\tMNT_EXPIRE                                  = 0x4\n\tMNT_FORCE                                   = 0x1\n\tMNT_ID_REQ_SIZE_VER0                        = 0x18\n\tMNT_ID_REQ_SIZE_VER1                        = 0x20\n\tMNT_NS_INFO_SIZE_VER0                       = 0x10\n\tMODULE_INIT_COMPRESSED_FILE                 = 0x4\n\tMODULE_INIT_IGNORE_MODVERSIONS              = 0x1\n\tMODULE_INIT_IGNORE_VERMAGIC                 = 0x2\n\tMOUNT_ATTR_IDMAP                            = 0x100000\n\tMOUNT_ATTR_NOATIME                          = 0x10\n\tMOUNT_ATTR_NODEV                            = 0x4\n\tMOUNT_ATTR_NODIRATIME                       = 0x80\n\tMOUNT_ATTR_NOEXEC                           = 0x8\n\tMOUNT_ATTR_NOSUID                           = 0x2\n\tMOUNT_ATTR_NOSYMFOLLOW                      = 0x200000\n\tMOUNT_ATTR_RDONLY                           = 0x1\n\tMOUNT_ATTR_RELATIME                         = 0x0\n\tMOUNT_ATTR_SIZE_VER0                        = 0x20\n\tMOUNT_ATTR_STRICTATIME                      = 0x20\n\tMOUNT_ATTR__ATIME                           = 0x70\n\tMREMAP_DONTUNMAP                            = 0x4\n\tMREMAP_FIXED                                = 0x2\n\tMREMAP_MAYMOVE                              = 0x1\n\tMSDOS_SUPER_MAGIC                           = 0x4d44\n\tMSG_BATCH                                   = 0x40000\n\tMSG_CMSG_CLOEXEC                            = 0x40000000\n\tMSG_CONFIRM                                 = 0x800\n\tMSG_CTRUNC                                  = 0x8\n\tMSG_DONTROUTE                               = 0x4\n\tMSG_DONTWAIT                                = 0x40\n\tMSG_EOR                                     = 0x80\n\tMSG_ERRQUEUE                                = 0x2000\n\tMSG_FASTOPEN                                = 0x20000000\n\tMSG_FIN                                     = 0x200\n\tMSG_MORE                                    = 0x8000\n\tMSG_NOSIGNAL                                = 0x4000\n\tMSG_OOB                                     = 0x1\n\tMSG_PEEK                                    = 0x2\n\tMSG_PROXY                                   = 0x10\n\tMSG_RST                                     = 0x1000\n\tMSG_SOCK_DEVMEM                             = 0x2000000\n\tMSG_SYN                                     = 0x400\n\tMSG_TRUNC                                   = 0x20\n\tMSG_TRYHARD                                 = 0x4\n\tMSG_WAITALL                                 = 0x100\n\tMSG_WAITFORONE                              = 0x10000\n\tMSG_ZEROCOPY                                = 0x4000000\n\tMS_ACTIVE                                   = 0x40000000\n\tMS_ASYNC                                    = 0x1\n\tMS_BIND                                     = 0x1000\n\tMS_BORN                                     = 0x20000000\n\tMS_DIRSYNC                                  = 0x80\n\tMS_INVALIDATE                               = 0x2\n\tMS_I_VERSION                                = 0x800000\n\tMS_KERNMOUNT                                = 0x400000\n\tMS_LAZYTIME                                 = 0x2000000\n\tMS_MANDLOCK                                 = 0x40\n\tMS_MGC_MSK                                  = 0xffff0000\n\tMS_MGC_VAL                                  = 0xc0ed0000\n\tMS_MOVE                                     = 0x2000\n\tMS_NOATIME                                  = 0x400\n\tMS_NODEV                                    = 0x4\n\tMS_NODIRATIME                               = 0x800\n\tMS_NOEXEC                                   = 0x8\n\tMS_NOREMOTELOCK                             = 0x8000000\n\tMS_NOSEC                                    = 0x10000000\n\tMS_NOSUID                                   = 0x2\n\tMS_NOSYMFOLLOW                              = 0x100\n\tMS_NOUSER                                   = -0x80000000\n\tMS_POSIXACL                                 = 0x10000\n\tMS_PRIVATE                                  = 0x40000\n\tMS_RDONLY                                   = 0x1\n\tMS_REC                                      = 0x4000\n\tMS_RELATIME                                 = 0x200000\n\tMS_REMOUNT                                  = 0x20\n\tMS_RMT_MASK                                 = 0x2800051\n\tMS_SHARED                                   = 0x100000\n\tMS_SILENT                                   = 0x8000\n\tMS_SLAVE                                    = 0x80000\n\tMS_STRICTATIME                              = 0x1000000\n\tMS_SUBMOUNT                                 = 0x4000000\n\tMS_SYNC                                     = 0x4\n\tMS_SYNCHRONOUS                              = 0x10\n\tMS_UNBINDABLE                               = 0x20000\n\tMS_VERBOSE                                  = 0x8000\n\tMTD_ABSENT                                  = 0x0\n\tMTD_BIT_WRITEABLE                           = 0x800\n\tMTD_CAP_NANDFLASH                           = 0x400\n\tMTD_CAP_NORFLASH                            = 0xc00\n\tMTD_CAP_NVRAM                               = 0x1c00\n\tMTD_CAP_RAM                                 = 0x1c00\n\tMTD_CAP_ROM                                 = 0x0\n\tMTD_DATAFLASH                               = 0x6\n\tMTD_INODE_FS_MAGIC                          = 0x11307854\n\tMTD_MAX_ECCPOS_ENTRIES                      = 0x40\n\tMTD_MAX_OOBFREE_ENTRIES                     = 0x8\n\tMTD_MLCNANDFLASH                            = 0x8\n\tMTD_NANDECC_AUTOPLACE                       = 0x2\n\tMTD_NANDECC_AUTOPL_USR                      = 0x4\n\tMTD_NANDECC_OFF                             = 0x0\n\tMTD_NANDECC_PLACE                           = 0x1\n\tMTD_NANDECC_PLACEONLY                       = 0x3\n\tMTD_NANDFLASH                               = 0x4\n\tMTD_NORFLASH                                = 0x3\n\tMTD_NO_ERASE                                = 0x1000\n\tMTD_OTP_FACTORY                             = 0x1\n\tMTD_OTP_OFF                                 = 0x0\n\tMTD_OTP_USER                                = 0x2\n\tMTD_POWERUP_LOCK                            = 0x2000\n\tMTD_RAM                                     = 0x1\n\tMTD_ROM                                     = 0x2\n\tMTD_SLC_ON_MLC_EMULATION                    = 0x4000\n\tMTD_UBIVOLUME                               = 0x7\n\tMTD_WRITEABLE                               = 0x400\n\tNAME_MAX                                    = 0xff\n\tNCP_SUPER_MAGIC                             = 0x564c\n\tNETLINK_ADD_MEMBERSHIP                      = 0x1\n\tNETLINK_AUDIT                               = 0x9\n\tNETLINK_BROADCAST_ERROR                     = 0x4\n\tNETLINK_CAP_ACK                             = 0xa\n\tNETLINK_CONNECTOR                           = 0xb\n\tNETLINK_CRYPTO                              = 0x15\n\tNETLINK_DNRTMSG                             = 0xe\n\tNETLINK_DROP_MEMBERSHIP                     = 0x2\n\tNETLINK_ECRYPTFS                            = 0x13\n\tNETLINK_EXT_ACK                             = 0xb\n\tNETLINK_FIB_LOOKUP                          = 0xa\n\tNETLINK_FIREWALL                            = 0x3\n\tNETLINK_GENERIC                             = 0x10\n\tNETLINK_GET_STRICT_CHK                      = 0xc\n\tNETLINK_INET_DIAG                           = 0x4\n\tNETLINK_IP6_FW                              = 0xd\n\tNETLINK_ISCSI                               = 0x8\n\tNETLINK_KOBJECT_UEVENT                      = 0xf\n\tNETLINK_LISTEN_ALL_NSID                     = 0x8\n\tNETLINK_LIST_MEMBERSHIPS                    = 0x9\n\tNETLINK_NETFILTER                           = 0xc\n\tNETLINK_NFLOG                               = 0x5\n\tNETLINK_NO_ENOBUFS                          = 0x5\n\tNETLINK_PKTINFO                             = 0x3\n\tNETLINK_RDMA                                = 0x14\n\tNETLINK_ROUTE                               = 0x0\n\tNETLINK_RX_RING                             = 0x6\n\tNETLINK_SCSITRANSPORT                       = 0x12\n\tNETLINK_SELINUX                             = 0x7\n\tNETLINK_SMC                                 = 0x16\n\tNETLINK_SOCK_DIAG                           = 0x4\n\tNETLINK_TX_RING                             = 0x7\n\tNETLINK_UNUSED                              = 0x1\n\tNETLINK_USERSOCK                            = 0x2\n\tNETLINK_XFRM                                = 0x6\n\tNETNSA_MAX                                  = 0x5\n\tNETNSA_NSID_NOT_ASSIGNED                    = -0x1\n\tNFC_ATR_REQ_GB_MAXSIZE                      = 0x30\n\tNFC_ATR_REQ_MAXSIZE                         = 0x40\n\tNFC_ATR_RES_GB_MAXSIZE                      = 0x2f\n\tNFC_ATR_RES_MAXSIZE                         = 0x40\n\tNFC_ATS_MAXSIZE                             = 0x14\n\tNFC_COMM_ACTIVE                             = 0x0\n\tNFC_COMM_PASSIVE                            = 0x1\n\tNFC_DEVICE_NAME_MAXSIZE                     = 0x8\n\tNFC_DIRECTION_RX                            = 0x0\n\tNFC_DIRECTION_TX                            = 0x1\n\tNFC_FIRMWARE_NAME_MAXSIZE                   = 0x20\n\tNFC_GB_MAXSIZE                              = 0x30\n\tNFC_GENL_MCAST_EVENT_NAME                   = \"events\"\n\tNFC_GENL_NAME                               = \"nfc\"\n\tNFC_GENL_VERSION                            = 0x1\n\tNFC_HEADER_SIZE                             = 0x1\n\tNFC_ISO15693_UID_MAXSIZE                    = 0x8\n\tNFC_LLCP_MAX_SERVICE_NAME                   = 0x3f\n\tNFC_LLCP_MIUX                               = 0x1\n\tNFC_LLCP_REMOTE_LTO                         = 0x3\n\tNFC_LLCP_REMOTE_MIU                         = 0x2\n\tNFC_LLCP_REMOTE_RW                          = 0x4\n\tNFC_LLCP_RW                                 = 0x0\n\tNFC_NFCID1_MAXSIZE                          = 0xa\n\tNFC_NFCID2_MAXSIZE                          = 0x8\n\tNFC_NFCID3_MAXSIZE                          = 0xa\n\tNFC_PROTO_FELICA                            = 0x3\n\tNFC_PROTO_FELICA_MASK                       = 0x8\n\tNFC_PROTO_ISO14443                          = 0x4\n\tNFC_PROTO_ISO14443_B                        = 0x6\n\tNFC_PROTO_ISO14443_B_MASK                   = 0x40\n\tNFC_PROTO_ISO14443_MASK                     = 0x10\n\tNFC_PROTO_ISO15693                          = 0x7\n\tNFC_PROTO_ISO15693_MASK                     = 0x80\n\tNFC_PROTO_JEWEL                             = 0x1\n\tNFC_PROTO_JEWEL_MASK                        = 0x2\n\tNFC_PROTO_MAX                               = 0x8\n\tNFC_PROTO_MIFARE                            = 0x2\n\tNFC_PROTO_MIFARE_MASK                       = 0x4\n\tNFC_PROTO_NFC_DEP                           = 0x5\n\tNFC_PROTO_NFC_DEP_MASK                      = 0x20\n\tNFC_RAW_HEADER_SIZE                         = 0x2\n\tNFC_RF_INITIATOR                            = 0x0\n\tNFC_RF_NONE                                 = 0x2\n\tNFC_RF_TARGET                               = 0x1\n\tNFC_SENSB_RES_MAXSIZE                       = 0xc\n\tNFC_SENSF_RES_MAXSIZE                       = 0x12\n\tNFC_SE_DISABLED                             = 0x0\n\tNFC_SE_EMBEDDED                             = 0x2\n\tNFC_SE_ENABLED                              = 0x1\n\tNFC_SE_UICC                                 = 0x1\n\tNFC_SOCKPROTO_LLCP                          = 0x1\n\tNFC_SOCKPROTO_MAX                           = 0x2\n\tNFC_SOCKPROTO_RAW                           = 0x0\n\tNFNETLINK_V0                                = 0x0\n\tNFNLGRP_ACCT_QUOTA                          = 0x8\n\tNFNLGRP_CONNTRACK_DESTROY                   = 0x3\n\tNFNLGRP_CONNTRACK_EXP_DESTROY               = 0x6\n\tNFNLGRP_CONNTRACK_EXP_NEW                   = 0x4\n\tNFNLGRP_CONNTRACK_EXP_UPDATE                = 0x5\n\tNFNLGRP_CONNTRACK_NEW                       = 0x1\n\tNFNLGRP_CONNTRACK_UPDATE                    = 0x2\n\tNFNLGRP_MAX                                 = 0x9\n\tNFNLGRP_NFTABLES                            = 0x7\n\tNFNLGRP_NFTRACE                             = 0x9\n\tNFNLGRP_NONE                                = 0x0\n\tNFNL_BATCH_MAX                              = 0x1\n\tNFNL_MSG_BATCH_BEGIN                        = 0x10\n\tNFNL_MSG_BATCH_END                          = 0x11\n\tNFNL_NFA_NEST                               = 0x8000\n\tNFNL_SUBSYS_ACCT                            = 0x7\n\tNFNL_SUBSYS_COUNT                           = 0xd\n\tNFNL_SUBSYS_CTHELPER                        = 0x9\n\tNFNL_SUBSYS_CTNETLINK                       = 0x1\n\tNFNL_SUBSYS_CTNETLINK_EXP                   = 0x2\n\tNFNL_SUBSYS_CTNETLINK_TIMEOUT               = 0x8\n\tNFNL_SUBSYS_HOOK                            = 0xc\n\tNFNL_SUBSYS_IPSET                           = 0x6\n\tNFNL_SUBSYS_NFTABLES                        = 0xa\n\tNFNL_SUBSYS_NFT_COMPAT                      = 0xb\n\tNFNL_SUBSYS_NONE                            = 0x0\n\tNFNL_SUBSYS_OSF                             = 0x5\n\tNFNL_SUBSYS_QUEUE                           = 0x3\n\tNFNL_SUBSYS_ULOG                            = 0x4\n\tNFS_SUPER_MAGIC                             = 0x6969\n\tNFT_BITWISE_BOOL                            = 0x0\n\tNFT_CHAIN_FLAGS                             = 0x7\n\tNFT_CHAIN_MAXNAMELEN                        = 0x100\n\tNFT_CT_MAX                                  = 0x17\n\tNFT_DATA_RESERVED_MASK                      = 0xffffff00\n\tNFT_DATA_VALUE_MAXLEN                       = 0x40\n\tNFT_EXTHDR_OP_MAX                           = 0x4\n\tNFT_FIB_RESULT_MAX                          = 0x3\n\tNFT_INNER_MASK                              = 0xf\n\tNFT_LOGLEVEL_MAX                            = 0x8\n\tNFT_NAME_MAXLEN                             = 0x100\n\tNFT_NG_MAX                                  = 0x1\n\tNFT_OBJECT_CONNLIMIT                        = 0x5\n\tNFT_OBJECT_COUNTER                          = 0x1\n\tNFT_OBJECT_CT_EXPECT                        = 0x9\n\tNFT_OBJECT_CT_HELPER                        = 0x3\n\tNFT_OBJECT_CT_TIMEOUT                       = 0x7\n\tNFT_OBJECT_LIMIT                            = 0x4\n\tNFT_OBJECT_MAX                              = 0xa\n\tNFT_OBJECT_QUOTA                            = 0x2\n\tNFT_OBJECT_SECMARK                          = 0x8\n\tNFT_OBJECT_SYNPROXY                         = 0xa\n\tNFT_OBJECT_TUNNEL                           = 0x6\n\tNFT_OBJECT_UNSPEC                           = 0x0\n\tNFT_OBJ_MAXNAMELEN                          = 0x100\n\tNFT_OSF_MAXGENRELEN                         = 0x10\n\tNFT_QUEUE_FLAG_BYPASS                       = 0x1\n\tNFT_QUEUE_FLAG_CPU_FANOUT                   = 0x2\n\tNFT_QUEUE_FLAG_MASK                         = 0x3\n\tNFT_REG32_COUNT                             = 0x10\n\tNFT_REG32_SIZE                              = 0x4\n\tNFT_REG_MAX                                 = 0x4\n\tNFT_REG_SIZE                                = 0x10\n\tNFT_REJECT_ICMPX_MAX                        = 0x3\n\tNFT_RT_MAX                                  = 0x4\n\tNFT_SECMARK_CTX_MAXLEN                      = 0x1000\n\tNFT_SET_MAXNAMELEN                          = 0x100\n\tNFT_SOCKET_MAX                              = 0x3\n\tNFT_TABLE_F_MASK                            = 0x7\n\tNFT_TABLE_MAXNAMELEN                        = 0x100\n\tNFT_TRACETYPE_MAX                           = 0x3\n\tNFT_TUNNEL_F_MASK                           = 0x7\n\tNFT_TUNNEL_MAX                              = 0x1\n\tNFT_TUNNEL_MODE_MAX                         = 0x2\n\tNFT_USERDATA_MAXLEN                         = 0x100\n\tNFT_XFRM_KEY_MAX                            = 0x6\n\tNF_NAT_RANGE_MAP_IPS                        = 0x1\n\tNF_NAT_RANGE_MASK                           = 0x7f\n\tNF_NAT_RANGE_NETMAP                         = 0x40\n\tNF_NAT_RANGE_PERSISTENT                     = 0x8\n\tNF_NAT_RANGE_PROTO_OFFSET                   = 0x20\n\tNF_NAT_RANGE_PROTO_RANDOM                   = 0x4\n\tNF_NAT_RANGE_PROTO_RANDOM_ALL               = 0x14\n\tNF_NAT_RANGE_PROTO_RANDOM_FULLY             = 0x10\n\tNF_NAT_RANGE_PROTO_SPECIFIED                = 0x2\n\tNILFS_SUPER_MAGIC                           = 0x3434\n\tNL0                                         = 0x0\n\tNL1                                         = 0x100\n\tNLA_ALIGNTO                                 = 0x4\n\tNLA_F_NESTED                                = 0x8000\n\tNLA_F_NET_BYTEORDER                         = 0x4000\n\tNLA_HDRLEN                                  = 0x4\n\tNLMSG_ALIGNTO                               = 0x4\n\tNLMSG_DONE                                  = 0x3\n\tNLMSG_ERROR                                 = 0x2\n\tNLMSG_HDRLEN                                = 0x10\n\tNLMSG_MIN_TYPE                              = 0x10\n\tNLMSG_NOOP                                  = 0x1\n\tNLMSG_OVERRUN                               = 0x4\n\tNLM_F_ACK                                   = 0x4\n\tNLM_F_ACK_TLVS                              = 0x200\n\tNLM_F_APPEND                                = 0x800\n\tNLM_F_ATOMIC                                = 0x400\n\tNLM_F_BULK                                  = 0x200\n\tNLM_F_CAPPED                                = 0x100\n\tNLM_F_CREATE                                = 0x400\n\tNLM_F_DUMP                                  = 0x300\n\tNLM_F_DUMP_FILTERED                         = 0x20\n\tNLM_F_DUMP_INTR                             = 0x10\n\tNLM_F_ECHO                                  = 0x8\n\tNLM_F_EXCL                                  = 0x200\n\tNLM_F_MATCH                                 = 0x200\n\tNLM_F_MULTI                                 = 0x2\n\tNLM_F_NONREC                                = 0x100\n\tNLM_F_REPLACE                               = 0x100\n\tNLM_F_REQUEST                               = 0x1\n\tNLM_F_ROOT                                  = 0x100\n\tNN_386_IOPERM                               = \"LINUX\"\n\tNN_386_TLS                                  = \"LINUX\"\n\tNN_ARC_V2                                   = \"LINUX\"\n\tNN_ARM_FPMR                                 = \"LINUX\"\n\tNN_ARM_GCS                                  = \"LINUX\"\n\tNN_ARM_HW_BREAK                             = \"LINUX\"\n\tNN_ARM_HW_WATCH                             = \"LINUX\"\n\tNN_ARM_PACA_KEYS                            = \"LINUX\"\n\tNN_ARM_PACG_KEYS                            = \"LINUX\"\n\tNN_ARM_PAC_ENABLED_KEYS                     = \"LINUX\"\n\tNN_ARM_PAC_MASK                             = \"LINUX\"\n\tNN_ARM_POE                                  = \"LINUX\"\n\tNN_ARM_SSVE                                 = \"LINUX\"\n\tNN_ARM_SVE                                  = \"LINUX\"\n\tNN_ARM_SYSTEM_CALL                          = \"LINUX\"\n\tNN_ARM_TAGGED_ADDR_CTRL                     = \"LINUX\"\n\tNN_ARM_TLS                                  = \"LINUX\"\n\tNN_ARM_VFP                                  = \"LINUX\"\n\tNN_ARM_ZA                                   = \"LINUX\"\n\tNN_ARM_ZT                                   = \"LINUX\"\n\tNN_AUXV                                     = \"CORE\"\n\tNN_FILE                                     = \"CORE\"\n\tNN_GNU_PROPERTY_TYPE_0                      = \"GNU\"\n\tNN_LOONGARCH_CPUCFG                         = \"LINUX\"\n\tNN_LOONGARCH_CSR                            = \"LINUX\"\n\tNN_LOONGARCH_HW_BREAK                       = \"LINUX\"\n\tNN_LOONGARCH_HW_WATCH                       = \"LINUX\"\n\tNN_LOONGARCH_LASX                           = \"LINUX\"\n\tNN_LOONGARCH_LBT                            = \"LINUX\"\n\tNN_LOONGARCH_LSX                            = \"LINUX\"\n\tNN_MIPS_DSP                                 = \"LINUX\"\n\tNN_MIPS_FP_MODE                             = \"LINUX\"\n\tNN_MIPS_MSA                                 = \"LINUX\"\n\tNN_PPC_DEXCR                                = \"LINUX\"\n\tNN_PPC_DSCR                                 = \"LINUX\"\n\tNN_PPC_EBB                                  = \"LINUX\"\n\tNN_PPC_HASHKEYR                             = \"LINUX\"\n\tNN_PPC_PKEY                                 = \"LINUX\"\n\tNN_PPC_PMU                                  = \"LINUX\"\n\tNN_PPC_PPR                                  = \"LINUX\"\n\tNN_PPC_SPE                                  = \"LINUX\"\n\tNN_PPC_TAR                                  = \"LINUX\"\n\tNN_PPC_TM_CDSCR                             = \"LINUX\"\n\tNN_PPC_TM_CFPR                              = \"LINUX\"\n\tNN_PPC_TM_CGPR                              = \"LINUX\"\n\tNN_PPC_TM_CPPR                              = \"LINUX\"\n\tNN_PPC_TM_CTAR                              = \"LINUX\"\n\tNN_PPC_TM_CVMX                              = \"LINUX\"\n\tNN_PPC_TM_CVSX                              = \"LINUX\"\n\tNN_PPC_TM_SPR                               = \"LINUX\"\n\tNN_PPC_VMX                                  = \"LINUX\"\n\tNN_PPC_VSX                                  = \"LINUX\"\n\tNN_PRFPREG                                  = \"CORE\"\n\tNN_PRPSINFO                                 = \"CORE\"\n\tNN_PRSTATUS                                 = \"CORE\"\n\tNN_PRXFPREG                                 = \"LINUX\"\n\tNN_RISCV_CSR                                = \"LINUX\"\n\tNN_RISCV_TAGGED_ADDR_CTRL                   = \"LINUX\"\n\tNN_RISCV_VECTOR                             = \"LINUX\"\n\tNN_S390_CTRS                                = \"LINUX\"\n\tNN_S390_GS_BC                               = \"LINUX\"\n\tNN_S390_GS_CB                               = \"LINUX\"\n\tNN_S390_HIGH_GPRS                           = \"LINUX\"\n\tNN_S390_LAST_BREAK                          = \"LINUX\"\n\tNN_S390_PREFIX                              = \"LINUX\"\n\tNN_S390_PV_CPU_DATA                         = \"LINUX\"\n\tNN_S390_RI_CB                               = \"LINUX\"\n\tNN_S390_SYSTEM_CALL                         = \"LINUX\"\n\tNN_S390_TDB                                 = \"LINUX\"\n\tNN_S390_TIMER                               = \"LINUX\"\n\tNN_S390_TODCMP                              = \"LINUX\"\n\tNN_S390_TODPREG                             = \"LINUX\"\n\tNN_S390_VXRS_HIGH                           = \"LINUX\"\n\tNN_S390_VXRS_LOW                            = \"LINUX\"\n\tNN_SIGINFO                                  = \"CORE\"\n\tNN_TASKSTRUCT                               = \"CORE\"\n\tNN_VMCOREDD                                 = \"LINUX\"\n\tNN_X86_SHSTK                                = \"LINUX\"\n\tNN_X86_XSAVE_LAYOUT                         = \"LINUX\"\n\tNN_X86_XSTATE                               = \"LINUX\"\n\tNSFS_MAGIC                                  = 0x6e736673\n\tNT_386_IOPERM                               = 0x201\n\tNT_386_TLS                                  = 0x200\n\tNT_ARC_V2                                   = 0x600\n\tNT_ARM_FPMR                                 = 0x40e\n\tNT_ARM_GCS                                  = 0x410\n\tNT_ARM_HW_BREAK                             = 0x402\n\tNT_ARM_HW_WATCH                             = 0x403\n\tNT_ARM_PACA_KEYS                            = 0x407\n\tNT_ARM_PACG_KEYS                            = 0x408\n\tNT_ARM_PAC_ENABLED_KEYS                     = 0x40a\n\tNT_ARM_PAC_MASK                             = 0x406\n\tNT_ARM_POE                                  = 0x40f\n\tNT_ARM_SSVE                                 = 0x40b\n\tNT_ARM_SVE                                  = 0x405\n\tNT_ARM_SYSTEM_CALL                          = 0x404\n\tNT_ARM_TAGGED_ADDR_CTRL                     = 0x409\n\tNT_ARM_TLS                                  = 0x401\n\tNT_ARM_VFP                                  = 0x400\n\tNT_ARM_ZA                                   = 0x40c\n\tNT_ARM_ZT                                   = 0x40d\n\tNT_AUXV                                     = 0x6\n\tNT_FILE                                     = 0x46494c45\n\tNT_GNU_PROPERTY_TYPE_0                      = 0x5\n\tNT_LOONGARCH_CPUCFG                         = 0xa00\n\tNT_LOONGARCH_CSR                            = 0xa01\n\tNT_LOONGARCH_HW_BREAK                       = 0xa05\n\tNT_LOONGARCH_HW_WATCH                       = 0xa06\n\tNT_LOONGARCH_LASX                           = 0xa03\n\tNT_LOONGARCH_LBT                            = 0xa04\n\tNT_LOONGARCH_LSX                            = 0xa02\n\tNT_MIPS_DSP                                 = 0x800\n\tNT_MIPS_FP_MODE                             = 0x801\n\tNT_MIPS_MSA                                 = 0x802\n\tNT_PPC_DEXCR                                = 0x111\n\tNT_PPC_DSCR                                 = 0x105\n\tNT_PPC_EBB                                  = 0x106\n\tNT_PPC_HASHKEYR                             = 0x112\n\tNT_PPC_PKEY                                 = 0x110\n\tNT_PPC_PMU                                  = 0x107\n\tNT_PPC_PPR                                  = 0x104\n\tNT_PPC_SPE                                  = 0x101\n\tNT_PPC_TAR                                  = 0x103\n\tNT_PPC_TM_CDSCR                             = 0x10f\n\tNT_PPC_TM_CFPR                              = 0x109\n\tNT_PPC_TM_CGPR                              = 0x108\n\tNT_PPC_TM_CPPR                              = 0x10e\n\tNT_PPC_TM_CTAR                              = 0x10d\n\tNT_PPC_TM_CVMX                              = 0x10a\n\tNT_PPC_TM_CVSX                              = 0x10b\n\tNT_PPC_TM_SPR                               = 0x10c\n\tNT_PPC_VMX                                  = 0x100\n\tNT_PPC_VSX                                  = 0x102\n\tNT_PRFPREG                                  = 0x2\n\tNT_PRPSINFO                                 = 0x3\n\tNT_PRSTATUS                                 = 0x1\n\tNT_PRXFPREG                                 = 0x46e62b7f\n\tNT_RISCV_CSR                                = 0x900\n\tNT_RISCV_TAGGED_ADDR_CTRL                   = 0x902\n\tNT_RISCV_VECTOR                             = 0x901\n\tNT_S390_CTRS                                = 0x304\n\tNT_S390_GS_BC                               = 0x30c\n\tNT_S390_GS_CB                               = 0x30b\n\tNT_S390_HIGH_GPRS                           = 0x300\n\tNT_S390_LAST_BREAK                          = 0x306\n\tNT_S390_PREFIX                              = 0x305\n\tNT_S390_PV_CPU_DATA                         = 0x30e\n\tNT_S390_RI_CB                               = 0x30d\n\tNT_S390_SYSTEM_CALL                         = 0x307\n\tNT_S390_TDB                                 = 0x308\n\tNT_S390_TIMER                               = 0x301\n\tNT_S390_TODCMP                              = 0x302\n\tNT_S390_TODPREG                             = 0x303\n\tNT_S390_VXRS_HIGH                           = 0x30a\n\tNT_S390_VXRS_LOW                            = 0x309\n\tNT_SIGINFO                                  = 0x53494749\n\tNT_TASKSTRUCT                               = 0x4\n\tNT_VMCOREDD                                 = 0x700\n\tNT_X86_SHSTK                                = 0x204\n\tNT_X86_XSAVE_LAYOUT                         = 0x205\n\tNT_X86_XSTATE                               = 0x202\n\tOCFS2_SUPER_MAGIC                           = 0x7461636f\n\tOCRNL                                       = 0x8\n\tOFDEL                                       = 0x80\n\tOFILL                                       = 0x40\n\tONLRET                                      = 0x20\n\tONOCR                                       = 0x10\n\tOPENPROM_SUPER_MAGIC                        = 0x9fa1\n\tOPOST                                       = 0x1\n\tOVERLAYFS_SUPER_MAGIC                       = 0x794c7630\n\tO_ACCMODE                                   = 0x3\n\tO_RDONLY                                    = 0x0\n\tO_RDWR                                      = 0x2\n\tO_WRONLY                                    = 0x1\n\tPACKET_ADD_MEMBERSHIP                       = 0x1\n\tPACKET_AUXDATA                              = 0x8\n\tPACKET_BROADCAST                            = 0x1\n\tPACKET_COPY_THRESH                          = 0x7\n\tPACKET_DROP_MEMBERSHIP                      = 0x2\n\tPACKET_FANOUT                               = 0x12\n\tPACKET_FANOUT_CBPF                          = 0x6\n\tPACKET_FANOUT_CPU                           = 0x2\n\tPACKET_FANOUT_DATA                          = 0x16\n\tPACKET_FANOUT_EBPF                          = 0x7\n\tPACKET_FANOUT_FLAG_DEFRAG                   = 0x8000\n\tPACKET_FANOUT_FLAG_IGNORE_OUTGOING          = 0x4000\n\tPACKET_FANOUT_FLAG_ROLLOVER                 = 0x1000\n\tPACKET_FANOUT_FLAG_UNIQUEID                 = 0x2000\n\tPACKET_FANOUT_HASH                          = 0x0\n\tPACKET_FANOUT_LB                            = 0x1\n\tPACKET_FANOUT_QM                            = 0x5\n\tPACKET_FANOUT_RND                           = 0x4\n\tPACKET_FANOUT_ROLLOVER                      = 0x3\n\tPACKET_FASTROUTE                            = 0x6\n\tPACKET_HDRLEN                               = 0xb\n\tPACKET_HOST                                 = 0x0\n\tPACKET_IGNORE_OUTGOING                      = 0x17\n\tPACKET_KERNEL                               = 0x7\n\tPACKET_LOOPBACK                             = 0x5\n\tPACKET_LOSS                                 = 0xe\n\tPACKET_MR_ALLMULTI                          = 0x2\n\tPACKET_MR_MULTICAST                         = 0x0\n\tPACKET_MR_PROMISC                           = 0x1\n\tPACKET_MR_UNICAST                           = 0x3\n\tPACKET_MULTICAST                            = 0x2\n\tPACKET_ORIGDEV                              = 0x9\n\tPACKET_OTHERHOST                            = 0x3\n\tPACKET_OUTGOING                             = 0x4\n\tPACKET_QDISC_BYPASS                         = 0x14\n\tPACKET_RECV_OUTPUT                          = 0x3\n\tPACKET_RESERVE                              = 0xc\n\tPACKET_ROLLOVER_STATS                       = 0x15\n\tPACKET_RX_RING                              = 0x5\n\tPACKET_STATISTICS                           = 0x6\n\tPACKET_TIMESTAMP                            = 0x11\n\tPACKET_TX_HAS_OFF                           = 0x13\n\tPACKET_TX_RING                              = 0xd\n\tPACKET_TX_TIMESTAMP                         = 0x10\n\tPACKET_USER                                 = 0x6\n\tPACKET_VERSION                              = 0xa\n\tPACKET_VNET_HDR                             = 0xf\n\tPACKET_VNET_HDR_SZ                          = 0x18\n\tPARITY_CRC16_PR0                            = 0x2\n\tPARITY_CRC16_PR0_CCITT                      = 0x4\n\tPARITY_CRC16_PR1                            = 0x3\n\tPARITY_CRC16_PR1_CCITT                      = 0x5\n\tPARITY_CRC32_PR0_CCITT                      = 0x6\n\tPARITY_CRC32_PR1_CCITT                      = 0x7\n\tPARITY_DEFAULT                              = 0x0\n\tPARITY_NONE                                 = 0x1\n\tPARMRK                                      = 0x8\n\tPERF_ATTR_SIZE_VER0                         = 0x40\n\tPERF_ATTR_SIZE_VER1                         = 0x48\n\tPERF_ATTR_SIZE_VER2                         = 0x50\n\tPERF_ATTR_SIZE_VER3                         = 0x60\n\tPERF_ATTR_SIZE_VER4                         = 0x68\n\tPERF_ATTR_SIZE_VER5                         = 0x70\n\tPERF_ATTR_SIZE_VER6                         = 0x78\n\tPERF_ATTR_SIZE_VER7                         = 0x80\n\tPERF_ATTR_SIZE_VER8                         = 0x88\n\tPERF_AUX_FLAG_COLLISION                     = 0x8\n\tPERF_AUX_FLAG_CORESIGHT_FORMAT_CORESIGHT    = 0x0\n\tPERF_AUX_FLAG_CORESIGHT_FORMAT_RAW          = 0x100\n\tPERF_AUX_FLAG_OVERWRITE                     = 0x2\n\tPERF_AUX_FLAG_PARTIAL                       = 0x4\n\tPERF_AUX_FLAG_PMU_FORMAT_TYPE_MASK          = 0xff00\n\tPERF_AUX_FLAG_TRUNCATED                     = 0x1\n\tPERF_BRANCH_ENTRY_INFO_BITS_MAX             = 0x21\n\tPERF_BR_ARM64_DEBUG_DATA                    = 0x7\n\tPERF_BR_ARM64_DEBUG_EXIT                    = 0x5\n\tPERF_BR_ARM64_DEBUG_HALT                    = 0x4\n\tPERF_BR_ARM64_DEBUG_INST                    = 0x6\n\tPERF_BR_ARM64_FIQ                           = 0x3\n\tPERF_FLAG_FD_CLOEXEC                        = 0x8\n\tPERF_FLAG_FD_NO_GROUP                       = 0x1\n\tPERF_FLAG_FD_OUTPUT                         = 0x2\n\tPERF_FLAG_PID_CGROUP                        = 0x4\n\tPERF_HW_EVENT_MASK                          = 0xffffffff\n\tPERF_MAX_CONTEXTS_PER_STACK                 = 0x8\n\tPERF_MAX_STACK_DEPTH                        = 0x7f\n\tPERF_MEM_BLK_ADDR                           = 0x4\n\tPERF_MEM_BLK_DATA                           = 0x2\n\tPERF_MEM_BLK_NA                             = 0x1\n\tPERF_MEM_BLK_SHIFT                          = 0x28\n\tPERF_MEM_HOPS_0                             = 0x1\n\tPERF_MEM_HOPS_1                             = 0x2\n\tPERF_MEM_HOPS_2                             = 0x3\n\tPERF_MEM_HOPS_3                             = 0x4\n\tPERF_MEM_HOPS_SHIFT                         = 0x2b\n\tPERF_MEM_LOCK_LOCKED                        = 0x2\n\tPERF_MEM_LOCK_NA                            = 0x1\n\tPERF_MEM_LOCK_SHIFT                         = 0x18\n\tPERF_MEM_LVLNUM_ANY_CACHE                   = 0xb\n\tPERF_MEM_LVLNUM_CXL                         = 0x9\n\tPERF_MEM_LVLNUM_IO                          = 0xa\n\tPERF_MEM_LVLNUM_L1                          = 0x1\n\tPERF_MEM_LVLNUM_L2                          = 0x2\n\tPERF_MEM_LVLNUM_L2_MHB                      = 0x5\n\tPERF_MEM_LVLNUM_L3                          = 0x3\n\tPERF_MEM_LVLNUM_L4                          = 0x4\n\tPERF_MEM_LVLNUM_LFB                         = 0xc\n\tPERF_MEM_LVLNUM_MSC                         = 0x6\n\tPERF_MEM_LVLNUM_NA                          = 0xf\n\tPERF_MEM_LVLNUM_PMEM                        = 0xe\n\tPERF_MEM_LVLNUM_RAM                         = 0xd\n\tPERF_MEM_LVLNUM_SHIFT                       = 0x21\n\tPERF_MEM_LVLNUM_UNC                         = 0x8\n\tPERF_MEM_LVL_HIT                            = 0x2\n\tPERF_MEM_LVL_IO                             = 0x1000\n\tPERF_MEM_LVL_L1                             = 0x8\n\tPERF_MEM_LVL_L2                             = 0x20\n\tPERF_MEM_LVL_L3                             = 0x40\n\tPERF_MEM_LVL_LFB                            = 0x10\n\tPERF_MEM_LVL_LOC_RAM                        = 0x80\n\tPERF_MEM_LVL_MISS                           = 0x4\n\tPERF_MEM_LVL_NA                             = 0x1\n\tPERF_MEM_LVL_REM_CCE1                       = 0x400\n\tPERF_MEM_LVL_REM_CCE2                       = 0x800\n\tPERF_MEM_LVL_REM_RAM1                       = 0x100\n\tPERF_MEM_LVL_REM_RAM2                       = 0x200\n\tPERF_MEM_LVL_SHIFT                          = 0x5\n\tPERF_MEM_LVL_UNC                            = 0x2000\n\tPERF_MEM_OP_EXEC                            = 0x10\n\tPERF_MEM_OP_LOAD                            = 0x2\n\tPERF_MEM_OP_NA                              = 0x1\n\tPERF_MEM_OP_PFETCH                          = 0x8\n\tPERF_MEM_OP_SHIFT                           = 0x0\n\tPERF_MEM_OP_STORE                           = 0x4\n\tPERF_MEM_REMOTE_REMOTE                      = 0x1\n\tPERF_MEM_REMOTE_SHIFT                       = 0x25\n\tPERF_MEM_SNOOPX_FWD                         = 0x1\n\tPERF_MEM_SNOOPX_PEER                        = 0x2\n\tPERF_MEM_SNOOPX_SHIFT                       = 0x26\n\tPERF_MEM_SNOOP_HIT                          = 0x4\n\tPERF_MEM_SNOOP_HITM                         = 0x10\n\tPERF_MEM_SNOOP_MISS                         = 0x8\n\tPERF_MEM_SNOOP_NA                           = 0x1\n\tPERF_MEM_SNOOP_NONE                         = 0x2\n\tPERF_MEM_SNOOP_SHIFT                        = 0x13\n\tPERF_MEM_TLB_HIT                            = 0x2\n\tPERF_MEM_TLB_L1                             = 0x8\n\tPERF_MEM_TLB_L2                             = 0x10\n\tPERF_MEM_TLB_MISS                           = 0x4\n\tPERF_MEM_TLB_NA                             = 0x1\n\tPERF_MEM_TLB_OS                             = 0x40\n\tPERF_MEM_TLB_SHIFT                          = 0x1a\n\tPERF_MEM_TLB_WK                             = 0x20\n\tPERF_PMU_TYPE_SHIFT                         = 0x20\n\tPERF_RECORD_KSYMBOL_FLAGS_UNREGISTER        = 0x1\n\tPERF_RECORD_MISC_COMM_EXEC                  = 0x2000\n\tPERF_RECORD_MISC_CPUMODE_MASK               = 0x7\n\tPERF_RECORD_MISC_CPUMODE_UNKNOWN            = 0x0\n\tPERF_RECORD_MISC_EXACT_IP                   = 0x4000\n\tPERF_RECORD_MISC_EXT_RESERVED               = 0x8000\n\tPERF_RECORD_MISC_FORK_EXEC                  = 0x2000\n\tPERF_RECORD_MISC_GUEST_KERNEL               = 0x4\n\tPERF_RECORD_MISC_GUEST_USER                 = 0x5\n\tPERF_RECORD_MISC_HYPERVISOR                 = 0x3\n\tPERF_RECORD_MISC_KERNEL                     = 0x1\n\tPERF_RECORD_MISC_MMAP_BUILD_ID              = 0x4000\n\tPERF_RECORD_MISC_MMAP_DATA                  = 0x2000\n\tPERF_RECORD_MISC_PROC_MAP_PARSE_TIMEOUT     = 0x1000\n\tPERF_RECORD_MISC_SWITCH_OUT                 = 0x2000\n\tPERF_RECORD_MISC_SWITCH_OUT_PREEMPT         = 0x4000\n\tPERF_RECORD_MISC_USER                       = 0x2\n\tPERF_SAMPLE_BRANCH_PLM_ALL                  = 0x7\n\tPERF_SAMPLE_WEIGHT_TYPE                     = 0x1004000\n\tPF_ALG                                      = 0x26\n\tPF_APPLETALK                                = 0x5\n\tPF_ASH                                      = 0x12\n\tPF_ATMPVC                                   = 0x8\n\tPF_ATMSVC                                   = 0x14\n\tPF_AX25                                     = 0x3\n\tPF_BLUETOOTH                                = 0x1f\n\tPF_BRIDGE                                   = 0x7\n\tPF_CAIF                                     = 0x25\n\tPF_CAN                                      = 0x1d\n\tPF_DECnet                                   = 0xc\n\tPF_ECONET                                   = 0x13\n\tPF_FILE                                     = 0x1\n\tPF_IB                                       = 0x1b\n\tPF_IEEE802154                               = 0x24\n\tPF_INET                                     = 0x2\n\tPF_INET6                                    = 0xa\n\tPF_IPX                                      = 0x4\n\tPF_IRDA                                     = 0x17\n\tPF_ISDN                                     = 0x22\n\tPF_IUCV                                     = 0x20\n\tPF_KCM                                      = 0x29\n\tPF_KEY                                      = 0xf\n\tPF_LLC                                      = 0x1a\n\tPF_LOCAL                                    = 0x1\n\tPF_MAX                                      = 0x2e\n\tPF_MCTP                                     = 0x2d\n\tPF_MPLS                                     = 0x1c\n\tPF_NETBEUI                                  = 0xd\n\tPF_NETLINK                                  = 0x10\n\tPF_NETROM                                   = 0x6\n\tPF_NFC                                      = 0x27\n\tPF_PACKET                                   = 0x11\n\tPF_PHONET                                   = 0x23\n\tPF_PPPOX                                    = 0x18\n\tPF_QIPCRTR                                  = 0x2a\n\tPF_R                                        = 0x4\n\tPF_RDS                                      = 0x15\n\tPF_ROSE                                     = 0xb\n\tPF_ROUTE                                    = 0x10\n\tPF_RXRPC                                    = 0x21\n\tPF_SECURITY                                 = 0xe\n\tPF_SMC                                      = 0x2b\n\tPF_SNA                                      = 0x16\n\tPF_TIPC                                     = 0x1e\n\tPF_UNIX                                     = 0x1\n\tPF_UNSPEC                                   = 0x0\n\tPF_VSOCK                                    = 0x28\n\tPF_W                                        = 0x2\n\tPF_WANPIPE                                  = 0x19\n\tPF_X                                        = 0x1\n\tPF_X25                                      = 0x9\n\tPF_XDP                                      = 0x2c\n\tPID_FS_MAGIC                                = 0x50494446\n\tPIPEFS_MAGIC                                = 0x50495045\n\tPPPIOCGNPMODE                               = 0xc008744c\n\tPPPIOCNEWUNIT                               = 0xc004743e\n\tPRIO_PGRP                                   = 0x1\n\tPRIO_PROCESS                                = 0x0\n\tPRIO_USER                                   = 0x2\n\tPROCFS_IOCTL_MAGIC                          = 'f'\n\tPROC_SUPER_MAGIC                            = 0x9fa0\n\tPROT_EXEC                                   = 0x4\n\tPROT_GROWSDOWN                              = 0x1000000\n\tPROT_GROWSUP                                = 0x2000000\n\tPROT_NONE                                   = 0x0\n\tPROT_READ                                   = 0x1\n\tPROT_WRITE                                  = 0x2\n\tPR_CAPBSET_DROP                             = 0x18\n\tPR_CAPBSET_READ                             = 0x17\n\tPR_CAP_AMBIENT                              = 0x2f\n\tPR_CAP_AMBIENT_CLEAR_ALL                    = 0x4\n\tPR_CAP_AMBIENT_IS_SET                       = 0x1\n\tPR_CAP_AMBIENT_LOWER                        = 0x3\n\tPR_CAP_AMBIENT_RAISE                        = 0x2\n\tPR_ENDIAN_BIG                               = 0x0\n\tPR_ENDIAN_LITTLE                            = 0x1\n\tPR_ENDIAN_PPC_LITTLE                        = 0x2\n\tPR_FPEMU_NOPRINT                            = 0x1\n\tPR_FPEMU_SIGFPE                             = 0x2\n\tPR_FP_EXC_ASYNC                             = 0x2\n\tPR_FP_EXC_DISABLED                          = 0x0\n\tPR_FP_EXC_DIV                               = 0x10000\n\tPR_FP_EXC_INV                               = 0x100000\n\tPR_FP_EXC_NONRECOV                          = 0x1\n\tPR_FP_EXC_OVF                               = 0x20000\n\tPR_FP_EXC_PRECISE                           = 0x3\n\tPR_FP_EXC_RES                               = 0x80000\n\tPR_FP_EXC_SW_ENABLE                         = 0x80\n\tPR_FP_EXC_UND                               = 0x40000\n\tPR_FP_MODE_FR                               = 0x1\n\tPR_FP_MODE_FRE                              = 0x2\n\tPR_FUTEX_HASH                               = 0x4e\n\tPR_FUTEX_HASH_GET_IMMUTABLE                 = 0x3\n\tPR_FUTEX_HASH_GET_SLOTS                     = 0x2\n\tPR_FUTEX_HASH_SET_SLOTS                     = 0x1\n\tPR_GET_AUXV                                 = 0x41555856\n\tPR_GET_CHILD_SUBREAPER                      = 0x25\n\tPR_GET_DUMPABLE                             = 0x3\n\tPR_GET_ENDIAN                               = 0x13\n\tPR_GET_FPEMU                                = 0x9\n\tPR_GET_FPEXC                                = 0xb\n\tPR_GET_FP_MODE                              = 0x2e\n\tPR_GET_IO_FLUSHER                           = 0x3a\n\tPR_GET_KEEPCAPS                             = 0x7\n\tPR_GET_MDWE                                 = 0x42\n\tPR_GET_MEMORY_MERGE                         = 0x44\n\tPR_GET_NAME                                 = 0x10\n\tPR_GET_NO_NEW_PRIVS                         = 0x27\n\tPR_GET_PDEATHSIG                            = 0x2\n\tPR_GET_SECCOMP                              = 0x15\n\tPR_GET_SECUREBITS                           = 0x1b\n\tPR_GET_SHADOW_STACK_STATUS                  = 0x4a\n\tPR_GET_SPECULATION_CTRL                     = 0x34\n\tPR_GET_TAGGED_ADDR_CTRL                     = 0x38\n\tPR_GET_THP_DISABLE                          = 0x2a\n\tPR_GET_TID_ADDRESS                          = 0x28\n\tPR_GET_TIMERSLACK                           = 0x1e\n\tPR_GET_TIMING                               = 0xd\n\tPR_GET_TSC                                  = 0x19\n\tPR_GET_UNALIGN                              = 0x5\n\tPR_LOCK_SHADOW_STACK_STATUS                 = 0x4c\n\tPR_MCE_KILL                                 = 0x21\n\tPR_MCE_KILL_CLEAR                           = 0x0\n\tPR_MCE_KILL_DEFAULT                         = 0x2\n\tPR_MCE_KILL_EARLY                           = 0x1\n\tPR_MCE_KILL_GET                             = 0x22\n\tPR_MCE_KILL_LATE                            = 0x0\n\tPR_MCE_KILL_SET                             = 0x1\n\tPR_MDWE_NO_INHERIT                          = 0x2\n\tPR_MDWE_REFUSE_EXEC_GAIN                    = 0x1\n\tPR_MPX_DISABLE_MANAGEMENT                   = 0x2c\n\tPR_MPX_ENABLE_MANAGEMENT                    = 0x2b\n\tPR_MTE_TAG_MASK                             = 0x7fff8\n\tPR_MTE_TAG_SHIFT                            = 0x3\n\tPR_MTE_TCF_ASYNC                            = 0x4\n\tPR_MTE_TCF_MASK                             = 0x6\n\tPR_MTE_TCF_NONE                             = 0x0\n\tPR_MTE_TCF_SHIFT                            = 0x1\n\tPR_MTE_TCF_SYNC                             = 0x2\n\tPR_PAC_APDAKEY                              = 0x4\n\tPR_PAC_APDBKEY                              = 0x8\n\tPR_PAC_APGAKEY                              = 0x10\n\tPR_PAC_APIAKEY                              = 0x1\n\tPR_PAC_APIBKEY                              = 0x2\n\tPR_PAC_GET_ENABLED_KEYS                     = 0x3d\n\tPR_PAC_RESET_KEYS                           = 0x36\n\tPR_PAC_SET_ENABLED_KEYS                     = 0x3c\n\tPR_PMLEN_MASK                               = 0x7f000000\n\tPR_PMLEN_SHIFT                              = 0x18\n\tPR_PPC_DEXCR_CTRL_CLEAR                     = 0x4\n\tPR_PPC_DEXCR_CTRL_CLEAR_ONEXEC              = 0x10\n\tPR_PPC_DEXCR_CTRL_EDITABLE                  = 0x1\n\tPR_PPC_DEXCR_CTRL_MASK                      = 0x1f\n\tPR_PPC_DEXCR_CTRL_SET                       = 0x2\n\tPR_PPC_DEXCR_CTRL_SET_ONEXEC                = 0x8\n\tPR_PPC_DEXCR_IBRTPD                         = 0x1\n\tPR_PPC_DEXCR_NPHIE                          = 0x3\n\tPR_PPC_DEXCR_SBHE                           = 0x0\n\tPR_PPC_DEXCR_SRAPD                          = 0x2\n\tPR_PPC_GET_DEXCR                            = 0x48\n\tPR_PPC_SET_DEXCR                            = 0x49\n\tPR_RISCV_CTX_SW_FENCEI_OFF                  = 0x1\n\tPR_RISCV_CTX_SW_FENCEI_ON                   = 0x0\n\tPR_RISCV_SCOPE_PER_PROCESS                  = 0x0\n\tPR_RISCV_SCOPE_PER_THREAD                   = 0x1\n\tPR_RISCV_SET_ICACHE_FLUSH_CTX               = 0x47\n\tPR_RISCV_V_GET_CONTROL                      = 0x46\n\tPR_RISCV_V_SET_CONTROL                      = 0x45\n\tPR_RISCV_V_VSTATE_CTRL_CUR_MASK             = 0x3\n\tPR_RISCV_V_VSTATE_CTRL_DEFAULT              = 0x0\n\tPR_RISCV_V_VSTATE_CTRL_INHERIT              = 0x10\n\tPR_RISCV_V_VSTATE_CTRL_MASK                 = 0x1f\n\tPR_RISCV_V_VSTATE_CTRL_NEXT_MASK            = 0xc\n\tPR_RISCV_V_VSTATE_CTRL_OFF                  = 0x1\n\tPR_RISCV_V_VSTATE_CTRL_ON                   = 0x2\n\tPR_SCHED_CORE                               = 0x3e\n\tPR_SCHED_CORE_CREATE                        = 0x1\n\tPR_SCHED_CORE_GET                           = 0x0\n\tPR_SCHED_CORE_MAX                           = 0x4\n\tPR_SCHED_CORE_SCOPE_PROCESS_GROUP           = 0x2\n\tPR_SCHED_CORE_SCOPE_THREAD                  = 0x0\n\tPR_SCHED_CORE_SCOPE_THREAD_GROUP            = 0x1\n\tPR_SCHED_CORE_SHARE_FROM                    = 0x3\n\tPR_SCHED_CORE_SHARE_TO                      = 0x2\n\tPR_SET_CHILD_SUBREAPER                      = 0x24\n\tPR_SET_DUMPABLE                             = 0x4\n\tPR_SET_ENDIAN                               = 0x14\n\tPR_SET_FPEMU                                = 0xa\n\tPR_SET_FPEXC                                = 0xc\n\tPR_SET_FP_MODE                              = 0x2d\n\tPR_SET_IO_FLUSHER                           = 0x39\n\tPR_SET_KEEPCAPS                             = 0x8\n\tPR_SET_MDWE                                 = 0x41\n\tPR_SET_MEMORY_MERGE                         = 0x43\n\tPR_SET_MM                                   = 0x23\n\tPR_SET_MM_ARG_END                           = 0x9\n\tPR_SET_MM_ARG_START                         = 0x8\n\tPR_SET_MM_AUXV                              = 0xc\n\tPR_SET_MM_BRK                               = 0x7\n\tPR_SET_MM_END_CODE                          = 0x2\n\tPR_SET_MM_END_DATA                          = 0x4\n\tPR_SET_MM_ENV_END                           = 0xb\n\tPR_SET_MM_ENV_START                         = 0xa\n\tPR_SET_MM_EXE_FILE                          = 0xd\n\tPR_SET_MM_MAP                               = 0xe\n\tPR_SET_MM_MAP_SIZE                          = 0xf\n\tPR_SET_MM_START_BRK                         = 0x6\n\tPR_SET_MM_START_CODE                        = 0x1\n\tPR_SET_MM_START_DATA                        = 0x3\n\tPR_SET_MM_START_STACK                       = 0x5\n\tPR_SET_NAME                                 = 0xf\n\tPR_SET_NO_NEW_PRIVS                         = 0x26\n\tPR_SET_PDEATHSIG                            = 0x1\n\tPR_SET_PTRACER                              = 0x59616d61\n\tPR_SET_SECCOMP                              = 0x16\n\tPR_SET_SECUREBITS                           = 0x1c\n\tPR_SET_SHADOW_STACK_STATUS                  = 0x4b\n\tPR_SET_SPECULATION_CTRL                     = 0x35\n\tPR_SET_SYSCALL_USER_DISPATCH                = 0x3b\n\tPR_SET_TAGGED_ADDR_CTRL                     = 0x37\n\tPR_SET_THP_DISABLE                          = 0x29\n\tPR_SET_TIMERSLACK                           = 0x1d\n\tPR_SET_TIMING                               = 0xe\n\tPR_SET_TSC                                  = 0x1a\n\tPR_SET_UNALIGN                              = 0x6\n\tPR_SET_VMA                                  = 0x53564d41\n\tPR_SET_VMA_ANON_NAME                        = 0x0\n\tPR_SHADOW_STACK_ENABLE                      = 0x1\n\tPR_SHADOW_STACK_PUSH                        = 0x4\n\tPR_SHADOW_STACK_WRITE                       = 0x2\n\tPR_SME_GET_VL                               = 0x40\n\tPR_SME_SET_VL                               = 0x3f\n\tPR_SME_SET_VL_ONEXEC                        = 0x40000\n\tPR_SME_VL_INHERIT                           = 0x20000\n\tPR_SME_VL_LEN_MASK                          = 0xffff\n\tPR_SPEC_DISABLE                             = 0x4\n\tPR_SPEC_DISABLE_NOEXEC                      = 0x10\n\tPR_SPEC_ENABLE                              = 0x2\n\tPR_SPEC_FORCE_DISABLE                       = 0x8\n\tPR_SPEC_INDIRECT_BRANCH                     = 0x1\n\tPR_SPEC_L1D_FLUSH                           = 0x2\n\tPR_SPEC_NOT_AFFECTED                        = 0x0\n\tPR_SPEC_PRCTL                               = 0x1\n\tPR_SPEC_STORE_BYPASS                        = 0x0\n\tPR_SVE_GET_VL                               = 0x33\n\tPR_SVE_SET_VL                               = 0x32\n\tPR_SVE_SET_VL_ONEXEC                        = 0x40000\n\tPR_SVE_VL_INHERIT                           = 0x20000\n\tPR_SVE_VL_LEN_MASK                          = 0xffff\n\tPR_SYS_DISPATCH_OFF                         = 0x0\n\tPR_SYS_DISPATCH_ON                          = 0x1\n\tPR_TAGGED_ADDR_ENABLE                       = 0x1\n\tPR_TASK_PERF_EVENTS_DISABLE                 = 0x1f\n\tPR_TASK_PERF_EVENTS_ENABLE                  = 0x20\n\tPR_TIMER_CREATE_RESTORE_IDS                 = 0x4d\n\tPR_TIMER_CREATE_RESTORE_IDS_GET             = 0x2\n\tPR_TIMER_CREATE_RESTORE_IDS_OFF             = 0x0\n\tPR_TIMER_CREATE_RESTORE_IDS_ON              = 0x1\n\tPR_TIMING_STATISTICAL                       = 0x0\n\tPR_TIMING_TIMESTAMP                         = 0x1\n\tPR_TSC_ENABLE                               = 0x1\n\tPR_TSC_SIGSEGV                              = 0x2\n\tPR_UNALIGN_NOPRINT                          = 0x1\n\tPR_UNALIGN_SIGBUS                           = 0x2\n\tPSTOREFS_MAGIC                              = 0x6165676c\n\tPTP_CLK_MAGIC                               = '='\n\tPTP_ENABLE_FEATURE                          = 0x1\n\tPTP_EXTTS_EDGES                             = 0x6\n\tPTP_EXTTS_EVENT_VALID                       = 0x1\n\tPTP_EXTTS_V1_VALID_FLAGS                    = 0x7\n\tPTP_EXTTS_VALID_FLAGS                       = 0x1f\n\tPTP_EXT_OFFSET                              = 0x10\n\tPTP_FALLING_EDGE                            = 0x4\n\tPTP_MAX_SAMPLES                             = 0x19\n\tPTP_PEROUT_DUTY_CYCLE                       = 0x2\n\tPTP_PEROUT_ONE_SHOT                         = 0x1\n\tPTP_PEROUT_PHASE                            = 0x4\n\tPTP_PEROUT_V1_VALID_FLAGS                   = 0x0\n\tPTP_PEROUT_VALID_FLAGS                      = 0x7\n\tPTP_PIN_GETFUNC                             = 0xc0603d06\n\tPTP_PIN_GETFUNC2                            = 0xc0603d0f\n\tPTP_RISING_EDGE                             = 0x2\n\tPTP_STRICT_FLAGS                            = 0x8\n\tPTP_SYS_OFFSET_EXTENDED                     = 0xc4c03d09\n\tPTP_SYS_OFFSET_EXTENDED2                    = 0xc4c03d12\n\tPTP_SYS_OFFSET_PRECISE                      = 0xc0403d08\n\tPTP_SYS_OFFSET_PRECISE2                     = 0xc0403d11\n\tPTRACE_ATTACH                               = 0x10\n\tPTRACE_CONT                                 = 0x7\n\tPTRACE_DETACH                               = 0x11\n\tPTRACE_EVENTMSG_SYSCALL_ENTRY               = 0x1\n\tPTRACE_EVENTMSG_SYSCALL_EXIT                = 0x2\n\tPTRACE_EVENT_CLONE                          = 0x3\n\tPTRACE_EVENT_EXEC                           = 0x4\n\tPTRACE_EVENT_EXIT                           = 0x6\n\tPTRACE_EVENT_FORK                           = 0x1\n\tPTRACE_EVENT_SECCOMP                        = 0x7\n\tPTRACE_EVENT_STOP                           = 0x80\n\tPTRACE_EVENT_VFORK                          = 0x2\n\tPTRACE_EVENT_VFORK_DONE                     = 0x5\n\tPTRACE_GETEVENTMSG                          = 0x4201\n\tPTRACE_GETREGS                              = 0xc\n\tPTRACE_GETREGSET                            = 0x4204\n\tPTRACE_GETSIGINFO                           = 0x4202\n\tPTRACE_GETSIGMASK                           = 0x420a\n\tPTRACE_GET_RSEQ_CONFIGURATION               = 0x420f\n\tPTRACE_GET_SYSCALL_INFO                     = 0x420e\n\tPTRACE_GET_SYSCALL_USER_DISPATCH_CONFIG     = 0x4211\n\tPTRACE_INTERRUPT                            = 0x4207\n\tPTRACE_KILL                                 = 0x8\n\tPTRACE_LISTEN                               = 0x4208\n\tPTRACE_O_EXITKILL                           = 0x100000\n\tPTRACE_O_MASK                               = 0x3000ff\n\tPTRACE_O_SUSPEND_SECCOMP                    = 0x200000\n\tPTRACE_O_TRACECLONE                         = 0x8\n\tPTRACE_O_TRACEEXEC                          = 0x10\n\tPTRACE_O_TRACEEXIT                          = 0x40\n\tPTRACE_O_TRACEFORK                          = 0x2\n\tPTRACE_O_TRACESECCOMP                       = 0x80\n\tPTRACE_O_TRACESYSGOOD                       = 0x1\n\tPTRACE_O_TRACEVFORK                         = 0x4\n\tPTRACE_O_TRACEVFORKDONE                     = 0x20\n\tPTRACE_PEEKDATA                             = 0x2\n\tPTRACE_PEEKSIGINFO                          = 0x4209\n\tPTRACE_PEEKSIGINFO_SHARED                   = 0x1\n\tPTRACE_PEEKTEXT                             = 0x1\n\tPTRACE_PEEKUSR                              = 0x3\n\tPTRACE_POKEDATA                             = 0x5\n\tPTRACE_POKETEXT                             = 0x4\n\tPTRACE_POKEUSR                              = 0x6\n\tPTRACE_SECCOMP_GET_FILTER                   = 0x420c\n\tPTRACE_SECCOMP_GET_METADATA                 = 0x420d\n\tPTRACE_SEIZE                                = 0x4206\n\tPTRACE_SETOPTIONS                           = 0x4200\n\tPTRACE_SETREGS                              = 0xd\n\tPTRACE_SETREGSET                            = 0x4205\n\tPTRACE_SETSIGINFO                           = 0x4203\n\tPTRACE_SETSIGMASK                           = 0x420b\n\tPTRACE_SET_SYSCALL_INFO                     = 0x4212\n\tPTRACE_SET_SYSCALL_USER_DISPATCH_CONFIG     = 0x4210\n\tPTRACE_SINGLESTEP                           = 0x9\n\tPTRACE_SYSCALL                              = 0x18\n\tPTRACE_SYSCALL_INFO_ENTRY                   = 0x1\n\tPTRACE_SYSCALL_INFO_EXIT                    = 0x2\n\tPTRACE_SYSCALL_INFO_NONE                    = 0x0\n\tPTRACE_SYSCALL_INFO_SECCOMP                 = 0x3\n\tPTRACE_TRACEME                              = 0x0\n\tPT_AARCH64_MEMTAG_MTE                       = 0x70000002\n\tPT_DYNAMIC                                  = 0x2\n\tPT_GNU_EH_FRAME                             = 0x6474e550\n\tPT_GNU_PROPERTY                             = 0x6474e553\n\tPT_GNU_RELRO                                = 0x6474e552\n\tPT_GNU_STACK                                = 0x6474e551\n\tPT_HIOS                                     = 0x6fffffff\n\tPT_HIPROC                                   = 0x7fffffff\n\tPT_INTERP                                   = 0x3\n\tPT_LOAD                                     = 0x1\n\tPT_LOOS                                     = 0x60000000\n\tPT_LOPROC                                   = 0x70000000\n\tPT_NOTE                                     = 0x4\n\tPT_NULL                                     = 0x0\n\tPT_PHDR                                     = 0x6\n\tPT_SHLIB                                    = 0x5\n\tPT_TLS                                      = 0x7\n\tP_ALL                                       = 0x0\n\tP_PGID                                      = 0x2\n\tP_PID                                       = 0x1\n\tP_PIDFD                                     = 0x3\n\tQNX4_SUPER_MAGIC                            = 0x2f\n\tQNX6_SUPER_MAGIC                            = 0x68191122\n\tRAMFS_MAGIC                                 = 0x858458f6\n\tRAW_PAYLOAD_DIGITAL                         = 0x3\n\tRAW_PAYLOAD_HCI                             = 0x2\n\tRAW_PAYLOAD_LLCP                            = 0x0\n\tRAW_PAYLOAD_NCI                             = 0x1\n\tRAW_PAYLOAD_PROPRIETARY                     = 0x4\n\tRDTGROUP_SUPER_MAGIC                        = 0x7655821\n\tREISERFS_SUPER_MAGIC                        = 0x52654973\n\tRENAME_EXCHANGE                             = 0x2\n\tRENAME_NOREPLACE                            = 0x1\n\tRENAME_WHITEOUT                             = 0x4\n\tRLIMIT_CORE                                 = 0x4\n\tRLIMIT_CPU                                  = 0x0\n\tRLIMIT_DATA                                 = 0x2\n\tRLIMIT_FSIZE                                = 0x1\n\tRLIMIT_LOCKS                                = 0xa\n\tRLIMIT_MSGQUEUE                             = 0xc\n\tRLIMIT_NICE                                 = 0xd\n\tRLIMIT_RTPRIO                               = 0xe\n\tRLIMIT_RTTIME                               = 0xf\n\tRLIMIT_SIGPENDING                           = 0xb\n\tRLIMIT_STACK                                = 0x3\n\tRLIM_INFINITY                               = 0xffffffffffffffff\n\tRTAX_ADVMSS                                 = 0x8\n\tRTAX_CC_ALGO                                = 0x10\n\tRTAX_CWND                                   = 0x7\n\tRTAX_FASTOPEN_NO_COOKIE                     = 0x11\n\tRTAX_FEATURES                               = 0xc\n\tRTAX_FEATURE_ALLFRAG                        = 0x8\n\tRTAX_FEATURE_ECN                            = 0x1\n\tRTAX_FEATURE_MASK                           = 0x1f\n\tRTAX_FEATURE_SACK                           = 0x2\n\tRTAX_FEATURE_TCP_USEC_TS                    = 0x10\n\tRTAX_FEATURE_TIMESTAMP                      = 0x4\n\tRTAX_HOPLIMIT                               = 0xa\n\tRTAX_INITCWND                               = 0xb\n\tRTAX_INITRWND                               = 0xe\n\tRTAX_LOCK                                   = 0x1\n\tRTAX_MAX                                    = 0x11\n\tRTAX_MTU                                    = 0x2\n\tRTAX_QUICKACK                               = 0xf\n\tRTAX_REORDERING                             = 0x9\n\tRTAX_RTO_MIN                                = 0xd\n\tRTAX_RTT                                    = 0x4\n\tRTAX_RTTVAR                                 = 0x5\n\tRTAX_SSTHRESH                               = 0x6\n\tRTAX_UNSPEC                                 = 0x0\n\tRTAX_WINDOW                                 = 0x3\n\tRTA_ALIGNTO                                 = 0x4\n\tRTA_MAX                                     = 0x1f\n\tRTCF_DIRECTSRC                              = 0x4000000\n\tRTCF_DOREDIRECT                             = 0x1000000\n\tRTCF_LOG                                    = 0x2000000\n\tRTCF_MASQ                                   = 0x400000\n\tRTCF_NAT                                    = 0x800000\n\tRTCF_VALVE                                  = 0x200000\n\tRTC_AF                                      = 0x20\n\tRTC_BSM_DIRECT                              = 0x1\n\tRTC_BSM_DISABLED                            = 0x0\n\tRTC_BSM_LEVEL                               = 0x2\n\tRTC_BSM_STANDBY                             = 0x3\n\tRTC_FEATURE_ALARM                           = 0x0\n\tRTC_FEATURE_ALARM_RES_2S                    = 0x3\n\tRTC_FEATURE_ALARM_RES_MINUTE                = 0x1\n\tRTC_FEATURE_ALARM_WAKEUP_ONLY               = 0x7\n\tRTC_FEATURE_BACKUP_SWITCH_MODE              = 0x6\n\tRTC_FEATURE_CNT                             = 0x8\n\tRTC_FEATURE_CORRECTION                      = 0x5\n\tRTC_FEATURE_NEED_WEEK_DAY                   = 0x2\n\tRTC_FEATURE_UPDATE_INTERRUPT                = 0x4\n\tRTC_IRQF                                    = 0x80\n\tRTC_MAX_FREQ                                = 0x2000\n\tRTC_PARAM_BACKUP_SWITCH_MODE                = 0x2\n\tRTC_PARAM_CORRECTION                        = 0x1\n\tRTC_PARAM_FEATURES                          = 0x0\n\tRTC_PF                                      = 0x40\n\tRTC_UF                                      = 0x10\n\tRTF_ADDRCLASSMASK                           = 0xf8000000\n\tRTF_ADDRCONF                                = 0x40000\n\tRTF_ALLONLINK                               = 0x20000\n\tRTF_BROADCAST                               = 0x10000000\n\tRTF_CACHE                                   = 0x1000000\n\tRTF_DEFAULT                                 = 0x10000\n\tRTF_DYNAMIC                                 = 0x10\n\tRTF_FLOW                                    = 0x2000000\n\tRTF_GATEWAY                                 = 0x2\n\tRTF_HOST                                    = 0x4\n\tRTF_INTERFACE                               = 0x40000000\n\tRTF_IRTT                                    = 0x100\n\tRTF_LINKRT                                  = 0x100000\n\tRTF_LOCAL                                   = 0x80000000\n\tRTF_MODIFIED                                = 0x20\n\tRTF_MSS                                     = 0x40\n\tRTF_MTU                                     = 0x40\n\tRTF_MULTICAST                               = 0x20000000\n\tRTF_NAT                                     = 0x8000000\n\tRTF_NOFORWARD                               = 0x1000\n\tRTF_NONEXTHOP                               = 0x200000\n\tRTF_NOPMTUDISC                              = 0x4000\n\tRTF_POLICY                                  = 0x4000000\n\tRTF_REINSTATE                               = 0x8\n\tRTF_REJECT                                  = 0x200\n\tRTF_STATIC                                  = 0x400\n\tRTF_THROW                                   = 0x2000\n\tRTF_UP                                      = 0x1\n\tRTF_WINDOW                                  = 0x80\n\tRTF_XRESOLVE                                = 0x800\n\tRTMGRP_DECnet_IFADDR                        = 0x1000\n\tRTMGRP_DECnet_ROUTE                         = 0x4000\n\tRTMGRP_IPV4_IFADDR                          = 0x10\n\tRTMGRP_IPV4_MROUTE                          = 0x20\n\tRTMGRP_IPV4_ROUTE                           = 0x40\n\tRTMGRP_IPV4_RULE                            = 0x80\n\tRTMGRP_IPV6_IFADDR                          = 0x100\n\tRTMGRP_IPV6_IFINFO                          = 0x800\n\tRTMGRP_IPV6_MROUTE                          = 0x200\n\tRTMGRP_IPV6_PREFIX                          = 0x20000\n\tRTMGRP_IPV6_ROUTE                           = 0x400\n\tRTMGRP_LINK                                 = 0x1\n\tRTMGRP_NEIGH                                = 0x4\n\tRTMGRP_NOTIFY                               = 0x2\n\tRTMGRP_TC                                   = 0x8\n\tRTM_BASE                                    = 0x10\n\tRTM_DELACTION                               = 0x31\n\tRTM_DELADDR                                 = 0x15\n\tRTM_DELADDRLABEL                            = 0x49\n\tRTM_DELANYCAST                              = 0x3d\n\tRTM_DELCHAIN                                = 0x65\n\tRTM_DELLINK                                 = 0x11\n\tRTM_DELLINKPROP                             = 0x6d\n\tRTM_DELMDB                                  = 0x55\n\tRTM_DELMULTICAST                            = 0x39\n\tRTM_DELNEIGH                                = 0x1d\n\tRTM_DELNETCONF                              = 0x51\n\tRTM_DELNEXTHOP                              = 0x69\n\tRTM_DELNEXTHOPBUCKET                        = 0x75\n\tRTM_DELNSID                                 = 0x59\n\tRTM_DELQDISC                                = 0x25\n\tRTM_DELROUTE                                = 0x19\n\tRTM_DELRULE                                 = 0x21\n\tRTM_DELTCLASS                               = 0x29\n\tRTM_DELTFILTER                              = 0x2d\n\tRTM_DELTUNNEL                               = 0x79\n\tRTM_DELVLAN                                 = 0x71\n\tRTM_F_CLONED                                = 0x200\n\tRTM_F_EQUALIZE                              = 0x400\n\tRTM_F_FIB_MATCH                             = 0x2000\n\tRTM_F_LOOKUP_TABLE                          = 0x1000\n\tRTM_F_NOTIFY                                = 0x100\n\tRTM_F_OFFLOAD                               = 0x4000\n\tRTM_F_OFFLOAD_FAILED                        = 0x20000000\n\tRTM_F_PREFIX                                = 0x800\n\tRTM_F_TRAP                                  = 0x8000\n\tRTM_GETACTION                               = 0x32\n\tRTM_GETADDR                                 = 0x16\n\tRTM_GETADDRLABEL                            = 0x4a\n\tRTM_GETANYCAST                              = 0x3e\n\tRTM_GETCHAIN                                = 0x66\n\tRTM_GETDCB                                  = 0x4e\n\tRTM_GETLINK                                 = 0x12\n\tRTM_GETLINKPROP                             = 0x6e\n\tRTM_GETMDB                                  = 0x56\n\tRTM_GETMULTICAST                            = 0x3a\n\tRTM_GETNEIGH                                = 0x1e\n\tRTM_GETNEIGHTBL                             = 0x42\n\tRTM_GETNETCONF                              = 0x52\n\tRTM_GETNEXTHOP                              = 0x6a\n\tRTM_GETNEXTHOPBUCKET                        = 0x76\n\tRTM_GETNSID                                 = 0x5a\n\tRTM_GETQDISC                                = 0x26\n\tRTM_GETROUTE                                = 0x1a\n\tRTM_GETRULE                                 = 0x22\n\tRTM_GETSTATS                                = 0x5e\n\tRTM_GETTCLASS                               = 0x2a\n\tRTM_GETTFILTER                              = 0x2e\n\tRTM_GETTUNNEL                               = 0x7a\n\tRTM_GETVLAN                                 = 0x72\n\tRTM_MAX                                     = 0x7b\n\tRTM_NEWACTION                               = 0x30\n\tRTM_NEWADDR                                 = 0x14\n\tRTM_NEWADDRLABEL                            = 0x48\n\tRTM_NEWANYCAST                              = 0x3c\n\tRTM_NEWCACHEREPORT                          = 0x60\n\tRTM_NEWCHAIN                                = 0x64\n\tRTM_NEWLINK                                 = 0x10\n\tRTM_NEWLINKPROP                             = 0x6c\n\tRTM_NEWMDB                                  = 0x54\n\tRTM_NEWMULTICAST                            = 0x38\n\tRTM_NEWNDUSEROPT                            = 0x44\n\tRTM_NEWNEIGH                                = 0x1c\n\tRTM_NEWNEIGHTBL                             = 0x40\n\tRTM_NEWNETCONF                              = 0x50\n\tRTM_NEWNEXTHOP                              = 0x68\n\tRTM_NEWNEXTHOPBUCKET                        = 0x74\n\tRTM_NEWNSID                                 = 0x58\n\tRTM_NEWPREFIX                               = 0x34\n\tRTM_NEWQDISC                                = 0x24\n\tRTM_NEWROUTE                                = 0x18\n\tRTM_NEWRULE                                 = 0x20\n\tRTM_NEWSTATS                                = 0x5c\n\tRTM_NEWTCLASS                               = 0x28\n\tRTM_NEWTFILTER                              = 0x2c\n\tRTM_NEWTUNNEL                               = 0x78\n\tRTM_NEWVLAN                                 = 0x70\n\tRTM_NR_FAMILIES                             = 0x1b\n\tRTM_NR_MSGTYPES                             = 0x6c\n\tRTM_SETDCB                                  = 0x4f\n\tRTM_SETLINK                                 = 0x13\n\tRTM_SETNEIGHTBL                             = 0x43\n\tRTM_SETSTATS                                = 0x5f\n\tRTNH_ALIGNTO                                = 0x4\n\tRTNH_COMPARE_MASK                           = 0x59\n\tRTNH_F_DEAD                                 = 0x1\n\tRTNH_F_LINKDOWN                             = 0x10\n\tRTNH_F_OFFLOAD                              = 0x8\n\tRTNH_F_ONLINK                               = 0x4\n\tRTNH_F_PERVASIVE                            = 0x2\n\tRTNH_F_TRAP                                 = 0x40\n\tRTNH_F_UNRESOLVED                           = 0x20\n\tRTN_MAX                                     = 0xb\n\tRTPROT_BABEL                                = 0x2a\n\tRTPROT_BGP                                  = 0xba\n\tRTPROT_BIRD                                 = 0xc\n\tRTPROT_BOOT                                 = 0x3\n\tRTPROT_DHCP                                 = 0x10\n\tRTPROT_DNROUTED                             = 0xd\n\tRTPROT_EIGRP                                = 0xc0\n\tRTPROT_GATED                                = 0x8\n\tRTPROT_ISIS                                 = 0xbb\n\tRTPROT_KEEPALIVED                           = 0x12\n\tRTPROT_KERNEL                               = 0x2\n\tRTPROT_MROUTED                              = 0x11\n\tRTPROT_MRT                                  = 0xa\n\tRTPROT_NTK                                  = 0xf\n\tRTPROT_OPENR                                = 0x63\n\tRTPROT_OSPF                                 = 0xbc\n\tRTPROT_OVN                                  = 0x54\n\tRTPROT_RA                                   = 0x9\n\tRTPROT_REDIRECT                             = 0x1\n\tRTPROT_RIP                                  = 0xbd\n\tRTPROT_STATIC                               = 0x4\n\tRTPROT_UNSPEC                               = 0x0\n\tRTPROT_XORP                                 = 0xe\n\tRTPROT_ZEBRA                                = 0xb\n\tRT_CLASS_DEFAULT                            = 0xfd\n\tRT_CLASS_LOCAL                              = 0xff\n\tRT_CLASS_MAIN                               = 0xfe\n\tRT_CLASS_MAX                                = 0xff\n\tRT_CLASS_UNSPEC                             = 0x0\n\tRUSAGE_CHILDREN                             = -0x1\n\tRUSAGE_SELF                                 = 0x0\n\tRUSAGE_THREAD                               = 0x1\n\tRWF_APPEND                                  = 0x10\n\tRWF_ATOMIC                                  = 0x40\n\tRWF_DONTCACHE                               = 0x80\n\tRWF_DSYNC                                   = 0x2\n\tRWF_HIPRI                                   = 0x1\n\tRWF_NOAPPEND                                = 0x20\n\tRWF_NOWAIT                                  = 0x8\n\tRWF_SUPPORTED                               = 0xff\n\tRWF_SYNC                                    = 0x4\n\tRWF_WRITE_LIFE_NOT_SET                      = 0x0\n\tSCHED_BATCH                                 = 0x3\n\tSCHED_DEADLINE                              = 0x6\n\tSCHED_EXT                                   = 0x7\n\tSCHED_FIFO                                  = 0x1\n\tSCHED_FLAG_ALL                              = 0x7f\n\tSCHED_FLAG_DL_OVERRUN                       = 0x4\n\tSCHED_FLAG_KEEP_ALL                         = 0x18\n\tSCHED_FLAG_KEEP_PARAMS                      = 0x10\n\tSCHED_FLAG_KEEP_POLICY                      = 0x8\n\tSCHED_FLAG_RECLAIM                          = 0x2\n\tSCHED_FLAG_RESET_ON_FORK                    = 0x1\n\tSCHED_FLAG_UTIL_CLAMP                       = 0x60\n\tSCHED_FLAG_UTIL_CLAMP_MAX                   = 0x40\n\tSCHED_FLAG_UTIL_CLAMP_MIN                   = 0x20\n\tSCHED_IDLE                                  = 0x5\n\tSCHED_NORMAL                                = 0x0\n\tSCHED_RESET_ON_FORK                         = 0x40000000\n\tSCHED_RR                                    = 0x2\n\tSCM_CREDENTIALS                             = 0x2\n\tSCM_PIDFD                                   = 0x4\n\tSCM_RIGHTS                                  = 0x1\n\tSCM_SECURITY                                = 0x3\n\tSCM_TIMESTAMP                               = 0x1d\n\tSC_LOG_FLUSH                                = 0x100000\n\tSECCOMP_ADDFD_FLAG_SEND                     = 0x2\n\tSECCOMP_ADDFD_FLAG_SETFD                    = 0x1\n\tSECCOMP_FILTER_FLAG_LOG                     = 0x2\n\tSECCOMP_FILTER_FLAG_NEW_LISTENER            = 0x8\n\tSECCOMP_FILTER_FLAG_SPEC_ALLOW              = 0x4\n\tSECCOMP_FILTER_FLAG_TSYNC                   = 0x1\n\tSECCOMP_FILTER_FLAG_TSYNC_ESRCH             = 0x10\n\tSECCOMP_FILTER_FLAG_WAIT_KILLABLE_RECV      = 0x20\n\tSECCOMP_GET_ACTION_AVAIL                    = 0x2\n\tSECCOMP_GET_NOTIF_SIZES                     = 0x3\n\tSECCOMP_IOCTL_NOTIF_RECV                    = 0xc0502100\n\tSECCOMP_IOCTL_NOTIF_SEND                    = 0xc0182101\n\tSECCOMP_IOC_MAGIC                           = '!'\n\tSECCOMP_MODE_DISABLED                       = 0x0\n\tSECCOMP_MODE_FILTER                         = 0x2\n\tSECCOMP_MODE_STRICT                         = 0x1\n\tSECCOMP_RET_ACTION                          = 0x7fff0000\n\tSECCOMP_RET_ACTION_FULL                     = 0xffff0000\n\tSECCOMP_RET_ALLOW                           = 0x7fff0000\n\tSECCOMP_RET_DATA                            = 0xffff\n\tSECCOMP_RET_ERRNO                           = 0x50000\n\tSECCOMP_RET_KILL                            = 0x0\n\tSECCOMP_RET_KILL_PROCESS                    = 0x80000000\n\tSECCOMP_RET_KILL_THREAD                     = 0x0\n\tSECCOMP_RET_LOG                             = 0x7ffc0000\n\tSECCOMP_RET_TRACE                           = 0x7ff00000\n\tSECCOMP_RET_TRAP                            = 0x30000\n\tSECCOMP_RET_USER_NOTIF                      = 0x7fc00000\n\tSECCOMP_SET_MODE_FILTER                     = 0x1\n\tSECCOMP_SET_MODE_STRICT                     = 0x0\n\tSECCOMP_USER_NOTIF_FD_SYNC_WAKE_UP          = 0x1\n\tSECCOMP_USER_NOTIF_FLAG_CONTINUE            = 0x1\n\tSECRETMEM_MAGIC                             = 0x5345434d\n\tSECURITYFS_MAGIC                            = 0x73636673\n\tSEEK_CUR                                    = 0x1\n\tSEEK_DATA                                   = 0x3\n\tSEEK_END                                    = 0x2\n\tSEEK_HOLE                                   = 0x4\n\tSEEK_MAX                                    = 0x4\n\tSEEK_SET                                    = 0x0\n\tSELINUX_MAGIC                               = 0xf97cff8c\n\tSHF_ALLOC                                   = 0x2\n\tSHF_EXCLUDE                                 = 0x8000000\n\tSHF_EXECINSTR                               = 0x4\n\tSHF_GROUP                                   = 0x200\n\tSHF_INFO_LINK                               = 0x40\n\tSHF_LINK_ORDER                              = 0x80\n\tSHF_MASKOS                                  = 0xff00000\n\tSHF_MASKPROC                                = 0xf0000000\n\tSHF_MERGE                                   = 0x10\n\tSHF_ORDERED                                 = 0x4000000\n\tSHF_OS_NONCONFORMING                        = 0x100\n\tSHF_RELA_LIVEPATCH                          = 0x100000\n\tSHF_RO_AFTER_INIT                           = 0x200000\n\tSHF_STRINGS                                 = 0x20\n\tSHF_TLS                                     = 0x400\n\tSHF_WRITE                                   = 0x1\n\tSHN_ABS                                     = 0xfff1\n\tSHN_COMMON                                  = 0xfff2\n\tSHN_HIPROC                                  = 0xff1f\n\tSHN_HIRESERVE                               = 0xffff\n\tSHN_LIVEPATCH                               = 0xff20\n\tSHN_LOPROC                                  = 0xff00\n\tSHN_LORESERVE                               = 0xff00\n\tSHN_UNDEF                                   = 0x0\n\tSHT_DYNAMIC                                 = 0x6\n\tSHT_DYNSYM                                  = 0xb\n\tSHT_HASH                                    = 0x5\n\tSHT_HIPROC                                  = 0x7fffffff\n\tSHT_HIUSER                                  = 0xffffffff\n\tSHT_LOPROC                                  = 0x70000000\n\tSHT_LOUSER                                  = 0x80000000\n\tSHT_NOBITS                                  = 0x8\n\tSHT_NOTE                                    = 0x7\n\tSHT_NULL                                    = 0x0\n\tSHT_NUM                                     = 0xc\n\tSHT_PROGBITS                                = 0x1\n\tSHT_REL                                     = 0x9\n\tSHT_RELA                                    = 0x4\n\tSHT_SHLIB                                   = 0xa\n\tSHT_STRTAB                                  = 0x3\n\tSHT_SYMTAB                                  = 0x2\n\tSHUT_RD                                     = 0x0\n\tSHUT_RDWR                                   = 0x2\n\tSHUT_WR                                     = 0x1\n\tSIOCADDDLCI                                 = 0x8980\n\tSIOCADDMULTI                                = 0x8931\n\tSIOCADDRT                                   = 0x890b\n\tSIOCBONDCHANGEACTIVE                        = 0x8995\n\tSIOCBONDENSLAVE                             = 0x8990\n\tSIOCBONDINFOQUERY                           = 0x8994\n\tSIOCBONDRELEASE                             = 0x8991\n\tSIOCBONDSETHWADDR                           = 0x8992\n\tSIOCBONDSLAVEINFOQUERY                      = 0x8993\n\tSIOCBRADDBR                                 = 0x89a0\n\tSIOCBRADDIF                                 = 0x89a2\n\tSIOCBRDELBR                                 = 0x89a1\n\tSIOCBRDELIF                                 = 0x89a3\n\tSIOCDARP                                    = 0x8953\n\tSIOCDELDLCI                                 = 0x8981\n\tSIOCDELMULTI                                = 0x8932\n\tSIOCDELRT                                   = 0x890c\n\tSIOCDEVPRIVATE                              = 0x89f0\n\tSIOCDIFADDR                                 = 0x8936\n\tSIOCDRARP                                   = 0x8960\n\tSIOCETHTOOL                                 = 0x8946\n\tSIOCGARP                                    = 0x8954\n\tSIOCGETLINKNAME                             = 0x89e0\n\tSIOCGETNODEID                               = 0x89e1\n\tSIOCGHWTSTAMP                               = 0x89b1\n\tSIOCGIFADDR                                 = 0x8915\n\tSIOCGIFBR                                   = 0x8940\n\tSIOCGIFBRDADDR                              = 0x8919\n\tSIOCGIFCONF                                 = 0x8912\n\tSIOCGIFCOUNT                                = 0x8938\n\tSIOCGIFDSTADDR                              = 0x8917\n\tSIOCGIFENCAP                                = 0x8925\n\tSIOCGIFFLAGS                                = 0x8913\n\tSIOCGIFHWADDR                               = 0x8927\n\tSIOCGIFINDEX                                = 0x8933\n\tSIOCGIFMAP                                  = 0x8970\n\tSIOCGIFMEM                                  = 0x891f\n\tSIOCGIFMETRIC                               = 0x891d\n\tSIOCGIFMTU                                  = 0x8921\n\tSIOCGIFNAME                                 = 0x8910\n\tSIOCGIFNETMASK                              = 0x891b\n\tSIOCGIFPFLAGS                               = 0x8935\n\tSIOCGIFSLAVE                                = 0x8929\n\tSIOCGIFTXQLEN                               = 0x8942\n\tSIOCGIFVLAN                                 = 0x8982\n\tSIOCGMIIPHY                                 = 0x8947\n\tSIOCGMIIREG                                 = 0x8948\n\tSIOCGPPPCSTATS                              = 0x89f2\n\tSIOCGPPPSTATS                               = 0x89f0\n\tSIOCGPPPVER                                 = 0x89f1\n\tSIOCGRARP                                   = 0x8961\n\tSIOCGSKNS                                   = 0x894c\n\tSIOCGSTAMP                                  = 0x8906\n\tSIOCGSTAMPNS                                = 0x8907\n\tSIOCGSTAMPNS_OLD                            = 0x8907\n\tSIOCGSTAMP_OLD                              = 0x8906\n\tSIOCKCMATTACH                               = 0x89e0\n\tSIOCKCMCLONE                                = 0x89e2\n\tSIOCKCMUNATTACH                             = 0x89e1\n\tSIOCOUTQNSD                                 = 0x894b\n\tSIOCPROTOPRIVATE                            = 0x89e0\n\tSIOCRTMSG                                   = 0x890d\n\tSIOCSARP                                    = 0x8955\n\tSIOCSHWTSTAMP                               = 0x89b0\n\tSIOCSIFADDR                                 = 0x8916\n\tSIOCSIFBR                                   = 0x8941\n\tSIOCSIFBRDADDR                              = 0x891a\n\tSIOCSIFDSTADDR                              = 0x8918\n\tSIOCSIFENCAP                                = 0x8926\n\tSIOCSIFFLAGS                                = 0x8914\n\tSIOCSIFHWADDR                               = 0x8924\n\tSIOCSIFHWBROADCAST                          = 0x8937\n\tSIOCSIFLINK                                 = 0x8911\n\tSIOCSIFMAP                                  = 0x8971\n\tSIOCSIFMEM                                  = 0x8920\n\tSIOCSIFMETRIC                               = 0x891e\n\tSIOCSIFMTU                                  = 0x8922\n\tSIOCSIFNAME                                 = 0x8923\n\tSIOCSIFNETMASK                              = 0x891c\n\tSIOCSIFPFLAGS                               = 0x8934\n\tSIOCSIFSLAVE                                = 0x8930\n\tSIOCSIFTXQLEN                               = 0x8943\n\tSIOCSIFVLAN                                 = 0x8983\n\tSIOCSMIIREG                                 = 0x8949\n\tSIOCSRARP                                   = 0x8962\n\tSIOCWANDEV                                  = 0x894a\n\tSK_DIAG_BPF_STORAGE_MAX                     = 0x3\n\tSK_DIAG_BPF_STORAGE_REQ_MAX                 = 0x1\n\tSMACK_MAGIC                                 = 0x43415d53\n\tSMART_AUTOSAVE                              = 0xd2\n\tSMART_AUTO_OFFLINE                          = 0xdb\n\tSMART_DISABLE                               = 0xd9\n\tSMART_ENABLE                                = 0xd8\n\tSMART_HCYL_PASS                             = 0xc2\n\tSMART_IMMEDIATE_OFFLINE                     = 0xd4\n\tSMART_LCYL_PASS                             = 0x4f\n\tSMART_READ_LOG_SECTOR                       = 0xd5\n\tSMART_READ_THRESHOLDS                       = 0xd1\n\tSMART_READ_VALUES                           = 0xd0\n\tSMART_SAVE                                  = 0xd3\n\tSMART_STATUS                                = 0xda\n\tSMART_WRITE_LOG_SECTOR                      = 0xd6\n\tSMART_WRITE_THRESHOLDS                      = 0xd7\n\tSMB2_SUPER_MAGIC                            = 0xfe534d42\n\tSMB_SUPER_MAGIC                             = 0x517b\n\tSOCKFS_MAGIC                                = 0x534f434b\n\tSOCK_BUF_LOCK_MASK                          = 0x3\n\tSOCK_DCCP                                   = 0x6\n\tSOCK_DESTROY                                = 0x15\n\tSOCK_DIAG_BY_FAMILY                         = 0x14\n\tSOCK_IOC_TYPE                               = 0x89\n\tSOCK_PACKET                                 = 0xa\n\tSOCK_RAW                                    = 0x3\n\tSOCK_RCVBUF_LOCK                            = 0x2\n\tSOCK_RDM                                    = 0x4\n\tSOCK_SEQPACKET                              = 0x5\n\tSOCK_SNDBUF_LOCK                            = 0x1\n\tSOCK_TXREHASH_DEFAULT                       = 0xff\n\tSOCK_TXREHASH_DISABLED                      = 0x0\n\tSOCK_TXREHASH_ENABLED                       = 0x1\n\tSOL_AAL                                     = 0x109\n\tSOL_ALG                                     = 0x117\n\tSOL_ATM                                     = 0x108\n\tSOL_CAIF                                    = 0x116\n\tSOL_CAN_BASE                                = 0x64\n\tSOL_CAN_RAW                                 = 0x65\n\tSOL_DCCP                                    = 0x10d\n\tSOL_DECNET                                  = 0x105\n\tSOL_ICMPV6                                  = 0x3a\n\tSOL_IP                                      = 0x0\n\tSOL_IPV6                                    = 0x29\n\tSOL_IRDA                                    = 0x10a\n\tSOL_IUCV                                    = 0x115\n\tSOL_KCM                                     = 0x119\n\tSOL_LLC                                     = 0x10c\n\tSOL_MCTP                                    = 0x11d\n\tSOL_MPTCP                                   = 0x11c\n\tSOL_NETBEUI                                 = 0x10b\n\tSOL_NETLINK                                 = 0x10e\n\tSOL_NFC                                     = 0x118\n\tSOL_PACKET                                  = 0x107\n\tSOL_PNPIPE                                  = 0x113\n\tSOL_PPPOL2TP                                = 0x111\n\tSOL_RAW                                     = 0xff\n\tSOL_RDS                                     = 0x114\n\tSOL_RXRPC                                   = 0x110\n\tSOL_SMC                                     = 0x11e\n\tSOL_TCP                                     = 0x6\n\tSOL_TIPC                                    = 0x10f\n\tSOL_TLS                                     = 0x11a\n\tSOL_UDP                                     = 0x11\n\tSOL_VSOCK                                   = 0x11f\n\tSOL_X25                                     = 0x106\n\tSOL_XDP                                     = 0x11b\n\tSOMAXCONN                                   = 0x1000\n\tSO_ATTACH_FILTER                            = 0x1a\n\tSO_DEBUG                                    = 0x1\n\tSO_DETACH_BPF                               = 0x1b\n\tSO_DETACH_FILTER                            = 0x1b\n\tSO_EE_CODE_TXTIME_INVALID_PARAM             = 0x1\n\tSO_EE_CODE_TXTIME_MISSED                    = 0x2\n\tSO_EE_CODE_ZEROCOPY_COPIED                  = 0x1\n\tSO_EE_ORIGIN_ICMP                           = 0x2\n\tSO_EE_ORIGIN_ICMP6                          = 0x3\n\tSO_EE_ORIGIN_LOCAL                          = 0x1\n\tSO_EE_ORIGIN_NONE                           = 0x0\n\tSO_EE_ORIGIN_TIMESTAMPING                   = 0x4\n\tSO_EE_ORIGIN_TXSTATUS                       = 0x4\n\tSO_EE_ORIGIN_TXTIME                         = 0x6\n\tSO_EE_ORIGIN_ZEROCOPY                       = 0x5\n\tSO_EE_RFC4884_FLAG_INVALID                  = 0x1\n\tSO_GET_FILTER                               = 0x1a\n\tSO_NO_CHECK                                 = 0xb\n\tSO_PEERNAME                                 = 0x1c\n\tSO_PRIORITY                                 = 0xc\n\tSO_TIMESTAMP                                = 0x1d\n\tSO_TIMESTAMP_OLD                            = 0x1d\n\tSO_VM_SOCKETS_BUFFER_MAX_SIZE               = 0x2\n\tSO_VM_SOCKETS_BUFFER_MIN_SIZE               = 0x1\n\tSO_VM_SOCKETS_BUFFER_SIZE                   = 0x0\n\tSO_VM_SOCKETS_CONNECT_TIMEOUT               = 0x6\n\tSO_VM_SOCKETS_CONNECT_TIMEOUT_NEW           = 0x8\n\tSO_VM_SOCKETS_CONNECT_TIMEOUT_OLD           = 0x6\n\tSO_VM_SOCKETS_NONBLOCK_TXRX                 = 0x7\n\tSO_VM_SOCKETS_PEER_HOST_VM_ID               = 0x3\n\tSO_VM_SOCKETS_TRUSTED                       = 0x5\n\tSPLICE_F_GIFT                               = 0x8\n\tSPLICE_F_MORE                               = 0x4\n\tSPLICE_F_MOVE                               = 0x1\n\tSPLICE_F_NONBLOCK                           = 0x2\n\tSQUASHFS_MAGIC                              = 0x73717368\n\tSTACK_END_MAGIC                             = 0x57ac6e9d\n\tSTATX_ALL                                   = 0xfff\n\tSTATX_ATIME                                 = 0x20\n\tSTATX_ATTR_APPEND                           = 0x20\n\tSTATX_ATTR_AUTOMOUNT                        = 0x1000\n\tSTATX_ATTR_COMPRESSED                       = 0x4\n\tSTATX_ATTR_DAX                              = 0x200000\n\tSTATX_ATTR_ENCRYPTED                        = 0x800\n\tSTATX_ATTR_IMMUTABLE                        = 0x10\n\tSTATX_ATTR_MOUNT_ROOT                       = 0x2000\n\tSTATX_ATTR_NODUMP                           = 0x40\n\tSTATX_ATTR_VERITY                           = 0x100000\n\tSTATX_ATTR_WRITE_ATOMIC                     = 0x400000\n\tSTATX_BASIC_STATS                           = 0x7ff\n\tSTATX_BLOCKS                                = 0x400\n\tSTATX_BTIME                                 = 0x800\n\tSTATX_CTIME                                 = 0x80\n\tSTATX_DIOALIGN                              = 0x2000\n\tSTATX_DIO_READ_ALIGN                        = 0x20000\n\tSTATX_GID                                   = 0x10\n\tSTATX_INO                                   = 0x100\n\tSTATX_MNT_ID                                = 0x1000\n\tSTATX_MNT_ID_UNIQUE                         = 0x4000\n\tSTATX_MODE                                  = 0x2\n\tSTATX_MTIME                                 = 0x40\n\tSTATX_NLINK                                 = 0x4\n\tSTATX_SIZE                                  = 0x200\n\tSTATX_SUBVOL                                = 0x8000\n\tSTATX_TYPE                                  = 0x1\n\tSTATX_UID                                   = 0x8\n\tSTATX_WRITE_ATOMIC                          = 0x10000\n\tSTATX__RESERVED                             = 0x80000000\n\tSTB_GLOBAL                                  = 0x1\n\tSTB_LOCAL                                   = 0x0\n\tSTB_WEAK                                    = 0x2\n\tSTT_COMMON                                  = 0x5\n\tSTT_FILE                                    = 0x4\n\tSTT_FUNC                                    = 0x2\n\tSTT_NOTYPE                                  = 0x0\n\tSTT_OBJECT                                  = 0x1\n\tSTT_SECTION                                 = 0x3\n\tSTT_TLS                                     = 0x6\n\tSYNC_FILE_RANGE_WAIT_AFTER                  = 0x4\n\tSYNC_FILE_RANGE_WAIT_BEFORE                 = 0x1\n\tSYNC_FILE_RANGE_WRITE                       = 0x2\n\tSYNC_FILE_RANGE_WRITE_AND_WAIT              = 0x7\n\tSYSFS_MAGIC                                 = 0x62656572\n\tS_BLKSIZE                                   = 0x200\n\tS_IEXEC                                     = 0x40\n\tS_IFBLK                                     = 0x6000\n\tS_IFCHR                                     = 0x2000\n\tS_IFDIR                                     = 0x4000\n\tS_IFIFO                                     = 0x1000\n\tS_IFLNK                                     = 0xa000\n\tS_IFMT                                      = 0xf000\n\tS_IFREG                                     = 0x8000\n\tS_IFSOCK                                    = 0xc000\n\tS_IREAD                                     = 0x100\n\tS_IRGRP                                     = 0x20\n\tS_IROTH                                     = 0x4\n\tS_IRUSR                                     = 0x100\n\tS_IRWXG                                     = 0x38\n\tS_IRWXO                                     = 0x7\n\tS_IRWXU                                     = 0x1c0\n\tS_ISGID                                     = 0x400\n\tS_ISUID                                     = 0x800\n\tS_ISVTX                                     = 0x200\n\tS_IWGRP                                     = 0x10\n\tS_IWOTH                                     = 0x2\n\tS_IWRITE                                    = 0x80\n\tS_IWUSR                                     = 0x80\n\tS_IXGRP                                     = 0x8\n\tS_IXOTH                                     = 0x1\n\tS_IXUSR                                     = 0x40\n\tTAB0                                        = 0x0\n\tTASKSTATS_CMD_ATTR_MAX                      = 0x4\n\tTASKSTATS_CMD_MAX                           = 0x2\n\tTASKSTATS_GENL_NAME                         = \"TASKSTATS\"\n\tTASKSTATS_GENL_VERSION                      = 0x1\n\tTASKSTATS_TYPE_MAX                          = 0x6\n\tTASKSTATS_VERSION                           = 0x10\n\tTCIFLUSH                                    = 0x0\n\tTCIOFF                                      = 0x2\n\tTCIOFLUSH                                   = 0x2\n\tTCION                                       = 0x3\n\tTCOFLUSH                                    = 0x1\n\tTCOOFF                                      = 0x0\n\tTCOON                                       = 0x1\n\tTCPOPT_EOL                                  = 0x0\n\tTCPOPT_MAXSEG                               = 0x2\n\tTCPOPT_NOP                                  = 0x1\n\tTCPOPT_SACK                                 = 0x5\n\tTCPOPT_SACK_PERMITTED                       = 0x4\n\tTCPOPT_TIMESTAMP                            = 0x8\n\tTCPOPT_TSTAMP_HDR                           = 0x101080a\n\tTCPOPT_WINDOW                               = 0x3\n\tTCP_CC_INFO                                 = 0x1a\n\tTCP_CM_INQ                                  = 0x24\n\tTCP_CONGESTION                              = 0xd\n\tTCP_COOKIE_IN_ALWAYS                        = 0x1\n\tTCP_COOKIE_MAX                              = 0x10\n\tTCP_COOKIE_MIN                              = 0x8\n\tTCP_COOKIE_OUT_NEVER                        = 0x2\n\tTCP_COOKIE_PAIR_SIZE                        = 0x20\n\tTCP_COOKIE_TRANSACTIONS                     = 0xf\n\tTCP_CORK                                    = 0x3\n\tTCP_DEFER_ACCEPT                            = 0x9\n\tTCP_FASTOPEN                                = 0x17\n\tTCP_FASTOPEN_CONNECT                        = 0x1e\n\tTCP_FASTOPEN_KEY                            = 0x21\n\tTCP_FASTOPEN_NO_COOKIE                      = 0x22\n\tTCP_INFO                                    = 0xb\n\tTCP_INQ                                     = 0x24\n\tTCP_KEEPCNT                                 = 0x6\n\tTCP_KEEPIDLE                                = 0x4\n\tTCP_KEEPINTVL                               = 0x5\n\tTCP_LINGER2                                 = 0x8\n\tTCP_MAXSEG                                  = 0x2\n\tTCP_MAXWIN                                  = 0xffff\n\tTCP_MAX_WINSHIFT                            = 0xe\n\tTCP_MD5SIG                                  = 0xe\n\tTCP_MD5SIG_EXT                              = 0x20\n\tTCP_MD5SIG_FLAG_IFINDEX                     = 0x2\n\tTCP_MD5SIG_FLAG_PREFIX                      = 0x1\n\tTCP_MD5SIG_MAXKEYLEN                        = 0x50\n\tTCP_MSS                                     = 0x200\n\tTCP_MSS_DEFAULT                             = 0x218\n\tTCP_MSS_DESIRED                             = 0x4c4\n\tTCP_NODELAY                                 = 0x1\n\tTCP_NOTSENT_LOWAT                           = 0x19\n\tTCP_QUEUE_SEQ                               = 0x15\n\tTCP_QUICKACK                                = 0xc\n\tTCP_REPAIR                                  = 0x13\n\tTCP_REPAIR_OFF                              = 0x0\n\tTCP_REPAIR_OFF_NO_WP                        = -0x1\n\tTCP_REPAIR_ON                               = 0x1\n\tTCP_REPAIR_OPTIONS                          = 0x16\n\tTCP_REPAIR_QUEUE                            = 0x14\n\tTCP_REPAIR_WINDOW                           = 0x1d\n\tTCP_SAVED_SYN                               = 0x1c\n\tTCP_SAVE_SYN                                = 0x1b\n\tTCP_SYNCNT                                  = 0x7\n\tTCP_S_DATA_IN                               = 0x4\n\tTCP_S_DATA_OUT                              = 0x8\n\tTCP_THIN_DUPACK                             = 0x11\n\tTCP_THIN_LINEAR_TIMEOUTS                    = 0x10\n\tTCP_TIMESTAMP                               = 0x18\n\tTCP_TX_DELAY                                = 0x25\n\tTCP_ULP                                     = 0x1f\n\tTCP_USER_TIMEOUT                            = 0x12\n\tTCP_WINDOW_CLAMP                            = 0xa\n\tTCP_ZEROCOPY_RECEIVE                        = 0x23\n\tTFD_TIMER_ABSTIME                           = 0x1\n\tTFD_TIMER_CANCEL_ON_SET                     = 0x2\n\tTIMER_ABSTIME                               = 0x1\n\tTIOCM_DTR                                   = 0x2\n\tTIOCM_LE                                    = 0x1\n\tTIOCM_RTS                                   = 0x4\n\tTIOCPKT_DATA                                = 0x0\n\tTIOCPKT_DOSTOP                              = 0x20\n\tTIOCPKT_FLUSHREAD                           = 0x1\n\tTIOCPKT_FLUSHWRITE                          = 0x2\n\tTIOCPKT_IOCTL                               = 0x40\n\tTIOCPKT_NOSTOP                              = 0x10\n\tTIOCPKT_START                               = 0x8\n\tTIOCPKT_STOP                                = 0x4\n\tTIPC_ADDR_ID                                = 0x3\n\tTIPC_ADDR_MCAST                             = 0x1\n\tTIPC_ADDR_NAME                              = 0x2\n\tTIPC_ADDR_NAMESEQ                           = 0x1\n\tTIPC_AEAD_ALG_NAME                          = 0x20\n\tTIPC_AEAD_KEYLEN_MAX                        = 0x24\n\tTIPC_AEAD_KEYLEN_MIN                        = 0x14\n\tTIPC_AEAD_KEY_SIZE_MAX                      = 0x48\n\tTIPC_CFG_SRV                                = 0x0\n\tTIPC_CLUSTER_BITS                           = 0xc\n\tTIPC_CLUSTER_MASK                           = 0xfff000\n\tTIPC_CLUSTER_OFFSET                         = 0xc\n\tTIPC_CLUSTER_SIZE                           = 0xfff\n\tTIPC_CONN_SHUTDOWN                          = 0x5\n\tTIPC_CONN_TIMEOUT                           = 0x82\n\tTIPC_CRITICAL_IMPORTANCE                    = 0x3\n\tTIPC_DESTNAME                               = 0x3\n\tTIPC_DEST_DROPPABLE                         = 0x81\n\tTIPC_ERRINFO                                = 0x1\n\tTIPC_ERR_NO_NAME                            = 0x1\n\tTIPC_ERR_NO_NODE                            = 0x3\n\tTIPC_ERR_NO_PORT                            = 0x2\n\tTIPC_ERR_OVERLOAD                           = 0x4\n\tTIPC_GROUP_JOIN                             = 0x87\n\tTIPC_GROUP_LEAVE                            = 0x88\n\tTIPC_GROUP_LOOPBACK                         = 0x1\n\tTIPC_GROUP_MEMBER_EVTS                      = 0x2\n\tTIPC_HIGH_IMPORTANCE                        = 0x2\n\tTIPC_IMPORTANCE                             = 0x7f\n\tTIPC_LINK_STATE                             = 0x2\n\tTIPC_LOW_IMPORTANCE                         = 0x0\n\tTIPC_MAX_BEARER_NAME                        = 0x20\n\tTIPC_MAX_IF_NAME                            = 0x10\n\tTIPC_MAX_LINK_NAME                          = 0x44\n\tTIPC_MAX_MEDIA_NAME                         = 0x10\n\tTIPC_MAX_USER_MSG_SIZE                      = 0x101d0\n\tTIPC_MCAST_BROADCAST                        = 0x85\n\tTIPC_MCAST_REPLICAST                        = 0x86\n\tTIPC_MEDIUM_IMPORTANCE                      = 0x1\n\tTIPC_NODEID_LEN                             = 0x10\n\tTIPC_NODELAY                                = 0x8a\n\tTIPC_NODE_BITS                              = 0xc\n\tTIPC_NODE_MASK                              = 0xfff\n\tTIPC_NODE_OFFSET                            = 0x0\n\tTIPC_NODE_RECVQ_DEPTH                       = 0x83\n\tTIPC_NODE_SIZE                              = 0xfff\n\tTIPC_NODE_STATE                             = 0x0\n\tTIPC_OK                                     = 0x0\n\tTIPC_PUBLISHED                              = 0x1\n\tTIPC_REKEYING_NOW                           = 0xffffffff\n\tTIPC_RESERVED_TYPES                         = 0x40\n\tTIPC_RETDATA                                = 0x2\n\tTIPC_SERVICE_ADDR                           = 0x2\n\tTIPC_SERVICE_RANGE                          = 0x1\n\tTIPC_SOCKET_ADDR                            = 0x3\n\tTIPC_SOCK_RECVQ_DEPTH                       = 0x84\n\tTIPC_SOCK_RECVQ_USED                        = 0x89\n\tTIPC_SRC_DROPPABLE                          = 0x80\n\tTIPC_SUBSCR_TIMEOUT                         = 0x3\n\tTIPC_SUB_CANCEL                             = 0x4\n\tTIPC_SUB_PORTS                              = 0x1\n\tTIPC_SUB_SERVICE                            = 0x2\n\tTIPC_TOP_SRV                                = 0x1\n\tTIPC_WAIT_FOREVER                           = 0xffffffff\n\tTIPC_WITHDRAWN                              = 0x2\n\tTIPC_ZONE_BITS                              = 0x8\n\tTIPC_ZONE_CLUSTER_MASK                      = 0xfffff000\n\tTIPC_ZONE_MASK                              = 0xff000000\n\tTIPC_ZONE_OFFSET                            = 0x18\n\tTIPC_ZONE_SCOPE                             = 0x1\n\tTIPC_ZONE_SIZE                              = 0xff\n\tTMPFS_MAGIC                                 = 0x1021994\n\tTPACKET_ALIGNMENT                           = 0x10\n\tTPACKET_HDRLEN                              = 0x34\n\tTP_STATUS_AVAILABLE                         = 0x0\n\tTP_STATUS_BLK_TMO                           = 0x20\n\tTP_STATUS_COPY                              = 0x2\n\tTP_STATUS_CSUMNOTREADY                      = 0x8\n\tTP_STATUS_CSUM_VALID                        = 0x80\n\tTP_STATUS_GSO_TCP                           = 0x100\n\tTP_STATUS_KERNEL                            = 0x0\n\tTP_STATUS_LOSING                            = 0x4\n\tTP_STATUS_SENDING                           = 0x2\n\tTP_STATUS_SEND_REQUEST                      = 0x1\n\tTP_STATUS_TS_RAW_HARDWARE                   = 0x80000000\n\tTP_STATUS_TS_SOFTWARE                       = 0x20000000\n\tTP_STATUS_TS_SYS_HARDWARE                   = 0x40000000\n\tTP_STATUS_USER                              = 0x1\n\tTP_STATUS_VLAN_TPID_VALID                   = 0x40\n\tTP_STATUS_VLAN_VALID                        = 0x10\n\tTP_STATUS_WRONG_FORMAT                      = 0x4\n\tTRACEFS_MAGIC                               = 0x74726163\n\tTS_COMM_LEN                                 = 0x20\n\tUBI_IOCECNFO                                = 0xc01c6f06\n\tUDF_SUPER_MAGIC                             = 0x15013346\n\tUDP_CORK                                    = 0x1\n\tUDP_ENCAP                                   = 0x64\n\tUDP_ENCAP_ESPINUDP                          = 0x2\n\tUDP_ENCAP_ESPINUDP_NON_IKE                  = 0x1\n\tUDP_ENCAP_GTP0                              = 0x4\n\tUDP_ENCAP_GTP1U                             = 0x5\n\tUDP_ENCAP_L2TPINUDP                         = 0x3\n\tUDP_GRO                                     = 0x68\n\tUDP_NO_CHECK6_RX                            = 0x66\n\tUDP_NO_CHECK6_TX                            = 0x65\n\tUDP_SEGMENT                                 = 0x67\n\tUMOUNT_NOFOLLOW                             = 0x8\n\tUSBDEVICE_SUPER_MAGIC                       = 0x9fa2\n\tUTIME_NOW                                   = 0x3fffffff\n\tUTIME_OMIT                                  = 0x3ffffffe\n\tV9FS_MAGIC                                  = 0x1021997\n\tVERASE                                      = 0x2\n\tVER_FLG_BASE                                = 0x1\n\tVER_FLG_WEAK                                = 0x2\n\tVINTR                                       = 0x0\n\tVKILL                                       = 0x3\n\tVLNEXT                                      = 0xf\n\tVMADDR_CID_ANY                              = 0xffffffff\n\tVMADDR_CID_HOST                             = 0x2\n\tVMADDR_CID_HYPERVISOR                       = 0x0\n\tVMADDR_CID_LOCAL                            = 0x1\n\tVMADDR_FLAG_TO_HOST                         = 0x1\n\tVMADDR_PORT_ANY                             = 0xffffffff\n\tVM_SOCKETS_INVALID_VERSION                  = 0xffffffff\n\tVQUIT                                       = 0x1\n\tVT0                                         = 0x0\n\tWAKE_MAGIC                                  = 0x20\n\tWALL                                        = 0x40000000\n\tWCLONE                                      = 0x80000000\n\tWCONTINUED                                  = 0x8\n\tWDIOC_SETPRETIMEOUT                         = 0xc0045708\n\tWDIOC_SETTIMEOUT                            = 0xc0045706\n\tWDIOF_ALARMONLY                             = 0x400\n\tWDIOF_CARDRESET                             = 0x20\n\tWDIOF_EXTERN1                               = 0x4\n\tWDIOF_EXTERN2                               = 0x8\n\tWDIOF_FANFAULT                              = 0x2\n\tWDIOF_KEEPALIVEPING                         = 0x8000\n\tWDIOF_MAGICCLOSE                            = 0x100\n\tWDIOF_OVERHEAT                              = 0x1\n\tWDIOF_POWEROVER                             = 0x40\n\tWDIOF_POWERUNDER                            = 0x10\n\tWDIOF_PRETIMEOUT                            = 0x200\n\tWDIOF_SETTIMEOUT                            = 0x80\n\tWDIOF_UNKNOWN                               = -0x1\n\tWDIOS_DISABLECARD                           = 0x1\n\tWDIOS_ENABLECARD                            = 0x2\n\tWDIOS_TEMPPANIC                             = 0x4\n\tWDIOS_UNKNOWN                               = -0x1\n\tWEXITED                                     = 0x4\n\tWGALLOWEDIP_A_MAX                           = 0x4\n\tWGDEVICE_A_MAX                              = 0x8\n\tWGPEER_A_MAX                                = 0xa\n\tWG_CMD_MAX                                  = 0x1\n\tWG_GENL_NAME                                = \"wireguard\"\n\tWG_GENL_VERSION                             = 0x1\n\tWG_KEY_LEN                                  = 0x20\n\tWIN_ACKMEDIACHANGE                          = 0xdb\n\tWIN_CHECKPOWERMODE1                         = 0xe5\n\tWIN_CHECKPOWERMODE2                         = 0x98\n\tWIN_DEVICE_RESET                            = 0x8\n\tWIN_DIAGNOSE                                = 0x90\n\tWIN_DOORLOCK                                = 0xde\n\tWIN_DOORUNLOCK                              = 0xdf\n\tWIN_DOWNLOAD_MICROCODE                      = 0x92\n\tWIN_FLUSH_CACHE                             = 0xe7\n\tWIN_FLUSH_CACHE_EXT                         = 0xea\n\tWIN_FORMAT                                  = 0x50\n\tWIN_GETMEDIASTATUS                          = 0xda\n\tWIN_IDENTIFY                                = 0xec\n\tWIN_IDENTIFY_DMA                            = 0xee\n\tWIN_IDLEIMMEDIATE                           = 0xe1\n\tWIN_INIT                                    = 0x60\n\tWIN_MEDIAEJECT                              = 0xed\n\tWIN_MULTREAD                                = 0xc4\n\tWIN_MULTREAD_EXT                            = 0x29\n\tWIN_MULTWRITE                               = 0xc5\n\tWIN_MULTWRITE_EXT                           = 0x39\n\tWIN_NOP                                     = 0x0\n\tWIN_PACKETCMD                               = 0xa0\n\tWIN_PIDENTIFY                               = 0xa1\n\tWIN_POSTBOOT                                = 0xdc\n\tWIN_PREBOOT                                 = 0xdd\n\tWIN_QUEUED_SERVICE                          = 0xa2\n\tWIN_READ                                    = 0x20\n\tWIN_READDMA                                 = 0xc8\n\tWIN_READDMA_EXT                             = 0x25\n\tWIN_READDMA_ONCE                            = 0xc9\n\tWIN_READDMA_QUEUED                          = 0xc7\n\tWIN_READDMA_QUEUED_EXT                      = 0x26\n\tWIN_READ_BUFFER                             = 0xe4\n\tWIN_READ_EXT                                = 0x24\n\tWIN_READ_LONG                               = 0x22\n\tWIN_READ_LONG_ONCE                          = 0x23\n\tWIN_READ_NATIVE_MAX                         = 0xf8\n\tWIN_READ_NATIVE_MAX_EXT                     = 0x27\n\tWIN_READ_ONCE                               = 0x21\n\tWIN_RECAL                                   = 0x10\n\tWIN_RESTORE                                 = 0x10\n\tWIN_SECURITY_DISABLE                        = 0xf6\n\tWIN_SECURITY_ERASE_PREPARE                  = 0xf3\n\tWIN_SECURITY_ERASE_UNIT                     = 0xf4\n\tWIN_SECURITY_FREEZE_LOCK                    = 0xf5\n\tWIN_SECURITY_SET_PASS                       = 0xf1\n\tWIN_SECURITY_UNLOCK                         = 0xf2\n\tWIN_SEEK                                    = 0x70\n\tWIN_SETFEATURES                             = 0xef\n\tWIN_SETIDLE1                                = 0xe3\n\tWIN_SETIDLE2                                = 0x97\n\tWIN_SETMULT                                 = 0xc6\n\tWIN_SET_MAX                                 = 0xf9\n\tWIN_SET_MAX_EXT                             = 0x37\n\tWIN_SLEEPNOW1                               = 0xe6\n\tWIN_SLEEPNOW2                               = 0x99\n\tWIN_SMART                                   = 0xb0\n\tWIN_SPECIFY                                 = 0x91\n\tWIN_SRST                                    = 0x8\n\tWIN_STANDBY                                 = 0xe2\n\tWIN_STANDBY2                                = 0x96\n\tWIN_STANDBYNOW1                             = 0xe0\n\tWIN_STANDBYNOW2                             = 0x94\n\tWIN_VERIFY                                  = 0x40\n\tWIN_VERIFY_EXT                              = 0x42\n\tWIN_VERIFY_ONCE                             = 0x41\n\tWIN_WRITE                                   = 0x30\n\tWIN_WRITEDMA                                = 0xca\n\tWIN_WRITEDMA_EXT                            = 0x35\n\tWIN_WRITEDMA_ONCE                           = 0xcb\n\tWIN_WRITEDMA_QUEUED                         = 0xcc\n\tWIN_WRITEDMA_QUEUED_EXT                     = 0x36\n\tWIN_WRITE_BUFFER                            = 0xe8\n\tWIN_WRITE_EXT                               = 0x34\n\tWIN_WRITE_LONG                              = 0x32\n\tWIN_WRITE_LONG_ONCE                         = 0x33\n\tWIN_WRITE_ONCE                              = 0x31\n\tWIN_WRITE_SAME                              = 0xe9\n\tWIN_WRITE_VERIFY                            = 0x3c\n\tWNOHANG                                     = 0x1\n\tWNOTHREAD                                   = 0x20000000\n\tWNOWAIT                                     = 0x1000000\n\tWSTOPPED                                    = 0x2\n\tWUNTRACED                                   = 0x2\n\tXATTR_CREATE                                = 0x1\n\tXATTR_REPLACE                               = 0x2\n\tXDP_COPY                                    = 0x2\n\tXDP_FLAGS_DRV_MODE                          = 0x4\n\tXDP_FLAGS_HW_MODE                           = 0x8\n\tXDP_FLAGS_MASK                              = 0x1f\n\tXDP_FLAGS_MODES                             = 0xe\n\tXDP_FLAGS_REPLACE                           = 0x10\n\tXDP_FLAGS_SKB_MODE                          = 0x2\n\tXDP_FLAGS_UPDATE_IF_NOEXIST                 = 0x1\n\tXDP_MMAP_OFFSETS                            = 0x1\n\tXDP_OPTIONS                                 = 0x8\n\tXDP_OPTIONS_ZEROCOPY                        = 0x1\n\tXDP_PACKET_HEADROOM                         = 0x100\n\tXDP_PGOFF_RX_RING                           = 0x0\n\tXDP_PGOFF_TX_RING                           = 0x80000000\n\tXDP_PKT_CONTD                               = 0x1\n\tXDP_RING_NEED_WAKEUP                        = 0x1\n\tXDP_RX_RING                                 = 0x2\n\tXDP_SHARED_UMEM                             = 0x1\n\tXDP_STATISTICS                              = 0x7\n\tXDP_TXMD_FLAGS_CHECKSUM                     = 0x2\n\tXDP_TXMD_FLAGS_LAUNCH_TIME                  = 0x4\n\tXDP_TXMD_FLAGS_TIMESTAMP                    = 0x1\n\tXDP_TX_METADATA                             = 0x2\n\tXDP_TX_RING                                 = 0x3\n\tXDP_UMEM_COMPLETION_RING                    = 0x6\n\tXDP_UMEM_FILL_RING                          = 0x5\n\tXDP_UMEM_PGOFF_COMPLETION_RING              = 0x180000000\n\tXDP_UMEM_PGOFF_FILL_RING                    = 0x100000000\n\tXDP_UMEM_REG                                = 0x4\n\tXDP_UMEM_TX_METADATA_LEN                    = 0x4\n\tXDP_UMEM_TX_SW_CSUM                         = 0x2\n\tXDP_UMEM_UNALIGNED_CHUNK_FLAG               = 0x1\n\tXDP_USE_NEED_WAKEUP                         = 0x8\n\tXDP_USE_SG                                  = 0x10\n\tXDP_ZEROCOPY                                = 0x4\n\tXENFS_SUPER_MAGIC                           = 0xabba1974\n\tXFS_SUPER_MAGIC                             = 0x58465342\n\tZONEFS_MAGIC                                = 0x5a4f4653\n\t_HIDIOCGRAWNAME_LEN                         = 0x80\n\t_HIDIOCGRAWPHYS_LEN                         = 0x40\n\t_HIDIOCGRAWUNIQ_LEN                         = 0x40\n)\n\n// Errors\nconst (\n\tE2BIG       = syscall.Errno(0x7)\n\tEACCES      = syscall.Errno(0xd)\n\tEAGAIN      = syscall.Errno(0xb)\n\tEBADF       = syscall.Errno(0x9)\n\tEBUSY       = syscall.Errno(0x10)\n\tECHILD      = syscall.Errno(0xa)\n\tEDOM        = syscall.Errno(0x21)\n\tEEXIST      = syscall.Errno(0x11)\n\tEFAULT      = syscall.Errno(0xe)\n\tEFBIG       = syscall.Errno(0x1b)\n\tEINTR       = syscall.Errno(0x4)\n\tEINVAL      = syscall.Errno(0x16)\n\tEIO         = syscall.Errno(0x5)\n\tEISDIR      = syscall.Errno(0x15)\n\tEMFILE      = syscall.Errno(0x18)\n\tEMLINK      = syscall.Errno(0x1f)\n\tENFILE      = syscall.Errno(0x17)\n\tENODEV      = syscall.Errno(0x13)\n\tENOENT      = syscall.Errno(0x2)\n\tENOEXEC     = syscall.Errno(0x8)\n\tENOMEM      = syscall.Errno(0xc)\n\tENOSPC      = syscall.Errno(0x1c)\n\tENOTBLK     = syscall.Errno(0xf)\n\tENOTDIR     = syscall.Errno(0x14)\n\tENOTTY      = syscall.Errno(0x19)\n\tENXIO       = syscall.Errno(0x6)\n\tEPERM       = syscall.Errno(0x1)\n\tEPIPE       = syscall.Errno(0x20)\n\tERANGE      = syscall.Errno(0x22)\n\tEROFS       = syscall.Errno(0x1e)\n\tESPIPE      = syscall.Errno(0x1d)\n\tESRCH       = syscall.Errno(0x3)\n\tETXTBSY     = syscall.Errno(0x1a)\n\tEWOULDBLOCK = syscall.Errno(0xb)\n\tEXDEV       = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT = syscall.Signal(0x6)\n\tSIGALRM = syscall.Signal(0xe)\n\tSIGFPE  = syscall.Signal(0x8)\n\tSIGHUP  = syscall.Signal(0x1)\n\tSIGILL  = syscall.Signal(0x4)\n\tSIGINT  = syscall.Signal(0x2)\n\tSIGIOT  = syscall.Signal(0x6)\n\tSIGKILL = syscall.Signal(0x9)\n\tSIGPIPE = syscall.Signal(0xd)\n\tSIGQUIT = syscall.Signal(0x3)\n\tSIGSEGV = syscall.Signal(0xb)\n\tSIGTERM = syscall.Signal(0xf)\n\tSIGTRAP = syscall.Signal(0x5)\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_linux_386.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/386/include -m32\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build 386 && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/386/include -m32 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x1008\n\tB115200                          = 0x1002\n\tB1152000                         = 0x1009\n\tB1500000                         = 0x100a\n\tB2000000                         = 0x100b\n\tB230400                          = 0x1003\n\tB2500000                         = 0x100c\n\tB3000000                         = 0x100d\n\tB3500000                         = 0x100e\n\tB4000000                         = 0x100f\n\tB460800                          = 0x1004\n\tB500000                          = 0x1005\n\tB57600                           = 0x1001\n\tB576000                          = 0x1006\n\tB921600                          = 0x1007\n\tBLKALIGNOFF                      = 0x127a\n\tBLKBSZGET                        = 0x80041270\n\tBLKBSZSET                        = 0x40041271\n\tBLKDISCARD                       = 0x1277\n\tBLKDISCARDZEROES                 = 0x127c\n\tBLKFLSBUF                        = 0x1261\n\tBLKFRAGET                        = 0x1265\n\tBLKFRASET                        = 0x1264\n\tBLKGETDISKSEQ                    = 0x80081280\n\tBLKGETSIZE                       = 0x1260\n\tBLKGETSIZE64                     = 0x80041272\n\tBLKIOMIN                         = 0x1278\n\tBLKIOOPT                         = 0x1279\n\tBLKPBSZGET                       = 0x127b\n\tBLKRAGET                         = 0x1263\n\tBLKRASET                         = 0x1262\n\tBLKROGET                         = 0x125e\n\tBLKROSET                         = 0x125d\n\tBLKROTATIONAL                    = 0x127e\n\tBLKRRPART                        = 0x125f\n\tBLKSECDISCARD                    = 0x127d\n\tBLKSECTGET                       = 0x1267\n\tBLKSECTSET                       = 0x1266\n\tBLKSSZGET                        = 0x1268\n\tBLKZEROOUT                       = 0x127f\n\tBOTHER                           = 0x1000\n\tBS1                              = 0x2000\n\tBSDLY                            = 0x2000\n\tCBAUD                            = 0x100f\n\tCBAUDEX                          = 0x1000\n\tCIBAUD                           = 0x100f0000\n\tCLOCAL                           = 0x800\n\tCR1                              = 0x200\n\tCR2                              = 0x400\n\tCR3                              = 0x600\n\tCRDLY                            = 0x600\n\tCREAD                            = 0x80\n\tCS6                              = 0x10\n\tCS7                              = 0x20\n\tCS8                              = 0x30\n\tCSIZE                            = 0x30\n\tCSTOPB                           = 0x40\n\tDM_MPATH_PROBE_PATHS             = 0xfd12\n\tECCGETLAYOUT                     = 0x81484d11\n\tECCGETSTATS                      = 0x80104d12\n\tECHOCTL                          = 0x200\n\tECHOE                            = 0x10\n\tECHOK                            = 0x20\n\tECHOKE                           = 0x800\n\tECHONL                           = 0x40\n\tECHOPRT                          = 0x400\n\tEFD_CLOEXEC                      = 0x80000\n\tEFD_NONBLOCK                     = 0x800\n\tEPIOCGPARAMS                     = 0x80088a02\n\tEPIOCSPARAMS                     = 0x40088a01\n\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000\n\tFF1                              = 0x8000\n\tFFDLY                            = 0x8000\n\tFICLONE                          = 0x40049409\n\tFICLONERANGE                     = 0x4020940d\n\tFLUSHO                           = 0x1000\n\tFP_XSTATE_MAGIC2                 = 0x46505845\n\tFS_IOC_ENABLE_VERITY             = 0x40806685\n\tFS_IOC_GETFLAGS                  = 0x80046601\n\tFS_IOC_GET_ENCRYPTION_NONCE      = 0x8010661b\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x400c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x40106614\n\tFS_IOC_SETFLAGS                  = 0x40046602\n\tFS_IOC_SET_ENCRYPTION_POLICY     = 0x800c6613\n\tF_GETLK                          = 0xc\n\tF_GETLK64                        = 0xc\n\tF_GETOWN                         = 0x9\n\tF_RDLCK                          = 0x0\n\tF_SETLK                          = 0xd\n\tF_SETLK64                        = 0xd\n\tF_SETLKW                         = 0xe\n\tF_SETLKW64                       = 0xe\n\tF_SETOWN                         = 0x8\n\tF_UNLCK                          = 0x2\n\tF_WRLCK                          = 0x1\n\tHIDIOCGRAWINFO                   = 0x80084803\n\tHIDIOCGRDESC                     = 0x90044802\n\tHIDIOCGRDESCSIZE                 = 0x80044801\n\tHIDIOCREVOKE                     = 0x4004480d\n\tHUPCL                            = 0x400\n\tICANON                           = 0x2\n\tIEXTEN                           = 0x8000\n\tIN_CLOEXEC                       = 0x80000\n\tIN_NONBLOCK                      = 0x800\n\tIOCTL_MEI_NOTIFY_GET             = 0x80044803\n\tIOCTL_MEI_NOTIFY_SET             = 0x40044802\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x7b9\n\tIPV6_FLOWINFO_MASK               = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK              = 0xffff0f00\n\tISIG                             = 0x1\n\tIUCLC                            = 0x200\n\tIXOFF                            = 0x1000\n\tIXON                             = 0x400\n\tMAP_32BIT                        = 0x40\n\tMAP_ABOVE4G                      = 0x80\n\tMAP_ANON                         = 0x20\n\tMAP_ANONYMOUS                    = 0x20\n\tMAP_DENYWRITE                    = 0x800\n\tMAP_EXECUTABLE                   = 0x1000\n\tMAP_GROWSDOWN                    = 0x100\n\tMAP_HUGETLB                      = 0x40000\n\tMAP_LOCKED                       = 0x2000\n\tMAP_NONBLOCK                     = 0x10000\n\tMAP_NORESERVE                    = 0x4000\n\tMAP_POPULATE                     = 0x8000\n\tMAP_STACK                        = 0x20000\n\tMAP_SYNC                         = 0x80000\n\tMCL_CURRENT                      = 0x1\n\tMCL_FUTURE                       = 0x2\n\tMCL_ONFAULT                      = 0x4\n\tMEMERASE                         = 0x40084d02\n\tMEMERASE64                       = 0x40104d14\n\tMEMGETBADBLOCK                   = 0x40084d0b\n\tMEMGETINFO                       = 0x80204d01\n\tMEMGETOOBSEL                     = 0x80c84d0a\n\tMEMGETREGIONCOUNT                = 0x80044d07\n\tMEMISLOCKED                      = 0x80084d17\n\tMEMLOCK                          = 0x40084d05\n\tMEMREAD                          = 0xc03c4d1a\n\tMEMREADOOB                       = 0xc00c4d04\n\tMEMSETBADBLOCK                   = 0x40084d0c\n\tMEMUNLOCK                        = 0x40084d06\n\tMEMWRITEOOB                      = 0xc00c4d03\n\tMTDFILEMODE                      = 0x4d13\n\tNFDBITS                          = 0x20\n\tNLDLY                            = 0x100\n\tNOFLSH                           = 0x80\n\tNS_GET_MNTNS_ID                  = 0x8008b705\n\tNS_GET_NSTYPE                    = 0xb703\n\tNS_GET_OWNER_UID                 = 0xb704\n\tNS_GET_PARENT                    = 0xb702\n\tNS_GET_PID_FROM_PIDNS            = 0x8004b706\n\tNS_GET_PID_IN_PIDNS              = 0x8004b708\n\tNS_GET_TGID_FROM_PIDNS           = 0x8004b707\n\tNS_GET_TGID_IN_PIDNS             = 0x8004b709\n\tNS_GET_USERNS                    = 0xb701\n\tOLCUC                            = 0x2\n\tONLCR                            = 0x4\n\tOTPERASE                         = 0x400c4d19\n\tOTPGETREGIONCOUNT                = 0x40044d0e\n\tOTPGETREGIONINFO                 = 0x400c4d0f\n\tOTPLOCK                          = 0x800c4d10\n\tOTPSELECT                        = 0x80044d0d\n\tO_APPEND                         = 0x400\n\tO_ASYNC                          = 0x2000\n\tO_CLOEXEC                        = 0x80000\n\tO_CREAT                          = 0x40\n\tO_DIRECT                         = 0x4000\n\tO_DIRECTORY                      = 0x10000\n\tO_DSYNC                          = 0x1000\n\tO_EXCL                           = 0x80\n\tO_FSYNC                          = 0x101000\n\tO_LARGEFILE                      = 0x8000\n\tO_NDELAY                         = 0x800\n\tO_NOATIME                        = 0x40000\n\tO_NOCTTY                         = 0x100\n\tO_NOFOLLOW                       = 0x20000\n\tO_NONBLOCK                       = 0x800\n\tO_PATH                           = 0x200000\n\tO_RSYNC                          = 0x101000\n\tO_SYNC                           = 0x101000\n\tO_TMPFILE                        = 0x410000\n\tO_TRUNC                          = 0x200\n\tPARENB                           = 0x100\n\tPARODD                           = 0x200\n\tPENDIN                           = 0x4000\n\tPERF_EVENT_IOC_DISABLE           = 0x2401\n\tPERF_EVENT_IOC_ENABLE            = 0x2400\n\tPERF_EVENT_IOC_ID                = 0x80042407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4004240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT      = 0x40042409\n\tPERF_EVENT_IOC_PERIOD            = 0x40082404\n\tPERF_EVENT_IOC_QUERY_BPF         = 0xc004240a\n\tPERF_EVENT_IOC_REFRESH           = 0x2402\n\tPERF_EVENT_IOC_RESET             = 0x2403\n\tPERF_EVENT_IOC_SET_BPF           = 0x40042408\n\tPERF_EVENT_IOC_SET_FILTER        = 0x40042406\n\tPERF_EVENT_IOC_SET_OUTPUT        = 0x2405\n\tPPPIOCATTACH                     = 0x4004743d\n\tPPPIOCATTCHAN                    = 0x40047438\n\tPPPIOCBRIDGECHAN                 = 0x40047435\n\tPPPIOCCONNECT                    = 0x4004743a\n\tPPPIOCDETACH                     = 0x4004743c\n\tPPPIOCDISCONN                    = 0x7439\n\tPPPIOCGASYNCMAP                  = 0x80047458\n\tPPPIOCGCHAN                      = 0x80047437\n\tPPPIOCGDEBUG                     = 0x80047441\n\tPPPIOCGFLAGS                     = 0x8004745a\n\tPPPIOCGIDLE                      = 0x8008743f\n\tPPPIOCGIDLE32                    = 0x8008743f\n\tPPPIOCGIDLE64                    = 0x8010743f\n\tPPPIOCGL2TPSTATS                 = 0x80487436\n\tPPPIOCGMRU                       = 0x80047453\n\tPPPIOCGRASYNCMAP                 = 0x80047455\n\tPPPIOCGUNIT                      = 0x80047456\n\tPPPIOCGXASYNCMAP                 = 0x80207450\n\tPPPIOCSACTIVE                    = 0x40087446\n\tPPPIOCSASYNCMAP                  = 0x40047457\n\tPPPIOCSCOMPRESS                  = 0x400c744d\n\tPPPIOCSDEBUG                     = 0x40047440\n\tPPPIOCSFLAGS                     = 0x40047459\n\tPPPIOCSMAXCID                    = 0x40047451\n\tPPPIOCSMRRU                      = 0x4004743b\n\tPPPIOCSMRU                       = 0x40047452\n\tPPPIOCSNPMODE                    = 0x4008744b\n\tPPPIOCSPASS                      = 0x40087447\n\tPPPIOCSRASYNCMAP                 = 0x40047454\n\tPPPIOCSXASYNCMAP                 = 0x4020744f\n\tPPPIOCUNBRIDGECHAN               = 0x7434\n\tPPPIOCXFERUNIT                   = 0x744e\n\tPR_SET_PTRACER_ANY               = 0xffffffff\n\tPTP_CLOCK_GETCAPS                = 0x80503d01\n\tPTP_CLOCK_GETCAPS2               = 0x80503d0a\n\tPTP_ENABLE_PPS                   = 0x40043d04\n\tPTP_ENABLE_PPS2                  = 0x40043d0d\n\tPTP_EXTTS_REQUEST                = 0x40103d02\n\tPTP_EXTTS_REQUEST2               = 0x40103d0b\n\tPTP_MASK_CLEAR_ALL               = 0x3d13\n\tPTP_MASK_EN_SINGLE               = 0x40043d14\n\tPTP_PEROUT_REQUEST               = 0x40383d03\n\tPTP_PEROUT_REQUEST2              = 0x40383d0c\n\tPTP_PIN_SETFUNC                  = 0x40603d07\n\tPTP_PIN_SETFUNC2                 = 0x40603d10\n\tPTP_SYS_OFFSET                   = 0x43403d05\n\tPTP_SYS_OFFSET2                  = 0x43403d0e\n\tPTRACE_GETFPREGS                 = 0xe\n\tPTRACE_GETFPXREGS                = 0x12\n\tPTRACE_GET_THREAD_AREA           = 0x19\n\tPTRACE_OLDSETOPTIONS             = 0x15\n\tPTRACE_SETFPREGS                 = 0xf\n\tPTRACE_SETFPXREGS                = 0x13\n\tPTRACE_SET_THREAD_AREA           = 0x1a\n\tPTRACE_SINGLEBLOCK               = 0x21\n\tPTRACE_SYSEMU                    = 0x1f\n\tPTRACE_SYSEMU_SINGLESTEP         = 0x20\n\tRLIMIT_AS                        = 0x9\n\tRLIMIT_MEMLOCK                   = 0x8\n\tRLIMIT_NOFILE                    = 0x7\n\tRLIMIT_NPROC                     = 0x6\n\tRLIMIT_RSS                       = 0x5\n\tRNDADDENTROPY                    = 0x40085203\n\tRNDADDTOENTCNT                   = 0x40045201\n\tRNDCLEARPOOL                     = 0x5206\n\tRNDGETENTCNT                     = 0x80045200\n\tRNDGETPOOL                       = 0x80085202\n\tRNDRESEEDCRNG                    = 0x5207\n\tRNDZAPENTCNT                     = 0x5204\n\tRTC_AIE_OFF                      = 0x7002\n\tRTC_AIE_ON                       = 0x7001\n\tRTC_ALM_READ                     = 0x80247008\n\tRTC_ALM_SET                      = 0x40247007\n\tRTC_EPOCH_READ                   = 0x8004700d\n\tRTC_EPOCH_SET                    = 0x4004700e\n\tRTC_IRQP_READ                    = 0x8004700b\n\tRTC_IRQP_SET                     = 0x4004700c\n\tRTC_PARAM_GET                    = 0x40187013\n\tRTC_PARAM_SET                    = 0x40187014\n\tRTC_PIE_OFF                      = 0x7006\n\tRTC_PIE_ON                       = 0x7005\n\tRTC_PLL_GET                      = 0x801c7011\n\tRTC_PLL_SET                      = 0x401c7012\n\tRTC_RD_TIME                      = 0x80247009\n\tRTC_SET_TIME                     = 0x4024700a\n\tRTC_UIE_OFF                      = 0x7004\n\tRTC_UIE_ON                       = 0x7003\n\tRTC_VL_CLR                       = 0x7014\n\tRTC_VL_READ                      = 0x80047013\n\tRTC_WIE_OFF                      = 0x7010\n\tRTC_WIE_ON                       = 0x700f\n\tRTC_WKALM_RD                     = 0x80287010\n\tRTC_WKALM_SET                    = 0x4028700f\n\tSCM_DEVMEM_DMABUF                = 0x4f\n\tSCM_DEVMEM_LINEAR                = 0x4e\n\tSCM_TIMESTAMPING                 = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS       = 0x36\n\tSCM_TIMESTAMPING_PKTINFO         = 0x3a\n\tSCM_TIMESTAMPNS                  = 0x23\n\tSCM_TS_OPT_ID                    = 0x51\n\tSCM_TXTIME                       = 0x3d\n\tSCM_WIFI_STATUS                  = 0x29\n\tSECCOMP_IOCTL_NOTIF_ADDFD        = 0x40182103\n\tSECCOMP_IOCTL_NOTIF_ID_VALID     = 0x40082102\n\tSECCOMP_IOCTL_NOTIF_SET_FLAGS    = 0x40082104\n\tSFD_CLOEXEC                      = 0x80000\n\tSFD_NONBLOCK                     = 0x800\n\tSIOCATMARK                       = 0x8905\n\tSIOCGPGRP                        = 0x8904\n\tSIOCGSTAMPNS_NEW                 = 0x80108907\n\tSIOCGSTAMP_NEW                   = 0x80108906\n\tSIOCINQ                          = 0x541b\n\tSIOCOUTQ                         = 0x5411\n\tSIOCSPGRP                        = 0x8902\n\tSOCK_CLOEXEC                     = 0x80000\n\tSOCK_DGRAM                       = 0x2\n\tSOCK_NONBLOCK                    = 0x800\n\tSOCK_STREAM                      = 0x1\n\tSOL_SOCKET                       = 0x1\n\tSO_ACCEPTCONN                    = 0x1e\n\tSO_ATTACH_BPF                    = 0x32\n\tSO_ATTACH_REUSEPORT_CBPF         = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF         = 0x34\n\tSO_BINDTODEVICE                  = 0x19\n\tSO_BINDTOIFINDEX                 = 0x3e\n\tSO_BPF_EXTENSIONS                = 0x30\n\tSO_BROADCAST                     = 0x6\n\tSO_BSDCOMPAT                     = 0xe\n\tSO_BUF_LOCK                      = 0x48\n\tSO_BUSY_POLL                     = 0x2e\n\tSO_BUSY_POLL_BUDGET              = 0x46\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\n\tSO_DEVMEM_DMABUF                 = 0x4f\n\tSO_DEVMEM_DONTNEED               = 0x50\n\tSO_DEVMEM_LINEAR                 = 0x4e\n\tSO_DOMAIN                        = 0x27\n\tSO_DONTROUTE                     = 0x5\n\tSO_ERROR                         = 0x4\n\tSO_INCOMING_CPU                  = 0x31\n\tSO_INCOMING_NAPI_ID              = 0x38\n\tSO_KEEPALIVE                     = 0x9\n\tSO_LINGER                        = 0xd\n\tSO_LOCK_FILTER                   = 0x2c\n\tSO_MARK                          = 0x24\n\tSO_MAX_PACING_RATE               = 0x2f\n\tSO_MEMINFO                       = 0x37\n\tSO_NETNS_COOKIE                  = 0x47\n\tSO_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0xa\n\tSO_PASSCRED                      = 0x10\n\tSO_PASSPIDFD                     = 0x4c\n\tSO_PASSRIGHTS                    = 0x53\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x11\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERPIDFD                     = 0x4d\n\tSO_PEERSEC                       = 0x1f\n\tSO_PREFER_BUSY_POLL              = 0x45\n\tSO_PROTOCOL                      = 0x26\n\tSO_RCVBUF                        = 0x8\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x12\n\tSO_RCVMARK                       = 0x4b\n\tSO_RCVPRIORITY                   = 0x52\n\tSO_RCVTIMEO                      = 0x14\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x14\n\tSO_RESERVE_MEM                   = 0x49\n\tSO_REUSEADDR                     = 0x2\n\tSO_REUSEPORT                     = 0xf\n\tSO_RXQ_OVFL                      = 0x28\n\tSO_SECURITY_AUTHENTICATION       = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK   = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT = 0x17\n\tSO_SELECT_ERR_QUEUE              = 0x2d\n\tSO_SNDBUF                        = 0x7\n\tSO_SNDBUFFORCE                   = 0x20\n\tSO_SNDLOWAT                      = 0x13\n\tSO_SNDTIMEO                      = 0x15\n\tSO_SNDTIMEO_NEW                  = 0x43\n\tSO_SNDTIMEO_OLD                  = 0x15\n\tSO_TIMESTAMPING                  = 0x25\n\tSO_TIMESTAMPING_NEW              = 0x41\n\tSO_TIMESTAMPING_OLD              = 0x25\n\tSO_TIMESTAMPNS                   = 0x23\n\tSO_TIMESTAMPNS_NEW               = 0x40\n\tSO_TIMESTAMPNS_OLD               = 0x23\n\tSO_TIMESTAMP_NEW                 = 0x3f\n\tSO_TXREHASH                      = 0x4a\n\tSO_TXTIME                        = 0x3d\n\tSO_TYPE                          = 0x3\n\tSO_WIFI_STATUS                   = 0x29\n\tSO_ZEROCOPY                      = 0x3c\n\tTAB1                             = 0x800\n\tTAB2                             = 0x1000\n\tTAB3                             = 0x1800\n\tTABDLY                           = 0x1800\n\tTCFLSH                           = 0x540b\n\tTCGETA                           = 0x5405\n\tTCGETS                           = 0x5401\n\tTCGETS2                          = 0x802c542a\n\tTCGETX                           = 0x5432\n\tTCSAFLUSH                        = 0x2\n\tTCSBRK                           = 0x5409\n\tTCSBRKP                          = 0x5425\n\tTCSETA                           = 0x5406\n\tTCSETAF                          = 0x5408\n\tTCSETAW                          = 0x5407\n\tTCSETS                           = 0x5402\n\tTCSETS2                          = 0x402c542b\n\tTCSETSF                          = 0x5404\n\tTCSETSF2                         = 0x402c542d\n\tTCSETSW                          = 0x5403\n\tTCSETSW2                         = 0x402c542c\n\tTCSETX                           = 0x5433\n\tTCSETXF                          = 0x5434\n\tTCSETXW                          = 0x5435\n\tTCXONC                           = 0x540a\n\tTFD_CLOEXEC                      = 0x80000\n\tTFD_NONBLOCK                     = 0x800\n\tTIOCCBRK                         = 0x5428\n\tTIOCCONS                         = 0x541d\n\tTIOCEXCL                         = 0x540c\n\tTIOCGDEV                         = 0x80045432\n\tTIOCGETD                         = 0x5424\n\tTIOCGEXCL                        = 0x80045440\n\tTIOCGICOUNT                      = 0x545d\n\tTIOCGISO7816                     = 0x80285442\n\tTIOCGLCKTRMIOS                   = 0x5456\n\tTIOCGPGRP                        = 0x540f\n\tTIOCGPKT                         = 0x80045438\n\tTIOCGPTLCK                       = 0x80045439\n\tTIOCGPTN                         = 0x80045430\n\tTIOCGPTPEER                      = 0x5441\n\tTIOCGRS485                       = 0x542e\n\tTIOCGSERIAL                      = 0x541e\n\tTIOCGSID                         = 0x5429\n\tTIOCGSOFTCAR                     = 0x5419\n\tTIOCGWINSZ                       = 0x5413\n\tTIOCINQ                          = 0x541b\n\tTIOCLINUX                        = 0x541c\n\tTIOCMBIC                         = 0x5417\n\tTIOCMBIS                         = 0x5416\n\tTIOCMGET                         = 0x5415\n\tTIOCMIWAIT                       = 0x545c\n\tTIOCMSET                         = 0x5418\n\tTIOCM_CAR                        = 0x40\n\tTIOCM_CD                         = 0x40\n\tTIOCM_CTS                        = 0x20\n\tTIOCM_DSR                        = 0x100\n\tTIOCM_RI                         = 0x80\n\tTIOCM_RNG                        = 0x80\n\tTIOCM_SR                         = 0x10\n\tTIOCM_ST                         = 0x8\n\tTIOCNOTTY                        = 0x5422\n\tTIOCNXCL                         = 0x540d\n\tTIOCOUTQ                         = 0x5411\n\tTIOCPKT                          = 0x5420\n\tTIOCSBRK                         = 0x5427\n\tTIOCSCTTY                        = 0x540e\n\tTIOCSERCONFIG                    = 0x5453\n\tTIOCSERGETLSR                    = 0x5459\n\tTIOCSERGETMULTI                  = 0x545a\n\tTIOCSERGSTRUCT                   = 0x5458\n\tTIOCSERGWILD                     = 0x5454\n\tTIOCSERSETMULTI                  = 0x545b\n\tTIOCSERSWILD                     = 0x5455\n\tTIOCSER_TEMT                     = 0x1\n\tTIOCSETD                         = 0x5423\n\tTIOCSIG                          = 0x40045436\n\tTIOCSISO7816                     = 0xc0285443\n\tTIOCSLCKTRMIOS                   = 0x5457\n\tTIOCSPGRP                        = 0x5410\n\tTIOCSPTLCK                       = 0x40045431\n\tTIOCSRS485                       = 0x542f\n\tTIOCSSERIAL                      = 0x541f\n\tTIOCSSOFTCAR                     = 0x541a\n\tTIOCSTI                          = 0x5412\n\tTIOCSWINSZ                       = 0x5414\n\tTIOCVHANGUP                      = 0x5437\n\tTOSTOP                           = 0x100\n\tTUNATTACHFILTER                  = 0x400854d5\n\tTUNDETACHFILTER                  = 0x400854d6\n\tTUNGETDEVNETNS                   = 0x54e3\n\tTUNGETFEATURES                   = 0x800454cf\n\tTUNGETFILTER                     = 0x800854db\n\tTUNGETIFF                        = 0x800454d2\n\tTUNGETSNDBUF                     = 0x800454d3\n\tTUNGETVNETBE                     = 0x800454df\n\tTUNGETVNETHDRSZ                  = 0x800454d7\n\tTUNGETVNETLE                     = 0x800454dd\n\tTUNSETCARRIER                    = 0x400454e2\n\tTUNSETDEBUG                      = 0x400454c9\n\tTUNSETFILTEREBPF                 = 0x800454e1\n\tTUNSETGROUP                      = 0x400454ce\n\tTUNSETIFF                        = 0x400454ca\n\tTUNSETIFINDEX                    = 0x400454da\n\tTUNSETLINK                       = 0x400454cd\n\tTUNSETNOCSUM                     = 0x400454c8\n\tTUNSETOFFLOAD                    = 0x400454d0\n\tTUNSETOWNER                      = 0x400454cc\n\tTUNSETPERSIST                    = 0x400454cb\n\tTUNSETQUEUE                      = 0x400454d9\n\tTUNSETSNDBUF                     = 0x400454d4\n\tTUNSETSTEERINGEBPF               = 0x800454e0\n\tTUNSETTXFILTER                   = 0x400454d1\n\tTUNSETVNETBE                     = 0x400454de\n\tTUNSETVNETHDRSZ                  = 0x400454d8\n\tTUNSETVNETLE                     = 0x400454dc\n\tUBI_IOCATT                       = 0x40186f40\n\tUBI_IOCDET                       = 0x40046f41\n\tUBI_IOCEBCH                      = 0x40044f02\n\tUBI_IOCEBER                      = 0x40044f01\n\tUBI_IOCEBISMAP                   = 0x80044f05\n\tUBI_IOCEBMAP                     = 0x40084f03\n\tUBI_IOCEBUNMAP                   = 0x40044f04\n\tUBI_IOCMKVOL                     = 0x40986f00\n\tUBI_IOCRMVOL                     = 0x40046f01\n\tUBI_IOCRNVOL                     = 0x51106f03\n\tUBI_IOCRPEB                      = 0x40046f04\n\tUBI_IOCRSVOL                     = 0x400c6f02\n\tUBI_IOCSETVOLPROP                = 0x40104f06\n\tUBI_IOCSPEB                      = 0x40046f05\n\tUBI_IOCVOLCRBLK                  = 0x40804f07\n\tUBI_IOCVOLRMBLK                  = 0x4f08\n\tUBI_IOCVOLUP                     = 0x40084f00\n\tVDISCARD                         = 0xd\n\tVEOF                             = 0x4\n\tVEOL                             = 0xb\n\tVEOL2                            = 0x10\n\tVMIN                             = 0x6\n\tVREPRINT                         = 0xc\n\tVSTART                           = 0x8\n\tVSTOP                            = 0x9\n\tVSUSP                            = 0xa\n\tVSWTC                            = 0x7\n\tVT1                              = 0x4000\n\tVTDLY                            = 0x4000\n\tVTIME                            = 0x5\n\tVWERASE                          = 0xe\n\tWDIOC_GETBOOTSTATUS              = 0x80045702\n\tWDIOC_GETPRETIMEOUT              = 0x80045709\n\tWDIOC_GETSTATUS                  = 0x80045701\n\tWDIOC_GETSUPPORT                 = 0x80285700\n\tWDIOC_GETTEMP                    = 0x80045703\n\tWDIOC_GETTIMELEFT                = 0x8004570a\n\tWDIOC_GETTIMEOUT                 = 0x80045707\n\tWDIOC_KEEPALIVE                  = 0x80045705\n\tWDIOC_SETOPTIONS                 = 0x80045704\n\tWORDSIZE                         = 0x20\n\tX86_FXSR_MAGIC                   = 0x0\n\tXCASE                            = 0x4\n\tXTABS                            = 0x1800\n\t_HIDIOCGRAWNAME                  = 0x80804804\n\t_HIDIOCGRAWPHYS                  = 0x80404805\n\t_HIDIOCGRAWUNIQ                  = 0x80404808\n)\n\n// Errors\nconst (\n\tEADDRINUSE      = syscall.Errno(0x62)\n\tEADDRNOTAVAIL   = syscall.Errno(0x63)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x61)\n\tEALREADY        = syscall.Errno(0x72)\n\tEBADE           = syscall.Errno(0x34)\n\tEBADFD          = syscall.Errno(0x4d)\n\tEBADMSG         = syscall.Errno(0x4a)\n\tEBADR           = syscall.Errno(0x35)\n\tEBADRQC         = syscall.Errno(0x38)\n\tEBADSLT         = syscall.Errno(0x39)\n\tEBFONT          = syscall.Errno(0x3b)\n\tECANCELED       = syscall.Errno(0x7d)\n\tECHRNG          = syscall.Errno(0x2c)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x67)\n\tECONNREFUSED    = syscall.Errno(0x6f)\n\tECONNRESET      = syscall.Errno(0x68)\n\tEDEADLK         = syscall.Errno(0x23)\n\tEDEADLOCK       = syscall.Errno(0x23)\n\tEDESTADDRREQ    = syscall.Errno(0x59)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x7a)\n\tEHOSTDOWN       = syscall.Errno(0x70)\n\tEHOSTUNREACH    = syscall.Errno(0x71)\n\tEHWPOISON       = syscall.Errno(0x85)\n\tEIDRM           = syscall.Errno(0x2b)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x73)\n\tEISCONN         = syscall.Errno(0x6a)\n\tEISNAM          = syscall.Errno(0x78)\n\tEKEYEXPIRED     = syscall.Errno(0x7f)\n\tEKEYREJECTED    = syscall.Errno(0x81)\n\tEKEYREVOKED     = syscall.Errno(0x80)\n\tEL2HLT          = syscall.Errno(0x33)\n\tEL2NSYNC        = syscall.Errno(0x2d)\n\tEL3HLT          = syscall.Errno(0x2e)\n\tEL3RST          = syscall.Errno(0x2f)\n\tELIBACC         = syscall.Errno(0x4f)\n\tELIBBAD         = syscall.Errno(0x50)\n\tELIBEXEC        = syscall.Errno(0x53)\n\tELIBMAX         = syscall.Errno(0x52)\n\tELIBSCN         = syscall.Errno(0x51)\n\tELNRNG          = syscall.Errno(0x30)\n\tELOOP           = syscall.Errno(0x28)\n\tEMEDIUMTYPE     = syscall.Errno(0x7c)\n\tEMSGSIZE        = syscall.Errno(0x5a)\n\tEMULTIHOP       = syscall.Errno(0x48)\n\tENAMETOOLONG    = syscall.Errno(0x24)\n\tENAVAIL         = syscall.Errno(0x77)\n\tENETDOWN        = syscall.Errno(0x64)\n\tENETRESET       = syscall.Errno(0x66)\n\tENETUNREACH     = syscall.Errno(0x65)\n\tENOANO          = syscall.Errno(0x37)\n\tENOBUFS         = syscall.Errno(0x69)\n\tENOCSI          = syscall.Errno(0x32)\n\tENODATA         = syscall.Errno(0x3d)\n\tENOKEY          = syscall.Errno(0x7e)\n\tENOLCK          = syscall.Errno(0x25)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x7b)\n\tENOMSG          = syscall.Errno(0x2a)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x5c)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x26)\n\tENOTCONN        = syscall.Errno(0x6b)\n\tENOTEMPTY       = syscall.Errno(0x27)\n\tENOTNAM         = syscall.Errno(0x76)\n\tENOTRECOVERABLE = syscall.Errno(0x83)\n\tENOTSOCK        = syscall.Errno(0x58)\n\tENOTSUP         = syscall.Errno(0x5f)\n\tENOTUNIQ        = syscall.Errno(0x4c)\n\tEOPNOTSUPP      = syscall.Errno(0x5f)\n\tEOVERFLOW       = syscall.Errno(0x4b)\n\tEOWNERDEAD      = syscall.Errno(0x82)\n\tEPFNOSUPPORT    = syscall.Errno(0x60)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x5d)\n\tEPROTOTYPE      = syscall.Errno(0x5b)\n\tEREMCHG         = syscall.Errno(0x4e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x79)\n\tERESTART        = syscall.Errno(0x55)\n\tERFKILL         = syscall.Errno(0x84)\n\tESHUTDOWN       = syscall.Errno(0x6c)\n\tESOCKTNOSUPPORT = syscall.Errno(0x5e)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x74)\n\tESTRPIPE        = syscall.Errno(0x56)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x6e)\n\tETOOMANYREFS    = syscall.Errno(0x6d)\n\tEUCLEAN         = syscall.Errno(0x75)\n\tEUNATCH         = syscall.Errno(0x31)\n\tEUSERS          = syscall.Errno(0x57)\n\tEXFULL          = syscall.Errno(0x36)\n)\n\n// Signals\nconst (\n\tSIGBUS    = syscall.Signal(0x7)\n\tSIGCHLD   = syscall.Signal(0x11)\n\tSIGCLD    = syscall.Signal(0x11)\n\tSIGCONT   = syscall.Signal(0x12)\n\tSIGIO     = syscall.Signal(0x1d)\n\tSIGPOLL   = syscall.Signal(0x1d)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x1e)\n\tSIGSTKFLT = syscall.Signal(0x10)\n\tSIGSTOP   = syscall.Signal(0x13)\n\tSIGSYS    = syscall.Signal(0x1f)\n\tSIGTSTP   = syscall.Signal(0x14)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x17)\n\tSIGUSR1   = syscall.Signal(0xa)\n\tSIGUSR2   = syscall.Signal(0xc)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{36, \"ENAMETOOLONG\", \"file name too long\"},\n\t{37, \"ENOLCK\", \"no locks available\"},\n\t{38, \"ENOSYS\", \"function not implemented\"},\n\t{39, \"ENOTEMPTY\", \"directory not empty\"},\n\t{40, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{42, \"ENOMSG\", \"no message of desired type\"},\n\t{43, \"EIDRM\", \"identifier removed\"},\n\t{44, \"ECHRNG\", \"channel number out of range\"},\n\t{45, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{46, \"EL3HLT\", \"level 3 halted\"},\n\t{47, \"EL3RST\", \"level 3 reset\"},\n\t{48, \"ELNRNG\", \"link number out of range\"},\n\t{49, \"EUNATCH\", \"protocol driver not attached\"},\n\t{50, \"ENOCSI\", \"no CSI structure available\"},\n\t{51, \"EL2HLT\", \"level 2 halted\"},\n\t{52, \"EBADE\", \"invalid exchange\"},\n\t{53, \"EBADR\", \"invalid request descriptor\"},\n\t{54, \"EXFULL\", \"exchange full\"},\n\t{55, \"ENOANO\", \"no anode\"},\n\t{56, \"EBADRQC\", \"invalid request code\"},\n\t{57, \"EBADSLT\", \"invalid slot\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{72, \"EMULTIHOP\", \"multihop attempted\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EBADMSG\", \"bad message\"},\n\t{75, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{76, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{77, \"EBADFD\", \"file descriptor in bad state\"},\n\t{78, \"EREMCHG\", \"remote address changed\"},\n\t{79, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{80, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{81, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{82, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{83, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{84, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{85, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{86, \"ESTRPIPE\", \"streams pipe error\"},\n\t{87, \"EUSERS\", \"too many users\"},\n\t{88, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{89, \"EDESTADDRREQ\", \"destination address required\"},\n\t{90, \"EMSGSIZE\", \"message too long\"},\n\t{91, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{92, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{93, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{94, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{95, \"ENOTSUP\", \"operation not supported\"},\n\t{96, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{97, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{98, \"EADDRINUSE\", \"address already in use\"},\n\t{99, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{100, \"ENETDOWN\", \"network is down\"},\n\t{101, \"ENETUNREACH\", \"network is unreachable\"},\n\t{102, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{103, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{104, \"ECONNRESET\", \"connection reset by peer\"},\n\t{105, \"ENOBUFS\", \"no buffer space available\"},\n\t{106, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{107, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{108, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{109, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{110, \"ETIMEDOUT\", \"connection timed out\"},\n\t{111, \"ECONNREFUSED\", \"connection refused\"},\n\t{112, \"EHOSTDOWN\", \"host is down\"},\n\t{113, \"EHOSTUNREACH\", \"no route to host\"},\n\t{114, \"EALREADY\", \"operation already in progress\"},\n\t{115, \"EINPROGRESS\", \"operation now in progress\"},\n\t{116, \"ESTALE\", \"stale file handle\"},\n\t{117, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{118, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{119, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{120, \"EISNAM\", \"is a named type file\"},\n\t{121, \"EREMOTEIO\", \"remote I/O error\"},\n\t{122, \"EDQUOT\", \"disk quota exceeded\"},\n\t{123, \"ENOMEDIUM\", \"no medium found\"},\n\t{124, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{125, \"ECANCELED\", \"operation canceled\"},\n\t{126, \"ENOKEY\", \"required key not available\"},\n\t{127, \"EKEYEXPIRED\", \"key has expired\"},\n\t{128, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{129, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{130, \"EOWNERDEAD\", \"owner died\"},\n\t{131, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{132, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{133, \"EHWPOISON\", \"memory page has hardware error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGBUS\", \"bus error\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGUSR1\", \"user defined signal 1\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGUSR2\", \"user defined signal 2\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGSTKFLT\", \"stack fault\"},\n\t{17, \"SIGCHLD\", \"child exited\"},\n\t{18, \"SIGCONT\", \"continued\"},\n\t{19, \"SIGSTOP\", \"stopped (signal)\"},\n\t{20, \"SIGTSTP\", \"stopped\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGURG\", \"urgent I/O condition\"},\n\t{24, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"file size limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window changed\"},\n\t{29, \"SIGIO\", \"I/O possible\"},\n\t{30, \"SIGPWR\", \"power failure\"},\n\t{31, \"SIGSYS\", \"bad system call\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/amd64/include -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/amd64/include -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x1008\n\tB115200                          = 0x1002\n\tB1152000                         = 0x1009\n\tB1500000                         = 0x100a\n\tB2000000                         = 0x100b\n\tB230400                          = 0x1003\n\tB2500000                         = 0x100c\n\tB3000000                         = 0x100d\n\tB3500000                         = 0x100e\n\tB4000000                         = 0x100f\n\tB460800                          = 0x1004\n\tB500000                          = 0x1005\n\tB57600                           = 0x1001\n\tB576000                          = 0x1006\n\tB921600                          = 0x1007\n\tBLKALIGNOFF                      = 0x127a\n\tBLKBSZGET                        = 0x80081270\n\tBLKBSZSET                        = 0x40081271\n\tBLKDISCARD                       = 0x1277\n\tBLKDISCARDZEROES                 = 0x127c\n\tBLKFLSBUF                        = 0x1261\n\tBLKFRAGET                        = 0x1265\n\tBLKFRASET                        = 0x1264\n\tBLKGETDISKSEQ                    = 0x80081280\n\tBLKGETSIZE                       = 0x1260\n\tBLKGETSIZE64                     = 0x80081272\n\tBLKIOMIN                         = 0x1278\n\tBLKIOOPT                         = 0x1279\n\tBLKPBSZGET                       = 0x127b\n\tBLKRAGET                         = 0x1263\n\tBLKRASET                         = 0x1262\n\tBLKROGET                         = 0x125e\n\tBLKROSET                         = 0x125d\n\tBLKROTATIONAL                    = 0x127e\n\tBLKRRPART                        = 0x125f\n\tBLKSECDISCARD                    = 0x127d\n\tBLKSECTGET                       = 0x1267\n\tBLKSECTSET                       = 0x1266\n\tBLKSSZGET                        = 0x1268\n\tBLKZEROOUT                       = 0x127f\n\tBOTHER                           = 0x1000\n\tBS1                              = 0x2000\n\tBSDLY                            = 0x2000\n\tCBAUD                            = 0x100f\n\tCBAUDEX                          = 0x1000\n\tCIBAUD                           = 0x100f0000\n\tCLOCAL                           = 0x800\n\tCR1                              = 0x200\n\tCR2                              = 0x400\n\tCR3                              = 0x600\n\tCRDLY                            = 0x600\n\tCREAD                            = 0x80\n\tCS6                              = 0x10\n\tCS7                              = 0x20\n\tCS8                              = 0x30\n\tCSIZE                            = 0x30\n\tCSTOPB                           = 0x40\n\tDM_MPATH_PROBE_PATHS             = 0xfd12\n\tECCGETLAYOUT                     = 0x81484d11\n\tECCGETSTATS                      = 0x80104d12\n\tECHOCTL                          = 0x200\n\tECHOE                            = 0x10\n\tECHOK                            = 0x20\n\tECHOKE                           = 0x800\n\tECHONL                           = 0x40\n\tECHOPRT                          = 0x400\n\tEFD_CLOEXEC                      = 0x80000\n\tEFD_NONBLOCK                     = 0x800\n\tEPIOCGPARAMS                     = 0x80088a02\n\tEPIOCSPARAMS                     = 0x40088a01\n\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000\n\tFF1                              = 0x8000\n\tFFDLY                            = 0x8000\n\tFICLONE                          = 0x40049409\n\tFICLONERANGE                     = 0x4020940d\n\tFLUSHO                           = 0x1000\n\tFP_XSTATE_MAGIC2                 = 0x46505845\n\tFS_IOC_ENABLE_VERITY             = 0x40806685\n\tFS_IOC_GETFLAGS                  = 0x80086601\n\tFS_IOC_GET_ENCRYPTION_NONCE      = 0x8010661b\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x400c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x40106614\n\tFS_IOC_SETFLAGS                  = 0x40086602\n\tFS_IOC_SET_ENCRYPTION_POLICY     = 0x800c6613\n\tF_GETLK                          = 0x5\n\tF_GETLK64                        = 0x5\n\tF_GETOWN                         = 0x9\n\tF_RDLCK                          = 0x0\n\tF_SETLK                          = 0x6\n\tF_SETLK64                        = 0x6\n\tF_SETLKW                         = 0x7\n\tF_SETLKW64                       = 0x7\n\tF_SETOWN                         = 0x8\n\tF_UNLCK                          = 0x2\n\tF_WRLCK                          = 0x1\n\tHIDIOCGRAWINFO                   = 0x80084803\n\tHIDIOCGRDESC                     = 0x90044802\n\tHIDIOCGRDESCSIZE                 = 0x80044801\n\tHIDIOCREVOKE                     = 0x4004480d\n\tHUPCL                            = 0x400\n\tICANON                           = 0x2\n\tIEXTEN                           = 0x8000\n\tIN_CLOEXEC                       = 0x80000\n\tIN_NONBLOCK                      = 0x800\n\tIOCTL_MEI_NOTIFY_GET             = 0x80044803\n\tIOCTL_MEI_NOTIFY_SET             = 0x40044802\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x7b9\n\tIPV6_FLOWINFO_MASK               = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK              = 0xffff0f00\n\tISIG                             = 0x1\n\tIUCLC                            = 0x200\n\tIXOFF                            = 0x1000\n\tIXON                             = 0x400\n\tMAP_32BIT                        = 0x40\n\tMAP_ABOVE4G                      = 0x80\n\tMAP_ANON                         = 0x20\n\tMAP_ANONYMOUS                    = 0x20\n\tMAP_DENYWRITE                    = 0x800\n\tMAP_EXECUTABLE                   = 0x1000\n\tMAP_GROWSDOWN                    = 0x100\n\tMAP_HUGETLB                      = 0x40000\n\tMAP_LOCKED                       = 0x2000\n\tMAP_NONBLOCK                     = 0x10000\n\tMAP_NORESERVE                    = 0x4000\n\tMAP_POPULATE                     = 0x8000\n\tMAP_STACK                        = 0x20000\n\tMAP_SYNC                         = 0x80000\n\tMCL_CURRENT                      = 0x1\n\tMCL_FUTURE                       = 0x2\n\tMCL_ONFAULT                      = 0x4\n\tMEMERASE                         = 0x40084d02\n\tMEMERASE64                       = 0x40104d14\n\tMEMGETBADBLOCK                   = 0x40084d0b\n\tMEMGETINFO                       = 0x80204d01\n\tMEMGETOOBSEL                     = 0x80c84d0a\n\tMEMGETREGIONCOUNT                = 0x80044d07\n\tMEMISLOCKED                      = 0x80084d17\n\tMEMLOCK                          = 0x40084d05\n\tMEMREAD                          = 0xc0404d1a\n\tMEMREADOOB                       = 0xc0104d04\n\tMEMSETBADBLOCK                   = 0x40084d0c\n\tMEMUNLOCK                        = 0x40084d06\n\tMEMWRITEOOB                      = 0xc0104d03\n\tMTDFILEMODE                      = 0x4d13\n\tNFDBITS                          = 0x40\n\tNLDLY                            = 0x100\n\tNOFLSH                           = 0x80\n\tNS_GET_MNTNS_ID                  = 0x8008b705\n\tNS_GET_NSTYPE                    = 0xb703\n\tNS_GET_OWNER_UID                 = 0xb704\n\tNS_GET_PARENT                    = 0xb702\n\tNS_GET_PID_FROM_PIDNS            = 0x8004b706\n\tNS_GET_PID_IN_PIDNS              = 0x8004b708\n\tNS_GET_TGID_FROM_PIDNS           = 0x8004b707\n\tNS_GET_TGID_IN_PIDNS             = 0x8004b709\n\tNS_GET_USERNS                    = 0xb701\n\tOLCUC                            = 0x2\n\tONLCR                            = 0x4\n\tOTPERASE                         = 0x400c4d19\n\tOTPGETREGIONCOUNT                = 0x40044d0e\n\tOTPGETREGIONINFO                 = 0x400c4d0f\n\tOTPLOCK                          = 0x800c4d10\n\tOTPSELECT                        = 0x80044d0d\n\tO_APPEND                         = 0x400\n\tO_ASYNC                          = 0x2000\n\tO_CLOEXEC                        = 0x80000\n\tO_CREAT                          = 0x40\n\tO_DIRECT                         = 0x4000\n\tO_DIRECTORY                      = 0x10000\n\tO_DSYNC                          = 0x1000\n\tO_EXCL                           = 0x80\n\tO_FSYNC                          = 0x101000\n\tO_LARGEFILE                      = 0x0\n\tO_NDELAY                         = 0x800\n\tO_NOATIME                        = 0x40000\n\tO_NOCTTY                         = 0x100\n\tO_NOFOLLOW                       = 0x20000\n\tO_NONBLOCK                       = 0x800\n\tO_PATH                           = 0x200000\n\tO_RSYNC                          = 0x101000\n\tO_SYNC                           = 0x101000\n\tO_TMPFILE                        = 0x410000\n\tO_TRUNC                          = 0x200\n\tPARENB                           = 0x100\n\tPARODD                           = 0x200\n\tPENDIN                           = 0x4000\n\tPERF_EVENT_IOC_DISABLE           = 0x2401\n\tPERF_EVENT_IOC_ENABLE            = 0x2400\n\tPERF_EVENT_IOC_ID                = 0x80082407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4008240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT      = 0x40042409\n\tPERF_EVENT_IOC_PERIOD            = 0x40082404\n\tPERF_EVENT_IOC_QUERY_BPF         = 0xc008240a\n\tPERF_EVENT_IOC_REFRESH           = 0x2402\n\tPERF_EVENT_IOC_RESET             = 0x2403\n\tPERF_EVENT_IOC_SET_BPF           = 0x40042408\n\tPERF_EVENT_IOC_SET_FILTER        = 0x40082406\n\tPERF_EVENT_IOC_SET_OUTPUT        = 0x2405\n\tPPPIOCATTACH                     = 0x4004743d\n\tPPPIOCATTCHAN                    = 0x40047438\n\tPPPIOCBRIDGECHAN                 = 0x40047435\n\tPPPIOCCONNECT                    = 0x4004743a\n\tPPPIOCDETACH                     = 0x4004743c\n\tPPPIOCDISCONN                    = 0x7439\n\tPPPIOCGASYNCMAP                  = 0x80047458\n\tPPPIOCGCHAN                      = 0x80047437\n\tPPPIOCGDEBUG                     = 0x80047441\n\tPPPIOCGFLAGS                     = 0x8004745a\n\tPPPIOCGIDLE                      = 0x8010743f\n\tPPPIOCGIDLE32                    = 0x8008743f\n\tPPPIOCGIDLE64                    = 0x8010743f\n\tPPPIOCGL2TPSTATS                 = 0x80487436\n\tPPPIOCGMRU                       = 0x80047453\n\tPPPIOCGRASYNCMAP                 = 0x80047455\n\tPPPIOCGUNIT                      = 0x80047456\n\tPPPIOCGXASYNCMAP                 = 0x80207450\n\tPPPIOCSACTIVE                    = 0x40107446\n\tPPPIOCSASYNCMAP                  = 0x40047457\n\tPPPIOCSCOMPRESS                  = 0x4010744d\n\tPPPIOCSDEBUG                     = 0x40047440\n\tPPPIOCSFLAGS                     = 0x40047459\n\tPPPIOCSMAXCID                    = 0x40047451\n\tPPPIOCSMRRU                      = 0x4004743b\n\tPPPIOCSMRU                       = 0x40047452\n\tPPPIOCSNPMODE                    = 0x4008744b\n\tPPPIOCSPASS                      = 0x40107447\n\tPPPIOCSRASYNCMAP                 = 0x40047454\n\tPPPIOCSXASYNCMAP                 = 0x4020744f\n\tPPPIOCUNBRIDGECHAN               = 0x7434\n\tPPPIOCXFERUNIT                   = 0x744e\n\tPR_SET_PTRACER_ANY               = 0xffffffffffffffff\n\tPTP_CLOCK_GETCAPS                = 0x80503d01\n\tPTP_CLOCK_GETCAPS2               = 0x80503d0a\n\tPTP_ENABLE_PPS                   = 0x40043d04\n\tPTP_ENABLE_PPS2                  = 0x40043d0d\n\tPTP_EXTTS_REQUEST                = 0x40103d02\n\tPTP_EXTTS_REQUEST2               = 0x40103d0b\n\tPTP_MASK_CLEAR_ALL               = 0x3d13\n\tPTP_MASK_EN_SINGLE               = 0x40043d14\n\tPTP_PEROUT_REQUEST               = 0x40383d03\n\tPTP_PEROUT_REQUEST2              = 0x40383d0c\n\tPTP_PIN_SETFUNC                  = 0x40603d07\n\tPTP_PIN_SETFUNC2                 = 0x40603d10\n\tPTP_SYS_OFFSET                   = 0x43403d05\n\tPTP_SYS_OFFSET2                  = 0x43403d0e\n\tPTRACE_ARCH_PRCTL                = 0x1e\n\tPTRACE_GETFPREGS                 = 0xe\n\tPTRACE_GETFPXREGS                = 0x12\n\tPTRACE_GET_THREAD_AREA           = 0x19\n\tPTRACE_OLDSETOPTIONS             = 0x15\n\tPTRACE_SETFPREGS                 = 0xf\n\tPTRACE_SETFPXREGS                = 0x13\n\tPTRACE_SET_THREAD_AREA           = 0x1a\n\tPTRACE_SINGLEBLOCK               = 0x21\n\tPTRACE_SYSEMU                    = 0x1f\n\tPTRACE_SYSEMU_SINGLESTEP         = 0x20\n\tRLIMIT_AS                        = 0x9\n\tRLIMIT_MEMLOCK                   = 0x8\n\tRLIMIT_NOFILE                    = 0x7\n\tRLIMIT_NPROC                     = 0x6\n\tRLIMIT_RSS                       = 0x5\n\tRNDADDENTROPY                    = 0x40085203\n\tRNDADDTOENTCNT                   = 0x40045201\n\tRNDCLEARPOOL                     = 0x5206\n\tRNDGETENTCNT                     = 0x80045200\n\tRNDGETPOOL                       = 0x80085202\n\tRNDRESEEDCRNG                    = 0x5207\n\tRNDZAPENTCNT                     = 0x5204\n\tRTC_AIE_OFF                      = 0x7002\n\tRTC_AIE_ON                       = 0x7001\n\tRTC_ALM_READ                     = 0x80247008\n\tRTC_ALM_SET                      = 0x40247007\n\tRTC_EPOCH_READ                   = 0x8008700d\n\tRTC_EPOCH_SET                    = 0x4008700e\n\tRTC_IRQP_READ                    = 0x8008700b\n\tRTC_IRQP_SET                     = 0x4008700c\n\tRTC_PARAM_GET                    = 0x40187013\n\tRTC_PARAM_SET                    = 0x40187014\n\tRTC_PIE_OFF                      = 0x7006\n\tRTC_PIE_ON                       = 0x7005\n\tRTC_PLL_GET                      = 0x80207011\n\tRTC_PLL_SET                      = 0x40207012\n\tRTC_RD_TIME                      = 0x80247009\n\tRTC_SET_TIME                     = 0x4024700a\n\tRTC_UIE_OFF                      = 0x7004\n\tRTC_UIE_ON                       = 0x7003\n\tRTC_VL_CLR                       = 0x7014\n\tRTC_VL_READ                      = 0x80047013\n\tRTC_WIE_OFF                      = 0x7010\n\tRTC_WIE_ON                       = 0x700f\n\tRTC_WKALM_RD                     = 0x80287010\n\tRTC_WKALM_SET                    = 0x4028700f\n\tSCM_DEVMEM_DMABUF                = 0x4f\n\tSCM_DEVMEM_LINEAR                = 0x4e\n\tSCM_TIMESTAMPING                 = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS       = 0x36\n\tSCM_TIMESTAMPING_PKTINFO         = 0x3a\n\tSCM_TIMESTAMPNS                  = 0x23\n\tSCM_TS_OPT_ID                    = 0x51\n\tSCM_TXTIME                       = 0x3d\n\tSCM_WIFI_STATUS                  = 0x29\n\tSECCOMP_IOCTL_NOTIF_ADDFD        = 0x40182103\n\tSECCOMP_IOCTL_NOTIF_ID_VALID     = 0x40082102\n\tSECCOMP_IOCTL_NOTIF_SET_FLAGS    = 0x40082104\n\tSFD_CLOEXEC                      = 0x80000\n\tSFD_NONBLOCK                     = 0x800\n\tSIOCATMARK                       = 0x8905\n\tSIOCGPGRP                        = 0x8904\n\tSIOCGSTAMPNS_NEW                 = 0x80108907\n\tSIOCGSTAMP_NEW                   = 0x80108906\n\tSIOCINQ                          = 0x541b\n\tSIOCOUTQ                         = 0x5411\n\tSIOCSPGRP                        = 0x8902\n\tSOCK_CLOEXEC                     = 0x80000\n\tSOCK_DGRAM                       = 0x2\n\tSOCK_NONBLOCK                    = 0x800\n\tSOCK_STREAM                      = 0x1\n\tSOL_SOCKET                       = 0x1\n\tSO_ACCEPTCONN                    = 0x1e\n\tSO_ATTACH_BPF                    = 0x32\n\tSO_ATTACH_REUSEPORT_CBPF         = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF         = 0x34\n\tSO_BINDTODEVICE                  = 0x19\n\tSO_BINDTOIFINDEX                 = 0x3e\n\tSO_BPF_EXTENSIONS                = 0x30\n\tSO_BROADCAST                     = 0x6\n\tSO_BSDCOMPAT                     = 0xe\n\tSO_BUF_LOCK                      = 0x48\n\tSO_BUSY_POLL                     = 0x2e\n\tSO_BUSY_POLL_BUDGET              = 0x46\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\n\tSO_DEVMEM_DMABUF                 = 0x4f\n\tSO_DEVMEM_DONTNEED               = 0x50\n\tSO_DEVMEM_LINEAR                 = 0x4e\n\tSO_DOMAIN                        = 0x27\n\tSO_DONTROUTE                     = 0x5\n\tSO_ERROR                         = 0x4\n\tSO_INCOMING_CPU                  = 0x31\n\tSO_INCOMING_NAPI_ID              = 0x38\n\tSO_KEEPALIVE                     = 0x9\n\tSO_LINGER                        = 0xd\n\tSO_LOCK_FILTER                   = 0x2c\n\tSO_MARK                          = 0x24\n\tSO_MAX_PACING_RATE               = 0x2f\n\tSO_MEMINFO                       = 0x37\n\tSO_NETNS_COOKIE                  = 0x47\n\tSO_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0xa\n\tSO_PASSCRED                      = 0x10\n\tSO_PASSPIDFD                     = 0x4c\n\tSO_PASSRIGHTS                    = 0x53\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x11\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERPIDFD                     = 0x4d\n\tSO_PEERSEC                       = 0x1f\n\tSO_PREFER_BUSY_POLL              = 0x45\n\tSO_PROTOCOL                      = 0x26\n\tSO_RCVBUF                        = 0x8\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x12\n\tSO_RCVMARK                       = 0x4b\n\tSO_RCVPRIORITY                   = 0x52\n\tSO_RCVTIMEO                      = 0x14\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x14\n\tSO_RESERVE_MEM                   = 0x49\n\tSO_REUSEADDR                     = 0x2\n\tSO_REUSEPORT                     = 0xf\n\tSO_RXQ_OVFL                      = 0x28\n\tSO_SECURITY_AUTHENTICATION       = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK   = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT = 0x17\n\tSO_SELECT_ERR_QUEUE              = 0x2d\n\tSO_SNDBUF                        = 0x7\n\tSO_SNDBUFFORCE                   = 0x20\n\tSO_SNDLOWAT                      = 0x13\n\tSO_SNDTIMEO                      = 0x15\n\tSO_SNDTIMEO_NEW                  = 0x43\n\tSO_SNDTIMEO_OLD                  = 0x15\n\tSO_TIMESTAMPING                  = 0x25\n\tSO_TIMESTAMPING_NEW              = 0x41\n\tSO_TIMESTAMPING_OLD              = 0x25\n\tSO_TIMESTAMPNS                   = 0x23\n\tSO_TIMESTAMPNS_NEW               = 0x40\n\tSO_TIMESTAMPNS_OLD               = 0x23\n\tSO_TIMESTAMP_NEW                 = 0x3f\n\tSO_TXREHASH                      = 0x4a\n\tSO_TXTIME                        = 0x3d\n\tSO_TYPE                          = 0x3\n\tSO_WIFI_STATUS                   = 0x29\n\tSO_ZEROCOPY                      = 0x3c\n\tTAB1                             = 0x800\n\tTAB2                             = 0x1000\n\tTAB3                             = 0x1800\n\tTABDLY                           = 0x1800\n\tTCFLSH                           = 0x540b\n\tTCGETA                           = 0x5405\n\tTCGETS                           = 0x5401\n\tTCGETS2                          = 0x802c542a\n\tTCGETX                           = 0x5432\n\tTCSAFLUSH                        = 0x2\n\tTCSBRK                           = 0x5409\n\tTCSBRKP                          = 0x5425\n\tTCSETA                           = 0x5406\n\tTCSETAF                          = 0x5408\n\tTCSETAW                          = 0x5407\n\tTCSETS                           = 0x5402\n\tTCSETS2                          = 0x402c542b\n\tTCSETSF                          = 0x5404\n\tTCSETSF2                         = 0x402c542d\n\tTCSETSW                          = 0x5403\n\tTCSETSW2                         = 0x402c542c\n\tTCSETX                           = 0x5433\n\tTCSETXF                          = 0x5434\n\tTCSETXW                          = 0x5435\n\tTCXONC                           = 0x540a\n\tTFD_CLOEXEC                      = 0x80000\n\tTFD_NONBLOCK                     = 0x800\n\tTIOCCBRK                         = 0x5428\n\tTIOCCONS                         = 0x541d\n\tTIOCEXCL                         = 0x540c\n\tTIOCGDEV                         = 0x80045432\n\tTIOCGETD                         = 0x5424\n\tTIOCGEXCL                        = 0x80045440\n\tTIOCGICOUNT                      = 0x545d\n\tTIOCGISO7816                     = 0x80285442\n\tTIOCGLCKTRMIOS                   = 0x5456\n\tTIOCGPGRP                        = 0x540f\n\tTIOCGPKT                         = 0x80045438\n\tTIOCGPTLCK                       = 0x80045439\n\tTIOCGPTN                         = 0x80045430\n\tTIOCGPTPEER                      = 0x5441\n\tTIOCGRS485                       = 0x542e\n\tTIOCGSERIAL                      = 0x541e\n\tTIOCGSID                         = 0x5429\n\tTIOCGSOFTCAR                     = 0x5419\n\tTIOCGWINSZ                       = 0x5413\n\tTIOCINQ                          = 0x541b\n\tTIOCLINUX                        = 0x541c\n\tTIOCMBIC                         = 0x5417\n\tTIOCMBIS                         = 0x5416\n\tTIOCMGET                         = 0x5415\n\tTIOCMIWAIT                       = 0x545c\n\tTIOCMSET                         = 0x5418\n\tTIOCM_CAR                        = 0x40\n\tTIOCM_CD                         = 0x40\n\tTIOCM_CTS                        = 0x20\n\tTIOCM_DSR                        = 0x100\n\tTIOCM_RI                         = 0x80\n\tTIOCM_RNG                        = 0x80\n\tTIOCM_SR                         = 0x10\n\tTIOCM_ST                         = 0x8\n\tTIOCNOTTY                        = 0x5422\n\tTIOCNXCL                         = 0x540d\n\tTIOCOUTQ                         = 0x5411\n\tTIOCPKT                          = 0x5420\n\tTIOCSBRK                         = 0x5427\n\tTIOCSCTTY                        = 0x540e\n\tTIOCSERCONFIG                    = 0x5453\n\tTIOCSERGETLSR                    = 0x5459\n\tTIOCSERGETMULTI                  = 0x545a\n\tTIOCSERGSTRUCT                   = 0x5458\n\tTIOCSERGWILD                     = 0x5454\n\tTIOCSERSETMULTI                  = 0x545b\n\tTIOCSERSWILD                     = 0x5455\n\tTIOCSER_TEMT                     = 0x1\n\tTIOCSETD                         = 0x5423\n\tTIOCSIG                          = 0x40045436\n\tTIOCSISO7816                     = 0xc0285443\n\tTIOCSLCKTRMIOS                   = 0x5457\n\tTIOCSPGRP                        = 0x5410\n\tTIOCSPTLCK                       = 0x40045431\n\tTIOCSRS485                       = 0x542f\n\tTIOCSSERIAL                      = 0x541f\n\tTIOCSSOFTCAR                     = 0x541a\n\tTIOCSTI                          = 0x5412\n\tTIOCSWINSZ                       = 0x5414\n\tTIOCVHANGUP                      = 0x5437\n\tTOSTOP                           = 0x100\n\tTUNATTACHFILTER                  = 0x401054d5\n\tTUNDETACHFILTER                  = 0x401054d6\n\tTUNGETDEVNETNS                   = 0x54e3\n\tTUNGETFEATURES                   = 0x800454cf\n\tTUNGETFILTER                     = 0x801054db\n\tTUNGETIFF                        = 0x800454d2\n\tTUNGETSNDBUF                     = 0x800454d3\n\tTUNGETVNETBE                     = 0x800454df\n\tTUNGETVNETHDRSZ                  = 0x800454d7\n\tTUNGETVNETLE                     = 0x800454dd\n\tTUNSETCARRIER                    = 0x400454e2\n\tTUNSETDEBUG                      = 0x400454c9\n\tTUNSETFILTEREBPF                 = 0x800454e1\n\tTUNSETGROUP                      = 0x400454ce\n\tTUNSETIFF                        = 0x400454ca\n\tTUNSETIFINDEX                    = 0x400454da\n\tTUNSETLINK                       = 0x400454cd\n\tTUNSETNOCSUM                     = 0x400454c8\n\tTUNSETOFFLOAD                    = 0x400454d0\n\tTUNSETOWNER                      = 0x400454cc\n\tTUNSETPERSIST                    = 0x400454cb\n\tTUNSETQUEUE                      = 0x400454d9\n\tTUNSETSNDBUF                     = 0x400454d4\n\tTUNSETSTEERINGEBPF               = 0x800454e0\n\tTUNSETTXFILTER                   = 0x400454d1\n\tTUNSETVNETBE                     = 0x400454de\n\tTUNSETVNETHDRSZ                  = 0x400454d8\n\tTUNSETVNETLE                     = 0x400454dc\n\tUBI_IOCATT                       = 0x40186f40\n\tUBI_IOCDET                       = 0x40046f41\n\tUBI_IOCEBCH                      = 0x40044f02\n\tUBI_IOCEBER                      = 0x40044f01\n\tUBI_IOCEBISMAP                   = 0x80044f05\n\tUBI_IOCEBMAP                     = 0x40084f03\n\tUBI_IOCEBUNMAP                   = 0x40044f04\n\tUBI_IOCMKVOL                     = 0x40986f00\n\tUBI_IOCRMVOL                     = 0x40046f01\n\tUBI_IOCRNVOL                     = 0x51106f03\n\tUBI_IOCRPEB                      = 0x40046f04\n\tUBI_IOCRSVOL                     = 0x400c6f02\n\tUBI_IOCSETVOLPROP                = 0x40104f06\n\tUBI_IOCSPEB                      = 0x40046f05\n\tUBI_IOCVOLCRBLK                  = 0x40804f07\n\tUBI_IOCVOLRMBLK                  = 0x4f08\n\tUBI_IOCVOLUP                     = 0x40084f00\n\tVDISCARD                         = 0xd\n\tVEOF                             = 0x4\n\tVEOL                             = 0xb\n\tVEOL2                            = 0x10\n\tVMIN                             = 0x6\n\tVREPRINT                         = 0xc\n\tVSTART                           = 0x8\n\tVSTOP                            = 0x9\n\tVSUSP                            = 0xa\n\tVSWTC                            = 0x7\n\tVT1                              = 0x4000\n\tVTDLY                            = 0x4000\n\tVTIME                            = 0x5\n\tVWERASE                          = 0xe\n\tWDIOC_GETBOOTSTATUS              = 0x80045702\n\tWDIOC_GETPRETIMEOUT              = 0x80045709\n\tWDIOC_GETSTATUS                  = 0x80045701\n\tWDIOC_GETSUPPORT                 = 0x80285700\n\tWDIOC_GETTEMP                    = 0x80045703\n\tWDIOC_GETTIMELEFT                = 0x8004570a\n\tWDIOC_GETTIMEOUT                 = 0x80045707\n\tWDIOC_KEEPALIVE                  = 0x80045705\n\tWDIOC_SETOPTIONS                 = 0x80045704\n\tWORDSIZE                         = 0x40\n\tXCASE                            = 0x4\n\tXTABS                            = 0x1800\n\t_HIDIOCGRAWNAME                  = 0x80804804\n\t_HIDIOCGRAWPHYS                  = 0x80404805\n\t_HIDIOCGRAWUNIQ                  = 0x80404808\n)\n\n// Errors\nconst (\n\tEADDRINUSE      = syscall.Errno(0x62)\n\tEADDRNOTAVAIL   = syscall.Errno(0x63)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x61)\n\tEALREADY        = syscall.Errno(0x72)\n\tEBADE           = syscall.Errno(0x34)\n\tEBADFD          = syscall.Errno(0x4d)\n\tEBADMSG         = syscall.Errno(0x4a)\n\tEBADR           = syscall.Errno(0x35)\n\tEBADRQC         = syscall.Errno(0x38)\n\tEBADSLT         = syscall.Errno(0x39)\n\tEBFONT          = syscall.Errno(0x3b)\n\tECANCELED       = syscall.Errno(0x7d)\n\tECHRNG          = syscall.Errno(0x2c)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x67)\n\tECONNREFUSED    = syscall.Errno(0x6f)\n\tECONNRESET      = syscall.Errno(0x68)\n\tEDEADLK         = syscall.Errno(0x23)\n\tEDEADLOCK       = syscall.Errno(0x23)\n\tEDESTADDRREQ    = syscall.Errno(0x59)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x7a)\n\tEHOSTDOWN       = syscall.Errno(0x70)\n\tEHOSTUNREACH    = syscall.Errno(0x71)\n\tEHWPOISON       = syscall.Errno(0x85)\n\tEIDRM           = syscall.Errno(0x2b)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x73)\n\tEISCONN         = syscall.Errno(0x6a)\n\tEISNAM          = syscall.Errno(0x78)\n\tEKEYEXPIRED     = syscall.Errno(0x7f)\n\tEKEYREJECTED    = syscall.Errno(0x81)\n\tEKEYREVOKED     = syscall.Errno(0x80)\n\tEL2HLT          = syscall.Errno(0x33)\n\tEL2NSYNC        = syscall.Errno(0x2d)\n\tEL3HLT          = syscall.Errno(0x2e)\n\tEL3RST          = syscall.Errno(0x2f)\n\tELIBACC         = syscall.Errno(0x4f)\n\tELIBBAD         = syscall.Errno(0x50)\n\tELIBEXEC        = syscall.Errno(0x53)\n\tELIBMAX         = syscall.Errno(0x52)\n\tELIBSCN         = syscall.Errno(0x51)\n\tELNRNG          = syscall.Errno(0x30)\n\tELOOP           = syscall.Errno(0x28)\n\tEMEDIUMTYPE     = syscall.Errno(0x7c)\n\tEMSGSIZE        = syscall.Errno(0x5a)\n\tEMULTIHOP       = syscall.Errno(0x48)\n\tENAMETOOLONG    = syscall.Errno(0x24)\n\tENAVAIL         = syscall.Errno(0x77)\n\tENETDOWN        = syscall.Errno(0x64)\n\tENETRESET       = syscall.Errno(0x66)\n\tENETUNREACH     = syscall.Errno(0x65)\n\tENOANO          = syscall.Errno(0x37)\n\tENOBUFS         = syscall.Errno(0x69)\n\tENOCSI          = syscall.Errno(0x32)\n\tENODATA         = syscall.Errno(0x3d)\n\tENOKEY          = syscall.Errno(0x7e)\n\tENOLCK          = syscall.Errno(0x25)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x7b)\n\tENOMSG          = syscall.Errno(0x2a)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x5c)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x26)\n\tENOTCONN        = syscall.Errno(0x6b)\n\tENOTEMPTY       = syscall.Errno(0x27)\n\tENOTNAM         = syscall.Errno(0x76)\n\tENOTRECOVERABLE = syscall.Errno(0x83)\n\tENOTSOCK        = syscall.Errno(0x58)\n\tENOTSUP         = syscall.Errno(0x5f)\n\tENOTUNIQ        = syscall.Errno(0x4c)\n\tEOPNOTSUPP      = syscall.Errno(0x5f)\n\tEOVERFLOW       = syscall.Errno(0x4b)\n\tEOWNERDEAD      = syscall.Errno(0x82)\n\tEPFNOSUPPORT    = syscall.Errno(0x60)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x5d)\n\tEPROTOTYPE      = syscall.Errno(0x5b)\n\tEREMCHG         = syscall.Errno(0x4e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x79)\n\tERESTART        = syscall.Errno(0x55)\n\tERFKILL         = syscall.Errno(0x84)\n\tESHUTDOWN       = syscall.Errno(0x6c)\n\tESOCKTNOSUPPORT = syscall.Errno(0x5e)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x74)\n\tESTRPIPE        = syscall.Errno(0x56)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x6e)\n\tETOOMANYREFS    = syscall.Errno(0x6d)\n\tEUCLEAN         = syscall.Errno(0x75)\n\tEUNATCH         = syscall.Errno(0x31)\n\tEUSERS          = syscall.Errno(0x57)\n\tEXFULL          = syscall.Errno(0x36)\n)\n\n// Signals\nconst (\n\tSIGBUS    = syscall.Signal(0x7)\n\tSIGCHLD   = syscall.Signal(0x11)\n\tSIGCLD    = syscall.Signal(0x11)\n\tSIGCONT   = syscall.Signal(0x12)\n\tSIGIO     = syscall.Signal(0x1d)\n\tSIGPOLL   = syscall.Signal(0x1d)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x1e)\n\tSIGSTKFLT = syscall.Signal(0x10)\n\tSIGSTOP   = syscall.Signal(0x13)\n\tSIGSYS    = syscall.Signal(0x1f)\n\tSIGTSTP   = syscall.Signal(0x14)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x17)\n\tSIGUSR1   = syscall.Signal(0xa)\n\tSIGUSR2   = syscall.Signal(0xc)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{36, \"ENAMETOOLONG\", \"file name too long\"},\n\t{37, \"ENOLCK\", \"no locks available\"},\n\t{38, \"ENOSYS\", \"function not implemented\"},\n\t{39, \"ENOTEMPTY\", \"directory not empty\"},\n\t{40, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{42, \"ENOMSG\", \"no message of desired type\"},\n\t{43, \"EIDRM\", \"identifier removed\"},\n\t{44, \"ECHRNG\", \"channel number out of range\"},\n\t{45, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{46, \"EL3HLT\", \"level 3 halted\"},\n\t{47, \"EL3RST\", \"level 3 reset\"},\n\t{48, \"ELNRNG\", \"link number out of range\"},\n\t{49, \"EUNATCH\", \"protocol driver not attached\"},\n\t{50, \"ENOCSI\", \"no CSI structure available\"},\n\t{51, \"EL2HLT\", \"level 2 halted\"},\n\t{52, \"EBADE\", \"invalid exchange\"},\n\t{53, \"EBADR\", \"invalid request descriptor\"},\n\t{54, \"EXFULL\", \"exchange full\"},\n\t{55, \"ENOANO\", \"no anode\"},\n\t{56, \"EBADRQC\", \"invalid request code\"},\n\t{57, \"EBADSLT\", \"invalid slot\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{72, \"EMULTIHOP\", \"multihop attempted\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EBADMSG\", \"bad message\"},\n\t{75, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{76, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{77, \"EBADFD\", \"file descriptor in bad state\"},\n\t{78, \"EREMCHG\", \"remote address changed\"},\n\t{79, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{80, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{81, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{82, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{83, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{84, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{85, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{86, \"ESTRPIPE\", \"streams pipe error\"},\n\t{87, \"EUSERS\", \"too many users\"},\n\t{88, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{89, \"EDESTADDRREQ\", \"destination address required\"},\n\t{90, \"EMSGSIZE\", \"message too long\"},\n\t{91, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{92, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{93, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{94, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{95, \"ENOTSUP\", \"operation not supported\"},\n\t{96, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{97, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{98, \"EADDRINUSE\", \"address already in use\"},\n\t{99, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{100, \"ENETDOWN\", \"network is down\"},\n\t{101, \"ENETUNREACH\", \"network is unreachable\"},\n\t{102, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{103, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{104, \"ECONNRESET\", \"connection reset by peer\"},\n\t{105, \"ENOBUFS\", \"no buffer space available\"},\n\t{106, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{107, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{108, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{109, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{110, \"ETIMEDOUT\", \"connection timed out\"},\n\t{111, \"ECONNREFUSED\", \"connection refused\"},\n\t{112, \"EHOSTDOWN\", \"host is down\"},\n\t{113, \"EHOSTUNREACH\", \"no route to host\"},\n\t{114, \"EALREADY\", \"operation already in progress\"},\n\t{115, \"EINPROGRESS\", \"operation now in progress\"},\n\t{116, \"ESTALE\", \"stale file handle\"},\n\t{117, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{118, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{119, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{120, \"EISNAM\", \"is a named type file\"},\n\t{121, \"EREMOTEIO\", \"remote I/O error\"},\n\t{122, \"EDQUOT\", \"disk quota exceeded\"},\n\t{123, \"ENOMEDIUM\", \"no medium found\"},\n\t{124, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{125, \"ECANCELED\", \"operation canceled\"},\n\t{126, \"ENOKEY\", \"required key not available\"},\n\t{127, \"EKEYEXPIRED\", \"key has expired\"},\n\t{128, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{129, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{130, \"EOWNERDEAD\", \"owner died\"},\n\t{131, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{132, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{133, \"EHWPOISON\", \"memory page has hardware error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGBUS\", \"bus error\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGUSR1\", \"user defined signal 1\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGUSR2\", \"user defined signal 2\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGSTKFLT\", \"stack fault\"},\n\t{17, \"SIGCHLD\", \"child exited\"},\n\t{18, \"SIGCONT\", \"continued\"},\n\t{19, \"SIGSTOP\", \"stopped (signal)\"},\n\t{20, \"SIGTSTP\", \"stopped\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGURG\", \"urgent I/O condition\"},\n\t{24, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"file size limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window changed\"},\n\t{29, \"SIGIO\", \"I/O possible\"},\n\t{30, \"SIGPWR\", \"power failure\"},\n\t{31, \"SIGSYS\", \"bad system call\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_linux_arm.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/arm/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/arm/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x1008\n\tB115200                          = 0x1002\n\tB1152000                         = 0x1009\n\tB1500000                         = 0x100a\n\tB2000000                         = 0x100b\n\tB230400                          = 0x1003\n\tB2500000                         = 0x100c\n\tB3000000                         = 0x100d\n\tB3500000                         = 0x100e\n\tB4000000                         = 0x100f\n\tB460800                          = 0x1004\n\tB500000                          = 0x1005\n\tB57600                           = 0x1001\n\tB576000                          = 0x1006\n\tB921600                          = 0x1007\n\tBLKALIGNOFF                      = 0x127a\n\tBLKBSZGET                        = 0x80041270\n\tBLKBSZSET                        = 0x40041271\n\tBLKDISCARD                       = 0x1277\n\tBLKDISCARDZEROES                 = 0x127c\n\tBLKFLSBUF                        = 0x1261\n\tBLKFRAGET                        = 0x1265\n\tBLKFRASET                        = 0x1264\n\tBLKGETDISKSEQ                    = 0x80081280\n\tBLKGETSIZE                       = 0x1260\n\tBLKGETSIZE64                     = 0x80041272\n\tBLKIOMIN                         = 0x1278\n\tBLKIOOPT                         = 0x1279\n\tBLKPBSZGET                       = 0x127b\n\tBLKRAGET                         = 0x1263\n\tBLKRASET                         = 0x1262\n\tBLKROGET                         = 0x125e\n\tBLKROSET                         = 0x125d\n\tBLKROTATIONAL                    = 0x127e\n\tBLKRRPART                        = 0x125f\n\tBLKSECDISCARD                    = 0x127d\n\tBLKSECTGET                       = 0x1267\n\tBLKSECTSET                       = 0x1266\n\tBLKSSZGET                        = 0x1268\n\tBLKZEROOUT                       = 0x127f\n\tBOTHER                           = 0x1000\n\tBS1                              = 0x2000\n\tBSDLY                            = 0x2000\n\tCBAUD                            = 0x100f\n\tCBAUDEX                          = 0x1000\n\tCIBAUD                           = 0x100f0000\n\tCLOCAL                           = 0x800\n\tCR1                              = 0x200\n\tCR2                              = 0x400\n\tCR3                              = 0x600\n\tCRDLY                            = 0x600\n\tCREAD                            = 0x80\n\tCS6                              = 0x10\n\tCS7                              = 0x20\n\tCS8                              = 0x30\n\tCSIZE                            = 0x30\n\tCSTOPB                           = 0x40\n\tDM_MPATH_PROBE_PATHS             = 0xfd12\n\tECCGETLAYOUT                     = 0x81484d11\n\tECCGETSTATS                      = 0x80104d12\n\tECHOCTL                          = 0x200\n\tECHOE                            = 0x10\n\tECHOK                            = 0x20\n\tECHOKE                           = 0x800\n\tECHONL                           = 0x40\n\tECHOPRT                          = 0x400\n\tEFD_CLOEXEC                      = 0x80000\n\tEFD_NONBLOCK                     = 0x800\n\tEPIOCGPARAMS                     = 0x80088a02\n\tEPIOCSPARAMS                     = 0x40088a01\n\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000\n\tFF1                              = 0x8000\n\tFFDLY                            = 0x8000\n\tFICLONE                          = 0x40049409\n\tFICLONERANGE                     = 0x4020940d\n\tFLUSHO                           = 0x1000\n\tFS_IOC_ENABLE_VERITY             = 0x40806685\n\tFS_IOC_GETFLAGS                  = 0x80046601\n\tFS_IOC_GET_ENCRYPTION_NONCE      = 0x8010661b\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x400c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x40106614\n\tFS_IOC_SETFLAGS                  = 0x40046602\n\tFS_IOC_SET_ENCRYPTION_POLICY     = 0x800c6613\n\tF_GETLK                          = 0xc\n\tF_GETLK64                        = 0xc\n\tF_GETOWN                         = 0x9\n\tF_RDLCK                          = 0x0\n\tF_SETLK                          = 0xd\n\tF_SETLK64                        = 0xd\n\tF_SETLKW                         = 0xe\n\tF_SETLKW64                       = 0xe\n\tF_SETOWN                         = 0x8\n\tF_UNLCK                          = 0x2\n\tF_WRLCK                          = 0x1\n\tHIDIOCGRAWINFO                   = 0x80084803\n\tHIDIOCGRDESC                     = 0x90044802\n\tHIDIOCGRDESCSIZE                 = 0x80044801\n\tHIDIOCREVOKE                     = 0x4004480d\n\tHUPCL                            = 0x400\n\tICANON                           = 0x2\n\tIEXTEN                           = 0x8000\n\tIN_CLOEXEC                       = 0x80000\n\tIN_NONBLOCK                      = 0x800\n\tIOCTL_MEI_NOTIFY_GET             = 0x80044803\n\tIOCTL_MEI_NOTIFY_SET             = 0x40044802\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x7b9\n\tIPV6_FLOWINFO_MASK               = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK              = 0xffff0f00\n\tISIG                             = 0x1\n\tIUCLC                            = 0x200\n\tIXOFF                            = 0x1000\n\tIXON                             = 0x400\n\tMAP_ANON                         = 0x20\n\tMAP_ANONYMOUS                    = 0x20\n\tMAP_DENYWRITE                    = 0x800\n\tMAP_EXECUTABLE                   = 0x1000\n\tMAP_GROWSDOWN                    = 0x100\n\tMAP_HUGETLB                      = 0x40000\n\tMAP_LOCKED                       = 0x2000\n\tMAP_NONBLOCK                     = 0x10000\n\tMAP_NORESERVE                    = 0x4000\n\tMAP_POPULATE                     = 0x8000\n\tMAP_STACK                        = 0x20000\n\tMAP_SYNC                         = 0x80000\n\tMCL_CURRENT                      = 0x1\n\tMCL_FUTURE                       = 0x2\n\tMCL_ONFAULT                      = 0x4\n\tMEMERASE                         = 0x40084d02\n\tMEMERASE64                       = 0x40104d14\n\tMEMGETBADBLOCK                   = 0x40084d0b\n\tMEMGETINFO                       = 0x80204d01\n\tMEMGETOOBSEL                     = 0x80c84d0a\n\tMEMGETREGIONCOUNT                = 0x80044d07\n\tMEMISLOCKED                      = 0x80084d17\n\tMEMLOCK                          = 0x40084d05\n\tMEMREAD                          = 0xc0404d1a\n\tMEMREADOOB                       = 0xc00c4d04\n\tMEMSETBADBLOCK                   = 0x40084d0c\n\tMEMUNLOCK                        = 0x40084d06\n\tMEMWRITEOOB                      = 0xc00c4d03\n\tMTDFILEMODE                      = 0x4d13\n\tNFDBITS                          = 0x20\n\tNLDLY                            = 0x100\n\tNOFLSH                           = 0x80\n\tNS_GET_MNTNS_ID                  = 0x8008b705\n\tNS_GET_NSTYPE                    = 0xb703\n\tNS_GET_OWNER_UID                 = 0xb704\n\tNS_GET_PARENT                    = 0xb702\n\tNS_GET_PID_FROM_PIDNS            = 0x8004b706\n\tNS_GET_PID_IN_PIDNS              = 0x8004b708\n\tNS_GET_TGID_FROM_PIDNS           = 0x8004b707\n\tNS_GET_TGID_IN_PIDNS             = 0x8004b709\n\tNS_GET_USERNS                    = 0xb701\n\tOLCUC                            = 0x2\n\tONLCR                            = 0x4\n\tOTPERASE                         = 0x400c4d19\n\tOTPGETREGIONCOUNT                = 0x40044d0e\n\tOTPGETREGIONINFO                 = 0x400c4d0f\n\tOTPLOCK                          = 0x800c4d10\n\tOTPSELECT                        = 0x80044d0d\n\tO_APPEND                         = 0x400\n\tO_ASYNC                          = 0x2000\n\tO_CLOEXEC                        = 0x80000\n\tO_CREAT                          = 0x40\n\tO_DIRECT                         = 0x10000\n\tO_DIRECTORY                      = 0x4000\n\tO_DSYNC                          = 0x1000\n\tO_EXCL                           = 0x80\n\tO_FSYNC                          = 0x101000\n\tO_LARGEFILE                      = 0x20000\n\tO_NDELAY                         = 0x800\n\tO_NOATIME                        = 0x40000\n\tO_NOCTTY                         = 0x100\n\tO_NOFOLLOW                       = 0x8000\n\tO_NONBLOCK                       = 0x800\n\tO_PATH                           = 0x200000\n\tO_RSYNC                          = 0x101000\n\tO_SYNC                           = 0x101000\n\tO_TMPFILE                        = 0x404000\n\tO_TRUNC                          = 0x200\n\tPARENB                           = 0x100\n\tPARODD                           = 0x200\n\tPENDIN                           = 0x4000\n\tPERF_EVENT_IOC_DISABLE           = 0x2401\n\tPERF_EVENT_IOC_ENABLE            = 0x2400\n\tPERF_EVENT_IOC_ID                = 0x80042407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4004240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT      = 0x40042409\n\tPERF_EVENT_IOC_PERIOD            = 0x40082404\n\tPERF_EVENT_IOC_QUERY_BPF         = 0xc004240a\n\tPERF_EVENT_IOC_REFRESH           = 0x2402\n\tPERF_EVENT_IOC_RESET             = 0x2403\n\tPERF_EVENT_IOC_SET_BPF           = 0x40042408\n\tPERF_EVENT_IOC_SET_FILTER        = 0x40042406\n\tPERF_EVENT_IOC_SET_OUTPUT        = 0x2405\n\tPPPIOCATTACH                     = 0x4004743d\n\tPPPIOCATTCHAN                    = 0x40047438\n\tPPPIOCBRIDGECHAN                 = 0x40047435\n\tPPPIOCCONNECT                    = 0x4004743a\n\tPPPIOCDETACH                     = 0x4004743c\n\tPPPIOCDISCONN                    = 0x7439\n\tPPPIOCGASYNCMAP                  = 0x80047458\n\tPPPIOCGCHAN                      = 0x80047437\n\tPPPIOCGDEBUG                     = 0x80047441\n\tPPPIOCGFLAGS                     = 0x8004745a\n\tPPPIOCGIDLE                      = 0x8008743f\n\tPPPIOCGIDLE32                    = 0x8008743f\n\tPPPIOCGIDLE64                    = 0x8010743f\n\tPPPIOCGL2TPSTATS                 = 0x80487436\n\tPPPIOCGMRU                       = 0x80047453\n\tPPPIOCGRASYNCMAP                 = 0x80047455\n\tPPPIOCGUNIT                      = 0x80047456\n\tPPPIOCGXASYNCMAP                 = 0x80207450\n\tPPPIOCSACTIVE                    = 0x40087446\n\tPPPIOCSASYNCMAP                  = 0x40047457\n\tPPPIOCSCOMPRESS                  = 0x400c744d\n\tPPPIOCSDEBUG                     = 0x40047440\n\tPPPIOCSFLAGS                     = 0x40047459\n\tPPPIOCSMAXCID                    = 0x40047451\n\tPPPIOCSMRRU                      = 0x4004743b\n\tPPPIOCSMRU                       = 0x40047452\n\tPPPIOCSNPMODE                    = 0x4008744b\n\tPPPIOCSPASS                      = 0x40087447\n\tPPPIOCSRASYNCMAP                 = 0x40047454\n\tPPPIOCSXASYNCMAP                 = 0x4020744f\n\tPPPIOCUNBRIDGECHAN               = 0x7434\n\tPPPIOCXFERUNIT                   = 0x744e\n\tPR_SET_PTRACER_ANY               = 0xffffffff\n\tPTP_CLOCK_GETCAPS                = 0x80503d01\n\tPTP_CLOCK_GETCAPS2               = 0x80503d0a\n\tPTP_ENABLE_PPS                   = 0x40043d04\n\tPTP_ENABLE_PPS2                  = 0x40043d0d\n\tPTP_EXTTS_REQUEST                = 0x40103d02\n\tPTP_EXTTS_REQUEST2               = 0x40103d0b\n\tPTP_MASK_CLEAR_ALL               = 0x3d13\n\tPTP_MASK_EN_SINGLE               = 0x40043d14\n\tPTP_PEROUT_REQUEST               = 0x40383d03\n\tPTP_PEROUT_REQUEST2              = 0x40383d0c\n\tPTP_PIN_SETFUNC                  = 0x40603d07\n\tPTP_PIN_SETFUNC2                 = 0x40603d10\n\tPTP_SYS_OFFSET                   = 0x43403d05\n\tPTP_SYS_OFFSET2                  = 0x43403d0e\n\tPTRACE_GETCRUNCHREGS             = 0x19\n\tPTRACE_GETFDPIC                  = 0x1f\n\tPTRACE_GETFDPIC_EXEC             = 0x0\n\tPTRACE_GETFDPIC_INTERP           = 0x1\n\tPTRACE_GETFPREGS                 = 0xe\n\tPTRACE_GETHBPREGS                = 0x1d\n\tPTRACE_GETVFPREGS                = 0x1b\n\tPTRACE_GETWMMXREGS               = 0x12\n\tPTRACE_GET_THREAD_AREA           = 0x16\n\tPTRACE_OLDSETOPTIONS             = 0x15\n\tPTRACE_SETCRUNCHREGS             = 0x1a\n\tPTRACE_SETFPREGS                 = 0xf\n\tPTRACE_SETHBPREGS                = 0x1e\n\tPTRACE_SETVFPREGS                = 0x1c\n\tPTRACE_SETWMMXREGS               = 0x13\n\tPTRACE_SET_SYSCALL               = 0x17\n\tPT_DATA_ADDR                     = 0x10004\n\tPT_TEXT_ADDR                     = 0x10000\n\tPT_TEXT_END_ADDR                 = 0x10008\n\tRLIMIT_AS                        = 0x9\n\tRLIMIT_MEMLOCK                   = 0x8\n\tRLIMIT_NOFILE                    = 0x7\n\tRLIMIT_NPROC                     = 0x6\n\tRLIMIT_RSS                       = 0x5\n\tRNDADDENTROPY                    = 0x40085203\n\tRNDADDTOENTCNT                   = 0x40045201\n\tRNDCLEARPOOL                     = 0x5206\n\tRNDGETENTCNT                     = 0x80045200\n\tRNDGETPOOL                       = 0x80085202\n\tRNDRESEEDCRNG                    = 0x5207\n\tRNDZAPENTCNT                     = 0x5204\n\tRTC_AIE_OFF                      = 0x7002\n\tRTC_AIE_ON                       = 0x7001\n\tRTC_ALM_READ                     = 0x80247008\n\tRTC_ALM_SET                      = 0x40247007\n\tRTC_EPOCH_READ                   = 0x8004700d\n\tRTC_EPOCH_SET                    = 0x4004700e\n\tRTC_IRQP_READ                    = 0x8004700b\n\tRTC_IRQP_SET                     = 0x4004700c\n\tRTC_PARAM_GET                    = 0x40187013\n\tRTC_PARAM_SET                    = 0x40187014\n\tRTC_PIE_OFF                      = 0x7006\n\tRTC_PIE_ON                       = 0x7005\n\tRTC_PLL_GET                      = 0x801c7011\n\tRTC_PLL_SET                      = 0x401c7012\n\tRTC_RD_TIME                      = 0x80247009\n\tRTC_SET_TIME                     = 0x4024700a\n\tRTC_UIE_OFF                      = 0x7004\n\tRTC_UIE_ON                       = 0x7003\n\tRTC_VL_CLR                       = 0x7014\n\tRTC_VL_READ                      = 0x80047013\n\tRTC_WIE_OFF                      = 0x7010\n\tRTC_WIE_ON                       = 0x700f\n\tRTC_WKALM_RD                     = 0x80287010\n\tRTC_WKALM_SET                    = 0x4028700f\n\tSCM_DEVMEM_DMABUF                = 0x4f\n\tSCM_DEVMEM_LINEAR                = 0x4e\n\tSCM_TIMESTAMPING                 = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS       = 0x36\n\tSCM_TIMESTAMPING_PKTINFO         = 0x3a\n\tSCM_TIMESTAMPNS                  = 0x23\n\tSCM_TS_OPT_ID                    = 0x51\n\tSCM_TXTIME                       = 0x3d\n\tSCM_WIFI_STATUS                  = 0x29\n\tSECCOMP_IOCTL_NOTIF_ADDFD        = 0x40182103\n\tSECCOMP_IOCTL_NOTIF_ID_VALID     = 0x40082102\n\tSECCOMP_IOCTL_NOTIF_SET_FLAGS    = 0x40082104\n\tSFD_CLOEXEC                      = 0x80000\n\tSFD_NONBLOCK                     = 0x800\n\tSIOCATMARK                       = 0x8905\n\tSIOCGPGRP                        = 0x8904\n\tSIOCGSTAMPNS_NEW                 = 0x80108907\n\tSIOCGSTAMP_NEW                   = 0x80108906\n\tSIOCINQ                          = 0x541b\n\tSIOCOUTQ                         = 0x5411\n\tSIOCSPGRP                        = 0x8902\n\tSOCK_CLOEXEC                     = 0x80000\n\tSOCK_DGRAM                       = 0x2\n\tSOCK_NONBLOCK                    = 0x800\n\tSOCK_STREAM                      = 0x1\n\tSOL_SOCKET                       = 0x1\n\tSO_ACCEPTCONN                    = 0x1e\n\tSO_ATTACH_BPF                    = 0x32\n\tSO_ATTACH_REUSEPORT_CBPF         = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF         = 0x34\n\tSO_BINDTODEVICE                  = 0x19\n\tSO_BINDTOIFINDEX                 = 0x3e\n\tSO_BPF_EXTENSIONS                = 0x30\n\tSO_BROADCAST                     = 0x6\n\tSO_BSDCOMPAT                     = 0xe\n\tSO_BUF_LOCK                      = 0x48\n\tSO_BUSY_POLL                     = 0x2e\n\tSO_BUSY_POLL_BUDGET              = 0x46\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\n\tSO_DEVMEM_DMABUF                 = 0x4f\n\tSO_DEVMEM_DONTNEED               = 0x50\n\tSO_DEVMEM_LINEAR                 = 0x4e\n\tSO_DOMAIN                        = 0x27\n\tSO_DONTROUTE                     = 0x5\n\tSO_ERROR                         = 0x4\n\tSO_INCOMING_CPU                  = 0x31\n\tSO_INCOMING_NAPI_ID              = 0x38\n\tSO_KEEPALIVE                     = 0x9\n\tSO_LINGER                        = 0xd\n\tSO_LOCK_FILTER                   = 0x2c\n\tSO_MARK                          = 0x24\n\tSO_MAX_PACING_RATE               = 0x2f\n\tSO_MEMINFO                       = 0x37\n\tSO_NETNS_COOKIE                  = 0x47\n\tSO_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0xa\n\tSO_PASSCRED                      = 0x10\n\tSO_PASSPIDFD                     = 0x4c\n\tSO_PASSRIGHTS                    = 0x53\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x11\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERPIDFD                     = 0x4d\n\tSO_PEERSEC                       = 0x1f\n\tSO_PREFER_BUSY_POLL              = 0x45\n\tSO_PROTOCOL                      = 0x26\n\tSO_RCVBUF                        = 0x8\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x12\n\tSO_RCVMARK                       = 0x4b\n\tSO_RCVPRIORITY                   = 0x52\n\tSO_RCVTIMEO                      = 0x14\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x14\n\tSO_RESERVE_MEM                   = 0x49\n\tSO_REUSEADDR                     = 0x2\n\tSO_REUSEPORT                     = 0xf\n\tSO_RXQ_OVFL                      = 0x28\n\tSO_SECURITY_AUTHENTICATION       = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK   = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT = 0x17\n\tSO_SELECT_ERR_QUEUE              = 0x2d\n\tSO_SNDBUF                        = 0x7\n\tSO_SNDBUFFORCE                   = 0x20\n\tSO_SNDLOWAT                      = 0x13\n\tSO_SNDTIMEO                      = 0x15\n\tSO_SNDTIMEO_NEW                  = 0x43\n\tSO_SNDTIMEO_OLD                  = 0x15\n\tSO_TIMESTAMPING                  = 0x25\n\tSO_TIMESTAMPING_NEW              = 0x41\n\tSO_TIMESTAMPING_OLD              = 0x25\n\tSO_TIMESTAMPNS                   = 0x23\n\tSO_TIMESTAMPNS_NEW               = 0x40\n\tSO_TIMESTAMPNS_OLD               = 0x23\n\tSO_TIMESTAMP_NEW                 = 0x3f\n\tSO_TXREHASH                      = 0x4a\n\tSO_TXTIME                        = 0x3d\n\tSO_TYPE                          = 0x3\n\tSO_WIFI_STATUS                   = 0x29\n\tSO_ZEROCOPY                      = 0x3c\n\tTAB1                             = 0x800\n\tTAB2                             = 0x1000\n\tTAB3                             = 0x1800\n\tTABDLY                           = 0x1800\n\tTCFLSH                           = 0x540b\n\tTCGETA                           = 0x5405\n\tTCGETS                           = 0x5401\n\tTCGETS2                          = 0x802c542a\n\tTCGETX                           = 0x5432\n\tTCSAFLUSH                        = 0x2\n\tTCSBRK                           = 0x5409\n\tTCSBRKP                          = 0x5425\n\tTCSETA                           = 0x5406\n\tTCSETAF                          = 0x5408\n\tTCSETAW                          = 0x5407\n\tTCSETS                           = 0x5402\n\tTCSETS2                          = 0x402c542b\n\tTCSETSF                          = 0x5404\n\tTCSETSF2                         = 0x402c542d\n\tTCSETSW                          = 0x5403\n\tTCSETSW2                         = 0x402c542c\n\tTCSETX                           = 0x5433\n\tTCSETXF                          = 0x5434\n\tTCSETXW                          = 0x5435\n\tTCXONC                           = 0x540a\n\tTFD_CLOEXEC                      = 0x80000\n\tTFD_NONBLOCK                     = 0x800\n\tTIOCCBRK                         = 0x5428\n\tTIOCCONS                         = 0x541d\n\tTIOCEXCL                         = 0x540c\n\tTIOCGDEV                         = 0x80045432\n\tTIOCGETD                         = 0x5424\n\tTIOCGEXCL                        = 0x80045440\n\tTIOCGICOUNT                      = 0x545d\n\tTIOCGISO7816                     = 0x80285442\n\tTIOCGLCKTRMIOS                   = 0x5456\n\tTIOCGPGRP                        = 0x540f\n\tTIOCGPKT                         = 0x80045438\n\tTIOCGPTLCK                       = 0x80045439\n\tTIOCGPTN                         = 0x80045430\n\tTIOCGPTPEER                      = 0x5441\n\tTIOCGRS485                       = 0x542e\n\tTIOCGSERIAL                      = 0x541e\n\tTIOCGSID                         = 0x5429\n\tTIOCGSOFTCAR                     = 0x5419\n\tTIOCGWINSZ                       = 0x5413\n\tTIOCINQ                          = 0x541b\n\tTIOCLINUX                        = 0x541c\n\tTIOCMBIC                         = 0x5417\n\tTIOCMBIS                         = 0x5416\n\tTIOCMGET                         = 0x5415\n\tTIOCMIWAIT                       = 0x545c\n\tTIOCMSET                         = 0x5418\n\tTIOCM_CAR                        = 0x40\n\tTIOCM_CD                         = 0x40\n\tTIOCM_CTS                        = 0x20\n\tTIOCM_DSR                        = 0x100\n\tTIOCM_RI                         = 0x80\n\tTIOCM_RNG                        = 0x80\n\tTIOCM_SR                         = 0x10\n\tTIOCM_ST                         = 0x8\n\tTIOCNOTTY                        = 0x5422\n\tTIOCNXCL                         = 0x540d\n\tTIOCOUTQ                         = 0x5411\n\tTIOCPKT                          = 0x5420\n\tTIOCSBRK                         = 0x5427\n\tTIOCSCTTY                        = 0x540e\n\tTIOCSERCONFIG                    = 0x5453\n\tTIOCSERGETLSR                    = 0x5459\n\tTIOCSERGETMULTI                  = 0x545a\n\tTIOCSERGSTRUCT                   = 0x5458\n\tTIOCSERGWILD                     = 0x5454\n\tTIOCSERSETMULTI                  = 0x545b\n\tTIOCSERSWILD                     = 0x5455\n\tTIOCSER_TEMT                     = 0x1\n\tTIOCSETD                         = 0x5423\n\tTIOCSIG                          = 0x40045436\n\tTIOCSISO7816                     = 0xc0285443\n\tTIOCSLCKTRMIOS                   = 0x5457\n\tTIOCSPGRP                        = 0x5410\n\tTIOCSPTLCK                       = 0x40045431\n\tTIOCSRS485                       = 0x542f\n\tTIOCSSERIAL                      = 0x541f\n\tTIOCSSOFTCAR                     = 0x541a\n\tTIOCSTI                          = 0x5412\n\tTIOCSWINSZ                       = 0x5414\n\tTIOCVHANGUP                      = 0x5437\n\tTOSTOP                           = 0x100\n\tTUNATTACHFILTER                  = 0x400854d5\n\tTUNDETACHFILTER                  = 0x400854d6\n\tTUNGETDEVNETNS                   = 0x54e3\n\tTUNGETFEATURES                   = 0x800454cf\n\tTUNGETFILTER                     = 0x800854db\n\tTUNGETIFF                        = 0x800454d2\n\tTUNGETSNDBUF                     = 0x800454d3\n\tTUNGETVNETBE                     = 0x800454df\n\tTUNGETVNETHDRSZ                  = 0x800454d7\n\tTUNGETVNETLE                     = 0x800454dd\n\tTUNSETCARRIER                    = 0x400454e2\n\tTUNSETDEBUG                      = 0x400454c9\n\tTUNSETFILTEREBPF                 = 0x800454e1\n\tTUNSETGROUP                      = 0x400454ce\n\tTUNSETIFF                        = 0x400454ca\n\tTUNSETIFINDEX                    = 0x400454da\n\tTUNSETLINK                       = 0x400454cd\n\tTUNSETNOCSUM                     = 0x400454c8\n\tTUNSETOFFLOAD                    = 0x400454d0\n\tTUNSETOWNER                      = 0x400454cc\n\tTUNSETPERSIST                    = 0x400454cb\n\tTUNSETQUEUE                      = 0x400454d9\n\tTUNSETSNDBUF                     = 0x400454d4\n\tTUNSETSTEERINGEBPF               = 0x800454e0\n\tTUNSETTXFILTER                   = 0x400454d1\n\tTUNSETVNETBE                     = 0x400454de\n\tTUNSETVNETHDRSZ                  = 0x400454d8\n\tTUNSETVNETLE                     = 0x400454dc\n\tUBI_IOCATT                       = 0x40186f40\n\tUBI_IOCDET                       = 0x40046f41\n\tUBI_IOCEBCH                      = 0x40044f02\n\tUBI_IOCEBER                      = 0x40044f01\n\tUBI_IOCEBISMAP                   = 0x80044f05\n\tUBI_IOCEBMAP                     = 0x40084f03\n\tUBI_IOCEBUNMAP                   = 0x40044f04\n\tUBI_IOCMKVOL                     = 0x40986f00\n\tUBI_IOCRMVOL                     = 0x40046f01\n\tUBI_IOCRNVOL                     = 0x51106f03\n\tUBI_IOCRPEB                      = 0x40046f04\n\tUBI_IOCRSVOL                     = 0x400c6f02\n\tUBI_IOCSETVOLPROP                = 0x40104f06\n\tUBI_IOCSPEB                      = 0x40046f05\n\tUBI_IOCVOLCRBLK                  = 0x40804f07\n\tUBI_IOCVOLRMBLK                  = 0x4f08\n\tUBI_IOCVOLUP                     = 0x40084f00\n\tVDISCARD                         = 0xd\n\tVEOF                             = 0x4\n\tVEOL                             = 0xb\n\tVEOL2                            = 0x10\n\tVMIN                             = 0x6\n\tVREPRINT                         = 0xc\n\tVSTART                           = 0x8\n\tVSTOP                            = 0x9\n\tVSUSP                            = 0xa\n\tVSWTC                            = 0x7\n\tVT1                              = 0x4000\n\tVTDLY                            = 0x4000\n\tVTIME                            = 0x5\n\tVWERASE                          = 0xe\n\tWDIOC_GETBOOTSTATUS              = 0x80045702\n\tWDIOC_GETPRETIMEOUT              = 0x80045709\n\tWDIOC_GETSTATUS                  = 0x80045701\n\tWDIOC_GETSUPPORT                 = 0x80285700\n\tWDIOC_GETTEMP                    = 0x80045703\n\tWDIOC_GETTIMELEFT                = 0x8004570a\n\tWDIOC_GETTIMEOUT                 = 0x80045707\n\tWDIOC_KEEPALIVE                  = 0x80045705\n\tWDIOC_SETOPTIONS                 = 0x80045704\n\tWORDSIZE                         = 0x20\n\tXCASE                            = 0x4\n\tXTABS                            = 0x1800\n\t_HIDIOCGRAWNAME                  = 0x80804804\n\t_HIDIOCGRAWPHYS                  = 0x80404805\n\t_HIDIOCGRAWUNIQ                  = 0x80404808\n)\n\n// Errors\nconst (\n\tEADDRINUSE      = syscall.Errno(0x62)\n\tEADDRNOTAVAIL   = syscall.Errno(0x63)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x61)\n\tEALREADY        = syscall.Errno(0x72)\n\tEBADE           = syscall.Errno(0x34)\n\tEBADFD          = syscall.Errno(0x4d)\n\tEBADMSG         = syscall.Errno(0x4a)\n\tEBADR           = syscall.Errno(0x35)\n\tEBADRQC         = syscall.Errno(0x38)\n\tEBADSLT         = syscall.Errno(0x39)\n\tEBFONT          = syscall.Errno(0x3b)\n\tECANCELED       = syscall.Errno(0x7d)\n\tECHRNG          = syscall.Errno(0x2c)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x67)\n\tECONNREFUSED    = syscall.Errno(0x6f)\n\tECONNRESET      = syscall.Errno(0x68)\n\tEDEADLK         = syscall.Errno(0x23)\n\tEDEADLOCK       = syscall.Errno(0x23)\n\tEDESTADDRREQ    = syscall.Errno(0x59)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x7a)\n\tEHOSTDOWN       = syscall.Errno(0x70)\n\tEHOSTUNREACH    = syscall.Errno(0x71)\n\tEHWPOISON       = syscall.Errno(0x85)\n\tEIDRM           = syscall.Errno(0x2b)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x73)\n\tEISCONN         = syscall.Errno(0x6a)\n\tEISNAM          = syscall.Errno(0x78)\n\tEKEYEXPIRED     = syscall.Errno(0x7f)\n\tEKEYREJECTED    = syscall.Errno(0x81)\n\tEKEYREVOKED     = syscall.Errno(0x80)\n\tEL2HLT          = syscall.Errno(0x33)\n\tEL2NSYNC        = syscall.Errno(0x2d)\n\tEL3HLT          = syscall.Errno(0x2e)\n\tEL3RST          = syscall.Errno(0x2f)\n\tELIBACC         = syscall.Errno(0x4f)\n\tELIBBAD         = syscall.Errno(0x50)\n\tELIBEXEC        = syscall.Errno(0x53)\n\tELIBMAX         = syscall.Errno(0x52)\n\tELIBSCN         = syscall.Errno(0x51)\n\tELNRNG          = syscall.Errno(0x30)\n\tELOOP           = syscall.Errno(0x28)\n\tEMEDIUMTYPE     = syscall.Errno(0x7c)\n\tEMSGSIZE        = syscall.Errno(0x5a)\n\tEMULTIHOP       = syscall.Errno(0x48)\n\tENAMETOOLONG    = syscall.Errno(0x24)\n\tENAVAIL         = syscall.Errno(0x77)\n\tENETDOWN        = syscall.Errno(0x64)\n\tENETRESET       = syscall.Errno(0x66)\n\tENETUNREACH     = syscall.Errno(0x65)\n\tENOANO          = syscall.Errno(0x37)\n\tENOBUFS         = syscall.Errno(0x69)\n\tENOCSI          = syscall.Errno(0x32)\n\tENODATA         = syscall.Errno(0x3d)\n\tENOKEY          = syscall.Errno(0x7e)\n\tENOLCK          = syscall.Errno(0x25)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x7b)\n\tENOMSG          = syscall.Errno(0x2a)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x5c)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x26)\n\tENOTCONN        = syscall.Errno(0x6b)\n\tENOTEMPTY       = syscall.Errno(0x27)\n\tENOTNAM         = syscall.Errno(0x76)\n\tENOTRECOVERABLE = syscall.Errno(0x83)\n\tENOTSOCK        = syscall.Errno(0x58)\n\tENOTSUP         = syscall.Errno(0x5f)\n\tENOTUNIQ        = syscall.Errno(0x4c)\n\tEOPNOTSUPP      = syscall.Errno(0x5f)\n\tEOVERFLOW       = syscall.Errno(0x4b)\n\tEOWNERDEAD      = syscall.Errno(0x82)\n\tEPFNOSUPPORT    = syscall.Errno(0x60)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x5d)\n\tEPROTOTYPE      = syscall.Errno(0x5b)\n\tEREMCHG         = syscall.Errno(0x4e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x79)\n\tERESTART        = syscall.Errno(0x55)\n\tERFKILL         = syscall.Errno(0x84)\n\tESHUTDOWN       = syscall.Errno(0x6c)\n\tESOCKTNOSUPPORT = syscall.Errno(0x5e)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x74)\n\tESTRPIPE        = syscall.Errno(0x56)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x6e)\n\tETOOMANYREFS    = syscall.Errno(0x6d)\n\tEUCLEAN         = syscall.Errno(0x75)\n\tEUNATCH         = syscall.Errno(0x31)\n\tEUSERS          = syscall.Errno(0x57)\n\tEXFULL          = syscall.Errno(0x36)\n)\n\n// Signals\nconst (\n\tSIGBUS    = syscall.Signal(0x7)\n\tSIGCHLD   = syscall.Signal(0x11)\n\tSIGCLD    = syscall.Signal(0x11)\n\tSIGCONT   = syscall.Signal(0x12)\n\tSIGIO     = syscall.Signal(0x1d)\n\tSIGPOLL   = syscall.Signal(0x1d)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x1e)\n\tSIGSTKFLT = syscall.Signal(0x10)\n\tSIGSTOP   = syscall.Signal(0x13)\n\tSIGSYS    = syscall.Signal(0x1f)\n\tSIGTSTP   = syscall.Signal(0x14)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x17)\n\tSIGUSR1   = syscall.Signal(0xa)\n\tSIGUSR2   = syscall.Signal(0xc)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{36, \"ENAMETOOLONG\", \"file name too long\"},\n\t{37, \"ENOLCK\", \"no locks available\"},\n\t{38, \"ENOSYS\", \"function not implemented\"},\n\t{39, \"ENOTEMPTY\", \"directory not empty\"},\n\t{40, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{42, \"ENOMSG\", \"no message of desired type\"},\n\t{43, \"EIDRM\", \"identifier removed\"},\n\t{44, \"ECHRNG\", \"channel number out of range\"},\n\t{45, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{46, \"EL3HLT\", \"level 3 halted\"},\n\t{47, \"EL3RST\", \"level 3 reset\"},\n\t{48, \"ELNRNG\", \"link number out of range\"},\n\t{49, \"EUNATCH\", \"protocol driver not attached\"},\n\t{50, \"ENOCSI\", \"no CSI structure available\"},\n\t{51, \"EL2HLT\", \"level 2 halted\"},\n\t{52, \"EBADE\", \"invalid exchange\"},\n\t{53, \"EBADR\", \"invalid request descriptor\"},\n\t{54, \"EXFULL\", \"exchange full\"},\n\t{55, \"ENOANO\", \"no anode\"},\n\t{56, \"EBADRQC\", \"invalid request code\"},\n\t{57, \"EBADSLT\", \"invalid slot\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{72, \"EMULTIHOP\", \"multihop attempted\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EBADMSG\", \"bad message\"},\n\t{75, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{76, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{77, \"EBADFD\", \"file descriptor in bad state\"},\n\t{78, \"EREMCHG\", \"remote address changed\"},\n\t{79, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{80, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{81, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{82, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{83, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{84, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{85, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{86, \"ESTRPIPE\", \"streams pipe error\"},\n\t{87, \"EUSERS\", \"too many users\"},\n\t{88, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{89, \"EDESTADDRREQ\", \"destination address required\"},\n\t{90, \"EMSGSIZE\", \"message too long\"},\n\t{91, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{92, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{93, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{94, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{95, \"ENOTSUP\", \"operation not supported\"},\n\t{96, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{97, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{98, \"EADDRINUSE\", \"address already in use\"},\n\t{99, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{100, \"ENETDOWN\", \"network is down\"},\n\t{101, \"ENETUNREACH\", \"network is unreachable\"},\n\t{102, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{103, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{104, \"ECONNRESET\", \"connection reset by peer\"},\n\t{105, \"ENOBUFS\", \"no buffer space available\"},\n\t{106, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{107, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{108, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{109, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{110, \"ETIMEDOUT\", \"connection timed out\"},\n\t{111, \"ECONNREFUSED\", \"connection refused\"},\n\t{112, \"EHOSTDOWN\", \"host is down\"},\n\t{113, \"EHOSTUNREACH\", \"no route to host\"},\n\t{114, \"EALREADY\", \"operation already in progress\"},\n\t{115, \"EINPROGRESS\", \"operation now in progress\"},\n\t{116, \"ESTALE\", \"stale file handle\"},\n\t{117, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{118, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{119, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{120, \"EISNAM\", \"is a named type file\"},\n\t{121, \"EREMOTEIO\", \"remote I/O error\"},\n\t{122, \"EDQUOT\", \"disk quota exceeded\"},\n\t{123, \"ENOMEDIUM\", \"no medium found\"},\n\t{124, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{125, \"ECANCELED\", \"operation canceled\"},\n\t{126, \"ENOKEY\", \"required key not available\"},\n\t{127, \"EKEYEXPIRED\", \"key has expired\"},\n\t{128, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{129, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{130, \"EOWNERDEAD\", \"owner died\"},\n\t{131, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{132, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{133, \"EHWPOISON\", \"memory page has hardware error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGBUS\", \"bus error\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGUSR1\", \"user defined signal 1\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGUSR2\", \"user defined signal 2\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGSTKFLT\", \"stack fault\"},\n\t{17, \"SIGCHLD\", \"child exited\"},\n\t{18, \"SIGCONT\", \"continued\"},\n\t{19, \"SIGSTOP\", \"stopped (signal)\"},\n\t{20, \"SIGTSTP\", \"stopped\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGURG\", \"urgent I/O condition\"},\n\t{24, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"file size limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window changed\"},\n\t{29, \"SIGIO\", \"I/O possible\"},\n\t{30, \"SIGPWR\", \"power failure\"},\n\t{31, \"SIGSYS\", \"bad system call\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/arm64/include -fsigned-char\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/arm64/include -fsigned-char _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x1008\n\tB115200                          = 0x1002\n\tB1152000                         = 0x1009\n\tB1500000                         = 0x100a\n\tB2000000                         = 0x100b\n\tB230400                          = 0x1003\n\tB2500000                         = 0x100c\n\tB3000000                         = 0x100d\n\tB3500000                         = 0x100e\n\tB4000000                         = 0x100f\n\tB460800                          = 0x1004\n\tB500000                          = 0x1005\n\tB57600                           = 0x1001\n\tB576000                          = 0x1006\n\tB921600                          = 0x1007\n\tBLKALIGNOFF                      = 0x127a\n\tBLKBSZGET                        = 0x80081270\n\tBLKBSZSET                        = 0x40081271\n\tBLKDISCARD                       = 0x1277\n\tBLKDISCARDZEROES                 = 0x127c\n\tBLKFLSBUF                        = 0x1261\n\tBLKFRAGET                        = 0x1265\n\tBLKFRASET                        = 0x1264\n\tBLKGETDISKSEQ                    = 0x80081280\n\tBLKGETSIZE                       = 0x1260\n\tBLKGETSIZE64                     = 0x80081272\n\tBLKIOMIN                         = 0x1278\n\tBLKIOOPT                         = 0x1279\n\tBLKPBSZGET                       = 0x127b\n\tBLKRAGET                         = 0x1263\n\tBLKRASET                         = 0x1262\n\tBLKROGET                         = 0x125e\n\tBLKROSET                         = 0x125d\n\tBLKROTATIONAL                    = 0x127e\n\tBLKRRPART                        = 0x125f\n\tBLKSECDISCARD                    = 0x127d\n\tBLKSECTGET                       = 0x1267\n\tBLKSECTSET                       = 0x1266\n\tBLKSSZGET                        = 0x1268\n\tBLKZEROOUT                       = 0x127f\n\tBOTHER                           = 0x1000\n\tBS1                              = 0x2000\n\tBSDLY                            = 0x2000\n\tCBAUD                            = 0x100f\n\tCBAUDEX                          = 0x1000\n\tCIBAUD                           = 0x100f0000\n\tCLOCAL                           = 0x800\n\tCR1                              = 0x200\n\tCR2                              = 0x400\n\tCR3                              = 0x600\n\tCRDLY                            = 0x600\n\tCREAD                            = 0x80\n\tCS6                              = 0x10\n\tCS7                              = 0x20\n\tCS8                              = 0x30\n\tCSIZE                            = 0x30\n\tCSTOPB                           = 0x40\n\tDM_MPATH_PROBE_PATHS             = 0xfd12\n\tECCGETLAYOUT                     = 0x81484d11\n\tECCGETSTATS                      = 0x80104d12\n\tECHOCTL                          = 0x200\n\tECHOE                            = 0x10\n\tECHOK                            = 0x20\n\tECHOKE                           = 0x800\n\tECHONL                           = 0x40\n\tECHOPRT                          = 0x400\n\tEFD_CLOEXEC                      = 0x80000\n\tEFD_NONBLOCK                     = 0x800\n\tEPIOCGPARAMS                     = 0x80088a02\n\tEPIOCSPARAMS                     = 0x40088a01\n\tEPOLL_CLOEXEC                    = 0x80000\n\tESR_MAGIC                        = 0x45535201\n\tEXTPROC                          = 0x10000\n\tEXTRA_MAGIC                      = 0x45585401\n\tFF1                              = 0x8000\n\tFFDLY                            = 0x8000\n\tFICLONE                          = 0x40049409\n\tFICLONERANGE                     = 0x4020940d\n\tFLUSHO                           = 0x1000\n\tFPMR_MAGIC                       = 0x46504d52\n\tFPSIMD_MAGIC                     = 0x46508001\n\tFS_IOC_ENABLE_VERITY             = 0x40806685\n\tFS_IOC_GETFLAGS                  = 0x80086601\n\tFS_IOC_GET_ENCRYPTION_NONCE      = 0x8010661b\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x400c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x40106614\n\tFS_IOC_SETFLAGS                  = 0x40086602\n\tFS_IOC_SET_ENCRYPTION_POLICY     = 0x800c6613\n\tF_GETLK                          = 0x5\n\tF_GETLK64                        = 0x5\n\tF_GETOWN                         = 0x9\n\tF_RDLCK                          = 0x0\n\tF_SETLK                          = 0x6\n\tF_SETLK64                        = 0x6\n\tF_SETLKW                         = 0x7\n\tF_SETLKW64                       = 0x7\n\tF_SETOWN                         = 0x8\n\tF_UNLCK                          = 0x2\n\tF_WRLCK                          = 0x1\n\tGCS_MAGIC                        = 0x47435300\n\tHIDIOCGRAWINFO                   = 0x80084803\n\tHIDIOCGRDESC                     = 0x90044802\n\tHIDIOCGRDESCSIZE                 = 0x80044801\n\tHIDIOCREVOKE                     = 0x4004480d\n\tHUPCL                            = 0x400\n\tICANON                           = 0x2\n\tIEXTEN                           = 0x8000\n\tIN_CLOEXEC                       = 0x80000\n\tIN_NONBLOCK                      = 0x800\n\tIOCTL_MEI_NOTIFY_GET             = 0x80044803\n\tIOCTL_MEI_NOTIFY_SET             = 0x40044802\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x7b9\n\tIPV6_FLOWINFO_MASK               = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK              = 0xffff0f00\n\tISIG                             = 0x1\n\tIUCLC                            = 0x200\n\tIXOFF                            = 0x1000\n\tIXON                             = 0x400\n\tMAP_ANON                         = 0x20\n\tMAP_ANONYMOUS                    = 0x20\n\tMAP_DENYWRITE                    = 0x800\n\tMAP_EXECUTABLE                   = 0x1000\n\tMAP_GROWSDOWN                    = 0x100\n\tMAP_HUGETLB                      = 0x40000\n\tMAP_LOCKED                       = 0x2000\n\tMAP_NONBLOCK                     = 0x10000\n\tMAP_NORESERVE                    = 0x4000\n\tMAP_POPULATE                     = 0x8000\n\tMAP_STACK                        = 0x20000\n\tMAP_SYNC                         = 0x80000\n\tMCL_CURRENT                      = 0x1\n\tMCL_FUTURE                       = 0x2\n\tMCL_ONFAULT                      = 0x4\n\tMEMERASE                         = 0x40084d02\n\tMEMERASE64                       = 0x40104d14\n\tMEMGETBADBLOCK                   = 0x40084d0b\n\tMEMGETINFO                       = 0x80204d01\n\tMEMGETOOBSEL                     = 0x80c84d0a\n\tMEMGETREGIONCOUNT                = 0x80044d07\n\tMEMISLOCKED                      = 0x80084d17\n\tMEMLOCK                          = 0x40084d05\n\tMEMREAD                          = 0xc0404d1a\n\tMEMREADOOB                       = 0xc0104d04\n\tMEMSETBADBLOCK                   = 0x40084d0c\n\tMEMUNLOCK                        = 0x40084d06\n\tMEMWRITEOOB                      = 0xc0104d03\n\tMTDFILEMODE                      = 0x4d13\n\tNFDBITS                          = 0x40\n\tNLDLY                            = 0x100\n\tNOFLSH                           = 0x80\n\tNS_GET_MNTNS_ID                  = 0x8008b705\n\tNS_GET_NSTYPE                    = 0xb703\n\tNS_GET_OWNER_UID                 = 0xb704\n\tNS_GET_PARENT                    = 0xb702\n\tNS_GET_PID_FROM_PIDNS            = 0x8004b706\n\tNS_GET_PID_IN_PIDNS              = 0x8004b708\n\tNS_GET_TGID_FROM_PIDNS           = 0x8004b707\n\tNS_GET_TGID_IN_PIDNS             = 0x8004b709\n\tNS_GET_USERNS                    = 0xb701\n\tOLCUC                            = 0x2\n\tONLCR                            = 0x4\n\tOTPERASE                         = 0x400c4d19\n\tOTPGETREGIONCOUNT                = 0x40044d0e\n\tOTPGETREGIONINFO                 = 0x400c4d0f\n\tOTPLOCK                          = 0x800c4d10\n\tOTPSELECT                        = 0x80044d0d\n\tO_APPEND                         = 0x400\n\tO_ASYNC                          = 0x2000\n\tO_CLOEXEC                        = 0x80000\n\tO_CREAT                          = 0x40\n\tO_DIRECT                         = 0x10000\n\tO_DIRECTORY                      = 0x4000\n\tO_DSYNC                          = 0x1000\n\tO_EXCL                           = 0x80\n\tO_FSYNC                          = 0x101000\n\tO_LARGEFILE                      = 0x0\n\tO_NDELAY                         = 0x800\n\tO_NOATIME                        = 0x40000\n\tO_NOCTTY                         = 0x100\n\tO_NOFOLLOW                       = 0x8000\n\tO_NONBLOCK                       = 0x800\n\tO_PATH                           = 0x200000\n\tO_RSYNC                          = 0x101000\n\tO_SYNC                           = 0x101000\n\tO_TMPFILE                        = 0x404000\n\tO_TRUNC                          = 0x200\n\tPARENB                           = 0x100\n\tPARODD                           = 0x200\n\tPENDIN                           = 0x4000\n\tPERF_EVENT_IOC_DISABLE           = 0x2401\n\tPERF_EVENT_IOC_ENABLE            = 0x2400\n\tPERF_EVENT_IOC_ID                = 0x80082407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4008240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT      = 0x40042409\n\tPERF_EVENT_IOC_PERIOD            = 0x40082404\n\tPERF_EVENT_IOC_QUERY_BPF         = 0xc008240a\n\tPERF_EVENT_IOC_REFRESH           = 0x2402\n\tPERF_EVENT_IOC_RESET             = 0x2403\n\tPERF_EVENT_IOC_SET_BPF           = 0x40042408\n\tPERF_EVENT_IOC_SET_FILTER        = 0x40082406\n\tPERF_EVENT_IOC_SET_OUTPUT        = 0x2405\n\tPOE_MAGIC                        = 0x504f4530\n\tPPPIOCATTACH                     = 0x4004743d\n\tPPPIOCATTCHAN                    = 0x40047438\n\tPPPIOCBRIDGECHAN                 = 0x40047435\n\tPPPIOCCONNECT                    = 0x4004743a\n\tPPPIOCDETACH                     = 0x4004743c\n\tPPPIOCDISCONN                    = 0x7439\n\tPPPIOCGASYNCMAP                  = 0x80047458\n\tPPPIOCGCHAN                      = 0x80047437\n\tPPPIOCGDEBUG                     = 0x80047441\n\tPPPIOCGFLAGS                     = 0x8004745a\n\tPPPIOCGIDLE                      = 0x8010743f\n\tPPPIOCGIDLE32                    = 0x8008743f\n\tPPPIOCGIDLE64                    = 0x8010743f\n\tPPPIOCGL2TPSTATS                 = 0x80487436\n\tPPPIOCGMRU                       = 0x80047453\n\tPPPIOCGRASYNCMAP                 = 0x80047455\n\tPPPIOCGUNIT                      = 0x80047456\n\tPPPIOCGXASYNCMAP                 = 0x80207450\n\tPPPIOCSACTIVE                    = 0x40107446\n\tPPPIOCSASYNCMAP                  = 0x40047457\n\tPPPIOCSCOMPRESS                  = 0x4010744d\n\tPPPIOCSDEBUG                     = 0x40047440\n\tPPPIOCSFLAGS                     = 0x40047459\n\tPPPIOCSMAXCID                    = 0x40047451\n\tPPPIOCSMRRU                      = 0x4004743b\n\tPPPIOCSMRU                       = 0x40047452\n\tPPPIOCSNPMODE                    = 0x4008744b\n\tPPPIOCSPASS                      = 0x40107447\n\tPPPIOCSRASYNCMAP                 = 0x40047454\n\tPPPIOCSXASYNCMAP                 = 0x4020744f\n\tPPPIOCUNBRIDGECHAN               = 0x7434\n\tPPPIOCXFERUNIT                   = 0x744e\n\tPROT_BTI                         = 0x10\n\tPROT_MTE                         = 0x20\n\tPR_SET_PTRACER_ANY               = 0xffffffffffffffff\n\tPTP_CLOCK_GETCAPS                = 0x80503d01\n\tPTP_CLOCK_GETCAPS2               = 0x80503d0a\n\tPTP_ENABLE_PPS                   = 0x40043d04\n\tPTP_ENABLE_PPS2                  = 0x40043d0d\n\tPTP_EXTTS_REQUEST                = 0x40103d02\n\tPTP_EXTTS_REQUEST2               = 0x40103d0b\n\tPTP_MASK_CLEAR_ALL               = 0x3d13\n\tPTP_MASK_EN_SINGLE               = 0x40043d14\n\tPTP_PEROUT_REQUEST               = 0x40383d03\n\tPTP_PEROUT_REQUEST2              = 0x40383d0c\n\tPTP_PIN_SETFUNC                  = 0x40603d07\n\tPTP_PIN_SETFUNC2                 = 0x40603d10\n\tPTP_SYS_OFFSET                   = 0x43403d05\n\tPTP_SYS_OFFSET2                  = 0x43403d0e\n\tPTRACE_PEEKMTETAGS               = 0x21\n\tPTRACE_POKEMTETAGS               = 0x22\n\tPTRACE_SYSEMU                    = 0x1f\n\tPTRACE_SYSEMU_SINGLESTEP         = 0x20\n\tRLIMIT_AS                        = 0x9\n\tRLIMIT_MEMLOCK                   = 0x8\n\tRLIMIT_NOFILE                    = 0x7\n\tRLIMIT_NPROC                     = 0x6\n\tRLIMIT_RSS                       = 0x5\n\tRNDADDENTROPY                    = 0x40085203\n\tRNDADDTOENTCNT                   = 0x40045201\n\tRNDCLEARPOOL                     = 0x5206\n\tRNDGETENTCNT                     = 0x80045200\n\tRNDGETPOOL                       = 0x80085202\n\tRNDRESEEDCRNG                    = 0x5207\n\tRNDZAPENTCNT                     = 0x5204\n\tRTC_AIE_OFF                      = 0x7002\n\tRTC_AIE_ON                       = 0x7001\n\tRTC_ALM_READ                     = 0x80247008\n\tRTC_ALM_SET                      = 0x40247007\n\tRTC_EPOCH_READ                   = 0x8008700d\n\tRTC_EPOCH_SET                    = 0x4008700e\n\tRTC_IRQP_READ                    = 0x8008700b\n\tRTC_IRQP_SET                     = 0x4008700c\n\tRTC_PARAM_GET                    = 0x40187013\n\tRTC_PARAM_SET                    = 0x40187014\n\tRTC_PIE_OFF                      = 0x7006\n\tRTC_PIE_ON                       = 0x7005\n\tRTC_PLL_GET                      = 0x80207011\n\tRTC_PLL_SET                      = 0x40207012\n\tRTC_RD_TIME                      = 0x80247009\n\tRTC_SET_TIME                     = 0x4024700a\n\tRTC_UIE_OFF                      = 0x7004\n\tRTC_UIE_ON                       = 0x7003\n\tRTC_VL_CLR                       = 0x7014\n\tRTC_VL_READ                      = 0x80047013\n\tRTC_WIE_OFF                      = 0x7010\n\tRTC_WIE_ON                       = 0x700f\n\tRTC_WKALM_RD                     = 0x80287010\n\tRTC_WKALM_SET                    = 0x4028700f\n\tSCM_DEVMEM_DMABUF                = 0x4f\n\tSCM_DEVMEM_LINEAR                = 0x4e\n\tSCM_TIMESTAMPING                 = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS       = 0x36\n\tSCM_TIMESTAMPING_PKTINFO         = 0x3a\n\tSCM_TIMESTAMPNS                  = 0x23\n\tSCM_TS_OPT_ID                    = 0x51\n\tSCM_TXTIME                       = 0x3d\n\tSCM_WIFI_STATUS                  = 0x29\n\tSECCOMP_IOCTL_NOTIF_ADDFD        = 0x40182103\n\tSECCOMP_IOCTL_NOTIF_ID_VALID     = 0x40082102\n\tSECCOMP_IOCTL_NOTIF_SET_FLAGS    = 0x40082104\n\tSFD_CLOEXEC                      = 0x80000\n\tSFD_NONBLOCK                     = 0x800\n\tSIOCATMARK                       = 0x8905\n\tSIOCGPGRP                        = 0x8904\n\tSIOCGSTAMPNS_NEW                 = 0x80108907\n\tSIOCGSTAMP_NEW                   = 0x80108906\n\tSIOCINQ                          = 0x541b\n\tSIOCOUTQ                         = 0x5411\n\tSIOCSPGRP                        = 0x8902\n\tSOCK_CLOEXEC                     = 0x80000\n\tSOCK_DGRAM                       = 0x2\n\tSOCK_NONBLOCK                    = 0x800\n\tSOCK_STREAM                      = 0x1\n\tSOL_SOCKET                       = 0x1\n\tSO_ACCEPTCONN                    = 0x1e\n\tSO_ATTACH_BPF                    = 0x32\n\tSO_ATTACH_REUSEPORT_CBPF         = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF         = 0x34\n\tSO_BINDTODEVICE                  = 0x19\n\tSO_BINDTOIFINDEX                 = 0x3e\n\tSO_BPF_EXTENSIONS                = 0x30\n\tSO_BROADCAST                     = 0x6\n\tSO_BSDCOMPAT                     = 0xe\n\tSO_BUF_LOCK                      = 0x48\n\tSO_BUSY_POLL                     = 0x2e\n\tSO_BUSY_POLL_BUDGET              = 0x46\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\n\tSO_DEVMEM_DMABUF                 = 0x4f\n\tSO_DEVMEM_DONTNEED               = 0x50\n\tSO_DEVMEM_LINEAR                 = 0x4e\n\tSO_DOMAIN                        = 0x27\n\tSO_DONTROUTE                     = 0x5\n\tSO_ERROR                         = 0x4\n\tSO_INCOMING_CPU                  = 0x31\n\tSO_INCOMING_NAPI_ID              = 0x38\n\tSO_KEEPALIVE                     = 0x9\n\tSO_LINGER                        = 0xd\n\tSO_LOCK_FILTER                   = 0x2c\n\tSO_MARK                          = 0x24\n\tSO_MAX_PACING_RATE               = 0x2f\n\tSO_MEMINFO                       = 0x37\n\tSO_NETNS_COOKIE                  = 0x47\n\tSO_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0xa\n\tSO_PASSCRED                      = 0x10\n\tSO_PASSPIDFD                     = 0x4c\n\tSO_PASSRIGHTS                    = 0x53\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x11\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERPIDFD                     = 0x4d\n\tSO_PEERSEC                       = 0x1f\n\tSO_PREFER_BUSY_POLL              = 0x45\n\tSO_PROTOCOL                      = 0x26\n\tSO_RCVBUF                        = 0x8\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x12\n\tSO_RCVMARK                       = 0x4b\n\tSO_RCVPRIORITY                   = 0x52\n\tSO_RCVTIMEO                      = 0x14\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x14\n\tSO_RESERVE_MEM                   = 0x49\n\tSO_REUSEADDR                     = 0x2\n\tSO_REUSEPORT                     = 0xf\n\tSO_RXQ_OVFL                      = 0x28\n\tSO_SECURITY_AUTHENTICATION       = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK   = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT = 0x17\n\tSO_SELECT_ERR_QUEUE              = 0x2d\n\tSO_SNDBUF                        = 0x7\n\tSO_SNDBUFFORCE                   = 0x20\n\tSO_SNDLOWAT                      = 0x13\n\tSO_SNDTIMEO                      = 0x15\n\tSO_SNDTIMEO_NEW                  = 0x43\n\tSO_SNDTIMEO_OLD                  = 0x15\n\tSO_TIMESTAMPING                  = 0x25\n\tSO_TIMESTAMPING_NEW              = 0x41\n\tSO_TIMESTAMPING_OLD              = 0x25\n\tSO_TIMESTAMPNS                   = 0x23\n\tSO_TIMESTAMPNS_NEW               = 0x40\n\tSO_TIMESTAMPNS_OLD               = 0x23\n\tSO_TIMESTAMP_NEW                 = 0x3f\n\tSO_TXREHASH                      = 0x4a\n\tSO_TXTIME                        = 0x3d\n\tSO_TYPE                          = 0x3\n\tSO_WIFI_STATUS                   = 0x29\n\tSO_ZEROCOPY                      = 0x3c\n\tSVE_MAGIC                        = 0x53564501\n\tTAB1                             = 0x800\n\tTAB2                             = 0x1000\n\tTAB3                             = 0x1800\n\tTABDLY                           = 0x1800\n\tTCFLSH                           = 0x540b\n\tTCGETA                           = 0x5405\n\tTCGETS                           = 0x5401\n\tTCGETS2                          = 0x802c542a\n\tTCGETX                           = 0x5432\n\tTCSAFLUSH                        = 0x2\n\tTCSBRK                           = 0x5409\n\tTCSBRKP                          = 0x5425\n\tTCSETA                           = 0x5406\n\tTCSETAF                          = 0x5408\n\tTCSETAW                          = 0x5407\n\tTCSETS                           = 0x5402\n\tTCSETS2                          = 0x402c542b\n\tTCSETSF                          = 0x5404\n\tTCSETSF2                         = 0x402c542d\n\tTCSETSW                          = 0x5403\n\tTCSETSW2                         = 0x402c542c\n\tTCSETX                           = 0x5433\n\tTCSETXF                          = 0x5434\n\tTCSETXW                          = 0x5435\n\tTCXONC                           = 0x540a\n\tTFD_CLOEXEC                      = 0x80000\n\tTFD_NONBLOCK                     = 0x800\n\tTIOCCBRK                         = 0x5428\n\tTIOCCONS                         = 0x541d\n\tTIOCEXCL                         = 0x540c\n\tTIOCGDEV                         = 0x80045432\n\tTIOCGETD                         = 0x5424\n\tTIOCGEXCL                        = 0x80045440\n\tTIOCGICOUNT                      = 0x545d\n\tTIOCGISO7816                     = 0x80285442\n\tTIOCGLCKTRMIOS                   = 0x5456\n\tTIOCGPGRP                        = 0x540f\n\tTIOCGPKT                         = 0x80045438\n\tTIOCGPTLCK                       = 0x80045439\n\tTIOCGPTN                         = 0x80045430\n\tTIOCGPTPEER                      = 0x5441\n\tTIOCGRS485                       = 0x542e\n\tTIOCGSERIAL                      = 0x541e\n\tTIOCGSID                         = 0x5429\n\tTIOCGSOFTCAR                     = 0x5419\n\tTIOCGWINSZ                       = 0x5413\n\tTIOCINQ                          = 0x541b\n\tTIOCLINUX                        = 0x541c\n\tTIOCMBIC                         = 0x5417\n\tTIOCMBIS                         = 0x5416\n\tTIOCMGET                         = 0x5415\n\tTIOCMIWAIT                       = 0x545c\n\tTIOCMSET                         = 0x5418\n\tTIOCM_CAR                        = 0x40\n\tTIOCM_CD                         = 0x40\n\tTIOCM_CTS                        = 0x20\n\tTIOCM_DSR                        = 0x100\n\tTIOCM_RI                         = 0x80\n\tTIOCM_RNG                        = 0x80\n\tTIOCM_SR                         = 0x10\n\tTIOCM_ST                         = 0x8\n\tTIOCNOTTY                        = 0x5422\n\tTIOCNXCL                         = 0x540d\n\tTIOCOUTQ                         = 0x5411\n\tTIOCPKT                          = 0x5420\n\tTIOCSBRK                         = 0x5427\n\tTIOCSCTTY                        = 0x540e\n\tTIOCSERCONFIG                    = 0x5453\n\tTIOCSERGETLSR                    = 0x5459\n\tTIOCSERGETMULTI                  = 0x545a\n\tTIOCSERGSTRUCT                   = 0x5458\n\tTIOCSERGWILD                     = 0x5454\n\tTIOCSERSETMULTI                  = 0x545b\n\tTIOCSERSWILD                     = 0x5455\n\tTIOCSER_TEMT                     = 0x1\n\tTIOCSETD                         = 0x5423\n\tTIOCSIG                          = 0x40045436\n\tTIOCSISO7816                     = 0xc0285443\n\tTIOCSLCKTRMIOS                   = 0x5457\n\tTIOCSPGRP                        = 0x5410\n\tTIOCSPTLCK                       = 0x40045431\n\tTIOCSRS485                       = 0x542f\n\tTIOCSSERIAL                      = 0x541f\n\tTIOCSSOFTCAR                     = 0x541a\n\tTIOCSTI                          = 0x5412\n\tTIOCSWINSZ                       = 0x5414\n\tTIOCVHANGUP                      = 0x5437\n\tTOSTOP                           = 0x100\n\tTPIDR2_MAGIC                     = 0x54504902\n\tTUNATTACHFILTER                  = 0x401054d5\n\tTUNDETACHFILTER                  = 0x401054d6\n\tTUNGETDEVNETNS                   = 0x54e3\n\tTUNGETFEATURES                   = 0x800454cf\n\tTUNGETFILTER                     = 0x801054db\n\tTUNGETIFF                        = 0x800454d2\n\tTUNGETSNDBUF                     = 0x800454d3\n\tTUNGETVNETBE                     = 0x800454df\n\tTUNGETVNETHDRSZ                  = 0x800454d7\n\tTUNGETVNETLE                     = 0x800454dd\n\tTUNSETCARRIER                    = 0x400454e2\n\tTUNSETDEBUG                      = 0x400454c9\n\tTUNSETFILTEREBPF                 = 0x800454e1\n\tTUNSETGROUP                      = 0x400454ce\n\tTUNSETIFF                        = 0x400454ca\n\tTUNSETIFINDEX                    = 0x400454da\n\tTUNSETLINK                       = 0x400454cd\n\tTUNSETNOCSUM                     = 0x400454c8\n\tTUNSETOFFLOAD                    = 0x400454d0\n\tTUNSETOWNER                      = 0x400454cc\n\tTUNSETPERSIST                    = 0x400454cb\n\tTUNSETQUEUE                      = 0x400454d9\n\tTUNSETSNDBUF                     = 0x400454d4\n\tTUNSETSTEERINGEBPF               = 0x800454e0\n\tTUNSETTXFILTER                   = 0x400454d1\n\tTUNSETVNETBE                     = 0x400454de\n\tTUNSETVNETHDRSZ                  = 0x400454d8\n\tTUNSETVNETLE                     = 0x400454dc\n\tUBI_IOCATT                       = 0x40186f40\n\tUBI_IOCDET                       = 0x40046f41\n\tUBI_IOCEBCH                      = 0x40044f02\n\tUBI_IOCEBER                      = 0x40044f01\n\tUBI_IOCEBISMAP                   = 0x80044f05\n\tUBI_IOCEBMAP                     = 0x40084f03\n\tUBI_IOCEBUNMAP                   = 0x40044f04\n\tUBI_IOCMKVOL                     = 0x40986f00\n\tUBI_IOCRMVOL                     = 0x40046f01\n\tUBI_IOCRNVOL                     = 0x51106f03\n\tUBI_IOCRPEB                      = 0x40046f04\n\tUBI_IOCRSVOL                     = 0x400c6f02\n\tUBI_IOCSETVOLPROP                = 0x40104f06\n\tUBI_IOCSPEB                      = 0x40046f05\n\tUBI_IOCVOLCRBLK                  = 0x40804f07\n\tUBI_IOCVOLRMBLK                  = 0x4f08\n\tUBI_IOCVOLUP                     = 0x40084f00\n\tVDISCARD                         = 0xd\n\tVEOF                             = 0x4\n\tVEOL                             = 0xb\n\tVEOL2                            = 0x10\n\tVMIN                             = 0x6\n\tVREPRINT                         = 0xc\n\tVSTART                           = 0x8\n\tVSTOP                            = 0x9\n\tVSUSP                            = 0xa\n\tVSWTC                            = 0x7\n\tVT1                              = 0x4000\n\tVTDLY                            = 0x4000\n\tVTIME                            = 0x5\n\tVWERASE                          = 0xe\n\tWDIOC_GETBOOTSTATUS              = 0x80045702\n\tWDIOC_GETPRETIMEOUT              = 0x80045709\n\tWDIOC_GETSTATUS                  = 0x80045701\n\tWDIOC_GETSUPPORT                 = 0x80285700\n\tWDIOC_GETTEMP                    = 0x80045703\n\tWDIOC_GETTIMELEFT                = 0x8004570a\n\tWDIOC_GETTIMEOUT                 = 0x80045707\n\tWDIOC_KEEPALIVE                  = 0x80045705\n\tWDIOC_SETOPTIONS                 = 0x80045704\n\tWORDSIZE                         = 0x40\n\tXCASE                            = 0x4\n\tXTABS                            = 0x1800\n\tZA_MAGIC                         = 0x54366345\n\tZT_MAGIC                         = 0x5a544e01\n\t_HIDIOCGRAWNAME                  = 0x80804804\n\t_HIDIOCGRAWPHYS                  = 0x80404805\n\t_HIDIOCGRAWUNIQ                  = 0x80404808\n)\n\n// Errors\nconst (\n\tEADDRINUSE      = syscall.Errno(0x62)\n\tEADDRNOTAVAIL   = syscall.Errno(0x63)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x61)\n\tEALREADY        = syscall.Errno(0x72)\n\tEBADE           = syscall.Errno(0x34)\n\tEBADFD          = syscall.Errno(0x4d)\n\tEBADMSG         = syscall.Errno(0x4a)\n\tEBADR           = syscall.Errno(0x35)\n\tEBADRQC         = syscall.Errno(0x38)\n\tEBADSLT         = syscall.Errno(0x39)\n\tEBFONT          = syscall.Errno(0x3b)\n\tECANCELED       = syscall.Errno(0x7d)\n\tECHRNG          = syscall.Errno(0x2c)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x67)\n\tECONNREFUSED    = syscall.Errno(0x6f)\n\tECONNRESET      = syscall.Errno(0x68)\n\tEDEADLK         = syscall.Errno(0x23)\n\tEDEADLOCK       = syscall.Errno(0x23)\n\tEDESTADDRREQ    = syscall.Errno(0x59)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x7a)\n\tEHOSTDOWN       = syscall.Errno(0x70)\n\tEHOSTUNREACH    = syscall.Errno(0x71)\n\tEHWPOISON       = syscall.Errno(0x85)\n\tEIDRM           = syscall.Errno(0x2b)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x73)\n\tEISCONN         = syscall.Errno(0x6a)\n\tEISNAM          = syscall.Errno(0x78)\n\tEKEYEXPIRED     = syscall.Errno(0x7f)\n\tEKEYREJECTED    = syscall.Errno(0x81)\n\tEKEYREVOKED     = syscall.Errno(0x80)\n\tEL2HLT          = syscall.Errno(0x33)\n\tEL2NSYNC        = syscall.Errno(0x2d)\n\tEL3HLT          = syscall.Errno(0x2e)\n\tEL3RST          = syscall.Errno(0x2f)\n\tELIBACC         = syscall.Errno(0x4f)\n\tELIBBAD         = syscall.Errno(0x50)\n\tELIBEXEC        = syscall.Errno(0x53)\n\tELIBMAX         = syscall.Errno(0x52)\n\tELIBSCN         = syscall.Errno(0x51)\n\tELNRNG          = syscall.Errno(0x30)\n\tELOOP           = syscall.Errno(0x28)\n\tEMEDIUMTYPE     = syscall.Errno(0x7c)\n\tEMSGSIZE        = syscall.Errno(0x5a)\n\tEMULTIHOP       = syscall.Errno(0x48)\n\tENAMETOOLONG    = syscall.Errno(0x24)\n\tENAVAIL         = syscall.Errno(0x77)\n\tENETDOWN        = syscall.Errno(0x64)\n\tENETRESET       = syscall.Errno(0x66)\n\tENETUNREACH     = syscall.Errno(0x65)\n\tENOANO          = syscall.Errno(0x37)\n\tENOBUFS         = syscall.Errno(0x69)\n\tENOCSI          = syscall.Errno(0x32)\n\tENODATA         = syscall.Errno(0x3d)\n\tENOKEY          = syscall.Errno(0x7e)\n\tENOLCK          = syscall.Errno(0x25)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x7b)\n\tENOMSG          = syscall.Errno(0x2a)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x5c)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x26)\n\tENOTCONN        = syscall.Errno(0x6b)\n\tENOTEMPTY       = syscall.Errno(0x27)\n\tENOTNAM         = syscall.Errno(0x76)\n\tENOTRECOVERABLE = syscall.Errno(0x83)\n\tENOTSOCK        = syscall.Errno(0x58)\n\tENOTSUP         = syscall.Errno(0x5f)\n\tENOTUNIQ        = syscall.Errno(0x4c)\n\tEOPNOTSUPP      = syscall.Errno(0x5f)\n\tEOVERFLOW       = syscall.Errno(0x4b)\n\tEOWNERDEAD      = syscall.Errno(0x82)\n\tEPFNOSUPPORT    = syscall.Errno(0x60)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x5d)\n\tEPROTOTYPE      = syscall.Errno(0x5b)\n\tEREMCHG         = syscall.Errno(0x4e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x79)\n\tERESTART        = syscall.Errno(0x55)\n\tERFKILL         = syscall.Errno(0x84)\n\tESHUTDOWN       = syscall.Errno(0x6c)\n\tESOCKTNOSUPPORT = syscall.Errno(0x5e)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x74)\n\tESTRPIPE        = syscall.Errno(0x56)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x6e)\n\tETOOMANYREFS    = syscall.Errno(0x6d)\n\tEUCLEAN         = syscall.Errno(0x75)\n\tEUNATCH         = syscall.Errno(0x31)\n\tEUSERS          = syscall.Errno(0x57)\n\tEXFULL          = syscall.Errno(0x36)\n)\n\n// Signals\nconst (\n\tSIGBUS    = syscall.Signal(0x7)\n\tSIGCHLD   = syscall.Signal(0x11)\n\tSIGCLD    = syscall.Signal(0x11)\n\tSIGCONT   = syscall.Signal(0x12)\n\tSIGIO     = syscall.Signal(0x1d)\n\tSIGPOLL   = syscall.Signal(0x1d)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x1e)\n\tSIGSTKFLT = syscall.Signal(0x10)\n\tSIGSTOP   = syscall.Signal(0x13)\n\tSIGSYS    = syscall.Signal(0x1f)\n\tSIGTSTP   = syscall.Signal(0x14)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x17)\n\tSIGUSR1   = syscall.Signal(0xa)\n\tSIGUSR2   = syscall.Signal(0xc)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{36, \"ENAMETOOLONG\", \"file name too long\"},\n\t{37, \"ENOLCK\", \"no locks available\"},\n\t{38, \"ENOSYS\", \"function not implemented\"},\n\t{39, \"ENOTEMPTY\", \"directory not empty\"},\n\t{40, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{42, \"ENOMSG\", \"no message of desired type\"},\n\t{43, \"EIDRM\", \"identifier removed\"},\n\t{44, \"ECHRNG\", \"channel number out of range\"},\n\t{45, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{46, \"EL3HLT\", \"level 3 halted\"},\n\t{47, \"EL3RST\", \"level 3 reset\"},\n\t{48, \"ELNRNG\", \"link number out of range\"},\n\t{49, \"EUNATCH\", \"protocol driver not attached\"},\n\t{50, \"ENOCSI\", \"no CSI structure available\"},\n\t{51, \"EL2HLT\", \"level 2 halted\"},\n\t{52, \"EBADE\", \"invalid exchange\"},\n\t{53, \"EBADR\", \"invalid request descriptor\"},\n\t{54, \"EXFULL\", \"exchange full\"},\n\t{55, \"ENOANO\", \"no anode\"},\n\t{56, \"EBADRQC\", \"invalid request code\"},\n\t{57, \"EBADSLT\", \"invalid slot\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{72, \"EMULTIHOP\", \"multihop attempted\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EBADMSG\", \"bad message\"},\n\t{75, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{76, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{77, \"EBADFD\", \"file descriptor in bad state\"},\n\t{78, \"EREMCHG\", \"remote address changed\"},\n\t{79, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{80, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{81, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{82, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{83, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{84, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{85, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{86, \"ESTRPIPE\", \"streams pipe error\"},\n\t{87, \"EUSERS\", \"too many users\"},\n\t{88, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{89, \"EDESTADDRREQ\", \"destination address required\"},\n\t{90, \"EMSGSIZE\", \"message too long\"},\n\t{91, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{92, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{93, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{94, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{95, \"ENOTSUP\", \"operation not supported\"},\n\t{96, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{97, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{98, \"EADDRINUSE\", \"address already in use\"},\n\t{99, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{100, \"ENETDOWN\", \"network is down\"},\n\t{101, \"ENETUNREACH\", \"network is unreachable\"},\n\t{102, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{103, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{104, \"ECONNRESET\", \"connection reset by peer\"},\n\t{105, \"ENOBUFS\", \"no buffer space available\"},\n\t{106, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{107, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{108, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{109, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{110, \"ETIMEDOUT\", \"connection timed out\"},\n\t{111, \"ECONNREFUSED\", \"connection refused\"},\n\t{112, \"EHOSTDOWN\", \"host is down\"},\n\t{113, \"EHOSTUNREACH\", \"no route to host\"},\n\t{114, \"EALREADY\", \"operation already in progress\"},\n\t{115, \"EINPROGRESS\", \"operation now in progress\"},\n\t{116, \"ESTALE\", \"stale file handle\"},\n\t{117, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{118, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{119, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{120, \"EISNAM\", \"is a named type file\"},\n\t{121, \"EREMOTEIO\", \"remote I/O error\"},\n\t{122, \"EDQUOT\", \"disk quota exceeded\"},\n\t{123, \"ENOMEDIUM\", \"no medium found\"},\n\t{124, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{125, \"ECANCELED\", \"operation canceled\"},\n\t{126, \"ENOKEY\", \"required key not available\"},\n\t{127, \"EKEYEXPIRED\", \"key has expired\"},\n\t{128, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{129, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{130, \"EOWNERDEAD\", \"owner died\"},\n\t{131, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{132, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{133, \"EHWPOISON\", \"memory page has hardware error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGBUS\", \"bus error\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGUSR1\", \"user defined signal 1\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGUSR2\", \"user defined signal 2\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGSTKFLT\", \"stack fault\"},\n\t{17, \"SIGCHLD\", \"child exited\"},\n\t{18, \"SIGCONT\", \"continued\"},\n\t{19, \"SIGSTOP\", \"stopped (signal)\"},\n\t{20, \"SIGTSTP\", \"stopped\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGURG\", \"urgent I/O condition\"},\n\t{24, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"file size limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window changed\"},\n\t{29, \"SIGIO\", \"I/O possible\"},\n\t{30, \"SIGPWR\", \"power failure\"},\n\t{31, \"SIGSYS\", \"bad system call\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/loong64/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build loong64 && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/loong64/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x1008\n\tB115200                          = 0x1002\n\tB1152000                         = 0x1009\n\tB1500000                         = 0x100a\n\tB2000000                         = 0x100b\n\tB230400                          = 0x1003\n\tB2500000                         = 0x100c\n\tB3000000                         = 0x100d\n\tB3500000                         = 0x100e\n\tB4000000                         = 0x100f\n\tB460800                          = 0x1004\n\tB500000                          = 0x1005\n\tB57600                           = 0x1001\n\tB576000                          = 0x1006\n\tB921600                          = 0x1007\n\tBLKALIGNOFF                      = 0x127a\n\tBLKBSZGET                        = 0x80081270\n\tBLKBSZSET                        = 0x40081271\n\tBLKDISCARD                       = 0x1277\n\tBLKDISCARDZEROES                 = 0x127c\n\tBLKFLSBUF                        = 0x1261\n\tBLKFRAGET                        = 0x1265\n\tBLKFRASET                        = 0x1264\n\tBLKGETDISKSEQ                    = 0x80081280\n\tBLKGETSIZE                       = 0x1260\n\tBLKGETSIZE64                     = 0x80081272\n\tBLKIOMIN                         = 0x1278\n\tBLKIOOPT                         = 0x1279\n\tBLKPBSZGET                       = 0x127b\n\tBLKRAGET                         = 0x1263\n\tBLKRASET                         = 0x1262\n\tBLKROGET                         = 0x125e\n\tBLKROSET                         = 0x125d\n\tBLKROTATIONAL                    = 0x127e\n\tBLKRRPART                        = 0x125f\n\tBLKSECDISCARD                    = 0x127d\n\tBLKSECTGET                       = 0x1267\n\tBLKSECTSET                       = 0x1266\n\tBLKSSZGET                        = 0x1268\n\tBLKZEROOUT                       = 0x127f\n\tBOTHER                           = 0x1000\n\tBS1                              = 0x2000\n\tBSDLY                            = 0x2000\n\tCBAUD                            = 0x100f\n\tCBAUDEX                          = 0x1000\n\tCIBAUD                           = 0x100f0000\n\tCLOCAL                           = 0x800\n\tCR1                              = 0x200\n\tCR2                              = 0x400\n\tCR3                              = 0x600\n\tCRDLY                            = 0x600\n\tCREAD                            = 0x80\n\tCS6                              = 0x10\n\tCS7                              = 0x20\n\tCS8                              = 0x30\n\tCSIZE                            = 0x30\n\tCSTOPB                           = 0x40\n\tDM_MPATH_PROBE_PATHS             = 0xfd12\n\tECCGETLAYOUT                     = 0x81484d11\n\tECCGETSTATS                      = 0x80104d12\n\tECHOCTL                          = 0x200\n\tECHOE                            = 0x10\n\tECHOK                            = 0x20\n\tECHOKE                           = 0x800\n\tECHONL                           = 0x40\n\tECHOPRT                          = 0x400\n\tEFD_CLOEXEC                      = 0x80000\n\tEFD_NONBLOCK                     = 0x800\n\tEPIOCGPARAMS                     = 0x80088a02\n\tEPIOCSPARAMS                     = 0x40088a01\n\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000\n\tFF1                              = 0x8000\n\tFFDLY                            = 0x8000\n\tFICLONE                          = 0x40049409\n\tFICLONERANGE                     = 0x4020940d\n\tFLUSHO                           = 0x1000\n\tFPU_CTX_MAGIC                    = 0x46505501\n\tFS_IOC_ENABLE_VERITY             = 0x40806685\n\tFS_IOC_GETFLAGS                  = 0x80086601\n\tFS_IOC_GET_ENCRYPTION_NONCE      = 0x8010661b\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x400c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x40106614\n\tFS_IOC_SETFLAGS                  = 0x40086602\n\tFS_IOC_SET_ENCRYPTION_POLICY     = 0x800c6613\n\tF_GETLK                          = 0x5\n\tF_GETLK64                        = 0x5\n\tF_GETOWN                         = 0x9\n\tF_RDLCK                          = 0x0\n\tF_SETLK                          = 0x6\n\tF_SETLK64                        = 0x6\n\tF_SETLKW                         = 0x7\n\tF_SETLKW64                       = 0x7\n\tF_SETOWN                         = 0x8\n\tF_UNLCK                          = 0x2\n\tF_WRLCK                          = 0x1\n\tHIDIOCGRAWINFO                   = 0x80084803\n\tHIDIOCGRDESC                     = 0x90044802\n\tHIDIOCGRDESCSIZE                 = 0x80044801\n\tHIDIOCREVOKE                     = 0x4004480d\n\tHUPCL                            = 0x400\n\tICANON                           = 0x2\n\tIEXTEN                           = 0x8000\n\tIN_CLOEXEC                       = 0x80000\n\tIN_NONBLOCK                      = 0x800\n\tIOCTL_MEI_NOTIFY_GET             = 0x80044803\n\tIOCTL_MEI_NOTIFY_SET             = 0x40044802\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x7b9\n\tIPV6_FLOWINFO_MASK               = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK              = 0xffff0f00\n\tISIG                             = 0x1\n\tIUCLC                            = 0x200\n\tIXOFF                            = 0x1000\n\tIXON                             = 0x400\n\tLASX_CTX_MAGIC                   = 0x41535801\n\tLBT_CTX_MAGIC                    = 0x42540001\n\tLSX_CTX_MAGIC                    = 0x53580001\n\tMAP_ANON                         = 0x20\n\tMAP_ANONYMOUS                    = 0x20\n\tMAP_DENYWRITE                    = 0x800\n\tMAP_EXECUTABLE                   = 0x1000\n\tMAP_GROWSDOWN                    = 0x100\n\tMAP_HUGETLB                      = 0x40000\n\tMAP_LOCKED                       = 0x2000\n\tMAP_NONBLOCK                     = 0x10000\n\tMAP_NORESERVE                    = 0x4000\n\tMAP_POPULATE                     = 0x8000\n\tMAP_STACK                        = 0x20000\n\tMAP_SYNC                         = 0x80000\n\tMCL_CURRENT                      = 0x1\n\tMCL_FUTURE                       = 0x2\n\tMCL_ONFAULT                      = 0x4\n\tMEMERASE                         = 0x40084d02\n\tMEMERASE64                       = 0x40104d14\n\tMEMGETBADBLOCK                   = 0x40084d0b\n\tMEMGETINFO                       = 0x80204d01\n\tMEMGETOOBSEL                     = 0x80c84d0a\n\tMEMGETREGIONCOUNT                = 0x80044d07\n\tMEMISLOCKED                      = 0x80084d17\n\tMEMLOCK                          = 0x40084d05\n\tMEMREAD                          = 0xc0404d1a\n\tMEMREADOOB                       = 0xc0104d04\n\tMEMSETBADBLOCK                   = 0x40084d0c\n\tMEMUNLOCK                        = 0x40084d06\n\tMEMWRITEOOB                      = 0xc0104d03\n\tMTDFILEMODE                      = 0x4d13\n\tNFDBITS                          = 0x40\n\tNLDLY                            = 0x100\n\tNOFLSH                           = 0x80\n\tNS_GET_MNTNS_ID                  = 0x8008b705\n\tNS_GET_NSTYPE                    = 0xb703\n\tNS_GET_OWNER_UID                 = 0xb704\n\tNS_GET_PARENT                    = 0xb702\n\tNS_GET_PID_FROM_PIDNS            = 0x8004b706\n\tNS_GET_PID_IN_PIDNS              = 0x8004b708\n\tNS_GET_TGID_FROM_PIDNS           = 0x8004b707\n\tNS_GET_TGID_IN_PIDNS             = 0x8004b709\n\tNS_GET_USERNS                    = 0xb701\n\tOLCUC                            = 0x2\n\tONLCR                            = 0x4\n\tOTPERASE                         = 0x400c4d19\n\tOTPGETREGIONCOUNT                = 0x40044d0e\n\tOTPGETREGIONINFO                 = 0x400c4d0f\n\tOTPLOCK                          = 0x800c4d10\n\tOTPSELECT                        = 0x80044d0d\n\tO_APPEND                         = 0x400\n\tO_ASYNC                          = 0x2000\n\tO_CLOEXEC                        = 0x80000\n\tO_CREAT                          = 0x40\n\tO_DIRECT                         = 0x4000\n\tO_DIRECTORY                      = 0x10000\n\tO_DSYNC                          = 0x1000\n\tO_EXCL                           = 0x80\n\tO_FSYNC                          = 0x101000\n\tO_LARGEFILE                      = 0x0\n\tO_NDELAY                         = 0x800\n\tO_NOATIME                        = 0x40000\n\tO_NOCTTY                         = 0x100\n\tO_NOFOLLOW                       = 0x20000\n\tO_NONBLOCK                       = 0x800\n\tO_PATH                           = 0x200000\n\tO_RSYNC                          = 0x101000\n\tO_SYNC                           = 0x101000\n\tO_TMPFILE                        = 0x410000\n\tO_TRUNC                          = 0x200\n\tPARENB                           = 0x100\n\tPARODD                           = 0x200\n\tPENDIN                           = 0x4000\n\tPERF_EVENT_IOC_DISABLE           = 0x2401\n\tPERF_EVENT_IOC_ENABLE            = 0x2400\n\tPERF_EVENT_IOC_ID                = 0x80082407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4008240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT      = 0x40042409\n\tPERF_EVENT_IOC_PERIOD            = 0x40082404\n\tPERF_EVENT_IOC_QUERY_BPF         = 0xc008240a\n\tPERF_EVENT_IOC_REFRESH           = 0x2402\n\tPERF_EVENT_IOC_RESET             = 0x2403\n\tPERF_EVENT_IOC_SET_BPF           = 0x40042408\n\tPERF_EVENT_IOC_SET_FILTER        = 0x40082406\n\tPERF_EVENT_IOC_SET_OUTPUT        = 0x2405\n\tPPPIOCATTACH                     = 0x4004743d\n\tPPPIOCATTCHAN                    = 0x40047438\n\tPPPIOCBRIDGECHAN                 = 0x40047435\n\tPPPIOCCONNECT                    = 0x4004743a\n\tPPPIOCDETACH                     = 0x4004743c\n\tPPPIOCDISCONN                    = 0x7439\n\tPPPIOCGASYNCMAP                  = 0x80047458\n\tPPPIOCGCHAN                      = 0x80047437\n\tPPPIOCGDEBUG                     = 0x80047441\n\tPPPIOCGFLAGS                     = 0x8004745a\n\tPPPIOCGIDLE                      = 0x8010743f\n\tPPPIOCGIDLE32                    = 0x8008743f\n\tPPPIOCGIDLE64                    = 0x8010743f\n\tPPPIOCGL2TPSTATS                 = 0x80487436\n\tPPPIOCGMRU                       = 0x80047453\n\tPPPIOCGRASYNCMAP                 = 0x80047455\n\tPPPIOCGUNIT                      = 0x80047456\n\tPPPIOCGXASYNCMAP                 = 0x80207450\n\tPPPIOCSACTIVE                    = 0x40107446\n\tPPPIOCSASYNCMAP                  = 0x40047457\n\tPPPIOCSCOMPRESS                  = 0x4010744d\n\tPPPIOCSDEBUG                     = 0x40047440\n\tPPPIOCSFLAGS                     = 0x40047459\n\tPPPIOCSMAXCID                    = 0x40047451\n\tPPPIOCSMRRU                      = 0x4004743b\n\tPPPIOCSMRU                       = 0x40047452\n\tPPPIOCSNPMODE                    = 0x4008744b\n\tPPPIOCSPASS                      = 0x40107447\n\tPPPIOCSRASYNCMAP                 = 0x40047454\n\tPPPIOCSXASYNCMAP                 = 0x4020744f\n\tPPPIOCUNBRIDGECHAN               = 0x7434\n\tPPPIOCXFERUNIT                   = 0x744e\n\tPR_SET_PTRACER_ANY               = 0xffffffffffffffff\n\tPTP_CLOCK_GETCAPS                = 0x80503d01\n\tPTP_CLOCK_GETCAPS2               = 0x80503d0a\n\tPTP_ENABLE_PPS                   = 0x40043d04\n\tPTP_ENABLE_PPS2                  = 0x40043d0d\n\tPTP_EXTTS_REQUEST                = 0x40103d02\n\tPTP_EXTTS_REQUEST2               = 0x40103d0b\n\tPTP_MASK_CLEAR_ALL               = 0x3d13\n\tPTP_MASK_EN_SINGLE               = 0x40043d14\n\tPTP_PEROUT_REQUEST               = 0x40383d03\n\tPTP_PEROUT_REQUEST2              = 0x40383d0c\n\tPTP_PIN_SETFUNC                  = 0x40603d07\n\tPTP_PIN_SETFUNC2                 = 0x40603d10\n\tPTP_SYS_OFFSET                   = 0x43403d05\n\tPTP_SYS_OFFSET2                  = 0x43403d0e\n\tPTRACE_SYSEMU                    = 0x1f\n\tPTRACE_SYSEMU_SINGLESTEP         = 0x20\n\tRLIMIT_AS                        = 0x9\n\tRLIMIT_MEMLOCK                   = 0x8\n\tRLIMIT_NOFILE                    = 0x7\n\tRLIMIT_NPROC                     = 0x6\n\tRLIMIT_RSS                       = 0x5\n\tRNDADDENTROPY                    = 0x40085203\n\tRNDADDTOENTCNT                   = 0x40045201\n\tRNDCLEARPOOL                     = 0x5206\n\tRNDGETENTCNT                     = 0x80045200\n\tRNDGETPOOL                       = 0x80085202\n\tRNDRESEEDCRNG                    = 0x5207\n\tRNDZAPENTCNT                     = 0x5204\n\tRTC_AIE_OFF                      = 0x7002\n\tRTC_AIE_ON                       = 0x7001\n\tRTC_ALM_READ                     = 0x80247008\n\tRTC_ALM_SET                      = 0x40247007\n\tRTC_EPOCH_READ                   = 0x8008700d\n\tRTC_EPOCH_SET                    = 0x4008700e\n\tRTC_IRQP_READ                    = 0x8008700b\n\tRTC_IRQP_SET                     = 0x4008700c\n\tRTC_PARAM_GET                    = 0x40187013\n\tRTC_PARAM_SET                    = 0x40187014\n\tRTC_PIE_OFF                      = 0x7006\n\tRTC_PIE_ON                       = 0x7005\n\tRTC_PLL_GET                      = 0x80207011\n\tRTC_PLL_SET                      = 0x40207012\n\tRTC_RD_TIME                      = 0x80247009\n\tRTC_SET_TIME                     = 0x4024700a\n\tRTC_UIE_OFF                      = 0x7004\n\tRTC_UIE_ON                       = 0x7003\n\tRTC_VL_CLR                       = 0x7014\n\tRTC_VL_READ                      = 0x80047013\n\tRTC_WIE_OFF                      = 0x7010\n\tRTC_WIE_ON                       = 0x700f\n\tRTC_WKALM_RD                     = 0x80287010\n\tRTC_WKALM_SET                    = 0x4028700f\n\tSCM_DEVMEM_DMABUF                = 0x4f\n\tSCM_DEVMEM_LINEAR                = 0x4e\n\tSCM_TIMESTAMPING                 = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS       = 0x36\n\tSCM_TIMESTAMPING_PKTINFO         = 0x3a\n\tSCM_TIMESTAMPNS                  = 0x23\n\tSCM_TS_OPT_ID                    = 0x51\n\tSCM_TXTIME                       = 0x3d\n\tSCM_WIFI_STATUS                  = 0x29\n\tSECCOMP_IOCTL_NOTIF_ADDFD        = 0x40182103\n\tSECCOMP_IOCTL_NOTIF_ID_VALID     = 0x40082102\n\tSECCOMP_IOCTL_NOTIF_SET_FLAGS    = 0x40082104\n\tSFD_CLOEXEC                      = 0x80000\n\tSFD_NONBLOCK                     = 0x800\n\tSIOCATMARK                       = 0x8905\n\tSIOCGPGRP                        = 0x8904\n\tSIOCGSTAMPNS_NEW                 = 0x80108907\n\tSIOCGSTAMP_NEW                   = 0x80108906\n\tSIOCINQ                          = 0x541b\n\tSIOCOUTQ                         = 0x5411\n\tSIOCSPGRP                        = 0x8902\n\tSOCK_CLOEXEC                     = 0x80000\n\tSOCK_DGRAM                       = 0x2\n\tSOCK_NONBLOCK                    = 0x800\n\tSOCK_STREAM                      = 0x1\n\tSOL_SOCKET                       = 0x1\n\tSO_ACCEPTCONN                    = 0x1e\n\tSO_ATTACH_BPF                    = 0x32\n\tSO_ATTACH_REUSEPORT_CBPF         = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF         = 0x34\n\tSO_BINDTODEVICE                  = 0x19\n\tSO_BINDTOIFINDEX                 = 0x3e\n\tSO_BPF_EXTENSIONS                = 0x30\n\tSO_BROADCAST                     = 0x6\n\tSO_BSDCOMPAT                     = 0xe\n\tSO_BUF_LOCK                      = 0x48\n\tSO_BUSY_POLL                     = 0x2e\n\tSO_BUSY_POLL_BUDGET              = 0x46\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\n\tSO_DEVMEM_DMABUF                 = 0x4f\n\tSO_DEVMEM_DONTNEED               = 0x50\n\tSO_DEVMEM_LINEAR                 = 0x4e\n\tSO_DOMAIN                        = 0x27\n\tSO_DONTROUTE                     = 0x5\n\tSO_ERROR                         = 0x4\n\tSO_INCOMING_CPU                  = 0x31\n\tSO_INCOMING_NAPI_ID              = 0x38\n\tSO_KEEPALIVE                     = 0x9\n\tSO_LINGER                        = 0xd\n\tSO_LOCK_FILTER                   = 0x2c\n\tSO_MARK                          = 0x24\n\tSO_MAX_PACING_RATE               = 0x2f\n\tSO_MEMINFO                       = 0x37\n\tSO_NETNS_COOKIE                  = 0x47\n\tSO_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0xa\n\tSO_PASSCRED                      = 0x10\n\tSO_PASSPIDFD                     = 0x4c\n\tSO_PASSRIGHTS                    = 0x53\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x11\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERPIDFD                     = 0x4d\n\tSO_PEERSEC                       = 0x1f\n\tSO_PREFER_BUSY_POLL              = 0x45\n\tSO_PROTOCOL                      = 0x26\n\tSO_RCVBUF                        = 0x8\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x12\n\tSO_RCVMARK                       = 0x4b\n\tSO_RCVPRIORITY                   = 0x52\n\tSO_RCVTIMEO                      = 0x14\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x14\n\tSO_RESERVE_MEM                   = 0x49\n\tSO_REUSEADDR                     = 0x2\n\tSO_REUSEPORT                     = 0xf\n\tSO_RXQ_OVFL                      = 0x28\n\tSO_SECURITY_AUTHENTICATION       = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK   = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT = 0x17\n\tSO_SELECT_ERR_QUEUE              = 0x2d\n\tSO_SNDBUF                        = 0x7\n\tSO_SNDBUFFORCE                   = 0x20\n\tSO_SNDLOWAT                      = 0x13\n\tSO_SNDTIMEO                      = 0x15\n\tSO_SNDTIMEO_NEW                  = 0x43\n\tSO_SNDTIMEO_OLD                  = 0x15\n\tSO_TIMESTAMPING                  = 0x25\n\tSO_TIMESTAMPING_NEW              = 0x41\n\tSO_TIMESTAMPING_OLD              = 0x25\n\tSO_TIMESTAMPNS                   = 0x23\n\tSO_TIMESTAMPNS_NEW               = 0x40\n\tSO_TIMESTAMPNS_OLD               = 0x23\n\tSO_TIMESTAMP_NEW                 = 0x3f\n\tSO_TXREHASH                      = 0x4a\n\tSO_TXTIME                        = 0x3d\n\tSO_TYPE                          = 0x3\n\tSO_WIFI_STATUS                   = 0x29\n\tSO_ZEROCOPY                      = 0x3c\n\tTAB1                             = 0x800\n\tTAB2                             = 0x1000\n\tTAB3                             = 0x1800\n\tTABDLY                           = 0x1800\n\tTCFLSH                           = 0x540b\n\tTCGETA                           = 0x5405\n\tTCGETS                           = 0x5401\n\tTCGETS2                          = 0x802c542a\n\tTCGETX                           = 0x5432\n\tTCSAFLUSH                        = 0x2\n\tTCSBRK                           = 0x5409\n\tTCSBRKP                          = 0x5425\n\tTCSETA                           = 0x5406\n\tTCSETAF                          = 0x5408\n\tTCSETAW                          = 0x5407\n\tTCSETS                           = 0x5402\n\tTCSETS2                          = 0x402c542b\n\tTCSETSF                          = 0x5404\n\tTCSETSF2                         = 0x402c542d\n\tTCSETSW                          = 0x5403\n\tTCSETSW2                         = 0x402c542c\n\tTCSETX                           = 0x5433\n\tTCSETXF                          = 0x5434\n\tTCSETXW                          = 0x5435\n\tTCXONC                           = 0x540a\n\tTFD_CLOEXEC                      = 0x80000\n\tTFD_NONBLOCK                     = 0x800\n\tTIOCCBRK                         = 0x5428\n\tTIOCCONS                         = 0x541d\n\tTIOCEXCL                         = 0x540c\n\tTIOCGDEV                         = 0x80045432\n\tTIOCGETD                         = 0x5424\n\tTIOCGEXCL                        = 0x80045440\n\tTIOCGICOUNT                      = 0x545d\n\tTIOCGISO7816                     = 0x80285442\n\tTIOCGLCKTRMIOS                   = 0x5456\n\tTIOCGPGRP                        = 0x540f\n\tTIOCGPKT                         = 0x80045438\n\tTIOCGPTLCK                       = 0x80045439\n\tTIOCGPTN                         = 0x80045430\n\tTIOCGPTPEER                      = 0x5441\n\tTIOCGRS485                       = 0x542e\n\tTIOCGSERIAL                      = 0x541e\n\tTIOCGSID                         = 0x5429\n\tTIOCGSOFTCAR                     = 0x5419\n\tTIOCGWINSZ                       = 0x5413\n\tTIOCINQ                          = 0x541b\n\tTIOCLINUX                        = 0x541c\n\tTIOCMBIC                         = 0x5417\n\tTIOCMBIS                         = 0x5416\n\tTIOCMGET                         = 0x5415\n\tTIOCMIWAIT                       = 0x545c\n\tTIOCMSET                         = 0x5418\n\tTIOCM_CAR                        = 0x40\n\tTIOCM_CD                         = 0x40\n\tTIOCM_CTS                        = 0x20\n\tTIOCM_DSR                        = 0x100\n\tTIOCM_RI                         = 0x80\n\tTIOCM_RNG                        = 0x80\n\tTIOCM_SR                         = 0x10\n\tTIOCM_ST                         = 0x8\n\tTIOCNOTTY                        = 0x5422\n\tTIOCNXCL                         = 0x540d\n\tTIOCOUTQ                         = 0x5411\n\tTIOCPKT                          = 0x5420\n\tTIOCSBRK                         = 0x5427\n\tTIOCSCTTY                        = 0x540e\n\tTIOCSERCONFIG                    = 0x5453\n\tTIOCSERGETLSR                    = 0x5459\n\tTIOCSERGETMULTI                  = 0x545a\n\tTIOCSERGSTRUCT                   = 0x5458\n\tTIOCSERGWILD                     = 0x5454\n\tTIOCSERSETMULTI                  = 0x545b\n\tTIOCSERSWILD                     = 0x5455\n\tTIOCSER_TEMT                     = 0x1\n\tTIOCSETD                         = 0x5423\n\tTIOCSIG                          = 0x40045436\n\tTIOCSISO7816                     = 0xc0285443\n\tTIOCSLCKTRMIOS                   = 0x5457\n\tTIOCSPGRP                        = 0x5410\n\tTIOCSPTLCK                       = 0x40045431\n\tTIOCSRS485                       = 0x542f\n\tTIOCSSERIAL                      = 0x541f\n\tTIOCSSOFTCAR                     = 0x541a\n\tTIOCSTI                          = 0x5412\n\tTIOCSWINSZ                       = 0x5414\n\tTIOCVHANGUP                      = 0x5437\n\tTOSTOP                           = 0x100\n\tTUNATTACHFILTER                  = 0x401054d5\n\tTUNDETACHFILTER                  = 0x401054d6\n\tTUNGETDEVNETNS                   = 0x54e3\n\tTUNGETFEATURES                   = 0x800454cf\n\tTUNGETFILTER                     = 0x801054db\n\tTUNGETIFF                        = 0x800454d2\n\tTUNGETSNDBUF                     = 0x800454d3\n\tTUNGETVNETBE                     = 0x800454df\n\tTUNGETVNETHDRSZ                  = 0x800454d7\n\tTUNGETVNETLE                     = 0x800454dd\n\tTUNSETCARRIER                    = 0x400454e2\n\tTUNSETDEBUG                      = 0x400454c9\n\tTUNSETFILTEREBPF                 = 0x800454e1\n\tTUNSETGROUP                      = 0x400454ce\n\tTUNSETIFF                        = 0x400454ca\n\tTUNSETIFINDEX                    = 0x400454da\n\tTUNSETLINK                       = 0x400454cd\n\tTUNSETNOCSUM                     = 0x400454c8\n\tTUNSETOFFLOAD                    = 0x400454d0\n\tTUNSETOWNER                      = 0x400454cc\n\tTUNSETPERSIST                    = 0x400454cb\n\tTUNSETQUEUE                      = 0x400454d9\n\tTUNSETSNDBUF                     = 0x400454d4\n\tTUNSETSTEERINGEBPF               = 0x800454e0\n\tTUNSETTXFILTER                   = 0x400454d1\n\tTUNSETVNETBE                     = 0x400454de\n\tTUNSETVNETHDRSZ                  = 0x400454d8\n\tTUNSETVNETLE                     = 0x400454dc\n\tUBI_IOCATT                       = 0x40186f40\n\tUBI_IOCDET                       = 0x40046f41\n\tUBI_IOCEBCH                      = 0x40044f02\n\tUBI_IOCEBER                      = 0x40044f01\n\tUBI_IOCEBISMAP                   = 0x80044f05\n\tUBI_IOCEBMAP                     = 0x40084f03\n\tUBI_IOCEBUNMAP                   = 0x40044f04\n\tUBI_IOCMKVOL                     = 0x40986f00\n\tUBI_IOCRMVOL                     = 0x40046f01\n\tUBI_IOCRNVOL                     = 0x51106f03\n\tUBI_IOCRPEB                      = 0x40046f04\n\tUBI_IOCRSVOL                     = 0x400c6f02\n\tUBI_IOCSETVOLPROP                = 0x40104f06\n\tUBI_IOCSPEB                      = 0x40046f05\n\tUBI_IOCVOLCRBLK                  = 0x40804f07\n\tUBI_IOCVOLRMBLK                  = 0x4f08\n\tUBI_IOCVOLUP                     = 0x40084f00\n\tVDISCARD                         = 0xd\n\tVEOF                             = 0x4\n\tVEOL                             = 0xb\n\tVEOL2                            = 0x10\n\tVMIN                             = 0x6\n\tVREPRINT                         = 0xc\n\tVSTART                           = 0x8\n\tVSTOP                            = 0x9\n\tVSUSP                            = 0xa\n\tVSWTC                            = 0x7\n\tVT1                              = 0x4000\n\tVTDLY                            = 0x4000\n\tVTIME                            = 0x5\n\tVWERASE                          = 0xe\n\tWDIOC_GETBOOTSTATUS              = 0x80045702\n\tWDIOC_GETPRETIMEOUT              = 0x80045709\n\tWDIOC_GETSTATUS                  = 0x80045701\n\tWDIOC_GETSUPPORT                 = 0x80285700\n\tWDIOC_GETTEMP                    = 0x80045703\n\tWDIOC_GETTIMELEFT                = 0x8004570a\n\tWDIOC_GETTIMEOUT                 = 0x80045707\n\tWDIOC_KEEPALIVE                  = 0x80045705\n\tWDIOC_SETOPTIONS                 = 0x80045704\n\tWORDSIZE                         = 0x40\n\tXCASE                            = 0x4\n\tXTABS                            = 0x1800\n\t_HIDIOCGRAWNAME                  = 0x80804804\n\t_HIDIOCGRAWPHYS                  = 0x80404805\n\t_HIDIOCGRAWUNIQ                  = 0x80404808\n)\n\n// Errors\nconst (\n\tEADDRINUSE      = syscall.Errno(0x62)\n\tEADDRNOTAVAIL   = syscall.Errno(0x63)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x61)\n\tEALREADY        = syscall.Errno(0x72)\n\tEBADE           = syscall.Errno(0x34)\n\tEBADFD          = syscall.Errno(0x4d)\n\tEBADMSG         = syscall.Errno(0x4a)\n\tEBADR           = syscall.Errno(0x35)\n\tEBADRQC         = syscall.Errno(0x38)\n\tEBADSLT         = syscall.Errno(0x39)\n\tEBFONT          = syscall.Errno(0x3b)\n\tECANCELED       = syscall.Errno(0x7d)\n\tECHRNG          = syscall.Errno(0x2c)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x67)\n\tECONNREFUSED    = syscall.Errno(0x6f)\n\tECONNRESET      = syscall.Errno(0x68)\n\tEDEADLK         = syscall.Errno(0x23)\n\tEDEADLOCK       = syscall.Errno(0x23)\n\tEDESTADDRREQ    = syscall.Errno(0x59)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x7a)\n\tEHOSTDOWN       = syscall.Errno(0x70)\n\tEHOSTUNREACH    = syscall.Errno(0x71)\n\tEHWPOISON       = syscall.Errno(0x85)\n\tEIDRM           = syscall.Errno(0x2b)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x73)\n\tEISCONN         = syscall.Errno(0x6a)\n\tEISNAM          = syscall.Errno(0x78)\n\tEKEYEXPIRED     = syscall.Errno(0x7f)\n\tEKEYREJECTED    = syscall.Errno(0x81)\n\tEKEYREVOKED     = syscall.Errno(0x80)\n\tEL2HLT          = syscall.Errno(0x33)\n\tEL2NSYNC        = syscall.Errno(0x2d)\n\tEL3HLT          = syscall.Errno(0x2e)\n\tEL3RST          = syscall.Errno(0x2f)\n\tELIBACC         = syscall.Errno(0x4f)\n\tELIBBAD         = syscall.Errno(0x50)\n\tELIBEXEC        = syscall.Errno(0x53)\n\tELIBMAX         = syscall.Errno(0x52)\n\tELIBSCN         = syscall.Errno(0x51)\n\tELNRNG          = syscall.Errno(0x30)\n\tELOOP           = syscall.Errno(0x28)\n\tEMEDIUMTYPE     = syscall.Errno(0x7c)\n\tEMSGSIZE        = syscall.Errno(0x5a)\n\tEMULTIHOP       = syscall.Errno(0x48)\n\tENAMETOOLONG    = syscall.Errno(0x24)\n\tENAVAIL         = syscall.Errno(0x77)\n\tENETDOWN        = syscall.Errno(0x64)\n\tENETRESET       = syscall.Errno(0x66)\n\tENETUNREACH     = syscall.Errno(0x65)\n\tENOANO          = syscall.Errno(0x37)\n\tENOBUFS         = syscall.Errno(0x69)\n\tENOCSI          = syscall.Errno(0x32)\n\tENODATA         = syscall.Errno(0x3d)\n\tENOKEY          = syscall.Errno(0x7e)\n\tENOLCK          = syscall.Errno(0x25)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x7b)\n\tENOMSG          = syscall.Errno(0x2a)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x5c)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x26)\n\tENOTCONN        = syscall.Errno(0x6b)\n\tENOTEMPTY       = syscall.Errno(0x27)\n\tENOTNAM         = syscall.Errno(0x76)\n\tENOTRECOVERABLE = syscall.Errno(0x83)\n\tENOTSOCK        = syscall.Errno(0x58)\n\tENOTSUP         = syscall.Errno(0x5f)\n\tENOTUNIQ        = syscall.Errno(0x4c)\n\tEOPNOTSUPP      = syscall.Errno(0x5f)\n\tEOVERFLOW       = syscall.Errno(0x4b)\n\tEOWNERDEAD      = syscall.Errno(0x82)\n\tEPFNOSUPPORT    = syscall.Errno(0x60)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x5d)\n\tEPROTOTYPE      = syscall.Errno(0x5b)\n\tEREMCHG         = syscall.Errno(0x4e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x79)\n\tERESTART        = syscall.Errno(0x55)\n\tERFKILL         = syscall.Errno(0x84)\n\tESHUTDOWN       = syscall.Errno(0x6c)\n\tESOCKTNOSUPPORT = syscall.Errno(0x5e)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x74)\n\tESTRPIPE        = syscall.Errno(0x56)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x6e)\n\tETOOMANYREFS    = syscall.Errno(0x6d)\n\tEUCLEAN         = syscall.Errno(0x75)\n\tEUNATCH         = syscall.Errno(0x31)\n\tEUSERS          = syscall.Errno(0x57)\n\tEXFULL          = syscall.Errno(0x36)\n)\n\n// Signals\nconst (\n\tSIGBUS    = syscall.Signal(0x7)\n\tSIGCHLD   = syscall.Signal(0x11)\n\tSIGCLD    = syscall.Signal(0x11)\n\tSIGCONT   = syscall.Signal(0x12)\n\tSIGIO     = syscall.Signal(0x1d)\n\tSIGPOLL   = syscall.Signal(0x1d)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x1e)\n\tSIGSTKFLT = syscall.Signal(0x10)\n\tSIGSTOP   = syscall.Signal(0x13)\n\tSIGSYS    = syscall.Signal(0x1f)\n\tSIGTSTP   = syscall.Signal(0x14)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x17)\n\tSIGUSR1   = syscall.Signal(0xa)\n\tSIGUSR2   = syscall.Signal(0xc)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{36, \"ENAMETOOLONG\", \"file name too long\"},\n\t{37, \"ENOLCK\", \"no locks available\"},\n\t{38, \"ENOSYS\", \"function not implemented\"},\n\t{39, \"ENOTEMPTY\", \"directory not empty\"},\n\t{40, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{42, \"ENOMSG\", \"no message of desired type\"},\n\t{43, \"EIDRM\", \"identifier removed\"},\n\t{44, \"ECHRNG\", \"channel number out of range\"},\n\t{45, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{46, \"EL3HLT\", \"level 3 halted\"},\n\t{47, \"EL3RST\", \"level 3 reset\"},\n\t{48, \"ELNRNG\", \"link number out of range\"},\n\t{49, \"EUNATCH\", \"protocol driver not attached\"},\n\t{50, \"ENOCSI\", \"no CSI structure available\"},\n\t{51, \"EL2HLT\", \"level 2 halted\"},\n\t{52, \"EBADE\", \"invalid exchange\"},\n\t{53, \"EBADR\", \"invalid request descriptor\"},\n\t{54, \"EXFULL\", \"exchange full\"},\n\t{55, \"ENOANO\", \"no anode\"},\n\t{56, \"EBADRQC\", \"invalid request code\"},\n\t{57, \"EBADSLT\", \"invalid slot\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{72, \"EMULTIHOP\", \"multihop attempted\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EBADMSG\", \"bad message\"},\n\t{75, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{76, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{77, \"EBADFD\", \"file descriptor in bad state\"},\n\t{78, \"EREMCHG\", \"remote address changed\"},\n\t{79, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{80, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{81, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{82, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{83, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{84, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{85, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{86, \"ESTRPIPE\", \"streams pipe error\"},\n\t{87, \"EUSERS\", \"too many users\"},\n\t{88, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{89, \"EDESTADDRREQ\", \"destination address required\"},\n\t{90, \"EMSGSIZE\", \"message too long\"},\n\t{91, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{92, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{93, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{94, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{95, \"ENOTSUP\", \"operation not supported\"},\n\t{96, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{97, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{98, \"EADDRINUSE\", \"address already in use\"},\n\t{99, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{100, \"ENETDOWN\", \"network is down\"},\n\t{101, \"ENETUNREACH\", \"network is unreachable\"},\n\t{102, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{103, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{104, \"ECONNRESET\", \"connection reset by peer\"},\n\t{105, \"ENOBUFS\", \"no buffer space available\"},\n\t{106, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{107, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{108, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{109, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{110, \"ETIMEDOUT\", \"connection timed out\"},\n\t{111, \"ECONNREFUSED\", \"connection refused\"},\n\t{112, \"EHOSTDOWN\", \"host is down\"},\n\t{113, \"EHOSTUNREACH\", \"no route to host\"},\n\t{114, \"EALREADY\", \"operation already in progress\"},\n\t{115, \"EINPROGRESS\", \"operation now in progress\"},\n\t{116, \"ESTALE\", \"stale file handle\"},\n\t{117, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{118, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{119, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{120, \"EISNAM\", \"is a named type file\"},\n\t{121, \"EREMOTEIO\", \"remote I/O error\"},\n\t{122, \"EDQUOT\", \"disk quota exceeded\"},\n\t{123, \"ENOMEDIUM\", \"no medium found\"},\n\t{124, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{125, \"ECANCELED\", \"operation canceled\"},\n\t{126, \"ENOKEY\", \"required key not available\"},\n\t{127, \"EKEYEXPIRED\", \"key has expired\"},\n\t{128, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{129, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{130, \"EOWNERDEAD\", \"owner died\"},\n\t{131, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{132, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{133, \"EHWPOISON\", \"memory page has hardware error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGBUS\", \"bus error\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGUSR1\", \"user defined signal 1\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGUSR2\", \"user defined signal 2\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGSTKFLT\", \"stack fault\"},\n\t{17, \"SIGCHLD\", \"child exited\"},\n\t{18, \"SIGCONT\", \"continued\"},\n\t{19, \"SIGSTOP\", \"stopped (signal)\"},\n\t{20, \"SIGTSTP\", \"stopped\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGURG\", \"urgent I/O condition\"},\n\t{24, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"file size limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window changed\"},\n\t{29, \"SIGIO\", \"I/O possible\"},\n\t{30, \"SIGPWR\", \"power failure\"},\n\t{31, \"SIGSYS\", \"bad system call\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_linux_mips.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/mips/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mips && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/mips/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x1008\n\tB115200                          = 0x1002\n\tB1152000                         = 0x1009\n\tB1500000                         = 0x100a\n\tB2000000                         = 0x100b\n\tB230400                          = 0x1003\n\tB2500000                         = 0x100c\n\tB3000000                         = 0x100d\n\tB3500000                         = 0x100e\n\tB4000000                         = 0x100f\n\tB460800                          = 0x1004\n\tB500000                          = 0x1005\n\tB57600                           = 0x1001\n\tB576000                          = 0x1006\n\tB921600                          = 0x1007\n\tBLKALIGNOFF                      = 0x2000127a\n\tBLKBSZGET                        = 0x40041270\n\tBLKBSZSET                        = 0x80041271\n\tBLKDISCARD                       = 0x20001277\n\tBLKDISCARDZEROES                 = 0x2000127c\n\tBLKFLSBUF                        = 0x20001261\n\tBLKFRAGET                        = 0x20001265\n\tBLKFRASET                        = 0x20001264\n\tBLKGETDISKSEQ                    = 0x40081280\n\tBLKGETSIZE                       = 0x20001260\n\tBLKGETSIZE64                     = 0x40041272\n\tBLKIOMIN                         = 0x20001278\n\tBLKIOOPT                         = 0x20001279\n\tBLKPBSZGET                       = 0x2000127b\n\tBLKRAGET                         = 0x20001263\n\tBLKRASET                         = 0x20001262\n\tBLKROGET                         = 0x2000125e\n\tBLKROSET                         = 0x2000125d\n\tBLKROTATIONAL                    = 0x2000127e\n\tBLKRRPART                        = 0x2000125f\n\tBLKSECDISCARD                    = 0x2000127d\n\tBLKSECTGET                       = 0x20001267\n\tBLKSECTSET                       = 0x20001266\n\tBLKSSZGET                        = 0x20001268\n\tBLKZEROOUT                       = 0x2000127f\n\tBOTHER                           = 0x1000\n\tBS1                              = 0x2000\n\tBSDLY                            = 0x2000\n\tCBAUD                            = 0x100f\n\tCBAUDEX                          = 0x1000\n\tCIBAUD                           = 0x100f0000\n\tCLOCAL                           = 0x800\n\tCR1                              = 0x200\n\tCR2                              = 0x400\n\tCR3                              = 0x600\n\tCRDLY                            = 0x600\n\tCREAD                            = 0x80\n\tCS6                              = 0x10\n\tCS7                              = 0x20\n\tCS8                              = 0x30\n\tCSIZE                            = 0x30\n\tCSTOPB                           = 0x40\n\tDM_MPATH_PROBE_PATHS             = 0x2000fd12\n\tECCGETLAYOUT                     = 0x41484d11\n\tECCGETSTATS                      = 0x40104d12\n\tECHOCTL                          = 0x200\n\tECHOE                            = 0x10\n\tECHOK                            = 0x20\n\tECHOKE                           = 0x800\n\tECHONL                           = 0x40\n\tECHOPRT                          = 0x400\n\tEFD_CLOEXEC                      = 0x80000\n\tEFD_NONBLOCK                     = 0x80\n\tEPIOCGPARAMS                     = 0x40088a02\n\tEPIOCSPARAMS                     = 0x80088a01\n\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000\n\tFF1                              = 0x8000\n\tFFDLY                            = 0x8000\n\tFICLONE                          = 0x80049409\n\tFICLONERANGE                     = 0x8020940d\n\tFLUSHO                           = 0x2000\n\tFS_IOC_ENABLE_VERITY             = 0x80806685\n\tFS_IOC_GETFLAGS                  = 0x40046601\n\tFS_IOC_GET_ENCRYPTION_NONCE      = 0x4010661b\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x800c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x80106614\n\tFS_IOC_SETFLAGS                  = 0x80046602\n\tFS_IOC_SET_ENCRYPTION_POLICY     = 0x400c6613\n\tF_GETLK                          = 0x21\n\tF_GETLK64                        = 0x21\n\tF_GETOWN                         = 0x17\n\tF_RDLCK                          = 0x0\n\tF_SETLK                          = 0x22\n\tF_SETLK64                        = 0x22\n\tF_SETLKW                         = 0x23\n\tF_SETLKW64                       = 0x23\n\tF_SETOWN                         = 0x18\n\tF_UNLCK                          = 0x2\n\tF_WRLCK                          = 0x1\n\tHIDIOCGRAWINFO                   = 0x40084803\n\tHIDIOCGRDESC                     = 0x50044802\n\tHIDIOCGRDESCSIZE                 = 0x40044801\n\tHIDIOCREVOKE                     = 0x8004480d\n\tHUPCL                            = 0x400\n\tICANON                           = 0x2\n\tIEXTEN                           = 0x100\n\tIN_CLOEXEC                       = 0x80000\n\tIN_NONBLOCK                      = 0x80\n\tIOCTL_MEI_NOTIFY_GET             = 0x40044803\n\tIOCTL_MEI_NOTIFY_SET             = 0x80044802\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x200007b9\n\tIPV6_FLOWINFO_MASK               = 0xfffffff\n\tIPV6_FLOWLABEL_MASK              = 0xfffff\n\tISIG                             = 0x1\n\tIUCLC                            = 0x200\n\tIXOFF                            = 0x1000\n\tIXON                             = 0x400\n\tMAP_ANON                         = 0x800\n\tMAP_ANONYMOUS                    = 0x800\n\tMAP_DENYWRITE                    = 0x2000\n\tMAP_EXECUTABLE                   = 0x4000\n\tMAP_GROWSDOWN                    = 0x1000\n\tMAP_HUGETLB                      = 0x80000\n\tMAP_LOCKED                       = 0x8000\n\tMAP_NONBLOCK                     = 0x20000\n\tMAP_NORESERVE                    = 0x400\n\tMAP_POPULATE                     = 0x10000\n\tMAP_RENAME                       = 0x800\n\tMAP_STACK                        = 0x40000\n\tMCL_CURRENT                      = 0x1\n\tMCL_FUTURE                       = 0x2\n\tMCL_ONFAULT                      = 0x4\n\tMEMERASE                         = 0x80084d02\n\tMEMERASE64                       = 0x80104d14\n\tMEMGETBADBLOCK                   = 0x80084d0b\n\tMEMGETINFO                       = 0x40204d01\n\tMEMGETOOBSEL                     = 0x40c84d0a\n\tMEMGETREGIONCOUNT                = 0x40044d07\n\tMEMISLOCKED                      = 0x40084d17\n\tMEMLOCK                          = 0x80084d05\n\tMEMREAD                          = 0xc0404d1a\n\tMEMREADOOB                       = 0xc00c4d04\n\tMEMSETBADBLOCK                   = 0x80084d0c\n\tMEMUNLOCK                        = 0x80084d06\n\tMEMWRITEOOB                      = 0xc00c4d03\n\tMTDFILEMODE                      = 0x20004d13\n\tNFDBITS                          = 0x20\n\tNLDLY                            = 0x100\n\tNOFLSH                           = 0x80\n\tNS_GET_MNTNS_ID                  = 0x4008b705\n\tNS_GET_NSTYPE                    = 0x2000b703\n\tNS_GET_OWNER_UID                 = 0x2000b704\n\tNS_GET_PARENT                    = 0x2000b702\n\tNS_GET_PID_FROM_PIDNS            = 0x4004b706\n\tNS_GET_PID_IN_PIDNS              = 0x4004b708\n\tNS_GET_TGID_FROM_PIDNS           = 0x4004b707\n\tNS_GET_TGID_IN_PIDNS             = 0x4004b709\n\tNS_GET_USERNS                    = 0x2000b701\n\tOLCUC                            = 0x2\n\tONLCR                            = 0x4\n\tOTPERASE                         = 0x800c4d19\n\tOTPGETREGIONCOUNT                = 0x80044d0e\n\tOTPGETREGIONINFO                 = 0x800c4d0f\n\tOTPLOCK                          = 0x400c4d10\n\tOTPSELECT                        = 0x40044d0d\n\tO_APPEND                         = 0x8\n\tO_ASYNC                          = 0x1000\n\tO_CLOEXEC                        = 0x80000\n\tO_CREAT                          = 0x100\n\tO_DIRECT                         = 0x8000\n\tO_DIRECTORY                      = 0x10000\n\tO_DSYNC                          = 0x10\n\tO_EXCL                           = 0x400\n\tO_FSYNC                          = 0x4010\n\tO_LARGEFILE                      = 0x2000\n\tO_NDELAY                         = 0x80\n\tO_NOATIME                        = 0x40000\n\tO_NOCTTY                         = 0x800\n\tO_NOFOLLOW                       = 0x20000\n\tO_NONBLOCK                       = 0x80\n\tO_PATH                           = 0x200000\n\tO_RSYNC                          = 0x4010\n\tO_SYNC                           = 0x4010\n\tO_TMPFILE                        = 0x410000\n\tO_TRUNC                          = 0x200\n\tPARENB                           = 0x100\n\tPARODD                           = 0x200\n\tPENDIN                           = 0x4000\n\tPERF_EVENT_IOC_DISABLE           = 0x20002401\n\tPERF_EVENT_IOC_ENABLE            = 0x20002400\n\tPERF_EVENT_IOC_ID                = 0x40042407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8004240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT      = 0x80042409\n\tPERF_EVENT_IOC_PERIOD            = 0x80082404\n\tPERF_EVENT_IOC_QUERY_BPF         = 0xc004240a\n\tPERF_EVENT_IOC_REFRESH           = 0x20002402\n\tPERF_EVENT_IOC_RESET             = 0x20002403\n\tPERF_EVENT_IOC_SET_BPF           = 0x80042408\n\tPERF_EVENT_IOC_SET_FILTER        = 0x80042406\n\tPERF_EVENT_IOC_SET_OUTPUT        = 0x20002405\n\tPPPIOCATTACH                     = 0x8004743d\n\tPPPIOCATTCHAN                    = 0x80047438\n\tPPPIOCBRIDGECHAN                 = 0x80047435\n\tPPPIOCCONNECT                    = 0x8004743a\n\tPPPIOCDETACH                     = 0x8004743c\n\tPPPIOCDISCONN                    = 0x20007439\n\tPPPIOCGASYNCMAP                  = 0x40047458\n\tPPPIOCGCHAN                      = 0x40047437\n\tPPPIOCGDEBUG                     = 0x40047441\n\tPPPIOCGFLAGS                     = 0x4004745a\n\tPPPIOCGIDLE                      = 0x4008743f\n\tPPPIOCGIDLE32                    = 0x4008743f\n\tPPPIOCGIDLE64                    = 0x4010743f\n\tPPPIOCGL2TPSTATS                 = 0x40487436\n\tPPPIOCGMRU                       = 0x40047453\n\tPPPIOCGRASYNCMAP                 = 0x40047455\n\tPPPIOCGUNIT                      = 0x40047456\n\tPPPIOCGXASYNCMAP                 = 0x40207450\n\tPPPIOCSACTIVE                    = 0x80087446\n\tPPPIOCSASYNCMAP                  = 0x80047457\n\tPPPIOCSCOMPRESS                  = 0x800c744d\n\tPPPIOCSDEBUG                     = 0x80047440\n\tPPPIOCSFLAGS                     = 0x80047459\n\tPPPIOCSMAXCID                    = 0x80047451\n\tPPPIOCSMRRU                      = 0x8004743b\n\tPPPIOCSMRU                       = 0x80047452\n\tPPPIOCSNPMODE                    = 0x8008744b\n\tPPPIOCSPASS                      = 0x80087447\n\tPPPIOCSRASYNCMAP                 = 0x80047454\n\tPPPIOCSXASYNCMAP                 = 0x8020744f\n\tPPPIOCUNBRIDGECHAN               = 0x20007434\n\tPPPIOCXFERUNIT                   = 0x2000744e\n\tPR_SET_PTRACER_ANY               = 0xffffffff\n\tPTP_CLOCK_GETCAPS                = 0x40503d01\n\tPTP_CLOCK_GETCAPS2               = 0x40503d0a\n\tPTP_ENABLE_PPS                   = 0x80043d04\n\tPTP_ENABLE_PPS2                  = 0x80043d0d\n\tPTP_EXTTS_REQUEST                = 0x80103d02\n\tPTP_EXTTS_REQUEST2               = 0x80103d0b\n\tPTP_MASK_CLEAR_ALL               = 0x20003d13\n\tPTP_MASK_EN_SINGLE               = 0x80043d14\n\tPTP_PEROUT_REQUEST               = 0x80383d03\n\tPTP_PEROUT_REQUEST2              = 0x80383d0c\n\tPTP_PIN_SETFUNC                  = 0x80603d07\n\tPTP_PIN_SETFUNC2                 = 0x80603d10\n\tPTP_SYS_OFFSET                   = 0x83403d05\n\tPTP_SYS_OFFSET2                  = 0x83403d0e\n\tPTRACE_GETFPREGS                 = 0xe\n\tPTRACE_GET_THREAD_AREA           = 0x19\n\tPTRACE_GET_THREAD_AREA_3264      = 0xc4\n\tPTRACE_GET_WATCH_REGS            = 0xd0\n\tPTRACE_OLDSETOPTIONS             = 0x15\n\tPTRACE_PEEKDATA_3264             = 0xc1\n\tPTRACE_PEEKTEXT_3264             = 0xc0\n\tPTRACE_POKEDATA_3264             = 0xc3\n\tPTRACE_POKETEXT_3264             = 0xc2\n\tPTRACE_SETFPREGS                 = 0xf\n\tPTRACE_SET_THREAD_AREA           = 0x1a\n\tPTRACE_SET_WATCH_REGS            = 0xd1\n\tRLIMIT_AS                        = 0x6\n\tRLIMIT_MEMLOCK                   = 0x9\n\tRLIMIT_NOFILE                    = 0x5\n\tRLIMIT_NPROC                     = 0x8\n\tRLIMIT_RSS                       = 0x7\n\tRNDADDENTROPY                    = 0x80085203\n\tRNDADDTOENTCNT                   = 0x80045201\n\tRNDCLEARPOOL                     = 0x20005206\n\tRNDGETENTCNT                     = 0x40045200\n\tRNDGETPOOL                       = 0x40085202\n\tRNDRESEEDCRNG                    = 0x20005207\n\tRNDZAPENTCNT                     = 0x20005204\n\tRTC_AIE_OFF                      = 0x20007002\n\tRTC_AIE_ON                       = 0x20007001\n\tRTC_ALM_READ                     = 0x40247008\n\tRTC_ALM_SET                      = 0x80247007\n\tRTC_EPOCH_READ                   = 0x4004700d\n\tRTC_EPOCH_SET                    = 0x8004700e\n\tRTC_IRQP_READ                    = 0x4004700b\n\tRTC_IRQP_SET                     = 0x8004700c\n\tRTC_PARAM_GET                    = 0x80187013\n\tRTC_PARAM_SET                    = 0x80187014\n\tRTC_PIE_OFF                      = 0x20007006\n\tRTC_PIE_ON                       = 0x20007005\n\tRTC_PLL_GET                      = 0x401c7011\n\tRTC_PLL_SET                      = 0x801c7012\n\tRTC_RD_TIME                      = 0x40247009\n\tRTC_SET_TIME                     = 0x8024700a\n\tRTC_UIE_OFF                      = 0x20007004\n\tRTC_UIE_ON                       = 0x20007003\n\tRTC_VL_CLR                       = 0x20007014\n\tRTC_VL_READ                      = 0x40047013\n\tRTC_WIE_OFF                      = 0x20007010\n\tRTC_WIE_ON                       = 0x2000700f\n\tRTC_WKALM_RD                     = 0x40287010\n\tRTC_WKALM_SET                    = 0x8028700f\n\tSCM_DEVMEM_DMABUF                = 0x4f\n\tSCM_DEVMEM_LINEAR                = 0x4e\n\tSCM_TIMESTAMPING                 = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS       = 0x36\n\tSCM_TIMESTAMPING_PKTINFO         = 0x3a\n\tSCM_TIMESTAMPNS                  = 0x23\n\tSCM_TS_OPT_ID                    = 0x51\n\tSCM_TXTIME                       = 0x3d\n\tSCM_WIFI_STATUS                  = 0x29\n\tSECCOMP_IOCTL_NOTIF_ADDFD        = 0x80182103\n\tSECCOMP_IOCTL_NOTIF_ID_VALID     = 0x80082102\n\tSECCOMP_IOCTL_NOTIF_SET_FLAGS    = 0x80082104\n\tSFD_CLOEXEC                      = 0x80000\n\tSFD_NONBLOCK                     = 0x80\n\tSIOCATMARK                       = 0x40047307\n\tSIOCGPGRP                        = 0x40047309\n\tSIOCGSTAMPNS_NEW                 = 0x40108907\n\tSIOCGSTAMP_NEW                   = 0x40108906\n\tSIOCINQ                          = 0x467f\n\tSIOCOUTQ                         = 0x7472\n\tSIOCSPGRP                        = 0x80047308\n\tSOCK_CLOEXEC                     = 0x80000\n\tSOCK_DGRAM                       = 0x1\n\tSOCK_NONBLOCK                    = 0x80\n\tSOCK_STREAM                      = 0x2\n\tSOL_SOCKET                       = 0xffff\n\tSO_ACCEPTCONN                    = 0x1009\n\tSO_ATTACH_BPF                    = 0x32\n\tSO_ATTACH_REUSEPORT_CBPF         = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF         = 0x34\n\tSO_BINDTODEVICE                  = 0x19\n\tSO_BINDTOIFINDEX                 = 0x3e\n\tSO_BPF_EXTENSIONS                = 0x30\n\tSO_BROADCAST                     = 0x20\n\tSO_BSDCOMPAT                     = 0xe\n\tSO_BUF_LOCK                      = 0x48\n\tSO_BUSY_POLL                     = 0x2e\n\tSO_BUSY_POLL_BUDGET              = 0x46\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\n\tSO_DEVMEM_DMABUF                 = 0x4f\n\tSO_DEVMEM_DONTNEED               = 0x50\n\tSO_DEVMEM_LINEAR                 = 0x4e\n\tSO_DOMAIN                        = 0x1029\n\tSO_DONTROUTE                     = 0x10\n\tSO_ERROR                         = 0x1007\n\tSO_INCOMING_CPU                  = 0x31\n\tSO_INCOMING_NAPI_ID              = 0x38\n\tSO_KEEPALIVE                     = 0x8\n\tSO_LINGER                        = 0x80\n\tSO_LOCK_FILTER                   = 0x2c\n\tSO_MARK                          = 0x24\n\tSO_MAX_PACING_RATE               = 0x2f\n\tSO_MEMINFO                       = 0x37\n\tSO_NETNS_COOKIE                  = 0x47\n\tSO_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0x100\n\tSO_PASSCRED                      = 0x11\n\tSO_PASSPIDFD                     = 0x4c\n\tSO_PASSRIGHTS                    = 0x53\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x12\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERPIDFD                     = 0x4d\n\tSO_PEERSEC                       = 0x1e\n\tSO_PREFER_BUSY_POLL              = 0x45\n\tSO_PROTOCOL                      = 0x1028\n\tSO_RCVBUF                        = 0x1002\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x1004\n\tSO_RCVMARK                       = 0x4b\n\tSO_RCVPRIORITY                   = 0x52\n\tSO_RCVTIMEO                      = 0x1006\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x1006\n\tSO_RESERVE_MEM                   = 0x49\n\tSO_REUSEADDR                     = 0x4\n\tSO_REUSEPORT                     = 0x200\n\tSO_RXQ_OVFL                      = 0x28\n\tSO_SECURITY_AUTHENTICATION       = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK   = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT = 0x17\n\tSO_SELECT_ERR_QUEUE              = 0x2d\n\tSO_SNDBUF                        = 0x1001\n\tSO_SNDBUFFORCE                   = 0x1f\n\tSO_SNDLOWAT                      = 0x1003\n\tSO_SNDTIMEO                      = 0x1005\n\tSO_SNDTIMEO_NEW                  = 0x43\n\tSO_SNDTIMEO_OLD                  = 0x1005\n\tSO_STYLE                         = 0x1008\n\tSO_TIMESTAMPING                  = 0x25\n\tSO_TIMESTAMPING_NEW              = 0x41\n\tSO_TIMESTAMPING_OLD              = 0x25\n\tSO_TIMESTAMPNS                   = 0x23\n\tSO_TIMESTAMPNS_NEW               = 0x40\n\tSO_TIMESTAMPNS_OLD               = 0x23\n\tSO_TIMESTAMP_NEW                 = 0x3f\n\tSO_TXREHASH                      = 0x4a\n\tSO_TXTIME                        = 0x3d\n\tSO_TYPE                          = 0x1008\n\tSO_WIFI_STATUS                   = 0x29\n\tSO_ZEROCOPY                      = 0x3c\n\tTAB1                             = 0x800\n\tTAB2                             = 0x1000\n\tTAB3                             = 0x1800\n\tTABDLY                           = 0x1800\n\tTCFLSH                           = 0x5407\n\tTCGETA                           = 0x5401\n\tTCGETS                           = 0x540d\n\tTCGETS2                          = 0x4030542a\n\tTCSAFLUSH                        = 0x5410\n\tTCSBRK                           = 0x5405\n\tTCSBRKP                          = 0x5486\n\tTCSETA                           = 0x5402\n\tTCSETAF                          = 0x5404\n\tTCSETAW                          = 0x5403\n\tTCSETS                           = 0x540e\n\tTCSETS2                          = 0x8030542b\n\tTCSETSF                          = 0x5410\n\tTCSETSF2                         = 0x8030542d\n\tTCSETSW                          = 0x540f\n\tTCSETSW2                         = 0x8030542c\n\tTCXONC                           = 0x5406\n\tTFD_CLOEXEC                      = 0x80000\n\tTFD_NONBLOCK                     = 0x80\n\tTIOCCBRK                         = 0x5428\n\tTIOCCONS                         = 0x80047478\n\tTIOCEXCL                         = 0x740d\n\tTIOCGDEV                         = 0x40045432\n\tTIOCGETD                         = 0x7400\n\tTIOCGETP                         = 0x7408\n\tTIOCGEXCL                        = 0x40045440\n\tTIOCGICOUNT                      = 0x5492\n\tTIOCGISO7816                     = 0x40285442\n\tTIOCGLCKTRMIOS                   = 0x548b\n\tTIOCGLTC                         = 0x7474\n\tTIOCGPGRP                        = 0x40047477\n\tTIOCGPKT                         = 0x40045438\n\tTIOCGPTLCK                       = 0x40045439\n\tTIOCGPTN                         = 0x40045430\n\tTIOCGPTPEER                      = 0x20005441\n\tTIOCGRS485                       = 0x4020542e\n\tTIOCGSERIAL                      = 0x5484\n\tTIOCGSID                         = 0x7416\n\tTIOCGSOFTCAR                     = 0x5481\n\tTIOCGWINSZ                       = 0x40087468\n\tTIOCINQ                          = 0x467f\n\tTIOCLINUX                        = 0x5483\n\tTIOCMBIC                         = 0x741c\n\tTIOCMBIS                         = 0x741b\n\tTIOCMGET                         = 0x741d\n\tTIOCMIWAIT                       = 0x5491\n\tTIOCMSET                         = 0x741a\n\tTIOCM_CAR                        = 0x100\n\tTIOCM_CD                         = 0x100\n\tTIOCM_CTS                        = 0x40\n\tTIOCM_DSR                        = 0x400\n\tTIOCM_RI                         = 0x200\n\tTIOCM_RNG                        = 0x200\n\tTIOCM_SR                         = 0x20\n\tTIOCM_ST                         = 0x10\n\tTIOCNOTTY                        = 0x5471\n\tTIOCNXCL                         = 0x740e\n\tTIOCOUTQ                         = 0x7472\n\tTIOCPKT                          = 0x5470\n\tTIOCSBRK                         = 0x5427\n\tTIOCSCTTY                        = 0x5480\n\tTIOCSERCONFIG                    = 0x5488\n\tTIOCSERGETLSR                    = 0x548e\n\tTIOCSERGETMULTI                  = 0x548f\n\tTIOCSERGSTRUCT                   = 0x548d\n\tTIOCSERGWILD                     = 0x5489\n\tTIOCSERSETMULTI                  = 0x5490\n\tTIOCSERSWILD                     = 0x548a\n\tTIOCSER_TEMT                     = 0x1\n\tTIOCSETD                         = 0x7401\n\tTIOCSETN                         = 0x740a\n\tTIOCSETP                         = 0x7409\n\tTIOCSIG                          = 0x80045436\n\tTIOCSISO7816                     = 0xc0285443\n\tTIOCSLCKTRMIOS                   = 0x548c\n\tTIOCSLTC                         = 0x7475\n\tTIOCSPGRP                        = 0x80047476\n\tTIOCSPTLCK                       = 0x80045431\n\tTIOCSRS485                       = 0xc020542f\n\tTIOCSSERIAL                      = 0x5485\n\tTIOCSSOFTCAR                     = 0x5482\n\tTIOCSTI                          = 0x5472\n\tTIOCSWINSZ                       = 0x80087467\n\tTIOCVHANGUP                      = 0x5437\n\tTOSTOP                           = 0x8000\n\tTUNATTACHFILTER                  = 0x800854d5\n\tTUNDETACHFILTER                  = 0x800854d6\n\tTUNGETDEVNETNS                   = 0x200054e3\n\tTUNGETFEATURES                   = 0x400454cf\n\tTUNGETFILTER                     = 0x400854db\n\tTUNGETIFF                        = 0x400454d2\n\tTUNGETSNDBUF                     = 0x400454d3\n\tTUNGETVNETBE                     = 0x400454df\n\tTUNGETVNETHDRSZ                  = 0x400454d7\n\tTUNGETVNETLE                     = 0x400454dd\n\tTUNSETCARRIER                    = 0x800454e2\n\tTUNSETDEBUG                      = 0x800454c9\n\tTUNSETFILTEREBPF                 = 0x400454e1\n\tTUNSETGROUP                      = 0x800454ce\n\tTUNSETIFF                        = 0x800454ca\n\tTUNSETIFINDEX                    = 0x800454da\n\tTUNSETLINK                       = 0x800454cd\n\tTUNSETNOCSUM                     = 0x800454c8\n\tTUNSETOFFLOAD                    = 0x800454d0\n\tTUNSETOWNER                      = 0x800454cc\n\tTUNSETPERSIST                    = 0x800454cb\n\tTUNSETQUEUE                      = 0x800454d9\n\tTUNSETSNDBUF                     = 0x800454d4\n\tTUNSETSTEERINGEBPF               = 0x400454e0\n\tTUNSETTXFILTER                   = 0x800454d1\n\tTUNSETVNETBE                     = 0x800454de\n\tTUNSETVNETHDRSZ                  = 0x800454d8\n\tTUNSETVNETLE                     = 0x800454dc\n\tUBI_IOCATT                       = 0x80186f40\n\tUBI_IOCDET                       = 0x80046f41\n\tUBI_IOCEBCH                      = 0x80044f02\n\tUBI_IOCEBER                      = 0x80044f01\n\tUBI_IOCEBISMAP                   = 0x40044f05\n\tUBI_IOCEBMAP                     = 0x80084f03\n\tUBI_IOCEBUNMAP                   = 0x80044f04\n\tUBI_IOCMKVOL                     = 0x80986f00\n\tUBI_IOCRMVOL                     = 0x80046f01\n\tUBI_IOCRNVOL                     = 0x91106f03\n\tUBI_IOCRPEB                      = 0x80046f04\n\tUBI_IOCRSVOL                     = 0x800c6f02\n\tUBI_IOCSETVOLPROP                = 0x80104f06\n\tUBI_IOCSPEB                      = 0x80046f05\n\tUBI_IOCVOLCRBLK                  = 0x80804f07\n\tUBI_IOCVOLRMBLK                  = 0x20004f08\n\tUBI_IOCVOLUP                     = 0x80084f00\n\tVDISCARD                         = 0xd\n\tVEOF                             = 0x10\n\tVEOL                             = 0x11\n\tVEOL2                            = 0x6\n\tVMIN                             = 0x4\n\tVREPRINT                         = 0xc\n\tVSTART                           = 0x8\n\tVSTOP                            = 0x9\n\tVSUSP                            = 0xa\n\tVSWTC                            = 0x7\n\tVSWTCH                           = 0x7\n\tVT1                              = 0x4000\n\tVTDLY                            = 0x4000\n\tVTIME                            = 0x5\n\tVWERASE                          = 0xe\n\tWDIOC_GETBOOTSTATUS              = 0x40045702\n\tWDIOC_GETPRETIMEOUT              = 0x40045709\n\tWDIOC_GETSTATUS                  = 0x40045701\n\tWDIOC_GETSUPPORT                 = 0x40285700\n\tWDIOC_GETTEMP                    = 0x40045703\n\tWDIOC_GETTIMELEFT                = 0x4004570a\n\tWDIOC_GETTIMEOUT                 = 0x40045707\n\tWDIOC_KEEPALIVE                  = 0x40045705\n\tWDIOC_SETOPTIONS                 = 0x40045704\n\tWORDSIZE                         = 0x20\n\tXCASE                            = 0x4\n\tXTABS                            = 0x1800\n\t_HIDIOCGRAWNAME                  = 0x40804804\n\t_HIDIOCGRAWPHYS                  = 0x40404805\n\t_HIDIOCGRAWUNIQ                  = 0x40404808\n)\n\n// Errors\nconst (\n\tEADDRINUSE      = syscall.Errno(0x7d)\n\tEADDRNOTAVAIL   = syscall.Errno(0x7e)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x7c)\n\tEALREADY        = syscall.Errno(0x95)\n\tEBADE           = syscall.Errno(0x32)\n\tEBADFD          = syscall.Errno(0x51)\n\tEBADMSG         = syscall.Errno(0x4d)\n\tEBADR           = syscall.Errno(0x33)\n\tEBADRQC         = syscall.Errno(0x36)\n\tEBADSLT         = syscall.Errno(0x37)\n\tEBFONT          = syscall.Errno(0x3b)\n\tECANCELED       = syscall.Errno(0x9e)\n\tECHRNG          = syscall.Errno(0x25)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x82)\n\tECONNREFUSED    = syscall.Errno(0x92)\n\tECONNRESET      = syscall.Errno(0x83)\n\tEDEADLK         = syscall.Errno(0x2d)\n\tEDEADLOCK       = syscall.Errno(0x38)\n\tEDESTADDRREQ    = syscall.Errno(0x60)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x46d)\n\tEHOSTDOWN       = syscall.Errno(0x93)\n\tEHOSTUNREACH    = syscall.Errno(0x94)\n\tEHWPOISON       = syscall.Errno(0xa8)\n\tEIDRM           = syscall.Errno(0x24)\n\tEILSEQ          = syscall.Errno(0x58)\n\tEINIT           = syscall.Errno(0x8d)\n\tEINPROGRESS     = syscall.Errno(0x96)\n\tEISCONN         = syscall.Errno(0x85)\n\tEISNAM          = syscall.Errno(0x8b)\n\tEKEYEXPIRED     = syscall.Errno(0xa2)\n\tEKEYREJECTED    = syscall.Errno(0xa4)\n\tEKEYREVOKED     = syscall.Errno(0xa3)\n\tEL2HLT          = syscall.Errno(0x2c)\n\tEL2NSYNC        = syscall.Errno(0x26)\n\tEL3HLT          = syscall.Errno(0x27)\n\tEL3RST          = syscall.Errno(0x28)\n\tELIBACC         = syscall.Errno(0x53)\n\tELIBBAD         = syscall.Errno(0x54)\n\tELIBEXEC        = syscall.Errno(0x57)\n\tELIBMAX         = syscall.Errno(0x56)\n\tELIBSCN         = syscall.Errno(0x55)\n\tELNRNG          = syscall.Errno(0x29)\n\tELOOP           = syscall.Errno(0x5a)\n\tEMEDIUMTYPE     = syscall.Errno(0xa0)\n\tEMSGSIZE        = syscall.Errno(0x61)\n\tEMULTIHOP       = syscall.Errno(0x4a)\n\tENAMETOOLONG    = syscall.Errno(0x4e)\n\tENAVAIL         = syscall.Errno(0x8a)\n\tENETDOWN        = syscall.Errno(0x7f)\n\tENETRESET       = syscall.Errno(0x81)\n\tENETUNREACH     = syscall.Errno(0x80)\n\tENOANO          = syscall.Errno(0x35)\n\tENOBUFS         = syscall.Errno(0x84)\n\tENOCSI          = syscall.Errno(0x2b)\n\tENODATA         = syscall.Errno(0x3d)\n\tENOKEY          = syscall.Errno(0xa1)\n\tENOLCK          = syscall.Errno(0x2e)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x9f)\n\tENOMSG          = syscall.Errno(0x23)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x63)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x59)\n\tENOTCONN        = syscall.Errno(0x86)\n\tENOTEMPTY       = syscall.Errno(0x5d)\n\tENOTNAM         = syscall.Errno(0x89)\n\tENOTRECOVERABLE = syscall.Errno(0xa6)\n\tENOTSOCK        = syscall.Errno(0x5f)\n\tENOTSUP         = syscall.Errno(0x7a)\n\tENOTUNIQ        = syscall.Errno(0x50)\n\tEOPNOTSUPP      = syscall.Errno(0x7a)\n\tEOVERFLOW       = syscall.Errno(0x4f)\n\tEOWNERDEAD      = syscall.Errno(0xa5)\n\tEPFNOSUPPORT    = syscall.Errno(0x7b)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x78)\n\tEPROTOTYPE      = syscall.Errno(0x62)\n\tEREMCHG         = syscall.Errno(0x52)\n\tEREMDEV         = syscall.Errno(0x8e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x8c)\n\tERESTART        = syscall.Errno(0x5b)\n\tERFKILL         = syscall.Errno(0xa7)\n\tESHUTDOWN       = syscall.Errno(0x8f)\n\tESOCKTNOSUPPORT = syscall.Errno(0x79)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x97)\n\tESTRPIPE        = syscall.Errno(0x5c)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x91)\n\tETOOMANYREFS    = syscall.Errno(0x90)\n\tEUCLEAN         = syscall.Errno(0x87)\n\tEUNATCH         = syscall.Errno(0x2a)\n\tEUSERS          = syscall.Errno(0x5e)\n\tEXFULL          = syscall.Errno(0x34)\n)\n\n// Signals\nconst (\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x12)\n\tSIGCLD    = syscall.Signal(0x12)\n\tSIGCONT   = syscall.Signal(0x19)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGIO     = syscall.Signal(0x16)\n\tSIGPOLL   = syscall.Signal(0x16)\n\tSIGPROF   = syscall.Signal(0x1d)\n\tSIGPWR    = syscall.Signal(0x13)\n\tSIGSTOP   = syscall.Signal(0x17)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTSTP   = syscall.Signal(0x18)\n\tSIGTTIN   = syscall.Signal(0x1a)\n\tSIGTTOU   = syscall.Signal(0x1b)\n\tSIGURG    = syscall.Signal(0x15)\n\tSIGUSR1   = syscall.Signal(0x10)\n\tSIGUSR2   = syscall.Signal(0x11)\n\tSIGVTALRM = syscall.Signal(0x1c)\n\tSIGWINCH  = syscall.Signal(0x14)\n\tSIGXCPU   = syscall.Signal(0x1e)\n\tSIGXFSZ   = syscall.Signal(0x1f)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"ENOMSG\", \"no message of desired type\"},\n\t{36, \"EIDRM\", \"identifier removed\"},\n\t{37, \"ECHRNG\", \"channel number out of range\"},\n\t{38, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{39, \"EL3HLT\", \"level 3 halted\"},\n\t{40, \"EL3RST\", \"level 3 reset\"},\n\t{41, \"ELNRNG\", \"link number out of range\"},\n\t{42, \"EUNATCH\", \"protocol driver not attached\"},\n\t{43, \"ENOCSI\", \"no CSI structure available\"},\n\t{44, \"EL2HLT\", \"level 2 halted\"},\n\t{45, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{46, \"ENOLCK\", \"no locks available\"},\n\t{50, \"EBADE\", \"invalid exchange\"},\n\t{51, \"EBADR\", \"invalid request descriptor\"},\n\t{52, \"EXFULL\", \"exchange full\"},\n\t{53, \"ENOANO\", \"no anode\"},\n\t{54, \"EBADRQC\", \"invalid request code\"},\n\t{55, \"EBADSLT\", \"invalid slot\"},\n\t{56, \"EDEADLOCK\", \"file locking deadlock error\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EMULTIHOP\", \"multihop attempted\"},\n\t{77, \"EBADMSG\", \"bad message\"},\n\t{78, \"ENAMETOOLONG\", \"file name too long\"},\n\t{79, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{80, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{81, \"EBADFD\", \"file descriptor in bad state\"},\n\t{82, \"EREMCHG\", \"remote address changed\"},\n\t{83, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{84, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{85, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{86, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{87, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{88, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{89, \"ENOSYS\", \"function not implemented\"},\n\t{90, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{91, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{92, \"ESTRPIPE\", \"streams pipe error\"},\n\t{93, \"ENOTEMPTY\", \"directory not empty\"},\n\t{94, \"EUSERS\", \"too many users\"},\n\t{95, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{96, \"EDESTADDRREQ\", \"destination address required\"},\n\t{97, \"EMSGSIZE\", \"message too long\"},\n\t{98, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{99, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{120, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{121, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{122, \"ENOTSUP\", \"operation not supported\"},\n\t{123, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{124, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{125, \"EADDRINUSE\", \"address already in use\"},\n\t{126, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{127, \"ENETDOWN\", \"network is down\"},\n\t{128, \"ENETUNREACH\", \"network is unreachable\"},\n\t{129, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{130, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{131, \"ECONNRESET\", \"connection reset by peer\"},\n\t{132, \"ENOBUFS\", \"no buffer space available\"},\n\t{133, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{134, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{135, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{137, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{138, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{139, \"EISNAM\", \"is a named type file\"},\n\t{140, \"EREMOTEIO\", \"remote I/O error\"},\n\t{141, \"EINIT\", \"unknown error 141\"},\n\t{142, \"EREMDEV\", \"unknown error 142\"},\n\t{143, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{144, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{145, \"ETIMEDOUT\", \"connection timed out\"},\n\t{146, \"ECONNREFUSED\", \"connection refused\"},\n\t{147, \"EHOSTDOWN\", \"host is down\"},\n\t{148, \"EHOSTUNREACH\", \"no route to host\"},\n\t{149, \"EALREADY\", \"operation already in progress\"},\n\t{150, \"EINPROGRESS\", \"operation now in progress\"},\n\t{151, \"ESTALE\", \"stale file handle\"},\n\t{158, \"ECANCELED\", \"operation canceled\"},\n\t{159, \"ENOMEDIUM\", \"no medium found\"},\n\t{160, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{161, \"ENOKEY\", \"required key not available\"},\n\t{162, \"EKEYEXPIRED\", \"key has expired\"},\n\t{163, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{164, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{165, \"EOWNERDEAD\", \"owner died\"},\n\t{166, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{167, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{168, \"EHWPOISON\", \"memory page has hardware error\"},\n\t{1133, \"EDQUOT\", \"disk quota exceeded\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGUSR1\", \"user defined signal 1\"},\n\t{17, \"SIGUSR2\", \"user defined signal 2\"},\n\t{18, \"SIGCHLD\", \"child exited\"},\n\t{19, \"SIGPWR\", \"power failure\"},\n\t{20, \"SIGWINCH\", \"window changed\"},\n\t{21, \"SIGURG\", \"urgent I/O condition\"},\n\t{22, \"SIGIO\", \"I/O possible\"},\n\t{23, \"SIGSTOP\", \"stopped (signal)\"},\n\t{24, \"SIGTSTP\", \"stopped\"},\n\t{25, \"SIGCONT\", \"continued\"},\n\t{26, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{27, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{28, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{29, \"SIGPROF\", \"profiling timer expired\"},\n\t{30, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{31, \"SIGXFSZ\", \"file size limit exceeded\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/mips64/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mips64 && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/mips64/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x1008\n\tB115200                          = 0x1002\n\tB1152000                         = 0x1009\n\tB1500000                         = 0x100a\n\tB2000000                         = 0x100b\n\tB230400                          = 0x1003\n\tB2500000                         = 0x100c\n\tB3000000                         = 0x100d\n\tB3500000                         = 0x100e\n\tB4000000                         = 0x100f\n\tB460800                          = 0x1004\n\tB500000                          = 0x1005\n\tB57600                           = 0x1001\n\tB576000                          = 0x1006\n\tB921600                          = 0x1007\n\tBLKALIGNOFF                      = 0x2000127a\n\tBLKBSZGET                        = 0x40081270\n\tBLKBSZSET                        = 0x80081271\n\tBLKDISCARD                       = 0x20001277\n\tBLKDISCARDZEROES                 = 0x2000127c\n\tBLKFLSBUF                        = 0x20001261\n\tBLKFRAGET                        = 0x20001265\n\tBLKFRASET                        = 0x20001264\n\tBLKGETDISKSEQ                    = 0x40081280\n\tBLKGETSIZE                       = 0x20001260\n\tBLKGETSIZE64                     = 0x40081272\n\tBLKIOMIN                         = 0x20001278\n\tBLKIOOPT                         = 0x20001279\n\tBLKPBSZGET                       = 0x2000127b\n\tBLKRAGET                         = 0x20001263\n\tBLKRASET                         = 0x20001262\n\tBLKROGET                         = 0x2000125e\n\tBLKROSET                         = 0x2000125d\n\tBLKROTATIONAL                    = 0x2000127e\n\tBLKRRPART                        = 0x2000125f\n\tBLKSECDISCARD                    = 0x2000127d\n\tBLKSECTGET                       = 0x20001267\n\tBLKSECTSET                       = 0x20001266\n\tBLKSSZGET                        = 0x20001268\n\tBLKZEROOUT                       = 0x2000127f\n\tBOTHER                           = 0x1000\n\tBS1                              = 0x2000\n\tBSDLY                            = 0x2000\n\tCBAUD                            = 0x100f\n\tCBAUDEX                          = 0x1000\n\tCIBAUD                           = 0x100f0000\n\tCLOCAL                           = 0x800\n\tCR1                              = 0x200\n\tCR2                              = 0x400\n\tCR3                              = 0x600\n\tCRDLY                            = 0x600\n\tCREAD                            = 0x80\n\tCS6                              = 0x10\n\tCS7                              = 0x20\n\tCS8                              = 0x30\n\tCSIZE                            = 0x30\n\tCSTOPB                           = 0x40\n\tDM_MPATH_PROBE_PATHS             = 0x2000fd12\n\tECCGETLAYOUT                     = 0x41484d11\n\tECCGETSTATS                      = 0x40104d12\n\tECHOCTL                          = 0x200\n\tECHOE                            = 0x10\n\tECHOK                            = 0x20\n\tECHOKE                           = 0x800\n\tECHONL                           = 0x40\n\tECHOPRT                          = 0x400\n\tEFD_CLOEXEC                      = 0x80000\n\tEFD_NONBLOCK                     = 0x80\n\tEPIOCGPARAMS                     = 0x40088a02\n\tEPIOCSPARAMS                     = 0x80088a01\n\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000\n\tFF1                              = 0x8000\n\tFFDLY                            = 0x8000\n\tFICLONE                          = 0x80049409\n\tFICLONERANGE                     = 0x8020940d\n\tFLUSHO                           = 0x2000\n\tFS_IOC_ENABLE_VERITY             = 0x80806685\n\tFS_IOC_GETFLAGS                  = 0x40086601\n\tFS_IOC_GET_ENCRYPTION_NONCE      = 0x4010661b\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x800c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x80106614\n\tFS_IOC_SETFLAGS                  = 0x80086602\n\tFS_IOC_SET_ENCRYPTION_POLICY     = 0x400c6613\n\tF_GETLK                          = 0xe\n\tF_GETLK64                        = 0xe\n\tF_GETOWN                         = 0x17\n\tF_RDLCK                          = 0x0\n\tF_SETLK                          = 0x6\n\tF_SETLK64                        = 0x6\n\tF_SETLKW                         = 0x7\n\tF_SETLKW64                       = 0x7\n\tF_SETOWN                         = 0x18\n\tF_UNLCK                          = 0x2\n\tF_WRLCK                          = 0x1\n\tHIDIOCGRAWINFO                   = 0x40084803\n\tHIDIOCGRDESC                     = 0x50044802\n\tHIDIOCGRDESCSIZE                 = 0x40044801\n\tHIDIOCREVOKE                     = 0x8004480d\n\tHUPCL                            = 0x400\n\tICANON                           = 0x2\n\tIEXTEN                           = 0x100\n\tIN_CLOEXEC                       = 0x80000\n\tIN_NONBLOCK                      = 0x80\n\tIOCTL_MEI_NOTIFY_GET             = 0x40044803\n\tIOCTL_MEI_NOTIFY_SET             = 0x80044802\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x200007b9\n\tIPV6_FLOWINFO_MASK               = 0xfffffff\n\tIPV6_FLOWLABEL_MASK              = 0xfffff\n\tISIG                             = 0x1\n\tIUCLC                            = 0x200\n\tIXOFF                            = 0x1000\n\tIXON                             = 0x400\n\tMAP_ANON                         = 0x800\n\tMAP_ANONYMOUS                    = 0x800\n\tMAP_DENYWRITE                    = 0x2000\n\tMAP_EXECUTABLE                   = 0x4000\n\tMAP_GROWSDOWN                    = 0x1000\n\tMAP_HUGETLB                      = 0x80000\n\tMAP_LOCKED                       = 0x8000\n\tMAP_NONBLOCK                     = 0x20000\n\tMAP_NORESERVE                    = 0x400\n\tMAP_POPULATE                     = 0x10000\n\tMAP_RENAME                       = 0x800\n\tMAP_STACK                        = 0x40000\n\tMCL_CURRENT                      = 0x1\n\tMCL_FUTURE                       = 0x2\n\tMCL_ONFAULT                      = 0x4\n\tMEMERASE                         = 0x80084d02\n\tMEMERASE64                       = 0x80104d14\n\tMEMGETBADBLOCK                   = 0x80084d0b\n\tMEMGETINFO                       = 0x40204d01\n\tMEMGETOOBSEL                     = 0x40c84d0a\n\tMEMGETREGIONCOUNT                = 0x40044d07\n\tMEMISLOCKED                      = 0x40084d17\n\tMEMLOCK                          = 0x80084d05\n\tMEMREAD                          = 0xc0404d1a\n\tMEMREADOOB                       = 0xc0104d04\n\tMEMSETBADBLOCK                   = 0x80084d0c\n\tMEMUNLOCK                        = 0x80084d06\n\tMEMWRITEOOB                      = 0xc0104d03\n\tMTDFILEMODE                      = 0x20004d13\n\tNFDBITS                          = 0x40\n\tNLDLY                            = 0x100\n\tNOFLSH                           = 0x80\n\tNS_GET_MNTNS_ID                  = 0x4008b705\n\tNS_GET_NSTYPE                    = 0x2000b703\n\tNS_GET_OWNER_UID                 = 0x2000b704\n\tNS_GET_PARENT                    = 0x2000b702\n\tNS_GET_PID_FROM_PIDNS            = 0x4004b706\n\tNS_GET_PID_IN_PIDNS              = 0x4004b708\n\tNS_GET_TGID_FROM_PIDNS           = 0x4004b707\n\tNS_GET_TGID_IN_PIDNS             = 0x4004b709\n\tNS_GET_USERNS                    = 0x2000b701\n\tOLCUC                            = 0x2\n\tONLCR                            = 0x4\n\tOTPERASE                         = 0x800c4d19\n\tOTPGETREGIONCOUNT                = 0x80044d0e\n\tOTPGETREGIONINFO                 = 0x800c4d0f\n\tOTPLOCK                          = 0x400c4d10\n\tOTPSELECT                        = 0x40044d0d\n\tO_APPEND                         = 0x8\n\tO_ASYNC                          = 0x1000\n\tO_CLOEXEC                        = 0x80000\n\tO_CREAT                          = 0x100\n\tO_DIRECT                         = 0x8000\n\tO_DIRECTORY                      = 0x10000\n\tO_DSYNC                          = 0x10\n\tO_EXCL                           = 0x400\n\tO_FSYNC                          = 0x4010\n\tO_LARGEFILE                      = 0x0\n\tO_NDELAY                         = 0x80\n\tO_NOATIME                        = 0x40000\n\tO_NOCTTY                         = 0x800\n\tO_NOFOLLOW                       = 0x20000\n\tO_NONBLOCK                       = 0x80\n\tO_PATH                           = 0x200000\n\tO_RSYNC                          = 0x4010\n\tO_SYNC                           = 0x4010\n\tO_TMPFILE                        = 0x410000\n\tO_TRUNC                          = 0x200\n\tPARENB                           = 0x100\n\tPARODD                           = 0x200\n\tPENDIN                           = 0x4000\n\tPERF_EVENT_IOC_DISABLE           = 0x20002401\n\tPERF_EVENT_IOC_ENABLE            = 0x20002400\n\tPERF_EVENT_IOC_ID                = 0x40082407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8008240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT      = 0x80042409\n\tPERF_EVENT_IOC_PERIOD            = 0x80082404\n\tPERF_EVENT_IOC_QUERY_BPF         = 0xc008240a\n\tPERF_EVENT_IOC_REFRESH           = 0x20002402\n\tPERF_EVENT_IOC_RESET             = 0x20002403\n\tPERF_EVENT_IOC_SET_BPF           = 0x80042408\n\tPERF_EVENT_IOC_SET_FILTER        = 0x80082406\n\tPERF_EVENT_IOC_SET_OUTPUT        = 0x20002405\n\tPPPIOCATTACH                     = 0x8004743d\n\tPPPIOCATTCHAN                    = 0x80047438\n\tPPPIOCBRIDGECHAN                 = 0x80047435\n\tPPPIOCCONNECT                    = 0x8004743a\n\tPPPIOCDETACH                     = 0x8004743c\n\tPPPIOCDISCONN                    = 0x20007439\n\tPPPIOCGASYNCMAP                  = 0x40047458\n\tPPPIOCGCHAN                      = 0x40047437\n\tPPPIOCGDEBUG                     = 0x40047441\n\tPPPIOCGFLAGS                     = 0x4004745a\n\tPPPIOCGIDLE                      = 0x4010743f\n\tPPPIOCGIDLE32                    = 0x4008743f\n\tPPPIOCGIDLE64                    = 0x4010743f\n\tPPPIOCGL2TPSTATS                 = 0x40487436\n\tPPPIOCGMRU                       = 0x40047453\n\tPPPIOCGRASYNCMAP                 = 0x40047455\n\tPPPIOCGUNIT                      = 0x40047456\n\tPPPIOCGXASYNCMAP                 = 0x40207450\n\tPPPIOCSACTIVE                    = 0x80107446\n\tPPPIOCSASYNCMAP                  = 0x80047457\n\tPPPIOCSCOMPRESS                  = 0x8010744d\n\tPPPIOCSDEBUG                     = 0x80047440\n\tPPPIOCSFLAGS                     = 0x80047459\n\tPPPIOCSMAXCID                    = 0x80047451\n\tPPPIOCSMRRU                      = 0x8004743b\n\tPPPIOCSMRU                       = 0x80047452\n\tPPPIOCSNPMODE                    = 0x8008744b\n\tPPPIOCSPASS                      = 0x80107447\n\tPPPIOCSRASYNCMAP                 = 0x80047454\n\tPPPIOCSXASYNCMAP                 = 0x8020744f\n\tPPPIOCUNBRIDGECHAN               = 0x20007434\n\tPPPIOCXFERUNIT                   = 0x2000744e\n\tPR_SET_PTRACER_ANY               = 0xffffffffffffffff\n\tPTP_CLOCK_GETCAPS                = 0x40503d01\n\tPTP_CLOCK_GETCAPS2               = 0x40503d0a\n\tPTP_ENABLE_PPS                   = 0x80043d04\n\tPTP_ENABLE_PPS2                  = 0x80043d0d\n\tPTP_EXTTS_REQUEST                = 0x80103d02\n\tPTP_EXTTS_REQUEST2               = 0x80103d0b\n\tPTP_MASK_CLEAR_ALL               = 0x20003d13\n\tPTP_MASK_EN_SINGLE               = 0x80043d14\n\tPTP_PEROUT_REQUEST               = 0x80383d03\n\tPTP_PEROUT_REQUEST2              = 0x80383d0c\n\tPTP_PIN_SETFUNC                  = 0x80603d07\n\tPTP_PIN_SETFUNC2                 = 0x80603d10\n\tPTP_SYS_OFFSET                   = 0x83403d05\n\tPTP_SYS_OFFSET2                  = 0x83403d0e\n\tPTRACE_GETFPREGS                 = 0xe\n\tPTRACE_GET_THREAD_AREA           = 0x19\n\tPTRACE_GET_THREAD_AREA_3264      = 0xc4\n\tPTRACE_GET_WATCH_REGS            = 0xd0\n\tPTRACE_OLDSETOPTIONS             = 0x15\n\tPTRACE_PEEKDATA_3264             = 0xc1\n\tPTRACE_PEEKTEXT_3264             = 0xc0\n\tPTRACE_POKEDATA_3264             = 0xc3\n\tPTRACE_POKETEXT_3264             = 0xc2\n\tPTRACE_SETFPREGS                 = 0xf\n\tPTRACE_SET_THREAD_AREA           = 0x1a\n\tPTRACE_SET_WATCH_REGS            = 0xd1\n\tRLIMIT_AS                        = 0x6\n\tRLIMIT_MEMLOCK                   = 0x9\n\tRLIMIT_NOFILE                    = 0x5\n\tRLIMIT_NPROC                     = 0x8\n\tRLIMIT_RSS                       = 0x7\n\tRNDADDENTROPY                    = 0x80085203\n\tRNDADDTOENTCNT                   = 0x80045201\n\tRNDCLEARPOOL                     = 0x20005206\n\tRNDGETENTCNT                     = 0x40045200\n\tRNDGETPOOL                       = 0x40085202\n\tRNDRESEEDCRNG                    = 0x20005207\n\tRNDZAPENTCNT                     = 0x20005204\n\tRTC_AIE_OFF                      = 0x20007002\n\tRTC_AIE_ON                       = 0x20007001\n\tRTC_ALM_READ                     = 0x40247008\n\tRTC_ALM_SET                      = 0x80247007\n\tRTC_EPOCH_READ                   = 0x4008700d\n\tRTC_EPOCH_SET                    = 0x8008700e\n\tRTC_IRQP_READ                    = 0x4008700b\n\tRTC_IRQP_SET                     = 0x8008700c\n\tRTC_PARAM_GET                    = 0x80187013\n\tRTC_PARAM_SET                    = 0x80187014\n\tRTC_PIE_OFF                      = 0x20007006\n\tRTC_PIE_ON                       = 0x20007005\n\tRTC_PLL_GET                      = 0x40207011\n\tRTC_PLL_SET                      = 0x80207012\n\tRTC_RD_TIME                      = 0x40247009\n\tRTC_SET_TIME                     = 0x8024700a\n\tRTC_UIE_OFF                      = 0x20007004\n\tRTC_UIE_ON                       = 0x20007003\n\tRTC_VL_CLR                       = 0x20007014\n\tRTC_VL_READ                      = 0x40047013\n\tRTC_WIE_OFF                      = 0x20007010\n\tRTC_WIE_ON                       = 0x2000700f\n\tRTC_WKALM_RD                     = 0x40287010\n\tRTC_WKALM_SET                    = 0x8028700f\n\tSCM_DEVMEM_DMABUF                = 0x4f\n\tSCM_DEVMEM_LINEAR                = 0x4e\n\tSCM_TIMESTAMPING                 = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS       = 0x36\n\tSCM_TIMESTAMPING_PKTINFO         = 0x3a\n\tSCM_TIMESTAMPNS                  = 0x23\n\tSCM_TS_OPT_ID                    = 0x51\n\tSCM_TXTIME                       = 0x3d\n\tSCM_WIFI_STATUS                  = 0x29\n\tSECCOMP_IOCTL_NOTIF_ADDFD        = 0x80182103\n\tSECCOMP_IOCTL_NOTIF_ID_VALID     = 0x80082102\n\tSECCOMP_IOCTL_NOTIF_SET_FLAGS    = 0x80082104\n\tSFD_CLOEXEC                      = 0x80000\n\tSFD_NONBLOCK                     = 0x80\n\tSIOCATMARK                       = 0x40047307\n\tSIOCGPGRP                        = 0x40047309\n\tSIOCGSTAMPNS_NEW                 = 0x40108907\n\tSIOCGSTAMP_NEW                   = 0x40108906\n\tSIOCINQ                          = 0x467f\n\tSIOCOUTQ                         = 0x7472\n\tSIOCSPGRP                        = 0x80047308\n\tSOCK_CLOEXEC                     = 0x80000\n\tSOCK_DGRAM                       = 0x1\n\tSOCK_NONBLOCK                    = 0x80\n\tSOCK_STREAM                      = 0x2\n\tSOL_SOCKET                       = 0xffff\n\tSO_ACCEPTCONN                    = 0x1009\n\tSO_ATTACH_BPF                    = 0x32\n\tSO_ATTACH_REUSEPORT_CBPF         = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF         = 0x34\n\tSO_BINDTODEVICE                  = 0x19\n\tSO_BINDTOIFINDEX                 = 0x3e\n\tSO_BPF_EXTENSIONS                = 0x30\n\tSO_BROADCAST                     = 0x20\n\tSO_BSDCOMPAT                     = 0xe\n\tSO_BUF_LOCK                      = 0x48\n\tSO_BUSY_POLL                     = 0x2e\n\tSO_BUSY_POLL_BUDGET              = 0x46\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\n\tSO_DEVMEM_DMABUF                 = 0x4f\n\tSO_DEVMEM_DONTNEED               = 0x50\n\tSO_DEVMEM_LINEAR                 = 0x4e\n\tSO_DOMAIN                        = 0x1029\n\tSO_DONTROUTE                     = 0x10\n\tSO_ERROR                         = 0x1007\n\tSO_INCOMING_CPU                  = 0x31\n\tSO_INCOMING_NAPI_ID              = 0x38\n\tSO_KEEPALIVE                     = 0x8\n\tSO_LINGER                        = 0x80\n\tSO_LOCK_FILTER                   = 0x2c\n\tSO_MARK                          = 0x24\n\tSO_MAX_PACING_RATE               = 0x2f\n\tSO_MEMINFO                       = 0x37\n\tSO_NETNS_COOKIE                  = 0x47\n\tSO_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0x100\n\tSO_PASSCRED                      = 0x11\n\tSO_PASSPIDFD                     = 0x4c\n\tSO_PASSRIGHTS                    = 0x53\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x12\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERPIDFD                     = 0x4d\n\tSO_PEERSEC                       = 0x1e\n\tSO_PREFER_BUSY_POLL              = 0x45\n\tSO_PROTOCOL                      = 0x1028\n\tSO_RCVBUF                        = 0x1002\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x1004\n\tSO_RCVMARK                       = 0x4b\n\tSO_RCVPRIORITY                   = 0x52\n\tSO_RCVTIMEO                      = 0x1006\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x1006\n\tSO_RESERVE_MEM                   = 0x49\n\tSO_REUSEADDR                     = 0x4\n\tSO_REUSEPORT                     = 0x200\n\tSO_RXQ_OVFL                      = 0x28\n\tSO_SECURITY_AUTHENTICATION       = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK   = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT = 0x17\n\tSO_SELECT_ERR_QUEUE              = 0x2d\n\tSO_SNDBUF                        = 0x1001\n\tSO_SNDBUFFORCE                   = 0x1f\n\tSO_SNDLOWAT                      = 0x1003\n\tSO_SNDTIMEO                      = 0x1005\n\tSO_SNDTIMEO_NEW                  = 0x43\n\tSO_SNDTIMEO_OLD                  = 0x1005\n\tSO_STYLE                         = 0x1008\n\tSO_TIMESTAMPING                  = 0x25\n\tSO_TIMESTAMPING_NEW              = 0x41\n\tSO_TIMESTAMPING_OLD              = 0x25\n\tSO_TIMESTAMPNS                   = 0x23\n\tSO_TIMESTAMPNS_NEW               = 0x40\n\tSO_TIMESTAMPNS_OLD               = 0x23\n\tSO_TIMESTAMP_NEW                 = 0x3f\n\tSO_TXREHASH                      = 0x4a\n\tSO_TXTIME                        = 0x3d\n\tSO_TYPE                          = 0x1008\n\tSO_WIFI_STATUS                   = 0x29\n\tSO_ZEROCOPY                      = 0x3c\n\tTAB1                             = 0x800\n\tTAB2                             = 0x1000\n\tTAB3                             = 0x1800\n\tTABDLY                           = 0x1800\n\tTCFLSH                           = 0x5407\n\tTCGETA                           = 0x5401\n\tTCGETS                           = 0x540d\n\tTCGETS2                          = 0x4030542a\n\tTCSAFLUSH                        = 0x5410\n\tTCSBRK                           = 0x5405\n\tTCSBRKP                          = 0x5486\n\tTCSETA                           = 0x5402\n\tTCSETAF                          = 0x5404\n\tTCSETAW                          = 0x5403\n\tTCSETS                           = 0x540e\n\tTCSETS2                          = 0x8030542b\n\tTCSETSF                          = 0x5410\n\tTCSETSF2                         = 0x8030542d\n\tTCSETSW                          = 0x540f\n\tTCSETSW2                         = 0x8030542c\n\tTCXONC                           = 0x5406\n\tTFD_CLOEXEC                      = 0x80000\n\tTFD_NONBLOCK                     = 0x80\n\tTIOCCBRK                         = 0x5428\n\tTIOCCONS                         = 0x80047478\n\tTIOCEXCL                         = 0x740d\n\tTIOCGDEV                         = 0x40045432\n\tTIOCGETD                         = 0x7400\n\tTIOCGETP                         = 0x7408\n\tTIOCGEXCL                        = 0x40045440\n\tTIOCGICOUNT                      = 0x5492\n\tTIOCGISO7816                     = 0x40285442\n\tTIOCGLCKTRMIOS                   = 0x548b\n\tTIOCGLTC                         = 0x7474\n\tTIOCGPGRP                        = 0x40047477\n\tTIOCGPKT                         = 0x40045438\n\tTIOCGPTLCK                       = 0x40045439\n\tTIOCGPTN                         = 0x40045430\n\tTIOCGPTPEER                      = 0x20005441\n\tTIOCGRS485                       = 0x4020542e\n\tTIOCGSERIAL                      = 0x5484\n\tTIOCGSID                         = 0x7416\n\tTIOCGSOFTCAR                     = 0x5481\n\tTIOCGWINSZ                       = 0x40087468\n\tTIOCINQ                          = 0x467f\n\tTIOCLINUX                        = 0x5483\n\tTIOCMBIC                         = 0x741c\n\tTIOCMBIS                         = 0x741b\n\tTIOCMGET                         = 0x741d\n\tTIOCMIWAIT                       = 0x5491\n\tTIOCMSET                         = 0x741a\n\tTIOCM_CAR                        = 0x100\n\tTIOCM_CD                         = 0x100\n\tTIOCM_CTS                        = 0x40\n\tTIOCM_DSR                        = 0x400\n\tTIOCM_RI                         = 0x200\n\tTIOCM_RNG                        = 0x200\n\tTIOCM_SR                         = 0x20\n\tTIOCM_ST                         = 0x10\n\tTIOCNOTTY                        = 0x5471\n\tTIOCNXCL                         = 0x740e\n\tTIOCOUTQ                         = 0x7472\n\tTIOCPKT                          = 0x5470\n\tTIOCSBRK                         = 0x5427\n\tTIOCSCTTY                        = 0x5480\n\tTIOCSERCONFIG                    = 0x5488\n\tTIOCSERGETLSR                    = 0x548e\n\tTIOCSERGETMULTI                  = 0x548f\n\tTIOCSERGSTRUCT                   = 0x548d\n\tTIOCSERGWILD                     = 0x5489\n\tTIOCSERSETMULTI                  = 0x5490\n\tTIOCSERSWILD                     = 0x548a\n\tTIOCSER_TEMT                     = 0x1\n\tTIOCSETD                         = 0x7401\n\tTIOCSETN                         = 0x740a\n\tTIOCSETP                         = 0x7409\n\tTIOCSIG                          = 0x80045436\n\tTIOCSISO7816                     = 0xc0285443\n\tTIOCSLCKTRMIOS                   = 0x548c\n\tTIOCSLTC                         = 0x7475\n\tTIOCSPGRP                        = 0x80047476\n\tTIOCSPTLCK                       = 0x80045431\n\tTIOCSRS485                       = 0xc020542f\n\tTIOCSSERIAL                      = 0x5485\n\tTIOCSSOFTCAR                     = 0x5482\n\tTIOCSTI                          = 0x5472\n\tTIOCSWINSZ                       = 0x80087467\n\tTIOCVHANGUP                      = 0x5437\n\tTOSTOP                           = 0x8000\n\tTUNATTACHFILTER                  = 0x801054d5\n\tTUNDETACHFILTER                  = 0x801054d6\n\tTUNGETDEVNETNS                   = 0x200054e3\n\tTUNGETFEATURES                   = 0x400454cf\n\tTUNGETFILTER                     = 0x401054db\n\tTUNGETIFF                        = 0x400454d2\n\tTUNGETSNDBUF                     = 0x400454d3\n\tTUNGETVNETBE                     = 0x400454df\n\tTUNGETVNETHDRSZ                  = 0x400454d7\n\tTUNGETVNETLE                     = 0x400454dd\n\tTUNSETCARRIER                    = 0x800454e2\n\tTUNSETDEBUG                      = 0x800454c9\n\tTUNSETFILTEREBPF                 = 0x400454e1\n\tTUNSETGROUP                      = 0x800454ce\n\tTUNSETIFF                        = 0x800454ca\n\tTUNSETIFINDEX                    = 0x800454da\n\tTUNSETLINK                       = 0x800454cd\n\tTUNSETNOCSUM                     = 0x800454c8\n\tTUNSETOFFLOAD                    = 0x800454d0\n\tTUNSETOWNER                      = 0x800454cc\n\tTUNSETPERSIST                    = 0x800454cb\n\tTUNSETQUEUE                      = 0x800454d9\n\tTUNSETSNDBUF                     = 0x800454d4\n\tTUNSETSTEERINGEBPF               = 0x400454e0\n\tTUNSETTXFILTER                   = 0x800454d1\n\tTUNSETVNETBE                     = 0x800454de\n\tTUNSETVNETHDRSZ                  = 0x800454d8\n\tTUNSETVNETLE                     = 0x800454dc\n\tUBI_IOCATT                       = 0x80186f40\n\tUBI_IOCDET                       = 0x80046f41\n\tUBI_IOCEBCH                      = 0x80044f02\n\tUBI_IOCEBER                      = 0x80044f01\n\tUBI_IOCEBISMAP                   = 0x40044f05\n\tUBI_IOCEBMAP                     = 0x80084f03\n\tUBI_IOCEBUNMAP                   = 0x80044f04\n\tUBI_IOCMKVOL                     = 0x80986f00\n\tUBI_IOCRMVOL                     = 0x80046f01\n\tUBI_IOCRNVOL                     = 0x91106f03\n\tUBI_IOCRPEB                      = 0x80046f04\n\tUBI_IOCRSVOL                     = 0x800c6f02\n\tUBI_IOCSETVOLPROP                = 0x80104f06\n\tUBI_IOCSPEB                      = 0x80046f05\n\tUBI_IOCVOLCRBLK                  = 0x80804f07\n\tUBI_IOCVOLRMBLK                  = 0x20004f08\n\tUBI_IOCVOLUP                     = 0x80084f00\n\tVDISCARD                         = 0xd\n\tVEOF                             = 0x10\n\tVEOL                             = 0x11\n\tVEOL2                            = 0x6\n\tVMIN                             = 0x4\n\tVREPRINT                         = 0xc\n\tVSTART                           = 0x8\n\tVSTOP                            = 0x9\n\tVSUSP                            = 0xa\n\tVSWTC                            = 0x7\n\tVSWTCH                           = 0x7\n\tVT1                              = 0x4000\n\tVTDLY                            = 0x4000\n\tVTIME                            = 0x5\n\tVWERASE                          = 0xe\n\tWDIOC_GETBOOTSTATUS              = 0x40045702\n\tWDIOC_GETPRETIMEOUT              = 0x40045709\n\tWDIOC_GETSTATUS                  = 0x40045701\n\tWDIOC_GETSUPPORT                 = 0x40285700\n\tWDIOC_GETTEMP                    = 0x40045703\n\tWDIOC_GETTIMELEFT                = 0x4004570a\n\tWDIOC_GETTIMEOUT                 = 0x40045707\n\tWDIOC_KEEPALIVE                  = 0x40045705\n\tWDIOC_SETOPTIONS                 = 0x40045704\n\tWORDSIZE                         = 0x40\n\tXCASE                            = 0x4\n\tXTABS                            = 0x1800\n\t_HIDIOCGRAWNAME                  = 0x40804804\n\t_HIDIOCGRAWPHYS                  = 0x40404805\n\t_HIDIOCGRAWUNIQ                  = 0x40404808\n)\n\n// Errors\nconst (\n\tEADDRINUSE      = syscall.Errno(0x7d)\n\tEADDRNOTAVAIL   = syscall.Errno(0x7e)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x7c)\n\tEALREADY        = syscall.Errno(0x95)\n\tEBADE           = syscall.Errno(0x32)\n\tEBADFD          = syscall.Errno(0x51)\n\tEBADMSG         = syscall.Errno(0x4d)\n\tEBADR           = syscall.Errno(0x33)\n\tEBADRQC         = syscall.Errno(0x36)\n\tEBADSLT         = syscall.Errno(0x37)\n\tEBFONT          = syscall.Errno(0x3b)\n\tECANCELED       = syscall.Errno(0x9e)\n\tECHRNG          = syscall.Errno(0x25)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x82)\n\tECONNREFUSED    = syscall.Errno(0x92)\n\tECONNRESET      = syscall.Errno(0x83)\n\tEDEADLK         = syscall.Errno(0x2d)\n\tEDEADLOCK       = syscall.Errno(0x38)\n\tEDESTADDRREQ    = syscall.Errno(0x60)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x46d)\n\tEHOSTDOWN       = syscall.Errno(0x93)\n\tEHOSTUNREACH    = syscall.Errno(0x94)\n\tEHWPOISON       = syscall.Errno(0xa8)\n\tEIDRM           = syscall.Errno(0x24)\n\tEILSEQ          = syscall.Errno(0x58)\n\tEINIT           = syscall.Errno(0x8d)\n\tEINPROGRESS     = syscall.Errno(0x96)\n\tEISCONN         = syscall.Errno(0x85)\n\tEISNAM          = syscall.Errno(0x8b)\n\tEKEYEXPIRED     = syscall.Errno(0xa2)\n\tEKEYREJECTED    = syscall.Errno(0xa4)\n\tEKEYREVOKED     = syscall.Errno(0xa3)\n\tEL2HLT          = syscall.Errno(0x2c)\n\tEL2NSYNC        = syscall.Errno(0x26)\n\tEL3HLT          = syscall.Errno(0x27)\n\tEL3RST          = syscall.Errno(0x28)\n\tELIBACC         = syscall.Errno(0x53)\n\tELIBBAD         = syscall.Errno(0x54)\n\tELIBEXEC        = syscall.Errno(0x57)\n\tELIBMAX         = syscall.Errno(0x56)\n\tELIBSCN         = syscall.Errno(0x55)\n\tELNRNG          = syscall.Errno(0x29)\n\tELOOP           = syscall.Errno(0x5a)\n\tEMEDIUMTYPE     = syscall.Errno(0xa0)\n\tEMSGSIZE        = syscall.Errno(0x61)\n\tEMULTIHOP       = syscall.Errno(0x4a)\n\tENAMETOOLONG    = syscall.Errno(0x4e)\n\tENAVAIL         = syscall.Errno(0x8a)\n\tENETDOWN        = syscall.Errno(0x7f)\n\tENETRESET       = syscall.Errno(0x81)\n\tENETUNREACH     = syscall.Errno(0x80)\n\tENOANO          = syscall.Errno(0x35)\n\tENOBUFS         = syscall.Errno(0x84)\n\tENOCSI          = syscall.Errno(0x2b)\n\tENODATA         = syscall.Errno(0x3d)\n\tENOKEY          = syscall.Errno(0xa1)\n\tENOLCK          = syscall.Errno(0x2e)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x9f)\n\tENOMSG          = syscall.Errno(0x23)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x63)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x59)\n\tENOTCONN        = syscall.Errno(0x86)\n\tENOTEMPTY       = syscall.Errno(0x5d)\n\tENOTNAM         = syscall.Errno(0x89)\n\tENOTRECOVERABLE = syscall.Errno(0xa6)\n\tENOTSOCK        = syscall.Errno(0x5f)\n\tENOTSUP         = syscall.Errno(0x7a)\n\tENOTUNIQ        = syscall.Errno(0x50)\n\tEOPNOTSUPP      = syscall.Errno(0x7a)\n\tEOVERFLOW       = syscall.Errno(0x4f)\n\tEOWNERDEAD      = syscall.Errno(0xa5)\n\tEPFNOSUPPORT    = syscall.Errno(0x7b)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x78)\n\tEPROTOTYPE      = syscall.Errno(0x62)\n\tEREMCHG         = syscall.Errno(0x52)\n\tEREMDEV         = syscall.Errno(0x8e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x8c)\n\tERESTART        = syscall.Errno(0x5b)\n\tERFKILL         = syscall.Errno(0xa7)\n\tESHUTDOWN       = syscall.Errno(0x8f)\n\tESOCKTNOSUPPORT = syscall.Errno(0x79)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x97)\n\tESTRPIPE        = syscall.Errno(0x5c)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x91)\n\tETOOMANYREFS    = syscall.Errno(0x90)\n\tEUCLEAN         = syscall.Errno(0x87)\n\tEUNATCH         = syscall.Errno(0x2a)\n\tEUSERS          = syscall.Errno(0x5e)\n\tEXFULL          = syscall.Errno(0x34)\n)\n\n// Signals\nconst (\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x12)\n\tSIGCLD    = syscall.Signal(0x12)\n\tSIGCONT   = syscall.Signal(0x19)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGIO     = syscall.Signal(0x16)\n\tSIGPOLL   = syscall.Signal(0x16)\n\tSIGPROF   = syscall.Signal(0x1d)\n\tSIGPWR    = syscall.Signal(0x13)\n\tSIGSTOP   = syscall.Signal(0x17)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTSTP   = syscall.Signal(0x18)\n\tSIGTTIN   = syscall.Signal(0x1a)\n\tSIGTTOU   = syscall.Signal(0x1b)\n\tSIGURG    = syscall.Signal(0x15)\n\tSIGUSR1   = syscall.Signal(0x10)\n\tSIGUSR2   = syscall.Signal(0x11)\n\tSIGVTALRM = syscall.Signal(0x1c)\n\tSIGWINCH  = syscall.Signal(0x14)\n\tSIGXCPU   = syscall.Signal(0x1e)\n\tSIGXFSZ   = syscall.Signal(0x1f)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"ENOMSG\", \"no message of desired type\"},\n\t{36, \"EIDRM\", \"identifier removed\"},\n\t{37, \"ECHRNG\", \"channel number out of range\"},\n\t{38, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{39, \"EL3HLT\", \"level 3 halted\"},\n\t{40, \"EL3RST\", \"level 3 reset\"},\n\t{41, \"ELNRNG\", \"link number out of range\"},\n\t{42, \"EUNATCH\", \"protocol driver not attached\"},\n\t{43, \"ENOCSI\", \"no CSI structure available\"},\n\t{44, \"EL2HLT\", \"level 2 halted\"},\n\t{45, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{46, \"ENOLCK\", \"no locks available\"},\n\t{50, \"EBADE\", \"invalid exchange\"},\n\t{51, \"EBADR\", \"invalid request descriptor\"},\n\t{52, \"EXFULL\", \"exchange full\"},\n\t{53, \"ENOANO\", \"no anode\"},\n\t{54, \"EBADRQC\", \"invalid request code\"},\n\t{55, \"EBADSLT\", \"invalid slot\"},\n\t{56, \"EDEADLOCK\", \"file locking deadlock error\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EMULTIHOP\", \"multihop attempted\"},\n\t{77, \"EBADMSG\", \"bad message\"},\n\t{78, \"ENAMETOOLONG\", \"file name too long\"},\n\t{79, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{80, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{81, \"EBADFD\", \"file descriptor in bad state\"},\n\t{82, \"EREMCHG\", \"remote address changed\"},\n\t{83, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{84, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{85, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{86, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{87, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{88, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{89, \"ENOSYS\", \"function not implemented\"},\n\t{90, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{91, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{92, \"ESTRPIPE\", \"streams pipe error\"},\n\t{93, \"ENOTEMPTY\", \"directory not empty\"},\n\t{94, \"EUSERS\", \"too many users\"},\n\t{95, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{96, \"EDESTADDRREQ\", \"destination address required\"},\n\t{97, \"EMSGSIZE\", \"message too long\"},\n\t{98, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{99, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{120, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{121, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{122, \"ENOTSUP\", \"operation not supported\"},\n\t{123, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{124, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{125, \"EADDRINUSE\", \"address already in use\"},\n\t{126, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{127, \"ENETDOWN\", \"network is down\"},\n\t{128, \"ENETUNREACH\", \"network is unreachable\"},\n\t{129, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{130, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{131, \"ECONNRESET\", \"connection reset by peer\"},\n\t{132, \"ENOBUFS\", \"no buffer space available\"},\n\t{133, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{134, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{135, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{137, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{138, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{139, \"EISNAM\", \"is a named type file\"},\n\t{140, \"EREMOTEIO\", \"remote I/O error\"},\n\t{141, \"EINIT\", \"unknown error 141\"},\n\t{142, \"EREMDEV\", \"unknown error 142\"},\n\t{143, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{144, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{145, \"ETIMEDOUT\", \"connection timed out\"},\n\t{146, \"ECONNREFUSED\", \"connection refused\"},\n\t{147, \"EHOSTDOWN\", \"host is down\"},\n\t{148, \"EHOSTUNREACH\", \"no route to host\"},\n\t{149, \"EALREADY\", \"operation already in progress\"},\n\t{150, \"EINPROGRESS\", \"operation now in progress\"},\n\t{151, \"ESTALE\", \"stale file handle\"},\n\t{158, \"ECANCELED\", \"operation canceled\"},\n\t{159, \"ENOMEDIUM\", \"no medium found\"},\n\t{160, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{161, \"ENOKEY\", \"required key not available\"},\n\t{162, \"EKEYEXPIRED\", \"key has expired\"},\n\t{163, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{164, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{165, \"EOWNERDEAD\", \"owner died\"},\n\t{166, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{167, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{168, \"EHWPOISON\", \"memory page has hardware error\"},\n\t{1133, \"EDQUOT\", \"disk quota exceeded\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGUSR1\", \"user defined signal 1\"},\n\t{17, \"SIGUSR2\", \"user defined signal 2\"},\n\t{18, \"SIGCHLD\", \"child exited\"},\n\t{19, \"SIGPWR\", \"power failure\"},\n\t{20, \"SIGWINCH\", \"window changed\"},\n\t{21, \"SIGURG\", \"urgent I/O condition\"},\n\t{22, \"SIGIO\", \"I/O possible\"},\n\t{23, \"SIGSTOP\", \"stopped (signal)\"},\n\t{24, \"SIGTSTP\", \"stopped\"},\n\t{25, \"SIGCONT\", \"continued\"},\n\t{26, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{27, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{28, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{29, \"SIGPROF\", \"profiling timer expired\"},\n\t{30, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{31, \"SIGXFSZ\", \"file size limit exceeded\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/mips64le/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mips64le && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/mips64le/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x1008\n\tB115200                          = 0x1002\n\tB1152000                         = 0x1009\n\tB1500000                         = 0x100a\n\tB2000000                         = 0x100b\n\tB230400                          = 0x1003\n\tB2500000                         = 0x100c\n\tB3000000                         = 0x100d\n\tB3500000                         = 0x100e\n\tB4000000                         = 0x100f\n\tB460800                          = 0x1004\n\tB500000                          = 0x1005\n\tB57600                           = 0x1001\n\tB576000                          = 0x1006\n\tB921600                          = 0x1007\n\tBLKALIGNOFF                      = 0x2000127a\n\tBLKBSZGET                        = 0x40081270\n\tBLKBSZSET                        = 0x80081271\n\tBLKDISCARD                       = 0x20001277\n\tBLKDISCARDZEROES                 = 0x2000127c\n\tBLKFLSBUF                        = 0x20001261\n\tBLKFRAGET                        = 0x20001265\n\tBLKFRASET                        = 0x20001264\n\tBLKGETDISKSEQ                    = 0x40081280\n\tBLKGETSIZE                       = 0x20001260\n\tBLKGETSIZE64                     = 0x40081272\n\tBLKIOMIN                         = 0x20001278\n\tBLKIOOPT                         = 0x20001279\n\tBLKPBSZGET                       = 0x2000127b\n\tBLKRAGET                         = 0x20001263\n\tBLKRASET                         = 0x20001262\n\tBLKROGET                         = 0x2000125e\n\tBLKROSET                         = 0x2000125d\n\tBLKROTATIONAL                    = 0x2000127e\n\tBLKRRPART                        = 0x2000125f\n\tBLKSECDISCARD                    = 0x2000127d\n\tBLKSECTGET                       = 0x20001267\n\tBLKSECTSET                       = 0x20001266\n\tBLKSSZGET                        = 0x20001268\n\tBLKZEROOUT                       = 0x2000127f\n\tBOTHER                           = 0x1000\n\tBS1                              = 0x2000\n\tBSDLY                            = 0x2000\n\tCBAUD                            = 0x100f\n\tCBAUDEX                          = 0x1000\n\tCIBAUD                           = 0x100f0000\n\tCLOCAL                           = 0x800\n\tCR1                              = 0x200\n\tCR2                              = 0x400\n\tCR3                              = 0x600\n\tCRDLY                            = 0x600\n\tCREAD                            = 0x80\n\tCS6                              = 0x10\n\tCS7                              = 0x20\n\tCS8                              = 0x30\n\tCSIZE                            = 0x30\n\tCSTOPB                           = 0x40\n\tDM_MPATH_PROBE_PATHS             = 0x2000fd12\n\tECCGETLAYOUT                     = 0x41484d11\n\tECCGETSTATS                      = 0x40104d12\n\tECHOCTL                          = 0x200\n\tECHOE                            = 0x10\n\tECHOK                            = 0x20\n\tECHOKE                           = 0x800\n\tECHONL                           = 0x40\n\tECHOPRT                          = 0x400\n\tEFD_CLOEXEC                      = 0x80000\n\tEFD_NONBLOCK                     = 0x80\n\tEPIOCGPARAMS                     = 0x40088a02\n\tEPIOCSPARAMS                     = 0x80088a01\n\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000\n\tFF1                              = 0x8000\n\tFFDLY                            = 0x8000\n\tFICLONE                          = 0x80049409\n\tFICLONERANGE                     = 0x8020940d\n\tFLUSHO                           = 0x2000\n\tFS_IOC_ENABLE_VERITY             = 0x80806685\n\tFS_IOC_GETFLAGS                  = 0x40086601\n\tFS_IOC_GET_ENCRYPTION_NONCE      = 0x4010661b\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x800c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x80106614\n\tFS_IOC_SETFLAGS                  = 0x80086602\n\tFS_IOC_SET_ENCRYPTION_POLICY     = 0x400c6613\n\tF_GETLK                          = 0xe\n\tF_GETLK64                        = 0xe\n\tF_GETOWN                         = 0x17\n\tF_RDLCK                          = 0x0\n\tF_SETLK                          = 0x6\n\tF_SETLK64                        = 0x6\n\tF_SETLKW                         = 0x7\n\tF_SETLKW64                       = 0x7\n\tF_SETOWN                         = 0x18\n\tF_UNLCK                          = 0x2\n\tF_WRLCK                          = 0x1\n\tHIDIOCGRAWINFO                   = 0x40084803\n\tHIDIOCGRDESC                     = 0x50044802\n\tHIDIOCGRDESCSIZE                 = 0x40044801\n\tHIDIOCREVOKE                     = 0x8004480d\n\tHUPCL                            = 0x400\n\tICANON                           = 0x2\n\tIEXTEN                           = 0x100\n\tIN_CLOEXEC                       = 0x80000\n\tIN_NONBLOCK                      = 0x80\n\tIOCTL_MEI_NOTIFY_GET             = 0x40044803\n\tIOCTL_MEI_NOTIFY_SET             = 0x80044802\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x200007b9\n\tIPV6_FLOWINFO_MASK               = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK              = 0xffff0f00\n\tISIG                             = 0x1\n\tIUCLC                            = 0x200\n\tIXOFF                            = 0x1000\n\tIXON                             = 0x400\n\tMAP_ANON                         = 0x800\n\tMAP_ANONYMOUS                    = 0x800\n\tMAP_DENYWRITE                    = 0x2000\n\tMAP_EXECUTABLE                   = 0x4000\n\tMAP_GROWSDOWN                    = 0x1000\n\tMAP_HUGETLB                      = 0x80000\n\tMAP_LOCKED                       = 0x8000\n\tMAP_NONBLOCK                     = 0x20000\n\tMAP_NORESERVE                    = 0x400\n\tMAP_POPULATE                     = 0x10000\n\tMAP_RENAME                       = 0x800\n\tMAP_STACK                        = 0x40000\n\tMCL_CURRENT                      = 0x1\n\tMCL_FUTURE                       = 0x2\n\tMCL_ONFAULT                      = 0x4\n\tMEMERASE                         = 0x80084d02\n\tMEMERASE64                       = 0x80104d14\n\tMEMGETBADBLOCK                   = 0x80084d0b\n\tMEMGETINFO                       = 0x40204d01\n\tMEMGETOOBSEL                     = 0x40c84d0a\n\tMEMGETREGIONCOUNT                = 0x40044d07\n\tMEMISLOCKED                      = 0x40084d17\n\tMEMLOCK                          = 0x80084d05\n\tMEMREAD                          = 0xc0404d1a\n\tMEMREADOOB                       = 0xc0104d04\n\tMEMSETBADBLOCK                   = 0x80084d0c\n\tMEMUNLOCK                        = 0x80084d06\n\tMEMWRITEOOB                      = 0xc0104d03\n\tMTDFILEMODE                      = 0x20004d13\n\tNFDBITS                          = 0x40\n\tNLDLY                            = 0x100\n\tNOFLSH                           = 0x80\n\tNS_GET_MNTNS_ID                  = 0x4008b705\n\tNS_GET_NSTYPE                    = 0x2000b703\n\tNS_GET_OWNER_UID                 = 0x2000b704\n\tNS_GET_PARENT                    = 0x2000b702\n\tNS_GET_PID_FROM_PIDNS            = 0x4004b706\n\tNS_GET_PID_IN_PIDNS              = 0x4004b708\n\tNS_GET_TGID_FROM_PIDNS           = 0x4004b707\n\tNS_GET_TGID_IN_PIDNS             = 0x4004b709\n\tNS_GET_USERNS                    = 0x2000b701\n\tOLCUC                            = 0x2\n\tONLCR                            = 0x4\n\tOTPERASE                         = 0x800c4d19\n\tOTPGETREGIONCOUNT                = 0x80044d0e\n\tOTPGETREGIONINFO                 = 0x800c4d0f\n\tOTPLOCK                          = 0x400c4d10\n\tOTPSELECT                        = 0x40044d0d\n\tO_APPEND                         = 0x8\n\tO_ASYNC                          = 0x1000\n\tO_CLOEXEC                        = 0x80000\n\tO_CREAT                          = 0x100\n\tO_DIRECT                         = 0x8000\n\tO_DIRECTORY                      = 0x10000\n\tO_DSYNC                          = 0x10\n\tO_EXCL                           = 0x400\n\tO_FSYNC                          = 0x4010\n\tO_LARGEFILE                      = 0x0\n\tO_NDELAY                         = 0x80\n\tO_NOATIME                        = 0x40000\n\tO_NOCTTY                         = 0x800\n\tO_NOFOLLOW                       = 0x20000\n\tO_NONBLOCK                       = 0x80\n\tO_PATH                           = 0x200000\n\tO_RSYNC                          = 0x4010\n\tO_SYNC                           = 0x4010\n\tO_TMPFILE                        = 0x410000\n\tO_TRUNC                          = 0x200\n\tPARENB                           = 0x100\n\tPARODD                           = 0x200\n\tPENDIN                           = 0x4000\n\tPERF_EVENT_IOC_DISABLE           = 0x20002401\n\tPERF_EVENT_IOC_ENABLE            = 0x20002400\n\tPERF_EVENT_IOC_ID                = 0x40082407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8008240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT      = 0x80042409\n\tPERF_EVENT_IOC_PERIOD            = 0x80082404\n\tPERF_EVENT_IOC_QUERY_BPF         = 0xc008240a\n\tPERF_EVENT_IOC_REFRESH           = 0x20002402\n\tPERF_EVENT_IOC_RESET             = 0x20002403\n\tPERF_EVENT_IOC_SET_BPF           = 0x80042408\n\tPERF_EVENT_IOC_SET_FILTER        = 0x80082406\n\tPERF_EVENT_IOC_SET_OUTPUT        = 0x20002405\n\tPPPIOCATTACH                     = 0x8004743d\n\tPPPIOCATTCHAN                    = 0x80047438\n\tPPPIOCBRIDGECHAN                 = 0x80047435\n\tPPPIOCCONNECT                    = 0x8004743a\n\tPPPIOCDETACH                     = 0x8004743c\n\tPPPIOCDISCONN                    = 0x20007439\n\tPPPIOCGASYNCMAP                  = 0x40047458\n\tPPPIOCGCHAN                      = 0x40047437\n\tPPPIOCGDEBUG                     = 0x40047441\n\tPPPIOCGFLAGS                     = 0x4004745a\n\tPPPIOCGIDLE                      = 0x4010743f\n\tPPPIOCGIDLE32                    = 0x4008743f\n\tPPPIOCGIDLE64                    = 0x4010743f\n\tPPPIOCGL2TPSTATS                 = 0x40487436\n\tPPPIOCGMRU                       = 0x40047453\n\tPPPIOCGRASYNCMAP                 = 0x40047455\n\tPPPIOCGUNIT                      = 0x40047456\n\tPPPIOCGXASYNCMAP                 = 0x40207450\n\tPPPIOCSACTIVE                    = 0x80107446\n\tPPPIOCSASYNCMAP                  = 0x80047457\n\tPPPIOCSCOMPRESS                  = 0x8010744d\n\tPPPIOCSDEBUG                     = 0x80047440\n\tPPPIOCSFLAGS                     = 0x80047459\n\tPPPIOCSMAXCID                    = 0x80047451\n\tPPPIOCSMRRU                      = 0x8004743b\n\tPPPIOCSMRU                       = 0x80047452\n\tPPPIOCSNPMODE                    = 0x8008744b\n\tPPPIOCSPASS                      = 0x80107447\n\tPPPIOCSRASYNCMAP                 = 0x80047454\n\tPPPIOCSXASYNCMAP                 = 0x8020744f\n\tPPPIOCUNBRIDGECHAN               = 0x20007434\n\tPPPIOCXFERUNIT                   = 0x2000744e\n\tPR_SET_PTRACER_ANY               = 0xffffffffffffffff\n\tPTP_CLOCK_GETCAPS                = 0x40503d01\n\tPTP_CLOCK_GETCAPS2               = 0x40503d0a\n\tPTP_ENABLE_PPS                   = 0x80043d04\n\tPTP_ENABLE_PPS2                  = 0x80043d0d\n\tPTP_EXTTS_REQUEST                = 0x80103d02\n\tPTP_EXTTS_REQUEST2               = 0x80103d0b\n\tPTP_MASK_CLEAR_ALL               = 0x20003d13\n\tPTP_MASK_EN_SINGLE               = 0x80043d14\n\tPTP_PEROUT_REQUEST               = 0x80383d03\n\tPTP_PEROUT_REQUEST2              = 0x80383d0c\n\tPTP_PIN_SETFUNC                  = 0x80603d07\n\tPTP_PIN_SETFUNC2                 = 0x80603d10\n\tPTP_SYS_OFFSET                   = 0x83403d05\n\tPTP_SYS_OFFSET2                  = 0x83403d0e\n\tPTRACE_GETFPREGS                 = 0xe\n\tPTRACE_GET_THREAD_AREA           = 0x19\n\tPTRACE_GET_THREAD_AREA_3264      = 0xc4\n\tPTRACE_GET_WATCH_REGS            = 0xd0\n\tPTRACE_OLDSETOPTIONS             = 0x15\n\tPTRACE_PEEKDATA_3264             = 0xc1\n\tPTRACE_PEEKTEXT_3264             = 0xc0\n\tPTRACE_POKEDATA_3264             = 0xc3\n\tPTRACE_POKETEXT_3264             = 0xc2\n\tPTRACE_SETFPREGS                 = 0xf\n\tPTRACE_SET_THREAD_AREA           = 0x1a\n\tPTRACE_SET_WATCH_REGS            = 0xd1\n\tRLIMIT_AS                        = 0x6\n\tRLIMIT_MEMLOCK                   = 0x9\n\tRLIMIT_NOFILE                    = 0x5\n\tRLIMIT_NPROC                     = 0x8\n\tRLIMIT_RSS                       = 0x7\n\tRNDADDENTROPY                    = 0x80085203\n\tRNDADDTOENTCNT                   = 0x80045201\n\tRNDCLEARPOOL                     = 0x20005206\n\tRNDGETENTCNT                     = 0x40045200\n\tRNDGETPOOL                       = 0x40085202\n\tRNDRESEEDCRNG                    = 0x20005207\n\tRNDZAPENTCNT                     = 0x20005204\n\tRTC_AIE_OFF                      = 0x20007002\n\tRTC_AIE_ON                       = 0x20007001\n\tRTC_ALM_READ                     = 0x40247008\n\tRTC_ALM_SET                      = 0x80247007\n\tRTC_EPOCH_READ                   = 0x4008700d\n\tRTC_EPOCH_SET                    = 0x8008700e\n\tRTC_IRQP_READ                    = 0x4008700b\n\tRTC_IRQP_SET                     = 0x8008700c\n\tRTC_PARAM_GET                    = 0x80187013\n\tRTC_PARAM_SET                    = 0x80187014\n\tRTC_PIE_OFF                      = 0x20007006\n\tRTC_PIE_ON                       = 0x20007005\n\tRTC_PLL_GET                      = 0x40207011\n\tRTC_PLL_SET                      = 0x80207012\n\tRTC_RD_TIME                      = 0x40247009\n\tRTC_SET_TIME                     = 0x8024700a\n\tRTC_UIE_OFF                      = 0x20007004\n\tRTC_UIE_ON                       = 0x20007003\n\tRTC_VL_CLR                       = 0x20007014\n\tRTC_VL_READ                      = 0x40047013\n\tRTC_WIE_OFF                      = 0x20007010\n\tRTC_WIE_ON                       = 0x2000700f\n\tRTC_WKALM_RD                     = 0x40287010\n\tRTC_WKALM_SET                    = 0x8028700f\n\tSCM_DEVMEM_DMABUF                = 0x4f\n\tSCM_DEVMEM_LINEAR                = 0x4e\n\tSCM_TIMESTAMPING                 = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS       = 0x36\n\tSCM_TIMESTAMPING_PKTINFO         = 0x3a\n\tSCM_TIMESTAMPNS                  = 0x23\n\tSCM_TS_OPT_ID                    = 0x51\n\tSCM_TXTIME                       = 0x3d\n\tSCM_WIFI_STATUS                  = 0x29\n\tSECCOMP_IOCTL_NOTIF_ADDFD        = 0x80182103\n\tSECCOMP_IOCTL_NOTIF_ID_VALID     = 0x80082102\n\tSECCOMP_IOCTL_NOTIF_SET_FLAGS    = 0x80082104\n\tSFD_CLOEXEC                      = 0x80000\n\tSFD_NONBLOCK                     = 0x80\n\tSIOCATMARK                       = 0x40047307\n\tSIOCGPGRP                        = 0x40047309\n\tSIOCGSTAMPNS_NEW                 = 0x40108907\n\tSIOCGSTAMP_NEW                   = 0x40108906\n\tSIOCINQ                          = 0x467f\n\tSIOCOUTQ                         = 0x7472\n\tSIOCSPGRP                        = 0x80047308\n\tSOCK_CLOEXEC                     = 0x80000\n\tSOCK_DGRAM                       = 0x1\n\tSOCK_NONBLOCK                    = 0x80\n\tSOCK_STREAM                      = 0x2\n\tSOL_SOCKET                       = 0xffff\n\tSO_ACCEPTCONN                    = 0x1009\n\tSO_ATTACH_BPF                    = 0x32\n\tSO_ATTACH_REUSEPORT_CBPF         = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF         = 0x34\n\tSO_BINDTODEVICE                  = 0x19\n\tSO_BINDTOIFINDEX                 = 0x3e\n\tSO_BPF_EXTENSIONS                = 0x30\n\tSO_BROADCAST                     = 0x20\n\tSO_BSDCOMPAT                     = 0xe\n\tSO_BUF_LOCK                      = 0x48\n\tSO_BUSY_POLL                     = 0x2e\n\tSO_BUSY_POLL_BUDGET              = 0x46\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\n\tSO_DEVMEM_DMABUF                 = 0x4f\n\tSO_DEVMEM_DONTNEED               = 0x50\n\tSO_DEVMEM_LINEAR                 = 0x4e\n\tSO_DOMAIN                        = 0x1029\n\tSO_DONTROUTE                     = 0x10\n\tSO_ERROR                         = 0x1007\n\tSO_INCOMING_CPU                  = 0x31\n\tSO_INCOMING_NAPI_ID              = 0x38\n\tSO_KEEPALIVE                     = 0x8\n\tSO_LINGER                        = 0x80\n\tSO_LOCK_FILTER                   = 0x2c\n\tSO_MARK                          = 0x24\n\tSO_MAX_PACING_RATE               = 0x2f\n\tSO_MEMINFO                       = 0x37\n\tSO_NETNS_COOKIE                  = 0x47\n\tSO_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0x100\n\tSO_PASSCRED                      = 0x11\n\tSO_PASSPIDFD                     = 0x4c\n\tSO_PASSRIGHTS                    = 0x53\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x12\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERPIDFD                     = 0x4d\n\tSO_PEERSEC                       = 0x1e\n\tSO_PREFER_BUSY_POLL              = 0x45\n\tSO_PROTOCOL                      = 0x1028\n\tSO_RCVBUF                        = 0x1002\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x1004\n\tSO_RCVMARK                       = 0x4b\n\tSO_RCVPRIORITY                   = 0x52\n\tSO_RCVTIMEO                      = 0x1006\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x1006\n\tSO_RESERVE_MEM                   = 0x49\n\tSO_REUSEADDR                     = 0x4\n\tSO_REUSEPORT                     = 0x200\n\tSO_RXQ_OVFL                      = 0x28\n\tSO_SECURITY_AUTHENTICATION       = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK   = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT = 0x17\n\tSO_SELECT_ERR_QUEUE              = 0x2d\n\tSO_SNDBUF                        = 0x1001\n\tSO_SNDBUFFORCE                   = 0x1f\n\tSO_SNDLOWAT                      = 0x1003\n\tSO_SNDTIMEO                      = 0x1005\n\tSO_SNDTIMEO_NEW                  = 0x43\n\tSO_SNDTIMEO_OLD                  = 0x1005\n\tSO_STYLE                         = 0x1008\n\tSO_TIMESTAMPING                  = 0x25\n\tSO_TIMESTAMPING_NEW              = 0x41\n\tSO_TIMESTAMPING_OLD              = 0x25\n\tSO_TIMESTAMPNS                   = 0x23\n\tSO_TIMESTAMPNS_NEW               = 0x40\n\tSO_TIMESTAMPNS_OLD               = 0x23\n\tSO_TIMESTAMP_NEW                 = 0x3f\n\tSO_TXREHASH                      = 0x4a\n\tSO_TXTIME                        = 0x3d\n\tSO_TYPE                          = 0x1008\n\tSO_WIFI_STATUS                   = 0x29\n\tSO_ZEROCOPY                      = 0x3c\n\tTAB1                             = 0x800\n\tTAB2                             = 0x1000\n\tTAB3                             = 0x1800\n\tTABDLY                           = 0x1800\n\tTCFLSH                           = 0x5407\n\tTCGETA                           = 0x5401\n\tTCGETS                           = 0x540d\n\tTCGETS2                          = 0x4030542a\n\tTCSAFLUSH                        = 0x5410\n\tTCSBRK                           = 0x5405\n\tTCSBRKP                          = 0x5486\n\tTCSETA                           = 0x5402\n\tTCSETAF                          = 0x5404\n\tTCSETAW                          = 0x5403\n\tTCSETS                           = 0x540e\n\tTCSETS2                          = 0x8030542b\n\tTCSETSF                          = 0x5410\n\tTCSETSF2                         = 0x8030542d\n\tTCSETSW                          = 0x540f\n\tTCSETSW2                         = 0x8030542c\n\tTCXONC                           = 0x5406\n\tTFD_CLOEXEC                      = 0x80000\n\tTFD_NONBLOCK                     = 0x80\n\tTIOCCBRK                         = 0x5428\n\tTIOCCONS                         = 0x80047478\n\tTIOCEXCL                         = 0x740d\n\tTIOCGDEV                         = 0x40045432\n\tTIOCGETD                         = 0x7400\n\tTIOCGETP                         = 0x7408\n\tTIOCGEXCL                        = 0x40045440\n\tTIOCGICOUNT                      = 0x5492\n\tTIOCGISO7816                     = 0x40285442\n\tTIOCGLCKTRMIOS                   = 0x548b\n\tTIOCGLTC                         = 0x7474\n\tTIOCGPGRP                        = 0x40047477\n\tTIOCGPKT                         = 0x40045438\n\tTIOCGPTLCK                       = 0x40045439\n\tTIOCGPTN                         = 0x40045430\n\tTIOCGPTPEER                      = 0x20005441\n\tTIOCGRS485                       = 0x4020542e\n\tTIOCGSERIAL                      = 0x5484\n\tTIOCGSID                         = 0x7416\n\tTIOCGSOFTCAR                     = 0x5481\n\tTIOCGWINSZ                       = 0x40087468\n\tTIOCINQ                          = 0x467f\n\tTIOCLINUX                        = 0x5483\n\tTIOCMBIC                         = 0x741c\n\tTIOCMBIS                         = 0x741b\n\tTIOCMGET                         = 0x741d\n\tTIOCMIWAIT                       = 0x5491\n\tTIOCMSET                         = 0x741a\n\tTIOCM_CAR                        = 0x100\n\tTIOCM_CD                         = 0x100\n\tTIOCM_CTS                        = 0x40\n\tTIOCM_DSR                        = 0x400\n\tTIOCM_RI                         = 0x200\n\tTIOCM_RNG                        = 0x200\n\tTIOCM_SR                         = 0x20\n\tTIOCM_ST                         = 0x10\n\tTIOCNOTTY                        = 0x5471\n\tTIOCNXCL                         = 0x740e\n\tTIOCOUTQ                         = 0x7472\n\tTIOCPKT                          = 0x5470\n\tTIOCSBRK                         = 0x5427\n\tTIOCSCTTY                        = 0x5480\n\tTIOCSERCONFIG                    = 0x5488\n\tTIOCSERGETLSR                    = 0x548e\n\tTIOCSERGETMULTI                  = 0x548f\n\tTIOCSERGSTRUCT                   = 0x548d\n\tTIOCSERGWILD                     = 0x5489\n\tTIOCSERSETMULTI                  = 0x5490\n\tTIOCSERSWILD                     = 0x548a\n\tTIOCSER_TEMT                     = 0x1\n\tTIOCSETD                         = 0x7401\n\tTIOCSETN                         = 0x740a\n\tTIOCSETP                         = 0x7409\n\tTIOCSIG                          = 0x80045436\n\tTIOCSISO7816                     = 0xc0285443\n\tTIOCSLCKTRMIOS                   = 0x548c\n\tTIOCSLTC                         = 0x7475\n\tTIOCSPGRP                        = 0x80047476\n\tTIOCSPTLCK                       = 0x80045431\n\tTIOCSRS485                       = 0xc020542f\n\tTIOCSSERIAL                      = 0x5485\n\tTIOCSSOFTCAR                     = 0x5482\n\tTIOCSTI                          = 0x5472\n\tTIOCSWINSZ                       = 0x80087467\n\tTIOCVHANGUP                      = 0x5437\n\tTOSTOP                           = 0x8000\n\tTUNATTACHFILTER                  = 0x801054d5\n\tTUNDETACHFILTER                  = 0x801054d6\n\tTUNGETDEVNETNS                   = 0x200054e3\n\tTUNGETFEATURES                   = 0x400454cf\n\tTUNGETFILTER                     = 0x401054db\n\tTUNGETIFF                        = 0x400454d2\n\tTUNGETSNDBUF                     = 0x400454d3\n\tTUNGETVNETBE                     = 0x400454df\n\tTUNGETVNETHDRSZ                  = 0x400454d7\n\tTUNGETVNETLE                     = 0x400454dd\n\tTUNSETCARRIER                    = 0x800454e2\n\tTUNSETDEBUG                      = 0x800454c9\n\tTUNSETFILTEREBPF                 = 0x400454e1\n\tTUNSETGROUP                      = 0x800454ce\n\tTUNSETIFF                        = 0x800454ca\n\tTUNSETIFINDEX                    = 0x800454da\n\tTUNSETLINK                       = 0x800454cd\n\tTUNSETNOCSUM                     = 0x800454c8\n\tTUNSETOFFLOAD                    = 0x800454d0\n\tTUNSETOWNER                      = 0x800454cc\n\tTUNSETPERSIST                    = 0x800454cb\n\tTUNSETQUEUE                      = 0x800454d9\n\tTUNSETSNDBUF                     = 0x800454d4\n\tTUNSETSTEERINGEBPF               = 0x400454e0\n\tTUNSETTXFILTER                   = 0x800454d1\n\tTUNSETVNETBE                     = 0x800454de\n\tTUNSETVNETHDRSZ                  = 0x800454d8\n\tTUNSETVNETLE                     = 0x800454dc\n\tUBI_IOCATT                       = 0x80186f40\n\tUBI_IOCDET                       = 0x80046f41\n\tUBI_IOCEBCH                      = 0x80044f02\n\tUBI_IOCEBER                      = 0x80044f01\n\tUBI_IOCEBISMAP                   = 0x40044f05\n\tUBI_IOCEBMAP                     = 0x80084f03\n\tUBI_IOCEBUNMAP                   = 0x80044f04\n\tUBI_IOCMKVOL                     = 0x80986f00\n\tUBI_IOCRMVOL                     = 0x80046f01\n\tUBI_IOCRNVOL                     = 0x91106f03\n\tUBI_IOCRPEB                      = 0x80046f04\n\tUBI_IOCRSVOL                     = 0x800c6f02\n\tUBI_IOCSETVOLPROP                = 0x80104f06\n\tUBI_IOCSPEB                      = 0x80046f05\n\tUBI_IOCVOLCRBLK                  = 0x80804f07\n\tUBI_IOCVOLRMBLK                  = 0x20004f08\n\tUBI_IOCVOLUP                     = 0x80084f00\n\tVDISCARD                         = 0xd\n\tVEOF                             = 0x10\n\tVEOL                             = 0x11\n\tVEOL2                            = 0x6\n\tVMIN                             = 0x4\n\tVREPRINT                         = 0xc\n\tVSTART                           = 0x8\n\tVSTOP                            = 0x9\n\tVSUSP                            = 0xa\n\tVSWTC                            = 0x7\n\tVSWTCH                           = 0x7\n\tVT1                              = 0x4000\n\tVTDLY                            = 0x4000\n\tVTIME                            = 0x5\n\tVWERASE                          = 0xe\n\tWDIOC_GETBOOTSTATUS              = 0x40045702\n\tWDIOC_GETPRETIMEOUT              = 0x40045709\n\tWDIOC_GETSTATUS                  = 0x40045701\n\tWDIOC_GETSUPPORT                 = 0x40285700\n\tWDIOC_GETTEMP                    = 0x40045703\n\tWDIOC_GETTIMELEFT                = 0x4004570a\n\tWDIOC_GETTIMEOUT                 = 0x40045707\n\tWDIOC_KEEPALIVE                  = 0x40045705\n\tWDIOC_SETOPTIONS                 = 0x40045704\n\tWORDSIZE                         = 0x40\n\tXCASE                            = 0x4\n\tXTABS                            = 0x1800\n\t_HIDIOCGRAWNAME                  = 0x40804804\n\t_HIDIOCGRAWPHYS                  = 0x40404805\n\t_HIDIOCGRAWUNIQ                  = 0x40404808\n)\n\n// Errors\nconst (\n\tEADDRINUSE      = syscall.Errno(0x7d)\n\tEADDRNOTAVAIL   = syscall.Errno(0x7e)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x7c)\n\tEALREADY        = syscall.Errno(0x95)\n\tEBADE           = syscall.Errno(0x32)\n\tEBADFD          = syscall.Errno(0x51)\n\tEBADMSG         = syscall.Errno(0x4d)\n\tEBADR           = syscall.Errno(0x33)\n\tEBADRQC         = syscall.Errno(0x36)\n\tEBADSLT         = syscall.Errno(0x37)\n\tEBFONT          = syscall.Errno(0x3b)\n\tECANCELED       = syscall.Errno(0x9e)\n\tECHRNG          = syscall.Errno(0x25)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x82)\n\tECONNREFUSED    = syscall.Errno(0x92)\n\tECONNRESET      = syscall.Errno(0x83)\n\tEDEADLK         = syscall.Errno(0x2d)\n\tEDEADLOCK       = syscall.Errno(0x38)\n\tEDESTADDRREQ    = syscall.Errno(0x60)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x46d)\n\tEHOSTDOWN       = syscall.Errno(0x93)\n\tEHOSTUNREACH    = syscall.Errno(0x94)\n\tEHWPOISON       = syscall.Errno(0xa8)\n\tEIDRM           = syscall.Errno(0x24)\n\tEILSEQ          = syscall.Errno(0x58)\n\tEINIT           = syscall.Errno(0x8d)\n\tEINPROGRESS     = syscall.Errno(0x96)\n\tEISCONN         = syscall.Errno(0x85)\n\tEISNAM          = syscall.Errno(0x8b)\n\tEKEYEXPIRED     = syscall.Errno(0xa2)\n\tEKEYREJECTED    = syscall.Errno(0xa4)\n\tEKEYREVOKED     = syscall.Errno(0xa3)\n\tEL2HLT          = syscall.Errno(0x2c)\n\tEL2NSYNC        = syscall.Errno(0x26)\n\tEL3HLT          = syscall.Errno(0x27)\n\tEL3RST          = syscall.Errno(0x28)\n\tELIBACC         = syscall.Errno(0x53)\n\tELIBBAD         = syscall.Errno(0x54)\n\tELIBEXEC        = syscall.Errno(0x57)\n\tELIBMAX         = syscall.Errno(0x56)\n\tELIBSCN         = syscall.Errno(0x55)\n\tELNRNG          = syscall.Errno(0x29)\n\tELOOP           = syscall.Errno(0x5a)\n\tEMEDIUMTYPE     = syscall.Errno(0xa0)\n\tEMSGSIZE        = syscall.Errno(0x61)\n\tEMULTIHOP       = syscall.Errno(0x4a)\n\tENAMETOOLONG    = syscall.Errno(0x4e)\n\tENAVAIL         = syscall.Errno(0x8a)\n\tENETDOWN        = syscall.Errno(0x7f)\n\tENETRESET       = syscall.Errno(0x81)\n\tENETUNREACH     = syscall.Errno(0x80)\n\tENOANO          = syscall.Errno(0x35)\n\tENOBUFS         = syscall.Errno(0x84)\n\tENOCSI          = syscall.Errno(0x2b)\n\tENODATA         = syscall.Errno(0x3d)\n\tENOKEY          = syscall.Errno(0xa1)\n\tENOLCK          = syscall.Errno(0x2e)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x9f)\n\tENOMSG          = syscall.Errno(0x23)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x63)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x59)\n\tENOTCONN        = syscall.Errno(0x86)\n\tENOTEMPTY       = syscall.Errno(0x5d)\n\tENOTNAM         = syscall.Errno(0x89)\n\tENOTRECOVERABLE = syscall.Errno(0xa6)\n\tENOTSOCK        = syscall.Errno(0x5f)\n\tENOTSUP         = syscall.Errno(0x7a)\n\tENOTUNIQ        = syscall.Errno(0x50)\n\tEOPNOTSUPP      = syscall.Errno(0x7a)\n\tEOVERFLOW       = syscall.Errno(0x4f)\n\tEOWNERDEAD      = syscall.Errno(0xa5)\n\tEPFNOSUPPORT    = syscall.Errno(0x7b)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x78)\n\tEPROTOTYPE      = syscall.Errno(0x62)\n\tEREMCHG         = syscall.Errno(0x52)\n\tEREMDEV         = syscall.Errno(0x8e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x8c)\n\tERESTART        = syscall.Errno(0x5b)\n\tERFKILL         = syscall.Errno(0xa7)\n\tESHUTDOWN       = syscall.Errno(0x8f)\n\tESOCKTNOSUPPORT = syscall.Errno(0x79)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x97)\n\tESTRPIPE        = syscall.Errno(0x5c)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x91)\n\tETOOMANYREFS    = syscall.Errno(0x90)\n\tEUCLEAN         = syscall.Errno(0x87)\n\tEUNATCH         = syscall.Errno(0x2a)\n\tEUSERS          = syscall.Errno(0x5e)\n\tEXFULL          = syscall.Errno(0x34)\n)\n\n// Signals\nconst (\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x12)\n\tSIGCLD    = syscall.Signal(0x12)\n\tSIGCONT   = syscall.Signal(0x19)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGIO     = syscall.Signal(0x16)\n\tSIGPOLL   = syscall.Signal(0x16)\n\tSIGPROF   = syscall.Signal(0x1d)\n\tSIGPWR    = syscall.Signal(0x13)\n\tSIGSTOP   = syscall.Signal(0x17)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTSTP   = syscall.Signal(0x18)\n\tSIGTTIN   = syscall.Signal(0x1a)\n\tSIGTTOU   = syscall.Signal(0x1b)\n\tSIGURG    = syscall.Signal(0x15)\n\tSIGUSR1   = syscall.Signal(0x10)\n\tSIGUSR2   = syscall.Signal(0x11)\n\tSIGVTALRM = syscall.Signal(0x1c)\n\tSIGWINCH  = syscall.Signal(0x14)\n\tSIGXCPU   = syscall.Signal(0x1e)\n\tSIGXFSZ   = syscall.Signal(0x1f)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"ENOMSG\", \"no message of desired type\"},\n\t{36, \"EIDRM\", \"identifier removed\"},\n\t{37, \"ECHRNG\", \"channel number out of range\"},\n\t{38, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{39, \"EL3HLT\", \"level 3 halted\"},\n\t{40, \"EL3RST\", \"level 3 reset\"},\n\t{41, \"ELNRNG\", \"link number out of range\"},\n\t{42, \"EUNATCH\", \"protocol driver not attached\"},\n\t{43, \"ENOCSI\", \"no CSI structure available\"},\n\t{44, \"EL2HLT\", \"level 2 halted\"},\n\t{45, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{46, \"ENOLCK\", \"no locks available\"},\n\t{50, \"EBADE\", \"invalid exchange\"},\n\t{51, \"EBADR\", \"invalid request descriptor\"},\n\t{52, \"EXFULL\", \"exchange full\"},\n\t{53, \"ENOANO\", \"no anode\"},\n\t{54, \"EBADRQC\", \"invalid request code\"},\n\t{55, \"EBADSLT\", \"invalid slot\"},\n\t{56, \"EDEADLOCK\", \"file locking deadlock error\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EMULTIHOP\", \"multihop attempted\"},\n\t{77, \"EBADMSG\", \"bad message\"},\n\t{78, \"ENAMETOOLONG\", \"file name too long\"},\n\t{79, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{80, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{81, \"EBADFD\", \"file descriptor in bad state\"},\n\t{82, \"EREMCHG\", \"remote address changed\"},\n\t{83, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{84, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{85, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{86, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{87, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{88, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{89, \"ENOSYS\", \"function not implemented\"},\n\t{90, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{91, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{92, \"ESTRPIPE\", \"streams pipe error\"},\n\t{93, \"ENOTEMPTY\", \"directory not empty\"},\n\t{94, \"EUSERS\", \"too many users\"},\n\t{95, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{96, \"EDESTADDRREQ\", \"destination address required\"},\n\t{97, \"EMSGSIZE\", \"message too long\"},\n\t{98, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{99, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{120, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{121, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{122, \"ENOTSUP\", \"operation not supported\"},\n\t{123, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{124, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{125, \"EADDRINUSE\", \"address already in use\"},\n\t{126, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{127, \"ENETDOWN\", \"network is down\"},\n\t{128, \"ENETUNREACH\", \"network is unreachable\"},\n\t{129, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{130, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{131, \"ECONNRESET\", \"connection reset by peer\"},\n\t{132, \"ENOBUFS\", \"no buffer space available\"},\n\t{133, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{134, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{135, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{137, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{138, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{139, \"EISNAM\", \"is a named type file\"},\n\t{140, \"EREMOTEIO\", \"remote I/O error\"},\n\t{141, \"EINIT\", \"unknown error 141\"},\n\t{142, \"EREMDEV\", \"unknown error 142\"},\n\t{143, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{144, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{145, \"ETIMEDOUT\", \"connection timed out\"},\n\t{146, \"ECONNREFUSED\", \"connection refused\"},\n\t{147, \"EHOSTDOWN\", \"host is down\"},\n\t{148, \"EHOSTUNREACH\", \"no route to host\"},\n\t{149, \"EALREADY\", \"operation already in progress\"},\n\t{150, \"EINPROGRESS\", \"operation now in progress\"},\n\t{151, \"ESTALE\", \"stale file handle\"},\n\t{158, \"ECANCELED\", \"operation canceled\"},\n\t{159, \"ENOMEDIUM\", \"no medium found\"},\n\t{160, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{161, \"ENOKEY\", \"required key not available\"},\n\t{162, \"EKEYEXPIRED\", \"key has expired\"},\n\t{163, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{164, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{165, \"EOWNERDEAD\", \"owner died\"},\n\t{166, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{167, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{168, \"EHWPOISON\", \"memory page has hardware error\"},\n\t{1133, \"EDQUOT\", \"disk quota exceeded\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGUSR1\", \"user defined signal 1\"},\n\t{17, \"SIGUSR2\", \"user defined signal 2\"},\n\t{18, \"SIGCHLD\", \"child exited\"},\n\t{19, \"SIGPWR\", \"power failure\"},\n\t{20, \"SIGWINCH\", \"window changed\"},\n\t{21, \"SIGURG\", \"urgent I/O condition\"},\n\t{22, \"SIGIO\", \"I/O possible\"},\n\t{23, \"SIGSTOP\", \"stopped (signal)\"},\n\t{24, \"SIGTSTP\", \"stopped\"},\n\t{25, \"SIGCONT\", \"continued\"},\n\t{26, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{27, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{28, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{29, \"SIGPROF\", \"profiling timer expired\"},\n\t{30, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{31, \"SIGXFSZ\", \"file size limit exceeded\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/mipsle/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mipsle && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/mipsle/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x1008\n\tB115200                          = 0x1002\n\tB1152000                         = 0x1009\n\tB1500000                         = 0x100a\n\tB2000000                         = 0x100b\n\tB230400                          = 0x1003\n\tB2500000                         = 0x100c\n\tB3000000                         = 0x100d\n\tB3500000                         = 0x100e\n\tB4000000                         = 0x100f\n\tB460800                          = 0x1004\n\tB500000                          = 0x1005\n\tB57600                           = 0x1001\n\tB576000                          = 0x1006\n\tB921600                          = 0x1007\n\tBLKALIGNOFF                      = 0x2000127a\n\tBLKBSZGET                        = 0x40041270\n\tBLKBSZSET                        = 0x80041271\n\tBLKDISCARD                       = 0x20001277\n\tBLKDISCARDZEROES                 = 0x2000127c\n\tBLKFLSBUF                        = 0x20001261\n\tBLKFRAGET                        = 0x20001265\n\tBLKFRASET                        = 0x20001264\n\tBLKGETDISKSEQ                    = 0x40081280\n\tBLKGETSIZE                       = 0x20001260\n\tBLKGETSIZE64                     = 0x40041272\n\tBLKIOMIN                         = 0x20001278\n\tBLKIOOPT                         = 0x20001279\n\tBLKPBSZGET                       = 0x2000127b\n\tBLKRAGET                         = 0x20001263\n\tBLKRASET                         = 0x20001262\n\tBLKROGET                         = 0x2000125e\n\tBLKROSET                         = 0x2000125d\n\tBLKROTATIONAL                    = 0x2000127e\n\tBLKRRPART                        = 0x2000125f\n\tBLKSECDISCARD                    = 0x2000127d\n\tBLKSECTGET                       = 0x20001267\n\tBLKSECTSET                       = 0x20001266\n\tBLKSSZGET                        = 0x20001268\n\tBLKZEROOUT                       = 0x2000127f\n\tBOTHER                           = 0x1000\n\tBS1                              = 0x2000\n\tBSDLY                            = 0x2000\n\tCBAUD                            = 0x100f\n\tCBAUDEX                          = 0x1000\n\tCIBAUD                           = 0x100f0000\n\tCLOCAL                           = 0x800\n\tCR1                              = 0x200\n\tCR2                              = 0x400\n\tCR3                              = 0x600\n\tCRDLY                            = 0x600\n\tCREAD                            = 0x80\n\tCS6                              = 0x10\n\tCS7                              = 0x20\n\tCS8                              = 0x30\n\tCSIZE                            = 0x30\n\tCSTOPB                           = 0x40\n\tDM_MPATH_PROBE_PATHS             = 0x2000fd12\n\tECCGETLAYOUT                     = 0x41484d11\n\tECCGETSTATS                      = 0x40104d12\n\tECHOCTL                          = 0x200\n\tECHOE                            = 0x10\n\tECHOK                            = 0x20\n\tECHOKE                           = 0x800\n\tECHONL                           = 0x40\n\tECHOPRT                          = 0x400\n\tEFD_CLOEXEC                      = 0x80000\n\tEFD_NONBLOCK                     = 0x80\n\tEPIOCGPARAMS                     = 0x40088a02\n\tEPIOCSPARAMS                     = 0x80088a01\n\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000\n\tFF1                              = 0x8000\n\tFFDLY                            = 0x8000\n\tFICLONE                          = 0x80049409\n\tFICLONERANGE                     = 0x8020940d\n\tFLUSHO                           = 0x2000\n\tFS_IOC_ENABLE_VERITY             = 0x80806685\n\tFS_IOC_GETFLAGS                  = 0x40046601\n\tFS_IOC_GET_ENCRYPTION_NONCE      = 0x4010661b\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x800c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x80106614\n\tFS_IOC_SETFLAGS                  = 0x80046602\n\tFS_IOC_SET_ENCRYPTION_POLICY     = 0x400c6613\n\tF_GETLK                          = 0x21\n\tF_GETLK64                        = 0x21\n\tF_GETOWN                         = 0x17\n\tF_RDLCK                          = 0x0\n\tF_SETLK                          = 0x22\n\tF_SETLK64                        = 0x22\n\tF_SETLKW                         = 0x23\n\tF_SETLKW64                       = 0x23\n\tF_SETOWN                         = 0x18\n\tF_UNLCK                          = 0x2\n\tF_WRLCK                          = 0x1\n\tHIDIOCGRAWINFO                   = 0x40084803\n\tHIDIOCGRDESC                     = 0x50044802\n\tHIDIOCGRDESCSIZE                 = 0x40044801\n\tHIDIOCREVOKE                     = 0x8004480d\n\tHUPCL                            = 0x400\n\tICANON                           = 0x2\n\tIEXTEN                           = 0x100\n\tIN_CLOEXEC                       = 0x80000\n\tIN_NONBLOCK                      = 0x80\n\tIOCTL_MEI_NOTIFY_GET             = 0x40044803\n\tIOCTL_MEI_NOTIFY_SET             = 0x80044802\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x200007b9\n\tIPV6_FLOWINFO_MASK               = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK              = 0xffff0f00\n\tISIG                             = 0x1\n\tIUCLC                            = 0x200\n\tIXOFF                            = 0x1000\n\tIXON                             = 0x400\n\tMAP_ANON                         = 0x800\n\tMAP_ANONYMOUS                    = 0x800\n\tMAP_DENYWRITE                    = 0x2000\n\tMAP_EXECUTABLE                   = 0x4000\n\tMAP_GROWSDOWN                    = 0x1000\n\tMAP_HUGETLB                      = 0x80000\n\tMAP_LOCKED                       = 0x8000\n\tMAP_NONBLOCK                     = 0x20000\n\tMAP_NORESERVE                    = 0x400\n\tMAP_POPULATE                     = 0x10000\n\tMAP_RENAME                       = 0x800\n\tMAP_STACK                        = 0x40000\n\tMCL_CURRENT                      = 0x1\n\tMCL_FUTURE                       = 0x2\n\tMCL_ONFAULT                      = 0x4\n\tMEMERASE                         = 0x80084d02\n\tMEMERASE64                       = 0x80104d14\n\tMEMGETBADBLOCK                   = 0x80084d0b\n\tMEMGETINFO                       = 0x40204d01\n\tMEMGETOOBSEL                     = 0x40c84d0a\n\tMEMGETREGIONCOUNT                = 0x40044d07\n\tMEMISLOCKED                      = 0x40084d17\n\tMEMLOCK                          = 0x80084d05\n\tMEMREAD                          = 0xc0404d1a\n\tMEMREADOOB                       = 0xc00c4d04\n\tMEMSETBADBLOCK                   = 0x80084d0c\n\tMEMUNLOCK                        = 0x80084d06\n\tMEMWRITEOOB                      = 0xc00c4d03\n\tMTDFILEMODE                      = 0x20004d13\n\tNFDBITS                          = 0x20\n\tNLDLY                            = 0x100\n\tNOFLSH                           = 0x80\n\tNS_GET_MNTNS_ID                  = 0x4008b705\n\tNS_GET_NSTYPE                    = 0x2000b703\n\tNS_GET_OWNER_UID                 = 0x2000b704\n\tNS_GET_PARENT                    = 0x2000b702\n\tNS_GET_PID_FROM_PIDNS            = 0x4004b706\n\tNS_GET_PID_IN_PIDNS              = 0x4004b708\n\tNS_GET_TGID_FROM_PIDNS           = 0x4004b707\n\tNS_GET_TGID_IN_PIDNS             = 0x4004b709\n\tNS_GET_USERNS                    = 0x2000b701\n\tOLCUC                            = 0x2\n\tONLCR                            = 0x4\n\tOTPERASE                         = 0x800c4d19\n\tOTPGETREGIONCOUNT                = 0x80044d0e\n\tOTPGETREGIONINFO                 = 0x800c4d0f\n\tOTPLOCK                          = 0x400c4d10\n\tOTPSELECT                        = 0x40044d0d\n\tO_APPEND                         = 0x8\n\tO_ASYNC                          = 0x1000\n\tO_CLOEXEC                        = 0x80000\n\tO_CREAT                          = 0x100\n\tO_DIRECT                         = 0x8000\n\tO_DIRECTORY                      = 0x10000\n\tO_DSYNC                          = 0x10\n\tO_EXCL                           = 0x400\n\tO_FSYNC                          = 0x4010\n\tO_LARGEFILE                      = 0x2000\n\tO_NDELAY                         = 0x80\n\tO_NOATIME                        = 0x40000\n\tO_NOCTTY                         = 0x800\n\tO_NOFOLLOW                       = 0x20000\n\tO_NONBLOCK                       = 0x80\n\tO_PATH                           = 0x200000\n\tO_RSYNC                          = 0x4010\n\tO_SYNC                           = 0x4010\n\tO_TMPFILE                        = 0x410000\n\tO_TRUNC                          = 0x200\n\tPARENB                           = 0x100\n\tPARODD                           = 0x200\n\tPENDIN                           = 0x4000\n\tPERF_EVENT_IOC_DISABLE           = 0x20002401\n\tPERF_EVENT_IOC_ENABLE            = 0x20002400\n\tPERF_EVENT_IOC_ID                = 0x40042407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8004240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT      = 0x80042409\n\tPERF_EVENT_IOC_PERIOD            = 0x80082404\n\tPERF_EVENT_IOC_QUERY_BPF         = 0xc004240a\n\tPERF_EVENT_IOC_REFRESH           = 0x20002402\n\tPERF_EVENT_IOC_RESET             = 0x20002403\n\tPERF_EVENT_IOC_SET_BPF           = 0x80042408\n\tPERF_EVENT_IOC_SET_FILTER        = 0x80042406\n\tPERF_EVENT_IOC_SET_OUTPUT        = 0x20002405\n\tPPPIOCATTACH                     = 0x8004743d\n\tPPPIOCATTCHAN                    = 0x80047438\n\tPPPIOCBRIDGECHAN                 = 0x80047435\n\tPPPIOCCONNECT                    = 0x8004743a\n\tPPPIOCDETACH                     = 0x8004743c\n\tPPPIOCDISCONN                    = 0x20007439\n\tPPPIOCGASYNCMAP                  = 0x40047458\n\tPPPIOCGCHAN                      = 0x40047437\n\tPPPIOCGDEBUG                     = 0x40047441\n\tPPPIOCGFLAGS                     = 0x4004745a\n\tPPPIOCGIDLE                      = 0x4008743f\n\tPPPIOCGIDLE32                    = 0x4008743f\n\tPPPIOCGIDLE64                    = 0x4010743f\n\tPPPIOCGL2TPSTATS                 = 0x40487436\n\tPPPIOCGMRU                       = 0x40047453\n\tPPPIOCGRASYNCMAP                 = 0x40047455\n\tPPPIOCGUNIT                      = 0x40047456\n\tPPPIOCGXASYNCMAP                 = 0x40207450\n\tPPPIOCSACTIVE                    = 0x80087446\n\tPPPIOCSASYNCMAP                  = 0x80047457\n\tPPPIOCSCOMPRESS                  = 0x800c744d\n\tPPPIOCSDEBUG                     = 0x80047440\n\tPPPIOCSFLAGS                     = 0x80047459\n\tPPPIOCSMAXCID                    = 0x80047451\n\tPPPIOCSMRRU                      = 0x8004743b\n\tPPPIOCSMRU                       = 0x80047452\n\tPPPIOCSNPMODE                    = 0x8008744b\n\tPPPIOCSPASS                      = 0x80087447\n\tPPPIOCSRASYNCMAP                 = 0x80047454\n\tPPPIOCSXASYNCMAP                 = 0x8020744f\n\tPPPIOCUNBRIDGECHAN               = 0x20007434\n\tPPPIOCXFERUNIT                   = 0x2000744e\n\tPR_SET_PTRACER_ANY               = 0xffffffff\n\tPTP_CLOCK_GETCAPS                = 0x40503d01\n\tPTP_CLOCK_GETCAPS2               = 0x40503d0a\n\tPTP_ENABLE_PPS                   = 0x80043d04\n\tPTP_ENABLE_PPS2                  = 0x80043d0d\n\tPTP_EXTTS_REQUEST                = 0x80103d02\n\tPTP_EXTTS_REQUEST2               = 0x80103d0b\n\tPTP_MASK_CLEAR_ALL               = 0x20003d13\n\tPTP_MASK_EN_SINGLE               = 0x80043d14\n\tPTP_PEROUT_REQUEST               = 0x80383d03\n\tPTP_PEROUT_REQUEST2              = 0x80383d0c\n\tPTP_PIN_SETFUNC                  = 0x80603d07\n\tPTP_PIN_SETFUNC2                 = 0x80603d10\n\tPTP_SYS_OFFSET                   = 0x83403d05\n\tPTP_SYS_OFFSET2                  = 0x83403d0e\n\tPTRACE_GETFPREGS                 = 0xe\n\tPTRACE_GET_THREAD_AREA           = 0x19\n\tPTRACE_GET_THREAD_AREA_3264      = 0xc4\n\tPTRACE_GET_WATCH_REGS            = 0xd0\n\tPTRACE_OLDSETOPTIONS             = 0x15\n\tPTRACE_PEEKDATA_3264             = 0xc1\n\tPTRACE_PEEKTEXT_3264             = 0xc0\n\tPTRACE_POKEDATA_3264             = 0xc3\n\tPTRACE_POKETEXT_3264             = 0xc2\n\tPTRACE_SETFPREGS                 = 0xf\n\tPTRACE_SET_THREAD_AREA           = 0x1a\n\tPTRACE_SET_WATCH_REGS            = 0xd1\n\tRLIMIT_AS                        = 0x6\n\tRLIMIT_MEMLOCK                   = 0x9\n\tRLIMIT_NOFILE                    = 0x5\n\tRLIMIT_NPROC                     = 0x8\n\tRLIMIT_RSS                       = 0x7\n\tRNDADDENTROPY                    = 0x80085203\n\tRNDADDTOENTCNT                   = 0x80045201\n\tRNDCLEARPOOL                     = 0x20005206\n\tRNDGETENTCNT                     = 0x40045200\n\tRNDGETPOOL                       = 0x40085202\n\tRNDRESEEDCRNG                    = 0x20005207\n\tRNDZAPENTCNT                     = 0x20005204\n\tRTC_AIE_OFF                      = 0x20007002\n\tRTC_AIE_ON                       = 0x20007001\n\tRTC_ALM_READ                     = 0x40247008\n\tRTC_ALM_SET                      = 0x80247007\n\tRTC_EPOCH_READ                   = 0x4004700d\n\tRTC_EPOCH_SET                    = 0x8004700e\n\tRTC_IRQP_READ                    = 0x4004700b\n\tRTC_IRQP_SET                     = 0x8004700c\n\tRTC_PARAM_GET                    = 0x80187013\n\tRTC_PARAM_SET                    = 0x80187014\n\tRTC_PIE_OFF                      = 0x20007006\n\tRTC_PIE_ON                       = 0x20007005\n\tRTC_PLL_GET                      = 0x401c7011\n\tRTC_PLL_SET                      = 0x801c7012\n\tRTC_RD_TIME                      = 0x40247009\n\tRTC_SET_TIME                     = 0x8024700a\n\tRTC_UIE_OFF                      = 0x20007004\n\tRTC_UIE_ON                       = 0x20007003\n\tRTC_VL_CLR                       = 0x20007014\n\tRTC_VL_READ                      = 0x40047013\n\tRTC_WIE_OFF                      = 0x20007010\n\tRTC_WIE_ON                       = 0x2000700f\n\tRTC_WKALM_RD                     = 0x40287010\n\tRTC_WKALM_SET                    = 0x8028700f\n\tSCM_DEVMEM_DMABUF                = 0x4f\n\tSCM_DEVMEM_LINEAR                = 0x4e\n\tSCM_TIMESTAMPING                 = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS       = 0x36\n\tSCM_TIMESTAMPING_PKTINFO         = 0x3a\n\tSCM_TIMESTAMPNS                  = 0x23\n\tSCM_TS_OPT_ID                    = 0x51\n\tSCM_TXTIME                       = 0x3d\n\tSCM_WIFI_STATUS                  = 0x29\n\tSECCOMP_IOCTL_NOTIF_ADDFD        = 0x80182103\n\tSECCOMP_IOCTL_NOTIF_ID_VALID     = 0x80082102\n\tSECCOMP_IOCTL_NOTIF_SET_FLAGS    = 0x80082104\n\tSFD_CLOEXEC                      = 0x80000\n\tSFD_NONBLOCK                     = 0x80\n\tSIOCATMARK                       = 0x40047307\n\tSIOCGPGRP                        = 0x40047309\n\tSIOCGSTAMPNS_NEW                 = 0x40108907\n\tSIOCGSTAMP_NEW                   = 0x40108906\n\tSIOCINQ                          = 0x467f\n\tSIOCOUTQ                         = 0x7472\n\tSIOCSPGRP                        = 0x80047308\n\tSOCK_CLOEXEC                     = 0x80000\n\tSOCK_DGRAM                       = 0x1\n\tSOCK_NONBLOCK                    = 0x80\n\tSOCK_STREAM                      = 0x2\n\tSOL_SOCKET                       = 0xffff\n\tSO_ACCEPTCONN                    = 0x1009\n\tSO_ATTACH_BPF                    = 0x32\n\tSO_ATTACH_REUSEPORT_CBPF         = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF         = 0x34\n\tSO_BINDTODEVICE                  = 0x19\n\tSO_BINDTOIFINDEX                 = 0x3e\n\tSO_BPF_EXTENSIONS                = 0x30\n\tSO_BROADCAST                     = 0x20\n\tSO_BSDCOMPAT                     = 0xe\n\tSO_BUF_LOCK                      = 0x48\n\tSO_BUSY_POLL                     = 0x2e\n\tSO_BUSY_POLL_BUDGET              = 0x46\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\n\tSO_DEVMEM_DMABUF                 = 0x4f\n\tSO_DEVMEM_DONTNEED               = 0x50\n\tSO_DEVMEM_LINEAR                 = 0x4e\n\tSO_DOMAIN                        = 0x1029\n\tSO_DONTROUTE                     = 0x10\n\tSO_ERROR                         = 0x1007\n\tSO_INCOMING_CPU                  = 0x31\n\tSO_INCOMING_NAPI_ID              = 0x38\n\tSO_KEEPALIVE                     = 0x8\n\tSO_LINGER                        = 0x80\n\tSO_LOCK_FILTER                   = 0x2c\n\tSO_MARK                          = 0x24\n\tSO_MAX_PACING_RATE               = 0x2f\n\tSO_MEMINFO                       = 0x37\n\tSO_NETNS_COOKIE                  = 0x47\n\tSO_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0x100\n\tSO_PASSCRED                      = 0x11\n\tSO_PASSPIDFD                     = 0x4c\n\tSO_PASSRIGHTS                    = 0x53\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x12\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERPIDFD                     = 0x4d\n\tSO_PEERSEC                       = 0x1e\n\tSO_PREFER_BUSY_POLL              = 0x45\n\tSO_PROTOCOL                      = 0x1028\n\tSO_RCVBUF                        = 0x1002\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x1004\n\tSO_RCVMARK                       = 0x4b\n\tSO_RCVPRIORITY                   = 0x52\n\tSO_RCVTIMEO                      = 0x1006\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x1006\n\tSO_RESERVE_MEM                   = 0x49\n\tSO_REUSEADDR                     = 0x4\n\tSO_REUSEPORT                     = 0x200\n\tSO_RXQ_OVFL                      = 0x28\n\tSO_SECURITY_AUTHENTICATION       = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK   = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT = 0x17\n\tSO_SELECT_ERR_QUEUE              = 0x2d\n\tSO_SNDBUF                        = 0x1001\n\tSO_SNDBUFFORCE                   = 0x1f\n\tSO_SNDLOWAT                      = 0x1003\n\tSO_SNDTIMEO                      = 0x1005\n\tSO_SNDTIMEO_NEW                  = 0x43\n\tSO_SNDTIMEO_OLD                  = 0x1005\n\tSO_STYLE                         = 0x1008\n\tSO_TIMESTAMPING                  = 0x25\n\tSO_TIMESTAMPING_NEW              = 0x41\n\tSO_TIMESTAMPING_OLD              = 0x25\n\tSO_TIMESTAMPNS                   = 0x23\n\tSO_TIMESTAMPNS_NEW               = 0x40\n\tSO_TIMESTAMPNS_OLD               = 0x23\n\tSO_TIMESTAMP_NEW                 = 0x3f\n\tSO_TXREHASH                      = 0x4a\n\tSO_TXTIME                        = 0x3d\n\tSO_TYPE                          = 0x1008\n\tSO_WIFI_STATUS                   = 0x29\n\tSO_ZEROCOPY                      = 0x3c\n\tTAB1                             = 0x800\n\tTAB2                             = 0x1000\n\tTAB3                             = 0x1800\n\tTABDLY                           = 0x1800\n\tTCFLSH                           = 0x5407\n\tTCGETA                           = 0x5401\n\tTCGETS                           = 0x540d\n\tTCGETS2                          = 0x4030542a\n\tTCSAFLUSH                        = 0x5410\n\tTCSBRK                           = 0x5405\n\tTCSBRKP                          = 0x5486\n\tTCSETA                           = 0x5402\n\tTCSETAF                          = 0x5404\n\tTCSETAW                          = 0x5403\n\tTCSETS                           = 0x540e\n\tTCSETS2                          = 0x8030542b\n\tTCSETSF                          = 0x5410\n\tTCSETSF2                         = 0x8030542d\n\tTCSETSW                          = 0x540f\n\tTCSETSW2                         = 0x8030542c\n\tTCXONC                           = 0x5406\n\tTFD_CLOEXEC                      = 0x80000\n\tTFD_NONBLOCK                     = 0x80\n\tTIOCCBRK                         = 0x5428\n\tTIOCCONS                         = 0x80047478\n\tTIOCEXCL                         = 0x740d\n\tTIOCGDEV                         = 0x40045432\n\tTIOCGETD                         = 0x7400\n\tTIOCGETP                         = 0x7408\n\tTIOCGEXCL                        = 0x40045440\n\tTIOCGICOUNT                      = 0x5492\n\tTIOCGISO7816                     = 0x40285442\n\tTIOCGLCKTRMIOS                   = 0x548b\n\tTIOCGLTC                         = 0x7474\n\tTIOCGPGRP                        = 0x40047477\n\tTIOCGPKT                         = 0x40045438\n\tTIOCGPTLCK                       = 0x40045439\n\tTIOCGPTN                         = 0x40045430\n\tTIOCGPTPEER                      = 0x20005441\n\tTIOCGRS485                       = 0x4020542e\n\tTIOCGSERIAL                      = 0x5484\n\tTIOCGSID                         = 0x7416\n\tTIOCGSOFTCAR                     = 0x5481\n\tTIOCGWINSZ                       = 0x40087468\n\tTIOCINQ                          = 0x467f\n\tTIOCLINUX                        = 0x5483\n\tTIOCMBIC                         = 0x741c\n\tTIOCMBIS                         = 0x741b\n\tTIOCMGET                         = 0x741d\n\tTIOCMIWAIT                       = 0x5491\n\tTIOCMSET                         = 0x741a\n\tTIOCM_CAR                        = 0x100\n\tTIOCM_CD                         = 0x100\n\tTIOCM_CTS                        = 0x40\n\tTIOCM_DSR                        = 0x400\n\tTIOCM_RI                         = 0x200\n\tTIOCM_RNG                        = 0x200\n\tTIOCM_SR                         = 0x20\n\tTIOCM_ST                         = 0x10\n\tTIOCNOTTY                        = 0x5471\n\tTIOCNXCL                         = 0x740e\n\tTIOCOUTQ                         = 0x7472\n\tTIOCPKT                          = 0x5470\n\tTIOCSBRK                         = 0x5427\n\tTIOCSCTTY                        = 0x5480\n\tTIOCSERCONFIG                    = 0x5488\n\tTIOCSERGETLSR                    = 0x548e\n\tTIOCSERGETMULTI                  = 0x548f\n\tTIOCSERGSTRUCT                   = 0x548d\n\tTIOCSERGWILD                     = 0x5489\n\tTIOCSERSETMULTI                  = 0x5490\n\tTIOCSERSWILD                     = 0x548a\n\tTIOCSER_TEMT                     = 0x1\n\tTIOCSETD                         = 0x7401\n\tTIOCSETN                         = 0x740a\n\tTIOCSETP                         = 0x7409\n\tTIOCSIG                          = 0x80045436\n\tTIOCSISO7816                     = 0xc0285443\n\tTIOCSLCKTRMIOS                   = 0x548c\n\tTIOCSLTC                         = 0x7475\n\tTIOCSPGRP                        = 0x80047476\n\tTIOCSPTLCK                       = 0x80045431\n\tTIOCSRS485                       = 0xc020542f\n\tTIOCSSERIAL                      = 0x5485\n\tTIOCSSOFTCAR                     = 0x5482\n\tTIOCSTI                          = 0x5472\n\tTIOCSWINSZ                       = 0x80087467\n\tTIOCVHANGUP                      = 0x5437\n\tTOSTOP                           = 0x8000\n\tTUNATTACHFILTER                  = 0x800854d5\n\tTUNDETACHFILTER                  = 0x800854d6\n\tTUNGETDEVNETNS                   = 0x200054e3\n\tTUNGETFEATURES                   = 0x400454cf\n\tTUNGETFILTER                     = 0x400854db\n\tTUNGETIFF                        = 0x400454d2\n\tTUNGETSNDBUF                     = 0x400454d3\n\tTUNGETVNETBE                     = 0x400454df\n\tTUNGETVNETHDRSZ                  = 0x400454d7\n\tTUNGETVNETLE                     = 0x400454dd\n\tTUNSETCARRIER                    = 0x800454e2\n\tTUNSETDEBUG                      = 0x800454c9\n\tTUNSETFILTEREBPF                 = 0x400454e1\n\tTUNSETGROUP                      = 0x800454ce\n\tTUNSETIFF                        = 0x800454ca\n\tTUNSETIFINDEX                    = 0x800454da\n\tTUNSETLINK                       = 0x800454cd\n\tTUNSETNOCSUM                     = 0x800454c8\n\tTUNSETOFFLOAD                    = 0x800454d0\n\tTUNSETOWNER                      = 0x800454cc\n\tTUNSETPERSIST                    = 0x800454cb\n\tTUNSETQUEUE                      = 0x800454d9\n\tTUNSETSNDBUF                     = 0x800454d4\n\tTUNSETSTEERINGEBPF               = 0x400454e0\n\tTUNSETTXFILTER                   = 0x800454d1\n\tTUNSETVNETBE                     = 0x800454de\n\tTUNSETVNETHDRSZ                  = 0x800454d8\n\tTUNSETVNETLE                     = 0x800454dc\n\tUBI_IOCATT                       = 0x80186f40\n\tUBI_IOCDET                       = 0x80046f41\n\tUBI_IOCEBCH                      = 0x80044f02\n\tUBI_IOCEBER                      = 0x80044f01\n\tUBI_IOCEBISMAP                   = 0x40044f05\n\tUBI_IOCEBMAP                     = 0x80084f03\n\tUBI_IOCEBUNMAP                   = 0x80044f04\n\tUBI_IOCMKVOL                     = 0x80986f00\n\tUBI_IOCRMVOL                     = 0x80046f01\n\tUBI_IOCRNVOL                     = 0x91106f03\n\tUBI_IOCRPEB                      = 0x80046f04\n\tUBI_IOCRSVOL                     = 0x800c6f02\n\tUBI_IOCSETVOLPROP                = 0x80104f06\n\tUBI_IOCSPEB                      = 0x80046f05\n\tUBI_IOCVOLCRBLK                  = 0x80804f07\n\tUBI_IOCVOLRMBLK                  = 0x20004f08\n\tUBI_IOCVOLUP                     = 0x80084f00\n\tVDISCARD                         = 0xd\n\tVEOF                             = 0x10\n\tVEOL                             = 0x11\n\tVEOL2                            = 0x6\n\tVMIN                             = 0x4\n\tVREPRINT                         = 0xc\n\tVSTART                           = 0x8\n\tVSTOP                            = 0x9\n\tVSUSP                            = 0xa\n\tVSWTC                            = 0x7\n\tVSWTCH                           = 0x7\n\tVT1                              = 0x4000\n\tVTDLY                            = 0x4000\n\tVTIME                            = 0x5\n\tVWERASE                          = 0xe\n\tWDIOC_GETBOOTSTATUS              = 0x40045702\n\tWDIOC_GETPRETIMEOUT              = 0x40045709\n\tWDIOC_GETSTATUS                  = 0x40045701\n\tWDIOC_GETSUPPORT                 = 0x40285700\n\tWDIOC_GETTEMP                    = 0x40045703\n\tWDIOC_GETTIMELEFT                = 0x4004570a\n\tWDIOC_GETTIMEOUT                 = 0x40045707\n\tWDIOC_KEEPALIVE                  = 0x40045705\n\tWDIOC_SETOPTIONS                 = 0x40045704\n\tWORDSIZE                         = 0x20\n\tXCASE                            = 0x4\n\tXTABS                            = 0x1800\n\t_HIDIOCGRAWNAME                  = 0x40804804\n\t_HIDIOCGRAWPHYS                  = 0x40404805\n\t_HIDIOCGRAWUNIQ                  = 0x40404808\n)\n\n// Errors\nconst (\n\tEADDRINUSE      = syscall.Errno(0x7d)\n\tEADDRNOTAVAIL   = syscall.Errno(0x7e)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x7c)\n\tEALREADY        = syscall.Errno(0x95)\n\tEBADE           = syscall.Errno(0x32)\n\tEBADFD          = syscall.Errno(0x51)\n\tEBADMSG         = syscall.Errno(0x4d)\n\tEBADR           = syscall.Errno(0x33)\n\tEBADRQC         = syscall.Errno(0x36)\n\tEBADSLT         = syscall.Errno(0x37)\n\tEBFONT          = syscall.Errno(0x3b)\n\tECANCELED       = syscall.Errno(0x9e)\n\tECHRNG          = syscall.Errno(0x25)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x82)\n\tECONNREFUSED    = syscall.Errno(0x92)\n\tECONNRESET      = syscall.Errno(0x83)\n\tEDEADLK         = syscall.Errno(0x2d)\n\tEDEADLOCK       = syscall.Errno(0x38)\n\tEDESTADDRREQ    = syscall.Errno(0x60)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x46d)\n\tEHOSTDOWN       = syscall.Errno(0x93)\n\tEHOSTUNREACH    = syscall.Errno(0x94)\n\tEHWPOISON       = syscall.Errno(0xa8)\n\tEIDRM           = syscall.Errno(0x24)\n\tEILSEQ          = syscall.Errno(0x58)\n\tEINIT           = syscall.Errno(0x8d)\n\tEINPROGRESS     = syscall.Errno(0x96)\n\tEISCONN         = syscall.Errno(0x85)\n\tEISNAM          = syscall.Errno(0x8b)\n\tEKEYEXPIRED     = syscall.Errno(0xa2)\n\tEKEYREJECTED    = syscall.Errno(0xa4)\n\tEKEYREVOKED     = syscall.Errno(0xa3)\n\tEL2HLT          = syscall.Errno(0x2c)\n\tEL2NSYNC        = syscall.Errno(0x26)\n\tEL3HLT          = syscall.Errno(0x27)\n\tEL3RST          = syscall.Errno(0x28)\n\tELIBACC         = syscall.Errno(0x53)\n\tELIBBAD         = syscall.Errno(0x54)\n\tELIBEXEC        = syscall.Errno(0x57)\n\tELIBMAX         = syscall.Errno(0x56)\n\tELIBSCN         = syscall.Errno(0x55)\n\tELNRNG          = syscall.Errno(0x29)\n\tELOOP           = syscall.Errno(0x5a)\n\tEMEDIUMTYPE     = syscall.Errno(0xa0)\n\tEMSGSIZE        = syscall.Errno(0x61)\n\tEMULTIHOP       = syscall.Errno(0x4a)\n\tENAMETOOLONG    = syscall.Errno(0x4e)\n\tENAVAIL         = syscall.Errno(0x8a)\n\tENETDOWN        = syscall.Errno(0x7f)\n\tENETRESET       = syscall.Errno(0x81)\n\tENETUNREACH     = syscall.Errno(0x80)\n\tENOANO          = syscall.Errno(0x35)\n\tENOBUFS         = syscall.Errno(0x84)\n\tENOCSI          = syscall.Errno(0x2b)\n\tENODATA         = syscall.Errno(0x3d)\n\tENOKEY          = syscall.Errno(0xa1)\n\tENOLCK          = syscall.Errno(0x2e)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x9f)\n\tENOMSG          = syscall.Errno(0x23)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x63)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x59)\n\tENOTCONN        = syscall.Errno(0x86)\n\tENOTEMPTY       = syscall.Errno(0x5d)\n\tENOTNAM         = syscall.Errno(0x89)\n\tENOTRECOVERABLE = syscall.Errno(0xa6)\n\tENOTSOCK        = syscall.Errno(0x5f)\n\tENOTSUP         = syscall.Errno(0x7a)\n\tENOTUNIQ        = syscall.Errno(0x50)\n\tEOPNOTSUPP      = syscall.Errno(0x7a)\n\tEOVERFLOW       = syscall.Errno(0x4f)\n\tEOWNERDEAD      = syscall.Errno(0xa5)\n\tEPFNOSUPPORT    = syscall.Errno(0x7b)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x78)\n\tEPROTOTYPE      = syscall.Errno(0x62)\n\tEREMCHG         = syscall.Errno(0x52)\n\tEREMDEV         = syscall.Errno(0x8e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x8c)\n\tERESTART        = syscall.Errno(0x5b)\n\tERFKILL         = syscall.Errno(0xa7)\n\tESHUTDOWN       = syscall.Errno(0x8f)\n\tESOCKTNOSUPPORT = syscall.Errno(0x79)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x97)\n\tESTRPIPE        = syscall.Errno(0x5c)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x91)\n\tETOOMANYREFS    = syscall.Errno(0x90)\n\tEUCLEAN         = syscall.Errno(0x87)\n\tEUNATCH         = syscall.Errno(0x2a)\n\tEUSERS          = syscall.Errno(0x5e)\n\tEXFULL          = syscall.Errno(0x34)\n)\n\n// Signals\nconst (\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x12)\n\tSIGCLD    = syscall.Signal(0x12)\n\tSIGCONT   = syscall.Signal(0x19)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGIO     = syscall.Signal(0x16)\n\tSIGPOLL   = syscall.Signal(0x16)\n\tSIGPROF   = syscall.Signal(0x1d)\n\tSIGPWR    = syscall.Signal(0x13)\n\tSIGSTOP   = syscall.Signal(0x17)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTSTP   = syscall.Signal(0x18)\n\tSIGTTIN   = syscall.Signal(0x1a)\n\tSIGTTOU   = syscall.Signal(0x1b)\n\tSIGURG    = syscall.Signal(0x15)\n\tSIGUSR1   = syscall.Signal(0x10)\n\tSIGUSR2   = syscall.Signal(0x11)\n\tSIGVTALRM = syscall.Signal(0x1c)\n\tSIGWINCH  = syscall.Signal(0x14)\n\tSIGXCPU   = syscall.Signal(0x1e)\n\tSIGXFSZ   = syscall.Signal(0x1f)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"ENOMSG\", \"no message of desired type\"},\n\t{36, \"EIDRM\", \"identifier removed\"},\n\t{37, \"ECHRNG\", \"channel number out of range\"},\n\t{38, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{39, \"EL3HLT\", \"level 3 halted\"},\n\t{40, \"EL3RST\", \"level 3 reset\"},\n\t{41, \"ELNRNG\", \"link number out of range\"},\n\t{42, \"EUNATCH\", \"protocol driver not attached\"},\n\t{43, \"ENOCSI\", \"no CSI structure available\"},\n\t{44, \"EL2HLT\", \"level 2 halted\"},\n\t{45, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{46, \"ENOLCK\", \"no locks available\"},\n\t{50, \"EBADE\", \"invalid exchange\"},\n\t{51, \"EBADR\", \"invalid request descriptor\"},\n\t{52, \"EXFULL\", \"exchange full\"},\n\t{53, \"ENOANO\", \"no anode\"},\n\t{54, \"EBADRQC\", \"invalid request code\"},\n\t{55, \"EBADSLT\", \"invalid slot\"},\n\t{56, \"EDEADLOCK\", \"file locking deadlock error\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EMULTIHOP\", \"multihop attempted\"},\n\t{77, \"EBADMSG\", \"bad message\"},\n\t{78, \"ENAMETOOLONG\", \"file name too long\"},\n\t{79, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{80, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{81, \"EBADFD\", \"file descriptor in bad state\"},\n\t{82, \"EREMCHG\", \"remote address changed\"},\n\t{83, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{84, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{85, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{86, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{87, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{88, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{89, \"ENOSYS\", \"function not implemented\"},\n\t{90, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{91, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{92, \"ESTRPIPE\", \"streams pipe error\"},\n\t{93, \"ENOTEMPTY\", \"directory not empty\"},\n\t{94, \"EUSERS\", \"too many users\"},\n\t{95, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{96, \"EDESTADDRREQ\", \"destination address required\"},\n\t{97, \"EMSGSIZE\", \"message too long\"},\n\t{98, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{99, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{120, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{121, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{122, \"ENOTSUP\", \"operation not supported\"},\n\t{123, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{124, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{125, \"EADDRINUSE\", \"address already in use\"},\n\t{126, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{127, \"ENETDOWN\", \"network is down\"},\n\t{128, \"ENETUNREACH\", \"network is unreachable\"},\n\t{129, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{130, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{131, \"ECONNRESET\", \"connection reset by peer\"},\n\t{132, \"ENOBUFS\", \"no buffer space available\"},\n\t{133, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{134, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{135, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{137, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{138, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{139, \"EISNAM\", \"is a named type file\"},\n\t{140, \"EREMOTEIO\", \"remote I/O error\"},\n\t{141, \"EINIT\", \"unknown error 141\"},\n\t{142, \"EREMDEV\", \"unknown error 142\"},\n\t{143, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{144, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{145, \"ETIMEDOUT\", \"connection timed out\"},\n\t{146, \"ECONNREFUSED\", \"connection refused\"},\n\t{147, \"EHOSTDOWN\", \"host is down\"},\n\t{148, \"EHOSTUNREACH\", \"no route to host\"},\n\t{149, \"EALREADY\", \"operation already in progress\"},\n\t{150, \"EINPROGRESS\", \"operation now in progress\"},\n\t{151, \"ESTALE\", \"stale file handle\"},\n\t{158, \"ECANCELED\", \"operation canceled\"},\n\t{159, \"ENOMEDIUM\", \"no medium found\"},\n\t{160, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{161, \"ENOKEY\", \"required key not available\"},\n\t{162, \"EKEYEXPIRED\", \"key has expired\"},\n\t{163, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{164, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{165, \"EOWNERDEAD\", \"owner died\"},\n\t{166, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{167, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{168, \"EHWPOISON\", \"memory page has hardware error\"},\n\t{1133, \"EDQUOT\", \"disk quota exceeded\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGUSR1\", \"user defined signal 1\"},\n\t{17, \"SIGUSR2\", \"user defined signal 2\"},\n\t{18, \"SIGCHLD\", \"child exited\"},\n\t{19, \"SIGPWR\", \"power failure\"},\n\t{20, \"SIGWINCH\", \"window changed\"},\n\t{21, \"SIGURG\", \"urgent I/O condition\"},\n\t{22, \"SIGIO\", \"I/O possible\"},\n\t{23, \"SIGSTOP\", \"stopped (signal)\"},\n\t{24, \"SIGTSTP\", \"stopped\"},\n\t{25, \"SIGCONT\", \"continued\"},\n\t{26, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{27, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{28, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{29, \"SIGPROF\", \"profiling timer expired\"},\n\t{30, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{31, \"SIGXFSZ\", \"file size limit exceeded\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/ppc/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/ppc/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x17\n\tB115200                          = 0x11\n\tB1152000                         = 0x18\n\tB1500000                         = 0x19\n\tB2000000                         = 0x1a\n\tB230400                          = 0x12\n\tB2500000                         = 0x1b\n\tB3000000                         = 0x1c\n\tB3500000                         = 0x1d\n\tB4000000                         = 0x1e\n\tB460800                          = 0x13\n\tB500000                          = 0x14\n\tB57600                           = 0x10\n\tB576000                          = 0x15\n\tB921600                          = 0x16\n\tBLKALIGNOFF                      = 0x2000127a\n\tBLKBSZGET                        = 0x40041270\n\tBLKBSZSET                        = 0x80041271\n\tBLKDISCARD                       = 0x20001277\n\tBLKDISCARDZEROES                 = 0x2000127c\n\tBLKFLSBUF                        = 0x20001261\n\tBLKFRAGET                        = 0x20001265\n\tBLKFRASET                        = 0x20001264\n\tBLKGETDISKSEQ                    = 0x40081280\n\tBLKGETSIZE                       = 0x20001260\n\tBLKGETSIZE64                     = 0x40041272\n\tBLKIOMIN                         = 0x20001278\n\tBLKIOOPT                         = 0x20001279\n\tBLKPBSZGET                       = 0x2000127b\n\tBLKRAGET                         = 0x20001263\n\tBLKRASET                         = 0x20001262\n\tBLKROGET                         = 0x2000125e\n\tBLKROSET                         = 0x2000125d\n\tBLKROTATIONAL                    = 0x2000127e\n\tBLKRRPART                        = 0x2000125f\n\tBLKSECDISCARD                    = 0x2000127d\n\tBLKSECTGET                       = 0x20001267\n\tBLKSECTSET                       = 0x20001266\n\tBLKSSZGET                        = 0x20001268\n\tBLKZEROOUT                       = 0x2000127f\n\tBOTHER                           = 0x1f\n\tBS1                              = 0x8000\n\tBSDLY                            = 0x8000\n\tCBAUD                            = 0xff\n\tCBAUDEX                          = 0x0\n\tCIBAUD                           = 0xff0000\n\tCLOCAL                           = 0x8000\n\tCR1                              = 0x1000\n\tCR2                              = 0x2000\n\tCR3                              = 0x3000\n\tCRDLY                            = 0x3000\n\tCREAD                            = 0x800\n\tCS6                              = 0x100\n\tCS7                              = 0x200\n\tCS8                              = 0x300\n\tCSIZE                            = 0x300\n\tCSTOPB                           = 0x400\n\tDM_MPATH_PROBE_PATHS             = 0x2000fd12\n\tECCGETLAYOUT                     = 0x41484d11\n\tECCGETSTATS                      = 0x40104d12\n\tECHOCTL                          = 0x40\n\tECHOE                            = 0x2\n\tECHOK                            = 0x4\n\tECHOKE                           = 0x1\n\tECHONL                           = 0x10\n\tECHOPRT                          = 0x20\n\tEFD_CLOEXEC                      = 0x80000\n\tEFD_NONBLOCK                     = 0x800\n\tEPIOCGPARAMS                     = 0x40088a02\n\tEPIOCSPARAMS                     = 0x80088a01\n\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000000\n\tFF1                              = 0x4000\n\tFFDLY                            = 0x4000\n\tFICLONE                          = 0x80049409\n\tFICLONERANGE                     = 0x8020940d\n\tFLUSHO                           = 0x800000\n\tFS_IOC_ENABLE_VERITY             = 0x80806685\n\tFS_IOC_GETFLAGS                  = 0x40046601\n\tFS_IOC_GET_ENCRYPTION_NONCE      = 0x4010661b\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x800c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x80106614\n\tFS_IOC_SETFLAGS                  = 0x80046602\n\tFS_IOC_SET_ENCRYPTION_POLICY     = 0x400c6613\n\tF_GETLK                          = 0xc\n\tF_GETLK64                        = 0xc\n\tF_GETOWN                         = 0x9\n\tF_RDLCK                          = 0x0\n\tF_SETLK                          = 0xd\n\tF_SETLK64                        = 0xd\n\tF_SETLKW                         = 0xe\n\tF_SETLKW64                       = 0xe\n\tF_SETOWN                         = 0x8\n\tF_UNLCK                          = 0x2\n\tF_WRLCK                          = 0x1\n\tHIDIOCGRAWINFO                   = 0x40084803\n\tHIDIOCGRDESC                     = 0x50044802\n\tHIDIOCGRDESCSIZE                 = 0x40044801\n\tHIDIOCREVOKE                     = 0x8004480d\n\tHUPCL                            = 0x4000\n\tICANON                           = 0x100\n\tIEXTEN                           = 0x400\n\tIN_CLOEXEC                       = 0x80000\n\tIN_NONBLOCK                      = 0x800\n\tIOCTL_MEI_NOTIFY_GET             = 0x40044803\n\tIOCTL_MEI_NOTIFY_SET             = 0x80044802\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x200007b9\n\tIPV6_FLOWINFO_MASK               = 0xfffffff\n\tIPV6_FLOWLABEL_MASK              = 0xfffff\n\tISIG                             = 0x80\n\tIUCLC                            = 0x1000\n\tIXOFF                            = 0x400\n\tIXON                             = 0x200\n\tMAP_ANON                         = 0x20\n\tMAP_ANONYMOUS                    = 0x20\n\tMAP_DENYWRITE                    = 0x800\n\tMAP_EXECUTABLE                   = 0x1000\n\tMAP_GROWSDOWN                    = 0x100\n\tMAP_HUGETLB                      = 0x40000\n\tMAP_LOCKED                       = 0x80\n\tMAP_NONBLOCK                     = 0x10000\n\tMAP_NORESERVE                    = 0x40\n\tMAP_POPULATE                     = 0x8000\n\tMAP_STACK                        = 0x20000\n\tMAP_SYNC                         = 0x80000\n\tMCL_CURRENT                      = 0x2000\n\tMCL_FUTURE                       = 0x4000\n\tMCL_ONFAULT                      = 0x8000\n\tMEMERASE                         = 0x80084d02\n\tMEMERASE64                       = 0x80104d14\n\tMEMGETBADBLOCK                   = 0x80084d0b\n\tMEMGETINFO                       = 0x40204d01\n\tMEMGETOOBSEL                     = 0x40c84d0a\n\tMEMGETREGIONCOUNT                = 0x40044d07\n\tMEMISLOCKED                      = 0x40084d17\n\tMEMLOCK                          = 0x80084d05\n\tMEMREAD                          = 0xc0404d1a\n\tMEMREADOOB                       = 0xc00c4d04\n\tMEMSETBADBLOCK                   = 0x80084d0c\n\tMEMUNLOCK                        = 0x80084d06\n\tMEMWRITEOOB                      = 0xc00c4d03\n\tMTDFILEMODE                      = 0x20004d13\n\tNFDBITS                          = 0x20\n\tNL2                              = 0x200\n\tNL3                              = 0x300\n\tNLDLY                            = 0x300\n\tNOFLSH                           = 0x80000000\n\tNS_GET_MNTNS_ID                  = 0x4008b705\n\tNS_GET_NSTYPE                    = 0x2000b703\n\tNS_GET_OWNER_UID                 = 0x2000b704\n\tNS_GET_PARENT                    = 0x2000b702\n\tNS_GET_PID_FROM_PIDNS            = 0x4004b706\n\tNS_GET_PID_IN_PIDNS              = 0x4004b708\n\tNS_GET_TGID_FROM_PIDNS           = 0x4004b707\n\tNS_GET_TGID_IN_PIDNS             = 0x4004b709\n\tNS_GET_USERNS                    = 0x2000b701\n\tOLCUC                            = 0x4\n\tONLCR                            = 0x2\n\tOTPERASE                         = 0x800c4d19\n\tOTPGETREGIONCOUNT                = 0x80044d0e\n\tOTPGETREGIONINFO                 = 0x800c4d0f\n\tOTPLOCK                          = 0x400c4d10\n\tOTPSELECT                        = 0x40044d0d\n\tO_APPEND                         = 0x400\n\tO_ASYNC                          = 0x2000\n\tO_CLOEXEC                        = 0x80000\n\tO_CREAT                          = 0x40\n\tO_DIRECT                         = 0x20000\n\tO_DIRECTORY                      = 0x4000\n\tO_DSYNC                          = 0x1000\n\tO_EXCL                           = 0x80\n\tO_FSYNC                          = 0x101000\n\tO_LARGEFILE                      = 0x10000\n\tO_NDELAY                         = 0x800\n\tO_NOATIME                        = 0x40000\n\tO_NOCTTY                         = 0x100\n\tO_NOFOLLOW                       = 0x8000\n\tO_NONBLOCK                       = 0x800\n\tO_PATH                           = 0x200000\n\tO_RSYNC                          = 0x101000\n\tO_SYNC                           = 0x101000\n\tO_TMPFILE                        = 0x404000\n\tO_TRUNC                          = 0x200\n\tPARENB                           = 0x1000\n\tPARODD                           = 0x2000\n\tPENDIN                           = 0x20000000\n\tPERF_EVENT_IOC_DISABLE           = 0x20002401\n\tPERF_EVENT_IOC_ENABLE            = 0x20002400\n\tPERF_EVENT_IOC_ID                = 0x40042407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8004240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT      = 0x80042409\n\tPERF_EVENT_IOC_PERIOD            = 0x80082404\n\tPERF_EVENT_IOC_QUERY_BPF         = 0xc004240a\n\tPERF_EVENT_IOC_REFRESH           = 0x20002402\n\tPERF_EVENT_IOC_RESET             = 0x20002403\n\tPERF_EVENT_IOC_SET_BPF           = 0x80042408\n\tPERF_EVENT_IOC_SET_FILTER        = 0x80042406\n\tPERF_EVENT_IOC_SET_OUTPUT        = 0x20002405\n\tPPPIOCATTACH                     = 0x8004743d\n\tPPPIOCATTCHAN                    = 0x80047438\n\tPPPIOCBRIDGECHAN                 = 0x80047435\n\tPPPIOCCONNECT                    = 0x8004743a\n\tPPPIOCDETACH                     = 0x8004743c\n\tPPPIOCDISCONN                    = 0x20007439\n\tPPPIOCGASYNCMAP                  = 0x40047458\n\tPPPIOCGCHAN                      = 0x40047437\n\tPPPIOCGDEBUG                     = 0x40047441\n\tPPPIOCGFLAGS                     = 0x4004745a\n\tPPPIOCGIDLE                      = 0x4008743f\n\tPPPIOCGIDLE32                    = 0x4008743f\n\tPPPIOCGIDLE64                    = 0x4010743f\n\tPPPIOCGL2TPSTATS                 = 0x40487436\n\tPPPIOCGMRU                       = 0x40047453\n\tPPPIOCGRASYNCMAP                 = 0x40047455\n\tPPPIOCGUNIT                      = 0x40047456\n\tPPPIOCGXASYNCMAP                 = 0x40207450\n\tPPPIOCSACTIVE                    = 0x80087446\n\tPPPIOCSASYNCMAP                  = 0x80047457\n\tPPPIOCSCOMPRESS                  = 0x800c744d\n\tPPPIOCSDEBUG                     = 0x80047440\n\tPPPIOCSFLAGS                     = 0x80047459\n\tPPPIOCSMAXCID                    = 0x80047451\n\tPPPIOCSMRRU                      = 0x8004743b\n\tPPPIOCSMRU                       = 0x80047452\n\tPPPIOCSNPMODE                    = 0x8008744b\n\tPPPIOCSPASS                      = 0x80087447\n\tPPPIOCSRASYNCMAP                 = 0x80047454\n\tPPPIOCSXASYNCMAP                 = 0x8020744f\n\tPPPIOCUNBRIDGECHAN               = 0x20007434\n\tPPPIOCXFERUNIT                   = 0x2000744e\n\tPROT_SAO                         = 0x10\n\tPR_SET_PTRACER_ANY               = 0xffffffff\n\tPTP_CLOCK_GETCAPS                = 0x40503d01\n\tPTP_CLOCK_GETCAPS2               = 0x40503d0a\n\tPTP_ENABLE_PPS                   = 0x80043d04\n\tPTP_ENABLE_PPS2                  = 0x80043d0d\n\tPTP_EXTTS_REQUEST                = 0x80103d02\n\tPTP_EXTTS_REQUEST2               = 0x80103d0b\n\tPTP_MASK_CLEAR_ALL               = 0x20003d13\n\tPTP_MASK_EN_SINGLE               = 0x80043d14\n\tPTP_PEROUT_REQUEST               = 0x80383d03\n\tPTP_PEROUT_REQUEST2              = 0x80383d0c\n\tPTP_PIN_SETFUNC                  = 0x80603d07\n\tPTP_PIN_SETFUNC2                 = 0x80603d10\n\tPTP_SYS_OFFSET                   = 0x83403d05\n\tPTP_SYS_OFFSET2                  = 0x83403d0e\n\tPTRACE_GETEVRREGS                = 0x14\n\tPTRACE_GETFPREGS                 = 0xe\n\tPTRACE_GETREGS64                 = 0x16\n\tPTRACE_GETVRREGS                 = 0x12\n\tPTRACE_GETVSRREGS                = 0x1b\n\tPTRACE_GET_DEBUGREG              = 0x19\n\tPTRACE_SETEVRREGS                = 0x15\n\tPTRACE_SETFPREGS                 = 0xf\n\tPTRACE_SETREGS64                 = 0x17\n\tPTRACE_SETVRREGS                 = 0x13\n\tPTRACE_SETVSRREGS                = 0x1c\n\tPTRACE_SET_DEBUGREG              = 0x1a\n\tPTRACE_SINGLEBLOCK               = 0x100\n\tPTRACE_SYSEMU                    = 0x1d\n\tPTRACE_SYSEMU_SINGLESTEP         = 0x1e\n\tPT_CCR                           = 0x26\n\tPT_CTR                           = 0x23\n\tPT_DAR                           = 0x29\n\tPT_DSCR                          = 0x2c\n\tPT_DSISR                         = 0x2a\n\tPT_FPR0                          = 0x30\n\tPT_FPR31                         = 0x6e\n\tPT_FPSCR                         = 0x71\n\tPT_LNK                           = 0x24\n\tPT_MQ                            = 0x27\n\tPT_MSR                           = 0x21\n\tPT_NIP                           = 0x20\n\tPT_ORIG_R3                       = 0x22\n\tPT_R0                            = 0x0\n\tPT_R1                            = 0x1\n\tPT_R10                           = 0xa\n\tPT_R11                           = 0xb\n\tPT_R12                           = 0xc\n\tPT_R13                           = 0xd\n\tPT_R14                           = 0xe\n\tPT_R15                           = 0xf\n\tPT_R16                           = 0x10\n\tPT_R17                           = 0x11\n\tPT_R18                           = 0x12\n\tPT_R19                           = 0x13\n\tPT_R2                            = 0x2\n\tPT_R20                           = 0x14\n\tPT_R21                           = 0x15\n\tPT_R22                           = 0x16\n\tPT_R23                           = 0x17\n\tPT_R24                           = 0x18\n\tPT_R25                           = 0x19\n\tPT_R26                           = 0x1a\n\tPT_R27                           = 0x1b\n\tPT_R28                           = 0x1c\n\tPT_R29                           = 0x1d\n\tPT_R3                            = 0x3\n\tPT_R30                           = 0x1e\n\tPT_R31                           = 0x1f\n\tPT_R4                            = 0x4\n\tPT_R5                            = 0x5\n\tPT_R6                            = 0x6\n\tPT_R7                            = 0x7\n\tPT_R8                            = 0x8\n\tPT_R9                            = 0x9\n\tPT_REGS_COUNT                    = 0x2c\n\tPT_RESULT                        = 0x2b\n\tPT_TRAP                          = 0x28\n\tPT_XER                           = 0x25\n\tRLIMIT_AS                        = 0x9\n\tRLIMIT_MEMLOCK                   = 0x8\n\tRLIMIT_NOFILE                    = 0x7\n\tRLIMIT_NPROC                     = 0x6\n\tRLIMIT_RSS                       = 0x5\n\tRNDADDENTROPY                    = 0x80085203\n\tRNDADDTOENTCNT                   = 0x80045201\n\tRNDCLEARPOOL                     = 0x20005206\n\tRNDGETENTCNT                     = 0x40045200\n\tRNDGETPOOL                       = 0x40085202\n\tRNDRESEEDCRNG                    = 0x20005207\n\tRNDZAPENTCNT                     = 0x20005204\n\tRTC_AIE_OFF                      = 0x20007002\n\tRTC_AIE_ON                       = 0x20007001\n\tRTC_ALM_READ                     = 0x40247008\n\tRTC_ALM_SET                      = 0x80247007\n\tRTC_EPOCH_READ                   = 0x4004700d\n\tRTC_EPOCH_SET                    = 0x8004700e\n\tRTC_IRQP_READ                    = 0x4004700b\n\tRTC_IRQP_SET                     = 0x8004700c\n\tRTC_PARAM_GET                    = 0x80187013\n\tRTC_PARAM_SET                    = 0x80187014\n\tRTC_PIE_OFF                      = 0x20007006\n\tRTC_PIE_ON                       = 0x20007005\n\tRTC_PLL_GET                      = 0x401c7011\n\tRTC_PLL_SET                      = 0x801c7012\n\tRTC_RD_TIME                      = 0x40247009\n\tRTC_SET_TIME                     = 0x8024700a\n\tRTC_UIE_OFF                      = 0x20007004\n\tRTC_UIE_ON                       = 0x20007003\n\tRTC_VL_CLR                       = 0x20007014\n\tRTC_VL_READ                      = 0x40047013\n\tRTC_WIE_OFF                      = 0x20007010\n\tRTC_WIE_ON                       = 0x2000700f\n\tRTC_WKALM_RD                     = 0x40287010\n\tRTC_WKALM_SET                    = 0x8028700f\n\tSCM_DEVMEM_DMABUF                = 0x4f\n\tSCM_DEVMEM_LINEAR                = 0x4e\n\tSCM_TIMESTAMPING                 = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS       = 0x36\n\tSCM_TIMESTAMPING_PKTINFO         = 0x3a\n\tSCM_TIMESTAMPNS                  = 0x23\n\tSCM_TS_OPT_ID                    = 0x51\n\tSCM_TXTIME                       = 0x3d\n\tSCM_WIFI_STATUS                  = 0x29\n\tSECCOMP_IOCTL_NOTIF_ADDFD        = 0x80182103\n\tSECCOMP_IOCTL_NOTIF_ID_VALID     = 0x80082102\n\tSECCOMP_IOCTL_NOTIF_SET_FLAGS    = 0x80082104\n\tSFD_CLOEXEC                      = 0x80000\n\tSFD_NONBLOCK                     = 0x800\n\tSIOCATMARK                       = 0x8905\n\tSIOCGPGRP                        = 0x8904\n\tSIOCGSTAMPNS_NEW                 = 0x40108907\n\tSIOCGSTAMP_NEW                   = 0x40108906\n\tSIOCINQ                          = 0x4004667f\n\tSIOCOUTQ                         = 0x40047473\n\tSIOCSPGRP                        = 0x8902\n\tSOCK_CLOEXEC                     = 0x80000\n\tSOCK_DGRAM                       = 0x2\n\tSOCK_NONBLOCK                    = 0x800\n\tSOCK_STREAM                      = 0x1\n\tSOL_SOCKET                       = 0x1\n\tSO_ACCEPTCONN                    = 0x1e\n\tSO_ATTACH_BPF                    = 0x32\n\tSO_ATTACH_REUSEPORT_CBPF         = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF         = 0x34\n\tSO_BINDTODEVICE                  = 0x19\n\tSO_BINDTOIFINDEX                 = 0x3e\n\tSO_BPF_EXTENSIONS                = 0x30\n\tSO_BROADCAST                     = 0x6\n\tSO_BSDCOMPAT                     = 0xe\n\tSO_BUF_LOCK                      = 0x48\n\tSO_BUSY_POLL                     = 0x2e\n\tSO_BUSY_POLL_BUDGET              = 0x46\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\n\tSO_DEVMEM_DMABUF                 = 0x4f\n\tSO_DEVMEM_DONTNEED               = 0x50\n\tSO_DEVMEM_LINEAR                 = 0x4e\n\tSO_DOMAIN                        = 0x27\n\tSO_DONTROUTE                     = 0x5\n\tSO_ERROR                         = 0x4\n\tSO_INCOMING_CPU                  = 0x31\n\tSO_INCOMING_NAPI_ID              = 0x38\n\tSO_KEEPALIVE                     = 0x9\n\tSO_LINGER                        = 0xd\n\tSO_LOCK_FILTER                   = 0x2c\n\tSO_MARK                          = 0x24\n\tSO_MAX_PACING_RATE               = 0x2f\n\tSO_MEMINFO                       = 0x37\n\tSO_NETNS_COOKIE                  = 0x47\n\tSO_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0xa\n\tSO_PASSCRED                      = 0x14\n\tSO_PASSPIDFD                     = 0x4c\n\tSO_PASSRIGHTS                    = 0x53\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x15\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERPIDFD                     = 0x4d\n\tSO_PEERSEC                       = 0x1f\n\tSO_PREFER_BUSY_POLL              = 0x45\n\tSO_PROTOCOL                      = 0x26\n\tSO_RCVBUF                        = 0x8\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x10\n\tSO_RCVMARK                       = 0x4b\n\tSO_RCVPRIORITY                   = 0x52\n\tSO_RCVTIMEO                      = 0x12\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x12\n\tSO_RESERVE_MEM                   = 0x49\n\tSO_REUSEADDR                     = 0x2\n\tSO_REUSEPORT                     = 0xf\n\tSO_RXQ_OVFL                      = 0x28\n\tSO_SECURITY_AUTHENTICATION       = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK   = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT = 0x17\n\tSO_SELECT_ERR_QUEUE              = 0x2d\n\tSO_SNDBUF                        = 0x7\n\tSO_SNDBUFFORCE                   = 0x20\n\tSO_SNDLOWAT                      = 0x11\n\tSO_SNDTIMEO                      = 0x13\n\tSO_SNDTIMEO_NEW                  = 0x43\n\tSO_SNDTIMEO_OLD                  = 0x13\n\tSO_TIMESTAMPING                  = 0x25\n\tSO_TIMESTAMPING_NEW              = 0x41\n\tSO_TIMESTAMPING_OLD              = 0x25\n\tSO_TIMESTAMPNS                   = 0x23\n\tSO_TIMESTAMPNS_NEW               = 0x40\n\tSO_TIMESTAMPNS_OLD               = 0x23\n\tSO_TIMESTAMP_NEW                 = 0x3f\n\tSO_TXREHASH                      = 0x4a\n\tSO_TXTIME                        = 0x3d\n\tSO_TYPE                          = 0x3\n\tSO_WIFI_STATUS                   = 0x29\n\tSO_ZEROCOPY                      = 0x3c\n\tTAB1                             = 0x400\n\tTAB2                             = 0x800\n\tTAB3                             = 0xc00\n\tTABDLY                           = 0xc00\n\tTCFLSH                           = 0x2000741f\n\tTCGETA                           = 0x40147417\n\tTCGETS                           = 0x402c7413\n\tTCSAFLUSH                        = 0x2\n\tTCSBRK                           = 0x2000741d\n\tTCSBRKP                          = 0x5425\n\tTCSETA                           = 0x80147418\n\tTCSETAF                          = 0x8014741c\n\tTCSETAW                          = 0x80147419\n\tTCSETS                           = 0x802c7414\n\tTCSETSF                          = 0x802c7416\n\tTCSETSW                          = 0x802c7415\n\tTCXONC                           = 0x2000741e\n\tTFD_CLOEXEC                      = 0x80000\n\tTFD_NONBLOCK                     = 0x800\n\tTIOCCBRK                         = 0x5428\n\tTIOCCONS                         = 0x541d\n\tTIOCEXCL                         = 0x540c\n\tTIOCGDEV                         = 0x40045432\n\tTIOCGETC                         = 0x40067412\n\tTIOCGETD                         = 0x5424\n\tTIOCGETP                         = 0x40067408\n\tTIOCGEXCL                        = 0x40045440\n\tTIOCGICOUNT                      = 0x545d\n\tTIOCGISO7816                     = 0x40285442\n\tTIOCGLCKTRMIOS                   = 0x5456\n\tTIOCGLTC                         = 0x40067474\n\tTIOCGPGRP                        = 0x40047477\n\tTIOCGPKT                         = 0x40045438\n\tTIOCGPTLCK                       = 0x40045439\n\tTIOCGPTN                         = 0x40045430\n\tTIOCGPTPEER                      = 0x20005441\n\tTIOCGRS485                       = 0x542e\n\tTIOCGSERIAL                      = 0x541e\n\tTIOCGSID                         = 0x5429\n\tTIOCGSOFTCAR                     = 0x5419\n\tTIOCGWINSZ                       = 0x40087468\n\tTIOCINQ                          = 0x4004667f\n\tTIOCLINUX                        = 0x541c\n\tTIOCMBIC                         = 0x5417\n\tTIOCMBIS                         = 0x5416\n\tTIOCMGET                         = 0x5415\n\tTIOCMIWAIT                       = 0x545c\n\tTIOCMSET                         = 0x5418\n\tTIOCM_CAR                        = 0x40\n\tTIOCM_CD                         = 0x40\n\tTIOCM_CTS                        = 0x20\n\tTIOCM_DSR                        = 0x100\n\tTIOCM_LOOP                       = 0x8000\n\tTIOCM_OUT1                       = 0x2000\n\tTIOCM_OUT2                       = 0x4000\n\tTIOCM_RI                         = 0x80\n\tTIOCM_RNG                        = 0x80\n\tTIOCM_SR                         = 0x10\n\tTIOCM_ST                         = 0x8\n\tTIOCNOTTY                        = 0x5422\n\tTIOCNXCL                         = 0x540d\n\tTIOCOUTQ                         = 0x40047473\n\tTIOCPKT                          = 0x5420\n\tTIOCSBRK                         = 0x5427\n\tTIOCSCTTY                        = 0x540e\n\tTIOCSERCONFIG                    = 0x5453\n\tTIOCSERGETLSR                    = 0x5459\n\tTIOCSERGETMULTI                  = 0x545a\n\tTIOCSERGSTRUCT                   = 0x5458\n\tTIOCSERGWILD                     = 0x5454\n\tTIOCSERSETMULTI                  = 0x545b\n\tTIOCSERSWILD                     = 0x5455\n\tTIOCSER_TEMT                     = 0x1\n\tTIOCSETC                         = 0x80067411\n\tTIOCSETD                         = 0x5423\n\tTIOCSETN                         = 0x8006740a\n\tTIOCSETP                         = 0x80067409\n\tTIOCSIG                          = 0x80045436\n\tTIOCSISO7816                     = 0xc0285443\n\tTIOCSLCKTRMIOS                   = 0x5457\n\tTIOCSLTC                         = 0x80067475\n\tTIOCSPGRP                        = 0x80047476\n\tTIOCSPTLCK                       = 0x80045431\n\tTIOCSRS485                       = 0x542f\n\tTIOCSSERIAL                      = 0x541f\n\tTIOCSSOFTCAR                     = 0x541a\n\tTIOCSTART                        = 0x2000746e\n\tTIOCSTI                          = 0x5412\n\tTIOCSTOP                         = 0x2000746f\n\tTIOCSWINSZ                       = 0x80087467\n\tTIOCVHANGUP                      = 0x5437\n\tTOSTOP                           = 0x400000\n\tTUNATTACHFILTER                  = 0x800854d5\n\tTUNDETACHFILTER                  = 0x800854d6\n\tTUNGETDEVNETNS                   = 0x200054e3\n\tTUNGETFEATURES                   = 0x400454cf\n\tTUNGETFILTER                     = 0x400854db\n\tTUNGETIFF                        = 0x400454d2\n\tTUNGETSNDBUF                     = 0x400454d3\n\tTUNGETVNETBE                     = 0x400454df\n\tTUNGETVNETHDRSZ                  = 0x400454d7\n\tTUNGETVNETLE                     = 0x400454dd\n\tTUNSETCARRIER                    = 0x800454e2\n\tTUNSETDEBUG                      = 0x800454c9\n\tTUNSETFILTEREBPF                 = 0x400454e1\n\tTUNSETGROUP                      = 0x800454ce\n\tTUNSETIFF                        = 0x800454ca\n\tTUNSETIFINDEX                    = 0x800454da\n\tTUNSETLINK                       = 0x800454cd\n\tTUNSETNOCSUM                     = 0x800454c8\n\tTUNSETOFFLOAD                    = 0x800454d0\n\tTUNSETOWNER                      = 0x800454cc\n\tTUNSETPERSIST                    = 0x800454cb\n\tTUNSETQUEUE                      = 0x800454d9\n\tTUNSETSNDBUF                     = 0x800454d4\n\tTUNSETSTEERINGEBPF               = 0x400454e0\n\tTUNSETTXFILTER                   = 0x800454d1\n\tTUNSETVNETBE                     = 0x800454de\n\tTUNSETVNETHDRSZ                  = 0x800454d8\n\tTUNSETVNETLE                     = 0x800454dc\n\tUBI_IOCATT                       = 0x80186f40\n\tUBI_IOCDET                       = 0x80046f41\n\tUBI_IOCEBCH                      = 0x80044f02\n\tUBI_IOCEBER                      = 0x80044f01\n\tUBI_IOCEBISMAP                   = 0x40044f05\n\tUBI_IOCEBMAP                     = 0x80084f03\n\tUBI_IOCEBUNMAP                   = 0x80044f04\n\tUBI_IOCMKVOL                     = 0x80986f00\n\tUBI_IOCRMVOL                     = 0x80046f01\n\tUBI_IOCRNVOL                     = 0x91106f03\n\tUBI_IOCRPEB                      = 0x80046f04\n\tUBI_IOCRSVOL                     = 0x800c6f02\n\tUBI_IOCSETVOLPROP                = 0x80104f06\n\tUBI_IOCSPEB                      = 0x80046f05\n\tUBI_IOCVOLCRBLK                  = 0x80804f07\n\tUBI_IOCVOLRMBLK                  = 0x20004f08\n\tUBI_IOCVOLUP                     = 0x80084f00\n\tVDISCARD                         = 0x10\n\tVEOF                             = 0x4\n\tVEOL                             = 0x6\n\tVEOL2                            = 0x8\n\tVMIN                             = 0x5\n\tVREPRINT                         = 0xb\n\tVSTART                           = 0xd\n\tVSTOP                            = 0xe\n\tVSUSP                            = 0xc\n\tVSWTC                            = 0x9\n\tVT1                              = 0x10000\n\tVTDLY                            = 0x10000\n\tVTIME                            = 0x7\n\tVWERASE                          = 0xa\n\tWDIOC_GETBOOTSTATUS              = 0x40045702\n\tWDIOC_GETPRETIMEOUT              = 0x40045709\n\tWDIOC_GETSTATUS                  = 0x40045701\n\tWDIOC_GETSUPPORT                 = 0x40285700\n\tWDIOC_GETTEMP                    = 0x40045703\n\tWDIOC_GETTIMELEFT                = 0x4004570a\n\tWDIOC_GETTIMEOUT                 = 0x40045707\n\tWDIOC_KEEPALIVE                  = 0x40045705\n\tWDIOC_SETOPTIONS                 = 0x40045704\n\tWORDSIZE                         = 0x20\n\tXCASE                            = 0x4000\n\tXTABS                            = 0xc00\n\t_HIDIOCGRAWNAME                  = 0x40804804\n\t_HIDIOCGRAWPHYS                  = 0x40404805\n\t_HIDIOCGRAWUNIQ                  = 0x40404808\n)\n\n// Errors\nconst (\n\tEADDRINUSE      = syscall.Errno(0x62)\n\tEADDRNOTAVAIL   = syscall.Errno(0x63)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x61)\n\tEALREADY        = syscall.Errno(0x72)\n\tEBADE           = syscall.Errno(0x34)\n\tEBADFD          = syscall.Errno(0x4d)\n\tEBADMSG         = syscall.Errno(0x4a)\n\tEBADR           = syscall.Errno(0x35)\n\tEBADRQC         = syscall.Errno(0x38)\n\tEBADSLT         = syscall.Errno(0x39)\n\tEBFONT          = syscall.Errno(0x3b)\n\tECANCELED       = syscall.Errno(0x7d)\n\tECHRNG          = syscall.Errno(0x2c)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x67)\n\tECONNREFUSED    = syscall.Errno(0x6f)\n\tECONNRESET      = syscall.Errno(0x68)\n\tEDEADLK         = syscall.Errno(0x23)\n\tEDEADLOCK       = syscall.Errno(0x3a)\n\tEDESTADDRREQ    = syscall.Errno(0x59)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x7a)\n\tEHOSTDOWN       = syscall.Errno(0x70)\n\tEHOSTUNREACH    = syscall.Errno(0x71)\n\tEHWPOISON       = syscall.Errno(0x85)\n\tEIDRM           = syscall.Errno(0x2b)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x73)\n\tEISCONN         = syscall.Errno(0x6a)\n\tEISNAM          = syscall.Errno(0x78)\n\tEKEYEXPIRED     = syscall.Errno(0x7f)\n\tEKEYREJECTED    = syscall.Errno(0x81)\n\tEKEYREVOKED     = syscall.Errno(0x80)\n\tEL2HLT          = syscall.Errno(0x33)\n\tEL2NSYNC        = syscall.Errno(0x2d)\n\tEL3HLT          = syscall.Errno(0x2e)\n\tEL3RST          = syscall.Errno(0x2f)\n\tELIBACC         = syscall.Errno(0x4f)\n\tELIBBAD         = syscall.Errno(0x50)\n\tELIBEXEC        = syscall.Errno(0x53)\n\tELIBMAX         = syscall.Errno(0x52)\n\tELIBSCN         = syscall.Errno(0x51)\n\tELNRNG          = syscall.Errno(0x30)\n\tELOOP           = syscall.Errno(0x28)\n\tEMEDIUMTYPE     = syscall.Errno(0x7c)\n\tEMSGSIZE        = syscall.Errno(0x5a)\n\tEMULTIHOP       = syscall.Errno(0x48)\n\tENAMETOOLONG    = syscall.Errno(0x24)\n\tENAVAIL         = syscall.Errno(0x77)\n\tENETDOWN        = syscall.Errno(0x64)\n\tENETRESET       = syscall.Errno(0x66)\n\tENETUNREACH     = syscall.Errno(0x65)\n\tENOANO          = syscall.Errno(0x37)\n\tENOBUFS         = syscall.Errno(0x69)\n\tENOCSI          = syscall.Errno(0x32)\n\tENODATA         = syscall.Errno(0x3d)\n\tENOKEY          = syscall.Errno(0x7e)\n\tENOLCK          = syscall.Errno(0x25)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x7b)\n\tENOMSG          = syscall.Errno(0x2a)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x5c)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x26)\n\tENOTCONN        = syscall.Errno(0x6b)\n\tENOTEMPTY       = syscall.Errno(0x27)\n\tENOTNAM         = syscall.Errno(0x76)\n\tENOTRECOVERABLE = syscall.Errno(0x83)\n\tENOTSOCK        = syscall.Errno(0x58)\n\tENOTSUP         = syscall.Errno(0x5f)\n\tENOTUNIQ        = syscall.Errno(0x4c)\n\tEOPNOTSUPP      = syscall.Errno(0x5f)\n\tEOVERFLOW       = syscall.Errno(0x4b)\n\tEOWNERDEAD      = syscall.Errno(0x82)\n\tEPFNOSUPPORT    = syscall.Errno(0x60)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x5d)\n\tEPROTOTYPE      = syscall.Errno(0x5b)\n\tEREMCHG         = syscall.Errno(0x4e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x79)\n\tERESTART        = syscall.Errno(0x55)\n\tERFKILL         = syscall.Errno(0x84)\n\tESHUTDOWN       = syscall.Errno(0x6c)\n\tESOCKTNOSUPPORT = syscall.Errno(0x5e)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x74)\n\tESTRPIPE        = syscall.Errno(0x56)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x6e)\n\tETOOMANYREFS    = syscall.Errno(0x6d)\n\tEUCLEAN         = syscall.Errno(0x75)\n\tEUNATCH         = syscall.Errno(0x31)\n\tEUSERS          = syscall.Errno(0x57)\n\tEXFULL          = syscall.Errno(0x36)\n)\n\n// Signals\nconst (\n\tSIGBUS    = syscall.Signal(0x7)\n\tSIGCHLD   = syscall.Signal(0x11)\n\tSIGCLD    = syscall.Signal(0x11)\n\tSIGCONT   = syscall.Signal(0x12)\n\tSIGIO     = syscall.Signal(0x1d)\n\tSIGPOLL   = syscall.Signal(0x1d)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x1e)\n\tSIGSTKFLT = syscall.Signal(0x10)\n\tSIGSTOP   = syscall.Signal(0x13)\n\tSIGSYS    = syscall.Signal(0x1f)\n\tSIGTSTP   = syscall.Signal(0x14)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x17)\n\tSIGUSR1   = syscall.Signal(0xa)\n\tSIGUSR2   = syscall.Signal(0xc)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{36, \"ENAMETOOLONG\", \"file name too long\"},\n\t{37, \"ENOLCK\", \"no locks available\"},\n\t{38, \"ENOSYS\", \"function not implemented\"},\n\t{39, \"ENOTEMPTY\", \"directory not empty\"},\n\t{40, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{42, \"ENOMSG\", \"no message of desired type\"},\n\t{43, \"EIDRM\", \"identifier removed\"},\n\t{44, \"ECHRNG\", \"channel number out of range\"},\n\t{45, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{46, \"EL3HLT\", \"level 3 halted\"},\n\t{47, \"EL3RST\", \"level 3 reset\"},\n\t{48, \"ELNRNG\", \"link number out of range\"},\n\t{49, \"EUNATCH\", \"protocol driver not attached\"},\n\t{50, \"ENOCSI\", \"no CSI structure available\"},\n\t{51, \"EL2HLT\", \"level 2 halted\"},\n\t{52, \"EBADE\", \"invalid exchange\"},\n\t{53, \"EBADR\", \"invalid request descriptor\"},\n\t{54, \"EXFULL\", \"exchange full\"},\n\t{55, \"ENOANO\", \"no anode\"},\n\t{56, \"EBADRQC\", \"invalid request code\"},\n\t{57, \"EBADSLT\", \"invalid slot\"},\n\t{58, \"EDEADLOCK\", \"file locking deadlock error\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{72, \"EMULTIHOP\", \"multihop attempted\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EBADMSG\", \"bad message\"},\n\t{75, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{76, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{77, \"EBADFD\", \"file descriptor in bad state\"},\n\t{78, \"EREMCHG\", \"remote address changed\"},\n\t{79, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{80, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{81, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{82, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{83, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{84, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{85, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{86, \"ESTRPIPE\", \"streams pipe error\"},\n\t{87, \"EUSERS\", \"too many users\"},\n\t{88, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{89, \"EDESTADDRREQ\", \"destination address required\"},\n\t{90, \"EMSGSIZE\", \"message too long\"},\n\t{91, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{92, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{93, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{94, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{95, \"ENOTSUP\", \"operation not supported\"},\n\t{96, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{97, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{98, \"EADDRINUSE\", \"address already in use\"},\n\t{99, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{100, \"ENETDOWN\", \"network is down\"},\n\t{101, \"ENETUNREACH\", \"network is unreachable\"},\n\t{102, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{103, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{104, \"ECONNRESET\", \"connection reset by peer\"},\n\t{105, \"ENOBUFS\", \"no buffer space available\"},\n\t{106, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{107, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{108, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{109, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{110, \"ETIMEDOUT\", \"connection timed out\"},\n\t{111, \"ECONNREFUSED\", \"connection refused\"},\n\t{112, \"EHOSTDOWN\", \"host is down\"},\n\t{113, \"EHOSTUNREACH\", \"no route to host\"},\n\t{114, \"EALREADY\", \"operation already in progress\"},\n\t{115, \"EINPROGRESS\", \"operation now in progress\"},\n\t{116, \"ESTALE\", \"stale file handle\"},\n\t{117, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{118, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{119, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{120, \"EISNAM\", \"is a named type file\"},\n\t{121, \"EREMOTEIO\", \"remote I/O error\"},\n\t{122, \"EDQUOT\", \"disk quota exceeded\"},\n\t{123, \"ENOMEDIUM\", \"no medium found\"},\n\t{124, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{125, \"ECANCELED\", \"operation canceled\"},\n\t{126, \"ENOKEY\", \"required key not available\"},\n\t{127, \"EKEYEXPIRED\", \"key has expired\"},\n\t{128, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{129, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{130, \"EOWNERDEAD\", \"owner died\"},\n\t{131, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{132, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{133, \"EHWPOISON\", \"memory page has hardware error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGBUS\", \"bus error\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGUSR1\", \"user defined signal 1\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGUSR2\", \"user defined signal 2\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGSTKFLT\", \"stack fault\"},\n\t{17, \"SIGCHLD\", \"child exited\"},\n\t{18, \"SIGCONT\", \"continued\"},\n\t{19, \"SIGSTOP\", \"stopped (signal)\"},\n\t{20, \"SIGTSTP\", \"stopped\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGURG\", \"urgent I/O condition\"},\n\t{24, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"file size limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window changed\"},\n\t{29, \"SIGIO\", \"I/O possible\"},\n\t{30, \"SIGPWR\", \"power failure\"},\n\t{31, \"SIGSYS\", \"bad system call\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/ppc64/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc64 && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/ppc64/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x17\n\tB115200                          = 0x11\n\tB1152000                         = 0x18\n\tB1500000                         = 0x19\n\tB2000000                         = 0x1a\n\tB230400                          = 0x12\n\tB2500000                         = 0x1b\n\tB3000000                         = 0x1c\n\tB3500000                         = 0x1d\n\tB4000000                         = 0x1e\n\tB460800                          = 0x13\n\tB500000                          = 0x14\n\tB57600                           = 0x10\n\tB576000                          = 0x15\n\tB921600                          = 0x16\n\tBLKALIGNOFF                      = 0x2000127a\n\tBLKBSZGET                        = 0x40081270\n\tBLKBSZSET                        = 0x80081271\n\tBLKDISCARD                       = 0x20001277\n\tBLKDISCARDZEROES                 = 0x2000127c\n\tBLKFLSBUF                        = 0x20001261\n\tBLKFRAGET                        = 0x20001265\n\tBLKFRASET                        = 0x20001264\n\tBLKGETDISKSEQ                    = 0x40081280\n\tBLKGETSIZE                       = 0x20001260\n\tBLKGETSIZE64                     = 0x40081272\n\tBLKIOMIN                         = 0x20001278\n\tBLKIOOPT                         = 0x20001279\n\tBLKPBSZGET                       = 0x2000127b\n\tBLKRAGET                         = 0x20001263\n\tBLKRASET                         = 0x20001262\n\tBLKROGET                         = 0x2000125e\n\tBLKROSET                         = 0x2000125d\n\tBLKROTATIONAL                    = 0x2000127e\n\tBLKRRPART                        = 0x2000125f\n\tBLKSECDISCARD                    = 0x2000127d\n\tBLKSECTGET                       = 0x20001267\n\tBLKSECTSET                       = 0x20001266\n\tBLKSSZGET                        = 0x20001268\n\tBLKZEROOUT                       = 0x2000127f\n\tBOTHER                           = 0x1f\n\tBS1                              = 0x8000\n\tBSDLY                            = 0x8000\n\tCBAUD                            = 0xff\n\tCBAUDEX                          = 0x0\n\tCIBAUD                           = 0xff0000\n\tCLOCAL                           = 0x8000\n\tCR1                              = 0x1000\n\tCR2                              = 0x2000\n\tCR3                              = 0x3000\n\tCRDLY                            = 0x3000\n\tCREAD                            = 0x800\n\tCS6                              = 0x100\n\tCS7                              = 0x200\n\tCS8                              = 0x300\n\tCSIZE                            = 0x300\n\tCSTOPB                           = 0x400\n\tDM_MPATH_PROBE_PATHS             = 0x2000fd12\n\tECCGETLAYOUT                     = 0x41484d11\n\tECCGETSTATS                      = 0x40104d12\n\tECHOCTL                          = 0x40\n\tECHOE                            = 0x2\n\tECHOK                            = 0x4\n\tECHOKE                           = 0x1\n\tECHONL                           = 0x10\n\tECHOPRT                          = 0x20\n\tEFD_CLOEXEC                      = 0x80000\n\tEFD_NONBLOCK                     = 0x800\n\tEPIOCGPARAMS                     = 0x40088a02\n\tEPIOCSPARAMS                     = 0x80088a01\n\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000000\n\tFF1                              = 0x4000\n\tFFDLY                            = 0x4000\n\tFICLONE                          = 0x80049409\n\tFICLONERANGE                     = 0x8020940d\n\tFLUSHO                           = 0x800000\n\tFS_IOC_ENABLE_VERITY             = 0x80806685\n\tFS_IOC_GETFLAGS                  = 0x40086601\n\tFS_IOC_GET_ENCRYPTION_NONCE      = 0x4010661b\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x800c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x80106614\n\tFS_IOC_SETFLAGS                  = 0x80086602\n\tFS_IOC_SET_ENCRYPTION_POLICY     = 0x400c6613\n\tF_GETLK                          = 0x5\n\tF_GETLK64                        = 0xc\n\tF_GETOWN                         = 0x9\n\tF_RDLCK                          = 0x0\n\tF_SETLK                          = 0x6\n\tF_SETLK64                        = 0xd\n\tF_SETLKW                         = 0x7\n\tF_SETLKW64                       = 0xe\n\tF_SETOWN                         = 0x8\n\tF_UNLCK                          = 0x2\n\tF_WRLCK                          = 0x1\n\tHIDIOCGRAWINFO                   = 0x40084803\n\tHIDIOCGRDESC                     = 0x50044802\n\tHIDIOCGRDESCSIZE                 = 0x40044801\n\tHIDIOCREVOKE                     = 0x8004480d\n\tHUPCL                            = 0x4000\n\tICANON                           = 0x100\n\tIEXTEN                           = 0x400\n\tIN_CLOEXEC                       = 0x80000\n\tIN_NONBLOCK                      = 0x800\n\tIOCTL_MEI_NOTIFY_GET             = 0x40044803\n\tIOCTL_MEI_NOTIFY_SET             = 0x80044802\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x200007b9\n\tIPV6_FLOWINFO_MASK               = 0xfffffff\n\tIPV6_FLOWLABEL_MASK              = 0xfffff\n\tISIG                             = 0x80\n\tIUCLC                            = 0x1000\n\tIXOFF                            = 0x400\n\tIXON                             = 0x200\n\tMAP_ANON                         = 0x20\n\tMAP_ANONYMOUS                    = 0x20\n\tMAP_DENYWRITE                    = 0x800\n\tMAP_EXECUTABLE                   = 0x1000\n\tMAP_GROWSDOWN                    = 0x100\n\tMAP_HUGETLB                      = 0x40000\n\tMAP_LOCKED                       = 0x80\n\tMAP_NONBLOCK                     = 0x10000\n\tMAP_NORESERVE                    = 0x40\n\tMAP_POPULATE                     = 0x8000\n\tMAP_STACK                        = 0x20000\n\tMAP_SYNC                         = 0x80000\n\tMCL_CURRENT                      = 0x2000\n\tMCL_FUTURE                       = 0x4000\n\tMCL_ONFAULT                      = 0x8000\n\tMEMERASE                         = 0x80084d02\n\tMEMERASE64                       = 0x80104d14\n\tMEMGETBADBLOCK                   = 0x80084d0b\n\tMEMGETINFO                       = 0x40204d01\n\tMEMGETOOBSEL                     = 0x40c84d0a\n\tMEMGETREGIONCOUNT                = 0x40044d07\n\tMEMISLOCKED                      = 0x40084d17\n\tMEMLOCK                          = 0x80084d05\n\tMEMREAD                          = 0xc0404d1a\n\tMEMREADOOB                       = 0xc0104d04\n\tMEMSETBADBLOCK                   = 0x80084d0c\n\tMEMUNLOCK                        = 0x80084d06\n\tMEMWRITEOOB                      = 0xc0104d03\n\tMTDFILEMODE                      = 0x20004d13\n\tNFDBITS                          = 0x40\n\tNL2                              = 0x200\n\tNL3                              = 0x300\n\tNLDLY                            = 0x300\n\tNOFLSH                           = 0x80000000\n\tNS_GET_MNTNS_ID                  = 0x4008b705\n\tNS_GET_NSTYPE                    = 0x2000b703\n\tNS_GET_OWNER_UID                 = 0x2000b704\n\tNS_GET_PARENT                    = 0x2000b702\n\tNS_GET_PID_FROM_PIDNS            = 0x4004b706\n\tNS_GET_PID_IN_PIDNS              = 0x4004b708\n\tNS_GET_TGID_FROM_PIDNS           = 0x4004b707\n\tNS_GET_TGID_IN_PIDNS             = 0x4004b709\n\tNS_GET_USERNS                    = 0x2000b701\n\tOLCUC                            = 0x4\n\tONLCR                            = 0x2\n\tOTPERASE                         = 0x800c4d19\n\tOTPGETREGIONCOUNT                = 0x80044d0e\n\tOTPGETREGIONINFO                 = 0x800c4d0f\n\tOTPLOCK                          = 0x400c4d10\n\tOTPSELECT                        = 0x40044d0d\n\tO_APPEND                         = 0x400\n\tO_ASYNC                          = 0x2000\n\tO_CLOEXEC                        = 0x80000\n\tO_CREAT                          = 0x40\n\tO_DIRECT                         = 0x20000\n\tO_DIRECTORY                      = 0x4000\n\tO_DSYNC                          = 0x1000\n\tO_EXCL                           = 0x80\n\tO_FSYNC                          = 0x101000\n\tO_LARGEFILE                      = 0x0\n\tO_NDELAY                         = 0x800\n\tO_NOATIME                        = 0x40000\n\tO_NOCTTY                         = 0x100\n\tO_NOFOLLOW                       = 0x8000\n\tO_NONBLOCK                       = 0x800\n\tO_PATH                           = 0x200000\n\tO_RSYNC                          = 0x101000\n\tO_SYNC                           = 0x101000\n\tO_TMPFILE                        = 0x404000\n\tO_TRUNC                          = 0x200\n\tPARENB                           = 0x1000\n\tPARODD                           = 0x2000\n\tPENDIN                           = 0x20000000\n\tPERF_EVENT_IOC_DISABLE           = 0x20002401\n\tPERF_EVENT_IOC_ENABLE            = 0x20002400\n\tPERF_EVENT_IOC_ID                = 0x40082407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8008240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT      = 0x80042409\n\tPERF_EVENT_IOC_PERIOD            = 0x80082404\n\tPERF_EVENT_IOC_QUERY_BPF         = 0xc008240a\n\tPERF_EVENT_IOC_REFRESH           = 0x20002402\n\tPERF_EVENT_IOC_RESET             = 0x20002403\n\tPERF_EVENT_IOC_SET_BPF           = 0x80042408\n\tPERF_EVENT_IOC_SET_FILTER        = 0x80082406\n\tPERF_EVENT_IOC_SET_OUTPUT        = 0x20002405\n\tPPPIOCATTACH                     = 0x8004743d\n\tPPPIOCATTCHAN                    = 0x80047438\n\tPPPIOCBRIDGECHAN                 = 0x80047435\n\tPPPIOCCONNECT                    = 0x8004743a\n\tPPPIOCDETACH                     = 0x8004743c\n\tPPPIOCDISCONN                    = 0x20007439\n\tPPPIOCGASYNCMAP                  = 0x40047458\n\tPPPIOCGCHAN                      = 0x40047437\n\tPPPIOCGDEBUG                     = 0x40047441\n\tPPPIOCGFLAGS                     = 0x4004745a\n\tPPPIOCGIDLE                      = 0x4010743f\n\tPPPIOCGIDLE32                    = 0x4008743f\n\tPPPIOCGIDLE64                    = 0x4010743f\n\tPPPIOCGL2TPSTATS                 = 0x40487436\n\tPPPIOCGMRU                       = 0x40047453\n\tPPPIOCGRASYNCMAP                 = 0x40047455\n\tPPPIOCGUNIT                      = 0x40047456\n\tPPPIOCGXASYNCMAP                 = 0x40207450\n\tPPPIOCSACTIVE                    = 0x80107446\n\tPPPIOCSASYNCMAP                  = 0x80047457\n\tPPPIOCSCOMPRESS                  = 0x8010744d\n\tPPPIOCSDEBUG                     = 0x80047440\n\tPPPIOCSFLAGS                     = 0x80047459\n\tPPPIOCSMAXCID                    = 0x80047451\n\tPPPIOCSMRRU                      = 0x8004743b\n\tPPPIOCSMRU                       = 0x80047452\n\tPPPIOCSNPMODE                    = 0x8008744b\n\tPPPIOCSPASS                      = 0x80107447\n\tPPPIOCSRASYNCMAP                 = 0x80047454\n\tPPPIOCSXASYNCMAP                 = 0x8020744f\n\tPPPIOCUNBRIDGECHAN               = 0x20007434\n\tPPPIOCXFERUNIT                   = 0x2000744e\n\tPROT_SAO                         = 0x10\n\tPR_SET_PTRACER_ANY               = 0xffffffffffffffff\n\tPTP_CLOCK_GETCAPS                = 0x40503d01\n\tPTP_CLOCK_GETCAPS2               = 0x40503d0a\n\tPTP_ENABLE_PPS                   = 0x80043d04\n\tPTP_ENABLE_PPS2                  = 0x80043d0d\n\tPTP_EXTTS_REQUEST                = 0x80103d02\n\tPTP_EXTTS_REQUEST2               = 0x80103d0b\n\tPTP_MASK_CLEAR_ALL               = 0x20003d13\n\tPTP_MASK_EN_SINGLE               = 0x80043d14\n\tPTP_PEROUT_REQUEST               = 0x80383d03\n\tPTP_PEROUT_REQUEST2              = 0x80383d0c\n\tPTP_PIN_SETFUNC                  = 0x80603d07\n\tPTP_PIN_SETFUNC2                 = 0x80603d10\n\tPTP_SYS_OFFSET                   = 0x83403d05\n\tPTP_SYS_OFFSET2                  = 0x83403d0e\n\tPTRACE_GETEVRREGS                = 0x14\n\tPTRACE_GETFPREGS                 = 0xe\n\tPTRACE_GETREGS64                 = 0x16\n\tPTRACE_GETVRREGS                 = 0x12\n\tPTRACE_GETVSRREGS                = 0x1b\n\tPTRACE_GET_DEBUGREG              = 0x19\n\tPTRACE_SETEVRREGS                = 0x15\n\tPTRACE_SETFPREGS                 = 0xf\n\tPTRACE_SETREGS64                 = 0x17\n\tPTRACE_SETVRREGS                 = 0x13\n\tPTRACE_SETVSRREGS                = 0x1c\n\tPTRACE_SET_DEBUGREG              = 0x1a\n\tPTRACE_SINGLEBLOCK               = 0x100\n\tPTRACE_SYSEMU                    = 0x1d\n\tPTRACE_SYSEMU_SINGLESTEP         = 0x1e\n\tPT_CCR                           = 0x26\n\tPT_CTR                           = 0x23\n\tPT_DAR                           = 0x29\n\tPT_DSCR                          = 0x2c\n\tPT_DSISR                         = 0x2a\n\tPT_FPR0                          = 0x30\n\tPT_FPSCR                         = 0x50\n\tPT_LNK                           = 0x24\n\tPT_MSR                           = 0x21\n\tPT_NIP                           = 0x20\n\tPT_ORIG_R3                       = 0x22\n\tPT_R0                            = 0x0\n\tPT_R1                            = 0x1\n\tPT_R10                           = 0xa\n\tPT_R11                           = 0xb\n\tPT_R12                           = 0xc\n\tPT_R13                           = 0xd\n\tPT_R14                           = 0xe\n\tPT_R15                           = 0xf\n\tPT_R16                           = 0x10\n\tPT_R17                           = 0x11\n\tPT_R18                           = 0x12\n\tPT_R19                           = 0x13\n\tPT_R2                            = 0x2\n\tPT_R20                           = 0x14\n\tPT_R21                           = 0x15\n\tPT_R22                           = 0x16\n\tPT_R23                           = 0x17\n\tPT_R24                           = 0x18\n\tPT_R25                           = 0x19\n\tPT_R26                           = 0x1a\n\tPT_R27                           = 0x1b\n\tPT_R28                           = 0x1c\n\tPT_R29                           = 0x1d\n\tPT_R3                            = 0x3\n\tPT_R30                           = 0x1e\n\tPT_R31                           = 0x1f\n\tPT_R4                            = 0x4\n\tPT_R5                            = 0x5\n\tPT_R6                            = 0x6\n\tPT_R7                            = 0x7\n\tPT_R8                            = 0x8\n\tPT_R9                            = 0x9\n\tPT_REGS_COUNT                    = 0x2c\n\tPT_RESULT                        = 0x2b\n\tPT_SOFTE                         = 0x27\n\tPT_TRAP                          = 0x28\n\tPT_VR0                           = 0x52\n\tPT_VRSAVE                        = 0x94\n\tPT_VSCR                          = 0x93\n\tPT_VSR0                          = 0x96\n\tPT_VSR31                         = 0xd4\n\tPT_XER                           = 0x25\n\tRLIMIT_AS                        = 0x9\n\tRLIMIT_MEMLOCK                   = 0x8\n\tRLIMIT_NOFILE                    = 0x7\n\tRLIMIT_NPROC                     = 0x6\n\tRLIMIT_RSS                       = 0x5\n\tRNDADDENTROPY                    = 0x80085203\n\tRNDADDTOENTCNT                   = 0x80045201\n\tRNDCLEARPOOL                     = 0x20005206\n\tRNDGETENTCNT                     = 0x40045200\n\tRNDGETPOOL                       = 0x40085202\n\tRNDRESEEDCRNG                    = 0x20005207\n\tRNDZAPENTCNT                     = 0x20005204\n\tRTC_AIE_OFF                      = 0x20007002\n\tRTC_AIE_ON                       = 0x20007001\n\tRTC_ALM_READ                     = 0x40247008\n\tRTC_ALM_SET                      = 0x80247007\n\tRTC_EPOCH_READ                   = 0x4008700d\n\tRTC_EPOCH_SET                    = 0x8008700e\n\tRTC_IRQP_READ                    = 0x4008700b\n\tRTC_IRQP_SET                     = 0x8008700c\n\tRTC_PARAM_GET                    = 0x80187013\n\tRTC_PARAM_SET                    = 0x80187014\n\tRTC_PIE_OFF                      = 0x20007006\n\tRTC_PIE_ON                       = 0x20007005\n\tRTC_PLL_GET                      = 0x40207011\n\tRTC_PLL_SET                      = 0x80207012\n\tRTC_RD_TIME                      = 0x40247009\n\tRTC_SET_TIME                     = 0x8024700a\n\tRTC_UIE_OFF                      = 0x20007004\n\tRTC_UIE_ON                       = 0x20007003\n\tRTC_VL_CLR                       = 0x20007014\n\tRTC_VL_READ                      = 0x40047013\n\tRTC_WIE_OFF                      = 0x20007010\n\tRTC_WIE_ON                       = 0x2000700f\n\tRTC_WKALM_RD                     = 0x40287010\n\tRTC_WKALM_SET                    = 0x8028700f\n\tSCM_DEVMEM_DMABUF                = 0x4f\n\tSCM_DEVMEM_LINEAR                = 0x4e\n\tSCM_TIMESTAMPING                 = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS       = 0x36\n\tSCM_TIMESTAMPING_PKTINFO         = 0x3a\n\tSCM_TIMESTAMPNS                  = 0x23\n\tSCM_TS_OPT_ID                    = 0x51\n\tSCM_TXTIME                       = 0x3d\n\tSCM_WIFI_STATUS                  = 0x29\n\tSECCOMP_IOCTL_NOTIF_ADDFD        = 0x80182103\n\tSECCOMP_IOCTL_NOTIF_ID_VALID     = 0x80082102\n\tSECCOMP_IOCTL_NOTIF_SET_FLAGS    = 0x80082104\n\tSFD_CLOEXEC                      = 0x80000\n\tSFD_NONBLOCK                     = 0x800\n\tSIOCATMARK                       = 0x8905\n\tSIOCGPGRP                        = 0x8904\n\tSIOCGSTAMPNS_NEW                 = 0x40108907\n\tSIOCGSTAMP_NEW                   = 0x40108906\n\tSIOCINQ                          = 0x4004667f\n\tSIOCOUTQ                         = 0x40047473\n\tSIOCSPGRP                        = 0x8902\n\tSOCK_CLOEXEC                     = 0x80000\n\tSOCK_DGRAM                       = 0x2\n\tSOCK_NONBLOCK                    = 0x800\n\tSOCK_STREAM                      = 0x1\n\tSOL_SOCKET                       = 0x1\n\tSO_ACCEPTCONN                    = 0x1e\n\tSO_ATTACH_BPF                    = 0x32\n\tSO_ATTACH_REUSEPORT_CBPF         = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF         = 0x34\n\tSO_BINDTODEVICE                  = 0x19\n\tSO_BINDTOIFINDEX                 = 0x3e\n\tSO_BPF_EXTENSIONS                = 0x30\n\tSO_BROADCAST                     = 0x6\n\tSO_BSDCOMPAT                     = 0xe\n\tSO_BUF_LOCK                      = 0x48\n\tSO_BUSY_POLL                     = 0x2e\n\tSO_BUSY_POLL_BUDGET              = 0x46\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\n\tSO_DEVMEM_DMABUF                 = 0x4f\n\tSO_DEVMEM_DONTNEED               = 0x50\n\tSO_DEVMEM_LINEAR                 = 0x4e\n\tSO_DOMAIN                        = 0x27\n\tSO_DONTROUTE                     = 0x5\n\tSO_ERROR                         = 0x4\n\tSO_INCOMING_CPU                  = 0x31\n\tSO_INCOMING_NAPI_ID              = 0x38\n\tSO_KEEPALIVE                     = 0x9\n\tSO_LINGER                        = 0xd\n\tSO_LOCK_FILTER                   = 0x2c\n\tSO_MARK                          = 0x24\n\tSO_MAX_PACING_RATE               = 0x2f\n\tSO_MEMINFO                       = 0x37\n\tSO_NETNS_COOKIE                  = 0x47\n\tSO_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0xa\n\tSO_PASSCRED                      = 0x14\n\tSO_PASSPIDFD                     = 0x4c\n\tSO_PASSRIGHTS                    = 0x53\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x15\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERPIDFD                     = 0x4d\n\tSO_PEERSEC                       = 0x1f\n\tSO_PREFER_BUSY_POLL              = 0x45\n\tSO_PROTOCOL                      = 0x26\n\tSO_RCVBUF                        = 0x8\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x10\n\tSO_RCVMARK                       = 0x4b\n\tSO_RCVPRIORITY                   = 0x52\n\tSO_RCVTIMEO                      = 0x12\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x12\n\tSO_RESERVE_MEM                   = 0x49\n\tSO_REUSEADDR                     = 0x2\n\tSO_REUSEPORT                     = 0xf\n\tSO_RXQ_OVFL                      = 0x28\n\tSO_SECURITY_AUTHENTICATION       = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK   = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT = 0x17\n\tSO_SELECT_ERR_QUEUE              = 0x2d\n\tSO_SNDBUF                        = 0x7\n\tSO_SNDBUFFORCE                   = 0x20\n\tSO_SNDLOWAT                      = 0x11\n\tSO_SNDTIMEO                      = 0x13\n\tSO_SNDTIMEO_NEW                  = 0x43\n\tSO_SNDTIMEO_OLD                  = 0x13\n\tSO_TIMESTAMPING                  = 0x25\n\tSO_TIMESTAMPING_NEW              = 0x41\n\tSO_TIMESTAMPING_OLD              = 0x25\n\tSO_TIMESTAMPNS                   = 0x23\n\tSO_TIMESTAMPNS_NEW               = 0x40\n\tSO_TIMESTAMPNS_OLD               = 0x23\n\tSO_TIMESTAMP_NEW                 = 0x3f\n\tSO_TXREHASH                      = 0x4a\n\tSO_TXTIME                        = 0x3d\n\tSO_TYPE                          = 0x3\n\tSO_WIFI_STATUS                   = 0x29\n\tSO_ZEROCOPY                      = 0x3c\n\tTAB1                             = 0x400\n\tTAB2                             = 0x800\n\tTAB3                             = 0xc00\n\tTABDLY                           = 0xc00\n\tTCFLSH                           = 0x2000741f\n\tTCGETA                           = 0x40147417\n\tTCGETS                           = 0x402c7413\n\tTCSAFLUSH                        = 0x2\n\tTCSBRK                           = 0x2000741d\n\tTCSBRKP                          = 0x5425\n\tTCSETA                           = 0x80147418\n\tTCSETAF                          = 0x8014741c\n\tTCSETAW                          = 0x80147419\n\tTCSETS                           = 0x802c7414\n\tTCSETSF                          = 0x802c7416\n\tTCSETSW                          = 0x802c7415\n\tTCXONC                           = 0x2000741e\n\tTFD_CLOEXEC                      = 0x80000\n\tTFD_NONBLOCK                     = 0x800\n\tTIOCCBRK                         = 0x5428\n\tTIOCCONS                         = 0x541d\n\tTIOCEXCL                         = 0x540c\n\tTIOCGDEV                         = 0x40045432\n\tTIOCGETC                         = 0x40067412\n\tTIOCGETD                         = 0x5424\n\tTIOCGETP                         = 0x40067408\n\tTIOCGEXCL                        = 0x40045440\n\tTIOCGICOUNT                      = 0x545d\n\tTIOCGISO7816                     = 0x40285442\n\tTIOCGLCKTRMIOS                   = 0x5456\n\tTIOCGLTC                         = 0x40067474\n\tTIOCGPGRP                        = 0x40047477\n\tTIOCGPKT                         = 0x40045438\n\tTIOCGPTLCK                       = 0x40045439\n\tTIOCGPTN                         = 0x40045430\n\tTIOCGPTPEER                      = 0x20005441\n\tTIOCGRS485                       = 0x542e\n\tTIOCGSERIAL                      = 0x541e\n\tTIOCGSID                         = 0x5429\n\tTIOCGSOFTCAR                     = 0x5419\n\tTIOCGWINSZ                       = 0x40087468\n\tTIOCINQ                          = 0x4004667f\n\tTIOCLINUX                        = 0x541c\n\tTIOCMBIC                         = 0x5417\n\tTIOCMBIS                         = 0x5416\n\tTIOCMGET                         = 0x5415\n\tTIOCMIWAIT                       = 0x545c\n\tTIOCMSET                         = 0x5418\n\tTIOCM_CAR                        = 0x40\n\tTIOCM_CD                         = 0x40\n\tTIOCM_CTS                        = 0x20\n\tTIOCM_DSR                        = 0x100\n\tTIOCM_LOOP                       = 0x8000\n\tTIOCM_OUT1                       = 0x2000\n\tTIOCM_OUT2                       = 0x4000\n\tTIOCM_RI                         = 0x80\n\tTIOCM_RNG                        = 0x80\n\tTIOCM_SR                         = 0x10\n\tTIOCM_ST                         = 0x8\n\tTIOCNOTTY                        = 0x5422\n\tTIOCNXCL                         = 0x540d\n\tTIOCOUTQ                         = 0x40047473\n\tTIOCPKT                          = 0x5420\n\tTIOCSBRK                         = 0x5427\n\tTIOCSCTTY                        = 0x540e\n\tTIOCSERCONFIG                    = 0x5453\n\tTIOCSERGETLSR                    = 0x5459\n\tTIOCSERGETMULTI                  = 0x545a\n\tTIOCSERGSTRUCT                   = 0x5458\n\tTIOCSERGWILD                     = 0x5454\n\tTIOCSERSETMULTI                  = 0x545b\n\tTIOCSERSWILD                     = 0x5455\n\tTIOCSER_TEMT                     = 0x1\n\tTIOCSETC                         = 0x80067411\n\tTIOCSETD                         = 0x5423\n\tTIOCSETN                         = 0x8006740a\n\tTIOCSETP                         = 0x80067409\n\tTIOCSIG                          = 0x80045436\n\tTIOCSISO7816                     = 0xc0285443\n\tTIOCSLCKTRMIOS                   = 0x5457\n\tTIOCSLTC                         = 0x80067475\n\tTIOCSPGRP                        = 0x80047476\n\tTIOCSPTLCK                       = 0x80045431\n\tTIOCSRS485                       = 0x542f\n\tTIOCSSERIAL                      = 0x541f\n\tTIOCSSOFTCAR                     = 0x541a\n\tTIOCSTART                        = 0x2000746e\n\tTIOCSTI                          = 0x5412\n\tTIOCSTOP                         = 0x2000746f\n\tTIOCSWINSZ                       = 0x80087467\n\tTIOCVHANGUP                      = 0x5437\n\tTOSTOP                           = 0x400000\n\tTUNATTACHFILTER                  = 0x801054d5\n\tTUNDETACHFILTER                  = 0x801054d6\n\tTUNGETDEVNETNS                   = 0x200054e3\n\tTUNGETFEATURES                   = 0x400454cf\n\tTUNGETFILTER                     = 0x401054db\n\tTUNGETIFF                        = 0x400454d2\n\tTUNGETSNDBUF                     = 0x400454d3\n\tTUNGETVNETBE                     = 0x400454df\n\tTUNGETVNETHDRSZ                  = 0x400454d7\n\tTUNGETVNETLE                     = 0x400454dd\n\tTUNSETCARRIER                    = 0x800454e2\n\tTUNSETDEBUG                      = 0x800454c9\n\tTUNSETFILTEREBPF                 = 0x400454e1\n\tTUNSETGROUP                      = 0x800454ce\n\tTUNSETIFF                        = 0x800454ca\n\tTUNSETIFINDEX                    = 0x800454da\n\tTUNSETLINK                       = 0x800454cd\n\tTUNSETNOCSUM                     = 0x800454c8\n\tTUNSETOFFLOAD                    = 0x800454d0\n\tTUNSETOWNER                      = 0x800454cc\n\tTUNSETPERSIST                    = 0x800454cb\n\tTUNSETQUEUE                      = 0x800454d9\n\tTUNSETSNDBUF                     = 0x800454d4\n\tTUNSETSTEERINGEBPF               = 0x400454e0\n\tTUNSETTXFILTER                   = 0x800454d1\n\tTUNSETVNETBE                     = 0x800454de\n\tTUNSETVNETHDRSZ                  = 0x800454d8\n\tTUNSETVNETLE                     = 0x800454dc\n\tUBI_IOCATT                       = 0x80186f40\n\tUBI_IOCDET                       = 0x80046f41\n\tUBI_IOCEBCH                      = 0x80044f02\n\tUBI_IOCEBER                      = 0x80044f01\n\tUBI_IOCEBISMAP                   = 0x40044f05\n\tUBI_IOCEBMAP                     = 0x80084f03\n\tUBI_IOCEBUNMAP                   = 0x80044f04\n\tUBI_IOCMKVOL                     = 0x80986f00\n\tUBI_IOCRMVOL                     = 0x80046f01\n\tUBI_IOCRNVOL                     = 0x91106f03\n\tUBI_IOCRPEB                      = 0x80046f04\n\tUBI_IOCRSVOL                     = 0x800c6f02\n\tUBI_IOCSETVOLPROP                = 0x80104f06\n\tUBI_IOCSPEB                      = 0x80046f05\n\tUBI_IOCVOLCRBLK                  = 0x80804f07\n\tUBI_IOCVOLRMBLK                  = 0x20004f08\n\tUBI_IOCVOLUP                     = 0x80084f00\n\tVDISCARD                         = 0x10\n\tVEOF                             = 0x4\n\tVEOL                             = 0x6\n\tVEOL2                            = 0x8\n\tVMIN                             = 0x5\n\tVREPRINT                         = 0xb\n\tVSTART                           = 0xd\n\tVSTOP                            = 0xe\n\tVSUSP                            = 0xc\n\tVSWTC                            = 0x9\n\tVT1                              = 0x10000\n\tVTDLY                            = 0x10000\n\tVTIME                            = 0x7\n\tVWERASE                          = 0xa\n\tWDIOC_GETBOOTSTATUS              = 0x40045702\n\tWDIOC_GETPRETIMEOUT              = 0x40045709\n\tWDIOC_GETSTATUS                  = 0x40045701\n\tWDIOC_GETSUPPORT                 = 0x40285700\n\tWDIOC_GETTEMP                    = 0x40045703\n\tWDIOC_GETTIMELEFT                = 0x4004570a\n\tWDIOC_GETTIMEOUT                 = 0x40045707\n\tWDIOC_KEEPALIVE                  = 0x40045705\n\tWDIOC_SETOPTIONS                 = 0x40045704\n\tWORDSIZE                         = 0x40\n\tXCASE                            = 0x4000\n\tXTABS                            = 0xc00\n\t_HIDIOCGRAWNAME                  = 0x40804804\n\t_HIDIOCGRAWPHYS                  = 0x40404805\n\t_HIDIOCGRAWUNIQ                  = 0x40404808\n)\n\n// Errors\nconst (\n\tEADDRINUSE      = syscall.Errno(0x62)\n\tEADDRNOTAVAIL   = syscall.Errno(0x63)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x61)\n\tEALREADY        = syscall.Errno(0x72)\n\tEBADE           = syscall.Errno(0x34)\n\tEBADFD          = syscall.Errno(0x4d)\n\tEBADMSG         = syscall.Errno(0x4a)\n\tEBADR           = syscall.Errno(0x35)\n\tEBADRQC         = syscall.Errno(0x38)\n\tEBADSLT         = syscall.Errno(0x39)\n\tEBFONT          = syscall.Errno(0x3b)\n\tECANCELED       = syscall.Errno(0x7d)\n\tECHRNG          = syscall.Errno(0x2c)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x67)\n\tECONNREFUSED    = syscall.Errno(0x6f)\n\tECONNRESET      = syscall.Errno(0x68)\n\tEDEADLK         = syscall.Errno(0x23)\n\tEDEADLOCK       = syscall.Errno(0x3a)\n\tEDESTADDRREQ    = syscall.Errno(0x59)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x7a)\n\tEHOSTDOWN       = syscall.Errno(0x70)\n\tEHOSTUNREACH    = syscall.Errno(0x71)\n\tEHWPOISON       = syscall.Errno(0x85)\n\tEIDRM           = syscall.Errno(0x2b)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x73)\n\tEISCONN         = syscall.Errno(0x6a)\n\tEISNAM          = syscall.Errno(0x78)\n\tEKEYEXPIRED     = syscall.Errno(0x7f)\n\tEKEYREJECTED    = syscall.Errno(0x81)\n\tEKEYREVOKED     = syscall.Errno(0x80)\n\tEL2HLT          = syscall.Errno(0x33)\n\tEL2NSYNC        = syscall.Errno(0x2d)\n\tEL3HLT          = syscall.Errno(0x2e)\n\tEL3RST          = syscall.Errno(0x2f)\n\tELIBACC         = syscall.Errno(0x4f)\n\tELIBBAD         = syscall.Errno(0x50)\n\tELIBEXEC        = syscall.Errno(0x53)\n\tELIBMAX         = syscall.Errno(0x52)\n\tELIBSCN         = syscall.Errno(0x51)\n\tELNRNG          = syscall.Errno(0x30)\n\tELOOP           = syscall.Errno(0x28)\n\tEMEDIUMTYPE     = syscall.Errno(0x7c)\n\tEMSGSIZE        = syscall.Errno(0x5a)\n\tEMULTIHOP       = syscall.Errno(0x48)\n\tENAMETOOLONG    = syscall.Errno(0x24)\n\tENAVAIL         = syscall.Errno(0x77)\n\tENETDOWN        = syscall.Errno(0x64)\n\tENETRESET       = syscall.Errno(0x66)\n\tENETUNREACH     = syscall.Errno(0x65)\n\tENOANO          = syscall.Errno(0x37)\n\tENOBUFS         = syscall.Errno(0x69)\n\tENOCSI          = syscall.Errno(0x32)\n\tENODATA         = syscall.Errno(0x3d)\n\tENOKEY          = syscall.Errno(0x7e)\n\tENOLCK          = syscall.Errno(0x25)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x7b)\n\tENOMSG          = syscall.Errno(0x2a)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x5c)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x26)\n\tENOTCONN        = syscall.Errno(0x6b)\n\tENOTEMPTY       = syscall.Errno(0x27)\n\tENOTNAM         = syscall.Errno(0x76)\n\tENOTRECOVERABLE = syscall.Errno(0x83)\n\tENOTSOCK        = syscall.Errno(0x58)\n\tENOTSUP         = syscall.Errno(0x5f)\n\tENOTUNIQ        = syscall.Errno(0x4c)\n\tEOPNOTSUPP      = syscall.Errno(0x5f)\n\tEOVERFLOW       = syscall.Errno(0x4b)\n\tEOWNERDEAD      = syscall.Errno(0x82)\n\tEPFNOSUPPORT    = syscall.Errno(0x60)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x5d)\n\tEPROTOTYPE      = syscall.Errno(0x5b)\n\tEREMCHG         = syscall.Errno(0x4e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x79)\n\tERESTART        = syscall.Errno(0x55)\n\tERFKILL         = syscall.Errno(0x84)\n\tESHUTDOWN       = syscall.Errno(0x6c)\n\tESOCKTNOSUPPORT = syscall.Errno(0x5e)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x74)\n\tESTRPIPE        = syscall.Errno(0x56)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x6e)\n\tETOOMANYREFS    = syscall.Errno(0x6d)\n\tEUCLEAN         = syscall.Errno(0x75)\n\tEUNATCH         = syscall.Errno(0x31)\n\tEUSERS          = syscall.Errno(0x57)\n\tEXFULL          = syscall.Errno(0x36)\n)\n\n// Signals\nconst (\n\tSIGBUS    = syscall.Signal(0x7)\n\tSIGCHLD   = syscall.Signal(0x11)\n\tSIGCLD    = syscall.Signal(0x11)\n\tSIGCONT   = syscall.Signal(0x12)\n\tSIGIO     = syscall.Signal(0x1d)\n\tSIGPOLL   = syscall.Signal(0x1d)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x1e)\n\tSIGSTKFLT = syscall.Signal(0x10)\n\tSIGSTOP   = syscall.Signal(0x13)\n\tSIGSYS    = syscall.Signal(0x1f)\n\tSIGTSTP   = syscall.Signal(0x14)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x17)\n\tSIGUSR1   = syscall.Signal(0xa)\n\tSIGUSR2   = syscall.Signal(0xc)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{36, \"ENAMETOOLONG\", \"file name too long\"},\n\t{37, \"ENOLCK\", \"no locks available\"},\n\t{38, \"ENOSYS\", \"function not implemented\"},\n\t{39, \"ENOTEMPTY\", \"directory not empty\"},\n\t{40, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{42, \"ENOMSG\", \"no message of desired type\"},\n\t{43, \"EIDRM\", \"identifier removed\"},\n\t{44, \"ECHRNG\", \"channel number out of range\"},\n\t{45, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{46, \"EL3HLT\", \"level 3 halted\"},\n\t{47, \"EL3RST\", \"level 3 reset\"},\n\t{48, \"ELNRNG\", \"link number out of range\"},\n\t{49, \"EUNATCH\", \"protocol driver not attached\"},\n\t{50, \"ENOCSI\", \"no CSI structure available\"},\n\t{51, \"EL2HLT\", \"level 2 halted\"},\n\t{52, \"EBADE\", \"invalid exchange\"},\n\t{53, \"EBADR\", \"invalid request descriptor\"},\n\t{54, \"EXFULL\", \"exchange full\"},\n\t{55, \"ENOANO\", \"no anode\"},\n\t{56, \"EBADRQC\", \"invalid request code\"},\n\t{57, \"EBADSLT\", \"invalid slot\"},\n\t{58, \"EDEADLOCK\", \"file locking deadlock error\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{72, \"EMULTIHOP\", \"multihop attempted\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EBADMSG\", \"bad message\"},\n\t{75, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{76, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{77, \"EBADFD\", \"file descriptor in bad state\"},\n\t{78, \"EREMCHG\", \"remote address changed\"},\n\t{79, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{80, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{81, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{82, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{83, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{84, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{85, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{86, \"ESTRPIPE\", \"streams pipe error\"},\n\t{87, \"EUSERS\", \"too many users\"},\n\t{88, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{89, \"EDESTADDRREQ\", \"destination address required\"},\n\t{90, \"EMSGSIZE\", \"message too long\"},\n\t{91, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{92, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{93, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{94, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{95, \"ENOTSUP\", \"operation not supported\"},\n\t{96, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{97, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{98, \"EADDRINUSE\", \"address already in use\"},\n\t{99, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{100, \"ENETDOWN\", \"network is down\"},\n\t{101, \"ENETUNREACH\", \"network is unreachable\"},\n\t{102, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{103, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{104, \"ECONNRESET\", \"connection reset by peer\"},\n\t{105, \"ENOBUFS\", \"no buffer space available\"},\n\t{106, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{107, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{108, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{109, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{110, \"ETIMEDOUT\", \"connection timed out\"},\n\t{111, \"ECONNREFUSED\", \"connection refused\"},\n\t{112, \"EHOSTDOWN\", \"host is down\"},\n\t{113, \"EHOSTUNREACH\", \"no route to host\"},\n\t{114, \"EALREADY\", \"operation already in progress\"},\n\t{115, \"EINPROGRESS\", \"operation now in progress\"},\n\t{116, \"ESTALE\", \"stale file handle\"},\n\t{117, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{118, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{119, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{120, \"EISNAM\", \"is a named type file\"},\n\t{121, \"EREMOTEIO\", \"remote I/O error\"},\n\t{122, \"EDQUOT\", \"disk quota exceeded\"},\n\t{123, \"ENOMEDIUM\", \"no medium found\"},\n\t{124, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{125, \"ECANCELED\", \"operation canceled\"},\n\t{126, \"ENOKEY\", \"required key not available\"},\n\t{127, \"EKEYEXPIRED\", \"key has expired\"},\n\t{128, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{129, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{130, \"EOWNERDEAD\", \"owner died\"},\n\t{131, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{132, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{133, \"EHWPOISON\", \"memory page has hardware error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGBUS\", \"bus error\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGUSR1\", \"user defined signal 1\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGUSR2\", \"user defined signal 2\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGSTKFLT\", \"stack fault\"},\n\t{17, \"SIGCHLD\", \"child exited\"},\n\t{18, \"SIGCONT\", \"continued\"},\n\t{19, \"SIGSTOP\", \"stopped (signal)\"},\n\t{20, \"SIGTSTP\", \"stopped\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGURG\", \"urgent I/O condition\"},\n\t{24, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"file size limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window changed\"},\n\t{29, \"SIGIO\", \"I/O possible\"},\n\t{30, \"SIGPWR\", \"power failure\"},\n\t{31, \"SIGSYS\", \"bad system call\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/ppc64le/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc64le && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/ppc64le/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x17\n\tB115200                          = 0x11\n\tB1152000                         = 0x18\n\tB1500000                         = 0x19\n\tB2000000                         = 0x1a\n\tB230400                          = 0x12\n\tB2500000                         = 0x1b\n\tB3000000                         = 0x1c\n\tB3500000                         = 0x1d\n\tB4000000                         = 0x1e\n\tB460800                          = 0x13\n\tB500000                          = 0x14\n\tB57600                           = 0x10\n\tB576000                          = 0x15\n\tB921600                          = 0x16\n\tBLKALIGNOFF                      = 0x2000127a\n\tBLKBSZGET                        = 0x40081270\n\tBLKBSZSET                        = 0x80081271\n\tBLKDISCARD                       = 0x20001277\n\tBLKDISCARDZEROES                 = 0x2000127c\n\tBLKFLSBUF                        = 0x20001261\n\tBLKFRAGET                        = 0x20001265\n\tBLKFRASET                        = 0x20001264\n\tBLKGETDISKSEQ                    = 0x40081280\n\tBLKGETSIZE                       = 0x20001260\n\tBLKGETSIZE64                     = 0x40081272\n\tBLKIOMIN                         = 0x20001278\n\tBLKIOOPT                         = 0x20001279\n\tBLKPBSZGET                       = 0x2000127b\n\tBLKRAGET                         = 0x20001263\n\tBLKRASET                         = 0x20001262\n\tBLKROGET                         = 0x2000125e\n\tBLKROSET                         = 0x2000125d\n\tBLKROTATIONAL                    = 0x2000127e\n\tBLKRRPART                        = 0x2000125f\n\tBLKSECDISCARD                    = 0x2000127d\n\tBLKSECTGET                       = 0x20001267\n\tBLKSECTSET                       = 0x20001266\n\tBLKSSZGET                        = 0x20001268\n\tBLKZEROOUT                       = 0x2000127f\n\tBOTHER                           = 0x1f\n\tBS1                              = 0x8000\n\tBSDLY                            = 0x8000\n\tCBAUD                            = 0xff\n\tCBAUDEX                          = 0x0\n\tCIBAUD                           = 0xff0000\n\tCLOCAL                           = 0x8000\n\tCR1                              = 0x1000\n\tCR2                              = 0x2000\n\tCR3                              = 0x3000\n\tCRDLY                            = 0x3000\n\tCREAD                            = 0x800\n\tCS6                              = 0x100\n\tCS7                              = 0x200\n\tCS8                              = 0x300\n\tCSIZE                            = 0x300\n\tCSTOPB                           = 0x400\n\tDM_MPATH_PROBE_PATHS             = 0x2000fd12\n\tECCGETLAYOUT                     = 0x41484d11\n\tECCGETSTATS                      = 0x40104d12\n\tECHOCTL                          = 0x40\n\tECHOE                            = 0x2\n\tECHOK                            = 0x4\n\tECHOKE                           = 0x1\n\tECHONL                           = 0x10\n\tECHOPRT                          = 0x20\n\tEFD_CLOEXEC                      = 0x80000\n\tEFD_NONBLOCK                     = 0x800\n\tEPIOCGPARAMS                     = 0x40088a02\n\tEPIOCSPARAMS                     = 0x80088a01\n\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000000\n\tFF1                              = 0x4000\n\tFFDLY                            = 0x4000\n\tFICLONE                          = 0x80049409\n\tFICLONERANGE                     = 0x8020940d\n\tFLUSHO                           = 0x800000\n\tFS_IOC_ENABLE_VERITY             = 0x80806685\n\tFS_IOC_GETFLAGS                  = 0x40086601\n\tFS_IOC_GET_ENCRYPTION_NONCE      = 0x4010661b\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x800c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x80106614\n\tFS_IOC_SETFLAGS                  = 0x80086602\n\tFS_IOC_SET_ENCRYPTION_POLICY     = 0x400c6613\n\tF_GETLK                          = 0x5\n\tF_GETLK64                        = 0xc\n\tF_GETOWN                         = 0x9\n\tF_RDLCK                          = 0x0\n\tF_SETLK                          = 0x6\n\tF_SETLK64                        = 0xd\n\tF_SETLKW                         = 0x7\n\tF_SETLKW64                       = 0xe\n\tF_SETOWN                         = 0x8\n\tF_UNLCK                          = 0x2\n\tF_WRLCK                          = 0x1\n\tHIDIOCGRAWINFO                   = 0x40084803\n\tHIDIOCGRDESC                     = 0x50044802\n\tHIDIOCGRDESCSIZE                 = 0x40044801\n\tHIDIOCREVOKE                     = 0x8004480d\n\tHUPCL                            = 0x4000\n\tICANON                           = 0x100\n\tIEXTEN                           = 0x400\n\tIN_CLOEXEC                       = 0x80000\n\tIN_NONBLOCK                      = 0x800\n\tIOCTL_MEI_NOTIFY_GET             = 0x40044803\n\tIOCTL_MEI_NOTIFY_SET             = 0x80044802\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x200007b9\n\tIPV6_FLOWINFO_MASK               = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK              = 0xffff0f00\n\tISIG                             = 0x80\n\tIUCLC                            = 0x1000\n\tIXOFF                            = 0x400\n\tIXON                             = 0x200\n\tMAP_ANON                         = 0x20\n\tMAP_ANONYMOUS                    = 0x20\n\tMAP_DENYWRITE                    = 0x800\n\tMAP_EXECUTABLE                   = 0x1000\n\tMAP_GROWSDOWN                    = 0x100\n\tMAP_HUGETLB                      = 0x40000\n\tMAP_LOCKED                       = 0x80\n\tMAP_NONBLOCK                     = 0x10000\n\tMAP_NORESERVE                    = 0x40\n\tMAP_POPULATE                     = 0x8000\n\tMAP_STACK                        = 0x20000\n\tMAP_SYNC                         = 0x80000\n\tMCL_CURRENT                      = 0x2000\n\tMCL_FUTURE                       = 0x4000\n\tMCL_ONFAULT                      = 0x8000\n\tMEMERASE                         = 0x80084d02\n\tMEMERASE64                       = 0x80104d14\n\tMEMGETBADBLOCK                   = 0x80084d0b\n\tMEMGETINFO                       = 0x40204d01\n\tMEMGETOOBSEL                     = 0x40c84d0a\n\tMEMGETREGIONCOUNT                = 0x40044d07\n\tMEMISLOCKED                      = 0x40084d17\n\tMEMLOCK                          = 0x80084d05\n\tMEMREAD                          = 0xc0404d1a\n\tMEMREADOOB                       = 0xc0104d04\n\tMEMSETBADBLOCK                   = 0x80084d0c\n\tMEMUNLOCK                        = 0x80084d06\n\tMEMWRITEOOB                      = 0xc0104d03\n\tMTDFILEMODE                      = 0x20004d13\n\tNFDBITS                          = 0x40\n\tNL2                              = 0x200\n\tNL3                              = 0x300\n\tNLDLY                            = 0x300\n\tNOFLSH                           = 0x80000000\n\tNS_GET_MNTNS_ID                  = 0x4008b705\n\tNS_GET_NSTYPE                    = 0x2000b703\n\tNS_GET_OWNER_UID                 = 0x2000b704\n\tNS_GET_PARENT                    = 0x2000b702\n\tNS_GET_PID_FROM_PIDNS            = 0x4004b706\n\tNS_GET_PID_IN_PIDNS              = 0x4004b708\n\tNS_GET_TGID_FROM_PIDNS           = 0x4004b707\n\tNS_GET_TGID_IN_PIDNS             = 0x4004b709\n\tNS_GET_USERNS                    = 0x2000b701\n\tOLCUC                            = 0x4\n\tONLCR                            = 0x2\n\tOTPERASE                         = 0x800c4d19\n\tOTPGETREGIONCOUNT                = 0x80044d0e\n\tOTPGETREGIONINFO                 = 0x800c4d0f\n\tOTPLOCK                          = 0x400c4d10\n\tOTPSELECT                        = 0x40044d0d\n\tO_APPEND                         = 0x400\n\tO_ASYNC                          = 0x2000\n\tO_CLOEXEC                        = 0x80000\n\tO_CREAT                          = 0x40\n\tO_DIRECT                         = 0x20000\n\tO_DIRECTORY                      = 0x4000\n\tO_DSYNC                          = 0x1000\n\tO_EXCL                           = 0x80\n\tO_FSYNC                          = 0x101000\n\tO_LARGEFILE                      = 0x0\n\tO_NDELAY                         = 0x800\n\tO_NOATIME                        = 0x40000\n\tO_NOCTTY                         = 0x100\n\tO_NOFOLLOW                       = 0x8000\n\tO_NONBLOCK                       = 0x800\n\tO_PATH                           = 0x200000\n\tO_RSYNC                          = 0x101000\n\tO_SYNC                           = 0x101000\n\tO_TMPFILE                        = 0x404000\n\tO_TRUNC                          = 0x200\n\tPARENB                           = 0x1000\n\tPARODD                           = 0x2000\n\tPENDIN                           = 0x20000000\n\tPERF_EVENT_IOC_DISABLE           = 0x20002401\n\tPERF_EVENT_IOC_ENABLE            = 0x20002400\n\tPERF_EVENT_IOC_ID                = 0x40082407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8008240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT      = 0x80042409\n\tPERF_EVENT_IOC_PERIOD            = 0x80082404\n\tPERF_EVENT_IOC_QUERY_BPF         = 0xc008240a\n\tPERF_EVENT_IOC_REFRESH           = 0x20002402\n\tPERF_EVENT_IOC_RESET             = 0x20002403\n\tPERF_EVENT_IOC_SET_BPF           = 0x80042408\n\tPERF_EVENT_IOC_SET_FILTER        = 0x80082406\n\tPERF_EVENT_IOC_SET_OUTPUT        = 0x20002405\n\tPPPIOCATTACH                     = 0x8004743d\n\tPPPIOCATTCHAN                    = 0x80047438\n\tPPPIOCBRIDGECHAN                 = 0x80047435\n\tPPPIOCCONNECT                    = 0x8004743a\n\tPPPIOCDETACH                     = 0x8004743c\n\tPPPIOCDISCONN                    = 0x20007439\n\tPPPIOCGASYNCMAP                  = 0x40047458\n\tPPPIOCGCHAN                      = 0x40047437\n\tPPPIOCGDEBUG                     = 0x40047441\n\tPPPIOCGFLAGS                     = 0x4004745a\n\tPPPIOCGIDLE                      = 0x4010743f\n\tPPPIOCGIDLE32                    = 0x4008743f\n\tPPPIOCGIDLE64                    = 0x4010743f\n\tPPPIOCGL2TPSTATS                 = 0x40487436\n\tPPPIOCGMRU                       = 0x40047453\n\tPPPIOCGRASYNCMAP                 = 0x40047455\n\tPPPIOCGUNIT                      = 0x40047456\n\tPPPIOCGXASYNCMAP                 = 0x40207450\n\tPPPIOCSACTIVE                    = 0x80107446\n\tPPPIOCSASYNCMAP                  = 0x80047457\n\tPPPIOCSCOMPRESS                  = 0x8010744d\n\tPPPIOCSDEBUG                     = 0x80047440\n\tPPPIOCSFLAGS                     = 0x80047459\n\tPPPIOCSMAXCID                    = 0x80047451\n\tPPPIOCSMRRU                      = 0x8004743b\n\tPPPIOCSMRU                       = 0x80047452\n\tPPPIOCSNPMODE                    = 0x8008744b\n\tPPPIOCSPASS                      = 0x80107447\n\tPPPIOCSRASYNCMAP                 = 0x80047454\n\tPPPIOCSXASYNCMAP                 = 0x8020744f\n\tPPPIOCUNBRIDGECHAN               = 0x20007434\n\tPPPIOCXFERUNIT                   = 0x2000744e\n\tPROT_SAO                         = 0x10\n\tPR_SET_PTRACER_ANY               = 0xffffffffffffffff\n\tPTP_CLOCK_GETCAPS                = 0x40503d01\n\tPTP_CLOCK_GETCAPS2               = 0x40503d0a\n\tPTP_ENABLE_PPS                   = 0x80043d04\n\tPTP_ENABLE_PPS2                  = 0x80043d0d\n\tPTP_EXTTS_REQUEST                = 0x80103d02\n\tPTP_EXTTS_REQUEST2               = 0x80103d0b\n\tPTP_MASK_CLEAR_ALL               = 0x20003d13\n\tPTP_MASK_EN_SINGLE               = 0x80043d14\n\tPTP_PEROUT_REQUEST               = 0x80383d03\n\tPTP_PEROUT_REQUEST2              = 0x80383d0c\n\tPTP_PIN_SETFUNC                  = 0x80603d07\n\tPTP_PIN_SETFUNC2                 = 0x80603d10\n\tPTP_SYS_OFFSET                   = 0x83403d05\n\tPTP_SYS_OFFSET2                  = 0x83403d0e\n\tPTRACE_GETEVRREGS                = 0x14\n\tPTRACE_GETFPREGS                 = 0xe\n\tPTRACE_GETREGS64                 = 0x16\n\tPTRACE_GETVRREGS                 = 0x12\n\tPTRACE_GETVSRREGS                = 0x1b\n\tPTRACE_GET_DEBUGREG              = 0x19\n\tPTRACE_SETEVRREGS                = 0x15\n\tPTRACE_SETFPREGS                 = 0xf\n\tPTRACE_SETREGS64                 = 0x17\n\tPTRACE_SETVRREGS                 = 0x13\n\tPTRACE_SETVSRREGS                = 0x1c\n\tPTRACE_SET_DEBUGREG              = 0x1a\n\tPTRACE_SINGLEBLOCK               = 0x100\n\tPTRACE_SYSEMU                    = 0x1d\n\tPTRACE_SYSEMU_SINGLESTEP         = 0x1e\n\tPT_CCR                           = 0x26\n\tPT_CTR                           = 0x23\n\tPT_DAR                           = 0x29\n\tPT_DSCR                          = 0x2c\n\tPT_DSISR                         = 0x2a\n\tPT_FPR0                          = 0x30\n\tPT_FPSCR                         = 0x50\n\tPT_LNK                           = 0x24\n\tPT_MSR                           = 0x21\n\tPT_NIP                           = 0x20\n\tPT_ORIG_R3                       = 0x22\n\tPT_R0                            = 0x0\n\tPT_R1                            = 0x1\n\tPT_R10                           = 0xa\n\tPT_R11                           = 0xb\n\tPT_R12                           = 0xc\n\tPT_R13                           = 0xd\n\tPT_R14                           = 0xe\n\tPT_R15                           = 0xf\n\tPT_R16                           = 0x10\n\tPT_R17                           = 0x11\n\tPT_R18                           = 0x12\n\tPT_R19                           = 0x13\n\tPT_R2                            = 0x2\n\tPT_R20                           = 0x14\n\tPT_R21                           = 0x15\n\tPT_R22                           = 0x16\n\tPT_R23                           = 0x17\n\tPT_R24                           = 0x18\n\tPT_R25                           = 0x19\n\tPT_R26                           = 0x1a\n\tPT_R27                           = 0x1b\n\tPT_R28                           = 0x1c\n\tPT_R29                           = 0x1d\n\tPT_R3                            = 0x3\n\tPT_R30                           = 0x1e\n\tPT_R31                           = 0x1f\n\tPT_R4                            = 0x4\n\tPT_R5                            = 0x5\n\tPT_R6                            = 0x6\n\tPT_R7                            = 0x7\n\tPT_R8                            = 0x8\n\tPT_R9                            = 0x9\n\tPT_REGS_COUNT                    = 0x2c\n\tPT_RESULT                        = 0x2b\n\tPT_SOFTE                         = 0x27\n\tPT_TRAP                          = 0x28\n\tPT_VR0                           = 0x52\n\tPT_VRSAVE                        = 0x94\n\tPT_VSCR                          = 0x93\n\tPT_VSR0                          = 0x96\n\tPT_VSR31                         = 0xd4\n\tPT_XER                           = 0x25\n\tRLIMIT_AS                        = 0x9\n\tRLIMIT_MEMLOCK                   = 0x8\n\tRLIMIT_NOFILE                    = 0x7\n\tRLIMIT_NPROC                     = 0x6\n\tRLIMIT_RSS                       = 0x5\n\tRNDADDENTROPY                    = 0x80085203\n\tRNDADDTOENTCNT                   = 0x80045201\n\tRNDCLEARPOOL                     = 0x20005206\n\tRNDGETENTCNT                     = 0x40045200\n\tRNDGETPOOL                       = 0x40085202\n\tRNDRESEEDCRNG                    = 0x20005207\n\tRNDZAPENTCNT                     = 0x20005204\n\tRTC_AIE_OFF                      = 0x20007002\n\tRTC_AIE_ON                       = 0x20007001\n\tRTC_ALM_READ                     = 0x40247008\n\tRTC_ALM_SET                      = 0x80247007\n\tRTC_EPOCH_READ                   = 0x4008700d\n\tRTC_EPOCH_SET                    = 0x8008700e\n\tRTC_IRQP_READ                    = 0x4008700b\n\tRTC_IRQP_SET                     = 0x8008700c\n\tRTC_PARAM_GET                    = 0x80187013\n\tRTC_PARAM_SET                    = 0x80187014\n\tRTC_PIE_OFF                      = 0x20007006\n\tRTC_PIE_ON                       = 0x20007005\n\tRTC_PLL_GET                      = 0x40207011\n\tRTC_PLL_SET                      = 0x80207012\n\tRTC_RD_TIME                      = 0x40247009\n\tRTC_SET_TIME                     = 0x8024700a\n\tRTC_UIE_OFF                      = 0x20007004\n\tRTC_UIE_ON                       = 0x20007003\n\tRTC_VL_CLR                       = 0x20007014\n\tRTC_VL_READ                      = 0x40047013\n\tRTC_WIE_OFF                      = 0x20007010\n\tRTC_WIE_ON                       = 0x2000700f\n\tRTC_WKALM_RD                     = 0x40287010\n\tRTC_WKALM_SET                    = 0x8028700f\n\tSCM_DEVMEM_DMABUF                = 0x4f\n\tSCM_DEVMEM_LINEAR                = 0x4e\n\tSCM_TIMESTAMPING                 = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS       = 0x36\n\tSCM_TIMESTAMPING_PKTINFO         = 0x3a\n\tSCM_TIMESTAMPNS                  = 0x23\n\tSCM_TS_OPT_ID                    = 0x51\n\tSCM_TXTIME                       = 0x3d\n\tSCM_WIFI_STATUS                  = 0x29\n\tSECCOMP_IOCTL_NOTIF_ADDFD        = 0x80182103\n\tSECCOMP_IOCTL_NOTIF_ID_VALID     = 0x80082102\n\tSECCOMP_IOCTL_NOTIF_SET_FLAGS    = 0x80082104\n\tSFD_CLOEXEC                      = 0x80000\n\tSFD_NONBLOCK                     = 0x800\n\tSIOCATMARK                       = 0x8905\n\tSIOCGPGRP                        = 0x8904\n\tSIOCGSTAMPNS_NEW                 = 0x40108907\n\tSIOCGSTAMP_NEW                   = 0x40108906\n\tSIOCINQ                          = 0x4004667f\n\tSIOCOUTQ                         = 0x40047473\n\tSIOCSPGRP                        = 0x8902\n\tSOCK_CLOEXEC                     = 0x80000\n\tSOCK_DGRAM                       = 0x2\n\tSOCK_NONBLOCK                    = 0x800\n\tSOCK_STREAM                      = 0x1\n\tSOL_SOCKET                       = 0x1\n\tSO_ACCEPTCONN                    = 0x1e\n\tSO_ATTACH_BPF                    = 0x32\n\tSO_ATTACH_REUSEPORT_CBPF         = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF         = 0x34\n\tSO_BINDTODEVICE                  = 0x19\n\tSO_BINDTOIFINDEX                 = 0x3e\n\tSO_BPF_EXTENSIONS                = 0x30\n\tSO_BROADCAST                     = 0x6\n\tSO_BSDCOMPAT                     = 0xe\n\tSO_BUF_LOCK                      = 0x48\n\tSO_BUSY_POLL                     = 0x2e\n\tSO_BUSY_POLL_BUDGET              = 0x46\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\n\tSO_DEVMEM_DMABUF                 = 0x4f\n\tSO_DEVMEM_DONTNEED               = 0x50\n\tSO_DEVMEM_LINEAR                 = 0x4e\n\tSO_DOMAIN                        = 0x27\n\tSO_DONTROUTE                     = 0x5\n\tSO_ERROR                         = 0x4\n\tSO_INCOMING_CPU                  = 0x31\n\tSO_INCOMING_NAPI_ID              = 0x38\n\tSO_KEEPALIVE                     = 0x9\n\tSO_LINGER                        = 0xd\n\tSO_LOCK_FILTER                   = 0x2c\n\tSO_MARK                          = 0x24\n\tSO_MAX_PACING_RATE               = 0x2f\n\tSO_MEMINFO                       = 0x37\n\tSO_NETNS_COOKIE                  = 0x47\n\tSO_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0xa\n\tSO_PASSCRED                      = 0x14\n\tSO_PASSPIDFD                     = 0x4c\n\tSO_PASSRIGHTS                    = 0x53\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x15\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERPIDFD                     = 0x4d\n\tSO_PEERSEC                       = 0x1f\n\tSO_PREFER_BUSY_POLL              = 0x45\n\tSO_PROTOCOL                      = 0x26\n\tSO_RCVBUF                        = 0x8\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x10\n\tSO_RCVMARK                       = 0x4b\n\tSO_RCVPRIORITY                   = 0x52\n\tSO_RCVTIMEO                      = 0x12\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x12\n\tSO_RESERVE_MEM                   = 0x49\n\tSO_REUSEADDR                     = 0x2\n\tSO_REUSEPORT                     = 0xf\n\tSO_RXQ_OVFL                      = 0x28\n\tSO_SECURITY_AUTHENTICATION       = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK   = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT = 0x17\n\tSO_SELECT_ERR_QUEUE              = 0x2d\n\tSO_SNDBUF                        = 0x7\n\tSO_SNDBUFFORCE                   = 0x20\n\tSO_SNDLOWAT                      = 0x11\n\tSO_SNDTIMEO                      = 0x13\n\tSO_SNDTIMEO_NEW                  = 0x43\n\tSO_SNDTIMEO_OLD                  = 0x13\n\tSO_TIMESTAMPING                  = 0x25\n\tSO_TIMESTAMPING_NEW              = 0x41\n\tSO_TIMESTAMPING_OLD              = 0x25\n\tSO_TIMESTAMPNS                   = 0x23\n\tSO_TIMESTAMPNS_NEW               = 0x40\n\tSO_TIMESTAMPNS_OLD               = 0x23\n\tSO_TIMESTAMP_NEW                 = 0x3f\n\tSO_TXREHASH                      = 0x4a\n\tSO_TXTIME                        = 0x3d\n\tSO_TYPE                          = 0x3\n\tSO_WIFI_STATUS                   = 0x29\n\tSO_ZEROCOPY                      = 0x3c\n\tTAB1                             = 0x400\n\tTAB2                             = 0x800\n\tTAB3                             = 0xc00\n\tTABDLY                           = 0xc00\n\tTCFLSH                           = 0x2000741f\n\tTCGETA                           = 0x40147417\n\tTCGETS                           = 0x402c7413\n\tTCSAFLUSH                        = 0x2\n\tTCSBRK                           = 0x2000741d\n\tTCSBRKP                          = 0x5425\n\tTCSETA                           = 0x80147418\n\tTCSETAF                          = 0x8014741c\n\tTCSETAW                          = 0x80147419\n\tTCSETS                           = 0x802c7414\n\tTCSETSF                          = 0x802c7416\n\tTCSETSW                          = 0x802c7415\n\tTCXONC                           = 0x2000741e\n\tTFD_CLOEXEC                      = 0x80000\n\tTFD_NONBLOCK                     = 0x800\n\tTIOCCBRK                         = 0x5428\n\tTIOCCONS                         = 0x541d\n\tTIOCEXCL                         = 0x540c\n\tTIOCGDEV                         = 0x40045432\n\tTIOCGETC                         = 0x40067412\n\tTIOCGETD                         = 0x5424\n\tTIOCGETP                         = 0x40067408\n\tTIOCGEXCL                        = 0x40045440\n\tTIOCGICOUNT                      = 0x545d\n\tTIOCGISO7816                     = 0x40285442\n\tTIOCGLCKTRMIOS                   = 0x5456\n\tTIOCGLTC                         = 0x40067474\n\tTIOCGPGRP                        = 0x40047477\n\tTIOCGPKT                         = 0x40045438\n\tTIOCGPTLCK                       = 0x40045439\n\tTIOCGPTN                         = 0x40045430\n\tTIOCGPTPEER                      = 0x20005441\n\tTIOCGRS485                       = 0x542e\n\tTIOCGSERIAL                      = 0x541e\n\tTIOCGSID                         = 0x5429\n\tTIOCGSOFTCAR                     = 0x5419\n\tTIOCGWINSZ                       = 0x40087468\n\tTIOCINQ                          = 0x4004667f\n\tTIOCLINUX                        = 0x541c\n\tTIOCMBIC                         = 0x5417\n\tTIOCMBIS                         = 0x5416\n\tTIOCMGET                         = 0x5415\n\tTIOCMIWAIT                       = 0x545c\n\tTIOCMSET                         = 0x5418\n\tTIOCM_CAR                        = 0x40\n\tTIOCM_CD                         = 0x40\n\tTIOCM_CTS                        = 0x20\n\tTIOCM_DSR                        = 0x100\n\tTIOCM_LOOP                       = 0x8000\n\tTIOCM_OUT1                       = 0x2000\n\tTIOCM_OUT2                       = 0x4000\n\tTIOCM_RI                         = 0x80\n\tTIOCM_RNG                        = 0x80\n\tTIOCM_SR                         = 0x10\n\tTIOCM_ST                         = 0x8\n\tTIOCNOTTY                        = 0x5422\n\tTIOCNXCL                         = 0x540d\n\tTIOCOUTQ                         = 0x40047473\n\tTIOCPKT                          = 0x5420\n\tTIOCSBRK                         = 0x5427\n\tTIOCSCTTY                        = 0x540e\n\tTIOCSERCONFIG                    = 0x5453\n\tTIOCSERGETLSR                    = 0x5459\n\tTIOCSERGETMULTI                  = 0x545a\n\tTIOCSERGSTRUCT                   = 0x5458\n\tTIOCSERGWILD                     = 0x5454\n\tTIOCSERSETMULTI                  = 0x545b\n\tTIOCSERSWILD                     = 0x5455\n\tTIOCSER_TEMT                     = 0x1\n\tTIOCSETC                         = 0x80067411\n\tTIOCSETD                         = 0x5423\n\tTIOCSETN                         = 0x8006740a\n\tTIOCSETP                         = 0x80067409\n\tTIOCSIG                          = 0x80045436\n\tTIOCSISO7816                     = 0xc0285443\n\tTIOCSLCKTRMIOS                   = 0x5457\n\tTIOCSLTC                         = 0x80067475\n\tTIOCSPGRP                        = 0x80047476\n\tTIOCSPTLCK                       = 0x80045431\n\tTIOCSRS485                       = 0x542f\n\tTIOCSSERIAL                      = 0x541f\n\tTIOCSSOFTCAR                     = 0x541a\n\tTIOCSTART                        = 0x2000746e\n\tTIOCSTI                          = 0x5412\n\tTIOCSTOP                         = 0x2000746f\n\tTIOCSWINSZ                       = 0x80087467\n\tTIOCVHANGUP                      = 0x5437\n\tTOSTOP                           = 0x400000\n\tTUNATTACHFILTER                  = 0x801054d5\n\tTUNDETACHFILTER                  = 0x801054d6\n\tTUNGETDEVNETNS                   = 0x200054e3\n\tTUNGETFEATURES                   = 0x400454cf\n\tTUNGETFILTER                     = 0x401054db\n\tTUNGETIFF                        = 0x400454d2\n\tTUNGETSNDBUF                     = 0x400454d3\n\tTUNGETVNETBE                     = 0x400454df\n\tTUNGETVNETHDRSZ                  = 0x400454d7\n\tTUNGETVNETLE                     = 0x400454dd\n\tTUNSETCARRIER                    = 0x800454e2\n\tTUNSETDEBUG                      = 0x800454c9\n\tTUNSETFILTEREBPF                 = 0x400454e1\n\tTUNSETGROUP                      = 0x800454ce\n\tTUNSETIFF                        = 0x800454ca\n\tTUNSETIFINDEX                    = 0x800454da\n\tTUNSETLINK                       = 0x800454cd\n\tTUNSETNOCSUM                     = 0x800454c8\n\tTUNSETOFFLOAD                    = 0x800454d0\n\tTUNSETOWNER                      = 0x800454cc\n\tTUNSETPERSIST                    = 0x800454cb\n\tTUNSETQUEUE                      = 0x800454d9\n\tTUNSETSNDBUF                     = 0x800454d4\n\tTUNSETSTEERINGEBPF               = 0x400454e0\n\tTUNSETTXFILTER                   = 0x800454d1\n\tTUNSETVNETBE                     = 0x800454de\n\tTUNSETVNETHDRSZ                  = 0x800454d8\n\tTUNSETVNETLE                     = 0x800454dc\n\tUBI_IOCATT                       = 0x80186f40\n\tUBI_IOCDET                       = 0x80046f41\n\tUBI_IOCEBCH                      = 0x80044f02\n\tUBI_IOCEBER                      = 0x80044f01\n\tUBI_IOCEBISMAP                   = 0x40044f05\n\tUBI_IOCEBMAP                     = 0x80084f03\n\tUBI_IOCEBUNMAP                   = 0x80044f04\n\tUBI_IOCMKVOL                     = 0x80986f00\n\tUBI_IOCRMVOL                     = 0x80046f01\n\tUBI_IOCRNVOL                     = 0x91106f03\n\tUBI_IOCRPEB                      = 0x80046f04\n\tUBI_IOCRSVOL                     = 0x800c6f02\n\tUBI_IOCSETVOLPROP                = 0x80104f06\n\tUBI_IOCSPEB                      = 0x80046f05\n\tUBI_IOCVOLCRBLK                  = 0x80804f07\n\tUBI_IOCVOLRMBLK                  = 0x20004f08\n\tUBI_IOCVOLUP                     = 0x80084f00\n\tVDISCARD                         = 0x10\n\tVEOF                             = 0x4\n\tVEOL                             = 0x6\n\tVEOL2                            = 0x8\n\tVMIN                             = 0x5\n\tVREPRINT                         = 0xb\n\tVSTART                           = 0xd\n\tVSTOP                            = 0xe\n\tVSUSP                            = 0xc\n\tVSWTC                            = 0x9\n\tVT1                              = 0x10000\n\tVTDLY                            = 0x10000\n\tVTIME                            = 0x7\n\tVWERASE                          = 0xa\n\tWDIOC_GETBOOTSTATUS              = 0x40045702\n\tWDIOC_GETPRETIMEOUT              = 0x40045709\n\tWDIOC_GETSTATUS                  = 0x40045701\n\tWDIOC_GETSUPPORT                 = 0x40285700\n\tWDIOC_GETTEMP                    = 0x40045703\n\tWDIOC_GETTIMELEFT                = 0x4004570a\n\tWDIOC_GETTIMEOUT                 = 0x40045707\n\tWDIOC_KEEPALIVE                  = 0x40045705\n\tWDIOC_SETOPTIONS                 = 0x40045704\n\tWORDSIZE                         = 0x40\n\tXCASE                            = 0x4000\n\tXTABS                            = 0xc00\n\t_HIDIOCGRAWNAME                  = 0x40804804\n\t_HIDIOCGRAWPHYS                  = 0x40404805\n\t_HIDIOCGRAWUNIQ                  = 0x40404808\n)\n\n// Errors\nconst (\n\tEADDRINUSE      = syscall.Errno(0x62)\n\tEADDRNOTAVAIL   = syscall.Errno(0x63)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x61)\n\tEALREADY        = syscall.Errno(0x72)\n\tEBADE           = syscall.Errno(0x34)\n\tEBADFD          = syscall.Errno(0x4d)\n\tEBADMSG         = syscall.Errno(0x4a)\n\tEBADR           = syscall.Errno(0x35)\n\tEBADRQC         = syscall.Errno(0x38)\n\tEBADSLT         = syscall.Errno(0x39)\n\tEBFONT          = syscall.Errno(0x3b)\n\tECANCELED       = syscall.Errno(0x7d)\n\tECHRNG          = syscall.Errno(0x2c)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x67)\n\tECONNREFUSED    = syscall.Errno(0x6f)\n\tECONNRESET      = syscall.Errno(0x68)\n\tEDEADLK         = syscall.Errno(0x23)\n\tEDEADLOCK       = syscall.Errno(0x3a)\n\tEDESTADDRREQ    = syscall.Errno(0x59)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x7a)\n\tEHOSTDOWN       = syscall.Errno(0x70)\n\tEHOSTUNREACH    = syscall.Errno(0x71)\n\tEHWPOISON       = syscall.Errno(0x85)\n\tEIDRM           = syscall.Errno(0x2b)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x73)\n\tEISCONN         = syscall.Errno(0x6a)\n\tEISNAM          = syscall.Errno(0x78)\n\tEKEYEXPIRED     = syscall.Errno(0x7f)\n\tEKEYREJECTED    = syscall.Errno(0x81)\n\tEKEYREVOKED     = syscall.Errno(0x80)\n\tEL2HLT          = syscall.Errno(0x33)\n\tEL2NSYNC        = syscall.Errno(0x2d)\n\tEL3HLT          = syscall.Errno(0x2e)\n\tEL3RST          = syscall.Errno(0x2f)\n\tELIBACC         = syscall.Errno(0x4f)\n\tELIBBAD         = syscall.Errno(0x50)\n\tELIBEXEC        = syscall.Errno(0x53)\n\tELIBMAX         = syscall.Errno(0x52)\n\tELIBSCN         = syscall.Errno(0x51)\n\tELNRNG          = syscall.Errno(0x30)\n\tELOOP           = syscall.Errno(0x28)\n\tEMEDIUMTYPE     = syscall.Errno(0x7c)\n\tEMSGSIZE        = syscall.Errno(0x5a)\n\tEMULTIHOP       = syscall.Errno(0x48)\n\tENAMETOOLONG    = syscall.Errno(0x24)\n\tENAVAIL         = syscall.Errno(0x77)\n\tENETDOWN        = syscall.Errno(0x64)\n\tENETRESET       = syscall.Errno(0x66)\n\tENETUNREACH     = syscall.Errno(0x65)\n\tENOANO          = syscall.Errno(0x37)\n\tENOBUFS         = syscall.Errno(0x69)\n\tENOCSI          = syscall.Errno(0x32)\n\tENODATA         = syscall.Errno(0x3d)\n\tENOKEY          = syscall.Errno(0x7e)\n\tENOLCK          = syscall.Errno(0x25)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x7b)\n\tENOMSG          = syscall.Errno(0x2a)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x5c)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x26)\n\tENOTCONN        = syscall.Errno(0x6b)\n\tENOTEMPTY       = syscall.Errno(0x27)\n\tENOTNAM         = syscall.Errno(0x76)\n\tENOTRECOVERABLE = syscall.Errno(0x83)\n\tENOTSOCK        = syscall.Errno(0x58)\n\tENOTSUP         = syscall.Errno(0x5f)\n\tENOTUNIQ        = syscall.Errno(0x4c)\n\tEOPNOTSUPP      = syscall.Errno(0x5f)\n\tEOVERFLOW       = syscall.Errno(0x4b)\n\tEOWNERDEAD      = syscall.Errno(0x82)\n\tEPFNOSUPPORT    = syscall.Errno(0x60)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x5d)\n\tEPROTOTYPE      = syscall.Errno(0x5b)\n\tEREMCHG         = syscall.Errno(0x4e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x79)\n\tERESTART        = syscall.Errno(0x55)\n\tERFKILL         = syscall.Errno(0x84)\n\tESHUTDOWN       = syscall.Errno(0x6c)\n\tESOCKTNOSUPPORT = syscall.Errno(0x5e)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x74)\n\tESTRPIPE        = syscall.Errno(0x56)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x6e)\n\tETOOMANYREFS    = syscall.Errno(0x6d)\n\tEUCLEAN         = syscall.Errno(0x75)\n\tEUNATCH         = syscall.Errno(0x31)\n\tEUSERS          = syscall.Errno(0x57)\n\tEXFULL          = syscall.Errno(0x36)\n)\n\n// Signals\nconst (\n\tSIGBUS    = syscall.Signal(0x7)\n\tSIGCHLD   = syscall.Signal(0x11)\n\tSIGCLD    = syscall.Signal(0x11)\n\tSIGCONT   = syscall.Signal(0x12)\n\tSIGIO     = syscall.Signal(0x1d)\n\tSIGPOLL   = syscall.Signal(0x1d)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x1e)\n\tSIGSTKFLT = syscall.Signal(0x10)\n\tSIGSTOP   = syscall.Signal(0x13)\n\tSIGSYS    = syscall.Signal(0x1f)\n\tSIGTSTP   = syscall.Signal(0x14)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x17)\n\tSIGUSR1   = syscall.Signal(0xa)\n\tSIGUSR2   = syscall.Signal(0xc)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{36, \"ENAMETOOLONG\", \"file name too long\"},\n\t{37, \"ENOLCK\", \"no locks available\"},\n\t{38, \"ENOSYS\", \"function not implemented\"},\n\t{39, \"ENOTEMPTY\", \"directory not empty\"},\n\t{40, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{42, \"ENOMSG\", \"no message of desired type\"},\n\t{43, \"EIDRM\", \"identifier removed\"},\n\t{44, \"ECHRNG\", \"channel number out of range\"},\n\t{45, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{46, \"EL3HLT\", \"level 3 halted\"},\n\t{47, \"EL3RST\", \"level 3 reset\"},\n\t{48, \"ELNRNG\", \"link number out of range\"},\n\t{49, \"EUNATCH\", \"protocol driver not attached\"},\n\t{50, \"ENOCSI\", \"no CSI structure available\"},\n\t{51, \"EL2HLT\", \"level 2 halted\"},\n\t{52, \"EBADE\", \"invalid exchange\"},\n\t{53, \"EBADR\", \"invalid request descriptor\"},\n\t{54, \"EXFULL\", \"exchange full\"},\n\t{55, \"ENOANO\", \"no anode\"},\n\t{56, \"EBADRQC\", \"invalid request code\"},\n\t{57, \"EBADSLT\", \"invalid slot\"},\n\t{58, \"EDEADLOCK\", \"file locking deadlock error\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{72, \"EMULTIHOP\", \"multihop attempted\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EBADMSG\", \"bad message\"},\n\t{75, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{76, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{77, \"EBADFD\", \"file descriptor in bad state\"},\n\t{78, \"EREMCHG\", \"remote address changed\"},\n\t{79, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{80, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{81, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{82, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{83, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{84, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{85, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{86, \"ESTRPIPE\", \"streams pipe error\"},\n\t{87, \"EUSERS\", \"too many users\"},\n\t{88, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{89, \"EDESTADDRREQ\", \"destination address required\"},\n\t{90, \"EMSGSIZE\", \"message too long\"},\n\t{91, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{92, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{93, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{94, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{95, \"ENOTSUP\", \"operation not supported\"},\n\t{96, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{97, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{98, \"EADDRINUSE\", \"address already in use\"},\n\t{99, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{100, \"ENETDOWN\", \"network is down\"},\n\t{101, \"ENETUNREACH\", \"network is unreachable\"},\n\t{102, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{103, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{104, \"ECONNRESET\", \"connection reset by peer\"},\n\t{105, \"ENOBUFS\", \"no buffer space available\"},\n\t{106, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{107, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{108, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{109, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{110, \"ETIMEDOUT\", \"connection timed out\"},\n\t{111, \"ECONNREFUSED\", \"connection refused\"},\n\t{112, \"EHOSTDOWN\", \"host is down\"},\n\t{113, \"EHOSTUNREACH\", \"no route to host\"},\n\t{114, \"EALREADY\", \"operation already in progress\"},\n\t{115, \"EINPROGRESS\", \"operation now in progress\"},\n\t{116, \"ESTALE\", \"stale file handle\"},\n\t{117, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{118, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{119, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{120, \"EISNAM\", \"is a named type file\"},\n\t{121, \"EREMOTEIO\", \"remote I/O error\"},\n\t{122, \"EDQUOT\", \"disk quota exceeded\"},\n\t{123, \"ENOMEDIUM\", \"no medium found\"},\n\t{124, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{125, \"ECANCELED\", \"operation canceled\"},\n\t{126, \"ENOKEY\", \"required key not available\"},\n\t{127, \"EKEYEXPIRED\", \"key has expired\"},\n\t{128, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{129, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{130, \"EOWNERDEAD\", \"owner died\"},\n\t{131, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{132, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{133, \"EHWPOISON\", \"memory page has hardware error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGBUS\", \"bus error\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGUSR1\", \"user defined signal 1\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGUSR2\", \"user defined signal 2\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGSTKFLT\", \"stack fault\"},\n\t{17, \"SIGCHLD\", \"child exited\"},\n\t{18, \"SIGCONT\", \"continued\"},\n\t{19, \"SIGSTOP\", \"stopped (signal)\"},\n\t{20, \"SIGTSTP\", \"stopped\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGURG\", \"urgent I/O condition\"},\n\t{24, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"file size limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window changed\"},\n\t{29, \"SIGIO\", \"I/O possible\"},\n\t{30, \"SIGPWR\", \"power failure\"},\n\t{31, \"SIGSYS\", \"bad system call\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/riscv64/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build riscv64 && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/riscv64/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x1008\n\tB115200                          = 0x1002\n\tB1152000                         = 0x1009\n\tB1500000                         = 0x100a\n\tB2000000                         = 0x100b\n\tB230400                          = 0x1003\n\tB2500000                         = 0x100c\n\tB3000000                         = 0x100d\n\tB3500000                         = 0x100e\n\tB4000000                         = 0x100f\n\tB460800                          = 0x1004\n\tB500000                          = 0x1005\n\tB57600                           = 0x1001\n\tB576000                          = 0x1006\n\tB921600                          = 0x1007\n\tBLKALIGNOFF                      = 0x127a\n\tBLKBSZGET                        = 0x80081270\n\tBLKBSZSET                        = 0x40081271\n\tBLKDISCARD                       = 0x1277\n\tBLKDISCARDZEROES                 = 0x127c\n\tBLKFLSBUF                        = 0x1261\n\tBLKFRAGET                        = 0x1265\n\tBLKFRASET                        = 0x1264\n\tBLKGETDISKSEQ                    = 0x80081280\n\tBLKGETSIZE                       = 0x1260\n\tBLKGETSIZE64                     = 0x80081272\n\tBLKIOMIN                         = 0x1278\n\tBLKIOOPT                         = 0x1279\n\tBLKPBSZGET                       = 0x127b\n\tBLKRAGET                         = 0x1263\n\tBLKRASET                         = 0x1262\n\tBLKROGET                         = 0x125e\n\tBLKROSET                         = 0x125d\n\tBLKROTATIONAL                    = 0x127e\n\tBLKRRPART                        = 0x125f\n\tBLKSECDISCARD                    = 0x127d\n\tBLKSECTGET                       = 0x1267\n\tBLKSECTSET                       = 0x1266\n\tBLKSSZGET                        = 0x1268\n\tBLKZEROOUT                       = 0x127f\n\tBOTHER                           = 0x1000\n\tBS1                              = 0x2000\n\tBSDLY                            = 0x2000\n\tCBAUD                            = 0x100f\n\tCBAUDEX                          = 0x1000\n\tCIBAUD                           = 0x100f0000\n\tCLOCAL                           = 0x800\n\tCR1                              = 0x200\n\tCR2                              = 0x400\n\tCR3                              = 0x600\n\tCRDLY                            = 0x600\n\tCREAD                            = 0x80\n\tCS6                              = 0x10\n\tCS7                              = 0x20\n\tCS8                              = 0x30\n\tCSIZE                            = 0x30\n\tCSTOPB                           = 0x40\n\tDM_MPATH_PROBE_PATHS             = 0xfd12\n\tECCGETLAYOUT                     = 0x81484d11\n\tECCGETSTATS                      = 0x80104d12\n\tECHOCTL                          = 0x200\n\tECHOE                            = 0x10\n\tECHOK                            = 0x20\n\tECHOKE                           = 0x800\n\tECHONL                           = 0x40\n\tECHOPRT                          = 0x400\n\tEFD_CLOEXEC                      = 0x80000\n\tEFD_NONBLOCK                     = 0x800\n\tEPIOCGPARAMS                     = 0x80088a02\n\tEPIOCSPARAMS                     = 0x40088a01\n\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000\n\tFF1                              = 0x8000\n\tFFDLY                            = 0x8000\n\tFICLONE                          = 0x40049409\n\tFICLONERANGE                     = 0x4020940d\n\tFLUSHO                           = 0x1000\n\tFS_IOC_ENABLE_VERITY             = 0x40806685\n\tFS_IOC_GETFLAGS                  = 0x80086601\n\tFS_IOC_GET_ENCRYPTION_NONCE      = 0x8010661b\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x400c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x40106614\n\tFS_IOC_SETFLAGS                  = 0x40086602\n\tFS_IOC_SET_ENCRYPTION_POLICY     = 0x800c6613\n\tF_GETLK                          = 0x5\n\tF_GETLK64                        = 0x5\n\tF_GETOWN                         = 0x9\n\tF_RDLCK                          = 0x0\n\tF_SETLK                          = 0x6\n\tF_SETLK64                        = 0x6\n\tF_SETLKW                         = 0x7\n\tF_SETLKW64                       = 0x7\n\tF_SETOWN                         = 0x8\n\tF_UNLCK                          = 0x2\n\tF_WRLCK                          = 0x1\n\tHIDIOCGRAWINFO                   = 0x80084803\n\tHIDIOCGRDESC                     = 0x90044802\n\tHIDIOCGRDESCSIZE                 = 0x80044801\n\tHIDIOCREVOKE                     = 0x4004480d\n\tHUPCL                            = 0x400\n\tICANON                           = 0x2\n\tIEXTEN                           = 0x8000\n\tIN_CLOEXEC                       = 0x80000\n\tIN_NONBLOCK                      = 0x800\n\tIOCTL_MEI_NOTIFY_GET             = 0x80044803\n\tIOCTL_MEI_NOTIFY_SET             = 0x40044802\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x7b9\n\tIPV6_FLOWINFO_MASK               = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK              = 0xffff0f00\n\tISIG                             = 0x1\n\tIUCLC                            = 0x200\n\tIXOFF                            = 0x1000\n\tIXON                             = 0x400\n\tMAP_ANON                         = 0x20\n\tMAP_ANONYMOUS                    = 0x20\n\tMAP_DENYWRITE                    = 0x800\n\tMAP_EXECUTABLE                   = 0x1000\n\tMAP_GROWSDOWN                    = 0x100\n\tMAP_HUGETLB                      = 0x40000\n\tMAP_LOCKED                       = 0x2000\n\tMAP_NONBLOCK                     = 0x10000\n\tMAP_NORESERVE                    = 0x4000\n\tMAP_POPULATE                     = 0x8000\n\tMAP_STACK                        = 0x20000\n\tMAP_SYNC                         = 0x80000\n\tMCL_CURRENT                      = 0x1\n\tMCL_FUTURE                       = 0x2\n\tMCL_ONFAULT                      = 0x4\n\tMEMERASE                         = 0x40084d02\n\tMEMERASE64                       = 0x40104d14\n\tMEMGETBADBLOCK                   = 0x40084d0b\n\tMEMGETINFO                       = 0x80204d01\n\tMEMGETOOBSEL                     = 0x80c84d0a\n\tMEMGETREGIONCOUNT                = 0x80044d07\n\tMEMISLOCKED                      = 0x80084d17\n\tMEMLOCK                          = 0x40084d05\n\tMEMREAD                          = 0xc0404d1a\n\tMEMREADOOB                       = 0xc0104d04\n\tMEMSETBADBLOCK                   = 0x40084d0c\n\tMEMUNLOCK                        = 0x40084d06\n\tMEMWRITEOOB                      = 0xc0104d03\n\tMTDFILEMODE                      = 0x4d13\n\tNFDBITS                          = 0x40\n\tNLDLY                            = 0x100\n\tNOFLSH                           = 0x80\n\tNS_GET_MNTNS_ID                  = 0x8008b705\n\tNS_GET_NSTYPE                    = 0xb703\n\tNS_GET_OWNER_UID                 = 0xb704\n\tNS_GET_PARENT                    = 0xb702\n\tNS_GET_PID_FROM_PIDNS            = 0x8004b706\n\tNS_GET_PID_IN_PIDNS              = 0x8004b708\n\tNS_GET_TGID_FROM_PIDNS           = 0x8004b707\n\tNS_GET_TGID_IN_PIDNS             = 0x8004b709\n\tNS_GET_USERNS                    = 0xb701\n\tOLCUC                            = 0x2\n\tONLCR                            = 0x4\n\tOTPERASE                         = 0x400c4d19\n\tOTPGETREGIONCOUNT                = 0x40044d0e\n\tOTPGETREGIONINFO                 = 0x400c4d0f\n\tOTPLOCK                          = 0x800c4d10\n\tOTPSELECT                        = 0x80044d0d\n\tO_APPEND                         = 0x400\n\tO_ASYNC                          = 0x2000\n\tO_CLOEXEC                        = 0x80000\n\tO_CREAT                          = 0x40\n\tO_DIRECT                         = 0x4000\n\tO_DIRECTORY                      = 0x10000\n\tO_DSYNC                          = 0x1000\n\tO_EXCL                           = 0x80\n\tO_FSYNC                          = 0x101000\n\tO_LARGEFILE                      = 0x0\n\tO_NDELAY                         = 0x800\n\tO_NOATIME                        = 0x40000\n\tO_NOCTTY                         = 0x100\n\tO_NOFOLLOW                       = 0x20000\n\tO_NONBLOCK                       = 0x800\n\tO_PATH                           = 0x200000\n\tO_RSYNC                          = 0x101000\n\tO_SYNC                           = 0x101000\n\tO_TMPFILE                        = 0x410000\n\tO_TRUNC                          = 0x200\n\tPARENB                           = 0x100\n\tPARODD                           = 0x200\n\tPENDIN                           = 0x4000\n\tPERF_EVENT_IOC_DISABLE           = 0x2401\n\tPERF_EVENT_IOC_ENABLE            = 0x2400\n\tPERF_EVENT_IOC_ID                = 0x80082407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4008240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT      = 0x40042409\n\tPERF_EVENT_IOC_PERIOD            = 0x40082404\n\tPERF_EVENT_IOC_QUERY_BPF         = 0xc008240a\n\tPERF_EVENT_IOC_REFRESH           = 0x2402\n\tPERF_EVENT_IOC_RESET             = 0x2403\n\tPERF_EVENT_IOC_SET_BPF           = 0x40042408\n\tPERF_EVENT_IOC_SET_FILTER        = 0x40082406\n\tPERF_EVENT_IOC_SET_OUTPUT        = 0x2405\n\tPPPIOCATTACH                     = 0x4004743d\n\tPPPIOCATTCHAN                    = 0x40047438\n\tPPPIOCBRIDGECHAN                 = 0x40047435\n\tPPPIOCCONNECT                    = 0x4004743a\n\tPPPIOCDETACH                     = 0x4004743c\n\tPPPIOCDISCONN                    = 0x7439\n\tPPPIOCGASYNCMAP                  = 0x80047458\n\tPPPIOCGCHAN                      = 0x80047437\n\tPPPIOCGDEBUG                     = 0x80047441\n\tPPPIOCGFLAGS                     = 0x8004745a\n\tPPPIOCGIDLE                      = 0x8010743f\n\tPPPIOCGIDLE32                    = 0x8008743f\n\tPPPIOCGIDLE64                    = 0x8010743f\n\tPPPIOCGL2TPSTATS                 = 0x80487436\n\tPPPIOCGMRU                       = 0x80047453\n\tPPPIOCGRASYNCMAP                 = 0x80047455\n\tPPPIOCGUNIT                      = 0x80047456\n\tPPPIOCGXASYNCMAP                 = 0x80207450\n\tPPPIOCSACTIVE                    = 0x40107446\n\tPPPIOCSASYNCMAP                  = 0x40047457\n\tPPPIOCSCOMPRESS                  = 0x4010744d\n\tPPPIOCSDEBUG                     = 0x40047440\n\tPPPIOCSFLAGS                     = 0x40047459\n\tPPPIOCSMAXCID                    = 0x40047451\n\tPPPIOCSMRRU                      = 0x4004743b\n\tPPPIOCSMRU                       = 0x40047452\n\tPPPIOCSNPMODE                    = 0x4008744b\n\tPPPIOCSPASS                      = 0x40107447\n\tPPPIOCSRASYNCMAP                 = 0x40047454\n\tPPPIOCSXASYNCMAP                 = 0x4020744f\n\tPPPIOCUNBRIDGECHAN               = 0x7434\n\tPPPIOCXFERUNIT                   = 0x744e\n\tPR_SET_PTRACER_ANY               = 0xffffffffffffffff\n\tPTP_CLOCK_GETCAPS                = 0x80503d01\n\tPTP_CLOCK_GETCAPS2               = 0x80503d0a\n\tPTP_ENABLE_PPS                   = 0x40043d04\n\tPTP_ENABLE_PPS2                  = 0x40043d0d\n\tPTP_EXTTS_REQUEST                = 0x40103d02\n\tPTP_EXTTS_REQUEST2               = 0x40103d0b\n\tPTP_MASK_CLEAR_ALL               = 0x3d13\n\tPTP_MASK_EN_SINGLE               = 0x40043d14\n\tPTP_PEROUT_REQUEST               = 0x40383d03\n\tPTP_PEROUT_REQUEST2              = 0x40383d0c\n\tPTP_PIN_SETFUNC                  = 0x40603d07\n\tPTP_PIN_SETFUNC2                 = 0x40603d10\n\tPTP_SYS_OFFSET                   = 0x43403d05\n\tPTP_SYS_OFFSET2                  = 0x43403d0e\n\tPTRACE_GETFDPIC                  = 0x21\n\tPTRACE_GETFDPIC_EXEC             = 0x0\n\tPTRACE_GETFDPIC_INTERP           = 0x1\n\tRLIMIT_AS                        = 0x9\n\tRLIMIT_MEMLOCK                   = 0x8\n\tRLIMIT_NOFILE                    = 0x7\n\tRLIMIT_NPROC                     = 0x6\n\tRLIMIT_RSS                       = 0x5\n\tRNDADDENTROPY                    = 0x40085203\n\tRNDADDTOENTCNT                   = 0x40045201\n\tRNDCLEARPOOL                     = 0x5206\n\tRNDGETENTCNT                     = 0x80045200\n\tRNDGETPOOL                       = 0x80085202\n\tRNDRESEEDCRNG                    = 0x5207\n\tRNDZAPENTCNT                     = 0x5204\n\tRTC_AIE_OFF                      = 0x7002\n\tRTC_AIE_ON                       = 0x7001\n\tRTC_ALM_READ                     = 0x80247008\n\tRTC_ALM_SET                      = 0x40247007\n\tRTC_EPOCH_READ                   = 0x8008700d\n\tRTC_EPOCH_SET                    = 0x4008700e\n\tRTC_IRQP_READ                    = 0x8008700b\n\tRTC_IRQP_SET                     = 0x4008700c\n\tRTC_PARAM_GET                    = 0x40187013\n\tRTC_PARAM_SET                    = 0x40187014\n\tRTC_PIE_OFF                      = 0x7006\n\tRTC_PIE_ON                       = 0x7005\n\tRTC_PLL_GET                      = 0x80207011\n\tRTC_PLL_SET                      = 0x40207012\n\tRTC_RD_TIME                      = 0x80247009\n\tRTC_SET_TIME                     = 0x4024700a\n\tRTC_UIE_OFF                      = 0x7004\n\tRTC_UIE_ON                       = 0x7003\n\tRTC_VL_CLR                       = 0x7014\n\tRTC_VL_READ                      = 0x80047013\n\tRTC_WIE_OFF                      = 0x7010\n\tRTC_WIE_ON                       = 0x700f\n\tRTC_WKALM_RD                     = 0x80287010\n\tRTC_WKALM_SET                    = 0x4028700f\n\tSCM_DEVMEM_DMABUF                = 0x4f\n\tSCM_DEVMEM_LINEAR                = 0x4e\n\tSCM_TIMESTAMPING                 = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS       = 0x36\n\tSCM_TIMESTAMPING_PKTINFO         = 0x3a\n\tSCM_TIMESTAMPNS                  = 0x23\n\tSCM_TS_OPT_ID                    = 0x51\n\tSCM_TXTIME                       = 0x3d\n\tSCM_WIFI_STATUS                  = 0x29\n\tSECCOMP_IOCTL_NOTIF_ADDFD        = 0x40182103\n\tSECCOMP_IOCTL_NOTIF_ID_VALID     = 0x40082102\n\tSECCOMP_IOCTL_NOTIF_SET_FLAGS    = 0x40082104\n\tSFD_CLOEXEC                      = 0x80000\n\tSFD_NONBLOCK                     = 0x800\n\tSIOCATMARK                       = 0x8905\n\tSIOCGPGRP                        = 0x8904\n\tSIOCGSTAMPNS_NEW                 = 0x80108907\n\tSIOCGSTAMP_NEW                   = 0x80108906\n\tSIOCINQ                          = 0x541b\n\tSIOCOUTQ                         = 0x5411\n\tSIOCSPGRP                        = 0x8902\n\tSOCK_CLOEXEC                     = 0x80000\n\tSOCK_DGRAM                       = 0x2\n\tSOCK_NONBLOCK                    = 0x800\n\tSOCK_STREAM                      = 0x1\n\tSOL_SOCKET                       = 0x1\n\tSO_ACCEPTCONN                    = 0x1e\n\tSO_ATTACH_BPF                    = 0x32\n\tSO_ATTACH_REUSEPORT_CBPF         = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF         = 0x34\n\tSO_BINDTODEVICE                  = 0x19\n\tSO_BINDTOIFINDEX                 = 0x3e\n\tSO_BPF_EXTENSIONS                = 0x30\n\tSO_BROADCAST                     = 0x6\n\tSO_BSDCOMPAT                     = 0xe\n\tSO_BUF_LOCK                      = 0x48\n\tSO_BUSY_POLL                     = 0x2e\n\tSO_BUSY_POLL_BUDGET              = 0x46\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\n\tSO_DEVMEM_DMABUF                 = 0x4f\n\tSO_DEVMEM_DONTNEED               = 0x50\n\tSO_DEVMEM_LINEAR                 = 0x4e\n\tSO_DOMAIN                        = 0x27\n\tSO_DONTROUTE                     = 0x5\n\tSO_ERROR                         = 0x4\n\tSO_INCOMING_CPU                  = 0x31\n\tSO_INCOMING_NAPI_ID              = 0x38\n\tSO_KEEPALIVE                     = 0x9\n\tSO_LINGER                        = 0xd\n\tSO_LOCK_FILTER                   = 0x2c\n\tSO_MARK                          = 0x24\n\tSO_MAX_PACING_RATE               = 0x2f\n\tSO_MEMINFO                       = 0x37\n\tSO_NETNS_COOKIE                  = 0x47\n\tSO_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0xa\n\tSO_PASSCRED                      = 0x10\n\tSO_PASSPIDFD                     = 0x4c\n\tSO_PASSRIGHTS                    = 0x53\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x11\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERPIDFD                     = 0x4d\n\tSO_PEERSEC                       = 0x1f\n\tSO_PREFER_BUSY_POLL              = 0x45\n\tSO_PROTOCOL                      = 0x26\n\tSO_RCVBUF                        = 0x8\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x12\n\tSO_RCVMARK                       = 0x4b\n\tSO_RCVPRIORITY                   = 0x52\n\tSO_RCVTIMEO                      = 0x14\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x14\n\tSO_RESERVE_MEM                   = 0x49\n\tSO_REUSEADDR                     = 0x2\n\tSO_REUSEPORT                     = 0xf\n\tSO_RXQ_OVFL                      = 0x28\n\tSO_SECURITY_AUTHENTICATION       = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK   = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT = 0x17\n\tSO_SELECT_ERR_QUEUE              = 0x2d\n\tSO_SNDBUF                        = 0x7\n\tSO_SNDBUFFORCE                   = 0x20\n\tSO_SNDLOWAT                      = 0x13\n\tSO_SNDTIMEO                      = 0x15\n\tSO_SNDTIMEO_NEW                  = 0x43\n\tSO_SNDTIMEO_OLD                  = 0x15\n\tSO_TIMESTAMPING                  = 0x25\n\tSO_TIMESTAMPING_NEW              = 0x41\n\tSO_TIMESTAMPING_OLD              = 0x25\n\tSO_TIMESTAMPNS                   = 0x23\n\tSO_TIMESTAMPNS_NEW               = 0x40\n\tSO_TIMESTAMPNS_OLD               = 0x23\n\tSO_TIMESTAMP_NEW                 = 0x3f\n\tSO_TXREHASH                      = 0x4a\n\tSO_TXTIME                        = 0x3d\n\tSO_TYPE                          = 0x3\n\tSO_WIFI_STATUS                   = 0x29\n\tSO_ZEROCOPY                      = 0x3c\n\tTAB1                             = 0x800\n\tTAB2                             = 0x1000\n\tTAB3                             = 0x1800\n\tTABDLY                           = 0x1800\n\tTCFLSH                           = 0x540b\n\tTCGETA                           = 0x5405\n\tTCGETS                           = 0x5401\n\tTCGETS2                          = 0x802c542a\n\tTCGETX                           = 0x5432\n\tTCSAFLUSH                        = 0x2\n\tTCSBRK                           = 0x5409\n\tTCSBRKP                          = 0x5425\n\tTCSETA                           = 0x5406\n\tTCSETAF                          = 0x5408\n\tTCSETAW                          = 0x5407\n\tTCSETS                           = 0x5402\n\tTCSETS2                          = 0x402c542b\n\tTCSETSF                          = 0x5404\n\tTCSETSF2                         = 0x402c542d\n\tTCSETSW                          = 0x5403\n\tTCSETSW2                         = 0x402c542c\n\tTCSETX                           = 0x5433\n\tTCSETXF                          = 0x5434\n\tTCSETXW                          = 0x5435\n\tTCXONC                           = 0x540a\n\tTFD_CLOEXEC                      = 0x80000\n\tTFD_NONBLOCK                     = 0x800\n\tTIOCCBRK                         = 0x5428\n\tTIOCCONS                         = 0x541d\n\tTIOCEXCL                         = 0x540c\n\tTIOCGDEV                         = 0x80045432\n\tTIOCGETD                         = 0x5424\n\tTIOCGEXCL                        = 0x80045440\n\tTIOCGICOUNT                      = 0x545d\n\tTIOCGISO7816                     = 0x80285442\n\tTIOCGLCKTRMIOS                   = 0x5456\n\tTIOCGPGRP                        = 0x540f\n\tTIOCGPKT                         = 0x80045438\n\tTIOCGPTLCK                       = 0x80045439\n\tTIOCGPTN                         = 0x80045430\n\tTIOCGPTPEER                      = 0x5441\n\tTIOCGRS485                       = 0x542e\n\tTIOCGSERIAL                      = 0x541e\n\tTIOCGSID                         = 0x5429\n\tTIOCGSOFTCAR                     = 0x5419\n\tTIOCGWINSZ                       = 0x5413\n\tTIOCINQ                          = 0x541b\n\tTIOCLINUX                        = 0x541c\n\tTIOCMBIC                         = 0x5417\n\tTIOCMBIS                         = 0x5416\n\tTIOCMGET                         = 0x5415\n\tTIOCMIWAIT                       = 0x545c\n\tTIOCMSET                         = 0x5418\n\tTIOCM_CAR                        = 0x40\n\tTIOCM_CD                         = 0x40\n\tTIOCM_CTS                        = 0x20\n\tTIOCM_DSR                        = 0x100\n\tTIOCM_RI                         = 0x80\n\tTIOCM_RNG                        = 0x80\n\tTIOCM_SR                         = 0x10\n\tTIOCM_ST                         = 0x8\n\tTIOCNOTTY                        = 0x5422\n\tTIOCNXCL                         = 0x540d\n\tTIOCOUTQ                         = 0x5411\n\tTIOCPKT                          = 0x5420\n\tTIOCSBRK                         = 0x5427\n\tTIOCSCTTY                        = 0x540e\n\tTIOCSERCONFIG                    = 0x5453\n\tTIOCSERGETLSR                    = 0x5459\n\tTIOCSERGETMULTI                  = 0x545a\n\tTIOCSERGSTRUCT                   = 0x5458\n\tTIOCSERGWILD                     = 0x5454\n\tTIOCSERSETMULTI                  = 0x545b\n\tTIOCSERSWILD                     = 0x5455\n\tTIOCSER_TEMT                     = 0x1\n\tTIOCSETD                         = 0x5423\n\tTIOCSIG                          = 0x40045436\n\tTIOCSISO7816                     = 0xc0285443\n\tTIOCSLCKTRMIOS                   = 0x5457\n\tTIOCSPGRP                        = 0x5410\n\tTIOCSPTLCK                       = 0x40045431\n\tTIOCSRS485                       = 0x542f\n\tTIOCSSERIAL                      = 0x541f\n\tTIOCSSOFTCAR                     = 0x541a\n\tTIOCSTI                          = 0x5412\n\tTIOCSWINSZ                       = 0x5414\n\tTIOCVHANGUP                      = 0x5437\n\tTOSTOP                           = 0x100\n\tTUNATTACHFILTER                  = 0x401054d5\n\tTUNDETACHFILTER                  = 0x401054d6\n\tTUNGETDEVNETNS                   = 0x54e3\n\tTUNGETFEATURES                   = 0x800454cf\n\tTUNGETFILTER                     = 0x801054db\n\tTUNGETIFF                        = 0x800454d2\n\tTUNGETSNDBUF                     = 0x800454d3\n\tTUNGETVNETBE                     = 0x800454df\n\tTUNGETVNETHDRSZ                  = 0x800454d7\n\tTUNGETVNETLE                     = 0x800454dd\n\tTUNSETCARRIER                    = 0x400454e2\n\tTUNSETDEBUG                      = 0x400454c9\n\tTUNSETFILTEREBPF                 = 0x800454e1\n\tTUNSETGROUP                      = 0x400454ce\n\tTUNSETIFF                        = 0x400454ca\n\tTUNSETIFINDEX                    = 0x400454da\n\tTUNSETLINK                       = 0x400454cd\n\tTUNSETNOCSUM                     = 0x400454c8\n\tTUNSETOFFLOAD                    = 0x400454d0\n\tTUNSETOWNER                      = 0x400454cc\n\tTUNSETPERSIST                    = 0x400454cb\n\tTUNSETQUEUE                      = 0x400454d9\n\tTUNSETSNDBUF                     = 0x400454d4\n\tTUNSETSTEERINGEBPF               = 0x800454e0\n\tTUNSETTXFILTER                   = 0x400454d1\n\tTUNSETVNETBE                     = 0x400454de\n\tTUNSETVNETHDRSZ                  = 0x400454d8\n\tTUNSETVNETLE                     = 0x400454dc\n\tUBI_IOCATT                       = 0x40186f40\n\tUBI_IOCDET                       = 0x40046f41\n\tUBI_IOCEBCH                      = 0x40044f02\n\tUBI_IOCEBER                      = 0x40044f01\n\tUBI_IOCEBISMAP                   = 0x80044f05\n\tUBI_IOCEBMAP                     = 0x40084f03\n\tUBI_IOCEBUNMAP                   = 0x40044f04\n\tUBI_IOCMKVOL                     = 0x40986f00\n\tUBI_IOCRMVOL                     = 0x40046f01\n\tUBI_IOCRNVOL                     = 0x51106f03\n\tUBI_IOCRPEB                      = 0x40046f04\n\tUBI_IOCRSVOL                     = 0x400c6f02\n\tUBI_IOCSETVOLPROP                = 0x40104f06\n\tUBI_IOCSPEB                      = 0x40046f05\n\tUBI_IOCVOLCRBLK                  = 0x40804f07\n\tUBI_IOCVOLRMBLK                  = 0x4f08\n\tUBI_IOCVOLUP                     = 0x40084f00\n\tVDISCARD                         = 0xd\n\tVEOF                             = 0x4\n\tVEOL                             = 0xb\n\tVEOL2                            = 0x10\n\tVMIN                             = 0x6\n\tVREPRINT                         = 0xc\n\tVSTART                           = 0x8\n\tVSTOP                            = 0x9\n\tVSUSP                            = 0xa\n\tVSWTC                            = 0x7\n\tVT1                              = 0x4000\n\tVTDLY                            = 0x4000\n\tVTIME                            = 0x5\n\tVWERASE                          = 0xe\n\tWDIOC_GETBOOTSTATUS              = 0x80045702\n\tWDIOC_GETPRETIMEOUT              = 0x80045709\n\tWDIOC_GETSTATUS                  = 0x80045701\n\tWDIOC_GETSUPPORT                 = 0x80285700\n\tWDIOC_GETTEMP                    = 0x80045703\n\tWDIOC_GETTIMELEFT                = 0x8004570a\n\tWDIOC_GETTIMEOUT                 = 0x80045707\n\tWDIOC_KEEPALIVE                  = 0x80045705\n\tWDIOC_SETOPTIONS                 = 0x80045704\n\tWORDSIZE                         = 0x40\n\tXCASE                            = 0x4\n\tXTABS                            = 0x1800\n\t_HIDIOCGRAWNAME                  = 0x80804804\n\t_HIDIOCGRAWPHYS                  = 0x80404805\n\t_HIDIOCGRAWUNIQ                  = 0x80404808\n)\n\n// Errors\nconst (\n\tEADDRINUSE      = syscall.Errno(0x62)\n\tEADDRNOTAVAIL   = syscall.Errno(0x63)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x61)\n\tEALREADY        = syscall.Errno(0x72)\n\tEBADE           = syscall.Errno(0x34)\n\tEBADFD          = syscall.Errno(0x4d)\n\tEBADMSG         = syscall.Errno(0x4a)\n\tEBADR           = syscall.Errno(0x35)\n\tEBADRQC         = syscall.Errno(0x38)\n\tEBADSLT         = syscall.Errno(0x39)\n\tEBFONT          = syscall.Errno(0x3b)\n\tECANCELED       = syscall.Errno(0x7d)\n\tECHRNG          = syscall.Errno(0x2c)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x67)\n\tECONNREFUSED    = syscall.Errno(0x6f)\n\tECONNRESET      = syscall.Errno(0x68)\n\tEDEADLK         = syscall.Errno(0x23)\n\tEDEADLOCK       = syscall.Errno(0x23)\n\tEDESTADDRREQ    = syscall.Errno(0x59)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x7a)\n\tEHOSTDOWN       = syscall.Errno(0x70)\n\tEHOSTUNREACH    = syscall.Errno(0x71)\n\tEHWPOISON       = syscall.Errno(0x85)\n\tEIDRM           = syscall.Errno(0x2b)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x73)\n\tEISCONN         = syscall.Errno(0x6a)\n\tEISNAM          = syscall.Errno(0x78)\n\tEKEYEXPIRED     = syscall.Errno(0x7f)\n\tEKEYREJECTED    = syscall.Errno(0x81)\n\tEKEYREVOKED     = syscall.Errno(0x80)\n\tEL2HLT          = syscall.Errno(0x33)\n\tEL2NSYNC        = syscall.Errno(0x2d)\n\tEL3HLT          = syscall.Errno(0x2e)\n\tEL3RST          = syscall.Errno(0x2f)\n\tELIBACC         = syscall.Errno(0x4f)\n\tELIBBAD         = syscall.Errno(0x50)\n\tELIBEXEC        = syscall.Errno(0x53)\n\tELIBMAX         = syscall.Errno(0x52)\n\tELIBSCN         = syscall.Errno(0x51)\n\tELNRNG          = syscall.Errno(0x30)\n\tELOOP           = syscall.Errno(0x28)\n\tEMEDIUMTYPE     = syscall.Errno(0x7c)\n\tEMSGSIZE        = syscall.Errno(0x5a)\n\tEMULTIHOP       = syscall.Errno(0x48)\n\tENAMETOOLONG    = syscall.Errno(0x24)\n\tENAVAIL         = syscall.Errno(0x77)\n\tENETDOWN        = syscall.Errno(0x64)\n\tENETRESET       = syscall.Errno(0x66)\n\tENETUNREACH     = syscall.Errno(0x65)\n\tENOANO          = syscall.Errno(0x37)\n\tENOBUFS         = syscall.Errno(0x69)\n\tENOCSI          = syscall.Errno(0x32)\n\tENODATA         = syscall.Errno(0x3d)\n\tENOKEY          = syscall.Errno(0x7e)\n\tENOLCK          = syscall.Errno(0x25)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x7b)\n\tENOMSG          = syscall.Errno(0x2a)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x5c)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x26)\n\tENOTCONN        = syscall.Errno(0x6b)\n\tENOTEMPTY       = syscall.Errno(0x27)\n\tENOTNAM         = syscall.Errno(0x76)\n\tENOTRECOVERABLE = syscall.Errno(0x83)\n\tENOTSOCK        = syscall.Errno(0x58)\n\tENOTSUP         = syscall.Errno(0x5f)\n\tENOTUNIQ        = syscall.Errno(0x4c)\n\tEOPNOTSUPP      = syscall.Errno(0x5f)\n\tEOVERFLOW       = syscall.Errno(0x4b)\n\tEOWNERDEAD      = syscall.Errno(0x82)\n\tEPFNOSUPPORT    = syscall.Errno(0x60)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x5d)\n\tEPROTOTYPE      = syscall.Errno(0x5b)\n\tEREMCHG         = syscall.Errno(0x4e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x79)\n\tERESTART        = syscall.Errno(0x55)\n\tERFKILL         = syscall.Errno(0x84)\n\tESHUTDOWN       = syscall.Errno(0x6c)\n\tESOCKTNOSUPPORT = syscall.Errno(0x5e)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x74)\n\tESTRPIPE        = syscall.Errno(0x56)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x6e)\n\tETOOMANYREFS    = syscall.Errno(0x6d)\n\tEUCLEAN         = syscall.Errno(0x75)\n\tEUNATCH         = syscall.Errno(0x31)\n\tEUSERS          = syscall.Errno(0x57)\n\tEXFULL          = syscall.Errno(0x36)\n)\n\n// Signals\nconst (\n\tSIGBUS    = syscall.Signal(0x7)\n\tSIGCHLD   = syscall.Signal(0x11)\n\tSIGCLD    = syscall.Signal(0x11)\n\tSIGCONT   = syscall.Signal(0x12)\n\tSIGIO     = syscall.Signal(0x1d)\n\tSIGPOLL   = syscall.Signal(0x1d)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x1e)\n\tSIGSTKFLT = syscall.Signal(0x10)\n\tSIGSTOP   = syscall.Signal(0x13)\n\tSIGSYS    = syscall.Signal(0x1f)\n\tSIGTSTP   = syscall.Signal(0x14)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x17)\n\tSIGUSR1   = syscall.Signal(0xa)\n\tSIGUSR2   = syscall.Signal(0xc)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{36, \"ENAMETOOLONG\", \"file name too long\"},\n\t{37, \"ENOLCK\", \"no locks available\"},\n\t{38, \"ENOSYS\", \"function not implemented\"},\n\t{39, \"ENOTEMPTY\", \"directory not empty\"},\n\t{40, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{42, \"ENOMSG\", \"no message of desired type\"},\n\t{43, \"EIDRM\", \"identifier removed\"},\n\t{44, \"ECHRNG\", \"channel number out of range\"},\n\t{45, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{46, \"EL3HLT\", \"level 3 halted\"},\n\t{47, \"EL3RST\", \"level 3 reset\"},\n\t{48, \"ELNRNG\", \"link number out of range\"},\n\t{49, \"EUNATCH\", \"protocol driver not attached\"},\n\t{50, \"ENOCSI\", \"no CSI structure available\"},\n\t{51, \"EL2HLT\", \"level 2 halted\"},\n\t{52, \"EBADE\", \"invalid exchange\"},\n\t{53, \"EBADR\", \"invalid request descriptor\"},\n\t{54, \"EXFULL\", \"exchange full\"},\n\t{55, \"ENOANO\", \"no anode\"},\n\t{56, \"EBADRQC\", \"invalid request code\"},\n\t{57, \"EBADSLT\", \"invalid slot\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{72, \"EMULTIHOP\", \"multihop attempted\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EBADMSG\", \"bad message\"},\n\t{75, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{76, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{77, \"EBADFD\", \"file descriptor in bad state\"},\n\t{78, \"EREMCHG\", \"remote address changed\"},\n\t{79, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{80, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{81, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{82, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{83, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{84, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{85, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{86, \"ESTRPIPE\", \"streams pipe error\"},\n\t{87, \"EUSERS\", \"too many users\"},\n\t{88, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{89, \"EDESTADDRREQ\", \"destination address required\"},\n\t{90, \"EMSGSIZE\", \"message too long\"},\n\t{91, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{92, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{93, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{94, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{95, \"ENOTSUP\", \"operation not supported\"},\n\t{96, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{97, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{98, \"EADDRINUSE\", \"address already in use\"},\n\t{99, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{100, \"ENETDOWN\", \"network is down\"},\n\t{101, \"ENETUNREACH\", \"network is unreachable\"},\n\t{102, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{103, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{104, \"ECONNRESET\", \"connection reset by peer\"},\n\t{105, \"ENOBUFS\", \"no buffer space available\"},\n\t{106, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{107, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{108, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{109, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{110, \"ETIMEDOUT\", \"connection timed out\"},\n\t{111, \"ECONNREFUSED\", \"connection refused\"},\n\t{112, \"EHOSTDOWN\", \"host is down\"},\n\t{113, \"EHOSTUNREACH\", \"no route to host\"},\n\t{114, \"EALREADY\", \"operation already in progress\"},\n\t{115, \"EINPROGRESS\", \"operation now in progress\"},\n\t{116, \"ESTALE\", \"stale file handle\"},\n\t{117, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{118, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{119, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{120, \"EISNAM\", \"is a named type file\"},\n\t{121, \"EREMOTEIO\", \"remote I/O error\"},\n\t{122, \"EDQUOT\", \"disk quota exceeded\"},\n\t{123, \"ENOMEDIUM\", \"no medium found\"},\n\t{124, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{125, \"ECANCELED\", \"operation canceled\"},\n\t{126, \"ENOKEY\", \"required key not available\"},\n\t{127, \"EKEYEXPIRED\", \"key has expired\"},\n\t{128, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{129, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{130, \"EOWNERDEAD\", \"owner died\"},\n\t{131, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{132, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{133, \"EHWPOISON\", \"memory page has hardware error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGBUS\", \"bus error\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGUSR1\", \"user defined signal 1\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGUSR2\", \"user defined signal 2\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGSTKFLT\", \"stack fault\"},\n\t{17, \"SIGCHLD\", \"child exited\"},\n\t{18, \"SIGCONT\", \"continued\"},\n\t{19, \"SIGSTOP\", \"stopped (signal)\"},\n\t{20, \"SIGTSTP\", \"stopped\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGURG\", \"urgent I/O condition\"},\n\t{24, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"file size limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window changed\"},\n\t{29, \"SIGIO\", \"I/O possible\"},\n\t{30, \"SIGPWR\", \"power failure\"},\n\t{31, \"SIGSYS\", \"bad system call\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/s390x/include -fsigned-char\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build s390x && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/s390x/include -fsigned-char _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x1008\n\tB115200                          = 0x1002\n\tB1152000                         = 0x1009\n\tB1500000                         = 0x100a\n\tB2000000                         = 0x100b\n\tB230400                          = 0x1003\n\tB2500000                         = 0x100c\n\tB3000000                         = 0x100d\n\tB3500000                         = 0x100e\n\tB4000000                         = 0x100f\n\tB460800                          = 0x1004\n\tB500000                          = 0x1005\n\tB57600                           = 0x1001\n\tB576000                          = 0x1006\n\tB921600                          = 0x1007\n\tBLKALIGNOFF                      = 0x127a\n\tBLKBSZGET                        = 0x80081270\n\tBLKBSZSET                        = 0x40081271\n\tBLKDISCARD                       = 0x1277\n\tBLKDISCARDZEROES                 = 0x127c\n\tBLKFLSBUF                        = 0x1261\n\tBLKFRAGET                        = 0x1265\n\tBLKFRASET                        = 0x1264\n\tBLKGETDISKSEQ                    = 0x80081280\n\tBLKGETSIZE                       = 0x1260\n\tBLKGETSIZE64                     = 0x80081272\n\tBLKIOMIN                         = 0x1278\n\tBLKIOOPT                         = 0x1279\n\tBLKPBSZGET                       = 0x127b\n\tBLKRAGET                         = 0x1263\n\tBLKRASET                         = 0x1262\n\tBLKROGET                         = 0x125e\n\tBLKROSET                         = 0x125d\n\tBLKROTATIONAL                    = 0x127e\n\tBLKRRPART                        = 0x125f\n\tBLKSECDISCARD                    = 0x127d\n\tBLKSECTGET                       = 0x1267\n\tBLKSECTSET                       = 0x1266\n\tBLKSSZGET                        = 0x1268\n\tBLKZEROOUT                       = 0x127f\n\tBOTHER                           = 0x1000\n\tBS1                              = 0x2000\n\tBSDLY                            = 0x2000\n\tCBAUD                            = 0x100f\n\tCBAUDEX                          = 0x1000\n\tCIBAUD                           = 0x100f0000\n\tCLOCAL                           = 0x800\n\tCR1                              = 0x200\n\tCR2                              = 0x400\n\tCR3                              = 0x600\n\tCRDLY                            = 0x600\n\tCREAD                            = 0x80\n\tCS6                              = 0x10\n\tCS7                              = 0x20\n\tCS8                              = 0x30\n\tCSIZE                            = 0x30\n\tCSTOPB                           = 0x40\n\tDM_MPATH_PROBE_PATHS             = 0xfd12\n\tECCGETLAYOUT                     = 0x81484d11\n\tECCGETSTATS                      = 0x80104d12\n\tECHOCTL                          = 0x200\n\tECHOE                            = 0x10\n\tECHOK                            = 0x20\n\tECHOKE                           = 0x800\n\tECHONL                           = 0x40\n\tECHOPRT                          = 0x400\n\tEFD_CLOEXEC                      = 0x80000\n\tEFD_NONBLOCK                     = 0x800\n\tEPIOCGPARAMS                     = 0x80088a02\n\tEPIOCSPARAMS                     = 0x40088a01\n\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000\n\tFF1                              = 0x8000\n\tFFDLY                            = 0x8000\n\tFICLONE                          = 0x40049409\n\tFICLONERANGE                     = 0x4020940d\n\tFLUSHO                           = 0x1000\n\tFS_IOC_ENABLE_VERITY             = 0x40806685\n\tFS_IOC_GETFLAGS                  = 0x80086601\n\tFS_IOC_GET_ENCRYPTION_NONCE      = 0x8010661b\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x400c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x40106614\n\tFS_IOC_SETFLAGS                  = 0x40086602\n\tFS_IOC_SET_ENCRYPTION_POLICY     = 0x800c6613\n\tF_GETLK                          = 0x5\n\tF_GETLK64                        = 0x5\n\tF_GETOWN                         = 0x9\n\tF_RDLCK                          = 0x0\n\tF_SETLK                          = 0x6\n\tF_SETLK64                        = 0x6\n\tF_SETLKW                         = 0x7\n\tF_SETLKW64                       = 0x7\n\tF_SETOWN                         = 0x8\n\tF_UNLCK                          = 0x2\n\tF_WRLCK                          = 0x1\n\tHIDIOCGRAWINFO                   = 0x80084803\n\tHIDIOCGRDESC                     = 0x90044802\n\tHIDIOCGRDESCSIZE                 = 0x80044801\n\tHIDIOCREVOKE                     = 0x4004480d\n\tHUPCL                            = 0x400\n\tICANON                           = 0x2\n\tIEXTEN                           = 0x8000\n\tIN_CLOEXEC                       = 0x80000\n\tIN_NONBLOCK                      = 0x800\n\tIOCTL_MEI_NOTIFY_GET             = 0x80044803\n\tIOCTL_MEI_NOTIFY_SET             = 0x40044802\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x7b9\n\tIPV6_FLOWINFO_MASK               = 0xfffffff\n\tIPV6_FLOWLABEL_MASK              = 0xfffff\n\tISIG                             = 0x1\n\tIUCLC                            = 0x200\n\tIXOFF                            = 0x1000\n\tIXON                             = 0x400\n\tMAP_ANON                         = 0x20\n\tMAP_ANONYMOUS                    = 0x20\n\tMAP_DENYWRITE                    = 0x800\n\tMAP_EXECUTABLE                   = 0x1000\n\tMAP_GROWSDOWN                    = 0x100\n\tMAP_HUGETLB                      = 0x40000\n\tMAP_LOCKED                       = 0x2000\n\tMAP_NONBLOCK                     = 0x10000\n\tMAP_NORESERVE                    = 0x4000\n\tMAP_POPULATE                     = 0x8000\n\tMAP_STACK                        = 0x20000\n\tMAP_SYNC                         = 0x80000\n\tMCL_CURRENT                      = 0x1\n\tMCL_FUTURE                       = 0x2\n\tMCL_ONFAULT                      = 0x4\n\tMEMERASE                         = 0x40084d02\n\tMEMERASE64                       = 0x40104d14\n\tMEMGETBADBLOCK                   = 0x40084d0b\n\tMEMGETINFO                       = 0x80204d01\n\tMEMGETOOBSEL                     = 0x80c84d0a\n\tMEMGETREGIONCOUNT                = 0x80044d07\n\tMEMISLOCKED                      = 0x80084d17\n\tMEMLOCK                          = 0x40084d05\n\tMEMREAD                          = 0xc0404d1a\n\tMEMREADOOB                       = 0xc0104d04\n\tMEMSETBADBLOCK                   = 0x40084d0c\n\tMEMUNLOCK                        = 0x40084d06\n\tMEMWRITEOOB                      = 0xc0104d03\n\tMTDFILEMODE                      = 0x4d13\n\tNFDBITS                          = 0x40\n\tNLDLY                            = 0x100\n\tNOFLSH                           = 0x80\n\tNS_GET_MNTNS_ID                  = 0x8008b705\n\tNS_GET_NSTYPE                    = 0xb703\n\tNS_GET_OWNER_UID                 = 0xb704\n\tNS_GET_PARENT                    = 0xb702\n\tNS_GET_PID_FROM_PIDNS            = 0x8004b706\n\tNS_GET_PID_IN_PIDNS              = 0x8004b708\n\tNS_GET_TGID_FROM_PIDNS           = 0x8004b707\n\tNS_GET_TGID_IN_PIDNS             = 0x8004b709\n\tNS_GET_USERNS                    = 0xb701\n\tOLCUC                            = 0x2\n\tONLCR                            = 0x4\n\tOTPERASE                         = 0x400c4d19\n\tOTPGETREGIONCOUNT                = 0x40044d0e\n\tOTPGETREGIONINFO                 = 0x400c4d0f\n\tOTPLOCK                          = 0x800c4d10\n\tOTPSELECT                        = 0x80044d0d\n\tO_APPEND                         = 0x400\n\tO_ASYNC                          = 0x2000\n\tO_CLOEXEC                        = 0x80000\n\tO_CREAT                          = 0x40\n\tO_DIRECT                         = 0x4000\n\tO_DIRECTORY                      = 0x10000\n\tO_DSYNC                          = 0x1000\n\tO_EXCL                           = 0x80\n\tO_FSYNC                          = 0x101000\n\tO_LARGEFILE                      = 0x0\n\tO_NDELAY                         = 0x800\n\tO_NOATIME                        = 0x40000\n\tO_NOCTTY                         = 0x100\n\tO_NOFOLLOW                       = 0x20000\n\tO_NONBLOCK                       = 0x800\n\tO_PATH                           = 0x200000\n\tO_RSYNC                          = 0x101000\n\tO_SYNC                           = 0x101000\n\tO_TMPFILE                        = 0x410000\n\tO_TRUNC                          = 0x200\n\tPARENB                           = 0x100\n\tPARODD                           = 0x200\n\tPENDIN                           = 0x4000\n\tPERF_EVENT_IOC_DISABLE           = 0x2401\n\tPERF_EVENT_IOC_ENABLE            = 0x2400\n\tPERF_EVENT_IOC_ID                = 0x80082407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4008240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT      = 0x40042409\n\tPERF_EVENT_IOC_PERIOD            = 0x40082404\n\tPERF_EVENT_IOC_QUERY_BPF         = 0xc008240a\n\tPERF_EVENT_IOC_REFRESH           = 0x2402\n\tPERF_EVENT_IOC_RESET             = 0x2403\n\tPERF_EVENT_IOC_SET_BPF           = 0x40042408\n\tPERF_EVENT_IOC_SET_FILTER        = 0x40082406\n\tPERF_EVENT_IOC_SET_OUTPUT        = 0x2405\n\tPPPIOCATTACH                     = 0x4004743d\n\tPPPIOCATTCHAN                    = 0x40047438\n\tPPPIOCBRIDGECHAN                 = 0x40047435\n\tPPPIOCCONNECT                    = 0x4004743a\n\tPPPIOCDETACH                     = 0x4004743c\n\tPPPIOCDISCONN                    = 0x7439\n\tPPPIOCGASYNCMAP                  = 0x80047458\n\tPPPIOCGCHAN                      = 0x80047437\n\tPPPIOCGDEBUG                     = 0x80047441\n\tPPPIOCGFLAGS                     = 0x8004745a\n\tPPPIOCGIDLE                      = 0x8010743f\n\tPPPIOCGIDLE32                    = 0x8008743f\n\tPPPIOCGIDLE64                    = 0x8010743f\n\tPPPIOCGL2TPSTATS                 = 0x80487436\n\tPPPIOCGMRU                       = 0x80047453\n\tPPPIOCGRASYNCMAP                 = 0x80047455\n\tPPPIOCGUNIT                      = 0x80047456\n\tPPPIOCGXASYNCMAP                 = 0x80207450\n\tPPPIOCSACTIVE                    = 0x40107446\n\tPPPIOCSASYNCMAP                  = 0x40047457\n\tPPPIOCSCOMPRESS                  = 0x4010744d\n\tPPPIOCSDEBUG                     = 0x40047440\n\tPPPIOCSFLAGS                     = 0x40047459\n\tPPPIOCSMAXCID                    = 0x40047451\n\tPPPIOCSMRRU                      = 0x4004743b\n\tPPPIOCSMRU                       = 0x40047452\n\tPPPIOCSNPMODE                    = 0x4008744b\n\tPPPIOCSPASS                      = 0x40107447\n\tPPPIOCSRASYNCMAP                 = 0x40047454\n\tPPPIOCSXASYNCMAP                 = 0x4020744f\n\tPPPIOCUNBRIDGECHAN               = 0x7434\n\tPPPIOCXFERUNIT                   = 0x744e\n\tPR_SET_PTRACER_ANY               = 0xffffffffffffffff\n\tPTP_CLOCK_GETCAPS                = 0x80503d01\n\tPTP_CLOCK_GETCAPS2               = 0x80503d0a\n\tPTP_ENABLE_PPS                   = 0x40043d04\n\tPTP_ENABLE_PPS2                  = 0x40043d0d\n\tPTP_EXTTS_REQUEST                = 0x40103d02\n\tPTP_EXTTS_REQUEST2               = 0x40103d0b\n\tPTP_MASK_CLEAR_ALL               = 0x3d13\n\tPTP_MASK_EN_SINGLE               = 0x40043d14\n\tPTP_PEROUT_REQUEST               = 0x40383d03\n\tPTP_PEROUT_REQUEST2              = 0x40383d0c\n\tPTP_PIN_SETFUNC                  = 0x40603d07\n\tPTP_PIN_SETFUNC2                 = 0x40603d10\n\tPTP_SYS_OFFSET                   = 0x43403d05\n\tPTP_SYS_OFFSET2                  = 0x43403d0e\n\tPTRACE_DISABLE_TE                = 0x5010\n\tPTRACE_ENABLE_TE                 = 0x5009\n\tPTRACE_GET_LAST_BREAK            = 0x5006\n\tPTRACE_OLDSETOPTIONS             = 0x15\n\tPTRACE_PEEKDATA_AREA             = 0x5003\n\tPTRACE_PEEKTEXT_AREA             = 0x5002\n\tPTRACE_PEEKUSR_AREA              = 0x5000\n\tPTRACE_PEEK_SYSTEM_CALL          = 0x5007\n\tPTRACE_POKEDATA_AREA             = 0x5005\n\tPTRACE_POKETEXT_AREA             = 0x5004\n\tPTRACE_POKEUSR_AREA              = 0x5001\n\tPTRACE_POKE_SYSTEM_CALL          = 0x5008\n\tPTRACE_PROT                      = 0x15\n\tPTRACE_SINGLEBLOCK               = 0xc\n\tPTRACE_SYSEMU                    = 0x1f\n\tPTRACE_SYSEMU_SINGLESTEP         = 0x20\n\tPTRACE_TE_ABORT_RAND             = 0x5011\n\tPT_ACR0                          = 0x90\n\tPT_ACR1                          = 0x94\n\tPT_ACR10                         = 0xb8\n\tPT_ACR11                         = 0xbc\n\tPT_ACR12                         = 0xc0\n\tPT_ACR13                         = 0xc4\n\tPT_ACR14                         = 0xc8\n\tPT_ACR15                         = 0xcc\n\tPT_ACR2                          = 0x98\n\tPT_ACR3                          = 0x9c\n\tPT_ACR4                          = 0xa0\n\tPT_ACR5                          = 0xa4\n\tPT_ACR6                          = 0xa8\n\tPT_ACR7                          = 0xac\n\tPT_ACR8                          = 0xb0\n\tPT_ACR9                          = 0xb4\n\tPT_CR_10                         = 0x168\n\tPT_CR_11                         = 0x170\n\tPT_CR_9                          = 0x160\n\tPT_ENDREGS                       = 0x1af\n\tPT_FPC                           = 0xd8\n\tPT_FPR0                          = 0xe0\n\tPT_FPR1                          = 0xe8\n\tPT_FPR10                         = 0x130\n\tPT_FPR11                         = 0x138\n\tPT_FPR12                         = 0x140\n\tPT_FPR13                         = 0x148\n\tPT_FPR14                         = 0x150\n\tPT_FPR15                         = 0x158\n\tPT_FPR2                          = 0xf0\n\tPT_FPR3                          = 0xf8\n\tPT_FPR4                          = 0x100\n\tPT_FPR5                          = 0x108\n\tPT_FPR6                          = 0x110\n\tPT_FPR7                          = 0x118\n\tPT_FPR8                          = 0x120\n\tPT_FPR9                          = 0x128\n\tPT_GPR0                          = 0x10\n\tPT_GPR1                          = 0x18\n\tPT_GPR10                         = 0x60\n\tPT_GPR11                         = 0x68\n\tPT_GPR12                         = 0x70\n\tPT_GPR13                         = 0x78\n\tPT_GPR14                         = 0x80\n\tPT_GPR15                         = 0x88\n\tPT_GPR2                          = 0x20\n\tPT_GPR3                          = 0x28\n\tPT_GPR4                          = 0x30\n\tPT_GPR5                          = 0x38\n\tPT_GPR6                          = 0x40\n\tPT_GPR7                          = 0x48\n\tPT_GPR8                          = 0x50\n\tPT_GPR9                          = 0x58\n\tPT_IEEE_IP                       = 0x1a8\n\tPT_LASTOFF                       = 0x1a8\n\tPT_ORIGGPR2                      = 0xd0\n\tPT_PSWADDR                       = 0x8\n\tPT_PSWMASK                       = 0x0\n\tRLIMIT_AS                        = 0x9\n\tRLIMIT_MEMLOCK                   = 0x8\n\tRLIMIT_NOFILE                    = 0x7\n\tRLIMIT_NPROC                     = 0x6\n\tRLIMIT_RSS                       = 0x5\n\tRNDADDENTROPY                    = 0x40085203\n\tRNDADDTOENTCNT                   = 0x40045201\n\tRNDCLEARPOOL                     = 0x5206\n\tRNDGETENTCNT                     = 0x80045200\n\tRNDGETPOOL                       = 0x80085202\n\tRNDRESEEDCRNG                    = 0x5207\n\tRNDZAPENTCNT                     = 0x5204\n\tRTC_AIE_OFF                      = 0x7002\n\tRTC_AIE_ON                       = 0x7001\n\tRTC_ALM_READ                     = 0x80247008\n\tRTC_ALM_SET                      = 0x40247007\n\tRTC_EPOCH_READ                   = 0x8008700d\n\tRTC_EPOCH_SET                    = 0x4008700e\n\tRTC_IRQP_READ                    = 0x8008700b\n\tRTC_IRQP_SET                     = 0x4008700c\n\tRTC_PARAM_GET                    = 0x40187013\n\tRTC_PARAM_SET                    = 0x40187014\n\tRTC_PIE_OFF                      = 0x7006\n\tRTC_PIE_ON                       = 0x7005\n\tRTC_PLL_GET                      = 0x80207011\n\tRTC_PLL_SET                      = 0x40207012\n\tRTC_RD_TIME                      = 0x80247009\n\tRTC_SET_TIME                     = 0x4024700a\n\tRTC_UIE_OFF                      = 0x7004\n\tRTC_UIE_ON                       = 0x7003\n\tRTC_VL_CLR                       = 0x7014\n\tRTC_VL_READ                      = 0x80047013\n\tRTC_WIE_OFF                      = 0x7010\n\tRTC_WIE_ON                       = 0x700f\n\tRTC_WKALM_RD                     = 0x80287010\n\tRTC_WKALM_SET                    = 0x4028700f\n\tSCM_DEVMEM_DMABUF                = 0x4f\n\tSCM_DEVMEM_LINEAR                = 0x4e\n\tSCM_TIMESTAMPING                 = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS       = 0x36\n\tSCM_TIMESTAMPING_PKTINFO         = 0x3a\n\tSCM_TIMESTAMPNS                  = 0x23\n\tSCM_TS_OPT_ID                    = 0x51\n\tSCM_TXTIME                       = 0x3d\n\tSCM_WIFI_STATUS                  = 0x29\n\tSECCOMP_IOCTL_NOTIF_ADDFD        = 0x40182103\n\tSECCOMP_IOCTL_NOTIF_ID_VALID     = 0x40082102\n\tSECCOMP_IOCTL_NOTIF_SET_FLAGS    = 0x40082104\n\tSFD_CLOEXEC                      = 0x80000\n\tSFD_NONBLOCK                     = 0x800\n\tSIOCATMARK                       = 0x8905\n\tSIOCGPGRP                        = 0x8904\n\tSIOCGSTAMPNS_NEW                 = 0x80108907\n\tSIOCGSTAMP_NEW                   = 0x80108906\n\tSIOCINQ                          = 0x541b\n\tSIOCOUTQ                         = 0x5411\n\tSIOCSPGRP                        = 0x8902\n\tSOCK_CLOEXEC                     = 0x80000\n\tSOCK_DGRAM                       = 0x2\n\tSOCK_NONBLOCK                    = 0x800\n\tSOCK_STREAM                      = 0x1\n\tSOL_SOCKET                       = 0x1\n\tSO_ACCEPTCONN                    = 0x1e\n\tSO_ATTACH_BPF                    = 0x32\n\tSO_ATTACH_REUSEPORT_CBPF         = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF         = 0x34\n\tSO_BINDTODEVICE                  = 0x19\n\tSO_BINDTOIFINDEX                 = 0x3e\n\tSO_BPF_EXTENSIONS                = 0x30\n\tSO_BROADCAST                     = 0x6\n\tSO_BSDCOMPAT                     = 0xe\n\tSO_BUF_LOCK                      = 0x48\n\tSO_BUSY_POLL                     = 0x2e\n\tSO_BUSY_POLL_BUDGET              = 0x46\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\n\tSO_DEVMEM_DMABUF                 = 0x4f\n\tSO_DEVMEM_DONTNEED               = 0x50\n\tSO_DEVMEM_LINEAR                 = 0x4e\n\tSO_DOMAIN                        = 0x27\n\tSO_DONTROUTE                     = 0x5\n\tSO_ERROR                         = 0x4\n\tSO_INCOMING_CPU                  = 0x31\n\tSO_INCOMING_NAPI_ID              = 0x38\n\tSO_KEEPALIVE                     = 0x9\n\tSO_LINGER                        = 0xd\n\tSO_LOCK_FILTER                   = 0x2c\n\tSO_MARK                          = 0x24\n\tSO_MAX_PACING_RATE               = 0x2f\n\tSO_MEMINFO                       = 0x37\n\tSO_NETNS_COOKIE                  = 0x47\n\tSO_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0xa\n\tSO_PASSCRED                      = 0x10\n\tSO_PASSPIDFD                     = 0x4c\n\tSO_PASSRIGHTS                    = 0x53\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x11\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERPIDFD                     = 0x4d\n\tSO_PEERSEC                       = 0x1f\n\tSO_PREFER_BUSY_POLL              = 0x45\n\tSO_PROTOCOL                      = 0x26\n\tSO_RCVBUF                        = 0x8\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x12\n\tSO_RCVMARK                       = 0x4b\n\tSO_RCVPRIORITY                   = 0x52\n\tSO_RCVTIMEO                      = 0x14\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x14\n\tSO_RESERVE_MEM                   = 0x49\n\tSO_REUSEADDR                     = 0x2\n\tSO_REUSEPORT                     = 0xf\n\tSO_RXQ_OVFL                      = 0x28\n\tSO_SECURITY_AUTHENTICATION       = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK   = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT = 0x17\n\tSO_SELECT_ERR_QUEUE              = 0x2d\n\tSO_SNDBUF                        = 0x7\n\tSO_SNDBUFFORCE                   = 0x20\n\tSO_SNDLOWAT                      = 0x13\n\tSO_SNDTIMEO                      = 0x15\n\tSO_SNDTIMEO_NEW                  = 0x43\n\tSO_SNDTIMEO_OLD                  = 0x15\n\tSO_TIMESTAMPING                  = 0x25\n\tSO_TIMESTAMPING_NEW              = 0x41\n\tSO_TIMESTAMPING_OLD              = 0x25\n\tSO_TIMESTAMPNS                   = 0x23\n\tSO_TIMESTAMPNS_NEW               = 0x40\n\tSO_TIMESTAMPNS_OLD               = 0x23\n\tSO_TIMESTAMP_NEW                 = 0x3f\n\tSO_TXREHASH                      = 0x4a\n\tSO_TXTIME                        = 0x3d\n\tSO_TYPE                          = 0x3\n\tSO_WIFI_STATUS                   = 0x29\n\tSO_ZEROCOPY                      = 0x3c\n\tTAB1                             = 0x800\n\tTAB2                             = 0x1000\n\tTAB3                             = 0x1800\n\tTABDLY                           = 0x1800\n\tTCFLSH                           = 0x540b\n\tTCGETA                           = 0x5405\n\tTCGETS                           = 0x5401\n\tTCGETS2                          = 0x802c542a\n\tTCGETX                           = 0x5432\n\tTCSAFLUSH                        = 0x2\n\tTCSBRK                           = 0x5409\n\tTCSBRKP                          = 0x5425\n\tTCSETA                           = 0x5406\n\tTCSETAF                          = 0x5408\n\tTCSETAW                          = 0x5407\n\tTCSETS                           = 0x5402\n\tTCSETS2                          = 0x402c542b\n\tTCSETSF                          = 0x5404\n\tTCSETSF2                         = 0x402c542d\n\tTCSETSW                          = 0x5403\n\tTCSETSW2                         = 0x402c542c\n\tTCSETX                           = 0x5433\n\tTCSETXF                          = 0x5434\n\tTCSETXW                          = 0x5435\n\tTCXONC                           = 0x540a\n\tTFD_CLOEXEC                      = 0x80000\n\tTFD_NONBLOCK                     = 0x800\n\tTIOCCBRK                         = 0x5428\n\tTIOCCONS                         = 0x541d\n\tTIOCEXCL                         = 0x540c\n\tTIOCGDEV                         = 0x80045432\n\tTIOCGETD                         = 0x5424\n\tTIOCGEXCL                        = 0x80045440\n\tTIOCGICOUNT                      = 0x545d\n\tTIOCGISO7816                     = 0x80285442\n\tTIOCGLCKTRMIOS                   = 0x5456\n\tTIOCGPGRP                        = 0x540f\n\tTIOCGPKT                         = 0x80045438\n\tTIOCGPTLCK                       = 0x80045439\n\tTIOCGPTN                         = 0x80045430\n\tTIOCGPTPEER                      = 0x5441\n\tTIOCGRS485                       = 0x542e\n\tTIOCGSERIAL                      = 0x541e\n\tTIOCGSID                         = 0x5429\n\tTIOCGSOFTCAR                     = 0x5419\n\tTIOCGWINSZ                       = 0x5413\n\tTIOCINQ                          = 0x541b\n\tTIOCLINUX                        = 0x541c\n\tTIOCMBIC                         = 0x5417\n\tTIOCMBIS                         = 0x5416\n\tTIOCMGET                         = 0x5415\n\tTIOCMIWAIT                       = 0x545c\n\tTIOCMSET                         = 0x5418\n\tTIOCM_CAR                        = 0x40\n\tTIOCM_CD                         = 0x40\n\tTIOCM_CTS                        = 0x20\n\tTIOCM_DSR                        = 0x100\n\tTIOCM_RI                         = 0x80\n\tTIOCM_RNG                        = 0x80\n\tTIOCM_SR                         = 0x10\n\tTIOCM_ST                         = 0x8\n\tTIOCNOTTY                        = 0x5422\n\tTIOCNXCL                         = 0x540d\n\tTIOCOUTQ                         = 0x5411\n\tTIOCPKT                          = 0x5420\n\tTIOCSBRK                         = 0x5427\n\tTIOCSCTTY                        = 0x540e\n\tTIOCSERCONFIG                    = 0x5453\n\tTIOCSERGETLSR                    = 0x5459\n\tTIOCSERGETMULTI                  = 0x545a\n\tTIOCSERGSTRUCT                   = 0x5458\n\tTIOCSERGWILD                     = 0x5454\n\tTIOCSERSETMULTI                  = 0x545b\n\tTIOCSERSWILD                     = 0x5455\n\tTIOCSER_TEMT                     = 0x1\n\tTIOCSETD                         = 0x5423\n\tTIOCSIG                          = 0x40045436\n\tTIOCSISO7816                     = 0xc0285443\n\tTIOCSLCKTRMIOS                   = 0x5457\n\tTIOCSPGRP                        = 0x5410\n\tTIOCSPTLCK                       = 0x40045431\n\tTIOCSRS485                       = 0x542f\n\tTIOCSSERIAL                      = 0x541f\n\tTIOCSSOFTCAR                     = 0x541a\n\tTIOCSTI                          = 0x5412\n\tTIOCSWINSZ                       = 0x5414\n\tTIOCVHANGUP                      = 0x5437\n\tTOSTOP                           = 0x100\n\tTUNATTACHFILTER                  = 0x401054d5\n\tTUNDETACHFILTER                  = 0x401054d6\n\tTUNGETDEVNETNS                   = 0x54e3\n\tTUNGETFEATURES                   = 0x800454cf\n\tTUNGETFILTER                     = 0x801054db\n\tTUNGETIFF                        = 0x800454d2\n\tTUNGETSNDBUF                     = 0x800454d3\n\tTUNGETVNETBE                     = 0x800454df\n\tTUNGETVNETHDRSZ                  = 0x800454d7\n\tTUNGETVNETLE                     = 0x800454dd\n\tTUNSETCARRIER                    = 0x400454e2\n\tTUNSETDEBUG                      = 0x400454c9\n\tTUNSETFILTEREBPF                 = 0x800454e1\n\tTUNSETGROUP                      = 0x400454ce\n\tTUNSETIFF                        = 0x400454ca\n\tTUNSETIFINDEX                    = 0x400454da\n\tTUNSETLINK                       = 0x400454cd\n\tTUNSETNOCSUM                     = 0x400454c8\n\tTUNSETOFFLOAD                    = 0x400454d0\n\tTUNSETOWNER                      = 0x400454cc\n\tTUNSETPERSIST                    = 0x400454cb\n\tTUNSETQUEUE                      = 0x400454d9\n\tTUNSETSNDBUF                     = 0x400454d4\n\tTUNSETSTEERINGEBPF               = 0x800454e0\n\tTUNSETTXFILTER                   = 0x400454d1\n\tTUNSETVNETBE                     = 0x400454de\n\tTUNSETVNETHDRSZ                  = 0x400454d8\n\tTUNSETVNETLE                     = 0x400454dc\n\tUBI_IOCATT                       = 0x40186f40\n\tUBI_IOCDET                       = 0x40046f41\n\tUBI_IOCEBCH                      = 0x40044f02\n\tUBI_IOCEBER                      = 0x40044f01\n\tUBI_IOCEBISMAP                   = 0x80044f05\n\tUBI_IOCEBMAP                     = 0x40084f03\n\tUBI_IOCEBUNMAP                   = 0x40044f04\n\tUBI_IOCMKVOL                     = 0x40986f00\n\tUBI_IOCRMVOL                     = 0x40046f01\n\tUBI_IOCRNVOL                     = 0x51106f03\n\tUBI_IOCRPEB                      = 0x40046f04\n\tUBI_IOCRSVOL                     = 0x400c6f02\n\tUBI_IOCSETVOLPROP                = 0x40104f06\n\tUBI_IOCSPEB                      = 0x40046f05\n\tUBI_IOCVOLCRBLK                  = 0x40804f07\n\tUBI_IOCVOLRMBLK                  = 0x4f08\n\tUBI_IOCVOLUP                     = 0x40084f00\n\tVDISCARD                         = 0xd\n\tVEOF                             = 0x4\n\tVEOL                             = 0xb\n\tVEOL2                            = 0x10\n\tVMIN                             = 0x6\n\tVREPRINT                         = 0xc\n\tVSTART                           = 0x8\n\tVSTOP                            = 0x9\n\tVSUSP                            = 0xa\n\tVSWTC                            = 0x7\n\tVT1                              = 0x4000\n\tVTDLY                            = 0x4000\n\tVTIME                            = 0x5\n\tVWERASE                          = 0xe\n\tWDIOC_GETBOOTSTATUS              = 0x80045702\n\tWDIOC_GETPRETIMEOUT              = 0x80045709\n\tWDIOC_GETSTATUS                  = 0x80045701\n\tWDIOC_GETSUPPORT                 = 0x80285700\n\tWDIOC_GETTEMP                    = 0x80045703\n\tWDIOC_GETTIMELEFT                = 0x8004570a\n\tWDIOC_GETTIMEOUT                 = 0x80045707\n\tWDIOC_KEEPALIVE                  = 0x80045705\n\tWDIOC_SETOPTIONS                 = 0x80045704\n\tWORDSIZE                         = 0x40\n\tXCASE                            = 0x4\n\tXTABS                            = 0x1800\n\t_HIDIOCGRAWNAME                  = 0x80804804\n\t_HIDIOCGRAWPHYS                  = 0x80404805\n\t_HIDIOCGRAWUNIQ                  = 0x80404808\n)\n\n// Errors\nconst (\n\tEADDRINUSE      = syscall.Errno(0x62)\n\tEADDRNOTAVAIL   = syscall.Errno(0x63)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x61)\n\tEALREADY        = syscall.Errno(0x72)\n\tEBADE           = syscall.Errno(0x34)\n\tEBADFD          = syscall.Errno(0x4d)\n\tEBADMSG         = syscall.Errno(0x4a)\n\tEBADR           = syscall.Errno(0x35)\n\tEBADRQC         = syscall.Errno(0x38)\n\tEBADSLT         = syscall.Errno(0x39)\n\tEBFONT          = syscall.Errno(0x3b)\n\tECANCELED       = syscall.Errno(0x7d)\n\tECHRNG          = syscall.Errno(0x2c)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x67)\n\tECONNREFUSED    = syscall.Errno(0x6f)\n\tECONNRESET      = syscall.Errno(0x68)\n\tEDEADLK         = syscall.Errno(0x23)\n\tEDEADLOCK       = syscall.Errno(0x23)\n\tEDESTADDRREQ    = syscall.Errno(0x59)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x7a)\n\tEHOSTDOWN       = syscall.Errno(0x70)\n\tEHOSTUNREACH    = syscall.Errno(0x71)\n\tEHWPOISON       = syscall.Errno(0x85)\n\tEIDRM           = syscall.Errno(0x2b)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x73)\n\tEISCONN         = syscall.Errno(0x6a)\n\tEISNAM          = syscall.Errno(0x78)\n\tEKEYEXPIRED     = syscall.Errno(0x7f)\n\tEKEYREJECTED    = syscall.Errno(0x81)\n\tEKEYREVOKED     = syscall.Errno(0x80)\n\tEL2HLT          = syscall.Errno(0x33)\n\tEL2NSYNC        = syscall.Errno(0x2d)\n\tEL3HLT          = syscall.Errno(0x2e)\n\tEL3RST          = syscall.Errno(0x2f)\n\tELIBACC         = syscall.Errno(0x4f)\n\tELIBBAD         = syscall.Errno(0x50)\n\tELIBEXEC        = syscall.Errno(0x53)\n\tELIBMAX         = syscall.Errno(0x52)\n\tELIBSCN         = syscall.Errno(0x51)\n\tELNRNG          = syscall.Errno(0x30)\n\tELOOP           = syscall.Errno(0x28)\n\tEMEDIUMTYPE     = syscall.Errno(0x7c)\n\tEMSGSIZE        = syscall.Errno(0x5a)\n\tEMULTIHOP       = syscall.Errno(0x48)\n\tENAMETOOLONG    = syscall.Errno(0x24)\n\tENAVAIL         = syscall.Errno(0x77)\n\tENETDOWN        = syscall.Errno(0x64)\n\tENETRESET       = syscall.Errno(0x66)\n\tENETUNREACH     = syscall.Errno(0x65)\n\tENOANO          = syscall.Errno(0x37)\n\tENOBUFS         = syscall.Errno(0x69)\n\tENOCSI          = syscall.Errno(0x32)\n\tENODATA         = syscall.Errno(0x3d)\n\tENOKEY          = syscall.Errno(0x7e)\n\tENOLCK          = syscall.Errno(0x25)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x7b)\n\tENOMSG          = syscall.Errno(0x2a)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x5c)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x26)\n\tENOTCONN        = syscall.Errno(0x6b)\n\tENOTEMPTY       = syscall.Errno(0x27)\n\tENOTNAM         = syscall.Errno(0x76)\n\tENOTRECOVERABLE = syscall.Errno(0x83)\n\tENOTSOCK        = syscall.Errno(0x58)\n\tENOTSUP         = syscall.Errno(0x5f)\n\tENOTUNIQ        = syscall.Errno(0x4c)\n\tEOPNOTSUPP      = syscall.Errno(0x5f)\n\tEOVERFLOW       = syscall.Errno(0x4b)\n\tEOWNERDEAD      = syscall.Errno(0x82)\n\tEPFNOSUPPORT    = syscall.Errno(0x60)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x5d)\n\tEPROTOTYPE      = syscall.Errno(0x5b)\n\tEREMCHG         = syscall.Errno(0x4e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x79)\n\tERESTART        = syscall.Errno(0x55)\n\tERFKILL         = syscall.Errno(0x84)\n\tESHUTDOWN       = syscall.Errno(0x6c)\n\tESOCKTNOSUPPORT = syscall.Errno(0x5e)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x74)\n\tESTRPIPE        = syscall.Errno(0x56)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x6e)\n\tETOOMANYREFS    = syscall.Errno(0x6d)\n\tEUCLEAN         = syscall.Errno(0x75)\n\tEUNATCH         = syscall.Errno(0x31)\n\tEUSERS          = syscall.Errno(0x57)\n\tEXFULL          = syscall.Errno(0x36)\n)\n\n// Signals\nconst (\n\tSIGBUS    = syscall.Signal(0x7)\n\tSIGCHLD   = syscall.Signal(0x11)\n\tSIGCLD    = syscall.Signal(0x11)\n\tSIGCONT   = syscall.Signal(0x12)\n\tSIGIO     = syscall.Signal(0x1d)\n\tSIGPOLL   = syscall.Signal(0x1d)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x1e)\n\tSIGSTKFLT = syscall.Signal(0x10)\n\tSIGSTOP   = syscall.Signal(0x13)\n\tSIGSYS    = syscall.Signal(0x1f)\n\tSIGTSTP   = syscall.Signal(0x14)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x17)\n\tSIGUSR1   = syscall.Signal(0xa)\n\tSIGUSR2   = syscall.Signal(0xc)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{36, \"ENAMETOOLONG\", \"file name too long\"},\n\t{37, \"ENOLCK\", \"no locks available\"},\n\t{38, \"ENOSYS\", \"function not implemented\"},\n\t{39, \"ENOTEMPTY\", \"directory not empty\"},\n\t{40, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{42, \"ENOMSG\", \"no message of desired type\"},\n\t{43, \"EIDRM\", \"identifier removed\"},\n\t{44, \"ECHRNG\", \"channel number out of range\"},\n\t{45, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{46, \"EL3HLT\", \"level 3 halted\"},\n\t{47, \"EL3RST\", \"level 3 reset\"},\n\t{48, \"ELNRNG\", \"link number out of range\"},\n\t{49, \"EUNATCH\", \"protocol driver not attached\"},\n\t{50, \"ENOCSI\", \"no CSI structure available\"},\n\t{51, \"EL2HLT\", \"level 2 halted\"},\n\t{52, \"EBADE\", \"invalid exchange\"},\n\t{53, \"EBADR\", \"invalid request descriptor\"},\n\t{54, \"EXFULL\", \"exchange full\"},\n\t{55, \"ENOANO\", \"no anode\"},\n\t{56, \"EBADRQC\", \"invalid request code\"},\n\t{57, \"EBADSLT\", \"invalid slot\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{72, \"EMULTIHOP\", \"multihop attempted\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EBADMSG\", \"bad message\"},\n\t{75, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{76, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{77, \"EBADFD\", \"file descriptor in bad state\"},\n\t{78, \"EREMCHG\", \"remote address changed\"},\n\t{79, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{80, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{81, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{82, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{83, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{84, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{85, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{86, \"ESTRPIPE\", \"streams pipe error\"},\n\t{87, \"EUSERS\", \"too many users\"},\n\t{88, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{89, \"EDESTADDRREQ\", \"destination address required\"},\n\t{90, \"EMSGSIZE\", \"message too long\"},\n\t{91, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{92, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{93, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{94, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{95, \"ENOTSUP\", \"operation not supported\"},\n\t{96, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{97, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{98, \"EADDRINUSE\", \"address already in use\"},\n\t{99, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{100, \"ENETDOWN\", \"network is down\"},\n\t{101, \"ENETUNREACH\", \"network is unreachable\"},\n\t{102, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{103, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{104, \"ECONNRESET\", \"connection reset by peer\"},\n\t{105, \"ENOBUFS\", \"no buffer space available\"},\n\t{106, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{107, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{108, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{109, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{110, \"ETIMEDOUT\", \"connection timed out\"},\n\t{111, \"ECONNREFUSED\", \"connection refused\"},\n\t{112, \"EHOSTDOWN\", \"host is down\"},\n\t{113, \"EHOSTUNREACH\", \"no route to host\"},\n\t{114, \"EALREADY\", \"operation already in progress\"},\n\t{115, \"EINPROGRESS\", \"operation now in progress\"},\n\t{116, \"ESTALE\", \"stale file handle\"},\n\t{117, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{118, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{119, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{120, \"EISNAM\", \"is a named type file\"},\n\t{121, \"EREMOTEIO\", \"remote I/O error\"},\n\t{122, \"EDQUOT\", \"disk quota exceeded\"},\n\t{123, \"ENOMEDIUM\", \"no medium found\"},\n\t{124, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{125, \"ECANCELED\", \"operation canceled\"},\n\t{126, \"ENOKEY\", \"required key not available\"},\n\t{127, \"EKEYEXPIRED\", \"key has expired\"},\n\t{128, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{129, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{130, \"EOWNERDEAD\", \"owner died\"},\n\t{131, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{132, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{133, \"EHWPOISON\", \"memory page has hardware error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGBUS\", \"bus error\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGUSR1\", \"user defined signal 1\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGUSR2\", \"user defined signal 2\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGSTKFLT\", \"stack fault\"},\n\t{17, \"SIGCHLD\", \"child exited\"},\n\t{18, \"SIGCONT\", \"continued\"},\n\t{19, \"SIGSTOP\", \"stopped (signal)\"},\n\t{20, \"SIGTSTP\", \"stopped\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGURG\", \"urgent I/O condition\"},\n\t{24, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"file size limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window changed\"},\n\t{29, \"SIGIO\", \"I/O possible\"},\n\t{30, \"SIGPWR\", \"power failure\"},\n\t{31, \"SIGSYS\", \"bad system call\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/sparc64/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build sparc64 && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/sparc64/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tASI_LEON_DFLUSH                  = 0x11\n\tASI_LEON_IFLUSH                  = 0x10\n\tASI_LEON_MMUFLUSH                = 0x18\n\tB1000000                         = 0x1008\n\tB115200                          = 0x1002\n\tB1152000                         = 0x1009\n\tB1500000                         = 0x100a\n\tB2000000                         = 0x100b\n\tB230400                          = 0x1003\n\tB2500000                         = 0x100c\n\tB3000000                         = 0x100d\n\tB3500000                         = 0x100e\n\tB4000000                         = 0x100f\n\tB460800                          = 0x1004\n\tB500000                          = 0x1005\n\tB57600                           = 0x1001\n\tB576000                          = 0x1006\n\tB921600                          = 0x1007\n\tBLKALIGNOFF                      = 0x2000127a\n\tBLKBSZGET                        = 0x40081270\n\tBLKBSZSET                        = 0x80081271\n\tBLKDISCARD                       = 0x20001277\n\tBLKDISCARDZEROES                 = 0x2000127c\n\tBLKFLSBUF                        = 0x20001261\n\tBLKFRAGET                        = 0x20001265\n\tBLKFRASET                        = 0x20001264\n\tBLKGETDISKSEQ                    = 0x40081280\n\tBLKGETSIZE                       = 0x20001260\n\tBLKGETSIZE64                     = 0x40081272\n\tBLKIOMIN                         = 0x20001278\n\tBLKIOOPT                         = 0x20001279\n\tBLKPBSZGET                       = 0x2000127b\n\tBLKRAGET                         = 0x20001263\n\tBLKRASET                         = 0x20001262\n\tBLKROGET                         = 0x2000125e\n\tBLKROSET                         = 0x2000125d\n\tBLKROTATIONAL                    = 0x2000127e\n\tBLKRRPART                        = 0x2000125f\n\tBLKSECDISCARD                    = 0x2000127d\n\tBLKSECTGET                       = 0x20001267\n\tBLKSECTSET                       = 0x20001266\n\tBLKSSZGET                        = 0x20001268\n\tBLKZEROOUT                       = 0x2000127f\n\tBOTHER                           = 0x1000\n\tBS1                              = 0x2000\n\tBSDLY                            = 0x2000\n\tCBAUD                            = 0x100f\n\tCBAUDEX                          = 0x1000\n\tCIBAUD                           = 0x100f0000\n\tCLOCAL                           = 0x800\n\tCR1                              = 0x200\n\tCR2                              = 0x400\n\tCR3                              = 0x600\n\tCRDLY                            = 0x600\n\tCREAD                            = 0x80\n\tCS6                              = 0x10\n\tCS7                              = 0x20\n\tCS8                              = 0x30\n\tCSIZE                            = 0x30\n\tCSTOPB                           = 0x40\n\tDM_MPATH_PROBE_PATHS             = 0x2000fd12\n\tECCGETLAYOUT                     = 0x41484d11\n\tECCGETSTATS                      = 0x40104d12\n\tECHOCTL                          = 0x200\n\tECHOE                            = 0x10\n\tECHOK                            = 0x20\n\tECHOKE                           = 0x800\n\tECHONL                           = 0x40\n\tECHOPRT                          = 0x400\n\tEFD_CLOEXEC                      = 0x400000\n\tEFD_NONBLOCK                     = 0x4000\n\tEMT_TAGOVF                       = 0x1\n\tEPIOCGPARAMS                     = 0x40088a02\n\tEPIOCSPARAMS                     = 0x80088a01\n\tEPOLL_CLOEXEC                    = 0x400000\n\tEXTPROC                          = 0x10000\n\tFF1                              = 0x8000\n\tFFDLY                            = 0x8000\n\tFICLONE                          = 0x80049409\n\tFICLONERANGE                     = 0x8020940d\n\tFLUSHO                           = 0x1000\n\tFS_IOC_ENABLE_VERITY             = 0x80806685\n\tFS_IOC_GETFLAGS                  = 0x40086601\n\tFS_IOC_GET_ENCRYPTION_NONCE      = 0x4010661b\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x800c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x80106614\n\tFS_IOC_SETFLAGS                  = 0x80086602\n\tFS_IOC_SET_ENCRYPTION_POLICY     = 0x400c6613\n\tF_GETLK                          = 0x7\n\tF_GETLK64                        = 0x7\n\tF_GETOWN                         = 0x5\n\tF_RDLCK                          = 0x1\n\tF_SETLK                          = 0x8\n\tF_SETLK64                        = 0x8\n\tF_SETLKW                         = 0x9\n\tF_SETLKW64                       = 0x9\n\tF_SETOWN                         = 0x6\n\tF_UNLCK                          = 0x3\n\tF_WRLCK                          = 0x2\n\tHIDIOCGRAWINFO                   = 0x40084803\n\tHIDIOCGRDESC                     = 0x50044802\n\tHIDIOCGRDESCSIZE                 = 0x40044801\n\tHIDIOCREVOKE                     = 0x8004480d\n\tHUPCL                            = 0x400\n\tICANON                           = 0x2\n\tIEXTEN                           = 0x8000\n\tIN_CLOEXEC                       = 0x400000\n\tIN_NONBLOCK                      = 0x4000\n\tIOCTL_MEI_NOTIFY_GET             = 0x40044803\n\tIOCTL_MEI_NOTIFY_SET             = 0x80044802\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x200007b9\n\tIPV6_FLOWINFO_MASK               = 0xfffffff\n\tIPV6_FLOWLABEL_MASK              = 0xfffff\n\tISIG                             = 0x1\n\tIUCLC                            = 0x200\n\tIXOFF                            = 0x1000\n\tIXON                             = 0x400\n\tMAP_ANON                         = 0x20\n\tMAP_ANONYMOUS                    = 0x20\n\tMAP_DENYWRITE                    = 0x800\n\tMAP_EXECUTABLE                   = 0x1000\n\tMAP_GROWSDOWN                    = 0x200\n\tMAP_HUGETLB                      = 0x40000\n\tMAP_LOCKED                       = 0x100\n\tMAP_NONBLOCK                     = 0x10000\n\tMAP_NORESERVE                    = 0x40\n\tMAP_POPULATE                     = 0x8000\n\tMAP_RENAME                       = 0x20\n\tMAP_STACK                        = 0x20000\n\tMAP_SYNC                         = 0x80000\n\tMCL_CURRENT                      = 0x2000\n\tMCL_FUTURE                       = 0x4000\n\tMCL_ONFAULT                      = 0x8000\n\tMEMERASE                         = 0x80084d02\n\tMEMERASE64                       = 0x80104d14\n\tMEMGETBADBLOCK                   = 0x80084d0b\n\tMEMGETINFO                       = 0x40204d01\n\tMEMGETOOBSEL                     = 0x40c84d0a\n\tMEMGETREGIONCOUNT                = 0x40044d07\n\tMEMISLOCKED                      = 0x40084d17\n\tMEMLOCK                          = 0x80084d05\n\tMEMREAD                          = 0xc0404d1a\n\tMEMREADOOB                       = 0xc0104d04\n\tMEMSETBADBLOCK                   = 0x80084d0c\n\tMEMUNLOCK                        = 0x80084d06\n\tMEMWRITEOOB                      = 0xc0104d03\n\tMTDFILEMODE                      = 0x20004d13\n\tNFDBITS                          = 0x40\n\tNLDLY                            = 0x100\n\tNOFLSH                           = 0x80\n\tNS_GET_MNTNS_ID                  = 0x4008b705\n\tNS_GET_NSTYPE                    = 0x2000b703\n\tNS_GET_OWNER_UID                 = 0x2000b704\n\tNS_GET_PARENT                    = 0x2000b702\n\tNS_GET_PID_FROM_PIDNS            = 0x4004b706\n\tNS_GET_PID_IN_PIDNS              = 0x4004b708\n\tNS_GET_TGID_FROM_PIDNS           = 0x4004b707\n\tNS_GET_TGID_IN_PIDNS             = 0x4004b709\n\tNS_GET_USERNS                    = 0x2000b701\n\tOLCUC                            = 0x2\n\tONLCR                            = 0x4\n\tOTPERASE                         = 0x800c4d19\n\tOTPGETREGIONCOUNT                = 0x80044d0e\n\tOTPGETREGIONINFO                 = 0x800c4d0f\n\tOTPLOCK                          = 0x400c4d10\n\tOTPSELECT                        = 0x40044d0d\n\tO_APPEND                         = 0x8\n\tO_ASYNC                          = 0x40\n\tO_CLOEXEC                        = 0x400000\n\tO_CREAT                          = 0x200\n\tO_DIRECT                         = 0x100000\n\tO_DIRECTORY                      = 0x10000\n\tO_DSYNC                          = 0x2000\n\tO_EXCL                           = 0x800\n\tO_FSYNC                          = 0x802000\n\tO_LARGEFILE                      = 0x0\n\tO_NDELAY                         = 0x4004\n\tO_NOATIME                        = 0x200000\n\tO_NOCTTY                         = 0x8000\n\tO_NOFOLLOW                       = 0x20000\n\tO_NONBLOCK                       = 0x4000\n\tO_PATH                           = 0x1000000\n\tO_RSYNC                          = 0x802000\n\tO_SYNC                           = 0x802000\n\tO_TMPFILE                        = 0x2010000\n\tO_TRUNC                          = 0x400\n\tPARENB                           = 0x100\n\tPARODD                           = 0x200\n\tPENDIN                           = 0x4000\n\tPERF_EVENT_IOC_DISABLE           = 0x20002401\n\tPERF_EVENT_IOC_ENABLE            = 0x20002400\n\tPERF_EVENT_IOC_ID                = 0x40082407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8008240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT      = 0x80042409\n\tPERF_EVENT_IOC_PERIOD            = 0x80082404\n\tPERF_EVENT_IOC_QUERY_BPF         = 0xc008240a\n\tPERF_EVENT_IOC_REFRESH           = 0x20002402\n\tPERF_EVENT_IOC_RESET             = 0x20002403\n\tPERF_EVENT_IOC_SET_BPF           = 0x80042408\n\tPERF_EVENT_IOC_SET_FILTER        = 0x80082406\n\tPERF_EVENT_IOC_SET_OUTPUT        = 0x20002405\n\tPPPIOCATTACH                     = 0x8004743d\n\tPPPIOCATTCHAN                    = 0x80047438\n\tPPPIOCBRIDGECHAN                 = 0x80047435\n\tPPPIOCCONNECT                    = 0x8004743a\n\tPPPIOCDETACH                     = 0x8004743c\n\tPPPIOCDISCONN                    = 0x20007439\n\tPPPIOCGASYNCMAP                  = 0x40047458\n\tPPPIOCGCHAN                      = 0x40047437\n\tPPPIOCGDEBUG                     = 0x40047441\n\tPPPIOCGFLAGS                     = 0x4004745a\n\tPPPIOCGIDLE                      = 0x4010743f\n\tPPPIOCGIDLE32                    = 0x4008743f\n\tPPPIOCGIDLE64                    = 0x4010743f\n\tPPPIOCGL2TPSTATS                 = 0x40487436\n\tPPPIOCGMRU                       = 0x40047453\n\tPPPIOCGRASYNCMAP                 = 0x40047455\n\tPPPIOCGUNIT                      = 0x40047456\n\tPPPIOCGXASYNCMAP                 = 0x40207450\n\tPPPIOCSACTIVE                    = 0x80107446\n\tPPPIOCSASYNCMAP                  = 0x80047457\n\tPPPIOCSCOMPRESS                  = 0x8010744d\n\tPPPIOCSDEBUG                     = 0x80047440\n\tPPPIOCSFLAGS                     = 0x80047459\n\tPPPIOCSMAXCID                    = 0x80047451\n\tPPPIOCSMRRU                      = 0x8004743b\n\tPPPIOCSMRU                       = 0x80047452\n\tPPPIOCSNPMODE                    = 0x8008744b\n\tPPPIOCSPASS                      = 0x80107447\n\tPPPIOCSRASYNCMAP                 = 0x80047454\n\tPPPIOCSXASYNCMAP                 = 0x8020744f\n\tPPPIOCUNBRIDGECHAN               = 0x20007434\n\tPPPIOCXFERUNIT                   = 0x2000744e\n\tPR_SET_PTRACER_ANY               = 0xffffffffffffffff\n\tPTP_CLOCK_GETCAPS                = 0x40503d01\n\tPTP_CLOCK_GETCAPS2               = 0x40503d0a\n\tPTP_ENABLE_PPS                   = 0x80043d04\n\tPTP_ENABLE_PPS2                  = 0x80043d0d\n\tPTP_EXTTS_REQUEST                = 0x80103d02\n\tPTP_EXTTS_REQUEST2               = 0x80103d0b\n\tPTP_MASK_CLEAR_ALL               = 0x20003d13\n\tPTP_MASK_EN_SINGLE               = 0x80043d14\n\tPTP_PEROUT_REQUEST               = 0x80383d03\n\tPTP_PEROUT_REQUEST2              = 0x80383d0c\n\tPTP_PIN_SETFUNC                  = 0x80603d07\n\tPTP_PIN_SETFUNC2                 = 0x80603d10\n\tPTP_SYS_OFFSET                   = 0x83403d05\n\tPTP_SYS_OFFSET2                  = 0x83403d0e\n\tPTRACE_GETFPAREGS                = 0x14\n\tPTRACE_GETFPREGS                 = 0xe\n\tPTRACE_GETFPREGS64               = 0x19\n\tPTRACE_GETREGS64                 = 0x16\n\tPTRACE_READDATA                  = 0x10\n\tPTRACE_READTEXT                  = 0x12\n\tPTRACE_SETFPAREGS                = 0x15\n\tPTRACE_SETFPREGS                 = 0xf\n\tPTRACE_SETFPREGS64               = 0x1a\n\tPTRACE_SETREGS64                 = 0x17\n\tPTRACE_SPARC_DETACH              = 0xb\n\tPTRACE_WRITEDATA                 = 0x11\n\tPTRACE_WRITETEXT                 = 0x13\n\tPT_FP                            = 0x48\n\tPT_G0                            = 0x10\n\tPT_G1                            = 0x14\n\tPT_G2                            = 0x18\n\tPT_G3                            = 0x1c\n\tPT_G4                            = 0x20\n\tPT_G5                            = 0x24\n\tPT_G6                            = 0x28\n\tPT_G7                            = 0x2c\n\tPT_I0                            = 0x30\n\tPT_I1                            = 0x34\n\tPT_I2                            = 0x38\n\tPT_I3                            = 0x3c\n\tPT_I4                            = 0x40\n\tPT_I5                            = 0x44\n\tPT_I6                            = 0x48\n\tPT_I7                            = 0x4c\n\tPT_NPC                           = 0x8\n\tPT_PC                            = 0x4\n\tPT_PSR                           = 0x0\n\tPT_REGS_MAGIC                    = 0x57ac6c00\n\tPT_TNPC                          = 0x90\n\tPT_TPC                           = 0x88\n\tPT_TSTATE                        = 0x80\n\tPT_V9_FP                         = 0x70\n\tPT_V9_G0                         = 0x0\n\tPT_V9_G1                         = 0x8\n\tPT_V9_G2                         = 0x10\n\tPT_V9_G3                         = 0x18\n\tPT_V9_G4                         = 0x20\n\tPT_V9_G5                         = 0x28\n\tPT_V9_G6                         = 0x30\n\tPT_V9_G7                         = 0x38\n\tPT_V9_I0                         = 0x40\n\tPT_V9_I1                         = 0x48\n\tPT_V9_I2                         = 0x50\n\tPT_V9_I3                         = 0x58\n\tPT_V9_I4                         = 0x60\n\tPT_V9_I5                         = 0x68\n\tPT_V9_I6                         = 0x70\n\tPT_V9_I7                         = 0x78\n\tPT_V9_MAGIC                      = 0x9c\n\tPT_V9_TNPC                       = 0x90\n\tPT_V9_TPC                        = 0x88\n\tPT_V9_TSTATE                     = 0x80\n\tPT_V9_Y                          = 0x98\n\tPT_WIM                           = 0x10\n\tPT_Y                             = 0xc\n\tRLIMIT_AS                        = 0x9\n\tRLIMIT_MEMLOCK                   = 0x8\n\tRLIMIT_NOFILE                    = 0x6\n\tRLIMIT_NPROC                     = 0x7\n\tRLIMIT_RSS                       = 0x5\n\tRNDADDENTROPY                    = 0x80085203\n\tRNDADDTOENTCNT                   = 0x80045201\n\tRNDCLEARPOOL                     = 0x20005206\n\tRNDGETENTCNT                     = 0x40045200\n\tRNDGETPOOL                       = 0x40085202\n\tRNDRESEEDCRNG                    = 0x20005207\n\tRNDZAPENTCNT                     = 0x20005204\n\tRTC_AIE_OFF                      = 0x20007002\n\tRTC_AIE_ON                       = 0x20007001\n\tRTC_ALM_READ                     = 0x40247008\n\tRTC_ALM_SET                      = 0x80247007\n\tRTC_EPOCH_READ                   = 0x4008700d\n\tRTC_EPOCH_SET                    = 0x8008700e\n\tRTC_IRQP_READ                    = 0x4008700b\n\tRTC_IRQP_SET                     = 0x8008700c\n\tRTC_PARAM_GET                    = 0x80187013\n\tRTC_PARAM_SET                    = 0x80187014\n\tRTC_PIE_OFF                      = 0x20007006\n\tRTC_PIE_ON                       = 0x20007005\n\tRTC_PLL_GET                      = 0x40207011\n\tRTC_PLL_SET                      = 0x80207012\n\tRTC_RD_TIME                      = 0x40247009\n\tRTC_SET_TIME                     = 0x8024700a\n\tRTC_UIE_OFF                      = 0x20007004\n\tRTC_UIE_ON                       = 0x20007003\n\tRTC_VL_CLR                       = 0x20007014\n\tRTC_VL_READ                      = 0x40047013\n\tRTC_WIE_OFF                      = 0x20007010\n\tRTC_WIE_ON                       = 0x2000700f\n\tRTC_WKALM_RD                     = 0x40287010\n\tRTC_WKALM_SET                    = 0x8028700f\n\tSCM_DEVMEM_DMABUF                = 0x58\n\tSCM_DEVMEM_LINEAR                = 0x57\n\tSCM_TIMESTAMPING                 = 0x23\n\tSCM_TIMESTAMPING_OPT_STATS       = 0x38\n\tSCM_TIMESTAMPING_PKTINFO         = 0x3c\n\tSCM_TIMESTAMPNS                  = 0x21\n\tSCM_TS_OPT_ID                    = 0x5a\n\tSCM_TXTIME                       = 0x3f\n\tSCM_WIFI_STATUS                  = 0x25\n\tSECCOMP_IOCTL_NOTIF_ADDFD        = 0x80182103\n\tSECCOMP_IOCTL_NOTIF_ID_VALID     = 0x80082102\n\tSECCOMP_IOCTL_NOTIF_SET_FLAGS    = 0x80082104\n\tSFD_CLOEXEC                      = 0x400000\n\tSFD_NONBLOCK                     = 0x4000\n\tSF_FP                            = 0x38\n\tSF_I0                            = 0x20\n\tSF_I1                            = 0x24\n\tSF_I2                            = 0x28\n\tSF_I3                            = 0x2c\n\tSF_I4                            = 0x30\n\tSF_I5                            = 0x34\n\tSF_L0                            = 0x0\n\tSF_L1                            = 0x4\n\tSF_L2                            = 0x8\n\tSF_L3                            = 0xc\n\tSF_L4                            = 0x10\n\tSF_L5                            = 0x14\n\tSF_L6                            = 0x18\n\tSF_L7                            = 0x1c\n\tSF_PC                            = 0x3c\n\tSF_RETP                          = 0x40\n\tSF_V9_FP                         = 0x70\n\tSF_V9_I0                         = 0x40\n\tSF_V9_I1                         = 0x48\n\tSF_V9_I2                         = 0x50\n\tSF_V9_I3                         = 0x58\n\tSF_V9_I4                         = 0x60\n\tSF_V9_I5                         = 0x68\n\tSF_V9_L0                         = 0x0\n\tSF_V9_L1                         = 0x8\n\tSF_V9_L2                         = 0x10\n\tSF_V9_L3                         = 0x18\n\tSF_V9_L4                         = 0x20\n\tSF_V9_L5                         = 0x28\n\tSF_V9_L6                         = 0x30\n\tSF_V9_L7                         = 0x38\n\tSF_V9_PC                         = 0x78\n\tSF_V9_RETP                       = 0x80\n\tSF_V9_XARG0                      = 0x88\n\tSF_V9_XARG1                      = 0x90\n\tSF_V9_XARG2                      = 0x98\n\tSF_V9_XARG3                      = 0xa0\n\tSF_V9_XARG4                      = 0xa8\n\tSF_V9_XARG5                      = 0xb0\n\tSF_V9_XXARG                      = 0xb8\n\tSF_XARG0                         = 0x44\n\tSF_XARG1                         = 0x48\n\tSF_XARG2                         = 0x4c\n\tSF_XARG3                         = 0x50\n\tSF_XARG4                         = 0x54\n\tSF_XARG5                         = 0x58\n\tSF_XXARG                         = 0x5c\n\tSIOCATMARK                       = 0x8905\n\tSIOCGPGRP                        = 0x8904\n\tSIOCGSTAMPNS_NEW                 = 0x40108907\n\tSIOCGSTAMP_NEW                   = 0x40108906\n\tSIOCINQ                          = 0x4004667f\n\tSIOCOUTQ                         = 0x40047473\n\tSIOCSPGRP                        = 0x8902\n\tSOCK_CLOEXEC                     = 0x400000\n\tSOCK_DGRAM                       = 0x2\n\tSOCK_NONBLOCK                    = 0x4000\n\tSOCK_STREAM                      = 0x1\n\tSOL_SOCKET                       = 0xffff\n\tSO_ACCEPTCONN                    = 0x8000\n\tSO_ATTACH_BPF                    = 0x34\n\tSO_ATTACH_REUSEPORT_CBPF         = 0x35\n\tSO_ATTACH_REUSEPORT_EBPF         = 0x36\n\tSO_BINDTODEVICE                  = 0xd\n\tSO_BINDTOIFINDEX                 = 0x41\n\tSO_BPF_EXTENSIONS                = 0x32\n\tSO_BROADCAST                     = 0x20\n\tSO_BSDCOMPAT                     = 0x400\n\tSO_BUF_LOCK                      = 0x51\n\tSO_BUSY_POLL                     = 0x30\n\tSO_BUSY_POLL_BUDGET              = 0x49\n\tSO_CNX_ADVICE                    = 0x37\n\tSO_COOKIE                        = 0x3b\n\tSO_DETACH_REUSEPORT_BPF          = 0x47\n\tSO_DEVMEM_DMABUF                 = 0x58\n\tSO_DEVMEM_DONTNEED               = 0x59\n\tSO_DEVMEM_LINEAR                 = 0x57\n\tSO_DOMAIN                        = 0x1029\n\tSO_DONTROUTE                     = 0x10\n\tSO_ERROR                         = 0x1007\n\tSO_INCOMING_CPU                  = 0x33\n\tSO_INCOMING_NAPI_ID              = 0x3a\n\tSO_KEEPALIVE                     = 0x8\n\tSO_LINGER                        = 0x80\n\tSO_LOCK_FILTER                   = 0x28\n\tSO_MARK                          = 0x22\n\tSO_MAX_PACING_RATE               = 0x31\n\tSO_MEMINFO                       = 0x39\n\tSO_NETNS_COOKIE                  = 0x50\n\tSO_NOFCS                         = 0x27\n\tSO_OOBINLINE                     = 0x100\n\tSO_PASSCRED                      = 0x2\n\tSO_PASSPIDFD                     = 0x55\n\tSO_PASSRIGHTS                    = 0x5c\n\tSO_PASSSEC                       = 0x1f\n\tSO_PEEK_OFF                      = 0x26\n\tSO_PEERCRED                      = 0x40\n\tSO_PEERGROUPS                    = 0x3d\n\tSO_PEERPIDFD                     = 0x56\n\tSO_PEERSEC                       = 0x1e\n\tSO_PREFER_BUSY_POLL              = 0x48\n\tSO_PROTOCOL                      = 0x1028\n\tSO_RCVBUF                        = 0x1002\n\tSO_RCVBUFFORCE                   = 0x100b\n\tSO_RCVLOWAT                      = 0x800\n\tSO_RCVMARK                       = 0x54\n\tSO_RCVPRIORITY                   = 0x5b\n\tSO_RCVTIMEO                      = 0x2000\n\tSO_RCVTIMEO_NEW                  = 0x44\n\tSO_RCVTIMEO_OLD                  = 0x2000\n\tSO_RESERVE_MEM                   = 0x52\n\tSO_REUSEADDR                     = 0x4\n\tSO_REUSEPORT                     = 0x200\n\tSO_RXQ_OVFL                      = 0x24\n\tSO_SECURITY_AUTHENTICATION       = 0x5001\n\tSO_SECURITY_ENCRYPTION_NETWORK   = 0x5004\n\tSO_SECURITY_ENCRYPTION_TRANSPORT = 0x5002\n\tSO_SELECT_ERR_QUEUE              = 0x29\n\tSO_SNDBUF                        = 0x1001\n\tSO_SNDBUFFORCE                   = 0x100a\n\tSO_SNDLOWAT                      = 0x1000\n\tSO_SNDTIMEO                      = 0x4000\n\tSO_SNDTIMEO_NEW                  = 0x45\n\tSO_SNDTIMEO_OLD                  = 0x4000\n\tSO_TIMESTAMPING                  = 0x23\n\tSO_TIMESTAMPING_NEW              = 0x43\n\tSO_TIMESTAMPING_OLD              = 0x23\n\tSO_TIMESTAMPNS                   = 0x21\n\tSO_TIMESTAMPNS_NEW               = 0x42\n\tSO_TIMESTAMPNS_OLD               = 0x21\n\tSO_TIMESTAMP_NEW                 = 0x46\n\tSO_TXREHASH                      = 0x53\n\tSO_TXTIME                        = 0x3f\n\tSO_TYPE                          = 0x1008\n\tSO_WIFI_STATUS                   = 0x25\n\tSO_ZEROCOPY                      = 0x3e\n\tTAB1                             = 0x800\n\tTAB2                             = 0x1000\n\tTAB3                             = 0x1800\n\tTABDLY                           = 0x1800\n\tTCFLSH                           = 0x20005407\n\tTCGETA                           = 0x40125401\n\tTCGETS                           = 0x40245408\n\tTCGETS2                          = 0x402c540c\n\tTCSAFLUSH                        = 0x2\n\tTCSBRK                           = 0x20005405\n\tTCSBRKP                          = 0x5425\n\tTCSETA                           = 0x80125402\n\tTCSETAF                          = 0x80125404\n\tTCSETAW                          = 0x80125403\n\tTCSETS                           = 0x80245409\n\tTCSETS2                          = 0x802c540d\n\tTCSETSF                          = 0x8024540b\n\tTCSETSF2                         = 0x802c540f\n\tTCSETSW                          = 0x8024540a\n\tTCSETSW2                         = 0x802c540e\n\tTCXONC                           = 0x20005406\n\tTFD_CLOEXEC                      = 0x400000\n\tTFD_NONBLOCK                     = 0x4000\n\tTIOCCBRK                         = 0x2000747a\n\tTIOCCONS                         = 0x20007424\n\tTIOCEXCL                         = 0x2000740d\n\tTIOCGDEV                         = 0x40045432\n\tTIOCGETD                         = 0x40047400\n\tTIOCGEXCL                        = 0x40045440\n\tTIOCGICOUNT                      = 0x545d\n\tTIOCGISO7816                     = 0x40285443\n\tTIOCGLCKTRMIOS                   = 0x5456\n\tTIOCGPGRP                        = 0x40047483\n\tTIOCGPKT                         = 0x40045438\n\tTIOCGPTLCK                       = 0x40045439\n\tTIOCGPTN                         = 0x40047486\n\tTIOCGPTPEER                      = 0x20007489\n\tTIOCGRS485                       = 0x40205441\n\tTIOCGSERIAL                      = 0x541e\n\tTIOCGSID                         = 0x40047485\n\tTIOCGSOFTCAR                     = 0x40047464\n\tTIOCGWINSZ                       = 0x40087468\n\tTIOCINQ                          = 0x4004667f\n\tTIOCLINUX                        = 0x541c\n\tTIOCMBIC                         = 0x8004746b\n\tTIOCMBIS                         = 0x8004746c\n\tTIOCMGET                         = 0x4004746a\n\tTIOCMIWAIT                       = 0x545c\n\tTIOCMSET                         = 0x8004746d\n\tTIOCM_CAR                        = 0x40\n\tTIOCM_CD                         = 0x40\n\tTIOCM_CTS                        = 0x20\n\tTIOCM_DSR                        = 0x100\n\tTIOCM_RI                         = 0x80\n\tTIOCM_RNG                        = 0x80\n\tTIOCM_SR                         = 0x10\n\tTIOCM_ST                         = 0x8\n\tTIOCNOTTY                        = 0x20007471\n\tTIOCNXCL                         = 0x2000740e\n\tTIOCOUTQ                         = 0x40047473\n\tTIOCPKT                          = 0x80047470\n\tTIOCSBRK                         = 0x2000747b\n\tTIOCSCTTY                        = 0x20007484\n\tTIOCSERCONFIG                    = 0x5453\n\tTIOCSERGETLSR                    = 0x5459\n\tTIOCSERGETMULTI                  = 0x545a\n\tTIOCSERGSTRUCT                   = 0x5458\n\tTIOCSERGWILD                     = 0x5454\n\tTIOCSERSETMULTI                  = 0x545b\n\tTIOCSERSWILD                     = 0x5455\n\tTIOCSETD                         = 0x80047401\n\tTIOCSIG                          = 0x80047488\n\tTIOCSISO7816                     = 0xc0285444\n\tTIOCSLCKTRMIOS                   = 0x5457\n\tTIOCSPGRP                        = 0x80047482\n\tTIOCSPTLCK                       = 0x80047487\n\tTIOCSRS485                       = 0xc0205442\n\tTIOCSSERIAL                      = 0x541f\n\tTIOCSSOFTCAR                     = 0x80047465\n\tTIOCSTART                        = 0x2000746e\n\tTIOCSTI                          = 0x80017472\n\tTIOCSTOP                         = 0x2000746f\n\tTIOCSWINSZ                       = 0x80087467\n\tTIOCVHANGUP                      = 0x20005437\n\tTOSTOP                           = 0x100\n\tTUNATTACHFILTER                  = 0x801054d5\n\tTUNDETACHFILTER                  = 0x801054d6\n\tTUNGETDEVNETNS                   = 0x200054e3\n\tTUNGETFEATURES                   = 0x400454cf\n\tTUNGETFILTER                     = 0x401054db\n\tTUNGETIFF                        = 0x400454d2\n\tTUNGETSNDBUF                     = 0x400454d3\n\tTUNGETVNETBE                     = 0x400454df\n\tTUNGETVNETHDRSZ                  = 0x400454d7\n\tTUNGETVNETLE                     = 0x400454dd\n\tTUNSETCARRIER                    = 0x800454e2\n\tTUNSETDEBUG                      = 0x800454c9\n\tTUNSETFILTEREBPF                 = 0x400454e1\n\tTUNSETGROUP                      = 0x800454ce\n\tTUNSETIFF                        = 0x800454ca\n\tTUNSETIFINDEX                    = 0x800454da\n\tTUNSETLINK                       = 0x800454cd\n\tTUNSETNOCSUM                     = 0x800454c8\n\tTUNSETOFFLOAD                    = 0x800454d0\n\tTUNSETOWNER                      = 0x800454cc\n\tTUNSETPERSIST                    = 0x800454cb\n\tTUNSETQUEUE                      = 0x800454d9\n\tTUNSETSNDBUF                     = 0x800454d4\n\tTUNSETSTEERINGEBPF               = 0x400454e0\n\tTUNSETTXFILTER                   = 0x800454d1\n\tTUNSETVNETBE                     = 0x800454de\n\tTUNSETVNETHDRSZ                  = 0x800454d8\n\tTUNSETVNETLE                     = 0x800454dc\n\tUBI_IOCATT                       = 0x80186f40\n\tUBI_IOCDET                       = 0x80046f41\n\tUBI_IOCEBCH                      = 0x80044f02\n\tUBI_IOCEBER                      = 0x80044f01\n\tUBI_IOCEBISMAP                   = 0x40044f05\n\tUBI_IOCEBMAP                     = 0x80084f03\n\tUBI_IOCEBUNMAP                   = 0x80044f04\n\tUBI_IOCMKVOL                     = 0x80986f00\n\tUBI_IOCRMVOL                     = 0x80046f01\n\tUBI_IOCRNVOL                     = 0x91106f03\n\tUBI_IOCRPEB                      = 0x80046f04\n\tUBI_IOCRSVOL                     = 0x800c6f02\n\tUBI_IOCSETVOLPROP                = 0x80104f06\n\tUBI_IOCSPEB                      = 0x80046f05\n\tUBI_IOCVOLCRBLK                  = 0x80804f07\n\tUBI_IOCVOLRMBLK                  = 0x20004f08\n\tUBI_IOCVOLUP                     = 0x80084f00\n\tVDISCARD                         = 0xd\n\tVEOF                             = 0x4\n\tVEOL                             = 0xb\n\tVEOL2                            = 0x10\n\tVMIN                             = 0x6\n\tVREPRINT                         = 0xc\n\tVSTART                           = 0x8\n\tVSTOP                            = 0x9\n\tVSUSP                            = 0xa\n\tVSWTC                            = 0x7\n\tVT1                              = 0x4000\n\tVTDLY                            = 0x4000\n\tVTIME                            = 0x5\n\tVWERASE                          = 0xe\n\tWDIOC_GETBOOTSTATUS              = 0x40045702\n\tWDIOC_GETPRETIMEOUT              = 0x40045709\n\tWDIOC_GETSTATUS                  = 0x40045701\n\tWDIOC_GETSUPPORT                 = 0x40285700\n\tWDIOC_GETTEMP                    = 0x40045703\n\tWDIOC_GETTIMELEFT                = 0x4004570a\n\tWDIOC_GETTIMEOUT                 = 0x40045707\n\tWDIOC_KEEPALIVE                  = 0x40045705\n\tWDIOC_SETOPTIONS                 = 0x40045704\n\tWORDSIZE                         = 0x40\n\tXCASE                            = 0x4\n\tXTABS                            = 0x1800\n\t_HIDIOCGRAWNAME                  = 0x40804804\n\t_HIDIOCGRAWPHYS                  = 0x40404805\n\t_HIDIOCGRAWUNIQ                  = 0x40404808\n\t__TIOCFLUSH                      = 0x80047410\n)\n\n// Errors\nconst (\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEADV            = syscall.Errno(0x53)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEALREADY        = syscall.Errno(0x25)\n\tEBADE           = syscall.Errno(0x66)\n\tEBADFD          = syscall.Errno(0x5d)\n\tEBADMSG         = syscall.Errno(0x4c)\n\tEBADR           = syscall.Errno(0x67)\n\tEBADRQC         = syscall.Errno(0x6a)\n\tEBADSLT         = syscall.Errno(0x6b)\n\tEBFONT          = syscall.Errno(0x6d)\n\tECANCELED       = syscall.Errno(0x7f)\n\tECHRNG          = syscall.Errno(0x5e)\n\tECOMM           = syscall.Errno(0x55)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0x4e)\n\tEDEADLOCK       = syscall.Errno(0x6c)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOTDOT         = syscall.Errno(0x58)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEHWPOISON       = syscall.Errno(0x87)\n\tEIDRM           = syscall.Errno(0x4d)\n\tEILSEQ          = syscall.Errno(0x7a)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISNAM          = syscall.Errno(0x78)\n\tEKEYEXPIRED     = syscall.Errno(0x81)\n\tEKEYREJECTED    = syscall.Errno(0x83)\n\tEKEYREVOKED     = syscall.Errno(0x82)\n\tEL2HLT          = syscall.Errno(0x65)\n\tEL2NSYNC        = syscall.Errno(0x5f)\n\tEL3HLT          = syscall.Errno(0x60)\n\tEL3RST          = syscall.Errno(0x61)\n\tELIBACC         = syscall.Errno(0x72)\n\tELIBBAD         = syscall.Errno(0x70)\n\tELIBEXEC        = syscall.Errno(0x6e)\n\tELIBMAX         = syscall.Errno(0x7b)\n\tELIBSCN         = syscall.Errno(0x7c)\n\tELNRNG          = syscall.Errno(0x62)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMEDIUMTYPE     = syscall.Errno(0x7e)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x57)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENAVAIL         = syscall.Errno(0x77)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENOANO          = syscall.Errno(0x69)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENOCSI          = syscall.Errno(0x64)\n\tENODATA         = syscall.Errno(0x6f)\n\tENOKEY          = syscall.Errno(0x80)\n\tENOLCK          = syscall.Errno(0x4f)\n\tENOLINK         = syscall.Errno(0x52)\n\tENOMEDIUM       = syscall.Errno(0x7d)\n\tENOMSG          = syscall.Errno(0x4b)\n\tENONET          = syscall.Errno(0x50)\n\tENOPKG          = syscall.Errno(0x71)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSR           = syscall.Errno(0x4a)\n\tENOSTR          = syscall.Errno(0x48)\n\tENOSYS          = syscall.Errno(0x5a)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTNAM         = syscall.Errno(0x76)\n\tENOTRECOVERABLE = syscall.Errno(0x85)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x2d)\n\tENOTUNIQ        = syscall.Errno(0x73)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x5c)\n\tEOWNERDEAD      = syscall.Errno(0x84)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROTO          = syscall.Errno(0x56)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tEREMCHG         = syscall.Errno(0x59)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEREMOTEIO       = syscall.Errno(0x79)\n\tERESTART        = syscall.Errno(0x74)\n\tERFKILL         = syscall.Errno(0x86)\n\tERREMOTE        = syscall.Errno(0x51)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESRMNT          = syscall.Errno(0x54)\n\tESTALE          = syscall.Errno(0x46)\n\tESTRPIPE        = syscall.Errno(0x5b)\n\tETIME           = syscall.Errno(0x49)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tEUCLEAN         = syscall.Errno(0x75)\n\tEUNATCH         = syscall.Errno(0x63)\n\tEUSERS          = syscall.Errno(0x44)\n\tEXFULL          = syscall.Errno(0x68)\n)\n\n// Signals\nconst (\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCLD    = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGLOST   = syscall.Signal(0x1d)\n\tSIGPOLL   = syscall.Signal(0x17)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x1d)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"ENOTSUP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{57, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{58, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{60, \"ETIMEDOUT\", \"connection timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disk quota exceeded\"},\n\t{70, \"ESTALE\", \"stale file handle\"},\n\t{71, \"EREMOTE\", \"object is remote\"},\n\t{72, \"ENOSTR\", \"device not a stream\"},\n\t{73, \"ETIME\", \"timer expired\"},\n\t{74, \"ENOSR\", \"out of streams resources\"},\n\t{75, \"ENOMSG\", \"no message of desired type\"},\n\t{76, \"EBADMSG\", \"bad message\"},\n\t{77, \"EIDRM\", \"identifier removed\"},\n\t{78, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{79, \"ENOLCK\", \"no locks available\"},\n\t{80, \"ENONET\", \"machine is not on the network\"},\n\t{81, \"ERREMOTE\", \"unknown error 81\"},\n\t{82, \"ENOLINK\", \"link has been severed\"},\n\t{83, \"EADV\", \"advertise error\"},\n\t{84, \"ESRMNT\", \"srmount error\"},\n\t{85, \"ECOMM\", \"communication error on send\"},\n\t{86, \"EPROTO\", \"protocol error\"},\n\t{87, \"EMULTIHOP\", \"multihop attempted\"},\n\t{88, \"EDOTDOT\", \"RFS specific error\"},\n\t{89, \"EREMCHG\", \"remote address changed\"},\n\t{90, \"ENOSYS\", \"function not implemented\"},\n\t{91, \"ESTRPIPE\", \"streams pipe error\"},\n\t{92, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{93, \"EBADFD\", \"file descriptor in bad state\"},\n\t{94, \"ECHRNG\", \"channel number out of range\"},\n\t{95, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{96, \"EL3HLT\", \"level 3 halted\"},\n\t{97, \"EL3RST\", \"level 3 reset\"},\n\t{98, \"ELNRNG\", \"link number out of range\"},\n\t{99, \"EUNATCH\", \"protocol driver not attached\"},\n\t{100, \"ENOCSI\", \"no CSI structure available\"},\n\t{101, \"EL2HLT\", \"level 2 halted\"},\n\t{102, \"EBADE\", \"invalid exchange\"},\n\t{103, \"EBADR\", \"invalid request descriptor\"},\n\t{104, \"EXFULL\", \"exchange full\"},\n\t{105, \"ENOANO\", \"no anode\"},\n\t{106, \"EBADRQC\", \"invalid request code\"},\n\t{107, \"EBADSLT\", \"invalid slot\"},\n\t{108, \"EDEADLOCK\", \"file locking deadlock error\"},\n\t{109, \"EBFONT\", \"bad font file format\"},\n\t{110, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{111, \"ENODATA\", \"no data available\"},\n\t{112, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{113, \"ENOPKG\", \"package not installed\"},\n\t{114, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{115, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{116, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{117, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{118, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{119, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{120, \"EISNAM\", \"is a named type file\"},\n\t{121, \"EREMOTEIO\", \"remote I/O error\"},\n\t{122, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{123, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{124, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{125, \"ENOMEDIUM\", \"no medium found\"},\n\t{126, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{127, \"ECANCELED\", \"operation canceled\"},\n\t{128, \"ENOKEY\", \"required key not available\"},\n\t{129, \"EKEYEXPIRED\", \"key has expired\"},\n\t{130, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{131, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{132, \"EOWNERDEAD\", \"owner died\"},\n\t{133, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{134, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{135, \"EHWPOISON\", \"memory page has hardware error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"stopped (signal)\"},\n\t{18, \"SIGTSTP\", \"stopped\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"file size limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window changed\"},\n\t{29, \"SIGLOST\", \"power failure\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go",
    "content": "// mkerrors.sh -m32\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build 386 && netbsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m32 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_ARP                            = 0x1c\n\tAF_BLUETOOTH                      = 0x1f\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_HYLINK                         = 0xf\n\tAF_IEEE80211                      = 0x20\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x18\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x23\n\tAF_MPLS                           = 0x21\n\tAF_NATM                           = 0x1b\n\tAF_NS                             = 0x6\n\tAF_OROUTE                         = 0x11\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x22\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tARPHRD_ARCNET                     = 0x7\n\tARPHRD_ETHER                      = 0x1\n\tARPHRD_FRELAY                     = 0xf\n\tARPHRD_IEEE1394                   = 0x18\n\tARPHRD_IEEE802                    = 0x6\n\tARPHRD_STRIP                      = 0x17\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB460800                           = 0x70800\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB921600                           = 0xe1000\n\tB9600                             = 0x2580\n\tBIOCFEEDBACK                      = 0x8004427d\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc0084277\n\tBIOCGETIF                         = 0x4090426b\n\tBIOCGFEEDBACK                     = 0x4004427c\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRTIMEOUT                     = 0x400c427b\n\tBIOCGSEESENT                      = 0x40044278\n\tBIOCGSTATS                        = 0x4080426f\n\tBIOCGSTATSOLD                     = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDLT                          = 0x80044276\n\tBIOCSETF                          = 0x80084267\n\tBIOCSETIF                         = 0x8090426c\n\tBIOCSFEEDBACK                     = 0x8004427d\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRTIMEOUT                     = 0x800c427a\n\tBIOCSSEESENT                      = 0x80044279\n\tBIOCSTCPF                         = 0x80084272\n\tBIOCSUDPF                         = 0x80084273\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x4\n\tBPF_ALIGNMENT32                   = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DFLTBUFSIZE                   = 0x100000\n\tBPF_DIV                           = 0x30\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x1000000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLONE_CSIGNAL                     = 0xff\n\tCLONE_FILES                       = 0x400\n\tCLONE_FS                          = 0x200\n\tCLONE_PID                         = 0x1000\n\tCLONE_PTRACE                      = 0x2000\n\tCLONE_SIGHAND                     = 0x800\n\tCLONE_VFORK                       = 0x4000\n\tCLONE_VM                          = 0x100\n\tCPUSTATES                         = 0x5\n\tCP_IDLE                           = 0x4\n\tCP_INTR                           = 0x3\n\tCP_NICE                           = 0x1\n\tCP_SYS                            = 0x2\n\tCP_USER                           = 0x0\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x10000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0x14\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tCTL_QUERY                         = -0x2\n\tDIOCBSFLUSH                       = 0x20006478\n\tDLT_A429                          = 0xb8\n\tDLT_A653_ICM                      = 0xb9\n\tDLT_AIRONET_HEADER                = 0x78\n\tDLT_AOS                           = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394        = 0x8a\n\tDLT_ARCNET                        = 0x7\n\tDLT_ARCNET_LINUX                  = 0x81\n\tDLT_ATM_CLIP                      = 0x13\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AURORA                        = 0x7e\n\tDLT_AX25                          = 0x3\n\tDLT_AX25_KISS                     = 0xca\n\tDLT_BACNET_MS_TP                  = 0xa5\n\tDLT_BLUETOOTH_HCI_H4              = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR    = 0xc9\n\tDLT_CAN20B                        = 0xbe\n\tDLT_CAN_SOCKETCAN                 = 0xe3\n\tDLT_CHAOS                         = 0x5\n\tDLT_CISCO_IOS                     = 0x76\n\tDLT_C_HDLC                        = 0x68\n\tDLT_C_HDLC_WITH_DIR               = 0xcd\n\tDLT_DECT                          = 0xdd\n\tDLT_DOCSIS                        = 0x8f\n\tDLT_ECONET                        = 0x73\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0x6d\n\tDLT_ERF                           = 0xc5\n\tDLT_ERF_ETH                       = 0xaf\n\tDLT_ERF_POS                       = 0xb0\n\tDLT_FC_2                          = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS        = 0xe1\n\tDLT_FDDI                          = 0xa\n\tDLT_FLEXRAY                       = 0xd2\n\tDLT_FRELAY                        = 0x6b\n\tDLT_FRELAY_WITH_DIR               = 0xce\n\tDLT_GCOM_SERIAL                   = 0xad\n\tDLT_GCOM_T1E1                     = 0xac\n\tDLT_GPF_F                         = 0xab\n\tDLT_GPF_T                         = 0xaa\n\tDLT_GPRS_LLC                      = 0xa9\n\tDLT_GSMTAP_ABIS                   = 0xda\n\tDLT_GSMTAP_UM                     = 0xd9\n\tDLT_HDLC                          = 0x10\n\tDLT_HHDLC                         = 0x79\n\tDLT_HIPPI                         = 0xf\n\tDLT_IBM_SN                        = 0x92\n\tDLT_IBM_SP                        = 0x91\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS          = 0xa3\n\tDLT_IEEE802_15_4                  = 0xc3\n\tDLT_IEEE802_15_4_LINUX            = 0xbf\n\tDLT_IEEE802_15_4_NONASK_PHY       = 0xd7\n\tDLT_IEEE802_16_MAC_CPS            = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO      = 0xc1\n\tDLT_IPMB                          = 0xc7\n\tDLT_IPMB_LINUX                    = 0xd1\n\tDLT_IPNET                         = 0xe2\n\tDLT_IPV4                          = 0xe4\n\tDLT_IPV6                          = 0xe5\n\tDLT_IP_OVER_FC                    = 0x7a\n\tDLT_JUNIPER_ATM1                  = 0x89\n\tDLT_JUNIPER_ATM2                  = 0x87\n\tDLT_JUNIPER_CHDLC                 = 0xb5\n\tDLT_JUNIPER_ES                    = 0x84\n\tDLT_JUNIPER_ETHER                 = 0xb2\n\tDLT_JUNIPER_FRELAY                = 0xb4\n\tDLT_JUNIPER_GGSN                  = 0x85\n\tDLT_JUNIPER_ISM                   = 0xc2\n\tDLT_JUNIPER_MFR                   = 0x86\n\tDLT_JUNIPER_MLFR                  = 0x83\n\tDLT_JUNIPER_MLPPP                 = 0x82\n\tDLT_JUNIPER_MONITOR               = 0xa4\n\tDLT_JUNIPER_PIC_PEER              = 0xae\n\tDLT_JUNIPER_PPP                   = 0xb3\n\tDLT_JUNIPER_PPPOE                 = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM             = 0xa8\n\tDLT_JUNIPER_SERVICES              = 0x88\n\tDLT_JUNIPER_ST                    = 0xc8\n\tDLT_JUNIPER_VP                    = 0xb7\n\tDLT_LAPB_WITH_DIR                 = 0xcf\n\tDLT_LAPD                          = 0xcb\n\tDLT_LIN                           = 0xd4\n\tDLT_LINUX_EVDEV                   = 0xd8\n\tDLT_LINUX_IRDA                    = 0x90\n\tDLT_LINUX_LAPD                    = 0xb1\n\tDLT_LINUX_SLL                     = 0x71\n\tDLT_LOOP                          = 0x6c\n\tDLT_LTALK                         = 0x72\n\tDLT_MFR                           = 0xb6\n\tDLT_MOST                          = 0xd3\n\tDLT_MPLS                          = 0xdb\n\tDLT_MTP2                          = 0x8c\n\tDLT_MTP2_WITH_PHDR                = 0x8b\n\tDLT_MTP3                          = 0x8d\n\tDLT_NULL                          = 0x0\n\tDLT_PCI_EXP                       = 0x7d\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPI                           = 0xc0\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0xe\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_PPPD                      = 0xa6\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PPP_WITH_DIR                  = 0xcc\n\tDLT_PRISM_HEADER                  = 0x77\n\tDLT_PRONET                        = 0x4\n\tDLT_RAIF1                         = 0xc6\n\tDLT_RAW                           = 0xc\n\tDLT_RAWAF_MASK                    = 0x2240000\n\tDLT_RIO                           = 0x7c\n\tDLT_SCCP                          = 0x8e\n\tDLT_SITA                          = 0xc4\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xd\n\tDLT_SUNATM                        = 0x7b\n\tDLT_SYMANTEC_FIREWALL             = 0x63\n\tDLT_TZSP                          = 0x80\n\tDLT_USB                           = 0xba\n\tDLT_USB_LINUX                     = 0xbd\n\tDLT_USB_LINUX_MMAPPED             = 0xdc\n\tDLT_WIHART                        = 0xdf\n\tDLT_X2E_SERIAL                    = 0xd5\n\tDLT_X2E_XORAYA                    = 0xd6\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tDT_WHT                            = 0xe\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEMUL_LINUX                        = 0x1\n\tEMUL_LINUX32                      = 0x5\n\tEMUL_MAXID                        = 0x6\n\tEN_SW_CTL_INF                     = 0x1000\n\tEN_SW_CTL_PREC                    = 0x300\n\tEN_SW_CTL_ROUND                   = 0xc00\n\tEN_SW_DATACHAIN                   = 0x80\n\tEN_SW_DENORM                      = 0x2\n\tEN_SW_INVOP                       = 0x1\n\tEN_SW_OVERFLOW                    = 0x8\n\tEN_SW_PRECLOSS                    = 0x20\n\tEN_SW_UNDERFLOW                   = 0x10\n\tEN_SW_ZERODIV                     = 0x4\n\tETHERCAP_JUMBO_MTU                = 0x4\n\tETHERCAP_VLAN_HWTAGGING           = 0x2\n\tETHERCAP_VLAN_MTU                 = 0x1\n\tETHERMIN                          = 0x2e\n\tETHERMTU                          = 0x5dc\n\tETHERMTU_JUMBO                    = 0x2328\n\tETHERTYPE_8023                    = 0x4\n\tETHERTYPE_AARP                    = 0x80f3\n\tETHERTYPE_ACCTON                  = 0x8390\n\tETHERTYPE_AEONIC                  = 0x8036\n\tETHERTYPE_ALPHA                   = 0x814a\n\tETHERTYPE_AMBER                   = 0x6008\n\tETHERTYPE_AMOEBA                  = 0x8145\n\tETHERTYPE_APOLLO                  = 0x80f7\n\tETHERTYPE_APOLLODOMAIN            = 0x8019\n\tETHERTYPE_APPLETALK               = 0x809b\n\tETHERTYPE_APPLITEK                = 0x80c7\n\tETHERTYPE_ARGONAUT                = 0x803a\n\tETHERTYPE_ARP                     = 0x806\n\tETHERTYPE_AT                      = 0x809b\n\tETHERTYPE_ATALK                   = 0x809b\n\tETHERTYPE_ATOMIC                  = 0x86df\n\tETHERTYPE_ATT                     = 0x8069\n\tETHERTYPE_ATTSTANFORD             = 0x8008\n\tETHERTYPE_AUTOPHON                = 0x806a\n\tETHERTYPE_AXIS                    = 0x8856\n\tETHERTYPE_BCLOOP                  = 0x9003\n\tETHERTYPE_BOFL                    = 0x8102\n\tETHERTYPE_CABLETRON               = 0x7034\n\tETHERTYPE_CHAOS                   = 0x804\n\tETHERTYPE_COMDESIGN               = 0x806c\n\tETHERTYPE_COMPUGRAPHIC            = 0x806d\n\tETHERTYPE_COUNTERPOINT            = 0x8062\n\tETHERTYPE_CRONUS                  = 0x8004\n\tETHERTYPE_CRONUSVLN               = 0x8003\n\tETHERTYPE_DCA                     = 0x1234\n\tETHERTYPE_DDE                     = 0x807b\n\tETHERTYPE_DEBNI                   = 0xaaaa\n\tETHERTYPE_DECAM                   = 0x8048\n\tETHERTYPE_DECCUST                 = 0x6006\n\tETHERTYPE_DECDIAG                 = 0x6005\n\tETHERTYPE_DECDNS                  = 0x803c\n\tETHERTYPE_DECDTS                  = 0x803e\n\tETHERTYPE_DECEXPER                = 0x6000\n\tETHERTYPE_DECLAST                 = 0x8041\n\tETHERTYPE_DECLTM                  = 0x803f\n\tETHERTYPE_DECMUMPS                = 0x6009\n\tETHERTYPE_DECNETBIOS              = 0x8040\n\tETHERTYPE_DELTACON                = 0x86de\n\tETHERTYPE_DIDDLE                  = 0x4321\n\tETHERTYPE_DLOG1                   = 0x660\n\tETHERTYPE_DLOG2                   = 0x661\n\tETHERTYPE_DN                      = 0x6003\n\tETHERTYPE_DOGFIGHT                = 0x1989\n\tETHERTYPE_DSMD                    = 0x8039\n\tETHERTYPE_ECMA                    = 0x803\n\tETHERTYPE_ENCRYPT                 = 0x803d\n\tETHERTYPE_ES                      = 0x805d\n\tETHERTYPE_EXCELAN                 = 0x8010\n\tETHERTYPE_EXPERDATA               = 0x8049\n\tETHERTYPE_FLIP                    = 0x8146\n\tETHERTYPE_FLOWCONTROL             = 0x8808\n\tETHERTYPE_FRARP                   = 0x808\n\tETHERTYPE_GENDYN                  = 0x8068\n\tETHERTYPE_HAYES                   = 0x8130\n\tETHERTYPE_HIPPI_FP                = 0x8180\n\tETHERTYPE_HITACHI                 = 0x8820\n\tETHERTYPE_HP                      = 0x8005\n\tETHERTYPE_IEEEPUP                 = 0xa00\n\tETHERTYPE_IEEEPUPAT               = 0xa01\n\tETHERTYPE_IMLBL                   = 0x4c42\n\tETHERTYPE_IMLBLDIAG               = 0x424c\n\tETHERTYPE_IP                      = 0x800\n\tETHERTYPE_IPAS                    = 0x876c\n\tETHERTYPE_IPV6                    = 0x86dd\n\tETHERTYPE_IPX                     = 0x8137\n\tETHERTYPE_IPXNEW                  = 0x8037\n\tETHERTYPE_KALPANA                 = 0x8582\n\tETHERTYPE_LANBRIDGE               = 0x8038\n\tETHERTYPE_LANPROBE                = 0x8888\n\tETHERTYPE_LAT                     = 0x6004\n\tETHERTYPE_LBACK                   = 0x9000\n\tETHERTYPE_LITTLE                  = 0x8060\n\tETHERTYPE_LOGICRAFT               = 0x8148\n\tETHERTYPE_LOOPBACK                = 0x9000\n\tETHERTYPE_MATRA                   = 0x807a\n\tETHERTYPE_MAX                     = 0xffff\n\tETHERTYPE_MERIT                   = 0x807c\n\tETHERTYPE_MICP                    = 0x873a\n\tETHERTYPE_MOPDL                   = 0x6001\n\tETHERTYPE_MOPRC                   = 0x6002\n\tETHERTYPE_MOTOROLA                = 0x818d\n\tETHERTYPE_MPLS                    = 0x8847\n\tETHERTYPE_MPLS_MCAST              = 0x8848\n\tETHERTYPE_MUMPS                   = 0x813f\n\tETHERTYPE_NBPCC                   = 0x3c04\n\tETHERTYPE_NBPCLAIM                = 0x3c09\n\tETHERTYPE_NBPCLREQ                = 0x3c05\n\tETHERTYPE_NBPCLRSP                = 0x3c06\n\tETHERTYPE_NBPCREQ                 = 0x3c02\n\tETHERTYPE_NBPCRSP                 = 0x3c03\n\tETHERTYPE_NBPDG                   = 0x3c07\n\tETHERTYPE_NBPDGB                  = 0x3c08\n\tETHERTYPE_NBPDLTE                 = 0x3c0a\n\tETHERTYPE_NBPRAR                  = 0x3c0c\n\tETHERTYPE_NBPRAS                  = 0x3c0b\n\tETHERTYPE_NBPRST                  = 0x3c0d\n\tETHERTYPE_NBPSCD                  = 0x3c01\n\tETHERTYPE_NBPVCD                  = 0x3c00\n\tETHERTYPE_NBS                     = 0x802\n\tETHERTYPE_NCD                     = 0x8149\n\tETHERTYPE_NESTAR                  = 0x8006\n\tETHERTYPE_NETBEUI                 = 0x8191\n\tETHERTYPE_NOVELL                  = 0x8138\n\tETHERTYPE_NS                      = 0x600\n\tETHERTYPE_NSAT                    = 0x601\n\tETHERTYPE_NSCOMPAT                = 0x807\n\tETHERTYPE_NTRAILER                = 0x10\n\tETHERTYPE_OS9                     = 0x7007\n\tETHERTYPE_OS9NET                  = 0x7009\n\tETHERTYPE_PACER                   = 0x80c6\n\tETHERTYPE_PAE                     = 0x888e\n\tETHERTYPE_PCS                     = 0x4242\n\tETHERTYPE_PLANNING                = 0x8044\n\tETHERTYPE_PPP                     = 0x880b\n\tETHERTYPE_PPPOE                   = 0x8864\n\tETHERTYPE_PPPOEDISC               = 0x8863\n\tETHERTYPE_PRIMENTS                = 0x7031\n\tETHERTYPE_PUP                     = 0x200\n\tETHERTYPE_PUPAT                   = 0x200\n\tETHERTYPE_RACAL                   = 0x7030\n\tETHERTYPE_RATIONAL                = 0x8150\n\tETHERTYPE_RAWFR                   = 0x6559\n\tETHERTYPE_RCL                     = 0x1995\n\tETHERTYPE_RDP                     = 0x8739\n\tETHERTYPE_RETIX                   = 0x80f2\n\tETHERTYPE_REVARP                  = 0x8035\n\tETHERTYPE_SCA                     = 0x6007\n\tETHERTYPE_SECTRA                  = 0x86db\n\tETHERTYPE_SECUREDATA              = 0x876d\n\tETHERTYPE_SGITW                   = 0x817e\n\tETHERTYPE_SG_BOUNCE               = 0x8016\n\tETHERTYPE_SG_DIAG                 = 0x8013\n\tETHERTYPE_SG_NETGAMES             = 0x8014\n\tETHERTYPE_SG_RESV                 = 0x8015\n\tETHERTYPE_SIMNET                  = 0x5208\n\tETHERTYPE_SLOWPROTOCOLS           = 0x8809\n\tETHERTYPE_SNA                     = 0x80d5\n\tETHERTYPE_SNMP                    = 0x814c\n\tETHERTYPE_SONIX                   = 0xfaf5\n\tETHERTYPE_SPIDER                  = 0x809f\n\tETHERTYPE_SPRITE                  = 0x500\n\tETHERTYPE_STP                     = 0x8181\n\tETHERTYPE_TALARIS                 = 0x812b\n\tETHERTYPE_TALARISMC               = 0x852b\n\tETHERTYPE_TCPCOMP                 = 0x876b\n\tETHERTYPE_TCPSM                   = 0x9002\n\tETHERTYPE_TEC                     = 0x814f\n\tETHERTYPE_TIGAN                   = 0x802f\n\tETHERTYPE_TRAIL                   = 0x1000\n\tETHERTYPE_TRANSETHER              = 0x6558\n\tETHERTYPE_TYMSHARE                = 0x802e\n\tETHERTYPE_UBBST                   = 0x7005\n\tETHERTYPE_UBDEBUG                 = 0x900\n\tETHERTYPE_UBDIAGLOOP              = 0x7002\n\tETHERTYPE_UBDL                    = 0x7000\n\tETHERTYPE_UBNIU                   = 0x7001\n\tETHERTYPE_UBNMC                   = 0x7003\n\tETHERTYPE_VALID                   = 0x1600\n\tETHERTYPE_VARIAN                  = 0x80dd\n\tETHERTYPE_VAXELN                  = 0x803b\n\tETHERTYPE_VEECO                   = 0x8067\n\tETHERTYPE_VEXP                    = 0x805b\n\tETHERTYPE_VGLAB                   = 0x8131\n\tETHERTYPE_VINES                   = 0xbad\n\tETHERTYPE_VINESECHO               = 0xbaf\n\tETHERTYPE_VINESLOOP               = 0xbae\n\tETHERTYPE_VITAL                   = 0xff00\n\tETHERTYPE_VLAN                    = 0x8100\n\tETHERTYPE_VLTLMAN                 = 0x8080\n\tETHERTYPE_VPROD                   = 0x805c\n\tETHERTYPE_VURESERVED              = 0x8147\n\tETHERTYPE_WATERLOO                = 0x8130\n\tETHERTYPE_WELLFLEET               = 0x8103\n\tETHERTYPE_X25                     = 0x805\n\tETHERTYPE_X75                     = 0x801\n\tETHERTYPE_XNSSM                   = 0x9001\n\tETHERTYPE_XTP                     = 0x817d\n\tETHER_ADDR_LEN                    = 0x6\n\tETHER_CRC_LEN                     = 0x4\n\tETHER_CRC_POLY_BE                 = 0x4c11db6\n\tETHER_CRC_POLY_LE                 = 0xedb88320\n\tETHER_HDR_LEN                     = 0xe\n\tETHER_MAX_LEN                     = 0x5ee\n\tETHER_MAX_LEN_JUMBO               = 0x233a\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_PPPOE_ENCAP_LEN             = 0x8\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = 0x2\n\tEVFILT_PROC                       = 0x4\n\tEVFILT_READ                       = 0x0\n\tEVFILT_SIGNAL                     = 0x5\n\tEVFILT_SYSCOUNT                   = 0x7\n\tEVFILT_TIMER                      = 0x6\n\tEVFILT_VNODE                      = 0x3\n\tEVFILT_WRITE                      = 0x1\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_SYSFLAGS                       = 0xf000\n\tEXTA                              = 0x4b00\n\tEXTATTR_CMD_START                 = 0x1\n\tEXTATTR_CMD_STOP                  = 0x2\n\tEXTATTR_NAMESPACE_SYSTEM          = 0x2\n\tEXTATTR_NAMESPACE_USER            = 0x1\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x100\n\tFLUSHO                            = 0x800000\n\tF_CLOSEM                          = 0xa\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0xc\n\tF_FSCTL                           = -0x80000000\n\tF_FSDIRMASK                       = 0x70000000\n\tF_FSIN                            = 0x10000000\n\tF_FSINOUT                         = 0x30000000\n\tF_FSOUT                           = 0x20000000\n\tF_FSPRIV                          = 0x8000\n\tF_FSVOID                          = 0x40000000\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETNOSIGPIPE                    = 0xd\n\tF_GETOWN                          = 0x5\n\tF_MAXFD                           = 0xb\n\tF_OK                              = 0x0\n\tF_PARAM_MASK                      = 0xfff\n\tF_PARAM_MAX                       = 0xfff\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETNOSIGPIPE                    = 0xe\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFA_ROUTE                         = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x8f52\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_NOTRAILERS                    = 0x20\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf8\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ECONET                        = 0xce\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf2\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INFINIBAND                    = 0xc7\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LINEGROUP                     = 0xd2\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_PON155                        = 0xcf\n\tIFT_PON622                        = 0xd0\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPATM                       = 0xc5\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf1\n\tIFT_Q2931                         = 0xc9\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SIPSIG                        = 0xcc\n\tIFT_SIPTG                         = 0xcb\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_STF                           = 0xd7\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TELINK                        = 0xc8\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VIRTUALTG                     = 0xca\n\tIFT_VOICEDID                      = 0xd5\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEEMFGD                    = 0xd3\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFGDEANA                  = 0xd4\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERCABLE                = 0xc6\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_IPV6_ICMP                 = 0x3a\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x34\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_VRRP                      = 0x70\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPSEC_POLICY                 = 0x1c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_EF                             = 0x8000\n\tIP_ERRORMTU                       = 0x15\n\tIP_HDRINCL                        = 0x2\n\tIP_IPSEC_POLICY                   = 0x16\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0x14\n\tIP_MF                             = 0x2000\n\tIP_MINFRAGSIZE                    = 0x45\n\tIP_MINTTL                         = 0x18\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVIF                         = 0x14\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVTTL                        = 0x17\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x6\n\tMADV_NORMAL                       = 0x0\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SPACEAVAIL                   = 0x5\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ALIGNMENT_16MB                = 0x18000000\n\tMAP_ALIGNMENT_1TB                 = 0x28000000\n\tMAP_ALIGNMENT_256TB               = 0x30000000\n\tMAP_ALIGNMENT_4GB                 = 0x20000000\n\tMAP_ALIGNMENT_64KB                = 0x10000000\n\tMAP_ALIGNMENT_64PB                = 0x38000000\n\tMAP_ALIGNMENT_MASK                = -0x1000000\n\tMAP_ALIGNMENT_SHIFT               = 0x18\n\tMAP_ANON                          = 0x1000\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_HASSEMAPHORE                  = 0x200\n\tMAP_INHERIT                       = 0x80\n\tMAP_INHERIT_COPY                  = 0x1\n\tMAP_INHERIT_DEFAULT               = 0x1\n\tMAP_INHERIT_DONATE_COPY           = 0x3\n\tMAP_INHERIT_NONE                  = 0x2\n\tMAP_INHERIT_SHARE                 = 0x0\n\tMAP_NORESERVE                     = 0x40\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x20\n\tMAP_SHARED                        = 0x1\n\tMAP_STACK                         = 0x2000\n\tMAP_TRYFIXED                      = 0x400\n\tMAP_WIRED                         = 0x800\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_BASIC_FLAGS                   = 0xe782807f\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DISCARD                       = 0x800000\n\tMNT_EXKERB                        = 0x800\n\tMNT_EXNORESPORT                   = 0x8000000\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXPUBLIC                      = 0x10000000\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_EXTATTR                       = 0x1000000\n\tMNT_FORCE                         = 0x80000\n\tMNT_GETARGS                       = 0x400000\n\tMNT_IGNORE                        = 0x100000\n\tMNT_LAZY                          = 0x3\n\tMNT_LOCAL                         = 0x1000\n\tMNT_LOG                           = 0x2000000\n\tMNT_NOATIME                       = 0x4000000\n\tMNT_NOCOREDUMP                    = 0x8000\n\tMNT_NODEV                         = 0x10\n\tMNT_NODEVMTIME                    = 0x40000000\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOWAIT                        = 0x2\n\tMNT_OP_FLAGS                      = 0x4d0000\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELATIME                      = 0x20000\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x80000000\n\tMNT_SYMPERM                       = 0x20000000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UNION                         = 0x20\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0xff90ffff\n\tMNT_WAIT                          = 0x1\n\tMSG_BCAST                         = 0x100\n\tMSG_CMSG_CLOEXEC                  = 0x800\n\tMSG_CONTROLMBUF                   = 0x2000000\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOR                           = 0x8\n\tMSG_IOVUSRSPACE                   = 0x4000000\n\tMSG_LENUSRSPACE                   = 0x8000000\n\tMSG_MCAST                         = 0x200\n\tMSG_NAMEMBUF                      = 0x1000000\n\tMSG_NBIO                          = 0x1000\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_TRUNC                         = 0x10\n\tMSG_USERFLAGS                     = 0xffffff\n\tMSG_WAITALL                       = 0x40\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x2\n\tMS_SYNC                           = 0x4\n\tNAME_MAX                          = 0x1ff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x5\n\tNET_RT_MAXID                      = 0x6\n\tNET_RT_OIFLIST                    = 0x4\n\tNET_RT_OOIFLIST                   = 0x3\n\tNFDBITS                           = 0x20\n\tNOFLSH                            = 0x80000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOFIOGETBMAP                       = 0xc004667a\n\tONLCR                             = 0x2\n\tONLRET                            = 0x40\n\tONOCR                             = 0x20\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tO_ACCMODE                         = 0x3\n\tO_ALT_IO                          = 0x40000\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x400000\n\tO_CREAT                           = 0x200\n\tO_DIRECT                          = 0x80000\n\tO_DIRECTORY                       = 0x200000\n\tO_DSYNC                           = 0x10000\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_NOSIGPIPE                       = 0x1000000\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_RSYNC                           = 0x20000\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPRI_IOFLUSH                       = 0x7c\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tRLIMIT_AS                         = 0xa\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BRD                          = 0x7\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_MAX                          = 0x9\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_TAG                          = 0x8\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BRD                           = 0x80\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_NETMASK                       = 0x4\n\tRTA_TAG                           = 0x100\n\tRTF_ANNOUNCE                      = 0x20000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_CLONED                        = 0x2000\n\tRTF_CLONING                       = 0x100\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_MASK                          = 0x80\n\tRTF_MODIFIED                      = 0x20\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_REJECT                        = 0x8\n\tRTF_SRC                           = 0x10000\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_XRESOLVE                      = 0x200\n\tRTM_ADD                           = 0x1\n\tRTM_CHANGE                        = 0x3\n\tRTM_CHGADDR                       = 0x15\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_GET                           = 0x4\n\tRTM_IEEE80211                     = 0x11\n\tRTM_IFANNOUNCE                    = 0x10\n\tRTM_IFINFO                        = 0x14\n\tRTM_LLINFO_UPD                    = 0x13\n\tRTM_LOCK                          = 0x8\n\tRTM_LOSING                        = 0x5\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_OIFINFO                       = 0xf\n\tRTM_OLDADD                        = 0x9\n\tRTM_OLDDEL                        = 0xa\n\tRTM_OOIFINFO                      = 0xe\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_RTTUNIT                       = 0xf4240\n\tRTM_SETGATE                       = 0x12\n\tRTM_VERSION                       = 0x4\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tSCM_CREDS                         = 0x4\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x8\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80906931\n\tSIOCADDRT                         = 0x8030720a\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCALIFADDR                      = 0x8118691c\n\tSIOCATMARK                        = 0x40047307\n\tSIOCDELMULTI                      = 0x80906932\n\tSIOCDELRT                         = 0x8030720b\n\tSIOCDIFADDR                       = 0x80906919\n\tSIOCDIFPHYADDR                    = 0x80906949\n\tSIOCDLIFADDR                      = 0x8118691e\n\tSIOCGDRVSPEC                      = 0xc01c697b\n\tSIOCGETPFSYNC                     = 0xc09069f8\n\tSIOCGETSGCNT                      = 0xc0147534\n\tSIOCGETVIFCNT                     = 0xc0147533\n\tSIOCGHIWAT                        = 0x40047301\n\tSIOCGIFADDR                       = 0xc0906921\n\tSIOCGIFADDRPREF                   = 0xc0946920\n\tSIOCGIFALIAS                      = 0xc040691b\n\tSIOCGIFBRDADDR                    = 0xc0906923\n\tSIOCGIFCAP                        = 0xc0206976\n\tSIOCGIFCONF                       = 0xc0086926\n\tSIOCGIFDATA                       = 0xc0946985\n\tSIOCGIFDLT                        = 0xc0906977\n\tSIOCGIFDSTADDR                    = 0xc0906922\n\tSIOCGIFFLAGS                      = 0xc0906911\n\tSIOCGIFGENERIC                    = 0xc090693a\n\tSIOCGIFMEDIA                      = 0xc0286936\n\tSIOCGIFMETRIC                     = 0xc0906917\n\tSIOCGIFMTU                        = 0xc090697e\n\tSIOCGIFNETMASK                    = 0xc0906925\n\tSIOCGIFPDSTADDR                   = 0xc0906948\n\tSIOCGIFPSRCADDR                   = 0xc0906947\n\tSIOCGLIFADDR                      = 0xc118691d\n\tSIOCGLIFPHYADDR                   = 0xc118694b\n\tSIOCGLINKSTR                      = 0xc01c6987\n\tSIOCGLOWAT                        = 0x40047303\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGVH                           = 0xc0906983\n\tSIOCIFCREATE                      = 0x8090697a\n\tSIOCIFDESTROY                     = 0x80906979\n\tSIOCIFGCLONERS                    = 0xc00c6978\n\tSIOCINITIFADDR                    = 0xc0446984\n\tSIOCSDRVSPEC                      = 0x801c697b\n\tSIOCSETPFSYNC                     = 0x809069f7\n\tSIOCSHIWAT                        = 0x80047300\n\tSIOCSIFADDR                       = 0x8090690c\n\tSIOCSIFADDRPREF                   = 0x8094691f\n\tSIOCSIFBRDADDR                    = 0x80906913\n\tSIOCSIFCAP                        = 0x80206975\n\tSIOCSIFDSTADDR                    = 0x8090690e\n\tSIOCSIFFLAGS                      = 0x80906910\n\tSIOCSIFGENERIC                    = 0x80906939\n\tSIOCSIFMEDIA                      = 0xc0906935\n\tSIOCSIFMETRIC                     = 0x80906918\n\tSIOCSIFMTU                        = 0x8090697f\n\tSIOCSIFNETMASK                    = 0x80906916\n\tSIOCSIFPHYADDR                    = 0x80406946\n\tSIOCSLIFPHYADDR                   = 0x8118694a\n\tSIOCSLINKSTR                      = 0x801c6988\n\tSIOCSLOWAT                        = 0x80047302\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSVH                           = 0xc0906982\n\tSIOCZIFDATA                       = 0xc0946986\n\tSOCK_CLOEXEC                      = 0x10000000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_FLAGS_MASK                   = 0xf0000000\n\tSOCK_NONBLOCK                     = 0x20000000\n\tSOCK_NOSIGPIPE                    = 0x40000000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_ACCEPTFILTER                   = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NOHEADER                       = 0x100a\n\tSO_NOSIGPIPE                      = 0x800\n\tSO_OOBINLINE                      = 0x100\n\tSO_OVERFLOWED                     = 0x1009\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x100c\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x100b\n\tSO_TIMESTAMP                      = 0x2000\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tSYSCTL_VERSION                    = 0x1000000\n\tSYSCTL_VERS_0                     = 0x0\n\tSYSCTL_VERS_1                     = 0x1000000\n\tSYSCTL_VERS_MASK                  = 0xff000000\n\tS_ARCH1                           = 0x10000\n\tS_ARCH2                           = 0x20000\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IFWHT                           = 0xe000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tS_LOGIN_SET                       = 0x1\n\tTCIFLUSH                          = 0x1\n\tTCIOFLUSH                         = 0x3\n\tTCOFLUSH                          = 0x2\n\tTCP_CONGCTL                       = 0x20\n\tTCP_KEEPCNT                       = 0x6\n\tTCP_KEEPIDLE                      = 0x3\n\tTCP_KEEPINIT                      = 0x7\n\tTCP_KEEPINTVL                     = 0x5\n\tTCP_MAXBURST                      = 0x4\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MD5SIG                        = 0x10\n\tTCP_MINMSS                        = 0xd8\n\tTCP_MSS                           = 0x218\n\tTCP_NODELAY                       = 0x1\n\tTCSAFLUSH                         = 0x2\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCONS                          = 0x80047462\n\tTIOCDCDTIMESTAMP                  = 0x400c7458\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLAG_CDTRCTS                  = 0x10\n\tTIOCFLAG_CLOCAL                   = 0x2\n\tTIOCFLAG_CRTSCTS                  = 0x4\n\tTIOCFLAG_MDMBUF                   = 0x8\n\tTIOCFLAG_SOFTCAR                  = 0x1\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGFLAGS                        = 0x4004745d\n\tTIOCGLINED                        = 0x40207442\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGQSIZE                        = 0x40047481\n\tTIOCGRANTPT                       = 0x20007447\n\tTIOCGSID                          = 0x40047463\n\tTIOCGSIZE                         = 0x40087468\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCPTMGET                        = 0x40287446\n\tTIOCPTSNAME                       = 0x40287448\n\tTIOCRCVFRAME                      = 0x80047445\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x2000745f\n\tTIOCSLINED                        = 0x80207443\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSQSIZE                        = 0x80047480\n\tTIOCSSIZE                         = 0x80087467\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x80047465\n\tTIOCSTI                           = 0x80017472\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\n\tTIOCXMTFRAME                      = 0x80047444\n\tTOSTOP                            = 0x400000\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWALL                              = 0x8\n\tWALLSIG                           = 0x8\n\tWALTSIG                           = 0x4\n\tWCLONE                            = 0x4\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\n\tWNOWAIT                           = 0x10000\n\tWNOZOMBIE                         = 0x20000\n\tWOPTSCHECKED                      = 0x40000\n\tWSTOPPED                          = 0x7f\n\tWUNTRACED                         = 0x2\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x58)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x57)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x52)\n\tEILSEQ          = syscall.Errno(0x55)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x60)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5e)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x5d)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODATA         = syscall.Errno(0x59)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x5f)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x53)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x5a)\n\tENOSTR          = syscall.Errno(0x5b)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x56)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x60)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIME           = syscall.Errno(0x5c)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x20)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large or too small\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol option not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"connection timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIDRM\", \"identifier removed\"},\n\t{83, \"ENOMSG\", \"no message of desired type\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"EILSEQ\", \"illegal byte sequence\"},\n\t{86, \"ENOTSUP\", \"not supported\"},\n\t{87, \"ECANCELED\", \"operation Canceled\"},\n\t{88, \"EBADMSG\", \"bad or Corrupt message\"},\n\t{89, \"ENODATA\", \"no message available\"},\n\t{90, \"ENOSR\", \"no STREAM resources\"},\n\t{91, \"ENOSTR\", \"not a STREAM\"},\n\t{92, \"ETIME\", \"STREAM ioctl timeout\"},\n\t{93, \"ENOATTR\", \"attribute not found\"},\n\t{94, \"EMULTIHOP\", \"multihop attempted\"},\n\t{95, \"ENOLINK\", \"link has been severed\"},\n\t{96, \"ELAST\", \"protocol error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"stopped (signal)\"},\n\t{18, \"SIGTSTP\", \"stopped\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGPWR\", \"power fail/restart\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && netbsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_ARP                            = 0x1c\n\tAF_BLUETOOTH                      = 0x1f\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_HYLINK                         = 0xf\n\tAF_IEEE80211                      = 0x20\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x18\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x23\n\tAF_MPLS                           = 0x21\n\tAF_NATM                           = 0x1b\n\tAF_NS                             = 0x6\n\tAF_OROUTE                         = 0x11\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x22\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tARPHRD_ARCNET                     = 0x7\n\tARPHRD_ETHER                      = 0x1\n\tARPHRD_FRELAY                     = 0xf\n\tARPHRD_IEEE1394                   = 0x18\n\tARPHRD_IEEE802                    = 0x6\n\tARPHRD_STRIP                      = 0x17\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB460800                           = 0x70800\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB921600                           = 0xe1000\n\tB9600                             = 0x2580\n\tBIOCFEEDBACK                      = 0x8004427d\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc0104277\n\tBIOCGETIF                         = 0x4090426b\n\tBIOCGFEEDBACK                     = 0x4004427c\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRTIMEOUT                     = 0x4010427b\n\tBIOCGSEESENT                      = 0x40044278\n\tBIOCGSTATS                        = 0x4080426f\n\tBIOCGSTATSOLD                     = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDLT                          = 0x80044276\n\tBIOCSETF                          = 0x80104267\n\tBIOCSETIF                         = 0x8090426c\n\tBIOCSFEEDBACK                     = 0x8004427d\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRTIMEOUT                     = 0x8010427a\n\tBIOCSSEESENT                      = 0x80044279\n\tBIOCSTCPF                         = 0x80104272\n\tBIOCSUDPF                         = 0x80104273\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x8\n\tBPF_ALIGNMENT32                   = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DFLTBUFSIZE                   = 0x100000\n\tBPF_DIV                           = 0x30\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x1000000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLONE_CSIGNAL                     = 0xff\n\tCLONE_FILES                       = 0x400\n\tCLONE_FS                          = 0x200\n\tCLONE_PID                         = 0x1000\n\tCLONE_PTRACE                      = 0x2000\n\tCLONE_SIGHAND                     = 0x800\n\tCLONE_VFORK                       = 0x4000\n\tCLONE_VM                          = 0x100\n\tCPUSTATES                         = 0x5\n\tCP_IDLE                           = 0x4\n\tCP_INTR                           = 0x3\n\tCP_NICE                           = 0x1\n\tCP_SYS                            = 0x2\n\tCP_USER                           = 0x0\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x10000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0x14\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tCTL_QUERY                         = -0x2\n\tDIOCBSFLUSH                       = 0x20006478\n\tDLT_A429                          = 0xb8\n\tDLT_A653_ICM                      = 0xb9\n\tDLT_AIRONET_HEADER                = 0x78\n\tDLT_AOS                           = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394        = 0x8a\n\tDLT_ARCNET                        = 0x7\n\tDLT_ARCNET_LINUX                  = 0x81\n\tDLT_ATM_CLIP                      = 0x13\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AURORA                        = 0x7e\n\tDLT_AX25                          = 0x3\n\tDLT_AX25_KISS                     = 0xca\n\tDLT_BACNET_MS_TP                  = 0xa5\n\tDLT_BLUETOOTH_HCI_H4              = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR    = 0xc9\n\tDLT_CAN20B                        = 0xbe\n\tDLT_CAN_SOCKETCAN                 = 0xe3\n\tDLT_CHAOS                         = 0x5\n\tDLT_CISCO_IOS                     = 0x76\n\tDLT_C_HDLC                        = 0x68\n\tDLT_C_HDLC_WITH_DIR               = 0xcd\n\tDLT_DECT                          = 0xdd\n\tDLT_DOCSIS                        = 0x8f\n\tDLT_ECONET                        = 0x73\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0x6d\n\tDLT_ERF                           = 0xc5\n\tDLT_ERF_ETH                       = 0xaf\n\tDLT_ERF_POS                       = 0xb0\n\tDLT_FC_2                          = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS        = 0xe1\n\tDLT_FDDI                          = 0xa\n\tDLT_FLEXRAY                       = 0xd2\n\tDLT_FRELAY                        = 0x6b\n\tDLT_FRELAY_WITH_DIR               = 0xce\n\tDLT_GCOM_SERIAL                   = 0xad\n\tDLT_GCOM_T1E1                     = 0xac\n\tDLT_GPF_F                         = 0xab\n\tDLT_GPF_T                         = 0xaa\n\tDLT_GPRS_LLC                      = 0xa9\n\tDLT_GSMTAP_ABIS                   = 0xda\n\tDLT_GSMTAP_UM                     = 0xd9\n\tDLT_HDLC                          = 0x10\n\tDLT_HHDLC                         = 0x79\n\tDLT_HIPPI                         = 0xf\n\tDLT_IBM_SN                        = 0x92\n\tDLT_IBM_SP                        = 0x91\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS          = 0xa3\n\tDLT_IEEE802_15_4                  = 0xc3\n\tDLT_IEEE802_15_4_LINUX            = 0xbf\n\tDLT_IEEE802_15_4_NONASK_PHY       = 0xd7\n\tDLT_IEEE802_16_MAC_CPS            = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO      = 0xc1\n\tDLT_IPMB                          = 0xc7\n\tDLT_IPMB_LINUX                    = 0xd1\n\tDLT_IPNET                         = 0xe2\n\tDLT_IPV4                          = 0xe4\n\tDLT_IPV6                          = 0xe5\n\tDLT_IP_OVER_FC                    = 0x7a\n\tDLT_JUNIPER_ATM1                  = 0x89\n\tDLT_JUNIPER_ATM2                  = 0x87\n\tDLT_JUNIPER_CHDLC                 = 0xb5\n\tDLT_JUNIPER_ES                    = 0x84\n\tDLT_JUNIPER_ETHER                 = 0xb2\n\tDLT_JUNIPER_FRELAY                = 0xb4\n\tDLT_JUNIPER_GGSN                  = 0x85\n\tDLT_JUNIPER_ISM                   = 0xc2\n\tDLT_JUNIPER_MFR                   = 0x86\n\tDLT_JUNIPER_MLFR                  = 0x83\n\tDLT_JUNIPER_MLPPP                 = 0x82\n\tDLT_JUNIPER_MONITOR               = 0xa4\n\tDLT_JUNIPER_PIC_PEER              = 0xae\n\tDLT_JUNIPER_PPP                   = 0xb3\n\tDLT_JUNIPER_PPPOE                 = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM             = 0xa8\n\tDLT_JUNIPER_SERVICES              = 0x88\n\tDLT_JUNIPER_ST                    = 0xc8\n\tDLT_JUNIPER_VP                    = 0xb7\n\tDLT_LAPB_WITH_DIR                 = 0xcf\n\tDLT_LAPD                          = 0xcb\n\tDLT_LIN                           = 0xd4\n\tDLT_LINUX_EVDEV                   = 0xd8\n\tDLT_LINUX_IRDA                    = 0x90\n\tDLT_LINUX_LAPD                    = 0xb1\n\tDLT_LINUX_SLL                     = 0x71\n\tDLT_LOOP                          = 0x6c\n\tDLT_LTALK                         = 0x72\n\tDLT_MFR                           = 0xb6\n\tDLT_MOST                          = 0xd3\n\tDLT_MPLS                          = 0xdb\n\tDLT_MTP2                          = 0x8c\n\tDLT_MTP2_WITH_PHDR                = 0x8b\n\tDLT_MTP3                          = 0x8d\n\tDLT_NULL                          = 0x0\n\tDLT_PCI_EXP                       = 0x7d\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPI                           = 0xc0\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0xe\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_PPPD                      = 0xa6\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PPP_WITH_DIR                  = 0xcc\n\tDLT_PRISM_HEADER                  = 0x77\n\tDLT_PRONET                        = 0x4\n\tDLT_RAIF1                         = 0xc6\n\tDLT_RAW                           = 0xc\n\tDLT_RAWAF_MASK                    = 0x2240000\n\tDLT_RIO                           = 0x7c\n\tDLT_SCCP                          = 0x8e\n\tDLT_SITA                          = 0xc4\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xd\n\tDLT_SUNATM                        = 0x7b\n\tDLT_SYMANTEC_FIREWALL             = 0x63\n\tDLT_TZSP                          = 0x80\n\tDLT_USB                           = 0xba\n\tDLT_USB_LINUX                     = 0xbd\n\tDLT_USB_LINUX_MMAPPED             = 0xdc\n\tDLT_WIHART                        = 0xdf\n\tDLT_X2E_SERIAL                    = 0xd5\n\tDLT_X2E_XORAYA                    = 0xd6\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tDT_WHT                            = 0xe\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEMUL_LINUX                        = 0x1\n\tEMUL_LINUX32                      = 0x5\n\tEMUL_MAXID                        = 0x6\n\tETHERCAP_JUMBO_MTU                = 0x4\n\tETHERCAP_VLAN_HWTAGGING           = 0x2\n\tETHERCAP_VLAN_MTU                 = 0x1\n\tETHERMIN                          = 0x2e\n\tETHERMTU                          = 0x5dc\n\tETHERMTU_JUMBO                    = 0x2328\n\tETHERTYPE_8023                    = 0x4\n\tETHERTYPE_AARP                    = 0x80f3\n\tETHERTYPE_ACCTON                  = 0x8390\n\tETHERTYPE_AEONIC                  = 0x8036\n\tETHERTYPE_ALPHA                   = 0x814a\n\tETHERTYPE_AMBER                   = 0x6008\n\tETHERTYPE_AMOEBA                  = 0x8145\n\tETHERTYPE_APOLLO                  = 0x80f7\n\tETHERTYPE_APOLLODOMAIN            = 0x8019\n\tETHERTYPE_APPLETALK               = 0x809b\n\tETHERTYPE_APPLITEK                = 0x80c7\n\tETHERTYPE_ARGONAUT                = 0x803a\n\tETHERTYPE_ARP                     = 0x806\n\tETHERTYPE_AT                      = 0x809b\n\tETHERTYPE_ATALK                   = 0x809b\n\tETHERTYPE_ATOMIC                  = 0x86df\n\tETHERTYPE_ATT                     = 0x8069\n\tETHERTYPE_ATTSTANFORD             = 0x8008\n\tETHERTYPE_AUTOPHON                = 0x806a\n\tETHERTYPE_AXIS                    = 0x8856\n\tETHERTYPE_BCLOOP                  = 0x9003\n\tETHERTYPE_BOFL                    = 0x8102\n\tETHERTYPE_CABLETRON               = 0x7034\n\tETHERTYPE_CHAOS                   = 0x804\n\tETHERTYPE_COMDESIGN               = 0x806c\n\tETHERTYPE_COMPUGRAPHIC            = 0x806d\n\tETHERTYPE_COUNTERPOINT            = 0x8062\n\tETHERTYPE_CRONUS                  = 0x8004\n\tETHERTYPE_CRONUSVLN               = 0x8003\n\tETHERTYPE_DCA                     = 0x1234\n\tETHERTYPE_DDE                     = 0x807b\n\tETHERTYPE_DEBNI                   = 0xaaaa\n\tETHERTYPE_DECAM                   = 0x8048\n\tETHERTYPE_DECCUST                 = 0x6006\n\tETHERTYPE_DECDIAG                 = 0x6005\n\tETHERTYPE_DECDNS                  = 0x803c\n\tETHERTYPE_DECDTS                  = 0x803e\n\tETHERTYPE_DECEXPER                = 0x6000\n\tETHERTYPE_DECLAST                 = 0x8041\n\tETHERTYPE_DECLTM                  = 0x803f\n\tETHERTYPE_DECMUMPS                = 0x6009\n\tETHERTYPE_DECNETBIOS              = 0x8040\n\tETHERTYPE_DELTACON                = 0x86de\n\tETHERTYPE_DIDDLE                  = 0x4321\n\tETHERTYPE_DLOG1                   = 0x660\n\tETHERTYPE_DLOG2                   = 0x661\n\tETHERTYPE_DN                      = 0x6003\n\tETHERTYPE_DOGFIGHT                = 0x1989\n\tETHERTYPE_DSMD                    = 0x8039\n\tETHERTYPE_ECMA                    = 0x803\n\tETHERTYPE_ENCRYPT                 = 0x803d\n\tETHERTYPE_ES                      = 0x805d\n\tETHERTYPE_EXCELAN                 = 0x8010\n\tETHERTYPE_EXPERDATA               = 0x8049\n\tETHERTYPE_FLIP                    = 0x8146\n\tETHERTYPE_FLOWCONTROL             = 0x8808\n\tETHERTYPE_FRARP                   = 0x808\n\tETHERTYPE_GENDYN                  = 0x8068\n\tETHERTYPE_HAYES                   = 0x8130\n\tETHERTYPE_HIPPI_FP                = 0x8180\n\tETHERTYPE_HITACHI                 = 0x8820\n\tETHERTYPE_HP                      = 0x8005\n\tETHERTYPE_IEEEPUP                 = 0xa00\n\tETHERTYPE_IEEEPUPAT               = 0xa01\n\tETHERTYPE_IMLBL                   = 0x4c42\n\tETHERTYPE_IMLBLDIAG               = 0x424c\n\tETHERTYPE_IP                      = 0x800\n\tETHERTYPE_IPAS                    = 0x876c\n\tETHERTYPE_IPV6                    = 0x86dd\n\tETHERTYPE_IPX                     = 0x8137\n\tETHERTYPE_IPXNEW                  = 0x8037\n\tETHERTYPE_KALPANA                 = 0x8582\n\tETHERTYPE_LANBRIDGE               = 0x8038\n\tETHERTYPE_LANPROBE                = 0x8888\n\tETHERTYPE_LAT                     = 0x6004\n\tETHERTYPE_LBACK                   = 0x9000\n\tETHERTYPE_LITTLE                  = 0x8060\n\tETHERTYPE_LOGICRAFT               = 0x8148\n\tETHERTYPE_LOOPBACK                = 0x9000\n\tETHERTYPE_MATRA                   = 0x807a\n\tETHERTYPE_MAX                     = 0xffff\n\tETHERTYPE_MERIT                   = 0x807c\n\tETHERTYPE_MICP                    = 0x873a\n\tETHERTYPE_MOPDL                   = 0x6001\n\tETHERTYPE_MOPRC                   = 0x6002\n\tETHERTYPE_MOTOROLA                = 0x818d\n\tETHERTYPE_MPLS                    = 0x8847\n\tETHERTYPE_MPLS_MCAST              = 0x8848\n\tETHERTYPE_MUMPS                   = 0x813f\n\tETHERTYPE_NBPCC                   = 0x3c04\n\tETHERTYPE_NBPCLAIM                = 0x3c09\n\tETHERTYPE_NBPCLREQ                = 0x3c05\n\tETHERTYPE_NBPCLRSP                = 0x3c06\n\tETHERTYPE_NBPCREQ                 = 0x3c02\n\tETHERTYPE_NBPCRSP                 = 0x3c03\n\tETHERTYPE_NBPDG                   = 0x3c07\n\tETHERTYPE_NBPDGB                  = 0x3c08\n\tETHERTYPE_NBPDLTE                 = 0x3c0a\n\tETHERTYPE_NBPRAR                  = 0x3c0c\n\tETHERTYPE_NBPRAS                  = 0x3c0b\n\tETHERTYPE_NBPRST                  = 0x3c0d\n\tETHERTYPE_NBPSCD                  = 0x3c01\n\tETHERTYPE_NBPVCD                  = 0x3c00\n\tETHERTYPE_NBS                     = 0x802\n\tETHERTYPE_NCD                     = 0x8149\n\tETHERTYPE_NESTAR                  = 0x8006\n\tETHERTYPE_NETBEUI                 = 0x8191\n\tETHERTYPE_NOVELL                  = 0x8138\n\tETHERTYPE_NS                      = 0x600\n\tETHERTYPE_NSAT                    = 0x601\n\tETHERTYPE_NSCOMPAT                = 0x807\n\tETHERTYPE_NTRAILER                = 0x10\n\tETHERTYPE_OS9                     = 0x7007\n\tETHERTYPE_OS9NET                  = 0x7009\n\tETHERTYPE_PACER                   = 0x80c6\n\tETHERTYPE_PAE                     = 0x888e\n\tETHERTYPE_PCS                     = 0x4242\n\tETHERTYPE_PLANNING                = 0x8044\n\tETHERTYPE_PPP                     = 0x880b\n\tETHERTYPE_PPPOE                   = 0x8864\n\tETHERTYPE_PPPOEDISC               = 0x8863\n\tETHERTYPE_PRIMENTS                = 0x7031\n\tETHERTYPE_PUP                     = 0x200\n\tETHERTYPE_PUPAT                   = 0x200\n\tETHERTYPE_RACAL                   = 0x7030\n\tETHERTYPE_RATIONAL                = 0x8150\n\tETHERTYPE_RAWFR                   = 0x6559\n\tETHERTYPE_RCL                     = 0x1995\n\tETHERTYPE_RDP                     = 0x8739\n\tETHERTYPE_RETIX                   = 0x80f2\n\tETHERTYPE_REVARP                  = 0x8035\n\tETHERTYPE_SCA                     = 0x6007\n\tETHERTYPE_SECTRA                  = 0x86db\n\tETHERTYPE_SECUREDATA              = 0x876d\n\tETHERTYPE_SGITW                   = 0x817e\n\tETHERTYPE_SG_BOUNCE               = 0x8016\n\tETHERTYPE_SG_DIAG                 = 0x8013\n\tETHERTYPE_SG_NETGAMES             = 0x8014\n\tETHERTYPE_SG_RESV                 = 0x8015\n\tETHERTYPE_SIMNET                  = 0x5208\n\tETHERTYPE_SLOWPROTOCOLS           = 0x8809\n\tETHERTYPE_SNA                     = 0x80d5\n\tETHERTYPE_SNMP                    = 0x814c\n\tETHERTYPE_SONIX                   = 0xfaf5\n\tETHERTYPE_SPIDER                  = 0x809f\n\tETHERTYPE_SPRITE                  = 0x500\n\tETHERTYPE_STP                     = 0x8181\n\tETHERTYPE_TALARIS                 = 0x812b\n\tETHERTYPE_TALARISMC               = 0x852b\n\tETHERTYPE_TCPCOMP                 = 0x876b\n\tETHERTYPE_TCPSM                   = 0x9002\n\tETHERTYPE_TEC                     = 0x814f\n\tETHERTYPE_TIGAN                   = 0x802f\n\tETHERTYPE_TRAIL                   = 0x1000\n\tETHERTYPE_TRANSETHER              = 0x6558\n\tETHERTYPE_TYMSHARE                = 0x802e\n\tETHERTYPE_UBBST                   = 0x7005\n\tETHERTYPE_UBDEBUG                 = 0x900\n\tETHERTYPE_UBDIAGLOOP              = 0x7002\n\tETHERTYPE_UBDL                    = 0x7000\n\tETHERTYPE_UBNIU                   = 0x7001\n\tETHERTYPE_UBNMC                   = 0x7003\n\tETHERTYPE_VALID                   = 0x1600\n\tETHERTYPE_VARIAN                  = 0x80dd\n\tETHERTYPE_VAXELN                  = 0x803b\n\tETHERTYPE_VEECO                   = 0x8067\n\tETHERTYPE_VEXP                    = 0x805b\n\tETHERTYPE_VGLAB                   = 0x8131\n\tETHERTYPE_VINES                   = 0xbad\n\tETHERTYPE_VINESECHO               = 0xbaf\n\tETHERTYPE_VINESLOOP               = 0xbae\n\tETHERTYPE_VITAL                   = 0xff00\n\tETHERTYPE_VLAN                    = 0x8100\n\tETHERTYPE_VLTLMAN                 = 0x8080\n\tETHERTYPE_VPROD                   = 0x805c\n\tETHERTYPE_VURESERVED              = 0x8147\n\tETHERTYPE_WATERLOO                = 0x8130\n\tETHERTYPE_WELLFLEET               = 0x8103\n\tETHERTYPE_X25                     = 0x805\n\tETHERTYPE_X75                     = 0x801\n\tETHERTYPE_XNSSM                   = 0x9001\n\tETHERTYPE_XTP                     = 0x817d\n\tETHER_ADDR_LEN                    = 0x6\n\tETHER_CRC_LEN                     = 0x4\n\tETHER_CRC_POLY_BE                 = 0x4c11db6\n\tETHER_CRC_POLY_LE                 = 0xedb88320\n\tETHER_HDR_LEN                     = 0xe\n\tETHER_MAX_LEN                     = 0x5ee\n\tETHER_MAX_LEN_JUMBO               = 0x233a\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_PPPOE_ENCAP_LEN             = 0x8\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = 0x2\n\tEVFILT_PROC                       = 0x4\n\tEVFILT_READ                       = 0x0\n\tEVFILT_SIGNAL                     = 0x5\n\tEVFILT_SYSCOUNT                   = 0x7\n\tEVFILT_TIMER                      = 0x6\n\tEVFILT_VNODE                      = 0x3\n\tEVFILT_WRITE                      = 0x1\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_SYSFLAGS                       = 0xf000\n\tEXTA                              = 0x4b00\n\tEXTATTR_CMD_START                 = 0x1\n\tEXTATTR_CMD_STOP                  = 0x2\n\tEXTATTR_NAMESPACE_SYSTEM          = 0x2\n\tEXTATTR_NAMESPACE_USER            = 0x1\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x100\n\tFLUSHO                            = 0x800000\n\tF_CLOSEM                          = 0xa\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0xc\n\tF_FSCTL                           = -0x80000000\n\tF_FSDIRMASK                       = 0x70000000\n\tF_FSIN                            = 0x10000000\n\tF_FSINOUT                         = 0x30000000\n\tF_FSOUT                           = 0x20000000\n\tF_FSPRIV                          = 0x8000\n\tF_FSVOID                          = 0x40000000\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETNOSIGPIPE                    = 0xd\n\tF_GETOWN                          = 0x5\n\tF_MAXFD                           = 0xb\n\tF_OK                              = 0x0\n\tF_PARAM_MASK                      = 0xfff\n\tF_PARAM_MAX                       = 0xfff\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETNOSIGPIPE                    = 0xe\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFA_ROUTE                         = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x8f52\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_NOTRAILERS                    = 0x20\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf8\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ECONET                        = 0xce\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf2\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INFINIBAND                    = 0xc7\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LINEGROUP                     = 0xd2\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_PON155                        = 0xcf\n\tIFT_PON622                        = 0xd0\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPATM                       = 0xc5\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf1\n\tIFT_Q2931                         = 0xc9\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SIPSIG                        = 0xcc\n\tIFT_SIPTG                         = 0xcb\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_STF                           = 0xd7\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TELINK                        = 0xc8\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VIRTUALTG                     = 0xca\n\tIFT_VOICEDID                      = 0xd5\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEEMFGD                    = 0xd3\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFGDEANA                  = 0xd4\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERCABLE                = 0xc6\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_IPV6_ICMP                 = 0x3a\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x34\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_VRRP                      = 0x70\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPSEC_POLICY                 = 0x1c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_EF                             = 0x8000\n\tIP_ERRORMTU                       = 0x15\n\tIP_HDRINCL                        = 0x2\n\tIP_IPSEC_POLICY                   = 0x16\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0x14\n\tIP_MF                             = 0x2000\n\tIP_MINFRAGSIZE                    = 0x45\n\tIP_MINTTL                         = 0x18\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVIF                         = 0x14\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVTTL                        = 0x17\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x6\n\tMADV_NORMAL                       = 0x0\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SPACEAVAIL                   = 0x5\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ALIGNMENT_16MB                = 0x18000000\n\tMAP_ALIGNMENT_1TB                 = 0x28000000\n\tMAP_ALIGNMENT_256TB               = 0x30000000\n\tMAP_ALIGNMENT_4GB                 = 0x20000000\n\tMAP_ALIGNMENT_64KB                = 0x10000000\n\tMAP_ALIGNMENT_64PB                = 0x38000000\n\tMAP_ALIGNMENT_MASK                = -0x1000000\n\tMAP_ALIGNMENT_SHIFT               = 0x18\n\tMAP_ANON                          = 0x1000\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_HASSEMAPHORE                  = 0x200\n\tMAP_INHERIT                       = 0x80\n\tMAP_INHERIT_COPY                  = 0x1\n\tMAP_INHERIT_DEFAULT               = 0x1\n\tMAP_INHERIT_DONATE_COPY           = 0x3\n\tMAP_INHERIT_NONE                  = 0x2\n\tMAP_INHERIT_SHARE                 = 0x0\n\tMAP_NORESERVE                     = 0x40\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x20\n\tMAP_SHARED                        = 0x1\n\tMAP_STACK                         = 0x2000\n\tMAP_TRYFIXED                      = 0x400\n\tMAP_WIRED                         = 0x800\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_BASIC_FLAGS                   = 0xe782807f\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DISCARD                       = 0x800000\n\tMNT_EXKERB                        = 0x800\n\tMNT_EXNORESPORT                   = 0x8000000\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXPUBLIC                      = 0x10000000\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_EXTATTR                       = 0x1000000\n\tMNT_FORCE                         = 0x80000\n\tMNT_GETARGS                       = 0x400000\n\tMNT_IGNORE                        = 0x100000\n\tMNT_LAZY                          = 0x3\n\tMNT_LOCAL                         = 0x1000\n\tMNT_LOG                           = 0x2000000\n\tMNT_NOATIME                       = 0x4000000\n\tMNT_NOCOREDUMP                    = 0x8000\n\tMNT_NODEV                         = 0x10\n\tMNT_NODEVMTIME                    = 0x40000000\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOWAIT                        = 0x2\n\tMNT_OP_FLAGS                      = 0x4d0000\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELATIME                      = 0x20000\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x80000000\n\tMNT_SYMPERM                       = 0x20000000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UNION                         = 0x20\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0xff90ffff\n\tMNT_WAIT                          = 0x1\n\tMSG_BCAST                         = 0x100\n\tMSG_CMSG_CLOEXEC                  = 0x800\n\tMSG_CONTROLMBUF                   = 0x2000000\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOR                           = 0x8\n\tMSG_IOVUSRSPACE                   = 0x4000000\n\tMSG_LENUSRSPACE                   = 0x8000000\n\tMSG_MCAST                         = 0x200\n\tMSG_NAMEMBUF                      = 0x1000000\n\tMSG_NBIO                          = 0x1000\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_TRUNC                         = 0x10\n\tMSG_USERFLAGS                     = 0xffffff\n\tMSG_WAITALL                       = 0x40\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x2\n\tMS_SYNC                           = 0x4\n\tNAME_MAX                          = 0x1ff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x5\n\tNET_RT_MAXID                      = 0x6\n\tNET_RT_OIFLIST                    = 0x4\n\tNET_RT_OOIFLIST                   = 0x3\n\tNFDBITS                           = 0x20\n\tNOFLSH                            = 0x80000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOFIOGETBMAP                       = 0xc004667a\n\tONLCR                             = 0x2\n\tONLRET                            = 0x40\n\tONOCR                             = 0x20\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tO_ACCMODE                         = 0x3\n\tO_ALT_IO                          = 0x40000\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x400000\n\tO_CREAT                           = 0x200\n\tO_DIRECT                          = 0x80000\n\tO_DIRECTORY                       = 0x200000\n\tO_DSYNC                           = 0x10000\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_NOSIGPIPE                       = 0x1000000\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_RSYNC                           = 0x20000\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPRI_IOFLUSH                       = 0x7c\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tRLIMIT_AS                         = 0xa\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BRD                          = 0x7\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_MAX                          = 0x9\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_TAG                          = 0x8\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BRD                           = 0x80\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_NETMASK                       = 0x4\n\tRTA_TAG                           = 0x100\n\tRTF_ANNOUNCE                      = 0x20000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_CLONED                        = 0x2000\n\tRTF_CLONING                       = 0x100\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_MASK                          = 0x80\n\tRTF_MODIFIED                      = 0x20\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_REJECT                        = 0x8\n\tRTF_SRC                           = 0x10000\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_XRESOLVE                      = 0x200\n\tRTM_ADD                           = 0x1\n\tRTM_CHANGE                        = 0x3\n\tRTM_CHGADDR                       = 0x15\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_GET                           = 0x4\n\tRTM_IEEE80211                     = 0x11\n\tRTM_IFANNOUNCE                    = 0x10\n\tRTM_IFINFO                        = 0x14\n\tRTM_LLINFO_UPD                    = 0x13\n\tRTM_LOCK                          = 0x8\n\tRTM_LOSING                        = 0x5\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_OIFINFO                       = 0xf\n\tRTM_OLDADD                        = 0x9\n\tRTM_OLDDEL                        = 0xa\n\tRTM_OOIFINFO                      = 0xe\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_RTTUNIT                       = 0xf4240\n\tRTM_SETGATE                       = 0x12\n\tRTM_VERSION                       = 0x4\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tSCM_CREDS                         = 0x4\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x8\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80906931\n\tSIOCADDRT                         = 0x8038720a\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCALIFADDR                      = 0x8118691c\n\tSIOCATMARK                        = 0x40047307\n\tSIOCDELMULTI                      = 0x80906932\n\tSIOCDELRT                         = 0x8038720b\n\tSIOCDIFADDR                       = 0x80906919\n\tSIOCDIFPHYADDR                    = 0x80906949\n\tSIOCDLIFADDR                      = 0x8118691e\n\tSIOCGDRVSPEC                      = 0xc028697b\n\tSIOCGETPFSYNC                     = 0xc09069f8\n\tSIOCGETSGCNT                      = 0xc0207534\n\tSIOCGETVIFCNT                     = 0xc0287533\n\tSIOCGHIWAT                        = 0x40047301\n\tSIOCGIFADDR                       = 0xc0906921\n\tSIOCGIFADDRPREF                   = 0xc0986920\n\tSIOCGIFALIAS                      = 0xc040691b\n\tSIOCGIFBRDADDR                    = 0xc0906923\n\tSIOCGIFCAP                        = 0xc0206976\n\tSIOCGIFCONF                       = 0xc0106926\n\tSIOCGIFDATA                       = 0xc0986985\n\tSIOCGIFDLT                        = 0xc0906977\n\tSIOCGIFDSTADDR                    = 0xc0906922\n\tSIOCGIFFLAGS                      = 0xc0906911\n\tSIOCGIFGENERIC                    = 0xc090693a\n\tSIOCGIFMEDIA                      = 0xc0306936\n\tSIOCGIFMETRIC                     = 0xc0906917\n\tSIOCGIFMTU                        = 0xc090697e\n\tSIOCGIFNETMASK                    = 0xc0906925\n\tSIOCGIFPDSTADDR                   = 0xc0906948\n\tSIOCGIFPSRCADDR                   = 0xc0906947\n\tSIOCGLIFADDR                      = 0xc118691d\n\tSIOCGLIFPHYADDR                   = 0xc118694b\n\tSIOCGLINKSTR                      = 0xc0286987\n\tSIOCGLOWAT                        = 0x40047303\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGVH                           = 0xc0906983\n\tSIOCIFCREATE                      = 0x8090697a\n\tSIOCIFDESTROY                     = 0x80906979\n\tSIOCIFGCLONERS                    = 0xc0106978\n\tSIOCINITIFADDR                    = 0xc0706984\n\tSIOCSDRVSPEC                      = 0x8028697b\n\tSIOCSETPFSYNC                     = 0x809069f7\n\tSIOCSHIWAT                        = 0x80047300\n\tSIOCSIFADDR                       = 0x8090690c\n\tSIOCSIFADDRPREF                   = 0x8098691f\n\tSIOCSIFBRDADDR                    = 0x80906913\n\tSIOCSIFCAP                        = 0x80206975\n\tSIOCSIFDSTADDR                    = 0x8090690e\n\tSIOCSIFFLAGS                      = 0x80906910\n\tSIOCSIFGENERIC                    = 0x80906939\n\tSIOCSIFMEDIA                      = 0xc0906935\n\tSIOCSIFMETRIC                     = 0x80906918\n\tSIOCSIFMTU                        = 0x8090697f\n\tSIOCSIFNETMASK                    = 0x80906916\n\tSIOCSIFPHYADDR                    = 0x80406946\n\tSIOCSLIFPHYADDR                   = 0x8118694a\n\tSIOCSLINKSTR                      = 0x80286988\n\tSIOCSLOWAT                        = 0x80047302\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSVH                           = 0xc0906982\n\tSIOCZIFDATA                       = 0xc0986986\n\tSOCK_CLOEXEC                      = 0x10000000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_FLAGS_MASK                   = 0xf0000000\n\tSOCK_NONBLOCK                     = 0x20000000\n\tSOCK_NOSIGPIPE                    = 0x40000000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_ACCEPTFILTER                   = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NOHEADER                       = 0x100a\n\tSO_NOSIGPIPE                      = 0x800\n\tSO_OOBINLINE                      = 0x100\n\tSO_OVERFLOWED                     = 0x1009\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x100c\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x100b\n\tSO_TIMESTAMP                      = 0x2000\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tSYSCTL_VERSION                    = 0x1000000\n\tSYSCTL_VERS_0                     = 0x0\n\tSYSCTL_VERS_1                     = 0x1000000\n\tSYSCTL_VERS_MASK                  = 0xff000000\n\tS_ARCH1                           = 0x10000\n\tS_ARCH2                           = 0x20000\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IFWHT                           = 0xe000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tS_LOGIN_SET                       = 0x1\n\tTCIFLUSH                          = 0x1\n\tTCIOFLUSH                         = 0x3\n\tTCOFLUSH                          = 0x2\n\tTCP_CONGCTL                       = 0x20\n\tTCP_KEEPCNT                       = 0x6\n\tTCP_KEEPIDLE                      = 0x3\n\tTCP_KEEPINIT                      = 0x7\n\tTCP_KEEPINTVL                     = 0x5\n\tTCP_MAXBURST                      = 0x4\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MD5SIG                        = 0x10\n\tTCP_MINMSS                        = 0xd8\n\tTCP_MSS                           = 0x218\n\tTCP_NODELAY                       = 0x1\n\tTCSAFLUSH                         = 0x2\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCONS                          = 0x80047462\n\tTIOCDCDTIMESTAMP                  = 0x40107458\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLAG_CDTRCTS                  = 0x10\n\tTIOCFLAG_CLOCAL                   = 0x2\n\tTIOCFLAG_CRTSCTS                  = 0x4\n\tTIOCFLAG_MDMBUF                   = 0x8\n\tTIOCFLAG_SOFTCAR                  = 0x1\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGFLAGS                        = 0x4004745d\n\tTIOCGLINED                        = 0x40207442\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGQSIZE                        = 0x40047481\n\tTIOCGRANTPT                       = 0x20007447\n\tTIOCGSID                          = 0x40047463\n\tTIOCGSIZE                         = 0x40087468\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCPTMGET                        = 0x40287446\n\tTIOCPTSNAME                       = 0x40287448\n\tTIOCRCVFRAME                      = 0x80087445\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x2000745f\n\tTIOCSLINED                        = 0x80207443\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSQSIZE                        = 0x80047480\n\tTIOCSSIZE                         = 0x80087467\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x80047465\n\tTIOCSTI                           = 0x80017472\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\n\tTIOCXMTFRAME                      = 0x80087444\n\tTOSTOP                            = 0x400000\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWALL                              = 0x8\n\tWALLSIG                           = 0x8\n\tWALTSIG                           = 0x4\n\tWCLONE                            = 0x4\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\n\tWNOWAIT                           = 0x10000\n\tWNOZOMBIE                         = 0x20000\n\tWOPTSCHECKED                      = 0x40000\n\tWSTOPPED                          = 0x7f\n\tWUNTRACED                         = 0x2\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x58)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x57)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x52)\n\tEILSEQ          = syscall.Errno(0x55)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x60)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5e)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x5d)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODATA         = syscall.Errno(0x59)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x5f)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x53)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x5a)\n\tENOSTR          = syscall.Errno(0x5b)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x56)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x60)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIME           = syscall.Errno(0x5c)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x20)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large or too small\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol option not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"connection timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIDRM\", \"identifier removed\"},\n\t{83, \"ENOMSG\", \"no message of desired type\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"EILSEQ\", \"illegal byte sequence\"},\n\t{86, \"ENOTSUP\", \"not supported\"},\n\t{87, \"ECANCELED\", \"operation Canceled\"},\n\t{88, \"EBADMSG\", \"bad or Corrupt message\"},\n\t{89, \"ENODATA\", \"no message available\"},\n\t{90, \"ENOSR\", \"no STREAM resources\"},\n\t{91, \"ENOSTR\", \"not a STREAM\"},\n\t{92, \"ETIME\", \"STREAM ioctl timeout\"},\n\t{93, \"ENOATTR\", \"attribute not found\"},\n\t{94, \"EMULTIHOP\", \"multihop attempted\"},\n\t{95, \"ENOLINK\", \"link has been severed\"},\n\t{96, \"ELAST\", \"protocol error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"stopped (signal)\"},\n\t{18, \"SIGTSTP\", \"stopped\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGPWR\", \"power fail/restart\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go",
    "content": "// mkerrors.sh -marm\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm && netbsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -marm _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_ARP                            = 0x1c\n\tAF_BLUETOOTH                      = 0x1f\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_HYLINK                         = 0xf\n\tAF_IEEE80211                      = 0x20\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x18\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x23\n\tAF_MPLS                           = 0x21\n\tAF_NATM                           = 0x1b\n\tAF_NS                             = 0x6\n\tAF_OROUTE                         = 0x11\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x22\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tARPHRD_ARCNET                     = 0x7\n\tARPHRD_ETHER                      = 0x1\n\tARPHRD_FRELAY                     = 0xf\n\tARPHRD_IEEE1394                   = 0x18\n\tARPHRD_IEEE802                    = 0x6\n\tARPHRD_STRIP                      = 0x17\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB460800                           = 0x70800\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB921600                           = 0xe1000\n\tB9600                             = 0x2580\n\tBIOCFEEDBACK                      = 0x8004427d\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc0084277\n\tBIOCGETIF                         = 0x4090426b\n\tBIOCGFEEDBACK                     = 0x4004427c\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRTIMEOUT                     = 0x400c427b\n\tBIOCGSEESENT                      = 0x40044278\n\tBIOCGSTATS                        = 0x4080426f\n\tBIOCGSTATSOLD                     = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDLT                          = 0x80044276\n\tBIOCSETF                          = 0x80084267\n\tBIOCSETIF                         = 0x8090426c\n\tBIOCSFEEDBACK                     = 0x8004427d\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRTIMEOUT                     = 0x800c427a\n\tBIOCSSEESENT                      = 0x80044279\n\tBIOCSTCPF                         = 0x80084272\n\tBIOCSUDPF                         = 0x80084273\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x4\n\tBPF_ALIGNMENT32                   = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DFLTBUFSIZE                   = 0x100000\n\tBPF_DIV                           = 0x30\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x1000000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCPUSTATES                         = 0x5\n\tCP_IDLE                           = 0x4\n\tCP_INTR                           = 0x3\n\tCP_NICE                           = 0x1\n\tCP_SYS                            = 0x2\n\tCP_USER                           = 0x0\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x10000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0x14\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tCTL_QUERY                         = -0x2\n\tDIOCBSFLUSH                       = 0x20006478\n\tDLT_A429                          = 0xb8\n\tDLT_A653_ICM                      = 0xb9\n\tDLT_AIRONET_HEADER                = 0x78\n\tDLT_AOS                           = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394        = 0x8a\n\tDLT_ARCNET                        = 0x7\n\tDLT_ARCNET_LINUX                  = 0x81\n\tDLT_ATM_CLIP                      = 0x13\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AURORA                        = 0x7e\n\tDLT_AX25                          = 0x3\n\tDLT_AX25_KISS                     = 0xca\n\tDLT_BACNET_MS_TP                  = 0xa5\n\tDLT_BLUETOOTH_HCI_H4              = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR    = 0xc9\n\tDLT_CAN20B                        = 0xbe\n\tDLT_CAN_SOCKETCAN                 = 0xe3\n\tDLT_CHAOS                         = 0x5\n\tDLT_CISCO_IOS                     = 0x76\n\tDLT_C_HDLC                        = 0x68\n\tDLT_C_HDLC_WITH_DIR               = 0xcd\n\tDLT_DECT                          = 0xdd\n\tDLT_DOCSIS                        = 0x8f\n\tDLT_ECONET                        = 0x73\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0x6d\n\tDLT_ERF                           = 0xc5\n\tDLT_ERF_ETH                       = 0xaf\n\tDLT_ERF_POS                       = 0xb0\n\tDLT_FC_2                          = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS        = 0xe1\n\tDLT_FDDI                          = 0xa\n\tDLT_FLEXRAY                       = 0xd2\n\tDLT_FRELAY                        = 0x6b\n\tDLT_FRELAY_WITH_DIR               = 0xce\n\tDLT_GCOM_SERIAL                   = 0xad\n\tDLT_GCOM_T1E1                     = 0xac\n\tDLT_GPF_F                         = 0xab\n\tDLT_GPF_T                         = 0xaa\n\tDLT_GPRS_LLC                      = 0xa9\n\tDLT_GSMTAP_ABIS                   = 0xda\n\tDLT_GSMTAP_UM                     = 0xd9\n\tDLT_HDLC                          = 0x10\n\tDLT_HHDLC                         = 0x79\n\tDLT_HIPPI                         = 0xf\n\tDLT_IBM_SN                        = 0x92\n\tDLT_IBM_SP                        = 0x91\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS          = 0xa3\n\tDLT_IEEE802_15_4                  = 0xc3\n\tDLT_IEEE802_15_4_LINUX            = 0xbf\n\tDLT_IEEE802_15_4_NONASK_PHY       = 0xd7\n\tDLT_IEEE802_16_MAC_CPS            = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO      = 0xc1\n\tDLT_IPMB                          = 0xc7\n\tDLT_IPMB_LINUX                    = 0xd1\n\tDLT_IPNET                         = 0xe2\n\tDLT_IPV4                          = 0xe4\n\tDLT_IPV6                          = 0xe5\n\tDLT_IP_OVER_FC                    = 0x7a\n\tDLT_JUNIPER_ATM1                  = 0x89\n\tDLT_JUNIPER_ATM2                  = 0x87\n\tDLT_JUNIPER_CHDLC                 = 0xb5\n\tDLT_JUNIPER_ES                    = 0x84\n\tDLT_JUNIPER_ETHER                 = 0xb2\n\tDLT_JUNIPER_FRELAY                = 0xb4\n\tDLT_JUNIPER_GGSN                  = 0x85\n\tDLT_JUNIPER_ISM                   = 0xc2\n\tDLT_JUNIPER_MFR                   = 0x86\n\tDLT_JUNIPER_MLFR                  = 0x83\n\tDLT_JUNIPER_MLPPP                 = 0x82\n\tDLT_JUNIPER_MONITOR               = 0xa4\n\tDLT_JUNIPER_PIC_PEER              = 0xae\n\tDLT_JUNIPER_PPP                   = 0xb3\n\tDLT_JUNIPER_PPPOE                 = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM             = 0xa8\n\tDLT_JUNIPER_SERVICES              = 0x88\n\tDLT_JUNIPER_ST                    = 0xc8\n\tDLT_JUNIPER_VP                    = 0xb7\n\tDLT_LAPB_WITH_DIR                 = 0xcf\n\tDLT_LAPD                          = 0xcb\n\tDLT_LIN                           = 0xd4\n\tDLT_LINUX_EVDEV                   = 0xd8\n\tDLT_LINUX_IRDA                    = 0x90\n\tDLT_LINUX_LAPD                    = 0xb1\n\tDLT_LINUX_SLL                     = 0x71\n\tDLT_LOOP                          = 0x6c\n\tDLT_LTALK                         = 0x72\n\tDLT_MFR                           = 0xb6\n\tDLT_MOST                          = 0xd3\n\tDLT_MPLS                          = 0xdb\n\tDLT_MTP2                          = 0x8c\n\tDLT_MTP2_WITH_PHDR                = 0x8b\n\tDLT_MTP3                          = 0x8d\n\tDLT_NULL                          = 0x0\n\tDLT_PCI_EXP                       = 0x7d\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPI                           = 0xc0\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0xe\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_PPPD                      = 0xa6\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PPP_WITH_DIR                  = 0xcc\n\tDLT_PRISM_HEADER                  = 0x77\n\tDLT_PRONET                        = 0x4\n\tDLT_RAIF1                         = 0xc6\n\tDLT_RAW                           = 0xc\n\tDLT_RAWAF_MASK                    = 0x2240000\n\tDLT_RIO                           = 0x7c\n\tDLT_SCCP                          = 0x8e\n\tDLT_SITA                          = 0xc4\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xd\n\tDLT_SUNATM                        = 0x7b\n\tDLT_SYMANTEC_FIREWALL             = 0x63\n\tDLT_TZSP                          = 0x80\n\tDLT_USB                           = 0xba\n\tDLT_USB_LINUX                     = 0xbd\n\tDLT_USB_LINUX_MMAPPED             = 0xdc\n\tDLT_WIHART                        = 0xdf\n\tDLT_X2E_SERIAL                    = 0xd5\n\tDLT_X2E_XORAYA                    = 0xd6\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tDT_WHT                            = 0xe\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEMUL_LINUX                        = 0x1\n\tEMUL_LINUX32                      = 0x5\n\tEMUL_MAXID                        = 0x6\n\tETHERCAP_JUMBO_MTU                = 0x4\n\tETHERCAP_VLAN_HWTAGGING           = 0x2\n\tETHERCAP_VLAN_MTU                 = 0x1\n\tETHERMIN                          = 0x2e\n\tETHERMTU                          = 0x5dc\n\tETHERMTU_JUMBO                    = 0x2328\n\tETHERTYPE_8023                    = 0x4\n\tETHERTYPE_AARP                    = 0x80f3\n\tETHERTYPE_ACCTON                  = 0x8390\n\tETHERTYPE_AEONIC                  = 0x8036\n\tETHERTYPE_ALPHA                   = 0x814a\n\tETHERTYPE_AMBER                   = 0x6008\n\tETHERTYPE_AMOEBA                  = 0x8145\n\tETHERTYPE_APOLLO                  = 0x80f7\n\tETHERTYPE_APOLLODOMAIN            = 0x8019\n\tETHERTYPE_APPLETALK               = 0x809b\n\tETHERTYPE_APPLITEK                = 0x80c7\n\tETHERTYPE_ARGONAUT                = 0x803a\n\tETHERTYPE_ARP                     = 0x806\n\tETHERTYPE_AT                      = 0x809b\n\tETHERTYPE_ATALK                   = 0x809b\n\tETHERTYPE_ATOMIC                  = 0x86df\n\tETHERTYPE_ATT                     = 0x8069\n\tETHERTYPE_ATTSTANFORD             = 0x8008\n\tETHERTYPE_AUTOPHON                = 0x806a\n\tETHERTYPE_AXIS                    = 0x8856\n\tETHERTYPE_BCLOOP                  = 0x9003\n\tETHERTYPE_BOFL                    = 0x8102\n\tETHERTYPE_CABLETRON               = 0x7034\n\tETHERTYPE_CHAOS                   = 0x804\n\tETHERTYPE_COMDESIGN               = 0x806c\n\tETHERTYPE_COMPUGRAPHIC            = 0x806d\n\tETHERTYPE_COUNTERPOINT            = 0x8062\n\tETHERTYPE_CRONUS                  = 0x8004\n\tETHERTYPE_CRONUSVLN               = 0x8003\n\tETHERTYPE_DCA                     = 0x1234\n\tETHERTYPE_DDE                     = 0x807b\n\tETHERTYPE_DEBNI                   = 0xaaaa\n\tETHERTYPE_DECAM                   = 0x8048\n\tETHERTYPE_DECCUST                 = 0x6006\n\tETHERTYPE_DECDIAG                 = 0x6005\n\tETHERTYPE_DECDNS                  = 0x803c\n\tETHERTYPE_DECDTS                  = 0x803e\n\tETHERTYPE_DECEXPER                = 0x6000\n\tETHERTYPE_DECLAST                 = 0x8041\n\tETHERTYPE_DECLTM                  = 0x803f\n\tETHERTYPE_DECMUMPS                = 0x6009\n\tETHERTYPE_DECNETBIOS              = 0x8040\n\tETHERTYPE_DELTACON                = 0x86de\n\tETHERTYPE_DIDDLE                  = 0x4321\n\tETHERTYPE_DLOG1                   = 0x660\n\tETHERTYPE_DLOG2                   = 0x661\n\tETHERTYPE_DN                      = 0x6003\n\tETHERTYPE_DOGFIGHT                = 0x1989\n\tETHERTYPE_DSMD                    = 0x8039\n\tETHERTYPE_ECMA                    = 0x803\n\tETHERTYPE_ENCRYPT                 = 0x803d\n\tETHERTYPE_ES                      = 0x805d\n\tETHERTYPE_EXCELAN                 = 0x8010\n\tETHERTYPE_EXPERDATA               = 0x8049\n\tETHERTYPE_FLIP                    = 0x8146\n\tETHERTYPE_FLOWCONTROL             = 0x8808\n\tETHERTYPE_FRARP                   = 0x808\n\tETHERTYPE_GENDYN                  = 0x8068\n\tETHERTYPE_HAYES                   = 0x8130\n\tETHERTYPE_HIPPI_FP                = 0x8180\n\tETHERTYPE_HITACHI                 = 0x8820\n\tETHERTYPE_HP                      = 0x8005\n\tETHERTYPE_IEEEPUP                 = 0xa00\n\tETHERTYPE_IEEEPUPAT               = 0xa01\n\tETHERTYPE_IMLBL                   = 0x4c42\n\tETHERTYPE_IMLBLDIAG               = 0x424c\n\tETHERTYPE_IP                      = 0x800\n\tETHERTYPE_IPAS                    = 0x876c\n\tETHERTYPE_IPV6                    = 0x86dd\n\tETHERTYPE_IPX                     = 0x8137\n\tETHERTYPE_IPXNEW                  = 0x8037\n\tETHERTYPE_KALPANA                 = 0x8582\n\tETHERTYPE_LANBRIDGE               = 0x8038\n\tETHERTYPE_LANPROBE                = 0x8888\n\tETHERTYPE_LAT                     = 0x6004\n\tETHERTYPE_LBACK                   = 0x9000\n\tETHERTYPE_LITTLE                  = 0x8060\n\tETHERTYPE_LOGICRAFT               = 0x8148\n\tETHERTYPE_LOOPBACK                = 0x9000\n\tETHERTYPE_MATRA                   = 0x807a\n\tETHERTYPE_MAX                     = 0xffff\n\tETHERTYPE_MERIT                   = 0x807c\n\tETHERTYPE_MICP                    = 0x873a\n\tETHERTYPE_MOPDL                   = 0x6001\n\tETHERTYPE_MOPRC                   = 0x6002\n\tETHERTYPE_MOTOROLA                = 0x818d\n\tETHERTYPE_MPLS                    = 0x8847\n\tETHERTYPE_MPLS_MCAST              = 0x8848\n\tETHERTYPE_MUMPS                   = 0x813f\n\tETHERTYPE_NBPCC                   = 0x3c04\n\tETHERTYPE_NBPCLAIM                = 0x3c09\n\tETHERTYPE_NBPCLREQ                = 0x3c05\n\tETHERTYPE_NBPCLRSP                = 0x3c06\n\tETHERTYPE_NBPCREQ                 = 0x3c02\n\tETHERTYPE_NBPCRSP                 = 0x3c03\n\tETHERTYPE_NBPDG                   = 0x3c07\n\tETHERTYPE_NBPDGB                  = 0x3c08\n\tETHERTYPE_NBPDLTE                 = 0x3c0a\n\tETHERTYPE_NBPRAR                  = 0x3c0c\n\tETHERTYPE_NBPRAS                  = 0x3c0b\n\tETHERTYPE_NBPRST                  = 0x3c0d\n\tETHERTYPE_NBPSCD                  = 0x3c01\n\tETHERTYPE_NBPVCD                  = 0x3c00\n\tETHERTYPE_NBS                     = 0x802\n\tETHERTYPE_NCD                     = 0x8149\n\tETHERTYPE_NESTAR                  = 0x8006\n\tETHERTYPE_NETBEUI                 = 0x8191\n\tETHERTYPE_NOVELL                  = 0x8138\n\tETHERTYPE_NS                      = 0x600\n\tETHERTYPE_NSAT                    = 0x601\n\tETHERTYPE_NSCOMPAT                = 0x807\n\tETHERTYPE_NTRAILER                = 0x10\n\tETHERTYPE_OS9                     = 0x7007\n\tETHERTYPE_OS9NET                  = 0x7009\n\tETHERTYPE_PACER                   = 0x80c6\n\tETHERTYPE_PAE                     = 0x888e\n\tETHERTYPE_PCS                     = 0x4242\n\tETHERTYPE_PLANNING                = 0x8044\n\tETHERTYPE_PPP                     = 0x880b\n\tETHERTYPE_PPPOE                   = 0x8864\n\tETHERTYPE_PPPOEDISC               = 0x8863\n\tETHERTYPE_PRIMENTS                = 0x7031\n\tETHERTYPE_PUP                     = 0x200\n\tETHERTYPE_PUPAT                   = 0x200\n\tETHERTYPE_RACAL                   = 0x7030\n\tETHERTYPE_RATIONAL                = 0x8150\n\tETHERTYPE_RAWFR                   = 0x6559\n\tETHERTYPE_RCL                     = 0x1995\n\tETHERTYPE_RDP                     = 0x8739\n\tETHERTYPE_RETIX                   = 0x80f2\n\tETHERTYPE_REVARP                  = 0x8035\n\tETHERTYPE_SCA                     = 0x6007\n\tETHERTYPE_SECTRA                  = 0x86db\n\tETHERTYPE_SECUREDATA              = 0x876d\n\tETHERTYPE_SGITW                   = 0x817e\n\tETHERTYPE_SG_BOUNCE               = 0x8016\n\tETHERTYPE_SG_DIAG                 = 0x8013\n\tETHERTYPE_SG_NETGAMES             = 0x8014\n\tETHERTYPE_SG_RESV                 = 0x8015\n\tETHERTYPE_SIMNET                  = 0x5208\n\tETHERTYPE_SLOWPROTOCOLS           = 0x8809\n\tETHERTYPE_SNA                     = 0x80d5\n\tETHERTYPE_SNMP                    = 0x814c\n\tETHERTYPE_SONIX                   = 0xfaf5\n\tETHERTYPE_SPIDER                  = 0x809f\n\tETHERTYPE_SPRITE                  = 0x500\n\tETHERTYPE_STP                     = 0x8181\n\tETHERTYPE_TALARIS                 = 0x812b\n\tETHERTYPE_TALARISMC               = 0x852b\n\tETHERTYPE_TCPCOMP                 = 0x876b\n\tETHERTYPE_TCPSM                   = 0x9002\n\tETHERTYPE_TEC                     = 0x814f\n\tETHERTYPE_TIGAN                   = 0x802f\n\tETHERTYPE_TRAIL                   = 0x1000\n\tETHERTYPE_TRANSETHER              = 0x6558\n\tETHERTYPE_TYMSHARE                = 0x802e\n\tETHERTYPE_UBBST                   = 0x7005\n\tETHERTYPE_UBDEBUG                 = 0x900\n\tETHERTYPE_UBDIAGLOOP              = 0x7002\n\tETHERTYPE_UBDL                    = 0x7000\n\tETHERTYPE_UBNIU                   = 0x7001\n\tETHERTYPE_UBNMC                   = 0x7003\n\tETHERTYPE_VALID                   = 0x1600\n\tETHERTYPE_VARIAN                  = 0x80dd\n\tETHERTYPE_VAXELN                  = 0x803b\n\tETHERTYPE_VEECO                   = 0x8067\n\tETHERTYPE_VEXP                    = 0x805b\n\tETHERTYPE_VGLAB                   = 0x8131\n\tETHERTYPE_VINES                   = 0xbad\n\tETHERTYPE_VINESECHO               = 0xbaf\n\tETHERTYPE_VINESLOOP               = 0xbae\n\tETHERTYPE_VITAL                   = 0xff00\n\tETHERTYPE_VLAN                    = 0x8100\n\tETHERTYPE_VLTLMAN                 = 0x8080\n\tETHERTYPE_VPROD                   = 0x805c\n\tETHERTYPE_VURESERVED              = 0x8147\n\tETHERTYPE_WATERLOO                = 0x8130\n\tETHERTYPE_WELLFLEET               = 0x8103\n\tETHERTYPE_X25                     = 0x805\n\tETHERTYPE_X75                     = 0x801\n\tETHERTYPE_XNSSM                   = 0x9001\n\tETHERTYPE_XTP                     = 0x817d\n\tETHER_ADDR_LEN                    = 0x6\n\tETHER_CRC_LEN                     = 0x4\n\tETHER_CRC_POLY_BE                 = 0x4c11db6\n\tETHER_CRC_POLY_LE                 = 0xedb88320\n\tETHER_HDR_LEN                     = 0xe\n\tETHER_MAX_LEN                     = 0x5ee\n\tETHER_MAX_LEN_JUMBO               = 0x233a\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_PPPOE_ENCAP_LEN             = 0x8\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = 0x2\n\tEVFILT_PROC                       = 0x4\n\tEVFILT_READ                       = 0x0\n\tEVFILT_SIGNAL                     = 0x5\n\tEVFILT_SYSCOUNT                   = 0x7\n\tEVFILT_TIMER                      = 0x6\n\tEVFILT_VNODE                      = 0x3\n\tEVFILT_WRITE                      = 0x1\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_SYSFLAGS                       = 0xf000\n\tEXTA                              = 0x4b00\n\tEXTATTR_CMD_START                 = 0x1\n\tEXTATTR_CMD_STOP                  = 0x2\n\tEXTATTR_NAMESPACE_SYSTEM          = 0x2\n\tEXTATTR_NAMESPACE_USER            = 0x1\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x100\n\tFLUSHO                            = 0x800000\n\tF_CLOSEM                          = 0xa\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0xc\n\tF_FSCTL                           = -0x80000000\n\tF_FSDIRMASK                       = 0x70000000\n\tF_FSIN                            = 0x10000000\n\tF_FSINOUT                         = 0x30000000\n\tF_FSOUT                           = 0x20000000\n\tF_FSPRIV                          = 0x8000\n\tF_FSVOID                          = 0x40000000\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETNOSIGPIPE                    = 0xd\n\tF_GETOWN                          = 0x5\n\tF_MAXFD                           = 0xb\n\tF_OK                              = 0x0\n\tF_PARAM_MASK                      = 0xfff\n\tF_PARAM_MAX                       = 0xfff\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETNOSIGPIPE                    = 0xe\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFA_ROUTE                         = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x8f52\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_NOTRAILERS                    = 0x20\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf8\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ECONET                        = 0xce\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf2\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INFINIBAND                    = 0xc7\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LINEGROUP                     = 0xd2\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_PON155                        = 0xcf\n\tIFT_PON622                        = 0xd0\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPATM                       = 0xc5\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf1\n\tIFT_Q2931                         = 0xc9\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SIPSIG                        = 0xcc\n\tIFT_SIPTG                         = 0xcb\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_STF                           = 0xd7\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TELINK                        = 0xc8\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VIRTUALTG                     = 0xca\n\tIFT_VOICEDID                      = 0xd5\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEEMFGD                    = 0xd3\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFGDEANA                  = 0xd4\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERCABLE                = 0xc6\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_IPV6_ICMP                 = 0x3a\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x34\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_VRRP                      = 0x70\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPSEC_POLICY                 = 0x1c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_EF                             = 0x8000\n\tIP_ERRORMTU                       = 0x15\n\tIP_HDRINCL                        = 0x2\n\tIP_IPSEC_POLICY                   = 0x16\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0x14\n\tIP_MF                             = 0x2000\n\tIP_MINFRAGSIZE                    = 0x45\n\tIP_MINTTL                         = 0x18\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVIF                         = 0x14\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVTTL                        = 0x17\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x6\n\tMADV_NORMAL                       = 0x0\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SPACEAVAIL                   = 0x5\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ALIGNMENT_16MB                = 0x18000000\n\tMAP_ALIGNMENT_1TB                 = 0x28000000\n\tMAP_ALIGNMENT_256TB               = 0x30000000\n\tMAP_ALIGNMENT_4GB                 = 0x20000000\n\tMAP_ALIGNMENT_64KB                = 0x10000000\n\tMAP_ALIGNMENT_64PB                = 0x38000000\n\tMAP_ALIGNMENT_MASK                = -0x1000000\n\tMAP_ALIGNMENT_SHIFT               = 0x18\n\tMAP_ANON                          = 0x1000\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_HASSEMAPHORE                  = 0x200\n\tMAP_INHERIT                       = 0x80\n\tMAP_INHERIT_COPY                  = 0x1\n\tMAP_INHERIT_DEFAULT               = 0x1\n\tMAP_INHERIT_DONATE_COPY           = 0x3\n\tMAP_INHERIT_NONE                  = 0x2\n\tMAP_INHERIT_SHARE                 = 0x0\n\tMAP_NORESERVE                     = 0x40\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x20\n\tMAP_SHARED                        = 0x1\n\tMAP_STACK                         = 0x2000\n\tMAP_TRYFIXED                      = 0x400\n\tMAP_WIRED                         = 0x800\n\tMNT_ASYNC                         = 0x40\n\tMNT_BASIC_FLAGS                   = 0xe782807f\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DISCARD                       = 0x800000\n\tMNT_EXKERB                        = 0x800\n\tMNT_EXNORESPORT                   = 0x8000000\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXPUBLIC                      = 0x10000000\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_EXTATTR                       = 0x1000000\n\tMNT_FORCE                         = 0x80000\n\tMNT_GETARGS                       = 0x400000\n\tMNT_IGNORE                        = 0x100000\n\tMNT_LAZY                          = 0x3\n\tMNT_LOCAL                         = 0x1000\n\tMNT_LOG                           = 0x2000000\n\tMNT_NOATIME                       = 0x4000000\n\tMNT_NOCOREDUMP                    = 0x8000\n\tMNT_NODEV                         = 0x10\n\tMNT_NODEVMTIME                    = 0x40000000\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOWAIT                        = 0x2\n\tMNT_OP_FLAGS                      = 0x4d0000\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELATIME                      = 0x20000\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x80000000\n\tMNT_SYMPERM                       = 0x20000000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UNION                         = 0x20\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0xff90ffff\n\tMNT_WAIT                          = 0x1\n\tMSG_BCAST                         = 0x100\n\tMSG_CMSG_CLOEXEC                  = 0x800\n\tMSG_CONTROLMBUF                   = 0x2000000\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOR                           = 0x8\n\tMSG_IOVUSRSPACE                   = 0x4000000\n\tMSG_LENUSRSPACE                   = 0x8000000\n\tMSG_MCAST                         = 0x200\n\tMSG_NAMEMBUF                      = 0x1000000\n\tMSG_NBIO                          = 0x1000\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_TRUNC                         = 0x10\n\tMSG_USERFLAGS                     = 0xffffff\n\tMSG_WAITALL                       = 0x40\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x2\n\tMS_SYNC                           = 0x4\n\tNAME_MAX                          = 0x1ff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x5\n\tNET_RT_MAXID                      = 0x6\n\tNET_RT_OIFLIST                    = 0x4\n\tNET_RT_OOIFLIST                   = 0x3\n\tNFDBITS                           = 0x20\n\tNOFLSH                            = 0x80000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOFIOGETBMAP                       = 0xc004667a\n\tONLCR                             = 0x2\n\tONLRET                            = 0x40\n\tONOCR                             = 0x20\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tO_ACCMODE                         = 0x3\n\tO_ALT_IO                          = 0x40000\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x400000\n\tO_CREAT                           = 0x200\n\tO_DIRECT                          = 0x80000\n\tO_DIRECTORY                       = 0x200000\n\tO_DSYNC                           = 0x10000\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_NOSIGPIPE                       = 0x1000000\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_RSYNC                           = 0x20000\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tPRI_IOFLUSH                       = 0x7c\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tRLIMIT_AS                         = 0xa\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BRD                          = 0x7\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_MAX                          = 0x9\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_TAG                          = 0x8\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BRD                           = 0x80\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_NETMASK                       = 0x4\n\tRTA_TAG                           = 0x100\n\tRTF_ANNOUNCE                      = 0x20000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_CLONED                        = 0x2000\n\tRTF_CLONING                       = 0x100\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_MASK                          = 0x80\n\tRTF_MODIFIED                      = 0x20\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_REJECT                        = 0x8\n\tRTF_SRC                           = 0x10000\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_XRESOLVE                      = 0x200\n\tRTM_ADD                           = 0x1\n\tRTM_CHANGE                        = 0x3\n\tRTM_CHGADDR                       = 0x15\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_GET                           = 0x4\n\tRTM_IEEE80211                     = 0x11\n\tRTM_IFANNOUNCE                    = 0x10\n\tRTM_IFINFO                        = 0x14\n\tRTM_LLINFO_UPD                    = 0x13\n\tRTM_LOCK                          = 0x8\n\tRTM_LOSING                        = 0x5\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_OIFINFO                       = 0xf\n\tRTM_OLDADD                        = 0x9\n\tRTM_OLDDEL                        = 0xa\n\tRTM_OOIFINFO                      = 0xe\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_RTTUNIT                       = 0xf4240\n\tRTM_SETGATE                       = 0x12\n\tRTM_VERSION                       = 0x4\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tSCM_CREDS                         = 0x4\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x8\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80906931\n\tSIOCADDRT                         = 0x8030720a\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCALIFADDR                      = 0x8118691c\n\tSIOCATMARK                        = 0x40047307\n\tSIOCDELMULTI                      = 0x80906932\n\tSIOCDELRT                         = 0x8030720b\n\tSIOCDIFADDR                       = 0x80906919\n\tSIOCDIFPHYADDR                    = 0x80906949\n\tSIOCDLIFADDR                      = 0x8118691e\n\tSIOCGDRVSPEC                      = 0xc01c697b\n\tSIOCGETPFSYNC                     = 0xc09069f8\n\tSIOCGETSGCNT                      = 0xc0147534\n\tSIOCGETVIFCNT                     = 0xc0147533\n\tSIOCGHIWAT                        = 0x40047301\n\tSIOCGIFADDR                       = 0xc0906921\n\tSIOCGIFADDRPREF                   = 0xc0946920\n\tSIOCGIFALIAS                      = 0xc040691b\n\tSIOCGIFBRDADDR                    = 0xc0906923\n\tSIOCGIFCAP                        = 0xc0206976\n\tSIOCGIFCONF                       = 0xc0086926\n\tSIOCGIFDATA                       = 0xc0946985\n\tSIOCGIFDLT                        = 0xc0906977\n\tSIOCGIFDSTADDR                    = 0xc0906922\n\tSIOCGIFFLAGS                      = 0xc0906911\n\tSIOCGIFGENERIC                    = 0xc090693a\n\tSIOCGIFMEDIA                      = 0xc0286936\n\tSIOCGIFMETRIC                     = 0xc0906917\n\tSIOCGIFMTU                        = 0xc090697e\n\tSIOCGIFNETMASK                    = 0xc0906925\n\tSIOCGIFPDSTADDR                   = 0xc0906948\n\tSIOCGIFPSRCADDR                   = 0xc0906947\n\tSIOCGLIFADDR                      = 0xc118691d\n\tSIOCGLIFPHYADDR                   = 0xc118694b\n\tSIOCGLINKSTR                      = 0xc01c6987\n\tSIOCGLOWAT                        = 0x40047303\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGVH                           = 0xc0906983\n\tSIOCIFCREATE                      = 0x8090697a\n\tSIOCIFDESTROY                     = 0x80906979\n\tSIOCIFGCLONERS                    = 0xc00c6978\n\tSIOCINITIFADDR                    = 0xc0446984\n\tSIOCSDRVSPEC                      = 0x801c697b\n\tSIOCSETPFSYNC                     = 0x809069f7\n\tSIOCSHIWAT                        = 0x80047300\n\tSIOCSIFADDR                       = 0x8090690c\n\tSIOCSIFADDRPREF                   = 0x8094691f\n\tSIOCSIFBRDADDR                    = 0x80906913\n\tSIOCSIFCAP                        = 0x80206975\n\tSIOCSIFDSTADDR                    = 0x8090690e\n\tSIOCSIFFLAGS                      = 0x80906910\n\tSIOCSIFGENERIC                    = 0x80906939\n\tSIOCSIFMEDIA                      = 0xc0906935\n\tSIOCSIFMETRIC                     = 0x80906918\n\tSIOCSIFMTU                        = 0x8090697f\n\tSIOCSIFNETMASK                    = 0x80906916\n\tSIOCSIFPHYADDR                    = 0x80406946\n\tSIOCSLIFPHYADDR                   = 0x8118694a\n\tSIOCSLINKSTR                      = 0x801c6988\n\tSIOCSLOWAT                        = 0x80047302\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSVH                           = 0xc0906982\n\tSIOCZIFDATA                       = 0xc0946986\n\tSOCK_CLOEXEC                      = 0x10000000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_FLAGS_MASK                   = 0xf0000000\n\tSOCK_NONBLOCK                     = 0x20000000\n\tSOCK_NOSIGPIPE                    = 0x40000000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_ACCEPTFILTER                   = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NOHEADER                       = 0x100a\n\tSO_NOSIGPIPE                      = 0x800\n\tSO_OOBINLINE                      = 0x100\n\tSO_OVERFLOWED                     = 0x1009\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x100c\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x100b\n\tSO_TIMESTAMP                      = 0x2000\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tSYSCTL_VERSION                    = 0x1000000\n\tSYSCTL_VERS_0                     = 0x0\n\tSYSCTL_VERS_1                     = 0x1000000\n\tSYSCTL_VERS_MASK                  = 0xff000000\n\tS_ARCH1                           = 0x10000\n\tS_ARCH2                           = 0x20000\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IFWHT                           = 0xe000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tTCIFLUSH                          = 0x1\n\tTCIOFLUSH                         = 0x3\n\tTCOFLUSH                          = 0x2\n\tTCP_CONGCTL                       = 0x20\n\tTCP_KEEPCNT                       = 0x6\n\tTCP_KEEPIDLE                      = 0x3\n\tTCP_KEEPINIT                      = 0x7\n\tTCP_KEEPINTVL                     = 0x5\n\tTCP_MAXBURST                      = 0x4\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MD5SIG                        = 0x10\n\tTCP_MINMSS                        = 0xd8\n\tTCP_MSS                           = 0x218\n\tTCP_NODELAY                       = 0x1\n\tTCSAFLUSH                         = 0x2\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCONS                          = 0x80047462\n\tTIOCDCDTIMESTAMP                  = 0x400c7458\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLAG_CDTRCTS                  = 0x10\n\tTIOCFLAG_CLOCAL                   = 0x2\n\tTIOCFLAG_CRTSCTS                  = 0x4\n\tTIOCFLAG_MDMBUF                   = 0x8\n\tTIOCFLAG_SOFTCAR                  = 0x1\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGFLAGS                        = 0x4004745d\n\tTIOCGLINED                        = 0x40207442\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGQSIZE                        = 0x40047481\n\tTIOCGRANTPT                       = 0x20007447\n\tTIOCGSID                          = 0x40047463\n\tTIOCGSIZE                         = 0x40087468\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCPTMGET                        = 0x48087446\n\tTIOCPTSNAME                       = 0x48087448\n\tTIOCRCVFRAME                      = 0x80047445\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x2000745f\n\tTIOCSLINED                        = 0x80207443\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSQSIZE                        = 0x80047480\n\tTIOCSSIZE                         = 0x80087467\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x80047465\n\tTIOCSTI                           = 0x80017472\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\n\tTIOCXMTFRAME                      = 0x80047444\n\tTOSTOP                            = 0x400000\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWALL                              = 0x8\n\tWALLSIG                           = 0x8\n\tWALTSIG                           = 0x4\n\tWCLONE                            = 0x4\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\n\tWNOWAIT                           = 0x10000\n\tWNOZOMBIE                         = 0x20000\n\tWOPTSCHECKED                      = 0x40000\n\tWSTOPPED                          = 0x7f\n\tWUNTRACED                         = 0x2\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x58)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x57)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x52)\n\tEILSEQ          = syscall.Errno(0x55)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x60)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5e)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x5d)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODATA         = syscall.Errno(0x59)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x5f)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x53)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x5a)\n\tENOSTR          = syscall.Errno(0x5b)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x56)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x60)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIME           = syscall.Errno(0x5c)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x20)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large or too small\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol option not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"connection timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIDRM\", \"identifier removed\"},\n\t{83, \"ENOMSG\", \"no message of desired type\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"EILSEQ\", \"illegal byte sequence\"},\n\t{86, \"ENOTSUP\", \"not supported\"},\n\t{87, \"ECANCELED\", \"operation Canceled\"},\n\t{88, \"EBADMSG\", \"bad or Corrupt message\"},\n\t{89, \"ENODATA\", \"no message available\"},\n\t{90, \"ENOSR\", \"no STREAM resources\"},\n\t{91, \"ENOSTR\", \"not a STREAM\"},\n\t{92, \"ETIME\", \"STREAM ioctl timeout\"},\n\t{93, \"ENOATTR\", \"attribute not found\"},\n\t{94, \"EMULTIHOP\", \"multihop attempted\"},\n\t{95, \"ENOLINK\", \"link has been severed\"},\n\t{96, \"ELAST\", \"protocol error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"stopped (signal)\"},\n\t{18, \"SIGTSTP\", \"stopped\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGPWR\", \"power fail/restart\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && netbsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_ARP                            = 0x1c\n\tAF_BLUETOOTH                      = 0x1f\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_HYLINK                         = 0xf\n\tAF_IEEE80211                      = 0x20\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x18\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x23\n\tAF_MPLS                           = 0x21\n\tAF_NATM                           = 0x1b\n\tAF_NS                             = 0x6\n\tAF_OROUTE                         = 0x11\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x22\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tARPHRD_ARCNET                     = 0x7\n\tARPHRD_ETHER                      = 0x1\n\tARPHRD_FRELAY                     = 0xf\n\tARPHRD_IEEE1394                   = 0x18\n\tARPHRD_IEEE802                    = 0x6\n\tARPHRD_STRIP                      = 0x17\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB460800                           = 0x70800\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB921600                           = 0xe1000\n\tB9600                             = 0x2580\n\tBIOCFEEDBACK                      = 0x8004427d\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc0104277\n\tBIOCGETIF                         = 0x4090426b\n\tBIOCGFEEDBACK                     = 0x4004427c\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRTIMEOUT                     = 0x4010427b\n\tBIOCGSEESENT                      = 0x40044278\n\tBIOCGSTATS                        = 0x4080426f\n\tBIOCGSTATSOLD                     = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDLT                          = 0x80044276\n\tBIOCSETF                          = 0x80104267\n\tBIOCSETIF                         = 0x8090426c\n\tBIOCSFEEDBACK                     = 0x8004427d\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRTIMEOUT                     = 0x8010427a\n\tBIOCSSEESENT                      = 0x80044279\n\tBIOCSTCPF                         = 0x80104272\n\tBIOCSUDPF                         = 0x80104273\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x8\n\tBPF_ALIGNMENT32                   = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DFLTBUFSIZE                   = 0x100000\n\tBPF_DIV                           = 0x30\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x1000000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLONE_CSIGNAL                     = 0xff\n\tCLONE_FILES                       = 0x400\n\tCLONE_FS                          = 0x200\n\tCLONE_PID                         = 0x1000\n\tCLONE_PTRACE                      = 0x2000\n\tCLONE_SIGHAND                     = 0x800\n\tCLONE_VFORK                       = 0x4000\n\tCLONE_VM                          = 0x100\n\tCPUSTATES                         = 0x5\n\tCP_IDLE                           = 0x4\n\tCP_INTR                           = 0x3\n\tCP_NICE                           = 0x1\n\tCP_SYS                            = 0x2\n\tCP_USER                           = 0x0\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x10000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0x14\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tCTL_QUERY                         = -0x2\n\tDIOCBSFLUSH                       = 0x20006478\n\tDLT_A429                          = 0xb8\n\tDLT_A653_ICM                      = 0xb9\n\tDLT_AIRONET_HEADER                = 0x78\n\tDLT_AOS                           = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394        = 0x8a\n\tDLT_ARCNET                        = 0x7\n\tDLT_ARCNET_LINUX                  = 0x81\n\tDLT_ATM_CLIP                      = 0x13\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AURORA                        = 0x7e\n\tDLT_AX25                          = 0x3\n\tDLT_AX25_KISS                     = 0xca\n\tDLT_BACNET_MS_TP                  = 0xa5\n\tDLT_BLUETOOTH_HCI_H4              = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR    = 0xc9\n\tDLT_CAN20B                        = 0xbe\n\tDLT_CAN_SOCKETCAN                 = 0xe3\n\tDLT_CHAOS                         = 0x5\n\tDLT_CISCO_IOS                     = 0x76\n\tDLT_C_HDLC                        = 0x68\n\tDLT_C_HDLC_WITH_DIR               = 0xcd\n\tDLT_DECT                          = 0xdd\n\tDLT_DOCSIS                        = 0x8f\n\tDLT_ECONET                        = 0x73\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0x6d\n\tDLT_ERF                           = 0xc5\n\tDLT_ERF_ETH                       = 0xaf\n\tDLT_ERF_POS                       = 0xb0\n\tDLT_FC_2                          = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS        = 0xe1\n\tDLT_FDDI                          = 0xa\n\tDLT_FLEXRAY                       = 0xd2\n\tDLT_FRELAY                        = 0x6b\n\tDLT_FRELAY_WITH_DIR               = 0xce\n\tDLT_GCOM_SERIAL                   = 0xad\n\tDLT_GCOM_T1E1                     = 0xac\n\tDLT_GPF_F                         = 0xab\n\tDLT_GPF_T                         = 0xaa\n\tDLT_GPRS_LLC                      = 0xa9\n\tDLT_GSMTAP_ABIS                   = 0xda\n\tDLT_GSMTAP_UM                     = 0xd9\n\tDLT_HDLC                          = 0x10\n\tDLT_HHDLC                         = 0x79\n\tDLT_HIPPI                         = 0xf\n\tDLT_IBM_SN                        = 0x92\n\tDLT_IBM_SP                        = 0x91\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS          = 0xa3\n\tDLT_IEEE802_15_4                  = 0xc3\n\tDLT_IEEE802_15_4_LINUX            = 0xbf\n\tDLT_IEEE802_15_4_NONASK_PHY       = 0xd7\n\tDLT_IEEE802_16_MAC_CPS            = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO      = 0xc1\n\tDLT_IPMB                          = 0xc7\n\tDLT_IPMB_LINUX                    = 0xd1\n\tDLT_IPNET                         = 0xe2\n\tDLT_IPV4                          = 0xe4\n\tDLT_IPV6                          = 0xe5\n\tDLT_IP_OVER_FC                    = 0x7a\n\tDLT_JUNIPER_ATM1                  = 0x89\n\tDLT_JUNIPER_ATM2                  = 0x87\n\tDLT_JUNIPER_CHDLC                 = 0xb5\n\tDLT_JUNIPER_ES                    = 0x84\n\tDLT_JUNIPER_ETHER                 = 0xb2\n\tDLT_JUNIPER_FRELAY                = 0xb4\n\tDLT_JUNIPER_GGSN                  = 0x85\n\tDLT_JUNIPER_ISM                   = 0xc2\n\tDLT_JUNIPER_MFR                   = 0x86\n\tDLT_JUNIPER_MLFR                  = 0x83\n\tDLT_JUNIPER_MLPPP                 = 0x82\n\tDLT_JUNIPER_MONITOR               = 0xa4\n\tDLT_JUNIPER_PIC_PEER              = 0xae\n\tDLT_JUNIPER_PPP                   = 0xb3\n\tDLT_JUNIPER_PPPOE                 = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM             = 0xa8\n\tDLT_JUNIPER_SERVICES              = 0x88\n\tDLT_JUNIPER_ST                    = 0xc8\n\tDLT_JUNIPER_VP                    = 0xb7\n\tDLT_LAPB_WITH_DIR                 = 0xcf\n\tDLT_LAPD                          = 0xcb\n\tDLT_LIN                           = 0xd4\n\tDLT_LINUX_EVDEV                   = 0xd8\n\tDLT_LINUX_IRDA                    = 0x90\n\tDLT_LINUX_LAPD                    = 0xb1\n\tDLT_LINUX_SLL                     = 0x71\n\tDLT_LOOP                          = 0x6c\n\tDLT_LTALK                         = 0x72\n\tDLT_MFR                           = 0xb6\n\tDLT_MOST                          = 0xd3\n\tDLT_MPLS                          = 0xdb\n\tDLT_MTP2                          = 0x8c\n\tDLT_MTP2_WITH_PHDR                = 0x8b\n\tDLT_MTP3                          = 0x8d\n\tDLT_NULL                          = 0x0\n\tDLT_PCI_EXP                       = 0x7d\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPI                           = 0xc0\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0xe\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_PPPD                      = 0xa6\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PPP_WITH_DIR                  = 0xcc\n\tDLT_PRISM_HEADER                  = 0x77\n\tDLT_PRONET                        = 0x4\n\tDLT_RAIF1                         = 0xc6\n\tDLT_RAW                           = 0xc\n\tDLT_RAWAF_MASK                    = 0x2240000\n\tDLT_RIO                           = 0x7c\n\tDLT_SCCP                          = 0x8e\n\tDLT_SITA                          = 0xc4\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xd\n\tDLT_SUNATM                        = 0x7b\n\tDLT_SYMANTEC_FIREWALL             = 0x63\n\tDLT_TZSP                          = 0x80\n\tDLT_USB                           = 0xba\n\tDLT_USB_LINUX                     = 0xbd\n\tDLT_USB_LINUX_MMAPPED             = 0xdc\n\tDLT_WIHART                        = 0xdf\n\tDLT_X2E_SERIAL                    = 0xd5\n\tDLT_X2E_XORAYA                    = 0xd6\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tDT_WHT                            = 0xe\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEMUL_LINUX                        = 0x1\n\tEMUL_LINUX32                      = 0x5\n\tEMUL_MAXID                        = 0x6\n\tETHERCAP_JUMBO_MTU                = 0x4\n\tETHERCAP_VLAN_HWTAGGING           = 0x2\n\tETHERCAP_VLAN_MTU                 = 0x1\n\tETHERMIN                          = 0x2e\n\tETHERMTU                          = 0x5dc\n\tETHERMTU_JUMBO                    = 0x2328\n\tETHERTYPE_8023                    = 0x4\n\tETHERTYPE_AARP                    = 0x80f3\n\tETHERTYPE_ACCTON                  = 0x8390\n\tETHERTYPE_AEONIC                  = 0x8036\n\tETHERTYPE_ALPHA                   = 0x814a\n\tETHERTYPE_AMBER                   = 0x6008\n\tETHERTYPE_AMOEBA                  = 0x8145\n\tETHERTYPE_APOLLO                  = 0x80f7\n\tETHERTYPE_APOLLODOMAIN            = 0x8019\n\tETHERTYPE_APPLETALK               = 0x809b\n\tETHERTYPE_APPLITEK                = 0x80c7\n\tETHERTYPE_ARGONAUT                = 0x803a\n\tETHERTYPE_ARP                     = 0x806\n\tETHERTYPE_AT                      = 0x809b\n\tETHERTYPE_ATALK                   = 0x809b\n\tETHERTYPE_ATOMIC                  = 0x86df\n\tETHERTYPE_ATT                     = 0x8069\n\tETHERTYPE_ATTSTANFORD             = 0x8008\n\tETHERTYPE_AUTOPHON                = 0x806a\n\tETHERTYPE_AXIS                    = 0x8856\n\tETHERTYPE_BCLOOP                  = 0x9003\n\tETHERTYPE_BOFL                    = 0x8102\n\tETHERTYPE_CABLETRON               = 0x7034\n\tETHERTYPE_CHAOS                   = 0x804\n\tETHERTYPE_COMDESIGN               = 0x806c\n\tETHERTYPE_COMPUGRAPHIC            = 0x806d\n\tETHERTYPE_COUNTERPOINT            = 0x8062\n\tETHERTYPE_CRONUS                  = 0x8004\n\tETHERTYPE_CRONUSVLN               = 0x8003\n\tETHERTYPE_DCA                     = 0x1234\n\tETHERTYPE_DDE                     = 0x807b\n\tETHERTYPE_DEBNI                   = 0xaaaa\n\tETHERTYPE_DECAM                   = 0x8048\n\tETHERTYPE_DECCUST                 = 0x6006\n\tETHERTYPE_DECDIAG                 = 0x6005\n\tETHERTYPE_DECDNS                  = 0x803c\n\tETHERTYPE_DECDTS                  = 0x803e\n\tETHERTYPE_DECEXPER                = 0x6000\n\tETHERTYPE_DECLAST                 = 0x8041\n\tETHERTYPE_DECLTM                  = 0x803f\n\tETHERTYPE_DECMUMPS                = 0x6009\n\tETHERTYPE_DECNETBIOS              = 0x8040\n\tETHERTYPE_DELTACON                = 0x86de\n\tETHERTYPE_DIDDLE                  = 0x4321\n\tETHERTYPE_DLOG1                   = 0x660\n\tETHERTYPE_DLOG2                   = 0x661\n\tETHERTYPE_DN                      = 0x6003\n\tETHERTYPE_DOGFIGHT                = 0x1989\n\tETHERTYPE_DSMD                    = 0x8039\n\tETHERTYPE_ECMA                    = 0x803\n\tETHERTYPE_ENCRYPT                 = 0x803d\n\tETHERTYPE_ES                      = 0x805d\n\tETHERTYPE_EXCELAN                 = 0x8010\n\tETHERTYPE_EXPERDATA               = 0x8049\n\tETHERTYPE_FLIP                    = 0x8146\n\tETHERTYPE_FLOWCONTROL             = 0x8808\n\tETHERTYPE_FRARP                   = 0x808\n\tETHERTYPE_GENDYN                  = 0x8068\n\tETHERTYPE_HAYES                   = 0x8130\n\tETHERTYPE_HIPPI_FP                = 0x8180\n\tETHERTYPE_HITACHI                 = 0x8820\n\tETHERTYPE_HP                      = 0x8005\n\tETHERTYPE_IEEEPUP                 = 0xa00\n\tETHERTYPE_IEEEPUPAT               = 0xa01\n\tETHERTYPE_IMLBL                   = 0x4c42\n\tETHERTYPE_IMLBLDIAG               = 0x424c\n\tETHERTYPE_IP                      = 0x800\n\tETHERTYPE_IPAS                    = 0x876c\n\tETHERTYPE_IPV6                    = 0x86dd\n\tETHERTYPE_IPX                     = 0x8137\n\tETHERTYPE_IPXNEW                  = 0x8037\n\tETHERTYPE_KALPANA                 = 0x8582\n\tETHERTYPE_LANBRIDGE               = 0x8038\n\tETHERTYPE_LANPROBE                = 0x8888\n\tETHERTYPE_LAT                     = 0x6004\n\tETHERTYPE_LBACK                   = 0x9000\n\tETHERTYPE_LITTLE                  = 0x8060\n\tETHERTYPE_LOGICRAFT               = 0x8148\n\tETHERTYPE_LOOPBACK                = 0x9000\n\tETHERTYPE_MATRA                   = 0x807a\n\tETHERTYPE_MAX                     = 0xffff\n\tETHERTYPE_MERIT                   = 0x807c\n\tETHERTYPE_MICP                    = 0x873a\n\tETHERTYPE_MOPDL                   = 0x6001\n\tETHERTYPE_MOPRC                   = 0x6002\n\tETHERTYPE_MOTOROLA                = 0x818d\n\tETHERTYPE_MPLS                    = 0x8847\n\tETHERTYPE_MPLS_MCAST              = 0x8848\n\tETHERTYPE_MUMPS                   = 0x813f\n\tETHERTYPE_NBPCC                   = 0x3c04\n\tETHERTYPE_NBPCLAIM                = 0x3c09\n\tETHERTYPE_NBPCLREQ                = 0x3c05\n\tETHERTYPE_NBPCLRSP                = 0x3c06\n\tETHERTYPE_NBPCREQ                 = 0x3c02\n\tETHERTYPE_NBPCRSP                 = 0x3c03\n\tETHERTYPE_NBPDG                   = 0x3c07\n\tETHERTYPE_NBPDGB                  = 0x3c08\n\tETHERTYPE_NBPDLTE                 = 0x3c0a\n\tETHERTYPE_NBPRAR                  = 0x3c0c\n\tETHERTYPE_NBPRAS                  = 0x3c0b\n\tETHERTYPE_NBPRST                  = 0x3c0d\n\tETHERTYPE_NBPSCD                  = 0x3c01\n\tETHERTYPE_NBPVCD                  = 0x3c00\n\tETHERTYPE_NBS                     = 0x802\n\tETHERTYPE_NCD                     = 0x8149\n\tETHERTYPE_NESTAR                  = 0x8006\n\tETHERTYPE_NETBEUI                 = 0x8191\n\tETHERTYPE_NOVELL                  = 0x8138\n\tETHERTYPE_NS                      = 0x600\n\tETHERTYPE_NSAT                    = 0x601\n\tETHERTYPE_NSCOMPAT                = 0x807\n\tETHERTYPE_NTRAILER                = 0x10\n\tETHERTYPE_OS9                     = 0x7007\n\tETHERTYPE_OS9NET                  = 0x7009\n\tETHERTYPE_PACER                   = 0x80c6\n\tETHERTYPE_PAE                     = 0x888e\n\tETHERTYPE_PCS                     = 0x4242\n\tETHERTYPE_PLANNING                = 0x8044\n\tETHERTYPE_PPP                     = 0x880b\n\tETHERTYPE_PPPOE                   = 0x8864\n\tETHERTYPE_PPPOEDISC               = 0x8863\n\tETHERTYPE_PRIMENTS                = 0x7031\n\tETHERTYPE_PUP                     = 0x200\n\tETHERTYPE_PUPAT                   = 0x200\n\tETHERTYPE_RACAL                   = 0x7030\n\tETHERTYPE_RATIONAL                = 0x8150\n\tETHERTYPE_RAWFR                   = 0x6559\n\tETHERTYPE_RCL                     = 0x1995\n\tETHERTYPE_RDP                     = 0x8739\n\tETHERTYPE_RETIX                   = 0x80f2\n\tETHERTYPE_REVARP                  = 0x8035\n\tETHERTYPE_SCA                     = 0x6007\n\tETHERTYPE_SECTRA                  = 0x86db\n\tETHERTYPE_SECUREDATA              = 0x876d\n\tETHERTYPE_SGITW                   = 0x817e\n\tETHERTYPE_SG_BOUNCE               = 0x8016\n\tETHERTYPE_SG_DIAG                 = 0x8013\n\tETHERTYPE_SG_NETGAMES             = 0x8014\n\tETHERTYPE_SG_RESV                 = 0x8015\n\tETHERTYPE_SIMNET                  = 0x5208\n\tETHERTYPE_SLOWPROTOCOLS           = 0x8809\n\tETHERTYPE_SNA                     = 0x80d5\n\tETHERTYPE_SNMP                    = 0x814c\n\tETHERTYPE_SONIX                   = 0xfaf5\n\tETHERTYPE_SPIDER                  = 0x809f\n\tETHERTYPE_SPRITE                  = 0x500\n\tETHERTYPE_STP                     = 0x8181\n\tETHERTYPE_TALARIS                 = 0x812b\n\tETHERTYPE_TALARISMC               = 0x852b\n\tETHERTYPE_TCPCOMP                 = 0x876b\n\tETHERTYPE_TCPSM                   = 0x9002\n\tETHERTYPE_TEC                     = 0x814f\n\tETHERTYPE_TIGAN                   = 0x802f\n\tETHERTYPE_TRAIL                   = 0x1000\n\tETHERTYPE_TRANSETHER              = 0x6558\n\tETHERTYPE_TYMSHARE                = 0x802e\n\tETHERTYPE_UBBST                   = 0x7005\n\tETHERTYPE_UBDEBUG                 = 0x900\n\tETHERTYPE_UBDIAGLOOP              = 0x7002\n\tETHERTYPE_UBDL                    = 0x7000\n\tETHERTYPE_UBNIU                   = 0x7001\n\tETHERTYPE_UBNMC                   = 0x7003\n\tETHERTYPE_VALID                   = 0x1600\n\tETHERTYPE_VARIAN                  = 0x80dd\n\tETHERTYPE_VAXELN                  = 0x803b\n\tETHERTYPE_VEECO                   = 0x8067\n\tETHERTYPE_VEXP                    = 0x805b\n\tETHERTYPE_VGLAB                   = 0x8131\n\tETHERTYPE_VINES                   = 0xbad\n\tETHERTYPE_VINESECHO               = 0xbaf\n\tETHERTYPE_VINESLOOP               = 0xbae\n\tETHERTYPE_VITAL                   = 0xff00\n\tETHERTYPE_VLAN                    = 0x8100\n\tETHERTYPE_VLTLMAN                 = 0x8080\n\tETHERTYPE_VPROD                   = 0x805c\n\tETHERTYPE_VURESERVED              = 0x8147\n\tETHERTYPE_WATERLOO                = 0x8130\n\tETHERTYPE_WELLFLEET               = 0x8103\n\tETHERTYPE_X25                     = 0x805\n\tETHERTYPE_X75                     = 0x801\n\tETHERTYPE_XNSSM                   = 0x9001\n\tETHERTYPE_XTP                     = 0x817d\n\tETHER_ADDR_LEN                    = 0x6\n\tETHER_CRC_LEN                     = 0x4\n\tETHER_CRC_POLY_BE                 = 0x4c11db6\n\tETHER_CRC_POLY_LE                 = 0xedb88320\n\tETHER_HDR_LEN                     = 0xe\n\tETHER_MAX_LEN                     = 0x5ee\n\tETHER_MAX_LEN_JUMBO               = 0x233a\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_PPPOE_ENCAP_LEN             = 0x8\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = 0x2\n\tEVFILT_PROC                       = 0x4\n\tEVFILT_READ                       = 0x0\n\tEVFILT_SIGNAL                     = 0x5\n\tEVFILT_SYSCOUNT                   = 0x7\n\tEVFILT_TIMER                      = 0x6\n\tEVFILT_VNODE                      = 0x3\n\tEVFILT_WRITE                      = 0x1\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_SYSFLAGS                       = 0xf000\n\tEXTA                              = 0x4b00\n\tEXTATTR_CMD_START                 = 0x1\n\tEXTATTR_CMD_STOP                  = 0x2\n\tEXTATTR_NAMESPACE_SYSTEM          = 0x2\n\tEXTATTR_NAMESPACE_USER            = 0x1\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x100\n\tFLUSHO                            = 0x800000\n\tF_CLOSEM                          = 0xa\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0xc\n\tF_FSCTL                           = -0x80000000\n\tF_FSDIRMASK                       = 0x70000000\n\tF_FSIN                            = 0x10000000\n\tF_FSINOUT                         = 0x30000000\n\tF_FSOUT                           = 0x20000000\n\tF_FSPRIV                          = 0x8000\n\tF_FSVOID                          = 0x40000000\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETNOSIGPIPE                    = 0xd\n\tF_GETOWN                          = 0x5\n\tF_MAXFD                           = 0xb\n\tF_OK                              = 0x0\n\tF_PARAM_MASK                      = 0xfff\n\tF_PARAM_MAX                       = 0xfff\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETNOSIGPIPE                    = 0xe\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFA_ROUTE                         = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x8f52\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_NOTRAILERS                    = 0x20\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf8\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ECONET                        = 0xce\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf2\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INFINIBAND                    = 0xc7\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LINEGROUP                     = 0xd2\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_PON155                        = 0xcf\n\tIFT_PON622                        = 0xd0\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPATM                       = 0xc5\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf1\n\tIFT_Q2931                         = 0xc9\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SIPSIG                        = 0xcc\n\tIFT_SIPTG                         = 0xcb\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_STF                           = 0xd7\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TELINK                        = 0xc8\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VIRTUALTG                     = 0xca\n\tIFT_VOICEDID                      = 0xd5\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEEMFGD                    = 0xd3\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFGDEANA                  = 0xd4\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERCABLE                = 0xc6\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_IPV6_ICMP                 = 0x3a\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x34\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_VRRP                      = 0x70\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPSEC_POLICY                 = 0x1c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_EF                             = 0x8000\n\tIP_ERRORMTU                       = 0x15\n\tIP_HDRINCL                        = 0x2\n\tIP_IPSEC_POLICY                   = 0x16\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0x14\n\tIP_MF                             = 0x2000\n\tIP_MINFRAGSIZE                    = 0x45\n\tIP_MINTTL                         = 0x18\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVIF                         = 0x14\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVTTL                        = 0x17\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x6\n\tMADV_NORMAL                       = 0x0\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SPACEAVAIL                   = 0x5\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ALIGNMENT_16MB                = 0x18000000\n\tMAP_ALIGNMENT_1TB                 = 0x28000000\n\tMAP_ALIGNMENT_256TB               = 0x30000000\n\tMAP_ALIGNMENT_4GB                 = 0x20000000\n\tMAP_ALIGNMENT_64KB                = 0x10000000\n\tMAP_ALIGNMENT_64PB                = 0x38000000\n\tMAP_ALIGNMENT_MASK                = -0x1000000\n\tMAP_ALIGNMENT_SHIFT               = 0x18\n\tMAP_ANON                          = 0x1000\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_HASSEMAPHORE                  = 0x200\n\tMAP_INHERIT                       = 0x80\n\tMAP_INHERIT_COPY                  = 0x1\n\tMAP_INHERIT_DEFAULT               = 0x1\n\tMAP_INHERIT_DONATE_COPY           = 0x3\n\tMAP_INHERIT_NONE                  = 0x2\n\tMAP_INHERIT_SHARE                 = 0x0\n\tMAP_NORESERVE                     = 0x40\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x20\n\tMAP_SHARED                        = 0x1\n\tMAP_STACK                         = 0x2000\n\tMAP_TRYFIXED                      = 0x400\n\tMAP_WIRED                         = 0x800\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_BASIC_FLAGS                   = 0xe782807f\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DISCARD                       = 0x800000\n\tMNT_EXKERB                        = 0x800\n\tMNT_EXNORESPORT                   = 0x8000000\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXPUBLIC                      = 0x10000000\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_EXTATTR                       = 0x1000000\n\tMNT_FORCE                         = 0x80000\n\tMNT_GETARGS                       = 0x400000\n\tMNT_IGNORE                        = 0x100000\n\tMNT_LAZY                          = 0x3\n\tMNT_LOCAL                         = 0x1000\n\tMNT_LOG                           = 0x2000000\n\tMNT_NOATIME                       = 0x4000000\n\tMNT_NOCOREDUMP                    = 0x8000\n\tMNT_NODEV                         = 0x10\n\tMNT_NODEVMTIME                    = 0x40000000\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOWAIT                        = 0x2\n\tMNT_OP_FLAGS                      = 0x4d0000\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELATIME                      = 0x20000\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x80000000\n\tMNT_SYMPERM                       = 0x20000000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UNION                         = 0x20\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0xff90ffff\n\tMNT_WAIT                          = 0x1\n\tMSG_BCAST                         = 0x100\n\tMSG_CMSG_CLOEXEC                  = 0x800\n\tMSG_CONTROLMBUF                   = 0x2000000\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOR                           = 0x8\n\tMSG_IOVUSRSPACE                   = 0x4000000\n\tMSG_LENUSRSPACE                   = 0x8000000\n\tMSG_MCAST                         = 0x200\n\tMSG_NAMEMBUF                      = 0x1000000\n\tMSG_NBIO                          = 0x1000\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_TRUNC                         = 0x10\n\tMSG_USERFLAGS                     = 0xffffff\n\tMSG_WAITALL                       = 0x40\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x2\n\tMS_SYNC                           = 0x4\n\tNAME_MAX                          = 0x1ff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x5\n\tNET_RT_MAXID                      = 0x6\n\tNET_RT_OIFLIST                    = 0x4\n\tNET_RT_OOIFLIST                   = 0x3\n\tNFDBITS                           = 0x20\n\tNOFLSH                            = 0x80000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOFIOGETBMAP                       = 0xc004667a\n\tONLCR                             = 0x2\n\tONLRET                            = 0x40\n\tONOCR                             = 0x20\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tO_ACCMODE                         = 0x3\n\tO_ALT_IO                          = 0x40000\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x400000\n\tO_CREAT                           = 0x200\n\tO_DIRECT                          = 0x80000\n\tO_DIRECTORY                       = 0x200000\n\tO_DSYNC                           = 0x10000\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_NOSIGPIPE                       = 0x1000000\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_RSYNC                           = 0x20000\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPRI_IOFLUSH                       = 0x7c\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tRLIMIT_AS                         = 0xa\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BRD                          = 0x7\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_MAX                          = 0x9\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_TAG                          = 0x8\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BRD                           = 0x80\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_NETMASK                       = 0x4\n\tRTA_TAG                           = 0x100\n\tRTF_ANNOUNCE                      = 0x20000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_CLONED                        = 0x2000\n\tRTF_CLONING                       = 0x100\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_MASK                          = 0x80\n\tRTF_MODIFIED                      = 0x20\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_REJECT                        = 0x8\n\tRTF_SRC                           = 0x10000\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_XRESOLVE                      = 0x200\n\tRTM_ADD                           = 0x1\n\tRTM_CHANGE                        = 0x3\n\tRTM_CHGADDR                       = 0x15\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_GET                           = 0x4\n\tRTM_IEEE80211                     = 0x11\n\tRTM_IFANNOUNCE                    = 0x10\n\tRTM_IFINFO                        = 0x14\n\tRTM_LLINFO_UPD                    = 0x13\n\tRTM_LOCK                          = 0x8\n\tRTM_LOSING                        = 0x5\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_OIFINFO                       = 0xf\n\tRTM_OLDADD                        = 0x9\n\tRTM_OLDDEL                        = 0xa\n\tRTM_OOIFINFO                      = 0xe\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_RTTUNIT                       = 0xf4240\n\tRTM_SETGATE                       = 0x12\n\tRTM_VERSION                       = 0x4\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tSCM_CREDS                         = 0x4\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x8\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80906931\n\tSIOCADDRT                         = 0x8038720a\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCALIFADDR                      = 0x8118691c\n\tSIOCATMARK                        = 0x40047307\n\tSIOCDELMULTI                      = 0x80906932\n\tSIOCDELRT                         = 0x8038720b\n\tSIOCDIFADDR                       = 0x80906919\n\tSIOCDIFPHYADDR                    = 0x80906949\n\tSIOCDLIFADDR                      = 0x8118691e\n\tSIOCGDRVSPEC                      = 0xc028697b\n\tSIOCGETPFSYNC                     = 0xc09069f8\n\tSIOCGETSGCNT                      = 0xc0207534\n\tSIOCGETVIFCNT                     = 0xc0287533\n\tSIOCGHIWAT                        = 0x40047301\n\tSIOCGIFADDR                       = 0xc0906921\n\tSIOCGIFADDRPREF                   = 0xc0986920\n\tSIOCGIFALIAS                      = 0xc040691b\n\tSIOCGIFBRDADDR                    = 0xc0906923\n\tSIOCGIFCAP                        = 0xc0206976\n\tSIOCGIFCONF                       = 0xc0106926\n\tSIOCGIFDATA                       = 0xc0986985\n\tSIOCGIFDLT                        = 0xc0906977\n\tSIOCGIFDSTADDR                    = 0xc0906922\n\tSIOCGIFFLAGS                      = 0xc0906911\n\tSIOCGIFGENERIC                    = 0xc090693a\n\tSIOCGIFMEDIA                      = 0xc0306936\n\tSIOCGIFMETRIC                     = 0xc0906917\n\tSIOCGIFMTU                        = 0xc090697e\n\tSIOCGIFNETMASK                    = 0xc0906925\n\tSIOCGIFPDSTADDR                   = 0xc0906948\n\tSIOCGIFPSRCADDR                   = 0xc0906947\n\tSIOCGLIFADDR                      = 0xc118691d\n\tSIOCGLIFPHYADDR                   = 0xc118694b\n\tSIOCGLINKSTR                      = 0xc0286987\n\tSIOCGLOWAT                        = 0x40047303\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGVH                           = 0xc0906983\n\tSIOCIFCREATE                      = 0x8090697a\n\tSIOCIFDESTROY                     = 0x80906979\n\tSIOCIFGCLONERS                    = 0xc0106978\n\tSIOCINITIFADDR                    = 0xc0706984\n\tSIOCSDRVSPEC                      = 0x8028697b\n\tSIOCSETPFSYNC                     = 0x809069f7\n\tSIOCSHIWAT                        = 0x80047300\n\tSIOCSIFADDR                       = 0x8090690c\n\tSIOCSIFADDRPREF                   = 0x8098691f\n\tSIOCSIFBRDADDR                    = 0x80906913\n\tSIOCSIFCAP                        = 0x80206975\n\tSIOCSIFDSTADDR                    = 0x8090690e\n\tSIOCSIFFLAGS                      = 0x80906910\n\tSIOCSIFGENERIC                    = 0x80906939\n\tSIOCSIFMEDIA                      = 0xc0906935\n\tSIOCSIFMETRIC                     = 0x80906918\n\tSIOCSIFMTU                        = 0x8090697f\n\tSIOCSIFNETMASK                    = 0x80906916\n\tSIOCSIFPHYADDR                    = 0x80406946\n\tSIOCSLIFPHYADDR                   = 0x8118694a\n\tSIOCSLINKSTR                      = 0x80286988\n\tSIOCSLOWAT                        = 0x80047302\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSVH                           = 0xc0906982\n\tSIOCZIFDATA                       = 0xc0986986\n\tSOCK_CLOEXEC                      = 0x10000000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_FLAGS_MASK                   = 0xf0000000\n\tSOCK_NONBLOCK                     = 0x20000000\n\tSOCK_NOSIGPIPE                    = 0x40000000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_ACCEPTFILTER                   = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NOHEADER                       = 0x100a\n\tSO_NOSIGPIPE                      = 0x800\n\tSO_OOBINLINE                      = 0x100\n\tSO_OVERFLOWED                     = 0x1009\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x100c\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x100b\n\tSO_TIMESTAMP                      = 0x2000\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tSYSCTL_VERSION                    = 0x1000000\n\tSYSCTL_VERS_0                     = 0x0\n\tSYSCTL_VERS_1                     = 0x1000000\n\tSYSCTL_VERS_MASK                  = 0xff000000\n\tS_ARCH1                           = 0x10000\n\tS_ARCH2                           = 0x20000\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IFWHT                           = 0xe000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tS_LOGIN_SET                       = 0x1\n\tTCIFLUSH                          = 0x1\n\tTCIOFLUSH                         = 0x3\n\tTCOFLUSH                          = 0x2\n\tTCP_CONGCTL                       = 0x20\n\tTCP_KEEPCNT                       = 0x6\n\tTCP_KEEPIDLE                      = 0x3\n\tTCP_KEEPINIT                      = 0x7\n\tTCP_KEEPINTVL                     = 0x5\n\tTCP_MAXBURST                      = 0x4\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MD5SIG                        = 0x10\n\tTCP_MINMSS                        = 0xd8\n\tTCP_MSS                           = 0x218\n\tTCP_NODELAY                       = 0x1\n\tTCSAFLUSH                         = 0x2\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCONS                          = 0x80047462\n\tTIOCDCDTIMESTAMP                  = 0x40107458\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLAG_CDTRCTS                  = 0x10\n\tTIOCFLAG_CLOCAL                   = 0x2\n\tTIOCFLAG_CRTSCTS                  = 0x4\n\tTIOCFLAG_MDMBUF                   = 0x8\n\tTIOCFLAG_SOFTCAR                  = 0x1\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGFLAGS                        = 0x4004745d\n\tTIOCGLINED                        = 0x40207442\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGQSIZE                        = 0x40047481\n\tTIOCGRANTPT                       = 0x20007447\n\tTIOCGSID                          = 0x40047463\n\tTIOCGSIZE                         = 0x40087468\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCPTMGET                        = 0x40287446\n\tTIOCPTSNAME                       = 0x40287448\n\tTIOCRCVFRAME                      = 0x80087445\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x2000745f\n\tTIOCSLINED                        = 0x80207443\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSQSIZE                        = 0x80047480\n\tTIOCSSIZE                         = 0x80087467\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x80047465\n\tTIOCSTI                           = 0x80017472\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\n\tTIOCXMTFRAME                      = 0x80087444\n\tTOSTOP                            = 0x400000\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWALL                              = 0x8\n\tWALLSIG                           = 0x8\n\tWALTSIG                           = 0x4\n\tWCLONE                            = 0x4\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\n\tWNOWAIT                           = 0x10000\n\tWNOZOMBIE                         = 0x20000\n\tWOPTSCHECKED                      = 0x40000\n\tWSTOPPED                          = 0x7f\n\tWUNTRACED                         = 0x2\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x58)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x57)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x52)\n\tEILSEQ          = syscall.Errno(0x55)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x60)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5e)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x5d)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODATA         = syscall.Errno(0x59)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x5f)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x53)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x5a)\n\tENOSTR          = syscall.Errno(0x5b)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x56)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x60)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIME           = syscall.Errno(0x5c)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x20)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large or too small\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol option not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"connection timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIDRM\", \"identifier removed\"},\n\t{83, \"ENOMSG\", \"no message of desired type\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"EILSEQ\", \"illegal byte sequence\"},\n\t{86, \"ENOTSUP\", \"not supported\"},\n\t{87, \"ECANCELED\", \"operation Canceled\"},\n\t{88, \"EBADMSG\", \"bad or Corrupt message\"},\n\t{89, \"ENODATA\", \"no message available\"},\n\t{90, \"ENOSR\", \"no STREAM resources\"},\n\t{91, \"ENOSTR\", \"not a STREAM\"},\n\t{92, \"ETIME\", \"STREAM ioctl timeout\"},\n\t{93, \"ENOATTR\", \"attribute not found\"},\n\t{94, \"EMULTIHOP\", \"multihop attempted\"},\n\t{95, \"ENOLINK\", \"link has been severed\"},\n\t{96, \"ELAST\", \"protocol error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"stopped (signal)\"},\n\t{18, \"SIGTSTP\", \"stopped\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGPWR\", \"power fail/restart\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go",
    "content": "// mkerrors.sh -m32\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build 386 && openbsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m32 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_BLUETOOTH                      = 0x20\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_ENCAP                          = 0x1c\n\tAF_HYLINK                         = 0xf\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x18\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_KEY                            = 0x1e\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x24\n\tAF_MPLS                           = 0x21\n\tAF_NATM                           = 0x1b\n\tAF_NS                             = 0x6\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x11\n\tAF_SIP                            = 0x1d\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tALTWERASE                         = 0x200\n\tARPHRD_ETHER                      = 0x1\n\tARPHRD_FRELAY                     = 0xf\n\tARPHRD_IEEE1394                   = 0x18\n\tARPHRD_IEEE802                    = 0x6\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB9600                             = 0x2580\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDIRFILT                      = 0x4004427c\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc008427b\n\tBIOCGETIF                         = 0x4020426b\n\tBIOCGFILDROP                      = 0x40044278\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRSIG                         = 0x40044273\n\tBIOCGRTIMEOUT                     = 0x400c426e\n\tBIOCGSTATS                        = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCLOCK                          = 0x20004276\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDIRFILT                      = 0x8004427d\n\tBIOCSDLT                          = 0x8004427a\n\tBIOCSETF                          = 0x80084267\n\tBIOCSETIF                         = 0x8020426c\n\tBIOCSETWF                         = 0x80084277\n\tBIOCSFILDROP                      = 0x80044279\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRSIG                         = 0x80044272\n\tBIOCSRTIMEOUT                     = 0x800c426d\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DIRECTION_IN                  = 0x1\n\tBPF_DIRECTION_OUT                 = 0x2\n\tBPF_DIV                           = 0x30\n\tBPF_FILDROP_CAPTURE               = 0x1\n\tBPF_FILDROP_DROP                  = 0x2\n\tBPF_FILDROP_PASS                  = 0x0\n\tBPF_F_DIR_IN                      = 0x10\n\tBPF_F_DIR_MASK                    = 0x30\n\tBPF_F_DIR_OUT                     = 0x20\n\tBPF_F_DIR_SHIFT                   = 0x4\n\tBPF_F_FLOWID                      = 0x8\n\tBPF_F_PRI_MASK                    = 0x7\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x200000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RND                           = 0xc0\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLOCK_BOOTTIME                    = 0x6\n\tCLOCK_MONOTONIC                   = 0x3\n\tCLOCK_PROCESS_CPUTIME_ID          = 0x2\n\tCLOCK_REALTIME                    = 0x0\n\tCLOCK_THREAD_CPUTIME_ID           = 0x4\n\tCLOCK_UPTIME                      = 0x5\n\tCPUSTATES                         = 0x6\n\tCP_IDLE                           = 0x5\n\tCP_INTR                           = 0x4\n\tCP_NICE                           = 0x1\n\tCP_SPIN                           = 0x3\n\tCP_SYS                            = 0x2\n\tCP_USER                           = 0x0\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x10000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0xff\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tDIOCADDQUEUE                      = 0xc100445d\n\tDIOCADDRULE                       = 0xccc84404\n\tDIOCADDSTATE                      = 0xc1084425\n\tDIOCCHANGERULE                    = 0xccc8441a\n\tDIOCCLRIFFLAG                     = 0xc024445a\n\tDIOCCLRSRCNODES                   = 0x20004455\n\tDIOCCLRSTATES                     = 0xc0d04412\n\tDIOCCLRSTATUS                     = 0xc0244416\n\tDIOCGETLIMIT                      = 0xc0084427\n\tDIOCGETQSTATS                     = 0xc1084460\n\tDIOCGETQUEUE                      = 0xc100445f\n\tDIOCGETQUEUES                     = 0xc100445e\n\tDIOCGETRULE                       = 0xccc84407\n\tDIOCGETRULES                      = 0xccc84406\n\tDIOCGETRULESET                    = 0xc444443b\n\tDIOCGETRULESETS                   = 0xc444443a\n\tDIOCGETSRCNODES                   = 0xc0084454\n\tDIOCGETSTATE                      = 0xc1084413\n\tDIOCGETSTATES                     = 0xc0084419\n\tDIOCGETSTATUS                     = 0xc1e84415\n\tDIOCGETSYNFLWATS                  = 0xc0084463\n\tDIOCGETTIMEOUT                    = 0xc008441e\n\tDIOCIGETIFACES                    = 0xc0244457\n\tDIOCKILLSRCNODES                  = 0xc068445b\n\tDIOCKILLSTATES                    = 0xc0d04429\n\tDIOCNATLOOK                       = 0xc0504417\n\tDIOCOSFPADD                       = 0xc084444f\n\tDIOCOSFPFLUSH                     = 0x2000444e\n\tDIOCOSFPGET                       = 0xc0844450\n\tDIOCRADDADDRS                     = 0xc44c4443\n\tDIOCRADDTABLES                    = 0xc44c443d\n\tDIOCRCLRADDRS                     = 0xc44c4442\n\tDIOCRCLRASTATS                    = 0xc44c4448\n\tDIOCRCLRTABLES                    = 0xc44c443c\n\tDIOCRCLRTSTATS                    = 0xc44c4441\n\tDIOCRDELADDRS                     = 0xc44c4444\n\tDIOCRDELTABLES                    = 0xc44c443e\n\tDIOCRGETADDRS                     = 0xc44c4446\n\tDIOCRGETASTATS                    = 0xc44c4447\n\tDIOCRGETTABLES                    = 0xc44c443f\n\tDIOCRGETTSTATS                    = 0xc44c4440\n\tDIOCRINADEFINE                    = 0xc44c444d\n\tDIOCRSETADDRS                     = 0xc44c4445\n\tDIOCRSETTFLAGS                    = 0xc44c444a\n\tDIOCRTSTADDRS                     = 0xc44c4449\n\tDIOCSETDEBUG                      = 0xc0044418\n\tDIOCSETHOSTID                     = 0xc0044456\n\tDIOCSETIFFLAG                     = 0xc0244459\n\tDIOCSETLIMIT                      = 0xc0084428\n\tDIOCSETREASS                      = 0xc004445c\n\tDIOCSETSTATUSIF                   = 0xc0244414\n\tDIOCSETSYNCOOKIES                 = 0xc0014462\n\tDIOCSETSYNFLWATS                  = 0xc0084461\n\tDIOCSETTIMEOUT                    = 0xc008441d\n\tDIOCSTART                         = 0x20004401\n\tDIOCSTOP                          = 0x20004402\n\tDIOCXBEGIN                        = 0xc00c4451\n\tDIOCXCOMMIT                       = 0xc00c4452\n\tDIOCXROLLBACK                     = 0xc00c4453\n\tDLT_ARCNET                        = 0x7\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AX25                          = 0x3\n\tDLT_CHAOS                         = 0x5\n\tDLT_C_HDLC                        = 0x68\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0xd\n\tDLT_FDDI                          = 0xa\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_LOOP                          = 0xc\n\tDLT_MPLS                          = 0xdb\n\tDLT_NULL                          = 0x0\n\tDLT_OPENFLOW                      = 0x10b\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0x10\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PRONET                        = 0x4\n\tDLT_RAW                           = 0xe\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xf\n\tDLT_USBPCAP                       = 0xf9\n\tDLT_USER0                         = 0x93\n\tDLT_USER1                         = 0x94\n\tDLT_USER10                        = 0x9d\n\tDLT_USER11                        = 0x9e\n\tDLT_USER12                        = 0x9f\n\tDLT_USER13                        = 0xa0\n\tDLT_USER14                        = 0xa1\n\tDLT_USER15                        = 0xa2\n\tDLT_USER2                         = 0x95\n\tDLT_USER3                         = 0x96\n\tDLT_USER4                         = 0x97\n\tDLT_USER5                         = 0x98\n\tDLT_USER6                         = 0x99\n\tDLT_USER7                         = 0x9a\n\tDLT_USER8                         = 0x9b\n\tDLT_USER9                         = 0x9c\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEMT_TAGOVF                        = 0x1\n\tEMUL_ENABLED                      = 0x1\n\tEMUL_NATIVE                       = 0x2\n\tENDRUNDISC                        = 0x9\n\tETH64_8021_RSVD_MASK              = 0xfffffffffff0\n\tETH64_8021_RSVD_PREFIX            = 0x180c2000000\n\tETHERMIN                          = 0x2e\n\tETHERMTU                          = 0x5dc\n\tETHERTYPE_8023                    = 0x4\n\tETHERTYPE_AARP                    = 0x80f3\n\tETHERTYPE_ACCTON                  = 0x8390\n\tETHERTYPE_AEONIC                  = 0x8036\n\tETHERTYPE_ALPHA                   = 0x814a\n\tETHERTYPE_AMBER                   = 0x6008\n\tETHERTYPE_AMOEBA                  = 0x8145\n\tETHERTYPE_AOE                     = 0x88a2\n\tETHERTYPE_APOLLO                  = 0x80f7\n\tETHERTYPE_APOLLODOMAIN            = 0x8019\n\tETHERTYPE_APPLETALK               = 0x809b\n\tETHERTYPE_APPLITEK                = 0x80c7\n\tETHERTYPE_ARGONAUT                = 0x803a\n\tETHERTYPE_ARP                     = 0x806\n\tETHERTYPE_AT                      = 0x809b\n\tETHERTYPE_ATALK                   = 0x809b\n\tETHERTYPE_ATOMIC                  = 0x86df\n\tETHERTYPE_ATT                     = 0x8069\n\tETHERTYPE_ATTSTANFORD             = 0x8008\n\tETHERTYPE_AUTOPHON                = 0x806a\n\tETHERTYPE_AXIS                    = 0x8856\n\tETHERTYPE_BCLOOP                  = 0x9003\n\tETHERTYPE_BOFL                    = 0x8102\n\tETHERTYPE_CABLETRON               = 0x7034\n\tETHERTYPE_CHAOS                   = 0x804\n\tETHERTYPE_COMDESIGN               = 0x806c\n\tETHERTYPE_COMPUGRAPHIC            = 0x806d\n\tETHERTYPE_COUNTERPOINT            = 0x8062\n\tETHERTYPE_CRONUS                  = 0x8004\n\tETHERTYPE_CRONUSVLN               = 0x8003\n\tETHERTYPE_DCA                     = 0x1234\n\tETHERTYPE_DDE                     = 0x807b\n\tETHERTYPE_DEBNI                   = 0xaaaa\n\tETHERTYPE_DECAM                   = 0x8048\n\tETHERTYPE_DECCUST                 = 0x6006\n\tETHERTYPE_DECDIAG                 = 0x6005\n\tETHERTYPE_DECDNS                  = 0x803c\n\tETHERTYPE_DECDTS                  = 0x803e\n\tETHERTYPE_DECEXPER                = 0x6000\n\tETHERTYPE_DECLAST                 = 0x8041\n\tETHERTYPE_DECLTM                  = 0x803f\n\tETHERTYPE_DECMUMPS                = 0x6009\n\tETHERTYPE_DECNETBIOS              = 0x8040\n\tETHERTYPE_DELTACON                = 0x86de\n\tETHERTYPE_DIDDLE                  = 0x4321\n\tETHERTYPE_DLOG1                   = 0x660\n\tETHERTYPE_DLOG2                   = 0x661\n\tETHERTYPE_DN                      = 0x6003\n\tETHERTYPE_DOGFIGHT                = 0x1989\n\tETHERTYPE_DSMD                    = 0x8039\n\tETHERTYPE_EAPOL                   = 0x888e\n\tETHERTYPE_ECMA                    = 0x803\n\tETHERTYPE_ENCRYPT                 = 0x803d\n\tETHERTYPE_ES                      = 0x805d\n\tETHERTYPE_EXCELAN                 = 0x8010\n\tETHERTYPE_EXPERDATA               = 0x8049\n\tETHERTYPE_FLIP                    = 0x8146\n\tETHERTYPE_FLOWCONTROL             = 0x8808\n\tETHERTYPE_FRARP                   = 0x808\n\tETHERTYPE_GENDYN                  = 0x8068\n\tETHERTYPE_HAYES                   = 0x8130\n\tETHERTYPE_HIPPI_FP                = 0x8180\n\tETHERTYPE_HITACHI                 = 0x8820\n\tETHERTYPE_HP                      = 0x8005\n\tETHERTYPE_IEEEPUP                 = 0xa00\n\tETHERTYPE_IEEEPUPAT               = 0xa01\n\tETHERTYPE_IMLBL                   = 0x4c42\n\tETHERTYPE_IMLBLDIAG               = 0x424c\n\tETHERTYPE_IP                      = 0x800\n\tETHERTYPE_IPAS                    = 0x876c\n\tETHERTYPE_IPV6                    = 0x86dd\n\tETHERTYPE_IPX                     = 0x8137\n\tETHERTYPE_IPXNEW                  = 0x8037\n\tETHERTYPE_KALPANA                 = 0x8582\n\tETHERTYPE_LANBRIDGE               = 0x8038\n\tETHERTYPE_LANPROBE                = 0x8888\n\tETHERTYPE_LAT                     = 0x6004\n\tETHERTYPE_LBACK                   = 0x9000\n\tETHERTYPE_LITTLE                  = 0x8060\n\tETHERTYPE_LLDP                    = 0x88cc\n\tETHERTYPE_LOGICRAFT               = 0x8148\n\tETHERTYPE_LOOPBACK                = 0x9000\n\tETHERTYPE_MACSEC                  = 0x88e5\n\tETHERTYPE_MATRA                   = 0x807a\n\tETHERTYPE_MAX                     = 0xffff\n\tETHERTYPE_MERIT                   = 0x807c\n\tETHERTYPE_MICP                    = 0x873a\n\tETHERTYPE_MOPDL                   = 0x6001\n\tETHERTYPE_MOPRC                   = 0x6002\n\tETHERTYPE_MOTOROLA                = 0x818d\n\tETHERTYPE_MPLS                    = 0x8847\n\tETHERTYPE_MPLS_MCAST              = 0x8848\n\tETHERTYPE_MUMPS                   = 0x813f\n\tETHERTYPE_NBPCC                   = 0x3c04\n\tETHERTYPE_NBPCLAIM                = 0x3c09\n\tETHERTYPE_NBPCLREQ                = 0x3c05\n\tETHERTYPE_NBPCLRSP                = 0x3c06\n\tETHERTYPE_NBPCREQ                 = 0x3c02\n\tETHERTYPE_NBPCRSP                 = 0x3c03\n\tETHERTYPE_NBPDG                   = 0x3c07\n\tETHERTYPE_NBPDGB                  = 0x3c08\n\tETHERTYPE_NBPDLTE                 = 0x3c0a\n\tETHERTYPE_NBPRAR                  = 0x3c0c\n\tETHERTYPE_NBPRAS                  = 0x3c0b\n\tETHERTYPE_NBPRST                  = 0x3c0d\n\tETHERTYPE_NBPSCD                  = 0x3c01\n\tETHERTYPE_NBPVCD                  = 0x3c00\n\tETHERTYPE_NBS                     = 0x802\n\tETHERTYPE_NCD                     = 0x8149\n\tETHERTYPE_NESTAR                  = 0x8006\n\tETHERTYPE_NETBEUI                 = 0x8191\n\tETHERTYPE_NHRP                    = 0x2001\n\tETHERTYPE_NOVELL                  = 0x8138\n\tETHERTYPE_NS                      = 0x600\n\tETHERTYPE_NSAT                    = 0x601\n\tETHERTYPE_NSCOMPAT                = 0x807\n\tETHERTYPE_NSH                     = 0x984f\n\tETHERTYPE_NTRAILER                = 0x10\n\tETHERTYPE_OS9                     = 0x7007\n\tETHERTYPE_OS9NET                  = 0x7009\n\tETHERTYPE_PACER                   = 0x80c6\n\tETHERTYPE_PBB                     = 0x88e7\n\tETHERTYPE_PCS                     = 0x4242\n\tETHERTYPE_PLANNING                = 0x8044\n\tETHERTYPE_PPP                     = 0x880b\n\tETHERTYPE_PPPOE                   = 0x8864\n\tETHERTYPE_PPPOEDISC               = 0x8863\n\tETHERTYPE_PRIMENTS                = 0x7031\n\tETHERTYPE_PUP                     = 0x200\n\tETHERTYPE_PUPAT                   = 0x200\n\tETHERTYPE_QINQ                    = 0x88a8\n\tETHERTYPE_RACAL                   = 0x7030\n\tETHERTYPE_RATIONAL                = 0x8150\n\tETHERTYPE_RAWFR                   = 0x6559\n\tETHERTYPE_RCL                     = 0x1995\n\tETHERTYPE_RDP                     = 0x8739\n\tETHERTYPE_RETIX                   = 0x80f2\n\tETHERTYPE_REVARP                  = 0x8035\n\tETHERTYPE_SCA                     = 0x6007\n\tETHERTYPE_SECTRA                  = 0x86db\n\tETHERTYPE_SECUREDATA              = 0x876d\n\tETHERTYPE_SGITW                   = 0x817e\n\tETHERTYPE_SG_BOUNCE               = 0x8016\n\tETHERTYPE_SG_DIAG                 = 0x8013\n\tETHERTYPE_SG_NETGAMES             = 0x8014\n\tETHERTYPE_SG_RESV                 = 0x8015\n\tETHERTYPE_SIMNET                  = 0x5208\n\tETHERTYPE_SLOW                    = 0x8809\n\tETHERTYPE_SNA                     = 0x80d5\n\tETHERTYPE_SNMP                    = 0x814c\n\tETHERTYPE_SONIX                   = 0xfaf5\n\tETHERTYPE_SPIDER                  = 0x809f\n\tETHERTYPE_SPRITE                  = 0x500\n\tETHERTYPE_STP                     = 0x8181\n\tETHERTYPE_TALARIS                 = 0x812b\n\tETHERTYPE_TALARISMC               = 0x852b\n\tETHERTYPE_TCPCOMP                 = 0x876b\n\tETHERTYPE_TCPSM                   = 0x9002\n\tETHERTYPE_TEC                     = 0x814f\n\tETHERTYPE_TIGAN                   = 0x802f\n\tETHERTYPE_TRAIL                   = 0x1000\n\tETHERTYPE_TRANSETHER              = 0x6558\n\tETHERTYPE_TYMSHARE                = 0x802e\n\tETHERTYPE_UBBST                   = 0x7005\n\tETHERTYPE_UBDEBUG                 = 0x900\n\tETHERTYPE_UBDIAGLOOP              = 0x7002\n\tETHERTYPE_UBDL                    = 0x7000\n\tETHERTYPE_UBNIU                   = 0x7001\n\tETHERTYPE_UBNMC                   = 0x7003\n\tETHERTYPE_VALID                   = 0x1600\n\tETHERTYPE_VARIAN                  = 0x80dd\n\tETHERTYPE_VAXELN                  = 0x803b\n\tETHERTYPE_VEECO                   = 0x8067\n\tETHERTYPE_VEXP                    = 0x805b\n\tETHERTYPE_VGLAB                   = 0x8131\n\tETHERTYPE_VINES                   = 0xbad\n\tETHERTYPE_VINESECHO               = 0xbaf\n\tETHERTYPE_VINESLOOP               = 0xbae\n\tETHERTYPE_VITAL                   = 0xff00\n\tETHERTYPE_VLAN                    = 0x8100\n\tETHERTYPE_VLTLMAN                 = 0x8080\n\tETHERTYPE_VPROD                   = 0x805c\n\tETHERTYPE_VURESERVED              = 0x8147\n\tETHERTYPE_WATERLOO                = 0x8130\n\tETHERTYPE_WELLFLEET               = 0x8103\n\tETHERTYPE_X25                     = 0x805\n\tETHERTYPE_X75                     = 0x801\n\tETHERTYPE_XNSSM                   = 0x9001\n\tETHERTYPE_XTP                     = 0x817d\n\tETHER_ADDR_LEN                    = 0x6\n\tETHER_ALIGN                       = 0x2\n\tETHER_CRC_LEN                     = 0x4\n\tETHER_CRC_POLY_BE                 = 0x4c11db6\n\tETHER_CRC_POLY_LE                 = 0xedb88320\n\tETHER_HDR_LEN                     = 0xe\n\tETHER_MAX_DIX_LEN                 = 0x600\n\tETHER_MAX_HARDMTU_LEN             = 0xff9b\n\tETHER_MAX_LEN                     = 0x5ee\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = -0x3\n\tEVFILT_DEVICE                     = -0x8\n\tEVFILT_EXCEPT                     = -0x9\n\tEVFILT_PROC                       = -0x5\n\tEVFILT_READ                       = -0x1\n\tEVFILT_SIGNAL                     = -0x6\n\tEVFILT_SYSCOUNT                   = 0x9\n\tEVFILT_TIMER                      = -0x7\n\tEVFILT_VNODE                      = -0x4\n\tEVFILT_WRITE                      = -0x2\n\tEVL_ENCAPLEN                      = 0x4\n\tEVL_PRIO_BITS                     = 0xd\n\tEVL_PRIO_MAX                      = 0x7\n\tEVL_VLID_MASK                     = 0xfff\n\tEVL_VLID_MAX                      = 0xffe\n\tEVL_VLID_MIN                      = 0x1\n\tEVL_VLID_NULL                     = 0x0\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_DISPATCH                       = 0x80\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_RECEIPT                        = 0x40\n\tEV_SYSFLAGS                       = 0xf800\n\tEXTA                              = 0x4b00\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x400\n\tFLUSHO                            = 0x800000\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0xa\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETOWN                          = 0x5\n\tF_ISATTY                          = 0xb\n\tF_OK                              = 0x0\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x8e52\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_STATICARP                     = 0x20\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BLUETOOTH                     = 0xf8\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf7\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DUMMY                         = 0xf1\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ECONET                        = 0xce\n\tIFT_ENC                           = 0xf4\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf3\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INFINIBAND                    = 0xc7\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LINEGROUP                     = 0xd2\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MBIM                          = 0xfa\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFLOW                         = 0xf9\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_PON155                        = 0xcf\n\tIFT_PON622                        = 0xd0\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPATM                       = 0xc5\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf2\n\tIFT_Q2931                         = 0xc9\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SIPSIG                        = 0xcc\n\tIFT_SIPTG                         = 0xcb\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TELINK                        = 0xc8\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VIRTUALTG                     = 0xca\n\tIFT_VOICEDID                      = 0xd5\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEEMFGD                    = 0xd3\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFGDEANA                  = 0xd4\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERCABLE                = 0xc6\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_WIREGUARD                     = 0xfb\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIN_RFC3021_HOST                   = 0x1\n\tIN_RFC3021_NET                    = 0xfffffffe\n\tIN_RFC3021_NSHIFT                 = 0x1f\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_DIVERT                    = 0x102\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x103\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_MPLS                      = 0x89\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_SCTP                      = 0x84\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_UDPLITE                   = 0x88\n\tIPV6_AUTH_LEVEL                   = 0x35\n\tIPV6_AUTOFLOWLABEL                = 0x3b\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_ESP_NETWORK_LEVEL            = 0x37\n\tIPV6_ESP_TRANS_LEVEL              = 0x36\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPCOMP_LEVEL                 = 0x3c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MINHOPCOUNT                  = 0x41\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_OPTIONS                      = 0x1\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PIPEX                        = 0x3f\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVDSTPORT                  = 0x40\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTABLE                       = 0x1021\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_AUTH_LEVEL                     = 0x14\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_ESP_NETWORK_LEVEL              = 0x16\n\tIP_ESP_TRANS_LEVEL                = 0x15\n\tIP_HDRINCL                        = 0x2\n\tIP_IPCOMP_LEVEL                   = 0x1d\n\tIP_IPDEFTTL                       = 0x25\n\tIP_IPSECFLOWINFO                  = 0x24\n\tIP_IPSEC_LOCAL_AUTH               = 0x1b\n\tIP_IPSEC_LOCAL_CRED               = 0x19\n\tIP_IPSEC_LOCAL_ID                 = 0x17\n\tIP_IPSEC_REMOTE_AUTH              = 0x1c\n\tIP_IPSEC_REMOTE_CRED              = 0x1a\n\tIP_IPSEC_REMOTE_ID                = 0x18\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0xfff\n\tIP_MF                             = 0x2000\n\tIP_MINTTL                         = 0x20\n\tIP_MIN_MEMBERSHIPS                = 0xf\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PIPEX                          = 0x22\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVDSTPORT                    = 0x21\n\tIP_RECVIF                         = 0x1e\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVRTABLE                     = 0x23\n\tIP_RECVTTL                        = 0x1f\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_RTABLE                         = 0x1021\n\tIP_SENDSRCADDR                    = 0x7\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tITIMER_PROF                       = 0x2\n\tITIMER_REAL                       = 0x0\n\tITIMER_VIRTUAL                    = 0x1\n\tIUCLC                             = 0x1000\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLCNT_OVERLOAD_FLUSH               = 0x6\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x6\n\tMADV_NORMAL                       = 0x0\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SPACEAVAIL                   = 0x5\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ANON                          = 0x1000\n\tMAP_ANONYMOUS                     = 0x1000\n\tMAP_CONCEAL                       = 0x8000\n\tMAP_COPY                          = 0x2\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_FLAGMASK                      = 0xfff7\n\tMAP_HASSEMAPHORE                  = 0x0\n\tMAP_INHERIT                       = 0x0\n\tMAP_INHERIT_COPY                  = 0x1\n\tMAP_INHERIT_NONE                  = 0x2\n\tMAP_INHERIT_SHARE                 = 0x0\n\tMAP_INHERIT_ZERO                  = 0x3\n\tMAP_NOEXTEND                      = 0x0\n\tMAP_NORESERVE                     = 0x0\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x0\n\tMAP_SHARED                        = 0x1\n\tMAP_STACK                         = 0x4000\n\tMAP_TRYFIXED                      = 0x0\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DELEXPORT                     = 0x20000\n\tMNT_DOOMED                        = 0x8000000\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_FORCE                         = 0x80000\n\tMNT_LAZY                          = 0x3\n\tMNT_LOCAL                         = 0x1000\n\tMNT_NOATIME                       = 0x8000\n\tMNT_NODEV                         = 0x10\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOPERM                        = 0x20\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOWAIT                        = 0x2\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x4000000\n\tMNT_STALLED                       = 0x100000\n\tMNT_SWAPPABLE                     = 0x200000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0x400ffff\n\tMNT_WAIT                          = 0x1\n\tMNT_WANTRDWR                      = 0x2000000\n\tMNT_WXALLOWED                     = 0x800\n\tMOUNT_AFS                         = \"afs\"\n\tMOUNT_CD9660                      = \"cd9660\"\n\tMOUNT_EXT2FS                      = \"ext2fs\"\n\tMOUNT_FFS                         = \"ffs\"\n\tMOUNT_FUSEFS                      = \"fuse\"\n\tMOUNT_MFS                         = \"mfs\"\n\tMOUNT_MSDOS                       = \"msdos\"\n\tMOUNT_NCPFS                       = \"ncpfs\"\n\tMOUNT_NFS                         = \"nfs\"\n\tMOUNT_NTFS                        = \"ntfs\"\n\tMOUNT_TMPFS                       = \"tmpfs\"\n\tMOUNT_UDF                         = \"udf\"\n\tMOUNT_UFS                         = \"ffs\"\n\tMSG_BCAST                         = 0x100\n\tMSG_CMSG_CLOEXEC                  = 0x800\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOR                           = 0x8\n\tMSG_MCAST                         = 0x200\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_TRUNC                         = 0x10\n\tMSG_WAITALL                       = 0x40\n\tMSG_WAITFORONE                    = 0x1000\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x4\n\tMS_SYNC                           = 0x2\n\tNAME_MAX                          = 0xff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x3\n\tNET_RT_IFNAMES                    = 0x6\n\tNET_RT_MAXID                      = 0x8\n\tNET_RT_SOURCE                     = 0x7\n\tNET_RT_STATS                      = 0x4\n\tNET_RT_TABLE                      = 0x5\n\tNFDBITS                           = 0x20\n\tNOFLSH                            = 0x80000000\n\tNOKERNINFO                        = 0x2000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHANGE                       = 0x1\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EOF                          = 0x2\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_OOB                          = 0x4\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_TRUNCATE                     = 0x80\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOLCUC                             = 0x20\n\tONLCR                             = 0x2\n\tONLRET                            = 0x80\n\tONOCR                             = 0x40\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tOXTABS                            = 0x4\n\tO_ACCMODE                         = 0x3\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x10000\n\tO_CREAT                           = 0x200\n\tO_DIRECTORY                       = 0x20000\n\tO_DSYNC                           = 0x80\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_RSYNC                           = 0x80\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPF_FLUSH                          = 0x1\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BFD                          = 0xb\n\tRTAX_BRD                          = 0x7\n\tRTAX_DNS                          = 0xc\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_LABEL                        = 0xa\n\tRTAX_MAX                          = 0xf\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_SEARCH                       = 0xe\n\tRTAX_SRC                          = 0x8\n\tRTAX_SRCMASK                      = 0x9\n\tRTAX_STATIC                       = 0xd\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BFD                           = 0x800\n\tRTA_BRD                           = 0x80\n\tRTA_DNS                           = 0x1000\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_LABEL                         = 0x400\n\tRTA_NETMASK                       = 0x4\n\tRTA_SEARCH                        = 0x4000\n\tRTA_SRC                           = 0x100\n\tRTA_SRCMASK                       = 0x200\n\tRTA_STATIC                        = 0x2000\n\tRTF_ANNOUNCE                      = 0x4000\n\tRTF_BFD                           = 0x1000000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_BROADCAST                     = 0x400000\n\tRTF_CACHED                        = 0x20000\n\tRTF_CLONED                        = 0x10000\n\tRTF_CLONING                       = 0x100\n\tRTF_CONNECTED                     = 0x800000\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_FMASK                         = 0x110fc08\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_LOCAL                         = 0x200000\n\tRTF_MODIFIED                      = 0x20\n\tRTF_MPATH                         = 0x40000\n\tRTF_MPLS                          = 0x100000\n\tRTF_MULTICAST                     = 0x200\n\tRTF_PERMANENT_ARP                 = 0x2000\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_PROTO3                        = 0x2000\n\tRTF_REJECT                        = 0x8\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_USETRAILERS                   = 0x8000\n\tRTM_80211INFO                     = 0x15\n\tRTM_ADD                           = 0x1\n\tRTM_BFD                           = 0x12\n\tRTM_CHANGE                        = 0x3\n\tRTM_CHGADDRATTR                   = 0x14\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_DESYNC                        = 0x10\n\tRTM_GET                           = 0x4\n\tRTM_IFANNOUNCE                    = 0xf\n\tRTM_IFINFO                        = 0xe\n\tRTM_INVALIDATE                    = 0x11\n\tRTM_LOSING                        = 0x5\n\tRTM_MAXSIZE                       = 0x800\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_PROPOSAL                      = 0x13\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_SOURCE                        = 0x16\n\tRTM_VERSION                       = 0x5\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRT_TABLEID_BITS                   = 0x8\n\tRT_TABLEID_MASK                   = 0xff\n\tRT_TABLEID_MAX                    = 0xff\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tRUSAGE_THREAD                     = 0x1\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x4\n\tSEEK_CUR                          = 0x1\n\tSEEK_END                          = 0x2\n\tSEEK_SET                          = 0x0\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80206931\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCAIFGROUP                      = 0x80246987\n\tSIOCATMARK                        = 0x40047307\n\tSIOCBRDGADD                       = 0x805c693c\n\tSIOCBRDGADDL                      = 0x805c6949\n\tSIOCBRDGADDS                      = 0x805c6941\n\tSIOCBRDGARL                       = 0x808c694d\n\tSIOCBRDGDADDR                     = 0x81286947\n\tSIOCBRDGDEL                       = 0x805c693d\n\tSIOCBRDGDELS                      = 0x805c6942\n\tSIOCBRDGFLUSH                     = 0x805c6948\n\tSIOCBRDGFRL                       = 0x808c694e\n\tSIOCBRDGGCACHE                    = 0xc0146941\n\tSIOCBRDGGFD                       = 0xc0146952\n\tSIOCBRDGGHT                       = 0xc0146951\n\tSIOCBRDGGIFFLGS                   = 0xc05c693e\n\tSIOCBRDGGMA                       = 0xc0146953\n\tSIOCBRDGGPARAM                    = 0xc03c6958\n\tSIOCBRDGGPRI                      = 0xc0146950\n\tSIOCBRDGGRL                       = 0xc028694f\n\tSIOCBRDGGTO                       = 0xc0146946\n\tSIOCBRDGIFS                       = 0xc05c6942\n\tSIOCBRDGRTS                       = 0xc0186943\n\tSIOCBRDGSADDR                     = 0xc1286944\n\tSIOCBRDGSCACHE                    = 0x80146940\n\tSIOCBRDGSFD                       = 0x80146952\n\tSIOCBRDGSHT                       = 0x80146951\n\tSIOCBRDGSIFCOST                   = 0x805c6955\n\tSIOCBRDGSIFFLGS                   = 0x805c693f\n\tSIOCBRDGSIFPRIO                   = 0x805c6954\n\tSIOCBRDGSIFPROT                   = 0x805c694a\n\tSIOCBRDGSMA                       = 0x80146953\n\tSIOCBRDGSPRI                      = 0x80146950\n\tSIOCBRDGSPROTO                    = 0x8014695a\n\tSIOCBRDGSTO                       = 0x80146945\n\tSIOCBRDGSTXHC                     = 0x80146959\n\tSIOCDELLABEL                      = 0x80206997\n\tSIOCDELMULTI                      = 0x80206932\n\tSIOCDIFADDR                       = 0x80206919\n\tSIOCDIFGROUP                      = 0x80246989\n\tSIOCDIFPARENT                     = 0x802069b4\n\tSIOCDIFPHYADDR                    = 0x80206949\n\tSIOCDPWE3NEIGHBOR                 = 0x802069de\n\tSIOCDVNETID                       = 0x802069af\n\tSIOCGETKALIVE                     = 0xc01869a4\n\tSIOCGETLABEL                      = 0x8020699a\n\tSIOCGETMPWCFG                     = 0xc02069ae\n\tSIOCGETPFLOW                      = 0xc02069fe\n\tSIOCGETPFSYNC                     = 0xc02069f8\n\tSIOCGETSGCNT                      = 0xc0147534\n\tSIOCGETVIFCNT                     = 0xc0147533\n\tSIOCGETVLAN                       = 0xc0206990\n\tSIOCGIFADDR                       = 0xc0206921\n\tSIOCGIFBRDADDR                    = 0xc0206923\n\tSIOCGIFCONF                       = 0xc0086924\n\tSIOCGIFDATA                       = 0xc020691b\n\tSIOCGIFDESCR                      = 0xc0206981\n\tSIOCGIFDSTADDR                    = 0xc0206922\n\tSIOCGIFFLAGS                      = 0xc0206911\n\tSIOCGIFGATTR                      = 0xc024698b\n\tSIOCGIFGENERIC                    = 0xc020693a\n\tSIOCGIFGLIST                      = 0xc024698d\n\tSIOCGIFGMEMB                      = 0xc024698a\n\tSIOCGIFGROUP                      = 0xc0246988\n\tSIOCGIFHARDMTU                    = 0xc02069a5\n\tSIOCGIFLLPRIO                     = 0xc02069b6\n\tSIOCGIFMEDIA                      = 0xc0386938\n\tSIOCGIFMETRIC                     = 0xc0206917\n\tSIOCGIFMTU                        = 0xc020697e\n\tSIOCGIFNETMASK                    = 0xc0206925\n\tSIOCGIFPAIR                       = 0xc02069b1\n\tSIOCGIFPARENT                     = 0xc02069b3\n\tSIOCGIFPRIORITY                   = 0xc020699c\n\tSIOCGIFRDOMAIN                    = 0xc02069a0\n\tSIOCGIFRTLABEL                    = 0xc0206983\n\tSIOCGIFRXR                        = 0x802069aa\n\tSIOCGIFSFFPAGE                    = 0xc1126939\n\tSIOCGIFXFLAGS                     = 0xc020699e\n\tSIOCGLIFPHYADDR                   = 0xc218694b\n\tSIOCGLIFPHYDF                     = 0xc02069c2\n\tSIOCGLIFPHYECN                    = 0xc02069c8\n\tSIOCGLIFPHYRTABLE                 = 0xc02069a2\n\tSIOCGLIFPHYTTL                    = 0xc02069a9\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGPWE3                         = 0xc0206998\n\tSIOCGPWE3CTRLWORD                 = 0xc02069dc\n\tSIOCGPWE3FAT                      = 0xc02069dd\n\tSIOCGPWE3NEIGHBOR                 = 0xc21869de\n\tSIOCGRXHPRIO                      = 0xc02069db\n\tSIOCGSPPPPARAMS                   = 0xc0206994\n\tSIOCGTXHPRIO                      = 0xc02069c6\n\tSIOCGUMBINFO                      = 0xc02069be\n\tSIOCGUMBPARAM                     = 0xc02069c0\n\tSIOCGVH                           = 0xc02069f6\n\tSIOCGVNETFLOWID                   = 0xc02069c4\n\tSIOCGVNETID                       = 0xc02069a7\n\tSIOCIFAFATTACH                    = 0x801169ab\n\tSIOCIFAFDETACH                    = 0x801169ac\n\tSIOCIFCREATE                      = 0x8020697a\n\tSIOCIFDESTROY                     = 0x80206979\n\tSIOCIFGCLONERS                    = 0xc00c6978\n\tSIOCSETKALIVE                     = 0x801869a3\n\tSIOCSETLABEL                      = 0x80206999\n\tSIOCSETMPWCFG                     = 0x802069ad\n\tSIOCSETPFLOW                      = 0x802069fd\n\tSIOCSETPFSYNC                     = 0x802069f7\n\tSIOCSETVLAN                       = 0x8020698f\n\tSIOCSIFADDR                       = 0x8020690c\n\tSIOCSIFBRDADDR                    = 0x80206913\n\tSIOCSIFDESCR                      = 0x80206980\n\tSIOCSIFDSTADDR                    = 0x8020690e\n\tSIOCSIFFLAGS                      = 0x80206910\n\tSIOCSIFGATTR                      = 0x8024698c\n\tSIOCSIFGENERIC                    = 0x80206939\n\tSIOCSIFLLADDR                     = 0x8020691f\n\tSIOCSIFLLPRIO                     = 0x802069b5\n\tSIOCSIFMEDIA                      = 0xc0206937\n\tSIOCSIFMETRIC                     = 0x80206918\n\tSIOCSIFMTU                        = 0x8020697f\n\tSIOCSIFNETMASK                    = 0x80206916\n\tSIOCSIFPAIR                       = 0x802069b0\n\tSIOCSIFPARENT                     = 0x802069b2\n\tSIOCSIFPRIORITY                   = 0x8020699b\n\tSIOCSIFRDOMAIN                    = 0x8020699f\n\tSIOCSIFRTLABEL                    = 0x80206982\n\tSIOCSIFXFLAGS                     = 0x8020699d\n\tSIOCSLIFPHYADDR                   = 0x8218694a\n\tSIOCSLIFPHYDF                     = 0x802069c1\n\tSIOCSLIFPHYECN                    = 0x802069c7\n\tSIOCSLIFPHYRTABLE                 = 0x802069a1\n\tSIOCSLIFPHYTTL                    = 0x802069a8\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSPWE3CTRLWORD                 = 0x802069dc\n\tSIOCSPWE3FAT                      = 0x802069dd\n\tSIOCSPWE3NEIGHBOR                 = 0x821869de\n\tSIOCSRXHPRIO                      = 0x802069db\n\tSIOCSSPPPPARAMS                   = 0x80206993\n\tSIOCSTXHPRIO                      = 0x802069c5\n\tSIOCSUMBPARAM                     = 0x802069bf\n\tSIOCSVH                           = 0xc02069f5\n\tSIOCSVNETFLOWID                   = 0x802069c3\n\tSIOCSVNETID                       = 0x802069a6\n\tSOCK_CLOEXEC                      = 0x8000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_DNS                          = 0x1000\n\tSOCK_NONBLOCK                     = 0x4000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_BINDANY                        = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DOMAIN                         = 0x1024\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NETPROC                        = 0x1020\n\tSO_OOBINLINE                      = 0x100\n\tSO_PEERCRED                       = 0x1022\n\tSO_PROTOCOL                       = 0x1025\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x1006\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_RTABLE                         = 0x1021\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x1005\n\tSO_SPLICE                         = 0x1023\n\tSO_TIMESTAMP                      = 0x800\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tSO_ZEROIZE                        = 0x2000\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tTCIFLUSH                          = 0x1\n\tTCIOFF                            = 0x3\n\tTCIOFLUSH                         = 0x3\n\tTCION                             = 0x4\n\tTCOFLUSH                          = 0x2\n\tTCOOFF                            = 0x1\n\tTCOON                             = 0x2\n\tTCPOPT_EOL                        = 0x0\n\tTCPOPT_MAXSEG                     = 0x2\n\tTCPOPT_NOP                        = 0x1\n\tTCPOPT_SACK                       = 0x5\n\tTCPOPT_SACK_HDR                   = 0x1010500\n\tTCPOPT_SACK_PERMITTED             = 0x4\n\tTCPOPT_SACK_PERMIT_HDR            = 0x1010402\n\tTCPOPT_SIGNATURE                  = 0x13\n\tTCPOPT_TIMESTAMP                  = 0x8\n\tTCPOPT_TSTAMP_HDR                 = 0x101080a\n\tTCPOPT_WINDOW                     = 0x3\n\tTCP_INFO                          = 0x9\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_SACK                      = 0x3\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MD5SIG                        = 0x4\n\tTCP_MSS                           = 0x200\n\tTCP_NODELAY                       = 0x1\n\tTCP_NOPUSH                        = 0x10\n\tTCP_SACKHOLE_LIMIT                = 0x80\n\tTCP_SACK_ENABLE                   = 0x8\n\tTCSAFLUSH                         = 0x2\n\tTIMER_ABSTIME                     = 0x1\n\tTIMER_RELTIME                     = 0x0\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCHKVERAUTH                    = 0x2000741e\n\tTIOCCLRVERAUTH                    = 0x2000741d\n\tTIOCCONS                          = 0x80047462\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLAG_CLOCAL                   = 0x2\n\tTIOCFLAG_CRTSCTS                  = 0x4\n\tTIOCFLAG_MDMBUF                   = 0x8\n\tTIOCFLAG_PPS                      = 0x10\n\tTIOCFLAG_SOFTCAR                  = 0x1\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGFLAGS                        = 0x4004745d\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGSID                          = 0x40047463\n\tTIOCGTSTAMP                       = 0x400c745b\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMODG                          = 0x4004746a\n\tTIOCMODS                          = 0x8004746d\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSETVERAUTH                    = 0x8004741c\n\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x8004745f\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x20007465\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSTSTAMP                       = 0x8008745a\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\n\tTIOCUCNTL_CBRK                    = 0x7a\n\tTIOCUCNTL_SBRK                    = 0x7b\n\tTOSTOP                            = 0x400000\n\tUTIME_NOW                         = -0x2\n\tUTIME_OMIT                        = -0x1\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVM_ANONMIN                        = 0x7\n\tVM_LOADAVG                        = 0x2\n\tVM_MALLOC_CONF                    = 0xc\n\tVM_MAXID                          = 0xd\n\tVM_MAXSLP                         = 0xa\n\tVM_METER                          = 0x1\n\tVM_NKMEMPAGES                     = 0x6\n\tVM_PSSTRINGS                      = 0x3\n\tVM_SWAPENCRYPT                    = 0x5\n\tVM_USPACE                         = 0xb\n\tVM_UVMEXP                         = 0x4\n\tVM_VNODEMIN                       = 0x9\n\tVM_VTEXTMIN                       = 0x8\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWALTSIG                           = 0x4\n\tWCONTINUED                        = 0x8\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\n\tWUNTRACED                         = 0x2\n\tXCASE                             = 0x1000000\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x5c)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x58)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x59)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEIPSEC          = syscall.Errno(0x52)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x5f)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMEDIUMTYPE     = syscall.Errno(0x56)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x53)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOMEDIUM       = syscall.Errno(0x55)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x5a)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5d)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x5b)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x57)\n\tEOWNERDEAD      = syscall.Errno(0x5e)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5f)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disk quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC program not available\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIPSEC\", \"IPsec processing failure\"},\n\t{83, \"ENOATTR\", \"attribute not found\"},\n\t{84, \"EILSEQ\", \"illegal byte sequence\"},\n\t{85, \"ENOMEDIUM\", \"no medium found\"},\n\t{86, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{87, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{88, \"ECANCELED\", \"operation canceled\"},\n\t{89, \"EIDRM\", \"identifier removed\"},\n\t{90, \"ENOMSG\", \"no message of desired type\"},\n\t{91, \"ENOTSUP\", \"not supported\"},\n\t{92, \"EBADMSG\", \"bad message\"},\n\t{93, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{94, \"EOWNERDEAD\", \"previous owner died\"},\n\t{95, \"ELAST\", \"protocol error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"thread AST\"},\n\t{28672, \"SIGSTKSZ\", \"unknown signal\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && openbsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_BLUETOOTH                      = 0x20\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_ENCAP                          = 0x1c\n\tAF_HYLINK                         = 0xf\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x18\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_KEY                            = 0x1e\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x24\n\tAF_MPLS                           = 0x21\n\tAF_NATM                           = 0x1b\n\tAF_NS                             = 0x6\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x11\n\tAF_SIP                            = 0x1d\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tALTWERASE                         = 0x200\n\tARPHRD_ETHER                      = 0x1\n\tARPHRD_FRELAY                     = 0xf\n\tARPHRD_IEEE1394                   = 0x18\n\tARPHRD_IEEE802                    = 0x6\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB9600                             = 0x2580\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDIRFILT                      = 0x4004427c\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc010427b\n\tBIOCGETIF                         = 0x4020426b\n\tBIOCGFILDROP                      = 0x40044278\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRSIG                         = 0x40044273\n\tBIOCGRTIMEOUT                     = 0x4010426e\n\tBIOCGSTATS                        = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCLOCK                          = 0x20004276\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDIRFILT                      = 0x8004427d\n\tBIOCSDLT                          = 0x8004427a\n\tBIOCSETF                          = 0x80104267\n\tBIOCSETIF                         = 0x8020426c\n\tBIOCSETWF                         = 0x80104277\n\tBIOCSFILDROP                      = 0x80044279\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRSIG                         = 0x80044272\n\tBIOCSRTIMEOUT                     = 0x8010426d\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DIRECTION_IN                  = 0x1\n\tBPF_DIRECTION_OUT                 = 0x2\n\tBPF_DIV                           = 0x30\n\tBPF_FILDROP_CAPTURE               = 0x1\n\tBPF_FILDROP_DROP                  = 0x2\n\tBPF_FILDROP_PASS                  = 0x0\n\tBPF_F_DIR_IN                      = 0x10\n\tBPF_F_DIR_MASK                    = 0x30\n\tBPF_F_DIR_OUT                     = 0x20\n\tBPF_F_DIR_SHIFT                   = 0x4\n\tBPF_F_FLOWID                      = 0x8\n\tBPF_F_PRI_MASK                    = 0x7\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x200000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RND                           = 0xc0\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLOCK_BOOTTIME                    = 0x6\n\tCLOCK_MONOTONIC                   = 0x3\n\tCLOCK_PROCESS_CPUTIME_ID          = 0x2\n\tCLOCK_REALTIME                    = 0x0\n\tCLOCK_THREAD_CPUTIME_ID           = 0x4\n\tCLOCK_UPTIME                      = 0x5\n\tCPUSTATES                         = 0x6\n\tCP_IDLE                           = 0x5\n\tCP_INTR                           = 0x4\n\tCP_NICE                           = 0x1\n\tCP_SPIN                           = 0x3\n\tCP_SYS                            = 0x2\n\tCP_USER                           = 0x0\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x10000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0xff\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tDIOCADDQUEUE                      = 0xc110445d\n\tDIOCADDRULE                       = 0xcd604404\n\tDIOCADDSTATE                      = 0xc1084425\n\tDIOCCHANGERULE                    = 0xcd60441a\n\tDIOCCLRIFFLAG                     = 0xc028445a\n\tDIOCCLRSRCNODES                   = 0x20004455\n\tDIOCCLRSTATES                     = 0xc0e04412\n\tDIOCCLRSTATUS                     = 0xc0284416\n\tDIOCGETLIMIT                      = 0xc0084427\n\tDIOCGETQSTATS                     = 0xc1204460\n\tDIOCGETQUEUE                      = 0xc110445f\n\tDIOCGETQUEUES                     = 0xc110445e\n\tDIOCGETRULE                       = 0xcd604407\n\tDIOCGETRULES                      = 0xcd604406\n\tDIOCGETRULESET                    = 0xc444443b\n\tDIOCGETRULESETS                   = 0xc444443a\n\tDIOCGETSRCNODES                   = 0xc0104454\n\tDIOCGETSTATE                      = 0xc1084413\n\tDIOCGETSTATES                     = 0xc0104419\n\tDIOCGETSTATUS                     = 0xc1e84415\n\tDIOCGETSYNFLWATS                  = 0xc0084463\n\tDIOCGETTIMEOUT                    = 0xc008441e\n\tDIOCIGETIFACES                    = 0xc0284457\n\tDIOCKILLSRCNODES                  = 0xc080445b\n\tDIOCKILLSTATES                    = 0xc0e04429\n\tDIOCNATLOOK                       = 0xc0504417\n\tDIOCOSFPADD                       = 0xc088444f\n\tDIOCOSFPFLUSH                     = 0x2000444e\n\tDIOCOSFPGET                       = 0xc0884450\n\tDIOCRADDADDRS                     = 0xc4504443\n\tDIOCRADDTABLES                    = 0xc450443d\n\tDIOCRCLRADDRS                     = 0xc4504442\n\tDIOCRCLRASTATS                    = 0xc4504448\n\tDIOCRCLRTABLES                    = 0xc450443c\n\tDIOCRCLRTSTATS                    = 0xc4504441\n\tDIOCRDELADDRS                     = 0xc4504444\n\tDIOCRDELTABLES                    = 0xc450443e\n\tDIOCRGETADDRS                     = 0xc4504446\n\tDIOCRGETASTATS                    = 0xc4504447\n\tDIOCRGETTABLES                    = 0xc450443f\n\tDIOCRGETTSTATS                    = 0xc4504440\n\tDIOCRINADEFINE                    = 0xc450444d\n\tDIOCRSETADDRS                     = 0xc4504445\n\tDIOCRSETTFLAGS                    = 0xc450444a\n\tDIOCRTSTADDRS                     = 0xc4504449\n\tDIOCSETDEBUG                      = 0xc0044418\n\tDIOCSETHOSTID                     = 0xc0044456\n\tDIOCSETIFFLAG                     = 0xc0284459\n\tDIOCSETLIMIT                      = 0xc0084428\n\tDIOCSETREASS                      = 0xc004445c\n\tDIOCSETSTATUSIF                   = 0xc0284414\n\tDIOCSETSYNCOOKIES                 = 0xc0014462\n\tDIOCSETSYNFLWATS                  = 0xc0084461\n\tDIOCSETTIMEOUT                    = 0xc008441d\n\tDIOCSTART                         = 0x20004401\n\tDIOCSTOP                          = 0x20004402\n\tDIOCXBEGIN                        = 0xc0104451\n\tDIOCXCOMMIT                       = 0xc0104452\n\tDIOCXROLLBACK                     = 0xc0104453\n\tDLT_ARCNET                        = 0x7\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AX25                          = 0x3\n\tDLT_CHAOS                         = 0x5\n\tDLT_C_HDLC                        = 0x68\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0xd\n\tDLT_FDDI                          = 0xa\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_LOOP                          = 0xc\n\tDLT_MPLS                          = 0xdb\n\tDLT_NULL                          = 0x0\n\tDLT_OPENFLOW                      = 0x10b\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0x10\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PRONET                        = 0x4\n\tDLT_RAW                           = 0xe\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xf\n\tDLT_USBPCAP                       = 0xf9\n\tDLT_USER0                         = 0x93\n\tDLT_USER1                         = 0x94\n\tDLT_USER10                        = 0x9d\n\tDLT_USER11                        = 0x9e\n\tDLT_USER12                        = 0x9f\n\tDLT_USER13                        = 0xa0\n\tDLT_USER14                        = 0xa1\n\tDLT_USER15                        = 0xa2\n\tDLT_USER2                         = 0x95\n\tDLT_USER3                         = 0x96\n\tDLT_USER4                         = 0x97\n\tDLT_USER5                         = 0x98\n\tDLT_USER6                         = 0x99\n\tDLT_USER7                         = 0x9a\n\tDLT_USER8                         = 0x9b\n\tDLT_USER9                         = 0x9c\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEMT_TAGOVF                        = 0x1\n\tEMUL_ENABLED                      = 0x1\n\tEMUL_NATIVE                       = 0x2\n\tENDRUNDISC                        = 0x9\n\tETH64_8021_RSVD_MASK              = 0xfffffffffff0\n\tETH64_8021_RSVD_PREFIX            = 0x180c2000000\n\tETHERMIN                          = 0x2e\n\tETHERMTU                          = 0x5dc\n\tETHERTYPE_8023                    = 0x4\n\tETHERTYPE_AARP                    = 0x80f3\n\tETHERTYPE_ACCTON                  = 0x8390\n\tETHERTYPE_AEONIC                  = 0x8036\n\tETHERTYPE_ALPHA                   = 0x814a\n\tETHERTYPE_AMBER                   = 0x6008\n\tETHERTYPE_AMOEBA                  = 0x8145\n\tETHERTYPE_AOE                     = 0x88a2\n\tETHERTYPE_APOLLO                  = 0x80f7\n\tETHERTYPE_APOLLODOMAIN            = 0x8019\n\tETHERTYPE_APPLETALK               = 0x809b\n\tETHERTYPE_APPLITEK                = 0x80c7\n\tETHERTYPE_ARGONAUT                = 0x803a\n\tETHERTYPE_ARP                     = 0x806\n\tETHERTYPE_AT                      = 0x809b\n\tETHERTYPE_ATALK                   = 0x809b\n\tETHERTYPE_ATOMIC                  = 0x86df\n\tETHERTYPE_ATT                     = 0x8069\n\tETHERTYPE_ATTSTANFORD             = 0x8008\n\tETHERTYPE_AUTOPHON                = 0x806a\n\tETHERTYPE_AXIS                    = 0x8856\n\tETHERTYPE_BCLOOP                  = 0x9003\n\tETHERTYPE_BOFL                    = 0x8102\n\tETHERTYPE_CABLETRON               = 0x7034\n\tETHERTYPE_CHAOS                   = 0x804\n\tETHERTYPE_COMDESIGN               = 0x806c\n\tETHERTYPE_COMPUGRAPHIC            = 0x806d\n\tETHERTYPE_COUNTERPOINT            = 0x8062\n\tETHERTYPE_CRONUS                  = 0x8004\n\tETHERTYPE_CRONUSVLN               = 0x8003\n\tETHERTYPE_DCA                     = 0x1234\n\tETHERTYPE_DDE                     = 0x807b\n\tETHERTYPE_DEBNI                   = 0xaaaa\n\tETHERTYPE_DECAM                   = 0x8048\n\tETHERTYPE_DECCUST                 = 0x6006\n\tETHERTYPE_DECDIAG                 = 0x6005\n\tETHERTYPE_DECDNS                  = 0x803c\n\tETHERTYPE_DECDTS                  = 0x803e\n\tETHERTYPE_DECEXPER                = 0x6000\n\tETHERTYPE_DECLAST                 = 0x8041\n\tETHERTYPE_DECLTM                  = 0x803f\n\tETHERTYPE_DECMUMPS                = 0x6009\n\tETHERTYPE_DECNETBIOS              = 0x8040\n\tETHERTYPE_DELTACON                = 0x86de\n\tETHERTYPE_DIDDLE                  = 0x4321\n\tETHERTYPE_DLOG1                   = 0x660\n\tETHERTYPE_DLOG2                   = 0x661\n\tETHERTYPE_DN                      = 0x6003\n\tETHERTYPE_DOGFIGHT                = 0x1989\n\tETHERTYPE_DSMD                    = 0x8039\n\tETHERTYPE_EAPOL                   = 0x888e\n\tETHERTYPE_ECMA                    = 0x803\n\tETHERTYPE_ENCRYPT                 = 0x803d\n\tETHERTYPE_ES                      = 0x805d\n\tETHERTYPE_EXCELAN                 = 0x8010\n\tETHERTYPE_EXPERDATA               = 0x8049\n\tETHERTYPE_FLIP                    = 0x8146\n\tETHERTYPE_FLOWCONTROL             = 0x8808\n\tETHERTYPE_FRARP                   = 0x808\n\tETHERTYPE_GENDYN                  = 0x8068\n\tETHERTYPE_HAYES                   = 0x8130\n\tETHERTYPE_HIPPI_FP                = 0x8180\n\tETHERTYPE_HITACHI                 = 0x8820\n\tETHERTYPE_HP                      = 0x8005\n\tETHERTYPE_IEEEPUP                 = 0xa00\n\tETHERTYPE_IEEEPUPAT               = 0xa01\n\tETHERTYPE_IMLBL                   = 0x4c42\n\tETHERTYPE_IMLBLDIAG               = 0x424c\n\tETHERTYPE_IP                      = 0x800\n\tETHERTYPE_IPAS                    = 0x876c\n\tETHERTYPE_IPV6                    = 0x86dd\n\tETHERTYPE_IPX                     = 0x8137\n\tETHERTYPE_IPXNEW                  = 0x8037\n\tETHERTYPE_KALPANA                 = 0x8582\n\tETHERTYPE_LANBRIDGE               = 0x8038\n\tETHERTYPE_LANPROBE                = 0x8888\n\tETHERTYPE_LAT                     = 0x6004\n\tETHERTYPE_LBACK                   = 0x9000\n\tETHERTYPE_LITTLE                  = 0x8060\n\tETHERTYPE_LLDP                    = 0x88cc\n\tETHERTYPE_LOGICRAFT               = 0x8148\n\tETHERTYPE_LOOPBACK                = 0x9000\n\tETHERTYPE_MACSEC                  = 0x88e5\n\tETHERTYPE_MATRA                   = 0x807a\n\tETHERTYPE_MAX                     = 0xffff\n\tETHERTYPE_MERIT                   = 0x807c\n\tETHERTYPE_MICP                    = 0x873a\n\tETHERTYPE_MOPDL                   = 0x6001\n\tETHERTYPE_MOPRC                   = 0x6002\n\tETHERTYPE_MOTOROLA                = 0x818d\n\tETHERTYPE_MPLS                    = 0x8847\n\tETHERTYPE_MPLS_MCAST              = 0x8848\n\tETHERTYPE_MUMPS                   = 0x813f\n\tETHERTYPE_NBPCC                   = 0x3c04\n\tETHERTYPE_NBPCLAIM                = 0x3c09\n\tETHERTYPE_NBPCLREQ                = 0x3c05\n\tETHERTYPE_NBPCLRSP                = 0x3c06\n\tETHERTYPE_NBPCREQ                 = 0x3c02\n\tETHERTYPE_NBPCRSP                 = 0x3c03\n\tETHERTYPE_NBPDG                   = 0x3c07\n\tETHERTYPE_NBPDGB                  = 0x3c08\n\tETHERTYPE_NBPDLTE                 = 0x3c0a\n\tETHERTYPE_NBPRAR                  = 0x3c0c\n\tETHERTYPE_NBPRAS                  = 0x3c0b\n\tETHERTYPE_NBPRST                  = 0x3c0d\n\tETHERTYPE_NBPSCD                  = 0x3c01\n\tETHERTYPE_NBPVCD                  = 0x3c00\n\tETHERTYPE_NBS                     = 0x802\n\tETHERTYPE_NCD                     = 0x8149\n\tETHERTYPE_NESTAR                  = 0x8006\n\tETHERTYPE_NETBEUI                 = 0x8191\n\tETHERTYPE_NHRP                    = 0x2001\n\tETHERTYPE_NOVELL                  = 0x8138\n\tETHERTYPE_NS                      = 0x600\n\tETHERTYPE_NSAT                    = 0x601\n\tETHERTYPE_NSCOMPAT                = 0x807\n\tETHERTYPE_NSH                     = 0x984f\n\tETHERTYPE_NTRAILER                = 0x10\n\tETHERTYPE_OS9                     = 0x7007\n\tETHERTYPE_OS9NET                  = 0x7009\n\tETHERTYPE_PACER                   = 0x80c6\n\tETHERTYPE_PBB                     = 0x88e7\n\tETHERTYPE_PCS                     = 0x4242\n\tETHERTYPE_PLANNING                = 0x8044\n\tETHERTYPE_PPP                     = 0x880b\n\tETHERTYPE_PPPOE                   = 0x8864\n\tETHERTYPE_PPPOEDISC               = 0x8863\n\tETHERTYPE_PRIMENTS                = 0x7031\n\tETHERTYPE_PUP                     = 0x200\n\tETHERTYPE_PUPAT                   = 0x200\n\tETHERTYPE_QINQ                    = 0x88a8\n\tETHERTYPE_RACAL                   = 0x7030\n\tETHERTYPE_RATIONAL                = 0x8150\n\tETHERTYPE_RAWFR                   = 0x6559\n\tETHERTYPE_RCL                     = 0x1995\n\tETHERTYPE_RDP                     = 0x8739\n\tETHERTYPE_RETIX                   = 0x80f2\n\tETHERTYPE_REVARP                  = 0x8035\n\tETHERTYPE_SCA                     = 0x6007\n\tETHERTYPE_SECTRA                  = 0x86db\n\tETHERTYPE_SECUREDATA              = 0x876d\n\tETHERTYPE_SGITW                   = 0x817e\n\tETHERTYPE_SG_BOUNCE               = 0x8016\n\tETHERTYPE_SG_DIAG                 = 0x8013\n\tETHERTYPE_SG_NETGAMES             = 0x8014\n\tETHERTYPE_SG_RESV                 = 0x8015\n\tETHERTYPE_SIMNET                  = 0x5208\n\tETHERTYPE_SLOW                    = 0x8809\n\tETHERTYPE_SNA                     = 0x80d5\n\tETHERTYPE_SNMP                    = 0x814c\n\tETHERTYPE_SONIX                   = 0xfaf5\n\tETHERTYPE_SPIDER                  = 0x809f\n\tETHERTYPE_SPRITE                  = 0x500\n\tETHERTYPE_STP                     = 0x8181\n\tETHERTYPE_TALARIS                 = 0x812b\n\tETHERTYPE_TALARISMC               = 0x852b\n\tETHERTYPE_TCPCOMP                 = 0x876b\n\tETHERTYPE_TCPSM                   = 0x9002\n\tETHERTYPE_TEC                     = 0x814f\n\tETHERTYPE_TIGAN                   = 0x802f\n\tETHERTYPE_TRAIL                   = 0x1000\n\tETHERTYPE_TRANSETHER              = 0x6558\n\tETHERTYPE_TYMSHARE                = 0x802e\n\tETHERTYPE_UBBST                   = 0x7005\n\tETHERTYPE_UBDEBUG                 = 0x900\n\tETHERTYPE_UBDIAGLOOP              = 0x7002\n\tETHERTYPE_UBDL                    = 0x7000\n\tETHERTYPE_UBNIU                   = 0x7001\n\tETHERTYPE_UBNMC                   = 0x7003\n\tETHERTYPE_VALID                   = 0x1600\n\tETHERTYPE_VARIAN                  = 0x80dd\n\tETHERTYPE_VAXELN                  = 0x803b\n\tETHERTYPE_VEECO                   = 0x8067\n\tETHERTYPE_VEXP                    = 0x805b\n\tETHERTYPE_VGLAB                   = 0x8131\n\tETHERTYPE_VINES                   = 0xbad\n\tETHERTYPE_VINESECHO               = 0xbaf\n\tETHERTYPE_VINESLOOP               = 0xbae\n\tETHERTYPE_VITAL                   = 0xff00\n\tETHERTYPE_VLAN                    = 0x8100\n\tETHERTYPE_VLTLMAN                 = 0x8080\n\tETHERTYPE_VPROD                   = 0x805c\n\tETHERTYPE_VURESERVED              = 0x8147\n\tETHERTYPE_WATERLOO                = 0x8130\n\tETHERTYPE_WELLFLEET               = 0x8103\n\tETHERTYPE_X25                     = 0x805\n\tETHERTYPE_X75                     = 0x801\n\tETHERTYPE_XNSSM                   = 0x9001\n\tETHERTYPE_XTP                     = 0x817d\n\tETHER_ADDR_LEN                    = 0x6\n\tETHER_ALIGN                       = 0x2\n\tETHER_CRC_LEN                     = 0x4\n\tETHER_CRC_POLY_BE                 = 0x4c11db6\n\tETHER_CRC_POLY_LE                 = 0xedb88320\n\tETHER_HDR_LEN                     = 0xe\n\tETHER_MAX_DIX_LEN                 = 0x600\n\tETHER_MAX_HARDMTU_LEN             = 0xff9b\n\tETHER_MAX_LEN                     = 0x5ee\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = -0x3\n\tEVFILT_DEVICE                     = -0x8\n\tEVFILT_EXCEPT                     = -0x9\n\tEVFILT_PROC                       = -0x5\n\tEVFILT_READ                       = -0x1\n\tEVFILT_SIGNAL                     = -0x6\n\tEVFILT_SYSCOUNT                   = 0x9\n\tEVFILT_TIMER                      = -0x7\n\tEVFILT_VNODE                      = -0x4\n\tEVFILT_WRITE                      = -0x2\n\tEVL_ENCAPLEN                      = 0x4\n\tEVL_PRIO_BITS                     = 0xd\n\tEVL_PRIO_MAX                      = 0x7\n\tEVL_VLID_MASK                     = 0xfff\n\tEVL_VLID_MAX                      = 0xffe\n\tEVL_VLID_MIN                      = 0x1\n\tEVL_VLID_NULL                     = 0x0\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_DISPATCH                       = 0x80\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_RECEIPT                        = 0x40\n\tEV_SYSFLAGS                       = 0xf800\n\tEXTA                              = 0x4b00\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x400\n\tFLUSHO                            = 0x800000\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0xa\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETOWN                          = 0x5\n\tF_ISATTY                          = 0xb\n\tF_OK                              = 0x0\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x8e52\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_STATICARP                     = 0x20\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BLUETOOTH                     = 0xf8\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf7\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DUMMY                         = 0xf1\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ECONET                        = 0xce\n\tIFT_ENC                           = 0xf4\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf3\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INFINIBAND                    = 0xc7\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LINEGROUP                     = 0xd2\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MBIM                          = 0xfa\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFLOW                         = 0xf9\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_PON155                        = 0xcf\n\tIFT_PON622                        = 0xd0\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPATM                       = 0xc5\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf2\n\tIFT_Q2931                         = 0xc9\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SIPSIG                        = 0xcc\n\tIFT_SIPTG                         = 0xcb\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TELINK                        = 0xc8\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VIRTUALTG                     = 0xca\n\tIFT_VOICEDID                      = 0xd5\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEEMFGD                    = 0xd3\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFGDEANA                  = 0xd4\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERCABLE                = 0xc6\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_WIREGUARD                     = 0xfb\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIN_RFC3021_HOST                   = 0x1\n\tIN_RFC3021_NET                    = 0xfffffffe\n\tIN_RFC3021_NSHIFT                 = 0x1f\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_DIVERT                    = 0x102\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x103\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_MPLS                      = 0x89\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_SCTP                      = 0x84\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_UDPLITE                   = 0x88\n\tIPV6_AUTH_LEVEL                   = 0x35\n\tIPV6_AUTOFLOWLABEL                = 0x3b\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_ESP_NETWORK_LEVEL            = 0x37\n\tIPV6_ESP_TRANS_LEVEL              = 0x36\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPCOMP_LEVEL                 = 0x3c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MINHOPCOUNT                  = 0x41\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_OPTIONS                      = 0x1\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PIPEX                        = 0x3f\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVDSTPORT                  = 0x40\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTABLE                       = 0x1021\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_AUTH_LEVEL                     = 0x14\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_ESP_NETWORK_LEVEL              = 0x16\n\tIP_ESP_TRANS_LEVEL                = 0x15\n\tIP_HDRINCL                        = 0x2\n\tIP_IPCOMP_LEVEL                   = 0x1d\n\tIP_IPDEFTTL                       = 0x25\n\tIP_IPSECFLOWINFO                  = 0x24\n\tIP_IPSEC_LOCAL_AUTH               = 0x1b\n\tIP_IPSEC_LOCAL_CRED               = 0x19\n\tIP_IPSEC_LOCAL_ID                 = 0x17\n\tIP_IPSEC_REMOTE_AUTH              = 0x1c\n\tIP_IPSEC_REMOTE_CRED              = 0x1a\n\tIP_IPSEC_REMOTE_ID                = 0x18\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0xfff\n\tIP_MF                             = 0x2000\n\tIP_MINTTL                         = 0x20\n\tIP_MIN_MEMBERSHIPS                = 0xf\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PIPEX                          = 0x22\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVDSTPORT                    = 0x21\n\tIP_RECVIF                         = 0x1e\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVRTABLE                     = 0x23\n\tIP_RECVTTL                        = 0x1f\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_RTABLE                         = 0x1021\n\tIP_SENDSRCADDR                    = 0x7\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tITIMER_PROF                       = 0x2\n\tITIMER_REAL                       = 0x0\n\tITIMER_VIRTUAL                    = 0x1\n\tIUCLC                             = 0x1000\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLCNT_OVERLOAD_FLUSH               = 0x6\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x6\n\tMADV_NORMAL                       = 0x0\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SPACEAVAIL                   = 0x5\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ANON                          = 0x1000\n\tMAP_ANONYMOUS                     = 0x1000\n\tMAP_CONCEAL                       = 0x8000\n\tMAP_COPY                          = 0x2\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_FLAGMASK                      = 0xfff7\n\tMAP_HASSEMAPHORE                  = 0x0\n\tMAP_INHERIT                       = 0x0\n\tMAP_INHERIT_COPY                  = 0x1\n\tMAP_INHERIT_NONE                  = 0x2\n\tMAP_INHERIT_SHARE                 = 0x0\n\tMAP_INHERIT_ZERO                  = 0x3\n\tMAP_NOEXTEND                      = 0x0\n\tMAP_NORESERVE                     = 0x0\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x0\n\tMAP_SHARED                        = 0x1\n\tMAP_STACK                         = 0x4000\n\tMAP_TRYFIXED                      = 0x0\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DELEXPORT                     = 0x20000\n\tMNT_DOOMED                        = 0x8000000\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_FORCE                         = 0x80000\n\tMNT_LAZY                          = 0x3\n\tMNT_LOCAL                         = 0x1000\n\tMNT_NOATIME                       = 0x8000\n\tMNT_NODEV                         = 0x10\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOPERM                        = 0x20\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOWAIT                        = 0x2\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x4000000\n\tMNT_STALLED                       = 0x100000\n\tMNT_SWAPPABLE                     = 0x200000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0x400ffff\n\tMNT_WAIT                          = 0x1\n\tMNT_WANTRDWR                      = 0x2000000\n\tMNT_WXALLOWED                     = 0x800\n\tMOUNT_AFS                         = \"afs\"\n\tMOUNT_CD9660                      = \"cd9660\"\n\tMOUNT_EXT2FS                      = \"ext2fs\"\n\tMOUNT_FFS                         = \"ffs\"\n\tMOUNT_FUSEFS                      = \"fuse\"\n\tMOUNT_MFS                         = \"mfs\"\n\tMOUNT_MSDOS                       = \"msdos\"\n\tMOUNT_NCPFS                       = \"ncpfs\"\n\tMOUNT_NFS                         = \"nfs\"\n\tMOUNT_NTFS                        = \"ntfs\"\n\tMOUNT_TMPFS                       = \"tmpfs\"\n\tMOUNT_UDF                         = \"udf\"\n\tMOUNT_UFS                         = \"ffs\"\n\tMSG_BCAST                         = 0x100\n\tMSG_CMSG_CLOEXEC                  = 0x800\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOR                           = 0x8\n\tMSG_MCAST                         = 0x200\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_TRUNC                         = 0x10\n\tMSG_WAITALL                       = 0x40\n\tMSG_WAITFORONE                    = 0x1000\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x4\n\tMS_SYNC                           = 0x2\n\tNAME_MAX                          = 0xff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x3\n\tNET_RT_IFNAMES                    = 0x6\n\tNET_RT_MAXID                      = 0x8\n\tNET_RT_SOURCE                     = 0x7\n\tNET_RT_STATS                      = 0x4\n\tNET_RT_TABLE                      = 0x5\n\tNFDBITS                           = 0x20\n\tNOFLSH                            = 0x80000000\n\tNOKERNINFO                        = 0x2000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHANGE                       = 0x1\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EOF                          = 0x2\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_OOB                          = 0x4\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_TRUNCATE                     = 0x80\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOLCUC                             = 0x20\n\tONLCR                             = 0x2\n\tONLRET                            = 0x80\n\tONOCR                             = 0x40\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tOXTABS                            = 0x4\n\tO_ACCMODE                         = 0x3\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x10000\n\tO_CREAT                           = 0x200\n\tO_DIRECTORY                       = 0x20000\n\tO_DSYNC                           = 0x80\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_RSYNC                           = 0x80\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPF_FLUSH                          = 0x1\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BFD                          = 0xb\n\tRTAX_BRD                          = 0x7\n\tRTAX_DNS                          = 0xc\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_LABEL                        = 0xa\n\tRTAX_MAX                          = 0xf\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_SEARCH                       = 0xe\n\tRTAX_SRC                          = 0x8\n\tRTAX_SRCMASK                      = 0x9\n\tRTAX_STATIC                       = 0xd\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BFD                           = 0x800\n\tRTA_BRD                           = 0x80\n\tRTA_DNS                           = 0x1000\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_LABEL                         = 0x400\n\tRTA_NETMASK                       = 0x4\n\tRTA_SEARCH                        = 0x4000\n\tRTA_SRC                           = 0x100\n\tRTA_SRCMASK                       = 0x200\n\tRTA_STATIC                        = 0x2000\n\tRTF_ANNOUNCE                      = 0x4000\n\tRTF_BFD                           = 0x1000000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_BROADCAST                     = 0x400000\n\tRTF_CACHED                        = 0x20000\n\tRTF_CLONED                        = 0x10000\n\tRTF_CLONING                       = 0x100\n\tRTF_CONNECTED                     = 0x800000\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_FMASK                         = 0x110fc08\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_LOCAL                         = 0x200000\n\tRTF_MODIFIED                      = 0x20\n\tRTF_MPATH                         = 0x40000\n\tRTF_MPLS                          = 0x100000\n\tRTF_MULTICAST                     = 0x200\n\tRTF_PERMANENT_ARP                 = 0x2000\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_PROTO3                        = 0x2000\n\tRTF_REJECT                        = 0x8\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_USETRAILERS                   = 0x8000\n\tRTM_80211INFO                     = 0x15\n\tRTM_ADD                           = 0x1\n\tRTM_BFD                           = 0x12\n\tRTM_CHANGE                        = 0x3\n\tRTM_CHGADDRATTR                   = 0x14\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_DESYNC                        = 0x10\n\tRTM_GET                           = 0x4\n\tRTM_IFANNOUNCE                    = 0xf\n\tRTM_IFINFO                        = 0xe\n\tRTM_INVALIDATE                    = 0x11\n\tRTM_LOSING                        = 0x5\n\tRTM_MAXSIZE                       = 0x800\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_PROPOSAL                      = 0x13\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_SOURCE                        = 0x16\n\tRTM_VERSION                       = 0x5\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRT_TABLEID_BITS                   = 0x8\n\tRT_TABLEID_MASK                   = 0xff\n\tRT_TABLEID_MAX                    = 0xff\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tRUSAGE_THREAD                     = 0x1\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x4\n\tSEEK_CUR                          = 0x1\n\tSEEK_END                          = 0x2\n\tSEEK_SET                          = 0x0\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80206931\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCAIFGROUP                      = 0x80286987\n\tSIOCATMARK                        = 0x40047307\n\tSIOCBRDGADD                       = 0x8060693c\n\tSIOCBRDGADDL                      = 0x80606949\n\tSIOCBRDGADDS                      = 0x80606941\n\tSIOCBRDGARL                       = 0x808c694d\n\tSIOCBRDGDADDR                     = 0x81286947\n\tSIOCBRDGDEL                       = 0x8060693d\n\tSIOCBRDGDELS                      = 0x80606942\n\tSIOCBRDGFLUSH                     = 0x80606948\n\tSIOCBRDGFRL                       = 0x808c694e\n\tSIOCBRDGGCACHE                    = 0xc0146941\n\tSIOCBRDGGFD                       = 0xc0146952\n\tSIOCBRDGGHT                       = 0xc0146951\n\tSIOCBRDGGIFFLGS                   = 0xc060693e\n\tSIOCBRDGGMA                       = 0xc0146953\n\tSIOCBRDGGPARAM                    = 0xc0406958\n\tSIOCBRDGGPRI                      = 0xc0146950\n\tSIOCBRDGGRL                       = 0xc030694f\n\tSIOCBRDGGTO                       = 0xc0146946\n\tSIOCBRDGIFS                       = 0xc0606942\n\tSIOCBRDGRTS                       = 0xc0206943\n\tSIOCBRDGSADDR                     = 0xc1286944\n\tSIOCBRDGSCACHE                    = 0x80146940\n\tSIOCBRDGSFD                       = 0x80146952\n\tSIOCBRDGSHT                       = 0x80146951\n\tSIOCBRDGSIFCOST                   = 0x80606955\n\tSIOCBRDGSIFFLGS                   = 0x8060693f\n\tSIOCBRDGSIFPRIO                   = 0x80606954\n\tSIOCBRDGSIFPROT                   = 0x8060694a\n\tSIOCBRDGSMA                       = 0x80146953\n\tSIOCBRDGSPRI                      = 0x80146950\n\tSIOCBRDGSPROTO                    = 0x8014695a\n\tSIOCBRDGSTO                       = 0x80146945\n\tSIOCBRDGSTXHC                     = 0x80146959\n\tSIOCDELLABEL                      = 0x80206997\n\tSIOCDELMULTI                      = 0x80206932\n\tSIOCDIFADDR                       = 0x80206919\n\tSIOCDIFGROUP                      = 0x80286989\n\tSIOCDIFPARENT                     = 0x802069b4\n\tSIOCDIFPHYADDR                    = 0x80206949\n\tSIOCDPWE3NEIGHBOR                 = 0x802069de\n\tSIOCDVNETID                       = 0x802069af\n\tSIOCGETKALIVE                     = 0xc01869a4\n\tSIOCGETLABEL                      = 0x8020699a\n\tSIOCGETMPWCFG                     = 0xc02069ae\n\tSIOCGETPFLOW                      = 0xc02069fe\n\tSIOCGETPFSYNC                     = 0xc02069f8\n\tSIOCGETSGCNT                      = 0xc0207534\n\tSIOCGETVIFCNT                     = 0xc0287533\n\tSIOCGETVLAN                       = 0xc0206990\n\tSIOCGIFADDR                       = 0xc0206921\n\tSIOCGIFBRDADDR                    = 0xc0206923\n\tSIOCGIFCONF                       = 0xc0106924\n\tSIOCGIFDATA                       = 0xc020691b\n\tSIOCGIFDESCR                      = 0xc0206981\n\tSIOCGIFDSTADDR                    = 0xc0206922\n\tSIOCGIFFLAGS                      = 0xc0206911\n\tSIOCGIFGATTR                      = 0xc028698b\n\tSIOCGIFGENERIC                    = 0xc020693a\n\tSIOCGIFGLIST                      = 0xc028698d\n\tSIOCGIFGMEMB                      = 0xc028698a\n\tSIOCGIFGROUP                      = 0xc0286988\n\tSIOCGIFHARDMTU                    = 0xc02069a5\n\tSIOCGIFLLPRIO                     = 0xc02069b6\n\tSIOCGIFMEDIA                      = 0xc0406938\n\tSIOCGIFMETRIC                     = 0xc0206917\n\tSIOCGIFMTU                        = 0xc020697e\n\tSIOCGIFNETMASK                    = 0xc0206925\n\tSIOCGIFPAIR                       = 0xc02069b1\n\tSIOCGIFPARENT                     = 0xc02069b3\n\tSIOCGIFPRIORITY                   = 0xc020699c\n\tSIOCGIFRDOMAIN                    = 0xc02069a0\n\tSIOCGIFRTLABEL                    = 0xc0206983\n\tSIOCGIFRXR                        = 0x802069aa\n\tSIOCGIFSFFPAGE                    = 0xc1126939\n\tSIOCGIFXFLAGS                     = 0xc020699e\n\tSIOCGLIFPHYADDR                   = 0xc218694b\n\tSIOCGLIFPHYDF                     = 0xc02069c2\n\tSIOCGLIFPHYECN                    = 0xc02069c8\n\tSIOCGLIFPHYRTABLE                 = 0xc02069a2\n\tSIOCGLIFPHYTTL                    = 0xc02069a9\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGPWE3                         = 0xc0206998\n\tSIOCGPWE3CTRLWORD                 = 0xc02069dc\n\tSIOCGPWE3FAT                      = 0xc02069dd\n\tSIOCGPWE3NEIGHBOR                 = 0xc21869de\n\tSIOCGRXHPRIO                      = 0xc02069db\n\tSIOCGSPPPPARAMS                   = 0xc0206994\n\tSIOCGTXHPRIO                      = 0xc02069c6\n\tSIOCGUMBINFO                      = 0xc02069be\n\tSIOCGUMBPARAM                     = 0xc02069c0\n\tSIOCGVH                           = 0xc02069f6\n\tSIOCGVNETFLOWID                   = 0xc02069c4\n\tSIOCGVNETID                       = 0xc02069a7\n\tSIOCIFAFATTACH                    = 0x801169ab\n\tSIOCIFAFDETACH                    = 0x801169ac\n\tSIOCIFCREATE                      = 0x8020697a\n\tSIOCIFDESTROY                     = 0x80206979\n\tSIOCIFGCLONERS                    = 0xc0106978\n\tSIOCSETKALIVE                     = 0x801869a3\n\tSIOCSETLABEL                      = 0x80206999\n\tSIOCSETMPWCFG                     = 0x802069ad\n\tSIOCSETPFLOW                      = 0x802069fd\n\tSIOCSETPFSYNC                     = 0x802069f7\n\tSIOCSETVLAN                       = 0x8020698f\n\tSIOCSIFADDR                       = 0x8020690c\n\tSIOCSIFBRDADDR                    = 0x80206913\n\tSIOCSIFDESCR                      = 0x80206980\n\tSIOCSIFDSTADDR                    = 0x8020690e\n\tSIOCSIFFLAGS                      = 0x80206910\n\tSIOCSIFGATTR                      = 0x8028698c\n\tSIOCSIFGENERIC                    = 0x80206939\n\tSIOCSIFLLADDR                     = 0x8020691f\n\tSIOCSIFLLPRIO                     = 0x802069b5\n\tSIOCSIFMEDIA                      = 0xc0206937\n\tSIOCSIFMETRIC                     = 0x80206918\n\tSIOCSIFMTU                        = 0x8020697f\n\tSIOCSIFNETMASK                    = 0x80206916\n\tSIOCSIFPAIR                       = 0x802069b0\n\tSIOCSIFPARENT                     = 0x802069b2\n\tSIOCSIFPRIORITY                   = 0x8020699b\n\tSIOCSIFRDOMAIN                    = 0x8020699f\n\tSIOCSIFRTLABEL                    = 0x80206982\n\tSIOCSIFXFLAGS                     = 0x8020699d\n\tSIOCSLIFPHYADDR                   = 0x8218694a\n\tSIOCSLIFPHYDF                     = 0x802069c1\n\tSIOCSLIFPHYECN                    = 0x802069c7\n\tSIOCSLIFPHYRTABLE                 = 0x802069a1\n\tSIOCSLIFPHYTTL                    = 0x802069a8\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSPWE3CTRLWORD                 = 0x802069dc\n\tSIOCSPWE3FAT                      = 0x802069dd\n\tSIOCSPWE3NEIGHBOR                 = 0x821869de\n\tSIOCSRXHPRIO                      = 0x802069db\n\tSIOCSSPPPPARAMS                   = 0x80206993\n\tSIOCSTXHPRIO                      = 0x802069c5\n\tSIOCSUMBPARAM                     = 0x802069bf\n\tSIOCSVH                           = 0xc02069f5\n\tSIOCSVNETFLOWID                   = 0x802069c3\n\tSIOCSVNETID                       = 0x802069a6\n\tSOCK_CLOEXEC                      = 0x8000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_DNS                          = 0x1000\n\tSOCK_NONBLOCK                     = 0x4000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_BINDANY                        = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DOMAIN                         = 0x1024\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NETPROC                        = 0x1020\n\tSO_OOBINLINE                      = 0x100\n\tSO_PEERCRED                       = 0x1022\n\tSO_PROTOCOL                       = 0x1025\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x1006\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_RTABLE                         = 0x1021\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x1005\n\tSO_SPLICE                         = 0x1023\n\tSO_TIMESTAMP                      = 0x800\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tSO_ZEROIZE                        = 0x2000\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tTCIFLUSH                          = 0x1\n\tTCIOFF                            = 0x3\n\tTCIOFLUSH                         = 0x3\n\tTCION                             = 0x4\n\tTCOFLUSH                          = 0x2\n\tTCOOFF                            = 0x1\n\tTCOON                             = 0x2\n\tTCPOPT_EOL                        = 0x0\n\tTCPOPT_MAXSEG                     = 0x2\n\tTCPOPT_NOP                        = 0x1\n\tTCPOPT_SACK                       = 0x5\n\tTCPOPT_SACK_HDR                   = 0x1010500\n\tTCPOPT_SACK_PERMITTED             = 0x4\n\tTCPOPT_SACK_PERMIT_HDR            = 0x1010402\n\tTCPOPT_SIGNATURE                  = 0x13\n\tTCPOPT_TIMESTAMP                  = 0x8\n\tTCPOPT_TSTAMP_HDR                 = 0x101080a\n\tTCPOPT_WINDOW                     = 0x3\n\tTCP_INFO                          = 0x9\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_SACK                      = 0x3\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MD5SIG                        = 0x4\n\tTCP_MSS                           = 0x200\n\tTCP_NODELAY                       = 0x1\n\tTCP_NOPUSH                        = 0x10\n\tTCP_SACKHOLE_LIMIT                = 0x80\n\tTCP_SACK_ENABLE                   = 0x8\n\tTCSAFLUSH                         = 0x2\n\tTIMER_ABSTIME                     = 0x1\n\tTIMER_RELTIME                     = 0x0\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCHKVERAUTH                    = 0x2000741e\n\tTIOCCLRVERAUTH                    = 0x2000741d\n\tTIOCCONS                          = 0x80047462\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLAG_CLOCAL                   = 0x2\n\tTIOCFLAG_CRTSCTS                  = 0x4\n\tTIOCFLAG_MDMBUF                   = 0x8\n\tTIOCFLAG_PPS                      = 0x10\n\tTIOCFLAG_SOFTCAR                  = 0x1\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGFLAGS                        = 0x4004745d\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGSID                          = 0x40047463\n\tTIOCGTSTAMP                       = 0x4010745b\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMODG                          = 0x4004746a\n\tTIOCMODS                          = 0x8004746d\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSETVERAUTH                    = 0x8004741c\n\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x8004745f\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x20007465\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSTSTAMP                       = 0x8008745a\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\n\tTIOCUCNTL_CBRK                    = 0x7a\n\tTIOCUCNTL_SBRK                    = 0x7b\n\tTOSTOP                            = 0x400000\n\tUTIME_NOW                         = -0x2\n\tUTIME_OMIT                        = -0x1\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVM_ANONMIN                        = 0x7\n\tVM_LOADAVG                        = 0x2\n\tVM_MALLOC_CONF                    = 0xc\n\tVM_MAXID                          = 0xd\n\tVM_MAXSLP                         = 0xa\n\tVM_METER                          = 0x1\n\tVM_NKMEMPAGES                     = 0x6\n\tVM_PSSTRINGS                      = 0x3\n\tVM_SWAPENCRYPT                    = 0x5\n\tVM_USPACE                         = 0xb\n\tVM_UVMEXP                         = 0x4\n\tVM_VNODEMIN                       = 0x9\n\tVM_VTEXTMIN                       = 0x8\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWALTSIG                           = 0x4\n\tWCONTINUED                        = 0x8\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\n\tWUNTRACED                         = 0x2\n\tXCASE                             = 0x1000000\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x5c)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x58)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x59)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEIPSEC          = syscall.Errno(0x52)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x5f)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMEDIUMTYPE     = syscall.Errno(0x56)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x53)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOMEDIUM       = syscall.Errno(0x55)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x5a)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5d)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x5b)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x57)\n\tEOWNERDEAD      = syscall.Errno(0x5e)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5f)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disk quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC program not available\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIPSEC\", \"IPsec processing failure\"},\n\t{83, \"ENOATTR\", \"attribute not found\"},\n\t{84, \"EILSEQ\", \"illegal byte sequence\"},\n\t{85, \"ENOMEDIUM\", \"no medium found\"},\n\t{86, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{87, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{88, \"ECANCELED\", \"operation canceled\"},\n\t{89, \"EIDRM\", \"identifier removed\"},\n\t{90, \"ENOMSG\", \"no message of desired type\"},\n\t{91, \"ENOTSUP\", \"not supported\"},\n\t{92, \"EBADMSG\", \"bad message\"},\n\t{93, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{94, \"EOWNERDEAD\", \"previous owner died\"},\n\t{95, \"ELAST\", \"protocol error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"thread AST\"},\n\t{28672, \"SIGSTKSZ\", \"unknown signal\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go",
    "content": "// mkerrors.sh\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm && openbsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_BLUETOOTH                      = 0x20\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_ENCAP                          = 0x1c\n\tAF_HYLINK                         = 0xf\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x18\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_KEY                            = 0x1e\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x24\n\tAF_MPLS                           = 0x21\n\tAF_NATM                           = 0x1b\n\tAF_NS                             = 0x6\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x11\n\tAF_SIP                            = 0x1d\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tALTWERASE                         = 0x200\n\tARPHRD_ETHER                      = 0x1\n\tARPHRD_FRELAY                     = 0xf\n\tARPHRD_IEEE1394                   = 0x18\n\tARPHRD_IEEE802                    = 0x6\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB9600                             = 0x2580\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDIRFILT                      = 0x4004427c\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc008427b\n\tBIOCGETIF                         = 0x4020426b\n\tBIOCGFILDROP                      = 0x40044278\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRSIG                         = 0x40044273\n\tBIOCGRTIMEOUT                     = 0x4010426e\n\tBIOCGSTATS                        = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCLOCK                          = 0x20004276\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDIRFILT                      = 0x8004427d\n\tBIOCSDLT                          = 0x8004427a\n\tBIOCSETF                          = 0x80084267\n\tBIOCSETIF                         = 0x8020426c\n\tBIOCSETWF                         = 0x80084277\n\tBIOCSFILDROP                      = 0x80044279\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRSIG                         = 0x80044272\n\tBIOCSRTIMEOUT                     = 0x8010426d\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DIRECTION_IN                  = 0x1\n\tBPF_DIRECTION_OUT                 = 0x2\n\tBPF_DIV                           = 0x30\n\tBPF_FILDROP_CAPTURE               = 0x1\n\tBPF_FILDROP_DROP                  = 0x2\n\tBPF_FILDROP_PASS                  = 0x0\n\tBPF_F_DIR_IN                      = 0x10\n\tBPF_F_DIR_MASK                    = 0x30\n\tBPF_F_DIR_OUT                     = 0x20\n\tBPF_F_DIR_SHIFT                   = 0x4\n\tBPF_F_FLOWID                      = 0x8\n\tBPF_F_PRI_MASK                    = 0x7\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x200000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RND                           = 0xc0\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLOCK_BOOTTIME                    = 0x6\n\tCLOCK_MONOTONIC                   = 0x3\n\tCLOCK_PROCESS_CPUTIME_ID          = 0x2\n\tCLOCK_REALTIME                    = 0x0\n\tCLOCK_THREAD_CPUTIME_ID           = 0x4\n\tCLOCK_UPTIME                      = 0x5\n\tCPUSTATES                         = 0x6\n\tCP_IDLE                           = 0x5\n\tCP_INTR                           = 0x4\n\tCP_NICE                           = 0x1\n\tCP_SPIN                           = 0x3\n\tCP_SYS                            = 0x2\n\tCP_USER                           = 0x0\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x10000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0xff\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tDIOCADDQUEUE                      = 0xc100445d\n\tDIOCADDRULE                       = 0xcce04404\n\tDIOCADDSTATE                      = 0xc1084425\n\tDIOCCHANGERULE                    = 0xcce0441a\n\tDIOCCLRIFFLAG                     = 0xc024445a\n\tDIOCCLRSRCNODES                   = 0x20004455\n\tDIOCCLRSTATES                     = 0xc0d04412\n\tDIOCCLRSTATUS                     = 0xc0244416\n\tDIOCGETLIMIT                      = 0xc0084427\n\tDIOCGETQSTATS                     = 0xc1084460\n\tDIOCGETQUEUE                      = 0xc100445f\n\tDIOCGETQUEUES                     = 0xc100445e\n\tDIOCGETRULE                       = 0xcce04407\n\tDIOCGETRULES                      = 0xcce04406\n\tDIOCGETRULESET                    = 0xc444443b\n\tDIOCGETRULESETS                   = 0xc444443a\n\tDIOCGETSRCNODES                   = 0xc0084454\n\tDIOCGETSTATE                      = 0xc1084413\n\tDIOCGETSTATES                     = 0xc0084419\n\tDIOCGETSTATUS                     = 0xc1e84415\n\tDIOCGETSYNFLWATS                  = 0xc0084463\n\tDIOCGETTIMEOUT                    = 0xc008441e\n\tDIOCIGETIFACES                    = 0xc0244457\n\tDIOCKILLSRCNODES                  = 0xc068445b\n\tDIOCKILLSTATES                    = 0xc0d04429\n\tDIOCNATLOOK                       = 0xc0504417\n\tDIOCOSFPADD                       = 0xc088444f\n\tDIOCOSFPFLUSH                     = 0x2000444e\n\tDIOCOSFPGET                       = 0xc0884450\n\tDIOCRADDADDRS                     = 0xc44c4443\n\tDIOCRADDTABLES                    = 0xc44c443d\n\tDIOCRCLRADDRS                     = 0xc44c4442\n\tDIOCRCLRASTATS                    = 0xc44c4448\n\tDIOCRCLRTABLES                    = 0xc44c443c\n\tDIOCRCLRTSTATS                    = 0xc44c4441\n\tDIOCRDELADDRS                     = 0xc44c4444\n\tDIOCRDELTABLES                    = 0xc44c443e\n\tDIOCRGETADDRS                     = 0xc44c4446\n\tDIOCRGETASTATS                    = 0xc44c4447\n\tDIOCRGETTABLES                    = 0xc44c443f\n\tDIOCRGETTSTATS                    = 0xc44c4440\n\tDIOCRINADEFINE                    = 0xc44c444d\n\tDIOCRSETADDRS                     = 0xc44c4445\n\tDIOCRSETTFLAGS                    = 0xc44c444a\n\tDIOCRTSTADDRS                     = 0xc44c4449\n\tDIOCSETDEBUG                      = 0xc0044418\n\tDIOCSETHOSTID                     = 0xc0044456\n\tDIOCSETIFFLAG                     = 0xc0244459\n\tDIOCSETLIMIT                      = 0xc0084428\n\tDIOCSETREASS                      = 0xc004445c\n\tDIOCSETSTATUSIF                   = 0xc0244414\n\tDIOCSETSYNCOOKIES                 = 0xc0014462\n\tDIOCSETSYNFLWATS                  = 0xc0084461\n\tDIOCSETTIMEOUT                    = 0xc008441d\n\tDIOCSTART                         = 0x20004401\n\tDIOCSTOP                          = 0x20004402\n\tDIOCXBEGIN                        = 0xc00c4451\n\tDIOCXCOMMIT                       = 0xc00c4452\n\tDIOCXROLLBACK                     = 0xc00c4453\n\tDLT_ARCNET                        = 0x7\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AX25                          = 0x3\n\tDLT_CHAOS                         = 0x5\n\tDLT_C_HDLC                        = 0x68\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0xd\n\tDLT_FDDI                          = 0xa\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_LOOP                          = 0xc\n\tDLT_MPLS                          = 0xdb\n\tDLT_NULL                          = 0x0\n\tDLT_OPENFLOW                      = 0x10b\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0x10\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PRONET                        = 0x4\n\tDLT_RAW                           = 0xe\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xf\n\tDLT_USBPCAP                       = 0xf9\n\tDLT_USER0                         = 0x93\n\tDLT_USER1                         = 0x94\n\tDLT_USER10                        = 0x9d\n\tDLT_USER11                        = 0x9e\n\tDLT_USER12                        = 0x9f\n\tDLT_USER13                        = 0xa0\n\tDLT_USER14                        = 0xa1\n\tDLT_USER15                        = 0xa2\n\tDLT_USER2                         = 0x95\n\tDLT_USER3                         = 0x96\n\tDLT_USER4                         = 0x97\n\tDLT_USER5                         = 0x98\n\tDLT_USER6                         = 0x99\n\tDLT_USER7                         = 0x9a\n\tDLT_USER8                         = 0x9b\n\tDLT_USER9                         = 0x9c\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEMT_TAGOVF                        = 0x1\n\tEMUL_ENABLED                      = 0x1\n\tEMUL_NATIVE                       = 0x2\n\tENDRUNDISC                        = 0x9\n\tETH64_8021_RSVD_MASK              = 0xfffffffffff0\n\tETH64_8021_RSVD_PREFIX            = 0x180c2000000\n\tETHERMIN                          = 0x2e\n\tETHERMTU                          = 0x5dc\n\tETHERTYPE_8023                    = 0x4\n\tETHERTYPE_AARP                    = 0x80f3\n\tETHERTYPE_ACCTON                  = 0x8390\n\tETHERTYPE_AEONIC                  = 0x8036\n\tETHERTYPE_ALPHA                   = 0x814a\n\tETHERTYPE_AMBER                   = 0x6008\n\tETHERTYPE_AMOEBA                  = 0x8145\n\tETHERTYPE_AOE                     = 0x88a2\n\tETHERTYPE_APOLLO                  = 0x80f7\n\tETHERTYPE_APOLLODOMAIN            = 0x8019\n\tETHERTYPE_APPLETALK               = 0x809b\n\tETHERTYPE_APPLITEK                = 0x80c7\n\tETHERTYPE_ARGONAUT                = 0x803a\n\tETHERTYPE_ARP                     = 0x806\n\tETHERTYPE_AT                      = 0x809b\n\tETHERTYPE_ATALK                   = 0x809b\n\tETHERTYPE_ATOMIC                  = 0x86df\n\tETHERTYPE_ATT                     = 0x8069\n\tETHERTYPE_ATTSTANFORD             = 0x8008\n\tETHERTYPE_AUTOPHON                = 0x806a\n\tETHERTYPE_AXIS                    = 0x8856\n\tETHERTYPE_BCLOOP                  = 0x9003\n\tETHERTYPE_BOFL                    = 0x8102\n\tETHERTYPE_CABLETRON               = 0x7034\n\tETHERTYPE_CHAOS                   = 0x804\n\tETHERTYPE_COMDESIGN               = 0x806c\n\tETHERTYPE_COMPUGRAPHIC            = 0x806d\n\tETHERTYPE_COUNTERPOINT            = 0x8062\n\tETHERTYPE_CRONUS                  = 0x8004\n\tETHERTYPE_CRONUSVLN               = 0x8003\n\tETHERTYPE_DCA                     = 0x1234\n\tETHERTYPE_DDE                     = 0x807b\n\tETHERTYPE_DEBNI                   = 0xaaaa\n\tETHERTYPE_DECAM                   = 0x8048\n\tETHERTYPE_DECCUST                 = 0x6006\n\tETHERTYPE_DECDIAG                 = 0x6005\n\tETHERTYPE_DECDNS                  = 0x803c\n\tETHERTYPE_DECDTS                  = 0x803e\n\tETHERTYPE_DECEXPER                = 0x6000\n\tETHERTYPE_DECLAST                 = 0x8041\n\tETHERTYPE_DECLTM                  = 0x803f\n\tETHERTYPE_DECMUMPS                = 0x6009\n\tETHERTYPE_DECNETBIOS              = 0x8040\n\tETHERTYPE_DELTACON                = 0x86de\n\tETHERTYPE_DIDDLE                  = 0x4321\n\tETHERTYPE_DLOG1                   = 0x660\n\tETHERTYPE_DLOG2                   = 0x661\n\tETHERTYPE_DN                      = 0x6003\n\tETHERTYPE_DOGFIGHT                = 0x1989\n\tETHERTYPE_DSMD                    = 0x8039\n\tETHERTYPE_EAPOL                   = 0x888e\n\tETHERTYPE_ECMA                    = 0x803\n\tETHERTYPE_ENCRYPT                 = 0x803d\n\tETHERTYPE_ES                      = 0x805d\n\tETHERTYPE_EXCELAN                 = 0x8010\n\tETHERTYPE_EXPERDATA               = 0x8049\n\tETHERTYPE_FLIP                    = 0x8146\n\tETHERTYPE_FLOWCONTROL             = 0x8808\n\tETHERTYPE_FRARP                   = 0x808\n\tETHERTYPE_GENDYN                  = 0x8068\n\tETHERTYPE_HAYES                   = 0x8130\n\tETHERTYPE_HIPPI_FP                = 0x8180\n\tETHERTYPE_HITACHI                 = 0x8820\n\tETHERTYPE_HP                      = 0x8005\n\tETHERTYPE_IEEEPUP                 = 0xa00\n\tETHERTYPE_IEEEPUPAT               = 0xa01\n\tETHERTYPE_IMLBL                   = 0x4c42\n\tETHERTYPE_IMLBLDIAG               = 0x424c\n\tETHERTYPE_IP                      = 0x800\n\tETHERTYPE_IPAS                    = 0x876c\n\tETHERTYPE_IPV6                    = 0x86dd\n\tETHERTYPE_IPX                     = 0x8137\n\tETHERTYPE_IPXNEW                  = 0x8037\n\tETHERTYPE_KALPANA                 = 0x8582\n\tETHERTYPE_LANBRIDGE               = 0x8038\n\tETHERTYPE_LANPROBE                = 0x8888\n\tETHERTYPE_LAT                     = 0x6004\n\tETHERTYPE_LBACK                   = 0x9000\n\tETHERTYPE_LITTLE                  = 0x8060\n\tETHERTYPE_LLDP                    = 0x88cc\n\tETHERTYPE_LOGICRAFT               = 0x8148\n\tETHERTYPE_LOOPBACK                = 0x9000\n\tETHERTYPE_MACSEC                  = 0x88e5\n\tETHERTYPE_MATRA                   = 0x807a\n\tETHERTYPE_MAX                     = 0xffff\n\tETHERTYPE_MERIT                   = 0x807c\n\tETHERTYPE_MICP                    = 0x873a\n\tETHERTYPE_MOPDL                   = 0x6001\n\tETHERTYPE_MOPRC                   = 0x6002\n\tETHERTYPE_MOTOROLA                = 0x818d\n\tETHERTYPE_MPLS                    = 0x8847\n\tETHERTYPE_MPLS_MCAST              = 0x8848\n\tETHERTYPE_MUMPS                   = 0x813f\n\tETHERTYPE_NBPCC                   = 0x3c04\n\tETHERTYPE_NBPCLAIM                = 0x3c09\n\tETHERTYPE_NBPCLREQ                = 0x3c05\n\tETHERTYPE_NBPCLRSP                = 0x3c06\n\tETHERTYPE_NBPCREQ                 = 0x3c02\n\tETHERTYPE_NBPCRSP                 = 0x3c03\n\tETHERTYPE_NBPDG                   = 0x3c07\n\tETHERTYPE_NBPDGB                  = 0x3c08\n\tETHERTYPE_NBPDLTE                 = 0x3c0a\n\tETHERTYPE_NBPRAR                  = 0x3c0c\n\tETHERTYPE_NBPRAS                  = 0x3c0b\n\tETHERTYPE_NBPRST                  = 0x3c0d\n\tETHERTYPE_NBPSCD                  = 0x3c01\n\tETHERTYPE_NBPVCD                  = 0x3c00\n\tETHERTYPE_NBS                     = 0x802\n\tETHERTYPE_NCD                     = 0x8149\n\tETHERTYPE_NESTAR                  = 0x8006\n\tETHERTYPE_NETBEUI                 = 0x8191\n\tETHERTYPE_NHRP                    = 0x2001\n\tETHERTYPE_NOVELL                  = 0x8138\n\tETHERTYPE_NS                      = 0x600\n\tETHERTYPE_NSAT                    = 0x601\n\tETHERTYPE_NSCOMPAT                = 0x807\n\tETHERTYPE_NSH                     = 0x984f\n\tETHERTYPE_NTRAILER                = 0x10\n\tETHERTYPE_OS9                     = 0x7007\n\tETHERTYPE_OS9NET                  = 0x7009\n\tETHERTYPE_PACER                   = 0x80c6\n\tETHERTYPE_PBB                     = 0x88e7\n\tETHERTYPE_PCS                     = 0x4242\n\tETHERTYPE_PLANNING                = 0x8044\n\tETHERTYPE_PPP                     = 0x880b\n\tETHERTYPE_PPPOE                   = 0x8864\n\tETHERTYPE_PPPOEDISC               = 0x8863\n\tETHERTYPE_PRIMENTS                = 0x7031\n\tETHERTYPE_PUP                     = 0x200\n\tETHERTYPE_PUPAT                   = 0x200\n\tETHERTYPE_QINQ                    = 0x88a8\n\tETHERTYPE_RACAL                   = 0x7030\n\tETHERTYPE_RATIONAL                = 0x8150\n\tETHERTYPE_RAWFR                   = 0x6559\n\tETHERTYPE_RCL                     = 0x1995\n\tETHERTYPE_RDP                     = 0x8739\n\tETHERTYPE_RETIX                   = 0x80f2\n\tETHERTYPE_REVARP                  = 0x8035\n\tETHERTYPE_SCA                     = 0x6007\n\tETHERTYPE_SECTRA                  = 0x86db\n\tETHERTYPE_SECUREDATA              = 0x876d\n\tETHERTYPE_SGITW                   = 0x817e\n\tETHERTYPE_SG_BOUNCE               = 0x8016\n\tETHERTYPE_SG_DIAG                 = 0x8013\n\tETHERTYPE_SG_NETGAMES             = 0x8014\n\tETHERTYPE_SG_RESV                 = 0x8015\n\tETHERTYPE_SIMNET                  = 0x5208\n\tETHERTYPE_SLOW                    = 0x8809\n\tETHERTYPE_SNA                     = 0x80d5\n\tETHERTYPE_SNMP                    = 0x814c\n\tETHERTYPE_SONIX                   = 0xfaf5\n\tETHERTYPE_SPIDER                  = 0x809f\n\tETHERTYPE_SPRITE                  = 0x500\n\tETHERTYPE_STP                     = 0x8181\n\tETHERTYPE_TALARIS                 = 0x812b\n\tETHERTYPE_TALARISMC               = 0x852b\n\tETHERTYPE_TCPCOMP                 = 0x876b\n\tETHERTYPE_TCPSM                   = 0x9002\n\tETHERTYPE_TEC                     = 0x814f\n\tETHERTYPE_TIGAN                   = 0x802f\n\tETHERTYPE_TRAIL                   = 0x1000\n\tETHERTYPE_TRANSETHER              = 0x6558\n\tETHERTYPE_TYMSHARE                = 0x802e\n\tETHERTYPE_UBBST                   = 0x7005\n\tETHERTYPE_UBDEBUG                 = 0x900\n\tETHERTYPE_UBDIAGLOOP              = 0x7002\n\tETHERTYPE_UBDL                    = 0x7000\n\tETHERTYPE_UBNIU                   = 0x7001\n\tETHERTYPE_UBNMC                   = 0x7003\n\tETHERTYPE_VALID                   = 0x1600\n\tETHERTYPE_VARIAN                  = 0x80dd\n\tETHERTYPE_VAXELN                  = 0x803b\n\tETHERTYPE_VEECO                   = 0x8067\n\tETHERTYPE_VEXP                    = 0x805b\n\tETHERTYPE_VGLAB                   = 0x8131\n\tETHERTYPE_VINES                   = 0xbad\n\tETHERTYPE_VINESECHO               = 0xbaf\n\tETHERTYPE_VINESLOOP               = 0xbae\n\tETHERTYPE_VITAL                   = 0xff00\n\tETHERTYPE_VLAN                    = 0x8100\n\tETHERTYPE_VLTLMAN                 = 0x8080\n\tETHERTYPE_VPROD                   = 0x805c\n\tETHERTYPE_VURESERVED              = 0x8147\n\tETHERTYPE_WATERLOO                = 0x8130\n\tETHERTYPE_WELLFLEET               = 0x8103\n\tETHERTYPE_X25                     = 0x805\n\tETHERTYPE_X75                     = 0x801\n\tETHERTYPE_XNSSM                   = 0x9001\n\tETHERTYPE_XTP                     = 0x817d\n\tETHER_ADDR_LEN                    = 0x6\n\tETHER_ALIGN                       = 0x2\n\tETHER_CRC_LEN                     = 0x4\n\tETHER_CRC_POLY_BE                 = 0x4c11db6\n\tETHER_CRC_POLY_LE                 = 0xedb88320\n\tETHER_HDR_LEN                     = 0xe\n\tETHER_MAX_DIX_LEN                 = 0x600\n\tETHER_MAX_HARDMTU_LEN             = 0xff9b\n\tETHER_MAX_LEN                     = 0x5ee\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = -0x3\n\tEVFILT_DEVICE                     = -0x8\n\tEVFILT_EXCEPT                     = -0x9\n\tEVFILT_PROC                       = -0x5\n\tEVFILT_READ                       = -0x1\n\tEVFILT_SIGNAL                     = -0x6\n\tEVFILT_SYSCOUNT                   = 0x9\n\tEVFILT_TIMER                      = -0x7\n\tEVFILT_VNODE                      = -0x4\n\tEVFILT_WRITE                      = -0x2\n\tEVL_ENCAPLEN                      = 0x4\n\tEVL_PRIO_BITS                     = 0xd\n\tEVL_PRIO_MAX                      = 0x7\n\tEVL_VLID_MASK                     = 0xfff\n\tEVL_VLID_MAX                      = 0xffe\n\tEVL_VLID_MIN                      = 0x1\n\tEVL_VLID_NULL                     = 0x0\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_DISPATCH                       = 0x80\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_RECEIPT                        = 0x40\n\tEV_SYSFLAGS                       = 0xf800\n\tEXTA                              = 0x4b00\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x400\n\tFLUSHO                            = 0x800000\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0xa\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETOWN                          = 0x5\n\tF_ISATTY                          = 0xb\n\tF_OK                              = 0x0\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x8e52\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_STATICARP                     = 0x20\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BLUETOOTH                     = 0xf8\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf7\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DUMMY                         = 0xf1\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ECONET                        = 0xce\n\tIFT_ENC                           = 0xf4\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf3\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INFINIBAND                    = 0xc7\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LINEGROUP                     = 0xd2\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MBIM                          = 0xfa\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFLOW                         = 0xf9\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_PON155                        = 0xcf\n\tIFT_PON622                        = 0xd0\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPATM                       = 0xc5\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf2\n\tIFT_Q2931                         = 0xc9\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SIPSIG                        = 0xcc\n\tIFT_SIPTG                         = 0xcb\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TELINK                        = 0xc8\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VIRTUALTG                     = 0xca\n\tIFT_VOICEDID                      = 0xd5\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEEMFGD                    = 0xd3\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFGDEANA                  = 0xd4\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERCABLE                = 0xc6\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_WIREGUARD                     = 0xfb\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIN_RFC3021_HOST                   = 0x1\n\tIN_RFC3021_NET                    = 0xfffffffe\n\tIN_RFC3021_NSHIFT                 = 0x1f\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_DIVERT                    = 0x102\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x103\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_MPLS                      = 0x89\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_SCTP                      = 0x84\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_UDPLITE                   = 0x88\n\tIPV6_AUTH_LEVEL                   = 0x35\n\tIPV6_AUTOFLOWLABEL                = 0x3b\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_ESP_NETWORK_LEVEL            = 0x37\n\tIPV6_ESP_TRANS_LEVEL              = 0x36\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPCOMP_LEVEL                 = 0x3c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MINHOPCOUNT                  = 0x41\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_OPTIONS                      = 0x1\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PIPEX                        = 0x3f\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVDSTPORT                  = 0x40\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTABLE                       = 0x1021\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_AUTH_LEVEL                     = 0x14\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_ESP_NETWORK_LEVEL              = 0x16\n\tIP_ESP_TRANS_LEVEL                = 0x15\n\tIP_HDRINCL                        = 0x2\n\tIP_IPCOMP_LEVEL                   = 0x1d\n\tIP_IPDEFTTL                       = 0x25\n\tIP_IPSECFLOWINFO                  = 0x24\n\tIP_IPSEC_LOCAL_AUTH               = 0x1b\n\tIP_IPSEC_LOCAL_CRED               = 0x19\n\tIP_IPSEC_LOCAL_ID                 = 0x17\n\tIP_IPSEC_REMOTE_AUTH              = 0x1c\n\tIP_IPSEC_REMOTE_CRED              = 0x1a\n\tIP_IPSEC_REMOTE_ID                = 0x18\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0xfff\n\tIP_MF                             = 0x2000\n\tIP_MINTTL                         = 0x20\n\tIP_MIN_MEMBERSHIPS                = 0xf\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PIPEX                          = 0x22\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVDSTPORT                    = 0x21\n\tIP_RECVIF                         = 0x1e\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVRTABLE                     = 0x23\n\tIP_RECVTTL                        = 0x1f\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_RTABLE                         = 0x1021\n\tIP_SENDSRCADDR                    = 0x7\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tITIMER_PROF                       = 0x2\n\tITIMER_REAL                       = 0x0\n\tITIMER_VIRTUAL                    = 0x1\n\tIUCLC                             = 0x1000\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLCNT_OVERLOAD_FLUSH               = 0x6\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x6\n\tMADV_NORMAL                       = 0x0\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SPACEAVAIL                   = 0x5\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ANON                          = 0x1000\n\tMAP_ANONYMOUS                     = 0x1000\n\tMAP_CONCEAL                       = 0x8000\n\tMAP_COPY                          = 0x2\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_FLAGMASK                      = 0xfff7\n\tMAP_HASSEMAPHORE                  = 0x0\n\tMAP_INHERIT                       = 0x0\n\tMAP_INHERIT_COPY                  = 0x1\n\tMAP_INHERIT_NONE                  = 0x2\n\tMAP_INHERIT_SHARE                 = 0x0\n\tMAP_INHERIT_ZERO                  = 0x3\n\tMAP_NOEXTEND                      = 0x0\n\tMAP_NORESERVE                     = 0x0\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x0\n\tMAP_SHARED                        = 0x1\n\tMAP_STACK                         = 0x4000\n\tMAP_TRYFIXED                      = 0x0\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DELEXPORT                     = 0x20000\n\tMNT_DOOMED                        = 0x8000000\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_FORCE                         = 0x80000\n\tMNT_LAZY                          = 0x3\n\tMNT_LOCAL                         = 0x1000\n\tMNT_NOATIME                       = 0x8000\n\tMNT_NODEV                         = 0x10\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOPERM                        = 0x20\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOWAIT                        = 0x2\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x4000000\n\tMNT_STALLED                       = 0x100000\n\tMNT_SWAPPABLE                     = 0x200000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0x400ffff\n\tMNT_WAIT                          = 0x1\n\tMNT_WANTRDWR                      = 0x2000000\n\tMNT_WXALLOWED                     = 0x800\n\tMOUNT_AFS                         = \"afs\"\n\tMOUNT_CD9660                      = \"cd9660\"\n\tMOUNT_EXT2FS                      = \"ext2fs\"\n\tMOUNT_FFS                         = \"ffs\"\n\tMOUNT_FUSEFS                      = \"fuse\"\n\tMOUNT_MFS                         = \"mfs\"\n\tMOUNT_MSDOS                       = \"msdos\"\n\tMOUNT_NCPFS                       = \"ncpfs\"\n\tMOUNT_NFS                         = \"nfs\"\n\tMOUNT_NTFS                        = \"ntfs\"\n\tMOUNT_TMPFS                       = \"tmpfs\"\n\tMOUNT_UDF                         = \"udf\"\n\tMOUNT_UFS                         = \"ffs\"\n\tMSG_BCAST                         = 0x100\n\tMSG_CMSG_CLOEXEC                  = 0x800\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOR                           = 0x8\n\tMSG_MCAST                         = 0x200\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_TRUNC                         = 0x10\n\tMSG_WAITALL                       = 0x40\n\tMSG_WAITFORONE                    = 0x1000\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x4\n\tMS_SYNC                           = 0x2\n\tNAME_MAX                          = 0xff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x3\n\tNET_RT_IFNAMES                    = 0x6\n\tNET_RT_MAXID                      = 0x8\n\tNET_RT_SOURCE                     = 0x7\n\tNET_RT_STATS                      = 0x4\n\tNET_RT_TABLE                      = 0x5\n\tNFDBITS                           = 0x20\n\tNOFLSH                            = 0x80000000\n\tNOKERNINFO                        = 0x2000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHANGE                       = 0x1\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EOF                          = 0x2\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_OOB                          = 0x4\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_TRUNCATE                     = 0x80\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOLCUC                             = 0x20\n\tONLCR                             = 0x2\n\tONLRET                            = 0x80\n\tONOCR                             = 0x40\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tOXTABS                            = 0x4\n\tO_ACCMODE                         = 0x3\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x10000\n\tO_CREAT                           = 0x200\n\tO_DIRECTORY                       = 0x20000\n\tO_DSYNC                           = 0x80\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_RSYNC                           = 0x80\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPF_FLUSH                          = 0x1\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BFD                          = 0xb\n\tRTAX_BRD                          = 0x7\n\tRTAX_DNS                          = 0xc\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_LABEL                        = 0xa\n\tRTAX_MAX                          = 0xf\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_SEARCH                       = 0xe\n\tRTAX_SRC                          = 0x8\n\tRTAX_SRCMASK                      = 0x9\n\tRTAX_STATIC                       = 0xd\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BFD                           = 0x800\n\tRTA_BRD                           = 0x80\n\tRTA_DNS                           = 0x1000\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_LABEL                         = 0x400\n\tRTA_NETMASK                       = 0x4\n\tRTA_SEARCH                        = 0x4000\n\tRTA_SRC                           = 0x100\n\tRTA_SRCMASK                       = 0x200\n\tRTA_STATIC                        = 0x2000\n\tRTF_ANNOUNCE                      = 0x4000\n\tRTF_BFD                           = 0x1000000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_BROADCAST                     = 0x400000\n\tRTF_CACHED                        = 0x20000\n\tRTF_CLONED                        = 0x10000\n\tRTF_CLONING                       = 0x100\n\tRTF_CONNECTED                     = 0x800000\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_FMASK                         = 0x110fc08\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_LOCAL                         = 0x200000\n\tRTF_MODIFIED                      = 0x20\n\tRTF_MPATH                         = 0x40000\n\tRTF_MPLS                          = 0x100000\n\tRTF_MULTICAST                     = 0x200\n\tRTF_PERMANENT_ARP                 = 0x2000\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_PROTO3                        = 0x2000\n\tRTF_REJECT                        = 0x8\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_USETRAILERS                   = 0x8000\n\tRTM_80211INFO                     = 0x15\n\tRTM_ADD                           = 0x1\n\tRTM_BFD                           = 0x12\n\tRTM_CHANGE                        = 0x3\n\tRTM_CHGADDRATTR                   = 0x14\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_DESYNC                        = 0x10\n\tRTM_GET                           = 0x4\n\tRTM_IFANNOUNCE                    = 0xf\n\tRTM_IFINFO                        = 0xe\n\tRTM_INVALIDATE                    = 0x11\n\tRTM_LOSING                        = 0x5\n\tRTM_MAXSIZE                       = 0x800\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_PROPOSAL                      = 0x13\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_SOURCE                        = 0x16\n\tRTM_VERSION                       = 0x5\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRT_TABLEID_BITS                   = 0x8\n\tRT_TABLEID_MASK                   = 0xff\n\tRT_TABLEID_MAX                    = 0xff\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tRUSAGE_THREAD                     = 0x1\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x4\n\tSEEK_CUR                          = 0x1\n\tSEEK_END                          = 0x2\n\tSEEK_SET                          = 0x0\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80206931\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCAIFGROUP                      = 0x80246987\n\tSIOCATMARK                        = 0x40047307\n\tSIOCBRDGADD                       = 0x8060693c\n\tSIOCBRDGADDL                      = 0x80606949\n\tSIOCBRDGADDS                      = 0x80606941\n\tSIOCBRDGARL                       = 0x808c694d\n\tSIOCBRDGDADDR                     = 0x81286947\n\tSIOCBRDGDEL                       = 0x8060693d\n\tSIOCBRDGDELS                      = 0x80606942\n\tSIOCBRDGFLUSH                     = 0x80606948\n\tSIOCBRDGFRL                       = 0x808c694e\n\tSIOCBRDGGCACHE                    = 0xc0146941\n\tSIOCBRDGGFD                       = 0xc0146952\n\tSIOCBRDGGHT                       = 0xc0146951\n\tSIOCBRDGGIFFLGS                   = 0xc060693e\n\tSIOCBRDGGMA                       = 0xc0146953\n\tSIOCBRDGGPARAM                    = 0xc0406958\n\tSIOCBRDGGPRI                      = 0xc0146950\n\tSIOCBRDGGRL                       = 0xc028694f\n\tSIOCBRDGGTO                       = 0xc0146946\n\tSIOCBRDGIFS                       = 0xc0606942\n\tSIOCBRDGRTS                       = 0xc0186943\n\tSIOCBRDGSADDR                     = 0xc1286944\n\tSIOCBRDGSCACHE                    = 0x80146940\n\tSIOCBRDGSFD                       = 0x80146952\n\tSIOCBRDGSHT                       = 0x80146951\n\tSIOCBRDGSIFCOST                   = 0x80606955\n\tSIOCBRDGSIFFLGS                   = 0x8060693f\n\tSIOCBRDGSIFPRIO                   = 0x80606954\n\tSIOCBRDGSIFPROT                   = 0x8060694a\n\tSIOCBRDGSMA                       = 0x80146953\n\tSIOCBRDGSPRI                      = 0x80146950\n\tSIOCBRDGSPROTO                    = 0x8014695a\n\tSIOCBRDGSTO                       = 0x80146945\n\tSIOCBRDGSTXHC                     = 0x80146959\n\tSIOCDELLABEL                      = 0x80206997\n\tSIOCDELMULTI                      = 0x80206932\n\tSIOCDIFADDR                       = 0x80206919\n\tSIOCDIFGROUP                      = 0x80246989\n\tSIOCDIFPARENT                     = 0x802069b4\n\tSIOCDIFPHYADDR                    = 0x80206949\n\tSIOCDPWE3NEIGHBOR                 = 0x802069de\n\tSIOCDVNETID                       = 0x802069af\n\tSIOCGETKALIVE                     = 0xc01869a4\n\tSIOCGETLABEL                      = 0x8020699a\n\tSIOCGETMPWCFG                     = 0xc02069ae\n\tSIOCGETPFLOW                      = 0xc02069fe\n\tSIOCGETPFSYNC                     = 0xc02069f8\n\tSIOCGETSGCNT                      = 0xc0147534\n\tSIOCGETVIFCNT                     = 0xc0147533\n\tSIOCGETVLAN                       = 0xc0206990\n\tSIOCGIFADDR                       = 0xc0206921\n\tSIOCGIFBRDADDR                    = 0xc0206923\n\tSIOCGIFCONF                       = 0xc0086924\n\tSIOCGIFDATA                       = 0xc020691b\n\tSIOCGIFDESCR                      = 0xc0206981\n\tSIOCGIFDSTADDR                    = 0xc0206922\n\tSIOCGIFFLAGS                      = 0xc0206911\n\tSIOCGIFGATTR                      = 0xc024698b\n\tSIOCGIFGENERIC                    = 0xc020693a\n\tSIOCGIFGLIST                      = 0xc024698d\n\tSIOCGIFGMEMB                      = 0xc024698a\n\tSIOCGIFGROUP                      = 0xc0246988\n\tSIOCGIFHARDMTU                    = 0xc02069a5\n\tSIOCGIFLLPRIO                     = 0xc02069b6\n\tSIOCGIFMEDIA                      = 0xc0386938\n\tSIOCGIFMETRIC                     = 0xc0206917\n\tSIOCGIFMTU                        = 0xc020697e\n\tSIOCGIFNETMASK                    = 0xc0206925\n\tSIOCGIFPAIR                       = 0xc02069b1\n\tSIOCGIFPARENT                     = 0xc02069b3\n\tSIOCGIFPRIORITY                   = 0xc020699c\n\tSIOCGIFRDOMAIN                    = 0xc02069a0\n\tSIOCGIFRTLABEL                    = 0xc0206983\n\tSIOCGIFRXR                        = 0x802069aa\n\tSIOCGIFSFFPAGE                    = 0xc1126939\n\tSIOCGIFXFLAGS                     = 0xc020699e\n\tSIOCGLIFPHYADDR                   = 0xc218694b\n\tSIOCGLIFPHYDF                     = 0xc02069c2\n\tSIOCGLIFPHYECN                    = 0xc02069c8\n\tSIOCGLIFPHYRTABLE                 = 0xc02069a2\n\tSIOCGLIFPHYTTL                    = 0xc02069a9\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGPWE3                         = 0xc0206998\n\tSIOCGPWE3CTRLWORD                 = 0xc02069dc\n\tSIOCGPWE3FAT                      = 0xc02069dd\n\tSIOCGPWE3NEIGHBOR                 = 0xc21869de\n\tSIOCGRXHPRIO                      = 0xc02069db\n\tSIOCGSPPPPARAMS                   = 0xc0206994\n\tSIOCGTXHPRIO                      = 0xc02069c6\n\tSIOCGUMBINFO                      = 0xc02069be\n\tSIOCGUMBPARAM                     = 0xc02069c0\n\tSIOCGVH                           = 0xc02069f6\n\tSIOCGVNETFLOWID                   = 0xc02069c4\n\tSIOCGVNETID                       = 0xc02069a7\n\tSIOCIFAFATTACH                    = 0x801169ab\n\tSIOCIFAFDETACH                    = 0x801169ac\n\tSIOCIFCREATE                      = 0x8020697a\n\tSIOCIFDESTROY                     = 0x80206979\n\tSIOCIFGCLONERS                    = 0xc00c6978\n\tSIOCSETKALIVE                     = 0x801869a3\n\tSIOCSETLABEL                      = 0x80206999\n\tSIOCSETMPWCFG                     = 0x802069ad\n\tSIOCSETPFLOW                      = 0x802069fd\n\tSIOCSETPFSYNC                     = 0x802069f7\n\tSIOCSETVLAN                       = 0x8020698f\n\tSIOCSIFADDR                       = 0x8020690c\n\tSIOCSIFBRDADDR                    = 0x80206913\n\tSIOCSIFDESCR                      = 0x80206980\n\tSIOCSIFDSTADDR                    = 0x8020690e\n\tSIOCSIFFLAGS                      = 0x80206910\n\tSIOCSIFGATTR                      = 0x8024698c\n\tSIOCSIFGENERIC                    = 0x80206939\n\tSIOCSIFLLADDR                     = 0x8020691f\n\tSIOCSIFLLPRIO                     = 0x802069b5\n\tSIOCSIFMEDIA                      = 0xc0206937\n\tSIOCSIFMETRIC                     = 0x80206918\n\tSIOCSIFMTU                        = 0x8020697f\n\tSIOCSIFNETMASK                    = 0x80206916\n\tSIOCSIFPAIR                       = 0x802069b0\n\tSIOCSIFPARENT                     = 0x802069b2\n\tSIOCSIFPRIORITY                   = 0x8020699b\n\tSIOCSIFRDOMAIN                    = 0x8020699f\n\tSIOCSIFRTLABEL                    = 0x80206982\n\tSIOCSIFXFLAGS                     = 0x8020699d\n\tSIOCSLIFPHYADDR                   = 0x8218694a\n\tSIOCSLIFPHYDF                     = 0x802069c1\n\tSIOCSLIFPHYECN                    = 0x802069c7\n\tSIOCSLIFPHYRTABLE                 = 0x802069a1\n\tSIOCSLIFPHYTTL                    = 0x802069a8\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSPWE3CTRLWORD                 = 0x802069dc\n\tSIOCSPWE3FAT                      = 0x802069dd\n\tSIOCSPWE3NEIGHBOR                 = 0x821869de\n\tSIOCSRXHPRIO                      = 0x802069db\n\tSIOCSSPPPPARAMS                   = 0x80206993\n\tSIOCSTXHPRIO                      = 0x802069c5\n\tSIOCSUMBPARAM                     = 0x802069bf\n\tSIOCSVH                           = 0xc02069f5\n\tSIOCSVNETFLOWID                   = 0x802069c3\n\tSIOCSVNETID                       = 0x802069a6\n\tSOCK_CLOEXEC                      = 0x8000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_DNS                          = 0x1000\n\tSOCK_NONBLOCK                     = 0x4000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_BINDANY                        = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DOMAIN                         = 0x1024\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NETPROC                        = 0x1020\n\tSO_OOBINLINE                      = 0x100\n\tSO_PEERCRED                       = 0x1022\n\tSO_PROTOCOL                       = 0x1025\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x1006\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_RTABLE                         = 0x1021\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x1005\n\tSO_SPLICE                         = 0x1023\n\tSO_TIMESTAMP                      = 0x800\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tSO_ZEROIZE                        = 0x2000\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tTCIFLUSH                          = 0x1\n\tTCIOFF                            = 0x3\n\tTCIOFLUSH                         = 0x3\n\tTCION                             = 0x4\n\tTCOFLUSH                          = 0x2\n\tTCOOFF                            = 0x1\n\tTCOON                             = 0x2\n\tTCPOPT_EOL                        = 0x0\n\tTCPOPT_MAXSEG                     = 0x2\n\tTCPOPT_NOP                        = 0x1\n\tTCPOPT_SACK                       = 0x5\n\tTCPOPT_SACK_HDR                   = 0x1010500\n\tTCPOPT_SACK_PERMITTED             = 0x4\n\tTCPOPT_SACK_PERMIT_HDR            = 0x1010402\n\tTCPOPT_SIGNATURE                  = 0x13\n\tTCPOPT_TIMESTAMP                  = 0x8\n\tTCPOPT_TSTAMP_HDR                 = 0x101080a\n\tTCPOPT_WINDOW                     = 0x3\n\tTCP_INFO                          = 0x9\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_SACK                      = 0x3\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MD5SIG                        = 0x4\n\tTCP_MSS                           = 0x200\n\tTCP_NODELAY                       = 0x1\n\tTCP_NOPUSH                        = 0x10\n\tTCP_SACKHOLE_LIMIT                = 0x80\n\tTCP_SACK_ENABLE                   = 0x8\n\tTCSAFLUSH                         = 0x2\n\tTIMER_ABSTIME                     = 0x1\n\tTIMER_RELTIME                     = 0x0\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCHKVERAUTH                    = 0x2000741e\n\tTIOCCLRVERAUTH                    = 0x2000741d\n\tTIOCCONS                          = 0x80047462\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLAG_CLOCAL                   = 0x2\n\tTIOCFLAG_CRTSCTS                  = 0x4\n\tTIOCFLAG_MDMBUF                   = 0x8\n\tTIOCFLAG_PPS                      = 0x10\n\tTIOCFLAG_SOFTCAR                  = 0x1\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGFLAGS                        = 0x4004745d\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGSID                          = 0x40047463\n\tTIOCGTSTAMP                       = 0x4010745b\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMODG                          = 0x4004746a\n\tTIOCMODS                          = 0x8004746d\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSETVERAUTH                    = 0x8004741c\n\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x8004745f\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x20007465\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSTSTAMP                       = 0x8008745a\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\n\tTIOCUCNTL_CBRK                    = 0x7a\n\tTIOCUCNTL_SBRK                    = 0x7b\n\tTOSTOP                            = 0x400000\n\tUTIME_NOW                         = -0x2\n\tUTIME_OMIT                        = -0x1\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVM_ANONMIN                        = 0x7\n\tVM_LOADAVG                        = 0x2\n\tVM_MALLOC_CONF                    = 0xc\n\tVM_MAXID                          = 0xd\n\tVM_MAXSLP                         = 0xa\n\tVM_METER                          = 0x1\n\tVM_NKMEMPAGES                     = 0x6\n\tVM_PSSTRINGS                      = 0x3\n\tVM_SWAPENCRYPT                    = 0x5\n\tVM_USPACE                         = 0xb\n\tVM_UVMEXP                         = 0x4\n\tVM_VNODEMIN                       = 0x9\n\tVM_VTEXTMIN                       = 0x8\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWALTSIG                           = 0x4\n\tWCONTINUED                        = 0x8\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\n\tWUNTRACED                         = 0x2\n\tXCASE                             = 0x1000000\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x5c)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x58)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x59)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEIPSEC          = syscall.Errno(0x52)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x5f)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMEDIUMTYPE     = syscall.Errno(0x56)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x53)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOMEDIUM       = syscall.Errno(0x55)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x5a)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5d)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x5b)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x57)\n\tEOWNERDEAD      = syscall.Errno(0x5e)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5f)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disk quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC program not available\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIPSEC\", \"IPsec processing failure\"},\n\t{83, \"ENOATTR\", \"attribute not found\"},\n\t{84, \"EILSEQ\", \"illegal byte sequence\"},\n\t{85, \"ENOMEDIUM\", \"no medium found\"},\n\t{86, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{87, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{88, \"ECANCELED\", \"operation canceled\"},\n\t{89, \"EIDRM\", \"identifier removed\"},\n\t{90, \"ENOMSG\", \"no message of desired type\"},\n\t{91, \"ENOTSUP\", \"not supported\"},\n\t{92, \"EBADMSG\", \"bad message\"},\n\t{93, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{94, \"EOWNERDEAD\", \"previous owner died\"},\n\t{95, \"ELAST\", \"protocol error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"thread AST\"},\n\t{28672, \"SIGSTKSZ\", \"unknown signal\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && openbsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_BLUETOOTH                      = 0x20\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_ENCAP                          = 0x1c\n\tAF_HYLINK                         = 0xf\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x18\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_KEY                            = 0x1e\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x24\n\tAF_MPLS                           = 0x21\n\tAF_NATM                           = 0x1b\n\tAF_NS                             = 0x6\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x11\n\tAF_SIP                            = 0x1d\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tALTWERASE                         = 0x200\n\tARPHRD_ETHER                      = 0x1\n\tARPHRD_FRELAY                     = 0xf\n\tARPHRD_IEEE1394                   = 0x18\n\tARPHRD_IEEE802                    = 0x6\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB9600                             = 0x2580\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDIRFILT                      = 0x4004427c\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc010427b\n\tBIOCGETIF                         = 0x4020426b\n\tBIOCGFILDROP                      = 0x40044278\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRSIG                         = 0x40044273\n\tBIOCGRTIMEOUT                     = 0x4010426e\n\tBIOCGSTATS                        = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCLOCK                          = 0x20004276\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDIRFILT                      = 0x8004427d\n\tBIOCSDLT                          = 0x8004427a\n\tBIOCSETF                          = 0x80104267\n\tBIOCSETIF                         = 0x8020426c\n\tBIOCSETWF                         = 0x80104277\n\tBIOCSFILDROP                      = 0x80044279\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRSIG                         = 0x80044272\n\tBIOCSRTIMEOUT                     = 0x8010426d\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DIRECTION_IN                  = 0x1\n\tBPF_DIRECTION_OUT                 = 0x2\n\tBPF_DIV                           = 0x30\n\tBPF_FILDROP_CAPTURE               = 0x1\n\tBPF_FILDROP_DROP                  = 0x2\n\tBPF_FILDROP_PASS                  = 0x0\n\tBPF_F_DIR_IN                      = 0x10\n\tBPF_F_DIR_MASK                    = 0x30\n\tBPF_F_DIR_OUT                     = 0x20\n\tBPF_F_DIR_SHIFT                   = 0x4\n\tBPF_F_FLOWID                      = 0x8\n\tBPF_F_PRI_MASK                    = 0x7\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x200000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RND                           = 0xc0\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLOCK_BOOTTIME                    = 0x6\n\tCLOCK_MONOTONIC                   = 0x3\n\tCLOCK_PROCESS_CPUTIME_ID          = 0x2\n\tCLOCK_REALTIME                    = 0x0\n\tCLOCK_THREAD_CPUTIME_ID           = 0x4\n\tCLOCK_UPTIME                      = 0x5\n\tCPUSTATES                         = 0x6\n\tCP_IDLE                           = 0x5\n\tCP_INTR                           = 0x4\n\tCP_NICE                           = 0x1\n\tCP_SPIN                           = 0x3\n\tCP_SYS                            = 0x2\n\tCP_USER                           = 0x0\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x10000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0xff\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tDIOCADDQUEUE                      = 0xc110445d\n\tDIOCADDRULE                       = 0xcd604404\n\tDIOCADDSTATE                      = 0xc1084425\n\tDIOCCHANGERULE                    = 0xcd60441a\n\tDIOCCLRIFFLAG                     = 0xc028445a\n\tDIOCCLRSRCNODES                   = 0x20004455\n\tDIOCCLRSTATES                     = 0xc0e04412\n\tDIOCCLRSTATUS                     = 0xc0284416\n\tDIOCGETLIMIT                      = 0xc0084427\n\tDIOCGETQSTATS                     = 0xc1204460\n\tDIOCGETQUEUE                      = 0xc110445f\n\tDIOCGETQUEUES                     = 0xc110445e\n\tDIOCGETRULE                       = 0xcd604407\n\tDIOCGETRULES                      = 0xcd604406\n\tDIOCGETRULESET                    = 0xc444443b\n\tDIOCGETRULESETS                   = 0xc444443a\n\tDIOCGETSRCNODES                   = 0xc0104454\n\tDIOCGETSTATE                      = 0xc1084413\n\tDIOCGETSTATES                     = 0xc0104419\n\tDIOCGETSTATUS                     = 0xc1e84415\n\tDIOCGETSYNFLWATS                  = 0xc0084463\n\tDIOCGETTIMEOUT                    = 0xc008441e\n\tDIOCIGETIFACES                    = 0xc0284457\n\tDIOCKILLSRCNODES                  = 0xc080445b\n\tDIOCKILLSTATES                    = 0xc0e04429\n\tDIOCNATLOOK                       = 0xc0504417\n\tDIOCOSFPADD                       = 0xc088444f\n\tDIOCOSFPFLUSH                     = 0x2000444e\n\tDIOCOSFPGET                       = 0xc0884450\n\tDIOCRADDADDRS                     = 0xc4504443\n\tDIOCRADDTABLES                    = 0xc450443d\n\tDIOCRCLRADDRS                     = 0xc4504442\n\tDIOCRCLRASTATS                    = 0xc4504448\n\tDIOCRCLRTABLES                    = 0xc450443c\n\tDIOCRCLRTSTATS                    = 0xc4504441\n\tDIOCRDELADDRS                     = 0xc4504444\n\tDIOCRDELTABLES                    = 0xc450443e\n\tDIOCRGETADDRS                     = 0xc4504446\n\tDIOCRGETASTATS                    = 0xc4504447\n\tDIOCRGETTABLES                    = 0xc450443f\n\tDIOCRGETTSTATS                    = 0xc4504440\n\tDIOCRINADEFINE                    = 0xc450444d\n\tDIOCRSETADDRS                     = 0xc4504445\n\tDIOCRSETTFLAGS                    = 0xc450444a\n\tDIOCRTSTADDRS                     = 0xc4504449\n\tDIOCSETDEBUG                      = 0xc0044418\n\tDIOCSETHOSTID                     = 0xc0044456\n\tDIOCSETIFFLAG                     = 0xc0284459\n\tDIOCSETLIMIT                      = 0xc0084428\n\tDIOCSETREASS                      = 0xc004445c\n\tDIOCSETSTATUSIF                   = 0xc0284414\n\tDIOCSETSYNCOOKIES                 = 0xc0014462\n\tDIOCSETSYNFLWATS                  = 0xc0084461\n\tDIOCSETTIMEOUT                    = 0xc008441d\n\tDIOCSTART                         = 0x20004401\n\tDIOCSTOP                          = 0x20004402\n\tDIOCXBEGIN                        = 0xc0104451\n\tDIOCXCOMMIT                       = 0xc0104452\n\tDIOCXROLLBACK                     = 0xc0104453\n\tDLT_ARCNET                        = 0x7\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AX25                          = 0x3\n\tDLT_CHAOS                         = 0x5\n\tDLT_C_HDLC                        = 0x68\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0xd\n\tDLT_FDDI                          = 0xa\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_LOOP                          = 0xc\n\tDLT_MPLS                          = 0xdb\n\tDLT_NULL                          = 0x0\n\tDLT_OPENFLOW                      = 0x10b\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0x10\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PRONET                        = 0x4\n\tDLT_RAW                           = 0xe\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xf\n\tDLT_USBPCAP                       = 0xf9\n\tDLT_USER0                         = 0x93\n\tDLT_USER1                         = 0x94\n\tDLT_USER10                        = 0x9d\n\tDLT_USER11                        = 0x9e\n\tDLT_USER12                        = 0x9f\n\tDLT_USER13                        = 0xa0\n\tDLT_USER14                        = 0xa1\n\tDLT_USER15                        = 0xa2\n\tDLT_USER2                         = 0x95\n\tDLT_USER3                         = 0x96\n\tDLT_USER4                         = 0x97\n\tDLT_USER5                         = 0x98\n\tDLT_USER6                         = 0x99\n\tDLT_USER7                         = 0x9a\n\tDLT_USER8                         = 0x9b\n\tDLT_USER9                         = 0x9c\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEMT_TAGOVF                        = 0x1\n\tEMUL_ENABLED                      = 0x1\n\tEMUL_NATIVE                       = 0x2\n\tENDRUNDISC                        = 0x9\n\tETH64_8021_RSVD_MASK              = 0xfffffffffff0\n\tETH64_8021_RSVD_PREFIX            = 0x180c2000000\n\tETHERMIN                          = 0x2e\n\tETHERMTU                          = 0x5dc\n\tETHERTYPE_8023                    = 0x4\n\tETHERTYPE_AARP                    = 0x80f3\n\tETHERTYPE_ACCTON                  = 0x8390\n\tETHERTYPE_AEONIC                  = 0x8036\n\tETHERTYPE_ALPHA                   = 0x814a\n\tETHERTYPE_AMBER                   = 0x6008\n\tETHERTYPE_AMOEBA                  = 0x8145\n\tETHERTYPE_AOE                     = 0x88a2\n\tETHERTYPE_APOLLO                  = 0x80f7\n\tETHERTYPE_APOLLODOMAIN            = 0x8019\n\tETHERTYPE_APPLETALK               = 0x809b\n\tETHERTYPE_APPLITEK                = 0x80c7\n\tETHERTYPE_ARGONAUT                = 0x803a\n\tETHERTYPE_ARP                     = 0x806\n\tETHERTYPE_AT                      = 0x809b\n\tETHERTYPE_ATALK                   = 0x809b\n\tETHERTYPE_ATOMIC                  = 0x86df\n\tETHERTYPE_ATT                     = 0x8069\n\tETHERTYPE_ATTSTANFORD             = 0x8008\n\tETHERTYPE_AUTOPHON                = 0x806a\n\tETHERTYPE_AXIS                    = 0x8856\n\tETHERTYPE_BCLOOP                  = 0x9003\n\tETHERTYPE_BOFL                    = 0x8102\n\tETHERTYPE_CABLETRON               = 0x7034\n\tETHERTYPE_CHAOS                   = 0x804\n\tETHERTYPE_COMDESIGN               = 0x806c\n\tETHERTYPE_COMPUGRAPHIC            = 0x806d\n\tETHERTYPE_COUNTERPOINT            = 0x8062\n\tETHERTYPE_CRONUS                  = 0x8004\n\tETHERTYPE_CRONUSVLN               = 0x8003\n\tETHERTYPE_DCA                     = 0x1234\n\tETHERTYPE_DDE                     = 0x807b\n\tETHERTYPE_DEBNI                   = 0xaaaa\n\tETHERTYPE_DECAM                   = 0x8048\n\tETHERTYPE_DECCUST                 = 0x6006\n\tETHERTYPE_DECDIAG                 = 0x6005\n\tETHERTYPE_DECDNS                  = 0x803c\n\tETHERTYPE_DECDTS                  = 0x803e\n\tETHERTYPE_DECEXPER                = 0x6000\n\tETHERTYPE_DECLAST                 = 0x8041\n\tETHERTYPE_DECLTM                  = 0x803f\n\tETHERTYPE_DECMUMPS                = 0x6009\n\tETHERTYPE_DECNETBIOS              = 0x8040\n\tETHERTYPE_DELTACON                = 0x86de\n\tETHERTYPE_DIDDLE                  = 0x4321\n\tETHERTYPE_DLOG1                   = 0x660\n\tETHERTYPE_DLOG2                   = 0x661\n\tETHERTYPE_DN                      = 0x6003\n\tETHERTYPE_DOGFIGHT                = 0x1989\n\tETHERTYPE_DSMD                    = 0x8039\n\tETHERTYPE_EAPOL                   = 0x888e\n\tETHERTYPE_ECMA                    = 0x803\n\tETHERTYPE_ENCRYPT                 = 0x803d\n\tETHERTYPE_ES                      = 0x805d\n\tETHERTYPE_EXCELAN                 = 0x8010\n\tETHERTYPE_EXPERDATA               = 0x8049\n\tETHERTYPE_FLIP                    = 0x8146\n\tETHERTYPE_FLOWCONTROL             = 0x8808\n\tETHERTYPE_FRARP                   = 0x808\n\tETHERTYPE_GENDYN                  = 0x8068\n\tETHERTYPE_HAYES                   = 0x8130\n\tETHERTYPE_HIPPI_FP                = 0x8180\n\tETHERTYPE_HITACHI                 = 0x8820\n\tETHERTYPE_HP                      = 0x8005\n\tETHERTYPE_IEEEPUP                 = 0xa00\n\tETHERTYPE_IEEEPUPAT               = 0xa01\n\tETHERTYPE_IMLBL                   = 0x4c42\n\tETHERTYPE_IMLBLDIAG               = 0x424c\n\tETHERTYPE_IP                      = 0x800\n\tETHERTYPE_IPAS                    = 0x876c\n\tETHERTYPE_IPV6                    = 0x86dd\n\tETHERTYPE_IPX                     = 0x8137\n\tETHERTYPE_IPXNEW                  = 0x8037\n\tETHERTYPE_KALPANA                 = 0x8582\n\tETHERTYPE_LANBRIDGE               = 0x8038\n\tETHERTYPE_LANPROBE                = 0x8888\n\tETHERTYPE_LAT                     = 0x6004\n\tETHERTYPE_LBACK                   = 0x9000\n\tETHERTYPE_LITTLE                  = 0x8060\n\tETHERTYPE_LLDP                    = 0x88cc\n\tETHERTYPE_LOGICRAFT               = 0x8148\n\tETHERTYPE_LOOPBACK                = 0x9000\n\tETHERTYPE_MACSEC                  = 0x88e5\n\tETHERTYPE_MATRA                   = 0x807a\n\tETHERTYPE_MAX                     = 0xffff\n\tETHERTYPE_MERIT                   = 0x807c\n\tETHERTYPE_MICP                    = 0x873a\n\tETHERTYPE_MOPDL                   = 0x6001\n\tETHERTYPE_MOPRC                   = 0x6002\n\tETHERTYPE_MOTOROLA                = 0x818d\n\tETHERTYPE_MPLS                    = 0x8847\n\tETHERTYPE_MPLS_MCAST              = 0x8848\n\tETHERTYPE_MUMPS                   = 0x813f\n\tETHERTYPE_NBPCC                   = 0x3c04\n\tETHERTYPE_NBPCLAIM                = 0x3c09\n\tETHERTYPE_NBPCLREQ                = 0x3c05\n\tETHERTYPE_NBPCLRSP                = 0x3c06\n\tETHERTYPE_NBPCREQ                 = 0x3c02\n\tETHERTYPE_NBPCRSP                 = 0x3c03\n\tETHERTYPE_NBPDG                   = 0x3c07\n\tETHERTYPE_NBPDGB                  = 0x3c08\n\tETHERTYPE_NBPDLTE                 = 0x3c0a\n\tETHERTYPE_NBPRAR                  = 0x3c0c\n\tETHERTYPE_NBPRAS                  = 0x3c0b\n\tETHERTYPE_NBPRST                  = 0x3c0d\n\tETHERTYPE_NBPSCD                  = 0x3c01\n\tETHERTYPE_NBPVCD                  = 0x3c00\n\tETHERTYPE_NBS                     = 0x802\n\tETHERTYPE_NCD                     = 0x8149\n\tETHERTYPE_NESTAR                  = 0x8006\n\tETHERTYPE_NETBEUI                 = 0x8191\n\tETHERTYPE_NHRP                    = 0x2001\n\tETHERTYPE_NOVELL                  = 0x8138\n\tETHERTYPE_NS                      = 0x600\n\tETHERTYPE_NSAT                    = 0x601\n\tETHERTYPE_NSCOMPAT                = 0x807\n\tETHERTYPE_NSH                     = 0x984f\n\tETHERTYPE_NTRAILER                = 0x10\n\tETHERTYPE_OS9                     = 0x7007\n\tETHERTYPE_OS9NET                  = 0x7009\n\tETHERTYPE_PACER                   = 0x80c6\n\tETHERTYPE_PBB                     = 0x88e7\n\tETHERTYPE_PCS                     = 0x4242\n\tETHERTYPE_PLANNING                = 0x8044\n\tETHERTYPE_PPP                     = 0x880b\n\tETHERTYPE_PPPOE                   = 0x8864\n\tETHERTYPE_PPPOEDISC               = 0x8863\n\tETHERTYPE_PRIMENTS                = 0x7031\n\tETHERTYPE_PUP                     = 0x200\n\tETHERTYPE_PUPAT                   = 0x200\n\tETHERTYPE_QINQ                    = 0x88a8\n\tETHERTYPE_RACAL                   = 0x7030\n\tETHERTYPE_RATIONAL                = 0x8150\n\tETHERTYPE_RAWFR                   = 0x6559\n\tETHERTYPE_RCL                     = 0x1995\n\tETHERTYPE_RDP                     = 0x8739\n\tETHERTYPE_RETIX                   = 0x80f2\n\tETHERTYPE_REVARP                  = 0x8035\n\tETHERTYPE_SCA                     = 0x6007\n\tETHERTYPE_SECTRA                  = 0x86db\n\tETHERTYPE_SECUREDATA              = 0x876d\n\tETHERTYPE_SGITW                   = 0x817e\n\tETHERTYPE_SG_BOUNCE               = 0x8016\n\tETHERTYPE_SG_DIAG                 = 0x8013\n\tETHERTYPE_SG_NETGAMES             = 0x8014\n\tETHERTYPE_SG_RESV                 = 0x8015\n\tETHERTYPE_SIMNET                  = 0x5208\n\tETHERTYPE_SLOW                    = 0x8809\n\tETHERTYPE_SNA                     = 0x80d5\n\tETHERTYPE_SNMP                    = 0x814c\n\tETHERTYPE_SONIX                   = 0xfaf5\n\tETHERTYPE_SPIDER                  = 0x809f\n\tETHERTYPE_SPRITE                  = 0x500\n\tETHERTYPE_STP                     = 0x8181\n\tETHERTYPE_TALARIS                 = 0x812b\n\tETHERTYPE_TALARISMC               = 0x852b\n\tETHERTYPE_TCPCOMP                 = 0x876b\n\tETHERTYPE_TCPSM                   = 0x9002\n\tETHERTYPE_TEC                     = 0x814f\n\tETHERTYPE_TIGAN                   = 0x802f\n\tETHERTYPE_TRAIL                   = 0x1000\n\tETHERTYPE_TRANSETHER              = 0x6558\n\tETHERTYPE_TYMSHARE                = 0x802e\n\tETHERTYPE_UBBST                   = 0x7005\n\tETHERTYPE_UBDEBUG                 = 0x900\n\tETHERTYPE_UBDIAGLOOP              = 0x7002\n\tETHERTYPE_UBDL                    = 0x7000\n\tETHERTYPE_UBNIU                   = 0x7001\n\tETHERTYPE_UBNMC                   = 0x7003\n\tETHERTYPE_VALID                   = 0x1600\n\tETHERTYPE_VARIAN                  = 0x80dd\n\tETHERTYPE_VAXELN                  = 0x803b\n\tETHERTYPE_VEECO                   = 0x8067\n\tETHERTYPE_VEXP                    = 0x805b\n\tETHERTYPE_VGLAB                   = 0x8131\n\tETHERTYPE_VINES                   = 0xbad\n\tETHERTYPE_VINESECHO               = 0xbaf\n\tETHERTYPE_VINESLOOP               = 0xbae\n\tETHERTYPE_VITAL                   = 0xff00\n\tETHERTYPE_VLAN                    = 0x8100\n\tETHERTYPE_VLTLMAN                 = 0x8080\n\tETHERTYPE_VPROD                   = 0x805c\n\tETHERTYPE_VURESERVED              = 0x8147\n\tETHERTYPE_WATERLOO                = 0x8130\n\tETHERTYPE_WELLFLEET               = 0x8103\n\tETHERTYPE_X25                     = 0x805\n\tETHERTYPE_X75                     = 0x801\n\tETHERTYPE_XNSSM                   = 0x9001\n\tETHERTYPE_XTP                     = 0x817d\n\tETHER_ADDR_LEN                    = 0x6\n\tETHER_ALIGN                       = 0x2\n\tETHER_CRC_LEN                     = 0x4\n\tETHER_CRC_POLY_BE                 = 0x4c11db6\n\tETHER_CRC_POLY_LE                 = 0xedb88320\n\tETHER_HDR_LEN                     = 0xe\n\tETHER_MAX_DIX_LEN                 = 0x600\n\tETHER_MAX_HARDMTU_LEN             = 0xff9b\n\tETHER_MAX_LEN                     = 0x5ee\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = -0x3\n\tEVFILT_DEVICE                     = -0x8\n\tEVFILT_EXCEPT                     = -0x9\n\tEVFILT_PROC                       = -0x5\n\tEVFILT_READ                       = -0x1\n\tEVFILT_SIGNAL                     = -0x6\n\tEVFILT_SYSCOUNT                   = 0x9\n\tEVFILT_TIMER                      = -0x7\n\tEVFILT_VNODE                      = -0x4\n\tEVFILT_WRITE                      = -0x2\n\tEVL_ENCAPLEN                      = 0x4\n\tEVL_PRIO_BITS                     = 0xd\n\tEVL_PRIO_MAX                      = 0x7\n\tEVL_VLID_MASK                     = 0xfff\n\tEVL_VLID_MAX                      = 0xffe\n\tEVL_VLID_MIN                      = 0x1\n\tEVL_VLID_NULL                     = 0x0\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_DISPATCH                       = 0x80\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_RECEIPT                        = 0x40\n\tEV_SYSFLAGS                       = 0xf800\n\tEXTA                              = 0x4b00\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x400\n\tFLUSHO                            = 0x800000\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0xa\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETOWN                          = 0x5\n\tF_ISATTY                          = 0xb\n\tF_OK                              = 0x0\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x8e52\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_STATICARP                     = 0x20\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BLUETOOTH                     = 0xf8\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf7\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DUMMY                         = 0xf1\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ECONET                        = 0xce\n\tIFT_ENC                           = 0xf4\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf3\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INFINIBAND                    = 0xc7\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LINEGROUP                     = 0xd2\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MBIM                          = 0xfa\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFLOW                         = 0xf9\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_PON155                        = 0xcf\n\tIFT_PON622                        = 0xd0\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPATM                       = 0xc5\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf2\n\tIFT_Q2931                         = 0xc9\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SIPSIG                        = 0xcc\n\tIFT_SIPTG                         = 0xcb\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TELINK                        = 0xc8\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VIRTUALTG                     = 0xca\n\tIFT_VOICEDID                      = 0xd5\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEEMFGD                    = 0xd3\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFGDEANA                  = 0xd4\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERCABLE                = 0xc6\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_WIREGUARD                     = 0xfb\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIN_RFC3021_HOST                   = 0x1\n\tIN_RFC3021_NET                    = 0xfffffffe\n\tIN_RFC3021_NSHIFT                 = 0x1f\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_DIVERT                    = 0x102\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x103\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_MPLS                      = 0x89\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_SCTP                      = 0x84\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_UDPLITE                   = 0x88\n\tIPV6_AUTH_LEVEL                   = 0x35\n\tIPV6_AUTOFLOWLABEL                = 0x3b\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_ESP_NETWORK_LEVEL            = 0x37\n\tIPV6_ESP_TRANS_LEVEL              = 0x36\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPCOMP_LEVEL                 = 0x3c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MINHOPCOUNT                  = 0x41\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_OPTIONS                      = 0x1\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PIPEX                        = 0x3f\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVDSTPORT                  = 0x40\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTABLE                       = 0x1021\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_AUTH_LEVEL                     = 0x14\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_ESP_NETWORK_LEVEL              = 0x16\n\tIP_ESP_TRANS_LEVEL                = 0x15\n\tIP_HDRINCL                        = 0x2\n\tIP_IPCOMP_LEVEL                   = 0x1d\n\tIP_IPDEFTTL                       = 0x25\n\tIP_IPSECFLOWINFO                  = 0x24\n\tIP_IPSEC_LOCAL_AUTH               = 0x1b\n\tIP_IPSEC_LOCAL_CRED               = 0x19\n\tIP_IPSEC_LOCAL_ID                 = 0x17\n\tIP_IPSEC_REMOTE_AUTH              = 0x1c\n\tIP_IPSEC_REMOTE_CRED              = 0x1a\n\tIP_IPSEC_REMOTE_ID                = 0x18\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0xfff\n\tIP_MF                             = 0x2000\n\tIP_MINTTL                         = 0x20\n\tIP_MIN_MEMBERSHIPS                = 0xf\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PIPEX                          = 0x22\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVDSTPORT                    = 0x21\n\tIP_RECVIF                         = 0x1e\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVRTABLE                     = 0x23\n\tIP_RECVTTL                        = 0x1f\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_RTABLE                         = 0x1021\n\tIP_SENDSRCADDR                    = 0x7\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tITIMER_PROF                       = 0x2\n\tITIMER_REAL                       = 0x0\n\tITIMER_VIRTUAL                    = 0x1\n\tIUCLC                             = 0x1000\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLCNT_OVERLOAD_FLUSH               = 0x6\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x6\n\tMADV_NORMAL                       = 0x0\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SPACEAVAIL                   = 0x5\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ANON                          = 0x1000\n\tMAP_ANONYMOUS                     = 0x1000\n\tMAP_CONCEAL                       = 0x8000\n\tMAP_COPY                          = 0x2\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_FLAGMASK                      = 0xfff7\n\tMAP_HASSEMAPHORE                  = 0x0\n\tMAP_INHERIT                       = 0x0\n\tMAP_INHERIT_COPY                  = 0x1\n\tMAP_INHERIT_NONE                  = 0x2\n\tMAP_INHERIT_SHARE                 = 0x0\n\tMAP_INHERIT_ZERO                  = 0x3\n\tMAP_NOEXTEND                      = 0x0\n\tMAP_NORESERVE                     = 0x0\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x0\n\tMAP_SHARED                        = 0x1\n\tMAP_STACK                         = 0x4000\n\tMAP_TRYFIXED                      = 0x0\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DELEXPORT                     = 0x20000\n\tMNT_DOOMED                        = 0x8000000\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_FORCE                         = 0x80000\n\tMNT_LAZY                          = 0x3\n\tMNT_LOCAL                         = 0x1000\n\tMNT_NOATIME                       = 0x8000\n\tMNT_NODEV                         = 0x10\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOPERM                        = 0x20\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOWAIT                        = 0x2\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x4000000\n\tMNT_STALLED                       = 0x100000\n\tMNT_SWAPPABLE                     = 0x200000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0x400ffff\n\tMNT_WAIT                          = 0x1\n\tMNT_WANTRDWR                      = 0x2000000\n\tMNT_WXALLOWED                     = 0x800\n\tMOUNT_AFS                         = \"afs\"\n\tMOUNT_CD9660                      = \"cd9660\"\n\tMOUNT_EXT2FS                      = \"ext2fs\"\n\tMOUNT_FFS                         = \"ffs\"\n\tMOUNT_FUSEFS                      = \"fuse\"\n\tMOUNT_MFS                         = \"mfs\"\n\tMOUNT_MSDOS                       = \"msdos\"\n\tMOUNT_NCPFS                       = \"ncpfs\"\n\tMOUNT_NFS                         = \"nfs\"\n\tMOUNT_NTFS                        = \"ntfs\"\n\tMOUNT_TMPFS                       = \"tmpfs\"\n\tMOUNT_UDF                         = \"udf\"\n\tMOUNT_UFS                         = \"ffs\"\n\tMSG_BCAST                         = 0x100\n\tMSG_CMSG_CLOEXEC                  = 0x800\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOR                           = 0x8\n\tMSG_MCAST                         = 0x200\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_TRUNC                         = 0x10\n\tMSG_WAITALL                       = 0x40\n\tMSG_WAITFORONE                    = 0x1000\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x4\n\tMS_SYNC                           = 0x2\n\tNAME_MAX                          = 0xff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x3\n\tNET_RT_IFNAMES                    = 0x6\n\tNET_RT_MAXID                      = 0x8\n\tNET_RT_SOURCE                     = 0x7\n\tNET_RT_STATS                      = 0x4\n\tNET_RT_TABLE                      = 0x5\n\tNFDBITS                           = 0x20\n\tNOFLSH                            = 0x80000000\n\tNOKERNINFO                        = 0x2000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHANGE                       = 0x1\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EOF                          = 0x2\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_OOB                          = 0x4\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_TRUNCATE                     = 0x80\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOLCUC                             = 0x20\n\tONLCR                             = 0x2\n\tONLRET                            = 0x80\n\tONOCR                             = 0x40\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tOXTABS                            = 0x4\n\tO_ACCMODE                         = 0x3\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x10000\n\tO_CREAT                           = 0x200\n\tO_DIRECTORY                       = 0x20000\n\tO_DSYNC                           = 0x80\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_RSYNC                           = 0x80\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPF_FLUSH                          = 0x1\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BFD                          = 0xb\n\tRTAX_BRD                          = 0x7\n\tRTAX_DNS                          = 0xc\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_LABEL                        = 0xa\n\tRTAX_MAX                          = 0xf\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_SEARCH                       = 0xe\n\tRTAX_SRC                          = 0x8\n\tRTAX_SRCMASK                      = 0x9\n\tRTAX_STATIC                       = 0xd\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BFD                           = 0x800\n\tRTA_BRD                           = 0x80\n\tRTA_DNS                           = 0x1000\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_LABEL                         = 0x400\n\tRTA_NETMASK                       = 0x4\n\tRTA_SEARCH                        = 0x4000\n\tRTA_SRC                           = 0x100\n\tRTA_SRCMASK                       = 0x200\n\tRTA_STATIC                        = 0x2000\n\tRTF_ANNOUNCE                      = 0x4000\n\tRTF_BFD                           = 0x1000000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_BROADCAST                     = 0x400000\n\tRTF_CACHED                        = 0x20000\n\tRTF_CLONED                        = 0x10000\n\tRTF_CLONING                       = 0x100\n\tRTF_CONNECTED                     = 0x800000\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_FMASK                         = 0x110fc08\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_LOCAL                         = 0x200000\n\tRTF_MODIFIED                      = 0x20\n\tRTF_MPATH                         = 0x40000\n\tRTF_MPLS                          = 0x100000\n\tRTF_MULTICAST                     = 0x200\n\tRTF_PERMANENT_ARP                 = 0x2000\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_PROTO3                        = 0x2000\n\tRTF_REJECT                        = 0x8\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_USETRAILERS                   = 0x8000\n\tRTM_80211INFO                     = 0x15\n\tRTM_ADD                           = 0x1\n\tRTM_BFD                           = 0x12\n\tRTM_CHANGE                        = 0x3\n\tRTM_CHGADDRATTR                   = 0x14\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_DESYNC                        = 0x10\n\tRTM_GET                           = 0x4\n\tRTM_IFANNOUNCE                    = 0xf\n\tRTM_IFINFO                        = 0xe\n\tRTM_INVALIDATE                    = 0x11\n\tRTM_LOSING                        = 0x5\n\tRTM_MAXSIZE                       = 0x800\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_PROPOSAL                      = 0x13\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_SOURCE                        = 0x16\n\tRTM_VERSION                       = 0x5\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRT_TABLEID_BITS                   = 0x8\n\tRT_TABLEID_MASK                   = 0xff\n\tRT_TABLEID_MAX                    = 0xff\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tRUSAGE_THREAD                     = 0x1\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x4\n\tSEEK_CUR                          = 0x1\n\tSEEK_END                          = 0x2\n\tSEEK_SET                          = 0x0\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80206931\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCAIFGROUP                      = 0x80286987\n\tSIOCATMARK                        = 0x40047307\n\tSIOCBRDGADD                       = 0x8060693c\n\tSIOCBRDGADDL                      = 0x80606949\n\tSIOCBRDGADDS                      = 0x80606941\n\tSIOCBRDGARL                       = 0x808c694d\n\tSIOCBRDGDADDR                     = 0x81286947\n\tSIOCBRDGDEL                       = 0x8060693d\n\tSIOCBRDGDELS                      = 0x80606942\n\tSIOCBRDGFLUSH                     = 0x80606948\n\tSIOCBRDGFRL                       = 0x808c694e\n\tSIOCBRDGGCACHE                    = 0xc0146941\n\tSIOCBRDGGFD                       = 0xc0146952\n\tSIOCBRDGGHT                       = 0xc0146951\n\tSIOCBRDGGIFFLGS                   = 0xc060693e\n\tSIOCBRDGGMA                       = 0xc0146953\n\tSIOCBRDGGPARAM                    = 0xc0406958\n\tSIOCBRDGGPRI                      = 0xc0146950\n\tSIOCBRDGGRL                       = 0xc030694f\n\tSIOCBRDGGTO                       = 0xc0146946\n\tSIOCBRDGIFS                       = 0xc0606942\n\tSIOCBRDGRTS                       = 0xc0206943\n\tSIOCBRDGSADDR                     = 0xc1286944\n\tSIOCBRDGSCACHE                    = 0x80146940\n\tSIOCBRDGSFD                       = 0x80146952\n\tSIOCBRDGSHT                       = 0x80146951\n\tSIOCBRDGSIFCOST                   = 0x80606955\n\tSIOCBRDGSIFFLGS                   = 0x8060693f\n\tSIOCBRDGSIFPRIO                   = 0x80606954\n\tSIOCBRDGSIFPROT                   = 0x8060694a\n\tSIOCBRDGSMA                       = 0x80146953\n\tSIOCBRDGSPRI                      = 0x80146950\n\tSIOCBRDGSPROTO                    = 0x8014695a\n\tSIOCBRDGSTO                       = 0x80146945\n\tSIOCBRDGSTXHC                     = 0x80146959\n\tSIOCDELLABEL                      = 0x80206997\n\tSIOCDELMULTI                      = 0x80206932\n\tSIOCDIFADDR                       = 0x80206919\n\tSIOCDIFGROUP                      = 0x80286989\n\tSIOCDIFPARENT                     = 0x802069b4\n\tSIOCDIFPHYADDR                    = 0x80206949\n\tSIOCDPWE3NEIGHBOR                 = 0x802069de\n\tSIOCDVNETID                       = 0x802069af\n\tSIOCGETKALIVE                     = 0xc01869a4\n\tSIOCGETLABEL                      = 0x8020699a\n\tSIOCGETMPWCFG                     = 0xc02069ae\n\tSIOCGETPFLOW                      = 0xc02069fe\n\tSIOCGETPFSYNC                     = 0xc02069f8\n\tSIOCGETSGCNT                      = 0xc0207534\n\tSIOCGETVIFCNT                     = 0xc0287533\n\tSIOCGETVLAN                       = 0xc0206990\n\tSIOCGIFADDR                       = 0xc0206921\n\tSIOCGIFBRDADDR                    = 0xc0206923\n\tSIOCGIFCONF                       = 0xc0106924\n\tSIOCGIFDATA                       = 0xc020691b\n\tSIOCGIFDESCR                      = 0xc0206981\n\tSIOCGIFDSTADDR                    = 0xc0206922\n\tSIOCGIFFLAGS                      = 0xc0206911\n\tSIOCGIFGATTR                      = 0xc028698b\n\tSIOCGIFGENERIC                    = 0xc020693a\n\tSIOCGIFGLIST                      = 0xc028698d\n\tSIOCGIFGMEMB                      = 0xc028698a\n\tSIOCGIFGROUP                      = 0xc0286988\n\tSIOCGIFHARDMTU                    = 0xc02069a5\n\tSIOCGIFLLPRIO                     = 0xc02069b6\n\tSIOCGIFMEDIA                      = 0xc0406938\n\tSIOCGIFMETRIC                     = 0xc0206917\n\tSIOCGIFMTU                        = 0xc020697e\n\tSIOCGIFNETMASK                    = 0xc0206925\n\tSIOCGIFPAIR                       = 0xc02069b1\n\tSIOCGIFPARENT                     = 0xc02069b3\n\tSIOCGIFPRIORITY                   = 0xc020699c\n\tSIOCGIFRDOMAIN                    = 0xc02069a0\n\tSIOCGIFRTLABEL                    = 0xc0206983\n\tSIOCGIFRXR                        = 0x802069aa\n\tSIOCGIFSFFPAGE                    = 0xc1126939\n\tSIOCGIFXFLAGS                     = 0xc020699e\n\tSIOCGLIFPHYADDR                   = 0xc218694b\n\tSIOCGLIFPHYDF                     = 0xc02069c2\n\tSIOCGLIFPHYECN                    = 0xc02069c8\n\tSIOCGLIFPHYRTABLE                 = 0xc02069a2\n\tSIOCGLIFPHYTTL                    = 0xc02069a9\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGPWE3                         = 0xc0206998\n\tSIOCGPWE3CTRLWORD                 = 0xc02069dc\n\tSIOCGPWE3FAT                      = 0xc02069dd\n\tSIOCGPWE3NEIGHBOR                 = 0xc21869de\n\tSIOCGRXHPRIO                      = 0xc02069db\n\tSIOCGSPPPPARAMS                   = 0xc0206994\n\tSIOCGTXHPRIO                      = 0xc02069c6\n\tSIOCGUMBINFO                      = 0xc02069be\n\tSIOCGUMBPARAM                     = 0xc02069c0\n\tSIOCGVH                           = 0xc02069f6\n\tSIOCGVNETFLOWID                   = 0xc02069c4\n\tSIOCGVNETID                       = 0xc02069a7\n\tSIOCIFAFATTACH                    = 0x801169ab\n\tSIOCIFAFDETACH                    = 0x801169ac\n\tSIOCIFCREATE                      = 0x8020697a\n\tSIOCIFDESTROY                     = 0x80206979\n\tSIOCIFGCLONERS                    = 0xc0106978\n\tSIOCSETKALIVE                     = 0x801869a3\n\tSIOCSETLABEL                      = 0x80206999\n\tSIOCSETMPWCFG                     = 0x802069ad\n\tSIOCSETPFLOW                      = 0x802069fd\n\tSIOCSETPFSYNC                     = 0x802069f7\n\tSIOCSETVLAN                       = 0x8020698f\n\tSIOCSIFADDR                       = 0x8020690c\n\tSIOCSIFBRDADDR                    = 0x80206913\n\tSIOCSIFDESCR                      = 0x80206980\n\tSIOCSIFDSTADDR                    = 0x8020690e\n\tSIOCSIFFLAGS                      = 0x80206910\n\tSIOCSIFGATTR                      = 0x8028698c\n\tSIOCSIFGENERIC                    = 0x80206939\n\tSIOCSIFLLADDR                     = 0x8020691f\n\tSIOCSIFLLPRIO                     = 0x802069b5\n\tSIOCSIFMEDIA                      = 0xc0206937\n\tSIOCSIFMETRIC                     = 0x80206918\n\tSIOCSIFMTU                        = 0x8020697f\n\tSIOCSIFNETMASK                    = 0x80206916\n\tSIOCSIFPAIR                       = 0x802069b0\n\tSIOCSIFPARENT                     = 0x802069b2\n\tSIOCSIFPRIORITY                   = 0x8020699b\n\tSIOCSIFRDOMAIN                    = 0x8020699f\n\tSIOCSIFRTLABEL                    = 0x80206982\n\tSIOCSIFXFLAGS                     = 0x8020699d\n\tSIOCSLIFPHYADDR                   = 0x8218694a\n\tSIOCSLIFPHYDF                     = 0x802069c1\n\tSIOCSLIFPHYECN                    = 0x802069c7\n\tSIOCSLIFPHYRTABLE                 = 0x802069a1\n\tSIOCSLIFPHYTTL                    = 0x802069a8\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSPWE3CTRLWORD                 = 0x802069dc\n\tSIOCSPWE3FAT                      = 0x802069dd\n\tSIOCSPWE3NEIGHBOR                 = 0x821869de\n\tSIOCSRXHPRIO                      = 0x802069db\n\tSIOCSSPPPPARAMS                   = 0x80206993\n\tSIOCSTXHPRIO                      = 0x802069c5\n\tSIOCSUMBPARAM                     = 0x802069bf\n\tSIOCSVH                           = 0xc02069f5\n\tSIOCSVNETFLOWID                   = 0x802069c3\n\tSIOCSVNETID                       = 0x802069a6\n\tSOCK_CLOEXEC                      = 0x8000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_DNS                          = 0x1000\n\tSOCK_NONBLOCK                     = 0x4000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_BINDANY                        = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DOMAIN                         = 0x1024\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NETPROC                        = 0x1020\n\tSO_OOBINLINE                      = 0x100\n\tSO_PEERCRED                       = 0x1022\n\tSO_PROTOCOL                       = 0x1025\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x1006\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_RTABLE                         = 0x1021\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x1005\n\tSO_SPLICE                         = 0x1023\n\tSO_TIMESTAMP                      = 0x800\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tSO_ZEROIZE                        = 0x2000\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tTCIFLUSH                          = 0x1\n\tTCIOFF                            = 0x3\n\tTCIOFLUSH                         = 0x3\n\tTCION                             = 0x4\n\tTCOFLUSH                          = 0x2\n\tTCOOFF                            = 0x1\n\tTCOON                             = 0x2\n\tTCPOPT_EOL                        = 0x0\n\tTCPOPT_MAXSEG                     = 0x2\n\tTCPOPT_NOP                        = 0x1\n\tTCPOPT_SACK                       = 0x5\n\tTCPOPT_SACK_HDR                   = 0x1010500\n\tTCPOPT_SACK_PERMITTED             = 0x4\n\tTCPOPT_SACK_PERMIT_HDR            = 0x1010402\n\tTCPOPT_SIGNATURE                  = 0x13\n\tTCPOPT_TIMESTAMP                  = 0x8\n\tTCPOPT_TSTAMP_HDR                 = 0x101080a\n\tTCPOPT_WINDOW                     = 0x3\n\tTCP_INFO                          = 0x9\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_SACK                      = 0x3\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MD5SIG                        = 0x4\n\tTCP_MSS                           = 0x200\n\tTCP_NODELAY                       = 0x1\n\tTCP_NOPUSH                        = 0x10\n\tTCP_SACKHOLE_LIMIT                = 0x80\n\tTCP_SACK_ENABLE                   = 0x8\n\tTCSAFLUSH                         = 0x2\n\tTIMER_ABSTIME                     = 0x1\n\tTIMER_RELTIME                     = 0x0\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCHKVERAUTH                    = 0x2000741e\n\tTIOCCLRVERAUTH                    = 0x2000741d\n\tTIOCCONS                          = 0x80047462\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLAG_CLOCAL                   = 0x2\n\tTIOCFLAG_CRTSCTS                  = 0x4\n\tTIOCFLAG_MDMBUF                   = 0x8\n\tTIOCFLAG_PPS                      = 0x10\n\tTIOCFLAG_SOFTCAR                  = 0x1\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGFLAGS                        = 0x4004745d\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGSID                          = 0x40047463\n\tTIOCGTSTAMP                       = 0x4010745b\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMODG                          = 0x4004746a\n\tTIOCMODS                          = 0x8004746d\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSETVERAUTH                    = 0x8004741c\n\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x8004745f\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x20007465\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSTSTAMP                       = 0x8008745a\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\n\tTIOCUCNTL_CBRK                    = 0x7a\n\tTIOCUCNTL_SBRK                    = 0x7b\n\tTOSTOP                            = 0x400000\n\tUTIME_NOW                         = -0x2\n\tUTIME_OMIT                        = -0x1\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVM_ANONMIN                        = 0x7\n\tVM_LOADAVG                        = 0x2\n\tVM_MALLOC_CONF                    = 0xc\n\tVM_MAXID                          = 0xd\n\tVM_MAXSLP                         = 0xa\n\tVM_METER                          = 0x1\n\tVM_NKMEMPAGES                     = 0x6\n\tVM_PSSTRINGS                      = 0x3\n\tVM_SWAPENCRYPT                    = 0x5\n\tVM_USPACE                         = 0xb\n\tVM_UVMEXP                         = 0x4\n\tVM_VNODEMIN                       = 0x9\n\tVM_VTEXTMIN                       = 0x8\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWALTSIG                           = 0x4\n\tWCONTINUED                        = 0x8\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\n\tWUNTRACED                         = 0x2\n\tXCASE                             = 0x1000000\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x5c)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x58)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x59)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEIPSEC          = syscall.Errno(0x52)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x5f)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMEDIUMTYPE     = syscall.Errno(0x56)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x53)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOMEDIUM       = syscall.Errno(0x55)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x5a)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5d)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x5b)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x57)\n\tEOWNERDEAD      = syscall.Errno(0x5e)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5f)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disk quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC program not available\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIPSEC\", \"IPsec processing failure\"},\n\t{83, \"ENOATTR\", \"attribute not found\"},\n\t{84, \"EILSEQ\", \"illegal byte sequence\"},\n\t{85, \"ENOMEDIUM\", \"no medium found\"},\n\t{86, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{87, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{88, \"ECANCELED\", \"operation canceled\"},\n\t{89, \"EIDRM\", \"identifier removed\"},\n\t{90, \"ENOMSG\", \"no message of desired type\"},\n\t{91, \"ENOTSUP\", \"not supported\"},\n\t{92, \"EBADMSG\", \"bad message\"},\n\t{93, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{94, \"EOWNERDEAD\", \"previous owner died\"},\n\t{95, \"ELAST\", \"protocol error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"thread AST\"},\n\t{28672, \"SIGSTKSZ\", \"unknown signal\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_openbsd_mips64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mips64 && openbsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_BLUETOOTH                      = 0x20\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_ENCAP                          = 0x1c\n\tAF_HYLINK                         = 0xf\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x18\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_KEY                            = 0x1e\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x24\n\tAF_MPLS                           = 0x21\n\tAF_NATM                           = 0x1b\n\tAF_NS                             = 0x6\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x11\n\tAF_SIP                            = 0x1d\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tALTWERASE                         = 0x200\n\tARPHRD_ETHER                      = 0x1\n\tARPHRD_FRELAY                     = 0xf\n\tARPHRD_IEEE1394                   = 0x18\n\tARPHRD_IEEE802                    = 0x6\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB9600                             = 0x2580\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDIRFILT                      = 0x4004427c\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc010427b\n\tBIOCGETIF                         = 0x4020426b\n\tBIOCGFILDROP                      = 0x40044278\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRSIG                         = 0x40044273\n\tBIOCGRTIMEOUT                     = 0x4010426e\n\tBIOCGSTATS                        = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCLOCK                          = 0x20004276\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDIRFILT                      = 0x8004427d\n\tBIOCSDLT                          = 0x8004427a\n\tBIOCSETF                          = 0x80104267\n\tBIOCSETIF                         = 0x8020426c\n\tBIOCSETWF                         = 0x80104277\n\tBIOCSFILDROP                      = 0x80044279\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRSIG                         = 0x80044272\n\tBIOCSRTIMEOUT                     = 0x8010426d\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DIRECTION_IN                  = 0x1\n\tBPF_DIRECTION_OUT                 = 0x2\n\tBPF_DIV                           = 0x30\n\tBPF_FILDROP_CAPTURE               = 0x1\n\tBPF_FILDROP_DROP                  = 0x2\n\tBPF_FILDROP_PASS                  = 0x0\n\tBPF_F_DIR_IN                      = 0x10\n\tBPF_F_DIR_MASK                    = 0x30\n\tBPF_F_DIR_OUT                     = 0x20\n\tBPF_F_DIR_SHIFT                   = 0x4\n\tBPF_F_FLOWID                      = 0x8\n\tBPF_F_PRI_MASK                    = 0x7\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x200000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RND                           = 0xc0\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLOCK_BOOTTIME                    = 0x6\n\tCLOCK_MONOTONIC                   = 0x3\n\tCLOCK_PROCESS_CPUTIME_ID          = 0x2\n\tCLOCK_REALTIME                    = 0x0\n\tCLOCK_THREAD_CPUTIME_ID           = 0x4\n\tCLOCK_UPTIME                      = 0x5\n\tCPUSTATES                         = 0x6\n\tCP_IDLE                           = 0x5\n\tCP_INTR                           = 0x4\n\tCP_NICE                           = 0x1\n\tCP_SPIN                           = 0x3\n\tCP_SYS                            = 0x2\n\tCP_USER                           = 0x0\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x10000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0xff\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tDIOCADDQUEUE                      = 0xc110445d\n\tDIOCADDRULE                       = 0xcd604404\n\tDIOCADDSTATE                      = 0xc1084425\n\tDIOCCHANGERULE                    = 0xcd60441a\n\tDIOCCLRIFFLAG                     = 0xc028445a\n\tDIOCCLRSRCNODES                   = 0x20004455\n\tDIOCCLRSTATES                     = 0xc0e04412\n\tDIOCCLRSTATUS                     = 0xc0284416\n\tDIOCGETLIMIT                      = 0xc0084427\n\tDIOCGETQSTATS                     = 0xc1204460\n\tDIOCGETQUEUE                      = 0xc110445f\n\tDIOCGETQUEUES                     = 0xc110445e\n\tDIOCGETRULE                       = 0xcd604407\n\tDIOCGETRULES                      = 0xcd604406\n\tDIOCGETRULESET                    = 0xc444443b\n\tDIOCGETRULESETS                   = 0xc444443a\n\tDIOCGETSRCNODES                   = 0xc0104454\n\tDIOCGETSTATE                      = 0xc1084413\n\tDIOCGETSTATES                     = 0xc0104419\n\tDIOCGETSTATUS                     = 0xc1e84415\n\tDIOCGETSYNFLWATS                  = 0xc0084463\n\tDIOCGETTIMEOUT                    = 0xc008441e\n\tDIOCIGETIFACES                    = 0xc0284457\n\tDIOCKILLSRCNODES                  = 0xc080445b\n\tDIOCKILLSTATES                    = 0xc0e04429\n\tDIOCNATLOOK                       = 0xc0504417\n\tDIOCOSFPADD                       = 0xc088444f\n\tDIOCOSFPFLUSH                     = 0x2000444e\n\tDIOCOSFPGET                       = 0xc0884450\n\tDIOCRADDADDRS                     = 0xc4504443\n\tDIOCRADDTABLES                    = 0xc450443d\n\tDIOCRCLRADDRS                     = 0xc4504442\n\tDIOCRCLRASTATS                    = 0xc4504448\n\tDIOCRCLRTABLES                    = 0xc450443c\n\tDIOCRCLRTSTATS                    = 0xc4504441\n\tDIOCRDELADDRS                     = 0xc4504444\n\tDIOCRDELTABLES                    = 0xc450443e\n\tDIOCRGETADDRS                     = 0xc4504446\n\tDIOCRGETASTATS                    = 0xc4504447\n\tDIOCRGETTABLES                    = 0xc450443f\n\tDIOCRGETTSTATS                    = 0xc4504440\n\tDIOCRINADEFINE                    = 0xc450444d\n\tDIOCRSETADDRS                     = 0xc4504445\n\tDIOCRSETTFLAGS                    = 0xc450444a\n\tDIOCRTSTADDRS                     = 0xc4504449\n\tDIOCSETDEBUG                      = 0xc0044418\n\tDIOCSETHOSTID                     = 0xc0044456\n\tDIOCSETIFFLAG                     = 0xc0284459\n\tDIOCSETLIMIT                      = 0xc0084428\n\tDIOCSETREASS                      = 0xc004445c\n\tDIOCSETSTATUSIF                   = 0xc0284414\n\tDIOCSETSYNCOOKIES                 = 0xc0014462\n\tDIOCSETSYNFLWATS                  = 0xc0084461\n\tDIOCSETTIMEOUT                    = 0xc008441d\n\tDIOCSTART                         = 0x20004401\n\tDIOCSTOP                          = 0x20004402\n\tDIOCXBEGIN                        = 0xc0104451\n\tDIOCXCOMMIT                       = 0xc0104452\n\tDIOCXROLLBACK                     = 0xc0104453\n\tDLT_ARCNET                        = 0x7\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AX25                          = 0x3\n\tDLT_CHAOS                         = 0x5\n\tDLT_C_HDLC                        = 0x68\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0xd\n\tDLT_FDDI                          = 0xa\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_LOOP                          = 0xc\n\tDLT_MPLS                          = 0xdb\n\tDLT_NULL                          = 0x0\n\tDLT_OPENFLOW                      = 0x10b\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0x10\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PRONET                        = 0x4\n\tDLT_RAW                           = 0xe\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xf\n\tDLT_USBPCAP                       = 0xf9\n\tDLT_USER0                         = 0x93\n\tDLT_USER1                         = 0x94\n\tDLT_USER10                        = 0x9d\n\tDLT_USER11                        = 0x9e\n\tDLT_USER12                        = 0x9f\n\tDLT_USER13                        = 0xa0\n\tDLT_USER14                        = 0xa1\n\tDLT_USER15                        = 0xa2\n\tDLT_USER2                         = 0x95\n\tDLT_USER3                         = 0x96\n\tDLT_USER4                         = 0x97\n\tDLT_USER5                         = 0x98\n\tDLT_USER6                         = 0x99\n\tDLT_USER7                         = 0x9a\n\tDLT_USER8                         = 0x9b\n\tDLT_USER9                         = 0x9c\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEMT_TAGOVF                        = 0x1\n\tEMUL_ENABLED                      = 0x1\n\tEMUL_NATIVE                       = 0x2\n\tENDRUNDISC                        = 0x9\n\tETH64_8021_RSVD_MASK              = 0xfffffffffff0\n\tETH64_8021_RSVD_PREFIX            = 0x180c2000000\n\tETHERMIN                          = 0x2e\n\tETHERMTU                          = 0x5dc\n\tETHERTYPE_8023                    = 0x4\n\tETHERTYPE_AARP                    = 0x80f3\n\tETHERTYPE_ACCTON                  = 0x8390\n\tETHERTYPE_AEONIC                  = 0x8036\n\tETHERTYPE_ALPHA                   = 0x814a\n\tETHERTYPE_AMBER                   = 0x6008\n\tETHERTYPE_AMOEBA                  = 0x8145\n\tETHERTYPE_AOE                     = 0x88a2\n\tETHERTYPE_APOLLO                  = 0x80f7\n\tETHERTYPE_APOLLODOMAIN            = 0x8019\n\tETHERTYPE_APPLETALK               = 0x809b\n\tETHERTYPE_APPLITEK                = 0x80c7\n\tETHERTYPE_ARGONAUT                = 0x803a\n\tETHERTYPE_ARP                     = 0x806\n\tETHERTYPE_AT                      = 0x809b\n\tETHERTYPE_ATALK                   = 0x809b\n\tETHERTYPE_ATOMIC                  = 0x86df\n\tETHERTYPE_ATT                     = 0x8069\n\tETHERTYPE_ATTSTANFORD             = 0x8008\n\tETHERTYPE_AUTOPHON                = 0x806a\n\tETHERTYPE_AXIS                    = 0x8856\n\tETHERTYPE_BCLOOP                  = 0x9003\n\tETHERTYPE_BOFL                    = 0x8102\n\tETHERTYPE_CABLETRON               = 0x7034\n\tETHERTYPE_CHAOS                   = 0x804\n\tETHERTYPE_COMDESIGN               = 0x806c\n\tETHERTYPE_COMPUGRAPHIC            = 0x806d\n\tETHERTYPE_COUNTERPOINT            = 0x8062\n\tETHERTYPE_CRONUS                  = 0x8004\n\tETHERTYPE_CRONUSVLN               = 0x8003\n\tETHERTYPE_DCA                     = 0x1234\n\tETHERTYPE_DDE                     = 0x807b\n\tETHERTYPE_DEBNI                   = 0xaaaa\n\tETHERTYPE_DECAM                   = 0x8048\n\tETHERTYPE_DECCUST                 = 0x6006\n\tETHERTYPE_DECDIAG                 = 0x6005\n\tETHERTYPE_DECDNS                  = 0x803c\n\tETHERTYPE_DECDTS                  = 0x803e\n\tETHERTYPE_DECEXPER                = 0x6000\n\tETHERTYPE_DECLAST                 = 0x8041\n\tETHERTYPE_DECLTM                  = 0x803f\n\tETHERTYPE_DECMUMPS                = 0x6009\n\tETHERTYPE_DECNETBIOS              = 0x8040\n\tETHERTYPE_DELTACON                = 0x86de\n\tETHERTYPE_DIDDLE                  = 0x4321\n\tETHERTYPE_DLOG1                   = 0x660\n\tETHERTYPE_DLOG2                   = 0x661\n\tETHERTYPE_DN                      = 0x6003\n\tETHERTYPE_DOGFIGHT                = 0x1989\n\tETHERTYPE_DSMD                    = 0x8039\n\tETHERTYPE_EAPOL                   = 0x888e\n\tETHERTYPE_ECMA                    = 0x803\n\tETHERTYPE_ENCRYPT                 = 0x803d\n\tETHERTYPE_ES                      = 0x805d\n\tETHERTYPE_EXCELAN                 = 0x8010\n\tETHERTYPE_EXPERDATA               = 0x8049\n\tETHERTYPE_FLIP                    = 0x8146\n\tETHERTYPE_FLOWCONTROL             = 0x8808\n\tETHERTYPE_FRARP                   = 0x808\n\tETHERTYPE_GENDYN                  = 0x8068\n\tETHERTYPE_HAYES                   = 0x8130\n\tETHERTYPE_HIPPI_FP                = 0x8180\n\tETHERTYPE_HITACHI                 = 0x8820\n\tETHERTYPE_HP                      = 0x8005\n\tETHERTYPE_IEEEPUP                 = 0xa00\n\tETHERTYPE_IEEEPUPAT               = 0xa01\n\tETHERTYPE_IMLBL                   = 0x4c42\n\tETHERTYPE_IMLBLDIAG               = 0x424c\n\tETHERTYPE_IP                      = 0x800\n\tETHERTYPE_IPAS                    = 0x876c\n\tETHERTYPE_IPV6                    = 0x86dd\n\tETHERTYPE_IPX                     = 0x8137\n\tETHERTYPE_IPXNEW                  = 0x8037\n\tETHERTYPE_KALPANA                 = 0x8582\n\tETHERTYPE_LANBRIDGE               = 0x8038\n\tETHERTYPE_LANPROBE                = 0x8888\n\tETHERTYPE_LAT                     = 0x6004\n\tETHERTYPE_LBACK                   = 0x9000\n\tETHERTYPE_LITTLE                  = 0x8060\n\tETHERTYPE_LLDP                    = 0x88cc\n\tETHERTYPE_LOGICRAFT               = 0x8148\n\tETHERTYPE_LOOPBACK                = 0x9000\n\tETHERTYPE_MACSEC                  = 0x88e5\n\tETHERTYPE_MATRA                   = 0x807a\n\tETHERTYPE_MAX                     = 0xffff\n\tETHERTYPE_MERIT                   = 0x807c\n\tETHERTYPE_MICP                    = 0x873a\n\tETHERTYPE_MOPDL                   = 0x6001\n\tETHERTYPE_MOPRC                   = 0x6002\n\tETHERTYPE_MOTOROLA                = 0x818d\n\tETHERTYPE_MPLS                    = 0x8847\n\tETHERTYPE_MPLS_MCAST              = 0x8848\n\tETHERTYPE_MUMPS                   = 0x813f\n\tETHERTYPE_NBPCC                   = 0x3c04\n\tETHERTYPE_NBPCLAIM                = 0x3c09\n\tETHERTYPE_NBPCLREQ                = 0x3c05\n\tETHERTYPE_NBPCLRSP                = 0x3c06\n\tETHERTYPE_NBPCREQ                 = 0x3c02\n\tETHERTYPE_NBPCRSP                 = 0x3c03\n\tETHERTYPE_NBPDG                   = 0x3c07\n\tETHERTYPE_NBPDGB                  = 0x3c08\n\tETHERTYPE_NBPDLTE                 = 0x3c0a\n\tETHERTYPE_NBPRAR                  = 0x3c0c\n\tETHERTYPE_NBPRAS                  = 0x3c0b\n\tETHERTYPE_NBPRST                  = 0x3c0d\n\tETHERTYPE_NBPSCD                  = 0x3c01\n\tETHERTYPE_NBPVCD                  = 0x3c00\n\tETHERTYPE_NBS                     = 0x802\n\tETHERTYPE_NCD                     = 0x8149\n\tETHERTYPE_NESTAR                  = 0x8006\n\tETHERTYPE_NETBEUI                 = 0x8191\n\tETHERTYPE_NHRP                    = 0x2001\n\tETHERTYPE_NOVELL                  = 0x8138\n\tETHERTYPE_NS                      = 0x600\n\tETHERTYPE_NSAT                    = 0x601\n\tETHERTYPE_NSCOMPAT                = 0x807\n\tETHERTYPE_NSH                     = 0x984f\n\tETHERTYPE_NTRAILER                = 0x10\n\tETHERTYPE_OS9                     = 0x7007\n\tETHERTYPE_OS9NET                  = 0x7009\n\tETHERTYPE_PACER                   = 0x80c6\n\tETHERTYPE_PBB                     = 0x88e7\n\tETHERTYPE_PCS                     = 0x4242\n\tETHERTYPE_PLANNING                = 0x8044\n\tETHERTYPE_PPP                     = 0x880b\n\tETHERTYPE_PPPOE                   = 0x8864\n\tETHERTYPE_PPPOEDISC               = 0x8863\n\tETHERTYPE_PRIMENTS                = 0x7031\n\tETHERTYPE_PUP                     = 0x200\n\tETHERTYPE_PUPAT                   = 0x200\n\tETHERTYPE_QINQ                    = 0x88a8\n\tETHERTYPE_RACAL                   = 0x7030\n\tETHERTYPE_RATIONAL                = 0x8150\n\tETHERTYPE_RAWFR                   = 0x6559\n\tETHERTYPE_RCL                     = 0x1995\n\tETHERTYPE_RDP                     = 0x8739\n\tETHERTYPE_RETIX                   = 0x80f2\n\tETHERTYPE_REVARP                  = 0x8035\n\tETHERTYPE_SCA                     = 0x6007\n\tETHERTYPE_SECTRA                  = 0x86db\n\tETHERTYPE_SECUREDATA              = 0x876d\n\tETHERTYPE_SGITW                   = 0x817e\n\tETHERTYPE_SG_BOUNCE               = 0x8016\n\tETHERTYPE_SG_DIAG                 = 0x8013\n\tETHERTYPE_SG_NETGAMES             = 0x8014\n\tETHERTYPE_SG_RESV                 = 0x8015\n\tETHERTYPE_SIMNET                  = 0x5208\n\tETHERTYPE_SLOW                    = 0x8809\n\tETHERTYPE_SNA                     = 0x80d5\n\tETHERTYPE_SNMP                    = 0x814c\n\tETHERTYPE_SONIX                   = 0xfaf5\n\tETHERTYPE_SPIDER                  = 0x809f\n\tETHERTYPE_SPRITE                  = 0x500\n\tETHERTYPE_STP                     = 0x8181\n\tETHERTYPE_TALARIS                 = 0x812b\n\tETHERTYPE_TALARISMC               = 0x852b\n\tETHERTYPE_TCPCOMP                 = 0x876b\n\tETHERTYPE_TCPSM                   = 0x9002\n\tETHERTYPE_TEC                     = 0x814f\n\tETHERTYPE_TIGAN                   = 0x802f\n\tETHERTYPE_TRAIL                   = 0x1000\n\tETHERTYPE_TRANSETHER              = 0x6558\n\tETHERTYPE_TYMSHARE                = 0x802e\n\tETHERTYPE_UBBST                   = 0x7005\n\tETHERTYPE_UBDEBUG                 = 0x900\n\tETHERTYPE_UBDIAGLOOP              = 0x7002\n\tETHERTYPE_UBDL                    = 0x7000\n\tETHERTYPE_UBNIU                   = 0x7001\n\tETHERTYPE_UBNMC                   = 0x7003\n\tETHERTYPE_VALID                   = 0x1600\n\tETHERTYPE_VARIAN                  = 0x80dd\n\tETHERTYPE_VAXELN                  = 0x803b\n\tETHERTYPE_VEECO                   = 0x8067\n\tETHERTYPE_VEXP                    = 0x805b\n\tETHERTYPE_VGLAB                   = 0x8131\n\tETHERTYPE_VINES                   = 0xbad\n\tETHERTYPE_VINESECHO               = 0xbaf\n\tETHERTYPE_VINESLOOP               = 0xbae\n\tETHERTYPE_VITAL                   = 0xff00\n\tETHERTYPE_VLAN                    = 0x8100\n\tETHERTYPE_VLTLMAN                 = 0x8080\n\tETHERTYPE_VPROD                   = 0x805c\n\tETHERTYPE_VURESERVED              = 0x8147\n\tETHERTYPE_WATERLOO                = 0x8130\n\tETHERTYPE_WELLFLEET               = 0x8103\n\tETHERTYPE_X25                     = 0x805\n\tETHERTYPE_X75                     = 0x801\n\tETHERTYPE_XNSSM                   = 0x9001\n\tETHERTYPE_XTP                     = 0x817d\n\tETHER_ADDR_LEN                    = 0x6\n\tETHER_ALIGN                       = 0x2\n\tETHER_CRC_LEN                     = 0x4\n\tETHER_CRC_POLY_BE                 = 0x4c11db6\n\tETHER_CRC_POLY_LE                 = 0xedb88320\n\tETHER_HDR_LEN                     = 0xe\n\tETHER_MAX_DIX_LEN                 = 0x600\n\tETHER_MAX_HARDMTU_LEN             = 0xff9b\n\tETHER_MAX_LEN                     = 0x5ee\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = -0x3\n\tEVFILT_DEVICE                     = -0x8\n\tEVFILT_EXCEPT                     = -0x9\n\tEVFILT_PROC                       = -0x5\n\tEVFILT_READ                       = -0x1\n\tEVFILT_SIGNAL                     = -0x6\n\tEVFILT_SYSCOUNT                   = 0x9\n\tEVFILT_TIMER                      = -0x7\n\tEVFILT_VNODE                      = -0x4\n\tEVFILT_WRITE                      = -0x2\n\tEVL_ENCAPLEN                      = 0x4\n\tEVL_PRIO_BITS                     = 0xd\n\tEVL_PRIO_MAX                      = 0x7\n\tEVL_VLID_MASK                     = 0xfff\n\tEVL_VLID_MAX                      = 0xffe\n\tEVL_VLID_MIN                      = 0x1\n\tEVL_VLID_NULL                     = 0x0\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_DISPATCH                       = 0x80\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_RECEIPT                        = 0x40\n\tEV_SYSFLAGS                       = 0xf800\n\tEXTA                              = 0x4b00\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x400\n\tFLUSHO                            = 0x800000\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0xa\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETOWN                          = 0x5\n\tF_ISATTY                          = 0xb\n\tF_OK                              = 0x0\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x8e52\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_STATICARP                     = 0x20\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BLUETOOTH                     = 0xf8\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf7\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DUMMY                         = 0xf1\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ECONET                        = 0xce\n\tIFT_ENC                           = 0xf4\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf3\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INFINIBAND                    = 0xc7\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LINEGROUP                     = 0xd2\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MBIM                          = 0xfa\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFLOW                         = 0xf9\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_PON155                        = 0xcf\n\tIFT_PON622                        = 0xd0\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPATM                       = 0xc5\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf2\n\tIFT_Q2931                         = 0xc9\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SIPSIG                        = 0xcc\n\tIFT_SIPTG                         = 0xcb\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TELINK                        = 0xc8\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VIRTUALTG                     = 0xca\n\tIFT_VOICEDID                      = 0xd5\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEEMFGD                    = 0xd3\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFGDEANA                  = 0xd4\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERCABLE                = 0xc6\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_WIREGUARD                     = 0xfb\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIN_RFC3021_HOST                   = 0x1\n\tIN_RFC3021_NET                    = 0xfffffffe\n\tIN_RFC3021_NSHIFT                 = 0x1f\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_DIVERT                    = 0x102\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x103\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_MPLS                      = 0x89\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_SCTP                      = 0x84\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_UDPLITE                   = 0x88\n\tIPV6_AUTH_LEVEL                   = 0x35\n\tIPV6_AUTOFLOWLABEL                = 0x3b\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_ESP_NETWORK_LEVEL            = 0x37\n\tIPV6_ESP_TRANS_LEVEL              = 0x36\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xfffffff\n\tIPV6_FLOWLABEL_MASK               = 0xfffff\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPCOMP_LEVEL                 = 0x3c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MINHOPCOUNT                  = 0x41\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_OPTIONS                      = 0x1\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PIPEX                        = 0x3f\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVDSTPORT                  = 0x40\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTABLE                       = 0x1021\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_AUTH_LEVEL                     = 0x14\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_ESP_NETWORK_LEVEL              = 0x16\n\tIP_ESP_TRANS_LEVEL                = 0x15\n\tIP_HDRINCL                        = 0x2\n\tIP_IPCOMP_LEVEL                   = 0x1d\n\tIP_IPDEFTTL                       = 0x25\n\tIP_IPSECFLOWINFO                  = 0x24\n\tIP_IPSEC_LOCAL_AUTH               = 0x1b\n\tIP_IPSEC_LOCAL_CRED               = 0x19\n\tIP_IPSEC_LOCAL_ID                 = 0x17\n\tIP_IPSEC_REMOTE_AUTH              = 0x1c\n\tIP_IPSEC_REMOTE_CRED              = 0x1a\n\tIP_IPSEC_REMOTE_ID                = 0x18\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0xfff\n\tIP_MF                             = 0x2000\n\tIP_MINTTL                         = 0x20\n\tIP_MIN_MEMBERSHIPS                = 0xf\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PIPEX                          = 0x22\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVDSTPORT                    = 0x21\n\tIP_RECVIF                         = 0x1e\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVRTABLE                     = 0x23\n\tIP_RECVTTL                        = 0x1f\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_RTABLE                         = 0x1021\n\tIP_SENDSRCADDR                    = 0x7\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tITIMER_PROF                       = 0x2\n\tITIMER_REAL                       = 0x0\n\tITIMER_VIRTUAL                    = 0x1\n\tIUCLC                             = 0x1000\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLCNT_OVERLOAD_FLUSH               = 0x6\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x6\n\tMADV_NORMAL                       = 0x0\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SPACEAVAIL                   = 0x5\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ANON                          = 0x1000\n\tMAP_ANONYMOUS                     = 0x1000\n\tMAP_CONCEAL                       = 0x8000\n\tMAP_COPY                          = 0x2\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_FLAGMASK                      = 0xfff7\n\tMAP_HASSEMAPHORE                  = 0x0\n\tMAP_INHERIT                       = 0x0\n\tMAP_INHERIT_COPY                  = 0x1\n\tMAP_INHERIT_NONE                  = 0x2\n\tMAP_INHERIT_SHARE                 = 0x0\n\tMAP_INHERIT_ZERO                  = 0x3\n\tMAP_NOEXTEND                      = 0x0\n\tMAP_NORESERVE                     = 0x0\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x0\n\tMAP_SHARED                        = 0x1\n\tMAP_STACK                         = 0x4000\n\tMAP_TRYFIXED                      = 0x0\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DELEXPORT                     = 0x20000\n\tMNT_DOOMED                        = 0x8000000\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_FORCE                         = 0x80000\n\tMNT_LAZY                          = 0x3\n\tMNT_LOCAL                         = 0x1000\n\tMNT_NOATIME                       = 0x8000\n\tMNT_NODEV                         = 0x10\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOPERM                        = 0x20\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOWAIT                        = 0x2\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x4000000\n\tMNT_STALLED                       = 0x100000\n\tMNT_SWAPPABLE                     = 0x200000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0x400ffff\n\tMNT_WAIT                          = 0x1\n\tMNT_WANTRDWR                      = 0x2000000\n\tMNT_WXALLOWED                     = 0x800\n\tMOUNT_AFS                         = \"afs\"\n\tMOUNT_CD9660                      = \"cd9660\"\n\tMOUNT_EXT2FS                      = \"ext2fs\"\n\tMOUNT_FFS                         = \"ffs\"\n\tMOUNT_FUSEFS                      = \"fuse\"\n\tMOUNT_MFS                         = \"mfs\"\n\tMOUNT_MSDOS                       = \"msdos\"\n\tMOUNT_NCPFS                       = \"ncpfs\"\n\tMOUNT_NFS                         = \"nfs\"\n\tMOUNT_NTFS                        = \"ntfs\"\n\tMOUNT_TMPFS                       = \"tmpfs\"\n\tMOUNT_UDF                         = \"udf\"\n\tMOUNT_UFS                         = \"ffs\"\n\tMSG_BCAST                         = 0x100\n\tMSG_CMSG_CLOEXEC                  = 0x800\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOR                           = 0x8\n\tMSG_MCAST                         = 0x200\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_TRUNC                         = 0x10\n\tMSG_WAITALL                       = 0x40\n\tMSG_WAITFORONE                    = 0x1000\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x4\n\tMS_SYNC                           = 0x2\n\tNAME_MAX                          = 0xff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x3\n\tNET_RT_IFNAMES                    = 0x6\n\tNET_RT_MAXID                      = 0x8\n\tNET_RT_SOURCE                     = 0x7\n\tNET_RT_STATS                      = 0x4\n\tNET_RT_TABLE                      = 0x5\n\tNFDBITS                           = 0x20\n\tNOFLSH                            = 0x80000000\n\tNOKERNINFO                        = 0x2000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHANGE                       = 0x1\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EOF                          = 0x2\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_OOB                          = 0x4\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_TRUNCATE                     = 0x80\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOLCUC                             = 0x20\n\tONLCR                             = 0x2\n\tONLRET                            = 0x80\n\tONOCR                             = 0x40\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tOXTABS                            = 0x4\n\tO_ACCMODE                         = 0x3\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x10000\n\tO_CREAT                           = 0x200\n\tO_DIRECTORY                       = 0x20000\n\tO_DSYNC                           = 0x80\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_RSYNC                           = 0x80\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPF_FLUSH                          = 0x1\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BFD                          = 0xb\n\tRTAX_BRD                          = 0x7\n\tRTAX_DNS                          = 0xc\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_LABEL                        = 0xa\n\tRTAX_MAX                          = 0xf\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_SEARCH                       = 0xe\n\tRTAX_SRC                          = 0x8\n\tRTAX_SRCMASK                      = 0x9\n\tRTAX_STATIC                       = 0xd\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BFD                           = 0x800\n\tRTA_BRD                           = 0x80\n\tRTA_DNS                           = 0x1000\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_LABEL                         = 0x400\n\tRTA_NETMASK                       = 0x4\n\tRTA_SEARCH                        = 0x4000\n\tRTA_SRC                           = 0x100\n\tRTA_SRCMASK                       = 0x200\n\tRTA_STATIC                        = 0x2000\n\tRTF_ANNOUNCE                      = 0x4000\n\tRTF_BFD                           = 0x1000000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_BROADCAST                     = 0x400000\n\tRTF_CACHED                        = 0x20000\n\tRTF_CLONED                        = 0x10000\n\tRTF_CLONING                       = 0x100\n\tRTF_CONNECTED                     = 0x800000\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_FMASK                         = 0x110fc08\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_LOCAL                         = 0x200000\n\tRTF_MODIFIED                      = 0x20\n\tRTF_MPATH                         = 0x40000\n\tRTF_MPLS                          = 0x100000\n\tRTF_MULTICAST                     = 0x200\n\tRTF_PERMANENT_ARP                 = 0x2000\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_PROTO3                        = 0x2000\n\tRTF_REJECT                        = 0x8\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_USETRAILERS                   = 0x8000\n\tRTM_80211INFO                     = 0x15\n\tRTM_ADD                           = 0x1\n\tRTM_BFD                           = 0x12\n\tRTM_CHANGE                        = 0x3\n\tRTM_CHGADDRATTR                   = 0x14\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_DESYNC                        = 0x10\n\tRTM_GET                           = 0x4\n\tRTM_IFANNOUNCE                    = 0xf\n\tRTM_IFINFO                        = 0xe\n\tRTM_INVALIDATE                    = 0x11\n\tRTM_LOSING                        = 0x5\n\tRTM_MAXSIZE                       = 0x800\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_PROPOSAL                      = 0x13\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_SOURCE                        = 0x16\n\tRTM_VERSION                       = 0x5\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRT_TABLEID_BITS                   = 0x8\n\tRT_TABLEID_MASK                   = 0xff\n\tRT_TABLEID_MAX                    = 0xff\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tRUSAGE_THREAD                     = 0x1\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x4\n\tSEEK_CUR                          = 0x1\n\tSEEK_END                          = 0x2\n\tSEEK_SET                          = 0x0\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80206931\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCAIFGROUP                      = 0x80286987\n\tSIOCATMARK                        = 0x40047307\n\tSIOCBRDGADD                       = 0x8060693c\n\tSIOCBRDGADDL                      = 0x80606949\n\tSIOCBRDGADDS                      = 0x80606941\n\tSIOCBRDGARL                       = 0x808c694d\n\tSIOCBRDGDADDR                     = 0x81286947\n\tSIOCBRDGDEL                       = 0x8060693d\n\tSIOCBRDGDELS                      = 0x80606942\n\tSIOCBRDGFLUSH                     = 0x80606948\n\tSIOCBRDGFRL                       = 0x808c694e\n\tSIOCBRDGGCACHE                    = 0xc0146941\n\tSIOCBRDGGFD                       = 0xc0146952\n\tSIOCBRDGGHT                       = 0xc0146951\n\tSIOCBRDGGIFFLGS                   = 0xc060693e\n\tSIOCBRDGGMA                       = 0xc0146953\n\tSIOCBRDGGPARAM                    = 0xc0406958\n\tSIOCBRDGGPRI                      = 0xc0146950\n\tSIOCBRDGGRL                       = 0xc030694f\n\tSIOCBRDGGTO                       = 0xc0146946\n\tSIOCBRDGIFS                       = 0xc0606942\n\tSIOCBRDGRTS                       = 0xc0206943\n\tSIOCBRDGSADDR                     = 0xc1286944\n\tSIOCBRDGSCACHE                    = 0x80146940\n\tSIOCBRDGSFD                       = 0x80146952\n\tSIOCBRDGSHT                       = 0x80146951\n\tSIOCBRDGSIFCOST                   = 0x80606955\n\tSIOCBRDGSIFFLGS                   = 0x8060693f\n\tSIOCBRDGSIFPRIO                   = 0x80606954\n\tSIOCBRDGSIFPROT                   = 0x8060694a\n\tSIOCBRDGSMA                       = 0x80146953\n\tSIOCBRDGSPRI                      = 0x80146950\n\tSIOCBRDGSPROTO                    = 0x8014695a\n\tSIOCBRDGSTO                       = 0x80146945\n\tSIOCBRDGSTXHC                     = 0x80146959\n\tSIOCDELLABEL                      = 0x80206997\n\tSIOCDELMULTI                      = 0x80206932\n\tSIOCDIFADDR                       = 0x80206919\n\tSIOCDIFGROUP                      = 0x80286989\n\tSIOCDIFPARENT                     = 0x802069b4\n\tSIOCDIFPHYADDR                    = 0x80206949\n\tSIOCDPWE3NEIGHBOR                 = 0x802069de\n\tSIOCDVNETID                       = 0x802069af\n\tSIOCGETKALIVE                     = 0xc01869a4\n\tSIOCGETLABEL                      = 0x8020699a\n\tSIOCGETMPWCFG                     = 0xc02069ae\n\tSIOCGETPFLOW                      = 0xc02069fe\n\tSIOCGETPFSYNC                     = 0xc02069f8\n\tSIOCGETSGCNT                      = 0xc0207534\n\tSIOCGETVIFCNT                     = 0xc0287533\n\tSIOCGETVLAN                       = 0xc0206990\n\tSIOCGIFADDR                       = 0xc0206921\n\tSIOCGIFBRDADDR                    = 0xc0206923\n\tSIOCGIFCONF                       = 0xc0106924\n\tSIOCGIFDATA                       = 0xc020691b\n\tSIOCGIFDESCR                      = 0xc0206981\n\tSIOCGIFDSTADDR                    = 0xc0206922\n\tSIOCGIFFLAGS                      = 0xc0206911\n\tSIOCGIFGATTR                      = 0xc028698b\n\tSIOCGIFGENERIC                    = 0xc020693a\n\tSIOCGIFGLIST                      = 0xc028698d\n\tSIOCGIFGMEMB                      = 0xc028698a\n\tSIOCGIFGROUP                      = 0xc0286988\n\tSIOCGIFHARDMTU                    = 0xc02069a5\n\tSIOCGIFLLPRIO                     = 0xc02069b6\n\tSIOCGIFMEDIA                      = 0xc0406938\n\tSIOCGIFMETRIC                     = 0xc0206917\n\tSIOCGIFMTU                        = 0xc020697e\n\tSIOCGIFNETMASK                    = 0xc0206925\n\tSIOCGIFPAIR                       = 0xc02069b1\n\tSIOCGIFPARENT                     = 0xc02069b3\n\tSIOCGIFPRIORITY                   = 0xc020699c\n\tSIOCGIFRDOMAIN                    = 0xc02069a0\n\tSIOCGIFRTLABEL                    = 0xc0206983\n\tSIOCGIFRXR                        = 0x802069aa\n\tSIOCGIFSFFPAGE                    = 0xc1126939\n\tSIOCGIFXFLAGS                     = 0xc020699e\n\tSIOCGLIFPHYADDR                   = 0xc218694b\n\tSIOCGLIFPHYDF                     = 0xc02069c2\n\tSIOCGLIFPHYECN                    = 0xc02069c8\n\tSIOCGLIFPHYRTABLE                 = 0xc02069a2\n\tSIOCGLIFPHYTTL                    = 0xc02069a9\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGPWE3                         = 0xc0206998\n\tSIOCGPWE3CTRLWORD                 = 0xc02069dc\n\tSIOCGPWE3FAT                      = 0xc02069dd\n\tSIOCGPWE3NEIGHBOR                 = 0xc21869de\n\tSIOCGRXHPRIO                      = 0xc02069db\n\tSIOCGSPPPPARAMS                   = 0xc0206994\n\tSIOCGTXHPRIO                      = 0xc02069c6\n\tSIOCGUMBINFO                      = 0xc02069be\n\tSIOCGUMBPARAM                     = 0xc02069c0\n\tSIOCGVH                           = 0xc02069f6\n\tSIOCGVNETFLOWID                   = 0xc02069c4\n\tSIOCGVNETID                       = 0xc02069a7\n\tSIOCIFAFATTACH                    = 0x801169ab\n\tSIOCIFAFDETACH                    = 0x801169ac\n\tSIOCIFCREATE                      = 0x8020697a\n\tSIOCIFDESTROY                     = 0x80206979\n\tSIOCIFGCLONERS                    = 0xc0106978\n\tSIOCSETKALIVE                     = 0x801869a3\n\tSIOCSETLABEL                      = 0x80206999\n\tSIOCSETMPWCFG                     = 0x802069ad\n\tSIOCSETPFLOW                      = 0x802069fd\n\tSIOCSETPFSYNC                     = 0x802069f7\n\tSIOCSETVLAN                       = 0x8020698f\n\tSIOCSIFADDR                       = 0x8020690c\n\tSIOCSIFBRDADDR                    = 0x80206913\n\tSIOCSIFDESCR                      = 0x80206980\n\tSIOCSIFDSTADDR                    = 0x8020690e\n\tSIOCSIFFLAGS                      = 0x80206910\n\tSIOCSIFGATTR                      = 0x8028698c\n\tSIOCSIFGENERIC                    = 0x80206939\n\tSIOCSIFLLADDR                     = 0x8020691f\n\tSIOCSIFLLPRIO                     = 0x802069b5\n\tSIOCSIFMEDIA                      = 0xc0206937\n\tSIOCSIFMETRIC                     = 0x80206918\n\tSIOCSIFMTU                        = 0x8020697f\n\tSIOCSIFNETMASK                    = 0x80206916\n\tSIOCSIFPAIR                       = 0x802069b0\n\tSIOCSIFPARENT                     = 0x802069b2\n\tSIOCSIFPRIORITY                   = 0x8020699b\n\tSIOCSIFRDOMAIN                    = 0x8020699f\n\tSIOCSIFRTLABEL                    = 0x80206982\n\tSIOCSIFXFLAGS                     = 0x8020699d\n\tSIOCSLIFPHYADDR                   = 0x8218694a\n\tSIOCSLIFPHYDF                     = 0x802069c1\n\tSIOCSLIFPHYECN                    = 0x802069c7\n\tSIOCSLIFPHYRTABLE                 = 0x802069a1\n\tSIOCSLIFPHYTTL                    = 0x802069a8\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSPWE3CTRLWORD                 = 0x802069dc\n\tSIOCSPWE3FAT                      = 0x802069dd\n\tSIOCSPWE3NEIGHBOR                 = 0x821869de\n\tSIOCSRXHPRIO                      = 0x802069db\n\tSIOCSSPPPPARAMS                   = 0x80206993\n\tSIOCSTXHPRIO                      = 0x802069c5\n\tSIOCSUMBPARAM                     = 0x802069bf\n\tSIOCSVH                           = 0xc02069f5\n\tSIOCSVNETFLOWID                   = 0x802069c3\n\tSIOCSVNETID                       = 0x802069a6\n\tSOCK_CLOEXEC                      = 0x8000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_DNS                          = 0x1000\n\tSOCK_NONBLOCK                     = 0x4000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_BINDANY                        = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DOMAIN                         = 0x1024\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NETPROC                        = 0x1020\n\tSO_OOBINLINE                      = 0x100\n\tSO_PEERCRED                       = 0x1022\n\tSO_PROTOCOL                       = 0x1025\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x1006\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_RTABLE                         = 0x1021\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x1005\n\tSO_SPLICE                         = 0x1023\n\tSO_TIMESTAMP                      = 0x800\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tSO_ZEROIZE                        = 0x2000\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tTCIFLUSH                          = 0x1\n\tTCIOFF                            = 0x3\n\tTCIOFLUSH                         = 0x3\n\tTCION                             = 0x4\n\tTCOFLUSH                          = 0x2\n\tTCOOFF                            = 0x1\n\tTCOON                             = 0x2\n\tTCPOPT_EOL                        = 0x0\n\tTCPOPT_MAXSEG                     = 0x2\n\tTCPOPT_NOP                        = 0x1\n\tTCPOPT_SACK                       = 0x5\n\tTCPOPT_SACK_HDR                   = 0x1010500\n\tTCPOPT_SACK_PERMITTED             = 0x4\n\tTCPOPT_SACK_PERMIT_HDR            = 0x1010402\n\tTCPOPT_SIGNATURE                  = 0x13\n\tTCPOPT_TIMESTAMP                  = 0x8\n\tTCPOPT_TSTAMP_HDR                 = 0x101080a\n\tTCPOPT_WINDOW                     = 0x3\n\tTCP_INFO                          = 0x9\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_SACK                      = 0x3\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MD5SIG                        = 0x4\n\tTCP_MSS                           = 0x200\n\tTCP_NODELAY                       = 0x1\n\tTCP_NOPUSH                        = 0x10\n\tTCP_SACKHOLE_LIMIT                = 0x80\n\tTCP_SACK_ENABLE                   = 0x8\n\tTCSAFLUSH                         = 0x2\n\tTIMER_ABSTIME                     = 0x1\n\tTIMER_RELTIME                     = 0x0\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCHKVERAUTH                    = 0x2000741e\n\tTIOCCLRVERAUTH                    = 0x2000741d\n\tTIOCCONS                          = 0x80047462\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLAG_CLOCAL                   = 0x2\n\tTIOCFLAG_CRTSCTS                  = 0x4\n\tTIOCFLAG_MDMBUF                   = 0x8\n\tTIOCFLAG_PPS                      = 0x10\n\tTIOCFLAG_SOFTCAR                  = 0x1\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGFLAGS                        = 0x4004745d\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGSID                          = 0x40047463\n\tTIOCGTSTAMP                       = 0x4010745b\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMODG                          = 0x4004746a\n\tTIOCMODS                          = 0x8004746d\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSETVERAUTH                    = 0x8004741c\n\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x8004745f\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x20007465\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSTSTAMP                       = 0x8008745a\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\n\tTIOCUCNTL_CBRK                    = 0x7a\n\tTIOCUCNTL_SBRK                    = 0x7b\n\tTOSTOP                            = 0x400000\n\tUTIME_NOW                         = -0x2\n\tUTIME_OMIT                        = -0x1\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVM_ANONMIN                        = 0x7\n\tVM_LOADAVG                        = 0x2\n\tVM_MALLOC_CONF                    = 0xc\n\tVM_MAXID                          = 0xd\n\tVM_MAXSLP                         = 0xa\n\tVM_METER                          = 0x1\n\tVM_NKMEMPAGES                     = 0x6\n\tVM_PSSTRINGS                      = 0x3\n\tVM_SWAPENCRYPT                    = 0x5\n\tVM_USPACE                         = 0xb\n\tVM_UVMEXP                         = 0x4\n\tVM_VNODEMIN                       = 0x9\n\tVM_VTEXTMIN                       = 0x8\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWALTSIG                           = 0x4\n\tWCONTINUED                        = 0x8\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\n\tWUNTRACED                         = 0x2\n\tXCASE                             = 0x1000000\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x5c)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x58)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x59)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEIPSEC          = syscall.Errno(0x52)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x5f)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMEDIUMTYPE     = syscall.Errno(0x56)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x53)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOMEDIUM       = syscall.Errno(0x55)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x5a)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5d)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x5b)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x57)\n\tEOWNERDEAD      = syscall.Errno(0x5e)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5f)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disk quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC program not available\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIPSEC\", \"IPsec processing failure\"},\n\t{83, \"ENOATTR\", \"attribute not found\"},\n\t{84, \"EILSEQ\", \"illegal byte sequence\"},\n\t{85, \"ENOMEDIUM\", \"no medium found\"},\n\t{86, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{87, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{88, \"ECANCELED\", \"operation canceled\"},\n\t{89, \"EIDRM\", \"identifier removed\"},\n\t{90, \"ENOMSG\", \"no message of desired type\"},\n\t{91, \"ENOTSUP\", \"not supported\"},\n\t{92, \"EBADMSG\", \"bad message\"},\n\t{93, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{94, \"EOWNERDEAD\", \"previous owner died\"},\n\t{95, \"ELAST\", \"protocol error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"thread AST\"},\n\t{81920, \"SIGSTKSZ\", \"unknown signal\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_openbsd_ppc64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc64 && openbsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_BLUETOOTH                      = 0x20\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_ENCAP                          = 0x1c\n\tAF_HYLINK                         = 0xf\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x18\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_KEY                            = 0x1e\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x24\n\tAF_MPLS                           = 0x21\n\tAF_NATM                           = 0x1b\n\tAF_NS                             = 0x6\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x11\n\tAF_SIP                            = 0x1d\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tALTWERASE                         = 0x200\n\tARPHRD_ETHER                      = 0x1\n\tARPHRD_FRELAY                     = 0xf\n\tARPHRD_IEEE1394                   = 0x18\n\tARPHRD_IEEE802                    = 0x6\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB9600                             = 0x2580\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDIRFILT                      = 0x4004427c\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc010427b\n\tBIOCGETIF                         = 0x4020426b\n\tBIOCGFILDROP                      = 0x40044278\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRSIG                         = 0x40044273\n\tBIOCGRTIMEOUT                     = 0x4010426e\n\tBIOCGSTATS                        = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCLOCK                          = 0x20004276\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDIRFILT                      = 0x8004427d\n\tBIOCSDLT                          = 0x8004427a\n\tBIOCSETF                          = 0x80104267\n\tBIOCSETIF                         = 0x8020426c\n\tBIOCSETWF                         = 0x80104277\n\tBIOCSFILDROP                      = 0x80044279\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRSIG                         = 0x80044272\n\tBIOCSRTIMEOUT                     = 0x8010426d\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DIRECTION_IN                  = 0x1\n\tBPF_DIRECTION_OUT                 = 0x2\n\tBPF_DIV                           = 0x30\n\tBPF_FILDROP_CAPTURE               = 0x1\n\tBPF_FILDROP_DROP                  = 0x2\n\tBPF_FILDROP_PASS                  = 0x0\n\tBPF_F_DIR_IN                      = 0x10\n\tBPF_F_DIR_MASK                    = 0x30\n\tBPF_F_DIR_OUT                     = 0x20\n\tBPF_F_DIR_SHIFT                   = 0x4\n\tBPF_F_FLOWID                      = 0x8\n\tBPF_F_PRI_MASK                    = 0x7\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x200000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RND                           = 0xc0\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLOCK_BOOTTIME                    = 0x6\n\tCLOCK_MONOTONIC                   = 0x3\n\tCLOCK_PROCESS_CPUTIME_ID          = 0x2\n\tCLOCK_REALTIME                    = 0x0\n\tCLOCK_THREAD_CPUTIME_ID           = 0x4\n\tCLOCK_UPTIME                      = 0x5\n\tCPUSTATES                         = 0x6\n\tCP_IDLE                           = 0x5\n\tCP_INTR                           = 0x4\n\tCP_NICE                           = 0x1\n\tCP_SPIN                           = 0x3\n\tCP_SYS                            = 0x2\n\tCP_USER                           = 0x0\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x10000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0xff\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tDIOCADDQUEUE                      = 0xc110445d\n\tDIOCADDRULE                       = 0xcd604404\n\tDIOCADDSTATE                      = 0xc1084425\n\tDIOCCHANGERULE                    = 0xcd60441a\n\tDIOCCLRIFFLAG                     = 0xc028445a\n\tDIOCCLRSRCNODES                   = 0x20004455\n\tDIOCCLRSTATES                     = 0xc0e04412\n\tDIOCCLRSTATUS                     = 0xc0284416\n\tDIOCGETLIMIT                      = 0xc0084427\n\tDIOCGETQSTATS                     = 0xc1204460\n\tDIOCGETQUEUE                      = 0xc110445f\n\tDIOCGETQUEUES                     = 0xc110445e\n\tDIOCGETRULE                       = 0xcd604407\n\tDIOCGETRULES                      = 0xcd604406\n\tDIOCGETRULESET                    = 0xc444443b\n\tDIOCGETRULESETS                   = 0xc444443a\n\tDIOCGETSRCNODES                   = 0xc0104454\n\tDIOCGETSTATE                      = 0xc1084413\n\tDIOCGETSTATES                     = 0xc0104419\n\tDIOCGETSTATUS                     = 0xc1e84415\n\tDIOCGETSYNFLWATS                  = 0xc0084463\n\tDIOCGETTIMEOUT                    = 0xc008441e\n\tDIOCIGETIFACES                    = 0xc0284457\n\tDIOCKILLSRCNODES                  = 0xc080445b\n\tDIOCKILLSTATES                    = 0xc0e04429\n\tDIOCNATLOOK                       = 0xc0504417\n\tDIOCOSFPADD                       = 0xc088444f\n\tDIOCOSFPFLUSH                     = 0x2000444e\n\tDIOCOSFPGET                       = 0xc0884450\n\tDIOCRADDADDRS                     = 0xc4504443\n\tDIOCRADDTABLES                    = 0xc450443d\n\tDIOCRCLRADDRS                     = 0xc4504442\n\tDIOCRCLRASTATS                    = 0xc4504448\n\tDIOCRCLRTABLES                    = 0xc450443c\n\tDIOCRCLRTSTATS                    = 0xc4504441\n\tDIOCRDELADDRS                     = 0xc4504444\n\tDIOCRDELTABLES                    = 0xc450443e\n\tDIOCRGETADDRS                     = 0xc4504446\n\tDIOCRGETASTATS                    = 0xc4504447\n\tDIOCRGETTABLES                    = 0xc450443f\n\tDIOCRGETTSTATS                    = 0xc4504440\n\tDIOCRINADEFINE                    = 0xc450444d\n\tDIOCRSETADDRS                     = 0xc4504445\n\tDIOCRSETTFLAGS                    = 0xc450444a\n\tDIOCRTSTADDRS                     = 0xc4504449\n\tDIOCSETDEBUG                      = 0xc0044418\n\tDIOCSETHOSTID                     = 0xc0044456\n\tDIOCSETIFFLAG                     = 0xc0284459\n\tDIOCSETLIMIT                      = 0xc0084428\n\tDIOCSETREASS                      = 0xc004445c\n\tDIOCSETSTATUSIF                   = 0xc0284414\n\tDIOCSETSYNCOOKIES                 = 0xc0014462\n\tDIOCSETSYNFLWATS                  = 0xc0084461\n\tDIOCSETTIMEOUT                    = 0xc008441d\n\tDIOCSTART                         = 0x20004401\n\tDIOCSTOP                          = 0x20004402\n\tDIOCXBEGIN                        = 0xc0104451\n\tDIOCXCOMMIT                       = 0xc0104452\n\tDIOCXROLLBACK                     = 0xc0104453\n\tDLT_ARCNET                        = 0x7\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AX25                          = 0x3\n\tDLT_CHAOS                         = 0x5\n\tDLT_C_HDLC                        = 0x68\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0xd\n\tDLT_FDDI                          = 0xa\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_LOOP                          = 0xc\n\tDLT_MPLS                          = 0xdb\n\tDLT_NULL                          = 0x0\n\tDLT_OPENFLOW                      = 0x10b\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0x10\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PRONET                        = 0x4\n\tDLT_RAW                           = 0xe\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xf\n\tDLT_USBPCAP                       = 0xf9\n\tDLT_USER0                         = 0x93\n\tDLT_USER1                         = 0x94\n\tDLT_USER10                        = 0x9d\n\tDLT_USER11                        = 0x9e\n\tDLT_USER12                        = 0x9f\n\tDLT_USER13                        = 0xa0\n\tDLT_USER14                        = 0xa1\n\tDLT_USER15                        = 0xa2\n\tDLT_USER2                         = 0x95\n\tDLT_USER3                         = 0x96\n\tDLT_USER4                         = 0x97\n\tDLT_USER5                         = 0x98\n\tDLT_USER6                         = 0x99\n\tDLT_USER7                         = 0x9a\n\tDLT_USER8                         = 0x9b\n\tDLT_USER9                         = 0x9c\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEMT_TAGOVF                        = 0x1\n\tEMUL_ENABLED                      = 0x1\n\tEMUL_NATIVE                       = 0x2\n\tENDRUNDISC                        = 0x9\n\tETH64_8021_RSVD_MASK              = 0xfffffffffff0\n\tETH64_8021_RSVD_PREFIX            = 0x180c2000000\n\tETHERMIN                          = 0x2e\n\tETHERMTU                          = 0x5dc\n\tETHERTYPE_8023                    = 0x4\n\tETHERTYPE_AARP                    = 0x80f3\n\tETHERTYPE_ACCTON                  = 0x8390\n\tETHERTYPE_AEONIC                  = 0x8036\n\tETHERTYPE_ALPHA                   = 0x814a\n\tETHERTYPE_AMBER                   = 0x6008\n\tETHERTYPE_AMOEBA                  = 0x8145\n\tETHERTYPE_AOE                     = 0x88a2\n\tETHERTYPE_APOLLO                  = 0x80f7\n\tETHERTYPE_APOLLODOMAIN            = 0x8019\n\tETHERTYPE_APPLETALK               = 0x809b\n\tETHERTYPE_APPLITEK                = 0x80c7\n\tETHERTYPE_ARGONAUT                = 0x803a\n\tETHERTYPE_ARP                     = 0x806\n\tETHERTYPE_AT                      = 0x809b\n\tETHERTYPE_ATALK                   = 0x809b\n\tETHERTYPE_ATOMIC                  = 0x86df\n\tETHERTYPE_ATT                     = 0x8069\n\tETHERTYPE_ATTSTANFORD             = 0x8008\n\tETHERTYPE_AUTOPHON                = 0x806a\n\tETHERTYPE_AXIS                    = 0x8856\n\tETHERTYPE_BCLOOP                  = 0x9003\n\tETHERTYPE_BOFL                    = 0x8102\n\tETHERTYPE_CABLETRON               = 0x7034\n\tETHERTYPE_CHAOS                   = 0x804\n\tETHERTYPE_COMDESIGN               = 0x806c\n\tETHERTYPE_COMPUGRAPHIC            = 0x806d\n\tETHERTYPE_COUNTERPOINT            = 0x8062\n\tETHERTYPE_CRONUS                  = 0x8004\n\tETHERTYPE_CRONUSVLN               = 0x8003\n\tETHERTYPE_DCA                     = 0x1234\n\tETHERTYPE_DDE                     = 0x807b\n\tETHERTYPE_DEBNI                   = 0xaaaa\n\tETHERTYPE_DECAM                   = 0x8048\n\tETHERTYPE_DECCUST                 = 0x6006\n\tETHERTYPE_DECDIAG                 = 0x6005\n\tETHERTYPE_DECDNS                  = 0x803c\n\tETHERTYPE_DECDTS                  = 0x803e\n\tETHERTYPE_DECEXPER                = 0x6000\n\tETHERTYPE_DECLAST                 = 0x8041\n\tETHERTYPE_DECLTM                  = 0x803f\n\tETHERTYPE_DECMUMPS                = 0x6009\n\tETHERTYPE_DECNETBIOS              = 0x8040\n\tETHERTYPE_DELTACON                = 0x86de\n\tETHERTYPE_DIDDLE                  = 0x4321\n\tETHERTYPE_DLOG1                   = 0x660\n\tETHERTYPE_DLOG2                   = 0x661\n\tETHERTYPE_DN                      = 0x6003\n\tETHERTYPE_DOGFIGHT                = 0x1989\n\tETHERTYPE_DSMD                    = 0x8039\n\tETHERTYPE_EAPOL                   = 0x888e\n\tETHERTYPE_ECMA                    = 0x803\n\tETHERTYPE_ENCRYPT                 = 0x803d\n\tETHERTYPE_ES                      = 0x805d\n\tETHERTYPE_EXCELAN                 = 0x8010\n\tETHERTYPE_EXPERDATA               = 0x8049\n\tETHERTYPE_FLIP                    = 0x8146\n\tETHERTYPE_FLOWCONTROL             = 0x8808\n\tETHERTYPE_FRARP                   = 0x808\n\tETHERTYPE_GENDYN                  = 0x8068\n\tETHERTYPE_HAYES                   = 0x8130\n\tETHERTYPE_HIPPI_FP                = 0x8180\n\tETHERTYPE_HITACHI                 = 0x8820\n\tETHERTYPE_HP                      = 0x8005\n\tETHERTYPE_IEEEPUP                 = 0xa00\n\tETHERTYPE_IEEEPUPAT               = 0xa01\n\tETHERTYPE_IMLBL                   = 0x4c42\n\tETHERTYPE_IMLBLDIAG               = 0x424c\n\tETHERTYPE_IP                      = 0x800\n\tETHERTYPE_IPAS                    = 0x876c\n\tETHERTYPE_IPV6                    = 0x86dd\n\tETHERTYPE_IPX                     = 0x8137\n\tETHERTYPE_IPXNEW                  = 0x8037\n\tETHERTYPE_KALPANA                 = 0x8582\n\tETHERTYPE_LANBRIDGE               = 0x8038\n\tETHERTYPE_LANPROBE                = 0x8888\n\tETHERTYPE_LAT                     = 0x6004\n\tETHERTYPE_LBACK                   = 0x9000\n\tETHERTYPE_LITTLE                  = 0x8060\n\tETHERTYPE_LLDP                    = 0x88cc\n\tETHERTYPE_LOGICRAFT               = 0x8148\n\tETHERTYPE_LOOPBACK                = 0x9000\n\tETHERTYPE_MACSEC                  = 0x88e5\n\tETHERTYPE_MATRA                   = 0x807a\n\tETHERTYPE_MAX                     = 0xffff\n\tETHERTYPE_MERIT                   = 0x807c\n\tETHERTYPE_MICP                    = 0x873a\n\tETHERTYPE_MOPDL                   = 0x6001\n\tETHERTYPE_MOPRC                   = 0x6002\n\tETHERTYPE_MOTOROLA                = 0x818d\n\tETHERTYPE_MPLS                    = 0x8847\n\tETHERTYPE_MPLS_MCAST              = 0x8848\n\tETHERTYPE_MUMPS                   = 0x813f\n\tETHERTYPE_NBPCC                   = 0x3c04\n\tETHERTYPE_NBPCLAIM                = 0x3c09\n\tETHERTYPE_NBPCLREQ                = 0x3c05\n\tETHERTYPE_NBPCLRSP                = 0x3c06\n\tETHERTYPE_NBPCREQ                 = 0x3c02\n\tETHERTYPE_NBPCRSP                 = 0x3c03\n\tETHERTYPE_NBPDG                   = 0x3c07\n\tETHERTYPE_NBPDGB                  = 0x3c08\n\tETHERTYPE_NBPDLTE                 = 0x3c0a\n\tETHERTYPE_NBPRAR                  = 0x3c0c\n\tETHERTYPE_NBPRAS                  = 0x3c0b\n\tETHERTYPE_NBPRST                  = 0x3c0d\n\tETHERTYPE_NBPSCD                  = 0x3c01\n\tETHERTYPE_NBPVCD                  = 0x3c00\n\tETHERTYPE_NBS                     = 0x802\n\tETHERTYPE_NCD                     = 0x8149\n\tETHERTYPE_NESTAR                  = 0x8006\n\tETHERTYPE_NETBEUI                 = 0x8191\n\tETHERTYPE_NHRP                    = 0x2001\n\tETHERTYPE_NOVELL                  = 0x8138\n\tETHERTYPE_NS                      = 0x600\n\tETHERTYPE_NSAT                    = 0x601\n\tETHERTYPE_NSCOMPAT                = 0x807\n\tETHERTYPE_NSH                     = 0x984f\n\tETHERTYPE_NTRAILER                = 0x10\n\tETHERTYPE_OS9                     = 0x7007\n\tETHERTYPE_OS9NET                  = 0x7009\n\tETHERTYPE_PACER                   = 0x80c6\n\tETHERTYPE_PBB                     = 0x88e7\n\tETHERTYPE_PCS                     = 0x4242\n\tETHERTYPE_PLANNING                = 0x8044\n\tETHERTYPE_PPP                     = 0x880b\n\tETHERTYPE_PPPOE                   = 0x8864\n\tETHERTYPE_PPPOEDISC               = 0x8863\n\tETHERTYPE_PRIMENTS                = 0x7031\n\tETHERTYPE_PUP                     = 0x200\n\tETHERTYPE_PUPAT                   = 0x200\n\tETHERTYPE_QINQ                    = 0x88a8\n\tETHERTYPE_RACAL                   = 0x7030\n\tETHERTYPE_RATIONAL                = 0x8150\n\tETHERTYPE_RAWFR                   = 0x6559\n\tETHERTYPE_RCL                     = 0x1995\n\tETHERTYPE_RDP                     = 0x8739\n\tETHERTYPE_RETIX                   = 0x80f2\n\tETHERTYPE_REVARP                  = 0x8035\n\tETHERTYPE_SCA                     = 0x6007\n\tETHERTYPE_SECTRA                  = 0x86db\n\tETHERTYPE_SECUREDATA              = 0x876d\n\tETHERTYPE_SGITW                   = 0x817e\n\tETHERTYPE_SG_BOUNCE               = 0x8016\n\tETHERTYPE_SG_DIAG                 = 0x8013\n\tETHERTYPE_SG_NETGAMES             = 0x8014\n\tETHERTYPE_SG_RESV                 = 0x8015\n\tETHERTYPE_SIMNET                  = 0x5208\n\tETHERTYPE_SLOW                    = 0x8809\n\tETHERTYPE_SNA                     = 0x80d5\n\tETHERTYPE_SNMP                    = 0x814c\n\tETHERTYPE_SONIX                   = 0xfaf5\n\tETHERTYPE_SPIDER                  = 0x809f\n\tETHERTYPE_SPRITE                  = 0x500\n\tETHERTYPE_STP                     = 0x8181\n\tETHERTYPE_TALARIS                 = 0x812b\n\tETHERTYPE_TALARISMC               = 0x852b\n\tETHERTYPE_TCPCOMP                 = 0x876b\n\tETHERTYPE_TCPSM                   = 0x9002\n\tETHERTYPE_TEC                     = 0x814f\n\tETHERTYPE_TIGAN                   = 0x802f\n\tETHERTYPE_TRAIL                   = 0x1000\n\tETHERTYPE_TRANSETHER              = 0x6558\n\tETHERTYPE_TYMSHARE                = 0x802e\n\tETHERTYPE_UBBST                   = 0x7005\n\tETHERTYPE_UBDEBUG                 = 0x900\n\tETHERTYPE_UBDIAGLOOP              = 0x7002\n\tETHERTYPE_UBDL                    = 0x7000\n\tETHERTYPE_UBNIU                   = 0x7001\n\tETHERTYPE_UBNMC                   = 0x7003\n\tETHERTYPE_VALID                   = 0x1600\n\tETHERTYPE_VARIAN                  = 0x80dd\n\tETHERTYPE_VAXELN                  = 0x803b\n\tETHERTYPE_VEECO                   = 0x8067\n\tETHERTYPE_VEXP                    = 0x805b\n\tETHERTYPE_VGLAB                   = 0x8131\n\tETHERTYPE_VINES                   = 0xbad\n\tETHERTYPE_VINESECHO               = 0xbaf\n\tETHERTYPE_VINESLOOP               = 0xbae\n\tETHERTYPE_VITAL                   = 0xff00\n\tETHERTYPE_VLAN                    = 0x8100\n\tETHERTYPE_VLTLMAN                 = 0x8080\n\tETHERTYPE_VPROD                   = 0x805c\n\tETHERTYPE_VURESERVED              = 0x8147\n\tETHERTYPE_WATERLOO                = 0x8130\n\tETHERTYPE_WELLFLEET               = 0x8103\n\tETHERTYPE_X25                     = 0x805\n\tETHERTYPE_X75                     = 0x801\n\tETHERTYPE_XNSSM                   = 0x9001\n\tETHERTYPE_XTP                     = 0x817d\n\tETHER_ADDR_LEN                    = 0x6\n\tETHER_ALIGN                       = 0x2\n\tETHER_CRC_LEN                     = 0x4\n\tETHER_CRC_POLY_BE                 = 0x4c11db6\n\tETHER_CRC_POLY_LE                 = 0xedb88320\n\tETHER_HDR_LEN                     = 0xe\n\tETHER_MAX_DIX_LEN                 = 0x600\n\tETHER_MAX_HARDMTU_LEN             = 0xff9b\n\tETHER_MAX_LEN                     = 0x5ee\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = -0x3\n\tEVFILT_DEVICE                     = -0x8\n\tEVFILT_EXCEPT                     = -0x9\n\tEVFILT_PROC                       = -0x5\n\tEVFILT_READ                       = -0x1\n\tEVFILT_SIGNAL                     = -0x6\n\tEVFILT_SYSCOUNT                   = 0x9\n\tEVFILT_TIMER                      = -0x7\n\tEVFILT_VNODE                      = -0x4\n\tEVFILT_WRITE                      = -0x2\n\tEVL_ENCAPLEN                      = 0x4\n\tEVL_PRIO_BITS                     = 0xd\n\tEVL_PRIO_MAX                      = 0x7\n\tEVL_VLID_MASK                     = 0xfff\n\tEVL_VLID_MAX                      = 0xffe\n\tEVL_VLID_MIN                      = 0x1\n\tEVL_VLID_NULL                     = 0x0\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_DISPATCH                       = 0x80\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_RECEIPT                        = 0x40\n\tEV_SYSFLAGS                       = 0xf800\n\tEXTA                              = 0x4b00\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x400\n\tFLUSHO                            = 0x800000\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0xa\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETOWN                          = 0x5\n\tF_ISATTY                          = 0xb\n\tF_OK                              = 0x0\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x8e52\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_STATICARP                     = 0x20\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BLUETOOTH                     = 0xf8\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf7\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DUMMY                         = 0xf1\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ECONET                        = 0xce\n\tIFT_ENC                           = 0xf4\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf3\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INFINIBAND                    = 0xc7\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LINEGROUP                     = 0xd2\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MBIM                          = 0xfa\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFLOW                         = 0xf9\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_PON155                        = 0xcf\n\tIFT_PON622                        = 0xd0\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPATM                       = 0xc5\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf2\n\tIFT_Q2931                         = 0xc9\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SIPSIG                        = 0xcc\n\tIFT_SIPTG                         = 0xcb\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TELINK                        = 0xc8\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VIRTUALTG                     = 0xca\n\tIFT_VOICEDID                      = 0xd5\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEEMFGD                    = 0xd3\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFGDEANA                  = 0xd4\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERCABLE                = 0xc6\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_WIREGUARD                     = 0xfb\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIN_RFC3021_HOST                   = 0x1\n\tIN_RFC3021_NET                    = 0xfffffffe\n\tIN_RFC3021_NSHIFT                 = 0x1f\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_DIVERT                    = 0x102\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x103\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_MPLS                      = 0x89\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_SCTP                      = 0x84\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_UDPLITE                   = 0x88\n\tIPV6_AUTH_LEVEL                   = 0x35\n\tIPV6_AUTOFLOWLABEL                = 0x3b\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_ESP_NETWORK_LEVEL            = 0x37\n\tIPV6_ESP_TRANS_LEVEL              = 0x36\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xfffffff\n\tIPV6_FLOWLABEL_MASK               = 0xfffff\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPCOMP_LEVEL                 = 0x3c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MINHOPCOUNT                  = 0x41\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_OPTIONS                      = 0x1\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PIPEX                        = 0x3f\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVDSTPORT                  = 0x40\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTABLE                       = 0x1021\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_AUTH_LEVEL                     = 0x14\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_ESP_NETWORK_LEVEL              = 0x16\n\tIP_ESP_TRANS_LEVEL                = 0x15\n\tIP_HDRINCL                        = 0x2\n\tIP_IPCOMP_LEVEL                   = 0x1d\n\tIP_IPDEFTTL                       = 0x25\n\tIP_IPSECFLOWINFO                  = 0x24\n\tIP_IPSEC_LOCAL_AUTH               = 0x1b\n\tIP_IPSEC_LOCAL_CRED               = 0x19\n\tIP_IPSEC_LOCAL_ID                 = 0x17\n\tIP_IPSEC_REMOTE_AUTH              = 0x1c\n\tIP_IPSEC_REMOTE_CRED              = 0x1a\n\tIP_IPSEC_REMOTE_ID                = 0x18\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0xfff\n\tIP_MF                             = 0x2000\n\tIP_MINTTL                         = 0x20\n\tIP_MIN_MEMBERSHIPS                = 0xf\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PIPEX                          = 0x22\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVDSTPORT                    = 0x21\n\tIP_RECVIF                         = 0x1e\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVRTABLE                     = 0x23\n\tIP_RECVTTL                        = 0x1f\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_RTABLE                         = 0x1021\n\tIP_SENDSRCADDR                    = 0x7\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tITIMER_PROF                       = 0x2\n\tITIMER_REAL                       = 0x0\n\tITIMER_VIRTUAL                    = 0x1\n\tIUCLC                             = 0x1000\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLCNT_OVERLOAD_FLUSH               = 0x6\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x6\n\tMADV_NORMAL                       = 0x0\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SPACEAVAIL                   = 0x5\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ANON                          = 0x1000\n\tMAP_ANONYMOUS                     = 0x1000\n\tMAP_CONCEAL                       = 0x8000\n\tMAP_COPY                          = 0x2\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_FLAGMASK                      = 0xfff7\n\tMAP_HASSEMAPHORE                  = 0x0\n\tMAP_INHERIT                       = 0x0\n\tMAP_INHERIT_COPY                  = 0x1\n\tMAP_INHERIT_NONE                  = 0x2\n\tMAP_INHERIT_SHARE                 = 0x0\n\tMAP_INHERIT_ZERO                  = 0x3\n\tMAP_NOEXTEND                      = 0x0\n\tMAP_NORESERVE                     = 0x0\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x0\n\tMAP_SHARED                        = 0x1\n\tMAP_STACK                         = 0x4000\n\tMAP_TRYFIXED                      = 0x0\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DELEXPORT                     = 0x20000\n\tMNT_DOOMED                        = 0x8000000\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_FORCE                         = 0x80000\n\tMNT_LAZY                          = 0x3\n\tMNT_LOCAL                         = 0x1000\n\tMNT_NOATIME                       = 0x8000\n\tMNT_NODEV                         = 0x10\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOPERM                        = 0x20\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOWAIT                        = 0x2\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x4000000\n\tMNT_STALLED                       = 0x100000\n\tMNT_SWAPPABLE                     = 0x200000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0x400ffff\n\tMNT_WAIT                          = 0x1\n\tMNT_WANTRDWR                      = 0x2000000\n\tMNT_WXALLOWED                     = 0x800\n\tMOUNT_AFS                         = \"afs\"\n\tMOUNT_CD9660                      = \"cd9660\"\n\tMOUNT_EXT2FS                      = \"ext2fs\"\n\tMOUNT_FFS                         = \"ffs\"\n\tMOUNT_FUSEFS                      = \"fuse\"\n\tMOUNT_MFS                         = \"mfs\"\n\tMOUNT_MSDOS                       = \"msdos\"\n\tMOUNT_NCPFS                       = \"ncpfs\"\n\tMOUNT_NFS                         = \"nfs\"\n\tMOUNT_NTFS                        = \"ntfs\"\n\tMOUNT_TMPFS                       = \"tmpfs\"\n\tMOUNT_UDF                         = \"udf\"\n\tMOUNT_UFS                         = \"ffs\"\n\tMSG_BCAST                         = 0x100\n\tMSG_CMSG_CLOEXEC                  = 0x800\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOR                           = 0x8\n\tMSG_MCAST                         = 0x200\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_TRUNC                         = 0x10\n\tMSG_WAITALL                       = 0x40\n\tMSG_WAITFORONE                    = 0x1000\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x4\n\tMS_SYNC                           = 0x2\n\tNAME_MAX                          = 0xff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x3\n\tNET_RT_IFNAMES                    = 0x6\n\tNET_RT_MAXID                      = 0x8\n\tNET_RT_SOURCE                     = 0x7\n\tNET_RT_STATS                      = 0x4\n\tNET_RT_TABLE                      = 0x5\n\tNFDBITS                           = 0x20\n\tNOFLSH                            = 0x80000000\n\tNOKERNINFO                        = 0x2000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHANGE                       = 0x1\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EOF                          = 0x2\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_OOB                          = 0x4\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_TRUNCATE                     = 0x80\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOLCUC                             = 0x20\n\tONLCR                             = 0x2\n\tONLRET                            = 0x80\n\tONOCR                             = 0x40\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tOXTABS                            = 0x4\n\tO_ACCMODE                         = 0x3\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x10000\n\tO_CREAT                           = 0x200\n\tO_DIRECTORY                       = 0x20000\n\tO_DSYNC                           = 0x80\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_RSYNC                           = 0x80\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPF_FLUSH                          = 0x1\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BFD                          = 0xb\n\tRTAX_BRD                          = 0x7\n\tRTAX_DNS                          = 0xc\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_LABEL                        = 0xa\n\tRTAX_MAX                          = 0xf\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_SEARCH                       = 0xe\n\tRTAX_SRC                          = 0x8\n\tRTAX_SRCMASK                      = 0x9\n\tRTAX_STATIC                       = 0xd\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BFD                           = 0x800\n\tRTA_BRD                           = 0x80\n\tRTA_DNS                           = 0x1000\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_LABEL                         = 0x400\n\tRTA_NETMASK                       = 0x4\n\tRTA_SEARCH                        = 0x4000\n\tRTA_SRC                           = 0x100\n\tRTA_SRCMASK                       = 0x200\n\tRTA_STATIC                        = 0x2000\n\tRTF_ANNOUNCE                      = 0x4000\n\tRTF_BFD                           = 0x1000000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_BROADCAST                     = 0x400000\n\tRTF_CACHED                        = 0x20000\n\tRTF_CLONED                        = 0x10000\n\tRTF_CLONING                       = 0x100\n\tRTF_CONNECTED                     = 0x800000\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_FMASK                         = 0x110fc08\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_LOCAL                         = 0x200000\n\tRTF_MODIFIED                      = 0x20\n\tRTF_MPATH                         = 0x40000\n\tRTF_MPLS                          = 0x100000\n\tRTF_MULTICAST                     = 0x200\n\tRTF_PERMANENT_ARP                 = 0x2000\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_PROTO3                        = 0x2000\n\tRTF_REJECT                        = 0x8\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_USETRAILERS                   = 0x8000\n\tRTM_80211INFO                     = 0x15\n\tRTM_ADD                           = 0x1\n\tRTM_BFD                           = 0x12\n\tRTM_CHANGE                        = 0x3\n\tRTM_CHGADDRATTR                   = 0x14\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_DESYNC                        = 0x10\n\tRTM_GET                           = 0x4\n\tRTM_IFANNOUNCE                    = 0xf\n\tRTM_IFINFO                        = 0xe\n\tRTM_INVALIDATE                    = 0x11\n\tRTM_LOSING                        = 0x5\n\tRTM_MAXSIZE                       = 0x800\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_PROPOSAL                      = 0x13\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_SOURCE                        = 0x16\n\tRTM_VERSION                       = 0x5\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRT_TABLEID_BITS                   = 0x8\n\tRT_TABLEID_MASK                   = 0xff\n\tRT_TABLEID_MAX                    = 0xff\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tRUSAGE_THREAD                     = 0x1\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x4\n\tSEEK_CUR                          = 0x1\n\tSEEK_END                          = 0x2\n\tSEEK_SET                          = 0x0\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80206931\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCAIFGROUP                      = 0x80286987\n\tSIOCATMARK                        = 0x40047307\n\tSIOCBRDGADD                       = 0x8060693c\n\tSIOCBRDGADDL                      = 0x80606949\n\tSIOCBRDGADDS                      = 0x80606941\n\tSIOCBRDGARL                       = 0x808c694d\n\tSIOCBRDGDADDR                     = 0x81286947\n\tSIOCBRDGDEL                       = 0x8060693d\n\tSIOCBRDGDELS                      = 0x80606942\n\tSIOCBRDGFLUSH                     = 0x80606948\n\tSIOCBRDGFRL                       = 0x808c694e\n\tSIOCBRDGGCACHE                    = 0xc0146941\n\tSIOCBRDGGFD                       = 0xc0146952\n\tSIOCBRDGGHT                       = 0xc0146951\n\tSIOCBRDGGIFFLGS                   = 0xc060693e\n\tSIOCBRDGGMA                       = 0xc0146953\n\tSIOCBRDGGPARAM                    = 0xc0406958\n\tSIOCBRDGGPRI                      = 0xc0146950\n\tSIOCBRDGGRL                       = 0xc030694f\n\tSIOCBRDGGTO                       = 0xc0146946\n\tSIOCBRDGIFS                       = 0xc0606942\n\tSIOCBRDGRTS                       = 0xc0206943\n\tSIOCBRDGSADDR                     = 0xc1286944\n\tSIOCBRDGSCACHE                    = 0x80146940\n\tSIOCBRDGSFD                       = 0x80146952\n\tSIOCBRDGSHT                       = 0x80146951\n\tSIOCBRDGSIFCOST                   = 0x80606955\n\tSIOCBRDGSIFFLGS                   = 0x8060693f\n\tSIOCBRDGSIFPRIO                   = 0x80606954\n\tSIOCBRDGSIFPROT                   = 0x8060694a\n\tSIOCBRDGSMA                       = 0x80146953\n\tSIOCBRDGSPRI                      = 0x80146950\n\tSIOCBRDGSPROTO                    = 0x8014695a\n\tSIOCBRDGSTO                       = 0x80146945\n\tSIOCBRDGSTXHC                     = 0x80146959\n\tSIOCDELLABEL                      = 0x80206997\n\tSIOCDELMULTI                      = 0x80206932\n\tSIOCDIFADDR                       = 0x80206919\n\tSIOCDIFGROUP                      = 0x80286989\n\tSIOCDIFPARENT                     = 0x802069b4\n\tSIOCDIFPHYADDR                    = 0x80206949\n\tSIOCDPWE3NEIGHBOR                 = 0x802069de\n\tSIOCDVNETID                       = 0x802069af\n\tSIOCGETKALIVE                     = 0xc01869a4\n\tSIOCGETLABEL                      = 0x8020699a\n\tSIOCGETMPWCFG                     = 0xc02069ae\n\tSIOCGETPFLOW                      = 0xc02069fe\n\tSIOCGETPFSYNC                     = 0xc02069f8\n\tSIOCGETSGCNT                      = 0xc0207534\n\tSIOCGETVIFCNT                     = 0xc0287533\n\tSIOCGETVLAN                       = 0xc0206990\n\tSIOCGIFADDR                       = 0xc0206921\n\tSIOCGIFBRDADDR                    = 0xc0206923\n\tSIOCGIFCONF                       = 0xc0106924\n\tSIOCGIFDATA                       = 0xc020691b\n\tSIOCGIFDESCR                      = 0xc0206981\n\tSIOCGIFDSTADDR                    = 0xc0206922\n\tSIOCGIFFLAGS                      = 0xc0206911\n\tSIOCGIFGATTR                      = 0xc028698b\n\tSIOCGIFGENERIC                    = 0xc020693a\n\tSIOCGIFGLIST                      = 0xc028698d\n\tSIOCGIFGMEMB                      = 0xc028698a\n\tSIOCGIFGROUP                      = 0xc0286988\n\tSIOCGIFHARDMTU                    = 0xc02069a5\n\tSIOCGIFLLPRIO                     = 0xc02069b6\n\tSIOCGIFMEDIA                      = 0xc0406938\n\tSIOCGIFMETRIC                     = 0xc0206917\n\tSIOCGIFMTU                        = 0xc020697e\n\tSIOCGIFNETMASK                    = 0xc0206925\n\tSIOCGIFPAIR                       = 0xc02069b1\n\tSIOCGIFPARENT                     = 0xc02069b3\n\tSIOCGIFPRIORITY                   = 0xc020699c\n\tSIOCGIFRDOMAIN                    = 0xc02069a0\n\tSIOCGIFRTLABEL                    = 0xc0206983\n\tSIOCGIFRXR                        = 0x802069aa\n\tSIOCGIFSFFPAGE                    = 0xc1126939\n\tSIOCGIFXFLAGS                     = 0xc020699e\n\tSIOCGLIFPHYADDR                   = 0xc218694b\n\tSIOCGLIFPHYDF                     = 0xc02069c2\n\tSIOCGLIFPHYECN                    = 0xc02069c8\n\tSIOCGLIFPHYRTABLE                 = 0xc02069a2\n\tSIOCGLIFPHYTTL                    = 0xc02069a9\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGPWE3                         = 0xc0206998\n\tSIOCGPWE3CTRLWORD                 = 0xc02069dc\n\tSIOCGPWE3FAT                      = 0xc02069dd\n\tSIOCGPWE3NEIGHBOR                 = 0xc21869de\n\tSIOCGRXHPRIO                      = 0xc02069db\n\tSIOCGSPPPPARAMS                   = 0xc0206994\n\tSIOCGTXHPRIO                      = 0xc02069c6\n\tSIOCGUMBINFO                      = 0xc02069be\n\tSIOCGUMBPARAM                     = 0xc02069c0\n\tSIOCGVH                           = 0xc02069f6\n\tSIOCGVNETFLOWID                   = 0xc02069c4\n\tSIOCGVNETID                       = 0xc02069a7\n\tSIOCIFAFATTACH                    = 0x801169ab\n\tSIOCIFAFDETACH                    = 0x801169ac\n\tSIOCIFCREATE                      = 0x8020697a\n\tSIOCIFDESTROY                     = 0x80206979\n\tSIOCIFGCLONERS                    = 0xc0106978\n\tSIOCSETKALIVE                     = 0x801869a3\n\tSIOCSETLABEL                      = 0x80206999\n\tSIOCSETMPWCFG                     = 0x802069ad\n\tSIOCSETPFLOW                      = 0x802069fd\n\tSIOCSETPFSYNC                     = 0x802069f7\n\tSIOCSETVLAN                       = 0x8020698f\n\tSIOCSIFADDR                       = 0x8020690c\n\tSIOCSIFBRDADDR                    = 0x80206913\n\tSIOCSIFDESCR                      = 0x80206980\n\tSIOCSIFDSTADDR                    = 0x8020690e\n\tSIOCSIFFLAGS                      = 0x80206910\n\tSIOCSIFGATTR                      = 0x8028698c\n\tSIOCSIFGENERIC                    = 0x80206939\n\tSIOCSIFLLADDR                     = 0x8020691f\n\tSIOCSIFLLPRIO                     = 0x802069b5\n\tSIOCSIFMEDIA                      = 0xc0206937\n\tSIOCSIFMETRIC                     = 0x80206918\n\tSIOCSIFMTU                        = 0x8020697f\n\tSIOCSIFNETMASK                    = 0x80206916\n\tSIOCSIFPAIR                       = 0x802069b0\n\tSIOCSIFPARENT                     = 0x802069b2\n\tSIOCSIFPRIORITY                   = 0x8020699b\n\tSIOCSIFRDOMAIN                    = 0x8020699f\n\tSIOCSIFRTLABEL                    = 0x80206982\n\tSIOCSIFXFLAGS                     = 0x8020699d\n\tSIOCSLIFPHYADDR                   = 0x8218694a\n\tSIOCSLIFPHYDF                     = 0x802069c1\n\tSIOCSLIFPHYECN                    = 0x802069c7\n\tSIOCSLIFPHYRTABLE                 = 0x802069a1\n\tSIOCSLIFPHYTTL                    = 0x802069a8\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSPWE3CTRLWORD                 = 0x802069dc\n\tSIOCSPWE3FAT                      = 0x802069dd\n\tSIOCSPWE3NEIGHBOR                 = 0x821869de\n\tSIOCSRXHPRIO                      = 0x802069db\n\tSIOCSSPPPPARAMS                   = 0x80206993\n\tSIOCSTXHPRIO                      = 0x802069c5\n\tSIOCSUMBPARAM                     = 0x802069bf\n\tSIOCSVH                           = 0xc02069f5\n\tSIOCSVNETFLOWID                   = 0x802069c3\n\tSIOCSVNETID                       = 0x802069a6\n\tSOCK_CLOEXEC                      = 0x8000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_DNS                          = 0x1000\n\tSOCK_NONBLOCK                     = 0x4000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_BINDANY                        = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DOMAIN                         = 0x1024\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NETPROC                        = 0x1020\n\tSO_OOBINLINE                      = 0x100\n\tSO_PEERCRED                       = 0x1022\n\tSO_PROTOCOL                       = 0x1025\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x1006\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_RTABLE                         = 0x1021\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x1005\n\tSO_SPLICE                         = 0x1023\n\tSO_TIMESTAMP                      = 0x800\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tSO_ZEROIZE                        = 0x2000\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tTCIFLUSH                          = 0x1\n\tTCIOFF                            = 0x3\n\tTCIOFLUSH                         = 0x3\n\tTCION                             = 0x4\n\tTCOFLUSH                          = 0x2\n\tTCOOFF                            = 0x1\n\tTCOON                             = 0x2\n\tTCPOPT_EOL                        = 0x0\n\tTCPOPT_MAXSEG                     = 0x2\n\tTCPOPT_NOP                        = 0x1\n\tTCPOPT_SACK                       = 0x5\n\tTCPOPT_SACK_HDR                   = 0x1010500\n\tTCPOPT_SACK_PERMITTED             = 0x4\n\tTCPOPT_SACK_PERMIT_HDR            = 0x1010402\n\tTCPOPT_SIGNATURE                  = 0x13\n\tTCPOPT_TIMESTAMP                  = 0x8\n\tTCPOPT_TSTAMP_HDR                 = 0x101080a\n\tTCPOPT_WINDOW                     = 0x3\n\tTCP_INFO                          = 0x9\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_SACK                      = 0x3\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MD5SIG                        = 0x4\n\tTCP_MSS                           = 0x200\n\tTCP_NODELAY                       = 0x1\n\tTCP_NOPUSH                        = 0x10\n\tTCP_SACKHOLE_LIMIT                = 0x80\n\tTCP_SACK_ENABLE                   = 0x8\n\tTCSAFLUSH                         = 0x2\n\tTIMER_ABSTIME                     = 0x1\n\tTIMER_RELTIME                     = 0x0\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCHKVERAUTH                    = 0x2000741e\n\tTIOCCLRVERAUTH                    = 0x2000741d\n\tTIOCCONS                          = 0x80047462\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLAG_CLOCAL                   = 0x2\n\tTIOCFLAG_CRTSCTS                  = 0x4\n\tTIOCFLAG_MDMBUF                   = 0x8\n\tTIOCFLAG_PPS                      = 0x10\n\tTIOCFLAG_SOFTCAR                  = 0x1\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGFLAGS                        = 0x4004745d\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGSID                          = 0x40047463\n\tTIOCGTSTAMP                       = 0x4010745b\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMODG                          = 0x4004746a\n\tTIOCMODS                          = 0x8004746d\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSETVERAUTH                    = 0x8004741c\n\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x8004745f\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x20007465\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSTSTAMP                       = 0x8008745a\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\n\tTIOCUCNTL_CBRK                    = 0x7a\n\tTIOCUCNTL_SBRK                    = 0x7b\n\tTOSTOP                            = 0x400000\n\tUTIME_NOW                         = -0x2\n\tUTIME_OMIT                        = -0x1\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVM_ANONMIN                        = 0x7\n\tVM_LOADAVG                        = 0x2\n\tVM_MALLOC_CONF                    = 0xc\n\tVM_MAXID                          = 0xd\n\tVM_MAXSLP                         = 0xa\n\tVM_METER                          = 0x1\n\tVM_NKMEMPAGES                     = 0x6\n\tVM_PSSTRINGS                      = 0x3\n\tVM_SWAPENCRYPT                    = 0x5\n\tVM_USPACE                         = 0xb\n\tVM_UVMEXP                         = 0x4\n\tVM_VNODEMIN                       = 0x9\n\tVM_VTEXTMIN                       = 0x8\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWALTSIG                           = 0x4\n\tWCONTINUED                        = 0x8\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\n\tWUNTRACED                         = 0x2\n\tXCASE                             = 0x1000000\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x5c)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x58)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x59)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEIPSEC          = syscall.Errno(0x52)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x5f)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMEDIUMTYPE     = syscall.Errno(0x56)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x53)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOMEDIUM       = syscall.Errno(0x55)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x5a)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5d)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x5b)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x57)\n\tEOWNERDEAD      = syscall.Errno(0x5e)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5f)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disk quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC program not available\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIPSEC\", \"IPsec processing failure\"},\n\t{83, \"ENOATTR\", \"attribute not found\"},\n\t{84, \"EILSEQ\", \"illegal byte sequence\"},\n\t{85, \"ENOMEDIUM\", \"no medium found\"},\n\t{86, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{87, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{88, \"ECANCELED\", \"operation canceled\"},\n\t{89, \"EIDRM\", \"identifier removed\"},\n\t{90, \"ENOMSG\", \"no message of desired type\"},\n\t{91, \"ENOTSUP\", \"not supported\"},\n\t{92, \"EBADMSG\", \"bad message\"},\n\t{93, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{94, \"EOWNERDEAD\", \"previous owner died\"},\n\t{95, \"ELAST\", \"protocol error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGABRT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"thread AST\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_openbsd_riscv64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build riscv64 && openbsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_BLUETOOTH                      = 0x20\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_ENCAP                          = 0x1c\n\tAF_HYLINK                         = 0xf\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x18\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_KEY                            = 0x1e\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x24\n\tAF_MPLS                           = 0x21\n\tAF_NATM                           = 0x1b\n\tAF_NS                             = 0x6\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x11\n\tAF_SIP                            = 0x1d\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tALTWERASE                         = 0x200\n\tARPHRD_ETHER                      = 0x1\n\tARPHRD_FRELAY                     = 0xf\n\tARPHRD_IEEE1394                   = 0x18\n\tARPHRD_IEEE802                    = 0x6\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB9600                             = 0x2580\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDIRFILT                      = 0x4004427c\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc010427b\n\tBIOCGETIF                         = 0x4020426b\n\tBIOCGFILDROP                      = 0x40044278\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRSIG                         = 0x40044273\n\tBIOCGRTIMEOUT                     = 0x4010426e\n\tBIOCGSTATS                        = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCLOCK                          = 0x20004276\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDIRFILT                      = 0x8004427d\n\tBIOCSDLT                          = 0x8004427a\n\tBIOCSETF                          = 0x80104267\n\tBIOCSETIF                         = 0x8020426c\n\tBIOCSETWF                         = 0x80104277\n\tBIOCSFILDROP                      = 0x80044279\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRSIG                         = 0x80044272\n\tBIOCSRTIMEOUT                     = 0x8010426d\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DIRECTION_IN                  = 0x1\n\tBPF_DIRECTION_OUT                 = 0x2\n\tBPF_DIV                           = 0x30\n\tBPF_FILDROP_CAPTURE               = 0x1\n\tBPF_FILDROP_DROP                  = 0x2\n\tBPF_FILDROP_PASS                  = 0x0\n\tBPF_F_DIR_IN                      = 0x10\n\tBPF_F_DIR_MASK                    = 0x30\n\tBPF_F_DIR_OUT                     = 0x20\n\tBPF_F_DIR_SHIFT                   = 0x4\n\tBPF_F_FLOWID                      = 0x8\n\tBPF_F_PRI_MASK                    = 0x7\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x200000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RND                           = 0xc0\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLOCK_BOOTTIME                    = 0x6\n\tCLOCK_MONOTONIC                   = 0x3\n\tCLOCK_PROCESS_CPUTIME_ID          = 0x2\n\tCLOCK_REALTIME                    = 0x0\n\tCLOCK_THREAD_CPUTIME_ID           = 0x4\n\tCLOCK_UPTIME                      = 0x5\n\tCPUSTATES                         = 0x6\n\tCP_IDLE                           = 0x5\n\tCP_INTR                           = 0x4\n\tCP_NICE                           = 0x1\n\tCP_SPIN                           = 0x3\n\tCP_SYS                            = 0x2\n\tCP_USER                           = 0x0\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x10000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0xff\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tDIOCADDQUEUE                      = 0xc110445d\n\tDIOCADDRULE                       = 0xcd604404\n\tDIOCADDSTATE                      = 0xc1084425\n\tDIOCCHANGERULE                    = 0xcd60441a\n\tDIOCCLRIFFLAG                     = 0xc028445a\n\tDIOCCLRSRCNODES                   = 0x20004455\n\tDIOCCLRSTATES                     = 0xc0e04412\n\tDIOCCLRSTATUS                     = 0xc0284416\n\tDIOCGETLIMIT                      = 0xc0084427\n\tDIOCGETQSTATS                     = 0xc1204460\n\tDIOCGETQUEUE                      = 0xc110445f\n\tDIOCGETQUEUES                     = 0xc110445e\n\tDIOCGETRULE                       = 0xcd604407\n\tDIOCGETRULES                      = 0xcd604406\n\tDIOCGETRULESET                    = 0xc444443b\n\tDIOCGETRULESETS                   = 0xc444443a\n\tDIOCGETSRCNODES                   = 0xc0104454\n\tDIOCGETSTATE                      = 0xc1084413\n\tDIOCGETSTATES                     = 0xc0104419\n\tDIOCGETSTATUS                     = 0xc1e84415\n\tDIOCGETSYNFLWATS                  = 0xc0084463\n\tDIOCGETTIMEOUT                    = 0xc008441e\n\tDIOCIGETIFACES                    = 0xc0284457\n\tDIOCKILLSRCNODES                  = 0xc080445b\n\tDIOCKILLSTATES                    = 0xc0e04429\n\tDIOCNATLOOK                       = 0xc0504417\n\tDIOCOSFPADD                       = 0xc088444f\n\tDIOCOSFPFLUSH                     = 0x2000444e\n\tDIOCOSFPGET                       = 0xc0884450\n\tDIOCRADDADDRS                     = 0xc4504443\n\tDIOCRADDTABLES                    = 0xc450443d\n\tDIOCRCLRADDRS                     = 0xc4504442\n\tDIOCRCLRASTATS                    = 0xc4504448\n\tDIOCRCLRTABLES                    = 0xc450443c\n\tDIOCRCLRTSTATS                    = 0xc4504441\n\tDIOCRDELADDRS                     = 0xc4504444\n\tDIOCRDELTABLES                    = 0xc450443e\n\tDIOCRGETADDRS                     = 0xc4504446\n\tDIOCRGETASTATS                    = 0xc4504447\n\tDIOCRGETTABLES                    = 0xc450443f\n\tDIOCRGETTSTATS                    = 0xc4504440\n\tDIOCRINADEFINE                    = 0xc450444d\n\tDIOCRSETADDRS                     = 0xc4504445\n\tDIOCRSETTFLAGS                    = 0xc450444a\n\tDIOCRTSTADDRS                     = 0xc4504449\n\tDIOCSETDEBUG                      = 0xc0044418\n\tDIOCSETHOSTID                     = 0xc0044456\n\tDIOCSETIFFLAG                     = 0xc0284459\n\tDIOCSETLIMIT                      = 0xc0084428\n\tDIOCSETREASS                      = 0xc004445c\n\tDIOCSETSTATUSIF                   = 0xc0284414\n\tDIOCSETSYNCOOKIES                 = 0xc0014462\n\tDIOCSETSYNFLWATS                  = 0xc0084461\n\tDIOCSETTIMEOUT                    = 0xc008441d\n\tDIOCSTART                         = 0x20004401\n\tDIOCSTOP                          = 0x20004402\n\tDIOCXBEGIN                        = 0xc0104451\n\tDIOCXCOMMIT                       = 0xc0104452\n\tDIOCXROLLBACK                     = 0xc0104453\n\tDLT_ARCNET                        = 0x7\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AX25                          = 0x3\n\tDLT_CHAOS                         = 0x5\n\tDLT_C_HDLC                        = 0x68\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0xd\n\tDLT_FDDI                          = 0xa\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_LOOP                          = 0xc\n\tDLT_MPLS                          = 0xdb\n\tDLT_NULL                          = 0x0\n\tDLT_OPENFLOW                      = 0x10b\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0x10\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PRONET                        = 0x4\n\tDLT_RAW                           = 0xe\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xf\n\tDLT_USBPCAP                       = 0xf9\n\tDLT_USER0                         = 0x93\n\tDLT_USER1                         = 0x94\n\tDLT_USER10                        = 0x9d\n\tDLT_USER11                        = 0x9e\n\tDLT_USER12                        = 0x9f\n\tDLT_USER13                        = 0xa0\n\tDLT_USER14                        = 0xa1\n\tDLT_USER15                        = 0xa2\n\tDLT_USER2                         = 0x95\n\tDLT_USER3                         = 0x96\n\tDLT_USER4                         = 0x97\n\tDLT_USER5                         = 0x98\n\tDLT_USER6                         = 0x99\n\tDLT_USER7                         = 0x9a\n\tDLT_USER8                         = 0x9b\n\tDLT_USER9                         = 0x9c\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEMT_TAGOVF                        = 0x1\n\tEMUL_ENABLED                      = 0x1\n\tEMUL_NATIVE                       = 0x2\n\tENDRUNDISC                        = 0x9\n\tETH64_8021_RSVD_MASK              = 0xfffffffffff0\n\tETH64_8021_RSVD_PREFIX            = 0x180c2000000\n\tETHERMIN                          = 0x2e\n\tETHERMTU                          = 0x5dc\n\tETHERTYPE_8023                    = 0x4\n\tETHERTYPE_AARP                    = 0x80f3\n\tETHERTYPE_ACCTON                  = 0x8390\n\tETHERTYPE_AEONIC                  = 0x8036\n\tETHERTYPE_ALPHA                   = 0x814a\n\tETHERTYPE_AMBER                   = 0x6008\n\tETHERTYPE_AMOEBA                  = 0x8145\n\tETHERTYPE_AOE                     = 0x88a2\n\tETHERTYPE_APOLLO                  = 0x80f7\n\tETHERTYPE_APOLLODOMAIN            = 0x8019\n\tETHERTYPE_APPLETALK               = 0x809b\n\tETHERTYPE_APPLITEK                = 0x80c7\n\tETHERTYPE_ARGONAUT                = 0x803a\n\tETHERTYPE_ARP                     = 0x806\n\tETHERTYPE_AT                      = 0x809b\n\tETHERTYPE_ATALK                   = 0x809b\n\tETHERTYPE_ATOMIC                  = 0x86df\n\tETHERTYPE_ATT                     = 0x8069\n\tETHERTYPE_ATTSTANFORD             = 0x8008\n\tETHERTYPE_AUTOPHON                = 0x806a\n\tETHERTYPE_AXIS                    = 0x8856\n\tETHERTYPE_BCLOOP                  = 0x9003\n\tETHERTYPE_BOFL                    = 0x8102\n\tETHERTYPE_CABLETRON               = 0x7034\n\tETHERTYPE_CHAOS                   = 0x804\n\tETHERTYPE_COMDESIGN               = 0x806c\n\tETHERTYPE_COMPUGRAPHIC            = 0x806d\n\tETHERTYPE_COUNTERPOINT            = 0x8062\n\tETHERTYPE_CRONUS                  = 0x8004\n\tETHERTYPE_CRONUSVLN               = 0x8003\n\tETHERTYPE_DCA                     = 0x1234\n\tETHERTYPE_DDE                     = 0x807b\n\tETHERTYPE_DEBNI                   = 0xaaaa\n\tETHERTYPE_DECAM                   = 0x8048\n\tETHERTYPE_DECCUST                 = 0x6006\n\tETHERTYPE_DECDIAG                 = 0x6005\n\tETHERTYPE_DECDNS                  = 0x803c\n\tETHERTYPE_DECDTS                  = 0x803e\n\tETHERTYPE_DECEXPER                = 0x6000\n\tETHERTYPE_DECLAST                 = 0x8041\n\tETHERTYPE_DECLTM                  = 0x803f\n\tETHERTYPE_DECMUMPS                = 0x6009\n\tETHERTYPE_DECNETBIOS              = 0x8040\n\tETHERTYPE_DELTACON                = 0x86de\n\tETHERTYPE_DIDDLE                  = 0x4321\n\tETHERTYPE_DLOG1                   = 0x660\n\tETHERTYPE_DLOG2                   = 0x661\n\tETHERTYPE_DN                      = 0x6003\n\tETHERTYPE_DOGFIGHT                = 0x1989\n\tETHERTYPE_DSMD                    = 0x8039\n\tETHERTYPE_EAPOL                   = 0x888e\n\tETHERTYPE_ECMA                    = 0x803\n\tETHERTYPE_ENCRYPT                 = 0x803d\n\tETHERTYPE_ES                      = 0x805d\n\tETHERTYPE_EXCELAN                 = 0x8010\n\tETHERTYPE_EXPERDATA               = 0x8049\n\tETHERTYPE_FLIP                    = 0x8146\n\tETHERTYPE_FLOWCONTROL             = 0x8808\n\tETHERTYPE_FRARP                   = 0x808\n\tETHERTYPE_GENDYN                  = 0x8068\n\tETHERTYPE_HAYES                   = 0x8130\n\tETHERTYPE_HIPPI_FP                = 0x8180\n\tETHERTYPE_HITACHI                 = 0x8820\n\tETHERTYPE_HP                      = 0x8005\n\tETHERTYPE_IEEEPUP                 = 0xa00\n\tETHERTYPE_IEEEPUPAT               = 0xa01\n\tETHERTYPE_IMLBL                   = 0x4c42\n\tETHERTYPE_IMLBLDIAG               = 0x424c\n\tETHERTYPE_IP                      = 0x800\n\tETHERTYPE_IPAS                    = 0x876c\n\tETHERTYPE_IPV6                    = 0x86dd\n\tETHERTYPE_IPX                     = 0x8137\n\tETHERTYPE_IPXNEW                  = 0x8037\n\tETHERTYPE_KALPANA                 = 0x8582\n\tETHERTYPE_LANBRIDGE               = 0x8038\n\tETHERTYPE_LANPROBE                = 0x8888\n\tETHERTYPE_LAT                     = 0x6004\n\tETHERTYPE_LBACK                   = 0x9000\n\tETHERTYPE_LITTLE                  = 0x8060\n\tETHERTYPE_LLDP                    = 0x88cc\n\tETHERTYPE_LOGICRAFT               = 0x8148\n\tETHERTYPE_LOOPBACK                = 0x9000\n\tETHERTYPE_MACSEC                  = 0x88e5\n\tETHERTYPE_MATRA                   = 0x807a\n\tETHERTYPE_MAX                     = 0xffff\n\tETHERTYPE_MERIT                   = 0x807c\n\tETHERTYPE_MICP                    = 0x873a\n\tETHERTYPE_MOPDL                   = 0x6001\n\tETHERTYPE_MOPRC                   = 0x6002\n\tETHERTYPE_MOTOROLA                = 0x818d\n\tETHERTYPE_MPLS                    = 0x8847\n\tETHERTYPE_MPLS_MCAST              = 0x8848\n\tETHERTYPE_MUMPS                   = 0x813f\n\tETHERTYPE_NBPCC                   = 0x3c04\n\tETHERTYPE_NBPCLAIM                = 0x3c09\n\tETHERTYPE_NBPCLREQ                = 0x3c05\n\tETHERTYPE_NBPCLRSP                = 0x3c06\n\tETHERTYPE_NBPCREQ                 = 0x3c02\n\tETHERTYPE_NBPCRSP                 = 0x3c03\n\tETHERTYPE_NBPDG                   = 0x3c07\n\tETHERTYPE_NBPDGB                  = 0x3c08\n\tETHERTYPE_NBPDLTE                 = 0x3c0a\n\tETHERTYPE_NBPRAR                  = 0x3c0c\n\tETHERTYPE_NBPRAS                  = 0x3c0b\n\tETHERTYPE_NBPRST                  = 0x3c0d\n\tETHERTYPE_NBPSCD                  = 0x3c01\n\tETHERTYPE_NBPVCD                  = 0x3c00\n\tETHERTYPE_NBS                     = 0x802\n\tETHERTYPE_NCD                     = 0x8149\n\tETHERTYPE_NESTAR                  = 0x8006\n\tETHERTYPE_NETBEUI                 = 0x8191\n\tETHERTYPE_NHRP                    = 0x2001\n\tETHERTYPE_NOVELL                  = 0x8138\n\tETHERTYPE_NS                      = 0x600\n\tETHERTYPE_NSAT                    = 0x601\n\tETHERTYPE_NSCOMPAT                = 0x807\n\tETHERTYPE_NSH                     = 0x984f\n\tETHERTYPE_NTRAILER                = 0x10\n\tETHERTYPE_OS9                     = 0x7007\n\tETHERTYPE_OS9NET                  = 0x7009\n\tETHERTYPE_PACER                   = 0x80c6\n\tETHERTYPE_PBB                     = 0x88e7\n\tETHERTYPE_PCS                     = 0x4242\n\tETHERTYPE_PLANNING                = 0x8044\n\tETHERTYPE_PPP                     = 0x880b\n\tETHERTYPE_PPPOE                   = 0x8864\n\tETHERTYPE_PPPOEDISC               = 0x8863\n\tETHERTYPE_PRIMENTS                = 0x7031\n\tETHERTYPE_PUP                     = 0x200\n\tETHERTYPE_PUPAT                   = 0x200\n\tETHERTYPE_QINQ                    = 0x88a8\n\tETHERTYPE_RACAL                   = 0x7030\n\tETHERTYPE_RATIONAL                = 0x8150\n\tETHERTYPE_RAWFR                   = 0x6559\n\tETHERTYPE_RCL                     = 0x1995\n\tETHERTYPE_RDP                     = 0x8739\n\tETHERTYPE_RETIX                   = 0x80f2\n\tETHERTYPE_REVARP                  = 0x8035\n\tETHERTYPE_SCA                     = 0x6007\n\tETHERTYPE_SECTRA                  = 0x86db\n\tETHERTYPE_SECUREDATA              = 0x876d\n\tETHERTYPE_SGITW                   = 0x817e\n\tETHERTYPE_SG_BOUNCE               = 0x8016\n\tETHERTYPE_SG_DIAG                 = 0x8013\n\tETHERTYPE_SG_NETGAMES             = 0x8014\n\tETHERTYPE_SG_RESV                 = 0x8015\n\tETHERTYPE_SIMNET                  = 0x5208\n\tETHERTYPE_SLOW                    = 0x8809\n\tETHERTYPE_SNA                     = 0x80d5\n\tETHERTYPE_SNMP                    = 0x814c\n\tETHERTYPE_SONIX                   = 0xfaf5\n\tETHERTYPE_SPIDER                  = 0x809f\n\tETHERTYPE_SPRITE                  = 0x500\n\tETHERTYPE_STP                     = 0x8181\n\tETHERTYPE_TALARIS                 = 0x812b\n\tETHERTYPE_TALARISMC               = 0x852b\n\tETHERTYPE_TCPCOMP                 = 0x876b\n\tETHERTYPE_TCPSM                   = 0x9002\n\tETHERTYPE_TEC                     = 0x814f\n\tETHERTYPE_TIGAN                   = 0x802f\n\tETHERTYPE_TRAIL                   = 0x1000\n\tETHERTYPE_TRANSETHER              = 0x6558\n\tETHERTYPE_TYMSHARE                = 0x802e\n\tETHERTYPE_UBBST                   = 0x7005\n\tETHERTYPE_UBDEBUG                 = 0x900\n\tETHERTYPE_UBDIAGLOOP              = 0x7002\n\tETHERTYPE_UBDL                    = 0x7000\n\tETHERTYPE_UBNIU                   = 0x7001\n\tETHERTYPE_UBNMC                   = 0x7003\n\tETHERTYPE_VALID                   = 0x1600\n\tETHERTYPE_VARIAN                  = 0x80dd\n\tETHERTYPE_VAXELN                  = 0x803b\n\tETHERTYPE_VEECO                   = 0x8067\n\tETHERTYPE_VEXP                    = 0x805b\n\tETHERTYPE_VGLAB                   = 0x8131\n\tETHERTYPE_VINES                   = 0xbad\n\tETHERTYPE_VINESECHO               = 0xbaf\n\tETHERTYPE_VINESLOOP               = 0xbae\n\tETHERTYPE_VITAL                   = 0xff00\n\tETHERTYPE_VLAN                    = 0x8100\n\tETHERTYPE_VLTLMAN                 = 0x8080\n\tETHERTYPE_VPROD                   = 0x805c\n\tETHERTYPE_VURESERVED              = 0x8147\n\tETHERTYPE_WATERLOO                = 0x8130\n\tETHERTYPE_WELLFLEET               = 0x8103\n\tETHERTYPE_X25                     = 0x805\n\tETHERTYPE_X75                     = 0x801\n\tETHERTYPE_XNSSM                   = 0x9001\n\tETHERTYPE_XTP                     = 0x817d\n\tETHER_ADDR_LEN                    = 0x6\n\tETHER_ALIGN                       = 0x2\n\tETHER_CRC_LEN                     = 0x4\n\tETHER_CRC_POLY_BE                 = 0x4c11db6\n\tETHER_CRC_POLY_LE                 = 0xedb88320\n\tETHER_HDR_LEN                     = 0xe\n\tETHER_MAX_DIX_LEN                 = 0x600\n\tETHER_MAX_HARDMTU_LEN             = 0xff9b\n\tETHER_MAX_LEN                     = 0x5ee\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = -0x3\n\tEVFILT_DEVICE                     = -0x8\n\tEVFILT_EXCEPT                     = -0x9\n\tEVFILT_PROC                       = -0x5\n\tEVFILT_READ                       = -0x1\n\tEVFILT_SIGNAL                     = -0x6\n\tEVFILT_SYSCOUNT                   = 0x9\n\tEVFILT_TIMER                      = -0x7\n\tEVFILT_VNODE                      = -0x4\n\tEVFILT_WRITE                      = -0x2\n\tEVL_ENCAPLEN                      = 0x4\n\tEVL_PRIO_BITS                     = 0xd\n\tEVL_PRIO_MAX                      = 0x7\n\tEVL_VLID_MASK                     = 0xfff\n\tEVL_VLID_MAX                      = 0xffe\n\tEVL_VLID_MIN                      = 0x1\n\tEVL_VLID_NULL                     = 0x0\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_DISPATCH                       = 0x80\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_RECEIPT                        = 0x40\n\tEV_SYSFLAGS                       = 0xf800\n\tEXTA                              = 0x4b00\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x400\n\tFLUSHO                            = 0x800000\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0xa\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETOWN                          = 0x5\n\tF_ISATTY                          = 0xb\n\tF_OK                              = 0x0\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x8e52\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_STATICARP                     = 0x20\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BLUETOOTH                     = 0xf8\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf7\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DUMMY                         = 0xf1\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ECONET                        = 0xce\n\tIFT_ENC                           = 0xf4\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf3\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INFINIBAND                    = 0xc7\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LINEGROUP                     = 0xd2\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MBIM                          = 0xfa\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFLOW                         = 0xf9\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_PON155                        = 0xcf\n\tIFT_PON622                        = 0xd0\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPATM                       = 0xc5\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf2\n\tIFT_Q2931                         = 0xc9\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SIPSIG                        = 0xcc\n\tIFT_SIPTG                         = 0xcb\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TELINK                        = 0xc8\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VIRTUALTG                     = 0xca\n\tIFT_VOICEDID                      = 0xd5\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEEMFGD                    = 0xd3\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFGDEANA                  = 0xd4\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERCABLE                = 0xc6\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_WIREGUARD                     = 0xfb\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIN_RFC3021_HOST                   = 0x1\n\tIN_RFC3021_NET                    = 0xfffffffe\n\tIN_RFC3021_NSHIFT                 = 0x1f\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_DIVERT                    = 0x102\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x103\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_MPLS                      = 0x89\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_SCTP                      = 0x84\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_UDPLITE                   = 0x88\n\tIPV6_AUTH_LEVEL                   = 0x35\n\tIPV6_AUTOFLOWLABEL                = 0x3b\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_ESP_NETWORK_LEVEL            = 0x37\n\tIPV6_ESP_TRANS_LEVEL              = 0x36\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPCOMP_LEVEL                 = 0x3c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MINHOPCOUNT                  = 0x41\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_OPTIONS                      = 0x1\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PIPEX                        = 0x3f\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVDSTPORT                  = 0x40\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTABLE                       = 0x1021\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_AUTH_LEVEL                     = 0x14\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_ESP_NETWORK_LEVEL              = 0x16\n\tIP_ESP_TRANS_LEVEL                = 0x15\n\tIP_HDRINCL                        = 0x2\n\tIP_IPCOMP_LEVEL                   = 0x1d\n\tIP_IPDEFTTL                       = 0x25\n\tIP_IPSECFLOWINFO                  = 0x24\n\tIP_IPSEC_LOCAL_AUTH               = 0x1b\n\tIP_IPSEC_LOCAL_CRED               = 0x19\n\tIP_IPSEC_LOCAL_ID                 = 0x17\n\tIP_IPSEC_REMOTE_AUTH              = 0x1c\n\tIP_IPSEC_REMOTE_CRED              = 0x1a\n\tIP_IPSEC_REMOTE_ID                = 0x18\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0xfff\n\tIP_MF                             = 0x2000\n\tIP_MINTTL                         = 0x20\n\tIP_MIN_MEMBERSHIPS                = 0xf\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PIPEX                          = 0x22\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVDSTPORT                    = 0x21\n\tIP_RECVIF                         = 0x1e\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVRTABLE                     = 0x23\n\tIP_RECVTTL                        = 0x1f\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_RTABLE                         = 0x1021\n\tIP_SENDSRCADDR                    = 0x7\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tITIMER_PROF                       = 0x2\n\tITIMER_REAL                       = 0x0\n\tITIMER_VIRTUAL                    = 0x1\n\tIUCLC                             = 0x1000\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLCNT_OVERLOAD_FLUSH               = 0x6\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x6\n\tMADV_NORMAL                       = 0x0\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SPACEAVAIL                   = 0x5\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ANON                          = 0x1000\n\tMAP_ANONYMOUS                     = 0x1000\n\tMAP_CONCEAL                       = 0x8000\n\tMAP_COPY                          = 0x2\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_FLAGMASK                      = 0xfff7\n\tMAP_HASSEMAPHORE                  = 0x0\n\tMAP_INHERIT                       = 0x0\n\tMAP_INHERIT_COPY                  = 0x1\n\tMAP_INHERIT_NONE                  = 0x2\n\tMAP_INHERIT_SHARE                 = 0x0\n\tMAP_INHERIT_ZERO                  = 0x3\n\tMAP_NOEXTEND                      = 0x0\n\tMAP_NORESERVE                     = 0x0\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x0\n\tMAP_SHARED                        = 0x1\n\tMAP_STACK                         = 0x4000\n\tMAP_TRYFIXED                      = 0x0\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DELEXPORT                     = 0x20000\n\tMNT_DOOMED                        = 0x8000000\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_FORCE                         = 0x80000\n\tMNT_LAZY                          = 0x3\n\tMNT_LOCAL                         = 0x1000\n\tMNT_NOATIME                       = 0x8000\n\tMNT_NODEV                         = 0x10\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOPERM                        = 0x20\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOWAIT                        = 0x2\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x4000000\n\tMNT_STALLED                       = 0x100000\n\tMNT_SWAPPABLE                     = 0x200000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0x400ffff\n\tMNT_WAIT                          = 0x1\n\tMNT_WANTRDWR                      = 0x2000000\n\tMNT_WXALLOWED                     = 0x800\n\tMOUNT_AFS                         = \"afs\"\n\tMOUNT_CD9660                      = \"cd9660\"\n\tMOUNT_EXT2FS                      = \"ext2fs\"\n\tMOUNT_FFS                         = \"ffs\"\n\tMOUNT_FUSEFS                      = \"fuse\"\n\tMOUNT_MFS                         = \"mfs\"\n\tMOUNT_MSDOS                       = \"msdos\"\n\tMOUNT_NCPFS                       = \"ncpfs\"\n\tMOUNT_NFS                         = \"nfs\"\n\tMOUNT_NTFS                        = \"ntfs\"\n\tMOUNT_TMPFS                       = \"tmpfs\"\n\tMOUNT_UDF                         = \"udf\"\n\tMOUNT_UFS                         = \"ffs\"\n\tMSG_BCAST                         = 0x100\n\tMSG_CMSG_CLOEXEC                  = 0x800\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOR                           = 0x8\n\tMSG_MCAST                         = 0x200\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_TRUNC                         = 0x10\n\tMSG_WAITALL                       = 0x40\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x4\n\tMS_SYNC                           = 0x2\n\tNAME_MAX                          = 0xff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x3\n\tNET_RT_IFNAMES                    = 0x6\n\tNET_RT_MAXID                      = 0x8\n\tNET_RT_SOURCE                     = 0x7\n\tNET_RT_STATS                      = 0x4\n\tNET_RT_TABLE                      = 0x5\n\tNFDBITS                           = 0x20\n\tNOFLSH                            = 0x80000000\n\tNOKERNINFO                        = 0x2000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHANGE                       = 0x1\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EOF                          = 0x2\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_OOB                          = 0x4\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_TRUNCATE                     = 0x80\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOLCUC                             = 0x20\n\tONLCR                             = 0x2\n\tONLRET                            = 0x80\n\tONOCR                             = 0x40\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tOXTABS                            = 0x4\n\tO_ACCMODE                         = 0x3\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x10000\n\tO_CREAT                           = 0x200\n\tO_DIRECTORY                       = 0x20000\n\tO_DSYNC                           = 0x80\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_RSYNC                           = 0x80\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPF_FLUSH                          = 0x1\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BFD                          = 0xb\n\tRTAX_BRD                          = 0x7\n\tRTAX_DNS                          = 0xc\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_LABEL                        = 0xa\n\tRTAX_MAX                          = 0xf\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_SEARCH                       = 0xe\n\tRTAX_SRC                          = 0x8\n\tRTAX_SRCMASK                      = 0x9\n\tRTAX_STATIC                       = 0xd\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BFD                           = 0x800\n\tRTA_BRD                           = 0x80\n\tRTA_DNS                           = 0x1000\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_LABEL                         = 0x400\n\tRTA_NETMASK                       = 0x4\n\tRTA_SEARCH                        = 0x4000\n\tRTA_SRC                           = 0x100\n\tRTA_SRCMASK                       = 0x200\n\tRTA_STATIC                        = 0x2000\n\tRTF_ANNOUNCE                      = 0x4000\n\tRTF_BFD                           = 0x1000000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_BROADCAST                     = 0x400000\n\tRTF_CACHED                        = 0x20000\n\tRTF_CLONED                        = 0x10000\n\tRTF_CLONING                       = 0x100\n\tRTF_CONNECTED                     = 0x800000\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_FMASK                         = 0x110fc08\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_LOCAL                         = 0x200000\n\tRTF_MODIFIED                      = 0x20\n\tRTF_MPATH                         = 0x40000\n\tRTF_MPLS                          = 0x100000\n\tRTF_MULTICAST                     = 0x200\n\tRTF_PERMANENT_ARP                 = 0x2000\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_PROTO3                        = 0x2000\n\tRTF_REJECT                        = 0x8\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_USETRAILERS                   = 0x8000\n\tRTM_80211INFO                     = 0x15\n\tRTM_ADD                           = 0x1\n\tRTM_BFD                           = 0x12\n\tRTM_CHANGE                        = 0x3\n\tRTM_CHGADDRATTR                   = 0x14\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_DESYNC                        = 0x10\n\tRTM_GET                           = 0x4\n\tRTM_IFANNOUNCE                    = 0xf\n\tRTM_IFINFO                        = 0xe\n\tRTM_INVALIDATE                    = 0x11\n\tRTM_LOSING                        = 0x5\n\tRTM_MAXSIZE                       = 0x800\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_PROPOSAL                      = 0x13\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_SOURCE                        = 0x16\n\tRTM_VERSION                       = 0x5\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRT_TABLEID_BITS                   = 0x8\n\tRT_TABLEID_MASK                   = 0xff\n\tRT_TABLEID_MAX                    = 0xff\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tRUSAGE_THREAD                     = 0x1\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x4\n\tSEEK_CUR                          = 0x1\n\tSEEK_END                          = 0x2\n\tSEEK_SET                          = 0x0\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80206931\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCAIFGROUP                      = 0x80286987\n\tSIOCATMARK                        = 0x40047307\n\tSIOCBRDGADD                       = 0x8060693c\n\tSIOCBRDGADDL                      = 0x80606949\n\tSIOCBRDGADDS                      = 0x80606941\n\tSIOCBRDGARL                       = 0x808c694d\n\tSIOCBRDGDADDR                     = 0x81286947\n\tSIOCBRDGDEL                       = 0x8060693d\n\tSIOCBRDGDELS                      = 0x80606942\n\tSIOCBRDGFLUSH                     = 0x80606948\n\tSIOCBRDGFRL                       = 0x808c694e\n\tSIOCBRDGGCACHE                    = 0xc0146941\n\tSIOCBRDGGFD                       = 0xc0146952\n\tSIOCBRDGGHT                       = 0xc0146951\n\tSIOCBRDGGIFFLGS                   = 0xc060693e\n\tSIOCBRDGGMA                       = 0xc0146953\n\tSIOCBRDGGPARAM                    = 0xc0406958\n\tSIOCBRDGGPRI                      = 0xc0146950\n\tSIOCBRDGGRL                       = 0xc030694f\n\tSIOCBRDGGTO                       = 0xc0146946\n\tSIOCBRDGIFS                       = 0xc0606942\n\tSIOCBRDGRTS                       = 0xc0206943\n\tSIOCBRDGSADDR                     = 0xc1286944\n\tSIOCBRDGSCACHE                    = 0x80146940\n\tSIOCBRDGSFD                       = 0x80146952\n\tSIOCBRDGSHT                       = 0x80146951\n\tSIOCBRDGSIFCOST                   = 0x80606955\n\tSIOCBRDGSIFFLGS                   = 0x8060693f\n\tSIOCBRDGSIFPRIO                   = 0x80606954\n\tSIOCBRDGSIFPROT                   = 0x8060694a\n\tSIOCBRDGSMA                       = 0x80146953\n\tSIOCBRDGSPRI                      = 0x80146950\n\tSIOCBRDGSPROTO                    = 0x8014695a\n\tSIOCBRDGSTO                       = 0x80146945\n\tSIOCBRDGSTXHC                     = 0x80146959\n\tSIOCDELLABEL                      = 0x80206997\n\tSIOCDELMULTI                      = 0x80206932\n\tSIOCDIFADDR                       = 0x80206919\n\tSIOCDIFGROUP                      = 0x80286989\n\tSIOCDIFPARENT                     = 0x802069b4\n\tSIOCDIFPHYADDR                    = 0x80206949\n\tSIOCDPWE3NEIGHBOR                 = 0x802069de\n\tSIOCDVNETID                       = 0x802069af\n\tSIOCGETKALIVE                     = 0xc01869a4\n\tSIOCGETLABEL                      = 0x8020699a\n\tSIOCGETMPWCFG                     = 0xc02069ae\n\tSIOCGETPFLOW                      = 0xc02069fe\n\tSIOCGETPFSYNC                     = 0xc02069f8\n\tSIOCGETSGCNT                      = 0xc0207534\n\tSIOCGETVIFCNT                     = 0xc0287533\n\tSIOCGETVLAN                       = 0xc0206990\n\tSIOCGIFADDR                       = 0xc0206921\n\tSIOCGIFBRDADDR                    = 0xc0206923\n\tSIOCGIFCONF                       = 0xc0106924\n\tSIOCGIFDATA                       = 0xc020691b\n\tSIOCGIFDESCR                      = 0xc0206981\n\tSIOCGIFDSTADDR                    = 0xc0206922\n\tSIOCGIFFLAGS                      = 0xc0206911\n\tSIOCGIFGATTR                      = 0xc028698b\n\tSIOCGIFGENERIC                    = 0xc020693a\n\tSIOCGIFGLIST                      = 0xc028698d\n\tSIOCGIFGMEMB                      = 0xc028698a\n\tSIOCGIFGROUP                      = 0xc0286988\n\tSIOCGIFHARDMTU                    = 0xc02069a5\n\tSIOCGIFLLPRIO                     = 0xc02069b6\n\tSIOCGIFMEDIA                      = 0xc0406938\n\tSIOCGIFMETRIC                     = 0xc0206917\n\tSIOCGIFMTU                        = 0xc020697e\n\tSIOCGIFNETMASK                    = 0xc0206925\n\tSIOCGIFPAIR                       = 0xc02069b1\n\tSIOCGIFPARENT                     = 0xc02069b3\n\tSIOCGIFPRIORITY                   = 0xc020699c\n\tSIOCGIFRDOMAIN                    = 0xc02069a0\n\tSIOCGIFRTLABEL                    = 0xc0206983\n\tSIOCGIFRXR                        = 0x802069aa\n\tSIOCGIFSFFPAGE                    = 0xc1126939\n\tSIOCGIFXFLAGS                     = 0xc020699e\n\tSIOCGLIFPHYADDR                   = 0xc218694b\n\tSIOCGLIFPHYDF                     = 0xc02069c2\n\tSIOCGLIFPHYECN                    = 0xc02069c8\n\tSIOCGLIFPHYRTABLE                 = 0xc02069a2\n\tSIOCGLIFPHYTTL                    = 0xc02069a9\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGPWE3                         = 0xc0206998\n\tSIOCGPWE3CTRLWORD                 = 0xc02069dc\n\tSIOCGPWE3FAT                      = 0xc02069dd\n\tSIOCGPWE3NEIGHBOR                 = 0xc21869de\n\tSIOCGRXHPRIO                      = 0xc02069db\n\tSIOCGSPPPPARAMS                   = 0xc0206994\n\tSIOCGTXHPRIO                      = 0xc02069c6\n\tSIOCGUMBINFO                      = 0xc02069be\n\tSIOCGUMBPARAM                     = 0xc02069c0\n\tSIOCGVH                           = 0xc02069f6\n\tSIOCGVNETFLOWID                   = 0xc02069c4\n\tSIOCGVNETID                       = 0xc02069a7\n\tSIOCIFAFATTACH                    = 0x801169ab\n\tSIOCIFAFDETACH                    = 0x801169ac\n\tSIOCIFCREATE                      = 0x8020697a\n\tSIOCIFDESTROY                     = 0x80206979\n\tSIOCIFGCLONERS                    = 0xc0106978\n\tSIOCSETKALIVE                     = 0x801869a3\n\tSIOCSETLABEL                      = 0x80206999\n\tSIOCSETMPWCFG                     = 0x802069ad\n\tSIOCSETPFLOW                      = 0x802069fd\n\tSIOCSETPFSYNC                     = 0x802069f7\n\tSIOCSETVLAN                       = 0x8020698f\n\tSIOCSIFADDR                       = 0x8020690c\n\tSIOCSIFBRDADDR                    = 0x80206913\n\tSIOCSIFDESCR                      = 0x80206980\n\tSIOCSIFDSTADDR                    = 0x8020690e\n\tSIOCSIFFLAGS                      = 0x80206910\n\tSIOCSIFGATTR                      = 0x8028698c\n\tSIOCSIFGENERIC                    = 0x80206939\n\tSIOCSIFLLADDR                     = 0x8020691f\n\tSIOCSIFLLPRIO                     = 0x802069b5\n\tSIOCSIFMEDIA                      = 0xc0206937\n\tSIOCSIFMETRIC                     = 0x80206918\n\tSIOCSIFMTU                        = 0x8020697f\n\tSIOCSIFNETMASK                    = 0x80206916\n\tSIOCSIFPAIR                       = 0x802069b0\n\tSIOCSIFPARENT                     = 0x802069b2\n\tSIOCSIFPRIORITY                   = 0x8020699b\n\tSIOCSIFRDOMAIN                    = 0x8020699f\n\tSIOCSIFRTLABEL                    = 0x80206982\n\tSIOCSIFXFLAGS                     = 0x8020699d\n\tSIOCSLIFPHYADDR                   = 0x8218694a\n\tSIOCSLIFPHYDF                     = 0x802069c1\n\tSIOCSLIFPHYECN                    = 0x802069c7\n\tSIOCSLIFPHYRTABLE                 = 0x802069a1\n\tSIOCSLIFPHYTTL                    = 0x802069a8\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSPWE3CTRLWORD                 = 0x802069dc\n\tSIOCSPWE3FAT                      = 0x802069dd\n\tSIOCSPWE3NEIGHBOR                 = 0x821869de\n\tSIOCSRXHPRIO                      = 0x802069db\n\tSIOCSSPPPPARAMS                   = 0x80206993\n\tSIOCSTXHPRIO                      = 0x802069c5\n\tSIOCSUMBPARAM                     = 0x802069bf\n\tSIOCSVH                           = 0xc02069f5\n\tSIOCSVNETFLOWID                   = 0x802069c3\n\tSIOCSVNETID                       = 0x802069a6\n\tSOCK_CLOEXEC                      = 0x8000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_DNS                          = 0x1000\n\tSOCK_NONBLOCK                     = 0x4000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_BINDANY                        = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DOMAIN                         = 0x1024\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NETPROC                        = 0x1020\n\tSO_OOBINLINE                      = 0x100\n\tSO_PEERCRED                       = 0x1022\n\tSO_PROTOCOL                       = 0x1025\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x1006\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_RTABLE                         = 0x1021\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x1005\n\tSO_SPLICE                         = 0x1023\n\tSO_TIMESTAMP                      = 0x800\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tSO_ZEROIZE                        = 0x2000\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tTCIFLUSH                          = 0x1\n\tTCIOFF                            = 0x3\n\tTCIOFLUSH                         = 0x3\n\tTCION                             = 0x4\n\tTCOFLUSH                          = 0x2\n\tTCOOFF                            = 0x1\n\tTCOON                             = 0x2\n\tTCPOPT_EOL                        = 0x0\n\tTCPOPT_MAXSEG                     = 0x2\n\tTCPOPT_NOP                        = 0x1\n\tTCPOPT_SACK                       = 0x5\n\tTCPOPT_SACK_HDR                   = 0x1010500\n\tTCPOPT_SACK_PERMITTED             = 0x4\n\tTCPOPT_SACK_PERMIT_HDR            = 0x1010402\n\tTCPOPT_SIGNATURE                  = 0x13\n\tTCPOPT_TIMESTAMP                  = 0x8\n\tTCPOPT_TSTAMP_HDR                 = 0x101080a\n\tTCPOPT_WINDOW                     = 0x3\n\tTCP_INFO                          = 0x9\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_SACK                      = 0x3\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MD5SIG                        = 0x4\n\tTCP_MSS                           = 0x200\n\tTCP_NODELAY                       = 0x1\n\tTCP_NOPUSH                        = 0x10\n\tTCP_SACKHOLE_LIMIT                = 0x80\n\tTCP_SACK_ENABLE                   = 0x8\n\tTCSAFLUSH                         = 0x2\n\tTIMER_ABSTIME                     = 0x1\n\tTIMER_RELTIME                     = 0x0\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCHKVERAUTH                    = 0x2000741e\n\tTIOCCLRVERAUTH                    = 0x2000741d\n\tTIOCCONS                          = 0x80047462\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLAG_CLOCAL                   = 0x2\n\tTIOCFLAG_CRTSCTS                  = 0x4\n\tTIOCFLAG_MDMBUF                   = 0x8\n\tTIOCFLAG_PPS                      = 0x10\n\tTIOCFLAG_SOFTCAR                  = 0x1\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGFLAGS                        = 0x4004745d\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGSID                          = 0x40047463\n\tTIOCGTSTAMP                       = 0x4010745b\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMODG                          = 0x4004746a\n\tTIOCMODS                          = 0x8004746d\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSETVERAUTH                    = 0x8004741c\n\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x8004745f\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x20007465\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSTSTAMP                       = 0x8008745a\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\n\tTIOCUCNTL_CBRK                    = 0x7a\n\tTIOCUCNTL_SBRK                    = 0x7b\n\tTOSTOP                            = 0x400000\n\tUTIME_NOW                         = -0x2\n\tUTIME_OMIT                        = -0x1\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVM_ANONMIN                        = 0x7\n\tVM_LOADAVG                        = 0x2\n\tVM_MALLOC_CONF                    = 0xc\n\tVM_MAXID                          = 0xd\n\tVM_MAXSLP                         = 0xa\n\tVM_METER                          = 0x1\n\tVM_NKMEMPAGES                     = 0x6\n\tVM_PSSTRINGS                      = 0x3\n\tVM_SWAPENCRYPT                    = 0x5\n\tVM_USPACE                         = 0xb\n\tVM_UVMEXP                         = 0x4\n\tVM_VNODEMIN                       = 0x9\n\tVM_VTEXTMIN                       = 0x8\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWALTSIG                           = 0x4\n\tWCONTINUED                        = 0x8\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\n\tWUNTRACED                         = 0x2\n\tXCASE                             = 0x1000000\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x5c)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x58)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x59)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEIPSEC          = syscall.Errno(0x52)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x5f)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMEDIUMTYPE     = syscall.Errno(0x56)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x53)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOMEDIUM       = syscall.Errno(0x55)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x5a)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5d)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x5b)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x57)\n\tEOWNERDEAD      = syscall.Errno(0x5e)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5f)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disk quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC program not available\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIPSEC\", \"IPsec processing failure\"},\n\t{83, \"ENOATTR\", \"attribute not found\"},\n\t{84, \"EILSEQ\", \"illegal byte sequence\"},\n\t{85, \"ENOMEDIUM\", \"no medium found\"},\n\t{86, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{87, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{88, \"ECANCELED\", \"operation canceled\"},\n\t{89, \"EIDRM\", \"identifier removed\"},\n\t{90, \"ENOMSG\", \"no message of desired type\"},\n\t{91, \"ENOTSUP\", \"not supported\"},\n\t{92, \"EBADMSG\", \"bad message\"},\n\t{93, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{94, \"EOWNERDEAD\", \"previous owner died\"},\n\t{95, \"ELAST\", \"protocol error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGABRT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"thread AST\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && solaris\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_802                        = 0x12\n\tAF_APPLETALK                  = 0x10\n\tAF_CCITT                      = 0xa\n\tAF_CHAOS                      = 0x5\n\tAF_DATAKIT                    = 0x9\n\tAF_DECnet                     = 0xc\n\tAF_DLI                        = 0xd\n\tAF_ECMA                       = 0x8\n\tAF_FILE                       = 0x1\n\tAF_GOSIP                      = 0x16\n\tAF_HYLINK                     = 0xf\n\tAF_IMPLINK                    = 0x3\n\tAF_INET                       = 0x2\n\tAF_INET6                      = 0x1a\n\tAF_INET_OFFLOAD               = 0x1e\n\tAF_IPX                        = 0x17\n\tAF_KEY                        = 0x1b\n\tAF_LAT                        = 0xe\n\tAF_LINK                       = 0x19\n\tAF_LOCAL                      = 0x1\n\tAF_MAX                        = 0x20\n\tAF_NBS                        = 0x7\n\tAF_NCA                        = 0x1c\n\tAF_NIT                        = 0x11\n\tAF_NS                         = 0x6\n\tAF_OSI                        = 0x13\n\tAF_OSINET                     = 0x15\n\tAF_PACKET                     = 0x20\n\tAF_POLICY                     = 0x1d\n\tAF_PUP                        = 0x4\n\tAF_ROUTE                      = 0x18\n\tAF_SNA                        = 0xb\n\tAF_TRILL                      = 0x1f\n\tAF_UNIX                       = 0x1\n\tAF_UNSPEC                     = 0x0\n\tAF_X25                        = 0x14\n\tARPHRD_ARCNET                 = 0x7\n\tARPHRD_ATM                    = 0x10\n\tARPHRD_AX25                   = 0x3\n\tARPHRD_CHAOS                  = 0x5\n\tARPHRD_EETHER                 = 0x2\n\tARPHRD_ETHER                  = 0x1\n\tARPHRD_FC                     = 0x12\n\tARPHRD_FRAME                  = 0xf\n\tARPHRD_HDLC                   = 0x11\n\tARPHRD_IB                     = 0x20\n\tARPHRD_IEEE802                = 0x6\n\tARPHRD_IPATM                  = 0x13\n\tARPHRD_METRICOM               = 0x17\n\tARPHRD_TUNNEL                 = 0x1f\n\tB0                            = 0x0\n\tB110                          = 0x3\n\tB115200                       = 0x12\n\tB1200                         = 0x9\n\tB134                          = 0x4\n\tB150                          = 0x5\n\tB153600                       = 0x13\n\tB1800                         = 0xa\n\tB19200                        = 0xe\n\tB200                          = 0x6\n\tB230400                       = 0x14\n\tB2400                         = 0xb\n\tB300                          = 0x7\n\tB307200                       = 0x15\n\tB38400                        = 0xf\n\tB460800                       = 0x16\n\tB4800                         = 0xc\n\tB50                           = 0x1\n\tB57600                        = 0x10\n\tB600                          = 0x8\n\tB75                           = 0x2\n\tB76800                        = 0x11\n\tB921600                       = 0x17\n\tB9600                         = 0xd\n\tBIOCFLUSH                     = 0x20004268\n\tBIOCGBLEN                     = 0x40044266\n\tBIOCGDLT                      = 0x4004426a\n\tBIOCGDLTLIST                  = -0x3fefbd89\n\tBIOCGDLTLIST32                = -0x3ff7bd89\n\tBIOCGETIF                     = 0x4020426b\n\tBIOCGETLIF                    = 0x4078426b\n\tBIOCGHDRCMPLT                 = 0x40044274\n\tBIOCGRTIMEOUT                 = 0x4010427b\n\tBIOCGRTIMEOUT32               = 0x4008427b\n\tBIOCGSEESENT                  = 0x40044278\n\tBIOCGSTATS                    = 0x4080426f\n\tBIOCGSTATSOLD                 = 0x4008426f\n\tBIOCIMMEDIATE                 = -0x7ffbbd90\n\tBIOCPROMISC                   = 0x20004269\n\tBIOCSBLEN                     = -0x3ffbbd9a\n\tBIOCSDLT                      = -0x7ffbbd8a\n\tBIOCSETF                      = -0x7fefbd99\n\tBIOCSETF32                    = -0x7ff7bd99\n\tBIOCSETIF                     = -0x7fdfbd94\n\tBIOCSETLIF                    = -0x7f87bd94\n\tBIOCSHDRCMPLT                 = -0x7ffbbd8b\n\tBIOCSRTIMEOUT                 = -0x7fefbd86\n\tBIOCSRTIMEOUT32               = -0x7ff7bd86\n\tBIOCSSEESENT                  = -0x7ffbbd87\n\tBIOCSTCPF                     = -0x7fefbd8e\n\tBIOCSUDPF                     = -0x7fefbd8d\n\tBIOCVERSION                   = 0x40044271\n\tBPF_A                         = 0x10\n\tBPF_ABS                       = 0x20\n\tBPF_ADD                       = 0x0\n\tBPF_ALIGNMENT                 = 0x4\n\tBPF_ALU                       = 0x4\n\tBPF_AND                       = 0x50\n\tBPF_B                         = 0x10\n\tBPF_DFLTBUFSIZE               = 0x100000\n\tBPF_DIV                       = 0x30\n\tBPF_H                         = 0x8\n\tBPF_IMM                       = 0x0\n\tBPF_IND                       = 0x40\n\tBPF_JA                        = 0x0\n\tBPF_JEQ                       = 0x10\n\tBPF_JGE                       = 0x30\n\tBPF_JGT                       = 0x20\n\tBPF_JMP                       = 0x5\n\tBPF_JSET                      = 0x40\n\tBPF_K                         = 0x0\n\tBPF_LD                        = 0x0\n\tBPF_LDX                       = 0x1\n\tBPF_LEN                       = 0x80\n\tBPF_LSH                       = 0x60\n\tBPF_MAJOR_VERSION             = 0x1\n\tBPF_MAXBUFSIZE                = 0x1000000\n\tBPF_MAXINSNS                  = 0x200\n\tBPF_MEM                       = 0x60\n\tBPF_MEMWORDS                  = 0x10\n\tBPF_MINBUFSIZE                = 0x20\n\tBPF_MINOR_VERSION             = 0x1\n\tBPF_MISC                      = 0x7\n\tBPF_MSH                       = 0xa0\n\tBPF_MUL                       = 0x20\n\tBPF_NEG                       = 0x80\n\tBPF_OR                        = 0x40\n\tBPF_RELEASE                   = 0x30bb6\n\tBPF_RET                       = 0x6\n\tBPF_RSH                       = 0x70\n\tBPF_ST                        = 0x2\n\tBPF_STX                       = 0x3\n\tBPF_SUB                       = 0x10\n\tBPF_TAX                       = 0x0\n\tBPF_TXA                       = 0x80\n\tBPF_W                         = 0x0\n\tBPF_X                         = 0x8\n\tBRKINT                        = 0x2\n\tBS0                           = 0x0\n\tBS1                           = 0x2000\n\tBSDLY                         = 0x2000\n\tCBAUD                         = 0xf\n\tCFLUSH                        = 0xf\n\tCIBAUD                        = 0xf0000\n\tCLOCAL                        = 0x800\n\tCLOCK_HIGHRES                 = 0x4\n\tCLOCK_LEVEL                   = 0xa\n\tCLOCK_MONOTONIC               = 0x4\n\tCLOCK_PROCESS_CPUTIME_ID      = 0x5\n\tCLOCK_PROF                    = 0x2\n\tCLOCK_REALTIME                = 0x3\n\tCLOCK_THREAD_CPUTIME_ID       = 0x2\n\tCLOCK_VIRTUAL                 = 0x1\n\tCR0                           = 0x0\n\tCR1                           = 0x200\n\tCR2                           = 0x400\n\tCR3                           = 0x600\n\tCRDLY                         = 0x600\n\tCREAD                         = 0x80\n\tCRTSCTS                       = 0x80000000\n\tCS5                           = 0x0\n\tCS6                           = 0x10\n\tCS7                           = 0x20\n\tCS8                           = 0x30\n\tCSIZE                         = 0x30\n\tCSTART                        = 0x11\n\tCSTATUS                       = 0x14\n\tCSTOP                         = 0x13\n\tCSTOPB                        = 0x40\n\tCSUSP                         = 0x1a\n\tCSWTCH                        = 0x1a\n\tDIOC                          = 0x6400\n\tDIOCGETB                      = 0x6402\n\tDIOCGETC                      = 0x6401\n\tDIOCGETP                      = 0x6408\n\tDIOCSETE                      = 0x6403\n\tDIOCSETP                      = 0x6409\n\tDLT_AIRONET_HEADER            = 0x78\n\tDLT_APPLE_IP_OVER_IEEE1394    = 0x8a\n\tDLT_ARCNET                    = 0x7\n\tDLT_ARCNET_LINUX              = 0x81\n\tDLT_ATM_CLIP                  = 0x13\n\tDLT_ATM_RFC1483               = 0xb\n\tDLT_AURORA                    = 0x7e\n\tDLT_AX25                      = 0x3\n\tDLT_BACNET_MS_TP              = 0xa5\n\tDLT_CHAOS                     = 0x5\n\tDLT_CISCO_IOS                 = 0x76\n\tDLT_C_HDLC                    = 0x68\n\tDLT_DOCSIS                    = 0x8f\n\tDLT_ECONET                    = 0x73\n\tDLT_EN10MB                    = 0x1\n\tDLT_EN3MB                     = 0x2\n\tDLT_ENC                       = 0x6d\n\tDLT_ERF_ETH                   = 0xaf\n\tDLT_ERF_POS                   = 0xb0\n\tDLT_FDDI                      = 0xa\n\tDLT_FRELAY                    = 0x6b\n\tDLT_GCOM_SERIAL               = 0xad\n\tDLT_GCOM_T1E1                 = 0xac\n\tDLT_GPF_F                     = 0xab\n\tDLT_GPF_T                     = 0xaa\n\tDLT_GPRS_LLC                  = 0xa9\n\tDLT_HDLC                      = 0x10\n\tDLT_HHDLC                     = 0x79\n\tDLT_HIPPI                     = 0xf\n\tDLT_IBM_SN                    = 0x92\n\tDLT_IBM_SP                    = 0x91\n\tDLT_IEEE802                   = 0x6\n\tDLT_IEEE802_11                = 0x69\n\tDLT_IEEE802_11_RADIO          = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS      = 0xa3\n\tDLT_IPNET                     = 0xe2\n\tDLT_IPOIB                     = 0xa2\n\tDLT_IP_OVER_FC                = 0x7a\n\tDLT_JUNIPER_ATM1              = 0x89\n\tDLT_JUNIPER_ATM2              = 0x87\n\tDLT_JUNIPER_CHDLC             = 0xb5\n\tDLT_JUNIPER_ES                = 0x84\n\tDLT_JUNIPER_ETHER             = 0xb2\n\tDLT_JUNIPER_FRELAY            = 0xb4\n\tDLT_JUNIPER_GGSN              = 0x85\n\tDLT_JUNIPER_MFR               = 0x86\n\tDLT_JUNIPER_MLFR              = 0x83\n\tDLT_JUNIPER_MLPPP             = 0x82\n\tDLT_JUNIPER_MONITOR           = 0xa4\n\tDLT_JUNIPER_PIC_PEER          = 0xae\n\tDLT_JUNIPER_PPP               = 0xb3\n\tDLT_JUNIPER_PPPOE             = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM         = 0xa8\n\tDLT_JUNIPER_SERVICES          = 0x88\n\tDLT_LINUX_IRDA                = 0x90\n\tDLT_LINUX_LAPD                = 0xb1\n\tDLT_LINUX_SLL                 = 0x71\n\tDLT_LOOP                      = 0x6c\n\tDLT_LTALK                     = 0x72\n\tDLT_MTP2                      = 0x8c\n\tDLT_MTP2_WITH_PHDR            = 0x8b\n\tDLT_MTP3                      = 0x8d\n\tDLT_NULL                      = 0x0\n\tDLT_PCI_EXP                   = 0x7d\n\tDLT_PFLOG                     = 0x75\n\tDLT_PFSYNC                    = 0x12\n\tDLT_PPP                       = 0x9\n\tDLT_PPP_BSDOS                 = 0xe\n\tDLT_PPP_PPPD                  = 0xa6\n\tDLT_PRISM_HEADER              = 0x77\n\tDLT_PRONET                    = 0x4\n\tDLT_RAW                       = 0xc\n\tDLT_RAWAF_MASK                = 0x2240000\n\tDLT_RIO                       = 0x7c\n\tDLT_SCCP                      = 0x8e\n\tDLT_SLIP                      = 0x8\n\tDLT_SLIP_BSDOS                = 0xd\n\tDLT_SUNATM                    = 0x7b\n\tDLT_SYMANTEC_FIREWALL         = 0x63\n\tDLT_TZSP                      = 0x80\n\tECHO                          = 0x8\n\tECHOCTL                       = 0x200\n\tECHOE                         = 0x10\n\tECHOK                         = 0x20\n\tECHOKE                        = 0x800\n\tECHONL                        = 0x40\n\tECHOPRT                       = 0x400\n\tEMPTY_SET                     = 0x0\n\tEMT_CPCOVF                    = 0x1\n\tEQUALITY_CHECK                = 0x0\n\tEXTA                          = 0xe\n\tEXTB                          = 0xf\n\tFD_CLOEXEC                    = 0x1\n\tFD_NFDBITS                    = 0x40\n\tFD_SETSIZE                    = 0x10000\n\tFF0                           = 0x0\n\tFF1                           = 0x8000\n\tFFDLY                         = 0x8000\n\tFIORDCHK                      = 0x6603\n\tFLUSHALL                      = 0x1\n\tFLUSHDATA                     = 0x0\n\tFLUSHO                        = 0x2000\n\tF_ALLOCSP                     = 0xa\n\tF_ALLOCSP64                   = 0xa\n\tF_BADFD                       = 0x2e\n\tF_BLKSIZE                     = 0x13\n\tF_BLOCKS                      = 0x12\n\tF_CHKFL                       = 0x8\n\tF_COMPAT                      = 0x8\n\tF_DUP2FD                      = 0x9\n\tF_DUP2FD_CLOEXEC              = 0x24\n\tF_DUPFD                       = 0x0\n\tF_DUPFD_CLOEXEC               = 0x25\n\tF_FLOCK                       = 0x35\n\tF_FLOCK64                     = 0x35\n\tF_FLOCKW                      = 0x36\n\tF_FLOCKW64                    = 0x36\n\tF_FREESP                      = 0xb\n\tF_FREESP64                    = 0xb\n\tF_GETFD                       = 0x1\n\tF_GETFL                       = 0x3\n\tF_GETLK                       = 0xe\n\tF_GETLK64                     = 0xe\n\tF_GETOWN                      = 0x17\n\tF_GETXFL                      = 0x2d\n\tF_HASREMOTELOCKS              = 0x1a\n\tF_ISSTREAM                    = 0xd\n\tF_MANDDNY                     = 0x10\n\tF_MDACC                       = 0x20\n\tF_NODNY                       = 0x0\n\tF_NPRIV                       = 0x10\n\tF_OFD_GETLK                   = 0x2f\n\tF_OFD_GETLK64                 = 0x2f\n\tF_OFD_SETLK                   = 0x30\n\tF_OFD_SETLK64                 = 0x30\n\tF_OFD_SETLKW                  = 0x31\n\tF_OFD_SETLKW64                = 0x31\n\tF_PRIV                        = 0xf\n\tF_QUOTACTL                    = 0x11\n\tF_RDACC                       = 0x1\n\tF_RDDNY                       = 0x1\n\tF_RDLCK                       = 0x1\n\tF_REVOKE                      = 0x19\n\tF_RMACC                       = 0x4\n\tF_RMDNY                       = 0x4\n\tF_RWACC                       = 0x3\n\tF_RWDNY                       = 0x3\n\tF_SETFD                       = 0x2\n\tF_SETFL                       = 0x4\n\tF_SETLK                       = 0x6\n\tF_SETLK64                     = 0x6\n\tF_SETLK64_NBMAND              = 0x2a\n\tF_SETLKW                      = 0x7\n\tF_SETLKW64                    = 0x7\n\tF_SETLK_NBMAND                = 0x2a\n\tF_SETOWN                      = 0x18\n\tF_SHARE                       = 0x28\n\tF_SHARE_NBMAND                = 0x2b\n\tF_UNLCK                       = 0x3\n\tF_UNLKSYS                     = 0x4\n\tF_UNSHARE                     = 0x29\n\tF_WRACC                       = 0x2\n\tF_WRDNY                       = 0x2\n\tF_WRLCK                       = 0x2\n\tHUPCL                         = 0x400\n\tIBSHIFT                       = 0x10\n\tICANON                        = 0x2\n\tICMP6_FILTER                  = 0x1\n\tICRNL                         = 0x100\n\tIEXTEN                        = 0x8000\n\tIFF_ADDRCONF                  = 0x80000\n\tIFF_ALLMULTI                  = 0x200\n\tIFF_ANYCAST                   = 0x400000\n\tIFF_BROADCAST                 = 0x2\n\tIFF_CANTCHANGE                = 0x7f203003b5a\n\tIFF_COS_ENABLED               = 0x200000000\n\tIFF_DEBUG                     = 0x4\n\tIFF_DEPRECATED                = 0x40000\n\tIFF_DHCPRUNNING               = 0x4000\n\tIFF_DUPLICATE                 = 0x4000000000\n\tIFF_FAILED                    = 0x10000000\n\tIFF_FIXEDMTU                  = 0x1000000000\n\tIFF_INACTIVE                  = 0x40000000\n\tIFF_INTELLIGENT               = 0x400\n\tIFF_IPMP                      = 0x8000000000\n\tIFF_IPMP_CANTCHANGE           = 0x10000000\n\tIFF_IPMP_INVALID              = 0x1ec200080\n\tIFF_IPV4                      = 0x1000000\n\tIFF_IPV6                      = 0x2000000\n\tIFF_L3PROTECT                 = 0x40000000000\n\tIFF_LOOPBACK                  = 0x8\n\tIFF_MULTICAST                 = 0x800\n\tIFF_MULTI_BCAST               = 0x1000\n\tIFF_NOACCEPT                  = 0x4000000\n\tIFF_NOARP                     = 0x80\n\tIFF_NOFAILOVER                = 0x8000000\n\tIFF_NOLINKLOCAL               = 0x20000000000\n\tIFF_NOLOCAL                   = 0x20000\n\tIFF_NONUD                     = 0x200000\n\tIFF_NORTEXCH                  = 0x800000\n\tIFF_NOTRAILERS                = 0x20\n\tIFF_NOXMIT                    = 0x10000\n\tIFF_OFFLINE                   = 0x80000000\n\tIFF_POINTOPOINT               = 0x10\n\tIFF_PREFERRED                 = 0x400000000\n\tIFF_PRIVATE                   = 0x8000\n\tIFF_PROMISC                   = 0x100\n\tIFF_ROUTER                    = 0x100000\n\tIFF_RUNNING                   = 0x40\n\tIFF_STANDBY                   = 0x20000000\n\tIFF_TEMPORARY                 = 0x800000000\n\tIFF_UNNUMBERED                = 0x2000\n\tIFF_UP                        = 0x1\n\tIFF_VIRTUAL                   = 0x2000000000\n\tIFF_VRRP                      = 0x10000000000\n\tIFF_XRESOLV                   = 0x100000000\n\tIFNAMSIZ                      = 0x10\n\tIFT_1822                      = 0x2\n\tIFT_6TO4                      = 0xca\n\tIFT_AAL5                      = 0x31\n\tIFT_ARCNET                    = 0x23\n\tIFT_ARCNETPLUS                = 0x24\n\tIFT_ATM                       = 0x25\n\tIFT_CEPT                      = 0x13\n\tIFT_DS3                       = 0x1e\n\tIFT_EON                       = 0x19\n\tIFT_ETHER                     = 0x6\n\tIFT_FDDI                      = 0xf\n\tIFT_FRELAY                    = 0x20\n\tIFT_FRELAYDCE                 = 0x2c\n\tIFT_HDH1822                   = 0x3\n\tIFT_HIPPI                     = 0x2f\n\tIFT_HSSI                      = 0x2e\n\tIFT_HY                        = 0xe\n\tIFT_IB                        = 0xc7\n\tIFT_IPV4                      = 0xc8\n\tIFT_IPV6                      = 0xc9\n\tIFT_ISDNBASIC                 = 0x14\n\tIFT_ISDNPRIMARY               = 0x15\n\tIFT_ISO88022LLC               = 0x29\n\tIFT_ISO88023                  = 0x7\n\tIFT_ISO88024                  = 0x8\n\tIFT_ISO88025                  = 0x9\n\tIFT_ISO88026                  = 0xa\n\tIFT_LAPB                      = 0x10\n\tIFT_LOCALTALK                 = 0x2a\n\tIFT_LOOP                      = 0x18\n\tIFT_MIOX25                    = 0x26\n\tIFT_MODEM                     = 0x30\n\tIFT_NSIP                      = 0x1b\n\tIFT_OTHER                     = 0x1\n\tIFT_P10                       = 0xc\n\tIFT_P80                       = 0xd\n\tIFT_PARA                      = 0x22\n\tIFT_PPP                       = 0x17\n\tIFT_PROPMUX                   = 0x36\n\tIFT_PROPVIRTUAL               = 0x35\n\tIFT_PTPSERIAL                 = 0x16\n\tIFT_RS232                     = 0x21\n\tIFT_SDLC                      = 0x11\n\tIFT_SIP                       = 0x1f\n\tIFT_SLIP                      = 0x1c\n\tIFT_SMDSDXI                   = 0x2b\n\tIFT_SMDSICIP                  = 0x34\n\tIFT_SONET                     = 0x27\n\tIFT_SONETPATH                 = 0x32\n\tIFT_SONETVT                   = 0x33\n\tIFT_STARLAN                   = 0xb\n\tIFT_T1                        = 0x12\n\tIFT_ULTRA                     = 0x1d\n\tIFT_V35                       = 0x2d\n\tIFT_X25                       = 0x5\n\tIFT_X25DDN                    = 0x4\n\tIFT_X25PLE                    = 0x28\n\tIFT_XETHER                    = 0x1a\n\tIGNBRK                        = 0x1\n\tIGNCR                         = 0x80\n\tIGNPAR                        = 0x4\n\tIMAXBEL                       = 0x2000\n\tINLCR                         = 0x40\n\tINPCK                         = 0x10\n\tIN_AUTOCONF_MASK              = 0xffff0000\n\tIN_AUTOCONF_NET               = 0xa9fe0000\n\tIN_CLASSA_HOST                = 0xffffff\n\tIN_CLASSA_MAX                 = 0x80\n\tIN_CLASSA_NET                 = 0xff000000\n\tIN_CLASSA_NSHIFT              = 0x18\n\tIN_CLASSB_HOST                = 0xffff\n\tIN_CLASSB_MAX                 = 0x10000\n\tIN_CLASSB_NET                 = 0xffff0000\n\tIN_CLASSB_NSHIFT              = 0x10\n\tIN_CLASSC_HOST                = 0xff\n\tIN_CLASSC_NET                 = 0xffffff00\n\tIN_CLASSC_NSHIFT              = 0x8\n\tIN_CLASSD_HOST                = 0xfffffff\n\tIN_CLASSD_NET                 = 0xf0000000\n\tIN_CLASSD_NSHIFT              = 0x1c\n\tIN_CLASSE_NET                 = 0xffffffff\n\tIN_LOOPBACKNET                = 0x7f\n\tIN_PRIVATE12_MASK             = 0xfff00000\n\tIN_PRIVATE12_NET              = 0xac100000\n\tIN_PRIVATE16_MASK             = 0xffff0000\n\tIN_PRIVATE16_NET              = 0xc0a80000\n\tIN_PRIVATE8_MASK              = 0xff000000\n\tIN_PRIVATE8_NET               = 0xa000000\n\tIPPROTO_AH                    = 0x33\n\tIPPROTO_DSTOPTS               = 0x3c\n\tIPPROTO_EGP                   = 0x8\n\tIPPROTO_ENCAP                 = 0x4\n\tIPPROTO_EON                   = 0x50\n\tIPPROTO_ESP                   = 0x32\n\tIPPROTO_FRAGMENT              = 0x2c\n\tIPPROTO_GGP                   = 0x3\n\tIPPROTO_HELLO                 = 0x3f\n\tIPPROTO_HOPOPTS               = 0x0\n\tIPPROTO_ICMP                  = 0x1\n\tIPPROTO_ICMPV6                = 0x3a\n\tIPPROTO_IDP                   = 0x16\n\tIPPROTO_IGMP                  = 0x2\n\tIPPROTO_IP                    = 0x0\n\tIPPROTO_IPV6                  = 0x29\n\tIPPROTO_MAX                   = 0x100\n\tIPPROTO_ND                    = 0x4d\n\tIPPROTO_NONE                  = 0x3b\n\tIPPROTO_OSPF                  = 0x59\n\tIPPROTO_PIM                   = 0x67\n\tIPPROTO_PUP                   = 0xc\n\tIPPROTO_RAW                   = 0xff\n\tIPPROTO_ROUTING               = 0x2b\n\tIPPROTO_RSVP                  = 0x2e\n\tIPPROTO_SCTP                  = 0x84\n\tIPPROTO_TCP                   = 0x6\n\tIPPROTO_UDP                   = 0x11\n\tIPV6_ADD_MEMBERSHIP           = 0x9\n\tIPV6_BOUND_IF                 = 0x41\n\tIPV6_CHECKSUM                 = 0x18\n\tIPV6_DONTFRAG                 = 0x21\n\tIPV6_DROP_MEMBERSHIP          = 0xa\n\tIPV6_DSTOPTS                  = 0xf\n\tIPV6_FLOWINFO_FLOWLABEL       = 0xffff0f00\n\tIPV6_FLOWINFO_TCLASS          = 0xf00f\n\tIPV6_HOPLIMIT                 = 0xc\n\tIPV6_HOPOPTS                  = 0xe\n\tIPV6_JOIN_GROUP               = 0x9\n\tIPV6_LEAVE_GROUP              = 0xa\n\tIPV6_MULTICAST_HOPS           = 0x7\n\tIPV6_MULTICAST_IF             = 0x6\n\tIPV6_MULTICAST_LOOP           = 0x8\n\tIPV6_NEXTHOP                  = 0xd\n\tIPV6_PAD1_OPT                 = 0x0\n\tIPV6_PATHMTU                  = 0x25\n\tIPV6_PKTINFO                  = 0xb\n\tIPV6_PREFER_SRC_CGA           = 0x20\n\tIPV6_PREFER_SRC_CGADEFAULT    = 0x10\n\tIPV6_PREFER_SRC_CGAMASK       = 0x30\n\tIPV6_PREFER_SRC_COA           = 0x2\n\tIPV6_PREFER_SRC_DEFAULT       = 0x15\n\tIPV6_PREFER_SRC_HOME          = 0x1\n\tIPV6_PREFER_SRC_MASK          = 0x3f\n\tIPV6_PREFER_SRC_MIPDEFAULT    = 0x1\n\tIPV6_PREFER_SRC_MIPMASK       = 0x3\n\tIPV6_PREFER_SRC_NONCGA        = 0x10\n\tIPV6_PREFER_SRC_PUBLIC        = 0x4\n\tIPV6_PREFER_SRC_TMP           = 0x8\n\tIPV6_PREFER_SRC_TMPDEFAULT    = 0x4\n\tIPV6_PREFER_SRC_TMPMASK       = 0xc\n\tIPV6_RECVDSTOPTS              = 0x28\n\tIPV6_RECVHOPLIMIT             = 0x13\n\tIPV6_RECVHOPOPTS              = 0x14\n\tIPV6_RECVPATHMTU              = 0x24\n\tIPV6_RECVPKTINFO              = 0x12\n\tIPV6_RECVRTHDR                = 0x16\n\tIPV6_RECVRTHDRDSTOPTS         = 0x17\n\tIPV6_RECVTCLASS               = 0x19\n\tIPV6_RTHDR                    = 0x10\n\tIPV6_RTHDRDSTOPTS             = 0x11\n\tIPV6_RTHDR_TYPE_0             = 0x0\n\tIPV6_SEC_OPT                  = 0x22\n\tIPV6_SRC_PREFERENCES          = 0x23\n\tIPV6_TCLASS                   = 0x26\n\tIPV6_UNICAST_HOPS             = 0x5\n\tIPV6_UNSPEC_SRC               = 0x42\n\tIPV6_USE_MIN_MTU              = 0x20\n\tIPV6_V6ONLY                   = 0x27\n\tIP_ADD_MEMBERSHIP             = 0x13\n\tIP_ADD_SOURCE_MEMBERSHIP      = 0x17\n\tIP_BLOCK_SOURCE               = 0x15\n\tIP_BOUND_IF                   = 0x41\n\tIP_BROADCAST                  = 0x106\n\tIP_BROADCAST_TTL              = 0x43\n\tIP_DEFAULT_MULTICAST_LOOP     = 0x1\n\tIP_DEFAULT_MULTICAST_TTL      = 0x1\n\tIP_DF                         = 0x4000\n\tIP_DHCPINIT_IF                = 0x45\n\tIP_DONTFRAG                   = 0x1b\n\tIP_DONTROUTE                  = 0x105\n\tIP_DROP_MEMBERSHIP            = 0x14\n\tIP_DROP_SOURCE_MEMBERSHIP     = 0x18\n\tIP_HDRINCL                    = 0x2\n\tIP_MAXPACKET                  = 0xffff\n\tIP_MF                         = 0x2000\n\tIP_MSS                        = 0x240\n\tIP_MULTICAST_IF               = 0x10\n\tIP_MULTICAST_LOOP             = 0x12\n\tIP_MULTICAST_TTL              = 0x11\n\tIP_NEXTHOP                    = 0x19\n\tIP_OPTIONS                    = 0x1\n\tIP_PKTINFO                    = 0x1a\n\tIP_RECVDSTADDR                = 0x7\n\tIP_RECVIF                     = 0x9\n\tIP_RECVOPTS                   = 0x5\n\tIP_RECVPKTINFO                = 0x1a\n\tIP_RECVRETOPTS                = 0x6\n\tIP_RECVSLLA                   = 0xa\n\tIP_RECVTOS                    = 0xc\n\tIP_RECVTTL                    = 0xb\n\tIP_RETOPTS                    = 0x8\n\tIP_REUSEADDR                  = 0x104\n\tIP_SEC_OPT                    = 0x22\n\tIP_TOS                        = 0x3\n\tIP_TTL                        = 0x4\n\tIP_UNBLOCK_SOURCE             = 0x16\n\tIP_UNSPEC_SRC                 = 0x42\n\tISIG                          = 0x1\n\tISTRIP                        = 0x20\n\tIUCLC                         = 0x200\n\tIXANY                         = 0x800\n\tIXOFF                         = 0x1000\n\tIXON                          = 0x400\n\tLOCK_EX                       = 0x2\n\tLOCK_NB                       = 0x4\n\tLOCK_SH                       = 0x1\n\tLOCK_UN                       = 0x8\n\tMADV_ACCESS_DEFAULT           = 0x6\n\tMADV_ACCESS_LWP               = 0x7\n\tMADV_ACCESS_MANY              = 0x8\n\tMADV_DONTNEED                 = 0x4\n\tMADV_FREE                     = 0x5\n\tMADV_NORMAL                   = 0x0\n\tMADV_PURGE                    = 0x9\n\tMADV_RANDOM                   = 0x1\n\tMADV_SEQUENTIAL               = 0x2\n\tMADV_WILLNEED                 = 0x3\n\tMAP_32BIT                     = 0x80\n\tMAP_ALIGN                     = 0x200\n\tMAP_ANON                      = 0x100\n\tMAP_ANONYMOUS                 = 0x100\n\tMAP_FILE                      = 0x0\n\tMAP_FIXED                     = 0x10\n\tMAP_INITDATA                  = 0x800\n\tMAP_NORESERVE                 = 0x40\n\tMAP_PRIVATE                   = 0x2\n\tMAP_RENAME                    = 0x20\n\tMAP_SHARED                    = 0x1\n\tMAP_TEXT                      = 0x400\n\tMAP_TYPE                      = 0xf\n\tMCAST_BLOCK_SOURCE            = 0x2b\n\tMCAST_EXCLUDE                 = 0x2\n\tMCAST_INCLUDE                 = 0x1\n\tMCAST_JOIN_GROUP              = 0x29\n\tMCAST_JOIN_SOURCE_GROUP       = 0x2d\n\tMCAST_LEAVE_GROUP             = 0x2a\n\tMCAST_LEAVE_SOURCE_GROUP      = 0x2e\n\tMCAST_UNBLOCK_SOURCE          = 0x2c\n\tMCL_CURRENT                   = 0x1\n\tMCL_FUTURE                    = 0x2\n\tMSG_CTRUNC                    = 0x10\n\tMSG_DONTROUTE                 = 0x4\n\tMSG_DONTWAIT                  = 0x80\n\tMSG_DUPCTRL                   = 0x800\n\tMSG_EOR                       = 0x8\n\tMSG_MAXIOVLEN                 = 0x10\n\tMSG_NOSIGNAL                  = 0x200\n\tMSG_NOTIFICATION              = 0x100\n\tMSG_OOB                       = 0x1\n\tMSG_PEEK                      = 0x2\n\tMSG_TRUNC                     = 0x20\n\tMSG_WAITALL                   = 0x40\n\tMSG_XPG4_2                    = 0x8000\n\tMS_ASYNC                      = 0x1\n\tMS_INVALIDATE                 = 0x2\n\tMS_OLDSYNC                    = 0x0\n\tMS_SYNC                       = 0x4\n\tM_FLUSH                       = 0x86\n\tNAME_MAX                      = 0xff\n\tNEWDEV                        = 0x1\n\tNFDBITS                       = 0x40\n\tNL0                           = 0x0\n\tNL1                           = 0x100\n\tNLDLY                         = 0x100\n\tNOFLSH                        = 0x80\n\tOCRNL                         = 0x8\n\tOFDEL                         = 0x80\n\tOFILL                         = 0x40\n\tOLCUC                         = 0x2\n\tOLDDEV                        = 0x0\n\tONBITSMAJOR                   = 0x7\n\tONBITSMINOR                   = 0x8\n\tONLCR                         = 0x4\n\tONLRET                        = 0x20\n\tONOCR                         = 0x10\n\tOPENFAIL                      = -0x1\n\tOPOST                         = 0x1\n\tO_ACCMODE                     = 0x600003\n\tO_APPEND                      = 0x8\n\tO_CLOEXEC                     = 0x800000\n\tO_CREAT                       = 0x100\n\tO_DIRECT                      = 0x2000000\n\tO_DIRECTORY                   = 0x1000000\n\tO_DSYNC                       = 0x40\n\tO_EXCL                        = 0x400\n\tO_EXEC                        = 0x400000\n\tO_LARGEFILE                   = 0x2000\n\tO_NDELAY                      = 0x4\n\tO_NOCTTY                      = 0x800\n\tO_NOFOLLOW                    = 0x20000\n\tO_NOLINKS                     = 0x40000\n\tO_NONBLOCK                    = 0x80\n\tO_RDONLY                      = 0x0\n\tO_RDWR                        = 0x2\n\tO_RSYNC                       = 0x8000\n\tO_SEARCH                      = 0x200000\n\tO_SIOCGIFCONF                 = -0x3ff796ec\n\tO_SIOCGLIFCONF                = -0x3fef9688\n\tO_SYNC                        = 0x10\n\tO_TRUNC                       = 0x200\n\tO_WRONLY                      = 0x1\n\tO_XATTR                       = 0x4000\n\tPARENB                        = 0x100\n\tPAREXT                        = 0x100000\n\tPARMRK                        = 0x8\n\tPARODD                        = 0x200\n\tPENDIN                        = 0x4000\n\tPRIO_PGRP                     = 0x1\n\tPRIO_PROCESS                  = 0x0\n\tPRIO_USER                     = 0x2\n\tPROT_EXEC                     = 0x4\n\tPROT_NONE                     = 0x0\n\tPROT_READ                     = 0x1\n\tPROT_WRITE                    = 0x2\n\tRLIMIT_AS                     = 0x6\n\tRLIMIT_CORE                   = 0x4\n\tRLIMIT_CPU                    = 0x0\n\tRLIMIT_DATA                   = 0x2\n\tRLIMIT_FSIZE                  = 0x1\n\tRLIMIT_NOFILE                 = 0x5\n\tRLIMIT_STACK                  = 0x3\n\tRLIM_INFINITY                 = 0xfffffffffffffffd\n\tRTAX_AUTHOR                   = 0x6\n\tRTAX_BRD                      = 0x7\n\tRTAX_DST                      = 0x0\n\tRTAX_GATEWAY                  = 0x1\n\tRTAX_GENMASK                  = 0x3\n\tRTAX_IFA                      = 0x5\n\tRTAX_IFP                      = 0x4\n\tRTAX_MAX                      = 0x9\n\tRTAX_NETMASK                  = 0x2\n\tRTAX_SRC                      = 0x8\n\tRTA_AUTHOR                    = 0x40\n\tRTA_BRD                       = 0x80\n\tRTA_DST                       = 0x1\n\tRTA_GATEWAY                   = 0x2\n\tRTA_GENMASK                   = 0x8\n\tRTA_IFA                       = 0x20\n\tRTA_IFP                       = 0x10\n\tRTA_NETMASK                   = 0x4\n\tRTA_NUMBITS                   = 0x9\n\tRTA_SRC                       = 0x100\n\tRTF_BLACKHOLE                 = 0x1000\n\tRTF_CLONING                   = 0x100\n\tRTF_DONE                      = 0x40\n\tRTF_DYNAMIC                   = 0x10\n\tRTF_GATEWAY                   = 0x2\n\tRTF_HOST                      = 0x4\n\tRTF_INDIRECT                  = 0x40000\n\tRTF_KERNEL                    = 0x80000\n\tRTF_LLINFO                    = 0x400\n\tRTF_MASK                      = 0x80\n\tRTF_MODIFIED                  = 0x20\n\tRTF_MULTIRT                   = 0x10000\n\tRTF_PRIVATE                   = 0x2000\n\tRTF_PROTO1                    = 0x8000\n\tRTF_PROTO2                    = 0x4000\n\tRTF_REJECT                    = 0x8\n\tRTF_SETSRC                    = 0x20000\n\tRTF_STATIC                    = 0x800\n\tRTF_UP                        = 0x1\n\tRTF_XRESOLVE                  = 0x200\n\tRTF_ZONE                      = 0x100000\n\tRTM_ADD                       = 0x1\n\tRTM_CHANGE                    = 0x3\n\tRTM_CHGADDR                   = 0xf\n\tRTM_DELADDR                   = 0xd\n\tRTM_DELETE                    = 0x2\n\tRTM_FREEADDR                  = 0x10\n\tRTM_GET                       = 0x4\n\tRTM_IFINFO                    = 0xe\n\tRTM_LOCK                      = 0x8\n\tRTM_LOSING                    = 0x5\n\tRTM_MISS                      = 0x7\n\tRTM_NEWADDR                   = 0xc\n\tRTM_OLDADD                    = 0x9\n\tRTM_OLDDEL                    = 0xa\n\tRTM_REDIRECT                  = 0x6\n\tRTM_RESOLVE                   = 0xb\n\tRTM_VERSION                   = 0x3\n\tRTV_EXPIRE                    = 0x4\n\tRTV_HOPCOUNT                  = 0x2\n\tRTV_MTU                       = 0x1\n\tRTV_RPIPE                     = 0x8\n\tRTV_RTT                       = 0x40\n\tRTV_RTTVAR                    = 0x80\n\tRTV_SPIPE                     = 0x10\n\tRTV_SSTHRESH                  = 0x20\n\tRT_AWARE                      = 0x1\n\tRUSAGE_CHILDREN               = -0x1\n\tRUSAGE_SELF                   = 0x0\n\tSCM_RIGHTS                    = 0x1010\n\tSCM_TIMESTAMP                 = 0x1013\n\tSCM_UCRED                     = 0x1012\n\tSHUT_RD                       = 0x0\n\tSHUT_RDWR                     = 0x2\n\tSHUT_WR                       = 0x1\n\tSIG2STR_MAX                   = 0x20\n\tSIOCADDMULTI                  = -0x7fdf96cf\n\tSIOCADDRT                     = -0x7fcf8df6\n\tSIOCATMARK                    = 0x40047307\n\tSIOCDARP                      = -0x7fdb96e0\n\tSIOCDELMULTI                  = -0x7fdf96ce\n\tSIOCDELRT                     = -0x7fcf8df5\n\tSIOCDXARP                     = -0x7fff9658\n\tSIOCGARP                      = -0x3fdb96e1\n\tSIOCGDSTINFO                  = -0x3fff965c\n\tSIOCGENADDR                   = -0x3fdf96ab\n\tSIOCGENPSTATS                 = -0x3fdf96c7\n\tSIOCGETLSGCNT                 = -0x3fef8deb\n\tSIOCGETNAME                   = 0x40107334\n\tSIOCGETPEER                   = 0x40107335\n\tSIOCGETPROP                   = -0x3fff8f44\n\tSIOCGETSGCNT                  = -0x3feb8deb\n\tSIOCGETSYNC                   = -0x3fdf96d3\n\tSIOCGETVIFCNT                 = -0x3feb8dec\n\tSIOCGHIWAT                    = 0x40047301\n\tSIOCGIFADDR                   = -0x3fdf96f3\n\tSIOCGIFBRDADDR                = -0x3fdf96e9\n\tSIOCGIFCONF                   = -0x3ff796a4\n\tSIOCGIFDSTADDR                = -0x3fdf96f1\n\tSIOCGIFFLAGS                  = -0x3fdf96ef\n\tSIOCGIFHWADDR                 = -0x3fdf9647\n\tSIOCGIFINDEX                  = -0x3fdf96a6\n\tSIOCGIFMEM                    = -0x3fdf96ed\n\tSIOCGIFMETRIC                 = -0x3fdf96e5\n\tSIOCGIFMTU                    = -0x3fdf96ea\n\tSIOCGIFMUXID                  = -0x3fdf96a8\n\tSIOCGIFNETMASK                = -0x3fdf96e7\n\tSIOCGIFNUM                    = 0x40046957\n\tSIOCGIP6ADDRPOLICY            = -0x3fff965e\n\tSIOCGIPMSFILTER               = -0x3ffb964c\n\tSIOCGLIFADDR                  = -0x3f87968f\n\tSIOCGLIFBINDING               = -0x3f879666\n\tSIOCGLIFBRDADDR               = -0x3f879685\n\tSIOCGLIFCONF                  = -0x3fef965b\n\tSIOCGLIFDADSTATE              = -0x3f879642\n\tSIOCGLIFDSTADDR               = -0x3f87968d\n\tSIOCGLIFFLAGS                 = -0x3f87968b\n\tSIOCGLIFGROUPINFO             = -0x3f4b9663\n\tSIOCGLIFGROUPNAME             = -0x3f879664\n\tSIOCGLIFHWADDR                = -0x3f879640\n\tSIOCGLIFINDEX                 = -0x3f87967b\n\tSIOCGLIFLNKINFO               = -0x3f879674\n\tSIOCGLIFMETRIC                = -0x3f879681\n\tSIOCGLIFMTU                   = -0x3f879686\n\tSIOCGLIFMUXID                 = -0x3f87967d\n\tSIOCGLIFNETMASK               = -0x3f879683\n\tSIOCGLIFNUM                   = -0x3ff3967e\n\tSIOCGLIFSRCOF                 = -0x3fef964f\n\tSIOCGLIFSUBNET                = -0x3f879676\n\tSIOCGLIFTOKEN                 = -0x3f879678\n\tSIOCGLIFUSESRC                = -0x3f879651\n\tSIOCGLIFZONE                  = -0x3f879656\n\tSIOCGLOWAT                    = 0x40047303\n\tSIOCGMSFILTER                 = -0x3ffb964e\n\tSIOCGPGRP                     = 0x40047309\n\tSIOCGSTAMP                    = -0x3fef9646\n\tSIOCGXARP                     = -0x3fff9659\n\tSIOCIFDETACH                  = -0x7fdf96c8\n\tSIOCILB                       = -0x3ffb9645\n\tSIOCLIFADDIF                  = -0x3f879691\n\tSIOCLIFDELND                  = -0x7f879673\n\tSIOCLIFGETND                  = -0x3f879672\n\tSIOCLIFREMOVEIF               = -0x7f879692\n\tSIOCLIFSETND                  = -0x7f879671\n\tSIOCLOWER                     = -0x7fdf96d7\n\tSIOCSARP                      = -0x7fdb96e2\n\tSIOCSCTPGOPT                  = -0x3fef9653\n\tSIOCSCTPPEELOFF               = -0x3ffb9652\n\tSIOCSCTPSOPT                  = -0x7fef9654\n\tSIOCSENABLESDP                = -0x3ffb9649\n\tSIOCSETPROP                   = -0x7ffb8f43\n\tSIOCSETSYNC                   = -0x7fdf96d4\n\tSIOCSHIWAT                    = -0x7ffb8d00\n\tSIOCSIFADDR                   = -0x7fdf96f4\n\tSIOCSIFBRDADDR                = -0x7fdf96e8\n\tSIOCSIFDSTADDR                = -0x7fdf96f2\n\tSIOCSIFFLAGS                  = -0x7fdf96f0\n\tSIOCSIFINDEX                  = -0x7fdf96a5\n\tSIOCSIFMEM                    = -0x7fdf96ee\n\tSIOCSIFMETRIC                 = -0x7fdf96e4\n\tSIOCSIFMTU                    = -0x7fdf96eb\n\tSIOCSIFMUXID                  = -0x7fdf96a7\n\tSIOCSIFNAME                   = -0x7fdf96b7\n\tSIOCSIFNETMASK                = -0x7fdf96e6\n\tSIOCSIP6ADDRPOLICY            = -0x7fff965d\n\tSIOCSIPMSFILTER               = -0x7ffb964b\n\tSIOCSLGETREQ                  = -0x3fdf96b9\n\tSIOCSLIFADDR                  = -0x7f879690\n\tSIOCSLIFBRDADDR               = -0x7f879684\n\tSIOCSLIFDSTADDR               = -0x7f87968e\n\tSIOCSLIFFLAGS                 = -0x7f87968c\n\tSIOCSLIFGROUPNAME             = -0x7f879665\n\tSIOCSLIFINDEX                 = -0x7f87967a\n\tSIOCSLIFLNKINFO               = -0x7f879675\n\tSIOCSLIFMETRIC                = -0x7f879680\n\tSIOCSLIFMTU                   = -0x7f879687\n\tSIOCSLIFMUXID                 = -0x7f87967c\n\tSIOCSLIFNAME                  = -0x3f87967f\n\tSIOCSLIFNETMASK               = -0x7f879682\n\tSIOCSLIFPREFIX                = -0x3f879641\n\tSIOCSLIFSUBNET                = -0x7f879677\n\tSIOCSLIFTOKEN                 = -0x7f879679\n\tSIOCSLIFUSESRC                = -0x7f879650\n\tSIOCSLIFZONE                  = -0x7f879655\n\tSIOCSLOWAT                    = -0x7ffb8cfe\n\tSIOCSLSTAT                    = -0x7fdf96b8\n\tSIOCSMSFILTER                 = -0x7ffb964d\n\tSIOCSPGRP                     = -0x7ffb8cf8\n\tSIOCSPROMISC                  = -0x7ffb96d0\n\tSIOCSQPTR                     = -0x3ffb9648\n\tSIOCSSDSTATS                  = -0x3fdf96d2\n\tSIOCSSESTATS                  = -0x3fdf96d1\n\tSIOCSXARP                     = -0x7fff965a\n\tSIOCTMYADDR                   = -0x3ff79670\n\tSIOCTMYSITE                   = -0x3ff7966e\n\tSIOCTONLINK                   = -0x3ff7966f\n\tSIOCUPPER                     = -0x7fdf96d8\n\tSIOCX25RCV                    = -0x3fdf96c4\n\tSIOCX25TBL                    = -0x3fdf96c3\n\tSIOCX25XMT                    = -0x3fdf96c5\n\tSIOCXPROTO                    = 0x20007337\n\tSOCK_CLOEXEC                  = 0x80000\n\tSOCK_DGRAM                    = 0x1\n\tSOCK_NDELAY                   = 0x200000\n\tSOCK_NONBLOCK                 = 0x100000\n\tSOCK_RAW                      = 0x4\n\tSOCK_RDM                      = 0x5\n\tSOCK_SEQPACKET                = 0x6\n\tSOCK_STREAM                   = 0x2\n\tSOCK_TYPE_MASK                = 0xffff\n\tSOL_FILTER                    = 0xfffc\n\tSOL_PACKET                    = 0xfffd\n\tSOL_ROUTE                     = 0xfffe\n\tSOL_SOCKET                    = 0xffff\n\tSOMAXCONN                     = 0x80\n\tSO_ACCEPTCONN                 = 0x2\n\tSO_ALL                        = 0x3f\n\tSO_ALLZONES                   = 0x1014\n\tSO_ANON_MLP                   = 0x100a\n\tSO_ATTACH_FILTER              = 0x40000001\n\tSO_BAND                       = 0x4000\n\tSO_BROADCAST                  = 0x20\n\tSO_COPYOPT                    = 0x80000\n\tSO_DEBUG                      = 0x1\n\tSO_DELIM                      = 0x8000\n\tSO_DETACH_FILTER              = 0x40000002\n\tSO_DGRAM_ERRIND               = 0x200\n\tSO_DOMAIN                     = 0x100c\n\tSO_DONTLINGER                 = -0x81\n\tSO_DONTROUTE                  = 0x10\n\tSO_ERROPT                     = 0x40000\n\tSO_ERROR                      = 0x1007\n\tSO_EXCLBIND                   = 0x1015\n\tSO_HIWAT                      = 0x10\n\tSO_ISNTTY                     = 0x800\n\tSO_ISTTY                      = 0x400\n\tSO_KEEPALIVE                  = 0x8\n\tSO_LINGER                     = 0x80\n\tSO_LOWAT                      = 0x20\n\tSO_MAC_EXEMPT                 = 0x100b\n\tSO_MAC_IMPLICIT               = 0x1016\n\tSO_MAXBLK                     = 0x100000\n\tSO_MAXPSZ                     = 0x8\n\tSO_MINPSZ                     = 0x4\n\tSO_MREADOFF                   = 0x80\n\tSO_MREADON                    = 0x40\n\tSO_NDELOFF                    = 0x200\n\tSO_NDELON                     = 0x100\n\tSO_NODELIM                    = 0x10000\n\tSO_OOBINLINE                  = 0x100\n\tSO_PROTOTYPE                  = 0x1009\n\tSO_RCVBUF                     = 0x1002\n\tSO_RCVLOWAT                   = 0x1004\n\tSO_RCVPSH                     = 0x100d\n\tSO_RCVTIMEO                   = 0x1006\n\tSO_READOPT                    = 0x1\n\tSO_RECVUCRED                  = 0x400\n\tSO_REUSEADDR                  = 0x4\n\tSO_SECATTR                    = 0x1011\n\tSO_SNDBUF                     = 0x1001\n\tSO_SNDLOWAT                   = 0x1003\n\tSO_SNDTIMEO                   = 0x1005\n\tSO_STRHOLD                    = 0x20000\n\tSO_TAIL                       = 0x200000\n\tSO_TIMESTAMP                  = 0x1013\n\tSO_TONSTOP                    = 0x2000\n\tSO_TOSTOP                     = 0x1000\n\tSO_TYPE                       = 0x1008\n\tSO_USELOOPBACK                = 0x40\n\tSO_VRRP                       = 0x1017\n\tSO_WROFF                      = 0x2\n\tS_ENFMT                       = 0x400\n\tS_IAMB                        = 0x1ff\n\tS_IEXEC                       = 0x40\n\tS_IFBLK                       = 0x6000\n\tS_IFCHR                       = 0x2000\n\tS_IFDIR                       = 0x4000\n\tS_IFDOOR                      = 0xd000\n\tS_IFIFO                       = 0x1000\n\tS_IFLNK                       = 0xa000\n\tS_IFMT                        = 0xf000\n\tS_IFNAM                       = 0x5000\n\tS_IFPORT                      = 0xe000\n\tS_IFREG                       = 0x8000\n\tS_IFSOCK                      = 0xc000\n\tS_INSEM                       = 0x1\n\tS_INSHD                       = 0x2\n\tS_IREAD                       = 0x100\n\tS_IRGRP                       = 0x20\n\tS_IROTH                       = 0x4\n\tS_IRUSR                       = 0x100\n\tS_IRWXG                       = 0x38\n\tS_IRWXO                       = 0x7\n\tS_IRWXU                       = 0x1c0\n\tS_ISGID                       = 0x400\n\tS_ISUID                       = 0x800\n\tS_ISVTX                       = 0x200\n\tS_IWGRP                       = 0x10\n\tS_IWOTH                       = 0x2\n\tS_IWRITE                      = 0x80\n\tS_IWUSR                       = 0x80\n\tS_IXGRP                       = 0x8\n\tS_IXOTH                       = 0x1\n\tS_IXUSR                       = 0x40\n\tTAB0                          = 0x0\n\tTAB1                          = 0x800\n\tTAB2                          = 0x1000\n\tTAB3                          = 0x1800\n\tTABDLY                        = 0x1800\n\tTCFLSH                        = 0x5407\n\tTCGETA                        = 0x5401\n\tTCGETS                        = 0x540d\n\tTCIFLUSH                      = 0x0\n\tTCIOFF                        = 0x2\n\tTCIOFLUSH                     = 0x2\n\tTCION                         = 0x3\n\tTCOFLUSH                      = 0x1\n\tTCOOFF                        = 0x0\n\tTCOON                         = 0x1\n\tTCP_ABORT_THRESHOLD           = 0x11\n\tTCP_ANONPRIVBIND              = 0x20\n\tTCP_CONGESTION                = 0x25\n\tTCP_CONN_ABORT_THRESHOLD      = 0x13\n\tTCP_CONN_NOTIFY_THRESHOLD     = 0x12\n\tTCP_CORK                      = 0x18\n\tTCP_EXCLBIND                  = 0x21\n\tTCP_INIT_CWND                 = 0x15\n\tTCP_KEEPALIVE                 = 0x8\n\tTCP_KEEPALIVE_ABORT_THRESHOLD = 0x17\n\tTCP_KEEPALIVE_THRESHOLD       = 0x16\n\tTCP_KEEPCNT                   = 0x23\n\tTCP_KEEPIDLE                  = 0x22\n\tTCP_KEEPINTVL                 = 0x24\n\tTCP_LINGER2                   = 0x1c\n\tTCP_MAXSEG                    = 0x2\n\tTCP_MSS                       = 0x218\n\tTCP_NODELAY                   = 0x1\n\tTCP_NOTIFY_THRESHOLD          = 0x10\n\tTCP_RECVDSTADDR               = 0x14\n\tTCP_RTO_INITIAL               = 0x19\n\tTCP_RTO_MAX                   = 0x1b\n\tTCP_RTO_MIN                   = 0x1a\n\tTCSAFLUSH                     = 0x5410\n\tTCSBRK                        = 0x5405\n\tTCSETA                        = 0x5402\n\tTCSETAF                       = 0x5404\n\tTCSETAW                       = 0x5403\n\tTCSETS                        = 0x540e\n\tTCSETSF                       = 0x5410\n\tTCSETSW                       = 0x540f\n\tTCXONC                        = 0x5406\n\tTIMER_ABSTIME                 = 0x1\n\tTIMER_RELTIME                 = 0x0\n\tTIOC                          = 0x5400\n\tTIOCCBRK                      = 0x747a\n\tTIOCCDTR                      = 0x7478\n\tTIOCCILOOP                    = 0x746c\n\tTIOCEXCL                      = 0x740d\n\tTIOCFLUSH                     = 0x7410\n\tTIOCGETC                      = 0x7412\n\tTIOCGETD                      = 0x7400\n\tTIOCGETP                      = 0x7408\n\tTIOCGLTC                      = 0x7474\n\tTIOCGPGRP                     = 0x7414\n\tTIOCGPPS                      = 0x547d\n\tTIOCGPPSEV                    = 0x547f\n\tTIOCGSID                      = 0x7416\n\tTIOCGSOFTCAR                  = 0x5469\n\tTIOCGWINSZ                    = 0x5468\n\tTIOCHPCL                      = 0x7402\n\tTIOCKBOF                      = 0x5409\n\tTIOCKBON                      = 0x5408\n\tTIOCLBIC                      = 0x747e\n\tTIOCLBIS                      = 0x747f\n\tTIOCLGET                      = 0x747c\n\tTIOCLSET                      = 0x747d\n\tTIOCMBIC                      = 0x741c\n\tTIOCMBIS                      = 0x741b\n\tTIOCMGET                      = 0x741d\n\tTIOCMSET                      = 0x741a\n\tTIOCM_CAR                     = 0x40\n\tTIOCM_CD                      = 0x40\n\tTIOCM_CTS                     = 0x20\n\tTIOCM_DSR                     = 0x100\n\tTIOCM_DTR                     = 0x2\n\tTIOCM_LE                      = 0x1\n\tTIOCM_RI                      = 0x80\n\tTIOCM_RNG                     = 0x80\n\tTIOCM_RTS                     = 0x4\n\tTIOCM_SR                      = 0x10\n\tTIOCM_ST                      = 0x8\n\tTIOCNOTTY                     = 0x7471\n\tTIOCNXCL                      = 0x740e\n\tTIOCOUTQ                      = 0x7473\n\tTIOCREMOTE                    = 0x741e\n\tTIOCSBRK                      = 0x747b\n\tTIOCSCTTY                     = 0x7484\n\tTIOCSDTR                      = 0x7479\n\tTIOCSETC                      = 0x7411\n\tTIOCSETD                      = 0x7401\n\tTIOCSETN                      = 0x740a\n\tTIOCSETP                      = 0x7409\n\tTIOCSIGNAL                    = 0x741f\n\tTIOCSILOOP                    = 0x746d\n\tTIOCSLTC                      = 0x7475\n\tTIOCSPGRP                     = 0x7415\n\tTIOCSPPS                      = 0x547e\n\tTIOCSSOFTCAR                  = 0x546a\n\tTIOCSTART                     = 0x746e\n\tTIOCSTI                       = 0x7417\n\tTIOCSTOP                      = 0x746f\n\tTIOCSWINSZ                    = 0x5467\n\tTOSTOP                        = 0x100\n\tUTIME_NOW                     = -0x1\n\tUTIME_OMIT                    = -0x2\n\tVCEOF                         = 0x8\n\tVCEOL                         = 0x9\n\tVDISCARD                      = 0xd\n\tVDSUSP                        = 0xb\n\tVEOF                          = 0x4\n\tVEOL                          = 0x5\n\tVEOL2                         = 0x6\n\tVERASE                        = 0x2\n\tVERASE2                       = 0x11\n\tVINTR                         = 0x0\n\tVKILL                         = 0x3\n\tVLNEXT                        = 0xf\n\tVMIN                          = 0x4\n\tVQUIT                         = 0x1\n\tVREPRINT                      = 0xc\n\tVSTART                        = 0x8\n\tVSTATUS                       = 0x10\n\tVSTOP                         = 0x9\n\tVSUSP                         = 0xa\n\tVSWTCH                        = 0x7\n\tVT0                           = 0x0\n\tVT1                           = 0x4000\n\tVTDLY                         = 0x4000\n\tVTIME                         = 0x5\n\tVWERASE                       = 0xe\n\tWCONTFLG                      = 0xffff\n\tWCONTINUED                    = 0x8\n\tWCOREFLG                      = 0x80\n\tWEXITED                       = 0x1\n\tWNOHANG                       = 0x40\n\tWNOWAIT                       = 0x80\n\tWOPTMASK                      = 0xcf\n\tWRAP                          = 0x20000\n\tWSIGMASK                      = 0x7f\n\tWSTOPFLG                      = 0x7f\n\tWSTOPPED                      = 0x4\n\tWTRAPPED                      = 0x2\n\tWUNTRACED                     = 0x4\n\tXCASE                         = 0x4\n\tXTABS                         = 0x1800\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x7d)\n\tEADDRNOTAVAIL   = syscall.Errno(0x7e)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x7c)\n\tEAGAIN          = syscall.Errno(0xb)\n\tEALREADY        = syscall.Errno(0x95)\n\tEBADE           = syscall.Errno(0x32)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADFD          = syscall.Errno(0x51)\n\tEBADMSG         = syscall.Errno(0x4d)\n\tEBADR           = syscall.Errno(0x33)\n\tEBADRQC         = syscall.Errno(0x36)\n\tEBADSLT         = syscall.Errno(0x37)\n\tEBFONT          = syscall.Errno(0x39)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x2f)\n\tECHILD          = syscall.Errno(0xa)\n\tECHRNG          = syscall.Errno(0x25)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x82)\n\tECONNREFUSED    = syscall.Errno(0x92)\n\tECONNRESET      = syscall.Errno(0x83)\n\tEDEADLK         = syscall.Errno(0x2d)\n\tEDEADLOCK       = syscall.Errno(0x38)\n\tEDESTADDRREQ    = syscall.Errno(0x60)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x31)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEHOSTDOWN       = syscall.Errno(0x93)\n\tEHOSTUNREACH    = syscall.Errno(0x94)\n\tEIDRM           = syscall.Errno(0x24)\n\tEILSEQ          = syscall.Errno(0x58)\n\tEINPROGRESS     = syscall.Errno(0x96)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x85)\n\tEISDIR          = syscall.Errno(0x15)\n\tEL2HLT          = syscall.Errno(0x2c)\n\tEL2NSYNC        = syscall.Errno(0x26)\n\tEL3HLT          = syscall.Errno(0x27)\n\tEL3RST          = syscall.Errno(0x28)\n\tELIBACC         = syscall.Errno(0x53)\n\tELIBBAD         = syscall.Errno(0x54)\n\tELIBEXEC        = syscall.Errno(0x57)\n\tELIBMAX         = syscall.Errno(0x56)\n\tELIBSCN         = syscall.Errno(0x55)\n\tELNRNG          = syscall.Errno(0x29)\n\tELOCKUNMAPPED   = syscall.Errno(0x48)\n\tELOOP           = syscall.Errno(0x5a)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x61)\n\tEMULTIHOP       = syscall.Errno(0x4a)\n\tENAMETOOLONG    = syscall.Errno(0x4e)\n\tENETDOWN        = syscall.Errno(0x7f)\n\tENETRESET       = syscall.Errno(0x81)\n\tENETUNREACH     = syscall.Errno(0x80)\n\tENFILE          = syscall.Errno(0x17)\n\tENOANO          = syscall.Errno(0x35)\n\tENOBUFS         = syscall.Errno(0x84)\n\tENOCSI          = syscall.Errno(0x2b)\n\tENODATA         = syscall.Errno(0x3d)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x2e)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x23)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x63)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x59)\n\tENOTACTIVE      = syscall.Errno(0x49)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x86)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x5d)\n\tENOTRECOVERABLE = syscall.Errno(0x3b)\n\tENOTSOCK        = syscall.Errno(0x5f)\n\tENOTSUP         = syscall.Errno(0x30)\n\tENOTTY          = syscall.Errno(0x19)\n\tENOTUNIQ        = syscall.Errno(0x50)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x7a)\n\tEOVERFLOW       = syscall.Errno(0x4f)\n\tEOWNERDEAD      = syscall.Errno(0x3a)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x7b)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x78)\n\tEPROTOTYPE      = syscall.Errno(0x62)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMCHG         = syscall.Errno(0x52)\n\tEREMOTE         = syscall.Errno(0x42)\n\tERESTART        = syscall.Errno(0x5b)\n\tEROFS           = syscall.Errno(0x1e)\n\tESHUTDOWN       = syscall.Errno(0x8f)\n\tESOCKTNOSUPPORT = syscall.Errno(0x79)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x97)\n\tESTRPIPE        = syscall.Errno(0x5c)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x91)\n\tETOOMANYREFS    = syscall.Errno(0x90)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUNATCH         = syscall.Errno(0x2a)\n\tEUSERS          = syscall.Errno(0x5e)\n\tEWOULDBLOCK     = syscall.Errno(0xb)\n\tEXDEV           = syscall.Errno(0x12)\n\tEXFULL          = syscall.Errno(0x34)\n)\n\n// Signals\nconst (\n\tSIGABRT    = syscall.Signal(0x6)\n\tSIGALRM    = syscall.Signal(0xe)\n\tSIGBUS     = syscall.Signal(0xa)\n\tSIGCANCEL  = syscall.Signal(0x24)\n\tSIGCHLD    = syscall.Signal(0x12)\n\tSIGCLD     = syscall.Signal(0x12)\n\tSIGCONT    = syscall.Signal(0x19)\n\tSIGEMT     = syscall.Signal(0x7)\n\tSIGFPE     = syscall.Signal(0x8)\n\tSIGFREEZE  = syscall.Signal(0x22)\n\tSIGHUP     = syscall.Signal(0x1)\n\tSIGILL     = syscall.Signal(0x4)\n\tSIGINFO    = syscall.Signal(0x29)\n\tSIGINT     = syscall.Signal(0x2)\n\tSIGIO      = syscall.Signal(0x16)\n\tSIGIOT     = syscall.Signal(0x6)\n\tSIGJVM1    = syscall.Signal(0x27)\n\tSIGJVM2    = syscall.Signal(0x28)\n\tSIGKILL    = syscall.Signal(0x9)\n\tSIGLOST    = syscall.Signal(0x25)\n\tSIGLWP     = syscall.Signal(0x21)\n\tSIGPIPE    = syscall.Signal(0xd)\n\tSIGPOLL    = syscall.Signal(0x16)\n\tSIGPROF    = syscall.Signal(0x1d)\n\tSIGPWR     = syscall.Signal(0x13)\n\tSIGQUIT    = syscall.Signal(0x3)\n\tSIGSEGV    = syscall.Signal(0xb)\n\tSIGSTOP    = syscall.Signal(0x17)\n\tSIGSYS     = syscall.Signal(0xc)\n\tSIGTERM    = syscall.Signal(0xf)\n\tSIGTHAW    = syscall.Signal(0x23)\n\tSIGTRAP    = syscall.Signal(0x5)\n\tSIGTSTP    = syscall.Signal(0x18)\n\tSIGTTIN    = syscall.Signal(0x1a)\n\tSIGTTOU    = syscall.Signal(0x1b)\n\tSIGURG     = syscall.Signal(0x15)\n\tSIGUSR1    = syscall.Signal(0x10)\n\tSIGUSR2    = syscall.Signal(0x11)\n\tSIGVTALRM  = syscall.Signal(0x1c)\n\tSIGWAITING = syscall.Signal(0x20)\n\tSIGWINCH   = syscall.Signal(0x14)\n\tSIGXCPU    = syscall.Signal(0x1e)\n\tSIGXFSZ    = syscall.Signal(0x1f)\n\tSIGXRES    = syscall.Signal(0x26)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"not owner\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"I/O error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"arg list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file number\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"not enough space\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"file table overflow\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"ENOMSG\", \"no message of desired type\"},\n\t{36, \"EIDRM\", \"identifier removed\"},\n\t{37, \"ECHRNG\", \"channel number out of range\"},\n\t{38, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{39, \"EL3HLT\", \"level 3 halted\"},\n\t{40, \"EL3RST\", \"level 3 reset\"},\n\t{41, \"ELNRNG\", \"link number out of range\"},\n\t{42, \"EUNATCH\", \"protocol driver not attached\"},\n\t{43, \"ENOCSI\", \"no CSI structure available\"},\n\t{44, \"EL2HLT\", \"level 2 halted\"},\n\t{45, \"EDEADLK\", \"deadlock situation detected/avoided\"},\n\t{46, \"ENOLCK\", \"no record locks available\"},\n\t{47, \"ECANCELED\", \"operation canceled\"},\n\t{48, \"ENOTSUP\", \"operation not supported\"},\n\t{49, \"EDQUOT\", \"disc quota exceeded\"},\n\t{50, \"EBADE\", \"bad exchange descriptor\"},\n\t{51, \"EBADR\", \"bad request descriptor\"},\n\t{52, \"EXFULL\", \"message tables full\"},\n\t{53, \"ENOANO\", \"anode table overflow\"},\n\t{54, \"EBADRQC\", \"bad request code\"},\n\t{55, \"EBADSLT\", \"invalid slot\"},\n\t{56, \"EDEADLOCK\", \"file locking deadlock\"},\n\t{57, \"EBFONT\", \"bad font file format\"},\n\t{58, \"EOWNERDEAD\", \"owner of the lock died\"},\n\t{59, \"ENOTRECOVERABLE\", \"lock is not recoverable\"},\n\t{60, \"ENOSTR\", \"not a stream device\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of stream resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{72, \"ELOCKUNMAPPED\", \"locked lock was unmapped \"},\n\t{73, \"ENOTACTIVE\", \"facility is not active\"},\n\t{74, \"EMULTIHOP\", \"multihop attempted\"},\n\t{77, \"EBADMSG\", \"not a data message\"},\n\t{78, \"ENAMETOOLONG\", \"file name too long\"},\n\t{79, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{80, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{81, \"EBADFD\", \"file descriptor in bad state\"},\n\t{82, \"EREMCHG\", \"remote address changed\"},\n\t{83, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{84, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{85, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{86, \"ELIBMAX\", \"attempting to link in more shared libraries than system limit\"},\n\t{87, \"ELIBEXEC\", \"can not exec a shared library directly\"},\n\t{88, \"EILSEQ\", \"illegal byte sequence\"},\n\t{89, \"ENOSYS\", \"operation not applicable\"},\n\t{90, \"ELOOP\", \"number of symbolic links encountered during path name traversal exceeds MAXSYMLINKS\"},\n\t{91, \"ERESTART\", \"error 91\"},\n\t{92, \"ESTRPIPE\", \"error 92\"},\n\t{93, \"ENOTEMPTY\", \"directory not empty\"},\n\t{94, \"EUSERS\", \"too many users\"},\n\t{95, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{96, \"EDESTADDRREQ\", \"destination address required\"},\n\t{97, \"EMSGSIZE\", \"message too long\"},\n\t{98, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{99, \"ENOPROTOOPT\", \"option not supported by protocol\"},\n\t{120, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{121, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{122, \"EOPNOTSUPP\", \"operation not supported on transport endpoint\"},\n\t{123, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{124, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{125, \"EADDRINUSE\", \"address already in use\"},\n\t{126, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{127, \"ENETDOWN\", \"network is down\"},\n\t{128, \"ENETUNREACH\", \"network is unreachable\"},\n\t{129, \"ENETRESET\", \"network dropped connection because of reset\"},\n\t{130, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{131, \"ECONNRESET\", \"connection reset by peer\"},\n\t{132, \"ENOBUFS\", \"no buffer space available\"},\n\t{133, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{134, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{143, \"ESHUTDOWN\", \"cannot send after socket shutdown\"},\n\t{144, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{145, \"ETIMEDOUT\", \"connection timed out\"},\n\t{146, \"ECONNREFUSED\", \"connection refused\"},\n\t{147, \"EHOSTDOWN\", \"host is down\"},\n\t{148, \"EHOSTUNREACH\", \"no route to host\"},\n\t{149, \"EALREADY\", \"operation already in progress\"},\n\t{150, \"EINPROGRESS\", \"operation now in progress\"},\n\t{151, \"ESTALE\", \"stale NFS file handle\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal Instruction\"},\n\t{5, \"SIGTRAP\", \"trace/Breakpoint Trap\"},\n\t{6, \"SIGABRT\", \"abort\"},\n\t{7, \"SIGEMT\", \"emulation Trap\"},\n\t{8, \"SIGFPE\", \"arithmetic Exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus Error\"},\n\t{11, \"SIGSEGV\", \"segmentation Fault\"},\n\t{12, \"SIGSYS\", \"bad System Call\"},\n\t{13, \"SIGPIPE\", \"broken Pipe\"},\n\t{14, \"SIGALRM\", \"alarm Clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGUSR1\", \"user Signal 1\"},\n\t{17, \"SIGUSR2\", \"user Signal 2\"},\n\t{18, \"SIGCHLD\", \"child Status Changed\"},\n\t{19, \"SIGPWR\", \"power-Fail/Restart\"},\n\t{20, \"SIGWINCH\", \"window Size Change\"},\n\t{21, \"SIGURG\", \"urgent Socket Condition\"},\n\t{22, \"SIGIO\", \"pollable Event\"},\n\t{23, \"SIGSTOP\", \"stopped (signal)\"},\n\t{24, \"SIGTSTP\", \"stopped (user)\"},\n\t{25, \"SIGCONT\", \"continued\"},\n\t{26, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{27, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{28, \"SIGVTALRM\", \"virtual Timer Expired\"},\n\t{29, \"SIGPROF\", \"profiling Timer Expired\"},\n\t{30, \"SIGXCPU\", \"cpu Limit Exceeded\"},\n\t{31, \"SIGXFSZ\", \"file Size Limit Exceeded\"},\n\t{32, \"SIGWAITING\", \"no runnable lwp\"},\n\t{33, \"SIGLWP\", \"inter-lwp signal\"},\n\t{34, \"SIGFREEZE\", \"checkpoint Freeze\"},\n\t{35, \"SIGTHAW\", \"checkpoint Thaw\"},\n\t{36, \"SIGCANCEL\", \"thread Cancellation\"},\n\t{37, \"SIGLOST\", \"resource Lost\"},\n\t{38, \"SIGXRES\", \"resource Control Exceeded\"},\n\t{39, \"SIGJVM1\", \"reserved for JVM 1\"},\n\t{40, \"SIGJVM2\", \"reserved for JVM 2\"},\n\t{41, \"SIGINFO\", \"information Request\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_zos_s390x.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build zos && s390x\n\n// Hand edited based on zerrors_linux_s390x.go\n// TODO: auto-generate.\n\npackage unix\n\nconst (\n\tBRKINT                   = 0x0001\n\tCLOCAL                   = 0x1\n\tCLOCK_MONOTONIC          = 0x1\n\tCLOCK_PROCESS_CPUTIME_ID = 0x2\n\tCLOCK_REALTIME           = 0x0\n\tCLOCK_THREAD_CPUTIME_ID  = 0x3\n\tCLONE_NEWIPC             = 0x08000000\n\tCLONE_NEWNET             = 0x40000000\n\tCLONE_NEWNS              = 0x00020000\n\tCLONE_NEWPID             = 0x20000000\n\tCLONE_NEWUTS             = 0x04000000\n\tCLONE_PARENT             = 0x00008000\n\tCS8                      = 0x0030\n\tCSIZE                    = 0x0030\n\tECHO                     = 0x00000008\n\tECHONL                   = 0x00000001\n\tEFD_SEMAPHORE            = 0x00002000\n\tEFD_CLOEXEC              = 0x00001000\n\tEFD_NONBLOCK             = 0x00000004\n\tEPOLL_CLOEXEC            = 0x00001000\n\tEPOLL_CTL_ADD            = 0\n\tEPOLL_CTL_MOD            = 1\n\tEPOLL_CTL_DEL            = 2\n\tEPOLLRDNORM              = 0x0001\n\tEPOLLRDBAND              = 0x0002\n\tEPOLLIN                  = 0x0003\n\tEPOLLOUT                 = 0x0004\n\tEPOLLWRBAND              = 0x0008\n\tEPOLLPRI                 = 0x0010\n\tEPOLLERR                 = 0x0020\n\tEPOLLHUP                 = 0x0040\n\tEPOLLEXCLUSIVE           = 0x20000000\n\tEPOLLONESHOT             = 0x40000000\n\tFD_CLOEXEC               = 0x01\n\tFD_CLOFORK               = 0x02\n\tFD_SETSIZE               = 0x800\n\tFNDELAY                  = 0x04\n\tF_CLOSFD                 = 9\n\tF_CONTROL_CVT            = 13\n\tF_DUPFD                  = 0\n\tF_DUPFD2                 = 8\n\tF_GETFD                  = 1\n\tF_GETFL                  = 259\n\tF_GETLK                  = 5\n\tF_GETOWN                 = 10\n\tF_OK                     = 0x0\n\tF_RDLCK                  = 1\n\tF_SETFD                  = 2\n\tF_SETFL                  = 4\n\tF_SETLK                  = 6\n\tF_SETLKW                 = 7\n\tF_SETOWN                 = 11\n\tF_SETTAG                 = 12\n\tF_UNLCK                  = 3\n\tF_WRLCK                  = 2\n\tFSTYPE_ZFS               = 0xe9 //\"Z\"\n\tFSTYPE_HFS               = 0xc8 //\"H\"\n\tFSTYPE_NFS               = 0xd5 //\"N\"\n\tFSTYPE_TFS               = 0xe3 //\"T\"\n\tFSTYPE_AUTOMOUNT         = 0xc1 //\"A\"\n\tGRND_NONBLOCK            = 1\n\tGRND_RANDOM              = 2\n\tHUPCL                    = 0x0100 // Hang up on last close\n\tIN_CLOEXEC               = 0x00001000\n\tIN_NONBLOCK              = 0x00000004\n\tIN_ACCESS                = 0x00000001\n\tIN_MODIFY                = 0x00000002\n\tIN_ATTRIB                = 0x00000004\n\tIN_CLOSE_WRITE           = 0x00000008\n\tIN_CLOSE_NOWRITE         = 0x00000010\n\tIN_OPEN                  = 0x00000020\n\tIN_MOVED_FROM            = 0x00000040\n\tIN_MOVED_TO              = 0x00000080\n\tIN_CREATE                = 0x00000100\n\tIN_DELETE                = 0x00000200\n\tIN_DELETE_SELF           = 0x00000400\n\tIN_MOVE_SELF             = 0x00000800\n\tIN_UNMOUNT               = 0x00002000\n\tIN_Q_OVERFLOW            = 0x00004000\n\tIN_IGNORED               = 0x00008000\n\tIN_CLOSE                 = (IN_CLOSE_WRITE | IN_CLOSE_NOWRITE)\n\tIN_MOVE                  = (IN_MOVED_FROM | IN_MOVED_TO)\n\tIN_ALL_EVENTS            = (IN_ACCESS | IN_MODIFY | IN_ATTRIB |\n\t\tIN_CLOSE | IN_OPEN | IN_MOVE |\n\t\tIN_CREATE | IN_DELETE | IN_DELETE_SELF |\n\t\tIN_MOVE_SELF)\n\tIN_ONLYDIR                      = 0x01000000\n\tIN_DONT_FOLLOW                  = 0x02000000\n\tIN_EXCL_UNLINK                  = 0x04000000\n\tIN_MASK_CREATE                  = 0x10000000\n\tIN_MASK_ADD                     = 0x20000000\n\tIN_ISDIR                        = 0x40000000\n\tIN_ONESHOT                      = 0x80000000\n\tIP6F_MORE_FRAG                  = 0x0001\n\tIP6F_OFF_MASK                   = 0xfff8\n\tIP6F_RESERVED_MASK              = 0x0006\n\tIP6OPT_JUMBO                    = 0xc2\n\tIP6OPT_JUMBO_LEN                = 6\n\tIP6OPT_MUTABLE                  = 0x20\n\tIP6OPT_NSAP_ADDR                = 0xc3\n\tIP6OPT_PAD1                     = 0x00\n\tIP6OPT_PADN                     = 0x01\n\tIP6OPT_ROUTER_ALERT             = 0x05\n\tIP6OPT_TUNNEL_LIMIT             = 0x04\n\tIP6OPT_TYPE_DISCARD             = 0x40\n\tIP6OPT_TYPE_FORCEICMP           = 0x80\n\tIP6OPT_TYPE_ICMP                = 0xc0\n\tIP6OPT_TYPE_SKIP                = 0x00\n\tIP6_ALERT_AN                    = 0x0002\n\tIP6_ALERT_MLD                   = 0x0000\n\tIP6_ALERT_RSVP                  = 0x0001\n\tIPPORT_RESERVED                 = 1024\n\tIPPORT_USERRESERVED             = 5000\n\tIPPROTO_AH                      = 51\n\tSOL_AH                          = 51\n\tIPPROTO_DSTOPTS                 = 60\n\tSOL_DSTOPTS                     = 60\n\tIPPROTO_EGP                     = 8\n\tSOL_EGP                         = 8\n\tIPPROTO_ESP                     = 50\n\tSOL_ESP                         = 50\n\tIPPROTO_FRAGMENT                = 44\n\tSOL_FRAGMENT                    = 44\n\tIPPROTO_GGP                     = 2\n\tSOL_GGP                         = 2\n\tIPPROTO_HOPOPTS                 = 0\n\tSOL_HOPOPTS                     = 0\n\tIPPROTO_ICMP                    = 1\n\tSOL_ICMP                        = 1\n\tIPPROTO_ICMPV6                  = 58\n\tSOL_ICMPV6                      = 58\n\tIPPROTO_IDP                     = 22\n\tSOL_IDP                         = 22\n\tIPPROTO_IP                      = 0\n\tSOL_IP                          = 0\n\tIPPROTO_IPV6                    = 41\n\tSOL_IPV6                        = 41\n\tIPPROTO_MAX                     = 256\n\tSOL_MAX                         = 256\n\tIPPROTO_NONE                    = 59\n\tSOL_NONE                        = 59\n\tIPPROTO_PUP                     = 12\n\tSOL_PUP                         = 12\n\tIPPROTO_RAW                     = 255\n\tSOL_RAW                         = 255\n\tIPPROTO_ROUTING                 = 43\n\tSOL_ROUTING                     = 43\n\tIPPROTO_TCP                     = 6\n\tSOL_TCP                         = 6\n\tIPPROTO_UDP                     = 17\n\tSOL_UDP                         = 17\n\tIPV6_ADDR_PREFERENCES           = 32\n\tIPV6_CHECKSUM                   = 19\n\tIPV6_DONTFRAG                   = 29\n\tIPV6_DSTOPTS                    = 23\n\tIPV6_HOPLIMIT                   = 11\n\tIPV6_HOPOPTS                    = 22\n\tIPV6_JOIN_GROUP                 = 5\n\tIPV6_LEAVE_GROUP                = 6\n\tIPV6_MULTICAST_HOPS             = 9\n\tIPV6_MULTICAST_IF               = 7\n\tIPV6_MULTICAST_LOOP             = 4\n\tIPV6_NEXTHOP                    = 20\n\tIPV6_PATHMTU                    = 12\n\tIPV6_PKTINFO                    = 13\n\tIPV6_PREFER_SRC_CGA             = 0x10\n\tIPV6_PREFER_SRC_COA             = 0x02\n\tIPV6_PREFER_SRC_HOME            = 0x01\n\tIPV6_PREFER_SRC_NONCGA          = 0x20\n\tIPV6_PREFER_SRC_PUBLIC          = 0x08\n\tIPV6_PREFER_SRC_TMP             = 0x04\n\tIPV6_RECVDSTOPTS                = 28\n\tIPV6_RECVHOPLIMIT               = 14\n\tIPV6_RECVHOPOPTS                = 26\n\tIPV6_RECVPATHMTU                = 16\n\tIPV6_RECVPKTINFO                = 15\n\tIPV6_RECVRTHDR                  = 25\n\tIPV6_RECVTCLASS                 = 31\n\tIPV6_RTHDR                      = 21\n\tIPV6_RTHDRDSTOPTS               = 24\n\tIPV6_RTHDR_TYPE_0               = 0\n\tIPV6_TCLASS                     = 30\n\tIPV6_UNICAST_HOPS               = 3\n\tIPV6_USE_MIN_MTU                = 18\n\tIPV6_V6ONLY                     = 10\n\tIP_ADD_MEMBERSHIP               = 5\n\tIP_ADD_SOURCE_MEMBERSHIP        = 12\n\tIP_BLOCK_SOURCE                 = 10\n\tIP_DEFAULT_MULTICAST_LOOP       = 1\n\tIP_DEFAULT_MULTICAST_TTL        = 1\n\tIP_DROP_MEMBERSHIP              = 6\n\tIP_DROP_SOURCE_MEMBERSHIP       = 13\n\tIP_MAX_MEMBERSHIPS              = 20\n\tIP_MULTICAST_IF                 = 7\n\tIP_MULTICAST_LOOP               = 4\n\tIP_MULTICAST_TTL                = 3\n\tIP_OPTIONS                      = 1\n\tIP_PKTINFO                      = 101\n\tIP_RECVPKTINFO                  = 102\n\tIP_TOS                          = 2\n\tIP_TTL                          = 14\n\tIP_UNBLOCK_SOURCE               = 11\n\tICMP6_FILTER                    = 1\n\tMCAST_INCLUDE                   = 0\n\tMCAST_EXCLUDE                   = 1\n\tMCAST_JOIN_GROUP                = 40\n\tMCAST_LEAVE_GROUP               = 41\n\tMCAST_JOIN_SOURCE_GROUP         = 42\n\tMCAST_LEAVE_SOURCE_GROUP        = 43\n\tMCAST_BLOCK_SOURCE              = 44\n\tMCAST_UNBLOCK_SOURCE            = 46\n\tICANON                          = 0x0010\n\tICRNL                           = 0x0002\n\tIEXTEN                          = 0x0020\n\tIGNBRK                          = 0x0004\n\tIGNCR                           = 0x0008\n\tINLCR                           = 0x0020\n\tISIG                            = 0x0040\n\tISTRIP                          = 0x0080\n\tIXON                            = 0x0200\n\tIXOFF                           = 0x0100\n\tLOCK_SH                         = 0x1\n\tLOCK_EX                         = 0x2\n\tLOCK_NB                         = 0x4\n\tLOCK_UN                         = 0x8\n\tPOLLIN                          = 0x0003\n\tPOLLOUT                         = 0x0004\n\tPOLLPRI                         = 0x0010\n\tPOLLERR                         = 0x0020\n\tPOLLHUP                         = 0x0040\n\tPOLLNVAL                        = 0x0080\n\tPROT_READ                       = 0x1 // mmap - page can be read\n\tPROT_WRITE                      = 0x2 // page can be written\n\tPROT_NONE                       = 0x4 // can't be accessed\n\tPROT_EXEC                       = 0x8 // can be executed\n\tMAP_PRIVATE                     = 0x1 // changes are private\n\tMAP_SHARED                      = 0x2 // changes are shared\n\tMAP_FIXED                       = 0x4 // place exactly\n\t__MAP_MEGA                      = 0x8\n\t__MAP_64                        = 0x10\n\tMAP_ANON                        = 0x20\n\tMAP_ANONYMOUS                   = 0x20\n\tMS_SYNC                         = 0x1 // msync - synchronous writes\n\tMS_ASYNC                        = 0x2 // asynchronous writes\n\tMS_INVALIDATE                   = 0x4 // invalidate mappings\n\tMS_BIND                         = 0x00001000\n\tMS_MOVE                         = 0x00002000\n\tMS_NOSUID                       = 0x00000002\n\tMS_PRIVATE                      = 0x00040000\n\tMS_REC                          = 0x00004000\n\tMS_REMOUNT                      = 0x00008000\n\tMS_RDONLY                       = 0x00000001\n\tMS_UNBINDABLE                   = 0x00020000\n\tMNT_DETACH                      = 0x00000004\n\tZOSDSFS_SUPER_MAGIC             = 0x44534653 // zOS DSFS\n\tNFS_SUPER_MAGIC                 = 0x6969     // NFS\n\tNSFS_MAGIC                      = 0x6e736673 // PROCNS\n\tPROC_SUPER_MAGIC                = 0x9fa0     // proc FS\n\tZOSTFS_SUPER_MAGIC              = 0x544653   // zOS TFS\n\tZOSUFS_SUPER_MAGIC              = 0x554653   // zOS UFS\n\tZOSZFS_SUPER_MAGIC              = 0x5A4653   // zOS ZFS\n\tMTM_RDONLY                      = 0x80000000\n\tMTM_RDWR                        = 0x40000000\n\tMTM_UMOUNT                      = 0x10000000\n\tMTM_IMMED                       = 0x08000000\n\tMTM_FORCE                       = 0x04000000\n\tMTM_DRAIN                       = 0x02000000\n\tMTM_RESET                       = 0x01000000\n\tMTM_SAMEMODE                    = 0x00100000\n\tMTM_UNQSEFORCE                  = 0x00040000\n\tMTM_NOSUID                      = 0x00000400\n\tMTM_SYNCHONLY                   = 0x00000200\n\tMTM_REMOUNT                     = 0x00000100\n\tMTM_NOSECURITY                  = 0x00000080\n\tNFDBITS                         = 0x20\n\tONLRET                          = 0x0020 // NL performs CR function\n\tO_ACCMODE                       = 0x03\n\tO_APPEND                        = 0x08\n\tO_ASYNCSIG                      = 0x0200\n\tO_CREAT                         = 0x80\n\tO_DIRECT                        = 0x00002000\n\tO_NOFOLLOW                      = 0x00004000\n\tO_DIRECTORY                     = 0x00008000\n\tO_PATH                          = 0x00080000\n\tO_CLOEXEC                       = 0x00001000\n\tO_EXCL                          = 0x40\n\tO_GETFL                         = 0x0F\n\tO_LARGEFILE                     = 0x0400\n\tO_NDELAY                        = 0x4\n\tO_NONBLOCK                      = 0x04\n\tO_RDONLY                        = 0x02\n\tO_RDWR                          = 0x03\n\tO_SYNC                          = 0x0100\n\tO_TRUNC                         = 0x10\n\tO_WRONLY                        = 0x01\n\tO_NOCTTY                        = 0x20\n\tOPOST                           = 0x0001\n\tONLCR                           = 0x0004\n\tPARENB                          = 0x0200\n\tPARMRK                          = 0x0400\n\tQUERYCVT                        = 3\n\tRUSAGE_CHILDREN                 = -0x1\n\tRUSAGE_SELF                     = 0x0 // RUSAGE_THREAD unsupported on z/OS\n\tSEEK_CUR                        = 1\n\tSEEK_END                        = 2\n\tSEEK_SET                        = 0\n\tSETAUTOCVTALL                   = 5\n\tSETAUTOCVTON                    = 2\n\tSETCVTALL                       = 4\n\tSETCVTOFF                       = 0\n\tSETCVTON                        = 1\n\tAF_APPLETALK                    = 16\n\tAF_CCITT                        = 10\n\tAF_CHAOS                        = 5\n\tAF_DATAKIT                      = 9\n\tAF_DLI                          = 13\n\tAF_ECMA                         = 8\n\tAF_HYLINK                       = 15\n\tAF_IMPLINK                      = 3\n\tAF_INET                         = 2\n\tAF_INET6                        = 19\n\tAF_INTF                         = 20\n\tAF_IUCV                         = 17\n\tAF_LAT                          = 14\n\tAF_LINK                         = 18\n\tAF_LOCAL                        = AF_UNIX // AF_LOCAL is an alias for AF_UNIX\n\tAF_MAX                          = 30\n\tAF_NBS                          = 7\n\tAF_NDD                          = 23\n\tAF_NETWARE                      = 22\n\tAF_NS                           = 6\n\tAF_PUP                          = 4\n\tAF_RIF                          = 21\n\tAF_ROUTE                        = 20\n\tAF_SNA                          = 11\n\tAF_UNIX                         = 1\n\tAF_UNSPEC                       = 0\n\tIBMTCP_IMAGE                    = 1\n\tMSG_ACK_EXPECTED                = 0x10\n\tMSG_ACK_GEN                     = 0x40\n\tMSG_ACK_TIMEOUT                 = 0x20\n\tMSG_CONNTERM                    = 0x80\n\tMSG_CTRUNC                      = 0x20\n\tMSG_DONTROUTE                   = 0x4\n\tMSG_EOF                         = 0x8000\n\tMSG_EOR                         = 0x8\n\tMSG_MAXIOVLEN                   = 16\n\tMSG_NONBLOCK                    = 0x4000\n\tMSG_OOB                         = 0x1\n\tMSG_PEEK                        = 0x2\n\tMSG_TRUNC                       = 0x10\n\tMSG_WAITALL                     = 0x40\n\tPRIO_PROCESS                    = 1\n\tPRIO_PGRP                       = 2\n\tPRIO_USER                       = 3\n\tRLIMIT_CPU                      = 0\n\tRLIMIT_FSIZE                    = 1\n\tRLIMIT_DATA                     = 2\n\tRLIMIT_STACK                    = 3\n\tRLIMIT_CORE                     = 4\n\tRLIMIT_AS                       = 5\n\tRLIMIT_NOFILE                   = 6\n\tRLIMIT_MEMLIMIT                 = 7\n\tRLIMIT_MEMLOCK                  = 0x8\n\tRLIM_INFINITY                   = 2147483647\n\tSCHED_FIFO                      = 0x2\n\tSCM_CREDENTIALS                 = 0x2\n\tSCM_RIGHTS                      = 0x01\n\tSF_CLOSE                        = 0x00000002\n\tSF_REUSE                        = 0x00000001\n\tSHM_RND                         = 0x2\n\tSHM_RDONLY                      = 0x1\n\tSHMLBA                          = 0x1000\n\tIPC_STAT                        = 0x3\n\tIPC_SET                         = 0x2\n\tIPC_RMID                        = 0x1\n\tIPC_PRIVATE                     = 0x0\n\tIPC_CREAT                       = 0x1000000\n\t__IPC_MEGA                      = 0x4000000\n\t__IPC_SHAREAS                   = 0x20000000\n\t__IPC_BELOWBAR                  = 0x10000000\n\tIPC_EXCL                        = 0x2000000\n\t__IPC_GIGA                      = 0x8000000\n\tSHUT_RD                         = 0\n\tSHUT_RDWR                       = 2\n\tSHUT_WR                         = 1\n\tSOCK_CLOEXEC                    = 0x00001000\n\tSOCK_CONN_DGRAM                 = 6\n\tSOCK_DGRAM                      = 2\n\tSOCK_NONBLOCK                   = 0x800\n\tSOCK_RAW                        = 3\n\tSOCK_RDM                        = 4\n\tSOCK_SEQPACKET                  = 5\n\tSOCK_STREAM                     = 1\n\tSOL_SOCKET                      = 0xffff\n\tSOMAXCONN                       = 10\n\tSO_ACCEPTCONN                   = 0x0002\n\tSO_ACCEPTECONNABORTED           = 0x0006\n\tSO_ACKNOW                       = 0x7700\n\tSO_BROADCAST                    = 0x0020\n\tSO_BULKMODE                     = 0x8000\n\tSO_CKSUMRECV                    = 0x0800\n\tSO_CLOSE                        = 0x01\n\tSO_CLUSTERCONNTYPE              = 0x00004001\n\tSO_CLUSTERCONNTYPE_INTERNAL     = 8\n\tSO_CLUSTERCONNTYPE_NOCONN       = 0\n\tSO_CLUSTERCONNTYPE_NONE         = 1\n\tSO_CLUSTERCONNTYPE_SAME_CLUSTER = 2\n\tSO_CLUSTERCONNTYPE_SAME_IMAGE   = 4\n\tSO_DEBUG                        = 0x0001\n\tSO_DONTROUTE                    = 0x0010\n\tSO_ERROR                        = 0x1007\n\tSO_IGNOREINCOMINGPUSH           = 0x1\n\tSO_IGNORESOURCEVIPA             = 0x0002\n\tSO_KEEPALIVE                    = 0x0008\n\tSO_LINGER                       = 0x0080\n\tSO_NONBLOCKLOCAL                = 0x8001\n\tSO_NOREUSEADDR                  = 0x1000\n\tSO_OOBINLINE                    = 0x0100\n\tSO_OPTACK                       = 0x8004\n\tSO_OPTMSS                       = 0x8003\n\tSO_RCVBUF                       = 0x1002\n\tSO_RCVLOWAT                     = 0x1004\n\tSO_RCVTIMEO                     = 0x1006\n\tSO_REUSEADDR                    = 0x0004\n\tSO_REUSEPORT                    = 0x0200\n\tSO_SECINFO                      = 0x00004002\n\tSO_SET                          = 0x0200\n\tSO_SNDBUF                       = 0x1001\n\tSO_SNDLOWAT                     = 0x1003\n\tSO_SNDTIMEO                     = 0x1005\n\tSO_TYPE                         = 0x1008\n\tSO_UNSET                        = 0x0400\n\tSO_USELOOPBACK                  = 0x0040\n\tSO_USE_IFBUFS                   = 0x0400\n\tS_ISUID                         = 0x0800\n\tS_ISGID                         = 0x0400\n\tS_ISVTX                         = 0x0200\n\tS_IRUSR                         = 0x0100\n\tS_IWUSR                         = 0x0080\n\tS_IXUSR                         = 0x0040\n\tS_IRWXU                         = 0x01C0\n\tS_IRGRP                         = 0x0020\n\tS_IWGRP                         = 0x0010\n\tS_IXGRP                         = 0x0008\n\tS_IRWXG                         = 0x0038\n\tS_IROTH                         = 0x0004\n\tS_IWOTH                         = 0x0002\n\tS_IXOTH                         = 0x0001\n\tS_IRWXO                         = 0x0007\n\tS_IREAD                         = S_IRUSR\n\tS_IWRITE                        = S_IWUSR\n\tS_IEXEC                         = S_IXUSR\n\tS_IFDIR                         = 0x01000000\n\tS_IFCHR                         = 0x02000000\n\tS_IFREG                         = 0x03000000\n\tS_IFFIFO                        = 0x04000000\n\tS_IFIFO                         = 0x04000000\n\tS_IFLNK                         = 0x05000000\n\tS_IFBLK                         = 0x06000000\n\tS_IFSOCK                        = 0x07000000\n\tS_IFVMEXTL                      = 0xFE000000\n\tS_IFVMEXTL_EXEC                 = 0x00010000\n\tS_IFVMEXTL_DATA                 = 0x00020000\n\tS_IFVMEXTL_MEL                  = 0x00030000\n\tS_IFEXTL                        = 0x00000001\n\tS_IFPROGCTL                     = 0x00000002\n\tS_IFAPFCTL                      = 0x00000004\n\tS_IFNOSHARE                     = 0x00000008\n\tS_IFSHARELIB                    = 0x00000010\n\tS_IFMT                          = 0xFF000000\n\tS_IFMST                         = 0x00FF0000\n\tTCP_KEEPALIVE                   = 0x8\n\tTCP_NODELAY                     = 0x1\n\tTIOCGWINSZ                      = 0x4008a368\n\tTIOCSWINSZ                      = 0x8008a367\n\tTIOCSBRK                        = 0x2000a77b\n\tTIOCCBRK                        = 0x2000a77a\n\tTIOCSTI                         = 0x8001a772\n\tTIOCGPGRP                       = 0x4004a777 // _IOR(167, 119, int)\n\tTCSANOW                         = 0\n\tTCSETS                          = 0 // equivalent to TCSANOW for tcsetattr\n\tTCSADRAIN                       = 1\n\tTCSETSW                         = 1 // equivalent to TCSADRAIN for tcsetattr\n\tTCSAFLUSH                       = 2\n\tTCSETSF                         = 2 // equivalent to TCSAFLUSH for tcsetattr\n\tTCGETS                          = 3 // not defined in ioctl.h -- zos golang only\n\tTCIFLUSH                        = 0\n\tTCOFLUSH                        = 1\n\tTCIOFLUSH                       = 2\n\tTCOOFF                          = 0\n\tTCOON                           = 1\n\tTCIOFF                          = 2\n\tTCION                           = 3\n\tTIOCSPGRP                       = 0x8004a776\n\tTIOCNOTTY                       = 0x2000a771\n\tTIOCEXCL                        = 0x2000a70d\n\tTIOCNXCL                        = 0x2000a70e\n\tTIOCGETD                        = 0x4004a700\n\tTIOCSETD                        = 0x8004a701\n\tTIOCPKT                         = 0x8004a770\n\tTIOCSTOP                        = 0x2000a76f\n\tTIOCSTART                       = 0x2000a76e\n\tTIOCUCNTL                       = 0x8004a766\n\tTIOCREMOTE                      = 0x8004a769\n\tTIOCMGET                        = 0x4004a76a\n\tTIOCMSET                        = 0x8004a76d\n\tTIOCMBIC                        = 0x8004a76b\n\tTIOCMBIS                        = 0x8004a76c\n\tVINTR                           = 0\n\tVQUIT                           = 1\n\tVERASE                          = 2\n\tVKILL                           = 3\n\tVEOF                            = 4\n\tVEOL                            = 5\n\tVMIN                            = 6\n\tVSTART                          = 7\n\tVSTOP                           = 8\n\tVSUSP                           = 9\n\tVTIME                           = 10\n\tWCONTINUED                      = 0x4\n\tWEXITED                         = 0x8\n\tWNOHANG                         = 0x1\n\tWNOWAIT                         = 0x20\n\tWSTOPPED                        = 0x10\n\tWUNTRACED                       = 0x2\n\t_BPX_SWAP                       = 1\n\t_BPX_NONSWAP                    = 2\n\tMCL_CURRENT                     = 1  // for Linux compatibility -- no zos semantics\n\tMCL_FUTURE                      = 2  // for Linux compatibility -- no zos semantics\n\tMCL_ONFAULT                     = 3  // for Linux compatibility -- no zos semantics\n\tMADV_NORMAL                     = 0  // for Linux compatibility -- no zos semantics\n\tMADV_RANDOM                     = 1  // for Linux compatibility -- no zos semantics\n\tMADV_SEQUENTIAL                 = 2  // for Linux compatibility -- no zos semantics\n\tMADV_WILLNEED                   = 3  // for Linux compatibility -- no zos semantics\n\tMADV_REMOVE                     = 4  // for Linux compatibility -- no zos semantics\n\tMADV_DONTFORK                   = 5  // for Linux compatibility -- no zos semantics\n\tMADV_DOFORK                     = 6  // for Linux compatibility -- no zos semantics\n\tMADV_HWPOISON                   = 7  // for Linux compatibility -- no zos semantics\n\tMADV_MERGEABLE                  = 8  // for Linux compatibility -- no zos semantics\n\tMADV_UNMERGEABLE                = 9  // for Linux compatibility -- no zos semantics\n\tMADV_SOFT_OFFLINE               = 10 // for Linux compatibility -- no zos semantics\n\tMADV_HUGEPAGE                   = 11 // for Linux compatibility -- no zos semantics\n\tMADV_NOHUGEPAGE                 = 12 // for Linux compatibility -- no zos semantics\n\tMADV_DONTDUMP                   = 13 // for Linux compatibility -- no zos semantics\n\tMADV_DODUMP                     = 14 // for Linux compatibility -- no zos semantics\n\tMADV_FREE                       = 15 // for Linux compatibility -- no zos semantics\n\tMADV_WIPEONFORK                 = 16 // for Linux compatibility -- no zos semantics\n\tMADV_KEEPONFORK                 = 17 // for Linux compatibility -- no zos semantics\n\tAT_SYMLINK_FOLLOW               = 0x400\n\tAT_SYMLINK_NOFOLLOW             = 0x100\n\tXATTR_CREATE                    = 0x1\n\tXATTR_REPLACE                   = 0x2\n\tP_PID                           = 0\n\tP_PGID                          = 1\n\tP_ALL                           = 2\n\tPR_SET_NAME                     = 15\n\tPR_GET_NAME                     = 16\n\tPR_SET_NO_NEW_PRIVS             = 38\n\tPR_GET_NO_NEW_PRIVS             = 39\n\tPR_SET_DUMPABLE                 = 4\n\tPR_GET_DUMPABLE                 = 3\n\tPR_SET_PDEATHSIG                = 1\n\tPR_GET_PDEATHSIG                = 2\n\tPR_SET_CHILD_SUBREAPER          = 36\n\tPR_GET_CHILD_SUBREAPER          = 37\n\tAT_FDCWD                        = -100\n\tAT_EACCESS                      = 0x200\n\tAT_EMPTY_PATH                   = 0x1000\n\tAT_REMOVEDIR                    = 0x200\n\tRENAME_NOREPLACE                = 1 << 0\n\tST_RDONLY                       = 1\n\tST_NOSUID                       = 2\n)\n\nconst (\n\tEDOM               = Errno(1)\n\tERANGE             = Errno(2)\n\tEACCES             = Errno(111)\n\tEAGAIN             = Errno(112)\n\tEBADF              = Errno(113)\n\tEBUSY              = Errno(114)\n\tECHILD             = Errno(115)\n\tEDEADLK            = Errno(116)\n\tEEXIST             = Errno(117)\n\tEFAULT             = Errno(118)\n\tEFBIG              = Errno(119)\n\tEINTR              = Errno(120)\n\tEINVAL             = Errno(121)\n\tEIO                = Errno(122)\n\tEISDIR             = Errno(123)\n\tEMFILE             = Errno(124)\n\tEMLINK             = Errno(125)\n\tENAMETOOLONG       = Errno(126)\n\tENFILE             = Errno(127)\n\tENOATTR            = Errno(265)\n\tENODEV             = Errno(128)\n\tENOENT             = Errno(129)\n\tENOEXEC            = Errno(130)\n\tENOLCK             = Errno(131)\n\tENOMEM             = Errno(132)\n\tENOSPC             = Errno(133)\n\tENOSYS             = Errno(134)\n\tENOTDIR            = Errno(135)\n\tENOTEMPTY          = Errno(136)\n\tENOTTY             = Errno(137)\n\tENXIO              = Errno(138)\n\tEPERM              = Errno(139)\n\tEPIPE              = Errno(140)\n\tEROFS              = Errno(141)\n\tESPIPE             = Errno(142)\n\tESRCH              = Errno(143)\n\tEXDEV              = Errno(144)\n\tE2BIG              = Errno(145)\n\tELOOP              = Errno(146)\n\tEILSEQ             = Errno(147)\n\tENODATA            = Errno(148)\n\tEOVERFLOW          = Errno(149)\n\tEMVSNOTUP          = Errno(150)\n\tECMSSTORAGE        = Errno(151)\n\tEMVSDYNALC         = Errno(151)\n\tEMVSCVAF           = Errno(152)\n\tEMVSCATLG          = Errno(153)\n\tECMSINITIAL        = Errno(156)\n\tEMVSINITIAL        = Errno(156)\n\tECMSERR            = Errno(157)\n\tEMVSERR            = Errno(157)\n\tEMVSPARM           = Errno(158)\n\tECMSPFSFILE        = Errno(159)\n\tEMVSPFSFILE        = Errno(159)\n\tEMVSBADCHAR        = Errno(160)\n\tECMSPFSPERM        = Errno(162)\n\tEMVSPFSPERM        = Errno(162)\n\tEMVSSAFEXTRERR     = Errno(163)\n\tEMVSSAF2ERR        = Errno(164)\n\tEMVSTODNOTSET      = Errno(165)\n\tEMVSPATHOPTS       = Errno(166)\n\tEMVSNORTL          = Errno(167)\n\tEMVSEXPIRE         = Errno(168)\n\tEMVSPASSWORD       = Errno(169)\n\tEMVSWLMERROR       = Errno(170)\n\tEMVSCPLERROR       = Errno(171)\n\tEMVSARMERROR       = Errno(172)\n\tELENOFORK          = Errno(200)\n\tELEMSGERR          = Errno(201)\n\tEFPMASKINV         = Errno(202)\n\tEFPMODEINV         = Errno(203)\n\tEBUFLEN            = Errno(227)\n\tEEXTLINK           = Errno(228)\n\tENODD              = Errno(229)\n\tECMSESMERR         = Errno(230)\n\tECPERR             = Errno(231)\n\tELEMULTITHREAD     = Errno(232)\n\tELEFENCE           = Errno(244)\n\tEBADDATA           = Errno(245)\n\tEUNKNOWN           = Errno(246)\n\tENOTSUP            = Errno(247)\n\tEBADNAME           = Errno(248)\n\tENOTSAFE           = Errno(249)\n\tELEMULTITHREADFORK = Errno(257)\n\tECUNNOENV          = Errno(258)\n\tECUNNOCONV         = Errno(259)\n\tECUNNOTALIGNED     = Errno(260)\n\tECUNERR            = Errno(262)\n\tEIBMBADCALL        = Errno(1000)\n\tEIBMBADPARM        = Errno(1001)\n\tEIBMSOCKOUTOFRANGE = Errno(1002)\n\tEIBMSOCKINUSE      = Errno(1003)\n\tEIBMIUCVERR        = Errno(1004)\n\tEOFFLOADboxERROR   = Errno(1005)\n\tEOFFLOADboxRESTART = Errno(1006)\n\tEOFFLOADboxDOWN    = Errno(1007)\n\tEIBMCONFLICT       = Errno(1008)\n\tEIBMCANCELLED      = Errno(1009)\n\tEIBMBADTCPNAME     = Errno(1011)\n\tENOTBLK            = Errno(1100)\n\tETXTBSY            = Errno(1101)\n\tEWOULDBLOCK        = Errno(1102)\n\tEINPROGRESS        = Errno(1103)\n\tEALREADY           = Errno(1104)\n\tENOTSOCK           = Errno(1105)\n\tEDESTADDRREQ       = Errno(1106)\n\tEMSGSIZE           = Errno(1107)\n\tEPROTOTYPE         = Errno(1108)\n\tENOPROTOOPT        = Errno(1109)\n\tEPROTONOSUPPORT    = Errno(1110)\n\tESOCKTNOSUPPORT    = Errno(1111)\n\tEOPNOTSUPP         = Errno(1112)\n\tEPFNOSUPPORT       = Errno(1113)\n\tEAFNOSUPPORT       = Errno(1114)\n\tEADDRINUSE         = Errno(1115)\n\tEADDRNOTAVAIL      = Errno(1116)\n\tENETDOWN           = Errno(1117)\n\tENETUNREACH        = Errno(1118)\n\tENETRESET          = Errno(1119)\n\tECONNABORTED       = Errno(1120)\n\tECONNRESET         = Errno(1121)\n\tENOBUFS            = Errno(1122)\n\tEISCONN            = Errno(1123)\n\tENOTCONN           = Errno(1124)\n\tESHUTDOWN          = Errno(1125)\n\tETOOMANYREFS       = Errno(1126)\n\tETIMEDOUT          = Errno(1127)\n\tECONNREFUSED       = Errno(1128)\n\tEHOSTDOWN          = Errno(1129)\n\tEHOSTUNREACH       = Errno(1130)\n\tEPROCLIM           = Errno(1131)\n\tEUSERS             = Errno(1132)\n\tEDQUOT             = Errno(1133)\n\tESTALE             = Errno(1134)\n\tEREMOTE            = Errno(1135)\n\tENOSTR             = Errno(1136)\n\tETIME              = Errno(1137)\n\tENOSR              = Errno(1138)\n\tENOMSG             = Errno(1139)\n\tEBADMSG            = Errno(1140)\n\tEIDRM              = Errno(1141)\n\tENONET             = Errno(1142)\n\tERREMOTE           = Errno(1143)\n\tENOLINK            = Errno(1144)\n\tEADV               = Errno(1145)\n\tESRMNT             = Errno(1146)\n\tECOMM              = Errno(1147)\n\tEPROTO             = Errno(1148)\n\tEMULTIHOP          = Errno(1149)\n\tEDOTDOT            = Errno(1150)\n\tEREMCHG            = Errno(1151)\n\tECANCELED          = Errno(1152)\n\tEINTRNODATA        = Errno(1159)\n\tENOREUSE           = Errno(1160)\n\tENOMOVE            = Errno(1161)\n)\n\n// Signals\nconst (\n\tSIGHUP    = Signal(1)\n\tSIGINT    = Signal(2)\n\tSIGABRT   = Signal(3)\n\tSIGILL    = Signal(4)\n\tSIGPOLL   = Signal(5)\n\tSIGURG    = Signal(6)\n\tSIGSTOP   = Signal(7)\n\tSIGFPE    = Signal(8)\n\tSIGKILL   = Signal(9)\n\tSIGBUS    = Signal(10)\n\tSIGSEGV   = Signal(11)\n\tSIGSYS    = Signal(12)\n\tSIGPIPE   = Signal(13)\n\tSIGALRM   = Signal(14)\n\tSIGTERM   = Signal(15)\n\tSIGUSR1   = Signal(16)\n\tSIGUSR2   = Signal(17)\n\tSIGABND   = Signal(18)\n\tSIGCONT   = Signal(19)\n\tSIGCHLD   = Signal(20)\n\tSIGTTIN   = Signal(21)\n\tSIGTTOU   = Signal(22)\n\tSIGIO     = Signal(23)\n\tSIGQUIT   = Signal(24)\n\tSIGTSTP   = Signal(25)\n\tSIGTRAP   = Signal(26)\n\tSIGIOERR  = Signal(27)\n\tSIGWINCH  = Signal(28)\n\tSIGXCPU   = Signal(29)\n\tSIGXFSZ   = Signal(30)\n\tSIGVTALRM = Signal(31)\n\tSIGPROF   = Signal(32)\n\tSIGDANGER = Signal(33)\n\tSIGTHSTOP = Signal(34)\n\tSIGTHCONT = Signal(35)\n\tSIGTRACE  = Signal(37)\n\tSIGDCE    = Signal(38)\n\tSIGDUMP   = Signal(39)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EDC5001I\", \"A domain error occurred.\"},\n\t{2, \"EDC5002I\", \"A range error occurred.\"},\n\t{111, \"EDC5111I\", \"Permission denied.\"},\n\t{112, \"EDC5112I\", \"Resource temporarily unavailable.\"},\n\t{113, \"EDC5113I\", \"Bad file descriptor.\"},\n\t{114, \"EDC5114I\", \"Resource busy.\"},\n\t{115, \"EDC5115I\", \"No child processes.\"},\n\t{116, \"EDC5116I\", \"Resource deadlock avoided.\"},\n\t{117, \"EDC5117I\", \"File exists.\"},\n\t{118, \"EDC5118I\", \"Incorrect address.\"},\n\t{119, \"EDC5119I\", \"File too large.\"},\n\t{120, \"EDC5120I\", \"Interrupted function call.\"},\n\t{121, \"EDC5121I\", \"Invalid argument.\"},\n\t{122, \"EDC5122I\", \"Input/output error.\"},\n\t{123, \"EDC5123I\", \"Is a directory.\"},\n\t{124, \"EDC5124I\", \"Too many open files.\"},\n\t{125, \"EDC5125I\", \"Too many links.\"},\n\t{126, \"EDC5126I\", \"Filename too long.\"},\n\t{127, \"EDC5127I\", \"Too many open files in system.\"},\n\t{128, \"EDC5128I\", \"No such device.\"},\n\t{129, \"EDC5129I\", \"No such file or directory.\"},\n\t{130, \"EDC5130I\", \"Exec format error.\"},\n\t{131, \"EDC5131I\", \"No locks available.\"},\n\t{132, \"EDC5132I\", \"Not enough memory.\"},\n\t{133, \"EDC5133I\", \"No space left on device.\"},\n\t{134, \"EDC5134I\", \"Function not implemented.\"},\n\t{135, \"EDC5135I\", \"Not a directory.\"},\n\t{136, \"EDC5136I\", \"Directory not empty.\"},\n\t{137, \"EDC5137I\", \"Inappropriate I/O control operation.\"},\n\t{138, \"EDC5138I\", \"No such device or address.\"},\n\t{139, \"EDC5139I\", \"Operation not permitted.\"},\n\t{140, \"EDC5140I\", \"Broken pipe.\"},\n\t{141, \"EDC5141I\", \"Read-only file system.\"},\n\t{142, \"EDC5142I\", \"Invalid seek.\"},\n\t{143, \"EDC5143I\", \"No such process.\"},\n\t{144, \"EDC5144I\", \"Improper link.\"},\n\t{145, \"EDC5145I\", \"The parameter list is too long, or the message to receive was too large for the buffer.\"},\n\t{146, \"EDC5146I\", \"Too many levels of symbolic links.\"},\n\t{147, \"EDC5147I\", \"Illegal byte sequence.\"},\n\t{148, \"EDC5148I\", \"The named attribute or data not available.\"},\n\t{149, \"EDC5149I\", \"Value Overflow Error.\"},\n\t{150, \"EDC5150I\", \"UNIX System Services is not active.\"},\n\t{151, \"EDC5151I\", \"Dynamic allocation error.\"},\n\t{152, \"EDC5152I\", \"Common VTOC access facility (CVAF) error.\"},\n\t{153, \"EDC5153I\", \"Catalog obtain error.\"},\n\t{156, \"EDC5156I\", \"Process initialization error.\"},\n\t{157, \"EDC5157I\", \"An internal error has occurred.\"},\n\t{158, \"EDC5158I\", \"Bad parameters were passed to the service.\"},\n\t{159, \"EDC5159I\", \"The Physical File System encountered a permanent file error.\"},\n\t{160, \"EDC5160I\", \"Bad character in environment variable name.\"},\n\t{162, \"EDC5162I\", \"The Physical File System encountered a system error.\"},\n\t{163, \"EDC5163I\", \"SAF/RACF extract error.\"},\n\t{164, \"EDC5164I\", \"SAF/RACF error.\"},\n\t{165, \"EDC5165I\", \"System TOD clock not set.\"},\n\t{166, \"EDC5166I\", \"Access mode argument on function call conflicts with PATHOPTS parameter on JCL DD statement.\"},\n\t{167, \"EDC5167I\", \"Access to the UNIX System Services version of the C RTL is denied.\"},\n\t{168, \"EDC5168I\", \"Password has expired.\"},\n\t{169, \"EDC5169I\", \"Password is invalid.\"},\n\t{170, \"EDC5170I\", \"An error was encountered with WLM.\"},\n\t{171, \"EDC5171I\", \"An error was encountered with CPL.\"},\n\t{172, \"EDC5172I\", \"An error was encountered with Application Response Measurement (ARM) component.\"},\n\t{200, \"EDC5200I\", \"The application contains a Language Environment member language that cannot tolerate a fork().\"},\n\t{201, \"EDC5201I\", \"The Language Environment message file was not found in the hierarchical file system.\"},\n\t{202, \"EDC5202E\", \"DLL facilities are not supported under SPC environment.\"},\n\t{203, \"EDC5203E\", \"DLL facilities are not supported under POSIX environment.\"},\n\t{227, \"EDC5227I\", \"Buffer is not long enough to contain a path definition\"},\n\t{228, \"EDC5228I\", \"The file referred to is an external link\"},\n\t{229, \"EDC5229I\", \"No path definition for ddname in effect\"},\n\t{230, \"EDC5230I\", \"ESM error.\"},\n\t{231, \"EDC5231I\", \"CP or the external security manager had an error\"},\n\t{232, \"EDC5232I\", \"The function failed because it was invoked from a multithread environment.\"},\n\t{244, \"EDC5244I\", \"The program, module or DLL is not supported in this environment.\"},\n\t{245, \"EDC5245I\", \"Data is not valid.\"},\n\t{246, \"EDC5246I\", \"Unknown system state.\"},\n\t{247, \"EDC5247I\", \"Operation not supported.\"},\n\t{248, \"EDC5248I\", \"The object name specified is not correct.\"},\n\t{249, \"EDC5249I\", \"The function is not allowed.\"},\n\t{257, \"EDC5257I\", \"Function cannot be called in the child process of a fork() from a multithreaded process until exec() is called.\"},\n\t{258, \"EDC5258I\", \"A CUN_RS_NO_UNI_ENV error was issued by Unicode Services.\"},\n\t{259, \"EDC5259I\", \"A CUN_RS_NO_CONVERSION error was issued by Unicode Services.\"},\n\t{260, \"EDC5260I\", \"A CUN_RS_TABLE_NOT_ALIGNED error was issued by Unicode Services.\"},\n\t{262, \"EDC5262I\", \"An iconv() function encountered an unexpected error while using Unicode Services.\"},\n\t{265, \"EDC5265I\", \"The named attribute not available.\"},\n\t{1000, \"EDC8000I\", \"A bad socket-call constant was found in the IUCV header.\"},\n\t{1001, \"EDC8001I\", \"An error was found in the IUCV header.\"},\n\t{1002, \"EDC8002I\", \"A socket descriptor is out of range.\"},\n\t{1003, \"EDC8003I\", \"A socket descriptor is in use.\"},\n\t{1004, \"EDC8004I\", \"Request failed because of an IUCV error.\"},\n\t{1005, \"EDC8005I\", \"Offload box error.\"},\n\t{1006, \"EDC8006I\", \"Offload box restarted.\"},\n\t{1007, \"EDC8007I\", \"Offload box down.\"},\n\t{1008, \"EDC8008I\", \"Already a conflicting call outstanding on socket.\"},\n\t{1009, \"EDC8009I\", \"Request cancelled using a SOCKcallCANCEL request.\"},\n\t{1011, \"EDC8011I\", \"A name of a PFS was specified that either is not configured or is not a Sockets PFS.\"},\n\t{1100, \"EDC8100I\", \"Block device required.\"},\n\t{1101, \"EDC8101I\", \"Text file busy.\"},\n\t{1102, \"EDC8102I\", \"Operation would block.\"},\n\t{1103, \"EDC8103I\", \"Operation now in progress.\"},\n\t{1104, \"EDC8104I\", \"Connection already in progress.\"},\n\t{1105, \"EDC8105I\", \"Socket operation on non-socket.\"},\n\t{1106, \"EDC8106I\", \"Destination address required.\"},\n\t{1107, \"EDC8107I\", \"Message too long.\"},\n\t{1108, \"EDC8108I\", \"Protocol wrong type for socket.\"},\n\t{1109, \"EDC8109I\", \"Protocol not available.\"},\n\t{1110, \"EDC8110I\", \"Protocol not supported.\"},\n\t{1111, \"EDC8111I\", \"Socket type not supported.\"},\n\t{1112, \"EDC8112I\", \"Operation not supported on socket.\"},\n\t{1113, \"EDC8113I\", \"Protocol family not supported.\"},\n\t{1114, \"EDC8114I\", \"Address family not supported.\"},\n\t{1115, \"EDC8115I\", \"Address already in use.\"},\n\t{1116, \"EDC8116I\", \"Address not available.\"},\n\t{1117, \"EDC8117I\", \"Network is down.\"},\n\t{1118, \"EDC8118I\", \"Network is unreachable.\"},\n\t{1119, \"EDC8119I\", \"Network dropped connection on reset.\"},\n\t{1120, \"EDC8120I\", \"Connection ended abnormally.\"},\n\t{1121, \"EDC8121I\", \"Connection reset.\"},\n\t{1122, \"EDC8122I\", \"No buffer space available.\"},\n\t{1123, \"EDC8123I\", \"Socket already connected.\"},\n\t{1124, \"EDC8124I\", \"Socket not connected.\"},\n\t{1125, \"EDC8125I\", \"Can't send after socket shutdown.\"},\n\t{1126, \"EDC8126I\", \"Too many references; can't splice.\"},\n\t{1127, \"EDC8127I\", \"Connection timed out.\"},\n\t{1128, \"EDC8128I\", \"Connection refused.\"},\n\t{1129, \"EDC8129I\", \"Host is not available.\"},\n\t{1130, \"EDC8130I\", \"Host cannot be reached.\"},\n\t{1131, \"EDC8131I\", \"Too many processes.\"},\n\t{1132, \"EDC8132I\", \"Too many users.\"},\n\t{1133, \"EDC8133I\", \"Disk quota exceeded.\"},\n\t{1134, \"EDC8134I\", \"Stale file handle.\"},\n\t{1135, \"\", \"\"},\n\t{1136, \"EDC8136I\", \"File is not a STREAM.\"},\n\t{1137, \"EDC8137I\", \"STREAMS ioctl() timeout.\"},\n\t{1138, \"EDC8138I\", \"No STREAMS resources.\"},\n\t{1139, \"EDC8139I\", \"The message identified by set_id and msg_id is not in the message catalog.\"},\n\t{1140, \"EDC8140I\", \"Bad message.\"},\n\t{1141, \"EDC8141I\", \"Identifier removed.\"},\n\t{1142, \"\", \"\"},\n\t{1143, \"\", \"\"},\n\t{1144, \"EDC8144I\", \"The link has been severed.\"},\n\t{1145, \"\", \"\"},\n\t{1146, \"\", \"\"},\n\t{1147, \"\", \"\"},\n\t{1148, \"EDC8148I\", \"Protocol error.\"},\n\t{1149, \"EDC8149I\", \"Multihop not allowed.\"},\n\t{1150, \"\", \"\"},\n\t{1151, \"\", \"\"},\n\t{1152, \"EDC8152I\", \"The asynchronous I/O request has been canceled.\"},\n\t{1159, \"EDC8159I\", \"Function call was interrupted before any data was received.\"},\n\t{1160, \"EDC8160I\", \"Socket reuse is not supported.\"},\n\t{1161, \"EDC8161I\", \"The file system cannot currently be moved.\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGABT\", \"aborted\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGPOLL\", \"pollable event\"},\n\t{6, \"SIGURG\", \"urgent I/O condition\"},\n\t{7, \"SIGSTOP\", \"stop process\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad argument to routine\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGUSR1\", \"user defined signal 1\"},\n\t{17, \"SIGUSR2\", \"user defined signal 2\"},\n\t{18, \"SIGABND\", \"abend\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGQUIT\", \"quit\"},\n\t{25, \"SIGTSTP\", \"stopped\"},\n\t{26, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{27, \"SIGIOER\", \"I/O error\"},\n\t{28, \"SIGWINCH\", \"window changed\"},\n\t{29, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{30, \"SIGXFSZ\", \"file size limit exceeded\"},\n\t{31, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{32, \"SIGPROF\", \"profiling timer expired\"},\n\t{33, \"SIGDANGER\", \"danger\"},\n\t{34, \"SIGTHSTOP\", \"stop thread\"},\n\t{35, \"SIGTHCONT\", \"continue thread\"},\n\t{37, \"SIGTRACE\", \"trace\"},\n\t{38, \"\", \"DCE\"},\n\t{39, \"SIGDUMP\", \"dump\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zptrace_armnn_linux.go",
    "content": "// Code generated by linux/mkall.go generatePtracePair(\"arm\", \"arm64\"). DO NOT EDIT.\n\n//go:build linux && (arm || arm64)\n\npackage unix\n\nimport \"unsafe\"\n\n// PtraceRegsArm is the registers used by arm binaries.\ntype PtraceRegsArm struct {\n\tUregs [18]uint32\n}\n\n// PtraceGetRegsArm fetches the registers used by arm binaries.\nfunc PtraceGetRegsArm(pid int, regsout *PtraceRegsArm) error {\n\treturn ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout))\n}\n\n// PtraceSetRegsArm sets the registers used by arm binaries.\nfunc PtraceSetRegsArm(pid int, regs *PtraceRegsArm) error {\n\treturn ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs))\n}\n\n// PtraceRegsArm64 is the registers used by arm64 binaries.\ntype PtraceRegsArm64 struct {\n\tRegs   [31]uint64\n\tSp     uint64\n\tPc     uint64\n\tPstate uint64\n}\n\n// PtraceGetRegsArm64 fetches the registers used by arm64 binaries.\nfunc PtraceGetRegsArm64(pid int, regsout *PtraceRegsArm64) error {\n\treturn ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout))\n}\n\n// PtraceSetRegsArm64 sets the registers used by arm64 binaries.\nfunc PtraceSetRegsArm64(pid int, regs *PtraceRegsArm64) error {\n\treturn ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs))\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zptrace_linux_arm64.go",
    "content": "// Code generated by linux/mkall.go generatePtraceRegSet(\"arm64\"). DO NOT EDIT.\n\npackage unix\n\nimport \"unsafe\"\n\n// PtraceGetRegSetArm64 fetches the registers used by arm64 binaries.\nfunc PtraceGetRegSetArm64(pid, addr int, regsout *PtraceRegsArm64) error {\n\tiovec := Iovec{(*byte)(unsafe.Pointer(regsout)), uint64(unsafe.Sizeof(*regsout))}\n\treturn ptracePtr(PTRACE_GETREGSET, pid, uintptr(addr), unsafe.Pointer(&iovec))\n}\n\n// PtraceSetRegSetArm64 sets the registers used by arm64 binaries.\nfunc PtraceSetRegSetArm64(pid, addr int, regs *PtraceRegsArm64) error {\n\tiovec := Iovec{(*byte)(unsafe.Pointer(regs)), uint64(unsafe.Sizeof(*regs))}\n\treturn ptracePtr(PTRACE_SETREGSET, pid, uintptr(addr), unsafe.Pointer(&iovec))\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zptrace_mipsnn_linux.go",
    "content": "// Code generated by linux/mkall.go generatePtracePair(\"mips\", \"mips64\"). DO NOT EDIT.\n\n//go:build linux && (mips || mips64)\n\npackage unix\n\nimport \"unsafe\"\n\n// PtraceRegsMips is the registers used by mips binaries.\ntype PtraceRegsMips struct {\n\tRegs     [32]uint64\n\tLo       uint64\n\tHi       uint64\n\tEpc      uint64\n\tBadvaddr uint64\n\tStatus   uint64\n\tCause    uint64\n}\n\n// PtraceGetRegsMips fetches the registers used by mips binaries.\nfunc PtraceGetRegsMips(pid int, regsout *PtraceRegsMips) error {\n\treturn ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout))\n}\n\n// PtraceSetRegsMips sets the registers used by mips binaries.\nfunc PtraceSetRegsMips(pid int, regs *PtraceRegsMips) error {\n\treturn ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs))\n}\n\n// PtraceRegsMips64 is the registers used by mips64 binaries.\ntype PtraceRegsMips64 struct {\n\tRegs     [32]uint64\n\tLo       uint64\n\tHi       uint64\n\tEpc      uint64\n\tBadvaddr uint64\n\tStatus   uint64\n\tCause    uint64\n}\n\n// PtraceGetRegsMips64 fetches the registers used by mips64 binaries.\nfunc PtraceGetRegsMips64(pid int, regsout *PtraceRegsMips64) error {\n\treturn ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout))\n}\n\n// PtraceSetRegsMips64 sets the registers used by mips64 binaries.\nfunc PtraceSetRegsMips64(pid int, regs *PtraceRegsMips64) error {\n\treturn ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs))\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zptrace_mipsnnle_linux.go",
    "content": "// Code generated by linux/mkall.go generatePtracePair(\"mipsle\", \"mips64le\"). DO NOT EDIT.\n\n//go:build linux && (mipsle || mips64le)\n\npackage unix\n\nimport \"unsafe\"\n\n// PtraceRegsMipsle is the registers used by mipsle binaries.\ntype PtraceRegsMipsle struct {\n\tRegs     [32]uint64\n\tLo       uint64\n\tHi       uint64\n\tEpc      uint64\n\tBadvaddr uint64\n\tStatus   uint64\n\tCause    uint64\n}\n\n// PtraceGetRegsMipsle fetches the registers used by mipsle binaries.\nfunc PtraceGetRegsMipsle(pid int, regsout *PtraceRegsMipsle) error {\n\treturn ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout))\n}\n\n// PtraceSetRegsMipsle sets the registers used by mipsle binaries.\nfunc PtraceSetRegsMipsle(pid int, regs *PtraceRegsMipsle) error {\n\treturn ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs))\n}\n\n// PtraceRegsMips64le is the registers used by mips64le binaries.\ntype PtraceRegsMips64le struct {\n\tRegs     [32]uint64\n\tLo       uint64\n\tHi       uint64\n\tEpc      uint64\n\tBadvaddr uint64\n\tStatus   uint64\n\tCause    uint64\n}\n\n// PtraceGetRegsMips64le fetches the registers used by mips64le binaries.\nfunc PtraceGetRegsMips64le(pid int, regsout *PtraceRegsMips64le) error {\n\treturn ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout))\n}\n\n// PtraceSetRegsMips64le sets the registers used by mips64le binaries.\nfunc PtraceSetRegsMips64le(pid int, regs *PtraceRegsMips64le) error {\n\treturn ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs))\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zptrace_x86_linux.go",
    "content": "// Code generated by linux/mkall.go generatePtracePair(\"386\", \"amd64\"). DO NOT EDIT.\n\n//go:build linux && (386 || amd64)\n\npackage unix\n\nimport \"unsafe\"\n\n// PtraceRegs386 is the registers used by 386 binaries.\ntype PtraceRegs386 struct {\n\tEbx      int32\n\tEcx      int32\n\tEdx      int32\n\tEsi      int32\n\tEdi      int32\n\tEbp      int32\n\tEax      int32\n\tXds      int32\n\tXes      int32\n\tXfs      int32\n\tXgs      int32\n\tOrig_eax int32\n\tEip      int32\n\tXcs      int32\n\tEflags   int32\n\tEsp      int32\n\tXss      int32\n}\n\n// PtraceGetRegs386 fetches the registers used by 386 binaries.\nfunc PtraceGetRegs386(pid int, regsout *PtraceRegs386) error {\n\treturn ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout))\n}\n\n// PtraceSetRegs386 sets the registers used by 386 binaries.\nfunc PtraceSetRegs386(pid int, regs *PtraceRegs386) error {\n\treturn ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs))\n}\n\n// PtraceRegsAmd64 is the registers used by amd64 binaries.\ntype PtraceRegsAmd64 struct {\n\tR15      uint64\n\tR14      uint64\n\tR13      uint64\n\tR12      uint64\n\tRbp      uint64\n\tRbx      uint64\n\tR11      uint64\n\tR10      uint64\n\tR9       uint64\n\tR8       uint64\n\tRax      uint64\n\tRcx      uint64\n\tRdx      uint64\n\tRsi      uint64\n\tRdi      uint64\n\tOrig_rax uint64\n\tRip      uint64\n\tCs       uint64\n\tEflags   uint64\n\tRsp      uint64\n\tSs       uint64\n\tFs_base  uint64\n\tGs_base  uint64\n\tDs       uint64\n\tEs       uint64\n\tFs       uint64\n\tGs       uint64\n}\n\n// PtraceGetRegsAmd64 fetches the registers used by amd64 binaries.\nfunc PtraceGetRegsAmd64(pid int, regsout *PtraceRegsAmd64) error {\n\treturn ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout))\n}\n\n// PtraceSetRegsAmd64 sets the registers used by amd64 binaries.\nfunc PtraceSetRegsAmd64(pid int, regs *PtraceRegsAmd64) error {\n\treturn ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs))\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsymaddr_zos_s390x.s",
    "content": "// go run mksyscall_zos_s390x.go -o_sysnum zsysnum_zos_s390x.go -o_syscall zsyscall_zos_s390x.go -i_syscall syscall_zos_s390x.go -o_asm zsymaddr_zos_s390x.s\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build zos && s390x\n#include \"textflag.h\"\n\n//  provide the address of function variable to be fixed up.\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_FlistxattrAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Flistxattr(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_FremovexattrAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Fremovexattr(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_FgetxattrAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Fgetxattr(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_FsetxattrAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Fsetxattr(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_accept4Addr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·accept4(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_RemovexattrAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Removexattr(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_Dup3Addr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Dup3(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_DirfdAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Dirfd(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_EpollCreateAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·EpollCreate(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_EpollCreate1Addr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·EpollCreate1(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_EpollCtlAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·EpollCtl(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_EpollPwaitAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·EpollPwait(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_EpollWaitAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·EpollWait(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_EventfdAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Eventfd(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_FaccessatAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Faccessat(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_FchmodatAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Fchmodat(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_FchownatAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Fchownat(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_FdatasyncAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Fdatasync(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_fstatatAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·fstatat(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_LgetxattrAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Lgetxattr(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_LsetxattrAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Lsetxattr(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_FstatfsAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Fstatfs(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_FutimesAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Futimes(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_FutimesatAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Futimesat(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_GetrandomAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Getrandom(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_InotifyInitAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·InotifyInit(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_InotifyInit1Addr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·InotifyInit1(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_InotifyAddWatchAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·InotifyAddWatch(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_InotifyRmWatchAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·InotifyRmWatch(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_ListxattrAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Listxattr(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_LlistxattrAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Llistxattr(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_LremovexattrAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Lremovexattr(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_LutimesAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Lutimes(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_StatfsAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Statfs(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_SyncfsAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Syncfs(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_UnshareAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Unshare(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_LinkatAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Linkat(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_MkdiratAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Mkdirat(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_MknodatAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Mknodat(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_PivotRootAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·PivotRoot(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_PrctlAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Prctl(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_PrlimitAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Prlimit(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_RenameatAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Renameat(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_Renameat2Addr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Renameat2(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_SethostnameAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Sethostname(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_SetnsAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Setns(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_SymlinkatAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Symlinkat(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_UnlinkatAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·Unlinkat(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_openatAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·openat(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_openat2Addr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·openat2(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nTEXT ·get_utimensatAddr(SB), NOSPLIT|NOFRAME, $0-8\n\tMOVD $·utimensat(SB), R8\n\tMOVD R8, ret+0(FP)\n\tRET\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go",
    "content": "// go run mksyscall_aix_ppc.go -aix -tags aix,ppc syscall_aix.go syscall_aix_ppc.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build aix && ppc\n\npackage unix\n\n/*\n#include <stdint.h>\n#include <stddef.h>\nint utimes(uintptr_t, uintptr_t);\nint utimensat(int, uintptr_t, uintptr_t, int);\nint getcwd(uintptr_t, size_t);\nint accept(int, uintptr_t, uintptr_t);\nint getdirent(int, uintptr_t, size_t);\nint wait4(int, uintptr_t, int, uintptr_t);\nint ioctl(int, int, uintptr_t);\nint fcntl(uintptr_t, int, uintptr_t);\nint fsync_range(int, int, long long, long long);\nint acct(uintptr_t);\nint chdir(uintptr_t);\nint chroot(uintptr_t);\nint close(int);\nint dup(int);\nvoid exit(int);\nint faccessat(int, uintptr_t, unsigned int, int);\nint fchdir(int);\nint fchmod(int, unsigned int);\nint fchmodat(int, uintptr_t, unsigned int, int);\nint fchownat(int, uintptr_t, int, int, int);\nint fdatasync(int);\nint getpgid(int);\nint getpgrp();\nint getpid();\nint getppid();\nint getpriority(int, int);\nint getrusage(int, uintptr_t);\nint getsid(int);\nint kill(int, int);\nint syslog(int, uintptr_t, size_t);\nint mkdir(int, uintptr_t, unsigned int);\nint mkdirat(int, uintptr_t, unsigned int);\nint mkfifo(uintptr_t, unsigned int);\nint mknod(uintptr_t, unsigned int, int);\nint mknodat(int, uintptr_t, unsigned int, int);\nint nanosleep(uintptr_t, uintptr_t);\nint open64(uintptr_t, int, unsigned int);\nint openat(int, uintptr_t, int, unsigned int);\nint read(int, uintptr_t, size_t);\nint readlink(uintptr_t, uintptr_t, size_t);\nint renameat(int, uintptr_t, int, uintptr_t);\nint setdomainname(uintptr_t, size_t);\nint sethostname(uintptr_t, size_t);\nint setpgid(int, int);\nint setsid();\nint settimeofday(uintptr_t);\nint setuid(int);\nint setgid(int);\nint setpriority(int, int, int);\nint statx(int, uintptr_t, int, int, uintptr_t);\nint sync();\nuintptr_t times(uintptr_t);\nint umask(int);\nint uname(uintptr_t);\nint unlink(uintptr_t);\nint unlinkat(int, uintptr_t, int);\nint ustat(int, uintptr_t);\nint write(int, uintptr_t, size_t);\nint dup2(int, int);\nint posix_fadvise64(int, long long, long long, int);\nint fchown(int, int, int);\nint fstat(int, uintptr_t);\nint fstatat(int, uintptr_t, uintptr_t, int);\nint fstatfs(int, uintptr_t);\nint ftruncate(int, long long);\nint getegid();\nint geteuid();\nint getgid();\nint getuid();\nint lchown(uintptr_t, int, int);\nint listen(int, int);\nint lstat(uintptr_t, uintptr_t);\nint pause();\nint pread64(int, uintptr_t, size_t, long long);\nint pwrite64(int, uintptr_t, size_t, long long);\n#define c_select select\nint select(int, uintptr_t, uintptr_t, uintptr_t, uintptr_t);\nint pselect(int, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t);\nint setregid(int, int);\nint setreuid(int, int);\nint shutdown(int, int);\nlong long splice(int, uintptr_t, int, uintptr_t, int, int);\nint stat(uintptr_t, uintptr_t);\nint statfs(uintptr_t, uintptr_t);\nint truncate(uintptr_t, long long);\nint bind(int, uintptr_t, uintptr_t);\nint connect(int, uintptr_t, uintptr_t);\nint getgroups(int, uintptr_t);\nint setgroups(int, uintptr_t);\nint getsockopt(int, int, int, uintptr_t, uintptr_t);\nint setsockopt(int, int, int, uintptr_t, uintptr_t);\nint socket(int, int, int);\nint socketpair(int, int, int, uintptr_t);\nint getpeername(int, uintptr_t, uintptr_t);\nint getsockname(int, uintptr_t, uintptr_t);\nint recvfrom(int, uintptr_t, size_t, int, uintptr_t, uintptr_t);\nint sendto(int, uintptr_t, size_t, int, uintptr_t, uintptr_t);\nint nrecvmsg(int, uintptr_t, int);\nint nsendmsg(int, uintptr_t, int);\nint munmap(uintptr_t, uintptr_t);\nint madvise(uintptr_t, size_t, int);\nint mprotect(uintptr_t, size_t, int);\nint mlock(uintptr_t, size_t);\nint mlockall(int);\nint msync(uintptr_t, size_t, int);\nint munlock(uintptr_t, size_t);\nint munlockall();\nint pipe(uintptr_t);\nint poll(uintptr_t, int, int);\nint gettimeofday(uintptr_t, uintptr_t);\nint time(uintptr_t);\nint utime(uintptr_t, uintptr_t);\nunsigned long long getsystemcfg(int);\nint umount(uintptr_t);\nint getrlimit64(int, uintptr_t);\nlong long lseek64(int, long long, int);\nuintptr_t mmap(uintptr_t, uintptr_t, int, int, int, long long);\n\n*/\nimport \"C\"\nimport (\n\t\"unsafe\"\n)\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.utimes(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(times))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flag int) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.utimensat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(times))), C.int(flag))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getcwd(buf []byte) (err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(buf)\n\tr0, er := C.getcwd(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, er := C.accept(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(rsa))), C.uintptr_t(uintptr(unsafe.Pointer(addrlen))))\n\tfd = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getdirent(fd int, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(buf)\n\tr0, er := C.getdirent(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid Pid_t, status *_C_int, options int, rusage *Rusage) (wpid Pid_t, err error) {\n\tr0, er := C.wait4(C.int(pid), C.uintptr_t(uintptr(unsafe.Pointer(status))), C.int(options), C.uintptr_t(uintptr(unsafe.Pointer(rusage))))\n\twpid = Pid_t(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req int, arg uintptr) (err error) {\n\tr0, er := C.ioctl(C.int(fd), C.int(req), C.uintptr_t(arg))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req int, arg unsafe.Pointer) (err error) {\n\tr0, er := C.ioctl(C.int(fd), C.int(req), C.uintptr_t(uintptr(arg)))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc FcntlInt(fd uintptr, cmd int, arg int) (r int, err error) {\n\tr0, er := C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(arg))\n\tr = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc FcntlFlock(fd uintptr, cmd int, lk *Flock_t) (err error) {\n\tr0, er := C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(uintptr(unsafe.Pointer(lk))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (val int, err error) {\n\tr0, er := C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(arg))\n\tval = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fsyncRange(fd int, how int, start int64, length int64) (err error) {\n\tr0, er := C.fsync_range(C.int(fd), C.int(how), C.longlong(start), C.longlong(length))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Acct(path string) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.acct(C.uintptr_t(_p0))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.chdir(C.uintptr_t(_p0))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.chroot(C.uintptr_t(_p0))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\tr0, er := C.close(C.int(fd))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(oldfd int) (fd int, err error) {\n\tr0, er := C.dup(C.int(oldfd))\n\tfd = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tC.exit(C.int(code))\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.faccessat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(flags))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\tr0, er := C.fchdir(C.int(fd))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\tr0, er := C.fchmod(C.int(fd), C.uint(mode))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.fchmodat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(flags))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.fchownat(C.int(dirfd), C.uintptr_t(_p0), C.int(uid), C.int(gid), C.int(flags))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fdatasync(fd int) (err error) {\n\tr0, er := C.fdatasync(C.int(fd))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, er := C.getpgid(C.int(pid))\n\tpgid = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pid int) {\n\tr0, _ := C.getpgrp()\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _ := C.getpid()\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _ := C.getppid()\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, er := C.getpriority(C.int(which), C.int(who))\n\tprio = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\tr0, er := C.getrusage(C.int(who), C.uintptr_t(uintptr(unsafe.Pointer(rusage))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, er := C.getsid(C.int(pid))\n\tsid = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, sig Signal) (err error) {\n\tr0, er := C.kill(C.int(pid), C.int(sig))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Klogctl(typ int, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(buf)\n\tr0, er := C.syslog(C.int(typ), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(dirfd int, path string, mode uint32) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.mkdir(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.mkdirat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.mkfifo(C.uintptr_t(_p0), C.uint(mode))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.mknod(C.uintptr_t(_p0), C.uint(mode), C.int(dev))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.mknodat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(dev))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\tr0, er := C.nanosleep(C.uintptr_t(uintptr(unsafe.Pointer(time))), C.uintptr_t(uintptr(unsafe.Pointer(leftover))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.open64(C.uintptr_t(_p0), C.int(mode), C.uint(perm))\n\tfd = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.openat(C.int(dirfd), C.uintptr_t(_p0), C.int(flags), C.uint(mode))\n\tfd = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(p)\n\tr0, er := C.read(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tvar _p1 *byte\n\tif len(buf) > 0 {\n\t\t_p1 = &buf[0]\n\t}\n\tvar _p2 int\n\t_p2 = len(buf)\n\tr0, er := C.readlink(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(_p1))), C.size_t(_p2))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(oldpath)))\n\t_p1 := uintptr(unsafe.Pointer(C.CString(newpath)))\n\tr0, er := C.renameat(C.int(olddirfd), C.uintptr_t(_p0), C.int(newdirfd), C.uintptr_t(_p1))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setdomainname(p []byte) (err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(p)\n\tr0, er := C.setdomainname(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sethostname(p []byte) (err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(p)\n\tr0, er := C.sethostname(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\tr0, er := C.setpgid(C.int(pid), C.int(pgid))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, er := C.setsid()\n\tpid = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tv *Timeval) (err error) {\n\tr0, er := C.settimeofday(C.uintptr_t(uintptr(unsafe.Pointer(tv))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\tr0, er := C.setuid(C.int(uid))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(uid int) (err error) {\n\tr0, er := C.setgid(C.int(uid))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\tr0, er := C.setpriority(C.int(which), C.int(who), C.int(prio))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.statx(C.int(dirfd), C.uintptr_t(_p0), C.int(flags), C.int(mask), C.uintptr_t(uintptr(unsafe.Pointer(stat))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() {\n\tC.sync()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Times(tms *Tms) (ticks uintptr, err error) {\n\tr0, er := C.times(C.uintptr_t(uintptr(unsafe.Pointer(tms))))\n\tticks = uintptr(r0)\n\tif uintptr(r0) == ^uintptr(0) && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(mask int) (oldmask int) {\n\tr0, _ := C.umask(C.int(mask))\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Uname(buf *Utsname) (err error) {\n\tr0, er := C.uname(C.uintptr_t(uintptr(unsafe.Pointer(buf))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.unlink(C.uintptr_t(_p0))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.unlinkat(C.int(dirfd), C.uintptr_t(_p0), C.int(flags))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\tr0, er := C.ustat(C.int(dev), C.uintptr_t(uintptr(unsafe.Pointer(ubuf))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(p)\n\tr0, er := C.write(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(oldfd int, newfd int) (err error) {\n\tr0, er := C.dup2(C.int(oldfd), C.int(newfd))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\tr0, er := C.posix_fadvise64(C.int(fd), C.longlong(offset), C.longlong(length), C.int(advice))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\tr0, er := C.fchown(C.int(fd), C.int(uid), C.int(gid))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstat(fd int, stat *Stat_t) (err error) {\n\tr0, er := C.fstat(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(stat))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.fstatat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(stat))), C.int(flags))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\tr0, er := C.fstatfs(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(buf))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\tr0, er := C.ftruncate(C.int(fd), C.longlong(length))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := C.getegid()\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := C.geteuid()\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := C.getgid()\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := C.getuid()\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.lchown(C.uintptr_t(_p0), C.int(uid), C.int(gid))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\tr0, er := C.listen(C.int(s), C.int(n))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc lstat(path string, stat *Stat_t) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.lstat(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(stat))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\tr0, er := C.pause()\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(p)\n\tr0, er := C.pread64(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.longlong(offset))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(p)\n\tr0, er := C.pwrite64(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.longlong(offset))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, er := C.c_select(C.int(nfd), C.uintptr_t(uintptr(unsafe.Pointer(r))), C.uintptr_t(uintptr(unsafe.Pointer(w))), C.uintptr_t(uintptr(unsafe.Pointer(e))), C.uintptr_t(uintptr(unsafe.Pointer(timeout))))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, er := C.pselect(C.int(nfd), C.uintptr_t(uintptr(unsafe.Pointer(r))), C.uintptr_t(uintptr(unsafe.Pointer(w))), C.uintptr_t(uintptr(unsafe.Pointer(e))), C.uintptr_t(uintptr(unsafe.Pointer(timeout))), C.uintptr_t(uintptr(unsafe.Pointer(sigmask))))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\tr0, er := C.setregid(C.int(rgid), C.int(egid))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\tr0, er := C.setreuid(C.int(ruid), C.int(euid))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\tr0, er := C.shutdown(C.int(fd), C.int(how))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, er := C.splice(C.int(rfd), C.uintptr_t(uintptr(unsafe.Pointer(roff))), C.int(wfd), C.uintptr_t(uintptr(unsafe.Pointer(woff))), C.int(len), C.int(flags))\n\tn = int64(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc stat(path string, statptr *Stat_t) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.stat(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(statptr))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.statfs(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(buf))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.truncate(C.uintptr_t(_p0), C.longlong(length))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\tr0, er := C.bind(C.int(s), C.uintptr_t(uintptr(addr)), C.uintptr_t(uintptr(addrlen)))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\tr0, er := C.connect(C.int(s), C.uintptr_t(uintptr(addr)), C.uintptr_t(uintptr(addrlen)))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, er := C.getgroups(C.int(n), C.uintptr_t(uintptr(unsafe.Pointer(list))))\n\tnn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\tr0, er := C.setgroups(C.int(n), C.uintptr_t(uintptr(unsafe.Pointer(list))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\tr0, er := C.getsockopt(C.int(s), C.int(level), C.int(name), C.uintptr_t(uintptr(val)), C.uintptr_t(uintptr(unsafe.Pointer(vallen))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\tr0, er := C.setsockopt(C.int(s), C.int(level), C.int(name), C.uintptr_t(uintptr(val)), C.uintptr_t(vallen))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, er := C.socket(C.int(domain), C.int(typ), C.int(proto))\n\tfd = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\tr0, er := C.socketpair(C.int(domain), C.int(typ), C.int(proto), C.uintptr_t(uintptr(unsafe.Pointer(fd))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\tr0, er := C.getpeername(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(rsa))), C.uintptr_t(uintptr(unsafe.Pointer(addrlen))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\tr0, er := C.getsockname(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(rsa))), C.uintptr_t(uintptr(unsafe.Pointer(addrlen))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(p)\n\tr0, er := C.recvfrom(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(flags), C.uintptr_t(uintptr(unsafe.Pointer(from))), C.uintptr_t(uintptr(unsafe.Pointer(fromlen))))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(buf)\n\tr0, er := C.sendto(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(flags), C.uintptr_t(uintptr(to)), C.uintptr_t(uintptr(addrlen)))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, er := C.nrecvmsg(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(msg))), C.int(flags))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, er := C.nsendmsg(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(msg))), C.int(flags))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\tr0, er := C.munmap(C.uintptr_t(addr), C.uintptr_t(length))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, advice int) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(b)\n\tr0, er := C.madvise(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(advice))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(b)\n\tr0, er := C.mprotect(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(prot))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(b)\n\tr0, er := C.mlock(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\tr0, er := C.mlockall(C.int(flags))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(b)\n\tr0, er := C.msync(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(flags))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(b)\n\tr0, er := C.munlock(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\tr0, er := C.munlockall()\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe(p *[2]_C_int) (err error) {\n\tr0, er := C.pipe(C.uintptr_t(uintptr(unsafe.Pointer(p))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, er := C.poll(C.uintptr_t(uintptr(unsafe.Pointer(fds))), C.int(nfds), C.int(timeout))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc gettimeofday(tv *Timeval, tzp *Timezone) (err error) {\n\tr0, er := C.gettimeofday(C.uintptr_t(uintptr(unsafe.Pointer(tv))), C.uintptr_t(uintptr(unsafe.Pointer(tzp))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tr0, er := C.time(C.uintptr_t(uintptr(unsafe.Pointer(t))))\n\ttt = Time_t(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.utime(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(buf))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsystemcfg(label int) (n uint64) {\n\tr0, _ := C.getsystemcfg(C.int(label))\n\tn = uint64(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc umount(target string) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(target)))\n\tr0, er := C.umount(C.uintptr_t(_p0))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\tr0, er := C.getrlimit64(C.int(resource), C.uintptr_t(uintptr(unsafe.Pointer(rlim))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, er := C.lseek64(C.int(fd), C.longlong(offset), C.int(whence))\n\toff = int64(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, er := C.mmap(C.uintptr_t(addr), C.uintptr_t(length), C.int(prot), C.int(flags), C.int(fd), C.longlong(offset))\n\txaddr = uintptr(r0)\n\tif uintptr(r0) == ^uintptr(0) && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go",
    "content": "// go run mksyscall_aix_ppc64.go -aix -tags aix,ppc64 syscall_aix.go syscall_aix_ppc64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build aix && ppc64\n\npackage unix\n\nimport (\n\t\"unsafe\"\n)\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callutimes(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flag int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callutimensat(dirfd, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), flag)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getcwd(buf []byte) (err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\t_, e1 := callgetcwd(uintptr(unsafe.Pointer(_p0)), len(buf))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, e1 := callaccept(s, uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getdirent(fd int, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tr0, e1 := callgetdirent(fd, uintptr(unsafe.Pointer(_p0)), len(buf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid Pid_t, status *_C_int, options int, rusage *Rusage) (wpid Pid_t, err error) {\n\tr0, e1 := callwait4(int(pid), uintptr(unsafe.Pointer(status)), options, uintptr(unsafe.Pointer(rusage)))\n\twpid = Pid_t(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req int, arg uintptr) (err error) {\n\t_, e1 := callioctl(fd, req, arg)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req int, arg unsafe.Pointer) (err error) {\n\t_, e1 := callioctl_ptr(fd, req, arg)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc FcntlInt(fd uintptr, cmd int, arg int) (r int, err error) {\n\tr0, e1 := callfcntl(fd, cmd, uintptr(arg))\n\tr = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc FcntlFlock(fd uintptr, cmd int, lk *Flock_t) (err error) {\n\t_, e1 := callfcntl(fd, cmd, uintptr(unsafe.Pointer(lk)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (val int, err error) {\n\tr0, e1 := callfcntl(uintptr(fd), cmd, uintptr(arg))\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fsyncRange(fd int, how int, start int64, length int64) (err error) {\n\t_, e1 := callfsync_range(fd, how, start, length)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Acct(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callacct(uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callchdir(uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callchroot(uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, e1 := callclose(fd)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(oldfd int) (fd int, err error) {\n\tr0, e1 := calldup(oldfd)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tcallexit(code)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callfaccessat(dirfd, uintptr(unsafe.Pointer(_p0)), mode, flags)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, e1 := callfchdir(fd)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, e1 := callfchmod(fd, mode)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callfchmodat(dirfd, uintptr(unsafe.Pointer(_p0)), mode, flags)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callfchownat(dirfd, uintptr(unsafe.Pointer(_p0)), uid, gid, flags)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fdatasync(fd int) (err error) {\n\t_, e1 := callfdatasync(fd)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, e1 := callgetpgid(pid)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pid int) {\n\tr0, _ := callgetpgrp()\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _ := callgetpid()\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _ := callgetppid()\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, e1 := callgetpriority(which, who)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, e1 := callgetrusage(who, uintptr(unsafe.Pointer(rusage)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, e1 := callgetsid(pid)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, sig Signal) (err error) {\n\t_, e1 := callkill(pid, int(sig))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Klogctl(typ int, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tr0, e1 := callsyslog(typ, uintptr(unsafe.Pointer(_p0)), len(buf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callmkdir(dirfd, uintptr(unsafe.Pointer(_p0)), mode)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callmkdirat(dirfd, uintptr(unsafe.Pointer(_p0)), mode)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callmkfifo(uintptr(unsafe.Pointer(_p0)), mode)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callmknod(uintptr(unsafe.Pointer(_p0)), mode, dev)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callmknodat(dirfd, uintptr(unsafe.Pointer(_p0)), mode, dev)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, e1 := callnanosleep(uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, e1 := callopen64(uintptr(unsafe.Pointer(_p0)), mode, perm)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, e1 := callopenat(dirfd, uintptr(unsafe.Pointer(_p0)), flags, mode)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tr0, e1 := callread(fd, uintptr(unsafe.Pointer(_p0)), len(p))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\tif len(buf) > 0 {\n\t\t_p1 = &buf[0]\n\t}\n\tr0, e1 := callreadlink(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), len(buf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callrenameat(olddirfd, uintptr(unsafe.Pointer(_p0)), newdirfd, uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setdomainname(p []byte) (err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\t_, e1 := callsetdomainname(uintptr(unsafe.Pointer(_p0)), len(p))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sethostname(p []byte) (err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\t_, e1 := callsethostname(uintptr(unsafe.Pointer(_p0)), len(p))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, e1 := callsetpgid(pid, pgid)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, e1 := callsetsid()\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tv *Timeval) (err error) {\n\t_, e1 := callsettimeofday(uintptr(unsafe.Pointer(tv)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, e1 := callsetuid(uid)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(uid int) (err error) {\n\t_, e1 := callsetgid(uid)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, e1 := callsetpriority(which, who, prio)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callstatx(dirfd, uintptr(unsafe.Pointer(_p0)), flags, mask, uintptr(unsafe.Pointer(stat)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() {\n\tcallsync()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Times(tms *Tms) (ticks uintptr, err error) {\n\tr0, e1 := calltimes(uintptr(unsafe.Pointer(tms)))\n\tticks = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(mask int) (oldmask int) {\n\tr0, _ := callumask(mask)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Uname(buf *Utsname) (err error) {\n\t_, e1 := calluname(uintptr(unsafe.Pointer(buf)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callunlink(uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callunlinkat(dirfd, uintptr(unsafe.Pointer(_p0)), flags)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, e1 := callustat(dev, uintptr(unsafe.Pointer(ubuf)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tr0, e1 := callwrite(fd, uintptr(unsafe.Pointer(_p0)), len(p))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(oldfd int, newfd int) (err error) {\n\t_, e1 := calldup2(oldfd, newfd)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, e1 := callposix_fadvise64(fd, offset, length, advice)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, e1 := callfchown(fd, uid, gid)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstat(fd int, stat *Stat_t) (err error) {\n\t_, e1 := callfstat(fd, uintptr(unsafe.Pointer(stat)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callfstatat(dirfd, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), flags)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, e1 := callfstatfs(fd, uintptr(unsafe.Pointer(buf)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, e1 := callftruncate(fd, length)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := callgetegid()\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := callgeteuid()\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := callgetgid()\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := callgetuid()\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := calllchown(uintptr(unsafe.Pointer(_p0)), uid, gid)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, e1 := calllisten(s, n)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := calllstat(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, e1 := callpause()\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tr0, e1 := callpread64(fd, uintptr(unsafe.Pointer(_p0)), len(p), offset)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tr0, e1 := callpwrite64(fd, uintptr(unsafe.Pointer(_p0)), len(p), offset)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, e1 := callselect(nfd, uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, e1 := callpselect(nfd, uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, e1 := callsetregid(rgid, egid)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, e1 := callsetreuid(ruid, euid)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, e1 := callshutdown(fd, how)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, e1 := callsplice(rfd, uintptr(unsafe.Pointer(roff)), wfd, uintptr(unsafe.Pointer(woff)), len, flags)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc stat(path string, statptr *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callstat(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(statptr)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callstatfs(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := calltruncate(uintptr(unsafe.Pointer(_p0)), length)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, e1 := callbind(s, uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, e1 := callconnect(s, uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, e1 := callgetgroups(n, uintptr(unsafe.Pointer(list)))\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, e1 := callsetgroups(n, uintptr(unsafe.Pointer(list)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, e1 := callgetsockopt(s, level, name, uintptr(val), uintptr(unsafe.Pointer(vallen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, e1 := callsetsockopt(s, level, name, uintptr(val), vallen)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, e1 := callsocket(domain, typ, proto)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, e1 := callsocketpair(domain, typ, proto, uintptr(unsafe.Pointer(fd)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, e1 := callgetpeername(fd, uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, e1 := callgetsockname(fd, uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tr0, e1 := callrecvfrom(fd, uintptr(unsafe.Pointer(_p0)), len(p), flags, uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\t_, e1 := callsendto(s, uintptr(unsafe.Pointer(_p0)), len(buf), flags, uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, e1 := callnrecvmsg(s, uintptr(unsafe.Pointer(msg)), flags)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, e1 := callnsendmsg(s, uintptr(unsafe.Pointer(msg)), flags)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, e1 := callmunmap(addr, length)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, advice int) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\t_, e1 := callmadvise(uintptr(unsafe.Pointer(_p0)), len(b), advice)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\t_, e1 := callmprotect(uintptr(unsafe.Pointer(_p0)), len(b), prot)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\t_, e1 := callmlock(uintptr(unsafe.Pointer(_p0)), len(b))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, e1 := callmlockall(flags)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\t_, e1 := callmsync(uintptr(unsafe.Pointer(_p0)), len(b), flags)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\t_, e1 := callmunlock(uintptr(unsafe.Pointer(_p0)), len(b))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, e1 := callmunlockall()\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe(p *[2]_C_int) (err error) {\n\t_, e1 := callpipe(uintptr(unsafe.Pointer(p)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, e1 := callpoll(uintptr(unsafe.Pointer(fds)), nfds, timeout)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc gettimeofday(tv *Timeval, tzp *Timezone) (err error) {\n\t_, e1 := callgettimeofday(uintptr(unsafe.Pointer(tv)), uintptr(unsafe.Pointer(tzp)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tr0, e1 := calltime(uintptr(unsafe.Pointer(t)))\n\ttt = Time_t(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callutime(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsystemcfg(label int) (n uint64) {\n\tr0, _ := callgetsystemcfg(label)\n\tn = uint64(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc umount(target string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(target)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callumount(uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, e1 := callgetrlimit(resource, uintptr(unsafe.Pointer(rlim)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, e1 := calllseek(fd, offset, whence)\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, e1 := callmmap64(addr, length, prot, flags, fd, offset)\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go",
    "content": "// go run mksyscall_aix_ppc64.go -aix -tags aix,ppc64 syscall_aix.go syscall_aix_ppc64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build aix && ppc64 && gc\n\npackage unix\n\nimport (\n\t\"unsafe\"\n)\n\n//go:cgo_import_dynamic libc_utimes utimes \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_utimensat utimensat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getcwd getcwd \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_accept accept \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getdirent getdirent \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_wait4 wait4 \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_ioctl ioctl \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fcntl fcntl \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fsync_range fsync_range \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_acct acct \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_chdir chdir \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_chroot chroot \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_close close \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_dup dup \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_exit exit \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_faccessat faccessat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fchdir fchdir \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fchmod fchmod \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fchmodat fchmodat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fchownat fchownat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fdatasync fdatasync \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getpgid getpgid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getpgrp getpgrp \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getpid getpid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getppid getppid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getpriority getpriority \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getrusage getrusage \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getsid getsid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_kill kill \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_syslog syslog \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_mkdir mkdir \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_mkdirat mkdirat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_mkfifo mkfifo \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_mknod mknod \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_mknodat mknodat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_nanosleep nanosleep \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_open64 open64 \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_openat openat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_read read \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_readlink readlink \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_renameat renameat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_setdomainname setdomainname \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_sethostname sethostname \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_setpgid setpgid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_setsid setsid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_settimeofday settimeofday \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_setuid setuid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_setgid setgid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_setpriority setpriority \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_statx statx \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_sync sync \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_times times \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_umask umask \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_uname uname \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_unlink unlink \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_unlinkat unlinkat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_ustat ustat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_write write \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_dup2 dup2 \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_posix_fadvise64 posix_fadvise64 \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fchown fchown \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fstat fstat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fstatat fstatat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fstatfs fstatfs \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_ftruncate ftruncate \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getegid getegid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_geteuid geteuid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getgid getgid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getuid getuid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_lchown lchown \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_listen listen \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_lstat lstat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_pause pause \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_pread64 pread64 \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_pwrite64 pwrite64 \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_select select \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_pselect pselect \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_setregid setregid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_setreuid setreuid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_shutdown shutdown \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_splice splice \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_stat stat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_statfs statfs \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_truncate truncate \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_bind bind \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_connect connect \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getgroups getgroups \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_setgroups setgroups \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getsockopt getsockopt \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_setsockopt setsockopt \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_socket socket \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_socketpair socketpair \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getpeername getpeername \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getsockname getsockname \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_recvfrom recvfrom \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_sendto sendto \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_nrecvmsg nrecvmsg \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_nsendmsg nsendmsg \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_munmap munmap \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_madvise madvise \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_mprotect mprotect \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_mlock mlock \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_mlockall mlockall \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_msync msync \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_munlock munlock \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_munlockall munlockall \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_pipe pipe \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_poll poll \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_gettimeofday gettimeofday \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_time time \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_utime utime \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getsystemcfg getsystemcfg \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_umount umount \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getrlimit getrlimit \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_lseek lseek \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_mmap64 mmap64 \"libc.a/shr_64.o\"\n\n//go:linkname libc_utimes libc_utimes\n//go:linkname libc_utimensat libc_utimensat\n//go:linkname libc_getcwd libc_getcwd\n//go:linkname libc_accept libc_accept\n//go:linkname libc_getdirent libc_getdirent\n//go:linkname libc_wait4 libc_wait4\n//go:linkname libc_ioctl libc_ioctl\n//go:linkname libc_fcntl libc_fcntl\n//go:linkname libc_fsync_range libc_fsync_range\n//go:linkname libc_acct libc_acct\n//go:linkname libc_chdir libc_chdir\n//go:linkname libc_chroot libc_chroot\n//go:linkname libc_close libc_close\n//go:linkname libc_dup libc_dup\n//go:linkname libc_exit libc_exit\n//go:linkname libc_faccessat libc_faccessat\n//go:linkname libc_fchdir libc_fchdir\n//go:linkname libc_fchmod libc_fchmod\n//go:linkname libc_fchmodat libc_fchmodat\n//go:linkname libc_fchownat libc_fchownat\n//go:linkname libc_fdatasync libc_fdatasync\n//go:linkname libc_getpgid libc_getpgid\n//go:linkname libc_getpgrp libc_getpgrp\n//go:linkname libc_getpid libc_getpid\n//go:linkname libc_getppid libc_getppid\n//go:linkname libc_getpriority libc_getpriority\n//go:linkname libc_getrusage libc_getrusage\n//go:linkname libc_getsid libc_getsid\n//go:linkname libc_kill libc_kill\n//go:linkname libc_syslog libc_syslog\n//go:linkname libc_mkdir libc_mkdir\n//go:linkname libc_mkdirat libc_mkdirat\n//go:linkname libc_mkfifo libc_mkfifo\n//go:linkname libc_mknod libc_mknod\n//go:linkname libc_mknodat libc_mknodat\n//go:linkname libc_nanosleep libc_nanosleep\n//go:linkname libc_open64 libc_open64\n//go:linkname libc_openat libc_openat\n//go:linkname libc_read libc_read\n//go:linkname libc_readlink libc_readlink\n//go:linkname libc_renameat libc_renameat\n//go:linkname libc_setdomainname libc_setdomainname\n//go:linkname libc_sethostname libc_sethostname\n//go:linkname libc_setpgid libc_setpgid\n//go:linkname libc_setsid libc_setsid\n//go:linkname libc_settimeofday libc_settimeofday\n//go:linkname libc_setuid libc_setuid\n//go:linkname libc_setgid libc_setgid\n//go:linkname libc_setpriority libc_setpriority\n//go:linkname libc_statx libc_statx\n//go:linkname libc_sync libc_sync\n//go:linkname libc_times libc_times\n//go:linkname libc_umask libc_umask\n//go:linkname libc_uname libc_uname\n//go:linkname libc_unlink libc_unlink\n//go:linkname libc_unlinkat libc_unlinkat\n//go:linkname libc_ustat libc_ustat\n//go:linkname libc_write libc_write\n//go:linkname libc_dup2 libc_dup2\n//go:linkname libc_posix_fadvise64 libc_posix_fadvise64\n//go:linkname libc_fchown libc_fchown\n//go:linkname libc_fstat libc_fstat\n//go:linkname libc_fstatat libc_fstatat\n//go:linkname libc_fstatfs libc_fstatfs\n//go:linkname libc_ftruncate libc_ftruncate\n//go:linkname libc_getegid libc_getegid\n//go:linkname libc_geteuid libc_geteuid\n//go:linkname libc_getgid libc_getgid\n//go:linkname libc_getuid libc_getuid\n//go:linkname libc_lchown libc_lchown\n//go:linkname libc_listen libc_listen\n//go:linkname libc_lstat libc_lstat\n//go:linkname libc_pause libc_pause\n//go:linkname libc_pread64 libc_pread64\n//go:linkname libc_pwrite64 libc_pwrite64\n//go:linkname libc_select libc_select\n//go:linkname libc_pselect libc_pselect\n//go:linkname libc_setregid libc_setregid\n//go:linkname libc_setreuid libc_setreuid\n//go:linkname libc_shutdown libc_shutdown\n//go:linkname libc_splice libc_splice\n//go:linkname libc_stat libc_stat\n//go:linkname libc_statfs libc_statfs\n//go:linkname libc_truncate libc_truncate\n//go:linkname libc_bind libc_bind\n//go:linkname libc_connect libc_connect\n//go:linkname libc_getgroups libc_getgroups\n//go:linkname libc_setgroups libc_setgroups\n//go:linkname libc_getsockopt libc_getsockopt\n//go:linkname libc_setsockopt libc_setsockopt\n//go:linkname libc_socket libc_socket\n//go:linkname libc_socketpair libc_socketpair\n//go:linkname libc_getpeername libc_getpeername\n//go:linkname libc_getsockname libc_getsockname\n//go:linkname libc_recvfrom libc_recvfrom\n//go:linkname libc_sendto libc_sendto\n//go:linkname libc_nrecvmsg libc_nrecvmsg\n//go:linkname libc_nsendmsg libc_nsendmsg\n//go:linkname libc_munmap libc_munmap\n//go:linkname libc_madvise libc_madvise\n//go:linkname libc_mprotect libc_mprotect\n//go:linkname libc_mlock libc_mlock\n//go:linkname libc_mlockall libc_mlockall\n//go:linkname libc_msync libc_msync\n//go:linkname libc_munlock libc_munlock\n//go:linkname libc_munlockall libc_munlockall\n//go:linkname libc_pipe libc_pipe\n//go:linkname libc_poll libc_poll\n//go:linkname libc_gettimeofday libc_gettimeofday\n//go:linkname libc_time libc_time\n//go:linkname libc_utime libc_utime\n//go:linkname libc_getsystemcfg libc_getsystemcfg\n//go:linkname libc_umount libc_umount\n//go:linkname libc_getrlimit libc_getrlimit\n//go:linkname libc_lseek libc_lseek\n//go:linkname libc_mmap64 libc_mmap64\n\ntype syscallFunc uintptr\n\nvar (\n\tlibc_utimes,\n\tlibc_utimensat,\n\tlibc_getcwd,\n\tlibc_accept,\n\tlibc_getdirent,\n\tlibc_wait4,\n\tlibc_ioctl,\n\tlibc_fcntl,\n\tlibc_fsync_range,\n\tlibc_acct,\n\tlibc_chdir,\n\tlibc_chroot,\n\tlibc_close,\n\tlibc_dup,\n\tlibc_exit,\n\tlibc_faccessat,\n\tlibc_fchdir,\n\tlibc_fchmod,\n\tlibc_fchmodat,\n\tlibc_fchownat,\n\tlibc_fdatasync,\n\tlibc_getpgid,\n\tlibc_getpgrp,\n\tlibc_getpid,\n\tlibc_getppid,\n\tlibc_getpriority,\n\tlibc_getrusage,\n\tlibc_getsid,\n\tlibc_kill,\n\tlibc_syslog,\n\tlibc_mkdir,\n\tlibc_mkdirat,\n\tlibc_mkfifo,\n\tlibc_mknod,\n\tlibc_mknodat,\n\tlibc_nanosleep,\n\tlibc_open64,\n\tlibc_openat,\n\tlibc_read,\n\tlibc_readlink,\n\tlibc_renameat,\n\tlibc_setdomainname,\n\tlibc_sethostname,\n\tlibc_setpgid,\n\tlibc_setsid,\n\tlibc_settimeofday,\n\tlibc_setuid,\n\tlibc_setgid,\n\tlibc_setpriority,\n\tlibc_statx,\n\tlibc_sync,\n\tlibc_times,\n\tlibc_umask,\n\tlibc_uname,\n\tlibc_unlink,\n\tlibc_unlinkat,\n\tlibc_ustat,\n\tlibc_write,\n\tlibc_dup2,\n\tlibc_posix_fadvise64,\n\tlibc_fchown,\n\tlibc_fstat,\n\tlibc_fstatat,\n\tlibc_fstatfs,\n\tlibc_ftruncate,\n\tlibc_getegid,\n\tlibc_geteuid,\n\tlibc_getgid,\n\tlibc_getuid,\n\tlibc_lchown,\n\tlibc_listen,\n\tlibc_lstat,\n\tlibc_pause,\n\tlibc_pread64,\n\tlibc_pwrite64,\n\tlibc_select,\n\tlibc_pselect,\n\tlibc_setregid,\n\tlibc_setreuid,\n\tlibc_shutdown,\n\tlibc_splice,\n\tlibc_stat,\n\tlibc_statfs,\n\tlibc_truncate,\n\tlibc_bind,\n\tlibc_connect,\n\tlibc_getgroups,\n\tlibc_setgroups,\n\tlibc_getsockopt,\n\tlibc_setsockopt,\n\tlibc_socket,\n\tlibc_socketpair,\n\tlibc_getpeername,\n\tlibc_getsockname,\n\tlibc_recvfrom,\n\tlibc_sendto,\n\tlibc_nrecvmsg,\n\tlibc_nsendmsg,\n\tlibc_munmap,\n\tlibc_madvise,\n\tlibc_mprotect,\n\tlibc_mlock,\n\tlibc_mlockall,\n\tlibc_msync,\n\tlibc_munlock,\n\tlibc_munlockall,\n\tlibc_pipe,\n\tlibc_poll,\n\tlibc_gettimeofday,\n\tlibc_time,\n\tlibc_utime,\n\tlibc_getsystemcfg,\n\tlibc_umount,\n\tlibc_getrlimit,\n\tlibc_lseek,\n\tlibc_mmap64 syscallFunc\n)\n\n// Implemented in runtime/syscall_aix.go.\nfunc rawSyscall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)\nfunc syscall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callutimes(_p0 uintptr, times uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_utimes)), 2, _p0, times, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callutimensat(dirfd int, _p0 uintptr, times uintptr, flag int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_utimensat)), 4, uintptr(dirfd), _p0, times, uintptr(flag), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetcwd(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getcwd)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callaccept(s int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_accept)), 3, uintptr(s), rsa, addrlen, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetdirent(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getdirent)), 3, uintptr(fd), _p0, uintptr(_lenp0), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callwait4(pid int, status uintptr, options int, rusage uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_wait4)), 4, uintptr(pid), status, uintptr(options), rusage, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callioctl(fd int, req int, arg uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_ioctl)), 3, uintptr(fd), uintptr(req), arg, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callioctl_ptr(fd int, req int, arg unsafe.Pointer) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_ioctl)), 3, uintptr(fd), uintptr(req), uintptr(arg), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfcntl(fd uintptr, cmd int, arg uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fcntl)), 3, fd, uintptr(cmd), arg, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfsync_range(fd int, how int, start int64, length int64) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fsync_range)), 4, uintptr(fd), uintptr(how), uintptr(start), uintptr(length), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callacct(_p0 uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_acct)), 1, _p0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callchdir(_p0 uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_chdir)), 1, _p0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callchroot(_p0 uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_chroot)), 1, _p0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callclose(fd int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_close)), 1, uintptr(fd), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calldup(oldfd int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_dup)), 1, uintptr(oldfd), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callexit(code int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_exit)), 1, uintptr(code), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfaccessat(dirfd int, _p0 uintptr, mode uint32, flags int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_faccessat)), 4, uintptr(dirfd), _p0, uintptr(mode), uintptr(flags), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfchdir(fd int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchdir)), 1, uintptr(fd), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfchmod(fd int, mode uint32) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchmod)), 2, uintptr(fd), uintptr(mode), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfchmodat(dirfd int, _p0 uintptr, mode uint32, flags int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchmodat)), 4, uintptr(dirfd), _p0, uintptr(mode), uintptr(flags), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfchownat(dirfd int, _p0 uintptr, uid int, gid int, flags int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchownat)), 5, uintptr(dirfd), _p0, uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfdatasync(fd int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fdatasync)), 1, uintptr(fd), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetpgid(pid int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getpgid)), 1, uintptr(pid), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetpgrp() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getpgrp)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetpid() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getpid)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetppid() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getppid)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetpriority(which int, who int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getpriority)), 2, uintptr(which), uintptr(who), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetrusage(who int, rusage uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getrusage)), 2, uintptr(who), rusage, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetsid(pid int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getsid)), 1, uintptr(pid), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callkill(pid int, sig int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_kill)), 2, uintptr(pid), uintptr(sig), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsyslog(typ int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_syslog)), 3, uintptr(typ), _p0, uintptr(_lenp0), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmkdir(dirfd int, _p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mkdir)), 3, uintptr(dirfd), _p0, uintptr(mode), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmkdirat(dirfd int, _p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mkdirat)), 3, uintptr(dirfd), _p0, uintptr(mode), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmkfifo(_p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mkfifo)), 2, _p0, uintptr(mode), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmknod(_p0 uintptr, mode uint32, dev int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mknod)), 3, _p0, uintptr(mode), uintptr(dev), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmknodat(dirfd int, _p0 uintptr, mode uint32, dev int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mknodat)), 4, uintptr(dirfd), _p0, uintptr(mode), uintptr(dev), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callnanosleep(time uintptr, leftover uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_nanosleep)), 2, time, leftover, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callopen64(_p0 uintptr, mode int, perm uint32) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_open64)), 3, _p0, uintptr(mode), uintptr(perm), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callopenat(dirfd int, _p0 uintptr, flags int, mode uint32) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_openat)), 4, uintptr(dirfd), _p0, uintptr(flags), uintptr(mode), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callread(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_read)), 3, uintptr(fd), _p0, uintptr(_lenp0), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callreadlink(_p0 uintptr, _p1 uintptr, _lenp1 int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_readlink)), 3, _p0, _p1, uintptr(_lenp1), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callrenameat(olddirfd int, _p0 uintptr, newdirfd int, _p1 uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_renameat)), 4, uintptr(olddirfd), _p0, uintptr(newdirfd), _p1, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetdomainname(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setdomainname)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsethostname(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_sethostname)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetpgid(pid int, pgid int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setpgid)), 2, uintptr(pid), uintptr(pgid), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetsid() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setsid)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsettimeofday(tv uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_settimeofday)), 1, tv, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetuid(uid int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setuid)), 1, uintptr(uid), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetgid(uid int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setgid)), 1, uintptr(uid), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetpriority(which int, who int, prio int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setpriority)), 3, uintptr(which), uintptr(who), uintptr(prio), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callstatx(dirfd int, _p0 uintptr, flags int, mask int, stat uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_statx)), 5, uintptr(dirfd), _p0, uintptr(flags), uintptr(mask), stat, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsync() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_sync)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calltimes(tms uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_times)), 1, tms, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callumask(mask int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_umask)), 1, uintptr(mask), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calluname(buf uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_uname)), 1, buf, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callunlink(_p0 uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_unlink)), 1, _p0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callunlinkat(dirfd int, _p0 uintptr, flags int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_unlinkat)), 3, uintptr(dirfd), _p0, uintptr(flags), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callustat(dev int, ubuf uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_ustat)), 2, uintptr(dev), ubuf, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callwrite(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_write)), 3, uintptr(fd), _p0, uintptr(_lenp0), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calldup2(oldfd int, newfd int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_dup2)), 2, uintptr(oldfd), uintptr(newfd), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callposix_fadvise64(fd int, offset int64, length int64, advice int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_posix_fadvise64)), 4, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfchown(fd int, uid int, gid int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchown)), 3, uintptr(fd), uintptr(uid), uintptr(gid), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfstat(fd int, stat uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fstat)), 2, uintptr(fd), stat, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfstatat(dirfd int, _p0 uintptr, stat uintptr, flags int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fstatat)), 4, uintptr(dirfd), _p0, stat, uintptr(flags), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfstatfs(fd int, buf uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fstatfs)), 2, uintptr(fd), buf, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callftruncate(fd int, length int64) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_ftruncate)), 2, uintptr(fd), uintptr(length), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetegid() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getegid)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgeteuid() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_geteuid)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetgid() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getgid)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetuid() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getuid)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calllchown(_p0 uintptr, uid int, gid int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_lchown)), 3, _p0, uintptr(uid), uintptr(gid), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calllisten(s int, n int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_listen)), 2, uintptr(s), uintptr(n), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calllstat(_p0 uintptr, stat uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_lstat)), 2, _p0, stat, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpause() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_pause)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpread64(fd int, _p0 uintptr, _lenp0 int, offset int64) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_pread64)), 4, uintptr(fd), _p0, uintptr(_lenp0), uintptr(offset), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpwrite64(fd int, _p0 uintptr, _lenp0 int, offset int64) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_pwrite64)), 4, uintptr(fd), _p0, uintptr(_lenp0), uintptr(offset), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callselect(nfd int, r uintptr, w uintptr, e uintptr, timeout uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_select)), 5, uintptr(nfd), r, w, e, timeout, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpselect(nfd int, r uintptr, w uintptr, e uintptr, timeout uintptr, sigmask uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_pselect)), 6, uintptr(nfd), r, w, e, timeout, sigmask)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetregid(rgid int, egid int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setregid)), 2, uintptr(rgid), uintptr(egid), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetreuid(ruid int, euid int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setreuid)), 2, uintptr(ruid), uintptr(euid), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callshutdown(fd int, how int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_shutdown)), 2, uintptr(fd), uintptr(how), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsplice(rfd int, roff uintptr, wfd int, woff uintptr, len int, flags int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_splice)), 6, uintptr(rfd), roff, uintptr(wfd), woff, uintptr(len), uintptr(flags))\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callstat(_p0 uintptr, statptr uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_stat)), 2, _p0, statptr, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callstatfs(_p0 uintptr, buf uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_statfs)), 2, _p0, buf, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calltruncate(_p0 uintptr, length int64) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_truncate)), 2, _p0, uintptr(length), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callbind(s int, addr uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_bind)), 3, uintptr(s), addr, addrlen, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callconnect(s int, addr uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_connect)), 3, uintptr(s), addr, addrlen, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetgroups(n int, list uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getgroups)), 2, uintptr(n), list, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetgroups(n int, list uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setgroups)), 2, uintptr(n), list, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetsockopt(s int, level int, name int, val uintptr, vallen uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getsockopt)), 5, uintptr(s), uintptr(level), uintptr(name), val, vallen, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetsockopt(s int, level int, name int, val uintptr, vallen uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setsockopt)), 5, uintptr(s), uintptr(level), uintptr(name), val, vallen, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsocket(domain int, typ int, proto int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_socket)), 3, uintptr(domain), uintptr(typ), uintptr(proto), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsocketpair(domain int, typ int, proto int, fd uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_socketpair)), 4, uintptr(domain), uintptr(typ), uintptr(proto), fd, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetpeername(fd int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getpeername)), 3, uintptr(fd), rsa, addrlen, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetsockname(fd int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getsockname)), 3, uintptr(fd), rsa, addrlen, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callrecvfrom(fd int, _p0 uintptr, _lenp0 int, flags int, from uintptr, fromlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_recvfrom)), 6, uintptr(fd), _p0, uintptr(_lenp0), uintptr(flags), from, fromlen)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsendto(s int, _p0 uintptr, _lenp0 int, flags int, to uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_sendto)), 6, uintptr(s), _p0, uintptr(_lenp0), uintptr(flags), to, addrlen)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callnrecvmsg(s int, msg uintptr, flags int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_nrecvmsg)), 3, uintptr(s), msg, uintptr(flags), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callnsendmsg(s int, msg uintptr, flags int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_nsendmsg)), 3, uintptr(s), msg, uintptr(flags), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmunmap(addr uintptr, length uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_munmap)), 2, addr, length, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmadvise(_p0 uintptr, _lenp0 int, advice int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_madvise)), 3, _p0, uintptr(_lenp0), uintptr(advice), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmprotect(_p0 uintptr, _lenp0 int, prot int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mprotect)), 3, _p0, uintptr(_lenp0), uintptr(prot), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmlock(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mlock)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmlockall(flags int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mlockall)), 1, uintptr(flags), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmsync(_p0 uintptr, _lenp0 int, flags int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_msync)), 3, _p0, uintptr(_lenp0), uintptr(flags), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmunlock(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_munlock)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmunlockall() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_munlockall)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpipe(p uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_pipe)), 1, p, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpoll(fds uintptr, nfds int, timeout int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_poll)), 3, fds, uintptr(nfds), uintptr(timeout), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgettimeofday(tv uintptr, tzp uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_gettimeofday)), 2, tv, tzp, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calltime(t uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_time)), 1, t, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callutime(_p0 uintptr, buf uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_utime)), 2, _p0, buf, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetsystemcfg(label int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getsystemcfg)), 1, uintptr(label), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callumount(_p0 uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_umount)), 1, _p0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetrlimit(resource int, rlim uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getrlimit)), 2, uintptr(resource), rlim, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calllseek(fd int, offset int64, whence int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_lseek)), 3, uintptr(fd), uintptr(offset), uintptr(whence), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmmap64(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mmap64)), 6, addr, length, uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go",
    "content": "// go run mksyscall_aix_ppc64.go -aix -tags aix,ppc64 syscall_aix.go syscall_aix_ppc64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build aix && ppc64 && gccgo\n\npackage unix\n\n/*\n#include <stdint.h>\nint utimes(uintptr_t, uintptr_t);\nint utimensat(int, uintptr_t, uintptr_t, int);\nint getcwd(uintptr_t, size_t);\nint accept(int, uintptr_t, uintptr_t);\nint getdirent(int, uintptr_t, size_t);\nint wait4(int, uintptr_t, int, uintptr_t);\nint ioctl(int, int, uintptr_t);\nint fcntl(uintptr_t, int, uintptr_t);\nint fsync_range(int, int, long long, long long);\nint acct(uintptr_t);\nint chdir(uintptr_t);\nint chroot(uintptr_t);\nint close(int);\nint dup(int);\nvoid exit(int);\nint faccessat(int, uintptr_t, unsigned int, int);\nint fchdir(int);\nint fchmod(int, unsigned int);\nint fchmodat(int, uintptr_t, unsigned int, int);\nint fchownat(int, uintptr_t, int, int, int);\nint fdatasync(int);\nint getpgid(int);\nint getpgrp();\nint getpid();\nint getppid();\nint getpriority(int, int);\nint getrusage(int, uintptr_t);\nint getsid(int);\nint kill(int, int);\nint syslog(int, uintptr_t, size_t);\nint mkdir(int, uintptr_t, unsigned int);\nint mkdirat(int, uintptr_t, unsigned int);\nint mkfifo(uintptr_t, unsigned int);\nint mknod(uintptr_t, unsigned int, int);\nint mknodat(int, uintptr_t, unsigned int, int);\nint nanosleep(uintptr_t, uintptr_t);\nint open64(uintptr_t, int, unsigned int);\nint openat(int, uintptr_t, int, unsigned int);\nint read(int, uintptr_t, size_t);\nint readlink(uintptr_t, uintptr_t, size_t);\nint renameat(int, uintptr_t, int, uintptr_t);\nint setdomainname(uintptr_t, size_t);\nint sethostname(uintptr_t, size_t);\nint setpgid(int, int);\nint setsid();\nint settimeofday(uintptr_t);\nint setuid(int);\nint setgid(int);\nint setpriority(int, int, int);\nint statx(int, uintptr_t, int, int, uintptr_t);\nint sync();\nuintptr_t times(uintptr_t);\nint umask(int);\nint uname(uintptr_t);\nint unlink(uintptr_t);\nint unlinkat(int, uintptr_t, int);\nint ustat(int, uintptr_t);\nint write(int, uintptr_t, size_t);\nint dup2(int, int);\nint posix_fadvise64(int, long long, long long, int);\nint fchown(int, int, int);\nint fstat(int, uintptr_t);\nint fstatat(int, uintptr_t, uintptr_t, int);\nint fstatfs(int, uintptr_t);\nint ftruncate(int, long long);\nint getegid();\nint geteuid();\nint getgid();\nint getuid();\nint lchown(uintptr_t, int, int);\nint listen(int, int);\nint lstat(uintptr_t, uintptr_t);\nint pause();\nint pread64(int, uintptr_t, size_t, long long);\nint pwrite64(int, uintptr_t, size_t, long long);\n#define c_select select\nint select(int, uintptr_t, uintptr_t, uintptr_t, uintptr_t);\nint pselect(int, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t);\nint setregid(int, int);\nint setreuid(int, int);\nint shutdown(int, int);\nlong long splice(int, uintptr_t, int, uintptr_t, int, int);\nint stat(uintptr_t, uintptr_t);\nint statfs(uintptr_t, uintptr_t);\nint truncate(uintptr_t, long long);\nint bind(int, uintptr_t, uintptr_t);\nint connect(int, uintptr_t, uintptr_t);\nint getgroups(int, uintptr_t);\nint setgroups(int, uintptr_t);\nint getsockopt(int, int, int, uintptr_t, uintptr_t);\nint setsockopt(int, int, int, uintptr_t, uintptr_t);\nint socket(int, int, int);\nint socketpair(int, int, int, uintptr_t);\nint getpeername(int, uintptr_t, uintptr_t);\nint getsockname(int, uintptr_t, uintptr_t);\nint recvfrom(int, uintptr_t, size_t, int, uintptr_t, uintptr_t);\nint sendto(int, uintptr_t, size_t, int, uintptr_t, uintptr_t);\nint nrecvmsg(int, uintptr_t, int);\nint nsendmsg(int, uintptr_t, int);\nint munmap(uintptr_t, uintptr_t);\nint madvise(uintptr_t, size_t, int);\nint mprotect(uintptr_t, size_t, int);\nint mlock(uintptr_t, size_t);\nint mlockall(int);\nint msync(uintptr_t, size_t, int);\nint munlock(uintptr_t, size_t);\nint munlockall();\nint pipe(uintptr_t);\nint poll(uintptr_t, int, int);\nint gettimeofday(uintptr_t, uintptr_t);\nint time(uintptr_t);\nint utime(uintptr_t, uintptr_t);\nunsigned long long getsystemcfg(int);\nint umount(uintptr_t);\nint getrlimit(int, uintptr_t);\nlong long lseek(int, long long, int);\nuintptr_t mmap64(uintptr_t, uintptr_t, int, int, int, long long);\n\n*/\nimport \"C\"\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callutimes(_p0 uintptr, times uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.utimes(C.uintptr_t(_p0), C.uintptr_t(times)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callutimensat(dirfd int, _p0 uintptr, times uintptr, flag int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.utimensat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(times), C.int(flag)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetcwd(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getcwd(C.uintptr_t(_p0), C.size_t(_lenp0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callaccept(s int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.accept(C.int(s), C.uintptr_t(rsa), C.uintptr_t(addrlen)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetdirent(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getdirent(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callwait4(pid int, status uintptr, options int, rusage uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.wait4(C.int(pid), C.uintptr_t(status), C.int(options), C.uintptr_t(rusage)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callioctl(fd int, req int, arg uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.ioctl(C.int(fd), C.int(req), C.uintptr_t(arg)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callioctl_ptr(fd int, req int, arg unsafe.Pointer) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.ioctl(C.int(fd), C.int(req), C.uintptr_t(uintptr(arg))))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfcntl(fd uintptr, cmd int, arg uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(arg)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfsync_range(fd int, how int, start int64, length int64) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fsync_range(C.int(fd), C.int(how), C.longlong(start), C.longlong(length)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callacct(_p0 uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.acct(C.uintptr_t(_p0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callchdir(_p0 uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.chdir(C.uintptr_t(_p0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callchroot(_p0 uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.chroot(C.uintptr_t(_p0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callclose(fd int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.close(C.int(fd)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calldup(oldfd int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.dup(C.int(oldfd)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callexit(code int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.exit(C.int(code)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfaccessat(dirfd int, _p0 uintptr, mode uint32, flags int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.faccessat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(flags)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfchdir(fd int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fchdir(C.int(fd)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfchmod(fd int, mode uint32) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fchmod(C.int(fd), C.uint(mode)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfchmodat(dirfd int, _p0 uintptr, mode uint32, flags int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fchmodat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(flags)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfchownat(dirfd int, _p0 uintptr, uid int, gid int, flags int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fchownat(C.int(dirfd), C.uintptr_t(_p0), C.int(uid), C.int(gid), C.int(flags)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfdatasync(fd int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fdatasync(C.int(fd)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetpgid(pid int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getpgid(C.int(pid)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetpgrp() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getpgrp())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetpid() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getpid())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetppid() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getppid())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetpriority(which int, who int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getpriority(C.int(which), C.int(who)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetrusage(who int, rusage uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getrusage(C.int(who), C.uintptr_t(rusage)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetsid(pid int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getsid(C.int(pid)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callkill(pid int, sig int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.kill(C.int(pid), C.int(sig)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsyslog(typ int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.syslog(C.int(typ), C.uintptr_t(_p0), C.size_t(_lenp0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmkdir(dirfd int, _p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.mkdir(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmkdirat(dirfd int, _p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.mkdirat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmkfifo(_p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.mkfifo(C.uintptr_t(_p0), C.uint(mode)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmknod(_p0 uintptr, mode uint32, dev int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.mknod(C.uintptr_t(_p0), C.uint(mode), C.int(dev)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmknodat(dirfd int, _p0 uintptr, mode uint32, dev int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.mknodat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(dev)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callnanosleep(time uintptr, leftover uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.nanosleep(C.uintptr_t(time), C.uintptr_t(leftover)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callopen64(_p0 uintptr, mode int, perm uint32) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.open64(C.uintptr_t(_p0), C.int(mode), C.uint(perm)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callopenat(dirfd int, _p0 uintptr, flags int, mode uint32) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.openat(C.int(dirfd), C.uintptr_t(_p0), C.int(flags), C.uint(mode)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callread(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.read(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callreadlink(_p0 uintptr, _p1 uintptr, _lenp1 int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.readlink(C.uintptr_t(_p0), C.uintptr_t(_p1), C.size_t(_lenp1)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callrenameat(olddirfd int, _p0 uintptr, newdirfd int, _p1 uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.renameat(C.int(olddirfd), C.uintptr_t(_p0), C.int(newdirfd), C.uintptr_t(_p1)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetdomainname(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setdomainname(C.uintptr_t(_p0), C.size_t(_lenp0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsethostname(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.sethostname(C.uintptr_t(_p0), C.size_t(_lenp0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetpgid(pid int, pgid int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setpgid(C.int(pid), C.int(pgid)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetsid() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setsid())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsettimeofday(tv uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.settimeofday(C.uintptr_t(tv)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetuid(uid int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setuid(C.int(uid)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetgid(uid int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setgid(C.int(uid)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetpriority(which int, who int, prio int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setpriority(C.int(which), C.int(who), C.int(prio)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callstatx(dirfd int, _p0 uintptr, flags int, mask int, stat uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.statx(C.int(dirfd), C.uintptr_t(_p0), C.int(flags), C.int(mask), C.uintptr_t(stat)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsync() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.sync())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calltimes(tms uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.times(C.uintptr_t(tms)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callumask(mask int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.umask(C.int(mask)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calluname(buf uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.uname(C.uintptr_t(buf)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callunlink(_p0 uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.unlink(C.uintptr_t(_p0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callunlinkat(dirfd int, _p0 uintptr, flags int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.unlinkat(C.int(dirfd), C.uintptr_t(_p0), C.int(flags)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callustat(dev int, ubuf uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.ustat(C.int(dev), C.uintptr_t(ubuf)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callwrite(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.write(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calldup2(oldfd int, newfd int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.dup2(C.int(oldfd), C.int(newfd)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callposix_fadvise64(fd int, offset int64, length int64, advice int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.posix_fadvise64(C.int(fd), C.longlong(offset), C.longlong(length), C.int(advice)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfchown(fd int, uid int, gid int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fchown(C.int(fd), C.int(uid), C.int(gid)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfstat(fd int, stat uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fstat(C.int(fd), C.uintptr_t(stat)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfstatat(dirfd int, _p0 uintptr, stat uintptr, flags int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fstatat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(stat), C.int(flags)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfstatfs(fd int, buf uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fstatfs(C.int(fd), C.uintptr_t(buf)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callftruncate(fd int, length int64) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.ftruncate(C.int(fd), C.longlong(length)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetegid() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getegid())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgeteuid() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.geteuid())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetgid() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getgid())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetuid() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getuid())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calllchown(_p0 uintptr, uid int, gid int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.lchown(C.uintptr_t(_p0), C.int(uid), C.int(gid)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calllisten(s int, n int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.listen(C.int(s), C.int(n)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calllstat(_p0 uintptr, stat uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.lstat(C.uintptr_t(_p0), C.uintptr_t(stat)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpause() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.pause())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpread64(fd int, _p0 uintptr, _lenp0 int, offset int64) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.pread64(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0), C.longlong(offset)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpwrite64(fd int, _p0 uintptr, _lenp0 int, offset int64) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.pwrite64(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0), C.longlong(offset)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callselect(nfd int, r uintptr, w uintptr, e uintptr, timeout uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.c_select(C.int(nfd), C.uintptr_t(r), C.uintptr_t(w), C.uintptr_t(e), C.uintptr_t(timeout)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpselect(nfd int, r uintptr, w uintptr, e uintptr, timeout uintptr, sigmask uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.pselect(C.int(nfd), C.uintptr_t(r), C.uintptr_t(w), C.uintptr_t(e), C.uintptr_t(timeout), C.uintptr_t(sigmask)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetregid(rgid int, egid int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setregid(C.int(rgid), C.int(egid)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetreuid(ruid int, euid int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setreuid(C.int(ruid), C.int(euid)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callshutdown(fd int, how int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.shutdown(C.int(fd), C.int(how)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsplice(rfd int, roff uintptr, wfd int, woff uintptr, len int, flags int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.splice(C.int(rfd), C.uintptr_t(roff), C.int(wfd), C.uintptr_t(woff), C.int(len), C.int(flags)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callstat(_p0 uintptr, statptr uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.stat(C.uintptr_t(_p0), C.uintptr_t(statptr)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callstatfs(_p0 uintptr, buf uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.statfs(C.uintptr_t(_p0), C.uintptr_t(buf)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calltruncate(_p0 uintptr, length int64) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.truncate(C.uintptr_t(_p0), C.longlong(length)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callbind(s int, addr uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.bind(C.int(s), C.uintptr_t(addr), C.uintptr_t(addrlen)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callconnect(s int, addr uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.connect(C.int(s), C.uintptr_t(addr), C.uintptr_t(addrlen)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetgroups(n int, list uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getgroups(C.int(n), C.uintptr_t(list)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetgroups(n int, list uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setgroups(C.int(n), C.uintptr_t(list)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetsockopt(s int, level int, name int, val uintptr, vallen uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getsockopt(C.int(s), C.int(level), C.int(name), C.uintptr_t(val), C.uintptr_t(vallen)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetsockopt(s int, level int, name int, val uintptr, vallen uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setsockopt(C.int(s), C.int(level), C.int(name), C.uintptr_t(val), C.uintptr_t(vallen)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsocket(domain int, typ int, proto int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.socket(C.int(domain), C.int(typ), C.int(proto)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsocketpair(domain int, typ int, proto int, fd uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.socketpair(C.int(domain), C.int(typ), C.int(proto), C.uintptr_t(fd)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetpeername(fd int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getpeername(C.int(fd), C.uintptr_t(rsa), C.uintptr_t(addrlen)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetsockname(fd int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getsockname(C.int(fd), C.uintptr_t(rsa), C.uintptr_t(addrlen)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callrecvfrom(fd int, _p0 uintptr, _lenp0 int, flags int, from uintptr, fromlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.recvfrom(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0), C.int(flags), C.uintptr_t(from), C.uintptr_t(fromlen)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsendto(s int, _p0 uintptr, _lenp0 int, flags int, to uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.sendto(C.int(s), C.uintptr_t(_p0), C.size_t(_lenp0), C.int(flags), C.uintptr_t(to), C.uintptr_t(addrlen)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callnrecvmsg(s int, msg uintptr, flags int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.nrecvmsg(C.int(s), C.uintptr_t(msg), C.int(flags)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callnsendmsg(s int, msg uintptr, flags int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.nsendmsg(C.int(s), C.uintptr_t(msg), C.int(flags)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmunmap(addr uintptr, length uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.munmap(C.uintptr_t(addr), C.uintptr_t(length)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmadvise(_p0 uintptr, _lenp0 int, advice int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.madvise(C.uintptr_t(_p0), C.size_t(_lenp0), C.int(advice)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmprotect(_p0 uintptr, _lenp0 int, prot int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.mprotect(C.uintptr_t(_p0), C.size_t(_lenp0), C.int(prot)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmlock(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.mlock(C.uintptr_t(_p0), C.size_t(_lenp0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmlockall(flags int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.mlockall(C.int(flags)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmsync(_p0 uintptr, _lenp0 int, flags int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.msync(C.uintptr_t(_p0), C.size_t(_lenp0), C.int(flags)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmunlock(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.munlock(C.uintptr_t(_p0), C.size_t(_lenp0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmunlockall() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.munlockall())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpipe(p uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.pipe(C.uintptr_t(p)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpoll(fds uintptr, nfds int, timeout int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.poll(C.uintptr_t(fds), C.int(nfds), C.int(timeout)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgettimeofday(tv uintptr, tzp uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.gettimeofday(C.uintptr_t(tv), C.uintptr_t(tzp)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calltime(t uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.time(C.uintptr_t(t)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callutime(_p0 uintptr, buf uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.utime(C.uintptr_t(_p0), C.uintptr_t(buf)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetsystemcfg(label int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getsystemcfg(C.int(label)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callumount(_p0 uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.umount(C.uintptr_t(_p0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetrlimit(resource int, rlim uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getrlimit(C.int(resource), C.uintptr_t(rlim)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calllseek(fd int, offset int64, whence int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.lseek(C.int(fd), C.longlong(offset), C.int(whence)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmmap64(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.mmap64(C.uintptr_t(addr), C.uintptr_t(length), C.int(prot), C.int(flags), C.int(fd), C.longlong(offset)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go",
    "content": "// go run mksyscall.go -tags darwin,amd64 syscall_bsd.go syscall_darwin.go syscall_darwin_amd64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build darwin && amd64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgroups getgroups \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgroups setgroups \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_wait4_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_wait4 wait4 \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_accept_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_accept accept \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_bind_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_bind bind \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_connect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_connect connect \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socket_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socket socket \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockopt getsockopt \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsockopt setsockopt \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpeername_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpeername getpeername \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockname_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockname getsockname \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shutdown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shutdown shutdown \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socketpair_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socketpair socketpair \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvfrom_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvfrom recvfrom \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendto_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendto sendto \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvmsg recvmsg \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendmsg sendmsg \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kevent_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kevent kevent \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimes utimes \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_futimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_futimes futimes \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_poll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_poll poll \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_madvise_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_madvise madvise \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlock mlock \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlockall mlockall \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mprotect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mprotect mprotect \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_msync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_msync msync \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlock munlock \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlockall munlockall \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc closedir(dir uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_closedir_trampoline_addr, uintptr(dir), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_closedir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_closedir closedir \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc readdir_r(dir uintptr, entry *Dirent, result **Dirent) (res Errno) {\n\tr0, _, _ := syscall_syscall(libc_readdir_r_trampoline_addr, uintptr(dir), uintptr(unsafe.Pointer(entry)), uintptr(unsafe.Pointer(result)))\n\tres = Errno(r0)\n\treturn\n}\n\nvar libc_readdir_r_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readdir_r readdir_r \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe(p *[2]int32) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_pipe_trampoline_addr, uintptr(unsafe.Pointer(p)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pipe_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pipe pipe \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_getxattr_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getxattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getxattr getxattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_fgetxattr_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fgetxattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fgetxattr fgetxattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_setxattr_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setxattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setxattr setxattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fsetxattr_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fsetxattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fsetxattr fsetxattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc removexattr(path string, attr string, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_removexattr_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_removexattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_removexattr removexattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fremovexattr(fd int, attr string, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_fremovexattr_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fremovexattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fremovexattr fremovexattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc listxattr(path string, dest *byte, size int, options int) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_listxattr_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_listxattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_listxattr listxattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_flistxattr_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_flistxattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_flistxattr flistxattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_utimensat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimensat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimensat utimensat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (val int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fcntl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fcntl fcntl \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kill(pid int, signum int, posix int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), uintptr(posix))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kill_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kill kill \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ioctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ioctl ioctl \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc renamexNp(from string, to string, flag uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_renamex_np_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flag))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_renamex_np_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_renamex_np renamex_np \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc renameatxNp(fromfd int, from string, tofd int, to string, flag uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_renameatx_np_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), uintptr(flag), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_renameatx_np_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_renameatx_np renameatx_np \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sysctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sysctl sysctl \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pthread_chdir_np(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_pthread_chdir_np_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pthread_chdir_np_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pthread_chdir_np pthread_chdir_np \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pthread_fchdir_np(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_pthread_fchdir_np_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pthread_fchdir_np_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pthread_fchdir_np pthread_fchdir_np \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connectx(fd int, endpoints *SaEndpoints, associd SaeAssocID, flags uint32, iov []Iovec, n *uintptr, connid *SaeConnID) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(iov) > 0 {\n\t\t_p0 = unsafe.Pointer(&iov[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall9(libc_connectx_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(endpoints)), uintptr(associd), uintptr(flags), uintptr(_p0), uintptr(len(iov)), uintptr(unsafe.Pointer(n)), uintptr(unsafe.Pointer(connid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_connectx_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_connectx connectx \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_sendfile_trampoline_addr, uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendfile_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendfile sendfile \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc shmat(id int, addr uintptr, flag int) (ret uintptr, err error) {\n\tr0, _, e1 := syscall_syscall(libc_shmat_trampoline_addr, uintptr(id), uintptr(addr), uintptr(flag))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shmat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shmat shmat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc shmctl(id int, cmd int, buf *SysvShmDesc) (result int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_shmctl_trampoline_addr, uintptr(id), uintptr(cmd), uintptr(unsafe.Pointer(buf)))\n\tresult = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shmctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shmctl shmctl \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc shmdt(addr uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_shmdt_trampoline_addr, uintptr(addr), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shmdt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shmdt shmdt \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc shmget(key int, size int, flag int) (id int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_shmget_trampoline_addr, uintptr(key), uintptr(size), uintptr(flag))\n\tid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shmget_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shmget shmget \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_access_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_access access \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_adjtime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_adjtime adjtime \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chdir chdir \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chflags chflags \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chmod chmod \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chown chown \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chroot_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chroot chroot \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_clock_gettime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_clock_gettime clock_gettime \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_close_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_close close \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Clonefile(src string, dst string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(src)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(dst)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_clonefile_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_clonefile_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_clonefile clonefile \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Clonefileat(srcDirfd int, src string, dstDirfd int, dst string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(src)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(dst)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_clonefileat_trampoline_addr, uintptr(srcDirfd), uintptr(unsafe.Pointer(_p0)), uintptr(dstDirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_clonefileat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_clonefileat clonefileat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup dup \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup2 dup2 \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exchangedata(path1 string, path2 string, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path1)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(path2)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_exchangedata_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_exchangedata_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_exchangedata exchangedata \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tsyscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0)\n\treturn\n}\n\nvar libc_exit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_exit exit \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_faccessat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_faccessat faccessat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchdir fchdir \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchflags fchflags \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmod fchmod \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmodat fchmodat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchown fchown \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchownat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchownat fchownat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fclonefileat(srcDirfd int, dstDirfd int, dst string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(dst)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fclonefileat_trampoline_addr, uintptr(srcDirfd), uintptr(dstDirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fclonefileat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fclonefileat fclonefileat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_flock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_flock flock \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fpathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fpathconf fpathconf \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fsync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fsync fsync \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ftruncate_trampoline_addr, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ftruncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ftruncate ftruncate \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getcwd_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getcwd getcwd \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdtablesize() (size int) {\n\tr0, _, _ := syscall_syscall(libc_getdtablesize_trampoline_addr, 0, 0, 0)\n\tsize = int(r0)\n\treturn\n}\n\nvar libc_getdtablesize_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getdtablesize getdtablesize \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\nvar libc_getegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getegid getegid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_geteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_geteuid geteuid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\nvar libc_getgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgid getgid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgid getpgid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\nvar libc_getpgrp_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgrp getpgrp \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\nvar libc_getpid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpid getpid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\nvar libc_getppid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getppid getppid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpriority getpriority \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrlimit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrlimit getrlimit \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrusage_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrusage getrusage \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsid getsid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_gettimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_gettimeofday gettimeofday \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_getuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getuid getuid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := syscall_rawSyscall(libc_issetugid_trampoline_addr, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\nvar libc_issetugid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_issetugid issetugid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kqueue_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kqueue kqueue \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lchown lchown \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_link_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_link link \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_linkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_linkat linkat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_listen_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_listen listen \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdir mkdir \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdirat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdirat mkdirat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifo_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifo mkfifo \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknod mknod \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(fsType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(dir)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mount mount \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_open_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_open_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_open open \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_openat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_openat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_openat openat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_pathconf_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pathconf pathconf \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pread_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pread_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pread pread \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pwrite_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pwrite_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pwrite pwrite \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_read_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_read read \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_readlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlink readlink \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_readlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlinkat readlinkat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rename_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rename_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rename rename \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_renameat_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_renameat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_renameat renameat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_revoke_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_revoke_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_revoke revoke \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rmdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rmdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rmdir rmdir \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := syscall_syscall(libc_lseek_trampoline_addr, uintptr(fd), uintptr(offset), uintptr(whence))\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lseek_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lseek lseek \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_select_trampoline_addr, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_select_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_select select \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setattrlist(path string, attrlist *Attrlist, attrBuf []byte, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(attrBuf) > 0 {\n\t\t_p1 = unsafe.Pointer(&attrBuf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_setattrlist_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(attrlist)), uintptr(_p1), uintptr(len(attrBuf)), uintptr(options), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setattrlist_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setattrlist setattrlist \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setegid setegid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_seteuid_trampoline_addr, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_seteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_seteuid seteuid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgid_trampoline_addr, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgid setgid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_setlogin_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setlogin_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setlogin setlogin \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setpgid_trampoline_addr, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpgid setpgid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_setpriority_trampoline_addr, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpriority setpriority \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setprivexec(flag int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_setprivexec_trampoline_addr, uintptr(flag), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setprivexec_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setprivexec setprivexec \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setregid_trampoline_addr, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setregid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setregid setregid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setreuid_trampoline_addr, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setreuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setreuid setreuid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsid setsid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_settimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_settimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_settimeofday settimeofday \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setuid_trampoline_addr, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setuid setuid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlink symlink \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlinkat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlinkat symlinkat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := syscall_syscall(libc_sync_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sync sync \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_truncate_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_truncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_truncate truncate \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := syscall_syscall(libc_umask_trampoline_addr, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\nvar libc_umask_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_umask umask \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Undelete(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_undelete_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_undelete_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_undelete undelete \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlink unlink \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlinkat unlinkat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unmount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unmount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unmount unmount \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_write_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_write write \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_mmap_trampoline_addr, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mmap mmap \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_munmap_trampoline_addr, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munmap munmap \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc readv(fd int, iovecs []Iovec) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(iovecs) > 0 {\n\t\t_p0 = unsafe.Pointer(&iovecs[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_readv_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readv_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readv readv \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc preadv(fd int, iovecs []Iovec, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(iovecs) > 0 {\n\t\t_p0 = unsafe.Pointer(&iovecs[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_preadv_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_preadv_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_preadv preadv \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writev(fd int, iovecs []Iovec) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(iovecs) > 0 {\n\t\t_p0 = unsafe.Pointer(&iovecs[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_writev_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_writev_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_writev writev \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwritev(fd int, iovecs []Iovec, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(iovecs) > 0 {\n\t\t_p0 = unsafe.Pointer(&iovecs[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pwritev_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pwritev_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pwritev pwritev \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstat64_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstat64_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstat64 fstat64 \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fstatat64_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatat64_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatat64 fstatat64 \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstatfs64_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatfs64_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatfs64 fstatfs64 \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getfsstat64_trampoline_addr, uintptr(buf), uintptr(size), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getfsstat64_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getfsstat64 getfsstat64 \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lstat64_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lstat64_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lstat64 lstat64 \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptrace1(request int, pid int, addr uintptr, data uintptr) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_ptrace_trampoline_addr, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ptrace_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ptrace ptrace \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_stat64_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_stat64_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_stat64 stat64 \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_statfs64_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_statfs64_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_statfs64 statfs64 \"/usr/lib/libSystem.B.dylib\"\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s",
    "content": "// go run mkasm.go darwin amd64\n// Code generated by the command above; DO NOT EDIT.\n\n#include \"textflag.h\"\n\nTEXT libc_fdopendir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fdopendir(SB)\nGLOBL\t·libc_fdopendir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fdopendir_trampoline_addr(SB)/8, $libc_fdopendir_trampoline<>(SB)\n\nTEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgroups(SB)\nGLOBL\t·libc_getgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB)\n\nTEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgroups(SB)\nGLOBL\t·libc_setgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB)\n\nTEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_wait4(SB)\nGLOBL\t·libc_wait4_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB)\n\nTEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_accept(SB)\nGLOBL\t·libc_accept_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB)\n\nTEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_bind(SB)\nGLOBL\t·libc_bind_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB)\n\nTEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_connect(SB)\nGLOBL\t·libc_connect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB)\n\nTEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socket(SB)\nGLOBL\t·libc_socket_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB)\n\nTEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockopt(SB)\nGLOBL\t·libc_getsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB)\n\nTEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsockopt(SB)\nGLOBL\t·libc_setsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB)\n\nTEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpeername(SB)\nGLOBL\t·libc_getpeername_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB)\n\nTEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockname(SB)\nGLOBL\t·libc_getsockname_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB)\n\nTEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shutdown(SB)\nGLOBL\t·libc_shutdown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB)\n\nTEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socketpair(SB)\nGLOBL\t·libc_socketpair_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB)\n\nTEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvfrom(SB)\nGLOBL\t·libc_recvfrom_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB)\n\nTEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendto(SB)\nGLOBL\t·libc_sendto_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB)\n\nTEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvmsg(SB)\nGLOBL\t·libc_recvmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB)\n\nTEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendmsg(SB)\nGLOBL\t·libc_sendmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB)\n\nTEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kevent(SB)\nGLOBL\t·libc_kevent_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB)\n\nTEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimes(SB)\nGLOBL\t·libc_utimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB)\n\nTEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_futimes(SB)\nGLOBL\t·libc_futimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB)\n\nTEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_poll(SB)\nGLOBL\t·libc_poll_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB)\n\nTEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_madvise(SB)\nGLOBL\t·libc_madvise_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB)\n\nTEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlock(SB)\nGLOBL\t·libc_mlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB)\n\nTEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlockall(SB)\nGLOBL\t·libc_mlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB)\n\nTEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mprotect(SB)\nGLOBL\t·libc_mprotect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB)\n\nTEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_msync(SB)\nGLOBL\t·libc_msync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB)\n\nTEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlock(SB)\nGLOBL\t·libc_munlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB)\n\nTEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlockall(SB)\nGLOBL\t·libc_munlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB)\n\nTEXT libc_closedir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_closedir(SB)\nGLOBL\t·libc_closedir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_closedir_trampoline_addr(SB)/8, $libc_closedir_trampoline<>(SB)\n\nTEXT libc_readdir_r_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readdir_r(SB)\nGLOBL\t·libc_readdir_r_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readdir_r_trampoline_addr(SB)/8, $libc_readdir_r_trampoline<>(SB)\n\nTEXT libc_pipe_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pipe(SB)\nGLOBL\t·libc_pipe_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pipe_trampoline_addr(SB)/8, $libc_pipe_trampoline<>(SB)\n\nTEXT libc_getxattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getxattr(SB)\nGLOBL\t·libc_getxattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getxattr_trampoline_addr(SB)/8, $libc_getxattr_trampoline<>(SB)\n\nTEXT libc_fgetxattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fgetxattr(SB)\nGLOBL\t·libc_fgetxattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fgetxattr_trampoline_addr(SB)/8, $libc_fgetxattr_trampoline<>(SB)\n\nTEXT libc_setxattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setxattr(SB)\nGLOBL\t·libc_setxattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setxattr_trampoline_addr(SB)/8, $libc_setxattr_trampoline<>(SB)\n\nTEXT libc_fsetxattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fsetxattr(SB)\nGLOBL\t·libc_fsetxattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fsetxattr_trampoline_addr(SB)/8, $libc_fsetxattr_trampoline<>(SB)\n\nTEXT libc_removexattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_removexattr(SB)\nGLOBL\t·libc_removexattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_removexattr_trampoline_addr(SB)/8, $libc_removexattr_trampoline<>(SB)\n\nTEXT libc_fremovexattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fremovexattr(SB)\nGLOBL\t·libc_fremovexattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fremovexattr_trampoline_addr(SB)/8, $libc_fremovexattr_trampoline<>(SB)\n\nTEXT libc_listxattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_listxattr(SB)\nGLOBL\t·libc_listxattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_listxattr_trampoline_addr(SB)/8, $libc_listxattr_trampoline<>(SB)\n\nTEXT libc_flistxattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_flistxattr(SB)\nGLOBL\t·libc_flistxattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_flistxattr_trampoline_addr(SB)/8, $libc_flistxattr_trampoline<>(SB)\n\nTEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimensat(SB)\nGLOBL\t·libc_utimensat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB)\n\nTEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fcntl(SB)\nGLOBL\t·libc_fcntl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB)\n\nTEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kill(SB)\nGLOBL\t·libc_kill_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB)\n\nTEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ioctl(SB)\nGLOBL\t·libc_ioctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB)\n\nTEXT libc_renamex_np_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_renamex_np(SB)\nGLOBL\t·libc_renamex_np_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_renamex_np_trampoline_addr(SB)/8, $libc_renamex_np_trampoline<>(SB)\n\nTEXT libc_renameatx_np_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_renameatx_np(SB)\nGLOBL\t·libc_renameatx_np_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_renameatx_np_trampoline_addr(SB)/8, $libc_renameatx_np_trampoline<>(SB)\n\nTEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sysctl(SB)\nGLOBL\t·libc_sysctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB)\n\nTEXT libc_pthread_chdir_np_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pthread_chdir_np(SB)\nGLOBL\t·libc_pthread_chdir_np_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pthread_chdir_np_trampoline_addr(SB)/8, $libc_pthread_chdir_np_trampoline<>(SB)\n\nTEXT libc_pthread_fchdir_np_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pthread_fchdir_np(SB)\nGLOBL\t·libc_pthread_fchdir_np_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pthread_fchdir_np_trampoline_addr(SB)/8, $libc_pthread_fchdir_np_trampoline<>(SB)\n\nTEXT libc_connectx_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_connectx(SB)\nGLOBL\t·libc_connectx_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_connectx_trampoline_addr(SB)/8, $libc_connectx_trampoline<>(SB)\n\nTEXT libc_sendfile_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendfile(SB)\nGLOBL\t·libc_sendfile_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendfile_trampoline_addr(SB)/8, $libc_sendfile_trampoline<>(SB)\n\nTEXT libc_shmat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shmat(SB)\nGLOBL\t·libc_shmat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shmat_trampoline_addr(SB)/8, $libc_shmat_trampoline<>(SB)\n\nTEXT libc_shmctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shmctl(SB)\nGLOBL\t·libc_shmctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shmctl_trampoline_addr(SB)/8, $libc_shmctl_trampoline<>(SB)\n\nTEXT libc_shmdt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shmdt(SB)\nGLOBL\t·libc_shmdt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shmdt_trampoline_addr(SB)/8, $libc_shmdt_trampoline<>(SB)\n\nTEXT libc_shmget_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shmget(SB)\nGLOBL\t·libc_shmget_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shmget_trampoline_addr(SB)/8, $libc_shmget_trampoline<>(SB)\n\nTEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_access(SB)\nGLOBL\t·libc_access_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB)\n\nTEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_adjtime(SB)\nGLOBL\t·libc_adjtime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB)\n\nTEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chdir(SB)\nGLOBL\t·libc_chdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB)\n\nTEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chflags(SB)\nGLOBL\t·libc_chflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB)\n\nTEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chmod(SB)\nGLOBL\t·libc_chmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB)\n\nTEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chown(SB)\nGLOBL\t·libc_chown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB)\n\nTEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chroot(SB)\nGLOBL\t·libc_chroot_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB)\n\nTEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_clock_gettime(SB)\nGLOBL\t·libc_clock_gettime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB)\n\nTEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_close(SB)\nGLOBL\t·libc_close_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB)\n\nTEXT libc_clonefile_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_clonefile(SB)\nGLOBL\t·libc_clonefile_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_clonefile_trampoline_addr(SB)/8, $libc_clonefile_trampoline<>(SB)\n\nTEXT libc_clonefileat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_clonefileat(SB)\nGLOBL\t·libc_clonefileat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_clonefileat_trampoline_addr(SB)/8, $libc_clonefileat_trampoline<>(SB)\n\nTEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup(SB)\nGLOBL\t·libc_dup_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB)\n\nTEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup2(SB)\nGLOBL\t·libc_dup2_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB)\n\nTEXT libc_exchangedata_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_exchangedata(SB)\nGLOBL\t·libc_exchangedata_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_exchangedata_trampoline_addr(SB)/8, $libc_exchangedata_trampoline<>(SB)\n\nTEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_exit(SB)\nGLOBL\t·libc_exit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB)\n\nTEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_faccessat(SB)\nGLOBL\t·libc_faccessat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB)\n\nTEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchdir(SB)\nGLOBL\t·libc_fchdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB)\n\nTEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchflags(SB)\nGLOBL\t·libc_fchflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB)\n\nTEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmod(SB)\nGLOBL\t·libc_fchmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB)\n\nTEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmodat(SB)\nGLOBL\t·libc_fchmodat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB)\n\nTEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchown(SB)\nGLOBL\t·libc_fchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB)\n\nTEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchownat(SB)\nGLOBL\t·libc_fchownat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB)\n\nTEXT libc_fclonefileat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fclonefileat(SB)\nGLOBL\t·libc_fclonefileat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fclonefileat_trampoline_addr(SB)/8, $libc_fclonefileat_trampoline<>(SB)\n\nTEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_flock(SB)\nGLOBL\t·libc_flock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB)\n\nTEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fpathconf(SB)\nGLOBL\t·libc_fpathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB)\n\nTEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fsync(SB)\nGLOBL\t·libc_fsync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB)\n\nTEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ftruncate(SB)\nGLOBL\t·libc_ftruncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB)\n\nTEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getcwd(SB)\nGLOBL\t·libc_getcwd_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB)\n\nTEXT libc_getdtablesize_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getdtablesize(SB)\nGLOBL\t·libc_getdtablesize_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getdtablesize_trampoline_addr(SB)/8, $libc_getdtablesize_trampoline<>(SB)\n\nTEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getegid(SB)\nGLOBL\t·libc_getegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB)\n\nTEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_geteuid(SB)\nGLOBL\t·libc_geteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB)\n\nTEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgid(SB)\nGLOBL\t·libc_getgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB)\n\nTEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgid(SB)\nGLOBL\t·libc_getpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB)\n\nTEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgrp(SB)\nGLOBL\t·libc_getpgrp_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB)\n\nTEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpid(SB)\nGLOBL\t·libc_getpid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB)\n\nTEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getppid(SB)\nGLOBL\t·libc_getppid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB)\n\nTEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpriority(SB)\nGLOBL\t·libc_getpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB)\n\nTEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrlimit(SB)\nGLOBL\t·libc_getrlimit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB)\n\nTEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrusage(SB)\nGLOBL\t·libc_getrusage_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB)\n\nTEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsid(SB)\nGLOBL\t·libc_getsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB)\n\nTEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_gettimeofday(SB)\nGLOBL\t·libc_gettimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB)\n\nTEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getuid(SB)\nGLOBL\t·libc_getuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB)\n\nTEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_issetugid(SB)\nGLOBL\t·libc_issetugid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB)\n\nTEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kqueue(SB)\nGLOBL\t·libc_kqueue_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB)\n\nTEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lchown(SB)\nGLOBL\t·libc_lchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB)\n\nTEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_link(SB)\nGLOBL\t·libc_link_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB)\n\nTEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_linkat(SB)\nGLOBL\t·libc_linkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB)\n\nTEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_listen(SB)\nGLOBL\t·libc_listen_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB)\n\nTEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdir(SB)\nGLOBL\t·libc_mkdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB)\n\nTEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdirat(SB)\nGLOBL\t·libc_mkdirat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB)\n\nTEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifo(SB)\nGLOBL\t·libc_mkfifo_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB)\n\nTEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknod(SB)\nGLOBL\t·libc_mknod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB)\n\nTEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mount(SB)\nGLOBL\t·libc_mount_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB)\n\nTEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_open(SB)\nGLOBL\t·libc_open_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB)\n\nTEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_openat(SB)\nGLOBL\t·libc_openat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB)\n\nTEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pathconf(SB)\nGLOBL\t·libc_pathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB)\n\nTEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pread(SB)\nGLOBL\t·libc_pread_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB)\n\nTEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pwrite(SB)\nGLOBL\t·libc_pwrite_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB)\n\nTEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_read(SB)\nGLOBL\t·libc_read_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB)\n\nTEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlink(SB)\nGLOBL\t·libc_readlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB)\n\nTEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlinkat(SB)\nGLOBL\t·libc_readlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB)\n\nTEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rename(SB)\nGLOBL\t·libc_rename_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB)\n\nTEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_renameat(SB)\nGLOBL\t·libc_renameat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB)\n\nTEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_revoke(SB)\nGLOBL\t·libc_revoke_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB)\n\nTEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rmdir(SB)\nGLOBL\t·libc_rmdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB)\n\nTEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lseek(SB)\nGLOBL\t·libc_lseek_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB)\n\nTEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_select(SB)\nGLOBL\t·libc_select_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB)\n\nTEXT libc_setattrlist_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setattrlist(SB)\nGLOBL\t·libc_setattrlist_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setattrlist_trampoline_addr(SB)/8, $libc_setattrlist_trampoline<>(SB)\n\nTEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setegid(SB)\nGLOBL\t·libc_setegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB)\n\nTEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_seteuid(SB)\nGLOBL\t·libc_seteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB)\n\nTEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgid(SB)\nGLOBL\t·libc_setgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB)\n\nTEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setlogin(SB)\nGLOBL\t·libc_setlogin_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB)\n\nTEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpgid(SB)\nGLOBL\t·libc_setpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB)\n\nTEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpriority(SB)\nGLOBL\t·libc_setpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB)\n\nTEXT libc_setprivexec_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setprivexec(SB)\nGLOBL\t·libc_setprivexec_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setprivexec_trampoline_addr(SB)/8, $libc_setprivexec_trampoline<>(SB)\n\nTEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setregid(SB)\nGLOBL\t·libc_setregid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB)\n\nTEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setreuid(SB)\nGLOBL\t·libc_setreuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB)\n\nTEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsid(SB)\nGLOBL\t·libc_setsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB)\n\nTEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_settimeofday(SB)\nGLOBL\t·libc_settimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB)\n\nTEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setuid(SB)\nGLOBL\t·libc_setuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB)\n\nTEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlink(SB)\nGLOBL\t·libc_symlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB)\n\nTEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlinkat(SB)\nGLOBL\t·libc_symlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB)\n\nTEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sync(SB)\nGLOBL\t·libc_sync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB)\n\nTEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_truncate(SB)\nGLOBL\t·libc_truncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB)\n\nTEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_umask(SB)\nGLOBL\t·libc_umask_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB)\n\nTEXT libc_undelete_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_undelete(SB)\nGLOBL\t·libc_undelete_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_undelete_trampoline_addr(SB)/8, $libc_undelete_trampoline<>(SB)\n\nTEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlink(SB)\nGLOBL\t·libc_unlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB)\n\nTEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlinkat(SB)\nGLOBL\t·libc_unlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB)\n\nTEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unmount(SB)\nGLOBL\t·libc_unmount_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB)\n\nTEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_write(SB)\nGLOBL\t·libc_write_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB)\n\nTEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mmap(SB)\nGLOBL\t·libc_mmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB)\n\nTEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munmap(SB)\nGLOBL\t·libc_munmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB)\n\nTEXT libc_readv_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readv(SB)\nGLOBL\t·libc_readv_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readv_trampoline_addr(SB)/8, $libc_readv_trampoline<>(SB)\n\nTEXT libc_preadv_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_preadv(SB)\nGLOBL\t·libc_preadv_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_preadv_trampoline_addr(SB)/8, $libc_preadv_trampoline<>(SB)\n\nTEXT libc_writev_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_writev(SB)\nGLOBL\t·libc_writev_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_writev_trampoline_addr(SB)/8, $libc_writev_trampoline<>(SB)\n\nTEXT libc_pwritev_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pwritev(SB)\nGLOBL\t·libc_pwritev_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pwritev_trampoline_addr(SB)/8, $libc_pwritev_trampoline<>(SB)\n\nTEXT libc_fstat64_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstat64(SB)\nGLOBL\t·libc_fstat64_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstat64_trampoline_addr(SB)/8, $libc_fstat64_trampoline<>(SB)\n\nTEXT libc_fstatat64_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatat64(SB)\nGLOBL\t·libc_fstatat64_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatat64_trampoline_addr(SB)/8, $libc_fstatat64_trampoline<>(SB)\n\nTEXT libc_fstatfs64_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatfs64(SB)\nGLOBL\t·libc_fstatfs64_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatfs64_trampoline_addr(SB)/8, $libc_fstatfs64_trampoline<>(SB)\n\nTEXT libc_getfsstat64_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getfsstat64(SB)\nGLOBL\t·libc_getfsstat64_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getfsstat64_trampoline_addr(SB)/8, $libc_getfsstat64_trampoline<>(SB)\n\nTEXT libc_lstat64_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lstat64(SB)\nGLOBL\t·libc_lstat64_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lstat64_trampoline_addr(SB)/8, $libc_lstat64_trampoline<>(SB)\n\nTEXT libc_ptrace_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ptrace(SB)\nGLOBL\t·libc_ptrace_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ptrace_trampoline_addr(SB)/8, $libc_ptrace_trampoline<>(SB)\n\nTEXT libc_stat64_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_stat64(SB)\nGLOBL\t·libc_stat64_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_stat64_trampoline_addr(SB)/8, $libc_stat64_trampoline<>(SB)\n\nTEXT libc_statfs64_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_statfs64(SB)\nGLOBL\t·libc_statfs64_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_statfs64_trampoline_addr(SB)/8, $libc_statfs64_trampoline<>(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go",
    "content": "// go run mksyscall.go -tags darwin,arm64 syscall_bsd.go syscall_darwin.go syscall_darwin_arm64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build darwin && arm64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgroups getgroups \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgroups setgroups \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_wait4_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_wait4 wait4 \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_accept_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_accept accept \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_bind_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_bind bind \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_connect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_connect connect \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socket_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socket socket \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockopt getsockopt \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsockopt setsockopt \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpeername_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpeername getpeername \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockname_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockname getsockname \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shutdown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shutdown shutdown \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socketpair_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socketpair socketpair \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvfrom_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvfrom recvfrom \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendto_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendto sendto \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvmsg recvmsg \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendmsg sendmsg \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kevent_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kevent kevent \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimes utimes \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_futimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_futimes futimes \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_poll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_poll poll \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_madvise_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_madvise madvise \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlock mlock \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlockall mlockall \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mprotect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mprotect mprotect \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_msync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_msync msync \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlock munlock \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlockall munlockall \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc closedir(dir uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_closedir_trampoline_addr, uintptr(dir), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_closedir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_closedir closedir \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc readdir_r(dir uintptr, entry *Dirent, result **Dirent) (res Errno) {\n\tr0, _, _ := syscall_syscall(libc_readdir_r_trampoline_addr, uintptr(dir), uintptr(unsafe.Pointer(entry)), uintptr(unsafe.Pointer(result)))\n\tres = Errno(r0)\n\treturn\n}\n\nvar libc_readdir_r_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readdir_r readdir_r \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe(p *[2]int32) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_pipe_trampoline_addr, uintptr(unsafe.Pointer(p)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pipe_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pipe pipe \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_getxattr_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getxattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getxattr getxattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_fgetxattr_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fgetxattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fgetxattr fgetxattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_setxattr_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setxattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setxattr setxattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fsetxattr_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fsetxattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fsetxattr fsetxattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc removexattr(path string, attr string, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_removexattr_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_removexattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_removexattr removexattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fremovexattr(fd int, attr string, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_fremovexattr_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fremovexattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fremovexattr fremovexattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc listxattr(path string, dest *byte, size int, options int) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_listxattr_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_listxattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_listxattr listxattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_flistxattr_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_flistxattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_flistxattr flistxattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_utimensat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimensat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimensat utimensat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (val int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fcntl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fcntl fcntl \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kill(pid int, signum int, posix int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), uintptr(posix))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kill_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kill kill \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ioctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ioctl ioctl \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc renamexNp(from string, to string, flag uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_renamex_np_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flag))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_renamex_np_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_renamex_np renamex_np \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc renameatxNp(fromfd int, from string, tofd int, to string, flag uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_renameatx_np_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), uintptr(flag), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_renameatx_np_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_renameatx_np renameatx_np \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sysctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sysctl sysctl \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pthread_chdir_np(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_pthread_chdir_np_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pthread_chdir_np_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pthread_chdir_np pthread_chdir_np \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pthread_fchdir_np(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_pthread_fchdir_np_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pthread_fchdir_np_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pthread_fchdir_np pthread_fchdir_np \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connectx(fd int, endpoints *SaEndpoints, associd SaeAssocID, flags uint32, iov []Iovec, n *uintptr, connid *SaeConnID) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(iov) > 0 {\n\t\t_p0 = unsafe.Pointer(&iov[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall9(libc_connectx_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(endpoints)), uintptr(associd), uintptr(flags), uintptr(_p0), uintptr(len(iov)), uintptr(unsafe.Pointer(n)), uintptr(unsafe.Pointer(connid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_connectx_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_connectx connectx \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_sendfile_trampoline_addr, uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendfile_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendfile sendfile \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc shmat(id int, addr uintptr, flag int) (ret uintptr, err error) {\n\tr0, _, e1 := syscall_syscall(libc_shmat_trampoline_addr, uintptr(id), uintptr(addr), uintptr(flag))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shmat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shmat shmat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc shmctl(id int, cmd int, buf *SysvShmDesc) (result int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_shmctl_trampoline_addr, uintptr(id), uintptr(cmd), uintptr(unsafe.Pointer(buf)))\n\tresult = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shmctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shmctl shmctl \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc shmdt(addr uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_shmdt_trampoline_addr, uintptr(addr), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shmdt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shmdt shmdt \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc shmget(key int, size int, flag int) (id int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_shmget_trampoline_addr, uintptr(key), uintptr(size), uintptr(flag))\n\tid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shmget_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shmget shmget \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_access_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_access access \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_adjtime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_adjtime adjtime \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chdir chdir \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chflags chflags \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chmod chmod \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chown chown \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chroot_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chroot chroot \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_clock_gettime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_clock_gettime clock_gettime \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_close_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_close close \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Clonefile(src string, dst string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(src)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(dst)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_clonefile_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_clonefile_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_clonefile clonefile \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Clonefileat(srcDirfd int, src string, dstDirfd int, dst string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(src)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(dst)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_clonefileat_trampoline_addr, uintptr(srcDirfd), uintptr(unsafe.Pointer(_p0)), uintptr(dstDirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_clonefileat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_clonefileat clonefileat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup dup \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup2 dup2 \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exchangedata(path1 string, path2 string, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path1)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(path2)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_exchangedata_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_exchangedata_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_exchangedata exchangedata \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tsyscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0)\n\treturn\n}\n\nvar libc_exit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_exit exit \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_faccessat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_faccessat faccessat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchdir fchdir \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchflags fchflags \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmod fchmod \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmodat fchmodat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchown fchown \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchownat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchownat fchownat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fclonefileat(srcDirfd int, dstDirfd int, dst string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(dst)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fclonefileat_trampoline_addr, uintptr(srcDirfd), uintptr(dstDirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fclonefileat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fclonefileat fclonefileat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_flock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_flock flock \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fpathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fpathconf fpathconf \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fsync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fsync fsync \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ftruncate_trampoline_addr, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ftruncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ftruncate ftruncate \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getcwd_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getcwd getcwd \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdtablesize() (size int) {\n\tr0, _, _ := syscall_syscall(libc_getdtablesize_trampoline_addr, 0, 0, 0)\n\tsize = int(r0)\n\treturn\n}\n\nvar libc_getdtablesize_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getdtablesize getdtablesize \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\nvar libc_getegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getegid getegid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_geteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_geteuid geteuid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\nvar libc_getgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgid getgid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgid getpgid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\nvar libc_getpgrp_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgrp getpgrp \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\nvar libc_getpid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpid getpid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\nvar libc_getppid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getppid getppid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpriority getpriority \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrlimit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrlimit getrlimit \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrusage_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrusage getrusage \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsid getsid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_gettimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_gettimeofday gettimeofday \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_getuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getuid getuid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := syscall_rawSyscall(libc_issetugid_trampoline_addr, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\nvar libc_issetugid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_issetugid issetugid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kqueue_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kqueue kqueue \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lchown lchown \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_link_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_link link \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_linkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_linkat linkat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_listen_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_listen listen \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdir mkdir \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdirat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdirat mkdirat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifo_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifo mkfifo \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknod mknod \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(fsType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(dir)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mount mount \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_open_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_open_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_open open \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_openat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_openat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_openat openat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_pathconf_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pathconf pathconf \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pread_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pread_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pread pread \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pwrite_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pwrite_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pwrite pwrite \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_read_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_read read \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_readlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlink readlink \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_readlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlinkat readlinkat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rename_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rename_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rename rename \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_renameat_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_renameat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_renameat renameat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_revoke_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_revoke_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_revoke revoke \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rmdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rmdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rmdir rmdir \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := syscall_syscall(libc_lseek_trampoline_addr, uintptr(fd), uintptr(offset), uintptr(whence))\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lseek_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lseek lseek \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_select_trampoline_addr, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_select_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_select select \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setattrlist(path string, attrlist *Attrlist, attrBuf []byte, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(attrBuf) > 0 {\n\t\t_p1 = unsafe.Pointer(&attrBuf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_setattrlist_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(attrlist)), uintptr(_p1), uintptr(len(attrBuf)), uintptr(options), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setattrlist_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setattrlist setattrlist \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setegid setegid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_seteuid_trampoline_addr, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_seteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_seteuid seteuid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgid_trampoline_addr, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgid setgid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_setlogin_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setlogin_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setlogin setlogin \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setpgid_trampoline_addr, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpgid setpgid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_setpriority_trampoline_addr, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpriority setpriority \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setprivexec(flag int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_setprivexec_trampoline_addr, uintptr(flag), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setprivexec_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setprivexec setprivexec \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setregid_trampoline_addr, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setregid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setregid setregid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setreuid_trampoline_addr, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setreuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setreuid setreuid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsid setsid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_settimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_settimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_settimeofday settimeofday \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setuid_trampoline_addr, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setuid setuid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlink symlink \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlinkat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlinkat symlinkat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := syscall_syscall(libc_sync_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sync sync \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_truncate_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_truncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_truncate truncate \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := syscall_syscall(libc_umask_trampoline_addr, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\nvar libc_umask_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_umask umask \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Undelete(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_undelete_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_undelete_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_undelete undelete \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlink unlink \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlinkat unlinkat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unmount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unmount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unmount unmount \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_write_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_write write \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_mmap_trampoline_addr, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mmap mmap \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_munmap_trampoline_addr, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munmap munmap \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc readv(fd int, iovecs []Iovec) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(iovecs) > 0 {\n\t\t_p0 = unsafe.Pointer(&iovecs[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_readv_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readv_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readv readv \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc preadv(fd int, iovecs []Iovec, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(iovecs) > 0 {\n\t\t_p0 = unsafe.Pointer(&iovecs[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_preadv_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_preadv_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_preadv preadv \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writev(fd int, iovecs []Iovec) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(iovecs) > 0 {\n\t\t_p0 = unsafe.Pointer(&iovecs[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_writev_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_writev_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_writev writev \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwritev(fd int, iovecs []Iovec, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(iovecs) > 0 {\n\t\t_p0 = unsafe.Pointer(&iovecs[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pwritev_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pwritev_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pwritev pwritev \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstat fstat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fstatat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatat fstatat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstatfs_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatfs fstatfs \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getfsstat_trampoline_addr, uintptr(buf), uintptr(size), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getfsstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getfsstat getfsstat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lstat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lstat lstat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptrace1(request int, pid int, addr uintptr, data uintptr) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_ptrace_trampoline_addr, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ptrace_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ptrace ptrace \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_stat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_stat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_stat stat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_statfs_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_statfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_statfs statfs \"/usr/lib/libSystem.B.dylib\"\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s",
    "content": "// go run mkasm.go darwin arm64\n// Code generated by the command above; DO NOT EDIT.\n\n#include \"textflag.h\"\n\nTEXT libc_fdopendir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fdopendir(SB)\nGLOBL\t·libc_fdopendir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fdopendir_trampoline_addr(SB)/8, $libc_fdopendir_trampoline<>(SB)\n\nTEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgroups(SB)\nGLOBL\t·libc_getgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB)\n\nTEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgroups(SB)\nGLOBL\t·libc_setgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB)\n\nTEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_wait4(SB)\nGLOBL\t·libc_wait4_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB)\n\nTEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_accept(SB)\nGLOBL\t·libc_accept_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB)\n\nTEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_bind(SB)\nGLOBL\t·libc_bind_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB)\n\nTEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_connect(SB)\nGLOBL\t·libc_connect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB)\n\nTEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socket(SB)\nGLOBL\t·libc_socket_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB)\n\nTEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockopt(SB)\nGLOBL\t·libc_getsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB)\n\nTEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsockopt(SB)\nGLOBL\t·libc_setsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB)\n\nTEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpeername(SB)\nGLOBL\t·libc_getpeername_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB)\n\nTEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockname(SB)\nGLOBL\t·libc_getsockname_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB)\n\nTEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shutdown(SB)\nGLOBL\t·libc_shutdown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB)\n\nTEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socketpair(SB)\nGLOBL\t·libc_socketpair_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB)\n\nTEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvfrom(SB)\nGLOBL\t·libc_recvfrom_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB)\n\nTEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendto(SB)\nGLOBL\t·libc_sendto_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB)\n\nTEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvmsg(SB)\nGLOBL\t·libc_recvmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB)\n\nTEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendmsg(SB)\nGLOBL\t·libc_sendmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB)\n\nTEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kevent(SB)\nGLOBL\t·libc_kevent_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB)\n\nTEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimes(SB)\nGLOBL\t·libc_utimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB)\n\nTEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_futimes(SB)\nGLOBL\t·libc_futimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB)\n\nTEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_poll(SB)\nGLOBL\t·libc_poll_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB)\n\nTEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_madvise(SB)\nGLOBL\t·libc_madvise_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB)\n\nTEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlock(SB)\nGLOBL\t·libc_mlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB)\n\nTEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlockall(SB)\nGLOBL\t·libc_mlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB)\n\nTEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mprotect(SB)\nGLOBL\t·libc_mprotect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB)\n\nTEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_msync(SB)\nGLOBL\t·libc_msync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB)\n\nTEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlock(SB)\nGLOBL\t·libc_munlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB)\n\nTEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlockall(SB)\nGLOBL\t·libc_munlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB)\n\nTEXT libc_closedir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_closedir(SB)\nGLOBL\t·libc_closedir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_closedir_trampoline_addr(SB)/8, $libc_closedir_trampoline<>(SB)\n\nTEXT libc_readdir_r_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readdir_r(SB)\nGLOBL\t·libc_readdir_r_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readdir_r_trampoline_addr(SB)/8, $libc_readdir_r_trampoline<>(SB)\n\nTEXT libc_pipe_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pipe(SB)\nGLOBL\t·libc_pipe_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pipe_trampoline_addr(SB)/8, $libc_pipe_trampoline<>(SB)\n\nTEXT libc_getxattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getxattr(SB)\nGLOBL\t·libc_getxattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getxattr_trampoline_addr(SB)/8, $libc_getxattr_trampoline<>(SB)\n\nTEXT libc_fgetxattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fgetxattr(SB)\nGLOBL\t·libc_fgetxattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fgetxattr_trampoline_addr(SB)/8, $libc_fgetxattr_trampoline<>(SB)\n\nTEXT libc_setxattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setxattr(SB)\nGLOBL\t·libc_setxattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setxattr_trampoline_addr(SB)/8, $libc_setxattr_trampoline<>(SB)\n\nTEXT libc_fsetxattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fsetxattr(SB)\nGLOBL\t·libc_fsetxattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fsetxattr_trampoline_addr(SB)/8, $libc_fsetxattr_trampoline<>(SB)\n\nTEXT libc_removexattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_removexattr(SB)\nGLOBL\t·libc_removexattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_removexattr_trampoline_addr(SB)/8, $libc_removexattr_trampoline<>(SB)\n\nTEXT libc_fremovexattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fremovexattr(SB)\nGLOBL\t·libc_fremovexattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fremovexattr_trampoline_addr(SB)/8, $libc_fremovexattr_trampoline<>(SB)\n\nTEXT libc_listxattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_listxattr(SB)\nGLOBL\t·libc_listxattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_listxattr_trampoline_addr(SB)/8, $libc_listxattr_trampoline<>(SB)\n\nTEXT libc_flistxattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_flistxattr(SB)\nGLOBL\t·libc_flistxattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_flistxattr_trampoline_addr(SB)/8, $libc_flistxattr_trampoline<>(SB)\n\nTEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimensat(SB)\nGLOBL\t·libc_utimensat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB)\n\nTEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fcntl(SB)\nGLOBL\t·libc_fcntl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB)\n\nTEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kill(SB)\nGLOBL\t·libc_kill_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB)\n\nTEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ioctl(SB)\nGLOBL\t·libc_ioctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB)\n\nTEXT libc_renamex_np_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_renamex_np(SB)\nGLOBL\t·libc_renamex_np_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_renamex_np_trampoline_addr(SB)/8, $libc_renamex_np_trampoline<>(SB)\n\nTEXT libc_renameatx_np_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_renameatx_np(SB)\nGLOBL\t·libc_renameatx_np_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_renameatx_np_trampoline_addr(SB)/8, $libc_renameatx_np_trampoline<>(SB)\n\nTEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sysctl(SB)\nGLOBL\t·libc_sysctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB)\n\nTEXT libc_pthread_chdir_np_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pthread_chdir_np(SB)\nGLOBL\t·libc_pthread_chdir_np_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pthread_chdir_np_trampoline_addr(SB)/8, $libc_pthread_chdir_np_trampoline<>(SB)\n\nTEXT libc_pthread_fchdir_np_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pthread_fchdir_np(SB)\nGLOBL\t·libc_pthread_fchdir_np_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pthread_fchdir_np_trampoline_addr(SB)/8, $libc_pthread_fchdir_np_trampoline<>(SB)\n\nTEXT libc_connectx_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_connectx(SB)\nGLOBL\t·libc_connectx_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_connectx_trampoline_addr(SB)/8, $libc_connectx_trampoline<>(SB)\n\nTEXT libc_sendfile_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendfile(SB)\nGLOBL\t·libc_sendfile_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendfile_trampoline_addr(SB)/8, $libc_sendfile_trampoline<>(SB)\n\nTEXT libc_shmat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shmat(SB)\nGLOBL\t·libc_shmat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shmat_trampoline_addr(SB)/8, $libc_shmat_trampoline<>(SB)\n\nTEXT libc_shmctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shmctl(SB)\nGLOBL\t·libc_shmctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shmctl_trampoline_addr(SB)/8, $libc_shmctl_trampoline<>(SB)\n\nTEXT libc_shmdt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shmdt(SB)\nGLOBL\t·libc_shmdt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shmdt_trampoline_addr(SB)/8, $libc_shmdt_trampoline<>(SB)\n\nTEXT libc_shmget_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shmget(SB)\nGLOBL\t·libc_shmget_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shmget_trampoline_addr(SB)/8, $libc_shmget_trampoline<>(SB)\n\nTEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_access(SB)\nGLOBL\t·libc_access_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB)\n\nTEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_adjtime(SB)\nGLOBL\t·libc_adjtime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB)\n\nTEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chdir(SB)\nGLOBL\t·libc_chdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB)\n\nTEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chflags(SB)\nGLOBL\t·libc_chflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB)\n\nTEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chmod(SB)\nGLOBL\t·libc_chmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB)\n\nTEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chown(SB)\nGLOBL\t·libc_chown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB)\n\nTEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chroot(SB)\nGLOBL\t·libc_chroot_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB)\n\nTEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_clock_gettime(SB)\nGLOBL\t·libc_clock_gettime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB)\n\nTEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_close(SB)\nGLOBL\t·libc_close_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB)\n\nTEXT libc_clonefile_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_clonefile(SB)\nGLOBL\t·libc_clonefile_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_clonefile_trampoline_addr(SB)/8, $libc_clonefile_trampoline<>(SB)\n\nTEXT libc_clonefileat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_clonefileat(SB)\nGLOBL\t·libc_clonefileat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_clonefileat_trampoline_addr(SB)/8, $libc_clonefileat_trampoline<>(SB)\n\nTEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup(SB)\nGLOBL\t·libc_dup_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB)\n\nTEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup2(SB)\nGLOBL\t·libc_dup2_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB)\n\nTEXT libc_exchangedata_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_exchangedata(SB)\nGLOBL\t·libc_exchangedata_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_exchangedata_trampoline_addr(SB)/8, $libc_exchangedata_trampoline<>(SB)\n\nTEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_exit(SB)\nGLOBL\t·libc_exit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB)\n\nTEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_faccessat(SB)\nGLOBL\t·libc_faccessat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB)\n\nTEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchdir(SB)\nGLOBL\t·libc_fchdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB)\n\nTEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchflags(SB)\nGLOBL\t·libc_fchflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB)\n\nTEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmod(SB)\nGLOBL\t·libc_fchmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB)\n\nTEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmodat(SB)\nGLOBL\t·libc_fchmodat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB)\n\nTEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchown(SB)\nGLOBL\t·libc_fchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB)\n\nTEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchownat(SB)\nGLOBL\t·libc_fchownat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB)\n\nTEXT libc_fclonefileat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fclonefileat(SB)\nGLOBL\t·libc_fclonefileat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fclonefileat_trampoline_addr(SB)/8, $libc_fclonefileat_trampoline<>(SB)\n\nTEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_flock(SB)\nGLOBL\t·libc_flock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB)\n\nTEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fpathconf(SB)\nGLOBL\t·libc_fpathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB)\n\nTEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fsync(SB)\nGLOBL\t·libc_fsync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB)\n\nTEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ftruncate(SB)\nGLOBL\t·libc_ftruncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB)\n\nTEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getcwd(SB)\nGLOBL\t·libc_getcwd_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB)\n\nTEXT libc_getdtablesize_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getdtablesize(SB)\nGLOBL\t·libc_getdtablesize_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getdtablesize_trampoline_addr(SB)/8, $libc_getdtablesize_trampoline<>(SB)\n\nTEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getegid(SB)\nGLOBL\t·libc_getegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB)\n\nTEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_geteuid(SB)\nGLOBL\t·libc_geteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB)\n\nTEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgid(SB)\nGLOBL\t·libc_getgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB)\n\nTEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgid(SB)\nGLOBL\t·libc_getpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB)\n\nTEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgrp(SB)\nGLOBL\t·libc_getpgrp_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB)\n\nTEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpid(SB)\nGLOBL\t·libc_getpid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB)\n\nTEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getppid(SB)\nGLOBL\t·libc_getppid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB)\n\nTEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpriority(SB)\nGLOBL\t·libc_getpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB)\n\nTEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrlimit(SB)\nGLOBL\t·libc_getrlimit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB)\n\nTEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrusage(SB)\nGLOBL\t·libc_getrusage_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB)\n\nTEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsid(SB)\nGLOBL\t·libc_getsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB)\n\nTEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_gettimeofday(SB)\nGLOBL\t·libc_gettimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB)\n\nTEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getuid(SB)\nGLOBL\t·libc_getuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB)\n\nTEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_issetugid(SB)\nGLOBL\t·libc_issetugid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB)\n\nTEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kqueue(SB)\nGLOBL\t·libc_kqueue_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB)\n\nTEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lchown(SB)\nGLOBL\t·libc_lchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB)\n\nTEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_link(SB)\nGLOBL\t·libc_link_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB)\n\nTEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_linkat(SB)\nGLOBL\t·libc_linkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB)\n\nTEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_listen(SB)\nGLOBL\t·libc_listen_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB)\n\nTEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdir(SB)\nGLOBL\t·libc_mkdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB)\n\nTEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdirat(SB)\nGLOBL\t·libc_mkdirat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB)\n\nTEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifo(SB)\nGLOBL\t·libc_mkfifo_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB)\n\nTEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknod(SB)\nGLOBL\t·libc_mknod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB)\n\nTEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mount(SB)\nGLOBL\t·libc_mount_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB)\n\nTEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_open(SB)\nGLOBL\t·libc_open_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB)\n\nTEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_openat(SB)\nGLOBL\t·libc_openat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB)\n\nTEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pathconf(SB)\nGLOBL\t·libc_pathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB)\n\nTEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pread(SB)\nGLOBL\t·libc_pread_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB)\n\nTEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pwrite(SB)\nGLOBL\t·libc_pwrite_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB)\n\nTEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_read(SB)\nGLOBL\t·libc_read_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB)\n\nTEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlink(SB)\nGLOBL\t·libc_readlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB)\n\nTEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlinkat(SB)\nGLOBL\t·libc_readlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB)\n\nTEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rename(SB)\nGLOBL\t·libc_rename_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB)\n\nTEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_renameat(SB)\nGLOBL\t·libc_renameat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB)\n\nTEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_revoke(SB)\nGLOBL\t·libc_revoke_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB)\n\nTEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rmdir(SB)\nGLOBL\t·libc_rmdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB)\n\nTEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lseek(SB)\nGLOBL\t·libc_lseek_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB)\n\nTEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_select(SB)\nGLOBL\t·libc_select_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB)\n\nTEXT libc_setattrlist_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setattrlist(SB)\nGLOBL\t·libc_setattrlist_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setattrlist_trampoline_addr(SB)/8, $libc_setattrlist_trampoline<>(SB)\n\nTEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setegid(SB)\nGLOBL\t·libc_setegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB)\n\nTEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_seteuid(SB)\nGLOBL\t·libc_seteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB)\n\nTEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgid(SB)\nGLOBL\t·libc_setgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB)\n\nTEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setlogin(SB)\nGLOBL\t·libc_setlogin_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB)\n\nTEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpgid(SB)\nGLOBL\t·libc_setpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB)\n\nTEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpriority(SB)\nGLOBL\t·libc_setpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB)\n\nTEXT libc_setprivexec_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setprivexec(SB)\nGLOBL\t·libc_setprivexec_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setprivexec_trampoline_addr(SB)/8, $libc_setprivexec_trampoline<>(SB)\n\nTEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setregid(SB)\nGLOBL\t·libc_setregid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB)\n\nTEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setreuid(SB)\nGLOBL\t·libc_setreuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB)\n\nTEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsid(SB)\nGLOBL\t·libc_setsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB)\n\nTEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_settimeofday(SB)\nGLOBL\t·libc_settimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB)\n\nTEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setuid(SB)\nGLOBL\t·libc_setuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB)\n\nTEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlink(SB)\nGLOBL\t·libc_symlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB)\n\nTEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlinkat(SB)\nGLOBL\t·libc_symlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB)\n\nTEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sync(SB)\nGLOBL\t·libc_sync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB)\n\nTEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_truncate(SB)\nGLOBL\t·libc_truncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB)\n\nTEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_umask(SB)\nGLOBL\t·libc_umask_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB)\n\nTEXT libc_undelete_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_undelete(SB)\nGLOBL\t·libc_undelete_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_undelete_trampoline_addr(SB)/8, $libc_undelete_trampoline<>(SB)\n\nTEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlink(SB)\nGLOBL\t·libc_unlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB)\n\nTEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlinkat(SB)\nGLOBL\t·libc_unlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB)\n\nTEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unmount(SB)\nGLOBL\t·libc_unmount_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB)\n\nTEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_write(SB)\nGLOBL\t·libc_write_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB)\n\nTEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mmap(SB)\nGLOBL\t·libc_mmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB)\n\nTEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munmap(SB)\nGLOBL\t·libc_munmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB)\n\nTEXT libc_readv_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readv(SB)\nGLOBL\t·libc_readv_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readv_trampoline_addr(SB)/8, $libc_readv_trampoline<>(SB)\n\nTEXT libc_preadv_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_preadv(SB)\nGLOBL\t·libc_preadv_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_preadv_trampoline_addr(SB)/8, $libc_preadv_trampoline<>(SB)\n\nTEXT libc_writev_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_writev(SB)\nGLOBL\t·libc_writev_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_writev_trampoline_addr(SB)/8, $libc_writev_trampoline<>(SB)\n\nTEXT libc_pwritev_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pwritev(SB)\nGLOBL\t·libc_pwritev_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pwritev_trampoline_addr(SB)/8, $libc_pwritev_trampoline<>(SB)\n\nTEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstat(SB)\nGLOBL\t·libc_fstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstat_trampoline_addr(SB)/8, $libc_fstat_trampoline<>(SB)\n\nTEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatat(SB)\nGLOBL\t·libc_fstatat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatat_trampoline_addr(SB)/8, $libc_fstatat_trampoline<>(SB)\n\nTEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatfs(SB)\nGLOBL\t·libc_fstatfs_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatfs_trampoline_addr(SB)/8, $libc_fstatfs_trampoline<>(SB)\n\nTEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getfsstat(SB)\nGLOBL\t·libc_getfsstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getfsstat_trampoline_addr(SB)/8, $libc_getfsstat_trampoline<>(SB)\n\nTEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lstat(SB)\nGLOBL\t·libc_lstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lstat_trampoline_addr(SB)/8, $libc_lstat_trampoline<>(SB)\n\nTEXT libc_ptrace_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ptrace(SB)\nGLOBL\t·libc_ptrace_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ptrace_trampoline_addr(SB)/8, $libc_ptrace_trampoline<>(SB)\n\nTEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_stat(SB)\nGLOBL\t·libc_stat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_stat_trampoline_addr(SB)/8, $libc_stat_trampoline<>(SB)\n\nTEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_statfs(SB)\nGLOBL\t·libc_statfs_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_statfs_trampoline_addr(SB)/8, $libc_statfs_trampoline<>(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go",
    "content": "// go run mksyscall.go -dragonfly -tags dragonfly,amd64 syscall_bsd.go syscall_dragonfly.go syscall_dragonfly_amd64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build dragonfly && amd64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe() (r int, w int, err error) {\n\tr0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)\n\tr = int(r0)\n\tw = int(r1)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (r int, w int, err error) {\n\tr0, r1, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tr = int(r0)\n\tw = int(r1)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc extpread(fd int, p []byte, flags int, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTPREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(offset), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc extpwrite(fd int, p []byte, flags int, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTPWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(offset), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdtablesize() (size int) {\n\tr0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)\n\tsize = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(fd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(whence), 0, 0)\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Undelete(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), 0, 0)\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go",
    "content": "// go run mksyscall.go -l32 -tags freebsd,386 syscall_bsd.go syscall_freebsd.go syscall_freebsd_386.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build freebsd && 386\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptrace(request int, pid int, addr uintptr, data int) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptracePtr(request int, pid int, addr unsafe.Pointer, data int) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc CapEnter() (err error) {\n\t_, _, e1 := Syscall(SYS_CAP_ENTER, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc capRightsGet(version int, fd int, rightsp *CapRights) (err error) {\n\t_, _, e1 := Syscall(SYS___CAP_RIGHTS_GET, uintptr(version), uintptr(fd), uintptr(unsafe.Pointer(rightsp)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc capRightsLimit(fd int, rightsp *CapRights) (err error) {\n\t_, _, e1 := Syscall(SYS_CAP_RIGHTS_LIMIT, uintptr(fd), uintptr(unsafe.Pointer(rightsp)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32), uintptr(advice))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), uintptr(length>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getdirentries(fd int, buf []byte, basep *uint64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdtablesize() (size int) {\n\tr0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)\n\tsize = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(fd int, path string, mode uint32, dev uint64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), uintptr(dev>>32), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(fdat), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(whence), 0, 0)\n\tnewoffset = int64(int64(r1)<<32 | int64(r0))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Undelete(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos), uintptr(pos>>32), 0, 0)\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go",
    "content": "// go run mksyscall.go -tags freebsd,amd64 syscall_bsd.go syscall_freebsd.go syscall_freebsd_amd64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build freebsd && amd64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptrace(request int, pid int, addr uintptr, data int) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptracePtr(request int, pid int, addr unsafe.Pointer, data int) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc CapEnter() (err error) {\n\t_, _, e1 := Syscall(SYS_CAP_ENTER, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc capRightsGet(version int, fd int, rightsp *CapRights) (err error) {\n\t_, _, e1 := Syscall(SYS___CAP_RIGHTS_GET, uintptr(version), uintptr(fd), uintptr(unsafe.Pointer(rightsp)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc capRightsLimit(fd int, rightsp *CapRights) (err error) {\n\t_, _, e1 := Syscall(SYS_CAP_RIGHTS_LIMIT, uintptr(fd), uintptr(unsafe.Pointer(rightsp)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getdirentries(fd int, buf []byte, basep *uint64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdtablesize() (size int) {\n\tr0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)\n\tsize = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(fd int, path string, mode uint32, dev uint64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(fdat), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Undelete(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go",
    "content": "// go run mksyscall.go -l32 -arm -tags freebsd,arm syscall_bsd.go syscall_freebsd.go syscall_freebsd_arm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build freebsd && arm\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptrace(request int, pid int, addr uintptr, data int) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptracePtr(request int, pid int, addr unsafe.Pointer, data int) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc CapEnter() (err error) {\n\t_, _, e1 := Syscall(SYS_CAP_ENTER, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc capRightsGet(version int, fd int, rightsp *CapRights) (err error) {\n\t_, _, e1 := Syscall(SYS___CAP_RIGHTS_GET, uintptr(version), uintptr(fd), uintptr(unsafe.Pointer(rightsp)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc capRightsLimit(fd int, rightsp *CapRights) (err error) {\n\t_, _, e1 := Syscall(SYS_CAP_RIGHTS_LIMIT, uintptr(fd), uintptr(unsafe.Pointer(rightsp)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall9(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getdirentries(fd int, buf []byte, basep *uint64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdtablesize() (size int) {\n\tr0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)\n\tsize = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(fd int, path string, mode uint32, dev uint64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, uintptr(dev), uintptr(dev>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(fdat), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0)\n\tnewoffset = int64(int64(r1)<<32 | int64(r0))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Undelete(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0)\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go",
    "content": "// go run mksyscall.go -tags freebsd,arm64 syscall_bsd.go syscall_freebsd.go syscall_freebsd_arm64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build freebsd && arm64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptrace(request int, pid int, addr uintptr, data int) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptracePtr(request int, pid int, addr unsafe.Pointer, data int) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc CapEnter() (err error) {\n\t_, _, e1 := Syscall(SYS_CAP_ENTER, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc capRightsGet(version int, fd int, rightsp *CapRights) (err error) {\n\t_, _, e1 := Syscall(SYS___CAP_RIGHTS_GET, uintptr(version), uintptr(fd), uintptr(unsafe.Pointer(rightsp)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc capRightsLimit(fd int, rightsp *CapRights) (err error) {\n\t_, _, e1 := Syscall(SYS_CAP_RIGHTS_LIMIT, uintptr(fd), uintptr(unsafe.Pointer(rightsp)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getdirentries(fd int, buf []byte, basep *uint64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdtablesize() (size int) {\n\tr0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)\n\tsize = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(fd int, path string, mode uint32, dev uint64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(fdat), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Undelete(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_freebsd_riscv64.go",
    "content": "// go run mksyscall.go -tags freebsd,riscv64 syscall_bsd.go syscall_freebsd.go syscall_freebsd_riscv64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build freebsd && riscv64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptrace(request int, pid int, addr uintptr, data int) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptracePtr(request int, pid int, addr unsafe.Pointer, data int) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc CapEnter() (err error) {\n\t_, _, e1 := Syscall(SYS_CAP_ENTER, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc capRightsGet(version int, fd int, rightsp *CapRights) (err error) {\n\t_, _, e1 := Syscall(SYS___CAP_RIGHTS_GET, uintptr(version), uintptr(fd), uintptr(unsafe.Pointer(rightsp)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc capRightsLimit(fd int, rightsp *CapRights) (err error) {\n\t_, _, e1 := Syscall(SYS_CAP_RIGHTS_LIMIT, uintptr(fd), uintptr(unsafe.Pointer(rightsp)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getdirentries(fd int, buf []byte, basep *uint64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdtablesize() (size int) {\n\tr0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)\n\tsize = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(fd int, path string, mode uint32, dev uint64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(fdat), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Undelete(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_illumos_amd64.go",
    "content": "// go run mksyscall_solaris.go -illumos -tags illumos,amd64 syscall_illumos.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build illumos && amd64\n\npackage unix\n\nimport (\n\t\"unsafe\"\n)\n\n//go:cgo_import_dynamic libc_readv readv \"libc.so\"\n//go:cgo_import_dynamic libc_preadv preadv \"libc.so\"\n//go:cgo_import_dynamic libc_writev writev \"libc.so\"\n//go:cgo_import_dynamic libc_pwritev pwritev \"libc.so\"\n//go:cgo_import_dynamic libc_accept4 accept4 \"libsocket.so\"\n\n//go:linkname procreadv libc_readv\n//go:linkname procpreadv libc_preadv\n//go:linkname procwritev libc_writev\n//go:linkname procpwritev libc_pwritev\n//go:linkname procaccept4 libc_accept4\n\nvar (\n\tprocreadv,\n\tprocpreadv,\n\tprocwritev,\n\tprocpwritev,\n\tprocaccept4 syscallFunc\n)\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc readv(fd int, iovs []Iovec) (n int, err error) {\n\tvar _p0 *Iovec\n\tif len(iovs) > 0 {\n\t\t_p0 = &iovs[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procreadv)), 3, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(iovs)), 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc preadv(fd int, iovs []Iovec, off int64) (n int, err error) {\n\tvar _p0 *Iovec\n\tif len(iovs) > 0 {\n\t\t_p0 = &iovs[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procpreadv)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(iovs)), uintptr(off), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writev(fd int, iovs []Iovec) (n int, err error) {\n\tvar _p0 *Iovec\n\tif len(iovs) > 0 {\n\t\t_p0 = &iovs[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procwritev)), 3, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(iovs)), 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwritev(fd int, iovs []Iovec, off int64) (n int, err error) {\n\tvar _p0 *Iovec\n\tif len(iovs) > 0 {\n\t\t_p0 = &iovs[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procpwritev)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(iovs)), uintptr(off), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procaccept4)), 4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_linux.go",
    "content": "// Code generated by mkmerge; DO NOT EDIT.\n\n//go:build linux\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc FanotifyInit(flags uint, event_f_flags uint) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_FANOTIFY_INIT, uintptr(flags), uintptr(event_f_flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fchmodat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fchmodat2(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT2, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc openat2(dirfd int, path string, open_how *OpenHow, size int) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT2, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(open_how)), uintptr(size), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Waitid(idType int, id int, info *Siginfo, options int, rusage *Rusage) (err error) {\n\t_, _, e1 := Syscall6(SYS_WAITID, uintptr(idType), uintptr(id), uintptr(unsafe.Pointer(info)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlJoin(cmd int, arg2 string) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(arg2)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(arg3)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(arg4)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(payload) > 0 {\n\t\t_p0 = unsafe.Pointer(&payload[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlRestrictKeyringByType(cmd int, arg2 int, keyType string, restriction string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(keyType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(restriction)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlRestrictKeyring(cmd int, arg2 int) (err error) {\n\t_, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptracePtr(request int, pid int, addr uintptr, data unsafe.Pointer) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(arg)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(source)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(target)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 *byte\n\t_p2, err = BytePtrFromString(fstype)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mountSetattr(dirfd int, pathname string, flags uint, attr *MountAttr, size uintptr) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(pathname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MOUNT_SETATTR, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(unsafe.Pointer(attr)), uintptr(size), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Acct(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(keyType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(description)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(payload) > 0 {\n\t\t_p2 = unsafe.Pointer(&payload[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0)\n\tid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtimex(buf *Timex) (state int, err error) {\n\tr0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0)\n\tstate = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Capget(hdr *CapUserHeader, data *CapUserData) (err error) {\n\t_, _, e1 := RawSyscall(SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Capset(hdr *CapUserHeader, data *CapUserData) (err error) {\n\t_, _, e1 := RawSyscall(SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockAdjtime(clockid int32, buf *Timex) (state int, err error) {\n\tr0, _, e1 := Syscall(SYS_CLOCK_ADJTIME, uintptr(clockid), uintptr(unsafe.Pointer(buf)), 0)\n\tstate = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGetres(clockid int32, res *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockSettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_SETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) {\n\t_, _, e1 := Syscall6(SYS_CLOCK_NANOSLEEP, uintptr(clockid), uintptr(flags), uintptr(unsafe.Pointer(request)), uintptr(unsafe.Pointer(remain)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc CloseRange(first uint, last uint, flags uint) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE_RANGE, uintptr(first), uintptr(last), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc DeleteModule(name string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_DELETE_MODULE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(oldfd int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(oldfd int, newfd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollCreate1(flag int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Eventfd(initval uint, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fdatasync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc FinitModule(fd int, params string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(params)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FINIT_MODULE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flistxattr(fd int, dest []byte) (sz int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p0 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest)))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fremovexattr(fd int, attr string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsmount(fd int, flags int, mountAttrs int) (fsfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_FSMOUNT, uintptr(fd), uintptr(flags), uintptr(mountAttrs))\n\tfsfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsopen(fsName string, flags int) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(fsName)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_FSOPEN, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fspick(dirfd int, pathName string, flags int) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(pathName)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_FSPICK, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fsconfig(fd int, cmd uint, key *byte, value *byte, aux int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FSCONFIG, uintptr(fd), uintptr(cmd), uintptr(unsafe.Pointer(key)), uintptr(unsafe.Pointer(value)), uintptr(aux), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettid() (tid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0)\n\ttid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getxattr(path string, attr string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p2 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InitModule(moduleImage []byte, params string) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(moduleImage) > 0 {\n\t\t_p0 = unsafe.Pointer(&moduleImage[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(params)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_INIT_MODULE, uintptr(_p0), uintptr(len(moduleImage)), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(pathname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask))\n\twatchdesc = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InotifyInit1(flags int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0)\n\tsuccess = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, sig syscall.Signal) (err error) {\n\t_, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Klogctl(typ int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lgetxattr(path string, attr string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p2 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listxattr(path string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Llistxattr(path string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lremovexattr(path string, attr string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lsetxattr(path string, attr string, data []byte, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(data) > 0 {\n\t\t_p2 = unsafe.Pointer(&data[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc MemfdCreate(name string, flags int) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_MEMFD_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc MoveMount(fromDirfd int, fromPathName string, toDirfd int, toPathName string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(fromPathName)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(toPathName)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MOVE_MOUNT, uintptr(fromDirfd), uintptr(unsafe.Pointer(_p0)), uintptr(toDirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc OpenTree(dfd int, fileName string, flags uint) (r int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(fileName)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN_TREE, uintptr(dfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tr = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc PivotRoot(newroot string, putold string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(newroot)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(putold)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pselect6(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *sigset_argpack) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Removexattr(path string, attr string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(keyType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(description)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 *byte\n\t_p2, err = BytePtrFromString(callback)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0)\n\tid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setdomainname(p []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sethostname(p []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setns(fd int, nstype int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setxattr(path string, attr string, data []byte, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(data) > 0 {\n\t\t_p2 = unsafe.Pointer(&data[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc signalfd(fd int, sigmask *Sigset_t, maskSize uintptr, flags int) (newfd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(sigmask)), uintptr(maskSize), uintptr(flags), 0, 0)\n\tnewfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() {\n\tSyscallNoError(SYS_SYNC, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Syncfs(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sysinfo(info *Sysinfo_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc TimerfdCreate(clockid int, flags int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_TIMERFD_CREATE, uintptr(clockid), uintptr(flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc TimerfdGettime(fd int, currValue *ItimerSpec) (err error) {\n\t_, _, e1 := RawSyscall(SYS_TIMERFD_GETTIME, uintptr(fd), uintptr(unsafe.Pointer(currValue)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc TimerfdSettime(fd int, flags int, newValue *ItimerSpec, oldValue *ItimerSpec) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_TIMERFD_SETTIME, uintptr(fd), uintptr(flags), uintptr(unsafe.Pointer(newValue)), uintptr(unsafe.Pointer(oldValue)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {\n\t_, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Times(tms *Tms) (ticks uintptr, err error) {\n\tr0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0)\n\tticks = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(mask int) (oldmask int) {\n\tr0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Uname(buf *Utsname) (err error) {\n\t_, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(target string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(target)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unshare(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc exitThread(code int) (err error) {\n\t_, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc readv(fd int, iovs []Iovec) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(iovs) > 0 {\n\t\t_p0 = unsafe.Pointer(&iovs[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READV, uintptr(fd), uintptr(_p0), uintptr(len(iovs)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writev(fd int, iovs []Iovec) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(iovs) > 0 {\n\t\t_p0 = unsafe.Pointer(&iovs[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITEV, uintptr(fd), uintptr(_p0), uintptr(len(iovs)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc preadv(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(iovs) > 0 {\n\t\t_p0 = unsafe.Pointer(&iovs[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREADV, uintptr(fd), uintptr(_p0), uintptr(len(iovs)), uintptr(offs_l), uintptr(offs_h), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwritev(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(iovs) > 0 {\n\t\t_p0 = unsafe.Pointer(&iovs[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITEV, uintptr(fd), uintptr(_p0), uintptr(len(iovs)), uintptr(offs_l), uintptr(offs_h), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc preadv2(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr, flags int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(iovs) > 0 {\n\t\t_p0 = unsafe.Pointer(&iovs[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREADV2, uintptr(fd), uintptr(_p0), uintptr(len(iovs)), uintptr(offs_l), uintptr(offs_h), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwritev2(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr, flags int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(iovs) > 0 {\n\t\t_p0 = unsafe.Pointer(&iovs[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITEV2, uintptr(fd), uintptr(_p0), uintptr(len(iovs)), uintptr(offs_l), uintptr(offs_h), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mremap(oldaddr uintptr, oldlength uintptr, newlength uintptr, flags int, newaddr uintptr) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MREMAP, uintptr(oldaddr), uintptr(oldlength), uintptr(newlength), uintptr(flags), uintptr(newaddr), 0)\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, advice int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc faccessat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat2(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT2, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc nameToHandleAt(dirFD int, pathname string, fh *fileHandle, mountID *_C_int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(pathname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_NAME_TO_HANDLE_AT, uintptr(dirFD), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(fh)), uintptr(unsafe.Pointer(mountID)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc openByHandleAt(mountFD int, fh *fileHandle, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_OPEN_BY_HANDLE_AT, uintptr(mountFD), uintptr(unsafe.Pointer(fh)), uintptr(flags))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ProcessVMReadv(pid int, localIov []Iovec, remoteIov []RemoteIovec, flags uint) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(localIov) > 0 {\n\t\t_p0 = unsafe.Pointer(&localIov[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(remoteIov) > 0 {\n\t\t_p1 = unsafe.Pointer(&remoteIov[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PROCESS_VM_READV, uintptr(pid), uintptr(_p0), uintptr(len(localIov)), uintptr(_p1), uintptr(len(remoteIov)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ProcessVMWritev(pid int, localIov []Iovec, remoteIov []RemoteIovec, flags uint) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(localIov) > 0 {\n\t\t_p0 = unsafe.Pointer(&localIov[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(remoteIov) > 0 {\n\t\t_p1 = unsafe.Pointer(&remoteIov[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PROCESS_VM_WRITEV, uintptr(pid), uintptr(_p0), uintptr(len(localIov)), uintptr(_p1), uintptr(len(remoteIov)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc PidfdOpen(pid int, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_PIDFD_OPEN, uintptr(pid), uintptr(flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc PidfdGetfd(pidfd int, targetfd int, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_PIDFD_GETFD, uintptr(pidfd), uintptr(targetfd), uintptr(flags))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc PidfdSendSignal(pidfd int, sig Signal, info *Siginfo, flags int) (err error) {\n\t_, _, e1 := Syscall6(SYS_PIDFD_SEND_SIGNAL, uintptr(pidfd), uintptr(sig), uintptr(unsafe.Pointer(info)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc shmat(id int, addr uintptr, flag int) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall(SYS_SHMAT, uintptr(id), uintptr(addr), uintptr(flag))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc shmctl(id int, cmd int, buf *SysvShmDesc) (result int, err error) {\n\tr0, _, e1 := Syscall(SYS_SHMCTL, uintptr(id), uintptr(cmd), uintptr(unsafe.Pointer(buf)))\n\tresult = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc shmdt(addr uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_SHMDT, uintptr(addr), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc shmget(key int, size int, flag int) (id int, err error) {\n\tr0, _, e1 := Syscall(SYS_SHMGET, uintptr(key), uintptr(size), uintptr(flag))\n\tid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getitimer(which int, currValue *Itimerval) (err error) {\n\t_, _, e1 := Syscall(SYS_GETITIMER, uintptr(which), uintptr(unsafe.Pointer(currValue)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setitimer(which int, newValue *Itimerval, oldValue *Itimerval) (err error) {\n\t_, _, e1 := Syscall(SYS_SETITIMER, uintptr(which), uintptr(unsafe.Pointer(newValue)), uintptr(unsafe.Pointer(oldValue)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc rtSigprocmask(how int, set *Sigset_t, oldset *Sigset_t, sigsetsize uintptr) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_RT_SIGPROCMASK, uintptr(how), uintptr(unsafe.Pointer(set)), uintptr(unsafe.Pointer(oldset)), uintptr(sigsetsize), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) {\n\tRawSyscallNoError(SYS_GETRESUID, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid)))\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) {\n\tRawSyscallNoError(SYS_GETRESGID, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid)))\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc schedSetattr(pid int, attr *SchedAttr, flags uint) (err error) {\n\t_, _, e1 := Syscall(SYS_SCHED_SETATTR, uintptr(pid), uintptr(unsafe.Pointer(attr)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc schedGetattr(pid int, attr *SchedAttr, size uint, flags uint) (err error) {\n\t_, _, e1 := Syscall6(SYS_SCHED_GETATTR, uintptr(pid), uintptr(unsafe.Pointer(attr)), uintptr(size), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Cachestat(fd uint, crange *CachestatRange, cstat *Cachestat_t, flags uint) (err error) {\n\t_, _, e1 := Syscall6(SYS_CACHESTAT, uintptr(fd), uintptr(unsafe.Pointer(crange)), uintptr(unsafe.Pointer(cstat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mseal(b []byte, flags uint) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSEAL, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setMemPolicy(mode int, mask *CPUSet, size int) (err error) {\n\t_, _, e1 := Syscall(SYS_SET_MEMPOLICY, uintptr(mode), uintptr(unsafe.Pointer(mask)), uintptr(size))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_linux_386.go",
    "content": "// go run mksyscall.go -l32 -tags linux,386 syscall_linux.go syscall_linux_386.go syscall_linux_alarm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && 386\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(mask>>32), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(off>>32), uintptr(len), uintptr(len>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(int64(r1)<<32 | int64(r0))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64_64, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32), uintptr(advice))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN32, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE64, uintptr(fd), uintptr(length), uintptr(length>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID32, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID32, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID32, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID32, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ioperm(from int, num int, on int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Iopl(level int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN32, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID32, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID32, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(off>>32), uintptr(n), uintptr(n>>32), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS32, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS32, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getrlimit(resource int, rlim *rlimit32) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tr0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0)\n\ttt = Time_t(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Alarm(seconds uint) (remaining uint, err error) {\n\tr0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0)\n\tremaining = uint(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go",
    "content": "// go run mksyscall.go -tags linux,amd64 syscall_linux.go syscall_linux_amd64.go syscall_linux_alarm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && amd64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ioperm(from int, num int, on int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Iopl(level int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc MemfdSecret(flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_MEMFD_SECRET, uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(cmdline)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Alarm(seconds uint) (remaining uint, err error) {\n\tr0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0)\n\tremaining = uint(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go",
    "content": "// go run mksyscall.go -l32 -arm -tags linux,arm syscall_linux.go syscall_linux_arm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && arm\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(mask>>32), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(off>>32), uintptr(len), uintptr(len>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(int64(r1)<<32 | int64(r0))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS32, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS32, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, flags int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(flags), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN32, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID32, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID32, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID32, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID32, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN32, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID32, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID32, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FTRUNCATE64, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getrlimit(resource int, rlim *rlimit32) (err error) {\n\t_, _, e1 := RawSyscall(SYS_UGETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc armSyncFileRange(fd int, flags int, off int64, n int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_ARM_SYNC_FILE_RANGE, uintptr(fd), uintptr(flags), uintptr(off), uintptr(off>>32), uintptr(n), uintptr(n>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(cmdline)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go",
    "content": "// go run mksyscall.go -tags linux,arm64 syscall_linux.go syscall_linux_arm64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && arm64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_PWAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc MemfdSecret(flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_MEMFD_SECRET, uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(cmdline)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_linux_loong64.go",
    "content": "// go run mksyscall.go -tags linux,loong64 syscall_linux.go syscall_linux_loong64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && loong64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_PWAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(cmdline)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go",
    "content": "// go run mksyscall.go -b32 -arm -tags linux,mips syscall_linux.go syscall_linux_mipsx.go syscall_linux_alarm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && mips\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask>>32), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off>>32), uintptr(off), uintptr(len>>32), uintptr(len))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(int64(r0)<<32 | int64(r1))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall9(SYS_FADVISE64, uintptr(fd), 0, uintptr(offset>>32), uintptr(offset), uintptr(length>>32), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FTRUNCATE64, uintptr(fd), 0, uintptr(length>>32), uintptr(length), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset>>32), uintptr(offset))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset>>32), uintptr(offset))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall9(SYS_SYNC_FILE_RANGE, uintptr(fd), 0, uintptr(off>>32), uintptr(off), uintptr(n>>32), uintptr(n), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length>>32), uintptr(length), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ioperm(from int, num int, on int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Iopl(level int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tr0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0)\n\ttt = Time_t(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getrlimit(resource int, rlim *rlimit32) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Alarm(seconds uint) (remaining uint, err error) {\n\tr0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0)\n\tremaining = uint(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go",
    "content": "// go run mksyscall.go -tags linux,mips64 syscall_linux.go syscall_linux_mips64x.go syscall_linux_alarm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && mips64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstat(fd int, st *stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(st)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstatat(dirfd int, path string, st *stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc lstat(path string, st *stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc stat(path string, st *stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Alarm(seconds uint) (remaining uint, err error) {\n\tr0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0)\n\tremaining = uint(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go",
    "content": "// go run mksyscall.go -tags linux,mips64le syscall_linux.go syscall_linux_mips64x.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && mips64le\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstat(fd int, st *stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(st)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstatat(dirfd int, path string, st *stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc lstat(path string, st *stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc stat(path string, st *stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go",
    "content": "// go run mksyscall.go -l32 -arm -tags linux,mipsle syscall_linux.go syscall_linux_mipsx.go syscall_linux_alarm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && mipsle\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(mask>>32), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(off>>32), uintptr(len), uintptr(len>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(int64(r1)<<32 | int64(r0))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall9(SYS_FADVISE64, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FTRUNCATE64, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall9(SYS_SYNC_FILE_RANGE, uintptr(fd), 0, uintptr(off), uintptr(off>>32), uintptr(n), uintptr(n>>32), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ioperm(from int, num int, on int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Iopl(level int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tr0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0)\n\ttt = Time_t(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getrlimit(resource int, rlim *rlimit32) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Alarm(seconds uint) (remaining uint, err error) {\n\tr0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0)\n\tremaining = uint(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_linux_ppc.go",
    "content": "// go run mksyscall.go -b32 -tags linux,ppc syscall_linux.go syscall_linux_ppc.go syscall_linux_alarm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && ppc\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask>>32), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off>>32), uintptr(off), uintptr(len>>32), uintptr(len))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(int64(r0)<<32 | int64(r1))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE64, uintptr(fd), uintptr(length>>32), uintptr(length))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ioperm(from int, num int, on int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Iopl(level int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset>>32), uintptr(offset), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset>>32), uintptr(offset), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), uintptr(length>>32), uintptr(length))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tr0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0)\n\ttt = Time_t(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getrlimit(resource int, rlim *rlimit32) (err error) {\n\t_, _, e1 := RawSyscall(SYS_UGETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc syncFileRange2(fd int, flags int, off int64, n int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE2, uintptr(fd), uintptr(flags), uintptr(off>>32), uintptr(off), uintptr(n>>32), uintptr(n))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(cmdline)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Alarm(seconds uint) (remaining uint, err error) {\n\tr0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0)\n\tremaining = uint(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go",
    "content": "// go run mksyscall.go -tags linux,ppc64 syscall_linux.go syscall_linux_ppc64x.go syscall_linux_alarm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && ppc64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_UGETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ioperm(from int, num int, on int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Iopl(level int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tr0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0)\n\ttt = Time_t(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc syncFileRange2(fd int, flags int, off int64, n int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE2, uintptr(fd), uintptr(flags), uintptr(off), uintptr(n), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(cmdline)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Alarm(seconds uint) (remaining uint, err error) {\n\tr0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0)\n\tremaining = uint(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go",
    "content": "// go run mksyscall.go -tags linux,ppc64le syscall_linux.go syscall_linux_ppc64x.go syscall_linux_alarm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && ppc64le\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_UGETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ioperm(from int, num int, on int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Iopl(level int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tr0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0)\n\ttt = Time_t(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc syncFileRange2(fd int, flags int, off int64, n int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE2, uintptr(fd), uintptr(flags), uintptr(off), uintptr(n), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(cmdline)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Alarm(seconds uint) (remaining uint, err error) {\n\tr0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0)\n\tremaining = uint(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go",
    "content": "// go run mksyscall.go -tags linux,riscv64 syscall_linux.go syscall_linux_riscv64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && riscv64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_PWAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc MemfdSecret(flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_MEMFD_SECRET, uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(cmdline)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc riscvHWProbe(pairs []RISCVHWProbePairs, cpuCount uintptr, cpus *CPUSet, flags uint) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(pairs) > 0 {\n\t\t_p0 = unsafe.Pointer(&pairs[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_RISCV_HWPROBE, uintptr(_p0), uintptr(len(pairs)), uintptr(cpuCount), uintptr(unsafe.Pointer(cpus)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go",
    "content": "// go run mksyscall.go -tags linux,s390x syscall_linux.go syscall_linux_s390x.go syscall_linux_alarm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && s390x\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(cmdline)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Alarm(seconds uint) (remaining uint, err error) {\n\tr0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0)\n\tremaining = uint(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go",
    "content": "// go run mksyscall.go -tags linux,sparc64 syscall_linux.go syscall_linux_sparc64.go syscall_linux_alarm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && sparc64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Alarm(seconds uint) (remaining uint, err error) {\n\tr0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0)\n\tremaining = uint(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go",
    "content": "// go run mksyscall.go -l32 -netbsd -tags netbsd,386 syscall_bsd.go syscall_netbsd.go syscall_netbsd_386.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build netbsd && 386\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(from int, to int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP3, uintptr(from), uintptr(to), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall9(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), 0, uintptr(length), uintptr(length>>32), uintptr(advice), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatvfs1(fd int, buf *Statvfs_t, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATVFS1, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0)\n\tnewoffset = int64(int64(r1)<<32 | int64(r0))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statvfs1(path string, buf *Statvfs_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATVFS1, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0)\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mremapNetBSD(oldp uintptr, oldsize uintptr, newp uintptr, newsize uintptr, flags int) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MREMAP, uintptr(oldp), uintptr(oldsize), uintptr(newp), uintptr(newsize), uintptr(flags), 0)\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go",
    "content": "// go run mksyscall.go -netbsd -tags netbsd,amd64 syscall_bsd.go syscall_netbsd.go syscall_netbsd_amd64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build netbsd && amd64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(from int, to int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP3, uintptr(from), uintptr(to), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), 0, uintptr(length), uintptr(advice))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatvfs1(fd int, buf *Statvfs_t, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATVFS1, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(whence), 0, 0)\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statvfs1(path string, buf *Statvfs_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATVFS1, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), 0, 0)\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mremapNetBSD(oldp uintptr, oldsize uintptr, newp uintptr, newsize uintptr, flags int) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MREMAP, uintptr(oldp), uintptr(oldsize), uintptr(newp), uintptr(newsize), uintptr(flags), 0)\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go",
    "content": "// go run mksyscall.go -l32 -netbsd -arm -tags netbsd,arm syscall_bsd.go syscall_netbsd.go syscall_netbsd_arm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build netbsd && arm\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(from int, to int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP3, uintptr(from), uintptr(to), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall9(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), 0, uintptr(length), uintptr(length>>32), uintptr(advice), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatvfs1(fd int, buf *Statvfs_t, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATVFS1, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0)\n\tnewoffset = int64(int64(r1)<<32 | int64(r0))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statvfs1(path string, buf *Statvfs_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATVFS1, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0)\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mremapNetBSD(oldp uintptr, oldsize uintptr, newp uintptr, newsize uintptr, flags int) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MREMAP, uintptr(oldp), uintptr(oldsize), uintptr(newp), uintptr(newsize), uintptr(flags), 0)\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go",
    "content": "// go run mksyscall.go -netbsd -tags netbsd,arm64 syscall_bsd.go syscall_netbsd.go syscall_netbsd_arm64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build netbsd && arm64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(from int, to int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP3, uintptr(from), uintptr(to), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), 0, uintptr(length), uintptr(advice))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatvfs1(fd int, buf *Statvfs_t, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATVFS1, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(whence), 0, 0)\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statvfs1(path string, buf *Statvfs_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATVFS1, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), 0, 0)\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mremapNetBSD(oldp uintptr, oldsize uintptr, newp uintptr, newsize uintptr, flags int) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MREMAP, uintptr(oldp), uintptr(oldsize), uintptr(newp), uintptr(newsize), uintptr(flags), 0)\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go",
    "content": "// go run mksyscall.go -l32 -openbsd -libc -tags openbsd,386 syscall_bsd.go syscall_openbsd.go syscall_openbsd_386.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build openbsd && 386\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgroups getgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgroups setgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_wait4_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_wait4 wait4 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_accept_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_accept accept \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_bind_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_bind bind \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_connect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_connect connect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socket_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socket socket \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockopt getsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsockopt setsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpeername_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpeername getpeername \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockname_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockname getsockname \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shutdown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shutdown shutdown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socketpair_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socketpair socketpair \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvfrom_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvfrom recvfrom \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendto_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendto sendto \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvmsg recvmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendmsg sendmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kevent_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kevent kevent \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimes utimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_futimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_futimes futimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_poll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_poll poll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_madvise_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_madvise madvise \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlock mlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlockall mlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mprotect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mprotect mprotect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_msync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_msync msync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlock munlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlockall munlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_pipe2_trampoline_addr, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pipe2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pipe2 pipe2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getdents_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getdents_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getdents getdents \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getcwd_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getcwd getcwd \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) {\n\tsyscall_rawSyscall(libc_getresuid_trampoline_addr, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid)))\n\treturn\n}\n\nvar libc_getresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresuid getresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) {\n\tsyscall_rawSyscall(libc_getresgid_trampoline_addr, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid)))\n\treturn\n}\n\nvar libc_getresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresgid getresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ioctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ioctl ioctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sysctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sysctl sysctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fcntl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fcntl fcntl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_ppoll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ppoll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ppoll ppoll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_access_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_access access \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_adjtime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_adjtime adjtime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chdir chdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chflags chflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chmod chmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chown chown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chroot_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chroot chroot \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_clock_gettime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_clock_gettime clock_gettime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_close_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_close close \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup dup \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup2 dup2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(from int, to int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup3_trampoline_addr, uintptr(from), uintptr(to), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup3_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup3 dup3 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tsyscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0)\n\treturn\n}\n\nvar libc_exit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_exit exit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_faccessat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_faccessat faccessat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchdir fchdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchflags fchflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmod fchmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmodat fchmodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchown fchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchownat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchownat fchownat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_flock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_flock flock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fpathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fpathconf fpathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstat fstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fstatat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatat fstatat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstatfs_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatfs fstatfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fsync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fsync fsync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ftruncate_trampoline_addr, uintptr(fd), uintptr(length), uintptr(length>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ftruncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ftruncate ftruncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\nvar libc_getegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getegid getegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_geteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_geteuid geteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\nvar libc_getgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgid getgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgid getpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\nvar libc_getpgrp_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgrp getpgrp \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\nvar libc_getpid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpid getpid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\nvar libc_getppid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getppid getppid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpriority getpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrlimit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrlimit getrlimit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrtable() (rtable int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getrtable_trampoline_addr, 0, 0, 0)\n\trtable = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrtable getrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrusage_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrusage getrusage \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsid getsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_gettimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_gettimeofday gettimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_getuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getuid getuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := syscall_syscall(libc_issetugid_trampoline_addr, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\nvar libc_issetugid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_issetugid issetugid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kill_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kill kill \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kqueue_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kqueue kqueue \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lchown lchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_link_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_link link \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_linkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_linkat linkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_listen_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_listen listen \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lstat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lstat lstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdir mkdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdirat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdirat mkdirat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifo_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifo mkfifo \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifoat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifoat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifoat mkfifoat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknod mknod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mknodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknodat mknodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(fsType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(dir)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mount mount \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_nanosleep_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_nanosleep nanosleep \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_open_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_open_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_open open \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_openat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_openat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_openat openat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_pathconf_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pathconf pathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pread_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pread_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pread pread \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pwrite_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pwrite_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pwrite pwrite \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_read_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_read read \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_readlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlink readlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_readlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlinkat readlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rename_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rename_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rename rename \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_renameat_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_renameat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_renameat renameat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_revoke_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_revoke_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_revoke revoke \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rmdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rmdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rmdir rmdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, r1, e1 := syscall_syscall6(libc_lseek_trampoline_addr, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(whence), 0, 0)\n\tnewoffset = int64(int64(r1)<<32 | int64(r0))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lseek_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lseek lseek \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_select_trampoline_addr, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_select_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_select select \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setegid setegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_seteuid_trampoline_addr, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_seteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_seteuid seteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgid_trampoline_addr, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgid setgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_setlogin_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setlogin_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setlogin setlogin \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setpgid_trampoline_addr, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpgid setpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_setpriority_trampoline_addr, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpriority setpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setregid_trampoline_addr, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setregid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setregid setregid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setreuid_trampoline_addr, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setreuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setreuid setreuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setresgid_trampoline_addr, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setresgid setresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setresuid_trampoline_addr, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setresuid setresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setrtable(rtable int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setrtable_trampoline_addr, uintptr(rtable), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setrtable setrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsid setsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_settimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_settimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_settimeofday settimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setuid_trampoline_addr, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setuid setuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_stat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_stat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_stat stat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_statfs_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_statfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_statfs statfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlink symlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlinkat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlinkat symlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := syscall_syscall(libc_sync_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sync sync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_truncate_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_truncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_truncate truncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := syscall_syscall(libc_umask_trampoline_addr, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\nvar libc_umask_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_umask umask \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlink unlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlinkat unlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unmount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unmount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unmount unmount \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_write_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_write write \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := syscall_syscall9(libc_mmap_trampoline_addr, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos), uintptr(pos>>32), 0, 0)\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mmap mmap \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_munmap_trampoline_addr, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munmap munmap \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getfsstat_trampoline_addr, uintptr(unsafe.Pointer(stat)), uintptr(bufsize), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getfsstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getfsstat getfsstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_utimensat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimensat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimensat utimensat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pledge(promises *byte, execpromises *byte) (err error) {\n\t_, _, e1 := syscall_syscall(libc_pledge_trampoline_addr, uintptr(unsafe.Pointer(promises)), uintptr(unsafe.Pointer(execpromises)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pledge_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pledge pledge \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc unveil(path *byte, flags *byte) (err error) {\n\t_, _, e1 := syscall_syscall(libc_unveil_trampoline_addr, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(flags)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unveil_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unveil unveil \"libc.so\"\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.s",
    "content": "// go run mkasm.go openbsd 386\n// Code generated by the command above; DO NOT EDIT.\n\n#include \"textflag.h\"\n\nTEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgroups(SB)\nGLOBL\t·libc_getgroups_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getgroups_trampoline_addr(SB)/4, $libc_getgroups_trampoline<>(SB)\n\nTEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgroups(SB)\nGLOBL\t·libc_setgroups_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setgroups_trampoline_addr(SB)/4, $libc_setgroups_trampoline<>(SB)\n\nTEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_wait4(SB)\nGLOBL\t·libc_wait4_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_wait4_trampoline_addr(SB)/4, $libc_wait4_trampoline<>(SB)\n\nTEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_accept(SB)\nGLOBL\t·libc_accept_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_accept_trampoline_addr(SB)/4, $libc_accept_trampoline<>(SB)\n\nTEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_bind(SB)\nGLOBL\t·libc_bind_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_bind_trampoline_addr(SB)/4, $libc_bind_trampoline<>(SB)\n\nTEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_connect(SB)\nGLOBL\t·libc_connect_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_connect_trampoline_addr(SB)/4, $libc_connect_trampoline<>(SB)\n\nTEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socket(SB)\nGLOBL\t·libc_socket_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_socket_trampoline_addr(SB)/4, $libc_socket_trampoline<>(SB)\n\nTEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockopt(SB)\nGLOBL\t·libc_getsockopt_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getsockopt_trampoline_addr(SB)/4, $libc_getsockopt_trampoline<>(SB)\n\nTEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsockopt(SB)\nGLOBL\t·libc_setsockopt_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setsockopt_trampoline_addr(SB)/4, $libc_setsockopt_trampoline<>(SB)\n\nTEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpeername(SB)\nGLOBL\t·libc_getpeername_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getpeername_trampoline_addr(SB)/4, $libc_getpeername_trampoline<>(SB)\n\nTEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockname(SB)\nGLOBL\t·libc_getsockname_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getsockname_trampoline_addr(SB)/4, $libc_getsockname_trampoline<>(SB)\n\nTEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shutdown(SB)\nGLOBL\t·libc_shutdown_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_shutdown_trampoline_addr(SB)/4, $libc_shutdown_trampoline<>(SB)\n\nTEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socketpair(SB)\nGLOBL\t·libc_socketpair_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_socketpair_trampoline_addr(SB)/4, $libc_socketpair_trampoline<>(SB)\n\nTEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvfrom(SB)\nGLOBL\t·libc_recvfrom_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_recvfrom_trampoline_addr(SB)/4, $libc_recvfrom_trampoline<>(SB)\n\nTEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendto(SB)\nGLOBL\t·libc_sendto_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_sendto_trampoline_addr(SB)/4, $libc_sendto_trampoline<>(SB)\n\nTEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvmsg(SB)\nGLOBL\t·libc_recvmsg_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_recvmsg_trampoline_addr(SB)/4, $libc_recvmsg_trampoline<>(SB)\n\nTEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendmsg(SB)\nGLOBL\t·libc_sendmsg_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_sendmsg_trampoline_addr(SB)/4, $libc_sendmsg_trampoline<>(SB)\n\nTEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kevent(SB)\nGLOBL\t·libc_kevent_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_kevent_trampoline_addr(SB)/4, $libc_kevent_trampoline<>(SB)\n\nTEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimes(SB)\nGLOBL\t·libc_utimes_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_utimes_trampoline_addr(SB)/4, $libc_utimes_trampoline<>(SB)\n\nTEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_futimes(SB)\nGLOBL\t·libc_futimes_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_futimes_trampoline_addr(SB)/4, $libc_futimes_trampoline<>(SB)\n\nTEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_poll(SB)\nGLOBL\t·libc_poll_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_poll_trampoline_addr(SB)/4, $libc_poll_trampoline<>(SB)\n\nTEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_madvise(SB)\nGLOBL\t·libc_madvise_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_madvise_trampoline_addr(SB)/4, $libc_madvise_trampoline<>(SB)\n\nTEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlock(SB)\nGLOBL\t·libc_mlock_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mlock_trampoline_addr(SB)/4, $libc_mlock_trampoline<>(SB)\n\nTEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlockall(SB)\nGLOBL\t·libc_mlockall_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mlockall_trampoline_addr(SB)/4, $libc_mlockall_trampoline<>(SB)\n\nTEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mprotect(SB)\nGLOBL\t·libc_mprotect_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mprotect_trampoline_addr(SB)/4, $libc_mprotect_trampoline<>(SB)\n\nTEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_msync(SB)\nGLOBL\t·libc_msync_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_msync_trampoline_addr(SB)/4, $libc_msync_trampoline<>(SB)\n\nTEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlock(SB)\nGLOBL\t·libc_munlock_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_munlock_trampoline_addr(SB)/4, $libc_munlock_trampoline<>(SB)\n\nTEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlockall(SB)\nGLOBL\t·libc_munlockall_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_munlockall_trampoline_addr(SB)/4, $libc_munlockall_trampoline<>(SB)\n\nTEXT libc_pipe2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pipe2(SB)\nGLOBL\t·libc_pipe2_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_pipe2_trampoline_addr(SB)/4, $libc_pipe2_trampoline<>(SB)\n\nTEXT libc_getdents_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getdents(SB)\nGLOBL\t·libc_getdents_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getdents_trampoline_addr(SB)/4, $libc_getdents_trampoline<>(SB)\n\nTEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getcwd(SB)\nGLOBL\t·libc_getcwd_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getcwd_trampoline_addr(SB)/4, $libc_getcwd_trampoline<>(SB)\n\nTEXT libc_getresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getresuid(SB)\nGLOBL\t·libc_getresuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getresuid_trampoline_addr(SB)/4, $libc_getresuid_trampoline<>(SB)\n\nTEXT libc_getresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getresgid(SB)\nGLOBL\t·libc_getresgid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getresgid_trampoline_addr(SB)/4, $libc_getresgid_trampoline<>(SB)\n\nTEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ioctl(SB)\nGLOBL\t·libc_ioctl_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_ioctl_trampoline_addr(SB)/4, $libc_ioctl_trampoline<>(SB)\n\nTEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sysctl(SB)\nGLOBL\t·libc_sysctl_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_sysctl_trampoline_addr(SB)/4, $libc_sysctl_trampoline<>(SB)\n\nTEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fcntl(SB)\nGLOBL\t·libc_fcntl_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fcntl_trampoline_addr(SB)/4, $libc_fcntl_trampoline<>(SB)\n\nTEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ppoll(SB)\nGLOBL\t·libc_ppoll_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_ppoll_trampoline_addr(SB)/4, $libc_ppoll_trampoline<>(SB)\n\nTEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_access(SB)\nGLOBL\t·libc_access_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_access_trampoline_addr(SB)/4, $libc_access_trampoline<>(SB)\n\nTEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_adjtime(SB)\nGLOBL\t·libc_adjtime_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_adjtime_trampoline_addr(SB)/4, $libc_adjtime_trampoline<>(SB)\n\nTEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chdir(SB)\nGLOBL\t·libc_chdir_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_chdir_trampoline_addr(SB)/4, $libc_chdir_trampoline<>(SB)\n\nTEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chflags(SB)\nGLOBL\t·libc_chflags_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_chflags_trampoline_addr(SB)/4, $libc_chflags_trampoline<>(SB)\n\nTEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chmod(SB)\nGLOBL\t·libc_chmod_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_chmod_trampoline_addr(SB)/4, $libc_chmod_trampoline<>(SB)\n\nTEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chown(SB)\nGLOBL\t·libc_chown_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_chown_trampoline_addr(SB)/4, $libc_chown_trampoline<>(SB)\n\nTEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chroot(SB)\nGLOBL\t·libc_chroot_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_chroot_trampoline_addr(SB)/4, $libc_chroot_trampoline<>(SB)\n\nTEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_clock_gettime(SB)\nGLOBL\t·libc_clock_gettime_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_clock_gettime_trampoline_addr(SB)/4, $libc_clock_gettime_trampoline<>(SB)\n\nTEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_close(SB)\nGLOBL\t·libc_close_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_close_trampoline_addr(SB)/4, $libc_close_trampoline<>(SB)\n\nTEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup(SB)\nGLOBL\t·libc_dup_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_dup_trampoline_addr(SB)/4, $libc_dup_trampoline<>(SB)\n\nTEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup2(SB)\nGLOBL\t·libc_dup2_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_dup2_trampoline_addr(SB)/4, $libc_dup2_trampoline<>(SB)\n\nTEXT libc_dup3_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup3(SB)\nGLOBL\t·libc_dup3_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_dup3_trampoline_addr(SB)/4, $libc_dup3_trampoline<>(SB)\n\nTEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_exit(SB)\nGLOBL\t·libc_exit_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_exit_trampoline_addr(SB)/4, $libc_exit_trampoline<>(SB)\n\nTEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_faccessat(SB)\nGLOBL\t·libc_faccessat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_faccessat_trampoline_addr(SB)/4, $libc_faccessat_trampoline<>(SB)\n\nTEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchdir(SB)\nGLOBL\t·libc_fchdir_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fchdir_trampoline_addr(SB)/4, $libc_fchdir_trampoline<>(SB)\n\nTEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchflags(SB)\nGLOBL\t·libc_fchflags_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fchflags_trampoline_addr(SB)/4, $libc_fchflags_trampoline<>(SB)\n\nTEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmod(SB)\nGLOBL\t·libc_fchmod_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fchmod_trampoline_addr(SB)/4, $libc_fchmod_trampoline<>(SB)\n\nTEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmodat(SB)\nGLOBL\t·libc_fchmodat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fchmodat_trampoline_addr(SB)/4, $libc_fchmodat_trampoline<>(SB)\n\nTEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchown(SB)\nGLOBL\t·libc_fchown_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fchown_trampoline_addr(SB)/4, $libc_fchown_trampoline<>(SB)\n\nTEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchownat(SB)\nGLOBL\t·libc_fchownat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fchownat_trampoline_addr(SB)/4, $libc_fchownat_trampoline<>(SB)\n\nTEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_flock(SB)\nGLOBL\t·libc_flock_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_flock_trampoline_addr(SB)/4, $libc_flock_trampoline<>(SB)\n\nTEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fpathconf(SB)\nGLOBL\t·libc_fpathconf_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fpathconf_trampoline_addr(SB)/4, $libc_fpathconf_trampoline<>(SB)\n\nTEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstat(SB)\nGLOBL\t·libc_fstat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fstat_trampoline_addr(SB)/4, $libc_fstat_trampoline<>(SB)\n\nTEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatat(SB)\nGLOBL\t·libc_fstatat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fstatat_trampoline_addr(SB)/4, $libc_fstatat_trampoline<>(SB)\n\nTEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatfs(SB)\nGLOBL\t·libc_fstatfs_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fstatfs_trampoline_addr(SB)/4, $libc_fstatfs_trampoline<>(SB)\n\nTEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fsync(SB)\nGLOBL\t·libc_fsync_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fsync_trampoline_addr(SB)/4, $libc_fsync_trampoline<>(SB)\n\nTEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ftruncate(SB)\nGLOBL\t·libc_ftruncate_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_ftruncate_trampoline_addr(SB)/4, $libc_ftruncate_trampoline<>(SB)\n\nTEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getegid(SB)\nGLOBL\t·libc_getegid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getegid_trampoline_addr(SB)/4, $libc_getegid_trampoline<>(SB)\n\nTEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_geteuid(SB)\nGLOBL\t·libc_geteuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_geteuid_trampoline_addr(SB)/4, $libc_geteuid_trampoline<>(SB)\n\nTEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgid(SB)\nGLOBL\t·libc_getgid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getgid_trampoline_addr(SB)/4, $libc_getgid_trampoline<>(SB)\n\nTEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgid(SB)\nGLOBL\t·libc_getpgid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getpgid_trampoline_addr(SB)/4, $libc_getpgid_trampoline<>(SB)\n\nTEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgrp(SB)\nGLOBL\t·libc_getpgrp_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getpgrp_trampoline_addr(SB)/4, $libc_getpgrp_trampoline<>(SB)\n\nTEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpid(SB)\nGLOBL\t·libc_getpid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getpid_trampoline_addr(SB)/4, $libc_getpid_trampoline<>(SB)\n\nTEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getppid(SB)\nGLOBL\t·libc_getppid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getppid_trampoline_addr(SB)/4, $libc_getppid_trampoline<>(SB)\n\nTEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpriority(SB)\nGLOBL\t·libc_getpriority_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getpriority_trampoline_addr(SB)/4, $libc_getpriority_trampoline<>(SB)\n\nTEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrlimit(SB)\nGLOBL\t·libc_getrlimit_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getrlimit_trampoline_addr(SB)/4, $libc_getrlimit_trampoline<>(SB)\n\nTEXT libc_getrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrtable(SB)\nGLOBL\t·libc_getrtable_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getrtable_trampoline_addr(SB)/4, $libc_getrtable_trampoline<>(SB)\n\nTEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrusage(SB)\nGLOBL\t·libc_getrusage_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getrusage_trampoline_addr(SB)/4, $libc_getrusage_trampoline<>(SB)\n\nTEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsid(SB)\nGLOBL\t·libc_getsid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getsid_trampoline_addr(SB)/4, $libc_getsid_trampoline<>(SB)\n\nTEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_gettimeofday(SB)\nGLOBL\t·libc_gettimeofday_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_gettimeofday_trampoline_addr(SB)/4, $libc_gettimeofday_trampoline<>(SB)\n\nTEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getuid(SB)\nGLOBL\t·libc_getuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getuid_trampoline_addr(SB)/4, $libc_getuid_trampoline<>(SB)\n\nTEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_issetugid(SB)\nGLOBL\t·libc_issetugid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_issetugid_trampoline_addr(SB)/4, $libc_issetugid_trampoline<>(SB)\n\nTEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kill(SB)\nGLOBL\t·libc_kill_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_kill_trampoline_addr(SB)/4, $libc_kill_trampoline<>(SB)\n\nTEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kqueue(SB)\nGLOBL\t·libc_kqueue_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_kqueue_trampoline_addr(SB)/4, $libc_kqueue_trampoline<>(SB)\n\nTEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lchown(SB)\nGLOBL\t·libc_lchown_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_lchown_trampoline_addr(SB)/4, $libc_lchown_trampoline<>(SB)\n\nTEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_link(SB)\nGLOBL\t·libc_link_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_link_trampoline_addr(SB)/4, $libc_link_trampoline<>(SB)\n\nTEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_linkat(SB)\nGLOBL\t·libc_linkat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_linkat_trampoline_addr(SB)/4, $libc_linkat_trampoline<>(SB)\n\nTEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_listen(SB)\nGLOBL\t·libc_listen_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_listen_trampoline_addr(SB)/4, $libc_listen_trampoline<>(SB)\n\nTEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lstat(SB)\nGLOBL\t·libc_lstat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_lstat_trampoline_addr(SB)/4, $libc_lstat_trampoline<>(SB)\n\nTEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdir(SB)\nGLOBL\t·libc_mkdir_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mkdir_trampoline_addr(SB)/4, $libc_mkdir_trampoline<>(SB)\n\nTEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdirat(SB)\nGLOBL\t·libc_mkdirat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mkdirat_trampoline_addr(SB)/4, $libc_mkdirat_trampoline<>(SB)\n\nTEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifo(SB)\nGLOBL\t·libc_mkfifo_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mkfifo_trampoline_addr(SB)/4, $libc_mkfifo_trampoline<>(SB)\n\nTEXT libc_mkfifoat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifoat(SB)\nGLOBL\t·libc_mkfifoat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mkfifoat_trampoline_addr(SB)/4, $libc_mkfifoat_trampoline<>(SB)\n\nTEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknod(SB)\nGLOBL\t·libc_mknod_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mknod_trampoline_addr(SB)/4, $libc_mknod_trampoline<>(SB)\n\nTEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknodat(SB)\nGLOBL\t·libc_mknodat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mknodat_trampoline_addr(SB)/4, $libc_mknodat_trampoline<>(SB)\n\nTEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mount(SB)\nGLOBL\t·libc_mount_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mount_trampoline_addr(SB)/4, $libc_mount_trampoline<>(SB)\n\nTEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_nanosleep(SB)\nGLOBL\t·libc_nanosleep_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_nanosleep_trampoline_addr(SB)/4, $libc_nanosleep_trampoline<>(SB)\n\nTEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_open(SB)\nGLOBL\t·libc_open_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_open_trampoline_addr(SB)/4, $libc_open_trampoline<>(SB)\n\nTEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_openat(SB)\nGLOBL\t·libc_openat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_openat_trampoline_addr(SB)/4, $libc_openat_trampoline<>(SB)\n\nTEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pathconf(SB)\nGLOBL\t·libc_pathconf_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_pathconf_trampoline_addr(SB)/4, $libc_pathconf_trampoline<>(SB)\n\nTEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pread(SB)\nGLOBL\t·libc_pread_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_pread_trampoline_addr(SB)/4, $libc_pread_trampoline<>(SB)\n\nTEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pwrite(SB)\nGLOBL\t·libc_pwrite_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_pwrite_trampoline_addr(SB)/4, $libc_pwrite_trampoline<>(SB)\n\nTEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_read(SB)\nGLOBL\t·libc_read_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_read_trampoline_addr(SB)/4, $libc_read_trampoline<>(SB)\n\nTEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlink(SB)\nGLOBL\t·libc_readlink_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_readlink_trampoline_addr(SB)/4, $libc_readlink_trampoline<>(SB)\n\nTEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlinkat(SB)\nGLOBL\t·libc_readlinkat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_readlinkat_trampoline_addr(SB)/4, $libc_readlinkat_trampoline<>(SB)\n\nTEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rename(SB)\nGLOBL\t·libc_rename_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_rename_trampoline_addr(SB)/4, $libc_rename_trampoline<>(SB)\n\nTEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_renameat(SB)\nGLOBL\t·libc_renameat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_renameat_trampoline_addr(SB)/4, $libc_renameat_trampoline<>(SB)\n\nTEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_revoke(SB)\nGLOBL\t·libc_revoke_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_revoke_trampoline_addr(SB)/4, $libc_revoke_trampoline<>(SB)\n\nTEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rmdir(SB)\nGLOBL\t·libc_rmdir_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_rmdir_trampoline_addr(SB)/4, $libc_rmdir_trampoline<>(SB)\n\nTEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lseek(SB)\nGLOBL\t·libc_lseek_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_lseek_trampoline_addr(SB)/4, $libc_lseek_trampoline<>(SB)\n\nTEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_select(SB)\nGLOBL\t·libc_select_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_select_trampoline_addr(SB)/4, $libc_select_trampoline<>(SB)\n\nTEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setegid(SB)\nGLOBL\t·libc_setegid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setegid_trampoline_addr(SB)/4, $libc_setegid_trampoline<>(SB)\n\nTEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_seteuid(SB)\nGLOBL\t·libc_seteuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_seteuid_trampoline_addr(SB)/4, $libc_seteuid_trampoline<>(SB)\n\nTEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgid(SB)\nGLOBL\t·libc_setgid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setgid_trampoline_addr(SB)/4, $libc_setgid_trampoline<>(SB)\n\nTEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setlogin(SB)\nGLOBL\t·libc_setlogin_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setlogin_trampoline_addr(SB)/4, $libc_setlogin_trampoline<>(SB)\n\nTEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpgid(SB)\nGLOBL\t·libc_setpgid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setpgid_trampoline_addr(SB)/4, $libc_setpgid_trampoline<>(SB)\n\nTEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpriority(SB)\nGLOBL\t·libc_setpriority_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setpriority_trampoline_addr(SB)/4, $libc_setpriority_trampoline<>(SB)\n\nTEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setregid(SB)\nGLOBL\t·libc_setregid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setregid_trampoline_addr(SB)/4, $libc_setregid_trampoline<>(SB)\n\nTEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setreuid(SB)\nGLOBL\t·libc_setreuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setreuid_trampoline_addr(SB)/4, $libc_setreuid_trampoline<>(SB)\n\nTEXT libc_setresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setresgid(SB)\nGLOBL\t·libc_setresgid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setresgid_trampoline_addr(SB)/4, $libc_setresgid_trampoline<>(SB)\n\nTEXT libc_setresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setresuid(SB)\nGLOBL\t·libc_setresuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setresuid_trampoline_addr(SB)/4, $libc_setresuid_trampoline<>(SB)\n\nTEXT libc_setrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setrtable(SB)\nGLOBL\t·libc_setrtable_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setrtable_trampoline_addr(SB)/4, $libc_setrtable_trampoline<>(SB)\n\nTEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsid(SB)\nGLOBL\t·libc_setsid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setsid_trampoline_addr(SB)/4, $libc_setsid_trampoline<>(SB)\n\nTEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_settimeofday(SB)\nGLOBL\t·libc_settimeofday_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_settimeofday_trampoline_addr(SB)/4, $libc_settimeofday_trampoline<>(SB)\n\nTEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setuid(SB)\nGLOBL\t·libc_setuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setuid_trampoline_addr(SB)/4, $libc_setuid_trampoline<>(SB)\n\nTEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_stat(SB)\nGLOBL\t·libc_stat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_stat_trampoline_addr(SB)/4, $libc_stat_trampoline<>(SB)\n\nTEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_statfs(SB)\nGLOBL\t·libc_statfs_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_statfs_trampoline_addr(SB)/4, $libc_statfs_trampoline<>(SB)\n\nTEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlink(SB)\nGLOBL\t·libc_symlink_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_symlink_trampoline_addr(SB)/4, $libc_symlink_trampoline<>(SB)\n\nTEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlinkat(SB)\nGLOBL\t·libc_symlinkat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_symlinkat_trampoline_addr(SB)/4, $libc_symlinkat_trampoline<>(SB)\n\nTEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sync(SB)\nGLOBL\t·libc_sync_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_sync_trampoline_addr(SB)/4, $libc_sync_trampoline<>(SB)\n\nTEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_truncate(SB)\nGLOBL\t·libc_truncate_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_truncate_trampoline_addr(SB)/4, $libc_truncate_trampoline<>(SB)\n\nTEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_umask(SB)\nGLOBL\t·libc_umask_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_umask_trampoline_addr(SB)/4, $libc_umask_trampoline<>(SB)\n\nTEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlink(SB)\nGLOBL\t·libc_unlink_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_unlink_trampoline_addr(SB)/4, $libc_unlink_trampoline<>(SB)\n\nTEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlinkat(SB)\nGLOBL\t·libc_unlinkat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_unlinkat_trampoline_addr(SB)/4, $libc_unlinkat_trampoline<>(SB)\n\nTEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unmount(SB)\nGLOBL\t·libc_unmount_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_unmount_trampoline_addr(SB)/4, $libc_unmount_trampoline<>(SB)\n\nTEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_write(SB)\nGLOBL\t·libc_write_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_write_trampoline_addr(SB)/4, $libc_write_trampoline<>(SB)\n\nTEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mmap(SB)\nGLOBL\t·libc_mmap_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mmap_trampoline_addr(SB)/4, $libc_mmap_trampoline<>(SB)\n\nTEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munmap(SB)\nGLOBL\t·libc_munmap_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_munmap_trampoline_addr(SB)/4, $libc_munmap_trampoline<>(SB)\n\nTEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getfsstat(SB)\nGLOBL\t·libc_getfsstat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getfsstat_trampoline_addr(SB)/4, $libc_getfsstat_trampoline<>(SB)\n\nTEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimensat(SB)\nGLOBL\t·libc_utimensat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_utimensat_trampoline_addr(SB)/4, $libc_utimensat_trampoline<>(SB)\n\nTEXT libc_pledge_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pledge(SB)\nGLOBL\t·libc_pledge_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_pledge_trampoline_addr(SB)/4, $libc_pledge_trampoline<>(SB)\n\nTEXT libc_unveil_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unveil(SB)\nGLOBL\t·libc_unveil_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_unveil_trampoline_addr(SB)/4, $libc_unveil_trampoline<>(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go",
    "content": "// go run mksyscall.go -openbsd -libc -tags openbsd,amd64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_amd64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build openbsd && amd64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgroups getgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgroups setgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_wait4_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_wait4 wait4 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_accept_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_accept accept \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_bind_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_bind bind \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_connect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_connect connect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socket_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socket socket \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockopt getsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsockopt setsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpeername_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpeername getpeername \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockname_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockname getsockname \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shutdown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shutdown shutdown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socketpair_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socketpair socketpair \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvfrom_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvfrom recvfrom \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendto_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendto sendto \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvmsg recvmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendmsg sendmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kevent_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kevent kevent \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimes utimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_futimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_futimes futimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_poll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_poll poll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_madvise_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_madvise madvise \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlock mlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlockall mlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mprotect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mprotect mprotect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_msync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_msync msync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlock munlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlockall munlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_pipe2_trampoline_addr, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pipe2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pipe2 pipe2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getdents_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getdents_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getdents getdents \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getcwd_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getcwd getcwd \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) {\n\tsyscall_rawSyscall(libc_getresuid_trampoline_addr, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid)))\n\treturn\n}\n\nvar libc_getresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresuid getresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) {\n\tsyscall_rawSyscall(libc_getresgid_trampoline_addr, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid)))\n\treturn\n}\n\nvar libc_getresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresgid getresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ioctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ioctl ioctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sysctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sysctl sysctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fcntl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fcntl fcntl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_ppoll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ppoll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ppoll ppoll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_access_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_access access \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_adjtime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_adjtime adjtime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chdir chdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chflags chflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chmod chmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chown chown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chroot_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chroot chroot \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_clock_gettime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_clock_gettime clock_gettime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_close_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_close close \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup dup \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup2 dup2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(from int, to int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup3_trampoline_addr, uintptr(from), uintptr(to), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup3_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup3 dup3 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tsyscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0)\n\treturn\n}\n\nvar libc_exit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_exit exit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_faccessat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_faccessat faccessat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchdir fchdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchflags fchflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmod fchmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmodat fchmodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchown fchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchownat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchownat fchownat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_flock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_flock flock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fpathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fpathconf fpathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstat fstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fstatat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatat fstatat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstatfs_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatfs fstatfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fsync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fsync fsync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ftruncate_trampoline_addr, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ftruncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ftruncate ftruncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\nvar libc_getegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getegid getegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_geteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_geteuid geteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\nvar libc_getgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgid getgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgid getpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\nvar libc_getpgrp_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgrp getpgrp \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\nvar libc_getpid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpid getpid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\nvar libc_getppid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getppid getppid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpriority getpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrlimit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrlimit getrlimit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrtable() (rtable int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getrtable_trampoline_addr, 0, 0, 0)\n\trtable = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrtable getrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrusage_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrusage getrusage \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsid getsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_gettimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_gettimeofday gettimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_getuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getuid getuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := syscall_syscall(libc_issetugid_trampoline_addr, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\nvar libc_issetugid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_issetugid issetugid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kill_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kill kill \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kqueue_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kqueue kqueue \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lchown lchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_link_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_link link \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_linkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_linkat linkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_listen_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_listen listen \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lstat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lstat lstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdir mkdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdirat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdirat mkdirat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifo_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifo mkfifo \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifoat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifoat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifoat mkfifoat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknod mknod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mknodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknodat mknodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(fsType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(dir)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mount mount \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_nanosleep_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_nanosleep nanosleep \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_open_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_open_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_open open \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_openat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_openat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_openat openat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_pathconf_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pathconf pathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pread_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pread_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pread pread \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pwrite_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pwrite_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pwrite pwrite \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_read_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_read read \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_readlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlink readlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_readlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlinkat readlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rename_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rename_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rename rename \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_renameat_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_renameat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_renameat renameat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_revoke_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_revoke_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_revoke revoke \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rmdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rmdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rmdir rmdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := syscall_syscall(libc_lseek_trampoline_addr, uintptr(fd), uintptr(offset), uintptr(whence))\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lseek_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lseek lseek \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_select_trampoline_addr, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_select_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_select select \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setegid setegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_seteuid_trampoline_addr, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_seteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_seteuid seteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgid_trampoline_addr, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgid setgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_setlogin_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setlogin_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setlogin setlogin \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setpgid_trampoline_addr, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpgid setpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_setpriority_trampoline_addr, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpriority setpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setregid_trampoline_addr, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setregid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setregid setregid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setreuid_trampoline_addr, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setreuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setreuid setreuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setresgid_trampoline_addr, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setresgid setresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setresuid_trampoline_addr, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setresuid setresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setrtable(rtable int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setrtable_trampoline_addr, uintptr(rtable), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setrtable setrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsid setsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_settimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_settimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_settimeofday settimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setuid_trampoline_addr, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setuid setuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_stat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_stat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_stat stat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_statfs_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_statfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_statfs statfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlink symlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlinkat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlinkat symlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := syscall_syscall(libc_sync_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sync sync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_truncate_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_truncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_truncate truncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := syscall_syscall(libc_umask_trampoline_addr, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\nvar libc_umask_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_umask umask \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlink unlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlinkat unlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unmount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unmount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unmount unmount \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_write_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_write write \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_mmap_trampoline_addr, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mmap mmap \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_munmap_trampoline_addr, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munmap munmap \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getfsstat_trampoline_addr, uintptr(unsafe.Pointer(stat)), uintptr(bufsize), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getfsstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getfsstat getfsstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_utimensat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimensat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimensat utimensat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pledge(promises *byte, execpromises *byte) (err error) {\n\t_, _, e1 := syscall_syscall(libc_pledge_trampoline_addr, uintptr(unsafe.Pointer(promises)), uintptr(unsafe.Pointer(execpromises)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pledge_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pledge pledge \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc unveil(path *byte, flags *byte) (err error) {\n\t_, _, e1 := syscall_syscall(libc_unveil_trampoline_addr, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(flags)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unveil_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unveil unveil \"libc.so\"\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.s",
    "content": "// go run mkasm.go openbsd amd64\n// Code generated by the command above; DO NOT EDIT.\n\n#include \"textflag.h\"\n\nTEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgroups(SB)\nGLOBL\t·libc_getgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB)\n\nTEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgroups(SB)\nGLOBL\t·libc_setgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB)\n\nTEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_wait4(SB)\nGLOBL\t·libc_wait4_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB)\n\nTEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_accept(SB)\nGLOBL\t·libc_accept_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB)\n\nTEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_bind(SB)\nGLOBL\t·libc_bind_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB)\n\nTEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_connect(SB)\nGLOBL\t·libc_connect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB)\n\nTEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socket(SB)\nGLOBL\t·libc_socket_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB)\n\nTEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockopt(SB)\nGLOBL\t·libc_getsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB)\n\nTEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsockopt(SB)\nGLOBL\t·libc_setsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB)\n\nTEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpeername(SB)\nGLOBL\t·libc_getpeername_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB)\n\nTEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockname(SB)\nGLOBL\t·libc_getsockname_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB)\n\nTEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shutdown(SB)\nGLOBL\t·libc_shutdown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB)\n\nTEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socketpair(SB)\nGLOBL\t·libc_socketpair_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB)\n\nTEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvfrom(SB)\nGLOBL\t·libc_recvfrom_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB)\n\nTEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendto(SB)\nGLOBL\t·libc_sendto_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB)\n\nTEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvmsg(SB)\nGLOBL\t·libc_recvmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB)\n\nTEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendmsg(SB)\nGLOBL\t·libc_sendmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB)\n\nTEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kevent(SB)\nGLOBL\t·libc_kevent_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB)\n\nTEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimes(SB)\nGLOBL\t·libc_utimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB)\n\nTEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_futimes(SB)\nGLOBL\t·libc_futimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB)\n\nTEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_poll(SB)\nGLOBL\t·libc_poll_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB)\n\nTEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_madvise(SB)\nGLOBL\t·libc_madvise_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB)\n\nTEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlock(SB)\nGLOBL\t·libc_mlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB)\n\nTEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlockall(SB)\nGLOBL\t·libc_mlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB)\n\nTEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mprotect(SB)\nGLOBL\t·libc_mprotect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB)\n\nTEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_msync(SB)\nGLOBL\t·libc_msync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB)\n\nTEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlock(SB)\nGLOBL\t·libc_munlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB)\n\nTEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlockall(SB)\nGLOBL\t·libc_munlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB)\n\nTEXT libc_pipe2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pipe2(SB)\nGLOBL\t·libc_pipe2_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pipe2_trampoline_addr(SB)/8, $libc_pipe2_trampoline<>(SB)\n\nTEXT libc_getdents_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getdents(SB)\nGLOBL\t·libc_getdents_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getdents_trampoline_addr(SB)/8, $libc_getdents_trampoline<>(SB)\n\nTEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getcwd(SB)\nGLOBL\t·libc_getcwd_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB)\n\nTEXT libc_getresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getresuid(SB)\nGLOBL\t·libc_getresuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getresuid_trampoline_addr(SB)/8, $libc_getresuid_trampoline<>(SB)\n\nTEXT libc_getresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getresgid(SB)\nGLOBL\t·libc_getresgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getresgid_trampoline_addr(SB)/8, $libc_getresgid_trampoline<>(SB)\n\nTEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ioctl(SB)\nGLOBL\t·libc_ioctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB)\n\nTEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sysctl(SB)\nGLOBL\t·libc_sysctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB)\n\nTEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fcntl(SB)\nGLOBL\t·libc_fcntl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB)\n\nTEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ppoll(SB)\nGLOBL\t·libc_ppoll_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ppoll_trampoline_addr(SB)/8, $libc_ppoll_trampoline<>(SB)\n\nTEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_access(SB)\nGLOBL\t·libc_access_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB)\n\nTEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_adjtime(SB)\nGLOBL\t·libc_adjtime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB)\n\nTEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chdir(SB)\nGLOBL\t·libc_chdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB)\n\nTEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chflags(SB)\nGLOBL\t·libc_chflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB)\n\nTEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chmod(SB)\nGLOBL\t·libc_chmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB)\n\nTEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chown(SB)\nGLOBL\t·libc_chown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB)\n\nTEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chroot(SB)\nGLOBL\t·libc_chroot_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB)\n\nTEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_clock_gettime(SB)\nGLOBL\t·libc_clock_gettime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB)\n\nTEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_close(SB)\nGLOBL\t·libc_close_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB)\n\nTEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup(SB)\nGLOBL\t·libc_dup_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB)\n\nTEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup2(SB)\nGLOBL\t·libc_dup2_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB)\n\nTEXT libc_dup3_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup3(SB)\nGLOBL\t·libc_dup3_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup3_trampoline_addr(SB)/8, $libc_dup3_trampoline<>(SB)\n\nTEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_exit(SB)\nGLOBL\t·libc_exit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB)\n\nTEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_faccessat(SB)\nGLOBL\t·libc_faccessat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB)\n\nTEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchdir(SB)\nGLOBL\t·libc_fchdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB)\n\nTEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchflags(SB)\nGLOBL\t·libc_fchflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB)\n\nTEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmod(SB)\nGLOBL\t·libc_fchmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB)\n\nTEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmodat(SB)\nGLOBL\t·libc_fchmodat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB)\n\nTEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchown(SB)\nGLOBL\t·libc_fchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB)\n\nTEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchownat(SB)\nGLOBL\t·libc_fchownat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB)\n\nTEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_flock(SB)\nGLOBL\t·libc_flock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB)\n\nTEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fpathconf(SB)\nGLOBL\t·libc_fpathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB)\n\nTEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstat(SB)\nGLOBL\t·libc_fstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstat_trampoline_addr(SB)/8, $libc_fstat_trampoline<>(SB)\n\nTEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatat(SB)\nGLOBL\t·libc_fstatat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatat_trampoline_addr(SB)/8, $libc_fstatat_trampoline<>(SB)\n\nTEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatfs(SB)\nGLOBL\t·libc_fstatfs_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatfs_trampoline_addr(SB)/8, $libc_fstatfs_trampoline<>(SB)\n\nTEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fsync(SB)\nGLOBL\t·libc_fsync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB)\n\nTEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ftruncate(SB)\nGLOBL\t·libc_ftruncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB)\n\nTEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getegid(SB)\nGLOBL\t·libc_getegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB)\n\nTEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_geteuid(SB)\nGLOBL\t·libc_geteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB)\n\nTEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgid(SB)\nGLOBL\t·libc_getgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB)\n\nTEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgid(SB)\nGLOBL\t·libc_getpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB)\n\nTEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgrp(SB)\nGLOBL\t·libc_getpgrp_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB)\n\nTEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpid(SB)\nGLOBL\t·libc_getpid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB)\n\nTEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getppid(SB)\nGLOBL\t·libc_getppid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB)\n\nTEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpriority(SB)\nGLOBL\t·libc_getpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB)\n\nTEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrlimit(SB)\nGLOBL\t·libc_getrlimit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB)\n\nTEXT libc_getrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrtable(SB)\nGLOBL\t·libc_getrtable_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrtable_trampoline_addr(SB)/8, $libc_getrtable_trampoline<>(SB)\n\nTEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrusage(SB)\nGLOBL\t·libc_getrusage_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB)\n\nTEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsid(SB)\nGLOBL\t·libc_getsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB)\n\nTEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_gettimeofday(SB)\nGLOBL\t·libc_gettimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB)\n\nTEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getuid(SB)\nGLOBL\t·libc_getuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB)\n\nTEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_issetugid(SB)\nGLOBL\t·libc_issetugid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB)\n\nTEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kill(SB)\nGLOBL\t·libc_kill_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB)\n\nTEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kqueue(SB)\nGLOBL\t·libc_kqueue_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB)\n\nTEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lchown(SB)\nGLOBL\t·libc_lchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB)\n\nTEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_link(SB)\nGLOBL\t·libc_link_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB)\n\nTEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_linkat(SB)\nGLOBL\t·libc_linkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB)\n\nTEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_listen(SB)\nGLOBL\t·libc_listen_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB)\n\nTEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lstat(SB)\nGLOBL\t·libc_lstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lstat_trampoline_addr(SB)/8, $libc_lstat_trampoline<>(SB)\n\nTEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdir(SB)\nGLOBL\t·libc_mkdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB)\n\nTEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdirat(SB)\nGLOBL\t·libc_mkdirat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB)\n\nTEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifo(SB)\nGLOBL\t·libc_mkfifo_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB)\n\nTEXT libc_mkfifoat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifoat(SB)\nGLOBL\t·libc_mkfifoat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkfifoat_trampoline_addr(SB)/8, $libc_mkfifoat_trampoline<>(SB)\n\nTEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknod(SB)\nGLOBL\t·libc_mknod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB)\n\nTEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknodat(SB)\nGLOBL\t·libc_mknodat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mknodat_trampoline_addr(SB)/8, $libc_mknodat_trampoline<>(SB)\n\nTEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mount(SB)\nGLOBL\t·libc_mount_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB)\n\nTEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_nanosleep(SB)\nGLOBL\t·libc_nanosleep_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_nanosleep_trampoline_addr(SB)/8, $libc_nanosleep_trampoline<>(SB)\n\nTEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_open(SB)\nGLOBL\t·libc_open_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB)\n\nTEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_openat(SB)\nGLOBL\t·libc_openat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB)\n\nTEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pathconf(SB)\nGLOBL\t·libc_pathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB)\n\nTEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pread(SB)\nGLOBL\t·libc_pread_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB)\n\nTEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pwrite(SB)\nGLOBL\t·libc_pwrite_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB)\n\nTEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_read(SB)\nGLOBL\t·libc_read_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB)\n\nTEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlink(SB)\nGLOBL\t·libc_readlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB)\n\nTEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlinkat(SB)\nGLOBL\t·libc_readlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB)\n\nTEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rename(SB)\nGLOBL\t·libc_rename_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB)\n\nTEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_renameat(SB)\nGLOBL\t·libc_renameat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB)\n\nTEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_revoke(SB)\nGLOBL\t·libc_revoke_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB)\n\nTEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rmdir(SB)\nGLOBL\t·libc_rmdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB)\n\nTEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lseek(SB)\nGLOBL\t·libc_lseek_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB)\n\nTEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_select(SB)\nGLOBL\t·libc_select_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB)\n\nTEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setegid(SB)\nGLOBL\t·libc_setegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB)\n\nTEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_seteuid(SB)\nGLOBL\t·libc_seteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB)\n\nTEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgid(SB)\nGLOBL\t·libc_setgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB)\n\nTEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setlogin(SB)\nGLOBL\t·libc_setlogin_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB)\n\nTEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpgid(SB)\nGLOBL\t·libc_setpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB)\n\nTEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpriority(SB)\nGLOBL\t·libc_setpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB)\n\nTEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setregid(SB)\nGLOBL\t·libc_setregid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB)\n\nTEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setreuid(SB)\nGLOBL\t·libc_setreuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB)\n\nTEXT libc_setresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setresgid(SB)\nGLOBL\t·libc_setresgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setresgid_trampoline_addr(SB)/8, $libc_setresgid_trampoline<>(SB)\n\nTEXT libc_setresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setresuid(SB)\nGLOBL\t·libc_setresuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setresuid_trampoline_addr(SB)/8, $libc_setresuid_trampoline<>(SB)\n\nTEXT libc_setrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setrtable(SB)\nGLOBL\t·libc_setrtable_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setrtable_trampoline_addr(SB)/8, $libc_setrtable_trampoline<>(SB)\n\nTEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsid(SB)\nGLOBL\t·libc_setsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB)\n\nTEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_settimeofday(SB)\nGLOBL\t·libc_settimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB)\n\nTEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setuid(SB)\nGLOBL\t·libc_setuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB)\n\nTEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_stat(SB)\nGLOBL\t·libc_stat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_stat_trampoline_addr(SB)/8, $libc_stat_trampoline<>(SB)\n\nTEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_statfs(SB)\nGLOBL\t·libc_statfs_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_statfs_trampoline_addr(SB)/8, $libc_statfs_trampoline<>(SB)\n\nTEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlink(SB)\nGLOBL\t·libc_symlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB)\n\nTEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlinkat(SB)\nGLOBL\t·libc_symlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB)\n\nTEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sync(SB)\nGLOBL\t·libc_sync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB)\n\nTEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_truncate(SB)\nGLOBL\t·libc_truncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB)\n\nTEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_umask(SB)\nGLOBL\t·libc_umask_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB)\n\nTEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlink(SB)\nGLOBL\t·libc_unlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB)\n\nTEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlinkat(SB)\nGLOBL\t·libc_unlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB)\n\nTEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unmount(SB)\nGLOBL\t·libc_unmount_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB)\n\nTEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_write(SB)\nGLOBL\t·libc_write_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB)\n\nTEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mmap(SB)\nGLOBL\t·libc_mmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB)\n\nTEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munmap(SB)\nGLOBL\t·libc_munmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB)\n\nTEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getfsstat(SB)\nGLOBL\t·libc_getfsstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getfsstat_trampoline_addr(SB)/8, $libc_getfsstat_trampoline<>(SB)\n\nTEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimensat(SB)\nGLOBL\t·libc_utimensat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB)\n\nTEXT libc_pledge_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pledge(SB)\nGLOBL\t·libc_pledge_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pledge_trampoline_addr(SB)/8, $libc_pledge_trampoline<>(SB)\n\nTEXT libc_unveil_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unveil(SB)\nGLOBL\t·libc_unveil_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unveil_trampoline_addr(SB)/8, $libc_unveil_trampoline<>(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go",
    "content": "// go run mksyscall.go -l32 -openbsd -arm -libc -tags openbsd,arm syscall_bsd.go syscall_openbsd.go syscall_openbsd_arm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build openbsd && arm\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgroups getgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgroups setgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_wait4_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_wait4 wait4 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_accept_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_accept accept \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_bind_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_bind bind \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_connect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_connect connect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socket_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socket socket \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockopt getsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsockopt setsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpeername_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpeername getpeername \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockname_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockname getsockname \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shutdown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shutdown shutdown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socketpair_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socketpair socketpair \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvfrom_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvfrom recvfrom \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendto_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendto sendto \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvmsg recvmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendmsg sendmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kevent_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kevent kevent \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimes utimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_futimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_futimes futimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_poll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_poll poll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_madvise_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_madvise madvise \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlock mlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlockall mlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mprotect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mprotect mprotect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_msync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_msync msync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlock munlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlockall munlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_pipe2_trampoline_addr, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pipe2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pipe2 pipe2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getdents_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getdents_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getdents getdents \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getcwd_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getcwd getcwd \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) {\n\tsyscall_rawSyscall(libc_getresuid_trampoline_addr, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid)))\n\treturn\n}\n\nvar libc_getresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresuid getresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) {\n\tsyscall_rawSyscall(libc_getresgid_trampoline_addr, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid)))\n\treturn\n}\n\nvar libc_getresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresgid getresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ioctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ioctl ioctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sysctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sysctl sysctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fcntl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fcntl fcntl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_ppoll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ppoll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ppoll ppoll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_access_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_access access \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_adjtime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_adjtime adjtime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chdir chdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chflags chflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chmod chmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chown chown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chroot_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chroot chroot \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_clock_gettime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_clock_gettime clock_gettime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_close_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_close close \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup dup \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup2 dup2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(from int, to int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup3_trampoline_addr, uintptr(from), uintptr(to), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup3_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup3 dup3 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tsyscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0)\n\treturn\n}\n\nvar libc_exit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_exit exit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_faccessat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_faccessat faccessat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchdir fchdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchflags fchflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmod fchmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmodat fchmodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchown fchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchownat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchownat fchownat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_flock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_flock flock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fpathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fpathconf fpathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstat fstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fstatat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatat fstatat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstatfs_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatfs fstatfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fsync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fsync fsync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_ftruncate_trampoline_addr, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ftruncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ftruncate ftruncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\nvar libc_getegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getegid getegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_geteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_geteuid geteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\nvar libc_getgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgid getgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgid getpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\nvar libc_getpgrp_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgrp getpgrp \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\nvar libc_getpid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpid getpid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\nvar libc_getppid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getppid getppid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpriority getpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrlimit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrlimit getrlimit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrtable() (rtable int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getrtable_trampoline_addr, 0, 0, 0)\n\trtable = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrtable getrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrusage_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrusage getrusage \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsid getsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_gettimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_gettimeofday gettimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_getuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getuid getuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := syscall_syscall(libc_issetugid_trampoline_addr, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\nvar libc_issetugid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_issetugid issetugid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kill_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kill kill \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kqueue_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kqueue kqueue \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lchown lchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_link_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_link link \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_linkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_linkat linkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_listen_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_listen listen \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lstat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lstat lstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdir mkdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdirat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdirat mkdirat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifo_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifo mkfifo \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifoat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifoat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifoat mkfifoat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknod mknod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mknodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknodat mknodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(fsType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(dir)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mount mount \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_nanosleep_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_nanosleep nanosleep \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_open_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_open_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_open open \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_openat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_openat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_openat openat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_pathconf_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pathconf pathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pread_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pread_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pread pread \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pwrite_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pwrite_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pwrite pwrite \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_read_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_read read \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_readlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlink readlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_readlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlinkat readlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rename_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rename_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rename rename \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_renameat_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_renameat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_renameat renameat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_revoke_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_revoke_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_revoke revoke \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rmdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rmdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rmdir rmdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, r1, e1 := syscall_syscall6(libc_lseek_trampoline_addr, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0)\n\tnewoffset = int64(int64(r1)<<32 | int64(r0))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lseek_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lseek lseek \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_select_trampoline_addr, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_select_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_select select \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setegid setegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_seteuid_trampoline_addr, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_seteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_seteuid seteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgid_trampoline_addr, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgid setgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_setlogin_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setlogin_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setlogin setlogin \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setpgid_trampoline_addr, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpgid setpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_setpriority_trampoline_addr, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpriority setpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setregid_trampoline_addr, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setregid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setregid setregid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setreuid_trampoline_addr, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setreuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setreuid setreuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setresgid_trampoline_addr, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setresgid setresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setresuid_trampoline_addr, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setresuid setresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setrtable(rtable int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setrtable_trampoline_addr, uintptr(rtable), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setrtable setrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsid setsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_settimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_settimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_settimeofday settimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setuid_trampoline_addr, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setuid setuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_stat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_stat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_stat stat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_statfs_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_statfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_statfs statfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlink symlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlinkat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlinkat symlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := syscall_syscall(libc_sync_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sync sync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_truncate_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_truncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_truncate truncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := syscall_syscall(libc_umask_trampoline_addr, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\nvar libc_umask_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_umask umask \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlink unlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlinkat unlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unmount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unmount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unmount unmount \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_write_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_write write \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := syscall_syscall9(libc_mmap_trampoline_addr, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0)\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mmap mmap \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_munmap_trampoline_addr, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munmap munmap \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getfsstat_trampoline_addr, uintptr(unsafe.Pointer(stat)), uintptr(bufsize), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getfsstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getfsstat getfsstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_utimensat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimensat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimensat utimensat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pledge(promises *byte, execpromises *byte) (err error) {\n\t_, _, e1 := syscall_syscall(libc_pledge_trampoline_addr, uintptr(unsafe.Pointer(promises)), uintptr(unsafe.Pointer(execpromises)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pledge_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pledge pledge \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc unveil(path *byte, flags *byte) (err error) {\n\t_, _, e1 := syscall_syscall(libc_unveil_trampoline_addr, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(flags)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unveil_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unveil unveil \"libc.so\"\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.s",
    "content": "// go run mkasm.go openbsd arm\n// Code generated by the command above; DO NOT EDIT.\n\n#include \"textflag.h\"\n\nTEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgroups(SB)\nGLOBL\t·libc_getgroups_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getgroups_trampoline_addr(SB)/4, $libc_getgroups_trampoline<>(SB)\n\nTEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgroups(SB)\nGLOBL\t·libc_setgroups_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setgroups_trampoline_addr(SB)/4, $libc_setgroups_trampoline<>(SB)\n\nTEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_wait4(SB)\nGLOBL\t·libc_wait4_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_wait4_trampoline_addr(SB)/4, $libc_wait4_trampoline<>(SB)\n\nTEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_accept(SB)\nGLOBL\t·libc_accept_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_accept_trampoline_addr(SB)/4, $libc_accept_trampoline<>(SB)\n\nTEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_bind(SB)\nGLOBL\t·libc_bind_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_bind_trampoline_addr(SB)/4, $libc_bind_trampoline<>(SB)\n\nTEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_connect(SB)\nGLOBL\t·libc_connect_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_connect_trampoline_addr(SB)/4, $libc_connect_trampoline<>(SB)\n\nTEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socket(SB)\nGLOBL\t·libc_socket_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_socket_trampoline_addr(SB)/4, $libc_socket_trampoline<>(SB)\n\nTEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockopt(SB)\nGLOBL\t·libc_getsockopt_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getsockopt_trampoline_addr(SB)/4, $libc_getsockopt_trampoline<>(SB)\n\nTEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsockopt(SB)\nGLOBL\t·libc_setsockopt_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setsockopt_trampoline_addr(SB)/4, $libc_setsockopt_trampoline<>(SB)\n\nTEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpeername(SB)\nGLOBL\t·libc_getpeername_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getpeername_trampoline_addr(SB)/4, $libc_getpeername_trampoline<>(SB)\n\nTEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockname(SB)\nGLOBL\t·libc_getsockname_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getsockname_trampoline_addr(SB)/4, $libc_getsockname_trampoline<>(SB)\n\nTEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shutdown(SB)\nGLOBL\t·libc_shutdown_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_shutdown_trampoline_addr(SB)/4, $libc_shutdown_trampoline<>(SB)\n\nTEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socketpair(SB)\nGLOBL\t·libc_socketpair_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_socketpair_trampoline_addr(SB)/4, $libc_socketpair_trampoline<>(SB)\n\nTEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvfrom(SB)\nGLOBL\t·libc_recvfrom_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_recvfrom_trampoline_addr(SB)/4, $libc_recvfrom_trampoline<>(SB)\n\nTEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendto(SB)\nGLOBL\t·libc_sendto_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_sendto_trampoline_addr(SB)/4, $libc_sendto_trampoline<>(SB)\n\nTEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvmsg(SB)\nGLOBL\t·libc_recvmsg_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_recvmsg_trampoline_addr(SB)/4, $libc_recvmsg_trampoline<>(SB)\n\nTEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendmsg(SB)\nGLOBL\t·libc_sendmsg_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_sendmsg_trampoline_addr(SB)/4, $libc_sendmsg_trampoline<>(SB)\n\nTEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kevent(SB)\nGLOBL\t·libc_kevent_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_kevent_trampoline_addr(SB)/4, $libc_kevent_trampoline<>(SB)\n\nTEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimes(SB)\nGLOBL\t·libc_utimes_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_utimes_trampoline_addr(SB)/4, $libc_utimes_trampoline<>(SB)\n\nTEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_futimes(SB)\nGLOBL\t·libc_futimes_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_futimes_trampoline_addr(SB)/4, $libc_futimes_trampoline<>(SB)\n\nTEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_poll(SB)\nGLOBL\t·libc_poll_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_poll_trampoline_addr(SB)/4, $libc_poll_trampoline<>(SB)\n\nTEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_madvise(SB)\nGLOBL\t·libc_madvise_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_madvise_trampoline_addr(SB)/4, $libc_madvise_trampoline<>(SB)\n\nTEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlock(SB)\nGLOBL\t·libc_mlock_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mlock_trampoline_addr(SB)/4, $libc_mlock_trampoline<>(SB)\n\nTEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlockall(SB)\nGLOBL\t·libc_mlockall_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mlockall_trampoline_addr(SB)/4, $libc_mlockall_trampoline<>(SB)\n\nTEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mprotect(SB)\nGLOBL\t·libc_mprotect_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mprotect_trampoline_addr(SB)/4, $libc_mprotect_trampoline<>(SB)\n\nTEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_msync(SB)\nGLOBL\t·libc_msync_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_msync_trampoline_addr(SB)/4, $libc_msync_trampoline<>(SB)\n\nTEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlock(SB)\nGLOBL\t·libc_munlock_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_munlock_trampoline_addr(SB)/4, $libc_munlock_trampoline<>(SB)\n\nTEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlockall(SB)\nGLOBL\t·libc_munlockall_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_munlockall_trampoline_addr(SB)/4, $libc_munlockall_trampoline<>(SB)\n\nTEXT libc_pipe2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pipe2(SB)\nGLOBL\t·libc_pipe2_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_pipe2_trampoline_addr(SB)/4, $libc_pipe2_trampoline<>(SB)\n\nTEXT libc_getdents_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getdents(SB)\nGLOBL\t·libc_getdents_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getdents_trampoline_addr(SB)/4, $libc_getdents_trampoline<>(SB)\n\nTEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getcwd(SB)\nGLOBL\t·libc_getcwd_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getcwd_trampoline_addr(SB)/4, $libc_getcwd_trampoline<>(SB)\n\nTEXT libc_getresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getresuid(SB)\nGLOBL\t·libc_getresuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getresuid_trampoline_addr(SB)/4, $libc_getresuid_trampoline<>(SB)\n\nTEXT libc_getresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getresgid(SB)\nGLOBL\t·libc_getresgid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getresgid_trampoline_addr(SB)/4, $libc_getresgid_trampoline<>(SB)\n\nTEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ioctl(SB)\nGLOBL\t·libc_ioctl_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_ioctl_trampoline_addr(SB)/4, $libc_ioctl_trampoline<>(SB)\n\nTEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sysctl(SB)\nGLOBL\t·libc_sysctl_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_sysctl_trampoline_addr(SB)/4, $libc_sysctl_trampoline<>(SB)\n\nTEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fcntl(SB)\nGLOBL\t·libc_fcntl_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fcntl_trampoline_addr(SB)/4, $libc_fcntl_trampoline<>(SB)\n\nTEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ppoll(SB)\nGLOBL\t·libc_ppoll_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_ppoll_trampoline_addr(SB)/4, $libc_ppoll_trampoline<>(SB)\n\nTEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_access(SB)\nGLOBL\t·libc_access_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_access_trampoline_addr(SB)/4, $libc_access_trampoline<>(SB)\n\nTEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_adjtime(SB)\nGLOBL\t·libc_adjtime_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_adjtime_trampoline_addr(SB)/4, $libc_adjtime_trampoline<>(SB)\n\nTEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chdir(SB)\nGLOBL\t·libc_chdir_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_chdir_trampoline_addr(SB)/4, $libc_chdir_trampoline<>(SB)\n\nTEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chflags(SB)\nGLOBL\t·libc_chflags_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_chflags_trampoline_addr(SB)/4, $libc_chflags_trampoline<>(SB)\n\nTEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chmod(SB)\nGLOBL\t·libc_chmod_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_chmod_trampoline_addr(SB)/4, $libc_chmod_trampoline<>(SB)\n\nTEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chown(SB)\nGLOBL\t·libc_chown_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_chown_trampoline_addr(SB)/4, $libc_chown_trampoline<>(SB)\n\nTEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chroot(SB)\nGLOBL\t·libc_chroot_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_chroot_trampoline_addr(SB)/4, $libc_chroot_trampoline<>(SB)\n\nTEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_clock_gettime(SB)\nGLOBL\t·libc_clock_gettime_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_clock_gettime_trampoline_addr(SB)/4, $libc_clock_gettime_trampoline<>(SB)\n\nTEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_close(SB)\nGLOBL\t·libc_close_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_close_trampoline_addr(SB)/4, $libc_close_trampoline<>(SB)\n\nTEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup(SB)\nGLOBL\t·libc_dup_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_dup_trampoline_addr(SB)/4, $libc_dup_trampoline<>(SB)\n\nTEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup2(SB)\nGLOBL\t·libc_dup2_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_dup2_trampoline_addr(SB)/4, $libc_dup2_trampoline<>(SB)\n\nTEXT libc_dup3_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup3(SB)\nGLOBL\t·libc_dup3_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_dup3_trampoline_addr(SB)/4, $libc_dup3_trampoline<>(SB)\n\nTEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_exit(SB)\nGLOBL\t·libc_exit_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_exit_trampoline_addr(SB)/4, $libc_exit_trampoline<>(SB)\n\nTEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_faccessat(SB)\nGLOBL\t·libc_faccessat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_faccessat_trampoline_addr(SB)/4, $libc_faccessat_trampoline<>(SB)\n\nTEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchdir(SB)\nGLOBL\t·libc_fchdir_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fchdir_trampoline_addr(SB)/4, $libc_fchdir_trampoline<>(SB)\n\nTEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchflags(SB)\nGLOBL\t·libc_fchflags_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fchflags_trampoline_addr(SB)/4, $libc_fchflags_trampoline<>(SB)\n\nTEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmod(SB)\nGLOBL\t·libc_fchmod_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fchmod_trampoline_addr(SB)/4, $libc_fchmod_trampoline<>(SB)\n\nTEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmodat(SB)\nGLOBL\t·libc_fchmodat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fchmodat_trampoline_addr(SB)/4, $libc_fchmodat_trampoline<>(SB)\n\nTEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchown(SB)\nGLOBL\t·libc_fchown_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fchown_trampoline_addr(SB)/4, $libc_fchown_trampoline<>(SB)\n\nTEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchownat(SB)\nGLOBL\t·libc_fchownat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fchownat_trampoline_addr(SB)/4, $libc_fchownat_trampoline<>(SB)\n\nTEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_flock(SB)\nGLOBL\t·libc_flock_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_flock_trampoline_addr(SB)/4, $libc_flock_trampoline<>(SB)\n\nTEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fpathconf(SB)\nGLOBL\t·libc_fpathconf_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fpathconf_trampoline_addr(SB)/4, $libc_fpathconf_trampoline<>(SB)\n\nTEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstat(SB)\nGLOBL\t·libc_fstat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fstat_trampoline_addr(SB)/4, $libc_fstat_trampoline<>(SB)\n\nTEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatat(SB)\nGLOBL\t·libc_fstatat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fstatat_trampoline_addr(SB)/4, $libc_fstatat_trampoline<>(SB)\n\nTEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatfs(SB)\nGLOBL\t·libc_fstatfs_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fstatfs_trampoline_addr(SB)/4, $libc_fstatfs_trampoline<>(SB)\n\nTEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fsync(SB)\nGLOBL\t·libc_fsync_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fsync_trampoline_addr(SB)/4, $libc_fsync_trampoline<>(SB)\n\nTEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ftruncate(SB)\nGLOBL\t·libc_ftruncate_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_ftruncate_trampoline_addr(SB)/4, $libc_ftruncate_trampoline<>(SB)\n\nTEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getegid(SB)\nGLOBL\t·libc_getegid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getegid_trampoline_addr(SB)/4, $libc_getegid_trampoline<>(SB)\n\nTEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_geteuid(SB)\nGLOBL\t·libc_geteuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_geteuid_trampoline_addr(SB)/4, $libc_geteuid_trampoline<>(SB)\n\nTEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgid(SB)\nGLOBL\t·libc_getgid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getgid_trampoline_addr(SB)/4, $libc_getgid_trampoline<>(SB)\n\nTEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgid(SB)\nGLOBL\t·libc_getpgid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getpgid_trampoline_addr(SB)/4, $libc_getpgid_trampoline<>(SB)\n\nTEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgrp(SB)\nGLOBL\t·libc_getpgrp_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getpgrp_trampoline_addr(SB)/4, $libc_getpgrp_trampoline<>(SB)\n\nTEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpid(SB)\nGLOBL\t·libc_getpid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getpid_trampoline_addr(SB)/4, $libc_getpid_trampoline<>(SB)\n\nTEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getppid(SB)\nGLOBL\t·libc_getppid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getppid_trampoline_addr(SB)/4, $libc_getppid_trampoline<>(SB)\n\nTEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpriority(SB)\nGLOBL\t·libc_getpriority_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getpriority_trampoline_addr(SB)/4, $libc_getpriority_trampoline<>(SB)\n\nTEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrlimit(SB)\nGLOBL\t·libc_getrlimit_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getrlimit_trampoline_addr(SB)/4, $libc_getrlimit_trampoline<>(SB)\n\nTEXT libc_getrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrtable(SB)\nGLOBL\t·libc_getrtable_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getrtable_trampoline_addr(SB)/4, $libc_getrtable_trampoline<>(SB)\n\nTEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrusage(SB)\nGLOBL\t·libc_getrusage_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getrusage_trampoline_addr(SB)/4, $libc_getrusage_trampoline<>(SB)\n\nTEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsid(SB)\nGLOBL\t·libc_getsid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getsid_trampoline_addr(SB)/4, $libc_getsid_trampoline<>(SB)\n\nTEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_gettimeofday(SB)\nGLOBL\t·libc_gettimeofday_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_gettimeofday_trampoline_addr(SB)/4, $libc_gettimeofday_trampoline<>(SB)\n\nTEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getuid(SB)\nGLOBL\t·libc_getuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getuid_trampoline_addr(SB)/4, $libc_getuid_trampoline<>(SB)\n\nTEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_issetugid(SB)\nGLOBL\t·libc_issetugid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_issetugid_trampoline_addr(SB)/4, $libc_issetugid_trampoline<>(SB)\n\nTEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kill(SB)\nGLOBL\t·libc_kill_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_kill_trampoline_addr(SB)/4, $libc_kill_trampoline<>(SB)\n\nTEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kqueue(SB)\nGLOBL\t·libc_kqueue_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_kqueue_trampoline_addr(SB)/4, $libc_kqueue_trampoline<>(SB)\n\nTEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lchown(SB)\nGLOBL\t·libc_lchown_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_lchown_trampoline_addr(SB)/4, $libc_lchown_trampoline<>(SB)\n\nTEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_link(SB)\nGLOBL\t·libc_link_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_link_trampoline_addr(SB)/4, $libc_link_trampoline<>(SB)\n\nTEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_linkat(SB)\nGLOBL\t·libc_linkat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_linkat_trampoline_addr(SB)/4, $libc_linkat_trampoline<>(SB)\n\nTEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_listen(SB)\nGLOBL\t·libc_listen_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_listen_trampoline_addr(SB)/4, $libc_listen_trampoline<>(SB)\n\nTEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lstat(SB)\nGLOBL\t·libc_lstat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_lstat_trampoline_addr(SB)/4, $libc_lstat_trampoline<>(SB)\n\nTEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdir(SB)\nGLOBL\t·libc_mkdir_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mkdir_trampoline_addr(SB)/4, $libc_mkdir_trampoline<>(SB)\n\nTEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdirat(SB)\nGLOBL\t·libc_mkdirat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mkdirat_trampoline_addr(SB)/4, $libc_mkdirat_trampoline<>(SB)\n\nTEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifo(SB)\nGLOBL\t·libc_mkfifo_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mkfifo_trampoline_addr(SB)/4, $libc_mkfifo_trampoline<>(SB)\n\nTEXT libc_mkfifoat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifoat(SB)\nGLOBL\t·libc_mkfifoat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mkfifoat_trampoline_addr(SB)/4, $libc_mkfifoat_trampoline<>(SB)\n\nTEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknod(SB)\nGLOBL\t·libc_mknod_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mknod_trampoline_addr(SB)/4, $libc_mknod_trampoline<>(SB)\n\nTEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknodat(SB)\nGLOBL\t·libc_mknodat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mknodat_trampoline_addr(SB)/4, $libc_mknodat_trampoline<>(SB)\n\nTEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mount(SB)\nGLOBL\t·libc_mount_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mount_trampoline_addr(SB)/4, $libc_mount_trampoline<>(SB)\n\nTEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_nanosleep(SB)\nGLOBL\t·libc_nanosleep_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_nanosleep_trampoline_addr(SB)/4, $libc_nanosleep_trampoline<>(SB)\n\nTEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_open(SB)\nGLOBL\t·libc_open_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_open_trampoline_addr(SB)/4, $libc_open_trampoline<>(SB)\n\nTEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_openat(SB)\nGLOBL\t·libc_openat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_openat_trampoline_addr(SB)/4, $libc_openat_trampoline<>(SB)\n\nTEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pathconf(SB)\nGLOBL\t·libc_pathconf_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_pathconf_trampoline_addr(SB)/4, $libc_pathconf_trampoline<>(SB)\n\nTEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pread(SB)\nGLOBL\t·libc_pread_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_pread_trampoline_addr(SB)/4, $libc_pread_trampoline<>(SB)\n\nTEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pwrite(SB)\nGLOBL\t·libc_pwrite_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_pwrite_trampoline_addr(SB)/4, $libc_pwrite_trampoline<>(SB)\n\nTEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_read(SB)\nGLOBL\t·libc_read_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_read_trampoline_addr(SB)/4, $libc_read_trampoline<>(SB)\n\nTEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlink(SB)\nGLOBL\t·libc_readlink_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_readlink_trampoline_addr(SB)/4, $libc_readlink_trampoline<>(SB)\n\nTEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlinkat(SB)\nGLOBL\t·libc_readlinkat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_readlinkat_trampoline_addr(SB)/4, $libc_readlinkat_trampoline<>(SB)\n\nTEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rename(SB)\nGLOBL\t·libc_rename_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_rename_trampoline_addr(SB)/4, $libc_rename_trampoline<>(SB)\n\nTEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_renameat(SB)\nGLOBL\t·libc_renameat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_renameat_trampoline_addr(SB)/4, $libc_renameat_trampoline<>(SB)\n\nTEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_revoke(SB)\nGLOBL\t·libc_revoke_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_revoke_trampoline_addr(SB)/4, $libc_revoke_trampoline<>(SB)\n\nTEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rmdir(SB)\nGLOBL\t·libc_rmdir_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_rmdir_trampoline_addr(SB)/4, $libc_rmdir_trampoline<>(SB)\n\nTEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lseek(SB)\nGLOBL\t·libc_lseek_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_lseek_trampoline_addr(SB)/4, $libc_lseek_trampoline<>(SB)\n\nTEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_select(SB)\nGLOBL\t·libc_select_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_select_trampoline_addr(SB)/4, $libc_select_trampoline<>(SB)\n\nTEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setegid(SB)\nGLOBL\t·libc_setegid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setegid_trampoline_addr(SB)/4, $libc_setegid_trampoline<>(SB)\n\nTEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_seteuid(SB)\nGLOBL\t·libc_seteuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_seteuid_trampoline_addr(SB)/4, $libc_seteuid_trampoline<>(SB)\n\nTEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgid(SB)\nGLOBL\t·libc_setgid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setgid_trampoline_addr(SB)/4, $libc_setgid_trampoline<>(SB)\n\nTEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setlogin(SB)\nGLOBL\t·libc_setlogin_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setlogin_trampoline_addr(SB)/4, $libc_setlogin_trampoline<>(SB)\n\nTEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpgid(SB)\nGLOBL\t·libc_setpgid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setpgid_trampoline_addr(SB)/4, $libc_setpgid_trampoline<>(SB)\n\nTEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpriority(SB)\nGLOBL\t·libc_setpriority_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setpriority_trampoline_addr(SB)/4, $libc_setpriority_trampoline<>(SB)\n\nTEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setregid(SB)\nGLOBL\t·libc_setregid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setregid_trampoline_addr(SB)/4, $libc_setregid_trampoline<>(SB)\n\nTEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setreuid(SB)\nGLOBL\t·libc_setreuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setreuid_trampoline_addr(SB)/4, $libc_setreuid_trampoline<>(SB)\n\nTEXT libc_setresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setresgid(SB)\nGLOBL\t·libc_setresgid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setresgid_trampoline_addr(SB)/4, $libc_setresgid_trampoline<>(SB)\n\nTEXT libc_setresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setresuid(SB)\nGLOBL\t·libc_setresuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setresuid_trampoline_addr(SB)/4, $libc_setresuid_trampoline<>(SB)\n\nTEXT libc_setrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setrtable(SB)\nGLOBL\t·libc_setrtable_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setrtable_trampoline_addr(SB)/4, $libc_setrtable_trampoline<>(SB)\n\nTEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsid(SB)\nGLOBL\t·libc_setsid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setsid_trampoline_addr(SB)/4, $libc_setsid_trampoline<>(SB)\n\nTEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_settimeofday(SB)\nGLOBL\t·libc_settimeofday_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_settimeofday_trampoline_addr(SB)/4, $libc_settimeofday_trampoline<>(SB)\n\nTEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setuid(SB)\nGLOBL\t·libc_setuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setuid_trampoline_addr(SB)/4, $libc_setuid_trampoline<>(SB)\n\nTEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_stat(SB)\nGLOBL\t·libc_stat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_stat_trampoline_addr(SB)/4, $libc_stat_trampoline<>(SB)\n\nTEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_statfs(SB)\nGLOBL\t·libc_statfs_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_statfs_trampoline_addr(SB)/4, $libc_statfs_trampoline<>(SB)\n\nTEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlink(SB)\nGLOBL\t·libc_symlink_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_symlink_trampoline_addr(SB)/4, $libc_symlink_trampoline<>(SB)\n\nTEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlinkat(SB)\nGLOBL\t·libc_symlinkat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_symlinkat_trampoline_addr(SB)/4, $libc_symlinkat_trampoline<>(SB)\n\nTEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sync(SB)\nGLOBL\t·libc_sync_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_sync_trampoline_addr(SB)/4, $libc_sync_trampoline<>(SB)\n\nTEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_truncate(SB)\nGLOBL\t·libc_truncate_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_truncate_trampoline_addr(SB)/4, $libc_truncate_trampoline<>(SB)\n\nTEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_umask(SB)\nGLOBL\t·libc_umask_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_umask_trampoline_addr(SB)/4, $libc_umask_trampoline<>(SB)\n\nTEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlink(SB)\nGLOBL\t·libc_unlink_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_unlink_trampoline_addr(SB)/4, $libc_unlink_trampoline<>(SB)\n\nTEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlinkat(SB)\nGLOBL\t·libc_unlinkat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_unlinkat_trampoline_addr(SB)/4, $libc_unlinkat_trampoline<>(SB)\n\nTEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unmount(SB)\nGLOBL\t·libc_unmount_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_unmount_trampoline_addr(SB)/4, $libc_unmount_trampoline<>(SB)\n\nTEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_write(SB)\nGLOBL\t·libc_write_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_write_trampoline_addr(SB)/4, $libc_write_trampoline<>(SB)\n\nTEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mmap(SB)\nGLOBL\t·libc_mmap_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mmap_trampoline_addr(SB)/4, $libc_mmap_trampoline<>(SB)\n\nTEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munmap(SB)\nGLOBL\t·libc_munmap_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_munmap_trampoline_addr(SB)/4, $libc_munmap_trampoline<>(SB)\n\nTEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getfsstat(SB)\nGLOBL\t·libc_getfsstat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getfsstat_trampoline_addr(SB)/4, $libc_getfsstat_trampoline<>(SB)\n\nTEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimensat(SB)\nGLOBL\t·libc_utimensat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_utimensat_trampoline_addr(SB)/4, $libc_utimensat_trampoline<>(SB)\n\nTEXT libc_pledge_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pledge(SB)\nGLOBL\t·libc_pledge_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_pledge_trampoline_addr(SB)/4, $libc_pledge_trampoline<>(SB)\n\nTEXT libc_unveil_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unveil(SB)\nGLOBL\t·libc_unveil_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_unveil_trampoline_addr(SB)/4, $libc_unveil_trampoline<>(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go",
    "content": "// go run mksyscall.go -openbsd -libc -tags openbsd,arm64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_arm64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build openbsd && arm64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgroups getgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgroups setgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_wait4_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_wait4 wait4 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_accept_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_accept accept \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_bind_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_bind bind \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_connect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_connect connect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socket_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socket socket \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockopt getsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsockopt setsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpeername_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpeername getpeername \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockname_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockname getsockname \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shutdown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shutdown shutdown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socketpair_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socketpair socketpair \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvfrom_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvfrom recvfrom \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendto_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendto sendto \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvmsg recvmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendmsg sendmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kevent_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kevent kevent \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimes utimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_futimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_futimes futimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_poll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_poll poll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_madvise_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_madvise madvise \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlock mlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlockall mlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mprotect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mprotect mprotect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_msync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_msync msync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlock munlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlockall munlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_pipe2_trampoline_addr, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pipe2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pipe2 pipe2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getdents_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getdents_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getdents getdents \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getcwd_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getcwd getcwd \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) {\n\tsyscall_rawSyscall(libc_getresuid_trampoline_addr, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid)))\n\treturn\n}\n\nvar libc_getresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresuid getresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) {\n\tsyscall_rawSyscall(libc_getresgid_trampoline_addr, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid)))\n\treturn\n}\n\nvar libc_getresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresgid getresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ioctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ioctl ioctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sysctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sysctl sysctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fcntl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fcntl fcntl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_ppoll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ppoll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ppoll ppoll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_access_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_access access \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_adjtime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_adjtime adjtime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chdir chdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chflags chflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chmod chmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chown chown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chroot_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chroot chroot \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_clock_gettime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_clock_gettime clock_gettime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_close_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_close close \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup dup \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup2 dup2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(from int, to int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup3_trampoline_addr, uintptr(from), uintptr(to), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup3_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup3 dup3 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tsyscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0)\n\treturn\n}\n\nvar libc_exit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_exit exit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_faccessat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_faccessat faccessat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchdir fchdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchflags fchflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmod fchmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmodat fchmodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchown fchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchownat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchownat fchownat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_flock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_flock flock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fpathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fpathconf fpathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstat fstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fstatat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatat fstatat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstatfs_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatfs fstatfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fsync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fsync fsync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ftruncate_trampoline_addr, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ftruncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ftruncate ftruncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\nvar libc_getegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getegid getegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_geteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_geteuid geteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\nvar libc_getgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgid getgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgid getpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\nvar libc_getpgrp_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgrp getpgrp \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\nvar libc_getpid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpid getpid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\nvar libc_getppid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getppid getppid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpriority getpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrlimit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrlimit getrlimit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrtable() (rtable int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getrtable_trampoline_addr, 0, 0, 0)\n\trtable = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrtable getrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrusage_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrusage getrusage \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsid getsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_gettimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_gettimeofday gettimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_getuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getuid getuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := syscall_syscall(libc_issetugid_trampoline_addr, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\nvar libc_issetugid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_issetugid issetugid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kill_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kill kill \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kqueue_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kqueue kqueue \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lchown lchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_link_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_link link \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_linkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_linkat linkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_listen_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_listen listen \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lstat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lstat lstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdir mkdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdirat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdirat mkdirat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifo_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifo mkfifo \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifoat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifoat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifoat mkfifoat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknod mknod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mknodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknodat mknodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(fsType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(dir)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mount mount \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_nanosleep_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_nanosleep nanosleep \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_open_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_open_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_open open \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_openat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_openat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_openat openat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_pathconf_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pathconf pathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pread_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pread_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pread pread \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pwrite_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pwrite_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pwrite pwrite \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_read_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_read read \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_readlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlink readlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_readlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlinkat readlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rename_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rename_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rename rename \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_renameat_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_renameat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_renameat renameat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_revoke_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_revoke_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_revoke revoke \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rmdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rmdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rmdir rmdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := syscall_syscall(libc_lseek_trampoline_addr, uintptr(fd), uintptr(offset), uintptr(whence))\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lseek_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lseek lseek \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_select_trampoline_addr, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_select_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_select select \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setegid setegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_seteuid_trampoline_addr, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_seteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_seteuid seteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgid_trampoline_addr, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgid setgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_setlogin_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setlogin_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setlogin setlogin \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setpgid_trampoline_addr, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpgid setpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_setpriority_trampoline_addr, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpriority setpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setregid_trampoline_addr, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setregid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setregid setregid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setreuid_trampoline_addr, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setreuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setreuid setreuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setresgid_trampoline_addr, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setresgid setresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setresuid_trampoline_addr, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setresuid setresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setrtable(rtable int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setrtable_trampoline_addr, uintptr(rtable), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setrtable setrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsid setsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_settimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_settimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_settimeofday settimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setuid_trampoline_addr, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setuid setuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_stat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_stat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_stat stat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_statfs_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_statfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_statfs statfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlink symlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlinkat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlinkat symlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := syscall_syscall(libc_sync_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sync sync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_truncate_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_truncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_truncate truncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := syscall_syscall(libc_umask_trampoline_addr, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\nvar libc_umask_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_umask umask \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlink unlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlinkat unlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unmount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unmount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unmount unmount \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_write_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_write write \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_mmap_trampoline_addr, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mmap mmap \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_munmap_trampoline_addr, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munmap munmap \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getfsstat_trampoline_addr, uintptr(unsafe.Pointer(stat)), uintptr(bufsize), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getfsstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getfsstat getfsstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_utimensat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimensat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimensat utimensat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pledge(promises *byte, execpromises *byte) (err error) {\n\t_, _, e1 := syscall_syscall(libc_pledge_trampoline_addr, uintptr(unsafe.Pointer(promises)), uintptr(unsafe.Pointer(execpromises)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pledge_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pledge pledge \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc unveil(path *byte, flags *byte) (err error) {\n\t_, _, e1 := syscall_syscall(libc_unveil_trampoline_addr, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(flags)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unveil_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unveil unveil \"libc.so\"\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.s",
    "content": "// go run mkasm.go openbsd arm64\n// Code generated by the command above; DO NOT EDIT.\n\n#include \"textflag.h\"\n\nTEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgroups(SB)\nGLOBL\t·libc_getgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB)\n\nTEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgroups(SB)\nGLOBL\t·libc_setgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB)\n\nTEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_wait4(SB)\nGLOBL\t·libc_wait4_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB)\n\nTEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_accept(SB)\nGLOBL\t·libc_accept_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB)\n\nTEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_bind(SB)\nGLOBL\t·libc_bind_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB)\n\nTEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_connect(SB)\nGLOBL\t·libc_connect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB)\n\nTEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socket(SB)\nGLOBL\t·libc_socket_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB)\n\nTEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockopt(SB)\nGLOBL\t·libc_getsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB)\n\nTEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsockopt(SB)\nGLOBL\t·libc_setsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB)\n\nTEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpeername(SB)\nGLOBL\t·libc_getpeername_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB)\n\nTEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockname(SB)\nGLOBL\t·libc_getsockname_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB)\n\nTEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shutdown(SB)\nGLOBL\t·libc_shutdown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB)\n\nTEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socketpair(SB)\nGLOBL\t·libc_socketpair_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB)\n\nTEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvfrom(SB)\nGLOBL\t·libc_recvfrom_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB)\n\nTEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendto(SB)\nGLOBL\t·libc_sendto_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB)\n\nTEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvmsg(SB)\nGLOBL\t·libc_recvmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB)\n\nTEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendmsg(SB)\nGLOBL\t·libc_sendmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB)\n\nTEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kevent(SB)\nGLOBL\t·libc_kevent_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB)\n\nTEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimes(SB)\nGLOBL\t·libc_utimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB)\n\nTEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_futimes(SB)\nGLOBL\t·libc_futimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB)\n\nTEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_poll(SB)\nGLOBL\t·libc_poll_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB)\n\nTEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_madvise(SB)\nGLOBL\t·libc_madvise_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB)\n\nTEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlock(SB)\nGLOBL\t·libc_mlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB)\n\nTEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlockall(SB)\nGLOBL\t·libc_mlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB)\n\nTEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mprotect(SB)\nGLOBL\t·libc_mprotect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB)\n\nTEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_msync(SB)\nGLOBL\t·libc_msync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB)\n\nTEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlock(SB)\nGLOBL\t·libc_munlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB)\n\nTEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlockall(SB)\nGLOBL\t·libc_munlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB)\n\nTEXT libc_pipe2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pipe2(SB)\nGLOBL\t·libc_pipe2_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pipe2_trampoline_addr(SB)/8, $libc_pipe2_trampoline<>(SB)\n\nTEXT libc_getdents_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getdents(SB)\nGLOBL\t·libc_getdents_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getdents_trampoline_addr(SB)/8, $libc_getdents_trampoline<>(SB)\n\nTEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getcwd(SB)\nGLOBL\t·libc_getcwd_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB)\n\nTEXT libc_getresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getresuid(SB)\nGLOBL\t·libc_getresuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getresuid_trampoline_addr(SB)/8, $libc_getresuid_trampoline<>(SB)\n\nTEXT libc_getresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getresgid(SB)\nGLOBL\t·libc_getresgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getresgid_trampoline_addr(SB)/8, $libc_getresgid_trampoline<>(SB)\n\nTEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ioctl(SB)\nGLOBL\t·libc_ioctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB)\n\nTEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sysctl(SB)\nGLOBL\t·libc_sysctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB)\n\nTEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fcntl(SB)\nGLOBL\t·libc_fcntl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB)\n\nTEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ppoll(SB)\nGLOBL\t·libc_ppoll_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ppoll_trampoline_addr(SB)/8, $libc_ppoll_trampoline<>(SB)\n\nTEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_access(SB)\nGLOBL\t·libc_access_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB)\n\nTEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_adjtime(SB)\nGLOBL\t·libc_adjtime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB)\n\nTEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chdir(SB)\nGLOBL\t·libc_chdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB)\n\nTEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chflags(SB)\nGLOBL\t·libc_chflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB)\n\nTEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chmod(SB)\nGLOBL\t·libc_chmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB)\n\nTEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chown(SB)\nGLOBL\t·libc_chown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB)\n\nTEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chroot(SB)\nGLOBL\t·libc_chroot_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB)\n\nTEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_clock_gettime(SB)\nGLOBL\t·libc_clock_gettime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB)\n\nTEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_close(SB)\nGLOBL\t·libc_close_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB)\n\nTEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup(SB)\nGLOBL\t·libc_dup_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB)\n\nTEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup2(SB)\nGLOBL\t·libc_dup2_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB)\n\nTEXT libc_dup3_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup3(SB)\nGLOBL\t·libc_dup3_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup3_trampoline_addr(SB)/8, $libc_dup3_trampoline<>(SB)\n\nTEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_exit(SB)\nGLOBL\t·libc_exit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB)\n\nTEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_faccessat(SB)\nGLOBL\t·libc_faccessat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB)\n\nTEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchdir(SB)\nGLOBL\t·libc_fchdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB)\n\nTEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchflags(SB)\nGLOBL\t·libc_fchflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB)\n\nTEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmod(SB)\nGLOBL\t·libc_fchmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB)\n\nTEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmodat(SB)\nGLOBL\t·libc_fchmodat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB)\n\nTEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchown(SB)\nGLOBL\t·libc_fchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB)\n\nTEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchownat(SB)\nGLOBL\t·libc_fchownat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB)\n\nTEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_flock(SB)\nGLOBL\t·libc_flock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB)\n\nTEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fpathconf(SB)\nGLOBL\t·libc_fpathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB)\n\nTEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstat(SB)\nGLOBL\t·libc_fstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstat_trampoline_addr(SB)/8, $libc_fstat_trampoline<>(SB)\n\nTEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatat(SB)\nGLOBL\t·libc_fstatat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatat_trampoline_addr(SB)/8, $libc_fstatat_trampoline<>(SB)\n\nTEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatfs(SB)\nGLOBL\t·libc_fstatfs_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatfs_trampoline_addr(SB)/8, $libc_fstatfs_trampoline<>(SB)\n\nTEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fsync(SB)\nGLOBL\t·libc_fsync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB)\n\nTEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ftruncate(SB)\nGLOBL\t·libc_ftruncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB)\n\nTEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getegid(SB)\nGLOBL\t·libc_getegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB)\n\nTEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_geteuid(SB)\nGLOBL\t·libc_geteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB)\n\nTEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgid(SB)\nGLOBL\t·libc_getgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB)\n\nTEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgid(SB)\nGLOBL\t·libc_getpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB)\n\nTEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgrp(SB)\nGLOBL\t·libc_getpgrp_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB)\n\nTEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpid(SB)\nGLOBL\t·libc_getpid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB)\n\nTEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getppid(SB)\nGLOBL\t·libc_getppid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB)\n\nTEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpriority(SB)\nGLOBL\t·libc_getpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB)\n\nTEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrlimit(SB)\nGLOBL\t·libc_getrlimit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB)\n\nTEXT libc_getrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrtable(SB)\nGLOBL\t·libc_getrtable_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrtable_trampoline_addr(SB)/8, $libc_getrtable_trampoline<>(SB)\n\nTEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrusage(SB)\nGLOBL\t·libc_getrusage_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB)\n\nTEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsid(SB)\nGLOBL\t·libc_getsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB)\n\nTEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_gettimeofday(SB)\nGLOBL\t·libc_gettimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB)\n\nTEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getuid(SB)\nGLOBL\t·libc_getuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB)\n\nTEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_issetugid(SB)\nGLOBL\t·libc_issetugid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB)\n\nTEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kill(SB)\nGLOBL\t·libc_kill_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB)\n\nTEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kqueue(SB)\nGLOBL\t·libc_kqueue_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB)\n\nTEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lchown(SB)\nGLOBL\t·libc_lchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB)\n\nTEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_link(SB)\nGLOBL\t·libc_link_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB)\n\nTEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_linkat(SB)\nGLOBL\t·libc_linkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB)\n\nTEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_listen(SB)\nGLOBL\t·libc_listen_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB)\n\nTEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lstat(SB)\nGLOBL\t·libc_lstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lstat_trampoline_addr(SB)/8, $libc_lstat_trampoline<>(SB)\n\nTEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdir(SB)\nGLOBL\t·libc_mkdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB)\n\nTEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdirat(SB)\nGLOBL\t·libc_mkdirat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB)\n\nTEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifo(SB)\nGLOBL\t·libc_mkfifo_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB)\n\nTEXT libc_mkfifoat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifoat(SB)\nGLOBL\t·libc_mkfifoat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkfifoat_trampoline_addr(SB)/8, $libc_mkfifoat_trampoline<>(SB)\n\nTEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknod(SB)\nGLOBL\t·libc_mknod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB)\n\nTEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknodat(SB)\nGLOBL\t·libc_mknodat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mknodat_trampoline_addr(SB)/8, $libc_mknodat_trampoline<>(SB)\n\nTEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mount(SB)\nGLOBL\t·libc_mount_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB)\n\nTEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_nanosleep(SB)\nGLOBL\t·libc_nanosleep_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_nanosleep_trampoline_addr(SB)/8, $libc_nanosleep_trampoline<>(SB)\n\nTEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_open(SB)\nGLOBL\t·libc_open_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB)\n\nTEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_openat(SB)\nGLOBL\t·libc_openat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB)\n\nTEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pathconf(SB)\nGLOBL\t·libc_pathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB)\n\nTEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pread(SB)\nGLOBL\t·libc_pread_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB)\n\nTEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pwrite(SB)\nGLOBL\t·libc_pwrite_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB)\n\nTEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_read(SB)\nGLOBL\t·libc_read_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB)\n\nTEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlink(SB)\nGLOBL\t·libc_readlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB)\n\nTEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlinkat(SB)\nGLOBL\t·libc_readlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB)\n\nTEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rename(SB)\nGLOBL\t·libc_rename_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB)\n\nTEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_renameat(SB)\nGLOBL\t·libc_renameat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB)\n\nTEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_revoke(SB)\nGLOBL\t·libc_revoke_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB)\n\nTEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rmdir(SB)\nGLOBL\t·libc_rmdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB)\n\nTEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lseek(SB)\nGLOBL\t·libc_lseek_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB)\n\nTEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_select(SB)\nGLOBL\t·libc_select_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB)\n\nTEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setegid(SB)\nGLOBL\t·libc_setegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB)\n\nTEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_seteuid(SB)\nGLOBL\t·libc_seteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB)\n\nTEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgid(SB)\nGLOBL\t·libc_setgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB)\n\nTEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setlogin(SB)\nGLOBL\t·libc_setlogin_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB)\n\nTEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpgid(SB)\nGLOBL\t·libc_setpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB)\n\nTEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpriority(SB)\nGLOBL\t·libc_setpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB)\n\nTEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setregid(SB)\nGLOBL\t·libc_setregid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB)\n\nTEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setreuid(SB)\nGLOBL\t·libc_setreuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB)\n\nTEXT libc_setresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setresgid(SB)\nGLOBL\t·libc_setresgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setresgid_trampoline_addr(SB)/8, $libc_setresgid_trampoline<>(SB)\n\nTEXT libc_setresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setresuid(SB)\nGLOBL\t·libc_setresuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setresuid_trampoline_addr(SB)/8, $libc_setresuid_trampoline<>(SB)\n\nTEXT libc_setrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setrtable(SB)\nGLOBL\t·libc_setrtable_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setrtable_trampoline_addr(SB)/8, $libc_setrtable_trampoline<>(SB)\n\nTEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsid(SB)\nGLOBL\t·libc_setsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB)\n\nTEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_settimeofday(SB)\nGLOBL\t·libc_settimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB)\n\nTEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setuid(SB)\nGLOBL\t·libc_setuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB)\n\nTEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_stat(SB)\nGLOBL\t·libc_stat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_stat_trampoline_addr(SB)/8, $libc_stat_trampoline<>(SB)\n\nTEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_statfs(SB)\nGLOBL\t·libc_statfs_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_statfs_trampoline_addr(SB)/8, $libc_statfs_trampoline<>(SB)\n\nTEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlink(SB)\nGLOBL\t·libc_symlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB)\n\nTEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlinkat(SB)\nGLOBL\t·libc_symlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB)\n\nTEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sync(SB)\nGLOBL\t·libc_sync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB)\n\nTEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_truncate(SB)\nGLOBL\t·libc_truncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB)\n\nTEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_umask(SB)\nGLOBL\t·libc_umask_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB)\n\nTEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlink(SB)\nGLOBL\t·libc_unlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB)\n\nTEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlinkat(SB)\nGLOBL\t·libc_unlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB)\n\nTEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unmount(SB)\nGLOBL\t·libc_unmount_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB)\n\nTEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_write(SB)\nGLOBL\t·libc_write_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB)\n\nTEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mmap(SB)\nGLOBL\t·libc_mmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB)\n\nTEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munmap(SB)\nGLOBL\t·libc_munmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB)\n\nTEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getfsstat(SB)\nGLOBL\t·libc_getfsstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getfsstat_trampoline_addr(SB)/8, $libc_getfsstat_trampoline<>(SB)\n\nTEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimensat(SB)\nGLOBL\t·libc_utimensat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB)\n\nTEXT libc_pledge_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pledge(SB)\nGLOBL\t·libc_pledge_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pledge_trampoline_addr(SB)/8, $libc_pledge_trampoline<>(SB)\n\nTEXT libc_unveil_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unveil(SB)\nGLOBL\t·libc_unveil_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unveil_trampoline_addr(SB)/8, $libc_unveil_trampoline<>(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go",
    "content": "// go run mksyscall.go -openbsd -libc -tags openbsd,mips64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_mips64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build openbsd && mips64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgroups getgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgroups setgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_wait4_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_wait4 wait4 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_accept_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_accept accept \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_bind_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_bind bind \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_connect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_connect connect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socket_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socket socket \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockopt getsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsockopt setsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpeername_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpeername getpeername \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockname_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockname getsockname \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shutdown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shutdown shutdown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socketpair_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socketpair socketpair \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvfrom_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvfrom recvfrom \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendto_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendto sendto \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvmsg recvmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendmsg sendmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kevent_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kevent kevent \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimes utimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_futimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_futimes futimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_poll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_poll poll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_madvise_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_madvise madvise \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlock mlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlockall mlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mprotect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mprotect mprotect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_msync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_msync msync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlock munlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlockall munlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_pipe2_trampoline_addr, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pipe2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pipe2 pipe2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getdents_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getdents_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getdents getdents \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getcwd_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getcwd getcwd \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) {\n\tsyscall_rawSyscall(libc_getresuid_trampoline_addr, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid)))\n\treturn\n}\n\nvar libc_getresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresuid getresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) {\n\tsyscall_rawSyscall(libc_getresgid_trampoline_addr, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid)))\n\treturn\n}\n\nvar libc_getresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresgid getresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ioctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ioctl ioctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sysctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sysctl sysctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fcntl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fcntl fcntl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_ppoll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ppoll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ppoll ppoll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_access_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_access access \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_adjtime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_adjtime adjtime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chdir chdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chflags chflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chmod chmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chown chown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chroot_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chroot chroot \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_clock_gettime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_clock_gettime clock_gettime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_close_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_close close \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup dup \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup2 dup2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(from int, to int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup3_trampoline_addr, uintptr(from), uintptr(to), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup3_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup3 dup3 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tsyscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0)\n\treturn\n}\n\nvar libc_exit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_exit exit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_faccessat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_faccessat faccessat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchdir fchdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchflags fchflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmod fchmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmodat fchmodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchown fchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchownat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchownat fchownat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_flock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_flock flock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fpathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fpathconf fpathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstat fstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fstatat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatat fstatat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstatfs_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatfs fstatfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fsync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fsync fsync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ftruncate_trampoline_addr, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ftruncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ftruncate ftruncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\nvar libc_getegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getegid getegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_geteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_geteuid geteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\nvar libc_getgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgid getgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgid getpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\nvar libc_getpgrp_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgrp getpgrp \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\nvar libc_getpid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpid getpid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\nvar libc_getppid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getppid getppid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpriority getpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrlimit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrlimit getrlimit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrtable() (rtable int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getrtable_trampoline_addr, 0, 0, 0)\n\trtable = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrtable getrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrusage_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrusage getrusage \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsid getsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_gettimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_gettimeofday gettimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_getuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getuid getuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := syscall_syscall(libc_issetugid_trampoline_addr, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\nvar libc_issetugid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_issetugid issetugid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kill_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kill kill \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kqueue_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kqueue kqueue \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lchown lchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_link_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_link link \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_linkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_linkat linkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_listen_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_listen listen \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lstat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lstat lstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdir mkdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdirat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdirat mkdirat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifo_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifo mkfifo \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifoat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifoat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifoat mkfifoat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknod mknod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mknodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknodat mknodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(fsType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(dir)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mount mount \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_nanosleep_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_nanosleep nanosleep \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_open_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_open_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_open open \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_openat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_openat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_openat openat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_pathconf_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pathconf pathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pread_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pread_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pread pread \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pwrite_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pwrite_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pwrite pwrite \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_read_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_read read \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_readlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlink readlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_readlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlinkat readlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rename_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rename_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rename rename \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_renameat_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_renameat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_renameat renameat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_revoke_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_revoke_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_revoke revoke \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rmdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rmdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rmdir rmdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := syscall_syscall(libc_lseek_trampoline_addr, uintptr(fd), uintptr(offset), uintptr(whence))\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lseek_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lseek lseek \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_select_trampoline_addr, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_select_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_select select \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setegid setegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_seteuid_trampoline_addr, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_seteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_seteuid seteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgid_trampoline_addr, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgid setgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_setlogin_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setlogin_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setlogin setlogin \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setpgid_trampoline_addr, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpgid setpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_setpriority_trampoline_addr, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpriority setpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setregid_trampoline_addr, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setregid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setregid setregid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setreuid_trampoline_addr, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setreuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setreuid setreuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setresgid_trampoline_addr, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setresgid setresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setresuid_trampoline_addr, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setresuid setresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setrtable(rtable int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setrtable_trampoline_addr, uintptr(rtable), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setrtable setrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsid setsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_settimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_settimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_settimeofday settimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setuid_trampoline_addr, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setuid setuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_stat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_stat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_stat stat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_statfs_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_statfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_statfs statfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlink symlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlinkat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlinkat symlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := syscall_syscall(libc_sync_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sync sync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_truncate_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_truncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_truncate truncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := syscall_syscall(libc_umask_trampoline_addr, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\nvar libc_umask_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_umask umask \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlink unlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlinkat unlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unmount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unmount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unmount unmount \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_write_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_write write \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_mmap_trampoline_addr, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mmap mmap \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_munmap_trampoline_addr, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munmap munmap \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getfsstat_trampoline_addr, uintptr(unsafe.Pointer(stat)), uintptr(bufsize), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getfsstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getfsstat getfsstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_utimensat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimensat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimensat utimensat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pledge(promises *byte, execpromises *byte) (err error) {\n\t_, _, e1 := syscall_syscall(libc_pledge_trampoline_addr, uintptr(unsafe.Pointer(promises)), uintptr(unsafe.Pointer(execpromises)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pledge_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pledge pledge \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc unveil(path *byte, flags *byte) (err error) {\n\t_, _, e1 := syscall_syscall(libc_unveil_trampoline_addr, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(flags)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unveil_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unveil unveil \"libc.so\"\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.s",
    "content": "// go run mkasm.go openbsd mips64\n// Code generated by the command above; DO NOT EDIT.\n\n#include \"textflag.h\"\n\nTEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgroups(SB)\nGLOBL\t·libc_getgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB)\n\nTEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgroups(SB)\nGLOBL\t·libc_setgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB)\n\nTEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_wait4(SB)\nGLOBL\t·libc_wait4_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB)\n\nTEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_accept(SB)\nGLOBL\t·libc_accept_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB)\n\nTEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_bind(SB)\nGLOBL\t·libc_bind_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB)\n\nTEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_connect(SB)\nGLOBL\t·libc_connect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB)\n\nTEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socket(SB)\nGLOBL\t·libc_socket_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB)\n\nTEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockopt(SB)\nGLOBL\t·libc_getsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB)\n\nTEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsockopt(SB)\nGLOBL\t·libc_setsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB)\n\nTEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpeername(SB)\nGLOBL\t·libc_getpeername_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB)\n\nTEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockname(SB)\nGLOBL\t·libc_getsockname_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB)\n\nTEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shutdown(SB)\nGLOBL\t·libc_shutdown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB)\n\nTEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socketpair(SB)\nGLOBL\t·libc_socketpair_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB)\n\nTEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvfrom(SB)\nGLOBL\t·libc_recvfrom_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB)\n\nTEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendto(SB)\nGLOBL\t·libc_sendto_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB)\n\nTEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvmsg(SB)\nGLOBL\t·libc_recvmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB)\n\nTEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendmsg(SB)\nGLOBL\t·libc_sendmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB)\n\nTEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kevent(SB)\nGLOBL\t·libc_kevent_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB)\n\nTEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimes(SB)\nGLOBL\t·libc_utimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB)\n\nTEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_futimes(SB)\nGLOBL\t·libc_futimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB)\n\nTEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_poll(SB)\nGLOBL\t·libc_poll_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB)\n\nTEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_madvise(SB)\nGLOBL\t·libc_madvise_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB)\n\nTEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlock(SB)\nGLOBL\t·libc_mlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB)\n\nTEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlockall(SB)\nGLOBL\t·libc_mlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB)\n\nTEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mprotect(SB)\nGLOBL\t·libc_mprotect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB)\n\nTEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_msync(SB)\nGLOBL\t·libc_msync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB)\n\nTEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlock(SB)\nGLOBL\t·libc_munlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB)\n\nTEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlockall(SB)\nGLOBL\t·libc_munlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB)\n\nTEXT libc_pipe2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pipe2(SB)\nGLOBL\t·libc_pipe2_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pipe2_trampoline_addr(SB)/8, $libc_pipe2_trampoline<>(SB)\n\nTEXT libc_getdents_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getdents(SB)\nGLOBL\t·libc_getdents_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getdents_trampoline_addr(SB)/8, $libc_getdents_trampoline<>(SB)\n\nTEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getcwd(SB)\nGLOBL\t·libc_getcwd_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB)\n\nTEXT libc_getresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getresuid(SB)\nGLOBL\t·libc_getresuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getresuid_trampoline_addr(SB)/8, $libc_getresuid_trampoline<>(SB)\n\nTEXT libc_getresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getresgid(SB)\nGLOBL\t·libc_getresgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getresgid_trampoline_addr(SB)/8, $libc_getresgid_trampoline<>(SB)\n\nTEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ioctl(SB)\nGLOBL\t·libc_ioctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB)\n\nTEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sysctl(SB)\nGLOBL\t·libc_sysctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB)\n\nTEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fcntl(SB)\nGLOBL\t·libc_fcntl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB)\n\nTEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ppoll(SB)\nGLOBL\t·libc_ppoll_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ppoll_trampoline_addr(SB)/8, $libc_ppoll_trampoline<>(SB)\n\nTEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_access(SB)\nGLOBL\t·libc_access_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB)\n\nTEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_adjtime(SB)\nGLOBL\t·libc_adjtime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB)\n\nTEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chdir(SB)\nGLOBL\t·libc_chdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB)\n\nTEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chflags(SB)\nGLOBL\t·libc_chflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB)\n\nTEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chmod(SB)\nGLOBL\t·libc_chmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB)\n\nTEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chown(SB)\nGLOBL\t·libc_chown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB)\n\nTEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chroot(SB)\nGLOBL\t·libc_chroot_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB)\n\nTEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_clock_gettime(SB)\nGLOBL\t·libc_clock_gettime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB)\n\nTEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_close(SB)\nGLOBL\t·libc_close_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB)\n\nTEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup(SB)\nGLOBL\t·libc_dup_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB)\n\nTEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup2(SB)\nGLOBL\t·libc_dup2_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB)\n\nTEXT libc_dup3_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup3(SB)\nGLOBL\t·libc_dup3_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup3_trampoline_addr(SB)/8, $libc_dup3_trampoline<>(SB)\n\nTEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_exit(SB)\nGLOBL\t·libc_exit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB)\n\nTEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_faccessat(SB)\nGLOBL\t·libc_faccessat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB)\n\nTEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchdir(SB)\nGLOBL\t·libc_fchdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB)\n\nTEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchflags(SB)\nGLOBL\t·libc_fchflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB)\n\nTEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmod(SB)\nGLOBL\t·libc_fchmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB)\n\nTEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmodat(SB)\nGLOBL\t·libc_fchmodat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB)\n\nTEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchown(SB)\nGLOBL\t·libc_fchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB)\n\nTEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchownat(SB)\nGLOBL\t·libc_fchownat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB)\n\nTEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_flock(SB)\nGLOBL\t·libc_flock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB)\n\nTEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fpathconf(SB)\nGLOBL\t·libc_fpathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB)\n\nTEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstat(SB)\nGLOBL\t·libc_fstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstat_trampoline_addr(SB)/8, $libc_fstat_trampoline<>(SB)\n\nTEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatat(SB)\nGLOBL\t·libc_fstatat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatat_trampoline_addr(SB)/8, $libc_fstatat_trampoline<>(SB)\n\nTEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatfs(SB)\nGLOBL\t·libc_fstatfs_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatfs_trampoline_addr(SB)/8, $libc_fstatfs_trampoline<>(SB)\n\nTEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fsync(SB)\nGLOBL\t·libc_fsync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB)\n\nTEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ftruncate(SB)\nGLOBL\t·libc_ftruncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB)\n\nTEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getegid(SB)\nGLOBL\t·libc_getegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB)\n\nTEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_geteuid(SB)\nGLOBL\t·libc_geteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB)\n\nTEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgid(SB)\nGLOBL\t·libc_getgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB)\n\nTEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgid(SB)\nGLOBL\t·libc_getpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB)\n\nTEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgrp(SB)\nGLOBL\t·libc_getpgrp_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB)\n\nTEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpid(SB)\nGLOBL\t·libc_getpid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB)\n\nTEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getppid(SB)\nGLOBL\t·libc_getppid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB)\n\nTEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpriority(SB)\nGLOBL\t·libc_getpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB)\n\nTEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrlimit(SB)\nGLOBL\t·libc_getrlimit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB)\n\nTEXT libc_getrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrtable(SB)\nGLOBL\t·libc_getrtable_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrtable_trampoline_addr(SB)/8, $libc_getrtable_trampoline<>(SB)\n\nTEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrusage(SB)\nGLOBL\t·libc_getrusage_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB)\n\nTEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsid(SB)\nGLOBL\t·libc_getsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB)\n\nTEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_gettimeofday(SB)\nGLOBL\t·libc_gettimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB)\n\nTEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getuid(SB)\nGLOBL\t·libc_getuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB)\n\nTEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_issetugid(SB)\nGLOBL\t·libc_issetugid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB)\n\nTEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kill(SB)\nGLOBL\t·libc_kill_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB)\n\nTEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kqueue(SB)\nGLOBL\t·libc_kqueue_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB)\n\nTEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lchown(SB)\nGLOBL\t·libc_lchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB)\n\nTEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_link(SB)\nGLOBL\t·libc_link_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB)\n\nTEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_linkat(SB)\nGLOBL\t·libc_linkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB)\n\nTEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_listen(SB)\nGLOBL\t·libc_listen_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB)\n\nTEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lstat(SB)\nGLOBL\t·libc_lstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lstat_trampoline_addr(SB)/8, $libc_lstat_trampoline<>(SB)\n\nTEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdir(SB)\nGLOBL\t·libc_mkdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB)\n\nTEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdirat(SB)\nGLOBL\t·libc_mkdirat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB)\n\nTEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifo(SB)\nGLOBL\t·libc_mkfifo_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB)\n\nTEXT libc_mkfifoat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifoat(SB)\nGLOBL\t·libc_mkfifoat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkfifoat_trampoline_addr(SB)/8, $libc_mkfifoat_trampoline<>(SB)\n\nTEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknod(SB)\nGLOBL\t·libc_mknod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB)\n\nTEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknodat(SB)\nGLOBL\t·libc_mknodat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mknodat_trampoline_addr(SB)/8, $libc_mknodat_trampoline<>(SB)\n\nTEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mount(SB)\nGLOBL\t·libc_mount_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB)\n\nTEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_nanosleep(SB)\nGLOBL\t·libc_nanosleep_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_nanosleep_trampoline_addr(SB)/8, $libc_nanosleep_trampoline<>(SB)\n\nTEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_open(SB)\nGLOBL\t·libc_open_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB)\n\nTEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_openat(SB)\nGLOBL\t·libc_openat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB)\n\nTEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pathconf(SB)\nGLOBL\t·libc_pathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB)\n\nTEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pread(SB)\nGLOBL\t·libc_pread_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB)\n\nTEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pwrite(SB)\nGLOBL\t·libc_pwrite_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB)\n\nTEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_read(SB)\nGLOBL\t·libc_read_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB)\n\nTEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlink(SB)\nGLOBL\t·libc_readlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB)\n\nTEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlinkat(SB)\nGLOBL\t·libc_readlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB)\n\nTEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rename(SB)\nGLOBL\t·libc_rename_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB)\n\nTEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_renameat(SB)\nGLOBL\t·libc_renameat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB)\n\nTEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_revoke(SB)\nGLOBL\t·libc_revoke_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB)\n\nTEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rmdir(SB)\nGLOBL\t·libc_rmdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB)\n\nTEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lseek(SB)\nGLOBL\t·libc_lseek_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB)\n\nTEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_select(SB)\nGLOBL\t·libc_select_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB)\n\nTEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setegid(SB)\nGLOBL\t·libc_setegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB)\n\nTEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_seteuid(SB)\nGLOBL\t·libc_seteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB)\n\nTEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgid(SB)\nGLOBL\t·libc_setgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB)\n\nTEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setlogin(SB)\nGLOBL\t·libc_setlogin_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB)\n\nTEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpgid(SB)\nGLOBL\t·libc_setpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB)\n\nTEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpriority(SB)\nGLOBL\t·libc_setpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB)\n\nTEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setregid(SB)\nGLOBL\t·libc_setregid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB)\n\nTEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setreuid(SB)\nGLOBL\t·libc_setreuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB)\n\nTEXT libc_setresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setresgid(SB)\nGLOBL\t·libc_setresgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setresgid_trampoline_addr(SB)/8, $libc_setresgid_trampoline<>(SB)\n\nTEXT libc_setresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setresuid(SB)\nGLOBL\t·libc_setresuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setresuid_trampoline_addr(SB)/8, $libc_setresuid_trampoline<>(SB)\n\nTEXT libc_setrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setrtable(SB)\nGLOBL\t·libc_setrtable_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setrtable_trampoline_addr(SB)/8, $libc_setrtable_trampoline<>(SB)\n\nTEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsid(SB)\nGLOBL\t·libc_setsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB)\n\nTEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_settimeofday(SB)\nGLOBL\t·libc_settimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB)\n\nTEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setuid(SB)\nGLOBL\t·libc_setuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB)\n\nTEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_stat(SB)\nGLOBL\t·libc_stat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_stat_trampoline_addr(SB)/8, $libc_stat_trampoline<>(SB)\n\nTEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_statfs(SB)\nGLOBL\t·libc_statfs_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_statfs_trampoline_addr(SB)/8, $libc_statfs_trampoline<>(SB)\n\nTEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlink(SB)\nGLOBL\t·libc_symlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB)\n\nTEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlinkat(SB)\nGLOBL\t·libc_symlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB)\n\nTEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sync(SB)\nGLOBL\t·libc_sync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB)\n\nTEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_truncate(SB)\nGLOBL\t·libc_truncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB)\n\nTEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_umask(SB)\nGLOBL\t·libc_umask_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB)\n\nTEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlink(SB)\nGLOBL\t·libc_unlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB)\n\nTEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlinkat(SB)\nGLOBL\t·libc_unlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB)\n\nTEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unmount(SB)\nGLOBL\t·libc_unmount_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB)\n\nTEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_write(SB)\nGLOBL\t·libc_write_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB)\n\nTEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mmap(SB)\nGLOBL\t·libc_mmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB)\n\nTEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munmap(SB)\nGLOBL\t·libc_munmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB)\n\nTEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getfsstat(SB)\nGLOBL\t·libc_getfsstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getfsstat_trampoline_addr(SB)/8, $libc_getfsstat_trampoline<>(SB)\n\nTEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimensat(SB)\nGLOBL\t·libc_utimensat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB)\n\nTEXT libc_pledge_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pledge(SB)\nGLOBL\t·libc_pledge_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pledge_trampoline_addr(SB)/8, $libc_pledge_trampoline<>(SB)\n\nTEXT libc_unveil_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unveil(SB)\nGLOBL\t·libc_unveil_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unveil_trampoline_addr(SB)/8, $libc_unveil_trampoline<>(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.go",
    "content": "// go run mksyscall.go -openbsd -libc -tags openbsd,ppc64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_ppc64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build openbsd && ppc64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgroups getgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgroups setgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_wait4_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_wait4 wait4 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_accept_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_accept accept \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_bind_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_bind bind \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_connect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_connect connect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socket_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socket socket \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockopt getsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsockopt setsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpeername_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpeername getpeername \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockname_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockname getsockname \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shutdown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shutdown shutdown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socketpair_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socketpair socketpair \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvfrom_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvfrom recvfrom \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendto_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendto sendto \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvmsg recvmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendmsg sendmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kevent_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kevent kevent \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimes utimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_futimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_futimes futimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_poll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_poll poll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_madvise_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_madvise madvise \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlock mlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlockall mlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mprotect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mprotect mprotect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_msync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_msync msync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlock munlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlockall munlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_pipe2_trampoline_addr, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pipe2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pipe2 pipe2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getdents_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getdents_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getdents getdents \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getcwd_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getcwd getcwd \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) {\n\tsyscall_rawSyscall(libc_getresuid_trampoline_addr, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid)))\n\treturn\n}\n\nvar libc_getresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresuid getresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) {\n\tsyscall_rawSyscall(libc_getresgid_trampoline_addr, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid)))\n\treturn\n}\n\nvar libc_getresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresgid getresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ioctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ioctl ioctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sysctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sysctl sysctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fcntl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fcntl fcntl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_ppoll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ppoll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ppoll ppoll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_access_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_access access \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_adjtime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_adjtime adjtime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chdir chdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chflags chflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chmod chmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chown chown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chroot_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chroot chroot \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_clock_gettime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_clock_gettime clock_gettime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_close_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_close close \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup dup \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup2 dup2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(from int, to int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup3_trampoline_addr, uintptr(from), uintptr(to), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup3_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup3 dup3 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tsyscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0)\n\treturn\n}\n\nvar libc_exit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_exit exit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_faccessat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_faccessat faccessat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchdir fchdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchflags fchflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmod fchmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmodat fchmodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchown fchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchownat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchownat fchownat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_flock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_flock flock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fpathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fpathconf fpathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstat fstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fstatat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatat fstatat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstatfs_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatfs fstatfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fsync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fsync fsync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ftruncate_trampoline_addr, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ftruncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ftruncate ftruncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\nvar libc_getegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getegid getegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_geteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_geteuid geteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\nvar libc_getgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgid getgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgid getpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\nvar libc_getpgrp_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgrp getpgrp \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\nvar libc_getpid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpid getpid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\nvar libc_getppid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getppid getppid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpriority getpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrlimit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrlimit getrlimit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrtable() (rtable int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getrtable_trampoline_addr, 0, 0, 0)\n\trtable = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrtable getrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrusage_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrusage getrusage \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsid getsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_gettimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_gettimeofday gettimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_getuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getuid getuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := syscall_syscall(libc_issetugid_trampoline_addr, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\nvar libc_issetugid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_issetugid issetugid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kill_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kill kill \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kqueue_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kqueue kqueue \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lchown lchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_link_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_link link \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_linkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_linkat linkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_listen_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_listen listen \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lstat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lstat lstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdir mkdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdirat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdirat mkdirat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifo_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifo mkfifo \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifoat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifoat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifoat mkfifoat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknod mknod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mknodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknodat mknodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(fsType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(dir)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mount mount \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_nanosleep_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_nanosleep nanosleep \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_open_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_open_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_open open \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_openat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_openat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_openat openat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_pathconf_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pathconf pathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pread_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pread_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pread pread \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pwrite_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pwrite_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pwrite pwrite \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_read_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_read read \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_readlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlink readlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_readlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlinkat readlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rename_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rename_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rename rename \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_renameat_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_renameat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_renameat renameat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_revoke_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_revoke_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_revoke revoke \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rmdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rmdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rmdir rmdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := syscall_syscall(libc_lseek_trampoline_addr, uintptr(fd), uintptr(offset), uintptr(whence))\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lseek_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lseek lseek \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_select_trampoline_addr, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_select_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_select select \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setegid setegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_seteuid_trampoline_addr, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_seteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_seteuid seteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgid_trampoline_addr, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgid setgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_setlogin_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setlogin_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setlogin setlogin \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setpgid_trampoline_addr, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpgid setpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_setpriority_trampoline_addr, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpriority setpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setregid_trampoline_addr, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setregid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setregid setregid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setreuid_trampoline_addr, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setreuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setreuid setreuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setresgid_trampoline_addr, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setresgid setresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setresuid_trampoline_addr, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setresuid setresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setrtable(rtable int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setrtable_trampoline_addr, uintptr(rtable), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setrtable setrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsid setsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_settimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_settimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_settimeofday settimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setuid_trampoline_addr, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setuid setuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_stat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_stat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_stat stat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_statfs_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_statfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_statfs statfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlink symlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlinkat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlinkat symlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := syscall_syscall(libc_sync_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sync sync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_truncate_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_truncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_truncate truncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := syscall_syscall(libc_umask_trampoline_addr, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\nvar libc_umask_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_umask umask \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlink unlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlinkat unlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unmount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unmount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unmount unmount \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_write_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_write write \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_mmap_trampoline_addr, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mmap mmap \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_munmap_trampoline_addr, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munmap munmap \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getfsstat_trampoline_addr, uintptr(unsafe.Pointer(stat)), uintptr(bufsize), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getfsstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getfsstat getfsstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_utimensat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimensat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimensat utimensat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pledge(promises *byte, execpromises *byte) (err error) {\n\t_, _, e1 := syscall_syscall(libc_pledge_trampoline_addr, uintptr(unsafe.Pointer(promises)), uintptr(unsafe.Pointer(execpromises)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pledge_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pledge pledge \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc unveil(path *byte, flags *byte) (err error) {\n\t_, _, e1 := syscall_syscall(libc_unveil_trampoline_addr, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(flags)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unveil_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unveil unveil \"libc.so\"\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.s",
    "content": "// go run mkasm.go openbsd ppc64\n// Code generated by the command above; DO NOT EDIT.\n\n#include \"textflag.h\"\n\nTEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getgroups(SB)\n\tRET\nGLOBL\t·libc_getgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB)\n\nTEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setgroups(SB)\n\tRET\nGLOBL\t·libc_setgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB)\n\nTEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_wait4(SB)\n\tRET\nGLOBL\t·libc_wait4_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB)\n\nTEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_accept(SB)\n\tRET\nGLOBL\t·libc_accept_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB)\n\nTEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_bind(SB)\n\tRET\nGLOBL\t·libc_bind_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB)\n\nTEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_connect(SB)\n\tRET\nGLOBL\t·libc_connect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB)\n\nTEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_socket(SB)\n\tRET\nGLOBL\t·libc_socket_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB)\n\nTEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getsockopt(SB)\n\tRET\nGLOBL\t·libc_getsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB)\n\nTEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setsockopt(SB)\n\tRET\nGLOBL\t·libc_setsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB)\n\nTEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getpeername(SB)\n\tRET\nGLOBL\t·libc_getpeername_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB)\n\nTEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getsockname(SB)\n\tRET\nGLOBL\t·libc_getsockname_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB)\n\nTEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_shutdown(SB)\n\tRET\nGLOBL\t·libc_shutdown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB)\n\nTEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_socketpair(SB)\n\tRET\nGLOBL\t·libc_socketpair_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB)\n\nTEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_recvfrom(SB)\n\tRET\nGLOBL\t·libc_recvfrom_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB)\n\nTEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_sendto(SB)\n\tRET\nGLOBL\t·libc_sendto_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB)\n\nTEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_recvmsg(SB)\n\tRET\nGLOBL\t·libc_recvmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB)\n\nTEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_sendmsg(SB)\n\tRET\nGLOBL\t·libc_sendmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB)\n\nTEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_kevent(SB)\n\tRET\nGLOBL\t·libc_kevent_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB)\n\nTEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_utimes(SB)\n\tRET\nGLOBL\t·libc_utimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB)\n\nTEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_futimes(SB)\n\tRET\nGLOBL\t·libc_futimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB)\n\nTEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_poll(SB)\n\tRET\nGLOBL\t·libc_poll_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB)\n\nTEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_madvise(SB)\n\tRET\nGLOBL\t·libc_madvise_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB)\n\nTEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_mlock(SB)\n\tRET\nGLOBL\t·libc_mlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB)\n\nTEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_mlockall(SB)\n\tRET\nGLOBL\t·libc_mlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB)\n\nTEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_mprotect(SB)\n\tRET\nGLOBL\t·libc_mprotect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB)\n\nTEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_msync(SB)\n\tRET\nGLOBL\t·libc_msync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB)\n\nTEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_munlock(SB)\n\tRET\nGLOBL\t·libc_munlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB)\n\nTEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_munlockall(SB)\n\tRET\nGLOBL\t·libc_munlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB)\n\nTEXT libc_pipe2_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_pipe2(SB)\n\tRET\nGLOBL\t·libc_pipe2_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pipe2_trampoline_addr(SB)/8, $libc_pipe2_trampoline<>(SB)\n\nTEXT libc_getdents_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getdents(SB)\n\tRET\nGLOBL\t·libc_getdents_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getdents_trampoline_addr(SB)/8, $libc_getdents_trampoline<>(SB)\n\nTEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getcwd(SB)\n\tRET\nGLOBL\t·libc_getcwd_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB)\n\nTEXT libc_getresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getresuid(SB)\n\tRET\nGLOBL\t·libc_getresuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getresuid_trampoline_addr(SB)/8, $libc_getresuid_trampoline<>(SB)\n\nTEXT libc_getresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getresgid(SB)\n\tRET\nGLOBL\t·libc_getresgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getresgid_trampoline_addr(SB)/8, $libc_getresgid_trampoline<>(SB)\n\nTEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_ioctl(SB)\n\tRET\nGLOBL\t·libc_ioctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB)\n\nTEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_sysctl(SB)\n\tRET\nGLOBL\t·libc_sysctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB)\n\nTEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_fcntl(SB)\n\tRET\nGLOBL\t·libc_fcntl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB)\n\nTEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_ppoll(SB)\n\tRET\nGLOBL\t·libc_ppoll_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ppoll_trampoline_addr(SB)/8, $libc_ppoll_trampoline<>(SB)\n\nTEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_access(SB)\n\tRET\nGLOBL\t·libc_access_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB)\n\nTEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_adjtime(SB)\n\tRET\nGLOBL\t·libc_adjtime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB)\n\nTEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_chdir(SB)\n\tRET\nGLOBL\t·libc_chdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB)\n\nTEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_chflags(SB)\n\tRET\nGLOBL\t·libc_chflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB)\n\nTEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_chmod(SB)\n\tRET\nGLOBL\t·libc_chmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB)\n\nTEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_chown(SB)\n\tRET\nGLOBL\t·libc_chown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB)\n\nTEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_chroot(SB)\n\tRET\nGLOBL\t·libc_chroot_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB)\n\nTEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_clock_gettime(SB)\n\tRET\nGLOBL\t·libc_clock_gettime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB)\n\nTEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_close(SB)\n\tRET\nGLOBL\t·libc_close_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB)\n\nTEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_dup(SB)\n\tRET\nGLOBL\t·libc_dup_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB)\n\nTEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_dup2(SB)\n\tRET\nGLOBL\t·libc_dup2_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB)\n\nTEXT libc_dup3_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_dup3(SB)\n\tRET\nGLOBL\t·libc_dup3_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup3_trampoline_addr(SB)/8, $libc_dup3_trampoline<>(SB)\n\nTEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_exit(SB)\n\tRET\nGLOBL\t·libc_exit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB)\n\nTEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_faccessat(SB)\n\tRET\nGLOBL\t·libc_faccessat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB)\n\nTEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_fchdir(SB)\n\tRET\nGLOBL\t·libc_fchdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB)\n\nTEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_fchflags(SB)\n\tRET\nGLOBL\t·libc_fchflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB)\n\nTEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_fchmod(SB)\n\tRET\nGLOBL\t·libc_fchmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB)\n\nTEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_fchmodat(SB)\n\tRET\nGLOBL\t·libc_fchmodat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB)\n\nTEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_fchown(SB)\n\tRET\nGLOBL\t·libc_fchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB)\n\nTEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_fchownat(SB)\n\tRET\nGLOBL\t·libc_fchownat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB)\n\nTEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_flock(SB)\n\tRET\nGLOBL\t·libc_flock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB)\n\nTEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_fpathconf(SB)\n\tRET\nGLOBL\t·libc_fpathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB)\n\nTEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_fstat(SB)\n\tRET\nGLOBL\t·libc_fstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstat_trampoline_addr(SB)/8, $libc_fstat_trampoline<>(SB)\n\nTEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_fstatat(SB)\n\tRET\nGLOBL\t·libc_fstatat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatat_trampoline_addr(SB)/8, $libc_fstatat_trampoline<>(SB)\n\nTEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_fstatfs(SB)\n\tRET\nGLOBL\t·libc_fstatfs_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatfs_trampoline_addr(SB)/8, $libc_fstatfs_trampoline<>(SB)\n\nTEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_fsync(SB)\n\tRET\nGLOBL\t·libc_fsync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB)\n\nTEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_ftruncate(SB)\n\tRET\nGLOBL\t·libc_ftruncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB)\n\nTEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getegid(SB)\n\tRET\nGLOBL\t·libc_getegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB)\n\nTEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_geteuid(SB)\n\tRET\nGLOBL\t·libc_geteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB)\n\nTEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getgid(SB)\n\tRET\nGLOBL\t·libc_getgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB)\n\nTEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getpgid(SB)\n\tRET\nGLOBL\t·libc_getpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB)\n\nTEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getpgrp(SB)\n\tRET\nGLOBL\t·libc_getpgrp_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB)\n\nTEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getpid(SB)\n\tRET\nGLOBL\t·libc_getpid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB)\n\nTEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getppid(SB)\n\tRET\nGLOBL\t·libc_getppid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB)\n\nTEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getpriority(SB)\n\tRET\nGLOBL\t·libc_getpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB)\n\nTEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getrlimit(SB)\n\tRET\nGLOBL\t·libc_getrlimit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB)\n\nTEXT libc_getrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getrtable(SB)\n\tRET\nGLOBL\t·libc_getrtable_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrtable_trampoline_addr(SB)/8, $libc_getrtable_trampoline<>(SB)\n\nTEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getrusage(SB)\n\tRET\nGLOBL\t·libc_getrusage_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB)\n\nTEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getsid(SB)\n\tRET\nGLOBL\t·libc_getsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB)\n\nTEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_gettimeofday(SB)\n\tRET\nGLOBL\t·libc_gettimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB)\n\nTEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getuid(SB)\n\tRET\nGLOBL\t·libc_getuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB)\n\nTEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_issetugid(SB)\n\tRET\nGLOBL\t·libc_issetugid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB)\n\nTEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_kill(SB)\n\tRET\nGLOBL\t·libc_kill_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB)\n\nTEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_kqueue(SB)\n\tRET\nGLOBL\t·libc_kqueue_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB)\n\nTEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_lchown(SB)\n\tRET\nGLOBL\t·libc_lchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB)\n\nTEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_link(SB)\n\tRET\nGLOBL\t·libc_link_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB)\n\nTEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_linkat(SB)\n\tRET\nGLOBL\t·libc_linkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB)\n\nTEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_listen(SB)\n\tRET\nGLOBL\t·libc_listen_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB)\n\nTEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_lstat(SB)\n\tRET\nGLOBL\t·libc_lstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lstat_trampoline_addr(SB)/8, $libc_lstat_trampoline<>(SB)\n\nTEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_mkdir(SB)\n\tRET\nGLOBL\t·libc_mkdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB)\n\nTEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_mkdirat(SB)\n\tRET\nGLOBL\t·libc_mkdirat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB)\n\nTEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_mkfifo(SB)\n\tRET\nGLOBL\t·libc_mkfifo_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB)\n\nTEXT libc_mkfifoat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_mkfifoat(SB)\n\tRET\nGLOBL\t·libc_mkfifoat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkfifoat_trampoline_addr(SB)/8, $libc_mkfifoat_trampoline<>(SB)\n\nTEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_mknod(SB)\n\tRET\nGLOBL\t·libc_mknod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB)\n\nTEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_mknodat(SB)\n\tRET\nGLOBL\t·libc_mknodat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mknodat_trampoline_addr(SB)/8, $libc_mknodat_trampoline<>(SB)\n\nTEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_mount(SB)\n\tRET\nGLOBL\t·libc_mount_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB)\n\nTEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_nanosleep(SB)\n\tRET\nGLOBL\t·libc_nanosleep_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_nanosleep_trampoline_addr(SB)/8, $libc_nanosleep_trampoline<>(SB)\n\nTEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_open(SB)\n\tRET\nGLOBL\t·libc_open_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB)\n\nTEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_openat(SB)\n\tRET\nGLOBL\t·libc_openat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB)\n\nTEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_pathconf(SB)\n\tRET\nGLOBL\t·libc_pathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB)\n\nTEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_pread(SB)\n\tRET\nGLOBL\t·libc_pread_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB)\n\nTEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_pwrite(SB)\n\tRET\nGLOBL\t·libc_pwrite_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB)\n\nTEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_read(SB)\n\tRET\nGLOBL\t·libc_read_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB)\n\nTEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_readlink(SB)\n\tRET\nGLOBL\t·libc_readlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB)\n\nTEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_readlinkat(SB)\n\tRET\nGLOBL\t·libc_readlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB)\n\nTEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_rename(SB)\n\tRET\nGLOBL\t·libc_rename_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB)\n\nTEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_renameat(SB)\n\tRET\nGLOBL\t·libc_renameat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB)\n\nTEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_revoke(SB)\n\tRET\nGLOBL\t·libc_revoke_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB)\n\nTEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_rmdir(SB)\n\tRET\nGLOBL\t·libc_rmdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB)\n\nTEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_lseek(SB)\n\tRET\nGLOBL\t·libc_lseek_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB)\n\nTEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_select(SB)\n\tRET\nGLOBL\t·libc_select_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB)\n\nTEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setegid(SB)\n\tRET\nGLOBL\t·libc_setegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB)\n\nTEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_seteuid(SB)\n\tRET\nGLOBL\t·libc_seteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB)\n\nTEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setgid(SB)\n\tRET\nGLOBL\t·libc_setgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB)\n\nTEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setlogin(SB)\n\tRET\nGLOBL\t·libc_setlogin_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB)\n\nTEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setpgid(SB)\n\tRET\nGLOBL\t·libc_setpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB)\n\nTEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setpriority(SB)\n\tRET\nGLOBL\t·libc_setpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB)\n\nTEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setregid(SB)\n\tRET\nGLOBL\t·libc_setregid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB)\n\nTEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setreuid(SB)\n\tRET\nGLOBL\t·libc_setreuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB)\n\nTEXT libc_setresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setresgid(SB)\n\tRET\nGLOBL\t·libc_setresgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setresgid_trampoline_addr(SB)/8, $libc_setresgid_trampoline<>(SB)\n\nTEXT libc_setresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setresuid(SB)\n\tRET\nGLOBL\t·libc_setresuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setresuid_trampoline_addr(SB)/8, $libc_setresuid_trampoline<>(SB)\n\nTEXT libc_setrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setrtable(SB)\n\tRET\nGLOBL\t·libc_setrtable_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setrtable_trampoline_addr(SB)/8, $libc_setrtable_trampoline<>(SB)\n\nTEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setsid(SB)\n\tRET\nGLOBL\t·libc_setsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB)\n\nTEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_settimeofday(SB)\n\tRET\nGLOBL\t·libc_settimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB)\n\nTEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setuid(SB)\n\tRET\nGLOBL\t·libc_setuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB)\n\nTEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_stat(SB)\n\tRET\nGLOBL\t·libc_stat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_stat_trampoline_addr(SB)/8, $libc_stat_trampoline<>(SB)\n\nTEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_statfs(SB)\n\tRET\nGLOBL\t·libc_statfs_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_statfs_trampoline_addr(SB)/8, $libc_statfs_trampoline<>(SB)\n\nTEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_symlink(SB)\n\tRET\nGLOBL\t·libc_symlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB)\n\nTEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_symlinkat(SB)\n\tRET\nGLOBL\t·libc_symlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB)\n\nTEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_sync(SB)\n\tRET\nGLOBL\t·libc_sync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB)\n\nTEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_truncate(SB)\n\tRET\nGLOBL\t·libc_truncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB)\n\nTEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_umask(SB)\n\tRET\nGLOBL\t·libc_umask_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB)\n\nTEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_unlink(SB)\n\tRET\nGLOBL\t·libc_unlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB)\n\nTEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_unlinkat(SB)\n\tRET\nGLOBL\t·libc_unlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB)\n\nTEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_unmount(SB)\n\tRET\nGLOBL\t·libc_unmount_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB)\n\nTEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_write(SB)\n\tRET\nGLOBL\t·libc_write_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB)\n\nTEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_mmap(SB)\n\tRET\nGLOBL\t·libc_mmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB)\n\nTEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_munmap(SB)\n\tRET\nGLOBL\t·libc_munmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB)\n\nTEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getfsstat(SB)\n\tRET\nGLOBL\t·libc_getfsstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getfsstat_trampoline_addr(SB)/8, $libc_getfsstat_trampoline<>(SB)\n\nTEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_utimensat(SB)\n\tRET\nGLOBL\t·libc_utimensat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB)\n\nTEXT libc_pledge_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_pledge(SB)\n\tRET\nGLOBL\t·libc_pledge_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pledge_trampoline_addr(SB)/8, $libc_pledge_trampoline<>(SB)\n\nTEXT libc_unveil_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_unveil(SB)\n\tRET\nGLOBL\t·libc_unveil_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unveil_trampoline_addr(SB)/8, $libc_unveil_trampoline<>(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.go",
    "content": "// go run mksyscall.go -openbsd -libc -tags openbsd,riscv64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_riscv64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build openbsd && riscv64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgroups getgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgroups setgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_wait4_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_wait4 wait4 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_accept_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_accept accept \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_bind_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_bind bind \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_connect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_connect connect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socket_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socket socket \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockopt getsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsockopt setsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpeername_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpeername getpeername \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockname_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockname getsockname \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shutdown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shutdown shutdown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socketpair_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socketpair socketpair \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvfrom_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvfrom recvfrom \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendto_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendto sendto \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvmsg recvmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendmsg sendmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kevent_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kevent kevent \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimes utimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_futimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_futimes futimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_poll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_poll poll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_madvise_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_madvise madvise \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlock mlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlockall mlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mprotect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mprotect mprotect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_msync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_msync msync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlock munlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlockall munlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_pipe2_trampoline_addr, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pipe2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pipe2 pipe2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getdents_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getdents_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getdents getdents \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getcwd_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getcwd getcwd \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) {\n\tsyscall_rawSyscall(libc_getresuid_trampoline_addr, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid)))\n\treturn\n}\n\nvar libc_getresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresuid getresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) {\n\tsyscall_rawSyscall(libc_getresgid_trampoline_addr, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid)))\n\treturn\n}\n\nvar libc_getresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresgid getresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ioctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ioctl ioctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sysctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sysctl sysctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fcntl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fcntl fcntl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_ppoll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ppoll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ppoll ppoll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_access_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_access access \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_adjtime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_adjtime adjtime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chdir chdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chflags chflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chmod chmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chown chown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chroot_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chroot chroot \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_clock_gettime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_clock_gettime clock_gettime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_close_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_close close \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup dup \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup2 dup2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(from int, to int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup3_trampoline_addr, uintptr(from), uintptr(to), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup3_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup3 dup3 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tsyscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0)\n\treturn\n}\n\nvar libc_exit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_exit exit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_faccessat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_faccessat faccessat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchdir fchdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchflags fchflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmod fchmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmodat fchmodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchown fchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchownat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchownat fchownat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_flock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_flock flock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fpathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fpathconf fpathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstat fstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fstatat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatat fstatat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstatfs_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatfs fstatfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fsync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fsync fsync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ftruncate_trampoline_addr, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ftruncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ftruncate ftruncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\nvar libc_getegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getegid getegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_geteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_geteuid geteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\nvar libc_getgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgid getgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgid getpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\nvar libc_getpgrp_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgrp getpgrp \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\nvar libc_getpid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpid getpid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\nvar libc_getppid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getppid getppid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpriority getpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrlimit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrlimit getrlimit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrtable() (rtable int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getrtable_trampoline_addr, 0, 0, 0)\n\trtable = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrtable getrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrusage_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrusage getrusage \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsid getsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_gettimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_gettimeofday gettimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_getuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getuid getuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := syscall_syscall(libc_issetugid_trampoline_addr, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\nvar libc_issetugid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_issetugid issetugid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kill_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kill kill \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kqueue_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kqueue kqueue \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lchown lchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_link_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_link link \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_linkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_linkat linkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_listen_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_listen listen \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lstat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lstat lstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdir mkdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdirat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdirat mkdirat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifo_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifo mkfifo \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifoat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifoat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifoat mkfifoat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknod mknod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mknodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknodat mknodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(fsType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(dir)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mount mount \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_nanosleep_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_nanosleep nanosleep \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_open_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_open_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_open open \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_openat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_openat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_openat openat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_pathconf_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pathconf pathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pread_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pread_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pread pread \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pwrite_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pwrite_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pwrite pwrite \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_read_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_read read \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_readlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlink readlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_readlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlinkat readlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rename_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rename_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rename rename \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_renameat_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_renameat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_renameat renameat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_revoke_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_revoke_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_revoke revoke \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rmdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rmdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rmdir rmdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := syscall_syscall(libc_lseek_trampoline_addr, uintptr(fd), uintptr(offset), uintptr(whence))\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lseek_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lseek lseek \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_select_trampoline_addr, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_select_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_select select \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setegid setegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_seteuid_trampoline_addr, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_seteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_seteuid seteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgid_trampoline_addr, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgid setgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_setlogin_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setlogin_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setlogin setlogin \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setpgid_trampoline_addr, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpgid setpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_setpriority_trampoline_addr, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpriority setpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setregid_trampoline_addr, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setregid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setregid setregid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setreuid_trampoline_addr, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setreuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setreuid setreuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setresgid_trampoline_addr, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setresgid setresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setresuid_trampoline_addr, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setresuid setresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setrtable(rtable int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setrtable_trampoline_addr, uintptr(rtable), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setrtable setrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsid setsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_settimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_settimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_settimeofday settimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setuid_trampoline_addr, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setuid setuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_stat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_stat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_stat stat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_statfs_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_statfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_statfs statfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlink symlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlinkat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlinkat symlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := syscall_syscall(libc_sync_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sync sync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_truncate_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_truncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_truncate truncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := syscall_syscall(libc_umask_trampoline_addr, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\nvar libc_umask_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_umask umask \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlink unlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlinkat unlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unmount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unmount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unmount unmount \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_write_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_write write \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_mmap_trampoline_addr, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mmap mmap \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_munmap_trampoline_addr, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munmap munmap \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getfsstat_trampoline_addr, uintptr(unsafe.Pointer(stat)), uintptr(bufsize), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getfsstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getfsstat getfsstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_utimensat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimensat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimensat utimensat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pledge(promises *byte, execpromises *byte) (err error) {\n\t_, _, e1 := syscall_syscall(libc_pledge_trampoline_addr, uintptr(unsafe.Pointer(promises)), uintptr(unsafe.Pointer(execpromises)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pledge_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pledge pledge \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc unveil(path *byte, flags *byte) (err error) {\n\t_, _, e1 := syscall_syscall(libc_unveil_trampoline_addr, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(flags)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unveil_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unveil unveil \"libc.so\"\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.s",
    "content": "// go run mkasm.go openbsd riscv64\n// Code generated by the command above; DO NOT EDIT.\n\n#include \"textflag.h\"\n\nTEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgroups(SB)\nGLOBL\t·libc_getgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB)\n\nTEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgroups(SB)\nGLOBL\t·libc_setgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB)\n\nTEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_wait4(SB)\nGLOBL\t·libc_wait4_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB)\n\nTEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_accept(SB)\nGLOBL\t·libc_accept_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB)\n\nTEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_bind(SB)\nGLOBL\t·libc_bind_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB)\n\nTEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_connect(SB)\nGLOBL\t·libc_connect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB)\n\nTEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socket(SB)\nGLOBL\t·libc_socket_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB)\n\nTEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockopt(SB)\nGLOBL\t·libc_getsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB)\n\nTEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsockopt(SB)\nGLOBL\t·libc_setsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB)\n\nTEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpeername(SB)\nGLOBL\t·libc_getpeername_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB)\n\nTEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockname(SB)\nGLOBL\t·libc_getsockname_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB)\n\nTEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shutdown(SB)\nGLOBL\t·libc_shutdown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB)\n\nTEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socketpair(SB)\nGLOBL\t·libc_socketpair_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB)\n\nTEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvfrom(SB)\nGLOBL\t·libc_recvfrom_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB)\n\nTEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendto(SB)\nGLOBL\t·libc_sendto_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB)\n\nTEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvmsg(SB)\nGLOBL\t·libc_recvmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB)\n\nTEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendmsg(SB)\nGLOBL\t·libc_sendmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB)\n\nTEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kevent(SB)\nGLOBL\t·libc_kevent_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB)\n\nTEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimes(SB)\nGLOBL\t·libc_utimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB)\n\nTEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_futimes(SB)\nGLOBL\t·libc_futimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB)\n\nTEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_poll(SB)\nGLOBL\t·libc_poll_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB)\n\nTEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_madvise(SB)\nGLOBL\t·libc_madvise_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB)\n\nTEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlock(SB)\nGLOBL\t·libc_mlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB)\n\nTEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlockall(SB)\nGLOBL\t·libc_mlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB)\n\nTEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mprotect(SB)\nGLOBL\t·libc_mprotect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB)\n\nTEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_msync(SB)\nGLOBL\t·libc_msync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB)\n\nTEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlock(SB)\nGLOBL\t·libc_munlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB)\n\nTEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlockall(SB)\nGLOBL\t·libc_munlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB)\n\nTEXT libc_pipe2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pipe2(SB)\nGLOBL\t·libc_pipe2_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pipe2_trampoline_addr(SB)/8, $libc_pipe2_trampoline<>(SB)\n\nTEXT libc_getdents_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getdents(SB)\nGLOBL\t·libc_getdents_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getdents_trampoline_addr(SB)/8, $libc_getdents_trampoline<>(SB)\n\nTEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getcwd(SB)\nGLOBL\t·libc_getcwd_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB)\n\nTEXT libc_getresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getresuid(SB)\nGLOBL\t·libc_getresuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getresuid_trampoline_addr(SB)/8, $libc_getresuid_trampoline<>(SB)\n\nTEXT libc_getresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getresgid(SB)\nGLOBL\t·libc_getresgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getresgid_trampoline_addr(SB)/8, $libc_getresgid_trampoline<>(SB)\n\nTEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ioctl(SB)\nGLOBL\t·libc_ioctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB)\n\nTEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sysctl(SB)\nGLOBL\t·libc_sysctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB)\n\nTEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fcntl(SB)\nGLOBL\t·libc_fcntl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB)\n\nTEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ppoll(SB)\nGLOBL\t·libc_ppoll_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ppoll_trampoline_addr(SB)/8, $libc_ppoll_trampoline<>(SB)\n\nTEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_access(SB)\nGLOBL\t·libc_access_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB)\n\nTEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_adjtime(SB)\nGLOBL\t·libc_adjtime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB)\n\nTEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chdir(SB)\nGLOBL\t·libc_chdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB)\n\nTEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chflags(SB)\nGLOBL\t·libc_chflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB)\n\nTEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chmod(SB)\nGLOBL\t·libc_chmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB)\n\nTEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chown(SB)\nGLOBL\t·libc_chown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB)\n\nTEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chroot(SB)\nGLOBL\t·libc_chroot_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB)\n\nTEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_clock_gettime(SB)\nGLOBL\t·libc_clock_gettime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB)\n\nTEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_close(SB)\nGLOBL\t·libc_close_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB)\n\nTEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup(SB)\nGLOBL\t·libc_dup_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB)\n\nTEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup2(SB)\nGLOBL\t·libc_dup2_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB)\n\nTEXT libc_dup3_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup3(SB)\nGLOBL\t·libc_dup3_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup3_trampoline_addr(SB)/8, $libc_dup3_trampoline<>(SB)\n\nTEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_exit(SB)\nGLOBL\t·libc_exit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB)\n\nTEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_faccessat(SB)\nGLOBL\t·libc_faccessat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB)\n\nTEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchdir(SB)\nGLOBL\t·libc_fchdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB)\n\nTEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchflags(SB)\nGLOBL\t·libc_fchflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB)\n\nTEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmod(SB)\nGLOBL\t·libc_fchmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB)\n\nTEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmodat(SB)\nGLOBL\t·libc_fchmodat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB)\n\nTEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchown(SB)\nGLOBL\t·libc_fchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB)\n\nTEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchownat(SB)\nGLOBL\t·libc_fchownat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB)\n\nTEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_flock(SB)\nGLOBL\t·libc_flock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB)\n\nTEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fpathconf(SB)\nGLOBL\t·libc_fpathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB)\n\nTEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstat(SB)\nGLOBL\t·libc_fstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstat_trampoline_addr(SB)/8, $libc_fstat_trampoline<>(SB)\n\nTEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatat(SB)\nGLOBL\t·libc_fstatat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatat_trampoline_addr(SB)/8, $libc_fstatat_trampoline<>(SB)\n\nTEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatfs(SB)\nGLOBL\t·libc_fstatfs_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatfs_trampoline_addr(SB)/8, $libc_fstatfs_trampoline<>(SB)\n\nTEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fsync(SB)\nGLOBL\t·libc_fsync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB)\n\nTEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ftruncate(SB)\nGLOBL\t·libc_ftruncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB)\n\nTEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getegid(SB)\nGLOBL\t·libc_getegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB)\n\nTEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_geteuid(SB)\nGLOBL\t·libc_geteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB)\n\nTEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgid(SB)\nGLOBL\t·libc_getgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB)\n\nTEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgid(SB)\nGLOBL\t·libc_getpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB)\n\nTEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgrp(SB)\nGLOBL\t·libc_getpgrp_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB)\n\nTEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpid(SB)\nGLOBL\t·libc_getpid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB)\n\nTEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getppid(SB)\nGLOBL\t·libc_getppid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB)\n\nTEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpriority(SB)\nGLOBL\t·libc_getpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB)\n\nTEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrlimit(SB)\nGLOBL\t·libc_getrlimit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB)\n\nTEXT libc_getrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrtable(SB)\nGLOBL\t·libc_getrtable_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrtable_trampoline_addr(SB)/8, $libc_getrtable_trampoline<>(SB)\n\nTEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrusage(SB)\nGLOBL\t·libc_getrusage_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB)\n\nTEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsid(SB)\nGLOBL\t·libc_getsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB)\n\nTEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_gettimeofday(SB)\nGLOBL\t·libc_gettimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB)\n\nTEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getuid(SB)\nGLOBL\t·libc_getuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB)\n\nTEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_issetugid(SB)\nGLOBL\t·libc_issetugid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB)\n\nTEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kill(SB)\nGLOBL\t·libc_kill_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB)\n\nTEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kqueue(SB)\nGLOBL\t·libc_kqueue_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB)\n\nTEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lchown(SB)\nGLOBL\t·libc_lchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB)\n\nTEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_link(SB)\nGLOBL\t·libc_link_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB)\n\nTEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_linkat(SB)\nGLOBL\t·libc_linkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB)\n\nTEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_listen(SB)\nGLOBL\t·libc_listen_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB)\n\nTEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lstat(SB)\nGLOBL\t·libc_lstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lstat_trampoline_addr(SB)/8, $libc_lstat_trampoline<>(SB)\n\nTEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdir(SB)\nGLOBL\t·libc_mkdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB)\n\nTEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdirat(SB)\nGLOBL\t·libc_mkdirat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB)\n\nTEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifo(SB)\nGLOBL\t·libc_mkfifo_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB)\n\nTEXT libc_mkfifoat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifoat(SB)\nGLOBL\t·libc_mkfifoat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkfifoat_trampoline_addr(SB)/8, $libc_mkfifoat_trampoline<>(SB)\n\nTEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknod(SB)\nGLOBL\t·libc_mknod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB)\n\nTEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknodat(SB)\nGLOBL\t·libc_mknodat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mknodat_trampoline_addr(SB)/8, $libc_mknodat_trampoline<>(SB)\n\nTEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mount(SB)\nGLOBL\t·libc_mount_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB)\n\nTEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_nanosleep(SB)\nGLOBL\t·libc_nanosleep_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_nanosleep_trampoline_addr(SB)/8, $libc_nanosleep_trampoline<>(SB)\n\nTEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_open(SB)\nGLOBL\t·libc_open_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB)\n\nTEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_openat(SB)\nGLOBL\t·libc_openat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB)\n\nTEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pathconf(SB)\nGLOBL\t·libc_pathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB)\n\nTEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pread(SB)\nGLOBL\t·libc_pread_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB)\n\nTEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pwrite(SB)\nGLOBL\t·libc_pwrite_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB)\n\nTEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_read(SB)\nGLOBL\t·libc_read_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB)\n\nTEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlink(SB)\nGLOBL\t·libc_readlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB)\n\nTEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlinkat(SB)\nGLOBL\t·libc_readlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB)\n\nTEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rename(SB)\nGLOBL\t·libc_rename_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB)\n\nTEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_renameat(SB)\nGLOBL\t·libc_renameat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB)\n\nTEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_revoke(SB)\nGLOBL\t·libc_revoke_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB)\n\nTEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rmdir(SB)\nGLOBL\t·libc_rmdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB)\n\nTEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lseek(SB)\nGLOBL\t·libc_lseek_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB)\n\nTEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_select(SB)\nGLOBL\t·libc_select_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB)\n\nTEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setegid(SB)\nGLOBL\t·libc_setegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB)\n\nTEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_seteuid(SB)\nGLOBL\t·libc_seteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB)\n\nTEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgid(SB)\nGLOBL\t·libc_setgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB)\n\nTEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setlogin(SB)\nGLOBL\t·libc_setlogin_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB)\n\nTEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpgid(SB)\nGLOBL\t·libc_setpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB)\n\nTEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpriority(SB)\nGLOBL\t·libc_setpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB)\n\nTEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setregid(SB)\nGLOBL\t·libc_setregid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB)\n\nTEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setreuid(SB)\nGLOBL\t·libc_setreuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB)\n\nTEXT libc_setresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setresgid(SB)\nGLOBL\t·libc_setresgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setresgid_trampoline_addr(SB)/8, $libc_setresgid_trampoline<>(SB)\n\nTEXT libc_setresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setresuid(SB)\nGLOBL\t·libc_setresuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setresuid_trampoline_addr(SB)/8, $libc_setresuid_trampoline<>(SB)\n\nTEXT libc_setrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setrtable(SB)\nGLOBL\t·libc_setrtable_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setrtable_trampoline_addr(SB)/8, $libc_setrtable_trampoline<>(SB)\n\nTEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsid(SB)\nGLOBL\t·libc_setsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB)\n\nTEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_settimeofday(SB)\nGLOBL\t·libc_settimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB)\n\nTEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setuid(SB)\nGLOBL\t·libc_setuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB)\n\nTEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_stat(SB)\nGLOBL\t·libc_stat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_stat_trampoline_addr(SB)/8, $libc_stat_trampoline<>(SB)\n\nTEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_statfs(SB)\nGLOBL\t·libc_statfs_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_statfs_trampoline_addr(SB)/8, $libc_statfs_trampoline<>(SB)\n\nTEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlink(SB)\nGLOBL\t·libc_symlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB)\n\nTEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlinkat(SB)\nGLOBL\t·libc_symlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB)\n\nTEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sync(SB)\nGLOBL\t·libc_sync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB)\n\nTEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_truncate(SB)\nGLOBL\t·libc_truncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB)\n\nTEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_umask(SB)\nGLOBL\t·libc_umask_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB)\n\nTEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlink(SB)\nGLOBL\t·libc_unlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB)\n\nTEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlinkat(SB)\nGLOBL\t·libc_unlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB)\n\nTEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unmount(SB)\nGLOBL\t·libc_unmount_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB)\n\nTEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_write(SB)\nGLOBL\t·libc_write_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB)\n\nTEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mmap(SB)\nGLOBL\t·libc_mmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB)\n\nTEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munmap(SB)\nGLOBL\t·libc_munmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB)\n\nTEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getfsstat(SB)\nGLOBL\t·libc_getfsstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getfsstat_trampoline_addr(SB)/8, $libc_getfsstat_trampoline<>(SB)\n\nTEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimensat(SB)\nGLOBL\t·libc_utimensat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB)\n\nTEXT libc_pledge_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pledge(SB)\nGLOBL\t·libc_pledge_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pledge_trampoline_addr(SB)/8, $libc_pledge_trampoline<>(SB)\n\nTEXT libc_unveil_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unveil(SB)\nGLOBL\t·libc_unveil_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unveil_trampoline_addr(SB)/8, $libc_unveil_trampoline<>(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go",
    "content": "// go run mksyscall_solaris.go -tags solaris,amd64 syscall_solaris.go syscall_solaris_amd64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build solaris && amd64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n//go:cgo_import_dynamic libc_pipe pipe \"libc.so\"\n//go:cgo_import_dynamic libc_pipe2 pipe2 \"libc.so\"\n//go:cgo_import_dynamic libc_getsockname getsockname \"libsocket.so\"\n//go:cgo_import_dynamic libc_getcwd getcwd \"libc.so\"\n//go:cgo_import_dynamic libc_getgroups getgroups \"libc.so\"\n//go:cgo_import_dynamic libc_setgroups setgroups \"libc.so\"\n//go:cgo_import_dynamic libc_wait4 wait4 \"libc.so\"\n//go:cgo_import_dynamic libc_gethostname gethostname \"libc.so\"\n//go:cgo_import_dynamic libc_utimes utimes \"libc.so\"\n//go:cgo_import_dynamic libc_utimensat utimensat \"libc.so\"\n//go:cgo_import_dynamic libc_fcntl fcntl \"libc.so\"\n//go:cgo_import_dynamic libc_futimesat futimesat \"libc.so\"\n//go:cgo_import_dynamic libc_accept accept \"libsocket.so\"\n//go:cgo_import_dynamic libc___xnet_recvmsg __xnet_recvmsg \"libsocket.so\"\n//go:cgo_import_dynamic libc___xnet_sendmsg __xnet_sendmsg \"libsocket.so\"\n//go:cgo_import_dynamic libc_acct acct \"libc.so\"\n//go:cgo_import_dynamic libc___makedev __makedev \"libc.so\"\n//go:cgo_import_dynamic libc___major __major \"libc.so\"\n//go:cgo_import_dynamic libc___minor __minor \"libc.so\"\n//go:cgo_import_dynamic libc_ioctl ioctl \"libc.so\"\n//go:cgo_import_dynamic libc_poll poll \"libc.so\"\n//go:cgo_import_dynamic libc_access access \"libc.so\"\n//go:cgo_import_dynamic libc_adjtime adjtime \"libc.so\"\n//go:cgo_import_dynamic libc_chdir chdir \"libc.so\"\n//go:cgo_import_dynamic libc_chmod chmod \"libc.so\"\n//go:cgo_import_dynamic libc_chown chown \"libc.so\"\n//go:cgo_import_dynamic libc_chroot chroot \"libc.so\"\n//go:cgo_import_dynamic libc_clockgettime clockgettime \"libc.so\"\n//go:cgo_import_dynamic libc_close close \"libc.so\"\n//go:cgo_import_dynamic libc_creat creat \"libc.so\"\n//go:cgo_import_dynamic libc_dup dup \"libc.so\"\n//go:cgo_import_dynamic libc_dup2 dup2 \"libc.so\"\n//go:cgo_import_dynamic libc_exit exit \"libc.so\"\n//go:cgo_import_dynamic libc_faccessat faccessat \"libc.so\"\n//go:cgo_import_dynamic libc_fchdir fchdir \"libc.so\"\n//go:cgo_import_dynamic libc_fchmod fchmod \"libc.so\"\n//go:cgo_import_dynamic libc_fchmodat fchmodat \"libc.so\"\n//go:cgo_import_dynamic libc_fchown fchown \"libc.so\"\n//go:cgo_import_dynamic libc_fchownat fchownat \"libc.so\"\n//go:cgo_import_dynamic libc_fdatasync fdatasync \"libc.so\"\n//go:cgo_import_dynamic libc_flock flock \"libc.so\"\n//go:cgo_import_dynamic libc_fpathconf fpathconf \"libc.so\"\n//go:cgo_import_dynamic libc_fstat fstat \"libc.so\"\n//go:cgo_import_dynamic libc_fstatat fstatat \"libc.so\"\n//go:cgo_import_dynamic libc_fstatvfs fstatvfs \"libc.so\"\n//go:cgo_import_dynamic libc_getdents getdents \"libc.so\"\n//go:cgo_import_dynamic libc_getgid getgid \"libc.so\"\n//go:cgo_import_dynamic libc_getpid getpid \"libc.so\"\n//go:cgo_import_dynamic libc_getpgid getpgid \"libc.so\"\n//go:cgo_import_dynamic libc_getpgrp getpgrp \"libc.so\"\n//go:cgo_import_dynamic libc_geteuid geteuid \"libc.so\"\n//go:cgo_import_dynamic libc_getegid getegid \"libc.so\"\n//go:cgo_import_dynamic libc_getppid getppid \"libc.so\"\n//go:cgo_import_dynamic libc_getpriority getpriority \"libc.so\"\n//go:cgo_import_dynamic libc_getrlimit getrlimit \"libc.so\"\n//go:cgo_import_dynamic libc_getrusage getrusage \"libc.so\"\n//go:cgo_import_dynamic libc_getsid getsid \"libc.so\"\n//go:cgo_import_dynamic libc_gettimeofday gettimeofday \"libc.so\"\n//go:cgo_import_dynamic libc_getuid getuid \"libc.so\"\n//go:cgo_import_dynamic libc_kill kill \"libc.so\"\n//go:cgo_import_dynamic libc_lchown lchown \"libc.so\"\n//go:cgo_import_dynamic libc_link link \"libc.so\"\n//go:cgo_import_dynamic libc___xnet_listen __xnet_listen \"libsocket.so\"\n//go:cgo_import_dynamic libc_lstat lstat \"libc.so\"\n//go:cgo_import_dynamic libc_madvise madvise \"libc.so\"\n//go:cgo_import_dynamic libc_mkdir mkdir \"libc.so\"\n//go:cgo_import_dynamic libc_mkdirat mkdirat \"libc.so\"\n//go:cgo_import_dynamic libc_mkfifo mkfifo \"libc.so\"\n//go:cgo_import_dynamic libc_mkfifoat mkfifoat \"libc.so\"\n//go:cgo_import_dynamic libc_mknod mknod \"libc.so\"\n//go:cgo_import_dynamic libc_mknodat mknodat \"libc.so\"\n//go:cgo_import_dynamic libc_mlock mlock \"libc.so\"\n//go:cgo_import_dynamic libc_mlockall mlockall \"libc.so\"\n//go:cgo_import_dynamic libc_mprotect mprotect \"libc.so\"\n//go:cgo_import_dynamic libc_msync msync \"libc.so\"\n//go:cgo_import_dynamic libc_munlock munlock \"libc.so\"\n//go:cgo_import_dynamic libc_munlockall munlockall \"libc.so\"\n//go:cgo_import_dynamic libc_nanosleep nanosleep \"libc.so\"\n//go:cgo_import_dynamic libc_open open \"libc.so\"\n//go:cgo_import_dynamic libc_openat openat \"libc.so\"\n//go:cgo_import_dynamic libc_pathconf pathconf \"libc.so\"\n//go:cgo_import_dynamic libc_pause pause \"libc.so\"\n//go:cgo_import_dynamic libc_pread pread \"libc.so\"\n//go:cgo_import_dynamic libc_pwrite pwrite \"libc.so\"\n//go:cgo_import_dynamic libc_read read \"libc.so\"\n//go:cgo_import_dynamic libc_readlink readlink \"libc.so\"\n//go:cgo_import_dynamic libc_rename rename \"libc.so\"\n//go:cgo_import_dynamic libc_renameat renameat \"libc.so\"\n//go:cgo_import_dynamic libc_rmdir rmdir \"libc.so\"\n//go:cgo_import_dynamic libc_lseek lseek \"libc.so\"\n//go:cgo_import_dynamic libc_select select \"libc.so\"\n//go:cgo_import_dynamic libc_setegid setegid \"libc.so\"\n//go:cgo_import_dynamic libc_seteuid seteuid \"libc.so\"\n//go:cgo_import_dynamic libc_setgid setgid \"libc.so\"\n//go:cgo_import_dynamic libc_sethostname sethostname \"libc.so\"\n//go:cgo_import_dynamic libc_setpgid setpgid \"libc.so\"\n//go:cgo_import_dynamic libc_setpriority setpriority \"libc.so\"\n//go:cgo_import_dynamic libc_setregid setregid \"libc.so\"\n//go:cgo_import_dynamic libc_setreuid setreuid \"libc.so\"\n//go:cgo_import_dynamic libc_setsid setsid \"libc.so\"\n//go:cgo_import_dynamic libc_setuid setuid \"libc.so\"\n//go:cgo_import_dynamic libc_shutdown shutdown \"libsocket.so\"\n//go:cgo_import_dynamic libc_stat stat \"libc.so\"\n//go:cgo_import_dynamic libc_statvfs statvfs \"libc.so\"\n//go:cgo_import_dynamic libc_symlink symlink \"libc.so\"\n//go:cgo_import_dynamic libc_sync sync \"libc.so\"\n//go:cgo_import_dynamic libc_sysconf sysconf \"libc.so\"\n//go:cgo_import_dynamic libc_times times \"libc.so\"\n//go:cgo_import_dynamic libc_truncate truncate \"libc.so\"\n//go:cgo_import_dynamic libc_fsync fsync \"libc.so\"\n//go:cgo_import_dynamic libc_ftruncate ftruncate \"libc.so\"\n//go:cgo_import_dynamic libc_umask umask \"libc.so\"\n//go:cgo_import_dynamic libc_uname uname \"libc.so\"\n//go:cgo_import_dynamic libc_umount umount \"libc.so\"\n//go:cgo_import_dynamic libc_unlink unlink \"libc.so\"\n//go:cgo_import_dynamic libc_unlinkat unlinkat \"libc.so\"\n//go:cgo_import_dynamic libc_ustat ustat \"libc.so\"\n//go:cgo_import_dynamic libc_utime utime \"libc.so\"\n//go:cgo_import_dynamic libc___xnet_bind __xnet_bind \"libsocket.so\"\n//go:cgo_import_dynamic libc___xnet_connect __xnet_connect \"libsocket.so\"\n//go:cgo_import_dynamic libc_mmap mmap \"libc.so\"\n//go:cgo_import_dynamic libc_munmap munmap \"libc.so\"\n//go:cgo_import_dynamic libc_sendfile sendfile \"libsendfile.so\"\n//go:cgo_import_dynamic libc___xnet_sendto __xnet_sendto \"libsocket.so\"\n//go:cgo_import_dynamic libc___xnet_socket __xnet_socket \"libsocket.so\"\n//go:cgo_import_dynamic libc___xnet_socketpair __xnet_socketpair \"libsocket.so\"\n//go:cgo_import_dynamic libc_write write \"libc.so\"\n//go:cgo_import_dynamic libc___xnet_getsockopt __xnet_getsockopt \"libsocket.so\"\n//go:cgo_import_dynamic libc_getpeername getpeername \"libsocket.so\"\n//go:cgo_import_dynamic libc_setsockopt setsockopt \"libsocket.so\"\n//go:cgo_import_dynamic libc_recvfrom recvfrom \"libsocket.so\"\n//go:cgo_import_dynamic libc_getpeerucred getpeerucred \"libc.so\"\n//go:cgo_import_dynamic libc_ucred_get ucred_get \"libc.so\"\n//go:cgo_import_dynamic libc_ucred_geteuid ucred_geteuid \"libc.so\"\n//go:cgo_import_dynamic libc_ucred_getegid ucred_getegid \"libc.so\"\n//go:cgo_import_dynamic libc_ucred_getruid ucred_getruid \"libc.so\"\n//go:cgo_import_dynamic libc_ucred_getrgid ucred_getrgid \"libc.so\"\n//go:cgo_import_dynamic libc_ucred_getsuid ucred_getsuid \"libc.so\"\n//go:cgo_import_dynamic libc_ucred_getsgid ucred_getsgid \"libc.so\"\n//go:cgo_import_dynamic libc_ucred_getpid ucred_getpid \"libc.so\"\n//go:cgo_import_dynamic libc_ucred_free ucred_free \"libc.so\"\n//go:cgo_import_dynamic libc_port_create port_create \"libc.so\"\n//go:cgo_import_dynamic libc_port_associate port_associate \"libc.so\"\n//go:cgo_import_dynamic libc_port_dissociate port_dissociate \"libc.so\"\n//go:cgo_import_dynamic libc_port_get port_get \"libc.so\"\n//go:cgo_import_dynamic libc_port_getn port_getn \"libc.so\"\n//go:cgo_import_dynamic libc_putmsg putmsg \"libc.so\"\n//go:cgo_import_dynamic libc_getmsg getmsg \"libc.so\"\n\n//go:linkname procpipe libc_pipe\n//go:linkname procpipe2 libc_pipe2\n//go:linkname procgetsockname libc_getsockname\n//go:linkname procGetcwd libc_getcwd\n//go:linkname procgetgroups libc_getgroups\n//go:linkname procsetgroups libc_setgroups\n//go:linkname procwait4 libc_wait4\n//go:linkname procgethostname libc_gethostname\n//go:linkname procutimes libc_utimes\n//go:linkname procutimensat libc_utimensat\n//go:linkname procfcntl libc_fcntl\n//go:linkname procfutimesat libc_futimesat\n//go:linkname procaccept libc_accept\n//go:linkname proc__xnet_recvmsg libc___xnet_recvmsg\n//go:linkname proc__xnet_sendmsg libc___xnet_sendmsg\n//go:linkname procacct libc_acct\n//go:linkname proc__makedev libc___makedev\n//go:linkname proc__major libc___major\n//go:linkname proc__minor libc___minor\n//go:linkname procioctl libc_ioctl\n//go:linkname procpoll libc_poll\n//go:linkname procAccess libc_access\n//go:linkname procAdjtime libc_adjtime\n//go:linkname procChdir libc_chdir\n//go:linkname procChmod libc_chmod\n//go:linkname procChown libc_chown\n//go:linkname procChroot libc_chroot\n//go:linkname procClockGettime libc_clockgettime\n//go:linkname procClose libc_close\n//go:linkname procCreat libc_creat\n//go:linkname procDup libc_dup\n//go:linkname procDup2 libc_dup2\n//go:linkname procExit libc_exit\n//go:linkname procFaccessat libc_faccessat\n//go:linkname procFchdir libc_fchdir\n//go:linkname procFchmod libc_fchmod\n//go:linkname procFchmodat libc_fchmodat\n//go:linkname procFchown libc_fchown\n//go:linkname procFchownat libc_fchownat\n//go:linkname procFdatasync libc_fdatasync\n//go:linkname procFlock libc_flock\n//go:linkname procFpathconf libc_fpathconf\n//go:linkname procFstat libc_fstat\n//go:linkname procFstatat libc_fstatat\n//go:linkname procFstatvfs libc_fstatvfs\n//go:linkname procGetdents libc_getdents\n//go:linkname procGetgid libc_getgid\n//go:linkname procGetpid libc_getpid\n//go:linkname procGetpgid libc_getpgid\n//go:linkname procGetpgrp libc_getpgrp\n//go:linkname procGeteuid libc_geteuid\n//go:linkname procGetegid libc_getegid\n//go:linkname procGetppid libc_getppid\n//go:linkname procGetpriority libc_getpriority\n//go:linkname procGetrlimit libc_getrlimit\n//go:linkname procGetrusage libc_getrusage\n//go:linkname procGetsid libc_getsid\n//go:linkname procGettimeofday libc_gettimeofday\n//go:linkname procGetuid libc_getuid\n//go:linkname procKill libc_kill\n//go:linkname procLchown libc_lchown\n//go:linkname procLink libc_link\n//go:linkname proc__xnet_listen libc___xnet_listen\n//go:linkname procLstat libc_lstat\n//go:linkname procMadvise libc_madvise\n//go:linkname procMkdir libc_mkdir\n//go:linkname procMkdirat libc_mkdirat\n//go:linkname procMkfifo libc_mkfifo\n//go:linkname procMkfifoat libc_mkfifoat\n//go:linkname procMknod libc_mknod\n//go:linkname procMknodat libc_mknodat\n//go:linkname procMlock libc_mlock\n//go:linkname procMlockall libc_mlockall\n//go:linkname procMprotect libc_mprotect\n//go:linkname procMsync libc_msync\n//go:linkname procMunlock libc_munlock\n//go:linkname procMunlockall libc_munlockall\n//go:linkname procNanosleep libc_nanosleep\n//go:linkname procOpen libc_open\n//go:linkname procOpenat libc_openat\n//go:linkname procPathconf libc_pathconf\n//go:linkname procPause libc_pause\n//go:linkname procpread libc_pread\n//go:linkname procpwrite libc_pwrite\n//go:linkname procread libc_read\n//go:linkname procReadlink libc_readlink\n//go:linkname procRename libc_rename\n//go:linkname procRenameat libc_renameat\n//go:linkname procRmdir libc_rmdir\n//go:linkname proclseek libc_lseek\n//go:linkname procSelect libc_select\n//go:linkname procSetegid libc_setegid\n//go:linkname procSeteuid libc_seteuid\n//go:linkname procSetgid libc_setgid\n//go:linkname procSethostname libc_sethostname\n//go:linkname procSetpgid libc_setpgid\n//go:linkname procSetpriority libc_setpriority\n//go:linkname procSetregid libc_setregid\n//go:linkname procSetreuid libc_setreuid\n//go:linkname procSetsid libc_setsid\n//go:linkname procSetuid libc_setuid\n//go:linkname procshutdown libc_shutdown\n//go:linkname procStat libc_stat\n//go:linkname procStatvfs libc_statvfs\n//go:linkname procSymlink libc_symlink\n//go:linkname procSync libc_sync\n//go:linkname procSysconf libc_sysconf\n//go:linkname procTimes libc_times\n//go:linkname procTruncate libc_truncate\n//go:linkname procFsync libc_fsync\n//go:linkname procFtruncate libc_ftruncate\n//go:linkname procUmask libc_umask\n//go:linkname procUname libc_uname\n//go:linkname procumount libc_umount\n//go:linkname procUnlink libc_unlink\n//go:linkname procUnlinkat libc_unlinkat\n//go:linkname procUstat libc_ustat\n//go:linkname procUtime libc_utime\n//go:linkname proc__xnet_bind libc___xnet_bind\n//go:linkname proc__xnet_connect libc___xnet_connect\n//go:linkname procmmap libc_mmap\n//go:linkname procmunmap libc_munmap\n//go:linkname procsendfile libc_sendfile\n//go:linkname proc__xnet_sendto libc___xnet_sendto\n//go:linkname proc__xnet_socket libc___xnet_socket\n//go:linkname proc__xnet_socketpair libc___xnet_socketpair\n//go:linkname procwrite libc_write\n//go:linkname proc__xnet_getsockopt libc___xnet_getsockopt\n//go:linkname procgetpeername libc_getpeername\n//go:linkname procsetsockopt libc_setsockopt\n//go:linkname procrecvfrom libc_recvfrom\n//go:linkname procgetpeerucred libc_getpeerucred\n//go:linkname procucred_get libc_ucred_get\n//go:linkname procucred_geteuid libc_ucred_geteuid\n//go:linkname procucred_getegid libc_ucred_getegid\n//go:linkname procucred_getruid libc_ucred_getruid\n//go:linkname procucred_getrgid libc_ucred_getrgid\n//go:linkname procucred_getsuid libc_ucred_getsuid\n//go:linkname procucred_getsgid libc_ucred_getsgid\n//go:linkname procucred_getpid libc_ucred_getpid\n//go:linkname procucred_free libc_ucred_free\n//go:linkname procport_create libc_port_create\n//go:linkname procport_associate libc_port_associate\n//go:linkname procport_dissociate libc_port_dissociate\n//go:linkname procport_get libc_port_get\n//go:linkname procport_getn libc_port_getn\n//go:linkname procputmsg libc_putmsg\n//go:linkname procgetmsg libc_getmsg\n\nvar (\n\tprocpipe,\n\tprocpipe2,\n\tprocgetsockname,\n\tprocGetcwd,\n\tprocgetgroups,\n\tprocsetgroups,\n\tprocwait4,\n\tprocgethostname,\n\tprocutimes,\n\tprocutimensat,\n\tprocfcntl,\n\tprocfutimesat,\n\tprocaccept,\n\tproc__xnet_recvmsg,\n\tproc__xnet_sendmsg,\n\tprocacct,\n\tproc__makedev,\n\tproc__major,\n\tproc__minor,\n\tprocioctl,\n\tprocpoll,\n\tprocAccess,\n\tprocAdjtime,\n\tprocChdir,\n\tprocChmod,\n\tprocChown,\n\tprocChroot,\n\tprocClockGettime,\n\tprocClose,\n\tprocCreat,\n\tprocDup,\n\tprocDup2,\n\tprocExit,\n\tprocFaccessat,\n\tprocFchdir,\n\tprocFchmod,\n\tprocFchmodat,\n\tprocFchown,\n\tprocFchownat,\n\tprocFdatasync,\n\tprocFlock,\n\tprocFpathconf,\n\tprocFstat,\n\tprocFstatat,\n\tprocFstatvfs,\n\tprocGetdents,\n\tprocGetgid,\n\tprocGetpid,\n\tprocGetpgid,\n\tprocGetpgrp,\n\tprocGeteuid,\n\tprocGetegid,\n\tprocGetppid,\n\tprocGetpriority,\n\tprocGetrlimit,\n\tprocGetrusage,\n\tprocGetsid,\n\tprocGettimeofday,\n\tprocGetuid,\n\tprocKill,\n\tprocLchown,\n\tprocLink,\n\tproc__xnet_listen,\n\tprocLstat,\n\tprocMadvise,\n\tprocMkdir,\n\tprocMkdirat,\n\tprocMkfifo,\n\tprocMkfifoat,\n\tprocMknod,\n\tprocMknodat,\n\tprocMlock,\n\tprocMlockall,\n\tprocMprotect,\n\tprocMsync,\n\tprocMunlock,\n\tprocMunlockall,\n\tprocNanosleep,\n\tprocOpen,\n\tprocOpenat,\n\tprocPathconf,\n\tprocPause,\n\tprocpread,\n\tprocpwrite,\n\tprocread,\n\tprocReadlink,\n\tprocRename,\n\tprocRenameat,\n\tprocRmdir,\n\tproclseek,\n\tprocSelect,\n\tprocSetegid,\n\tprocSeteuid,\n\tprocSetgid,\n\tprocSethostname,\n\tprocSetpgid,\n\tprocSetpriority,\n\tprocSetregid,\n\tprocSetreuid,\n\tprocSetsid,\n\tprocSetuid,\n\tprocshutdown,\n\tprocStat,\n\tprocStatvfs,\n\tprocSymlink,\n\tprocSync,\n\tprocSysconf,\n\tprocTimes,\n\tprocTruncate,\n\tprocFsync,\n\tprocFtruncate,\n\tprocUmask,\n\tprocUname,\n\tprocumount,\n\tprocUnlink,\n\tprocUnlinkat,\n\tprocUstat,\n\tprocUtime,\n\tproc__xnet_bind,\n\tproc__xnet_connect,\n\tprocmmap,\n\tprocmunmap,\n\tprocsendfile,\n\tproc__xnet_sendto,\n\tproc__xnet_socket,\n\tproc__xnet_socketpair,\n\tprocwrite,\n\tproc__xnet_getsockopt,\n\tprocgetpeername,\n\tprocsetsockopt,\n\tprocrecvfrom,\n\tprocgetpeerucred,\n\tprocucred_get,\n\tprocucred_geteuid,\n\tprocucred_getegid,\n\tprocucred_getruid,\n\tprocucred_getrgid,\n\tprocucred_getsuid,\n\tprocucred_getsgid,\n\tprocucred_getpid,\n\tprocucred_free,\n\tprocport_create,\n\tprocport_associate,\n\tprocport_dissociate,\n\tprocport_get,\n\tprocport_getn,\n\tprocputmsg,\n\tprocgetmsg syscallFunc\n)\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe(p *[2]_C_int) (n int, err error) {\n\tr0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procpipe)), 1, uintptr(unsafe.Pointer(p)), 0, 0, 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procpipe2)), 2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procgetsockname)), 3, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procGetcwd)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), 0, 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procgetgroups)), 2, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0, 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procsetgroups)), 2, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int32, statusp *_C_int, options int, rusage *Rusage) (wpid int32, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procwait4)), 4, uintptr(pid), uintptr(unsafe.Pointer(statusp)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int32(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc gethostname(buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procgethostname)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), 0, 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procutimes)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(fd int, path string, times *[2]Timespec, flag int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procutimensat)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flag), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (val int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procfcntl)), 3, uintptr(fd), uintptr(cmd), uintptr(arg), 0, 0, 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(fildes int, path *byte, times *[2]Timeval) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procfutimesat)), 3, uintptr(fildes), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times)), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procaccept)), 3, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_recvmsg)), 3, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_sendmsg)), 3, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc acct(path *byte) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procacct)), 1, uintptr(unsafe.Pointer(path)), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc __makedev(version int, major uint, minor uint) (val uint64) {\n\tr0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&proc__makedev)), 3, uintptr(version), uintptr(major), uintptr(minor), 0, 0, 0)\n\tval = uint64(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc __major(version int, dev uint64) (val uint) {\n\tr0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&proc__major)), 2, uintptr(version), uintptr(dev), 0, 0, 0, 0)\n\tval = uint(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc __minor(version int, dev uint64) (val uint) {\n\tr0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&proc__minor)), 2, uintptr(version), uintptr(dev), 0, 0, 0, 0)\n\tval = uint(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlRet(fd int, req int, arg uintptr) (ret int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procioctl)), 3, uintptr(fd), uintptr(req), uintptr(arg), 0, 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtrRet(fd int, req int, arg unsafe.Pointer) (ret int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procioctl)), 3, uintptr(fd), uintptr(req), uintptr(arg), 0, 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procpoll)), 3, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout), 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procAccess)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procAdjtime)), 2, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procChdir)), 1, uintptr(unsafe.Pointer(_p0)), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procChmod)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procChown)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procChroot)), 1, uintptr(unsafe.Pointer(_p0)), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procClockGettime)), 2, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procClose)), 1, uintptr(fd), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Creat(path string, mode uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procCreat)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procDup)), 1, uintptr(fd), 0, 0, 0, 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(oldfd int, newfd int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procDup2)), 2, uintptr(oldfd), uintptr(newfd), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tsysvicall6(uintptr(unsafe.Pointer(&procExit)), 1, uintptr(code), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFaccessat)), 4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchdir)), 1, uintptr(fd), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchmod)), 2, uintptr(fd), uintptr(mode), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchmodat)), 4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchown)), 3, uintptr(fd), uintptr(uid), uintptr(gid), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchownat)), 5, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fdatasync(fd int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFdatasync)), 1, uintptr(fd), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFlock)), 2, uintptr(fd), uintptr(how), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFpathconf)), 2, uintptr(fd), uintptr(name), 0, 0, 0, 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFstat)), 2, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFstatat)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatvfs(fd int, vfsstat *Statvfs_t) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFstatvfs)), 2, uintptr(fd), uintptr(unsafe.Pointer(vfsstat)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte, basep *uintptr) (n int, err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procGetdents)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := rawSysvicall6(uintptr(unsafe.Pointer(&procGetgid)), 0, 0, 0, 0, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := rawSysvicall6(uintptr(unsafe.Pointer(&procGetpid)), 0, 0, 0, 0, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetpgid)), 1, uintptr(pid), 0, 0, 0, 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgid int, err error) {\n\tr0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetpgrp)), 0, 0, 0, 0, 0, 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procGeteuid)), 0, 0, 0, 0, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procGetegid)), 0, 0, 0, 0, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procGetppid)), 0, 0, 0, 0, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (n int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procGetpriority)), 2, uintptr(which), uintptr(who), 0, 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetrlimit)), 2, uintptr(which), uintptr(unsafe.Pointer(lim)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetrusage)), 2, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetsid)), 1, uintptr(pid), 0, 0, 0, 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGettimeofday)), 1, uintptr(unsafe.Pointer(tv)), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := rawSysvicall6(uintptr(unsafe.Pointer(&procGetuid)), 0, 0, 0, 0, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procKill)), 2, uintptr(pid), uintptr(signum), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procLchown)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procLink)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_listen)), 2, uintptr(s), uintptr(backlog), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procLstat)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, advice int) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMadvise)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), uintptr(advice), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMkdir)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMkdirat)), 3, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMkfifo)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMkfifoat)), 3, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMknod)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMknodat)), 4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMlock)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMlockall)), 1, uintptr(flags), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMprotect)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), uintptr(prot), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMsync)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), uintptr(flags), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMunlock)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMunlockall)), 0, 0, 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procNanosleep)), 2, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procOpen)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procOpenat)), 4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procPathconf)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0, 0, 0, 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procPause)), 0, 0, 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procpread)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procpwrite)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procread)), 3, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\tif len(buf) > 0 {\n\t\t_p1 = &buf[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procReadlink)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(len(buf)), 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procRename)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procRenameat)), 4, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procRmdir)), 1, uintptr(unsafe.Pointer(_p0)), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proclseek)), 3, uintptr(fd), uintptr(offset), uintptr(whence), 0, 0, 0)\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSelect)), 5, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetegid)), 1, uintptr(egid), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSeteuid)), 1, uintptr(euid), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetgid)), 1, uintptr(gid), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sethostname(p []byte) (err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSethostname)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetpgid)), 2, uintptr(pid), uintptr(pgid), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSetpriority)), 3, uintptr(which), uintptr(who), uintptr(prio), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetregid)), 2, uintptr(rgid), uintptr(egid), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetreuid)), 2, uintptr(ruid), uintptr(euid), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetsid)), 0, 0, 0, 0, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetuid)), 1, uintptr(uid), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procshutdown)), 2, uintptr(s), uintptr(how), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procStat)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statvfs(path string, vfsstat *Statvfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procStatvfs)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(vfsstat)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSymlink)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSync)), 0, 0, 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sysconf(which int) (n int64, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSysconf)), 1, uintptr(which), 0, 0, 0, 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Times(tms *Tms) (ticks uintptr, err error) {\n\tr0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procTimes)), 1, uintptr(unsafe.Pointer(tms)), 0, 0, 0, 0, 0)\n\tticks = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procTruncate)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFsync)), 1, uintptr(fd), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFtruncate)), 2, uintptr(fd), uintptr(length), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(mask int) (oldmask int) {\n\tr0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procUmask)), 1, uintptr(mask), 0, 0, 0, 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Uname(buf *Utsname) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procUname)), 1, uintptr(unsafe.Pointer(buf)), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(target string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(target)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procumount)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUnlink)), 1, uintptr(unsafe.Pointer(_p0)), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUnlinkat)), 3, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUstat)), 2, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUtime)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_bind)), 3, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_connect)), 3, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procmmap)), 6, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procmunmap)), 2, uintptr(addr), uintptr(length), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procsendfile)), 4, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_sendto)), 6, uintptr(s), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_socket)), 3, uintptr(domain), uintptr(typ), uintptr(proto), 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&proc__xnet_socketpair)), 4, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procwrite)), 3, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_getsockopt)), 5, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procgetpeername)), 3, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procsetsockopt)), 5, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procrecvfrom)), 6, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeerucred(fd uintptr, ucred *uintptr) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procgetpeerucred)), 2, uintptr(fd), uintptr(unsafe.Pointer(ucred)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ucredGet(pid int) (ucred uintptr, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procucred_get)), 1, uintptr(pid), 0, 0, 0, 0, 0)\n\tucred = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ucredGeteuid(ucred uintptr) (uid int) {\n\tr0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procucred_geteuid)), 1, uintptr(ucred), 0, 0, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ucredGetegid(ucred uintptr) (gid int) {\n\tr0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procucred_getegid)), 1, uintptr(ucred), 0, 0, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ucredGetruid(ucred uintptr) (uid int) {\n\tr0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procucred_getruid)), 1, uintptr(ucred), 0, 0, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ucredGetrgid(ucred uintptr) (gid int) {\n\tr0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procucred_getrgid)), 1, uintptr(ucred), 0, 0, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ucredGetsuid(ucred uintptr) (uid int) {\n\tr0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procucred_getsuid)), 1, uintptr(ucred), 0, 0, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ucredGetsgid(ucred uintptr) (gid int) {\n\tr0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procucred_getsgid)), 1, uintptr(ucred), 0, 0, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ucredGetpid(ucred uintptr) (pid int) {\n\tr0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procucred_getpid)), 1, uintptr(ucred), 0, 0, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ucredFree(ucred uintptr) {\n\tsysvicall6(uintptr(unsafe.Pointer(&procucred_free)), 1, uintptr(ucred), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc port_create() (n int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procport_create)), 0, 0, 0, 0, 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc port_associate(port int, source int, object uintptr, events int, user *byte) (n int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procport_associate)), 5, uintptr(port), uintptr(source), uintptr(object), uintptr(events), uintptr(unsafe.Pointer(user)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc port_dissociate(port int, source int, object uintptr) (n int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procport_dissociate)), 3, uintptr(port), uintptr(source), uintptr(object), 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc port_get(port int, pe *portEvent, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procport_get)), 3, uintptr(port), uintptr(unsafe.Pointer(pe)), uintptr(unsafe.Pointer(timeout)), 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc port_getn(port int, pe *portEvent, max uint32, nget *uint32, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procport_getn)), 5, uintptr(port), uintptr(unsafe.Pointer(pe)), uintptr(max), uintptr(unsafe.Pointer(nget)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc putmsg(fd int, clptr *strbuf, dataptr *strbuf, flags int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procputmsg)), 4, uintptr(fd), uintptr(unsafe.Pointer(clptr)), uintptr(unsafe.Pointer(dataptr)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getmsg(fd int, clptr *strbuf, dataptr *strbuf, flags *int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procgetmsg)), 4, uintptr(fd), uintptr(unsafe.Pointer(clptr)), uintptr(unsafe.Pointer(dataptr)), uintptr(unsafe.Pointer(flags)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_zos_s390x.go",
    "content": "// go run mksyscall_zos_s390x.go -o_sysnum zsysnum_zos_s390x.go -o_syscall zsyscall_zos_s390x.go -i_syscall syscall_zos_s390x.go -o_asm zsymaddr_zos_s390x.s\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build zos && s390x\n\npackage unix\n\nimport (\n\t\"runtime\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (val int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FCNTL<<4, uintptr(fd), uintptr(cmd), uintptr(arg))\n\truntime.ExitSyscall()\n\tval = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Flistxattr(fd int, dest []byte) (sz int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p0 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___FLISTXATTR_A<<4, uintptr(fd), uintptr(_p0), uintptr(len(dest)))\n\truntime.ExitSyscall()\n\tsz = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_FlistxattrAddr() *(func(fd int, dest []byte) (sz int, err error))\n\nvar Flistxattr = enter_Flistxattr\n\nfunc enter_Flistxattr(fd int, dest []byte) (sz int, err error) {\n\tfuncref := get_FlistxattrAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___FLISTXATTR_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Flistxattr\n\t} else {\n\t\t*funcref = error_Flistxattr\n\t}\n\treturn (*funcref)(fd, dest)\n}\n\nfunc error_Flistxattr(fd int, dest []byte) (sz int, err error) {\n\tsz = -1\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Fremovexattr(fd int, attr string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___FREMOVEXATTR_A<<4, uintptr(fd), uintptr(unsafe.Pointer(_p0)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_FremovexattrAddr() *(func(fd int, attr string) (err error))\n\nvar Fremovexattr = enter_Fremovexattr\n\nfunc enter_Fremovexattr(fd int, attr string) (err error) {\n\tfuncref := get_FremovexattrAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___FREMOVEXATTR_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Fremovexattr\n\t} else {\n\t\t*funcref = error_Fremovexattr\n\t}\n\treturn (*funcref)(fd, attr)\n}\n\nfunc error_Fremovexattr(fd int, attr string) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_READ<<4, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\truntime.ExitSyscall()\n\tn = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_WRITE<<4, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\truntime.ExitSyscall()\n\tn = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___FGETXATTR_A<<4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))\n\truntime.ExitSyscall()\n\tsz = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_FgetxattrAddr() *(func(fd int, attr string, dest []byte) (sz int, err error))\n\nvar Fgetxattr = enter_Fgetxattr\n\nfunc enter_Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) {\n\tfuncref := get_FgetxattrAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___FGETXATTR_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Fgetxattr\n\t} else {\n\t\t*funcref = error_Fgetxattr\n\t}\n\treturn (*funcref)(fd, attr, dest)\n}\n\nfunc error_Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) {\n\tsz = -1\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Fsetxattr(fd int, attr string, data []byte, flag int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(data) > 0 {\n\t\t_p1 = unsafe.Pointer(&data[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___FSETXATTR_A<<4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(data)), uintptr(flag))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_FsetxattrAddr() *(func(fd int, attr string, data []byte, flag int) (err error))\n\nvar Fsetxattr = enter_Fsetxattr\n\nfunc enter_Fsetxattr(fd int, attr string, data []byte, flag int) (err error) {\n\tfuncref := get_FsetxattrAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___FSETXATTR_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Fsetxattr\n\t} else {\n\t\t*funcref = error_Fsetxattr\n\t}\n\treturn (*funcref)(fd, attr, data, flag)\n}\n\nfunc error_Fsetxattr(fd int, attr string, data []byte, flag int) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___ACCEPT_A<<4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\truntime.ExitSyscall()\n\tfd = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___ACCEPT4_A<<4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags))\n\truntime.ExitSyscall()\n\tfd = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_accept4Addr() *(func(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error))\n\nvar accept4 = enter_accept4\n\nfunc enter_accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tfuncref := get_accept4Addr()\n\tif funcptrtest(GetZosLibVec()+SYS___ACCEPT4_A<<4, \"\") == 0 {\n\t\t*funcref = impl_accept4\n\t} else {\n\t\t*funcref = error_accept4\n\t}\n\treturn (*funcref)(s, rsa, addrlen, flags)\n}\n\nfunc error_accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tfd = -1\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___BIND_A<<4, uintptr(s), uintptr(addr), uintptr(addrlen))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___CONNECT_A<<4, uintptr(s), uintptr(addr), uintptr(addrlen))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_GETGROUPS<<4, uintptr(n), uintptr(unsafe.Pointer(list)))\n\tnn = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETGROUPS<<4, uintptr(n), uintptr(unsafe.Pointer(list)))\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_GETSOCKOPT<<4, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETSOCKOPT<<4, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SOCKET<<4, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SOCKETPAIR<<4, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)))\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___GETPEERNAME_A<<4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___GETSOCKNAME_A<<4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Removexattr(path string, attr string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___REMOVEXATTR_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_RemovexattrAddr() *(func(path string, attr string) (err error))\n\nvar Removexattr = enter_Removexattr\n\nfunc enter_Removexattr(path string, attr string) (err error) {\n\tfuncref := get_RemovexattrAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___REMOVEXATTR_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Removexattr\n\t} else {\n\t\t*funcref = error_Removexattr\n\t}\n\treturn (*funcref)(path, attr)\n}\n\nfunc error_Removexattr(path string, attr string) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___RECVFROM_A<<4, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\truntime.ExitSyscall()\n\tn = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___SENDTO_A<<4, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___RECVMSG_A<<4, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\truntime.ExitSyscall()\n\tn = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___SENDMSG_A<<4, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\truntime.ExitSyscall()\n\tn = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_MMAP<<4, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))\n\truntime.ExitSyscall()\n\tret = uintptr(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_MUNMAP<<4, uintptr(addr), uintptr(length))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req int, arg uintptr) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_IOCTL<<4, uintptr(fd), uintptr(req), uintptr(arg))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req int, arg unsafe.Pointer) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_IOCTL<<4, uintptr(fd), uintptr(req), uintptr(arg))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc shmat(id int, addr uintptr, flag int) (ret uintptr, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SHMAT<<4, uintptr(id), uintptr(addr), uintptr(flag))\n\truntime.ExitSyscall()\n\tret = uintptr(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc shmctl(id int, cmd int, buf *SysvShmDesc) (result int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SHMCTL64<<4, uintptr(id), uintptr(cmd), uintptr(unsafe.Pointer(buf)))\n\truntime.ExitSyscall()\n\tresult = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc shmdt(addr uintptr) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SHMDT<<4, uintptr(addr))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc shmget(key int, size int, flag int) (id int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SHMGET<<4, uintptr(key), uintptr(size), uintptr(flag))\n\truntime.ExitSyscall()\n\tid = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___ACCESS_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___CHDIR_A<<4, uintptr(unsafe.Pointer(_p0)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___CHOWN_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___CHMOD_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Creat(path string, mode uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___CREAT_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\truntime.ExitSyscall()\n\tfd = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(oldfd int) (fd int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_DUP<<4, uintptr(oldfd))\n\truntime.ExitSyscall()\n\tfd = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(oldfd int, newfd int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_DUP2<<4, uintptr(oldfd), uintptr(newfd))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Dup3(oldfd int, newfd int, flags int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_DUP3<<4, uintptr(oldfd), uintptr(newfd), uintptr(flags))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_Dup3Addr() *(func(oldfd int, newfd int, flags int) (err error))\n\nvar Dup3 = enter_Dup3\n\nfunc enter_Dup3(oldfd int, newfd int, flags int) (err error) {\n\tfuncref := get_Dup3Addr()\n\tif funcptrtest(GetZosLibVec()+SYS_DUP3<<4, \"\") == 0 {\n\t\t*funcref = impl_Dup3\n\t} else {\n\t\t*funcref = error_Dup3\n\t}\n\treturn (*funcref)(oldfd, newfd, flags)\n}\n\nfunc error_Dup3(oldfd int, newfd int, flags int) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Dirfd(dirp uintptr) (fd int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_DIRFD<<4, uintptr(dirp))\n\truntime.ExitSyscall()\n\tfd = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_DirfdAddr() *(func(dirp uintptr) (fd int, err error))\n\nvar Dirfd = enter_Dirfd\n\nfunc enter_Dirfd(dirp uintptr) (fd int, err error) {\n\tfuncref := get_DirfdAddr()\n\tif funcptrtest(GetZosLibVec()+SYS_DIRFD<<4, \"\") == 0 {\n\t\t*funcref = impl_Dirfd\n\t} else {\n\t\t*funcref = error_Dirfd\n\t}\n\treturn (*funcref)(dirp)\n}\n\nfunc error_Dirfd(dirp uintptr) (fd int, err error) {\n\tfd = -1\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_EpollCreate(size int) (fd int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_EPOLL_CREATE<<4, uintptr(size))\n\truntime.ExitSyscall()\n\tfd = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_EpollCreateAddr() *(func(size int) (fd int, err error))\n\nvar EpollCreate = enter_EpollCreate\n\nfunc enter_EpollCreate(size int) (fd int, err error) {\n\tfuncref := get_EpollCreateAddr()\n\tif funcptrtest(GetZosLibVec()+SYS_EPOLL_CREATE<<4, \"\") == 0 {\n\t\t*funcref = impl_EpollCreate\n\t} else {\n\t\t*funcref = error_EpollCreate\n\t}\n\treturn (*funcref)(size)\n}\n\nfunc error_EpollCreate(size int) (fd int, err error) {\n\tfd = -1\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_EpollCreate1(flags int) (fd int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_EPOLL_CREATE1<<4, uintptr(flags))\n\truntime.ExitSyscall()\n\tfd = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_EpollCreate1Addr() *(func(flags int) (fd int, err error))\n\nvar EpollCreate1 = enter_EpollCreate1\n\nfunc enter_EpollCreate1(flags int) (fd int, err error) {\n\tfuncref := get_EpollCreate1Addr()\n\tif funcptrtest(GetZosLibVec()+SYS_EPOLL_CREATE1<<4, \"\") == 0 {\n\t\t*funcref = impl_EpollCreate1\n\t} else {\n\t\t*funcref = error_EpollCreate1\n\t}\n\treturn (*funcref)(flags)\n}\n\nfunc error_EpollCreate1(flags int) (fd int, err error) {\n\tfd = -1\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_EPOLL_CTL<<4, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_EpollCtlAddr() *(func(epfd int, op int, fd int, event *EpollEvent) (err error))\n\nvar EpollCtl = enter_EpollCtl\n\nfunc enter_EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {\n\tfuncref := get_EpollCtlAddr()\n\tif funcptrtest(GetZosLibVec()+SYS_EPOLL_CTL<<4, \"\") == 0 {\n\t\t*funcref = impl_EpollCtl\n\t} else {\n\t\t*funcref = error_EpollCtl\n\t}\n\treturn (*funcref)(epfd, op, fd, event)\n}\n\nfunc error_EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_EpollPwait(epfd int, events []EpollEvent, msec int, sigmask *int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_EPOLL_PWAIT<<4, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), uintptr(unsafe.Pointer(sigmask)))\n\truntime.ExitSyscall()\n\tn = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_EpollPwaitAddr() *(func(epfd int, events []EpollEvent, msec int, sigmask *int) (n int, err error))\n\nvar EpollPwait = enter_EpollPwait\n\nfunc enter_EpollPwait(epfd int, events []EpollEvent, msec int, sigmask *int) (n int, err error) {\n\tfuncref := get_EpollPwaitAddr()\n\tif funcptrtest(GetZosLibVec()+SYS_EPOLL_PWAIT<<4, \"\") == 0 {\n\t\t*funcref = impl_EpollPwait\n\t} else {\n\t\t*funcref = error_EpollPwait\n\t}\n\treturn (*funcref)(epfd, events, msec, sigmask)\n}\n\nfunc error_EpollPwait(epfd int, events []EpollEvent, msec int, sigmask *int) (n int, err error) {\n\tn = -1\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_EPOLL_WAIT<<4, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec))\n\truntime.ExitSyscall()\n\tn = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_EpollWaitAddr() *(func(epfd int, events []EpollEvent, msec int) (n int, err error))\n\nvar EpollWait = enter_EpollWait\n\nfunc enter_EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tfuncref := get_EpollWaitAddr()\n\tif funcptrtest(GetZosLibVec()+SYS_EPOLL_WAIT<<4, \"\") == 0 {\n\t\t*funcref = impl_EpollWait\n\t} else {\n\t\t*funcref = error_EpollWait\n\t}\n\treturn (*funcref)(epfd, events, msec)\n}\n\nfunc error_EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tn = -1\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Errno2() (er2 int) {\n\truntime.EnterSyscall()\n\tr0, _, _ := CallLeFuncWithErr(GetZosLibVec() + SYS___ERRNO2<<4)\n\truntime.ExitSyscall()\n\ter2 = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Eventfd(initval uint, flags int) (fd int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_EVENTFD<<4, uintptr(initval), uintptr(flags))\n\truntime.ExitSyscall()\n\tfd = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_EventfdAddr() *(func(initval uint, flags int) (fd int, err error))\n\nvar Eventfd = enter_Eventfd\n\nfunc enter_Eventfd(initval uint, flags int) (fd int, err error) {\n\tfuncref := get_EventfdAddr()\n\tif funcptrtest(GetZosLibVec()+SYS_EVENTFD<<4, \"\") == 0 {\n\t\t*funcref = impl_Eventfd\n\t} else {\n\t\t*funcref = error_Eventfd\n\t}\n\treturn (*funcref)(initval, flags)\n}\n\nfunc error_Eventfd(initval uint, flags int) (fd int, err error) {\n\tfd = -1\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\truntime.EnterSyscall()\n\tCallLeFuncWithErr(GetZosLibVec()+SYS_EXIT<<4, uintptr(code))\n\truntime.ExitSyscall()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___FACCESSAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_FaccessatAddr() *(func(dirfd int, path string, mode uint32, flags int) (err error))\n\nvar Faccessat = enter_Faccessat\n\nfunc enter_Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tfuncref := get_FaccessatAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___FACCESSAT_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Faccessat\n\t} else {\n\t\t*funcref = error_Faccessat\n\t}\n\treturn (*funcref)(dirfd, path, mode, flags)\n}\n\nfunc error_Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FCHDIR<<4, uintptr(fd))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FCHMOD<<4, uintptr(fd), uintptr(mode))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___FCHMODAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_FchmodatAddr() *(func(dirfd int, path string, mode uint32, flags int) (err error))\n\nvar Fchmodat = enter_Fchmodat\n\nfunc enter_Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tfuncref := get_FchmodatAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___FCHMODAT_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Fchmodat\n\t} else {\n\t\t*funcref = error_Fchmodat\n\t}\n\treturn (*funcref)(dirfd, path, mode, flags)\n}\n\nfunc error_Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FCHOWN<<4, uintptr(fd), uintptr(uid), uintptr(gid))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Fchownat(fd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___FCHOWNAT_A<<4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_FchownatAddr() *(func(fd int, path string, uid int, gid int, flags int) (err error))\n\nvar Fchownat = enter_Fchownat\n\nfunc enter_Fchownat(fd int, path string, uid int, gid int, flags int) (err error) {\n\tfuncref := get_FchownatAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___FCHOWNAT_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Fchownat\n\t} else {\n\t\t*funcref = error_Fchownat\n\t}\n\treturn (*funcref)(fd, path, uid, gid, flags)\n}\n\nfunc error_Fchownat(fd int, path string, uid int, gid int, flags int) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc FcntlInt(fd uintptr, cmd int, arg int) (retval int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FCNTL<<4, uintptr(fd), uintptr(cmd), uintptr(arg))\n\truntime.ExitSyscall()\n\tretval = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Fdatasync(fd int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FDATASYNC<<4, uintptr(fd))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_FdatasyncAddr() *(func(fd int) (err error))\n\nvar Fdatasync = enter_Fdatasync\n\nfunc enter_Fdatasync(fd int) (err error) {\n\tfuncref := get_FdatasyncAddr()\n\tif funcptrtest(GetZosLibVec()+SYS_FDATASYNC<<4, \"\") == 0 {\n\t\t*funcref = impl_Fdatasync\n\t} else {\n\t\t*funcref = error_Fdatasync\n\t}\n\treturn (*funcref)(fd)\n}\n\nfunc error_Fdatasync(fd int) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstat(fd int, stat *Stat_LE_t) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FSTAT<<4, uintptr(fd), uintptr(unsafe.Pointer(stat)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_fstatat(dirfd int, path string, stat *Stat_LE_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___FSTATAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_fstatatAddr() *(func(dirfd int, path string, stat *Stat_LE_t, flags int) (err error))\n\nvar fstatat = enter_fstatat\n\nfunc enter_fstatat(dirfd int, path string, stat *Stat_LE_t, flags int) (err error) {\n\tfuncref := get_fstatatAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___FSTATAT_A<<4, \"\") == 0 {\n\t\t*funcref = impl_fstatat\n\t} else {\n\t\t*funcref = error_fstatat\n\t}\n\treturn (*funcref)(dirfd, path, stat, flags)\n}\n\nfunc error_fstatat(dirfd int, path string, stat *Stat_LE_t, flags int) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Lgetxattr(link string, attr string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p2 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___LGETXATTR_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)))\n\truntime.ExitSyscall()\n\tsz = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_LgetxattrAddr() *(func(link string, attr string, dest []byte) (sz int, err error))\n\nvar Lgetxattr = enter_Lgetxattr\n\nfunc enter_Lgetxattr(link string, attr string, dest []byte) (sz int, err error) {\n\tfuncref := get_LgetxattrAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___LGETXATTR_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Lgetxattr\n\t} else {\n\t\t*funcref = error_Lgetxattr\n\t}\n\treturn (*funcref)(link, attr, dest)\n}\n\nfunc error_Lgetxattr(link string, attr string, dest []byte) (sz int, err error) {\n\tsz = -1\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Lsetxattr(path string, attr string, data []byte, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(data) > 0 {\n\t\t_p2 = unsafe.Pointer(&data[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___LSETXATTR_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_LsetxattrAddr() *(func(path string, attr string, data []byte, flags int) (err error))\n\nvar Lsetxattr = enter_Lsetxattr\n\nfunc enter_Lsetxattr(path string, attr string, data []byte, flags int) (err error) {\n\tfuncref := get_LsetxattrAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___LSETXATTR_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Lsetxattr\n\t} else {\n\t\t*funcref = error_Lsetxattr\n\t}\n\treturn (*funcref)(path, attr, data, flags)\n}\n\nfunc error_Lsetxattr(path string, attr string, data []byte, flags int) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Fstatfs(fd int, buf *Statfs_t) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FSTATFS<<4, uintptr(fd), uintptr(unsafe.Pointer(buf)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_FstatfsAddr() *(func(fd int, buf *Statfs_t) (err error))\n\nvar Fstatfs = enter_Fstatfs\n\nfunc enter_Fstatfs(fd int, buf *Statfs_t) (err error) {\n\tfuncref := get_FstatfsAddr()\n\tif funcptrtest(GetZosLibVec()+SYS_FSTATFS<<4, \"\") == 0 {\n\t\t*funcref = impl_Fstatfs\n\t} else {\n\t\t*funcref = error_Fstatfs\n\t}\n\treturn (*funcref)(fd, buf)\n}\n\nfunc error_Fstatfs(fd int, buf *Statfs_t) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatvfs(fd int, stat *Statvfs_t) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FSTATVFS<<4, uintptr(fd), uintptr(unsafe.Pointer(stat)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FSYNC<<4, uintptr(fd))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Futimes(fd int, tv []Timeval) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(tv) > 0 {\n\t\t_p0 = unsafe.Pointer(&tv[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FUTIMES<<4, uintptr(fd), uintptr(_p0), uintptr(len(tv)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_FutimesAddr() *(func(fd int, tv []Timeval) (err error))\n\nvar Futimes = enter_Futimes\n\nfunc enter_Futimes(fd int, tv []Timeval) (err error) {\n\tfuncref := get_FutimesAddr()\n\tif funcptrtest(GetZosLibVec()+SYS_FUTIMES<<4, \"\") == 0 {\n\t\t*funcref = impl_Futimes\n\t} else {\n\t\t*funcref = error_Futimes\n\t}\n\treturn (*funcref)(fd, tv)\n}\n\nfunc error_Futimes(fd int, tv []Timeval) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Futimesat(dirfd int, path string, tv []Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(tv) > 0 {\n\t\t_p1 = unsafe.Pointer(&tv[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___FUTIMESAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(tv)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_FutimesatAddr() *(func(dirfd int, path string, tv []Timeval) (err error))\n\nvar Futimesat = enter_Futimesat\n\nfunc enter_Futimesat(dirfd int, path string, tv []Timeval) (err error) {\n\tfuncref := get_FutimesatAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___FUTIMESAT_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Futimesat\n\t} else {\n\t\t*funcref = error_Futimesat\n\t}\n\treturn (*funcref)(dirfd, path, tv)\n}\n\nfunc error_Futimesat(dirfd int, path string, tv []Timeval) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FTRUNCATE<<4, uintptr(fd), uintptr(length))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Getrandom(buf []byte, flags int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_GETRANDOM<<4, uintptr(_p0), uintptr(len(buf)), uintptr(flags))\n\truntime.ExitSyscall()\n\tn = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_GetrandomAddr() *(func(buf []byte, flags int) (n int, err error))\n\nvar Getrandom = enter_Getrandom\n\nfunc enter_Getrandom(buf []byte, flags int) (n int, err error) {\n\tfuncref := get_GetrandomAddr()\n\tif funcptrtest(GetZosLibVec()+SYS_GETRANDOM<<4, \"\") == 0 {\n\t\t*funcref = impl_Getrandom\n\t} else {\n\t\t*funcref = error_Getrandom\n\t}\n\treturn (*funcref)(buf, flags)\n}\n\nfunc error_Getrandom(buf []byte, flags int) (n int, err error) {\n\tn = -1\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_InotifyInit() (fd int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec() + SYS_INOTIFY_INIT<<4)\n\truntime.ExitSyscall()\n\tfd = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_InotifyInitAddr() *(func() (fd int, err error))\n\nvar InotifyInit = enter_InotifyInit\n\nfunc enter_InotifyInit() (fd int, err error) {\n\tfuncref := get_InotifyInitAddr()\n\tif funcptrtest(GetZosLibVec()+SYS_INOTIFY_INIT<<4, \"\") == 0 {\n\t\t*funcref = impl_InotifyInit\n\t} else {\n\t\t*funcref = error_InotifyInit\n\t}\n\treturn (*funcref)()\n}\n\nfunc error_InotifyInit() (fd int, err error) {\n\tfd = -1\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_InotifyInit1(flags int) (fd int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_INOTIFY_INIT1<<4, uintptr(flags))\n\truntime.ExitSyscall()\n\tfd = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_InotifyInit1Addr() *(func(flags int) (fd int, err error))\n\nvar InotifyInit1 = enter_InotifyInit1\n\nfunc enter_InotifyInit1(flags int) (fd int, err error) {\n\tfuncref := get_InotifyInit1Addr()\n\tif funcptrtest(GetZosLibVec()+SYS_INOTIFY_INIT1<<4, \"\") == 0 {\n\t\t*funcref = impl_InotifyInit1\n\t} else {\n\t\t*funcref = error_InotifyInit1\n\t}\n\treturn (*funcref)(flags)\n}\n\nfunc error_InotifyInit1(flags int) (fd int, err error) {\n\tfd = -1\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(pathname)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___INOTIFY_ADD_WATCH_A<<4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask))\n\truntime.ExitSyscall()\n\twatchdesc = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_InotifyAddWatchAddr() *(func(fd int, pathname string, mask uint32) (watchdesc int, err error))\n\nvar InotifyAddWatch = enter_InotifyAddWatch\n\nfunc enter_InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {\n\tfuncref := get_InotifyAddWatchAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___INOTIFY_ADD_WATCH_A<<4, \"\") == 0 {\n\t\t*funcref = impl_InotifyAddWatch\n\t} else {\n\t\t*funcref = error_InotifyAddWatch\n\t}\n\treturn (*funcref)(fd, pathname, mask)\n}\n\nfunc error_InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {\n\twatchdesc = -1\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_INOTIFY_RM_WATCH<<4, uintptr(fd), uintptr(watchdesc))\n\truntime.ExitSyscall()\n\tsuccess = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_InotifyRmWatchAddr() *(func(fd int, watchdesc uint32) (success int, err error))\n\nvar InotifyRmWatch = enter_InotifyRmWatch\n\nfunc enter_InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {\n\tfuncref := get_InotifyRmWatchAddr()\n\tif funcptrtest(GetZosLibVec()+SYS_INOTIFY_RM_WATCH<<4, \"\") == 0 {\n\t\t*funcref = impl_InotifyRmWatch\n\t} else {\n\t\t*funcref = error_InotifyRmWatch\n\t}\n\treturn (*funcref)(fd, watchdesc)\n}\n\nfunc error_InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {\n\tsuccess = -1\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Listxattr(path string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___LISTXATTR_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))\n\truntime.ExitSyscall()\n\tsz = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_ListxattrAddr() *(func(path string, dest []byte) (sz int, err error))\n\nvar Listxattr = enter_Listxattr\n\nfunc enter_Listxattr(path string, dest []byte) (sz int, err error) {\n\tfuncref := get_ListxattrAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___LISTXATTR_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Listxattr\n\t} else {\n\t\t*funcref = error_Listxattr\n\t}\n\treturn (*funcref)(path, dest)\n}\n\nfunc error_Listxattr(path string, dest []byte) (sz int, err error) {\n\tsz = -1\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Llistxattr(path string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___LLISTXATTR_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))\n\truntime.ExitSyscall()\n\tsz = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_LlistxattrAddr() *(func(path string, dest []byte) (sz int, err error))\n\nvar Llistxattr = enter_Llistxattr\n\nfunc enter_Llistxattr(path string, dest []byte) (sz int, err error) {\n\tfuncref := get_LlistxattrAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___LLISTXATTR_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Llistxattr\n\t} else {\n\t\t*funcref = error_Llistxattr\n\t}\n\treturn (*funcref)(path, dest)\n}\n\nfunc error_Llistxattr(path string, dest []byte) (sz int, err error) {\n\tsz = -1\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Lremovexattr(path string, attr string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___LREMOVEXATTR_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_LremovexattrAddr() *(func(path string, attr string) (err error))\n\nvar Lremovexattr = enter_Lremovexattr\n\nfunc enter_Lremovexattr(path string, attr string) (err error) {\n\tfuncref := get_LremovexattrAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___LREMOVEXATTR_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Lremovexattr\n\t} else {\n\t\t*funcref = error_Lremovexattr\n\t}\n\treturn (*funcref)(path, attr)\n}\n\nfunc error_Lremovexattr(path string, attr string) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Lutimes(path string, tv []Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(tv) > 0 {\n\t\t_p1 = unsafe.Pointer(&tv[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___LUTIMES_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(tv)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_LutimesAddr() *(func(path string, tv []Timeval) (err error))\n\nvar Lutimes = enter_Lutimes\n\nfunc enter_Lutimes(path string, tv []Timeval) (err error) {\n\tfuncref := get_LutimesAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___LUTIMES_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Lutimes\n\t} else {\n\t\t*funcref = error_Lutimes\n\t}\n\treturn (*funcref)(path, tv)\n}\n\nfunc error_Lutimes(path string, tv []Timeval) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_MPROTECT<<4, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_MSYNC<<4, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Console2(cmsg *ConsMsg2, modstr *byte, concmd *uint32) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___CONSOLE2<<4, uintptr(unsafe.Pointer(cmsg)), uintptr(unsafe.Pointer(modstr)), uintptr(unsafe.Pointer(concmd)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Poll(fds []PollFd, timeout int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(fds) > 0 {\n\t\t_p0 = unsafe.Pointer(&fds[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_POLL<<4, uintptr(_p0), uintptr(len(fds)), uintptr(timeout))\n\truntime.ExitSyscall()\n\tn = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readdir_r(dirp uintptr, entry *direntLE, result **direntLE) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___READDIR_R_A<<4, uintptr(dirp), uintptr(unsafe.Pointer(entry)), uintptr(unsafe.Pointer(result)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___STATFS_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_StatfsAddr() *(func(path string, buf *Statfs_t) (err error))\n\nvar Statfs = enter_Statfs\n\nfunc enter_Statfs(path string, buf *Statfs_t) (err error) {\n\tfuncref := get_StatfsAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___STATFS_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Statfs\n\t} else {\n\t\t*funcref = error_Statfs\n\t}\n\treturn (*funcref)(path, buf)\n}\n\nfunc error_Statfs(path string, buf *Statfs_t) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Syncfs(fd int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SYNCFS<<4, uintptr(fd))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_SyncfsAddr() *(func(fd int) (err error))\n\nvar Syncfs = enter_Syncfs\n\nfunc enter_Syncfs(fd int) (err error) {\n\tfuncref := get_SyncfsAddr()\n\tif funcptrtest(GetZosLibVec()+SYS_SYNCFS<<4, \"\") == 0 {\n\t\t*funcref = impl_Syncfs\n\t} else {\n\t\t*funcref = error_Syncfs\n\t}\n\treturn (*funcref)(fd)\n}\n\nfunc error_Syncfs(fd int) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Times(tms *Tms) (ticks uintptr, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_TIMES<<4, uintptr(unsafe.Pointer(tms)))\n\truntime.ExitSyscall()\n\tticks = uintptr(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc W_Getmntent(buff *byte, size int) (lastsys int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_W_GETMNTENT<<4, uintptr(unsafe.Pointer(buff)), uintptr(size))\n\truntime.ExitSyscall()\n\tlastsys = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc W_Getmntent_A(buff *byte, size int) (lastsys int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___W_GETMNTENT_A<<4, uintptr(unsafe.Pointer(buff)), uintptr(size))\n\truntime.ExitSyscall()\n\tlastsys = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mount_LE(path string, filesystem string, fstype string, mtm uint32, parmlen int32, parm string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(filesystem)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 *byte\n\t_p2, err = BytePtrFromString(fstype)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p3 *byte\n\t_p3, err = BytePtrFromString(parm)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MOUNT_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(mtm), uintptr(parmlen), uintptr(unsafe.Pointer(_p3)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc unmount_LE(filesystem string, mtm int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(filesystem)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___UMOUNT_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(mtm))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___CHROOT_A<<4, uintptr(unsafe.Pointer(_p0)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nmsgsfds int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (ret int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SELECT<<4, uintptr(nmsgsfds), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)))\n\truntime.ExitSyscall()\n\tret = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Uname(buf *Utsname) (err error) {\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_____OSNAME_A<<4, uintptr(unsafe.Pointer(buf)))\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Unshare(flags int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_UNSHARE<<4, uintptr(flags))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_UnshareAddr() *(func(flags int) (err error))\n\nvar Unshare = enter_Unshare\n\nfunc enter_Unshare(flags int) (err error) {\n\tfuncref := get_UnshareAddr()\n\tif funcptrtest(GetZosLibVec()+SYS_UNSHARE<<4, \"\") == 0 {\n\t\t*funcref = impl_Unshare\n\t} else {\n\t\t*funcref = error_Unshare\n\t}\n\treturn (*funcref)(flags)\n}\n\nfunc error_Unshare(flags int) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gethostname(buf []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___GETHOSTNAME_A<<4, uintptr(_p0), uintptr(len(buf)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := CallLeFuncWithErr(GetZosLibVec() + SYS_GETGID<<4)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := CallLeFuncWithErr(GetZosLibVec() + SYS_GETPID<<4)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_GETPGID<<4, uintptr(pid))\n\tpgid = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (pid int) {\n\tr0, _, _ := CallLeFuncWithErr(GetZosLibVec() + SYS_GETPPID<<4)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_GETPRIORITY<<4, uintptr(which), uintptr(who))\n\truntime.ExitSyscall()\n\tprio = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_GETRLIMIT<<4, uintptr(resource), uintptr(unsafe.Pointer(rlim)))\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getrusage(who int, rusage *rusage_zos) (err error) {\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_GETRUSAGE<<4, uintptr(who), uintptr(unsafe.Pointer(rusage)))\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\truntime.EnterSyscall()\n\tr0, _, _ := CallLeFuncWithErr(GetZosLibVec() + SYS_GETEGID<<4)\n\truntime.ExitSyscall()\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\truntime.EnterSyscall()\n\tr0, _, _ := CallLeFuncWithErr(GetZosLibVec() + SYS_GETEUID<<4)\n\truntime.ExitSyscall()\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_GETSID<<4, uintptr(pid))\n\tsid = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := CallLeFuncWithErr(GetZosLibVec() + SYS_GETUID<<4)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, sig Signal) (err error) {\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_KILL<<4, uintptr(pid), uintptr(sig))\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___LCHOWN_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___LINK_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Linkat(oldDirFd int, oldPath string, newDirFd int, newPath string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldPath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newPath)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___LINKAT_A<<4, uintptr(oldDirFd), uintptr(unsafe.Pointer(_p0)), uintptr(newDirFd), uintptr(unsafe.Pointer(_p1)), uintptr(flags))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_LinkatAddr() *(func(oldDirFd int, oldPath string, newDirFd int, newPath string, flags int) (err error))\n\nvar Linkat = enter_Linkat\n\nfunc enter_Linkat(oldDirFd int, oldPath string, newDirFd int, newPath string, flags int) (err error) {\n\tfuncref := get_LinkatAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___LINKAT_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Linkat\n\t} else {\n\t\t*funcref = error_Linkat\n\t}\n\treturn (*funcref)(oldDirFd, oldPath, newDirFd, newPath, flags)\n}\n\nfunc error_Linkat(oldDirFd int, oldPath string, newDirFd int, newPath string, flags int) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_LISTEN<<4, uintptr(s), uintptr(n))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc lstat(path string, stat *Stat_LE_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___LSTAT_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MKDIR_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MKDIRAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_MkdiratAddr() *(func(dirfd int, path string, mode uint32) (err error))\n\nvar Mkdirat = enter_Mkdirat\n\nfunc enter_Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tfuncref := get_MkdiratAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___MKDIRAT_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Mkdirat\n\t} else {\n\t\t*funcref = error_Mkdirat\n\t}\n\treturn (*funcref)(dirfd, path, mode)\n}\n\nfunc error_Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MKFIFO_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MKNOD_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MKNODAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_MknodatAddr() *(func(dirfd int, path string, mode uint32, dev int) (err error))\n\nvar Mknodat = enter_Mknodat\n\nfunc enter_Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tfuncref := get_MknodatAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___MKNODAT_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Mknodat\n\t} else {\n\t\t*funcref = error_Mknodat\n\t}\n\treturn (*funcref)(dirfd, path, mode, dev)\n}\n\nfunc error_Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_PivotRoot(newroot string, oldroot string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(newroot)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(oldroot)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___PIVOT_ROOT_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_PivotRootAddr() *(func(newroot string, oldroot string) (err error))\n\nvar PivotRoot = enter_PivotRoot\n\nfunc enter_PivotRoot(newroot string, oldroot string) (err error) {\n\tfuncref := get_PivotRootAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___PIVOT_ROOT_A<<4, \"\") == 0 {\n\t\t*funcref = impl_PivotRoot\n\t} else {\n\t\t*funcref = error_PivotRoot\n\t}\n\treturn (*funcref)(newroot, oldroot)\n}\n\nfunc error_PivotRoot(newroot string, oldroot string) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_PREAD<<4, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset))\n\truntime.ExitSyscall()\n\tn = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_PWRITE<<4, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset))\n\truntime.ExitSyscall()\n\tn = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___PRCTL_A<<4, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_PrctlAddr() *(func(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error))\n\nvar Prctl = enter_Prctl\n\nfunc enter_Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {\n\tfuncref := get_PrctlAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___PRCTL_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Prctl\n\t} else {\n\t\t*funcref = error_Prctl\n\t}\n\treturn (*funcref)(option, arg2, arg3, arg4, arg5)\n}\n\nfunc error_Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) {\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_PRLIMIT<<4, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)))\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_PrlimitAddr() *(func(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error))\n\nvar Prlimit = enter_Prlimit\n\nfunc enter_Prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) {\n\tfuncref := get_PrlimitAddr()\n\tif funcptrtest(GetZosLibVec()+SYS_PRLIMIT<<4, \"\") == 0 {\n\t\t*funcref = impl_Prlimit\n\t} else {\n\t\t*funcref = error_Prlimit\n\t}\n\treturn (*funcref)(pid, resource, newlimit, old)\n}\n\nfunc error_Prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___RENAME_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___RENAMEAT_A<<4, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_RenameatAddr() *(func(olddirfd int, oldpath string, newdirfd int, newpath string) (err error))\n\nvar Renameat = enter_Renameat\n\nfunc enter_Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tfuncref := get_RenameatAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___RENAMEAT_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Renameat\n\t} else {\n\t\t*funcref = error_Renameat\n\t}\n\treturn (*funcref)(olddirfd, oldpath, newdirfd, newpath)\n}\n\nfunc error_Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___RENAMEAT2_A<<4, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_Renameat2Addr() *(func(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error))\n\nvar Renameat2 = enter_Renameat2\n\nfunc enter_Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) {\n\tfuncref := get_Renameat2Addr()\n\tif funcptrtest(GetZosLibVec()+SYS___RENAMEAT2_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Renameat2\n\t} else {\n\t\t*funcref = error_Renameat2\n\t}\n\treturn (*funcref)(olddirfd, oldpath, newdirfd, newpath, flags)\n}\n\nfunc error_Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___RMDIR_A<<4, uintptr(unsafe.Pointer(_p0)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_LSEEK<<4, uintptr(fd), uintptr(offset), uintptr(whence))\n\truntime.ExitSyscall()\n\toff = int64(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETEGID<<4, uintptr(egid))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETEUID<<4, uintptr(euid))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Sethostname(p []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___SETHOSTNAME_A<<4, uintptr(_p0), uintptr(len(p)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_SethostnameAddr() *(func(p []byte) (err error))\n\nvar Sethostname = enter_Sethostname\n\nfunc enter_Sethostname(p []byte) (err error) {\n\tfuncref := get_SethostnameAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___SETHOSTNAME_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Sethostname\n\t} else {\n\t\t*funcref = error_Sethostname\n\t}\n\treturn (*funcref)(p)\n}\n\nfunc error_Sethostname(p []byte) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Setns(fd int, nstype int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETNS<<4, uintptr(fd), uintptr(nstype))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_SetnsAddr() *(func(fd int, nstype int) (err error))\n\nvar Setns = enter_Setns\n\nfunc enter_Setns(fd int, nstype int) (err error) {\n\tfuncref := get_SetnsAddr()\n\tif funcptrtest(GetZosLibVec()+SYS_SETNS<<4, \"\") == 0 {\n\t\t*funcref = impl_Setns\n\t} else {\n\t\t*funcref = error_Setns\n\t}\n\treturn (*funcref)(fd, nstype)\n}\n\nfunc error_Setns(fd int, nstype int) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETPRIORITY<<4, uintptr(which), uintptr(who), uintptr(prio))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETPGID<<4, uintptr(pid), uintptr(pgid))\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setrlimit(resource int, lim *Rlimit) (err error) {\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETRLIMIT<<4, uintptr(resource), uintptr(unsafe.Pointer(lim)))\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETREGID<<4, uintptr(rgid), uintptr(egid))\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETREUID<<4, uintptr(ruid), uintptr(euid))\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec() + SYS_SETSID<<4)\n\tpid = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETUID<<4, uintptr(uid))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(uid int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETGID<<4, uintptr(uid))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SHUTDOWN<<4, uintptr(fd), uintptr(how))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc stat(path string, statLE *Stat_LE_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___STAT_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(statLE)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___SYMLINK_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Symlinkat(oldPath string, dirfd int, newPath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldPath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newPath)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___SYMLINKAT_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(dirfd), uintptr(unsafe.Pointer(_p1)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_SymlinkatAddr() *(func(oldPath string, dirfd int, newPath string) (err error))\n\nvar Symlinkat = enter_Symlinkat\n\nfunc enter_Symlinkat(oldPath string, dirfd int, newPath string) (err error) {\n\tfuncref := get_SymlinkatAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___SYMLINKAT_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Symlinkat\n\t} else {\n\t\t*funcref = error_Symlinkat\n\t}\n\treturn (*funcref)(oldPath, dirfd, newPath)\n}\n\nfunc error_Symlinkat(oldPath string, dirfd int, newPath string) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() {\n\truntime.EnterSyscall()\n\tCallLeFuncWithErr(GetZosLibVec() + SYS_SYNC<<4)\n\truntime.ExitSyscall()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___TRUNCATE_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(length))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tcgetattr(fildes int, termptr *Termios) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_TCGETATTR<<4, uintptr(fildes), uintptr(unsafe.Pointer(termptr)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tcsetattr(fildes int, when int, termptr *Termios) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_TCSETATTR<<4, uintptr(fildes), uintptr(when), uintptr(unsafe.Pointer(termptr)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(mask int) (oldmask int) {\n\truntime.EnterSyscall()\n\tr0, _, _ := CallLeFuncWithErr(GetZosLibVec()+SYS_UMASK<<4, uintptr(mask))\n\truntime.ExitSyscall()\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___UNLINK_A<<4, uintptr(unsafe.Pointer(_p0)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___UNLINKAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_UnlinkatAddr() *(func(dirfd int, path string, flags int) (err error))\n\nvar Unlinkat = enter_Unlinkat\n\nfunc enter_Unlinkat(dirfd int, path string, flags int) (err error) {\n\tfuncref := get_UnlinkatAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___UNLINKAT_A<<4, \"\") == 0 {\n\t\t*funcref = impl_Unlinkat\n\t} else {\n\t\t*funcref = error_Unlinkat\n\t}\n\treturn (*funcref)(dirfd, path, flags)\n}\n\nfunc error_Unlinkat(dirfd int, path string, flags int) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, utim *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___UTIME_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(utim)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___OPEN_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\truntime.ExitSyscall()\n\tfd = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___OPENAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode))\n\truntime.ExitSyscall()\n\tfd = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_openatAddr() *(func(dirfd int, path string, flags int, mode uint32) (fd int, err error))\n\nvar openat = enter_openat\n\nfunc enter_openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {\n\tfuncref := get_openatAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___OPENAT_A<<4, \"\") == 0 {\n\t\t*funcref = impl_openat\n\t} else {\n\t\t*funcref = error_openat\n\t}\n\treturn (*funcref)(dirfd, path, flags, mode)\n}\n\nfunc error_openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {\n\tfd = -1\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_openat2(dirfd int, path string, open_how *OpenHow, size int) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___OPENAT2_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(open_how)), uintptr(size))\n\truntime.ExitSyscall()\n\tfd = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_openat2Addr() *(func(dirfd int, path string, open_how *OpenHow, size int) (fd int, err error))\n\nvar openat2 = enter_openat2\n\nfunc enter_openat2(dirfd int, path string, open_how *OpenHow, size int) (fd int, err error) {\n\tfuncref := get_openat2Addr()\n\tif funcptrtest(GetZosLibVec()+SYS___OPENAT2_A<<4, \"\") == 0 {\n\t\t*funcref = impl_openat2\n\t} else {\n\t\t*funcref = error_openat2\n\t}\n\treturn (*funcref)(dirfd, path, open_how, size)\n}\n\nfunc error_openat2(dirfd int, path string, open_how *OpenHow, size int) (fd int, err error) {\n\tfd = -1\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc remove(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_REMOVE<<4, uintptr(unsafe.Pointer(_p0)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc waitid(idType int, id int, info *Siginfo, options int) (err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_WAITID<<4, uintptr(idType), uintptr(id), uintptr(unsafe.Pointer(info)), uintptr(options))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc waitpid(pid int, wstatus *_C_int, options int) (wpid int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_WAITPID<<4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options))\n\truntime.ExitSyscall()\n\twpid = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc gettimeofday(tv *timeval_zos) (err error) {\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_GETTIMEOFDAY<<4, uintptr(unsafe.Pointer(tv)))\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe(p *[2]_C_int) (err error) {\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_PIPE<<4, uintptr(unsafe.Pointer(p)))\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___UTIMES_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc impl_utimensat(dirfd int, path string, ts *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___UTIMENSAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(ts)), uintptr(flags))\n\truntime.ExitSyscall()\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n//go:nosplit\nfunc get_utimensatAddr() *(func(dirfd int, path string, ts *[2]Timespec, flags int) (err error))\n\nvar utimensat = enter_utimensat\n\nfunc enter_utimensat(dirfd int, path string, ts *[2]Timespec, flags int) (err error) {\n\tfuncref := get_utimensatAddr()\n\tif funcptrtest(GetZosLibVec()+SYS___UTIMENSAT_A<<4, \"\") == 0 {\n\t\t*funcref = impl_utimensat\n\t} else {\n\t\t*funcref = error_utimensat\n\t}\n\treturn (*funcref)(dirfd, path, ts, flags)\n}\n\nfunc error_utimensat(dirfd int, path string, ts *[2]Timespec, flags int) (err error) {\n\terr = ENOSYS\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Posix_openpt(oflag int) (fd int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_POSIX_OPENPT<<4, uintptr(oflag))\n\truntime.ExitSyscall()\n\tfd = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Grantpt(fildes int) (rc int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_GRANTPT<<4, uintptr(fildes))\n\truntime.ExitSyscall()\n\trc = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlockpt(fildes int) (rc int, err error) {\n\truntime.EnterSyscall()\n\tr0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_UNLOCKPT<<4, uintptr(fildes))\n\truntime.ExitSyscall()\n\trc = int(r0)\n\tif int64(r0) == -1 {\n\t\terr = errnoErr2(e1, e2)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go",
    "content": "// go run mksysctl_openbsd.go\n// Code generated by the command above; DO NOT EDIT.\n\n//go:build 386 && openbsd\n\npackage unix\n\ntype mibentry struct {\n\tctlname string\n\tctloid  []_C_int\n}\n\nvar sysctlMib = []mibentry{\n\t{\"ddb.console\", []_C_int{9, 6}},\n\t{\"ddb.log\", []_C_int{9, 7}},\n\t{\"ddb.max_line\", []_C_int{9, 3}},\n\t{\"ddb.max_width\", []_C_int{9, 2}},\n\t{\"ddb.panic\", []_C_int{9, 5}},\n\t{\"ddb.profile\", []_C_int{9, 9}},\n\t{\"ddb.radix\", []_C_int{9, 1}},\n\t{\"ddb.tab_stop_width\", []_C_int{9, 4}},\n\t{\"ddb.trigger\", []_C_int{9, 8}},\n\t{\"fs.posix.setuid\", []_C_int{3, 1, 1}},\n\t{\"hw.allowpowerdown\", []_C_int{6, 22}},\n\t{\"hw.byteorder\", []_C_int{6, 4}},\n\t{\"hw.cpuspeed\", []_C_int{6, 12}},\n\t{\"hw.diskcount\", []_C_int{6, 10}},\n\t{\"hw.disknames\", []_C_int{6, 8}},\n\t{\"hw.diskstats\", []_C_int{6, 9}},\n\t{\"hw.machine\", []_C_int{6, 1}},\n\t{\"hw.model\", []_C_int{6, 2}},\n\t{\"hw.ncpu\", []_C_int{6, 3}},\n\t{\"hw.ncpufound\", []_C_int{6, 21}},\n\t{\"hw.ncpuonline\", []_C_int{6, 25}},\n\t{\"hw.pagesize\", []_C_int{6, 7}},\n\t{\"hw.perfpolicy\", []_C_int{6, 23}},\n\t{\"hw.physmem\", []_C_int{6, 19}},\n\t{\"hw.power\", []_C_int{6, 26}},\n\t{\"hw.product\", []_C_int{6, 15}},\n\t{\"hw.serialno\", []_C_int{6, 17}},\n\t{\"hw.setperf\", []_C_int{6, 13}},\n\t{\"hw.smt\", []_C_int{6, 24}},\n\t{\"hw.usermem\", []_C_int{6, 20}},\n\t{\"hw.uuid\", []_C_int{6, 18}},\n\t{\"hw.vendor\", []_C_int{6, 14}},\n\t{\"hw.version\", []_C_int{6, 16}},\n\t{\"kern.allowdt\", []_C_int{1, 65}},\n\t{\"kern.allowkmem\", []_C_int{1, 52}},\n\t{\"kern.argmax\", []_C_int{1, 8}},\n\t{\"kern.audio\", []_C_int{1, 84}},\n\t{\"kern.boottime\", []_C_int{1, 21}},\n\t{\"kern.bufcachepercent\", []_C_int{1, 72}},\n\t{\"kern.ccpu\", []_C_int{1, 45}},\n\t{\"kern.clockrate\", []_C_int{1, 12}},\n\t{\"kern.consbuf\", []_C_int{1, 83}},\n\t{\"kern.consbufsize\", []_C_int{1, 82}},\n\t{\"kern.consdev\", []_C_int{1, 75}},\n\t{\"kern.cp_time\", []_C_int{1, 40}},\n\t{\"kern.cp_time2\", []_C_int{1, 71}},\n\t{\"kern.cpustats\", []_C_int{1, 85}},\n\t{\"kern.domainname\", []_C_int{1, 22}},\n\t{\"kern.file\", []_C_int{1, 73}},\n\t{\"kern.forkstat\", []_C_int{1, 42}},\n\t{\"kern.fscale\", []_C_int{1, 46}},\n\t{\"kern.fsync\", []_C_int{1, 33}},\n\t{\"kern.global_ptrace\", []_C_int{1, 81}},\n\t{\"kern.hostid\", []_C_int{1, 11}},\n\t{\"kern.hostname\", []_C_int{1, 10}},\n\t{\"kern.intrcnt.nintrcnt\", []_C_int{1, 63, 1}},\n\t{\"kern.job_control\", []_C_int{1, 19}},\n\t{\"kern.malloc.buckets\", []_C_int{1, 39, 1}},\n\t{\"kern.malloc.kmemnames\", []_C_int{1, 39, 3}},\n\t{\"kern.maxclusters\", []_C_int{1, 67}},\n\t{\"kern.maxfiles\", []_C_int{1, 7}},\n\t{\"kern.maxlocksperuid\", []_C_int{1, 70}},\n\t{\"kern.maxpartitions\", []_C_int{1, 23}},\n\t{\"kern.maxproc\", []_C_int{1, 6}},\n\t{\"kern.maxthread\", []_C_int{1, 25}},\n\t{\"kern.maxvnodes\", []_C_int{1, 5}},\n\t{\"kern.mbstat\", []_C_int{1, 59}},\n\t{\"kern.msgbuf\", []_C_int{1, 48}},\n\t{\"kern.msgbufsize\", []_C_int{1, 38}},\n\t{\"kern.nchstats\", []_C_int{1, 41}},\n\t{\"kern.netlivelocks\", []_C_int{1, 76}},\n\t{\"kern.nfiles\", []_C_int{1, 56}},\n\t{\"kern.ngroups\", []_C_int{1, 18}},\n\t{\"kern.nosuidcoredump\", []_C_int{1, 32}},\n\t{\"kern.nprocs\", []_C_int{1, 47}},\n\t{\"kern.nthreads\", []_C_int{1, 26}},\n\t{\"kern.numvnodes\", []_C_int{1, 58}},\n\t{\"kern.osrelease\", []_C_int{1, 2}},\n\t{\"kern.osrevision\", []_C_int{1, 3}},\n\t{\"kern.ostype\", []_C_int{1, 1}},\n\t{\"kern.osversion\", []_C_int{1, 27}},\n\t{\"kern.pfstatus\", []_C_int{1, 86}},\n\t{\"kern.pool_debug\", []_C_int{1, 77}},\n\t{\"kern.posix1version\", []_C_int{1, 17}},\n\t{\"kern.proc\", []_C_int{1, 66}},\n\t{\"kern.rawpartition\", []_C_int{1, 24}},\n\t{\"kern.saved_ids\", []_C_int{1, 20}},\n\t{\"kern.securelevel\", []_C_int{1, 9}},\n\t{\"kern.seminfo\", []_C_int{1, 61}},\n\t{\"kern.shminfo\", []_C_int{1, 62}},\n\t{\"kern.somaxconn\", []_C_int{1, 28}},\n\t{\"kern.sominconn\", []_C_int{1, 29}},\n\t{\"kern.splassert\", []_C_int{1, 54}},\n\t{\"kern.stackgap_random\", []_C_int{1, 50}},\n\t{\"kern.sysvipc_info\", []_C_int{1, 51}},\n\t{\"kern.sysvmsg\", []_C_int{1, 34}},\n\t{\"kern.sysvsem\", []_C_int{1, 35}},\n\t{\"kern.sysvshm\", []_C_int{1, 36}},\n\t{\"kern.timecounter.choice\", []_C_int{1, 69, 4}},\n\t{\"kern.timecounter.hardware\", []_C_int{1, 69, 3}},\n\t{\"kern.timecounter.tick\", []_C_int{1, 69, 1}},\n\t{\"kern.timecounter.timestepwarnings\", []_C_int{1, 69, 2}},\n\t{\"kern.timeout_stats\", []_C_int{1, 87}},\n\t{\"kern.tty.tk_cancc\", []_C_int{1, 44, 4}},\n\t{\"kern.tty.tk_nin\", []_C_int{1, 44, 1}},\n\t{\"kern.tty.tk_nout\", []_C_int{1, 44, 2}},\n\t{\"kern.tty.tk_rawcc\", []_C_int{1, 44, 3}},\n\t{\"kern.tty.ttyinfo\", []_C_int{1, 44, 5}},\n\t{\"kern.ttycount\", []_C_int{1, 57}},\n\t{\"kern.utc_offset\", []_C_int{1, 88}},\n\t{\"kern.version\", []_C_int{1, 4}},\n\t{\"kern.video\", []_C_int{1, 89}},\n\t{\"kern.watchdog.auto\", []_C_int{1, 64, 2}},\n\t{\"kern.watchdog.period\", []_C_int{1, 64, 1}},\n\t{\"kern.witnesswatch\", []_C_int{1, 53}},\n\t{\"kern.wxabort\", []_C_int{1, 74}},\n\t{\"net.bpf.bufsize\", []_C_int{4, 31, 1}},\n\t{\"net.bpf.maxbufsize\", []_C_int{4, 31, 2}},\n\t{\"net.inet.ah.enable\", []_C_int{4, 2, 51, 1}},\n\t{\"net.inet.ah.stats\", []_C_int{4, 2, 51, 2}},\n\t{\"net.inet.carp.allow\", []_C_int{4, 2, 112, 1}},\n\t{\"net.inet.carp.log\", []_C_int{4, 2, 112, 3}},\n\t{\"net.inet.carp.preempt\", []_C_int{4, 2, 112, 2}},\n\t{\"net.inet.carp.stats\", []_C_int{4, 2, 112, 4}},\n\t{\"net.inet.divert.recvspace\", []_C_int{4, 2, 258, 1}},\n\t{\"net.inet.divert.sendspace\", []_C_int{4, 2, 258, 2}},\n\t{\"net.inet.divert.stats\", []_C_int{4, 2, 258, 3}},\n\t{\"net.inet.esp.enable\", []_C_int{4, 2, 50, 1}},\n\t{\"net.inet.esp.stats\", []_C_int{4, 2, 50, 4}},\n\t{\"net.inet.esp.udpencap\", []_C_int{4, 2, 50, 2}},\n\t{\"net.inet.esp.udpencap_port\", []_C_int{4, 2, 50, 3}},\n\t{\"net.inet.etherip.allow\", []_C_int{4, 2, 97, 1}},\n\t{\"net.inet.etherip.stats\", []_C_int{4, 2, 97, 2}},\n\t{\"net.inet.gre.allow\", []_C_int{4, 2, 47, 1}},\n\t{\"net.inet.gre.wccp\", []_C_int{4, 2, 47, 2}},\n\t{\"net.inet.icmp.bmcastecho\", []_C_int{4, 2, 1, 2}},\n\t{\"net.inet.icmp.errppslimit\", []_C_int{4, 2, 1, 3}},\n\t{\"net.inet.icmp.maskrepl\", []_C_int{4, 2, 1, 1}},\n\t{\"net.inet.icmp.rediraccept\", []_C_int{4, 2, 1, 4}},\n\t{\"net.inet.icmp.redirtimeout\", []_C_int{4, 2, 1, 5}},\n\t{\"net.inet.icmp.stats\", []_C_int{4, 2, 1, 7}},\n\t{\"net.inet.icmp.tstamprepl\", []_C_int{4, 2, 1, 6}},\n\t{\"net.inet.igmp.stats\", []_C_int{4, 2, 2, 1}},\n\t{\"net.inet.ip.arpdown\", []_C_int{4, 2, 0, 40}},\n\t{\"net.inet.ip.arpqueued\", []_C_int{4, 2, 0, 36}},\n\t{\"net.inet.ip.arptimeout\", []_C_int{4, 2, 0, 39}},\n\t{\"net.inet.ip.encdebug\", []_C_int{4, 2, 0, 12}},\n\t{\"net.inet.ip.forwarding\", []_C_int{4, 2, 0, 1}},\n\t{\"net.inet.ip.ifq.congestion\", []_C_int{4, 2, 0, 30, 4}},\n\t{\"net.inet.ip.ifq.drops\", []_C_int{4, 2, 0, 30, 3}},\n\t{\"net.inet.ip.ifq.len\", []_C_int{4, 2, 0, 30, 1}},\n\t{\"net.inet.ip.ifq.maxlen\", []_C_int{4, 2, 0, 30, 2}},\n\t{\"net.inet.ip.maxqueue\", []_C_int{4, 2, 0, 11}},\n\t{\"net.inet.ip.mforwarding\", []_C_int{4, 2, 0, 31}},\n\t{\"net.inet.ip.mrtmfc\", []_C_int{4, 2, 0, 37}},\n\t{\"net.inet.ip.mrtproto\", []_C_int{4, 2, 0, 34}},\n\t{\"net.inet.ip.mrtstats\", []_C_int{4, 2, 0, 35}},\n\t{\"net.inet.ip.mrtvif\", []_C_int{4, 2, 0, 38}},\n\t{\"net.inet.ip.mtu\", []_C_int{4, 2, 0, 4}},\n\t{\"net.inet.ip.mtudisc\", []_C_int{4, 2, 0, 27}},\n\t{\"net.inet.ip.mtudisctimeout\", []_C_int{4, 2, 0, 28}},\n\t{\"net.inet.ip.multipath\", []_C_int{4, 2, 0, 32}},\n\t{\"net.inet.ip.portfirst\", []_C_int{4, 2, 0, 7}},\n\t{\"net.inet.ip.porthifirst\", []_C_int{4, 2, 0, 9}},\n\t{\"net.inet.ip.porthilast\", []_C_int{4, 2, 0, 10}},\n\t{\"net.inet.ip.portlast\", []_C_int{4, 2, 0, 8}},\n\t{\"net.inet.ip.redirect\", []_C_int{4, 2, 0, 2}},\n\t{\"net.inet.ip.sourceroute\", []_C_int{4, 2, 0, 5}},\n\t{\"net.inet.ip.stats\", []_C_int{4, 2, 0, 33}},\n\t{\"net.inet.ip.ttl\", []_C_int{4, 2, 0, 3}},\n\t{\"net.inet.ipcomp.enable\", []_C_int{4, 2, 108, 1}},\n\t{\"net.inet.ipcomp.stats\", []_C_int{4, 2, 108, 2}},\n\t{\"net.inet.ipip.allow\", []_C_int{4, 2, 4, 1}},\n\t{\"net.inet.ipip.stats\", []_C_int{4, 2, 4, 2}},\n\t{\"net.inet.pfsync.stats\", []_C_int{4, 2, 240, 1}},\n\t{\"net.inet.tcp.ackonpush\", []_C_int{4, 2, 6, 13}},\n\t{\"net.inet.tcp.always_keepalive\", []_C_int{4, 2, 6, 22}},\n\t{\"net.inet.tcp.baddynamic\", []_C_int{4, 2, 6, 6}},\n\t{\"net.inet.tcp.drop\", []_C_int{4, 2, 6, 19}},\n\t{\"net.inet.tcp.ecn\", []_C_int{4, 2, 6, 14}},\n\t{\"net.inet.tcp.ident\", []_C_int{4, 2, 6, 9}},\n\t{\"net.inet.tcp.keepidle\", []_C_int{4, 2, 6, 3}},\n\t{\"net.inet.tcp.keepinittime\", []_C_int{4, 2, 6, 2}},\n\t{\"net.inet.tcp.keepintvl\", []_C_int{4, 2, 6, 4}},\n\t{\"net.inet.tcp.mssdflt\", []_C_int{4, 2, 6, 11}},\n\t{\"net.inet.tcp.reasslimit\", []_C_int{4, 2, 6, 18}},\n\t{\"net.inet.tcp.rfc1323\", []_C_int{4, 2, 6, 1}},\n\t{\"net.inet.tcp.rfc3390\", []_C_int{4, 2, 6, 17}},\n\t{\"net.inet.tcp.rootonly\", []_C_int{4, 2, 6, 24}},\n\t{\"net.inet.tcp.rstppslimit\", []_C_int{4, 2, 6, 12}},\n\t{\"net.inet.tcp.sack\", []_C_int{4, 2, 6, 10}},\n\t{\"net.inet.tcp.sackholelimit\", []_C_int{4, 2, 6, 20}},\n\t{\"net.inet.tcp.slowhz\", []_C_int{4, 2, 6, 5}},\n\t{\"net.inet.tcp.stats\", []_C_int{4, 2, 6, 21}},\n\t{\"net.inet.tcp.synbucketlimit\", []_C_int{4, 2, 6, 16}},\n\t{\"net.inet.tcp.syncachelimit\", []_C_int{4, 2, 6, 15}},\n\t{\"net.inet.tcp.synhashsize\", []_C_int{4, 2, 6, 25}},\n\t{\"net.inet.tcp.synuselimit\", []_C_int{4, 2, 6, 23}},\n\t{\"net.inet.udp.baddynamic\", []_C_int{4, 2, 17, 2}},\n\t{\"net.inet.udp.checksum\", []_C_int{4, 2, 17, 1}},\n\t{\"net.inet.udp.recvspace\", []_C_int{4, 2, 17, 3}},\n\t{\"net.inet.udp.rootonly\", []_C_int{4, 2, 17, 6}},\n\t{\"net.inet.udp.sendspace\", []_C_int{4, 2, 17, 4}},\n\t{\"net.inet.udp.stats\", []_C_int{4, 2, 17, 5}},\n\t{\"net.inet6.divert.recvspace\", []_C_int{4, 24, 86, 1}},\n\t{\"net.inet6.divert.sendspace\", []_C_int{4, 24, 86, 2}},\n\t{\"net.inet6.divert.stats\", []_C_int{4, 24, 86, 3}},\n\t{\"net.inet6.icmp6.errppslimit\", []_C_int{4, 24, 30, 14}},\n\t{\"net.inet6.icmp6.mtudisc_hiwat\", []_C_int{4, 24, 30, 16}},\n\t{\"net.inet6.icmp6.mtudisc_lowat\", []_C_int{4, 24, 30, 17}},\n\t{\"net.inet6.icmp6.nd6_debug\", []_C_int{4, 24, 30, 18}},\n\t{\"net.inet6.icmp6.nd6_delay\", []_C_int{4, 24, 30, 8}},\n\t{\"net.inet6.icmp6.nd6_maxnudhint\", []_C_int{4, 24, 30, 15}},\n\t{\"net.inet6.icmp6.nd6_mmaxtries\", []_C_int{4, 24, 30, 10}},\n\t{\"net.inet6.icmp6.nd6_umaxtries\", []_C_int{4, 24, 30, 9}},\n\t{\"net.inet6.icmp6.redirtimeout\", []_C_int{4, 24, 30, 3}},\n\t{\"net.inet6.ip6.auto_flowlabel\", []_C_int{4, 24, 17, 17}},\n\t{\"net.inet6.ip6.dad_count\", []_C_int{4, 24, 17, 16}},\n\t{\"net.inet6.ip6.dad_pending\", []_C_int{4, 24, 17, 49}},\n\t{\"net.inet6.ip6.defmcasthlim\", []_C_int{4, 24, 17, 18}},\n\t{\"net.inet6.ip6.forwarding\", []_C_int{4, 24, 17, 1}},\n\t{\"net.inet6.ip6.forwsrcrt\", []_C_int{4, 24, 17, 5}},\n\t{\"net.inet6.ip6.hdrnestlimit\", []_C_int{4, 24, 17, 15}},\n\t{\"net.inet6.ip6.hlim\", []_C_int{4, 24, 17, 3}},\n\t{\"net.inet6.ip6.log_interval\", []_C_int{4, 24, 17, 14}},\n\t{\"net.inet6.ip6.maxdynroutes\", []_C_int{4, 24, 17, 48}},\n\t{\"net.inet6.ip6.maxfragpackets\", []_C_int{4, 24, 17, 9}},\n\t{\"net.inet6.ip6.maxfrags\", []_C_int{4, 24, 17, 41}},\n\t{\"net.inet6.ip6.mforwarding\", []_C_int{4, 24, 17, 42}},\n\t{\"net.inet6.ip6.mrtmfc\", []_C_int{4, 24, 17, 53}},\n\t{\"net.inet6.ip6.mrtmif\", []_C_int{4, 24, 17, 52}},\n\t{\"net.inet6.ip6.mrtproto\", []_C_int{4, 24, 17, 8}},\n\t{\"net.inet6.ip6.mtudisctimeout\", []_C_int{4, 24, 17, 50}},\n\t{\"net.inet6.ip6.multicast_mtudisc\", []_C_int{4, 24, 17, 44}},\n\t{\"net.inet6.ip6.multipath\", []_C_int{4, 24, 17, 43}},\n\t{\"net.inet6.ip6.neighborgcthresh\", []_C_int{4, 24, 17, 45}},\n\t{\"net.inet6.ip6.redirect\", []_C_int{4, 24, 17, 2}},\n\t{\"net.inet6.ip6.soiikey\", []_C_int{4, 24, 17, 54}},\n\t{\"net.inet6.ip6.sourcecheck\", []_C_int{4, 24, 17, 10}},\n\t{\"net.inet6.ip6.sourcecheck_logint\", []_C_int{4, 24, 17, 11}},\n\t{\"net.inet6.ip6.use_deprecated\", []_C_int{4, 24, 17, 21}},\n\t{\"net.key.sadb_dump\", []_C_int{4, 30, 1}},\n\t{\"net.key.spd_dump\", []_C_int{4, 30, 2}},\n\t{\"net.mpls.ifq.congestion\", []_C_int{4, 33, 3, 4}},\n\t{\"net.mpls.ifq.drops\", []_C_int{4, 33, 3, 3}},\n\t{\"net.mpls.ifq.len\", []_C_int{4, 33, 3, 1}},\n\t{\"net.mpls.ifq.maxlen\", []_C_int{4, 33, 3, 2}},\n\t{\"net.mpls.mapttl_ip\", []_C_int{4, 33, 5}},\n\t{\"net.mpls.mapttl_ip6\", []_C_int{4, 33, 6}},\n\t{\"net.mpls.ttl\", []_C_int{4, 33, 2}},\n\t{\"net.pflow.stats\", []_C_int{4, 34, 1}},\n\t{\"net.pipex.enable\", []_C_int{4, 35, 1}},\n\t{\"vm.anonmin\", []_C_int{2, 7}},\n\t{\"vm.loadavg\", []_C_int{2, 2}},\n\t{\"vm.malloc_conf\", []_C_int{2, 12}},\n\t{\"vm.maxslp\", []_C_int{2, 10}},\n\t{\"vm.nkmempages\", []_C_int{2, 6}},\n\t{\"vm.psstrings\", []_C_int{2, 3}},\n\t{\"vm.swapencrypt.enable\", []_C_int{2, 5, 0}},\n\t{\"vm.swapencrypt.keyscreated\", []_C_int{2, 5, 1}},\n\t{\"vm.swapencrypt.keysdeleted\", []_C_int{2, 5, 2}},\n\t{\"vm.uspace\", []_C_int{2, 11}},\n\t{\"vm.uvmexp\", []_C_int{2, 4}},\n\t{\"vm.vmmeter\", []_C_int{2, 1}},\n\t{\"vm.vnodemin\", []_C_int{2, 9}},\n\t{\"vm.vtextmin\", []_C_int{2, 8}},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go",
    "content": "// go run mksysctl_openbsd.go\n// Code generated by the command above; DO NOT EDIT.\n\n//go:build amd64 && openbsd\n\npackage unix\n\ntype mibentry struct {\n\tctlname string\n\tctloid  []_C_int\n}\n\nvar sysctlMib = []mibentry{\n\t{\"ddb.console\", []_C_int{9, 6}},\n\t{\"ddb.log\", []_C_int{9, 7}},\n\t{\"ddb.max_line\", []_C_int{9, 3}},\n\t{\"ddb.max_width\", []_C_int{9, 2}},\n\t{\"ddb.panic\", []_C_int{9, 5}},\n\t{\"ddb.profile\", []_C_int{9, 9}},\n\t{\"ddb.radix\", []_C_int{9, 1}},\n\t{\"ddb.tab_stop_width\", []_C_int{9, 4}},\n\t{\"ddb.trigger\", []_C_int{9, 8}},\n\t{\"fs.posix.setuid\", []_C_int{3, 1, 1}},\n\t{\"hw.allowpowerdown\", []_C_int{6, 22}},\n\t{\"hw.byteorder\", []_C_int{6, 4}},\n\t{\"hw.cpuspeed\", []_C_int{6, 12}},\n\t{\"hw.diskcount\", []_C_int{6, 10}},\n\t{\"hw.disknames\", []_C_int{6, 8}},\n\t{\"hw.diskstats\", []_C_int{6, 9}},\n\t{\"hw.machine\", []_C_int{6, 1}},\n\t{\"hw.model\", []_C_int{6, 2}},\n\t{\"hw.ncpu\", []_C_int{6, 3}},\n\t{\"hw.ncpufound\", []_C_int{6, 21}},\n\t{\"hw.ncpuonline\", []_C_int{6, 25}},\n\t{\"hw.pagesize\", []_C_int{6, 7}},\n\t{\"hw.perfpolicy\", []_C_int{6, 23}},\n\t{\"hw.physmem\", []_C_int{6, 19}},\n\t{\"hw.power\", []_C_int{6, 26}},\n\t{\"hw.product\", []_C_int{6, 15}},\n\t{\"hw.serialno\", []_C_int{6, 17}},\n\t{\"hw.setperf\", []_C_int{6, 13}},\n\t{\"hw.smt\", []_C_int{6, 24}},\n\t{\"hw.usermem\", []_C_int{6, 20}},\n\t{\"hw.uuid\", []_C_int{6, 18}},\n\t{\"hw.vendor\", []_C_int{6, 14}},\n\t{\"hw.version\", []_C_int{6, 16}},\n\t{\"kern.allowdt\", []_C_int{1, 65}},\n\t{\"kern.allowkmem\", []_C_int{1, 52}},\n\t{\"kern.argmax\", []_C_int{1, 8}},\n\t{\"kern.audio\", []_C_int{1, 84}},\n\t{\"kern.boottime\", []_C_int{1, 21}},\n\t{\"kern.bufcachepercent\", []_C_int{1, 72}},\n\t{\"kern.ccpu\", []_C_int{1, 45}},\n\t{\"kern.clockrate\", []_C_int{1, 12}},\n\t{\"kern.consbuf\", []_C_int{1, 83}},\n\t{\"kern.consbufsize\", []_C_int{1, 82}},\n\t{\"kern.consdev\", []_C_int{1, 75}},\n\t{\"kern.cp_time\", []_C_int{1, 40}},\n\t{\"kern.cp_time2\", []_C_int{1, 71}},\n\t{\"kern.cpustats\", []_C_int{1, 85}},\n\t{\"kern.domainname\", []_C_int{1, 22}},\n\t{\"kern.file\", []_C_int{1, 73}},\n\t{\"kern.forkstat\", []_C_int{1, 42}},\n\t{\"kern.fscale\", []_C_int{1, 46}},\n\t{\"kern.fsync\", []_C_int{1, 33}},\n\t{\"kern.global_ptrace\", []_C_int{1, 81}},\n\t{\"kern.hostid\", []_C_int{1, 11}},\n\t{\"kern.hostname\", []_C_int{1, 10}},\n\t{\"kern.intrcnt.nintrcnt\", []_C_int{1, 63, 1}},\n\t{\"kern.job_control\", []_C_int{1, 19}},\n\t{\"kern.malloc.buckets\", []_C_int{1, 39, 1}},\n\t{\"kern.malloc.kmemnames\", []_C_int{1, 39, 3}},\n\t{\"kern.maxclusters\", []_C_int{1, 67}},\n\t{\"kern.maxfiles\", []_C_int{1, 7}},\n\t{\"kern.maxlocksperuid\", []_C_int{1, 70}},\n\t{\"kern.maxpartitions\", []_C_int{1, 23}},\n\t{\"kern.maxproc\", []_C_int{1, 6}},\n\t{\"kern.maxthread\", []_C_int{1, 25}},\n\t{\"kern.maxvnodes\", []_C_int{1, 5}},\n\t{\"kern.mbstat\", []_C_int{1, 59}},\n\t{\"kern.msgbuf\", []_C_int{1, 48}},\n\t{\"kern.msgbufsize\", []_C_int{1, 38}},\n\t{\"kern.nchstats\", []_C_int{1, 41}},\n\t{\"kern.netlivelocks\", []_C_int{1, 76}},\n\t{\"kern.nfiles\", []_C_int{1, 56}},\n\t{\"kern.ngroups\", []_C_int{1, 18}},\n\t{\"kern.nosuidcoredump\", []_C_int{1, 32}},\n\t{\"kern.nprocs\", []_C_int{1, 47}},\n\t{\"kern.nthreads\", []_C_int{1, 26}},\n\t{\"kern.numvnodes\", []_C_int{1, 58}},\n\t{\"kern.osrelease\", []_C_int{1, 2}},\n\t{\"kern.osrevision\", []_C_int{1, 3}},\n\t{\"kern.ostype\", []_C_int{1, 1}},\n\t{\"kern.osversion\", []_C_int{1, 27}},\n\t{\"kern.pfstatus\", []_C_int{1, 86}},\n\t{\"kern.pool_debug\", []_C_int{1, 77}},\n\t{\"kern.posix1version\", []_C_int{1, 17}},\n\t{\"kern.proc\", []_C_int{1, 66}},\n\t{\"kern.rawpartition\", []_C_int{1, 24}},\n\t{\"kern.saved_ids\", []_C_int{1, 20}},\n\t{\"kern.securelevel\", []_C_int{1, 9}},\n\t{\"kern.seminfo\", []_C_int{1, 61}},\n\t{\"kern.shminfo\", []_C_int{1, 62}},\n\t{\"kern.somaxconn\", []_C_int{1, 28}},\n\t{\"kern.sominconn\", []_C_int{1, 29}},\n\t{\"kern.splassert\", []_C_int{1, 54}},\n\t{\"kern.stackgap_random\", []_C_int{1, 50}},\n\t{\"kern.sysvipc_info\", []_C_int{1, 51}},\n\t{\"kern.sysvmsg\", []_C_int{1, 34}},\n\t{\"kern.sysvsem\", []_C_int{1, 35}},\n\t{\"kern.sysvshm\", []_C_int{1, 36}},\n\t{\"kern.timecounter.choice\", []_C_int{1, 69, 4}},\n\t{\"kern.timecounter.hardware\", []_C_int{1, 69, 3}},\n\t{\"kern.timecounter.tick\", []_C_int{1, 69, 1}},\n\t{\"kern.timecounter.timestepwarnings\", []_C_int{1, 69, 2}},\n\t{\"kern.timeout_stats\", []_C_int{1, 87}},\n\t{\"kern.tty.tk_cancc\", []_C_int{1, 44, 4}},\n\t{\"kern.tty.tk_nin\", []_C_int{1, 44, 1}},\n\t{\"kern.tty.tk_nout\", []_C_int{1, 44, 2}},\n\t{\"kern.tty.tk_rawcc\", []_C_int{1, 44, 3}},\n\t{\"kern.tty.ttyinfo\", []_C_int{1, 44, 5}},\n\t{\"kern.ttycount\", []_C_int{1, 57}},\n\t{\"kern.utc_offset\", []_C_int{1, 88}},\n\t{\"kern.version\", []_C_int{1, 4}},\n\t{\"kern.video\", []_C_int{1, 89}},\n\t{\"kern.watchdog.auto\", []_C_int{1, 64, 2}},\n\t{\"kern.watchdog.period\", []_C_int{1, 64, 1}},\n\t{\"kern.witnesswatch\", []_C_int{1, 53}},\n\t{\"kern.wxabort\", []_C_int{1, 74}},\n\t{\"net.bpf.bufsize\", []_C_int{4, 31, 1}},\n\t{\"net.bpf.maxbufsize\", []_C_int{4, 31, 2}},\n\t{\"net.inet.ah.enable\", []_C_int{4, 2, 51, 1}},\n\t{\"net.inet.ah.stats\", []_C_int{4, 2, 51, 2}},\n\t{\"net.inet.carp.allow\", []_C_int{4, 2, 112, 1}},\n\t{\"net.inet.carp.log\", []_C_int{4, 2, 112, 3}},\n\t{\"net.inet.carp.preempt\", []_C_int{4, 2, 112, 2}},\n\t{\"net.inet.carp.stats\", []_C_int{4, 2, 112, 4}},\n\t{\"net.inet.divert.recvspace\", []_C_int{4, 2, 258, 1}},\n\t{\"net.inet.divert.sendspace\", []_C_int{4, 2, 258, 2}},\n\t{\"net.inet.divert.stats\", []_C_int{4, 2, 258, 3}},\n\t{\"net.inet.esp.enable\", []_C_int{4, 2, 50, 1}},\n\t{\"net.inet.esp.stats\", []_C_int{4, 2, 50, 4}},\n\t{\"net.inet.esp.udpencap\", []_C_int{4, 2, 50, 2}},\n\t{\"net.inet.esp.udpencap_port\", []_C_int{4, 2, 50, 3}},\n\t{\"net.inet.etherip.allow\", []_C_int{4, 2, 97, 1}},\n\t{\"net.inet.etherip.stats\", []_C_int{4, 2, 97, 2}},\n\t{\"net.inet.gre.allow\", []_C_int{4, 2, 47, 1}},\n\t{\"net.inet.gre.wccp\", []_C_int{4, 2, 47, 2}},\n\t{\"net.inet.icmp.bmcastecho\", []_C_int{4, 2, 1, 2}},\n\t{\"net.inet.icmp.errppslimit\", []_C_int{4, 2, 1, 3}},\n\t{\"net.inet.icmp.maskrepl\", []_C_int{4, 2, 1, 1}},\n\t{\"net.inet.icmp.rediraccept\", []_C_int{4, 2, 1, 4}},\n\t{\"net.inet.icmp.redirtimeout\", []_C_int{4, 2, 1, 5}},\n\t{\"net.inet.icmp.stats\", []_C_int{4, 2, 1, 7}},\n\t{\"net.inet.icmp.tstamprepl\", []_C_int{4, 2, 1, 6}},\n\t{\"net.inet.igmp.stats\", []_C_int{4, 2, 2, 1}},\n\t{\"net.inet.ip.arpdown\", []_C_int{4, 2, 0, 40}},\n\t{\"net.inet.ip.arpqueued\", []_C_int{4, 2, 0, 36}},\n\t{\"net.inet.ip.arptimeout\", []_C_int{4, 2, 0, 39}},\n\t{\"net.inet.ip.encdebug\", []_C_int{4, 2, 0, 12}},\n\t{\"net.inet.ip.forwarding\", []_C_int{4, 2, 0, 1}},\n\t{\"net.inet.ip.ifq.congestion\", []_C_int{4, 2, 0, 30, 4}},\n\t{\"net.inet.ip.ifq.drops\", []_C_int{4, 2, 0, 30, 3}},\n\t{\"net.inet.ip.ifq.len\", []_C_int{4, 2, 0, 30, 1}},\n\t{\"net.inet.ip.ifq.maxlen\", []_C_int{4, 2, 0, 30, 2}},\n\t{\"net.inet.ip.maxqueue\", []_C_int{4, 2, 0, 11}},\n\t{\"net.inet.ip.mforwarding\", []_C_int{4, 2, 0, 31}},\n\t{\"net.inet.ip.mrtmfc\", []_C_int{4, 2, 0, 37}},\n\t{\"net.inet.ip.mrtproto\", []_C_int{4, 2, 0, 34}},\n\t{\"net.inet.ip.mrtstats\", []_C_int{4, 2, 0, 35}},\n\t{\"net.inet.ip.mrtvif\", []_C_int{4, 2, 0, 38}},\n\t{\"net.inet.ip.mtu\", []_C_int{4, 2, 0, 4}},\n\t{\"net.inet.ip.mtudisc\", []_C_int{4, 2, 0, 27}},\n\t{\"net.inet.ip.mtudisctimeout\", []_C_int{4, 2, 0, 28}},\n\t{\"net.inet.ip.multipath\", []_C_int{4, 2, 0, 32}},\n\t{\"net.inet.ip.portfirst\", []_C_int{4, 2, 0, 7}},\n\t{\"net.inet.ip.porthifirst\", []_C_int{4, 2, 0, 9}},\n\t{\"net.inet.ip.porthilast\", []_C_int{4, 2, 0, 10}},\n\t{\"net.inet.ip.portlast\", []_C_int{4, 2, 0, 8}},\n\t{\"net.inet.ip.redirect\", []_C_int{4, 2, 0, 2}},\n\t{\"net.inet.ip.sourceroute\", []_C_int{4, 2, 0, 5}},\n\t{\"net.inet.ip.stats\", []_C_int{4, 2, 0, 33}},\n\t{\"net.inet.ip.ttl\", []_C_int{4, 2, 0, 3}},\n\t{\"net.inet.ipcomp.enable\", []_C_int{4, 2, 108, 1}},\n\t{\"net.inet.ipcomp.stats\", []_C_int{4, 2, 108, 2}},\n\t{\"net.inet.ipip.allow\", []_C_int{4, 2, 4, 1}},\n\t{\"net.inet.ipip.stats\", []_C_int{4, 2, 4, 2}},\n\t{\"net.inet.pfsync.stats\", []_C_int{4, 2, 240, 1}},\n\t{\"net.inet.tcp.ackonpush\", []_C_int{4, 2, 6, 13}},\n\t{\"net.inet.tcp.always_keepalive\", []_C_int{4, 2, 6, 22}},\n\t{\"net.inet.tcp.baddynamic\", []_C_int{4, 2, 6, 6}},\n\t{\"net.inet.tcp.drop\", []_C_int{4, 2, 6, 19}},\n\t{\"net.inet.tcp.ecn\", []_C_int{4, 2, 6, 14}},\n\t{\"net.inet.tcp.ident\", []_C_int{4, 2, 6, 9}},\n\t{\"net.inet.tcp.keepidle\", []_C_int{4, 2, 6, 3}},\n\t{\"net.inet.tcp.keepinittime\", []_C_int{4, 2, 6, 2}},\n\t{\"net.inet.tcp.keepintvl\", []_C_int{4, 2, 6, 4}},\n\t{\"net.inet.tcp.mssdflt\", []_C_int{4, 2, 6, 11}},\n\t{\"net.inet.tcp.reasslimit\", []_C_int{4, 2, 6, 18}},\n\t{\"net.inet.tcp.rfc1323\", []_C_int{4, 2, 6, 1}},\n\t{\"net.inet.tcp.rfc3390\", []_C_int{4, 2, 6, 17}},\n\t{\"net.inet.tcp.rootonly\", []_C_int{4, 2, 6, 24}},\n\t{\"net.inet.tcp.rstppslimit\", []_C_int{4, 2, 6, 12}},\n\t{\"net.inet.tcp.sack\", []_C_int{4, 2, 6, 10}},\n\t{\"net.inet.tcp.sackholelimit\", []_C_int{4, 2, 6, 20}},\n\t{\"net.inet.tcp.slowhz\", []_C_int{4, 2, 6, 5}},\n\t{\"net.inet.tcp.stats\", []_C_int{4, 2, 6, 21}},\n\t{\"net.inet.tcp.synbucketlimit\", []_C_int{4, 2, 6, 16}},\n\t{\"net.inet.tcp.syncachelimit\", []_C_int{4, 2, 6, 15}},\n\t{\"net.inet.tcp.synhashsize\", []_C_int{4, 2, 6, 25}},\n\t{\"net.inet.tcp.synuselimit\", []_C_int{4, 2, 6, 23}},\n\t{\"net.inet.udp.baddynamic\", []_C_int{4, 2, 17, 2}},\n\t{\"net.inet.udp.checksum\", []_C_int{4, 2, 17, 1}},\n\t{\"net.inet.udp.recvspace\", []_C_int{4, 2, 17, 3}},\n\t{\"net.inet.udp.rootonly\", []_C_int{4, 2, 17, 6}},\n\t{\"net.inet.udp.sendspace\", []_C_int{4, 2, 17, 4}},\n\t{\"net.inet.udp.stats\", []_C_int{4, 2, 17, 5}},\n\t{\"net.inet6.divert.recvspace\", []_C_int{4, 24, 86, 1}},\n\t{\"net.inet6.divert.sendspace\", []_C_int{4, 24, 86, 2}},\n\t{\"net.inet6.divert.stats\", []_C_int{4, 24, 86, 3}},\n\t{\"net.inet6.icmp6.errppslimit\", []_C_int{4, 24, 30, 14}},\n\t{\"net.inet6.icmp6.mtudisc_hiwat\", []_C_int{4, 24, 30, 16}},\n\t{\"net.inet6.icmp6.mtudisc_lowat\", []_C_int{4, 24, 30, 17}},\n\t{\"net.inet6.icmp6.nd6_debug\", []_C_int{4, 24, 30, 18}},\n\t{\"net.inet6.icmp6.nd6_delay\", []_C_int{4, 24, 30, 8}},\n\t{\"net.inet6.icmp6.nd6_maxnudhint\", []_C_int{4, 24, 30, 15}},\n\t{\"net.inet6.icmp6.nd6_mmaxtries\", []_C_int{4, 24, 30, 10}},\n\t{\"net.inet6.icmp6.nd6_umaxtries\", []_C_int{4, 24, 30, 9}},\n\t{\"net.inet6.icmp6.redirtimeout\", []_C_int{4, 24, 30, 3}},\n\t{\"net.inet6.ip6.auto_flowlabel\", []_C_int{4, 24, 17, 17}},\n\t{\"net.inet6.ip6.dad_count\", []_C_int{4, 24, 17, 16}},\n\t{\"net.inet6.ip6.dad_pending\", []_C_int{4, 24, 17, 49}},\n\t{\"net.inet6.ip6.defmcasthlim\", []_C_int{4, 24, 17, 18}},\n\t{\"net.inet6.ip6.forwarding\", []_C_int{4, 24, 17, 1}},\n\t{\"net.inet6.ip6.forwsrcrt\", []_C_int{4, 24, 17, 5}},\n\t{\"net.inet6.ip6.hdrnestlimit\", []_C_int{4, 24, 17, 15}},\n\t{\"net.inet6.ip6.hlim\", []_C_int{4, 24, 17, 3}},\n\t{\"net.inet6.ip6.log_interval\", []_C_int{4, 24, 17, 14}},\n\t{\"net.inet6.ip6.maxdynroutes\", []_C_int{4, 24, 17, 48}},\n\t{\"net.inet6.ip6.maxfragpackets\", []_C_int{4, 24, 17, 9}},\n\t{\"net.inet6.ip6.maxfrags\", []_C_int{4, 24, 17, 41}},\n\t{\"net.inet6.ip6.mforwarding\", []_C_int{4, 24, 17, 42}},\n\t{\"net.inet6.ip6.mrtmfc\", []_C_int{4, 24, 17, 53}},\n\t{\"net.inet6.ip6.mrtmif\", []_C_int{4, 24, 17, 52}},\n\t{\"net.inet6.ip6.mrtproto\", []_C_int{4, 24, 17, 8}},\n\t{\"net.inet6.ip6.mtudisctimeout\", []_C_int{4, 24, 17, 50}},\n\t{\"net.inet6.ip6.multicast_mtudisc\", []_C_int{4, 24, 17, 44}},\n\t{\"net.inet6.ip6.multipath\", []_C_int{4, 24, 17, 43}},\n\t{\"net.inet6.ip6.neighborgcthresh\", []_C_int{4, 24, 17, 45}},\n\t{\"net.inet6.ip6.redirect\", []_C_int{4, 24, 17, 2}},\n\t{\"net.inet6.ip6.soiikey\", []_C_int{4, 24, 17, 54}},\n\t{\"net.inet6.ip6.sourcecheck\", []_C_int{4, 24, 17, 10}},\n\t{\"net.inet6.ip6.sourcecheck_logint\", []_C_int{4, 24, 17, 11}},\n\t{\"net.inet6.ip6.use_deprecated\", []_C_int{4, 24, 17, 21}},\n\t{\"net.key.sadb_dump\", []_C_int{4, 30, 1}},\n\t{\"net.key.spd_dump\", []_C_int{4, 30, 2}},\n\t{\"net.mpls.ifq.congestion\", []_C_int{4, 33, 3, 4}},\n\t{\"net.mpls.ifq.drops\", []_C_int{4, 33, 3, 3}},\n\t{\"net.mpls.ifq.len\", []_C_int{4, 33, 3, 1}},\n\t{\"net.mpls.ifq.maxlen\", []_C_int{4, 33, 3, 2}},\n\t{\"net.mpls.mapttl_ip\", []_C_int{4, 33, 5}},\n\t{\"net.mpls.mapttl_ip6\", []_C_int{4, 33, 6}},\n\t{\"net.mpls.ttl\", []_C_int{4, 33, 2}},\n\t{\"net.pflow.stats\", []_C_int{4, 34, 1}},\n\t{\"net.pipex.enable\", []_C_int{4, 35, 1}},\n\t{\"vm.anonmin\", []_C_int{2, 7}},\n\t{\"vm.loadavg\", []_C_int{2, 2}},\n\t{\"vm.malloc_conf\", []_C_int{2, 12}},\n\t{\"vm.maxslp\", []_C_int{2, 10}},\n\t{\"vm.nkmempages\", []_C_int{2, 6}},\n\t{\"vm.psstrings\", []_C_int{2, 3}},\n\t{\"vm.swapencrypt.enable\", []_C_int{2, 5, 0}},\n\t{\"vm.swapencrypt.keyscreated\", []_C_int{2, 5, 1}},\n\t{\"vm.swapencrypt.keysdeleted\", []_C_int{2, 5, 2}},\n\t{\"vm.uspace\", []_C_int{2, 11}},\n\t{\"vm.uvmexp\", []_C_int{2, 4}},\n\t{\"vm.vmmeter\", []_C_int{2, 1}},\n\t{\"vm.vnodemin\", []_C_int{2, 9}},\n\t{\"vm.vtextmin\", []_C_int{2, 8}},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go",
    "content": "// go run mksysctl_openbsd.go\n// Code generated by the command above; DO NOT EDIT.\n\n//go:build arm && openbsd\n\npackage unix\n\ntype mibentry struct {\n\tctlname string\n\tctloid  []_C_int\n}\n\nvar sysctlMib = []mibentry{\n\t{\"ddb.console\", []_C_int{9, 6}},\n\t{\"ddb.log\", []_C_int{9, 7}},\n\t{\"ddb.max_line\", []_C_int{9, 3}},\n\t{\"ddb.max_width\", []_C_int{9, 2}},\n\t{\"ddb.panic\", []_C_int{9, 5}},\n\t{\"ddb.profile\", []_C_int{9, 9}},\n\t{\"ddb.radix\", []_C_int{9, 1}},\n\t{\"ddb.tab_stop_width\", []_C_int{9, 4}},\n\t{\"ddb.trigger\", []_C_int{9, 8}},\n\t{\"fs.posix.setuid\", []_C_int{3, 1, 1}},\n\t{\"hw.allowpowerdown\", []_C_int{6, 22}},\n\t{\"hw.byteorder\", []_C_int{6, 4}},\n\t{\"hw.cpuspeed\", []_C_int{6, 12}},\n\t{\"hw.diskcount\", []_C_int{6, 10}},\n\t{\"hw.disknames\", []_C_int{6, 8}},\n\t{\"hw.diskstats\", []_C_int{6, 9}},\n\t{\"hw.machine\", []_C_int{6, 1}},\n\t{\"hw.model\", []_C_int{6, 2}},\n\t{\"hw.ncpu\", []_C_int{6, 3}},\n\t{\"hw.ncpufound\", []_C_int{6, 21}},\n\t{\"hw.ncpuonline\", []_C_int{6, 25}},\n\t{\"hw.pagesize\", []_C_int{6, 7}},\n\t{\"hw.perfpolicy\", []_C_int{6, 23}},\n\t{\"hw.physmem\", []_C_int{6, 19}},\n\t{\"hw.power\", []_C_int{6, 26}},\n\t{\"hw.product\", []_C_int{6, 15}},\n\t{\"hw.serialno\", []_C_int{6, 17}},\n\t{\"hw.setperf\", []_C_int{6, 13}},\n\t{\"hw.smt\", []_C_int{6, 24}},\n\t{\"hw.usermem\", []_C_int{6, 20}},\n\t{\"hw.uuid\", []_C_int{6, 18}},\n\t{\"hw.vendor\", []_C_int{6, 14}},\n\t{\"hw.version\", []_C_int{6, 16}},\n\t{\"kern.allowdt\", []_C_int{1, 65}},\n\t{\"kern.allowkmem\", []_C_int{1, 52}},\n\t{\"kern.argmax\", []_C_int{1, 8}},\n\t{\"kern.audio\", []_C_int{1, 84}},\n\t{\"kern.boottime\", []_C_int{1, 21}},\n\t{\"kern.bufcachepercent\", []_C_int{1, 72}},\n\t{\"kern.ccpu\", []_C_int{1, 45}},\n\t{\"kern.clockrate\", []_C_int{1, 12}},\n\t{\"kern.consbuf\", []_C_int{1, 83}},\n\t{\"kern.consbufsize\", []_C_int{1, 82}},\n\t{\"kern.consdev\", []_C_int{1, 75}},\n\t{\"kern.cp_time\", []_C_int{1, 40}},\n\t{\"kern.cp_time2\", []_C_int{1, 71}},\n\t{\"kern.cpustats\", []_C_int{1, 85}},\n\t{\"kern.domainname\", []_C_int{1, 22}},\n\t{\"kern.file\", []_C_int{1, 73}},\n\t{\"kern.forkstat\", []_C_int{1, 42}},\n\t{\"kern.fscale\", []_C_int{1, 46}},\n\t{\"kern.fsync\", []_C_int{1, 33}},\n\t{\"kern.global_ptrace\", []_C_int{1, 81}},\n\t{\"kern.hostid\", []_C_int{1, 11}},\n\t{\"kern.hostname\", []_C_int{1, 10}},\n\t{\"kern.intrcnt.nintrcnt\", []_C_int{1, 63, 1}},\n\t{\"kern.job_control\", []_C_int{1, 19}},\n\t{\"kern.malloc.buckets\", []_C_int{1, 39, 1}},\n\t{\"kern.malloc.kmemnames\", []_C_int{1, 39, 3}},\n\t{\"kern.maxclusters\", []_C_int{1, 67}},\n\t{\"kern.maxfiles\", []_C_int{1, 7}},\n\t{\"kern.maxlocksperuid\", []_C_int{1, 70}},\n\t{\"kern.maxpartitions\", []_C_int{1, 23}},\n\t{\"kern.maxproc\", []_C_int{1, 6}},\n\t{\"kern.maxthread\", []_C_int{1, 25}},\n\t{\"kern.maxvnodes\", []_C_int{1, 5}},\n\t{\"kern.mbstat\", []_C_int{1, 59}},\n\t{\"kern.msgbuf\", []_C_int{1, 48}},\n\t{\"kern.msgbufsize\", []_C_int{1, 38}},\n\t{\"kern.nchstats\", []_C_int{1, 41}},\n\t{\"kern.netlivelocks\", []_C_int{1, 76}},\n\t{\"kern.nfiles\", []_C_int{1, 56}},\n\t{\"kern.ngroups\", []_C_int{1, 18}},\n\t{\"kern.nosuidcoredump\", []_C_int{1, 32}},\n\t{\"kern.nprocs\", []_C_int{1, 47}},\n\t{\"kern.nthreads\", []_C_int{1, 26}},\n\t{\"kern.numvnodes\", []_C_int{1, 58}},\n\t{\"kern.osrelease\", []_C_int{1, 2}},\n\t{\"kern.osrevision\", []_C_int{1, 3}},\n\t{\"kern.ostype\", []_C_int{1, 1}},\n\t{\"kern.osversion\", []_C_int{1, 27}},\n\t{\"kern.pfstatus\", []_C_int{1, 86}},\n\t{\"kern.pool_debug\", []_C_int{1, 77}},\n\t{\"kern.posix1version\", []_C_int{1, 17}},\n\t{\"kern.proc\", []_C_int{1, 66}},\n\t{\"kern.rawpartition\", []_C_int{1, 24}},\n\t{\"kern.saved_ids\", []_C_int{1, 20}},\n\t{\"kern.securelevel\", []_C_int{1, 9}},\n\t{\"kern.seminfo\", []_C_int{1, 61}},\n\t{\"kern.shminfo\", []_C_int{1, 62}},\n\t{\"kern.somaxconn\", []_C_int{1, 28}},\n\t{\"kern.sominconn\", []_C_int{1, 29}},\n\t{\"kern.splassert\", []_C_int{1, 54}},\n\t{\"kern.stackgap_random\", []_C_int{1, 50}},\n\t{\"kern.sysvipc_info\", []_C_int{1, 51}},\n\t{\"kern.sysvmsg\", []_C_int{1, 34}},\n\t{\"kern.sysvsem\", []_C_int{1, 35}},\n\t{\"kern.sysvshm\", []_C_int{1, 36}},\n\t{\"kern.timecounter.choice\", []_C_int{1, 69, 4}},\n\t{\"kern.timecounter.hardware\", []_C_int{1, 69, 3}},\n\t{\"kern.timecounter.tick\", []_C_int{1, 69, 1}},\n\t{\"kern.timecounter.timestepwarnings\", []_C_int{1, 69, 2}},\n\t{\"kern.timeout_stats\", []_C_int{1, 87}},\n\t{\"kern.tty.tk_cancc\", []_C_int{1, 44, 4}},\n\t{\"kern.tty.tk_nin\", []_C_int{1, 44, 1}},\n\t{\"kern.tty.tk_nout\", []_C_int{1, 44, 2}},\n\t{\"kern.tty.tk_rawcc\", []_C_int{1, 44, 3}},\n\t{\"kern.tty.ttyinfo\", []_C_int{1, 44, 5}},\n\t{\"kern.ttycount\", []_C_int{1, 57}},\n\t{\"kern.utc_offset\", []_C_int{1, 88}},\n\t{\"kern.version\", []_C_int{1, 4}},\n\t{\"kern.video\", []_C_int{1, 89}},\n\t{\"kern.watchdog.auto\", []_C_int{1, 64, 2}},\n\t{\"kern.watchdog.period\", []_C_int{1, 64, 1}},\n\t{\"kern.witnesswatch\", []_C_int{1, 53}},\n\t{\"kern.wxabort\", []_C_int{1, 74}},\n\t{\"net.bpf.bufsize\", []_C_int{4, 31, 1}},\n\t{\"net.bpf.maxbufsize\", []_C_int{4, 31, 2}},\n\t{\"net.inet.ah.enable\", []_C_int{4, 2, 51, 1}},\n\t{\"net.inet.ah.stats\", []_C_int{4, 2, 51, 2}},\n\t{\"net.inet.carp.allow\", []_C_int{4, 2, 112, 1}},\n\t{\"net.inet.carp.log\", []_C_int{4, 2, 112, 3}},\n\t{\"net.inet.carp.preempt\", []_C_int{4, 2, 112, 2}},\n\t{\"net.inet.carp.stats\", []_C_int{4, 2, 112, 4}},\n\t{\"net.inet.divert.recvspace\", []_C_int{4, 2, 258, 1}},\n\t{\"net.inet.divert.sendspace\", []_C_int{4, 2, 258, 2}},\n\t{\"net.inet.divert.stats\", []_C_int{4, 2, 258, 3}},\n\t{\"net.inet.esp.enable\", []_C_int{4, 2, 50, 1}},\n\t{\"net.inet.esp.stats\", []_C_int{4, 2, 50, 4}},\n\t{\"net.inet.esp.udpencap\", []_C_int{4, 2, 50, 2}},\n\t{\"net.inet.esp.udpencap_port\", []_C_int{4, 2, 50, 3}},\n\t{\"net.inet.etherip.allow\", []_C_int{4, 2, 97, 1}},\n\t{\"net.inet.etherip.stats\", []_C_int{4, 2, 97, 2}},\n\t{\"net.inet.gre.allow\", []_C_int{4, 2, 47, 1}},\n\t{\"net.inet.gre.wccp\", []_C_int{4, 2, 47, 2}},\n\t{\"net.inet.icmp.bmcastecho\", []_C_int{4, 2, 1, 2}},\n\t{\"net.inet.icmp.errppslimit\", []_C_int{4, 2, 1, 3}},\n\t{\"net.inet.icmp.maskrepl\", []_C_int{4, 2, 1, 1}},\n\t{\"net.inet.icmp.rediraccept\", []_C_int{4, 2, 1, 4}},\n\t{\"net.inet.icmp.redirtimeout\", []_C_int{4, 2, 1, 5}},\n\t{\"net.inet.icmp.stats\", []_C_int{4, 2, 1, 7}},\n\t{\"net.inet.icmp.tstamprepl\", []_C_int{4, 2, 1, 6}},\n\t{\"net.inet.igmp.stats\", []_C_int{4, 2, 2, 1}},\n\t{\"net.inet.ip.arpdown\", []_C_int{4, 2, 0, 40}},\n\t{\"net.inet.ip.arpqueued\", []_C_int{4, 2, 0, 36}},\n\t{\"net.inet.ip.arptimeout\", []_C_int{4, 2, 0, 39}},\n\t{\"net.inet.ip.encdebug\", []_C_int{4, 2, 0, 12}},\n\t{\"net.inet.ip.forwarding\", []_C_int{4, 2, 0, 1}},\n\t{\"net.inet.ip.ifq.congestion\", []_C_int{4, 2, 0, 30, 4}},\n\t{\"net.inet.ip.ifq.drops\", []_C_int{4, 2, 0, 30, 3}},\n\t{\"net.inet.ip.ifq.len\", []_C_int{4, 2, 0, 30, 1}},\n\t{\"net.inet.ip.ifq.maxlen\", []_C_int{4, 2, 0, 30, 2}},\n\t{\"net.inet.ip.maxqueue\", []_C_int{4, 2, 0, 11}},\n\t{\"net.inet.ip.mforwarding\", []_C_int{4, 2, 0, 31}},\n\t{\"net.inet.ip.mrtmfc\", []_C_int{4, 2, 0, 37}},\n\t{\"net.inet.ip.mrtproto\", []_C_int{4, 2, 0, 34}},\n\t{\"net.inet.ip.mrtstats\", []_C_int{4, 2, 0, 35}},\n\t{\"net.inet.ip.mrtvif\", []_C_int{4, 2, 0, 38}},\n\t{\"net.inet.ip.mtu\", []_C_int{4, 2, 0, 4}},\n\t{\"net.inet.ip.mtudisc\", []_C_int{4, 2, 0, 27}},\n\t{\"net.inet.ip.mtudisctimeout\", []_C_int{4, 2, 0, 28}},\n\t{\"net.inet.ip.multipath\", []_C_int{4, 2, 0, 32}},\n\t{\"net.inet.ip.portfirst\", []_C_int{4, 2, 0, 7}},\n\t{\"net.inet.ip.porthifirst\", []_C_int{4, 2, 0, 9}},\n\t{\"net.inet.ip.porthilast\", []_C_int{4, 2, 0, 10}},\n\t{\"net.inet.ip.portlast\", []_C_int{4, 2, 0, 8}},\n\t{\"net.inet.ip.redirect\", []_C_int{4, 2, 0, 2}},\n\t{\"net.inet.ip.sourceroute\", []_C_int{4, 2, 0, 5}},\n\t{\"net.inet.ip.stats\", []_C_int{4, 2, 0, 33}},\n\t{\"net.inet.ip.ttl\", []_C_int{4, 2, 0, 3}},\n\t{\"net.inet.ipcomp.enable\", []_C_int{4, 2, 108, 1}},\n\t{\"net.inet.ipcomp.stats\", []_C_int{4, 2, 108, 2}},\n\t{\"net.inet.ipip.allow\", []_C_int{4, 2, 4, 1}},\n\t{\"net.inet.ipip.stats\", []_C_int{4, 2, 4, 2}},\n\t{\"net.inet.pfsync.stats\", []_C_int{4, 2, 240, 1}},\n\t{\"net.inet.tcp.ackonpush\", []_C_int{4, 2, 6, 13}},\n\t{\"net.inet.tcp.always_keepalive\", []_C_int{4, 2, 6, 22}},\n\t{\"net.inet.tcp.baddynamic\", []_C_int{4, 2, 6, 6}},\n\t{\"net.inet.tcp.drop\", []_C_int{4, 2, 6, 19}},\n\t{\"net.inet.tcp.ecn\", []_C_int{4, 2, 6, 14}},\n\t{\"net.inet.tcp.ident\", []_C_int{4, 2, 6, 9}},\n\t{\"net.inet.tcp.keepidle\", []_C_int{4, 2, 6, 3}},\n\t{\"net.inet.tcp.keepinittime\", []_C_int{4, 2, 6, 2}},\n\t{\"net.inet.tcp.keepintvl\", []_C_int{4, 2, 6, 4}},\n\t{\"net.inet.tcp.mssdflt\", []_C_int{4, 2, 6, 11}},\n\t{\"net.inet.tcp.reasslimit\", []_C_int{4, 2, 6, 18}},\n\t{\"net.inet.tcp.rfc1323\", []_C_int{4, 2, 6, 1}},\n\t{\"net.inet.tcp.rfc3390\", []_C_int{4, 2, 6, 17}},\n\t{\"net.inet.tcp.rootonly\", []_C_int{4, 2, 6, 24}},\n\t{\"net.inet.tcp.rstppslimit\", []_C_int{4, 2, 6, 12}},\n\t{\"net.inet.tcp.sack\", []_C_int{4, 2, 6, 10}},\n\t{\"net.inet.tcp.sackholelimit\", []_C_int{4, 2, 6, 20}},\n\t{\"net.inet.tcp.slowhz\", []_C_int{4, 2, 6, 5}},\n\t{\"net.inet.tcp.stats\", []_C_int{4, 2, 6, 21}},\n\t{\"net.inet.tcp.synbucketlimit\", []_C_int{4, 2, 6, 16}},\n\t{\"net.inet.tcp.syncachelimit\", []_C_int{4, 2, 6, 15}},\n\t{\"net.inet.tcp.synhashsize\", []_C_int{4, 2, 6, 25}},\n\t{\"net.inet.tcp.synuselimit\", []_C_int{4, 2, 6, 23}},\n\t{\"net.inet.udp.baddynamic\", []_C_int{4, 2, 17, 2}},\n\t{\"net.inet.udp.checksum\", []_C_int{4, 2, 17, 1}},\n\t{\"net.inet.udp.recvspace\", []_C_int{4, 2, 17, 3}},\n\t{\"net.inet.udp.rootonly\", []_C_int{4, 2, 17, 6}},\n\t{\"net.inet.udp.sendspace\", []_C_int{4, 2, 17, 4}},\n\t{\"net.inet.udp.stats\", []_C_int{4, 2, 17, 5}},\n\t{\"net.inet6.divert.recvspace\", []_C_int{4, 24, 86, 1}},\n\t{\"net.inet6.divert.sendspace\", []_C_int{4, 24, 86, 2}},\n\t{\"net.inet6.divert.stats\", []_C_int{4, 24, 86, 3}},\n\t{\"net.inet6.icmp6.errppslimit\", []_C_int{4, 24, 30, 14}},\n\t{\"net.inet6.icmp6.mtudisc_hiwat\", []_C_int{4, 24, 30, 16}},\n\t{\"net.inet6.icmp6.mtudisc_lowat\", []_C_int{4, 24, 30, 17}},\n\t{\"net.inet6.icmp6.nd6_debug\", []_C_int{4, 24, 30, 18}},\n\t{\"net.inet6.icmp6.nd6_delay\", []_C_int{4, 24, 30, 8}},\n\t{\"net.inet6.icmp6.nd6_maxnudhint\", []_C_int{4, 24, 30, 15}},\n\t{\"net.inet6.icmp6.nd6_mmaxtries\", []_C_int{4, 24, 30, 10}},\n\t{\"net.inet6.icmp6.nd6_umaxtries\", []_C_int{4, 24, 30, 9}},\n\t{\"net.inet6.icmp6.redirtimeout\", []_C_int{4, 24, 30, 3}},\n\t{\"net.inet6.ip6.auto_flowlabel\", []_C_int{4, 24, 17, 17}},\n\t{\"net.inet6.ip6.dad_count\", []_C_int{4, 24, 17, 16}},\n\t{\"net.inet6.ip6.dad_pending\", []_C_int{4, 24, 17, 49}},\n\t{\"net.inet6.ip6.defmcasthlim\", []_C_int{4, 24, 17, 18}},\n\t{\"net.inet6.ip6.forwarding\", []_C_int{4, 24, 17, 1}},\n\t{\"net.inet6.ip6.forwsrcrt\", []_C_int{4, 24, 17, 5}},\n\t{\"net.inet6.ip6.hdrnestlimit\", []_C_int{4, 24, 17, 15}},\n\t{\"net.inet6.ip6.hlim\", []_C_int{4, 24, 17, 3}},\n\t{\"net.inet6.ip6.log_interval\", []_C_int{4, 24, 17, 14}},\n\t{\"net.inet6.ip6.maxdynroutes\", []_C_int{4, 24, 17, 48}},\n\t{\"net.inet6.ip6.maxfragpackets\", []_C_int{4, 24, 17, 9}},\n\t{\"net.inet6.ip6.maxfrags\", []_C_int{4, 24, 17, 41}},\n\t{\"net.inet6.ip6.mforwarding\", []_C_int{4, 24, 17, 42}},\n\t{\"net.inet6.ip6.mrtmfc\", []_C_int{4, 24, 17, 53}},\n\t{\"net.inet6.ip6.mrtmif\", []_C_int{4, 24, 17, 52}},\n\t{\"net.inet6.ip6.mrtproto\", []_C_int{4, 24, 17, 8}},\n\t{\"net.inet6.ip6.mtudisctimeout\", []_C_int{4, 24, 17, 50}},\n\t{\"net.inet6.ip6.multicast_mtudisc\", []_C_int{4, 24, 17, 44}},\n\t{\"net.inet6.ip6.multipath\", []_C_int{4, 24, 17, 43}},\n\t{\"net.inet6.ip6.neighborgcthresh\", []_C_int{4, 24, 17, 45}},\n\t{\"net.inet6.ip6.redirect\", []_C_int{4, 24, 17, 2}},\n\t{\"net.inet6.ip6.soiikey\", []_C_int{4, 24, 17, 54}},\n\t{\"net.inet6.ip6.sourcecheck\", []_C_int{4, 24, 17, 10}},\n\t{\"net.inet6.ip6.sourcecheck_logint\", []_C_int{4, 24, 17, 11}},\n\t{\"net.inet6.ip6.use_deprecated\", []_C_int{4, 24, 17, 21}},\n\t{\"net.key.sadb_dump\", []_C_int{4, 30, 1}},\n\t{\"net.key.spd_dump\", []_C_int{4, 30, 2}},\n\t{\"net.mpls.ifq.congestion\", []_C_int{4, 33, 3, 4}},\n\t{\"net.mpls.ifq.drops\", []_C_int{4, 33, 3, 3}},\n\t{\"net.mpls.ifq.len\", []_C_int{4, 33, 3, 1}},\n\t{\"net.mpls.ifq.maxlen\", []_C_int{4, 33, 3, 2}},\n\t{\"net.mpls.mapttl_ip\", []_C_int{4, 33, 5}},\n\t{\"net.mpls.mapttl_ip6\", []_C_int{4, 33, 6}},\n\t{\"net.mpls.ttl\", []_C_int{4, 33, 2}},\n\t{\"net.pflow.stats\", []_C_int{4, 34, 1}},\n\t{\"net.pipex.enable\", []_C_int{4, 35, 1}},\n\t{\"vm.anonmin\", []_C_int{2, 7}},\n\t{\"vm.loadavg\", []_C_int{2, 2}},\n\t{\"vm.malloc_conf\", []_C_int{2, 12}},\n\t{\"vm.maxslp\", []_C_int{2, 10}},\n\t{\"vm.nkmempages\", []_C_int{2, 6}},\n\t{\"vm.psstrings\", []_C_int{2, 3}},\n\t{\"vm.swapencrypt.enable\", []_C_int{2, 5, 0}},\n\t{\"vm.swapencrypt.keyscreated\", []_C_int{2, 5, 1}},\n\t{\"vm.swapencrypt.keysdeleted\", []_C_int{2, 5, 2}},\n\t{\"vm.uspace\", []_C_int{2, 11}},\n\t{\"vm.uvmexp\", []_C_int{2, 4}},\n\t{\"vm.vmmeter\", []_C_int{2, 1}},\n\t{\"vm.vnodemin\", []_C_int{2, 9}},\n\t{\"vm.vtextmin\", []_C_int{2, 8}},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm64.go",
    "content": "// go run mksysctl_openbsd.go\n// Code generated by the command above; DO NOT EDIT.\n\n//go:build arm64 && openbsd\n\npackage unix\n\ntype mibentry struct {\n\tctlname string\n\tctloid  []_C_int\n}\n\nvar sysctlMib = []mibentry{\n\t{\"ddb.console\", []_C_int{9, 6}},\n\t{\"ddb.log\", []_C_int{9, 7}},\n\t{\"ddb.max_line\", []_C_int{9, 3}},\n\t{\"ddb.max_width\", []_C_int{9, 2}},\n\t{\"ddb.panic\", []_C_int{9, 5}},\n\t{\"ddb.profile\", []_C_int{9, 9}},\n\t{\"ddb.radix\", []_C_int{9, 1}},\n\t{\"ddb.tab_stop_width\", []_C_int{9, 4}},\n\t{\"ddb.trigger\", []_C_int{9, 8}},\n\t{\"fs.posix.setuid\", []_C_int{3, 1, 1}},\n\t{\"hw.allowpowerdown\", []_C_int{6, 22}},\n\t{\"hw.byteorder\", []_C_int{6, 4}},\n\t{\"hw.cpuspeed\", []_C_int{6, 12}},\n\t{\"hw.diskcount\", []_C_int{6, 10}},\n\t{\"hw.disknames\", []_C_int{6, 8}},\n\t{\"hw.diskstats\", []_C_int{6, 9}},\n\t{\"hw.machine\", []_C_int{6, 1}},\n\t{\"hw.model\", []_C_int{6, 2}},\n\t{\"hw.ncpu\", []_C_int{6, 3}},\n\t{\"hw.ncpufound\", []_C_int{6, 21}},\n\t{\"hw.ncpuonline\", []_C_int{6, 25}},\n\t{\"hw.pagesize\", []_C_int{6, 7}},\n\t{\"hw.perfpolicy\", []_C_int{6, 23}},\n\t{\"hw.physmem\", []_C_int{6, 19}},\n\t{\"hw.power\", []_C_int{6, 26}},\n\t{\"hw.product\", []_C_int{6, 15}},\n\t{\"hw.serialno\", []_C_int{6, 17}},\n\t{\"hw.setperf\", []_C_int{6, 13}},\n\t{\"hw.smt\", []_C_int{6, 24}},\n\t{\"hw.usermem\", []_C_int{6, 20}},\n\t{\"hw.uuid\", []_C_int{6, 18}},\n\t{\"hw.vendor\", []_C_int{6, 14}},\n\t{\"hw.version\", []_C_int{6, 16}},\n\t{\"kern.allowdt\", []_C_int{1, 65}},\n\t{\"kern.allowkmem\", []_C_int{1, 52}},\n\t{\"kern.argmax\", []_C_int{1, 8}},\n\t{\"kern.audio\", []_C_int{1, 84}},\n\t{\"kern.boottime\", []_C_int{1, 21}},\n\t{\"kern.bufcachepercent\", []_C_int{1, 72}},\n\t{\"kern.ccpu\", []_C_int{1, 45}},\n\t{\"kern.clockrate\", []_C_int{1, 12}},\n\t{\"kern.consbuf\", []_C_int{1, 83}},\n\t{\"kern.consbufsize\", []_C_int{1, 82}},\n\t{\"kern.consdev\", []_C_int{1, 75}},\n\t{\"kern.cp_time\", []_C_int{1, 40}},\n\t{\"kern.cp_time2\", []_C_int{1, 71}},\n\t{\"kern.cpustats\", []_C_int{1, 85}},\n\t{\"kern.domainname\", []_C_int{1, 22}},\n\t{\"kern.file\", []_C_int{1, 73}},\n\t{\"kern.forkstat\", []_C_int{1, 42}},\n\t{\"kern.fscale\", []_C_int{1, 46}},\n\t{\"kern.fsync\", []_C_int{1, 33}},\n\t{\"kern.global_ptrace\", []_C_int{1, 81}},\n\t{\"kern.hostid\", []_C_int{1, 11}},\n\t{\"kern.hostname\", []_C_int{1, 10}},\n\t{\"kern.intrcnt.nintrcnt\", []_C_int{1, 63, 1}},\n\t{\"kern.job_control\", []_C_int{1, 19}},\n\t{\"kern.malloc.buckets\", []_C_int{1, 39, 1}},\n\t{\"kern.malloc.kmemnames\", []_C_int{1, 39, 3}},\n\t{\"kern.maxclusters\", []_C_int{1, 67}},\n\t{\"kern.maxfiles\", []_C_int{1, 7}},\n\t{\"kern.maxlocksperuid\", []_C_int{1, 70}},\n\t{\"kern.maxpartitions\", []_C_int{1, 23}},\n\t{\"kern.maxproc\", []_C_int{1, 6}},\n\t{\"kern.maxthread\", []_C_int{1, 25}},\n\t{\"kern.maxvnodes\", []_C_int{1, 5}},\n\t{\"kern.mbstat\", []_C_int{1, 59}},\n\t{\"kern.msgbuf\", []_C_int{1, 48}},\n\t{\"kern.msgbufsize\", []_C_int{1, 38}},\n\t{\"kern.nchstats\", []_C_int{1, 41}},\n\t{\"kern.netlivelocks\", []_C_int{1, 76}},\n\t{\"kern.nfiles\", []_C_int{1, 56}},\n\t{\"kern.ngroups\", []_C_int{1, 18}},\n\t{\"kern.nosuidcoredump\", []_C_int{1, 32}},\n\t{\"kern.nprocs\", []_C_int{1, 47}},\n\t{\"kern.nthreads\", []_C_int{1, 26}},\n\t{\"kern.numvnodes\", []_C_int{1, 58}},\n\t{\"kern.osrelease\", []_C_int{1, 2}},\n\t{\"kern.osrevision\", []_C_int{1, 3}},\n\t{\"kern.ostype\", []_C_int{1, 1}},\n\t{\"kern.osversion\", []_C_int{1, 27}},\n\t{\"kern.pfstatus\", []_C_int{1, 86}},\n\t{\"kern.pool_debug\", []_C_int{1, 77}},\n\t{\"kern.posix1version\", []_C_int{1, 17}},\n\t{\"kern.proc\", []_C_int{1, 66}},\n\t{\"kern.rawpartition\", []_C_int{1, 24}},\n\t{\"kern.saved_ids\", []_C_int{1, 20}},\n\t{\"kern.securelevel\", []_C_int{1, 9}},\n\t{\"kern.seminfo\", []_C_int{1, 61}},\n\t{\"kern.shminfo\", []_C_int{1, 62}},\n\t{\"kern.somaxconn\", []_C_int{1, 28}},\n\t{\"kern.sominconn\", []_C_int{1, 29}},\n\t{\"kern.splassert\", []_C_int{1, 54}},\n\t{\"kern.stackgap_random\", []_C_int{1, 50}},\n\t{\"kern.sysvipc_info\", []_C_int{1, 51}},\n\t{\"kern.sysvmsg\", []_C_int{1, 34}},\n\t{\"kern.sysvsem\", []_C_int{1, 35}},\n\t{\"kern.sysvshm\", []_C_int{1, 36}},\n\t{\"kern.timecounter.choice\", []_C_int{1, 69, 4}},\n\t{\"kern.timecounter.hardware\", []_C_int{1, 69, 3}},\n\t{\"kern.timecounter.tick\", []_C_int{1, 69, 1}},\n\t{\"kern.timecounter.timestepwarnings\", []_C_int{1, 69, 2}},\n\t{\"kern.timeout_stats\", []_C_int{1, 87}},\n\t{\"kern.tty.tk_cancc\", []_C_int{1, 44, 4}},\n\t{\"kern.tty.tk_nin\", []_C_int{1, 44, 1}},\n\t{\"kern.tty.tk_nout\", []_C_int{1, 44, 2}},\n\t{\"kern.tty.tk_rawcc\", []_C_int{1, 44, 3}},\n\t{\"kern.tty.ttyinfo\", []_C_int{1, 44, 5}},\n\t{\"kern.ttycount\", []_C_int{1, 57}},\n\t{\"kern.utc_offset\", []_C_int{1, 88}},\n\t{\"kern.version\", []_C_int{1, 4}},\n\t{\"kern.video\", []_C_int{1, 89}},\n\t{\"kern.watchdog.auto\", []_C_int{1, 64, 2}},\n\t{\"kern.watchdog.period\", []_C_int{1, 64, 1}},\n\t{\"kern.witnesswatch\", []_C_int{1, 53}},\n\t{\"kern.wxabort\", []_C_int{1, 74}},\n\t{\"net.bpf.bufsize\", []_C_int{4, 31, 1}},\n\t{\"net.bpf.maxbufsize\", []_C_int{4, 31, 2}},\n\t{\"net.inet.ah.enable\", []_C_int{4, 2, 51, 1}},\n\t{\"net.inet.ah.stats\", []_C_int{4, 2, 51, 2}},\n\t{\"net.inet.carp.allow\", []_C_int{4, 2, 112, 1}},\n\t{\"net.inet.carp.log\", []_C_int{4, 2, 112, 3}},\n\t{\"net.inet.carp.preempt\", []_C_int{4, 2, 112, 2}},\n\t{\"net.inet.carp.stats\", []_C_int{4, 2, 112, 4}},\n\t{\"net.inet.divert.recvspace\", []_C_int{4, 2, 258, 1}},\n\t{\"net.inet.divert.sendspace\", []_C_int{4, 2, 258, 2}},\n\t{\"net.inet.divert.stats\", []_C_int{4, 2, 258, 3}},\n\t{\"net.inet.esp.enable\", []_C_int{4, 2, 50, 1}},\n\t{\"net.inet.esp.stats\", []_C_int{4, 2, 50, 4}},\n\t{\"net.inet.esp.udpencap\", []_C_int{4, 2, 50, 2}},\n\t{\"net.inet.esp.udpencap_port\", []_C_int{4, 2, 50, 3}},\n\t{\"net.inet.etherip.allow\", []_C_int{4, 2, 97, 1}},\n\t{\"net.inet.etherip.stats\", []_C_int{4, 2, 97, 2}},\n\t{\"net.inet.gre.allow\", []_C_int{4, 2, 47, 1}},\n\t{\"net.inet.gre.wccp\", []_C_int{4, 2, 47, 2}},\n\t{\"net.inet.icmp.bmcastecho\", []_C_int{4, 2, 1, 2}},\n\t{\"net.inet.icmp.errppslimit\", []_C_int{4, 2, 1, 3}},\n\t{\"net.inet.icmp.maskrepl\", []_C_int{4, 2, 1, 1}},\n\t{\"net.inet.icmp.rediraccept\", []_C_int{4, 2, 1, 4}},\n\t{\"net.inet.icmp.redirtimeout\", []_C_int{4, 2, 1, 5}},\n\t{\"net.inet.icmp.stats\", []_C_int{4, 2, 1, 7}},\n\t{\"net.inet.icmp.tstamprepl\", []_C_int{4, 2, 1, 6}},\n\t{\"net.inet.igmp.stats\", []_C_int{4, 2, 2, 1}},\n\t{\"net.inet.ip.arpdown\", []_C_int{4, 2, 0, 40}},\n\t{\"net.inet.ip.arpqueued\", []_C_int{4, 2, 0, 36}},\n\t{\"net.inet.ip.arptimeout\", []_C_int{4, 2, 0, 39}},\n\t{\"net.inet.ip.encdebug\", []_C_int{4, 2, 0, 12}},\n\t{\"net.inet.ip.forwarding\", []_C_int{4, 2, 0, 1}},\n\t{\"net.inet.ip.ifq.congestion\", []_C_int{4, 2, 0, 30, 4}},\n\t{\"net.inet.ip.ifq.drops\", []_C_int{4, 2, 0, 30, 3}},\n\t{\"net.inet.ip.ifq.len\", []_C_int{4, 2, 0, 30, 1}},\n\t{\"net.inet.ip.ifq.maxlen\", []_C_int{4, 2, 0, 30, 2}},\n\t{\"net.inet.ip.maxqueue\", []_C_int{4, 2, 0, 11}},\n\t{\"net.inet.ip.mforwarding\", []_C_int{4, 2, 0, 31}},\n\t{\"net.inet.ip.mrtmfc\", []_C_int{4, 2, 0, 37}},\n\t{\"net.inet.ip.mrtproto\", []_C_int{4, 2, 0, 34}},\n\t{\"net.inet.ip.mrtstats\", []_C_int{4, 2, 0, 35}},\n\t{\"net.inet.ip.mrtvif\", []_C_int{4, 2, 0, 38}},\n\t{\"net.inet.ip.mtu\", []_C_int{4, 2, 0, 4}},\n\t{\"net.inet.ip.mtudisc\", []_C_int{4, 2, 0, 27}},\n\t{\"net.inet.ip.mtudisctimeout\", []_C_int{4, 2, 0, 28}},\n\t{\"net.inet.ip.multipath\", []_C_int{4, 2, 0, 32}},\n\t{\"net.inet.ip.portfirst\", []_C_int{4, 2, 0, 7}},\n\t{\"net.inet.ip.porthifirst\", []_C_int{4, 2, 0, 9}},\n\t{\"net.inet.ip.porthilast\", []_C_int{4, 2, 0, 10}},\n\t{\"net.inet.ip.portlast\", []_C_int{4, 2, 0, 8}},\n\t{\"net.inet.ip.redirect\", []_C_int{4, 2, 0, 2}},\n\t{\"net.inet.ip.sourceroute\", []_C_int{4, 2, 0, 5}},\n\t{\"net.inet.ip.stats\", []_C_int{4, 2, 0, 33}},\n\t{\"net.inet.ip.ttl\", []_C_int{4, 2, 0, 3}},\n\t{\"net.inet.ipcomp.enable\", []_C_int{4, 2, 108, 1}},\n\t{\"net.inet.ipcomp.stats\", []_C_int{4, 2, 108, 2}},\n\t{\"net.inet.ipip.allow\", []_C_int{4, 2, 4, 1}},\n\t{\"net.inet.ipip.stats\", []_C_int{4, 2, 4, 2}},\n\t{\"net.inet.pfsync.stats\", []_C_int{4, 2, 240, 1}},\n\t{\"net.inet.tcp.ackonpush\", []_C_int{4, 2, 6, 13}},\n\t{\"net.inet.tcp.always_keepalive\", []_C_int{4, 2, 6, 22}},\n\t{\"net.inet.tcp.baddynamic\", []_C_int{4, 2, 6, 6}},\n\t{\"net.inet.tcp.drop\", []_C_int{4, 2, 6, 19}},\n\t{\"net.inet.tcp.ecn\", []_C_int{4, 2, 6, 14}},\n\t{\"net.inet.tcp.ident\", []_C_int{4, 2, 6, 9}},\n\t{\"net.inet.tcp.keepidle\", []_C_int{4, 2, 6, 3}},\n\t{\"net.inet.tcp.keepinittime\", []_C_int{4, 2, 6, 2}},\n\t{\"net.inet.tcp.keepintvl\", []_C_int{4, 2, 6, 4}},\n\t{\"net.inet.tcp.mssdflt\", []_C_int{4, 2, 6, 11}},\n\t{\"net.inet.tcp.reasslimit\", []_C_int{4, 2, 6, 18}},\n\t{\"net.inet.tcp.rfc1323\", []_C_int{4, 2, 6, 1}},\n\t{\"net.inet.tcp.rfc3390\", []_C_int{4, 2, 6, 17}},\n\t{\"net.inet.tcp.rootonly\", []_C_int{4, 2, 6, 24}},\n\t{\"net.inet.tcp.rstppslimit\", []_C_int{4, 2, 6, 12}},\n\t{\"net.inet.tcp.sack\", []_C_int{4, 2, 6, 10}},\n\t{\"net.inet.tcp.sackholelimit\", []_C_int{4, 2, 6, 20}},\n\t{\"net.inet.tcp.slowhz\", []_C_int{4, 2, 6, 5}},\n\t{\"net.inet.tcp.stats\", []_C_int{4, 2, 6, 21}},\n\t{\"net.inet.tcp.synbucketlimit\", []_C_int{4, 2, 6, 16}},\n\t{\"net.inet.tcp.syncachelimit\", []_C_int{4, 2, 6, 15}},\n\t{\"net.inet.tcp.synhashsize\", []_C_int{4, 2, 6, 25}},\n\t{\"net.inet.tcp.synuselimit\", []_C_int{4, 2, 6, 23}},\n\t{\"net.inet.udp.baddynamic\", []_C_int{4, 2, 17, 2}},\n\t{\"net.inet.udp.checksum\", []_C_int{4, 2, 17, 1}},\n\t{\"net.inet.udp.recvspace\", []_C_int{4, 2, 17, 3}},\n\t{\"net.inet.udp.rootonly\", []_C_int{4, 2, 17, 6}},\n\t{\"net.inet.udp.sendspace\", []_C_int{4, 2, 17, 4}},\n\t{\"net.inet.udp.stats\", []_C_int{4, 2, 17, 5}},\n\t{\"net.inet6.divert.recvspace\", []_C_int{4, 24, 86, 1}},\n\t{\"net.inet6.divert.sendspace\", []_C_int{4, 24, 86, 2}},\n\t{\"net.inet6.divert.stats\", []_C_int{4, 24, 86, 3}},\n\t{\"net.inet6.icmp6.errppslimit\", []_C_int{4, 24, 30, 14}},\n\t{\"net.inet6.icmp6.mtudisc_hiwat\", []_C_int{4, 24, 30, 16}},\n\t{\"net.inet6.icmp6.mtudisc_lowat\", []_C_int{4, 24, 30, 17}},\n\t{\"net.inet6.icmp6.nd6_debug\", []_C_int{4, 24, 30, 18}},\n\t{\"net.inet6.icmp6.nd6_delay\", []_C_int{4, 24, 30, 8}},\n\t{\"net.inet6.icmp6.nd6_maxnudhint\", []_C_int{4, 24, 30, 15}},\n\t{\"net.inet6.icmp6.nd6_mmaxtries\", []_C_int{4, 24, 30, 10}},\n\t{\"net.inet6.icmp6.nd6_umaxtries\", []_C_int{4, 24, 30, 9}},\n\t{\"net.inet6.icmp6.redirtimeout\", []_C_int{4, 24, 30, 3}},\n\t{\"net.inet6.ip6.auto_flowlabel\", []_C_int{4, 24, 17, 17}},\n\t{\"net.inet6.ip6.dad_count\", []_C_int{4, 24, 17, 16}},\n\t{\"net.inet6.ip6.dad_pending\", []_C_int{4, 24, 17, 49}},\n\t{\"net.inet6.ip6.defmcasthlim\", []_C_int{4, 24, 17, 18}},\n\t{\"net.inet6.ip6.forwarding\", []_C_int{4, 24, 17, 1}},\n\t{\"net.inet6.ip6.forwsrcrt\", []_C_int{4, 24, 17, 5}},\n\t{\"net.inet6.ip6.hdrnestlimit\", []_C_int{4, 24, 17, 15}},\n\t{\"net.inet6.ip6.hlim\", []_C_int{4, 24, 17, 3}},\n\t{\"net.inet6.ip6.log_interval\", []_C_int{4, 24, 17, 14}},\n\t{\"net.inet6.ip6.maxdynroutes\", []_C_int{4, 24, 17, 48}},\n\t{\"net.inet6.ip6.maxfragpackets\", []_C_int{4, 24, 17, 9}},\n\t{\"net.inet6.ip6.maxfrags\", []_C_int{4, 24, 17, 41}},\n\t{\"net.inet6.ip6.mforwarding\", []_C_int{4, 24, 17, 42}},\n\t{\"net.inet6.ip6.mrtmfc\", []_C_int{4, 24, 17, 53}},\n\t{\"net.inet6.ip6.mrtmif\", []_C_int{4, 24, 17, 52}},\n\t{\"net.inet6.ip6.mrtproto\", []_C_int{4, 24, 17, 8}},\n\t{\"net.inet6.ip6.mtudisctimeout\", []_C_int{4, 24, 17, 50}},\n\t{\"net.inet6.ip6.multicast_mtudisc\", []_C_int{4, 24, 17, 44}},\n\t{\"net.inet6.ip6.multipath\", []_C_int{4, 24, 17, 43}},\n\t{\"net.inet6.ip6.neighborgcthresh\", []_C_int{4, 24, 17, 45}},\n\t{\"net.inet6.ip6.redirect\", []_C_int{4, 24, 17, 2}},\n\t{\"net.inet6.ip6.soiikey\", []_C_int{4, 24, 17, 54}},\n\t{\"net.inet6.ip6.sourcecheck\", []_C_int{4, 24, 17, 10}},\n\t{\"net.inet6.ip6.sourcecheck_logint\", []_C_int{4, 24, 17, 11}},\n\t{\"net.inet6.ip6.use_deprecated\", []_C_int{4, 24, 17, 21}},\n\t{\"net.key.sadb_dump\", []_C_int{4, 30, 1}},\n\t{\"net.key.spd_dump\", []_C_int{4, 30, 2}},\n\t{\"net.mpls.ifq.congestion\", []_C_int{4, 33, 3, 4}},\n\t{\"net.mpls.ifq.drops\", []_C_int{4, 33, 3, 3}},\n\t{\"net.mpls.ifq.len\", []_C_int{4, 33, 3, 1}},\n\t{\"net.mpls.ifq.maxlen\", []_C_int{4, 33, 3, 2}},\n\t{\"net.mpls.mapttl_ip\", []_C_int{4, 33, 5}},\n\t{\"net.mpls.mapttl_ip6\", []_C_int{4, 33, 6}},\n\t{\"net.mpls.ttl\", []_C_int{4, 33, 2}},\n\t{\"net.pflow.stats\", []_C_int{4, 34, 1}},\n\t{\"net.pipex.enable\", []_C_int{4, 35, 1}},\n\t{\"vm.anonmin\", []_C_int{2, 7}},\n\t{\"vm.loadavg\", []_C_int{2, 2}},\n\t{\"vm.malloc_conf\", []_C_int{2, 12}},\n\t{\"vm.maxslp\", []_C_int{2, 10}},\n\t{\"vm.nkmempages\", []_C_int{2, 6}},\n\t{\"vm.psstrings\", []_C_int{2, 3}},\n\t{\"vm.swapencrypt.enable\", []_C_int{2, 5, 0}},\n\t{\"vm.swapencrypt.keyscreated\", []_C_int{2, 5, 1}},\n\t{\"vm.swapencrypt.keysdeleted\", []_C_int{2, 5, 2}},\n\t{\"vm.uspace\", []_C_int{2, 11}},\n\t{\"vm.uvmexp\", []_C_int{2, 4}},\n\t{\"vm.vmmeter\", []_C_int{2, 1}},\n\t{\"vm.vnodemin\", []_C_int{2, 9}},\n\t{\"vm.vtextmin\", []_C_int{2, 8}},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysctl_openbsd_mips64.go",
    "content": "// go run mksysctl_openbsd.go\n// Code generated by the command above; DO NOT EDIT.\n\n//go:build mips64 && openbsd\n\npackage unix\n\ntype mibentry struct {\n\tctlname string\n\tctloid  []_C_int\n}\n\nvar sysctlMib = []mibentry{\n\t{\"ddb.console\", []_C_int{9, 6}},\n\t{\"ddb.log\", []_C_int{9, 7}},\n\t{\"ddb.max_line\", []_C_int{9, 3}},\n\t{\"ddb.max_width\", []_C_int{9, 2}},\n\t{\"ddb.panic\", []_C_int{9, 5}},\n\t{\"ddb.profile\", []_C_int{9, 9}},\n\t{\"ddb.radix\", []_C_int{9, 1}},\n\t{\"ddb.tab_stop_width\", []_C_int{9, 4}},\n\t{\"ddb.trigger\", []_C_int{9, 8}},\n\t{\"fs.posix.setuid\", []_C_int{3, 1, 1}},\n\t{\"hw.allowpowerdown\", []_C_int{6, 22}},\n\t{\"hw.byteorder\", []_C_int{6, 4}},\n\t{\"hw.cpuspeed\", []_C_int{6, 12}},\n\t{\"hw.diskcount\", []_C_int{6, 10}},\n\t{\"hw.disknames\", []_C_int{6, 8}},\n\t{\"hw.diskstats\", []_C_int{6, 9}},\n\t{\"hw.machine\", []_C_int{6, 1}},\n\t{\"hw.model\", []_C_int{6, 2}},\n\t{\"hw.ncpu\", []_C_int{6, 3}},\n\t{\"hw.ncpufound\", []_C_int{6, 21}},\n\t{\"hw.ncpuonline\", []_C_int{6, 25}},\n\t{\"hw.pagesize\", []_C_int{6, 7}},\n\t{\"hw.perfpolicy\", []_C_int{6, 23}},\n\t{\"hw.physmem\", []_C_int{6, 19}},\n\t{\"hw.power\", []_C_int{6, 26}},\n\t{\"hw.product\", []_C_int{6, 15}},\n\t{\"hw.serialno\", []_C_int{6, 17}},\n\t{\"hw.setperf\", []_C_int{6, 13}},\n\t{\"hw.smt\", []_C_int{6, 24}},\n\t{\"hw.usermem\", []_C_int{6, 20}},\n\t{\"hw.uuid\", []_C_int{6, 18}},\n\t{\"hw.vendor\", []_C_int{6, 14}},\n\t{\"hw.version\", []_C_int{6, 16}},\n\t{\"kern.allowdt\", []_C_int{1, 65}},\n\t{\"kern.allowkmem\", []_C_int{1, 52}},\n\t{\"kern.argmax\", []_C_int{1, 8}},\n\t{\"kern.audio\", []_C_int{1, 84}},\n\t{\"kern.boottime\", []_C_int{1, 21}},\n\t{\"kern.bufcachepercent\", []_C_int{1, 72}},\n\t{\"kern.ccpu\", []_C_int{1, 45}},\n\t{\"kern.clockrate\", []_C_int{1, 12}},\n\t{\"kern.consbuf\", []_C_int{1, 83}},\n\t{\"kern.consbufsize\", []_C_int{1, 82}},\n\t{\"kern.consdev\", []_C_int{1, 75}},\n\t{\"kern.cp_time\", []_C_int{1, 40}},\n\t{\"kern.cp_time2\", []_C_int{1, 71}},\n\t{\"kern.cpustats\", []_C_int{1, 85}},\n\t{\"kern.domainname\", []_C_int{1, 22}},\n\t{\"kern.file\", []_C_int{1, 73}},\n\t{\"kern.forkstat\", []_C_int{1, 42}},\n\t{\"kern.fscale\", []_C_int{1, 46}},\n\t{\"kern.fsync\", []_C_int{1, 33}},\n\t{\"kern.global_ptrace\", []_C_int{1, 81}},\n\t{\"kern.hostid\", []_C_int{1, 11}},\n\t{\"kern.hostname\", []_C_int{1, 10}},\n\t{\"kern.intrcnt.nintrcnt\", []_C_int{1, 63, 1}},\n\t{\"kern.job_control\", []_C_int{1, 19}},\n\t{\"kern.malloc.buckets\", []_C_int{1, 39, 1}},\n\t{\"kern.malloc.kmemnames\", []_C_int{1, 39, 3}},\n\t{\"kern.maxclusters\", []_C_int{1, 67}},\n\t{\"kern.maxfiles\", []_C_int{1, 7}},\n\t{\"kern.maxlocksperuid\", []_C_int{1, 70}},\n\t{\"kern.maxpartitions\", []_C_int{1, 23}},\n\t{\"kern.maxproc\", []_C_int{1, 6}},\n\t{\"kern.maxthread\", []_C_int{1, 25}},\n\t{\"kern.maxvnodes\", []_C_int{1, 5}},\n\t{\"kern.mbstat\", []_C_int{1, 59}},\n\t{\"kern.msgbuf\", []_C_int{1, 48}},\n\t{\"kern.msgbufsize\", []_C_int{1, 38}},\n\t{\"kern.nchstats\", []_C_int{1, 41}},\n\t{\"kern.netlivelocks\", []_C_int{1, 76}},\n\t{\"kern.nfiles\", []_C_int{1, 56}},\n\t{\"kern.ngroups\", []_C_int{1, 18}},\n\t{\"kern.nosuidcoredump\", []_C_int{1, 32}},\n\t{\"kern.nprocs\", []_C_int{1, 47}},\n\t{\"kern.nthreads\", []_C_int{1, 26}},\n\t{\"kern.numvnodes\", []_C_int{1, 58}},\n\t{\"kern.osrelease\", []_C_int{1, 2}},\n\t{\"kern.osrevision\", []_C_int{1, 3}},\n\t{\"kern.ostype\", []_C_int{1, 1}},\n\t{\"kern.osversion\", []_C_int{1, 27}},\n\t{\"kern.pfstatus\", []_C_int{1, 86}},\n\t{\"kern.pool_debug\", []_C_int{1, 77}},\n\t{\"kern.posix1version\", []_C_int{1, 17}},\n\t{\"kern.proc\", []_C_int{1, 66}},\n\t{\"kern.rawpartition\", []_C_int{1, 24}},\n\t{\"kern.saved_ids\", []_C_int{1, 20}},\n\t{\"kern.securelevel\", []_C_int{1, 9}},\n\t{\"kern.seminfo\", []_C_int{1, 61}},\n\t{\"kern.shminfo\", []_C_int{1, 62}},\n\t{\"kern.somaxconn\", []_C_int{1, 28}},\n\t{\"kern.sominconn\", []_C_int{1, 29}},\n\t{\"kern.splassert\", []_C_int{1, 54}},\n\t{\"kern.stackgap_random\", []_C_int{1, 50}},\n\t{\"kern.sysvipc_info\", []_C_int{1, 51}},\n\t{\"kern.sysvmsg\", []_C_int{1, 34}},\n\t{\"kern.sysvsem\", []_C_int{1, 35}},\n\t{\"kern.sysvshm\", []_C_int{1, 36}},\n\t{\"kern.timecounter.choice\", []_C_int{1, 69, 4}},\n\t{\"kern.timecounter.hardware\", []_C_int{1, 69, 3}},\n\t{\"kern.timecounter.tick\", []_C_int{1, 69, 1}},\n\t{\"kern.timecounter.timestepwarnings\", []_C_int{1, 69, 2}},\n\t{\"kern.timeout_stats\", []_C_int{1, 87}},\n\t{\"kern.tty.tk_cancc\", []_C_int{1, 44, 4}},\n\t{\"kern.tty.tk_nin\", []_C_int{1, 44, 1}},\n\t{\"kern.tty.tk_nout\", []_C_int{1, 44, 2}},\n\t{\"kern.tty.tk_rawcc\", []_C_int{1, 44, 3}},\n\t{\"kern.tty.ttyinfo\", []_C_int{1, 44, 5}},\n\t{\"kern.ttycount\", []_C_int{1, 57}},\n\t{\"kern.utc_offset\", []_C_int{1, 88}},\n\t{\"kern.version\", []_C_int{1, 4}},\n\t{\"kern.video\", []_C_int{1, 89}},\n\t{\"kern.watchdog.auto\", []_C_int{1, 64, 2}},\n\t{\"kern.watchdog.period\", []_C_int{1, 64, 1}},\n\t{\"kern.witnesswatch\", []_C_int{1, 53}},\n\t{\"kern.wxabort\", []_C_int{1, 74}},\n\t{\"net.bpf.bufsize\", []_C_int{4, 31, 1}},\n\t{\"net.bpf.maxbufsize\", []_C_int{4, 31, 2}},\n\t{\"net.inet.ah.enable\", []_C_int{4, 2, 51, 1}},\n\t{\"net.inet.ah.stats\", []_C_int{4, 2, 51, 2}},\n\t{\"net.inet.carp.allow\", []_C_int{4, 2, 112, 1}},\n\t{\"net.inet.carp.log\", []_C_int{4, 2, 112, 3}},\n\t{\"net.inet.carp.preempt\", []_C_int{4, 2, 112, 2}},\n\t{\"net.inet.carp.stats\", []_C_int{4, 2, 112, 4}},\n\t{\"net.inet.divert.recvspace\", []_C_int{4, 2, 258, 1}},\n\t{\"net.inet.divert.sendspace\", []_C_int{4, 2, 258, 2}},\n\t{\"net.inet.divert.stats\", []_C_int{4, 2, 258, 3}},\n\t{\"net.inet.esp.enable\", []_C_int{4, 2, 50, 1}},\n\t{\"net.inet.esp.stats\", []_C_int{4, 2, 50, 4}},\n\t{\"net.inet.esp.udpencap\", []_C_int{4, 2, 50, 2}},\n\t{\"net.inet.esp.udpencap_port\", []_C_int{4, 2, 50, 3}},\n\t{\"net.inet.etherip.allow\", []_C_int{4, 2, 97, 1}},\n\t{\"net.inet.etherip.stats\", []_C_int{4, 2, 97, 2}},\n\t{\"net.inet.gre.allow\", []_C_int{4, 2, 47, 1}},\n\t{\"net.inet.gre.wccp\", []_C_int{4, 2, 47, 2}},\n\t{\"net.inet.icmp.bmcastecho\", []_C_int{4, 2, 1, 2}},\n\t{\"net.inet.icmp.errppslimit\", []_C_int{4, 2, 1, 3}},\n\t{\"net.inet.icmp.maskrepl\", []_C_int{4, 2, 1, 1}},\n\t{\"net.inet.icmp.rediraccept\", []_C_int{4, 2, 1, 4}},\n\t{\"net.inet.icmp.redirtimeout\", []_C_int{4, 2, 1, 5}},\n\t{\"net.inet.icmp.stats\", []_C_int{4, 2, 1, 7}},\n\t{\"net.inet.icmp.tstamprepl\", []_C_int{4, 2, 1, 6}},\n\t{\"net.inet.igmp.stats\", []_C_int{4, 2, 2, 1}},\n\t{\"net.inet.ip.arpdown\", []_C_int{4, 2, 0, 40}},\n\t{\"net.inet.ip.arpqueued\", []_C_int{4, 2, 0, 36}},\n\t{\"net.inet.ip.arptimeout\", []_C_int{4, 2, 0, 39}},\n\t{\"net.inet.ip.encdebug\", []_C_int{4, 2, 0, 12}},\n\t{\"net.inet.ip.forwarding\", []_C_int{4, 2, 0, 1}},\n\t{\"net.inet.ip.ifq.congestion\", []_C_int{4, 2, 0, 30, 4}},\n\t{\"net.inet.ip.ifq.drops\", []_C_int{4, 2, 0, 30, 3}},\n\t{\"net.inet.ip.ifq.len\", []_C_int{4, 2, 0, 30, 1}},\n\t{\"net.inet.ip.ifq.maxlen\", []_C_int{4, 2, 0, 30, 2}},\n\t{\"net.inet.ip.maxqueue\", []_C_int{4, 2, 0, 11}},\n\t{\"net.inet.ip.mforwarding\", []_C_int{4, 2, 0, 31}},\n\t{\"net.inet.ip.mrtmfc\", []_C_int{4, 2, 0, 37}},\n\t{\"net.inet.ip.mrtproto\", []_C_int{4, 2, 0, 34}},\n\t{\"net.inet.ip.mrtstats\", []_C_int{4, 2, 0, 35}},\n\t{\"net.inet.ip.mrtvif\", []_C_int{4, 2, 0, 38}},\n\t{\"net.inet.ip.mtu\", []_C_int{4, 2, 0, 4}},\n\t{\"net.inet.ip.mtudisc\", []_C_int{4, 2, 0, 27}},\n\t{\"net.inet.ip.mtudisctimeout\", []_C_int{4, 2, 0, 28}},\n\t{\"net.inet.ip.multipath\", []_C_int{4, 2, 0, 32}},\n\t{\"net.inet.ip.portfirst\", []_C_int{4, 2, 0, 7}},\n\t{\"net.inet.ip.porthifirst\", []_C_int{4, 2, 0, 9}},\n\t{\"net.inet.ip.porthilast\", []_C_int{4, 2, 0, 10}},\n\t{\"net.inet.ip.portlast\", []_C_int{4, 2, 0, 8}},\n\t{\"net.inet.ip.redirect\", []_C_int{4, 2, 0, 2}},\n\t{\"net.inet.ip.sourceroute\", []_C_int{4, 2, 0, 5}},\n\t{\"net.inet.ip.stats\", []_C_int{4, 2, 0, 33}},\n\t{\"net.inet.ip.ttl\", []_C_int{4, 2, 0, 3}},\n\t{\"net.inet.ipcomp.enable\", []_C_int{4, 2, 108, 1}},\n\t{\"net.inet.ipcomp.stats\", []_C_int{4, 2, 108, 2}},\n\t{\"net.inet.ipip.allow\", []_C_int{4, 2, 4, 1}},\n\t{\"net.inet.ipip.stats\", []_C_int{4, 2, 4, 2}},\n\t{\"net.inet.pfsync.stats\", []_C_int{4, 2, 240, 1}},\n\t{\"net.inet.tcp.ackonpush\", []_C_int{4, 2, 6, 13}},\n\t{\"net.inet.tcp.always_keepalive\", []_C_int{4, 2, 6, 22}},\n\t{\"net.inet.tcp.baddynamic\", []_C_int{4, 2, 6, 6}},\n\t{\"net.inet.tcp.drop\", []_C_int{4, 2, 6, 19}},\n\t{\"net.inet.tcp.ecn\", []_C_int{4, 2, 6, 14}},\n\t{\"net.inet.tcp.ident\", []_C_int{4, 2, 6, 9}},\n\t{\"net.inet.tcp.keepidle\", []_C_int{4, 2, 6, 3}},\n\t{\"net.inet.tcp.keepinittime\", []_C_int{4, 2, 6, 2}},\n\t{\"net.inet.tcp.keepintvl\", []_C_int{4, 2, 6, 4}},\n\t{\"net.inet.tcp.mssdflt\", []_C_int{4, 2, 6, 11}},\n\t{\"net.inet.tcp.reasslimit\", []_C_int{4, 2, 6, 18}},\n\t{\"net.inet.tcp.rfc1323\", []_C_int{4, 2, 6, 1}},\n\t{\"net.inet.tcp.rfc3390\", []_C_int{4, 2, 6, 17}},\n\t{\"net.inet.tcp.rootonly\", []_C_int{4, 2, 6, 24}},\n\t{\"net.inet.tcp.rstppslimit\", []_C_int{4, 2, 6, 12}},\n\t{\"net.inet.tcp.sack\", []_C_int{4, 2, 6, 10}},\n\t{\"net.inet.tcp.sackholelimit\", []_C_int{4, 2, 6, 20}},\n\t{\"net.inet.tcp.slowhz\", []_C_int{4, 2, 6, 5}},\n\t{\"net.inet.tcp.stats\", []_C_int{4, 2, 6, 21}},\n\t{\"net.inet.tcp.synbucketlimit\", []_C_int{4, 2, 6, 16}},\n\t{\"net.inet.tcp.syncachelimit\", []_C_int{4, 2, 6, 15}},\n\t{\"net.inet.tcp.synhashsize\", []_C_int{4, 2, 6, 25}},\n\t{\"net.inet.tcp.synuselimit\", []_C_int{4, 2, 6, 23}},\n\t{\"net.inet.udp.baddynamic\", []_C_int{4, 2, 17, 2}},\n\t{\"net.inet.udp.checksum\", []_C_int{4, 2, 17, 1}},\n\t{\"net.inet.udp.recvspace\", []_C_int{4, 2, 17, 3}},\n\t{\"net.inet.udp.rootonly\", []_C_int{4, 2, 17, 6}},\n\t{\"net.inet.udp.sendspace\", []_C_int{4, 2, 17, 4}},\n\t{\"net.inet.udp.stats\", []_C_int{4, 2, 17, 5}},\n\t{\"net.inet6.divert.recvspace\", []_C_int{4, 24, 86, 1}},\n\t{\"net.inet6.divert.sendspace\", []_C_int{4, 24, 86, 2}},\n\t{\"net.inet6.divert.stats\", []_C_int{4, 24, 86, 3}},\n\t{\"net.inet6.icmp6.errppslimit\", []_C_int{4, 24, 30, 14}},\n\t{\"net.inet6.icmp6.mtudisc_hiwat\", []_C_int{4, 24, 30, 16}},\n\t{\"net.inet6.icmp6.mtudisc_lowat\", []_C_int{4, 24, 30, 17}},\n\t{\"net.inet6.icmp6.nd6_debug\", []_C_int{4, 24, 30, 18}},\n\t{\"net.inet6.icmp6.nd6_delay\", []_C_int{4, 24, 30, 8}},\n\t{\"net.inet6.icmp6.nd6_maxnudhint\", []_C_int{4, 24, 30, 15}},\n\t{\"net.inet6.icmp6.nd6_mmaxtries\", []_C_int{4, 24, 30, 10}},\n\t{\"net.inet6.icmp6.nd6_umaxtries\", []_C_int{4, 24, 30, 9}},\n\t{\"net.inet6.icmp6.redirtimeout\", []_C_int{4, 24, 30, 3}},\n\t{\"net.inet6.ip6.auto_flowlabel\", []_C_int{4, 24, 17, 17}},\n\t{\"net.inet6.ip6.dad_count\", []_C_int{4, 24, 17, 16}},\n\t{\"net.inet6.ip6.dad_pending\", []_C_int{4, 24, 17, 49}},\n\t{\"net.inet6.ip6.defmcasthlim\", []_C_int{4, 24, 17, 18}},\n\t{\"net.inet6.ip6.forwarding\", []_C_int{4, 24, 17, 1}},\n\t{\"net.inet6.ip6.forwsrcrt\", []_C_int{4, 24, 17, 5}},\n\t{\"net.inet6.ip6.hdrnestlimit\", []_C_int{4, 24, 17, 15}},\n\t{\"net.inet6.ip6.hlim\", []_C_int{4, 24, 17, 3}},\n\t{\"net.inet6.ip6.log_interval\", []_C_int{4, 24, 17, 14}},\n\t{\"net.inet6.ip6.maxdynroutes\", []_C_int{4, 24, 17, 48}},\n\t{\"net.inet6.ip6.maxfragpackets\", []_C_int{4, 24, 17, 9}},\n\t{\"net.inet6.ip6.maxfrags\", []_C_int{4, 24, 17, 41}},\n\t{\"net.inet6.ip6.mforwarding\", []_C_int{4, 24, 17, 42}},\n\t{\"net.inet6.ip6.mrtmfc\", []_C_int{4, 24, 17, 53}},\n\t{\"net.inet6.ip6.mrtmif\", []_C_int{4, 24, 17, 52}},\n\t{\"net.inet6.ip6.mrtproto\", []_C_int{4, 24, 17, 8}},\n\t{\"net.inet6.ip6.mtudisctimeout\", []_C_int{4, 24, 17, 50}},\n\t{\"net.inet6.ip6.multicast_mtudisc\", []_C_int{4, 24, 17, 44}},\n\t{\"net.inet6.ip6.multipath\", []_C_int{4, 24, 17, 43}},\n\t{\"net.inet6.ip6.neighborgcthresh\", []_C_int{4, 24, 17, 45}},\n\t{\"net.inet6.ip6.redirect\", []_C_int{4, 24, 17, 2}},\n\t{\"net.inet6.ip6.soiikey\", []_C_int{4, 24, 17, 54}},\n\t{\"net.inet6.ip6.sourcecheck\", []_C_int{4, 24, 17, 10}},\n\t{\"net.inet6.ip6.sourcecheck_logint\", []_C_int{4, 24, 17, 11}},\n\t{\"net.inet6.ip6.use_deprecated\", []_C_int{4, 24, 17, 21}},\n\t{\"net.key.sadb_dump\", []_C_int{4, 30, 1}},\n\t{\"net.key.spd_dump\", []_C_int{4, 30, 2}},\n\t{\"net.mpls.ifq.congestion\", []_C_int{4, 33, 3, 4}},\n\t{\"net.mpls.ifq.drops\", []_C_int{4, 33, 3, 3}},\n\t{\"net.mpls.ifq.len\", []_C_int{4, 33, 3, 1}},\n\t{\"net.mpls.ifq.maxlen\", []_C_int{4, 33, 3, 2}},\n\t{\"net.mpls.mapttl_ip\", []_C_int{4, 33, 5}},\n\t{\"net.mpls.mapttl_ip6\", []_C_int{4, 33, 6}},\n\t{\"net.mpls.ttl\", []_C_int{4, 33, 2}},\n\t{\"net.pflow.stats\", []_C_int{4, 34, 1}},\n\t{\"net.pipex.enable\", []_C_int{4, 35, 1}},\n\t{\"vm.anonmin\", []_C_int{2, 7}},\n\t{\"vm.loadavg\", []_C_int{2, 2}},\n\t{\"vm.malloc_conf\", []_C_int{2, 12}},\n\t{\"vm.maxslp\", []_C_int{2, 10}},\n\t{\"vm.nkmempages\", []_C_int{2, 6}},\n\t{\"vm.psstrings\", []_C_int{2, 3}},\n\t{\"vm.swapencrypt.enable\", []_C_int{2, 5, 0}},\n\t{\"vm.swapencrypt.keyscreated\", []_C_int{2, 5, 1}},\n\t{\"vm.swapencrypt.keysdeleted\", []_C_int{2, 5, 2}},\n\t{\"vm.uspace\", []_C_int{2, 11}},\n\t{\"vm.uvmexp\", []_C_int{2, 4}},\n\t{\"vm.vmmeter\", []_C_int{2, 1}},\n\t{\"vm.vnodemin\", []_C_int{2, 9}},\n\t{\"vm.vtextmin\", []_C_int{2, 8}},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysctl_openbsd_ppc64.go",
    "content": "// go run mksysctl_openbsd.go\n// Code generated by the command above; DO NOT EDIT.\n\n//go:build ppc64 && openbsd\n\npackage unix\n\ntype mibentry struct {\n\tctlname string\n\tctloid  []_C_int\n}\n\nvar sysctlMib = []mibentry{\n\t{\"ddb.console\", []_C_int{9, 6}},\n\t{\"ddb.log\", []_C_int{9, 7}},\n\t{\"ddb.max_line\", []_C_int{9, 3}},\n\t{\"ddb.max_width\", []_C_int{9, 2}},\n\t{\"ddb.panic\", []_C_int{9, 5}},\n\t{\"ddb.profile\", []_C_int{9, 9}},\n\t{\"ddb.radix\", []_C_int{9, 1}},\n\t{\"ddb.tab_stop_width\", []_C_int{9, 4}},\n\t{\"ddb.trigger\", []_C_int{9, 8}},\n\t{\"fs.posix.setuid\", []_C_int{3, 1, 1}},\n\t{\"hw.allowpowerdown\", []_C_int{6, 22}},\n\t{\"hw.byteorder\", []_C_int{6, 4}},\n\t{\"hw.cpuspeed\", []_C_int{6, 12}},\n\t{\"hw.diskcount\", []_C_int{6, 10}},\n\t{\"hw.disknames\", []_C_int{6, 8}},\n\t{\"hw.diskstats\", []_C_int{6, 9}},\n\t{\"hw.machine\", []_C_int{6, 1}},\n\t{\"hw.model\", []_C_int{6, 2}},\n\t{\"hw.ncpu\", []_C_int{6, 3}},\n\t{\"hw.ncpufound\", []_C_int{6, 21}},\n\t{\"hw.ncpuonline\", []_C_int{6, 25}},\n\t{\"hw.pagesize\", []_C_int{6, 7}},\n\t{\"hw.perfpolicy\", []_C_int{6, 23}},\n\t{\"hw.physmem\", []_C_int{6, 19}},\n\t{\"hw.power\", []_C_int{6, 26}},\n\t{\"hw.product\", []_C_int{6, 15}},\n\t{\"hw.serialno\", []_C_int{6, 17}},\n\t{\"hw.setperf\", []_C_int{6, 13}},\n\t{\"hw.smt\", []_C_int{6, 24}},\n\t{\"hw.usermem\", []_C_int{6, 20}},\n\t{\"hw.uuid\", []_C_int{6, 18}},\n\t{\"hw.vendor\", []_C_int{6, 14}},\n\t{\"hw.version\", []_C_int{6, 16}},\n\t{\"kern.allowdt\", []_C_int{1, 65}},\n\t{\"kern.allowkmem\", []_C_int{1, 52}},\n\t{\"kern.argmax\", []_C_int{1, 8}},\n\t{\"kern.audio\", []_C_int{1, 84}},\n\t{\"kern.boottime\", []_C_int{1, 21}},\n\t{\"kern.bufcachepercent\", []_C_int{1, 72}},\n\t{\"kern.ccpu\", []_C_int{1, 45}},\n\t{\"kern.clockrate\", []_C_int{1, 12}},\n\t{\"kern.consbuf\", []_C_int{1, 83}},\n\t{\"kern.consbufsize\", []_C_int{1, 82}},\n\t{\"kern.consdev\", []_C_int{1, 75}},\n\t{\"kern.cp_time\", []_C_int{1, 40}},\n\t{\"kern.cp_time2\", []_C_int{1, 71}},\n\t{\"kern.cpustats\", []_C_int{1, 85}},\n\t{\"kern.domainname\", []_C_int{1, 22}},\n\t{\"kern.file\", []_C_int{1, 73}},\n\t{\"kern.forkstat\", []_C_int{1, 42}},\n\t{\"kern.fscale\", []_C_int{1, 46}},\n\t{\"kern.fsync\", []_C_int{1, 33}},\n\t{\"kern.global_ptrace\", []_C_int{1, 81}},\n\t{\"kern.hostid\", []_C_int{1, 11}},\n\t{\"kern.hostname\", []_C_int{1, 10}},\n\t{\"kern.intrcnt.nintrcnt\", []_C_int{1, 63, 1}},\n\t{\"kern.job_control\", []_C_int{1, 19}},\n\t{\"kern.malloc.buckets\", []_C_int{1, 39, 1}},\n\t{\"kern.malloc.kmemnames\", []_C_int{1, 39, 3}},\n\t{\"kern.maxclusters\", []_C_int{1, 67}},\n\t{\"kern.maxfiles\", []_C_int{1, 7}},\n\t{\"kern.maxlocksperuid\", []_C_int{1, 70}},\n\t{\"kern.maxpartitions\", []_C_int{1, 23}},\n\t{\"kern.maxproc\", []_C_int{1, 6}},\n\t{\"kern.maxthread\", []_C_int{1, 25}},\n\t{\"kern.maxvnodes\", []_C_int{1, 5}},\n\t{\"kern.mbstat\", []_C_int{1, 59}},\n\t{\"kern.msgbuf\", []_C_int{1, 48}},\n\t{\"kern.msgbufsize\", []_C_int{1, 38}},\n\t{\"kern.nchstats\", []_C_int{1, 41}},\n\t{\"kern.netlivelocks\", []_C_int{1, 76}},\n\t{\"kern.nfiles\", []_C_int{1, 56}},\n\t{\"kern.ngroups\", []_C_int{1, 18}},\n\t{\"kern.nosuidcoredump\", []_C_int{1, 32}},\n\t{\"kern.nprocs\", []_C_int{1, 47}},\n\t{\"kern.nthreads\", []_C_int{1, 26}},\n\t{\"kern.numvnodes\", []_C_int{1, 58}},\n\t{\"kern.osrelease\", []_C_int{1, 2}},\n\t{\"kern.osrevision\", []_C_int{1, 3}},\n\t{\"kern.ostype\", []_C_int{1, 1}},\n\t{\"kern.osversion\", []_C_int{1, 27}},\n\t{\"kern.pfstatus\", []_C_int{1, 86}},\n\t{\"kern.pool_debug\", []_C_int{1, 77}},\n\t{\"kern.posix1version\", []_C_int{1, 17}},\n\t{\"kern.proc\", []_C_int{1, 66}},\n\t{\"kern.rawpartition\", []_C_int{1, 24}},\n\t{\"kern.saved_ids\", []_C_int{1, 20}},\n\t{\"kern.securelevel\", []_C_int{1, 9}},\n\t{\"kern.seminfo\", []_C_int{1, 61}},\n\t{\"kern.shminfo\", []_C_int{1, 62}},\n\t{\"kern.somaxconn\", []_C_int{1, 28}},\n\t{\"kern.sominconn\", []_C_int{1, 29}},\n\t{\"kern.splassert\", []_C_int{1, 54}},\n\t{\"kern.stackgap_random\", []_C_int{1, 50}},\n\t{\"kern.sysvipc_info\", []_C_int{1, 51}},\n\t{\"kern.sysvmsg\", []_C_int{1, 34}},\n\t{\"kern.sysvsem\", []_C_int{1, 35}},\n\t{\"kern.sysvshm\", []_C_int{1, 36}},\n\t{\"kern.timecounter.choice\", []_C_int{1, 69, 4}},\n\t{\"kern.timecounter.hardware\", []_C_int{1, 69, 3}},\n\t{\"kern.timecounter.tick\", []_C_int{1, 69, 1}},\n\t{\"kern.timecounter.timestepwarnings\", []_C_int{1, 69, 2}},\n\t{\"kern.timeout_stats\", []_C_int{1, 87}},\n\t{\"kern.tty.tk_cancc\", []_C_int{1, 44, 4}},\n\t{\"kern.tty.tk_nin\", []_C_int{1, 44, 1}},\n\t{\"kern.tty.tk_nout\", []_C_int{1, 44, 2}},\n\t{\"kern.tty.tk_rawcc\", []_C_int{1, 44, 3}},\n\t{\"kern.tty.ttyinfo\", []_C_int{1, 44, 5}},\n\t{\"kern.ttycount\", []_C_int{1, 57}},\n\t{\"kern.utc_offset\", []_C_int{1, 88}},\n\t{\"kern.version\", []_C_int{1, 4}},\n\t{\"kern.video\", []_C_int{1, 89}},\n\t{\"kern.watchdog.auto\", []_C_int{1, 64, 2}},\n\t{\"kern.watchdog.period\", []_C_int{1, 64, 1}},\n\t{\"kern.witnesswatch\", []_C_int{1, 53}},\n\t{\"kern.wxabort\", []_C_int{1, 74}},\n\t{\"net.bpf.bufsize\", []_C_int{4, 31, 1}},\n\t{\"net.bpf.maxbufsize\", []_C_int{4, 31, 2}},\n\t{\"net.inet.ah.enable\", []_C_int{4, 2, 51, 1}},\n\t{\"net.inet.ah.stats\", []_C_int{4, 2, 51, 2}},\n\t{\"net.inet.carp.allow\", []_C_int{4, 2, 112, 1}},\n\t{\"net.inet.carp.log\", []_C_int{4, 2, 112, 3}},\n\t{\"net.inet.carp.preempt\", []_C_int{4, 2, 112, 2}},\n\t{\"net.inet.carp.stats\", []_C_int{4, 2, 112, 4}},\n\t{\"net.inet.divert.recvspace\", []_C_int{4, 2, 258, 1}},\n\t{\"net.inet.divert.sendspace\", []_C_int{4, 2, 258, 2}},\n\t{\"net.inet.divert.stats\", []_C_int{4, 2, 258, 3}},\n\t{\"net.inet.esp.enable\", []_C_int{4, 2, 50, 1}},\n\t{\"net.inet.esp.stats\", []_C_int{4, 2, 50, 4}},\n\t{\"net.inet.esp.udpencap\", []_C_int{4, 2, 50, 2}},\n\t{\"net.inet.esp.udpencap_port\", []_C_int{4, 2, 50, 3}},\n\t{\"net.inet.etherip.allow\", []_C_int{4, 2, 97, 1}},\n\t{\"net.inet.etherip.stats\", []_C_int{4, 2, 97, 2}},\n\t{\"net.inet.gre.allow\", []_C_int{4, 2, 47, 1}},\n\t{\"net.inet.gre.wccp\", []_C_int{4, 2, 47, 2}},\n\t{\"net.inet.icmp.bmcastecho\", []_C_int{4, 2, 1, 2}},\n\t{\"net.inet.icmp.errppslimit\", []_C_int{4, 2, 1, 3}},\n\t{\"net.inet.icmp.maskrepl\", []_C_int{4, 2, 1, 1}},\n\t{\"net.inet.icmp.rediraccept\", []_C_int{4, 2, 1, 4}},\n\t{\"net.inet.icmp.redirtimeout\", []_C_int{4, 2, 1, 5}},\n\t{\"net.inet.icmp.stats\", []_C_int{4, 2, 1, 7}},\n\t{\"net.inet.icmp.tstamprepl\", []_C_int{4, 2, 1, 6}},\n\t{\"net.inet.igmp.stats\", []_C_int{4, 2, 2, 1}},\n\t{\"net.inet.ip.arpdown\", []_C_int{4, 2, 0, 40}},\n\t{\"net.inet.ip.arpqueued\", []_C_int{4, 2, 0, 36}},\n\t{\"net.inet.ip.arptimeout\", []_C_int{4, 2, 0, 39}},\n\t{\"net.inet.ip.encdebug\", []_C_int{4, 2, 0, 12}},\n\t{\"net.inet.ip.forwarding\", []_C_int{4, 2, 0, 1}},\n\t{\"net.inet.ip.ifq.congestion\", []_C_int{4, 2, 0, 30, 4}},\n\t{\"net.inet.ip.ifq.drops\", []_C_int{4, 2, 0, 30, 3}},\n\t{\"net.inet.ip.ifq.len\", []_C_int{4, 2, 0, 30, 1}},\n\t{\"net.inet.ip.ifq.maxlen\", []_C_int{4, 2, 0, 30, 2}},\n\t{\"net.inet.ip.maxqueue\", []_C_int{4, 2, 0, 11}},\n\t{\"net.inet.ip.mforwarding\", []_C_int{4, 2, 0, 31}},\n\t{\"net.inet.ip.mrtmfc\", []_C_int{4, 2, 0, 37}},\n\t{\"net.inet.ip.mrtproto\", []_C_int{4, 2, 0, 34}},\n\t{\"net.inet.ip.mrtstats\", []_C_int{4, 2, 0, 35}},\n\t{\"net.inet.ip.mrtvif\", []_C_int{4, 2, 0, 38}},\n\t{\"net.inet.ip.mtu\", []_C_int{4, 2, 0, 4}},\n\t{\"net.inet.ip.mtudisc\", []_C_int{4, 2, 0, 27}},\n\t{\"net.inet.ip.mtudisctimeout\", []_C_int{4, 2, 0, 28}},\n\t{\"net.inet.ip.multipath\", []_C_int{4, 2, 0, 32}},\n\t{\"net.inet.ip.portfirst\", []_C_int{4, 2, 0, 7}},\n\t{\"net.inet.ip.porthifirst\", []_C_int{4, 2, 0, 9}},\n\t{\"net.inet.ip.porthilast\", []_C_int{4, 2, 0, 10}},\n\t{\"net.inet.ip.portlast\", []_C_int{4, 2, 0, 8}},\n\t{\"net.inet.ip.redirect\", []_C_int{4, 2, 0, 2}},\n\t{\"net.inet.ip.sourceroute\", []_C_int{4, 2, 0, 5}},\n\t{\"net.inet.ip.stats\", []_C_int{4, 2, 0, 33}},\n\t{\"net.inet.ip.ttl\", []_C_int{4, 2, 0, 3}},\n\t{\"net.inet.ipcomp.enable\", []_C_int{4, 2, 108, 1}},\n\t{\"net.inet.ipcomp.stats\", []_C_int{4, 2, 108, 2}},\n\t{\"net.inet.ipip.allow\", []_C_int{4, 2, 4, 1}},\n\t{\"net.inet.ipip.stats\", []_C_int{4, 2, 4, 2}},\n\t{\"net.inet.pfsync.stats\", []_C_int{4, 2, 240, 1}},\n\t{\"net.inet.tcp.ackonpush\", []_C_int{4, 2, 6, 13}},\n\t{\"net.inet.tcp.always_keepalive\", []_C_int{4, 2, 6, 22}},\n\t{\"net.inet.tcp.baddynamic\", []_C_int{4, 2, 6, 6}},\n\t{\"net.inet.tcp.drop\", []_C_int{4, 2, 6, 19}},\n\t{\"net.inet.tcp.ecn\", []_C_int{4, 2, 6, 14}},\n\t{\"net.inet.tcp.ident\", []_C_int{4, 2, 6, 9}},\n\t{\"net.inet.tcp.keepidle\", []_C_int{4, 2, 6, 3}},\n\t{\"net.inet.tcp.keepinittime\", []_C_int{4, 2, 6, 2}},\n\t{\"net.inet.tcp.keepintvl\", []_C_int{4, 2, 6, 4}},\n\t{\"net.inet.tcp.mssdflt\", []_C_int{4, 2, 6, 11}},\n\t{\"net.inet.tcp.reasslimit\", []_C_int{4, 2, 6, 18}},\n\t{\"net.inet.tcp.rfc1323\", []_C_int{4, 2, 6, 1}},\n\t{\"net.inet.tcp.rfc3390\", []_C_int{4, 2, 6, 17}},\n\t{\"net.inet.tcp.rootonly\", []_C_int{4, 2, 6, 24}},\n\t{\"net.inet.tcp.rstppslimit\", []_C_int{4, 2, 6, 12}},\n\t{\"net.inet.tcp.sack\", []_C_int{4, 2, 6, 10}},\n\t{\"net.inet.tcp.sackholelimit\", []_C_int{4, 2, 6, 20}},\n\t{\"net.inet.tcp.slowhz\", []_C_int{4, 2, 6, 5}},\n\t{\"net.inet.tcp.stats\", []_C_int{4, 2, 6, 21}},\n\t{\"net.inet.tcp.synbucketlimit\", []_C_int{4, 2, 6, 16}},\n\t{\"net.inet.tcp.syncachelimit\", []_C_int{4, 2, 6, 15}},\n\t{\"net.inet.tcp.synhashsize\", []_C_int{4, 2, 6, 25}},\n\t{\"net.inet.tcp.synuselimit\", []_C_int{4, 2, 6, 23}},\n\t{\"net.inet.udp.baddynamic\", []_C_int{4, 2, 17, 2}},\n\t{\"net.inet.udp.checksum\", []_C_int{4, 2, 17, 1}},\n\t{\"net.inet.udp.recvspace\", []_C_int{4, 2, 17, 3}},\n\t{\"net.inet.udp.rootonly\", []_C_int{4, 2, 17, 6}},\n\t{\"net.inet.udp.sendspace\", []_C_int{4, 2, 17, 4}},\n\t{\"net.inet.udp.stats\", []_C_int{4, 2, 17, 5}},\n\t{\"net.inet6.divert.recvspace\", []_C_int{4, 24, 86, 1}},\n\t{\"net.inet6.divert.sendspace\", []_C_int{4, 24, 86, 2}},\n\t{\"net.inet6.divert.stats\", []_C_int{4, 24, 86, 3}},\n\t{\"net.inet6.icmp6.errppslimit\", []_C_int{4, 24, 30, 14}},\n\t{\"net.inet6.icmp6.mtudisc_hiwat\", []_C_int{4, 24, 30, 16}},\n\t{\"net.inet6.icmp6.mtudisc_lowat\", []_C_int{4, 24, 30, 17}},\n\t{\"net.inet6.icmp6.nd6_debug\", []_C_int{4, 24, 30, 18}},\n\t{\"net.inet6.icmp6.nd6_delay\", []_C_int{4, 24, 30, 8}},\n\t{\"net.inet6.icmp6.nd6_maxnudhint\", []_C_int{4, 24, 30, 15}},\n\t{\"net.inet6.icmp6.nd6_mmaxtries\", []_C_int{4, 24, 30, 10}},\n\t{\"net.inet6.icmp6.nd6_umaxtries\", []_C_int{4, 24, 30, 9}},\n\t{\"net.inet6.icmp6.redirtimeout\", []_C_int{4, 24, 30, 3}},\n\t{\"net.inet6.ip6.auto_flowlabel\", []_C_int{4, 24, 17, 17}},\n\t{\"net.inet6.ip6.dad_count\", []_C_int{4, 24, 17, 16}},\n\t{\"net.inet6.ip6.dad_pending\", []_C_int{4, 24, 17, 49}},\n\t{\"net.inet6.ip6.defmcasthlim\", []_C_int{4, 24, 17, 18}},\n\t{\"net.inet6.ip6.forwarding\", []_C_int{4, 24, 17, 1}},\n\t{\"net.inet6.ip6.forwsrcrt\", []_C_int{4, 24, 17, 5}},\n\t{\"net.inet6.ip6.hdrnestlimit\", []_C_int{4, 24, 17, 15}},\n\t{\"net.inet6.ip6.hlim\", []_C_int{4, 24, 17, 3}},\n\t{\"net.inet6.ip6.log_interval\", []_C_int{4, 24, 17, 14}},\n\t{\"net.inet6.ip6.maxdynroutes\", []_C_int{4, 24, 17, 48}},\n\t{\"net.inet6.ip6.maxfragpackets\", []_C_int{4, 24, 17, 9}},\n\t{\"net.inet6.ip6.maxfrags\", []_C_int{4, 24, 17, 41}},\n\t{\"net.inet6.ip6.mforwarding\", []_C_int{4, 24, 17, 42}},\n\t{\"net.inet6.ip6.mrtmfc\", []_C_int{4, 24, 17, 53}},\n\t{\"net.inet6.ip6.mrtmif\", []_C_int{4, 24, 17, 52}},\n\t{\"net.inet6.ip6.mrtproto\", []_C_int{4, 24, 17, 8}},\n\t{\"net.inet6.ip6.mtudisctimeout\", []_C_int{4, 24, 17, 50}},\n\t{\"net.inet6.ip6.multicast_mtudisc\", []_C_int{4, 24, 17, 44}},\n\t{\"net.inet6.ip6.multipath\", []_C_int{4, 24, 17, 43}},\n\t{\"net.inet6.ip6.neighborgcthresh\", []_C_int{4, 24, 17, 45}},\n\t{\"net.inet6.ip6.redirect\", []_C_int{4, 24, 17, 2}},\n\t{\"net.inet6.ip6.soiikey\", []_C_int{4, 24, 17, 54}},\n\t{\"net.inet6.ip6.sourcecheck\", []_C_int{4, 24, 17, 10}},\n\t{\"net.inet6.ip6.sourcecheck_logint\", []_C_int{4, 24, 17, 11}},\n\t{\"net.inet6.ip6.use_deprecated\", []_C_int{4, 24, 17, 21}},\n\t{\"net.key.sadb_dump\", []_C_int{4, 30, 1}},\n\t{\"net.key.spd_dump\", []_C_int{4, 30, 2}},\n\t{\"net.mpls.ifq.congestion\", []_C_int{4, 33, 3, 4}},\n\t{\"net.mpls.ifq.drops\", []_C_int{4, 33, 3, 3}},\n\t{\"net.mpls.ifq.len\", []_C_int{4, 33, 3, 1}},\n\t{\"net.mpls.ifq.maxlen\", []_C_int{4, 33, 3, 2}},\n\t{\"net.mpls.mapttl_ip\", []_C_int{4, 33, 5}},\n\t{\"net.mpls.mapttl_ip6\", []_C_int{4, 33, 6}},\n\t{\"net.mpls.ttl\", []_C_int{4, 33, 2}},\n\t{\"net.pflow.stats\", []_C_int{4, 34, 1}},\n\t{\"net.pipex.enable\", []_C_int{4, 35, 1}},\n\t{\"vm.anonmin\", []_C_int{2, 7}},\n\t{\"vm.loadavg\", []_C_int{2, 2}},\n\t{\"vm.malloc_conf\", []_C_int{2, 12}},\n\t{\"vm.maxslp\", []_C_int{2, 10}},\n\t{\"vm.nkmempages\", []_C_int{2, 6}},\n\t{\"vm.psstrings\", []_C_int{2, 3}},\n\t{\"vm.swapencrypt.enable\", []_C_int{2, 5, 0}},\n\t{\"vm.swapencrypt.keyscreated\", []_C_int{2, 5, 1}},\n\t{\"vm.swapencrypt.keysdeleted\", []_C_int{2, 5, 2}},\n\t{\"vm.uspace\", []_C_int{2, 11}},\n\t{\"vm.uvmexp\", []_C_int{2, 4}},\n\t{\"vm.vmmeter\", []_C_int{2, 1}},\n\t{\"vm.vnodemin\", []_C_int{2, 9}},\n\t{\"vm.vtextmin\", []_C_int{2, 8}},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysctl_openbsd_riscv64.go",
    "content": "// go run mksysctl_openbsd.go\n// Code generated by the command above; DO NOT EDIT.\n\n//go:build riscv64 && openbsd\n\npackage unix\n\ntype mibentry struct {\n\tctlname string\n\tctloid  []_C_int\n}\n\nvar sysctlMib = []mibentry{\n\t{\"ddb.console\", []_C_int{9, 6}},\n\t{\"ddb.log\", []_C_int{9, 7}},\n\t{\"ddb.max_line\", []_C_int{9, 3}},\n\t{\"ddb.max_width\", []_C_int{9, 2}},\n\t{\"ddb.panic\", []_C_int{9, 5}},\n\t{\"ddb.profile\", []_C_int{9, 9}},\n\t{\"ddb.radix\", []_C_int{9, 1}},\n\t{\"ddb.tab_stop_width\", []_C_int{9, 4}},\n\t{\"ddb.trigger\", []_C_int{9, 8}},\n\t{\"fs.posix.setuid\", []_C_int{3, 1, 1}},\n\t{\"hw.allowpowerdown\", []_C_int{6, 22}},\n\t{\"hw.byteorder\", []_C_int{6, 4}},\n\t{\"hw.cpuspeed\", []_C_int{6, 12}},\n\t{\"hw.diskcount\", []_C_int{6, 10}},\n\t{\"hw.disknames\", []_C_int{6, 8}},\n\t{\"hw.diskstats\", []_C_int{6, 9}},\n\t{\"hw.machine\", []_C_int{6, 1}},\n\t{\"hw.model\", []_C_int{6, 2}},\n\t{\"hw.ncpu\", []_C_int{6, 3}},\n\t{\"hw.ncpufound\", []_C_int{6, 21}},\n\t{\"hw.ncpuonline\", []_C_int{6, 25}},\n\t{\"hw.pagesize\", []_C_int{6, 7}},\n\t{\"hw.perfpolicy\", []_C_int{6, 23}},\n\t{\"hw.physmem\", []_C_int{6, 19}},\n\t{\"hw.power\", []_C_int{6, 26}},\n\t{\"hw.product\", []_C_int{6, 15}},\n\t{\"hw.serialno\", []_C_int{6, 17}},\n\t{\"hw.setperf\", []_C_int{6, 13}},\n\t{\"hw.smt\", []_C_int{6, 24}},\n\t{\"hw.usermem\", []_C_int{6, 20}},\n\t{\"hw.uuid\", []_C_int{6, 18}},\n\t{\"hw.vendor\", []_C_int{6, 14}},\n\t{\"hw.version\", []_C_int{6, 16}},\n\t{\"kern.allowdt\", []_C_int{1, 65}},\n\t{\"kern.allowkmem\", []_C_int{1, 52}},\n\t{\"kern.argmax\", []_C_int{1, 8}},\n\t{\"kern.audio\", []_C_int{1, 84}},\n\t{\"kern.boottime\", []_C_int{1, 21}},\n\t{\"kern.bufcachepercent\", []_C_int{1, 72}},\n\t{\"kern.ccpu\", []_C_int{1, 45}},\n\t{\"kern.clockrate\", []_C_int{1, 12}},\n\t{\"kern.consbuf\", []_C_int{1, 83}},\n\t{\"kern.consbufsize\", []_C_int{1, 82}},\n\t{\"kern.consdev\", []_C_int{1, 75}},\n\t{\"kern.cp_time\", []_C_int{1, 40}},\n\t{\"kern.cp_time2\", []_C_int{1, 71}},\n\t{\"kern.cpustats\", []_C_int{1, 85}},\n\t{\"kern.domainname\", []_C_int{1, 22}},\n\t{\"kern.file\", []_C_int{1, 73}},\n\t{\"kern.forkstat\", []_C_int{1, 42}},\n\t{\"kern.fscale\", []_C_int{1, 46}},\n\t{\"kern.fsync\", []_C_int{1, 33}},\n\t{\"kern.global_ptrace\", []_C_int{1, 81}},\n\t{\"kern.hostid\", []_C_int{1, 11}},\n\t{\"kern.hostname\", []_C_int{1, 10}},\n\t{\"kern.intrcnt.nintrcnt\", []_C_int{1, 63, 1}},\n\t{\"kern.job_control\", []_C_int{1, 19}},\n\t{\"kern.malloc.buckets\", []_C_int{1, 39, 1}},\n\t{\"kern.malloc.kmemnames\", []_C_int{1, 39, 3}},\n\t{\"kern.maxclusters\", []_C_int{1, 67}},\n\t{\"kern.maxfiles\", []_C_int{1, 7}},\n\t{\"kern.maxlocksperuid\", []_C_int{1, 70}},\n\t{\"kern.maxpartitions\", []_C_int{1, 23}},\n\t{\"kern.maxproc\", []_C_int{1, 6}},\n\t{\"kern.maxthread\", []_C_int{1, 25}},\n\t{\"kern.maxvnodes\", []_C_int{1, 5}},\n\t{\"kern.mbstat\", []_C_int{1, 59}},\n\t{\"kern.msgbuf\", []_C_int{1, 48}},\n\t{\"kern.msgbufsize\", []_C_int{1, 38}},\n\t{\"kern.nchstats\", []_C_int{1, 41}},\n\t{\"kern.netlivelocks\", []_C_int{1, 76}},\n\t{\"kern.nfiles\", []_C_int{1, 56}},\n\t{\"kern.ngroups\", []_C_int{1, 18}},\n\t{\"kern.nosuidcoredump\", []_C_int{1, 32}},\n\t{\"kern.nprocs\", []_C_int{1, 47}},\n\t{\"kern.nselcoll\", []_C_int{1, 43}},\n\t{\"kern.nthreads\", []_C_int{1, 26}},\n\t{\"kern.numvnodes\", []_C_int{1, 58}},\n\t{\"kern.osrelease\", []_C_int{1, 2}},\n\t{\"kern.osrevision\", []_C_int{1, 3}},\n\t{\"kern.ostype\", []_C_int{1, 1}},\n\t{\"kern.osversion\", []_C_int{1, 27}},\n\t{\"kern.pfstatus\", []_C_int{1, 86}},\n\t{\"kern.pool_debug\", []_C_int{1, 77}},\n\t{\"kern.posix1version\", []_C_int{1, 17}},\n\t{\"kern.proc\", []_C_int{1, 66}},\n\t{\"kern.rawpartition\", []_C_int{1, 24}},\n\t{\"kern.saved_ids\", []_C_int{1, 20}},\n\t{\"kern.securelevel\", []_C_int{1, 9}},\n\t{\"kern.seminfo\", []_C_int{1, 61}},\n\t{\"kern.shminfo\", []_C_int{1, 62}},\n\t{\"kern.somaxconn\", []_C_int{1, 28}},\n\t{\"kern.sominconn\", []_C_int{1, 29}},\n\t{\"kern.splassert\", []_C_int{1, 54}},\n\t{\"kern.stackgap_random\", []_C_int{1, 50}},\n\t{\"kern.sysvipc_info\", []_C_int{1, 51}},\n\t{\"kern.sysvmsg\", []_C_int{1, 34}},\n\t{\"kern.sysvsem\", []_C_int{1, 35}},\n\t{\"kern.sysvshm\", []_C_int{1, 36}},\n\t{\"kern.timecounter.choice\", []_C_int{1, 69, 4}},\n\t{\"kern.timecounter.hardware\", []_C_int{1, 69, 3}},\n\t{\"kern.timecounter.tick\", []_C_int{1, 69, 1}},\n\t{\"kern.timecounter.timestepwarnings\", []_C_int{1, 69, 2}},\n\t{\"kern.timeout_stats\", []_C_int{1, 87}},\n\t{\"kern.tty.tk_cancc\", []_C_int{1, 44, 4}},\n\t{\"kern.tty.tk_nin\", []_C_int{1, 44, 1}},\n\t{\"kern.tty.tk_nout\", []_C_int{1, 44, 2}},\n\t{\"kern.tty.tk_rawcc\", []_C_int{1, 44, 3}},\n\t{\"kern.tty.ttyinfo\", []_C_int{1, 44, 5}},\n\t{\"kern.ttycount\", []_C_int{1, 57}},\n\t{\"kern.utc_offset\", []_C_int{1, 88}},\n\t{\"kern.version\", []_C_int{1, 4}},\n\t{\"kern.video\", []_C_int{1, 89}},\n\t{\"kern.watchdog.auto\", []_C_int{1, 64, 2}},\n\t{\"kern.watchdog.period\", []_C_int{1, 64, 1}},\n\t{\"kern.witnesswatch\", []_C_int{1, 53}},\n\t{\"kern.wxabort\", []_C_int{1, 74}},\n\t{\"net.bpf.bufsize\", []_C_int{4, 31, 1}},\n\t{\"net.bpf.maxbufsize\", []_C_int{4, 31, 2}},\n\t{\"net.inet.ah.enable\", []_C_int{4, 2, 51, 1}},\n\t{\"net.inet.ah.stats\", []_C_int{4, 2, 51, 2}},\n\t{\"net.inet.carp.allow\", []_C_int{4, 2, 112, 1}},\n\t{\"net.inet.carp.log\", []_C_int{4, 2, 112, 3}},\n\t{\"net.inet.carp.preempt\", []_C_int{4, 2, 112, 2}},\n\t{\"net.inet.carp.stats\", []_C_int{4, 2, 112, 4}},\n\t{\"net.inet.divert.recvspace\", []_C_int{4, 2, 258, 1}},\n\t{\"net.inet.divert.sendspace\", []_C_int{4, 2, 258, 2}},\n\t{\"net.inet.divert.stats\", []_C_int{4, 2, 258, 3}},\n\t{\"net.inet.esp.enable\", []_C_int{4, 2, 50, 1}},\n\t{\"net.inet.esp.stats\", []_C_int{4, 2, 50, 4}},\n\t{\"net.inet.esp.udpencap\", []_C_int{4, 2, 50, 2}},\n\t{\"net.inet.esp.udpencap_port\", []_C_int{4, 2, 50, 3}},\n\t{\"net.inet.etherip.allow\", []_C_int{4, 2, 97, 1}},\n\t{\"net.inet.etherip.stats\", []_C_int{4, 2, 97, 2}},\n\t{\"net.inet.gre.allow\", []_C_int{4, 2, 47, 1}},\n\t{\"net.inet.gre.wccp\", []_C_int{4, 2, 47, 2}},\n\t{\"net.inet.icmp.bmcastecho\", []_C_int{4, 2, 1, 2}},\n\t{\"net.inet.icmp.errppslimit\", []_C_int{4, 2, 1, 3}},\n\t{\"net.inet.icmp.maskrepl\", []_C_int{4, 2, 1, 1}},\n\t{\"net.inet.icmp.rediraccept\", []_C_int{4, 2, 1, 4}},\n\t{\"net.inet.icmp.redirtimeout\", []_C_int{4, 2, 1, 5}},\n\t{\"net.inet.icmp.stats\", []_C_int{4, 2, 1, 7}},\n\t{\"net.inet.icmp.tstamprepl\", []_C_int{4, 2, 1, 6}},\n\t{\"net.inet.igmp.stats\", []_C_int{4, 2, 2, 1}},\n\t{\"net.inet.ip.arpdown\", []_C_int{4, 2, 0, 40}},\n\t{\"net.inet.ip.arpqueued\", []_C_int{4, 2, 0, 36}},\n\t{\"net.inet.ip.arptimeout\", []_C_int{4, 2, 0, 39}},\n\t{\"net.inet.ip.encdebug\", []_C_int{4, 2, 0, 12}},\n\t{\"net.inet.ip.forwarding\", []_C_int{4, 2, 0, 1}},\n\t{\"net.inet.ip.ifq.congestion\", []_C_int{4, 2, 0, 30, 4}},\n\t{\"net.inet.ip.ifq.drops\", []_C_int{4, 2, 0, 30, 3}},\n\t{\"net.inet.ip.ifq.len\", []_C_int{4, 2, 0, 30, 1}},\n\t{\"net.inet.ip.ifq.maxlen\", []_C_int{4, 2, 0, 30, 2}},\n\t{\"net.inet.ip.maxqueue\", []_C_int{4, 2, 0, 11}},\n\t{\"net.inet.ip.mforwarding\", []_C_int{4, 2, 0, 31}},\n\t{\"net.inet.ip.mrtmfc\", []_C_int{4, 2, 0, 37}},\n\t{\"net.inet.ip.mrtproto\", []_C_int{4, 2, 0, 34}},\n\t{\"net.inet.ip.mrtstats\", []_C_int{4, 2, 0, 35}},\n\t{\"net.inet.ip.mrtvif\", []_C_int{4, 2, 0, 38}},\n\t{\"net.inet.ip.mtu\", []_C_int{4, 2, 0, 4}},\n\t{\"net.inet.ip.mtudisc\", []_C_int{4, 2, 0, 27}},\n\t{\"net.inet.ip.mtudisctimeout\", []_C_int{4, 2, 0, 28}},\n\t{\"net.inet.ip.multipath\", []_C_int{4, 2, 0, 32}},\n\t{\"net.inet.ip.portfirst\", []_C_int{4, 2, 0, 7}},\n\t{\"net.inet.ip.porthifirst\", []_C_int{4, 2, 0, 9}},\n\t{\"net.inet.ip.porthilast\", []_C_int{4, 2, 0, 10}},\n\t{\"net.inet.ip.portlast\", []_C_int{4, 2, 0, 8}},\n\t{\"net.inet.ip.redirect\", []_C_int{4, 2, 0, 2}},\n\t{\"net.inet.ip.sourceroute\", []_C_int{4, 2, 0, 5}},\n\t{\"net.inet.ip.stats\", []_C_int{4, 2, 0, 33}},\n\t{\"net.inet.ip.ttl\", []_C_int{4, 2, 0, 3}},\n\t{\"net.inet.ipcomp.enable\", []_C_int{4, 2, 108, 1}},\n\t{\"net.inet.ipcomp.stats\", []_C_int{4, 2, 108, 2}},\n\t{\"net.inet.ipip.allow\", []_C_int{4, 2, 4, 1}},\n\t{\"net.inet.ipip.stats\", []_C_int{4, 2, 4, 2}},\n\t{\"net.inet.pfsync.stats\", []_C_int{4, 2, 240, 1}},\n\t{\"net.inet.tcp.ackonpush\", []_C_int{4, 2, 6, 13}},\n\t{\"net.inet.tcp.always_keepalive\", []_C_int{4, 2, 6, 22}},\n\t{\"net.inet.tcp.baddynamic\", []_C_int{4, 2, 6, 6}},\n\t{\"net.inet.tcp.drop\", []_C_int{4, 2, 6, 19}},\n\t{\"net.inet.tcp.ecn\", []_C_int{4, 2, 6, 14}},\n\t{\"net.inet.tcp.ident\", []_C_int{4, 2, 6, 9}},\n\t{\"net.inet.tcp.keepidle\", []_C_int{4, 2, 6, 3}},\n\t{\"net.inet.tcp.keepinittime\", []_C_int{4, 2, 6, 2}},\n\t{\"net.inet.tcp.keepintvl\", []_C_int{4, 2, 6, 4}},\n\t{\"net.inet.tcp.mssdflt\", []_C_int{4, 2, 6, 11}},\n\t{\"net.inet.tcp.reasslimit\", []_C_int{4, 2, 6, 18}},\n\t{\"net.inet.tcp.rfc1323\", []_C_int{4, 2, 6, 1}},\n\t{\"net.inet.tcp.rfc3390\", []_C_int{4, 2, 6, 17}},\n\t{\"net.inet.tcp.rootonly\", []_C_int{4, 2, 6, 24}},\n\t{\"net.inet.tcp.rstppslimit\", []_C_int{4, 2, 6, 12}},\n\t{\"net.inet.tcp.sack\", []_C_int{4, 2, 6, 10}},\n\t{\"net.inet.tcp.sackholelimit\", []_C_int{4, 2, 6, 20}},\n\t{\"net.inet.tcp.slowhz\", []_C_int{4, 2, 6, 5}},\n\t{\"net.inet.tcp.stats\", []_C_int{4, 2, 6, 21}},\n\t{\"net.inet.tcp.synbucketlimit\", []_C_int{4, 2, 6, 16}},\n\t{\"net.inet.tcp.syncachelimit\", []_C_int{4, 2, 6, 15}},\n\t{\"net.inet.tcp.synhashsize\", []_C_int{4, 2, 6, 25}},\n\t{\"net.inet.tcp.synuselimit\", []_C_int{4, 2, 6, 23}},\n\t{\"net.inet.udp.baddynamic\", []_C_int{4, 2, 17, 2}},\n\t{\"net.inet.udp.checksum\", []_C_int{4, 2, 17, 1}},\n\t{\"net.inet.udp.recvspace\", []_C_int{4, 2, 17, 3}},\n\t{\"net.inet.udp.rootonly\", []_C_int{4, 2, 17, 6}},\n\t{\"net.inet.udp.sendspace\", []_C_int{4, 2, 17, 4}},\n\t{\"net.inet.udp.stats\", []_C_int{4, 2, 17, 5}},\n\t{\"net.inet6.divert.recvspace\", []_C_int{4, 24, 86, 1}},\n\t{\"net.inet6.divert.sendspace\", []_C_int{4, 24, 86, 2}},\n\t{\"net.inet6.divert.stats\", []_C_int{4, 24, 86, 3}},\n\t{\"net.inet6.icmp6.errppslimit\", []_C_int{4, 24, 30, 14}},\n\t{\"net.inet6.icmp6.mtudisc_hiwat\", []_C_int{4, 24, 30, 16}},\n\t{\"net.inet6.icmp6.mtudisc_lowat\", []_C_int{4, 24, 30, 17}},\n\t{\"net.inet6.icmp6.nd6_debug\", []_C_int{4, 24, 30, 18}},\n\t{\"net.inet6.icmp6.nd6_delay\", []_C_int{4, 24, 30, 8}},\n\t{\"net.inet6.icmp6.nd6_maxnudhint\", []_C_int{4, 24, 30, 15}},\n\t{\"net.inet6.icmp6.nd6_mmaxtries\", []_C_int{4, 24, 30, 10}},\n\t{\"net.inet6.icmp6.nd6_umaxtries\", []_C_int{4, 24, 30, 9}},\n\t{\"net.inet6.icmp6.redirtimeout\", []_C_int{4, 24, 30, 3}},\n\t{\"net.inet6.ip6.auto_flowlabel\", []_C_int{4, 24, 17, 17}},\n\t{\"net.inet6.ip6.dad_count\", []_C_int{4, 24, 17, 16}},\n\t{\"net.inet6.ip6.dad_pending\", []_C_int{4, 24, 17, 49}},\n\t{\"net.inet6.ip6.defmcasthlim\", []_C_int{4, 24, 17, 18}},\n\t{\"net.inet6.ip6.forwarding\", []_C_int{4, 24, 17, 1}},\n\t{\"net.inet6.ip6.forwsrcrt\", []_C_int{4, 24, 17, 5}},\n\t{\"net.inet6.ip6.hdrnestlimit\", []_C_int{4, 24, 17, 15}},\n\t{\"net.inet6.ip6.hlim\", []_C_int{4, 24, 17, 3}},\n\t{\"net.inet6.ip6.log_interval\", []_C_int{4, 24, 17, 14}},\n\t{\"net.inet6.ip6.maxdynroutes\", []_C_int{4, 24, 17, 48}},\n\t{\"net.inet6.ip6.maxfragpackets\", []_C_int{4, 24, 17, 9}},\n\t{\"net.inet6.ip6.maxfrags\", []_C_int{4, 24, 17, 41}},\n\t{\"net.inet6.ip6.mforwarding\", []_C_int{4, 24, 17, 42}},\n\t{\"net.inet6.ip6.mrtmfc\", []_C_int{4, 24, 17, 53}},\n\t{\"net.inet6.ip6.mrtmif\", []_C_int{4, 24, 17, 52}},\n\t{\"net.inet6.ip6.mrtproto\", []_C_int{4, 24, 17, 8}},\n\t{\"net.inet6.ip6.mtudisctimeout\", []_C_int{4, 24, 17, 50}},\n\t{\"net.inet6.ip6.multicast_mtudisc\", []_C_int{4, 24, 17, 44}},\n\t{\"net.inet6.ip6.multipath\", []_C_int{4, 24, 17, 43}},\n\t{\"net.inet6.ip6.neighborgcthresh\", []_C_int{4, 24, 17, 45}},\n\t{\"net.inet6.ip6.redirect\", []_C_int{4, 24, 17, 2}},\n\t{\"net.inet6.ip6.soiikey\", []_C_int{4, 24, 17, 54}},\n\t{\"net.inet6.ip6.sourcecheck\", []_C_int{4, 24, 17, 10}},\n\t{\"net.inet6.ip6.sourcecheck_logint\", []_C_int{4, 24, 17, 11}},\n\t{\"net.inet6.ip6.use_deprecated\", []_C_int{4, 24, 17, 21}},\n\t{\"net.key.sadb_dump\", []_C_int{4, 30, 1}},\n\t{\"net.key.spd_dump\", []_C_int{4, 30, 2}},\n\t{\"net.mpls.ifq.congestion\", []_C_int{4, 33, 3, 4}},\n\t{\"net.mpls.ifq.drops\", []_C_int{4, 33, 3, 3}},\n\t{\"net.mpls.ifq.len\", []_C_int{4, 33, 3, 1}},\n\t{\"net.mpls.ifq.maxlen\", []_C_int{4, 33, 3, 2}},\n\t{\"net.mpls.mapttl_ip\", []_C_int{4, 33, 5}},\n\t{\"net.mpls.mapttl_ip6\", []_C_int{4, 33, 6}},\n\t{\"net.mpls.ttl\", []_C_int{4, 33, 2}},\n\t{\"net.pflow.stats\", []_C_int{4, 34, 1}},\n\t{\"net.pipex.enable\", []_C_int{4, 35, 1}},\n\t{\"vm.anonmin\", []_C_int{2, 7}},\n\t{\"vm.loadavg\", []_C_int{2, 2}},\n\t{\"vm.malloc_conf\", []_C_int{2, 12}},\n\t{\"vm.maxslp\", []_C_int{2, 10}},\n\t{\"vm.nkmempages\", []_C_int{2, 6}},\n\t{\"vm.psstrings\", []_C_int{2, 3}},\n\t{\"vm.swapencrypt.enable\", []_C_int{2, 5, 0}},\n\t{\"vm.swapencrypt.keyscreated\", []_C_int{2, 5, 1}},\n\t{\"vm.swapencrypt.keysdeleted\", []_C_int{2, 5, 2}},\n\t{\"vm.uspace\", []_C_int{2, 11}},\n\t{\"vm.uvmexp\", []_C_int{2, 4}},\n\t{\"vm.vmmeter\", []_C_int{2, 1}},\n\t{\"vm.vnodemin\", []_C_int{2, 9}},\n\t{\"vm.vtextmin\", []_C_int{2, 8}},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go",
    "content": "// go run mksysnum.go /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/sys/syscall.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && darwin\n\npackage unix\n\n// Deprecated: Use libSystem wrappers instead of direct syscalls.\nconst (\n\tSYS_SYSCALL                        = 0\n\tSYS_EXIT                           = 1\n\tSYS_FORK                           = 2\n\tSYS_READ                           = 3\n\tSYS_WRITE                          = 4\n\tSYS_OPEN                           = 5\n\tSYS_CLOSE                          = 6\n\tSYS_WAIT4                          = 7\n\tSYS_LINK                           = 9\n\tSYS_UNLINK                         = 10\n\tSYS_CHDIR                          = 12\n\tSYS_FCHDIR                         = 13\n\tSYS_MKNOD                          = 14\n\tSYS_CHMOD                          = 15\n\tSYS_CHOWN                          = 16\n\tSYS_GETFSSTAT                      = 18\n\tSYS_GETPID                         = 20\n\tSYS_SETUID                         = 23\n\tSYS_GETUID                         = 24\n\tSYS_GETEUID                        = 25\n\tSYS_PTRACE                         = 26\n\tSYS_RECVMSG                        = 27\n\tSYS_SENDMSG                        = 28\n\tSYS_RECVFROM                       = 29\n\tSYS_ACCEPT                         = 30\n\tSYS_GETPEERNAME                    = 31\n\tSYS_GETSOCKNAME                    = 32\n\tSYS_ACCESS                         = 33\n\tSYS_CHFLAGS                        = 34\n\tSYS_FCHFLAGS                       = 35\n\tSYS_SYNC                           = 36\n\tSYS_KILL                           = 37\n\tSYS_GETPPID                        = 39\n\tSYS_DUP                            = 41\n\tSYS_PIPE                           = 42\n\tSYS_GETEGID                        = 43\n\tSYS_SIGACTION                      = 46\n\tSYS_GETGID                         = 47\n\tSYS_SIGPROCMASK                    = 48\n\tSYS_GETLOGIN                       = 49\n\tSYS_SETLOGIN                       = 50\n\tSYS_ACCT                           = 51\n\tSYS_SIGPENDING                     = 52\n\tSYS_SIGALTSTACK                    = 53\n\tSYS_IOCTL                          = 54\n\tSYS_REBOOT                         = 55\n\tSYS_REVOKE                         = 56\n\tSYS_SYMLINK                        = 57\n\tSYS_READLINK                       = 58\n\tSYS_EXECVE                         = 59\n\tSYS_UMASK                          = 60\n\tSYS_CHROOT                         = 61\n\tSYS_MSYNC                          = 65\n\tSYS_VFORK                          = 66\n\tSYS_MUNMAP                         = 73\n\tSYS_MPROTECT                       = 74\n\tSYS_MADVISE                        = 75\n\tSYS_MINCORE                        = 78\n\tSYS_GETGROUPS                      = 79\n\tSYS_SETGROUPS                      = 80\n\tSYS_GETPGRP                        = 81\n\tSYS_SETPGID                        = 82\n\tSYS_SETITIMER                      = 83\n\tSYS_SWAPON                         = 85\n\tSYS_GETITIMER                      = 86\n\tSYS_GETDTABLESIZE                  = 89\n\tSYS_DUP2                           = 90\n\tSYS_FCNTL                          = 92\n\tSYS_SELECT                         = 93\n\tSYS_FSYNC                          = 95\n\tSYS_SETPRIORITY                    = 96\n\tSYS_SOCKET                         = 97\n\tSYS_CONNECT                        = 98\n\tSYS_GETPRIORITY                    = 100\n\tSYS_BIND                           = 104\n\tSYS_SETSOCKOPT                     = 105\n\tSYS_LISTEN                         = 106\n\tSYS_SIGSUSPEND                     = 111\n\tSYS_GETTIMEOFDAY                   = 116\n\tSYS_GETRUSAGE                      = 117\n\tSYS_GETSOCKOPT                     = 118\n\tSYS_READV                          = 120\n\tSYS_WRITEV                         = 121\n\tSYS_SETTIMEOFDAY                   = 122\n\tSYS_FCHOWN                         = 123\n\tSYS_FCHMOD                         = 124\n\tSYS_SETREUID                       = 126\n\tSYS_SETREGID                       = 127\n\tSYS_RENAME                         = 128\n\tSYS_FLOCK                          = 131\n\tSYS_MKFIFO                         = 132\n\tSYS_SENDTO                         = 133\n\tSYS_SHUTDOWN                       = 134\n\tSYS_SOCKETPAIR                     = 135\n\tSYS_MKDIR                          = 136\n\tSYS_RMDIR                          = 137\n\tSYS_UTIMES                         = 138\n\tSYS_FUTIMES                        = 139\n\tSYS_ADJTIME                        = 140\n\tSYS_GETHOSTUUID                    = 142\n\tSYS_SETSID                         = 147\n\tSYS_GETPGID                        = 151\n\tSYS_SETPRIVEXEC                    = 152\n\tSYS_PREAD                          = 153\n\tSYS_PWRITE                         = 154\n\tSYS_NFSSVC                         = 155\n\tSYS_STATFS                         = 157\n\tSYS_FSTATFS                        = 158\n\tSYS_UNMOUNT                        = 159\n\tSYS_GETFH                          = 161\n\tSYS_QUOTACTL                       = 165\n\tSYS_MOUNT                          = 167\n\tSYS_CSOPS                          = 169\n\tSYS_CSOPS_AUDITTOKEN               = 170\n\tSYS_WAITID                         = 173\n\tSYS_KDEBUG_TYPEFILTER              = 177\n\tSYS_KDEBUG_TRACE_STRING            = 178\n\tSYS_KDEBUG_TRACE64                 = 179\n\tSYS_KDEBUG_TRACE                   = 180\n\tSYS_SETGID                         = 181\n\tSYS_SETEGID                        = 182\n\tSYS_SETEUID                        = 183\n\tSYS_SIGRETURN                      = 184\n\tSYS_THREAD_SELFCOUNTS              = 186\n\tSYS_FDATASYNC                      = 187\n\tSYS_STAT                           = 188\n\tSYS_FSTAT                          = 189\n\tSYS_LSTAT                          = 190\n\tSYS_PATHCONF                       = 191\n\tSYS_FPATHCONF                      = 192\n\tSYS_GETRLIMIT                      = 194\n\tSYS_SETRLIMIT                      = 195\n\tSYS_GETDIRENTRIES                  = 196\n\tSYS_MMAP                           = 197\n\tSYS_LSEEK                          = 199\n\tSYS_TRUNCATE                       = 200\n\tSYS_FTRUNCATE                      = 201\n\tSYS_SYSCTL                         = 202\n\tSYS_MLOCK                          = 203\n\tSYS_MUNLOCK                        = 204\n\tSYS_UNDELETE                       = 205\n\tSYS_OPEN_DPROTECTED_NP             = 216\n\tSYS_GETATTRLIST                    = 220\n\tSYS_SETATTRLIST                    = 221\n\tSYS_GETDIRENTRIESATTR              = 222\n\tSYS_EXCHANGEDATA                   = 223\n\tSYS_SEARCHFS                       = 225\n\tSYS_DELETE                         = 226\n\tSYS_COPYFILE                       = 227\n\tSYS_FGETATTRLIST                   = 228\n\tSYS_FSETATTRLIST                   = 229\n\tSYS_POLL                           = 230\n\tSYS_WATCHEVENT                     = 231\n\tSYS_WAITEVENT                      = 232\n\tSYS_MODWATCH                       = 233\n\tSYS_GETXATTR                       = 234\n\tSYS_FGETXATTR                      = 235\n\tSYS_SETXATTR                       = 236\n\tSYS_FSETXATTR                      = 237\n\tSYS_REMOVEXATTR                    = 238\n\tSYS_FREMOVEXATTR                   = 239\n\tSYS_LISTXATTR                      = 240\n\tSYS_FLISTXATTR                     = 241\n\tSYS_FSCTL                          = 242\n\tSYS_INITGROUPS                     = 243\n\tSYS_POSIX_SPAWN                    = 244\n\tSYS_FFSCTL                         = 245\n\tSYS_NFSCLNT                        = 247\n\tSYS_FHOPEN                         = 248\n\tSYS_MINHERIT                       = 250\n\tSYS_SEMSYS                         = 251\n\tSYS_MSGSYS                         = 252\n\tSYS_SHMSYS                         = 253\n\tSYS_SEMCTL                         = 254\n\tSYS_SEMGET                         = 255\n\tSYS_SEMOP                          = 256\n\tSYS_MSGCTL                         = 258\n\tSYS_MSGGET                         = 259\n\tSYS_MSGSND                         = 260\n\tSYS_MSGRCV                         = 261\n\tSYS_SHMAT                          = 262\n\tSYS_SHMCTL                         = 263\n\tSYS_SHMDT                          = 264\n\tSYS_SHMGET                         = 265\n\tSYS_SHM_OPEN                       = 266\n\tSYS_SHM_UNLINK                     = 267\n\tSYS_SEM_OPEN                       = 268\n\tSYS_SEM_CLOSE                      = 269\n\tSYS_SEM_UNLINK                     = 270\n\tSYS_SEM_WAIT                       = 271\n\tSYS_SEM_TRYWAIT                    = 272\n\tSYS_SEM_POST                       = 273\n\tSYS_SYSCTLBYNAME                   = 274\n\tSYS_OPEN_EXTENDED                  = 277\n\tSYS_UMASK_EXTENDED                 = 278\n\tSYS_STAT_EXTENDED                  = 279\n\tSYS_LSTAT_EXTENDED                 = 280\n\tSYS_FSTAT_EXTENDED                 = 281\n\tSYS_CHMOD_EXTENDED                 = 282\n\tSYS_FCHMOD_EXTENDED                = 283\n\tSYS_ACCESS_EXTENDED                = 284\n\tSYS_SETTID                         = 285\n\tSYS_GETTID                         = 286\n\tSYS_SETSGROUPS                     = 287\n\tSYS_GETSGROUPS                     = 288\n\tSYS_SETWGROUPS                     = 289\n\tSYS_GETWGROUPS                     = 290\n\tSYS_MKFIFO_EXTENDED                = 291\n\tSYS_MKDIR_EXTENDED                 = 292\n\tSYS_IDENTITYSVC                    = 293\n\tSYS_SHARED_REGION_CHECK_NP         = 294\n\tSYS_VM_PRESSURE_MONITOR            = 296\n\tSYS_PSYNCH_RW_LONGRDLOCK           = 297\n\tSYS_PSYNCH_RW_YIELDWRLOCK          = 298\n\tSYS_PSYNCH_RW_DOWNGRADE            = 299\n\tSYS_PSYNCH_RW_UPGRADE              = 300\n\tSYS_PSYNCH_MUTEXWAIT               = 301\n\tSYS_PSYNCH_MUTEXDROP               = 302\n\tSYS_PSYNCH_CVBROAD                 = 303\n\tSYS_PSYNCH_CVSIGNAL                = 304\n\tSYS_PSYNCH_CVWAIT                  = 305\n\tSYS_PSYNCH_RW_RDLOCK               = 306\n\tSYS_PSYNCH_RW_WRLOCK               = 307\n\tSYS_PSYNCH_RW_UNLOCK               = 308\n\tSYS_PSYNCH_RW_UNLOCK2              = 309\n\tSYS_GETSID                         = 310\n\tSYS_SETTID_WITH_PID                = 311\n\tSYS_PSYNCH_CVCLRPREPOST            = 312\n\tSYS_AIO_FSYNC                      = 313\n\tSYS_AIO_RETURN                     = 314\n\tSYS_AIO_SUSPEND                    = 315\n\tSYS_AIO_CANCEL                     = 316\n\tSYS_AIO_ERROR                      = 317\n\tSYS_AIO_READ                       = 318\n\tSYS_AIO_WRITE                      = 319\n\tSYS_LIO_LISTIO                     = 320\n\tSYS_IOPOLICYSYS                    = 322\n\tSYS_PROCESS_POLICY                 = 323\n\tSYS_MLOCKALL                       = 324\n\tSYS_MUNLOCKALL                     = 325\n\tSYS_ISSETUGID                      = 327\n\tSYS___PTHREAD_KILL                 = 328\n\tSYS___PTHREAD_SIGMASK              = 329\n\tSYS___SIGWAIT                      = 330\n\tSYS___DISABLE_THREADSIGNAL         = 331\n\tSYS___PTHREAD_MARKCANCEL           = 332\n\tSYS___PTHREAD_CANCELED             = 333\n\tSYS___SEMWAIT_SIGNAL               = 334\n\tSYS_PROC_INFO                      = 336\n\tSYS_SENDFILE                       = 337\n\tSYS_STAT64                         = 338\n\tSYS_FSTAT64                        = 339\n\tSYS_LSTAT64                        = 340\n\tSYS_STAT64_EXTENDED                = 341\n\tSYS_LSTAT64_EXTENDED               = 342\n\tSYS_FSTAT64_EXTENDED               = 343\n\tSYS_GETDIRENTRIES64                = 344\n\tSYS_STATFS64                       = 345\n\tSYS_FSTATFS64                      = 346\n\tSYS_GETFSSTAT64                    = 347\n\tSYS___PTHREAD_CHDIR                = 348\n\tSYS___PTHREAD_FCHDIR               = 349\n\tSYS_AUDIT                          = 350\n\tSYS_AUDITON                        = 351\n\tSYS_GETAUID                        = 353\n\tSYS_SETAUID                        = 354\n\tSYS_GETAUDIT_ADDR                  = 357\n\tSYS_SETAUDIT_ADDR                  = 358\n\tSYS_AUDITCTL                       = 359\n\tSYS_BSDTHREAD_CREATE               = 360\n\tSYS_BSDTHREAD_TERMINATE            = 361\n\tSYS_KQUEUE                         = 362\n\tSYS_KEVENT                         = 363\n\tSYS_LCHOWN                         = 364\n\tSYS_BSDTHREAD_REGISTER             = 366\n\tSYS_WORKQ_OPEN                     = 367\n\tSYS_WORKQ_KERNRETURN               = 368\n\tSYS_KEVENT64                       = 369\n\tSYS___OLD_SEMWAIT_SIGNAL           = 370\n\tSYS___OLD_SEMWAIT_SIGNAL_NOCANCEL  = 371\n\tSYS_THREAD_SELFID                  = 372\n\tSYS_LEDGER                         = 373\n\tSYS_KEVENT_QOS                     = 374\n\tSYS_KEVENT_ID                      = 375\n\tSYS___MAC_EXECVE                   = 380\n\tSYS___MAC_SYSCALL                  = 381\n\tSYS___MAC_GET_FILE                 = 382\n\tSYS___MAC_SET_FILE                 = 383\n\tSYS___MAC_GET_LINK                 = 384\n\tSYS___MAC_SET_LINK                 = 385\n\tSYS___MAC_GET_PROC                 = 386\n\tSYS___MAC_SET_PROC                 = 387\n\tSYS___MAC_GET_FD                   = 388\n\tSYS___MAC_SET_FD                   = 389\n\tSYS___MAC_GET_PID                  = 390\n\tSYS_PSELECT                        = 394\n\tSYS_PSELECT_NOCANCEL               = 395\n\tSYS_READ_NOCANCEL                  = 396\n\tSYS_WRITE_NOCANCEL                 = 397\n\tSYS_OPEN_NOCANCEL                  = 398\n\tSYS_CLOSE_NOCANCEL                 = 399\n\tSYS_WAIT4_NOCANCEL                 = 400\n\tSYS_RECVMSG_NOCANCEL               = 401\n\tSYS_SENDMSG_NOCANCEL               = 402\n\tSYS_RECVFROM_NOCANCEL              = 403\n\tSYS_ACCEPT_NOCANCEL                = 404\n\tSYS_MSYNC_NOCANCEL                 = 405\n\tSYS_FCNTL_NOCANCEL                 = 406\n\tSYS_SELECT_NOCANCEL                = 407\n\tSYS_FSYNC_NOCANCEL                 = 408\n\tSYS_CONNECT_NOCANCEL               = 409\n\tSYS_SIGSUSPEND_NOCANCEL            = 410\n\tSYS_READV_NOCANCEL                 = 411\n\tSYS_WRITEV_NOCANCEL                = 412\n\tSYS_SENDTO_NOCANCEL                = 413\n\tSYS_PREAD_NOCANCEL                 = 414\n\tSYS_PWRITE_NOCANCEL                = 415\n\tSYS_WAITID_NOCANCEL                = 416\n\tSYS_POLL_NOCANCEL                  = 417\n\tSYS_MSGSND_NOCANCEL                = 418\n\tSYS_MSGRCV_NOCANCEL                = 419\n\tSYS_SEM_WAIT_NOCANCEL              = 420\n\tSYS_AIO_SUSPEND_NOCANCEL           = 421\n\tSYS___SIGWAIT_NOCANCEL             = 422\n\tSYS___SEMWAIT_SIGNAL_NOCANCEL      = 423\n\tSYS___MAC_MOUNT                    = 424\n\tSYS___MAC_GET_MOUNT                = 425\n\tSYS___MAC_GETFSSTAT                = 426\n\tSYS_FSGETPATH                      = 427\n\tSYS_AUDIT_SESSION_SELF             = 428\n\tSYS_AUDIT_SESSION_JOIN             = 429\n\tSYS_FILEPORT_MAKEPORT              = 430\n\tSYS_FILEPORT_MAKEFD                = 431\n\tSYS_AUDIT_SESSION_PORT             = 432\n\tSYS_PID_SUSPEND                    = 433\n\tSYS_PID_RESUME                     = 434\n\tSYS_PID_HIBERNATE                  = 435\n\tSYS_PID_SHUTDOWN_SOCKETS           = 436\n\tSYS_SHARED_REGION_MAP_AND_SLIDE_NP = 438\n\tSYS_KAS_INFO                       = 439\n\tSYS_MEMORYSTATUS_CONTROL           = 440\n\tSYS_GUARDED_OPEN_NP                = 441\n\tSYS_GUARDED_CLOSE_NP               = 442\n\tSYS_GUARDED_KQUEUE_NP              = 443\n\tSYS_CHANGE_FDGUARD_NP              = 444\n\tSYS_USRCTL                         = 445\n\tSYS_PROC_RLIMIT_CONTROL            = 446\n\tSYS_CONNECTX                       = 447\n\tSYS_DISCONNECTX                    = 448\n\tSYS_PEELOFF                        = 449\n\tSYS_SOCKET_DELEGATE                = 450\n\tSYS_TELEMETRY                      = 451\n\tSYS_PROC_UUID_POLICY               = 452\n\tSYS_MEMORYSTATUS_GET_LEVEL         = 453\n\tSYS_SYSTEM_OVERRIDE                = 454\n\tSYS_VFS_PURGE                      = 455\n\tSYS_SFI_CTL                        = 456\n\tSYS_SFI_PIDCTL                     = 457\n\tSYS_COALITION                      = 458\n\tSYS_COALITION_INFO                 = 459\n\tSYS_NECP_MATCH_POLICY              = 460\n\tSYS_GETATTRLISTBULK                = 461\n\tSYS_CLONEFILEAT                    = 462\n\tSYS_OPENAT                         = 463\n\tSYS_OPENAT_NOCANCEL                = 464\n\tSYS_RENAMEAT                       = 465\n\tSYS_FACCESSAT                      = 466\n\tSYS_FCHMODAT                       = 467\n\tSYS_FCHOWNAT                       = 468\n\tSYS_FSTATAT                        = 469\n\tSYS_FSTATAT64                      = 470\n\tSYS_LINKAT                         = 471\n\tSYS_UNLINKAT                       = 472\n\tSYS_READLINKAT                     = 473\n\tSYS_SYMLINKAT                      = 474\n\tSYS_MKDIRAT                        = 475\n\tSYS_GETATTRLISTAT                  = 476\n\tSYS_PROC_TRACE_LOG                 = 477\n\tSYS_BSDTHREAD_CTL                  = 478\n\tSYS_OPENBYID_NP                    = 479\n\tSYS_RECVMSG_X                      = 480\n\tSYS_SENDMSG_X                      = 481\n\tSYS_THREAD_SELFUSAGE               = 482\n\tSYS_CSRCTL                         = 483\n\tSYS_GUARDED_OPEN_DPROTECTED_NP     = 484\n\tSYS_GUARDED_WRITE_NP               = 485\n\tSYS_GUARDED_PWRITE_NP              = 486\n\tSYS_GUARDED_WRITEV_NP              = 487\n\tSYS_RENAMEATX_NP                   = 488\n\tSYS_MREMAP_ENCRYPTED               = 489\n\tSYS_NETAGENT_TRIGGER               = 490\n\tSYS_STACK_SNAPSHOT_WITH_CONFIG     = 491\n\tSYS_MICROSTACKSHOT                 = 492\n\tSYS_GRAB_PGO_DATA                  = 493\n\tSYS_PERSONA                        = 494\n\tSYS_WORK_INTERVAL_CTL              = 499\n\tSYS_GETENTROPY                     = 500\n\tSYS_NECP_OPEN                      = 501\n\tSYS_NECP_CLIENT_ACTION             = 502\n\tSYS___NEXUS_OPEN                   = 503\n\tSYS___NEXUS_REGISTER               = 504\n\tSYS___NEXUS_DEREGISTER             = 505\n\tSYS___NEXUS_CREATE                 = 506\n\tSYS___NEXUS_DESTROY                = 507\n\tSYS___NEXUS_GET_OPT                = 508\n\tSYS___NEXUS_SET_OPT                = 509\n\tSYS___CHANNEL_OPEN                 = 510\n\tSYS___CHANNEL_GET_INFO             = 511\n\tSYS___CHANNEL_SYNC                 = 512\n\tSYS___CHANNEL_GET_OPT              = 513\n\tSYS___CHANNEL_SET_OPT              = 514\n\tSYS_ULOCK_WAIT                     = 515\n\tSYS_ULOCK_WAKE                     = 516\n\tSYS_FCLONEFILEAT                   = 517\n\tSYS_FS_SNAPSHOT                    = 518\n\tSYS_TERMINATE_WITH_PAYLOAD         = 520\n\tSYS_ABORT_WITH_PAYLOAD             = 521\n\tSYS_NECP_SESSION_OPEN              = 522\n\tSYS_NECP_SESSION_ACTION            = 523\n\tSYS_SETATTRLISTAT                  = 524\n\tSYS_NET_QOS_GUIDELINE              = 525\n\tSYS_FMOUNT                         = 526\n\tSYS_NTP_ADJTIME                    = 527\n\tSYS_NTP_GETTIME                    = 528\n\tSYS_OS_FAULT_WITH_PAYLOAD          = 529\n\tSYS_KQUEUE_WORKLOOP_CTL            = 530\n\tSYS___MACH_BRIDGE_REMOTE_TIME      = 531\n\tSYS_MAXSYSCALL                     = 532\n\tSYS_INVALID                        = 63\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go",
    "content": "// go run mksysnum.go /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.1.sdk/usr/include/sys/syscall.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && darwin\n\npackage unix\n\n// Deprecated: Use libSystem wrappers instead of direct syscalls.\nconst (\n\tSYS_SYSCALL                        = 0\n\tSYS_EXIT                           = 1\n\tSYS_FORK                           = 2\n\tSYS_READ                           = 3\n\tSYS_WRITE                          = 4\n\tSYS_OPEN                           = 5\n\tSYS_CLOSE                          = 6\n\tSYS_WAIT4                          = 7\n\tSYS_LINK                           = 9\n\tSYS_UNLINK                         = 10\n\tSYS_CHDIR                          = 12\n\tSYS_FCHDIR                         = 13\n\tSYS_MKNOD                          = 14\n\tSYS_CHMOD                          = 15\n\tSYS_CHOWN                          = 16\n\tSYS_GETFSSTAT                      = 18\n\tSYS_GETPID                         = 20\n\tSYS_SETUID                         = 23\n\tSYS_GETUID                         = 24\n\tSYS_GETEUID                        = 25\n\tSYS_PTRACE                         = 26\n\tSYS_RECVMSG                        = 27\n\tSYS_SENDMSG                        = 28\n\tSYS_RECVFROM                       = 29\n\tSYS_ACCEPT                         = 30\n\tSYS_GETPEERNAME                    = 31\n\tSYS_GETSOCKNAME                    = 32\n\tSYS_ACCESS                         = 33\n\tSYS_CHFLAGS                        = 34\n\tSYS_FCHFLAGS                       = 35\n\tSYS_SYNC                           = 36\n\tSYS_KILL                           = 37\n\tSYS_GETPPID                        = 39\n\tSYS_DUP                            = 41\n\tSYS_PIPE                           = 42\n\tSYS_GETEGID                        = 43\n\tSYS_SIGACTION                      = 46\n\tSYS_GETGID                         = 47\n\tSYS_SIGPROCMASK                    = 48\n\tSYS_GETLOGIN                       = 49\n\tSYS_SETLOGIN                       = 50\n\tSYS_ACCT                           = 51\n\tSYS_SIGPENDING                     = 52\n\tSYS_SIGALTSTACK                    = 53\n\tSYS_IOCTL                          = 54\n\tSYS_REBOOT                         = 55\n\tSYS_REVOKE                         = 56\n\tSYS_SYMLINK                        = 57\n\tSYS_READLINK                       = 58\n\tSYS_EXECVE                         = 59\n\tSYS_UMASK                          = 60\n\tSYS_CHROOT                         = 61\n\tSYS_MSYNC                          = 65\n\tSYS_VFORK                          = 66\n\tSYS_MUNMAP                         = 73\n\tSYS_MPROTECT                       = 74\n\tSYS_MADVISE                        = 75\n\tSYS_MINCORE                        = 78\n\tSYS_GETGROUPS                      = 79\n\tSYS_SETGROUPS                      = 80\n\tSYS_GETPGRP                        = 81\n\tSYS_SETPGID                        = 82\n\tSYS_SETITIMER                      = 83\n\tSYS_SWAPON                         = 85\n\tSYS_GETITIMER                      = 86\n\tSYS_GETDTABLESIZE                  = 89\n\tSYS_DUP2                           = 90\n\tSYS_FCNTL                          = 92\n\tSYS_SELECT                         = 93\n\tSYS_FSYNC                          = 95\n\tSYS_SETPRIORITY                    = 96\n\tSYS_SOCKET                         = 97\n\tSYS_CONNECT                        = 98\n\tSYS_GETPRIORITY                    = 100\n\tSYS_BIND                           = 104\n\tSYS_SETSOCKOPT                     = 105\n\tSYS_LISTEN                         = 106\n\tSYS_SIGSUSPEND                     = 111\n\tSYS_GETTIMEOFDAY                   = 116\n\tSYS_GETRUSAGE                      = 117\n\tSYS_GETSOCKOPT                     = 118\n\tSYS_READV                          = 120\n\tSYS_WRITEV                         = 121\n\tSYS_SETTIMEOFDAY                   = 122\n\tSYS_FCHOWN                         = 123\n\tSYS_FCHMOD                         = 124\n\tSYS_SETREUID                       = 126\n\tSYS_SETREGID                       = 127\n\tSYS_RENAME                         = 128\n\tSYS_FLOCK                          = 131\n\tSYS_MKFIFO                         = 132\n\tSYS_SENDTO                         = 133\n\tSYS_SHUTDOWN                       = 134\n\tSYS_SOCKETPAIR                     = 135\n\tSYS_MKDIR                          = 136\n\tSYS_RMDIR                          = 137\n\tSYS_UTIMES                         = 138\n\tSYS_FUTIMES                        = 139\n\tSYS_ADJTIME                        = 140\n\tSYS_GETHOSTUUID                    = 142\n\tSYS_SETSID                         = 147\n\tSYS_GETPGID                        = 151\n\tSYS_SETPRIVEXEC                    = 152\n\tSYS_PREAD                          = 153\n\tSYS_PWRITE                         = 154\n\tSYS_NFSSVC                         = 155\n\tSYS_STATFS                         = 157\n\tSYS_FSTATFS                        = 158\n\tSYS_UNMOUNT                        = 159\n\tSYS_GETFH                          = 161\n\tSYS_QUOTACTL                       = 165\n\tSYS_MOUNT                          = 167\n\tSYS_CSOPS                          = 169\n\tSYS_CSOPS_AUDITTOKEN               = 170\n\tSYS_WAITID                         = 173\n\tSYS_KDEBUG_TYPEFILTER              = 177\n\tSYS_KDEBUG_TRACE_STRING            = 178\n\tSYS_KDEBUG_TRACE64                 = 179\n\tSYS_KDEBUG_TRACE                   = 180\n\tSYS_SETGID                         = 181\n\tSYS_SETEGID                        = 182\n\tSYS_SETEUID                        = 183\n\tSYS_SIGRETURN                      = 184\n\tSYS_THREAD_SELFCOUNTS              = 186\n\tSYS_FDATASYNC                      = 187\n\tSYS_STAT                           = 188\n\tSYS_FSTAT                          = 189\n\tSYS_LSTAT                          = 190\n\tSYS_PATHCONF                       = 191\n\tSYS_FPATHCONF                      = 192\n\tSYS_GETRLIMIT                      = 194\n\tSYS_SETRLIMIT                      = 195\n\tSYS_GETDIRENTRIES                  = 196\n\tSYS_MMAP                           = 197\n\tSYS_LSEEK                          = 199\n\tSYS_TRUNCATE                       = 200\n\tSYS_FTRUNCATE                      = 201\n\tSYS_SYSCTL                         = 202\n\tSYS_MLOCK                          = 203\n\tSYS_MUNLOCK                        = 204\n\tSYS_UNDELETE                       = 205\n\tSYS_OPEN_DPROTECTED_NP             = 216\n\tSYS_GETATTRLIST                    = 220\n\tSYS_SETATTRLIST                    = 221\n\tSYS_GETDIRENTRIESATTR              = 222\n\tSYS_EXCHANGEDATA                   = 223\n\tSYS_SEARCHFS                       = 225\n\tSYS_DELETE                         = 226\n\tSYS_COPYFILE                       = 227\n\tSYS_FGETATTRLIST                   = 228\n\tSYS_FSETATTRLIST                   = 229\n\tSYS_POLL                           = 230\n\tSYS_WATCHEVENT                     = 231\n\tSYS_WAITEVENT                      = 232\n\tSYS_MODWATCH                       = 233\n\tSYS_GETXATTR                       = 234\n\tSYS_FGETXATTR                      = 235\n\tSYS_SETXATTR                       = 236\n\tSYS_FSETXATTR                      = 237\n\tSYS_REMOVEXATTR                    = 238\n\tSYS_FREMOVEXATTR                   = 239\n\tSYS_LISTXATTR                      = 240\n\tSYS_FLISTXATTR                     = 241\n\tSYS_FSCTL                          = 242\n\tSYS_INITGROUPS                     = 243\n\tSYS_POSIX_SPAWN                    = 244\n\tSYS_FFSCTL                         = 245\n\tSYS_NFSCLNT                        = 247\n\tSYS_FHOPEN                         = 248\n\tSYS_MINHERIT                       = 250\n\tSYS_SEMSYS                         = 251\n\tSYS_MSGSYS                         = 252\n\tSYS_SHMSYS                         = 253\n\tSYS_SEMCTL                         = 254\n\tSYS_SEMGET                         = 255\n\tSYS_SEMOP                          = 256\n\tSYS_MSGCTL                         = 258\n\tSYS_MSGGET                         = 259\n\tSYS_MSGSND                         = 260\n\tSYS_MSGRCV                         = 261\n\tSYS_SHMAT                          = 262\n\tSYS_SHMCTL                         = 263\n\tSYS_SHMDT                          = 264\n\tSYS_SHMGET                         = 265\n\tSYS_SHM_OPEN                       = 266\n\tSYS_SHM_UNLINK                     = 267\n\tSYS_SEM_OPEN                       = 268\n\tSYS_SEM_CLOSE                      = 269\n\tSYS_SEM_UNLINK                     = 270\n\tSYS_SEM_WAIT                       = 271\n\tSYS_SEM_TRYWAIT                    = 272\n\tSYS_SEM_POST                       = 273\n\tSYS_SYSCTLBYNAME                   = 274\n\tSYS_OPEN_EXTENDED                  = 277\n\tSYS_UMASK_EXTENDED                 = 278\n\tSYS_STAT_EXTENDED                  = 279\n\tSYS_LSTAT_EXTENDED                 = 280\n\tSYS_FSTAT_EXTENDED                 = 281\n\tSYS_CHMOD_EXTENDED                 = 282\n\tSYS_FCHMOD_EXTENDED                = 283\n\tSYS_ACCESS_EXTENDED                = 284\n\tSYS_SETTID                         = 285\n\tSYS_GETTID                         = 286\n\tSYS_SETSGROUPS                     = 287\n\tSYS_GETSGROUPS                     = 288\n\tSYS_SETWGROUPS                     = 289\n\tSYS_GETWGROUPS                     = 290\n\tSYS_MKFIFO_EXTENDED                = 291\n\tSYS_MKDIR_EXTENDED                 = 292\n\tSYS_IDENTITYSVC                    = 293\n\tSYS_SHARED_REGION_CHECK_NP         = 294\n\tSYS_VM_PRESSURE_MONITOR            = 296\n\tSYS_PSYNCH_RW_LONGRDLOCK           = 297\n\tSYS_PSYNCH_RW_YIELDWRLOCK          = 298\n\tSYS_PSYNCH_RW_DOWNGRADE            = 299\n\tSYS_PSYNCH_RW_UPGRADE              = 300\n\tSYS_PSYNCH_MUTEXWAIT               = 301\n\tSYS_PSYNCH_MUTEXDROP               = 302\n\tSYS_PSYNCH_CVBROAD                 = 303\n\tSYS_PSYNCH_CVSIGNAL                = 304\n\tSYS_PSYNCH_CVWAIT                  = 305\n\tSYS_PSYNCH_RW_RDLOCK               = 306\n\tSYS_PSYNCH_RW_WRLOCK               = 307\n\tSYS_PSYNCH_RW_UNLOCK               = 308\n\tSYS_PSYNCH_RW_UNLOCK2              = 309\n\tSYS_GETSID                         = 310\n\tSYS_SETTID_WITH_PID                = 311\n\tSYS_PSYNCH_CVCLRPREPOST            = 312\n\tSYS_AIO_FSYNC                      = 313\n\tSYS_AIO_RETURN                     = 314\n\tSYS_AIO_SUSPEND                    = 315\n\tSYS_AIO_CANCEL                     = 316\n\tSYS_AIO_ERROR                      = 317\n\tSYS_AIO_READ                       = 318\n\tSYS_AIO_WRITE                      = 319\n\tSYS_LIO_LISTIO                     = 320\n\tSYS_IOPOLICYSYS                    = 322\n\tSYS_PROCESS_POLICY                 = 323\n\tSYS_MLOCKALL                       = 324\n\tSYS_MUNLOCKALL                     = 325\n\tSYS_ISSETUGID                      = 327\n\tSYS___PTHREAD_KILL                 = 328\n\tSYS___PTHREAD_SIGMASK              = 329\n\tSYS___SIGWAIT                      = 330\n\tSYS___DISABLE_THREADSIGNAL         = 331\n\tSYS___PTHREAD_MARKCANCEL           = 332\n\tSYS___PTHREAD_CANCELED             = 333\n\tSYS___SEMWAIT_SIGNAL               = 334\n\tSYS_PROC_INFO                      = 336\n\tSYS_SENDFILE                       = 337\n\tSYS_STAT64                         = 338\n\tSYS_FSTAT64                        = 339\n\tSYS_LSTAT64                        = 340\n\tSYS_STAT64_EXTENDED                = 341\n\tSYS_LSTAT64_EXTENDED               = 342\n\tSYS_FSTAT64_EXTENDED               = 343\n\tSYS_GETDIRENTRIES64                = 344\n\tSYS_STATFS64                       = 345\n\tSYS_FSTATFS64                      = 346\n\tSYS_GETFSSTAT64                    = 347\n\tSYS___PTHREAD_CHDIR                = 348\n\tSYS___PTHREAD_FCHDIR               = 349\n\tSYS_AUDIT                          = 350\n\tSYS_AUDITON                        = 351\n\tSYS_GETAUID                        = 353\n\tSYS_SETAUID                        = 354\n\tSYS_GETAUDIT_ADDR                  = 357\n\tSYS_SETAUDIT_ADDR                  = 358\n\tSYS_AUDITCTL                       = 359\n\tSYS_BSDTHREAD_CREATE               = 360\n\tSYS_BSDTHREAD_TERMINATE            = 361\n\tSYS_KQUEUE                         = 362\n\tSYS_KEVENT                         = 363\n\tSYS_LCHOWN                         = 364\n\tSYS_BSDTHREAD_REGISTER             = 366\n\tSYS_WORKQ_OPEN                     = 367\n\tSYS_WORKQ_KERNRETURN               = 368\n\tSYS_KEVENT64                       = 369\n\tSYS___OLD_SEMWAIT_SIGNAL           = 370\n\tSYS___OLD_SEMWAIT_SIGNAL_NOCANCEL  = 371\n\tSYS_THREAD_SELFID                  = 372\n\tSYS_LEDGER                         = 373\n\tSYS_KEVENT_QOS                     = 374\n\tSYS_KEVENT_ID                      = 375\n\tSYS___MAC_EXECVE                   = 380\n\tSYS___MAC_SYSCALL                  = 381\n\tSYS___MAC_GET_FILE                 = 382\n\tSYS___MAC_SET_FILE                 = 383\n\tSYS___MAC_GET_LINK                 = 384\n\tSYS___MAC_SET_LINK                 = 385\n\tSYS___MAC_GET_PROC                 = 386\n\tSYS___MAC_SET_PROC                 = 387\n\tSYS___MAC_GET_FD                   = 388\n\tSYS___MAC_SET_FD                   = 389\n\tSYS___MAC_GET_PID                  = 390\n\tSYS_PSELECT                        = 394\n\tSYS_PSELECT_NOCANCEL               = 395\n\tSYS_READ_NOCANCEL                  = 396\n\tSYS_WRITE_NOCANCEL                 = 397\n\tSYS_OPEN_NOCANCEL                  = 398\n\tSYS_CLOSE_NOCANCEL                 = 399\n\tSYS_WAIT4_NOCANCEL                 = 400\n\tSYS_RECVMSG_NOCANCEL               = 401\n\tSYS_SENDMSG_NOCANCEL               = 402\n\tSYS_RECVFROM_NOCANCEL              = 403\n\tSYS_ACCEPT_NOCANCEL                = 404\n\tSYS_MSYNC_NOCANCEL                 = 405\n\tSYS_FCNTL_NOCANCEL                 = 406\n\tSYS_SELECT_NOCANCEL                = 407\n\tSYS_FSYNC_NOCANCEL                 = 408\n\tSYS_CONNECT_NOCANCEL               = 409\n\tSYS_SIGSUSPEND_NOCANCEL            = 410\n\tSYS_READV_NOCANCEL                 = 411\n\tSYS_WRITEV_NOCANCEL                = 412\n\tSYS_SENDTO_NOCANCEL                = 413\n\tSYS_PREAD_NOCANCEL                 = 414\n\tSYS_PWRITE_NOCANCEL                = 415\n\tSYS_WAITID_NOCANCEL                = 416\n\tSYS_POLL_NOCANCEL                  = 417\n\tSYS_MSGSND_NOCANCEL                = 418\n\tSYS_MSGRCV_NOCANCEL                = 419\n\tSYS_SEM_WAIT_NOCANCEL              = 420\n\tSYS_AIO_SUSPEND_NOCANCEL           = 421\n\tSYS___SIGWAIT_NOCANCEL             = 422\n\tSYS___SEMWAIT_SIGNAL_NOCANCEL      = 423\n\tSYS___MAC_MOUNT                    = 424\n\tSYS___MAC_GET_MOUNT                = 425\n\tSYS___MAC_GETFSSTAT                = 426\n\tSYS_FSGETPATH                      = 427\n\tSYS_AUDIT_SESSION_SELF             = 428\n\tSYS_AUDIT_SESSION_JOIN             = 429\n\tSYS_FILEPORT_MAKEPORT              = 430\n\tSYS_FILEPORT_MAKEFD                = 431\n\tSYS_AUDIT_SESSION_PORT             = 432\n\tSYS_PID_SUSPEND                    = 433\n\tSYS_PID_RESUME                     = 434\n\tSYS_PID_HIBERNATE                  = 435\n\tSYS_PID_SHUTDOWN_SOCKETS           = 436\n\tSYS_SHARED_REGION_MAP_AND_SLIDE_NP = 438\n\tSYS_KAS_INFO                       = 439\n\tSYS_MEMORYSTATUS_CONTROL           = 440\n\tSYS_GUARDED_OPEN_NP                = 441\n\tSYS_GUARDED_CLOSE_NP               = 442\n\tSYS_GUARDED_KQUEUE_NP              = 443\n\tSYS_CHANGE_FDGUARD_NP              = 444\n\tSYS_USRCTL                         = 445\n\tSYS_PROC_RLIMIT_CONTROL            = 446\n\tSYS_CONNECTX                       = 447\n\tSYS_DISCONNECTX                    = 448\n\tSYS_PEELOFF                        = 449\n\tSYS_SOCKET_DELEGATE                = 450\n\tSYS_TELEMETRY                      = 451\n\tSYS_PROC_UUID_POLICY               = 452\n\tSYS_MEMORYSTATUS_GET_LEVEL         = 453\n\tSYS_SYSTEM_OVERRIDE                = 454\n\tSYS_VFS_PURGE                      = 455\n\tSYS_SFI_CTL                        = 456\n\tSYS_SFI_PIDCTL                     = 457\n\tSYS_COALITION                      = 458\n\tSYS_COALITION_INFO                 = 459\n\tSYS_NECP_MATCH_POLICY              = 460\n\tSYS_GETATTRLISTBULK                = 461\n\tSYS_CLONEFILEAT                    = 462\n\tSYS_OPENAT                         = 463\n\tSYS_OPENAT_NOCANCEL                = 464\n\tSYS_RENAMEAT                       = 465\n\tSYS_FACCESSAT                      = 466\n\tSYS_FCHMODAT                       = 467\n\tSYS_FCHOWNAT                       = 468\n\tSYS_FSTATAT                        = 469\n\tSYS_FSTATAT64                      = 470\n\tSYS_LINKAT                         = 471\n\tSYS_UNLINKAT                       = 472\n\tSYS_READLINKAT                     = 473\n\tSYS_SYMLINKAT                      = 474\n\tSYS_MKDIRAT                        = 475\n\tSYS_GETATTRLISTAT                  = 476\n\tSYS_PROC_TRACE_LOG                 = 477\n\tSYS_BSDTHREAD_CTL                  = 478\n\tSYS_OPENBYID_NP                    = 479\n\tSYS_RECVMSG_X                      = 480\n\tSYS_SENDMSG_X                      = 481\n\tSYS_THREAD_SELFUSAGE               = 482\n\tSYS_CSRCTL                         = 483\n\tSYS_GUARDED_OPEN_DPROTECTED_NP     = 484\n\tSYS_GUARDED_WRITE_NP               = 485\n\tSYS_GUARDED_PWRITE_NP              = 486\n\tSYS_GUARDED_WRITEV_NP              = 487\n\tSYS_RENAMEATX_NP                   = 488\n\tSYS_MREMAP_ENCRYPTED               = 489\n\tSYS_NETAGENT_TRIGGER               = 490\n\tSYS_STACK_SNAPSHOT_WITH_CONFIG     = 491\n\tSYS_MICROSTACKSHOT                 = 492\n\tSYS_GRAB_PGO_DATA                  = 493\n\tSYS_PERSONA                        = 494\n\tSYS_WORK_INTERVAL_CTL              = 499\n\tSYS_GETENTROPY                     = 500\n\tSYS_NECP_OPEN                      = 501\n\tSYS_NECP_CLIENT_ACTION             = 502\n\tSYS___NEXUS_OPEN                   = 503\n\tSYS___NEXUS_REGISTER               = 504\n\tSYS___NEXUS_DEREGISTER             = 505\n\tSYS___NEXUS_CREATE                 = 506\n\tSYS___NEXUS_DESTROY                = 507\n\tSYS___NEXUS_GET_OPT                = 508\n\tSYS___NEXUS_SET_OPT                = 509\n\tSYS___CHANNEL_OPEN                 = 510\n\tSYS___CHANNEL_GET_INFO             = 511\n\tSYS___CHANNEL_SYNC                 = 512\n\tSYS___CHANNEL_GET_OPT              = 513\n\tSYS___CHANNEL_SET_OPT              = 514\n\tSYS_ULOCK_WAIT                     = 515\n\tSYS_ULOCK_WAKE                     = 516\n\tSYS_FCLONEFILEAT                   = 517\n\tSYS_FS_SNAPSHOT                    = 518\n\tSYS_TERMINATE_WITH_PAYLOAD         = 520\n\tSYS_ABORT_WITH_PAYLOAD             = 521\n\tSYS_NECP_SESSION_OPEN              = 522\n\tSYS_NECP_SESSION_ACTION            = 523\n\tSYS_SETATTRLISTAT                  = 524\n\tSYS_NET_QOS_GUIDELINE              = 525\n\tSYS_FMOUNT                         = 526\n\tSYS_NTP_ADJTIME                    = 527\n\tSYS_NTP_GETTIME                    = 528\n\tSYS_OS_FAULT_WITH_PAYLOAD          = 529\n\tSYS_MAXSYSCALL                     = 530\n\tSYS_INVALID                        = 63\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go",
    "content": "// go run mksysnum.go https://gitweb.dragonflybsd.org/dragonfly.git/blob_plain/HEAD:/sys/kern/syscalls.master\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && dragonfly\n\npackage unix\n\nconst (\n\tSYS_EXIT  = 1 // { void exit(int rval); }\n\tSYS_FORK  = 2 // { int fork(void); }\n\tSYS_READ  = 3 // { ssize_t read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN  = 5 // { int open(char *path, int flags, int mode); }\n\tSYS_CLOSE = 6 // { int close(int fd); }\n\tSYS_WAIT4 = 7 // { int wait4(int pid, int *status, int options, struct rusage *rusage); } wait4 wait_args int\n\t// SYS_NOSYS = 8;  // { int nosys(void); } __nosys nosys_args int\n\tSYS_LINK                   = 9   // { int link(char *path, char *link); }\n\tSYS_UNLINK                 = 10  // { int unlink(char *path); }\n\tSYS_CHDIR                  = 12  // { int chdir(char *path); }\n\tSYS_FCHDIR                 = 13  // { int fchdir(int fd); }\n\tSYS_MKNOD                  = 14  // { int mknod(char *path, int mode, int dev); }\n\tSYS_CHMOD                  = 15  // { int chmod(char *path, int mode); }\n\tSYS_CHOWN                  = 16  // { int chown(char *path, int uid, int gid); }\n\tSYS_OBREAK                 = 17  // { int obreak(char *nsize); } break obreak_args int\n\tSYS_GETFSSTAT              = 18  // { int getfsstat(struct statfs *buf, long bufsize, int flags); }\n\tSYS_GETPID                 = 20  // { pid_t getpid(void); }\n\tSYS_MOUNT                  = 21  // { int mount(char *type, char *path, int flags, caddr_t data); }\n\tSYS_UNMOUNT                = 22  // { int unmount(char *path, int flags); }\n\tSYS_SETUID                 = 23  // { int setuid(uid_t uid); }\n\tSYS_GETUID                 = 24  // { uid_t getuid(void); }\n\tSYS_GETEUID                = 25  // { uid_t geteuid(void); }\n\tSYS_PTRACE                 = 26  // { int ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG                = 27  // { int recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG                = 28  // { int sendmsg(int s, caddr_t msg, int flags); }\n\tSYS_RECVFROM               = 29  // { int recvfrom(int s, caddr_t buf, size_t len, int flags, caddr_t from, int *fromlenaddr); }\n\tSYS_ACCEPT                 = 30  // { int accept(int s, caddr_t name, int *anamelen); }\n\tSYS_GETPEERNAME            = 31  // { int getpeername(int fdes, caddr_t asa, int *alen); }\n\tSYS_GETSOCKNAME            = 32  // { int getsockname(int fdes, caddr_t asa, int *alen); }\n\tSYS_ACCESS                 = 33  // { int access(char *path, int flags); }\n\tSYS_CHFLAGS                = 34  // { int chflags(const char *path, u_long flags); }\n\tSYS_FCHFLAGS               = 35  // { int fchflags(int fd, u_long flags); }\n\tSYS_SYNC                   = 36  // { int sync(void); }\n\tSYS_KILL                   = 37  // { int kill(int pid, int signum); }\n\tSYS_GETPPID                = 39  // { pid_t getppid(void); }\n\tSYS_DUP                    = 41  // { int dup(int fd); }\n\tSYS_PIPE                   = 42  // { int pipe(void); }\n\tSYS_GETEGID                = 43  // { gid_t getegid(void); }\n\tSYS_PROFIL                 = 44  // { int profil(caddr_t samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE                 = 45  // { int ktrace(const char *fname, int ops, int facs, int pid); }\n\tSYS_GETGID                 = 47  // { gid_t getgid(void); }\n\tSYS_GETLOGIN               = 49  // { int getlogin(char *namebuf, size_t namelen); }\n\tSYS_SETLOGIN               = 50  // { int setlogin(char *namebuf); }\n\tSYS_ACCT                   = 51  // { int acct(char *path); }\n\tSYS_SIGALTSTACK            = 53  // { int sigaltstack(stack_t *ss, stack_t *oss); }\n\tSYS_IOCTL                  = 54  // { int ioctl(int fd, u_long com, caddr_t data); }\n\tSYS_REBOOT                 = 55  // { int reboot(int opt); }\n\tSYS_REVOKE                 = 56  // { int revoke(char *path); }\n\tSYS_SYMLINK                = 57  // { int symlink(char *path, char *link); }\n\tSYS_READLINK               = 58  // { int readlink(char *path, char *buf, int count); }\n\tSYS_EXECVE                 = 59  // { int execve(char *fname, char **argv, char **envv); }\n\tSYS_UMASK                  = 60  // { int umask(int newmask); } umask umask_args int\n\tSYS_CHROOT                 = 61  // { int chroot(char *path); }\n\tSYS_MSYNC                  = 65  // { int msync(void *addr, size_t len, int flags); }\n\tSYS_VFORK                  = 66  // { pid_t vfork(void); }\n\tSYS_SBRK                   = 69  // { caddr_t sbrk(size_t incr); }\n\tSYS_SSTK                   = 70  // { int sstk(size_t incr); }\n\tSYS_MUNMAP                 = 73  // { int munmap(void *addr, size_t len); }\n\tSYS_MPROTECT               = 74  // { int mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE                = 75  // { int madvise(void *addr, size_t len, int behav); }\n\tSYS_MINCORE                = 78  // { int mincore(const void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS              = 79  // { int getgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS              = 80  // { int setgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_GETPGRP                = 81  // { int getpgrp(void); }\n\tSYS_SETPGID                = 82  // { int setpgid(int pid, int pgid); }\n\tSYS_SETITIMER              = 83  // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_SWAPON                 = 85  // { int swapon(char *name); }\n\tSYS_GETITIMER              = 86  // { int getitimer(u_int which, struct itimerval *itv); }\n\tSYS_GETDTABLESIZE          = 89  // { int getdtablesize(void); }\n\tSYS_DUP2                   = 90  // { int dup2(int from, int to); }\n\tSYS_FCNTL                  = 92  // { int fcntl(int fd, int cmd, long arg); }\n\tSYS_SELECT                 = 93  // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_FSYNC                  = 95  // { int fsync(int fd); }\n\tSYS_SETPRIORITY            = 96  // { int setpriority(int which, int who, int prio); }\n\tSYS_SOCKET                 = 97  // { int socket(int domain, int type, int protocol); }\n\tSYS_CONNECT                = 98  // { int connect(int s, caddr_t name, int namelen); }\n\tSYS_GETPRIORITY            = 100 // { int getpriority(int which, int who); }\n\tSYS_BIND                   = 104 // { int bind(int s, caddr_t name, int namelen); }\n\tSYS_SETSOCKOPT             = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); }\n\tSYS_LISTEN                 = 106 // { int listen(int s, int backlog); }\n\tSYS_GETTIMEOFDAY           = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_GETRUSAGE              = 117 // { int getrusage(int who, struct rusage *rusage); }\n\tSYS_GETSOCKOPT             = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); }\n\tSYS_READV                  = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); }\n\tSYS_WRITEV                 = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); }\n\tSYS_SETTIMEOFDAY           = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); }\n\tSYS_FCHOWN                 = 123 // { int fchown(int fd, int uid, int gid); }\n\tSYS_FCHMOD                 = 124 // { int fchmod(int fd, int mode); }\n\tSYS_SETREUID               = 126 // { int setreuid(int ruid, int euid); }\n\tSYS_SETREGID               = 127 // { int setregid(int rgid, int egid); }\n\tSYS_RENAME                 = 128 // { int rename(char *from, char *to); }\n\tSYS_FLOCK                  = 131 // { int flock(int fd, int how); }\n\tSYS_MKFIFO                 = 132 // { int mkfifo(char *path, int mode); }\n\tSYS_SENDTO                 = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); }\n\tSYS_SHUTDOWN               = 134 // { int shutdown(int s, int how); }\n\tSYS_SOCKETPAIR             = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR                  = 136 // { int mkdir(char *path, int mode); }\n\tSYS_RMDIR                  = 137 // { int rmdir(char *path); }\n\tSYS_UTIMES                 = 138 // { int utimes(char *path, struct timeval *tptr); }\n\tSYS_ADJTIME                = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); }\n\tSYS_SETSID                 = 147 // { int setsid(void); }\n\tSYS_QUOTACTL               = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); }\n\tSYS_STATFS                 = 157 // { int statfs(char *path, struct statfs *buf); }\n\tSYS_FSTATFS                = 158 // { int fstatfs(int fd, struct statfs *buf); }\n\tSYS_GETFH                  = 161 // { int getfh(char *fname, struct fhandle *fhp); }\n\tSYS_SYSARCH                = 165 // { int sysarch(int op, char *parms); }\n\tSYS_RTPRIO                 = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); }\n\tSYS_EXTPREAD               = 173 // { ssize_t extpread(int fd, void *buf, size_t nbyte, int flags, off_t offset); }\n\tSYS_EXTPWRITE              = 174 // { ssize_t extpwrite(int fd, const void *buf, size_t nbyte, int flags, off_t offset); }\n\tSYS_NTP_ADJTIME            = 176 // { int ntp_adjtime(struct timex *tp); }\n\tSYS_SETGID                 = 181 // { int setgid(gid_t gid); }\n\tSYS_SETEGID                = 182 // { int setegid(gid_t egid); }\n\tSYS_SETEUID                = 183 // { int seteuid(uid_t euid); }\n\tSYS_PATHCONF               = 191 // { int pathconf(char *path, int name); }\n\tSYS_FPATHCONF              = 192 // { int fpathconf(int fd, int name); }\n\tSYS_GETRLIMIT              = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int\n\tSYS_SETRLIMIT              = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int\n\tSYS_MMAP                   = 197 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, int pad, off_t pos); }\n\tSYS_LSEEK                  = 199 // { off_t lseek(int fd, int pad, off_t offset, int whence); }\n\tSYS_TRUNCATE               = 200 // { int truncate(char *path, int pad, off_t length); }\n\tSYS_FTRUNCATE              = 201 // { int ftruncate(int fd, int pad, off_t length); }\n\tSYS___SYSCTL               = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int\n\tSYS_MLOCK                  = 203 // { int mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK                = 204 // { int munlock(const void *addr, size_t len); }\n\tSYS_UNDELETE               = 205 // { int undelete(char *path); }\n\tSYS_FUTIMES                = 206 // { int futimes(int fd, struct timeval *tptr); }\n\tSYS_GETPGID                = 207 // { int getpgid(pid_t pid); }\n\tSYS_POLL                   = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS___SEMCTL               = 220 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_SEMGET                 = 221 // { int semget(key_t key, int nsems, int semflg); }\n\tSYS_SEMOP                  = 222 // { int semop(int semid, struct sembuf *sops, u_int nsops); }\n\tSYS_MSGCTL                 = 224 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_MSGGET                 = 225 // { int msgget(key_t key, int msgflg); }\n\tSYS_MSGSND                 = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV                 = 227 // { int msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT                  = 228 // { caddr_t shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMCTL                 = 229 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_SHMDT                  = 230 // { int shmdt(const void *shmaddr); }\n\tSYS_SHMGET                 = 231 // { int shmget(key_t key, size_t size, int shmflg); }\n\tSYS_CLOCK_GETTIME          = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME          = 233 // { int clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES           = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_NANOSLEEP              = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_MINHERIT               = 250 // { int minherit(void *addr, size_t len, int inherit); }\n\tSYS_RFORK                  = 251 // { int rfork(int flags); }\n\tSYS_OPENBSD_POLL           = 252 // { int openbsd_poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_ISSETUGID              = 253 // { int issetugid(void); }\n\tSYS_LCHOWN                 = 254 // { int lchown(char *path, int uid, int gid); }\n\tSYS_LCHMOD                 = 274 // { int lchmod(char *path, mode_t mode); }\n\tSYS_LUTIMES                = 276 // { int lutimes(char *path, struct timeval *tptr); }\n\tSYS_EXTPREADV              = 289 // { ssize_t extpreadv(int fd, const struct iovec *iovp, int iovcnt, int flags, off_t offset); }\n\tSYS_EXTPWRITEV             = 290 // { ssize_t extpwritev(int fd, const struct iovec *iovp, int iovcnt, int flags, off_t offset); }\n\tSYS_FHSTATFS               = 297 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); }\n\tSYS_FHOPEN                 = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); }\n\tSYS_MODNEXT                = 300 // { int modnext(int modid); }\n\tSYS_MODSTAT                = 301 // { int modstat(int modid, struct module_stat* stat); }\n\tSYS_MODFNEXT               = 302 // { int modfnext(int modid); }\n\tSYS_MODFIND                = 303 // { int modfind(const char *name); }\n\tSYS_KLDLOAD                = 304 // { int kldload(const char *file); }\n\tSYS_KLDUNLOAD              = 305 // { int kldunload(int fileid); }\n\tSYS_KLDFIND                = 306 // { int kldfind(const char *file); }\n\tSYS_KLDNEXT                = 307 // { int kldnext(int fileid); }\n\tSYS_KLDSTAT                = 308 // { int kldstat(int fileid, struct kld_file_stat* stat); }\n\tSYS_KLDFIRSTMOD            = 309 // { int kldfirstmod(int fileid); }\n\tSYS_GETSID                 = 310 // { int getsid(pid_t pid); }\n\tSYS_SETRESUID              = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_SETRESGID              = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_AIO_RETURN             = 314 // { int aio_return(struct aiocb *aiocbp); }\n\tSYS_AIO_SUSPEND            = 315 // { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); }\n\tSYS_AIO_CANCEL             = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); }\n\tSYS_AIO_ERROR              = 317 // { int aio_error(struct aiocb *aiocbp); }\n\tSYS_AIO_READ               = 318 // { int aio_read(struct aiocb *aiocbp); }\n\tSYS_AIO_WRITE              = 319 // { int aio_write(struct aiocb *aiocbp); }\n\tSYS_LIO_LISTIO             = 320 // { int lio_listio(int mode, struct aiocb * const *acb_list, int nent, struct sigevent *sig); }\n\tSYS_YIELD                  = 321 // { int yield(void); }\n\tSYS_MLOCKALL               = 324 // { int mlockall(int how); }\n\tSYS_MUNLOCKALL             = 325 // { int munlockall(void); }\n\tSYS___GETCWD               = 326 // { int __getcwd(u_char *buf, u_int buflen); }\n\tSYS_SCHED_SETPARAM         = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); }\n\tSYS_SCHED_GETPARAM         = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); }\n\tSYS_SCHED_SETSCHEDULER     = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); }\n\tSYS_SCHED_GETSCHEDULER     = 330 // { int sched_getscheduler (pid_t pid); }\n\tSYS_SCHED_YIELD            = 331 // { int sched_yield (void); }\n\tSYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); }\n\tSYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); }\n\tSYS_SCHED_RR_GET_INTERVAL  = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); }\n\tSYS_UTRACE                 = 335 // { int utrace(const void *addr, size_t len); }\n\tSYS_KLDSYM                 = 337 // { int kldsym(int fileid, int cmd, void *data); }\n\tSYS_JAIL                   = 338 // { int jail(struct jail *jail); }\n\tSYS_SIGPROCMASK            = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); }\n\tSYS_SIGSUSPEND             = 341 // { int sigsuspend(const sigset_t *sigmask); }\n\tSYS_SIGACTION              = 342 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); }\n\tSYS_SIGPENDING             = 343 // { int sigpending(sigset_t *set); }\n\tSYS_SIGRETURN              = 344 // { int sigreturn(ucontext_t *sigcntxp); }\n\tSYS_SIGTIMEDWAIT           = 345 // { int sigtimedwait(const sigset_t *set,siginfo_t *info, const struct timespec *timeout); }\n\tSYS_SIGWAITINFO            = 346 // { int sigwaitinfo(const sigset_t *set,siginfo_t *info); }\n\tSYS___ACL_GET_FILE         = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_FILE         = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_GET_FD           = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_FD           = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_DELETE_FILE      = 351 // { int __acl_delete_file(const char *path, acl_type_t type); }\n\tSYS___ACL_DELETE_FD        = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); }\n\tSYS___ACL_ACLCHECK_FILE    = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_ACLCHECK_FD      = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS_EXTATTRCTL             = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FILE       = 356 // { int extattr_set_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FILE       = 357 // { int extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FILE    = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_AIO_WAITCOMPLETE       = 359 // { int aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); }\n\tSYS_GETRESUID              = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_GETRESGID              = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_KQUEUE                 = 362 // { int kqueue(void); }\n\tSYS_KEVENT                 = 363 // { int kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_KENV                   = 390 // { int kenv(int what, const char *name, char *value, int len); }\n\tSYS_LCHFLAGS               = 391 // { int lchflags(const char *path, u_long flags); }\n\tSYS_UUIDGEN                = 392 // { int uuidgen(struct uuid *store, int count); }\n\tSYS_SENDFILE               = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); }\n\tSYS_VARSYM_SET             = 450 // { int varsym_set(int level, const char *name, const char *data); }\n\tSYS_VARSYM_GET             = 451 // { int varsym_get(int mask, const char *wild, char *buf, int bufsize); }\n\tSYS_VARSYM_LIST            = 452 // { int varsym_list(int level, char *buf, int maxsize, int *marker); }\n\tSYS_EXEC_SYS_REGISTER      = 465 // { int exec_sys_register(void *entry); }\n\tSYS_EXEC_SYS_UNREGISTER    = 466 // { int exec_sys_unregister(int id); }\n\tSYS_SYS_CHECKPOINT         = 467 // { int sys_checkpoint(int type, int fd, pid_t pid, int retval); }\n\tSYS_MOUNTCTL               = 468 // { int mountctl(const char *path, int op, int fd, const void *ctl, int ctllen, void *buf, int buflen); }\n\tSYS_UMTX_SLEEP             = 469 // { int umtx_sleep(volatile const int *ptr, int value, int timeout); }\n\tSYS_UMTX_WAKEUP            = 470 // { int umtx_wakeup(volatile const int *ptr, int count); }\n\tSYS_JAIL_ATTACH            = 471 // { int jail_attach(int jid); }\n\tSYS_SET_TLS_AREA           = 472 // { int set_tls_area(int which, struct tls_info *info, size_t infosize); }\n\tSYS_GET_TLS_AREA           = 473 // { int get_tls_area(int which, struct tls_info *info, size_t infosize); }\n\tSYS_CLOSEFROM              = 474 // { int closefrom(int fd); }\n\tSYS_STAT                   = 475 // { int stat(const char *path, struct stat *ub); }\n\tSYS_FSTAT                  = 476 // { int fstat(int fd, struct stat *sb); }\n\tSYS_LSTAT                  = 477 // { int lstat(const char *path, struct stat *ub); }\n\tSYS_FHSTAT                 = 478 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); }\n\tSYS_GETDIRENTRIES          = 479 // { int getdirentries(int fd, char *buf, u_int count, long *basep); }\n\tSYS_GETDENTS               = 480 // { int getdents(int fd, char *buf, size_t count); }\n\tSYS_USCHED_SET             = 481 // { int usched_set(pid_t pid, int cmd, void *data, int bytes); }\n\tSYS_EXTACCEPT              = 482 // { int extaccept(int s, int flags, caddr_t name, int *anamelen); }\n\tSYS_EXTCONNECT             = 483 // { int extconnect(int s, int flags, caddr_t name, int namelen); }\n\tSYS_MCONTROL               = 485 // { int mcontrol(void *addr, size_t len, int behav, off_t value); }\n\tSYS_VMSPACE_CREATE         = 486 // { int vmspace_create(void *id, int type, void *data); }\n\tSYS_VMSPACE_DESTROY        = 487 // { int vmspace_destroy(void *id); }\n\tSYS_VMSPACE_CTL            = 488 // { int vmspace_ctl(void *id, int cmd, \t\tstruct trapframe *tframe,\tstruct vextframe *vframe); }\n\tSYS_VMSPACE_MMAP           = 489 // { int vmspace_mmap(void *id, void *addr, size_t len, int prot, int flags, int fd, off_t offset); }\n\tSYS_VMSPACE_MUNMAP         = 490 // { int vmspace_munmap(void *id, void *addr,\tsize_t len); }\n\tSYS_VMSPACE_MCONTROL       = 491 // { int vmspace_mcontrol(void *id, void *addr, \tsize_t len, int behav, off_t value); }\n\tSYS_VMSPACE_PREAD          = 492 // { ssize_t vmspace_pread(void *id, void *buf, size_t nbyte, int flags, off_t offset); }\n\tSYS_VMSPACE_PWRITE         = 493 // { ssize_t vmspace_pwrite(void *id, const void *buf, size_t nbyte, int flags, off_t offset); }\n\tSYS_EXTEXIT                = 494 // { void extexit(int how, int status, void *addr); }\n\tSYS_LWP_CREATE             = 495 // { int lwp_create(struct lwp_params *params); }\n\tSYS_LWP_GETTID             = 496 // { lwpid_t lwp_gettid(void); }\n\tSYS_LWP_KILL               = 497 // { int lwp_kill(pid_t pid, lwpid_t tid, int signum); }\n\tSYS_LWP_RTPRIO             = 498 // { int lwp_rtprio(int function, pid_t pid, lwpid_t tid, struct rtprio *rtp); }\n\tSYS_PSELECT                = 499 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts,    const sigset_t *sigmask); }\n\tSYS_STATVFS                = 500 // { int statvfs(const char *path, struct statvfs *buf); }\n\tSYS_FSTATVFS               = 501 // { int fstatvfs(int fd, struct statvfs *buf); }\n\tSYS_FHSTATVFS              = 502 // { int fhstatvfs(const struct fhandle *u_fhp, struct statvfs *buf); }\n\tSYS_GETVFSSTAT             = 503 // { int getvfsstat(struct statfs *buf,          struct statvfs *vbuf, long vbufsize, int flags); }\n\tSYS_OPENAT                 = 504 // { int openat(int fd, char *path, int flags, int mode); }\n\tSYS_FSTATAT                = 505 // { int fstatat(int fd, char *path, \tstruct stat *sb, int flags); }\n\tSYS_FCHMODAT               = 506 // { int fchmodat(int fd, char *path, int mode, int flags); }\n\tSYS_FCHOWNAT               = 507 // { int fchownat(int fd, char *path, int uid, int gid, int flags); }\n\tSYS_UNLINKAT               = 508 // { int unlinkat(int fd, char *path, int flags); }\n\tSYS_FACCESSAT              = 509 // { int faccessat(int fd, char *path, int amode, int flags); }\n\tSYS_MQ_OPEN                = 510 // { mqd_t mq_open(const char * name, int oflag, mode_t mode, struct mq_attr *attr); }\n\tSYS_MQ_CLOSE               = 511 // { int mq_close(mqd_t mqdes); }\n\tSYS_MQ_UNLINK              = 512 // { int mq_unlink(const char *name); }\n\tSYS_MQ_GETATTR             = 513 // { int mq_getattr(mqd_t mqdes, struct mq_attr *mqstat); }\n\tSYS_MQ_SETATTR             = 514 // { int mq_setattr(mqd_t mqdes, const struct mq_attr *mqstat, struct mq_attr *omqstat); }\n\tSYS_MQ_NOTIFY              = 515 // { int mq_notify(mqd_t mqdes, const struct sigevent *notification); }\n\tSYS_MQ_SEND                = 516 // { int mq_send(mqd_t mqdes, const char *msg_ptr, size_t msg_len, unsigned msg_prio); }\n\tSYS_MQ_RECEIVE             = 517 // { ssize_t mq_receive(mqd_t mqdes, char *msg_ptr, size_t msg_len, unsigned *msg_prio); }\n\tSYS_MQ_TIMEDSEND           = 518 // { int mq_timedsend(mqd_t mqdes, const char *msg_ptr, size_t msg_len, unsigned msg_prio, const struct timespec *abs_timeout); }\n\tSYS_MQ_TIMEDRECEIVE        = 519 // { ssize_t mq_timedreceive(mqd_t mqdes, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); }\n\tSYS_IOPRIO_SET             = 520 // { int ioprio_set(int which, int who, int prio); }\n\tSYS_IOPRIO_GET             = 521 // { int ioprio_get(int which, int who); }\n\tSYS_CHROOT_KERNEL          = 522 // { int chroot_kernel(char *path); }\n\tSYS_RENAMEAT               = 523 // { int renameat(int oldfd, char *old, int newfd, char *new); }\n\tSYS_MKDIRAT                = 524 // { int mkdirat(int fd, char *path, mode_t mode); }\n\tSYS_MKFIFOAT               = 525 // { int mkfifoat(int fd, char *path, mode_t mode); }\n\tSYS_MKNODAT                = 526 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); }\n\tSYS_READLINKAT             = 527 // { int readlinkat(int fd, char *path, char *buf, size_t bufsize); }\n\tSYS_SYMLINKAT              = 528 // { int symlinkat(char *path1, int fd, char *path2); }\n\tSYS_SWAPOFF                = 529 // { int swapoff(char *name); }\n\tSYS_VQUOTACTL              = 530 // { int vquotactl(const char *path, struct plistref *pref); }\n\tSYS_LINKAT                 = 531 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flags); }\n\tSYS_EACCESS                = 532 // { int eaccess(char *path, int flags); }\n\tSYS_LPATHCONF              = 533 // { int lpathconf(char *path, int name); }\n\tSYS_VMM_GUEST_CTL          = 534 // { int vmm_guest_ctl(int op, struct vmm_guest_options *options); }\n\tSYS_VMM_GUEST_SYNC_ADDR    = 535 // { int vmm_guest_sync_addr(long *dstaddr, long *srcaddr); }\n\tSYS_PROCCTL                = 536 // { int procctl(idtype_t idtype, id_t id, int cmd, void *data); }\n\tSYS_CHFLAGSAT              = 537 // { int chflagsat(int fd, const char *path, u_long flags, int atflags);}\n\tSYS_PIPE2                  = 538 // { int pipe2(int *fildes, int flags); }\n\tSYS_UTIMENSAT              = 539 // { int utimensat(int fd, const char *path, const struct timespec *ts, int flags); }\n\tSYS_FUTIMENS               = 540 // { int futimens(int fd, const struct timespec *ts); }\n\tSYS_ACCEPT4                = 541 // { int accept4(int s, caddr_t name, int *anamelen, int flags); }\n\tSYS_LWP_SETNAME            = 542 // { int lwp_setname(lwpid_t tid, const char *name); }\n\tSYS_PPOLL                  = 543 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *sigmask); }\n\tSYS_LWP_SETAFFINITY        = 544 // { int lwp_setaffinity(pid_t pid, lwpid_t tid, const cpumask_t *mask); }\n\tSYS_LWP_GETAFFINITY        = 545 // { int lwp_getaffinity(pid_t pid, lwpid_t tid, cpumask_t *mask); }\n\tSYS_LWP_CREATE2            = 546 // { int lwp_create2(struct lwp_params *params, const cpumask_t *mask); }\n\tSYS_GETCPUCLOCKID          = 547 // { int getcpuclockid(pid_t pid, lwpid_t lwp_id, clockid_t *clock_id); }\n\tSYS_WAIT6                  = 548 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); }\n\tSYS_LWP_GETNAME            = 549 // { int lwp_getname(lwpid_t tid, char *name, size_t len); }\n\tSYS_GETRANDOM              = 550 // { ssize_t getrandom(void *buf, size_t len, unsigned flags); }\n\tSYS___REALPATH             = 551 // { ssize_t __realpath(const char *path, char *buf, size_t len); }\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go",
    "content": "// go run mksysnum.go https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build 386 && freebsd\n\npackage unix\n\nconst (\n\t// SYS_NOSYS = 0;  // { int nosys(void); } syscall nosys_args int\n\tSYS_EXIT                     = 1   // { void sys_exit(int rval); } exit sys_exit_args void\n\tSYS_FORK                     = 2   // { int fork(void); }\n\tSYS_READ                     = 3   // { ssize_t read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE                    = 4   // { ssize_t write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN                     = 5   // { int open(char *path, int flags, int mode); }\n\tSYS_CLOSE                    = 6   // { int close(int fd); }\n\tSYS_WAIT4                    = 7   // { int wait4(int pid, int *status, int options, struct rusage *rusage); }\n\tSYS_LINK                     = 9   // { int link(char *path, char *link); }\n\tSYS_UNLINK                   = 10  // { int unlink(char *path); }\n\tSYS_CHDIR                    = 12  // { int chdir(char *path); }\n\tSYS_FCHDIR                   = 13  // { int fchdir(int fd); }\n\tSYS_CHMOD                    = 15  // { int chmod(char *path, int mode); }\n\tSYS_CHOWN                    = 16  // { int chown(char *path, int uid, int gid); }\n\tSYS_BREAK                    = 17  // { caddr_t break(char *nsize); }\n\tSYS_GETPID                   = 20  // { pid_t getpid(void); }\n\tSYS_MOUNT                    = 21  // { int mount(char *type, char *path, int flags, caddr_t data); }\n\tSYS_UNMOUNT                  = 22  // { int unmount(char *path, int flags); }\n\tSYS_SETUID                   = 23  // { int setuid(uid_t uid); }\n\tSYS_GETUID                   = 24  // { uid_t getuid(void); }\n\tSYS_GETEUID                  = 25  // { uid_t geteuid(void); }\n\tSYS_PTRACE                   = 26  // { int ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG                  = 27  // { int recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG                  = 28  // { int sendmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_RECVFROM                 = 29  // { int recvfrom(int s, caddr_t buf, size_t len, int flags, struct sockaddr * __restrict from, __socklen_t * __restrict fromlenaddr); }\n\tSYS_ACCEPT                   = 30  // { int accept(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen); }\n\tSYS_GETPEERNAME              = 31  // { int getpeername(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }\n\tSYS_GETSOCKNAME              = 32  // { int getsockname(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }\n\tSYS_ACCESS                   = 33  // { int access(char *path, int amode); }\n\tSYS_CHFLAGS                  = 34  // { int chflags(const char *path, u_long flags); }\n\tSYS_FCHFLAGS                 = 35  // { int fchflags(int fd, u_long flags); }\n\tSYS_SYNC                     = 36  // { int sync(void); }\n\tSYS_KILL                     = 37  // { int kill(int pid, int signum); }\n\tSYS_GETPPID                  = 39  // { pid_t getppid(void); }\n\tSYS_DUP                      = 41  // { int dup(u_int fd); }\n\tSYS_GETEGID                  = 43  // { gid_t getegid(void); }\n\tSYS_PROFIL                   = 44  // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); }\n\tSYS_KTRACE                   = 45  // { int ktrace(const char *fname, int ops, int facs, int pid); }\n\tSYS_GETGID                   = 47  // { gid_t getgid(void); }\n\tSYS_GETLOGIN                 = 49  // { int getlogin(char *namebuf, u_int namelen); }\n\tSYS_SETLOGIN                 = 50  // { int setlogin(char *namebuf); }\n\tSYS_ACCT                     = 51  // { int acct(char *path); }\n\tSYS_SIGALTSTACK              = 53  // { int sigaltstack(stack_t *ss, stack_t *oss); }\n\tSYS_IOCTL                    = 54  // { int ioctl(int fd, u_long com, caddr_t data); }\n\tSYS_REBOOT                   = 55  // { int reboot(int opt); }\n\tSYS_REVOKE                   = 56  // { int revoke(char *path); }\n\tSYS_SYMLINK                  = 57  // { int symlink(char *path, char *link); }\n\tSYS_READLINK                 = 58  // { ssize_t readlink(char *path, char *buf, size_t count); }\n\tSYS_EXECVE                   = 59  // { int execve(char *fname, char **argv, char **envv); }\n\tSYS_UMASK                    = 60  // { int umask(int newmask); }\n\tSYS_CHROOT                   = 61  // { int chroot(char *path); }\n\tSYS_MSYNC                    = 65  // { int msync(void *addr, size_t len, int flags); }\n\tSYS_VFORK                    = 66  // { int vfork(void); }\n\tSYS_SBRK                     = 69  // { int sbrk(int incr); }\n\tSYS_SSTK                     = 70  // { int sstk(int incr); }\n\tSYS_MUNMAP                   = 73  // { int munmap(void *addr, size_t len); }\n\tSYS_MPROTECT                 = 74  // { int mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE                  = 75  // { int madvise(void *addr, size_t len, int behav); }\n\tSYS_MINCORE                  = 78  // { int mincore(const void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS                = 79  // { int getgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS                = 80  // { int setgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_GETPGRP                  = 81  // { int getpgrp(void); }\n\tSYS_SETPGID                  = 82  // { int setpgid(int pid, int pgid); }\n\tSYS_SETITIMER                = 83  // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_SWAPON                   = 85  // { int swapon(char *name); }\n\tSYS_GETITIMER                = 86  // { int getitimer(u_int which, struct itimerval *itv); }\n\tSYS_GETDTABLESIZE            = 89  // { int getdtablesize(void); }\n\tSYS_DUP2                     = 90  // { int dup2(u_int from, u_int to); }\n\tSYS_FCNTL                    = 92  // { int fcntl(int fd, int cmd, long arg); }\n\tSYS_SELECT                   = 93  // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_FSYNC                    = 95  // { int fsync(int fd); }\n\tSYS_SETPRIORITY              = 96  // { int setpriority(int which, int who, int prio); }\n\tSYS_SOCKET                   = 97  // { int socket(int domain, int type, int protocol); }\n\tSYS_CONNECT                  = 98  // { int connect(int s, caddr_t name, int namelen); }\n\tSYS_GETPRIORITY              = 100 // { int getpriority(int which, int who); }\n\tSYS_BIND                     = 104 // { int bind(int s, caddr_t name, int namelen); }\n\tSYS_SETSOCKOPT               = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); }\n\tSYS_LISTEN                   = 106 // { int listen(int s, int backlog); }\n\tSYS_GETTIMEOFDAY             = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_GETRUSAGE                = 117 // { int getrusage(int who, struct rusage *rusage); }\n\tSYS_GETSOCKOPT               = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); }\n\tSYS_READV                    = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); }\n\tSYS_WRITEV                   = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); }\n\tSYS_SETTIMEOFDAY             = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); }\n\tSYS_FCHOWN                   = 123 // { int fchown(int fd, int uid, int gid); }\n\tSYS_FCHMOD                   = 124 // { int fchmod(int fd, int mode); }\n\tSYS_SETREUID                 = 126 // { int setreuid(int ruid, int euid); }\n\tSYS_SETREGID                 = 127 // { int setregid(int rgid, int egid); }\n\tSYS_RENAME                   = 128 // { int rename(char *from, char *to); }\n\tSYS_FLOCK                    = 131 // { int flock(int fd, int how); }\n\tSYS_MKFIFO                   = 132 // { int mkfifo(char *path, int mode); }\n\tSYS_SENDTO                   = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); }\n\tSYS_SHUTDOWN                 = 134 // { int shutdown(int s, int how); }\n\tSYS_SOCKETPAIR               = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR                    = 136 // { int mkdir(char *path, int mode); }\n\tSYS_RMDIR                    = 137 // { int rmdir(char *path); }\n\tSYS_UTIMES                   = 138 // { int utimes(char *path, struct timeval *tptr); }\n\tSYS_ADJTIME                  = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); }\n\tSYS_SETSID                   = 147 // { int setsid(void); }\n\tSYS_QUOTACTL                 = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); }\n\tSYS_NLM_SYSCALL              = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); }\n\tSYS_NFSSVC                   = 155 // { int nfssvc(int flag, caddr_t argp); }\n\tSYS_LGETFH                   = 160 // { int lgetfh(char *fname, struct fhandle *fhp); }\n\tSYS_GETFH                    = 161 // { int getfh(char *fname, struct fhandle *fhp); }\n\tSYS_SYSARCH                  = 165 // { int sysarch(int op, char *parms); }\n\tSYS_RTPRIO                   = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); }\n\tSYS_SEMSYS                   = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); }\n\tSYS_MSGSYS                   = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); }\n\tSYS_SHMSYS                   = 171 // { int shmsys(int which, int a2, int a3, int a4); }\n\tSYS_SETFIB                   = 175 // { int setfib(int fibnum); }\n\tSYS_NTP_ADJTIME              = 176 // { int ntp_adjtime(struct timex *tp); }\n\tSYS_SETGID                   = 181 // { int setgid(gid_t gid); }\n\tSYS_SETEGID                  = 182 // { int setegid(gid_t egid); }\n\tSYS_SETEUID                  = 183 // { int seteuid(uid_t euid); }\n\tSYS_PATHCONF                 = 191 // { int pathconf(char *path, int name); }\n\tSYS_FPATHCONF                = 192 // { int fpathconf(int fd, int name); }\n\tSYS_GETRLIMIT                = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int\n\tSYS_SETRLIMIT                = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int\n\tSYS___SYSCTL                 = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int\n\tSYS_MLOCK                    = 203 // { int mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK                  = 204 // { int munlock(const void *addr, size_t len); }\n\tSYS_UNDELETE                 = 205 // { int undelete(char *path); }\n\tSYS_FUTIMES                  = 206 // { int futimes(int fd, struct timeval *tptr); }\n\tSYS_GETPGID                  = 207 // { int getpgid(pid_t pid); }\n\tSYS_POLL                     = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_SEMGET                   = 221 // { int semget(key_t key, int nsems, int semflg); }\n\tSYS_SEMOP                    = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_MSGGET                   = 225 // { int msgget(key_t key, int msgflg); }\n\tSYS_MSGSND                   = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV                   = 227 // { ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT                    = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT                    = 230 // { int shmdt(const void *shmaddr); }\n\tSYS_SHMGET                   = 231 // { int shmget(key_t key, size_t size, int shmflg); }\n\tSYS_CLOCK_GETTIME            = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME            = 233 // { int clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES             = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_KTIMER_CREATE            = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); }\n\tSYS_KTIMER_DELETE            = 236 // { int ktimer_delete(int timerid); }\n\tSYS_KTIMER_SETTIME           = 237 // { int ktimer_settime(int timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }\n\tSYS_KTIMER_GETTIME           = 238 // { int ktimer_gettime(int timerid, struct itimerspec *value); }\n\tSYS_KTIMER_GETOVERRUN        = 239 // { int ktimer_getoverrun(int timerid); }\n\tSYS_NANOSLEEP                = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_FFCLOCK_GETCOUNTER       = 241 // { int ffclock_getcounter(ffcounter *ffcount); }\n\tSYS_FFCLOCK_SETESTIMATE      = 242 // { int ffclock_setestimate(struct ffclock_estimate *cest); }\n\tSYS_FFCLOCK_GETESTIMATE      = 243 // { int ffclock_getestimate(struct ffclock_estimate *cest); }\n\tSYS_CLOCK_NANOSLEEP          = 244 // { int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_CLOCK_GETCPUCLOCKID2     = 247 // { int clock_getcpuclockid2(id_t id, int which, clockid_t *clock_id); }\n\tSYS_NTP_GETTIME              = 248 // { int ntp_gettime(struct ntptimeval *ntvp); }\n\tSYS_MINHERIT                 = 250 // { int minherit(void *addr, size_t len, int inherit); }\n\tSYS_RFORK                    = 251 // { int rfork(int flags); }\n\tSYS_ISSETUGID                = 253 // { int issetugid(void); }\n\tSYS_LCHOWN                   = 254 // { int lchown(char *path, int uid, int gid); }\n\tSYS_AIO_READ                 = 255 // { int aio_read(struct aiocb *aiocbp); }\n\tSYS_AIO_WRITE                = 256 // { int aio_write(struct aiocb *aiocbp); }\n\tSYS_LIO_LISTIO               = 257 // { int lio_listio(int mode, struct aiocb* const *acb_list, int nent, struct sigevent *sig); }\n\tSYS_LCHMOD                   = 274 // { int lchmod(char *path, mode_t mode); }\n\tSYS_LUTIMES                  = 276 // { int lutimes(char *path, struct timeval *tptr); }\n\tSYS_PREADV                   = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }\n\tSYS_PWRITEV                  = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }\n\tSYS_FHOPEN                   = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); }\n\tSYS_MODNEXT                  = 300 // { int modnext(int modid); }\n\tSYS_MODSTAT                  = 301 // { int modstat(int modid, struct module_stat* stat); }\n\tSYS_MODFNEXT                 = 302 // { int modfnext(int modid); }\n\tSYS_MODFIND                  = 303 // { int modfind(const char *name); }\n\tSYS_KLDLOAD                  = 304 // { int kldload(const char *file); }\n\tSYS_KLDUNLOAD                = 305 // { int kldunload(int fileid); }\n\tSYS_KLDFIND                  = 306 // { int kldfind(const char *file); }\n\tSYS_KLDNEXT                  = 307 // { int kldnext(int fileid); }\n\tSYS_KLDSTAT                  = 308 // { int kldstat(int fileid, struct kld_file_stat *stat); }\n\tSYS_KLDFIRSTMOD              = 309 // { int kldfirstmod(int fileid); }\n\tSYS_GETSID                   = 310 // { int getsid(pid_t pid); }\n\tSYS_SETRESUID                = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_SETRESGID                = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_AIO_RETURN               = 314 // { ssize_t aio_return(struct aiocb *aiocbp); }\n\tSYS_AIO_SUSPEND              = 315 // { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); }\n\tSYS_AIO_CANCEL               = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); }\n\tSYS_AIO_ERROR                = 317 // { int aio_error(struct aiocb *aiocbp); }\n\tSYS_YIELD                    = 321 // { int yield(void); }\n\tSYS_MLOCKALL                 = 324 // { int mlockall(int how); }\n\tSYS_MUNLOCKALL               = 325 // { int munlockall(void); }\n\tSYS___GETCWD                 = 326 // { int __getcwd(char *buf, size_t buflen); }\n\tSYS_SCHED_SETPARAM           = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); }\n\tSYS_SCHED_GETPARAM           = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); }\n\tSYS_SCHED_SETSCHEDULER       = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); }\n\tSYS_SCHED_GETSCHEDULER       = 330 // { int sched_getscheduler (pid_t pid); }\n\tSYS_SCHED_YIELD              = 331 // { int sched_yield (void); }\n\tSYS_SCHED_GET_PRIORITY_MAX   = 332 // { int sched_get_priority_max (int policy); }\n\tSYS_SCHED_GET_PRIORITY_MIN   = 333 // { int sched_get_priority_min (int policy); }\n\tSYS_SCHED_RR_GET_INTERVAL    = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); }\n\tSYS_UTRACE                   = 335 // { int utrace(const void *addr, size_t len); }\n\tSYS_KLDSYM                   = 337 // { int kldsym(int fileid, int cmd, void *data); }\n\tSYS_JAIL                     = 338 // { int jail(struct jail *jail); }\n\tSYS_SIGPROCMASK              = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); }\n\tSYS_SIGSUSPEND               = 341 // { int sigsuspend(const sigset_t *sigmask); }\n\tSYS_SIGPENDING               = 343 // { int sigpending(sigset_t *set); }\n\tSYS_SIGTIMEDWAIT             = 345 // { int sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec *timeout); }\n\tSYS_SIGWAITINFO              = 346 // { int sigwaitinfo(const sigset_t *set, siginfo_t *info); }\n\tSYS___ACL_GET_FILE           = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_FILE           = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_GET_FD             = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_FD             = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_DELETE_FILE        = 351 // { int __acl_delete_file(const char *path, acl_type_t type); }\n\tSYS___ACL_DELETE_FD          = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); }\n\tSYS___ACL_ACLCHECK_FILE      = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_ACLCHECK_FD        = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS_EXTATTRCTL               = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FILE         = 356 // { ssize_t extattr_set_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FILE         = 357 // { ssize_t extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FILE      = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_AIO_WAITCOMPLETE         = 359 // { ssize_t aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); }\n\tSYS_GETRESUID                = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_GETRESGID                = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_KQUEUE                   = 362 // { int kqueue(void); }\n\tSYS_EXTATTR_SET_FD           = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FD           = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FD        = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }\n\tSYS___SETUGID                = 374 // { int __setugid(int flag); }\n\tSYS_EACCESS                  = 376 // { int eaccess(char *path, int amode); }\n\tSYS_NMOUNT                   = 378 // { int nmount(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS___MAC_GET_PROC           = 384 // { int __mac_get_proc(struct mac *mac_p); }\n\tSYS___MAC_SET_PROC           = 385 // { int __mac_set_proc(struct mac *mac_p); }\n\tSYS___MAC_GET_FD             = 386 // { int __mac_get_fd(int fd, struct mac *mac_p); }\n\tSYS___MAC_GET_FILE           = 387 // { int __mac_get_file(const char *path_p, struct mac *mac_p); }\n\tSYS___MAC_SET_FD             = 388 // { int __mac_set_fd(int fd, struct mac *mac_p); }\n\tSYS___MAC_SET_FILE           = 389 // { int __mac_set_file(const char *path_p, struct mac *mac_p); }\n\tSYS_KENV                     = 390 // { int kenv(int what, const char *name, char *value, int len); }\n\tSYS_LCHFLAGS                 = 391 // { int lchflags(const char *path, u_long flags); }\n\tSYS_UUIDGEN                  = 392 // { int uuidgen(struct uuid *store, int count); }\n\tSYS_SENDFILE                 = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); }\n\tSYS_MAC_SYSCALL              = 394 // { int mac_syscall(const char *policy, int call, void *arg); }\n\tSYS_KSEM_CLOSE               = 400 // { int ksem_close(semid_t id); }\n\tSYS_KSEM_POST                = 401 // { int ksem_post(semid_t id); }\n\tSYS_KSEM_WAIT                = 402 // { int ksem_wait(semid_t id); }\n\tSYS_KSEM_TRYWAIT             = 403 // { int ksem_trywait(semid_t id); }\n\tSYS_KSEM_INIT                = 404 // { int ksem_init(semid_t *idp, unsigned int value); }\n\tSYS_KSEM_OPEN                = 405 // { int ksem_open(semid_t *idp, const char *name, int oflag, mode_t mode, unsigned int value); }\n\tSYS_KSEM_UNLINK              = 406 // { int ksem_unlink(const char *name); }\n\tSYS_KSEM_GETVALUE            = 407 // { int ksem_getvalue(semid_t id, int *val); }\n\tSYS_KSEM_DESTROY             = 408 // { int ksem_destroy(semid_t id); }\n\tSYS___MAC_GET_PID            = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); }\n\tSYS___MAC_GET_LINK           = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); }\n\tSYS___MAC_SET_LINK           = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); }\n\tSYS_EXTATTR_SET_LINK         = 412 // { ssize_t extattr_set_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_LINK         = 413 // { ssize_t extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_LINK      = 414 // { int extattr_delete_link(const char *path, int attrnamespace, const char *attrname); }\n\tSYS___MAC_EXECVE             = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); }\n\tSYS_SIGACTION                = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); }\n\tSYS_SIGRETURN                = 417 // { int sigreturn(const struct __ucontext *sigcntxp); }\n\tSYS_GETCONTEXT               = 421 // { int getcontext(struct __ucontext *ucp); }\n\tSYS_SETCONTEXT               = 422 // { int setcontext(const struct __ucontext *ucp); }\n\tSYS_SWAPCONTEXT              = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); }\n\tSYS_SWAPOFF                  = 424 // { int swapoff(const char *name); }\n\tSYS___ACL_GET_LINK           = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_LINK           = 426 // { int __acl_set_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_DELETE_LINK        = 427 // { int __acl_delete_link(const char *path, acl_type_t type); }\n\tSYS___ACL_ACLCHECK_LINK      = 428 // { int __acl_aclcheck_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS_SIGWAIT                  = 429 // { int sigwait(const sigset_t *set, int *sig); }\n\tSYS_THR_CREATE               = 430 // { int thr_create(ucontext_t *ctx, long *id, int flags); }\n\tSYS_THR_EXIT                 = 431 // { void thr_exit(long *state); }\n\tSYS_THR_SELF                 = 432 // { int thr_self(long *id); }\n\tSYS_THR_KILL                 = 433 // { int thr_kill(long id, int sig); }\n\tSYS_JAIL_ATTACH              = 436 // { int jail_attach(int jid); }\n\tSYS_EXTATTR_LIST_FD          = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_FILE        = 438 // { ssize_t extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_LINK        = 439 // { ssize_t extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_KSEM_TIMEDWAIT           = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); }\n\tSYS_THR_SUSPEND              = 442 // { int thr_suspend(const struct timespec *timeout); }\n\tSYS_THR_WAKE                 = 443 // { int thr_wake(long id); }\n\tSYS_KLDUNLOADF               = 444 // { int kldunloadf(int fileid, int flags); }\n\tSYS_AUDIT                    = 445 // { int audit(const void *record, u_int length); }\n\tSYS_AUDITON                  = 446 // { int auditon(int cmd, void *data, u_int length); }\n\tSYS_GETAUID                  = 447 // { int getauid(uid_t *auid); }\n\tSYS_SETAUID                  = 448 // { int setauid(uid_t *auid); }\n\tSYS_GETAUDIT                 = 449 // { int getaudit(struct auditinfo *auditinfo); }\n\tSYS_SETAUDIT                 = 450 // { int setaudit(struct auditinfo *auditinfo); }\n\tSYS_GETAUDIT_ADDR            = 451 // { int getaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); }\n\tSYS_SETAUDIT_ADDR            = 452 // { int setaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); }\n\tSYS_AUDITCTL                 = 453 // { int auditctl(char *path); }\n\tSYS__UMTX_OP                 = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); }\n\tSYS_THR_NEW                  = 455 // { int thr_new(struct thr_param *param, int param_size); }\n\tSYS_SIGQUEUE                 = 456 // { int sigqueue(pid_t pid, int signum, void *value); }\n\tSYS_KMQ_OPEN                 = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); }\n\tSYS_KMQ_SETATTR              = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); }\n\tSYS_KMQ_TIMEDRECEIVE         = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); }\n\tSYS_KMQ_TIMEDSEND            = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len, unsigned msg_prio, const struct timespec *abs_timeout); }\n\tSYS_KMQ_NOTIFY               = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); }\n\tSYS_KMQ_UNLINK               = 462 // { int kmq_unlink(const char *path); }\n\tSYS_ABORT2                   = 463 // { int abort2(const char *why, int nargs, void **args); }\n\tSYS_THR_SET_NAME             = 464 // { int thr_set_name(long id, const char *name); }\n\tSYS_AIO_FSYNC                = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); }\n\tSYS_RTPRIO_THREAD            = 466 // { int rtprio_thread(int function, lwpid_t lwpid, struct rtprio *rtp); }\n\tSYS_SCTP_PEELOFF             = 471 // { int sctp_peeloff(int sd, uint32_t name); }\n\tSYS_SCTP_GENERIC_SENDMSG     = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }\n\tSYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }\n\tSYS_SCTP_GENERIC_RECVMSG     = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr *from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); }\n\tSYS_PREAD                    = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); }\n\tSYS_PWRITE                   = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); }\n\tSYS_MMAP                     = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); }\n\tSYS_LSEEK                    = 478 // { off_t lseek(int fd, off_t offset, int whence); }\n\tSYS_TRUNCATE                 = 479 // { int truncate(char *path, off_t length); }\n\tSYS_FTRUNCATE                = 480 // { int ftruncate(int fd, off_t length); }\n\tSYS_THR_KILL2                = 481 // { int thr_kill2(pid_t pid, long id, int sig); }\n\tSYS_SHM_OPEN                 = 482 // { int shm_open(const char *path, int flags, mode_t mode); }\n\tSYS_SHM_UNLINK               = 483 // { int shm_unlink(const char *path); }\n\tSYS_CPUSET                   = 484 // { int cpuset(cpusetid_t *setid); }\n\tSYS_CPUSET_SETID             = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, cpusetid_t setid); }\n\tSYS_CPUSET_GETID             = 486 // { int cpuset_getid(cpulevel_t level, cpuwhich_t which, id_t id, cpusetid_t *setid); }\n\tSYS_CPUSET_GETAFFINITY       = 487 // { int cpuset_getaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, cpuset_t *mask); }\n\tSYS_CPUSET_SETAFFINITY       = 488 // { int cpuset_setaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, const cpuset_t *mask); }\n\tSYS_FACCESSAT                = 489 // { int faccessat(int fd, char *path, int amode, int flag); }\n\tSYS_FCHMODAT                 = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT                 = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); }\n\tSYS_FEXECVE                  = 492 // { int fexecve(int fd, char **argv, char **envv); }\n\tSYS_FUTIMESAT                = 494 // { int futimesat(int fd, char *path, struct timeval *times); }\n\tSYS_LINKAT                   = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); }\n\tSYS_MKDIRAT                  = 496 // { int mkdirat(int fd, char *path, mode_t mode); }\n\tSYS_MKFIFOAT                 = 497 // { int mkfifoat(int fd, char *path, mode_t mode); }\n\tSYS_OPENAT                   = 499 // { int openat(int fd, char *path, int flag, mode_t mode); }\n\tSYS_READLINKAT               = 500 // { ssize_t readlinkat(int fd, char *path, char *buf, size_t bufsize); }\n\tSYS_RENAMEAT                 = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); }\n\tSYS_SYMLINKAT                = 502 // { int symlinkat(char *path1, int fd, char *path2); }\n\tSYS_UNLINKAT                 = 503 // { int unlinkat(int fd, char *path, int flag); }\n\tSYS_POSIX_OPENPT             = 504 // { int posix_openpt(int flags); }\n\tSYS_GSSD_SYSCALL             = 505 // { int gssd_syscall(char *path); }\n\tSYS_JAIL_GET                 = 506 // { int jail_get(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS_JAIL_SET                 = 507 // { int jail_set(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS_JAIL_REMOVE              = 508 // { int jail_remove(int jid); }\n\tSYS_CLOSEFROM                = 509 // { int closefrom(int lowfd); }\n\tSYS___SEMCTL                 = 510 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_MSGCTL                   = 511 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_SHMCTL                   = 512 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_LPATHCONF                = 513 // { int lpathconf(char *path, int name); }\n\tSYS___CAP_RIGHTS_GET         = 515 // { int __cap_rights_get(int version, int fd, cap_rights_t *rightsp); }\n\tSYS_CAP_ENTER                = 516 // { int cap_enter(void); }\n\tSYS_CAP_GETMODE              = 517 // { int cap_getmode(u_int *modep); }\n\tSYS_PDFORK                   = 518 // { int pdfork(int *fdp, int flags); }\n\tSYS_PDKILL                   = 519 // { int pdkill(int fd, int signum); }\n\tSYS_PDGETPID                 = 520 // { int pdgetpid(int fd, pid_t *pidp); }\n\tSYS_PSELECT                  = 522 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sm); }\n\tSYS_GETLOGINCLASS            = 523 // { int getloginclass(char *namebuf, size_t namelen); }\n\tSYS_SETLOGINCLASS            = 524 // { int setloginclass(const char *namebuf); }\n\tSYS_RCTL_GET_RACCT           = 525 // { int rctl_get_racct(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_GET_RULES           = 526 // { int rctl_get_rules(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_GET_LIMITS          = 527 // { int rctl_get_limits(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_ADD_RULE            = 528 // { int rctl_add_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_REMOVE_RULE         = 529 // { int rctl_remove_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_POSIX_FALLOCATE          = 530 // { int posix_fallocate(int fd, off_t offset, off_t len); }\n\tSYS_POSIX_FADVISE            = 531 // { int posix_fadvise(int fd, off_t offset, off_t len, int advice); }\n\tSYS_WAIT6                    = 532 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); }\n\tSYS_CAP_RIGHTS_LIMIT         = 533 // { int cap_rights_limit(int fd, cap_rights_t *rightsp); }\n\tSYS_CAP_IOCTLS_LIMIT         = 534 // { int cap_ioctls_limit(int fd, const u_long *cmds, size_t ncmds); }\n\tSYS_CAP_IOCTLS_GET           = 535 // { ssize_t cap_ioctls_get(int fd, u_long *cmds, size_t maxcmds); }\n\tSYS_CAP_FCNTLS_LIMIT         = 536 // { int cap_fcntls_limit(int fd, uint32_t fcntlrights); }\n\tSYS_CAP_FCNTLS_GET           = 537 // { int cap_fcntls_get(int fd, uint32_t *fcntlrightsp); }\n\tSYS_BINDAT                   = 538 // { int bindat(int fd, int s, caddr_t name, int namelen); }\n\tSYS_CONNECTAT                = 539 // { int connectat(int fd, int s, caddr_t name, int namelen); }\n\tSYS_CHFLAGSAT                = 540 // { int chflagsat(int fd, const char *path, u_long flags, int atflag); }\n\tSYS_ACCEPT4                  = 541 // { int accept4(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen, int flags); }\n\tSYS_PIPE2                    = 542 // { int pipe2(int *fildes, int flags); }\n\tSYS_AIO_MLOCK                = 543 // { int aio_mlock(struct aiocb *aiocbp); }\n\tSYS_PROCCTL                  = 544 // { int procctl(idtype_t idtype, id_t id, int com, void *data); }\n\tSYS_PPOLL                    = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); }\n\tSYS_FUTIMENS                 = 546 // { int futimens(int fd, struct timespec *times); }\n\tSYS_UTIMENSAT                = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); }\n\tSYS_FDATASYNC                = 550 // { int fdatasync(int fd); }\n\tSYS_FSTAT                    = 551 // { int fstat(int fd, struct stat *sb); }\n\tSYS_FSTATAT                  = 552 // { int fstatat(int fd, char *path, struct stat *buf, int flag); }\n\tSYS_FHSTAT                   = 553 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); }\n\tSYS_GETDIRENTRIES            = 554 // { ssize_t getdirentries(int fd, char *buf, size_t count, off_t *basep); }\n\tSYS_STATFS                   = 555 // { int statfs(char *path, struct statfs *buf); }\n\tSYS_FSTATFS                  = 556 // { int fstatfs(int fd, struct statfs *buf); }\n\tSYS_GETFSSTAT                = 557 // { int getfsstat(struct statfs *buf, long bufsize, int mode); }\n\tSYS_FHSTATFS                 = 558 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); }\n\tSYS_MKNODAT                  = 559 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); }\n\tSYS_KEVENT                   = 560 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_CPUSET_GETDOMAIN         = 561 // { int cpuset_getdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int *policy); }\n\tSYS_CPUSET_SETDOMAIN         = 562 // { int cpuset_setdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int policy); }\n\tSYS_GETRANDOM                = 563 // { int getrandom(void *buf, size_t buflen, unsigned int flags); }\n\tSYS_GETFHAT                  = 564 // { int getfhat(int fd, char *path, struct fhandle *fhp, int flags); }\n\tSYS_FHLINK                   = 565 // { int fhlink(struct fhandle *fhp, const char *to); }\n\tSYS_FHLINKAT                 = 566 // { int fhlinkat(struct fhandle *fhp, int tofd, const char *to,); }\n\tSYS_FHREADLINK               = 567 // { int fhreadlink(struct fhandle *fhp, char *buf, size_t bufsize); }\n\tSYS___SYSCTLBYNAME           = 570 // { int __sysctlbyname(const char *name, size_t namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }\n\tSYS_CLOSE_RANGE              = 575 // { int close_range(u_int lowfd, u_int highfd, int flags); }\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go",
    "content": "// go run mksysnum.go https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && freebsd\n\npackage unix\n\nconst (\n\t// SYS_NOSYS = 0;  // { int nosys(void); } syscall nosys_args int\n\tSYS_EXIT                     = 1   // { void sys_exit(int rval); } exit sys_exit_args void\n\tSYS_FORK                     = 2   // { int fork(void); }\n\tSYS_READ                     = 3   // { ssize_t read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE                    = 4   // { ssize_t write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN                     = 5   // { int open(char *path, int flags, int mode); }\n\tSYS_CLOSE                    = 6   // { int close(int fd); }\n\tSYS_WAIT4                    = 7   // { int wait4(int pid, int *status, int options, struct rusage *rusage); }\n\tSYS_LINK                     = 9   // { int link(char *path, char *link); }\n\tSYS_UNLINK                   = 10  // { int unlink(char *path); }\n\tSYS_CHDIR                    = 12  // { int chdir(char *path); }\n\tSYS_FCHDIR                   = 13  // { int fchdir(int fd); }\n\tSYS_CHMOD                    = 15  // { int chmod(char *path, int mode); }\n\tSYS_CHOWN                    = 16  // { int chown(char *path, int uid, int gid); }\n\tSYS_BREAK                    = 17  // { caddr_t break(char *nsize); }\n\tSYS_GETPID                   = 20  // { pid_t getpid(void); }\n\tSYS_MOUNT                    = 21  // { int mount(char *type, char *path, int flags, caddr_t data); }\n\tSYS_UNMOUNT                  = 22  // { int unmount(char *path, int flags); }\n\tSYS_SETUID                   = 23  // { int setuid(uid_t uid); }\n\tSYS_GETUID                   = 24  // { uid_t getuid(void); }\n\tSYS_GETEUID                  = 25  // { uid_t geteuid(void); }\n\tSYS_PTRACE                   = 26  // { int ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG                  = 27  // { int recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG                  = 28  // { int sendmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_RECVFROM                 = 29  // { int recvfrom(int s, caddr_t buf, size_t len, int flags, struct sockaddr * __restrict from, __socklen_t * __restrict fromlenaddr); }\n\tSYS_ACCEPT                   = 30  // { int accept(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen); }\n\tSYS_GETPEERNAME              = 31  // { int getpeername(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }\n\tSYS_GETSOCKNAME              = 32  // { int getsockname(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }\n\tSYS_ACCESS                   = 33  // { int access(char *path, int amode); }\n\tSYS_CHFLAGS                  = 34  // { int chflags(const char *path, u_long flags); }\n\tSYS_FCHFLAGS                 = 35  // { int fchflags(int fd, u_long flags); }\n\tSYS_SYNC                     = 36  // { int sync(void); }\n\tSYS_KILL                     = 37  // { int kill(int pid, int signum); }\n\tSYS_GETPPID                  = 39  // { pid_t getppid(void); }\n\tSYS_DUP                      = 41  // { int dup(u_int fd); }\n\tSYS_GETEGID                  = 43  // { gid_t getegid(void); }\n\tSYS_PROFIL                   = 44  // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); }\n\tSYS_KTRACE                   = 45  // { int ktrace(const char *fname, int ops, int facs, int pid); }\n\tSYS_GETGID                   = 47  // { gid_t getgid(void); }\n\tSYS_GETLOGIN                 = 49  // { int getlogin(char *namebuf, u_int namelen); }\n\tSYS_SETLOGIN                 = 50  // { int setlogin(char *namebuf); }\n\tSYS_ACCT                     = 51  // { int acct(char *path); }\n\tSYS_SIGALTSTACK              = 53  // { int sigaltstack(stack_t *ss, stack_t *oss); }\n\tSYS_IOCTL                    = 54  // { int ioctl(int fd, u_long com, caddr_t data); }\n\tSYS_REBOOT                   = 55  // { int reboot(int opt); }\n\tSYS_REVOKE                   = 56  // { int revoke(char *path); }\n\tSYS_SYMLINK                  = 57  // { int symlink(char *path, char *link); }\n\tSYS_READLINK                 = 58  // { ssize_t readlink(char *path, char *buf, size_t count); }\n\tSYS_EXECVE                   = 59  // { int execve(char *fname, char **argv, char **envv); }\n\tSYS_UMASK                    = 60  // { int umask(int newmask); }\n\tSYS_CHROOT                   = 61  // { int chroot(char *path); }\n\tSYS_MSYNC                    = 65  // { int msync(void *addr, size_t len, int flags); }\n\tSYS_VFORK                    = 66  // { int vfork(void); }\n\tSYS_SBRK                     = 69  // { int sbrk(int incr); }\n\tSYS_SSTK                     = 70  // { int sstk(int incr); }\n\tSYS_MUNMAP                   = 73  // { int munmap(void *addr, size_t len); }\n\tSYS_MPROTECT                 = 74  // { int mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE                  = 75  // { int madvise(void *addr, size_t len, int behav); }\n\tSYS_MINCORE                  = 78  // { int mincore(const void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS                = 79  // { int getgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS                = 80  // { int setgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_GETPGRP                  = 81  // { int getpgrp(void); }\n\tSYS_SETPGID                  = 82  // { int setpgid(int pid, int pgid); }\n\tSYS_SETITIMER                = 83  // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_SWAPON                   = 85  // { int swapon(char *name); }\n\tSYS_GETITIMER                = 86  // { int getitimer(u_int which, struct itimerval *itv); }\n\tSYS_GETDTABLESIZE            = 89  // { int getdtablesize(void); }\n\tSYS_DUP2                     = 90  // { int dup2(u_int from, u_int to); }\n\tSYS_FCNTL                    = 92  // { int fcntl(int fd, int cmd, long arg); }\n\tSYS_SELECT                   = 93  // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_FSYNC                    = 95  // { int fsync(int fd); }\n\tSYS_SETPRIORITY              = 96  // { int setpriority(int which, int who, int prio); }\n\tSYS_SOCKET                   = 97  // { int socket(int domain, int type, int protocol); }\n\tSYS_CONNECT                  = 98  // { int connect(int s, caddr_t name, int namelen); }\n\tSYS_GETPRIORITY              = 100 // { int getpriority(int which, int who); }\n\tSYS_BIND                     = 104 // { int bind(int s, caddr_t name, int namelen); }\n\tSYS_SETSOCKOPT               = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); }\n\tSYS_LISTEN                   = 106 // { int listen(int s, int backlog); }\n\tSYS_GETTIMEOFDAY             = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_GETRUSAGE                = 117 // { int getrusage(int who, struct rusage *rusage); }\n\tSYS_GETSOCKOPT               = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); }\n\tSYS_READV                    = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); }\n\tSYS_WRITEV                   = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); }\n\tSYS_SETTIMEOFDAY             = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); }\n\tSYS_FCHOWN                   = 123 // { int fchown(int fd, int uid, int gid); }\n\tSYS_FCHMOD                   = 124 // { int fchmod(int fd, int mode); }\n\tSYS_SETREUID                 = 126 // { int setreuid(int ruid, int euid); }\n\tSYS_SETREGID                 = 127 // { int setregid(int rgid, int egid); }\n\tSYS_RENAME                   = 128 // { int rename(char *from, char *to); }\n\tSYS_FLOCK                    = 131 // { int flock(int fd, int how); }\n\tSYS_MKFIFO                   = 132 // { int mkfifo(char *path, int mode); }\n\tSYS_SENDTO                   = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); }\n\tSYS_SHUTDOWN                 = 134 // { int shutdown(int s, int how); }\n\tSYS_SOCKETPAIR               = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR                    = 136 // { int mkdir(char *path, int mode); }\n\tSYS_RMDIR                    = 137 // { int rmdir(char *path); }\n\tSYS_UTIMES                   = 138 // { int utimes(char *path, struct timeval *tptr); }\n\tSYS_ADJTIME                  = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); }\n\tSYS_SETSID                   = 147 // { int setsid(void); }\n\tSYS_QUOTACTL                 = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); }\n\tSYS_NLM_SYSCALL              = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); }\n\tSYS_NFSSVC                   = 155 // { int nfssvc(int flag, caddr_t argp); }\n\tSYS_LGETFH                   = 160 // { int lgetfh(char *fname, struct fhandle *fhp); }\n\tSYS_GETFH                    = 161 // { int getfh(char *fname, struct fhandle *fhp); }\n\tSYS_SYSARCH                  = 165 // { int sysarch(int op, char *parms); }\n\tSYS_RTPRIO                   = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); }\n\tSYS_SEMSYS                   = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); }\n\tSYS_MSGSYS                   = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); }\n\tSYS_SHMSYS                   = 171 // { int shmsys(int which, int a2, int a3, int a4); }\n\tSYS_SETFIB                   = 175 // { int setfib(int fibnum); }\n\tSYS_NTP_ADJTIME              = 176 // { int ntp_adjtime(struct timex *tp); }\n\tSYS_SETGID                   = 181 // { int setgid(gid_t gid); }\n\tSYS_SETEGID                  = 182 // { int setegid(gid_t egid); }\n\tSYS_SETEUID                  = 183 // { int seteuid(uid_t euid); }\n\tSYS_PATHCONF                 = 191 // { int pathconf(char *path, int name); }\n\tSYS_FPATHCONF                = 192 // { int fpathconf(int fd, int name); }\n\tSYS_GETRLIMIT                = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int\n\tSYS_SETRLIMIT                = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int\n\tSYS___SYSCTL                 = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int\n\tSYS_MLOCK                    = 203 // { int mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK                  = 204 // { int munlock(const void *addr, size_t len); }\n\tSYS_UNDELETE                 = 205 // { int undelete(char *path); }\n\tSYS_FUTIMES                  = 206 // { int futimes(int fd, struct timeval *tptr); }\n\tSYS_GETPGID                  = 207 // { int getpgid(pid_t pid); }\n\tSYS_POLL                     = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_SEMGET                   = 221 // { int semget(key_t key, int nsems, int semflg); }\n\tSYS_SEMOP                    = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_MSGGET                   = 225 // { int msgget(key_t key, int msgflg); }\n\tSYS_MSGSND                   = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV                   = 227 // { ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT                    = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT                    = 230 // { int shmdt(const void *shmaddr); }\n\tSYS_SHMGET                   = 231 // { int shmget(key_t key, size_t size, int shmflg); }\n\tSYS_CLOCK_GETTIME            = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME            = 233 // { int clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES             = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_KTIMER_CREATE            = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); }\n\tSYS_KTIMER_DELETE            = 236 // { int ktimer_delete(int timerid); }\n\tSYS_KTIMER_SETTIME           = 237 // { int ktimer_settime(int timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }\n\tSYS_KTIMER_GETTIME           = 238 // { int ktimer_gettime(int timerid, struct itimerspec *value); }\n\tSYS_KTIMER_GETOVERRUN        = 239 // { int ktimer_getoverrun(int timerid); }\n\tSYS_NANOSLEEP                = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_FFCLOCK_GETCOUNTER       = 241 // { int ffclock_getcounter(ffcounter *ffcount); }\n\tSYS_FFCLOCK_SETESTIMATE      = 242 // { int ffclock_setestimate(struct ffclock_estimate *cest); }\n\tSYS_FFCLOCK_GETESTIMATE      = 243 // { int ffclock_getestimate(struct ffclock_estimate *cest); }\n\tSYS_CLOCK_NANOSLEEP          = 244 // { int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_CLOCK_GETCPUCLOCKID2     = 247 // { int clock_getcpuclockid2(id_t id, int which, clockid_t *clock_id); }\n\tSYS_NTP_GETTIME              = 248 // { int ntp_gettime(struct ntptimeval *ntvp); }\n\tSYS_MINHERIT                 = 250 // { int minherit(void *addr, size_t len, int inherit); }\n\tSYS_RFORK                    = 251 // { int rfork(int flags); }\n\tSYS_ISSETUGID                = 253 // { int issetugid(void); }\n\tSYS_LCHOWN                   = 254 // { int lchown(char *path, int uid, int gid); }\n\tSYS_AIO_READ                 = 255 // { int aio_read(struct aiocb *aiocbp); }\n\tSYS_AIO_WRITE                = 256 // { int aio_write(struct aiocb *aiocbp); }\n\tSYS_LIO_LISTIO               = 257 // { int lio_listio(int mode, struct aiocb* const *acb_list, int nent, struct sigevent *sig); }\n\tSYS_LCHMOD                   = 274 // { int lchmod(char *path, mode_t mode); }\n\tSYS_LUTIMES                  = 276 // { int lutimes(char *path, struct timeval *tptr); }\n\tSYS_PREADV                   = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }\n\tSYS_PWRITEV                  = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }\n\tSYS_FHOPEN                   = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); }\n\tSYS_MODNEXT                  = 300 // { int modnext(int modid); }\n\tSYS_MODSTAT                  = 301 // { int modstat(int modid, struct module_stat* stat); }\n\tSYS_MODFNEXT                 = 302 // { int modfnext(int modid); }\n\tSYS_MODFIND                  = 303 // { int modfind(const char *name); }\n\tSYS_KLDLOAD                  = 304 // { int kldload(const char *file); }\n\tSYS_KLDUNLOAD                = 305 // { int kldunload(int fileid); }\n\tSYS_KLDFIND                  = 306 // { int kldfind(const char *file); }\n\tSYS_KLDNEXT                  = 307 // { int kldnext(int fileid); }\n\tSYS_KLDSTAT                  = 308 // { int kldstat(int fileid, struct kld_file_stat *stat); }\n\tSYS_KLDFIRSTMOD              = 309 // { int kldfirstmod(int fileid); }\n\tSYS_GETSID                   = 310 // { int getsid(pid_t pid); }\n\tSYS_SETRESUID                = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_SETRESGID                = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_AIO_RETURN               = 314 // { ssize_t aio_return(struct aiocb *aiocbp); }\n\tSYS_AIO_SUSPEND              = 315 // { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); }\n\tSYS_AIO_CANCEL               = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); }\n\tSYS_AIO_ERROR                = 317 // { int aio_error(struct aiocb *aiocbp); }\n\tSYS_YIELD                    = 321 // { int yield(void); }\n\tSYS_MLOCKALL                 = 324 // { int mlockall(int how); }\n\tSYS_MUNLOCKALL               = 325 // { int munlockall(void); }\n\tSYS___GETCWD                 = 326 // { int __getcwd(char *buf, size_t buflen); }\n\tSYS_SCHED_SETPARAM           = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); }\n\tSYS_SCHED_GETPARAM           = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); }\n\tSYS_SCHED_SETSCHEDULER       = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); }\n\tSYS_SCHED_GETSCHEDULER       = 330 // { int sched_getscheduler (pid_t pid); }\n\tSYS_SCHED_YIELD              = 331 // { int sched_yield (void); }\n\tSYS_SCHED_GET_PRIORITY_MAX   = 332 // { int sched_get_priority_max (int policy); }\n\tSYS_SCHED_GET_PRIORITY_MIN   = 333 // { int sched_get_priority_min (int policy); }\n\tSYS_SCHED_RR_GET_INTERVAL    = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); }\n\tSYS_UTRACE                   = 335 // { int utrace(const void *addr, size_t len); }\n\tSYS_KLDSYM                   = 337 // { int kldsym(int fileid, int cmd, void *data); }\n\tSYS_JAIL                     = 338 // { int jail(struct jail *jail); }\n\tSYS_SIGPROCMASK              = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); }\n\tSYS_SIGSUSPEND               = 341 // { int sigsuspend(const sigset_t *sigmask); }\n\tSYS_SIGPENDING               = 343 // { int sigpending(sigset_t *set); }\n\tSYS_SIGTIMEDWAIT             = 345 // { int sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec *timeout); }\n\tSYS_SIGWAITINFO              = 346 // { int sigwaitinfo(const sigset_t *set, siginfo_t *info); }\n\tSYS___ACL_GET_FILE           = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_FILE           = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_GET_FD             = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_FD             = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_DELETE_FILE        = 351 // { int __acl_delete_file(const char *path, acl_type_t type); }\n\tSYS___ACL_DELETE_FD          = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); }\n\tSYS___ACL_ACLCHECK_FILE      = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_ACLCHECK_FD        = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS_EXTATTRCTL               = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FILE         = 356 // { ssize_t extattr_set_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FILE         = 357 // { ssize_t extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FILE      = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_AIO_WAITCOMPLETE         = 359 // { ssize_t aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); }\n\tSYS_GETRESUID                = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_GETRESGID                = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_KQUEUE                   = 362 // { int kqueue(void); }\n\tSYS_EXTATTR_SET_FD           = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FD           = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FD        = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }\n\tSYS___SETUGID                = 374 // { int __setugid(int flag); }\n\tSYS_EACCESS                  = 376 // { int eaccess(char *path, int amode); }\n\tSYS_NMOUNT                   = 378 // { int nmount(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS___MAC_GET_PROC           = 384 // { int __mac_get_proc(struct mac *mac_p); }\n\tSYS___MAC_SET_PROC           = 385 // { int __mac_set_proc(struct mac *mac_p); }\n\tSYS___MAC_GET_FD             = 386 // { int __mac_get_fd(int fd, struct mac *mac_p); }\n\tSYS___MAC_GET_FILE           = 387 // { int __mac_get_file(const char *path_p, struct mac *mac_p); }\n\tSYS___MAC_SET_FD             = 388 // { int __mac_set_fd(int fd, struct mac *mac_p); }\n\tSYS___MAC_SET_FILE           = 389 // { int __mac_set_file(const char *path_p, struct mac *mac_p); }\n\tSYS_KENV                     = 390 // { int kenv(int what, const char *name, char *value, int len); }\n\tSYS_LCHFLAGS                 = 391 // { int lchflags(const char *path, u_long flags); }\n\tSYS_UUIDGEN                  = 392 // { int uuidgen(struct uuid *store, int count); }\n\tSYS_SENDFILE                 = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); }\n\tSYS_MAC_SYSCALL              = 394 // { int mac_syscall(const char *policy, int call, void *arg); }\n\tSYS_KSEM_CLOSE               = 400 // { int ksem_close(semid_t id); }\n\tSYS_KSEM_POST                = 401 // { int ksem_post(semid_t id); }\n\tSYS_KSEM_WAIT                = 402 // { int ksem_wait(semid_t id); }\n\tSYS_KSEM_TRYWAIT             = 403 // { int ksem_trywait(semid_t id); }\n\tSYS_KSEM_INIT                = 404 // { int ksem_init(semid_t *idp, unsigned int value); }\n\tSYS_KSEM_OPEN                = 405 // { int ksem_open(semid_t *idp, const char *name, int oflag, mode_t mode, unsigned int value); }\n\tSYS_KSEM_UNLINK              = 406 // { int ksem_unlink(const char *name); }\n\tSYS_KSEM_GETVALUE            = 407 // { int ksem_getvalue(semid_t id, int *val); }\n\tSYS_KSEM_DESTROY             = 408 // { int ksem_destroy(semid_t id); }\n\tSYS___MAC_GET_PID            = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); }\n\tSYS___MAC_GET_LINK           = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); }\n\tSYS___MAC_SET_LINK           = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); }\n\tSYS_EXTATTR_SET_LINK         = 412 // { ssize_t extattr_set_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_LINK         = 413 // { ssize_t extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_LINK      = 414 // { int extattr_delete_link(const char *path, int attrnamespace, const char *attrname); }\n\tSYS___MAC_EXECVE             = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); }\n\tSYS_SIGACTION                = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); }\n\tSYS_SIGRETURN                = 417 // { int sigreturn(const struct __ucontext *sigcntxp); }\n\tSYS_GETCONTEXT               = 421 // { int getcontext(struct __ucontext *ucp); }\n\tSYS_SETCONTEXT               = 422 // { int setcontext(const struct __ucontext *ucp); }\n\tSYS_SWAPCONTEXT              = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); }\n\tSYS_SWAPOFF                  = 424 // { int swapoff(const char *name); }\n\tSYS___ACL_GET_LINK           = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_LINK           = 426 // { int __acl_set_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_DELETE_LINK        = 427 // { int __acl_delete_link(const char *path, acl_type_t type); }\n\tSYS___ACL_ACLCHECK_LINK      = 428 // { int __acl_aclcheck_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS_SIGWAIT                  = 429 // { int sigwait(const sigset_t *set, int *sig); }\n\tSYS_THR_CREATE               = 430 // { int thr_create(ucontext_t *ctx, long *id, int flags); }\n\tSYS_THR_EXIT                 = 431 // { void thr_exit(long *state); }\n\tSYS_THR_SELF                 = 432 // { int thr_self(long *id); }\n\tSYS_THR_KILL                 = 433 // { int thr_kill(long id, int sig); }\n\tSYS_JAIL_ATTACH              = 436 // { int jail_attach(int jid); }\n\tSYS_EXTATTR_LIST_FD          = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_FILE        = 438 // { ssize_t extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_LINK        = 439 // { ssize_t extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_KSEM_TIMEDWAIT           = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); }\n\tSYS_THR_SUSPEND              = 442 // { int thr_suspend(const struct timespec *timeout); }\n\tSYS_THR_WAKE                 = 443 // { int thr_wake(long id); }\n\tSYS_KLDUNLOADF               = 444 // { int kldunloadf(int fileid, int flags); }\n\tSYS_AUDIT                    = 445 // { int audit(const void *record, u_int length); }\n\tSYS_AUDITON                  = 446 // { int auditon(int cmd, void *data, u_int length); }\n\tSYS_GETAUID                  = 447 // { int getauid(uid_t *auid); }\n\tSYS_SETAUID                  = 448 // { int setauid(uid_t *auid); }\n\tSYS_GETAUDIT                 = 449 // { int getaudit(struct auditinfo *auditinfo); }\n\tSYS_SETAUDIT                 = 450 // { int setaudit(struct auditinfo *auditinfo); }\n\tSYS_GETAUDIT_ADDR            = 451 // { int getaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); }\n\tSYS_SETAUDIT_ADDR            = 452 // { int setaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); }\n\tSYS_AUDITCTL                 = 453 // { int auditctl(char *path); }\n\tSYS__UMTX_OP                 = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); }\n\tSYS_THR_NEW                  = 455 // { int thr_new(struct thr_param *param, int param_size); }\n\tSYS_SIGQUEUE                 = 456 // { int sigqueue(pid_t pid, int signum, void *value); }\n\tSYS_KMQ_OPEN                 = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); }\n\tSYS_KMQ_SETATTR              = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); }\n\tSYS_KMQ_TIMEDRECEIVE         = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); }\n\tSYS_KMQ_TIMEDSEND            = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len, unsigned msg_prio, const struct timespec *abs_timeout); }\n\tSYS_KMQ_NOTIFY               = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); }\n\tSYS_KMQ_UNLINK               = 462 // { int kmq_unlink(const char *path); }\n\tSYS_ABORT2                   = 463 // { int abort2(const char *why, int nargs, void **args); }\n\tSYS_THR_SET_NAME             = 464 // { int thr_set_name(long id, const char *name); }\n\tSYS_AIO_FSYNC                = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); }\n\tSYS_RTPRIO_THREAD            = 466 // { int rtprio_thread(int function, lwpid_t lwpid, struct rtprio *rtp); }\n\tSYS_SCTP_PEELOFF             = 471 // { int sctp_peeloff(int sd, uint32_t name); }\n\tSYS_SCTP_GENERIC_SENDMSG     = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }\n\tSYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }\n\tSYS_SCTP_GENERIC_RECVMSG     = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr *from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); }\n\tSYS_PREAD                    = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); }\n\tSYS_PWRITE                   = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); }\n\tSYS_MMAP                     = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); }\n\tSYS_LSEEK                    = 478 // { off_t lseek(int fd, off_t offset, int whence); }\n\tSYS_TRUNCATE                 = 479 // { int truncate(char *path, off_t length); }\n\tSYS_FTRUNCATE                = 480 // { int ftruncate(int fd, off_t length); }\n\tSYS_THR_KILL2                = 481 // { int thr_kill2(pid_t pid, long id, int sig); }\n\tSYS_SHM_OPEN                 = 482 // { int shm_open(const char *path, int flags, mode_t mode); }\n\tSYS_SHM_UNLINK               = 483 // { int shm_unlink(const char *path); }\n\tSYS_CPUSET                   = 484 // { int cpuset(cpusetid_t *setid); }\n\tSYS_CPUSET_SETID             = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, cpusetid_t setid); }\n\tSYS_CPUSET_GETID             = 486 // { int cpuset_getid(cpulevel_t level, cpuwhich_t which, id_t id, cpusetid_t *setid); }\n\tSYS_CPUSET_GETAFFINITY       = 487 // { int cpuset_getaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, cpuset_t *mask); }\n\tSYS_CPUSET_SETAFFINITY       = 488 // { int cpuset_setaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, const cpuset_t *mask); }\n\tSYS_FACCESSAT                = 489 // { int faccessat(int fd, char *path, int amode, int flag); }\n\tSYS_FCHMODAT                 = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT                 = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); }\n\tSYS_FEXECVE                  = 492 // { int fexecve(int fd, char **argv, char **envv); }\n\tSYS_FUTIMESAT                = 494 // { int futimesat(int fd, char *path, struct timeval *times); }\n\tSYS_LINKAT                   = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); }\n\tSYS_MKDIRAT                  = 496 // { int mkdirat(int fd, char *path, mode_t mode); }\n\tSYS_MKFIFOAT                 = 497 // { int mkfifoat(int fd, char *path, mode_t mode); }\n\tSYS_OPENAT                   = 499 // { int openat(int fd, char *path, int flag, mode_t mode); }\n\tSYS_READLINKAT               = 500 // { ssize_t readlinkat(int fd, char *path, char *buf, size_t bufsize); }\n\tSYS_RENAMEAT                 = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); }\n\tSYS_SYMLINKAT                = 502 // { int symlinkat(char *path1, int fd, char *path2); }\n\tSYS_UNLINKAT                 = 503 // { int unlinkat(int fd, char *path, int flag); }\n\tSYS_POSIX_OPENPT             = 504 // { int posix_openpt(int flags); }\n\tSYS_GSSD_SYSCALL             = 505 // { int gssd_syscall(char *path); }\n\tSYS_JAIL_GET                 = 506 // { int jail_get(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS_JAIL_SET                 = 507 // { int jail_set(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS_JAIL_REMOVE              = 508 // { int jail_remove(int jid); }\n\tSYS_CLOSEFROM                = 509 // { int closefrom(int lowfd); }\n\tSYS___SEMCTL                 = 510 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_MSGCTL                   = 511 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_SHMCTL                   = 512 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_LPATHCONF                = 513 // { int lpathconf(char *path, int name); }\n\tSYS___CAP_RIGHTS_GET         = 515 // { int __cap_rights_get(int version, int fd, cap_rights_t *rightsp); }\n\tSYS_CAP_ENTER                = 516 // { int cap_enter(void); }\n\tSYS_CAP_GETMODE              = 517 // { int cap_getmode(u_int *modep); }\n\tSYS_PDFORK                   = 518 // { int pdfork(int *fdp, int flags); }\n\tSYS_PDKILL                   = 519 // { int pdkill(int fd, int signum); }\n\tSYS_PDGETPID                 = 520 // { int pdgetpid(int fd, pid_t *pidp); }\n\tSYS_PSELECT                  = 522 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sm); }\n\tSYS_GETLOGINCLASS            = 523 // { int getloginclass(char *namebuf, size_t namelen); }\n\tSYS_SETLOGINCLASS            = 524 // { int setloginclass(const char *namebuf); }\n\tSYS_RCTL_GET_RACCT           = 525 // { int rctl_get_racct(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_GET_RULES           = 526 // { int rctl_get_rules(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_GET_LIMITS          = 527 // { int rctl_get_limits(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_ADD_RULE            = 528 // { int rctl_add_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_REMOVE_RULE         = 529 // { int rctl_remove_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_POSIX_FALLOCATE          = 530 // { int posix_fallocate(int fd, off_t offset, off_t len); }\n\tSYS_POSIX_FADVISE            = 531 // { int posix_fadvise(int fd, off_t offset, off_t len, int advice); }\n\tSYS_WAIT6                    = 532 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); }\n\tSYS_CAP_RIGHTS_LIMIT         = 533 // { int cap_rights_limit(int fd, cap_rights_t *rightsp); }\n\tSYS_CAP_IOCTLS_LIMIT         = 534 // { int cap_ioctls_limit(int fd, const u_long *cmds, size_t ncmds); }\n\tSYS_CAP_IOCTLS_GET           = 535 // { ssize_t cap_ioctls_get(int fd, u_long *cmds, size_t maxcmds); }\n\tSYS_CAP_FCNTLS_LIMIT         = 536 // { int cap_fcntls_limit(int fd, uint32_t fcntlrights); }\n\tSYS_CAP_FCNTLS_GET           = 537 // { int cap_fcntls_get(int fd, uint32_t *fcntlrightsp); }\n\tSYS_BINDAT                   = 538 // { int bindat(int fd, int s, caddr_t name, int namelen); }\n\tSYS_CONNECTAT                = 539 // { int connectat(int fd, int s, caddr_t name, int namelen); }\n\tSYS_CHFLAGSAT                = 540 // { int chflagsat(int fd, const char *path, u_long flags, int atflag); }\n\tSYS_ACCEPT4                  = 541 // { int accept4(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen, int flags); }\n\tSYS_PIPE2                    = 542 // { int pipe2(int *fildes, int flags); }\n\tSYS_AIO_MLOCK                = 543 // { int aio_mlock(struct aiocb *aiocbp); }\n\tSYS_PROCCTL                  = 544 // { int procctl(idtype_t idtype, id_t id, int com, void *data); }\n\tSYS_PPOLL                    = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); }\n\tSYS_FUTIMENS                 = 546 // { int futimens(int fd, struct timespec *times); }\n\tSYS_UTIMENSAT                = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); }\n\tSYS_FDATASYNC                = 550 // { int fdatasync(int fd); }\n\tSYS_FSTAT                    = 551 // { int fstat(int fd, struct stat *sb); }\n\tSYS_FSTATAT                  = 552 // { int fstatat(int fd, char *path, struct stat *buf, int flag); }\n\tSYS_FHSTAT                   = 553 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); }\n\tSYS_GETDIRENTRIES            = 554 // { ssize_t getdirentries(int fd, char *buf, size_t count, off_t *basep); }\n\tSYS_STATFS                   = 555 // { int statfs(char *path, struct statfs *buf); }\n\tSYS_FSTATFS                  = 556 // { int fstatfs(int fd, struct statfs *buf); }\n\tSYS_GETFSSTAT                = 557 // { int getfsstat(struct statfs *buf, long bufsize, int mode); }\n\tSYS_FHSTATFS                 = 558 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); }\n\tSYS_MKNODAT                  = 559 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); }\n\tSYS_KEVENT                   = 560 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_CPUSET_GETDOMAIN         = 561 // { int cpuset_getdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int *policy); }\n\tSYS_CPUSET_SETDOMAIN         = 562 // { int cpuset_setdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int policy); }\n\tSYS_GETRANDOM                = 563 // { int getrandom(void *buf, size_t buflen, unsigned int flags); }\n\tSYS_GETFHAT                  = 564 // { int getfhat(int fd, char *path, struct fhandle *fhp, int flags); }\n\tSYS_FHLINK                   = 565 // { int fhlink(struct fhandle *fhp, const char *to); }\n\tSYS_FHLINKAT                 = 566 // { int fhlinkat(struct fhandle *fhp, int tofd, const char *to,); }\n\tSYS_FHREADLINK               = 567 // { int fhreadlink(struct fhandle *fhp, char *buf, size_t bufsize); }\n\tSYS___SYSCTLBYNAME           = 570 // { int __sysctlbyname(const char *name, size_t namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }\n\tSYS_CLOSE_RANGE              = 575 // { int close_range(u_int lowfd, u_int highfd, int flags); }\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go",
    "content": "// go run mksysnum.go https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm && freebsd\n\npackage unix\n\nconst (\n\t// SYS_NOSYS = 0;  // { int nosys(void); } syscall nosys_args int\n\tSYS_EXIT                     = 1   // { void sys_exit(int rval); } exit sys_exit_args void\n\tSYS_FORK                     = 2   // { int fork(void); }\n\tSYS_READ                     = 3   // { ssize_t read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE                    = 4   // { ssize_t write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN                     = 5   // { int open(char *path, int flags, int mode); }\n\tSYS_CLOSE                    = 6   // { int close(int fd); }\n\tSYS_WAIT4                    = 7   // { int wait4(int pid, int *status, int options, struct rusage *rusage); }\n\tSYS_LINK                     = 9   // { int link(char *path, char *link); }\n\tSYS_UNLINK                   = 10  // { int unlink(char *path); }\n\tSYS_CHDIR                    = 12  // { int chdir(char *path); }\n\tSYS_FCHDIR                   = 13  // { int fchdir(int fd); }\n\tSYS_CHMOD                    = 15  // { int chmod(char *path, int mode); }\n\tSYS_CHOWN                    = 16  // { int chown(char *path, int uid, int gid); }\n\tSYS_BREAK                    = 17  // { caddr_t break(char *nsize); }\n\tSYS_GETPID                   = 20  // { pid_t getpid(void); }\n\tSYS_MOUNT                    = 21  // { int mount(char *type, char *path, int flags, caddr_t data); }\n\tSYS_UNMOUNT                  = 22  // { int unmount(char *path, int flags); }\n\tSYS_SETUID                   = 23  // { int setuid(uid_t uid); }\n\tSYS_GETUID                   = 24  // { uid_t getuid(void); }\n\tSYS_GETEUID                  = 25  // { uid_t geteuid(void); }\n\tSYS_PTRACE                   = 26  // { int ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG                  = 27  // { int recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG                  = 28  // { int sendmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_RECVFROM                 = 29  // { int recvfrom(int s, caddr_t buf, size_t len, int flags, struct sockaddr * __restrict from, __socklen_t * __restrict fromlenaddr); }\n\tSYS_ACCEPT                   = 30  // { int accept(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen); }\n\tSYS_GETPEERNAME              = 31  // { int getpeername(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }\n\tSYS_GETSOCKNAME              = 32  // { int getsockname(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }\n\tSYS_ACCESS                   = 33  // { int access(char *path, int amode); }\n\tSYS_CHFLAGS                  = 34  // { int chflags(const char *path, u_long flags); }\n\tSYS_FCHFLAGS                 = 35  // { int fchflags(int fd, u_long flags); }\n\tSYS_SYNC                     = 36  // { int sync(void); }\n\tSYS_KILL                     = 37  // { int kill(int pid, int signum); }\n\tSYS_GETPPID                  = 39  // { pid_t getppid(void); }\n\tSYS_DUP                      = 41  // { int dup(u_int fd); }\n\tSYS_GETEGID                  = 43  // { gid_t getegid(void); }\n\tSYS_PROFIL                   = 44  // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); }\n\tSYS_KTRACE                   = 45  // { int ktrace(const char *fname, int ops, int facs, int pid); }\n\tSYS_GETGID                   = 47  // { gid_t getgid(void); }\n\tSYS_GETLOGIN                 = 49  // { int getlogin(char *namebuf, u_int namelen); }\n\tSYS_SETLOGIN                 = 50  // { int setlogin(char *namebuf); }\n\tSYS_ACCT                     = 51  // { int acct(char *path); }\n\tSYS_SIGALTSTACK              = 53  // { int sigaltstack(stack_t *ss, stack_t *oss); }\n\tSYS_IOCTL                    = 54  // { int ioctl(int fd, u_long com, caddr_t data); }\n\tSYS_REBOOT                   = 55  // { int reboot(int opt); }\n\tSYS_REVOKE                   = 56  // { int revoke(char *path); }\n\tSYS_SYMLINK                  = 57  // { int symlink(char *path, char *link); }\n\tSYS_READLINK                 = 58  // { ssize_t readlink(char *path, char *buf, size_t count); }\n\tSYS_EXECVE                   = 59  // { int execve(char *fname, char **argv, char **envv); }\n\tSYS_UMASK                    = 60  // { int umask(int newmask); }\n\tSYS_CHROOT                   = 61  // { int chroot(char *path); }\n\tSYS_MSYNC                    = 65  // { int msync(void *addr, size_t len, int flags); }\n\tSYS_VFORK                    = 66  // { int vfork(void); }\n\tSYS_SBRK                     = 69  // { int sbrk(int incr); }\n\tSYS_SSTK                     = 70  // { int sstk(int incr); }\n\tSYS_MUNMAP                   = 73  // { int munmap(void *addr, size_t len); }\n\tSYS_MPROTECT                 = 74  // { int mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE                  = 75  // { int madvise(void *addr, size_t len, int behav); }\n\tSYS_MINCORE                  = 78  // { int mincore(const void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS                = 79  // { int getgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS                = 80  // { int setgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_GETPGRP                  = 81  // { int getpgrp(void); }\n\tSYS_SETPGID                  = 82  // { int setpgid(int pid, int pgid); }\n\tSYS_SETITIMER                = 83  // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_SWAPON                   = 85  // { int swapon(char *name); }\n\tSYS_GETITIMER                = 86  // { int getitimer(u_int which, struct itimerval *itv); }\n\tSYS_GETDTABLESIZE            = 89  // { int getdtablesize(void); }\n\tSYS_DUP2                     = 90  // { int dup2(u_int from, u_int to); }\n\tSYS_FCNTL                    = 92  // { int fcntl(int fd, int cmd, long arg); }\n\tSYS_SELECT                   = 93  // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_FSYNC                    = 95  // { int fsync(int fd); }\n\tSYS_SETPRIORITY              = 96  // { int setpriority(int which, int who, int prio); }\n\tSYS_SOCKET                   = 97  // { int socket(int domain, int type, int protocol); }\n\tSYS_CONNECT                  = 98  // { int connect(int s, caddr_t name, int namelen); }\n\tSYS_GETPRIORITY              = 100 // { int getpriority(int which, int who); }\n\tSYS_BIND                     = 104 // { int bind(int s, caddr_t name, int namelen); }\n\tSYS_SETSOCKOPT               = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); }\n\tSYS_LISTEN                   = 106 // { int listen(int s, int backlog); }\n\tSYS_GETTIMEOFDAY             = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_GETRUSAGE                = 117 // { int getrusage(int who, struct rusage *rusage); }\n\tSYS_GETSOCKOPT               = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); }\n\tSYS_READV                    = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); }\n\tSYS_WRITEV                   = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); }\n\tSYS_SETTIMEOFDAY             = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); }\n\tSYS_FCHOWN                   = 123 // { int fchown(int fd, int uid, int gid); }\n\tSYS_FCHMOD                   = 124 // { int fchmod(int fd, int mode); }\n\tSYS_SETREUID                 = 126 // { int setreuid(int ruid, int euid); }\n\tSYS_SETREGID                 = 127 // { int setregid(int rgid, int egid); }\n\tSYS_RENAME                   = 128 // { int rename(char *from, char *to); }\n\tSYS_FLOCK                    = 131 // { int flock(int fd, int how); }\n\tSYS_MKFIFO                   = 132 // { int mkfifo(char *path, int mode); }\n\tSYS_SENDTO                   = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); }\n\tSYS_SHUTDOWN                 = 134 // { int shutdown(int s, int how); }\n\tSYS_SOCKETPAIR               = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR                    = 136 // { int mkdir(char *path, int mode); }\n\tSYS_RMDIR                    = 137 // { int rmdir(char *path); }\n\tSYS_UTIMES                   = 138 // { int utimes(char *path, struct timeval *tptr); }\n\tSYS_ADJTIME                  = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); }\n\tSYS_SETSID                   = 147 // { int setsid(void); }\n\tSYS_QUOTACTL                 = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); }\n\tSYS_NLM_SYSCALL              = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); }\n\tSYS_NFSSVC                   = 155 // { int nfssvc(int flag, caddr_t argp); }\n\tSYS_LGETFH                   = 160 // { int lgetfh(char *fname, struct fhandle *fhp); }\n\tSYS_GETFH                    = 161 // { int getfh(char *fname, struct fhandle *fhp); }\n\tSYS_SYSARCH                  = 165 // { int sysarch(int op, char *parms); }\n\tSYS_RTPRIO                   = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); }\n\tSYS_SEMSYS                   = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); }\n\tSYS_MSGSYS                   = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); }\n\tSYS_SHMSYS                   = 171 // { int shmsys(int which, int a2, int a3, int a4); }\n\tSYS_SETFIB                   = 175 // { int setfib(int fibnum); }\n\tSYS_NTP_ADJTIME              = 176 // { int ntp_adjtime(struct timex *tp); }\n\tSYS_SETGID                   = 181 // { int setgid(gid_t gid); }\n\tSYS_SETEGID                  = 182 // { int setegid(gid_t egid); }\n\tSYS_SETEUID                  = 183 // { int seteuid(uid_t euid); }\n\tSYS_PATHCONF                 = 191 // { int pathconf(char *path, int name); }\n\tSYS_FPATHCONF                = 192 // { int fpathconf(int fd, int name); }\n\tSYS_GETRLIMIT                = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int\n\tSYS_SETRLIMIT                = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int\n\tSYS___SYSCTL                 = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int\n\tSYS_MLOCK                    = 203 // { int mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK                  = 204 // { int munlock(const void *addr, size_t len); }\n\tSYS_UNDELETE                 = 205 // { int undelete(char *path); }\n\tSYS_FUTIMES                  = 206 // { int futimes(int fd, struct timeval *tptr); }\n\tSYS_GETPGID                  = 207 // { int getpgid(pid_t pid); }\n\tSYS_POLL                     = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_SEMGET                   = 221 // { int semget(key_t key, int nsems, int semflg); }\n\tSYS_SEMOP                    = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_MSGGET                   = 225 // { int msgget(key_t key, int msgflg); }\n\tSYS_MSGSND                   = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV                   = 227 // { ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT                    = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT                    = 230 // { int shmdt(const void *shmaddr); }\n\tSYS_SHMGET                   = 231 // { int shmget(key_t key, size_t size, int shmflg); }\n\tSYS_CLOCK_GETTIME            = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME            = 233 // { int clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES             = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_KTIMER_CREATE            = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); }\n\tSYS_KTIMER_DELETE            = 236 // { int ktimer_delete(int timerid); }\n\tSYS_KTIMER_SETTIME           = 237 // { int ktimer_settime(int timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }\n\tSYS_KTIMER_GETTIME           = 238 // { int ktimer_gettime(int timerid, struct itimerspec *value); }\n\tSYS_KTIMER_GETOVERRUN        = 239 // { int ktimer_getoverrun(int timerid); }\n\tSYS_NANOSLEEP                = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_FFCLOCK_GETCOUNTER       = 241 // { int ffclock_getcounter(ffcounter *ffcount); }\n\tSYS_FFCLOCK_SETESTIMATE      = 242 // { int ffclock_setestimate(struct ffclock_estimate *cest); }\n\tSYS_FFCLOCK_GETESTIMATE      = 243 // { int ffclock_getestimate(struct ffclock_estimate *cest); }\n\tSYS_CLOCK_NANOSLEEP          = 244 // { int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_CLOCK_GETCPUCLOCKID2     = 247 // { int clock_getcpuclockid2(id_t id, int which, clockid_t *clock_id); }\n\tSYS_NTP_GETTIME              = 248 // { int ntp_gettime(struct ntptimeval *ntvp); }\n\tSYS_MINHERIT                 = 250 // { int minherit(void *addr, size_t len, int inherit); }\n\tSYS_RFORK                    = 251 // { int rfork(int flags); }\n\tSYS_ISSETUGID                = 253 // { int issetugid(void); }\n\tSYS_LCHOWN                   = 254 // { int lchown(char *path, int uid, int gid); }\n\tSYS_AIO_READ                 = 255 // { int aio_read(struct aiocb *aiocbp); }\n\tSYS_AIO_WRITE                = 256 // { int aio_write(struct aiocb *aiocbp); }\n\tSYS_LIO_LISTIO               = 257 // { int lio_listio(int mode, struct aiocb* const *acb_list, int nent, struct sigevent *sig); }\n\tSYS_LCHMOD                   = 274 // { int lchmod(char *path, mode_t mode); }\n\tSYS_LUTIMES                  = 276 // { int lutimes(char *path, struct timeval *tptr); }\n\tSYS_PREADV                   = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }\n\tSYS_PWRITEV                  = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }\n\tSYS_FHOPEN                   = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); }\n\tSYS_MODNEXT                  = 300 // { int modnext(int modid); }\n\tSYS_MODSTAT                  = 301 // { int modstat(int modid, struct module_stat* stat); }\n\tSYS_MODFNEXT                 = 302 // { int modfnext(int modid); }\n\tSYS_MODFIND                  = 303 // { int modfind(const char *name); }\n\tSYS_KLDLOAD                  = 304 // { int kldload(const char *file); }\n\tSYS_KLDUNLOAD                = 305 // { int kldunload(int fileid); }\n\tSYS_KLDFIND                  = 306 // { int kldfind(const char *file); }\n\tSYS_KLDNEXT                  = 307 // { int kldnext(int fileid); }\n\tSYS_KLDSTAT                  = 308 // { int kldstat(int fileid, struct kld_file_stat *stat); }\n\tSYS_KLDFIRSTMOD              = 309 // { int kldfirstmod(int fileid); }\n\tSYS_GETSID                   = 310 // { int getsid(pid_t pid); }\n\tSYS_SETRESUID                = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_SETRESGID                = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_AIO_RETURN               = 314 // { ssize_t aio_return(struct aiocb *aiocbp); }\n\tSYS_AIO_SUSPEND              = 315 // { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); }\n\tSYS_AIO_CANCEL               = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); }\n\tSYS_AIO_ERROR                = 317 // { int aio_error(struct aiocb *aiocbp); }\n\tSYS_YIELD                    = 321 // { int yield(void); }\n\tSYS_MLOCKALL                 = 324 // { int mlockall(int how); }\n\tSYS_MUNLOCKALL               = 325 // { int munlockall(void); }\n\tSYS___GETCWD                 = 326 // { int __getcwd(char *buf, size_t buflen); }\n\tSYS_SCHED_SETPARAM           = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); }\n\tSYS_SCHED_GETPARAM           = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); }\n\tSYS_SCHED_SETSCHEDULER       = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); }\n\tSYS_SCHED_GETSCHEDULER       = 330 // { int sched_getscheduler (pid_t pid); }\n\tSYS_SCHED_YIELD              = 331 // { int sched_yield (void); }\n\tSYS_SCHED_GET_PRIORITY_MAX   = 332 // { int sched_get_priority_max (int policy); }\n\tSYS_SCHED_GET_PRIORITY_MIN   = 333 // { int sched_get_priority_min (int policy); }\n\tSYS_SCHED_RR_GET_INTERVAL    = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); }\n\tSYS_UTRACE                   = 335 // { int utrace(const void *addr, size_t len); }\n\tSYS_KLDSYM                   = 337 // { int kldsym(int fileid, int cmd, void *data); }\n\tSYS_JAIL                     = 338 // { int jail(struct jail *jail); }\n\tSYS_SIGPROCMASK              = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); }\n\tSYS_SIGSUSPEND               = 341 // { int sigsuspend(const sigset_t *sigmask); }\n\tSYS_SIGPENDING               = 343 // { int sigpending(sigset_t *set); }\n\tSYS_SIGTIMEDWAIT             = 345 // { int sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec *timeout); }\n\tSYS_SIGWAITINFO              = 346 // { int sigwaitinfo(const sigset_t *set, siginfo_t *info); }\n\tSYS___ACL_GET_FILE           = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_FILE           = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_GET_FD             = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_FD             = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_DELETE_FILE        = 351 // { int __acl_delete_file(const char *path, acl_type_t type); }\n\tSYS___ACL_DELETE_FD          = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); }\n\tSYS___ACL_ACLCHECK_FILE      = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_ACLCHECK_FD        = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS_EXTATTRCTL               = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FILE         = 356 // { ssize_t extattr_set_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FILE         = 357 // { ssize_t extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FILE      = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_AIO_WAITCOMPLETE         = 359 // { ssize_t aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); }\n\tSYS_GETRESUID                = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_GETRESGID                = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_KQUEUE                   = 362 // { int kqueue(void); }\n\tSYS_EXTATTR_SET_FD           = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FD           = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FD        = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }\n\tSYS___SETUGID                = 374 // { int __setugid(int flag); }\n\tSYS_EACCESS                  = 376 // { int eaccess(char *path, int amode); }\n\tSYS_NMOUNT                   = 378 // { int nmount(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS___MAC_GET_PROC           = 384 // { int __mac_get_proc(struct mac *mac_p); }\n\tSYS___MAC_SET_PROC           = 385 // { int __mac_set_proc(struct mac *mac_p); }\n\tSYS___MAC_GET_FD             = 386 // { int __mac_get_fd(int fd, struct mac *mac_p); }\n\tSYS___MAC_GET_FILE           = 387 // { int __mac_get_file(const char *path_p, struct mac *mac_p); }\n\tSYS___MAC_SET_FD             = 388 // { int __mac_set_fd(int fd, struct mac *mac_p); }\n\tSYS___MAC_SET_FILE           = 389 // { int __mac_set_file(const char *path_p, struct mac *mac_p); }\n\tSYS_KENV                     = 390 // { int kenv(int what, const char *name, char *value, int len); }\n\tSYS_LCHFLAGS                 = 391 // { int lchflags(const char *path, u_long flags); }\n\tSYS_UUIDGEN                  = 392 // { int uuidgen(struct uuid *store, int count); }\n\tSYS_SENDFILE                 = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); }\n\tSYS_MAC_SYSCALL              = 394 // { int mac_syscall(const char *policy, int call, void *arg); }\n\tSYS_KSEM_CLOSE               = 400 // { int ksem_close(semid_t id); }\n\tSYS_KSEM_POST                = 401 // { int ksem_post(semid_t id); }\n\tSYS_KSEM_WAIT                = 402 // { int ksem_wait(semid_t id); }\n\tSYS_KSEM_TRYWAIT             = 403 // { int ksem_trywait(semid_t id); }\n\tSYS_KSEM_INIT                = 404 // { int ksem_init(semid_t *idp, unsigned int value); }\n\tSYS_KSEM_OPEN                = 405 // { int ksem_open(semid_t *idp, const char *name, int oflag, mode_t mode, unsigned int value); }\n\tSYS_KSEM_UNLINK              = 406 // { int ksem_unlink(const char *name); }\n\tSYS_KSEM_GETVALUE            = 407 // { int ksem_getvalue(semid_t id, int *val); }\n\tSYS_KSEM_DESTROY             = 408 // { int ksem_destroy(semid_t id); }\n\tSYS___MAC_GET_PID            = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); }\n\tSYS___MAC_GET_LINK           = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); }\n\tSYS___MAC_SET_LINK           = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); }\n\tSYS_EXTATTR_SET_LINK         = 412 // { ssize_t extattr_set_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_LINK         = 413 // { ssize_t extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_LINK      = 414 // { int extattr_delete_link(const char *path, int attrnamespace, const char *attrname); }\n\tSYS___MAC_EXECVE             = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); }\n\tSYS_SIGACTION                = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); }\n\tSYS_SIGRETURN                = 417 // { int sigreturn(const struct __ucontext *sigcntxp); }\n\tSYS_GETCONTEXT               = 421 // { int getcontext(struct __ucontext *ucp); }\n\tSYS_SETCONTEXT               = 422 // { int setcontext(const struct __ucontext *ucp); }\n\tSYS_SWAPCONTEXT              = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); }\n\tSYS_SWAPOFF                  = 424 // { int swapoff(const char *name); }\n\tSYS___ACL_GET_LINK           = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_LINK           = 426 // { int __acl_set_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_DELETE_LINK        = 427 // { int __acl_delete_link(const char *path, acl_type_t type); }\n\tSYS___ACL_ACLCHECK_LINK      = 428 // { int __acl_aclcheck_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS_SIGWAIT                  = 429 // { int sigwait(const sigset_t *set, int *sig); }\n\tSYS_THR_CREATE               = 430 // { int thr_create(ucontext_t *ctx, long *id, int flags); }\n\tSYS_THR_EXIT                 = 431 // { void thr_exit(long *state); }\n\tSYS_THR_SELF                 = 432 // { int thr_self(long *id); }\n\tSYS_THR_KILL                 = 433 // { int thr_kill(long id, int sig); }\n\tSYS_JAIL_ATTACH              = 436 // { int jail_attach(int jid); }\n\tSYS_EXTATTR_LIST_FD          = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_FILE        = 438 // { ssize_t extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_LINK        = 439 // { ssize_t extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_KSEM_TIMEDWAIT           = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); }\n\tSYS_THR_SUSPEND              = 442 // { int thr_suspend(const struct timespec *timeout); }\n\tSYS_THR_WAKE                 = 443 // { int thr_wake(long id); }\n\tSYS_KLDUNLOADF               = 444 // { int kldunloadf(int fileid, int flags); }\n\tSYS_AUDIT                    = 445 // { int audit(const void *record, u_int length); }\n\tSYS_AUDITON                  = 446 // { int auditon(int cmd, void *data, u_int length); }\n\tSYS_GETAUID                  = 447 // { int getauid(uid_t *auid); }\n\tSYS_SETAUID                  = 448 // { int setauid(uid_t *auid); }\n\tSYS_GETAUDIT                 = 449 // { int getaudit(struct auditinfo *auditinfo); }\n\tSYS_SETAUDIT                 = 450 // { int setaudit(struct auditinfo *auditinfo); }\n\tSYS_GETAUDIT_ADDR            = 451 // { int getaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); }\n\tSYS_SETAUDIT_ADDR            = 452 // { int setaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); }\n\tSYS_AUDITCTL                 = 453 // { int auditctl(char *path); }\n\tSYS__UMTX_OP                 = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); }\n\tSYS_THR_NEW                  = 455 // { int thr_new(struct thr_param *param, int param_size); }\n\tSYS_SIGQUEUE                 = 456 // { int sigqueue(pid_t pid, int signum, void *value); }\n\tSYS_KMQ_OPEN                 = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); }\n\tSYS_KMQ_SETATTR              = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); }\n\tSYS_KMQ_TIMEDRECEIVE         = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); }\n\tSYS_KMQ_TIMEDSEND            = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len, unsigned msg_prio, const struct timespec *abs_timeout); }\n\tSYS_KMQ_NOTIFY               = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); }\n\tSYS_KMQ_UNLINK               = 462 // { int kmq_unlink(const char *path); }\n\tSYS_ABORT2                   = 463 // { int abort2(const char *why, int nargs, void **args); }\n\tSYS_THR_SET_NAME             = 464 // { int thr_set_name(long id, const char *name); }\n\tSYS_AIO_FSYNC                = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); }\n\tSYS_RTPRIO_THREAD            = 466 // { int rtprio_thread(int function, lwpid_t lwpid, struct rtprio *rtp); }\n\tSYS_SCTP_PEELOFF             = 471 // { int sctp_peeloff(int sd, uint32_t name); }\n\tSYS_SCTP_GENERIC_SENDMSG     = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }\n\tSYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }\n\tSYS_SCTP_GENERIC_RECVMSG     = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr *from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); }\n\tSYS_PREAD                    = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); }\n\tSYS_PWRITE                   = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); }\n\tSYS_MMAP                     = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); }\n\tSYS_LSEEK                    = 478 // { off_t lseek(int fd, off_t offset, int whence); }\n\tSYS_TRUNCATE                 = 479 // { int truncate(char *path, off_t length); }\n\tSYS_FTRUNCATE                = 480 // { int ftruncate(int fd, off_t length); }\n\tSYS_THR_KILL2                = 481 // { int thr_kill2(pid_t pid, long id, int sig); }\n\tSYS_SHM_OPEN                 = 482 // { int shm_open(const char *path, int flags, mode_t mode); }\n\tSYS_SHM_UNLINK               = 483 // { int shm_unlink(const char *path); }\n\tSYS_CPUSET                   = 484 // { int cpuset(cpusetid_t *setid); }\n\tSYS_CPUSET_SETID             = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, cpusetid_t setid); }\n\tSYS_CPUSET_GETID             = 486 // { int cpuset_getid(cpulevel_t level, cpuwhich_t which, id_t id, cpusetid_t *setid); }\n\tSYS_CPUSET_GETAFFINITY       = 487 // { int cpuset_getaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, cpuset_t *mask); }\n\tSYS_CPUSET_SETAFFINITY       = 488 // { int cpuset_setaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, const cpuset_t *mask); }\n\tSYS_FACCESSAT                = 489 // { int faccessat(int fd, char *path, int amode, int flag); }\n\tSYS_FCHMODAT                 = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT                 = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); }\n\tSYS_FEXECVE                  = 492 // { int fexecve(int fd, char **argv, char **envv); }\n\tSYS_FUTIMESAT                = 494 // { int futimesat(int fd, char *path, struct timeval *times); }\n\tSYS_LINKAT                   = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); }\n\tSYS_MKDIRAT                  = 496 // { int mkdirat(int fd, char *path, mode_t mode); }\n\tSYS_MKFIFOAT                 = 497 // { int mkfifoat(int fd, char *path, mode_t mode); }\n\tSYS_OPENAT                   = 499 // { int openat(int fd, char *path, int flag, mode_t mode); }\n\tSYS_READLINKAT               = 500 // { ssize_t readlinkat(int fd, char *path, char *buf, size_t bufsize); }\n\tSYS_RENAMEAT                 = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); }\n\tSYS_SYMLINKAT                = 502 // { int symlinkat(char *path1, int fd, char *path2); }\n\tSYS_UNLINKAT                 = 503 // { int unlinkat(int fd, char *path, int flag); }\n\tSYS_POSIX_OPENPT             = 504 // { int posix_openpt(int flags); }\n\tSYS_GSSD_SYSCALL             = 505 // { int gssd_syscall(char *path); }\n\tSYS_JAIL_GET                 = 506 // { int jail_get(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS_JAIL_SET                 = 507 // { int jail_set(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS_JAIL_REMOVE              = 508 // { int jail_remove(int jid); }\n\tSYS_CLOSEFROM                = 509 // { int closefrom(int lowfd); }\n\tSYS___SEMCTL                 = 510 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_MSGCTL                   = 511 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_SHMCTL                   = 512 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_LPATHCONF                = 513 // { int lpathconf(char *path, int name); }\n\tSYS___CAP_RIGHTS_GET         = 515 // { int __cap_rights_get(int version, int fd, cap_rights_t *rightsp); }\n\tSYS_CAP_ENTER                = 516 // { int cap_enter(void); }\n\tSYS_CAP_GETMODE              = 517 // { int cap_getmode(u_int *modep); }\n\tSYS_PDFORK                   = 518 // { int pdfork(int *fdp, int flags); }\n\tSYS_PDKILL                   = 519 // { int pdkill(int fd, int signum); }\n\tSYS_PDGETPID                 = 520 // { int pdgetpid(int fd, pid_t *pidp); }\n\tSYS_PSELECT                  = 522 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sm); }\n\tSYS_GETLOGINCLASS            = 523 // { int getloginclass(char *namebuf, size_t namelen); }\n\tSYS_SETLOGINCLASS            = 524 // { int setloginclass(const char *namebuf); }\n\tSYS_RCTL_GET_RACCT           = 525 // { int rctl_get_racct(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_GET_RULES           = 526 // { int rctl_get_rules(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_GET_LIMITS          = 527 // { int rctl_get_limits(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_ADD_RULE            = 528 // { int rctl_add_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_REMOVE_RULE         = 529 // { int rctl_remove_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_POSIX_FALLOCATE          = 530 // { int posix_fallocate(int fd, off_t offset, off_t len); }\n\tSYS_POSIX_FADVISE            = 531 // { int posix_fadvise(int fd, off_t offset, off_t len, int advice); }\n\tSYS_WAIT6                    = 532 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); }\n\tSYS_CAP_RIGHTS_LIMIT         = 533 // { int cap_rights_limit(int fd, cap_rights_t *rightsp); }\n\tSYS_CAP_IOCTLS_LIMIT         = 534 // { int cap_ioctls_limit(int fd, const u_long *cmds, size_t ncmds); }\n\tSYS_CAP_IOCTLS_GET           = 535 // { ssize_t cap_ioctls_get(int fd, u_long *cmds, size_t maxcmds); }\n\tSYS_CAP_FCNTLS_LIMIT         = 536 // { int cap_fcntls_limit(int fd, uint32_t fcntlrights); }\n\tSYS_CAP_FCNTLS_GET           = 537 // { int cap_fcntls_get(int fd, uint32_t *fcntlrightsp); }\n\tSYS_BINDAT                   = 538 // { int bindat(int fd, int s, caddr_t name, int namelen); }\n\tSYS_CONNECTAT                = 539 // { int connectat(int fd, int s, caddr_t name, int namelen); }\n\tSYS_CHFLAGSAT                = 540 // { int chflagsat(int fd, const char *path, u_long flags, int atflag); }\n\tSYS_ACCEPT4                  = 541 // { int accept4(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen, int flags); }\n\tSYS_PIPE2                    = 542 // { int pipe2(int *fildes, int flags); }\n\tSYS_AIO_MLOCK                = 543 // { int aio_mlock(struct aiocb *aiocbp); }\n\tSYS_PROCCTL                  = 544 // { int procctl(idtype_t idtype, id_t id, int com, void *data); }\n\tSYS_PPOLL                    = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); }\n\tSYS_FUTIMENS                 = 546 // { int futimens(int fd, struct timespec *times); }\n\tSYS_UTIMENSAT                = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); }\n\tSYS_FDATASYNC                = 550 // { int fdatasync(int fd); }\n\tSYS_FSTAT                    = 551 // { int fstat(int fd, struct stat *sb); }\n\tSYS_FSTATAT                  = 552 // { int fstatat(int fd, char *path, struct stat *buf, int flag); }\n\tSYS_FHSTAT                   = 553 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); }\n\tSYS_GETDIRENTRIES            = 554 // { ssize_t getdirentries(int fd, char *buf, size_t count, off_t *basep); }\n\tSYS_STATFS                   = 555 // { int statfs(char *path, struct statfs *buf); }\n\tSYS_FSTATFS                  = 556 // { int fstatfs(int fd, struct statfs *buf); }\n\tSYS_GETFSSTAT                = 557 // { int getfsstat(struct statfs *buf, long bufsize, int mode); }\n\tSYS_FHSTATFS                 = 558 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); }\n\tSYS_MKNODAT                  = 559 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); }\n\tSYS_KEVENT                   = 560 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_CPUSET_GETDOMAIN         = 561 // { int cpuset_getdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int *policy); }\n\tSYS_CPUSET_SETDOMAIN         = 562 // { int cpuset_setdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int policy); }\n\tSYS_GETRANDOM                = 563 // { int getrandom(void *buf, size_t buflen, unsigned int flags); }\n\tSYS_GETFHAT                  = 564 // { int getfhat(int fd, char *path, struct fhandle *fhp, int flags); }\n\tSYS_FHLINK                   = 565 // { int fhlink(struct fhandle *fhp, const char *to); }\n\tSYS_FHLINKAT                 = 566 // { int fhlinkat(struct fhandle *fhp, int tofd, const char *to,); }\n\tSYS_FHREADLINK               = 567 // { int fhreadlink(struct fhandle *fhp, char *buf, size_t bufsize); }\n\tSYS___SYSCTLBYNAME           = 570 // { int __sysctlbyname(const char *name, size_t namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }\n\tSYS_CLOSE_RANGE              = 575 // { int close_range(u_int lowfd, u_int highfd, int flags); }\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go",
    "content": "// go run mksysnum.go https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && freebsd\n\npackage unix\n\nconst (\n\t// SYS_NOSYS = 0;  // { int nosys(void); } syscall nosys_args int\n\tSYS_EXIT                     = 1   // { void sys_exit(int rval); } exit sys_exit_args void\n\tSYS_FORK                     = 2   // { int fork(void); }\n\tSYS_READ                     = 3   // { ssize_t read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE                    = 4   // { ssize_t write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN                     = 5   // { int open(char *path, int flags, int mode); }\n\tSYS_CLOSE                    = 6   // { int close(int fd); }\n\tSYS_WAIT4                    = 7   // { int wait4(int pid, int *status, int options, struct rusage *rusage); }\n\tSYS_LINK                     = 9   // { int link(char *path, char *link); }\n\tSYS_UNLINK                   = 10  // { int unlink(char *path); }\n\tSYS_CHDIR                    = 12  // { int chdir(char *path); }\n\tSYS_FCHDIR                   = 13  // { int fchdir(int fd); }\n\tSYS_CHMOD                    = 15  // { int chmod(char *path, int mode); }\n\tSYS_CHOWN                    = 16  // { int chown(char *path, int uid, int gid); }\n\tSYS_BREAK                    = 17  // { caddr_t break(char *nsize); }\n\tSYS_GETPID                   = 20  // { pid_t getpid(void); }\n\tSYS_MOUNT                    = 21  // { int mount(char *type, char *path, int flags, caddr_t data); }\n\tSYS_UNMOUNT                  = 22  // { int unmount(char *path, int flags); }\n\tSYS_SETUID                   = 23  // { int setuid(uid_t uid); }\n\tSYS_GETUID                   = 24  // { uid_t getuid(void); }\n\tSYS_GETEUID                  = 25  // { uid_t geteuid(void); }\n\tSYS_PTRACE                   = 26  // { int ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG                  = 27  // { int recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG                  = 28  // { int sendmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_RECVFROM                 = 29  // { int recvfrom(int s, caddr_t buf, size_t len, int flags, struct sockaddr * __restrict from, __socklen_t * __restrict fromlenaddr); }\n\tSYS_ACCEPT                   = 30  // { int accept(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen); }\n\tSYS_GETPEERNAME              = 31  // { int getpeername(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }\n\tSYS_GETSOCKNAME              = 32  // { int getsockname(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }\n\tSYS_ACCESS                   = 33  // { int access(char *path, int amode); }\n\tSYS_CHFLAGS                  = 34  // { int chflags(const char *path, u_long flags); }\n\tSYS_FCHFLAGS                 = 35  // { int fchflags(int fd, u_long flags); }\n\tSYS_SYNC                     = 36  // { int sync(void); }\n\tSYS_KILL                     = 37  // { int kill(int pid, int signum); }\n\tSYS_GETPPID                  = 39  // { pid_t getppid(void); }\n\tSYS_DUP                      = 41  // { int dup(u_int fd); }\n\tSYS_GETEGID                  = 43  // { gid_t getegid(void); }\n\tSYS_PROFIL                   = 44  // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); }\n\tSYS_KTRACE                   = 45  // { int ktrace(const char *fname, int ops, int facs, int pid); }\n\tSYS_GETGID                   = 47  // { gid_t getgid(void); }\n\tSYS_GETLOGIN                 = 49  // { int getlogin(char *namebuf, u_int namelen); }\n\tSYS_SETLOGIN                 = 50  // { int setlogin(char *namebuf); }\n\tSYS_ACCT                     = 51  // { int acct(char *path); }\n\tSYS_SIGALTSTACK              = 53  // { int sigaltstack(stack_t *ss, stack_t *oss); }\n\tSYS_IOCTL                    = 54  // { int ioctl(int fd, u_long com, caddr_t data); }\n\tSYS_REBOOT                   = 55  // { int reboot(int opt); }\n\tSYS_REVOKE                   = 56  // { int revoke(char *path); }\n\tSYS_SYMLINK                  = 57  // { int symlink(char *path, char *link); }\n\tSYS_READLINK                 = 58  // { ssize_t readlink(char *path, char *buf, size_t count); }\n\tSYS_EXECVE                   = 59  // { int execve(char *fname, char **argv, char **envv); }\n\tSYS_UMASK                    = 60  // { int umask(int newmask); }\n\tSYS_CHROOT                   = 61  // { int chroot(char *path); }\n\tSYS_MSYNC                    = 65  // { int msync(void *addr, size_t len, int flags); }\n\tSYS_VFORK                    = 66  // { int vfork(void); }\n\tSYS_SBRK                     = 69  // { int sbrk(int incr); }\n\tSYS_SSTK                     = 70  // { int sstk(int incr); }\n\tSYS_MUNMAP                   = 73  // { int munmap(void *addr, size_t len); }\n\tSYS_MPROTECT                 = 74  // { int mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE                  = 75  // { int madvise(void *addr, size_t len, int behav); }\n\tSYS_MINCORE                  = 78  // { int mincore(const void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS                = 79  // { int getgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS                = 80  // { int setgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_GETPGRP                  = 81  // { int getpgrp(void); }\n\tSYS_SETPGID                  = 82  // { int setpgid(int pid, int pgid); }\n\tSYS_SETITIMER                = 83  // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_SWAPON                   = 85  // { int swapon(char *name); }\n\tSYS_GETITIMER                = 86  // { int getitimer(u_int which, struct itimerval *itv); }\n\tSYS_GETDTABLESIZE            = 89  // { int getdtablesize(void); }\n\tSYS_DUP2                     = 90  // { int dup2(u_int from, u_int to); }\n\tSYS_FCNTL                    = 92  // { int fcntl(int fd, int cmd, long arg); }\n\tSYS_SELECT                   = 93  // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_FSYNC                    = 95  // { int fsync(int fd); }\n\tSYS_SETPRIORITY              = 96  // { int setpriority(int which, int who, int prio); }\n\tSYS_SOCKET                   = 97  // { int socket(int domain, int type, int protocol); }\n\tSYS_CONNECT                  = 98  // { int connect(int s, caddr_t name, int namelen); }\n\tSYS_GETPRIORITY              = 100 // { int getpriority(int which, int who); }\n\tSYS_BIND                     = 104 // { int bind(int s, caddr_t name, int namelen); }\n\tSYS_SETSOCKOPT               = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); }\n\tSYS_LISTEN                   = 106 // { int listen(int s, int backlog); }\n\tSYS_GETTIMEOFDAY             = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_GETRUSAGE                = 117 // { int getrusage(int who, struct rusage *rusage); }\n\tSYS_GETSOCKOPT               = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); }\n\tSYS_READV                    = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); }\n\tSYS_WRITEV                   = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); }\n\tSYS_SETTIMEOFDAY             = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); }\n\tSYS_FCHOWN                   = 123 // { int fchown(int fd, int uid, int gid); }\n\tSYS_FCHMOD                   = 124 // { int fchmod(int fd, int mode); }\n\tSYS_SETREUID                 = 126 // { int setreuid(int ruid, int euid); }\n\tSYS_SETREGID                 = 127 // { int setregid(int rgid, int egid); }\n\tSYS_RENAME                   = 128 // { int rename(char *from, char *to); }\n\tSYS_FLOCK                    = 131 // { int flock(int fd, int how); }\n\tSYS_MKFIFO                   = 132 // { int mkfifo(char *path, int mode); }\n\tSYS_SENDTO                   = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); }\n\tSYS_SHUTDOWN                 = 134 // { int shutdown(int s, int how); }\n\tSYS_SOCKETPAIR               = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR                    = 136 // { int mkdir(char *path, int mode); }\n\tSYS_RMDIR                    = 137 // { int rmdir(char *path); }\n\tSYS_UTIMES                   = 138 // { int utimes(char *path, struct timeval *tptr); }\n\tSYS_ADJTIME                  = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); }\n\tSYS_SETSID                   = 147 // { int setsid(void); }\n\tSYS_QUOTACTL                 = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); }\n\tSYS_NLM_SYSCALL              = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); }\n\tSYS_NFSSVC                   = 155 // { int nfssvc(int flag, caddr_t argp); }\n\tSYS_LGETFH                   = 160 // { int lgetfh(char *fname, struct fhandle *fhp); }\n\tSYS_GETFH                    = 161 // { int getfh(char *fname, struct fhandle *fhp); }\n\tSYS_SYSARCH                  = 165 // { int sysarch(int op, char *parms); }\n\tSYS_RTPRIO                   = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); }\n\tSYS_SEMSYS                   = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); }\n\tSYS_MSGSYS                   = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); }\n\tSYS_SHMSYS                   = 171 // { int shmsys(int which, int a2, int a3, int a4); }\n\tSYS_SETFIB                   = 175 // { int setfib(int fibnum); }\n\tSYS_NTP_ADJTIME              = 176 // { int ntp_adjtime(struct timex *tp); }\n\tSYS_SETGID                   = 181 // { int setgid(gid_t gid); }\n\tSYS_SETEGID                  = 182 // { int setegid(gid_t egid); }\n\tSYS_SETEUID                  = 183 // { int seteuid(uid_t euid); }\n\tSYS_PATHCONF                 = 191 // { int pathconf(char *path, int name); }\n\tSYS_FPATHCONF                = 192 // { int fpathconf(int fd, int name); }\n\tSYS_GETRLIMIT                = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int\n\tSYS_SETRLIMIT                = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int\n\tSYS___SYSCTL                 = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int\n\tSYS_MLOCK                    = 203 // { int mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK                  = 204 // { int munlock(const void *addr, size_t len); }\n\tSYS_UNDELETE                 = 205 // { int undelete(char *path); }\n\tSYS_FUTIMES                  = 206 // { int futimes(int fd, struct timeval *tptr); }\n\tSYS_GETPGID                  = 207 // { int getpgid(pid_t pid); }\n\tSYS_POLL                     = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_SEMGET                   = 221 // { int semget(key_t key, int nsems, int semflg); }\n\tSYS_SEMOP                    = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_MSGGET                   = 225 // { int msgget(key_t key, int msgflg); }\n\tSYS_MSGSND                   = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV                   = 227 // { ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT                    = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT                    = 230 // { int shmdt(const void *shmaddr); }\n\tSYS_SHMGET                   = 231 // { int shmget(key_t key, size_t size, int shmflg); }\n\tSYS_CLOCK_GETTIME            = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME            = 233 // { int clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES             = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_KTIMER_CREATE            = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); }\n\tSYS_KTIMER_DELETE            = 236 // { int ktimer_delete(int timerid); }\n\tSYS_KTIMER_SETTIME           = 237 // { int ktimer_settime(int timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }\n\tSYS_KTIMER_GETTIME           = 238 // { int ktimer_gettime(int timerid, struct itimerspec *value); }\n\tSYS_KTIMER_GETOVERRUN        = 239 // { int ktimer_getoverrun(int timerid); }\n\tSYS_NANOSLEEP                = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_FFCLOCK_GETCOUNTER       = 241 // { int ffclock_getcounter(ffcounter *ffcount); }\n\tSYS_FFCLOCK_SETESTIMATE      = 242 // { int ffclock_setestimate(struct ffclock_estimate *cest); }\n\tSYS_FFCLOCK_GETESTIMATE      = 243 // { int ffclock_getestimate(struct ffclock_estimate *cest); }\n\tSYS_CLOCK_NANOSLEEP          = 244 // { int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_CLOCK_GETCPUCLOCKID2     = 247 // { int clock_getcpuclockid2(id_t id, int which, clockid_t *clock_id); }\n\tSYS_NTP_GETTIME              = 248 // { int ntp_gettime(struct ntptimeval *ntvp); }\n\tSYS_MINHERIT                 = 250 // { int minherit(void *addr, size_t len, int inherit); }\n\tSYS_RFORK                    = 251 // { int rfork(int flags); }\n\tSYS_ISSETUGID                = 253 // { int issetugid(void); }\n\tSYS_LCHOWN                   = 254 // { int lchown(char *path, int uid, int gid); }\n\tSYS_AIO_READ                 = 255 // { int aio_read(struct aiocb *aiocbp); }\n\tSYS_AIO_WRITE                = 256 // { int aio_write(struct aiocb *aiocbp); }\n\tSYS_LIO_LISTIO               = 257 // { int lio_listio(int mode, struct aiocb* const *acb_list, int nent, struct sigevent *sig); }\n\tSYS_LCHMOD                   = 274 // { int lchmod(char *path, mode_t mode); }\n\tSYS_LUTIMES                  = 276 // { int lutimes(char *path, struct timeval *tptr); }\n\tSYS_PREADV                   = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }\n\tSYS_PWRITEV                  = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }\n\tSYS_FHOPEN                   = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); }\n\tSYS_MODNEXT                  = 300 // { int modnext(int modid); }\n\tSYS_MODSTAT                  = 301 // { int modstat(int modid, struct module_stat* stat); }\n\tSYS_MODFNEXT                 = 302 // { int modfnext(int modid); }\n\tSYS_MODFIND                  = 303 // { int modfind(const char *name); }\n\tSYS_KLDLOAD                  = 304 // { int kldload(const char *file); }\n\tSYS_KLDUNLOAD                = 305 // { int kldunload(int fileid); }\n\tSYS_KLDFIND                  = 306 // { int kldfind(const char *file); }\n\tSYS_KLDNEXT                  = 307 // { int kldnext(int fileid); }\n\tSYS_KLDSTAT                  = 308 // { int kldstat(int fileid, struct kld_file_stat *stat); }\n\tSYS_KLDFIRSTMOD              = 309 // { int kldfirstmod(int fileid); }\n\tSYS_GETSID                   = 310 // { int getsid(pid_t pid); }\n\tSYS_SETRESUID                = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_SETRESGID                = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_AIO_RETURN               = 314 // { ssize_t aio_return(struct aiocb *aiocbp); }\n\tSYS_AIO_SUSPEND              = 315 // { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); }\n\tSYS_AIO_CANCEL               = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); }\n\tSYS_AIO_ERROR                = 317 // { int aio_error(struct aiocb *aiocbp); }\n\tSYS_YIELD                    = 321 // { int yield(void); }\n\tSYS_MLOCKALL                 = 324 // { int mlockall(int how); }\n\tSYS_MUNLOCKALL               = 325 // { int munlockall(void); }\n\tSYS___GETCWD                 = 326 // { int __getcwd(char *buf, size_t buflen); }\n\tSYS_SCHED_SETPARAM           = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); }\n\tSYS_SCHED_GETPARAM           = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); }\n\tSYS_SCHED_SETSCHEDULER       = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); }\n\tSYS_SCHED_GETSCHEDULER       = 330 // { int sched_getscheduler (pid_t pid); }\n\tSYS_SCHED_YIELD              = 331 // { int sched_yield (void); }\n\tSYS_SCHED_GET_PRIORITY_MAX   = 332 // { int sched_get_priority_max (int policy); }\n\tSYS_SCHED_GET_PRIORITY_MIN   = 333 // { int sched_get_priority_min (int policy); }\n\tSYS_SCHED_RR_GET_INTERVAL    = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); }\n\tSYS_UTRACE                   = 335 // { int utrace(const void *addr, size_t len); }\n\tSYS_KLDSYM                   = 337 // { int kldsym(int fileid, int cmd, void *data); }\n\tSYS_JAIL                     = 338 // { int jail(struct jail *jail); }\n\tSYS_SIGPROCMASK              = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); }\n\tSYS_SIGSUSPEND               = 341 // { int sigsuspend(const sigset_t *sigmask); }\n\tSYS_SIGPENDING               = 343 // { int sigpending(sigset_t *set); }\n\tSYS_SIGTIMEDWAIT             = 345 // { int sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec *timeout); }\n\tSYS_SIGWAITINFO              = 346 // { int sigwaitinfo(const sigset_t *set, siginfo_t *info); }\n\tSYS___ACL_GET_FILE           = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_FILE           = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_GET_FD             = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_FD             = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_DELETE_FILE        = 351 // { int __acl_delete_file(const char *path, acl_type_t type); }\n\tSYS___ACL_DELETE_FD          = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); }\n\tSYS___ACL_ACLCHECK_FILE      = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_ACLCHECK_FD        = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS_EXTATTRCTL               = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FILE         = 356 // { ssize_t extattr_set_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FILE         = 357 // { ssize_t extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FILE      = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_AIO_WAITCOMPLETE         = 359 // { ssize_t aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); }\n\tSYS_GETRESUID                = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_GETRESGID                = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_KQUEUE                   = 362 // { int kqueue(void); }\n\tSYS_EXTATTR_SET_FD           = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FD           = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FD        = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }\n\tSYS___SETUGID                = 374 // { int __setugid(int flag); }\n\tSYS_EACCESS                  = 376 // { int eaccess(char *path, int amode); }\n\tSYS_NMOUNT                   = 378 // { int nmount(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS___MAC_GET_PROC           = 384 // { int __mac_get_proc(struct mac *mac_p); }\n\tSYS___MAC_SET_PROC           = 385 // { int __mac_set_proc(struct mac *mac_p); }\n\tSYS___MAC_GET_FD             = 386 // { int __mac_get_fd(int fd, struct mac *mac_p); }\n\tSYS___MAC_GET_FILE           = 387 // { int __mac_get_file(const char *path_p, struct mac *mac_p); }\n\tSYS___MAC_SET_FD             = 388 // { int __mac_set_fd(int fd, struct mac *mac_p); }\n\tSYS___MAC_SET_FILE           = 389 // { int __mac_set_file(const char *path_p, struct mac *mac_p); }\n\tSYS_KENV                     = 390 // { int kenv(int what, const char *name, char *value, int len); }\n\tSYS_LCHFLAGS                 = 391 // { int lchflags(const char *path, u_long flags); }\n\tSYS_UUIDGEN                  = 392 // { int uuidgen(struct uuid *store, int count); }\n\tSYS_SENDFILE                 = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); }\n\tSYS_MAC_SYSCALL              = 394 // { int mac_syscall(const char *policy, int call, void *arg); }\n\tSYS_KSEM_CLOSE               = 400 // { int ksem_close(semid_t id); }\n\tSYS_KSEM_POST                = 401 // { int ksem_post(semid_t id); }\n\tSYS_KSEM_WAIT                = 402 // { int ksem_wait(semid_t id); }\n\tSYS_KSEM_TRYWAIT             = 403 // { int ksem_trywait(semid_t id); }\n\tSYS_KSEM_INIT                = 404 // { int ksem_init(semid_t *idp, unsigned int value); }\n\tSYS_KSEM_OPEN                = 405 // { int ksem_open(semid_t *idp, const char *name, int oflag, mode_t mode, unsigned int value); }\n\tSYS_KSEM_UNLINK              = 406 // { int ksem_unlink(const char *name); }\n\tSYS_KSEM_GETVALUE            = 407 // { int ksem_getvalue(semid_t id, int *val); }\n\tSYS_KSEM_DESTROY             = 408 // { int ksem_destroy(semid_t id); }\n\tSYS___MAC_GET_PID            = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); }\n\tSYS___MAC_GET_LINK           = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); }\n\tSYS___MAC_SET_LINK           = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); }\n\tSYS_EXTATTR_SET_LINK         = 412 // { ssize_t extattr_set_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_LINK         = 413 // { ssize_t extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_LINK      = 414 // { int extattr_delete_link(const char *path, int attrnamespace, const char *attrname); }\n\tSYS___MAC_EXECVE             = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); }\n\tSYS_SIGACTION                = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); }\n\tSYS_SIGRETURN                = 417 // { int sigreturn(const struct __ucontext *sigcntxp); }\n\tSYS_GETCONTEXT               = 421 // { int getcontext(struct __ucontext *ucp); }\n\tSYS_SETCONTEXT               = 422 // { int setcontext(const struct __ucontext *ucp); }\n\tSYS_SWAPCONTEXT              = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); }\n\tSYS_SWAPOFF                  = 424 // { int swapoff(const char *name); }\n\tSYS___ACL_GET_LINK           = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_LINK           = 426 // { int __acl_set_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_DELETE_LINK        = 427 // { int __acl_delete_link(const char *path, acl_type_t type); }\n\tSYS___ACL_ACLCHECK_LINK      = 428 // { int __acl_aclcheck_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS_SIGWAIT                  = 429 // { int sigwait(const sigset_t *set, int *sig); }\n\tSYS_THR_CREATE               = 430 // { int thr_create(ucontext_t *ctx, long *id, int flags); }\n\tSYS_THR_EXIT                 = 431 // { void thr_exit(long *state); }\n\tSYS_THR_SELF                 = 432 // { int thr_self(long *id); }\n\tSYS_THR_KILL                 = 433 // { int thr_kill(long id, int sig); }\n\tSYS_JAIL_ATTACH              = 436 // { int jail_attach(int jid); }\n\tSYS_EXTATTR_LIST_FD          = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_FILE        = 438 // { ssize_t extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_LINK        = 439 // { ssize_t extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_KSEM_TIMEDWAIT           = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); }\n\tSYS_THR_SUSPEND              = 442 // { int thr_suspend(const struct timespec *timeout); }\n\tSYS_THR_WAKE                 = 443 // { int thr_wake(long id); }\n\tSYS_KLDUNLOADF               = 444 // { int kldunloadf(int fileid, int flags); }\n\tSYS_AUDIT                    = 445 // { int audit(const void *record, u_int length); }\n\tSYS_AUDITON                  = 446 // { int auditon(int cmd, void *data, u_int length); }\n\tSYS_GETAUID                  = 447 // { int getauid(uid_t *auid); }\n\tSYS_SETAUID                  = 448 // { int setauid(uid_t *auid); }\n\tSYS_GETAUDIT                 = 449 // { int getaudit(struct auditinfo *auditinfo); }\n\tSYS_SETAUDIT                 = 450 // { int setaudit(struct auditinfo *auditinfo); }\n\tSYS_GETAUDIT_ADDR            = 451 // { int getaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); }\n\tSYS_SETAUDIT_ADDR            = 452 // { int setaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); }\n\tSYS_AUDITCTL                 = 453 // { int auditctl(char *path); }\n\tSYS__UMTX_OP                 = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); }\n\tSYS_THR_NEW                  = 455 // { int thr_new(struct thr_param *param, int param_size); }\n\tSYS_SIGQUEUE                 = 456 // { int sigqueue(pid_t pid, int signum, void *value); }\n\tSYS_KMQ_OPEN                 = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); }\n\tSYS_KMQ_SETATTR              = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); }\n\tSYS_KMQ_TIMEDRECEIVE         = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); }\n\tSYS_KMQ_TIMEDSEND            = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len, unsigned msg_prio, const struct timespec *abs_timeout); }\n\tSYS_KMQ_NOTIFY               = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); }\n\tSYS_KMQ_UNLINK               = 462 // { int kmq_unlink(const char *path); }\n\tSYS_ABORT2                   = 463 // { int abort2(const char *why, int nargs, void **args); }\n\tSYS_THR_SET_NAME             = 464 // { int thr_set_name(long id, const char *name); }\n\tSYS_AIO_FSYNC                = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); }\n\tSYS_RTPRIO_THREAD            = 466 // { int rtprio_thread(int function, lwpid_t lwpid, struct rtprio *rtp); }\n\tSYS_SCTP_PEELOFF             = 471 // { int sctp_peeloff(int sd, uint32_t name); }\n\tSYS_SCTP_GENERIC_SENDMSG     = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }\n\tSYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }\n\tSYS_SCTP_GENERIC_RECVMSG     = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr *from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); }\n\tSYS_PREAD                    = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); }\n\tSYS_PWRITE                   = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); }\n\tSYS_MMAP                     = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); }\n\tSYS_LSEEK                    = 478 // { off_t lseek(int fd, off_t offset, int whence); }\n\tSYS_TRUNCATE                 = 479 // { int truncate(char *path, off_t length); }\n\tSYS_FTRUNCATE                = 480 // { int ftruncate(int fd, off_t length); }\n\tSYS_THR_KILL2                = 481 // { int thr_kill2(pid_t pid, long id, int sig); }\n\tSYS_SHM_OPEN                 = 482 // { int shm_open(const char *path, int flags, mode_t mode); }\n\tSYS_SHM_UNLINK               = 483 // { int shm_unlink(const char *path); }\n\tSYS_CPUSET                   = 484 // { int cpuset(cpusetid_t *setid); }\n\tSYS_CPUSET_SETID             = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, cpusetid_t setid); }\n\tSYS_CPUSET_GETID             = 486 // { int cpuset_getid(cpulevel_t level, cpuwhich_t which, id_t id, cpusetid_t *setid); }\n\tSYS_CPUSET_GETAFFINITY       = 487 // { int cpuset_getaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, cpuset_t *mask); }\n\tSYS_CPUSET_SETAFFINITY       = 488 // { int cpuset_setaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, const cpuset_t *mask); }\n\tSYS_FACCESSAT                = 489 // { int faccessat(int fd, char *path, int amode, int flag); }\n\tSYS_FCHMODAT                 = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT                 = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); }\n\tSYS_FEXECVE                  = 492 // { int fexecve(int fd, char **argv, char **envv); }\n\tSYS_FUTIMESAT                = 494 // { int futimesat(int fd, char *path, struct timeval *times); }\n\tSYS_LINKAT                   = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); }\n\tSYS_MKDIRAT                  = 496 // { int mkdirat(int fd, char *path, mode_t mode); }\n\tSYS_MKFIFOAT                 = 497 // { int mkfifoat(int fd, char *path, mode_t mode); }\n\tSYS_OPENAT                   = 499 // { int openat(int fd, char *path, int flag, mode_t mode); }\n\tSYS_READLINKAT               = 500 // { ssize_t readlinkat(int fd, char *path, char *buf, size_t bufsize); }\n\tSYS_RENAMEAT                 = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); }\n\tSYS_SYMLINKAT                = 502 // { int symlinkat(char *path1, int fd, char *path2); }\n\tSYS_UNLINKAT                 = 503 // { int unlinkat(int fd, char *path, int flag); }\n\tSYS_POSIX_OPENPT             = 504 // { int posix_openpt(int flags); }\n\tSYS_GSSD_SYSCALL             = 505 // { int gssd_syscall(char *path); }\n\tSYS_JAIL_GET                 = 506 // { int jail_get(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS_JAIL_SET                 = 507 // { int jail_set(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS_JAIL_REMOVE              = 508 // { int jail_remove(int jid); }\n\tSYS_CLOSEFROM                = 509 // { int closefrom(int lowfd); }\n\tSYS___SEMCTL                 = 510 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_MSGCTL                   = 511 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_SHMCTL                   = 512 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_LPATHCONF                = 513 // { int lpathconf(char *path, int name); }\n\tSYS___CAP_RIGHTS_GET         = 515 // { int __cap_rights_get(int version, int fd, cap_rights_t *rightsp); }\n\tSYS_CAP_ENTER                = 516 // { int cap_enter(void); }\n\tSYS_CAP_GETMODE              = 517 // { int cap_getmode(u_int *modep); }\n\tSYS_PDFORK                   = 518 // { int pdfork(int *fdp, int flags); }\n\tSYS_PDKILL                   = 519 // { int pdkill(int fd, int signum); }\n\tSYS_PDGETPID                 = 520 // { int pdgetpid(int fd, pid_t *pidp); }\n\tSYS_PSELECT                  = 522 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sm); }\n\tSYS_GETLOGINCLASS            = 523 // { int getloginclass(char *namebuf, size_t namelen); }\n\tSYS_SETLOGINCLASS            = 524 // { int setloginclass(const char *namebuf); }\n\tSYS_RCTL_GET_RACCT           = 525 // { int rctl_get_racct(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_GET_RULES           = 526 // { int rctl_get_rules(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_GET_LIMITS          = 527 // { int rctl_get_limits(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_ADD_RULE            = 528 // { int rctl_add_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_REMOVE_RULE         = 529 // { int rctl_remove_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_POSIX_FALLOCATE          = 530 // { int posix_fallocate(int fd, off_t offset, off_t len); }\n\tSYS_POSIX_FADVISE            = 531 // { int posix_fadvise(int fd, off_t offset, off_t len, int advice); }\n\tSYS_WAIT6                    = 532 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); }\n\tSYS_CAP_RIGHTS_LIMIT         = 533 // { int cap_rights_limit(int fd, cap_rights_t *rightsp); }\n\tSYS_CAP_IOCTLS_LIMIT         = 534 // { int cap_ioctls_limit(int fd, const u_long *cmds, size_t ncmds); }\n\tSYS_CAP_IOCTLS_GET           = 535 // { ssize_t cap_ioctls_get(int fd, u_long *cmds, size_t maxcmds); }\n\tSYS_CAP_FCNTLS_LIMIT         = 536 // { int cap_fcntls_limit(int fd, uint32_t fcntlrights); }\n\tSYS_CAP_FCNTLS_GET           = 537 // { int cap_fcntls_get(int fd, uint32_t *fcntlrightsp); }\n\tSYS_BINDAT                   = 538 // { int bindat(int fd, int s, caddr_t name, int namelen); }\n\tSYS_CONNECTAT                = 539 // { int connectat(int fd, int s, caddr_t name, int namelen); }\n\tSYS_CHFLAGSAT                = 540 // { int chflagsat(int fd, const char *path, u_long flags, int atflag); }\n\tSYS_ACCEPT4                  = 541 // { int accept4(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen, int flags); }\n\tSYS_PIPE2                    = 542 // { int pipe2(int *fildes, int flags); }\n\tSYS_AIO_MLOCK                = 543 // { int aio_mlock(struct aiocb *aiocbp); }\n\tSYS_PROCCTL                  = 544 // { int procctl(idtype_t idtype, id_t id, int com, void *data); }\n\tSYS_PPOLL                    = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); }\n\tSYS_FUTIMENS                 = 546 // { int futimens(int fd, struct timespec *times); }\n\tSYS_UTIMENSAT                = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); }\n\tSYS_FDATASYNC                = 550 // { int fdatasync(int fd); }\n\tSYS_FSTAT                    = 551 // { int fstat(int fd, struct stat *sb); }\n\tSYS_FSTATAT                  = 552 // { int fstatat(int fd, char *path, struct stat *buf, int flag); }\n\tSYS_FHSTAT                   = 553 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); }\n\tSYS_GETDIRENTRIES            = 554 // { ssize_t getdirentries(int fd, char *buf, size_t count, off_t *basep); }\n\tSYS_STATFS                   = 555 // { int statfs(char *path, struct statfs *buf); }\n\tSYS_FSTATFS                  = 556 // { int fstatfs(int fd, struct statfs *buf); }\n\tSYS_GETFSSTAT                = 557 // { int getfsstat(struct statfs *buf, long bufsize, int mode); }\n\tSYS_FHSTATFS                 = 558 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); }\n\tSYS_MKNODAT                  = 559 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); }\n\tSYS_KEVENT                   = 560 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_CPUSET_GETDOMAIN         = 561 // { int cpuset_getdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int *policy); }\n\tSYS_CPUSET_SETDOMAIN         = 562 // { int cpuset_setdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int policy); }\n\tSYS_GETRANDOM                = 563 // { int getrandom(void *buf, size_t buflen, unsigned int flags); }\n\tSYS_GETFHAT                  = 564 // { int getfhat(int fd, char *path, struct fhandle *fhp, int flags); }\n\tSYS_FHLINK                   = 565 // { int fhlink(struct fhandle *fhp, const char *to); }\n\tSYS_FHLINKAT                 = 566 // { int fhlinkat(struct fhandle *fhp, int tofd, const char *to,); }\n\tSYS_FHREADLINK               = 567 // { int fhreadlink(struct fhandle *fhp, char *buf, size_t bufsize); }\n\tSYS___SYSCTLBYNAME           = 570 // { int __sysctlbyname(const char *name, size_t namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }\n\tSYS_CLOSE_RANGE              = 575 // { int close_range(u_int lowfd, u_int highfd, int flags); }\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_freebsd_riscv64.go",
    "content": "// go run mksysnum.go https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build riscv64 && freebsd\n\npackage unix\n\nconst (\n\t// SYS_NOSYS = 0;  // { int nosys(void); } syscall nosys_args int\n\tSYS_EXIT                     = 1   // { void sys_exit(int rval); } exit sys_exit_args void\n\tSYS_FORK                     = 2   // { int fork(void); }\n\tSYS_READ                     = 3   // { ssize_t read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE                    = 4   // { ssize_t write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN                     = 5   // { int open(char *path, int flags, int mode); }\n\tSYS_CLOSE                    = 6   // { int close(int fd); }\n\tSYS_WAIT4                    = 7   // { int wait4(int pid, int *status, int options, struct rusage *rusage); }\n\tSYS_LINK                     = 9   // { int link(char *path, char *link); }\n\tSYS_UNLINK                   = 10  // { int unlink(char *path); }\n\tSYS_CHDIR                    = 12  // { int chdir(char *path); }\n\tSYS_FCHDIR                   = 13  // { int fchdir(int fd); }\n\tSYS_CHMOD                    = 15  // { int chmod(char *path, int mode); }\n\tSYS_CHOWN                    = 16  // { int chown(char *path, int uid, int gid); }\n\tSYS_BREAK                    = 17  // { caddr_t break(char *nsize); }\n\tSYS_GETPID                   = 20  // { pid_t getpid(void); }\n\tSYS_MOUNT                    = 21  // { int mount(char *type, char *path, int flags, caddr_t data); }\n\tSYS_UNMOUNT                  = 22  // { int unmount(char *path, int flags); }\n\tSYS_SETUID                   = 23  // { int setuid(uid_t uid); }\n\tSYS_GETUID                   = 24  // { uid_t getuid(void); }\n\tSYS_GETEUID                  = 25  // { uid_t geteuid(void); }\n\tSYS_PTRACE                   = 26  // { int ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG                  = 27  // { int recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG                  = 28  // { int sendmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_RECVFROM                 = 29  // { int recvfrom(int s, caddr_t buf, size_t len, int flags, struct sockaddr * __restrict from, __socklen_t * __restrict fromlenaddr); }\n\tSYS_ACCEPT                   = 30  // { int accept(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen); }\n\tSYS_GETPEERNAME              = 31  // { int getpeername(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }\n\tSYS_GETSOCKNAME              = 32  // { int getsockname(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }\n\tSYS_ACCESS                   = 33  // { int access(char *path, int amode); }\n\tSYS_CHFLAGS                  = 34  // { int chflags(const char *path, u_long flags); }\n\tSYS_FCHFLAGS                 = 35  // { int fchflags(int fd, u_long flags); }\n\tSYS_SYNC                     = 36  // { int sync(void); }\n\tSYS_KILL                     = 37  // { int kill(int pid, int signum); }\n\tSYS_GETPPID                  = 39  // { pid_t getppid(void); }\n\tSYS_DUP                      = 41  // { int dup(u_int fd); }\n\tSYS_GETEGID                  = 43  // { gid_t getegid(void); }\n\tSYS_PROFIL                   = 44  // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); }\n\tSYS_KTRACE                   = 45  // { int ktrace(const char *fname, int ops, int facs, int pid); }\n\tSYS_GETGID                   = 47  // { gid_t getgid(void); }\n\tSYS_GETLOGIN                 = 49  // { int getlogin(char *namebuf, u_int namelen); }\n\tSYS_SETLOGIN                 = 50  // { int setlogin(char *namebuf); }\n\tSYS_ACCT                     = 51  // { int acct(char *path); }\n\tSYS_SIGALTSTACK              = 53  // { int sigaltstack(stack_t *ss, stack_t *oss); }\n\tSYS_IOCTL                    = 54  // { int ioctl(int fd, u_long com, caddr_t data); }\n\tSYS_REBOOT                   = 55  // { int reboot(int opt); }\n\tSYS_REVOKE                   = 56  // { int revoke(char *path); }\n\tSYS_SYMLINK                  = 57  // { int symlink(char *path, char *link); }\n\tSYS_READLINK                 = 58  // { ssize_t readlink(char *path, char *buf, size_t count); }\n\tSYS_EXECVE                   = 59  // { int execve(char *fname, char **argv, char **envv); }\n\tSYS_UMASK                    = 60  // { int umask(int newmask); }\n\tSYS_CHROOT                   = 61  // { int chroot(char *path); }\n\tSYS_MSYNC                    = 65  // { int msync(void *addr, size_t len, int flags); }\n\tSYS_VFORK                    = 66  // { int vfork(void); }\n\tSYS_SBRK                     = 69  // { int sbrk(int incr); }\n\tSYS_SSTK                     = 70  // { int sstk(int incr); }\n\tSYS_MUNMAP                   = 73  // { int munmap(void *addr, size_t len); }\n\tSYS_MPROTECT                 = 74  // { int mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE                  = 75  // { int madvise(void *addr, size_t len, int behav); }\n\tSYS_MINCORE                  = 78  // { int mincore(const void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS                = 79  // { int getgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS                = 80  // { int setgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_GETPGRP                  = 81  // { int getpgrp(void); }\n\tSYS_SETPGID                  = 82  // { int setpgid(int pid, int pgid); }\n\tSYS_SETITIMER                = 83  // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_SWAPON                   = 85  // { int swapon(char *name); }\n\tSYS_GETITIMER                = 86  // { int getitimer(u_int which, struct itimerval *itv); }\n\tSYS_GETDTABLESIZE            = 89  // { int getdtablesize(void); }\n\tSYS_DUP2                     = 90  // { int dup2(u_int from, u_int to); }\n\tSYS_FCNTL                    = 92  // { int fcntl(int fd, int cmd, long arg); }\n\tSYS_SELECT                   = 93  // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_FSYNC                    = 95  // { int fsync(int fd); }\n\tSYS_SETPRIORITY              = 96  // { int setpriority(int which, int who, int prio); }\n\tSYS_SOCKET                   = 97  // { int socket(int domain, int type, int protocol); }\n\tSYS_CONNECT                  = 98  // { int connect(int s, caddr_t name, int namelen); }\n\tSYS_GETPRIORITY              = 100 // { int getpriority(int which, int who); }\n\tSYS_BIND                     = 104 // { int bind(int s, caddr_t name, int namelen); }\n\tSYS_SETSOCKOPT               = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); }\n\tSYS_LISTEN                   = 106 // { int listen(int s, int backlog); }\n\tSYS_GETTIMEOFDAY             = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_GETRUSAGE                = 117 // { int getrusage(int who, struct rusage *rusage); }\n\tSYS_GETSOCKOPT               = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); }\n\tSYS_READV                    = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); }\n\tSYS_WRITEV                   = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); }\n\tSYS_SETTIMEOFDAY             = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); }\n\tSYS_FCHOWN                   = 123 // { int fchown(int fd, int uid, int gid); }\n\tSYS_FCHMOD                   = 124 // { int fchmod(int fd, int mode); }\n\tSYS_SETREUID                 = 126 // { int setreuid(int ruid, int euid); }\n\tSYS_SETREGID                 = 127 // { int setregid(int rgid, int egid); }\n\tSYS_RENAME                   = 128 // { int rename(char *from, char *to); }\n\tSYS_FLOCK                    = 131 // { int flock(int fd, int how); }\n\tSYS_MKFIFO                   = 132 // { int mkfifo(char *path, int mode); }\n\tSYS_SENDTO                   = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); }\n\tSYS_SHUTDOWN                 = 134 // { int shutdown(int s, int how); }\n\tSYS_SOCKETPAIR               = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR                    = 136 // { int mkdir(char *path, int mode); }\n\tSYS_RMDIR                    = 137 // { int rmdir(char *path); }\n\tSYS_UTIMES                   = 138 // { int utimes(char *path, struct timeval *tptr); }\n\tSYS_ADJTIME                  = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); }\n\tSYS_SETSID                   = 147 // { int setsid(void); }\n\tSYS_QUOTACTL                 = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); }\n\tSYS_NLM_SYSCALL              = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); }\n\tSYS_NFSSVC                   = 155 // { int nfssvc(int flag, caddr_t argp); }\n\tSYS_LGETFH                   = 160 // { int lgetfh(char *fname, struct fhandle *fhp); }\n\tSYS_GETFH                    = 161 // { int getfh(char *fname, struct fhandle *fhp); }\n\tSYS_SYSARCH                  = 165 // { int sysarch(int op, char *parms); }\n\tSYS_RTPRIO                   = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); }\n\tSYS_SEMSYS                   = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); }\n\tSYS_MSGSYS                   = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); }\n\tSYS_SHMSYS                   = 171 // { int shmsys(int which, int a2, int a3, int a4); }\n\tSYS_SETFIB                   = 175 // { int setfib(int fibnum); }\n\tSYS_NTP_ADJTIME              = 176 // { int ntp_adjtime(struct timex *tp); }\n\tSYS_SETGID                   = 181 // { int setgid(gid_t gid); }\n\tSYS_SETEGID                  = 182 // { int setegid(gid_t egid); }\n\tSYS_SETEUID                  = 183 // { int seteuid(uid_t euid); }\n\tSYS_PATHCONF                 = 191 // { int pathconf(char *path, int name); }\n\tSYS_FPATHCONF                = 192 // { int fpathconf(int fd, int name); }\n\tSYS_GETRLIMIT                = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int\n\tSYS_SETRLIMIT                = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int\n\tSYS___SYSCTL                 = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int\n\tSYS_MLOCK                    = 203 // { int mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK                  = 204 // { int munlock(const void *addr, size_t len); }\n\tSYS_UNDELETE                 = 205 // { int undelete(char *path); }\n\tSYS_FUTIMES                  = 206 // { int futimes(int fd, struct timeval *tptr); }\n\tSYS_GETPGID                  = 207 // { int getpgid(pid_t pid); }\n\tSYS_POLL                     = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_SEMGET                   = 221 // { int semget(key_t key, int nsems, int semflg); }\n\tSYS_SEMOP                    = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_MSGGET                   = 225 // { int msgget(key_t key, int msgflg); }\n\tSYS_MSGSND                   = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV                   = 227 // { ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT                    = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT                    = 230 // { int shmdt(const void *shmaddr); }\n\tSYS_SHMGET                   = 231 // { int shmget(key_t key, size_t size, int shmflg); }\n\tSYS_CLOCK_GETTIME            = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME            = 233 // { int clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES             = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_KTIMER_CREATE            = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); }\n\tSYS_KTIMER_DELETE            = 236 // { int ktimer_delete(int timerid); }\n\tSYS_KTIMER_SETTIME           = 237 // { int ktimer_settime(int timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }\n\tSYS_KTIMER_GETTIME           = 238 // { int ktimer_gettime(int timerid, struct itimerspec *value); }\n\tSYS_KTIMER_GETOVERRUN        = 239 // { int ktimer_getoverrun(int timerid); }\n\tSYS_NANOSLEEP                = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_FFCLOCK_GETCOUNTER       = 241 // { int ffclock_getcounter(ffcounter *ffcount); }\n\tSYS_FFCLOCK_SETESTIMATE      = 242 // { int ffclock_setestimate(struct ffclock_estimate *cest); }\n\tSYS_FFCLOCK_GETESTIMATE      = 243 // { int ffclock_getestimate(struct ffclock_estimate *cest); }\n\tSYS_CLOCK_NANOSLEEP          = 244 // { int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_CLOCK_GETCPUCLOCKID2     = 247 // { int clock_getcpuclockid2(id_t id, int which, clockid_t *clock_id); }\n\tSYS_NTP_GETTIME              = 248 // { int ntp_gettime(struct ntptimeval *ntvp); }\n\tSYS_MINHERIT                 = 250 // { int minherit(void *addr, size_t len, int inherit); }\n\tSYS_RFORK                    = 251 // { int rfork(int flags); }\n\tSYS_ISSETUGID                = 253 // { int issetugid(void); }\n\tSYS_LCHOWN                   = 254 // { int lchown(char *path, int uid, int gid); }\n\tSYS_AIO_READ                 = 255 // { int aio_read(struct aiocb *aiocbp); }\n\tSYS_AIO_WRITE                = 256 // { int aio_write(struct aiocb *aiocbp); }\n\tSYS_LIO_LISTIO               = 257 // { int lio_listio(int mode, struct aiocb* const *acb_list, int nent, struct sigevent *sig); }\n\tSYS_LCHMOD                   = 274 // { int lchmod(char *path, mode_t mode); }\n\tSYS_LUTIMES                  = 276 // { int lutimes(char *path, struct timeval *tptr); }\n\tSYS_PREADV                   = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }\n\tSYS_PWRITEV                  = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }\n\tSYS_FHOPEN                   = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); }\n\tSYS_MODNEXT                  = 300 // { int modnext(int modid); }\n\tSYS_MODSTAT                  = 301 // { int modstat(int modid, struct module_stat* stat); }\n\tSYS_MODFNEXT                 = 302 // { int modfnext(int modid); }\n\tSYS_MODFIND                  = 303 // { int modfind(const char *name); }\n\tSYS_KLDLOAD                  = 304 // { int kldload(const char *file); }\n\tSYS_KLDUNLOAD                = 305 // { int kldunload(int fileid); }\n\tSYS_KLDFIND                  = 306 // { int kldfind(const char *file); }\n\tSYS_KLDNEXT                  = 307 // { int kldnext(int fileid); }\n\tSYS_KLDSTAT                  = 308 // { int kldstat(int fileid, struct kld_file_stat *stat); }\n\tSYS_KLDFIRSTMOD              = 309 // { int kldfirstmod(int fileid); }\n\tSYS_GETSID                   = 310 // { int getsid(pid_t pid); }\n\tSYS_SETRESUID                = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_SETRESGID                = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_AIO_RETURN               = 314 // { ssize_t aio_return(struct aiocb *aiocbp); }\n\tSYS_AIO_SUSPEND              = 315 // { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); }\n\tSYS_AIO_CANCEL               = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); }\n\tSYS_AIO_ERROR                = 317 // { int aio_error(struct aiocb *aiocbp); }\n\tSYS_YIELD                    = 321 // { int yield(void); }\n\tSYS_MLOCKALL                 = 324 // { int mlockall(int how); }\n\tSYS_MUNLOCKALL               = 325 // { int munlockall(void); }\n\tSYS___GETCWD                 = 326 // { int __getcwd(char *buf, size_t buflen); }\n\tSYS_SCHED_SETPARAM           = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); }\n\tSYS_SCHED_GETPARAM           = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); }\n\tSYS_SCHED_SETSCHEDULER       = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); }\n\tSYS_SCHED_GETSCHEDULER       = 330 // { int sched_getscheduler (pid_t pid); }\n\tSYS_SCHED_YIELD              = 331 // { int sched_yield (void); }\n\tSYS_SCHED_GET_PRIORITY_MAX   = 332 // { int sched_get_priority_max (int policy); }\n\tSYS_SCHED_GET_PRIORITY_MIN   = 333 // { int sched_get_priority_min (int policy); }\n\tSYS_SCHED_RR_GET_INTERVAL    = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); }\n\tSYS_UTRACE                   = 335 // { int utrace(const void *addr, size_t len); }\n\tSYS_KLDSYM                   = 337 // { int kldsym(int fileid, int cmd, void *data); }\n\tSYS_JAIL                     = 338 // { int jail(struct jail *jail); }\n\tSYS_SIGPROCMASK              = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); }\n\tSYS_SIGSUSPEND               = 341 // { int sigsuspend(const sigset_t *sigmask); }\n\tSYS_SIGPENDING               = 343 // { int sigpending(sigset_t *set); }\n\tSYS_SIGTIMEDWAIT             = 345 // { int sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec *timeout); }\n\tSYS_SIGWAITINFO              = 346 // { int sigwaitinfo(const sigset_t *set, siginfo_t *info); }\n\tSYS___ACL_GET_FILE           = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_FILE           = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_GET_FD             = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_FD             = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_DELETE_FILE        = 351 // { int __acl_delete_file(const char *path, acl_type_t type); }\n\tSYS___ACL_DELETE_FD          = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); }\n\tSYS___ACL_ACLCHECK_FILE      = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_ACLCHECK_FD        = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS_EXTATTRCTL               = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FILE         = 356 // { ssize_t extattr_set_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FILE         = 357 // { ssize_t extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FILE      = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_AIO_WAITCOMPLETE         = 359 // { ssize_t aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); }\n\tSYS_GETRESUID                = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_GETRESGID                = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_KQUEUE                   = 362 // { int kqueue(void); }\n\tSYS_EXTATTR_SET_FD           = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FD           = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FD        = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }\n\tSYS___SETUGID                = 374 // { int __setugid(int flag); }\n\tSYS_EACCESS                  = 376 // { int eaccess(char *path, int amode); }\n\tSYS_NMOUNT                   = 378 // { int nmount(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS___MAC_GET_PROC           = 384 // { int __mac_get_proc(struct mac *mac_p); }\n\tSYS___MAC_SET_PROC           = 385 // { int __mac_set_proc(struct mac *mac_p); }\n\tSYS___MAC_GET_FD             = 386 // { int __mac_get_fd(int fd, struct mac *mac_p); }\n\tSYS___MAC_GET_FILE           = 387 // { int __mac_get_file(const char *path_p, struct mac *mac_p); }\n\tSYS___MAC_SET_FD             = 388 // { int __mac_set_fd(int fd, struct mac *mac_p); }\n\tSYS___MAC_SET_FILE           = 389 // { int __mac_set_file(const char *path_p, struct mac *mac_p); }\n\tSYS_KENV                     = 390 // { int kenv(int what, const char *name, char *value, int len); }\n\tSYS_LCHFLAGS                 = 391 // { int lchflags(const char *path, u_long flags); }\n\tSYS_UUIDGEN                  = 392 // { int uuidgen(struct uuid *store, int count); }\n\tSYS_SENDFILE                 = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); }\n\tSYS_MAC_SYSCALL              = 394 // { int mac_syscall(const char *policy, int call, void *arg); }\n\tSYS_KSEM_CLOSE               = 400 // { int ksem_close(semid_t id); }\n\tSYS_KSEM_POST                = 401 // { int ksem_post(semid_t id); }\n\tSYS_KSEM_WAIT                = 402 // { int ksem_wait(semid_t id); }\n\tSYS_KSEM_TRYWAIT             = 403 // { int ksem_trywait(semid_t id); }\n\tSYS_KSEM_INIT                = 404 // { int ksem_init(semid_t *idp, unsigned int value); }\n\tSYS_KSEM_OPEN                = 405 // { int ksem_open(semid_t *idp, const char *name, int oflag, mode_t mode, unsigned int value); }\n\tSYS_KSEM_UNLINK              = 406 // { int ksem_unlink(const char *name); }\n\tSYS_KSEM_GETVALUE            = 407 // { int ksem_getvalue(semid_t id, int *val); }\n\tSYS_KSEM_DESTROY             = 408 // { int ksem_destroy(semid_t id); }\n\tSYS___MAC_GET_PID            = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); }\n\tSYS___MAC_GET_LINK           = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); }\n\tSYS___MAC_SET_LINK           = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); }\n\tSYS_EXTATTR_SET_LINK         = 412 // { ssize_t extattr_set_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_LINK         = 413 // { ssize_t extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_LINK      = 414 // { int extattr_delete_link(const char *path, int attrnamespace, const char *attrname); }\n\tSYS___MAC_EXECVE             = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); }\n\tSYS_SIGACTION                = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); }\n\tSYS_SIGRETURN                = 417 // { int sigreturn(const struct __ucontext *sigcntxp); }\n\tSYS_GETCONTEXT               = 421 // { int getcontext(struct __ucontext *ucp); }\n\tSYS_SETCONTEXT               = 422 // { int setcontext(const struct __ucontext *ucp); }\n\tSYS_SWAPCONTEXT              = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); }\n\tSYS_SWAPOFF                  = 424 // { int swapoff(const char *name); }\n\tSYS___ACL_GET_LINK           = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_LINK           = 426 // { int __acl_set_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_DELETE_LINK        = 427 // { int __acl_delete_link(const char *path, acl_type_t type); }\n\tSYS___ACL_ACLCHECK_LINK      = 428 // { int __acl_aclcheck_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS_SIGWAIT                  = 429 // { int sigwait(const sigset_t *set, int *sig); }\n\tSYS_THR_CREATE               = 430 // { int thr_create(ucontext_t *ctx, long *id, int flags); }\n\tSYS_THR_EXIT                 = 431 // { void thr_exit(long *state); }\n\tSYS_THR_SELF                 = 432 // { int thr_self(long *id); }\n\tSYS_THR_KILL                 = 433 // { int thr_kill(long id, int sig); }\n\tSYS_JAIL_ATTACH              = 436 // { int jail_attach(int jid); }\n\tSYS_EXTATTR_LIST_FD          = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_FILE        = 438 // { ssize_t extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_LINK        = 439 // { ssize_t extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_KSEM_TIMEDWAIT           = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); }\n\tSYS_THR_SUSPEND              = 442 // { int thr_suspend(const struct timespec *timeout); }\n\tSYS_THR_WAKE                 = 443 // { int thr_wake(long id); }\n\tSYS_KLDUNLOADF               = 444 // { int kldunloadf(int fileid, int flags); }\n\tSYS_AUDIT                    = 445 // { int audit(const void *record, u_int length); }\n\tSYS_AUDITON                  = 446 // { int auditon(int cmd, void *data, u_int length); }\n\tSYS_GETAUID                  = 447 // { int getauid(uid_t *auid); }\n\tSYS_SETAUID                  = 448 // { int setauid(uid_t *auid); }\n\tSYS_GETAUDIT                 = 449 // { int getaudit(struct auditinfo *auditinfo); }\n\tSYS_SETAUDIT                 = 450 // { int setaudit(struct auditinfo *auditinfo); }\n\tSYS_GETAUDIT_ADDR            = 451 // { int getaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); }\n\tSYS_SETAUDIT_ADDR            = 452 // { int setaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); }\n\tSYS_AUDITCTL                 = 453 // { int auditctl(char *path); }\n\tSYS__UMTX_OP                 = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); }\n\tSYS_THR_NEW                  = 455 // { int thr_new(struct thr_param *param, int param_size); }\n\tSYS_SIGQUEUE                 = 456 // { int sigqueue(pid_t pid, int signum, void *value); }\n\tSYS_KMQ_OPEN                 = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); }\n\tSYS_KMQ_SETATTR              = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); }\n\tSYS_KMQ_TIMEDRECEIVE         = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); }\n\tSYS_KMQ_TIMEDSEND            = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len, unsigned msg_prio, const struct timespec *abs_timeout); }\n\tSYS_KMQ_NOTIFY               = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); }\n\tSYS_KMQ_UNLINK               = 462 // { int kmq_unlink(const char *path); }\n\tSYS_ABORT2                   = 463 // { int abort2(const char *why, int nargs, void **args); }\n\tSYS_THR_SET_NAME             = 464 // { int thr_set_name(long id, const char *name); }\n\tSYS_AIO_FSYNC                = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); }\n\tSYS_RTPRIO_THREAD            = 466 // { int rtprio_thread(int function, lwpid_t lwpid, struct rtprio *rtp); }\n\tSYS_SCTP_PEELOFF             = 471 // { int sctp_peeloff(int sd, uint32_t name); }\n\tSYS_SCTP_GENERIC_SENDMSG     = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }\n\tSYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }\n\tSYS_SCTP_GENERIC_RECVMSG     = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr *from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); }\n\tSYS_PREAD                    = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); }\n\tSYS_PWRITE                   = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); }\n\tSYS_MMAP                     = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); }\n\tSYS_LSEEK                    = 478 // { off_t lseek(int fd, off_t offset, int whence); }\n\tSYS_TRUNCATE                 = 479 // { int truncate(char *path, off_t length); }\n\tSYS_FTRUNCATE                = 480 // { int ftruncate(int fd, off_t length); }\n\tSYS_THR_KILL2                = 481 // { int thr_kill2(pid_t pid, long id, int sig); }\n\tSYS_SHM_OPEN                 = 482 // { int shm_open(const char *path, int flags, mode_t mode); }\n\tSYS_SHM_UNLINK               = 483 // { int shm_unlink(const char *path); }\n\tSYS_CPUSET                   = 484 // { int cpuset(cpusetid_t *setid); }\n\tSYS_CPUSET_SETID             = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, cpusetid_t setid); }\n\tSYS_CPUSET_GETID             = 486 // { int cpuset_getid(cpulevel_t level, cpuwhich_t which, id_t id, cpusetid_t *setid); }\n\tSYS_CPUSET_GETAFFINITY       = 487 // { int cpuset_getaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, cpuset_t *mask); }\n\tSYS_CPUSET_SETAFFINITY       = 488 // { int cpuset_setaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, const cpuset_t *mask); }\n\tSYS_FACCESSAT                = 489 // { int faccessat(int fd, char *path, int amode, int flag); }\n\tSYS_FCHMODAT                 = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT                 = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); }\n\tSYS_FEXECVE                  = 492 // { int fexecve(int fd, char **argv, char **envv); }\n\tSYS_FUTIMESAT                = 494 // { int futimesat(int fd, char *path, struct timeval *times); }\n\tSYS_LINKAT                   = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); }\n\tSYS_MKDIRAT                  = 496 // { int mkdirat(int fd, char *path, mode_t mode); }\n\tSYS_MKFIFOAT                 = 497 // { int mkfifoat(int fd, char *path, mode_t mode); }\n\tSYS_OPENAT                   = 499 // { int openat(int fd, char *path, int flag, mode_t mode); }\n\tSYS_READLINKAT               = 500 // { ssize_t readlinkat(int fd, char *path, char *buf, size_t bufsize); }\n\tSYS_RENAMEAT                 = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); }\n\tSYS_SYMLINKAT                = 502 // { int symlinkat(char *path1, int fd, char *path2); }\n\tSYS_UNLINKAT                 = 503 // { int unlinkat(int fd, char *path, int flag); }\n\tSYS_POSIX_OPENPT             = 504 // { int posix_openpt(int flags); }\n\tSYS_GSSD_SYSCALL             = 505 // { int gssd_syscall(char *path); }\n\tSYS_JAIL_GET                 = 506 // { int jail_get(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS_JAIL_SET                 = 507 // { int jail_set(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS_JAIL_REMOVE              = 508 // { int jail_remove(int jid); }\n\tSYS_CLOSEFROM                = 509 // { int closefrom(int lowfd); }\n\tSYS___SEMCTL                 = 510 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_MSGCTL                   = 511 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_SHMCTL                   = 512 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_LPATHCONF                = 513 // { int lpathconf(char *path, int name); }\n\tSYS___CAP_RIGHTS_GET         = 515 // { int __cap_rights_get(int version, int fd, cap_rights_t *rightsp); }\n\tSYS_CAP_ENTER                = 516 // { int cap_enter(void); }\n\tSYS_CAP_GETMODE              = 517 // { int cap_getmode(u_int *modep); }\n\tSYS_PDFORK                   = 518 // { int pdfork(int *fdp, int flags); }\n\tSYS_PDKILL                   = 519 // { int pdkill(int fd, int signum); }\n\tSYS_PDGETPID                 = 520 // { int pdgetpid(int fd, pid_t *pidp); }\n\tSYS_PSELECT                  = 522 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sm); }\n\tSYS_GETLOGINCLASS            = 523 // { int getloginclass(char *namebuf, size_t namelen); }\n\tSYS_SETLOGINCLASS            = 524 // { int setloginclass(const char *namebuf); }\n\tSYS_RCTL_GET_RACCT           = 525 // { int rctl_get_racct(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_GET_RULES           = 526 // { int rctl_get_rules(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_GET_LIMITS          = 527 // { int rctl_get_limits(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_ADD_RULE            = 528 // { int rctl_add_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_REMOVE_RULE         = 529 // { int rctl_remove_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_POSIX_FALLOCATE          = 530 // { int posix_fallocate(int fd, off_t offset, off_t len); }\n\tSYS_POSIX_FADVISE            = 531 // { int posix_fadvise(int fd, off_t offset, off_t len, int advice); }\n\tSYS_WAIT6                    = 532 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); }\n\tSYS_CAP_RIGHTS_LIMIT         = 533 // { int cap_rights_limit(int fd, cap_rights_t *rightsp); }\n\tSYS_CAP_IOCTLS_LIMIT         = 534 // { int cap_ioctls_limit(int fd, const u_long *cmds, size_t ncmds); }\n\tSYS_CAP_IOCTLS_GET           = 535 // { ssize_t cap_ioctls_get(int fd, u_long *cmds, size_t maxcmds); }\n\tSYS_CAP_FCNTLS_LIMIT         = 536 // { int cap_fcntls_limit(int fd, uint32_t fcntlrights); }\n\tSYS_CAP_FCNTLS_GET           = 537 // { int cap_fcntls_get(int fd, uint32_t *fcntlrightsp); }\n\tSYS_BINDAT                   = 538 // { int bindat(int fd, int s, caddr_t name, int namelen); }\n\tSYS_CONNECTAT                = 539 // { int connectat(int fd, int s, caddr_t name, int namelen); }\n\tSYS_CHFLAGSAT                = 540 // { int chflagsat(int fd, const char *path, u_long flags, int atflag); }\n\tSYS_ACCEPT4                  = 541 // { int accept4(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen, int flags); }\n\tSYS_PIPE2                    = 542 // { int pipe2(int *fildes, int flags); }\n\tSYS_AIO_MLOCK                = 543 // { int aio_mlock(struct aiocb *aiocbp); }\n\tSYS_PROCCTL                  = 544 // { int procctl(idtype_t idtype, id_t id, int com, void *data); }\n\tSYS_PPOLL                    = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); }\n\tSYS_FUTIMENS                 = 546 // { int futimens(int fd, struct timespec *times); }\n\tSYS_UTIMENSAT                = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); }\n\tSYS_FDATASYNC                = 550 // { int fdatasync(int fd); }\n\tSYS_FSTAT                    = 551 // { int fstat(int fd, struct stat *sb); }\n\tSYS_FSTATAT                  = 552 // { int fstatat(int fd, char *path, struct stat *buf, int flag); }\n\tSYS_FHSTAT                   = 553 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); }\n\tSYS_GETDIRENTRIES            = 554 // { ssize_t getdirentries(int fd, char *buf, size_t count, off_t *basep); }\n\tSYS_STATFS                   = 555 // { int statfs(char *path, struct statfs *buf); }\n\tSYS_FSTATFS                  = 556 // { int fstatfs(int fd, struct statfs *buf); }\n\tSYS_GETFSSTAT                = 557 // { int getfsstat(struct statfs *buf, long bufsize, int mode); }\n\tSYS_FHSTATFS                 = 558 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); }\n\tSYS_MKNODAT                  = 559 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); }\n\tSYS_KEVENT                   = 560 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_CPUSET_GETDOMAIN         = 561 // { int cpuset_getdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int *policy); }\n\tSYS_CPUSET_SETDOMAIN         = 562 // { int cpuset_setdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int policy); }\n\tSYS_GETRANDOM                = 563 // { int getrandom(void *buf, size_t buflen, unsigned int flags); }\n\tSYS_GETFHAT                  = 564 // { int getfhat(int fd, char *path, struct fhandle *fhp, int flags); }\n\tSYS_FHLINK                   = 565 // { int fhlink(struct fhandle *fhp, const char *to); }\n\tSYS_FHLINKAT                 = 566 // { int fhlinkat(struct fhandle *fhp, int tofd, const char *to,); }\n\tSYS_FHREADLINK               = 567 // { int fhreadlink(struct fhandle *fhp, char *buf, size_t bufsize); }\n\tSYS___SYSCTLBYNAME           = 570 // { int __sysctlbyname(const char *name, size_t namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }\n\tSYS_CLOSE_RANGE              = 575 // { int close_range(u_int lowfd, u_int highfd, int flags); }\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_linux_386.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/386/include -m32 /tmp/386/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build 386 && linux\n\npackage unix\n\nconst (\n\tSYS_RESTART_SYSCALL              = 0\n\tSYS_EXIT                         = 1\n\tSYS_FORK                         = 2\n\tSYS_READ                         = 3\n\tSYS_WRITE                        = 4\n\tSYS_OPEN                         = 5\n\tSYS_CLOSE                        = 6\n\tSYS_WAITPID                      = 7\n\tSYS_CREAT                        = 8\n\tSYS_LINK                         = 9\n\tSYS_UNLINK                       = 10\n\tSYS_EXECVE                       = 11\n\tSYS_CHDIR                        = 12\n\tSYS_TIME                         = 13\n\tSYS_MKNOD                        = 14\n\tSYS_CHMOD                        = 15\n\tSYS_LCHOWN                       = 16\n\tSYS_BREAK                        = 17\n\tSYS_OLDSTAT                      = 18\n\tSYS_LSEEK                        = 19\n\tSYS_GETPID                       = 20\n\tSYS_MOUNT                        = 21\n\tSYS_UMOUNT                       = 22\n\tSYS_SETUID                       = 23\n\tSYS_GETUID                       = 24\n\tSYS_STIME                        = 25\n\tSYS_PTRACE                       = 26\n\tSYS_ALARM                        = 27\n\tSYS_OLDFSTAT                     = 28\n\tSYS_PAUSE                        = 29\n\tSYS_UTIME                        = 30\n\tSYS_STTY                         = 31\n\tSYS_GTTY                         = 32\n\tSYS_ACCESS                       = 33\n\tSYS_NICE                         = 34\n\tSYS_FTIME                        = 35\n\tSYS_SYNC                         = 36\n\tSYS_KILL                         = 37\n\tSYS_RENAME                       = 38\n\tSYS_MKDIR                        = 39\n\tSYS_RMDIR                        = 40\n\tSYS_DUP                          = 41\n\tSYS_PIPE                         = 42\n\tSYS_TIMES                        = 43\n\tSYS_PROF                         = 44\n\tSYS_BRK                          = 45\n\tSYS_SETGID                       = 46\n\tSYS_GETGID                       = 47\n\tSYS_SIGNAL                       = 48\n\tSYS_GETEUID                      = 49\n\tSYS_GETEGID                      = 50\n\tSYS_ACCT                         = 51\n\tSYS_UMOUNT2                      = 52\n\tSYS_LOCK                         = 53\n\tSYS_IOCTL                        = 54\n\tSYS_FCNTL                        = 55\n\tSYS_MPX                          = 56\n\tSYS_SETPGID                      = 57\n\tSYS_ULIMIT                       = 58\n\tSYS_OLDOLDUNAME                  = 59\n\tSYS_UMASK                        = 60\n\tSYS_CHROOT                       = 61\n\tSYS_USTAT                        = 62\n\tSYS_DUP2                         = 63\n\tSYS_GETPPID                      = 64\n\tSYS_GETPGRP                      = 65\n\tSYS_SETSID                       = 66\n\tSYS_SIGACTION                    = 67\n\tSYS_SGETMASK                     = 68\n\tSYS_SSETMASK                     = 69\n\tSYS_SETREUID                     = 70\n\tSYS_SETREGID                     = 71\n\tSYS_SIGSUSPEND                   = 72\n\tSYS_SIGPENDING                   = 73\n\tSYS_SETHOSTNAME                  = 74\n\tSYS_SETRLIMIT                    = 75\n\tSYS_GETRLIMIT                    = 76\n\tSYS_GETRUSAGE                    = 77\n\tSYS_GETTIMEOFDAY                 = 78\n\tSYS_SETTIMEOFDAY                 = 79\n\tSYS_GETGROUPS                    = 80\n\tSYS_SETGROUPS                    = 81\n\tSYS_SELECT                       = 82\n\tSYS_SYMLINK                      = 83\n\tSYS_OLDLSTAT                     = 84\n\tSYS_READLINK                     = 85\n\tSYS_USELIB                       = 86\n\tSYS_SWAPON                       = 87\n\tSYS_REBOOT                       = 88\n\tSYS_READDIR                      = 89\n\tSYS_MMAP                         = 90\n\tSYS_MUNMAP                       = 91\n\tSYS_TRUNCATE                     = 92\n\tSYS_FTRUNCATE                    = 93\n\tSYS_FCHMOD                       = 94\n\tSYS_FCHOWN                       = 95\n\tSYS_GETPRIORITY                  = 96\n\tSYS_SETPRIORITY                  = 97\n\tSYS_PROFIL                       = 98\n\tSYS_STATFS                       = 99\n\tSYS_FSTATFS                      = 100\n\tSYS_IOPERM                       = 101\n\tSYS_SOCKETCALL                   = 102\n\tSYS_SYSLOG                       = 103\n\tSYS_SETITIMER                    = 104\n\tSYS_GETITIMER                    = 105\n\tSYS_STAT                         = 106\n\tSYS_LSTAT                        = 107\n\tSYS_FSTAT                        = 108\n\tSYS_OLDUNAME                     = 109\n\tSYS_IOPL                         = 110\n\tSYS_VHANGUP                      = 111\n\tSYS_IDLE                         = 112\n\tSYS_VM86OLD                      = 113\n\tSYS_WAIT4                        = 114\n\tSYS_SWAPOFF                      = 115\n\tSYS_SYSINFO                      = 116\n\tSYS_IPC                          = 117\n\tSYS_FSYNC                        = 118\n\tSYS_SIGRETURN                    = 119\n\tSYS_CLONE                        = 120\n\tSYS_SETDOMAINNAME                = 121\n\tSYS_UNAME                        = 122\n\tSYS_MODIFY_LDT                   = 123\n\tSYS_ADJTIMEX                     = 124\n\tSYS_MPROTECT                     = 125\n\tSYS_SIGPROCMASK                  = 126\n\tSYS_CREATE_MODULE                = 127\n\tSYS_INIT_MODULE                  = 128\n\tSYS_DELETE_MODULE                = 129\n\tSYS_GET_KERNEL_SYMS              = 130\n\tSYS_QUOTACTL                     = 131\n\tSYS_GETPGID                      = 132\n\tSYS_FCHDIR                       = 133\n\tSYS_BDFLUSH                      = 134\n\tSYS_SYSFS                        = 135\n\tSYS_PERSONALITY                  = 136\n\tSYS_AFS_SYSCALL                  = 137\n\tSYS_SETFSUID                     = 138\n\tSYS_SETFSGID                     = 139\n\tSYS__LLSEEK                      = 140\n\tSYS_GETDENTS                     = 141\n\tSYS__NEWSELECT                   = 142\n\tSYS_FLOCK                        = 143\n\tSYS_MSYNC                        = 144\n\tSYS_READV                        = 145\n\tSYS_WRITEV                       = 146\n\tSYS_GETSID                       = 147\n\tSYS_FDATASYNC                    = 148\n\tSYS__SYSCTL                      = 149\n\tSYS_MLOCK                        = 150\n\tSYS_MUNLOCK                      = 151\n\tSYS_MLOCKALL                     = 152\n\tSYS_MUNLOCKALL                   = 153\n\tSYS_SCHED_SETPARAM               = 154\n\tSYS_SCHED_GETPARAM               = 155\n\tSYS_SCHED_SETSCHEDULER           = 156\n\tSYS_SCHED_GETSCHEDULER           = 157\n\tSYS_SCHED_YIELD                  = 158\n\tSYS_SCHED_GET_PRIORITY_MAX       = 159\n\tSYS_SCHED_GET_PRIORITY_MIN       = 160\n\tSYS_SCHED_RR_GET_INTERVAL        = 161\n\tSYS_NANOSLEEP                    = 162\n\tSYS_MREMAP                       = 163\n\tSYS_SETRESUID                    = 164\n\tSYS_GETRESUID                    = 165\n\tSYS_VM86                         = 166\n\tSYS_QUERY_MODULE                 = 167\n\tSYS_POLL                         = 168\n\tSYS_NFSSERVCTL                   = 169\n\tSYS_SETRESGID                    = 170\n\tSYS_GETRESGID                    = 171\n\tSYS_PRCTL                        = 172\n\tSYS_RT_SIGRETURN                 = 173\n\tSYS_RT_SIGACTION                 = 174\n\tSYS_RT_SIGPROCMASK               = 175\n\tSYS_RT_SIGPENDING                = 176\n\tSYS_RT_SIGTIMEDWAIT              = 177\n\tSYS_RT_SIGQUEUEINFO              = 178\n\tSYS_RT_SIGSUSPEND                = 179\n\tSYS_PREAD64                      = 180\n\tSYS_PWRITE64                     = 181\n\tSYS_CHOWN                        = 182\n\tSYS_GETCWD                       = 183\n\tSYS_CAPGET                       = 184\n\tSYS_CAPSET                       = 185\n\tSYS_SIGALTSTACK                  = 186\n\tSYS_SENDFILE                     = 187\n\tSYS_GETPMSG                      = 188\n\tSYS_PUTPMSG                      = 189\n\tSYS_VFORK                        = 190\n\tSYS_UGETRLIMIT                   = 191\n\tSYS_MMAP2                        = 192\n\tSYS_TRUNCATE64                   = 193\n\tSYS_FTRUNCATE64                  = 194\n\tSYS_STAT64                       = 195\n\tSYS_LSTAT64                      = 196\n\tSYS_FSTAT64                      = 197\n\tSYS_LCHOWN32                     = 198\n\tSYS_GETUID32                     = 199\n\tSYS_GETGID32                     = 200\n\tSYS_GETEUID32                    = 201\n\tSYS_GETEGID32                    = 202\n\tSYS_SETREUID32                   = 203\n\tSYS_SETREGID32                   = 204\n\tSYS_GETGROUPS32                  = 205\n\tSYS_SETGROUPS32                  = 206\n\tSYS_FCHOWN32                     = 207\n\tSYS_SETRESUID32                  = 208\n\tSYS_GETRESUID32                  = 209\n\tSYS_SETRESGID32                  = 210\n\tSYS_GETRESGID32                  = 211\n\tSYS_CHOWN32                      = 212\n\tSYS_SETUID32                     = 213\n\tSYS_SETGID32                     = 214\n\tSYS_SETFSUID32                   = 215\n\tSYS_SETFSGID32                   = 216\n\tSYS_PIVOT_ROOT                   = 217\n\tSYS_MINCORE                      = 218\n\tSYS_MADVISE                      = 219\n\tSYS_GETDENTS64                   = 220\n\tSYS_FCNTL64                      = 221\n\tSYS_GETTID                       = 224\n\tSYS_READAHEAD                    = 225\n\tSYS_SETXATTR                     = 226\n\tSYS_LSETXATTR                    = 227\n\tSYS_FSETXATTR                    = 228\n\tSYS_GETXATTR                     = 229\n\tSYS_LGETXATTR                    = 230\n\tSYS_FGETXATTR                    = 231\n\tSYS_LISTXATTR                    = 232\n\tSYS_LLISTXATTR                   = 233\n\tSYS_FLISTXATTR                   = 234\n\tSYS_REMOVEXATTR                  = 235\n\tSYS_LREMOVEXATTR                 = 236\n\tSYS_FREMOVEXATTR                 = 237\n\tSYS_TKILL                        = 238\n\tSYS_SENDFILE64                   = 239\n\tSYS_FUTEX                        = 240\n\tSYS_SCHED_SETAFFINITY            = 241\n\tSYS_SCHED_GETAFFINITY            = 242\n\tSYS_SET_THREAD_AREA              = 243\n\tSYS_GET_THREAD_AREA              = 244\n\tSYS_IO_SETUP                     = 245\n\tSYS_IO_DESTROY                   = 246\n\tSYS_IO_GETEVENTS                 = 247\n\tSYS_IO_SUBMIT                    = 248\n\tSYS_IO_CANCEL                    = 249\n\tSYS_FADVISE64                    = 250\n\tSYS_EXIT_GROUP                   = 252\n\tSYS_LOOKUP_DCOOKIE               = 253\n\tSYS_EPOLL_CREATE                 = 254\n\tSYS_EPOLL_CTL                    = 255\n\tSYS_EPOLL_WAIT                   = 256\n\tSYS_REMAP_FILE_PAGES             = 257\n\tSYS_SET_TID_ADDRESS              = 258\n\tSYS_TIMER_CREATE                 = 259\n\tSYS_TIMER_SETTIME                = 260\n\tSYS_TIMER_GETTIME                = 261\n\tSYS_TIMER_GETOVERRUN             = 262\n\tSYS_TIMER_DELETE                 = 263\n\tSYS_CLOCK_SETTIME                = 264\n\tSYS_CLOCK_GETTIME                = 265\n\tSYS_CLOCK_GETRES                 = 266\n\tSYS_CLOCK_NANOSLEEP              = 267\n\tSYS_STATFS64                     = 268\n\tSYS_FSTATFS64                    = 269\n\tSYS_TGKILL                       = 270\n\tSYS_UTIMES                       = 271\n\tSYS_FADVISE64_64                 = 272\n\tSYS_VSERVER                      = 273\n\tSYS_MBIND                        = 274\n\tSYS_GET_MEMPOLICY                = 275\n\tSYS_SET_MEMPOLICY                = 276\n\tSYS_MQ_OPEN                      = 277\n\tSYS_MQ_UNLINK                    = 278\n\tSYS_MQ_TIMEDSEND                 = 279\n\tSYS_MQ_TIMEDRECEIVE              = 280\n\tSYS_MQ_NOTIFY                    = 281\n\tSYS_MQ_GETSETATTR                = 282\n\tSYS_KEXEC_LOAD                   = 283\n\tSYS_WAITID                       = 284\n\tSYS_ADD_KEY                      = 286\n\tSYS_REQUEST_KEY                  = 287\n\tSYS_KEYCTL                       = 288\n\tSYS_IOPRIO_SET                   = 289\n\tSYS_IOPRIO_GET                   = 290\n\tSYS_INOTIFY_INIT                 = 291\n\tSYS_INOTIFY_ADD_WATCH            = 292\n\tSYS_INOTIFY_RM_WATCH             = 293\n\tSYS_MIGRATE_PAGES                = 294\n\tSYS_OPENAT                       = 295\n\tSYS_MKDIRAT                      = 296\n\tSYS_MKNODAT                      = 297\n\tSYS_FCHOWNAT                     = 298\n\tSYS_FUTIMESAT                    = 299\n\tSYS_FSTATAT64                    = 300\n\tSYS_UNLINKAT                     = 301\n\tSYS_RENAMEAT                     = 302\n\tSYS_LINKAT                       = 303\n\tSYS_SYMLINKAT                    = 304\n\tSYS_READLINKAT                   = 305\n\tSYS_FCHMODAT                     = 306\n\tSYS_FACCESSAT                    = 307\n\tSYS_PSELECT6                     = 308\n\tSYS_PPOLL                        = 309\n\tSYS_UNSHARE                      = 310\n\tSYS_SET_ROBUST_LIST              = 311\n\tSYS_GET_ROBUST_LIST              = 312\n\tSYS_SPLICE                       = 313\n\tSYS_SYNC_FILE_RANGE              = 314\n\tSYS_TEE                          = 315\n\tSYS_VMSPLICE                     = 316\n\tSYS_MOVE_PAGES                   = 317\n\tSYS_GETCPU                       = 318\n\tSYS_EPOLL_PWAIT                  = 319\n\tSYS_UTIMENSAT                    = 320\n\tSYS_SIGNALFD                     = 321\n\tSYS_TIMERFD_CREATE               = 322\n\tSYS_EVENTFD                      = 323\n\tSYS_FALLOCATE                    = 324\n\tSYS_TIMERFD_SETTIME              = 325\n\tSYS_TIMERFD_GETTIME              = 326\n\tSYS_SIGNALFD4                    = 327\n\tSYS_EVENTFD2                     = 328\n\tSYS_EPOLL_CREATE1                = 329\n\tSYS_DUP3                         = 330\n\tSYS_PIPE2                        = 331\n\tSYS_INOTIFY_INIT1                = 332\n\tSYS_PREADV                       = 333\n\tSYS_PWRITEV                      = 334\n\tSYS_RT_TGSIGQUEUEINFO            = 335\n\tSYS_PERF_EVENT_OPEN              = 336\n\tSYS_RECVMMSG                     = 337\n\tSYS_FANOTIFY_INIT                = 338\n\tSYS_FANOTIFY_MARK                = 339\n\tSYS_PRLIMIT64                    = 340\n\tSYS_NAME_TO_HANDLE_AT            = 341\n\tSYS_OPEN_BY_HANDLE_AT            = 342\n\tSYS_CLOCK_ADJTIME                = 343\n\tSYS_SYNCFS                       = 344\n\tSYS_SENDMMSG                     = 345\n\tSYS_SETNS                        = 346\n\tSYS_PROCESS_VM_READV             = 347\n\tSYS_PROCESS_VM_WRITEV            = 348\n\tSYS_KCMP                         = 349\n\tSYS_FINIT_MODULE                 = 350\n\tSYS_SCHED_SETATTR                = 351\n\tSYS_SCHED_GETATTR                = 352\n\tSYS_RENAMEAT2                    = 353\n\tSYS_SECCOMP                      = 354\n\tSYS_GETRANDOM                    = 355\n\tSYS_MEMFD_CREATE                 = 356\n\tSYS_BPF                          = 357\n\tSYS_EXECVEAT                     = 358\n\tSYS_SOCKET                       = 359\n\tSYS_SOCKETPAIR                   = 360\n\tSYS_BIND                         = 361\n\tSYS_CONNECT                      = 362\n\tSYS_LISTEN                       = 363\n\tSYS_ACCEPT4                      = 364\n\tSYS_GETSOCKOPT                   = 365\n\tSYS_SETSOCKOPT                   = 366\n\tSYS_GETSOCKNAME                  = 367\n\tSYS_GETPEERNAME                  = 368\n\tSYS_SENDTO                       = 369\n\tSYS_SENDMSG                      = 370\n\tSYS_RECVFROM                     = 371\n\tSYS_RECVMSG                      = 372\n\tSYS_SHUTDOWN                     = 373\n\tSYS_USERFAULTFD                  = 374\n\tSYS_MEMBARRIER                   = 375\n\tSYS_MLOCK2                       = 376\n\tSYS_COPY_FILE_RANGE              = 377\n\tSYS_PREADV2                      = 378\n\tSYS_PWRITEV2                     = 379\n\tSYS_PKEY_MPROTECT                = 380\n\tSYS_PKEY_ALLOC                   = 381\n\tSYS_PKEY_FREE                    = 382\n\tSYS_STATX                        = 383\n\tSYS_ARCH_PRCTL                   = 384\n\tSYS_IO_PGETEVENTS                = 385\n\tSYS_RSEQ                         = 386\n\tSYS_SEMGET                       = 393\n\tSYS_SEMCTL                       = 394\n\tSYS_SHMGET                       = 395\n\tSYS_SHMCTL                       = 396\n\tSYS_SHMAT                        = 397\n\tSYS_SHMDT                        = 398\n\tSYS_MSGGET                       = 399\n\tSYS_MSGSND                       = 400\n\tSYS_MSGRCV                       = 401\n\tSYS_MSGCTL                       = 402\n\tSYS_CLOCK_GETTIME64              = 403\n\tSYS_CLOCK_SETTIME64              = 404\n\tSYS_CLOCK_ADJTIME64              = 405\n\tSYS_CLOCK_GETRES_TIME64          = 406\n\tSYS_CLOCK_NANOSLEEP_TIME64       = 407\n\tSYS_TIMER_GETTIME64              = 408\n\tSYS_TIMER_SETTIME64              = 409\n\tSYS_TIMERFD_GETTIME64            = 410\n\tSYS_TIMERFD_SETTIME64            = 411\n\tSYS_UTIMENSAT_TIME64             = 412\n\tSYS_PSELECT6_TIME64              = 413\n\tSYS_PPOLL_TIME64                 = 414\n\tSYS_IO_PGETEVENTS_TIME64         = 416\n\tSYS_RECVMMSG_TIME64              = 417\n\tSYS_MQ_TIMEDSEND_TIME64          = 418\n\tSYS_MQ_TIMEDRECEIVE_TIME64       = 419\n\tSYS_SEMTIMEDOP_TIME64            = 420\n\tSYS_RT_SIGTIMEDWAIT_TIME64       = 421\n\tSYS_FUTEX_TIME64                 = 422\n\tSYS_SCHED_RR_GET_INTERVAL_TIME64 = 423\n\tSYS_PIDFD_SEND_SIGNAL            = 424\n\tSYS_IO_URING_SETUP               = 425\n\tSYS_IO_URING_ENTER               = 426\n\tSYS_IO_URING_REGISTER            = 427\n\tSYS_OPEN_TREE                    = 428\n\tSYS_MOVE_MOUNT                   = 429\n\tSYS_FSOPEN                       = 430\n\tSYS_FSCONFIG                     = 431\n\tSYS_FSMOUNT                      = 432\n\tSYS_FSPICK                       = 433\n\tSYS_PIDFD_OPEN                   = 434\n\tSYS_CLONE3                       = 435\n\tSYS_CLOSE_RANGE                  = 436\n\tSYS_OPENAT2                      = 437\n\tSYS_PIDFD_GETFD                  = 438\n\tSYS_FACCESSAT2                   = 439\n\tSYS_PROCESS_MADVISE              = 440\n\tSYS_EPOLL_PWAIT2                 = 441\n\tSYS_MOUNT_SETATTR                = 442\n\tSYS_QUOTACTL_FD                  = 443\n\tSYS_LANDLOCK_CREATE_RULESET      = 444\n\tSYS_LANDLOCK_ADD_RULE            = 445\n\tSYS_LANDLOCK_RESTRICT_SELF       = 446\n\tSYS_MEMFD_SECRET                 = 447\n\tSYS_PROCESS_MRELEASE             = 448\n\tSYS_FUTEX_WAITV                  = 449\n\tSYS_SET_MEMPOLICY_HOME_NODE      = 450\n\tSYS_CACHESTAT                    = 451\n\tSYS_FCHMODAT2                    = 452\n\tSYS_MAP_SHADOW_STACK             = 453\n\tSYS_FUTEX_WAKE                   = 454\n\tSYS_FUTEX_WAIT                   = 455\n\tSYS_FUTEX_REQUEUE                = 456\n\tSYS_STATMOUNT                    = 457\n\tSYS_LISTMOUNT                    = 458\n\tSYS_LSM_GET_SELF_ATTR            = 459\n\tSYS_LSM_SET_SELF_ATTR            = 460\n\tSYS_LSM_LIST_MODULES             = 461\n\tSYS_MSEAL                        = 462\n\tSYS_SETXATTRAT                   = 463\n\tSYS_GETXATTRAT                   = 464\n\tSYS_LISTXATTRAT                  = 465\n\tSYS_REMOVEXATTRAT                = 466\n\tSYS_OPEN_TREE_ATTR               = 467\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/amd64/include -m64 /tmp/amd64/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && linux\n\npackage unix\n\nconst (\n\tSYS_READ                    = 0\n\tSYS_WRITE                   = 1\n\tSYS_OPEN                    = 2\n\tSYS_CLOSE                   = 3\n\tSYS_STAT                    = 4\n\tSYS_FSTAT                   = 5\n\tSYS_LSTAT                   = 6\n\tSYS_POLL                    = 7\n\tSYS_LSEEK                   = 8\n\tSYS_MMAP                    = 9\n\tSYS_MPROTECT                = 10\n\tSYS_MUNMAP                  = 11\n\tSYS_BRK                     = 12\n\tSYS_RT_SIGACTION            = 13\n\tSYS_RT_SIGPROCMASK          = 14\n\tSYS_RT_SIGRETURN            = 15\n\tSYS_IOCTL                   = 16\n\tSYS_PREAD64                 = 17\n\tSYS_PWRITE64                = 18\n\tSYS_READV                   = 19\n\tSYS_WRITEV                  = 20\n\tSYS_ACCESS                  = 21\n\tSYS_PIPE                    = 22\n\tSYS_SELECT                  = 23\n\tSYS_SCHED_YIELD             = 24\n\tSYS_MREMAP                  = 25\n\tSYS_MSYNC                   = 26\n\tSYS_MINCORE                 = 27\n\tSYS_MADVISE                 = 28\n\tSYS_SHMGET                  = 29\n\tSYS_SHMAT                   = 30\n\tSYS_SHMCTL                  = 31\n\tSYS_DUP                     = 32\n\tSYS_DUP2                    = 33\n\tSYS_PAUSE                   = 34\n\tSYS_NANOSLEEP               = 35\n\tSYS_GETITIMER               = 36\n\tSYS_ALARM                   = 37\n\tSYS_SETITIMER               = 38\n\tSYS_GETPID                  = 39\n\tSYS_SENDFILE                = 40\n\tSYS_SOCKET                  = 41\n\tSYS_CONNECT                 = 42\n\tSYS_ACCEPT                  = 43\n\tSYS_SENDTO                  = 44\n\tSYS_RECVFROM                = 45\n\tSYS_SENDMSG                 = 46\n\tSYS_RECVMSG                 = 47\n\tSYS_SHUTDOWN                = 48\n\tSYS_BIND                    = 49\n\tSYS_LISTEN                  = 50\n\tSYS_GETSOCKNAME             = 51\n\tSYS_GETPEERNAME             = 52\n\tSYS_SOCKETPAIR              = 53\n\tSYS_SETSOCKOPT              = 54\n\tSYS_GETSOCKOPT              = 55\n\tSYS_CLONE                   = 56\n\tSYS_FORK                    = 57\n\tSYS_VFORK                   = 58\n\tSYS_EXECVE                  = 59\n\tSYS_EXIT                    = 60\n\tSYS_WAIT4                   = 61\n\tSYS_KILL                    = 62\n\tSYS_UNAME                   = 63\n\tSYS_SEMGET                  = 64\n\tSYS_SEMOP                   = 65\n\tSYS_SEMCTL                  = 66\n\tSYS_SHMDT                   = 67\n\tSYS_MSGGET                  = 68\n\tSYS_MSGSND                  = 69\n\tSYS_MSGRCV                  = 70\n\tSYS_MSGCTL                  = 71\n\tSYS_FCNTL                   = 72\n\tSYS_FLOCK                   = 73\n\tSYS_FSYNC                   = 74\n\tSYS_FDATASYNC               = 75\n\tSYS_TRUNCATE                = 76\n\tSYS_FTRUNCATE               = 77\n\tSYS_GETDENTS                = 78\n\tSYS_GETCWD                  = 79\n\tSYS_CHDIR                   = 80\n\tSYS_FCHDIR                  = 81\n\tSYS_RENAME                  = 82\n\tSYS_MKDIR                   = 83\n\tSYS_RMDIR                   = 84\n\tSYS_CREAT                   = 85\n\tSYS_LINK                    = 86\n\tSYS_UNLINK                  = 87\n\tSYS_SYMLINK                 = 88\n\tSYS_READLINK                = 89\n\tSYS_CHMOD                   = 90\n\tSYS_FCHMOD                  = 91\n\tSYS_CHOWN                   = 92\n\tSYS_FCHOWN                  = 93\n\tSYS_LCHOWN                  = 94\n\tSYS_UMASK                   = 95\n\tSYS_GETTIMEOFDAY            = 96\n\tSYS_GETRLIMIT               = 97\n\tSYS_GETRUSAGE               = 98\n\tSYS_SYSINFO                 = 99\n\tSYS_TIMES                   = 100\n\tSYS_PTRACE                  = 101\n\tSYS_GETUID                  = 102\n\tSYS_SYSLOG                  = 103\n\tSYS_GETGID                  = 104\n\tSYS_SETUID                  = 105\n\tSYS_SETGID                  = 106\n\tSYS_GETEUID                 = 107\n\tSYS_GETEGID                 = 108\n\tSYS_SETPGID                 = 109\n\tSYS_GETPPID                 = 110\n\tSYS_GETPGRP                 = 111\n\tSYS_SETSID                  = 112\n\tSYS_SETREUID                = 113\n\tSYS_SETREGID                = 114\n\tSYS_GETGROUPS               = 115\n\tSYS_SETGROUPS               = 116\n\tSYS_SETRESUID               = 117\n\tSYS_GETRESUID               = 118\n\tSYS_SETRESGID               = 119\n\tSYS_GETRESGID               = 120\n\tSYS_GETPGID                 = 121\n\tSYS_SETFSUID                = 122\n\tSYS_SETFSGID                = 123\n\tSYS_GETSID                  = 124\n\tSYS_CAPGET                  = 125\n\tSYS_CAPSET                  = 126\n\tSYS_RT_SIGPENDING           = 127\n\tSYS_RT_SIGTIMEDWAIT         = 128\n\tSYS_RT_SIGQUEUEINFO         = 129\n\tSYS_RT_SIGSUSPEND           = 130\n\tSYS_SIGALTSTACK             = 131\n\tSYS_UTIME                   = 132\n\tSYS_MKNOD                   = 133\n\tSYS_USELIB                  = 134\n\tSYS_PERSONALITY             = 135\n\tSYS_USTAT                   = 136\n\tSYS_STATFS                  = 137\n\tSYS_FSTATFS                 = 138\n\tSYS_SYSFS                   = 139\n\tSYS_GETPRIORITY             = 140\n\tSYS_SETPRIORITY             = 141\n\tSYS_SCHED_SETPARAM          = 142\n\tSYS_SCHED_GETPARAM          = 143\n\tSYS_SCHED_SETSCHEDULER      = 144\n\tSYS_SCHED_GETSCHEDULER      = 145\n\tSYS_SCHED_GET_PRIORITY_MAX  = 146\n\tSYS_SCHED_GET_PRIORITY_MIN  = 147\n\tSYS_SCHED_RR_GET_INTERVAL   = 148\n\tSYS_MLOCK                   = 149\n\tSYS_MUNLOCK                 = 150\n\tSYS_MLOCKALL                = 151\n\tSYS_MUNLOCKALL              = 152\n\tSYS_VHANGUP                 = 153\n\tSYS_MODIFY_LDT              = 154\n\tSYS_PIVOT_ROOT              = 155\n\tSYS__SYSCTL                 = 156\n\tSYS_PRCTL                   = 157\n\tSYS_ARCH_PRCTL              = 158\n\tSYS_ADJTIMEX                = 159\n\tSYS_SETRLIMIT               = 160\n\tSYS_CHROOT                  = 161\n\tSYS_SYNC                    = 162\n\tSYS_ACCT                    = 163\n\tSYS_SETTIMEOFDAY            = 164\n\tSYS_MOUNT                   = 165\n\tSYS_UMOUNT2                 = 166\n\tSYS_SWAPON                  = 167\n\tSYS_SWAPOFF                 = 168\n\tSYS_REBOOT                  = 169\n\tSYS_SETHOSTNAME             = 170\n\tSYS_SETDOMAINNAME           = 171\n\tSYS_IOPL                    = 172\n\tSYS_IOPERM                  = 173\n\tSYS_CREATE_MODULE           = 174\n\tSYS_INIT_MODULE             = 175\n\tSYS_DELETE_MODULE           = 176\n\tSYS_GET_KERNEL_SYMS         = 177\n\tSYS_QUERY_MODULE            = 178\n\tSYS_QUOTACTL                = 179\n\tSYS_NFSSERVCTL              = 180\n\tSYS_GETPMSG                 = 181\n\tSYS_PUTPMSG                 = 182\n\tSYS_AFS_SYSCALL             = 183\n\tSYS_TUXCALL                 = 184\n\tSYS_SECURITY                = 185\n\tSYS_GETTID                  = 186\n\tSYS_READAHEAD               = 187\n\tSYS_SETXATTR                = 188\n\tSYS_LSETXATTR               = 189\n\tSYS_FSETXATTR               = 190\n\tSYS_GETXATTR                = 191\n\tSYS_LGETXATTR               = 192\n\tSYS_FGETXATTR               = 193\n\tSYS_LISTXATTR               = 194\n\tSYS_LLISTXATTR              = 195\n\tSYS_FLISTXATTR              = 196\n\tSYS_REMOVEXATTR             = 197\n\tSYS_LREMOVEXATTR            = 198\n\tSYS_FREMOVEXATTR            = 199\n\tSYS_TKILL                   = 200\n\tSYS_TIME                    = 201\n\tSYS_FUTEX                   = 202\n\tSYS_SCHED_SETAFFINITY       = 203\n\tSYS_SCHED_GETAFFINITY       = 204\n\tSYS_SET_THREAD_AREA         = 205\n\tSYS_IO_SETUP                = 206\n\tSYS_IO_DESTROY              = 207\n\tSYS_IO_GETEVENTS            = 208\n\tSYS_IO_SUBMIT               = 209\n\tSYS_IO_CANCEL               = 210\n\tSYS_GET_THREAD_AREA         = 211\n\tSYS_LOOKUP_DCOOKIE          = 212\n\tSYS_EPOLL_CREATE            = 213\n\tSYS_EPOLL_CTL_OLD           = 214\n\tSYS_EPOLL_WAIT_OLD          = 215\n\tSYS_REMAP_FILE_PAGES        = 216\n\tSYS_GETDENTS64              = 217\n\tSYS_SET_TID_ADDRESS         = 218\n\tSYS_RESTART_SYSCALL         = 219\n\tSYS_SEMTIMEDOP              = 220\n\tSYS_FADVISE64               = 221\n\tSYS_TIMER_CREATE            = 222\n\tSYS_TIMER_SETTIME           = 223\n\tSYS_TIMER_GETTIME           = 224\n\tSYS_TIMER_GETOVERRUN        = 225\n\tSYS_TIMER_DELETE            = 226\n\tSYS_CLOCK_SETTIME           = 227\n\tSYS_CLOCK_GETTIME           = 228\n\tSYS_CLOCK_GETRES            = 229\n\tSYS_CLOCK_NANOSLEEP         = 230\n\tSYS_EXIT_GROUP              = 231\n\tSYS_EPOLL_WAIT              = 232\n\tSYS_EPOLL_CTL               = 233\n\tSYS_TGKILL                  = 234\n\tSYS_UTIMES                  = 235\n\tSYS_VSERVER                 = 236\n\tSYS_MBIND                   = 237\n\tSYS_SET_MEMPOLICY           = 238\n\tSYS_GET_MEMPOLICY           = 239\n\tSYS_MQ_OPEN                 = 240\n\tSYS_MQ_UNLINK               = 241\n\tSYS_MQ_TIMEDSEND            = 242\n\tSYS_MQ_TIMEDRECEIVE         = 243\n\tSYS_MQ_NOTIFY               = 244\n\tSYS_MQ_GETSETATTR           = 245\n\tSYS_KEXEC_LOAD              = 246\n\tSYS_WAITID                  = 247\n\tSYS_ADD_KEY                 = 248\n\tSYS_REQUEST_KEY             = 249\n\tSYS_KEYCTL                  = 250\n\tSYS_IOPRIO_SET              = 251\n\tSYS_IOPRIO_GET              = 252\n\tSYS_INOTIFY_INIT            = 253\n\tSYS_INOTIFY_ADD_WATCH       = 254\n\tSYS_INOTIFY_RM_WATCH        = 255\n\tSYS_MIGRATE_PAGES           = 256\n\tSYS_OPENAT                  = 257\n\tSYS_MKDIRAT                 = 258\n\tSYS_MKNODAT                 = 259\n\tSYS_FCHOWNAT                = 260\n\tSYS_FUTIMESAT               = 261\n\tSYS_NEWFSTATAT              = 262\n\tSYS_UNLINKAT                = 263\n\tSYS_RENAMEAT                = 264\n\tSYS_LINKAT                  = 265\n\tSYS_SYMLINKAT               = 266\n\tSYS_READLINKAT              = 267\n\tSYS_FCHMODAT                = 268\n\tSYS_FACCESSAT               = 269\n\tSYS_PSELECT6                = 270\n\tSYS_PPOLL                   = 271\n\tSYS_UNSHARE                 = 272\n\tSYS_SET_ROBUST_LIST         = 273\n\tSYS_GET_ROBUST_LIST         = 274\n\tSYS_SPLICE                  = 275\n\tSYS_TEE                     = 276\n\tSYS_SYNC_FILE_RANGE         = 277\n\tSYS_VMSPLICE                = 278\n\tSYS_MOVE_PAGES              = 279\n\tSYS_UTIMENSAT               = 280\n\tSYS_EPOLL_PWAIT             = 281\n\tSYS_SIGNALFD                = 282\n\tSYS_TIMERFD_CREATE          = 283\n\tSYS_EVENTFD                 = 284\n\tSYS_FALLOCATE               = 285\n\tSYS_TIMERFD_SETTIME         = 286\n\tSYS_TIMERFD_GETTIME         = 287\n\tSYS_ACCEPT4                 = 288\n\tSYS_SIGNALFD4               = 289\n\tSYS_EVENTFD2                = 290\n\tSYS_EPOLL_CREATE1           = 291\n\tSYS_DUP3                    = 292\n\tSYS_PIPE2                   = 293\n\tSYS_INOTIFY_INIT1           = 294\n\tSYS_PREADV                  = 295\n\tSYS_PWRITEV                 = 296\n\tSYS_RT_TGSIGQUEUEINFO       = 297\n\tSYS_PERF_EVENT_OPEN         = 298\n\tSYS_RECVMMSG                = 299\n\tSYS_FANOTIFY_INIT           = 300\n\tSYS_FANOTIFY_MARK           = 301\n\tSYS_PRLIMIT64               = 302\n\tSYS_NAME_TO_HANDLE_AT       = 303\n\tSYS_OPEN_BY_HANDLE_AT       = 304\n\tSYS_CLOCK_ADJTIME           = 305\n\tSYS_SYNCFS                  = 306\n\tSYS_SENDMMSG                = 307\n\tSYS_SETNS                   = 308\n\tSYS_GETCPU                  = 309\n\tSYS_PROCESS_VM_READV        = 310\n\tSYS_PROCESS_VM_WRITEV       = 311\n\tSYS_KCMP                    = 312\n\tSYS_FINIT_MODULE            = 313\n\tSYS_SCHED_SETATTR           = 314\n\tSYS_SCHED_GETATTR           = 315\n\tSYS_RENAMEAT2               = 316\n\tSYS_SECCOMP                 = 317\n\tSYS_GETRANDOM               = 318\n\tSYS_MEMFD_CREATE            = 319\n\tSYS_KEXEC_FILE_LOAD         = 320\n\tSYS_BPF                     = 321\n\tSYS_EXECVEAT                = 322\n\tSYS_USERFAULTFD             = 323\n\tSYS_MEMBARRIER              = 324\n\tSYS_MLOCK2                  = 325\n\tSYS_COPY_FILE_RANGE         = 326\n\tSYS_PREADV2                 = 327\n\tSYS_PWRITEV2                = 328\n\tSYS_PKEY_MPROTECT           = 329\n\tSYS_PKEY_ALLOC              = 330\n\tSYS_PKEY_FREE               = 331\n\tSYS_STATX                   = 332\n\tSYS_IO_PGETEVENTS           = 333\n\tSYS_RSEQ                    = 334\n\tSYS_URETPROBE               = 335\n\tSYS_PIDFD_SEND_SIGNAL       = 424\n\tSYS_IO_URING_SETUP          = 425\n\tSYS_IO_URING_ENTER          = 426\n\tSYS_IO_URING_REGISTER       = 427\n\tSYS_OPEN_TREE               = 428\n\tSYS_MOVE_MOUNT              = 429\n\tSYS_FSOPEN                  = 430\n\tSYS_FSCONFIG                = 431\n\tSYS_FSMOUNT                 = 432\n\tSYS_FSPICK                  = 433\n\tSYS_PIDFD_OPEN              = 434\n\tSYS_CLONE3                  = 435\n\tSYS_CLOSE_RANGE             = 436\n\tSYS_OPENAT2                 = 437\n\tSYS_PIDFD_GETFD             = 438\n\tSYS_FACCESSAT2              = 439\n\tSYS_PROCESS_MADVISE         = 440\n\tSYS_EPOLL_PWAIT2            = 441\n\tSYS_MOUNT_SETATTR           = 442\n\tSYS_QUOTACTL_FD             = 443\n\tSYS_LANDLOCK_CREATE_RULESET = 444\n\tSYS_LANDLOCK_ADD_RULE       = 445\n\tSYS_LANDLOCK_RESTRICT_SELF  = 446\n\tSYS_MEMFD_SECRET            = 447\n\tSYS_PROCESS_MRELEASE        = 448\n\tSYS_FUTEX_WAITV             = 449\n\tSYS_SET_MEMPOLICY_HOME_NODE = 450\n\tSYS_CACHESTAT               = 451\n\tSYS_FCHMODAT2               = 452\n\tSYS_MAP_SHADOW_STACK        = 453\n\tSYS_FUTEX_WAKE              = 454\n\tSYS_FUTEX_WAIT              = 455\n\tSYS_FUTEX_REQUEUE           = 456\n\tSYS_STATMOUNT               = 457\n\tSYS_LISTMOUNT               = 458\n\tSYS_LSM_GET_SELF_ATTR       = 459\n\tSYS_LSM_SET_SELF_ATTR       = 460\n\tSYS_LSM_LIST_MODULES        = 461\n\tSYS_MSEAL                   = 462\n\tSYS_SETXATTRAT              = 463\n\tSYS_GETXATTRAT              = 464\n\tSYS_LISTXATTRAT             = 465\n\tSYS_REMOVEXATTRAT           = 466\n\tSYS_OPEN_TREE_ATTR          = 467\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/arm/include /tmp/arm/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm && linux\n\npackage unix\n\nconst (\n\tSYS_SYSCALL_MASK                 = 0\n\tSYS_RESTART_SYSCALL              = 0\n\tSYS_EXIT                         = 1\n\tSYS_FORK                         = 2\n\tSYS_READ                         = 3\n\tSYS_WRITE                        = 4\n\tSYS_OPEN                         = 5\n\tSYS_CLOSE                        = 6\n\tSYS_CREAT                        = 8\n\tSYS_LINK                         = 9\n\tSYS_UNLINK                       = 10\n\tSYS_EXECVE                       = 11\n\tSYS_CHDIR                        = 12\n\tSYS_MKNOD                        = 14\n\tSYS_CHMOD                        = 15\n\tSYS_LCHOWN                       = 16\n\tSYS_LSEEK                        = 19\n\tSYS_GETPID                       = 20\n\tSYS_MOUNT                        = 21\n\tSYS_SETUID                       = 23\n\tSYS_GETUID                       = 24\n\tSYS_PTRACE                       = 26\n\tSYS_PAUSE                        = 29\n\tSYS_ACCESS                       = 33\n\tSYS_NICE                         = 34\n\tSYS_SYNC                         = 36\n\tSYS_KILL                         = 37\n\tSYS_RENAME                       = 38\n\tSYS_MKDIR                        = 39\n\tSYS_RMDIR                        = 40\n\tSYS_DUP                          = 41\n\tSYS_PIPE                         = 42\n\tSYS_TIMES                        = 43\n\tSYS_BRK                          = 45\n\tSYS_SETGID                       = 46\n\tSYS_GETGID                       = 47\n\tSYS_GETEUID                      = 49\n\tSYS_GETEGID                      = 50\n\tSYS_ACCT                         = 51\n\tSYS_UMOUNT2                      = 52\n\tSYS_IOCTL                        = 54\n\tSYS_FCNTL                        = 55\n\tSYS_SETPGID                      = 57\n\tSYS_UMASK                        = 60\n\tSYS_CHROOT                       = 61\n\tSYS_USTAT                        = 62\n\tSYS_DUP2                         = 63\n\tSYS_GETPPID                      = 64\n\tSYS_GETPGRP                      = 65\n\tSYS_SETSID                       = 66\n\tSYS_SIGACTION                    = 67\n\tSYS_SETREUID                     = 70\n\tSYS_SETREGID                     = 71\n\tSYS_SIGSUSPEND                   = 72\n\tSYS_SIGPENDING                   = 73\n\tSYS_SETHOSTNAME                  = 74\n\tSYS_SETRLIMIT                    = 75\n\tSYS_GETRUSAGE                    = 77\n\tSYS_GETTIMEOFDAY                 = 78\n\tSYS_SETTIMEOFDAY                 = 79\n\tSYS_GETGROUPS                    = 80\n\tSYS_SETGROUPS                    = 81\n\tSYS_SYMLINK                      = 83\n\tSYS_READLINK                     = 85\n\tSYS_USELIB                       = 86\n\tSYS_SWAPON                       = 87\n\tSYS_REBOOT                       = 88\n\tSYS_MUNMAP                       = 91\n\tSYS_TRUNCATE                     = 92\n\tSYS_FTRUNCATE                    = 93\n\tSYS_FCHMOD                       = 94\n\tSYS_FCHOWN                       = 95\n\tSYS_GETPRIORITY                  = 96\n\tSYS_SETPRIORITY                  = 97\n\tSYS_STATFS                       = 99\n\tSYS_FSTATFS                      = 100\n\tSYS_SYSLOG                       = 103\n\tSYS_SETITIMER                    = 104\n\tSYS_GETITIMER                    = 105\n\tSYS_STAT                         = 106\n\tSYS_LSTAT                        = 107\n\tSYS_FSTAT                        = 108\n\tSYS_VHANGUP                      = 111\n\tSYS_WAIT4                        = 114\n\tSYS_SWAPOFF                      = 115\n\tSYS_SYSINFO                      = 116\n\tSYS_FSYNC                        = 118\n\tSYS_SIGRETURN                    = 119\n\tSYS_CLONE                        = 120\n\tSYS_SETDOMAINNAME                = 121\n\tSYS_UNAME                        = 122\n\tSYS_ADJTIMEX                     = 124\n\tSYS_MPROTECT                     = 125\n\tSYS_SIGPROCMASK                  = 126\n\tSYS_INIT_MODULE                  = 128\n\tSYS_DELETE_MODULE                = 129\n\tSYS_QUOTACTL                     = 131\n\tSYS_GETPGID                      = 132\n\tSYS_FCHDIR                       = 133\n\tSYS_BDFLUSH                      = 134\n\tSYS_SYSFS                        = 135\n\tSYS_PERSONALITY                  = 136\n\tSYS_SETFSUID                     = 138\n\tSYS_SETFSGID                     = 139\n\tSYS__LLSEEK                      = 140\n\tSYS_GETDENTS                     = 141\n\tSYS__NEWSELECT                   = 142\n\tSYS_FLOCK                        = 143\n\tSYS_MSYNC                        = 144\n\tSYS_READV                        = 145\n\tSYS_WRITEV                       = 146\n\tSYS_GETSID                       = 147\n\tSYS_FDATASYNC                    = 148\n\tSYS__SYSCTL                      = 149\n\tSYS_MLOCK                        = 150\n\tSYS_MUNLOCK                      = 151\n\tSYS_MLOCKALL                     = 152\n\tSYS_MUNLOCKALL                   = 153\n\tSYS_SCHED_SETPARAM               = 154\n\tSYS_SCHED_GETPARAM               = 155\n\tSYS_SCHED_SETSCHEDULER           = 156\n\tSYS_SCHED_GETSCHEDULER           = 157\n\tSYS_SCHED_YIELD                  = 158\n\tSYS_SCHED_GET_PRIORITY_MAX       = 159\n\tSYS_SCHED_GET_PRIORITY_MIN       = 160\n\tSYS_SCHED_RR_GET_INTERVAL        = 161\n\tSYS_NANOSLEEP                    = 162\n\tSYS_MREMAP                       = 163\n\tSYS_SETRESUID                    = 164\n\tSYS_GETRESUID                    = 165\n\tSYS_POLL                         = 168\n\tSYS_NFSSERVCTL                   = 169\n\tSYS_SETRESGID                    = 170\n\tSYS_GETRESGID                    = 171\n\tSYS_PRCTL                        = 172\n\tSYS_RT_SIGRETURN                 = 173\n\tSYS_RT_SIGACTION                 = 174\n\tSYS_RT_SIGPROCMASK               = 175\n\tSYS_RT_SIGPENDING                = 176\n\tSYS_RT_SIGTIMEDWAIT              = 177\n\tSYS_RT_SIGQUEUEINFO              = 178\n\tSYS_RT_SIGSUSPEND                = 179\n\tSYS_PREAD64                      = 180\n\tSYS_PWRITE64                     = 181\n\tSYS_CHOWN                        = 182\n\tSYS_GETCWD                       = 183\n\tSYS_CAPGET                       = 184\n\tSYS_CAPSET                       = 185\n\tSYS_SIGALTSTACK                  = 186\n\tSYS_SENDFILE                     = 187\n\tSYS_VFORK                        = 190\n\tSYS_UGETRLIMIT                   = 191\n\tSYS_MMAP2                        = 192\n\tSYS_TRUNCATE64                   = 193\n\tSYS_FTRUNCATE64                  = 194\n\tSYS_STAT64                       = 195\n\tSYS_LSTAT64                      = 196\n\tSYS_FSTAT64                      = 197\n\tSYS_LCHOWN32                     = 198\n\tSYS_GETUID32                     = 199\n\tSYS_GETGID32                     = 200\n\tSYS_GETEUID32                    = 201\n\tSYS_GETEGID32                    = 202\n\tSYS_SETREUID32                   = 203\n\tSYS_SETREGID32                   = 204\n\tSYS_GETGROUPS32                  = 205\n\tSYS_SETGROUPS32                  = 206\n\tSYS_FCHOWN32                     = 207\n\tSYS_SETRESUID32                  = 208\n\tSYS_GETRESUID32                  = 209\n\tSYS_SETRESGID32                  = 210\n\tSYS_GETRESGID32                  = 211\n\tSYS_CHOWN32                      = 212\n\tSYS_SETUID32                     = 213\n\tSYS_SETGID32                     = 214\n\tSYS_SETFSUID32                   = 215\n\tSYS_SETFSGID32                   = 216\n\tSYS_GETDENTS64                   = 217\n\tSYS_PIVOT_ROOT                   = 218\n\tSYS_MINCORE                      = 219\n\tSYS_MADVISE                      = 220\n\tSYS_FCNTL64                      = 221\n\tSYS_GETTID                       = 224\n\tSYS_READAHEAD                    = 225\n\tSYS_SETXATTR                     = 226\n\tSYS_LSETXATTR                    = 227\n\tSYS_FSETXATTR                    = 228\n\tSYS_GETXATTR                     = 229\n\tSYS_LGETXATTR                    = 230\n\tSYS_FGETXATTR                    = 231\n\tSYS_LISTXATTR                    = 232\n\tSYS_LLISTXATTR                   = 233\n\tSYS_FLISTXATTR                   = 234\n\tSYS_REMOVEXATTR                  = 235\n\tSYS_LREMOVEXATTR                 = 236\n\tSYS_FREMOVEXATTR                 = 237\n\tSYS_TKILL                        = 238\n\tSYS_SENDFILE64                   = 239\n\tSYS_FUTEX                        = 240\n\tSYS_SCHED_SETAFFINITY            = 241\n\tSYS_SCHED_GETAFFINITY            = 242\n\tSYS_IO_SETUP                     = 243\n\tSYS_IO_DESTROY                   = 244\n\tSYS_IO_GETEVENTS                 = 245\n\tSYS_IO_SUBMIT                    = 246\n\tSYS_IO_CANCEL                    = 247\n\tSYS_EXIT_GROUP                   = 248\n\tSYS_LOOKUP_DCOOKIE               = 249\n\tSYS_EPOLL_CREATE                 = 250\n\tSYS_EPOLL_CTL                    = 251\n\tSYS_EPOLL_WAIT                   = 252\n\tSYS_REMAP_FILE_PAGES             = 253\n\tSYS_SET_TID_ADDRESS              = 256\n\tSYS_TIMER_CREATE                 = 257\n\tSYS_TIMER_SETTIME                = 258\n\tSYS_TIMER_GETTIME                = 259\n\tSYS_TIMER_GETOVERRUN             = 260\n\tSYS_TIMER_DELETE                 = 261\n\tSYS_CLOCK_SETTIME                = 262\n\tSYS_CLOCK_GETTIME                = 263\n\tSYS_CLOCK_GETRES                 = 264\n\tSYS_CLOCK_NANOSLEEP              = 265\n\tSYS_STATFS64                     = 266\n\tSYS_FSTATFS64                    = 267\n\tSYS_TGKILL                       = 268\n\tSYS_UTIMES                       = 269\n\tSYS_ARM_FADVISE64_64             = 270\n\tSYS_PCICONFIG_IOBASE             = 271\n\tSYS_PCICONFIG_READ               = 272\n\tSYS_PCICONFIG_WRITE              = 273\n\tSYS_MQ_OPEN                      = 274\n\tSYS_MQ_UNLINK                    = 275\n\tSYS_MQ_TIMEDSEND                 = 276\n\tSYS_MQ_TIMEDRECEIVE              = 277\n\tSYS_MQ_NOTIFY                    = 278\n\tSYS_MQ_GETSETATTR                = 279\n\tSYS_WAITID                       = 280\n\tSYS_SOCKET                       = 281\n\tSYS_BIND                         = 282\n\tSYS_CONNECT                      = 283\n\tSYS_LISTEN                       = 284\n\tSYS_ACCEPT                       = 285\n\tSYS_GETSOCKNAME                  = 286\n\tSYS_GETPEERNAME                  = 287\n\tSYS_SOCKETPAIR                   = 288\n\tSYS_SEND                         = 289\n\tSYS_SENDTO                       = 290\n\tSYS_RECV                         = 291\n\tSYS_RECVFROM                     = 292\n\tSYS_SHUTDOWN                     = 293\n\tSYS_SETSOCKOPT                   = 294\n\tSYS_GETSOCKOPT                   = 295\n\tSYS_SENDMSG                      = 296\n\tSYS_RECVMSG                      = 297\n\tSYS_SEMOP                        = 298\n\tSYS_SEMGET                       = 299\n\tSYS_SEMCTL                       = 300\n\tSYS_MSGSND                       = 301\n\tSYS_MSGRCV                       = 302\n\tSYS_MSGGET                       = 303\n\tSYS_MSGCTL                       = 304\n\tSYS_SHMAT                        = 305\n\tSYS_SHMDT                        = 306\n\tSYS_SHMGET                       = 307\n\tSYS_SHMCTL                       = 308\n\tSYS_ADD_KEY                      = 309\n\tSYS_REQUEST_KEY                  = 310\n\tSYS_KEYCTL                       = 311\n\tSYS_SEMTIMEDOP                   = 312\n\tSYS_VSERVER                      = 313\n\tSYS_IOPRIO_SET                   = 314\n\tSYS_IOPRIO_GET                   = 315\n\tSYS_INOTIFY_INIT                 = 316\n\tSYS_INOTIFY_ADD_WATCH            = 317\n\tSYS_INOTIFY_RM_WATCH             = 318\n\tSYS_MBIND                        = 319\n\tSYS_GET_MEMPOLICY                = 320\n\tSYS_SET_MEMPOLICY                = 321\n\tSYS_OPENAT                       = 322\n\tSYS_MKDIRAT                      = 323\n\tSYS_MKNODAT                      = 324\n\tSYS_FCHOWNAT                     = 325\n\tSYS_FUTIMESAT                    = 326\n\tSYS_FSTATAT64                    = 327\n\tSYS_UNLINKAT                     = 328\n\tSYS_RENAMEAT                     = 329\n\tSYS_LINKAT                       = 330\n\tSYS_SYMLINKAT                    = 331\n\tSYS_READLINKAT                   = 332\n\tSYS_FCHMODAT                     = 333\n\tSYS_FACCESSAT                    = 334\n\tSYS_PSELECT6                     = 335\n\tSYS_PPOLL                        = 336\n\tSYS_UNSHARE                      = 337\n\tSYS_SET_ROBUST_LIST              = 338\n\tSYS_GET_ROBUST_LIST              = 339\n\tSYS_SPLICE                       = 340\n\tSYS_ARM_SYNC_FILE_RANGE          = 341\n\tSYS_TEE                          = 342\n\tSYS_VMSPLICE                     = 343\n\tSYS_MOVE_PAGES                   = 344\n\tSYS_GETCPU                       = 345\n\tSYS_EPOLL_PWAIT                  = 346\n\tSYS_KEXEC_LOAD                   = 347\n\tSYS_UTIMENSAT                    = 348\n\tSYS_SIGNALFD                     = 349\n\tSYS_TIMERFD_CREATE               = 350\n\tSYS_EVENTFD                      = 351\n\tSYS_FALLOCATE                    = 352\n\tSYS_TIMERFD_SETTIME              = 353\n\tSYS_TIMERFD_GETTIME              = 354\n\tSYS_SIGNALFD4                    = 355\n\tSYS_EVENTFD2                     = 356\n\tSYS_EPOLL_CREATE1                = 357\n\tSYS_DUP3                         = 358\n\tSYS_PIPE2                        = 359\n\tSYS_INOTIFY_INIT1                = 360\n\tSYS_PREADV                       = 361\n\tSYS_PWRITEV                      = 362\n\tSYS_RT_TGSIGQUEUEINFO            = 363\n\tSYS_PERF_EVENT_OPEN              = 364\n\tSYS_RECVMMSG                     = 365\n\tSYS_ACCEPT4                      = 366\n\tSYS_FANOTIFY_INIT                = 367\n\tSYS_FANOTIFY_MARK                = 368\n\tSYS_PRLIMIT64                    = 369\n\tSYS_NAME_TO_HANDLE_AT            = 370\n\tSYS_OPEN_BY_HANDLE_AT            = 371\n\tSYS_CLOCK_ADJTIME                = 372\n\tSYS_SYNCFS                       = 373\n\tSYS_SENDMMSG                     = 374\n\tSYS_SETNS                        = 375\n\tSYS_PROCESS_VM_READV             = 376\n\tSYS_PROCESS_VM_WRITEV            = 377\n\tSYS_KCMP                         = 378\n\tSYS_FINIT_MODULE                 = 379\n\tSYS_SCHED_SETATTR                = 380\n\tSYS_SCHED_GETATTR                = 381\n\tSYS_RENAMEAT2                    = 382\n\tSYS_SECCOMP                      = 383\n\tSYS_GETRANDOM                    = 384\n\tSYS_MEMFD_CREATE                 = 385\n\tSYS_BPF                          = 386\n\tSYS_EXECVEAT                     = 387\n\tSYS_USERFAULTFD                  = 388\n\tSYS_MEMBARRIER                   = 389\n\tSYS_MLOCK2                       = 390\n\tSYS_COPY_FILE_RANGE              = 391\n\tSYS_PREADV2                      = 392\n\tSYS_PWRITEV2                     = 393\n\tSYS_PKEY_MPROTECT                = 394\n\tSYS_PKEY_ALLOC                   = 395\n\tSYS_PKEY_FREE                    = 396\n\tSYS_STATX                        = 397\n\tSYS_RSEQ                         = 398\n\tSYS_IO_PGETEVENTS                = 399\n\tSYS_MIGRATE_PAGES                = 400\n\tSYS_KEXEC_FILE_LOAD              = 401\n\tSYS_CLOCK_GETTIME64              = 403\n\tSYS_CLOCK_SETTIME64              = 404\n\tSYS_CLOCK_ADJTIME64              = 405\n\tSYS_CLOCK_GETRES_TIME64          = 406\n\tSYS_CLOCK_NANOSLEEP_TIME64       = 407\n\tSYS_TIMER_GETTIME64              = 408\n\tSYS_TIMER_SETTIME64              = 409\n\tSYS_TIMERFD_GETTIME64            = 410\n\tSYS_TIMERFD_SETTIME64            = 411\n\tSYS_UTIMENSAT_TIME64             = 412\n\tSYS_PSELECT6_TIME64              = 413\n\tSYS_PPOLL_TIME64                 = 414\n\tSYS_IO_PGETEVENTS_TIME64         = 416\n\tSYS_RECVMMSG_TIME64              = 417\n\tSYS_MQ_TIMEDSEND_TIME64          = 418\n\tSYS_MQ_TIMEDRECEIVE_TIME64       = 419\n\tSYS_SEMTIMEDOP_TIME64            = 420\n\tSYS_RT_SIGTIMEDWAIT_TIME64       = 421\n\tSYS_FUTEX_TIME64                 = 422\n\tSYS_SCHED_RR_GET_INTERVAL_TIME64 = 423\n\tSYS_PIDFD_SEND_SIGNAL            = 424\n\tSYS_IO_URING_SETUP               = 425\n\tSYS_IO_URING_ENTER               = 426\n\tSYS_IO_URING_REGISTER            = 427\n\tSYS_OPEN_TREE                    = 428\n\tSYS_MOVE_MOUNT                   = 429\n\tSYS_FSOPEN                       = 430\n\tSYS_FSCONFIG                     = 431\n\tSYS_FSMOUNT                      = 432\n\tSYS_FSPICK                       = 433\n\tSYS_PIDFD_OPEN                   = 434\n\tSYS_CLONE3                       = 435\n\tSYS_CLOSE_RANGE                  = 436\n\tSYS_OPENAT2                      = 437\n\tSYS_PIDFD_GETFD                  = 438\n\tSYS_FACCESSAT2                   = 439\n\tSYS_PROCESS_MADVISE              = 440\n\tSYS_EPOLL_PWAIT2                 = 441\n\tSYS_MOUNT_SETATTR                = 442\n\tSYS_QUOTACTL_FD                  = 443\n\tSYS_LANDLOCK_CREATE_RULESET      = 444\n\tSYS_LANDLOCK_ADD_RULE            = 445\n\tSYS_LANDLOCK_RESTRICT_SELF       = 446\n\tSYS_PROCESS_MRELEASE             = 448\n\tSYS_FUTEX_WAITV                  = 449\n\tSYS_SET_MEMPOLICY_HOME_NODE      = 450\n\tSYS_CACHESTAT                    = 451\n\tSYS_FCHMODAT2                    = 452\n\tSYS_MAP_SHADOW_STACK             = 453\n\tSYS_FUTEX_WAKE                   = 454\n\tSYS_FUTEX_WAIT                   = 455\n\tSYS_FUTEX_REQUEUE                = 456\n\tSYS_STATMOUNT                    = 457\n\tSYS_LISTMOUNT                    = 458\n\tSYS_LSM_GET_SELF_ATTR            = 459\n\tSYS_LSM_SET_SELF_ATTR            = 460\n\tSYS_LSM_LIST_MODULES             = 461\n\tSYS_MSEAL                        = 462\n\tSYS_SETXATTRAT                   = 463\n\tSYS_GETXATTRAT                   = 464\n\tSYS_LISTXATTRAT                  = 465\n\tSYS_REMOVEXATTRAT                = 466\n\tSYS_OPEN_TREE_ATTR               = 467\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/arm64/include -fsigned-char /tmp/arm64/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && linux\n\npackage unix\n\nconst (\n\tSYS_IO_SETUP                = 0\n\tSYS_IO_DESTROY              = 1\n\tSYS_IO_SUBMIT               = 2\n\tSYS_IO_CANCEL               = 3\n\tSYS_IO_GETEVENTS            = 4\n\tSYS_SETXATTR                = 5\n\tSYS_LSETXATTR               = 6\n\tSYS_FSETXATTR               = 7\n\tSYS_GETXATTR                = 8\n\tSYS_LGETXATTR               = 9\n\tSYS_FGETXATTR               = 10\n\tSYS_LISTXATTR               = 11\n\tSYS_LLISTXATTR              = 12\n\tSYS_FLISTXATTR              = 13\n\tSYS_REMOVEXATTR             = 14\n\tSYS_LREMOVEXATTR            = 15\n\tSYS_FREMOVEXATTR            = 16\n\tSYS_GETCWD                  = 17\n\tSYS_LOOKUP_DCOOKIE          = 18\n\tSYS_EVENTFD2                = 19\n\tSYS_EPOLL_CREATE1           = 20\n\tSYS_EPOLL_CTL               = 21\n\tSYS_EPOLL_PWAIT             = 22\n\tSYS_DUP                     = 23\n\tSYS_DUP3                    = 24\n\tSYS_FCNTL                   = 25\n\tSYS_INOTIFY_INIT1           = 26\n\tSYS_INOTIFY_ADD_WATCH       = 27\n\tSYS_INOTIFY_RM_WATCH        = 28\n\tSYS_IOCTL                   = 29\n\tSYS_IOPRIO_SET              = 30\n\tSYS_IOPRIO_GET              = 31\n\tSYS_FLOCK                   = 32\n\tSYS_MKNODAT                 = 33\n\tSYS_MKDIRAT                 = 34\n\tSYS_UNLINKAT                = 35\n\tSYS_SYMLINKAT               = 36\n\tSYS_LINKAT                  = 37\n\tSYS_RENAMEAT                = 38\n\tSYS_UMOUNT2                 = 39\n\tSYS_MOUNT                   = 40\n\tSYS_PIVOT_ROOT              = 41\n\tSYS_NFSSERVCTL              = 42\n\tSYS_STATFS                  = 43\n\tSYS_FSTATFS                 = 44\n\tSYS_TRUNCATE                = 45\n\tSYS_FTRUNCATE               = 46\n\tSYS_FALLOCATE               = 47\n\tSYS_FACCESSAT               = 48\n\tSYS_CHDIR                   = 49\n\tSYS_FCHDIR                  = 50\n\tSYS_CHROOT                  = 51\n\tSYS_FCHMOD                  = 52\n\tSYS_FCHMODAT                = 53\n\tSYS_FCHOWNAT                = 54\n\tSYS_FCHOWN                  = 55\n\tSYS_OPENAT                  = 56\n\tSYS_CLOSE                   = 57\n\tSYS_VHANGUP                 = 58\n\tSYS_PIPE2                   = 59\n\tSYS_QUOTACTL                = 60\n\tSYS_GETDENTS64              = 61\n\tSYS_LSEEK                   = 62\n\tSYS_READ                    = 63\n\tSYS_WRITE                   = 64\n\tSYS_READV                   = 65\n\tSYS_WRITEV                  = 66\n\tSYS_PREAD64                 = 67\n\tSYS_PWRITE64                = 68\n\tSYS_PREADV                  = 69\n\tSYS_PWRITEV                 = 70\n\tSYS_SENDFILE                = 71\n\tSYS_PSELECT6                = 72\n\tSYS_PPOLL                   = 73\n\tSYS_SIGNALFD4               = 74\n\tSYS_VMSPLICE                = 75\n\tSYS_SPLICE                  = 76\n\tSYS_TEE                     = 77\n\tSYS_READLINKAT              = 78\n\tSYS_NEWFSTATAT              = 79\n\tSYS_FSTAT                   = 80\n\tSYS_SYNC                    = 81\n\tSYS_FSYNC                   = 82\n\tSYS_FDATASYNC               = 83\n\tSYS_SYNC_FILE_RANGE         = 84\n\tSYS_TIMERFD_CREATE          = 85\n\tSYS_TIMERFD_SETTIME         = 86\n\tSYS_TIMERFD_GETTIME         = 87\n\tSYS_UTIMENSAT               = 88\n\tSYS_ACCT                    = 89\n\tSYS_CAPGET                  = 90\n\tSYS_CAPSET                  = 91\n\tSYS_PERSONALITY             = 92\n\tSYS_EXIT                    = 93\n\tSYS_EXIT_GROUP              = 94\n\tSYS_WAITID                  = 95\n\tSYS_SET_TID_ADDRESS         = 96\n\tSYS_UNSHARE                 = 97\n\tSYS_FUTEX                   = 98\n\tSYS_SET_ROBUST_LIST         = 99\n\tSYS_GET_ROBUST_LIST         = 100\n\tSYS_NANOSLEEP               = 101\n\tSYS_GETITIMER               = 102\n\tSYS_SETITIMER               = 103\n\tSYS_KEXEC_LOAD              = 104\n\tSYS_INIT_MODULE             = 105\n\tSYS_DELETE_MODULE           = 106\n\tSYS_TIMER_CREATE            = 107\n\tSYS_TIMER_GETTIME           = 108\n\tSYS_TIMER_GETOVERRUN        = 109\n\tSYS_TIMER_SETTIME           = 110\n\tSYS_TIMER_DELETE            = 111\n\tSYS_CLOCK_SETTIME           = 112\n\tSYS_CLOCK_GETTIME           = 113\n\tSYS_CLOCK_GETRES            = 114\n\tSYS_CLOCK_NANOSLEEP         = 115\n\tSYS_SYSLOG                  = 116\n\tSYS_PTRACE                  = 117\n\tSYS_SCHED_SETPARAM          = 118\n\tSYS_SCHED_SETSCHEDULER      = 119\n\tSYS_SCHED_GETSCHEDULER      = 120\n\tSYS_SCHED_GETPARAM          = 121\n\tSYS_SCHED_SETAFFINITY       = 122\n\tSYS_SCHED_GETAFFINITY       = 123\n\tSYS_SCHED_YIELD             = 124\n\tSYS_SCHED_GET_PRIORITY_MAX  = 125\n\tSYS_SCHED_GET_PRIORITY_MIN  = 126\n\tSYS_SCHED_RR_GET_INTERVAL   = 127\n\tSYS_RESTART_SYSCALL         = 128\n\tSYS_KILL                    = 129\n\tSYS_TKILL                   = 130\n\tSYS_TGKILL                  = 131\n\tSYS_SIGALTSTACK             = 132\n\tSYS_RT_SIGSUSPEND           = 133\n\tSYS_RT_SIGACTION            = 134\n\tSYS_RT_SIGPROCMASK          = 135\n\tSYS_RT_SIGPENDING           = 136\n\tSYS_RT_SIGTIMEDWAIT         = 137\n\tSYS_RT_SIGQUEUEINFO         = 138\n\tSYS_RT_SIGRETURN            = 139\n\tSYS_SETPRIORITY             = 140\n\tSYS_GETPRIORITY             = 141\n\tSYS_REBOOT                  = 142\n\tSYS_SETREGID                = 143\n\tSYS_SETGID                  = 144\n\tSYS_SETREUID                = 145\n\tSYS_SETUID                  = 146\n\tSYS_SETRESUID               = 147\n\tSYS_GETRESUID               = 148\n\tSYS_SETRESGID               = 149\n\tSYS_GETRESGID               = 150\n\tSYS_SETFSUID                = 151\n\tSYS_SETFSGID                = 152\n\tSYS_TIMES                   = 153\n\tSYS_SETPGID                 = 154\n\tSYS_GETPGID                 = 155\n\tSYS_GETSID                  = 156\n\tSYS_SETSID                  = 157\n\tSYS_GETGROUPS               = 158\n\tSYS_SETGROUPS               = 159\n\tSYS_UNAME                   = 160\n\tSYS_SETHOSTNAME             = 161\n\tSYS_SETDOMAINNAME           = 162\n\tSYS_GETRLIMIT               = 163\n\tSYS_SETRLIMIT               = 164\n\tSYS_GETRUSAGE               = 165\n\tSYS_UMASK                   = 166\n\tSYS_PRCTL                   = 167\n\tSYS_GETCPU                  = 168\n\tSYS_GETTIMEOFDAY            = 169\n\tSYS_SETTIMEOFDAY            = 170\n\tSYS_ADJTIMEX                = 171\n\tSYS_GETPID                  = 172\n\tSYS_GETPPID                 = 173\n\tSYS_GETUID                  = 174\n\tSYS_GETEUID                 = 175\n\tSYS_GETGID                  = 176\n\tSYS_GETEGID                 = 177\n\tSYS_GETTID                  = 178\n\tSYS_SYSINFO                 = 179\n\tSYS_MQ_OPEN                 = 180\n\tSYS_MQ_UNLINK               = 181\n\tSYS_MQ_TIMEDSEND            = 182\n\tSYS_MQ_TIMEDRECEIVE         = 183\n\tSYS_MQ_NOTIFY               = 184\n\tSYS_MQ_GETSETATTR           = 185\n\tSYS_MSGGET                  = 186\n\tSYS_MSGCTL                  = 187\n\tSYS_MSGRCV                  = 188\n\tSYS_MSGSND                  = 189\n\tSYS_SEMGET                  = 190\n\tSYS_SEMCTL                  = 191\n\tSYS_SEMTIMEDOP              = 192\n\tSYS_SEMOP                   = 193\n\tSYS_SHMGET                  = 194\n\tSYS_SHMCTL                  = 195\n\tSYS_SHMAT                   = 196\n\tSYS_SHMDT                   = 197\n\tSYS_SOCKET                  = 198\n\tSYS_SOCKETPAIR              = 199\n\tSYS_BIND                    = 200\n\tSYS_LISTEN                  = 201\n\tSYS_ACCEPT                  = 202\n\tSYS_CONNECT                 = 203\n\tSYS_GETSOCKNAME             = 204\n\tSYS_GETPEERNAME             = 205\n\tSYS_SENDTO                  = 206\n\tSYS_RECVFROM                = 207\n\tSYS_SETSOCKOPT              = 208\n\tSYS_GETSOCKOPT              = 209\n\tSYS_SHUTDOWN                = 210\n\tSYS_SENDMSG                 = 211\n\tSYS_RECVMSG                 = 212\n\tSYS_READAHEAD               = 213\n\tSYS_BRK                     = 214\n\tSYS_MUNMAP                  = 215\n\tSYS_MREMAP                  = 216\n\tSYS_ADD_KEY                 = 217\n\tSYS_REQUEST_KEY             = 218\n\tSYS_KEYCTL                  = 219\n\tSYS_CLONE                   = 220\n\tSYS_EXECVE                  = 221\n\tSYS_MMAP                    = 222\n\tSYS_FADVISE64               = 223\n\tSYS_SWAPON                  = 224\n\tSYS_SWAPOFF                 = 225\n\tSYS_MPROTECT                = 226\n\tSYS_MSYNC                   = 227\n\tSYS_MLOCK                   = 228\n\tSYS_MUNLOCK                 = 229\n\tSYS_MLOCKALL                = 230\n\tSYS_MUNLOCKALL              = 231\n\tSYS_MINCORE                 = 232\n\tSYS_MADVISE                 = 233\n\tSYS_REMAP_FILE_PAGES        = 234\n\tSYS_MBIND                   = 235\n\tSYS_GET_MEMPOLICY           = 236\n\tSYS_SET_MEMPOLICY           = 237\n\tSYS_MIGRATE_PAGES           = 238\n\tSYS_MOVE_PAGES              = 239\n\tSYS_RT_TGSIGQUEUEINFO       = 240\n\tSYS_PERF_EVENT_OPEN         = 241\n\tSYS_ACCEPT4                 = 242\n\tSYS_RECVMMSG                = 243\n\tSYS_ARCH_SPECIFIC_SYSCALL   = 244\n\tSYS_WAIT4                   = 260\n\tSYS_PRLIMIT64               = 261\n\tSYS_FANOTIFY_INIT           = 262\n\tSYS_FANOTIFY_MARK           = 263\n\tSYS_NAME_TO_HANDLE_AT       = 264\n\tSYS_OPEN_BY_HANDLE_AT       = 265\n\tSYS_CLOCK_ADJTIME           = 266\n\tSYS_SYNCFS                  = 267\n\tSYS_SETNS                   = 268\n\tSYS_SENDMMSG                = 269\n\tSYS_PROCESS_VM_READV        = 270\n\tSYS_PROCESS_VM_WRITEV       = 271\n\tSYS_KCMP                    = 272\n\tSYS_FINIT_MODULE            = 273\n\tSYS_SCHED_SETATTR           = 274\n\tSYS_SCHED_GETATTR           = 275\n\tSYS_RENAMEAT2               = 276\n\tSYS_SECCOMP                 = 277\n\tSYS_GETRANDOM               = 278\n\tSYS_MEMFD_CREATE            = 279\n\tSYS_BPF                     = 280\n\tSYS_EXECVEAT                = 281\n\tSYS_USERFAULTFD             = 282\n\tSYS_MEMBARRIER              = 283\n\tSYS_MLOCK2                  = 284\n\tSYS_COPY_FILE_RANGE         = 285\n\tSYS_PREADV2                 = 286\n\tSYS_PWRITEV2                = 287\n\tSYS_PKEY_MPROTECT           = 288\n\tSYS_PKEY_ALLOC              = 289\n\tSYS_PKEY_FREE               = 290\n\tSYS_STATX                   = 291\n\tSYS_IO_PGETEVENTS           = 292\n\tSYS_RSEQ                    = 293\n\tSYS_KEXEC_FILE_LOAD         = 294\n\tSYS_PIDFD_SEND_SIGNAL       = 424\n\tSYS_IO_URING_SETUP          = 425\n\tSYS_IO_URING_ENTER          = 426\n\tSYS_IO_URING_REGISTER       = 427\n\tSYS_OPEN_TREE               = 428\n\tSYS_MOVE_MOUNT              = 429\n\tSYS_FSOPEN                  = 430\n\tSYS_FSCONFIG                = 431\n\tSYS_FSMOUNT                 = 432\n\tSYS_FSPICK                  = 433\n\tSYS_PIDFD_OPEN              = 434\n\tSYS_CLONE3                  = 435\n\tSYS_CLOSE_RANGE             = 436\n\tSYS_OPENAT2                 = 437\n\tSYS_PIDFD_GETFD             = 438\n\tSYS_FACCESSAT2              = 439\n\tSYS_PROCESS_MADVISE         = 440\n\tSYS_EPOLL_PWAIT2            = 441\n\tSYS_MOUNT_SETATTR           = 442\n\tSYS_QUOTACTL_FD             = 443\n\tSYS_LANDLOCK_CREATE_RULESET = 444\n\tSYS_LANDLOCK_ADD_RULE       = 445\n\tSYS_LANDLOCK_RESTRICT_SELF  = 446\n\tSYS_MEMFD_SECRET            = 447\n\tSYS_PROCESS_MRELEASE        = 448\n\tSYS_FUTEX_WAITV             = 449\n\tSYS_SET_MEMPOLICY_HOME_NODE = 450\n\tSYS_CACHESTAT               = 451\n\tSYS_FCHMODAT2               = 452\n\tSYS_MAP_SHADOW_STACK        = 453\n\tSYS_FUTEX_WAKE              = 454\n\tSYS_FUTEX_WAIT              = 455\n\tSYS_FUTEX_REQUEUE           = 456\n\tSYS_STATMOUNT               = 457\n\tSYS_LISTMOUNT               = 458\n\tSYS_LSM_GET_SELF_ATTR       = 459\n\tSYS_LSM_SET_SELF_ATTR       = 460\n\tSYS_LSM_LIST_MODULES        = 461\n\tSYS_MSEAL                   = 462\n\tSYS_SETXATTRAT              = 463\n\tSYS_GETXATTRAT              = 464\n\tSYS_LISTXATTRAT             = 465\n\tSYS_REMOVEXATTRAT           = 466\n\tSYS_OPEN_TREE_ATTR          = 467\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/loong64/include /tmp/loong64/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build loong64 && linux\n\npackage unix\n\nconst (\n\tSYS_IO_SETUP                = 0\n\tSYS_IO_DESTROY              = 1\n\tSYS_IO_SUBMIT               = 2\n\tSYS_IO_CANCEL               = 3\n\tSYS_IO_GETEVENTS            = 4\n\tSYS_SETXATTR                = 5\n\tSYS_LSETXATTR               = 6\n\tSYS_FSETXATTR               = 7\n\tSYS_GETXATTR                = 8\n\tSYS_LGETXATTR               = 9\n\tSYS_FGETXATTR               = 10\n\tSYS_LISTXATTR               = 11\n\tSYS_LLISTXATTR              = 12\n\tSYS_FLISTXATTR              = 13\n\tSYS_REMOVEXATTR             = 14\n\tSYS_LREMOVEXATTR            = 15\n\tSYS_FREMOVEXATTR            = 16\n\tSYS_GETCWD                  = 17\n\tSYS_LOOKUP_DCOOKIE          = 18\n\tSYS_EVENTFD2                = 19\n\tSYS_EPOLL_CREATE1           = 20\n\tSYS_EPOLL_CTL               = 21\n\tSYS_EPOLL_PWAIT             = 22\n\tSYS_DUP                     = 23\n\tSYS_DUP3                    = 24\n\tSYS_FCNTL                   = 25\n\tSYS_INOTIFY_INIT1           = 26\n\tSYS_INOTIFY_ADD_WATCH       = 27\n\tSYS_INOTIFY_RM_WATCH        = 28\n\tSYS_IOCTL                   = 29\n\tSYS_IOPRIO_SET              = 30\n\tSYS_IOPRIO_GET              = 31\n\tSYS_FLOCK                   = 32\n\tSYS_MKNODAT                 = 33\n\tSYS_MKDIRAT                 = 34\n\tSYS_UNLINKAT                = 35\n\tSYS_SYMLINKAT               = 36\n\tSYS_LINKAT                  = 37\n\tSYS_UMOUNT2                 = 39\n\tSYS_MOUNT                   = 40\n\tSYS_PIVOT_ROOT              = 41\n\tSYS_NFSSERVCTL              = 42\n\tSYS_STATFS                  = 43\n\tSYS_FSTATFS                 = 44\n\tSYS_TRUNCATE                = 45\n\tSYS_FTRUNCATE               = 46\n\tSYS_FALLOCATE               = 47\n\tSYS_FACCESSAT               = 48\n\tSYS_CHDIR                   = 49\n\tSYS_FCHDIR                  = 50\n\tSYS_CHROOT                  = 51\n\tSYS_FCHMOD                  = 52\n\tSYS_FCHMODAT                = 53\n\tSYS_FCHOWNAT                = 54\n\tSYS_FCHOWN                  = 55\n\tSYS_OPENAT                  = 56\n\tSYS_CLOSE                   = 57\n\tSYS_VHANGUP                 = 58\n\tSYS_PIPE2                   = 59\n\tSYS_QUOTACTL                = 60\n\tSYS_GETDENTS64              = 61\n\tSYS_LSEEK                   = 62\n\tSYS_READ                    = 63\n\tSYS_WRITE                   = 64\n\tSYS_READV                   = 65\n\tSYS_WRITEV                  = 66\n\tSYS_PREAD64                 = 67\n\tSYS_PWRITE64                = 68\n\tSYS_PREADV                  = 69\n\tSYS_PWRITEV                 = 70\n\tSYS_SENDFILE                = 71\n\tSYS_PSELECT6                = 72\n\tSYS_PPOLL                   = 73\n\tSYS_SIGNALFD4               = 74\n\tSYS_VMSPLICE                = 75\n\tSYS_SPLICE                  = 76\n\tSYS_TEE                     = 77\n\tSYS_READLINKAT              = 78\n\tSYS_NEWFSTATAT              = 79\n\tSYS_FSTAT                   = 80\n\tSYS_SYNC                    = 81\n\tSYS_FSYNC                   = 82\n\tSYS_FDATASYNC               = 83\n\tSYS_SYNC_FILE_RANGE         = 84\n\tSYS_TIMERFD_CREATE          = 85\n\tSYS_TIMERFD_SETTIME         = 86\n\tSYS_TIMERFD_GETTIME         = 87\n\tSYS_UTIMENSAT               = 88\n\tSYS_ACCT                    = 89\n\tSYS_CAPGET                  = 90\n\tSYS_CAPSET                  = 91\n\tSYS_PERSONALITY             = 92\n\tSYS_EXIT                    = 93\n\tSYS_EXIT_GROUP              = 94\n\tSYS_WAITID                  = 95\n\tSYS_SET_TID_ADDRESS         = 96\n\tSYS_UNSHARE                 = 97\n\tSYS_FUTEX                   = 98\n\tSYS_SET_ROBUST_LIST         = 99\n\tSYS_GET_ROBUST_LIST         = 100\n\tSYS_NANOSLEEP               = 101\n\tSYS_GETITIMER               = 102\n\tSYS_SETITIMER               = 103\n\tSYS_KEXEC_LOAD              = 104\n\tSYS_INIT_MODULE             = 105\n\tSYS_DELETE_MODULE           = 106\n\tSYS_TIMER_CREATE            = 107\n\tSYS_TIMER_GETTIME           = 108\n\tSYS_TIMER_GETOVERRUN        = 109\n\tSYS_TIMER_SETTIME           = 110\n\tSYS_TIMER_DELETE            = 111\n\tSYS_CLOCK_SETTIME           = 112\n\tSYS_CLOCK_GETTIME           = 113\n\tSYS_CLOCK_GETRES            = 114\n\tSYS_CLOCK_NANOSLEEP         = 115\n\tSYS_SYSLOG                  = 116\n\tSYS_PTRACE                  = 117\n\tSYS_SCHED_SETPARAM          = 118\n\tSYS_SCHED_SETSCHEDULER      = 119\n\tSYS_SCHED_GETSCHEDULER      = 120\n\tSYS_SCHED_GETPARAM          = 121\n\tSYS_SCHED_SETAFFINITY       = 122\n\tSYS_SCHED_GETAFFINITY       = 123\n\tSYS_SCHED_YIELD             = 124\n\tSYS_SCHED_GET_PRIORITY_MAX  = 125\n\tSYS_SCHED_GET_PRIORITY_MIN  = 126\n\tSYS_SCHED_RR_GET_INTERVAL   = 127\n\tSYS_RESTART_SYSCALL         = 128\n\tSYS_KILL                    = 129\n\tSYS_TKILL                   = 130\n\tSYS_TGKILL                  = 131\n\tSYS_SIGALTSTACK             = 132\n\tSYS_RT_SIGSUSPEND           = 133\n\tSYS_RT_SIGACTION            = 134\n\tSYS_RT_SIGPROCMASK          = 135\n\tSYS_RT_SIGPENDING           = 136\n\tSYS_RT_SIGTIMEDWAIT         = 137\n\tSYS_RT_SIGQUEUEINFO         = 138\n\tSYS_RT_SIGRETURN            = 139\n\tSYS_SETPRIORITY             = 140\n\tSYS_GETPRIORITY             = 141\n\tSYS_REBOOT                  = 142\n\tSYS_SETREGID                = 143\n\tSYS_SETGID                  = 144\n\tSYS_SETREUID                = 145\n\tSYS_SETUID                  = 146\n\tSYS_SETRESUID               = 147\n\tSYS_GETRESUID               = 148\n\tSYS_SETRESGID               = 149\n\tSYS_GETRESGID               = 150\n\tSYS_SETFSUID                = 151\n\tSYS_SETFSGID                = 152\n\tSYS_TIMES                   = 153\n\tSYS_SETPGID                 = 154\n\tSYS_GETPGID                 = 155\n\tSYS_GETSID                  = 156\n\tSYS_SETSID                  = 157\n\tSYS_GETGROUPS               = 158\n\tSYS_SETGROUPS               = 159\n\tSYS_UNAME                   = 160\n\tSYS_SETHOSTNAME             = 161\n\tSYS_SETDOMAINNAME           = 162\n\tSYS_GETRUSAGE               = 165\n\tSYS_UMASK                   = 166\n\tSYS_PRCTL                   = 167\n\tSYS_GETCPU                  = 168\n\tSYS_GETTIMEOFDAY            = 169\n\tSYS_SETTIMEOFDAY            = 170\n\tSYS_ADJTIMEX                = 171\n\tSYS_GETPID                  = 172\n\tSYS_GETPPID                 = 173\n\tSYS_GETUID                  = 174\n\tSYS_GETEUID                 = 175\n\tSYS_GETGID                  = 176\n\tSYS_GETEGID                 = 177\n\tSYS_GETTID                  = 178\n\tSYS_SYSINFO                 = 179\n\tSYS_MQ_OPEN                 = 180\n\tSYS_MQ_UNLINK               = 181\n\tSYS_MQ_TIMEDSEND            = 182\n\tSYS_MQ_TIMEDRECEIVE         = 183\n\tSYS_MQ_NOTIFY               = 184\n\tSYS_MQ_GETSETATTR           = 185\n\tSYS_MSGGET                  = 186\n\tSYS_MSGCTL                  = 187\n\tSYS_MSGRCV                  = 188\n\tSYS_MSGSND                  = 189\n\tSYS_SEMGET                  = 190\n\tSYS_SEMCTL                  = 191\n\tSYS_SEMTIMEDOP              = 192\n\tSYS_SEMOP                   = 193\n\tSYS_SHMGET                  = 194\n\tSYS_SHMCTL                  = 195\n\tSYS_SHMAT                   = 196\n\tSYS_SHMDT                   = 197\n\tSYS_SOCKET                  = 198\n\tSYS_SOCKETPAIR              = 199\n\tSYS_BIND                    = 200\n\tSYS_LISTEN                  = 201\n\tSYS_ACCEPT                  = 202\n\tSYS_CONNECT                 = 203\n\tSYS_GETSOCKNAME             = 204\n\tSYS_GETPEERNAME             = 205\n\tSYS_SENDTO                  = 206\n\tSYS_RECVFROM                = 207\n\tSYS_SETSOCKOPT              = 208\n\tSYS_GETSOCKOPT              = 209\n\tSYS_SHUTDOWN                = 210\n\tSYS_SENDMSG                 = 211\n\tSYS_RECVMSG                 = 212\n\tSYS_READAHEAD               = 213\n\tSYS_BRK                     = 214\n\tSYS_MUNMAP                  = 215\n\tSYS_MREMAP                  = 216\n\tSYS_ADD_KEY                 = 217\n\tSYS_REQUEST_KEY             = 218\n\tSYS_KEYCTL                  = 219\n\tSYS_CLONE                   = 220\n\tSYS_EXECVE                  = 221\n\tSYS_MMAP                    = 222\n\tSYS_FADVISE64               = 223\n\tSYS_SWAPON                  = 224\n\tSYS_SWAPOFF                 = 225\n\tSYS_MPROTECT                = 226\n\tSYS_MSYNC                   = 227\n\tSYS_MLOCK                   = 228\n\tSYS_MUNLOCK                 = 229\n\tSYS_MLOCKALL                = 230\n\tSYS_MUNLOCKALL              = 231\n\tSYS_MINCORE                 = 232\n\tSYS_MADVISE                 = 233\n\tSYS_REMAP_FILE_PAGES        = 234\n\tSYS_MBIND                   = 235\n\tSYS_GET_MEMPOLICY           = 236\n\tSYS_SET_MEMPOLICY           = 237\n\tSYS_MIGRATE_PAGES           = 238\n\tSYS_MOVE_PAGES              = 239\n\tSYS_RT_TGSIGQUEUEINFO       = 240\n\tSYS_PERF_EVENT_OPEN         = 241\n\tSYS_ACCEPT4                 = 242\n\tSYS_RECVMMSG                = 243\n\tSYS_ARCH_SPECIFIC_SYSCALL   = 244\n\tSYS_WAIT4                   = 260\n\tSYS_PRLIMIT64               = 261\n\tSYS_FANOTIFY_INIT           = 262\n\tSYS_FANOTIFY_MARK           = 263\n\tSYS_NAME_TO_HANDLE_AT       = 264\n\tSYS_OPEN_BY_HANDLE_AT       = 265\n\tSYS_CLOCK_ADJTIME           = 266\n\tSYS_SYNCFS                  = 267\n\tSYS_SETNS                   = 268\n\tSYS_SENDMMSG                = 269\n\tSYS_PROCESS_VM_READV        = 270\n\tSYS_PROCESS_VM_WRITEV       = 271\n\tSYS_KCMP                    = 272\n\tSYS_FINIT_MODULE            = 273\n\tSYS_SCHED_SETATTR           = 274\n\tSYS_SCHED_GETATTR           = 275\n\tSYS_RENAMEAT2               = 276\n\tSYS_SECCOMP                 = 277\n\tSYS_GETRANDOM               = 278\n\tSYS_MEMFD_CREATE            = 279\n\tSYS_BPF                     = 280\n\tSYS_EXECVEAT                = 281\n\tSYS_USERFAULTFD             = 282\n\tSYS_MEMBARRIER              = 283\n\tSYS_MLOCK2                  = 284\n\tSYS_COPY_FILE_RANGE         = 285\n\tSYS_PREADV2                 = 286\n\tSYS_PWRITEV2                = 287\n\tSYS_PKEY_MPROTECT           = 288\n\tSYS_PKEY_ALLOC              = 289\n\tSYS_PKEY_FREE               = 290\n\tSYS_STATX                   = 291\n\tSYS_IO_PGETEVENTS           = 292\n\tSYS_RSEQ                    = 293\n\tSYS_KEXEC_FILE_LOAD         = 294\n\tSYS_PIDFD_SEND_SIGNAL       = 424\n\tSYS_IO_URING_SETUP          = 425\n\tSYS_IO_URING_ENTER          = 426\n\tSYS_IO_URING_REGISTER       = 427\n\tSYS_OPEN_TREE               = 428\n\tSYS_MOVE_MOUNT              = 429\n\tSYS_FSOPEN                  = 430\n\tSYS_FSCONFIG                = 431\n\tSYS_FSMOUNT                 = 432\n\tSYS_FSPICK                  = 433\n\tSYS_PIDFD_OPEN              = 434\n\tSYS_CLONE3                  = 435\n\tSYS_CLOSE_RANGE             = 436\n\tSYS_OPENAT2                 = 437\n\tSYS_PIDFD_GETFD             = 438\n\tSYS_FACCESSAT2              = 439\n\tSYS_PROCESS_MADVISE         = 440\n\tSYS_EPOLL_PWAIT2            = 441\n\tSYS_MOUNT_SETATTR           = 442\n\tSYS_QUOTACTL_FD             = 443\n\tSYS_LANDLOCK_CREATE_RULESET = 444\n\tSYS_LANDLOCK_ADD_RULE       = 445\n\tSYS_LANDLOCK_RESTRICT_SELF  = 446\n\tSYS_PROCESS_MRELEASE        = 448\n\tSYS_FUTEX_WAITV             = 449\n\tSYS_SET_MEMPOLICY_HOME_NODE = 450\n\tSYS_CACHESTAT               = 451\n\tSYS_FCHMODAT2               = 452\n\tSYS_MAP_SHADOW_STACK        = 453\n\tSYS_FUTEX_WAKE              = 454\n\tSYS_FUTEX_WAIT              = 455\n\tSYS_FUTEX_REQUEUE           = 456\n\tSYS_STATMOUNT               = 457\n\tSYS_LISTMOUNT               = 458\n\tSYS_LSM_GET_SELF_ATTR       = 459\n\tSYS_LSM_SET_SELF_ATTR       = 460\n\tSYS_LSM_LIST_MODULES        = 461\n\tSYS_MSEAL                   = 462\n\tSYS_SETXATTRAT              = 463\n\tSYS_GETXATTRAT              = 464\n\tSYS_LISTXATTRAT             = 465\n\tSYS_REMOVEXATTRAT           = 466\n\tSYS_OPEN_TREE_ATTR          = 467\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/mips/include /tmp/mips/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mips && linux\n\npackage unix\n\nconst (\n\tSYS_SYSCALL                      = 4000\n\tSYS_EXIT                         = 4001\n\tSYS_FORK                         = 4002\n\tSYS_READ                         = 4003\n\tSYS_WRITE                        = 4004\n\tSYS_OPEN                         = 4005\n\tSYS_CLOSE                        = 4006\n\tSYS_WAITPID                      = 4007\n\tSYS_CREAT                        = 4008\n\tSYS_LINK                         = 4009\n\tSYS_UNLINK                       = 4010\n\tSYS_EXECVE                       = 4011\n\tSYS_CHDIR                        = 4012\n\tSYS_TIME                         = 4013\n\tSYS_MKNOD                        = 4014\n\tSYS_CHMOD                        = 4015\n\tSYS_LCHOWN                       = 4016\n\tSYS_BREAK                        = 4017\n\tSYS_UNUSED18                     = 4018\n\tSYS_LSEEK                        = 4019\n\tSYS_GETPID                       = 4020\n\tSYS_MOUNT                        = 4021\n\tSYS_UMOUNT                       = 4022\n\tSYS_SETUID                       = 4023\n\tSYS_GETUID                       = 4024\n\tSYS_STIME                        = 4025\n\tSYS_PTRACE                       = 4026\n\tSYS_ALARM                        = 4027\n\tSYS_UNUSED28                     = 4028\n\tSYS_PAUSE                        = 4029\n\tSYS_UTIME                        = 4030\n\tSYS_STTY                         = 4031\n\tSYS_GTTY                         = 4032\n\tSYS_ACCESS                       = 4033\n\tSYS_NICE                         = 4034\n\tSYS_FTIME                        = 4035\n\tSYS_SYNC                         = 4036\n\tSYS_KILL                         = 4037\n\tSYS_RENAME                       = 4038\n\tSYS_MKDIR                        = 4039\n\tSYS_RMDIR                        = 4040\n\tSYS_DUP                          = 4041\n\tSYS_PIPE                         = 4042\n\tSYS_TIMES                        = 4043\n\tSYS_PROF                         = 4044\n\tSYS_BRK                          = 4045\n\tSYS_SETGID                       = 4046\n\tSYS_GETGID                       = 4047\n\tSYS_SIGNAL                       = 4048\n\tSYS_GETEUID                      = 4049\n\tSYS_GETEGID                      = 4050\n\tSYS_ACCT                         = 4051\n\tSYS_UMOUNT2                      = 4052\n\tSYS_LOCK                         = 4053\n\tSYS_IOCTL                        = 4054\n\tSYS_FCNTL                        = 4055\n\tSYS_MPX                          = 4056\n\tSYS_SETPGID                      = 4057\n\tSYS_ULIMIT                       = 4058\n\tSYS_UNUSED59                     = 4059\n\tSYS_UMASK                        = 4060\n\tSYS_CHROOT                       = 4061\n\tSYS_USTAT                        = 4062\n\tSYS_DUP2                         = 4063\n\tSYS_GETPPID                      = 4064\n\tSYS_GETPGRP                      = 4065\n\tSYS_SETSID                       = 4066\n\tSYS_SIGACTION                    = 4067\n\tSYS_SGETMASK                     = 4068\n\tSYS_SSETMASK                     = 4069\n\tSYS_SETREUID                     = 4070\n\tSYS_SETREGID                     = 4071\n\tSYS_SIGSUSPEND                   = 4072\n\tSYS_SIGPENDING                   = 4073\n\tSYS_SETHOSTNAME                  = 4074\n\tSYS_SETRLIMIT                    = 4075\n\tSYS_GETRLIMIT                    = 4076\n\tSYS_GETRUSAGE                    = 4077\n\tSYS_GETTIMEOFDAY                 = 4078\n\tSYS_SETTIMEOFDAY                 = 4079\n\tSYS_GETGROUPS                    = 4080\n\tSYS_SETGROUPS                    = 4081\n\tSYS_RESERVED82                   = 4082\n\tSYS_SYMLINK                      = 4083\n\tSYS_UNUSED84                     = 4084\n\tSYS_READLINK                     = 4085\n\tSYS_USELIB                       = 4086\n\tSYS_SWAPON                       = 4087\n\tSYS_REBOOT                       = 4088\n\tSYS_READDIR                      = 4089\n\tSYS_MMAP                         = 4090\n\tSYS_MUNMAP                       = 4091\n\tSYS_TRUNCATE                     = 4092\n\tSYS_FTRUNCATE                    = 4093\n\tSYS_FCHMOD                       = 4094\n\tSYS_FCHOWN                       = 4095\n\tSYS_GETPRIORITY                  = 4096\n\tSYS_SETPRIORITY                  = 4097\n\tSYS_PROFIL                       = 4098\n\tSYS_STATFS                       = 4099\n\tSYS_FSTATFS                      = 4100\n\tSYS_IOPERM                       = 4101\n\tSYS_SOCKETCALL                   = 4102\n\tSYS_SYSLOG                       = 4103\n\tSYS_SETITIMER                    = 4104\n\tSYS_GETITIMER                    = 4105\n\tSYS_STAT                         = 4106\n\tSYS_LSTAT                        = 4107\n\tSYS_FSTAT                        = 4108\n\tSYS_UNUSED109                    = 4109\n\tSYS_IOPL                         = 4110\n\tSYS_VHANGUP                      = 4111\n\tSYS_IDLE                         = 4112\n\tSYS_VM86                         = 4113\n\tSYS_WAIT4                        = 4114\n\tSYS_SWAPOFF                      = 4115\n\tSYS_SYSINFO                      = 4116\n\tSYS_IPC                          = 4117\n\tSYS_FSYNC                        = 4118\n\tSYS_SIGRETURN                    = 4119\n\tSYS_CLONE                        = 4120\n\tSYS_SETDOMAINNAME                = 4121\n\tSYS_UNAME                        = 4122\n\tSYS_MODIFY_LDT                   = 4123\n\tSYS_ADJTIMEX                     = 4124\n\tSYS_MPROTECT                     = 4125\n\tSYS_SIGPROCMASK                  = 4126\n\tSYS_CREATE_MODULE                = 4127\n\tSYS_INIT_MODULE                  = 4128\n\tSYS_DELETE_MODULE                = 4129\n\tSYS_GET_KERNEL_SYMS              = 4130\n\tSYS_QUOTACTL                     = 4131\n\tSYS_GETPGID                      = 4132\n\tSYS_FCHDIR                       = 4133\n\tSYS_BDFLUSH                      = 4134\n\tSYS_SYSFS                        = 4135\n\tSYS_PERSONALITY                  = 4136\n\tSYS_AFS_SYSCALL                  = 4137\n\tSYS_SETFSUID                     = 4138\n\tSYS_SETFSGID                     = 4139\n\tSYS__LLSEEK                      = 4140\n\tSYS_GETDENTS                     = 4141\n\tSYS__NEWSELECT                   = 4142\n\tSYS_FLOCK                        = 4143\n\tSYS_MSYNC                        = 4144\n\tSYS_READV                        = 4145\n\tSYS_WRITEV                       = 4146\n\tSYS_CACHEFLUSH                   = 4147\n\tSYS_CACHECTL                     = 4148\n\tSYS_SYSMIPS                      = 4149\n\tSYS_UNUSED150                    = 4150\n\tSYS_GETSID                       = 4151\n\tSYS_FDATASYNC                    = 4152\n\tSYS__SYSCTL                      = 4153\n\tSYS_MLOCK                        = 4154\n\tSYS_MUNLOCK                      = 4155\n\tSYS_MLOCKALL                     = 4156\n\tSYS_MUNLOCKALL                   = 4157\n\tSYS_SCHED_SETPARAM               = 4158\n\tSYS_SCHED_GETPARAM               = 4159\n\tSYS_SCHED_SETSCHEDULER           = 4160\n\tSYS_SCHED_GETSCHEDULER           = 4161\n\tSYS_SCHED_YIELD                  = 4162\n\tSYS_SCHED_GET_PRIORITY_MAX       = 4163\n\tSYS_SCHED_GET_PRIORITY_MIN       = 4164\n\tSYS_SCHED_RR_GET_INTERVAL        = 4165\n\tSYS_NANOSLEEP                    = 4166\n\tSYS_MREMAP                       = 4167\n\tSYS_ACCEPT                       = 4168\n\tSYS_BIND                         = 4169\n\tSYS_CONNECT                      = 4170\n\tSYS_GETPEERNAME                  = 4171\n\tSYS_GETSOCKNAME                  = 4172\n\tSYS_GETSOCKOPT                   = 4173\n\tSYS_LISTEN                       = 4174\n\tSYS_RECV                         = 4175\n\tSYS_RECVFROM                     = 4176\n\tSYS_RECVMSG                      = 4177\n\tSYS_SEND                         = 4178\n\tSYS_SENDMSG                      = 4179\n\tSYS_SENDTO                       = 4180\n\tSYS_SETSOCKOPT                   = 4181\n\tSYS_SHUTDOWN                     = 4182\n\tSYS_SOCKET                       = 4183\n\tSYS_SOCKETPAIR                   = 4184\n\tSYS_SETRESUID                    = 4185\n\tSYS_GETRESUID                    = 4186\n\tSYS_QUERY_MODULE                 = 4187\n\tSYS_POLL                         = 4188\n\tSYS_NFSSERVCTL                   = 4189\n\tSYS_SETRESGID                    = 4190\n\tSYS_GETRESGID                    = 4191\n\tSYS_PRCTL                        = 4192\n\tSYS_RT_SIGRETURN                 = 4193\n\tSYS_RT_SIGACTION                 = 4194\n\tSYS_RT_SIGPROCMASK               = 4195\n\tSYS_RT_SIGPENDING                = 4196\n\tSYS_RT_SIGTIMEDWAIT              = 4197\n\tSYS_RT_SIGQUEUEINFO              = 4198\n\tSYS_RT_SIGSUSPEND                = 4199\n\tSYS_PREAD64                      = 4200\n\tSYS_PWRITE64                     = 4201\n\tSYS_CHOWN                        = 4202\n\tSYS_GETCWD                       = 4203\n\tSYS_CAPGET                       = 4204\n\tSYS_CAPSET                       = 4205\n\tSYS_SIGALTSTACK                  = 4206\n\tSYS_SENDFILE                     = 4207\n\tSYS_GETPMSG                      = 4208\n\tSYS_PUTPMSG                      = 4209\n\tSYS_MMAP2                        = 4210\n\tSYS_TRUNCATE64                   = 4211\n\tSYS_FTRUNCATE64                  = 4212\n\tSYS_STAT64                       = 4213\n\tSYS_LSTAT64                      = 4214\n\tSYS_FSTAT64                      = 4215\n\tSYS_PIVOT_ROOT                   = 4216\n\tSYS_MINCORE                      = 4217\n\tSYS_MADVISE                      = 4218\n\tSYS_GETDENTS64                   = 4219\n\tSYS_FCNTL64                      = 4220\n\tSYS_RESERVED221                  = 4221\n\tSYS_GETTID                       = 4222\n\tSYS_READAHEAD                    = 4223\n\tSYS_SETXATTR                     = 4224\n\tSYS_LSETXATTR                    = 4225\n\tSYS_FSETXATTR                    = 4226\n\tSYS_GETXATTR                     = 4227\n\tSYS_LGETXATTR                    = 4228\n\tSYS_FGETXATTR                    = 4229\n\tSYS_LISTXATTR                    = 4230\n\tSYS_LLISTXATTR                   = 4231\n\tSYS_FLISTXATTR                   = 4232\n\tSYS_REMOVEXATTR                  = 4233\n\tSYS_LREMOVEXATTR                 = 4234\n\tSYS_FREMOVEXATTR                 = 4235\n\tSYS_TKILL                        = 4236\n\tSYS_SENDFILE64                   = 4237\n\tSYS_FUTEX                        = 4238\n\tSYS_SCHED_SETAFFINITY            = 4239\n\tSYS_SCHED_GETAFFINITY            = 4240\n\tSYS_IO_SETUP                     = 4241\n\tSYS_IO_DESTROY                   = 4242\n\tSYS_IO_GETEVENTS                 = 4243\n\tSYS_IO_SUBMIT                    = 4244\n\tSYS_IO_CANCEL                    = 4245\n\tSYS_EXIT_GROUP                   = 4246\n\tSYS_LOOKUP_DCOOKIE               = 4247\n\tSYS_EPOLL_CREATE                 = 4248\n\tSYS_EPOLL_CTL                    = 4249\n\tSYS_EPOLL_WAIT                   = 4250\n\tSYS_REMAP_FILE_PAGES             = 4251\n\tSYS_SET_TID_ADDRESS              = 4252\n\tSYS_RESTART_SYSCALL              = 4253\n\tSYS_FADVISE64                    = 4254\n\tSYS_STATFS64                     = 4255\n\tSYS_FSTATFS64                    = 4256\n\tSYS_TIMER_CREATE                 = 4257\n\tSYS_TIMER_SETTIME                = 4258\n\tSYS_TIMER_GETTIME                = 4259\n\tSYS_TIMER_GETOVERRUN             = 4260\n\tSYS_TIMER_DELETE                 = 4261\n\tSYS_CLOCK_SETTIME                = 4262\n\tSYS_CLOCK_GETTIME                = 4263\n\tSYS_CLOCK_GETRES                 = 4264\n\tSYS_CLOCK_NANOSLEEP              = 4265\n\tSYS_TGKILL                       = 4266\n\tSYS_UTIMES                       = 4267\n\tSYS_MBIND                        = 4268\n\tSYS_GET_MEMPOLICY                = 4269\n\tSYS_SET_MEMPOLICY                = 4270\n\tSYS_MQ_OPEN                      = 4271\n\tSYS_MQ_UNLINK                    = 4272\n\tSYS_MQ_TIMEDSEND                 = 4273\n\tSYS_MQ_TIMEDRECEIVE              = 4274\n\tSYS_MQ_NOTIFY                    = 4275\n\tSYS_MQ_GETSETATTR                = 4276\n\tSYS_VSERVER                      = 4277\n\tSYS_WAITID                       = 4278\n\tSYS_ADD_KEY                      = 4280\n\tSYS_REQUEST_KEY                  = 4281\n\tSYS_KEYCTL                       = 4282\n\tSYS_SET_THREAD_AREA              = 4283\n\tSYS_INOTIFY_INIT                 = 4284\n\tSYS_INOTIFY_ADD_WATCH            = 4285\n\tSYS_INOTIFY_RM_WATCH             = 4286\n\tSYS_MIGRATE_PAGES                = 4287\n\tSYS_OPENAT                       = 4288\n\tSYS_MKDIRAT                      = 4289\n\tSYS_MKNODAT                      = 4290\n\tSYS_FCHOWNAT                     = 4291\n\tSYS_FUTIMESAT                    = 4292\n\tSYS_FSTATAT64                    = 4293\n\tSYS_UNLINKAT                     = 4294\n\tSYS_RENAMEAT                     = 4295\n\tSYS_LINKAT                       = 4296\n\tSYS_SYMLINKAT                    = 4297\n\tSYS_READLINKAT                   = 4298\n\tSYS_FCHMODAT                     = 4299\n\tSYS_FACCESSAT                    = 4300\n\tSYS_PSELECT6                     = 4301\n\tSYS_PPOLL                        = 4302\n\tSYS_UNSHARE                      = 4303\n\tSYS_SPLICE                       = 4304\n\tSYS_SYNC_FILE_RANGE              = 4305\n\tSYS_TEE                          = 4306\n\tSYS_VMSPLICE                     = 4307\n\tSYS_MOVE_PAGES                   = 4308\n\tSYS_SET_ROBUST_LIST              = 4309\n\tSYS_GET_ROBUST_LIST              = 4310\n\tSYS_KEXEC_LOAD                   = 4311\n\tSYS_GETCPU                       = 4312\n\tSYS_EPOLL_PWAIT                  = 4313\n\tSYS_IOPRIO_SET                   = 4314\n\tSYS_IOPRIO_GET                   = 4315\n\tSYS_UTIMENSAT                    = 4316\n\tSYS_SIGNALFD                     = 4317\n\tSYS_TIMERFD                      = 4318\n\tSYS_EVENTFD                      = 4319\n\tSYS_FALLOCATE                    = 4320\n\tSYS_TIMERFD_CREATE               = 4321\n\tSYS_TIMERFD_GETTIME              = 4322\n\tSYS_TIMERFD_SETTIME              = 4323\n\tSYS_SIGNALFD4                    = 4324\n\tSYS_EVENTFD2                     = 4325\n\tSYS_EPOLL_CREATE1                = 4326\n\tSYS_DUP3                         = 4327\n\tSYS_PIPE2                        = 4328\n\tSYS_INOTIFY_INIT1                = 4329\n\tSYS_PREADV                       = 4330\n\tSYS_PWRITEV                      = 4331\n\tSYS_RT_TGSIGQUEUEINFO            = 4332\n\tSYS_PERF_EVENT_OPEN              = 4333\n\tSYS_ACCEPT4                      = 4334\n\tSYS_RECVMMSG                     = 4335\n\tSYS_FANOTIFY_INIT                = 4336\n\tSYS_FANOTIFY_MARK                = 4337\n\tSYS_PRLIMIT64                    = 4338\n\tSYS_NAME_TO_HANDLE_AT            = 4339\n\tSYS_OPEN_BY_HANDLE_AT            = 4340\n\tSYS_CLOCK_ADJTIME                = 4341\n\tSYS_SYNCFS                       = 4342\n\tSYS_SENDMMSG                     = 4343\n\tSYS_SETNS                        = 4344\n\tSYS_PROCESS_VM_READV             = 4345\n\tSYS_PROCESS_VM_WRITEV            = 4346\n\tSYS_KCMP                         = 4347\n\tSYS_FINIT_MODULE                 = 4348\n\tSYS_SCHED_SETATTR                = 4349\n\tSYS_SCHED_GETATTR                = 4350\n\tSYS_RENAMEAT2                    = 4351\n\tSYS_SECCOMP                      = 4352\n\tSYS_GETRANDOM                    = 4353\n\tSYS_MEMFD_CREATE                 = 4354\n\tSYS_BPF                          = 4355\n\tSYS_EXECVEAT                     = 4356\n\tSYS_USERFAULTFD                  = 4357\n\tSYS_MEMBARRIER                   = 4358\n\tSYS_MLOCK2                       = 4359\n\tSYS_COPY_FILE_RANGE              = 4360\n\tSYS_PREADV2                      = 4361\n\tSYS_PWRITEV2                     = 4362\n\tSYS_PKEY_MPROTECT                = 4363\n\tSYS_PKEY_ALLOC                   = 4364\n\tSYS_PKEY_FREE                    = 4365\n\tSYS_STATX                        = 4366\n\tSYS_RSEQ                         = 4367\n\tSYS_IO_PGETEVENTS                = 4368\n\tSYS_SEMGET                       = 4393\n\tSYS_SEMCTL                       = 4394\n\tSYS_SHMGET                       = 4395\n\tSYS_SHMCTL                       = 4396\n\tSYS_SHMAT                        = 4397\n\tSYS_SHMDT                        = 4398\n\tSYS_MSGGET                       = 4399\n\tSYS_MSGSND                       = 4400\n\tSYS_MSGRCV                       = 4401\n\tSYS_MSGCTL                       = 4402\n\tSYS_CLOCK_GETTIME64              = 4403\n\tSYS_CLOCK_SETTIME64              = 4404\n\tSYS_CLOCK_ADJTIME64              = 4405\n\tSYS_CLOCK_GETRES_TIME64          = 4406\n\tSYS_CLOCK_NANOSLEEP_TIME64       = 4407\n\tSYS_TIMER_GETTIME64              = 4408\n\tSYS_TIMER_SETTIME64              = 4409\n\tSYS_TIMERFD_GETTIME64            = 4410\n\tSYS_TIMERFD_SETTIME64            = 4411\n\tSYS_UTIMENSAT_TIME64             = 4412\n\tSYS_PSELECT6_TIME64              = 4413\n\tSYS_PPOLL_TIME64                 = 4414\n\tSYS_IO_PGETEVENTS_TIME64         = 4416\n\tSYS_RECVMMSG_TIME64              = 4417\n\tSYS_MQ_TIMEDSEND_TIME64          = 4418\n\tSYS_MQ_TIMEDRECEIVE_TIME64       = 4419\n\tSYS_SEMTIMEDOP_TIME64            = 4420\n\tSYS_RT_SIGTIMEDWAIT_TIME64       = 4421\n\tSYS_FUTEX_TIME64                 = 4422\n\tSYS_SCHED_RR_GET_INTERVAL_TIME64 = 4423\n\tSYS_PIDFD_SEND_SIGNAL            = 4424\n\tSYS_IO_URING_SETUP               = 4425\n\tSYS_IO_URING_ENTER               = 4426\n\tSYS_IO_URING_REGISTER            = 4427\n\tSYS_OPEN_TREE                    = 4428\n\tSYS_MOVE_MOUNT                   = 4429\n\tSYS_FSOPEN                       = 4430\n\tSYS_FSCONFIG                     = 4431\n\tSYS_FSMOUNT                      = 4432\n\tSYS_FSPICK                       = 4433\n\tSYS_PIDFD_OPEN                   = 4434\n\tSYS_CLONE3                       = 4435\n\tSYS_CLOSE_RANGE                  = 4436\n\tSYS_OPENAT2                      = 4437\n\tSYS_PIDFD_GETFD                  = 4438\n\tSYS_FACCESSAT2                   = 4439\n\tSYS_PROCESS_MADVISE              = 4440\n\tSYS_EPOLL_PWAIT2                 = 4441\n\tSYS_MOUNT_SETATTR                = 4442\n\tSYS_QUOTACTL_FD                  = 4443\n\tSYS_LANDLOCK_CREATE_RULESET      = 4444\n\tSYS_LANDLOCK_ADD_RULE            = 4445\n\tSYS_LANDLOCK_RESTRICT_SELF       = 4446\n\tSYS_PROCESS_MRELEASE             = 4448\n\tSYS_FUTEX_WAITV                  = 4449\n\tSYS_SET_MEMPOLICY_HOME_NODE      = 4450\n\tSYS_CACHESTAT                    = 4451\n\tSYS_FCHMODAT2                    = 4452\n\tSYS_MAP_SHADOW_STACK             = 4453\n\tSYS_FUTEX_WAKE                   = 4454\n\tSYS_FUTEX_WAIT                   = 4455\n\tSYS_FUTEX_REQUEUE                = 4456\n\tSYS_STATMOUNT                    = 4457\n\tSYS_LISTMOUNT                    = 4458\n\tSYS_LSM_GET_SELF_ATTR            = 4459\n\tSYS_LSM_SET_SELF_ATTR            = 4460\n\tSYS_LSM_LIST_MODULES             = 4461\n\tSYS_MSEAL                        = 4462\n\tSYS_SETXATTRAT                   = 4463\n\tSYS_GETXATTRAT                   = 4464\n\tSYS_LISTXATTRAT                  = 4465\n\tSYS_REMOVEXATTRAT                = 4466\n\tSYS_OPEN_TREE_ATTR               = 4467\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/mips64/include /tmp/mips64/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mips64 && linux\n\npackage unix\n\nconst (\n\tSYS_READ                    = 5000\n\tSYS_WRITE                   = 5001\n\tSYS_OPEN                    = 5002\n\tSYS_CLOSE                   = 5003\n\tSYS_STAT                    = 5004\n\tSYS_FSTAT                   = 5005\n\tSYS_LSTAT                   = 5006\n\tSYS_POLL                    = 5007\n\tSYS_LSEEK                   = 5008\n\tSYS_MMAP                    = 5009\n\tSYS_MPROTECT                = 5010\n\tSYS_MUNMAP                  = 5011\n\tSYS_BRK                     = 5012\n\tSYS_RT_SIGACTION            = 5013\n\tSYS_RT_SIGPROCMASK          = 5014\n\tSYS_IOCTL                   = 5015\n\tSYS_PREAD64                 = 5016\n\tSYS_PWRITE64                = 5017\n\tSYS_READV                   = 5018\n\tSYS_WRITEV                  = 5019\n\tSYS_ACCESS                  = 5020\n\tSYS_PIPE                    = 5021\n\tSYS__NEWSELECT              = 5022\n\tSYS_SCHED_YIELD             = 5023\n\tSYS_MREMAP                  = 5024\n\tSYS_MSYNC                   = 5025\n\tSYS_MINCORE                 = 5026\n\tSYS_MADVISE                 = 5027\n\tSYS_SHMGET                  = 5028\n\tSYS_SHMAT                   = 5029\n\tSYS_SHMCTL                  = 5030\n\tSYS_DUP                     = 5031\n\tSYS_DUP2                    = 5032\n\tSYS_PAUSE                   = 5033\n\tSYS_NANOSLEEP               = 5034\n\tSYS_GETITIMER               = 5035\n\tSYS_SETITIMER               = 5036\n\tSYS_ALARM                   = 5037\n\tSYS_GETPID                  = 5038\n\tSYS_SENDFILE                = 5039\n\tSYS_SOCKET                  = 5040\n\tSYS_CONNECT                 = 5041\n\tSYS_ACCEPT                  = 5042\n\tSYS_SENDTO                  = 5043\n\tSYS_RECVFROM                = 5044\n\tSYS_SENDMSG                 = 5045\n\tSYS_RECVMSG                 = 5046\n\tSYS_SHUTDOWN                = 5047\n\tSYS_BIND                    = 5048\n\tSYS_LISTEN                  = 5049\n\tSYS_GETSOCKNAME             = 5050\n\tSYS_GETPEERNAME             = 5051\n\tSYS_SOCKETPAIR              = 5052\n\tSYS_SETSOCKOPT              = 5053\n\tSYS_GETSOCKOPT              = 5054\n\tSYS_CLONE                   = 5055\n\tSYS_FORK                    = 5056\n\tSYS_EXECVE                  = 5057\n\tSYS_EXIT                    = 5058\n\tSYS_WAIT4                   = 5059\n\tSYS_KILL                    = 5060\n\tSYS_UNAME                   = 5061\n\tSYS_SEMGET                  = 5062\n\tSYS_SEMOP                   = 5063\n\tSYS_SEMCTL                  = 5064\n\tSYS_SHMDT                   = 5065\n\tSYS_MSGGET                  = 5066\n\tSYS_MSGSND                  = 5067\n\tSYS_MSGRCV                  = 5068\n\tSYS_MSGCTL                  = 5069\n\tSYS_FCNTL                   = 5070\n\tSYS_FLOCK                   = 5071\n\tSYS_FSYNC                   = 5072\n\tSYS_FDATASYNC               = 5073\n\tSYS_TRUNCATE                = 5074\n\tSYS_FTRUNCATE               = 5075\n\tSYS_GETDENTS                = 5076\n\tSYS_GETCWD                  = 5077\n\tSYS_CHDIR                   = 5078\n\tSYS_FCHDIR                  = 5079\n\tSYS_RENAME                  = 5080\n\tSYS_MKDIR                   = 5081\n\tSYS_RMDIR                   = 5082\n\tSYS_CREAT                   = 5083\n\tSYS_LINK                    = 5084\n\tSYS_UNLINK                  = 5085\n\tSYS_SYMLINK                 = 5086\n\tSYS_READLINK                = 5087\n\tSYS_CHMOD                   = 5088\n\tSYS_FCHMOD                  = 5089\n\tSYS_CHOWN                   = 5090\n\tSYS_FCHOWN                  = 5091\n\tSYS_LCHOWN                  = 5092\n\tSYS_UMASK                   = 5093\n\tSYS_GETTIMEOFDAY            = 5094\n\tSYS_GETRLIMIT               = 5095\n\tSYS_GETRUSAGE               = 5096\n\tSYS_SYSINFO                 = 5097\n\tSYS_TIMES                   = 5098\n\tSYS_PTRACE                  = 5099\n\tSYS_GETUID                  = 5100\n\tSYS_SYSLOG                  = 5101\n\tSYS_GETGID                  = 5102\n\tSYS_SETUID                  = 5103\n\tSYS_SETGID                  = 5104\n\tSYS_GETEUID                 = 5105\n\tSYS_GETEGID                 = 5106\n\tSYS_SETPGID                 = 5107\n\tSYS_GETPPID                 = 5108\n\tSYS_GETPGRP                 = 5109\n\tSYS_SETSID                  = 5110\n\tSYS_SETREUID                = 5111\n\tSYS_SETREGID                = 5112\n\tSYS_GETGROUPS               = 5113\n\tSYS_SETGROUPS               = 5114\n\tSYS_SETRESUID               = 5115\n\tSYS_GETRESUID               = 5116\n\tSYS_SETRESGID               = 5117\n\tSYS_GETRESGID               = 5118\n\tSYS_GETPGID                 = 5119\n\tSYS_SETFSUID                = 5120\n\tSYS_SETFSGID                = 5121\n\tSYS_GETSID                  = 5122\n\tSYS_CAPGET                  = 5123\n\tSYS_CAPSET                  = 5124\n\tSYS_RT_SIGPENDING           = 5125\n\tSYS_RT_SIGTIMEDWAIT         = 5126\n\tSYS_RT_SIGQUEUEINFO         = 5127\n\tSYS_RT_SIGSUSPEND           = 5128\n\tSYS_SIGALTSTACK             = 5129\n\tSYS_UTIME                   = 5130\n\tSYS_MKNOD                   = 5131\n\tSYS_PERSONALITY             = 5132\n\tSYS_USTAT                   = 5133\n\tSYS_STATFS                  = 5134\n\tSYS_FSTATFS                 = 5135\n\tSYS_SYSFS                   = 5136\n\tSYS_GETPRIORITY             = 5137\n\tSYS_SETPRIORITY             = 5138\n\tSYS_SCHED_SETPARAM          = 5139\n\tSYS_SCHED_GETPARAM          = 5140\n\tSYS_SCHED_SETSCHEDULER      = 5141\n\tSYS_SCHED_GETSCHEDULER      = 5142\n\tSYS_SCHED_GET_PRIORITY_MAX  = 5143\n\tSYS_SCHED_GET_PRIORITY_MIN  = 5144\n\tSYS_SCHED_RR_GET_INTERVAL   = 5145\n\tSYS_MLOCK                   = 5146\n\tSYS_MUNLOCK                 = 5147\n\tSYS_MLOCKALL                = 5148\n\tSYS_MUNLOCKALL              = 5149\n\tSYS_VHANGUP                 = 5150\n\tSYS_PIVOT_ROOT              = 5151\n\tSYS__SYSCTL                 = 5152\n\tSYS_PRCTL                   = 5153\n\tSYS_ADJTIMEX                = 5154\n\tSYS_SETRLIMIT               = 5155\n\tSYS_CHROOT                  = 5156\n\tSYS_SYNC                    = 5157\n\tSYS_ACCT                    = 5158\n\tSYS_SETTIMEOFDAY            = 5159\n\tSYS_MOUNT                   = 5160\n\tSYS_UMOUNT2                 = 5161\n\tSYS_SWAPON                  = 5162\n\tSYS_SWAPOFF                 = 5163\n\tSYS_REBOOT                  = 5164\n\tSYS_SETHOSTNAME             = 5165\n\tSYS_SETDOMAINNAME           = 5166\n\tSYS_CREATE_MODULE           = 5167\n\tSYS_INIT_MODULE             = 5168\n\tSYS_DELETE_MODULE           = 5169\n\tSYS_GET_KERNEL_SYMS         = 5170\n\tSYS_QUERY_MODULE            = 5171\n\tSYS_QUOTACTL                = 5172\n\tSYS_NFSSERVCTL              = 5173\n\tSYS_GETPMSG                 = 5174\n\tSYS_PUTPMSG                 = 5175\n\tSYS_AFS_SYSCALL             = 5176\n\tSYS_RESERVED177             = 5177\n\tSYS_GETTID                  = 5178\n\tSYS_READAHEAD               = 5179\n\tSYS_SETXATTR                = 5180\n\tSYS_LSETXATTR               = 5181\n\tSYS_FSETXATTR               = 5182\n\tSYS_GETXATTR                = 5183\n\tSYS_LGETXATTR               = 5184\n\tSYS_FGETXATTR               = 5185\n\tSYS_LISTXATTR               = 5186\n\tSYS_LLISTXATTR              = 5187\n\tSYS_FLISTXATTR              = 5188\n\tSYS_REMOVEXATTR             = 5189\n\tSYS_LREMOVEXATTR            = 5190\n\tSYS_FREMOVEXATTR            = 5191\n\tSYS_TKILL                   = 5192\n\tSYS_RESERVED193             = 5193\n\tSYS_FUTEX                   = 5194\n\tSYS_SCHED_SETAFFINITY       = 5195\n\tSYS_SCHED_GETAFFINITY       = 5196\n\tSYS_CACHEFLUSH              = 5197\n\tSYS_CACHECTL                = 5198\n\tSYS_SYSMIPS                 = 5199\n\tSYS_IO_SETUP                = 5200\n\tSYS_IO_DESTROY              = 5201\n\tSYS_IO_GETEVENTS            = 5202\n\tSYS_IO_SUBMIT               = 5203\n\tSYS_IO_CANCEL               = 5204\n\tSYS_EXIT_GROUP              = 5205\n\tSYS_LOOKUP_DCOOKIE          = 5206\n\tSYS_EPOLL_CREATE            = 5207\n\tSYS_EPOLL_CTL               = 5208\n\tSYS_EPOLL_WAIT              = 5209\n\tSYS_REMAP_FILE_PAGES        = 5210\n\tSYS_RT_SIGRETURN            = 5211\n\tSYS_SET_TID_ADDRESS         = 5212\n\tSYS_RESTART_SYSCALL         = 5213\n\tSYS_SEMTIMEDOP              = 5214\n\tSYS_FADVISE64               = 5215\n\tSYS_TIMER_CREATE            = 5216\n\tSYS_TIMER_SETTIME           = 5217\n\tSYS_TIMER_GETTIME           = 5218\n\tSYS_TIMER_GETOVERRUN        = 5219\n\tSYS_TIMER_DELETE            = 5220\n\tSYS_CLOCK_SETTIME           = 5221\n\tSYS_CLOCK_GETTIME           = 5222\n\tSYS_CLOCK_GETRES            = 5223\n\tSYS_CLOCK_NANOSLEEP         = 5224\n\tSYS_TGKILL                  = 5225\n\tSYS_UTIMES                  = 5226\n\tSYS_MBIND                   = 5227\n\tSYS_GET_MEMPOLICY           = 5228\n\tSYS_SET_MEMPOLICY           = 5229\n\tSYS_MQ_OPEN                 = 5230\n\tSYS_MQ_UNLINK               = 5231\n\tSYS_MQ_TIMEDSEND            = 5232\n\tSYS_MQ_TIMEDRECEIVE         = 5233\n\tSYS_MQ_NOTIFY               = 5234\n\tSYS_MQ_GETSETATTR           = 5235\n\tSYS_VSERVER                 = 5236\n\tSYS_WAITID                  = 5237\n\tSYS_ADD_KEY                 = 5239\n\tSYS_REQUEST_KEY             = 5240\n\tSYS_KEYCTL                  = 5241\n\tSYS_SET_THREAD_AREA         = 5242\n\tSYS_INOTIFY_INIT            = 5243\n\tSYS_INOTIFY_ADD_WATCH       = 5244\n\tSYS_INOTIFY_RM_WATCH        = 5245\n\tSYS_MIGRATE_PAGES           = 5246\n\tSYS_OPENAT                  = 5247\n\tSYS_MKDIRAT                 = 5248\n\tSYS_MKNODAT                 = 5249\n\tSYS_FCHOWNAT                = 5250\n\tSYS_FUTIMESAT               = 5251\n\tSYS_NEWFSTATAT              = 5252\n\tSYS_UNLINKAT                = 5253\n\tSYS_RENAMEAT                = 5254\n\tSYS_LINKAT                  = 5255\n\tSYS_SYMLINKAT               = 5256\n\tSYS_READLINKAT              = 5257\n\tSYS_FCHMODAT                = 5258\n\tSYS_FACCESSAT               = 5259\n\tSYS_PSELECT6                = 5260\n\tSYS_PPOLL                   = 5261\n\tSYS_UNSHARE                 = 5262\n\tSYS_SPLICE                  = 5263\n\tSYS_SYNC_FILE_RANGE         = 5264\n\tSYS_TEE                     = 5265\n\tSYS_VMSPLICE                = 5266\n\tSYS_MOVE_PAGES              = 5267\n\tSYS_SET_ROBUST_LIST         = 5268\n\tSYS_GET_ROBUST_LIST         = 5269\n\tSYS_KEXEC_LOAD              = 5270\n\tSYS_GETCPU                  = 5271\n\tSYS_EPOLL_PWAIT             = 5272\n\tSYS_IOPRIO_SET              = 5273\n\tSYS_IOPRIO_GET              = 5274\n\tSYS_UTIMENSAT               = 5275\n\tSYS_SIGNALFD                = 5276\n\tSYS_TIMERFD                 = 5277\n\tSYS_EVENTFD                 = 5278\n\tSYS_FALLOCATE               = 5279\n\tSYS_TIMERFD_CREATE          = 5280\n\tSYS_TIMERFD_GETTIME         = 5281\n\tSYS_TIMERFD_SETTIME         = 5282\n\tSYS_SIGNALFD4               = 5283\n\tSYS_EVENTFD2                = 5284\n\tSYS_EPOLL_CREATE1           = 5285\n\tSYS_DUP3                    = 5286\n\tSYS_PIPE2                   = 5287\n\tSYS_INOTIFY_INIT1           = 5288\n\tSYS_PREADV                  = 5289\n\tSYS_PWRITEV                 = 5290\n\tSYS_RT_TGSIGQUEUEINFO       = 5291\n\tSYS_PERF_EVENT_OPEN         = 5292\n\tSYS_ACCEPT4                 = 5293\n\tSYS_RECVMMSG                = 5294\n\tSYS_FANOTIFY_INIT           = 5295\n\tSYS_FANOTIFY_MARK           = 5296\n\tSYS_PRLIMIT64               = 5297\n\tSYS_NAME_TO_HANDLE_AT       = 5298\n\tSYS_OPEN_BY_HANDLE_AT       = 5299\n\tSYS_CLOCK_ADJTIME           = 5300\n\tSYS_SYNCFS                  = 5301\n\tSYS_SENDMMSG                = 5302\n\tSYS_SETNS                   = 5303\n\tSYS_PROCESS_VM_READV        = 5304\n\tSYS_PROCESS_VM_WRITEV       = 5305\n\tSYS_KCMP                    = 5306\n\tSYS_FINIT_MODULE            = 5307\n\tSYS_GETDENTS64              = 5308\n\tSYS_SCHED_SETATTR           = 5309\n\tSYS_SCHED_GETATTR           = 5310\n\tSYS_RENAMEAT2               = 5311\n\tSYS_SECCOMP                 = 5312\n\tSYS_GETRANDOM               = 5313\n\tSYS_MEMFD_CREATE            = 5314\n\tSYS_BPF                     = 5315\n\tSYS_EXECVEAT                = 5316\n\tSYS_USERFAULTFD             = 5317\n\tSYS_MEMBARRIER              = 5318\n\tSYS_MLOCK2                  = 5319\n\tSYS_COPY_FILE_RANGE         = 5320\n\tSYS_PREADV2                 = 5321\n\tSYS_PWRITEV2                = 5322\n\tSYS_PKEY_MPROTECT           = 5323\n\tSYS_PKEY_ALLOC              = 5324\n\tSYS_PKEY_FREE               = 5325\n\tSYS_STATX                   = 5326\n\tSYS_RSEQ                    = 5327\n\tSYS_IO_PGETEVENTS           = 5328\n\tSYS_PIDFD_SEND_SIGNAL       = 5424\n\tSYS_IO_URING_SETUP          = 5425\n\tSYS_IO_URING_ENTER          = 5426\n\tSYS_IO_URING_REGISTER       = 5427\n\tSYS_OPEN_TREE               = 5428\n\tSYS_MOVE_MOUNT              = 5429\n\tSYS_FSOPEN                  = 5430\n\tSYS_FSCONFIG                = 5431\n\tSYS_FSMOUNT                 = 5432\n\tSYS_FSPICK                  = 5433\n\tSYS_PIDFD_OPEN              = 5434\n\tSYS_CLONE3                  = 5435\n\tSYS_CLOSE_RANGE             = 5436\n\tSYS_OPENAT2                 = 5437\n\tSYS_PIDFD_GETFD             = 5438\n\tSYS_FACCESSAT2              = 5439\n\tSYS_PROCESS_MADVISE         = 5440\n\tSYS_EPOLL_PWAIT2            = 5441\n\tSYS_MOUNT_SETATTR           = 5442\n\tSYS_QUOTACTL_FD             = 5443\n\tSYS_LANDLOCK_CREATE_RULESET = 5444\n\tSYS_LANDLOCK_ADD_RULE       = 5445\n\tSYS_LANDLOCK_RESTRICT_SELF  = 5446\n\tSYS_PROCESS_MRELEASE        = 5448\n\tSYS_FUTEX_WAITV             = 5449\n\tSYS_SET_MEMPOLICY_HOME_NODE = 5450\n\tSYS_CACHESTAT               = 5451\n\tSYS_FCHMODAT2               = 5452\n\tSYS_MAP_SHADOW_STACK        = 5453\n\tSYS_FUTEX_WAKE              = 5454\n\tSYS_FUTEX_WAIT              = 5455\n\tSYS_FUTEX_REQUEUE           = 5456\n\tSYS_STATMOUNT               = 5457\n\tSYS_LISTMOUNT               = 5458\n\tSYS_LSM_GET_SELF_ATTR       = 5459\n\tSYS_LSM_SET_SELF_ATTR       = 5460\n\tSYS_LSM_LIST_MODULES        = 5461\n\tSYS_MSEAL                   = 5462\n\tSYS_SETXATTRAT              = 5463\n\tSYS_GETXATTRAT              = 5464\n\tSYS_LISTXATTRAT             = 5465\n\tSYS_REMOVEXATTRAT           = 5466\n\tSYS_OPEN_TREE_ATTR          = 5467\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/mips64le/include /tmp/mips64le/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mips64le && linux\n\npackage unix\n\nconst (\n\tSYS_READ                    = 5000\n\tSYS_WRITE                   = 5001\n\tSYS_OPEN                    = 5002\n\tSYS_CLOSE                   = 5003\n\tSYS_STAT                    = 5004\n\tSYS_FSTAT                   = 5005\n\tSYS_LSTAT                   = 5006\n\tSYS_POLL                    = 5007\n\tSYS_LSEEK                   = 5008\n\tSYS_MMAP                    = 5009\n\tSYS_MPROTECT                = 5010\n\tSYS_MUNMAP                  = 5011\n\tSYS_BRK                     = 5012\n\tSYS_RT_SIGACTION            = 5013\n\tSYS_RT_SIGPROCMASK          = 5014\n\tSYS_IOCTL                   = 5015\n\tSYS_PREAD64                 = 5016\n\tSYS_PWRITE64                = 5017\n\tSYS_READV                   = 5018\n\tSYS_WRITEV                  = 5019\n\tSYS_ACCESS                  = 5020\n\tSYS_PIPE                    = 5021\n\tSYS__NEWSELECT              = 5022\n\tSYS_SCHED_YIELD             = 5023\n\tSYS_MREMAP                  = 5024\n\tSYS_MSYNC                   = 5025\n\tSYS_MINCORE                 = 5026\n\tSYS_MADVISE                 = 5027\n\tSYS_SHMGET                  = 5028\n\tSYS_SHMAT                   = 5029\n\tSYS_SHMCTL                  = 5030\n\tSYS_DUP                     = 5031\n\tSYS_DUP2                    = 5032\n\tSYS_PAUSE                   = 5033\n\tSYS_NANOSLEEP               = 5034\n\tSYS_GETITIMER               = 5035\n\tSYS_SETITIMER               = 5036\n\tSYS_ALARM                   = 5037\n\tSYS_GETPID                  = 5038\n\tSYS_SENDFILE                = 5039\n\tSYS_SOCKET                  = 5040\n\tSYS_CONNECT                 = 5041\n\tSYS_ACCEPT                  = 5042\n\tSYS_SENDTO                  = 5043\n\tSYS_RECVFROM                = 5044\n\tSYS_SENDMSG                 = 5045\n\tSYS_RECVMSG                 = 5046\n\tSYS_SHUTDOWN                = 5047\n\tSYS_BIND                    = 5048\n\tSYS_LISTEN                  = 5049\n\tSYS_GETSOCKNAME             = 5050\n\tSYS_GETPEERNAME             = 5051\n\tSYS_SOCKETPAIR              = 5052\n\tSYS_SETSOCKOPT              = 5053\n\tSYS_GETSOCKOPT              = 5054\n\tSYS_CLONE                   = 5055\n\tSYS_FORK                    = 5056\n\tSYS_EXECVE                  = 5057\n\tSYS_EXIT                    = 5058\n\tSYS_WAIT4                   = 5059\n\tSYS_KILL                    = 5060\n\tSYS_UNAME                   = 5061\n\tSYS_SEMGET                  = 5062\n\tSYS_SEMOP                   = 5063\n\tSYS_SEMCTL                  = 5064\n\tSYS_SHMDT                   = 5065\n\tSYS_MSGGET                  = 5066\n\tSYS_MSGSND                  = 5067\n\tSYS_MSGRCV                  = 5068\n\tSYS_MSGCTL                  = 5069\n\tSYS_FCNTL                   = 5070\n\tSYS_FLOCK                   = 5071\n\tSYS_FSYNC                   = 5072\n\tSYS_FDATASYNC               = 5073\n\tSYS_TRUNCATE                = 5074\n\tSYS_FTRUNCATE               = 5075\n\tSYS_GETDENTS                = 5076\n\tSYS_GETCWD                  = 5077\n\tSYS_CHDIR                   = 5078\n\tSYS_FCHDIR                  = 5079\n\tSYS_RENAME                  = 5080\n\tSYS_MKDIR                   = 5081\n\tSYS_RMDIR                   = 5082\n\tSYS_CREAT                   = 5083\n\tSYS_LINK                    = 5084\n\tSYS_UNLINK                  = 5085\n\tSYS_SYMLINK                 = 5086\n\tSYS_READLINK                = 5087\n\tSYS_CHMOD                   = 5088\n\tSYS_FCHMOD                  = 5089\n\tSYS_CHOWN                   = 5090\n\tSYS_FCHOWN                  = 5091\n\tSYS_LCHOWN                  = 5092\n\tSYS_UMASK                   = 5093\n\tSYS_GETTIMEOFDAY            = 5094\n\tSYS_GETRLIMIT               = 5095\n\tSYS_GETRUSAGE               = 5096\n\tSYS_SYSINFO                 = 5097\n\tSYS_TIMES                   = 5098\n\tSYS_PTRACE                  = 5099\n\tSYS_GETUID                  = 5100\n\tSYS_SYSLOG                  = 5101\n\tSYS_GETGID                  = 5102\n\tSYS_SETUID                  = 5103\n\tSYS_SETGID                  = 5104\n\tSYS_GETEUID                 = 5105\n\tSYS_GETEGID                 = 5106\n\tSYS_SETPGID                 = 5107\n\tSYS_GETPPID                 = 5108\n\tSYS_GETPGRP                 = 5109\n\tSYS_SETSID                  = 5110\n\tSYS_SETREUID                = 5111\n\tSYS_SETREGID                = 5112\n\tSYS_GETGROUPS               = 5113\n\tSYS_SETGROUPS               = 5114\n\tSYS_SETRESUID               = 5115\n\tSYS_GETRESUID               = 5116\n\tSYS_SETRESGID               = 5117\n\tSYS_GETRESGID               = 5118\n\tSYS_GETPGID                 = 5119\n\tSYS_SETFSUID                = 5120\n\tSYS_SETFSGID                = 5121\n\tSYS_GETSID                  = 5122\n\tSYS_CAPGET                  = 5123\n\tSYS_CAPSET                  = 5124\n\tSYS_RT_SIGPENDING           = 5125\n\tSYS_RT_SIGTIMEDWAIT         = 5126\n\tSYS_RT_SIGQUEUEINFO         = 5127\n\tSYS_RT_SIGSUSPEND           = 5128\n\tSYS_SIGALTSTACK             = 5129\n\tSYS_UTIME                   = 5130\n\tSYS_MKNOD                   = 5131\n\tSYS_PERSONALITY             = 5132\n\tSYS_USTAT                   = 5133\n\tSYS_STATFS                  = 5134\n\tSYS_FSTATFS                 = 5135\n\tSYS_SYSFS                   = 5136\n\tSYS_GETPRIORITY             = 5137\n\tSYS_SETPRIORITY             = 5138\n\tSYS_SCHED_SETPARAM          = 5139\n\tSYS_SCHED_GETPARAM          = 5140\n\tSYS_SCHED_SETSCHEDULER      = 5141\n\tSYS_SCHED_GETSCHEDULER      = 5142\n\tSYS_SCHED_GET_PRIORITY_MAX  = 5143\n\tSYS_SCHED_GET_PRIORITY_MIN  = 5144\n\tSYS_SCHED_RR_GET_INTERVAL   = 5145\n\tSYS_MLOCK                   = 5146\n\tSYS_MUNLOCK                 = 5147\n\tSYS_MLOCKALL                = 5148\n\tSYS_MUNLOCKALL              = 5149\n\tSYS_VHANGUP                 = 5150\n\tSYS_PIVOT_ROOT              = 5151\n\tSYS__SYSCTL                 = 5152\n\tSYS_PRCTL                   = 5153\n\tSYS_ADJTIMEX                = 5154\n\tSYS_SETRLIMIT               = 5155\n\tSYS_CHROOT                  = 5156\n\tSYS_SYNC                    = 5157\n\tSYS_ACCT                    = 5158\n\tSYS_SETTIMEOFDAY            = 5159\n\tSYS_MOUNT                   = 5160\n\tSYS_UMOUNT2                 = 5161\n\tSYS_SWAPON                  = 5162\n\tSYS_SWAPOFF                 = 5163\n\tSYS_REBOOT                  = 5164\n\tSYS_SETHOSTNAME             = 5165\n\tSYS_SETDOMAINNAME           = 5166\n\tSYS_CREATE_MODULE           = 5167\n\tSYS_INIT_MODULE             = 5168\n\tSYS_DELETE_MODULE           = 5169\n\tSYS_GET_KERNEL_SYMS         = 5170\n\tSYS_QUERY_MODULE            = 5171\n\tSYS_QUOTACTL                = 5172\n\tSYS_NFSSERVCTL              = 5173\n\tSYS_GETPMSG                 = 5174\n\tSYS_PUTPMSG                 = 5175\n\tSYS_AFS_SYSCALL             = 5176\n\tSYS_RESERVED177             = 5177\n\tSYS_GETTID                  = 5178\n\tSYS_READAHEAD               = 5179\n\tSYS_SETXATTR                = 5180\n\tSYS_LSETXATTR               = 5181\n\tSYS_FSETXATTR               = 5182\n\tSYS_GETXATTR                = 5183\n\tSYS_LGETXATTR               = 5184\n\tSYS_FGETXATTR               = 5185\n\tSYS_LISTXATTR               = 5186\n\tSYS_LLISTXATTR              = 5187\n\tSYS_FLISTXATTR              = 5188\n\tSYS_REMOVEXATTR             = 5189\n\tSYS_LREMOVEXATTR            = 5190\n\tSYS_FREMOVEXATTR            = 5191\n\tSYS_TKILL                   = 5192\n\tSYS_RESERVED193             = 5193\n\tSYS_FUTEX                   = 5194\n\tSYS_SCHED_SETAFFINITY       = 5195\n\tSYS_SCHED_GETAFFINITY       = 5196\n\tSYS_CACHEFLUSH              = 5197\n\tSYS_CACHECTL                = 5198\n\tSYS_SYSMIPS                 = 5199\n\tSYS_IO_SETUP                = 5200\n\tSYS_IO_DESTROY              = 5201\n\tSYS_IO_GETEVENTS            = 5202\n\tSYS_IO_SUBMIT               = 5203\n\tSYS_IO_CANCEL               = 5204\n\tSYS_EXIT_GROUP              = 5205\n\tSYS_LOOKUP_DCOOKIE          = 5206\n\tSYS_EPOLL_CREATE            = 5207\n\tSYS_EPOLL_CTL               = 5208\n\tSYS_EPOLL_WAIT              = 5209\n\tSYS_REMAP_FILE_PAGES        = 5210\n\tSYS_RT_SIGRETURN            = 5211\n\tSYS_SET_TID_ADDRESS         = 5212\n\tSYS_RESTART_SYSCALL         = 5213\n\tSYS_SEMTIMEDOP              = 5214\n\tSYS_FADVISE64               = 5215\n\tSYS_TIMER_CREATE            = 5216\n\tSYS_TIMER_SETTIME           = 5217\n\tSYS_TIMER_GETTIME           = 5218\n\tSYS_TIMER_GETOVERRUN        = 5219\n\tSYS_TIMER_DELETE            = 5220\n\tSYS_CLOCK_SETTIME           = 5221\n\tSYS_CLOCK_GETTIME           = 5222\n\tSYS_CLOCK_GETRES            = 5223\n\tSYS_CLOCK_NANOSLEEP         = 5224\n\tSYS_TGKILL                  = 5225\n\tSYS_UTIMES                  = 5226\n\tSYS_MBIND                   = 5227\n\tSYS_GET_MEMPOLICY           = 5228\n\tSYS_SET_MEMPOLICY           = 5229\n\tSYS_MQ_OPEN                 = 5230\n\tSYS_MQ_UNLINK               = 5231\n\tSYS_MQ_TIMEDSEND            = 5232\n\tSYS_MQ_TIMEDRECEIVE         = 5233\n\tSYS_MQ_NOTIFY               = 5234\n\tSYS_MQ_GETSETATTR           = 5235\n\tSYS_VSERVER                 = 5236\n\tSYS_WAITID                  = 5237\n\tSYS_ADD_KEY                 = 5239\n\tSYS_REQUEST_KEY             = 5240\n\tSYS_KEYCTL                  = 5241\n\tSYS_SET_THREAD_AREA         = 5242\n\tSYS_INOTIFY_INIT            = 5243\n\tSYS_INOTIFY_ADD_WATCH       = 5244\n\tSYS_INOTIFY_RM_WATCH        = 5245\n\tSYS_MIGRATE_PAGES           = 5246\n\tSYS_OPENAT                  = 5247\n\tSYS_MKDIRAT                 = 5248\n\tSYS_MKNODAT                 = 5249\n\tSYS_FCHOWNAT                = 5250\n\tSYS_FUTIMESAT               = 5251\n\tSYS_NEWFSTATAT              = 5252\n\tSYS_UNLINKAT                = 5253\n\tSYS_RENAMEAT                = 5254\n\tSYS_LINKAT                  = 5255\n\tSYS_SYMLINKAT               = 5256\n\tSYS_READLINKAT              = 5257\n\tSYS_FCHMODAT                = 5258\n\tSYS_FACCESSAT               = 5259\n\tSYS_PSELECT6                = 5260\n\tSYS_PPOLL                   = 5261\n\tSYS_UNSHARE                 = 5262\n\tSYS_SPLICE                  = 5263\n\tSYS_SYNC_FILE_RANGE         = 5264\n\tSYS_TEE                     = 5265\n\tSYS_VMSPLICE                = 5266\n\tSYS_MOVE_PAGES              = 5267\n\tSYS_SET_ROBUST_LIST         = 5268\n\tSYS_GET_ROBUST_LIST         = 5269\n\tSYS_KEXEC_LOAD              = 5270\n\tSYS_GETCPU                  = 5271\n\tSYS_EPOLL_PWAIT             = 5272\n\tSYS_IOPRIO_SET              = 5273\n\tSYS_IOPRIO_GET              = 5274\n\tSYS_UTIMENSAT               = 5275\n\tSYS_SIGNALFD                = 5276\n\tSYS_TIMERFD                 = 5277\n\tSYS_EVENTFD                 = 5278\n\tSYS_FALLOCATE               = 5279\n\tSYS_TIMERFD_CREATE          = 5280\n\tSYS_TIMERFD_GETTIME         = 5281\n\tSYS_TIMERFD_SETTIME         = 5282\n\tSYS_SIGNALFD4               = 5283\n\tSYS_EVENTFD2                = 5284\n\tSYS_EPOLL_CREATE1           = 5285\n\tSYS_DUP3                    = 5286\n\tSYS_PIPE2                   = 5287\n\tSYS_INOTIFY_INIT1           = 5288\n\tSYS_PREADV                  = 5289\n\tSYS_PWRITEV                 = 5290\n\tSYS_RT_TGSIGQUEUEINFO       = 5291\n\tSYS_PERF_EVENT_OPEN         = 5292\n\tSYS_ACCEPT4                 = 5293\n\tSYS_RECVMMSG                = 5294\n\tSYS_FANOTIFY_INIT           = 5295\n\tSYS_FANOTIFY_MARK           = 5296\n\tSYS_PRLIMIT64               = 5297\n\tSYS_NAME_TO_HANDLE_AT       = 5298\n\tSYS_OPEN_BY_HANDLE_AT       = 5299\n\tSYS_CLOCK_ADJTIME           = 5300\n\tSYS_SYNCFS                  = 5301\n\tSYS_SENDMMSG                = 5302\n\tSYS_SETNS                   = 5303\n\tSYS_PROCESS_VM_READV        = 5304\n\tSYS_PROCESS_VM_WRITEV       = 5305\n\tSYS_KCMP                    = 5306\n\tSYS_FINIT_MODULE            = 5307\n\tSYS_GETDENTS64              = 5308\n\tSYS_SCHED_SETATTR           = 5309\n\tSYS_SCHED_GETATTR           = 5310\n\tSYS_RENAMEAT2               = 5311\n\tSYS_SECCOMP                 = 5312\n\tSYS_GETRANDOM               = 5313\n\tSYS_MEMFD_CREATE            = 5314\n\tSYS_BPF                     = 5315\n\tSYS_EXECVEAT                = 5316\n\tSYS_USERFAULTFD             = 5317\n\tSYS_MEMBARRIER              = 5318\n\tSYS_MLOCK2                  = 5319\n\tSYS_COPY_FILE_RANGE         = 5320\n\tSYS_PREADV2                 = 5321\n\tSYS_PWRITEV2                = 5322\n\tSYS_PKEY_MPROTECT           = 5323\n\tSYS_PKEY_ALLOC              = 5324\n\tSYS_PKEY_FREE               = 5325\n\tSYS_STATX                   = 5326\n\tSYS_RSEQ                    = 5327\n\tSYS_IO_PGETEVENTS           = 5328\n\tSYS_PIDFD_SEND_SIGNAL       = 5424\n\tSYS_IO_URING_SETUP          = 5425\n\tSYS_IO_URING_ENTER          = 5426\n\tSYS_IO_URING_REGISTER       = 5427\n\tSYS_OPEN_TREE               = 5428\n\tSYS_MOVE_MOUNT              = 5429\n\tSYS_FSOPEN                  = 5430\n\tSYS_FSCONFIG                = 5431\n\tSYS_FSMOUNT                 = 5432\n\tSYS_FSPICK                  = 5433\n\tSYS_PIDFD_OPEN              = 5434\n\tSYS_CLONE3                  = 5435\n\tSYS_CLOSE_RANGE             = 5436\n\tSYS_OPENAT2                 = 5437\n\tSYS_PIDFD_GETFD             = 5438\n\tSYS_FACCESSAT2              = 5439\n\tSYS_PROCESS_MADVISE         = 5440\n\tSYS_EPOLL_PWAIT2            = 5441\n\tSYS_MOUNT_SETATTR           = 5442\n\tSYS_QUOTACTL_FD             = 5443\n\tSYS_LANDLOCK_CREATE_RULESET = 5444\n\tSYS_LANDLOCK_ADD_RULE       = 5445\n\tSYS_LANDLOCK_RESTRICT_SELF  = 5446\n\tSYS_PROCESS_MRELEASE        = 5448\n\tSYS_FUTEX_WAITV             = 5449\n\tSYS_SET_MEMPOLICY_HOME_NODE = 5450\n\tSYS_CACHESTAT               = 5451\n\tSYS_FCHMODAT2               = 5452\n\tSYS_MAP_SHADOW_STACK        = 5453\n\tSYS_FUTEX_WAKE              = 5454\n\tSYS_FUTEX_WAIT              = 5455\n\tSYS_FUTEX_REQUEUE           = 5456\n\tSYS_STATMOUNT               = 5457\n\tSYS_LISTMOUNT               = 5458\n\tSYS_LSM_GET_SELF_ATTR       = 5459\n\tSYS_LSM_SET_SELF_ATTR       = 5460\n\tSYS_LSM_LIST_MODULES        = 5461\n\tSYS_MSEAL                   = 5462\n\tSYS_SETXATTRAT              = 5463\n\tSYS_GETXATTRAT              = 5464\n\tSYS_LISTXATTRAT             = 5465\n\tSYS_REMOVEXATTRAT           = 5466\n\tSYS_OPEN_TREE_ATTR          = 5467\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/mipsle/include /tmp/mipsle/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mipsle && linux\n\npackage unix\n\nconst (\n\tSYS_SYSCALL                      = 4000\n\tSYS_EXIT                         = 4001\n\tSYS_FORK                         = 4002\n\tSYS_READ                         = 4003\n\tSYS_WRITE                        = 4004\n\tSYS_OPEN                         = 4005\n\tSYS_CLOSE                        = 4006\n\tSYS_WAITPID                      = 4007\n\tSYS_CREAT                        = 4008\n\tSYS_LINK                         = 4009\n\tSYS_UNLINK                       = 4010\n\tSYS_EXECVE                       = 4011\n\tSYS_CHDIR                        = 4012\n\tSYS_TIME                         = 4013\n\tSYS_MKNOD                        = 4014\n\tSYS_CHMOD                        = 4015\n\tSYS_LCHOWN                       = 4016\n\tSYS_BREAK                        = 4017\n\tSYS_UNUSED18                     = 4018\n\tSYS_LSEEK                        = 4019\n\tSYS_GETPID                       = 4020\n\tSYS_MOUNT                        = 4021\n\tSYS_UMOUNT                       = 4022\n\tSYS_SETUID                       = 4023\n\tSYS_GETUID                       = 4024\n\tSYS_STIME                        = 4025\n\tSYS_PTRACE                       = 4026\n\tSYS_ALARM                        = 4027\n\tSYS_UNUSED28                     = 4028\n\tSYS_PAUSE                        = 4029\n\tSYS_UTIME                        = 4030\n\tSYS_STTY                         = 4031\n\tSYS_GTTY                         = 4032\n\tSYS_ACCESS                       = 4033\n\tSYS_NICE                         = 4034\n\tSYS_FTIME                        = 4035\n\tSYS_SYNC                         = 4036\n\tSYS_KILL                         = 4037\n\tSYS_RENAME                       = 4038\n\tSYS_MKDIR                        = 4039\n\tSYS_RMDIR                        = 4040\n\tSYS_DUP                          = 4041\n\tSYS_PIPE                         = 4042\n\tSYS_TIMES                        = 4043\n\tSYS_PROF                         = 4044\n\tSYS_BRK                          = 4045\n\tSYS_SETGID                       = 4046\n\tSYS_GETGID                       = 4047\n\tSYS_SIGNAL                       = 4048\n\tSYS_GETEUID                      = 4049\n\tSYS_GETEGID                      = 4050\n\tSYS_ACCT                         = 4051\n\tSYS_UMOUNT2                      = 4052\n\tSYS_LOCK                         = 4053\n\tSYS_IOCTL                        = 4054\n\tSYS_FCNTL                        = 4055\n\tSYS_MPX                          = 4056\n\tSYS_SETPGID                      = 4057\n\tSYS_ULIMIT                       = 4058\n\tSYS_UNUSED59                     = 4059\n\tSYS_UMASK                        = 4060\n\tSYS_CHROOT                       = 4061\n\tSYS_USTAT                        = 4062\n\tSYS_DUP2                         = 4063\n\tSYS_GETPPID                      = 4064\n\tSYS_GETPGRP                      = 4065\n\tSYS_SETSID                       = 4066\n\tSYS_SIGACTION                    = 4067\n\tSYS_SGETMASK                     = 4068\n\tSYS_SSETMASK                     = 4069\n\tSYS_SETREUID                     = 4070\n\tSYS_SETREGID                     = 4071\n\tSYS_SIGSUSPEND                   = 4072\n\tSYS_SIGPENDING                   = 4073\n\tSYS_SETHOSTNAME                  = 4074\n\tSYS_SETRLIMIT                    = 4075\n\tSYS_GETRLIMIT                    = 4076\n\tSYS_GETRUSAGE                    = 4077\n\tSYS_GETTIMEOFDAY                 = 4078\n\tSYS_SETTIMEOFDAY                 = 4079\n\tSYS_GETGROUPS                    = 4080\n\tSYS_SETGROUPS                    = 4081\n\tSYS_RESERVED82                   = 4082\n\tSYS_SYMLINK                      = 4083\n\tSYS_UNUSED84                     = 4084\n\tSYS_READLINK                     = 4085\n\tSYS_USELIB                       = 4086\n\tSYS_SWAPON                       = 4087\n\tSYS_REBOOT                       = 4088\n\tSYS_READDIR                      = 4089\n\tSYS_MMAP                         = 4090\n\tSYS_MUNMAP                       = 4091\n\tSYS_TRUNCATE                     = 4092\n\tSYS_FTRUNCATE                    = 4093\n\tSYS_FCHMOD                       = 4094\n\tSYS_FCHOWN                       = 4095\n\tSYS_GETPRIORITY                  = 4096\n\tSYS_SETPRIORITY                  = 4097\n\tSYS_PROFIL                       = 4098\n\tSYS_STATFS                       = 4099\n\tSYS_FSTATFS                      = 4100\n\tSYS_IOPERM                       = 4101\n\tSYS_SOCKETCALL                   = 4102\n\tSYS_SYSLOG                       = 4103\n\tSYS_SETITIMER                    = 4104\n\tSYS_GETITIMER                    = 4105\n\tSYS_STAT                         = 4106\n\tSYS_LSTAT                        = 4107\n\tSYS_FSTAT                        = 4108\n\tSYS_UNUSED109                    = 4109\n\tSYS_IOPL                         = 4110\n\tSYS_VHANGUP                      = 4111\n\tSYS_IDLE                         = 4112\n\tSYS_VM86                         = 4113\n\tSYS_WAIT4                        = 4114\n\tSYS_SWAPOFF                      = 4115\n\tSYS_SYSINFO                      = 4116\n\tSYS_IPC                          = 4117\n\tSYS_FSYNC                        = 4118\n\tSYS_SIGRETURN                    = 4119\n\tSYS_CLONE                        = 4120\n\tSYS_SETDOMAINNAME                = 4121\n\tSYS_UNAME                        = 4122\n\tSYS_MODIFY_LDT                   = 4123\n\tSYS_ADJTIMEX                     = 4124\n\tSYS_MPROTECT                     = 4125\n\tSYS_SIGPROCMASK                  = 4126\n\tSYS_CREATE_MODULE                = 4127\n\tSYS_INIT_MODULE                  = 4128\n\tSYS_DELETE_MODULE                = 4129\n\tSYS_GET_KERNEL_SYMS              = 4130\n\tSYS_QUOTACTL                     = 4131\n\tSYS_GETPGID                      = 4132\n\tSYS_FCHDIR                       = 4133\n\tSYS_BDFLUSH                      = 4134\n\tSYS_SYSFS                        = 4135\n\tSYS_PERSONALITY                  = 4136\n\tSYS_AFS_SYSCALL                  = 4137\n\tSYS_SETFSUID                     = 4138\n\tSYS_SETFSGID                     = 4139\n\tSYS__LLSEEK                      = 4140\n\tSYS_GETDENTS                     = 4141\n\tSYS__NEWSELECT                   = 4142\n\tSYS_FLOCK                        = 4143\n\tSYS_MSYNC                        = 4144\n\tSYS_READV                        = 4145\n\tSYS_WRITEV                       = 4146\n\tSYS_CACHEFLUSH                   = 4147\n\tSYS_CACHECTL                     = 4148\n\tSYS_SYSMIPS                      = 4149\n\tSYS_UNUSED150                    = 4150\n\tSYS_GETSID                       = 4151\n\tSYS_FDATASYNC                    = 4152\n\tSYS__SYSCTL                      = 4153\n\tSYS_MLOCK                        = 4154\n\tSYS_MUNLOCK                      = 4155\n\tSYS_MLOCKALL                     = 4156\n\tSYS_MUNLOCKALL                   = 4157\n\tSYS_SCHED_SETPARAM               = 4158\n\tSYS_SCHED_GETPARAM               = 4159\n\tSYS_SCHED_SETSCHEDULER           = 4160\n\tSYS_SCHED_GETSCHEDULER           = 4161\n\tSYS_SCHED_YIELD                  = 4162\n\tSYS_SCHED_GET_PRIORITY_MAX       = 4163\n\tSYS_SCHED_GET_PRIORITY_MIN       = 4164\n\tSYS_SCHED_RR_GET_INTERVAL        = 4165\n\tSYS_NANOSLEEP                    = 4166\n\tSYS_MREMAP                       = 4167\n\tSYS_ACCEPT                       = 4168\n\tSYS_BIND                         = 4169\n\tSYS_CONNECT                      = 4170\n\tSYS_GETPEERNAME                  = 4171\n\tSYS_GETSOCKNAME                  = 4172\n\tSYS_GETSOCKOPT                   = 4173\n\tSYS_LISTEN                       = 4174\n\tSYS_RECV                         = 4175\n\tSYS_RECVFROM                     = 4176\n\tSYS_RECVMSG                      = 4177\n\tSYS_SEND                         = 4178\n\tSYS_SENDMSG                      = 4179\n\tSYS_SENDTO                       = 4180\n\tSYS_SETSOCKOPT                   = 4181\n\tSYS_SHUTDOWN                     = 4182\n\tSYS_SOCKET                       = 4183\n\tSYS_SOCKETPAIR                   = 4184\n\tSYS_SETRESUID                    = 4185\n\tSYS_GETRESUID                    = 4186\n\tSYS_QUERY_MODULE                 = 4187\n\tSYS_POLL                         = 4188\n\tSYS_NFSSERVCTL                   = 4189\n\tSYS_SETRESGID                    = 4190\n\tSYS_GETRESGID                    = 4191\n\tSYS_PRCTL                        = 4192\n\tSYS_RT_SIGRETURN                 = 4193\n\tSYS_RT_SIGACTION                 = 4194\n\tSYS_RT_SIGPROCMASK               = 4195\n\tSYS_RT_SIGPENDING                = 4196\n\tSYS_RT_SIGTIMEDWAIT              = 4197\n\tSYS_RT_SIGQUEUEINFO              = 4198\n\tSYS_RT_SIGSUSPEND                = 4199\n\tSYS_PREAD64                      = 4200\n\tSYS_PWRITE64                     = 4201\n\tSYS_CHOWN                        = 4202\n\tSYS_GETCWD                       = 4203\n\tSYS_CAPGET                       = 4204\n\tSYS_CAPSET                       = 4205\n\tSYS_SIGALTSTACK                  = 4206\n\tSYS_SENDFILE                     = 4207\n\tSYS_GETPMSG                      = 4208\n\tSYS_PUTPMSG                      = 4209\n\tSYS_MMAP2                        = 4210\n\tSYS_TRUNCATE64                   = 4211\n\tSYS_FTRUNCATE64                  = 4212\n\tSYS_STAT64                       = 4213\n\tSYS_LSTAT64                      = 4214\n\tSYS_FSTAT64                      = 4215\n\tSYS_PIVOT_ROOT                   = 4216\n\tSYS_MINCORE                      = 4217\n\tSYS_MADVISE                      = 4218\n\tSYS_GETDENTS64                   = 4219\n\tSYS_FCNTL64                      = 4220\n\tSYS_RESERVED221                  = 4221\n\tSYS_GETTID                       = 4222\n\tSYS_READAHEAD                    = 4223\n\tSYS_SETXATTR                     = 4224\n\tSYS_LSETXATTR                    = 4225\n\tSYS_FSETXATTR                    = 4226\n\tSYS_GETXATTR                     = 4227\n\tSYS_LGETXATTR                    = 4228\n\tSYS_FGETXATTR                    = 4229\n\tSYS_LISTXATTR                    = 4230\n\tSYS_LLISTXATTR                   = 4231\n\tSYS_FLISTXATTR                   = 4232\n\tSYS_REMOVEXATTR                  = 4233\n\tSYS_LREMOVEXATTR                 = 4234\n\tSYS_FREMOVEXATTR                 = 4235\n\tSYS_TKILL                        = 4236\n\tSYS_SENDFILE64                   = 4237\n\tSYS_FUTEX                        = 4238\n\tSYS_SCHED_SETAFFINITY            = 4239\n\tSYS_SCHED_GETAFFINITY            = 4240\n\tSYS_IO_SETUP                     = 4241\n\tSYS_IO_DESTROY                   = 4242\n\tSYS_IO_GETEVENTS                 = 4243\n\tSYS_IO_SUBMIT                    = 4244\n\tSYS_IO_CANCEL                    = 4245\n\tSYS_EXIT_GROUP                   = 4246\n\tSYS_LOOKUP_DCOOKIE               = 4247\n\tSYS_EPOLL_CREATE                 = 4248\n\tSYS_EPOLL_CTL                    = 4249\n\tSYS_EPOLL_WAIT                   = 4250\n\tSYS_REMAP_FILE_PAGES             = 4251\n\tSYS_SET_TID_ADDRESS              = 4252\n\tSYS_RESTART_SYSCALL              = 4253\n\tSYS_FADVISE64                    = 4254\n\tSYS_STATFS64                     = 4255\n\tSYS_FSTATFS64                    = 4256\n\tSYS_TIMER_CREATE                 = 4257\n\tSYS_TIMER_SETTIME                = 4258\n\tSYS_TIMER_GETTIME                = 4259\n\tSYS_TIMER_GETOVERRUN             = 4260\n\tSYS_TIMER_DELETE                 = 4261\n\tSYS_CLOCK_SETTIME                = 4262\n\tSYS_CLOCK_GETTIME                = 4263\n\tSYS_CLOCK_GETRES                 = 4264\n\tSYS_CLOCK_NANOSLEEP              = 4265\n\tSYS_TGKILL                       = 4266\n\tSYS_UTIMES                       = 4267\n\tSYS_MBIND                        = 4268\n\tSYS_GET_MEMPOLICY                = 4269\n\tSYS_SET_MEMPOLICY                = 4270\n\tSYS_MQ_OPEN                      = 4271\n\tSYS_MQ_UNLINK                    = 4272\n\tSYS_MQ_TIMEDSEND                 = 4273\n\tSYS_MQ_TIMEDRECEIVE              = 4274\n\tSYS_MQ_NOTIFY                    = 4275\n\tSYS_MQ_GETSETATTR                = 4276\n\tSYS_VSERVER                      = 4277\n\tSYS_WAITID                       = 4278\n\tSYS_ADD_KEY                      = 4280\n\tSYS_REQUEST_KEY                  = 4281\n\tSYS_KEYCTL                       = 4282\n\tSYS_SET_THREAD_AREA              = 4283\n\tSYS_INOTIFY_INIT                 = 4284\n\tSYS_INOTIFY_ADD_WATCH            = 4285\n\tSYS_INOTIFY_RM_WATCH             = 4286\n\tSYS_MIGRATE_PAGES                = 4287\n\tSYS_OPENAT                       = 4288\n\tSYS_MKDIRAT                      = 4289\n\tSYS_MKNODAT                      = 4290\n\tSYS_FCHOWNAT                     = 4291\n\tSYS_FUTIMESAT                    = 4292\n\tSYS_FSTATAT64                    = 4293\n\tSYS_UNLINKAT                     = 4294\n\tSYS_RENAMEAT                     = 4295\n\tSYS_LINKAT                       = 4296\n\tSYS_SYMLINKAT                    = 4297\n\tSYS_READLINKAT                   = 4298\n\tSYS_FCHMODAT                     = 4299\n\tSYS_FACCESSAT                    = 4300\n\tSYS_PSELECT6                     = 4301\n\tSYS_PPOLL                        = 4302\n\tSYS_UNSHARE                      = 4303\n\tSYS_SPLICE                       = 4304\n\tSYS_SYNC_FILE_RANGE              = 4305\n\tSYS_TEE                          = 4306\n\tSYS_VMSPLICE                     = 4307\n\tSYS_MOVE_PAGES                   = 4308\n\tSYS_SET_ROBUST_LIST              = 4309\n\tSYS_GET_ROBUST_LIST              = 4310\n\tSYS_KEXEC_LOAD                   = 4311\n\tSYS_GETCPU                       = 4312\n\tSYS_EPOLL_PWAIT                  = 4313\n\tSYS_IOPRIO_SET                   = 4314\n\tSYS_IOPRIO_GET                   = 4315\n\tSYS_UTIMENSAT                    = 4316\n\tSYS_SIGNALFD                     = 4317\n\tSYS_TIMERFD                      = 4318\n\tSYS_EVENTFD                      = 4319\n\tSYS_FALLOCATE                    = 4320\n\tSYS_TIMERFD_CREATE               = 4321\n\tSYS_TIMERFD_GETTIME              = 4322\n\tSYS_TIMERFD_SETTIME              = 4323\n\tSYS_SIGNALFD4                    = 4324\n\tSYS_EVENTFD2                     = 4325\n\tSYS_EPOLL_CREATE1                = 4326\n\tSYS_DUP3                         = 4327\n\tSYS_PIPE2                        = 4328\n\tSYS_INOTIFY_INIT1                = 4329\n\tSYS_PREADV                       = 4330\n\tSYS_PWRITEV                      = 4331\n\tSYS_RT_TGSIGQUEUEINFO            = 4332\n\tSYS_PERF_EVENT_OPEN              = 4333\n\tSYS_ACCEPT4                      = 4334\n\tSYS_RECVMMSG                     = 4335\n\tSYS_FANOTIFY_INIT                = 4336\n\tSYS_FANOTIFY_MARK                = 4337\n\tSYS_PRLIMIT64                    = 4338\n\tSYS_NAME_TO_HANDLE_AT            = 4339\n\tSYS_OPEN_BY_HANDLE_AT            = 4340\n\tSYS_CLOCK_ADJTIME                = 4341\n\tSYS_SYNCFS                       = 4342\n\tSYS_SENDMMSG                     = 4343\n\tSYS_SETNS                        = 4344\n\tSYS_PROCESS_VM_READV             = 4345\n\tSYS_PROCESS_VM_WRITEV            = 4346\n\tSYS_KCMP                         = 4347\n\tSYS_FINIT_MODULE                 = 4348\n\tSYS_SCHED_SETATTR                = 4349\n\tSYS_SCHED_GETATTR                = 4350\n\tSYS_RENAMEAT2                    = 4351\n\tSYS_SECCOMP                      = 4352\n\tSYS_GETRANDOM                    = 4353\n\tSYS_MEMFD_CREATE                 = 4354\n\tSYS_BPF                          = 4355\n\tSYS_EXECVEAT                     = 4356\n\tSYS_USERFAULTFD                  = 4357\n\tSYS_MEMBARRIER                   = 4358\n\tSYS_MLOCK2                       = 4359\n\tSYS_COPY_FILE_RANGE              = 4360\n\tSYS_PREADV2                      = 4361\n\tSYS_PWRITEV2                     = 4362\n\tSYS_PKEY_MPROTECT                = 4363\n\tSYS_PKEY_ALLOC                   = 4364\n\tSYS_PKEY_FREE                    = 4365\n\tSYS_STATX                        = 4366\n\tSYS_RSEQ                         = 4367\n\tSYS_IO_PGETEVENTS                = 4368\n\tSYS_SEMGET                       = 4393\n\tSYS_SEMCTL                       = 4394\n\tSYS_SHMGET                       = 4395\n\tSYS_SHMCTL                       = 4396\n\tSYS_SHMAT                        = 4397\n\tSYS_SHMDT                        = 4398\n\tSYS_MSGGET                       = 4399\n\tSYS_MSGSND                       = 4400\n\tSYS_MSGRCV                       = 4401\n\tSYS_MSGCTL                       = 4402\n\tSYS_CLOCK_GETTIME64              = 4403\n\tSYS_CLOCK_SETTIME64              = 4404\n\tSYS_CLOCK_ADJTIME64              = 4405\n\tSYS_CLOCK_GETRES_TIME64          = 4406\n\tSYS_CLOCK_NANOSLEEP_TIME64       = 4407\n\tSYS_TIMER_GETTIME64              = 4408\n\tSYS_TIMER_SETTIME64              = 4409\n\tSYS_TIMERFD_GETTIME64            = 4410\n\tSYS_TIMERFD_SETTIME64            = 4411\n\tSYS_UTIMENSAT_TIME64             = 4412\n\tSYS_PSELECT6_TIME64              = 4413\n\tSYS_PPOLL_TIME64                 = 4414\n\tSYS_IO_PGETEVENTS_TIME64         = 4416\n\tSYS_RECVMMSG_TIME64              = 4417\n\tSYS_MQ_TIMEDSEND_TIME64          = 4418\n\tSYS_MQ_TIMEDRECEIVE_TIME64       = 4419\n\tSYS_SEMTIMEDOP_TIME64            = 4420\n\tSYS_RT_SIGTIMEDWAIT_TIME64       = 4421\n\tSYS_FUTEX_TIME64                 = 4422\n\tSYS_SCHED_RR_GET_INTERVAL_TIME64 = 4423\n\tSYS_PIDFD_SEND_SIGNAL            = 4424\n\tSYS_IO_URING_SETUP               = 4425\n\tSYS_IO_URING_ENTER               = 4426\n\tSYS_IO_URING_REGISTER            = 4427\n\tSYS_OPEN_TREE                    = 4428\n\tSYS_MOVE_MOUNT                   = 4429\n\tSYS_FSOPEN                       = 4430\n\tSYS_FSCONFIG                     = 4431\n\tSYS_FSMOUNT                      = 4432\n\tSYS_FSPICK                       = 4433\n\tSYS_PIDFD_OPEN                   = 4434\n\tSYS_CLONE3                       = 4435\n\tSYS_CLOSE_RANGE                  = 4436\n\tSYS_OPENAT2                      = 4437\n\tSYS_PIDFD_GETFD                  = 4438\n\tSYS_FACCESSAT2                   = 4439\n\tSYS_PROCESS_MADVISE              = 4440\n\tSYS_EPOLL_PWAIT2                 = 4441\n\tSYS_MOUNT_SETATTR                = 4442\n\tSYS_QUOTACTL_FD                  = 4443\n\tSYS_LANDLOCK_CREATE_RULESET      = 4444\n\tSYS_LANDLOCK_ADD_RULE            = 4445\n\tSYS_LANDLOCK_RESTRICT_SELF       = 4446\n\tSYS_PROCESS_MRELEASE             = 4448\n\tSYS_FUTEX_WAITV                  = 4449\n\tSYS_SET_MEMPOLICY_HOME_NODE      = 4450\n\tSYS_CACHESTAT                    = 4451\n\tSYS_FCHMODAT2                    = 4452\n\tSYS_MAP_SHADOW_STACK             = 4453\n\tSYS_FUTEX_WAKE                   = 4454\n\tSYS_FUTEX_WAIT                   = 4455\n\tSYS_FUTEX_REQUEUE                = 4456\n\tSYS_STATMOUNT                    = 4457\n\tSYS_LISTMOUNT                    = 4458\n\tSYS_LSM_GET_SELF_ATTR            = 4459\n\tSYS_LSM_SET_SELF_ATTR            = 4460\n\tSYS_LSM_LIST_MODULES             = 4461\n\tSYS_MSEAL                        = 4462\n\tSYS_SETXATTRAT                   = 4463\n\tSYS_GETXATTRAT                   = 4464\n\tSYS_LISTXATTRAT                  = 4465\n\tSYS_REMOVEXATTRAT                = 4466\n\tSYS_OPEN_TREE_ATTR               = 4467\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/ppc/include /tmp/ppc/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc && linux\n\npackage unix\n\nconst (\n\tSYS_RESTART_SYSCALL              = 0\n\tSYS_EXIT                         = 1\n\tSYS_FORK                         = 2\n\tSYS_READ                         = 3\n\tSYS_WRITE                        = 4\n\tSYS_OPEN                         = 5\n\tSYS_CLOSE                        = 6\n\tSYS_WAITPID                      = 7\n\tSYS_CREAT                        = 8\n\tSYS_LINK                         = 9\n\tSYS_UNLINK                       = 10\n\tSYS_EXECVE                       = 11\n\tSYS_CHDIR                        = 12\n\tSYS_TIME                         = 13\n\tSYS_MKNOD                        = 14\n\tSYS_CHMOD                        = 15\n\tSYS_LCHOWN                       = 16\n\tSYS_BREAK                        = 17\n\tSYS_OLDSTAT                      = 18\n\tSYS_LSEEK                        = 19\n\tSYS_GETPID                       = 20\n\tSYS_MOUNT                        = 21\n\tSYS_UMOUNT                       = 22\n\tSYS_SETUID                       = 23\n\tSYS_GETUID                       = 24\n\tSYS_STIME                        = 25\n\tSYS_PTRACE                       = 26\n\tSYS_ALARM                        = 27\n\tSYS_OLDFSTAT                     = 28\n\tSYS_PAUSE                        = 29\n\tSYS_UTIME                        = 30\n\tSYS_STTY                         = 31\n\tSYS_GTTY                         = 32\n\tSYS_ACCESS                       = 33\n\tSYS_NICE                         = 34\n\tSYS_FTIME                        = 35\n\tSYS_SYNC                         = 36\n\tSYS_KILL                         = 37\n\tSYS_RENAME                       = 38\n\tSYS_MKDIR                        = 39\n\tSYS_RMDIR                        = 40\n\tSYS_DUP                          = 41\n\tSYS_PIPE                         = 42\n\tSYS_TIMES                        = 43\n\tSYS_PROF                         = 44\n\tSYS_BRK                          = 45\n\tSYS_SETGID                       = 46\n\tSYS_GETGID                       = 47\n\tSYS_SIGNAL                       = 48\n\tSYS_GETEUID                      = 49\n\tSYS_GETEGID                      = 50\n\tSYS_ACCT                         = 51\n\tSYS_UMOUNT2                      = 52\n\tSYS_LOCK                         = 53\n\tSYS_IOCTL                        = 54\n\tSYS_FCNTL                        = 55\n\tSYS_MPX                          = 56\n\tSYS_SETPGID                      = 57\n\tSYS_ULIMIT                       = 58\n\tSYS_OLDOLDUNAME                  = 59\n\tSYS_UMASK                        = 60\n\tSYS_CHROOT                       = 61\n\tSYS_USTAT                        = 62\n\tSYS_DUP2                         = 63\n\tSYS_GETPPID                      = 64\n\tSYS_GETPGRP                      = 65\n\tSYS_SETSID                       = 66\n\tSYS_SIGACTION                    = 67\n\tSYS_SGETMASK                     = 68\n\tSYS_SSETMASK                     = 69\n\tSYS_SETREUID                     = 70\n\tSYS_SETREGID                     = 71\n\tSYS_SIGSUSPEND                   = 72\n\tSYS_SIGPENDING                   = 73\n\tSYS_SETHOSTNAME                  = 74\n\tSYS_SETRLIMIT                    = 75\n\tSYS_GETRLIMIT                    = 76\n\tSYS_GETRUSAGE                    = 77\n\tSYS_GETTIMEOFDAY                 = 78\n\tSYS_SETTIMEOFDAY                 = 79\n\tSYS_GETGROUPS                    = 80\n\tSYS_SETGROUPS                    = 81\n\tSYS_SELECT                       = 82\n\tSYS_SYMLINK                      = 83\n\tSYS_OLDLSTAT                     = 84\n\tSYS_READLINK                     = 85\n\tSYS_USELIB                       = 86\n\tSYS_SWAPON                       = 87\n\tSYS_REBOOT                       = 88\n\tSYS_READDIR                      = 89\n\tSYS_MMAP                         = 90\n\tSYS_MUNMAP                       = 91\n\tSYS_TRUNCATE                     = 92\n\tSYS_FTRUNCATE                    = 93\n\tSYS_FCHMOD                       = 94\n\tSYS_FCHOWN                       = 95\n\tSYS_GETPRIORITY                  = 96\n\tSYS_SETPRIORITY                  = 97\n\tSYS_PROFIL                       = 98\n\tSYS_STATFS                       = 99\n\tSYS_FSTATFS                      = 100\n\tSYS_IOPERM                       = 101\n\tSYS_SOCKETCALL                   = 102\n\tSYS_SYSLOG                       = 103\n\tSYS_SETITIMER                    = 104\n\tSYS_GETITIMER                    = 105\n\tSYS_STAT                         = 106\n\tSYS_LSTAT                        = 107\n\tSYS_FSTAT                        = 108\n\tSYS_OLDUNAME                     = 109\n\tSYS_IOPL                         = 110\n\tSYS_VHANGUP                      = 111\n\tSYS_IDLE                         = 112\n\tSYS_VM86                         = 113\n\tSYS_WAIT4                        = 114\n\tSYS_SWAPOFF                      = 115\n\tSYS_SYSINFO                      = 116\n\tSYS_IPC                          = 117\n\tSYS_FSYNC                        = 118\n\tSYS_SIGRETURN                    = 119\n\tSYS_CLONE                        = 120\n\tSYS_SETDOMAINNAME                = 121\n\tSYS_UNAME                        = 122\n\tSYS_MODIFY_LDT                   = 123\n\tSYS_ADJTIMEX                     = 124\n\tSYS_MPROTECT                     = 125\n\tSYS_SIGPROCMASK                  = 126\n\tSYS_CREATE_MODULE                = 127\n\tSYS_INIT_MODULE                  = 128\n\tSYS_DELETE_MODULE                = 129\n\tSYS_GET_KERNEL_SYMS              = 130\n\tSYS_QUOTACTL                     = 131\n\tSYS_GETPGID                      = 132\n\tSYS_FCHDIR                       = 133\n\tSYS_BDFLUSH                      = 134\n\tSYS_SYSFS                        = 135\n\tSYS_PERSONALITY                  = 136\n\tSYS_AFS_SYSCALL                  = 137\n\tSYS_SETFSUID                     = 138\n\tSYS_SETFSGID                     = 139\n\tSYS__LLSEEK                      = 140\n\tSYS_GETDENTS                     = 141\n\tSYS__NEWSELECT                   = 142\n\tSYS_FLOCK                        = 143\n\tSYS_MSYNC                        = 144\n\tSYS_READV                        = 145\n\tSYS_WRITEV                       = 146\n\tSYS_GETSID                       = 147\n\tSYS_FDATASYNC                    = 148\n\tSYS__SYSCTL                      = 149\n\tSYS_MLOCK                        = 150\n\tSYS_MUNLOCK                      = 151\n\tSYS_MLOCKALL                     = 152\n\tSYS_MUNLOCKALL                   = 153\n\tSYS_SCHED_SETPARAM               = 154\n\tSYS_SCHED_GETPARAM               = 155\n\tSYS_SCHED_SETSCHEDULER           = 156\n\tSYS_SCHED_GETSCHEDULER           = 157\n\tSYS_SCHED_YIELD                  = 158\n\tSYS_SCHED_GET_PRIORITY_MAX       = 159\n\tSYS_SCHED_GET_PRIORITY_MIN       = 160\n\tSYS_SCHED_RR_GET_INTERVAL        = 161\n\tSYS_NANOSLEEP                    = 162\n\tSYS_MREMAP                       = 163\n\tSYS_SETRESUID                    = 164\n\tSYS_GETRESUID                    = 165\n\tSYS_QUERY_MODULE                 = 166\n\tSYS_POLL                         = 167\n\tSYS_NFSSERVCTL                   = 168\n\tSYS_SETRESGID                    = 169\n\tSYS_GETRESGID                    = 170\n\tSYS_PRCTL                        = 171\n\tSYS_RT_SIGRETURN                 = 172\n\tSYS_RT_SIGACTION                 = 173\n\tSYS_RT_SIGPROCMASK               = 174\n\tSYS_RT_SIGPENDING                = 175\n\tSYS_RT_SIGTIMEDWAIT              = 176\n\tSYS_RT_SIGQUEUEINFO              = 177\n\tSYS_RT_SIGSUSPEND                = 178\n\tSYS_PREAD64                      = 179\n\tSYS_PWRITE64                     = 180\n\tSYS_CHOWN                        = 181\n\tSYS_GETCWD                       = 182\n\tSYS_CAPGET                       = 183\n\tSYS_CAPSET                       = 184\n\tSYS_SIGALTSTACK                  = 185\n\tSYS_SENDFILE                     = 186\n\tSYS_GETPMSG                      = 187\n\tSYS_PUTPMSG                      = 188\n\tSYS_VFORK                        = 189\n\tSYS_UGETRLIMIT                   = 190\n\tSYS_READAHEAD                    = 191\n\tSYS_MMAP2                        = 192\n\tSYS_TRUNCATE64                   = 193\n\tSYS_FTRUNCATE64                  = 194\n\tSYS_STAT64                       = 195\n\tSYS_LSTAT64                      = 196\n\tSYS_FSTAT64                      = 197\n\tSYS_PCICONFIG_READ               = 198\n\tSYS_PCICONFIG_WRITE              = 199\n\tSYS_PCICONFIG_IOBASE             = 200\n\tSYS_MULTIPLEXER                  = 201\n\tSYS_GETDENTS64                   = 202\n\tSYS_PIVOT_ROOT                   = 203\n\tSYS_FCNTL64                      = 204\n\tSYS_MADVISE                      = 205\n\tSYS_MINCORE                      = 206\n\tSYS_GETTID                       = 207\n\tSYS_TKILL                        = 208\n\tSYS_SETXATTR                     = 209\n\tSYS_LSETXATTR                    = 210\n\tSYS_FSETXATTR                    = 211\n\tSYS_GETXATTR                     = 212\n\tSYS_LGETXATTR                    = 213\n\tSYS_FGETXATTR                    = 214\n\tSYS_LISTXATTR                    = 215\n\tSYS_LLISTXATTR                   = 216\n\tSYS_FLISTXATTR                   = 217\n\tSYS_REMOVEXATTR                  = 218\n\tSYS_LREMOVEXATTR                 = 219\n\tSYS_FREMOVEXATTR                 = 220\n\tSYS_FUTEX                        = 221\n\tSYS_SCHED_SETAFFINITY            = 222\n\tSYS_SCHED_GETAFFINITY            = 223\n\tSYS_TUXCALL                      = 225\n\tSYS_SENDFILE64                   = 226\n\tSYS_IO_SETUP                     = 227\n\tSYS_IO_DESTROY                   = 228\n\tSYS_IO_GETEVENTS                 = 229\n\tSYS_IO_SUBMIT                    = 230\n\tSYS_IO_CANCEL                    = 231\n\tSYS_SET_TID_ADDRESS              = 232\n\tSYS_FADVISE64                    = 233\n\tSYS_EXIT_GROUP                   = 234\n\tSYS_LOOKUP_DCOOKIE               = 235\n\tSYS_EPOLL_CREATE                 = 236\n\tSYS_EPOLL_CTL                    = 237\n\tSYS_EPOLL_WAIT                   = 238\n\tSYS_REMAP_FILE_PAGES             = 239\n\tSYS_TIMER_CREATE                 = 240\n\tSYS_TIMER_SETTIME                = 241\n\tSYS_TIMER_GETTIME                = 242\n\tSYS_TIMER_GETOVERRUN             = 243\n\tSYS_TIMER_DELETE                 = 244\n\tSYS_CLOCK_SETTIME                = 245\n\tSYS_CLOCK_GETTIME                = 246\n\tSYS_CLOCK_GETRES                 = 247\n\tSYS_CLOCK_NANOSLEEP              = 248\n\tSYS_SWAPCONTEXT                  = 249\n\tSYS_TGKILL                       = 250\n\tSYS_UTIMES                       = 251\n\tSYS_STATFS64                     = 252\n\tSYS_FSTATFS64                    = 253\n\tSYS_FADVISE64_64                 = 254\n\tSYS_RTAS                         = 255\n\tSYS_SYS_DEBUG_SETCONTEXT         = 256\n\tSYS_MIGRATE_PAGES                = 258\n\tSYS_MBIND                        = 259\n\tSYS_GET_MEMPOLICY                = 260\n\tSYS_SET_MEMPOLICY                = 261\n\tSYS_MQ_OPEN                      = 262\n\tSYS_MQ_UNLINK                    = 263\n\tSYS_MQ_TIMEDSEND                 = 264\n\tSYS_MQ_TIMEDRECEIVE              = 265\n\tSYS_MQ_NOTIFY                    = 266\n\tSYS_MQ_GETSETATTR                = 267\n\tSYS_KEXEC_LOAD                   = 268\n\tSYS_ADD_KEY                      = 269\n\tSYS_REQUEST_KEY                  = 270\n\tSYS_KEYCTL                       = 271\n\tSYS_WAITID                       = 272\n\tSYS_IOPRIO_SET                   = 273\n\tSYS_IOPRIO_GET                   = 274\n\tSYS_INOTIFY_INIT                 = 275\n\tSYS_INOTIFY_ADD_WATCH            = 276\n\tSYS_INOTIFY_RM_WATCH             = 277\n\tSYS_SPU_RUN                      = 278\n\tSYS_SPU_CREATE                   = 279\n\tSYS_PSELECT6                     = 280\n\tSYS_PPOLL                        = 281\n\tSYS_UNSHARE                      = 282\n\tSYS_SPLICE                       = 283\n\tSYS_TEE                          = 284\n\tSYS_VMSPLICE                     = 285\n\tSYS_OPENAT                       = 286\n\tSYS_MKDIRAT                      = 287\n\tSYS_MKNODAT                      = 288\n\tSYS_FCHOWNAT                     = 289\n\tSYS_FUTIMESAT                    = 290\n\tSYS_FSTATAT64                    = 291\n\tSYS_UNLINKAT                     = 292\n\tSYS_RENAMEAT                     = 293\n\tSYS_LINKAT                       = 294\n\tSYS_SYMLINKAT                    = 295\n\tSYS_READLINKAT                   = 296\n\tSYS_FCHMODAT                     = 297\n\tSYS_FACCESSAT                    = 298\n\tSYS_GET_ROBUST_LIST              = 299\n\tSYS_SET_ROBUST_LIST              = 300\n\tSYS_MOVE_PAGES                   = 301\n\tSYS_GETCPU                       = 302\n\tSYS_EPOLL_PWAIT                  = 303\n\tSYS_UTIMENSAT                    = 304\n\tSYS_SIGNALFD                     = 305\n\tSYS_TIMERFD_CREATE               = 306\n\tSYS_EVENTFD                      = 307\n\tSYS_SYNC_FILE_RANGE2             = 308\n\tSYS_FALLOCATE                    = 309\n\tSYS_SUBPAGE_PROT                 = 310\n\tSYS_TIMERFD_SETTIME              = 311\n\tSYS_TIMERFD_GETTIME              = 312\n\tSYS_SIGNALFD4                    = 313\n\tSYS_EVENTFD2                     = 314\n\tSYS_EPOLL_CREATE1                = 315\n\tSYS_DUP3                         = 316\n\tSYS_PIPE2                        = 317\n\tSYS_INOTIFY_INIT1                = 318\n\tSYS_PERF_EVENT_OPEN              = 319\n\tSYS_PREADV                       = 320\n\tSYS_PWRITEV                      = 321\n\tSYS_RT_TGSIGQUEUEINFO            = 322\n\tSYS_FANOTIFY_INIT                = 323\n\tSYS_FANOTIFY_MARK                = 324\n\tSYS_PRLIMIT64                    = 325\n\tSYS_SOCKET                       = 326\n\tSYS_BIND                         = 327\n\tSYS_CONNECT                      = 328\n\tSYS_LISTEN                       = 329\n\tSYS_ACCEPT                       = 330\n\tSYS_GETSOCKNAME                  = 331\n\tSYS_GETPEERNAME                  = 332\n\tSYS_SOCKETPAIR                   = 333\n\tSYS_SEND                         = 334\n\tSYS_SENDTO                       = 335\n\tSYS_RECV                         = 336\n\tSYS_RECVFROM                     = 337\n\tSYS_SHUTDOWN                     = 338\n\tSYS_SETSOCKOPT                   = 339\n\tSYS_GETSOCKOPT                   = 340\n\tSYS_SENDMSG                      = 341\n\tSYS_RECVMSG                      = 342\n\tSYS_RECVMMSG                     = 343\n\tSYS_ACCEPT4                      = 344\n\tSYS_NAME_TO_HANDLE_AT            = 345\n\tSYS_OPEN_BY_HANDLE_AT            = 346\n\tSYS_CLOCK_ADJTIME                = 347\n\tSYS_SYNCFS                       = 348\n\tSYS_SENDMMSG                     = 349\n\tSYS_SETNS                        = 350\n\tSYS_PROCESS_VM_READV             = 351\n\tSYS_PROCESS_VM_WRITEV            = 352\n\tSYS_FINIT_MODULE                 = 353\n\tSYS_KCMP                         = 354\n\tSYS_SCHED_SETATTR                = 355\n\tSYS_SCHED_GETATTR                = 356\n\tSYS_RENAMEAT2                    = 357\n\tSYS_SECCOMP                      = 358\n\tSYS_GETRANDOM                    = 359\n\tSYS_MEMFD_CREATE                 = 360\n\tSYS_BPF                          = 361\n\tSYS_EXECVEAT                     = 362\n\tSYS_SWITCH_ENDIAN                = 363\n\tSYS_USERFAULTFD                  = 364\n\tSYS_MEMBARRIER                   = 365\n\tSYS_MLOCK2                       = 378\n\tSYS_COPY_FILE_RANGE              = 379\n\tSYS_PREADV2                      = 380\n\tSYS_PWRITEV2                     = 381\n\tSYS_KEXEC_FILE_LOAD              = 382\n\tSYS_STATX                        = 383\n\tSYS_PKEY_ALLOC                   = 384\n\tSYS_PKEY_FREE                    = 385\n\tSYS_PKEY_MPROTECT                = 386\n\tSYS_RSEQ                         = 387\n\tSYS_IO_PGETEVENTS                = 388\n\tSYS_SEMGET                       = 393\n\tSYS_SEMCTL                       = 394\n\tSYS_SHMGET                       = 395\n\tSYS_SHMCTL                       = 396\n\tSYS_SHMAT                        = 397\n\tSYS_SHMDT                        = 398\n\tSYS_MSGGET                       = 399\n\tSYS_MSGSND                       = 400\n\tSYS_MSGRCV                       = 401\n\tSYS_MSGCTL                       = 402\n\tSYS_CLOCK_GETTIME64              = 403\n\tSYS_CLOCK_SETTIME64              = 404\n\tSYS_CLOCK_ADJTIME64              = 405\n\tSYS_CLOCK_GETRES_TIME64          = 406\n\tSYS_CLOCK_NANOSLEEP_TIME64       = 407\n\tSYS_TIMER_GETTIME64              = 408\n\tSYS_TIMER_SETTIME64              = 409\n\tSYS_TIMERFD_GETTIME64            = 410\n\tSYS_TIMERFD_SETTIME64            = 411\n\tSYS_UTIMENSAT_TIME64             = 412\n\tSYS_PSELECT6_TIME64              = 413\n\tSYS_PPOLL_TIME64                 = 414\n\tSYS_IO_PGETEVENTS_TIME64         = 416\n\tSYS_RECVMMSG_TIME64              = 417\n\tSYS_MQ_TIMEDSEND_TIME64          = 418\n\tSYS_MQ_TIMEDRECEIVE_TIME64       = 419\n\tSYS_SEMTIMEDOP_TIME64            = 420\n\tSYS_RT_SIGTIMEDWAIT_TIME64       = 421\n\tSYS_FUTEX_TIME64                 = 422\n\tSYS_SCHED_RR_GET_INTERVAL_TIME64 = 423\n\tSYS_PIDFD_SEND_SIGNAL            = 424\n\tSYS_IO_URING_SETUP               = 425\n\tSYS_IO_URING_ENTER               = 426\n\tSYS_IO_URING_REGISTER            = 427\n\tSYS_OPEN_TREE                    = 428\n\tSYS_MOVE_MOUNT                   = 429\n\tSYS_FSOPEN                       = 430\n\tSYS_FSCONFIG                     = 431\n\tSYS_FSMOUNT                      = 432\n\tSYS_FSPICK                       = 433\n\tSYS_PIDFD_OPEN                   = 434\n\tSYS_CLONE3                       = 435\n\tSYS_CLOSE_RANGE                  = 436\n\tSYS_OPENAT2                      = 437\n\tSYS_PIDFD_GETFD                  = 438\n\tSYS_FACCESSAT2                   = 439\n\tSYS_PROCESS_MADVISE              = 440\n\tSYS_EPOLL_PWAIT2                 = 441\n\tSYS_MOUNT_SETATTR                = 442\n\tSYS_QUOTACTL_FD                  = 443\n\tSYS_LANDLOCK_CREATE_RULESET      = 444\n\tSYS_LANDLOCK_ADD_RULE            = 445\n\tSYS_LANDLOCK_RESTRICT_SELF       = 446\n\tSYS_PROCESS_MRELEASE             = 448\n\tSYS_FUTEX_WAITV                  = 449\n\tSYS_SET_MEMPOLICY_HOME_NODE      = 450\n\tSYS_CACHESTAT                    = 451\n\tSYS_FCHMODAT2                    = 452\n\tSYS_MAP_SHADOW_STACK             = 453\n\tSYS_FUTEX_WAKE                   = 454\n\tSYS_FUTEX_WAIT                   = 455\n\tSYS_FUTEX_REQUEUE                = 456\n\tSYS_STATMOUNT                    = 457\n\tSYS_LISTMOUNT                    = 458\n\tSYS_LSM_GET_SELF_ATTR            = 459\n\tSYS_LSM_SET_SELF_ATTR            = 460\n\tSYS_LSM_LIST_MODULES             = 461\n\tSYS_MSEAL                        = 462\n\tSYS_SETXATTRAT                   = 463\n\tSYS_GETXATTRAT                   = 464\n\tSYS_LISTXATTRAT                  = 465\n\tSYS_REMOVEXATTRAT                = 466\n\tSYS_OPEN_TREE_ATTR               = 467\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/ppc64/include /tmp/ppc64/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc64 && linux\n\npackage unix\n\nconst (\n\tSYS_RESTART_SYSCALL         = 0\n\tSYS_EXIT                    = 1\n\tSYS_FORK                    = 2\n\tSYS_READ                    = 3\n\tSYS_WRITE                   = 4\n\tSYS_OPEN                    = 5\n\tSYS_CLOSE                   = 6\n\tSYS_WAITPID                 = 7\n\tSYS_CREAT                   = 8\n\tSYS_LINK                    = 9\n\tSYS_UNLINK                  = 10\n\tSYS_EXECVE                  = 11\n\tSYS_CHDIR                   = 12\n\tSYS_TIME                    = 13\n\tSYS_MKNOD                   = 14\n\tSYS_CHMOD                   = 15\n\tSYS_LCHOWN                  = 16\n\tSYS_BREAK                   = 17\n\tSYS_OLDSTAT                 = 18\n\tSYS_LSEEK                   = 19\n\tSYS_GETPID                  = 20\n\tSYS_MOUNT                   = 21\n\tSYS_UMOUNT                  = 22\n\tSYS_SETUID                  = 23\n\tSYS_GETUID                  = 24\n\tSYS_STIME                   = 25\n\tSYS_PTRACE                  = 26\n\tSYS_ALARM                   = 27\n\tSYS_OLDFSTAT                = 28\n\tSYS_PAUSE                   = 29\n\tSYS_UTIME                   = 30\n\tSYS_STTY                    = 31\n\tSYS_GTTY                    = 32\n\tSYS_ACCESS                  = 33\n\tSYS_NICE                    = 34\n\tSYS_FTIME                   = 35\n\tSYS_SYNC                    = 36\n\tSYS_KILL                    = 37\n\tSYS_RENAME                  = 38\n\tSYS_MKDIR                   = 39\n\tSYS_RMDIR                   = 40\n\tSYS_DUP                     = 41\n\tSYS_PIPE                    = 42\n\tSYS_TIMES                   = 43\n\tSYS_PROF                    = 44\n\tSYS_BRK                     = 45\n\tSYS_SETGID                  = 46\n\tSYS_GETGID                  = 47\n\tSYS_SIGNAL                  = 48\n\tSYS_GETEUID                 = 49\n\tSYS_GETEGID                 = 50\n\tSYS_ACCT                    = 51\n\tSYS_UMOUNT2                 = 52\n\tSYS_LOCK                    = 53\n\tSYS_IOCTL                   = 54\n\tSYS_FCNTL                   = 55\n\tSYS_MPX                     = 56\n\tSYS_SETPGID                 = 57\n\tSYS_ULIMIT                  = 58\n\tSYS_OLDOLDUNAME             = 59\n\tSYS_UMASK                   = 60\n\tSYS_CHROOT                  = 61\n\tSYS_USTAT                   = 62\n\tSYS_DUP2                    = 63\n\tSYS_GETPPID                 = 64\n\tSYS_GETPGRP                 = 65\n\tSYS_SETSID                  = 66\n\tSYS_SIGACTION               = 67\n\tSYS_SGETMASK                = 68\n\tSYS_SSETMASK                = 69\n\tSYS_SETREUID                = 70\n\tSYS_SETREGID                = 71\n\tSYS_SIGSUSPEND              = 72\n\tSYS_SIGPENDING              = 73\n\tSYS_SETHOSTNAME             = 74\n\tSYS_SETRLIMIT               = 75\n\tSYS_GETRLIMIT               = 76\n\tSYS_GETRUSAGE               = 77\n\tSYS_GETTIMEOFDAY            = 78\n\tSYS_SETTIMEOFDAY            = 79\n\tSYS_GETGROUPS               = 80\n\tSYS_SETGROUPS               = 81\n\tSYS_SELECT                  = 82\n\tSYS_SYMLINK                 = 83\n\tSYS_OLDLSTAT                = 84\n\tSYS_READLINK                = 85\n\tSYS_USELIB                  = 86\n\tSYS_SWAPON                  = 87\n\tSYS_REBOOT                  = 88\n\tSYS_READDIR                 = 89\n\tSYS_MMAP                    = 90\n\tSYS_MUNMAP                  = 91\n\tSYS_TRUNCATE                = 92\n\tSYS_FTRUNCATE               = 93\n\tSYS_FCHMOD                  = 94\n\tSYS_FCHOWN                  = 95\n\tSYS_GETPRIORITY             = 96\n\tSYS_SETPRIORITY             = 97\n\tSYS_PROFIL                  = 98\n\tSYS_STATFS                  = 99\n\tSYS_FSTATFS                 = 100\n\tSYS_IOPERM                  = 101\n\tSYS_SOCKETCALL              = 102\n\tSYS_SYSLOG                  = 103\n\tSYS_SETITIMER               = 104\n\tSYS_GETITIMER               = 105\n\tSYS_STAT                    = 106\n\tSYS_LSTAT                   = 107\n\tSYS_FSTAT                   = 108\n\tSYS_OLDUNAME                = 109\n\tSYS_IOPL                    = 110\n\tSYS_VHANGUP                 = 111\n\tSYS_IDLE                    = 112\n\tSYS_VM86                    = 113\n\tSYS_WAIT4                   = 114\n\tSYS_SWAPOFF                 = 115\n\tSYS_SYSINFO                 = 116\n\tSYS_IPC                     = 117\n\tSYS_FSYNC                   = 118\n\tSYS_SIGRETURN               = 119\n\tSYS_CLONE                   = 120\n\tSYS_SETDOMAINNAME           = 121\n\tSYS_UNAME                   = 122\n\tSYS_MODIFY_LDT              = 123\n\tSYS_ADJTIMEX                = 124\n\tSYS_MPROTECT                = 125\n\tSYS_SIGPROCMASK             = 126\n\tSYS_CREATE_MODULE           = 127\n\tSYS_INIT_MODULE             = 128\n\tSYS_DELETE_MODULE           = 129\n\tSYS_GET_KERNEL_SYMS         = 130\n\tSYS_QUOTACTL                = 131\n\tSYS_GETPGID                 = 132\n\tSYS_FCHDIR                  = 133\n\tSYS_BDFLUSH                 = 134\n\tSYS_SYSFS                   = 135\n\tSYS_PERSONALITY             = 136\n\tSYS_AFS_SYSCALL             = 137\n\tSYS_SETFSUID                = 138\n\tSYS_SETFSGID                = 139\n\tSYS__LLSEEK                 = 140\n\tSYS_GETDENTS                = 141\n\tSYS__NEWSELECT              = 142\n\tSYS_FLOCK                   = 143\n\tSYS_MSYNC                   = 144\n\tSYS_READV                   = 145\n\tSYS_WRITEV                  = 146\n\tSYS_GETSID                  = 147\n\tSYS_FDATASYNC               = 148\n\tSYS__SYSCTL                 = 149\n\tSYS_MLOCK                   = 150\n\tSYS_MUNLOCK                 = 151\n\tSYS_MLOCKALL                = 152\n\tSYS_MUNLOCKALL              = 153\n\tSYS_SCHED_SETPARAM          = 154\n\tSYS_SCHED_GETPARAM          = 155\n\tSYS_SCHED_SETSCHEDULER      = 156\n\tSYS_SCHED_GETSCHEDULER      = 157\n\tSYS_SCHED_YIELD             = 158\n\tSYS_SCHED_GET_PRIORITY_MAX  = 159\n\tSYS_SCHED_GET_PRIORITY_MIN  = 160\n\tSYS_SCHED_RR_GET_INTERVAL   = 161\n\tSYS_NANOSLEEP               = 162\n\tSYS_MREMAP                  = 163\n\tSYS_SETRESUID               = 164\n\tSYS_GETRESUID               = 165\n\tSYS_QUERY_MODULE            = 166\n\tSYS_POLL                    = 167\n\tSYS_NFSSERVCTL              = 168\n\tSYS_SETRESGID               = 169\n\tSYS_GETRESGID               = 170\n\tSYS_PRCTL                   = 171\n\tSYS_RT_SIGRETURN            = 172\n\tSYS_RT_SIGACTION            = 173\n\tSYS_RT_SIGPROCMASK          = 174\n\tSYS_RT_SIGPENDING           = 175\n\tSYS_RT_SIGTIMEDWAIT         = 176\n\tSYS_RT_SIGQUEUEINFO         = 177\n\tSYS_RT_SIGSUSPEND           = 178\n\tSYS_PREAD64                 = 179\n\tSYS_PWRITE64                = 180\n\tSYS_CHOWN                   = 181\n\tSYS_GETCWD                  = 182\n\tSYS_CAPGET                  = 183\n\tSYS_CAPSET                  = 184\n\tSYS_SIGALTSTACK             = 185\n\tSYS_SENDFILE                = 186\n\tSYS_GETPMSG                 = 187\n\tSYS_PUTPMSG                 = 188\n\tSYS_VFORK                   = 189\n\tSYS_UGETRLIMIT              = 190\n\tSYS_READAHEAD               = 191\n\tSYS_PCICONFIG_READ          = 198\n\tSYS_PCICONFIG_WRITE         = 199\n\tSYS_PCICONFIG_IOBASE        = 200\n\tSYS_MULTIPLEXER             = 201\n\tSYS_GETDENTS64              = 202\n\tSYS_PIVOT_ROOT              = 203\n\tSYS_MADVISE                 = 205\n\tSYS_MINCORE                 = 206\n\tSYS_GETTID                  = 207\n\tSYS_TKILL                   = 208\n\tSYS_SETXATTR                = 209\n\tSYS_LSETXATTR               = 210\n\tSYS_FSETXATTR               = 211\n\tSYS_GETXATTR                = 212\n\tSYS_LGETXATTR               = 213\n\tSYS_FGETXATTR               = 214\n\tSYS_LISTXATTR               = 215\n\tSYS_LLISTXATTR              = 216\n\tSYS_FLISTXATTR              = 217\n\tSYS_REMOVEXATTR             = 218\n\tSYS_LREMOVEXATTR            = 219\n\tSYS_FREMOVEXATTR            = 220\n\tSYS_FUTEX                   = 221\n\tSYS_SCHED_SETAFFINITY       = 222\n\tSYS_SCHED_GETAFFINITY       = 223\n\tSYS_TUXCALL                 = 225\n\tSYS_IO_SETUP                = 227\n\tSYS_IO_DESTROY              = 228\n\tSYS_IO_GETEVENTS            = 229\n\tSYS_IO_SUBMIT               = 230\n\tSYS_IO_CANCEL               = 231\n\tSYS_SET_TID_ADDRESS         = 232\n\tSYS_FADVISE64               = 233\n\tSYS_EXIT_GROUP              = 234\n\tSYS_LOOKUP_DCOOKIE          = 235\n\tSYS_EPOLL_CREATE            = 236\n\tSYS_EPOLL_CTL               = 237\n\tSYS_EPOLL_WAIT              = 238\n\tSYS_REMAP_FILE_PAGES        = 239\n\tSYS_TIMER_CREATE            = 240\n\tSYS_TIMER_SETTIME           = 241\n\tSYS_TIMER_GETTIME           = 242\n\tSYS_TIMER_GETOVERRUN        = 243\n\tSYS_TIMER_DELETE            = 244\n\tSYS_CLOCK_SETTIME           = 245\n\tSYS_CLOCK_GETTIME           = 246\n\tSYS_CLOCK_GETRES            = 247\n\tSYS_CLOCK_NANOSLEEP         = 248\n\tSYS_SWAPCONTEXT             = 249\n\tSYS_TGKILL                  = 250\n\tSYS_UTIMES                  = 251\n\tSYS_STATFS64                = 252\n\tSYS_FSTATFS64               = 253\n\tSYS_RTAS                    = 255\n\tSYS_SYS_DEBUG_SETCONTEXT    = 256\n\tSYS_MIGRATE_PAGES           = 258\n\tSYS_MBIND                   = 259\n\tSYS_GET_MEMPOLICY           = 260\n\tSYS_SET_MEMPOLICY           = 261\n\tSYS_MQ_OPEN                 = 262\n\tSYS_MQ_UNLINK               = 263\n\tSYS_MQ_TIMEDSEND            = 264\n\tSYS_MQ_TIMEDRECEIVE         = 265\n\tSYS_MQ_NOTIFY               = 266\n\tSYS_MQ_GETSETATTR           = 267\n\tSYS_KEXEC_LOAD              = 268\n\tSYS_ADD_KEY                 = 269\n\tSYS_REQUEST_KEY             = 270\n\tSYS_KEYCTL                  = 271\n\tSYS_WAITID                  = 272\n\tSYS_IOPRIO_SET              = 273\n\tSYS_IOPRIO_GET              = 274\n\tSYS_INOTIFY_INIT            = 275\n\tSYS_INOTIFY_ADD_WATCH       = 276\n\tSYS_INOTIFY_RM_WATCH        = 277\n\tSYS_SPU_RUN                 = 278\n\tSYS_SPU_CREATE              = 279\n\tSYS_PSELECT6                = 280\n\tSYS_PPOLL                   = 281\n\tSYS_UNSHARE                 = 282\n\tSYS_SPLICE                  = 283\n\tSYS_TEE                     = 284\n\tSYS_VMSPLICE                = 285\n\tSYS_OPENAT                  = 286\n\tSYS_MKDIRAT                 = 287\n\tSYS_MKNODAT                 = 288\n\tSYS_FCHOWNAT                = 289\n\tSYS_FUTIMESAT               = 290\n\tSYS_NEWFSTATAT              = 291\n\tSYS_UNLINKAT                = 292\n\tSYS_RENAMEAT                = 293\n\tSYS_LINKAT                  = 294\n\tSYS_SYMLINKAT               = 295\n\tSYS_READLINKAT              = 296\n\tSYS_FCHMODAT                = 297\n\tSYS_FACCESSAT               = 298\n\tSYS_GET_ROBUST_LIST         = 299\n\tSYS_SET_ROBUST_LIST         = 300\n\tSYS_MOVE_PAGES              = 301\n\tSYS_GETCPU                  = 302\n\tSYS_EPOLL_PWAIT             = 303\n\tSYS_UTIMENSAT               = 304\n\tSYS_SIGNALFD                = 305\n\tSYS_TIMERFD_CREATE          = 306\n\tSYS_EVENTFD                 = 307\n\tSYS_SYNC_FILE_RANGE2        = 308\n\tSYS_FALLOCATE               = 309\n\tSYS_SUBPAGE_PROT            = 310\n\tSYS_TIMERFD_SETTIME         = 311\n\tSYS_TIMERFD_GETTIME         = 312\n\tSYS_SIGNALFD4               = 313\n\tSYS_EVENTFD2                = 314\n\tSYS_EPOLL_CREATE1           = 315\n\tSYS_DUP3                    = 316\n\tSYS_PIPE2                   = 317\n\tSYS_INOTIFY_INIT1           = 318\n\tSYS_PERF_EVENT_OPEN         = 319\n\tSYS_PREADV                  = 320\n\tSYS_PWRITEV                 = 321\n\tSYS_RT_TGSIGQUEUEINFO       = 322\n\tSYS_FANOTIFY_INIT           = 323\n\tSYS_FANOTIFY_MARK           = 324\n\tSYS_PRLIMIT64               = 325\n\tSYS_SOCKET                  = 326\n\tSYS_BIND                    = 327\n\tSYS_CONNECT                 = 328\n\tSYS_LISTEN                  = 329\n\tSYS_ACCEPT                  = 330\n\tSYS_GETSOCKNAME             = 331\n\tSYS_GETPEERNAME             = 332\n\tSYS_SOCKETPAIR              = 333\n\tSYS_SEND                    = 334\n\tSYS_SENDTO                  = 335\n\tSYS_RECV                    = 336\n\tSYS_RECVFROM                = 337\n\tSYS_SHUTDOWN                = 338\n\tSYS_SETSOCKOPT              = 339\n\tSYS_GETSOCKOPT              = 340\n\tSYS_SENDMSG                 = 341\n\tSYS_RECVMSG                 = 342\n\tSYS_RECVMMSG                = 343\n\tSYS_ACCEPT4                 = 344\n\tSYS_NAME_TO_HANDLE_AT       = 345\n\tSYS_OPEN_BY_HANDLE_AT       = 346\n\tSYS_CLOCK_ADJTIME           = 347\n\tSYS_SYNCFS                  = 348\n\tSYS_SENDMMSG                = 349\n\tSYS_SETNS                   = 350\n\tSYS_PROCESS_VM_READV        = 351\n\tSYS_PROCESS_VM_WRITEV       = 352\n\tSYS_FINIT_MODULE            = 353\n\tSYS_KCMP                    = 354\n\tSYS_SCHED_SETATTR           = 355\n\tSYS_SCHED_GETATTR           = 356\n\tSYS_RENAMEAT2               = 357\n\tSYS_SECCOMP                 = 358\n\tSYS_GETRANDOM               = 359\n\tSYS_MEMFD_CREATE            = 360\n\tSYS_BPF                     = 361\n\tSYS_EXECVEAT                = 362\n\tSYS_SWITCH_ENDIAN           = 363\n\tSYS_USERFAULTFD             = 364\n\tSYS_MEMBARRIER              = 365\n\tSYS_MLOCK2                  = 378\n\tSYS_COPY_FILE_RANGE         = 379\n\tSYS_PREADV2                 = 380\n\tSYS_PWRITEV2                = 381\n\tSYS_KEXEC_FILE_LOAD         = 382\n\tSYS_STATX                   = 383\n\tSYS_PKEY_ALLOC              = 384\n\tSYS_PKEY_FREE               = 385\n\tSYS_PKEY_MPROTECT           = 386\n\tSYS_RSEQ                    = 387\n\tSYS_IO_PGETEVENTS           = 388\n\tSYS_SEMTIMEDOP              = 392\n\tSYS_SEMGET                  = 393\n\tSYS_SEMCTL                  = 394\n\tSYS_SHMGET                  = 395\n\tSYS_SHMCTL                  = 396\n\tSYS_SHMAT                   = 397\n\tSYS_SHMDT                   = 398\n\tSYS_MSGGET                  = 399\n\tSYS_MSGSND                  = 400\n\tSYS_MSGRCV                  = 401\n\tSYS_MSGCTL                  = 402\n\tSYS_PIDFD_SEND_SIGNAL       = 424\n\tSYS_IO_URING_SETUP          = 425\n\tSYS_IO_URING_ENTER          = 426\n\tSYS_IO_URING_REGISTER       = 427\n\tSYS_OPEN_TREE               = 428\n\tSYS_MOVE_MOUNT              = 429\n\tSYS_FSOPEN                  = 430\n\tSYS_FSCONFIG                = 431\n\tSYS_FSMOUNT                 = 432\n\tSYS_FSPICK                  = 433\n\tSYS_PIDFD_OPEN              = 434\n\tSYS_CLONE3                  = 435\n\tSYS_CLOSE_RANGE             = 436\n\tSYS_OPENAT2                 = 437\n\tSYS_PIDFD_GETFD             = 438\n\tSYS_FACCESSAT2              = 439\n\tSYS_PROCESS_MADVISE         = 440\n\tSYS_EPOLL_PWAIT2            = 441\n\tSYS_MOUNT_SETATTR           = 442\n\tSYS_QUOTACTL_FD             = 443\n\tSYS_LANDLOCK_CREATE_RULESET = 444\n\tSYS_LANDLOCK_ADD_RULE       = 445\n\tSYS_LANDLOCK_RESTRICT_SELF  = 446\n\tSYS_PROCESS_MRELEASE        = 448\n\tSYS_FUTEX_WAITV             = 449\n\tSYS_SET_MEMPOLICY_HOME_NODE = 450\n\tSYS_CACHESTAT               = 451\n\tSYS_FCHMODAT2               = 452\n\tSYS_MAP_SHADOW_STACK        = 453\n\tSYS_FUTEX_WAKE              = 454\n\tSYS_FUTEX_WAIT              = 455\n\tSYS_FUTEX_REQUEUE           = 456\n\tSYS_STATMOUNT               = 457\n\tSYS_LISTMOUNT               = 458\n\tSYS_LSM_GET_SELF_ATTR       = 459\n\tSYS_LSM_SET_SELF_ATTR       = 460\n\tSYS_LSM_LIST_MODULES        = 461\n\tSYS_MSEAL                   = 462\n\tSYS_SETXATTRAT              = 463\n\tSYS_GETXATTRAT              = 464\n\tSYS_LISTXATTRAT             = 465\n\tSYS_REMOVEXATTRAT           = 466\n\tSYS_OPEN_TREE_ATTR          = 467\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/ppc64le/include /tmp/ppc64le/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc64le && linux\n\npackage unix\n\nconst (\n\tSYS_RESTART_SYSCALL         = 0\n\tSYS_EXIT                    = 1\n\tSYS_FORK                    = 2\n\tSYS_READ                    = 3\n\tSYS_WRITE                   = 4\n\tSYS_OPEN                    = 5\n\tSYS_CLOSE                   = 6\n\tSYS_WAITPID                 = 7\n\tSYS_CREAT                   = 8\n\tSYS_LINK                    = 9\n\tSYS_UNLINK                  = 10\n\tSYS_EXECVE                  = 11\n\tSYS_CHDIR                   = 12\n\tSYS_TIME                    = 13\n\tSYS_MKNOD                   = 14\n\tSYS_CHMOD                   = 15\n\tSYS_LCHOWN                  = 16\n\tSYS_BREAK                   = 17\n\tSYS_OLDSTAT                 = 18\n\tSYS_LSEEK                   = 19\n\tSYS_GETPID                  = 20\n\tSYS_MOUNT                   = 21\n\tSYS_UMOUNT                  = 22\n\tSYS_SETUID                  = 23\n\tSYS_GETUID                  = 24\n\tSYS_STIME                   = 25\n\tSYS_PTRACE                  = 26\n\tSYS_ALARM                   = 27\n\tSYS_OLDFSTAT                = 28\n\tSYS_PAUSE                   = 29\n\tSYS_UTIME                   = 30\n\tSYS_STTY                    = 31\n\tSYS_GTTY                    = 32\n\tSYS_ACCESS                  = 33\n\tSYS_NICE                    = 34\n\tSYS_FTIME                   = 35\n\tSYS_SYNC                    = 36\n\tSYS_KILL                    = 37\n\tSYS_RENAME                  = 38\n\tSYS_MKDIR                   = 39\n\tSYS_RMDIR                   = 40\n\tSYS_DUP                     = 41\n\tSYS_PIPE                    = 42\n\tSYS_TIMES                   = 43\n\tSYS_PROF                    = 44\n\tSYS_BRK                     = 45\n\tSYS_SETGID                  = 46\n\tSYS_GETGID                  = 47\n\tSYS_SIGNAL                  = 48\n\tSYS_GETEUID                 = 49\n\tSYS_GETEGID                 = 50\n\tSYS_ACCT                    = 51\n\tSYS_UMOUNT2                 = 52\n\tSYS_LOCK                    = 53\n\tSYS_IOCTL                   = 54\n\tSYS_FCNTL                   = 55\n\tSYS_MPX                     = 56\n\tSYS_SETPGID                 = 57\n\tSYS_ULIMIT                  = 58\n\tSYS_OLDOLDUNAME             = 59\n\tSYS_UMASK                   = 60\n\tSYS_CHROOT                  = 61\n\tSYS_USTAT                   = 62\n\tSYS_DUP2                    = 63\n\tSYS_GETPPID                 = 64\n\tSYS_GETPGRP                 = 65\n\tSYS_SETSID                  = 66\n\tSYS_SIGACTION               = 67\n\tSYS_SGETMASK                = 68\n\tSYS_SSETMASK                = 69\n\tSYS_SETREUID                = 70\n\tSYS_SETREGID                = 71\n\tSYS_SIGSUSPEND              = 72\n\tSYS_SIGPENDING              = 73\n\tSYS_SETHOSTNAME             = 74\n\tSYS_SETRLIMIT               = 75\n\tSYS_GETRLIMIT               = 76\n\tSYS_GETRUSAGE               = 77\n\tSYS_GETTIMEOFDAY            = 78\n\tSYS_SETTIMEOFDAY            = 79\n\tSYS_GETGROUPS               = 80\n\tSYS_SETGROUPS               = 81\n\tSYS_SELECT                  = 82\n\tSYS_SYMLINK                 = 83\n\tSYS_OLDLSTAT                = 84\n\tSYS_READLINK                = 85\n\tSYS_USELIB                  = 86\n\tSYS_SWAPON                  = 87\n\tSYS_REBOOT                  = 88\n\tSYS_READDIR                 = 89\n\tSYS_MMAP                    = 90\n\tSYS_MUNMAP                  = 91\n\tSYS_TRUNCATE                = 92\n\tSYS_FTRUNCATE               = 93\n\tSYS_FCHMOD                  = 94\n\tSYS_FCHOWN                  = 95\n\tSYS_GETPRIORITY             = 96\n\tSYS_SETPRIORITY             = 97\n\tSYS_PROFIL                  = 98\n\tSYS_STATFS                  = 99\n\tSYS_FSTATFS                 = 100\n\tSYS_IOPERM                  = 101\n\tSYS_SOCKETCALL              = 102\n\tSYS_SYSLOG                  = 103\n\tSYS_SETITIMER               = 104\n\tSYS_GETITIMER               = 105\n\tSYS_STAT                    = 106\n\tSYS_LSTAT                   = 107\n\tSYS_FSTAT                   = 108\n\tSYS_OLDUNAME                = 109\n\tSYS_IOPL                    = 110\n\tSYS_VHANGUP                 = 111\n\tSYS_IDLE                    = 112\n\tSYS_VM86                    = 113\n\tSYS_WAIT4                   = 114\n\tSYS_SWAPOFF                 = 115\n\tSYS_SYSINFO                 = 116\n\tSYS_IPC                     = 117\n\tSYS_FSYNC                   = 118\n\tSYS_SIGRETURN               = 119\n\tSYS_CLONE                   = 120\n\tSYS_SETDOMAINNAME           = 121\n\tSYS_UNAME                   = 122\n\tSYS_MODIFY_LDT              = 123\n\tSYS_ADJTIMEX                = 124\n\tSYS_MPROTECT                = 125\n\tSYS_SIGPROCMASK             = 126\n\tSYS_CREATE_MODULE           = 127\n\tSYS_INIT_MODULE             = 128\n\tSYS_DELETE_MODULE           = 129\n\tSYS_GET_KERNEL_SYMS         = 130\n\tSYS_QUOTACTL                = 131\n\tSYS_GETPGID                 = 132\n\tSYS_FCHDIR                  = 133\n\tSYS_BDFLUSH                 = 134\n\tSYS_SYSFS                   = 135\n\tSYS_PERSONALITY             = 136\n\tSYS_AFS_SYSCALL             = 137\n\tSYS_SETFSUID                = 138\n\tSYS_SETFSGID                = 139\n\tSYS__LLSEEK                 = 140\n\tSYS_GETDENTS                = 141\n\tSYS__NEWSELECT              = 142\n\tSYS_FLOCK                   = 143\n\tSYS_MSYNC                   = 144\n\tSYS_READV                   = 145\n\tSYS_WRITEV                  = 146\n\tSYS_GETSID                  = 147\n\tSYS_FDATASYNC               = 148\n\tSYS__SYSCTL                 = 149\n\tSYS_MLOCK                   = 150\n\tSYS_MUNLOCK                 = 151\n\tSYS_MLOCKALL                = 152\n\tSYS_MUNLOCKALL              = 153\n\tSYS_SCHED_SETPARAM          = 154\n\tSYS_SCHED_GETPARAM          = 155\n\tSYS_SCHED_SETSCHEDULER      = 156\n\tSYS_SCHED_GETSCHEDULER      = 157\n\tSYS_SCHED_YIELD             = 158\n\tSYS_SCHED_GET_PRIORITY_MAX  = 159\n\tSYS_SCHED_GET_PRIORITY_MIN  = 160\n\tSYS_SCHED_RR_GET_INTERVAL   = 161\n\tSYS_NANOSLEEP               = 162\n\tSYS_MREMAP                  = 163\n\tSYS_SETRESUID               = 164\n\tSYS_GETRESUID               = 165\n\tSYS_QUERY_MODULE            = 166\n\tSYS_POLL                    = 167\n\tSYS_NFSSERVCTL              = 168\n\tSYS_SETRESGID               = 169\n\tSYS_GETRESGID               = 170\n\tSYS_PRCTL                   = 171\n\tSYS_RT_SIGRETURN            = 172\n\tSYS_RT_SIGACTION            = 173\n\tSYS_RT_SIGPROCMASK          = 174\n\tSYS_RT_SIGPENDING           = 175\n\tSYS_RT_SIGTIMEDWAIT         = 176\n\tSYS_RT_SIGQUEUEINFO         = 177\n\tSYS_RT_SIGSUSPEND           = 178\n\tSYS_PREAD64                 = 179\n\tSYS_PWRITE64                = 180\n\tSYS_CHOWN                   = 181\n\tSYS_GETCWD                  = 182\n\tSYS_CAPGET                  = 183\n\tSYS_CAPSET                  = 184\n\tSYS_SIGALTSTACK             = 185\n\tSYS_SENDFILE                = 186\n\tSYS_GETPMSG                 = 187\n\tSYS_PUTPMSG                 = 188\n\tSYS_VFORK                   = 189\n\tSYS_UGETRLIMIT              = 190\n\tSYS_READAHEAD               = 191\n\tSYS_PCICONFIG_READ          = 198\n\tSYS_PCICONFIG_WRITE         = 199\n\tSYS_PCICONFIG_IOBASE        = 200\n\tSYS_MULTIPLEXER             = 201\n\tSYS_GETDENTS64              = 202\n\tSYS_PIVOT_ROOT              = 203\n\tSYS_MADVISE                 = 205\n\tSYS_MINCORE                 = 206\n\tSYS_GETTID                  = 207\n\tSYS_TKILL                   = 208\n\tSYS_SETXATTR                = 209\n\tSYS_LSETXATTR               = 210\n\tSYS_FSETXATTR               = 211\n\tSYS_GETXATTR                = 212\n\tSYS_LGETXATTR               = 213\n\tSYS_FGETXATTR               = 214\n\tSYS_LISTXATTR               = 215\n\tSYS_LLISTXATTR              = 216\n\tSYS_FLISTXATTR              = 217\n\tSYS_REMOVEXATTR             = 218\n\tSYS_LREMOVEXATTR            = 219\n\tSYS_FREMOVEXATTR            = 220\n\tSYS_FUTEX                   = 221\n\tSYS_SCHED_SETAFFINITY       = 222\n\tSYS_SCHED_GETAFFINITY       = 223\n\tSYS_TUXCALL                 = 225\n\tSYS_IO_SETUP                = 227\n\tSYS_IO_DESTROY              = 228\n\tSYS_IO_GETEVENTS            = 229\n\tSYS_IO_SUBMIT               = 230\n\tSYS_IO_CANCEL               = 231\n\tSYS_SET_TID_ADDRESS         = 232\n\tSYS_FADVISE64               = 233\n\tSYS_EXIT_GROUP              = 234\n\tSYS_LOOKUP_DCOOKIE          = 235\n\tSYS_EPOLL_CREATE            = 236\n\tSYS_EPOLL_CTL               = 237\n\tSYS_EPOLL_WAIT              = 238\n\tSYS_REMAP_FILE_PAGES        = 239\n\tSYS_TIMER_CREATE            = 240\n\tSYS_TIMER_SETTIME           = 241\n\tSYS_TIMER_GETTIME           = 242\n\tSYS_TIMER_GETOVERRUN        = 243\n\tSYS_TIMER_DELETE            = 244\n\tSYS_CLOCK_SETTIME           = 245\n\tSYS_CLOCK_GETTIME           = 246\n\tSYS_CLOCK_GETRES            = 247\n\tSYS_CLOCK_NANOSLEEP         = 248\n\tSYS_SWAPCONTEXT             = 249\n\tSYS_TGKILL                  = 250\n\tSYS_UTIMES                  = 251\n\tSYS_STATFS64                = 252\n\tSYS_FSTATFS64               = 253\n\tSYS_RTAS                    = 255\n\tSYS_SYS_DEBUG_SETCONTEXT    = 256\n\tSYS_MIGRATE_PAGES           = 258\n\tSYS_MBIND                   = 259\n\tSYS_GET_MEMPOLICY           = 260\n\tSYS_SET_MEMPOLICY           = 261\n\tSYS_MQ_OPEN                 = 262\n\tSYS_MQ_UNLINK               = 263\n\tSYS_MQ_TIMEDSEND            = 264\n\tSYS_MQ_TIMEDRECEIVE         = 265\n\tSYS_MQ_NOTIFY               = 266\n\tSYS_MQ_GETSETATTR           = 267\n\tSYS_KEXEC_LOAD              = 268\n\tSYS_ADD_KEY                 = 269\n\tSYS_REQUEST_KEY             = 270\n\tSYS_KEYCTL                  = 271\n\tSYS_WAITID                  = 272\n\tSYS_IOPRIO_SET              = 273\n\tSYS_IOPRIO_GET              = 274\n\tSYS_INOTIFY_INIT            = 275\n\tSYS_INOTIFY_ADD_WATCH       = 276\n\tSYS_INOTIFY_RM_WATCH        = 277\n\tSYS_SPU_RUN                 = 278\n\tSYS_SPU_CREATE              = 279\n\tSYS_PSELECT6                = 280\n\tSYS_PPOLL                   = 281\n\tSYS_UNSHARE                 = 282\n\tSYS_SPLICE                  = 283\n\tSYS_TEE                     = 284\n\tSYS_VMSPLICE                = 285\n\tSYS_OPENAT                  = 286\n\tSYS_MKDIRAT                 = 287\n\tSYS_MKNODAT                 = 288\n\tSYS_FCHOWNAT                = 289\n\tSYS_FUTIMESAT               = 290\n\tSYS_NEWFSTATAT              = 291\n\tSYS_UNLINKAT                = 292\n\tSYS_RENAMEAT                = 293\n\tSYS_LINKAT                  = 294\n\tSYS_SYMLINKAT               = 295\n\tSYS_READLINKAT              = 296\n\tSYS_FCHMODAT                = 297\n\tSYS_FACCESSAT               = 298\n\tSYS_GET_ROBUST_LIST         = 299\n\tSYS_SET_ROBUST_LIST         = 300\n\tSYS_MOVE_PAGES              = 301\n\tSYS_GETCPU                  = 302\n\tSYS_EPOLL_PWAIT             = 303\n\tSYS_UTIMENSAT               = 304\n\tSYS_SIGNALFD                = 305\n\tSYS_TIMERFD_CREATE          = 306\n\tSYS_EVENTFD                 = 307\n\tSYS_SYNC_FILE_RANGE2        = 308\n\tSYS_FALLOCATE               = 309\n\tSYS_SUBPAGE_PROT            = 310\n\tSYS_TIMERFD_SETTIME         = 311\n\tSYS_TIMERFD_GETTIME         = 312\n\tSYS_SIGNALFD4               = 313\n\tSYS_EVENTFD2                = 314\n\tSYS_EPOLL_CREATE1           = 315\n\tSYS_DUP3                    = 316\n\tSYS_PIPE2                   = 317\n\tSYS_INOTIFY_INIT1           = 318\n\tSYS_PERF_EVENT_OPEN         = 319\n\tSYS_PREADV                  = 320\n\tSYS_PWRITEV                 = 321\n\tSYS_RT_TGSIGQUEUEINFO       = 322\n\tSYS_FANOTIFY_INIT           = 323\n\tSYS_FANOTIFY_MARK           = 324\n\tSYS_PRLIMIT64               = 325\n\tSYS_SOCKET                  = 326\n\tSYS_BIND                    = 327\n\tSYS_CONNECT                 = 328\n\tSYS_LISTEN                  = 329\n\tSYS_ACCEPT                  = 330\n\tSYS_GETSOCKNAME             = 331\n\tSYS_GETPEERNAME             = 332\n\tSYS_SOCKETPAIR              = 333\n\tSYS_SEND                    = 334\n\tSYS_SENDTO                  = 335\n\tSYS_RECV                    = 336\n\tSYS_RECVFROM                = 337\n\tSYS_SHUTDOWN                = 338\n\tSYS_SETSOCKOPT              = 339\n\tSYS_GETSOCKOPT              = 340\n\tSYS_SENDMSG                 = 341\n\tSYS_RECVMSG                 = 342\n\tSYS_RECVMMSG                = 343\n\tSYS_ACCEPT4                 = 344\n\tSYS_NAME_TO_HANDLE_AT       = 345\n\tSYS_OPEN_BY_HANDLE_AT       = 346\n\tSYS_CLOCK_ADJTIME           = 347\n\tSYS_SYNCFS                  = 348\n\tSYS_SENDMMSG                = 349\n\tSYS_SETNS                   = 350\n\tSYS_PROCESS_VM_READV        = 351\n\tSYS_PROCESS_VM_WRITEV       = 352\n\tSYS_FINIT_MODULE            = 353\n\tSYS_KCMP                    = 354\n\tSYS_SCHED_SETATTR           = 355\n\tSYS_SCHED_GETATTR           = 356\n\tSYS_RENAMEAT2               = 357\n\tSYS_SECCOMP                 = 358\n\tSYS_GETRANDOM               = 359\n\tSYS_MEMFD_CREATE            = 360\n\tSYS_BPF                     = 361\n\tSYS_EXECVEAT                = 362\n\tSYS_SWITCH_ENDIAN           = 363\n\tSYS_USERFAULTFD             = 364\n\tSYS_MEMBARRIER              = 365\n\tSYS_MLOCK2                  = 378\n\tSYS_COPY_FILE_RANGE         = 379\n\tSYS_PREADV2                 = 380\n\tSYS_PWRITEV2                = 381\n\tSYS_KEXEC_FILE_LOAD         = 382\n\tSYS_STATX                   = 383\n\tSYS_PKEY_ALLOC              = 384\n\tSYS_PKEY_FREE               = 385\n\tSYS_PKEY_MPROTECT           = 386\n\tSYS_RSEQ                    = 387\n\tSYS_IO_PGETEVENTS           = 388\n\tSYS_SEMTIMEDOP              = 392\n\tSYS_SEMGET                  = 393\n\tSYS_SEMCTL                  = 394\n\tSYS_SHMGET                  = 395\n\tSYS_SHMCTL                  = 396\n\tSYS_SHMAT                   = 397\n\tSYS_SHMDT                   = 398\n\tSYS_MSGGET                  = 399\n\tSYS_MSGSND                  = 400\n\tSYS_MSGRCV                  = 401\n\tSYS_MSGCTL                  = 402\n\tSYS_PIDFD_SEND_SIGNAL       = 424\n\tSYS_IO_URING_SETUP          = 425\n\tSYS_IO_URING_ENTER          = 426\n\tSYS_IO_URING_REGISTER       = 427\n\tSYS_OPEN_TREE               = 428\n\tSYS_MOVE_MOUNT              = 429\n\tSYS_FSOPEN                  = 430\n\tSYS_FSCONFIG                = 431\n\tSYS_FSMOUNT                 = 432\n\tSYS_FSPICK                  = 433\n\tSYS_PIDFD_OPEN              = 434\n\tSYS_CLONE3                  = 435\n\tSYS_CLOSE_RANGE             = 436\n\tSYS_OPENAT2                 = 437\n\tSYS_PIDFD_GETFD             = 438\n\tSYS_FACCESSAT2              = 439\n\tSYS_PROCESS_MADVISE         = 440\n\tSYS_EPOLL_PWAIT2            = 441\n\tSYS_MOUNT_SETATTR           = 442\n\tSYS_QUOTACTL_FD             = 443\n\tSYS_LANDLOCK_CREATE_RULESET = 444\n\tSYS_LANDLOCK_ADD_RULE       = 445\n\tSYS_LANDLOCK_RESTRICT_SELF  = 446\n\tSYS_PROCESS_MRELEASE        = 448\n\tSYS_FUTEX_WAITV             = 449\n\tSYS_SET_MEMPOLICY_HOME_NODE = 450\n\tSYS_CACHESTAT               = 451\n\tSYS_FCHMODAT2               = 452\n\tSYS_MAP_SHADOW_STACK        = 453\n\tSYS_FUTEX_WAKE              = 454\n\tSYS_FUTEX_WAIT              = 455\n\tSYS_FUTEX_REQUEUE           = 456\n\tSYS_STATMOUNT               = 457\n\tSYS_LISTMOUNT               = 458\n\tSYS_LSM_GET_SELF_ATTR       = 459\n\tSYS_LSM_SET_SELF_ATTR       = 460\n\tSYS_LSM_LIST_MODULES        = 461\n\tSYS_MSEAL                   = 462\n\tSYS_SETXATTRAT              = 463\n\tSYS_GETXATTRAT              = 464\n\tSYS_LISTXATTRAT             = 465\n\tSYS_REMOVEXATTRAT           = 466\n\tSYS_OPEN_TREE_ATTR          = 467\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/riscv64/include /tmp/riscv64/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build riscv64 && linux\n\npackage unix\n\nconst (\n\tSYS_IO_SETUP                = 0\n\tSYS_IO_DESTROY              = 1\n\tSYS_IO_SUBMIT               = 2\n\tSYS_IO_CANCEL               = 3\n\tSYS_IO_GETEVENTS            = 4\n\tSYS_SETXATTR                = 5\n\tSYS_LSETXATTR               = 6\n\tSYS_FSETXATTR               = 7\n\tSYS_GETXATTR                = 8\n\tSYS_LGETXATTR               = 9\n\tSYS_FGETXATTR               = 10\n\tSYS_LISTXATTR               = 11\n\tSYS_LLISTXATTR              = 12\n\tSYS_FLISTXATTR              = 13\n\tSYS_REMOVEXATTR             = 14\n\tSYS_LREMOVEXATTR            = 15\n\tSYS_FREMOVEXATTR            = 16\n\tSYS_GETCWD                  = 17\n\tSYS_LOOKUP_DCOOKIE          = 18\n\tSYS_EVENTFD2                = 19\n\tSYS_EPOLL_CREATE1           = 20\n\tSYS_EPOLL_CTL               = 21\n\tSYS_EPOLL_PWAIT             = 22\n\tSYS_DUP                     = 23\n\tSYS_DUP3                    = 24\n\tSYS_FCNTL                   = 25\n\tSYS_INOTIFY_INIT1           = 26\n\tSYS_INOTIFY_ADD_WATCH       = 27\n\tSYS_INOTIFY_RM_WATCH        = 28\n\tSYS_IOCTL                   = 29\n\tSYS_IOPRIO_SET              = 30\n\tSYS_IOPRIO_GET              = 31\n\tSYS_FLOCK                   = 32\n\tSYS_MKNODAT                 = 33\n\tSYS_MKDIRAT                 = 34\n\tSYS_UNLINKAT                = 35\n\tSYS_SYMLINKAT               = 36\n\tSYS_LINKAT                  = 37\n\tSYS_UMOUNT2                 = 39\n\tSYS_MOUNT                   = 40\n\tSYS_PIVOT_ROOT              = 41\n\tSYS_NFSSERVCTL              = 42\n\tSYS_STATFS                  = 43\n\tSYS_FSTATFS                 = 44\n\tSYS_TRUNCATE                = 45\n\tSYS_FTRUNCATE               = 46\n\tSYS_FALLOCATE               = 47\n\tSYS_FACCESSAT               = 48\n\tSYS_CHDIR                   = 49\n\tSYS_FCHDIR                  = 50\n\tSYS_CHROOT                  = 51\n\tSYS_FCHMOD                  = 52\n\tSYS_FCHMODAT                = 53\n\tSYS_FCHOWNAT                = 54\n\tSYS_FCHOWN                  = 55\n\tSYS_OPENAT                  = 56\n\tSYS_CLOSE                   = 57\n\tSYS_VHANGUP                 = 58\n\tSYS_PIPE2                   = 59\n\tSYS_QUOTACTL                = 60\n\tSYS_GETDENTS64              = 61\n\tSYS_LSEEK                   = 62\n\tSYS_READ                    = 63\n\tSYS_WRITE                   = 64\n\tSYS_READV                   = 65\n\tSYS_WRITEV                  = 66\n\tSYS_PREAD64                 = 67\n\tSYS_PWRITE64                = 68\n\tSYS_PREADV                  = 69\n\tSYS_PWRITEV                 = 70\n\tSYS_SENDFILE                = 71\n\tSYS_PSELECT6                = 72\n\tSYS_PPOLL                   = 73\n\tSYS_SIGNALFD4               = 74\n\tSYS_VMSPLICE                = 75\n\tSYS_SPLICE                  = 76\n\tSYS_TEE                     = 77\n\tSYS_READLINKAT              = 78\n\tSYS_NEWFSTATAT              = 79\n\tSYS_FSTAT                   = 80\n\tSYS_SYNC                    = 81\n\tSYS_FSYNC                   = 82\n\tSYS_FDATASYNC               = 83\n\tSYS_SYNC_FILE_RANGE         = 84\n\tSYS_TIMERFD_CREATE          = 85\n\tSYS_TIMERFD_SETTIME         = 86\n\tSYS_TIMERFD_GETTIME         = 87\n\tSYS_UTIMENSAT               = 88\n\tSYS_ACCT                    = 89\n\tSYS_CAPGET                  = 90\n\tSYS_CAPSET                  = 91\n\tSYS_PERSONALITY             = 92\n\tSYS_EXIT                    = 93\n\tSYS_EXIT_GROUP              = 94\n\tSYS_WAITID                  = 95\n\tSYS_SET_TID_ADDRESS         = 96\n\tSYS_UNSHARE                 = 97\n\tSYS_FUTEX                   = 98\n\tSYS_SET_ROBUST_LIST         = 99\n\tSYS_GET_ROBUST_LIST         = 100\n\tSYS_NANOSLEEP               = 101\n\tSYS_GETITIMER               = 102\n\tSYS_SETITIMER               = 103\n\tSYS_KEXEC_LOAD              = 104\n\tSYS_INIT_MODULE             = 105\n\tSYS_DELETE_MODULE           = 106\n\tSYS_TIMER_CREATE            = 107\n\tSYS_TIMER_GETTIME           = 108\n\tSYS_TIMER_GETOVERRUN        = 109\n\tSYS_TIMER_SETTIME           = 110\n\tSYS_TIMER_DELETE            = 111\n\tSYS_CLOCK_SETTIME           = 112\n\tSYS_CLOCK_GETTIME           = 113\n\tSYS_CLOCK_GETRES            = 114\n\tSYS_CLOCK_NANOSLEEP         = 115\n\tSYS_SYSLOG                  = 116\n\tSYS_PTRACE                  = 117\n\tSYS_SCHED_SETPARAM          = 118\n\tSYS_SCHED_SETSCHEDULER      = 119\n\tSYS_SCHED_GETSCHEDULER      = 120\n\tSYS_SCHED_GETPARAM          = 121\n\tSYS_SCHED_SETAFFINITY       = 122\n\tSYS_SCHED_GETAFFINITY       = 123\n\tSYS_SCHED_YIELD             = 124\n\tSYS_SCHED_GET_PRIORITY_MAX  = 125\n\tSYS_SCHED_GET_PRIORITY_MIN  = 126\n\tSYS_SCHED_RR_GET_INTERVAL   = 127\n\tSYS_RESTART_SYSCALL         = 128\n\tSYS_KILL                    = 129\n\tSYS_TKILL                   = 130\n\tSYS_TGKILL                  = 131\n\tSYS_SIGALTSTACK             = 132\n\tSYS_RT_SIGSUSPEND           = 133\n\tSYS_RT_SIGACTION            = 134\n\tSYS_RT_SIGPROCMASK          = 135\n\tSYS_RT_SIGPENDING           = 136\n\tSYS_RT_SIGTIMEDWAIT         = 137\n\tSYS_RT_SIGQUEUEINFO         = 138\n\tSYS_RT_SIGRETURN            = 139\n\tSYS_SETPRIORITY             = 140\n\tSYS_GETPRIORITY             = 141\n\tSYS_REBOOT                  = 142\n\tSYS_SETREGID                = 143\n\tSYS_SETGID                  = 144\n\tSYS_SETREUID                = 145\n\tSYS_SETUID                  = 146\n\tSYS_SETRESUID               = 147\n\tSYS_GETRESUID               = 148\n\tSYS_SETRESGID               = 149\n\tSYS_GETRESGID               = 150\n\tSYS_SETFSUID                = 151\n\tSYS_SETFSGID                = 152\n\tSYS_TIMES                   = 153\n\tSYS_SETPGID                 = 154\n\tSYS_GETPGID                 = 155\n\tSYS_GETSID                  = 156\n\tSYS_SETSID                  = 157\n\tSYS_GETGROUPS               = 158\n\tSYS_SETGROUPS               = 159\n\tSYS_UNAME                   = 160\n\tSYS_SETHOSTNAME             = 161\n\tSYS_SETDOMAINNAME           = 162\n\tSYS_GETRLIMIT               = 163\n\tSYS_SETRLIMIT               = 164\n\tSYS_GETRUSAGE               = 165\n\tSYS_UMASK                   = 166\n\tSYS_PRCTL                   = 167\n\tSYS_GETCPU                  = 168\n\tSYS_GETTIMEOFDAY            = 169\n\tSYS_SETTIMEOFDAY            = 170\n\tSYS_ADJTIMEX                = 171\n\tSYS_GETPID                  = 172\n\tSYS_GETPPID                 = 173\n\tSYS_GETUID                  = 174\n\tSYS_GETEUID                 = 175\n\tSYS_GETGID                  = 176\n\tSYS_GETEGID                 = 177\n\tSYS_GETTID                  = 178\n\tSYS_SYSINFO                 = 179\n\tSYS_MQ_OPEN                 = 180\n\tSYS_MQ_UNLINK               = 181\n\tSYS_MQ_TIMEDSEND            = 182\n\tSYS_MQ_TIMEDRECEIVE         = 183\n\tSYS_MQ_NOTIFY               = 184\n\tSYS_MQ_GETSETATTR           = 185\n\tSYS_MSGGET                  = 186\n\tSYS_MSGCTL                  = 187\n\tSYS_MSGRCV                  = 188\n\tSYS_MSGSND                  = 189\n\tSYS_SEMGET                  = 190\n\tSYS_SEMCTL                  = 191\n\tSYS_SEMTIMEDOP              = 192\n\tSYS_SEMOP                   = 193\n\tSYS_SHMGET                  = 194\n\tSYS_SHMCTL                  = 195\n\tSYS_SHMAT                   = 196\n\tSYS_SHMDT                   = 197\n\tSYS_SOCKET                  = 198\n\tSYS_SOCKETPAIR              = 199\n\tSYS_BIND                    = 200\n\tSYS_LISTEN                  = 201\n\tSYS_ACCEPT                  = 202\n\tSYS_CONNECT                 = 203\n\tSYS_GETSOCKNAME             = 204\n\tSYS_GETPEERNAME             = 205\n\tSYS_SENDTO                  = 206\n\tSYS_RECVFROM                = 207\n\tSYS_SETSOCKOPT              = 208\n\tSYS_GETSOCKOPT              = 209\n\tSYS_SHUTDOWN                = 210\n\tSYS_SENDMSG                 = 211\n\tSYS_RECVMSG                 = 212\n\tSYS_READAHEAD               = 213\n\tSYS_BRK                     = 214\n\tSYS_MUNMAP                  = 215\n\tSYS_MREMAP                  = 216\n\tSYS_ADD_KEY                 = 217\n\tSYS_REQUEST_KEY             = 218\n\tSYS_KEYCTL                  = 219\n\tSYS_CLONE                   = 220\n\tSYS_EXECVE                  = 221\n\tSYS_MMAP                    = 222\n\tSYS_FADVISE64               = 223\n\tSYS_SWAPON                  = 224\n\tSYS_SWAPOFF                 = 225\n\tSYS_MPROTECT                = 226\n\tSYS_MSYNC                   = 227\n\tSYS_MLOCK                   = 228\n\tSYS_MUNLOCK                 = 229\n\tSYS_MLOCKALL                = 230\n\tSYS_MUNLOCKALL              = 231\n\tSYS_MINCORE                 = 232\n\tSYS_MADVISE                 = 233\n\tSYS_REMAP_FILE_PAGES        = 234\n\tSYS_MBIND                   = 235\n\tSYS_GET_MEMPOLICY           = 236\n\tSYS_SET_MEMPOLICY           = 237\n\tSYS_MIGRATE_PAGES           = 238\n\tSYS_MOVE_PAGES              = 239\n\tSYS_RT_TGSIGQUEUEINFO       = 240\n\tSYS_PERF_EVENT_OPEN         = 241\n\tSYS_ACCEPT4                 = 242\n\tSYS_RECVMMSG                = 243\n\tSYS_ARCH_SPECIFIC_SYSCALL   = 244\n\tSYS_RISCV_HWPROBE           = 258\n\tSYS_RISCV_FLUSH_ICACHE      = 259\n\tSYS_WAIT4                   = 260\n\tSYS_PRLIMIT64               = 261\n\tSYS_FANOTIFY_INIT           = 262\n\tSYS_FANOTIFY_MARK           = 263\n\tSYS_NAME_TO_HANDLE_AT       = 264\n\tSYS_OPEN_BY_HANDLE_AT       = 265\n\tSYS_CLOCK_ADJTIME           = 266\n\tSYS_SYNCFS                  = 267\n\tSYS_SETNS                   = 268\n\tSYS_SENDMMSG                = 269\n\tSYS_PROCESS_VM_READV        = 270\n\tSYS_PROCESS_VM_WRITEV       = 271\n\tSYS_KCMP                    = 272\n\tSYS_FINIT_MODULE            = 273\n\tSYS_SCHED_SETATTR           = 274\n\tSYS_SCHED_GETATTR           = 275\n\tSYS_RENAMEAT2               = 276\n\tSYS_SECCOMP                 = 277\n\tSYS_GETRANDOM               = 278\n\tSYS_MEMFD_CREATE            = 279\n\tSYS_BPF                     = 280\n\tSYS_EXECVEAT                = 281\n\tSYS_USERFAULTFD             = 282\n\tSYS_MEMBARRIER              = 283\n\tSYS_MLOCK2                  = 284\n\tSYS_COPY_FILE_RANGE         = 285\n\tSYS_PREADV2                 = 286\n\tSYS_PWRITEV2                = 287\n\tSYS_PKEY_MPROTECT           = 288\n\tSYS_PKEY_ALLOC              = 289\n\tSYS_PKEY_FREE               = 290\n\tSYS_STATX                   = 291\n\tSYS_IO_PGETEVENTS           = 292\n\tSYS_RSEQ                    = 293\n\tSYS_KEXEC_FILE_LOAD         = 294\n\tSYS_PIDFD_SEND_SIGNAL       = 424\n\tSYS_IO_URING_SETUP          = 425\n\tSYS_IO_URING_ENTER          = 426\n\tSYS_IO_URING_REGISTER       = 427\n\tSYS_OPEN_TREE               = 428\n\tSYS_MOVE_MOUNT              = 429\n\tSYS_FSOPEN                  = 430\n\tSYS_FSCONFIG                = 431\n\tSYS_FSMOUNT                 = 432\n\tSYS_FSPICK                  = 433\n\tSYS_PIDFD_OPEN              = 434\n\tSYS_CLONE3                  = 435\n\tSYS_CLOSE_RANGE             = 436\n\tSYS_OPENAT2                 = 437\n\tSYS_PIDFD_GETFD             = 438\n\tSYS_FACCESSAT2              = 439\n\tSYS_PROCESS_MADVISE         = 440\n\tSYS_EPOLL_PWAIT2            = 441\n\tSYS_MOUNT_SETATTR           = 442\n\tSYS_QUOTACTL_FD             = 443\n\tSYS_LANDLOCK_CREATE_RULESET = 444\n\tSYS_LANDLOCK_ADD_RULE       = 445\n\tSYS_LANDLOCK_RESTRICT_SELF  = 446\n\tSYS_MEMFD_SECRET            = 447\n\tSYS_PROCESS_MRELEASE        = 448\n\tSYS_FUTEX_WAITV             = 449\n\tSYS_SET_MEMPOLICY_HOME_NODE = 450\n\tSYS_CACHESTAT               = 451\n\tSYS_FCHMODAT2               = 452\n\tSYS_MAP_SHADOW_STACK        = 453\n\tSYS_FUTEX_WAKE              = 454\n\tSYS_FUTEX_WAIT              = 455\n\tSYS_FUTEX_REQUEUE           = 456\n\tSYS_STATMOUNT               = 457\n\tSYS_LISTMOUNT               = 458\n\tSYS_LSM_GET_SELF_ATTR       = 459\n\tSYS_LSM_SET_SELF_ATTR       = 460\n\tSYS_LSM_LIST_MODULES        = 461\n\tSYS_MSEAL                   = 462\n\tSYS_SETXATTRAT              = 463\n\tSYS_GETXATTRAT              = 464\n\tSYS_LISTXATTRAT             = 465\n\tSYS_REMOVEXATTRAT           = 466\n\tSYS_OPEN_TREE_ATTR          = 467\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/s390x/include -fsigned-char /tmp/s390x/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build s390x && linux\n\npackage unix\n\nconst (\n\tSYS_EXIT                    = 1\n\tSYS_FORK                    = 2\n\tSYS_READ                    = 3\n\tSYS_WRITE                   = 4\n\tSYS_OPEN                    = 5\n\tSYS_CLOSE                   = 6\n\tSYS_RESTART_SYSCALL         = 7\n\tSYS_CREAT                   = 8\n\tSYS_LINK                    = 9\n\tSYS_UNLINK                  = 10\n\tSYS_EXECVE                  = 11\n\tSYS_CHDIR                   = 12\n\tSYS_MKNOD                   = 14\n\tSYS_CHMOD                   = 15\n\tSYS_LSEEK                   = 19\n\tSYS_GETPID                  = 20\n\tSYS_MOUNT                   = 21\n\tSYS_UMOUNT                  = 22\n\tSYS_PTRACE                  = 26\n\tSYS_ALARM                   = 27\n\tSYS_PAUSE                   = 29\n\tSYS_UTIME                   = 30\n\tSYS_ACCESS                  = 33\n\tSYS_NICE                    = 34\n\tSYS_SYNC                    = 36\n\tSYS_KILL                    = 37\n\tSYS_RENAME                  = 38\n\tSYS_MKDIR                   = 39\n\tSYS_RMDIR                   = 40\n\tSYS_DUP                     = 41\n\tSYS_PIPE                    = 42\n\tSYS_TIMES                   = 43\n\tSYS_BRK                     = 45\n\tSYS_SIGNAL                  = 48\n\tSYS_ACCT                    = 51\n\tSYS_UMOUNT2                 = 52\n\tSYS_IOCTL                   = 54\n\tSYS_FCNTL                   = 55\n\tSYS_SETPGID                 = 57\n\tSYS_UMASK                   = 60\n\tSYS_CHROOT                  = 61\n\tSYS_USTAT                   = 62\n\tSYS_DUP2                    = 63\n\tSYS_GETPPID                 = 64\n\tSYS_GETPGRP                 = 65\n\tSYS_SETSID                  = 66\n\tSYS_SIGACTION               = 67\n\tSYS_SIGSUSPEND              = 72\n\tSYS_SIGPENDING              = 73\n\tSYS_SETHOSTNAME             = 74\n\tSYS_SETRLIMIT               = 75\n\tSYS_GETRUSAGE               = 77\n\tSYS_GETTIMEOFDAY            = 78\n\tSYS_SETTIMEOFDAY            = 79\n\tSYS_SYMLINK                 = 83\n\tSYS_READLINK                = 85\n\tSYS_USELIB                  = 86\n\tSYS_SWAPON                  = 87\n\tSYS_REBOOT                  = 88\n\tSYS_READDIR                 = 89\n\tSYS_MMAP                    = 90\n\tSYS_MUNMAP                  = 91\n\tSYS_TRUNCATE                = 92\n\tSYS_FTRUNCATE               = 93\n\tSYS_FCHMOD                  = 94\n\tSYS_GETPRIORITY             = 96\n\tSYS_SETPRIORITY             = 97\n\tSYS_STATFS                  = 99\n\tSYS_FSTATFS                 = 100\n\tSYS_SOCKETCALL              = 102\n\tSYS_SYSLOG                  = 103\n\tSYS_SETITIMER               = 104\n\tSYS_GETITIMER               = 105\n\tSYS_STAT                    = 106\n\tSYS_LSTAT                   = 107\n\tSYS_FSTAT                   = 108\n\tSYS_LOOKUP_DCOOKIE          = 110\n\tSYS_VHANGUP                 = 111\n\tSYS_IDLE                    = 112\n\tSYS_WAIT4                   = 114\n\tSYS_SWAPOFF                 = 115\n\tSYS_SYSINFO                 = 116\n\tSYS_IPC                     = 117\n\tSYS_FSYNC                   = 118\n\tSYS_SIGRETURN               = 119\n\tSYS_CLONE                   = 120\n\tSYS_SETDOMAINNAME           = 121\n\tSYS_UNAME                   = 122\n\tSYS_ADJTIMEX                = 124\n\tSYS_MPROTECT                = 125\n\tSYS_SIGPROCMASK             = 126\n\tSYS_CREATE_MODULE           = 127\n\tSYS_INIT_MODULE             = 128\n\tSYS_DELETE_MODULE           = 129\n\tSYS_GET_KERNEL_SYMS         = 130\n\tSYS_QUOTACTL                = 131\n\tSYS_GETPGID                 = 132\n\tSYS_FCHDIR                  = 133\n\tSYS_BDFLUSH                 = 134\n\tSYS_SYSFS                   = 135\n\tSYS_PERSONALITY             = 136\n\tSYS_AFS_SYSCALL             = 137\n\tSYS_GETDENTS                = 141\n\tSYS_SELECT                  = 142\n\tSYS_FLOCK                   = 143\n\tSYS_MSYNC                   = 144\n\tSYS_READV                   = 145\n\tSYS_WRITEV                  = 146\n\tSYS_GETSID                  = 147\n\tSYS_FDATASYNC               = 148\n\tSYS__SYSCTL                 = 149\n\tSYS_MLOCK                   = 150\n\tSYS_MUNLOCK                 = 151\n\tSYS_MLOCKALL                = 152\n\tSYS_MUNLOCKALL              = 153\n\tSYS_SCHED_SETPARAM          = 154\n\tSYS_SCHED_GETPARAM          = 155\n\tSYS_SCHED_SETSCHEDULER      = 156\n\tSYS_SCHED_GETSCHEDULER      = 157\n\tSYS_SCHED_YIELD             = 158\n\tSYS_SCHED_GET_PRIORITY_MAX  = 159\n\tSYS_SCHED_GET_PRIORITY_MIN  = 160\n\tSYS_SCHED_RR_GET_INTERVAL   = 161\n\tSYS_NANOSLEEP               = 162\n\tSYS_MREMAP                  = 163\n\tSYS_QUERY_MODULE            = 167\n\tSYS_POLL                    = 168\n\tSYS_NFSSERVCTL              = 169\n\tSYS_PRCTL                   = 172\n\tSYS_RT_SIGRETURN            = 173\n\tSYS_RT_SIGACTION            = 174\n\tSYS_RT_SIGPROCMASK          = 175\n\tSYS_RT_SIGPENDING           = 176\n\tSYS_RT_SIGTIMEDWAIT         = 177\n\tSYS_RT_SIGQUEUEINFO         = 178\n\tSYS_RT_SIGSUSPEND           = 179\n\tSYS_PREAD64                 = 180\n\tSYS_PWRITE64                = 181\n\tSYS_GETCWD                  = 183\n\tSYS_CAPGET                  = 184\n\tSYS_CAPSET                  = 185\n\tSYS_SIGALTSTACK             = 186\n\tSYS_SENDFILE                = 187\n\tSYS_GETPMSG                 = 188\n\tSYS_PUTPMSG                 = 189\n\tSYS_VFORK                   = 190\n\tSYS_GETRLIMIT               = 191\n\tSYS_LCHOWN                  = 198\n\tSYS_GETUID                  = 199\n\tSYS_GETGID                  = 200\n\tSYS_GETEUID                 = 201\n\tSYS_GETEGID                 = 202\n\tSYS_SETREUID                = 203\n\tSYS_SETREGID                = 204\n\tSYS_GETGROUPS               = 205\n\tSYS_SETGROUPS               = 206\n\tSYS_FCHOWN                  = 207\n\tSYS_SETRESUID               = 208\n\tSYS_GETRESUID               = 209\n\tSYS_SETRESGID               = 210\n\tSYS_GETRESGID               = 211\n\tSYS_CHOWN                   = 212\n\tSYS_SETUID                  = 213\n\tSYS_SETGID                  = 214\n\tSYS_SETFSUID                = 215\n\tSYS_SETFSGID                = 216\n\tSYS_PIVOT_ROOT              = 217\n\tSYS_MINCORE                 = 218\n\tSYS_MADVISE                 = 219\n\tSYS_GETDENTS64              = 220\n\tSYS_READAHEAD               = 222\n\tSYS_SETXATTR                = 224\n\tSYS_LSETXATTR               = 225\n\tSYS_FSETXATTR               = 226\n\tSYS_GETXATTR                = 227\n\tSYS_LGETXATTR               = 228\n\tSYS_FGETXATTR               = 229\n\tSYS_LISTXATTR               = 230\n\tSYS_LLISTXATTR              = 231\n\tSYS_FLISTXATTR              = 232\n\tSYS_REMOVEXATTR             = 233\n\tSYS_LREMOVEXATTR            = 234\n\tSYS_FREMOVEXATTR            = 235\n\tSYS_GETTID                  = 236\n\tSYS_TKILL                   = 237\n\tSYS_FUTEX                   = 238\n\tSYS_SCHED_SETAFFINITY       = 239\n\tSYS_SCHED_GETAFFINITY       = 240\n\tSYS_TGKILL                  = 241\n\tSYS_IO_SETUP                = 243\n\tSYS_IO_DESTROY              = 244\n\tSYS_IO_GETEVENTS            = 245\n\tSYS_IO_SUBMIT               = 246\n\tSYS_IO_CANCEL               = 247\n\tSYS_EXIT_GROUP              = 248\n\tSYS_EPOLL_CREATE            = 249\n\tSYS_EPOLL_CTL               = 250\n\tSYS_EPOLL_WAIT              = 251\n\tSYS_SET_TID_ADDRESS         = 252\n\tSYS_FADVISE64               = 253\n\tSYS_TIMER_CREATE            = 254\n\tSYS_TIMER_SETTIME           = 255\n\tSYS_TIMER_GETTIME           = 256\n\tSYS_TIMER_GETOVERRUN        = 257\n\tSYS_TIMER_DELETE            = 258\n\tSYS_CLOCK_SETTIME           = 259\n\tSYS_CLOCK_GETTIME           = 260\n\tSYS_CLOCK_GETRES            = 261\n\tSYS_CLOCK_NANOSLEEP         = 262\n\tSYS_STATFS64                = 265\n\tSYS_FSTATFS64               = 266\n\tSYS_REMAP_FILE_PAGES        = 267\n\tSYS_MBIND                   = 268\n\tSYS_GET_MEMPOLICY           = 269\n\tSYS_SET_MEMPOLICY           = 270\n\tSYS_MQ_OPEN                 = 271\n\tSYS_MQ_UNLINK               = 272\n\tSYS_MQ_TIMEDSEND            = 273\n\tSYS_MQ_TIMEDRECEIVE         = 274\n\tSYS_MQ_NOTIFY               = 275\n\tSYS_MQ_GETSETATTR           = 276\n\tSYS_KEXEC_LOAD              = 277\n\tSYS_ADD_KEY                 = 278\n\tSYS_REQUEST_KEY             = 279\n\tSYS_KEYCTL                  = 280\n\tSYS_WAITID                  = 281\n\tSYS_IOPRIO_SET              = 282\n\tSYS_IOPRIO_GET              = 283\n\tSYS_INOTIFY_INIT            = 284\n\tSYS_INOTIFY_ADD_WATCH       = 285\n\tSYS_INOTIFY_RM_WATCH        = 286\n\tSYS_MIGRATE_PAGES           = 287\n\tSYS_OPENAT                  = 288\n\tSYS_MKDIRAT                 = 289\n\tSYS_MKNODAT                 = 290\n\tSYS_FCHOWNAT                = 291\n\tSYS_FUTIMESAT               = 292\n\tSYS_NEWFSTATAT              = 293\n\tSYS_UNLINKAT                = 294\n\tSYS_RENAMEAT                = 295\n\tSYS_LINKAT                  = 296\n\tSYS_SYMLINKAT               = 297\n\tSYS_READLINKAT              = 298\n\tSYS_FCHMODAT                = 299\n\tSYS_FACCESSAT               = 300\n\tSYS_PSELECT6                = 301\n\tSYS_PPOLL                   = 302\n\tSYS_UNSHARE                 = 303\n\tSYS_SET_ROBUST_LIST         = 304\n\tSYS_GET_ROBUST_LIST         = 305\n\tSYS_SPLICE                  = 306\n\tSYS_SYNC_FILE_RANGE         = 307\n\tSYS_TEE                     = 308\n\tSYS_VMSPLICE                = 309\n\tSYS_MOVE_PAGES              = 310\n\tSYS_GETCPU                  = 311\n\tSYS_EPOLL_PWAIT             = 312\n\tSYS_UTIMES                  = 313\n\tSYS_FALLOCATE               = 314\n\tSYS_UTIMENSAT               = 315\n\tSYS_SIGNALFD                = 316\n\tSYS_TIMERFD                 = 317\n\tSYS_EVENTFD                 = 318\n\tSYS_TIMERFD_CREATE          = 319\n\tSYS_TIMERFD_SETTIME         = 320\n\tSYS_TIMERFD_GETTIME         = 321\n\tSYS_SIGNALFD4               = 322\n\tSYS_EVENTFD2                = 323\n\tSYS_INOTIFY_INIT1           = 324\n\tSYS_PIPE2                   = 325\n\tSYS_DUP3                    = 326\n\tSYS_EPOLL_CREATE1           = 327\n\tSYS_PREADV                  = 328\n\tSYS_PWRITEV                 = 329\n\tSYS_RT_TGSIGQUEUEINFO       = 330\n\tSYS_PERF_EVENT_OPEN         = 331\n\tSYS_FANOTIFY_INIT           = 332\n\tSYS_FANOTIFY_MARK           = 333\n\tSYS_PRLIMIT64               = 334\n\tSYS_NAME_TO_HANDLE_AT       = 335\n\tSYS_OPEN_BY_HANDLE_AT       = 336\n\tSYS_CLOCK_ADJTIME           = 337\n\tSYS_SYNCFS                  = 338\n\tSYS_SETNS                   = 339\n\tSYS_PROCESS_VM_READV        = 340\n\tSYS_PROCESS_VM_WRITEV       = 341\n\tSYS_S390_RUNTIME_INSTR      = 342\n\tSYS_KCMP                    = 343\n\tSYS_FINIT_MODULE            = 344\n\tSYS_SCHED_SETATTR           = 345\n\tSYS_SCHED_GETATTR           = 346\n\tSYS_RENAMEAT2               = 347\n\tSYS_SECCOMP                 = 348\n\tSYS_GETRANDOM               = 349\n\tSYS_MEMFD_CREATE            = 350\n\tSYS_BPF                     = 351\n\tSYS_S390_PCI_MMIO_WRITE     = 352\n\tSYS_S390_PCI_MMIO_READ      = 353\n\tSYS_EXECVEAT                = 354\n\tSYS_USERFAULTFD             = 355\n\tSYS_MEMBARRIER              = 356\n\tSYS_RECVMMSG                = 357\n\tSYS_SENDMMSG                = 358\n\tSYS_SOCKET                  = 359\n\tSYS_SOCKETPAIR              = 360\n\tSYS_BIND                    = 361\n\tSYS_CONNECT                 = 362\n\tSYS_LISTEN                  = 363\n\tSYS_ACCEPT4                 = 364\n\tSYS_GETSOCKOPT              = 365\n\tSYS_SETSOCKOPT              = 366\n\tSYS_GETSOCKNAME             = 367\n\tSYS_GETPEERNAME             = 368\n\tSYS_SENDTO                  = 369\n\tSYS_SENDMSG                 = 370\n\tSYS_RECVFROM                = 371\n\tSYS_RECVMSG                 = 372\n\tSYS_SHUTDOWN                = 373\n\tSYS_MLOCK2                  = 374\n\tSYS_COPY_FILE_RANGE         = 375\n\tSYS_PREADV2                 = 376\n\tSYS_PWRITEV2                = 377\n\tSYS_S390_GUARDED_STORAGE    = 378\n\tSYS_STATX                   = 379\n\tSYS_S390_STHYI              = 380\n\tSYS_KEXEC_FILE_LOAD         = 381\n\tSYS_IO_PGETEVENTS           = 382\n\tSYS_RSEQ                    = 383\n\tSYS_PKEY_MPROTECT           = 384\n\tSYS_PKEY_ALLOC              = 385\n\tSYS_PKEY_FREE               = 386\n\tSYS_SEMTIMEDOP              = 392\n\tSYS_SEMGET                  = 393\n\tSYS_SEMCTL                  = 394\n\tSYS_SHMGET                  = 395\n\tSYS_SHMCTL                  = 396\n\tSYS_SHMAT                   = 397\n\tSYS_SHMDT                   = 398\n\tSYS_MSGGET                  = 399\n\tSYS_MSGSND                  = 400\n\tSYS_MSGRCV                  = 401\n\tSYS_MSGCTL                  = 402\n\tSYS_PIDFD_SEND_SIGNAL       = 424\n\tSYS_IO_URING_SETUP          = 425\n\tSYS_IO_URING_ENTER          = 426\n\tSYS_IO_URING_REGISTER       = 427\n\tSYS_OPEN_TREE               = 428\n\tSYS_MOVE_MOUNT              = 429\n\tSYS_FSOPEN                  = 430\n\tSYS_FSCONFIG                = 431\n\tSYS_FSMOUNT                 = 432\n\tSYS_FSPICK                  = 433\n\tSYS_PIDFD_OPEN              = 434\n\tSYS_CLONE3                  = 435\n\tSYS_CLOSE_RANGE             = 436\n\tSYS_OPENAT2                 = 437\n\tSYS_PIDFD_GETFD             = 438\n\tSYS_FACCESSAT2              = 439\n\tSYS_PROCESS_MADVISE         = 440\n\tSYS_EPOLL_PWAIT2            = 441\n\tSYS_MOUNT_SETATTR           = 442\n\tSYS_QUOTACTL_FD             = 443\n\tSYS_LANDLOCK_CREATE_RULESET = 444\n\tSYS_LANDLOCK_ADD_RULE       = 445\n\tSYS_LANDLOCK_RESTRICT_SELF  = 446\n\tSYS_MEMFD_SECRET            = 447\n\tSYS_PROCESS_MRELEASE        = 448\n\tSYS_FUTEX_WAITV             = 449\n\tSYS_SET_MEMPOLICY_HOME_NODE = 450\n\tSYS_CACHESTAT               = 451\n\tSYS_FCHMODAT2               = 452\n\tSYS_MAP_SHADOW_STACK        = 453\n\tSYS_FUTEX_WAKE              = 454\n\tSYS_FUTEX_WAIT              = 455\n\tSYS_FUTEX_REQUEUE           = 456\n\tSYS_STATMOUNT               = 457\n\tSYS_LISTMOUNT               = 458\n\tSYS_LSM_GET_SELF_ATTR       = 459\n\tSYS_LSM_SET_SELF_ATTR       = 460\n\tSYS_LSM_LIST_MODULES        = 461\n\tSYS_MSEAL                   = 462\n\tSYS_SETXATTRAT              = 463\n\tSYS_GETXATTRAT              = 464\n\tSYS_LISTXATTRAT             = 465\n\tSYS_REMOVEXATTRAT           = 466\n\tSYS_OPEN_TREE_ATTR          = 467\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/sparc64/include /tmp/sparc64/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build sparc64 && linux\n\npackage unix\n\nconst (\n\tSYS_RESTART_SYSCALL         = 0\n\tSYS_EXIT                    = 1\n\tSYS_FORK                    = 2\n\tSYS_READ                    = 3\n\tSYS_WRITE                   = 4\n\tSYS_OPEN                    = 5\n\tSYS_CLOSE                   = 6\n\tSYS_WAIT4                   = 7\n\tSYS_CREAT                   = 8\n\tSYS_LINK                    = 9\n\tSYS_UNLINK                  = 10\n\tSYS_EXECV                   = 11\n\tSYS_CHDIR                   = 12\n\tSYS_CHOWN                   = 13\n\tSYS_MKNOD                   = 14\n\tSYS_CHMOD                   = 15\n\tSYS_LCHOWN                  = 16\n\tSYS_BRK                     = 17\n\tSYS_PERFCTR                 = 18\n\tSYS_LSEEK                   = 19\n\tSYS_GETPID                  = 20\n\tSYS_CAPGET                  = 21\n\tSYS_CAPSET                  = 22\n\tSYS_SETUID                  = 23\n\tSYS_GETUID                  = 24\n\tSYS_VMSPLICE                = 25\n\tSYS_PTRACE                  = 26\n\tSYS_ALARM                   = 27\n\tSYS_SIGALTSTACK             = 28\n\tSYS_PAUSE                   = 29\n\tSYS_UTIME                   = 30\n\tSYS_ACCESS                  = 33\n\tSYS_NICE                    = 34\n\tSYS_SYNC                    = 36\n\tSYS_KILL                    = 37\n\tSYS_STAT                    = 38\n\tSYS_SENDFILE                = 39\n\tSYS_LSTAT                   = 40\n\tSYS_DUP                     = 41\n\tSYS_PIPE                    = 42\n\tSYS_TIMES                   = 43\n\tSYS_UMOUNT2                 = 45\n\tSYS_SETGID                  = 46\n\tSYS_GETGID                  = 47\n\tSYS_SIGNAL                  = 48\n\tSYS_GETEUID                 = 49\n\tSYS_GETEGID                 = 50\n\tSYS_ACCT                    = 51\n\tSYS_MEMORY_ORDERING         = 52\n\tSYS_IOCTL                   = 54\n\tSYS_REBOOT                  = 55\n\tSYS_SYMLINK                 = 57\n\tSYS_READLINK                = 58\n\tSYS_EXECVE                  = 59\n\tSYS_UMASK                   = 60\n\tSYS_CHROOT                  = 61\n\tSYS_FSTAT                   = 62\n\tSYS_FSTAT64                 = 63\n\tSYS_GETPAGESIZE             = 64\n\tSYS_MSYNC                   = 65\n\tSYS_VFORK                   = 66\n\tSYS_PREAD64                 = 67\n\tSYS_PWRITE64                = 68\n\tSYS_MMAP                    = 71\n\tSYS_MUNMAP                  = 73\n\tSYS_MPROTECT                = 74\n\tSYS_MADVISE                 = 75\n\tSYS_VHANGUP                 = 76\n\tSYS_MINCORE                 = 78\n\tSYS_GETGROUPS               = 79\n\tSYS_SETGROUPS               = 80\n\tSYS_GETPGRP                 = 81\n\tSYS_SETITIMER               = 83\n\tSYS_SWAPON                  = 85\n\tSYS_GETITIMER               = 86\n\tSYS_SETHOSTNAME             = 88\n\tSYS_DUP2                    = 90\n\tSYS_FCNTL                   = 92\n\tSYS_SELECT                  = 93\n\tSYS_FSYNC                   = 95\n\tSYS_SETPRIORITY             = 96\n\tSYS_SOCKET                  = 97\n\tSYS_CONNECT                 = 98\n\tSYS_ACCEPT                  = 99\n\tSYS_GETPRIORITY             = 100\n\tSYS_RT_SIGRETURN            = 101\n\tSYS_RT_SIGACTION            = 102\n\tSYS_RT_SIGPROCMASK          = 103\n\tSYS_RT_SIGPENDING           = 104\n\tSYS_RT_SIGTIMEDWAIT         = 105\n\tSYS_RT_SIGQUEUEINFO         = 106\n\tSYS_RT_SIGSUSPEND           = 107\n\tSYS_SETRESUID               = 108\n\tSYS_GETRESUID               = 109\n\tSYS_SETRESGID               = 110\n\tSYS_GETRESGID               = 111\n\tSYS_RECVMSG                 = 113\n\tSYS_SENDMSG                 = 114\n\tSYS_GETTIMEOFDAY            = 116\n\tSYS_GETRUSAGE               = 117\n\tSYS_GETSOCKOPT              = 118\n\tSYS_GETCWD                  = 119\n\tSYS_READV                   = 120\n\tSYS_WRITEV                  = 121\n\tSYS_SETTIMEOFDAY            = 122\n\tSYS_FCHOWN                  = 123\n\tSYS_FCHMOD                  = 124\n\tSYS_RECVFROM                = 125\n\tSYS_SETREUID                = 126\n\tSYS_SETREGID                = 127\n\tSYS_RENAME                  = 128\n\tSYS_TRUNCATE                = 129\n\tSYS_FTRUNCATE               = 130\n\tSYS_FLOCK                   = 131\n\tSYS_LSTAT64                 = 132\n\tSYS_SENDTO                  = 133\n\tSYS_SHUTDOWN                = 134\n\tSYS_SOCKETPAIR              = 135\n\tSYS_MKDIR                   = 136\n\tSYS_RMDIR                   = 137\n\tSYS_UTIMES                  = 138\n\tSYS_STAT64                  = 139\n\tSYS_SENDFILE64              = 140\n\tSYS_GETPEERNAME             = 141\n\tSYS_FUTEX                   = 142\n\tSYS_GETTID                  = 143\n\tSYS_GETRLIMIT               = 144\n\tSYS_SETRLIMIT               = 145\n\tSYS_PIVOT_ROOT              = 146\n\tSYS_PRCTL                   = 147\n\tSYS_PCICONFIG_READ          = 148\n\tSYS_PCICONFIG_WRITE         = 149\n\tSYS_GETSOCKNAME             = 150\n\tSYS_INOTIFY_INIT            = 151\n\tSYS_INOTIFY_ADD_WATCH       = 152\n\tSYS_POLL                    = 153\n\tSYS_GETDENTS64              = 154\n\tSYS_INOTIFY_RM_WATCH        = 156\n\tSYS_STATFS                  = 157\n\tSYS_FSTATFS                 = 158\n\tSYS_UMOUNT                  = 159\n\tSYS_SCHED_SET_AFFINITY      = 160\n\tSYS_SCHED_GET_AFFINITY      = 161\n\tSYS_GETDOMAINNAME           = 162\n\tSYS_SETDOMAINNAME           = 163\n\tSYS_UTRAP_INSTALL           = 164\n\tSYS_QUOTACTL                = 165\n\tSYS_SET_TID_ADDRESS         = 166\n\tSYS_MOUNT                   = 167\n\tSYS_USTAT                   = 168\n\tSYS_SETXATTR                = 169\n\tSYS_LSETXATTR               = 170\n\tSYS_FSETXATTR               = 171\n\tSYS_GETXATTR                = 172\n\tSYS_LGETXATTR               = 173\n\tSYS_GETDENTS                = 174\n\tSYS_SETSID                  = 175\n\tSYS_FCHDIR                  = 176\n\tSYS_FGETXATTR               = 177\n\tSYS_LISTXATTR               = 178\n\tSYS_LLISTXATTR              = 179\n\tSYS_FLISTXATTR              = 180\n\tSYS_REMOVEXATTR             = 181\n\tSYS_LREMOVEXATTR            = 182\n\tSYS_SIGPENDING              = 183\n\tSYS_QUERY_MODULE            = 184\n\tSYS_SETPGID                 = 185\n\tSYS_FREMOVEXATTR            = 186\n\tSYS_TKILL                   = 187\n\tSYS_EXIT_GROUP              = 188\n\tSYS_UNAME                   = 189\n\tSYS_INIT_MODULE             = 190\n\tSYS_PERSONALITY             = 191\n\tSYS_REMAP_FILE_PAGES        = 192\n\tSYS_EPOLL_CREATE            = 193\n\tSYS_EPOLL_CTL               = 194\n\tSYS_EPOLL_WAIT              = 195\n\tSYS_IOPRIO_SET              = 196\n\tSYS_GETPPID                 = 197\n\tSYS_SIGACTION               = 198\n\tSYS_SGETMASK                = 199\n\tSYS_SSETMASK                = 200\n\tSYS_SIGSUSPEND              = 201\n\tSYS_OLDLSTAT                = 202\n\tSYS_USELIB                  = 203\n\tSYS_READDIR                 = 204\n\tSYS_READAHEAD               = 205\n\tSYS_SOCKETCALL              = 206\n\tSYS_SYSLOG                  = 207\n\tSYS_LOOKUP_DCOOKIE          = 208\n\tSYS_FADVISE64               = 209\n\tSYS_FADVISE64_64            = 210\n\tSYS_TGKILL                  = 211\n\tSYS_WAITPID                 = 212\n\tSYS_SWAPOFF                 = 213\n\tSYS_SYSINFO                 = 214\n\tSYS_IPC                     = 215\n\tSYS_SIGRETURN               = 216\n\tSYS_CLONE                   = 217\n\tSYS_IOPRIO_GET              = 218\n\tSYS_ADJTIMEX                = 219\n\tSYS_SIGPROCMASK             = 220\n\tSYS_CREATE_MODULE           = 221\n\tSYS_DELETE_MODULE           = 222\n\tSYS_GET_KERNEL_SYMS         = 223\n\tSYS_GETPGID                 = 224\n\tSYS_BDFLUSH                 = 225\n\tSYS_SYSFS                   = 226\n\tSYS_AFS_SYSCALL             = 227\n\tSYS_SETFSUID                = 228\n\tSYS_SETFSGID                = 229\n\tSYS__NEWSELECT              = 230\n\tSYS_SPLICE                  = 232\n\tSYS_STIME                   = 233\n\tSYS_STATFS64                = 234\n\tSYS_FSTATFS64               = 235\n\tSYS__LLSEEK                 = 236\n\tSYS_MLOCK                   = 237\n\tSYS_MUNLOCK                 = 238\n\tSYS_MLOCKALL                = 239\n\tSYS_MUNLOCKALL              = 240\n\tSYS_SCHED_SETPARAM          = 241\n\tSYS_SCHED_GETPARAM          = 242\n\tSYS_SCHED_SETSCHEDULER      = 243\n\tSYS_SCHED_GETSCHEDULER      = 244\n\tSYS_SCHED_YIELD             = 245\n\tSYS_SCHED_GET_PRIORITY_MAX  = 246\n\tSYS_SCHED_GET_PRIORITY_MIN  = 247\n\tSYS_SCHED_RR_GET_INTERVAL   = 248\n\tSYS_NANOSLEEP               = 249\n\tSYS_MREMAP                  = 250\n\tSYS__SYSCTL                 = 251\n\tSYS_GETSID                  = 252\n\tSYS_FDATASYNC               = 253\n\tSYS_NFSSERVCTL              = 254\n\tSYS_SYNC_FILE_RANGE         = 255\n\tSYS_CLOCK_SETTIME           = 256\n\tSYS_CLOCK_GETTIME           = 257\n\tSYS_CLOCK_GETRES            = 258\n\tSYS_CLOCK_NANOSLEEP         = 259\n\tSYS_SCHED_GETAFFINITY       = 260\n\tSYS_SCHED_SETAFFINITY       = 261\n\tSYS_TIMER_SETTIME           = 262\n\tSYS_TIMER_GETTIME           = 263\n\tSYS_TIMER_GETOVERRUN        = 264\n\tSYS_TIMER_DELETE            = 265\n\tSYS_TIMER_CREATE            = 266\n\tSYS_VSERVER                 = 267\n\tSYS_IO_SETUP                = 268\n\tSYS_IO_DESTROY              = 269\n\tSYS_IO_SUBMIT               = 270\n\tSYS_IO_CANCEL               = 271\n\tSYS_IO_GETEVENTS            = 272\n\tSYS_MQ_OPEN                 = 273\n\tSYS_MQ_UNLINK               = 274\n\tSYS_MQ_TIMEDSEND            = 275\n\tSYS_MQ_TIMEDRECEIVE         = 276\n\tSYS_MQ_NOTIFY               = 277\n\tSYS_MQ_GETSETATTR           = 278\n\tSYS_WAITID                  = 279\n\tSYS_TEE                     = 280\n\tSYS_ADD_KEY                 = 281\n\tSYS_REQUEST_KEY             = 282\n\tSYS_KEYCTL                  = 283\n\tSYS_OPENAT                  = 284\n\tSYS_MKDIRAT                 = 285\n\tSYS_MKNODAT                 = 286\n\tSYS_FCHOWNAT                = 287\n\tSYS_FUTIMESAT               = 288\n\tSYS_FSTATAT64               = 289\n\tSYS_UNLINKAT                = 290\n\tSYS_RENAMEAT                = 291\n\tSYS_LINKAT                  = 292\n\tSYS_SYMLINKAT               = 293\n\tSYS_READLINKAT              = 294\n\tSYS_FCHMODAT                = 295\n\tSYS_FACCESSAT               = 296\n\tSYS_PSELECT6                = 297\n\tSYS_PPOLL                   = 298\n\tSYS_UNSHARE                 = 299\n\tSYS_SET_ROBUST_LIST         = 300\n\tSYS_GET_ROBUST_LIST         = 301\n\tSYS_MIGRATE_PAGES           = 302\n\tSYS_MBIND                   = 303\n\tSYS_GET_MEMPOLICY           = 304\n\tSYS_SET_MEMPOLICY           = 305\n\tSYS_KEXEC_LOAD              = 306\n\tSYS_MOVE_PAGES              = 307\n\tSYS_GETCPU                  = 308\n\tSYS_EPOLL_PWAIT             = 309\n\tSYS_UTIMENSAT               = 310\n\tSYS_SIGNALFD                = 311\n\tSYS_TIMERFD_CREATE          = 312\n\tSYS_EVENTFD                 = 313\n\tSYS_FALLOCATE               = 314\n\tSYS_TIMERFD_SETTIME         = 315\n\tSYS_TIMERFD_GETTIME         = 316\n\tSYS_SIGNALFD4               = 317\n\tSYS_EVENTFD2                = 318\n\tSYS_EPOLL_CREATE1           = 319\n\tSYS_DUP3                    = 320\n\tSYS_PIPE2                   = 321\n\tSYS_INOTIFY_INIT1           = 322\n\tSYS_ACCEPT4                 = 323\n\tSYS_PREADV                  = 324\n\tSYS_PWRITEV                 = 325\n\tSYS_RT_TGSIGQUEUEINFO       = 326\n\tSYS_PERF_EVENT_OPEN         = 327\n\tSYS_RECVMMSG                = 328\n\tSYS_FANOTIFY_INIT           = 329\n\tSYS_FANOTIFY_MARK           = 330\n\tSYS_PRLIMIT64               = 331\n\tSYS_NAME_TO_HANDLE_AT       = 332\n\tSYS_OPEN_BY_HANDLE_AT       = 333\n\tSYS_CLOCK_ADJTIME           = 334\n\tSYS_SYNCFS                  = 335\n\tSYS_SENDMMSG                = 336\n\tSYS_SETNS                   = 337\n\tSYS_PROCESS_VM_READV        = 338\n\tSYS_PROCESS_VM_WRITEV       = 339\n\tSYS_KERN_FEATURES           = 340\n\tSYS_KCMP                    = 341\n\tSYS_FINIT_MODULE            = 342\n\tSYS_SCHED_SETATTR           = 343\n\tSYS_SCHED_GETATTR           = 344\n\tSYS_RENAMEAT2               = 345\n\tSYS_SECCOMP                 = 346\n\tSYS_GETRANDOM               = 347\n\tSYS_MEMFD_CREATE            = 348\n\tSYS_BPF                     = 349\n\tSYS_EXECVEAT                = 350\n\tSYS_MEMBARRIER              = 351\n\tSYS_USERFAULTFD             = 352\n\tSYS_BIND                    = 353\n\tSYS_LISTEN                  = 354\n\tSYS_SETSOCKOPT              = 355\n\tSYS_MLOCK2                  = 356\n\tSYS_COPY_FILE_RANGE         = 357\n\tSYS_PREADV2                 = 358\n\tSYS_PWRITEV2                = 359\n\tSYS_STATX                   = 360\n\tSYS_IO_PGETEVENTS           = 361\n\tSYS_PKEY_MPROTECT           = 362\n\tSYS_PKEY_ALLOC              = 363\n\tSYS_PKEY_FREE               = 364\n\tSYS_RSEQ                    = 365\n\tSYS_SEMTIMEDOP              = 392\n\tSYS_SEMGET                  = 393\n\tSYS_SEMCTL                  = 394\n\tSYS_SHMGET                  = 395\n\tSYS_SHMCTL                  = 396\n\tSYS_SHMAT                   = 397\n\tSYS_SHMDT                   = 398\n\tSYS_MSGGET                  = 399\n\tSYS_MSGSND                  = 400\n\tSYS_MSGRCV                  = 401\n\tSYS_MSGCTL                  = 402\n\tSYS_PIDFD_SEND_SIGNAL       = 424\n\tSYS_IO_URING_SETUP          = 425\n\tSYS_IO_URING_ENTER          = 426\n\tSYS_IO_URING_REGISTER       = 427\n\tSYS_OPEN_TREE               = 428\n\tSYS_MOVE_MOUNT              = 429\n\tSYS_FSOPEN                  = 430\n\tSYS_FSCONFIG                = 431\n\tSYS_FSMOUNT                 = 432\n\tSYS_FSPICK                  = 433\n\tSYS_PIDFD_OPEN              = 434\n\tSYS_CLOSE_RANGE             = 436\n\tSYS_OPENAT2                 = 437\n\tSYS_PIDFD_GETFD             = 438\n\tSYS_FACCESSAT2              = 439\n\tSYS_PROCESS_MADVISE         = 440\n\tSYS_EPOLL_PWAIT2            = 441\n\tSYS_MOUNT_SETATTR           = 442\n\tSYS_QUOTACTL_FD             = 443\n\tSYS_LANDLOCK_CREATE_RULESET = 444\n\tSYS_LANDLOCK_ADD_RULE       = 445\n\tSYS_LANDLOCK_RESTRICT_SELF  = 446\n\tSYS_PROCESS_MRELEASE        = 448\n\tSYS_FUTEX_WAITV             = 449\n\tSYS_SET_MEMPOLICY_HOME_NODE = 450\n\tSYS_CACHESTAT               = 451\n\tSYS_FCHMODAT2               = 452\n\tSYS_MAP_SHADOW_STACK        = 453\n\tSYS_FUTEX_WAKE              = 454\n\tSYS_FUTEX_WAIT              = 455\n\tSYS_FUTEX_REQUEUE           = 456\n\tSYS_STATMOUNT               = 457\n\tSYS_LISTMOUNT               = 458\n\tSYS_LSM_GET_SELF_ATTR       = 459\n\tSYS_LSM_SET_SELF_ATTR       = 460\n\tSYS_LSM_LIST_MODULES        = 461\n\tSYS_MSEAL                   = 462\n\tSYS_SETXATTRAT              = 463\n\tSYS_GETXATTRAT              = 464\n\tSYS_LISTXATTRAT             = 465\n\tSYS_REMOVEXATTRAT           = 466\n\tSYS_OPEN_TREE_ATTR          = 467\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go",
    "content": "// go run mksysnum.go http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build 386 && netbsd\n\npackage unix\n\nconst (\n\tSYS_EXIT                 = 1   // { void|sys||exit(int rval); }\n\tSYS_FORK                 = 2   // { int|sys||fork(void); }\n\tSYS_READ                 = 3   // { ssize_t|sys||read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE                = 4   // { ssize_t|sys||write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN                 = 5   // { int|sys||open(const char *path, int flags, ... mode_t mode); }\n\tSYS_CLOSE                = 6   // { int|sys||close(int fd); }\n\tSYS_LINK                 = 9   // { int|sys||link(const char *path, const char *link); }\n\tSYS_UNLINK               = 10  // { int|sys||unlink(const char *path); }\n\tSYS_CHDIR                = 12  // { int|sys||chdir(const char *path); }\n\tSYS_FCHDIR               = 13  // { int|sys||fchdir(int fd); }\n\tSYS_CHMOD                = 15  // { int|sys||chmod(const char *path, mode_t mode); }\n\tSYS_CHOWN                = 16  // { int|sys||chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_BREAK                = 17  // { int|sys||obreak(char *nsize); }\n\tSYS_GETPID               = 20  // { pid_t|sys||getpid_with_ppid(void); }\n\tSYS_UNMOUNT              = 22  // { int|sys||unmount(const char *path, int flags); }\n\tSYS_SETUID               = 23  // { int|sys||setuid(uid_t uid); }\n\tSYS_GETUID               = 24  // { uid_t|sys||getuid_with_euid(void); }\n\tSYS_GETEUID              = 25  // { uid_t|sys||geteuid(void); }\n\tSYS_PTRACE               = 26  // { int|sys||ptrace(int req, pid_t pid, void *addr, int data); }\n\tSYS_RECVMSG              = 27  // { ssize_t|sys||recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG              = 28  // { ssize_t|sys||sendmsg(int s, const struct msghdr *msg, int flags); }\n\tSYS_RECVFROM             = 29  // { ssize_t|sys||recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }\n\tSYS_ACCEPT               = 30  // { int|sys||accept(int s, struct sockaddr *name, socklen_t *anamelen); }\n\tSYS_GETPEERNAME          = 31  // { int|sys||getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_GETSOCKNAME          = 32  // { int|sys||getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_ACCESS               = 33  // { int|sys||access(const char *path, int flags); }\n\tSYS_CHFLAGS              = 34  // { int|sys||chflags(const char *path, u_long flags); }\n\tSYS_FCHFLAGS             = 35  // { int|sys||fchflags(int fd, u_long flags); }\n\tSYS_SYNC                 = 36  // { void|sys||sync(void); }\n\tSYS_KILL                 = 37  // { int|sys||kill(pid_t pid, int signum); }\n\tSYS_GETPPID              = 39  // { pid_t|sys||getppid(void); }\n\tSYS_DUP                  = 41  // { int|sys||dup(int fd); }\n\tSYS_PIPE                 = 42  // { int|sys||pipe(void); }\n\tSYS_GETEGID              = 43  // { gid_t|sys||getegid(void); }\n\tSYS_PROFIL               = 44  // { int|sys||profil(char *samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE               = 45  // { int|sys||ktrace(const char *fname, int ops, int facs, pid_t pid); }\n\tSYS_GETGID               = 47  // { gid_t|sys||getgid_with_egid(void); }\n\tSYS___GETLOGIN           = 49  // { int|sys||__getlogin(char *namebuf, size_t namelen); }\n\tSYS___SETLOGIN           = 50  // { int|sys||__setlogin(const char *namebuf); }\n\tSYS_ACCT                 = 51  // { int|sys||acct(const char *path); }\n\tSYS_IOCTL                = 54  // { int|sys||ioctl(int fd, u_long com, ... void *data); }\n\tSYS_REVOKE               = 56  // { int|sys||revoke(const char *path); }\n\tSYS_SYMLINK              = 57  // { int|sys||symlink(const char *path, const char *link); }\n\tSYS_READLINK             = 58  // { ssize_t|sys||readlink(const char *path, char *buf, size_t count); }\n\tSYS_EXECVE               = 59  // { int|sys||execve(const char *path, char * const *argp, char * const *envp); }\n\tSYS_UMASK                = 60  // { mode_t|sys||umask(mode_t newmask); }\n\tSYS_CHROOT               = 61  // { int|sys||chroot(const char *path); }\n\tSYS_VFORK                = 66  // { int|sys||vfork(void); }\n\tSYS_SBRK                 = 69  // { int|sys||sbrk(intptr_t incr); }\n\tSYS_SSTK                 = 70  // { int|sys||sstk(int incr); }\n\tSYS_VADVISE              = 72  // { int|sys||ovadvise(int anom); }\n\tSYS_MUNMAP               = 73  // { int|sys||munmap(void *addr, size_t len); }\n\tSYS_MPROTECT             = 74  // { int|sys||mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE              = 75  // { int|sys||madvise(void *addr, size_t len, int behav); }\n\tSYS_MINCORE              = 78  // { int|sys||mincore(void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS            = 79  // { int|sys||getgroups(int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS            = 80  // { int|sys||setgroups(int gidsetsize, const gid_t *gidset); }\n\tSYS_GETPGRP              = 81  // { int|sys||getpgrp(void); }\n\tSYS_SETPGID              = 82  // { int|sys||setpgid(pid_t pid, pid_t pgid); }\n\tSYS_DUP2                 = 90  // { int|sys||dup2(int from, int to); }\n\tSYS_FCNTL                = 92  // { int|sys||fcntl(int fd, int cmd, ... void *arg); }\n\tSYS_FSYNC                = 95  // { int|sys||fsync(int fd); }\n\tSYS_SETPRIORITY          = 96  // { int|sys||setpriority(int which, id_t who, int prio); }\n\tSYS_CONNECT              = 98  // { int|sys||connect(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_GETPRIORITY          = 100 // { int|sys||getpriority(int which, id_t who); }\n\tSYS_BIND                 = 104 // { int|sys||bind(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_SETSOCKOPT           = 105 // { int|sys||setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }\n\tSYS_LISTEN               = 106 // { int|sys||listen(int s, int backlog); }\n\tSYS_GETSOCKOPT           = 118 // { int|sys||getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }\n\tSYS_READV                = 120 // { ssize_t|sys||readv(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_WRITEV               = 121 // { ssize_t|sys||writev(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_FCHOWN               = 123 // { int|sys||fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS_FCHMOD               = 124 // { int|sys||fchmod(int fd, mode_t mode); }\n\tSYS_SETREUID             = 126 // { int|sys||setreuid(uid_t ruid, uid_t euid); }\n\tSYS_SETREGID             = 127 // { int|sys||setregid(gid_t rgid, gid_t egid); }\n\tSYS_RENAME               = 128 // { int|sys||rename(const char *from, const char *to); }\n\tSYS_FLOCK                = 131 // { int|sys||flock(int fd, int how); }\n\tSYS_MKFIFO               = 132 // { int|sys||mkfifo(const char *path, mode_t mode); }\n\tSYS_SENDTO               = 133 // { ssize_t|sys||sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }\n\tSYS_SHUTDOWN             = 134 // { int|sys||shutdown(int s, int how); }\n\tSYS_SOCKETPAIR           = 135 // { int|sys||socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR                = 136 // { int|sys||mkdir(const char *path, mode_t mode); }\n\tSYS_RMDIR                = 137 // { int|sys||rmdir(const char *path); }\n\tSYS_SETSID               = 147 // { int|sys||setsid(void); }\n\tSYS_SYSARCH              = 165 // { int|sys||sysarch(int op, void *parms); }\n\tSYS_PREAD                = 173 // { ssize_t|sys||pread(int fd, void *buf, size_t nbyte, int PAD, off_t offset); }\n\tSYS_PWRITE               = 174 // { ssize_t|sys||pwrite(int fd, const void *buf, size_t nbyte, int PAD, off_t offset); }\n\tSYS_NTP_ADJTIME          = 176 // { int|sys||ntp_adjtime(struct timex *tp); }\n\tSYS_SETGID               = 181 // { int|sys||setgid(gid_t gid); }\n\tSYS_SETEGID              = 182 // { int|sys||setegid(gid_t egid); }\n\tSYS_SETEUID              = 183 // { int|sys||seteuid(uid_t euid); }\n\tSYS_PATHCONF             = 191 // { long|sys||pathconf(const char *path, int name); }\n\tSYS_FPATHCONF            = 192 // { long|sys||fpathconf(int fd, int name); }\n\tSYS_GETRLIMIT            = 194 // { int|sys||getrlimit(int which, struct rlimit *rlp); }\n\tSYS_SETRLIMIT            = 195 // { int|sys||setrlimit(int which, const struct rlimit *rlp); }\n\tSYS_MMAP                 = 197 // { void *|sys||mmap(void *addr, size_t len, int prot, int flags, int fd, long PAD, off_t pos); }\n\tSYS_LSEEK                = 199 // { off_t|sys||lseek(int fd, int PAD, off_t offset, int whence); }\n\tSYS_TRUNCATE             = 200 // { int|sys||truncate(const char *path, int PAD, off_t length); }\n\tSYS_FTRUNCATE            = 201 // { int|sys||ftruncate(int fd, int PAD, off_t length); }\n\tSYS___SYSCTL             = 202 // { int|sys||__sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, const void *new, size_t newlen); }\n\tSYS_MLOCK                = 203 // { int|sys||mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK              = 204 // { int|sys||munlock(const void *addr, size_t len); }\n\tSYS_UNDELETE             = 205 // { int|sys||undelete(const char *path); }\n\tSYS_GETPGID              = 207 // { pid_t|sys||getpgid(pid_t pid); }\n\tSYS_REBOOT               = 208 // { int|sys||reboot(int opt, char *bootstr); }\n\tSYS_POLL                 = 209 // { int|sys||poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_SEMGET               = 221 // { int|sys||semget(key_t key, int nsems, int semflg); }\n\tSYS_SEMOP                = 222 // { int|sys||semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_SEMCONFIG            = 223 // { int|sys||semconfig(int flag); }\n\tSYS_MSGGET               = 225 // { int|sys||msgget(key_t key, int msgflg); }\n\tSYS_MSGSND               = 226 // { int|sys||msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV               = 227 // { ssize_t|sys||msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT                = 228 // { void *|sys||shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT                = 230 // { int|sys||shmdt(const void *shmaddr); }\n\tSYS_SHMGET               = 231 // { int|sys||shmget(key_t key, size_t size, int shmflg); }\n\tSYS_TIMER_CREATE         = 235 // { int|sys||timer_create(clockid_t clock_id, struct sigevent *evp, timer_t *timerid); }\n\tSYS_TIMER_DELETE         = 236 // { int|sys||timer_delete(timer_t timerid); }\n\tSYS_TIMER_GETOVERRUN     = 239 // { int|sys||timer_getoverrun(timer_t timerid); }\n\tSYS_FDATASYNC            = 241 // { int|sys||fdatasync(int fd); }\n\tSYS_MLOCKALL             = 242 // { int|sys||mlockall(int flags); }\n\tSYS_MUNLOCKALL           = 243 // { int|sys||munlockall(void); }\n\tSYS_SIGQUEUEINFO         = 245 // { int|sys||sigqueueinfo(pid_t pid, const siginfo_t *info); }\n\tSYS_MODCTL               = 246 // { int|sys||modctl(int cmd, void *arg); }\n\tSYS___POSIX_RENAME       = 270 // { int|sys||__posix_rename(const char *from, const char *to); }\n\tSYS_SWAPCTL              = 271 // { int|sys||swapctl(int cmd, void *arg, int misc); }\n\tSYS_MINHERIT             = 273 // { int|sys||minherit(void *addr, size_t len, int inherit); }\n\tSYS_LCHMOD               = 274 // { int|sys||lchmod(const char *path, mode_t mode); }\n\tSYS_LCHOWN               = 275 // { int|sys||lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_MSYNC                = 277 // { int|sys|13|msync(void *addr, size_t len, int flags); }\n\tSYS___POSIX_CHOWN        = 283 // { int|sys||__posix_chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS___POSIX_FCHOWN       = 284 // { int|sys||__posix_fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS___POSIX_LCHOWN       = 285 // { int|sys||__posix_lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_GETSID               = 286 // { pid_t|sys||getsid(pid_t pid); }\n\tSYS___CLONE              = 287 // { pid_t|sys||__clone(int flags, void *stack); }\n\tSYS_FKTRACE              = 288 // { int|sys||fktrace(int fd, int ops, int facs, pid_t pid); }\n\tSYS_PREADV               = 289 // { ssize_t|sys||preadv(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); }\n\tSYS_PWRITEV              = 290 // { ssize_t|sys||pwritev(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); }\n\tSYS___GETCWD             = 296 // { int|sys||__getcwd(char *bufp, size_t length); }\n\tSYS_FCHROOT              = 297 // { int|sys||fchroot(int fd); }\n\tSYS_LCHFLAGS             = 304 // { int|sys||lchflags(const char *path, u_long flags); }\n\tSYS_ISSETUGID            = 305 // { int|sys||issetugid(void); }\n\tSYS_UTRACE               = 306 // { int|sys||utrace(const char *label, void *addr, size_t len); }\n\tSYS_GETCONTEXT           = 307 // { int|sys||getcontext(struct __ucontext *ucp); }\n\tSYS_SETCONTEXT           = 308 // { int|sys||setcontext(const struct __ucontext *ucp); }\n\tSYS__LWP_CREATE          = 309 // { int|sys||_lwp_create(const struct __ucontext *ucp, u_long flags, lwpid_t *new_lwp); }\n\tSYS__LWP_EXIT            = 310 // { int|sys||_lwp_exit(void); }\n\tSYS__LWP_SELF            = 311 // { lwpid_t|sys||_lwp_self(void); }\n\tSYS__LWP_WAIT            = 312 // { int|sys||_lwp_wait(lwpid_t wait_for, lwpid_t *departed); }\n\tSYS__LWP_SUSPEND         = 313 // { int|sys||_lwp_suspend(lwpid_t target); }\n\tSYS__LWP_CONTINUE        = 314 // { int|sys||_lwp_continue(lwpid_t target); }\n\tSYS__LWP_WAKEUP          = 315 // { int|sys||_lwp_wakeup(lwpid_t target); }\n\tSYS__LWP_GETPRIVATE      = 316 // { void *|sys||_lwp_getprivate(void); }\n\tSYS__LWP_SETPRIVATE      = 317 // { void|sys||_lwp_setprivate(void *ptr); }\n\tSYS__LWP_KILL            = 318 // { int|sys||_lwp_kill(lwpid_t target, int signo); }\n\tSYS__LWP_DETACH          = 319 // { int|sys||_lwp_detach(lwpid_t target); }\n\tSYS__LWP_UNPARK          = 321 // { int|sys||_lwp_unpark(lwpid_t target, const void *hint); }\n\tSYS__LWP_UNPARK_ALL      = 322 // { ssize_t|sys||_lwp_unpark_all(const lwpid_t *targets, size_t ntargets, const void *hint); }\n\tSYS__LWP_SETNAME         = 323 // { int|sys||_lwp_setname(lwpid_t target, const char *name); }\n\tSYS__LWP_GETNAME         = 324 // { int|sys||_lwp_getname(lwpid_t target, char *name, size_t len); }\n\tSYS__LWP_CTL             = 325 // { int|sys||_lwp_ctl(int features, struct lwpctl **address); }\n\tSYS___SIGACTION_SIGTRAMP = 340 // { int|sys||__sigaction_sigtramp(int signum, const struct sigaction *nsa, struct sigaction *osa, const void *tramp, int vers); }\n\tSYS_PMC_GET_INFO         = 341 // { int|sys||pmc_get_info(int ctr, int op, void *args); }\n\tSYS_PMC_CONTROL          = 342 // { int|sys||pmc_control(int ctr, int op, void *args); }\n\tSYS_RASCTL               = 343 // { int|sys||rasctl(void *addr, size_t len, int op); }\n\tSYS_KQUEUE               = 344 // { int|sys||kqueue(void); }\n\tSYS__SCHED_SETPARAM      = 346 // { int|sys||_sched_setparam(pid_t pid, lwpid_t lid, int policy, const struct sched_param *params); }\n\tSYS__SCHED_GETPARAM      = 347 // { int|sys||_sched_getparam(pid_t pid, lwpid_t lid, int *policy, struct sched_param *params); }\n\tSYS__SCHED_SETAFFINITY   = 348 // { int|sys||_sched_setaffinity(pid_t pid, lwpid_t lid, size_t size, const cpuset_t *cpuset); }\n\tSYS__SCHED_GETAFFINITY   = 349 // { int|sys||_sched_getaffinity(pid_t pid, lwpid_t lid, size_t size, cpuset_t *cpuset); }\n\tSYS_SCHED_YIELD          = 350 // { int|sys||sched_yield(void); }\n\tSYS_FSYNC_RANGE          = 354 // { int|sys||fsync_range(int fd, int flags, off_t start, off_t length); }\n\tSYS_UUIDGEN              = 355 // { int|sys||uuidgen(struct uuid *store, int count); }\n\tSYS_GETVFSSTAT           = 356 // { int|sys||getvfsstat(struct statvfs *buf, size_t bufsize, int flags); }\n\tSYS_STATVFS1             = 357 // { int|sys||statvfs1(const char *path, struct statvfs *buf, int flags); }\n\tSYS_FSTATVFS1            = 358 // { int|sys||fstatvfs1(int fd, struct statvfs *buf, int flags); }\n\tSYS_EXTATTRCTL           = 360 // { int|sys||extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FILE     = 361 // { int|sys||extattr_set_file(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FILE     = 362 // { ssize_t|sys||extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FILE  = 363 // { int|sys||extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FD       = 364 // { int|sys||extattr_set_fd(int fd, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FD       = 365 // { ssize_t|sys||extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FD    = 366 // { int|sys||extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_LINK     = 367 // { int|sys||extattr_set_link(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_LINK     = 368 // { ssize_t|sys||extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_LINK  = 369 // { int|sys||extattr_delete_link(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_LIST_FD      = 370 // { ssize_t|sys||extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_FILE    = 371 // { ssize_t|sys||extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_LINK    = 372 // { ssize_t|sys||extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_SETXATTR             = 375 // { int|sys||setxattr(const char *path, const char *name, const void *value, size_t size, int flags); }\n\tSYS_LSETXATTR            = 376 // { int|sys||lsetxattr(const char *path, const char *name, const void *value, size_t size, int flags); }\n\tSYS_FSETXATTR            = 377 // { int|sys||fsetxattr(int fd, const char *name, const void *value, size_t size, int flags); }\n\tSYS_GETXATTR             = 378 // { int|sys||getxattr(const char *path, const char *name, void *value, size_t size); }\n\tSYS_LGETXATTR            = 379 // { int|sys||lgetxattr(const char *path, const char *name, void *value, size_t size); }\n\tSYS_FGETXATTR            = 380 // { int|sys||fgetxattr(int fd, const char *name, void *value, size_t size); }\n\tSYS_LISTXATTR            = 381 // { int|sys||listxattr(const char *path, char *list, size_t size); }\n\tSYS_LLISTXATTR           = 382 // { int|sys||llistxattr(const char *path, char *list, size_t size); }\n\tSYS_FLISTXATTR           = 383 // { int|sys||flistxattr(int fd, char *list, size_t size); }\n\tSYS_REMOVEXATTR          = 384 // { int|sys||removexattr(const char *path, const char *name); }\n\tSYS_LREMOVEXATTR         = 385 // { int|sys||lremovexattr(const char *path, const char *name); }\n\tSYS_FREMOVEXATTR         = 386 // { int|sys||fremovexattr(int fd, const char *name); }\n\tSYS_GETDENTS             = 390 // { int|sys|30|getdents(int fd, char *buf, size_t count); }\n\tSYS_SOCKET               = 394 // { int|sys|30|socket(int domain, int type, int protocol); }\n\tSYS_GETFH                = 395 // { int|sys|30|getfh(const char *fname, void *fhp, size_t *fh_size); }\n\tSYS_MOUNT                = 410 // { int|sys|50|mount(const char *type, const char *path, int flags, void *data, size_t data_len); }\n\tSYS_MREMAP               = 411 // { void *|sys||mremap(void *old_address, size_t old_size, void *new_address, size_t new_size, int flags); }\n\tSYS_PSET_CREATE          = 412 // { int|sys||pset_create(psetid_t *psid); }\n\tSYS_PSET_DESTROY         = 413 // { int|sys||pset_destroy(psetid_t psid); }\n\tSYS_PSET_ASSIGN          = 414 // { int|sys||pset_assign(psetid_t psid, cpuid_t cpuid, psetid_t *opsid); }\n\tSYS__PSET_BIND           = 415 // { int|sys||_pset_bind(idtype_t idtype, id_t first_id, id_t second_id, psetid_t psid, psetid_t *opsid); }\n\tSYS_POSIX_FADVISE        = 416 // { int|sys|50|posix_fadvise(int fd, int PAD, off_t offset, off_t len, int advice); }\n\tSYS_SELECT               = 417 // { int|sys|50|select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_GETTIMEOFDAY         = 418 // { int|sys|50|gettimeofday(struct timeval *tp, void *tzp); }\n\tSYS_SETTIMEOFDAY         = 419 // { int|sys|50|settimeofday(const struct timeval *tv, const void *tzp); }\n\tSYS_UTIMES               = 420 // { int|sys|50|utimes(const char *path, const struct timeval *tptr); }\n\tSYS_ADJTIME              = 421 // { int|sys|50|adjtime(const struct timeval *delta, struct timeval *olddelta); }\n\tSYS_FUTIMES              = 423 // { int|sys|50|futimes(int fd, const struct timeval *tptr); }\n\tSYS_LUTIMES              = 424 // { int|sys|50|lutimes(const char *path, const struct timeval *tptr); }\n\tSYS_SETITIMER            = 425 // { int|sys|50|setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_GETITIMER            = 426 // { int|sys|50|getitimer(int which, struct itimerval *itv); }\n\tSYS_CLOCK_GETTIME        = 427 // { int|sys|50|clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME        = 428 // { int|sys|50|clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES         = 429 // { int|sys|50|clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_NANOSLEEP            = 430 // { int|sys|50|nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS___SIGTIMEDWAIT       = 431 // { int|sys|50|__sigtimedwait(const sigset_t *set, siginfo_t *info, struct timespec *timeout); }\n\tSYS__LWP_PARK            = 434 // { int|sys|50|_lwp_park(const struct timespec *ts, lwpid_t unpark, const void *hint, const void *unparkhint); }\n\tSYS_KEVENT               = 435 // { int|sys|50|kevent(int fd, const struct kevent *changelist, size_t nchanges, struct kevent *eventlist, size_t nevents, const struct timespec *timeout); }\n\tSYS_PSELECT              = 436 // { int|sys|50|pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_POLLTS               = 437 // { int|sys|50|pollts(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_STAT                 = 439 // { int|sys|50|stat(const char *path, struct stat *ub); }\n\tSYS_FSTAT                = 440 // { int|sys|50|fstat(int fd, struct stat *sb); }\n\tSYS_LSTAT                = 441 // { int|sys|50|lstat(const char *path, struct stat *ub); }\n\tSYS___SEMCTL             = 442 // { int|sys|50|__semctl(int semid, int semnum, int cmd, ... union __semun *arg); }\n\tSYS_SHMCTL               = 443 // { int|sys|50|shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_MSGCTL               = 444 // { int|sys|50|msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_GETRUSAGE            = 445 // { int|sys|50|getrusage(int who, struct rusage *rusage); }\n\tSYS_TIMER_SETTIME        = 446 // { int|sys|50|timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }\n\tSYS_TIMER_GETTIME        = 447 // { int|sys|50|timer_gettime(timer_t timerid, struct itimerspec *value); }\n\tSYS_NTP_GETTIME          = 448 // { int|sys|50|ntp_gettime(struct ntptimeval *ntvp); }\n\tSYS_WAIT4                = 449 // { int|sys|50|wait4(pid_t pid, int *status, int options, struct rusage *rusage); }\n\tSYS_MKNOD                = 450 // { int|sys|50|mknod(const char *path, mode_t mode, dev_t dev); }\n\tSYS_FHSTAT               = 451 // { int|sys|50|fhstat(const void *fhp, size_t fh_size, struct stat *sb); }\n\tSYS_PIPE2                = 453 // { int|sys||pipe2(int *fildes, int flags); }\n\tSYS_DUP3                 = 454 // { int|sys||dup3(int from, int to, int flags); }\n\tSYS_KQUEUE1              = 455 // { int|sys||kqueue1(int flags); }\n\tSYS_PACCEPT              = 456 // { int|sys||paccept(int s, struct sockaddr *name, socklen_t *anamelen, const sigset_t *mask, int flags); }\n\tSYS_LINKAT               = 457 // { int|sys||linkat(int fd1, const char *name1, int fd2, const char *name2, int flags); }\n\tSYS_RENAMEAT             = 458 // { int|sys||renameat(int fromfd, const char *from, int tofd, const char *to); }\n\tSYS_MKFIFOAT             = 459 // { int|sys||mkfifoat(int fd, const char *path, mode_t mode); }\n\tSYS_MKNODAT              = 460 // { int|sys||mknodat(int fd, const char *path, mode_t mode, uint32_t dev); }\n\tSYS_MKDIRAT              = 461 // { int|sys||mkdirat(int fd, const char *path, mode_t mode); }\n\tSYS_FACCESSAT            = 462 // { int|sys||faccessat(int fd, const char *path, int amode, int flag); }\n\tSYS_FCHMODAT             = 463 // { int|sys||fchmodat(int fd, const char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT             = 464 // { int|sys||fchownat(int fd, const char *path, uid_t owner, gid_t group, int flag); }\n\tSYS_FEXECVE              = 465 // { int|sys||fexecve(int fd, char * const *argp, char * const *envp); }\n\tSYS_FSTATAT              = 466 // { int|sys||fstatat(int fd, const char *path, struct stat *buf, int flag); }\n\tSYS_UTIMENSAT            = 467 // { int|sys||utimensat(int fd, const char *path, const struct timespec *tptr, int flag); }\n\tSYS_OPENAT               = 468 // { int|sys||openat(int fd, const char *path, int oflags, ... mode_t mode); }\n\tSYS_READLINKAT           = 469 // { int|sys||readlinkat(int fd, const char *path, char *buf, size_t bufsize); }\n\tSYS_SYMLINKAT            = 470 // { int|sys||symlinkat(const char *path1, int fd, const char *path2); }\n\tSYS_UNLINKAT             = 471 // { int|sys||unlinkat(int fd, const char *path, int flag); }\n\tSYS_FUTIMENS             = 472 // { int|sys||futimens(int fd, const struct timespec *tptr); }\n\tSYS___QUOTACTL           = 473 // { int|sys||__quotactl(const char *path, struct quotactl_args *args); }\n\tSYS_POSIX_SPAWN          = 474 // { int|sys||posix_spawn(pid_t *pid, const char *path, const struct posix_spawn_file_actions *file_actions, const struct posix_spawnattr *attrp, char *const *argv, char *const *envp); }\n\tSYS_RECVMMSG             = 475 // { int|sys||recvmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags, struct timespec *timeout); }\n\tSYS_SENDMMSG             = 476 // { int|sys||sendmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags); }\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go",
    "content": "// go run mksysnum.go http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && netbsd\n\npackage unix\n\nconst (\n\tSYS_EXIT                 = 1   // { void|sys||exit(int rval); }\n\tSYS_FORK                 = 2   // { int|sys||fork(void); }\n\tSYS_READ                 = 3   // { ssize_t|sys||read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE                = 4   // { ssize_t|sys||write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN                 = 5   // { int|sys||open(const char *path, int flags, ... mode_t mode); }\n\tSYS_CLOSE                = 6   // { int|sys||close(int fd); }\n\tSYS_LINK                 = 9   // { int|sys||link(const char *path, const char *link); }\n\tSYS_UNLINK               = 10  // { int|sys||unlink(const char *path); }\n\tSYS_CHDIR                = 12  // { int|sys||chdir(const char *path); }\n\tSYS_FCHDIR               = 13  // { int|sys||fchdir(int fd); }\n\tSYS_CHMOD                = 15  // { int|sys||chmod(const char *path, mode_t mode); }\n\tSYS_CHOWN                = 16  // { int|sys||chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_BREAK                = 17  // { int|sys||obreak(char *nsize); }\n\tSYS_GETPID               = 20  // { pid_t|sys||getpid_with_ppid(void); }\n\tSYS_UNMOUNT              = 22  // { int|sys||unmount(const char *path, int flags); }\n\tSYS_SETUID               = 23  // { int|sys||setuid(uid_t uid); }\n\tSYS_GETUID               = 24  // { uid_t|sys||getuid_with_euid(void); }\n\tSYS_GETEUID              = 25  // { uid_t|sys||geteuid(void); }\n\tSYS_PTRACE               = 26  // { int|sys||ptrace(int req, pid_t pid, void *addr, int data); }\n\tSYS_RECVMSG              = 27  // { ssize_t|sys||recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG              = 28  // { ssize_t|sys||sendmsg(int s, const struct msghdr *msg, int flags); }\n\tSYS_RECVFROM             = 29  // { ssize_t|sys||recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }\n\tSYS_ACCEPT               = 30  // { int|sys||accept(int s, struct sockaddr *name, socklen_t *anamelen); }\n\tSYS_GETPEERNAME          = 31  // { int|sys||getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_GETSOCKNAME          = 32  // { int|sys||getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_ACCESS               = 33  // { int|sys||access(const char *path, int flags); }\n\tSYS_CHFLAGS              = 34  // { int|sys||chflags(const char *path, u_long flags); }\n\tSYS_FCHFLAGS             = 35  // { int|sys||fchflags(int fd, u_long flags); }\n\tSYS_SYNC                 = 36  // { void|sys||sync(void); }\n\tSYS_KILL                 = 37  // { int|sys||kill(pid_t pid, int signum); }\n\tSYS_GETPPID              = 39  // { pid_t|sys||getppid(void); }\n\tSYS_DUP                  = 41  // { int|sys||dup(int fd); }\n\tSYS_PIPE                 = 42  // { int|sys||pipe(void); }\n\tSYS_GETEGID              = 43  // { gid_t|sys||getegid(void); }\n\tSYS_PROFIL               = 44  // { int|sys||profil(char *samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE               = 45  // { int|sys||ktrace(const char *fname, int ops, int facs, pid_t pid); }\n\tSYS_GETGID               = 47  // { gid_t|sys||getgid_with_egid(void); }\n\tSYS___GETLOGIN           = 49  // { int|sys||__getlogin(char *namebuf, size_t namelen); }\n\tSYS___SETLOGIN           = 50  // { int|sys||__setlogin(const char *namebuf); }\n\tSYS_ACCT                 = 51  // { int|sys||acct(const char *path); }\n\tSYS_IOCTL                = 54  // { int|sys||ioctl(int fd, u_long com, ... void *data); }\n\tSYS_REVOKE               = 56  // { int|sys||revoke(const char *path); }\n\tSYS_SYMLINK              = 57  // { int|sys||symlink(const char *path, const char *link); }\n\tSYS_READLINK             = 58  // { ssize_t|sys||readlink(const char *path, char *buf, size_t count); }\n\tSYS_EXECVE               = 59  // { int|sys||execve(const char *path, char * const *argp, char * const *envp); }\n\tSYS_UMASK                = 60  // { mode_t|sys||umask(mode_t newmask); }\n\tSYS_CHROOT               = 61  // { int|sys||chroot(const char *path); }\n\tSYS_VFORK                = 66  // { int|sys||vfork(void); }\n\tSYS_SBRK                 = 69  // { int|sys||sbrk(intptr_t incr); }\n\tSYS_SSTK                 = 70  // { int|sys||sstk(int incr); }\n\tSYS_VADVISE              = 72  // { int|sys||ovadvise(int anom); }\n\tSYS_MUNMAP               = 73  // { int|sys||munmap(void *addr, size_t len); }\n\tSYS_MPROTECT             = 74  // { int|sys||mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE              = 75  // { int|sys||madvise(void *addr, size_t len, int behav); }\n\tSYS_MINCORE              = 78  // { int|sys||mincore(void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS            = 79  // { int|sys||getgroups(int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS            = 80  // { int|sys||setgroups(int gidsetsize, const gid_t *gidset); }\n\tSYS_GETPGRP              = 81  // { int|sys||getpgrp(void); }\n\tSYS_SETPGID              = 82  // { int|sys||setpgid(pid_t pid, pid_t pgid); }\n\tSYS_DUP2                 = 90  // { int|sys||dup2(int from, int to); }\n\tSYS_FCNTL                = 92  // { int|sys||fcntl(int fd, int cmd, ... void *arg); }\n\tSYS_FSYNC                = 95  // { int|sys||fsync(int fd); }\n\tSYS_SETPRIORITY          = 96  // { int|sys||setpriority(int which, id_t who, int prio); }\n\tSYS_CONNECT              = 98  // { int|sys||connect(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_GETPRIORITY          = 100 // { int|sys||getpriority(int which, id_t who); }\n\tSYS_BIND                 = 104 // { int|sys||bind(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_SETSOCKOPT           = 105 // { int|sys||setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }\n\tSYS_LISTEN               = 106 // { int|sys||listen(int s, int backlog); }\n\tSYS_GETSOCKOPT           = 118 // { int|sys||getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }\n\tSYS_READV                = 120 // { ssize_t|sys||readv(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_WRITEV               = 121 // { ssize_t|sys||writev(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_FCHOWN               = 123 // { int|sys||fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS_FCHMOD               = 124 // { int|sys||fchmod(int fd, mode_t mode); }\n\tSYS_SETREUID             = 126 // { int|sys||setreuid(uid_t ruid, uid_t euid); }\n\tSYS_SETREGID             = 127 // { int|sys||setregid(gid_t rgid, gid_t egid); }\n\tSYS_RENAME               = 128 // { int|sys||rename(const char *from, const char *to); }\n\tSYS_FLOCK                = 131 // { int|sys||flock(int fd, int how); }\n\tSYS_MKFIFO               = 132 // { int|sys||mkfifo(const char *path, mode_t mode); }\n\tSYS_SENDTO               = 133 // { ssize_t|sys||sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }\n\tSYS_SHUTDOWN             = 134 // { int|sys||shutdown(int s, int how); }\n\tSYS_SOCKETPAIR           = 135 // { int|sys||socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR                = 136 // { int|sys||mkdir(const char *path, mode_t mode); }\n\tSYS_RMDIR                = 137 // { int|sys||rmdir(const char *path); }\n\tSYS_SETSID               = 147 // { int|sys||setsid(void); }\n\tSYS_SYSARCH              = 165 // { int|sys||sysarch(int op, void *parms); }\n\tSYS_PREAD                = 173 // { ssize_t|sys||pread(int fd, void *buf, size_t nbyte, int PAD, off_t offset); }\n\tSYS_PWRITE               = 174 // { ssize_t|sys||pwrite(int fd, const void *buf, size_t nbyte, int PAD, off_t offset); }\n\tSYS_NTP_ADJTIME          = 176 // { int|sys||ntp_adjtime(struct timex *tp); }\n\tSYS_SETGID               = 181 // { int|sys||setgid(gid_t gid); }\n\tSYS_SETEGID              = 182 // { int|sys||setegid(gid_t egid); }\n\tSYS_SETEUID              = 183 // { int|sys||seteuid(uid_t euid); }\n\tSYS_PATHCONF             = 191 // { long|sys||pathconf(const char *path, int name); }\n\tSYS_FPATHCONF            = 192 // { long|sys||fpathconf(int fd, int name); }\n\tSYS_GETRLIMIT            = 194 // { int|sys||getrlimit(int which, struct rlimit *rlp); }\n\tSYS_SETRLIMIT            = 195 // { int|sys||setrlimit(int which, const struct rlimit *rlp); }\n\tSYS_MMAP                 = 197 // { void *|sys||mmap(void *addr, size_t len, int prot, int flags, int fd, long PAD, off_t pos); }\n\tSYS_LSEEK                = 199 // { off_t|sys||lseek(int fd, int PAD, off_t offset, int whence); }\n\tSYS_TRUNCATE             = 200 // { int|sys||truncate(const char *path, int PAD, off_t length); }\n\tSYS_FTRUNCATE            = 201 // { int|sys||ftruncate(int fd, int PAD, off_t length); }\n\tSYS___SYSCTL             = 202 // { int|sys||__sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, const void *new, size_t newlen); }\n\tSYS_MLOCK                = 203 // { int|sys||mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK              = 204 // { int|sys||munlock(const void *addr, size_t len); }\n\tSYS_UNDELETE             = 205 // { int|sys||undelete(const char *path); }\n\tSYS_GETPGID              = 207 // { pid_t|sys||getpgid(pid_t pid); }\n\tSYS_REBOOT               = 208 // { int|sys||reboot(int opt, char *bootstr); }\n\tSYS_POLL                 = 209 // { int|sys||poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_SEMGET               = 221 // { int|sys||semget(key_t key, int nsems, int semflg); }\n\tSYS_SEMOP                = 222 // { int|sys||semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_SEMCONFIG            = 223 // { int|sys||semconfig(int flag); }\n\tSYS_MSGGET               = 225 // { int|sys||msgget(key_t key, int msgflg); }\n\tSYS_MSGSND               = 226 // { int|sys||msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV               = 227 // { ssize_t|sys||msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT                = 228 // { void *|sys||shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT                = 230 // { int|sys||shmdt(const void *shmaddr); }\n\tSYS_SHMGET               = 231 // { int|sys||shmget(key_t key, size_t size, int shmflg); }\n\tSYS_TIMER_CREATE         = 235 // { int|sys||timer_create(clockid_t clock_id, struct sigevent *evp, timer_t *timerid); }\n\tSYS_TIMER_DELETE         = 236 // { int|sys||timer_delete(timer_t timerid); }\n\tSYS_TIMER_GETOVERRUN     = 239 // { int|sys||timer_getoverrun(timer_t timerid); }\n\tSYS_FDATASYNC            = 241 // { int|sys||fdatasync(int fd); }\n\tSYS_MLOCKALL             = 242 // { int|sys||mlockall(int flags); }\n\tSYS_MUNLOCKALL           = 243 // { int|sys||munlockall(void); }\n\tSYS_SIGQUEUEINFO         = 245 // { int|sys||sigqueueinfo(pid_t pid, const siginfo_t *info); }\n\tSYS_MODCTL               = 246 // { int|sys||modctl(int cmd, void *arg); }\n\tSYS___POSIX_RENAME       = 270 // { int|sys||__posix_rename(const char *from, const char *to); }\n\tSYS_SWAPCTL              = 271 // { int|sys||swapctl(int cmd, void *arg, int misc); }\n\tSYS_MINHERIT             = 273 // { int|sys||minherit(void *addr, size_t len, int inherit); }\n\tSYS_LCHMOD               = 274 // { int|sys||lchmod(const char *path, mode_t mode); }\n\tSYS_LCHOWN               = 275 // { int|sys||lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_MSYNC                = 277 // { int|sys|13|msync(void *addr, size_t len, int flags); }\n\tSYS___POSIX_CHOWN        = 283 // { int|sys||__posix_chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS___POSIX_FCHOWN       = 284 // { int|sys||__posix_fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS___POSIX_LCHOWN       = 285 // { int|sys||__posix_lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_GETSID               = 286 // { pid_t|sys||getsid(pid_t pid); }\n\tSYS___CLONE              = 287 // { pid_t|sys||__clone(int flags, void *stack); }\n\tSYS_FKTRACE              = 288 // { int|sys||fktrace(int fd, int ops, int facs, pid_t pid); }\n\tSYS_PREADV               = 289 // { ssize_t|sys||preadv(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); }\n\tSYS_PWRITEV              = 290 // { ssize_t|sys||pwritev(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); }\n\tSYS___GETCWD             = 296 // { int|sys||__getcwd(char *bufp, size_t length); }\n\tSYS_FCHROOT              = 297 // { int|sys||fchroot(int fd); }\n\tSYS_LCHFLAGS             = 304 // { int|sys||lchflags(const char *path, u_long flags); }\n\tSYS_ISSETUGID            = 305 // { int|sys||issetugid(void); }\n\tSYS_UTRACE               = 306 // { int|sys||utrace(const char *label, void *addr, size_t len); }\n\tSYS_GETCONTEXT           = 307 // { int|sys||getcontext(struct __ucontext *ucp); }\n\tSYS_SETCONTEXT           = 308 // { int|sys||setcontext(const struct __ucontext *ucp); }\n\tSYS__LWP_CREATE          = 309 // { int|sys||_lwp_create(const struct __ucontext *ucp, u_long flags, lwpid_t *new_lwp); }\n\tSYS__LWP_EXIT            = 310 // { int|sys||_lwp_exit(void); }\n\tSYS__LWP_SELF            = 311 // { lwpid_t|sys||_lwp_self(void); }\n\tSYS__LWP_WAIT            = 312 // { int|sys||_lwp_wait(lwpid_t wait_for, lwpid_t *departed); }\n\tSYS__LWP_SUSPEND         = 313 // { int|sys||_lwp_suspend(lwpid_t target); }\n\tSYS__LWP_CONTINUE        = 314 // { int|sys||_lwp_continue(lwpid_t target); }\n\tSYS__LWP_WAKEUP          = 315 // { int|sys||_lwp_wakeup(lwpid_t target); }\n\tSYS__LWP_GETPRIVATE      = 316 // { void *|sys||_lwp_getprivate(void); }\n\tSYS__LWP_SETPRIVATE      = 317 // { void|sys||_lwp_setprivate(void *ptr); }\n\tSYS__LWP_KILL            = 318 // { int|sys||_lwp_kill(lwpid_t target, int signo); }\n\tSYS__LWP_DETACH          = 319 // { int|sys||_lwp_detach(lwpid_t target); }\n\tSYS__LWP_UNPARK          = 321 // { int|sys||_lwp_unpark(lwpid_t target, const void *hint); }\n\tSYS__LWP_UNPARK_ALL      = 322 // { ssize_t|sys||_lwp_unpark_all(const lwpid_t *targets, size_t ntargets, const void *hint); }\n\tSYS__LWP_SETNAME         = 323 // { int|sys||_lwp_setname(lwpid_t target, const char *name); }\n\tSYS__LWP_GETNAME         = 324 // { int|sys||_lwp_getname(lwpid_t target, char *name, size_t len); }\n\tSYS__LWP_CTL             = 325 // { int|sys||_lwp_ctl(int features, struct lwpctl **address); }\n\tSYS___SIGACTION_SIGTRAMP = 340 // { int|sys||__sigaction_sigtramp(int signum, const struct sigaction *nsa, struct sigaction *osa, const void *tramp, int vers); }\n\tSYS_PMC_GET_INFO         = 341 // { int|sys||pmc_get_info(int ctr, int op, void *args); }\n\tSYS_PMC_CONTROL          = 342 // { int|sys||pmc_control(int ctr, int op, void *args); }\n\tSYS_RASCTL               = 343 // { int|sys||rasctl(void *addr, size_t len, int op); }\n\tSYS_KQUEUE               = 344 // { int|sys||kqueue(void); }\n\tSYS__SCHED_SETPARAM      = 346 // { int|sys||_sched_setparam(pid_t pid, lwpid_t lid, int policy, const struct sched_param *params); }\n\tSYS__SCHED_GETPARAM      = 347 // { int|sys||_sched_getparam(pid_t pid, lwpid_t lid, int *policy, struct sched_param *params); }\n\tSYS__SCHED_SETAFFINITY   = 348 // { int|sys||_sched_setaffinity(pid_t pid, lwpid_t lid, size_t size, const cpuset_t *cpuset); }\n\tSYS__SCHED_GETAFFINITY   = 349 // { int|sys||_sched_getaffinity(pid_t pid, lwpid_t lid, size_t size, cpuset_t *cpuset); }\n\tSYS_SCHED_YIELD          = 350 // { int|sys||sched_yield(void); }\n\tSYS_FSYNC_RANGE          = 354 // { int|sys||fsync_range(int fd, int flags, off_t start, off_t length); }\n\tSYS_UUIDGEN              = 355 // { int|sys||uuidgen(struct uuid *store, int count); }\n\tSYS_GETVFSSTAT           = 356 // { int|sys||getvfsstat(struct statvfs *buf, size_t bufsize, int flags); }\n\tSYS_STATVFS1             = 357 // { int|sys||statvfs1(const char *path, struct statvfs *buf, int flags); }\n\tSYS_FSTATVFS1            = 358 // { int|sys||fstatvfs1(int fd, struct statvfs *buf, int flags); }\n\tSYS_EXTATTRCTL           = 360 // { int|sys||extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FILE     = 361 // { int|sys||extattr_set_file(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FILE     = 362 // { ssize_t|sys||extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FILE  = 363 // { int|sys||extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FD       = 364 // { int|sys||extattr_set_fd(int fd, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FD       = 365 // { ssize_t|sys||extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FD    = 366 // { int|sys||extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_LINK     = 367 // { int|sys||extattr_set_link(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_LINK     = 368 // { ssize_t|sys||extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_LINK  = 369 // { int|sys||extattr_delete_link(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_LIST_FD      = 370 // { ssize_t|sys||extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_FILE    = 371 // { ssize_t|sys||extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_LINK    = 372 // { ssize_t|sys||extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_SETXATTR             = 375 // { int|sys||setxattr(const char *path, const char *name, const void *value, size_t size, int flags); }\n\tSYS_LSETXATTR            = 376 // { int|sys||lsetxattr(const char *path, const char *name, const void *value, size_t size, int flags); }\n\tSYS_FSETXATTR            = 377 // { int|sys||fsetxattr(int fd, const char *name, const void *value, size_t size, int flags); }\n\tSYS_GETXATTR             = 378 // { int|sys||getxattr(const char *path, const char *name, void *value, size_t size); }\n\tSYS_LGETXATTR            = 379 // { int|sys||lgetxattr(const char *path, const char *name, void *value, size_t size); }\n\tSYS_FGETXATTR            = 380 // { int|sys||fgetxattr(int fd, const char *name, void *value, size_t size); }\n\tSYS_LISTXATTR            = 381 // { int|sys||listxattr(const char *path, char *list, size_t size); }\n\tSYS_LLISTXATTR           = 382 // { int|sys||llistxattr(const char *path, char *list, size_t size); }\n\tSYS_FLISTXATTR           = 383 // { int|sys||flistxattr(int fd, char *list, size_t size); }\n\tSYS_REMOVEXATTR          = 384 // { int|sys||removexattr(const char *path, const char *name); }\n\tSYS_LREMOVEXATTR         = 385 // { int|sys||lremovexattr(const char *path, const char *name); }\n\tSYS_FREMOVEXATTR         = 386 // { int|sys||fremovexattr(int fd, const char *name); }\n\tSYS_GETDENTS             = 390 // { int|sys|30|getdents(int fd, char *buf, size_t count); }\n\tSYS_SOCKET               = 394 // { int|sys|30|socket(int domain, int type, int protocol); }\n\tSYS_GETFH                = 395 // { int|sys|30|getfh(const char *fname, void *fhp, size_t *fh_size); }\n\tSYS_MOUNT                = 410 // { int|sys|50|mount(const char *type, const char *path, int flags, void *data, size_t data_len); }\n\tSYS_MREMAP               = 411 // { void *|sys||mremap(void *old_address, size_t old_size, void *new_address, size_t new_size, int flags); }\n\tSYS_PSET_CREATE          = 412 // { int|sys||pset_create(psetid_t *psid); }\n\tSYS_PSET_DESTROY         = 413 // { int|sys||pset_destroy(psetid_t psid); }\n\tSYS_PSET_ASSIGN          = 414 // { int|sys||pset_assign(psetid_t psid, cpuid_t cpuid, psetid_t *opsid); }\n\tSYS__PSET_BIND           = 415 // { int|sys||_pset_bind(idtype_t idtype, id_t first_id, id_t second_id, psetid_t psid, psetid_t *opsid); }\n\tSYS_POSIX_FADVISE        = 416 // { int|sys|50|posix_fadvise(int fd, int PAD, off_t offset, off_t len, int advice); }\n\tSYS_SELECT               = 417 // { int|sys|50|select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_GETTIMEOFDAY         = 418 // { int|sys|50|gettimeofday(struct timeval *tp, void *tzp); }\n\tSYS_SETTIMEOFDAY         = 419 // { int|sys|50|settimeofday(const struct timeval *tv, const void *tzp); }\n\tSYS_UTIMES               = 420 // { int|sys|50|utimes(const char *path, const struct timeval *tptr); }\n\tSYS_ADJTIME              = 421 // { int|sys|50|adjtime(const struct timeval *delta, struct timeval *olddelta); }\n\tSYS_FUTIMES              = 423 // { int|sys|50|futimes(int fd, const struct timeval *tptr); }\n\tSYS_LUTIMES              = 424 // { int|sys|50|lutimes(const char *path, const struct timeval *tptr); }\n\tSYS_SETITIMER            = 425 // { int|sys|50|setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_GETITIMER            = 426 // { int|sys|50|getitimer(int which, struct itimerval *itv); }\n\tSYS_CLOCK_GETTIME        = 427 // { int|sys|50|clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME        = 428 // { int|sys|50|clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES         = 429 // { int|sys|50|clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_NANOSLEEP            = 430 // { int|sys|50|nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS___SIGTIMEDWAIT       = 431 // { int|sys|50|__sigtimedwait(const sigset_t *set, siginfo_t *info, struct timespec *timeout); }\n\tSYS__LWP_PARK            = 434 // { int|sys|50|_lwp_park(const struct timespec *ts, lwpid_t unpark, const void *hint, const void *unparkhint); }\n\tSYS_KEVENT               = 435 // { int|sys|50|kevent(int fd, const struct kevent *changelist, size_t nchanges, struct kevent *eventlist, size_t nevents, const struct timespec *timeout); }\n\tSYS_PSELECT              = 436 // { int|sys|50|pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_POLLTS               = 437 // { int|sys|50|pollts(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_STAT                 = 439 // { int|sys|50|stat(const char *path, struct stat *ub); }\n\tSYS_FSTAT                = 440 // { int|sys|50|fstat(int fd, struct stat *sb); }\n\tSYS_LSTAT                = 441 // { int|sys|50|lstat(const char *path, struct stat *ub); }\n\tSYS___SEMCTL             = 442 // { int|sys|50|__semctl(int semid, int semnum, int cmd, ... union __semun *arg); }\n\tSYS_SHMCTL               = 443 // { int|sys|50|shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_MSGCTL               = 444 // { int|sys|50|msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_GETRUSAGE            = 445 // { int|sys|50|getrusage(int who, struct rusage *rusage); }\n\tSYS_TIMER_SETTIME        = 446 // { int|sys|50|timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }\n\tSYS_TIMER_GETTIME        = 447 // { int|sys|50|timer_gettime(timer_t timerid, struct itimerspec *value); }\n\tSYS_NTP_GETTIME          = 448 // { int|sys|50|ntp_gettime(struct ntptimeval *ntvp); }\n\tSYS_WAIT4                = 449 // { int|sys|50|wait4(pid_t pid, int *status, int options, struct rusage *rusage); }\n\tSYS_MKNOD                = 450 // { int|sys|50|mknod(const char *path, mode_t mode, dev_t dev); }\n\tSYS_FHSTAT               = 451 // { int|sys|50|fhstat(const void *fhp, size_t fh_size, struct stat *sb); }\n\tSYS_PIPE2                = 453 // { int|sys||pipe2(int *fildes, int flags); }\n\tSYS_DUP3                 = 454 // { int|sys||dup3(int from, int to, int flags); }\n\tSYS_KQUEUE1              = 455 // { int|sys||kqueue1(int flags); }\n\tSYS_PACCEPT              = 456 // { int|sys||paccept(int s, struct sockaddr *name, socklen_t *anamelen, const sigset_t *mask, int flags); }\n\tSYS_LINKAT               = 457 // { int|sys||linkat(int fd1, const char *name1, int fd2, const char *name2, int flags); }\n\tSYS_RENAMEAT             = 458 // { int|sys||renameat(int fromfd, const char *from, int tofd, const char *to); }\n\tSYS_MKFIFOAT             = 459 // { int|sys||mkfifoat(int fd, const char *path, mode_t mode); }\n\tSYS_MKNODAT              = 460 // { int|sys||mknodat(int fd, const char *path, mode_t mode, uint32_t dev); }\n\tSYS_MKDIRAT              = 461 // { int|sys||mkdirat(int fd, const char *path, mode_t mode); }\n\tSYS_FACCESSAT            = 462 // { int|sys||faccessat(int fd, const char *path, int amode, int flag); }\n\tSYS_FCHMODAT             = 463 // { int|sys||fchmodat(int fd, const char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT             = 464 // { int|sys||fchownat(int fd, const char *path, uid_t owner, gid_t group, int flag); }\n\tSYS_FEXECVE              = 465 // { int|sys||fexecve(int fd, char * const *argp, char * const *envp); }\n\tSYS_FSTATAT              = 466 // { int|sys||fstatat(int fd, const char *path, struct stat *buf, int flag); }\n\tSYS_UTIMENSAT            = 467 // { int|sys||utimensat(int fd, const char *path, const struct timespec *tptr, int flag); }\n\tSYS_OPENAT               = 468 // { int|sys||openat(int fd, const char *path, int oflags, ... mode_t mode); }\n\tSYS_READLINKAT           = 469 // { int|sys||readlinkat(int fd, const char *path, char *buf, size_t bufsize); }\n\tSYS_SYMLINKAT            = 470 // { int|sys||symlinkat(const char *path1, int fd, const char *path2); }\n\tSYS_UNLINKAT             = 471 // { int|sys||unlinkat(int fd, const char *path, int flag); }\n\tSYS_FUTIMENS             = 472 // { int|sys||futimens(int fd, const struct timespec *tptr); }\n\tSYS___QUOTACTL           = 473 // { int|sys||__quotactl(const char *path, struct quotactl_args *args); }\n\tSYS_POSIX_SPAWN          = 474 // { int|sys||posix_spawn(pid_t *pid, const char *path, const struct posix_spawn_file_actions *file_actions, const struct posix_spawnattr *attrp, char *const *argv, char *const *envp); }\n\tSYS_RECVMMSG             = 475 // { int|sys||recvmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags, struct timespec *timeout); }\n\tSYS_SENDMMSG             = 476 // { int|sys||sendmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags); }\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go",
    "content": "// go run mksysnum.go http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm && netbsd\n\npackage unix\n\nconst (\n\tSYS_EXIT                 = 1   // { void|sys||exit(int rval); }\n\tSYS_FORK                 = 2   // { int|sys||fork(void); }\n\tSYS_READ                 = 3   // { ssize_t|sys||read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE                = 4   // { ssize_t|sys||write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN                 = 5   // { int|sys||open(const char *path, int flags, ... mode_t mode); }\n\tSYS_CLOSE                = 6   // { int|sys||close(int fd); }\n\tSYS_LINK                 = 9   // { int|sys||link(const char *path, const char *link); }\n\tSYS_UNLINK               = 10  // { int|sys||unlink(const char *path); }\n\tSYS_CHDIR                = 12  // { int|sys||chdir(const char *path); }\n\tSYS_FCHDIR               = 13  // { int|sys||fchdir(int fd); }\n\tSYS_CHMOD                = 15  // { int|sys||chmod(const char *path, mode_t mode); }\n\tSYS_CHOWN                = 16  // { int|sys||chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_BREAK                = 17  // { int|sys||obreak(char *nsize); }\n\tSYS_GETPID               = 20  // { pid_t|sys||getpid_with_ppid(void); }\n\tSYS_UNMOUNT              = 22  // { int|sys||unmount(const char *path, int flags); }\n\tSYS_SETUID               = 23  // { int|sys||setuid(uid_t uid); }\n\tSYS_GETUID               = 24  // { uid_t|sys||getuid_with_euid(void); }\n\tSYS_GETEUID              = 25  // { uid_t|sys||geteuid(void); }\n\tSYS_PTRACE               = 26  // { int|sys||ptrace(int req, pid_t pid, void *addr, int data); }\n\tSYS_RECVMSG              = 27  // { ssize_t|sys||recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG              = 28  // { ssize_t|sys||sendmsg(int s, const struct msghdr *msg, int flags); }\n\tSYS_RECVFROM             = 29  // { ssize_t|sys||recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }\n\tSYS_ACCEPT               = 30  // { int|sys||accept(int s, struct sockaddr *name, socklen_t *anamelen); }\n\tSYS_GETPEERNAME          = 31  // { int|sys||getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_GETSOCKNAME          = 32  // { int|sys||getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_ACCESS               = 33  // { int|sys||access(const char *path, int flags); }\n\tSYS_CHFLAGS              = 34  // { int|sys||chflags(const char *path, u_long flags); }\n\tSYS_FCHFLAGS             = 35  // { int|sys||fchflags(int fd, u_long flags); }\n\tSYS_SYNC                 = 36  // { void|sys||sync(void); }\n\tSYS_KILL                 = 37  // { int|sys||kill(pid_t pid, int signum); }\n\tSYS_GETPPID              = 39  // { pid_t|sys||getppid(void); }\n\tSYS_DUP                  = 41  // { int|sys||dup(int fd); }\n\tSYS_PIPE                 = 42  // { int|sys||pipe(void); }\n\tSYS_GETEGID              = 43  // { gid_t|sys||getegid(void); }\n\tSYS_PROFIL               = 44  // { int|sys||profil(char *samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE               = 45  // { int|sys||ktrace(const char *fname, int ops, int facs, pid_t pid); }\n\tSYS_GETGID               = 47  // { gid_t|sys||getgid_with_egid(void); }\n\tSYS___GETLOGIN           = 49  // { int|sys||__getlogin(char *namebuf, size_t namelen); }\n\tSYS___SETLOGIN           = 50  // { int|sys||__setlogin(const char *namebuf); }\n\tSYS_ACCT                 = 51  // { int|sys||acct(const char *path); }\n\tSYS_IOCTL                = 54  // { int|sys||ioctl(int fd, u_long com, ... void *data); }\n\tSYS_REVOKE               = 56  // { int|sys||revoke(const char *path); }\n\tSYS_SYMLINK              = 57  // { int|sys||symlink(const char *path, const char *link); }\n\tSYS_READLINK             = 58  // { ssize_t|sys||readlink(const char *path, char *buf, size_t count); }\n\tSYS_EXECVE               = 59  // { int|sys||execve(const char *path, char * const *argp, char * const *envp); }\n\tSYS_UMASK                = 60  // { mode_t|sys||umask(mode_t newmask); }\n\tSYS_CHROOT               = 61  // { int|sys||chroot(const char *path); }\n\tSYS_VFORK                = 66  // { int|sys||vfork(void); }\n\tSYS_SBRK                 = 69  // { int|sys||sbrk(intptr_t incr); }\n\tSYS_SSTK                 = 70  // { int|sys||sstk(int incr); }\n\tSYS_VADVISE              = 72  // { int|sys||ovadvise(int anom); }\n\tSYS_MUNMAP               = 73  // { int|sys||munmap(void *addr, size_t len); }\n\tSYS_MPROTECT             = 74  // { int|sys||mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE              = 75  // { int|sys||madvise(void *addr, size_t len, int behav); }\n\tSYS_MINCORE              = 78  // { int|sys||mincore(void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS            = 79  // { int|sys||getgroups(int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS            = 80  // { int|sys||setgroups(int gidsetsize, const gid_t *gidset); }\n\tSYS_GETPGRP              = 81  // { int|sys||getpgrp(void); }\n\tSYS_SETPGID              = 82  // { int|sys||setpgid(pid_t pid, pid_t pgid); }\n\tSYS_DUP2                 = 90  // { int|sys||dup2(int from, int to); }\n\tSYS_FCNTL                = 92  // { int|sys||fcntl(int fd, int cmd, ... void *arg); }\n\tSYS_FSYNC                = 95  // { int|sys||fsync(int fd); }\n\tSYS_SETPRIORITY          = 96  // { int|sys||setpriority(int which, id_t who, int prio); }\n\tSYS_CONNECT              = 98  // { int|sys||connect(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_GETPRIORITY          = 100 // { int|sys||getpriority(int which, id_t who); }\n\tSYS_BIND                 = 104 // { int|sys||bind(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_SETSOCKOPT           = 105 // { int|sys||setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }\n\tSYS_LISTEN               = 106 // { int|sys||listen(int s, int backlog); }\n\tSYS_GETSOCKOPT           = 118 // { int|sys||getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }\n\tSYS_READV                = 120 // { ssize_t|sys||readv(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_WRITEV               = 121 // { ssize_t|sys||writev(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_FCHOWN               = 123 // { int|sys||fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS_FCHMOD               = 124 // { int|sys||fchmod(int fd, mode_t mode); }\n\tSYS_SETREUID             = 126 // { int|sys||setreuid(uid_t ruid, uid_t euid); }\n\tSYS_SETREGID             = 127 // { int|sys||setregid(gid_t rgid, gid_t egid); }\n\tSYS_RENAME               = 128 // { int|sys||rename(const char *from, const char *to); }\n\tSYS_FLOCK                = 131 // { int|sys||flock(int fd, int how); }\n\tSYS_MKFIFO               = 132 // { int|sys||mkfifo(const char *path, mode_t mode); }\n\tSYS_SENDTO               = 133 // { ssize_t|sys||sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }\n\tSYS_SHUTDOWN             = 134 // { int|sys||shutdown(int s, int how); }\n\tSYS_SOCKETPAIR           = 135 // { int|sys||socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR                = 136 // { int|sys||mkdir(const char *path, mode_t mode); }\n\tSYS_RMDIR                = 137 // { int|sys||rmdir(const char *path); }\n\tSYS_SETSID               = 147 // { int|sys||setsid(void); }\n\tSYS_SYSARCH              = 165 // { int|sys||sysarch(int op, void *parms); }\n\tSYS_PREAD                = 173 // { ssize_t|sys||pread(int fd, void *buf, size_t nbyte, int PAD, off_t offset); }\n\tSYS_PWRITE               = 174 // { ssize_t|sys||pwrite(int fd, const void *buf, size_t nbyte, int PAD, off_t offset); }\n\tSYS_NTP_ADJTIME          = 176 // { int|sys||ntp_adjtime(struct timex *tp); }\n\tSYS_SETGID               = 181 // { int|sys||setgid(gid_t gid); }\n\tSYS_SETEGID              = 182 // { int|sys||setegid(gid_t egid); }\n\tSYS_SETEUID              = 183 // { int|sys||seteuid(uid_t euid); }\n\tSYS_PATHCONF             = 191 // { long|sys||pathconf(const char *path, int name); }\n\tSYS_FPATHCONF            = 192 // { long|sys||fpathconf(int fd, int name); }\n\tSYS_GETRLIMIT            = 194 // { int|sys||getrlimit(int which, struct rlimit *rlp); }\n\tSYS_SETRLIMIT            = 195 // { int|sys||setrlimit(int which, const struct rlimit *rlp); }\n\tSYS_MMAP                 = 197 // { void *|sys||mmap(void *addr, size_t len, int prot, int flags, int fd, long PAD, off_t pos); }\n\tSYS_LSEEK                = 199 // { off_t|sys||lseek(int fd, int PAD, off_t offset, int whence); }\n\tSYS_TRUNCATE             = 200 // { int|sys||truncate(const char *path, int PAD, off_t length); }\n\tSYS_FTRUNCATE            = 201 // { int|sys||ftruncate(int fd, int PAD, off_t length); }\n\tSYS___SYSCTL             = 202 // { int|sys||__sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, const void *new, size_t newlen); }\n\tSYS_MLOCK                = 203 // { int|sys||mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK              = 204 // { int|sys||munlock(const void *addr, size_t len); }\n\tSYS_UNDELETE             = 205 // { int|sys||undelete(const char *path); }\n\tSYS_GETPGID              = 207 // { pid_t|sys||getpgid(pid_t pid); }\n\tSYS_REBOOT               = 208 // { int|sys||reboot(int opt, char *bootstr); }\n\tSYS_POLL                 = 209 // { int|sys||poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_SEMGET               = 221 // { int|sys||semget(key_t key, int nsems, int semflg); }\n\tSYS_SEMOP                = 222 // { int|sys||semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_SEMCONFIG            = 223 // { int|sys||semconfig(int flag); }\n\tSYS_MSGGET               = 225 // { int|sys||msgget(key_t key, int msgflg); }\n\tSYS_MSGSND               = 226 // { int|sys||msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV               = 227 // { ssize_t|sys||msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT                = 228 // { void *|sys||shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT                = 230 // { int|sys||shmdt(const void *shmaddr); }\n\tSYS_SHMGET               = 231 // { int|sys||shmget(key_t key, size_t size, int shmflg); }\n\tSYS_TIMER_CREATE         = 235 // { int|sys||timer_create(clockid_t clock_id, struct sigevent *evp, timer_t *timerid); }\n\tSYS_TIMER_DELETE         = 236 // { int|sys||timer_delete(timer_t timerid); }\n\tSYS_TIMER_GETOVERRUN     = 239 // { int|sys||timer_getoverrun(timer_t timerid); }\n\tSYS_FDATASYNC            = 241 // { int|sys||fdatasync(int fd); }\n\tSYS_MLOCKALL             = 242 // { int|sys||mlockall(int flags); }\n\tSYS_MUNLOCKALL           = 243 // { int|sys||munlockall(void); }\n\tSYS_SIGQUEUEINFO         = 245 // { int|sys||sigqueueinfo(pid_t pid, const siginfo_t *info); }\n\tSYS_MODCTL               = 246 // { int|sys||modctl(int cmd, void *arg); }\n\tSYS___POSIX_RENAME       = 270 // { int|sys||__posix_rename(const char *from, const char *to); }\n\tSYS_SWAPCTL              = 271 // { int|sys||swapctl(int cmd, void *arg, int misc); }\n\tSYS_MINHERIT             = 273 // { int|sys||minherit(void *addr, size_t len, int inherit); }\n\tSYS_LCHMOD               = 274 // { int|sys||lchmod(const char *path, mode_t mode); }\n\tSYS_LCHOWN               = 275 // { int|sys||lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_MSYNC                = 277 // { int|sys|13|msync(void *addr, size_t len, int flags); }\n\tSYS___POSIX_CHOWN        = 283 // { int|sys||__posix_chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS___POSIX_FCHOWN       = 284 // { int|sys||__posix_fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS___POSIX_LCHOWN       = 285 // { int|sys||__posix_lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_GETSID               = 286 // { pid_t|sys||getsid(pid_t pid); }\n\tSYS___CLONE              = 287 // { pid_t|sys||__clone(int flags, void *stack); }\n\tSYS_FKTRACE              = 288 // { int|sys||fktrace(int fd, int ops, int facs, pid_t pid); }\n\tSYS_PREADV               = 289 // { ssize_t|sys||preadv(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); }\n\tSYS_PWRITEV              = 290 // { ssize_t|sys||pwritev(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); }\n\tSYS___GETCWD             = 296 // { int|sys||__getcwd(char *bufp, size_t length); }\n\tSYS_FCHROOT              = 297 // { int|sys||fchroot(int fd); }\n\tSYS_LCHFLAGS             = 304 // { int|sys||lchflags(const char *path, u_long flags); }\n\tSYS_ISSETUGID            = 305 // { int|sys||issetugid(void); }\n\tSYS_UTRACE               = 306 // { int|sys||utrace(const char *label, void *addr, size_t len); }\n\tSYS_GETCONTEXT           = 307 // { int|sys||getcontext(struct __ucontext *ucp); }\n\tSYS_SETCONTEXT           = 308 // { int|sys||setcontext(const struct __ucontext *ucp); }\n\tSYS__LWP_CREATE          = 309 // { int|sys||_lwp_create(const struct __ucontext *ucp, u_long flags, lwpid_t *new_lwp); }\n\tSYS__LWP_EXIT            = 310 // { int|sys||_lwp_exit(void); }\n\tSYS__LWP_SELF            = 311 // { lwpid_t|sys||_lwp_self(void); }\n\tSYS__LWP_WAIT            = 312 // { int|sys||_lwp_wait(lwpid_t wait_for, lwpid_t *departed); }\n\tSYS__LWP_SUSPEND         = 313 // { int|sys||_lwp_suspend(lwpid_t target); }\n\tSYS__LWP_CONTINUE        = 314 // { int|sys||_lwp_continue(lwpid_t target); }\n\tSYS__LWP_WAKEUP          = 315 // { int|sys||_lwp_wakeup(lwpid_t target); }\n\tSYS__LWP_GETPRIVATE      = 316 // { void *|sys||_lwp_getprivate(void); }\n\tSYS__LWP_SETPRIVATE      = 317 // { void|sys||_lwp_setprivate(void *ptr); }\n\tSYS__LWP_KILL            = 318 // { int|sys||_lwp_kill(lwpid_t target, int signo); }\n\tSYS__LWP_DETACH          = 319 // { int|sys||_lwp_detach(lwpid_t target); }\n\tSYS__LWP_UNPARK          = 321 // { int|sys||_lwp_unpark(lwpid_t target, const void *hint); }\n\tSYS__LWP_UNPARK_ALL      = 322 // { ssize_t|sys||_lwp_unpark_all(const lwpid_t *targets, size_t ntargets, const void *hint); }\n\tSYS__LWP_SETNAME         = 323 // { int|sys||_lwp_setname(lwpid_t target, const char *name); }\n\tSYS__LWP_GETNAME         = 324 // { int|sys||_lwp_getname(lwpid_t target, char *name, size_t len); }\n\tSYS__LWP_CTL             = 325 // { int|sys||_lwp_ctl(int features, struct lwpctl **address); }\n\tSYS___SIGACTION_SIGTRAMP = 340 // { int|sys||__sigaction_sigtramp(int signum, const struct sigaction *nsa, struct sigaction *osa, const void *tramp, int vers); }\n\tSYS_PMC_GET_INFO         = 341 // { int|sys||pmc_get_info(int ctr, int op, void *args); }\n\tSYS_PMC_CONTROL          = 342 // { int|sys||pmc_control(int ctr, int op, void *args); }\n\tSYS_RASCTL               = 343 // { int|sys||rasctl(void *addr, size_t len, int op); }\n\tSYS_KQUEUE               = 344 // { int|sys||kqueue(void); }\n\tSYS__SCHED_SETPARAM      = 346 // { int|sys||_sched_setparam(pid_t pid, lwpid_t lid, int policy, const struct sched_param *params); }\n\tSYS__SCHED_GETPARAM      = 347 // { int|sys||_sched_getparam(pid_t pid, lwpid_t lid, int *policy, struct sched_param *params); }\n\tSYS__SCHED_SETAFFINITY   = 348 // { int|sys||_sched_setaffinity(pid_t pid, lwpid_t lid, size_t size, const cpuset_t *cpuset); }\n\tSYS__SCHED_GETAFFINITY   = 349 // { int|sys||_sched_getaffinity(pid_t pid, lwpid_t lid, size_t size, cpuset_t *cpuset); }\n\tSYS_SCHED_YIELD          = 350 // { int|sys||sched_yield(void); }\n\tSYS_FSYNC_RANGE          = 354 // { int|sys||fsync_range(int fd, int flags, off_t start, off_t length); }\n\tSYS_UUIDGEN              = 355 // { int|sys||uuidgen(struct uuid *store, int count); }\n\tSYS_GETVFSSTAT           = 356 // { int|sys||getvfsstat(struct statvfs *buf, size_t bufsize, int flags); }\n\tSYS_STATVFS1             = 357 // { int|sys||statvfs1(const char *path, struct statvfs *buf, int flags); }\n\tSYS_FSTATVFS1            = 358 // { int|sys||fstatvfs1(int fd, struct statvfs *buf, int flags); }\n\tSYS_EXTATTRCTL           = 360 // { int|sys||extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FILE     = 361 // { int|sys||extattr_set_file(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FILE     = 362 // { ssize_t|sys||extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FILE  = 363 // { int|sys||extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FD       = 364 // { int|sys||extattr_set_fd(int fd, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FD       = 365 // { ssize_t|sys||extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FD    = 366 // { int|sys||extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_LINK     = 367 // { int|sys||extattr_set_link(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_LINK     = 368 // { ssize_t|sys||extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_LINK  = 369 // { int|sys||extattr_delete_link(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_LIST_FD      = 370 // { ssize_t|sys||extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_FILE    = 371 // { ssize_t|sys||extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_LINK    = 372 // { ssize_t|sys||extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_SETXATTR             = 375 // { int|sys||setxattr(const char *path, const char *name, const void *value, size_t size, int flags); }\n\tSYS_LSETXATTR            = 376 // { int|sys||lsetxattr(const char *path, const char *name, const void *value, size_t size, int flags); }\n\tSYS_FSETXATTR            = 377 // { int|sys||fsetxattr(int fd, const char *name, const void *value, size_t size, int flags); }\n\tSYS_GETXATTR             = 378 // { int|sys||getxattr(const char *path, const char *name, void *value, size_t size); }\n\tSYS_LGETXATTR            = 379 // { int|sys||lgetxattr(const char *path, const char *name, void *value, size_t size); }\n\tSYS_FGETXATTR            = 380 // { int|sys||fgetxattr(int fd, const char *name, void *value, size_t size); }\n\tSYS_LISTXATTR            = 381 // { int|sys||listxattr(const char *path, char *list, size_t size); }\n\tSYS_LLISTXATTR           = 382 // { int|sys||llistxattr(const char *path, char *list, size_t size); }\n\tSYS_FLISTXATTR           = 383 // { int|sys||flistxattr(int fd, char *list, size_t size); }\n\tSYS_REMOVEXATTR          = 384 // { int|sys||removexattr(const char *path, const char *name); }\n\tSYS_LREMOVEXATTR         = 385 // { int|sys||lremovexattr(const char *path, const char *name); }\n\tSYS_FREMOVEXATTR         = 386 // { int|sys||fremovexattr(int fd, const char *name); }\n\tSYS_GETDENTS             = 390 // { int|sys|30|getdents(int fd, char *buf, size_t count); }\n\tSYS_SOCKET               = 394 // { int|sys|30|socket(int domain, int type, int protocol); }\n\tSYS_GETFH                = 395 // { int|sys|30|getfh(const char *fname, void *fhp, size_t *fh_size); }\n\tSYS_MOUNT                = 410 // { int|sys|50|mount(const char *type, const char *path, int flags, void *data, size_t data_len); }\n\tSYS_MREMAP               = 411 // { void *|sys||mremap(void *old_address, size_t old_size, void *new_address, size_t new_size, int flags); }\n\tSYS_PSET_CREATE          = 412 // { int|sys||pset_create(psetid_t *psid); }\n\tSYS_PSET_DESTROY         = 413 // { int|sys||pset_destroy(psetid_t psid); }\n\tSYS_PSET_ASSIGN          = 414 // { int|sys||pset_assign(psetid_t psid, cpuid_t cpuid, psetid_t *opsid); }\n\tSYS__PSET_BIND           = 415 // { int|sys||_pset_bind(idtype_t idtype, id_t first_id, id_t second_id, psetid_t psid, psetid_t *opsid); }\n\tSYS_POSIX_FADVISE        = 416 // { int|sys|50|posix_fadvise(int fd, int PAD, off_t offset, off_t len, int advice); }\n\tSYS_SELECT               = 417 // { int|sys|50|select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_GETTIMEOFDAY         = 418 // { int|sys|50|gettimeofday(struct timeval *tp, void *tzp); }\n\tSYS_SETTIMEOFDAY         = 419 // { int|sys|50|settimeofday(const struct timeval *tv, const void *tzp); }\n\tSYS_UTIMES               = 420 // { int|sys|50|utimes(const char *path, const struct timeval *tptr); }\n\tSYS_ADJTIME              = 421 // { int|sys|50|adjtime(const struct timeval *delta, struct timeval *olddelta); }\n\tSYS_FUTIMES              = 423 // { int|sys|50|futimes(int fd, const struct timeval *tptr); }\n\tSYS_LUTIMES              = 424 // { int|sys|50|lutimes(const char *path, const struct timeval *tptr); }\n\tSYS_SETITIMER            = 425 // { int|sys|50|setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_GETITIMER            = 426 // { int|sys|50|getitimer(int which, struct itimerval *itv); }\n\tSYS_CLOCK_GETTIME        = 427 // { int|sys|50|clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME        = 428 // { int|sys|50|clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES         = 429 // { int|sys|50|clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_NANOSLEEP            = 430 // { int|sys|50|nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS___SIGTIMEDWAIT       = 431 // { int|sys|50|__sigtimedwait(const sigset_t *set, siginfo_t *info, struct timespec *timeout); }\n\tSYS__LWP_PARK            = 434 // { int|sys|50|_lwp_park(const struct timespec *ts, lwpid_t unpark, const void *hint, const void *unparkhint); }\n\tSYS_KEVENT               = 435 // { int|sys|50|kevent(int fd, const struct kevent *changelist, size_t nchanges, struct kevent *eventlist, size_t nevents, const struct timespec *timeout); }\n\tSYS_PSELECT              = 436 // { int|sys|50|pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_POLLTS               = 437 // { int|sys|50|pollts(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_STAT                 = 439 // { int|sys|50|stat(const char *path, struct stat *ub); }\n\tSYS_FSTAT                = 440 // { int|sys|50|fstat(int fd, struct stat *sb); }\n\tSYS_LSTAT                = 441 // { int|sys|50|lstat(const char *path, struct stat *ub); }\n\tSYS___SEMCTL             = 442 // { int|sys|50|__semctl(int semid, int semnum, int cmd, ... union __semun *arg); }\n\tSYS_SHMCTL               = 443 // { int|sys|50|shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_MSGCTL               = 444 // { int|sys|50|msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_GETRUSAGE            = 445 // { int|sys|50|getrusage(int who, struct rusage *rusage); }\n\tSYS_TIMER_SETTIME        = 446 // { int|sys|50|timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }\n\tSYS_TIMER_GETTIME        = 447 // { int|sys|50|timer_gettime(timer_t timerid, struct itimerspec *value); }\n\tSYS_NTP_GETTIME          = 448 // { int|sys|50|ntp_gettime(struct ntptimeval *ntvp); }\n\tSYS_WAIT4                = 449 // { int|sys|50|wait4(pid_t pid, int *status, int options, struct rusage *rusage); }\n\tSYS_MKNOD                = 450 // { int|sys|50|mknod(const char *path, mode_t mode, dev_t dev); }\n\tSYS_FHSTAT               = 451 // { int|sys|50|fhstat(const void *fhp, size_t fh_size, struct stat *sb); }\n\tSYS_PIPE2                = 453 // { int|sys||pipe2(int *fildes, int flags); }\n\tSYS_DUP3                 = 454 // { int|sys||dup3(int from, int to, int flags); }\n\tSYS_KQUEUE1              = 455 // { int|sys||kqueue1(int flags); }\n\tSYS_PACCEPT              = 456 // { int|sys||paccept(int s, struct sockaddr *name, socklen_t *anamelen, const sigset_t *mask, int flags); }\n\tSYS_LINKAT               = 457 // { int|sys||linkat(int fd1, const char *name1, int fd2, const char *name2, int flags); }\n\tSYS_RENAMEAT             = 458 // { int|sys||renameat(int fromfd, const char *from, int tofd, const char *to); }\n\tSYS_MKFIFOAT             = 459 // { int|sys||mkfifoat(int fd, const char *path, mode_t mode); }\n\tSYS_MKNODAT              = 460 // { int|sys||mknodat(int fd, const char *path, mode_t mode, uint32_t dev); }\n\tSYS_MKDIRAT              = 461 // { int|sys||mkdirat(int fd, const char *path, mode_t mode); }\n\tSYS_FACCESSAT            = 462 // { int|sys||faccessat(int fd, const char *path, int amode, int flag); }\n\tSYS_FCHMODAT             = 463 // { int|sys||fchmodat(int fd, const char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT             = 464 // { int|sys||fchownat(int fd, const char *path, uid_t owner, gid_t group, int flag); }\n\tSYS_FEXECVE              = 465 // { int|sys||fexecve(int fd, char * const *argp, char * const *envp); }\n\tSYS_FSTATAT              = 466 // { int|sys||fstatat(int fd, const char *path, struct stat *buf, int flag); }\n\tSYS_UTIMENSAT            = 467 // { int|sys||utimensat(int fd, const char *path, const struct timespec *tptr, int flag); }\n\tSYS_OPENAT               = 468 // { int|sys||openat(int fd, const char *path, int oflags, ... mode_t mode); }\n\tSYS_READLINKAT           = 469 // { int|sys||readlinkat(int fd, const char *path, char *buf, size_t bufsize); }\n\tSYS_SYMLINKAT            = 470 // { int|sys||symlinkat(const char *path1, int fd, const char *path2); }\n\tSYS_UNLINKAT             = 471 // { int|sys||unlinkat(int fd, const char *path, int flag); }\n\tSYS_FUTIMENS             = 472 // { int|sys||futimens(int fd, const struct timespec *tptr); }\n\tSYS___QUOTACTL           = 473 // { int|sys||__quotactl(const char *path, struct quotactl_args *args); }\n\tSYS_POSIX_SPAWN          = 474 // { int|sys||posix_spawn(pid_t *pid, const char *path, const struct posix_spawn_file_actions *file_actions, const struct posix_spawnattr *attrp, char *const *argv, char *const *envp); }\n\tSYS_RECVMMSG             = 475 // { int|sys||recvmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags, struct timespec *timeout); }\n\tSYS_SENDMMSG             = 476 // { int|sys||sendmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags); }\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm64.go",
    "content": "// go run mksysnum.go http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master\n// Code generated by the command above; DO NOT EDIT.\n\n//go:build arm64 && netbsd\n\npackage unix\n\nconst (\n\tSYS_EXIT                 = 1   // { void|sys||exit(int rval); }\n\tSYS_FORK                 = 2   // { int|sys||fork(void); }\n\tSYS_READ                 = 3   // { ssize_t|sys||read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE                = 4   // { ssize_t|sys||write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN                 = 5   // { int|sys||open(const char *path, int flags, ... mode_t mode); }\n\tSYS_CLOSE                = 6   // { int|sys||close(int fd); }\n\tSYS_LINK                 = 9   // { int|sys||link(const char *path, const char *link); }\n\tSYS_UNLINK               = 10  // { int|sys||unlink(const char *path); }\n\tSYS_CHDIR                = 12  // { int|sys||chdir(const char *path); }\n\tSYS_FCHDIR               = 13  // { int|sys||fchdir(int fd); }\n\tSYS_CHMOD                = 15  // { int|sys||chmod(const char *path, mode_t mode); }\n\tSYS_CHOWN                = 16  // { int|sys||chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_BREAK                = 17  // { int|sys||obreak(char *nsize); }\n\tSYS_GETPID               = 20  // { pid_t|sys||getpid_with_ppid(void); }\n\tSYS_UNMOUNT              = 22  // { int|sys||unmount(const char *path, int flags); }\n\tSYS_SETUID               = 23  // { int|sys||setuid(uid_t uid); }\n\tSYS_GETUID               = 24  // { uid_t|sys||getuid_with_euid(void); }\n\tSYS_GETEUID              = 25  // { uid_t|sys||geteuid(void); }\n\tSYS_PTRACE               = 26  // { int|sys||ptrace(int req, pid_t pid, void *addr, int data); }\n\tSYS_RECVMSG              = 27  // { ssize_t|sys||recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG              = 28  // { ssize_t|sys||sendmsg(int s, const struct msghdr *msg, int flags); }\n\tSYS_RECVFROM             = 29  // { ssize_t|sys||recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }\n\tSYS_ACCEPT               = 30  // { int|sys||accept(int s, struct sockaddr *name, socklen_t *anamelen); }\n\tSYS_GETPEERNAME          = 31  // { int|sys||getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_GETSOCKNAME          = 32  // { int|sys||getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_ACCESS               = 33  // { int|sys||access(const char *path, int flags); }\n\tSYS_CHFLAGS              = 34  // { int|sys||chflags(const char *path, u_long flags); }\n\tSYS_FCHFLAGS             = 35  // { int|sys||fchflags(int fd, u_long flags); }\n\tSYS_SYNC                 = 36  // { void|sys||sync(void); }\n\tSYS_KILL                 = 37  // { int|sys||kill(pid_t pid, int signum); }\n\tSYS_GETPPID              = 39  // { pid_t|sys||getppid(void); }\n\tSYS_DUP                  = 41  // { int|sys||dup(int fd); }\n\tSYS_PIPE                 = 42  // { int|sys||pipe(void); }\n\tSYS_GETEGID              = 43  // { gid_t|sys||getegid(void); }\n\tSYS_PROFIL               = 44  // { int|sys||profil(char *samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE               = 45  // { int|sys||ktrace(const char *fname, int ops, int facs, pid_t pid); }\n\tSYS_GETGID               = 47  // { gid_t|sys||getgid_with_egid(void); }\n\tSYS___GETLOGIN           = 49  // { int|sys||__getlogin(char *namebuf, size_t namelen); }\n\tSYS___SETLOGIN           = 50  // { int|sys||__setlogin(const char *namebuf); }\n\tSYS_ACCT                 = 51  // { int|sys||acct(const char *path); }\n\tSYS_IOCTL                = 54  // { int|sys||ioctl(int fd, u_long com, ... void *data); }\n\tSYS_REVOKE               = 56  // { int|sys||revoke(const char *path); }\n\tSYS_SYMLINK              = 57  // { int|sys||symlink(const char *path, const char *link); }\n\tSYS_READLINK             = 58  // { ssize_t|sys||readlink(const char *path, char *buf, size_t count); }\n\tSYS_EXECVE               = 59  // { int|sys||execve(const char *path, char * const *argp, char * const *envp); }\n\tSYS_UMASK                = 60  // { mode_t|sys||umask(mode_t newmask); }\n\tSYS_CHROOT               = 61  // { int|sys||chroot(const char *path); }\n\tSYS_VFORK                = 66  // { int|sys||vfork(void); }\n\tSYS_SBRK                 = 69  // { int|sys||sbrk(intptr_t incr); }\n\tSYS_SSTK                 = 70  // { int|sys||sstk(int incr); }\n\tSYS_VADVISE              = 72  // { int|sys||ovadvise(int anom); }\n\tSYS_MUNMAP               = 73  // { int|sys||munmap(void *addr, size_t len); }\n\tSYS_MPROTECT             = 74  // { int|sys||mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE              = 75  // { int|sys||madvise(void *addr, size_t len, int behav); }\n\tSYS_MINCORE              = 78  // { int|sys||mincore(void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS            = 79  // { int|sys||getgroups(int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS            = 80  // { int|sys||setgroups(int gidsetsize, const gid_t *gidset); }\n\tSYS_GETPGRP              = 81  // { int|sys||getpgrp(void); }\n\tSYS_SETPGID              = 82  // { int|sys||setpgid(pid_t pid, pid_t pgid); }\n\tSYS_DUP2                 = 90  // { int|sys||dup2(int from, int to); }\n\tSYS_FCNTL                = 92  // { int|sys||fcntl(int fd, int cmd, ... void *arg); }\n\tSYS_FSYNC                = 95  // { int|sys||fsync(int fd); }\n\tSYS_SETPRIORITY          = 96  // { int|sys||setpriority(int which, id_t who, int prio); }\n\tSYS_CONNECT              = 98  // { int|sys||connect(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_GETPRIORITY          = 100 // { int|sys||getpriority(int which, id_t who); }\n\tSYS_BIND                 = 104 // { int|sys||bind(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_SETSOCKOPT           = 105 // { int|sys||setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }\n\tSYS_LISTEN               = 106 // { int|sys||listen(int s, int backlog); }\n\tSYS_GETSOCKOPT           = 118 // { int|sys||getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }\n\tSYS_READV                = 120 // { ssize_t|sys||readv(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_WRITEV               = 121 // { ssize_t|sys||writev(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_FCHOWN               = 123 // { int|sys||fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS_FCHMOD               = 124 // { int|sys||fchmod(int fd, mode_t mode); }\n\tSYS_SETREUID             = 126 // { int|sys||setreuid(uid_t ruid, uid_t euid); }\n\tSYS_SETREGID             = 127 // { int|sys||setregid(gid_t rgid, gid_t egid); }\n\tSYS_RENAME               = 128 // { int|sys||rename(const char *from, const char *to); }\n\tSYS_FLOCK                = 131 // { int|sys||flock(int fd, int how); }\n\tSYS_MKFIFO               = 132 // { int|sys||mkfifo(const char *path, mode_t mode); }\n\tSYS_SENDTO               = 133 // { ssize_t|sys||sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }\n\tSYS_SHUTDOWN             = 134 // { int|sys||shutdown(int s, int how); }\n\tSYS_SOCKETPAIR           = 135 // { int|sys||socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR                = 136 // { int|sys||mkdir(const char *path, mode_t mode); }\n\tSYS_RMDIR                = 137 // { int|sys||rmdir(const char *path); }\n\tSYS_SETSID               = 147 // { int|sys||setsid(void); }\n\tSYS_SYSARCH              = 165 // { int|sys||sysarch(int op, void *parms); }\n\tSYS_PREAD                = 173 // { ssize_t|sys||pread(int fd, void *buf, size_t nbyte, int PAD, off_t offset); }\n\tSYS_PWRITE               = 174 // { ssize_t|sys||pwrite(int fd, const void *buf, size_t nbyte, int PAD, off_t offset); }\n\tSYS_NTP_ADJTIME          = 176 // { int|sys||ntp_adjtime(struct timex *tp); }\n\tSYS_SETGID               = 181 // { int|sys||setgid(gid_t gid); }\n\tSYS_SETEGID              = 182 // { int|sys||setegid(gid_t egid); }\n\tSYS_SETEUID              = 183 // { int|sys||seteuid(uid_t euid); }\n\tSYS_PATHCONF             = 191 // { long|sys||pathconf(const char *path, int name); }\n\tSYS_FPATHCONF            = 192 // { long|sys||fpathconf(int fd, int name); }\n\tSYS_GETRLIMIT            = 194 // { int|sys||getrlimit(int which, struct rlimit *rlp); }\n\tSYS_SETRLIMIT            = 195 // { int|sys||setrlimit(int which, const struct rlimit *rlp); }\n\tSYS_MMAP                 = 197 // { void *|sys||mmap(void *addr, size_t len, int prot, int flags, int fd, long PAD, off_t pos); }\n\tSYS_LSEEK                = 199 // { off_t|sys||lseek(int fd, int PAD, off_t offset, int whence); }\n\tSYS_TRUNCATE             = 200 // { int|sys||truncate(const char *path, int PAD, off_t length); }\n\tSYS_FTRUNCATE            = 201 // { int|sys||ftruncate(int fd, int PAD, off_t length); }\n\tSYS___SYSCTL             = 202 // { int|sys||__sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, const void *new, size_t newlen); }\n\tSYS_MLOCK                = 203 // { int|sys||mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK              = 204 // { int|sys||munlock(const void *addr, size_t len); }\n\tSYS_UNDELETE             = 205 // { int|sys||undelete(const char *path); }\n\tSYS_GETPGID              = 207 // { pid_t|sys||getpgid(pid_t pid); }\n\tSYS_REBOOT               = 208 // { int|sys||reboot(int opt, char *bootstr); }\n\tSYS_POLL                 = 209 // { int|sys||poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_SEMGET               = 221 // { int|sys||semget(key_t key, int nsems, int semflg); }\n\tSYS_SEMOP                = 222 // { int|sys||semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_SEMCONFIG            = 223 // { int|sys||semconfig(int flag); }\n\tSYS_MSGGET               = 225 // { int|sys||msgget(key_t key, int msgflg); }\n\tSYS_MSGSND               = 226 // { int|sys||msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV               = 227 // { ssize_t|sys||msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT                = 228 // { void *|sys||shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT                = 230 // { int|sys||shmdt(const void *shmaddr); }\n\tSYS_SHMGET               = 231 // { int|sys||shmget(key_t key, size_t size, int shmflg); }\n\tSYS_TIMER_CREATE         = 235 // { int|sys||timer_create(clockid_t clock_id, struct sigevent *evp, timer_t *timerid); }\n\tSYS_TIMER_DELETE         = 236 // { int|sys||timer_delete(timer_t timerid); }\n\tSYS_TIMER_GETOVERRUN     = 239 // { int|sys||timer_getoverrun(timer_t timerid); }\n\tSYS_FDATASYNC            = 241 // { int|sys||fdatasync(int fd); }\n\tSYS_MLOCKALL             = 242 // { int|sys||mlockall(int flags); }\n\tSYS_MUNLOCKALL           = 243 // { int|sys||munlockall(void); }\n\tSYS_SIGQUEUEINFO         = 245 // { int|sys||sigqueueinfo(pid_t pid, const siginfo_t *info); }\n\tSYS_MODCTL               = 246 // { int|sys||modctl(int cmd, void *arg); }\n\tSYS___POSIX_RENAME       = 270 // { int|sys||__posix_rename(const char *from, const char *to); }\n\tSYS_SWAPCTL              = 271 // { int|sys||swapctl(int cmd, void *arg, int misc); }\n\tSYS_MINHERIT             = 273 // { int|sys||minherit(void *addr, size_t len, int inherit); }\n\tSYS_LCHMOD               = 274 // { int|sys||lchmod(const char *path, mode_t mode); }\n\tSYS_LCHOWN               = 275 // { int|sys||lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_MSYNC                = 277 // { int|sys|13|msync(void *addr, size_t len, int flags); }\n\tSYS___POSIX_CHOWN        = 283 // { int|sys||__posix_chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS___POSIX_FCHOWN       = 284 // { int|sys||__posix_fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS___POSIX_LCHOWN       = 285 // { int|sys||__posix_lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_GETSID               = 286 // { pid_t|sys||getsid(pid_t pid); }\n\tSYS___CLONE              = 287 // { pid_t|sys||__clone(int flags, void *stack); }\n\tSYS_FKTRACE              = 288 // { int|sys||fktrace(int fd, int ops, int facs, pid_t pid); }\n\tSYS_PREADV               = 289 // { ssize_t|sys||preadv(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); }\n\tSYS_PWRITEV              = 290 // { ssize_t|sys||pwritev(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); }\n\tSYS___GETCWD             = 296 // { int|sys||__getcwd(char *bufp, size_t length); }\n\tSYS_FCHROOT              = 297 // { int|sys||fchroot(int fd); }\n\tSYS_LCHFLAGS             = 304 // { int|sys||lchflags(const char *path, u_long flags); }\n\tSYS_ISSETUGID            = 305 // { int|sys||issetugid(void); }\n\tSYS_UTRACE               = 306 // { int|sys||utrace(const char *label, void *addr, size_t len); }\n\tSYS_GETCONTEXT           = 307 // { int|sys||getcontext(struct __ucontext *ucp); }\n\tSYS_SETCONTEXT           = 308 // { int|sys||setcontext(const struct __ucontext *ucp); }\n\tSYS__LWP_CREATE          = 309 // { int|sys||_lwp_create(const struct __ucontext *ucp, u_long flags, lwpid_t *new_lwp); }\n\tSYS__LWP_EXIT            = 310 // { int|sys||_lwp_exit(void); }\n\tSYS__LWP_SELF            = 311 // { lwpid_t|sys||_lwp_self(void); }\n\tSYS__LWP_WAIT            = 312 // { int|sys||_lwp_wait(lwpid_t wait_for, lwpid_t *departed); }\n\tSYS__LWP_SUSPEND         = 313 // { int|sys||_lwp_suspend(lwpid_t target); }\n\tSYS__LWP_CONTINUE        = 314 // { int|sys||_lwp_continue(lwpid_t target); }\n\tSYS__LWP_WAKEUP          = 315 // { int|sys||_lwp_wakeup(lwpid_t target); }\n\tSYS__LWP_GETPRIVATE      = 316 // { void *|sys||_lwp_getprivate(void); }\n\tSYS__LWP_SETPRIVATE      = 317 // { void|sys||_lwp_setprivate(void *ptr); }\n\tSYS__LWP_KILL            = 318 // { int|sys||_lwp_kill(lwpid_t target, int signo); }\n\tSYS__LWP_DETACH          = 319 // { int|sys||_lwp_detach(lwpid_t target); }\n\tSYS__LWP_UNPARK          = 321 // { int|sys||_lwp_unpark(lwpid_t target, const void *hint); }\n\tSYS__LWP_UNPARK_ALL      = 322 // { ssize_t|sys||_lwp_unpark_all(const lwpid_t *targets, size_t ntargets, const void *hint); }\n\tSYS__LWP_SETNAME         = 323 // { int|sys||_lwp_setname(lwpid_t target, const char *name); }\n\tSYS__LWP_GETNAME         = 324 // { int|sys||_lwp_getname(lwpid_t target, char *name, size_t len); }\n\tSYS__LWP_CTL             = 325 // { int|sys||_lwp_ctl(int features, struct lwpctl **address); }\n\tSYS___SIGACTION_SIGTRAMP = 340 // { int|sys||__sigaction_sigtramp(int signum, const struct sigaction *nsa, struct sigaction *osa, const void *tramp, int vers); }\n\tSYS_PMC_GET_INFO         = 341 // { int|sys||pmc_get_info(int ctr, int op, void *args); }\n\tSYS_PMC_CONTROL          = 342 // { int|sys||pmc_control(int ctr, int op, void *args); }\n\tSYS_RASCTL               = 343 // { int|sys||rasctl(void *addr, size_t len, int op); }\n\tSYS_KQUEUE               = 344 // { int|sys||kqueue(void); }\n\tSYS__SCHED_SETPARAM      = 346 // { int|sys||_sched_setparam(pid_t pid, lwpid_t lid, int policy, const struct sched_param *params); }\n\tSYS__SCHED_GETPARAM      = 347 // { int|sys||_sched_getparam(pid_t pid, lwpid_t lid, int *policy, struct sched_param *params); }\n\tSYS__SCHED_SETAFFINITY   = 348 // { int|sys||_sched_setaffinity(pid_t pid, lwpid_t lid, size_t size, const cpuset_t *cpuset); }\n\tSYS__SCHED_GETAFFINITY   = 349 // { int|sys||_sched_getaffinity(pid_t pid, lwpid_t lid, size_t size, cpuset_t *cpuset); }\n\tSYS_SCHED_YIELD          = 350 // { int|sys||sched_yield(void); }\n\tSYS_FSYNC_RANGE          = 354 // { int|sys||fsync_range(int fd, int flags, off_t start, off_t length); }\n\tSYS_UUIDGEN              = 355 // { int|sys||uuidgen(struct uuid *store, int count); }\n\tSYS_GETVFSSTAT           = 356 // { int|sys||getvfsstat(struct statvfs *buf, size_t bufsize, int flags); }\n\tSYS_STATVFS1             = 357 // { int|sys||statvfs1(const char *path, struct statvfs *buf, int flags); }\n\tSYS_FSTATVFS1            = 358 // { int|sys||fstatvfs1(int fd, struct statvfs *buf, int flags); }\n\tSYS_EXTATTRCTL           = 360 // { int|sys||extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FILE     = 361 // { int|sys||extattr_set_file(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FILE     = 362 // { ssize_t|sys||extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FILE  = 363 // { int|sys||extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FD       = 364 // { int|sys||extattr_set_fd(int fd, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FD       = 365 // { ssize_t|sys||extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FD    = 366 // { int|sys||extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_LINK     = 367 // { int|sys||extattr_set_link(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_LINK     = 368 // { ssize_t|sys||extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_LINK  = 369 // { int|sys||extattr_delete_link(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_LIST_FD      = 370 // { ssize_t|sys||extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_FILE    = 371 // { ssize_t|sys||extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_LINK    = 372 // { ssize_t|sys||extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_SETXATTR             = 375 // { int|sys||setxattr(const char *path, const char *name, const void *value, size_t size, int flags); }\n\tSYS_LSETXATTR            = 376 // { int|sys||lsetxattr(const char *path, const char *name, const void *value, size_t size, int flags); }\n\tSYS_FSETXATTR            = 377 // { int|sys||fsetxattr(int fd, const char *name, const void *value, size_t size, int flags); }\n\tSYS_GETXATTR             = 378 // { int|sys||getxattr(const char *path, const char *name, void *value, size_t size); }\n\tSYS_LGETXATTR            = 379 // { int|sys||lgetxattr(const char *path, const char *name, void *value, size_t size); }\n\tSYS_FGETXATTR            = 380 // { int|sys||fgetxattr(int fd, const char *name, void *value, size_t size); }\n\tSYS_LISTXATTR            = 381 // { int|sys||listxattr(const char *path, char *list, size_t size); }\n\tSYS_LLISTXATTR           = 382 // { int|sys||llistxattr(const char *path, char *list, size_t size); }\n\tSYS_FLISTXATTR           = 383 // { int|sys||flistxattr(int fd, char *list, size_t size); }\n\tSYS_REMOVEXATTR          = 384 // { int|sys||removexattr(const char *path, const char *name); }\n\tSYS_LREMOVEXATTR         = 385 // { int|sys||lremovexattr(const char *path, const char *name); }\n\tSYS_FREMOVEXATTR         = 386 // { int|sys||fremovexattr(int fd, const char *name); }\n\tSYS_GETDENTS             = 390 // { int|sys|30|getdents(int fd, char *buf, size_t count); }\n\tSYS_SOCKET               = 394 // { int|sys|30|socket(int domain, int type, int protocol); }\n\tSYS_GETFH                = 395 // { int|sys|30|getfh(const char *fname, void *fhp, size_t *fh_size); }\n\tSYS_MOUNT                = 410 // { int|sys|50|mount(const char *type, const char *path, int flags, void *data, size_t data_len); }\n\tSYS_MREMAP               = 411 // { void *|sys||mremap(void *old_address, size_t old_size, void *new_address, size_t new_size, int flags); }\n\tSYS_PSET_CREATE          = 412 // { int|sys||pset_create(psetid_t *psid); }\n\tSYS_PSET_DESTROY         = 413 // { int|sys||pset_destroy(psetid_t psid); }\n\tSYS_PSET_ASSIGN          = 414 // { int|sys||pset_assign(psetid_t psid, cpuid_t cpuid, psetid_t *opsid); }\n\tSYS__PSET_BIND           = 415 // { int|sys||_pset_bind(idtype_t idtype, id_t first_id, id_t second_id, psetid_t psid, psetid_t *opsid); }\n\tSYS_POSIX_FADVISE        = 416 // { int|sys|50|posix_fadvise(int fd, int PAD, off_t offset, off_t len, int advice); }\n\tSYS_SELECT               = 417 // { int|sys|50|select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_GETTIMEOFDAY         = 418 // { int|sys|50|gettimeofday(struct timeval *tp, void *tzp); }\n\tSYS_SETTIMEOFDAY         = 419 // { int|sys|50|settimeofday(const struct timeval *tv, const void *tzp); }\n\tSYS_UTIMES               = 420 // { int|sys|50|utimes(const char *path, const struct timeval *tptr); }\n\tSYS_ADJTIME              = 421 // { int|sys|50|adjtime(const struct timeval *delta, struct timeval *olddelta); }\n\tSYS_FUTIMES              = 423 // { int|sys|50|futimes(int fd, const struct timeval *tptr); }\n\tSYS_LUTIMES              = 424 // { int|sys|50|lutimes(const char *path, const struct timeval *tptr); }\n\tSYS_SETITIMER            = 425 // { int|sys|50|setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_GETITIMER            = 426 // { int|sys|50|getitimer(int which, struct itimerval *itv); }\n\tSYS_CLOCK_GETTIME        = 427 // { int|sys|50|clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME        = 428 // { int|sys|50|clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES         = 429 // { int|sys|50|clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_NANOSLEEP            = 430 // { int|sys|50|nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS___SIGTIMEDWAIT       = 431 // { int|sys|50|__sigtimedwait(const sigset_t *set, siginfo_t *info, struct timespec *timeout); }\n\tSYS__LWP_PARK            = 434 // { int|sys|50|_lwp_park(const struct timespec *ts, lwpid_t unpark, const void *hint, const void *unparkhint); }\n\tSYS_KEVENT               = 435 // { int|sys|50|kevent(int fd, const struct kevent *changelist, size_t nchanges, struct kevent *eventlist, size_t nevents, const struct timespec *timeout); }\n\tSYS_PSELECT              = 436 // { int|sys|50|pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_POLLTS               = 437 // { int|sys|50|pollts(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_STAT                 = 439 // { int|sys|50|stat(const char *path, struct stat *ub); }\n\tSYS_FSTAT                = 440 // { int|sys|50|fstat(int fd, struct stat *sb); }\n\tSYS_LSTAT                = 441 // { int|sys|50|lstat(const char *path, struct stat *ub); }\n\tSYS___SEMCTL             = 442 // { int|sys|50|__semctl(int semid, int semnum, int cmd, ... union __semun *arg); }\n\tSYS_SHMCTL               = 443 // { int|sys|50|shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_MSGCTL               = 444 // { int|sys|50|msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_GETRUSAGE            = 445 // { int|sys|50|getrusage(int who, struct rusage *rusage); }\n\tSYS_TIMER_SETTIME        = 446 // { int|sys|50|timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }\n\tSYS_TIMER_GETTIME        = 447 // { int|sys|50|timer_gettime(timer_t timerid, struct itimerspec *value); }\n\tSYS_NTP_GETTIME          = 448 // { int|sys|50|ntp_gettime(struct ntptimeval *ntvp); }\n\tSYS_WAIT4                = 449 // { int|sys|50|wait4(pid_t pid, int *status, int options, struct rusage *rusage); }\n\tSYS_MKNOD                = 450 // { int|sys|50|mknod(const char *path, mode_t mode, dev_t dev); }\n\tSYS_FHSTAT               = 451 // { int|sys|50|fhstat(const void *fhp, size_t fh_size, struct stat *sb); }\n\tSYS_PIPE2                = 453 // { int|sys||pipe2(int *fildes, int flags); }\n\tSYS_DUP3                 = 454 // { int|sys||dup3(int from, int to, int flags); }\n\tSYS_KQUEUE1              = 455 // { int|sys||kqueue1(int flags); }\n\tSYS_PACCEPT              = 456 // { int|sys||paccept(int s, struct sockaddr *name, socklen_t *anamelen, const sigset_t *mask, int flags); }\n\tSYS_LINKAT               = 457 // { int|sys||linkat(int fd1, const char *name1, int fd2, const char *name2, int flags); }\n\tSYS_RENAMEAT             = 458 // { int|sys||renameat(int fromfd, const char *from, int tofd, const char *to); }\n\tSYS_MKFIFOAT             = 459 // { int|sys||mkfifoat(int fd, const char *path, mode_t mode); }\n\tSYS_MKNODAT              = 460 // { int|sys||mknodat(int fd, const char *path, mode_t mode, uint32_t dev); }\n\tSYS_MKDIRAT              = 461 // { int|sys||mkdirat(int fd, const char *path, mode_t mode); }\n\tSYS_FACCESSAT            = 462 // { int|sys||faccessat(int fd, const char *path, int amode, int flag); }\n\tSYS_FCHMODAT             = 463 // { int|sys||fchmodat(int fd, const char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT             = 464 // { int|sys||fchownat(int fd, const char *path, uid_t owner, gid_t group, int flag); }\n\tSYS_FEXECVE              = 465 // { int|sys||fexecve(int fd, char * const *argp, char * const *envp); }\n\tSYS_FSTATAT              = 466 // { int|sys||fstatat(int fd, const char *path, struct stat *buf, int flag); }\n\tSYS_UTIMENSAT            = 467 // { int|sys||utimensat(int fd, const char *path, const struct timespec *tptr, int flag); }\n\tSYS_OPENAT               = 468 // { int|sys||openat(int fd, const char *path, int oflags, ... mode_t mode); }\n\tSYS_READLINKAT           = 469 // { int|sys||readlinkat(int fd, const char *path, char *buf, size_t bufsize); }\n\tSYS_SYMLINKAT            = 470 // { int|sys||symlinkat(const char *path1, int fd, const char *path2); }\n\tSYS_UNLINKAT             = 471 // { int|sys||unlinkat(int fd, const char *path, int flag); }\n\tSYS_FUTIMENS             = 472 // { int|sys||futimens(int fd, const struct timespec *tptr); }\n\tSYS___QUOTACTL           = 473 // { int|sys||__quotactl(const char *path, struct quotactl_args *args); }\n\tSYS_POSIX_SPAWN          = 474 // { int|sys||posix_spawn(pid_t *pid, const char *path, const struct posix_spawn_file_actions *file_actions, const struct posix_spawnattr *attrp, char *const *argv, char *const *envp); }\n\tSYS_RECVMMSG             = 475 // { int|sys||recvmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags, struct timespec *timeout); }\n\tSYS_SENDMMSG             = 476 // { int|sys||sendmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags); }\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go",
    "content": "// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build 386 && openbsd\n\npackage unix\n\n// Deprecated: Use libc wrappers instead of direct syscalls.\nconst (\n\tSYS_EXIT           = 1   // { void sys_exit(int rval); }\n\tSYS_FORK           = 2   // { int sys_fork(void); }\n\tSYS_READ           = 3   // { ssize_t sys_read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE          = 4   // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN           = 5   // { int sys_open(const char *path, int flags, ... mode_t mode); }\n\tSYS_CLOSE          = 6   // { int sys_close(int fd); }\n\tSYS_GETENTROPY     = 7   // { int sys_getentropy(void *buf, size_t nbyte); }\n\tSYS___TFORK        = 8   // { int sys___tfork(const struct __tfork *param, size_t psize); }\n\tSYS_LINK           = 9   // { int sys_link(const char *path, const char *link); }\n\tSYS_UNLINK         = 10  // { int sys_unlink(const char *path); }\n\tSYS_WAIT4          = 11  // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); }\n\tSYS_CHDIR          = 12  // { int sys_chdir(const char *path); }\n\tSYS_FCHDIR         = 13  // { int sys_fchdir(int fd); }\n\tSYS_MKNOD          = 14  // { int sys_mknod(const char *path, mode_t mode, dev_t dev); }\n\tSYS_CHMOD          = 15  // { int sys_chmod(const char *path, mode_t mode); }\n\tSYS_CHOWN          = 16  // { int sys_chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_OBREAK         = 17  // { int sys_obreak(char *nsize); } break\n\tSYS_GETDTABLECOUNT = 18  // { int sys_getdtablecount(void); }\n\tSYS_GETRUSAGE      = 19  // { int sys_getrusage(int who, struct rusage *rusage); }\n\tSYS_GETPID         = 20  // { pid_t sys_getpid(void); }\n\tSYS_MOUNT          = 21  // { int sys_mount(const char *type, const char *path, int flags, void *data); }\n\tSYS_UNMOUNT        = 22  // { int sys_unmount(const char *path, int flags); }\n\tSYS_SETUID         = 23  // { int sys_setuid(uid_t uid); }\n\tSYS_GETUID         = 24  // { uid_t sys_getuid(void); }\n\tSYS_GETEUID        = 25  // { uid_t sys_geteuid(void); }\n\tSYS_PTRACE         = 26  // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG        = 27  // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG        = 28  // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); }\n\tSYS_RECVFROM       = 29  // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }\n\tSYS_ACCEPT         = 30  // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); }\n\tSYS_GETPEERNAME    = 31  // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_GETSOCKNAME    = 32  // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_ACCESS         = 33  // { int sys_access(const char *path, int amode); }\n\tSYS_CHFLAGS        = 34  // { int sys_chflags(const char *path, u_int flags); }\n\tSYS_FCHFLAGS       = 35  // { int sys_fchflags(int fd, u_int flags); }\n\tSYS_SYNC           = 36  // { void sys_sync(void); }\n\tSYS_STAT           = 38  // { int sys_stat(const char *path, struct stat *ub); }\n\tSYS_GETPPID        = 39  // { pid_t sys_getppid(void); }\n\tSYS_LSTAT          = 40  // { int sys_lstat(const char *path, struct stat *ub); }\n\tSYS_DUP            = 41  // { int sys_dup(int fd); }\n\tSYS_FSTATAT        = 42  // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); }\n\tSYS_GETEGID        = 43  // { gid_t sys_getegid(void); }\n\tSYS_PROFIL         = 44  // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE         = 45  // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); }\n\tSYS_SIGACTION      = 46  // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); }\n\tSYS_GETGID         = 47  // { gid_t sys_getgid(void); }\n\tSYS_SIGPROCMASK    = 48  // { int sys_sigprocmask(int how, sigset_t mask); }\n\tSYS_SETLOGIN       = 50  // { int sys_setlogin(const char *namebuf); }\n\tSYS_ACCT           = 51  // { int sys_acct(const char *path); }\n\tSYS_SIGPENDING     = 52  // { int sys_sigpending(void); }\n\tSYS_FSTAT          = 53  // { int sys_fstat(int fd, struct stat *sb); }\n\tSYS_IOCTL          = 54  // { int sys_ioctl(int fd, u_long com, ... void *data); }\n\tSYS_REBOOT         = 55  // { int sys_reboot(int opt); }\n\tSYS_REVOKE         = 56  // { int sys_revoke(const char *path); }\n\tSYS_SYMLINK        = 57  // { int sys_symlink(const char *path, const char *link); }\n\tSYS_READLINK       = 58  // { ssize_t sys_readlink(const char *path, char *buf, size_t count); }\n\tSYS_EXECVE         = 59  // { int sys_execve(const char *path, char * const *argp, char * const *envp); }\n\tSYS_UMASK          = 60  // { mode_t sys_umask(mode_t newmask); }\n\tSYS_CHROOT         = 61  // { int sys_chroot(const char *path); }\n\tSYS_GETFSSTAT      = 62  // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); }\n\tSYS_STATFS         = 63  // { int sys_statfs(const char *path, struct statfs *buf); }\n\tSYS_FSTATFS        = 64  // { int sys_fstatfs(int fd, struct statfs *buf); }\n\tSYS_FHSTATFS       = 65  // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); }\n\tSYS_VFORK          = 66  // { int sys_vfork(void); }\n\tSYS_GETTIMEOFDAY   = 67  // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_SETTIMEOFDAY   = 68  // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); }\n\tSYS_SETITIMER      = 69  // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_GETITIMER      = 70  // { int sys_getitimer(int which, struct itimerval *itv); }\n\tSYS_SELECT         = 71  // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_KEVENT         = 72  // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_MUNMAP         = 73  // { int sys_munmap(void *addr, size_t len); }\n\tSYS_MPROTECT       = 74  // { int sys_mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE        = 75  // { int sys_madvise(void *addr, size_t len, int behav); }\n\tSYS_UTIMES         = 76  // { int sys_utimes(const char *path, const struct timeval *tptr); }\n\tSYS_FUTIMES        = 77  // { int sys_futimes(int fd, const struct timeval *tptr); }\n\tSYS_MINCORE        = 78  // { int sys_mincore(void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS      = 79  // { int sys_getgroups(int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS      = 80  // { int sys_setgroups(int gidsetsize, const gid_t *gidset); }\n\tSYS_GETPGRP        = 81  // { int sys_getpgrp(void); }\n\tSYS_SETPGID        = 82  // { int sys_setpgid(pid_t pid, pid_t pgid); }\n\tSYS_FUTEX          = 83  // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); }\n\tSYS_UTIMENSAT      = 84  // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); }\n\tSYS_FUTIMENS       = 85  // { int sys_futimens(int fd, const struct timespec *times); }\n\tSYS_KBIND          = 86  // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); }\n\tSYS_CLOCK_GETTIME  = 87  // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME  = 88  // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES   = 89  // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_DUP2           = 90  // { int sys_dup2(int from, int to); }\n\tSYS_NANOSLEEP      = 91  // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_FCNTL          = 92  // { int sys_fcntl(int fd, int cmd, ... void *arg); }\n\tSYS_ACCEPT4        = 93  // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); }\n\tSYS___THRSLEEP     = 94  // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); }\n\tSYS_FSYNC          = 95  // { int sys_fsync(int fd); }\n\tSYS_SETPRIORITY    = 96  // { int sys_setpriority(int which, id_t who, int prio); }\n\tSYS_SOCKET         = 97  // { int sys_socket(int domain, int type, int protocol); }\n\tSYS_CONNECT        = 98  // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_GETDENTS       = 99  // { int sys_getdents(int fd, void *buf, size_t buflen); }\n\tSYS_GETPRIORITY    = 100 // { int sys_getpriority(int which, id_t who); }\n\tSYS_PIPE2          = 101 // { int sys_pipe2(int *fdp, int flags); }\n\tSYS_DUP3           = 102 // { int sys_dup3(int from, int to, int flags); }\n\tSYS_SIGRETURN      = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); }\n\tSYS_BIND           = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_SETSOCKOPT     = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }\n\tSYS_LISTEN         = 106 // { int sys_listen(int s, int backlog); }\n\tSYS_CHFLAGSAT      = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); }\n\tSYS_PLEDGE         = 108 // { int sys_pledge(const char *promises, const char *execpromises); }\n\tSYS_PPOLL          = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_PSELECT        = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_SIGSUSPEND     = 111 // { int sys_sigsuspend(int mask); }\n\tSYS_SENDSYSLOG     = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); }\n\tSYS_UNVEIL         = 114 // { int sys_unveil(const char *path, const char *permissions); }\n\tSYS_GETSOCKOPT     = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }\n\tSYS_THRKILL        = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); }\n\tSYS_READV          = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_WRITEV         = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_KILL           = 122 // { int sys_kill(int pid, int signum); }\n\tSYS_FCHOWN         = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS_FCHMOD         = 124 // { int sys_fchmod(int fd, mode_t mode); }\n\tSYS_SETREUID       = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); }\n\tSYS_SETREGID       = 127 // { int sys_setregid(gid_t rgid, gid_t egid); }\n\tSYS_RENAME         = 128 // { int sys_rename(const char *from, const char *to); }\n\tSYS_FLOCK          = 131 // { int sys_flock(int fd, int how); }\n\tSYS_MKFIFO         = 132 // { int sys_mkfifo(const char *path, mode_t mode); }\n\tSYS_SENDTO         = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }\n\tSYS_SHUTDOWN       = 134 // { int sys_shutdown(int s, int how); }\n\tSYS_SOCKETPAIR     = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR          = 136 // { int sys_mkdir(const char *path, mode_t mode); }\n\tSYS_RMDIR          = 137 // { int sys_rmdir(const char *path); }\n\tSYS_ADJTIME        = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); }\n\tSYS_GETLOGIN_R     = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); }\n\tSYS_SETSID         = 147 // { int sys_setsid(void); }\n\tSYS_QUOTACTL       = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); }\n\tSYS_NFSSVC         = 155 // { int sys_nfssvc(int flag, void *argp); }\n\tSYS_GETFH          = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); }\n\tSYS_SYSARCH        = 165 // { int sys_sysarch(int op, void *parms); }\n\tSYS_PREAD          = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_PWRITE         = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_SETGID         = 181 // { int sys_setgid(gid_t gid); }\n\tSYS_SETEGID        = 182 // { int sys_setegid(gid_t egid); }\n\tSYS_SETEUID        = 183 // { int sys_seteuid(uid_t euid); }\n\tSYS_PATHCONF       = 191 // { long sys_pathconf(const char *path, int name); }\n\tSYS_FPATHCONF      = 192 // { long sys_fpathconf(int fd, int name); }\n\tSYS_SWAPCTL        = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); }\n\tSYS_GETRLIMIT      = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); }\n\tSYS_SETRLIMIT      = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); }\n\tSYS_MMAP           = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_LSEEK          = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); }\n\tSYS_TRUNCATE       = 200 // { int sys_truncate(const char *path, int pad, off_t length); }\n\tSYS_FTRUNCATE      = 201 // { int sys_ftruncate(int fd, int pad, off_t length); }\n\tSYS_SYSCTL         = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }\n\tSYS_MLOCK          = 203 // { int sys_mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK        = 204 // { int sys_munlock(const void *addr, size_t len); }\n\tSYS_GETPGID        = 207 // { pid_t sys_getpgid(pid_t pid); }\n\tSYS_UTRACE         = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); }\n\tSYS_SEMGET         = 221 // { int sys_semget(key_t key, int nsems, int semflg); }\n\tSYS_MSGGET         = 225 // { int sys_msgget(key_t key, int msgflg); }\n\tSYS_MSGSND         = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV         = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT          = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT          = 230 // { int sys_shmdt(const void *shmaddr); }\n\tSYS_MINHERIT       = 250 // { int sys_minherit(void *addr, size_t len, int inherit); }\n\tSYS_POLL           = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_ISSETUGID      = 253 // { int sys_issetugid(void); }\n\tSYS_LCHOWN         = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_GETSID         = 255 // { pid_t sys_getsid(pid_t pid); }\n\tSYS_MSYNC          = 256 // { int sys_msync(void *addr, size_t len, int flags); }\n\tSYS_PIPE           = 263 // { int sys_pipe(int *fdp); }\n\tSYS_FHOPEN         = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); }\n\tSYS_PREADV         = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_PWRITEV        = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_KQUEUE         = 269 // { int sys_kqueue(void); }\n\tSYS_MLOCKALL       = 271 // { int sys_mlockall(int flags); }\n\tSYS_MUNLOCKALL     = 272 // { int sys_munlockall(void); }\n\tSYS_GETRESUID      = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_SETRESUID      = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_GETRESGID      = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_SETRESGID      = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_MQUERY         = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_CLOSEFROM      = 287 // { int sys_closefrom(int fd); }\n\tSYS_SIGALTSTACK    = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); }\n\tSYS_SHMGET         = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); }\n\tSYS_SEMOP          = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_FHSTAT         = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); }\n\tSYS___SEMCTL       = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_SHMCTL         = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_MSGCTL         = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_SCHED_YIELD    = 298 // { int sys_sched_yield(void); }\n\tSYS_GETTHRID       = 299 // { pid_t sys_getthrid(void); }\n\tSYS___THRWAKEUP    = 301 // { int sys___thrwakeup(const volatile void *ident, int n); }\n\tSYS___THREXIT      = 302 // { void sys___threxit(pid_t *notdead); }\n\tSYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); }\n\tSYS___GETCWD       = 304 // { int sys___getcwd(char *buf, size_t len); }\n\tSYS_ADJFREQ        = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); }\n\tSYS_SETRTABLE      = 310 // { int sys_setrtable(int rtableid); }\n\tSYS_GETRTABLE      = 311 // { int sys_getrtable(void); }\n\tSYS_FACCESSAT      = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); }\n\tSYS_FCHMODAT       = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT       = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); }\n\tSYS_LINKAT         = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); }\n\tSYS_MKDIRAT        = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); }\n\tSYS_MKFIFOAT       = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); }\n\tSYS_MKNODAT        = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); }\n\tSYS_OPENAT         = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); }\n\tSYS_READLINKAT     = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); }\n\tSYS_RENAMEAT       = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); }\n\tSYS_SYMLINKAT      = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); }\n\tSYS_UNLINKAT       = 325 // { int sys_unlinkat(int fd, const char *path, int flag); }\n\tSYS___SET_TCB      = 329 // { void sys___set_tcb(void *tcb); }\n\tSYS___GET_TCB      = 330 // { void *sys___get_tcb(void); }\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go",
    "content": "// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && openbsd\n\npackage unix\n\n// Deprecated: Use libc wrappers instead of direct syscalls.\nconst (\n\tSYS_EXIT           = 1   // { void sys_exit(int rval); }\n\tSYS_FORK           = 2   // { int sys_fork(void); }\n\tSYS_READ           = 3   // { ssize_t sys_read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE          = 4   // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN           = 5   // { int sys_open(const char *path, int flags, ... mode_t mode); }\n\tSYS_CLOSE          = 6   // { int sys_close(int fd); }\n\tSYS_GETENTROPY     = 7   // { int sys_getentropy(void *buf, size_t nbyte); }\n\tSYS___TFORK        = 8   // { int sys___tfork(const struct __tfork *param, size_t psize); }\n\tSYS_LINK           = 9   // { int sys_link(const char *path, const char *link); }\n\tSYS_UNLINK         = 10  // { int sys_unlink(const char *path); }\n\tSYS_WAIT4          = 11  // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); }\n\tSYS_CHDIR          = 12  // { int sys_chdir(const char *path); }\n\tSYS_FCHDIR         = 13  // { int sys_fchdir(int fd); }\n\tSYS_MKNOD          = 14  // { int sys_mknod(const char *path, mode_t mode, dev_t dev); }\n\tSYS_CHMOD          = 15  // { int sys_chmod(const char *path, mode_t mode); }\n\tSYS_CHOWN          = 16  // { int sys_chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_OBREAK         = 17  // { int sys_obreak(char *nsize); } break\n\tSYS_GETDTABLECOUNT = 18  // { int sys_getdtablecount(void); }\n\tSYS_GETRUSAGE      = 19  // { int sys_getrusage(int who, struct rusage *rusage); }\n\tSYS_GETPID         = 20  // { pid_t sys_getpid(void); }\n\tSYS_MOUNT          = 21  // { int sys_mount(const char *type, const char *path, int flags, void *data); }\n\tSYS_UNMOUNT        = 22  // { int sys_unmount(const char *path, int flags); }\n\tSYS_SETUID         = 23  // { int sys_setuid(uid_t uid); }\n\tSYS_GETUID         = 24  // { uid_t sys_getuid(void); }\n\tSYS_GETEUID        = 25  // { uid_t sys_geteuid(void); }\n\tSYS_PTRACE         = 26  // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG        = 27  // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG        = 28  // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); }\n\tSYS_RECVFROM       = 29  // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }\n\tSYS_ACCEPT         = 30  // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); }\n\tSYS_GETPEERNAME    = 31  // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_GETSOCKNAME    = 32  // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_ACCESS         = 33  // { int sys_access(const char *path, int amode); }\n\tSYS_CHFLAGS        = 34  // { int sys_chflags(const char *path, u_int flags); }\n\tSYS_FCHFLAGS       = 35  // { int sys_fchflags(int fd, u_int flags); }\n\tSYS_SYNC           = 36  // { void sys_sync(void); }\n\tSYS_STAT           = 38  // { int sys_stat(const char *path, struct stat *ub); }\n\tSYS_GETPPID        = 39  // { pid_t sys_getppid(void); }\n\tSYS_LSTAT          = 40  // { int sys_lstat(const char *path, struct stat *ub); }\n\tSYS_DUP            = 41  // { int sys_dup(int fd); }\n\tSYS_FSTATAT        = 42  // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); }\n\tSYS_GETEGID        = 43  // { gid_t sys_getegid(void); }\n\tSYS_PROFIL         = 44  // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE         = 45  // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); }\n\tSYS_SIGACTION      = 46  // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); }\n\tSYS_GETGID         = 47  // { gid_t sys_getgid(void); }\n\tSYS_SIGPROCMASK    = 48  // { int sys_sigprocmask(int how, sigset_t mask); }\n\tSYS_SETLOGIN       = 50  // { int sys_setlogin(const char *namebuf); }\n\tSYS_ACCT           = 51  // { int sys_acct(const char *path); }\n\tSYS_SIGPENDING     = 52  // { int sys_sigpending(void); }\n\tSYS_FSTAT          = 53  // { int sys_fstat(int fd, struct stat *sb); }\n\tSYS_IOCTL          = 54  // { int sys_ioctl(int fd, u_long com, ... void *data); }\n\tSYS_REBOOT         = 55  // { int sys_reboot(int opt); }\n\tSYS_REVOKE         = 56  // { int sys_revoke(const char *path); }\n\tSYS_SYMLINK        = 57  // { int sys_symlink(const char *path, const char *link); }\n\tSYS_READLINK       = 58  // { ssize_t sys_readlink(const char *path, char *buf, size_t count); }\n\tSYS_EXECVE         = 59  // { int sys_execve(const char *path, char * const *argp, char * const *envp); }\n\tSYS_UMASK          = 60  // { mode_t sys_umask(mode_t newmask); }\n\tSYS_CHROOT         = 61  // { int sys_chroot(const char *path); }\n\tSYS_GETFSSTAT      = 62  // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); }\n\tSYS_STATFS         = 63  // { int sys_statfs(const char *path, struct statfs *buf); }\n\tSYS_FSTATFS        = 64  // { int sys_fstatfs(int fd, struct statfs *buf); }\n\tSYS_FHSTATFS       = 65  // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); }\n\tSYS_VFORK          = 66  // { int sys_vfork(void); }\n\tSYS_GETTIMEOFDAY   = 67  // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_SETTIMEOFDAY   = 68  // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); }\n\tSYS_SETITIMER      = 69  // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_GETITIMER      = 70  // { int sys_getitimer(int which, struct itimerval *itv); }\n\tSYS_SELECT         = 71  // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_KEVENT         = 72  // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_MUNMAP         = 73  // { int sys_munmap(void *addr, size_t len); }\n\tSYS_MPROTECT       = 74  // { int sys_mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE        = 75  // { int sys_madvise(void *addr, size_t len, int behav); }\n\tSYS_UTIMES         = 76  // { int sys_utimes(const char *path, const struct timeval *tptr); }\n\tSYS_FUTIMES        = 77  // { int sys_futimes(int fd, const struct timeval *tptr); }\n\tSYS_MINCORE        = 78  // { int sys_mincore(void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS      = 79  // { int sys_getgroups(int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS      = 80  // { int sys_setgroups(int gidsetsize, const gid_t *gidset); }\n\tSYS_GETPGRP        = 81  // { int sys_getpgrp(void); }\n\tSYS_SETPGID        = 82  // { int sys_setpgid(pid_t pid, pid_t pgid); }\n\tSYS_FUTEX          = 83  // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); }\n\tSYS_UTIMENSAT      = 84  // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); }\n\tSYS_FUTIMENS       = 85  // { int sys_futimens(int fd, const struct timespec *times); }\n\tSYS_KBIND          = 86  // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); }\n\tSYS_CLOCK_GETTIME  = 87  // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME  = 88  // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES   = 89  // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_DUP2           = 90  // { int sys_dup2(int from, int to); }\n\tSYS_NANOSLEEP      = 91  // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_FCNTL          = 92  // { int sys_fcntl(int fd, int cmd, ... void *arg); }\n\tSYS_ACCEPT4        = 93  // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); }\n\tSYS___THRSLEEP     = 94  // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); }\n\tSYS_FSYNC          = 95  // { int sys_fsync(int fd); }\n\tSYS_SETPRIORITY    = 96  // { int sys_setpriority(int which, id_t who, int prio); }\n\tSYS_SOCKET         = 97  // { int sys_socket(int domain, int type, int protocol); }\n\tSYS_CONNECT        = 98  // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_GETDENTS       = 99  // { int sys_getdents(int fd, void *buf, size_t buflen); }\n\tSYS_GETPRIORITY    = 100 // { int sys_getpriority(int which, id_t who); }\n\tSYS_PIPE2          = 101 // { int sys_pipe2(int *fdp, int flags); }\n\tSYS_DUP3           = 102 // { int sys_dup3(int from, int to, int flags); }\n\tSYS_SIGRETURN      = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); }\n\tSYS_BIND           = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_SETSOCKOPT     = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }\n\tSYS_LISTEN         = 106 // { int sys_listen(int s, int backlog); }\n\tSYS_CHFLAGSAT      = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); }\n\tSYS_PLEDGE         = 108 // { int sys_pledge(const char *promises, const char *execpromises); }\n\tSYS_PPOLL          = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_PSELECT        = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_SIGSUSPEND     = 111 // { int sys_sigsuspend(int mask); }\n\tSYS_SENDSYSLOG     = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); }\n\tSYS_UNVEIL         = 114 // { int sys_unveil(const char *path, const char *permissions); }\n\tSYS_GETSOCKOPT     = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }\n\tSYS_THRKILL        = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); }\n\tSYS_READV          = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_WRITEV         = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_KILL           = 122 // { int sys_kill(int pid, int signum); }\n\tSYS_FCHOWN         = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS_FCHMOD         = 124 // { int sys_fchmod(int fd, mode_t mode); }\n\tSYS_SETREUID       = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); }\n\tSYS_SETREGID       = 127 // { int sys_setregid(gid_t rgid, gid_t egid); }\n\tSYS_RENAME         = 128 // { int sys_rename(const char *from, const char *to); }\n\tSYS_FLOCK          = 131 // { int sys_flock(int fd, int how); }\n\tSYS_MKFIFO         = 132 // { int sys_mkfifo(const char *path, mode_t mode); }\n\tSYS_SENDTO         = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }\n\tSYS_SHUTDOWN       = 134 // { int sys_shutdown(int s, int how); }\n\tSYS_SOCKETPAIR     = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR          = 136 // { int sys_mkdir(const char *path, mode_t mode); }\n\tSYS_RMDIR          = 137 // { int sys_rmdir(const char *path); }\n\tSYS_ADJTIME        = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); }\n\tSYS_GETLOGIN_R     = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); }\n\tSYS_SETSID         = 147 // { int sys_setsid(void); }\n\tSYS_QUOTACTL       = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); }\n\tSYS_NFSSVC         = 155 // { int sys_nfssvc(int flag, void *argp); }\n\tSYS_GETFH          = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); }\n\tSYS_SYSARCH        = 165 // { int sys_sysarch(int op, void *parms); }\n\tSYS_PREAD          = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_PWRITE         = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_SETGID         = 181 // { int sys_setgid(gid_t gid); }\n\tSYS_SETEGID        = 182 // { int sys_setegid(gid_t egid); }\n\tSYS_SETEUID        = 183 // { int sys_seteuid(uid_t euid); }\n\tSYS_PATHCONF       = 191 // { long sys_pathconf(const char *path, int name); }\n\tSYS_FPATHCONF      = 192 // { long sys_fpathconf(int fd, int name); }\n\tSYS_SWAPCTL        = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); }\n\tSYS_GETRLIMIT      = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); }\n\tSYS_SETRLIMIT      = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); }\n\tSYS_MMAP           = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_LSEEK          = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); }\n\tSYS_TRUNCATE       = 200 // { int sys_truncate(const char *path, int pad, off_t length); }\n\tSYS_FTRUNCATE      = 201 // { int sys_ftruncate(int fd, int pad, off_t length); }\n\tSYS_SYSCTL         = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }\n\tSYS_MLOCK          = 203 // { int sys_mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK        = 204 // { int sys_munlock(const void *addr, size_t len); }\n\tSYS_GETPGID        = 207 // { pid_t sys_getpgid(pid_t pid); }\n\tSYS_UTRACE         = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); }\n\tSYS_SEMGET         = 221 // { int sys_semget(key_t key, int nsems, int semflg); }\n\tSYS_MSGGET         = 225 // { int sys_msgget(key_t key, int msgflg); }\n\tSYS_MSGSND         = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV         = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT          = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT          = 230 // { int sys_shmdt(const void *shmaddr); }\n\tSYS_MINHERIT       = 250 // { int sys_minherit(void *addr, size_t len, int inherit); }\n\tSYS_POLL           = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_ISSETUGID      = 253 // { int sys_issetugid(void); }\n\tSYS_LCHOWN         = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_GETSID         = 255 // { pid_t sys_getsid(pid_t pid); }\n\tSYS_MSYNC          = 256 // { int sys_msync(void *addr, size_t len, int flags); }\n\tSYS_PIPE           = 263 // { int sys_pipe(int *fdp); }\n\tSYS_FHOPEN         = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); }\n\tSYS_PREADV         = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_PWRITEV        = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_KQUEUE         = 269 // { int sys_kqueue(void); }\n\tSYS_MLOCKALL       = 271 // { int sys_mlockall(int flags); }\n\tSYS_MUNLOCKALL     = 272 // { int sys_munlockall(void); }\n\tSYS_GETRESUID      = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_SETRESUID      = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_GETRESGID      = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_SETRESGID      = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_MQUERY         = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_CLOSEFROM      = 287 // { int sys_closefrom(int fd); }\n\tSYS_SIGALTSTACK    = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); }\n\tSYS_SHMGET         = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); }\n\tSYS_SEMOP          = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_FHSTAT         = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); }\n\tSYS___SEMCTL       = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_SHMCTL         = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_MSGCTL         = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_SCHED_YIELD    = 298 // { int sys_sched_yield(void); }\n\tSYS_GETTHRID       = 299 // { pid_t sys_getthrid(void); }\n\tSYS___THRWAKEUP    = 301 // { int sys___thrwakeup(const volatile void *ident, int n); }\n\tSYS___THREXIT      = 302 // { void sys___threxit(pid_t *notdead); }\n\tSYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); }\n\tSYS___GETCWD       = 304 // { int sys___getcwd(char *buf, size_t len); }\n\tSYS_ADJFREQ        = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); }\n\tSYS_SETRTABLE      = 310 // { int sys_setrtable(int rtableid); }\n\tSYS_GETRTABLE      = 311 // { int sys_getrtable(void); }\n\tSYS_FACCESSAT      = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); }\n\tSYS_FCHMODAT       = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT       = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); }\n\tSYS_LINKAT         = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); }\n\tSYS_MKDIRAT        = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); }\n\tSYS_MKFIFOAT       = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); }\n\tSYS_MKNODAT        = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); }\n\tSYS_OPENAT         = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); }\n\tSYS_READLINKAT     = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); }\n\tSYS_RENAMEAT       = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); }\n\tSYS_SYMLINKAT      = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); }\n\tSYS_UNLINKAT       = 325 // { int sys_unlinkat(int fd, const char *path, int flag); }\n\tSYS___SET_TCB      = 329 // { void sys___set_tcb(void *tcb); }\n\tSYS___GET_TCB      = 330 // { void *sys___get_tcb(void); }\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go",
    "content": "// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm && openbsd\n\npackage unix\n\n// Deprecated: Use libc wrappers instead of direct syscalls.\nconst (\n\tSYS_EXIT           = 1   // { void sys_exit(int rval); }\n\tSYS_FORK           = 2   // { int sys_fork(void); }\n\tSYS_READ           = 3   // { ssize_t sys_read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE          = 4   // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN           = 5   // { int sys_open(const char *path, int flags, ... mode_t mode); }\n\tSYS_CLOSE          = 6   // { int sys_close(int fd); }\n\tSYS_GETENTROPY     = 7   // { int sys_getentropy(void *buf, size_t nbyte); }\n\tSYS___TFORK        = 8   // { int sys___tfork(const struct __tfork *param, size_t psize); }\n\tSYS_LINK           = 9   // { int sys_link(const char *path, const char *link); }\n\tSYS_UNLINK         = 10  // { int sys_unlink(const char *path); }\n\tSYS_WAIT4          = 11  // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); }\n\tSYS_CHDIR          = 12  // { int sys_chdir(const char *path); }\n\tSYS_FCHDIR         = 13  // { int sys_fchdir(int fd); }\n\tSYS_MKNOD          = 14  // { int sys_mknod(const char *path, mode_t mode, dev_t dev); }\n\tSYS_CHMOD          = 15  // { int sys_chmod(const char *path, mode_t mode); }\n\tSYS_CHOWN          = 16  // { int sys_chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_OBREAK         = 17  // { int sys_obreak(char *nsize); } break\n\tSYS_GETDTABLECOUNT = 18  // { int sys_getdtablecount(void); }\n\tSYS_GETRUSAGE      = 19  // { int sys_getrusage(int who, struct rusage *rusage); }\n\tSYS_GETPID         = 20  // { pid_t sys_getpid(void); }\n\tSYS_MOUNT          = 21  // { int sys_mount(const char *type, const char *path, int flags, void *data); }\n\tSYS_UNMOUNT        = 22  // { int sys_unmount(const char *path, int flags); }\n\tSYS_SETUID         = 23  // { int sys_setuid(uid_t uid); }\n\tSYS_GETUID         = 24  // { uid_t sys_getuid(void); }\n\tSYS_GETEUID        = 25  // { uid_t sys_geteuid(void); }\n\tSYS_PTRACE         = 26  // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG        = 27  // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG        = 28  // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); }\n\tSYS_RECVFROM       = 29  // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }\n\tSYS_ACCEPT         = 30  // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); }\n\tSYS_GETPEERNAME    = 31  // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_GETSOCKNAME    = 32  // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_ACCESS         = 33  // { int sys_access(const char *path, int amode); }\n\tSYS_CHFLAGS        = 34  // { int sys_chflags(const char *path, u_int flags); }\n\tSYS_FCHFLAGS       = 35  // { int sys_fchflags(int fd, u_int flags); }\n\tSYS_SYNC           = 36  // { void sys_sync(void); }\n\tSYS_STAT           = 38  // { int sys_stat(const char *path, struct stat *ub); }\n\tSYS_GETPPID        = 39  // { pid_t sys_getppid(void); }\n\tSYS_LSTAT          = 40  // { int sys_lstat(const char *path, struct stat *ub); }\n\tSYS_DUP            = 41  // { int sys_dup(int fd); }\n\tSYS_FSTATAT        = 42  // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); }\n\tSYS_GETEGID        = 43  // { gid_t sys_getegid(void); }\n\tSYS_PROFIL         = 44  // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE         = 45  // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); }\n\tSYS_SIGACTION      = 46  // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); }\n\tSYS_GETGID         = 47  // { gid_t sys_getgid(void); }\n\tSYS_SIGPROCMASK    = 48  // { int sys_sigprocmask(int how, sigset_t mask); }\n\tSYS_SETLOGIN       = 50  // { int sys_setlogin(const char *namebuf); }\n\tSYS_ACCT           = 51  // { int sys_acct(const char *path); }\n\tSYS_SIGPENDING     = 52  // { int sys_sigpending(void); }\n\tSYS_FSTAT          = 53  // { int sys_fstat(int fd, struct stat *sb); }\n\tSYS_IOCTL          = 54  // { int sys_ioctl(int fd, u_long com, ... void *data); }\n\tSYS_REBOOT         = 55  // { int sys_reboot(int opt); }\n\tSYS_REVOKE         = 56  // { int sys_revoke(const char *path); }\n\tSYS_SYMLINK        = 57  // { int sys_symlink(const char *path, const char *link); }\n\tSYS_READLINK       = 58  // { ssize_t sys_readlink(const char *path, char *buf, size_t count); }\n\tSYS_EXECVE         = 59  // { int sys_execve(const char *path, char * const *argp, char * const *envp); }\n\tSYS_UMASK          = 60  // { mode_t sys_umask(mode_t newmask); }\n\tSYS_CHROOT         = 61  // { int sys_chroot(const char *path); }\n\tSYS_GETFSSTAT      = 62  // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); }\n\tSYS_STATFS         = 63  // { int sys_statfs(const char *path, struct statfs *buf); }\n\tSYS_FSTATFS        = 64  // { int sys_fstatfs(int fd, struct statfs *buf); }\n\tSYS_FHSTATFS       = 65  // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); }\n\tSYS_VFORK          = 66  // { int sys_vfork(void); }\n\tSYS_GETTIMEOFDAY   = 67  // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_SETTIMEOFDAY   = 68  // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); }\n\tSYS_SETITIMER      = 69  // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_GETITIMER      = 70  // { int sys_getitimer(int which, struct itimerval *itv); }\n\tSYS_SELECT         = 71  // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_KEVENT         = 72  // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_MUNMAP         = 73  // { int sys_munmap(void *addr, size_t len); }\n\tSYS_MPROTECT       = 74  // { int sys_mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE        = 75  // { int sys_madvise(void *addr, size_t len, int behav); }\n\tSYS_UTIMES         = 76  // { int sys_utimes(const char *path, const struct timeval *tptr); }\n\tSYS_FUTIMES        = 77  // { int sys_futimes(int fd, const struct timeval *tptr); }\n\tSYS_MINCORE        = 78  // { int sys_mincore(void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS      = 79  // { int sys_getgroups(int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS      = 80  // { int sys_setgroups(int gidsetsize, const gid_t *gidset); }\n\tSYS_GETPGRP        = 81  // { int sys_getpgrp(void); }\n\tSYS_SETPGID        = 82  // { int sys_setpgid(pid_t pid, pid_t pgid); }\n\tSYS_FUTEX          = 83  // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); }\n\tSYS_UTIMENSAT      = 84  // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); }\n\tSYS_FUTIMENS       = 85  // { int sys_futimens(int fd, const struct timespec *times); }\n\tSYS_KBIND          = 86  // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); }\n\tSYS_CLOCK_GETTIME  = 87  // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME  = 88  // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES   = 89  // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_DUP2           = 90  // { int sys_dup2(int from, int to); }\n\tSYS_NANOSLEEP      = 91  // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_FCNTL          = 92  // { int sys_fcntl(int fd, int cmd, ... void *arg); }\n\tSYS_ACCEPT4        = 93  // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); }\n\tSYS___THRSLEEP     = 94  // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); }\n\tSYS_FSYNC          = 95  // { int sys_fsync(int fd); }\n\tSYS_SETPRIORITY    = 96  // { int sys_setpriority(int which, id_t who, int prio); }\n\tSYS_SOCKET         = 97  // { int sys_socket(int domain, int type, int protocol); }\n\tSYS_CONNECT        = 98  // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_GETDENTS       = 99  // { int sys_getdents(int fd, void *buf, size_t buflen); }\n\tSYS_GETPRIORITY    = 100 // { int sys_getpriority(int which, id_t who); }\n\tSYS_PIPE2          = 101 // { int sys_pipe2(int *fdp, int flags); }\n\tSYS_DUP3           = 102 // { int sys_dup3(int from, int to, int flags); }\n\tSYS_SIGRETURN      = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); }\n\tSYS_BIND           = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_SETSOCKOPT     = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }\n\tSYS_LISTEN         = 106 // { int sys_listen(int s, int backlog); }\n\tSYS_CHFLAGSAT      = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); }\n\tSYS_PLEDGE         = 108 // { int sys_pledge(const char *promises, const char *execpromises); }\n\tSYS_PPOLL          = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_PSELECT        = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_SIGSUSPEND     = 111 // { int sys_sigsuspend(int mask); }\n\tSYS_SENDSYSLOG     = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); }\n\tSYS_UNVEIL         = 114 // { int sys_unveil(const char *path, const char *permissions); }\n\tSYS_GETSOCKOPT     = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }\n\tSYS_THRKILL        = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); }\n\tSYS_READV          = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_WRITEV         = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_KILL           = 122 // { int sys_kill(int pid, int signum); }\n\tSYS_FCHOWN         = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS_FCHMOD         = 124 // { int sys_fchmod(int fd, mode_t mode); }\n\tSYS_SETREUID       = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); }\n\tSYS_SETREGID       = 127 // { int sys_setregid(gid_t rgid, gid_t egid); }\n\tSYS_RENAME         = 128 // { int sys_rename(const char *from, const char *to); }\n\tSYS_FLOCK          = 131 // { int sys_flock(int fd, int how); }\n\tSYS_MKFIFO         = 132 // { int sys_mkfifo(const char *path, mode_t mode); }\n\tSYS_SENDTO         = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }\n\tSYS_SHUTDOWN       = 134 // { int sys_shutdown(int s, int how); }\n\tSYS_SOCKETPAIR     = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR          = 136 // { int sys_mkdir(const char *path, mode_t mode); }\n\tSYS_RMDIR          = 137 // { int sys_rmdir(const char *path); }\n\tSYS_ADJTIME        = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); }\n\tSYS_GETLOGIN_R     = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); }\n\tSYS_SETSID         = 147 // { int sys_setsid(void); }\n\tSYS_QUOTACTL       = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); }\n\tSYS_NFSSVC         = 155 // { int sys_nfssvc(int flag, void *argp); }\n\tSYS_GETFH          = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); }\n\tSYS_SYSARCH        = 165 // { int sys_sysarch(int op, void *parms); }\n\tSYS_PREAD          = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_PWRITE         = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_SETGID         = 181 // { int sys_setgid(gid_t gid); }\n\tSYS_SETEGID        = 182 // { int sys_setegid(gid_t egid); }\n\tSYS_SETEUID        = 183 // { int sys_seteuid(uid_t euid); }\n\tSYS_PATHCONF       = 191 // { long sys_pathconf(const char *path, int name); }\n\tSYS_FPATHCONF      = 192 // { long sys_fpathconf(int fd, int name); }\n\tSYS_SWAPCTL        = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); }\n\tSYS_GETRLIMIT      = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); }\n\tSYS_SETRLIMIT      = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); }\n\tSYS_MMAP           = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_LSEEK          = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); }\n\tSYS_TRUNCATE       = 200 // { int sys_truncate(const char *path, int pad, off_t length); }\n\tSYS_FTRUNCATE      = 201 // { int sys_ftruncate(int fd, int pad, off_t length); }\n\tSYS_SYSCTL         = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }\n\tSYS_MLOCK          = 203 // { int sys_mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK        = 204 // { int sys_munlock(const void *addr, size_t len); }\n\tSYS_GETPGID        = 207 // { pid_t sys_getpgid(pid_t pid); }\n\tSYS_UTRACE         = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); }\n\tSYS_SEMGET         = 221 // { int sys_semget(key_t key, int nsems, int semflg); }\n\tSYS_MSGGET         = 225 // { int sys_msgget(key_t key, int msgflg); }\n\tSYS_MSGSND         = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV         = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT          = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT          = 230 // { int sys_shmdt(const void *shmaddr); }\n\tSYS_MINHERIT       = 250 // { int sys_minherit(void *addr, size_t len, int inherit); }\n\tSYS_POLL           = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_ISSETUGID      = 253 // { int sys_issetugid(void); }\n\tSYS_LCHOWN         = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_GETSID         = 255 // { pid_t sys_getsid(pid_t pid); }\n\tSYS_MSYNC          = 256 // { int sys_msync(void *addr, size_t len, int flags); }\n\tSYS_PIPE           = 263 // { int sys_pipe(int *fdp); }\n\tSYS_FHOPEN         = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); }\n\tSYS_PREADV         = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_PWRITEV        = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_KQUEUE         = 269 // { int sys_kqueue(void); }\n\tSYS_MLOCKALL       = 271 // { int sys_mlockall(int flags); }\n\tSYS_MUNLOCKALL     = 272 // { int sys_munlockall(void); }\n\tSYS_GETRESUID      = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_SETRESUID      = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_GETRESGID      = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_SETRESGID      = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_MQUERY         = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_CLOSEFROM      = 287 // { int sys_closefrom(int fd); }\n\tSYS_SIGALTSTACK    = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); }\n\tSYS_SHMGET         = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); }\n\tSYS_SEMOP          = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_FHSTAT         = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); }\n\tSYS___SEMCTL       = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_SHMCTL         = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_MSGCTL         = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_SCHED_YIELD    = 298 // { int sys_sched_yield(void); }\n\tSYS_GETTHRID       = 299 // { pid_t sys_getthrid(void); }\n\tSYS___THRWAKEUP    = 301 // { int sys___thrwakeup(const volatile void *ident, int n); }\n\tSYS___THREXIT      = 302 // { void sys___threxit(pid_t *notdead); }\n\tSYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); }\n\tSYS___GETCWD       = 304 // { int sys___getcwd(char *buf, size_t len); }\n\tSYS_ADJFREQ        = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); }\n\tSYS_SETRTABLE      = 310 // { int sys_setrtable(int rtableid); }\n\tSYS_GETRTABLE      = 311 // { int sys_getrtable(void); }\n\tSYS_FACCESSAT      = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); }\n\tSYS_FCHMODAT       = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT       = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); }\n\tSYS_LINKAT         = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); }\n\tSYS_MKDIRAT        = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); }\n\tSYS_MKFIFOAT       = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); }\n\tSYS_MKNODAT        = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); }\n\tSYS_OPENAT         = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); }\n\tSYS_READLINKAT     = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); }\n\tSYS_RENAMEAT       = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); }\n\tSYS_SYMLINKAT      = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); }\n\tSYS_UNLINKAT       = 325 // { int sys_unlinkat(int fd, const char *path, int flag); }\n\tSYS___SET_TCB      = 329 // { void sys___set_tcb(void *tcb); }\n\tSYS___GET_TCB      = 330 // { void *sys___get_tcb(void); }\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go",
    "content": "// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && openbsd\n\npackage unix\n\n// Deprecated: Use libc wrappers instead of direct syscalls.\nconst (\n\tSYS_EXIT           = 1   // { void sys_exit(int rval); }\n\tSYS_FORK           = 2   // { int sys_fork(void); }\n\tSYS_READ           = 3   // { ssize_t sys_read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE          = 4   // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN           = 5   // { int sys_open(const char *path, int flags, ... mode_t mode); }\n\tSYS_CLOSE          = 6   // { int sys_close(int fd); }\n\tSYS_GETENTROPY     = 7   // { int sys_getentropy(void *buf, size_t nbyte); }\n\tSYS___TFORK        = 8   // { int sys___tfork(const struct __tfork *param, size_t psize); }\n\tSYS_LINK           = 9   // { int sys_link(const char *path, const char *link); }\n\tSYS_UNLINK         = 10  // { int sys_unlink(const char *path); }\n\tSYS_WAIT4          = 11  // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); }\n\tSYS_CHDIR          = 12  // { int sys_chdir(const char *path); }\n\tSYS_FCHDIR         = 13  // { int sys_fchdir(int fd); }\n\tSYS_MKNOD          = 14  // { int sys_mknod(const char *path, mode_t mode, dev_t dev); }\n\tSYS_CHMOD          = 15  // { int sys_chmod(const char *path, mode_t mode); }\n\tSYS_CHOWN          = 16  // { int sys_chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_OBREAK         = 17  // { int sys_obreak(char *nsize); } break\n\tSYS_GETDTABLECOUNT = 18  // { int sys_getdtablecount(void); }\n\tSYS_GETRUSAGE      = 19  // { int sys_getrusage(int who, struct rusage *rusage); }\n\tSYS_GETPID         = 20  // { pid_t sys_getpid(void); }\n\tSYS_MOUNT          = 21  // { int sys_mount(const char *type, const char *path, int flags, void *data); }\n\tSYS_UNMOUNT        = 22  // { int sys_unmount(const char *path, int flags); }\n\tSYS_SETUID         = 23  // { int sys_setuid(uid_t uid); }\n\tSYS_GETUID         = 24  // { uid_t sys_getuid(void); }\n\tSYS_GETEUID        = 25  // { uid_t sys_geteuid(void); }\n\tSYS_PTRACE         = 26  // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG        = 27  // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG        = 28  // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); }\n\tSYS_RECVFROM       = 29  // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }\n\tSYS_ACCEPT         = 30  // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); }\n\tSYS_GETPEERNAME    = 31  // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_GETSOCKNAME    = 32  // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_ACCESS         = 33  // { int sys_access(const char *path, int amode); }\n\tSYS_CHFLAGS        = 34  // { int sys_chflags(const char *path, u_int flags); }\n\tSYS_FCHFLAGS       = 35  // { int sys_fchflags(int fd, u_int flags); }\n\tSYS_SYNC           = 36  // { void sys_sync(void); }\n\tSYS_STAT           = 38  // { int sys_stat(const char *path, struct stat *ub); }\n\tSYS_GETPPID        = 39  // { pid_t sys_getppid(void); }\n\tSYS_LSTAT          = 40  // { int sys_lstat(const char *path, struct stat *ub); }\n\tSYS_DUP            = 41  // { int sys_dup(int fd); }\n\tSYS_FSTATAT        = 42  // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); }\n\tSYS_GETEGID        = 43  // { gid_t sys_getegid(void); }\n\tSYS_PROFIL         = 44  // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE         = 45  // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); }\n\tSYS_SIGACTION      = 46  // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); }\n\tSYS_GETGID         = 47  // { gid_t sys_getgid(void); }\n\tSYS_SIGPROCMASK    = 48  // { int sys_sigprocmask(int how, sigset_t mask); }\n\tSYS_SETLOGIN       = 50  // { int sys_setlogin(const char *namebuf); }\n\tSYS_ACCT           = 51  // { int sys_acct(const char *path); }\n\tSYS_SIGPENDING     = 52  // { int sys_sigpending(void); }\n\tSYS_FSTAT          = 53  // { int sys_fstat(int fd, struct stat *sb); }\n\tSYS_IOCTL          = 54  // { int sys_ioctl(int fd, u_long com, ... void *data); }\n\tSYS_REBOOT         = 55  // { int sys_reboot(int opt); }\n\tSYS_REVOKE         = 56  // { int sys_revoke(const char *path); }\n\tSYS_SYMLINK        = 57  // { int sys_symlink(const char *path, const char *link); }\n\tSYS_READLINK       = 58  // { ssize_t sys_readlink(const char *path, char *buf, size_t count); }\n\tSYS_EXECVE         = 59  // { int sys_execve(const char *path, char * const *argp, char * const *envp); }\n\tSYS_UMASK          = 60  // { mode_t sys_umask(mode_t newmask); }\n\tSYS_CHROOT         = 61  // { int sys_chroot(const char *path); }\n\tSYS_GETFSSTAT      = 62  // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); }\n\tSYS_STATFS         = 63  // { int sys_statfs(const char *path, struct statfs *buf); }\n\tSYS_FSTATFS        = 64  // { int sys_fstatfs(int fd, struct statfs *buf); }\n\tSYS_FHSTATFS       = 65  // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); }\n\tSYS_VFORK          = 66  // { int sys_vfork(void); }\n\tSYS_GETTIMEOFDAY   = 67  // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_SETTIMEOFDAY   = 68  // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); }\n\tSYS_SETITIMER      = 69  // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_GETITIMER      = 70  // { int sys_getitimer(int which, struct itimerval *itv); }\n\tSYS_SELECT         = 71  // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_KEVENT         = 72  // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_MUNMAP         = 73  // { int sys_munmap(void *addr, size_t len); }\n\tSYS_MPROTECT       = 74  // { int sys_mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE        = 75  // { int sys_madvise(void *addr, size_t len, int behav); }\n\tSYS_UTIMES         = 76  // { int sys_utimes(const char *path, const struct timeval *tptr); }\n\tSYS_FUTIMES        = 77  // { int sys_futimes(int fd, const struct timeval *tptr); }\n\tSYS_GETGROUPS      = 79  // { int sys_getgroups(int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS      = 80  // { int sys_setgroups(int gidsetsize, const gid_t *gidset); }\n\tSYS_GETPGRP        = 81  // { int sys_getpgrp(void); }\n\tSYS_SETPGID        = 82  // { int sys_setpgid(pid_t pid, pid_t pgid); }\n\tSYS_FUTEX          = 83  // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); }\n\tSYS_UTIMENSAT      = 84  // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); }\n\tSYS_FUTIMENS       = 85  // { int sys_futimens(int fd, const struct timespec *times); }\n\tSYS_KBIND          = 86  // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); }\n\tSYS_CLOCK_GETTIME  = 87  // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME  = 88  // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES   = 89  // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_DUP2           = 90  // { int sys_dup2(int from, int to); }\n\tSYS_NANOSLEEP      = 91  // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_FCNTL          = 92  // { int sys_fcntl(int fd, int cmd, ... void *arg); }\n\tSYS_ACCEPT4        = 93  // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); }\n\tSYS___THRSLEEP     = 94  // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); }\n\tSYS_FSYNC          = 95  // { int sys_fsync(int fd); }\n\tSYS_SETPRIORITY    = 96  // { int sys_setpriority(int which, id_t who, int prio); }\n\tSYS_SOCKET         = 97  // { int sys_socket(int domain, int type, int protocol); }\n\tSYS_CONNECT        = 98  // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_GETDENTS       = 99  // { int sys_getdents(int fd, void *buf, size_t buflen); }\n\tSYS_GETPRIORITY    = 100 // { int sys_getpriority(int which, id_t who); }\n\tSYS_PIPE2          = 101 // { int sys_pipe2(int *fdp, int flags); }\n\tSYS_DUP3           = 102 // { int sys_dup3(int from, int to, int flags); }\n\tSYS_SIGRETURN      = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); }\n\tSYS_BIND           = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_SETSOCKOPT     = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }\n\tSYS_LISTEN         = 106 // { int sys_listen(int s, int backlog); }\n\tSYS_CHFLAGSAT      = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); }\n\tSYS_PLEDGE         = 108 // { int sys_pledge(const char *promises, const char *execpromises); }\n\tSYS_PPOLL          = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_PSELECT        = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_SIGSUSPEND     = 111 // { int sys_sigsuspend(int mask); }\n\tSYS_SENDSYSLOG     = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); }\n\tSYS_UNVEIL         = 114 // { int sys_unveil(const char *path, const char *permissions); }\n\tSYS_GETSOCKOPT     = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }\n\tSYS_THRKILL        = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); }\n\tSYS_READV          = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_WRITEV         = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_KILL           = 122 // { int sys_kill(int pid, int signum); }\n\tSYS_FCHOWN         = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS_FCHMOD         = 124 // { int sys_fchmod(int fd, mode_t mode); }\n\tSYS_SETREUID       = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); }\n\tSYS_SETREGID       = 127 // { int sys_setregid(gid_t rgid, gid_t egid); }\n\tSYS_RENAME         = 128 // { int sys_rename(const char *from, const char *to); }\n\tSYS_FLOCK          = 131 // { int sys_flock(int fd, int how); }\n\tSYS_MKFIFO         = 132 // { int sys_mkfifo(const char *path, mode_t mode); }\n\tSYS_SENDTO         = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }\n\tSYS_SHUTDOWN       = 134 // { int sys_shutdown(int s, int how); }\n\tSYS_SOCKETPAIR     = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR          = 136 // { int sys_mkdir(const char *path, mode_t mode); }\n\tSYS_RMDIR          = 137 // { int sys_rmdir(const char *path); }\n\tSYS_ADJTIME        = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); }\n\tSYS_GETLOGIN_R     = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); }\n\tSYS_SETSID         = 147 // { int sys_setsid(void); }\n\tSYS_QUOTACTL       = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); }\n\tSYS_NFSSVC         = 155 // { int sys_nfssvc(int flag, void *argp); }\n\tSYS_GETFH          = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); }\n\tSYS_SYSARCH        = 165 // { int sys_sysarch(int op, void *parms); }\n\tSYS_PREAD          = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_PWRITE         = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_SETGID         = 181 // { int sys_setgid(gid_t gid); }\n\tSYS_SETEGID        = 182 // { int sys_setegid(gid_t egid); }\n\tSYS_SETEUID        = 183 // { int sys_seteuid(uid_t euid); }\n\tSYS_PATHCONF       = 191 // { long sys_pathconf(const char *path, int name); }\n\tSYS_FPATHCONF      = 192 // { long sys_fpathconf(int fd, int name); }\n\tSYS_SWAPCTL        = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); }\n\tSYS_GETRLIMIT      = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); }\n\tSYS_SETRLIMIT      = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); }\n\tSYS_MMAP           = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_LSEEK          = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); }\n\tSYS_TRUNCATE       = 200 // { int sys_truncate(const char *path, int pad, off_t length); }\n\tSYS_FTRUNCATE      = 201 // { int sys_ftruncate(int fd, int pad, off_t length); }\n\tSYS_SYSCTL         = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }\n\tSYS_MLOCK          = 203 // { int sys_mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK        = 204 // { int sys_munlock(const void *addr, size_t len); }\n\tSYS_GETPGID        = 207 // { pid_t sys_getpgid(pid_t pid); }\n\tSYS_UTRACE         = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); }\n\tSYS_SEMGET         = 221 // { int sys_semget(key_t key, int nsems, int semflg); }\n\tSYS_MSGGET         = 225 // { int sys_msgget(key_t key, int msgflg); }\n\tSYS_MSGSND         = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV         = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT          = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT          = 230 // { int sys_shmdt(const void *shmaddr); }\n\tSYS_MINHERIT       = 250 // { int sys_minherit(void *addr, size_t len, int inherit); }\n\tSYS_POLL           = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_ISSETUGID      = 253 // { int sys_issetugid(void); }\n\tSYS_LCHOWN         = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_GETSID         = 255 // { pid_t sys_getsid(pid_t pid); }\n\tSYS_MSYNC          = 256 // { int sys_msync(void *addr, size_t len, int flags); }\n\tSYS_PIPE           = 263 // { int sys_pipe(int *fdp); }\n\tSYS_FHOPEN         = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); }\n\tSYS_PREADV         = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_PWRITEV        = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_KQUEUE         = 269 // { int sys_kqueue(void); }\n\tSYS_MLOCKALL       = 271 // { int sys_mlockall(int flags); }\n\tSYS_MUNLOCKALL     = 272 // { int sys_munlockall(void); }\n\tSYS_GETRESUID      = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_SETRESUID      = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_GETRESGID      = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_SETRESGID      = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_MQUERY         = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_CLOSEFROM      = 287 // { int sys_closefrom(int fd); }\n\tSYS_SIGALTSTACK    = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); }\n\tSYS_SHMGET         = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); }\n\tSYS_SEMOP          = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_FHSTAT         = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); }\n\tSYS___SEMCTL       = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_SHMCTL         = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_MSGCTL         = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_SCHED_YIELD    = 298 // { int sys_sched_yield(void); }\n\tSYS_GETTHRID       = 299 // { pid_t sys_getthrid(void); }\n\tSYS___THRWAKEUP    = 301 // { int sys___thrwakeup(const volatile void *ident, int n); }\n\tSYS___THREXIT      = 302 // { void sys___threxit(pid_t *notdead); }\n\tSYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); }\n\tSYS___GETCWD       = 304 // { int sys___getcwd(char *buf, size_t len); }\n\tSYS_ADJFREQ        = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); }\n\tSYS_SETRTABLE      = 310 // { int sys_setrtable(int rtableid); }\n\tSYS_GETRTABLE      = 311 // { int sys_getrtable(void); }\n\tSYS_FACCESSAT      = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); }\n\tSYS_FCHMODAT       = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT       = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); }\n\tSYS_LINKAT         = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); }\n\tSYS_MKDIRAT        = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); }\n\tSYS_MKFIFOAT       = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); }\n\tSYS_MKNODAT        = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); }\n\tSYS_OPENAT         = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); }\n\tSYS_READLINKAT     = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); }\n\tSYS_RENAMEAT       = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); }\n\tSYS_SYMLINKAT      = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); }\n\tSYS_UNLINKAT       = 325 // { int sys_unlinkat(int fd, const char *path, int flag); }\n\tSYS___SET_TCB      = 329 // { void sys___set_tcb(void *tcb); }\n\tSYS___GET_TCB      = 330 // { void *sys___get_tcb(void); }\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_openbsd_mips64.go",
    "content": "// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mips64 && openbsd\n\npackage unix\n\n// Deprecated: Use libc wrappers instead of direct syscalls.\nconst (\n\tSYS_EXIT           = 1   // { void sys_exit(int rval); }\n\tSYS_FORK           = 2   // { int sys_fork(void); }\n\tSYS_READ           = 3   // { ssize_t sys_read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE          = 4   // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN           = 5   // { int sys_open(const char *path, int flags, ... mode_t mode); }\n\tSYS_CLOSE          = 6   // { int sys_close(int fd); }\n\tSYS_GETENTROPY     = 7   // { int sys_getentropy(void *buf, size_t nbyte); }\n\tSYS___TFORK        = 8   // { int sys___tfork(const struct __tfork *param, size_t psize); }\n\tSYS_LINK           = 9   // { int sys_link(const char *path, const char *link); }\n\tSYS_UNLINK         = 10  // { int sys_unlink(const char *path); }\n\tSYS_WAIT4          = 11  // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); }\n\tSYS_CHDIR          = 12  // { int sys_chdir(const char *path); }\n\tSYS_FCHDIR         = 13  // { int sys_fchdir(int fd); }\n\tSYS_MKNOD          = 14  // { int sys_mknod(const char *path, mode_t mode, dev_t dev); }\n\tSYS_CHMOD          = 15  // { int sys_chmod(const char *path, mode_t mode); }\n\tSYS_CHOWN          = 16  // { int sys_chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_OBREAK         = 17  // { int sys_obreak(char *nsize); } break\n\tSYS_GETDTABLECOUNT = 18  // { int sys_getdtablecount(void); }\n\tSYS_GETRUSAGE      = 19  // { int sys_getrusage(int who, struct rusage *rusage); }\n\tSYS_GETPID         = 20  // { pid_t sys_getpid(void); }\n\tSYS_MOUNT          = 21  // { int sys_mount(const char *type, const char *path, int flags, void *data); }\n\tSYS_UNMOUNT        = 22  // { int sys_unmount(const char *path, int flags); }\n\tSYS_SETUID         = 23  // { int sys_setuid(uid_t uid); }\n\tSYS_GETUID         = 24  // { uid_t sys_getuid(void); }\n\tSYS_GETEUID        = 25  // { uid_t sys_geteuid(void); }\n\tSYS_PTRACE         = 26  // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG        = 27  // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG        = 28  // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); }\n\tSYS_RECVFROM       = 29  // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }\n\tSYS_ACCEPT         = 30  // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); }\n\tSYS_GETPEERNAME    = 31  // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_GETSOCKNAME    = 32  // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_ACCESS         = 33  // { int sys_access(const char *path, int amode); }\n\tSYS_CHFLAGS        = 34  // { int sys_chflags(const char *path, u_int flags); }\n\tSYS_FCHFLAGS       = 35  // { int sys_fchflags(int fd, u_int flags); }\n\tSYS_SYNC           = 36  // { void sys_sync(void); }\n\tSYS_MSYSCALL       = 37  // { int sys_msyscall(void *addr, size_t len); }\n\tSYS_STAT           = 38  // { int sys_stat(const char *path, struct stat *ub); }\n\tSYS_GETPPID        = 39  // { pid_t sys_getppid(void); }\n\tSYS_LSTAT          = 40  // { int sys_lstat(const char *path, struct stat *ub); }\n\tSYS_DUP            = 41  // { int sys_dup(int fd); }\n\tSYS_FSTATAT        = 42  // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); }\n\tSYS_GETEGID        = 43  // { gid_t sys_getegid(void); }\n\tSYS_PROFIL         = 44  // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE         = 45  // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); }\n\tSYS_SIGACTION      = 46  // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); }\n\tSYS_GETGID         = 47  // { gid_t sys_getgid(void); }\n\tSYS_SIGPROCMASK    = 48  // { int sys_sigprocmask(int how, sigset_t mask); }\n\tSYS_SETLOGIN       = 50  // { int sys_setlogin(const char *namebuf); }\n\tSYS_ACCT           = 51  // { int sys_acct(const char *path); }\n\tSYS_SIGPENDING     = 52  // { int sys_sigpending(void); }\n\tSYS_FSTAT          = 53  // { int sys_fstat(int fd, struct stat *sb); }\n\tSYS_IOCTL          = 54  // { int sys_ioctl(int fd, u_long com, ... void *data); }\n\tSYS_REBOOT         = 55  // { int sys_reboot(int opt); }\n\tSYS_REVOKE         = 56  // { int sys_revoke(const char *path); }\n\tSYS_SYMLINK        = 57  // { int sys_symlink(const char *path, const char *link); }\n\tSYS_READLINK       = 58  // { ssize_t sys_readlink(const char *path, char *buf, size_t count); }\n\tSYS_EXECVE         = 59  // { int sys_execve(const char *path, char * const *argp, char * const *envp); }\n\tSYS_UMASK          = 60  // { mode_t sys_umask(mode_t newmask); }\n\tSYS_CHROOT         = 61  // { int sys_chroot(const char *path); }\n\tSYS_GETFSSTAT      = 62  // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); }\n\tSYS_STATFS         = 63  // { int sys_statfs(const char *path, struct statfs *buf); }\n\tSYS_FSTATFS        = 64  // { int sys_fstatfs(int fd, struct statfs *buf); }\n\tSYS_FHSTATFS       = 65  // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); }\n\tSYS_VFORK          = 66  // { int sys_vfork(void); }\n\tSYS_GETTIMEOFDAY   = 67  // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_SETTIMEOFDAY   = 68  // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); }\n\tSYS_SETITIMER      = 69  // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_GETITIMER      = 70  // { int sys_getitimer(int which, struct itimerval *itv); }\n\tSYS_SELECT         = 71  // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_KEVENT         = 72  // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_MUNMAP         = 73  // { int sys_munmap(void *addr, size_t len); }\n\tSYS_MPROTECT       = 74  // { int sys_mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE        = 75  // { int sys_madvise(void *addr, size_t len, int behav); }\n\tSYS_UTIMES         = 76  // { int sys_utimes(const char *path, const struct timeval *tptr); }\n\tSYS_FUTIMES        = 77  // { int sys_futimes(int fd, const struct timeval *tptr); }\n\tSYS_GETGROUPS      = 79  // { int sys_getgroups(int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS      = 80  // { int sys_setgroups(int gidsetsize, const gid_t *gidset); }\n\tSYS_GETPGRP        = 81  // { int sys_getpgrp(void); }\n\tSYS_SETPGID        = 82  // { int sys_setpgid(pid_t pid, pid_t pgid); }\n\tSYS_FUTEX          = 83  // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); }\n\tSYS_UTIMENSAT      = 84  // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); }\n\tSYS_FUTIMENS       = 85  // { int sys_futimens(int fd, const struct timespec *times); }\n\tSYS_KBIND          = 86  // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); }\n\tSYS_CLOCK_GETTIME  = 87  // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME  = 88  // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES   = 89  // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_DUP2           = 90  // { int sys_dup2(int from, int to); }\n\tSYS_NANOSLEEP      = 91  // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_FCNTL          = 92  // { int sys_fcntl(int fd, int cmd, ... void *arg); }\n\tSYS_ACCEPT4        = 93  // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); }\n\tSYS___THRSLEEP     = 94  // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); }\n\tSYS_FSYNC          = 95  // { int sys_fsync(int fd); }\n\tSYS_SETPRIORITY    = 96  // { int sys_setpriority(int which, id_t who, int prio); }\n\tSYS_SOCKET         = 97  // { int sys_socket(int domain, int type, int protocol); }\n\tSYS_CONNECT        = 98  // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_GETDENTS       = 99  // { int sys_getdents(int fd, void *buf, size_t buflen); }\n\tSYS_GETPRIORITY    = 100 // { int sys_getpriority(int which, id_t who); }\n\tSYS_PIPE2          = 101 // { int sys_pipe2(int *fdp, int flags); }\n\tSYS_DUP3           = 102 // { int sys_dup3(int from, int to, int flags); }\n\tSYS_SIGRETURN      = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); }\n\tSYS_BIND           = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_SETSOCKOPT     = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }\n\tSYS_LISTEN         = 106 // { int sys_listen(int s, int backlog); }\n\tSYS_CHFLAGSAT      = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); }\n\tSYS_PLEDGE         = 108 // { int sys_pledge(const char *promises, const char *execpromises); }\n\tSYS_PPOLL          = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_PSELECT        = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_SIGSUSPEND     = 111 // { int sys_sigsuspend(int mask); }\n\tSYS_SENDSYSLOG     = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); }\n\tSYS_UNVEIL         = 114 // { int sys_unveil(const char *path, const char *permissions); }\n\tSYS___REALPATH     = 115 // { int sys___realpath(const char *pathname, char *resolved); }\n\tSYS_GETSOCKOPT     = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }\n\tSYS_THRKILL        = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); }\n\tSYS_READV          = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_WRITEV         = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_KILL           = 122 // { int sys_kill(int pid, int signum); }\n\tSYS_FCHOWN         = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS_FCHMOD         = 124 // { int sys_fchmod(int fd, mode_t mode); }\n\tSYS_SETREUID       = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); }\n\tSYS_SETREGID       = 127 // { int sys_setregid(gid_t rgid, gid_t egid); }\n\tSYS_RENAME         = 128 // { int sys_rename(const char *from, const char *to); }\n\tSYS_FLOCK          = 131 // { int sys_flock(int fd, int how); }\n\tSYS_MKFIFO         = 132 // { int sys_mkfifo(const char *path, mode_t mode); }\n\tSYS_SENDTO         = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }\n\tSYS_SHUTDOWN       = 134 // { int sys_shutdown(int s, int how); }\n\tSYS_SOCKETPAIR     = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR          = 136 // { int sys_mkdir(const char *path, mode_t mode); }\n\tSYS_RMDIR          = 137 // { int sys_rmdir(const char *path); }\n\tSYS_ADJTIME        = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); }\n\tSYS_GETLOGIN_R     = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); }\n\tSYS_SETSID         = 147 // { int sys_setsid(void); }\n\tSYS_QUOTACTL       = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); }\n\tSYS_NFSSVC         = 155 // { int sys_nfssvc(int flag, void *argp); }\n\tSYS_GETFH          = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); }\n\tSYS___TMPFD        = 164 // { int sys___tmpfd(int flags); }\n\tSYS_SYSARCH        = 165 // { int sys_sysarch(int op, void *parms); }\n\tSYS_PREAD          = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_PWRITE         = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_SETGID         = 181 // { int sys_setgid(gid_t gid); }\n\tSYS_SETEGID        = 182 // { int sys_setegid(gid_t egid); }\n\tSYS_SETEUID        = 183 // { int sys_seteuid(uid_t euid); }\n\tSYS_PATHCONF       = 191 // { long sys_pathconf(const char *path, int name); }\n\tSYS_FPATHCONF      = 192 // { long sys_fpathconf(int fd, int name); }\n\tSYS_SWAPCTL        = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); }\n\tSYS_GETRLIMIT      = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); }\n\tSYS_SETRLIMIT      = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); }\n\tSYS_MMAP           = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_LSEEK          = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); }\n\tSYS_TRUNCATE       = 200 // { int sys_truncate(const char *path, int pad, off_t length); }\n\tSYS_FTRUNCATE      = 201 // { int sys_ftruncate(int fd, int pad, off_t length); }\n\tSYS_SYSCTL         = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }\n\tSYS_MLOCK          = 203 // { int sys_mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK        = 204 // { int sys_munlock(const void *addr, size_t len); }\n\tSYS_GETPGID        = 207 // { pid_t sys_getpgid(pid_t pid); }\n\tSYS_UTRACE         = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); }\n\tSYS_SEMGET         = 221 // { int sys_semget(key_t key, int nsems, int semflg); }\n\tSYS_MSGGET         = 225 // { int sys_msgget(key_t key, int msgflg); }\n\tSYS_MSGSND         = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV         = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT          = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT          = 230 // { int sys_shmdt(const void *shmaddr); }\n\tSYS_MINHERIT       = 250 // { int sys_minherit(void *addr, size_t len, int inherit); }\n\tSYS_POLL           = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_ISSETUGID      = 253 // { int sys_issetugid(void); }\n\tSYS_LCHOWN         = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_GETSID         = 255 // { pid_t sys_getsid(pid_t pid); }\n\tSYS_MSYNC          = 256 // { int sys_msync(void *addr, size_t len, int flags); }\n\tSYS_PIPE           = 263 // { int sys_pipe(int *fdp); }\n\tSYS_FHOPEN         = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); }\n\tSYS_PREADV         = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_PWRITEV        = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_KQUEUE         = 269 // { int sys_kqueue(void); }\n\tSYS_MLOCKALL       = 271 // { int sys_mlockall(int flags); }\n\tSYS_MUNLOCKALL     = 272 // { int sys_munlockall(void); }\n\tSYS_GETRESUID      = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_SETRESUID      = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_GETRESGID      = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_SETRESGID      = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_MQUERY         = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_CLOSEFROM      = 287 // { int sys_closefrom(int fd); }\n\tSYS_SIGALTSTACK    = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); }\n\tSYS_SHMGET         = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); }\n\tSYS_SEMOP          = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_FHSTAT         = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); }\n\tSYS___SEMCTL       = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_SHMCTL         = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_MSGCTL         = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_SCHED_YIELD    = 298 // { int sys_sched_yield(void); }\n\tSYS_GETTHRID       = 299 // { pid_t sys_getthrid(void); }\n\tSYS___THRWAKEUP    = 301 // { int sys___thrwakeup(const volatile void *ident, int n); }\n\tSYS___THREXIT      = 302 // { void sys___threxit(pid_t *notdead); }\n\tSYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); }\n\tSYS___GETCWD       = 304 // { int sys___getcwd(char *buf, size_t len); }\n\tSYS_ADJFREQ        = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); }\n\tSYS_SETRTABLE      = 310 // { int sys_setrtable(int rtableid); }\n\tSYS_GETRTABLE      = 311 // { int sys_getrtable(void); }\n\tSYS_FACCESSAT      = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); }\n\tSYS_FCHMODAT       = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT       = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); }\n\tSYS_LINKAT         = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); }\n\tSYS_MKDIRAT        = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); }\n\tSYS_MKFIFOAT       = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); }\n\tSYS_MKNODAT        = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); }\n\tSYS_OPENAT         = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); }\n\tSYS_READLINKAT     = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); }\n\tSYS_RENAMEAT       = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); }\n\tSYS_SYMLINKAT      = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); }\n\tSYS_UNLINKAT       = 325 // { int sys_unlinkat(int fd, const char *path, int flag); }\n\tSYS___SET_TCB      = 329 // { void sys___set_tcb(void *tcb); }\n\tSYS___GET_TCB      = 330 // { void *sys___get_tcb(void); }\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_openbsd_ppc64.go",
    "content": "// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc64 && openbsd\n\npackage unix\n\nconst (\n\tSYS_EXIT           = 1   // { void sys_exit(int rval); }\n\tSYS_FORK           = 2   // { int sys_fork(void); }\n\tSYS_READ           = 3   // { ssize_t sys_read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE          = 4   // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN           = 5   // { int sys_open(const char *path, int flags, ... mode_t mode); }\n\tSYS_CLOSE          = 6   // { int sys_close(int fd); }\n\tSYS_GETENTROPY     = 7   // { int sys_getentropy(void *buf, size_t nbyte); }\n\tSYS___TFORK        = 8   // { int sys___tfork(const struct __tfork *param, size_t psize); }\n\tSYS_LINK           = 9   // { int sys_link(const char *path, const char *link); }\n\tSYS_UNLINK         = 10  // { int sys_unlink(const char *path); }\n\tSYS_WAIT4          = 11  // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); }\n\tSYS_CHDIR          = 12  // { int sys_chdir(const char *path); }\n\tSYS_FCHDIR         = 13  // { int sys_fchdir(int fd); }\n\tSYS_MKNOD          = 14  // { int sys_mknod(const char *path, mode_t mode, dev_t dev); }\n\tSYS_CHMOD          = 15  // { int sys_chmod(const char *path, mode_t mode); }\n\tSYS_CHOWN          = 16  // { int sys_chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_OBREAK         = 17  // { int sys_obreak(char *nsize); } break\n\tSYS_GETDTABLECOUNT = 18  // { int sys_getdtablecount(void); }\n\tSYS_GETRUSAGE      = 19  // { int sys_getrusage(int who, struct rusage *rusage); }\n\tSYS_GETPID         = 20  // { pid_t sys_getpid(void); }\n\tSYS_MOUNT          = 21  // { int sys_mount(const char *type, const char *path, int flags, void *data); }\n\tSYS_UNMOUNT        = 22  // { int sys_unmount(const char *path, int flags); }\n\tSYS_SETUID         = 23  // { int sys_setuid(uid_t uid); }\n\tSYS_GETUID         = 24  // { uid_t sys_getuid(void); }\n\tSYS_GETEUID        = 25  // { uid_t sys_geteuid(void); }\n\tSYS_PTRACE         = 26  // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG        = 27  // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG        = 28  // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); }\n\tSYS_RECVFROM       = 29  // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }\n\tSYS_ACCEPT         = 30  // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); }\n\tSYS_GETPEERNAME    = 31  // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_GETSOCKNAME    = 32  // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_ACCESS         = 33  // { int sys_access(const char *path, int amode); }\n\tSYS_CHFLAGS        = 34  // { int sys_chflags(const char *path, u_int flags); }\n\tSYS_FCHFLAGS       = 35  // { int sys_fchflags(int fd, u_int flags); }\n\tSYS_SYNC           = 36  // { void sys_sync(void); }\n\tSYS_STAT           = 38  // { int sys_stat(const char *path, struct stat *ub); }\n\tSYS_GETPPID        = 39  // { pid_t sys_getppid(void); }\n\tSYS_LSTAT          = 40  // { int sys_lstat(const char *path, struct stat *ub); }\n\tSYS_DUP            = 41  // { int sys_dup(int fd); }\n\tSYS_FSTATAT        = 42  // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); }\n\tSYS_GETEGID        = 43  // { gid_t sys_getegid(void); }\n\tSYS_PROFIL         = 44  // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE         = 45  // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); }\n\tSYS_SIGACTION      = 46  // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); }\n\tSYS_GETGID         = 47  // { gid_t sys_getgid(void); }\n\tSYS_SIGPROCMASK    = 48  // { int sys_sigprocmask(int how, sigset_t mask); }\n\tSYS_SETLOGIN       = 50  // { int sys_setlogin(const char *namebuf); }\n\tSYS_ACCT           = 51  // { int sys_acct(const char *path); }\n\tSYS_SIGPENDING     = 52  // { int sys_sigpending(void); }\n\tSYS_FSTAT          = 53  // { int sys_fstat(int fd, struct stat *sb); }\n\tSYS_IOCTL          = 54  // { int sys_ioctl(int fd, u_long com, ... void *data); }\n\tSYS_REBOOT         = 55  // { int sys_reboot(int opt); }\n\tSYS_REVOKE         = 56  // { int sys_revoke(const char *path); }\n\tSYS_SYMLINK        = 57  // { int sys_symlink(const char *path, const char *link); }\n\tSYS_READLINK       = 58  // { ssize_t sys_readlink(const char *path, char *buf, size_t count); }\n\tSYS_EXECVE         = 59  // { int sys_execve(const char *path, char * const *argp, char * const *envp); }\n\tSYS_UMASK          = 60  // { mode_t sys_umask(mode_t newmask); }\n\tSYS_CHROOT         = 61  // { int sys_chroot(const char *path); }\n\tSYS_GETFSSTAT      = 62  // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); }\n\tSYS_STATFS         = 63  // { int sys_statfs(const char *path, struct statfs *buf); }\n\tSYS_FSTATFS        = 64  // { int sys_fstatfs(int fd, struct statfs *buf); }\n\tSYS_FHSTATFS       = 65  // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); }\n\tSYS_VFORK          = 66  // { int sys_vfork(void); }\n\tSYS_GETTIMEOFDAY   = 67  // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_SETTIMEOFDAY   = 68  // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); }\n\tSYS_SETITIMER      = 69  // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_GETITIMER      = 70  // { int sys_getitimer(int which, struct itimerval *itv); }\n\tSYS_SELECT         = 71  // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_KEVENT         = 72  // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_MUNMAP         = 73  // { int sys_munmap(void *addr, size_t len); }\n\tSYS_MPROTECT       = 74  // { int sys_mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE        = 75  // { int sys_madvise(void *addr, size_t len, int behav); }\n\tSYS_UTIMES         = 76  // { int sys_utimes(const char *path, const struct timeval *tptr); }\n\tSYS_FUTIMES        = 77  // { int sys_futimes(int fd, const struct timeval *tptr); }\n\tSYS_GETGROUPS      = 79  // { int sys_getgroups(int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS      = 80  // { int sys_setgroups(int gidsetsize, const gid_t *gidset); }\n\tSYS_GETPGRP        = 81  // { int sys_getpgrp(void); }\n\tSYS_SETPGID        = 82  // { int sys_setpgid(pid_t pid, pid_t pgid); }\n\tSYS_FUTEX          = 83  // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); }\n\tSYS_UTIMENSAT      = 84  // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); }\n\tSYS_FUTIMENS       = 85  // { int sys_futimens(int fd, const struct timespec *times); }\n\tSYS_KBIND          = 86  // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); }\n\tSYS_CLOCK_GETTIME  = 87  // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME  = 88  // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES   = 89  // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_DUP2           = 90  // { int sys_dup2(int from, int to); }\n\tSYS_NANOSLEEP      = 91  // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_FCNTL          = 92  // { int sys_fcntl(int fd, int cmd, ... void *arg); }\n\tSYS_ACCEPT4        = 93  // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); }\n\tSYS___THRSLEEP     = 94  // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); }\n\tSYS_FSYNC          = 95  // { int sys_fsync(int fd); }\n\tSYS_SETPRIORITY    = 96  // { int sys_setpriority(int which, id_t who, int prio); }\n\tSYS_SOCKET         = 97  // { int sys_socket(int domain, int type, int protocol); }\n\tSYS_CONNECT        = 98  // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_GETDENTS       = 99  // { int sys_getdents(int fd, void *buf, size_t buflen); }\n\tSYS_GETPRIORITY    = 100 // { int sys_getpriority(int which, id_t who); }\n\tSYS_PIPE2          = 101 // { int sys_pipe2(int *fdp, int flags); }\n\tSYS_DUP3           = 102 // { int sys_dup3(int from, int to, int flags); }\n\tSYS_SIGRETURN      = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); }\n\tSYS_BIND           = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_SETSOCKOPT     = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }\n\tSYS_LISTEN         = 106 // { int sys_listen(int s, int backlog); }\n\tSYS_CHFLAGSAT      = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); }\n\tSYS_PLEDGE         = 108 // { int sys_pledge(const char *promises, const char *execpromises); }\n\tSYS_PPOLL          = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_PSELECT        = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_SIGSUSPEND     = 111 // { int sys_sigsuspend(int mask); }\n\tSYS_SENDSYSLOG     = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); }\n\tSYS_UNVEIL         = 114 // { int sys_unveil(const char *path, const char *permissions); }\n\tSYS_GETSOCKOPT     = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }\n\tSYS_THRKILL        = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); }\n\tSYS_READV          = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_WRITEV         = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_KILL           = 122 // { int sys_kill(int pid, int signum); }\n\tSYS_FCHOWN         = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS_FCHMOD         = 124 // { int sys_fchmod(int fd, mode_t mode); }\n\tSYS_SETREUID       = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); }\n\tSYS_SETREGID       = 127 // { int sys_setregid(gid_t rgid, gid_t egid); }\n\tSYS_RENAME         = 128 // { int sys_rename(const char *from, const char *to); }\n\tSYS_FLOCK          = 131 // { int sys_flock(int fd, int how); }\n\tSYS_MKFIFO         = 132 // { int sys_mkfifo(const char *path, mode_t mode); }\n\tSYS_SENDTO         = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }\n\tSYS_SHUTDOWN       = 134 // { int sys_shutdown(int s, int how); }\n\tSYS_SOCKETPAIR     = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR          = 136 // { int sys_mkdir(const char *path, mode_t mode); }\n\tSYS_RMDIR          = 137 // { int sys_rmdir(const char *path); }\n\tSYS_ADJTIME        = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); }\n\tSYS_GETLOGIN_R     = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); }\n\tSYS_SETSID         = 147 // { int sys_setsid(void); }\n\tSYS_QUOTACTL       = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); }\n\tSYS_NFSSVC         = 155 // { int sys_nfssvc(int flag, void *argp); }\n\tSYS_GETFH          = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); }\n\tSYS_SYSARCH        = 165 // { int sys_sysarch(int op, void *parms); }\n\tSYS_PREAD          = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_PWRITE         = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_SETGID         = 181 // { int sys_setgid(gid_t gid); }\n\tSYS_SETEGID        = 182 // { int sys_setegid(gid_t egid); }\n\tSYS_SETEUID        = 183 // { int sys_seteuid(uid_t euid); }\n\tSYS_PATHCONF       = 191 // { long sys_pathconf(const char *path, int name); }\n\tSYS_FPATHCONF      = 192 // { long sys_fpathconf(int fd, int name); }\n\tSYS_SWAPCTL        = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); }\n\tSYS_GETRLIMIT      = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); }\n\tSYS_SETRLIMIT      = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); }\n\tSYS_MMAP           = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_LSEEK          = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); }\n\tSYS_TRUNCATE       = 200 // { int sys_truncate(const char *path, int pad, off_t length); }\n\tSYS_FTRUNCATE      = 201 // { int sys_ftruncate(int fd, int pad, off_t length); }\n\tSYS_SYSCTL         = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }\n\tSYS_MLOCK          = 203 // { int sys_mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK        = 204 // { int sys_munlock(const void *addr, size_t len); }\n\tSYS_GETPGID        = 207 // { pid_t sys_getpgid(pid_t pid); }\n\tSYS_UTRACE         = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); }\n\tSYS_SEMGET         = 221 // { int sys_semget(key_t key, int nsems, int semflg); }\n\tSYS_MSGGET         = 225 // { int sys_msgget(key_t key, int msgflg); }\n\tSYS_MSGSND         = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV         = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT          = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT          = 230 // { int sys_shmdt(const void *shmaddr); }\n\tSYS_MINHERIT       = 250 // { int sys_minherit(void *addr, size_t len, int inherit); }\n\tSYS_POLL           = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_ISSETUGID      = 253 // { int sys_issetugid(void); }\n\tSYS_LCHOWN         = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_GETSID         = 255 // { pid_t sys_getsid(pid_t pid); }\n\tSYS_MSYNC          = 256 // { int sys_msync(void *addr, size_t len, int flags); }\n\tSYS_PIPE           = 263 // { int sys_pipe(int *fdp); }\n\tSYS_FHOPEN         = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); }\n\tSYS_PREADV         = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_PWRITEV        = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_KQUEUE         = 269 // { int sys_kqueue(void); }\n\tSYS_MLOCKALL       = 271 // { int sys_mlockall(int flags); }\n\tSYS_MUNLOCKALL     = 272 // { int sys_munlockall(void); }\n\tSYS_GETRESUID      = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_SETRESUID      = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_GETRESGID      = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_SETRESGID      = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_MQUERY         = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_CLOSEFROM      = 287 // { int sys_closefrom(int fd); }\n\tSYS_SIGALTSTACK    = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); }\n\tSYS_SHMGET         = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); }\n\tSYS_SEMOP          = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_FHSTAT         = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); }\n\tSYS___SEMCTL       = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_SHMCTL         = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_MSGCTL         = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_SCHED_YIELD    = 298 // { int sys_sched_yield(void); }\n\tSYS_GETTHRID       = 299 // { pid_t sys_getthrid(void); }\n\tSYS___THRWAKEUP    = 301 // { int sys___thrwakeup(const volatile void *ident, int n); }\n\tSYS___THREXIT      = 302 // { void sys___threxit(pid_t *notdead); }\n\tSYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); }\n\tSYS___GETCWD       = 304 // { int sys___getcwd(char *buf, size_t len); }\n\tSYS_ADJFREQ        = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); }\n\tSYS_SETRTABLE      = 310 // { int sys_setrtable(int rtableid); }\n\tSYS_GETRTABLE      = 311 // { int sys_getrtable(void); }\n\tSYS_FACCESSAT      = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); }\n\tSYS_FCHMODAT       = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT       = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); }\n\tSYS_LINKAT         = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); }\n\tSYS_MKDIRAT        = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); }\n\tSYS_MKFIFOAT       = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); }\n\tSYS_MKNODAT        = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); }\n\tSYS_OPENAT         = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); }\n\tSYS_READLINKAT     = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); }\n\tSYS_RENAMEAT       = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); }\n\tSYS_SYMLINKAT      = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); }\n\tSYS_UNLINKAT       = 325 // { int sys_unlinkat(int fd, const char *path, int flag); }\n\tSYS___SET_TCB      = 329 // { void sys___set_tcb(void *tcb); }\n\tSYS___GET_TCB      = 330 // { void *sys___get_tcb(void); }\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_openbsd_riscv64.go",
    "content": "// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build riscv64 && openbsd\n\npackage unix\n\n// Deprecated: Use libc wrappers instead of direct syscalls.\nconst (\n\tSYS_EXIT           = 1   // { void sys_exit(int rval); }\n\tSYS_FORK           = 2   // { int sys_fork(void); }\n\tSYS_READ           = 3   // { ssize_t sys_read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE          = 4   // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN           = 5   // { int sys_open(const char *path, int flags, ... mode_t mode); }\n\tSYS_CLOSE          = 6   // { int sys_close(int fd); }\n\tSYS_GETENTROPY     = 7   // { int sys_getentropy(void *buf, size_t nbyte); }\n\tSYS___TFORK        = 8   // { int sys___tfork(const struct __tfork *param, size_t psize); }\n\tSYS_LINK           = 9   // { int sys_link(const char *path, const char *link); }\n\tSYS_UNLINK         = 10  // { int sys_unlink(const char *path); }\n\tSYS_WAIT4          = 11  // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); }\n\tSYS_CHDIR          = 12  // { int sys_chdir(const char *path); }\n\tSYS_FCHDIR         = 13  // { int sys_fchdir(int fd); }\n\tSYS_MKNOD          = 14  // { int sys_mknod(const char *path, mode_t mode, dev_t dev); }\n\tSYS_CHMOD          = 15  // { int sys_chmod(const char *path, mode_t mode); }\n\tSYS_CHOWN          = 16  // { int sys_chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_OBREAK         = 17  // { int sys_obreak(char *nsize); } break\n\tSYS_GETDTABLECOUNT = 18  // { int sys_getdtablecount(void); }\n\tSYS_GETRUSAGE      = 19  // { int sys_getrusage(int who, struct rusage *rusage); }\n\tSYS_GETPID         = 20  // { pid_t sys_getpid(void); }\n\tSYS_MOUNT          = 21  // { int sys_mount(const char *type, const char *path, int flags, void *data); }\n\tSYS_UNMOUNT        = 22  // { int sys_unmount(const char *path, int flags); }\n\tSYS_SETUID         = 23  // { int sys_setuid(uid_t uid); }\n\tSYS_GETUID         = 24  // { uid_t sys_getuid(void); }\n\tSYS_GETEUID        = 25  // { uid_t sys_geteuid(void); }\n\tSYS_PTRACE         = 26  // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG        = 27  // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG        = 28  // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); }\n\tSYS_RECVFROM       = 29  // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }\n\tSYS_ACCEPT         = 30  // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); }\n\tSYS_GETPEERNAME    = 31  // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_GETSOCKNAME    = 32  // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_ACCESS         = 33  // { int sys_access(const char *path, int amode); }\n\tSYS_CHFLAGS        = 34  // { int sys_chflags(const char *path, u_int flags); }\n\tSYS_FCHFLAGS       = 35  // { int sys_fchflags(int fd, u_int flags); }\n\tSYS_SYNC           = 36  // { void sys_sync(void); }\n\tSYS_STAT           = 38  // { int sys_stat(const char *path, struct stat *ub); }\n\tSYS_GETPPID        = 39  // { pid_t sys_getppid(void); }\n\tSYS_LSTAT          = 40  // { int sys_lstat(const char *path, struct stat *ub); }\n\tSYS_DUP            = 41  // { int sys_dup(int fd); }\n\tSYS_FSTATAT        = 42  // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); }\n\tSYS_GETEGID        = 43  // { gid_t sys_getegid(void); }\n\tSYS_PROFIL         = 44  // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE         = 45  // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); }\n\tSYS_SIGACTION      = 46  // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); }\n\tSYS_GETGID         = 47  // { gid_t sys_getgid(void); }\n\tSYS_SIGPROCMASK    = 48  // { int sys_sigprocmask(int how, sigset_t mask); }\n\tSYS_SETLOGIN       = 50  // { int sys_setlogin(const char *namebuf); }\n\tSYS_ACCT           = 51  // { int sys_acct(const char *path); }\n\tSYS_SIGPENDING     = 52  // { int sys_sigpending(void); }\n\tSYS_FSTAT          = 53  // { int sys_fstat(int fd, struct stat *sb); }\n\tSYS_IOCTL          = 54  // { int sys_ioctl(int fd, u_long com, ... void *data); }\n\tSYS_REBOOT         = 55  // { int sys_reboot(int opt); }\n\tSYS_REVOKE         = 56  // { int sys_revoke(const char *path); }\n\tSYS_SYMLINK        = 57  // { int sys_symlink(const char *path, const char *link); }\n\tSYS_READLINK       = 58  // { ssize_t sys_readlink(const char *path, char *buf, size_t count); }\n\tSYS_EXECVE         = 59  // { int sys_execve(const char *path, char * const *argp, char * const *envp); }\n\tSYS_UMASK          = 60  // { mode_t sys_umask(mode_t newmask); }\n\tSYS_CHROOT         = 61  // { int sys_chroot(const char *path); }\n\tSYS_GETFSSTAT      = 62  // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); }\n\tSYS_STATFS         = 63  // { int sys_statfs(const char *path, struct statfs *buf); }\n\tSYS_FSTATFS        = 64  // { int sys_fstatfs(int fd, struct statfs *buf); }\n\tSYS_FHSTATFS       = 65  // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); }\n\tSYS_VFORK          = 66  // { int sys_vfork(void); }\n\tSYS_GETTIMEOFDAY   = 67  // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_SETTIMEOFDAY   = 68  // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); }\n\tSYS_SETITIMER      = 69  // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_GETITIMER      = 70  // { int sys_getitimer(int which, struct itimerval *itv); }\n\tSYS_SELECT         = 71  // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_KEVENT         = 72  // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_MUNMAP         = 73  // { int sys_munmap(void *addr, size_t len); }\n\tSYS_MPROTECT       = 74  // { int sys_mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE        = 75  // { int sys_madvise(void *addr, size_t len, int behav); }\n\tSYS_UTIMES         = 76  // { int sys_utimes(const char *path, const struct timeval *tptr); }\n\tSYS_FUTIMES        = 77  // { int sys_futimes(int fd, const struct timeval *tptr); }\n\tSYS_GETGROUPS      = 79  // { int sys_getgroups(int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS      = 80  // { int sys_setgroups(int gidsetsize, const gid_t *gidset); }\n\tSYS_GETPGRP        = 81  // { int sys_getpgrp(void); }\n\tSYS_SETPGID        = 82  // { int sys_setpgid(pid_t pid, pid_t pgid); }\n\tSYS_FUTEX          = 83  // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); }\n\tSYS_UTIMENSAT      = 84  // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); }\n\tSYS_FUTIMENS       = 85  // { int sys_futimens(int fd, const struct timespec *times); }\n\tSYS_KBIND          = 86  // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); }\n\tSYS_CLOCK_GETTIME  = 87  // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME  = 88  // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES   = 89  // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_DUP2           = 90  // { int sys_dup2(int from, int to); }\n\tSYS_NANOSLEEP      = 91  // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_FCNTL          = 92  // { int sys_fcntl(int fd, int cmd, ... void *arg); }\n\tSYS_ACCEPT4        = 93  // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); }\n\tSYS___THRSLEEP     = 94  // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); }\n\tSYS_FSYNC          = 95  // { int sys_fsync(int fd); }\n\tSYS_SETPRIORITY    = 96  // { int sys_setpriority(int which, id_t who, int prio); }\n\tSYS_SOCKET         = 97  // { int sys_socket(int domain, int type, int protocol); }\n\tSYS_CONNECT        = 98  // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_GETDENTS       = 99  // { int sys_getdents(int fd, void *buf, size_t buflen); }\n\tSYS_GETPRIORITY    = 100 // { int sys_getpriority(int which, id_t who); }\n\tSYS_PIPE2          = 101 // { int sys_pipe2(int *fdp, int flags); }\n\tSYS_DUP3           = 102 // { int sys_dup3(int from, int to, int flags); }\n\tSYS_SIGRETURN      = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); }\n\tSYS_BIND           = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_SETSOCKOPT     = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }\n\tSYS_LISTEN         = 106 // { int sys_listen(int s, int backlog); }\n\tSYS_CHFLAGSAT      = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); }\n\tSYS_PLEDGE         = 108 // { int sys_pledge(const char *promises, const char *execpromises); }\n\tSYS_PPOLL          = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_PSELECT        = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_SIGSUSPEND     = 111 // { int sys_sigsuspend(int mask); }\n\tSYS_SENDSYSLOG     = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); }\n\tSYS_UNVEIL         = 114 // { int sys_unveil(const char *path, const char *permissions); }\n\tSYS_GETSOCKOPT     = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }\n\tSYS_THRKILL        = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); }\n\tSYS_READV          = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_WRITEV         = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_KILL           = 122 // { int sys_kill(int pid, int signum); }\n\tSYS_FCHOWN         = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS_FCHMOD         = 124 // { int sys_fchmod(int fd, mode_t mode); }\n\tSYS_SETREUID       = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); }\n\tSYS_SETREGID       = 127 // { int sys_setregid(gid_t rgid, gid_t egid); }\n\tSYS_RENAME         = 128 // { int sys_rename(const char *from, const char *to); }\n\tSYS_FLOCK          = 131 // { int sys_flock(int fd, int how); }\n\tSYS_MKFIFO         = 132 // { int sys_mkfifo(const char *path, mode_t mode); }\n\tSYS_SENDTO         = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }\n\tSYS_SHUTDOWN       = 134 // { int sys_shutdown(int s, int how); }\n\tSYS_SOCKETPAIR     = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR          = 136 // { int sys_mkdir(const char *path, mode_t mode); }\n\tSYS_RMDIR          = 137 // { int sys_rmdir(const char *path); }\n\tSYS_ADJTIME        = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); }\n\tSYS_GETLOGIN_R     = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); }\n\tSYS_SETSID         = 147 // { int sys_setsid(void); }\n\tSYS_QUOTACTL       = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); }\n\tSYS_NFSSVC         = 155 // { int sys_nfssvc(int flag, void *argp); }\n\tSYS_GETFH          = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); }\n\tSYS_SYSARCH        = 165 // { int sys_sysarch(int op, void *parms); }\n\tSYS_PREAD          = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_PWRITE         = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_SETGID         = 181 // { int sys_setgid(gid_t gid); }\n\tSYS_SETEGID        = 182 // { int sys_setegid(gid_t egid); }\n\tSYS_SETEUID        = 183 // { int sys_seteuid(uid_t euid); }\n\tSYS_PATHCONF       = 191 // { long sys_pathconf(const char *path, int name); }\n\tSYS_FPATHCONF      = 192 // { long sys_fpathconf(int fd, int name); }\n\tSYS_SWAPCTL        = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); }\n\tSYS_GETRLIMIT      = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); }\n\tSYS_SETRLIMIT      = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); }\n\tSYS_MMAP           = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_LSEEK          = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); }\n\tSYS_TRUNCATE       = 200 // { int sys_truncate(const char *path, int pad, off_t length); }\n\tSYS_FTRUNCATE      = 201 // { int sys_ftruncate(int fd, int pad, off_t length); }\n\tSYS_SYSCTL         = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }\n\tSYS_MLOCK          = 203 // { int sys_mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK        = 204 // { int sys_munlock(const void *addr, size_t len); }\n\tSYS_GETPGID        = 207 // { pid_t sys_getpgid(pid_t pid); }\n\tSYS_UTRACE         = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); }\n\tSYS_SEMGET         = 221 // { int sys_semget(key_t key, int nsems, int semflg); }\n\tSYS_MSGGET         = 225 // { int sys_msgget(key_t key, int msgflg); }\n\tSYS_MSGSND         = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV         = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT          = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT          = 230 // { int sys_shmdt(const void *shmaddr); }\n\tSYS_MINHERIT       = 250 // { int sys_minherit(void *addr, size_t len, int inherit); }\n\tSYS_POLL           = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_ISSETUGID      = 253 // { int sys_issetugid(void); }\n\tSYS_LCHOWN         = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_GETSID         = 255 // { pid_t sys_getsid(pid_t pid); }\n\tSYS_MSYNC          = 256 // { int sys_msync(void *addr, size_t len, int flags); }\n\tSYS_PIPE           = 263 // { int sys_pipe(int *fdp); }\n\tSYS_FHOPEN         = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); }\n\tSYS_PREADV         = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_PWRITEV        = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_KQUEUE         = 269 // { int sys_kqueue(void); }\n\tSYS_MLOCKALL       = 271 // { int sys_mlockall(int flags); }\n\tSYS_MUNLOCKALL     = 272 // { int sys_munlockall(void); }\n\tSYS_GETRESUID      = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_SETRESUID      = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_GETRESGID      = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_SETRESGID      = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_MQUERY         = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_CLOSEFROM      = 287 // { int sys_closefrom(int fd); }\n\tSYS_SIGALTSTACK    = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); }\n\tSYS_SHMGET         = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); }\n\tSYS_SEMOP          = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_FHSTAT         = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); }\n\tSYS___SEMCTL       = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_SHMCTL         = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_MSGCTL         = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_SCHED_YIELD    = 298 // { int sys_sched_yield(void); }\n\tSYS_GETTHRID       = 299 // { pid_t sys_getthrid(void); }\n\tSYS___THRWAKEUP    = 301 // { int sys___thrwakeup(const volatile void *ident, int n); }\n\tSYS___THREXIT      = 302 // { void sys___threxit(pid_t *notdead); }\n\tSYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); }\n\tSYS___GETCWD       = 304 // { int sys___getcwd(char *buf, size_t len); }\n\tSYS_ADJFREQ        = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); }\n\tSYS_SETRTABLE      = 310 // { int sys_setrtable(int rtableid); }\n\tSYS_GETRTABLE      = 311 // { int sys_getrtable(void); }\n\tSYS_FACCESSAT      = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); }\n\tSYS_FCHMODAT       = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT       = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); }\n\tSYS_LINKAT         = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); }\n\tSYS_MKDIRAT        = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); }\n\tSYS_MKFIFOAT       = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); }\n\tSYS_MKNODAT        = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); }\n\tSYS_OPENAT         = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); }\n\tSYS_READLINKAT     = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); }\n\tSYS_RENAMEAT       = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); }\n\tSYS_SYMLINKAT      = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); }\n\tSYS_UNLINKAT       = 325 // { int sys_unlinkat(int fd, const char *path, int flag); }\n\tSYS___SET_TCB      = 329 // { void sys___set_tcb(void *tcb); }\n\tSYS___GET_TCB      = 330 // { void *sys___get_tcb(void); }\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_zos_s390x.go",
    "content": "// go run mksyscall_zos_s390x.go -o_sysnum zsysnum_zos_s390x.go -o_syscall zsyscall_zos_s390x.go -i_syscall syscall_zos_s390x.go -o_asm zsymaddr_zos_s390x.s\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build zos && s390x\n\npackage unix\n\nconst (\n\tSYS_LOG                             = 0x17  // 23\n\tSYS_COSH                            = 0x18  // 24\n\tSYS_TANH                            = 0x19  // 25\n\tSYS_EXP                             = 0x1A  // 26\n\tSYS_MODF                            = 0x1B  // 27\n\tSYS_LOG10                           = 0x1C  // 28\n\tSYS_FREXP                           = 0x1D  // 29\n\tSYS_LDEXP                           = 0x1E  // 30\n\tSYS_CEIL                            = 0x1F  // 31\n\tSYS_POW                             = 0x20  // 32\n\tSYS_SQRT                            = 0x21  // 33\n\tSYS_FLOOR                           = 0x22  // 34\n\tSYS_J1                              = 0x23  // 35\n\tSYS_FABS                            = 0x24  // 36\n\tSYS_FMOD                            = 0x25  // 37\n\tSYS_J0                              = 0x26  // 38\n\tSYS_YN                              = 0x27  // 39\n\tSYS_JN                              = 0x28  // 40\n\tSYS_Y0                              = 0x29  // 41\n\tSYS_Y1                              = 0x2A  // 42\n\tSYS_HYPOT                           = 0x2B  // 43\n\tSYS_ERF                             = 0x2C  // 44\n\tSYS_ERFC                            = 0x2D  // 45\n\tSYS_GAMMA                           = 0x2E  // 46\n\tSYS_ISALPHA                         = 0x30  // 48\n\tSYS_ISALNUM                         = 0x31  // 49\n\tSYS_ISLOWER                         = 0x32  // 50\n\tSYS_ISCNTRL                         = 0x33  // 51\n\tSYS_ISDIGIT                         = 0x34  // 52\n\tSYS_ISGRAPH                         = 0x35  // 53\n\tSYS_ISUPPER                         = 0x36  // 54\n\tSYS_ISPRINT                         = 0x37  // 55\n\tSYS_ISPUNCT                         = 0x38  // 56\n\tSYS_ISSPACE                         = 0x39  // 57\n\tSYS_SETLOCAL                        = 0x3A  // 58\n\tSYS_SETLOCALE                       = 0x3A  // 58\n\tSYS_ISXDIGIT                        = 0x3B  // 59\n\tSYS_TOLOWER                         = 0x3C  // 60\n\tSYS_TOUPPER                         = 0x3D  // 61\n\tSYS_ASIN                            = 0x3E  // 62\n\tSYS_SIN                             = 0x3F  // 63\n\tSYS_COS                             = 0x40  // 64\n\tSYS_TAN                             = 0x41  // 65\n\tSYS_SINH                            = 0x42  // 66\n\tSYS_ACOS                            = 0x43  // 67\n\tSYS_ATAN                            = 0x44  // 68\n\tSYS_ATAN2                           = 0x45  // 69\n\tSYS_FTELL                           = 0x46  // 70\n\tSYS_FGETPOS                         = 0x47  // 71\n\tSYS_FSEEK                           = 0x48  // 72\n\tSYS_FSETPOS                         = 0x49  // 73\n\tSYS_FERROR                          = 0x4A  // 74\n\tSYS_REWIND                          = 0x4B  // 75\n\tSYS_CLEARERR                        = 0x4C  // 76\n\tSYS_FEOF                            = 0x4D  // 77\n\tSYS_ATOL                            = 0x4E  // 78\n\tSYS_PERROR                          = 0x4F  // 79\n\tSYS_ATOF                            = 0x50  // 80\n\tSYS_ATOI                            = 0x51  // 81\n\tSYS_RAND                            = 0x52  // 82\n\tSYS_STRTOD                          = 0x53  // 83\n\tSYS_STRTOL                          = 0x54  // 84\n\tSYS_STRTOUL                         = 0x55  // 85\n\tSYS_MALLOC                          = 0x56  // 86\n\tSYS_SRAND                           = 0x57  // 87\n\tSYS_CALLOC                          = 0x58  // 88\n\tSYS_FREE                            = 0x59  // 89\n\tSYS_EXIT                            = 0x5A  // 90\n\tSYS_REALLOC                         = 0x5B  // 91\n\tSYS_ABORT                           = 0x5C  // 92\n\tSYS___ABORT                         = 0x5C  // 92\n\tSYS_ATEXIT                          = 0x5D  // 93\n\tSYS_RAISE                           = 0x5E  // 94\n\tSYS_SETJMP                          = 0x5F  // 95\n\tSYS_LONGJMP                         = 0x60  // 96\n\tSYS_SIGNAL                          = 0x61  // 97\n\tSYS_TMPNAM                          = 0x62  // 98\n\tSYS_REMOVE                          = 0x63  // 99\n\tSYS_RENAME                          = 0x64  // 100\n\tSYS_TMPFILE                         = 0x65  // 101\n\tSYS_FREOPEN                         = 0x66  // 102\n\tSYS_FCLOSE                          = 0x67  // 103\n\tSYS_FFLUSH                          = 0x68  // 104\n\tSYS_FOPEN                           = 0x69  // 105\n\tSYS_FSCANF                          = 0x6A  // 106\n\tSYS_SETBUF                          = 0x6B  // 107\n\tSYS_SETVBUF                         = 0x6C  // 108\n\tSYS_FPRINTF                         = 0x6D  // 109\n\tSYS_SSCANF                          = 0x6E  // 110\n\tSYS_PRINTF                          = 0x6F  // 111\n\tSYS_SCANF                           = 0x70  // 112\n\tSYS_SPRINTF                         = 0x71  // 113\n\tSYS_FGETC                           = 0x72  // 114\n\tSYS_VFPRINTF                        = 0x73  // 115\n\tSYS_VPRINTF                         = 0x74  // 116\n\tSYS_VSPRINTF                        = 0x75  // 117\n\tSYS_GETC                            = 0x76  // 118\n\tSYS_FGETS                           = 0x77  // 119\n\tSYS_FPUTC                           = 0x78  // 120\n\tSYS_FPUTS                           = 0x79  // 121\n\tSYS_PUTCHAR                         = 0x7A  // 122\n\tSYS_GETCHAR                         = 0x7B  // 123\n\tSYS_GETS                            = 0x7C  // 124\n\tSYS_PUTC                            = 0x7D  // 125\n\tSYS_FWRITE                          = 0x7E  // 126\n\tSYS_PUTS                            = 0x7F  // 127\n\tSYS_UNGETC                          = 0x80  // 128\n\tSYS_FREAD                           = 0x81  // 129\n\tSYS_WCSTOMBS                        = 0x82  // 130\n\tSYS_MBTOWC                          = 0x83  // 131\n\tSYS_WCTOMB                          = 0x84  // 132\n\tSYS_MBSTOWCS                        = 0x85  // 133\n\tSYS_WCSCPY                          = 0x86  // 134\n\tSYS_WCSCAT                          = 0x87  // 135\n\tSYS_WCSCHR                          = 0x88  // 136\n\tSYS_WCSCMP                          = 0x89  // 137\n\tSYS_WCSNCMP                         = 0x8A  // 138\n\tSYS_WCSCSPN                         = 0x8B  // 139\n\tSYS_WCSLEN                          = 0x8C  // 140\n\tSYS_WCSNCAT                         = 0x8D  // 141\n\tSYS_WCSSPN                          = 0x8E  // 142\n\tSYS_WCSNCPY                         = 0x8F  // 143\n\tSYS_ABS                             = 0x90  // 144\n\tSYS_DIV                             = 0x91  // 145\n\tSYS_LABS                            = 0x92  // 146\n\tSYS_STRNCPY                         = 0x93  // 147\n\tSYS_MEMCPY                          = 0x94  // 148\n\tSYS_MEMMOVE                         = 0x95  // 149\n\tSYS_STRCPY                          = 0x96  // 150\n\tSYS_STRCMP                          = 0x97  // 151\n\tSYS_STRCAT                          = 0x98  // 152\n\tSYS_STRNCAT                         = 0x99  // 153\n\tSYS_MEMCMP                          = 0x9A  // 154\n\tSYS_MEMCHR                          = 0x9B  // 155\n\tSYS_STRCOLL                         = 0x9C  // 156\n\tSYS_STRNCMP                         = 0x9D  // 157\n\tSYS_STRXFRM                         = 0x9E  // 158\n\tSYS_STRRCHR                         = 0x9F  // 159\n\tSYS_STRCHR                          = 0xA0  // 160\n\tSYS_STRCSPN                         = 0xA1  // 161\n\tSYS_STRPBRK                         = 0xA2  // 162\n\tSYS_MEMSET                          = 0xA3  // 163\n\tSYS_STRSPN                          = 0xA4  // 164\n\tSYS_STRSTR                          = 0xA5  // 165\n\tSYS_STRTOK                          = 0xA6  // 166\n\tSYS_DIFFTIME                        = 0xA7  // 167\n\tSYS_STRERROR                        = 0xA8  // 168\n\tSYS_STRLEN                          = 0xA9  // 169\n\tSYS_CLOCK                           = 0xAA  // 170\n\tSYS_CTIME                           = 0xAB  // 171\n\tSYS_MKTIME                          = 0xAC  // 172\n\tSYS_TIME                            = 0xAD  // 173\n\tSYS_ASCTIME                         = 0xAE  // 174\n\tSYS_MBLEN                           = 0xAF  // 175\n\tSYS_GMTIME                          = 0xB0  // 176\n\tSYS_LOCALTIM                        = 0xB1  // 177\n\tSYS_LOCALTIME                       = 0xB1  // 177\n\tSYS_STRFTIME                        = 0xB2  // 178\n\tSYS___GETCB                         = 0xB4  // 180\n\tSYS_FUPDATE                         = 0xB5  // 181\n\tSYS___FUPDT                         = 0xB5  // 181\n\tSYS_CLRMEMF                         = 0xBD  // 189\n\tSYS___CLRMF                         = 0xBD  // 189\n\tSYS_FETCHEP                         = 0xBF  // 191\n\tSYS___FTCHEP                        = 0xBF  // 191\n\tSYS_FLDATA                          = 0xC1  // 193\n\tSYS___FLDATA                        = 0xC1  // 193\n\tSYS_DYNFREE                         = 0xC2  // 194\n\tSYS___DYNFRE                        = 0xC2  // 194\n\tSYS_DYNALLOC                        = 0xC3  // 195\n\tSYS___DYNALL                        = 0xC3  // 195\n\tSYS___CDUMP                         = 0xC4  // 196\n\tSYS_CSNAP                           = 0xC5  // 197\n\tSYS___CSNAP                         = 0xC5  // 197\n\tSYS_CTRACE                          = 0xC6  // 198\n\tSYS___CTRACE                        = 0xC6  // 198\n\tSYS___CTEST                         = 0xC7  // 199\n\tSYS_SETENV                          = 0xC8  // 200\n\tSYS___SETENV                        = 0xC8  // 200\n\tSYS_CLEARENV                        = 0xC9  // 201\n\tSYS___CLRENV                        = 0xC9  // 201\n\tSYS___REGCOMP_STD                   = 0xEA  // 234\n\tSYS_NL_LANGINFO                     = 0xFC  // 252\n\tSYS_GETSYNTX                        = 0xFD  // 253\n\tSYS_ISBLANK                         = 0xFE  // 254\n\tSYS___ISBLNK                        = 0xFE  // 254\n\tSYS_ISWALNUM                        = 0xFF  // 255\n\tSYS_ISWALPHA                        = 0x100 // 256\n\tSYS_ISWBLANK                        = 0x101 // 257\n\tSYS___ISWBLK                        = 0x101 // 257\n\tSYS_ISWCNTRL                        = 0x102 // 258\n\tSYS_ISWDIGIT                        = 0x103 // 259\n\tSYS_ISWGRAPH                        = 0x104 // 260\n\tSYS_ISWLOWER                        = 0x105 // 261\n\tSYS_ISWPRINT                        = 0x106 // 262\n\tSYS_ISWPUNCT                        = 0x107 // 263\n\tSYS_ISWSPACE                        = 0x108 // 264\n\tSYS_ISWUPPER                        = 0x109 // 265\n\tSYS_ISWXDIGI                        = 0x10A // 266\n\tSYS_ISWXDIGIT                       = 0x10A // 266\n\tSYS_WCTYPE                          = 0x10B // 267\n\tSYS_ISWCTYPE                        = 0x10C // 268\n\tSYS_TOWLOWER                        = 0x10D // 269\n\tSYS_TOWUPPER                        = 0x10E // 270\n\tSYS_MBSINIT                         = 0x10F // 271\n\tSYS_WCTOB                           = 0x110 // 272\n\tSYS_MBRLEN                          = 0x111 // 273\n\tSYS_MBRTOWC                         = 0x112 // 274\n\tSYS_MBSRTOWC                        = 0x113 // 275\n\tSYS_MBSRTOWCS                       = 0x113 // 275\n\tSYS_WCRTOMB                         = 0x114 // 276\n\tSYS_WCSRTOMB                        = 0x115 // 277\n\tSYS_WCSRTOMBS                       = 0x115 // 277\n\tSYS___CSID                          = 0x116 // 278\n\tSYS___WCSID                         = 0x117 // 279\n\tSYS_STRPTIME                        = 0x118 // 280\n\tSYS___STRPTM                        = 0x118 // 280\n\tSYS_STRFMON                         = 0x119 // 281\n\tSYS___RPMTCH                        = 0x11A // 282\n\tSYS_WCSSTR                          = 0x11B // 283\n\tSYS_WCSTOK                          = 0x12C // 300\n\tSYS_WCSTOL                          = 0x12D // 301\n\tSYS_WCSTOD                          = 0x12E // 302\n\tSYS_WCSTOUL                         = 0x12F // 303\n\tSYS_WCSCOLL                         = 0x130 // 304\n\tSYS_WCSXFRM                         = 0x131 // 305\n\tSYS_WCSWIDTH                        = 0x132 // 306\n\tSYS_WCWIDTH                         = 0x133 // 307\n\tSYS_WCSFTIME                        = 0x134 // 308\n\tSYS_SWPRINTF                        = 0x135 // 309\n\tSYS_VSWPRINT                        = 0x136 // 310\n\tSYS_VSWPRINTF                       = 0x136 // 310\n\tSYS_SWSCANF                         = 0x137 // 311\n\tSYS_REGCOMP                         = 0x138 // 312\n\tSYS_REGEXEC                         = 0x139 // 313\n\tSYS_REGFREE                         = 0x13A // 314\n\tSYS_REGERROR                        = 0x13B // 315\n\tSYS_FGETWC                          = 0x13C // 316\n\tSYS_FGETWS                          = 0x13D // 317\n\tSYS_FPUTWC                          = 0x13E // 318\n\tSYS_FPUTWS                          = 0x13F // 319\n\tSYS_GETWC                           = 0x140 // 320\n\tSYS_GETWCHAR                        = 0x141 // 321\n\tSYS_PUTWC                           = 0x142 // 322\n\tSYS_PUTWCHAR                        = 0x143 // 323\n\tSYS_UNGETWC                         = 0x144 // 324\n\tSYS_ICONV_OPEN                      = 0x145 // 325\n\tSYS_ICONV                           = 0x146 // 326\n\tSYS_ICONV_CLOSE                     = 0x147 // 327\n\tSYS_ISMCCOLLEL                      = 0x14C // 332\n\tSYS_STRTOCOLL                       = 0x14D // 333\n\tSYS_COLLTOSTR                       = 0x14E // 334\n\tSYS_COLLEQUIV                       = 0x14F // 335\n\tSYS_COLLRANGE                       = 0x150 // 336\n\tSYS_CCLASS                          = 0x151 // 337\n\tSYS_COLLORDER                       = 0x152 // 338\n\tSYS___DEMANGLE                      = 0x154 // 340\n\tSYS_FDOPEN                          = 0x155 // 341\n\tSYS___ERRNO                         = 0x156 // 342\n\tSYS___ERRNO2                        = 0x157 // 343\n\tSYS___TERROR                        = 0x158 // 344\n\tSYS_MAXCOLL                         = 0x169 // 361\n\tSYS_GETMCCOLL                       = 0x16A // 362\n\tSYS_GETWMCCOLL                      = 0x16B // 363\n\tSYS___ERR2AD                        = 0x16C // 364\n\tSYS_DLLQUERYFN                      = 0x16D // 365\n\tSYS_DLLQUERYVAR                     = 0x16E // 366\n\tSYS_DLLFREE                         = 0x16F // 367\n\tSYS_DLLLOAD                         = 0x170 // 368\n\tSYS__EXIT                           = 0x174 // 372\n\tSYS_ACCESS                          = 0x175 // 373\n\tSYS_ALARM                           = 0x176 // 374\n\tSYS_CFGETISPEED                     = 0x177 // 375\n\tSYS_CFGETOSPEED                     = 0x178 // 376\n\tSYS_CFSETISPEED                     = 0x179 // 377\n\tSYS_CFSETOSPEED                     = 0x17A // 378\n\tSYS_CHDIR                           = 0x17B // 379\n\tSYS_CHMOD                           = 0x17C // 380\n\tSYS_CHOWN                           = 0x17D // 381\n\tSYS_CLOSE                           = 0x17E // 382\n\tSYS_CLOSEDIR                        = 0x17F // 383\n\tSYS_CREAT                           = 0x180 // 384\n\tSYS_CTERMID                         = 0x181 // 385\n\tSYS_DUP                             = 0x182 // 386\n\tSYS_DUP2                            = 0x183 // 387\n\tSYS_EXECL                           = 0x184 // 388\n\tSYS_EXECLE                          = 0x185 // 389\n\tSYS_EXECLP                          = 0x186 // 390\n\tSYS_EXECV                           = 0x187 // 391\n\tSYS_EXECVE                          = 0x188 // 392\n\tSYS_EXECVP                          = 0x189 // 393\n\tSYS_FCHMOD                          = 0x18A // 394\n\tSYS_FCHOWN                          = 0x18B // 395\n\tSYS_FCNTL                           = 0x18C // 396\n\tSYS_FILENO                          = 0x18D // 397\n\tSYS_FORK                            = 0x18E // 398\n\tSYS_FPATHCONF                       = 0x18F // 399\n\tSYS_FSTAT                           = 0x190 // 400\n\tSYS_FSYNC                           = 0x191 // 401\n\tSYS_FTRUNCATE                       = 0x192 // 402\n\tSYS_GETCWD                          = 0x193 // 403\n\tSYS_GETEGID                         = 0x194 // 404\n\tSYS_GETEUID                         = 0x195 // 405\n\tSYS_GETGID                          = 0x196 // 406\n\tSYS_GETGRGID                        = 0x197 // 407\n\tSYS_GETGRNAM                        = 0x198 // 408\n\tSYS_GETGROUPS                       = 0x199 // 409\n\tSYS_GETLOGIN                        = 0x19A // 410\n\tSYS_W_GETMNTENT                     = 0x19B // 411\n\tSYS_GETPGRP                         = 0x19C // 412\n\tSYS_GETPID                          = 0x19D // 413\n\tSYS_GETPPID                         = 0x19E // 414\n\tSYS_GETPWNAM                        = 0x19F // 415\n\tSYS_GETPWUID                        = 0x1A0 // 416\n\tSYS_GETUID                          = 0x1A1 // 417\n\tSYS_W_IOCTL                         = 0x1A2 // 418\n\tSYS_ISATTY                          = 0x1A3 // 419\n\tSYS_KILL                            = 0x1A4 // 420\n\tSYS_LINK                            = 0x1A5 // 421\n\tSYS_LSEEK                           = 0x1A6 // 422\n\tSYS_LSTAT                           = 0x1A7 // 423\n\tSYS_MKDIR                           = 0x1A8 // 424\n\tSYS_MKFIFO                          = 0x1A9 // 425\n\tSYS_MKNOD                           = 0x1AA // 426\n\tSYS_MOUNT                           = 0x1AB // 427\n\tSYS_OPEN                            = 0x1AC // 428\n\tSYS_OPENDIR                         = 0x1AD // 429\n\tSYS_PATHCONF                        = 0x1AE // 430\n\tSYS_PAUSE                           = 0x1AF // 431\n\tSYS_PIPE                            = 0x1B0 // 432\n\tSYS_W_GETPSENT                      = 0x1B1 // 433\n\tSYS_READ                            = 0x1B2 // 434\n\tSYS_READDIR                         = 0x1B3 // 435\n\tSYS_READLINK                        = 0x1B4 // 436\n\tSYS_REWINDDIR                       = 0x1B5 // 437\n\tSYS_RMDIR                           = 0x1B6 // 438\n\tSYS_SETEGID                         = 0x1B7 // 439\n\tSYS_SETEUID                         = 0x1B8 // 440\n\tSYS_SETGID                          = 0x1B9 // 441\n\tSYS_SETPGID                         = 0x1BA // 442\n\tSYS_SETSID                          = 0x1BB // 443\n\tSYS_SETUID                          = 0x1BC // 444\n\tSYS_SIGACTION                       = 0x1BD // 445\n\tSYS_SIGADDSET                       = 0x1BE // 446\n\tSYS_SIGDELSET                       = 0x1BF // 447\n\tSYS_SIGEMPTYSET                     = 0x1C0 // 448\n\tSYS_SIGFILLSET                      = 0x1C1 // 449\n\tSYS_SIGISMEMBER                     = 0x1C2 // 450\n\tSYS_SIGLONGJMP                      = 0x1C3 // 451\n\tSYS_SIGPENDING                      = 0x1C4 // 452\n\tSYS_SIGPROCMASK                     = 0x1C5 // 453\n\tSYS_SIGSETJMP                       = 0x1C6 // 454\n\tSYS_SIGSUSPEND                      = 0x1C7 // 455\n\tSYS_SLEEP                           = 0x1C8 // 456\n\tSYS_STAT                            = 0x1C9 // 457\n\tSYS_W_STATFS                        = 0x1CA // 458\n\tSYS_SYMLINK                         = 0x1CB // 459\n\tSYS_SYSCONF                         = 0x1CC // 460\n\tSYS_TCDRAIN                         = 0x1CD // 461\n\tSYS_TCFLOW                          = 0x1CE // 462\n\tSYS_TCFLUSH                         = 0x1CF // 463\n\tSYS_TCGETATTR                       = 0x1D0 // 464\n\tSYS_TCGETPGRP                       = 0x1D1 // 465\n\tSYS_TCSENDBREAK                     = 0x1D2 // 466\n\tSYS_TCSETATTR                       = 0x1D3 // 467\n\tSYS_TCSETPGRP                       = 0x1D4 // 468\n\tSYS_TIMES                           = 0x1D5 // 469\n\tSYS_TTYNAME                         = 0x1D6 // 470\n\tSYS_TZSET                           = 0x1D7 // 471\n\tSYS_UMASK                           = 0x1D8 // 472\n\tSYS_UMOUNT                          = 0x1D9 // 473\n\tSYS_UNAME                           = 0x1DA // 474\n\tSYS_UNLINK                          = 0x1DB // 475\n\tSYS_UTIME                           = 0x1DC // 476\n\tSYS_WAIT                            = 0x1DD // 477\n\tSYS_WAITPID                         = 0x1DE // 478\n\tSYS_WRITE                           = 0x1DF // 479\n\tSYS_CHAUDIT                         = 0x1E0 // 480\n\tSYS_FCHAUDIT                        = 0x1E1 // 481\n\tSYS_GETGROUPSBYNAME                 = 0x1E2 // 482\n\tSYS_SIGWAIT                         = 0x1E3 // 483\n\tSYS_PTHREAD_EXIT                    = 0x1E4 // 484\n\tSYS_PTHREAD_KILL                    = 0x1E5 // 485\n\tSYS_PTHREAD_ATTR_INIT               = 0x1E6 // 486\n\tSYS_PTHREAD_ATTR_DESTROY            = 0x1E7 // 487\n\tSYS_PTHREAD_ATTR_SETSTACKSIZE       = 0x1E8 // 488\n\tSYS_PTHREAD_ATTR_GETSTACKSIZE       = 0x1E9 // 489\n\tSYS_PTHREAD_ATTR_SETDETACHSTATE     = 0x1EA // 490\n\tSYS_PTHREAD_ATTR_GETDETACHSTATE     = 0x1EB // 491\n\tSYS_PTHREAD_ATTR_SETWEIGHT_NP       = 0x1EC // 492\n\tSYS_PTHREAD_ATTR_GETWEIGHT_NP       = 0x1ED // 493\n\tSYS_PTHREAD_CANCEL                  = 0x1EE // 494\n\tSYS_PTHREAD_CLEANUP_PUSH            = 0x1EF // 495\n\tSYS_PTHREAD_CLEANUP_POP             = 0x1F0 // 496\n\tSYS_PTHREAD_CONDATTR_INIT           = 0x1F1 // 497\n\tSYS_PTHREAD_CONDATTR_DESTROY        = 0x1F2 // 498\n\tSYS_PTHREAD_COND_INIT               = 0x1F3 // 499\n\tSYS_PTHREAD_COND_DESTROY            = 0x1F4 // 500\n\tSYS_PTHREAD_COND_SIGNAL             = 0x1F5 // 501\n\tSYS_PTHREAD_COND_BROADCAST          = 0x1F6 // 502\n\tSYS_PTHREAD_COND_WAIT               = 0x1F7 // 503\n\tSYS_PTHREAD_COND_TIMEDWAIT          = 0x1F8 // 504\n\tSYS_PTHREAD_CREATE                  = 0x1F9 // 505\n\tSYS_PTHREAD_DETACH                  = 0x1FA // 506\n\tSYS_PTHREAD_EQUAL                   = 0x1FB // 507\n\tSYS_PTHREAD_GETSPECIFIC             = 0x1FC // 508\n\tSYS_PTHREAD_JOIN                    = 0x1FD // 509\n\tSYS_PTHREAD_KEY_CREATE              = 0x1FE // 510\n\tSYS_PTHREAD_MUTEXATTR_INIT          = 0x1FF // 511\n\tSYS_PTHREAD_MUTEXATTR_DESTROY       = 0x200 // 512\n\tSYS_PTHREAD_MUTEXATTR_SETKIND_NP    = 0x201 // 513\n\tSYS_PTHREAD_MUTEXATTR_GETKIND_NP    = 0x202 // 514\n\tSYS_PTHREAD_MUTEX_INIT              = 0x203 // 515\n\tSYS_PTHREAD_MUTEX_DESTROY           = 0x204 // 516\n\tSYS_PTHREAD_MUTEX_LOCK              = 0x205 // 517\n\tSYS_PTHREAD_MUTEX_TRYLOCK           = 0x206 // 518\n\tSYS_PTHREAD_MUTEX_UNLOCK            = 0x207 // 519\n\tSYS_PTHREAD_ONCE                    = 0x209 // 521\n\tSYS_PTHREAD_SELF                    = 0x20A // 522\n\tSYS_PTHREAD_SETINTR                 = 0x20B // 523\n\tSYS_PTHREAD_SETINTRTYPE             = 0x20C // 524\n\tSYS_PTHREAD_SETSPECIFIC             = 0x20D // 525\n\tSYS_PTHREAD_TESTINTR                = 0x20E // 526\n\tSYS_PTHREAD_YIELD                   = 0x20F // 527\n\tSYS_TW_OPEN                         = 0x210 // 528\n\tSYS_TW_FCNTL                        = 0x211 // 529\n\tSYS_PTHREAD_JOIN_D4_NP              = 0x212 // 530\n\tSYS_PTHREAD_CONDATTR_SETKIND_NP     = 0x213 // 531\n\tSYS_PTHREAD_CONDATTR_GETKIND_NP     = 0x214 // 532\n\tSYS_EXTLINK_NP                      = 0x215 // 533\n\tSYS___PASSWD                        = 0x216 // 534\n\tSYS_SETGROUPS                       = 0x217 // 535\n\tSYS_INITGROUPS                      = 0x218 // 536\n\tSYS_WCSPBRK                         = 0x23F // 575\n\tSYS_WCSRCHR                         = 0x240 // 576\n\tSYS_SVC99                           = 0x241 // 577\n\tSYS___SVC99                         = 0x241 // 577\n\tSYS_WCSWCS                          = 0x242 // 578\n\tSYS_LOCALECO                        = 0x243 // 579\n\tSYS_LOCALECONV                      = 0x243 // 579\n\tSYS___LIBREL                        = 0x244 // 580\n\tSYS_RELEASE                         = 0x245 // 581\n\tSYS___RLSE                          = 0x245 // 581\n\tSYS_FLOCATE                         = 0x246 // 582\n\tSYS___FLOCT                         = 0x246 // 582\n\tSYS_FDELREC                         = 0x247 // 583\n\tSYS___FDLREC                        = 0x247 // 583\n\tSYS_FETCH                           = 0x248 // 584\n\tSYS___FETCH                         = 0x248 // 584\n\tSYS_QSORT                           = 0x249 // 585\n\tSYS_GETENV                          = 0x24A // 586\n\tSYS_SYSTEM                          = 0x24B // 587\n\tSYS_BSEARCH                         = 0x24C // 588\n\tSYS_LDIV                            = 0x24D // 589\n\tSYS___THROW                         = 0x25E // 606\n\tSYS___RETHROW                       = 0x25F // 607\n\tSYS___CLEANUPCATCH                  = 0x260 // 608\n\tSYS___CATCHMATCH                    = 0x261 // 609\n\tSYS___CLEAN2UPCATCH                 = 0x262 // 610\n\tSYS_PUTENV                          = 0x26A // 618\n\tSYS___GETENV                        = 0x26F // 623\n\tSYS_GETPRIORITY                     = 0x270 // 624\n\tSYS_NICE                            = 0x271 // 625\n\tSYS_SETPRIORITY                     = 0x272 // 626\n\tSYS_GETITIMER                       = 0x273 // 627\n\tSYS_SETITIMER                       = 0x274 // 628\n\tSYS_MSGCTL                          = 0x275 // 629\n\tSYS_MSGGET                          = 0x276 // 630\n\tSYS_MSGRCV                          = 0x277 // 631\n\tSYS_MSGSND                          = 0x278 // 632\n\tSYS_MSGXRCV                         = 0x279 // 633\n\tSYS___MSGXR                         = 0x279 // 633\n\tSYS_SEMCTL                          = 0x27A // 634\n\tSYS_SEMGET                          = 0x27B // 635\n\tSYS_SEMOP                           = 0x27C // 636\n\tSYS_SHMAT                           = 0x27D // 637\n\tSYS_SHMCTL                          = 0x27E // 638\n\tSYS_SHMDT                           = 0x27F // 639\n\tSYS_SHMGET                          = 0x280 // 640\n\tSYS___GETIPC                        = 0x281 // 641\n\tSYS_SETGRENT                        = 0x282 // 642\n\tSYS_GETGRENT                        = 0x283 // 643\n\tSYS_ENDGRENT                        = 0x284 // 644\n\tSYS_SETPWENT                        = 0x285 // 645\n\tSYS_GETPWENT                        = 0x286 // 646\n\tSYS_ENDPWENT                        = 0x287 // 647\n\tSYS_BSD_SIGNAL                      = 0x288 // 648\n\tSYS_KILLPG                          = 0x289 // 649\n\tSYS_SIGALTSTACK                     = 0x28A // 650\n\tSYS_SIGHOLD                         = 0x28B // 651\n\tSYS_SIGIGNORE                       = 0x28C // 652\n\tSYS_SIGINTERRUPT                    = 0x28D // 653\n\tSYS_SIGPAUSE                        = 0x28E // 654\n\tSYS_SIGRELSE                        = 0x28F // 655\n\tSYS_SIGSET                          = 0x290 // 656\n\tSYS_SIGSTACK                        = 0x291 // 657\n\tSYS_GETRLIMIT                       = 0x292 // 658\n\tSYS_SETRLIMIT                       = 0x293 // 659\n\tSYS_GETRUSAGE                       = 0x294 // 660\n\tSYS_MMAP                            = 0x295 // 661\n\tSYS_MPROTECT                        = 0x296 // 662\n\tSYS_MSYNC                           = 0x297 // 663\n\tSYS_MUNMAP                          = 0x298 // 664\n\tSYS_CONFSTR                         = 0x299 // 665\n\tSYS_GETOPT                          = 0x29A // 666\n\tSYS_LCHOWN                          = 0x29B // 667\n\tSYS_TRUNCATE                        = 0x29C // 668\n\tSYS_GETSUBOPT                       = 0x29D // 669\n\tSYS_SETPGRP                         = 0x29E // 670\n\tSYS___GDERR                         = 0x29F // 671\n\tSYS___TZONE                         = 0x2A0 // 672\n\tSYS___DLGHT                         = 0x2A1 // 673\n\tSYS___OPARGF                        = 0x2A2 // 674\n\tSYS___OPOPTF                        = 0x2A3 // 675\n\tSYS___OPINDF                        = 0x2A4 // 676\n\tSYS___OPERRF                        = 0x2A5 // 677\n\tSYS_GETDATE                         = 0x2A6 // 678\n\tSYS_WAIT3                           = 0x2A7 // 679\n\tSYS_WAITID                          = 0x2A8 // 680\n\tSYS___CATTRM                        = 0x2A9 // 681\n\tSYS___GDTRM                         = 0x2AA // 682\n\tSYS___RNDTRM                        = 0x2AB // 683\n\tSYS_CRYPT                           = 0x2AC // 684\n\tSYS_ENCRYPT                         = 0x2AD // 685\n\tSYS_SETKEY                          = 0x2AE // 686\n\tSYS___CNVBLK                        = 0x2AF // 687\n\tSYS___CRYTRM                        = 0x2B0 // 688\n\tSYS___ECRTRM                        = 0x2B1 // 689\n\tSYS_DRAND48                         = 0x2B2 // 690\n\tSYS_ERAND48                         = 0x2B3 // 691\n\tSYS_FSTATVFS                        = 0x2B4 // 692\n\tSYS_STATVFS                         = 0x2B5 // 693\n\tSYS_CATCLOSE                        = 0x2B6 // 694\n\tSYS_CATGETS                         = 0x2B7 // 695\n\tSYS_CATOPEN                         = 0x2B8 // 696\n\tSYS_BCMP                            = 0x2B9 // 697\n\tSYS_BCOPY                           = 0x2BA // 698\n\tSYS_BZERO                           = 0x2BB // 699\n\tSYS_FFS                             = 0x2BC // 700\n\tSYS_INDEX                           = 0x2BD // 701\n\tSYS_RINDEX                          = 0x2BE // 702\n\tSYS_STRCASECMP                      = 0x2BF // 703\n\tSYS_STRDUP                          = 0x2C0 // 704\n\tSYS_STRNCASECMP                     = 0x2C1 // 705\n\tSYS_INITSTATE                       = 0x2C2 // 706\n\tSYS_SETSTATE                        = 0x2C3 // 707\n\tSYS_RANDOM                          = 0x2C4 // 708\n\tSYS_SRANDOM                         = 0x2C5 // 709\n\tSYS_HCREATE                         = 0x2C6 // 710\n\tSYS_HDESTROY                        = 0x2C7 // 711\n\tSYS_HSEARCH                         = 0x2C8 // 712\n\tSYS_LFIND                           = 0x2C9 // 713\n\tSYS_LSEARCH                         = 0x2CA // 714\n\tSYS_TDELETE                         = 0x2CB // 715\n\tSYS_TFIND                           = 0x2CC // 716\n\tSYS_TSEARCH                         = 0x2CD // 717\n\tSYS_TWALK                           = 0x2CE // 718\n\tSYS_INSQUE                          = 0x2CF // 719\n\tSYS_REMQUE                          = 0x2D0 // 720\n\tSYS_POPEN                           = 0x2D1 // 721\n\tSYS_PCLOSE                          = 0x2D2 // 722\n\tSYS_SWAB                            = 0x2D3 // 723\n\tSYS_MEMCCPY                         = 0x2D4 // 724\n\tSYS_GETPAGESIZE                     = 0x2D8 // 728\n\tSYS_FCHDIR                          = 0x2D9 // 729\n\tSYS___OCLCK                         = 0x2DA // 730\n\tSYS___ATOE                          = 0x2DB // 731\n\tSYS___ATOE_L                        = 0x2DC // 732\n\tSYS___ETOA                          = 0x2DD // 733\n\tSYS___ETOA_L                        = 0x2DE // 734\n\tSYS_SETUTXENT                       = 0x2DF // 735\n\tSYS_GETUTXENT                       = 0x2E0 // 736\n\tSYS_ENDUTXENT                       = 0x2E1 // 737\n\tSYS_GETUTXID                        = 0x2E2 // 738\n\tSYS_GETUTXLINE                      = 0x2E3 // 739\n\tSYS_PUTUTXLINE                      = 0x2E4 // 740\n\tSYS_FMTMSG                          = 0x2E5 // 741\n\tSYS_JRAND48                         = 0x2E6 // 742\n\tSYS_LRAND48                         = 0x2E7 // 743\n\tSYS_MRAND48                         = 0x2E8 // 744\n\tSYS_NRAND48                         = 0x2E9 // 745\n\tSYS_LCONG48                         = 0x2EA // 746\n\tSYS_SRAND48                         = 0x2EB // 747\n\tSYS_SEED48                          = 0x2EC // 748\n\tSYS_ISASCII                         = 0x2ED // 749\n\tSYS_TOASCII                         = 0x2EE // 750\n\tSYS_A64L                            = 0x2EF // 751\n\tSYS_L64A                            = 0x2F0 // 752\n\tSYS_UALARM                          = 0x2F1 // 753\n\tSYS_USLEEP                          = 0x2F2 // 754\n\tSYS___UTXTRM                        = 0x2F3 // 755\n\tSYS___SRCTRM                        = 0x2F4 // 756\n\tSYS_FTIME                           = 0x2F5 // 757\n\tSYS_GETTIMEOFDAY                    = 0x2F6 // 758\n\tSYS_DBM_CLEARERR                    = 0x2F7 // 759\n\tSYS_DBM_CLOSE                       = 0x2F8 // 760\n\tSYS_DBM_DELETE                      = 0x2F9 // 761\n\tSYS_DBM_ERROR                       = 0x2FA // 762\n\tSYS_DBM_FETCH                       = 0x2FB // 763\n\tSYS_DBM_FIRSTKEY                    = 0x2FC // 764\n\tSYS_DBM_NEXTKEY                     = 0x2FD // 765\n\tSYS_DBM_OPEN                        = 0x2FE // 766\n\tSYS_DBM_STORE                       = 0x2FF // 767\n\tSYS___NDMTRM                        = 0x300 // 768\n\tSYS_FTOK                            = 0x301 // 769\n\tSYS_BASENAME                        = 0x302 // 770\n\tSYS_DIRNAME                         = 0x303 // 771\n\tSYS_GETDTABLESIZE                   = 0x304 // 772\n\tSYS_MKSTEMP                         = 0x305 // 773\n\tSYS_MKTEMP                          = 0x306 // 774\n\tSYS_NFTW                            = 0x307 // 775\n\tSYS_GETWD                           = 0x308 // 776\n\tSYS_LOCKF                           = 0x309 // 777\n\tSYS__LONGJMP                        = 0x30D // 781\n\tSYS__SETJMP                         = 0x30E // 782\n\tSYS_VFORK                           = 0x30F // 783\n\tSYS_WORDEXP                         = 0x310 // 784\n\tSYS_WORDFREE                        = 0x311 // 785\n\tSYS_GETPGID                         = 0x312 // 786\n\tSYS_GETSID                          = 0x313 // 787\n\tSYS___UTMPXNAME                     = 0x314 // 788\n\tSYS_CUSERID                         = 0x315 // 789\n\tSYS_GETPASS                         = 0x316 // 790\n\tSYS_FNMATCH                         = 0x317 // 791\n\tSYS_FTW                             = 0x318 // 792\n\tSYS_GETW                            = 0x319 // 793\n\tSYS_GLOB                            = 0x31A // 794\n\tSYS_GLOBFREE                        = 0x31B // 795\n\tSYS_PUTW                            = 0x31C // 796\n\tSYS_SEEKDIR                         = 0x31D // 797\n\tSYS_TELLDIR                         = 0x31E // 798\n\tSYS_TEMPNAM                         = 0x31F // 799\n\tSYS_ACOSH                           = 0x320 // 800\n\tSYS_ASINH                           = 0x321 // 801\n\tSYS_ATANH                           = 0x322 // 802\n\tSYS_CBRT                            = 0x323 // 803\n\tSYS_EXPM1                           = 0x324 // 804\n\tSYS_ILOGB                           = 0x325 // 805\n\tSYS_LOGB                            = 0x326 // 806\n\tSYS_LOG1P                           = 0x327 // 807\n\tSYS_NEXTAFTER                       = 0x328 // 808\n\tSYS_RINT                            = 0x329 // 809\n\tSYS_REMAINDER                       = 0x32A // 810\n\tSYS_SCALB                           = 0x32B // 811\n\tSYS_LGAMMA                          = 0x32C // 812\n\tSYS_TTYSLOT                         = 0x32D // 813\n\tSYS_GETTIMEOFDAY_R                  = 0x32E // 814\n\tSYS_SYNC                            = 0x32F // 815\n\tSYS_SPAWN                           = 0x330 // 816\n\tSYS_SPAWNP                          = 0x331 // 817\n\tSYS_GETLOGIN_UU                     = 0x332 // 818\n\tSYS_ECVT                            = 0x333 // 819\n\tSYS_FCVT                            = 0x334 // 820\n\tSYS_GCVT                            = 0x335 // 821\n\tSYS_ACCEPT                          = 0x336 // 822\n\tSYS_BIND                            = 0x337 // 823\n\tSYS_CONNECT                         = 0x338 // 824\n\tSYS_ENDHOSTENT                      = 0x339 // 825\n\tSYS_ENDPROTOENT                     = 0x33A // 826\n\tSYS_ENDSERVENT                      = 0x33B // 827\n\tSYS_GETHOSTBYADDR_R                 = 0x33C // 828\n\tSYS_GETHOSTBYADDR                   = 0x33D // 829\n\tSYS_GETHOSTBYNAME_R                 = 0x33E // 830\n\tSYS_GETHOSTBYNAME                   = 0x33F // 831\n\tSYS_GETHOSTENT                      = 0x340 // 832\n\tSYS_GETHOSTID                       = 0x341 // 833\n\tSYS_GETHOSTNAME                     = 0x342 // 834\n\tSYS_GETNETBYADDR                    = 0x343 // 835\n\tSYS_GETNETBYNAME                    = 0x344 // 836\n\tSYS_GETNETENT                       = 0x345 // 837\n\tSYS_GETPEERNAME                     = 0x346 // 838\n\tSYS_GETPROTOBYNAME                  = 0x347 // 839\n\tSYS_GETPROTOBYNUMBER                = 0x348 // 840\n\tSYS_GETPROTOENT                     = 0x349 // 841\n\tSYS_GETSERVBYNAME                   = 0x34A // 842\n\tSYS_GETSERVBYPORT                   = 0x34B // 843\n\tSYS_GETSERVENT                      = 0x34C // 844\n\tSYS_GETSOCKNAME                     = 0x34D // 845\n\tSYS_GETSOCKOPT                      = 0x34E // 846\n\tSYS_INET_ADDR                       = 0x34F // 847\n\tSYS_INET_LNAOF                      = 0x350 // 848\n\tSYS_INET_MAKEADDR                   = 0x351 // 849\n\tSYS_INET_NETOF                      = 0x352 // 850\n\tSYS_INET_NETWORK                    = 0x353 // 851\n\tSYS_INET_NTOA                       = 0x354 // 852\n\tSYS_IOCTL                           = 0x355 // 853\n\tSYS_LISTEN                          = 0x356 // 854\n\tSYS_READV                           = 0x357 // 855\n\tSYS_RECV                            = 0x358 // 856\n\tSYS_RECVFROM                        = 0x359 // 857\n\tSYS_SELECT                          = 0x35B // 859\n\tSYS_SELECTEX                        = 0x35C // 860\n\tSYS_SEND                            = 0x35D // 861\n\tSYS_SENDTO                          = 0x35F // 863\n\tSYS_SETHOSTENT                      = 0x360 // 864\n\tSYS_SETNETENT                       = 0x361 // 865\n\tSYS_SETPEER                         = 0x362 // 866\n\tSYS_SETPROTOENT                     = 0x363 // 867\n\tSYS_SETSERVENT                      = 0x364 // 868\n\tSYS_SETSOCKOPT                      = 0x365 // 869\n\tSYS_SHUTDOWN                        = 0x366 // 870\n\tSYS_SOCKET                          = 0x367 // 871\n\tSYS_SOCKETPAIR                      = 0x368 // 872\n\tSYS_WRITEV                          = 0x369 // 873\n\tSYS_CHROOT                          = 0x36A // 874\n\tSYS_W_STATVFS                       = 0x36B // 875\n\tSYS_ULIMIT                          = 0x36C // 876\n\tSYS_ISNAN                           = 0x36D // 877\n\tSYS_UTIMES                          = 0x36E // 878\n\tSYS___H_ERRNO                       = 0x36F // 879\n\tSYS_ENDNETENT                       = 0x370 // 880\n\tSYS_CLOSELOG                        = 0x371 // 881\n\tSYS_OPENLOG                         = 0x372 // 882\n\tSYS_SETLOGMASK                      = 0x373 // 883\n\tSYS_SYSLOG                          = 0x374 // 884\n\tSYS_PTSNAME                         = 0x375 // 885\n\tSYS_SETREUID                        = 0x376 // 886\n\tSYS_SETREGID                        = 0x377 // 887\n\tSYS_REALPATH                        = 0x378 // 888\n\tSYS___SIGNGAM                       = 0x379 // 889\n\tSYS_GRANTPT                         = 0x37A // 890\n\tSYS_UNLOCKPT                        = 0x37B // 891\n\tSYS_TCGETSID                        = 0x37C // 892\n\tSYS___TCGETCP                       = 0x37D // 893\n\tSYS___TCSETCP                       = 0x37E // 894\n\tSYS___TCSETTABLES                   = 0x37F // 895\n\tSYS_POLL                            = 0x380 // 896\n\tSYS_REXEC                           = 0x381 // 897\n\tSYS___ISASCII2                      = 0x382 // 898\n\tSYS___TOASCII2                      = 0x383 // 899\n\tSYS_CHPRIORITY                      = 0x384 // 900\n\tSYS_PTHREAD_ATTR_SETSYNCTYPE_NP     = 0x385 // 901\n\tSYS_PTHREAD_ATTR_GETSYNCTYPE_NP     = 0x386 // 902\n\tSYS_PTHREAD_SET_LIMIT_NP            = 0x387 // 903\n\tSYS___STNETENT                      = 0x388 // 904\n\tSYS___STPROTOENT                    = 0x389 // 905\n\tSYS___STSERVENT                     = 0x38A // 906\n\tSYS___STHOSTENT                     = 0x38B // 907\n\tSYS_NLIST                           = 0x38C // 908\n\tSYS___IPDBCS                        = 0x38D // 909\n\tSYS___IPDSPX                        = 0x38E // 910\n\tSYS___IPMSGC                        = 0x38F // 911\n\tSYS___SELECT1                       = 0x390 // 912\n\tSYS_PTHREAD_SECURITY_NP             = 0x391 // 913\n\tSYS___CHECK_RESOURCE_AUTH_NP        = 0x392 // 914\n\tSYS___CONVERT_ID_NP                 = 0x393 // 915\n\tSYS___OPENVMREL                     = 0x394 // 916\n\tSYS_WMEMCHR                         = 0x395 // 917\n\tSYS_WMEMCMP                         = 0x396 // 918\n\tSYS_WMEMCPY                         = 0x397 // 919\n\tSYS_WMEMMOVE                        = 0x398 // 920\n\tSYS_WMEMSET                         = 0x399 // 921\n\tSYS___FPUTWC                        = 0x400 // 1024\n\tSYS___PUTWC                         = 0x401 // 1025\n\tSYS___PWCHAR                        = 0x402 // 1026\n\tSYS___WCSFTM                        = 0x403 // 1027\n\tSYS___WCSTOK                        = 0x404 // 1028\n\tSYS___WCWDTH                        = 0x405 // 1029\n\tSYS_T_ACCEPT                        = 0x409 // 1033\n\tSYS_T_ALLOC                         = 0x40A // 1034\n\tSYS_T_BIND                          = 0x40B // 1035\n\tSYS_T_CLOSE                         = 0x40C // 1036\n\tSYS_T_CONNECT                       = 0x40D // 1037\n\tSYS_T_ERROR                         = 0x40E // 1038\n\tSYS_T_FREE                          = 0x40F // 1039\n\tSYS_T_GETINFO                       = 0x410 // 1040\n\tSYS_T_GETPROTADDR                   = 0x411 // 1041\n\tSYS_T_GETSTATE                      = 0x412 // 1042\n\tSYS_T_LISTEN                        = 0x413 // 1043\n\tSYS_T_LOOK                          = 0x414 // 1044\n\tSYS_T_OPEN                          = 0x415 // 1045\n\tSYS_T_OPTMGMT                       = 0x416 // 1046\n\tSYS_T_RCV                           = 0x417 // 1047\n\tSYS_T_RCVCONNECT                    = 0x418 // 1048\n\tSYS_T_RCVDIS                        = 0x419 // 1049\n\tSYS_T_RCVREL                        = 0x41A // 1050\n\tSYS_T_RCVUDATA                      = 0x41B // 1051\n\tSYS_T_RCVUDERR                      = 0x41C // 1052\n\tSYS_T_SND                           = 0x41D // 1053\n\tSYS_T_SNDDIS                        = 0x41E // 1054\n\tSYS_T_SNDREL                        = 0x41F // 1055\n\tSYS_T_SNDUDATA                      = 0x420 // 1056\n\tSYS_T_STRERROR                      = 0x421 // 1057\n\tSYS_T_SYNC                          = 0x422 // 1058\n\tSYS_T_UNBIND                        = 0x423 // 1059\n\tSYS___T_ERRNO                       = 0x424 // 1060\n\tSYS___RECVMSG2                      = 0x425 // 1061\n\tSYS___SENDMSG2                      = 0x426 // 1062\n\tSYS_FATTACH                         = 0x427 // 1063\n\tSYS_FDETACH                         = 0x428 // 1064\n\tSYS_GETMSG                          = 0x429 // 1065\n\tSYS_GETPMSG                         = 0x42A // 1066\n\tSYS_ISASTREAM                       = 0x42B // 1067\n\tSYS_PUTMSG                          = 0x42C // 1068\n\tSYS_PUTPMSG                         = 0x42D // 1069\n\tSYS___ISPOSIXON                     = 0x42E // 1070\n\tSYS___OPENMVSREL                    = 0x42F // 1071\n\tSYS_GETCONTEXT                      = 0x430 // 1072\n\tSYS_SETCONTEXT                      = 0x431 // 1073\n\tSYS_MAKECONTEXT                     = 0x432 // 1074\n\tSYS_SWAPCONTEXT                     = 0x433 // 1075\n\tSYS_PTHREAD_GETSPECIFIC_D8_NP       = 0x434 // 1076\n\tSYS_GETCLIENTID                     = 0x470 // 1136\n\tSYS___GETCLIENTID                   = 0x471 // 1137\n\tSYS_GETSTABLESIZE                   = 0x472 // 1138\n\tSYS_GETIBMOPT                       = 0x473 // 1139\n\tSYS_GETIBMSOCKOPT                   = 0x474 // 1140\n\tSYS_GIVESOCKET                      = 0x475 // 1141\n\tSYS_IBMSFLUSH                       = 0x476 // 1142\n\tSYS_MAXDESC                         = 0x477 // 1143\n\tSYS_SETIBMOPT                       = 0x478 // 1144\n\tSYS_SETIBMSOCKOPT                   = 0x479 // 1145\n\tSYS_SOCK_DEBUG                      = 0x47A // 1146\n\tSYS_SOCK_DO_TESTSTOR                = 0x47D // 1149\n\tSYS_TAKESOCKET                      = 0x47E // 1150\n\tSYS___SERVER_INIT                   = 0x47F // 1151\n\tSYS___SERVER_PWU                    = 0x480 // 1152\n\tSYS_PTHREAD_TAG_NP                  = 0x481 // 1153\n\tSYS___CONSOLE                       = 0x482 // 1154\n\tSYS___WSINIT                        = 0x483 // 1155\n\tSYS___IPTCPN                        = 0x489 // 1161\n\tSYS___SMF_RECORD                    = 0x48A // 1162\n\tSYS___IPHOST                        = 0x48B // 1163\n\tSYS___IPNODE                        = 0x48C // 1164\n\tSYS___SERVER_CLASSIFY_CREATE        = 0x48D // 1165\n\tSYS___SERVER_CLASSIFY_DESTROY       = 0x48E // 1166\n\tSYS___SERVER_CLASSIFY_RESET         = 0x48F // 1167\n\tSYS___SERVER_CLASSIFY               = 0x490 // 1168\n\tSYS___HEAPRPT                       = 0x496 // 1174\n\tSYS___FNWSA                         = 0x49B // 1179\n\tSYS___SPAWN2                        = 0x49D // 1181\n\tSYS___SPAWNP2                       = 0x49E // 1182\n\tSYS___GDRR                          = 0x4A1 // 1185\n\tSYS___HRRNO                         = 0x4A2 // 1186\n\tSYS___OPRG                          = 0x4A3 // 1187\n\tSYS___OPRR                          = 0x4A4 // 1188\n\tSYS___OPND                          = 0x4A5 // 1189\n\tSYS___OPPT                          = 0x4A6 // 1190\n\tSYS___SIGGM                         = 0x4A7 // 1191\n\tSYS___DGHT                          = 0x4A8 // 1192\n\tSYS___TZNE                          = 0x4A9 // 1193\n\tSYS___TZZN                          = 0x4AA // 1194\n\tSYS___TRRNO                         = 0x4AF // 1199\n\tSYS___ENVN                          = 0x4B0 // 1200\n\tSYS___MLOCKALL                      = 0x4B1 // 1201\n\tSYS_CREATEWO                        = 0x4B2 // 1202\n\tSYS_CREATEWORKUNIT                  = 0x4B2 // 1202\n\tSYS_CONTINUE                        = 0x4B3 // 1203\n\tSYS_CONTINUEWORKUNIT                = 0x4B3 // 1203\n\tSYS_CONNECTW                        = 0x4B4 // 1204\n\tSYS_CONNECTWORKMGR                  = 0x4B4 // 1204\n\tSYS_CONNECTS                        = 0x4B5 // 1205\n\tSYS_CONNECTSERVER                   = 0x4B5 // 1205\n\tSYS_DISCONNE                        = 0x4B6 // 1206\n\tSYS_DISCONNECTSERVER                = 0x4B6 // 1206\n\tSYS_JOINWORK                        = 0x4B7 // 1207\n\tSYS_JOINWORKUNIT                    = 0x4B7 // 1207\n\tSYS_LEAVEWOR                        = 0x4B8 // 1208\n\tSYS_LEAVEWORKUNIT                   = 0x4B8 // 1208\n\tSYS_DELETEWO                        = 0x4B9 // 1209\n\tSYS_DELETEWORKUNIT                  = 0x4B9 // 1209\n\tSYS_QUERYMET                        = 0x4BA // 1210\n\tSYS_QUERYMETRICS                    = 0x4BA // 1210\n\tSYS_QUERYSCH                        = 0x4BB // 1211\n\tSYS_QUERYSCHENV                     = 0x4BB // 1211\n\tSYS_CHECKSCH                        = 0x4BC // 1212\n\tSYS_CHECKSCHENV                     = 0x4BC // 1212\n\tSYS___PID_AFFINITY                  = 0x4BD // 1213\n\tSYS___ASINH_B                       = 0x4BE // 1214\n\tSYS___ATAN_B                        = 0x4BF // 1215\n\tSYS___CBRT_B                        = 0x4C0 // 1216\n\tSYS___CEIL_B                        = 0x4C1 // 1217\n\tSYS_COPYSIGN                        = 0x4C2 // 1218\n\tSYS___COS_B                         = 0x4C3 // 1219\n\tSYS___ERF_B                         = 0x4C4 // 1220\n\tSYS___ERFC_B                        = 0x4C5 // 1221\n\tSYS___EXPM1_B                       = 0x4C6 // 1222\n\tSYS___FABS_B                        = 0x4C7 // 1223\n\tSYS_FINITE                          = 0x4C8 // 1224\n\tSYS___FLOOR_B                       = 0x4C9 // 1225\n\tSYS___FREXP_B                       = 0x4CA // 1226\n\tSYS___ILOGB_B                       = 0x4CB // 1227\n\tSYS___ISNAN_B                       = 0x4CC // 1228\n\tSYS___LDEXP_B                       = 0x4CD // 1229\n\tSYS___LOG1P_B                       = 0x4CE // 1230\n\tSYS___LOGB_B                        = 0x4CF // 1231\n\tSYS_MATHERR                         = 0x4D0 // 1232\n\tSYS___MODF_B                        = 0x4D1 // 1233\n\tSYS___NEXTAFTER_B                   = 0x4D2 // 1234\n\tSYS___RINT_B                        = 0x4D3 // 1235\n\tSYS_SCALBN                          = 0x4D4 // 1236\n\tSYS_SIGNIFIC                        = 0x4D5 // 1237\n\tSYS_SIGNIFICAND                     = 0x4D5 // 1237\n\tSYS___SIN_B                         = 0x4D6 // 1238\n\tSYS___TAN_B                         = 0x4D7 // 1239\n\tSYS___TANH_B                        = 0x4D8 // 1240\n\tSYS___ACOS_B                        = 0x4D9 // 1241\n\tSYS___ACOSH_B                       = 0x4DA // 1242\n\tSYS___ASIN_B                        = 0x4DB // 1243\n\tSYS___ATAN2_B                       = 0x4DC // 1244\n\tSYS___ATANH_B                       = 0x4DD // 1245\n\tSYS___COSH_B                        = 0x4DE // 1246\n\tSYS___EXP_B                         = 0x4DF // 1247\n\tSYS___FMOD_B                        = 0x4E0 // 1248\n\tSYS___GAMMA_B                       = 0x4E1 // 1249\n\tSYS_GAMMA_R                         = 0x4E2 // 1250\n\tSYS___HYPOT_B                       = 0x4E3 // 1251\n\tSYS___J0_B                          = 0x4E4 // 1252\n\tSYS___Y0_B                          = 0x4E5 // 1253\n\tSYS___J1_B                          = 0x4E6 // 1254\n\tSYS___Y1_B                          = 0x4E7 // 1255\n\tSYS___JN_B                          = 0x4E8 // 1256\n\tSYS___YN_B                          = 0x4E9 // 1257\n\tSYS___LGAMMA_B                      = 0x4EA // 1258\n\tSYS_LGAMMA_R                        = 0x4EB // 1259\n\tSYS___LOG_B                         = 0x4EC // 1260\n\tSYS___LOG10_B                       = 0x4ED // 1261\n\tSYS___POW_B                         = 0x4EE // 1262\n\tSYS___REMAINDER_B                   = 0x4EF // 1263\n\tSYS___SCALB_B                       = 0x4F0 // 1264\n\tSYS___SINH_B                        = 0x4F1 // 1265\n\tSYS___SQRT_B                        = 0x4F2 // 1266\n\tSYS___OPENDIR2                      = 0x4F3 // 1267\n\tSYS___READDIR2                      = 0x4F4 // 1268\n\tSYS___LOGIN                         = 0x4F5 // 1269\n\tSYS___OPEN_STAT                     = 0x4F6 // 1270\n\tSYS_ACCEPT_AND_RECV                 = 0x4F7 // 1271\n\tSYS___FP_SETMODE                    = 0x4F8 // 1272\n\tSYS___SIGACTIONSET                  = 0x4FB // 1275\n\tSYS___UCREATE                       = 0x4FC // 1276\n\tSYS___UMALLOC                       = 0x4FD // 1277\n\tSYS___UFREE                         = 0x4FE // 1278\n\tSYS___UHEAPREPORT                   = 0x4FF // 1279\n\tSYS___ISBFP                         = 0x500 // 1280\n\tSYS___FP_CAST                       = 0x501 // 1281\n\tSYS___CERTIFICATE                   = 0x502 // 1282\n\tSYS_SEND_FILE                       = 0x503 // 1283\n\tSYS_AIO_CANCEL                      = 0x504 // 1284\n\tSYS_AIO_ERROR                       = 0x505 // 1285\n\tSYS_AIO_READ                        = 0x506 // 1286\n\tSYS_AIO_RETURN                      = 0x507 // 1287\n\tSYS_AIO_SUSPEND                     = 0x508 // 1288\n\tSYS_AIO_WRITE                       = 0x509 // 1289\n\tSYS_PTHREAD_MUTEXATTR_GETPSHARED    = 0x50A // 1290\n\tSYS_PTHREAD_MUTEXATTR_SETPSHARED    = 0x50B // 1291\n\tSYS_PTHREAD_RWLOCK_DESTROY          = 0x50C // 1292\n\tSYS_PTHREAD_RWLOCK_INIT             = 0x50D // 1293\n\tSYS_PTHREAD_RWLOCK_RDLOCK           = 0x50E // 1294\n\tSYS_PTHREAD_RWLOCK_TRYRDLOCK        = 0x50F // 1295\n\tSYS_PTHREAD_RWLOCK_TRYWRLOCK        = 0x510 // 1296\n\tSYS_PTHREAD_RWLOCK_UNLOCK           = 0x511 // 1297\n\tSYS_PTHREAD_RWLOCK_WRLOCK           = 0x512 // 1298\n\tSYS_PTHREAD_RWLOCKATTR_GETPSHARED   = 0x513 // 1299\n\tSYS_PTHREAD_RWLOCKATTR_SETPSHARED   = 0x514 // 1300\n\tSYS_PTHREAD_RWLOCKATTR_INIT         = 0x515 // 1301\n\tSYS_PTHREAD_RWLOCKATTR_DESTROY      = 0x516 // 1302\n\tSYS___CTTBL                         = 0x517 // 1303\n\tSYS_PTHREAD_MUTEXATTR_SETTYPE       = 0x518 // 1304\n\tSYS_PTHREAD_MUTEXATTR_GETTYPE       = 0x519 // 1305\n\tSYS___FP_CLR_FLAG                   = 0x51A // 1306\n\tSYS___FP_READ_FLAG                  = 0x51B // 1307\n\tSYS___FP_RAISE_XCP                  = 0x51C // 1308\n\tSYS___FP_CLASS                      = 0x51D // 1309\n\tSYS___FP_FINITE                     = 0x51E // 1310\n\tSYS___FP_ISNAN                      = 0x51F // 1311\n\tSYS___FP_UNORDERED                  = 0x520 // 1312\n\tSYS___FP_READ_RND                   = 0x521 // 1313\n\tSYS___FP_READ_RND_B                 = 0x522 // 1314\n\tSYS___FP_SWAP_RND                   = 0x523 // 1315\n\tSYS___FP_SWAP_RND_B                 = 0x524 // 1316\n\tSYS___FP_LEVEL                      = 0x525 // 1317\n\tSYS___FP_BTOH                       = 0x526 // 1318\n\tSYS___FP_HTOB                       = 0x527 // 1319\n\tSYS___FPC_RD                        = 0x528 // 1320\n\tSYS___FPC_WR                        = 0x529 // 1321\n\tSYS___FPC_RW                        = 0x52A // 1322\n\tSYS___FPC_SM                        = 0x52B // 1323\n\tSYS___FPC_RS                        = 0x52C // 1324\n\tSYS_SIGTIMEDWAIT                    = 0x52D // 1325\n\tSYS_SIGWAITINFO                     = 0x52E // 1326\n\tSYS___CHKBFP                        = 0x52F // 1327\n\tSYS___W_PIOCTL                      = 0x59E // 1438\n\tSYS___OSENV                         = 0x59F // 1439\n\tSYS_EXPORTWO                        = 0x5A1 // 1441\n\tSYS_EXPORTWORKUNIT                  = 0x5A1 // 1441\n\tSYS_UNDOEXPO                        = 0x5A2 // 1442\n\tSYS_UNDOEXPORTWORKUNIT              = 0x5A2 // 1442\n\tSYS_IMPORTWO                        = 0x5A3 // 1443\n\tSYS_IMPORTWORKUNIT                  = 0x5A3 // 1443\n\tSYS_UNDOIMPO                        = 0x5A4 // 1444\n\tSYS_UNDOIMPORTWORKUNIT              = 0x5A4 // 1444\n\tSYS_EXTRACTW                        = 0x5A5 // 1445\n\tSYS_EXTRACTWORKUNIT                 = 0x5A5 // 1445\n\tSYS___CPL                           = 0x5A6 // 1446\n\tSYS___MAP_INIT                      = 0x5A7 // 1447\n\tSYS___MAP_SERVICE                   = 0x5A8 // 1448\n\tSYS_SIGQUEUE                        = 0x5A9 // 1449\n\tSYS___MOUNT                         = 0x5AA // 1450\n\tSYS___GETUSERID                     = 0x5AB // 1451\n\tSYS___IPDOMAINNAME                  = 0x5AC // 1452\n\tSYS_QUERYENC                        = 0x5AD // 1453\n\tSYS_QUERYWORKUNITCLASSIFICATION     = 0x5AD // 1453\n\tSYS_CONNECTE                        = 0x5AE // 1454\n\tSYS_CONNECTEXPORTIMPORT             = 0x5AE // 1454\n\tSYS___FP_SWAPMODE                   = 0x5AF // 1455\n\tSYS_STRTOLL                         = 0x5B0 // 1456\n\tSYS_STRTOULL                        = 0x5B1 // 1457\n\tSYS___DSA_PREV                      = 0x5B2 // 1458\n\tSYS___EP_FIND                       = 0x5B3 // 1459\n\tSYS___SERVER_THREADS_QUERY          = 0x5B4 // 1460\n\tSYS___MSGRCV_TIMED                  = 0x5B7 // 1463\n\tSYS___SEMOP_TIMED                   = 0x5B8 // 1464\n\tSYS___GET_CPUID                     = 0x5B9 // 1465\n\tSYS___GET_SYSTEM_SETTINGS           = 0x5BA // 1466\n\tSYS_FTELLO                          = 0x5C8 // 1480\n\tSYS_FSEEKO                          = 0x5C9 // 1481\n\tSYS_LLDIV                           = 0x5CB // 1483\n\tSYS_WCSTOLL                         = 0x5CC // 1484\n\tSYS_WCSTOULL                        = 0x5CD // 1485\n\tSYS_LLABS                           = 0x5CE // 1486\n\tSYS___CONSOLE2                      = 0x5D2 // 1490\n\tSYS_INET_NTOP                       = 0x5D3 // 1491\n\tSYS_INET_PTON                       = 0x5D4 // 1492\n\tSYS___RES                           = 0x5D6 // 1494\n\tSYS_RES_MKQUERY                     = 0x5D7 // 1495\n\tSYS_RES_INIT                        = 0x5D8 // 1496\n\tSYS_RES_QUERY                       = 0x5D9 // 1497\n\tSYS_RES_SEARCH                      = 0x5DA // 1498\n\tSYS_RES_SEND                        = 0x5DB // 1499\n\tSYS_RES_QUERYDOMAIN                 = 0x5DC // 1500\n\tSYS_DN_EXPAND                       = 0x5DD // 1501\n\tSYS_DN_SKIPNAME                     = 0x5DE // 1502\n\tSYS_DN_COMP                         = 0x5DF // 1503\n\tSYS_ASCTIME_R                       = 0x5E0 // 1504\n\tSYS_CTIME_R                         = 0x5E1 // 1505\n\tSYS_GMTIME_R                        = 0x5E2 // 1506\n\tSYS_LOCALTIME_R                     = 0x5E3 // 1507\n\tSYS_RAND_R                          = 0x5E4 // 1508\n\tSYS_STRTOK_R                        = 0x5E5 // 1509\n\tSYS_READDIR_R                       = 0x5E6 // 1510\n\tSYS_GETGRGID_R                      = 0x5E7 // 1511\n\tSYS_GETGRNAM_R                      = 0x5E8 // 1512\n\tSYS_GETLOGIN_R                      = 0x5E9 // 1513\n\tSYS_GETPWNAM_R                      = 0x5EA // 1514\n\tSYS_GETPWUID_R                      = 0x5EB // 1515\n\tSYS_TTYNAME_R                       = 0x5EC // 1516\n\tSYS_PTHREAD_ATFORK                  = 0x5ED // 1517\n\tSYS_PTHREAD_ATTR_GETGUARDSIZE       = 0x5EE // 1518\n\tSYS_PTHREAD_ATTR_GETSTACKADDR       = 0x5EF // 1519\n\tSYS_PTHREAD_ATTR_SETGUARDSIZE       = 0x5F0 // 1520\n\tSYS_PTHREAD_ATTR_SETSTACKADDR       = 0x5F1 // 1521\n\tSYS_PTHREAD_CONDATTR_GETPSHARED     = 0x5F2 // 1522\n\tSYS_PTHREAD_CONDATTR_SETPSHARED     = 0x5F3 // 1523\n\tSYS_PTHREAD_GETCONCURRENCY          = 0x5F4 // 1524\n\tSYS_PTHREAD_KEY_DELETE              = 0x5F5 // 1525\n\tSYS_PTHREAD_SETCONCURRENCY          = 0x5F6 // 1526\n\tSYS_PTHREAD_SIGMASK                 = 0x5F7 // 1527\n\tSYS___DISCARDDATA                   = 0x5F8 // 1528\n\tSYS_PTHREAD_ATTR_GETSCHEDPARAM      = 0x5F9 // 1529\n\tSYS_PTHREAD_ATTR_SETSCHEDPARAM      = 0x5FA // 1530\n\tSYS_PTHREAD_ATTR_GETDETACHSTATE_U98 = 0x5FB // 1531\n\tSYS_PTHREAD_ATTR_SETDETACHSTATE_U98 = 0x5FC // 1532\n\tSYS_PTHREAD_DETACH_U98              = 0x5FD // 1533\n\tSYS_PTHREAD_GETSPECIFIC_U98         = 0x5FE // 1534\n\tSYS_PTHREAD_SETCANCELSTATE          = 0x5FF // 1535\n\tSYS_PTHREAD_SETCANCELTYPE           = 0x600 // 1536\n\tSYS_PTHREAD_TESTCANCEL              = 0x601 // 1537\n\tSYS___ATANF_B                       = 0x602 // 1538\n\tSYS___ATANL_B                       = 0x603 // 1539\n\tSYS___CEILF_B                       = 0x604 // 1540\n\tSYS___CEILL_B                       = 0x605 // 1541\n\tSYS___COSF_B                        = 0x606 // 1542\n\tSYS___COSL_B                        = 0x607 // 1543\n\tSYS___FABSF_B                       = 0x608 // 1544\n\tSYS___FABSL_B                       = 0x609 // 1545\n\tSYS___FLOORF_B                      = 0x60A // 1546\n\tSYS___FLOORL_B                      = 0x60B // 1547\n\tSYS___FREXPF_B                      = 0x60C // 1548\n\tSYS___FREXPL_B                      = 0x60D // 1549\n\tSYS___LDEXPF_B                      = 0x60E // 1550\n\tSYS___LDEXPL_B                      = 0x60F // 1551\n\tSYS___SINF_B                        = 0x610 // 1552\n\tSYS___SINL_B                        = 0x611 // 1553\n\tSYS___TANF_B                        = 0x612 // 1554\n\tSYS___TANL_B                        = 0x613 // 1555\n\tSYS___TANHF_B                       = 0x614 // 1556\n\tSYS___TANHL_B                       = 0x615 // 1557\n\tSYS___ACOSF_B                       = 0x616 // 1558\n\tSYS___ACOSL_B                       = 0x617 // 1559\n\tSYS___ASINF_B                       = 0x618 // 1560\n\tSYS___ASINL_B                       = 0x619 // 1561\n\tSYS___ATAN2F_B                      = 0x61A // 1562\n\tSYS___ATAN2L_B                      = 0x61B // 1563\n\tSYS___COSHF_B                       = 0x61C // 1564\n\tSYS___COSHL_B                       = 0x61D // 1565\n\tSYS___EXPF_B                        = 0x61E // 1566\n\tSYS___EXPL_B                        = 0x61F // 1567\n\tSYS___LOGF_B                        = 0x620 // 1568\n\tSYS___LOGL_B                        = 0x621 // 1569\n\tSYS___LOG10F_B                      = 0x622 // 1570\n\tSYS___LOG10L_B                      = 0x623 // 1571\n\tSYS___POWF_B                        = 0x624 // 1572\n\tSYS___POWL_B                        = 0x625 // 1573\n\tSYS___SINHF_B                       = 0x626 // 1574\n\tSYS___SINHL_B                       = 0x627 // 1575\n\tSYS___SQRTF_B                       = 0x628 // 1576\n\tSYS___SQRTL_B                       = 0x629 // 1577\n\tSYS___ABSF_B                        = 0x62A // 1578\n\tSYS___ABS_B                         = 0x62B // 1579\n\tSYS___ABSL_B                        = 0x62C // 1580\n\tSYS___FMODF_B                       = 0x62D // 1581\n\tSYS___FMODL_B                       = 0x62E // 1582\n\tSYS___MODFF_B                       = 0x62F // 1583\n\tSYS___MODFL_B                       = 0x630 // 1584\n\tSYS_ABSF                            = 0x631 // 1585\n\tSYS_ABSL                            = 0x632 // 1586\n\tSYS_ACOSF                           = 0x633 // 1587\n\tSYS_ACOSL                           = 0x634 // 1588\n\tSYS_ASINF                           = 0x635 // 1589\n\tSYS_ASINL                           = 0x636 // 1590\n\tSYS_ATAN2F                          = 0x637 // 1591\n\tSYS_ATAN2L                          = 0x638 // 1592\n\tSYS_ATANF                           = 0x639 // 1593\n\tSYS_ATANL                           = 0x63A // 1594\n\tSYS_CEILF                           = 0x63B // 1595\n\tSYS_CEILL                           = 0x63C // 1596\n\tSYS_COSF                            = 0x63D // 1597\n\tSYS_COSL                            = 0x63E // 1598\n\tSYS_COSHF                           = 0x63F // 1599\n\tSYS_COSHL                           = 0x640 // 1600\n\tSYS_EXPF                            = 0x641 // 1601\n\tSYS_EXPL                            = 0x642 // 1602\n\tSYS_TANHF                           = 0x643 // 1603\n\tSYS_TANHL                           = 0x644 // 1604\n\tSYS_LOG10F                          = 0x645 // 1605\n\tSYS_LOG10L                          = 0x646 // 1606\n\tSYS_LOGF                            = 0x647 // 1607\n\tSYS_LOGL                            = 0x648 // 1608\n\tSYS_POWF                            = 0x649 // 1609\n\tSYS_POWL                            = 0x64A // 1610\n\tSYS_SINF                            = 0x64B // 1611\n\tSYS_SINL                            = 0x64C // 1612\n\tSYS_SQRTF                           = 0x64D // 1613\n\tSYS_SQRTL                           = 0x64E // 1614\n\tSYS_SINHF                           = 0x64F // 1615\n\tSYS_SINHL                           = 0x650 // 1616\n\tSYS_TANF                            = 0x651 // 1617\n\tSYS_TANL                            = 0x652 // 1618\n\tSYS_FABSF                           = 0x653 // 1619\n\tSYS_FABSL                           = 0x654 // 1620\n\tSYS_FLOORF                          = 0x655 // 1621\n\tSYS_FLOORL                          = 0x656 // 1622\n\tSYS_FMODF                           = 0x657 // 1623\n\tSYS_FMODL                           = 0x658 // 1624\n\tSYS_FREXPF                          = 0x659 // 1625\n\tSYS_FREXPL                          = 0x65A // 1626\n\tSYS_LDEXPF                          = 0x65B // 1627\n\tSYS_LDEXPL                          = 0x65C // 1628\n\tSYS_MODFF                           = 0x65D // 1629\n\tSYS_MODFL                           = 0x65E // 1630\n\tSYS_BTOWC                           = 0x65F // 1631\n\tSYS___CHATTR                        = 0x660 // 1632\n\tSYS___FCHATTR                       = 0x661 // 1633\n\tSYS___TOCCSID                       = 0x662 // 1634\n\tSYS___CSNAMETYPE                    = 0x663 // 1635\n\tSYS___TOCSNAME                      = 0x664 // 1636\n\tSYS___CCSIDTYPE                     = 0x665 // 1637\n\tSYS___AE_CORRESTBL_QUERY            = 0x666 // 1638\n\tSYS___AE_AUTOCONVERT_STATE          = 0x667 // 1639\n\tSYS_DN_FIND                         = 0x668 // 1640\n\tSYS___GETHOSTBYADDR_A               = 0x669 // 1641\n\tSYS___GETHOSTBYNAME_A               = 0x66A // 1642\n\tSYS___RES_INIT_A                    = 0x66B // 1643\n\tSYS___GETHOSTBYADDR_R_A             = 0x66C // 1644\n\tSYS___GETHOSTBYNAME_R_A             = 0x66D // 1645\n\tSYS___CHARMAP_INIT_A                = 0x66E // 1646\n\tSYS___MBLEN_A                       = 0x66F // 1647\n\tSYS___MBLEN_SB_A                    = 0x670 // 1648\n\tSYS___MBLEN_STD_A                   = 0x671 // 1649\n\tSYS___MBLEN_UTF                     = 0x672 // 1650\n\tSYS___MBSTOWCS_A                    = 0x673 // 1651\n\tSYS___MBSTOWCS_STD_A                = 0x674 // 1652\n\tSYS___MBTOWC_A                      = 0x675 // 1653\n\tSYS___MBTOWC_ISO1                   = 0x676 // 1654\n\tSYS___MBTOWC_SBCS                   = 0x677 // 1655\n\tSYS___MBTOWC_MBCS                   = 0x678 // 1656\n\tSYS___MBTOWC_UTF                    = 0x679 // 1657\n\tSYS___WCSTOMBS_A                    = 0x67A // 1658\n\tSYS___WCSTOMBS_STD_A                = 0x67B // 1659\n\tSYS___WCSWIDTH_A                    = 0x67C // 1660\n\tSYS___GETGRGID_R_A                  = 0x67D // 1661\n\tSYS___WCSWIDTH_STD_A                = 0x67E // 1662\n\tSYS___WCSWIDTH_ASIA                 = 0x67F // 1663\n\tSYS___CSID_A                        = 0x680 // 1664\n\tSYS___CSID_STD_A                    = 0x681 // 1665\n\tSYS___WCSID_A                       = 0x682 // 1666\n\tSYS___WCSID_STD_A                   = 0x683 // 1667\n\tSYS___WCTOMB_A                      = 0x684 // 1668\n\tSYS___WCTOMB_ISO1                   = 0x685 // 1669\n\tSYS___WCTOMB_STD_A                  = 0x686 // 1670\n\tSYS___WCTOMB_UTF                    = 0x687 // 1671\n\tSYS___WCWIDTH_A                     = 0x688 // 1672\n\tSYS___GETGRNAM_R_A                  = 0x689 // 1673\n\tSYS___WCWIDTH_STD_A                 = 0x68A // 1674\n\tSYS___WCWIDTH_ASIA                  = 0x68B // 1675\n\tSYS___GETPWNAM_R_A                  = 0x68C // 1676\n\tSYS___GETPWUID_R_A                  = 0x68D // 1677\n\tSYS___GETLOGIN_R_A                  = 0x68E // 1678\n\tSYS___TTYNAME_R_A                   = 0x68F // 1679\n\tSYS___READDIR_R_A                   = 0x690 // 1680\n\tSYS___E2A_S                         = 0x691 // 1681\n\tSYS___FNMATCH_A                     = 0x692 // 1682\n\tSYS___FNMATCH_C_A                   = 0x693 // 1683\n\tSYS___EXECL_A                       = 0x694 // 1684\n\tSYS___FNMATCH_STD_A                 = 0x695 // 1685\n\tSYS___REGCOMP_A                     = 0x696 // 1686\n\tSYS___REGCOMP_STD_A                 = 0x697 // 1687\n\tSYS___REGERROR_A                    = 0x698 // 1688\n\tSYS___REGERROR_STD_A                = 0x699 // 1689\n\tSYS___REGEXEC_A                     = 0x69A // 1690\n\tSYS___REGEXEC_STD_A                 = 0x69B // 1691\n\tSYS___REGFREE_A                     = 0x69C // 1692\n\tSYS___REGFREE_STD_A                 = 0x69D // 1693\n\tSYS___STRCOLL_A                     = 0x69E // 1694\n\tSYS___STRCOLL_C_A                   = 0x69F // 1695\n\tSYS___EXECLE_A                      = 0x6A0 // 1696\n\tSYS___STRCOLL_STD_A                 = 0x6A1 // 1697\n\tSYS___STRXFRM_A                     = 0x6A2 // 1698\n\tSYS___STRXFRM_C_A                   = 0x6A3 // 1699\n\tSYS___EXECLP_A                      = 0x6A4 // 1700\n\tSYS___STRXFRM_STD_A                 = 0x6A5 // 1701\n\tSYS___WCSCOLL_A                     = 0x6A6 // 1702\n\tSYS___WCSCOLL_C_A                   = 0x6A7 // 1703\n\tSYS___WCSCOLL_STD_A                 = 0x6A8 // 1704\n\tSYS___WCSXFRM_A                     = 0x6A9 // 1705\n\tSYS___WCSXFRM_C_A                   = 0x6AA // 1706\n\tSYS___WCSXFRM_STD_A                 = 0x6AB // 1707\n\tSYS___COLLATE_INIT_A                = 0x6AC // 1708\n\tSYS___WCTYPE_A                      = 0x6AD // 1709\n\tSYS___GET_WCTYPE_STD_A              = 0x6AE // 1710\n\tSYS___CTYPE_INIT_A                  = 0x6AF // 1711\n\tSYS___ISWCTYPE_A                    = 0x6B0 // 1712\n\tSYS___EXECV_A                       = 0x6B1 // 1713\n\tSYS___IS_WCTYPE_STD_A               = 0x6B2 // 1714\n\tSYS___TOWLOWER_A                    = 0x6B3 // 1715\n\tSYS___TOWLOWER_STD_A                = 0x6B4 // 1716\n\tSYS___TOWUPPER_A                    = 0x6B5 // 1717\n\tSYS___TOWUPPER_STD_A                = 0x6B6 // 1718\n\tSYS___LOCALE_INIT_A                 = 0x6B7 // 1719\n\tSYS___LOCALECONV_A                  = 0x6B8 // 1720\n\tSYS___LOCALECONV_STD_A              = 0x6B9 // 1721\n\tSYS___NL_LANGINFO_A                 = 0x6BA // 1722\n\tSYS___NL_LNAGINFO_STD_A             = 0x6BB // 1723\n\tSYS___MONETARY_INIT_A               = 0x6BC // 1724\n\tSYS___STRFMON_A                     = 0x6BD // 1725\n\tSYS___STRFMON_STD_A                 = 0x6BE // 1726\n\tSYS___GETADDRINFO_A                 = 0x6BF // 1727\n\tSYS___CATGETS_A                     = 0x6C0 // 1728\n\tSYS___EXECVE_A                      = 0x6C1 // 1729\n\tSYS___EXECVP_A                      = 0x6C2 // 1730\n\tSYS___SPAWN_A                       = 0x6C3 // 1731\n\tSYS___GETNAMEINFO_A                 = 0x6C4 // 1732\n\tSYS___SPAWNP_A                      = 0x6C5 // 1733\n\tSYS___NUMERIC_INIT_A                = 0x6C6 // 1734\n\tSYS___RESP_INIT_A                   = 0x6C7 // 1735\n\tSYS___RPMATCH_A                     = 0x6C8 // 1736\n\tSYS___RPMATCH_C_A                   = 0x6C9 // 1737\n\tSYS___RPMATCH_STD_A                 = 0x6CA // 1738\n\tSYS___TIME_INIT_A                   = 0x6CB // 1739\n\tSYS___STRFTIME_A                    = 0x6CC // 1740\n\tSYS___STRFTIME_STD_A                = 0x6CD // 1741\n\tSYS___STRPTIME_A                    = 0x6CE // 1742\n\tSYS___STRPTIME_STD_A                = 0x6CF // 1743\n\tSYS___WCSFTIME_A                    = 0x6D0 // 1744\n\tSYS___WCSFTIME_STD_A                = 0x6D1 // 1745\n\tSYS_____SPAWN2_A                    = 0x6D2 // 1746\n\tSYS_____SPAWNP2_A                   = 0x6D3 // 1747\n\tSYS___SYNTAX_INIT_A                 = 0x6D4 // 1748\n\tSYS___TOD_INIT_A                    = 0x6D5 // 1749\n\tSYS___NL_CSINFO_A                   = 0x6D6 // 1750\n\tSYS___NL_MONINFO_A                  = 0x6D7 // 1751\n\tSYS___NL_NUMINFO_A                  = 0x6D8 // 1752\n\tSYS___NL_RESPINFO_A                 = 0x6D9 // 1753\n\tSYS___NL_TIMINFO_A                  = 0x6DA // 1754\n\tSYS___IF_NAMETOINDEX_A              = 0x6DB // 1755\n\tSYS___IF_INDEXTONAME_A              = 0x6DC // 1756\n\tSYS___PRINTF_A                      = 0x6DD // 1757\n\tSYS___ICONV_OPEN_A                  = 0x6DE // 1758\n\tSYS___DLLLOAD_A                     = 0x6DF // 1759\n\tSYS___DLLQUERYFN_A                  = 0x6E0 // 1760\n\tSYS___DLLQUERYVAR_A                 = 0x6E1 // 1761\n\tSYS_____CHATTR_A                    = 0x6E2 // 1762\n\tSYS___E2A_L                         = 0x6E3 // 1763\n\tSYS_____TOCCSID_A                   = 0x6E4 // 1764\n\tSYS_____TOCSNAME_A                  = 0x6E5 // 1765\n\tSYS_____CCSIDTYPE_A                 = 0x6E6 // 1766\n\tSYS_____CSNAMETYPE_A                = 0x6E7 // 1767\n\tSYS___CHMOD_A                       = 0x6E8 // 1768\n\tSYS___MKDIR_A                       = 0x6E9 // 1769\n\tSYS___STAT_A                        = 0x6EA // 1770\n\tSYS___STAT_O_A                      = 0x6EB // 1771\n\tSYS___MKFIFO_A                      = 0x6EC // 1772\n\tSYS_____OPEN_STAT_A                 = 0x6ED // 1773\n\tSYS___LSTAT_A                       = 0x6EE // 1774\n\tSYS___LSTAT_O_A                     = 0x6EF // 1775\n\tSYS___MKNOD_A                       = 0x6F0 // 1776\n\tSYS___MOUNT_A                       = 0x6F1 // 1777\n\tSYS___UMOUNT_A                      = 0x6F2 // 1778\n\tSYS___CHAUDIT_A                     = 0x6F4 // 1780\n\tSYS___W_GETMNTENT_A                 = 0x6F5 // 1781\n\tSYS___CREAT_A                       = 0x6F6 // 1782\n\tSYS___OPEN_A                        = 0x6F7 // 1783\n\tSYS___SETLOCALE_A                   = 0x6F9 // 1785\n\tSYS___FPRINTF_A                     = 0x6FA // 1786\n\tSYS___SPRINTF_A                     = 0x6FB // 1787\n\tSYS___VFPRINTF_A                    = 0x6FC // 1788\n\tSYS___VPRINTF_A                     = 0x6FD // 1789\n\tSYS___VSPRINTF_A                    = 0x6FE // 1790\n\tSYS___VSWPRINTF_A                   = 0x6FF // 1791\n\tSYS___SWPRINTF_A                    = 0x700 // 1792\n\tSYS___FSCANF_A                      = 0x701 // 1793\n\tSYS___SCANF_A                       = 0x702 // 1794\n\tSYS___SSCANF_A                      = 0x703 // 1795\n\tSYS___SWSCANF_A                     = 0x704 // 1796\n\tSYS___ATOF_A                        = 0x705 // 1797\n\tSYS___ATOI_A                        = 0x706 // 1798\n\tSYS___ATOL_A                        = 0x707 // 1799\n\tSYS___STRTOD_A                      = 0x708 // 1800\n\tSYS___STRTOL_A                      = 0x709 // 1801\n\tSYS___STRTOUL_A                     = 0x70A // 1802\n\tSYS_____AE_CORRESTBL_QUERY_A        = 0x70B // 1803\n\tSYS___A64L_A                        = 0x70C // 1804\n\tSYS___ECVT_A                        = 0x70D // 1805\n\tSYS___FCVT_A                        = 0x70E // 1806\n\tSYS___GCVT_A                        = 0x70F // 1807\n\tSYS___L64A_A                        = 0x710 // 1808\n\tSYS___STRERROR_A                    = 0x711 // 1809\n\tSYS___PERROR_A                      = 0x712 // 1810\n\tSYS___FETCH_A                       = 0x713 // 1811\n\tSYS___GETENV_A                      = 0x714 // 1812\n\tSYS___MKSTEMP_A                     = 0x717 // 1815\n\tSYS___PTSNAME_A                     = 0x718 // 1816\n\tSYS___PUTENV_A                      = 0x719 // 1817\n\tSYS___REALPATH_A                    = 0x71A // 1818\n\tSYS___SETENV_A                      = 0x71B // 1819\n\tSYS___SYSTEM_A                      = 0x71C // 1820\n\tSYS___GETOPT_A                      = 0x71D // 1821\n\tSYS___CATOPEN_A                     = 0x71E // 1822\n\tSYS___ACCESS_A                      = 0x71F // 1823\n\tSYS___CHDIR_A                       = 0x720 // 1824\n\tSYS___CHOWN_A                       = 0x721 // 1825\n\tSYS___CHROOT_A                      = 0x722 // 1826\n\tSYS___GETCWD_A                      = 0x723 // 1827\n\tSYS___GETWD_A                       = 0x724 // 1828\n\tSYS___LCHOWN_A                      = 0x725 // 1829\n\tSYS___LINK_A                        = 0x726 // 1830\n\tSYS___PATHCONF_A                    = 0x727 // 1831\n\tSYS___IF_NAMEINDEX_A                = 0x728 // 1832\n\tSYS___READLINK_A                    = 0x729 // 1833\n\tSYS___RMDIR_A                       = 0x72A // 1834\n\tSYS___STATVFS_A                     = 0x72B // 1835\n\tSYS___SYMLINK_A                     = 0x72C // 1836\n\tSYS___TRUNCATE_A                    = 0x72D // 1837\n\tSYS___UNLINK_A                      = 0x72E // 1838\n\tSYS___GAI_STRERROR_A                = 0x72F // 1839\n\tSYS___EXTLINK_NP_A                  = 0x730 // 1840\n\tSYS___ISALNUM_A                     = 0x731 // 1841\n\tSYS___ISALPHA_A                     = 0x732 // 1842\n\tSYS___A2E_S                         = 0x733 // 1843\n\tSYS___ISCNTRL_A                     = 0x734 // 1844\n\tSYS___ISDIGIT_A                     = 0x735 // 1845\n\tSYS___ISGRAPH_A                     = 0x736 // 1846\n\tSYS___ISLOWER_A                     = 0x737 // 1847\n\tSYS___ISPRINT_A                     = 0x738 // 1848\n\tSYS___ISPUNCT_A                     = 0x739 // 1849\n\tSYS___ISSPACE_A                     = 0x73A // 1850\n\tSYS___ISUPPER_A                     = 0x73B // 1851\n\tSYS___ISXDIGIT_A                    = 0x73C // 1852\n\tSYS___TOLOWER_A                     = 0x73D // 1853\n\tSYS___TOUPPER_A                     = 0x73E // 1854\n\tSYS___ISWALNUM_A                    = 0x73F // 1855\n\tSYS___ISWALPHA_A                    = 0x740 // 1856\n\tSYS___A2E_L                         = 0x741 // 1857\n\tSYS___ISWCNTRL_A                    = 0x742 // 1858\n\tSYS___ISWDIGIT_A                    = 0x743 // 1859\n\tSYS___ISWGRAPH_A                    = 0x744 // 1860\n\tSYS___ISWLOWER_A                    = 0x745 // 1861\n\tSYS___ISWPRINT_A                    = 0x746 // 1862\n\tSYS___ISWPUNCT_A                    = 0x747 // 1863\n\tSYS___ISWSPACE_A                    = 0x748 // 1864\n\tSYS___ISWUPPER_A                    = 0x749 // 1865\n\tSYS___ISWXDIGIT_A                   = 0x74A // 1866\n\tSYS___CONFSTR_A                     = 0x74B // 1867\n\tSYS___FTOK_A                        = 0x74C // 1868\n\tSYS___MKTEMP_A                      = 0x74D // 1869\n\tSYS___FDOPEN_A                      = 0x74E // 1870\n\tSYS___FLDATA_A                      = 0x74F // 1871\n\tSYS___REMOVE_A                      = 0x750 // 1872\n\tSYS___RENAME_A                      = 0x751 // 1873\n\tSYS___TMPNAM_A                      = 0x752 // 1874\n\tSYS___FOPEN_A                       = 0x753 // 1875\n\tSYS___FREOPEN_A                     = 0x754 // 1876\n\tSYS___CUSERID_A                     = 0x755 // 1877\n\tSYS___POPEN_A                       = 0x756 // 1878\n\tSYS___TEMPNAM_A                     = 0x757 // 1879\n\tSYS___FTW_A                         = 0x758 // 1880\n\tSYS___GETGRENT_A                    = 0x759 // 1881\n\tSYS___GETGRGID_A                    = 0x75A // 1882\n\tSYS___GETGRNAM_A                    = 0x75B // 1883\n\tSYS___GETGROUPSBYNAME_A             = 0x75C // 1884\n\tSYS___GETHOSTENT_A                  = 0x75D // 1885\n\tSYS___GETHOSTNAME_A                 = 0x75E // 1886\n\tSYS___GETLOGIN_A                    = 0x75F // 1887\n\tSYS___INET_NTOP_A                   = 0x760 // 1888\n\tSYS___GETPASS_A                     = 0x761 // 1889\n\tSYS___GETPWENT_A                    = 0x762 // 1890\n\tSYS___GETPWNAM_A                    = 0x763 // 1891\n\tSYS___GETPWUID_A                    = 0x764 // 1892\n\tSYS_____CHECK_RESOURCE_AUTH_NP_A    = 0x765 // 1893\n\tSYS___CHECKSCHENV_A                 = 0x766 // 1894\n\tSYS___CONNECTSERVER_A               = 0x767 // 1895\n\tSYS___CONNECTWORKMGR_A              = 0x768 // 1896\n\tSYS_____CONSOLE_A                   = 0x769 // 1897\n\tSYS___CREATEWORKUNIT_A              = 0x76A // 1898\n\tSYS___CTERMID_A                     = 0x76B // 1899\n\tSYS___FMTMSG_A                      = 0x76C // 1900\n\tSYS___INITGROUPS_A                  = 0x76D // 1901\n\tSYS_____LOGIN_A                     = 0x76E // 1902\n\tSYS___MSGRCV_A                      = 0x76F // 1903\n\tSYS___MSGSND_A                      = 0x770 // 1904\n\tSYS___MSGXRCV_A                     = 0x771 // 1905\n\tSYS___NFTW_A                        = 0x772 // 1906\n\tSYS_____PASSWD_A                    = 0x773 // 1907\n\tSYS___PTHREAD_SECURITY_NP_A         = 0x774 // 1908\n\tSYS___QUERYMETRICS_A                = 0x775 // 1909\n\tSYS___QUERYSCHENV                   = 0x776 // 1910\n\tSYS___READV_A                       = 0x777 // 1911\n\tSYS_____SERVER_CLASSIFY_A           = 0x778 // 1912\n\tSYS_____SERVER_INIT_A               = 0x779 // 1913\n\tSYS_____SERVER_PWU_A                = 0x77A // 1914\n\tSYS___STRCASECMP_A                  = 0x77B // 1915\n\tSYS___STRNCASECMP_A                 = 0x77C // 1916\n\tSYS___TTYNAME_A                     = 0x77D // 1917\n\tSYS___UNAME_A                       = 0x77E // 1918\n\tSYS___UTIMES_A                      = 0x77F // 1919\n\tSYS___W_GETPSENT_A                  = 0x780 // 1920\n\tSYS___WRITEV_A                      = 0x781 // 1921\n\tSYS___W_STATFS_A                    = 0x782 // 1922\n\tSYS___W_STATVFS_A                   = 0x783 // 1923\n\tSYS___FPUTC_A                       = 0x784 // 1924\n\tSYS___PUTCHAR_A                     = 0x785 // 1925\n\tSYS___PUTS_A                        = 0x786 // 1926\n\tSYS___FGETS_A                       = 0x787 // 1927\n\tSYS___GETS_A                        = 0x788 // 1928\n\tSYS___FPUTS_A                       = 0x789 // 1929\n\tSYS___FREAD_A                       = 0x78A // 1930\n\tSYS___FWRITE_A                      = 0x78B // 1931\n\tSYS___OPEN_O_A                      = 0x78C // 1932\n\tSYS___ISASCII                       = 0x78D // 1933\n\tSYS___CREAT_O_A                     = 0x78E // 1934\n\tSYS___ENVNA                         = 0x78F // 1935\n\tSYS___PUTC_A                        = 0x790 // 1936\n\tSYS___AE_THREAD_SETMODE             = 0x791 // 1937\n\tSYS___AE_THREAD_SWAPMODE            = 0x792 // 1938\n\tSYS___GETNETBYADDR_A                = 0x793 // 1939\n\tSYS___GETNETBYNAME_A                = 0x794 // 1940\n\tSYS___GETNETENT_A                   = 0x795 // 1941\n\tSYS___GETPROTOBYNAME_A              = 0x796 // 1942\n\tSYS___GETPROTOBYNUMBER_A            = 0x797 // 1943\n\tSYS___GETPROTOENT_A                 = 0x798 // 1944\n\tSYS___GETSERVBYNAME_A               = 0x799 // 1945\n\tSYS___GETSERVBYPORT_A               = 0x79A // 1946\n\tSYS___GETSERVENT_A                  = 0x79B // 1947\n\tSYS___ASCTIME_A                     = 0x79C // 1948\n\tSYS___CTIME_A                       = 0x79D // 1949\n\tSYS___GETDATE_A                     = 0x79E // 1950\n\tSYS___TZSET_A                       = 0x79F // 1951\n\tSYS___UTIME_A                       = 0x7A0 // 1952\n\tSYS___ASCTIME_R_A                   = 0x7A1 // 1953\n\tSYS___CTIME_R_A                     = 0x7A2 // 1954\n\tSYS___STRTOLL_A                     = 0x7A3 // 1955\n\tSYS___STRTOULL_A                    = 0x7A4 // 1956\n\tSYS___FPUTWC_A                      = 0x7A5 // 1957\n\tSYS___PUTWC_A                       = 0x7A6 // 1958\n\tSYS___PUTWCHAR_A                    = 0x7A7 // 1959\n\tSYS___FPUTWS_A                      = 0x7A8 // 1960\n\tSYS___UNGETWC_A                     = 0x7A9 // 1961\n\tSYS___FGETWC_A                      = 0x7AA // 1962\n\tSYS___GETWC_A                       = 0x7AB // 1963\n\tSYS___GETWCHAR_A                    = 0x7AC // 1964\n\tSYS___FGETWS_A                      = 0x7AD // 1965\n\tSYS___GETTIMEOFDAY_A                = 0x7AE // 1966\n\tSYS___GMTIME_A                      = 0x7AF // 1967\n\tSYS___GMTIME_R_A                    = 0x7B0 // 1968\n\tSYS___LOCALTIME_A                   = 0x7B1 // 1969\n\tSYS___LOCALTIME_R_A                 = 0x7B2 // 1970\n\tSYS___MKTIME_A                      = 0x7B3 // 1971\n\tSYS___TZZNA                         = 0x7B4 // 1972\n\tSYS_UNATEXIT                        = 0x7B5 // 1973\n\tSYS___CEE3DMP_A                     = 0x7B6 // 1974\n\tSYS___CDUMP_A                       = 0x7B7 // 1975\n\tSYS___CSNAP_A                       = 0x7B8 // 1976\n\tSYS___CTEST_A                       = 0x7B9 // 1977\n\tSYS___CTRACE_A                      = 0x7BA // 1978\n\tSYS___VSWPRNTF2_A                   = 0x7BB // 1979\n\tSYS___INET_PTON_A                   = 0x7BC // 1980\n\tSYS___SYSLOG_A                      = 0x7BD // 1981\n\tSYS___CRYPT_A                       = 0x7BE // 1982\n\tSYS_____OPENDIR2_A                  = 0x7BF // 1983\n\tSYS_____READDIR2_A                  = 0x7C0 // 1984\n\tSYS___OPENDIR_A                     = 0x7C2 // 1986\n\tSYS___READDIR_A                     = 0x7C3 // 1987\n\tSYS_PREAD                           = 0x7C7 // 1991\n\tSYS_PWRITE                          = 0x7C8 // 1992\n\tSYS_M_CREATE_LAYOUT                 = 0x7C9 // 1993\n\tSYS_M_DESTROY_LAYOUT                = 0x7CA // 1994\n\tSYS_M_GETVALUES_LAYOUT              = 0x7CB // 1995\n\tSYS_M_SETVALUES_LAYOUT              = 0x7CC // 1996\n\tSYS_M_TRANSFORM_LAYOUT              = 0x7CD // 1997\n\tSYS_M_WTRANSFORM_LAYOUT             = 0x7CE // 1998\n\tSYS_FWPRINTF                        = 0x7D1 // 2001\n\tSYS_WPRINTF                         = 0x7D2 // 2002\n\tSYS_VFWPRINT                        = 0x7D3 // 2003\n\tSYS_VFWPRINTF                       = 0x7D3 // 2003\n\tSYS_VWPRINTF                        = 0x7D4 // 2004\n\tSYS_FWSCANF                         = 0x7D5 // 2005\n\tSYS_WSCANF                          = 0x7D6 // 2006\n\tSYS_WCTRANS                         = 0x7D7 // 2007\n\tSYS_TOWCTRAN                        = 0x7D8 // 2008\n\tSYS_TOWCTRANS                       = 0x7D8 // 2008\n\tSYS___WCSTOD_A                      = 0x7D9 // 2009\n\tSYS___WCSTOL_A                      = 0x7DA // 2010\n\tSYS___WCSTOUL_A                     = 0x7DB // 2011\n\tSYS___BASENAME_A                    = 0x7DC // 2012\n\tSYS___DIRNAME_A                     = 0x7DD // 2013\n\tSYS___GLOB_A                        = 0x7DE // 2014\n\tSYS_FWIDE                           = 0x7DF // 2015\n\tSYS___OSNAME                        = 0x7E0 // 2016\n\tSYS_____OSNAME_A                    = 0x7E1 // 2017\n\tSYS___BTOWC_A                       = 0x7E4 // 2020\n\tSYS___WCTOB_A                       = 0x7E5 // 2021\n\tSYS___DBM_OPEN_A                    = 0x7E6 // 2022\n\tSYS___VFPRINTF2_A                   = 0x7E7 // 2023\n\tSYS___VPRINTF2_A                    = 0x7E8 // 2024\n\tSYS___VSPRINTF2_A                   = 0x7E9 // 2025\n\tSYS___CEIL_H                        = 0x7EA // 2026\n\tSYS___FLOOR_H                       = 0x7EB // 2027\n\tSYS___MODF_H                        = 0x7EC // 2028\n\tSYS___FABS_H                        = 0x7ED // 2029\n\tSYS___J0_H                          = 0x7EE // 2030\n\tSYS___J1_H                          = 0x7EF // 2031\n\tSYS___JN_H                          = 0x7F0 // 2032\n\tSYS___Y0_H                          = 0x7F1 // 2033\n\tSYS___Y1_H                          = 0x7F2 // 2034\n\tSYS___YN_H                          = 0x7F3 // 2035\n\tSYS___CEILF_H                       = 0x7F4 // 2036\n\tSYS___CEILL_H                       = 0x7F5 // 2037\n\tSYS___FLOORF_H                      = 0x7F6 // 2038\n\tSYS___FLOORL_H                      = 0x7F7 // 2039\n\tSYS___MODFF_H                       = 0x7F8 // 2040\n\tSYS___MODFL_H                       = 0x7F9 // 2041\n\tSYS___FABSF_H                       = 0x7FA // 2042\n\tSYS___FABSL_H                       = 0x7FB // 2043\n\tSYS___MALLOC24                      = 0x7FC // 2044\n\tSYS___MALLOC31                      = 0x7FD // 2045\n\tSYS_ACL_INIT                        = 0x7FE // 2046\n\tSYS_ACL_FREE                        = 0x7FF // 2047\n\tSYS_ACL_FIRST_ENTRY                 = 0x800 // 2048\n\tSYS_ACL_GET_ENTRY                   = 0x801 // 2049\n\tSYS_ACL_VALID                       = 0x802 // 2050\n\tSYS_ACL_CREATE_ENTRY                = 0x803 // 2051\n\tSYS_ACL_DELETE_ENTRY                = 0x804 // 2052\n\tSYS_ACL_UPDATE_ENTRY                = 0x805 // 2053\n\tSYS_ACL_DELETE_FD                   = 0x806 // 2054\n\tSYS_ACL_DELETE_FILE                 = 0x807 // 2055\n\tSYS_ACL_GET_FD                      = 0x808 // 2056\n\tSYS_ACL_GET_FILE                    = 0x809 // 2057\n\tSYS_ACL_SET_FD                      = 0x80A // 2058\n\tSYS_ACL_SET_FILE                    = 0x80B // 2059\n\tSYS_ACL_FROM_TEXT                   = 0x80C // 2060\n\tSYS_ACL_TO_TEXT                     = 0x80D // 2061\n\tSYS_ACL_SORT                        = 0x80E // 2062\n\tSYS___SHUTDOWN_REGISTRATION         = 0x80F // 2063\n\tSYS___ERFL_B                        = 0x810 // 2064\n\tSYS___ERFCL_B                       = 0x811 // 2065\n\tSYS___LGAMMAL_B                     = 0x812 // 2066\n\tSYS___SETHOOKEVENTS                 = 0x813 // 2067\n\tSYS_IF_NAMETOINDEX                  = 0x814 // 2068\n\tSYS_IF_INDEXTONAME                  = 0x815 // 2069\n\tSYS_IF_NAMEINDEX                    = 0x816 // 2070\n\tSYS_IF_FREENAMEINDEX                = 0x817 // 2071\n\tSYS_GETADDRINFO                     = 0x818 // 2072\n\tSYS_GETNAMEINFO                     = 0x819 // 2073\n\tSYS_FREEADDRINFO                    = 0x81A // 2074\n\tSYS_GAI_STRERROR                    = 0x81B // 2075\n\tSYS_REXEC_AF                        = 0x81C // 2076\n\tSYS___POE                           = 0x81D // 2077\n\tSYS___DYNALLOC_A                    = 0x81F // 2079\n\tSYS___DYNFREE_A                     = 0x820 // 2080\n\tSYS___RES_QUERY_A                   = 0x821 // 2081\n\tSYS___RES_SEARCH_A                  = 0x822 // 2082\n\tSYS___RES_QUERYDOMAIN_A             = 0x823 // 2083\n\tSYS___RES_MKQUERY_A                 = 0x824 // 2084\n\tSYS___RES_SEND_A                    = 0x825 // 2085\n\tSYS___DN_EXPAND_A                   = 0x826 // 2086\n\tSYS___DN_SKIPNAME_A                 = 0x827 // 2087\n\tSYS___DN_COMP_A                     = 0x828 // 2088\n\tSYS___DN_FIND_A                     = 0x829 // 2089\n\tSYS___NLIST_A                       = 0x82A // 2090\n\tSYS_____TCGETCP_A                   = 0x82B // 2091\n\tSYS_____TCSETCP_A                   = 0x82C // 2092\n\tSYS_____W_PIOCTL_A                  = 0x82E // 2094\n\tSYS___INET_ADDR_A                   = 0x82F // 2095\n\tSYS___INET_NTOA_A                   = 0x830 // 2096\n\tSYS___INET_NETWORK_A                = 0x831 // 2097\n\tSYS___ACCEPT_A                      = 0x832 // 2098\n\tSYS___ACCEPT_AND_RECV_A             = 0x833 // 2099\n\tSYS___BIND_A                        = 0x834 // 2100\n\tSYS___CONNECT_A                     = 0x835 // 2101\n\tSYS___GETPEERNAME_A                 = 0x836 // 2102\n\tSYS___GETSOCKNAME_A                 = 0x837 // 2103\n\tSYS___RECVFROM_A                    = 0x838 // 2104\n\tSYS___SENDTO_A                      = 0x839 // 2105\n\tSYS___SENDMSG_A                     = 0x83A // 2106\n\tSYS___RECVMSG_A                     = 0x83B // 2107\n\tSYS_____LCHATTR_A                   = 0x83C // 2108\n\tSYS___CABEND                        = 0x83D // 2109\n\tSYS___LE_CIB_GET                    = 0x83E // 2110\n\tSYS___SET_LAA_FOR_JIT               = 0x83F // 2111\n\tSYS___LCHATTR                       = 0x840 // 2112\n\tSYS___WRITEDOWN                     = 0x841 // 2113\n\tSYS_PTHREAD_MUTEX_INIT2             = 0x842 // 2114\n\tSYS___ACOSHF_B                      = 0x843 // 2115\n\tSYS___ACOSHL_B                      = 0x844 // 2116\n\tSYS___ASINHF_B                      = 0x845 // 2117\n\tSYS___ASINHL_B                      = 0x846 // 2118\n\tSYS___ATANHF_B                      = 0x847 // 2119\n\tSYS___ATANHL_B                      = 0x848 // 2120\n\tSYS___CBRTF_B                       = 0x849 // 2121\n\tSYS___CBRTL_B                       = 0x84A // 2122\n\tSYS___COPYSIGNF_B                   = 0x84B // 2123\n\tSYS___COPYSIGNL_B                   = 0x84C // 2124\n\tSYS___COTANF_B                      = 0x84D // 2125\n\tSYS___COTAN_B                       = 0x84E // 2126\n\tSYS___COTANL_B                      = 0x84F // 2127\n\tSYS___EXP2F_B                       = 0x850 // 2128\n\tSYS___EXP2L_B                       = 0x851 // 2129\n\tSYS___EXPM1F_B                      = 0x852 // 2130\n\tSYS___EXPM1L_B                      = 0x853 // 2131\n\tSYS___FDIMF_B                       = 0x854 // 2132\n\tSYS___FDIM_B                        = 0x855 // 2133\n\tSYS___FDIML_B                       = 0x856 // 2134\n\tSYS___HYPOTF_B                      = 0x857 // 2135\n\tSYS___HYPOTL_B                      = 0x858 // 2136\n\tSYS___LOG1PF_B                      = 0x859 // 2137\n\tSYS___LOG1PL_B                      = 0x85A // 2138\n\tSYS___LOG2F_B                       = 0x85B // 2139\n\tSYS___LOG2_B                        = 0x85C // 2140\n\tSYS___LOG2L_B                       = 0x85D // 2141\n\tSYS___REMAINDERF_B                  = 0x85E // 2142\n\tSYS___REMAINDERL_B                  = 0x85F // 2143\n\tSYS___REMQUOF_B                     = 0x860 // 2144\n\tSYS___REMQUO_B                      = 0x861 // 2145\n\tSYS___REMQUOL_B                     = 0x862 // 2146\n\tSYS___TGAMMAF_B                     = 0x863 // 2147\n\tSYS___TGAMMA_B                      = 0x864 // 2148\n\tSYS___TGAMMAL_B                     = 0x865 // 2149\n\tSYS___TRUNCF_B                      = 0x866 // 2150\n\tSYS___TRUNC_B                       = 0x867 // 2151\n\tSYS___TRUNCL_B                      = 0x868 // 2152\n\tSYS___LGAMMAF_B                     = 0x869 // 2153\n\tSYS___LROUNDF_B                     = 0x86A // 2154\n\tSYS___LROUND_B                      = 0x86B // 2155\n\tSYS___ERFF_B                        = 0x86C // 2156\n\tSYS___ERFCF_B                       = 0x86D // 2157\n\tSYS_ACOSHF                          = 0x86E // 2158\n\tSYS_ACOSHL                          = 0x86F // 2159\n\tSYS_ASINHF                          = 0x870 // 2160\n\tSYS_ASINHL                          = 0x871 // 2161\n\tSYS_ATANHF                          = 0x872 // 2162\n\tSYS_ATANHL                          = 0x873 // 2163\n\tSYS_CBRTF                           = 0x874 // 2164\n\tSYS_CBRTL                           = 0x875 // 2165\n\tSYS_COPYSIGNF                       = 0x876 // 2166\n\tSYS_CPYSIGNF                        = 0x876 // 2166\n\tSYS_COPYSIGNL                       = 0x877 // 2167\n\tSYS_CPYSIGNL                        = 0x877 // 2167\n\tSYS_COTANF                          = 0x878 // 2168\n\tSYS___COTANF                        = 0x878 // 2168\n\tSYS_COTAN                           = 0x879 // 2169\n\tSYS___COTAN                         = 0x879 // 2169\n\tSYS_COTANL                          = 0x87A // 2170\n\tSYS___COTANL                        = 0x87A // 2170\n\tSYS_EXP2F                           = 0x87B // 2171\n\tSYS_EXP2L                           = 0x87C // 2172\n\tSYS_EXPM1F                          = 0x87D // 2173\n\tSYS_EXPM1L                          = 0x87E // 2174\n\tSYS_FDIMF                           = 0x87F // 2175\n\tSYS_FDIM                            = 0x881 // 2177\n\tSYS_FDIML                           = 0x882 // 2178\n\tSYS_HYPOTF                          = 0x883 // 2179\n\tSYS_HYPOTL                          = 0x884 // 2180\n\tSYS_LOG1PF                          = 0x885 // 2181\n\tSYS_LOG1PL                          = 0x886 // 2182\n\tSYS_LOG2F                           = 0x887 // 2183\n\tSYS_LOG2                            = 0x888 // 2184\n\tSYS_LOG2L                           = 0x889 // 2185\n\tSYS_REMAINDERF                      = 0x88A // 2186\n\tSYS_REMAINDF                        = 0x88A // 2186\n\tSYS_REMAINDERL                      = 0x88B // 2187\n\tSYS_REMAINDL                        = 0x88B // 2187\n\tSYS_REMQUOF                         = 0x88C // 2188\n\tSYS_REMQUO                          = 0x88D // 2189\n\tSYS_REMQUOL                         = 0x88E // 2190\n\tSYS_TGAMMAF                         = 0x88F // 2191\n\tSYS_TGAMMA                          = 0x890 // 2192\n\tSYS_TGAMMAL                         = 0x891 // 2193\n\tSYS_TRUNCF                          = 0x892 // 2194\n\tSYS_TRUNC                           = 0x893 // 2195\n\tSYS_TRUNCL                          = 0x894 // 2196\n\tSYS_LGAMMAF                         = 0x895 // 2197\n\tSYS_LGAMMAL                         = 0x896 // 2198\n\tSYS_LROUNDF                         = 0x897 // 2199\n\tSYS_LROUND                          = 0x898 // 2200\n\tSYS_ERFF                            = 0x899 // 2201\n\tSYS_ERFL                            = 0x89A // 2202\n\tSYS_ERFCF                           = 0x89B // 2203\n\tSYS_ERFCL                           = 0x89C // 2204\n\tSYS___EXP2_B                        = 0x89D // 2205\n\tSYS_EXP2                            = 0x89E // 2206\n\tSYS___FAR_JUMP                      = 0x89F // 2207\n\tSYS___TCGETATTR_A                   = 0x8A1 // 2209\n\tSYS___TCSETATTR_A                   = 0x8A2 // 2210\n\tSYS___SUPERKILL                     = 0x8A4 // 2212\n\tSYS___LE_CONDITION_TOKEN_BUILD      = 0x8A5 // 2213\n\tSYS___LE_MSG_ADD_INSERT             = 0x8A6 // 2214\n\tSYS___LE_MSG_GET                    = 0x8A7 // 2215\n\tSYS___LE_MSG_GET_AND_WRITE          = 0x8A8 // 2216\n\tSYS___LE_MSG_WRITE                  = 0x8A9 // 2217\n\tSYS___ITOA                          = 0x8AA // 2218\n\tSYS___UTOA                          = 0x8AB // 2219\n\tSYS___LTOA                          = 0x8AC // 2220\n\tSYS___ULTOA                         = 0x8AD // 2221\n\tSYS___LLTOA                         = 0x8AE // 2222\n\tSYS___ULLTOA                        = 0x8AF // 2223\n\tSYS___ITOA_A                        = 0x8B0 // 2224\n\tSYS___UTOA_A                        = 0x8B1 // 2225\n\tSYS___LTOA_A                        = 0x8B2 // 2226\n\tSYS___ULTOA_A                       = 0x8B3 // 2227\n\tSYS___LLTOA_A                       = 0x8B4 // 2228\n\tSYS___ULLTOA_A                      = 0x8B5 // 2229\n\tSYS_____GETENV_A                    = 0x8C3 // 2243\n\tSYS___REXEC_A                       = 0x8C4 // 2244\n\tSYS___REXEC_AF_A                    = 0x8C5 // 2245\n\tSYS___GETUTXENT_A                   = 0x8C6 // 2246\n\tSYS___GETUTXID_A                    = 0x8C7 // 2247\n\tSYS___GETUTXLINE_A                  = 0x8C8 // 2248\n\tSYS___PUTUTXLINE_A                  = 0x8C9 // 2249\n\tSYS_____UTMPXNAME_A                 = 0x8CA // 2250\n\tSYS___PUTC_UNLOCKED_A               = 0x8CB // 2251\n\tSYS___PUTCHAR_UNLOCKED_A            = 0x8CC // 2252\n\tSYS___SNPRINTF_A                    = 0x8CD // 2253\n\tSYS___VSNPRINTF_A                   = 0x8CE // 2254\n\tSYS___DLOPEN_A                      = 0x8D0 // 2256\n\tSYS___DLSYM_A                       = 0x8D1 // 2257\n\tSYS___DLERROR_A                     = 0x8D2 // 2258\n\tSYS_FLOCKFILE                       = 0x8D3 // 2259\n\tSYS_FTRYLOCKFILE                    = 0x8D4 // 2260\n\tSYS_FUNLOCKFILE                     = 0x8D5 // 2261\n\tSYS_GETC_UNLOCKED                   = 0x8D6 // 2262\n\tSYS_GETCHAR_UNLOCKED                = 0x8D7 // 2263\n\tSYS_PUTC_UNLOCKED                   = 0x8D8 // 2264\n\tSYS_PUTCHAR_UNLOCKED                = 0x8D9 // 2265\n\tSYS_SNPRINTF                        = 0x8DA // 2266\n\tSYS_VSNPRINTF                       = 0x8DB // 2267\n\tSYS_DLOPEN                          = 0x8DD // 2269\n\tSYS_DLSYM                           = 0x8DE // 2270\n\tSYS_DLCLOSE                         = 0x8DF // 2271\n\tSYS_DLERROR                         = 0x8E0 // 2272\n\tSYS___SET_EXCEPTION_HANDLER         = 0x8E2 // 2274\n\tSYS___RESET_EXCEPTION_HANDLER       = 0x8E3 // 2275\n\tSYS___VHM_EVENT                     = 0x8E4 // 2276\n\tSYS___ABS_H                         = 0x8E6 // 2278\n\tSYS___ABSF_H                        = 0x8E7 // 2279\n\tSYS___ABSL_H                        = 0x8E8 // 2280\n\tSYS___ACOS_H                        = 0x8E9 // 2281\n\tSYS___ACOSF_H                       = 0x8EA // 2282\n\tSYS___ACOSL_H                       = 0x8EB // 2283\n\tSYS___ACOSH_H                       = 0x8EC // 2284\n\tSYS___ASIN_H                        = 0x8ED // 2285\n\tSYS___ASINF_H                       = 0x8EE // 2286\n\tSYS___ASINL_H                       = 0x8EF // 2287\n\tSYS___ASINH_H                       = 0x8F0 // 2288\n\tSYS___ATAN_H                        = 0x8F1 // 2289\n\tSYS___ATANF_H                       = 0x8F2 // 2290\n\tSYS___ATANL_H                       = 0x8F3 // 2291\n\tSYS___ATANH_H                       = 0x8F4 // 2292\n\tSYS___ATANHF_H                      = 0x8F5 // 2293\n\tSYS___ATANHL_H                      = 0x8F6 // 2294\n\tSYS___ATAN2_H                       = 0x8F7 // 2295\n\tSYS___ATAN2F_H                      = 0x8F8 // 2296\n\tSYS___ATAN2L_H                      = 0x8F9 // 2297\n\tSYS___CBRT_H                        = 0x8FA // 2298\n\tSYS___COPYSIGNF_H                   = 0x8FB // 2299\n\tSYS___COPYSIGNL_H                   = 0x8FC // 2300\n\tSYS___COS_H                         = 0x8FD // 2301\n\tSYS___COSF_H                        = 0x8FE // 2302\n\tSYS___COSL_H                        = 0x8FF // 2303\n\tSYS___COSHF_H                       = 0x900 // 2304\n\tSYS___COSHL_H                       = 0x901 // 2305\n\tSYS___COTAN_H                       = 0x902 // 2306\n\tSYS___COTANF_H                      = 0x903 // 2307\n\tSYS___COTANL_H                      = 0x904 // 2308\n\tSYS___ERF_H                         = 0x905 // 2309\n\tSYS___ERFF_H                        = 0x906 // 2310\n\tSYS___ERFL_H                        = 0x907 // 2311\n\tSYS___ERFC_H                        = 0x908 // 2312\n\tSYS___ERFCF_H                       = 0x909 // 2313\n\tSYS___ERFCL_H                       = 0x90A // 2314\n\tSYS___EXP_H                         = 0x90B // 2315\n\tSYS___EXPF_H                        = 0x90C // 2316\n\tSYS___EXPL_H                        = 0x90D // 2317\n\tSYS___EXPM1_H                       = 0x90E // 2318\n\tSYS___FDIM_H                        = 0x90F // 2319\n\tSYS___FDIMF_H                       = 0x910 // 2320\n\tSYS___FDIML_H                       = 0x911 // 2321\n\tSYS___FMOD_H                        = 0x912 // 2322\n\tSYS___FMODF_H                       = 0x913 // 2323\n\tSYS___FMODL_H                       = 0x914 // 2324\n\tSYS___GAMMA_H                       = 0x915 // 2325\n\tSYS___HYPOT_H                       = 0x916 // 2326\n\tSYS___ILOGB_H                       = 0x917 // 2327\n\tSYS___LGAMMA_H                      = 0x918 // 2328\n\tSYS___LGAMMAF_H                     = 0x919 // 2329\n\tSYS___LOG_H                         = 0x91A // 2330\n\tSYS___LOGF_H                        = 0x91B // 2331\n\tSYS___LOGL_H                        = 0x91C // 2332\n\tSYS___LOGB_H                        = 0x91D // 2333\n\tSYS___LOG2_H                        = 0x91E // 2334\n\tSYS___LOG2F_H                       = 0x91F // 2335\n\tSYS___LOG2L_H                       = 0x920 // 2336\n\tSYS___LOG1P_H                       = 0x921 // 2337\n\tSYS___LOG10_H                       = 0x922 // 2338\n\tSYS___LOG10F_H                      = 0x923 // 2339\n\tSYS___LOG10L_H                      = 0x924 // 2340\n\tSYS___LROUND_H                      = 0x925 // 2341\n\tSYS___LROUNDF_H                     = 0x926 // 2342\n\tSYS___NEXTAFTER_H                   = 0x927 // 2343\n\tSYS___POW_H                         = 0x928 // 2344\n\tSYS___POWF_H                        = 0x929 // 2345\n\tSYS___POWL_H                        = 0x92A // 2346\n\tSYS___REMAINDER_H                   = 0x92B // 2347\n\tSYS___RINT_H                        = 0x92C // 2348\n\tSYS___SCALB_H                       = 0x92D // 2349\n\tSYS___SIN_H                         = 0x92E // 2350\n\tSYS___SINF_H                        = 0x92F // 2351\n\tSYS___SINL_H                        = 0x930 // 2352\n\tSYS___SINH_H                        = 0x931 // 2353\n\tSYS___SINHF_H                       = 0x932 // 2354\n\tSYS___SINHL_H                       = 0x933 // 2355\n\tSYS___SQRT_H                        = 0x934 // 2356\n\tSYS___SQRTF_H                       = 0x935 // 2357\n\tSYS___SQRTL_H                       = 0x936 // 2358\n\tSYS___TAN_H                         = 0x937 // 2359\n\tSYS___TANF_H                        = 0x938 // 2360\n\tSYS___TANL_H                        = 0x939 // 2361\n\tSYS___TANH_H                        = 0x93A // 2362\n\tSYS___TANHF_H                       = 0x93B // 2363\n\tSYS___TANHL_H                       = 0x93C // 2364\n\tSYS___TGAMMA_H                      = 0x93D // 2365\n\tSYS___TGAMMAF_H                     = 0x93E // 2366\n\tSYS___TRUNC_H                       = 0x93F // 2367\n\tSYS___TRUNCF_H                      = 0x940 // 2368\n\tSYS___TRUNCL_H                      = 0x941 // 2369\n\tSYS___COSH_H                        = 0x942 // 2370\n\tSYS___LE_DEBUG_SET_RESUME_MCH       = 0x943 // 2371\n\tSYS_VFSCANF                         = 0x944 // 2372\n\tSYS_VSCANF                          = 0x946 // 2374\n\tSYS_VSSCANF                         = 0x948 // 2376\n\tSYS_VFWSCANF                        = 0x94A // 2378\n\tSYS_VWSCANF                         = 0x94C // 2380\n\tSYS_VSWSCANF                        = 0x94E // 2382\n\tSYS_IMAXABS                         = 0x950 // 2384\n\tSYS_IMAXDIV                         = 0x951 // 2385\n\tSYS_STRTOIMAX                       = 0x952 // 2386\n\tSYS_STRTOUMAX                       = 0x953 // 2387\n\tSYS_WCSTOIMAX                       = 0x954 // 2388\n\tSYS_WCSTOUMAX                       = 0x955 // 2389\n\tSYS_ATOLL                           = 0x956 // 2390\n\tSYS_STRTOF                          = 0x957 // 2391\n\tSYS_STRTOLD                         = 0x958 // 2392\n\tSYS_WCSTOF                          = 0x959 // 2393\n\tSYS_WCSTOLD                         = 0x95A // 2394\n\tSYS_INET6_RTH_SPACE                 = 0x95B // 2395\n\tSYS_INET6_RTH_INIT                  = 0x95C // 2396\n\tSYS_INET6_RTH_ADD                   = 0x95D // 2397\n\tSYS_INET6_RTH_REVERSE               = 0x95E // 2398\n\tSYS_INET6_RTH_SEGMENTS              = 0x95F // 2399\n\tSYS_INET6_RTH_GETADDR               = 0x960 // 2400\n\tSYS_INET6_OPT_INIT                  = 0x961 // 2401\n\tSYS_INET6_OPT_APPEND                = 0x962 // 2402\n\tSYS_INET6_OPT_FINISH                = 0x963 // 2403\n\tSYS_INET6_OPT_SET_VAL               = 0x964 // 2404\n\tSYS_INET6_OPT_NEXT                  = 0x965 // 2405\n\tSYS_INET6_OPT_FIND                  = 0x966 // 2406\n\tSYS_INET6_OPT_GET_VAL               = 0x967 // 2407\n\tSYS___POW_I                         = 0x987 // 2439\n\tSYS___POW_I_B                       = 0x988 // 2440\n\tSYS___POW_I_H                       = 0x989 // 2441\n\tSYS___POW_II                        = 0x98A // 2442\n\tSYS___POW_II_B                      = 0x98B // 2443\n\tSYS___POW_II_H                      = 0x98C // 2444\n\tSYS_CABS                            = 0x98E // 2446\n\tSYS___CABS_B                        = 0x98F // 2447\n\tSYS___CABS_H                        = 0x990 // 2448\n\tSYS_CABSF                           = 0x991 // 2449\n\tSYS___CABSF_B                       = 0x992 // 2450\n\tSYS___CABSF_H                       = 0x993 // 2451\n\tSYS_CABSL                           = 0x994 // 2452\n\tSYS___CABSL_B                       = 0x995 // 2453\n\tSYS___CABSL_H                       = 0x996 // 2454\n\tSYS_CACOS                           = 0x997 // 2455\n\tSYS___CACOS_B                       = 0x998 // 2456\n\tSYS___CACOS_H                       = 0x999 // 2457\n\tSYS_CACOSF                          = 0x99A // 2458\n\tSYS___CACOSF_B                      = 0x99B // 2459\n\tSYS___CACOSF_H                      = 0x99C // 2460\n\tSYS_CACOSL                          = 0x99D // 2461\n\tSYS___CACOSL_B                      = 0x99E // 2462\n\tSYS___CACOSL_H                      = 0x99F // 2463\n\tSYS_CACOSH                          = 0x9A0 // 2464\n\tSYS___CACOSH_B                      = 0x9A1 // 2465\n\tSYS___CACOSH_H                      = 0x9A2 // 2466\n\tSYS_CACOSHF                         = 0x9A3 // 2467\n\tSYS___CACOSHF_B                     = 0x9A4 // 2468\n\tSYS___CACOSHF_H                     = 0x9A5 // 2469\n\tSYS_CACOSHL                         = 0x9A6 // 2470\n\tSYS___CACOSHL_B                     = 0x9A7 // 2471\n\tSYS___CACOSHL_H                     = 0x9A8 // 2472\n\tSYS_CARG                            = 0x9A9 // 2473\n\tSYS___CARG_B                        = 0x9AA // 2474\n\tSYS___CARG_H                        = 0x9AB // 2475\n\tSYS_CARGF                           = 0x9AC // 2476\n\tSYS___CARGF_B                       = 0x9AD // 2477\n\tSYS___CARGF_H                       = 0x9AE // 2478\n\tSYS_CARGL                           = 0x9AF // 2479\n\tSYS___CARGL_B                       = 0x9B0 // 2480\n\tSYS___CARGL_H                       = 0x9B1 // 2481\n\tSYS_CASIN                           = 0x9B2 // 2482\n\tSYS___CASIN_B                       = 0x9B3 // 2483\n\tSYS___CASIN_H                       = 0x9B4 // 2484\n\tSYS_CASINF                          = 0x9B5 // 2485\n\tSYS___CASINF_B                      = 0x9B6 // 2486\n\tSYS___CASINF_H                      = 0x9B7 // 2487\n\tSYS_CASINL                          = 0x9B8 // 2488\n\tSYS___CASINL_B                      = 0x9B9 // 2489\n\tSYS___CASINL_H                      = 0x9BA // 2490\n\tSYS_CASINH                          = 0x9BB // 2491\n\tSYS___CASINH_B                      = 0x9BC // 2492\n\tSYS___CASINH_H                      = 0x9BD // 2493\n\tSYS_CASINHF                         = 0x9BE // 2494\n\tSYS___CASINHF_B                     = 0x9BF // 2495\n\tSYS___CASINHF_H                     = 0x9C0 // 2496\n\tSYS_CASINHL                         = 0x9C1 // 2497\n\tSYS___CASINHL_B                     = 0x9C2 // 2498\n\tSYS___CASINHL_H                     = 0x9C3 // 2499\n\tSYS_CATAN                           = 0x9C4 // 2500\n\tSYS___CATAN_B                       = 0x9C5 // 2501\n\tSYS___CATAN_H                       = 0x9C6 // 2502\n\tSYS_CATANF                          = 0x9C7 // 2503\n\tSYS___CATANF_B                      = 0x9C8 // 2504\n\tSYS___CATANF_H                      = 0x9C9 // 2505\n\tSYS_CATANL                          = 0x9CA // 2506\n\tSYS___CATANL_B                      = 0x9CB // 2507\n\tSYS___CATANL_H                      = 0x9CC // 2508\n\tSYS_CATANH                          = 0x9CD // 2509\n\tSYS___CATANH_B                      = 0x9CE // 2510\n\tSYS___CATANH_H                      = 0x9CF // 2511\n\tSYS_CATANHF                         = 0x9D0 // 2512\n\tSYS___CATANHF_B                     = 0x9D1 // 2513\n\tSYS___CATANHF_H                     = 0x9D2 // 2514\n\tSYS_CATANHL                         = 0x9D3 // 2515\n\tSYS___CATANHL_B                     = 0x9D4 // 2516\n\tSYS___CATANHL_H                     = 0x9D5 // 2517\n\tSYS_CCOS                            = 0x9D6 // 2518\n\tSYS___CCOS_B                        = 0x9D7 // 2519\n\tSYS___CCOS_H                        = 0x9D8 // 2520\n\tSYS_CCOSF                           = 0x9D9 // 2521\n\tSYS___CCOSF_B                       = 0x9DA // 2522\n\tSYS___CCOSF_H                       = 0x9DB // 2523\n\tSYS_CCOSL                           = 0x9DC // 2524\n\tSYS___CCOSL_B                       = 0x9DD // 2525\n\tSYS___CCOSL_H                       = 0x9DE // 2526\n\tSYS_CCOSH                           = 0x9DF // 2527\n\tSYS___CCOSH_B                       = 0x9E0 // 2528\n\tSYS___CCOSH_H                       = 0x9E1 // 2529\n\tSYS_CCOSHF                          = 0x9E2 // 2530\n\tSYS___CCOSHF_B                      = 0x9E3 // 2531\n\tSYS___CCOSHF_H                      = 0x9E4 // 2532\n\tSYS_CCOSHL                          = 0x9E5 // 2533\n\tSYS___CCOSHL_B                      = 0x9E6 // 2534\n\tSYS___CCOSHL_H                      = 0x9E7 // 2535\n\tSYS_CEXP                            = 0x9E8 // 2536\n\tSYS___CEXP_B                        = 0x9E9 // 2537\n\tSYS___CEXP_H                        = 0x9EA // 2538\n\tSYS_CEXPF                           = 0x9EB // 2539\n\tSYS___CEXPF_B                       = 0x9EC // 2540\n\tSYS___CEXPF_H                       = 0x9ED // 2541\n\tSYS_CEXPL                           = 0x9EE // 2542\n\tSYS___CEXPL_B                       = 0x9EF // 2543\n\tSYS___CEXPL_H                       = 0x9F0 // 2544\n\tSYS_CIMAG                           = 0x9F1 // 2545\n\tSYS___CIMAG_B                       = 0x9F2 // 2546\n\tSYS___CIMAG_H                       = 0x9F3 // 2547\n\tSYS_CIMAGF                          = 0x9F4 // 2548\n\tSYS___CIMAGF_B                      = 0x9F5 // 2549\n\tSYS___CIMAGF_H                      = 0x9F6 // 2550\n\tSYS_CIMAGL                          = 0x9F7 // 2551\n\tSYS___CIMAGL_B                      = 0x9F8 // 2552\n\tSYS___CIMAGL_H                      = 0x9F9 // 2553\n\tSYS___CLOG                          = 0x9FA // 2554\n\tSYS___CLOG_B                        = 0x9FB // 2555\n\tSYS___CLOG_H                        = 0x9FC // 2556\n\tSYS_CLOGF                           = 0x9FD // 2557\n\tSYS___CLOGF_B                       = 0x9FE // 2558\n\tSYS___CLOGF_H                       = 0x9FF // 2559\n\tSYS_CLOGL                           = 0xA00 // 2560\n\tSYS___CLOGL_B                       = 0xA01 // 2561\n\tSYS___CLOGL_H                       = 0xA02 // 2562\n\tSYS_CONJ                            = 0xA03 // 2563\n\tSYS___CONJ_B                        = 0xA04 // 2564\n\tSYS___CONJ_H                        = 0xA05 // 2565\n\tSYS_CONJF                           = 0xA06 // 2566\n\tSYS___CONJF_B                       = 0xA07 // 2567\n\tSYS___CONJF_H                       = 0xA08 // 2568\n\tSYS_CONJL                           = 0xA09 // 2569\n\tSYS___CONJL_B                       = 0xA0A // 2570\n\tSYS___CONJL_H                       = 0xA0B // 2571\n\tSYS_CPOW                            = 0xA0C // 2572\n\tSYS___CPOW_B                        = 0xA0D // 2573\n\tSYS___CPOW_H                        = 0xA0E // 2574\n\tSYS_CPOWF                           = 0xA0F // 2575\n\tSYS___CPOWF_B                       = 0xA10 // 2576\n\tSYS___CPOWF_H                       = 0xA11 // 2577\n\tSYS_CPOWL                           = 0xA12 // 2578\n\tSYS___CPOWL_B                       = 0xA13 // 2579\n\tSYS___CPOWL_H                       = 0xA14 // 2580\n\tSYS_CPROJ                           = 0xA15 // 2581\n\tSYS___CPROJ_B                       = 0xA16 // 2582\n\tSYS___CPROJ_H                       = 0xA17 // 2583\n\tSYS_CPROJF                          = 0xA18 // 2584\n\tSYS___CPROJF_B                      = 0xA19 // 2585\n\tSYS___CPROJF_H                      = 0xA1A // 2586\n\tSYS_CPROJL                          = 0xA1B // 2587\n\tSYS___CPROJL_B                      = 0xA1C // 2588\n\tSYS___CPROJL_H                      = 0xA1D // 2589\n\tSYS_CREAL                           = 0xA1E // 2590\n\tSYS___CREAL_B                       = 0xA1F // 2591\n\tSYS___CREAL_H                       = 0xA20 // 2592\n\tSYS_CREALF                          = 0xA21 // 2593\n\tSYS___CREALF_B                      = 0xA22 // 2594\n\tSYS___CREALF_H                      = 0xA23 // 2595\n\tSYS_CREALL                          = 0xA24 // 2596\n\tSYS___CREALL_B                      = 0xA25 // 2597\n\tSYS___CREALL_H                      = 0xA26 // 2598\n\tSYS_CSIN                            = 0xA27 // 2599\n\tSYS___CSIN_B                        = 0xA28 // 2600\n\tSYS___CSIN_H                        = 0xA29 // 2601\n\tSYS_CSINF                           = 0xA2A // 2602\n\tSYS___CSINF_B                       = 0xA2B // 2603\n\tSYS___CSINF_H                       = 0xA2C // 2604\n\tSYS_CSINL                           = 0xA2D // 2605\n\tSYS___CSINL_B                       = 0xA2E // 2606\n\tSYS___CSINL_H                       = 0xA2F // 2607\n\tSYS_CSINH                           = 0xA30 // 2608\n\tSYS___CSINH_B                       = 0xA31 // 2609\n\tSYS___CSINH_H                       = 0xA32 // 2610\n\tSYS_CSINHF                          = 0xA33 // 2611\n\tSYS___CSINHF_B                      = 0xA34 // 2612\n\tSYS___CSINHF_H                      = 0xA35 // 2613\n\tSYS_CSINHL                          = 0xA36 // 2614\n\tSYS___CSINHL_B                      = 0xA37 // 2615\n\tSYS___CSINHL_H                      = 0xA38 // 2616\n\tSYS_CSQRT                           = 0xA39 // 2617\n\tSYS___CSQRT_B                       = 0xA3A // 2618\n\tSYS___CSQRT_H                       = 0xA3B // 2619\n\tSYS_CSQRTF                          = 0xA3C // 2620\n\tSYS___CSQRTF_B                      = 0xA3D // 2621\n\tSYS___CSQRTF_H                      = 0xA3E // 2622\n\tSYS_CSQRTL                          = 0xA3F // 2623\n\tSYS___CSQRTL_B                      = 0xA40 // 2624\n\tSYS___CSQRTL_H                      = 0xA41 // 2625\n\tSYS_CTAN                            = 0xA42 // 2626\n\tSYS___CTAN_B                        = 0xA43 // 2627\n\tSYS___CTAN_H                        = 0xA44 // 2628\n\tSYS_CTANF                           = 0xA45 // 2629\n\tSYS___CTANF_B                       = 0xA46 // 2630\n\tSYS___CTANF_H                       = 0xA47 // 2631\n\tSYS_CTANL                           = 0xA48 // 2632\n\tSYS___CTANL_B                       = 0xA49 // 2633\n\tSYS___CTANL_H                       = 0xA4A // 2634\n\tSYS_CTANH                           = 0xA4B // 2635\n\tSYS___CTANH_B                       = 0xA4C // 2636\n\tSYS___CTANH_H                       = 0xA4D // 2637\n\tSYS_CTANHF                          = 0xA4E // 2638\n\tSYS___CTANHF_B                      = 0xA4F // 2639\n\tSYS___CTANHF_H                      = 0xA50 // 2640\n\tSYS_CTANHL                          = 0xA51 // 2641\n\tSYS___CTANHL_B                      = 0xA52 // 2642\n\tSYS___CTANHL_H                      = 0xA53 // 2643\n\tSYS___ACOSHF_H                      = 0xA54 // 2644\n\tSYS___ACOSHL_H                      = 0xA55 // 2645\n\tSYS___ASINHF_H                      = 0xA56 // 2646\n\tSYS___ASINHL_H                      = 0xA57 // 2647\n\tSYS___CBRTF_H                       = 0xA58 // 2648\n\tSYS___CBRTL_H                       = 0xA59 // 2649\n\tSYS___COPYSIGN_B                    = 0xA5A // 2650\n\tSYS___EXPM1F_H                      = 0xA5B // 2651\n\tSYS___EXPM1L_H                      = 0xA5C // 2652\n\tSYS___EXP2_H                        = 0xA5D // 2653\n\tSYS___EXP2F_H                       = 0xA5E // 2654\n\tSYS___EXP2L_H                       = 0xA5F // 2655\n\tSYS___LOG1PF_H                      = 0xA60 // 2656\n\tSYS___LOG1PL_H                      = 0xA61 // 2657\n\tSYS___LGAMMAL_H                     = 0xA62 // 2658\n\tSYS_FMA                             = 0xA63 // 2659\n\tSYS___FMA_B                         = 0xA64 // 2660\n\tSYS___FMA_H                         = 0xA65 // 2661\n\tSYS_FMAF                            = 0xA66 // 2662\n\tSYS___FMAF_B                        = 0xA67 // 2663\n\tSYS___FMAF_H                        = 0xA68 // 2664\n\tSYS_FMAL                            = 0xA69 // 2665\n\tSYS___FMAL_B                        = 0xA6A // 2666\n\tSYS___FMAL_H                        = 0xA6B // 2667\n\tSYS_FMAX                            = 0xA6C // 2668\n\tSYS___FMAX_B                        = 0xA6D // 2669\n\tSYS___FMAX_H                        = 0xA6E // 2670\n\tSYS_FMAXF                           = 0xA6F // 2671\n\tSYS___FMAXF_B                       = 0xA70 // 2672\n\tSYS___FMAXF_H                       = 0xA71 // 2673\n\tSYS_FMAXL                           = 0xA72 // 2674\n\tSYS___FMAXL_B                       = 0xA73 // 2675\n\tSYS___FMAXL_H                       = 0xA74 // 2676\n\tSYS_FMIN                            = 0xA75 // 2677\n\tSYS___FMIN_B                        = 0xA76 // 2678\n\tSYS___FMIN_H                        = 0xA77 // 2679\n\tSYS_FMINF                           = 0xA78 // 2680\n\tSYS___FMINF_B                       = 0xA79 // 2681\n\tSYS___FMINF_H                       = 0xA7A // 2682\n\tSYS_FMINL                           = 0xA7B // 2683\n\tSYS___FMINL_B                       = 0xA7C // 2684\n\tSYS___FMINL_H                       = 0xA7D // 2685\n\tSYS_ILOGBF                          = 0xA7E // 2686\n\tSYS___ILOGBF_B                      = 0xA7F // 2687\n\tSYS___ILOGBF_H                      = 0xA80 // 2688\n\tSYS_ILOGBL                          = 0xA81 // 2689\n\tSYS___ILOGBL_B                      = 0xA82 // 2690\n\tSYS___ILOGBL_H                      = 0xA83 // 2691\n\tSYS_LLRINT                          = 0xA84 // 2692\n\tSYS___LLRINT_B                      = 0xA85 // 2693\n\tSYS___LLRINT_H                      = 0xA86 // 2694\n\tSYS_LLRINTF                         = 0xA87 // 2695\n\tSYS___LLRINTF_B                     = 0xA88 // 2696\n\tSYS___LLRINTF_H                     = 0xA89 // 2697\n\tSYS_LLRINTL                         = 0xA8A // 2698\n\tSYS___LLRINTL_B                     = 0xA8B // 2699\n\tSYS___LLRINTL_H                     = 0xA8C // 2700\n\tSYS_LLROUND                         = 0xA8D // 2701\n\tSYS___LLROUND_B                     = 0xA8E // 2702\n\tSYS___LLROUND_H                     = 0xA8F // 2703\n\tSYS_LLROUNDF                        = 0xA90 // 2704\n\tSYS___LLROUNDF_B                    = 0xA91 // 2705\n\tSYS___LLROUNDF_H                    = 0xA92 // 2706\n\tSYS_LLROUNDL                        = 0xA93 // 2707\n\tSYS___LLROUNDL_B                    = 0xA94 // 2708\n\tSYS___LLROUNDL_H                    = 0xA95 // 2709\n\tSYS_LOGBF                           = 0xA96 // 2710\n\tSYS___LOGBF_B                       = 0xA97 // 2711\n\tSYS___LOGBF_H                       = 0xA98 // 2712\n\tSYS_LOGBL                           = 0xA99 // 2713\n\tSYS___LOGBL_B                       = 0xA9A // 2714\n\tSYS___LOGBL_H                       = 0xA9B // 2715\n\tSYS_LRINT                           = 0xA9C // 2716\n\tSYS___LRINT_B                       = 0xA9D // 2717\n\tSYS___LRINT_H                       = 0xA9E // 2718\n\tSYS_LRINTF                          = 0xA9F // 2719\n\tSYS___LRINTF_B                      = 0xAA0 // 2720\n\tSYS___LRINTF_H                      = 0xAA1 // 2721\n\tSYS_LRINTL                          = 0xAA2 // 2722\n\tSYS___LRINTL_B                      = 0xAA3 // 2723\n\tSYS___LRINTL_H                      = 0xAA4 // 2724\n\tSYS_LROUNDL                         = 0xAA5 // 2725\n\tSYS___LROUNDL_B                     = 0xAA6 // 2726\n\tSYS___LROUNDL_H                     = 0xAA7 // 2727\n\tSYS_NAN                             = 0xAA8 // 2728\n\tSYS___NAN_B                         = 0xAA9 // 2729\n\tSYS_NANF                            = 0xAAA // 2730\n\tSYS___NANF_B                        = 0xAAB // 2731\n\tSYS_NANL                            = 0xAAC // 2732\n\tSYS___NANL_B                        = 0xAAD // 2733\n\tSYS_NEARBYINT                       = 0xAAE // 2734\n\tSYS___NEARBYINT_B                   = 0xAAF // 2735\n\tSYS___NEARBYINT_H                   = 0xAB0 // 2736\n\tSYS_NEARBYINTF                      = 0xAB1 // 2737\n\tSYS___NEARBYINTF_B                  = 0xAB2 // 2738\n\tSYS___NEARBYINTF_H                  = 0xAB3 // 2739\n\tSYS_NEARBYINTL                      = 0xAB4 // 2740\n\tSYS___NEARBYINTL_B                  = 0xAB5 // 2741\n\tSYS___NEARBYINTL_H                  = 0xAB6 // 2742\n\tSYS_NEXTAFTERF                      = 0xAB7 // 2743\n\tSYS___NEXTAFTERF_B                  = 0xAB8 // 2744\n\tSYS___NEXTAFTERF_H                  = 0xAB9 // 2745\n\tSYS_NEXTAFTERL                      = 0xABA // 2746\n\tSYS___NEXTAFTERL_B                  = 0xABB // 2747\n\tSYS___NEXTAFTERL_H                  = 0xABC // 2748\n\tSYS_NEXTTOWARD                      = 0xABD // 2749\n\tSYS___NEXTTOWARD_B                  = 0xABE // 2750\n\tSYS___NEXTTOWARD_H                  = 0xABF // 2751\n\tSYS_NEXTTOWARDF                     = 0xAC0 // 2752\n\tSYS___NEXTTOWARDF_B                 = 0xAC1 // 2753\n\tSYS___NEXTTOWARDF_H                 = 0xAC2 // 2754\n\tSYS_NEXTTOWARDL                     = 0xAC3 // 2755\n\tSYS___NEXTTOWARDL_B                 = 0xAC4 // 2756\n\tSYS___NEXTTOWARDL_H                 = 0xAC5 // 2757\n\tSYS___REMAINDERF_H                  = 0xAC6 // 2758\n\tSYS___REMAINDERL_H                  = 0xAC7 // 2759\n\tSYS___REMQUO_H                      = 0xAC8 // 2760\n\tSYS___REMQUOF_H                     = 0xAC9 // 2761\n\tSYS___REMQUOL_H                     = 0xACA // 2762\n\tSYS_RINTF                           = 0xACB // 2763\n\tSYS___RINTF_B                       = 0xACC // 2764\n\tSYS_RINTL                           = 0xACD // 2765\n\tSYS___RINTL_B                       = 0xACE // 2766\n\tSYS_ROUND                           = 0xACF // 2767\n\tSYS___ROUND_B                       = 0xAD0 // 2768\n\tSYS___ROUND_H                       = 0xAD1 // 2769\n\tSYS_ROUNDF                          = 0xAD2 // 2770\n\tSYS___ROUNDF_B                      = 0xAD3 // 2771\n\tSYS___ROUNDF_H                      = 0xAD4 // 2772\n\tSYS_ROUNDL                          = 0xAD5 // 2773\n\tSYS___ROUNDL_B                      = 0xAD6 // 2774\n\tSYS___ROUNDL_H                      = 0xAD7 // 2775\n\tSYS_SCALBLN                         = 0xAD8 // 2776\n\tSYS___SCALBLN_B                     = 0xAD9 // 2777\n\tSYS___SCALBLN_H                     = 0xADA // 2778\n\tSYS_SCALBLNF                        = 0xADB // 2779\n\tSYS___SCALBLNF_B                    = 0xADC // 2780\n\tSYS___SCALBLNF_H                    = 0xADD // 2781\n\tSYS_SCALBLNL                        = 0xADE // 2782\n\tSYS___SCALBLNL_B                    = 0xADF // 2783\n\tSYS___SCALBLNL_H                    = 0xAE0 // 2784\n\tSYS___SCALBN_B                      = 0xAE1 // 2785\n\tSYS___SCALBN_H                      = 0xAE2 // 2786\n\tSYS_SCALBNF                         = 0xAE3 // 2787\n\tSYS___SCALBNF_B                     = 0xAE4 // 2788\n\tSYS___SCALBNF_H                     = 0xAE5 // 2789\n\tSYS_SCALBNL                         = 0xAE6 // 2790\n\tSYS___SCALBNL_B                     = 0xAE7 // 2791\n\tSYS___SCALBNL_H                     = 0xAE8 // 2792\n\tSYS___TGAMMAL_H                     = 0xAE9 // 2793\n\tSYS_FECLEAREXCEPT                   = 0xAEA // 2794\n\tSYS_FEGETENV                        = 0xAEB // 2795\n\tSYS_FEGETEXCEPTFLAG                 = 0xAEC // 2796\n\tSYS_FEGETROUND                      = 0xAED // 2797\n\tSYS_FEHOLDEXCEPT                    = 0xAEE // 2798\n\tSYS_FERAISEEXCEPT                   = 0xAEF // 2799\n\tSYS_FESETENV                        = 0xAF0 // 2800\n\tSYS_FESETEXCEPTFLAG                 = 0xAF1 // 2801\n\tSYS_FESETROUND                      = 0xAF2 // 2802\n\tSYS_FETESTEXCEPT                    = 0xAF3 // 2803\n\tSYS_FEUPDATEENV                     = 0xAF4 // 2804\n\tSYS___COPYSIGN_H                    = 0xAF5 // 2805\n\tSYS___HYPOTF_H                      = 0xAF6 // 2806\n\tSYS___HYPOTL_H                      = 0xAF7 // 2807\n\tSYS___CLASS                         = 0xAFA // 2810\n\tSYS___CLASS_B                       = 0xAFB // 2811\n\tSYS___CLASS_H                       = 0xAFC // 2812\n\tSYS___ISBLANK_A                     = 0xB2E // 2862\n\tSYS___ISWBLANK_A                    = 0xB2F // 2863\n\tSYS___LROUND_FIXUP                  = 0xB30 // 2864\n\tSYS___LROUNDF_FIXUP                 = 0xB31 // 2865\n\tSYS_SCHED_YIELD                     = 0xB32 // 2866\n\tSYS_STRERROR_R                      = 0xB33 // 2867\n\tSYS_UNSETENV                        = 0xB34 // 2868\n\tSYS___LGAMMA_H_C99                  = 0xB38 // 2872\n\tSYS___LGAMMA_B_C99                  = 0xB39 // 2873\n\tSYS___LGAMMA_R_C99                  = 0xB3A // 2874\n\tSYS___FTELL2                        = 0xB3B // 2875\n\tSYS___FSEEK2                        = 0xB3C // 2876\n\tSYS___STATIC_REINIT                 = 0xB3D // 2877\n\tSYS_PTHREAD_ATTR_GETSTACK           = 0xB3E // 2878\n\tSYS_PTHREAD_ATTR_SETSTACK           = 0xB3F // 2879\n\tSYS___TGAMMA_H_C99                  = 0xB78 // 2936\n\tSYS___TGAMMAF_H_C99                 = 0xB79 // 2937\n\tSYS___LE_TRACEBACK                  = 0xB7A // 2938\n\tSYS___MUST_STAY_CLEAN               = 0xB7C // 2940\n\tSYS___O_ENV                         = 0xB7D // 2941\n\tSYS_ACOSD32                         = 0xB7E // 2942\n\tSYS_ACOSD64                         = 0xB7F // 2943\n\tSYS_ACOSD128                        = 0xB80 // 2944\n\tSYS_ACOSHD32                        = 0xB81 // 2945\n\tSYS_ACOSHD64                        = 0xB82 // 2946\n\tSYS_ACOSHD128                       = 0xB83 // 2947\n\tSYS_ASIND32                         = 0xB84 // 2948\n\tSYS_ASIND64                         = 0xB85 // 2949\n\tSYS_ASIND128                        = 0xB86 // 2950\n\tSYS_ASINHD32                        = 0xB87 // 2951\n\tSYS_ASINHD64                        = 0xB88 // 2952\n\tSYS_ASINHD128                       = 0xB89 // 2953\n\tSYS_ATAND32                         = 0xB8A // 2954\n\tSYS_ATAND64                         = 0xB8B // 2955\n\tSYS_ATAND128                        = 0xB8C // 2956\n\tSYS_ATAN2D32                        = 0xB8D // 2957\n\tSYS_ATAN2D64                        = 0xB8E // 2958\n\tSYS_ATAN2D128                       = 0xB8F // 2959\n\tSYS_ATANHD32                        = 0xB90 // 2960\n\tSYS_ATANHD64                        = 0xB91 // 2961\n\tSYS_ATANHD128                       = 0xB92 // 2962\n\tSYS_CBRTD32                         = 0xB93 // 2963\n\tSYS_CBRTD64                         = 0xB94 // 2964\n\tSYS_CBRTD128                        = 0xB95 // 2965\n\tSYS_CEILD32                         = 0xB96 // 2966\n\tSYS_CEILD64                         = 0xB97 // 2967\n\tSYS_CEILD128                        = 0xB98 // 2968\n\tSYS___CLASS2                        = 0xB99 // 2969\n\tSYS___CLASS2_B                      = 0xB9A // 2970\n\tSYS___CLASS2_H                      = 0xB9B // 2971\n\tSYS_COPYSIGND32                     = 0xB9C // 2972\n\tSYS_COPYSIGND64                     = 0xB9D // 2973\n\tSYS_COPYSIGND128                    = 0xB9E // 2974\n\tSYS_COSD32                          = 0xB9F // 2975\n\tSYS_COSD64                          = 0xBA0 // 2976\n\tSYS_COSD128                         = 0xBA1 // 2977\n\tSYS_COSHD32                         = 0xBA2 // 2978\n\tSYS_COSHD64                         = 0xBA3 // 2979\n\tSYS_COSHD128                        = 0xBA4 // 2980\n\tSYS_ERFD32                          = 0xBA5 // 2981\n\tSYS_ERFD64                          = 0xBA6 // 2982\n\tSYS_ERFD128                         = 0xBA7 // 2983\n\tSYS_ERFCD32                         = 0xBA8 // 2984\n\tSYS_ERFCD64                         = 0xBA9 // 2985\n\tSYS_ERFCD128                        = 0xBAA // 2986\n\tSYS_EXPD32                          = 0xBAB // 2987\n\tSYS_EXPD64                          = 0xBAC // 2988\n\tSYS_EXPD128                         = 0xBAD // 2989\n\tSYS_EXP2D32                         = 0xBAE // 2990\n\tSYS_EXP2D64                         = 0xBAF // 2991\n\tSYS_EXP2D128                        = 0xBB0 // 2992\n\tSYS_EXPM1D32                        = 0xBB1 // 2993\n\tSYS_EXPM1D64                        = 0xBB2 // 2994\n\tSYS_EXPM1D128                       = 0xBB3 // 2995\n\tSYS_FABSD32                         = 0xBB4 // 2996\n\tSYS_FABSD64                         = 0xBB5 // 2997\n\tSYS_FABSD128                        = 0xBB6 // 2998\n\tSYS_FDIMD32                         = 0xBB7 // 2999\n\tSYS_FDIMD64                         = 0xBB8 // 3000\n\tSYS_FDIMD128                        = 0xBB9 // 3001\n\tSYS_FE_DEC_GETROUND                 = 0xBBA // 3002\n\tSYS_FE_DEC_SETROUND                 = 0xBBB // 3003\n\tSYS_FLOORD32                        = 0xBBC // 3004\n\tSYS_FLOORD64                        = 0xBBD // 3005\n\tSYS_FLOORD128                       = 0xBBE // 3006\n\tSYS_FMAD32                          = 0xBBF // 3007\n\tSYS_FMAD64                          = 0xBC0 // 3008\n\tSYS_FMAD128                         = 0xBC1 // 3009\n\tSYS_FMAXD32                         = 0xBC2 // 3010\n\tSYS_FMAXD64                         = 0xBC3 // 3011\n\tSYS_FMAXD128                        = 0xBC4 // 3012\n\tSYS_FMIND32                         = 0xBC5 // 3013\n\tSYS_FMIND64                         = 0xBC6 // 3014\n\tSYS_FMIND128                        = 0xBC7 // 3015\n\tSYS_FMODD32                         = 0xBC8 // 3016\n\tSYS_FMODD64                         = 0xBC9 // 3017\n\tSYS_FMODD128                        = 0xBCA // 3018\n\tSYS___FP_CAST_D                     = 0xBCB // 3019\n\tSYS_FREXPD32                        = 0xBCC // 3020\n\tSYS_FREXPD64                        = 0xBCD // 3021\n\tSYS_FREXPD128                       = 0xBCE // 3022\n\tSYS_HYPOTD32                        = 0xBCF // 3023\n\tSYS_HYPOTD64                        = 0xBD0 // 3024\n\tSYS_HYPOTD128                       = 0xBD1 // 3025\n\tSYS_ILOGBD32                        = 0xBD2 // 3026\n\tSYS_ILOGBD64                        = 0xBD3 // 3027\n\tSYS_ILOGBD128                       = 0xBD4 // 3028\n\tSYS_LDEXPD32                        = 0xBD5 // 3029\n\tSYS_LDEXPD64                        = 0xBD6 // 3030\n\tSYS_LDEXPD128                       = 0xBD7 // 3031\n\tSYS_LGAMMAD32                       = 0xBD8 // 3032\n\tSYS_LGAMMAD64                       = 0xBD9 // 3033\n\tSYS_LGAMMAD128                      = 0xBDA // 3034\n\tSYS_LLRINTD32                       = 0xBDB // 3035\n\tSYS_LLRINTD64                       = 0xBDC // 3036\n\tSYS_LLRINTD128                      = 0xBDD // 3037\n\tSYS_LLROUNDD32                      = 0xBDE // 3038\n\tSYS_LLROUNDD64                      = 0xBDF // 3039\n\tSYS_LLROUNDD128                     = 0xBE0 // 3040\n\tSYS_LOGD32                          = 0xBE1 // 3041\n\tSYS_LOGD64                          = 0xBE2 // 3042\n\tSYS_LOGD128                         = 0xBE3 // 3043\n\tSYS_LOG10D32                        = 0xBE4 // 3044\n\tSYS_LOG10D64                        = 0xBE5 // 3045\n\tSYS_LOG10D128                       = 0xBE6 // 3046\n\tSYS_LOG1PD32                        = 0xBE7 // 3047\n\tSYS_LOG1PD64                        = 0xBE8 // 3048\n\tSYS_LOG1PD128                       = 0xBE9 // 3049\n\tSYS_LOG2D32                         = 0xBEA // 3050\n\tSYS_LOG2D64                         = 0xBEB // 3051\n\tSYS_LOG2D128                        = 0xBEC // 3052\n\tSYS_LOGBD32                         = 0xBED // 3053\n\tSYS_LOGBD64                         = 0xBEE // 3054\n\tSYS_LOGBD128                        = 0xBEF // 3055\n\tSYS_LRINTD32                        = 0xBF0 // 3056\n\tSYS_LRINTD64                        = 0xBF1 // 3057\n\tSYS_LRINTD128                       = 0xBF2 // 3058\n\tSYS_LROUNDD32                       = 0xBF3 // 3059\n\tSYS_LROUNDD64                       = 0xBF4 // 3060\n\tSYS_LROUNDD128                      = 0xBF5 // 3061\n\tSYS_MODFD32                         = 0xBF6 // 3062\n\tSYS_MODFD64                         = 0xBF7 // 3063\n\tSYS_MODFD128                        = 0xBF8 // 3064\n\tSYS_NAND32                          = 0xBF9 // 3065\n\tSYS_NAND64                          = 0xBFA // 3066\n\tSYS_NAND128                         = 0xBFB // 3067\n\tSYS_NEARBYINTD32                    = 0xBFC // 3068\n\tSYS_NEARBYINTD64                    = 0xBFD // 3069\n\tSYS_NEARBYINTD128                   = 0xBFE // 3070\n\tSYS_NEXTAFTERD32                    = 0xBFF // 3071\n\tSYS_NEXTAFTERD64                    = 0xC00 // 3072\n\tSYS_NEXTAFTERD128                   = 0xC01 // 3073\n\tSYS_NEXTTOWARDD32                   = 0xC02 // 3074\n\tSYS_NEXTTOWARDD64                   = 0xC03 // 3075\n\tSYS_NEXTTOWARDD128                  = 0xC04 // 3076\n\tSYS_POWD32                          = 0xC05 // 3077\n\tSYS_POWD64                          = 0xC06 // 3078\n\tSYS_POWD128                         = 0xC07 // 3079\n\tSYS_QUANTIZED32                     = 0xC08 // 3080\n\tSYS_QUANTIZED64                     = 0xC09 // 3081\n\tSYS_QUANTIZED128                    = 0xC0A // 3082\n\tSYS_REMAINDERD32                    = 0xC0B // 3083\n\tSYS_REMAINDERD64                    = 0xC0C // 3084\n\tSYS_REMAINDERD128                   = 0xC0D // 3085\n\tSYS___REMQUOD32                     = 0xC0E // 3086\n\tSYS___REMQUOD64                     = 0xC0F // 3087\n\tSYS___REMQUOD128                    = 0xC10 // 3088\n\tSYS_RINTD32                         = 0xC11 // 3089\n\tSYS_RINTD64                         = 0xC12 // 3090\n\tSYS_RINTD128                        = 0xC13 // 3091\n\tSYS_ROUNDD32                        = 0xC14 // 3092\n\tSYS_ROUNDD64                        = 0xC15 // 3093\n\tSYS_ROUNDD128                       = 0xC16 // 3094\n\tSYS_SAMEQUANTUMD32                  = 0xC17 // 3095\n\tSYS_SAMEQUANTUMD64                  = 0xC18 // 3096\n\tSYS_SAMEQUANTUMD128                 = 0xC19 // 3097\n\tSYS_SCALBLND32                      = 0xC1A // 3098\n\tSYS_SCALBLND64                      = 0xC1B // 3099\n\tSYS_SCALBLND128                     = 0xC1C // 3100\n\tSYS_SCALBND32                       = 0xC1D // 3101\n\tSYS_SCALBND64                       = 0xC1E // 3102\n\tSYS_SCALBND128                      = 0xC1F // 3103\n\tSYS_SIND32                          = 0xC20 // 3104\n\tSYS_SIND64                          = 0xC21 // 3105\n\tSYS_SIND128                         = 0xC22 // 3106\n\tSYS_SINHD32                         = 0xC23 // 3107\n\tSYS_SINHD64                         = 0xC24 // 3108\n\tSYS_SINHD128                        = 0xC25 // 3109\n\tSYS_SQRTD32                         = 0xC26 // 3110\n\tSYS_SQRTD64                         = 0xC27 // 3111\n\tSYS_SQRTD128                        = 0xC28 // 3112\n\tSYS_STRTOD32                        = 0xC29 // 3113\n\tSYS_STRTOD64                        = 0xC2A // 3114\n\tSYS_STRTOD128                       = 0xC2B // 3115\n\tSYS_TAND32                          = 0xC2C // 3116\n\tSYS_TAND64                          = 0xC2D // 3117\n\tSYS_TAND128                         = 0xC2E // 3118\n\tSYS_TANHD32                         = 0xC2F // 3119\n\tSYS_TANHD64                         = 0xC30 // 3120\n\tSYS_TANHD128                        = 0xC31 // 3121\n\tSYS_TGAMMAD32                       = 0xC32 // 3122\n\tSYS_TGAMMAD64                       = 0xC33 // 3123\n\tSYS_TGAMMAD128                      = 0xC34 // 3124\n\tSYS_TRUNCD32                        = 0xC3E // 3134\n\tSYS_TRUNCD64                        = 0xC3F // 3135\n\tSYS_TRUNCD128                       = 0xC40 // 3136\n\tSYS_WCSTOD32                        = 0xC41 // 3137\n\tSYS_WCSTOD64                        = 0xC42 // 3138\n\tSYS_WCSTOD128                       = 0xC43 // 3139\n\tSYS___CODEPAGE_INFO                 = 0xC64 // 3172\n\tSYS_POSIX_OPENPT                    = 0xC66 // 3174\n\tSYS_PSELECT                         = 0xC67 // 3175\n\tSYS_SOCKATMARK                      = 0xC68 // 3176\n\tSYS_AIO_FSYNC                       = 0xC69 // 3177\n\tSYS_LIO_LISTIO                      = 0xC6A // 3178\n\tSYS___ATANPID32                     = 0xC6B // 3179\n\tSYS___ATANPID64                     = 0xC6C // 3180\n\tSYS___ATANPID128                    = 0xC6D // 3181\n\tSYS___COSPID32                      = 0xC6E // 3182\n\tSYS___COSPID64                      = 0xC6F // 3183\n\tSYS___COSPID128                     = 0xC70 // 3184\n\tSYS___SINPID32                      = 0xC71 // 3185\n\tSYS___SINPID64                      = 0xC72 // 3186\n\tSYS___SINPID128                     = 0xC73 // 3187\n\tSYS_SETIPV4SOURCEFILTER             = 0xC76 // 3190\n\tSYS_GETIPV4SOURCEFILTER             = 0xC77 // 3191\n\tSYS_SETSOURCEFILTER                 = 0xC78 // 3192\n\tSYS_GETSOURCEFILTER                 = 0xC79 // 3193\n\tSYS_FWRITE_UNLOCKED                 = 0xC7A // 3194\n\tSYS_FREAD_UNLOCKED                  = 0xC7B // 3195\n\tSYS_FGETS_UNLOCKED                  = 0xC7C // 3196\n\tSYS_GETS_UNLOCKED                   = 0xC7D // 3197\n\tSYS_FPUTS_UNLOCKED                  = 0xC7E // 3198\n\tSYS_PUTS_UNLOCKED                   = 0xC7F // 3199\n\tSYS_FGETC_UNLOCKED                  = 0xC80 // 3200\n\tSYS_FPUTC_UNLOCKED                  = 0xC81 // 3201\n\tSYS_DLADDR                          = 0xC82 // 3202\n\tSYS_SHM_OPEN                        = 0xC8C // 3212\n\tSYS_SHM_UNLINK                      = 0xC8D // 3213\n\tSYS___CLASS2F                       = 0xC91 // 3217\n\tSYS___CLASS2L                       = 0xC92 // 3218\n\tSYS___CLASS2F_B                     = 0xC93 // 3219\n\tSYS___CLASS2F_H                     = 0xC94 // 3220\n\tSYS___CLASS2L_B                     = 0xC95 // 3221\n\tSYS___CLASS2L_H                     = 0xC96 // 3222\n\tSYS___CLASS2D32                     = 0xC97 // 3223\n\tSYS___CLASS2D64                     = 0xC98 // 3224\n\tSYS___CLASS2D128                    = 0xC99 // 3225\n\tSYS___TOCSNAME2                     = 0xC9A // 3226\n\tSYS___D1TOP                         = 0xC9B // 3227\n\tSYS___D2TOP                         = 0xC9C // 3228\n\tSYS___D4TOP                         = 0xC9D // 3229\n\tSYS___PTOD1                         = 0xC9E // 3230\n\tSYS___PTOD2                         = 0xC9F // 3231\n\tSYS___PTOD4                         = 0xCA0 // 3232\n\tSYS_CLEARERR_UNLOCKED               = 0xCA1 // 3233\n\tSYS_FDELREC_UNLOCKED                = 0xCA2 // 3234\n\tSYS_FEOF_UNLOCKED                   = 0xCA3 // 3235\n\tSYS_FERROR_UNLOCKED                 = 0xCA4 // 3236\n\tSYS_FFLUSH_UNLOCKED                 = 0xCA5 // 3237\n\tSYS_FGETPOS_UNLOCKED                = 0xCA6 // 3238\n\tSYS_FGETWC_UNLOCKED                 = 0xCA7 // 3239\n\tSYS_FGETWS_UNLOCKED                 = 0xCA8 // 3240\n\tSYS_FILENO_UNLOCKED                 = 0xCA9 // 3241\n\tSYS_FLDATA_UNLOCKED                 = 0xCAA // 3242\n\tSYS_FLOCATE_UNLOCKED                = 0xCAB // 3243\n\tSYS_FPRINTF_UNLOCKED                = 0xCAC // 3244\n\tSYS_FPUTWC_UNLOCKED                 = 0xCAD // 3245\n\tSYS_FPUTWS_UNLOCKED                 = 0xCAE // 3246\n\tSYS_FSCANF_UNLOCKED                 = 0xCAF // 3247\n\tSYS_FSEEK_UNLOCKED                  = 0xCB0 // 3248\n\tSYS_FSEEKO_UNLOCKED                 = 0xCB1 // 3249\n\tSYS_FSETPOS_UNLOCKED                = 0xCB3 // 3251\n\tSYS_FTELL_UNLOCKED                  = 0xCB4 // 3252\n\tSYS_FTELLO_UNLOCKED                 = 0xCB5 // 3253\n\tSYS_FUPDATE_UNLOCKED                = 0xCB7 // 3255\n\tSYS_FWIDE_UNLOCKED                  = 0xCB8 // 3256\n\tSYS_FWPRINTF_UNLOCKED               = 0xCB9 // 3257\n\tSYS_FWSCANF_UNLOCKED                = 0xCBA // 3258\n\tSYS_GETWC_UNLOCKED                  = 0xCBB // 3259\n\tSYS_GETWCHAR_UNLOCKED               = 0xCBC // 3260\n\tSYS_PERROR_UNLOCKED                 = 0xCBD // 3261\n\tSYS_PRINTF_UNLOCKED                 = 0xCBE // 3262\n\tSYS_PUTWC_UNLOCKED                  = 0xCBF // 3263\n\tSYS_PUTWCHAR_UNLOCKED               = 0xCC0 // 3264\n\tSYS_REWIND_UNLOCKED                 = 0xCC1 // 3265\n\tSYS_SCANF_UNLOCKED                  = 0xCC2 // 3266\n\tSYS_UNGETC_UNLOCKED                 = 0xCC3 // 3267\n\tSYS_UNGETWC_UNLOCKED                = 0xCC4 // 3268\n\tSYS_VFPRINTF_UNLOCKED               = 0xCC5 // 3269\n\tSYS_VFSCANF_UNLOCKED                = 0xCC7 // 3271\n\tSYS_VFWPRINTF_UNLOCKED              = 0xCC9 // 3273\n\tSYS_VFWSCANF_UNLOCKED               = 0xCCB // 3275\n\tSYS_VPRINTF_UNLOCKED                = 0xCCD // 3277\n\tSYS_VSCANF_UNLOCKED                 = 0xCCF // 3279\n\tSYS_VWPRINTF_UNLOCKED               = 0xCD1 // 3281\n\tSYS_VWSCANF_UNLOCKED                = 0xCD3 // 3283\n\tSYS_WPRINTF_UNLOCKED                = 0xCD5 // 3285\n\tSYS_WSCANF_UNLOCKED                 = 0xCD6 // 3286\n\tSYS_ASCTIME64                       = 0xCD7 // 3287\n\tSYS_ASCTIME64_R                     = 0xCD8 // 3288\n\tSYS_CTIME64                         = 0xCD9 // 3289\n\tSYS_CTIME64_R                       = 0xCDA // 3290\n\tSYS_DIFFTIME64                      = 0xCDB // 3291\n\tSYS_GMTIME64                        = 0xCDC // 3292\n\tSYS_GMTIME64_R                      = 0xCDD // 3293\n\tSYS_LOCALTIME64                     = 0xCDE // 3294\n\tSYS_LOCALTIME64_R                   = 0xCDF // 3295\n\tSYS_MKTIME64                        = 0xCE0 // 3296\n\tSYS_TIME64                          = 0xCE1 // 3297\n\tSYS___LOGIN_APPLID                  = 0xCE2 // 3298\n\tSYS___PASSWD_APPLID                 = 0xCE3 // 3299\n\tSYS_PTHREAD_SECURITY_APPLID_NP      = 0xCE4 // 3300\n\tSYS___GETTHENT                      = 0xCE5 // 3301\n\tSYS_FREEIFADDRS                     = 0xCE6 // 3302\n\tSYS_GETIFADDRS                      = 0xCE7 // 3303\n\tSYS_POSIX_FALLOCATE                 = 0xCE8 // 3304\n\tSYS_POSIX_MEMALIGN                  = 0xCE9 // 3305\n\tSYS_SIZEOF_ALLOC                    = 0xCEA // 3306\n\tSYS_RESIZE_ALLOC                    = 0xCEB // 3307\n\tSYS_FREAD_NOUPDATE                  = 0xCEC // 3308\n\tSYS_FREAD_NOUPDATE_UNLOCKED         = 0xCED // 3309\n\tSYS_FGETPOS64                       = 0xCEE // 3310\n\tSYS_FSEEK64                         = 0xCEF // 3311\n\tSYS_FSEEKO64                        = 0xCF0 // 3312\n\tSYS_FSETPOS64                       = 0xCF1 // 3313\n\tSYS_FTELL64                         = 0xCF2 // 3314\n\tSYS_FTELLO64                        = 0xCF3 // 3315\n\tSYS_FGETPOS64_UNLOCKED              = 0xCF4 // 3316\n\tSYS_FSEEK64_UNLOCKED                = 0xCF5 // 3317\n\tSYS_FSEEKO64_UNLOCKED               = 0xCF6 // 3318\n\tSYS_FSETPOS64_UNLOCKED              = 0xCF7 // 3319\n\tSYS_FTELL64_UNLOCKED                = 0xCF8 // 3320\n\tSYS_FTELLO64_UNLOCKED               = 0xCF9 // 3321\n\tSYS_FOPEN_UNLOCKED                  = 0xCFA // 3322\n\tSYS_FREOPEN_UNLOCKED                = 0xCFB // 3323\n\tSYS_FDOPEN_UNLOCKED                 = 0xCFC // 3324\n\tSYS_TMPFILE_UNLOCKED                = 0xCFD // 3325\n\tSYS___MOSERVICES                    = 0xD3D // 3389\n\tSYS___GETTOD                        = 0xD3E // 3390\n\tSYS_C16RTOMB                        = 0xD40 // 3392\n\tSYS_C32RTOMB                        = 0xD41 // 3393\n\tSYS_MBRTOC16                        = 0xD42 // 3394\n\tSYS_MBRTOC32                        = 0xD43 // 3395\n\tSYS_QUANTEXPD32                     = 0xD44 // 3396\n\tSYS_QUANTEXPD64                     = 0xD45 // 3397\n\tSYS_QUANTEXPD128                    = 0xD46 // 3398\n\tSYS___LOCALE_CTL                    = 0xD47 // 3399\n\tSYS___SMF_RECORD2                   = 0xD48 // 3400\n\tSYS_FOPEN64                         = 0xD49 // 3401\n\tSYS_FOPEN64_UNLOCKED                = 0xD4A // 3402\n\tSYS_FREOPEN64                       = 0xD4B // 3403\n\tSYS_FREOPEN64_UNLOCKED              = 0xD4C // 3404\n\tSYS_TMPFILE64                       = 0xD4D // 3405\n\tSYS_TMPFILE64_UNLOCKED              = 0xD4E // 3406\n\tSYS_GETDATE64                       = 0xD4F // 3407\n\tSYS_GETTIMEOFDAY64                  = 0xD50 // 3408\n\tSYS_BIND2ADDRSEL                    = 0xD59 // 3417\n\tSYS_INET6_IS_SRCADDR                = 0xD5A // 3418\n\tSYS___GETGRGID1                     = 0xD5B // 3419\n\tSYS___GETGRNAM1                     = 0xD5C // 3420\n\tSYS___FBUFSIZE                      = 0xD60 // 3424\n\tSYS___FPENDING                      = 0xD61 // 3425\n\tSYS___FLBF                          = 0xD62 // 3426\n\tSYS___FREADABLE                     = 0xD63 // 3427\n\tSYS___FWRITABLE                     = 0xD64 // 3428\n\tSYS___FREADING                      = 0xD65 // 3429\n\tSYS___FWRITING                      = 0xD66 // 3430\n\tSYS___FSETLOCKING                   = 0xD67 // 3431\n\tSYS__FLUSHLBF                       = 0xD68 // 3432\n\tSYS___FPURGE                        = 0xD69 // 3433\n\tSYS___FREADAHEAD                    = 0xD6A // 3434\n\tSYS___FSETERR                       = 0xD6B // 3435\n\tSYS___FPENDING_UNLOCKED             = 0xD6C // 3436\n\tSYS___FREADING_UNLOCKED             = 0xD6D // 3437\n\tSYS___FWRITING_UNLOCKED             = 0xD6E // 3438\n\tSYS__FLUSHLBF_UNLOCKED              = 0xD6F // 3439\n\tSYS___FPURGE_UNLOCKED               = 0xD70 // 3440\n\tSYS___FREADAHEAD_UNLOCKED           = 0xD71 // 3441\n\tSYS___LE_CEEGTJS                    = 0xD72 // 3442\n\tSYS___LE_RECORD_DUMP                = 0xD73 // 3443\n\tSYS_FSTAT64                         = 0xD74 // 3444\n\tSYS_LSTAT64                         = 0xD75 // 3445\n\tSYS_STAT64                          = 0xD76 // 3446\n\tSYS___READDIR2_64                   = 0xD77 // 3447\n\tSYS___OPEN_STAT64                   = 0xD78 // 3448\n\tSYS_FTW64                           = 0xD79 // 3449\n\tSYS_NFTW64                          = 0xD7A // 3450\n\tSYS_UTIME64                         = 0xD7B // 3451\n\tSYS_UTIMES64                        = 0xD7C // 3452\n\tSYS___GETIPC64                      = 0xD7D // 3453\n\tSYS_MSGCTL64                        = 0xD7E // 3454\n\tSYS_SEMCTL64                        = 0xD7F // 3455\n\tSYS_SHMCTL64                        = 0xD80 // 3456\n\tSYS_MSGXRCV64                       = 0xD81 // 3457\n\tSYS___MGXR64                        = 0xD81 // 3457\n\tSYS_W_GETPSENT64                    = 0xD82 // 3458\n\tSYS_PTHREAD_COND_TIMEDWAIT64        = 0xD83 // 3459\n\tSYS_FTIME64                         = 0xD85 // 3461\n\tSYS_GETUTXENT64                     = 0xD86 // 3462\n\tSYS_GETUTXID64                      = 0xD87 // 3463\n\tSYS_GETUTXLINE64                    = 0xD88 // 3464\n\tSYS_PUTUTXLINE64                    = 0xD89 // 3465\n\tSYS_NEWLOCALE                       = 0xD8A // 3466\n\tSYS_FREELOCALE                      = 0xD8B // 3467\n\tSYS_USELOCALE                       = 0xD8C // 3468\n\tSYS_DUPLOCALE                       = 0xD8D // 3469\n\tSYS___CHATTR64                      = 0xD9C // 3484\n\tSYS___LCHATTR64                     = 0xD9D // 3485\n\tSYS___FCHATTR64                     = 0xD9E // 3486\n\tSYS_____CHATTR64_A                  = 0xD9F // 3487\n\tSYS_____LCHATTR64_A                 = 0xDA0 // 3488\n\tSYS___LE_CEEUSGD                    = 0xDA1 // 3489\n\tSYS___LE_IFAM_CON                   = 0xDA2 // 3490\n\tSYS___LE_IFAM_DSC                   = 0xDA3 // 3491\n\tSYS___LE_IFAM_GET                   = 0xDA4 // 3492\n\tSYS___LE_IFAM_QRY                   = 0xDA5 // 3493\n\tSYS_ALIGNED_ALLOC                   = 0xDA6 // 3494\n\tSYS_ACCEPT4                         = 0xDA7 // 3495\n\tSYS___ACCEPT4_A                     = 0xDA8 // 3496\n\tSYS_COPYFILERANGE                   = 0xDA9 // 3497\n\tSYS_GETLINE                         = 0xDAA // 3498\n\tSYS___GETLINE_A                     = 0xDAB // 3499\n\tSYS_DIRFD                           = 0xDAC // 3500\n\tSYS_CLOCK_GETTIME                   = 0xDAD // 3501\n\tSYS_DUP3                            = 0xDAE // 3502\n\tSYS_EPOLL_CREATE                    = 0xDAF // 3503\n\tSYS_EPOLL_CREATE1                   = 0xDB0 // 3504\n\tSYS_EPOLL_CTL                       = 0xDB1 // 3505\n\tSYS_EPOLL_WAIT                      = 0xDB2 // 3506\n\tSYS_EPOLL_PWAIT                     = 0xDB3 // 3507\n\tSYS_EVENTFD                         = 0xDB4 // 3508\n\tSYS_STATFS                          = 0xDB5 // 3509\n\tSYS___STATFS_A                      = 0xDB6 // 3510\n\tSYS_FSTATFS                         = 0xDB7 // 3511\n\tSYS_INOTIFY_INIT                    = 0xDB8 // 3512\n\tSYS_INOTIFY_INIT1                   = 0xDB9 // 3513\n\tSYS_INOTIFY_ADD_WATCH               = 0xDBA // 3514\n\tSYS___INOTIFY_ADD_WATCH_A           = 0xDBB // 3515\n\tSYS_INOTIFY_RM_WATCH                = 0xDBC // 3516\n\tSYS_PIPE2                           = 0xDBD // 3517\n\tSYS_PIVOT_ROOT                      = 0xDBE // 3518\n\tSYS___PIVOT_ROOT_A                  = 0xDBF // 3519\n\tSYS_PRCTL                           = 0xDC0 // 3520\n\tSYS_PRLIMIT                         = 0xDC1 // 3521\n\tSYS_SETHOSTNAME                     = 0xDC2 // 3522\n\tSYS___SETHOSTNAME_A                 = 0xDC3 // 3523\n\tSYS_SETRESUID                       = 0xDC4 // 3524\n\tSYS_SETRESGID                       = 0xDC5 // 3525\n\tSYS_PTHREAD_CONDATTR_GETCLOCK       = 0xDC6 // 3526\n\tSYS_FLOCK                           = 0xDC7 // 3527\n\tSYS_FGETXATTR                       = 0xDC8 // 3528\n\tSYS___FGETXATTR_A                   = 0xDC9 // 3529\n\tSYS_FLISTXATTR                      = 0xDCA // 3530\n\tSYS___FLISTXATTR_A                  = 0xDCB // 3531\n\tSYS_FREMOVEXATTR                    = 0xDCC // 3532\n\tSYS___FREMOVEXATTR_A                = 0xDCD // 3533\n\tSYS_FSETXATTR                       = 0xDCE // 3534\n\tSYS___FSETXATTR_A                   = 0xDCF // 3535\n\tSYS_GETXATTR                        = 0xDD0 // 3536\n\tSYS___GETXATTR_A                    = 0xDD1 // 3537\n\tSYS_LGETXATTR                       = 0xDD2 // 3538\n\tSYS___LGETXATTR_A                   = 0xDD3 // 3539\n\tSYS_LISTXATTR                       = 0xDD4 // 3540\n\tSYS___LISTXATTR_A                   = 0xDD5 // 3541\n\tSYS_LLISTXATTR                      = 0xDD6 // 3542\n\tSYS___LLISTXATTR_A                  = 0xDD7 // 3543\n\tSYS_LREMOVEXATTR                    = 0xDD8 // 3544\n\tSYS___LREMOVEXATTR_A                = 0xDD9 // 3545\n\tSYS_LSETXATTR                       = 0xDDA // 3546\n\tSYS___LSETXATTR_A                   = 0xDDB // 3547\n\tSYS_REMOVEXATTR                     = 0xDDC // 3548\n\tSYS___REMOVEXATTR_A                 = 0xDDD // 3549\n\tSYS_SETXATTR                        = 0xDDE // 3550\n\tSYS___SETXATTR_A                    = 0xDDF // 3551\n\tSYS_FDATASYNC                       = 0xDE0 // 3552\n\tSYS_SYNCFS                          = 0xDE1 // 3553\n\tSYS_FUTIMES                         = 0xDE2 // 3554\n\tSYS_FUTIMESAT                       = 0xDE3 // 3555\n\tSYS___FUTIMESAT_A                   = 0xDE4 // 3556\n\tSYS_LUTIMES                         = 0xDE5 // 3557\n\tSYS___LUTIMES_A                     = 0xDE6 // 3558\n\tSYS_INET_ATON                       = 0xDE7 // 3559\n\tSYS_GETRANDOM                       = 0xDE8 // 3560\n\tSYS_GETTID                          = 0xDE9 // 3561\n\tSYS_MEMFD_CREATE                    = 0xDEA // 3562\n\tSYS___MEMFD_CREATE_A                = 0xDEB // 3563\n\tSYS_FACCESSAT                       = 0xDEC // 3564\n\tSYS___FACCESSAT_A                   = 0xDED // 3565\n\tSYS_FCHMODAT                        = 0xDEE // 3566\n\tSYS___FCHMODAT_A                    = 0xDEF // 3567\n\tSYS_FCHOWNAT                        = 0xDF0 // 3568\n\tSYS___FCHOWNAT_A                    = 0xDF1 // 3569\n\tSYS_FSTATAT                         = 0xDF2 // 3570\n\tSYS___FSTATAT_A                     = 0xDF3 // 3571\n\tSYS_LINKAT                          = 0xDF4 // 3572\n\tSYS___LINKAT_A                      = 0xDF5 // 3573\n\tSYS_MKDIRAT                         = 0xDF6 // 3574\n\tSYS___MKDIRAT_A                     = 0xDF7 // 3575\n\tSYS_MKFIFOAT                        = 0xDF8 // 3576\n\tSYS___MKFIFOAT_A                    = 0xDF9 // 3577\n\tSYS_MKNODAT                         = 0xDFA // 3578\n\tSYS___MKNODAT_A                     = 0xDFB // 3579\n\tSYS_OPENAT                          = 0xDFC // 3580\n\tSYS___OPENAT_A                      = 0xDFD // 3581\n\tSYS_READLINKAT                      = 0xDFE // 3582\n\tSYS___READLINKAT_A                  = 0xDFF // 3583\n\tSYS_RENAMEAT                        = 0xE00 // 3584\n\tSYS___RENAMEAT_A                    = 0xE01 // 3585\n\tSYS_RENAMEAT2                       = 0xE02 // 3586\n\tSYS___RENAMEAT2_A                   = 0xE03 // 3587\n\tSYS_SYMLINKAT                       = 0xE04 // 3588\n\tSYS___SYMLINKAT_A                   = 0xE05 // 3589\n\tSYS_UNLINKAT                        = 0xE06 // 3590\n\tSYS___UNLINKAT_A                    = 0xE07 // 3591\n\tSYS_SYSINFO                         = 0xE08 // 3592\n\tSYS_WAIT4                           = 0xE0A // 3594\n\tSYS_CLONE                           = 0xE0B // 3595\n\tSYS_UNSHARE                         = 0xE0C // 3596\n\tSYS_SETNS                           = 0xE0D // 3597\n\tSYS_CAPGET                          = 0xE0E // 3598\n\tSYS_CAPSET                          = 0xE0F // 3599\n\tSYS_STRCHRNUL                       = 0xE10 // 3600\n\tSYS_PTHREAD_CONDATTR_SETCLOCK       = 0xE12 // 3602\n\tSYS_OPEN_BY_HANDLE_AT               = 0xE13 // 3603\n\tSYS___OPEN_BY_HANDLE_AT_A           = 0xE14 // 3604\n\tSYS___INET_ATON_A                   = 0xE15 // 3605\n\tSYS_MOUNT1                          = 0xE16 // 3606\n\tSYS___MOUNT1_A                      = 0xE17 // 3607\n\tSYS_UMOUNT1                         = 0xE18 // 3608\n\tSYS___UMOUNT1_A                     = 0xE19 // 3609\n\tSYS_UMOUNT2                         = 0xE1A // 3610\n\tSYS___UMOUNT2_A                     = 0xE1B // 3611\n\tSYS___PRCTL_A                       = 0xE1C // 3612\n\tSYS_LOCALTIME_R2                    = 0xE1D // 3613\n\tSYS___LOCALTIME_R2_A                = 0xE1E // 3614\n\tSYS_OPENAT2                         = 0xE1F // 3615\n\tSYS___OPENAT2_A                     = 0xE20 // 3616\n\tSYS___LE_CEEMICT                    = 0xE21 // 3617\n\tSYS_GETENTROPY                      = 0xE22 // 3618\n\tSYS_NANOSLEEP                       = 0xE23 // 3619\n\tSYS_UTIMENSAT                       = 0xE24 // 3620\n\tSYS___UTIMENSAT_A                   = 0xE25 // 3621\n\tSYS_ASPRINTF                        = 0xE26 // 3622\n\tSYS___ASPRINTF_A                    = 0xE27 // 3623\n\tSYS_VASPRINTF                       = 0xE28 // 3624\n\tSYS___VASPRINTF_A                   = 0xE29 // 3625\n\tSYS_DPRINTF                         = 0xE2A // 3626\n\tSYS___DPRINTF_A                     = 0xE2B // 3627\n\tSYS_GETOPT_LONG                     = 0xE2C // 3628\n\tSYS___GETOPT_LONG_A                 = 0xE2D // 3629\n\tSYS_PSIGNAL                         = 0xE2E // 3630\n\tSYS___PSIGNAL_A                     = 0xE2F // 3631\n\tSYS_PSIGNAL_UNLOCKED                = 0xE30 // 3632\n\tSYS___PSIGNAL_UNLOCKED_A            = 0xE31 // 3633\n\tSYS_FSTATAT_O                       = 0xE32 // 3634\n\tSYS___FSTATAT_O_A                   = 0xE33 // 3635\n\tSYS_FSTATAT64                       = 0xE34 // 3636\n\tSYS___FSTATAT64_A                   = 0xE35 // 3637\n\tSYS___CHATTRAT                      = 0xE36 // 3638\n\tSYS_____CHATTRAT_A                  = 0xE37 // 3639\n\tSYS___CHATTRAT64                    = 0xE38 // 3640\n\tSYS_____CHATTRAT64_A                = 0xE39 // 3641\n\tSYS_MADVISE                         = 0xE3A // 3642\n\tSYS___AUTHENTICATE                  = 0xE3B // 3643\n\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go",
    "content": "// cgo -godefs types_aix.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc && aix\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x4\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x4\n\tSizeofLongLong = 0x8\n\tPathMax        = 0x3ff\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int32\n\t_C_long_long int64\n)\n\ntype off64 int64\ntype off int32\ntype Mode_t uint32\n\ntype Timespec struct {\n\tSec  int32\n\tNsec int32\n}\n\ntype Timeval struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Timeval32 struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Timex struct{}\n\ntype Time_t int32\n\ntype Tms struct{}\n\ntype Utimbuf struct {\n\tActime  int32\n\tModtime int32\n}\n\ntype Timezone struct {\n\tMinuteswest int32\n\tDsttime     int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype Pid_t int32\n\ntype _Gid_t uint32\n\ntype dev_t uint32\n\ntype Stat_t struct {\n\tDev      uint32\n\tIno      uint32\n\tMode     uint32\n\tNlink    int16\n\tFlag     uint16\n\tUid      uint32\n\tGid      uint32\n\tRdev     uint32\n\tSize     int32\n\tAtim     Timespec\n\tMtim     Timespec\n\tCtim     Timespec\n\tBlksize  int32\n\tBlocks   int32\n\tVfstype  int32\n\tVfs      uint32\n\tType     uint32\n\tGen      uint32\n\tReserved [9]uint32\n}\n\ntype StatxTimestamp struct{}\n\ntype Statx_t struct{}\n\ntype Dirent struct {\n\tOffset uint32\n\tIno    uint32\n\tReclen uint16\n\tNamlen uint16\n\tName   [256]uint8\n}\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]uint8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [1023]uint8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [120]uint8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]uint8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [1012]uint8\n}\n\ntype _Socklen uint32\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x404\n\tSizeofSockaddrUnix     = 0x401\n\tSizeofSockaddrDatalink = 0x80\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x8\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofMsghdr           = 0x1c\n\tSizeofCmsghdr          = 0xc\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tSizeofIfMsghdr = 0x10\n)\n\ntype IfMsgHdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\tAddrlen uint8\n\t_       [1]byte\n}\n\ntype FdSet struct {\n\tBits [2048]int32\n}\n\ntype Utsname struct {\n\tSysname  [32]byte\n\tNodename [32]byte\n\tRelease  [32]byte\n\tVersion  [32]byte\n\tMachine  [32]byte\n}\n\ntype Ustat_t struct{}\n\ntype Sigset_t struct {\n\tLosigs uint32\n\tHisigs uint32\n}\n\nconst (\n\tAT_FDCWD            = -0x2\n\tAT_REMOVEDIR        = 0x1\n\tAT_SYMLINK_NOFOLLOW = 0x1\n)\n\ntype Termios struct {\n\tIflag uint32\n\tOflag uint32\n\tCflag uint32\n\tLflag uint32\n\tCc    [16]uint8\n}\n\ntype Termio struct {\n\tIflag uint16\n\tOflag uint16\n\tCflag uint16\n\tLflag uint16\n\tLine  uint8\n\tCc    [8]uint8\n\t_     [1]byte\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  uint16\n\tRevents uint16\n}\n\nconst (\n\tPOLLERR    = 0x4000\n\tPOLLHUP    = 0x2000\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x8000\n\tPOLLOUT    = 0x2\n\tPOLLPRI    = 0x4\n\tPOLLRDBAND = 0x20\n\tPOLLRDNORM = 0x10\n\tPOLLWRBAND = 0x40\n\tPOLLWRNORM = 0x2\n)\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tSysid  uint32\n\tPid    int32\n\tVfs    int32\n\tStart  int64\n\tLen    int64\n}\n\ntype Fsid_t struct {\n\tVal [2]uint32\n}\ntype Fsid64_t struct {\n\tVal [2]uint64\n}\n\ntype Statfs_t struct {\n\tVersion   int32\n\tType      int32\n\tBsize     uint32\n\tBlocks    uint32\n\tBfree     uint32\n\tBavail    uint32\n\tFiles     uint32\n\tFfree     uint32\n\tFsid      Fsid_t\n\tVfstype   int32\n\tFsize     uint32\n\tVfsnumber int32\n\tVfsoff    int32\n\tVfslen    int32\n\tVfsvers   int32\n\tFname     [32]uint8\n\tFpack     [32]uint8\n\tName_max  int32\n}\n\nconst RNDGETENTCNT = 0x80045200\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go",
    "content": "// cgo -godefs types_aix.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc64 && aix\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n\tPathMax        = 0x3ff\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype off64 int64\ntype off int64\ntype Mode_t uint32\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int32\n\t_    [4]byte\n}\n\ntype Timeval32 struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Timex struct{}\n\ntype Time_t int64\n\ntype Tms struct{}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Timezone struct {\n\tMinuteswest int32\n\tDsttime     int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype Pid_t int32\n\ntype _Gid_t uint32\n\ntype dev_t uint64\n\ntype Stat_t struct {\n\tDev      uint64\n\tIno      uint64\n\tMode     uint32\n\tNlink    int16\n\tFlag     uint16\n\tUid      uint32\n\tGid      uint32\n\tRdev     uint64\n\tSsize    int32\n\tAtim     Timespec\n\tMtim     Timespec\n\tCtim     Timespec\n\tBlksize  int64\n\tBlocks   int64\n\tVfstype  int32\n\tVfs      uint32\n\tType     uint32\n\tGen      uint32\n\tReserved [9]uint32\n\tPadto_ll uint32\n\tSize     int64\n}\n\ntype StatxTimestamp struct{}\n\ntype Statx_t struct{}\n\ntype Dirent struct {\n\tOffset uint64\n\tIno    uint64\n\tReclen uint16\n\tNamlen uint16\n\tName   [256]uint8\n\t_      [4]byte\n}\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]uint8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [1023]uint8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [120]uint8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]uint8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [1012]uint8\n}\n\ntype _Socklen uint32\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x404\n\tSizeofSockaddrUnix     = 0x401\n\tSizeofSockaddrDatalink = 0x80\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tSizeofIfMsghdr = 0x10\n)\n\ntype IfMsgHdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\tAddrlen uint8\n\t_       [1]byte\n}\n\ntype FdSet struct {\n\tBits [1024]int64\n}\n\ntype Utsname struct {\n\tSysname  [32]byte\n\tNodename [32]byte\n\tRelease  [32]byte\n\tVersion  [32]byte\n\tMachine  [32]byte\n}\n\ntype Ustat_t struct{}\n\ntype Sigset_t struct {\n\tSet [4]uint64\n}\n\nconst (\n\tAT_FDCWD            = -0x2\n\tAT_REMOVEDIR        = 0x1\n\tAT_SYMLINK_NOFOLLOW = 0x1\n)\n\ntype Termios struct {\n\tIflag uint32\n\tOflag uint32\n\tCflag uint32\n\tLflag uint32\n\tCc    [16]uint8\n}\n\ntype Termio struct {\n\tIflag uint16\n\tOflag uint16\n\tCflag uint16\n\tLflag uint16\n\tLine  uint8\n\tCc    [8]uint8\n\t_     [1]byte\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  uint16\n\tRevents uint16\n}\n\nconst (\n\tPOLLERR    = 0x4000\n\tPOLLHUP    = 0x2000\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x8000\n\tPOLLOUT    = 0x2\n\tPOLLPRI    = 0x4\n\tPOLLRDBAND = 0x20\n\tPOLLRDNORM = 0x10\n\tPOLLWRBAND = 0x40\n\tPOLLWRNORM = 0x2\n)\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tSysid  uint32\n\tPid    int32\n\tVfs    int32\n\tStart  int64\n\tLen    int64\n}\n\ntype Fsid_t struct {\n\tVal [2]uint32\n}\ntype Fsid64_t struct {\n\tVal [2]uint64\n}\n\ntype Statfs_t struct {\n\tVersion   int32\n\tType      int32\n\tBsize     uint64\n\tBlocks    uint64\n\tBfree     uint64\n\tBavail    uint64\n\tFiles     uint64\n\tFfree     uint64\n\tFsid      Fsid64_t\n\tVfstype   int32\n\tFsize     uint64\n\tVfsnumber int32\n\tVfsoff    int32\n\tVfslen    int32\n\tVfsvers   int32\n\tFname     [32]uint8\n\tFpack     [32]uint8\n\tName_max  int32\n\t_         [4]byte\n}\n\nconst RNDGETENTCNT = 0x80045200\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go",
    "content": "// cgo -godefs types_darwin.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && darwin\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int32\n\t_    [4]byte\n}\n\ntype Timeval32 struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tDev     int32\n\tMode    uint16\n\tNlink   uint16\n\tIno     uint64\n\tUid     uint32\n\tGid     uint32\n\tRdev    int32\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint32\n\tLspare  int32\n\tQspare  [2]int64\n}\n\ntype Statfs_t struct {\n\tBsize       uint32\n\tIosize      int32\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      uint64\n\tFiles       uint64\n\tFfree       uint64\n\tFsid        Fsid\n\tOwner       uint32\n\tType        uint32\n\tFlags       uint32\n\tFssubtype   uint32\n\tFstypename  [16]byte\n\tMntonname   [1024]byte\n\tMntfromname [1024]byte\n\tFlags_ext   uint32\n\tReserved    [7]uint32\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Fstore_t struct {\n\tFlags      uint32\n\tPosmode    int32\n\tOffset     int64\n\tLength     int64\n\tBytesalloc int64\n}\n\ntype Radvisory_t struct {\n\tOffset int64\n\tCount  int32\n\t_      [4]byte\n}\n\ntype Fbootstraptransfer_t struct {\n\tOffset int64\n\tLength uint64\n\tBuffer *byte\n}\n\ntype Log2phys_t struct {\n\tFlags uint32\n\t_     [16]byte\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\ntype Dirent struct {\n\tIno     uint64\n\tSeekoff uint64\n\tReclen  uint16\n\tNamlen  uint16\n\tType    uint8\n\tName    [1024]int8\n\t_       [3]byte\n}\n\ntype Attrlist struct {\n\tBitmapcount uint16\n\tReserved    uint16\n\tCommonattr  uint32\n\tVolattr     uint32\n\tDirattr     uint32\n\tFileattr    uint32\n\tForkattr    uint32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [12]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype RawSockaddrCtl struct {\n\tSc_len      uint8\n\tSc_family   uint8\n\tSs_sysaddr  uint16\n\tSc_id       uint32\n\tSc_unit     uint32\n\tSc_reserved [5]uint32\n}\n\ntype RawSockaddrVM struct {\n\tLen       uint8\n\tFamily    uint8\n\tReserved1 uint16\n\tPort      uint32\n\tCid       uint32\n}\n\ntype XVSockPCB struct {\n\tXv_len           uint32\n\tXv_vsockpp       uint64\n\tXvp_local_cid    uint32\n\tXvp_local_port   uint32\n\tXvp_remote_cid   uint32\n\tXvp_remote_port  uint32\n\tXvp_rxcnt        uint32\n\tXvp_txcnt        uint32\n\tXvp_peer_rxhiwat uint32\n\tXvp_peer_rxcnt   uint32\n\tXvp_last_pid     int32\n\tXvp_gencnt       uint64\n\tXv_socket        XSocket\n\t_                [4]byte\n}\n\ntype XSocket struct {\n\tXso_len      uint32\n\tXso_so       uint32\n\tSo_type      int16\n\tSo_options   int16\n\tSo_linger    int16\n\tSo_state     int16\n\tSo_pcb       uint32\n\tXso_protocol int32\n\tXso_family   int32\n\tSo_qlen      int16\n\tSo_incqlen   int16\n\tSo_qlimit    int16\n\tSo_timeo     int16\n\tSo_error     uint16\n\tSo_pgid      int32\n\tSo_oobmark   uint32\n\tSo_rcv       XSockbuf\n\tSo_snd       XSockbuf\n\tSo_uid       uint32\n}\n\ntype XSocket64 struct {\n\tXso_len      uint32\n\t_            [8]byte\n\tSo_type      int16\n\tSo_options   int16\n\tSo_linger    int16\n\tSo_state     int16\n\t_            [8]byte\n\tXso_protocol int32\n\tXso_family   int32\n\tSo_qlen      int16\n\tSo_incqlen   int16\n\tSo_qlimit    int16\n\tSo_timeo     int16\n\tSo_error     uint16\n\tSo_pgid      int32\n\tSo_oobmark   uint32\n\tSo_rcv       XSockbuf\n\tSo_snd       XSockbuf\n\tSo_uid       uint32\n}\n\ntype XSockbuf struct {\n\tCc    uint32\n\tHiwat uint32\n\tMbcnt uint32\n\tMbmax uint32\n\tLowat int32\n\tFlags int16\n\tTimeo int16\n}\n\ntype XVSockPgen struct {\n\tLen   uint32\n\tCount uint64\n\tGen   uint64\n\tSogen uint64\n}\n\ntype _Socklen uint32\n\ntype SaeAssocID uint32\n\ntype SaeConnID uint32\n\ntype SaEndpoints struct {\n\tSrcif      uint32\n\tSrcaddr    *RawSockaddr\n\tSrcaddrlen uint32\n\tDstaddr    *RawSockaddr\n\tDstaddrlen uint32\n\t_          [4]byte\n}\n\ntype Xucred struct {\n\tVersion uint32\n\tUid     uint32\n\tNgroups int16\n\tGroups  [16]uint32\n}\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPMreqn struct {\n\tMultiaddr [4]byte /* in_addr */\n\tAddress   [4]byte /* in_addr */\n\tIfindex   int32\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet4Pktinfo struct {\n\tIfindex  uint32\n\tSpec_dst [4]byte /* in_addr */\n\tAddr     [4]byte /* in_addr */\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\ntype TCPConnectionInfo struct {\n\tState               uint8\n\tSnd_wscale          uint8\n\tRcv_wscale          uint8\n\t_                   uint8\n\tOptions             uint32\n\tFlags               uint32\n\tRto                 uint32\n\tMaxseg              uint32\n\tSnd_ssthresh        uint32\n\tSnd_cwnd            uint32\n\tSnd_wnd             uint32\n\tSnd_sbbytes         uint32\n\tRcv_wnd             uint32\n\tRttcur              uint32\n\tSrtt                uint32\n\tRttvar              uint32\n\tTxpackets           uint64\n\tTxbytes             uint64\n\tTxretransmitbytes   uint64\n\tRxpackets           uint64\n\tRxbytes             uint64\n\tRxoutoforderbytes   uint64\n\tTxretransmitpackets uint64\n}\n\nconst (\n\tSizeofSockaddrInet4     = 0x10\n\tSizeofSockaddrInet6     = 0x1c\n\tSizeofSockaddrAny       = 0x6c\n\tSizeofSockaddrUnix      = 0x6a\n\tSizeofSockaddrDatalink  = 0x14\n\tSizeofSockaddrCtl       = 0x20\n\tSizeofSockaddrVM        = 0xc\n\tSizeofXvsockpcb         = 0xa8\n\tSizeofXSocket           = 0x64\n\tSizeofXSockbuf          = 0x18\n\tSizeofXVSockPgen        = 0x20\n\tSizeofXucred            = 0x4c\n\tSizeofLinger            = 0x8\n\tSizeofIovec             = 0x10\n\tSizeofIPMreq            = 0x8\n\tSizeofIPMreqn           = 0xc\n\tSizeofIPv6Mreq          = 0x14\n\tSizeofMsghdr            = 0x30\n\tSizeofCmsghdr           = 0xc\n\tSizeofInet4Pktinfo      = 0xc\n\tSizeofInet6Pktinfo      = 0x14\n\tSizeofIPv6MTUInfo       = 0x20\n\tSizeofICMPv6Filter      = 0x20\n\tSizeofTCPConnectionInfo = 0x70\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint64\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n}\n\ntype FdSet struct {\n\tBits [32]int32\n}\n\nconst (\n\tSizeofIfMsghdr    = 0x70\n\tSizeofIfMsghdr2   = 0xa0\n\tSizeofIfData      = 0x60\n\tSizeofIfData64    = 0x80\n\tSizeofIfaMsghdr   = 0x14\n\tSizeofIfmaMsghdr  = 0x10\n\tSizeofIfmaMsghdr2 = 0x14\n\tSizeofRtMsghdr    = 0x5c\n\tSizeofRtMsghdr2   = 0x5c\n\tSizeofRtMetrics   = 0x38\n)\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\tData    IfData\n}\n\ntype IfMsghdr2 struct {\n\tMsglen     uint16\n\tVersion    uint8\n\tType       uint8\n\tAddrs      int32\n\tFlags      int32\n\tIndex      uint16\n\tSnd_len    int32\n\tSnd_maxlen int32\n\tSnd_drops  int32\n\tTimer      int32\n\tData       IfData64\n}\n\ntype IfData struct {\n\tType       uint8\n\tTypelen    uint8\n\tPhysical   uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tRecvquota  uint8\n\tXmitquota  uint8\n\tUnused1    uint8\n\tMtu        uint32\n\tMetric     uint32\n\tBaudrate   uint32\n\tIpackets   uint32\n\tIerrors    uint32\n\tOpackets   uint32\n\tOerrors    uint32\n\tCollisions uint32\n\tIbytes     uint32\n\tObytes     uint32\n\tImcasts    uint32\n\tOmcasts    uint32\n\tIqdrops    uint32\n\tNoproto    uint32\n\tRecvtiming uint32\n\tXmittiming uint32\n\tLastchange Timeval32\n\tUnused2    uint32\n\tHwassist   uint32\n\tReserved1  uint32\n\tReserved2  uint32\n}\n\ntype IfData64 struct {\n\tType       uint8\n\tTypelen    uint8\n\tPhysical   uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tRecvquota  uint8\n\tXmitquota  uint8\n\tUnused1    uint8\n\tMtu        uint32\n\tMetric     uint32\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tNoproto    uint64\n\tRecvtiming uint32\n\tXmittiming uint32\n\tLastchange Timeval32\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\tMetric  int32\n}\n\ntype IfmaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       [2]byte\n}\n\ntype IfmaMsghdr2 struct {\n\tMsglen   uint16\n\tVersion  uint8\n\tType     uint8\n\tAddrs    int32\n\tFlags    int32\n\tIndex    uint16\n\tRefcount int32\n}\n\ntype RtMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tFlags   int32\n\tAddrs   int32\n\tPid     int32\n\tSeq     int32\n\tErrno   int32\n\tUse     int32\n\tInits   uint32\n\tRmx     RtMetrics\n}\n\ntype RtMsghdr2 struct {\n\tMsglen      uint16\n\tVersion     uint8\n\tType        uint8\n\tIndex       uint16\n\tFlags       int32\n\tAddrs       int32\n\tRefcnt      int32\n\tParentflags int32\n\tReserved    int32\n\tUse         int32\n\tInits       uint32\n\tRmx         RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint32\n\tMtu      uint32\n\tHopcount uint32\n\tExpire   int32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPksent   uint32\n\tState    uint32\n\tFiller   [3]uint32\n}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x8\n\tSizeofBpfProgram = 0x10\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x14\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  Timeval32\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\t_       [2]byte\n}\n\ntype Termios struct {\n\tIflag  uint64\n\tOflag  uint64\n\tCflag  uint64\n\tLflag  uint64\n\tCc     [20]uint8\n\tIspeed uint64\n\tOspeed uint64\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x2\n\tAT_REMOVEDIR        = 0x80\n\tAT_SYMLINK_FOLLOW   = 0x40\n\tAT_SYMLINK_NOFOLLOW = 0x20\n\tAT_EACCESS          = 0x10\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofClockinfo = 0x14\n\ntype Clockinfo struct {\n\tHz      int32\n\tTick    int32\n\tTickadj int32\n\tStathz  int32\n\tProfhz  int32\n}\n\ntype CtlInfo struct {\n\tId   uint32\n\tName [96]byte\n}\n\nconst SizeofKinfoProc = 0x288\n\ntype Eproc struct {\n\tPaddr   uintptr\n\tSess    uintptr\n\tPcred   Pcred\n\tUcred   Ucred\n\tVm      Vmspace\n\tPpid    int32\n\tPgid    int32\n\tJobc    int16\n\tTdev    int32\n\tTpgid   int32\n\tTsess   uintptr\n\tWmesg   [8]byte\n\tXsize   int32\n\tXrssize int16\n\tXccount int16\n\tXswrss  int16\n\tFlag    int32\n\tLogin   [12]byte\n\tSpare   [4]int32\n\t_       [4]byte\n}\n\ntype ExternProc struct {\n\tP_starttime Timeval\n\tP_vmspace   *Vmspace\n\tP_sigacts   uintptr\n\tP_flag      int32\n\tP_stat      int8\n\tP_pid       int32\n\tP_oppid     int32\n\tP_dupfd     int32\n\tUser_stack  *int8\n\tExit_thread *byte\n\tP_debugger  int32\n\tSigwait     int32\n\tP_estcpu    uint32\n\tP_cpticks   int32\n\tP_pctcpu    uint32\n\tP_wchan     *byte\n\tP_wmesg     *int8\n\tP_swtime    uint32\n\tP_slptime   uint32\n\tP_realtimer Itimerval\n\tP_rtime     Timeval\n\tP_uticks    uint64\n\tP_sticks    uint64\n\tP_iticks    uint64\n\tP_traceflag int32\n\tP_tracep    uintptr\n\tP_siglist   int32\n\tP_textvp    uintptr\n\tP_holdcnt   int32\n\tP_sigmask   uint32\n\tP_sigignore uint32\n\tP_sigcatch  uint32\n\tP_priority  uint8\n\tP_usrpri    uint8\n\tP_nice      int8\n\tP_comm      [17]byte\n\tP_pgrp      uintptr\n\tP_addr      uintptr\n\tP_xstat     uint16\n\tP_acflag    uint16\n\tP_ru        *Rusage\n}\n\ntype Itimerval struct {\n\tInterval Timeval\n\tValue    Timeval\n}\n\ntype KinfoProc struct {\n\tProc  ExternProc\n\tEproc Eproc\n}\n\ntype Vmspace struct {\n\tDummy  int32\n\tDummy2 *int8\n\tDummy3 [5]int32\n\tDummy4 [3]*int8\n}\n\ntype Pcred struct {\n\tPc_lock  [72]int8\n\tPc_ucred uintptr\n\tP_ruid   uint32\n\tP_svuid  uint32\n\tP_rgid   uint32\n\tP_svgid  uint32\n\tP_refcnt int32\n\t_        [4]byte\n}\n\ntype Ucred struct {\n\tRef     int32\n\tUid     uint32\n\tNgroups int16\n\tGroups  [16]uint32\n}\n\ntype SysvIpcPerm struct {\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint16\n\t_    uint16\n\t_    int32\n}\ntype SysvShmDesc struct {\n\tPerm   SysvIpcPerm\n\tSegsz  uint64\n\tLpid   int32\n\tCpid   int32\n\tNattch uint16\n\t_      [34]byte\n}\n\nconst (\n\tIPC_CREAT   = 0x200\n\tIPC_EXCL    = 0x400\n\tIPC_NOWAIT  = 0x800\n\tIPC_PRIVATE = 0x0\n)\n\nconst (\n\tIPC_RMID = 0x0\n\tIPC_SET  = 0x1\n\tIPC_STAT = 0x2\n)\n\nconst (\n\tSHM_RDONLY = 0x1000\n\tSHM_RND    = 0x2000\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go",
    "content": "// cgo -godefs types_darwin.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && darwin\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int32\n\t_    [4]byte\n}\n\ntype Timeval32 struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tDev     int32\n\tMode    uint16\n\tNlink   uint16\n\tIno     uint64\n\tUid     uint32\n\tGid     uint32\n\tRdev    int32\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint32\n\tLspare  int32\n\tQspare  [2]int64\n}\n\ntype Statfs_t struct {\n\tBsize       uint32\n\tIosize      int32\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      uint64\n\tFiles       uint64\n\tFfree       uint64\n\tFsid        Fsid\n\tOwner       uint32\n\tType        uint32\n\tFlags       uint32\n\tFssubtype   uint32\n\tFstypename  [16]byte\n\tMntonname   [1024]byte\n\tMntfromname [1024]byte\n\tFlags_ext   uint32\n\tReserved    [7]uint32\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Fstore_t struct {\n\tFlags      uint32\n\tPosmode    int32\n\tOffset     int64\n\tLength     int64\n\tBytesalloc int64\n}\n\ntype Radvisory_t struct {\n\tOffset int64\n\tCount  int32\n\t_      [4]byte\n}\n\ntype Fbootstraptransfer_t struct {\n\tOffset int64\n\tLength uint64\n\tBuffer *byte\n}\n\ntype Log2phys_t struct {\n\tFlags uint32\n\t_     [16]byte\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\ntype Dirent struct {\n\tIno     uint64\n\tSeekoff uint64\n\tReclen  uint16\n\tNamlen  uint16\n\tType    uint8\n\tName    [1024]int8\n\t_       [3]byte\n}\n\ntype Attrlist struct {\n\tBitmapcount uint16\n\tReserved    uint16\n\tCommonattr  uint32\n\tVolattr     uint32\n\tDirattr     uint32\n\tFileattr    uint32\n\tForkattr    uint32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [12]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype RawSockaddrCtl struct {\n\tSc_len      uint8\n\tSc_family   uint8\n\tSs_sysaddr  uint16\n\tSc_id       uint32\n\tSc_unit     uint32\n\tSc_reserved [5]uint32\n}\n\ntype RawSockaddrVM struct {\n\tLen       uint8\n\tFamily    uint8\n\tReserved1 uint16\n\tPort      uint32\n\tCid       uint32\n}\n\ntype XVSockPCB struct {\n\tXv_len           uint32\n\tXv_vsockpp       uint64\n\tXvp_local_cid    uint32\n\tXvp_local_port   uint32\n\tXvp_remote_cid   uint32\n\tXvp_remote_port  uint32\n\tXvp_rxcnt        uint32\n\tXvp_txcnt        uint32\n\tXvp_peer_rxhiwat uint32\n\tXvp_peer_rxcnt   uint32\n\tXvp_last_pid     int32\n\tXvp_gencnt       uint64\n\tXv_socket        XSocket\n\t_                [4]byte\n}\n\ntype XSocket struct {\n\tXso_len      uint32\n\tXso_so       uint32\n\tSo_type      int16\n\tSo_options   int16\n\tSo_linger    int16\n\tSo_state     int16\n\tSo_pcb       uint32\n\tXso_protocol int32\n\tXso_family   int32\n\tSo_qlen      int16\n\tSo_incqlen   int16\n\tSo_qlimit    int16\n\tSo_timeo     int16\n\tSo_error     uint16\n\tSo_pgid      int32\n\tSo_oobmark   uint32\n\tSo_rcv       XSockbuf\n\tSo_snd       XSockbuf\n\tSo_uid       uint32\n}\n\ntype XSocket64 struct {\n\tXso_len      uint32\n\t_            [8]byte\n\tSo_type      int16\n\tSo_options   int16\n\tSo_linger    int16\n\tSo_state     int16\n\t_            [8]byte\n\tXso_protocol int32\n\tXso_family   int32\n\tSo_qlen      int16\n\tSo_incqlen   int16\n\tSo_qlimit    int16\n\tSo_timeo     int16\n\tSo_error     uint16\n\tSo_pgid      int32\n\tSo_oobmark   uint32\n\tSo_rcv       XSockbuf\n\tSo_snd       XSockbuf\n\tSo_uid       uint32\n}\n\ntype XSockbuf struct {\n\tCc    uint32\n\tHiwat uint32\n\tMbcnt uint32\n\tMbmax uint32\n\tLowat int32\n\tFlags int16\n\tTimeo int16\n}\n\ntype XVSockPgen struct {\n\tLen   uint32\n\tCount uint64\n\tGen   uint64\n\tSogen uint64\n}\n\ntype _Socklen uint32\n\ntype SaeAssocID uint32\n\ntype SaeConnID uint32\n\ntype SaEndpoints struct {\n\tSrcif      uint32\n\tSrcaddr    *RawSockaddr\n\tSrcaddrlen uint32\n\tDstaddr    *RawSockaddr\n\tDstaddrlen uint32\n\t_          [4]byte\n}\n\ntype Xucred struct {\n\tVersion uint32\n\tUid     uint32\n\tNgroups int16\n\tGroups  [16]uint32\n}\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPMreqn struct {\n\tMultiaddr [4]byte /* in_addr */\n\tAddress   [4]byte /* in_addr */\n\tIfindex   int32\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet4Pktinfo struct {\n\tIfindex  uint32\n\tSpec_dst [4]byte /* in_addr */\n\tAddr     [4]byte /* in_addr */\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\ntype TCPConnectionInfo struct {\n\tState               uint8\n\tSnd_wscale          uint8\n\tRcv_wscale          uint8\n\t_                   uint8\n\tOptions             uint32\n\tFlags               uint32\n\tRto                 uint32\n\tMaxseg              uint32\n\tSnd_ssthresh        uint32\n\tSnd_cwnd            uint32\n\tSnd_wnd             uint32\n\tSnd_sbbytes         uint32\n\tRcv_wnd             uint32\n\tRttcur              uint32\n\tSrtt                uint32\n\tRttvar              uint32\n\tTxpackets           uint64\n\tTxbytes             uint64\n\tTxretransmitbytes   uint64\n\tRxpackets           uint64\n\tRxbytes             uint64\n\tRxoutoforderbytes   uint64\n\tTxretransmitpackets uint64\n}\n\nconst (\n\tSizeofSockaddrInet4     = 0x10\n\tSizeofSockaddrInet6     = 0x1c\n\tSizeofSockaddrAny       = 0x6c\n\tSizeofSockaddrUnix      = 0x6a\n\tSizeofSockaddrDatalink  = 0x14\n\tSizeofSockaddrCtl       = 0x20\n\tSizeofSockaddrVM        = 0xc\n\tSizeofXvsockpcb         = 0xa8\n\tSizeofXSocket           = 0x64\n\tSizeofXSockbuf          = 0x18\n\tSizeofXVSockPgen        = 0x20\n\tSizeofXucred            = 0x4c\n\tSizeofLinger            = 0x8\n\tSizeofIovec             = 0x10\n\tSizeofIPMreq            = 0x8\n\tSizeofIPMreqn           = 0xc\n\tSizeofIPv6Mreq          = 0x14\n\tSizeofMsghdr            = 0x30\n\tSizeofCmsghdr           = 0xc\n\tSizeofInet4Pktinfo      = 0xc\n\tSizeofInet6Pktinfo      = 0x14\n\tSizeofIPv6MTUInfo       = 0x20\n\tSizeofICMPv6Filter      = 0x20\n\tSizeofTCPConnectionInfo = 0x70\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint64\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n}\n\ntype FdSet struct {\n\tBits [32]int32\n}\n\nconst (\n\tSizeofIfMsghdr    = 0x70\n\tSizeofIfMsghdr2   = 0xa0\n\tSizeofIfData      = 0x60\n\tSizeofIfData64    = 0x80\n\tSizeofIfaMsghdr   = 0x14\n\tSizeofIfmaMsghdr  = 0x10\n\tSizeofIfmaMsghdr2 = 0x14\n\tSizeofRtMsghdr    = 0x5c\n\tSizeofRtMsghdr2   = 0x5c\n\tSizeofRtMetrics   = 0x38\n)\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\tData    IfData\n}\n\ntype IfMsghdr2 struct {\n\tMsglen     uint16\n\tVersion    uint8\n\tType       uint8\n\tAddrs      int32\n\tFlags      int32\n\tIndex      uint16\n\tSnd_len    int32\n\tSnd_maxlen int32\n\tSnd_drops  int32\n\tTimer      int32\n\tData       IfData64\n}\n\ntype IfData struct {\n\tType       uint8\n\tTypelen    uint8\n\tPhysical   uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tRecvquota  uint8\n\tXmitquota  uint8\n\tUnused1    uint8\n\tMtu        uint32\n\tMetric     uint32\n\tBaudrate   uint32\n\tIpackets   uint32\n\tIerrors    uint32\n\tOpackets   uint32\n\tOerrors    uint32\n\tCollisions uint32\n\tIbytes     uint32\n\tObytes     uint32\n\tImcasts    uint32\n\tOmcasts    uint32\n\tIqdrops    uint32\n\tNoproto    uint32\n\tRecvtiming uint32\n\tXmittiming uint32\n\tLastchange Timeval32\n\tUnused2    uint32\n\tHwassist   uint32\n\tReserved1  uint32\n\tReserved2  uint32\n}\n\ntype IfData64 struct {\n\tType       uint8\n\tTypelen    uint8\n\tPhysical   uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tRecvquota  uint8\n\tXmitquota  uint8\n\tUnused1    uint8\n\tMtu        uint32\n\tMetric     uint32\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tNoproto    uint64\n\tRecvtiming uint32\n\tXmittiming uint32\n\tLastchange Timeval32\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\tMetric  int32\n}\n\ntype IfmaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       [2]byte\n}\n\ntype IfmaMsghdr2 struct {\n\tMsglen   uint16\n\tVersion  uint8\n\tType     uint8\n\tAddrs    int32\n\tFlags    int32\n\tIndex    uint16\n\tRefcount int32\n}\n\ntype RtMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tFlags   int32\n\tAddrs   int32\n\tPid     int32\n\tSeq     int32\n\tErrno   int32\n\tUse     int32\n\tInits   uint32\n\tRmx     RtMetrics\n}\n\ntype RtMsghdr2 struct {\n\tMsglen      uint16\n\tVersion     uint8\n\tType        uint8\n\tIndex       uint16\n\tFlags       int32\n\tAddrs       int32\n\tRefcnt      int32\n\tParentflags int32\n\tReserved    int32\n\tUse         int32\n\tInits       uint32\n\tRmx         RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint32\n\tMtu      uint32\n\tHopcount uint32\n\tExpire   int32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPksent   uint32\n\tState    uint32\n\tFiller   [3]uint32\n}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x8\n\tSizeofBpfProgram = 0x10\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x14\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  Timeval32\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\t_       [2]byte\n}\n\ntype Termios struct {\n\tIflag  uint64\n\tOflag  uint64\n\tCflag  uint64\n\tLflag  uint64\n\tCc     [20]uint8\n\tIspeed uint64\n\tOspeed uint64\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x2\n\tAT_REMOVEDIR        = 0x80\n\tAT_SYMLINK_FOLLOW   = 0x40\n\tAT_SYMLINK_NOFOLLOW = 0x20\n\tAT_EACCESS          = 0x10\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofClockinfo = 0x14\n\ntype Clockinfo struct {\n\tHz      int32\n\tTick    int32\n\tTickadj int32\n\tStathz  int32\n\tProfhz  int32\n}\n\ntype CtlInfo struct {\n\tId   uint32\n\tName [96]byte\n}\n\nconst SizeofKinfoProc = 0x288\n\ntype Eproc struct {\n\tPaddr   uintptr\n\tSess    uintptr\n\tPcred   Pcred\n\tUcred   Ucred\n\tVm      Vmspace\n\tPpid    int32\n\tPgid    int32\n\tJobc    int16\n\tTdev    int32\n\tTpgid   int32\n\tTsess   uintptr\n\tWmesg   [8]byte\n\tXsize   int32\n\tXrssize int16\n\tXccount int16\n\tXswrss  int16\n\tFlag    int32\n\tLogin   [12]byte\n\tSpare   [4]int32\n\t_       [4]byte\n}\n\ntype ExternProc struct {\n\tP_starttime Timeval\n\tP_vmspace   *Vmspace\n\tP_sigacts   uintptr\n\tP_flag      int32\n\tP_stat      int8\n\tP_pid       int32\n\tP_oppid     int32\n\tP_dupfd     int32\n\tUser_stack  *int8\n\tExit_thread *byte\n\tP_debugger  int32\n\tSigwait     int32\n\tP_estcpu    uint32\n\tP_cpticks   int32\n\tP_pctcpu    uint32\n\tP_wchan     *byte\n\tP_wmesg     *int8\n\tP_swtime    uint32\n\tP_slptime   uint32\n\tP_realtimer Itimerval\n\tP_rtime     Timeval\n\tP_uticks    uint64\n\tP_sticks    uint64\n\tP_iticks    uint64\n\tP_traceflag int32\n\tP_tracep    uintptr\n\tP_siglist   int32\n\tP_textvp    uintptr\n\tP_holdcnt   int32\n\tP_sigmask   uint32\n\tP_sigignore uint32\n\tP_sigcatch  uint32\n\tP_priority  uint8\n\tP_usrpri    uint8\n\tP_nice      int8\n\tP_comm      [17]byte\n\tP_pgrp      uintptr\n\tP_addr      uintptr\n\tP_xstat     uint16\n\tP_acflag    uint16\n\tP_ru        *Rusage\n}\n\ntype Itimerval struct {\n\tInterval Timeval\n\tValue    Timeval\n}\n\ntype KinfoProc struct {\n\tProc  ExternProc\n\tEproc Eproc\n}\n\ntype Vmspace struct {\n\tDummy  int32\n\tDummy2 *int8\n\tDummy3 [5]int32\n\tDummy4 [3]*int8\n}\n\ntype Pcred struct {\n\tPc_lock  [72]int8\n\tPc_ucred uintptr\n\tP_ruid   uint32\n\tP_svuid  uint32\n\tP_rgid   uint32\n\tP_svgid  uint32\n\tP_refcnt int32\n\t_        [4]byte\n}\n\ntype Ucred struct {\n\tRef     int32\n\tUid     uint32\n\tNgroups int16\n\tGroups  [16]uint32\n}\n\ntype SysvIpcPerm struct {\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint16\n\t_    uint16\n\t_    int32\n}\ntype SysvShmDesc struct {\n\tPerm   SysvIpcPerm\n\tSegsz  uint64\n\tLpid   int32\n\tCpid   int32\n\tNattch uint16\n\t_      [34]byte\n}\n\nconst (\n\tIPC_CREAT   = 0x200\n\tIPC_EXCL    = 0x400\n\tIPC_NOWAIT  = 0x800\n\tIPC_PRIVATE = 0x0\n)\n\nconst (\n\tIPC_RMID = 0x0\n\tIPC_SET  = 0x1\n\tIPC_STAT = 0x2\n)\n\nconst (\n\tSHM_RDONLY = 0x1000\n\tSHM_RND    = 0x2000\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go",
    "content": "// cgo -godefs types_dragonfly.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && dragonfly\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur int64\n\tMax int64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tIno     uint64\n\tNlink   uint32\n\tDev     uint32\n\tMode    uint16\n\t_1      uint16\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint32\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\t_       uint32\n\tFlags   uint32\n\tGen     uint32\n\tLspare  int32\n\tBlksize int64\n\tQspare2 int64\n}\n\ntype Statfs_t struct {\n\tSpare2      int64\n\tBsize       int64\n\tIosize      int64\n\tBlocks      int64\n\tBfree       int64\n\tBavail      int64\n\tFiles       int64\n\tFfree       int64\n\tFsid        Fsid\n\tOwner       uint32\n\tType        int32\n\tFlags       int32\n\tSyncwrites  int64\n\tAsyncwrites int64\n\tFstypename  [16]byte\n\tMntonname   [80]byte\n\tSyncreads   int64\n\tAsyncreads  int64\n\tSpares1     int16\n\tMntfromname [80]byte\n\tSpares2     int16\n\tSpare       [2]int64\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno  uint64\n\tNamlen  uint16\n\tType    uint8\n\tUnused1 uint8\n\tUnused2 uint32\n\tName    [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [12]int8\n\tRcf    uint16\n\tRoute  [16]uint16\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x36\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint64\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n}\n\ntype FdSet struct {\n\tBits [16]uint64\n}\n\nconst (\n\tSizeofIfMsghdr         = 0xb0\n\tSizeofIfData           = 0xa0\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfmaMsghdr       = 0x10\n\tSizeofIfAnnounceMsghdr = 0x18\n\tSizeofRtMsghdr         = 0x98\n\tSizeofRtMetrics        = 0x70\n)\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tFlags   int32\n\tAddrs   int32\n\tData    IfData\n}\n\ntype IfData struct {\n\tType       uint8\n\tPhysical   uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tRecvquota  uint8\n\tXmitquota  uint8\n\tMtu        uint64\n\tMetric     uint64\n\tLink_state uint64\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tNoproto    uint64\n\tHwassist   uint64\n\tOqdrops    uint64\n\tLastchange Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tIndex     uint16\n\tFlags     int32\n\tAddrs     int32\n\tAddrflags int32\n\tMetric    int32\n}\n\ntype IfmaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tFlags   int32\n\tAddrs   int32\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tName    [16]int8\n\tWhat    uint16\n}\n\ntype RtMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tFlags   int32\n\tAddrs   int32\n\tPid     int32\n\tSeq     int32\n\tErrno   int32\n\tUse     int32\n\tInits   uint64\n\tRmx     RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks     uint64\n\tMtu       uint64\n\tPksent    uint64\n\tExpire    uint64\n\tSendpipe  uint64\n\tSsthresh  uint64\n\tRtt       uint64\n\tRttvar    uint64\n\tRecvpipe  uint64\n\tHopcount  uint64\n\tMssopt    uint16\n\tPad       uint16\n\tMsl       uint64\n\tIwmaxsegs uint64\n\tIwcapsegs uint64\n}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x8\n\tSizeofBpfProgram = 0x10\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x20\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  Timeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\t_       [6]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = 0xfffafdcd\n\tAT_SYMLINK_NOFOLLOW = 0x1\n\tAT_REMOVEDIR        = 0x2\n\tAT_EACCESS          = 0x4\n\tAT_SYMLINK_FOLLOW   = 0x8\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Utsname struct {\n\tSysname  [32]byte\n\tNodename [32]byte\n\tRelease  [32]byte\n\tVersion  [32]byte\n\tMachine  [32]byte\n}\n\nconst SizeofClockinfo = 0x14\n\ntype Clockinfo struct {\n\tHz      int32\n\tTick    int32\n\tTickadj int32\n\tStathz  int32\n\tProfhz  int32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go",
    "content": "// cgo -godefs types_freebsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build 386 && freebsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x4\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x4\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int32\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int32\n\tNsec int32\n}\n\ntype Timeval struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Time_t int32\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Rlimit struct {\n\tCur int64\n\tMax int64\n}\n\ntype _Gid_t uint32\n\nconst (\n\t_statfsVersion = 0x20140518\n\t_dirblksiz     = 0x400\n)\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tNlink   uint64\n\tMode    uint16\n\t_0      int16\n\tUid     uint32\n\tGid     uint32\n\t_1      int32\n\tRdev    uint64\n\t_       int32\n\tAtim    Timespec\n\t_       int32\n\tMtim    Timespec\n\t_       int32\n\tCtim    Timespec\n\t_       int32\n\tBtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint64\n\tSpare   [10]uint64\n}\n\ntype Statfs_t struct {\n\tVersion     uint32\n\tType        uint32\n\tFlags       uint64\n\tBsize       uint64\n\tIosize      uint64\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      int64\n\tFiles       uint64\n\tFfree       int64\n\tSyncwrites  uint64\n\tAsyncwrites uint64\n\tSyncreads   uint64\n\tAsyncreads  uint64\n\tSpare       [10]uint64\n\tNamemax     uint32\n\tOwner       uint32\n\tFsid        Fsid\n\tCharspare   [80]int8\n\tFstypename  [16]byte\n\tMntfromname [1024]byte\n\tMntonname   [1024]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n\tSysid  int32\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tPad0   uint8\n\tNamlen uint16\n\tPad1   uint16\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [46]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Xucred struct {\n\tVersion uint32\n\tUid     uint32\n\tNgroups int16\n\tGroups  [16]uint32\n\t_       *byte\n}\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPMreqn struct {\n\tMultiaddr [4]byte /* in_addr */\n\tAddress   [4]byte /* in_addr */\n\tIfindex   int32\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x36\n\tSizeofXucred           = 0x50\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x8\n\tSizeofIPMreq           = 0x8\n\tSizeofIPMreqn          = 0xc\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x1c\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype PtraceLwpInfoStruct struct {\n\tLwpid        int32\n\tEvent        int32\n\tFlags        int32\n\tSigmask      Sigset_t\n\tSiglist      Sigset_t\n\tSiginfo      __PtraceSiginfo\n\tTdname       [20]int8\n\tChild_pid    int32\n\tSyscall_code uint32\n\tSyscall_narg uint32\n}\n\ntype __Siginfo struct {\n\tSigno  int32\n\tErrno  int32\n\tCode   int32\n\tPid    int32\n\tUid    uint32\n\tStatus int32\n\tAddr   *byte\n\tValue  [4]byte\n\t_      [32]byte\n}\ntype __PtraceSiginfo struct {\n\tSigno  int32\n\tErrno  int32\n\tCode   int32\n\tPid    int32\n\tUid    uint32\n\tStatus int32\n\tAddr   uintptr\n\tValue  [4]byte\n\t_      [32]byte\n}\n\ntype Sigset_t struct {\n\tVal [4]uint32\n}\n\ntype Reg struct {\n\tFs     uint32\n\tEs     uint32\n\tDs     uint32\n\tEdi    uint32\n\tEsi    uint32\n\tEbp    uint32\n\tIsp    uint32\n\tEbx    uint32\n\tEdx    uint32\n\tEcx    uint32\n\tEax    uint32\n\tTrapno uint32\n\tErr    uint32\n\tEip    uint32\n\tCs     uint32\n\tEflags uint32\n\tEsp    uint32\n\tSs     uint32\n\tGs     uint32\n}\n\ntype FpReg struct {\n\tEnv   [7]uint32\n\tAcc   [8][10]uint8\n\tEx_sw uint32\n\tPad   [64]uint8\n}\n\ntype FpExtendedPrecision struct{}\n\ntype PtraceIoDesc struct {\n\tOp   int32\n\tOffs uintptr\n\tAddr *byte\n\tLen  uint32\n}\n\ntype Kevent_t struct {\n\tIdent  uint32\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n\tExt    [4]uint64\n}\n\ntype FdSet struct {\n\tBits [32]uint32\n}\n\nconst (\n\tsizeofIfMsghdr         = 0xa8\n\tSizeofIfMsghdr         = 0x60\n\tsizeofIfData           = 0x98\n\tSizeofIfData           = 0x50\n\tSizeofIfaMsghdr        = 0x14\n\tSizeofIfmaMsghdr       = 0x10\n\tSizeofIfAnnounceMsghdr = 0x18\n\tSizeofRtMsghdr         = 0x5c\n\tSizeofRtMetrics        = 0x38\n)\n\ntype ifMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n\tData    ifData\n}\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\tData    IfData\n}\n\ntype ifData struct {\n\tType       uint8\n\tPhysical   uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tLink_state uint8\n\tVhid       uint8\n\tDatalen    uint16\n\tMtu        uint32\n\tMetric     uint32\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tOqdrops    uint64\n\tNoproto    uint64\n\tHwassist   uint64\n\t_          [8]byte\n\t_          [16]byte\n}\n\ntype IfData struct {\n\tType        uint8\n\tPhysical    uint8\n\tAddrlen     uint8\n\tHdrlen      uint8\n\tLink_state  uint8\n\tSpare_char1 uint8\n\tSpare_char2 uint8\n\tDatalen     uint8\n\tMtu         uint32\n\tMetric      uint32\n\tBaudrate    uint32\n\tIpackets    uint32\n\tIerrors     uint32\n\tOpackets    uint32\n\tOerrors     uint32\n\tCollisions  uint32\n\tIbytes      uint32\n\tObytes      uint32\n\tImcasts     uint32\n\tOmcasts     uint32\n\tIqdrops     uint32\n\tNoproto     uint32\n\tHwassist    uint32\n\tEpoch       int32\n\tLastchange  Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n\tMetric  int32\n}\n\ntype IfmaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tName    [16]int8\n\tWhat    uint16\n}\n\ntype RtMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\t_       uint16\n\tFlags   int32\n\tAddrs   int32\n\tPid     int32\n\tSeq     int32\n\tErrno   int32\n\tFmask   int32\n\tInits   uint32\n\tRmx     RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint32\n\tMtu      uint32\n\tHopcount uint32\n\tExpire   uint32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPksent   uint32\n\tWeight   uint32\n\tFiller   [3]uint32\n}\n\nconst (\n\tSizeofBpfVersion    = 0x4\n\tSizeofBpfStat       = 0x8\n\tSizeofBpfZbuf       = 0xc\n\tSizeofBpfProgram    = 0x8\n\tSizeofBpfInsn       = 0x8\n\tSizeofBpfHdr        = 0x14\n\tSizeofBpfZbufHeader = 0x20\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfZbuf struct {\n\tBufa   *byte\n\tBufb   *byte\n\tBuflen uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  Timeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\t_       [2]byte\n}\n\ntype BpfZbufHeader struct {\n\tKernel_gen uint32\n\tKernel_len uint32\n\tUser_gen   uint32\n\t_          [5]uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x100\n\tAT_SYMLINK_NOFOLLOW = 0x200\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_REMOVEDIR        = 0x800\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR      = 0x8\n\tPOLLHUP      = 0x10\n\tPOLLIN       = 0x1\n\tPOLLINIGNEOF = 0x2000\n\tPOLLNVAL     = 0x20\n\tPOLLOUT      = 0x4\n\tPOLLPRI      = 0x2\n\tPOLLRDBAND   = 0x80\n\tPOLLRDNORM   = 0x40\n\tPOLLWRBAND   = 0x100\n\tPOLLWRNORM   = 0x4\n\tPOLLRDHUP    = 0x4000\n)\n\ntype CapRights struct {\n\tRights [2]uint64\n}\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofClockinfo = 0x14\n\ntype Clockinfo struct {\n\tHz     int32\n\tTick   int32\n\tSpare  int32\n\tStathz int32\n\tProfhz int32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go",
    "content": "// cgo -godefs types_freebsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && freebsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Time_t int64\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur int64\n\tMax int64\n}\n\ntype _Gid_t uint32\n\nconst (\n\t_statfsVersion = 0x20140518\n\t_dirblksiz     = 0x400\n)\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tNlink   uint64\n\tMode    uint16\n\t_0      int16\n\tUid     uint32\n\tGid     uint32\n\t_1      int32\n\tRdev    uint64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint64\n\tSpare   [10]uint64\n}\n\ntype Statfs_t struct {\n\tVersion     uint32\n\tType        uint32\n\tFlags       uint64\n\tBsize       uint64\n\tIosize      uint64\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      int64\n\tFiles       uint64\n\tFfree       int64\n\tSyncwrites  uint64\n\tAsyncwrites uint64\n\tSyncreads   uint64\n\tAsyncreads  uint64\n\tSpare       [10]uint64\n\tNamemax     uint32\n\tOwner       uint32\n\tFsid        Fsid\n\tCharspare   [80]int8\n\tFstypename  [16]byte\n\tMntfromname [1024]byte\n\tMntonname   [1024]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n\tSysid  int32\n\t_      [4]byte\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tPad0   uint8\n\tNamlen uint16\n\tPad1   uint16\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [46]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Xucred struct {\n\tVersion uint32\n\tUid     uint32\n\tNgroups int16\n\tGroups  [16]uint32\n\t_       *byte\n}\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPMreqn struct {\n\tMultiaddr [4]byte /* in_addr */\n\tAddress   [4]byte /* in_addr */\n\tIfindex   int32\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x36\n\tSizeofXucred           = 0x58\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPMreqn          = 0xc\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype PtraceLwpInfoStruct struct {\n\tLwpid        int32\n\tEvent        int32\n\tFlags        int32\n\tSigmask      Sigset_t\n\tSiglist      Sigset_t\n\tSiginfo      __PtraceSiginfo\n\tTdname       [20]int8\n\tChild_pid    int32\n\tSyscall_code uint32\n\tSyscall_narg uint32\n}\n\ntype __Siginfo struct {\n\tSigno  int32\n\tErrno  int32\n\tCode   int32\n\tPid    int32\n\tUid    uint32\n\tStatus int32\n\tAddr   *byte\n\tValue  [8]byte\n\t_      [40]byte\n}\n\ntype __PtraceSiginfo struct {\n\tSigno  int32\n\tErrno  int32\n\tCode   int32\n\tPid    int32\n\tUid    uint32\n\tStatus int32\n\tAddr   uintptr\n\tValue  [8]byte\n\t_      [40]byte\n}\n\ntype Sigset_t struct {\n\tVal [4]uint32\n}\n\ntype Reg struct {\n\tR15    int64\n\tR14    int64\n\tR13    int64\n\tR12    int64\n\tR11    int64\n\tR10    int64\n\tR9     int64\n\tR8     int64\n\tRdi    int64\n\tRsi    int64\n\tRbp    int64\n\tRbx    int64\n\tRdx    int64\n\tRcx    int64\n\tRax    int64\n\tTrapno uint32\n\tFs     uint16\n\tGs     uint16\n\tErr    uint32\n\tEs     uint16\n\tDs     uint16\n\tRip    int64\n\tCs     int64\n\tRflags int64\n\tRsp    int64\n\tSs     int64\n}\n\ntype FpReg struct {\n\tEnv   [4]uint64\n\tAcc   [8][16]uint8\n\tXacc  [16][16]uint8\n\tSpare [12]uint64\n}\n\ntype FpExtendedPrecision struct{}\n\ntype PtraceIoDesc struct {\n\tOp   int32\n\tOffs uintptr\n\tAddr *byte\n\tLen  uint64\n}\n\ntype Kevent_t struct {\n\tIdent  uint64\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n\tExt    [4]uint64\n}\n\ntype FdSet struct {\n\tBits [16]uint64\n}\n\nconst (\n\tsizeofIfMsghdr         = 0xa8\n\tSizeofIfMsghdr         = 0xa8\n\tsizeofIfData           = 0x98\n\tSizeofIfData           = 0x98\n\tSizeofIfaMsghdr        = 0x14\n\tSizeofIfmaMsghdr       = 0x10\n\tSizeofIfAnnounceMsghdr = 0x18\n\tSizeofRtMsghdr         = 0x98\n\tSizeofRtMetrics        = 0x70\n)\n\ntype ifMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n\tData    ifData\n}\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\tData    IfData\n}\n\ntype ifData struct {\n\tType       uint8\n\tPhysical   uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tLink_state uint8\n\tVhid       uint8\n\tDatalen    uint16\n\tMtu        uint32\n\tMetric     uint32\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tOqdrops    uint64\n\tNoproto    uint64\n\tHwassist   uint64\n\t_          [8]byte\n\t_          [16]byte\n}\n\ntype IfData struct {\n\tType        uint8\n\tPhysical    uint8\n\tAddrlen     uint8\n\tHdrlen      uint8\n\tLink_state  uint8\n\tSpare_char1 uint8\n\tSpare_char2 uint8\n\tDatalen     uint8\n\tMtu         uint64\n\tMetric      uint64\n\tBaudrate    uint64\n\tIpackets    uint64\n\tIerrors     uint64\n\tOpackets    uint64\n\tOerrors     uint64\n\tCollisions  uint64\n\tIbytes      uint64\n\tObytes      uint64\n\tImcasts     uint64\n\tOmcasts     uint64\n\tIqdrops     uint64\n\tNoproto     uint64\n\tHwassist    uint64\n\tEpoch       int64\n\tLastchange  Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n\tMetric  int32\n}\n\ntype IfmaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tName    [16]int8\n\tWhat    uint16\n}\n\ntype RtMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\t_       uint16\n\tFlags   int32\n\tAddrs   int32\n\tPid     int32\n\tSeq     int32\n\tErrno   int32\n\tFmask   int32\n\tInits   uint64\n\tRmx     RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint64\n\tMtu      uint64\n\tHopcount uint64\n\tExpire   uint64\n\tRecvpipe uint64\n\tSendpipe uint64\n\tSsthresh uint64\n\tRtt      uint64\n\tRttvar   uint64\n\tPksent   uint64\n\tWeight   uint64\n\tFiller   [3]uint64\n}\n\nconst (\n\tSizeofBpfVersion    = 0x4\n\tSizeofBpfStat       = 0x8\n\tSizeofBpfZbuf       = 0x18\n\tSizeofBpfProgram    = 0x10\n\tSizeofBpfInsn       = 0x8\n\tSizeofBpfHdr        = 0x20\n\tSizeofBpfZbufHeader = 0x20\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfZbuf struct {\n\tBufa   *byte\n\tBufb   *byte\n\tBuflen uint64\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  Timeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\t_       [6]byte\n}\n\ntype BpfZbufHeader struct {\n\tKernel_gen uint32\n\tKernel_len uint32\n\tUser_gen   uint32\n\t_          [5]uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x100\n\tAT_SYMLINK_NOFOLLOW = 0x200\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_REMOVEDIR        = 0x800\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR      = 0x8\n\tPOLLHUP      = 0x10\n\tPOLLIN       = 0x1\n\tPOLLINIGNEOF = 0x2000\n\tPOLLNVAL     = 0x20\n\tPOLLOUT      = 0x4\n\tPOLLPRI      = 0x2\n\tPOLLRDBAND   = 0x80\n\tPOLLRDNORM   = 0x40\n\tPOLLWRBAND   = 0x100\n\tPOLLWRNORM   = 0x4\n\tPOLLRDHUP    = 0x4000\n)\n\ntype CapRights struct {\n\tRights [2]uint64\n}\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofClockinfo = 0x14\n\ntype Clockinfo struct {\n\tHz     int32\n\tTick   int32\n\tSpare  int32\n\tStathz int32\n\tProfhz int32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go",
    "content": "// cgo -godefs -- -fsigned-char types_freebsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm && freebsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x4\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x4\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int32\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int32\n\t_    [4]byte\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int32\n\t_    [4]byte\n}\n\ntype Time_t int64\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Rlimit struct {\n\tCur int64\n\tMax int64\n}\n\ntype _Gid_t uint32\n\nconst (\n\t_statfsVersion = 0x20140518\n\t_dirblksiz     = 0x400\n)\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tNlink   uint64\n\tMode    uint16\n\t_0      int16\n\tUid     uint32\n\tGid     uint32\n\t_1      int32\n\tRdev    uint64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint64\n\tSpare   [10]uint64\n}\n\ntype Statfs_t struct {\n\tVersion     uint32\n\tType        uint32\n\tFlags       uint64\n\tBsize       uint64\n\tIosize      uint64\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      int64\n\tFiles       uint64\n\tFfree       int64\n\tSyncwrites  uint64\n\tAsyncwrites uint64\n\tSyncreads   uint64\n\tAsyncreads  uint64\n\tSpare       [10]uint64\n\tNamemax     uint32\n\tOwner       uint32\n\tFsid        Fsid\n\tCharspare   [80]int8\n\tFstypename  [16]byte\n\tMntfromname [1024]byte\n\tMntonname   [1024]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n\tSysid  int32\n\t_      [4]byte\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tPad0   uint8\n\tNamlen uint16\n\tPad1   uint16\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [46]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Xucred struct {\n\tVersion uint32\n\tUid     uint32\n\tNgroups int16\n\tGroups  [16]uint32\n\t_       *byte\n}\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPMreqn struct {\n\tMultiaddr [4]byte /* in_addr */\n\tAddress   [4]byte /* in_addr */\n\tIfindex   int32\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x36\n\tSizeofXucred           = 0x50\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x8\n\tSizeofIPMreq           = 0x8\n\tSizeofIPMreqn          = 0xc\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x1c\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype PtraceLwpInfoStruct struct {\n\tLwpid        int32\n\tEvent        int32\n\tFlags        int32\n\tSigmask      Sigset_t\n\tSiglist      Sigset_t\n\tSiginfo      __PtraceSiginfo\n\tTdname       [20]int8\n\tChild_pid    int32\n\tSyscall_code uint32\n\tSyscall_narg uint32\n}\n\ntype __Siginfo struct {\n\tSigno  int32\n\tErrno  int32\n\tCode   int32\n\tPid    int32\n\tUid    uint32\n\tStatus int32\n\tAddr   *byte\n\tValue  [4]byte\n\t_      [32]byte\n}\n\ntype __PtraceSiginfo struct {\n\tSigno  int32\n\tErrno  int32\n\tCode   int32\n\tPid    int32\n\tUid    uint32\n\tStatus int32\n\tAddr   uintptr\n\tValue  [4]byte\n\t_      [32]byte\n}\n\ntype Sigset_t struct {\n\tVal [4]uint32\n}\n\ntype Reg struct {\n\tR    [13]uint32\n\tSp   uint32\n\tLr   uint32\n\tPc   uint32\n\tCpsr uint32\n}\n\ntype FpReg struct {\n\tFpsr uint32\n\tFpr  [8]FpExtendedPrecision\n}\n\ntype FpExtendedPrecision struct {\n\tExponent    uint32\n\tMantissa_hi uint32\n\tMantissa_lo uint32\n}\n\ntype PtraceIoDesc struct {\n\tOp   int32\n\tOffs uintptr\n\tAddr *byte\n\tLen  uint32\n}\n\ntype Kevent_t struct {\n\tIdent  uint32\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\t_      [4]byte\n\tData   int64\n\tUdata  *byte\n\t_      [4]byte\n\tExt    [4]uint64\n}\n\ntype FdSet struct {\n\tBits [32]uint32\n}\n\nconst (\n\tsizeofIfMsghdr         = 0xa8\n\tSizeofIfMsghdr         = 0x70\n\tsizeofIfData           = 0x98\n\tSizeofIfData           = 0x60\n\tSizeofIfaMsghdr        = 0x14\n\tSizeofIfmaMsghdr       = 0x10\n\tSizeofIfAnnounceMsghdr = 0x18\n\tSizeofRtMsghdr         = 0x5c\n\tSizeofRtMetrics        = 0x38\n)\n\ntype ifMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n\tData    ifData\n}\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\tData    IfData\n}\n\ntype ifData struct {\n\tType       uint8\n\tPhysical   uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tLink_state uint8\n\tVhid       uint8\n\tDatalen    uint16\n\tMtu        uint32\n\tMetric     uint32\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tOqdrops    uint64\n\tNoproto    uint64\n\tHwassist   uint64\n\t_          [8]byte\n\t_          [16]byte\n}\n\ntype IfData struct {\n\tType        uint8\n\tPhysical    uint8\n\tAddrlen     uint8\n\tHdrlen      uint8\n\tLink_state  uint8\n\tSpare_char1 uint8\n\tSpare_char2 uint8\n\tDatalen     uint8\n\tMtu         uint32\n\tMetric      uint32\n\tBaudrate    uint32\n\tIpackets    uint32\n\tIerrors     uint32\n\tOpackets    uint32\n\tOerrors     uint32\n\tCollisions  uint32\n\tIbytes      uint32\n\tObytes      uint32\n\tImcasts     uint32\n\tOmcasts     uint32\n\tIqdrops     uint32\n\tNoproto     uint32\n\tHwassist    uint32\n\t_           [4]byte\n\tEpoch       int64\n\tLastchange  Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n\tMetric  int32\n}\n\ntype IfmaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tName    [16]int8\n\tWhat    uint16\n}\n\ntype RtMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\t_       uint16\n\tFlags   int32\n\tAddrs   int32\n\tPid     int32\n\tSeq     int32\n\tErrno   int32\n\tFmask   int32\n\tInits   uint32\n\tRmx     RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint32\n\tMtu      uint32\n\tHopcount uint32\n\tExpire   uint32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPksent   uint32\n\tWeight   uint32\n\tFiller   [3]uint32\n}\n\nconst (\n\tSizeofBpfVersion    = 0x4\n\tSizeofBpfStat       = 0x8\n\tSizeofBpfZbuf       = 0xc\n\tSizeofBpfProgram    = 0x8\n\tSizeofBpfInsn       = 0x8\n\tSizeofBpfHdr        = 0x20\n\tSizeofBpfZbufHeader = 0x20\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfZbuf struct {\n\tBufa   *byte\n\tBufb   *byte\n\tBuflen uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  Timeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\t_       [6]byte\n}\n\ntype BpfZbufHeader struct {\n\tKernel_gen uint32\n\tKernel_len uint32\n\tUser_gen   uint32\n\t_          [5]uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x100\n\tAT_SYMLINK_NOFOLLOW = 0x200\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_REMOVEDIR        = 0x800\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR      = 0x8\n\tPOLLHUP      = 0x10\n\tPOLLIN       = 0x1\n\tPOLLINIGNEOF = 0x2000\n\tPOLLNVAL     = 0x20\n\tPOLLOUT      = 0x4\n\tPOLLPRI      = 0x2\n\tPOLLRDBAND   = 0x80\n\tPOLLRDNORM   = 0x40\n\tPOLLWRBAND   = 0x100\n\tPOLLWRNORM   = 0x4\n\tPOLLRDHUP    = 0x4000\n)\n\ntype CapRights struct {\n\tRights [2]uint64\n}\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofClockinfo = 0x14\n\ntype Clockinfo struct {\n\tHz     int32\n\tTick   int32\n\tSpare  int32\n\tStathz int32\n\tProfhz int32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go",
    "content": "// cgo -godefs -- -fsigned-char types_freebsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && freebsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Time_t int64\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur int64\n\tMax int64\n}\n\ntype _Gid_t uint32\n\nconst (\n\t_statfsVersion = 0x20140518\n\t_dirblksiz     = 0x400\n)\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tNlink   uint64\n\tMode    uint16\n\t_0      int16\n\tUid     uint32\n\tGid     uint32\n\t_1      int32\n\tRdev    uint64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint64\n\tSpare   [10]uint64\n}\n\ntype Statfs_t struct {\n\tVersion     uint32\n\tType        uint32\n\tFlags       uint64\n\tBsize       uint64\n\tIosize      uint64\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      int64\n\tFiles       uint64\n\tFfree       int64\n\tSyncwrites  uint64\n\tAsyncwrites uint64\n\tSyncreads   uint64\n\tAsyncreads  uint64\n\tSpare       [10]uint64\n\tNamemax     uint32\n\tOwner       uint32\n\tFsid        Fsid\n\tCharspare   [80]int8\n\tFstypename  [16]byte\n\tMntfromname [1024]byte\n\tMntonname   [1024]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n\tSysid  int32\n\t_      [4]byte\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tPad0   uint8\n\tNamlen uint16\n\tPad1   uint16\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [46]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Xucred struct {\n\tVersion uint32\n\tUid     uint32\n\tNgroups int16\n\tGroups  [16]uint32\n\t_       *byte\n}\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPMreqn struct {\n\tMultiaddr [4]byte /* in_addr */\n\tAddress   [4]byte /* in_addr */\n\tIfindex   int32\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x36\n\tSizeofXucred           = 0x58\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPMreqn          = 0xc\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype PtraceLwpInfoStruct struct {\n\tLwpid        int32\n\tEvent        int32\n\tFlags        int32\n\tSigmask      Sigset_t\n\tSiglist      Sigset_t\n\tSiginfo      __PtraceSiginfo\n\tTdname       [20]int8\n\tChild_pid    int32\n\tSyscall_code uint32\n\tSyscall_narg uint32\n}\n\ntype __Siginfo struct {\n\tSigno  int32\n\tErrno  int32\n\tCode   int32\n\tPid    int32\n\tUid    uint32\n\tStatus int32\n\tAddr   *byte\n\tValue  [8]byte\n\t_      [40]byte\n}\n\ntype __PtraceSiginfo struct {\n\tSigno  int32\n\tErrno  int32\n\tCode   int32\n\tPid    int32\n\tUid    uint32\n\tStatus int32\n\tAddr   uintptr\n\tValue  [8]byte\n\t_      [40]byte\n}\n\ntype Sigset_t struct {\n\tVal [4]uint32\n}\n\ntype Reg struct {\n\tX    [30]uint64\n\tLr   uint64\n\tSp   uint64\n\tElr  uint64\n\tSpsr uint32\n\t_    [4]byte\n}\n\ntype FpReg struct {\n\tQ  [32][16]uint8\n\tSr uint32\n\tCr uint32\n\t_  [8]byte\n}\n\ntype FpExtendedPrecision struct{}\n\ntype PtraceIoDesc struct {\n\tOp   int32\n\tOffs uintptr\n\tAddr *byte\n\tLen  uint64\n}\n\ntype Kevent_t struct {\n\tIdent  uint64\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n\tExt    [4]uint64\n}\n\ntype FdSet struct {\n\tBits [16]uint64\n}\n\nconst (\n\tsizeofIfMsghdr         = 0xa8\n\tSizeofIfMsghdr         = 0xa8\n\tsizeofIfData           = 0x98\n\tSizeofIfData           = 0x98\n\tSizeofIfaMsghdr        = 0x14\n\tSizeofIfmaMsghdr       = 0x10\n\tSizeofIfAnnounceMsghdr = 0x18\n\tSizeofRtMsghdr         = 0x98\n\tSizeofRtMetrics        = 0x70\n)\n\ntype ifMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n\tData    ifData\n}\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\tData    IfData\n}\n\ntype ifData struct {\n\tType       uint8\n\tPhysical   uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tLink_state uint8\n\tVhid       uint8\n\tDatalen    uint16\n\tMtu        uint32\n\tMetric     uint32\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tOqdrops    uint64\n\tNoproto    uint64\n\tHwassist   uint64\n\t_          [8]byte\n\t_          [16]byte\n}\n\ntype IfData struct {\n\tType        uint8\n\tPhysical    uint8\n\tAddrlen     uint8\n\tHdrlen      uint8\n\tLink_state  uint8\n\tSpare_char1 uint8\n\tSpare_char2 uint8\n\tDatalen     uint8\n\tMtu         uint64\n\tMetric      uint64\n\tBaudrate    uint64\n\tIpackets    uint64\n\tIerrors     uint64\n\tOpackets    uint64\n\tOerrors     uint64\n\tCollisions  uint64\n\tIbytes      uint64\n\tObytes      uint64\n\tImcasts     uint64\n\tOmcasts     uint64\n\tIqdrops     uint64\n\tNoproto     uint64\n\tHwassist    uint64\n\tEpoch       int64\n\tLastchange  Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n\tMetric  int32\n}\n\ntype IfmaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tName    [16]int8\n\tWhat    uint16\n}\n\ntype RtMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\t_       uint16\n\tFlags   int32\n\tAddrs   int32\n\tPid     int32\n\tSeq     int32\n\tErrno   int32\n\tFmask   int32\n\tInits   uint64\n\tRmx     RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint64\n\tMtu      uint64\n\tHopcount uint64\n\tExpire   uint64\n\tRecvpipe uint64\n\tSendpipe uint64\n\tSsthresh uint64\n\tRtt      uint64\n\tRttvar   uint64\n\tPksent   uint64\n\tWeight   uint64\n\tFiller   [3]uint64\n}\n\nconst (\n\tSizeofBpfVersion    = 0x4\n\tSizeofBpfStat       = 0x8\n\tSizeofBpfZbuf       = 0x18\n\tSizeofBpfProgram    = 0x10\n\tSizeofBpfInsn       = 0x8\n\tSizeofBpfHdr        = 0x20\n\tSizeofBpfZbufHeader = 0x20\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfZbuf struct {\n\tBufa   *byte\n\tBufb   *byte\n\tBuflen uint64\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  Timeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\t_       [6]byte\n}\n\ntype BpfZbufHeader struct {\n\tKernel_gen uint32\n\tKernel_len uint32\n\tUser_gen   uint32\n\t_          [5]uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x100\n\tAT_SYMLINK_NOFOLLOW = 0x200\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_REMOVEDIR        = 0x800\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR      = 0x8\n\tPOLLHUP      = 0x10\n\tPOLLIN       = 0x1\n\tPOLLINIGNEOF = 0x2000\n\tPOLLNVAL     = 0x20\n\tPOLLOUT      = 0x4\n\tPOLLPRI      = 0x2\n\tPOLLRDBAND   = 0x80\n\tPOLLRDNORM   = 0x40\n\tPOLLWRBAND   = 0x100\n\tPOLLWRNORM   = 0x4\n\tPOLLRDHUP    = 0x4000\n)\n\ntype CapRights struct {\n\tRights [2]uint64\n}\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofClockinfo = 0x14\n\ntype Clockinfo struct {\n\tHz     int32\n\tTick   int32\n\tSpare  int32\n\tStathz int32\n\tProfhz int32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_freebsd_riscv64.go",
    "content": "// cgo -godefs -- -fsigned-char types_freebsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build riscv64 && freebsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Time_t int64\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur int64\n\tMax int64\n}\n\ntype _Gid_t uint32\n\nconst (\n\t_statfsVersion = 0x20140518\n\t_dirblksiz     = 0x400\n)\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tNlink   uint64\n\tMode    uint16\n\t_0      int16\n\tUid     uint32\n\tGid     uint32\n\t_1      int32\n\tRdev    uint64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint64\n\tSpare   [10]uint64\n}\n\ntype Statfs_t struct {\n\tVersion     uint32\n\tType        uint32\n\tFlags       uint64\n\tBsize       uint64\n\tIosize      uint64\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      int64\n\tFiles       uint64\n\tFfree       int64\n\tSyncwrites  uint64\n\tAsyncwrites uint64\n\tSyncreads   uint64\n\tAsyncreads  uint64\n\tSpare       [10]uint64\n\tNamemax     uint32\n\tOwner       uint32\n\tFsid        Fsid\n\tCharspare   [80]int8\n\tFstypename  [16]byte\n\tMntfromname [1024]byte\n\tMntonname   [1024]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n\tSysid  int32\n\t_      [4]byte\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tPad0   uint8\n\tNamlen uint16\n\tPad1   uint16\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [46]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Xucred struct {\n\tVersion uint32\n\tUid     uint32\n\tNgroups int16\n\tGroups  [16]uint32\n\t_       *byte\n}\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPMreqn struct {\n\tMultiaddr [4]byte /* in_addr */\n\tAddress   [4]byte /* in_addr */\n\tIfindex   int32\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x36\n\tSizeofXucred           = 0x58\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPMreqn          = 0xc\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype PtraceLwpInfoStruct struct {\n\tLwpid        int32\n\tEvent        int32\n\tFlags        int32\n\tSigmask      Sigset_t\n\tSiglist      Sigset_t\n\tSiginfo      __PtraceSiginfo\n\tTdname       [20]int8\n\tChild_pid    int32\n\tSyscall_code uint32\n\tSyscall_narg uint32\n}\n\ntype __Siginfo struct {\n\tSigno  int32\n\tErrno  int32\n\tCode   int32\n\tPid    int32\n\tUid    uint32\n\tStatus int32\n\tAddr   *byte\n\tValue  [8]byte\n\t_      [40]byte\n}\n\ntype __PtraceSiginfo struct {\n\tSigno  int32\n\tErrno  int32\n\tCode   int32\n\tPid    int32\n\tUid    uint32\n\tStatus int32\n\tAddr   uintptr\n\tValue  [8]byte\n\t_      [40]byte\n}\n\ntype Sigset_t struct {\n\tVal [4]uint32\n}\n\ntype Reg struct {\n\tRa      uint64\n\tSp      uint64\n\tGp      uint64\n\tTp      uint64\n\tT       [7]uint64\n\tS       [12]uint64\n\tA       [8]uint64\n\tSepc    uint64\n\tSstatus uint64\n}\n\ntype FpReg struct {\n\tX    [32][2]uint64\n\tFcsr uint64\n}\n\ntype FpExtendedPrecision struct{}\n\ntype PtraceIoDesc struct {\n\tOp   int32\n\tOffs uintptr\n\tAddr *byte\n\tLen  uint64\n}\n\ntype Kevent_t struct {\n\tIdent  uint64\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n\tExt    [4]uint64\n}\n\ntype FdSet struct {\n\tBits [16]uint64\n}\n\nconst (\n\tsizeofIfMsghdr         = 0xa8\n\tSizeofIfMsghdr         = 0xa8\n\tsizeofIfData           = 0x98\n\tSizeofIfData           = 0x98\n\tSizeofIfaMsghdr        = 0x14\n\tSizeofIfmaMsghdr       = 0x10\n\tSizeofIfAnnounceMsghdr = 0x18\n\tSizeofRtMsghdr         = 0x98\n\tSizeofRtMetrics        = 0x70\n)\n\ntype ifMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n\tData    ifData\n}\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\tData    IfData\n}\n\ntype ifData struct {\n\tType       uint8\n\tPhysical   uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tLink_state uint8\n\tVhid       uint8\n\tDatalen    uint16\n\tMtu        uint32\n\tMetric     uint32\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tOqdrops    uint64\n\tNoproto    uint64\n\tHwassist   uint64\n\t_          [8]byte\n\t_          [16]byte\n}\n\ntype IfData struct {\n\tType        uint8\n\tPhysical    uint8\n\tAddrlen     uint8\n\tHdrlen      uint8\n\tLink_state  uint8\n\tSpare_char1 uint8\n\tSpare_char2 uint8\n\tDatalen     uint8\n\tMtu         uint64\n\tMetric      uint64\n\tBaudrate    uint64\n\tIpackets    uint64\n\tIerrors     uint64\n\tOpackets    uint64\n\tOerrors     uint64\n\tCollisions  uint64\n\tIbytes      uint64\n\tObytes      uint64\n\tImcasts     uint64\n\tOmcasts     uint64\n\tIqdrops     uint64\n\tNoproto     uint64\n\tHwassist    uint64\n\tEpoch       int64\n\tLastchange  Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n\tMetric  int32\n}\n\ntype IfmaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tName    [16]int8\n\tWhat    uint16\n}\n\ntype RtMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\t_       uint16\n\tFlags   int32\n\tAddrs   int32\n\tPid     int32\n\tSeq     int32\n\tErrno   int32\n\tFmask   int32\n\tInits   uint64\n\tRmx     RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint64\n\tMtu      uint64\n\tHopcount uint64\n\tExpire   uint64\n\tRecvpipe uint64\n\tSendpipe uint64\n\tSsthresh uint64\n\tRtt      uint64\n\tRttvar   uint64\n\tPksent   uint64\n\tWeight   uint64\n\tNhidx    uint64\n\tFiller   [2]uint64\n}\n\nconst (\n\tSizeofBpfVersion    = 0x4\n\tSizeofBpfStat       = 0x8\n\tSizeofBpfZbuf       = 0x18\n\tSizeofBpfProgram    = 0x10\n\tSizeofBpfInsn       = 0x8\n\tSizeofBpfHdr        = 0x20\n\tSizeofBpfZbufHeader = 0x20\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfZbuf struct {\n\tBufa   *byte\n\tBufb   *byte\n\tBuflen uint64\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  Timeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\t_       [6]byte\n}\n\ntype BpfZbufHeader struct {\n\tKernel_gen uint32\n\tKernel_len uint32\n\tUser_gen   uint32\n\t_          [5]uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x100\n\tAT_SYMLINK_NOFOLLOW = 0x200\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_REMOVEDIR        = 0x800\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR      = 0x8\n\tPOLLHUP      = 0x10\n\tPOLLIN       = 0x1\n\tPOLLINIGNEOF = 0x2000\n\tPOLLNVAL     = 0x20\n\tPOLLOUT      = 0x4\n\tPOLLPRI      = 0x2\n\tPOLLRDBAND   = 0x80\n\tPOLLRDNORM   = 0x40\n\tPOLLWRBAND   = 0x100\n\tPOLLWRNORM   = 0x4\n\tPOLLRDHUP    = 0x4000\n)\n\ntype CapRights struct {\n\tRights [2]uint64\n}\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofClockinfo = 0x14\n\ntype Clockinfo struct {\n\tHz     int32\n\tTick   int32\n\tSpare  int32\n\tStathz int32\n\tProfhz int32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_linux.go",
    "content": "// Code generated by mkmerge; DO NOT EDIT.\n\n//go:build linux\n\npackage unix\n\nconst (\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLongLong = 0x8\n\tPathMax        = 0x1000\n)\n\ntype (\n\t_C_short int16\n\t_C_int   int32\n\n\t_C_long_long int64\n)\n\ntype ItimerSpec struct {\n\tInterval Timespec\n\tValue    Timespec\n}\n\ntype Itimerval struct {\n\tInterval Timeval\n\tValue    Timeval\n}\n\nconst (\n\tADJ_OFFSET            = 0x1\n\tADJ_FREQUENCY         = 0x2\n\tADJ_MAXERROR          = 0x4\n\tADJ_ESTERROR          = 0x8\n\tADJ_STATUS            = 0x10\n\tADJ_TIMECONST         = 0x20\n\tADJ_TAI               = 0x80\n\tADJ_SETOFFSET         = 0x100\n\tADJ_MICRO             = 0x1000\n\tADJ_NANO              = 0x2000\n\tADJ_TICK              = 0x4000\n\tADJ_OFFSET_SINGLESHOT = 0x8001\n\tADJ_OFFSET_SS_READ    = 0xa001\n)\n\nconst (\n\tSTA_PLL       = 0x1\n\tSTA_PPSFREQ   = 0x2\n\tSTA_PPSTIME   = 0x4\n\tSTA_FLL       = 0x8\n\tSTA_INS       = 0x10\n\tSTA_DEL       = 0x20\n\tSTA_UNSYNC    = 0x40\n\tSTA_FREQHOLD  = 0x80\n\tSTA_PPSSIGNAL = 0x100\n\tSTA_PPSJITTER = 0x200\n\tSTA_PPSWANDER = 0x400\n\tSTA_PPSERROR  = 0x800\n\tSTA_CLOCKERR  = 0x1000\n\tSTA_NANO      = 0x2000\n\tSTA_MODE      = 0x4000\n\tSTA_CLK       = 0x8000\n)\n\nconst (\n\tTIME_OK    = 0x0\n\tTIME_INS   = 0x1\n\tTIME_DEL   = 0x2\n\tTIME_OOP   = 0x3\n\tTIME_WAIT  = 0x4\n\tTIME_ERROR = 0x5\n\tTIME_BAD   = 0x5\n)\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype StatxTimestamp struct {\n\tSec  int64\n\tNsec uint32\n\t_    int32\n}\n\ntype Statx_t struct {\n\tMask                      uint32\n\tBlksize                   uint32\n\tAttributes                uint64\n\tNlink                     uint32\n\tUid                       uint32\n\tGid                       uint32\n\tMode                      uint16\n\t_                         [1]uint16\n\tIno                       uint64\n\tSize                      uint64\n\tBlocks                    uint64\n\tAttributes_mask           uint64\n\tAtime                     StatxTimestamp\n\tBtime                     StatxTimestamp\n\tCtime                     StatxTimestamp\n\tMtime                     StatxTimestamp\n\tRdev_major                uint32\n\tRdev_minor                uint32\n\tDev_major                 uint32\n\tDev_minor                 uint32\n\tMnt_id                    uint64\n\tDio_mem_align             uint32\n\tDio_offset_align          uint32\n\tSubvol                    uint64\n\tAtomic_write_unit_min     uint32\n\tAtomic_write_unit_max     uint32\n\tAtomic_write_segments_max uint32\n\tDio_read_offset_align     uint32\n\tAtomic_write_unit_max_opt uint32\n\t_                         [1]uint32\n\t_                         [8]uint64\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\ntype FileCloneRange struct {\n\tSrc_fd      int64\n\tSrc_offset  uint64\n\tSrc_length  uint64\n\tDest_offset uint64\n}\n\ntype RawFileDedupeRange struct {\n\tSrc_offset uint64\n\tSrc_length uint64\n\tDest_count uint16\n\tReserved1  uint16\n\tReserved2  uint32\n}\n\ntype RawFileDedupeRangeInfo struct {\n\tDest_fd       int64\n\tDest_offset   uint64\n\tBytes_deduped uint64\n\tStatus        int32\n\tReserved      uint32\n}\n\nconst (\n\tSizeofRawFileDedupeRange     = 0x18\n\tSizeofRawFileDedupeRangeInfo = 0x20\n\tFILE_DEDUPE_RANGE_SAME       = 0x0\n\tFILE_DEDUPE_RANGE_DIFFERS    = 0x1\n)\n\ntype FscryptPolicy struct {\n\tVersion                   uint8\n\tContents_encryption_mode  uint8\n\tFilenames_encryption_mode uint8\n\tFlags                     uint8\n\tMaster_key_descriptor     [8]uint8\n}\n\ntype FscryptKey struct {\n\tMode uint32\n\tRaw  [64]uint8\n\tSize uint32\n}\n\ntype FscryptPolicyV1 struct {\n\tVersion                   uint8\n\tContents_encryption_mode  uint8\n\tFilenames_encryption_mode uint8\n\tFlags                     uint8\n\tMaster_key_descriptor     [8]uint8\n}\n\ntype FscryptPolicyV2 struct {\n\tVersion                   uint8\n\tContents_encryption_mode  uint8\n\tFilenames_encryption_mode uint8\n\tFlags                     uint8\n\tLog2_data_unit_size       uint8\n\t_                         [3]uint8\n\tMaster_key_identifier     [16]uint8\n}\n\ntype FscryptGetPolicyExArg struct {\n\tSize   uint64\n\tPolicy [24]byte\n}\n\ntype FscryptKeySpecifier struct {\n\tType uint32\n\t_    uint32\n\tU    [32]byte\n}\n\ntype FscryptAddKeyArg struct {\n\tKey_spec FscryptKeySpecifier\n\tRaw_size uint32\n\tKey_id   uint32\n\tFlags    uint32\n\t_        [7]uint32\n}\n\ntype FscryptRemoveKeyArg struct {\n\tKey_spec             FscryptKeySpecifier\n\tRemoval_status_flags uint32\n\t_                    [5]uint32\n}\n\ntype FscryptGetKeyStatusArg struct {\n\tKey_spec     FscryptKeySpecifier\n\t_            [6]uint32\n\tStatus       uint32\n\tStatus_flags uint32\n\tUser_count   uint32\n\t_            [13]uint32\n}\n\ntype DmIoctl struct {\n\tVersion      [3]uint32\n\tData_size    uint32\n\tData_start   uint32\n\tTarget_count uint32\n\tOpen_count   int32\n\tFlags        uint32\n\tEvent_nr     uint32\n\t_            uint32\n\tDev          uint64\n\tName         [128]byte\n\tUuid         [129]byte\n\tData         [7]byte\n}\n\ntype DmTargetSpec struct {\n\tSector_start uint64\n\tLength       uint64\n\tStatus       int32\n\tNext         uint32\n\tTarget_type  [16]byte\n}\n\ntype DmTargetDeps struct {\n\tCount uint32\n\t_     uint32\n}\n\ntype DmTargetVersions struct {\n\tNext    uint32\n\tVersion [3]uint32\n}\n\ntype DmTargetMsg struct {\n\tSector uint64\n}\n\nconst (\n\tSizeofDmIoctl      = 0x138\n\tSizeofDmTargetSpec = 0x28\n)\n\ntype KeyctlDHParams struct {\n\tPrivate int32\n\tPrime   int32\n\tBase    int32\n}\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n)\n\ntype RawSockaddrInet4 struct {\n\tFamily uint16\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]uint8\n}\n\ntype RawSockaddrInet6 struct {\n\tFamily   uint16\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tFamily uint16\n\tPath   [108]int8\n}\n\ntype RawSockaddrLinklayer struct {\n\tFamily   uint16\n\tProtocol uint16\n\tIfindex  int32\n\tHatype   uint16\n\tPkttype  uint8\n\tHalen    uint8\n\tAddr     [8]uint8\n}\n\ntype RawSockaddrNetlink struct {\n\tFamily uint16\n\tPad    uint16\n\tPid    uint32\n\tGroups uint32\n}\n\ntype RawSockaddrHCI struct {\n\tFamily  uint16\n\tDev     uint16\n\tChannel uint16\n}\n\ntype RawSockaddrL2 struct {\n\tFamily      uint16\n\tPsm         uint16\n\tBdaddr      [6]uint8\n\tCid         uint16\n\tBdaddr_type uint8\n\t_           [1]byte\n}\n\ntype RawSockaddrRFCOMM struct {\n\tFamily  uint16\n\tBdaddr  [6]uint8\n\tChannel uint8\n\t_       [1]byte\n}\n\ntype RawSockaddrCAN struct {\n\tFamily  uint16\n\tIfindex int32\n\tAddr    [16]byte\n}\n\ntype RawSockaddrALG struct {\n\tFamily uint16\n\tType   [14]uint8\n\tFeat   uint32\n\tMask   uint32\n\tName   [64]uint8\n}\n\ntype RawSockaddrVM struct {\n\tFamily    uint16\n\tReserved1 uint16\n\tPort      uint32\n\tCid       uint32\n\tFlags     uint8\n\tZero      [3]uint8\n}\n\ntype RawSockaddrXDP struct {\n\tFamily         uint16\n\tFlags          uint16\n\tIfindex        uint32\n\tQueue_id       uint32\n\tShared_umem_fd uint32\n}\n\ntype RawSockaddrPPPoX [0x1e]byte\n\ntype RawSockaddrTIPC struct {\n\tFamily   uint16\n\tAddrtype uint8\n\tScope    int8\n\tAddr     [12]byte\n}\n\ntype RawSockaddrL2TPIP struct {\n\tFamily  uint16\n\tUnused  uint16\n\tAddr    [4]byte /* in_addr */\n\tConn_id uint32\n\t_       [4]uint8\n}\n\ntype RawSockaddrL2TPIP6 struct {\n\tFamily   uint16\n\tUnused   uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n\tConn_id  uint32\n}\n\ntype RawSockaddrIUCV struct {\n\tFamily  uint16\n\tPort    uint16\n\tAddr    uint32\n\tNodeid  [8]int8\n\tUser_id [8]int8\n\tName    [8]int8\n}\n\ntype RawSockaddrNFC struct {\n\tSa_family    uint16\n\tDev_idx      uint32\n\tTarget_idx   uint32\n\tNfc_protocol uint32\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPMreqn struct {\n\tMultiaddr [4]byte /* in_addr */\n\tAddress   [4]byte /* in_addr */\n\tIfindex   int32\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype PacketMreq struct {\n\tIfindex int32\n\tType    uint16\n\tAlen    uint16\n\tAddress [8]uint8\n}\n\ntype Inet4Pktinfo struct {\n\tIfindex  int32\n\tSpec_dst [4]byte /* in_addr */\n\tAddr     [4]byte /* in_addr */\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tData [8]uint32\n}\n\ntype Ucred struct {\n\tPid int32\n\tUid uint32\n\tGid uint32\n}\n\ntype TCPInfo struct {\n\tState                uint8\n\tCa_state             uint8\n\tRetransmits          uint8\n\tProbes               uint8\n\tBackoff              uint8\n\tOptions              uint8\n\tRto                  uint32\n\tAto                  uint32\n\tSnd_mss              uint32\n\tRcv_mss              uint32\n\tUnacked              uint32\n\tSacked               uint32\n\tLost                 uint32\n\tRetrans              uint32\n\tFackets              uint32\n\tLast_data_sent       uint32\n\tLast_ack_sent        uint32\n\tLast_data_recv       uint32\n\tLast_ack_recv        uint32\n\tPmtu                 uint32\n\tRcv_ssthresh         uint32\n\tRtt                  uint32\n\tRttvar               uint32\n\tSnd_ssthresh         uint32\n\tSnd_cwnd             uint32\n\tAdvmss               uint32\n\tReordering           uint32\n\tRcv_rtt              uint32\n\tRcv_space            uint32\n\tTotal_retrans        uint32\n\tPacing_rate          uint64\n\tMax_pacing_rate      uint64\n\tBytes_acked          uint64\n\tBytes_received       uint64\n\tSegs_out             uint32\n\tSegs_in              uint32\n\tNotsent_bytes        uint32\n\tMin_rtt              uint32\n\tData_segs_in         uint32\n\tData_segs_out        uint32\n\tDelivery_rate        uint64\n\tBusy_time            uint64\n\tRwnd_limited         uint64\n\tSndbuf_limited       uint64\n\tDelivered            uint32\n\tDelivered_ce         uint32\n\tBytes_sent           uint64\n\tBytes_retrans        uint64\n\tDsack_dups           uint32\n\tReord_seen           uint32\n\tRcv_ooopack          uint32\n\tSnd_wnd              uint32\n\tRcv_wnd              uint32\n\tRehash               uint32\n\tTotal_rto            uint16\n\tTotal_rto_recoveries uint16\n\tTotal_rto_time       uint32\n}\n\ntype TCPVegasInfo struct {\n\tEnabled uint32\n\tRttcnt  uint32\n\tRtt     uint32\n\tMinrtt  uint32\n}\n\ntype TCPDCTCPInfo struct {\n\tEnabled  uint16\n\tCe_state uint16\n\tAlpha    uint32\n\tAb_ecn   uint32\n\tAb_tot   uint32\n}\n\ntype TCPBBRInfo struct {\n\tBw_lo       uint32\n\tBw_hi       uint32\n\tMin_rtt     uint32\n\tPacing_gain uint32\n\tCwnd_gain   uint32\n}\n\ntype CanFilter struct {\n\tId   uint32\n\tMask uint32\n}\n\ntype TCPRepairOpt struct {\n\tCode uint32\n\tVal  uint32\n}\n\nconst (\n\tSizeofSockaddrInet4     = 0x10\n\tSizeofSockaddrInet6     = 0x1c\n\tSizeofSockaddrAny       = 0x70\n\tSizeofSockaddrUnix      = 0x6e\n\tSizeofSockaddrLinklayer = 0x14\n\tSizeofSockaddrNetlink   = 0xc\n\tSizeofSockaddrHCI       = 0x6\n\tSizeofSockaddrL2        = 0xe\n\tSizeofSockaddrRFCOMM    = 0xa\n\tSizeofSockaddrCAN       = 0x18\n\tSizeofSockaddrALG       = 0x58\n\tSizeofSockaddrVM        = 0x10\n\tSizeofSockaddrXDP       = 0x10\n\tSizeofSockaddrPPPoX     = 0x1e\n\tSizeofSockaddrTIPC      = 0x10\n\tSizeofSockaddrL2TPIP    = 0x10\n\tSizeofSockaddrL2TPIP6   = 0x20\n\tSizeofSockaddrIUCV      = 0x20\n\tSizeofSockaddrNFC       = 0x10\n\tSizeofLinger            = 0x8\n\tSizeofIPMreq            = 0x8\n\tSizeofIPMreqn           = 0xc\n\tSizeofIPv6Mreq          = 0x14\n\tSizeofPacketMreq        = 0x10\n\tSizeofInet4Pktinfo      = 0xc\n\tSizeofInet6Pktinfo      = 0x14\n\tSizeofIPv6MTUInfo       = 0x20\n\tSizeofICMPv6Filter      = 0x20\n\tSizeofUcred             = 0xc\n\tSizeofTCPInfo           = 0xf8\n\tSizeofTCPCCInfo         = 0x14\n\tSizeofCanFilter         = 0x8\n\tSizeofTCPRepairOpt      = 0x8\n)\n\nconst (\n\tNDA_UNSPEC         = 0x0\n\tNDA_DST            = 0x1\n\tNDA_LLADDR         = 0x2\n\tNDA_CACHEINFO      = 0x3\n\tNDA_PROBES         = 0x4\n\tNDA_VLAN           = 0x5\n\tNDA_PORT           = 0x6\n\tNDA_VNI            = 0x7\n\tNDA_IFINDEX        = 0x8\n\tNDA_MASTER         = 0x9\n\tNDA_LINK_NETNSID   = 0xa\n\tNDA_SRC_VNI        = 0xb\n\tNTF_USE            = 0x1\n\tNTF_SELF           = 0x2\n\tNTF_MASTER         = 0x4\n\tNTF_PROXY          = 0x8\n\tNTF_EXT_LEARNED    = 0x10\n\tNTF_OFFLOADED      = 0x20\n\tNTF_ROUTER         = 0x80\n\tNUD_INCOMPLETE     = 0x1\n\tNUD_REACHABLE      = 0x2\n\tNUD_STALE          = 0x4\n\tNUD_DELAY          = 0x8\n\tNUD_PROBE          = 0x10\n\tNUD_FAILED         = 0x20\n\tNUD_NOARP          = 0x40\n\tNUD_PERMANENT      = 0x80\n\tNUD_NONE           = 0x0\n\tIFA_UNSPEC         = 0x0\n\tIFA_ADDRESS        = 0x1\n\tIFA_LOCAL          = 0x2\n\tIFA_LABEL          = 0x3\n\tIFA_BROADCAST      = 0x4\n\tIFA_ANYCAST        = 0x5\n\tIFA_CACHEINFO      = 0x6\n\tIFA_MULTICAST      = 0x7\n\tIFA_FLAGS          = 0x8\n\tIFA_RT_PRIORITY    = 0x9\n\tIFA_TARGET_NETNSID = 0xa\n\tIFAL_LABEL         = 0x2\n\tIFAL_ADDRESS       = 0x1\n\tRT_SCOPE_UNIVERSE  = 0x0\n\tRT_SCOPE_SITE      = 0xc8\n\tRT_SCOPE_LINK      = 0xfd\n\tRT_SCOPE_HOST      = 0xfe\n\tRT_SCOPE_NOWHERE   = 0xff\n\tRT_TABLE_UNSPEC    = 0x0\n\tRT_TABLE_COMPAT    = 0xfc\n\tRT_TABLE_DEFAULT   = 0xfd\n\tRT_TABLE_MAIN      = 0xfe\n\tRT_TABLE_LOCAL     = 0xff\n\tRT_TABLE_MAX       = 0xffffffff\n\tRTA_UNSPEC         = 0x0\n\tRTA_DST            = 0x1\n\tRTA_SRC            = 0x2\n\tRTA_IIF            = 0x3\n\tRTA_OIF            = 0x4\n\tRTA_GATEWAY        = 0x5\n\tRTA_PRIORITY       = 0x6\n\tRTA_PREFSRC        = 0x7\n\tRTA_METRICS        = 0x8\n\tRTA_MULTIPATH      = 0x9\n\tRTA_FLOW           = 0xb\n\tRTA_CACHEINFO      = 0xc\n\tRTA_TABLE          = 0xf\n\tRTA_MARK           = 0x10\n\tRTA_MFC_STATS      = 0x11\n\tRTA_VIA            = 0x12\n\tRTA_NEWDST         = 0x13\n\tRTA_PREF           = 0x14\n\tRTA_ENCAP_TYPE     = 0x15\n\tRTA_ENCAP          = 0x16\n\tRTA_EXPIRES        = 0x17\n\tRTA_PAD            = 0x18\n\tRTA_UID            = 0x19\n\tRTA_TTL_PROPAGATE  = 0x1a\n\tRTA_IP_PROTO       = 0x1b\n\tRTA_SPORT          = 0x1c\n\tRTA_DPORT          = 0x1d\n\tRTN_UNSPEC         = 0x0\n\tRTN_UNICAST        = 0x1\n\tRTN_LOCAL          = 0x2\n\tRTN_BROADCAST      = 0x3\n\tRTN_ANYCAST        = 0x4\n\tRTN_MULTICAST      = 0x5\n\tRTN_BLACKHOLE      = 0x6\n\tRTN_UNREACHABLE    = 0x7\n\tRTN_PROHIBIT       = 0x8\n\tRTN_THROW          = 0x9\n\tRTN_NAT            = 0xa\n\tRTN_XRESOLVE       = 0xb\n\tSizeofNlMsghdr     = 0x10\n\tSizeofNlMsgerr     = 0x14\n\tSizeofRtGenmsg     = 0x1\n\tSizeofNlAttr       = 0x4\n\tSizeofRtAttr       = 0x4\n\tSizeofIfInfomsg    = 0x10\n\tSizeofIfAddrmsg    = 0x8\n\tSizeofIfAddrlblmsg = 0xc\n\tSizeofIfaCacheinfo = 0x10\n\tSizeofRtMsg        = 0xc\n\tSizeofRtNexthop    = 0x8\n\tSizeofNdUseroptmsg = 0x10\n\tSizeofNdMsg        = 0xc\n)\n\ntype NlMsghdr struct {\n\tLen   uint32\n\tType  uint16\n\tFlags uint16\n\tSeq   uint32\n\tPid   uint32\n}\n\ntype NlMsgerr struct {\n\tError int32\n\tMsg   NlMsghdr\n}\n\ntype RtGenmsg struct {\n\tFamily uint8\n}\n\ntype NlAttr struct {\n\tLen  uint16\n\tType uint16\n}\n\ntype RtAttr struct {\n\tLen  uint16\n\tType uint16\n}\n\ntype IfInfomsg struct {\n\tFamily uint8\n\t_      uint8\n\tType   uint16\n\tIndex  int32\n\tFlags  uint32\n\tChange uint32\n}\n\ntype IfAddrmsg struct {\n\tFamily    uint8\n\tPrefixlen uint8\n\tFlags     uint8\n\tScope     uint8\n\tIndex     uint32\n}\n\ntype IfAddrlblmsg struct {\n\tFamily    uint8\n\t_         uint8\n\tPrefixlen uint8\n\tFlags     uint8\n\tIndex     uint32\n\tSeq       uint32\n}\n\ntype IfaCacheinfo struct {\n\tPrefered uint32\n\tValid    uint32\n\tCstamp   uint32\n\tTstamp   uint32\n}\n\ntype RtMsg struct {\n\tFamily   uint8\n\tDst_len  uint8\n\tSrc_len  uint8\n\tTos      uint8\n\tTable    uint8\n\tProtocol uint8\n\tScope    uint8\n\tType     uint8\n\tFlags    uint32\n}\n\ntype RtNexthop struct {\n\tLen     uint16\n\tFlags   uint8\n\tHops    uint8\n\tIfindex int32\n}\n\ntype NdUseroptmsg struct {\n\tFamily    uint8\n\tPad1      uint8\n\tOpts_len  uint16\n\tIfindex   int32\n\tIcmp_type uint8\n\tIcmp_code uint8\n\tPad2      uint16\n\tPad3      uint32\n}\n\ntype NdMsg struct {\n\tFamily  uint8\n\tPad1    uint8\n\tPad2    uint16\n\tIfindex int32\n\tState   uint16\n\tFlags   uint8\n\tType    uint8\n}\n\nconst (\n\tICMP_FILTER = 0x1\n\n\tICMPV6_FILTER             = 0x1\n\tICMPV6_FILTER_BLOCK       = 0x1\n\tICMPV6_FILTER_BLOCKOTHERS = 0x3\n\tICMPV6_FILTER_PASS        = 0x2\n\tICMPV6_FILTER_PASSONLY    = 0x4\n)\n\nconst (\n\tSizeofSockFilter = 0x8\n)\n\ntype SockFilter struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype SockFprog struct {\n\tLen    uint16\n\tFilter *SockFilter\n}\n\ntype InotifyEvent struct {\n\tWd     int32\n\tMask   uint32\n\tCookie uint32\n\tLen    uint32\n}\n\nconst SizeofInotifyEvent = 0x10\n\nconst SI_LOAD_SHIFT = 0x10\n\ntype Utsname struct {\n\tSysname    [65]byte\n\tNodename   [65]byte\n\tRelease    [65]byte\n\tVersion    [65]byte\n\tMachine    [65]byte\n\tDomainname [65]byte\n}\n\nconst (\n\tAT_EMPTY_PATH   = 0x1000\n\tAT_FDCWD        = -0x64\n\tAT_NO_AUTOMOUNT = 0x800\n\tAT_REMOVEDIR    = 0x200\n\n\tAT_STATX_SYNC_AS_STAT = 0x0\n\tAT_STATX_FORCE_SYNC   = 0x2000\n\tAT_STATX_DONT_SYNC    = 0x4000\n\n\tAT_RECURSIVE = 0x8000\n\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_SYMLINK_NOFOLLOW = 0x100\n\n\tAT_EACCESS = 0x200\n\n\tOPEN_TREE_CLONE = 0x1\n\n\tMOVE_MOUNT_F_SYMLINKS   = 0x1\n\tMOVE_MOUNT_F_AUTOMOUNTS = 0x2\n\tMOVE_MOUNT_F_EMPTY_PATH = 0x4\n\tMOVE_MOUNT_T_SYMLINKS   = 0x10\n\tMOVE_MOUNT_T_AUTOMOUNTS = 0x20\n\tMOVE_MOUNT_T_EMPTY_PATH = 0x40\n\tMOVE_MOUNT_SET_GROUP    = 0x100\n\n\tFSOPEN_CLOEXEC = 0x1\n\n\tFSPICK_CLOEXEC          = 0x1\n\tFSPICK_SYMLINK_NOFOLLOW = 0x2\n\tFSPICK_NO_AUTOMOUNT     = 0x4\n\tFSPICK_EMPTY_PATH       = 0x8\n\n\tFSMOUNT_CLOEXEC = 0x1\n\n\tFSCONFIG_SET_FLAG        = 0x0\n\tFSCONFIG_SET_STRING      = 0x1\n\tFSCONFIG_SET_BINARY      = 0x2\n\tFSCONFIG_SET_PATH        = 0x3\n\tFSCONFIG_SET_PATH_EMPTY  = 0x4\n\tFSCONFIG_SET_FD          = 0x5\n\tFSCONFIG_CMD_CREATE      = 0x6\n\tFSCONFIG_CMD_RECONFIGURE = 0x7\n)\n\ntype OpenHow struct {\n\tFlags   uint64\n\tMode    uint64\n\tResolve uint64\n}\n\nconst SizeofOpenHow = 0x18\n\nconst (\n\tRESOLVE_BENEATH       = 0x8\n\tRESOLVE_IN_ROOT       = 0x10\n\tRESOLVE_NO_MAGICLINKS = 0x2\n\tRESOLVE_NO_SYMLINKS   = 0x4\n\tRESOLVE_NO_XDEV       = 0x1\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLIN   = 0x1\n\tPOLLPRI  = 0x2\n\tPOLLOUT  = 0x4\n\tPOLLERR  = 0x8\n\tPOLLHUP  = 0x10\n\tPOLLNVAL = 0x20\n)\n\ntype sigset_argpack struct {\n\tss    *Sigset_t\n\tssLen uintptr\n}\n\ntype SignalfdSiginfo struct {\n\tSigno     uint32\n\tErrno     int32\n\tCode      int32\n\tPid       uint32\n\tUid       uint32\n\tFd        int32\n\tTid       uint32\n\tBand      uint32\n\tOverrun   uint32\n\tTrapno    uint32\n\tStatus    int32\n\tInt       int32\n\tPtr       uint64\n\tUtime     uint64\n\tStime     uint64\n\tAddr      uint64\n\tAddr_lsb  uint16\n\t_         uint16\n\tSyscall   int32\n\tCall_addr uint64\n\tArch      uint32\n\t_         [28]uint8\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tTASKSTATS_CMD_UNSPEC                  = 0x0\n\tTASKSTATS_CMD_GET                     = 0x1\n\tTASKSTATS_CMD_NEW                     = 0x2\n\tTASKSTATS_TYPE_UNSPEC                 = 0x0\n\tTASKSTATS_TYPE_PID                    = 0x1\n\tTASKSTATS_TYPE_TGID                   = 0x2\n\tTASKSTATS_TYPE_STATS                  = 0x3\n\tTASKSTATS_TYPE_AGGR_PID               = 0x4\n\tTASKSTATS_TYPE_AGGR_TGID              = 0x5\n\tTASKSTATS_TYPE_NULL                   = 0x6\n\tTASKSTATS_CMD_ATTR_UNSPEC             = 0x0\n\tTASKSTATS_CMD_ATTR_PID                = 0x1\n\tTASKSTATS_CMD_ATTR_TGID               = 0x2\n\tTASKSTATS_CMD_ATTR_REGISTER_CPUMASK   = 0x3\n\tTASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4\n)\n\ntype CGroupStats struct {\n\tSleeping        uint64\n\tRunning         uint64\n\tStopped         uint64\n\tUninterruptible uint64\n\tIo_wait         uint64\n}\n\nconst (\n\tCGROUPSTATS_CMD_UNSPEC        = 0x3\n\tCGROUPSTATS_CMD_GET           = 0x4\n\tCGROUPSTATS_CMD_NEW           = 0x5\n\tCGROUPSTATS_TYPE_UNSPEC       = 0x0\n\tCGROUPSTATS_TYPE_CGROUP_STATS = 0x1\n\tCGROUPSTATS_CMD_ATTR_UNSPEC   = 0x0\n\tCGROUPSTATS_CMD_ATTR_FD       = 0x1\n)\n\ntype Genlmsghdr struct {\n\tCmd      uint8\n\tVersion  uint8\n\tReserved uint16\n}\n\nconst (\n\tCTRL_CMD_UNSPEC            = 0x0\n\tCTRL_CMD_NEWFAMILY         = 0x1\n\tCTRL_CMD_DELFAMILY         = 0x2\n\tCTRL_CMD_GETFAMILY         = 0x3\n\tCTRL_CMD_NEWOPS            = 0x4\n\tCTRL_CMD_DELOPS            = 0x5\n\tCTRL_CMD_GETOPS            = 0x6\n\tCTRL_CMD_NEWMCAST_GRP      = 0x7\n\tCTRL_CMD_DELMCAST_GRP      = 0x8\n\tCTRL_CMD_GETMCAST_GRP      = 0x9\n\tCTRL_CMD_GETPOLICY         = 0xa\n\tCTRL_ATTR_UNSPEC           = 0x0\n\tCTRL_ATTR_FAMILY_ID        = 0x1\n\tCTRL_ATTR_FAMILY_NAME      = 0x2\n\tCTRL_ATTR_VERSION          = 0x3\n\tCTRL_ATTR_HDRSIZE          = 0x4\n\tCTRL_ATTR_MAXATTR          = 0x5\n\tCTRL_ATTR_OPS              = 0x6\n\tCTRL_ATTR_MCAST_GROUPS     = 0x7\n\tCTRL_ATTR_POLICY           = 0x8\n\tCTRL_ATTR_OP_POLICY        = 0x9\n\tCTRL_ATTR_OP               = 0xa\n\tCTRL_ATTR_OP_UNSPEC        = 0x0\n\tCTRL_ATTR_OP_ID            = 0x1\n\tCTRL_ATTR_OP_FLAGS         = 0x2\n\tCTRL_ATTR_MCAST_GRP_UNSPEC = 0x0\n\tCTRL_ATTR_MCAST_GRP_NAME   = 0x1\n\tCTRL_ATTR_MCAST_GRP_ID     = 0x2\n\tCTRL_ATTR_POLICY_UNSPEC    = 0x0\n\tCTRL_ATTR_POLICY_DO        = 0x1\n\tCTRL_ATTR_POLICY_DUMP      = 0x2\n\tCTRL_ATTR_POLICY_DUMP_MAX  = 0x2\n)\n\nconst (\n\t_CPU_SETSIZE = 0x400\n)\n\nconst (\n\tBDADDR_BREDR     = 0x0\n\tBDADDR_LE_PUBLIC = 0x1\n\tBDADDR_LE_RANDOM = 0x2\n)\n\ntype PerfEventAttr struct {\n\tType               uint32\n\tSize               uint32\n\tConfig             uint64\n\tSample             uint64\n\tSample_type        uint64\n\tRead_format        uint64\n\tBits               uint64\n\tWakeup             uint32\n\tBp_type            uint32\n\tExt1               uint64\n\tExt2               uint64\n\tBranch_sample_type uint64\n\tSample_regs_user   uint64\n\tSample_stack_user  uint32\n\tClockid            int32\n\tSample_regs_intr   uint64\n\tAux_watermark      uint32\n\tSample_max_stack   uint16\n\t_                  uint16\n\tAux_sample_size    uint32\n\t_                  uint32\n\tSig_data           uint64\n}\n\ntype PerfEventMmapPage struct {\n\tVersion        uint32\n\tCompat_version uint32\n\tLock           uint32\n\tIndex          uint32\n\tOffset         int64\n\tTime_enabled   uint64\n\tTime_running   uint64\n\tCapabilities   uint64\n\tPmc_width      uint16\n\tTime_shift     uint16\n\tTime_mult      uint32\n\tTime_offset    uint64\n\tTime_zero      uint64\n\tSize           uint32\n\t_              uint32\n\tTime_cycles    uint64\n\tTime_mask      uint64\n\t_              [928]uint8\n\tData_head      uint64\n\tData_tail      uint64\n\tData_offset    uint64\n\tData_size      uint64\n\tAux_head       uint64\n\tAux_tail       uint64\n\tAux_offset     uint64\n\tAux_size       uint64\n}\n\nconst (\n\tPerfBitDisabled               uint64 = CBitFieldMaskBit0\n\tPerfBitInherit                       = CBitFieldMaskBit1\n\tPerfBitPinned                        = CBitFieldMaskBit2\n\tPerfBitExclusive                     = CBitFieldMaskBit3\n\tPerfBitExcludeUser                   = CBitFieldMaskBit4\n\tPerfBitExcludeKernel                 = CBitFieldMaskBit5\n\tPerfBitExcludeHv                     = CBitFieldMaskBit6\n\tPerfBitExcludeIdle                   = CBitFieldMaskBit7\n\tPerfBitMmap                          = CBitFieldMaskBit8\n\tPerfBitComm                          = CBitFieldMaskBit9\n\tPerfBitFreq                          = CBitFieldMaskBit10\n\tPerfBitInheritStat                   = CBitFieldMaskBit11\n\tPerfBitEnableOnExec                  = CBitFieldMaskBit12\n\tPerfBitTask                          = CBitFieldMaskBit13\n\tPerfBitWatermark                     = CBitFieldMaskBit14\n\tPerfBitPreciseIPBit1                 = CBitFieldMaskBit15\n\tPerfBitPreciseIPBit2                 = CBitFieldMaskBit16\n\tPerfBitMmapData                      = CBitFieldMaskBit17\n\tPerfBitSampleIDAll                   = CBitFieldMaskBit18\n\tPerfBitExcludeHost                   = CBitFieldMaskBit19\n\tPerfBitExcludeGuest                  = CBitFieldMaskBit20\n\tPerfBitExcludeCallchainKernel        = CBitFieldMaskBit21\n\tPerfBitExcludeCallchainUser          = CBitFieldMaskBit22\n\tPerfBitMmap2                         = CBitFieldMaskBit23\n\tPerfBitCommExec                      = CBitFieldMaskBit24\n\tPerfBitUseClockID                    = CBitFieldMaskBit25\n\tPerfBitContextSwitch                 = CBitFieldMaskBit26\n\tPerfBitWriteBackward                 = CBitFieldMaskBit27\n)\n\nconst (\n\tPERF_TYPE_HARDWARE                    = 0x0\n\tPERF_TYPE_SOFTWARE                    = 0x1\n\tPERF_TYPE_TRACEPOINT                  = 0x2\n\tPERF_TYPE_HW_CACHE                    = 0x3\n\tPERF_TYPE_RAW                         = 0x4\n\tPERF_TYPE_BREAKPOINT                  = 0x5\n\tPERF_TYPE_MAX                         = 0x6\n\tPERF_COUNT_HW_CPU_CYCLES              = 0x0\n\tPERF_COUNT_HW_INSTRUCTIONS            = 0x1\n\tPERF_COUNT_HW_CACHE_REFERENCES        = 0x2\n\tPERF_COUNT_HW_CACHE_MISSES            = 0x3\n\tPERF_COUNT_HW_BRANCH_INSTRUCTIONS     = 0x4\n\tPERF_COUNT_HW_BRANCH_MISSES           = 0x5\n\tPERF_COUNT_HW_BUS_CYCLES              = 0x6\n\tPERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7\n\tPERF_COUNT_HW_STALLED_CYCLES_BACKEND  = 0x8\n\tPERF_COUNT_HW_REF_CPU_CYCLES          = 0x9\n\tPERF_COUNT_HW_MAX                     = 0xa\n\tPERF_COUNT_HW_CACHE_L1D               = 0x0\n\tPERF_COUNT_HW_CACHE_L1I               = 0x1\n\tPERF_COUNT_HW_CACHE_LL                = 0x2\n\tPERF_COUNT_HW_CACHE_DTLB              = 0x3\n\tPERF_COUNT_HW_CACHE_ITLB              = 0x4\n\tPERF_COUNT_HW_CACHE_BPU               = 0x5\n\tPERF_COUNT_HW_CACHE_NODE              = 0x6\n\tPERF_COUNT_HW_CACHE_MAX               = 0x7\n\tPERF_COUNT_HW_CACHE_OP_READ           = 0x0\n\tPERF_COUNT_HW_CACHE_OP_WRITE          = 0x1\n\tPERF_COUNT_HW_CACHE_OP_PREFETCH       = 0x2\n\tPERF_COUNT_HW_CACHE_OP_MAX            = 0x3\n\tPERF_COUNT_HW_CACHE_RESULT_ACCESS     = 0x0\n\tPERF_COUNT_HW_CACHE_RESULT_MISS       = 0x1\n\tPERF_COUNT_HW_CACHE_RESULT_MAX        = 0x2\n\tPERF_COUNT_SW_CPU_CLOCK               = 0x0\n\tPERF_COUNT_SW_TASK_CLOCK              = 0x1\n\tPERF_COUNT_SW_PAGE_FAULTS             = 0x2\n\tPERF_COUNT_SW_CONTEXT_SWITCHES        = 0x3\n\tPERF_COUNT_SW_CPU_MIGRATIONS          = 0x4\n\tPERF_COUNT_SW_PAGE_FAULTS_MIN         = 0x5\n\tPERF_COUNT_SW_PAGE_FAULTS_MAJ         = 0x6\n\tPERF_COUNT_SW_ALIGNMENT_FAULTS        = 0x7\n\tPERF_COUNT_SW_EMULATION_FAULTS        = 0x8\n\tPERF_COUNT_SW_DUMMY                   = 0x9\n\tPERF_COUNT_SW_BPF_OUTPUT              = 0xa\n\tPERF_COUNT_SW_MAX                     = 0xc\n\tPERF_SAMPLE_IP                        = 0x1\n\tPERF_SAMPLE_TID                       = 0x2\n\tPERF_SAMPLE_TIME                      = 0x4\n\tPERF_SAMPLE_ADDR                      = 0x8\n\tPERF_SAMPLE_READ                      = 0x10\n\tPERF_SAMPLE_CALLCHAIN                 = 0x20\n\tPERF_SAMPLE_ID                        = 0x40\n\tPERF_SAMPLE_CPU                       = 0x80\n\tPERF_SAMPLE_PERIOD                    = 0x100\n\tPERF_SAMPLE_STREAM_ID                 = 0x200\n\tPERF_SAMPLE_RAW                       = 0x400\n\tPERF_SAMPLE_BRANCH_STACK              = 0x800\n\tPERF_SAMPLE_REGS_USER                 = 0x1000\n\tPERF_SAMPLE_STACK_USER                = 0x2000\n\tPERF_SAMPLE_WEIGHT                    = 0x4000\n\tPERF_SAMPLE_DATA_SRC                  = 0x8000\n\tPERF_SAMPLE_IDENTIFIER                = 0x10000\n\tPERF_SAMPLE_TRANSACTION               = 0x20000\n\tPERF_SAMPLE_REGS_INTR                 = 0x40000\n\tPERF_SAMPLE_PHYS_ADDR                 = 0x80000\n\tPERF_SAMPLE_AUX                       = 0x100000\n\tPERF_SAMPLE_CGROUP                    = 0x200000\n\tPERF_SAMPLE_DATA_PAGE_SIZE            = 0x400000\n\tPERF_SAMPLE_CODE_PAGE_SIZE            = 0x800000\n\tPERF_SAMPLE_WEIGHT_STRUCT             = 0x1000000\n\tPERF_SAMPLE_MAX                       = 0x2000000\n\tPERF_SAMPLE_BRANCH_USER_SHIFT         = 0x0\n\tPERF_SAMPLE_BRANCH_KERNEL_SHIFT       = 0x1\n\tPERF_SAMPLE_BRANCH_HV_SHIFT           = 0x2\n\tPERF_SAMPLE_BRANCH_ANY_SHIFT          = 0x3\n\tPERF_SAMPLE_BRANCH_ANY_CALL_SHIFT     = 0x4\n\tPERF_SAMPLE_BRANCH_ANY_RETURN_SHIFT   = 0x5\n\tPERF_SAMPLE_BRANCH_IND_CALL_SHIFT     = 0x6\n\tPERF_SAMPLE_BRANCH_ABORT_TX_SHIFT     = 0x7\n\tPERF_SAMPLE_BRANCH_IN_TX_SHIFT        = 0x8\n\tPERF_SAMPLE_BRANCH_NO_TX_SHIFT        = 0x9\n\tPERF_SAMPLE_BRANCH_COND_SHIFT         = 0xa\n\tPERF_SAMPLE_BRANCH_CALL_STACK_SHIFT   = 0xb\n\tPERF_SAMPLE_BRANCH_IND_JUMP_SHIFT     = 0xc\n\tPERF_SAMPLE_BRANCH_CALL_SHIFT         = 0xd\n\tPERF_SAMPLE_BRANCH_NO_FLAGS_SHIFT     = 0xe\n\tPERF_SAMPLE_BRANCH_NO_CYCLES_SHIFT    = 0xf\n\tPERF_SAMPLE_BRANCH_TYPE_SAVE_SHIFT    = 0x10\n\tPERF_SAMPLE_BRANCH_HW_INDEX_SHIFT     = 0x11\n\tPERF_SAMPLE_BRANCH_PRIV_SAVE_SHIFT    = 0x12\n\tPERF_SAMPLE_BRANCH_COUNTERS           = 0x80000\n\tPERF_SAMPLE_BRANCH_MAX_SHIFT          = 0x14\n\tPERF_SAMPLE_BRANCH_USER               = 0x1\n\tPERF_SAMPLE_BRANCH_KERNEL             = 0x2\n\tPERF_SAMPLE_BRANCH_HV                 = 0x4\n\tPERF_SAMPLE_BRANCH_ANY                = 0x8\n\tPERF_SAMPLE_BRANCH_ANY_CALL           = 0x10\n\tPERF_SAMPLE_BRANCH_ANY_RETURN         = 0x20\n\tPERF_SAMPLE_BRANCH_IND_CALL           = 0x40\n\tPERF_SAMPLE_BRANCH_ABORT_TX           = 0x80\n\tPERF_SAMPLE_BRANCH_IN_TX              = 0x100\n\tPERF_SAMPLE_BRANCH_NO_TX              = 0x200\n\tPERF_SAMPLE_BRANCH_COND               = 0x400\n\tPERF_SAMPLE_BRANCH_CALL_STACK         = 0x800\n\tPERF_SAMPLE_BRANCH_IND_JUMP           = 0x1000\n\tPERF_SAMPLE_BRANCH_CALL               = 0x2000\n\tPERF_SAMPLE_BRANCH_NO_FLAGS           = 0x4000\n\tPERF_SAMPLE_BRANCH_NO_CYCLES          = 0x8000\n\tPERF_SAMPLE_BRANCH_TYPE_SAVE          = 0x10000\n\tPERF_SAMPLE_BRANCH_HW_INDEX           = 0x20000\n\tPERF_SAMPLE_BRANCH_PRIV_SAVE          = 0x40000\n\tPERF_SAMPLE_BRANCH_MAX                = 0x100000\n\tPERF_BR_UNKNOWN                       = 0x0\n\tPERF_BR_COND                          = 0x1\n\tPERF_BR_UNCOND                        = 0x2\n\tPERF_BR_IND                           = 0x3\n\tPERF_BR_CALL                          = 0x4\n\tPERF_BR_IND_CALL                      = 0x5\n\tPERF_BR_RET                           = 0x6\n\tPERF_BR_SYSCALL                       = 0x7\n\tPERF_BR_SYSRET                        = 0x8\n\tPERF_BR_COND_CALL                     = 0x9\n\tPERF_BR_COND_RET                      = 0xa\n\tPERF_BR_ERET                          = 0xb\n\tPERF_BR_IRQ                           = 0xc\n\tPERF_BR_SERROR                        = 0xd\n\tPERF_BR_NO_TX                         = 0xe\n\tPERF_BR_EXTEND_ABI                    = 0xf\n\tPERF_BR_MAX                           = 0x10\n\tPERF_SAMPLE_REGS_ABI_NONE             = 0x0\n\tPERF_SAMPLE_REGS_ABI_32               = 0x1\n\tPERF_SAMPLE_REGS_ABI_64               = 0x2\n\tPERF_TXN_ELISION                      = 0x1\n\tPERF_TXN_TRANSACTION                  = 0x2\n\tPERF_TXN_SYNC                         = 0x4\n\tPERF_TXN_ASYNC                        = 0x8\n\tPERF_TXN_RETRY                        = 0x10\n\tPERF_TXN_CONFLICT                     = 0x20\n\tPERF_TXN_CAPACITY_WRITE               = 0x40\n\tPERF_TXN_CAPACITY_READ                = 0x80\n\tPERF_TXN_MAX                          = 0x100\n\tPERF_TXN_ABORT_MASK                   = -0x100000000\n\tPERF_TXN_ABORT_SHIFT                  = 0x20\n\tPERF_FORMAT_TOTAL_TIME_ENABLED        = 0x1\n\tPERF_FORMAT_TOTAL_TIME_RUNNING        = 0x2\n\tPERF_FORMAT_ID                        = 0x4\n\tPERF_FORMAT_GROUP                     = 0x8\n\tPERF_FORMAT_LOST                      = 0x10\n\tPERF_FORMAT_MAX                       = 0x20\n\tPERF_IOC_FLAG_GROUP                   = 0x1\n\tPERF_RECORD_MMAP                      = 0x1\n\tPERF_RECORD_LOST                      = 0x2\n\tPERF_RECORD_COMM                      = 0x3\n\tPERF_RECORD_EXIT                      = 0x4\n\tPERF_RECORD_THROTTLE                  = 0x5\n\tPERF_RECORD_UNTHROTTLE                = 0x6\n\tPERF_RECORD_FORK                      = 0x7\n\tPERF_RECORD_READ                      = 0x8\n\tPERF_RECORD_SAMPLE                    = 0x9\n\tPERF_RECORD_MMAP2                     = 0xa\n\tPERF_RECORD_AUX                       = 0xb\n\tPERF_RECORD_ITRACE_START              = 0xc\n\tPERF_RECORD_LOST_SAMPLES              = 0xd\n\tPERF_RECORD_SWITCH                    = 0xe\n\tPERF_RECORD_SWITCH_CPU_WIDE           = 0xf\n\tPERF_RECORD_NAMESPACES                = 0x10\n\tPERF_RECORD_KSYMBOL                   = 0x11\n\tPERF_RECORD_BPF_EVENT                 = 0x12\n\tPERF_RECORD_CGROUP                    = 0x13\n\tPERF_RECORD_TEXT_POKE                 = 0x14\n\tPERF_RECORD_AUX_OUTPUT_HW_ID          = 0x15\n\tPERF_RECORD_MAX                       = 0x16\n\tPERF_RECORD_KSYMBOL_TYPE_UNKNOWN      = 0x0\n\tPERF_RECORD_KSYMBOL_TYPE_BPF          = 0x1\n\tPERF_RECORD_KSYMBOL_TYPE_OOL          = 0x2\n\tPERF_RECORD_KSYMBOL_TYPE_MAX          = 0x3\n\tPERF_BPF_EVENT_UNKNOWN                = 0x0\n\tPERF_BPF_EVENT_PROG_LOAD              = 0x1\n\tPERF_BPF_EVENT_PROG_UNLOAD            = 0x2\n\tPERF_BPF_EVENT_MAX                    = 0x3\n\tPERF_CONTEXT_HV                       = -0x20\n\tPERF_CONTEXT_KERNEL                   = -0x80\n\tPERF_CONTEXT_USER                     = -0x200\n\tPERF_CONTEXT_GUEST                    = -0x800\n\tPERF_CONTEXT_GUEST_KERNEL             = -0x880\n\tPERF_CONTEXT_GUEST_USER               = -0xa00\n\tPERF_CONTEXT_MAX                      = -0xfff\n)\n\ntype TCPMD5Sig struct {\n\tAddr      SockaddrStorage\n\tFlags     uint8\n\tPrefixlen uint8\n\tKeylen    uint16\n\tIfindex   int32\n\tKey       [80]uint8\n}\n\ntype HDDriveCmdHdr struct {\n\tCommand uint8\n\tNumber  uint8\n\tFeature uint8\n\tCount   uint8\n}\n\ntype HDDriveID struct {\n\tConfig         uint16\n\tCyls           uint16\n\tReserved2      uint16\n\tHeads          uint16\n\tTrack_bytes    uint16\n\tSector_bytes   uint16\n\tSectors        uint16\n\tVendor0        uint16\n\tVendor1        uint16\n\tVendor2        uint16\n\tSerial_no      [20]uint8\n\tBuf_type       uint16\n\tBuf_size       uint16\n\tEcc_bytes      uint16\n\tFw_rev         [8]uint8\n\tModel          [40]uint8\n\tMax_multsect   uint8\n\tVendor3        uint8\n\tDword_io       uint16\n\tVendor4        uint8\n\tCapability     uint8\n\tReserved50     uint16\n\tVendor5        uint8\n\tTPIO           uint8\n\tVendor6        uint8\n\tTDMA           uint8\n\tField_valid    uint16\n\tCur_cyls       uint16\n\tCur_heads      uint16\n\tCur_sectors    uint16\n\tCur_capacity0  uint16\n\tCur_capacity1  uint16\n\tMultsect       uint8\n\tMultsect_valid uint8\n\tLba_capacity   uint32\n\tDma_1word      uint16\n\tDma_mword      uint16\n\tEide_pio_modes uint16\n\tEide_dma_min   uint16\n\tEide_dma_time  uint16\n\tEide_pio       uint16\n\tEide_pio_iordy uint16\n\tWords69_70     [2]uint16\n\tWords71_74     [4]uint16\n\tQueue_depth    uint16\n\tWords76_79     [4]uint16\n\tMajor_rev_num  uint16\n\tMinor_rev_num  uint16\n\tCommand_set_1  uint16\n\tCommand_set_2  uint16\n\tCfsse          uint16\n\tCfs_enable_1   uint16\n\tCfs_enable_2   uint16\n\tCsf_default    uint16\n\tDma_ultra      uint16\n\tTrseuc         uint16\n\tTrsEuc         uint16\n\tCurAPMvalues   uint16\n\tMprc           uint16\n\tHw_config      uint16\n\tAcoustic       uint16\n\tMsrqs          uint16\n\tSxfert         uint16\n\tSal            uint16\n\tSpg            uint32\n\tLba_capacity_2 uint64\n\tWords104_125   [22]uint16\n\tLast_lun       uint16\n\tWord127        uint16\n\tDlf            uint16\n\tCsfo           uint16\n\tWords130_155   [26]uint16\n\tWord156        uint16\n\tWords157_159   [3]uint16\n\tCfa_power      uint16\n\tWords161_175   [15]uint16\n\tWords176_205   [30]uint16\n\tWords206_254   [49]uint16\n\tIntegrity_word uint16\n}\n\nconst (\n\tST_MANDLOCK    = 0x40\n\tST_NOATIME     = 0x400\n\tST_NODEV       = 0x4\n\tST_NODIRATIME  = 0x800\n\tST_NOEXEC      = 0x8\n\tST_NOSUID      = 0x2\n\tST_RDONLY      = 0x1\n\tST_RELATIME    = 0x1000\n\tST_SYNCHRONOUS = 0x10\n)\n\ntype Tpacket2Hdr struct {\n\tStatus    uint32\n\tLen       uint32\n\tSnaplen   uint32\n\tMac       uint16\n\tNet       uint16\n\tSec       uint32\n\tNsec      uint32\n\tVlan_tci  uint16\n\tVlan_tpid uint16\n\t_         [4]uint8\n}\n\ntype Tpacket3Hdr struct {\n\tNext_offset uint32\n\tSec         uint32\n\tNsec        uint32\n\tSnaplen     uint32\n\tLen         uint32\n\tStatus      uint32\n\tMac         uint16\n\tNet         uint16\n\tHv1         TpacketHdrVariant1\n\t_           [8]uint8\n}\n\ntype TpacketHdrVariant1 struct {\n\tRxhash    uint32\n\tVlan_tci  uint32\n\tVlan_tpid uint16\n\t_         uint16\n}\n\ntype TpacketBlockDesc struct {\n\tVersion uint32\n\tTo_priv uint32\n\tHdr     [40]byte\n}\n\ntype TpacketBDTS struct {\n\tSec  uint32\n\tUsec uint32\n}\n\ntype TpacketHdrV1 struct {\n\tBlock_status        uint32\n\tNum_pkts            uint32\n\tOffset_to_first_pkt uint32\n\tBlk_len             uint32\n\tSeq_num             uint64\n\tTs_first_pkt        TpacketBDTS\n\tTs_last_pkt         TpacketBDTS\n}\n\ntype TpacketReq struct {\n\tBlock_size uint32\n\tBlock_nr   uint32\n\tFrame_size uint32\n\tFrame_nr   uint32\n}\n\ntype TpacketReq3 struct {\n\tBlock_size       uint32\n\tBlock_nr         uint32\n\tFrame_size       uint32\n\tFrame_nr         uint32\n\tRetire_blk_tov   uint32\n\tSizeof_priv      uint32\n\tFeature_req_word uint32\n}\n\ntype TpacketStats struct {\n\tPackets uint32\n\tDrops   uint32\n}\n\ntype TpacketStatsV3 struct {\n\tPackets      uint32\n\tDrops        uint32\n\tFreeze_q_cnt uint32\n}\n\ntype TpacketAuxdata struct {\n\tStatus    uint32\n\tLen       uint32\n\tSnaplen   uint32\n\tMac       uint16\n\tNet       uint16\n\tVlan_tci  uint16\n\tVlan_tpid uint16\n}\n\nconst (\n\tTPACKET_V1 = 0x0\n\tTPACKET_V2 = 0x1\n\tTPACKET_V3 = 0x2\n)\n\nconst (\n\tSizeofTpacket2Hdr = 0x20\n\tSizeofTpacket3Hdr = 0x30\n\n\tSizeofTpacketStats   = 0x8\n\tSizeofTpacketStatsV3 = 0xc\n)\n\nconst (\n\tIFLA_UNSPEC                                = 0x0\n\tIFLA_ADDRESS                               = 0x1\n\tIFLA_BROADCAST                             = 0x2\n\tIFLA_IFNAME                                = 0x3\n\tIFLA_MTU                                   = 0x4\n\tIFLA_LINK                                  = 0x5\n\tIFLA_QDISC                                 = 0x6\n\tIFLA_STATS                                 = 0x7\n\tIFLA_COST                                  = 0x8\n\tIFLA_PRIORITY                              = 0x9\n\tIFLA_MASTER                                = 0xa\n\tIFLA_WIRELESS                              = 0xb\n\tIFLA_PROTINFO                              = 0xc\n\tIFLA_TXQLEN                                = 0xd\n\tIFLA_MAP                                   = 0xe\n\tIFLA_WEIGHT                                = 0xf\n\tIFLA_OPERSTATE                             = 0x10\n\tIFLA_LINKMODE                              = 0x11\n\tIFLA_LINKINFO                              = 0x12\n\tIFLA_NET_NS_PID                            = 0x13\n\tIFLA_IFALIAS                               = 0x14\n\tIFLA_NUM_VF                                = 0x15\n\tIFLA_VFINFO_LIST                           = 0x16\n\tIFLA_STATS64                               = 0x17\n\tIFLA_VF_PORTS                              = 0x18\n\tIFLA_PORT_SELF                             = 0x19\n\tIFLA_AF_SPEC                               = 0x1a\n\tIFLA_GROUP                                 = 0x1b\n\tIFLA_NET_NS_FD                             = 0x1c\n\tIFLA_EXT_MASK                              = 0x1d\n\tIFLA_PROMISCUITY                           = 0x1e\n\tIFLA_NUM_TX_QUEUES                         = 0x1f\n\tIFLA_NUM_RX_QUEUES                         = 0x20\n\tIFLA_CARRIER                               = 0x21\n\tIFLA_PHYS_PORT_ID                          = 0x22\n\tIFLA_CARRIER_CHANGES                       = 0x23\n\tIFLA_PHYS_SWITCH_ID                        = 0x24\n\tIFLA_LINK_NETNSID                          = 0x25\n\tIFLA_PHYS_PORT_NAME                        = 0x26\n\tIFLA_PROTO_DOWN                            = 0x27\n\tIFLA_GSO_MAX_SEGS                          = 0x28\n\tIFLA_GSO_MAX_SIZE                          = 0x29\n\tIFLA_PAD                                   = 0x2a\n\tIFLA_XDP                                   = 0x2b\n\tIFLA_EVENT                                 = 0x2c\n\tIFLA_NEW_NETNSID                           = 0x2d\n\tIFLA_IF_NETNSID                            = 0x2e\n\tIFLA_TARGET_NETNSID                        = 0x2e\n\tIFLA_CARRIER_UP_COUNT                      = 0x2f\n\tIFLA_CARRIER_DOWN_COUNT                    = 0x30\n\tIFLA_NEW_IFINDEX                           = 0x31\n\tIFLA_MIN_MTU                               = 0x32\n\tIFLA_MAX_MTU                               = 0x33\n\tIFLA_PROP_LIST                             = 0x34\n\tIFLA_ALT_IFNAME                            = 0x35\n\tIFLA_PERM_ADDRESS                          = 0x36\n\tIFLA_PROTO_DOWN_REASON                     = 0x37\n\tIFLA_PARENT_DEV_NAME                       = 0x38\n\tIFLA_PARENT_DEV_BUS_NAME                   = 0x39\n\tIFLA_GRO_MAX_SIZE                          = 0x3a\n\tIFLA_TSO_MAX_SIZE                          = 0x3b\n\tIFLA_TSO_MAX_SEGS                          = 0x3c\n\tIFLA_ALLMULTI                              = 0x3d\n\tIFLA_DEVLINK_PORT                          = 0x3e\n\tIFLA_GSO_IPV4_MAX_SIZE                     = 0x3f\n\tIFLA_GRO_IPV4_MAX_SIZE                     = 0x40\n\tIFLA_DPLL_PIN                              = 0x41\n\tIFLA_PROTO_DOWN_REASON_UNSPEC              = 0x0\n\tIFLA_PROTO_DOWN_REASON_MASK                = 0x1\n\tIFLA_PROTO_DOWN_REASON_VALUE               = 0x2\n\tIFLA_PROTO_DOWN_REASON_MAX                 = 0x2\n\tIFLA_INET_UNSPEC                           = 0x0\n\tIFLA_INET_CONF                             = 0x1\n\tIFLA_INET6_UNSPEC                          = 0x0\n\tIFLA_INET6_FLAGS                           = 0x1\n\tIFLA_INET6_CONF                            = 0x2\n\tIFLA_INET6_STATS                           = 0x3\n\tIFLA_INET6_MCAST                           = 0x4\n\tIFLA_INET6_CACHEINFO                       = 0x5\n\tIFLA_INET6_ICMP6STATS                      = 0x6\n\tIFLA_INET6_TOKEN                           = 0x7\n\tIFLA_INET6_ADDR_GEN_MODE                   = 0x8\n\tIFLA_INET6_RA_MTU                          = 0x9\n\tIFLA_BR_UNSPEC                             = 0x0\n\tIFLA_BR_FORWARD_DELAY                      = 0x1\n\tIFLA_BR_HELLO_TIME                         = 0x2\n\tIFLA_BR_MAX_AGE                            = 0x3\n\tIFLA_BR_AGEING_TIME                        = 0x4\n\tIFLA_BR_STP_STATE                          = 0x5\n\tIFLA_BR_PRIORITY                           = 0x6\n\tIFLA_BR_VLAN_FILTERING                     = 0x7\n\tIFLA_BR_VLAN_PROTOCOL                      = 0x8\n\tIFLA_BR_GROUP_FWD_MASK                     = 0x9\n\tIFLA_BR_ROOT_ID                            = 0xa\n\tIFLA_BR_BRIDGE_ID                          = 0xb\n\tIFLA_BR_ROOT_PORT                          = 0xc\n\tIFLA_BR_ROOT_PATH_COST                     = 0xd\n\tIFLA_BR_TOPOLOGY_CHANGE                    = 0xe\n\tIFLA_BR_TOPOLOGY_CHANGE_DETECTED           = 0xf\n\tIFLA_BR_HELLO_TIMER                        = 0x10\n\tIFLA_BR_TCN_TIMER                          = 0x11\n\tIFLA_BR_TOPOLOGY_CHANGE_TIMER              = 0x12\n\tIFLA_BR_GC_TIMER                           = 0x13\n\tIFLA_BR_GROUP_ADDR                         = 0x14\n\tIFLA_BR_FDB_FLUSH                          = 0x15\n\tIFLA_BR_MCAST_ROUTER                       = 0x16\n\tIFLA_BR_MCAST_SNOOPING                     = 0x17\n\tIFLA_BR_MCAST_QUERY_USE_IFADDR             = 0x18\n\tIFLA_BR_MCAST_QUERIER                      = 0x19\n\tIFLA_BR_MCAST_HASH_ELASTICITY              = 0x1a\n\tIFLA_BR_MCAST_HASH_MAX                     = 0x1b\n\tIFLA_BR_MCAST_LAST_MEMBER_CNT              = 0x1c\n\tIFLA_BR_MCAST_STARTUP_QUERY_CNT            = 0x1d\n\tIFLA_BR_MCAST_LAST_MEMBER_INTVL            = 0x1e\n\tIFLA_BR_MCAST_MEMBERSHIP_INTVL             = 0x1f\n\tIFLA_BR_MCAST_QUERIER_INTVL                = 0x20\n\tIFLA_BR_MCAST_QUERY_INTVL                  = 0x21\n\tIFLA_BR_MCAST_QUERY_RESPONSE_INTVL         = 0x22\n\tIFLA_BR_MCAST_STARTUP_QUERY_INTVL          = 0x23\n\tIFLA_BR_NF_CALL_IPTABLES                   = 0x24\n\tIFLA_BR_NF_CALL_IP6TABLES                  = 0x25\n\tIFLA_BR_NF_CALL_ARPTABLES                  = 0x26\n\tIFLA_BR_VLAN_DEFAULT_PVID                  = 0x27\n\tIFLA_BR_PAD                                = 0x28\n\tIFLA_BR_VLAN_STATS_ENABLED                 = 0x29\n\tIFLA_BR_MCAST_STATS_ENABLED                = 0x2a\n\tIFLA_BR_MCAST_IGMP_VERSION                 = 0x2b\n\tIFLA_BR_MCAST_MLD_VERSION                  = 0x2c\n\tIFLA_BR_VLAN_STATS_PER_PORT                = 0x2d\n\tIFLA_BR_MULTI_BOOLOPT                      = 0x2e\n\tIFLA_BR_MCAST_QUERIER_STATE                = 0x2f\n\tIFLA_BR_FDB_N_LEARNED                      = 0x30\n\tIFLA_BR_FDB_MAX_LEARNED                    = 0x31\n\tIFLA_BRPORT_UNSPEC                         = 0x0\n\tIFLA_BRPORT_STATE                          = 0x1\n\tIFLA_BRPORT_PRIORITY                       = 0x2\n\tIFLA_BRPORT_COST                           = 0x3\n\tIFLA_BRPORT_MODE                           = 0x4\n\tIFLA_BRPORT_GUARD                          = 0x5\n\tIFLA_BRPORT_PROTECT                        = 0x6\n\tIFLA_BRPORT_FAST_LEAVE                     = 0x7\n\tIFLA_BRPORT_LEARNING                       = 0x8\n\tIFLA_BRPORT_UNICAST_FLOOD                  = 0x9\n\tIFLA_BRPORT_PROXYARP                       = 0xa\n\tIFLA_BRPORT_LEARNING_SYNC                  = 0xb\n\tIFLA_BRPORT_PROXYARP_WIFI                  = 0xc\n\tIFLA_BRPORT_ROOT_ID                        = 0xd\n\tIFLA_BRPORT_BRIDGE_ID                      = 0xe\n\tIFLA_BRPORT_DESIGNATED_PORT                = 0xf\n\tIFLA_BRPORT_DESIGNATED_COST                = 0x10\n\tIFLA_BRPORT_ID                             = 0x11\n\tIFLA_BRPORT_NO                             = 0x12\n\tIFLA_BRPORT_TOPOLOGY_CHANGE_ACK            = 0x13\n\tIFLA_BRPORT_CONFIG_PENDING                 = 0x14\n\tIFLA_BRPORT_MESSAGE_AGE_TIMER              = 0x15\n\tIFLA_BRPORT_FORWARD_DELAY_TIMER            = 0x16\n\tIFLA_BRPORT_HOLD_TIMER                     = 0x17\n\tIFLA_BRPORT_FLUSH                          = 0x18\n\tIFLA_BRPORT_MULTICAST_ROUTER               = 0x19\n\tIFLA_BRPORT_PAD                            = 0x1a\n\tIFLA_BRPORT_MCAST_FLOOD                    = 0x1b\n\tIFLA_BRPORT_MCAST_TO_UCAST                 = 0x1c\n\tIFLA_BRPORT_VLAN_TUNNEL                    = 0x1d\n\tIFLA_BRPORT_BCAST_FLOOD                    = 0x1e\n\tIFLA_BRPORT_GROUP_FWD_MASK                 = 0x1f\n\tIFLA_BRPORT_NEIGH_SUPPRESS                 = 0x20\n\tIFLA_BRPORT_ISOLATED                       = 0x21\n\tIFLA_BRPORT_BACKUP_PORT                    = 0x22\n\tIFLA_BRPORT_MRP_RING_OPEN                  = 0x23\n\tIFLA_BRPORT_MRP_IN_OPEN                    = 0x24\n\tIFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT          = 0x25\n\tIFLA_BRPORT_MCAST_EHT_HOSTS_CNT            = 0x26\n\tIFLA_BRPORT_LOCKED                         = 0x27\n\tIFLA_BRPORT_MAB                            = 0x28\n\tIFLA_BRPORT_MCAST_N_GROUPS                 = 0x29\n\tIFLA_BRPORT_MCAST_MAX_GROUPS               = 0x2a\n\tIFLA_BRPORT_NEIGH_VLAN_SUPPRESS            = 0x2b\n\tIFLA_BRPORT_BACKUP_NHID                    = 0x2c\n\tIFLA_INFO_UNSPEC                           = 0x0\n\tIFLA_INFO_KIND                             = 0x1\n\tIFLA_INFO_DATA                             = 0x2\n\tIFLA_INFO_XSTATS                           = 0x3\n\tIFLA_INFO_SLAVE_KIND                       = 0x4\n\tIFLA_INFO_SLAVE_DATA                       = 0x5\n\tIFLA_VLAN_UNSPEC                           = 0x0\n\tIFLA_VLAN_ID                               = 0x1\n\tIFLA_VLAN_FLAGS                            = 0x2\n\tIFLA_VLAN_EGRESS_QOS                       = 0x3\n\tIFLA_VLAN_INGRESS_QOS                      = 0x4\n\tIFLA_VLAN_PROTOCOL                         = 0x5\n\tIFLA_VLAN_QOS_UNSPEC                       = 0x0\n\tIFLA_VLAN_QOS_MAPPING                      = 0x1\n\tIFLA_MACVLAN_UNSPEC                        = 0x0\n\tIFLA_MACVLAN_MODE                          = 0x1\n\tIFLA_MACVLAN_FLAGS                         = 0x2\n\tIFLA_MACVLAN_MACADDR_MODE                  = 0x3\n\tIFLA_MACVLAN_MACADDR                       = 0x4\n\tIFLA_MACVLAN_MACADDR_DATA                  = 0x5\n\tIFLA_MACVLAN_MACADDR_COUNT                 = 0x6\n\tIFLA_MACVLAN_BC_QUEUE_LEN                  = 0x7\n\tIFLA_MACVLAN_BC_QUEUE_LEN_USED             = 0x8\n\tIFLA_MACVLAN_BC_CUTOFF                     = 0x9\n\tIFLA_VRF_UNSPEC                            = 0x0\n\tIFLA_VRF_TABLE                             = 0x1\n\tIFLA_VRF_PORT_UNSPEC                       = 0x0\n\tIFLA_VRF_PORT_TABLE                        = 0x1\n\tIFLA_MACSEC_UNSPEC                         = 0x0\n\tIFLA_MACSEC_SCI                            = 0x1\n\tIFLA_MACSEC_PORT                           = 0x2\n\tIFLA_MACSEC_ICV_LEN                        = 0x3\n\tIFLA_MACSEC_CIPHER_SUITE                   = 0x4\n\tIFLA_MACSEC_WINDOW                         = 0x5\n\tIFLA_MACSEC_ENCODING_SA                    = 0x6\n\tIFLA_MACSEC_ENCRYPT                        = 0x7\n\tIFLA_MACSEC_PROTECT                        = 0x8\n\tIFLA_MACSEC_INC_SCI                        = 0x9\n\tIFLA_MACSEC_ES                             = 0xa\n\tIFLA_MACSEC_SCB                            = 0xb\n\tIFLA_MACSEC_REPLAY_PROTECT                 = 0xc\n\tIFLA_MACSEC_VALIDATION                     = 0xd\n\tIFLA_MACSEC_PAD                            = 0xe\n\tIFLA_MACSEC_OFFLOAD                        = 0xf\n\tIFLA_XFRM_UNSPEC                           = 0x0\n\tIFLA_XFRM_LINK                             = 0x1\n\tIFLA_XFRM_IF_ID                            = 0x2\n\tIFLA_XFRM_COLLECT_METADATA                 = 0x3\n\tIFLA_IPVLAN_UNSPEC                         = 0x0\n\tIFLA_IPVLAN_MODE                           = 0x1\n\tIFLA_IPVLAN_FLAGS                          = 0x2\n\tIFLA_NETKIT_UNSPEC                         = 0x0\n\tIFLA_NETKIT_PEER_INFO                      = 0x1\n\tIFLA_NETKIT_PRIMARY                        = 0x2\n\tIFLA_NETKIT_POLICY                         = 0x3\n\tIFLA_NETKIT_PEER_POLICY                    = 0x4\n\tIFLA_NETKIT_MODE                           = 0x5\n\tIFLA_VXLAN_UNSPEC                          = 0x0\n\tIFLA_VXLAN_ID                              = 0x1\n\tIFLA_VXLAN_GROUP                           = 0x2\n\tIFLA_VXLAN_LINK                            = 0x3\n\tIFLA_VXLAN_LOCAL                           = 0x4\n\tIFLA_VXLAN_TTL                             = 0x5\n\tIFLA_VXLAN_TOS                             = 0x6\n\tIFLA_VXLAN_LEARNING                        = 0x7\n\tIFLA_VXLAN_AGEING                          = 0x8\n\tIFLA_VXLAN_LIMIT                           = 0x9\n\tIFLA_VXLAN_PORT_RANGE                      = 0xa\n\tIFLA_VXLAN_PROXY                           = 0xb\n\tIFLA_VXLAN_RSC                             = 0xc\n\tIFLA_VXLAN_L2MISS                          = 0xd\n\tIFLA_VXLAN_L3MISS                          = 0xe\n\tIFLA_VXLAN_PORT                            = 0xf\n\tIFLA_VXLAN_GROUP6                          = 0x10\n\tIFLA_VXLAN_LOCAL6                          = 0x11\n\tIFLA_VXLAN_UDP_CSUM                        = 0x12\n\tIFLA_VXLAN_UDP_ZERO_CSUM6_TX               = 0x13\n\tIFLA_VXLAN_UDP_ZERO_CSUM6_RX               = 0x14\n\tIFLA_VXLAN_REMCSUM_TX                      = 0x15\n\tIFLA_VXLAN_REMCSUM_RX                      = 0x16\n\tIFLA_VXLAN_GBP                             = 0x17\n\tIFLA_VXLAN_REMCSUM_NOPARTIAL               = 0x18\n\tIFLA_VXLAN_COLLECT_METADATA                = 0x19\n\tIFLA_VXLAN_LABEL                           = 0x1a\n\tIFLA_VXLAN_GPE                             = 0x1b\n\tIFLA_VXLAN_TTL_INHERIT                     = 0x1c\n\tIFLA_VXLAN_DF                              = 0x1d\n\tIFLA_VXLAN_VNIFILTER                       = 0x1e\n\tIFLA_VXLAN_LOCALBYPASS                     = 0x1f\n\tIFLA_VXLAN_LABEL_POLICY                    = 0x20\n\tIFLA_GENEVE_UNSPEC                         = 0x0\n\tIFLA_GENEVE_ID                             = 0x1\n\tIFLA_GENEVE_REMOTE                         = 0x2\n\tIFLA_GENEVE_TTL                            = 0x3\n\tIFLA_GENEVE_TOS                            = 0x4\n\tIFLA_GENEVE_PORT                           = 0x5\n\tIFLA_GENEVE_COLLECT_METADATA               = 0x6\n\tIFLA_GENEVE_REMOTE6                        = 0x7\n\tIFLA_GENEVE_UDP_CSUM                       = 0x8\n\tIFLA_GENEVE_UDP_ZERO_CSUM6_TX              = 0x9\n\tIFLA_GENEVE_UDP_ZERO_CSUM6_RX              = 0xa\n\tIFLA_GENEVE_LABEL                          = 0xb\n\tIFLA_GENEVE_TTL_INHERIT                    = 0xc\n\tIFLA_GENEVE_DF                             = 0xd\n\tIFLA_GENEVE_INNER_PROTO_INHERIT            = 0xe\n\tIFLA_BAREUDP_UNSPEC                        = 0x0\n\tIFLA_BAREUDP_PORT                          = 0x1\n\tIFLA_BAREUDP_ETHERTYPE                     = 0x2\n\tIFLA_BAREUDP_SRCPORT_MIN                   = 0x3\n\tIFLA_BAREUDP_MULTIPROTO_MODE               = 0x4\n\tIFLA_PPP_UNSPEC                            = 0x0\n\tIFLA_PPP_DEV_FD                            = 0x1\n\tIFLA_GTP_UNSPEC                            = 0x0\n\tIFLA_GTP_FD0                               = 0x1\n\tIFLA_GTP_FD1                               = 0x2\n\tIFLA_GTP_PDP_HASHSIZE                      = 0x3\n\tIFLA_GTP_ROLE                              = 0x4\n\tIFLA_GTP_CREATE_SOCKETS                    = 0x5\n\tIFLA_GTP_RESTART_COUNT                     = 0x6\n\tIFLA_GTP_LOCAL                             = 0x7\n\tIFLA_GTP_LOCAL6                            = 0x8\n\tIFLA_BOND_UNSPEC                           = 0x0\n\tIFLA_BOND_MODE                             = 0x1\n\tIFLA_BOND_ACTIVE_SLAVE                     = 0x2\n\tIFLA_BOND_MIIMON                           = 0x3\n\tIFLA_BOND_UPDELAY                          = 0x4\n\tIFLA_BOND_DOWNDELAY                        = 0x5\n\tIFLA_BOND_USE_CARRIER                      = 0x6\n\tIFLA_BOND_ARP_INTERVAL                     = 0x7\n\tIFLA_BOND_ARP_IP_TARGET                    = 0x8\n\tIFLA_BOND_ARP_VALIDATE                     = 0x9\n\tIFLA_BOND_ARP_ALL_TARGETS                  = 0xa\n\tIFLA_BOND_PRIMARY                          = 0xb\n\tIFLA_BOND_PRIMARY_RESELECT                 = 0xc\n\tIFLA_BOND_FAIL_OVER_MAC                    = 0xd\n\tIFLA_BOND_XMIT_HASH_POLICY                 = 0xe\n\tIFLA_BOND_RESEND_IGMP                      = 0xf\n\tIFLA_BOND_NUM_PEER_NOTIF                   = 0x10\n\tIFLA_BOND_ALL_SLAVES_ACTIVE                = 0x11\n\tIFLA_BOND_MIN_LINKS                        = 0x12\n\tIFLA_BOND_LP_INTERVAL                      = 0x13\n\tIFLA_BOND_PACKETS_PER_SLAVE                = 0x14\n\tIFLA_BOND_AD_LACP_RATE                     = 0x15\n\tIFLA_BOND_AD_SELECT                        = 0x16\n\tIFLA_BOND_AD_INFO                          = 0x17\n\tIFLA_BOND_AD_ACTOR_SYS_PRIO                = 0x18\n\tIFLA_BOND_AD_USER_PORT_KEY                 = 0x19\n\tIFLA_BOND_AD_ACTOR_SYSTEM                  = 0x1a\n\tIFLA_BOND_TLB_DYNAMIC_LB                   = 0x1b\n\tIFLA_BOND_PEER_NOTIF_DELAY                 = 0x1c\n\tIFLA_BOND_AD_LACP_ACTIVE                   = 0x1d\n\tIFLA_BOND_MISSED_MAX                       = 0x1e\n\tIFLA_BOND_NS_IP6_TARGET                    = 0x1f\n\tIFLA_BOND_COUPLED_CONTROL                  = 0x20\n\tIFLA_BOND_AD_INFO_UNSPEC                   = 0x0\n\tIFLA_BOND_AD_INFO_AGGREGATOR               = 0x1\n\tIFLA_BOND_AD_INFO_NUM_PORTS                = 0x2\n\tIFLA_BOND_AD_INFO_ACTOR_KEY                = 0x3\n\tIFLA_BOND_AD_INFO_PARTNER_KEY              = 0x4\n\tIFLA_BOND_AD_INFO_PARTNER_MAC              = 0x5\n\tIFLA_BOND_SLAVE_UNSPEC                     = 0x0\n\tIFLA_BOND_SLAVE_STATE                      = 0x1\n\tIFLA_BOND_SLAVE_MII_STATUS                 = 0x2\n\tIFLA_BOND_SLAVE_LINK_FAILURE_COUNT         = 0x3\n\tIFLA_BOND_SLAVE_PERM_HWADDR                = 0x4\n\tIFLA_BOND_SLAVE_QUEUE_ID                   = 0x5\n\tIFLA_BOND_SLAVE_AD_AGGREGATOR_ID           = 0x6\n\tIFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE   = 0x7\n\tIFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE = 0x8\n\tIFLA_BOND_SLAVE_PRIO                       = 0x9\n\tIFLA_VF_INFO_UNSPEC                        = 0x0\n\tIFLA_VF_INFO                               = 0x1\n\tIFLA_VF_UNSPEC                             = 0x0\n\tIFLA_VF_MAC                                = 0x1\n\tIFLA_VF_VLAN                               = 0x2\n\tIFLA_VF_TX_RATE                            = 0x3\n\tIFLA_VF_SPOOFCHK                           = 0x4\n\tIFLA_VF_LINK_STATE                         = 0x5\n\tIFLA_VF_RATE                               = 0x6\n\tIFLA_VF_RSS_QUERY_EN                       = 0x7\n\tIFLA_VF_STATS                              = 0x8\n\tIFLA_VF_TRUST                              = 0x9\n\tIFLA_VF_IB_NODE_GUID                       = 0xa\n\tIFLA_VF_IB_PORT_GUID                       = 0xb\n\tIFLA_VF_VLAN_LIST                          = 0xc\n\tIFLA_VF_BROADCAST                          = 0xd\n\tIFLA_VF_VLAN_INFO_UNSPEC                   = 0x0\n\tIFLA_VF_VLAN_INFO                          = 0x1\n\tIFLA_VF_LINK_STATE_AUTO                    = 0x0\n\tIFLA_VF_LINK_STATE_ENABLE                  = 0x1\n\tIFLA_VF_LINK_STATE_DISABLE                 = 0x2\n\tIFLA_VF_STATS_RX_PACKETS                   = 0x0\n\tIFLA_VF_STATS_TX_PACKETS                   = 0x1\n\tIFLA_VF_STATS_RX_BYTES                     = 0x2\n\tIFLA_VF_STATS_TX_BYTES                     = 0x3\n\tIFLA_VF_STATS_BROADCAST                    = 0x4\n\tIFLA_VF_STATS_MULTICAST                    = 0x5\n\tIFLA_VF_STATS_PAD                          = 0x6\n\tIFLA_VF_STATS_RX_DROPPED                   = 0x7\n\tIFLA_VF_STATS_TX_DROPPED                   = 0x8\n\tIFLA_VF_PORT_UNSPEC                        = 0x0\n\tIFLA_VF_PORT                               = 0x1\n\tIFLA_PORT_UNSPEC                           = 0x0\n\tIFLA_PORT_VF                               = 0x1\n\tIFLA_PORT_PROFILE                          = 0x2\n\tIFLA_PORT_VSI_TYPE                         = 0x3\n\tIFLA_PORT_INSTANCE_UUID                    = 0x4\n\tIFLA_PORT_HOST_UUID                        = 0x5\n\tIFLA_PORT_REQUEST                          = 0x6\n\tIFLA_PORT_RESPONSE                         = 0x7\n\tIFLA_IPOIB_UNSPEC                          = 0x0\n\tIFLA_IPOIB_PKEY                            = 0x1\n\tIFLA_IPOIB_MODE                            = 0x2\n\tIFLA_IPOIB_UMCAST                          = 0x3\n\tIFLA_HSR_UNSPEC                            = 0x0\n\tIFLA_HSR_SLAVE1                            = 0x1\n\tIFLA_HSR_SLAVE2                            = 0x2\n\tIFLA_HSR_MULTICAST_SPEC                    = 0x3\n\tIFLA_HSR_SUPERVISION_ADDR                  = 0x4\n\tIFLA_HSR_SEQ_NR                            = 0x5\n\tIFLA_HSR_VERSION                           = 0x6\n\tIFLA_HSR_PROTOCOL                          = 0x7\n\tIFLA_HSR_INTERLINK                         = 0x8\n\tIFLA_STATS_UNSPEC                          = 0x0\n\tIFLA_STATS_LINK_64                         = 0x1\n\tIFLA_STATS_LINK_XSTATS                     = 0x2\n\tIFLA_STATS_LINK_XSTATS_SLAVE               = 0x3\n\tIFLA_STATS_LINK_OFFLOAD_XSTATS             = 0x4\n\tIFLA_STATS_AF_SPEC                         = 0x5\n\tIFLA_STATS_GETSET_UNSPEC                   = 0x0\n\tIFLA_STATS_GET_FILTERS                     = 0x1\n\tIFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS     = 0x2\n\tIFLA_OFFLOAD_XSTATS_UNSPEC                 = 0x0\n\tIFLA_OFFLOAD_XSTATS_CPU_HIT                = 0x1\n\tIFLA_OFFLOAD_XSTATS_HW_S_INFO              = 0x2\n\tIFLA_OFFLOAD_XSTATS_L3_STATS               = 0x3\n\tIFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC       = 0x0\n\tIFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST      = 0x1\n\tIFLA_OFFLOAD_XSTATS_HW_S_INFO_USED         = 0x2\n\tIFLA_XDP_UNSPEC                            = 0x0\n\tIFLA_XDP_FD                                = 0x1\n\tIFLA_XDP_ATTACHED                          = 0x2\n\tIFLA_XDP_FLAGS                             = 0x3\n\tIFLA_XDP_PROG_ID                           = 0x4\n\tIFLA_XDP_DRV_PROG_ID                       = 0x5\n\tIFLA_XDP_SKB_PROG_ID                       = 0x6\n\tIFLA_XDP_HW_PROG_ID                        = 0x7\n\tIFLA_XDP_EXPECTED_FD                       = 0x8\n\tIFLA_EVENT_NONE                            = 0x0\n\tIFLA_EVENT_REBOOT                          = 0x1\n\tIFLA_EVENT_FEATURES                        = 0x2\n\tIFLA_EVENT_BONDING_FAILOVER                = 0x3\n\tIFLA_EVENT_NOTIFY_PEERS                    = 0x4\n\tIFLA_EVENT_IGMP_RESEND                     = 0x5\n\tIFLA_EVENT_BONDING_OPTIONS                 = 0x6\n\tIFLA_TUN_UNSPEC                            = 0x0\n\tIFLA_TUN_OWNER                             = 0x1\n\tIFLA_TUN_GROUP                             = 0x2\n\tIFLA_TUN_TYPE                              = 0x3\n\tIFLA_TUN_PI                                = 0x4\n\tIFLA_TUN_VNET_HDR                          = 0x5\n\tIFLA_TUN_PERSIST                           = 0x6\n\tIFLA_TUN_MULTI_QUEUE                       = 0x7\n\tIFLA_TUN_NUM_QUEUES                        = 0x8\n\tIFLA_TUN_NUM_DISABLED_QUEUES               = 0x9\n\tIFLA_RMNET_UNSPEC                          = 0x0\n\tIFLA_RMNET_MUX_ID                          = 0x1\n\tIFLA_RMNET_FLAGS                           = 0x2\n\tIFLA_MCTP_UNSPEC                           = 0x0\n\tIFLA_MCTP_NET                              = 0x1\n\tIFLA_DSA_UNSPEC                            = 0x0\n\tIFLA_DSA_CONDUIT                           = 0x1\n\tIFLA_DSA_MASTER                            = 0x1\n)\n\nconst (\n\tNETKIT_NEXT     = -0x1\n\tNETKIT_PASS     = 0x0\n\tNETKIT_DROP     = 0x2\n\tNETKIT_REDIRECT = 0x7\n\tNETKIT_L2       = 0x0\n\tNETKIT_L3       = 0x1\n)\n\nconst (\n\tNF_INET_PRE_ROUTING  = 0x0\n\tNF_INET_LOCAL_IN     = 0x1\n\tNF_INET_FORWARD      = 0x2\n\tNF_INET_LOCAL_OUT    = 0x3\n\tNF_INET_POST_ROUTING = 0x4\n\tNF_INET_NUMHOOKS     = 0x5\n)\n\nconst (\n\tNF_NETDEV_INGRESS  = 0x0\n\tNF_NETDEV_EGRESS   = 0x1\n\tNF_NETDEV_NUMHOOKS = 0x2\n)\n\nconst (\n\tNFPROTO_UNSPEC   = 0x0\n\tNFPROTO_INET     = 0x1\n\tNFPROTO_IPV4     = 0x2\n\tNFPROTO_ARP      = 0x3\n\tNFPROTO_NETDEV   = 0x5\n\tNFPROTO_BRIDGE   = 0x7\n\tNFPROTO_IPV6     = 0xa\n\tNFPROTO_DECNET   = 0xc\n\tNFPROTO_NUMPROTO = 0xd\n)\n\nconst SO_ORIGINAL_DST = 0x50\n\ntype Nfgenmsg struct {\n\tNfgen_family uint8\n\tVersion      uint8\n\tRes_id       uint16\n}\n\nconst (\n\tNFNL_BATCH_UNSPEC = 0x0\n\tNFNL_BATCH_GENID  = 0x1\n)\n\nconst (\n\tNFT_REG_VERDICT                   = 0x0\n\tNFT_REG_1                         = 0x1\n\tNFT_REG_2                         = 0x2\n\tNFT_REG_3                         = 0x3\n\tNFT_REG_4                         = 0x4\n\tNFT_REG32_00                      = 0x8\n\tNFT_REG32_01                      = 0x9\n\tNFT_REG32_02                      = 0xa\n\tNFT_REG32_03                      = 0xb\n\tNFT_REG32_04                      = 0xc\n\tNFT_REG32_05                      = 0xd\n\tNFT_REG32_06                      = 0xe\n\tNFT_REG32_07                      = 0xf\n\tNFT_REG32_08                      = 0x10\n\tNFT_REG32_09                      = 0x11\n\tNFT_REG32_10                      = 0x12\n\tNFT_REG32_11                      = 0x13\n\tNFT_REG32_12                      = 0x14\n\tNFT_REG32_13                      = 0x15\n\tNFT_REG32_14                      = 0x16\n\tNFT_REG32_15                      = 0x17\n\tNFT_CONTINUE                      = -0x1\n\tNFT_BREAK                         = -0x2\n\tNFT_JUMP                          = -0x3\n\tNFT_GOTO                          = -0x4\n\tNFT_RETURN                        = -0x5\n\tNFT_MSG_NEWTABLE                  = 0x0\n\tNFT_MSG_GETTABLE                  = 0x1\n\tNFT_MSG_DELTABLE                  = 0x2\n\tNFT_MSG_NEWCHAIN                  = 0x3\n\tNFT_MSG_GETCHAIN                  = 0x4\n\tNFT_MSG_DELCHAIN                  = 0x5\n\tNFT_MSG_NEWRULE                   = 0x6\n\tNFT_MSG_GETRULE                   = 0x7\n\tNFT_MSG_DELRULE                   = 0x8\n\tNFT_MSG_NEWSET                    = 0x9\n\tNFT_MSG_GETSET                    = 0xa\n\tNFT_MSG_DELSET                    = 0xb\n\tNFT_MSG_NEWSETELEM                = 0xc\n\tNFT_MSG_GETSETELEM                = 0xd\n\tNFT_MSG_DELSETELEM                = 0xe\n\tNFT_MSG_NEWGEN                    = 0xf\n\tNFT_MSG_GETGEN                    = 0x10\n\tNFT_MSG_TRACE                     = 0x11\n\tNFT_MSG_NEWOBJ                    = 0x12\n\tNFT_MSG_GETOBJ                    = 0x13\n\tNFT_MSG_DELOBJ                    = 0x14\n\tNFT_MSG_GETOBJ_RESET              = 0x15\n\tNFT_MSG_NEWFLOWTABLE              = 0x16\n\tNFT_MSG_GETFLOWTABLE              = 0x17\n\tNFT_MSG_DELFLOWTABLE              = 0x18\n\tNFT_MSG_GETRULE_RESET             = 0x19\n\tNFT_MSG_MAX                       = 0x22\n\tNFTA_LIST_UNSPEC                  = 0x0\n\tNFTA_LIST_ELEM                    = 0x1\n\tNFTA_HOOK_UNSPEC                  = 0x0\n\tNFTA_HOOK_HOOKNUM                 = 0x1\n\tNFTA_HOOK_PRIORITY                = 0x2\n\tNFTA_HOOK_DEV                     = 0x3\n\tNFT_TABLE_F_DORMANT               = 0x1\n\tNFTA_TABLE_UNSPEC                 = 0x0\n\tNFTA_TABLE_NAME                   = 0x1\n\tNFTA_TABLE_FLAGS                  = 0x2\n\tNFTA_TABLE_USE                    = 0x3\n\tNFTA_CHAIN_UNSPEC                 = 0x0\n\tNFTA_CHAIN_TABLE                  = 0x1\n\tNFTA_CHAIN_HANDLE                 = 0x2\n\tNFTA_CHAIN_NAME                   = 0x3\n\tNFTA_CHAIN_HOOK                   = 0x4\n\tNFTA_CHAIN_POLICY                 = 0x5\n\tNFTA_CHAIN_USE                    = 0x6\n\tNFTA_CHAIN_TYPE                   = 0x7\n\tNFTA_CHAIN_COUNTERS               = 0x8\n\tNFTA_CHAIN_PAD                    = 0x9\n\tNFTA_RULE_UNSPEC                  = 0x0\n\tNFTA_RULE_TABLE                   = 0x1\n\tNFTA_RULE_CHAIN                   = 0x2\n\tNFTA_RULE_HANDLE                  = 0x3\n\tNFTA_RULE_EXPRESSIONS             = 0x4\n\tNFTA_RULE_COMPAT                  = 0x5\n\tNFTA_RULE_POSITION                = 0x6\n\tNFTA_RULE_USERDATA                = 0x7\n\tNFTA_RULE_PAD                     = 0x8\n\tNFTA_RULE_ID                      = 0x9\n\tNFT_RULE_COMPAT_F_INV             = 0x2\n\tNFT_RULE_COMPAT_F_MASK            = 0x2\n\tNFTA_RULE_COMPAT_UNSPEC           = 0x0\n\tNFTA_RULE_COMPAT_PROTO            = 0x1\n\tNFTA_RULE_COMPAT_FLAGS            = 0x2\n\tNFT_SET_ANONYMOUS                 = 0x1\n\tNFT_SET_CONSTANT                  = 0x2\n\tNFT_SET_INTERVAL                  = 0x4\n\tNFT_SET_MAP                       = 0x8\n\tNFT_SET_TIMEOUT                   = 0x10\n\tNFT_SET_EVAL                      = 0x20\n\tNFT_SET_OBJECT                    = 0x40\n\tNFT_SET_POL_PERFORMANCE           = 0x0\n\tNFT_SET_POL_MEMORY                = 0x1\n\tNFTA_SET_DESC_UNSPEC              = 0x0\n\tNFTA_SET_DESC_SIZE                = 0x1\n\tNFTA_SET_UNSPEC                   = 0x0\n\tNFTA_SET_TABLE                    = 0x1\n\tNFTA_SET_NAME                     = 0x2\n\tNFTA_SET_FLAGS                    = 0x3\n\tNFTA_SET_KEY_TYPE                 = 0x4\n\tNFTA_SET_KEY_LEN                  = 0x5\n\tNFTA_SET_DATA_TYPE                = 0x6\n\tNFTA_SET_DATA_LEN                 = 0x7\n\tNFTA_SET_POLICY                   = 0x8\n\tNFTA_SET_DESC                     = 0x9\n\tNFTA_SET_ID                       = 0xa\n\tNFTA_SET_TIMEOUT                  = 0xb\n\tNFTA_SET_GC_INTERVAL              = 0xc\n\tNFTA_SET_USERDATA                 = 0xd\n\tNFTA_SET_PAD                      = 0xe\n\tNFTA_SET_OBJ_TYPE                 = 0xf\n\tNFT_SET_ELEM_INTERVAL_END         = 0x1\n\tNFTA_SET_ELEM_UNSPEC              = 0x0\n\tNFTA_SET_ELEM_KEY                 = 0x1\n\tNFTA_SET_ELEM_DATA                = 0x2\n\tNFTA_SET_ELEM_FLAGS               = 0x3\n\tNFTA_SET_ELEM_TIMEOUT             = 0x4\n\tNFTA_SET_ELEM_EXPIRATION          = 0x5\n\tNFTA_SET_ELEM_USERDATA            = 0x6\n\tNFTA_SET_ELEM_EXPR                = 0x7\n\tNFTA_SET_ELEM_PAD                 = 0x8\n\tNFTA_SET_ELEM_OBJREF              = 0x9\n\tNFTA_SET_ELEM_LIST_UNSPEC         = 0x0\n\tNFTA_SET_ELEM_LIST_TABLE          = 0x1\n\tNFTA_SET_ELEM_LIST_SET            = 0x2\n\tNFTA_SET_ELEM_LIST_ELEMENTS       = 0x3\n\tNFTA_SET_ELEM_LIST_SET_ID         = 0x4\n\tNFT_DATA_VALUE                    = 0x0\n\tNFT_DATA_VERDICT                  = 0xffffff00\n\tNFTA_DATA_UNSPEC                  = 0x0\n\tNFTA_DATA_VALUE                   = 0x1\n\tNFTA_DATA_VERDICT                 = 0x2\n\tNFTA_VERDICT_UNSPEC               = 0x0\n\tNFTA_VERDICT_CODE                 = 0x1\n\tNFTA_VERDICT_CHAIN                = 0x2\n\tNFTA_EXPR_UNSPEC                  = 0x0\n\tNFTA_EXPR_NAME                    = 0x1\n\tNFTA_EXPR_DATA                    = 0x2\n\tNFTA_IMMEDIATE_UNSPEC             = 0x0\n\tNFTA_IMMEDIATE_DREG               = 0x1\n\tNFTA_IMMEDIATE_DATA               = 0x2\n\tNFTA_BITWISE_UNSPEC               = 0x0\n\tNFTA_BITWISE_SREG                 = 0x1\n\tNFTA_BITWISE_DREG                 = 0x2\n\tNFTA_BITWISE_LEN                  = 0x3\n\tNFTA_BITWISE_MASK                 = 0x4\n\tNFTA_BITWISE_XOR                  = 0x5\n\tNFT_BYTEORDER_NTOH                = 0x0\n\tNFT_BYTEORDER_HTON                = 0x1\n\tNFTA_BYTEORDER_UNSPEC             = 0x0\n\tNFTA_BYTEORDER_SREG               = 0x1\n\tNFTA_BYTEORDER_DREG               = 0x2\n\tNFTA_BYTEORDER_OP                 = 0x3\n\tNFTA_BYTEORDER_LEN                = 0x4\n\tNFTA_BYTEORDER_SIZE               = 0x5\n\tNFT_CMP_EQ                        = 0x0\n\tNFT_CMP_NEQ                       = 0x1\n\tNFT_CMP_LT                        = 0x2\n\tNFT_CMP_LTE                       = 0x3\n\tNFT_CMP_GT                        = 0x4\n\tNFT_CMP_GTE                       = 0x5\n\tNFTA_CMP_UNSPEC                   = 0x0\n\tNFTA_CMP_SREG                     = 0x1\n\tNFTA_CMP_OP                       = 0x2\n\tNFTA_CMP_DATA                     = 0x3\n\tNFT_RANGE_EQ                      = 0x0\n\tNFT_RANGE_NEQ                     = 0x1\n\tNFTA_RANGE_UNSPEC                 = 0x0\n\tNFTA_RANGE_SREG                   = 0x1\n\tNFTA_RANGE_OP                     = 0x2\n\tNFTA_RANGE_FROM_DATA              = 0x3\n\tNFTA_RANGE_TO_DATA                = 0x4\n\tNFT_LOOKUP_F_INV                  = 0x1\n\tNFTA_LOOKUP_UNSPEC                = 0x0\n\tNFTA_LOOKUP_SET                   = 0x1\n\tNFTA_LOOKUP_SREG                  = 0x2\n\tNFTA_LOOKUP_DREG                  = 0x3\n\tNFTA_LOOKUP_SET_ID                = 0x4\n\tNFTA_LOOKUP_FLAGS                 = 0x5\n\tNFT_DYNSET_OP_ADD                 = 0x0\n\tNFT_DYNSET_OP_UPDATE              = 0x1\n\tNFT_DYNSET_F_INV                  = 0x1\n\tNFTA_DYNSET_UNSPEC                = 0x0\n\tNFTA_DYNSET_SET_NAME              = 0x1\n\tNFTA_DYNSET_SET_ID                = 0x2\n\tNFTA_DYNSET_OP                    = 0x3\n\tNFTA_DYNSET_SREG_KEY              = 0x4\n\tNFTA_DYNSET_SREG_DATA             = 0x5\n\tNFTA_DYNSET_TIMEOUT               = 0x6\n\tNFTA_DYNSET_EXPR                  = 0x7\n\tNFTA_DYNSET_PAD                   = 0x8\n\tNFTA_DYNSET_FLAGS                 = 0x9\n\tNFT_PAYLOAD_LL_HEADER             = 0x0\n\tNFT_PAYLOAD_NETWORK_HEADER        = 0x1\n\tNFT_PAYLOAD_TRANSPORT_HEADER      = 0x2\n\tNFT_PAYLOAD_INNER_HEADER          = 0x3\n\tNFT_PAYLOAD_TUN_HEADER            = 0x4\n\tNFT_PAYLOAD_CSUM_NONE             = 0x0\n\tNFT_PAYLOAD_CSUM_INET             = 0x1\n\tNFT_PAYLOAD_CSUM_SCTP             = 0x2\n\tNFT_PAYLOAD_L4CSUM_PSEUDOHDR      = 0x1\n\tNFTA_PAYLOAD_UNSPEC               = 0x0\n\tNFTA_PAYLOAD_DREG                 = 0x1\n\tNFTA_PAYLOAD_BASE                 = 0x2\n\tNFTA_PAYLOAD_OFFSET               = 0x3\n\tNFTA_PAYLOAD_LEN                  = 0x4\n\tNFTA_PAYLOAD_SREG                 = 0x5\n\tNFTA_PAYLOAD_CSUM_TYPE            = 0x6\n\tNFTA_PAYLOAD_CSUM_OFFSET          = 0x7\n\tNFTA_PAYLOAD_CSUM_FLAGS           = 0x8\n\tNFT_EXTHDR_F_PRESENT              = 0x1\n\tNFT_EXTHDR_OP_IPV6                = 0x0\n\tNFT_EXTHDR_OP_TCPOPT              = 0x1\n\tNFTA_EXTHDR_UNSPEC                = 0x0\n\tNFTA_EXTHDR_DREG                  = 0x1\n\tNFTA_EXTHDR_TYPE                  = 0x2\n\tNFTA_EXTHDR_OFFSET                = 0x3\n\tNFTA_EXTHDR_LEN                   = 0x4\n\tNFTA_EXTHDR_FLAGS                 = 0x5\n\tNFTA_EXTHDR_OP                    = 0x6\n\tNFTA_EXTHDR_SREG                  = 0x7\n\tNFT_META_LEN                      = 0x0\n\tNFT_META_PROTOCOL                 = 0x1\n\tNFT_META_PRIORITY                 = 0x2\n\tNFT_META_MARK                     = 0x3\n\tNFT_META_IIF                      = 0x4\n\tNFT_META_OIF                      = 0x5\n\tNFT_META_IIFNAME                  = 0x6\n\tNFT_META_OIFNAME                  = 0x7\n\tNFT_META_IIFTYPE                  = 0x8\n\tNFT_META_OIFTYPE                  = 0x9\n\tNFT_META_SKUID                    = 0xa\n\tNFT_META_SKGID                    = 0xb\n\tNFT_META_NFTRACE                  = 0xc\n\tNFT_META_RTCLASSID                = 0xd\n\tNFT_META_SECMARK                  = 0xe\n\tNFT_META_NFPROTO                  = 0xf\n\tNFT_META_L4PROTO                  = 0x10\n\tNFT_META_BRI_IIFNAME              = 0x11\n\tNFT_META_BRI_OIFNAME              = 0x12\n\tNFT_META_PKTTYPE                  = 0x13\n\tNFT_META_CPU                      = 0x14\n\tNFT_META_IIFGROUP                 = 0x15\n\tNFT_META_OIFGROUP                 = 0x16\n\tNFT_META_CGROUP                   = 0x17\n\tNFT_META_PRANDOM                  = 0x18\n\tNFT_RT_CLASSID                    = 0x0\n\tNFT_RT_NEXTHOP4                   = 0x1\n\tNFT_RT_NEXTHOP6                   = 0x2\n\tNFT_RT_TCPMSS                     = 0x3\n\tNFT_HASH_JENKINS                  = 0x0\n\tNFT_HASH_SYM                      = 0x1\n\tNFTA_HASH_UNSPEC                  = 0x0\n\tNFTA_HASH_SREG                    = 0x1\n\tNFTA_HASH_DREG                    = 0x2\n\tNFTA_HASH_LEN                     = 0x3\n\tNFTA_HASH_MODULUS                 = 0x4\n\tNFTA_HASH_SEED                    = 0x5\n\tNFTA_HASH_OFFSET                  = 0x6\n\tNFTA_HASH_TYPE                    = 0x7\n\tNFTA_META_UNSPEC                  = 0x0\n\tNFTA_META_DREG                    = 0x1\n\tNFTA_META_KEY                     = 0x2\n\tNFTA_META_SREG                    = 0x3\n\tNFTA_RT_UNSPEC                    = 0x0\n\tNFTA_RT_DREG                      = 0x1\n\tNFTA_RT_KEY                       = 0x2\n\tNFT_CT_STATE                      = 0x0\n\tNFT_CT_DIRECTION                  = 0x1\n\tNFT_CT_STATUS                     = 0x2\n\tNFT_CT_MARK                       = 0x3\n\tNFT_CT_SECMARK                    = 0x4\n\tNFT_CT_EXPIRATION                 = 0x5\n\tNFT_CT_HELPER                     = 0x6\n\tNFT_CT_L3PROTOCOL                 = 0x7\n\tNFT_CT_SRC                        = 0x8\n\tNFT_CT_DST                        = 0x9\n\tNFT_CT_PROTOCOL                   = 0xa\n\tNFT_CT_PROTO_SRC                  = 0xb\n\tNFT_CT_PROTO_DST                  = 0xc\n\tNFT_CT_LABELS                     = 0xd\n\tNFT_CT_PKTS                       = 0xe\n\tNFT_CT_BYTES                      = 0xf\n\tNFT_CT_AVGPKT                     = 0x10\n\tNFT_CT_ZONE                       = 0x11\n\tNFT_CT_EVENTMASK                  = 0x12\n\tNFT_CT_SRC_IP                     = 0x13\n\tNFT_CT_DST_IP                     = 0x14\n\tNFT_CT_SRC_IP6                    = 0x15\n\tNFT_CT_DST_IP6                    = 0x16\n\tNFT_CT_ID                         = 0x17\n\tNFTA_CT_UNSPEC                    = 0x0\n\tNFTA_CT_DREG                      = 0x1\n\tNFTA_CT_KEY                       = 0x2\n\tNFTA_CT_DIRECTION                 = 0x3\n\tNFTA_CT_SREG                      = 0x4\n\tNFT_LIMIT_PKTS                    = 0x0\n\tNFT_LIMIT_PKT_BYTES               = 0x1\n\tNFT_LIMIT_F_INV                   = 0x1\n\tNFTA_LIMIT_UNSPEC                 = 0x0\n\tNFTA_LIMIT_RATE                   = 0x1\n\tNFTA_LIMIT_UNIT                   = 0x2\n\tNFTA_LIMIT_BURST                  = 0x3\n\tNFTA_LIMIT_TYPE                   = 0x4\n\tNFTA_LIMIT_FLAGS                  = 0x5\n\tNFTA_LIMIT_PAD                    = 0x6\n\tNFTA_COUNTER_UNSPEC               = 0x0\n\tNFTA_COUNTER_BYTES                = 0x1\n\tNFTA_COUNTER_PACKETS              = 0x2\n\tNFTA_COUNTER_PAD                  = 0x3\n\tNFTA_LOG_UNSPEC                   = 0x0\n\tNFTA_LOG_GROUP                    = 0x1\n\tNFTA_LOG_PREFIX                   = 0x2\n\tNFTA_LOG_SNAPLEN                  = 0x3\n\tNFTA_LOG_QTHRESHOLD               = 0x4\n\tNFTA_LOG_LEVEL                    = 0x5\n\tNFTA_LOG_FLAGS                    = 0x6\n\tNFTA_QUEUE_UNSPEC                 = 0x0\n\tNFTA_QUEUE_NUM                    = 0x1\n\tNFTA_QUEUE_TOTAL                  = 0x2\n\tNFTA_QUEUE_FLAGS                  = 0x3\n\tNFTA_QUEUE_SREG_QNUM              = 0x4\n\tNFT_QUOTA_F_INV                   = 0x1\n\tNFT_QUOTA_F_DEPLETED              = 0x2\n\tNFTA_QUOTA_UNSPEC                 = 0x0\n\tNFTA_QUOTA_BYTES                  = 0x1\n\tNFTA_QUOTA_FLAGS                  = 0x2\n\tNFTA_QUOTA_PAD                    = 0x3\n\tNFTA_QUOTA_CONSUMED               = 0x4\n\tNFT_REJECT_ICMP_UNREACH           = 0x0\n\tNFT_REJECT_TCP_RST                = 0x1\n\tNFT_REJECT_ICMPX_UNREACH          = 0x2\n\tNFT_REJECT_ICMPX_NO_ROUTE         = 0x0\n\tNFT_REJECT_ICMPX_PORT_UNREACH     = 0x1\n\tNFT_REJECT_ICMPX_HOST_UNREACH     = 0x2\n\tNFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3\n\tNFTA_REJECT_UNSPEC                = 0x0\n\tNFTA_REJECT_TYPE                  = 0x1\n\tNFTA_REJECT_ICMP_CODE             = 0x2\n\tNFT_NAT_SNAT                      = 0x0\n\tNFT_NAT_DNAT                      = 0x1\n\tNFTA_NAT_UNSPEC                   = 0x0\n\tNFTA_NAT_TYPE                     = 0x1\n\tNFTA_NAT_FAMILY                   = 0x2\n\tNFTA_NAT_REG_ADDR_MIN             = 0x3\n\tNFTA_NAT_REG_ADDR_MAX             = 0x4\n\tNFTA_NAT_REG_PROTO_MIN            = 0x5\n\tNFTA_NAT_REG_PROTO_MAX            = 0x6\n\tNFTA_NAT_FLAGS                    = 0x7\n\tNFTA_MASQ_UNSPEC                  = 0x0\n\tNFTA_MASQ_FLAGS                   = 0x1\n\tNFTA_MASQ_REG_PROTO_MIN           = 0x2\n\tNFTA_MASQ_REG_PROTO_MAX           = 0x3\n\tNFTA_REDIR_UNSPEC                 = 0x0\n\tNFTA_REDIR_REG_PROTO_MIN          = 0x1\n\tNFTA_REDIR_REG_PROTO_MAX          = 0x2\n\tNFTA_REDIR_FLAGS                  = 0x3\n\tNFTA_DUP_UNSPEC                   = 0x0\n\tNFTA_DUP_SREG_ADDR                = 0x1\n\tNFTA_DUP_SREG_DEV                 = 0x2\n\tNFTA_FWD_UNSPEC                   = 0x0\n\tNFTA_FWD_SREG_DEV                 = 0x1\n\tNFTA_OBJREF_UNSPEC                = 0x0\n\tNFTA_OBJREF_IMM_TYPE              = 0x1\n\tNFTA_OBJREF_IMM_NAME              = 0x2\n\tNFTA_OBJREF_SET_SREG              = 0x3\n\tNFTA_OBJREF_SET_NAME              = 0x4\n\tNFTA_OBJREF_SET_ID                = 0x5\n\tNFTA_GEN_UNSPEC                   = 0x0\n\tNFTA_GEN_ID                       = 0x1\n\tNFTA_GEN_PROC_PID                 = 0x2\n\tNFTA_GEN_PROC_NAME                = 0x3\n\tNFTA_FIB_UNSPEC                   = 0x0\n\tNFTA_FIB_DREG                     = 0x1\n\tNFTA_FIB_RESULT                   = 0x2\n\tNFTA_FIB_FLAGS                    = 0x3\n\tNFT_FIB_RESULT_UNSPEC             = 0x0\n\tNFT_FIB_RESULT_OIF                = 0x1\n\tNFT_FIB_RESULT_OIFNAME            = 0x2\n\tNFT_FIB_RESULT_ADDRTYPE           = 0x3\n\tNFTA_FIB_F_SADDR                  = 0x1\n\tNFTA_FIB_F_DADDR                  = 0x2\n\tNFTA_FIB_F_MARK                   = 0x4\n\tNFTA_FIB_F_IIF                    = 0x8\n\tNFTA_FIB_F_OIF                    = 0x10\n\tNFTA_FIB_F_PRESENT                = 0x20\n\tNFTA_CT_HELPER_UNSPEC             = 0x0\n\tNFTA_CT_HELPER_NAME               = 0x1\n\tNFTA_CT_HELPER_L3PROTO            = 0x2\n\tNFTA_CT_HELPER_L4PROTO            = 0x3\n\tNFTA_OBJ_UNSPEC                   = 0x0\n\tNFTA_OBJ_TABLE                    = 0x1\n\tNFTA_OBJ_NAME                     = 0x2\n\tNFTA_OBJ_TYPE                     = 0x3\n\tNFTA_OBJ_DATA                     = 0x4\n\tNFTA_OBJ_USE                      = 0x5\n\tNFTA_TRACE_UNSPEC                 = 0x0\n\tNFTA_TRACE_TABLE                  = 0x1\n\tNFTA_TRACE_CHAIN                  = 0x2\n\tNFTA_TRACE_RULE_HANDLE            = 0x3\n\tNFTA_TRACE_TYPE                   = 0x4\n\tNFTA_TRACE_VERDICT                = 0x5\n\tNFTA_TRACE_ID                     = 0x6\n\tNFTA_TRACE_LL_HEADER              = 0x7\n\tNFTA_TRACE_NETWORK_HEADER         = 0x8\n\tNFTA_TRACE_TRANSPORT_HEADER       = 0x9\n\tNFTA_TRACE_IIF                    = 0xa\n\tNFTA_TRACE_IIFTYPE                = 0xb\n\tNFTA_TRACE_OIF                    = 0xc\n\tNFTA_TRACE_OIFTYPE                = 0xd\n\tNFTA_TRACE_MARK                   = 0xe\n\tNFTA_TRACE_NFPROTO                = 0xf\n\tNFTA_TRACE_POLICY                 = 0x10\n\tNFTA_TRACE_PAD                    = 0x11\n\tNFT_TRACETYPE_UNSPEC              = 0x0\n\tNFT_TRACETYPE_POLICY              = 0x1\n\tNFT_TRACETYPE_RETURN              = 0x2\n\tNFT_TRACETYPE_RULE                = 0x3\n\tNFTA_NG_UNSPEC                    = 0x0\n\tNFTA_NG_DREG                      = 0x1\n\tNFTA_NG_MODULUS                   = 0x2\n\tNFTA_NG_TYPE                      = 0x3\n\tNFTA_NG_OFFSET                    = 0x4\n\tNFT_NG_INCREMENTAL                = 0x0\n\tNFT_NG_RANDOM                     = 0x1\n)\n\nconst (\n\tNFTA_TARGET_UNSPEC = 0x0\n\tNFTA_TARGET_NAME   = 0x1\n\tNFTA_TARGET_REV    = 0x2\n\tNFTA_TARGET_INFO   = 0x3\n\tNFTA_MATCH_UNSPEC  = 0x0\n\tNFTA_MATCH_NAME    = 0x1\n\tNFTA_MATCH_REV     = 0x2\n\tNFTA_MATCH_INFO    = 0x3\n\tNFTA_COMPAT_UNSPEC = 0x0\n\tNFTA_COMPAT_NAME   = 0x1\n\tNFTA_COMPAT_REV    = 0x2\n\tNFTA_COMPAT_TYPE   = 0x3\n)\n\ntype RTCTime struct {\n\tSec   int32\n\tMin   int32\n\tHour  int32\n\tMday  int32\n\tMon   int32\n\tYear  int32\n\tWday  int32\n\tYday  int32\n\tIsdst int32\n}\n\ntype RTCWkAlrm struct {\n\tEnabled uint8\n\tPending uint8\n\tTime    RTCTime\n}\n\ntype BlkpgIoctlArg struct {\n\tOp      int32\n\tFlags   int32\n\tDatalen int32\n\tData    *byte\n}\n\nconst (\n\tBLKPG_ADD_PARTITION    = 0x1\n\tBLKPG_DEL_PARTITION    = 0x2\n\tBLKPG_RESIZE_PARTITION = 0x3\n)\n\nconst (\n\tNETNSA_NONE         = 0x0\n\tNETNSA_NSID         = 0x1\n\tNETNSA_PID          = 0x2\n\tNETNSA_FD           = 0x3\n\tNETNSA_TARGET_NSID  = 0x4\n\tNETNSA_CURRENT_NSID = 0x5\n)\n\ntype XDPRingOffset struct {\n\tProducer uint64\n\tConsumer uint64\n\tDesc     uint64\n\tFlags    uint64\n}\n\ntype XDPMmapOffsets struct {\n\tRx XDPRingOffset\n\tTx XDPRingOffset\n\tFr XDPRingOffset\n\tCr XDPRingOffset\n}\n\ntype XDPUmemReg struct {\n\tAddr            uint64\n\tLen             uint64\n\tSize            uint32\n\tHeadroom        uint32\n\tFlags           uint32\n\tTx_metadata_len uint32\n}\n\ntype XDPStatistics struct {\n\tRx_dropped               uint64\n\tRx_invalid_descs         uint64\n\tTx_invalid_descs         uint64\n\tRx_ring_full             uint64\n\tRx_fill_ring_empty_descs uint64\n\tTx_ring_empty_descs      uint64\n}\n\ntype XDPDesc struct {\n\tAddr    uint64\n\tLen     uint32\n\tOptions uint32\n}\n\nconst (\n\tNCSI_CMD_UNSPEC                 = 0x0\n\tNCSI_CMD_PKG_INFO               = 0x1\n\tNCSI_CMD_SET_INTERFACE          = 0x2\n\tNCSI_CMD_CLEAR_INTERFACE        = 0x3\n\tNCSI_ATTR_UNSPEC                = 0x0\n\tNCSI_ATTR_IFINDEX               = 0x1\n\tNCSI_ATTR_PACKAGE_LIST          = 0x2\n\tNCSI_ATTR_PACKAGE_ID            = 0x3\n\tNCSI_ATTR_CHANNEL_ID            = 0x4\n\tNCSI_PKG_ATTR_UNSPEC            = 0x0\n\tNCSI_PKG_ATTR                   = 0x1\n\tNCSI_PKG_ATTR_ID                = 0x2\n\tNCSI_PKG_ATTR_FORCED            = 0x3\n\tNCSI_PKG_ATTR_CHANNEL_LIST      = 0x4\n\tNCSI_CHANNEL_ATTR_UNSPEC        = 0x0\n\tNCSI_CHANNEL_ATTR               = 0x1\n\tNCSI_CHANNEL_ATTR_ID            = 0x2\n\tNCSI_CHANNEL_ATTR_VERSION_MAJOR = 0x3\n\tNCSI_CHANNEL_ATTR_VERSION_MINOR = 0x4\n\tNCSI_CHANNEL_ATTR_VERSION_STR   = 0x5\n\tNCSI_CHANNEL_ATTR_LINK_STATE    = 0x6\n\tNCSI_CHANNEL_ATTR_ACTIVE        = 0x7\n\tNCSI_CHANNEL_ATTR_FORCED        = 0x8\n\tNCSI_CHANNEL_ATTR_VLAN_LIST     = 0x9\n\tNCSI_CHANNEL_ATTR_VLAN_ID       = 0xa\n)\n\ntype ScmTimestamping struct {\n\tTs [3]Timespec\n}\n\nconst (\n\tSOF_TIMESTAMPING_TX_HARDWARE  = 0x1\n\tSOF_TIMESTAMPING_TX_SOFTWARE  = 0x2\n\tSOF_TIMESTAMPING_RX_HARDWARE  = 0x4\n\tSOF_TIMESTAMPING_RX_SOFTWARE  = 0x8\n\tSOF_TIMESTAMPING_SOFTWARE     = 0x10\n\tSOF_TIMESTAMPING_SYS_HARDWARE = 0x20\n\tSOF_TIMESTAMPING_RAW_HARDWARE = 0x40\n\tSOF_TIMESTAMPING_OPT_ID       = 0x80\n\tSOF_TIMESTAMPING_TX_SCHED     = 0x100\n\tSOF_TIMESTAMPING_TX_ACK       = 0x200\n\tSOF_TIMESTAMPING_OPT_CMSG     = 0x400\n\tSOF_TIMESTAMPING_OPT_TSONLY   = 0x800\n\tSOF_TIMESTAMPING_OPT_STATS    = 0x1000\n\tSOF_TIMESTAMPING_OPT_PKTINFO  = 0x2000\n\tSOF_TIMESTAMPING_OPT_TX_SWHW  = 0x4000\n\tSOF_TIMESTAMPING_BIND_PHC     = 0x8000\n\tSOF_TIMESTAMPING_OPT_ID_TCP   = 0x10000\n\n\tSOF_TIMESTAMPING_LAST = 0x40000\n\tSOF_TIMESTAMPING_MASK = 0x7ffff\n\n\tSCM_TSTAMP_SND   = 0x0\n\tSCM_TSTAMP_SCHED = 0x1\n\tSCM_TSTAMP_ACK   = 0x2\n)\n\ntype SockExtendedErr struct {\n\tErrno  uint32\n\tOrigin uint8\n\tType   uint8\n\tCode   uint8\n\tPad    uint8\n\tInfo   uint32\n\tData   uint32\n}\n\ntype FanotifyEventMetadata struct {\n\tEvent_len    uint32\n\tVers         uint8\n\tReserved     uint8\n\tMetadata_len uint16\n\tMask         uint64\n\tFd           int32\n\tPid          int32\n}\n\ntype FanotifyResponse struct {\n\tFd       int32\n\tResponse uint32\n}\n\nconst (\n\tCRYPTO_MSG_BASE      = 0x10\n\tCRYPTO_MSG_NEWALG    = 0x10\n\tCRYPTO_MSG_DELALG    = 0x11\n\tCRYPTO_MSG_UPDATEALG = 0x12\n\tCRYPTO_MSG_GETALG    = 0x13\n\tCRYPTO_MSG_DELRNG    = 0x14\n\tCRYPTO_MSG_GETSTAT   = 0x15\n)\n\nconst (\n\tCRYPTOCFGA_UNSPEC           = 0x0\n\tCRYPTOCFGA_PRIORITY_VAL     = 0x1\n\tCRYPTOCFGA_REPORT_LARVAL    = 0x2\n\tCRYPTOCFGA_REPORT_HASH      = 0x3\n\tCRYPTOCFGA_REPORT_BLKCIPHER = 0x4\n\tCRYPTOCFGA_REPORT_AEAD      = 0x5\n\tCRYPTOCFGA_REPORT_COMPRESS  = 0x6\n\tCRYPTOCFGA_REPORT_RNG       = 0x7\n\tCRYPTOCFGA_REPORT_CIPHER    = 0x8\n\tCRYPTOCFGA_REPORT_AKCIPHER  = 0x9\n\tCRYPTOCFGA_REPORT_KPP       = 0xa\n\tCRYPTOCFGA_REPORT_ACOMP     = 0xb\n\tCRYPTOCFGA_STAT_LARVAL      = 0xc\n\tCRYPTOCFGA_STAT_HASH        = 0xd\n\tCRYPTOCFGA_STAT_BLKCIPHER   = 0xe\n\tCRYPTOCFGA_STAT_AEAD        = 0xf\n\tCRYPTOCFGA_STAT_COMPRESS    = 0x10\n\tCRYPTOCFGA_STAT_RNG         = 0x11\n\tCRYPTOCFGA_STAT_CIPHER      = 0x12\n\tCRYPTOCFGA_STAT_AKCIPHER    = 0x13\n\tCRYPTOCFGA_STAT_KPP         = 0x14\n\tCRYPTOCFGA_STAT_ACOMP       = 0x15\n)\n\nconst (\n\tBPF_REG_0                                  = 0x0\n\tBPF_REG_1                                  = 0x1\n\tBPF_REG_2                                  = 0x2\n\tBPF_REG_3                                  = 0x3\n\tBPF_REG_4                                  = 0x4\n\tBPF_REG_5                                  = 0x5\n\tBPF_REG_6                                  = 0x6\n\tBPF_REG_7                                  = 0x7\n\tBPF_REG_8                                  = 0x8\n\tBPF_REG_9                                  = 0x9\n\tBPF_REG_10                                 = 0xa\n\tBPF_CGROUP_ITER_ORDER_UNSPEC               = 0x0\n\tBPF_CGROUP_ITER_SELF_ONLY                  = 0x1\n\tBPF_CGROUP_ITER_DESCENDANTS_PRE            = 0x2\n\tBPF_CGROUP_ITER_DESCENDANTS_POST           = 0x3\n\tBPF_CGROUP_ITER_ANCESTORS_UP               = 0x4\n\tBPF_MAP_CREATE                             = 0x0\n\tBPF_MAP_LOOKUP_ELEM                        = 0x1\n\tBPF_MAP_UPDATE_ELEM                        = 0x2\n\tBPF_MAP_DELETE_ELEM                        = 0x3\n\tBPF_MAP_GET_NEXT_KEY                       = 0x4\n\tBPF_PROG_LOAD                              = 0x5\n\tBPF_OBJ_PIN                                = 0x6\n\tBPF_OBJ_GET                                = 0x7\n\tBPF_PROG_ATTACH                            = 0x8\n\tBPF_PROG_DETACH                            = 0x9\n\tBPF_PROG_TEST_RUN                          = 0xa\n\tBPF_PROG_RUN                               = 0xa\n\tBPF_PROG_GET_NEXT_ID                       = 0xb\n\tBPF_MAP_GET_NEXT_ID                        = 0xc\n\tBPF_PROG_GET_FD_BY_ID                      = 0xd\n\tBPF_MAP_GET_FD_BY_ID                       = 0xe\n\tBPF_OBJ_GET_INFO_BY_FD                     = 0xf\n\tBPF_PROG_QUERY                             = 0x10\n\tBPF_RAW_TRACEPOINT_OPEN                    = 0x11\n\tBPF_BTF_LOAD                               = 0x12\n\tBPF_BTF_GET_FD_BY_ID                       = 0x13\n\tBPF_TASK_FD_QUERY                          = 0x14\n\tBPF_MAP_LOOKUP_AND_DELETE_ELEM             = 0x15\n\tBPF_MAP_FREEZE                             = 0x16\n\tBPF_BTF_GET_NEXT_ID                        = 0x17\n\tBPF_MAP_LOOKUP_BATCH                       = 0x18\n\tBPF_MAP_LOOKUP_AND_DELETE_BATCH            = 0x19\n\tBPF_MAP_UPDATE_BATCH                       = 0x1a\n\tBPF_MAP_DELETE_BATCH                       = 0x1b\n\tBPF_LINK_CREATE                            = 0x1c\n\tBPF_LINK_UPDATE                            = 0x1d\n\tBPF_LINK_GET_FD_BY_ID                      = 0x1e\n\tBPF_LINK_GET_NEXT_ID                       = 0x1f\n\tBPF_ENABLE_STATS                           = 0x20\n\tBPF_ITER_CREATE                            = 0x21\n\tBPF_LINK_DETACH                            = 0x22\n\tBPF_PROG_BIND_MAP                          = 0x23\n\tBPF_MAP_TYPE_UNSPEC                        = 0x0\n\tBPF_MAP_TYPE_HASH                          = 0x1\n\tBPF_MAP_TYPE_ARRAY                         = 0x2\n\tBPF_MAP_TYPE_PROG_ARRAY                    = 0x3\n\tBPF_MAP_TYPE_PERF_EVENT_ARRAY              = 0x4\n\tBPF_MAP_TYPE_PERCPU_HASH                   = 0x5\n\tBPF_MAP_TYPE_PERCPU_ARRAY                  = 0x6\n\tBPF_MAP_TYPE_STACK_TRACE                   = 0x7\n\tBPF_MAP_TYPE_CGROUP_ARRAY                  = 0x8\n\tBPF_MAP_TYPE_LRU_HASH                      = 0x9\n\tBPF_MAP_TYPE_LRU_PERCPU_HASH               = 0xa\n\tBPF_MAP_TYPE_LPM_TRIE                      = 0xb\n\tBPF_MAP_TYPE_ARRAY_OF_MAPS                 = 0xc\n\tBPF_MAP_TYPE_HASH_OF_MAPS                  = 0xd\n\tBPF_MAP_TYPE_DEVMAP                        = 0xe\n\tBPF_MAP_TYPE_SOCKMAP                       = 0xf\n\tBPF_MAP_TYPE_CPUMAP                        = 0x10\n\tBPF_MAP_TYPE_XSKMAP                        = 0x11\n\tBPF_MAP_TYPE_SOCKHASH                      = 0x12\n\tBPF_MAP_TYPE_CGROUP_STORAGE_DEPRECATED     = 0x13\n\tBPF_MAP_TYPE_CGROUP_STORAGE                = 0x13\n\tBPF_MAP_TYPE_REUSEPORT_SOCKARRAY           = 0x14\n\tBPF_MAP_TYPE_PERCPU_CGROUP_STORAGE         = 0x15\n\tBPF_MAP_TYPE_QUEUE                         = 0x16\n\tBPF_MAP_TYPE_STACK                         = 0x17\n\tBPF_MAP_TYPE_SK_STORAGE                    = 0x18\n\tBPF_MAP_TYPE_DEVMAP_HASH                   = 0x19\n\tBPF_MAP_TYPE_STRUCT_OPS                    = 0x1a\n\tBPF_MAP_TYPE_RINGBUF                       = 0x1b\n\tBPF_MAP_TYPE_INODE_STORAGE                 = 0x1c\n\tBPF_MAP_TYPE_TASK_STORAGE                  = 0x1d\n\tBPF_MAP_TYPE_BLOOM_FILTER                  = 0x1e\n\tBPF_MAP_TYPE_USER_RINGBUF                  = 0x1f\n\tBPF_MAP_TYPE_CGRP_STORAGE                  = 0x20\n\tBPF_PROG_TYPE_UNSPEC                       = 0x0\n\tBPF_PROG_TYPE_SOCKET_FILTER                = 0x1\n\tBPF_PROG_TYPE_KPROBE                       = 0x2\n\tBPF_PROG_TYPE_SCHED_CLS                    = 0x3\n\tBPF_PROG_TYPE_SCHED_ACT                    = 0x4\n\tBPF_PROG_TYPE_TRACEPOINT                   = 0x5\n\tBPF_PROG_TYPE_XDP                          = 0x6\n\tBPF_PROG_TYPE_PERF_EVENT                   = 0x7\n\tBPF_PROG_TYPE_CGROUP_SKB                   = 0x8\n\tBPF_PROG_TYPE_CGROUP_SOCK                  = 0x9\n\tBPF_PROG_TYPE_LWT_IN                       = 0xa\n\tBPF_PROG_TYPE_LWT_OUT                      = 0xb\n\tBPF_PROG_TYPE_LWT_XMIT                     = 0xc\n\tBPF_PROG_TYPE_SOCK_OPS                     = 0xd\n\tBPF_PROG_TYPE_SK_SKB                       = 0xe\n\tBPF_PROG_TYPE_CGROUP_DEVICE                = 0xf\n\tBPF_PROG_TYPE_SK_MSG                       = 0x10\n\tBPF_PROG_TYPE_RAW_TRACEPOINT               = 0x11\n\tBPF_PROG_TYPE_CGROUP_SOCK_ADDR             = 0x12\n\tBPF_PROG_TYPE_LWT_SEG6LOCAL                = 0x13\n\tBPF_PROG_TYPE_LIRC_MODE2                   = 0x14\n\tBPF_PROG_TYPE_SK_REUSEPORT                 = 0x15\n\tBPF_PROG_TYPE_FLOW_DISSECTOR               = 0x16\n\tBPF_PROG_TYPE_CGROUP_SYSCTL                = 0x17\n\tBPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE      = 0x18\n\tBPF_PROG_TYPE_CGROUP_SOCKOPT               = 0x19\n\tBPF_PROG_TYPE_TRACING                      = 0x1a\n\tBPF_PROG_TYPE_STRUCT_OPS                   = 0x1b\n\tBPF_PROG_TYPE_EXT                          = 0x1c\n\tBPF_PROG_TYPE_LSM                          = 0x1d\n\tBPF_PROG_TYPE_SK_LOOKUP                    = 0x1e\n\tBPF_PROG_TYPE_SYSCALL                      = 0x1f\n\tBPF_PROG_TYPE_NETFILTER                    = 0x20\n\tBPF_CGROUP_INET_INGRESS                    = 0x0\n\tBPF_CGROUP_INET_EGRESS                     = 0x1\n\tBPF_CGROUP_INET_SOCK_CREATE                = 0x2\n\tBPF_CGROUP_SOCK_OPS                        = 0x3\n\tBPF_SK_SKB_STREAM_PARSER                   = 0x4\n\tBPF_SK_SKB_STREAM_VERDICT                  = 0x5\n\tBPF_CGROUP_DEVICE                          = 0x6\n\tBPF_SK_MSG_VERDICT                         = 0x7\n\tBPF_CGROUP_INET4_BIND                      = 0x8\n\tBPF_CGROUP_INET6_BIND                      = 0x9\n\tBPF_CGROUP_INET4_CONNECT                   = 0xa\n\tBPF_CGROUP_INET6_CONNECT                   = 0xb\n\tBPF_CGROUP_INET4_POST_BIND                 = 0xc\n\tBPF_CGROUP_INET6_POST_BIND                 = 0xd\n\tBPF_CGROUP_UDP4_SENDMSG                    = 0xe\n\tBPF_CGROUP_UDP6_SENDMSG                    = 0xf\n\tBPF_LIRC_MODE2                             = 0x10\n\tBPF_FLOW_DISSECTOR                         = 0x11\n\tBPF_CGROUP_SYSCTL                          = 0x12\n\tBPF_CGROUP_UDP4_RECVMSG                    = 0x13\n\tBPF_CGROUP_UDP6_RECVMSG                    = 0x14\n\tBPF_CGROUP_GETSOCKOPT                      = 0x15\n\tBPF_CGROUP_SETSOCKOPT                      = 0x16\n\tBPF_TRACE_RAW_TP                           = 0x17\n\tBPF_TRACE_FENTRY                           = 0x18\n\tBPF_TRACE_FEXIT                            = 0x19\n\tBPF_MODIFY_RETURN                          = 0x1a\n\tBPF_LSM_MAC                                = 0x1b\n\tBPF_TRACE_ITER                             = 0x1c\n\tBPF_CGROUP_INET4_GETPEERNAME               = 0x1d\n\tBPF_CGROUP_INET6_GETPEERNAME               = 0x1e\n\tBPF_CGROUP_INET4_GETSOCKNAME               = 0x1f\n\tBPF_CGROUP_INET6_GETSOCKNAME               = 0x20\n\tBPF_XDP_DEVMAP                             = 0x21\n\tBPF_CGROUP_INET_SOCK_RELEASE               = 0x22\n\tBPF_XDP_CPUMAP                             = 0x23\n\tBPF_SK_LOOKUP                              = 0x24\n\tBPF_XDP                                    = 0x25\n\tBPF_SK_SKB_VERDICT                         = 0x26\n\tBPF_SK_REUSEPORT_SELECT                    = 0x27\n\tBPF_SK_REUSEPORT_SELECT_OR_MIGRATE         = 0x28\n\tBPF_PERF_EVENT                             = 0x29\n\tBPF_TRACE_KPROBE_MULTI                     = 0x2a\n\tBPF_LSM_CGROUP                             = 0x2b\n\tBPF_STRUCT_OPS                             = 0x2c\n\tBPF_NETFILTER                              = 0x2d\n\tBPF_TCX_INGRESS                            = 0x2e\n\tBPF_TCX_EGRESS                             = 0x2f\n\tBPF_TRACE_UPROBE_MULTI                     = 0x30\n\tBPF_LINK_TYPE_UNSPEC                       = 0x0\n\tBPF_LINK_TYPE_RAW_TRACEPOINT               = 0x1\n\tBPF_LINK_TYPE_TRACING                      = 0x2\n\tBPF_LINK_TYPE_CGROUP                       = 0x3\n\tBPF_LINK_TYPE_ITER                         = 0x4\n\tBPF_LINK_TYPE_NETNS                        = 0x5\n\tBPF_LINK_TYPE_XDP                          = 0x6\n\tBPF_LINK_TYPE_PERF_EVENT                   = 0x7\n\tBPF_LINK_TYPE_KPROBE_MULTI                 = 0x8\n\tBPF_LINK_TYPE_STRUCT_OPS                   = 0x9\n\tBPF_LINK_TYPE_NETFILTER                    = 0xa\n\tBPF_LINK_TYPE_TCX                          = 0xb\n\tBPF_LINK_TYPE_UPROBE_MULTI                 = 0xc\n\tBPF_PERF_EVENT_UNSPEC                      = 0x0\n\tBPF_PERF_EVENT_UPROBE                      = 0x1\n\tBPF_PERF_EVENT_URETPROBE                   = 0x2\n\tBPF_PERF_EVENT_KPROBE                      = 0x3\n\tBPF_PERF_EVENT_KRETPROBE                   = 0x4\n\tBPF_PERF_EVENT_TRACEPOINT                  = 0x5\n\tBPF_PERF_EVENT_EVENT                       = 0x6\n\tBPF_F_KPROBE_MULTI_RETURN                  = 0x1\n\tBPF_F_UPROBE_MULTI_RETURN                  = 0x1\n\tBPF_ANY                                    = 0x0\n\tBPF_NOEXIST                                = 0x1\n\tBPF_EXIST                                  = 0x2\n\tBPF_F_LOCK                                 = 0x4\n\tBPF_F_NO_PREALLOC                          = 0x1\n\tBPF_F_NO_COMMON_LRU                        = 0x2\n\tBPF_F_NUMA_NODE                            = 0x4\n\tBPF_F_RDONLY                               = 0x8\n\tBPF_F_WRONLY                               = 0x10\n\tBPF_F_STACK_BUILD_ID                       = 0x20\n\tBPF_F_ZERO_SEED                            = 0x40\n\tBPF_F_RDONLY_PROG                          = 0x80\n\tBPF_F_WRONLY_PROG                          = 0x100\n\tBPF_F_CLONE                                = 0x200\n\tBPF_F_MMAPABLE                             = 0x400\n\tBPF_F_PRESERVE_ELEMS                       = 0x800\n\tBPF_F_INNER_MAP                            = 0x1000\n\tBPF_F_LINK                                 = 0x2000\n\tBPF_F_PATH_FD                              = 0x4000\n\tBPF_STATS_RUN_TIME                         = 0x0\n\tBPF_STACK_BUILD_ID_EMPTY                   = 0x0\n\tBPF_STACK_BUILD_ID_VALID                   = 0x1\n\tBPF_STACK_BUILD_ID_IP                      = 0x2\n\tBPF_F_RECOMPUTE_CSUM                       = 0x1\n\tBPF_F_INVALIDATE_HASH                      = 0x2\n\tBPF_F_HDR_FIELD_MASK                       = 0xf\n\tBPF_F_PSEUDO_HDR                           = 0x10\n\tBPF_F_MARK_MANGLED_0                       = 0x20\n\tBPF_F_MARK_ENFORCE                         = 0x40\n\tBPF_F_INGRESS                              = 0x1\n\tBPF_F_TUNINFO_IPV6                         = 0x1\n\tBPF_F_SKIP_FIELD_MASK                      = 0xff\n\tBPF_F_USER_STACK                           = 0x100\n\tBPF_F_FAST_STACK_CMP                       = 0x200\n\tBPF_F_REUSE_STACKID                        = 0x400\n\tBPF_F_USER_BUILD_ID                        = 0x800\n\tBPF_F_ZERO_CSUM_TX                         = 0x2\n\tBPF_F_DONT_FRAGMENT                        = 0x4\n\tBPF_F_SEQ_NUMBER                           = 0x8\n\tBPF_F_NO_TUNNEL_KEY                        = 0x10\n\tBPF_F_TUNINFO_FLAGS                        = 0x10\n\tBPF_F_INDEX_MASK                           = 0xffffffff\n\tBPF_F_CURRENT_CPU                          = 0xffffffff\n\tBPF_F_CTXLEN_MASK                          = 0xfffff00000000\n\tBPF_F_CURRENT_NETNS                        = -0x1\n\tBPF_CSUM_LEVEL_QUERY                       = 0x0\n\tBPF_CSUM_LEVEL_INC                         = 0x1\n\tBPF_CSUM_LEVEL_DEC                         = 0x2\n\tBPF_CSUM_LEVEL_RESET                       = 0x3\n\tBPF_F_ADJ_ROOM_FIXED_GSO                   = 0x1\n\tBPF_F_ADJ_ROOM_ENCAP_L3_IPV4               = 0x2\n\tBPF_F_ADJ_ROOM_ENCAP_L3_IPV6               = 0x4\n\tBPF_F_ADJ_ROOM_ENCAP_L4_GRE                = 0x8\n\tBPF_F_ADJ_ROOM_ENCAP_L4_UDP                = 0x10\n\tBPF_F_ADJ_ROOM_NO_CSUM_RESET               = 0x20\n\tBPF_F_ADJ_ROOM_ENCAP_L2_ETH                = 0x40\n\tBPF_F_ADJ_ROOM_DECAP_L3_IPV4               = 0x80\n\tBPF_F_ADJ_ROOM_DECAP_L3_IPV6               = 0x100\n\tBPF_ADJ_ROOM_ENCAP_L2_MASK                 = 0xff\n\tBPF_ADJ_ROOM_ENCAP_L2_SHIFT                = 0x38\n\tBPF_F_SYSCTL_BASE_NAME                     = 0x1\n\tBPF_LOCAL_STORAGE_GET_F_CREATE             = 0x1\n\tBPF_SK_STORAGE_GET_F_CREATE                = 0x1\n\tBPF_F_GET_BRANCH_RECORDS_SIZE              = 0x1\n\tBPF_RB_NO_WAKEUP                           = 0x1\n\tBPF_RB_FORCE_WAKEUP                        = 0x2\n\tBPF_RB_AVAIL_DATA                          = 0x0\n\tBPF_RB_RING_SIZE                           = 0x1\n\tBPF_RB_CONS_POS                            = 0x2\n\tBPF_RB_PROD_POS                            = 0x3\n\tBPF_RINGBUF_BUSY_BIT                       = 0x80000000\n\tBPF_RINGBUF_DISCARD_BIT                    = 0x40000000\n\tBPF_RINGBUF_HDR_SZ                         = 0x8\n\tBPF_SK_LOOKUP_F_REPLACE                    = 0x1\n\tBPF_SK_LOOKUP_F_NO_REUSEPORT               = 0x2\n\tBPF_ADJ_ROOM_NET                           = 0x0\n\tBPF_ADJ_ROOM_MAC                           = 0x1\n\tBPF_HDR_START_MAC                          = 0x0\n\tBPF_HDR_START_NET                          = 0x1\n\tBPF_LWT_ENCAP_SEG6                         = 0x0\n\tBPF_LWT_ENCAP_SEG6_INLINE                  = 0x1\n\tBPF_LWT_ENCAP_IP                           = 0x2\n\tBPF_F_BPRM_SECUREEXEC                      = 0x1\n\tBPF_F_BROADCAST                            = 0x8\n\tBPF_F_EXCLUDE_INGRESS                      = 0x10\n\tBPF_SKB_TSTAMP_UNSPEC                      = 0x0\n\tBPF_SKB_TSTAMP_DELIVERY_MONO               = 0x1\n\tBPF_OK                                     = 0x0\n\tBPF_DROP                                   = 0x2\n\tBPF_REDIRECT                               = 0x7\n\tBPF_LWT_REROUTE                            = 0x80\n\tBPF_FLOW_DISSECTOR_CONTINUE                = 0x81\n\tBPF_SOCK_OPS_RTO_CB_FLAG                   = 0x1\n\tBPF_SOCK_OPS_RETRANS_CB_FLAG               = 0x2\n\tBPF_SOCK_OPS_STATE_CB_FLAG                 = 0x4\n\tBPF_SOCK_OPS_RTT_CB_FLAG                   = 0x8\n\tBPF_SOCK_OPS_PARSE_ALL_HDR_OPT_CB_FLAG     = 0x10\n\tBPF_SOCK_OPS_PARSE_UNKNOWN_HDR_OPT_CB_FLAG = 0x20\n\tBPF_SOCK_OPS_WRITE_HDR_OPT_CB_FLAG         = 0x40\n\tBPF_SOCK_OPS_ALL_CB_FLAGS                  = 0x7f\n\tBPF_SOCK_OPS_VOID                          = 0x0\n\tBPF_SOCK_OPS_TIMEOUT_INIT                  = 0x1\n\tBPF_SOCK_OPS_RWND_INIT                     = 0x2\n\tBPF_SOCK_OPS_TCP_CONNECT_CB                = 0x3\n\tBPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB         = 0x4\n\tBPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB        = 0x5\n\tBPF_SOCK_OPS_NEEDS_ECN                     = 0x6\n\tBPF_SOCK_OPS_BASE_RTT                      = 0x7\n\tBPF_SOCK_OPS_RTO_CB                        = 0x8\n\tBPF_SOCK_OPS_RETRANS_CB                    = 0x9\n\tBPF_SOCK_OPS_STATE_CB                      = 0xa\n\tBPF_SOCK_OPS_TCP_LISTEN_CB                 = 0xb\n\tBPF_SOCK_OPS_RTT_CB                        = 0xc\n\tBPF_SOCK_OPS_PARSE_HDR_OPT_CB              = 0xd\n\tBPF_SOCK_OPS_HDR_OPT_LEN_CB                = 0xe\n\tBPF_SOCK_OPS_WRITE_HDR_OPT_CB              = 0xf\n\tBPF_TCP_ESTABLISHED                        = 0x1\n\tBPF_TCP_SYN_SENT                           = 0x2\n\tBPF_TCP_SYN_RECV                           = 0x3\n\tBPF_TCP_FIN_WAIT1                          = 0x4\n\tBPF_TCP_FIN_WAIT2                          = 0x5\n\tBPF_TCP_TIME_WAIT                          = 0x6\n\tBPF_TCP_CLOSE                              = 0x7\n\tBPF_TCP_CLOSE_WAIT                         = 0x8\n\tBPF_TCP_LAST_ACK                           = 0x9\n\tBPF_TCP_LISTEN                             = 0xa\n\tBPF_TCP_CLOSING                            = 0xb\n\tBPF_TCP_NEW_SYN_RECV                       = 0xc\n\tBPF_TCP_MAX_STATES                         = 0xe\n\tTCP_BPF_IW                                 = 0x3e9\n\tTCP_BPF_SNDCWND_CLAMP                      = 0x3ea\n\tTCP_BPF_DELACK_MAX                         = 0x3eb\n\tTCP_BPF_RTO_MIN                            = 0x3ec\n\tTCP_BPF_SYN                                = 0x3ed\n\tTCP_BPF_SYN_IP                             = 0x3ee\n\tTCP_BPF_SYN_MAC                            = 0x3ef\n\tBPF_LOAD_HDR_OPT_TCP_SYN                   = 0x1\n\tBPF_WRITE_HDR_TCP_CURRENT_MSS              = 0x1\n\tBPF_WRITE_HDR_TCP_SYNACK_COOKIE            = 0x2\n\tBPF_DEVCG_ACC_MKNOD                        = 0x1\n\tBPF_DEVCG_ACC_READ                         = 0x2\n\tBPF_DEVCG_ACC_WRITE                        = 0x4\n\tBPF_DEVCG_DEV_BLOCK                        = 0x1\n\tBPF_DEVCG_DEV_CHAR                         = 0x2\n\tBPF_FIB_LOOKUP_DIRECT                      = 0x1\n\tBPF_FIB_LOOKUP_OUTPUT                      = 0x2\n\tBPF_FIB_LOOKUP_SKIP_NEIGH                  = 0x4\n\tBPF_FIB_LOOKUP_TBID                        = 0x8\n\tBPF_FIB_LKUP_RET_SUCCESS                   = 0x0\n\tBPF_FIB_LKUP_RET_BLACKHOLE                 = 0x1\n\tBPF_FIB_LKUP_RET_UNREACHABLE               = 0x2\n\tBPF_FIB_LKUP_RET_PROHIBIT                  = 0x3\n\tBPF_FIB_LKUP_RET_NOT_FWDED                 = 0x4\n\tBPF_FIB_LKUP_RET_FWD_DISABLED              = 0x5\n\tBPF_FIB_LKUP_RET_UNSUPP_LWT                = 0x6\n\tBPF_FIB_LKUP_RET_NO_NEIGH                  = 0x7\n\tBPF_FIB_LKUP_RET_FRAG_NEEDED               = 0x8\n\tBPF_MTU_CHK_SEGS                           = 0x1\n\tBPF_MTU_CHK_RET_SUCCESS                    = 0x0\n\tBPF_MTU_CHK_RET_FRAG_NEEDED                = 0x1\n\tBPF_MTU_CHK_RET_SEGS_TOOBIG                = 0x2\n\tBPF_FD_TYPE_RAW_TRACEPOINT                 = 0x0\n\tBPF_FD_TYPE_TRACEPOINT                     = 0x1\n\tBPF_FD_TYPE_KPROBE                         = 0x2\n\tBPF_FD_TYPE_KRETPROBE                      = 0x3\n\tBPF_FD_TYPE_UPROBE                         = 0x4\n\tBPF_FD_TYPE_URETPROBE                      = 0x5\n\tBPF_FLOW_DISSECTOR_F_PARSE_1ST_FRAG        = 0x1\n\tBPF_FLOW_DISSECTOR_F_STOP_AT_FLOW_LABEL    = 0x2\n\tBPF_FLOW_DISSECTOR_F_STOP_AT_ENCAP         = 0x4\n\tBPF_CORE_FIELD_BYTE_OFFSET                 = 0x0\n\tBPF_CORE_FIELD_BYTE_SIZE                   = 0x1\n\tBPF_CORE_FIELD_EXISTS                      = 0x2\n\tBPF_CORE_FIELD_SIGNED                      = 0x3\n\tBPF_CORE_FIELD_LSHIFT_U64                  = 0x4\n\tBPF_CORE_FIELD_RSHIFT_U64                  = 0x5\n\tBPF_CORE_TYPE_ID_LOCAL                     = 0x6\n\tBPF_CORE_TYPE_ID_TARGET                    = 0x7\n\tBPF_CORE_TYPE_EXISTS                       = 0x8\n\tBPF_CORE_TYPE_SIZE                         = 0x9\n\tBPF_CORE_ENUMVAL_EXISTS                    = 0xa\n\tBPF_CORE_ENUMVAL_VALUE                     = 0xb\n\tBPF_CORE_TYPE_MATCHES                      = 0xc\n\tBPF_F_TIMER_ABS                            = 0x1\n)\n\nconst (\n\tTCA_UNSPEC            = 0x0\n\tTCA_KIND              = 0x1\n\tTCA_OPTIONS           = 0x2\n\tTCA_STATS             = 0x3\n\tTCA_XSTATS            = 0x4\n\tTCA_RATE              = 0x5\n\tTCA_FCNT              = 0x6\n\tTCA_STATS2            = 0x7\n\tTCA_STAB              = 0x8\n\tTCA_PAD               = 0x9\n\tTCA_DUMP_INVISIBLE    = 0xa\n\tTCA_CHAIN             = 0xb\n\tTCA_HW_OFFLOAD        = 0xc\n\tTCA_INGRESS_BLOCK     = 0xd\n\tTCA_EGRESS_BLOCK      = 0xe\n\tTCA_DUMP_FLAGS        = 0xf\n\tTCA_EXT_WARN_MSG      = 0x10\n\tRTNLGRP_NONE          = 0x0\n\tRTNLGRP_LINK          = 0x1\n\tRTNLGRP_NOTIFY        = 0x2\n\tRTNLGRP_NEIGH         = 0x3\n\tRTNLGRP_TC            = 0x4\n\tRTNLGRP_IPV4_IFADDR   = 0x5\n\tRTNLGRP_IPV4_MROUTE   = 0x6\n\tRTNLGRP_IPV4_ROUTE    = 0x7\n\tRTNLGRP_IPV4_RULE     = 0x8\n\tRTNLGRP_IPV6_IFADDR   = 0x9\n\tRTNLGRP_IPV6_MROUTE   = 0xa\n\tRTNLGRP_IPV6_ROUTE    = 0xb\n\tRTNLGRP_IPV6_IFINFO   = 0xc\n\tRTNLGRP_DECnet_IFADDR = 0xd\n\tRTNLGRP_NOP2          = 0xe\n\tRTNLGRP_DECnet_ROUTE  = 0xf\n\tRTNLGRP_DECnet_RULE   = 0x10\n\tRTNLGRP_NOP4          = 0x11\n\tRTNLGRP_IPV6_PREFIX   = 0x12\n\tRTNLGRP_IPV6_RULE     = 0x13\n\tRTNLGRP_ND_USEROPT    = 0x14\n\tRTNLGRP_PHONET_IFADDR = 0x15\n\tRTNLGRP_PHONET_ROUTE  = 0x16\n\tRTNLGRP_DCB           = 0x17\n\tRTNLGRP_IPV4_NETCONF  = 0x18\n\tRTNLGRP_IPV6_NETCONF  = 0x19\n\tRTNLGRP_MDB           = 0x1a\n\tRTNLGRP_MPLS_ROUTE    = 0x1b\n\tRTNLGRP_NSID          = 0x1c\n\tRTNLGRP_MPLS_NETCONF  = 0x1d\n\tRTNLGRP_IPV4_MROUTE_R = 0x1e\n\tRTNLGRP_IPV6_MROUTE_R = 0x1f\n\tRTNLGRP_NEXTHOP       = 0x20\n\tRTNLGRP_BRVLAN        = 0x21\n\tRTNLGRP_MCTP_IFADDR   = 0x22\n\tRTNLGRP_TUNNEL        = 0x23\n\tRTNLGRP_STATS         = 0x24\n\tRTNLGRP_IPV4_MCADDR   = 0x25\n\tRTNLGRP_IPV6_MCADDR   = 0x26\n\tRTNLGRP_IPV6_ACADDR   = 0x27\n\tTCA_ROOT_UNSPEC       = 0x0\n\tTCA_ROOT_TAB          = 0x1\n\tTCA_ROOT_FLAGS        = 0x2\n\tTCA_ROOT_COUNT        = 0x3\n\tTCA_ROOT_TIME_DELTA   = 0x4\n\tTCA_ROOT_EXT_WARN_MSG = 0x5\n)\n\ntype CapUserHeader struct {\n\tVersion uint32\n\tPid     int32\n}\n\ntype CapUserData struct {\n\tEffective   uint32\n\tPermitted   uint32\n\tInheritable uint32\n}\n\nconst (\n\tLINUX_CAPABILITY_VERSION_1 = 0x19980330\n\tLINUX_CAPABILITY_VERSION_2 = 0x20071026\n\tLINUX_CAPABILITY_VERSION_3 = 0x20080522\n)\n\nconst (\n\tLO_FLAGS_READ_ONLY = 0x1\n\tLO_FLAGS_AUTOCLEAR = 0x4\n\tLO_FLAGS_PARTSCAN  = 0x8\n\tLO_FLAGS_DIRECT_IO = 0x10\n)\n\ntype LoopInfo64 struct {\n\tDevice           uint64\n\tInode            uint64\n\tRdevice          uint64\n\tOffset           uint64\n\tSizelimit        uint64\n\tNumber           uint32\n\tEncrypt_type     uint32\n\tEncrypt_key_size uint32\n\tFlags            uint32\n\tFile_name        [64]uint8\n\tCrypt_name       [64]uint8\n\tEncrypt_key      [32]uint8\n\tInit             [2]uint64\n}\ntype LoopConfig struct {\n\tFd   uint32\n\tSize uint32\n\tInfo LoopInfo64\n\t_    [8]uint64\n}\n\ntype TIPCSocketAddr struct {\n\tRef  uint32\n\tNode uint32\n}\n\ntype TIPCServiceRange struct {\n\tType  uint32\n\tLower uint32\n\tUpper uint32\n}\n\ntype TIPCServiceName struct {\n\tType     uint32\n\tInstance uint32\n\tDomain   uint32\n}\n\ntype TIPCEvent struct {\n\tEvent uint32\n\tLower uint32\n\tUpper uint32\n\tPort  TIPCSocketAddr\n\tS     TIPCSubscr\n}\n\ntype TIPCGroupReq struct {\n\tType     uint32\n\tInstance uint32\n\tScope    uint32\n\tFlags    uint32\n}\n\nconst (\n\tTIPC_CLUSTER_SCOPE = 0x2\n\tTIPC_NODE_SCOPE    = 0x3\n)\n\nconst (\n\tSYSLOG_ACTION_CLOSE         = 0\n\tSYSLOG_ACTION_OPEN          = 1\n\tSYSLOG_ACTION_READ          = 2\n\tSYSLOG_ACTION_READ_ALL      = 3\n\tSYSLOG_ACTION_READ_CLEAR    = 4\n\tSYSLOG_ACTION_CLEAR         = 5\n\tSYSLOG_ACTION_CONSOLE_OFF   = 6\n\tSYSLOG_ACTION_CONSOLE_ON    = 7\n\tSYSLOG_ACTION_CONSOLE_LEVEL = 8\n\tSYSLOG_ACTION_SIZE_UNREAD   = 9\n\tSYSLOG_ACTION_SIZE_BUFFER   = 10\n)\n\nconst (\n\tDEVLINK_CMD_UNSPEC                                 = 0x0\n\tDEVLINK_CMD_GET                                    = 0x1\n\tDEVLINK_CMD_SET                                    = 0x2\n\tDEVLINK_CMD_NEW                                    = 0x3\n\tDEVLINK_CMD_DEL                                    = 0x4\n\tDEVLINK_CMD_PORT_GET                               = 0x5\n\tDEVLINK_CMD_PORT_SET                               = 0x6\n\tDEVLINK_CMD_PORT_NEW                               = 0x7\n\tDEVLINK_CMD_PORT_DEL                               = 0x8\n\tDEVLINK_CMD_PORT_SPLIT                             = 0x9\n\tDEVLINK_CMD_PORT_UNSPLIT                           = 0xa\n\tDEVLINK_CMD_SB_GET                                 = 0xb\n\tDEVLINK_CMD_SB_SET                                 = 0xc\n\tDEVLINK_CMD_SB_NEW                                 = 0xd\n\tDEVLINK_CMD_SB_DEL                                 = 0xe\n\tDEVLINK_CMD_SB_POOL_GET                            = 0xf\n\tDEVLINK_CMD_SB_POOL_SET                            = 0x10\n\tDEVLINK_CMD_SB_POOL_NEW                            = 0x11\n\tDEVLINK_CMD_SB_POOL_DEL                            = 0x12\n\tDEVLINK_CMD_SB_PORT_POOL_GET                       = 0x13\n\tDEVLINK_CMD_SB_PORT_POOL_SET                       = 0x14\n\tDEVLINK_CMD_SB_PORT_POOL_NEW                       = 0x15\n\tDEVLINK_CMD_SB_PORT_POOL_DEL                       = 0x16\n\tDEVLINK_CMD_SB_TC_POOL_BIND_GET                    = 0x17\n\tDEVLINK_CMD_SB_TC_POOL_BIND_SET                    = 0x18\n\tDEVLINK_CMD_SB_TC_POOL_BIND_NEW                    = 0x19\n\tDEVLINK_CMD_SB_TC_POOL_BIND_DEL                    = 0x1a\n\tDEVLINK_CMD_SB_OCC_SNAPSHOT                        = 0x1b\n\tDEVLINK_CMD_SB_OCC_MAX_CLEAR                       = 0x1c\n\tDEVLINK_CMD_ESWITCH_GET                            = 0x1d\n\tDEVLINK_CMD_ESWITCH_SET                            = 0x1e\n\tDEVLINK_CMD_DPIPE_TABLE_GET                        = 0x1f\n\tDEVLINK_CMD_DPIPE_ENTRIES_GET                      = 0x20\n\tDEVLINK_CMD_DPIPE_HEADERS_GET                      = 0x21\n\tDEVLINK_CMD_DPIPE_TABLE_COUNTERS_SET               = 0x22\n\tDEVLINK_CMD_RESOURCE_SET                           = 0x23\n\tDEVLINK_CMD_RESOURCE_DUMP                          = 0x24\n\tDEVLINK_CMD_RELOAD                                 = 0x25\n\tDEVLINK_CMD_PARAM_GET                              = 0x26\n\tDEVLINK_CMD_PARAM_SET                              = 0x27\n\tDEVLINK_CMD_PARAM_NEW                              = 0x28\n\tDEVLINK_CMD_PARAM_DEL                              = 0x29\n\tDEVLINK_CMD_REGION_GET                             = 0x2a\n\tDEVLINK_CMD_REGION_SET                             = 0x2b\n\tDEVLINK_CMD_REGION_NEW                             = 0x2c\n\tDEVLINK_CMD_REGION_DEL                             = 0x2d\n\tDEVLINK_CMD_REGION_READ                            = 0x2e\n\tDEVLINK_CMD_PORT_PARAM_GET                         = 0x2f\n\tDEVLINK_CMD_PORT_PARAM_SET                         = 0x30\n\tDEVLINK_CMD_PORT_PARAM_NEW                         = 0x31\n\tDEVLINK_CMD_PORT_PARAM_DEL                         = 0x32\n\tDEVLINK_CMD_INFO_GET                               = 0x33\n\tDEVLINK_CMD_HEALTH_REPORTER_GET                    = 0x34\n\tDEVLINK_CMD_HEALTH_REPORTER_SET                    = 0x35\n\tDEVLINK_CMD_HEALTH_REPORTER_RECOVER                = 0x36\n\tDEVLINK_CMD_HEALTH_REPORTER_DIAGNOSE               = 0x37\n\tDEVLINK_CMD_HEALTH_REPORTER_DUMP_GET               = 0x38\n\tDEVLINK_CMD_HEALTH_REPORTER_DUMP_CLEAR             = 0x39\n\tDEVLINK_CMD_FLASH_UPDATE                           = 0x3a\n\tDEVLINK_CMD_FLASH_UPDATE_END                       = 0x3b\n\tDEVLINK_CMD_FLASH_UPDATE_STATUS                    = 0x3c\n\tDEVLINK_CMD_TRAP_GET                               = 0x3d\n\tDEVLINK_CMD_TRAP_SET                               = 0x3e\n\tDEVLINK_CMD_TRAP_NEW                               = 0x3f\n\tDEVLINK_CMD_TRAP_DEL                               = 0x40\n\tDEVLINK_CMD_TRAP_GROUP_GET                         = 0x41\n\tDEVLINK_CMD_TRAP_GROUP_SET                         = 0x42\n\tDEVLINK_CMD_TRAP_GROUP_NEW                         = 0x43\n\tDEVLINK_CMD_TRAP_GROUP_DEL                         = 0x44\n\tDEVLINK_CMD_TRAP_POLICER_GET                       = 0x45\n\tDEVLINK_CMD_TRAP_POLICER_SET                       = 0x46\n\tDEVLINK_CMD_TRAP_POLICER_NEW                       = 0x47\n\tDEVLINK_CMD_TRAP_POLICER_DEL                       = 0x48\n\tDEVLINK_CMD_HEALTH_REPORTER_TEST                   = 0x49\n\tDEVLINK_CMD_RATE_GET                               = 0x4a\n\tDEVLINK_CMD_RATE_SET                               = 0x4b\n\tDEVLINK_CMD_RATE_NEW                               = 0x4c\n\tDEVLINK_CMD_RATE_DEL                               = 0x4d\n\tDEVLINK_CMD_LINECARD_GET                           = 0x4e\n\tDEVLINK_CMD_LINECARD_SET                           = 0x4f\n\tDEVLINK_CMD_LINECARD_NEW                           = 0x50\n\tDEVLINK_CMD_LINECARD_DEL                           = 0x51\n\tDEVLINK_CMD_SELFTESTS_GET                          = 0x52\n\tDEVLINK_CMD_MAX                                    = 0x54\n\tDEVLINK_PORT_TYPE_NOTSET                           = 0x0\n\tDEVLINK_PORT_TYPE_AUTO                             = 0x1\n\tDEVLINK_PORT_TYPE_ETH                              = 0x2\n\tDEVLINK_PORT_TYPE_IB                               = 0x3\n\tDEVLINK_SB_POOL_TYPE_INGRESS                       = 0x0\n\tDEVLINK_SB_POOL_TYPE_EGRESS                        = 0x1\n\tDEVLINK_SB_THRESHOLD_TYPE_STATIC                   = 0x0\n\tDEVLINK_SB_THRESHOLD_TYPE_DYNAMIC                  = 0x1\n\tDEVLINK_ESWITCH_MODE_LEGACY                        = 0x0\n\tDEVLINK_ESWITCH_MODE_SWITCHDEV                     = 0x1\n\tDEVLINK_ESWITCH_INLINE_MODE_NONE                   = 0x0\n\tDEVLINK_ESWITCH_INLINE_MODE_LINK                   = 0x1\n\tDEVLINK_ESWITCH_INLINE_MODE_NETWORK                = 0x2\n\tDEVLINK_ESWITCH_INLINE_MODE_TRANSPORT              = 0x3\n\tDEVLINK_ESWITCH_ENCAP_MODE_NONE                    = 0x0\n\tDEVLINK_ESWITCH_ENCAP_MODE_BASIC                   = 0x1\n\tDEVLINK_PORT_FLAVOUR_PHYSICAL                      = 0x0\n\tDEVLINK_PORT_FLAVOUR_CPU                           = 0x1\n\tDEVLINK_PORT_FLAVOUR_DSA                           = 0x2\n\tDEVLINK_PORT_FLAVOUR_PCI_PF                        = 0x3\n\tDEVLINK_PORT_FLAVOUR_PCI_VF                        = 0x4\n\tDEVLINK_PORT_FLAVOUR_VIRTUAL                       = 0x5\n\tDEVLINK_PORT_FLAVOUR_UNUSED                        = 0x6\n\tDEVLINK_PARAM_CMODE_RUNTIME                        = 0x0\n\tDEVLINK_PARAM_CMODE_DRIVERINIT                     = 0x1\n\tDEVLINK_PARAM_CMODE_PERMANENT                      = 0x2\n\tDEVLINK_PARAM_CMODE_MAX                            = 0x2\n\tDEVLINK_PARAM_FW_LOAD_POLICY_VALUE_DRIVER          = 0x0\n\tDEVLINK_PARAM_FW_LOAD_POLICY_VALUE_FLASH           = 0x1\n\tDEVLINK_PARAM_FW_LOAD_POLICY_VALUE_DISK            = 0x2\n\tDEVLINK_PARAM_FW_LOAD_POLICY_VALUE_UNKNOWN         = 0x3\n\tDEVLINK_PARAM_RESET_DEV_ON_DRV_PROBE_VALUE_UNKNOWN = 0x0\n\tDEVLINK_PARAM_RESET_DEV_ON_DRV_PROBE_VALUE_ALWAYS  = 0x1\n\tDEVLINK_PARAM_RESET_DEV_ON_DRV_PROBE_VALUE_NEVER   = 0x2\n\tDEVLINK_PARAM_RESET_DEV_ON_DRV_PROBE_VALUE_DISK    = 0x3\n\tDEVLINK_ATTR_STATS_RX_PACKETS                      = 0x0\n\tDEVLINK_ATTR_STATS_RX_BYTES                        = 0x1\n\tDEVLINK_ATTR_STATS_RX_DROPPED                      = 0x2\n\tDEVLINK_ATTR_STATS_MAX                             = 0x2\n\tDEVLINK_FLASH_OVERWRITE_SETTINGS_BIT               = 0x0\n\tDEVLINK_FLASH_OVERWRITE_IDENTIFIERS_BIT            = 0x1\n\tDEVLINK_FLASH_OVERWRITE_MAX_BIT                    = 0x1\n\tDEVLINK_TRAP_ACTION_DROP                           = 0x0\n\tDEVLINK_TRAP_ACTION_TRAP                           = 0x1\n\tDEVLINK_TRAP_ACTION_MIRROR                         = 0x2\n\tDEVLINK_TRAP_TYPE_DROP                             = 0x0\n\tDEVLINK_TRAP_TYPE_EXCEPTION                        = 0x1\n\tDEVLINK_TRAP_TYPE_CONTROL                          = 0x2\n\tDEVLINK_ATTR_TRAP_METADATA_TYPE_IN_PORT            = 0x0\n\tDEVLINK_ATTR_TRAP_METADATA_TYPE_FA_COOKIE          = 0x1\n\tDEVLINK_RELOAD_ACTION_UNSPEC                       = 0x0\n\tDEVLINK_RELOAD_ACTION_DRIVER_REINIT                = 0x1\n\tDEVLINK_RELOAD_ACTION_FW_ACTIVATE                  = 0x2\n\tDEVLINK_RELOAD_ACTION_MAX                          = 0x2\n\tDEVLINK_RELOAD_LIMIT_UNSPEC                        = 0x0\n\tDEVLINK_RELOAD_LIMIT_NO_RESET                      = 0x1\n\tDEVLINK_RELOAD_LIMIT_MAX                           = 0x1\n\tDEVLINK_ATTR_UNSPEC                                = 0x0\n\tDEVLINK_ATTR_BUS_NAME                              = 0x1\n\tDEVLINK_ATTR_DEV_NAME                              = 0x2\n\tDEVLINK_ATTR_PORT_INDEX                            = 0x3\n\tDEVLINK_ATTR_PORT_TYPE                             = 0x4\n\tDEVLINK_ATTR_PORT_DESIRED_TYPE                     = 0x5\n\tDEVLINK_ATTR_PORT_NETDEV_IFINDEX                   = 0x6\n\tDEVLINK_ATTR_PORT_NETDEV_NAME                      = 0x7\n\tDEVLINK_ATTR_PORT_IBDEV_NAME                       = 0x8\n\tDEVLINK_ATTR_PORT_SPLIT_COUNT                      = 0x9\n\tDEVLINK_ATTR_PORT_SPLIT_GROUP                      = 0xa\n\tDEVLINK_ATTR_SB_INDEX                              = 0xb\n\tDEVLINK_ATTR_SB_SIZE                               = 0xc\n\tDEVLINK_ATTR_SB_INGRESS_POOL_COUNT                 = 0xd\n\tDEVLINK_ATTR_SB_EGRESS_POOL_COUNT                  = 0xe\n\tDEVLINK_ATTR_SB_INGRESS_TC_COUNT                   = 0xf\n\tDEVLINK_ATTR_SB_EGRESS_TC_COUNT                    = 0x10\n\tDEVLINK_ATTR_SB_POOL_INDEX                         = 0x11\n\tDEVLINK_ATTR_SB_POOL_TYPE                          = 0x12\n\tDEVLINK_ATTR_SB_POOL_SIZE                          = 0x13\n\tDEVLINK_ATTR_SB_POOL_THRESHOLD_TYPE                = 0x14\n\tDEVLINK_ATTR_SB_THRESHOLD                          = 0x15\n\tDEVLINK_ATTR_SB_TC_INDEX                           = 0x16\n\tDEVLINK_ATTR_SB_OCC_CUR                            = 0x17\n\tDEVLINK_ATTR_SB_OCC_MAX                            = 0x18\n\tDEVLINK_ATTR_ESWITCH_MODE                          = 0x19\n\tDEVLINK_ATTR_ESWITCH_INLINE_MODE                   = 0x1a\n\tDEVLINK_ATTR_DPIPE_TABLES                          = 0x1b\n\tDEVLINK_ATTR_DPIPE_TABLE                           = 0x1c\n\tDEVLINK_ATTR_DPIPE_TABLE_NAME                      = 0x1d\n\tDEVLINK_ATTR_DPIPE_TABLE_SIZE                      = 0x1e\n\tDEVLINK_ATTR_DPIPE_TABLE_MATCHES                   = 0x1f\n\tDEVLINK_ATTR_DPIPE_TABLE_ACTIONS                   = 0x20\n\tDEVLINK_ATTR_DPIPE_TABLE_COUNTERS_ENABLED          = 0x21\n\tDEVLINK_ATTR_DPIPE_ENTRIES                         = 0x22\n\tDEVLINK_ATTR_DPIPE_ENTRY                           = 0x23\n\tDEVLINK_ATTR_DPIPE_ENTRY_INDEX                     = 0x24\n\tDEVLINK_ATTR_DPIPE_ENTRY_MATCH_VALUES              = 0x25\n\tDEVLINK_ATTR_DPIPE_ENTRY_ACTION_VALUES             = 0x26\n\tDEVLINK_ATTR_DPIPE_ENTRY_COUNTER                   = 0x27\n\tDEVLINK_ATTR_DPIPE_MATCH                           = 0x28\n\tDEVLINK_ATTR_DPIPE_MATCH_VALUE                     = 0x29\n\tDEVLINK_ATTR_DPIPE_MATCH_TYPE                      = 0x2a\n\tDEVLINK_ATTR_DPIPE_ACTION                          = 0x2b\n\tDEVLINK_ATTR_DPIPE_ACTION_VALUE                    = 0x2c\n\tDEVLINK_ATTR_DPIPE_ACTION_TYPE                     = 0x2d\n\tDEVLINK_ATTR_DPIPE_VALUE                           = 0x2e\n\tDEVLINK_ATTR_DPIPE_VALUE_MASK                      = 0x2f\n\tDEVLINK_ATTR_DPIPE_VALUE_MAPPING                   = 0x30\n\tDEVLINK_ATTR_DPIPE_HEADERS                         = 0x31\n\tDEVLINK_ATTR_DPIPE_HEADER                          = 0x32\n\tDEVLINK_ATTR_DPIPE_HEADER_NAME                     = 0x33\n\tDEVLINK_ATTR_DPIPE_HEADER_ID                       = 0x34\n\tDEVLINK_ATTR_DPIPE_HEADER_FIELDS                   = 0x35\n\tDEVLINK_ATTR_DPIPE_HEADER_GLOBAL                   = 0x36\n\tDEVLINK_ATTR_DPIPE_HEADER_INDEX                    = 0x37\n\tDEVLINK_ATTR_DPIPE_FIELD                           = 0x38\n\tDEVLINK_ATTR_DPIPE_FIELD_NAME                      = 0x39\n\tDEVLINK_ATTR_DPIPE_FIELD_ID                        = 0x3a\n\tDEVLINK_ATTR_DPIPE_FIELD_BITWIDTH                  = 0x3b\n\tDEVLINK_ATTR_DPIPE_FIELD_MAPPING_TYPE              = 0x3c\n\tDEVLINK_ATTR_PAD                                   = 0x3d\n\tDEVLINK_ATTR_ESWITCH_ENCAP_MODE                    = 0x3e\n\tDEVLINK_ATTR_RESOURCE_LIST                         = 0x3f\n\tDEVLINK_ATTR_RESOURCE                              = 0x40\n\tDEVLINK_ATTR_RESOURCE_NAME                         = 0x41\n\tDEVLINK_ATTR_RESOURCE_ID                           = 0x42\n\tDEVLINK_ATTR_RESOURCE_SIZE                         = 0x43\n\tDEVLINK_ATTR_RESOURCE_SIZE_NEW                     = 0x44\n\tDEVLINK_ATTR_RESOURCE_SIZE_VALID                   = 0x45\n\tDEVLINK_ATTR_RESOURCE_SIZE_MIN                     = 0x46\n\tDEVLINK_ATTR_RESOURCE_SIZE_MAX                     = 0x47\n\tDEVLINK_ATTR_RESOURCE_SIZE_GRAN                    = 0x48\n\tDEVLINK_ATTR_RESOURCE_UNIT                         = 0x49\n\tDEVLINK_ATTR_RESOURCE_OCC                          = 0x4a\n\tDEVLINK_ATTR_DPIPE_TABLE_RESOURCE_ID               = 0x4b\n\tDEVLINK_ATTR_DPIPE_TABLE_RESOURCE_UNITS            = 0x4c\n\tDEVLINK_ATTR_PORT_FLAVOUR                          = 0x4d\n\tDEVLINK_ATTR_PORT_NUMBER                           = 0x4e\n\tDEVLINK_ATTR_PORT_SPLIT_SUBPORT_NUMBER             = 0x4f\n\tDEVLINK_ATTR_PARAM                                 = 0x50\n\tDEVLINK_ATTR_PARAM_NAME                            = 0x51\n\tDEVLINK_ATTR_PARAM_GENERIC                         = 0x52\n\tDEVLINK_ATTR_PARAM_TYPE                            = 0x53\n\tDEVLINK_ATTR_PARAM_VALUES_LIST                     = 0x54\n\tDEVLINK_ATTR_PARAM_VALUE                           = 0x55\n\tDEVLINK_ATTR_PARAM_VALUE_DATA                      = 0x56\n\tDEVLINK_ATTR_PARAM_VALUE_CMODE                     = 0x57\n\tDEVLINK_ATTR_REGION_NAME                           = 0x58\n\tDEVLINK_ATTR_REGION_SIZE                           = 0x59\n\tDEVLINK_ATTR_REGION_SNAPSHOTS                      = 0x5a\n\tDEVLINK_ATTR_REGION_SNAPSHOT                       = 0x5b\n\tDEVLINK_ATTR_REGION_SNAPSHOT_ID                    = 0x5c\n\tDEVLINK_ATTR_REGION_CHUNKS                         = 0x5d\n\tDEVLINK_ATTR_REGION_CHUNK                          = 0x5e\n\tDEVLINK_ATTR_REGION_CHUNK_DATA                     = 0x5f\n\tDEVLINK_ATTR_REGION_CHUNK_ADDR                     = 0x60\n\tDEVLINK_ATTR_REGION_CHUNK_LEN                      = 0x61\n\tDEVLINK_ATTR_INFO_DRIVER_NAME                      = 0x62\n\tDEVLINK_ATTR_INFO_SERIAL_NUMBER                    = 0x63\n\tDEVLINK_ATTR_INFO_VERSION_FIXED                    = 0x64\n\tDEVLINK_ATTR_INFO_VERSION_RUNNING                  = 0x65\n\tDEVLINK_ATTR_INFO_VERSION_STORED                   = 0x66\n\tDEVLINK_ATTR_INFO_VERSION_NAME                     = 0x67\n\tDEVLINK_ATTR_INFO_VERSION_VALUE                    = 0x68\n\tDEVLINK_ATTR_SB_POOL_CELL_SIZE                     = 0x69\n\tDEVLINK_ATTR_FMSG                                  = 0x6a\n\tDEVLINK_ATTR_FMSG_OBJ_NEST_START                   = 0x6b\n\tDEVLINK_ATTR_FMSG_PAIR_NEST_START                  = 0x6c\n\tDEVLINK_ATTR_FMSG_ARR_NEST_START                   = 0x6d\n\tDEVLINK_ATTR_FMSG_NEST_END                         = 0x6e\n\tDEVLINK_ATTR_FMSG_OBJ_NAME                         = 0x6f\n\tDEVLINK_ATTR_FMSG_OBJ_VALUE_TYPE                   = 0x70\n\tDEVLINK_ATTR_FMSG_OBJ_VALUE_DATA                   = 0x71\n\tDEVLINK_ATTR_HEALTH_REPORTER                       = 0x72\n\tDEVLINK_ATTR_HEALTH_REPORTER_NAME                  = 0x73\n\tDEVLINK_ATTR_HEALTH_REPORTER_STATE                 = 0x74\n\tDEVLINK_ATTR_HEALTH_REPORTER_ERR_COUNT             = 0x75\n\tDEVLINK_ATTR_HEALTH_REPORTER_RECOVER_COUNT         = 0x76\n\tDEVLINK_ATTR_HEALTH_REPORTER_DUMP_TS               = 0x77\n\tDEVLINK_ATTR_HEALTH_REPORTER_GRACEFUL_PERIOD       = 0x78\n\tDEVLINK_ATTR_HEALTH_REPORTER_AUTO_RECOVER          = 0x79\n\tDEVLINK_ATTR_FLASH_UPDATE_FILE_NAME                = 0x7a\n\tDEVLINK_ATTR_FLASH_UPDATE_COMPONENT                = 0x7b\n\tDEVLINK_ATTR_FLASH_UPDATE_STATUS_MSG               = 0x7c\n\tDEVLINK_ATTR_FLASH_UPDATE_STATUS_DONE              = 0x7d\n\tDEVLINK_ATTR_FLASH_UPDATE_STATUS_TOTAL             = 0x7e\n\tDEVLINK_ATTR_PORT_PCI_PF_NUMBER                    = 0x7f\n\tDEVLINK_ATTR_PORT_PCI_VF_NUMBER                    = 0x80\n\tDEVLINK_ATTR_STATS                                 = 0x81\n\tDEVLINK_ATTR_TRAP_NAME                             = 0x82\n\tDEVLINK_ATTR_TRAP_ACTION                           = 0x83\n\tDEVLINK_ATTR_TRAP_TYPE                             = 0x84\n\tDEVLINK_ATTR_TRAP_GENERIC                          = 0x85\n\tDEVLINK_ATTR_TRAP_METADATA                         = 0x86\n\tDEVLINK_ATTR_TRAP_GROUP_NAME                       = 0x87\n\tDEVLINK_ATTR_RELOAD_FAILED                         = 0x88\n\tDEVLINK_ATTR_HEALTH_REPORTER_DUMP_TS_NS            = 0x89\n\tDEVLINK_ATTR_NETNS_FD                              = 0x8a\n\tDEVLINK_ATTR_NETNS_PID                             = 0x8b\n\tDEVLINK_ATTR_NETNS_ID                              = 0x8c\n\tDEVLINK_ATTR_HEALTH_REPORTER_AUTO_DUMP             = 0x8d\n\tDEVLINK_ATTR_TRAP_POLICER_ID                       = 0x8e\n\tDEVLINK_ATTR_TRAP_POLICER_RATE                     = 0x8f\n\tDEVLINK_ATTR_TRAP_POLICER_BURST                    = 0x90\n\tDEVLINK_ATTR_PORT_FUNCTION                         = 0x91\n\tDEVLINK_ATTR_INFO_BOARD_SERIAL_NUMBER              = 0x92\n\tDEVLINK_ATTR_PORT_LANES                            = 0x93\n\tDEVLINK_ATTR_PORT_SPLITTABLE                       = 0x94\n\tDEVLINK_ATTR_PORT_EXTERNAL                         = 0x95\n\tDEVLINK_ATTR_PORT_CONTROLLER_NUMBER                = 0x96\n\tDEVLINK_ATTR_FLASH_UPDATE_STATUS_TIMEOUT           = 0x97\n\tDEVLINK_ATTR_FLASH_UPDATE_OVERWRITE_MASK           = 0x98\n\tDEVLINK_ATTR_RELOAD_ACTION                         = 0x99\n\tDEVLINK_ATTR_RELOAD_ACTIONS_PERFORMED              = 0x9a\n\tDEVLINK_ATTR_RELOAD_LIMITS                         = 0x9b\n\tDEVLINK_ATTR_DEV_STATS                             = 0x9c\n\tDEVLINK_ATTR_RELOAD_STATS                          = 0x9d\n\tDEVLINK_ATTR_RELOAD_STATS_ENTRY                    = 0x9e\n\tDEVLINK_ATTR_RELOAD_STATS_LIMIT                    = 0x9f\n\tDEVLINK_ATTR_RELOAD_STATS_VALUE                    = 0xa0\n\tDEVLINK_ATTR_REMOTE_RELOAD_STATS                   = 0xa1\n\tDEVLINK_ATTR_RELOAD_ACTION_INFO                    = 0xa2\n\tDEVLINK_ATTR_RELOAD_ACTION_STATS                   = 0xa3\n\tDEVLINK_ATTR_PORT_PCI_SF_NUMBER                    = 0xa4\n\tDEVLINK_ATTR_RATE_TYPE                             = 0xa5\n\tDEVLINK_ATTR_RATE_TX_SHARE                         = 0xa6\n\tDEVLINK_ATTR_RATE_TX_MAX                           = 0xa7\n\tDEVLINK_ATTR_RATE_NODE_NAME                        = 0xa8\n\tDEVLINK_ATTR_RATE_PARENT_NODE_NAME                 = 0xa9\n\tDEVLINK_ATTR_REGION_MAX_SNAPSHOTS                  = 0xaa\n\tDEVLINK_ATTR_LINECARD_INDEX                        = 0xab\n\tDEVLINK_ATTR_LINECARD_STATE                        = 0xac\n\tDEVLINK_ATTR_LINECARD_TYPE                         = 0xad\n\tDEVLINK_ATTR_LINECARD_SUPPORTED_TYPES              = 0xae\n\tDEVLINK_ATTR_NESTED_DEVLINK                        = 0xaf\n\tDEVLINK_ATTR_SELFTESTS                             = 0xb0\n\tDEVLINK_ATTR_MAX                                   = 0xb3\n\tDEVLINK_DPIPE_FIELD_MAPPING_TYPE_NONE              = 0x0\n\tDEVLINK_DPIPE_FIELD_MAPPING_TYPE_IFINDEX           = 0x1\n\tDEVLINK_DPIPE_MATCH_TYPE_FIELD_EXACT               = 0x0\n\tDEVLINK_DPIPE_ACTION_TYPE_FIELD_MODIFY             = 0x0\n\tDEVLINK_DPIPE_FIELD_ETHERNET_DST_MAC               = 0x0\n\tDEVLINK_DPIPE_FIELD_IPV4_DST_IP                    = 0x0\n\tDEVLINK_DPIPE_FIELD_IPV6_DST_IP                    = 0x0\n\tDEVLINK_DPIPE_HEADER_ETHERNET                      = 0x0\n\tDEVLINK_DPIPE_HEADER_IPV4                          = 0x1\n\tDEVLINK_DPIPE_HEADER_IPV6                          = 0x2\n\tDEVLINK_RESOURCE_UNIT_ENTRY                        = 0x0\n\tDEVLINK_PORT_FUNCTION_ATTR_UNSPEC                  = 0x0\n\tDEVLINK_PORT_FUNCTION_ATTR_HW_ADDR                 = 0x1\n\tDEVLINK_PORT_FN_ATTR_STATE                         = 0x2\n\tDEVLINK_PORT_FN_ATTR_OPSTATE                       = 0x3\n\tDEVLINK_PORT_FN_ATTR_CAPS                          = 0x4\n\tDEVLINK_PORT_FUNCTION_ATTR_MAX                     = 0x6\n)\n\ntype FsverityDigest struct {\n\tAlgorithm uint16\n\tSize      uint16\n}\n\ntype FsverityEnableArg struct {\n\tVersion        uint32\n\tHash_algorithm uint32\n\tBlock_size     uint32\n\tSalt_size      uint32\n\tSalt_ptr       uint64\n\tSig_size       uint32\n\t_              uint32\n\tSig_ptr        uint64\n\t_              [11]uint64\n}\n\ntype Nhmsg struct {\n\tFamily   uint8\n\tScope    uint8\n\tProtocol uint8\n\tResvd    uint8\n\tFlags    uint32\n}\n\nconst SizeofNhmsg = 0x8\n\ntype NexthopGrp struct {\n\tId     uint32\n\tWeight uint8\n\tHigh   uint8\n\tResvd2 uint16\n}\n\nconst SizeofNexthopGrp = 0x8\n\nconst (\n\tNHA_UNSPEC     = 0x0\n\tNHA_ID         = 0x1\n\tNHA_GROUP      = 0x2\n\tNHA_GROUP_TYPE = 0x3\n\tNHA_BLACKHOLE  = 0x4\n\tNHA_OIF        = 0x5\n\tNHA_GATEWAY    = 0x6\n\tNHA_ENCAP_TYPE = 0x7\n\tNHA_ENCAP      = 0x8\n\tNHA_GROUPS     = 0x9\n\tNHA_MASTER     = 0xa\n)\n\nconst (\n\tCAN_RAW_FILTER        = 0x1\n\tCAN_RAW_ERR_FILTER    = 0x2\n\tCAN_RAW_LOOPBACK      = 0x3\n\tCAN_RAW_RECV_OWN_MSGS = 0x4\n\tCAN_RAW_FD_FRAMES     = 0x5\n\tCAN_RAW_JOIN_FILTERS  = 0x6\n)\n\ntype WatchdogInfo struct {\n\tOptions  uint32\n\tVersion  uint32\n\tIdentity [32]uint8\n}\n\ntype PPSFData struct {\n\tInfo    PPSKInfo\n\tTimeout PPSKTime\n}\n\ntype PPSKParams struct {\n\tApi_version   int32\n\tMode          int32\n\tAssert_off_tu PPSKTime\n\tClear_off_tu  PPSKTime\n}\n\ntype PPSKTime struct {\n\tSec   int64\n\tNsec  int32\n\tFlags uint32\n}\n\nconst (\n\tLWTUNNEL_ENCAP_NONE       = 0x0\n\tLWTUNNEL_ENCAP_MPLS       = 0x1\n\tLWTUNNEL_ENCAP_IP         = 0x2\n\tLWTUNNEL_ENCAP_ILA        = 0x3\n\tLWTUNNEL_ENCAP_IP6        = 0x4\n\tLWTUNNEL_ENCAP_SEG6       = 0x5\n\tLWTUNNEL_ENCAP_BPF        = 0x6\n\tLWTUNNEL_ENCAP_SEG6_LOCAL = 0x7\n\tLWTUNNEL_ENCAP_RPL        = 0x8\n\tLWTUNNEL_ENCAP_IOAM6      = 0x9\n\tLWTUNNEL_ENCAP_XFRM       = 0xa\n\tLWTUNNEL_ENCAP_MAX        = 0xa\n\n\tMPLS_IPTUNNEL_UNSPEC = 0x0\n\tMPLS_IPTUNNEL_DST    = 0x1\n\tMPLS_IPTUNNEL_TTL    = 0x2\n\tMPLS_IPTUNNEL_MAX    = 0x2\n)\n\nconst (\n\tETHTOOL_ID_UNSPEC                                                       = 0x0\n\tETHTOOL_RX_COPYBREAK                                                    = 0x1\n\tETHTOOL_TX_COPYBREAK                                                    = 0x2\n\tETHTOOL_PFC_PREVENTION_TOUT                                             = 0x3\n\tETHTOOL_TUNABLE_UNSPEC                                                  = 0x0\n\tETHTOOL_TUNABLE_U8                                                      = 0x1\n\tETHTOOL_TUNABLE_U16                                                     = 0x2\n\tETHTOOL_TUNABLE_U32                                                     = 0x3\n\tETHTOOL_TUNABLE_U64                                                     = 0x4\n\tETHTOOL_TUNABLE_STRING                                                  = 0x5\n\tETHTOOL_TUNABLE_S8                                                      = 0x6\n\tETHTOOL_TUNABLE_S16                                                     = 0x7\n\tETHTOOL_TUNABLE_S32                                                     = 0x8\n\tETHTOOL_TUNABLE_S64                                                     = 0x9\n\tETHTOOL_PHY_ID_UNSPEC                                                   = 0x0\n\tETHTOOL_PHY_DOWNSHIFT                                                   = 0x1\n\tETHTOOL_PHY_FAST_LINK_DOWN                                              = 0x2\n\tETHTOOL_PHY_EDPD                                                        = 0x3\n\tETHTOOL_LINK_EXT_STATE_AUTONEG                                          = 0x0\n\tETHTOOL_LINK_EXT_STATE_LINK_TRAINING_FAILURE                            = 0x1\n\tETHTOOL_LINK_EXT_STATE_LINK_LOGICAL_MISMATCH                            = 0x2\n\tETHTOOL_LINK_EXT_STATE_BAD_SIGNAL_INTEGRITY                             = 0x3\n\tETHTOOL_LINK_EXT_STATE_NO_CABLE                                         = 0x4\n\tETHTOOL_LINK_EXT_STATE_CABLE_ISSUE                                      = 0x5\n\tETHTOOL_LINK_EXT_STATE_EEPROM_ISSUE                                     = 0x6\n\tETHTOOL_LINK_EXT_STATE_CALIBRATION_FAILURE                              = 0x7\n\tETHTOOL_LINK_EXT_STATE_POWER_BUDGET_EXCEEDED                            = 0x8\n\tETHTOOL_LINK_EXT_STATE_OVERHEAT                                         = 0x9\n\tETHTOOL_LINK_EXT_SUBSTATE_AN_NO_PARTNER_DETECTED                        = 0x1\n\tETHTOOL_LINK_EXT_SUBSTATE_AN_ACK_NOT_RECEIVED                           = 0x2\n\tETHTOOL_LINK_EXT_SUBSTATE_AN_NEXT_PAGE_EXCHANGE_FAILED                  = 0x3\n\tETHTOOL_LINK_EXT_SUBSTATE_AN_NO_PARTNER_DETECTED_FORCE_MODE             = 0x4\n\tETHTOOL_LINK_EXT_SUBSTATE_AN_FEC_MISMATCH_DURING_OVERRIDE               = 0x5\n\tETHTOOL_LINK_EXT_SUBSTATE_AN_NO_HCD                                     = 0x6\n\tETHTOOL_LINK_EXT_SUBSTATE_LT_KR_FRAME_LOCK_NOT_ACQUIRED                 = 0x1\n\tETHTOOL_LINK_EXT_SUBSTATE_LT_KR_LINK_INHIBIT_TIMEOUT                    = 0x2\n\tETHTOOL_LINK_EXT_SUBSTATE_LT_KR_LINK_PARTNER_DID_NOT_SET_RECEIVER_READY = 0x3\n\tETHTOOL_LINK_EXT_SUBSTATE_LT_REMOTE_FAULT                               = 0x4\n\tETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_ACQUIRE_BLOCK_LOCK            = 0x1\n\tETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_ACQUIRE_AM_LOCK               = 0x2\n\tETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_GET_ALIGN_STATUS              = 0x3\n\tETHTOOL_LINK_EXT_SUBSTATE_LLM_FC_FEC_IS_NOT_LOCKED                      = 0x4\n\tETHTOOL_LINK_EXT_SUBSTATE_LLM_RS_FEC_IS_NOT_LOCKED                      = 0x5\n\tETHTOOL_LINK_EXT_SUBSTATE_BSI_LARGE_NUMBER_OF_PHYSICAL_ERRORS           = 0x1\n\tETHTOOL_LINK_EXT_SUBSTATE_BSI_UNSUPPORTED_RATE                          = 0x2\n\tETHTOOL_LINK_EXT_SUBSTATE_CI_UNSUPPORTED_CABLE                          = 0x1\n\tETHTOOL_LINK_EXT_SUBSTATE_CI_CABLE_TEST_FAILURE                         = 0x2\n\tETHTOOL_FLASH_ALL_REGIONS                                               = 0x0\n\tETHTOOL_F_UNSUPPORTED__BIT                                              = 0x0\n\tETHTOOL_F_WISH__BIT                                                     = 0x1\n\tETHTOOL_F_COMPAT__BIT                                                   = 0x2\n\tETHTOOL_FEC_NONE_BIT                                                    = 0x0\n\tETHTOOL_FEC_AUTO_BIT                                                    = 0x1\n\tETHTOOL_FEC_OFF_BIT                                                     = 0x2\n\tETHTOOL_FEC_RS_BIT                                                      = 0x3\n\tETHTOOL_FEC_BASER_BIT                                                   = 0x4\n\tETHTOOL_FEC_LLRS_BIT                                                    = 0x5\n\tETHTOOL_LINK_MODE_10baseT_Half_BIT                                      = 0x0\n\tETHTOOL_LINK_MODE_10baseT_Full_BIT                                      = 0x1\n\tETHTOOL_LINK_MODE_100baseT_Half_BIT                                     = 0x2\n\tETHTOOL_LINK_MODE_100baseT_Full_BIT                                     = 0x3\n\tETHTOOL_LINK_MODE_1000baseT_Half_BIT                                    = 0x4\n\tETHTOOL_LINK_MODE_1000baseT_Full_BIT                                    = 0x5\n\tETHTOOL_LINK_MODE_Autoneg_BIT                                           = 0x6\n\tETHTOOL_LINK_MODE_TP_BIT                                                = 0x7\n\tETHTOOL_LINK_MODE_AUI_BIT                                               = 0x8\n\tETHTOOL_LINK_MODE_MII_BIT                                               = 0x9\n\tETHTOOL_LINK_MODE_FIBRE_BIT                                             = 0xa\n\tETHTOOL_LINK_MODE_BNC_BIT                                               = 0xb\n\tETHTOOL_LINK_MODE_10000baseT_Full_BIT                                   = 0xc\n\tETHTOOL_LINK_MODE_Pause_BIT                                             = 0xd\n\tETHTOOL_LINK_MODE_Asym_Pause_BIT                                        = 0xe\n\tETHTOOL_LINK_MODE_2500baseX_Full_BIT                                    = 0xf\n\tETHTOOL_LINK_MODE_Backplane_BIT                                         = 0x10\n\tETHTOOL_LINK_MODE_1000baseKX_Full_BIT                                   = 0x11\n\tETHTOOL_LINK_MODE_10000baseKX4_Full_BIT                                 = 0x12\n\tETHTOOL_LINK_MODE_10000baseKR_Full_BIT                                  = 0x13\n\tETHTOOL_LINK_MODE_10000baseR_FEC_BIT                                    = 0x14\n\tETHTOOL_LINK_MODE_20000baseMLD2_Full_BIT                                = 0x15\n\tETHTOOL_LINK_MODE_20000baseKR2_Full_BIT                                 = 0x16\n\tETHTOOL_LINK_MODE_40000baseKR4_Full_BIT                                 = 0x17\n\tETHTOOL_LINK_MODE_40000baseCR4_Full_BIT                                 = 0x18\n\tETHTOOL_LINK_MODE_40000baseSR4_Full_BIT                                 = 0x19\n\tETHTOOL_LINK_MODE_40000baseLR4_Full_BIT                                 = 0x1a\n\tETHTOOL_LINK_MODE_56000baseKR4_Full_BIT                                 = 0x1b\n\tETHTOOL_LINK_MODE_56000baseCR4_Full_BIT                                 = 0x1c\n\tETHTOOL_LINK_MODE_56000baseSR4_Full_BIT                                 = 0x1d\n\tETHTOOL_LINK_MODE_56000baseLR4_Full_BIT                                 = 0x1e\n\tETHTOOL_LINK_MODE_25000baseCR_Full_BIT                                  = 0x1f\n\tETHTOOL_LINK_MODE_25000baseKR_Full_BIT                                  = 0x20\n\tETHTOOL_LINK_MODE_25000baseSR_Full_BIT                                  = 0x21\n\tETHTOOL_LINK_MODE_50000baseCR2_Full_BIT                                 = 0x22\n\tETHTOOL_LINK_MODE_50000baseKR2_Full_BIT                                 = 0x23\n\tETHTOOL_LINK_MODE_100000baseKR4_Full_BIT                                = 0x24\n\tETHTOOL_LINK_MODE_100000baseSR4_Full_BIT                                = 0x25\n\tETHTOOL_LINK_MODE_100000baseCR4_Full_BIT                                = 0x26\n\tETHTOOL_LINK_MODE_100000baseLR4_ER4_Full_BIT                            = 0x27\n\tETHTOOL_LINK_MODE_50000baseSR2_Full_BIT                                 = 0x28\n\tETHTOOL_LINK_MODE_1000baseX_Full_BIT                                    = 0x29\n\tETHTOOL_LINK_MODE_10000baseCR_Full_BIT                                  = 0x2a\n\tETHTOOL_LINK_MODE_10000baseSR_Full_BIT                                  = 0x2b\n\tETHTOOL_LINK_MODE_10000baseLR_Full_BIT                                  = 0x2c\n\tETHTOOL_LINK_MODE_10000baseLRM_Full_BIT                                 = 0x2d\n\tETHTOOL_LINK_MODE_10000baseER_Full_BIT                                  = 0x2e\n\tETHTOOL_LINK_MODE_2500baseT_Full_BIT                                    = 0x2f\n\tETHTOOL_LINK_MODE_5000baseT_Full_BIT                                    = 0x30\n\tETHTOOL_LINK_MODE_FEC_NONE_BIT                                          = 0x31\n\tETHTOOL_LINK_MODE_FEC_RS_BIT                                            = 0x32\n\tETHTOOL_LINK_MODE_FEC_BASER_BIT                                         = 0x33\n\tETHTOOL_LINK_MODE_50000baseKR_Full_BIT                                  = 0x34\n\tETHTOOL_LINK_MODE_50000baseSR_Full_BIT                                  = 0x35\n\tETHTOOL_LINK_MODE_50000baseCR_Full_BIT                                  = 0x36\n\tETHTOOL_LINK_MODE_50000baseLR_ER_FR_Full_BIT                            = 0x37\n\tETHTOOL_LINK_MODE_50000baseDR_Full_BIT                                  = 0x38\n\tETHTOOL_LINK_MODE_100000baseKR2_Full_BIT                                = 0x39\n\tETHTOOL_LINK_MODE_100000baseSR2_Full_BIT                                = 0x3a\n\tETHTOOL_LINK_MODE_100000baseCR2_Full_BIT                                = 0x3b\n\tETHTOOL_LINK_MODE_100000baseLR2_ER2_FR2_Full_BIT                        = 0x3c\n\tETHTOOL_LINK_MODE_100000baseDR2_Full_BIT                                = 0x3d\n\tETHTOOL_LINK_MODE_200000baseKR4_Full_BIT                                = 0x3e\n\tETHTOOL_LINK_MODE_200000baseSR4_Full_BIT                                = 0x3f\n\tETHTOOL_LINK_MODE_200000baseLR4_ER4_FR4_Full_BIT                        = 0x40\n\tETHTOOL_LINK_MODE_200000baseDR4_Full_BIT                                = 0x41\n\tETHTOOL_LINK_MODE_200000baseCR4_Full_BIT                                = 0x42\n\tETHTOOL_LINK_MODE_100baseT1_Full_BIT                                    = 0x43\n\tETHTOOL_LINK_MODE_1000baseT1_Full_BIT                                   = 0x44\n\tETHTOOL_LINK_MODE_400000baseKR8_Full_BIT                                = 0x45\n\tETHTOOL_LINK_MODE_400000baseSR8_Full_BIT                                = 0x46\n\tETHTOOL_LINK_MODE_400000baseLR8_ER8_FR8_Full_BIT                        = 0x47\n\tETHTOOL_LINK_MODE_400000baseDR8_Full_BIT                                = 0x48\n\tETHTOOL_LINK_MODE_400000baseCR8_Full_BIT                                = 0x49\n\tETHTOOL_LINK_MODE_FEC_LLRS_BIT                                          = 0x4a\n\tETHTOOL_LINK_MODE_100000baseKR_Full_BIT                                 = 0x4b\n\tETHTOOL_LINK_MODE_100000baseSR_Full_BIT                                 = 0x4c\n\tETHTOOL_LINK_MODE_100000baseLR_ER_FR_Full_BIT                           = 0x4d\n\tETHTOOL_LINK_MODE_100000baseCR_Full_BIT                                 = 0x4e\n\tETHTOOL_LINK_MODE_100000baseDR_Full_BIT                                 = 0x4f\n\tETHTOOL_LINK_MODE_200000baseKR2_Full_BIT                                = 0x50\n\tETHTOOL_LINK_MODE_200000baseSR2_Full_BIT                                = 0x51\n\tETHTOOL_LINK_MODE_200000baseLR2_ER2_FR2_Full_BIT                        = 0x52\n\tETHTOOL_LINK_MODE_200000baseDR2_Full_BIT                                = 0x53\n\tETHTOOL_LINK_MODE_200000baseCR2_Full_BIT                                = 0x54\n\tETHTOOL_LINK_MODE_400000baseKR4_Full_BIT                                = 0x55\n\tETHTOOL_LINK_MODE_400000baseSR4_Full_BIT                                = 0x56\n\tETHTOOL_LINK_MODE_400000baseLR4_ER4_FR4_Full_BIT                        = 0x57\n\tETHTOOL_LINK_MODE_400000baseDR4_Full_BIT                                = 0x58\n\tETHTOOL_LINK_MODE_400000baseCR4_Full_BIT                                = 0x59\n\tETHTOOL_LINK_MODE_100baseFX_Half_BIT                                    = 0x5a\n\tETHTOOL_LINK_MODE_100baseFX_Full_BIT                                    = 0x5b\n\n\tETHTOOL_MSG_USER_NONE                     = 0x0\n\tETHTOOL_MSG_STRSET_GET                    = 0x1\n\tETHTOOL_MSG_LINKINFO_GET                  = 0x2\n\tETHTOOL_MSG_LINKINFO_SET                  = 0x3\n\tETHTOOL_MSG_LINKMODES_GET                 = 0x4\n\tETHTOOL_MSG_LINKMODES_SET                 = 0x5\n\tETHTOOL_MSG_LINKSTATE_GET                 = 0x6\n\tETHTOOL_MSG_DEBUG_GET                     = 0x7\n\tETHTOOL_MSG_DEBUG_SET                     = 0x8\n\tETHTOOL_MSG_WOL_GET                       = 0x9\n\tETHTOOL_MSG_WOL_SET                       = 0xa\n\tETHTOOL_MSG_FEATURES_GET                  = 0xb\n\tETHTOOL_MSG_FEATURES_SET                  = 0xc\n\tETHTOOL_MSG_PRIVFLAGS_GET                 = 0xd\n\tETHTOOL_MSG_PRIVFLAGS_SET                 = 0xe\n\tETHTOOL_MSG_RINGS_GET                     = 0xf\n\tETHTOOL_MSG_RINGS_SET                     = 0x10\n\tETHTOOL_MSG_CHANNELS_GET                  = 0x11\n\tETHTOOL_MSG_CHANNELS_SET                  = 0x12\n\tETHTOOL_MSG_COALESCE_GET                  = 0x13\n\tETHTOOL_MSG_COALESCE_SET                  = 0x14\n\tETHTOOL_MSG_PAUSE_GET                     = 0x15\n\tETHTOOL_MSG_PAUSE_SET                     = 0x16\n\tETHTOOL_MSG_EEE_GET                       = 0x17\n\tETHTOOL_MSG_EEE_SET                       = 0x18\n\tETHTOOL_MSG_TSINFO_GET                    = 0x19\n\tETHTOOL_MSG_CABLE_TEST_ACT                = 0x1a\n\tETHTOOL_MSG_CABLE_TEST_TDR_ACT            = 0x1b\n\tETHTOOL_MSG_TUNNEL_INFO_GET               = 0x1c\n\tETHTOOL_MSG_FEC_GET                       = 0x1d\n\tETHTOOL_MSG_FEC_SET                       = 0x1e\n\tETHTOOL_MSG_MODULE_EEPROM_GET             = 0x1f\n\tETHTOOL_MSG_STATS_GET                     = 0x20\n\tETHTOOL_MSG_PHC_VCLOCKS_GET               = 0x21\n\tETHTOOL_MSG_MODULE_GET                    = 0x22\n\tETHTOOL_MSG_MODULE_SET                    = 0x23\n\tETHTOOL_MSG_PSE_GET                       = 0x24\n\tETHTOOL_MSG_PSE_SET                       = 0x25\n\tETHTOOL_MSG_RSS_GET                       = 0x26\n\tETHTOOL_MSG_PLCA_GET_CFG                  = 0x27\n\tETHTOOL_MSG_PLCA_SET_CFG                  = 0x28\n\tETHTOOL_MSG_PLCA_GET_STATUS               = 0x29\n\tETHTOOL_MSG_MM_GET                        = 0x2a\n\tETHTOOL_MSG_MM_SET                        = 0x2b\n\tETHTOOL_MSG_MODULE_FW_FLASH_ACT           = 0x2c\n\tETHTOOL_MSG_PHY_GET                       = 0x2d\n\tETHTOOL_MSG_TSCONFIG_GET                  = 0x2e\n\tETHTOOL_MSG_TSCONFIG_SET                  = 0x2f\n\tETHTOOL_MSG_USER_MAX                      = 0x2f\n\tETHTOOL_MSG_KERNEL_NONE                   = 0x0\n\tETHTOOL_MSG_STRSET_GET_REPLY              = 0x1\n\tETHTOOL_MSG_LINKINFO_GET_REPLY            = 0x2\n\tETHTOOL_MSG_LINKINFO_NTF                  = 0x3\n\tETHTOOL_MSG_LINKMODES_GET_REPLY           = 0x4\n\tETHTOOL_MSG_LINKMODES_NTF                 = 0x5\n\tETHTOOL_MSG_LINKSTATE_GET_REPLY           = 0x6\n\tETHTOOL_MSG_DEBUG_GET_REPLY               = 0x7\n\tETHTOOL_MSG_DEBUG_NTF                     = 0x8\n\tETHTOOL_MSG_WOL_GET_REPLY                 = 0x9\n\tETHTOOL_MSG_WOL_NTF                       = 0xa\n\tETHTOOL_MSG_FEATURES_GET_REPLY            = 0xb\n\tETHTOOL_MSG_FEATURES_SET_REPLY            = 0xc\n\tETHTOOL_MSG_FEATURES_NTF                  = 0xd\n\tETHTOOL_MSG_PRIVFLAGS_GET_REPLY           = 0xe\n\tETHTOOL_MSG_PRIVFLAGS_NTF                 = 0xf\n\tETHTOOL_MSG_RINGS_GET_REPLY               = 0x10\n\tETHTOOL_MSG_RINGS_NTF                     = 0x11\n\tETHTOOL_MSG_CHANNELS_GET_REPLY            = 0x12\n\tETHTOOL_MSG_CHANNELS_NTF                  = 0x13\n\tETHTOOL_MSG_COALESCE_GET_REPLY            = 0x14\n\tETHTOOL_MSG_COALESCE_NTF                  = 0x15\n\tETHTOOL_MSG_PAUSE_GET_REPLY               = 0x16\n\tETHTOOL_MSG_PAUSE_NTF                     = 0x17\n\tETHTOOL_MSG_EEE_GET_REPLY                 = 0x18\n\tETHTOOL_MSG_EEE_NTF                       = 0x19\n\tETHTOOL_MSG_TSINFO_GET_REPLY              = 0x1a\n\tETHTOOL_MSG_CABLE_TEST_NTF                = 0x1b\n\tETHTOOL_MSG_CABLE_TEST_TDR_NTF            = 0x1c\n\tETHTOOL_MSG_TUNNEL_INFO_GET_REPLY         = 0x1d\n\tETHTOOL_MSG_FEC_GET_REPLY                 = 0x1e\n\tETHTOOL_MSG_FEC_NTF                       = 0x1f\n\tETHTOOL_MSG_MODULE_EEPROM_GET_REPLY       = 0x20\n\tETHTOOL_MSG_STATS_GET_REPLY               = 0x21\n\tETHTOOL_MSG_PHC_VCLOCKS_GET_REPLY         = 0x22\n\tETHTOOL_MSG_MODULE_GET_REPLY              = 0x23\n\tETHTOOL_MSG_MODULE_NTF                    = 0x24\n\tETHTOOL_MSG_PSE_GET_REPLY                 = 0x25\n\tETHTOOL_MSG_RSS_GET_REPLY                 = 0x26\n\tETHTOOL_MSG_PLCA_GET_CFG_REPLY            = 0x27\n\tETHTOOL_MSG_PLCA_GET_STATUS_REPLY         = 0x28\n\tETHTOOL_MSG_PLCA_NTF                      = 0x29\n\tETHTOOL_MSG_MM_GET_REPLY                  = 0x2a\n\tETHTOOL_MSG_MM_NTF                        = 0x2b\n\tETHTOOL_MSG_MODULE_FW_FLASH_NTF           = 0x2c\n\tETHTOOL_MSG_PHY_GET_REPLY                 = 0x2d\n\tETHTOOL_MSG_PHY_NTF                       = 0x2e\n\tETHTOOL_MSG_TSCONFIG_GET_REPLY            = 0x2f\n\tETHTOOL_MSG_TSCONFIG_SET_REPLY            = 0x30\n\tETHTOOL_MSG_KERNEL_MAX                    = 0x30\n\tETHTOOL_FLAG_COMPACT_BITSETS              = 0x1\n\tETHTOOL_FLAG_OMIT_REPLY                   = 0x2\n\tETHTOOL_FLAG_STATS                        = 0x4\n\tETHTOOL_A_HEADER_UNSPEC                   = 0x0\n\tETHTOOL_A_HEADER_DEV_INDEX                = 0x1\n\tETHTOOL_A_HEADER_DEV_NAME                 = 0x2\n\tETHTOOL_A_HEADER_FLAGS                    = 0x3\n\tETHTOOL_A_HEADER_MAX                      = 0x4\n\tETHTOOL_A_BITSET_BIT_UNSPEC               = 0x0\n\tETHTOOL_A_BITSET_BIT_INDEX                = 0x1\n\tETHTOOL_A_BITSET_BIT_NAME                 = 0x2\n\tETHTOOL_A_BITSET_BIT_VALUE                = 0x3\n\tETHTOOL_A_BITSET_BIT_MAX                  = 0x3\n\tETHTOOL_A_BITSET_BITS_UNSPEC              = 0x0\n\tETHTOOL_A_BITSET_BITS_BIT                 = 0x1\n\tETHTOOL_A_BITSET_BITS_MAX                 = 0x1\n\tETHTOOL_A_BITSET_UNSPEC                   = 0x0\n\tETHTOOL_A_BITSET_NOMASK                   = 0x1\n\tETHTOOL_A_BITSET_SIZE                     = 0x2\n\tETHTOOL_A_BITSET_BITS                     = 0x3\n\tETHTOOL_A_BITSET_VALUE                    = 0x4\n\tETHTOOL_A_BITSET_MASK                     = 0x5\n\tETHTOOL_A_BITSET_MAX                      = 0x5\n\tETHTOOL_A_STRING_UNSPEC                   = 0x0\n\tETHTOOL_A_STRING_INDEX                    = 0x1\n\tETHTOOL_A_STRING_VALUE                    = 0x2\n\tETHTOOL_A_STRING_MAX                      = 0x2\n\tETHTOOL_A_STRINGS_UNSPEC                  = 0x0\n\tETHTOOL_A_STRINGS_STRING                  = 0x1\n\tETHTOOL_A_STRINGS_MAX                     = 0x1\n\tETHTOOL_A_STRINGSET_UNSPEC                = 0x0\n\tETHTOOL_A_STRINGSET_ID                    = 0x1\n\tETHTOOL_A_STRINGSET_COUNT                 = 0x2\n\tETHTOOL_A_STRINGSET_STRINGS               = 0x3\n\tETHTOOL_A_STRINGSET_MAX                   = 0x3\n\tETHTOOL_A_STRINGSETS_UNSPEC               = 0x0\n\tETHTOOL_A_STRINGSETS_STRINGSET            = 0x1\n\tETHTOOL_A_STRINGSETS_MAX                  = 0x1\n\tETHTOOL_A_STRSET_UNSPEC                   = 0x0\n\tETHTOOL_A_STRSET_HEADER                   = 0x1\n\tETHTOOL_A_STRSET_STRINGSETS               = 0x2\n\tETHTOOL_A_STRSET_COUNTS_ONLY              = 0x3\n\tETHTOOL_A_STRSET_MAX                      = 0x3\n\tETHTOOL_A_LINKINFO_UNSPEC                 = 0x0\n\tETHTOOL_A_LINKINFO_HEADER                 = 0x1\n\tETHTOOL_A_LINKINFO_PORT                   = 0x2\n\tETHTOOL_A_LINKINFO_PHYADDR                = 0x3\n\tETHTOOL_A_LINKINFO_TP_MDIX                = 0x4\n\tETHTOOL_A_LINKINFO_TP_MDIX_CTRL           = 0x5\n\tETHTOOL_A_LINKINFO_TRANSCEIVER            = 0x6\n\tETHTOOL_A_LINKINFO_MAX                    = 0x6\n\tETHTOOL_A_LINKMODES_UNSPEC                = 0x0\n\tETHTOOL_A_LINKMODES_HEADER                = 0x1\n\tETHTOOL_A_LINKMODES_AUTONEG               = 0x2\n\tETHTOOL_A_LINKMODES_OURS                  = 0x3\n\tETHTOOL_A_LINKMODES_PEER                  = 0x4\n\tETHTOOL_A_LINKMODES_SPEED                 = 0x5\n\tETHTOOL_A_LINKMODES_DUPLEX                = 0x6\n\tETHTOOL_A_LINKMODES_MASTER_SLAVE_CFG      = 0x7\n\tETHTOOL_A_LINKMODES_MASTER_SLAVE_STATE    = 0x8\n\tETHTOOL_A_LINKMODES_LANES                 = 0x9\n\tETHTOOL_A_LINKMODES_RATE_MATCHING         = 0xa\n\tETHTOOL_A_LINKMODES_MAX                   = 0xa\n\tETHTOOL_A_LINKSTATE_UNSPEC                = 0x0\n\tETHTOOL_A_LINKSTATE_HEADER                = 0x1\n\tETHTOOL_A_LINKSTATE_LINK                  = 0x2\n\tETHTOOL_A_LINKSTATE_SQI                   = 0x3\n\tETHTOOL_A_LINKSTATE_SQI_MAX               = 0x4\n\tETHTOOL_A_LINKSTATE_EXT_STATE             = 0x5\n\tETHTOOL_A_LINKSTATE_EXT_SUBSTATE          = 0x6\n\tETHTOOL_A_LINKSTATE_EXT_DOWN_CNT          = 0x7\n\tETHTOOL_A_LINKSTATE_MAX                   = 0x7\n\tETHTOOL_A_DEBUG_UNSPEC                    = 0x0\n\tETHTOOL_A_DEBUG_HEADER                    = 0x1\n\tETHTOOL_A_DEBUG_MSGMASK                   = 0x2\n\tETHTOOL_A_DEBUG_MAX                       = 0x2\n\tETHTOOL_A_WOL_UNSPEC                      = 0x0\n\tETHTOOL_A_WOL_HEADER                      = 0x1\n\tETHTOOL_A_WOL_MODES                       = 0x2\n\tETHTOOL_A_WOL_SOPASS                      = 0x3\n\tETHTOOL_A_WOL_MAX                         = 0x3\n\tETHTOOL_A_FEATURES_UNSPEC                 = 0x0\n\tETHTOOL_A_FEATURES_HEADER                 = 0x1\n\tETHTOOL_A_FEATURES_HW                     = 0x2\n\tETHTOOL_A_FEATURES_WANTED                 = 0x3\n\tETHTOOL_A_FEATURES_ACTIVE                 = 0x4\n\tETHTOOL_A_FEATURES_NOCHANGE               = 0x5\n\tETHTOOL_A_FEATURES_MAX                    = 0x5\n\tETHTOOL_A_PRIVFLAGS_UNSPEC                = 0x0\n\tETHTOOL_A_PRIVFLAGS_HEADER                = 0x1\n\tETHTOOL_A_PRIVFLAGS_FLAGS                 = 0x2\n\tETHTOOL_A_PRIVFLAGS_MAX                   = 0x2\n\tETHTOOL_A_RINGS_UNSPEC                    = 0x0\n\tETHTOOL_A_RINGS_HEADER                    = 0x1\n\tETHTOOL_A_RINGS_RX_MAX                    = 0x2\n\tETHTOOL_A_RINGS_RX_MINI_MAX               = 0x3\n\tETHTOOL_A_RINGS_RX_JUMBO_MAX              = 0x4\n\tETHTOOL_A_RINGS_TX_MAX                    = 0x5\n\tETHTOOL_A_RINGS_RX                        = 0x6\n\tETHTOOL_A_RINGS_RX_MINI                   = 0x7\n\tETHTOOL_A_RINGS_RX_JUMBO                  = 0x8\n\tETHTOOL_A_RINGS_TX                        = 0x9\n\tETHTOOL_A_RINGS_RX_BUF_LEN                = 0xa\n\tETHTOOL_A_RINGS_TCP_DATA_SPLIT            = 0xb\n\tETHTOOL_A_RINGS_CQE_SIZE                  = 0xc\n\tETHTOOL_A_RINGS_TX_PUSH                   = 0xd\n\tETHTOOL_A_RINGS_RX_PUSH                   = 0xe\n\tETHTOOL_A_RINGS_TX_PUSH_BUF_LEN           = 0xf\n\tETHTOOL_A_RINGS_TX_PUSH_BUF_LEN_MAX       = 0x10\n\tETHTOOL_A_RINGS_HDS_THRESH                = 0x11\n\tETHTOOL_A_RINGS_HDS_THRESH_MAX            = 0x12\n\tETHTOOL_A_RINGS_MAX                       = 0x12\n\tETHTOOL_A_CHANNELS_UNSPEC                 = 0x0\n\tETHTOOL_A_CHANNELS_HEADER                 = 0x1\n\tETHTOOL_A_CHANNELS_RX_MAX                 = 0x2\n\tETHTOOL_A_CHANNELS_TX_MAX                 = 0x3\n\tETHTOOL_A_CHANNELS_OTHER_MAX              = 0x4\n\tETHTOOL_A_CHANNELS_COMBINED_MAX           = 0x5\n\tETHTOOL_A_CHANNELS_RX_COUNT               = 0x6\n\tETHTOOL_A_CHANNELS_TX_COUNT               = 0x7\n\tETHTOOL_A_CHANNELS_OTHER_COUNT            = 0x8\n\tETHTOOL_A_CHANNELS_COMBINED_COUNT         = 0x9\n\tETHTOOL_A_CHANNELS_MAX                    = 0x9\n\tETHTOOL_A_COALESCE_UNSPEC                 = 0x0\n\tETHTOOL_A_COALESCE_HEADER                 = 0x1\n\tETHTOOL_A_COALESCE_RX_USECS               = 0x2\n\tETHTOOL_A_COALESCE_RX_MAX_FRAMES          = 0x3\n\tETHTOOL_A_COALESCE_RX_USECS_IRQ           = 0x4\n\tETHTOOL_A_COALESCE_RX_MAX_FRAMES_IRQ      = 0x5\n\tETHTOOL_A_COALESCE_TX_USECS               = 0x6\n\tETHTOOL_A_COALESCE_TX_MAX_FRAMES          = 0x7\n\tETHTOOL_A_COALESCE_TX_USECS_IRQ           = 0x8\n\tETHTOOL_A_COALESCE_TX_MAX_FRAMES_IRQ      = 0x9\n\tETHTOOL_A_COALESCE_STATS_BLOCK_USECS      = 0xa\n\tETHTOOL_A_COALESCE_USE_ADAPTIVE_RX        = 0xb\n\tETHTOOL_A_COALESCE_USE_ADAPTIVE_TX        = 0xc\n\tETHTOOL_A_COALESCE_PKT_RATE_LOW           = 0xd\n\tETHTOOL_A_COALESCE_RX_USECS_LOW           = 0xe\n\tETHTOOL_A_COALESCE_RX_MAX_FRAMES_LOW      = 0xf\n\tETHTOOL_A_COALESCE_TX_USECS_LOW           = 0x10\n\tETHTOOL_A_COALESCE_TX_MAX_FRAMES_LOW      = 0x11\n\tETHTOOL_A_COALESCE_PKT_RATE_HIGH          = 0x12\n\tETHTOOL_A_COALESCE_RX_USECS_HIGH          = 0x13\n\tETHTOOL_A_COALESCE_RX_MAX_FRAMES_HIGH     = 0x14\n\tETHTOOL_A_COALESCE_TX_USECS_HIGH          = 0x15\n\tETHTOOL_A_COALESCE_TX_MAX_FRAMES_HIGH     = 0x16\n\tETHTOOL_A_COALESCE_RATE_SAMPLE_INTERVAL   = 0x17\n\tETHTOOL_A_COALESCE_USE_CQE_MODE_TX        = 0x18\n\tETHTOOL_A_COALESCE_USE_CQE_MODE_RX        = 0x19\n\tETHTOOL_A_COALESCE_MAX                    = 0x1e\n\tETHTOOL_A_PAUSE_UNSPEC                    = 0x0\n\tETHTOOL_A_PAUSE_HEADER                    = 0x1\n\tETHTOOL_A_PAUSE_AUTONEG                   = 0x2\n\tETHTOOL_A_PAUSE_RX                        = 0x3\n\tETHTOOL_A_PAUSE_TX                        = 0x4\n\tETHTOOL_A_PAUSE_STATS                     = 0x5\n\tETHTOOL_A_PAUSE_MAX                       = 0x6\n\tETHTOOL_A_PAUSE_STAT_UNSPEC               = 0x0\n\tETHTOOL_A_PAUSE_STAT_PAD                  = 0x1\n\tETHTOOL_A_PAUSE_STAT_TX_FRAMES            = 0x2\n\tETHTOOL_A_PAUSE_STAT_RX_FRAMES            = 0x3\n\tETHTOOL_A_PAUSE_STAT_MAX                  = 0x3\n\tETHTOOL_A_EEE_UNSPEC                      = 0x0\n\tETHTOOL_A_EEE_HEADER                      = 0x1\n\tETHTOOL_A_EEE_MODES_OURS                  = 0x2\n\tETHTOOL_A_EEE_MODES_PEER                  = 0x3\n\tETHTOOL_A_EEE_ACTIVE                      = 0x4\n\tETHTOOL_A_EEE_ENABLED                     = 0x5\n\tETHTOOL_A_EEE_TX_LPI_ENABLED              = 0x6\n\tETHTOOL_A_EEE_TX_LPI_TIMER                = 0x7\n\tETHTOOL_A_EEE_MAX                         = 0x7\n\tETHTOOL_A_TSINFO_UNSPEC                   = 0x0\n\tETHTOOL_A_TSINFO_HEADER                   = 0x1\n\tETHTOOL_A_TSINFO_TIMESTAMPING             = 0x2\n\tETHTOOL_A_TSINFO_TX_TYPES                 = 0x3\n\tETHTOOL_A_TSINFO_RX_FILTERS               = 0x4\n\tETHTOOL_A_TSINFO_PHC_INDEX                = 0x5\n\tETHTOOL_A_TSINFO_STATS                    = 0x6\n\tETHTOOL_A_TSINFO_HWTSTAMP_PROVIDER        = 0x7\n\tETHTOOL_A_TSINFO_MAX                      = 0x9\n\tETHTOOL_A_CABLE_TEST_UNSPEC               = 0x0\n\tETHTOOL_A_CABLE_TEST_HEADER               = 0x1\n\tETHTOOL_A_CABLE_TEST_MAX                  = 0x1\n\tETHTOOL_A_CABLE_RESULT_CODE_UNSPEC        = 0x0\n\tETHTOOL_A_CABLE_RESULT_CODE_OK            = 0x1\n\tETHTOOL_A_CABLE_RESULT_CODE_OPEN          = 0x2\n\tETHTOOL_A_CABLE_RESULT_CODE_SAME_SHORT    = 0x3\n\tETHTOOL_A_CABLE_RESULT_CODE_CROSS_SHORT   = 0x4\n\tETHTOOL_A_CABLE_PAIR_A                    = 0x0\n\tETHTOOL_A_CABLE_PAIR_B                    = 0x1\n\tETHTOOL_A_CABLE_PAIR_C                    = 0x2\n\tETHTOOL_A_CABLE_PAIR_D                    = 0x3\n\tETHTOOL_A_CABLE_RESULT_UNSPEC             = 0x0\n\tETHTOOL_A_CABLE_RESULT_PAIR               = 0x1\n\tETHTOOL_A_CABLE_RESULT_CODE               = 0x2\n\tETHTOOL_A_CABLE_RESULT_MAX                = 0x3\n\tETHTOOL_A_CABLE_FAULT_LENGTH_UNSPEC       = 0x0\n\tETHTOOL_A_CABLE_FAULT_LENGTH_PAIR         = 0x1\n\tETHTOOL_A_CABLE_FAULT_LENGTH_CM           = 0x2\n\tETHTOOL_A_CABLE_FAULT_LENGTH_MAX          = 0x3\n\tETHTOOL_A_CABLE_TEST_NTF_STATUS_UNSPEC    = 0x0\n\tETHTOOL_A_CABLE_TEST_NTF_STATUS_STARTED   = 0x1\n\tETHTOOL_A_CABLE_TEST_NTF_STATUS_COMPLETED = 0x2\n\tETHTOOL_A_CABLE_NEST_UNSPEC               = 0x0\n\tETHTOOL_A_CABLE_NEST_RESULT               = 0x1\n\tETHTOOL_A_CABLE_NEST_FAULT_LENGTH         = 0x2\n\tETHTOOL_A_CABLE_NEST_MAX                  = 0x2\n\tETHTOOL_A_CABLE_TEST_NTF_UNSPEC           = 0x0\n\tETHTOOL_A_CABLE_TEST_NTF_HEADER           = 0x1\n\tETHTOOL_A_CABLE_TEST_NTF_STATUS           = 0x2\n\tETHTOOL_A_CABLE_TEST_NTF_NEST             = 0x3\n\tETHTOOL_A_CABLE_TEST_NTF_MAX              = 0x3\n\tETHTOOL_A_CABLE_TEST_TDR_CFG_UNSPEC       = 0x0\n\tETHTOOL_A_CABLE_TEST_TDR_CFG_FIRST        = 0x1\n\tETHTOOL_A_CABLE_TEST_TDR_CFG_LAST         = 0x2\n\tETHTOOL_A_CABLE_TEST_TDR_CFG_STEP         = 0x3\n\tETHTOOL_A_CABLE_TEST_TDR_CFG_PAIR         = 0x4\n\tETHTOOL_A_CABLE_TEST_TDR_CFG_MAX          = 0x4\n\tETHTOOL_A_CABLE_TEST_TDR_UNSPEC           = 0x0\n\tETHTOOL_A_CABLE_TEST_TDR_HEADER           = 0x1\n\tETHTOOL_A_CABLE_TEST_TDR_CFG              = 0x2\n\tETHTOOL_A_CABLE_TEST_TDR_MAX              = 0x2\n\tETHTOOL_A_CABLE_AMPLITUDE_UNSPEC          = 0x0\n\tETHTOOL_A_CABLE_AMPLITUDE_PAIR            = 0x1\n\tETHTOOL_A_CABLE_AMPLITUDE_mV              = 0x2\n\tETHTOOL_A_CABLE_AMPLITUDE_MAX             = 0x2\n\tETHTOOL_A_CABLE_PULSE_UNSPEC              = 0x0\n\tETHTOOL_A_CABLE_PULSE_mV                  = 0x1\n\tETHTOOL_A_CABLE_PULSE_MAX                 = 0x1\n\tETHTOOL_A_CABLE_STEP_UNSPEC               = 0x0\n\tETHTOOL_A_CABLE_STEP_FIRST_DISTANCE       = 0x1\n\tETHTOOL_A_CABLE_STEP_LAST_DISTANCE        = 0x2\n\tETHTOOL_A_CABLE_STEP_STEP_DISTANCE        = 0x3\n\tETHTOOL_A_CABLE_STEP_MAX                  = 0x3\n\tETHTOOL_A_CABLE_TDR_NEST_UNSPEC           = 0x0\n\tETHTOOL_A_CABLE_TDR_NEST_STEP             = 0x1\n\tETHTOOL_A_CABLE_TDR_NEST_AMPLITUDE        = 0x2\n\tETHTOOL_A_CABLE_TDR_NEST_PULSE            = 0x3\n\tETHTOOL_A_CABLE_TDR_NEST_MAX              = 0x3\n\tETHTOOL_A_CABLE_TEST_TDR_NTF_UNSPEC       = 0x0\n\tETHTOOL_A_CABLE_TEST_TDR_NTF_HEADER       = 0x1\n\tETHTOOL_A_CABLE_TEST_TDR_NTF_STATUS       = 0x2\n\tETHTOOL_A_CABLE_TEST_TDR_NTF_NEST         = 0x3\n\tETHTOOL_A_CABLE_TEST_TDR_NTF_MAX          = 0x3\n\tETHTOOL_UDP_TUNNEL_TYPE_VXLAN             = 0x0\n\tETHTOOL_UDP_TUNNEL_TYPE_GENEVE            = 0x1\n\tETHTOOL_UDP_TUNNEL_TYPE_VXLAN_GPE         = 0x2\n\tETHTOOL_A_TUNNEL_UDP_ENTRY_UNSPEC         = 0x0\n\tETHTOOL_A_TUNNEL_UDP_ENTRY_PORT           = 0x1\n\tETHTOOL_A_TUNNEL_UDP_ENTRY_TYPE           = 0x2\n\tETHTOOL_A_TUNNEL_UDP_ENTRY_MAX            = 0x2\n\tETHTOOL_A_TUNNEL_UDP_TABLE_UNSPEC         = 0x0\n\tETHTOOL_A_TUNNEL_UDP_TABLE_SIZE           = 0x1\n\tETHTOOL_A_TUNNEL_UDP_TABLE_TYPES          = 0x2\n\tETHTOOL_A_TUNNEL_UDP_TABLE_ENTRY          = 0x3\n\tETHTOOL_A_TUNNEL_UDP_TABLE_MAX            = 0x3\n\tETHTOOL_A_TUNNEL_UDP_UNSPEC               = 0x0\n\tETHTOOL_A_TUNNEL_UDP_TABLE                = 0x1\n\tETHTOOL_A_TUNNEL_UDP_MAX                  = 0x1\n\tETHTOOL_A_TUNNEL_INFO_UNSPEC              = 0x0\n\tETHTOOL_A_TUNNEL_INFO_HEADER              = 0x1\n\tETHTOOL_A_TUNNEL_INFO_UDP_PORTS           = 0x2\n\tETHTOOL_A_TUNNEL_INFO_MAX                 = 0x2\n)\n\nconst (\n\tTCP_V4_FLOW    = 0x1\n\tUDP_V4_FLOW    = 0x2\n\tTCP_V6_FLOW    = 0x5\n\tUDP_V6_FLOW    = 0x6\n\tESP_V4_FLOW    = 0xa\n\tESP_V6_FLOW    = 0xc\n\tIP_USER_FLOW   = 0xd\n\tIPV6_USER_FLOW = 0xe\n\tIPV6_FLOW      = 0x11\n\tETHER_FLOW     = 0x12\n)\n\nconst SPEED_UNKNOWN = -0x1\n\ntype EthtoolDrvinfo struct {\n\tCmd          uint32\n\tDriver       [32]byte\n\tVersion      [32]byte\n\tFw_version   [32]byte\n\tBus_info     [32]byte\n\tErom_version [32]byte\n\tReserved2    [12]byte\n\tN_priv_flags uint32\n\tN_stats      uint32\n\tTestinfo_len uint32\n\tEedump_len   uint32\n\tRegdump_len  uint32\n}\n\ntype EthtoolTsInfo struct {\n\tCmd             uint32\n\tSo_timestamping uint32\n\tPhc_index       int32\n\tTx_types        uint32\n\tTx_reserved     [3]uint32\n\tRx_filters      uint32\n\tRx_reserved     [3]uint32\n}\n\ntype HwTstampConfig struct {\n\tFlags     int32\n\tTx_type   int32\n\tRx_filter int32\n}\n\nconst (\n\tHWTSTAMP_FILTER_NONE            = 0x0\n\tHWTSTAMP_FILTER_ALL             = 0x1\n\tHWTSTAMP_FILTER_SOME            = 0x2\n\tHWTSTAMP_FILTER_PTP_V1_L4_EVENT = 0x3\n\tHWTSTAMP_FILTER_PTP_V2_L4_EVENT = 0x6\n\tHWTSTAMP_FILTER_PTP_V2_L2_EVENT = 0x9\n\tHWTSTAMP_FILTER_PTP_V2_EVENT    = 0xc\n)\n\nconst (\n\tHWTSTAMP_TX_OFF          = 0x0\n\tHWTSTAMP_TX_ON           = 0x1\n\tHWTSTAMP_TX_ONESTEP_SYNC = 0x2\n)\n\ntype (\n\tPtpClockCaps struct {\n\t\tMax_adj            int32\n\t\tN_alarm            int32\n\t\tN_ext_ts           int32\n\t\tN_per_out          int32\n\t\tPps                int32\n\t\tN_pins             int32\n\t\tCross_timestamping int32\n\t\tAdjust_phase       int32\n\t\tMax_phase_adj      int32\n\t\tRsv                [11]int32\n\t}\n\tPtpClockTime struct {\n\t\tSec      int64\n\t\tNsec     uint32\n\t\tReserved uint32\n\t}\n\tPtpExttsEvent struct {\n\t\tT     PtpClockTime\n\t\tIndex uint32\n\t\tFlags uint32\n\t\tRsv   [2]uint32\n\t}\n\tPtpExttsRequest struct {\n\t\tIndex uint32\n\t\tFlags uint32\n\t\tRsv   [2]uint32\n\t}\n\tPtpPeroutRequest struct {\n\t\tStartOrPhase PtpClockTime\n\t\tPeriod       PtpClockTime\n\t\tIndex        uint32\n\t\tFlags        uint32\n\t\tOn           PtpClockTime\n\t}\n\tPtpPinDesc struct {\n\t\tName  [64]byte\n\t\tIndex uint32\n\t\tFunc  uint32\n\t\tChan  uint32\n\t\tRsv   [5]uint32\n\t}\n\tPtpSysOffset struct {\n\t\tSamples uint32\n\t\tRsv     [3]uint32\n\t\tTs      [51]PtpClockTime\n\t}\n\tPtpSysOffsetExtended struct {\n\t\tSamples uint32\n\t\tClockid int32\n\t\tRsv     [2]uint32\n\t\tTs      [25][3]PtpClockTime\n\t}\n\tPtpSysOffsetPrecise struct {\n\t\tDevice   PtpClockTime\n\t\tRealtime PtpClockTime\n\t\tMonoraw  PtpClockTime\n\t\tRsv      [4]uint32\n\t}\n)\n\nconst (\n\tPTP_PF_NONE    = 0x0\n\tPTP_PF_EXTTS   = 0x1\n\tPTP_PF_PEROUT  = 0x2\n\tPTP_PF_PHYSYNC = 0x3\n)\n\ntype (\n\tHIDRawReportDescriptor struct {\n\t\tSize  uint32\n\t\tValue [4096]uint8\n\t}\n\tHIDRawDevInfo struct {\n\t\tBustype uint32\n\t\tVendor  int16\n\t\tProduct int16\n\t}\n)\n\nconst (\n\tCLOSE_RANGE_UNSHARE = 0x2\n\tCLOSE_RANGE_CLOEXEC = 0x4\n)\n\nconst (\n\tNLMSGERR_ATTR_MSG    = 0x1\n\tNLMSGERR_ATTR_OFFS   = 0x2\n\tNLMSGERR_ATTR_COOKIE = 0x3\n)\n\ntype (\n\tEraseInfo struct {\n\t\tStart  uint32\n\t\tLength uint32\n\t}\n\tEraseInfo64 struct {\n\t\tStart  uint64\n\t\tLength uint64\n\t}\n\tMtdOobBuf struct {\n\t\tStart  uint32\n\t\tLength uint32\n\t\tPtr    *uint8\n\t}\n\tMtdOobBuf64 struct {\n\t\tStart  uint64\n\t\tPad    uint32\n\t\tLength uint32\n\t\tPtr    uint64\n\t}\n\tMtdWriteReq struct {\n\t\tStart  uint64\n\t\tLen    uint64\n\t\tOoblen uint64\n\t\tData   uint64\n\t\tOob    uint64\n\t\tMode   uint8\n\t\t_      [7]uint8\n\t}\n\tMtdInfo struct {\n\t\tType      uint8\n\t\tFlags     uint32\n\t\tSize      uint32\n\t\tErasesize uint32\n\t\tWritesize uint32\n\t\tOobsize   uint32\n\t\t_         uint64\n\t}\n\tRegionInfo struct {\n\t\tOffset      uint32\n\t\tErasesize   uint32\n\t\tNumblocks   uint32\n\t\tRegionindex uint32\n\t}\n\tOtpInfo struct {\n\t\tStart  uint32\n\t\tLength uint32\n\t\tLocked uint32\n\t}\n\tNandOobinfo struct {\n\t\tUseecc   uint32\n\t\tEccbytes uint32\n\t\tOobfree  [8][2]uint32\n\t\tEccpos   [32]uint32\n\t}\n\tNandOobfree struct {\n\t\tOffset uint32\n\t\tLength uint32\n\t}\n\tNandEcclayout struct {\n\t\tEccbytes uint32\n\t\tEccpos   [64]uint32\n\t\tOobavail uint32\n\t\tOobfree  [8]NandOobfree\n\t}\n\tMtdEccStats struct {\n\t\tCorrected uint32\n\t\tFailed    uint32\n\t\tBadblocks uint32\n\t\tBbtblocks uint32\n\t}\n)\n\nconst (\n\tMTD_OPS_PLACE_OOB = 0x0\n\tMTD_OPS_AUTO_OOB  = 0x1\n\tMTD_OPS_RAW       = 0x2\n)\n\nconst (\n\tMTD_FILE_MODE_NORMAL      = 0x0\n\tMTD_FILE_MODE_OTP_FACTORY = 0x1\n\tMTD_FILE_MODE_OTP_USER    = 0x2\n\tMTD_FILE_MODE_RAW         = 0x3\n)\n\nconst (\n\tNFC_CMD_UNSPEC                    = 0x0\n\tNFC_CMD_GET_DEVICE                = 0x1\n\tNFC_CMD_DEV_UP                    = 0x2\n\tNFC_CMD_DEV_DOWN                  = 0x3\n\tNFC_CMD_DEP_LINK_UP               = 0x4\n\tNFC_CMD_DEP_LINK_DOWN             = 0x5\n\tNFC_CMD_START_POLL                = 0x6\n\tNFC_CMD_STOP_POLL                 = 0x7\n\tNFC_CMD_GET_TARGET                = 0x8\n\tNFC_EVENT_TARGETS_FOUND           = 0x9\n\tNFC_EVENT_DEVICE_ADDED            = 0xa\n\tNFC_EVENT_DEVICE_REMOVED          = 0xb\n\tNFC_EVENT_TARGET_LOST             = 0xc\n\tNFC_EVENT_TM_ACTIVATED            = 0xd\n\tNFC_EVENT_TM_DEACTIVATED          = 0xe\n\tNFC_CMD_LLC_GET_PARAMS            = 0xf\n\tNFC_CMD_LLC_SET_PARAMS            = 0x10\n\tNFC_CMD_ENABLE_SE                 = 0x11\n\tNFC_CMD_DISABLE_SE                = 0x12\n\tNFC_CMD_LLC_SDREQ                 = 0x13\n\tNFC_EVENT_LLC_SDRES               = 0x14\n\tNFC_CMD_FW_DOWNLOAD               = 0x15\n\tNFC_EVENT_SE_ADDED                = 0x16\n\tNFC_EVENT_SE_REMOVED              = 0x17\n\tNFC_EVENT_SE_CONNECTIVITY         = 0x18\n\tNFC_EVENT_SE_TRANSACTION          = 0x19\n\tNFC_CMD_GET_SE                    = 0x1a\n\tNFC_CMD_SE_IO                     = 0x1b\n\tNFC_CMD_ACTIVATE_TARGET           = 0x1c\n\tNFC_CMD_VENDOR                    = 0x1d\n\tNFC_CMD_DEACTIVATE_TARGET         = 0x1e\n\tNFC_ATTR_UNSPEC                   = 0x0\n\tNFC_ATTR_DEVICE_INDEX             = 0x1\n\tNFC_ATTR_DEVICE_NAME              = 0x2\n\tNFC_ATTR_PROTOCOLS                = 0x3\n\tNFC_ATTR_TARGET_INDEX             = 0x4\n\tNFC_ATTR_TARGET_SENS_RES          = 0x5\n\tNFC_ATTR_TARGET_SEL_RES           = 0x6\n\tNFC_ATTR_TARGET_NFCID1            = 0x7\n\tNFC_ATTR_TARGET_SENSB_RES         = 0x8\n\tNFC_ATTR_TARGET_SENSF_RES         = 0x9\n\tNFC_ATTR_COMM_MODE                = 0xa\n\tNFC_ATTR_RF_MODE                  = 0xb\n\tNFC_ATTR_DEVICE_POWERED           = 0xc\n\tNFC_ATTR_IM_PROTOCOLS             = 0xd\n\tNFC_ATTR_TM_PROTOCOLS             = 0xe\n\tNFC_ATTR_LLC_PARAM_LTO            = 0xf\n\tNFC_ATTR_LLC_PARAM_RW             = 0x10\n\tNFC_ATTR_LLC_PARAM_MIUX           = 0x11\n\tNFC_ATTR_SE                       = 0x12\n\tNFC_ATTR_LLC_SDP                  = 0x13\n\tNFC_ATTR_FIRMWARE_NAME            = 0x14\n\tNFC_ATTR_SE_INDEX                 = 0x15\n\tNFC_ATTR_SE_TYPE                  = 0x16\n\tNFC_ATTR_SE_AID                   = 0x17\n\tNFC_ATTR_FIRMWARE_DOWNLOAD_STATUS = 0x18\n\tNFC_ATTR_SE_APDU                  = 0x19\n\tNFC_ATTR_TARGET_ISO15693_DSFID    = 0x1a\n\tNFC_ATTR_TARGET_ISO15693_UID      = 0x1b\n\tNFC_ATTR_SE_PARAMS                = 0x1c\n\tNFC_ATTR_VENDOR_ID                = 0x1d\n\tNFC_ATTR_VENDOR_SUBCMD            = 0x1e\n\tNFC_ATTR_VENDOR_DATA              = 0x1f\n\tNFC_SDP_ATTR_UNSPEC               = 0x0\n\tNFC_SDP_ATTR_URI                  = 0x1\n\tNFC_SDP_ATTR_SAP                  = 0x2\n)\n\ntype LandlockRulesetAttr struct {\n\tAccess_fs  uint64\n\tAccess_net uint64\n\tScoped     uint64\n}\n\ntype LandlockPathBeneathAttr struct {\n\tAllowed_access uint64\n\tParent_fd      int32\n}\n\nconst (\n\tLANDLOCK_RULE_PATH_BENEATH = 0x1\n)\n\nconst (\n\tIPC_CREAT   = 0x200\n\tIPC_EXCL    = 0x400\n\tIPC_NOWAIT  = 0x800\n\tIPC_PRIVATE = 0x0\n\n\tipc_64 = 0x100\n)\n\nconst (\n\tIPC_RMID = 0x0\n\tIPC_SET  = 0x1\n\tIPC_STAT = 0x2\n)\n\nconst (\n\tSHM_RDONLY = 0x1000\n\tSHM_RND    = 0x2000\n)\n\ntype MountAttr struct {\n\tAttr_set    uint64\n\tAttr_clr    uint64\n\tPropagation uint64\n\tUserns_fd   uint64\n}\n\nconst (\n\tWG_CMD_GET_DEVICE                      = 0x0\n\tWG_CMD_SET_DEVICE                      = 0x1\n\tWGDEVICE_F_REPLACE_PEERS               = 0x1\n\tWGDEVICE_A_UNSPEC                      = 0x0\n\tWGDEVICE_A_IFINDEX                     = 0x1\n\tWGDEVICE_A_IFNAME                      = 0x2\n\tWGDEVICE_A_PRIVATE_KEY                 = 0x3\n\tWGDEVICE_A_PUBLIC_KEY                  = 0x4\n\tWGDEVICE_A_FLAGS                       = 0x5\n\tWGDEVICE_A_LISTEN_PORT                 = 0x6\n\tWGDEVICE_A_FWMARK                      = 0x7\n\tWGDEVICE_A_PEERS                       = 0x8\n\tWGPEER_F_REMOVE_ME                     = 0x1\n\tWGPEER_F_REPLACE_ALLOWEDIPS            = 0x2\n\tWGPEER_F_UPDATE_ONLY                   = 0x4\n\tWGPEER_A_UNSPEC                        = 0x0\n\tWGPEER_A_PUBLIC_KEY                    = 0x1\n\tWGPEER_A_PRESHARED_KEY                 = 0x2\n\tWGPEER_A_FLAGS                         = 0x3\n\tWGPEER_A_ENDPOINT                      = 0x4\n\tWGPEER_A_PERSISTENT_KEEPALIVE_INTERVAL = 0x5\n\tWGPEER_A_LAST_HANDSHAKE_TIME           = 0x6\n\tWGPEER_A_RX_BYTES                      = 0x7\n\tWGPEER_A_TX_BYTES                      = 0x8\n\tWGPEER_A_ALLOWEDIPS                    = 0x9\n\tWGPEER_A_PROTOCOL_VERSION              = 0xa\n\tWGALLOWEDIP_A_UNSPEC                   = 0x0\n\tWGALLOWEDIP_A_FAMILY                   = 0x1\n\tWGALLOWEDIP_A_IPADDR                   = 0x2\n\tWGALLOWEDIP_A_CIDR_MASK                = 0x3\n)\n\nconst (\n\tNL_ATTR_TYPE_INVALID      = 0x0\n\tNL_ATTR_TYPE_FLAG         = 0x1\n\tNL_ATTR_TYPE_U8           = 0x2\n\tNL_ATTR_TYPE_U16          = 0x3\n\tNL_ATTR_TYPE_U32          = 0x4\n\tNL_ATTR_TYPE_U64          = 0x5\n\tNL_ATTR_TYPE_S8           = 0x6\n\tNL_ATTR_TYPE_S16          = 0x7\n\tNL_ATTR_TYPE_S32          = 0x8\n\tNL_ATTR_TYPE_S64          = 0x9\n\tNL_ATTR_TYPE_BINARY       = 0xa\n\tNL_ATTR_TYPE_STRING       = 0xb\n\tNL_ATTR_TYPE_NUL_STRING   = 0xc\n\tNL_ATTR_TYPE_NESTED       = 0xd\n\tNL_ATTR_TYPE_NESTED_ARRAY = 0xe\n\tNL_ATTR_TYPE_BITFIELD32   = 0xf\n\n\tNL_POLICY_TYPE_ATTR_UNSPEC          = 0x0\n\tNL_POLICY_TYPE_ATTR_TYPE            = 0x1\n\tNL_POLICY_TYPE_ATTR_MIN_VALUE_S     = 0x2\n\tNL_POLICY_TYPE_ATTR_MAX_VALUE_S     = 0x3\n\tNL_POLICY_TYPE_ATTR_MIN_VALUE_U     = 0x4\n\tNL_POLICY_TYPE_ATTR_MAX_VALUE_U     = 0x5\n\tNL_POLICY_TYPE_ATTR_MIN_LENGTH      = 0x6\n\tNL_POLICY_TYPE_ATTR_MAX_LENGTH      = 0x7\n\tNL_POLICY_TYPE_ATTR_POLICY_IDX      = 0x8\n\tNL_POLICY_TYPE_ATTR_POLICY_MAXTYPE  = 0x9\n\tNL_POLICY_TYPE_ATTR_BITFIELD32_MASK = 0xa\n\tNL_POLICY_TYPE_ATTR_PAD             = 0xb\n\tNL_POLICY_TYPE_ATTR_MASK            = 0xc\n\tNL_POLICY_TYPE_ATTR_MAX             = 0xc\n)\n\ntype CANBitTiming struct {\n\tBitrate      uint32\n\tSample_point uint32\n\tTq           uint32\n\tProp_seg     uint32\n\tPhase_seg1   uint32\n\tPhase_seg2   uint32\n\tSjw          uint32\n\tBrp          uint32\n}\n\ntype CANBitTimingConst struct {\n\tName      [16]uint8\n\tTseg1_min uint32\n\tTseg1_max uint32\n\tTseg2_min uint32\n\tTseg2_max uint32\n\tSjw_max   uint32\n\tBrp_min   uint32\n\tBrp_max   uint32\n\tBrp_inc   uint32\n}\n\ntype CANClock struct {\n\tFreq uint32\n}\n\ntype CANBusErrorCounters struct {\n\tTxerr uint16\n\tRxerr uint16\n}\n\ntype CANCtrlMode struct {\n\tMask  uint32\n\tFlags uint32\n}\n\ntype CANDeviceStats struct {\n\tBus_error        uint32\n\tError_warning    uint32\n\tError_passive    uint32\n\tBus_off          uint32\n\tArbitration_lost uint32\n\tRestarts         uint32\n}\n\nconst (\n\tCAN_STATE_ERROR_ACTIVE  = 0x0\n\tCAN_STATE_ERROR_WARNING = 0x1\n\tCAN_STATE_ERROR_PASSIVE = 0x2\n\tCAN_STATE_BUS_OFF       = 0x3\n\tCAN_STATE_STOPPED       = 0x4\n\tCAN_STATE_SLEEPING      = 0x5\n\tCAN_STATE_MAX           = 0x6\n)\n\nconst (\n\tIFLA_CAN_UNSPEC               = 0x0\n\tIFLA_CAN_BITTIMING            = 0x1\n\tIFLA_CAN_BITTIMING_CONST      = 0x2\n\tIFLA_CAN_CLOCK                = 0x3\n\tIFLA_CAN_STATE                = 0x4\n\tIFLA_CAN_CTRLMODE             = 0x5\n\tIFLA_CAN_RESTART_MS           = 0x6\n\tIFLA_CAN_RESTART              = 0x7\n\tIFLA_CAN_BERR_COUNTER         = 0x8\n\tIFLA_CAN_DATA_BITTIMING       = 0x9\n\tIFLA_CAN_DATA_BITTIMING_CONST = 0xa\n\tIFLA_CAN_TERMINATION          = 0xb\n\tIFLA_CAN_TERMINATION_CONST    = 0xc\n\tIFLA_CAN_BITRATE_CONST        = 0xd\n\tIFLA_CAN_DATA_BITRATE_CONST   = 0xe\n\tIFLA_CAN_BITRATE_MAX          = 0xf\n)\n\ntype KCMAttach struct {\n\tFd     int32\n\tBpf_fd int32\n}\n\ntype KCMUnattach struct {\n\tFd int32\n}\n\ntype KCMClone struct {\n\tFd int32\n}\n\nconst (\n\tNL80211_AC_BE                                           = 0x2\n\tNL80211_AC_BK                                           = 0x3\n\tNL80211_ACL_POLICY_ACCEPT_UNLESS_LISTED                 = 0x0\n\tNL80211_ACL_POLICY_DENY_UNLESS_LISTED                   = 0x1\n\tNL80211_AC_VI                                           = 0x1\n\tNL80211_AC_VO                                           = 0x0\n\tNL80211_AP_SETTINGS_EXTERNAL_AUTH_SUPPORT               = 0x1\n\tNL80211_AP_SETTINGS_SA_QUERY_OFFLOAD_SUPPORT            = 0x2\n\tNL80211_AP_SME_SA_QUERY_OFFLOAD                         = 0x1\n\tNL80211_ATTR_4ADDR                                      = 0x53\n\tNL80211_ATTR_ACK                                        = 0x5c\n\tNL80211_ATTR_ACK_SIGNAL                                 = 0x107\n\tNL80211_ATTR_ACL_POLICY                                 = 0xa5\n\tNL80211_ATTR_ADMITTED_TIME                              = 0xd4\n\tNL80211_ATTR_AIRTIME_WEIGHT                             = 0x112\n\tNL80211_ATTR_AKM_SUITES                                 = 0x4c\n\tNL80211_ATTR_AP_ISOLATE                                 = 0x60\n\tNL80211_ATTR_AP_SETTINGS_FLAGS                          = 0x135\n\tNL80211_ATTR_ASSOC_SPP_AMSDU                            = 0x14a\n\tNL80211_ATTR_AUTH_DATA                                  = 0x9c\n\tNL80211_ATTR_AUTH_TYPE                                  = 0x35\n\tNL80211_ATTR_BANDS                                      = 0xef\n\tNL80211_ATTR_BEACON_HEAD                                = 0xe\n\tNL80211_ATTR_BEACON_INTERVAL                            = 0xc\n\tNL80211_ATTR_BEACON_TAIL                                = 0xf\n\tNL80211_ATTR_BG_SCAN_PERIOD                             = 0x98\n\tNL80211_ATTR_BSS_BASIC_RATES                            = 0x24\n\tNL80211_ATTR_BSS                                        = 0x2f\n\tNL80211_ATTR_BSS_CTS_PROT                               = 0x1c\n\tNL80211_ATTR_BSS_DUMP_INCLUDE_USE_DATA                  = 0x147\n\tNL80211_ATTR_BSS_HT_OPMODE                              = 0x6d\n\tNL80211_ATTR_BSSID                                      = 0xf5\n\tNL80211_ATTR_BSS_SELECT                                 = 0xe3\n\tNL80211_ATTR_BSS_SHORT_PREAMBLE                         = 0x1d\n\tNL80211_ATTR_BSS_SHORT_SLOT_TIME                        = 0x1e\n\tNL80211_ATTR_CENTER_FREQ1                               = 0xa0\n\tNL80211_ATTR_CENTER_FREQ1_OFFSET                        = 0x123\n\tNL80211_ATTR_CENTER_FREQ2                               = 0xa1\n\tNL80211_ATTR_CHANNEL_WIDTH                              = 0x9f\n\tNL80211_ATTR_CH_SWITCH_BLOCK_TX                         = 0xb8\n\tNL80211_ATTR_CH_SWITCH_COUNT                            = 0xb7\n\tNL80211_ATTR_CIPHER_SUITE_GROUP                         = 0x4a\n\tNL80211_ATTR_CIPHER_SUITES                              = 0x39\n\tNL80211_ATTR_CIPHER_SUITES_PAIRWISE                     = 0x49\n\tNL80211_ATTR_CNTDWN_OFFS_BEACON                         = 0xba\n\tNL80211_ATTR_CNTDWN_OFFS_PRESP                          = 0xbb\n\tNL80211_ATTR_COALESCE_RULE                              = 0xb6\n\tNL80211_ATTR_COALESCE_RULE_CONDITION                    = 0x2\n\tNL80211_ATTR_COALESCE_RULE_DELAY                        = 0x1\n\tNL80211_ATTR_COALESCE_RULE_MAX                          = 0x3\n\tNL80211_ATTR_COALESCE_RULE_PKT_PATTERN                  = 0x3\n\tNL80211_ATTR_COLOR_CHANGE_COLOR                         = 0x130\n\tNL80211_ATTR_COLOR_CHANGE_COUNT                         = 0x12f\n\tNL80211_ATTR_COLOR_CHANGE_ELEMS                         = 0x131\n\tNL80211_ATTR_CONN_FAILED_REASON                         = 0x9b\n\tNL80211_ATTR_CONTROL_PORT                               = 0x44\n\tNL80211_ATTR_CONTROL_PORT_ETHERTYPE                     = 0x66\n\tNL80211_ATTR_CONTROL_PORT_NO_ENCRYPT                    = 0x67\n\tNL80211_ATTR_CONTROL_PORT_NO_PREAUTH                    = 0x11e\n\tNL80211_ATTR_CONTROL_PORT_OVER_NL80211                  = 0x108\n\tNL80211_ATTR_COOKIE                                     = 0x58\n\tNL80211_ATTR_CQM_BEACON_LOSS_EVENT                      = 0x8\n\tNL80211_ATTR_CQM                                        = 0x5e\n\tNL80211_ATTR_CQM_MAX                                    = 0x9\n\tNL80211_ATTR_CQM_PKT_LOSS_EVENT                         = 0x4\n\tNL80211_ATTR_CQM_RSSI_HYST                              = 0x2\n\tNL80211_ATTR_CQM_RSSI_LEVEL                             = 0x9\n\tNL80211_ATTR_CQM_RSSI_THOLD                             = 0x1\n\tNL80211_ATTR_CQM_RSSI_THRESHOLD_EVENT                   = 0x3\n\tNL80211_ATTR_CQM_TXE_INTVL                              = 0x7\n\tNL80211_ATTR_CQM_TXE_PKTS                               = 0x6\n\tNL80211_ATTR_CQM_TXE_RATE                               = 0x5\n\tNL80211_ATTR_CRIT_PROT_ID                               = 0xb3\n\tNL80211_ATTR_CSA_C_OFF_BEACON                           = 0xba\n\tNL80211_ATTR_CSA_C_OFF_PRESP                            = 0xbb\n\tNL80211_ATTR_CSA_C_OFFSETS_TX                           = 0xcd\n\tNL80211_ATTR_CSA_IES                                    = 0xb9\n\tNL80211_ATTR_DEVICE_AP_SME                              = 0x8d\n\tNL80211_ATTR_DFS_CAC_TIME                               = 0x7\n\tNL80211_ATTR_DFS_REGION                                 = 0x92\n\tNL80211_ATTR_DISABLE_EHT                                = 0x137\n\tNL80211_ATTR_DISABLE_HE                                 = 0x12d\n\tNL80211_ATTR_DISABLE_HT                                 = 0x93\n\tNL80211_ATTR_DISABLE_VHT                                = 0xaf\n\tNL80211_ATTR_DISCONNECTED_BY_AP                         = 0x47\n\tNL80211_ATTR_DONT_WAIT_FOR_ACK                          = 0x8e\n\tNL80211_ATTR_DTIM_PERIOD                                = 0xd\n\tNL80211_ATTR_DURATION                                   = 0x57\n\tNL80211_ATTR_EHT_CAPABILITY                             = 0x136\n\tNL80211_ATTR_EMA_RNR_ELEMS                              = 0x145\n\tNL80211_ATTR_EML_CAPABILITY                             = 0x13d\n\tNL80211_ATTR_EXT_CAPA                                   = 0xa9\n\tNL80211_ATTR_EXT_CAPA_MASK                              = 0xaa\n\tNL80211_ATTR_EXTERNAL_AUTH_ACTION                       = 0x104\n\tNL80211_ATTR_EXTERNAL_AUTH_SUPPORT                      = 0x105\n\tNL80211_ATTR_EXT_FEATURES                               = 0xd9\n\tNL80211_ATTR_FEATURE_FLAGS                              = 0x8f\n\tNL80211_ATTR_FILS_CACHE_ID                              = 0xfd\n\tNL80211_ATTR_FILS_DISCOVERY                             = 0x126\n\tNL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM                      = 0xfb\n\tNL80211_ATTR_FILS_ERP_REALM                             = 0xfa\n\tNL80211_ATTR_FILS_ERP_RRK                               = 0xfc\n\tNL80211_ATTR_FILS_ERP_USERNAME                          = 0xf9\n\tNL80211_ATTR_FILS_KEK                                   = 0xf2\n\tNL80211_ATTR_FILS_NONCES                                = 0xf3\n\tNL80211_ATTR_FRAME                                      = 0x33\n\tNL80211_ATTR_FRAME_MATCH                                = 0x5b\n\tNL80211_ATTR_FRAME_TYPE                                 = 0x65\n\tNL80211_ATTR_FREQ_AFTER                                 = 0x3b\n\tNL80211_ATTR_FREQ_BEFORE                                = 0x3a\n\tNL80211_ATTR_FREQ_FIXED                                 = 0x3c\n\tNL80211_ATTR_FREQ_RANGE_END                             = 0x3\n\tNL80211_ATTR_FREQ_RANGE_MAX_BW                          = 0x4\n\tNL80211_ATTR_FREQ_RANGE_START                           = 0x2\n\tNL80211_ATTR_FTM_RESPONDER                              = 0x10e\n\tNL80211_ATTR_FTM_RESPONDER_STATS                        = 0x10f\n\tNL80211_ATTR_GENERATION                                 = 0x2e\n\tNL80211_ATTR_HANDLE_DFS                                 = 0xbf\n\tNL80211_ATTR_HE_6GHZ_CAPABILITY                         = 0x125\n\tNL80211_ATTR_HE_BSS_COLOR                               = 0x11b\n\tNL80211_ATTR_HE_CAPABILITY                              = 0x10d\n\tNL80211_ATTR_HE_OBSS_PD                                 = 0x117\n\tNL80211_ATTR_HIDDEN_SSID                                = 0x7e\n\tNL80211_ATTR_HT_CAPABILITY                              = 0x1f\n\tNL80211_ATTR_HT_CAPABILITY_MASK                         = 0x94\n\tNL80211_ATTR_HW_TIMESTAMP_ENABLED                       = 0x144\n\tNL80211_ATTR_IE_ASSOC_RESP                              = 0x80\n\tNL80211_ATTR_IE                                         = 0x2a\n\tNL80211_ATTR_IE_PROBE_RESP                              = 0x7f\n\tNL80211_ATTR_IE_RIC                                     = 0xb2\n\tNL80211_ATTR_IFACE_SOCKET_OWNER                         = 0xcc\n\tNL80211_ATTR_IFINDEX                                    = 0x3\n\tNL80211_ATTR_IFNAME                                     = 0x4\n\tNL80211_ATTR_IFTYPE_AKM_SUITES                          = 0x11c\n\tNL80211_ATTR_IFTYPE                                     = 0x5\n\tNL80211_ATTR_IFTYPE_EXT_CAPA                            = 0xe6\n\tNL80211_ATTR_INACTIVITY_TIMEOUT                         = 0x96\n\tNL80211_ATTR_INTERFACE_COMBINATIONS                     = 0x78\n\tNL80211_ATTR_KEY_CIPHER                                 = 0x9\n\tNL80211_ATTR_KEY                                        = 0x50\n\tNL80211_ATTR_KEY_DATA                                   = 0x7\n\tNL80211_ATTR_KEY_DEFAULT                                = 0xb\n\tNL80211_ATTR_KEY_DEFAULT_MGMT                           = 0x28\n\tNL80211_ATTR_KEY_DEFAULT_TYPES                          = 0x6e\n\tNL80211_ATTR_KEY_IDX                                    = 0x8\n\tNL80211_ATTR_KEYS                                       = 0x51\n\tNL80211_ATTR_KEY_SEQ                                    = 0xa\n\tNL80211_ATTR_KEY_TYPE                                   = 0x37\n\tNL80211_ATTR_LOCAL_MESH_POWER_MODE                      = 0xa4\n\tNL80211_ATTR_LOCAL_STATE_CHANGE                         = 0x5f\n\tNL80211_ATTR_MAC_ACL_MAX                                = 0xa7\n\tNL80211_ATTR_MAC_ADDRS                                  = 0xa6\n\tNL80211_ATTR_MAC                                        = 0x6\n\tNL80211_ATTR_MAC_HINT                                   = 0xc8\n\tNL80211_ATTR_MAC_MASK                                   = 0xd7\n\tNL80211_ATTR_MAX_AP_ASSOC_STA                           = 0xca\n\tNL80211_ATTR_MAX                                        = 0x151\n\tNL80211_ATTR_MAX_CRIT_PROT_DURATION                     = 0xb4\n\tNL80211_ATTR_MAX_CSA_COUNTERS                           = 0xce\n\tNL80211_ATTR_MAX_HW_TIMESTAMP_PEERS                     = 0x143\n\tNL80211_ATTR_MAX_MATCH_SETS                             = 0x85\n\tNL80211_ATTR_MAX_NUM_AKM_SUITES                         = 0x13c\n\tNL80211_ATTR_MAX_NUM_PMKIDS                             = 0x56\n\tNL80211_ATTR_MAX_NUM_SCAN_SSIDS                         = 0x2b\n\tNL80211_ATTR_MAX_NUM_SCHED_SCAN_PLANS                   = 0xde\n\tNL80211_ATTR_MAX_NUM_SCHED_SCAN_SSIDS                   = 0x7b\n\tNL80211_ATTR_MAX_REMAIN_ON_CHANNEL_DURATION             = 0x6f\n\tNL80211_ATTR_MAX_SCAN_IE_LEN                            = 0x38\n\tNL80211_ATTR_MAX_SCAN_PLAN_INTERVAL                     = 0xdf\n\tNL80211_ATTR_MAX_SCAN_PLAN_ITERATIONS                   = 0xe0\n\tNL80211_ATTR_MAX_SCHED_SCAN_IE_LEN                      = 0x7c\n\tNL80211_ATTR_MBSSID_CONFIG                              = 0x132\n\tNL80211_ATTR_MBSSID_ELEMS                               = 0x133\n\tNL80211_ATTR_MCAST_RATE                                 = 0x6b\n\tNL80211_ATTR_MDID                                       = 0xb1\n\tNL80211_ATTR_MEASUREMENT_DURATION                       = 0xeb\n\tNL80211_ATTR_MEASUREMENT_DURATION_MANDATORY             = 0xec\n\tNL80211_ATTR_MESH_CONFIG                                = 0x23\n\tNL80211_ATTR_MESH_ID                                    = 0x18\n\tNL80211_ATTR_MESH_PEER_AID                              = 0xed\n\tNL80211_ATTR_MESH_SETUP                                 = 0x70\n\tNL80211_ATTR_MGMT_SUBTYPE                               = 0x29\n\tNL80211_ATTR_MLD_ADDR                                   = 0x13a\n\tNL80211_ATTR_MLD_CAPA_AND_OPS                           = 0x13e\n\tNL80211_ATTR_MLO_LINK_DISABLED                          = 0x146\n\tNL80211_ATTR_MLO_LINK_ID                                = 0x139\n\tNL80211_ATTR_MLO_LINKS                                  = 0x138\n\tNL80211_ATTR_MLO_SUPPORT                                = 0x13b\n\tNL80211_ATTR_MLO_TTLM_DLINK                             = 0x148\n\tNL80211_ATTR_MLO_TTLM_ULINK                             = 0x149\n\tNL80211_ATTR_MNTR_FLAGS                                 = 0x17\n\tNL80211_ATTR_MPATH_INFO                                 = 0x1b\n\tNL80211_ATTR_MPATH_NEXT_HOP                             = 0x1a\n\tNL80211_ATTR_MULTICAST_TO_UNICAST_ENABLED               = 0xf4\n\tNL80211_ATTR_MU_MIMO_FOLLOW_MAC_ADDR                    = 0xe8\n\tNL80211_ATTR_MU_MIMO_GROUP_DATA                         = 0xe7\n\tNL80211_ATTR_NAN_FUNC                                   = 0xf0\n\tNL80211_ATTR_NAN_MASTER_PREF                            = 0xee\n\tNL80211_ATTR_NAN_MATCH                                  = 0xf1\n\tNL80211_ATTR_NETNS_FD                                   = 0xdb\n\tNL80211_ATTR_NOACK_MAP                                  = 0x95\n\tNL80211_ATTR_NSS                                        = 0x106\n\tNL80211_ATTR_OBSS_COLOR_BITMAP                          = 0x12e\n\tNL80211_ATTR_OFFCHANNEL_TX_OK                           = 0x6c\n\tNL80211_ATTR_OPER_CLASS                                 = 0xd6\n\tNL80211_ATTR_OPMODE_NOTIF                               = 0xc2\n\tNL80211_ATTR_P2P_CTWINDOW                               = 0xa2\n\tNL80211_ATTR_P2P_OPPPS                                  = 0xa3\n\tNL80211_ATTR_PAD                                        = 0xe5\n\tNL80211_ATTR_PBSS                                       = 0xe2\n\tNL80211_ATTR_PEER_AID                                   = 0xb5\n\tNL80211_ATTR_PEER_MEASUREMENTS                          = 0x111\n\tNL80211_ATTR_PID                                        = 0x52\n\tNL80211_ATTR_PMK                                        = 0xfe\n\tNL80211_ATTR_PMKID                                      = 0x55\n\tNL80211_ATTR_PMK_LIFETIME                               = 0x11f\n\tNL80211_ATTR_PMKR0_NAME                                 = 0x102\n\tNL80211_ATTR_PMK_REAUTH_THRESHOLD                       = 0x120\n\tNL80211_ATTR_PMKSA_CANDIDATE                            = 0x86\n\tNL80211_ATTR_PORT_AUTHORIZED                            = 0x103\n\tNL80211_ATTR_POWER_RULE_MAX_ANT_GAIN                    = 0x5\n\tNL80211_ATTR_POWER_RULE_MAX_EIRP                        = 0x6\n\tNL80211_ATTR_POWER_RULE_PSD                             = 0x8\n\tNL80211_ATTR_PREV_BSSID                                 = 0x4f\n\tNL80211_ATTR_PRIVACY                                    = 0x46\n\tNL80211_ATTR_PROBE_RESP                                 = 0x91\n\tNL80211_ATTR_PROBE_RESP_OFFLOAD                         = 0x90\n\tNL80211_ATTR_PROTOCOL_FEATURES                          = 0xad\n\tNL80211_ATTR_PS_STATE                                   = 0x5d\n\tNL80211_ATTR_PUNCT_BITMAP                               = 0x142\n\tNL80211_ATTR_QOS_MAP                                    = 0xc7\n\tNL80211_ATTR_RADAR_BACKGROUND                           = 0x134\n\tNL80211_ATTR_RADAR_EVENT                                = 0xa8\n\tNL80211_ATTR_REASON_CODE                                = 0x36\n\tNL80211_ATTR_RECEIVE_MULTICAST                          = 0x121\n\tNL80211_ATTR_RECONNECT_REQUESTED                        = 0x12b\n\tNL80211_ATTR_REG_ALPHA2                                 = 0x21\n\tNL80211_ATTR_REG_INDOOR                                 = 0xdd\n\tNL80211_ATTR_REG_INITIATOR                              = 0x30\n\tNL80211_ATTR_REG_RULE_FLAGS                             = 0x1\n\tNL80211_ATTR_REG_RULES                                  = 0x22\n\tNL80211_ATTR_REG_TYPE                                   = 0x31\n\tNL80211_ATTR_REKEY_DATA                                 = 0x7a\n\tNL80211_ATTR_REQ_IE                                     = 0x4d\n\tNL80211_ATTR_RESP_IE                                    = 0x4e\n\tNL80211_ATTR_ROAM_SUPPORT                               = 0x83\n\tNL80211_ATTR_RX_FRAME_TYPES                             = 0x64\n\tNL80211_ATTR_RX_HW_TIMESTAMP                            = 0x140\n\tNL80211_ATTR_RXMGMT_FLAGS                               = 0xbc\n\tNL80211_ATTR_RX_SIGNAL_DBM                              = 0x97\n\tNL80211_ATTR_S1G_CAPABILITY                             = 0x128\n\tNL80211_ATTR_S1G_CAPABILITY_MASK                        = 0x129\n\tNL80211_ATTR_SAE_DATA                                   = 0x9c\n\tNL80211_ATTR_SAE_PASSWORD                               = 0x115\n\tNL80211_ATTR_SAE_PWE                                    = 0x12a\n\tNL80211_ATTR_SAR_SPEC                                   = 0x12c\n\tNL80211_ATTR_SCAN_FLAGS                                 = 0x9e\n\tNL80211_ATTR_SCAN_FREQ_KHZ                              = 0x124\n\tNL80211_ATTR_SCAN_FREQUENCIES                           = 0x2c\n\tNL80211_ATTR_SCAN_GENERATION                            = 0x2e\n\tNL80211_ATTR_SCAN_SSIDS                                 = 0x2d\n\tNL80211_ATTR_SCAN_START_TIME_TSF_BSSID                  = 0xea\n\tNL80211_ATTR_SCAN_START_TIME_TSF                        = 0xe9\n\tNL80211_ATTR_SCAN_SUPP_RATES                            = 0x7d\n\tNL80211_ATTR_SCHED_SCAN_DELAY                           = 0xdc\n\tNL80211_ATTR_SCHED_SCAN_INTERVAL                        = 0x77\n\tNL80211_ATTR_SCHED_SCAN_MATCH                           = 0x84\n\tNL80211_ATTR_SCHED_SCAN_MATCH_SSID                      = 0x1\n\tNL80211_ATTR_SCHED_SCAN_MAX_REQS                        = 0x100\n\tNL80211_ATTR_SCHED_SCAN_MULTI                           = 0xff\n\tNL80211_ATTR_SCHED_SCAN_PLANS                           = 0xe1\n\tNL80211_ATTR_SCHED_SCAN_RELATIVE_RSSI                   = 0xf6\n\tNL80211_ATTR_SCHED_SCAN_RSSI_ADJUST                     = 0xf7\n\tNL80211_ATTR_SMPS_MODE                                  = 0xd5\n\tNL80211_ATTR_SOCKET_OWNER                               = 0xcc\n\tNL80211_ATTR_SOFTWARE_IFTYPES                           = 0x79\n\tNL80211_ATTR_SPLIT_WIPHY_DUMP                           = 0xae\n\tNL80211_ATTR_SSID                                       = 0x34\n\tNL80211_ATTR_STA_AID                                    = 0x10\n\tNL80211_ATTR_STA_CAPABILITY                             = 0xab\n\tNL80211_ATTR_STA_EXT_CAPABILITY                         = 0xac\n\tNL80211_ATTR_STA_FLAGS2                                 = 0x43\n\tNL80211_ATTR_STA_FLAGS                                  = 0x11\n\tNL80211_ATTR_STA_INFO                                   = 0x15\n\tNL80211_ATTR_STA_LISTEN_INTERVAL                        = 0x12\n\tNL80211_ATTR_STA_PLINK_ACTION                           = 0x19\n\tNL80211_ATTR_STA_PLINK_STATE                            = 0x74\n\tNL80211_ATTR_STA_SUPPORTED_CHANNELS                     = 0xbd\n\tNL80211_ATTR_STA_SUPPORTED_OPER_CLASSES                 = 0xbe\n\tNL80211_ATTR_STA_SUPPORTED_RATES                        = 0x13\n\tNL80211_ATTR_STA_SUPPORT_P2P_PS                         = 0xe4\n\tNL80211_ATTR_STATUS_CODE                                = 0x48\n\tNL80211_ATTR_STA_TX_POWER                               = 0x114\n\tNL80211_ATTR_STA_TX_POWER_SETTING                       = 0x113\n\tNL80211_ATTR_STA_VLAN                                   = 0x14\n\tNL80211_ATTR_STA_WME                                    = 0x81\n\tNL80211_ATTR_SUPPORT_10_MHZ                             = 0xc1\n\tNL80211_ATTR_SUPPORT_5_MHZ                              = 0xc0\n\tNL80211_ATTR_SUPPORT_AP_UAPSD                           = 0x82\n\tNL80211_ATTR_SUPPORTED_COMMANDS                         = 0x32\n\tNL80211_ATTR_SUPPORTED_IFTYPES                          = 0x20\n\tNL80211_ATTR_SUPPORT_IBSS_RSN                           = 0x68\n\tNL80211_ATTR_SUPPORT_MESH_AUTH                          = 0x73\n\tNL80211_ATTR_SURVEY_INFO                                = 0x54\n\tNL80211_ATTR_SURVEY_RADIO_STATS                         = 0xda\n\tNL80211_ATTR_TD_BITMAP                                  = 0x141\n\tNL80211_ATTR_TDLS_ACTION                                = 0x88\n\tNL80211_ATTR_TDLS_DIALOG_TOKEN                          = 0x89\n\tNL80211_ATTR_TDLS_EXTERNAL_SETUP                        = 0x8c\n\tNL80211_ATTR_TDLS_INITIATOR                             = 0xcf\n\tNL80211_ATTR_TDLS_OPERATION                             = 0x8a\n\tNL80211_ATTR_TDLS_PEER_CAPABILITY                       = 0xcb\n\tNL80211_ATTR_TDLS_SUPPORT                               = 0x8b\n\tNL80211_ATTR_TESTDATA                                   = 0x45\n\tNL80211_ATTR_TID_CONFIG                                 = 0x11d\n\tNL80211_ATTR_TIMED_OUT                                  = 0x41\n\tNL80211_ATTR_TIMEOUT                                    = 0x110\n\tNL80211_ATTR_TIMEOUT_REASON                             = 0xf8\n\tNL80211_ATTR_TSID                                       = 0xd2\n\tNL80211_ATTR_TWT_RESPONDER                              = 0x116\n\tNL80211_ATTR_TX_FRAME_TYPES                             = 0x63\n\tNL80211_ATTR_TX_HW_TIMESTAMP                            = 0x13f\n\tNL80211_ATTR_TX_NO_CCK_RATE                             = 0x87\n\tNL80211_ATTR_TXQ_LIMIT                                  = 0x10a\n\tNL80211_ATTR_TXQ_MEMORY_LIMIT                           = 0x10b\n\tNL80211_ATTR_TXQ_QUANTUM                                = 0x10c\n\tNL80211_ATTR_TXQ_STATS                                  = 0x109\n\tNL80211_ATTR_TX_RATES                                   = 0x5a\n\tNL80211_ATTR_UNSOL_BCAST_PROBE_RESP                     = 0x127\n\tNL80211_ATTR_UNSPEC                                     = 0x0\n\tNL80211_ATTR_USE_MFP                                    = 0x42\n\tNL80211_ATTR_USER_PRIO                                  = 0xd3\n\tNL80211_ATTR_USER_REG_HINT_TYPE                         = 0x9a\n\tNL80211_ATTR_USE_RRM                                    = 0xd0\n\tNL80211_ATTR_VENDOR_DATA                                = 0xc5\n\tNL80211_ATTR_VENDOR_EVENTS                              = 0xc6\n\tNL80211_ATTR_VENDOR_ID                                  = 0xc3\n\tNL80211_ATTR_VENDOR_SUBCMD                              = 0xc4\n\tNL80211_ATTR_VHT_CAPABILITY                             = 0x9d\n\tNL80211_ATTR_VHT_CAPABILITY_MASK                        = 0xb0\n\tNL80211_ATTR_VLAN_ID                                    = 0x11a\n\tNL80211_ATTR_WANT_1X_4WAY_HS                            = 0x101\n\tNL80211_ATTR_WDEV                                       = 0x99\n\tNL80211_ATTR_WIPHY_ANTENNA_AVAIL_RX                     = 0x72\n\tNL80211_ATTR_WIPHY_ANTENNA_AVAIL_TX                     = 0x71\n\tNL80211_ATTR_WIPHY_ANTENNA_RX                           = 0x6a\n\tNL80211_ATTR_WIPHY_ANTENNA_TX                           = 0x69\n\tNL80211_ATTR_WIPHY_BANDS                                = 0x16\n\tNL80211_ATTR_WIPHY_CHANNEL_TYPE                         = 0x27\n\tNL80211_ATTR_WIPHY                                      = 0x1\n\tNL80211_ATTR_WIPHY_COVERAGE_CLASS                       = 0x59\n\tNL80211_ATTR_WIPHY_DYN_ACK                              = 0xd1\n\tNL80211_ATTR_WIPHY_EDMG_BW_CONFIG                       = 0x119\n\tNL80211_ATTR_WIPHY_EDMG_CHANNELS                        = 0x118\n\tNL80211_ATTR_WIPHY_FRAG_THRESHOLD                       = 0x3f\n\tNL80211_ATTR_WIPHY_FREQ                                 = 0x26\n\tNL80211_ATTR_WIPHY_FREQ_HINT                            = 0xc9\n\tNL80211_ATTR_WIPHY_FREQ_OFFSET                          = 0x122\n\tNL80211_ATTR_WIPHY_INTERFACE_COMBINATIONS               = 0x14c\n\tNL80211_ATTR_WIPHY_NAME                                 = 0x2\n\tNL80211_ATTR_WIPHY_RADIOS                               = 0x14b\n\tNL80211_ATTR_WIPHY_RETRY_LONG                           = 0x3e\n\tNL80211_ATTR_WIPHY_RETRY_SHORT                          = 0x3d\n\tNL80211_ATTR_WIPHY_RTS_THRESHOLD                        = 0x40\n\tNL80211_ATTR_WIPHY_SELF_MANAGED_REG                     = 0xd8\n\tNL80211_ATTR_WIPHY_TX_POWER_LEVEL                       = 0x62\n\tNL80211_ATTR_WIPHY_TX_POWER_SETTING                     = 0x61\n\tNL80211_ATTR_WIPHY_TXQ_PARAMS                           = 0x25\n\tNL80211_ATTR_WOWLAN_TRIGGERS                            = 0x75\n\tNL80211_ATTR_WOWLAN_TRIGGERS_SUPPORTED                  = 0x76\n\tNL80211_ATTR_WPA_VERSIONS                               = 0x4b\n\tNL80211_AUTHTYPE_AUTOMATIC                              = 0x8\n\tNL80211_AUTHTYPE_FILS_PK                                = 0x7\n\tNL80211_AUTHTYPE_FILS_SK                                = 0x5\n\tNL80211_AUTHTYPE_FILS_SK_PFS                            = 0x6\n\tNL80211_AUTHTYPE_FT                                     = 0x2\n\tNL80211_AUTHTYPE_MAX                                    = 0x7\n\tNL80211_AUTHTYPE_NETWORK_EAP                            = 0x3\n\tNL80211_AUTHTYPE_OPEN_SYSTEM                            = 0x0\n\tNL80211_AUTHTYPE_SAE                                    = 0x4\n\tNL80211_AUTHTYPE_SHARED_KEY                             = 0x1\n\tNL80211_BAND_2GHZ                                       = 0x0\n\tNL80211_BAND_5GHZ                                       = 0x1\n\tNL80211_BAND_60GHZ                                      = 0x2\n\tNL80211_BAND_6GHZ                                       = 0x3\n\tNL80211_BAND_ATTR_EDMG_BW_CONFIG                        = 0xb\n\tNL80211_BAND_ATTR_EDMG_CHANNELS                         = 0xa\n\tNL80211_BAND_ATTR_FREQS                                 = 0x1\n\tNL80211_BAND_ATTR_HT_AMPDU_DENSITY                      = 0x6\n\tNL80211_BAND_ATTR_HT_AMPDU_FACTOR                       = 0x5\n\tNL80211_BAND_ATTR_HT_CAPA                               = 0x4\n\tNL80211_BAND_ATTR_HT_MCS_SET                            = 0x3\n\tNL80211_BAND_ATTR_IFTYPE_DATA                           = 0x9\n\tNL80211_BAND_ATTR_MAX                                   = 0xd\n\tNL80211_BAND_ATTR_RATES                                 = 0x2\n\tNL80211_BAND_ATTR_S1G_CAPA                              = 0xd\n\tNL80211_BAND_ATTR_S1G_MCS_NSS_SET                       = 0xc\n\tNL80211_BAND_ATTR_VHT_CAPA                              = 0x8\n\tNL80211_BAND_ATTR_VHT_MCS_SET                           = 0x7\n\tNL80211_BAND_IFTYPE_ATTR_EHT_CAP_MAC                    = 0x8\n\tNL80211_BAND_IFTYPE_ATTR_EHT_CAP_MCS_SET                = 0xa\n\tNL80211_BAND_IFTYPE_ATTR_EHT_CAP_PHY                    = 0x9\n\tNL80211_BAND_IFTYPE_ATTR_EHT_CAP_PPE                    = 0xb\n\tNL80211_BAND_IFTYPE_ATTR_HE_6GHZ_CAPA                   = 0x6\n\tNL80211_BAND_IFTYPE_ATTR_HE_CAP_MAC                     = 0x2\n\tNL80211_BAND_IFTYPE_ATTR_HE_CAP_MCS_SET                 = 0x4\n\tNL80211_BAND_IFTYPE_ATTR_HE_CAP_PHY                     = 0x3\n\tNL80211_BAND_IFTYPE_ATTR_HE_CAP_PPE                     = 0x5\n\tNL80211_BAND_IFTYPE_ATTR_IFTYPES                        = 0x1\n\tNL80211_BAND_IFTYPE_ATTR_MAX                            = 0xb\n\tNL80211_BAND_IFTYPE_ATTR_VENDOR_ELEMS                   = 0x7\n\tNL80211_BAND_LC                                         = 0x5\n\tNL80211_BAND_S1GHZ                                      = 0x4\n\tNL80211_BITRATE_ATTR_2GHZ_SHORTPREAMBLE                 = 0x2\n\tNL80211_BITRATE_ATTR_MAX                                = 0x2\n\tNL80211_BITRATE_ATTR_RATE                               = 0x1\n\tNL80211_BSS_BEACON_IES                                  = 0xb\n\tNL80211_BSS_BEACON_INTERVAL                             = 0x4\n\tNL80211_BSS_BEACON_TSF                                  = 0xd\n\tNL80211_BSS_BSSID                                       = 0x1\n\tNL80211_BSS_CANNOT_USE_6GHZ_PWR_MISMATCH                = 0x2\n\tNL80211_BSS_CANNOT_USE_NSTR_NONPRIMARY                  = 0x1\n\tNL80211_BSS_CANNOT_USE_REASONS                          = 0x18\n\tNL80211_BSS_CANNOT_USE_UHB_PWR_MISMATCH                 = 0x2\n\tNL80211_BSS_CAPABILITY                                  = 0x5\n\tNL80211_BSS_CHAIN_SIGNAL                                = 0x13\n\tNL80211_BSS_CHAN_WIDTH_10                               = 0x1\n\tNL80211_BSS_CHAN_WIDTH_1                                = 0x3\n\tNL80211_BSS_CHAN_WIDTH_20                               = 0x0\n\tNL80211_BSS_CHAN_WIDTH_2                                = 0x4\n\tNL80211_BSS_CHAN_WIDTH_5                                = 0x2\n\tNL80211_BSS_CHAN_WIDTH                                  = 0xc\n\tNL80211_BSS_FREQUENCY                                   = 0x2\n\tNL80211_BSS_FREQUENCY_OFFSET                            = 0x14\n\tNL80211_BSS_INFORMATION_ELEMENTS                        = 0x6\n\tNL80211_BSS_LAST_SEEN_BOOTTIME                          = 0xf\n\tNL80211_BSS_MAX                                         = 0x18\n\tNL80211_BSS_MLD_ADDR                                    = 0x16\n\tNL80211_BSS_MLO_LINK_ID                                 = 0x15\n\tNL80211_BSS_PAD                                         = 0x10\n\tNL80211_BSS_PARENT_BSSID                                = 0x12\n\tNL80211_BSS_PARENT_TSF                                  = 0x11\n\tNL80211_BSS_PRESP_DATA                                  = 0xe\n\tNL80211_BSS_SEEN_MS_AGO                                 = 0xa\n\tNL80211_BSS_SELECT_ATTR_BAND_PREF                       = 0x2\n\tNL80211_BSS_SELECT_ATTR_MAX                             = 0x3\n\tNL80211_BSS_SELECT_ATTR_RSSI_ADJUST                     = 0x3\n\tNL80211_BSS_SELECT_ATTR_RSSI                            = 0x1\n\tNL80211_BSS_SIGNAL_MBM                                  = 0x7\n\tNL80211_BSS_SIGNAL_UNSPEC                               = 0x8\n\tNL80211_BSS_STATUS_ASSOCIATED                           = 0x1\n\tNL80211_BSS_STATUS_AUTHENTICATED                        = 0x0\n\tNL80211_BSS_STATUS                                      = 0x9\n\tNL80211_BSS_STATUS_IBSS_JOINED                          = 0x2\n\tNL80211_BSS_TSF                                         = 0x3\n\tNL80211_BSS_USE_FOR                                     = 0x17\n\tNL80211_BSS_USE_FOR_MLD_LINK                            = 0x2\n\tNL80211_BSS_USE_FOR_NORMAL                              = 0x1\n\tNL80211_CHAN_HT20                                       = 0x1\n\tNL80211_CHAN_HT40MINUS                                  = 0x2\n\tNL80211_CHAN_HT40PLUS                                   = 0x3\n\tNL80211_CHAN_NO_HT                                      = 0x0\n\tNL80211_CHAN_WIDTH_10                                   = 0x7\n\tNL80211_CHAN_WIDTH_160                                  = 0x5\n\tNL80211_CHAN_WIDTH_16                                   = 0xc\n\tNL80211_CHAN_WIDTH_1                                    = 0x8\n\tNL80211_CHAN_WIDTH_20                                   = 0x1\n\tNL80211_CHAN_WIDTH_20_NOHT                              = 0x0\n\tNL80211_CHAN_WIDTH_2                                    = 0x9\n\tNL80211_CHAN_WIDTH_320                                  = 0xd\n\tNL80211_CHAN_WIDTH_40                                   = 0x2\n\tNL80211_CHAN_WIDTH_4                                    = 0xa\n\tNL80211_CHAN_WIDTH_5                                    = 0x6\n\tNL80211_CHAN_WIDTH_80                                   = 0x3\n\tNL80211_CHAN_WIDTH_80P80                                = 0x4\n\tNL80211_CHAN_WIDTH_8                                    = 0xb\n\tNL80211_CMD_ABORT_SCAN                                  = 0x72\n\tNL80211_CMD_ACTION                                      = 0x3b\n\tNL80211_CMD_ACTION_TX_STATUS                            = 0x3c\n\tNL80211_CMD_ADD_LINK                                    = 0x94\n\tNL80211_CMD_ADD_LINK_STA                                = 0x96\n\tNL80211_CMD_ADD_NAN_FUNCTION                            = 0x75\n\tNL80211_CMD_ADD_TX_TS                                   = 0x69\n\tNL80211_CMD_ASSOC_COMEBACK                              = 0x93\n\tNL80211_CMD_ASSOCIATE                                   = 0x26\n\tNL80211_CMD_AUTHENTICATE                                = 0x25\n\tNL80211_CMD_CANCEL_REMAIN_ON_CHANNEL                    = 0x38\n\tNL80211_CMD_CHANGE_NAN_CONFIG                           = 0x77\n\tNL80211_CMD_CHANNEL_SWITCH                              = 0x66\n\tNL80211_CMD_CH_SWITCH_NOTIFY                            = 0x58\n\tNL80211_CMD_CH_SWITCH_STARTED_NOTIFY                    = 0x6e\n\tNL80211_CMD_COLOR_CHANGE_ABORTED                        = 0x90\n\tNL80211_CMD_COLOR_CHANGE_COMPLETED                      = 0x91\n\tNL80211_CMD_COLOR_CHANGE_REQUEST                        = 0x8e\n\tNL80211_CMD_COLOR_CHANGE_STARTED                        = 0x8f\n\tNL80211_CMD_CONNECT                                     = 0x2e\n\tNL80211_CMD_CONN_FAILED                                 = 0x5b\n\tNL80211_CMD_CONTROL_PORT_FRAME                          = 0x81\n\tNL80211_CMD_CONTROL_PORT_FRAME_TX_STATUS                = 0x8b\n\tNL80211_CMD_CRIT_PROTOCOL_START                         = 0x62\n\tNL80211_CMD_CRIT_PROTOCOL_STOP                          = 0x63\n\tNL80211_CMD_DEAUTHENTICATE                              = 0x27\n\tNL80211_CMD_DEL_BEACON                                  = 0x10\n\tNL80211_CMD_DEL_INTERFACE                               = 0x8\n\tNL80211_CMD_DEL_KEY                                     = 0xc\n\tNL80211_CMD_DEL_MPATH                                   = 0x18\n\tNL80211_CMD_DEL_NAN_FUNCTION                            = 0x76\n\tNL80211_CMD_DEL_PMK                                     = 0x7c\n\tNL80211_CMD_DEL_PMKSA                                   = 0x35\n\tNL80211_CMD_DEL_STATION                                 = 0x14\n\tNL80211_CMD_DEL_TX_TS                                   = 0x6a\n\tNL80211_CMD_DEL_WIPHY                                   = 0x4\n\tNL80211_CMD_DISASSOCIATE                                = 0x28\n\tNL80211_CMD_DISCONNECT                                  = 0x30\n\tNL80211_CMD_EXTERNAL_AUTH                               = 0x7f\n\tNL80211_CMD_FLUSH_PMKSA                                 = 0x36\n\tNL80211_CMD_FRAME                                       = 0x3b\n\tNL80211_CMD_FRAME_TX_STATUS                             = 0x3c\n\tNL80211_CMD_FRAME_WAIT_CANCEL                           = 0x43\n\tNL80211_CMD_FT_EVENT                                    = 0x61\n\tNL80211_CMD_GET_BEACON                                  = 0xd\n\tNL80211_CMD_GET_COALESCE                                = 0x64\n\tNL80211_CMD_GET_FTM_RESPONDER_STATS                     = 0x82\n\tNL80211_CMD_GET_INTERFACE                               = 0x5\n\tNL80211_CMD_GET_KEY                                     = 0x9\n\tNL80211_CMD_GET_MESH_CONFIG                             = 0x1c\n\tNL80211_CMD_GET_MESH_PARAMS                             = 0x1c\n\tNL80211_CMD_GET_MPATH                                   = 0x15\n\tNL80211_CMD_GET_MPP                                     = 0x6b\n\tNL80211_CMD_GET_POWER_SAVE                              = 0x3e\n\tNL80211_CMD_GET_PROTOCOL_FEATURES                       = 0x5f\n\tNL80211_CMD_GET_REG                                     = 0x1f\n\tNL80211_CMD_GET_SCAN                                    = 0x20\n\tNL80211_CMD_GET_STATION                                 = 0x11\n\tNL80211_CMD_GET_SURVEY                                  = 0x32\n\tNL80211_CMD_GET_WIPHY                                   = 0x1\n\tNL80211_CMD_GET_WOWLAN                                  = 0x49\n\tNL80211_CMD_JOIN_IBSS                                   = 0x2b\n\tNL80211_CMD_JOIN_MESH                                   = 0x44\n\tNL80211_CMD_JOIN_OCB                                    = 0x6c\n\tNL80211_CMD_LEAVE_IBSS                                  = 0x2c\n\tNL80211_CMD_LEAVE_MESH                                  = 0x45\n\tNL80211_CMD_LEAVE_OCB                                   = 0x6d\n\tNL80211_CMD_LINKS_REMOVED                               = 0x9a\n\tNL80211_CMD_MAX                                         = 0x9d\n\tNL80211_CMD_MICHAEL_MIC_FAILURE                         = 0x29\n\tNL80211_CMD_MODIFY_LINK_STA                             = 0x97\n\tNL80211_CMD_NAN_MATCH                                   = 0x78\n\tNL80211_CMD_NEW_BEACON                                  = 0xf\n\tNL80211_CMD_NEW_INTERFACE                               = 0x7\n\tNL80211_CMD_NEW_KEY                                     = 0xb\n\tNL80211_CMD_NEW_MPATH                                   = 0x17\n\tNL80211_CMD_NEW_PEER_CANDIDATE                          = 0x48\n\tNL80211_CMD_NEW_SCAN_RESULTS                            = 0x22\n\tNL80211_CMD_NEW_STATION                                 = 0x13\n\tNL80211_CMD_NEW_SURVEY_RESULTS                          = 0x33\n\tNL80211_CMD_NEW_WIPHY                                   = 0x3\n\tNL80211_CMD_NOTIFY_CQM                                  = 0x40\n\tNL80211_CMD_NOTIFY_RADAR                                = 0x86\n\tNL80211_CMD_OBSS_COLOR_COLLISION                        = 0x8d\n\tNL80211_CMD_PEER_MEASUREMENT_COMPLETE                   = 0x85\n\tNL80211_CMD_PEER_MEASUREMENT_RESULT                     = 0x84\n\tNL80211_CMD_PEER_MEASUREMENT_START                      = 0x83\n\tNL80211_CMD_PMKSA_CANDIDATE                             = 0x50\n\tNL80211_CMD_PORT_AUTHORIZED                             = 0x7d\n\tNL80211_CMD_PROBE_CLIENT                                = 0x54\n\tNL80211_CMD_PROBE_MESH_LINK                             = 0x88\n\tNL80211_CMD_RADAR_DETECT                                = 0x5e\n\tNL80211_CMD_REG_BEACON_HINT                             = 0x2a\n\tNL80211_CMD_REG_CHANGE                                  = 0x24\n\tNL80211_CMD_REGISTER_ACTION                             = 0x3a\n\tNL80211_CMD_REGISTER_BEACONS                            = 0x55\n\tNL80211_CMD_REGISTER_FRAME                              = 0x3a\n\tNL80211_CMD_RELOAD_REGDB                                = 0x7e\n\tNL80211_CMD_REMAIN_ON_CHANNEL                           = 0x37\n\tNL80211_CMD_REMOVE_LINK                                 = 0x95\n\tNL80211_CMD_REMOVE_LINK_STA                             = 0x98\n\tNL80211_CMD_REQ_SET_REG                                 = 0x1b\n\tNL80211_CMD_ROAM                                        = 0x2f\n\tNL80211_CMD_SCAN_ABORTED                                = 0x23\n\tNL80211_CMD_SCHED_SCAN_RESULTS                          = 0x4d\n\tNL80211_CMD_SCHED_SCAN_STOPPED                          = 0x4e\n\tNL80211_CMD_SET_BEACON                                  = 0xe\n\tNL80211_CMD_SET_BSS                                     = 0x19\n\tNL80211_CMD_SET_CHANNEL                                 = 0x41\n\tNL80211_CMD_SET_COALESCE                                = 0x65\n\tNL80211_CMD_SET_CQM                                     = 0x3f\n\tNL80211_CMD_SET_FILS_AAD                                = 0x92\n\tNL80211_CMD_SET_HW_TIMESTAMP                            = 0x99\n\tNL80211_CMD_SET_INTERFACE                               = 0x6\n\tNL80211_CMD_SET_KEY                                     = 0xa\n\tNL80211_CMD_SET_MAC_ACL                                 = 0x5d\n\tNL80211_CMD_SET_MCAST_RATE                              = 0x5c\n\tNL80211_CMD_SET_MESH_CONFIG                             = 0x1d\n\tNL80211_CMD_SET_MESH_PARAMS                             = 0x1d\n\tNL80211_CMD_SET_MGMT_EXTRA_IE                           = 0x1e\n\tNL80211_CMD_SET_MPATH                                   = 0x16\n\tNL80211_CMD_SET_MULTICAST_TO_UNICAST                    = 0x79\n\tNL80211_CMD_SET_NOACK_MAP                               = 0x57\n\tNL80211_CMD_SET_PMK                                     = 0x7b\n\tNL80211_CMD_SET_PMKSA                                   = 0x34\n\tNL80211_CMD_SET_POWER_SAVE                              = 0x3d\n\tNL80211_CMD_SET_QOS_MAP                                 = 0x68\n\tNL80211_CMD_SET_REG                                     = 0x1a\n\tNL80211_CMD_SET_REKEY_OFFLOAD                           = 0x4f\n\tNL80211_CMD_SET_SAR_SPECS                               = 0x8c\n\tNL80211_CMD_SET_STATION                                 = 0x12\n\tNL80211_CMD_SET_TID_CONFIG                              = 0x89\n\tNL80211_CMD_SET_TID_TO_LINK_MAPPING                     = 0x9b\n\tNL80211_CMD_SET_TX_BITRATE_MASK                         = 0x39\n\tNL80211_CMD_SET_WDS_PEER                                = 0x42\n\tNL80211_CMD_SET_WIPHY                                   = 0x2\n\tNL80211_CMD_SET_WIPHY_NETNS                             = 0x31\n\tNL80211_CMD_SET_WOWLAN                                  = 0x4a\n\tNL80211_CMD_STA_OPMODE_CHANGED                          = 0x80\n\tNL80211_CMD_START_AP                                    = 0xf\n\tNL80211_CMD_START_NAN                                   = 0x73\n\tNL80211_CMD_START_P2P_DEVICE                            = 0x59\n\tNL80211_CMD_START_SCHED_SCAN                            = 0x4b\n\tNL80211_CMD_STOP_AP                                     = 0x10\n\tNL80211_CMD_STOP_NAN                                    = 0x74\n\tNL80211_CMD_STOP_P2P_DEVICE                             = 0x5a\n\tNL80211_CMD_STOP_SCHED_SCAN                             = 0x4c\n\tNL80211_CMD_TDLS_CANCEL_CHANNEL_SWITCH                  = 0x70\n\tNL80211_CMD_TDLS_CHANNEL_SWITCH                         = 0x6f\n\tNL80211_CMD_TDLS_MGMT                                   = 0x52\n\tNL80211_CMD_TDLS_OPER                                   = 0x51\n\tNL80211_CMD_TESTMODE                                    = 0x2d\n\tNL80211_CMD_TRIGGER_SCAN                                = 0x21\n\tNL80211_CMD_UNEXPECTED_4ADDR_FRAME                      = 0x56\n\tNL80211_CMD_UNEXPECTED_FRAME                            = 0x53\n\tNL80211_CMD_UNPROT_BEACON                               = 0x8a\n\tNL80211_CMD_UNPROT_DEAUTHENTICATE                       = 0x46\n\tNL80211_CMD_UNPROT_DISASSOCIATE                         = 0x47\n\tNL80211_CMD_UNSPEC                                      = 0x0\n\tNL80211_CMD_UPDATE_CONNECT_PARAMS                       = 0x7a\n\tNL80211_CMD_UPDATE_FT_IES                               = 0x60\n\tNL80211_CMD_UPDATE_OWE_INFO                             = 0x87\n\tNL80211_CMD_VENDOR                                      = 0x67\n\tNL80211_CMD_WIPHY_REG_CHANGE                            = 0x71\n\tNL80211_COALESCE_CONDITION_MATCH                        = 0x0\n\tNL80211_COALESCE_CONDITION_NO_MATCH                     = 0x1\n\tNL80211_CONN_FAIL_BLOCKED_CLIENT                        = 0x1\n\tNL80211_CONN_FAIL_MAX_CLIENTS                           = 0x0\n\tNL80211_CQM_RSSI_BEACON_LOSS_EVENT                      = 0x2\n\tNL80211_CQM_RSSI_THRESHOLD_EVENT_HIGH                   = 0x1\n\tNL80211_CQM_RSSI_THRESHOLD_EVENT_LOW                    = 0x0\n\tNL80211_CQM_TXE_MAX_INTVL                               = 0x708\n\tNL80211_CRIT_PROTO_APIPA                                = 0x3\n\tNL80211_CRIT_PROTO_DHCP                                 = 0x1\n\tNL80211_CRIT_PROTO_EAPOL                                = 0x2\n\tNL80211_CRIT_PROTO_MAX_DURATION                         = 0x1388\n\tNL80211_CRIT_PROTO_UNSPEC                               = 0x0\n\tNL80211_DFS_AVAILABLE                                   = 0x2\n\tNL80211_DFS_ETSI                                        = 0x2\n\tNL80211_DFS_FCC                                         = 0x1\n\tNL80211_DFS_JP                                          = 0x3\n\tNL80211_DFS_UNAVAILABLE                                 = 0x1\n\tNL80211_DFS_UNSET                                       = 0x0\n\tNL80211_DFS_USABLE                                      = 0x0\n\tNL80211_EDMG_BW_CONFIG_MAX                              = 0xf\n\tNL80211_EDMG_BW_CONFIG_MIN                              = 0x4\n\tNL80211_EDMG_CHANNELS_MAX                               = 0x3c\n\tNL80211_EDMG_CHANNELS_MIN                               = 0x1\n\tNL80211_EHT_MAX_CAPABILITY_LEN                          = 0x33\n\tNL80211_EHT_MIN_CAPABILITY_LEN                          = 0xd\n\tNL80211_EXTERNAL_AUTH_ABORT                             = 0x1\n\tNL80211_EXTERNAL_AUTH_START                             = 0x0\n\tNL80211_EXT_FEATURE_4WAY_HANDSHAKE_AP_PSK               = 0x32\n\tNL80211_EXT_FEATURE_4WAY_HANDSHAKE_STA_1X               = 0x10\n\tNL80211_EXT_FEATURE_4WAY_HANDSHAKE_STA_PSK              = 0xf\n\tNL80211_EXT_FEATURE_ACCEPT_BCAST_PROBE_RESP             = 0x12\n\tNL80211_EXT_FEATURE_ACK_SIGNAL_SUPPORT                  = 0x1b\n\tNL80211_EXT_FEATURE_AIRTIME_FAIRNESS                    = 0x21\n\tNL80211_EXT_FEATURE_AP_PMKSA_CACHING                    = 0x22\n\tNL80211_EXT_FEATURE_AQL                                 = 0x28\n\tNL80211_EXT_FEATURE_AUTH_AND_DEAUTH_RANDOM_TA           = 0x40\n\tNL80211_EXT_FEATURE_BEACON_PROTECTION_CLIENT            = 0x2e\n\tNL80211_EXT_FEATURE_BEACON_PROTECTION                   = 0x29\n\tNL80211_EXT_FEATURE_BEACON_RATE_HE                      = 0x36\n\tNL80211_EXT_FEATURE_BEACON_RATE_HT                      = 0x7\n\tNL80211_EXT_FEATURE_BEACON_RATE_LEGACY                  = 0x6\n\tNL80211_EXT_FEATURE_BEACON_RATE_VHT                     = 0x8\n\tNL80211_EXT_FEATURE_BSS_COLOR                           = 0x3a\n\tNL80211_EXT_FEATURE_BSS_PARENT_TSF                      = 0x4\n\tNL80211_EXT_FEATURE_CAN_REPLACE_PTK0                    = 0x1f\n\tNL80211_EXT_FEATURE_CONTROL_PORT_NO_PREAUTH             = 0x2a\n\tNL80211_EXT_FEATURE_CONTROL_PORT_OVER_NL80211           = 0x1a\n\tNL80211_EXT_FEATURE_CONTROL_PORT_OVER_NL80211_TX_STATUS = 0x30\n\tNL80211_EXT_FEATURE_CQM_RSSI_LIST                       = 0xd\n\tNL80211_EXT_FEATURE_DATA_ACK_SIGNAL_SUPPORT             = 0x1b\n\tNL80211_EXT_FEATURE_DEL_IBSS_STA                        = 0x2c\n\tNL80211_EXT_FEATURE_DFS_CONCURRENT                      = 0x43\n\tNL80211_EXT_FEATURE_DFS_OFFLOAD                         = 0x19\n\tNL80211_EXT_FEATURE_ENABLE_FTM_RESPONDER                = 0x20\n\tNL80211_EXT_FEATURE_EXT_KEY_ID                          = 0x24\n\tNL80211_EXT_FEATURE_FILS_CRYPTO_OFFLOAD                 = 0x3b\n\tNL80211_EXT_FEATURE_FILS_DISCOVERY                      = 0x34\n\tNL80211_EXT_FEATURE_FILS_MAX_CHANNEL_TIME               = 0x11\n\tNL80211_EXT_FEATURE_FILS_SK_OFFLOAD                     = 0xe\n\tNL80211_EXT_FEATURE_FILS_STA                            = 0x9\n\tNL80211_EXT_FEATURE_HIGH_ACCURACY_SCAN                  = 0x18\n\tNL80211_EXT_FEATURE_LOW_POWER_SCAN                      = 0x17\n\tNL80211_EXT_FEATURE_LOW_SPAN_SCAN                       = 0x16\n\tNL80211_EXT_FEATURE_MFP_OPTIONAL                        = 0x15\n\tNL80211_EXT_FEATURE_MGMT_TX_RANDOM_TA                   = 0xa\n\tNL80211_EXT_FEATURE_MGMT_TX_RANDOM_TA_CONNECTED         = 0xb\n\tNL80211_EXT_FEATURE_MULTICAST_REGISTRATIONS             = 0x2d\n\tNL80211_EXT_FEATURE_MU_MIMO_AIR_SNIFFER                 = 0x2\n\tNL80211_EXT_FEATURE_OCE_PROBE_REQ_DEFERRAL_SUPPRESSION  = 0x14\n\tNL80211_EXT_FEATURE_OCE_PROBE_REQ_HIGH_TX_RATE          = 0x13\n\tNL80211_EXT_FEATURE_OPERATING_CHANNEL_VALIDATION        = 0x31\n\tNL80211_EXT_FEATURE_OWE_OFFLOAD_AP                      = 0x42\n\tNL80211_EXT_FEATURE_OWE_OFFLOAD                         = 0x41\n\tNL80211_EXT_FEATURE_POWERED_ADDR_CHANGE                 = 0x3d\n\tNL80211_EXT_FEATURE_PROTECTED_TWT                       = 0x2b\n\tNL80211_EXT_FEATURE_PROT_RANGE_NEGO_AND_MEASURE         = 0x39\n\tNL80211_EXT_FEATURE_PUNCT                               = 0x3e\n\tNL80211_EXT_FEATURE_RADAR_BACKGROUND                    = 0x3c\n\tNL80211_EXT_FEATURE_RRM                                 = 0x1\n\tNL80211_EXT_FEATURE_SAE_OFFLOAD_AP                      = 0x33\n\tNL80211_EXT_FEATURE_SAE_OFFLOAD                         = 0x26\n\tNL80211_EXT_FEATURE_SCAN_FREQ_KHZ                       = 0x2f\n\tNL80211_EXT_FEATURE_SCAN_MIN_PREQ_CONTENT               = 0x1e\n\tNL80211_EXT_FEATURE_SCAN_RANDOM_SN                      = 0x1d\n\tNL80211_EXT_FEATURE_SCAN_START_TIME                     = 0x3\n\tNL80211_EXT_FEATURE_SCHED_SCAN_BAND_SPECIFIC_RSSI_THOLD = 0x23\n\tNL80211_EXT_FEATURE_SCHED_SCAN_RELATIVE_RSSI            = 0xc\n\tNL80211_EXT_FEATURE_SECURE_LTF                          = 0x37\n\tNL80211_EXT_FEATURE_SECURE_NAN                          = 0x3f\n\tNL80211_EXT_FEATURE_SECURE_RTT                          = 0x38\n\tNL80211_EXT_FEATURE_SET_SCAN_DWELL                      = 0x5\n\tNL80211_EXT_FEATURE_SPP_AMSDU_SUPPORT                   = 0x44\n\tNL80211_EXT_FEATURE_STA_TX_PWR                          = 0x25\n\tNL80211_EXT_FEATURE_TXQS                                = 0x1c\n\tNL80211_EXT_FEATURE_UNSOL_BCAST_PROBE_RESP              = 0x35\n\tNL80211_EXT_FEATURE_VHT_IBSS                            = 0x0\n\tNL80211_EXT_FEATURE_VLAN_OFFLOAD                        = 0x27\n\tNL80211_FEATURE_ACKTO_ESTIMATION                        = 0x800000\n\tNL80211_FEATURE_ACTIVE_MONITOR                          = 0x20000\n\tNL80211_FEATURE_ADVERTISE_CHAN_LIMITS                   = 0x4000\n\tNL80211_FEATURE_AP_MODE_CHAN_WIDTH_CHANGE               = 0x40000\n\tNL80211_FEATURE_AP_SCAN                                 = 0x100\n\tNL80211_FEATURE_CELL_BASE_REG_HINTS                     = 0x8\n\tNL80211_FEATURE_DS_PARAM_SET_IE_IN_PROBES               = 0x80000\n\tNL80211_FEATURE_DYNAMIC_SMPS                            = 0x2000000\n\tNL80211_FEATURE_FULL_AP_CLIENT_STATE                    = 0x8000\n\tNL80211_FEATURE_HT_IBSS                                 = 0x2\n\tNL80211_FEATURE_INACTIVITY_TIMER                        = 0x4\n\tNL80211_FEATURE_LOW_PRIORITY_SCAN                       = 0x40\n\tNL80211_FEATURE_MAC_ON_CREATE                           = 0x8000000\n\tNL80211_FEATURE_ND_RANDOM_MAC_ADDR                      = 0x80000000\n\tNL80211_FEATURE_NEED_OBSS_SCAN                          = 0x400\n\tNL80211_FEATURE_P2P_DEVICE_NEEDS_CHANNEL                = 0x10\n\tNL80211_FEATURE_P2P_GO_CTWIN                            = 0x800\n\tNL80211_FEATURE_P2P_GO_OPPPS                            = 0x1000\n\tNL80211_FEATURE_QUIET                                   = 0x200000\n\tNL80211_FEATURE_SAE                                     = 0x20\n\tNL80211_FEATURE_SCAN_FLUSH                              = 0x80\n\tNL80211_FEATURE_SCAN_RANDOM_MAC_ADDR                    = 0x20000000\n\tNL80211_FEATURE_SCHED_SCAN_RANDOM_MAC_ADDR              = 0x40000000\n\tNL80211_FEATURE_SK_TX_STATUS                            = 0x1\n\tNL80211_FEATURE_STATIC_SMPS                             = 0x1000000\n\tNL80211_FEATURE_SUPPORTS_WMM_ADMISSION                  = 0x4000000\n\tNL80211_FEATURE_TDLS_CHANNEL_SWITCH                     = 0x10000000\n\tNL80211_FEATURE_TX_POWER_INSERTION                      = 0x400000\n\tNL80211_FEATURE_USERSPACE_MPM                           = 0x10000\n\tNL80211_FEATURE_VIF_TXPOWER                             = 0x200\n\tNL80211_FEATURE_WFA_TPC_IE_IN_PROBES                    = 0x100000\n\tNL80211_FILS_DISCOVERY_ATTR_INT_MAX                     = 0x2\n\tNL80211_FILS_DISCOVERY_ATTR_INT_MIN                     = 0x1\n\tNL80211_FILS_DISCOVERY_ATTR_MAX                         = 0x3\n\tNL80211_FILS_DISCOVERY_ATTR_TMPL                        = 0x3\n\tNL80211_FILS_DISCOVERY_TMPL_MIN_LEN                     = 0x2a\n\tNL80211_FREQUENCY_ATTR_16MHZ                            = 0x19\n\tNL80211_FREQUENCY_ATTR_1MHZ                             = 0x15\n\tNL80211_FREQUENCY_ATTR_2MHZ                             = 0x16\n\tNL80211_FREQUENCY_ATTR_4MHZ                             = 0x17\n\tNL80211_FREQUENCY_ATTR_8MHZ                             = 0x18\n\tNL80211_FREQUENCY_ATTR_ALLOW_6GHZ_VLP_AP                = 0x21\n\tNL80211_FREQUENCY_ATTR_CAN_MONITOR                      = 0x20\n\tNL80211_FREQUENCY_ATTR_DFS_CAC_TIME                     = 0xd\n\tNL80211_FREQUENCY_ATTR_DFS_CONCURRENT                   = 0x1d\n\tNL80211_FREQUENCY_ATTR_DFS_STATE                        = 0x7\n\tNL80211_FREQUENCY_ATTR_DFS_TIME                         = 0x8\n\tNL80211_FREQUENCY_ATTR_DISABLED                         = 0x2\n\tNL80211_FREQUENCY_ATTR_FREQ                             = 0x1\n\tNL80211_FREQUENCY_ATTR_GO_CONCURRENT                    = 0xf\n\tNL80211_FREQUENCY_ATTR_INDOOR_ONLY                      = 0xe\n\tNL80211_FREQUENCY_ATTR_IR_CONCURRENT                    = 0xf\n\tNL80211_FREQUENCY_ATTR_MAX                              = 0x22\n\tNL80211_FREQUENCY_ATTR_MAX_TX_POWER                     = 0x6\n\tNL80211_FREQUENCY_ATTR_NO_10MHZ                         = 0x11\n\tNL80211_FREQUENCY_ATTR_NO_160MHZ                        = 0xc\n\tNL80211_FREQUENCY_ATTR_NO_20MHZ                         = 0x10\n\tNL80211_FREQUENCY_ATTR_NO_320MHZ                        = 0x1a\n\tNL80211_FREQUENCY_ATTR_NO_6GHZ_AFC_CLIENT               = 0x1f\n\tNL80211_FREQUENCY_ATTR_NO_6GHZ_VLP_CLIENT               = 0x1e\n\tNL80211_FREQUENCY_ATTR_NO_80MHZ                         = 0xb\n\tNL80211_FREQUENCY_ATTR_NO_EHT                           = 0x1b\n\tNL80211_FREQUENCY_ATTR_NO_HE                            = 0x13\n\tNL80211_FREQUENCY_ATTR_NO_HT40_MINUS                    = 0x9\n\tNL80211_FREQUENCY_ATTR_NO_HT40_PLUS                     = 0xa\n\tNL80211_FREQUENCY_ATTR_NO_IBSS                          = 0x3\n\tNL80211_FREQUENCY_ATTR_NO_IR                            = 0x3\n\tNL80211_FREQUENCY_ATTR_NO_UHB_AFC_CLIENT                = 0x1f\n\tNL80211_FREQUENCY_ATTR_NO_UHB_VLP_CLIENT                = 0x1e\n\tNL80211_FREQUENCY_ATTR_OFFSET                           = 0x14\n\tNL80211_FREQUENCY_ATTR_PASSIVE_SCAN                     = 0x3\n\tNL80211_FREQUENCY_ATTR_PSD                              = 0x1c\n\tNL80211_FREQUENCY_ATTR_RADAR                            = 0x5\n\tNL80211_FREQUENCY_ATTR_WMM                              = 0x12\n\tNL80211_FTM_RESP_ATTR_CIVICLOC                          = 0x3\n\tNL80211_FTM_RESP_ATTR_ENABLED                           = 0x1\n\tNL80211_FTM_RESP_ATTR_LCI                               = 0x2\n\tNL80211_FTM_RESP_ATTR_MAX                               = 0x3\n\tNL80211_FTM_STATS_ASAP_NUM                              = 0x4\n\tNL80211_FTM_STATS_FAILED_NUM                            = 0x3\n\tNL80211_FTM_STATS_MAX                                   = 0xa\n\tNL80211_FTM_STATS_NON_ASAP_NUM                          = 0x5\n\tNL80211_FTM_STATS_OUT_OF_WINDOW_TRIGGERS_NUM            = 0x9\n\tNL80211_FTM_STATS_PAD                                   = 0xa\n\tNL80211_FTM_STATS_PARTIAL_NUM                           = 0x2\n\tNL80211_FTM_STATS_RESCHEDULE_REQUESTS_NUM               = 0x8\n\tNL80211_FTM_STATS_SUCCESS_NUM                           = 0x1\n\tNL80211_FTM_STATS_TOTAL_DURATION_MSEC                   = 0x6\n\tNL80211_FTM_STATS_UNKNOWN_TRIGGERS_NUM                  = 0x7\n\tNL80211_GENL_NAME                                       = \"nl80211\"\n\tNL80211_HE_BSS_COLOR_ATTR_COLOR                         = 0x1\n\tNL80211_HE_BSS_COLOR_ATTR_DISABLED                      = 0x2\n\tNL80211_HE_BSS_COLOR_ATTR_MAX                           = 0x3\n\tNL80211_HE_BSS_COLOR_ATTR_PARTIAL                       = 0x3\n\tNL80211_HE_MAX_CAPABILITY_LEN                           = 0x36\n\tNL80211_HE_MIN_CAPABILITY_LEN                           = 0x10\n\tNL80211_HE_NSS_MAX                                      = 0x8\n\tNL80211_HE_OBSS_PD_ATTR_BSS_COLOR_BITMAP                = 0x4\n\tNL80211_HE_OBSS_PD_ATTR_MAX                             = 0x6\n\tNL80211_HE_OBSS_PD_ATTR_MAX_OFFSET                      = 0x2\n\tNL80211_HE_OBSS_PD_ATTR_MIN_OFFSET                      = 0x1\n\tNL80211_HE_OBSS_PD_ATTR_NON_SRG_MAX_OFFSET              = 0x3\n\tNL80211_HE_OBSS_PD_ATTR_PARTIAL_BSSID_BITMAP            = 0x5\n\tNL80211_HE_OBSS_PD_ATTR_SR_CTRL                         = 0x6\n\tNL80211_HIDDEN_SSID_NOT_IN_USE                          = 0x0\n\tNL80211_HIDDEN_SSID_ZERO_CONTENTS                       = 0x2\n\tNL80211_HIDDEN_SSID_ZERO_LEN                            = 0x1\n\tNL80211_HT_CAPABILITY_LEN                               = 0x1a\n\tNL80211_IFACE_COMB_BI_MIN_GCD                           = 0x7\n\tNL80211_IFACE_COMB_LIMITS                               = 0x1\n\tNL80211_IFACE_COMB_MAXNUM                               = 0x2\n\tNL80211_IFACE_COMB_NUM_CHANNELS                         = 0x4\n\tNL80211_IFACE_COMB_RADAR_DETECT_REGIONS                 = 0x6\n\tNL80211_IFACE_COMB_RADAR_DETECT_WIDTHS                  = 0x5\n\tNL80211_IFACE_COMB_STA_AP_BI_MATCH                      = 0x3\n\tNL80211_IFACE_COMB_UNSPEC                               = 0x0\n\tNL80211_IFACE_LIMIT_MAX                                 = 0x1\n\tNL80211_IFACE_LIMIT_TYPES                               = 0x2\n\tNL80211_IFACE_LIMIT_UNSPEC                              = 0x0\n\tNL80211_IFTYPE_ADHOC                                    = 0x1\n\tNL80211_IFTYPE_AKM_ATTR_IFTYPES                         = 0x1\n\tNL80211_IFTYPE_AKM_ATTR_MAX                             = 0x2\n\tNL80211_IFTYPE_AKM_ATTR_SUITES                          = 0x2\n\tNL80211_IFTYPE_AP                                       = 0x3\n\tNL80211_IFTYPE_AP_VLAN                                  = 0x4\n\tNL80211_IFTYPE_MAX                                      = 0xc\n\tNL80211_IFTYPE_MESH_POINT                               = 0x7\n\tNL80211_IFTYPE_MONITOR                                  = 0x6\n\tNL80211_IFTYPE_NAN                                      = 0xc\n\tNL80211_IFTYPE_OCB                                      = 0xb\n\tNL80211_IFTYPE_P2P_CLIENT                               = 0x8\n\tNL80211_IFTYPE_P2P_DEVICE                               = 0xa\n\tNL80211_IFTYPE_P2P_GO                                   = 0x9\n\tNL80211_IFTYPE_STATION                                  = 0x2\n\tNL80211_IFTYPE_UNSPECIFIED                              = 0x0\n\tNL80211_IFTYPE_WDS                                      = 0x5\n\tNL80211_KCK_EXT_LEN_32                                  = 0x20\n\tNL80211_KCK_EXT_LEN                                     = 0x18\n\tNL80211_KCK_LEN                                         = 0x10\n\tNL80211_KEK_EXT_LEN                                     = 0x20\n\tNL80211_KEK_LEN                                         = 0x10\n\tNL80211_KEY_CIPHER                                      = 0x3\n\tNL80211_KEY_DATA                                        = 0x1\n\tNL80211_KEY_DEFAULT_BEACON                              = 0xa\n\tNL80211_KEY_DEFAULT                                     = 0x5\n\tNL80211_KEY_DEFAULT_MGMT                                = 0x6\n\tNL80211_KEY_DEFAULT_TYPE_MULTICAST                      = 0x2\n\tNL80211_KEY_DEFAULT_TYPES                               = 0x8\n\tNL80211_KEY_DEFAULT_TYPE_UNICAST                        = 0x1\n\tNL80211_KEY_IDX                                         = 0x2\n\tNL80211_KEY_MAX                                         = 0xa\n\tNL80211_KEY_MODE                                        = 0x9\n\tNL80211_KEY_NO_TX                                       = 0x1\n\tNL80211_KEY_RX_TX                                       = 0x0\n\tNL80211_KEY_SEQ                                         = 0x4\n\tNL80211_KEY_SET_TX                                      = 0x2\n\tNL80211_KEY_TYPE                                        = 0x7\n\tNL80211_KEYTYPE_GROUP                                   = 0x0\n\tNL80211_KEYTYPE_PAIRWISE                                = 0x1\n\tNL80211_KEYTYPE_PEERKEY                                 = 0x2\n\tNL80211_MAX_NR_AKM_SUITES                               = 0x2\n\tNL80211_MAX_NR_CIPHER_SUITES                            = 0x5\n\tNL80211_MAX_SUPP_HT_RATES                               = 0x4d\n\tNL80211_MAX_SUPP_RATES                                  = 0x20\n\tNL80211_MAX_SUPP_REG_RULES                              = 0x80\n\tNL80211_MAX_SUPP_SELECTORS                              = 0x80\n\tNL80211_MBSSID_CONFIG_ATTR_EMA                          = 0x5\n\tNL80211_MBSSID_CONFIG_ATTR_INDEX                        = 0x3\n\tNL80211_MBSSID_CONFIG_ATTR_MAX                          = 0x6\n\tNL80211_MBSSID_CONFIG_ATTR_MAX_EMA_PROFILE_PERIODICITY  = 0x2\n\tNL80211_MBSSID_CONFIG_ATTR_MAX_INTERFACES               = 0x1\n\tNL80211_MBSSID_CONFIG_ATTR_TX_IFINDEX                   = 0x4\n\tNL80211_MESHCONF_ATTR_MAX                               = 0x1f\n\tNL80211_MESHCONF_AUTO_OPEN_PLINKS                       = 0x7\n\tNL80211_MESHCONF_AWAKE_WINDOW                           = 0x1b\n\tNL80211_MESHCONF_CONFIRM_TIMEOUT                        = 0x2\n\tNL80211_MESHCONF_CONNECTED_TO_AS                        = 0x1f\n\tNL80211_MESHCONF_CONNECTED_TO_GATE                      = 0x1d\n\tNL80211_MESHCONF_ELEMENT_TTL                            = 0xf\n\tNL80211_MESHCONF_FORWARDING                             = 0x13\n\tNL80211_MESHCONF_GATE_ANNOUNCEMENTS                     = 0x11\n\tNL80211_MESHCONF_HOLDING_TIMEOUT                        = 0x3\n\tNL80211_MESHCONF_HT_OPMODE                              = 0x16\n\tNL80211_MESHCONF_HWMP_ACTIVE_PATH_TIMEOUT               = 0xb\n\tNL80211_MESHCONF_HWMP_CONFIRMATION_INTERVAL             = 0x19\n\tNL80211_MESHCONF_HWMP_MAX_PREQ_RETRIES                  = 0x8\n\tNL80211_MESHCONF_HWMP_NET_DIAM_TRVS_TIME                = 0xd\n\tNL80211_MESHCONF_HWMP_PATH_TO_ROOT_TIMEOUT              = 0x17\n\tNL80211_MESHCONF_HWMP_PERR_MIN_INTERVAL                 = 0x12\n\tNL80211_MESHCONF_HWMP_PREQ_MIN_INTERVAL                 = 0xc\n\tNL80211_MESHCONF_HWMP_RANN_INTERVAL                     = 0x10\n\tNL80211_MESHCONF_HWMP_ROOT_INTERVAL                     = 0x18\n\tNL80211_MESHCONF_HWMP_ROOTMODE                          = 0xe\n\tNL80211_MESHCONF_MAX_PEER_LINKS                         = 0x4\n\tNL80211_MESHCONF_MAX_RETRIES                            = 0x5\n\tNL80211_MESHCONF_MIN_DISCOVERY_TIMEOUT                  = 0xa\n\tNL80211_MESHCONF_NOLEARN                                = 0x1e\n\tNL80211_MESHCONF_PATH_REFRESH_TIME                      = 0x9\n\tNL80211_MESHCONF_PLINK_TIMEOUT                          = 0x1c\n\tNL80211_MESHCONF_POWER_MODE                             = 0x1a\n\tNL80211_MESHCONF_RETRY_TIMEOUT                          = 0x1\n\tNL80211_MESHCONF_RSSI_THRESHOLD                         = 0x14\n\tNL80211_MESHCONF_SYNC_OFFSET_MAX_NEIGHBOR               = 0x15\n\tNL80211_MESHCONF_TTL                                    = 0x6\n\tNL80211_MESH_POWER_ACTIVE                               = 0x1\n\tNL80211_MESH_POWER_DEEP_SLEEP                           = 0x3\n\tNL80211_MESH_POWER_LIGHT_SLEEP                          = 0x2\n\tNL80211_MESH_POWER_MAX                                  = 0x3\n\tNL80211_MESH_POWER_UNKNOWN                              = 0x0\n\tNL80211_MESH_SETUP_ATTR_MAX                             = 0x8\n\tNL80211_MESH_SETUP_AUTH_PROTOCOL                        = 0x8\n\tNL80211_MESH_SETUP_ENABLE_VENDOR_METRIC                 = 0x2\n\tNL80211_MESH_SETUP_ENABLE_VENDOR_PATH_SEL               = 0x1\n\tNL80211_MESH_SETUP_ENABLE_VENDOR_SYNC                   = 0x6\n\tNL80211_MESH_SETUP_IE                                   = 0x3\n\tNL80211_MESH_SETUP_USERSPACE_AMPE                       = 0x5\n\tNL80211_MESH_SETUP_USERSPACE_AUTH                       = 0x4\n\tNL80211_MESH_SETUP_USERSPACE_MPM                        = 0x7\n\tNL80211_MESH_SETUP_VENDOR_PATH_SEL_IE                   = 0x3\n\tNL80211_MFP_NO                                          = 0x0\n\tNL80211_MFP_OPTIONAL                                    = 0x2\n\tNL80211_MFP_REQUIRED                                    = 0x1\n\tNL80211_MIN_REMAIN_ON_CHANNEL_TIME                      = 0xa\n\tNL80211_MNTR_FLAG_ACTIVE                                = 0x6\n\tNL80211_MNTR_FLAG_CONTROL                               = 0x3\n\tNL80211_MNTR_FLAG_COOK_FRAMES                           = 0x5\n\tNL80211_MNTR_FLAG_FCSFAIL                               = 0x1\n\tNL80211_MNTR_FLAG_MAX                                   = 0x7\n\tNL80211_MNTR_FLAG_OTHER_BSS                             = 0x4\n\tNL80211_MNTR_FLAG_PLCPFAIL                              = 0x2\n\tNL80211_MPATH_FLAG_ACTIVE                               = 0x1\n\tNL80211_MPATH_FLAG_FIXED                                = 0x8\n\tNL80211_MPATH_FLAG_RESOLVED                             = 0x10\n\tNL80211_MPATH_FLAG_RESOLVING                            = 0x2\n\tNL80211_MPATH_FLAG_SN_VALID                             = 0x4\n\tNL80211_MPATH_INFO_DISCOVERY_RETRIES                    = 0x7\n\tNL80211_MPATH_INFO_DISCOVERY_TIMEOUT                    = 0x6\n\tNL80211_MPATH_INFO_EXPTIME                              = 0x4\n\tNL80211_MPATH_INFO_FLAGS                                = 0x5\n\tNL80211_MPATH_INFO_FRAME_QLEN                           = 0x1\n\tNL80211_MPATH_INFO_HOP_COUNT                            = 0x8\n\tNL80211_MPATH_INFO_MAX                                  = 0x9\n\tNL80211_MPATH_INFO_METRIC                               = 0x3\n\tNL80211_MPATH_INFO_PATH_CHANGE                          = 0x9\n\tNL80211_MPATH_INFO_SN                                   = 0x2\n\tNL80211_MULTICAST_GROUP_CONFIG                          = \"config\"\n\tNL80211_MULTICAST_GROUP_MLME                            = \"mlme\"\n\tNL80211_MULTICAST_GROUP_NAN                             = \"nan\"\n\tNL80211_MULTICAST_GROUP_REG                             = \"regulatory\"\n\tNL80211_MULTICAST_GROUP_SCAN                            = \"scan\"\n\tNL80211_MULTICAST_GROUP_TESTMODE                        = \"testmode\"\n\tNL80211_MULTICAST_GROUP_VENDOR                          = \"vendor\"\n\tNL80211_NAN_FUNC_ATTR_MAX                               = 0x10\n\tNL80211_NAN_FUNC_CLOSE_RANGE                            = 0x9\n\tNL80211_NAN_FUNC_FOLLOW_UP                              = 0x2\n\tNL80211_NAN_FUNC_FOLLOW_UP_DEST                         = 0x8\n\tNL80211_NAN_FUNC_FOLLOW_UP_ID                           = 0x6\n\tNL80211_NAN_FUNC_FOLLOW_UP_REQ_ID                       = 0x7\n\tNL80211_NAN_FUNC_INSTANCE_ID                            = 0xf\n\tNL80211_NAN_FUNC_MAX_TYPE                               = 0x2\n\tNL80211_NAN_FUNC_PUBLISH_BCAST                          = 0x4\n\tNL80211_NAN_FUNC_PUBLISH                                = 0x0\n\tNL80211_NAN_FUNC_PUBLISH_TYPE                           = 0x3\n\tNL80211_NAN_FUNC_RX_MATCH_FILTER                        = 0xd\n\tNL80211_NAN_FUNC_SERVICE_ID                             = 0x2\n\tNL80211_NAN_FUNC_SERVICE_ID_LEN                         = 0x6\n\tNL80211_NAN_FUNC_SERVICE_INFO                           = 0xb\n\tNL80211_NAN_FUNC_SERVICE_SPEC_INFO_MAX_LEN              = 0xff\n\tNL80211_NAN_FUNC_SRF                                    = 0xc\n\tNL80211_NAN_FUNC_SRF_MAX_LEN                            = 0xff\n\tNL80211_NAN_FUNC_SUBSCRIBE_ACTIVE                       = 0x5\n\tNL80211_NAN_FUNC_SUBSCRIBE                              = 0x1\n\tNL80211_NAN_FUNC_TERM_REASON                            = 0x10\n\tNL80211_NAN_FUNC_TERM_REASON_ERROR                      = 0x2\n\tNL80211_NAN_FUNC_TERM_REASON_TTL_EXPIRED                = 0x1\n\tNL80211_NAN_FUNC_TERM_REASON_USER_REQUEST               = 0x0\n\tNL80211_NAN_FUNC_TTL                                    = 0xa\n\tNL80211_NAN_FUNC_TX_MATCH_FILTER                        = 0xe\n\tNL80211_NAN_FUNC_TYPE                                   = 0x1\n\tNL80211_NAN_MATCH_ATTR_MAX                              = 0x2\n\tNL80211_NAN_MATCH_FUNC_LOCAL                            = 0x1\n\tNL80211_NAN_MATCH_FUNC_PEER                             = 0x2\n\tNL80211_NAN_SOLICITED_PUBLISH                           = 0x1\n\tNL80211_NAN_SRF_ATTR_MAX                                = 0x4\n\tNL80211_NAN_SRF_BF                                      = 0x2\n\tNL80211_NAN_SRF_BF_IDX                                  = 0x3\n\tNL80211_NAN_SRF_INCLUDE                                 = 0x1\n\tNL80211_NAN_SRF_MAC_ADDRS                               = 0x4\n\tNL80211_NAN_UNSOLICITED_PUBLISH                         = 0x2\n\tNL80211_NUM_ACS                                         = 0x4\n\tNL80211_P2P_PS_SUPPORTED                                = 0x1\n\tNL80211_P2P_PS_UNSUPPORTED                              = 0x0\n\tNL80211_PKTPAT_MASK                                     = 0x1\n\tNL80211_PKTPAT_OFFSET                                   = 0x3\n\tNL80211_PKTPAT_PATTERN                                  = 0x2\n\tNL80211_PLINK_ACTION_BLOCK                              = 0x2\n\tNL80211_PLINK_ACTION_NO_ACTION                          = 0x0\n\tNL80211_PLINK_ACTION_OPEN                               = 0x1\n\tNL80211_PLINK_BLOCKED                                   = 0x6\n\tNL80211_PLINK_CNF_RCVD                                  = 0x3\n\tNL80211_PLINK_ESTAB                                     = 0x4\n\tNL80211_PLINK_HOLDING                                   = 0x5\n\tNL80211_PLINK_LISTEN                                    = 0x0\n\tNL80211_PLINK_OPN_RCVD                                  = 0x2\n\tNL80211_PLINK_OPN_SNT                                   = 0x1\n\tNL80211_PMKSA_CANDIDATE_BSSID                           = 0x2\n\tNL80211_PMKSA_CANDIDATE_INDEX                           = 0x1\n\tNL80211_PMKSA_CANDIDATE_PREAUTH                         = 0x3\n\tNL80211_PMSR_ATTR_MAX                                   = 0x5\n\tNL80211_PMSR_ATTR_MAX_PEERS                             = 0x1\n\tNL80211_PMSR_ATTR_PEERS                                 = 0x5\n\tNL80211_PMSR_ATTR_RANDOMIZE_MAC_ADDR                    = 0x3\n\tNL80211_PMSR_ATTR_REPORT_AP_TSF                         = 0x2\n\tNL80211_PMSR_ATTR_TYPE_CAPA                             = 0x4\n\tNL80211_PMSR_FTM_CAPA_ATTR_ASAP                         = 0x1\n\tNL80211_PMSR_FTM_CAPA_ATTR_BANDWIDTHS                   = 0x6\n\tNL80211_PMSR_FTM_CAPA_ATTR_MAX_BURSTS_EXPONENT          = 0x7\n\tNL80211_PMSR_FTM_CAPA_ATTR_MAX                          = 0xa\n\tNL80211_PMSR_FTM_CAPA_ATTR_MAX_FTMS_PER_BURST           = 0x8\n\tNL80211_PMSR_FTM_CAPA_ATTR_NON_ASAP                     = 0x2\n\tNL80211_PMSR_FTM_CAPA_ATTR_NON_TRIGGER_BASED            = 0xa\n\tNL80211_PMSR_FTM_CAPA_ATTR_PREAMBLES                    = 0x5\n\tNL80211_PMSR_FTM_CAPA_ATTR_REQ_CIVICLOC                 = 0x4\n\tNL80211_PMSR_FTM_CAPA_ATTR_REQ_LCI                      = 0x3\n\tNL80211_PMSR_FTM_CAPA_ATTR_TRIGGER_BASED                = 0x9\n\tNL80211_PMSR_FTM_FAILURE_BAD_CHANGED_PARAMS             = 0x7\n\tNL80211_PMSR_FTM_FAILURE_INVALID_TIMESTAMP              = 0x5\n\tNL80211_PMSR_FTM_FAILURE_NO_RESPONSE                    = 0x1\n\tNL80211_PMSR_FTM_FAILURE_PEER_BUSY                      = 0x6\n\tNL80211_PMSR_FTM_FAILURE_PEER_NOT_CAPABLE               = 0x4\n\tNL80211_PMSR_FTM_FAILURE_REJECTED                       = 0x2\n\tNL80211_PMSR_FTM_FAILURE_UNSPECIFIED                    = 0x0\n\tNL80211_PMSR_FTM_FAILURE_WRONG_CHANNEL                  = 0x3\n\tNL80211_PMSR_FTM_REQ_ATTR_ASAP                          = 0x1\n\tNL80211_PMSR_FTM_REQ_ATTR_BSS_COLOR                     = 0xd\n\tNL80211_PMSR_FTM_REQ_ATTR_BURST_DURATION                = 0x5\n\tNL80211_PMSR_FTM_REQ_ATTR_BURST_PERIOD                  = 0x4\n\tNL80211_PMSR_FTM_REQ_ATTR_FTMS_PER_BURST                = 0x6\n\tNL80211_PMSR_FTM_REQ_ATTR_LMR_FEEDBACK                  = 0xc\n\tNL80211_PMSR_FTM_REQ_ATTR_MAX                           = 0xd\n\tNL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASED             = 0xb\n\tNL80211_PMSR_FTM_REQ_ATTR_NUM_BURSTS_EXP                = 0x3\n\tNL80211_PMSR_FTM_REQ_ATTR_NUM_FTMR_RETRIES              = 0x7\n\tNL80211_PMSR_FTM_REQ_ATTR_PREAMBLE                      = 0x2\n\tNL80211_PMSR_FTM_REQ_ATTR_REQUEST_CIVICLOC              = 0x9\n\tNL80211_PMSR_FTM_REQ_ATTR_REQUEST_LCI                   = 0x8\n\tNL80211_PMSR_FTM_REQ_ATTR_TRIGGER_BASED                 = 0xa\n\tNL80211_PMSR_FTM_RESP_ATTR_BURST_DURATION               = 0x7\n\tNL80211_PMSR_FTM_RESP_ATTR_BURST_INDEX                  = 0x2\n\tNL80211_PMSR_FTM_RESP_ATTR_BUSY_RETRY_TIME              = 0x5\n\tNL80211_PMSR_FTM_RESP_ATTR_CIVICLOC                     = 0x14\n\tNL80211_PMSR_FTM_RESP_ATTR_DIST_AVG                     = 0x10\n\tNL80211_PMSR_FTM_RESP_ATTR_DIST_SPREAD                  = 0x12\n\tNL80211_PMSR_FTM_RESP_ATTR_DIST_VARIANCE                = 0x11\n\tNL80211_PMSR_FTM_RESP_ATTR_FAIL_REASON                  = 0x1\n\tNL80211_PMSR_FTM_RESP_ATTR_FTMS_PER_BURST               = 0x8\n\tNL80211_PMSR_FTM_RESP_ATTR_LCI                          = 0x13\n\tNL80211_PMSR_FTM_RESP_ATTR_MAX                          = 0x15\n\tNL80211_PMSR_FTM_RESP_ATTR_NUM_BURSTS_EXP               = 0x6\n\tNL80211_PMSR_FTM_RESP_ATTR_NUM_FTMR_ATTEMPTS            = 0x3\n\tNL80211_PMSR_FTM_RESP_ATTR_NUM_FTMR_SUCCESSES           = 0x4\n\tNL80211_PMSR_FTM_RESP_ATTR_PAD                          = 0x15\n\tNL80211_PMSR_FTM_RESP_ATTR_RSSI_AVG                     = 0x9\n\tNL80211_PMSR_FTM_RESP_ATTR_RSSI_SPREAD                  = 0xa\n\tNL80211_PMSR_FTM_RESP_ATTR_RTT_AVG                      = 0xd\n\tNL80211_PMSR_FTM_RESP_ATTR_RTT_SPREAD                   = 0xf\n\tNL80211_PMSR_FTM_RESP_ATTR_RTT_VARIANCE                 = 0xe\n\tNL80211_PMSR_FTM_RESP_ATTR_RX_RATE                      = 0xc\n\tNL80211_PMSR_FTM_RESP_ATTR_TX_RATE                      = 0xb\n\tNL80211_PMSR_PEER_ATTR_ADDR                             = 0x1\n\tNL80211_PMSR_PEER_ATTR_CHAN                             = 0x2\n\tNL80211_PMSR_PEER_ATTR_MAX                              = 0x4\n\tNL80211_PMSR_PEER_ATTR_REQ                              = 0x3\n\tNL80211_PMSR_PEER_ATTR_RESP                             = 0x4\n\tNL80211_PMSR_REQ_ATTR_DATA                              = 0x1\n\tNL80211_PMSR_REQ_ATTR_GET_AP_TSF                        = 0x2\n\tNL80211_PMSR_REQ_ATTR_MAX                               = 0x2\n\tNL80211_PMSR_RESP_ATTR_AP_TSF                           = 0x4\n\tNL80211_PMSR_RESP_ATTR_DATA                             = 0x1\n\tNL80211_PMSR_RESP_ATTR_FINAL                            = 0x5\n\tNL80211_PMSR_RESP_ATTR_HOST_TIME                        = 0x3\n\tNL80211_PMSR_RESP_ATTR_MAX                              = 0x6\n\tNL80211_PMSR_RESP_ATTR_PAD                              = 0x6\n\tNL80211_PMSR_RESP_ATTR_STATUS                           = 0x2\n\tNL80211_PMSR_STATUS_FAILURE                             = 0x3\n\tNL80211_PMSR_STATUS_REFUSED                             = 0x1\n\tNL80211_PMSR_STATUS_SUCCESS                             = 0x0\n\tNL80211_PMSR_STATUS_TIMEOUT                             = 0x2\n\tNL80211_PMSR_TYPE_FTM                                   = 0x1\n\tNL80211_PMSR_TYPE_INVALID                               = 0x0\n\tNL80211_PMSR_TYPE_MAX                                   = 0x1\n\tNL80211_PREAMBLE_DMG                                    = 0x3\n\tNL80211_PREAMBLE_HE                                     = 0x4\n\tNL80211_PREAMBLE_HT                                     = 0x1\n\tNL80211_PREAMBLE_LEGACY                                 = 0x0\n\tNL80211_PREAMBLE_VHT                                    = 0x2\n\tNL80211_PROBE_RESP_OFFLOAD_SUPPORT_80211U               = 0x8\n\tNL80211_PROBE_RESP_OFFLOAD_SUPPORT_P2P                  = 0x4\n\tNL80211_PROBE_RESP_OFFLOAD_SUPPORT_WPS2                 = 0x2\n\tNL80211_PROBE_RESP_OFFLOAD_SUPPORT_WPS                  = 0x1\n\tNL80211_PROTOCOL_FEATURE_SPLIT_WIPHY_DUMP               = 0x1\n\tNL80211_PS_DISABLED                                     = 0x0\n\tNL80211_PS_ENABLED                                      = 0x1\n\tNL80211_RADAR_CAC_ABORTED                               = 0x2\n\tNL80211_RADAR_CAC_FINISHED                              = 0x1\n\tNL80211_RADAR_CAC_STARTED                               = 0x5\n\tNL80211_RADAR_DETECTED                                  = 0x0\n\tNL80211_RADAR_NOP_FINISHED                              = 0x3\n\tNL80211_RADAR_PRE_CAC_EXPIRED                           = 0x4\n\tNL80211_RATE_INFO_10_MHZ_WIDTH                          = 0xb\n\tNL80211_RATE_INFO_160_MHZ_WIDTH                         = 0xa\n\tNL80211_RATE_INFO_16_MHZ_WIDTH                          = 0x1d\n\tNL80211_RATE_INFO_1_MHZ_WIDTH                           = 0x19\n\tNL80211_RATE_INFO_2_MHZ_WIDTH                           = 0x1a\n\tNL80211_RATE_INFO_320_MHZ_WIDTH                         = 0x12\n\tNL80211_RATE_INFO_40_MHZ_WIDTH                          = 0x3\n\tNL80211_RATE_INFO_4_MHZ_WIDTH                           = 0x1b\n\tNL80211_RATE_INFO_5_MHZ_WIDTH                           = 0xc\n\tNL80211_RATE_INFO_80_MHZ_WIDTH                          = 0x8\n\tNL80211_RATE_INFO_80P80_MHZ_WIDTH                       = 0x9\n\tNL80211_RATE_INFO_8_MHZ_WIDTH                           = 0x1c\n\tNL80211_RATE_INFO_BITRATE32                             = 0x5\n\tNL80211_RATE_INFO_BITRATE                               = 0x1\n\tNL80211_RATE_INFO_EHT_GI_0_8                            = 0x0\n\tNL80211_RATE_INFO_EHT_GI_1_6                            = 0x1\n\tNL80211_RATE_INFO_EHT_GI_3_2                            = 0x2\n\tNL80211_RATE_INFO_EHT_GI                                = 0x15\n\tNL80211_RATE_INFO_EHT_MCS                               = 0x13\n\tNL80211_RATE_INFO_EHT_NSS                               = 0x14\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_106                      = 0x3\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_106P26                   = 0x4\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_242                      = 0x5\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_26                       = 0x0\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_2x996                    = 0xb\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_2x996P484                = 0xc\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_3x996                    = 0xd\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_3x996P484                = 0xe\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_484                      = 0x6\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_484P242                  = 0x7\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_4x996                    = 0xf\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_52                       = 0x1\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_52P26                    = 0x2\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_996                      = 0x8\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_996P484                  = 0x9\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_996P484P242              = 0xa\n\tNL80211_RATE_INFO_EHT_RU_ALLOC                          = 0x16\n\tNL80211_RATE_INFO_HE_1XLTF                              = 0x0\n\tNL80211_RATE_INFO_HE_2XLTF                              = 0x1\n\tNL80211_RATE_INFO_HE_4XLTF                              = 0x2\n\tNL80211_RATE_INFO_HE_DCM                                = 0x10\n\tNL80211_RATE_INFO_HE_GI_0_8                             = 0x0\n\tNL80211_RATE_INFO_HE_GI_1_6                             = 0x1\n\tNL80211_RATE_INFO_HE_GI_3_2                             = 0x2\n\tNL80211_RATE_INFO_HE_GI                                 = 0xf\n\tNL80211_RATE_INFO_HE_MCS                                = 0xd\n\tNL80211_RATE_INFO_HE_NSS                                = 0xe\n\tNL80211_RATE_INFO_HE_RU_ALLOC_106                       = 0x2\n\tNL80211_RATE_INFO_HE_RU_ALLOC_242                       = 0x3\n\tNL80211_RATE_INFO_HE_RU_ALLOC_26                        = 0x0\n\tNL80211_RATE_INFO_HE_RU_ALLOC_2x996                     = 0x6\n\tNL80211_RATE_INFO_HE_RU_ALLOC_484                       = 0x4\n\tNL80211_RATE_INFO_HE_RU_ALLOC_52                        = 0x1\n\tNL80211_RATE_INFO_HE_RU_ALLOC_996                       = 0x5\n\tNL80211_RATE_INFO_HE_RU_ALLOC                           = 0x11\n\tNL80211_RATE_INFO_MAX                                   = 0x1d\n\tNL80211_RATE_INFO_MCS                                   = 0x2\n\tNL80211_RATE_INFO_S1G_MCS                               = 0x17\n\tNL80211_RATE_INFO_S1G_NSS                               = 0x18\n\tNL80211_RATE_INFO_SHORT_GI                              = 0x4\n\tNL80211_RATE_INFO_VHT_MCS                               = 0x6\n\tNL80211_RATE_INFO_VHT_NSS                               = 0x7\n\tNL80211_REGDOM_SET_BY_CORE                              = 0x0\n\tNL80211_REGDOM_SET_BY_COUNTRY_IE                        = 0x3\n\tNL80211_REGDOM_SET_BY_DRIVER                            = 0x2\n\tNL80211_REGDOM_SET_BY_USER                              = 0x1\n\tNL80211_REGDOM_TYPE_COUNTRY                             = 0x0\n\tNL80211_REGDOM_TYPE_CUSTOM_WORLD                        = 0x2\n\tNL80211_REGDOM_TYPE_INTERSECTION                        = 0x3\n\tNL80211_REGDOM_TYPE_WORLD                               = 0x1\n\tNL80211_REG_RULE_ATTR_MAX                               = 0x8\n\tNL80211_REKEY_DATA_AKM                                  = 0x4\n\tNL80211_REKEY_DATA_KCK                                  = 0x2\n\tNL80211_REKEY_DATA_KEK                                  = 0x1\n\tNL80211_REKEY_DATA_REPLAY_CTR                           = 0x3\n\tNL80211_REPLAY_CTR_LEN                                  = 0x8\n\tNL80211_RRF_ALLOW_6GHZ_VLP_AP                           = 0x1000000\n\tNL80211_RRF_AUTO_BW                                     = 0x800\n\tNL80211_RRF_DFS                                         = 0x10\n\tNL80211_RRF_DFS_CONCURRENT                              = 0x200000\n\tNL80211_RRF_GO_CONCURRENT                               = 0x1000\n\tNL80211_RRF_IR_CONCURRENT                               = 0x1000\n\tNL80211_RRF_NO_160MHZ                                   = 0x10000\n\tNL80211_RRF_NO_320MHZ                                   = 0x40000\n\tNL80211_RRF_NO_6GHZ_AFC_CLIENT                          = 0x800000\n\tNL80211_RRF_NO_6GHZ_VLP_CLIENT                          = 0x400000\n\tNL80211_RRF_NO_80MHZ                                    = 0x8000\n\tNL80211_RRF_NO_CCK                                      = 0x2\n\tNL80211_RRF_NO_EHT                                      = 0x80000\n\tNL80211_RRF_NO_HE                                       = 0x20000\n\tNL80211_RRF_NO_HT40                                     = 0x6000\n\tNL80211_RRF_NO_HT40MINUS                                = 0x2000\n\tNL80211_RRF_NO_HT40PLUS                                 = 0x4000\n\tNL80211_RRF_NO_IBSS                                     = 0x80\n\tNL80211_RRF_NO_INDOOR                                   = 0x4\n\tNL80211_RRF_NO_IR_ALL                                   = 0x180\n\tNL80211_RRF_NO_IR                                       = 0x80\n\tNL80211_RRF_NO_OFDM                                     = 0x1\n\tNL80211_RRF_NO_OUTDOOR                                  = 0x8\n\tNL80211_RRF_NO_UHB_AFC_CLIENT                           = 0x800000\n\tNL80211_RRF_NO_UHB_VLP_CLIENT                           = 0x400000\n\tNL80211_RRF_PASSIVE_SCAN                                = 0x80\n\tNL80211_RRF_PSD                                         = 0x100000\n\tNL80211_RRF_PTMP_ONLY                                   = 0x40\n\tNL80211_RRF_PTP_ONLY                                    = 0x20\n\tNL80211_RXMGMT_FLAG_ANSWERED                            = 0x1\n\tNL80211_RXMGMT_FLAG_EXTERNAL_AUTH                       = 0x2\n\tNL80211_SAE_PWE_BOTH                                    = 0x3\n\tNL80211_SAE_PWE_HASH_TO_ELEMENT                         = 0x2\n\tNL80211_SAE_PWE_HUNT_AND_PECK                           = 0x1\n\tNL80211_SAE_PWE_UNSPECIFIED                             = 0x0\n\tNL80211_SAR_ATTR_MAX                                    = 0x2\n\tNL80211_SAR_ATTR_SPECS                                  = 0x2\n\tNL80211_SAR_ATTR_SPECS_END_FREQ                         = 0x4\n\tNL80211_SAR_ATTR_SPECS_MAX                              = 0x4\n\tNL80211_SAR_ATTR_SPECS_POWER                            = 0x1\n\tNL80211_SAR_ATTR_SPECS_RANGE_INDEX                      = 0x2\n\tNL80211_SAR_ATTR_SPECS_START_FREQ                       = 0x3\n\tNL80211_SAR_ATTR_TYPE                                   = 0x1\n\tNL80211_SAR_TYPE_POWER                                  = 0x0\n\tNL80211_SCAN_FLAG_ACCEPT_BCAST_PROBE_RESP               = 0x20\n\tNL80211_SCAN_FLAG_AP                                    = 0x4\n\tNL80211_SCAN_FLAG_COLOCATED_6GHZ                        = 0x4000\n\tNL80211_SCAN_FLAG_FILS_MAX_CHANNEL_TIME                 = 0x10\n\tNL80211_SCAN_FLAG_FLUSH                                 = 0x2\n\tNL80211_SCAN_FLAG_FREQ_KHZ                              = 0x2000\n\tNL80211_SCAN_FLAG_HIGH_ACCURACY                         = 0x400\n\tNL80211_SCAN_FLAG_LOW_POWER                             = 0x200\n\tNL80211_SCAN_FLAG_LOW_PRIORITY                          = 0x1\n\tNL80211_SCAN_FLAG_LOW_SPAN                              = 0x100\n\tNL80211_SCAN_FLAG_MIN_PREQ_CONTENT                      = 0x1000\n\tNL80211_SCAN_FLAG_OCE_PROBE_REQ_DEFERRAL_SUPPRESSION    = 0x80\n\tNL80211_SCAN_FLAG_OCE_PROBE_REQ_HIGH_TX_RATE            = 0x40\n\tNL80211_SCAN_FLAG_RANDOM_ADDR                           = 0x8\n\tNL80211_SCAN_FLAG_RANDOM_SN                             = 0x800\n\tNL80211_SCAN_RSSI_THOLD_OFF                             = -0x12c\n\tNL80211_SCHED_SCAN_MATCH_ATTR_BSSID                     = 0x5\n\tNL80211_SCHED_SCAN_MATCH_ATTR_MAX                       = 0x6\n\tNL80211_SCHED_SCAN_MATCH_ATTR_RELATIVE_RSSI             = 0x3\n\tNL80211_SCHED_SCAN_MATCH_ATTR_RSSI_ADJUST               = 0x4\n\tNL80211_SCHED_SCAN_MATCH_ATTR_RSSI                      = 0x2\n\tNL80211_SCHED_SCAN_MATCH_ATTR_SSID                      = 0x1\n\tNL80211_SCHED_SCAN_MATCH_PER_BAND_RSSI                  = 0x6\n\tNL80211_SCHED_SCAN_PLAN_INTERVAL                        = 0x1\n\tNL80211_SCHED_SCAN_PLAN_ITERATIONS                      = 0x2\n\tNL80211_SCHED_SCAN_PLAN_MAX                             = 0x2\n\tNL80211_SMPS_DYNAMIC                                    = 0x2\n\tNL80211_SMPS_MAX                                        = 0x2\n\tNL80211_SMPS_OFF                                        = 0x0\n\tNL80211_SMPS_STATIC                                     = 0x1\n\tNL80211_STA_BSS_PARAM_BEACON_INTERVAL                   = 0x5\n\tNL80211_STA_BSS_PARAM_CTS_PROT                          = 0x1\n\tNL80211_STA_BSS_PARAM_DTIM_PERIOD                       = 0x4\n\tNL80211_STA_BSS_PARAM_MAX                               = 0x5\n\tNL80211_STA_BSS_PARAM_SHORT_PREAMBLE                    = 0x2\n\tNL80211_STA_BSS_PARAM_SHORT_SLOT_TIME                   = 0x3\n\tNL80211_STA_FLAG_ASSOCIATED                             = 0x7\n\tNL80211_STA_FLAG_AUTHENTICATED                          = 0x5\n\tNL80211_STA_FLAG_AUTHORIZED                             = 0x1\n\tNL80211_STA_FLAG_MAX                                    = 0x8\n\tNL80211_STA_FLAG_MAX_OLD_API                            = 0x6\n\tNL80211_STA_FLAG_MFP                                    = 0x4\n\tNL80211_STA_FLAG_SHORT_PREAMBLE                         = 0x2\n\tNL80211_STA_FLAG_SPP_AMSDU                              = 0x8\n\tNL80211_STA_FLAG_TDLS_PEER                              = 0x6\n\tNL80211_STA_FLAG_WME                                    = 0x3\n\tNL80211_STA_INFO_ACK_SIGNAL_AVG                         = 0x23\n\tNL80211_STA_INFO_ACK_SIGNAL                             = 0x22\n\tNL80211_STA_INFO_AIRTIME_LINK_METRIC                    = 0x29\n\tNL80211_STA_INFO_AIRTIME_WEIGHT                         = 0x28\n\tNL80211_STA_INFO_ASSOC_AT_BOOTTIME                      = 0x2a\n\tNL80211_STA_INFO_BEACON_LOSS                            = 0x12\n\tNL80211_STA_INFO_BEACON_RX                              = 0x1d\n\tNL80211_STA_INFO_BEACON_SIGNAL_AVG                      = 0x1e\n\tNL80211_STA_INFO_BSS_PARAM                              = 0xf\n\tNL80211_STA_INFO_CHAIN_SIGNAL_AVG                       = 0x1a\n\tNL80211_STA_INFO_CHAIN_SIGNAL                           = 0x19\n\tNL80211_STA_INFO_CONNECTED_TIME                         = 0x10\n\tNL80211_STA_INFO_CONNECTED_TO_AS                        = 0x2b\n\tNL80211_STA_INFO_CONNECTED_TO_GATE                      = 0x26\n\tNL80211_STA_INFO_DATA_ACK_SIGNAL_AVG                    = 0x23\n\tNL80211_STA_INFO_EXPECTED_THROUGHPUT                    = 0x1b\n\tNL80211_STA_INFO_FCS_ERROR_COUNT                        = 0x25\n\tNL80211_STA_INFO_INACTIVE_TIME                          = 0x1\n\tNL80211_STA_INFO_LLID                                   = 0x4\n\tNL80211_STA_INFO_LOCAL_PM                               = 0x14\n\tNL80211_STA_INFO_MAX                                    = 0x2b\n\tNL80211_STA_INFO_NONPEER_PM                             = 0x16\n\tNL80211_STA_INFO_PAD                                    = 0x21\n\tNL80211_STA_INFO_PEER_PM                                = 0x15\n\tNL80211_STA_INFO_PLID                                   = 0x5\n\tNL80211_STA_INFO_PLINK_STATE                            = 0x6\n\tNL80211_STA_INFO_RX_BITRATE                             = 0xe\n\tNL80211_STA_INFO_RX_BYTES64                             = 0x17\n\tNL80211_STA_INFO_RX_BYTES                               = 0x2\n\tNL80211_STA_INFO_RX_DROP_MISC                           = 0x1c\n\tNL80211_STA_INFO_RX_DURATION                            = 0x20\n\tNL80211_STA_INFO_RX_MPDUS                               = 0x24\n\tNL80211_STA_INFO_RX_PACKETS                             = 0x9\n\tNL80211_STA_INFO_SIGNAL_AVG                             = 0xd\n\tNL80211_STA_INFO_SIGNAL                                 = 0x7\n\tNL80211_STA_INFO_STA_FLAGS                              = 0x11\n\tNL80211_STA_INFO_TID_STATS                              = 0x1f\n\tNL80211_STA_INFO_T_OFFSET                               = 0x13\n\tNL80211_STA_INFO_TX_BITRATE                             = 0x8\n\tNL80211_STA_INFO_TX_BYTES64                             = 0x18\n\tNL80211_STA_INFO_TX_BYTES                               = 0x3\n\tNL80211_STA_INFO_TX_DURATION                            = 0x27\n\tNL80211_STA_INFO_TX_FAILED                              = 0xc\n\tNL80211_STA_INFO_TX_PACKETS                             = 0xa\n\tNL80211_STA_INFO_TX_RETRIES                             = 0xb\n\tNL80211_STA_WME_MAX                                     = 0x2\n\tNL80211_STA_WME_MAX_SP                                  = 0x2\n\tNL80211_STA_WME_UAPSD_QUEUES                            = 0x1\n\tNL80211_SURVEY_INFO_CHANNEL_TIME_BUSY                   = 0x5\n\tNL80211_SURVEY_INFO_CHANNEL_TIME                        = 0x4\n\tNL80211_SURVEY_INFO_CHANNEL_TIME_EXT_BUSY               = 0x6\n\tNL80211_SURVEY_INFO_CHANNEL_TIME_RX                     = 0x7\n\tNL80211_SURVEY_INFO_CHANNEL_TIME_TX                     = 0x8\n\tNL80211_SURVEY_INFO_FREQUENCY                           = 0x1\n\tNL80211_SURVEY_INFO_FREQUENCY_OFFSET                    = 0xc\n\tNL80211_SURVEY_INFO_IN_USE                              = 0x3\n\tNL80211_SURVEY_INFO_MAX                                 = 0xc\n\tNL80211_SURVEY_INFO_NOISE                               = 0x2\n\tNL80211_SURVEY_INFO_PAD                                 = 0xa\n\tNL80211_SURVEY_INFO_TIME_BSS_RX                         = 0xb\n\tNL80211_SURVEY_INFO_TIME_BUSY                           = 0x5\n\tNL80211_SURVEY_INFO_TIME                                = 0x4\n\tNL80211_SURVEY_INFO_TIME_EXT_BUSY                       = 0x6\n\tNL80211_SURVEY_INFO_TIME_RX                             = 0x7\n\tNL80211_SURVEY_INFO_TIME_SCAN                           = 0x9\n\tNL80211_SURVEY_INFO_TIME_TX                             = 0x8\n\tNL80211_TDLS_DISABLE_LINK                               = 0x4\n\tNL80211_TDLS_DISCOVERY_REQ                              = 0x0\n\tNL80211_TDLS_ENABLE_LINK                                = 0x3\n\tNL80211_TDLS_PEER_HE                                    = 0x8\n\tNL80211_TDLS_PEER_HT                                    = 0x1\n\tNL80211_TDLS_PEER_VHT                                   = 0x2\n\tNL80211_TDLS_PEER_WMM                                   = 0x4\n\tNL80211_TDLS_SETUP                                      = 0x1\n\tNL80211_TDLS_TEARDOWN                                   = 0x2\n\tNL80211_TID_CONFIG_ATTR_AMPDU_CTRL                      = 0x9\n\tNL80211_TID_CONFIG_ATTR_AMSDU_CTRL                      = 0xb\n\tNL80211_TID_CONFIG_ATTR_MAX                             = 0xd\n\tNL80211_TID_CONFIG_ATTR_NOACK                           = 0x6\n\tNL80211_TID_CONFIG_ATTR_OVERRIDE                        = 0x4\n\tNL80211_TID_CONFIG_ATTR_PAD                             = 0x1\n\tNL80211_TID_CONFIG_ATTR_PEER_SUPP                       = 0x3\n\tNL80211_TID_CONFIG_ATTR_RETRY_LONG                      = 0x8\n\tNL80211_TID_CONFIG_ATTR_RETRY_SHORT                     = 0x7\n\tNL80211_TID_CONFIG_ATTR_RTSCTS_CTRL                     = 0xa\n\tNL80211_TID_CONFIG_ATTR_TIDS                            = 0x5\n\tNL80211_TID_CONFIG_ATTR_TX_RATE                         = 0xd\n\tNL80211_TID_CONFIG_ATTR_TX_RATE_TYPE                    = 0xc\n\tNL80211_TID_CONFIG_ATTR_VIF_SUPP                        = 0x2\n\tNL80211_TID_CONFIG_DISABLE                              = 0x1\n\tNL80211_TID_CONFIG_ENABLE                               = 0x0\n\tNL80211_TID_STATS_MAX                                   = 0x6\n\tNL80211_TID_STATS_PAD                                   = 0x5\n\tNL80211_TID_STATS_RX_MSDU                               = 0x1\n\tNL80211_TID_STATS_TX_MSDU                               = 0x2\n\tNL80211_TID_STATS_TX_MSDU_FAILED                        = 0x4\n\tNL80211_TID_STATS_TX_MSDU_RETRIES                       = 0x3\n\tNL80211_TID_STATS_TXQ_STATS                             = 0x6\n\tNL80211_TIMEOUT_ASSOC                                   = 0x3\n\tNL80211_TIMEOUT_AUTH                                    = 0x2\n\tNL80211_TIMEOUT_SCAN                                    = 0x1\n\tNL80211_TIMEOUT_UNSPECIFIED                             = 0x0\n\tNL80211_TKIP_DATA_OFFSET_ENCR_KEY                       = 0x0\n\tNL80211_TKIP_DATA_OFFSET_RX_MIC_KEY                     = 0x18\n\tNL80211_TKIP_DATA_OFFSET_TX_MIC_KEY                     = 0x10\n\tNL80211_TX_POWER_AUTOMATIC                              = 0x0\n\tNL80211_TX_POWER_FIXED                                  = 0x2\n\tNL80211_TX_POWER_LIMITED                                = 0x1\n\tNL80211_TXQ_ATTR_AC                                     = 0x1\n\tNL80211_TXQ_ATTR_AIFS                                   = 0x5\n\tNL80211_TXQ_ATTR_CWMAX                                  = 0x4\n\tNL80211_TXQ_ATTR_CWMIN                                  = 0x3\n\tNL80211_TXQ_ATTR_MAX                                    = 0x5\n\tNL80211_TXQ_ATTR_QUEUE                                  = 0x1\n\tNL80211_TXQ_ATTR_TXOP                                   = 0x2\n\tNL80211_TXQ_Q_BE                                        = 0x2\n\tNL80211_TXQ_Q_BK                                        = 0x3\n\tNL80211_TXQ_Q_VI                                        = 0x1\n\tNL80211_TXQ_Q_VO                                        = 0x0\n\tNL80211_TXQ_STATS_BACKLOG_BYTES                         = 0x1\n\tNL80211_TXQ_STATS_BACKLOG_PACKETS                       = 0x2\n\tNL80211_TXQ_STATS_COLLISIONS                            = 0x8\n\tNL80211_TXQ_STATS_DROPS                                 = 0x4\n\tNL80211_TXQ_STATS_ECN_MARKS                             = 0x5\n\tNL80211_TXQ_STATS_FLOWS                                 = 0x3\n\tNL80211_TXQ_STATS_MAX                                   = 0xb\n\tNL80211_TXQ_STATS_MAX_FLOWS                             = 0xb\n\tNL80211_TXQ_STATS_OVERLIMIT                             = 0x6\n\tNL80211_TXQ_STATS_OVERMEMORY                            = 0x7\n\tNL80211_TXQ_STATS_TX_BYTES                              = 0x9\n\tNL80211_TXQ_STATS_TX_PACKETS                            = 0xa\n\tNL80211_TX_RATE_AUTOMATIC                               = 0x0\n\tNL80211_TXRATE_DEFAULT_GI                               = 0x0\n\tNL80211_TX_RATE_FIXED                                   = 0x2\n\tNL80211_TXRATE_FORCE_LGI                                = 0x2\n\tNL80211_TXRATE_FORCE_SGI                                = 0x1\n\tNL80211_TXRATE_GI                                       = 0x4\n\tNL80211_TXRATE_HE                                       = 0x5\n\tNL80211_TXRATE_HE_GI                                    = 0x6\n\tNL80211_TXRATE_HE_LTF                                   = 0x7\n\tNL80211_TXRATE_HT                                       = 0x2\n\tNL80211_TXRATE_LEGACY                                   = 0x1\n\tNL80211_TX_RATE_LIMITED                                 = 0x1\n\tNL80211_TXRATE_MAX                                      = 0x7\n\tNL80211_TXRATE_MCS                                      = 0x2\n\tNL80211_TXRATE_VHT                                      = 0x3\n\tNL80211_UNSOL_BCAST_PROBE_RESP_ATTR_INT                 = 0x1\n\tNL80211_UNSOL_BCAST_PROBE_RESP_ATTR_MAX                 = 0x2\n\tNL80211_UNSOL_BCAST_PROBE_RESP_ATTR_TMPL                = 0x2\n\tNL80211_USER_REG_HINT_CELL_BASE                         = 0x1\n\tNL80211_USER_REG_HINT_INDOOR                            = 0x2\n\tNL80211_USER_REG_HINT_USER                              = 0x0\n\tNL80211_VENDOR_ID_IS_LINUX                              = 0x80000000\n\tNL80211_VHT_CAPABILITY_LEN                              = 0xc\n\tNL80211_VHT_NSS_MAX                                     = 0x8\n\tNL80211_WIPHY_NAME_MAXLEN                               = 0x40\n\tNL80211_WIPHY_RADIO_ATTR_FREQ_RANGE                     = 0x2\n\tNL80211_WIPHY_RADIO_ATTR_INDEX                          = 0x1\n\tNL80211_WIPHY_RADIO_ATTR_INTERFACE_COMBINATION          = 0x3\n\tNL80211_WIPHY_RADIO_ATTR_MAX                            = 0x4\n\tNL80211_WIPHY_RADIO_FREQ_ATTR_END                       = 0x2\n\tNL80211_WIPHY_RADIO_FREQ_ATTR_MAX                       = 0x2\n\tNL80211_WIPHY_RADIO_FREQ_ATTR_START                     = 0x1\n\tNL80211_WMMR_AIFSN                                      = 0x3\n\tNL80211_WMMR_CW_MAX                                     = 0x2\n\tNL80211_WMMR_CW_MIN                                     = 0x1\n\tNL80211_WMMR_MAX                                        = 0x4\n\tNL80211_WMMR_TXOP                                       = 0x4\n\tNL80211_WOWLAN_PKTPAT_MASK                              = 0x1\n\tNL80211_WOWLAN_PKTPAT_OFFSET                            = 0x3\n\tNL80211_WOWLAN_PKTPAT_PATTERN                           = 0x2\n\tNL80211_WOWLAN_TCP_DATA_INTERVAL                        = 0x9\n\tNL80211_WOWLAN_TCP_DATA_PAYLOAD                         = 0x6\n\tNL80211_WOWLAN_TCP_DATA_PAYLOAD_SEQ                     = 0x7\n\tNL80211_WOWLAN_TCP_DATA_PAYLOAD_TOKEN                   = 0x8\n\tNL80211_WOWLAN_TCP_DST_IPV4                             = 0x2\n\tNL80211_WOWLAN_TCP_DST_MAC                              = 0x3\n\tNL80211_WOWLAN_TCP_DST_PORT                             = 0x5\n\tNL80211_WOWLAN_TCP_SRC_IPV4                             = 0x1\n\tNL80211_WOWLAN_TCP_SRC_PORT                             = 0x4\n\tNL80211_WOWLAN_TCP_WAKE_MASK                            = 0xb\n\tNL80211_WOWLAN_TCP_WAKE_PAYLOAD                         = 0xa\n\tNL80211_WOWLAN_TRIG_4WAY_HANDSHAKE                      = 0x8\n\tNL80211_WOWLAN_TRIG_ANY                                 = 0x1\n\tNL80211_WOWLAN_TRIG_DISCONNECT                          = 0x2\n\tNL80211_WOWLAN_TRIG_EAP_IDENT_REQUEST                   = 0x7\n\tNL80211_WOWLAN_TRIG_GTK_REKEY_FAILURE                   = 0x6\n\tNL80211_WOWLAN_TRIG_GTK_REKEY_SUPPORTED                 = 0x5\n\tNL80211_WOWLAN_TRIG_MAGIC_PKT                           = 0x3\n\tNL80211_WOWLAN_TRIG_NET_DETECT                          = 0x12\n\tNL80211_WOWLAN_TRIG_NET_DETECT_RESULTS                  = 0x13\n\tNL80211_WOWLAN_TRIG_PKT_PATTERN                         = 0x4\n\tNL80211_WOWLAN_TRIG_RFKILL_RELEASE                      = 0x9\n\tNL80211_WOWLAN_TRIG_TCP_CONNECTION                      = 0xe\n\tNL80211_WOWLAN_TRIG_UNPROTECTED_DEAUTH_DISASSOC         = 0x14\n\tNL80211_WOWLAN_TRIG_WAKEUP_PKT_80211                    = 0xa\n\tNL80211_WOWLAN_TRIG_WAKEUP_PKT_80211_LEN                = 0xb\n\tNL80211_WOWLAN_TRIG_WAKEUP_PKT_8023                     = 0xc\n\tNL80211_WOWLAN_TRIG_WAKEUP_PKT_8023_LEN                 = 0xd\n\tNL80211_WOWLAN_TRIG_WAKEUP_TCP_CONNLOST                 = 0x10\n\tNL80211_WOWLAN_TRIG_WAKEUP_TCP_MATCH                    = 0xf\n\tNL80211_WOWLAN_TRIG_WAKEUP_TCP_NOMORETOKENS             = 0x11\n\tNL80211_WPA_VERSION_1                                   = 0x1\n\tNL80211_WPA_VERSION_2                                   = 0x2\n\tNL80211_WPA_VERSION_3                                   = 0x4\n)\n\nconst (\n\tFRA_UNSPEC             = 0x0\n\tFRA_DST                = 0x1\n\tFRA_SRC                = 0x2\n\tFRA_IIFNAME            = 0x3\n\tFRA_GOTO               = 0x4\n\tFRA_UNUSED2            = 0x5\n\tFRA_PRIORITY           = 0x6\n\tFRA_UNUSED3            = 0x7\n\tFRA_UNUSED4            = 0x8\n\tFRA_UNUSED5            = 0x9\n\tFRA_FWMARK             = 0xa\n\tFRA_FLOW               = 0xb\n\tFRA_TUN_ID             = 0xc\n\tFRA_SUPPRESS_IFGROUP   = 0xd\n\tFRA_SUPPRESS_PREFIXLEN = 0xe\n\tFRA_TABLE              = 0xf\n\tFRA_FWMASK             = 0x10\n\tFRA_OIFNAME            = 0x11\n\tFRA_PAD                = 0x12\n\tFRA_L3MDEV             = 0x13\n\tFRA_UID_RANGE          = 0x14\n\tFRA_PROTOCOL           = 0x15\n\tFRA_IP_PROTO           = 0x16\n\tFRA_SPORT_RANGE        = 0x17\n\tFRA_DPORT_RANGE        = 0x18\n\tFR_ACT_UNSPEC          = 0x0\n\tFR_ACT_TO_TBL          = 0x1\n\tFR_ACT_GOTO            = 0x2\n\tFR_ACT_NOP             = 0x3\n\tFR_ACT_RES3            = 0x4\n\tFR_ACT_RES4            = 0x5\n\tFR_ACT_BLACKHOLE       = 0x6\n\tFR_ACT_UNREACHABLE     = 0x7\n\tFR_ACT_PROHIBIT        = 0x8\n)\n\nconst (\n\tAUDIT_NLGRP_NONE    = 0x0\n\tAUDIT_NLGRP_READLOG = 0x1\n)\n\nconst (\n\tTUN_F_CSUM    = 0x1\n\tTUN_F_TSO4    = 0x2\n\tTUN_F_TSO6    = 0x4\n\tTUN_F_TSO_ECN = 0x8\n\tTUN_F_UFO     = 0x10\n\tTUN_F_USO4    = 0x20\n\tTUN_F_USO6    = 0x40\n)\n\nconst (\n\tVIRTIO_NET_HDR_F_NEEDS_CSUM = 0x1\n\tVIRTIO_NET_HDR_F_DATA_VALID = 0x2\n\tVIRTIO_NET_HDR_F_RSC_INFO   = 0x4\n)\n\nconst (\n\tVIRTIO_NET_HDR_GSO_NONE   = 0x0\n\tVIRTIO_NET_HDR_GSO_TCPV4  = 0x1\n\tVIRTIO_NET_HDR_GSO_UDP    = 0x3\n\tVIRTIO_NET_HDR_GSO_TCPV6  = 0x4\n\tVIRTIO_NET_HDR_GSO_UDP_L4 = 0x5\n\tVIRTIO_NET_HDR_GSO_ECN    = 0x80\n)\n\ntype SchedAttr struct {\n\tSize     uint32\n\tPolicy   uint32\n\tFlags    uint64\n\tNice     int32\n\tPriority uint32\n\tRuntime  uint64\n\tDeadline uint64\n\tPeriod   uint64\n\tUtil_min uint32\n\tUtil_max uint32\n}\n\nconst SizeofSchedAttr = 0x38\n\ntype Cachestat_t struct {\n\tCache            uint64\n\tDirty            uint64\n\tWriteback        uint64\n\tEvicted          uint64\n\tRecently_evicted uint64\n}\ntype CachestatRange struct {\n\tOff uint64\n\tLen uint64\n}\n\nconst (\n\tSK_MEMINFO_RMEM_ALLOC          = 0x0\n\tSK_MEMINFO_RCVBUF              = 0x1\n\tSK_MEMINFO_WMEM_ALLOC          = 0x2\n\tSK_MEMINFO_SNDBUF              = 0x3\n\tSK_MEMINFO_FWD_ALLOC           = 0x4\n\tSK_MEMINFO_WMEM_QUEUED         = 0x5\n\tSK_MEMINFO_OPTMEM              = 0x6\n\tSK_MEMINFO_BACKLOG             = 0x7\n\tSK_MEMINFO_DROPS               = 0x8\n\tSK_MEMINFO_VARS                = 0x9\n\tSKNLGRP_NONE                   = 0x0\n\tSKNLGRP_INET_TCP_DESTROY       = 0x1\n\tSKNLGRP_INET_UDP_DESTROY       = 0x2\n\tSKNLGRP_INET6_TCP_DESTROY      = 0x3\n\tSKNLGRP_INET6_UDP_DESTROY      = 0x4\n\tSK_DIAG_BPF_STORAGE_REQ_NONE   = 0x0\n\tSK_DIAG_BPF_STORAGE_REQ_MAP_FD = 0x1\n\tSK_DIAG_BPF_STORAGE_REP_NONE   = 0x0\n\tSK_DIAG_BPF_STORAGE            = 0x1\n\tSK_DIAG_BPF_STORAGE_NONE       = 0x0\n\tSK_DIAG_BPF_STORAGE_PAD        = 0x1\n\tSK_DIAG_BPF_STORAGE_MAP_ID     = 0x2\n\tSK_DIAG_BPF_STORAGE_MAP_VALUE  = 0x3\n)\n\ntype SockDiagReq struct {\n\tFamily   uint8\n\tProtocol uint8\n}\n\nconst RTM_NEWNVLAN = 0x70\n\nconst (\n\tMPOL_BIND                = 0x2\n\tMPOL_DEFAULT             = 0x0\n\tMPOL_F_ADDR              = 0x2\n\tMPOL_F_MEMS_ALLOWED      = 0x4\n\tMPOL_F_MOF               = 0x8\n\tMPOL_F_MORON             = 0x10\n\tMPOL_F_NODE              = 0x1\n\tMPOL_F_NUMA_BALANCING    = 0x2000\n\tMPOL_F_RELATIVE_NODES    = 0x4000\n\tMPOL_F_SHARED            = 0x1\n\tMPOL_F_STATIC_NODES      = 0x8000\n\tMPOL_INTERLEAVE          = 0x3\n\tMPOL_LOCAL               = 0x4\n\tMPOL_MAX                 = 0x7\n\tMPOL_MF_INTERNAL         = 0x10\n\tMPOL_MF_LAZY             = 0x8\n\tMPOL_MF_MOVE_ALL         = 0x4\n\tMPOL_MF_MOVE             = 0x2\n\tMPOL_MF_STRICT           = 0x1\n\tMPOL_MF_VALID            = 0x7\n\tMPOL_MODE_FLAGS          = 0xe000\n\tMPOL_PREFERRED           = 0x1\n\tMPOL_PREFERRED_MANY      = 0x5\n\tMPOL_WEIGHTED_INTERLEAVE = 0x6\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_linux_386.go",
    "content": "// cgo -godefs -objdir=/tmp/386/cgo -- -Wall -Werror -static -I/tmp/386/include -m32 linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build 386 && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x4\n\tSizeofLong = 0x4\n)\n\ntype (\n\t_C_long int32\n)\n\ntype Timespec struct {\n\tSec  int32\n\tNsec int32\n}\n\ntype Timeval struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int32\n\tFreq      int32\n\tMaxerror  int32\n\tEsterror  int32\n\tStatus    int32\n\tConstant  int32\n\tPrecision int32\n\tTolerance int32\n\tTime      Timeval\n\tTick      int32\n\tPpsfreq   int32\n\tJitter    int32\n\tShift     int32\n\tStabil    int32\n\tJitcnt    int32\n\tCalcnt    int32\n\tErrcnt    int32\n\tStbcnt    int32\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int32\n\ntype Tms struct {\n\tUtime  int32\n\tStime  int32\n\tCutime int32\n\tCstime int32\n}\n\ntype Utimbuf struct {\n\tActime  int32\n\tModtime int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Stat_t struct {\n\tDev     uint64\n\t_       uint16\n\t_       uint32\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint64\n\t_       uint16\n\tSize    int64\n\tBlksize int32\n\tBlocks  int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tIno     uint64\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]int8\n\t_      [1]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tPid    int32\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint32\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]int8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [16]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x58\n\tSizeofIovec           = 0x8\n\tSizeofMsghdr          = 0x1c\n\tSizeofCmsghdr         = 0xc\n)\n\nconst (\n\tSizeofSockFprog = 0x8\n)\n\ntype PtraceRegs struct {\n\tEbx      int32\n\tEcx      int32\n\tEdx      int32\n\tEsi      int32\n\tEdi      int32\n\tEbp      int32\n\tEax      int32\n\tXds      int32\n\tXes      int32\n\tXfs      int32\n\tXgs      int32\n\tOrig_eax int32\n\tEip      int32\n\tXcs      int32\n\tEflags   int32\n\tEsp      int32\n\tXss      int32\n}\n\ntype FdSet struct {\n\tBits [32]int32\n}\n\ntype Sysinfo_t struct {\n\tUptime    int32\n\tLoads     [3]uint32\n\tTotalram  uint32\n\tFreeram   uint32\n\tSharedram uint32\n\tBufferram uint32\n\tTotalswap uint32\n\tFreeswap  uint32\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint32\n\tFreehigh  uint32\n\tUnit      uint32\n\t_         [8]int8\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint32\n\tFname  [6]int8\n\tFpack  [6]int8\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [32]uint32\n}\n\nconst _C__NSIG = 0x41\n\nconst (\n\tSIG_BLOCK   = 0x0\n\tSIG_UNBLOCK = 0x1\n\tSIG_SETMASK = 0x2\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tErrno int32\n\tCode  int32\n\t_     [116]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [19]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\t_                         [6]byte\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]int8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\t_                         [4]byte\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\t_                         [4]byte\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n\tCpu_delay_max             uint64\n\tCpu_delay_min             uint64\n\tBlkio_delay_max           uint64\n\tBlkio_delay_min           uint64\n\tSwapin_delay_max          uint64\n\tSwapin_delay_min          uint64\n\tFreepages_delay_max       uint64\n\tFreepages_delay_min       uint64\n\tThrashing_delay_max       uint64\n\tThrashing_delay_min       uint64\n\tCompact_delay_max         uint64\n\tCompact_delay_min         uint64\n\tWpcopy_delay_max          uint64\n\tWpcopy_delay_min          uint64\n\tIrq_delay_max             uint64\n\tIrq_delay_min             uint64\n}\n\ntype cpuMask uint32\n\nconst (\n\t_NCPUBITS = 0x20\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x1\n\tCBitFieldMaskBit1  = 0x2\n\tCBitFieldMaskBit2  = 0x4\n\tCBitFieldMaskBit3  = 0x8\n\tCBitFieldMaskBit4  = 0x10\n\tCBitFieldMaskBit5  = 0x20\n\tCBitFieldMaskBit6  = 0x40\n\tCBitFieldMaskBit7  = 0x80\n\tCBitFieldMaskBit8  = 0x100\n\tCBitFieldMaskBit9  = 0x200\n\tCBitFieldMaskBit10 = 0x400\n\tCBitFieldMaskBit11 = 0x800\n\tCBitFieldMaskBit12 = 0x1000\n\tCBitFieldMaskBit13 = 0x2000\n\tCBitFieldMaskBit14 = 0x4000\n\tCBitFieldMaskBit15 = 0x8000\n\tCBitFieldMaskBit16 = 0x10000\n\tCBitFieldMaskBit17 = 0x20000\n\tCBitFieldMaskBit18 = 0x40000\n\tCBitFieldMaskBit19 = 0x80000\n\tCBitFieldMaskBit20 = 0x100000\n\tCBitFieldMaskBit21 = 0x200000\n\tCBitFieldMaskBit22 = 0x400000\n\tCBitFieldMaskBit23 = 0x800000\n\tCBitFieldMaskBit24 = 0x1000000\n\tCBitFieldMaskBit25 = 0x2000000\n\tCBitFieldMaskBit26 = 0x4000000\n\tCBitFieldMaskBit27 = 0x8000000\n\tCBitFieldMaskBit28 = 0x10000000\n\tCBitFieldMaskBit29 = 0x20000000\n\tCBitFieldMaskBit30 = 0x40000000\n\tCBitFieldMaskBit31 = 0x80000000\n\tCBitFieldMaskBit32 = 0x100000000\n\tCBitFieldMaskBit33 = 0x200000000\n\tCBitFieldMaskBit34 = 0x400000000\n\tCBitFieldMaskBit35 = 0x800000000\n\tCBitFieldMaskBit36 = 0x1000000000\n\tCBitFieldMaskBit37 = 0x2000000000\n\tCBitFieldMaskBit38 = 0x4000000000\n\tCBitFieldMaskBit39 = 0x8000000000\n\tCBitFieldMaskBit40 = 0x10000000000\n\tCBitFieldMaskBit41 = 0x20000000000\n\tCBitFieldMaskBit42 = 0x40000000000\n\tCBitFieldMaskBit43 = 0x80000000000\n\tCBitFieldMaskBit44 = 0x100000000000\n\tCBitFieldMaskBit45 = 0x200000000000\n\tCBitFieldMaskBit46 = 0x400000000000\n\tCBitFieldMaskBit47 = 0x800000000000\n\tCBitFieldMaskBit48 = 0x1000000000000\n\tCBitFieldMaskBit49 = 0x2000000000000\n\tCBitFieldMaskBit50 = 0x4000000000000\n\tCBitFieldMaskBit51 = 0x8000000000000\n\tCBitFieldMaskBit52 = 0x10000000000000\n\tCBitFieldMaskBit53 = 0x20000000000000\n\tCBitFieldMaskBit54 = 0x40000000000000\n\tCBitFieldMaskBit55 = 0x80000000000000\n\tCBitFieldMaskBit56 = 0x100000000000000\n\tCBitFieldMaskBit57 = 0x200000000000000\n\tCBitFieldMaskBit58 = 0x400000000000000\n\tCBitFieldMaskBit59 = 0x800000000000000\n\tCBitFieldMaskBit60 = 0x1000000000000000\n\tCBitFieldMaskBit61 = 0x2000000000000000\n\tCBitFieldMaskBit62 = 0x4000000000000000\n\tCBitFieldMaskBit63 = 0x8000000000000000\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\tData   [122]byte\n\t_      uint32\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint32\n}\n\ntype Statfs_t struct {\n\tType    int32\n\tBsize   int32\n\tBlocks  uint64\n\tBfree   uint64\n\tBavail  uint64\n\tFiles   uint64\n\tFfree   uint64\n\tFsid    Fsid\n\tNamelen int32\n\tFrsize  int32\n\tFlags   int32\n\tSpare   [4]int32\n}\n\ntype TpacketHdr struct {\n\tStatus  uint32\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n}\n\nconst (\n\tSizeofTpacketHdr = 0x18\n)\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int32\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n}\n\nconst (\n\tBLKPG = 0x1269\n)\n\ntype CryptoUserAlg struct {\n\tName        [64]int8\n\tDriver_name [64]int8\n\tModule_name [64]int8\n\tType        uint32\n\tMask        uint32\n\tRefcnt      uint32\n\tFlags       uint32\n}\n\ntype CryptoStatAEAD struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatAKCipher struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tVerify_cnt   uint64\n\tSign_cnt     uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCipher struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCompress struct {\n\tType            [64]int8\n\tCompress_cnt    uint64\n\tCompress_tlen   uint64\n\tDecompress_cnt  uint64\n\tDecompress_tlen uint64\n\tErr_cnt         uint64\n}\n\ntype CryptoStatHash struct {\n\tType      [64]int8\n\tHash_cnt  uint64\n\tHash_tlen uint64\n\tErr_cnt   uint64\n}\n\ntype CryptoStatKPP struct {\n\tType                      [64]int8\n\tSetsecret_cnt             uint64\n\tGenerate_public_key_cnt   uint64\n\tCompute_shared_secret_cnt uint64\n\tErr_cnt                   uint64\n}\n\ntype CryptoStatRNG struct {\n\tType          [64]int8\n\tGenerate_cnt  uint64\n\tGenerate_tlen uint64\n\tSeed_cnt      uint64\n\tErr_cnt       uint64\n}\n\ntype CryptoStatLarval struct {\n\tType [64]int8\n}\n\ntype CryptoReportLarval struct {\n\tType [64]int8\n}\n\ntype CryptoReportHash struct {\n\tType       [64]int8\n\tBlocksize  uint32\n\tDigestsize uint32\n}\n\ntype CryptoReportCipher struct {\n\tType        [64]int8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n}\n\ntype CryptoReportBlkCipher struct {\n\tType        [64]int8\n\tGeniv       [64]int8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportAEAD struct {\n\tType        [64]int8\n\tGeniv       [64]int8\n\tBlocksize   uint32\n\tMaxauthsize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportComp struct {\n\tType [64]int8\n}\n\ntype CryptoReportRNG struct {\n\tType     [64]int8\n\tSeedsize uint32\n}\n\ntype CryptoReportAKCipher struct {\n\tType [64]int8\n}\n\ntype CryptoReportKPP struct {\n\tType [64]int8\n}\n\ntype CryptoReportAcomp struct {\n\tType [64]int8\n}\n\ntype LoopInfo struct {\n\tNumber           int32\n\tDevice           uint16\n\tInode            uint32\n\tRdevice          uint16\n\tOffset           int32\n\tEncrypt_type     int32\n\tEncrypt_key_size int32\n\tFlags            int32\n\tName             [64]int8\n\tEncrypt_key      [32]uint8\n\tInit             [2]uint32\n\tReserved         [4]int8\n}\n\ntype TIPCSubscr struct {\n\tSeq     TIPCServiceRange\n\tTimeout uint32\n\tFilter  uint32\n\tHandle  [8]int8\n}\n\ntype TIPCSIOCLNReq struct {\n\tPeer     uint32\n\tId       uint32\n\tLinkname [68]int8\n}\n\ntype TIPCSIOCNodeIDReq struct {\n\tPeer uint32\n\tId   [16]int8\n}\n\ntype PPSKInfo struct {\n\tAssert_sequence uint32\n\tClear_sequence  uint32\n\tAssert_tu       PPSKTime\n\tClear_tu        PPSKTime\n\tCurrent_mode    int32\n}\n\nconst (\n\tPPS_GETPARAMS = 0x800470a1\n\tPPS_SETPARAMS = 0x400470a2\n\tPPS_GETCAP    = 0x800470a3\n\tPPS_FETCH     = 0xc00470a4\n)\n\nconst (\n\tPIDFD_NONBLOCK = 0x800\n)\n\ntype SysvIpcPerm struct {\n\tKey  int32\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint16\n\t_    [2]uint8\n\tSeq  uint16\n\t_    uint16\n\t_    uint32\n\t_    uint32\n}\ntype SysvShmDesc struct {\n\tPerm       SysvIpcPerm\n\tSegsz      uint32\n\tAtime      uint32\n\tAtime_high uint32\n\tDtime      uint32\n\tDtime_high uint32\n\tCtime      uint32\n\tCtime_high uint32\n\tCpid       int32\n\tLpid       int32\n\tNattch     uint32\n\t_          uint32\n\t_          uint32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go",
    "content": "// cgo -godefs -objdir=/tmp/amd64/cgo -- -Wall -Werror -static -I/tmp/amd64/include -m64 linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x8\n\tSizeofLong = 0x8\n)\n\ntype (\n\t_C_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int64\n\tFreq      int64\n\tMaxerror  int64\n\tEsterror  int64\n\tStatus    int32\n\tConstant  int64\n\tPrecision int64\n\tTolerance int64\n\tTime      Timeval\n\tTick      int64\n\tPpsfreq   int64\n\tJitter    int64\n\tShift     int32\n\tStabil    int64\n\tJitcnt    int64\n\tCalcnt    int64\n\tErrcnt    int64\n\tStbcnt    int64\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int64\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tNlink   uint64\n\tMode    uint32\n\tUid     uint32\n\tGid     uint32\n\t_       int32\n\tRdev    uint64\n\tSize    int64\n\tBlksize int64\n\tBlocks  int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\t_       [3]int64\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]int8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint64\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]int8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint64\n\tControl    *byte\n\tControllen uint64\n\tFlags      int32\n\t_          [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint64\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [24]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x60\n\tSizeofIovec           = 0x10\n\tSizeofMsghdr          = 0x38\n\tSizeofCmsghdr         = 0x10\n)\n\nconst (\n\tSizeofSockFprog = 0x10\n)\n\ntype PtraceRegs struct {\n\tR15      uint64\n\tR14      uint64\n\tR13      uint64\n\tR12      uint64\n\tRbp      uint64\n\tRbx      uint64\n\tR11      uint64\n\tR10      uint64\n\tR9       uint64\n\tR8       uint64\n\tRax      uint64\n\tRcx      uint64\n\tRdx      uint64\n\tRsi      uint64\n\tRdi      uint64\n\tOrig_rax uint64\n\tRip      uint64\n\tCs       uint64\n\tEflags   uint64\n\tRsp      uint64\n\tSs       uint64\n\tFs_base  uint64\n\tGs_base  uint64\n\tDs       uint64\n\tEs       uint64\n\tFs       uint64\n\tGs       uint64\n}\n\ntype FdSet struct {\n\tBits [16]int64\n}\n\ntype Sysinfo_t struct {\n\tUptime    int64\n\tLoads     [3]uint64\n\tTotalram  uint64\n\tFreeram   uint64\n\tSharedram uint64\n\tBufferram uint64\n\tTotalswap uint64\n\tFreeswap  uint64\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint64\n\tFreehigh  uint64\n\tUnit      uint32\n\t_         [0]int8\n\t_         [4]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint64\n\tFname  [6]int8\n\tFpack  [6]int8\n\t_      [4]byte\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst _C__NSIG = 0x41\n\nconst (\n\tSIG_BLOCK   = 0x0\n\tSIG_UNBLOCK = 0x1\n\tSIG_SETMASK = 0x2\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tErrno int32\n\tCode  int32\n\t_     int32\n\t_     [112]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [19]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]int8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n\tCpu_delay_max             uint64\n\tCpu_delay_min             uint64\n\tBlkio_delay_max           uint64\n\tBlkio_delay_min           uint64\n\tSwapin_delay_max          uint64\n\tSwapin_delay_min          uint64\n\tFreepages_delay_max       uint64\n\tFreepages_delay_min       uint64\n\tThrashing_delay_max       uint64\n\tThrashing_delay_min       uint64\n\tCompact_delay_max         uint64\n\tCompact_delay_min         uint64\n\tWpcopy_delay_max          uint64\n\tWpcopy_delay_min          uint64\n\tIrq_delay_max             uint64\n\tIrq_delay_min             uint64\n}\n\ntype cpuMask uint64\n\nconst (\n\t_NCPUBITS = 0x40\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x1\n\tCBitFieldMaskBit1  = 0x2\n\tCBitFieldMaskBit2  = 0x4\n\tCBitFieldMaskBit3  = 0x8\n\tCBitFieldMaskBit4  = 0x10\n\tCBitFieldMaskBit5  = 0x20\n\tCBitFieldMaskBit6  = 0x40\n\tCBitFieldMaskBit7  = 0x80\n\tCBitFieldMaskBit8  = 0x100\n\tCBitFieldMaskBit9  = 0x200\n\tCBitFieldMaskBit10 = 0x400\n\tCBitFieldMaskBit11 = 0x800\n\tCBitFieldMaskBit12 = 0x1000\n\tCBitFieldMaskBit13 = 0x2000\n\tCBitFieldMaskBit14 = 0x4000\n\tCBitFieldMaskBit15 = 0x8000\n\tCBitFieldMaskBit16 = 0x10000\n\tCBitFieldMaskBit17 = 0x20000\n\tCBitFieldMaskBit18 = 0x40000\n\tCBitFieldMaskBit19 = 0x80000\n\tCBitFieldMaskBit20 = 0x100000\n\tCBitFieldMaskBit21 = 0x200000\n\tCBitFieldMaskBit22 = 0x400000\n\tCBitFieldMaskBit23 = 0x800000\n\tCBitFieldMaskBit24 = 0x1000000\n\tCBitFieldMaskBit25 = 0x2000000\n\tCBitFieldMaskBit26 = 0x4000000\n\tCBitFieldMaskBit27 = 0x8000000\n\tCBitFieldMaskBit28 = 0x10000000\n\tCBitFieldMaskBit29 = 0x20000000\n\tCBitFieldMaskBit30 = 0x40000000\n\tCBitFieldMaskBit31 = 0x80000000\n\tCBitFieldMaskBit32 = 0x100000000\n\tCBitFieldMaskBit33 = 0x200000000\n\tCBitFieldMaskBit34 = 0x400000000\n\tCBitFieldMaskBit35 = 0x800000000\n\tCBitFieldMaskBit36 = 0x1000000000\n\tCBitFieldMaskBit37 = 0x2000000000\n\tCBitFieldMaskBit38 = 0x4000000000\n\tCBitFieldMaskBit39 = 0x8000000000\n\tCBitFieldMaskBit40 = 0x10000000000\n\tCBitFieldMaskBit41 = 0x20000000000\n\tCBitFieldMaskBit42 = 0x40000000000\n\tCBitFieldMaskBit43 = 0x80000000000\n\tCBitFieldMaskBit44 = 0x100000000000\n\tCBitFieldMaskBit45 = 0x200000000000\n\tCBitFieldMaskBit46 = 0x400000000000\n\tCBitFieldMaskBit47 = 0x800000000000\n\tCBitFieldMaskBit48 = 0x1000000000000\n\tCBitFieldMaskBit49 = 0x2000000000000\n\tCBitFieldMaskBit50 = 0x4000000000000\n\tCBitFieldMaskBit51 = 0x8000000000000\n\tCBitFieldMaskBit52 = 0x10000000000000\n\tCBitFieldMaskBit53 = 0x20000000000000\n\tCBitFieldMaskBit54 = 0x40000000000000\n\tCBitFieldMaskBit55 = 0x80000000000000\n\tCBitFieldMaskBit56 = 0x100000000000000\n\tCBitFieldMaskBit57 = 0x200000000000000\n\tCBitFieldMaskBit58 = 0x400000000000000\n\tCBitFieldMaskBit59 = 0x800000000000000\n\tCBitFieldMaskBit60 = 0x1000000000000000\n\tCBitFieldMaskBit61 = 0x2000000000000000\n\tCBitFieldMaskBit62 = 0x4000000000000000\n\tCBitFieldMaskBit63 = 0x8000000000000000\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\tData   [118]byte\n\t_      uint64\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint64\n}\n\ntype Statfs_t struct {\n\tType    int64\n\tBsize   int64\n\tBlocks  uint64\n\tBfree   uint64\n\tBavail  uint64\n\tFiles   uint64\n\tFfree   uint64\n\tFsid    Fsid\n\tNamelen int64\n\tFrsize  int64\n\tFlags   int64\n\tSpare   [4]int64\n}\n\ntype TpacketHdr struct {\n\tStatus  uint64\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n\t_       [4]byte\n}\n\nconst (\n\tSizeofTpacketHdr = 0x20\n)\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int64\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG = 0x1269\n)\n\ntype CryptoUserAlg struct {\n\tName        [64]int8\n\tDriver_name [64]int8\n\tModule_name [64]int8\n\tType        uint32\n\tMask        uint32\n\tRefcnt      uint32\n\tFlags       uint32\n}\n\ntype CryptoStatAEAD struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatAKCipher struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tVerify_cnt   uint64\n\tSign_cnt     uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCipher struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCompress struct {\n\tType            [64]int8\n\tCompress_cnt    uint64\n\tCompress_tlen   uint64\n\tDecompress_cnt  uint64\n\tDecompress_tlen uint64\n\tErr_cnt         uint64\n}\n\ntype CryptoStatHash struct {\n\tType      [64]int8\n\tHash_cnt  uint64\n\tHash_tlen uint64\n\tErr_cnt   uint64\n}\n\ntype CryptoStatKPP struct {\n\tType                      [64]int8\n\tSetsecret_cnt             uint64\n\tGenerate_public_key_cnt   uint64\n\tCompute_shared_secret_cnt uint64\n\tErr_cnt                   uint64\n}\n\ntype CryptoStatRNG struct {\n\tType          [64]int8\n\tGenerate_cnt  uint64\n\tGenerate_tlen uint64\n\tSeed_cnt      uint64\n\tErr_cnt       uint64\n}\n\ntype CryptoStatLarval struct {\n\tType [64]int8\n}\n\ntype CryptoReportLarval struct {\n\tType [64]int8\n}\n\ntype CryptoReportHash struct {\n\tType       [64]int8\n\tBlocksize  uint32\n\tDigestsize uint32\n}\n\ntype CryptoReportCipher struct {\n\tType        [64]int8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n}\n\ntype CryptoReportBlkCipher struct {\n\tType        [64]int8\n\tGeniv       [64]int8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportAEAD struct {\n\tType        [64]int8\n\tGeniv       [64]int8\n\tBlocksize   uint32\n\tMaxauthsize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportComp struct {\n\tType [64]int8\n}\n\ntype CryptoReportRNG struct {\n\tType     [64]int8\n\tSeedsize uint32\n}\n\ntype CryptoReportAKCipher struct {\n\tType [64]int8\n}\n\ntype CryptoReportKPP struct {\n\tType [64]int8\n}\n\ntype CryptoReportAcomp struct {\n\tType [64]int8\n}\n\ntype LoopInfo struct {\n\tNumber           int32\n\tDevice           uint64\n\tInode            uint64\n\tRdevice          uint64\n\tOffset           int32\n\tEncrypt_type     int32\n\tEncrypt_key_size int32\n\tFlags            int32\n\tName             [64]int8\n\tEncrypt_key      [32]uint8\n\tInit             [2]uint64\n\tReserved         [4]int8\n\t_                [4]byte\n}\n\ntype TIPCSubscr struct {\n\tSeq     TIPCServiceRange\n\tTimeout uint32\n\tFilter  uint32\n\tHandle  [8]int8\n}\n\ntype TIPCSIOCLNReq struct {\n\tPeer     uint32\n\tId       uint32\n\tLinkname [68]int8\n}\n\ntype TIPCSIOCNodeIDReq struct {\n\tPeer uint32\n\tId   [16]int8\n}\n\ntype PPSKInfo struct {\n\tAssert_sequence uint32\n\tClear_sequence  uint32\n\tAssert_tu       PPSKTime\n\tClear_tu        PPSKTime\n\tCurrent_mode    int32\n\t_               [4]byte\n}\n\nconst (\n\tPPS_GETPARAMS = 0x800870a1\n\tPPS_SETPARAMS = 0x400870a2\n\tPPS_GETCAP    = 0x800870a3\n\tPPS_FETCH     = 0xc00870a4\n)\n\nconst (\n\tPIDFD_NONBLOCK = 0x800\n)\n\ntype SysvIpcPerm struct {\n\tKey  int32\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint32\n\t_    [0]uint8\n\tSeq  uint16\n\t_    uint16\n\t_    uint64\n\t_    uint64\n}\ntype SysvShmDesc struct {\n\tPerm   SysvIpcPerm\n\tSegsz  uint64\n\tAtime  int64\n\tDtime  int64\n\tCtime  int64\n\tCpid   int32\n\tLpid   int32\n\tNattch uint64\n\t_      uint64\n\t_      uint64\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_linux_arm.go",
    "content": "// cgo -godefs -objdir=/tmp/arm/cgo -- -Wall -Werror -static -I/tmp/arm/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x4\n\tSizeofLong = 0x4\n)\n\ntype (\n\t_C_long int32\n)\n\ntype Timespec struct {\n\tSec  int32\n\tNsec int32\n}\n\ntype Timeval struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int32\n\tFreq      int32\n\tMaxerror  int32\n\tEsterror  int32\n\tStatus    int32\n\tConstant  int32\n\tPrecision int32\n\tTolerance int32\n\tTime      Timeval\n\tTick      int32\n\tPpsfreq   int32\n\tJitter    int32\n\tShift     int32\n\tStabil    int32\n\tJitcnt    int32\n\tCalcnt    int32\n\tErrcnt    int32\n\tStbcnt    int32\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int32\n\ntype Tms struct {\n\tUtime  int32\n\tStime  int32\n\tCutime int32\n\tCstime int32\n}\n\ntype Utimbuf struct {\n\tActime  int32\n\tModtime int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Stat_t struct {\n\tDev     uint64\n\t_       uint16\n\t_       uint32\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint64\n\t_       uint16\n\t_       [6]byte\n\tSize    int64\n\tBlksize int32\n\t_       [4]byte\n\tBlocks  int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tIno     uint64\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]uint8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\t_      [4]byte\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint32\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]uint8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]uint8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [16]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x58\n\tSizeofIovec           = 0x8\n\tSizeofMsghdr          = 0x1c\n\tSizeofCmsghdr         = 0xc\n)\n\nconst (\n\tSizeofSockFprog = 0x8\n)\n\ntype PtraceRegs struct {\n\tUregs [18]uint32\n}\n\ntype FdSet struct {\n\tBits [32]int32\n}\n\ntype Sysinfo_t struct {\n\tUptime    int32\n\tLoads     [3]uint32\n\tTotalram  uint32\n\tFreeram   uint32\n\tSharedram uint32\n\tBufferram uint32\n\tTotalswap uint32\n\tFreeswap  uint32\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint32\n\tFreehigh  uint32\n\tUnit      uint32\n\t_         [8]uint8\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint32\n\tFname  [6]uint8\n\tFpack  [6]uint8\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\tPadFd  int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [32]uint32\n}\n\nconst _C__NSIG = 0x41\n\nconst (\n\tSIG_BLOCK   = 0x0\n\tSIG_UNBLOCK = 0x1\n\tSIG_SETMASK = 0x2\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tErrno int32\n\tCode  int32\n\t_     [116]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [19]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\t_                         [6]byte\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]uint8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\t_                         [4]byte\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\t_                         [4]byte\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n\tCpu_delay_max             uint64\n\tCpu_delay_min             uint64\n\tBlkio_delay_max           uint64\n\tBlkio_delay_min           uint64\n\tSwapin_delay_max          uint64\n\tSwapin_delay_min          uint64\n\tFreepages_delay_max       uint64\n\tFreepages_delay_min       uint64\n\tThrashing_delay_max       uint64\n\tThrashing_delay_min       uint64\n\tCompact_delay_max         uint64\n\tCompact_delay_min         uint64\n\tWpcopy_delay_max          uint64\n\tWpcopy_delay_min          uint64\n\tIrq_delay_max             uint64\n\tIrq_delay_min             uint64\n}\n\ntype cpuMask uint32\n\nconst (\n\t_NCPUBITS = 0x20\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x1\n\tCBitFieldMaskBit1  = 0x2\n\tCBitFieldMaskBit2  = 0x4\n\tCBitFieldMaskBit3  = 0x8\n\tCBitFieldMaskBit4  = 0x10\n\tCBitFieldMaskBit5  = 0x20\n\tCBitFieldMaskBit6  = 0x40\n\tCBitFieldMaskBit7  = 0x80\n\tCBitFieldMaskBit8  = 0x100\n\tCBitFieldMaskBit9  = 0x200\n\tCBitFieldMaskBit10 = 0x400\n\tCBitFieldMaskBit11 = 0x800\n\tCBitFieldMaskBit12 = 0x1000\n\tCBitFieldMaskBit13 = 0x2000\n\tCBitFieldMaskBit14 = 0x4000\n\tCBitFieldMaskBit15 = 0x8000\n\tCBitFieldMaskBit16 = 0x10000\n\tCBitFieldMaskBit17 = 0x20000\n\tCBitFieldMaskBit18 = 0x40000\n\tCBitFieldMaskBit19 = 0x80000\n\tCBitFieldMaskBit20 = 0x100000\n\tCBitFieldMaskBit21 = 0x200000\n\tCBitFieldMaskBit22 = 0x400000\n\tCBitFieldMaskBit23 = 0x800000\n\tCBitFieldMaskBit24 = 0x1000000\n\tCBitFieldMaskBit25 = 0x2000000\n\tCBitFieldMaskBit26 = 0x4000000\n\tCBitFieldMaskBit27 = 0x8000000\n\tCBitFieldMaskBit28 = 0x10000000\n\tCBitFieldMaskBit29 = 0x20000000\n\tCBitFieldMaskBit30 = 0x40000000\n\tCBitFieldMaskBit31 = 0x80000000\n\tCBitFieldMaskBit32 = 0x100000000\n\tCBitFieldMaskBit33 = 0x200000000\n\tCBitFieldMaskBit34 = 0x400000000\n\tCBitFieldMaskBit35 = 0x800000000\n\tCBitFieldMaskBit36 = 0x1000000000\n\tCBitFieldMaskBit37 = 0x2000000000\n\tCBitFieldMaskBit38 = 0x4000000000\n\tCBitFieldMaskBit39 = 0x8000000000\n\tCBitFieldMaskBit40 = 0x10000000000\n\tCBitFieldMaskBit41 = 0x20000000000\n\tCBitFieldMaskBit42 = 0x40000000000\n\tCBitFieldMaskBit43 = 0x80000000000\n\tCBitFieldMaskBit44 = 0x100000000000\n\tCBitFieldMaskBit45 = 0x200000000000\n\tCBitFieldMaskBit46 = 0x400000000000\n\tCBitFieldMaskBit47 = 0x800000000000\n\tCBitFieldMaskBit48 = 0x1000000000000\n\tCBitFieldMaskBit49 = 0x2000000000000\n\tCBitFieldMaskBit50 = 0x4000000000000\n\tCBitFieldMaskBit51 = 0x8000000000000\n\tCBitFieldMaskBit52 = 0x10000000000000\n\tCBitFieldMaskBit53 = 0x20000000000000\n\tCBitFieldMaskBit54 = 0x40000000000000\n\tCBitFieldMaskBit55 = 0x80000000000000\n\tCBitFieldMaskBit56 = 0x100000000000000\n\tCBitFieldMaskBit57 = 0x200000000000000\n\tCBitFieldMaskBit58 = 0x400000000000000\n\tCBitFieldMaskBit59 = 0x800000000000000\n\tCBitFieldMaskBit60 = 0x1000000000000000\n\tCBitFieldMaskBit61 = 0x2000000000000000\n\tCBitFieldMaskBit62 = 0x4000000000000000\n\tCBitFieldMaskBit63 = 0x8000000000000000\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\tData   [122]byte\n\t_      uint32\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint32\n}\n\ntype Statfs_t struct {\n\tType    int32\n\tBsize   int32\n\tBlocks  uint64\n\tBfree   uint64\n\tBavail  uint64\n\tFiles   uint64\n\tFfree   uint64\n\tFsid    Fsid\n\tNamelen int32\n\tFrsize  int32\n\tFlags   int32\n\tSpare   [4]int32\n\t_       [4]byte\n}\n\ntype TpacketHdr struct {\n\tStatus  uint32\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n}\n\nconst (\n\tSizeofTpacketHdr = 0x18\n)\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int32\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG = 0x1269\n)\n\ntype CryptoUserAlg struct {\n\tName        [64]uint8\n\tDriver_name [64]uint8\n\tModule_name [64]uint8\n\tType        uint32\n\tMask        uint32\n\tRefcnt      uint32\n\tFlags       uint32\n}\n\ntype CryptoStatAEAD struct {\n\tType         [64]uint8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatAKCipher struct {\n\tType         [64]uint8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tVerify_cnt   uint64\n\tSign_cnt     uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCipher struct {\n\tType         [64]uint8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCompress struct {\n\tType            [64]uint8\n\tCompress_cnt    uint64\n\tCompress_tlen   uint64\n\tDecompress_cnt  uint64\n\tDecompress_tlen uint64\n\tErr_cnt         uint64\n}\n\ntype CryptoStatHash struct {\n\tType      [64]uint8\n\tHash_cnt  uint64\n\tHash_tlen uint64\n\tErr_cnt   uint64\n}\n\ntype CryptoStatKPP struct {\n\tType                      [64]uint8\n\tSetsecret_cnt             uint64\n\tGenerate_public_key_cnt   uint64\n\tCompute_shared_secret_cnt uint64\n\tErr_cnt                   uint64\n}\n\ntype CryptoStatRNG struct {\n\tType          [64]uint8\n\tGenerate_cnt  uint64\n\tGenerate_tlen uint64\n\tSeed_cnt      uint64\n\tErr_cnt       uint64\n}\n\ntype CryptoStatLarval struct {\n\tType [64]uint8\n}\n\ntype CryptoReportLarval struct {\n\tType [64]uint8\n}\n\ntype CryptoReportHash struct {\n\tType       [64]uint8\n\tBlocksize  uint32\n\tDigestsize uint32\n}\n\ntype CryptoReportCipher struct {\n\tType        [64]uint8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n}\n\ntype CryptoReportBlkCipher struct {\n\tType        [64]uint8\n\tGeniv       [64]uint8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportAEAD struct {\n\tType        [64]uint8\n\tGeniv       [64]uint8\n\tBlocksize   uint32\n\tMaxauthsize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportComp struct {\n\tType [64]uint8\n}\n\ntype CryptoReportRNG struct {\n\tType     [64]uint8\n\tSeedsize uint32\n}\n\ntype CryptoReportAKCipher struct {\n\tType [64]uint8\n}\n\ntype CryptoReportKPP struct {\n\tType [64]uint8\n}\n\ntype CryptoReportAcomp struct {\n\tType [64]uint8\n}\n\ntype LoopInfo struct {\n\tNumber           int32\n\tDevice           uint16\n\tInode            uint32\n\tRdevice          uint16\n\tOffset           int32\n\tEncrypt_type     int32\n\tEncrypt_key_size int32\n\tFlags            int32\n\tName             [64]uint8\n\tEncrypt_key      [32]uint8\n\tInit             [2]uint32\n\tReserved         [4]uint8\n}\n\ntype TIPCSubscr struct {\n\tSeq     TIPCServiceRange\n\tTimeout uint32\n\tFilter  uint32\n\tHandle  [8]uint8\n}\n\ntype TIPCSIOCLNReq struct {\n\tPeer     uint32\n\tId       uint32\n\tLinkname [68]uint8\n}\n\ntype TIPCSIOCNodeIDReq struct {\n\tPeer uint32\n\tId   [16]uint8\n}\n\ntype PPSKInfo struct {\n\tAssert_sequence uint32\n\tClear_sequence  uint32\n\tAssert_tu       PPSKTime\n\tClear_tu        PPSKTime\n\tCurrent_mode    int32\n\t_               [4]byte\n}\n\nconst (\n\tPPS_GETPARAMS = 0x800470a1\n\tPPS_SETPARAMS = 0x400470a2\n\tPPS_GETCAP    = 0x800470a3\n\tPPS_FETCH     = 0xc00470a4\n)\n\nconst (\n\tPIDFD_NONBLOCK = 0x800\n)\n\ntype SysvIpcPerm struct {\n\tKey  int32\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint16\n\t_    [2]uint8\n\tSeq  uint16\n\t_    uint16\n\t_    uint32\n\t_    uint32\n}\ntype SysvShmDesc struct {\n\tPerm       SysvIpcPerm\n\tSegsz      uint32\n\tAtime      uint32\n\tAtime_high uint32\n\tDtime      uint32\n\tDtime_high uint32\n\tCtime      uint32\n\tCtime_high uint32\n\tCpid       int32\n\tLpid       int32\n\tNattch     uint32\n\t_          uint32\n\t_          uint32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go",
    "content": "// cgo -godefs -objdir=/tmp/arm64/cgo -- -Wall -Werror -static -I/tmp/arm64/include -fsigned-char linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x8\n\tSizeofLong = 0x8\n)\n\ntype (\n\t_C_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int64\n\tFreq      int64\n\tMaxerror  int64\n\tEsterror  int64\n\tStatus    int32\n\tConstant  int64\n\tPrecision int64\n\tTolerance int64\n\tTime      Timeval\n\tTick      int64\n\tPpsfreq   int64\n\tJitter    int64\n\tShift     int32\n\tStabil    int64\n\tJitcnt    int64\n\tCalcnt    int64\n\tErrcnt    int64\n\tStbcnt    int64\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int64\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint64\n\t_       uint64\n\tSize    int64\n\tBlksize int32\n\t_       int32\n\tBlocks  int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\t_       [2]int32\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]int8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint64\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]int8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint64\n\tControl    *byte\n\tControllen uint64\n\tFlags      int32\n\t_          [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint64\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [24]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x60\n\tSizeofIovec           = 0x10\n\tSizeofMsghdr          = 0x38\n\tSizeofCmsghdr         = 0x10\n)\n\nconst (\n\tSizeofSockFprog = 0x10\n)\n\ntype PtraceRegs struct {\n\tRegs   [31]uint64\n\tSp     uint64\n\tPc     uint64\n\tPstate uint64\n}\n\ntype FdSet struct {\n\tBits [16]int64\n}\n\ntype Sysinfo_t struct {\n\tUptime    int64\n\tLoads     [3]uint64\n\tTotalram  uint64\n\tFreeram   uint64\n\tSharedram uint64\n\tBufferram uint64\n\tTotalswap uint64\n\tFreeswap  uint64\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint64\n\tFreehigh  uint64\n\tUnit      uint32\n\t_         [0]int8\n\t_         [4]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint64\n\tFname  [6]int8\n\tFpack  [6]int8\n\t_      [4]byte\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\tPadFd  int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst _C__NSIG = 0x41\n\nconst (\n\tSIG_BLOCK   = 0x0\n\tSIG_UNBLOCK = 0x1\n\tSIG_SETMASK = 0x2\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tErrno int32\n\tCode  int32\n\t_     int32\n\t_     [112]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [19]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]int8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n\tCpu_delay_max             uint64\n\tCpu_delay_min             uint64\n\tBlkio_delay_max           uint64\n\tBlkio_delay_min           uint64\n\tSwapin_delay_max          uint64\n\tSwapin_delay_min          uint64\n\tFreepages_delay_max       uint64\n\tFreepages_delay_min       uint64\n\tThrashing_delay_max       uint64\n\tThrashing_delay_min       uint64\n\tCompact_delay_max         uint64\n\tCompact_delay_min         uint64\n\tWpcopy_delay_max          uint64\n\tWpcopy_delay_min          uint64\n\tIrq_delay_max             uint64\n\tIrq_delay_min             uint64\n}\n\ntype cpuMask uint64\n\nconst (\n\t_NCPUBITS = 0x40\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x1\n\tCBitFieldMaskBit1  = 0x2\n\tCBitFieldMaskBit2  = 0x4\n\tCBitFieldMaskBit3  = 0x8\n\tCBitFieldMaskBit4  = 0x10\n\tCBitFieldMaskBit5  = 0x20\n\tCBitFieldMaskBit6  = 0x40\n\tCBitFieldMaskBit7  = 0x80\n\tCBitFieldMaskBit8  = 0x100\n\tCBitFieldMaskBit9  = 0x200\n\tCBitFieldMaskBit10 = 0x400\n\tCBitFieldMaskBit11 = 0x800\n\tCBitFieldMaskBit12 = 0x1000\n\tCBitFieldMaskBit13 = 0x2000\n\tCBitFieldMaskBit14 = 0x4000\n\tCBitFieldMaskBit15 = 0x8000\n\tCBitFieldMaskBit16 = 0x10000\n\tCBitFieldMaskBit17 = 0x20000\n\tCBitFieldMaskBit18 = 0x40000\n\tCBitFieldMaskBit19 = 0x80000\n\tCBitFieldMaskBit20 = 0x100000\n\tCBitFieldMaskBit21 = 0x200000\n\tCBitFieldMaskBit22 = 0x400000\n\tCBitFieldMaskBit23 = 0x800000\n\tCBitFieldMaskBit24 = 0x1000000\n\tCBitFieldMaskBit25 = 0x2000000\n\tCBitFieldMaskBit26 = 0x4000000\n\tCBitFieldMaskBit27 = 0x8000000\n\tCBitFieldMaskBit28 = 0x10000000\n\tCBitFieldMaskBit29 = 0x20000000\n\tCBitFieldMaskBit30 = 0x40000000\n\tCBitFieldMaskBit31 = 0x80000000\n\tCBitFieldMaskBit32 = 0x100000000\n\tCBitFieldMaskBit33 = 0x200000000\n\tCBitFieldMaskBit34 = 0x400000000\n\tCBitFieldMaskBit35 = 0x800000000\n\tCBitFieldMaskBit36 = 0x1000000000\n\tCBitFieldMaskBit37 = 0x2000000000\n\tCBitFieldMaskBit38 = 0x4000000000\n\tCBitFieldMaskBit39 = 0x8000000000\n\tCBitFieldMaskBit40 = 0x10000000000\n\tCBitFieldMaskBit41 = 0x20000000000\n\tCBitFieldMaskBit42 = 0x40000000000\n\tCBitFieldMaskBit43 = 0x80000000000\n\tCBitFieldMaskBit44 = 0x100000000000\n\tCBitFieldMaskBit45 = 0x200000000000\n\tCBitFieldMaskBit46 = 0x400000000000\n\tCBitFieldMaskBit47 = 0x800000000000\n\tCBitFieldMaskBit48 = 0x1000000000000\n\tCBitFieldMaskBit49 = 0x2000000000000\n\tCBitFieldMaskBit50 = 0x4000000000000\n\tCBitFieldMaskBit51 = 0x8000000000000\n\tCBitFieldMaskBit52 = 0x10000000000000\n\tCBitFieldMaskBit53 = 0x20000000000000\n\tCBitFieldMaskBit54 = 0x40000000000000\n\tCBitFieldMaskBit55 = 0x80000000000000\n\tCBitFieldMaskBit56 = 0x100000000000000\n\tCBitFieldMaskBit57 = 0x200000000000000\n\tCBitFieldMaskBit58 = 0x400000000000000\n\tCBitFieldMaskBit59 = 0x800000000000000\n\tCBitFieldMaskBit60 = 0x1000000000000000\n\tCBitFieldMaskBit61 = 0x2000000000000000\n\tCBitFieldMaskBit62 = 0x4000000000000000\n\tCBitFieldMaskBit63 = 0x8000000000000000\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\tData   [118]byte\n\t_      uint64\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint64\n}\n\ntype Statfs_t struct {\n\tType    int64\n\tBsize   int64\n\tBlocks  uint64\n\tBfree   uint64\n\tBavail  uint64\n\tFiles   uint64\n\tFfree   uint64\n\tFsid    Fsid\n\tNamelen int64\n\tFrsize  int64\n\tFlags   int64\n\tSpare   [4]int64\n}\n\ntype TpacketHdr struct {\n\tStatus  uint64\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n\t_       [4]byte\n}\n\nconst (\n\tSizeofTpacketHdr = 0x20\n)\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int64\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG = 0x1269\n)\n\ntype CryptoUserAlg struct {\n\tName        [64]int8\n\tDriver_name [64]int8\n\tModule_name [64]int8\n\tType        uint32\n\tMask        uint32\n\tRefcnt      uint32\n\tFlags       uint32\n}\n\ntype CryptoStatAEAD struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatAKCipher struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tVerify_cnt   uint64\n\tSign_cnt     uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCipher struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCompress struct {\n\tType            [64]int8\n\tCompress_cnt    uint64\n\tCompress_tlen   uint64\n\tDecompress_cnt  uint64\n\tDecompress_tlen uint64\n\tErr_cnt         uint64\n}\n\ntype CryptoStatHash struct {\n\tType      [64]int8\n\tHash_cnt  uint64\n\tHash_tlen uint64\n\tErr_cnt   uint64\n}\n\ntype CryptoStatKPP struct {\n\tType                      [64]int8\n\tSetsecret_cnt             uint64\n\tGenerate_public_key_cnt   uint64\n\tCompute_shared_secret_cnt uint64\n\tErr_cnt                   uint64\n}\n\ntype CryptoStatRNG struct {\n\tType          [64]int8\n\tGenerate_cnt  uint64\n\tGenerate_tlen uint64\n\tSeed_cnt      uint64\n\tErr_cnt       uint64\n}\n\ntype CryptoStatLarval struct {\n\tType [64]int8\n}\n\ntype CryptoReportLarval struct {\n\tType [64]int8\n}\n\ntype CryptoReportHash struct {\n\tType       [64]int8\n\tBlocksize  uint32\n\tDigestsize uint32\n}\n\ntype CryptoReportCipher struct {\n\tType        [64]int8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n}\n\ntype CryptoReportBlkCipher struct {\n\tType        [64]int8\n\tGeniv       [64]int8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportAEAD struct {\n\tType        [64]int8\n\tGeniv       [64]int8\n\tBlocksize   uint32\n\tMaxauthsize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportComp struct {\n\tType [64]int8\n}\n\ntype CryptoReportRNG struct {\n\tType     [64]int8\n\tSeedsize uint32\n}\n\ntype CryptoReportAKCipher struct {\n\tType [64]int8\n}\n\ntype CryptoReportKPP struct {\n\tType [64]int8\n}\n\ntype CryptoReportAcomp struct {\n\tType [64]int8\n}\n\ntype LoopInfo struct {\n\tNumber           int32\n\tDevice           uint32\n\tInode            uint64\n\tRdevice          uint32\n\tOffset           int32\n\tEncrypt_type     int32\n\tEncrypt_key_size int32\n\tFlags            int32\n\tName             [64]int8\n\tEncrypt_key      [32]uint8\n\tInit             [2]uint64\n\tReserved         [4]int8\n\t_                [4]byte\n}\n\ntype TIPCSubscr struct {\n\tSeq     TIPCServiceRange\n\tTimeout uint32\n\tFilter  uint32\n\tHandle  [8]int8\n}\n\ntype TIPCSIOCLNReq struct {\n\tPeer     uint32\n\tId       uint32\n\tLinkname [68]int8\n}\n\ntype TIPCSIOCNodeIDReq struct {\n\tPeer uint32\n\tId   [16]int8\n}\n\ntype PPSKInfo struct {\n\tAssert_sequence uint32\n\tClear_sequence  uint32\n\tAssert_tu       PPSKTime\n\tClear_tu        PPSKTime\n\tCurrent_mode    int32\n\t_               [4]byte\n}\n\nconst (\n\tPPS_GETPARAMS = 0x800870a1\n\tPPS_SETPARAMS = 0x400870a2\n\tPPS_GETCAP    = 0x800870a3\n\tPPS_FETCH     = 0xc00870a4\n)\n\nconst (\n\tPIDFD_NONBLOCK = 0x800\n)\n\ntype SysvIpcPerm struct {\n\tKey  int32\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint32\n\t_    [0]uint8\n\tSeq  uint16\n\t_    uint16\n\t_    uint64\n\t_    uint64\n}\ntype SysvShmDesc struct {\n\tPerm   SysvIpcPerm\n\tSegsz  uint64\n\tAtime  int64\n\tDtime  int64\n\tCtime  int64\n\tCpid   int32\n\tLpid   int32\n\tNattch uint64\n\t_      uint64\n\t_      uint64\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_linux_loong64.go",
    "content": "// cgo -godefs -objdir=/tmp/loong64/cgo -- -Wall -Werror -static -I/tmp/loong64/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build loong64 && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x8\n\tSizeofLong = 0x8\n)\n\ntype (\n\t_C_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int64\n\tFreq      int64\n\tMaxerror  int64\n\tEsterror  int64\n\tStatus    int32\n\tConstant  int64\n\tPrecision int64\n\tTolerance int64\n\tTime      Timeval\n\tTick      int64\n\tPpsfreq   int64\n\tJitter    int64\n\tShift     int32\n\tStabil    int64\n\tJitcnt    int64\n\tCalcnt    int64\n\tErrcnt    int64\n\tStbcnt    int64\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int64\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint64\n\t_       uint64\n\tSize    int64\n\tBlksize int32\n\t_       int32\n\tBlocks  int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\t_       [2]int32\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]int8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint64\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]int8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint64\n\tControl    *byte\n\tControllen uint64\n\tFlags      int32\n\t_          [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint64\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [24]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x60\n\tSizeofIovec           = 0x10\n\tSizeofMsghdr          = 0x38\n\tSizeofCmsghdr         = 0x10\n)\n\nconst (\n\tSizeofSockFprog = 0x10\n)\n\ntype PtraceRegs struct {\n\tRegs     [32]uint64\n\tOrig_a0  uint64\n\tEra      uint64\n\tBadv     uint64\n\tReserved [10]uint64\n}\n\ntype FdSet struct {\n\tBits [16]int64\n}\n\ntype Sysinfo_t struct {\n\tUptime    int64\n\tLoads     [3]uint64\n\tTotalram  uint64\n\tFreeram   uint64\n\tSharedram uint64\n\tBufferram uint64\n\tTotalswap uint64\n\tFreeswap  uint64\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint64\n\tFreehigh  uint64\n\tUnit      uint32\n\t_         [0]int8\n\t_         [4]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint64\n\tFname  [6]int8\n\tFpack  [6]int8\n\t_      [4]byte\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\t_      int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst _C__NSIG = 0x41\n\nconst (\n\tSIG_BLOCK   = 0x0\n\tSIG_UNBLOCK = 0x1\n\tSIG_SETMASK = 0x2\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tErrno int32\n\tCode  int32\n\t_     int32\n\t_     [112]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [19]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]int8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n\tCpu_delay_max             uint64\n\tCpu_delay_min             uint64\n\tBlkio_delay_max           uint64\n\tBlkio_delay_min           uint64\n\tSwapin_delay_max          uint64\n\tSwapin_delay_min          uint64\n\tFreepages_delay_max       uint64\n\tFreepages_delay_min       uint64\n\tThrashing_delay_max       uint64\n\tThrashing_delay_min       uint64\n\tCompact_delay_max         uint64\n\tCompact_delay_min         uint64\n\tWpcopy_delay_max          uint64\n\tWpcopy_delay_min          uint64\n\tIrq_delay_max             uint64\n\tIrq_delay_min             uint64\n}\n\ntype cpuMask uint64\n\nconst (\n\t_NCPUBITS = 0x40\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x1\n\tCBitFieldMaskBit1  = 0x2\n\tCBitFieldMaskBit2  = 0x4\n\tCBitFieldMaskBit3  = 0x8\n\tCBitFieldMaskBit4  = 0x10\n\tCBitFieldMaskBit5  = 0x20\n\tCBitFieldMaskBit6  = 0x40\n\tCBitFieldMaskBit7  = 0x80\n\tCBitFieldMaskBit8  = 0x100\n\tCBitFieldMaskBit9  = 0x200\n\tCBitFieldMaskBit10 = 0x400\n\tCBitFieldMaskBit11 = 0x800\n\tCBitFieldMaskBit12 = 0x1000\n\tCBitFieldMaskBit13 = 0x2000\n\tCBitFieldMaskBit14 = 0x4000\n\tCBitFieldMaskBit15 = 0x8000\n\tCBitFieldMaskBit16 = 0x10000\n\tCBitFieldMaskBit17 = 0x20000\n\tCBitFieldMaskBit18 = 0x40000\n\tCBitFieldMaskBit19 = 0x80000\n\tCBitFieldMaskBit20 = 0x100000\n\tCBitFieldMaskBit21 = 0x200000\n\tCBitFieldMaskBit22 = 0x400000\n\tCBitFieldMaskBit23 = 0x800000\n\tCBitFieldMaskBit24 = 0x1000000\n\tCBitFieldMaskBit25 = 0x2000000\n\tCBitFieldMaskBit26 = 0x4000000\n\tCBitFieldMaskBit27 = 0x8000000\n\tCBitFieldMaskBit28 = 0x10000000\n\tCBitFieldMaskBit29 = 0x20000000\n\tCBitFieldMaskBit30 = 0x40000000\n\tCBitFieldMaskBit31 = 0x80000000\n\tCBitFieldMaskBit32 = 0x100000000\n\tCBitFieldMaskBit33 = 0x200000000\n\tCBitFieldMaskBit34 = 0x400000000\n\tCBitFieldMaskBit35 = 0x800000000\n\tCBitFieldMaskBit36 = 0x1000000000\n\tCBitFieldMaskBit37 = 0x2000000000\n\tCBitFieldMaskBit38 = 0x4000000000\n\tCBitFieldMaskBit39 = 0x8000000000\n\tCBitFieldMaskBit40 = 0x10000000000\n\tCBitFieldMaskBit41 = 0x20000000000\n\tCBitFieldMaskBit42 = 0x40000000000\n\tCBitFieldMaskBit43 = 0x80000000000\n\tCBitFieldMaskBit44 = 0x100000000000\n\tCBitFieldMaskBit45 = 0x200000000000\n\tCBitFieldMaskBit46 = 0x400000000000\n\tCBitFieldMaskBit47 = 0x800000000000\n\tCBitFieldMaskBit48 = 0x1000000000000\n\tCBitFieldMaskBit49 = 0x2000000000000\n\tCBitFieldMaskBit50 = 0x4000000000000\n\tCBitFieldMaskBit51 = 0x8000000000000\n\tCBitFieldMaskBit52 = 0x10000000000000\n\tCBitFieldMaskBit53 = 0x20000000000000\n\tCBitFieldMaskBit54 = 0x40000000000000\n\tCBitFieldMaskBit55 = 0x80000000000000\n\tCBitFieldMaskBit56 = 0x100000000000000\n\tCBitFieldMaskBit57 = 0x200000000000000\n\tCBitFieldMaskBit58 = 0x400000000000000\n\tCBitFieldMaskBit59 = 0x800000000000000\n\tCBitFieldMaskBit60 = 0x1000000000000000\n\tCBitFieldMaskBit61 = 0x2000000000000000\n\tCBitFieldMaskBit62 = 0x4000000000000000\n\tCBitFieldMaskBit63 = 0x8000000000000000\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\tData   [118]byte\n\t_      uint64\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint64\n}\n\ntype Statfs_t struct {\n\tType    int64\n\tBsize   int64\n\tBlocks  uint64\n\tBfree   uint64\n\tBavail  uint64\n\tFiles   uint64\n\tFfree   uint64\n\tFsid    Fsid\n\tNamelen int64\n\tFrsize  int64\n\tFlags   int64\n\tSpare   [4]int64\n}\n\ntype TpacketHdr struct {\n\tStatus  uint64\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n\t_       [4]byte\n}\n\nconst (\n\tSizeofTpacketHdr = 0x20\n)\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int64\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG = 0x1269\n)\n\ntype CryptoUserAlg struct {\n\tName        [64]int8\n\tDriver_name [64]int8\n\tModule_name [64]int8\n\tType        uint32\n\tMask        uint32\n\tRefcnt      uint32\n\tFlags       uint32\n}\n\ntype CryptoStatAEAD struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatAKCipher struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tVerify_cnt   uint64\n\tSign_cnt     uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCipher struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCompress struct {\n\tType            [64]int8\n\tCompress_cnt    uint64\n\tCompress_tlen   uint64\n\tDecompress_cnt  uint64\n\tDecompress_tlen uint64\n\tErr_cnt         uint64\n}\n\ntype CryptoStatHash struct {\n\tType      [64]int8\n\tHash_cnt  uint64\n\tHash_tlen uint64\n\tErr_cnt   uint64\n}\n\ntype CryptoStatKPP struct {\n\tType                      [64]int8\n\tSetsecret_cnt             uint64\n\tGenerate_public_key_cnt   uint64\n\tCompute_shared_secret_cnt uint64\n\tErr_cnt                   uint64\n}\n\ntype CryptoStatRNG struct {\n\tType          [64]int8\n\tGenerate_cnt  uint64\n\tGenerate_tlen uint64\n\tSeed_cnt      uint64\n\tErr_cnt       uint64\n}\n\ntype CryptoStatLarval struct {\n\tType [64]int8\n}\n\ntype CryptoReportLarval struct {\n\tType [64]int8\n}\n\ntype CryptoReportHash struct {\n\tType       [64]int8\n\tBlocksize  uint32\n\tDigestsize uint32\n}\n\ntype CryptoReportCipher struct {\n\tType        [64]int8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n}\n\ntype CryptoReportBlkCipher struct {\n\tType        [64]int8\n\tGeniv       [64]int8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportAEAD struct {\n\tType        [64]int8\n\tGeniv       [64]int8\n\tBlocksize   uint32\n\tMaxauthsize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportComp struct {\n\tType [64]int8\n}\n\ntype CryptoReportRNG struct {\n\tType     [64]int8\n\tSeedsize uint32\n}\n\ntype CryptoReportAKCipher struct {\n\tType [64]int8\n}\n\ntype CryptoReportKPP struct {\n\tType [64]int8\n}\n\ntype CryptoReportAcomp struct {\n\tType [64]int8\n}\n\ntype LoopInfo struct {\n\tNumber           int32\n\tDevice           uint32\n\tInode            uint64\n\tRdevice          uint32\n\tOffset           int32\n\tEncrypt_type     int32\n\tEncrypt_key_size int32\n\tFlags            int32\n\tName             [64]int8\n\tEncrypt_key      [32]uint8\n\tInit             [2]uint64\n\tReserved         [4]int8\n\t_                [4]byte\n}\n\ntype TIPCSubscr struct {\n\tSeq     TIPCServiceRange\n\tTimeout uint32\n\tFilter  uint32\n\tHandle  [8]int8\n}\n\ntype TIPCSIOCLNReq struct {\n\tPeer     uint32\n\tId       uint32\n\tLinkname [68]int8\n}\n\ntype TIPCSIOCNodeIDReq struct {\n\tPeer uint32\n\tId   [16]int8\n}\n\ntype PPSKInfo struct {\n\tAssert_sequence uint32\n\tClear_sequence  uint32\n\tAssert_tu       PPSKTime\n\tClear_tu        PPSKTime\n\tCurrent_mode    int32\n\t_               [4]byte\n}\n\nconst (\n\tPPS_GETPARAMS = 0x800870a1\n\tPPS_SETPARAMS = 0x400870a2\n\tPPS_GETCAP    = 0x800870a3\n\tPPS_FETCH     = 0xc00870a4\n)\n\nconst (\n\tPIDFD_NONBLOCK = 0x800\n)\n\ntype SysvIpcPerm struct {\n\tKey  int32\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint32\n\t_    [0]uint8\n\tSeq  uint16\n\t_    uint16\n\t_    uint64\n\t_    uint64\n}\ntype SysvShmDesc struct {\n\tPerm   SysvIpcPerm\n\tSegsz  uint64\n\tAtime  int64\n\tDtime  int64\n\tCtime  int64\n\tCpid   int32\n\tLpid   int32\n\tNattch uint64\n\t_      uint64\n\t_      uint64\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_linux_mips.go",
    "content": "// cgo -godefs -objdir=/tmp/mips/cgo -- -Wall -Werror -static -I/tmp/mips/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mips && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x4\n\tSizeofLong = 0x4\n)\n\ntype (\n\t_C_long int32\n)\n\ntype Timespec struct {\n\tSec  int32\n\tNsec int32\n}\n\ntype Timeval struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int32\n\tFreq      int32\n\tMaxerror  int32\n\tEsterror  int32\n\tStatus    int32\n\tConstant  int32\n\tPrecision int32\n\tTolerance int32\n\tTime      Timeval\n\tTick      int32\n\tPpsfreq   int32\n\tJitter    int32\n\tShift     int32\n\tStabil    int32\n\tJitcnt    int32\n\tCalcnt    int32\n\tErrcnt    int32\n\tStbcnt    int32\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int32\n\ntype Tms struct {\n\tUtime  int32\n\tStime  int32\n\tCutime int32\n\tCstime int32\n}\n\ntype Utimbuf struct {\n\tActime  int32\n\tModtime int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Stat_t struct {\n\tDev     uint32\n\tPad1    [3]int32\n\tIno     uint64\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint32\n\tPad2    [3]int32\n\tSize    int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBlksize int32\n\tPad4    int32\n\tBlocks  int64\n\tPad5    [14]int32\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]int8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\t_      [4]byte\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint32\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]int8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [16]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x58\n\tSizeofIovec           = 0x8\n\tSizeofMsghdr          = 0x1c\n\tSizeofCmsghdr         = 0xc\n)\n\nconst (\n\tSizeofSockFprog = 0x8\n)\n\ntype PtraceRegs struct {\n\tRegs     [32]uint64\n\tLo       uint64\n\tHi       uint64\n\tEpc      uint64\n\tBadvaddr uint64\n\tStatus   uint64\n\tCause    uint64\n}\n\ntype FdSet struct {\n\tBits [32]int32\n}\n\ntype Sysinfo_t struct {\n\tUptime    int32\n\tLoads     [3]uint32\n\tTotalram  uint32\n\tFreeram   uint32\n\tSharedram uint32\n\tBufferram uint32\n\tTotalswap uint32\n\tFreeswap  uint32\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint32\n\tFreehigh  uint32\n\tUnit      uint32\n\t_         [8]int8\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint32\n\tFname  [6]int8\n\tFpack  [6]int8\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\tPadFd  int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [32]uint32\n}\n\nconst _C__NSIG = 0x80\n\nconst (\n\tSIG_BLOCK   = 0x1\n\tSIG_UNBLOCK = 0x2\n\tSIG_SETMASK = 0x3\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tCode  int32\n\tErrno int32\n\t_     [116]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [23]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\t_                         [6]byte\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]int8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\t_                         [4]byte\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\t_                         [4]byte\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n\tCpu_delay_max             uint64\n\tCpu_delay_min             uint64\n\tBlkio_delay_max           uint64\n\tBlkio_delay_min           uint64\n\tSwapin_delay_max          uint64\n\tSwapin_delay_min          uint64\n\tFreepages_delay_max       uint64\n\tFreepages_delay_min       uint64\n\tThrashing_delay_max       uint64\n\tThrashing_delay_min       uint64\n\tCompact_delay_max         uint64\n\tCompact_delay_min         uint64\n\tWpcopy_delay_max          uint64\n\tWpcopy_delay_min          uint64\n\tIrq_delay_max             uint64\n\tIrq_delay_min             uint64\n}\n\ntype cpuMask uint32\n\nconst (\n\t_NCPUBITS = 0x20\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x8000000000000000\n\tCBitFieldMaskBit1  = 0x4000000000000000\n\tCBitFieldMaskBit2  = 0x2000000000000000\n\tCBitFieldMaskBit3  = 0x1000000000000000\n\tCBitFieldMaskBit4  = 0x800000000000000\n\tCBitFieldMaskBit5  = 0x400000000000000\n\tCBitFieldMaskBit6  = 0x200000000000000\n\tCBitFieldMaskBit7  = 0x100000000000000\n\tCBitFieldMaskBit8  = 0x80000000000000\n\tCBitFieldMaskBit9  = 0x40000000000000\n\tCBitFieldMaskBit10 = 0x20000000000000\n\tCBitFieldMaskBit11 = 0x10000000000000\n\tCBitFieldMaskBit12 = 0x8000000000000\n\tCBitFieldMaskBit13 = 0x4000000000000\n\tCBitFieldMaskBit14 = 0x2000000000000\n\tCBitFieldMaskBit15 = 0x1000000000000\n\tCBitFieldMaskBit16 = 0x800000000000\n\tCBitFieldMaskBit17 = 0x400000000000\n\tCBitFieldMaskBit18 = 0x200000000000\n\tCBitFieldMaskBit19 = 0x100000000000\n\tCBitFieldMaskBit20 = 0x80000000000\n\tCBitFieldMaskBit21 = 0x40000000000\n\tCBitFieldMaskBit22 = 0x20000000000\n\tCBitFieldMaskBit23 = 0x10000000000\n\tCBitFieldMaskBit24 = 0x8000000000\n\tCBitFieldMaskBit25 = 0x4000000000\n\tCBitFieldMaskBit26 = 0x2000000000\n\tCBitFieldMaskBit27 = 0x1000000000\n\tCBitFieldMaskBit28 = 0x800000000\n\tCBitFieldMaskBit29 = 0x400000000\n\tCBitFieldMaskBit30 = 0x200000000\n\tCBitFieldMaskBit31 = 0x100000000\n\tCBitFieldMaskBit32 = 0x80000000\n\tCBitFieldMaskBit33 = 0x40000000\n\tCBitFieldMaskBit34 = 0x20000000\n\tCBitFieldMaskBit35 = 0x10000000\n\tCBitFieldMaskBit36 = 0x8000000\n\tCBitFieldMaskBit37 = 0x4000000\n\tCBitFieldMaskBit38 = 0x2000000\n\tCBitFieldMaskBit39 = 0x1000000\n\tCBitFieldMaskBit40 = 0x800000\n\tCBitFieldMaskBit41 = 0x400000\n\tCBitFieldMaskBit42 = 0x200000\n\tCBitFieldMaskBit43 = 0x100000\n\tCBitFieldMaskBit44 = 0x80000\n\tCBitFieldMaskBit45 = 0x40000\n\tCBitFieldMaskBit46 = 0x20000\n\tCBitFieldMaskBit47 = 0x10000\n\tCBitFieldMaskBit48 = 0x8000\n\tCBitFieldMaskBit49 = 0x4000\n\tCBitFieldMaskBit50 = 0x2000\n\tCBitFieldMaskBit51 = 0x1000\n\tCBitFieldMaskBit52 = 0x800\n\tCBitFieldMaskBit53 = 0x400\n\tCBitFieldMaskBit54 = 0x200\n\tCBitFieldMaskBit55 = 0x100\n\tCBitFieldMaskBit56 = 0x80\n\tCBitFieldMaskBit57 = 0x40\n\tCBitFieldMaskBit58 = 0x20\n\tCBitFieldMaskBit59 = 0x10\n\tCBitFieldMaskBit60 = 0x8\n\tCBitFieldMaskBit61 = 0x4\n\tCBitFieldMaskBit62 = 0x2\n\tCBitFieldMaskBit63 = 0x1\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\tData   [122]byte\n\t_      uint32\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint32\n}\n\ntype Statfs_t struct {\n\tType    int32\n\tBsize   int32\n\tFrsize  int32\n\t_       [4]byte\n\tBlocks  uint64\n\tBfree   uint64\n\tFiles   uint64\n\tFfree   uint64\n\tBavail  uint64\n\tFsid    Fsid\n\tNamelen int32\n\tFlags   int32\n\tSpare   [5]int32\n\t_       [4]byte\n}\n\ntype TpacketHdr struct {\n\tStatus  uint32\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n}\n\nconst (\n\tSizeofTpacketHdr = 0x18\n)\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int32\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG = 0x20001269\n)\n\ntype CryptoUserAlg struct {\n\tName        [64]int8\n\tDriver_name [64]int8\n\tModule_name [64]int8\n\tType        uint32\n\tMask        uint32\n\tRefcnt      uint32\n\tFlags       uint32\n}\n\ntype CryptoStatAEAD struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatAKCipher struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tVerify_cnt   uint64\n\tSign_cnt     uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCipher struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCompress struct {\n\tType            [64]int8\n\tCompress_cnt    uint64\n\tCompress_tlen   uint64\n\tDecompress_cnt  uint64\n\tDecompress_tlen uint64\n\tErr_cnt         uint64\n}\n\ntype CryptoStatHash struct {\n\tType      [64]int8\n\tHash_cnt  uint64\n\tHash_tlen uint64\n\tErr_cnt   uint64\n}\n\ntype CryptoStatKPP struct {\n\tType                      [64]int8\n\tSetsecret_cnt             uint64\n\tGenerate_public_key_cnt   uint64\n\tCompute_shared_secret_cnt uint64\n\tErr_cnt                   uint64\n}\n\ntype CryptoStatRNG struct {\n\tType          [64]int8\n\tGenerate_cnt  uint64\n\tGenerate_tlen uint64\n\tSeed_cnt      uint64\n\tErr_cnt       uint64\n}\n\ntype CryptoStatLarval struct {\n\tType [64]int8\n}\n\ntype CryptoReportLarval struct {\n\tType [64]int8\n}\n\ntype CryptoReportHash struct {\n\tType       [64]int8\n\tBlocksize  uint32\n\tDigestsize uint32\n}\n\ntype CryptoReportCipher struct {\n\tType        [64]int8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n}\n\ntype CryptoReportBlkCipher struct {\n\tType        [64]int8\n\tGeniv       [64]int8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportAEAD struct {\n\tType        [64]int8\n\tGeniv       [64]int8\n\tBlocksize   uint32\n\tMaxauthsize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportComp struct {\n\tType [64]int8\n}\n\ntype CryptoReportRNG struct {\n\tType     [64]int8\n\tSeedsize uint32\n}\n\ntype CryptoReportAKCipher struct {\n\tType [64]int8\n}\n\ntype CryptoReportKPP struct {\n\tType [64]int8\n}\n\ntype CryptoReportAcomp struct {\n\tType [64]int8\n}\n\ntype LoopInfo struct {\n\tNumber           int32\n\tDevice           uint32\n\tInode            uint32\n\tRdevice          uint32\n\tOffset           int32\n\tEncrypt_type     int32\n\tEncrypt_key_size int32\n\tFlags            int32\n\tName             [64]int8\n\tEncrypt_key      [32]uint8\n\tInit             [2]uint32\n\tReserved         [4]int8\n}\n\ntype TIPCSubscr struct {\n\tSeq     TIPCServiceRange\n\tTimeout uint32\n\tFilter  uint32\n\tHandle  [8]int8\n}\n\ntype TIPCSIOCLNReq struct {\n\tPeer     uint32\n\tId       uint32\n\tLinkname [68]int8\n}\n\ntype TIPCSIOCNodeIDReq struct {\n\tPeer uint32\n\tId   [16]int8\n}\n\ntype PPSKInfo struct {\n\tAssert_sequence uint32\n\tClear_sequence  uint32\n\tAssert_tu       PPSKTime\n\tClear_tu        PPSKTime\n\tCurrent_mode    int32\n\t_               [4]byte\n}\n\nconst (\n\tPPS_GETPARAMS = 0x400470a1\n\tPPS_SETPARAMS = 0x800470a2\n\tPPS_GETCAP    = 0x400470a3\n\tPPS_FETCH     = 0xc00470a4\n)\n\nconst (\n\tPIDFD_NONBLOCK = 0x80\n)\n\ntype SysvIpcPerm struct {\n\tKey  int32\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint32\n\t_    [0]uint8\n\tSeq  uint16\n\t_    uint16\n\t_    uint32\n\t_    uint32\n}\ntype SysvShmDesc struct {\n\tPerm       SysvIpcPerm\n\tSegsz      uint32\n\tAtime      uint32\n\tDtime      uint32\n\tCtime      uint32\n\tCpid       int32\n\tLpid       int32\n\tNattch     uint32\n\tAtime_high uint16\n\tDtime_high uint16\n\tCtime_high uint16\n\t_          uint16\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go",
    "content": "// cgo -godefs -objdir=/tmp/mips64/cgo -- -Wall -Werror -static -I/tmp/mips64/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mips64 && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x8\n\tSizeofLong = 0x8\n)\n\ntype (\n\t_C_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int64\n\tFreq      int64\n\tMaxerror  int64\n\tEsterror  int64\n\tStatus    int32\n\tConstant  int64\n\tPrecision int64\n\tTolerance int64\n\tTime      Timeval\n\tTick      int64\n\tPpsfreq   int64\n\tJitter    int64\n\tShift     int32\n\tStabil    int64\n\tJitcnt    int64\n\tCalcnt    int64\n\tErrcnt    int64\n\tStbcnt    int64\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int64\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Stat_t struct {\n\tDev     uint32\n\tPad1    [3]uint32\n\tIno     uint64\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint32\n\tPad2    [3]uint32\n\tSize    int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBlksize uint32\n\tPad4    uint32\n\tBlocks  int64\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]int8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint64\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]int8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint64\n\tControl    *byte\n\tControllen uint64\n\tFlags      int32\n\t_          [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint64\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [24]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x60\n\tSizeofIovec           = 0x10\n\tSizeofMsghdr          = 0x38\n\tSizeofCmsghdr         = 0x10\n)\n\nconst (\n\tSizeofSockFprog = 0x10\n)\n\ntype PtraceRegs struct {\n\tRegs     [32]uint64\n\tLo       uint64\n\tHi       uint64\n\tEpc      uint64\n\tBadvaddr uint64\n\tStatus   uint64\n\tCause    uint64\n}\n\ntype FdSet struct {\n\tBits [16]int64\n}\n\ntype Sysinfo_t struct {\n\tUptime    int64\n\tLoads     [3]uint64\n\tTotalram  uint64\n\tFreeram   uint64\n\tSharedram uint64\n\tBufferram uint64\n\tTotalswap uint64\n\tFreeswap  uint64\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint64\n\tFreehigh  uint64\n\tUnit      uint32\n\t_         [0]int8\n\t_         [4]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint64\n\tFname  [6]int8\n\tFpack  [6]int8\n\t_      [4]byte\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\t_      int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst _C__NSIG = 0x80\n\nconst (\n\tSIG_BLOCK   = 0x1\n\tSIG_UNBLOCK = 0x2\n\tSIG_SETMASK = 0x3\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tCode  int32\n\tErrno int32\n\t_     int32\n\t_     [112]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [23]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]int8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n\tCpu_delay_max             uint64\n\tCpu_delay_min             uint64\n\tBlkio_delay_max           uint64\n\tBlkio_delay_min           uint64\n\tSwapin_delay_max          uint64\n\tSwapin_delay_min          uint64\n\tFreepages_delay_max       uint64\n\tFreepages_delay_min       uint64\n\tThrashing_delay_max       uint64\n\tThrashing_delay_min       uint64\n\tCompact_delay_max         uint64\n\tCompact_delay_min         uint64\n\tWpcopy_delay_max          uint64\n\tWpcopy_delay_min          uint64\n\tIrq_delay_max             uint64\n\tIrq_delay_min             uint64\n}\n\ntype cpuMask uint64\n\nconst (\n\t_NCPUBITS = 0x40\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x8000000000000000\n\tCBitFieldMaskBit1  = 0x4000000000000000\n\tCBitFieldMaskBit2  = 0x2000000000000000\n\tCBitFieldMaskBit3  = 0x1000000000000000\n\tCBitFieldMaskBit4  = 0x800000000000000\n\tCBitFieldMaskBit5  = 0x400000000000000\n\tCBitFieldMaskBit6  = 0x200000000000000\n\tCBitFieldMaskBit7  = 0x100000000000000\n\tCBitFieldMaskBit8  = 0x80000000000000\n\tCBitFieldMaskBit9  = 0x40000000000000\n\tCBitFieldMaskBit10 = 0x20000000000000\n\tCBitFieldMaskBit11 = 0x10000000000000\n\tCBitFieldMaskBit12 = 0x8000000000000\n\tCBitFieldMaskBit13 = 0x4000000000000\n\tCBitFieldMaskBit14 = 0x2000000000000\n\tCBitFieldMaskBit15 = 0x1000000000000\n\tCBitFieldMaskBit16 = 0x800000000000\n\tCBitFieldMaskBit17 = 0x400000000000\n\tCBitFieldMaskBit18 = 0x200000000000\n\tCBitFieldMaskBit19 = 0x100000000000\n\tCBitFieldMaskBit20 = 0x80000000000\n\tCBitFieldMaskBit21 = 0x40000000000\n\tCBitFieldMaskBit22 = 0x20000000000\n\tCBitFieldMaskBit23 = 0x10000000000\n\tCBitFieldMaskBit24 = 0x8000000000\n\tCBitFieldMaskBit25 = 0x4000000000\n\tCBitFieldMaskBit26 = 0x2000000000\n\tCBitFieldMaskBit27 = 0x1000000000\n\tCBitFieldMaskBit28 = 0x800000000\n\tCBitFieldMaskBit29 = 0x400000000\n\tCBitFieldMaskBit30 = 0x200000000\n\tCBitFieldMaskBit31 = 0x100000000\n\tCBitFieldMaskBit32 = 0x80000000\n\tCBitFieldMaskBit33 = 0x40000000\n\tCBitFieldMaskBit34 = 0x20000000\n\tCBitFieldMaskBit35 = 0x10000000\n\tCBitFieldMaskBit36 = 0x8000000\n\tCBitFieldMaskBit37 = 0x4000000\n\tCBitFieldMaskBit38 = 0x2000000\n\tCBitFieldMaskBit39 = 0x1000000\n\tCBitFieldMaskBit40 = 0x800000\n\tCBitFieldMaskBit41 = 0x400000\n\tCBitFieldMaskBit42 = 0x200000\n\tCBitFieldMaskBit43 = 0x100000\n\tCBitFieldMaskBit44 = 0x80000\n\tCBitFieldMaskBit45 = 0x40000\n\tCBitFieldMaskBit46 = 0x20000\n\tCBitFieldMaskBit47 = 0x10000\n\tCBitFieldMaskBit48 = 0x8000\n\tCBitFieldMaskBit49 = 0x4000\n\tCBitFieldMaskBit50 = 0x2000\n\tCBitFieldMaskBit51 = 0x1000\n\tCBitFieldMaskBit52 = 0x800\n\tCBitFieldMaskBit53 = 0x400\n\tCBitFieldMaskBit54 = 0x200\n\tCBitFieldMaskBit55 = 0x100\n\tCBitFieldMaskBit56 = 0x80\n\tCBitFieldMaskBit57 = 0x40\n\tCBitFieldMaskBit58 = 0x20\n\tCBitFieldMaskBit59 = 0x10\n\tCBitFieldMaskBit60 = 0x8\n\tCBitFieldMaskBit61 = 0x4\n\tCBitFieldMaskBit62 = 0x2\n\tCBitFieldMaskBit63 = 0x1\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\tData   [118]byte\n\t_      uint64\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint64\n}\n\ntype Statfs_t struct {\n\tType    int64\n\tBsize   int64\n\tFrsize  int64\n\tBlocks  uint64\n\tBfree   uint64\n\tFiles   uint64\n\tFfree   uint64\n\tBavail  uint64\n\tFsid    Fsid\n\tNamelen int64\n\tFlags   int64\n\tSpare   [5]int64\n}\n\ntype TpacketHdr struct {\n\tStatus  uint64\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n\t_       [4]byte\n}\n\nconst (\n\tSizeofTpacketHdr = 0x20\n)\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int64\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG = 0x20001269\n)\n\ntype CryptoUserAlg struct {\n\tName        [64]int8\n\tDriver_name [64]int8\n\tModule_name [64]int8\n\tType        uint32\n\tMask        uint32\n\tRefcnt      uint32\n\tFlags       uint32\n}\n\ntype CryptoStatAEAD struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatAKCipher struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tVerify_cnt   uint64\n\tSign_cnt     uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCipher struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCompress struct {\n\tType            [64]int8\n\tCompress_cnt    uint64\n\tCompress_tlen   uint64\n\tDecompress_cnt  uint64\n\tDecompress_tlen uint64\n\tErr_cnt         uint64\n}\n\ntype CryptoStatHash struct {\n\tType      [64]int8\n\tHash_cnt  uint64\n\tHash_tlen uint64\n\tErr_cnt   uint64\n}\n\ntype CryptoStatKPP struct {\n\tType                      [64]int8\n\tSetsecret_cnt             uint64\n\tGenerate_public_key_cnt   uint64\n\tCompute_shared_secret_cnt uint64\n\tErr_cnt                   uint64\n}\n\ntype CryptoStatRNG struct {\n\tType          [64]int8\n\tGenerate_cnt  uint64\n\tGenerate_tlen uint64\n\tSeed_cnt      uint64\n\tErr_cnt       uint64\n}\n\ntype CryptoStatLarval struct {\n\tType [64]int8\n}\n\ntype CryptoReportLarval struct {\n\tType [64]int8\n}\n\ntype CryptoReportHash struct {\n\tType       [64]int8\n\tBlocksize  uint32\n\tDigestsize uint32\n}\n\ntype CryptoReportCipher struct {\n\tType        [64]int8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n}\n\ntype CryptoReportBlkCipher struct {\n\tType        [64]int8\n\tGeniv       [64]int8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportAEAD struct {\n\tType        [64]int8\n\tGeniv       [64]int8\n\tBlocksize   uint32\n\tMaxauthsize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportComp struct {\n\tType [64]int8\n}\n\ntype CryptoReportRNG struct {\n\tType     [64]int8\n\tSeedsize uint32\n}\n\ntype CryptoReportAKCipher struct {\n\tType [64]int8\n}\n\ntype CryptoReportKPP struct {\n\tType [64]int8\n}\n\ntype CryptoReportAcomp struct {\n\tType [64]int8\n}\n\ntype LoopInfo struct {\n\tNumber           int32\n\tDevice           uint32\n\tInode            uint64\n\tRdevice          uint32\n\tOffset           int32\n\tEncrypt_type     int32\n\tEncrypt_key_size int32\n\tFlags            int32\n\tName             [64]int8\n\tEncrypt_key      [32]uint8\n\tInit             [2]uint64\n\tReserved         [4]int8\n\t_                [4]byte\n}\n\ntype TIPCSubscr struct {\n\tSeq     TIPCServiceRange\n\tTimeout uint32\n\tFilter  uint32\n\tHandle  [8]int8\n}\n\ntype TIPCSIOCLNReq struct {\n\tPeer     uint32\n\tId       uint32\n\tLinkname [68]int8\n}\n\ntype TIPCSIOCNodeIDReq struct {\n\tPeer uint32\n\tId   [16]int8\n}\n\ntype PPSKInfo struct {\n\tAssert_sequence uint32\n\tClear_sequence  uint32\n\tAssert_tu       PPSKTime\n\tClear_tu        PPSKTime\n\tCurrent_mode    int32\n\t_               [4]byte\n}\n\nconst (\n\tPPS_GETPARAMS = 0x400870a1\n\tPPS_SETPARAMS = 0x800870a2\n\tPPS_GETCAP    = 0x400870a3\n\tPPS_FETCH     = 0xc00870a4\n)\n\nconst (\n\tPIDFD_NONBLOCK = 0x80\n)\n\ntype SysvIpcPerm struct {\n\tKey  int32\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint32\n\t_    [0]uint8\n\tSeq  uint16\n\t_    uint16\n\t_    uint64\n\t_    uint64\n}\ntype SysvShmDesc struct {\n\tPerm   SysvIpcPerm\n\tSegsz  uint64\n\tAtime  int64\n\tDtime  int64\n\tCtime  int64\n\tCpid   int32\n\tLpid   int32\n\tNattch uint64\n\t_      uint64\n\t_      uint64\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go",
    "content": "// cgo -godefs -objdir=/tmp/mips64le/cgo -- -Wall -Werror -static -I/tmp/mips64le/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mips64le && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x8\n\tSizeofLong = 0x8\n)\n\ntype (\n\t_C_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int64\n\tFreq      int64\n\tMaxerror  int64\n\tEsterror  int64\n\tStatus    int32\n\tConstant  int64\n\tPrecision int64\n\tTolerance int64\n\tTime      Timeval\n\tTick      int64\n\tPpsfreq   int64\n\tJitter    int64\n\tShift     int32\n\tStabil    int64\n\tJitcnt    int64\n\tCalcnt    int64\n\tErrcnt    int64\n\tStbcnt    int64\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int64\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Stat_t struct {\n\tDev     uint32\n\tPad1    [3]uint32\n\tIno     uint64\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint32\n\tPad2    [3]uint32\n\tSize    int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBlksize uint32\n\tPad4    uint32\n\tBlocks  int64\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]int8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint64\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]int8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint64\n\tControl    *byte\n\tControllen uint64\n\tFlags      int32\n\t_          [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint64\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [24]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x60\n\tSizeofIovec           = 0x10\n\tSizeofMsghdr          = 0x38\n\tSizeofCmsghdr         = 0x10\n)\n\nconst (\n\tSizeofSockFprog = 0x10\n)\n\ntype PtraceRegs struct {\n\tRegs     [32]uint64\n\tLo       uint64\n\tHi       uint64\n\tEpc      uint64\n\tBadvaddr uint64\n\tStatus   uint64\n\tCause    uint64\n}\n\ntype FdSet struct {\n\tBits [16]int64\n}\n\ntype Sysinfo_t struct {\n\tUptime    int64\n\tLoads     [3]uint64\n\tTotalram  uint64\n\tFreeram   uint64\n\tSharedram uint64\n\tBufferram uint64\n\tTotalswap uint64\n\tFreeswap  uint64\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint64\n\tFreehigh  uint64\n\tUnit      uint32\n\t_         [0]int8\n\t_         [4]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint64\n\tFname  [6]int8\n\tFpack  [6]int8\n\t_      [4]byte\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\t_      int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst _C__NSIG = 0x80\n\nconst (\n\tSIG_BLOCK   = 0x1\n\tSIG_UNBLOCK = 0x2\n\tSIG_SETMASK = 0x3\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tCode  int32\n\tErrno int32\n\t_     int32\n\t_     [112]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [23]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]int8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n\tCpu_delay_max             uint64\n\tCpu_delay_min             uint64\n\tBlkio_delay_max           uint64\n\tBlkio_delay_min           uint64\n\tSwapin_delay_max          uint64\n\tSwapin_delay_min          uint64\n\tFreepages_delay_max       uint64\n\tFreepages_delay_min       uint64\n\tThrashing_delay_max       uint64\n\tThrashing_delay_min       uint64\n\tCompact_delay_max         uint64\n\tCompact_delay_min         uint64\n\tWpcopy_delay_max          uint64\n\tWpcopy_delay_min          uint64\n\tIrq_delay_max             uint64\n\tIrq_delay_min             uint64\n}\n\ntype cpuMask uint64\n\nconst (\n\t_NCPUBITS = 0x40\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x1\n\tCBitFieldMaskBit1  = 0x2\n\tCBitFieldMaskBit2  = 0x4\n\tCBitFieldMaskBit3  = 0x8\n\tCBitFieldMaskBit4  = 0x10\n\tCBitFieldMaskBit5  = 0x20\n\tCBitFieldMaskBit6  = 0x40\n\tCBitFieldMaskBit7  = 0x80\n\tCBitFieldMaskBit8  = 0x100\n\tCBitFieldMaskBit9  = 0x200\n\tCBitFieldMaskBit10 = 0x400\n\tCBitFieldMaskBit11 = 0x800\n\tCBitFieldMaskBit12 = 0x1000\n\tCBitFieldMaskBit13 = 0x2000\n\tCBitFieldMaskBit14 = 0x4000\n\tCBitFieldMaskBit15 = 0x8000\n\tCBitFieldMaskBit16 = 0x10000\n\tCBitFieldMaskBit17 = 0x20000\n\tCBitFieldMaskBit18 = 0x40000\n\tCBitFieldMaskBit19 = 0x80000\n\tCBitFieldMaskBit20 = 0x100000\n\tCBitFieldMaskBit21 = 0x200000\n\tCBitFieldMaskBit22 = 0x400000\n\tCBitFieldMaskBit23 = 0x800000\n\tCBitFieldMaskBit24 = 0x1000000\n\tCBitFieldMaskBit25 = 0x2000000\n\tCBitFieldMaskBit26 = 0x4000000\n\tCBitFieldMaskBit27 = 0x8000000\n\tCBitFieldMaskBit28 = 0x10000000\n\tCBitFieldMaskBit29 = 0x20000000\n\tCBitFieldMaskBit30 = 0x40000000\n\tCBitFieldMaskBit31 = 0x80000000\n\tCBitFieldMaskBit32 = 0x100000000\n\tCBitFieldMaskBit33 = 0x200000000\n\tCBitFieldMaskBit34 = 0x400000000\n\tCBitFieldMaskBit35 = 0x800000000\n\tCBitFieldMaskBit36 = 0x1000000000\n\tCBitFieldMaskBit37 = 0x2000000000\n\tCBitFieldMaskBit38 = 0x4000000000\n\tCBitFieldMaskBit39 = 0x8000000000\n\tCBitFieldMaskBit40 = 0x10000000000\n\tCBitFieldMaskBit41 = 0x20000000000\n\tCBitFieldMaskBit42 = 0x40000000000\n\tCBitFieldMaskBit43 = 0x80000000000\n\tCBitFieldMaskBit44 = 0x100000000000\n\tCBitFieldMaskBit45 = 0x200000000000\n\tCBitFieldMaskBit46 = 0x400000000000\n\tCBitFieldMaskBit47 = 0x800000000000\n\tCBitFieldMaskBit48 = 0x1000000000000\n\tCBitFieldMaskBit49 = 0x2000000000000\n\tCBitFieldMaskBit50 = 0x4000000000000\n\tCBitFieldMaskBit51 = 0x8000000000000\n\tCBitFieldMaskBit52 = 0x10000000000000\n\tCBitFieldMaskBit53 = 0x20000000000000\n\tCBitFieldMaskBit54 = 0x40000000000000\n\tCBitFieldMaskBit55 = 0x80000000000000\n\tCBitFieldMaskBit56 = 0x100000000000000\n\tCBitFieldMaskBit57 = 0x200000000000000\n\tCBitFieldMaskBit58 = 0x400000000000000\n\tCBitFieldMaskBit59 = 0x800000000000000\n\tCBitFieldMaskBit60 = 0x1000000000000000\n\tCBitFieldMaskBit61 = 0x2000000000000000\n\tCBitFieldMaskBit62 = 0x4000000000000000\n\tCBitFieldMaskBit63 = 0x8000000000000000\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\tData   [118]byte\n\t_      uint64\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint64\n}\n\ntype Statfs_t struct {\n\tType    int64\n\tBsize   int64\n\tFrsize  int64\n\tBlocks  uint64\n\tBfree   uint64\n\tFiles   uint64\n\tFfree   uint64\n\tBavail  uint64\n\tFsid    Fsid\n\tNamelen int64\n\tFlags   int64\n\tSpare   [5]int64\n}\n\ntype TpacketHdr struct {\n\tStatus  uint64\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n\t_       [4]byte\n}\n\nconst (\n\tSizeofTpacketHdr = 0x20\n)\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int64\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG = 0x20001269\n)\n\ntype CryptoUserAlg struct {\n\tName        [64]int8\n\tDriver_name [64]int8\n\tModule_name [64]int8\n\tType        uint32\n\tMask        uint32\n\tRefcnt      uint32\n\tFlags       uint32\n}\n\ntype CryptoStatAEAD struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatAKCipher struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tVerify_cnt   uint64\n\tSign_cnt     uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCipher struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCompress struct {\n\tType            [64]int8\n\tCompress_cnt    uint64\n\tCompress_tlen   uint64\n\tDecompress_cnt  uint64\n\tDecompress_tlen uint64\n\tErr_cnt         uint64\n}\n\ntype CryptoStatHash struct {\n\tType      [64]int8\n\tHash_cnt  uint64\n\tHash_tlen uint64\n\tErr_cnt   uint64\n}\n\ntype CryptoStatKPP struct {\n\tType                      [64]int8\n\tSetsecret_cnt             uint64\n\tGenerate_public_key_cnt   uint64\n\tCompute_shared_secret_cnt uint64\n\tErr_cnt                   uint64\n}\n\ntype CryptoStatRNG struct {\n\tType          [64]int8\n\tGenerate_cnt  uint64\n\tGenerate_tlen uint64\n\tSeed_cnt      uint64\n\tErr_cnt       uint64\n}\n\ntype CryptoStatLarval struct {\n\tType [64]int8\n}\n\ntype CryptoReportLarval struct {\n\tType [64]int8\n}\n\ntype CryptoReportHash struct {\n\tType       [64]int8\n\tBlocksize  uint32\n\tDigestsize uint32\n}\n\ntype CryptoReportCipher struct {\n\tType        [64]int8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n}\n\ntype CryptoReportBlkCipher struct {\n\tType        [64]int8\n\tGeniv       [64]int8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportAEAD struct {\n\tType        [64]int8\n\tGeniv       [64]int8\n\tBlocksize   uint32\n\tMaxauthsize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportComp struct {\n\tType [64]int8\n}\n\ntype CryptoReportRNG struct {\n\tType     [64]int8\n\tSeedsize uint32\n}\n\ntype CryptoReportAKCipher struct {\n\tType [64]int8\n}\n\ntype CryptoReportKPP struct {\n\tType [64]int8\n}\n\ntype CryptoReportAcomp struct {\n\tType [64]int8\n}\n\ntype LoopInfo struct {\n\tNumber           int32\n\tDevice           uint32\n\tInode            uint64\n\tRdevice          uint32\n\tOffset           int32\n\tEncrypt_type     int32\n\tEncrypt_key_size int32\n\tFlags            int32\n\tName             [64]int8\n\tEncrypt_key      [32]uint8\n\tInit             [2]uint64\n\tReserved         [4]int8\n\t_                [4]byte\n}\n\ntype TIPCSubscr struct {\n\tSeq     TIPCServiceRange\n\tTimeout uint32\n\tFilter  uint32\n\tHandle  [8]int8\n}\n\ntype TIPCSIOCLNReq struct {\n\tPeer     uint32\n\tId       uint32\n\tLinkname [68]int8\n}\n\ntype TIPCSIOCNodeIDReq struct {\n\tPeer uint32\n\tId   [16]int8\n}\n\ntype PPSKInfo struct {\n\tAssert_sequence uint32\n\tClear_sequence  uint32\n\tAssert_tu       PPSKTime\n\tClear_tu        PPSKTime\n\tCurrent_mode    int32\n\t_               [4]byte\n}\n\nconst (\n\tPPS_GETPARAMS = 0x400870a1\n\tPPS_SETPARAMS = 0x800870a2\n\tPPS_GETCAP    = 0x400870a3\n\tPPS_FETCH     = 0xc00870a4\n)\n\nconst (\n\tPIDFD_NONBLOCK = 0x80\n)\n\ntype SysvIpcPerm struct {\n\tKey  int32\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint32\n\t_    [0]uint8\n\tSeq  uint16\n\t_    uint16\n\t_    uint64\n\t_    uint64\n}\ntype SysvShmDesc struct {\n\tPerm   SysvIpcPerm\n\tSegsz  uint64\n\tAtime  int64\n\tDtime  int64\n\tCtime  int64\n\tCpid   int32\n\tLpid   int32\n\tNattch uint64\n\t_      uint64\n\t_      uint64\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go",
    "content": "// cgo -godefs -objdir=/tmp/mipsle/cgo -- -Wall -Werror -static -I/tmp/mipsle/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mipsle && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x4\n\tSizeofLong = 0x4\n)\n\ntype (\n\t_C_long int32\n)\n\ntype Timespec struct {\n\tSec  int32\n\tNsec int32\n}\n\ntype Timeval struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int32\n\tFreq      int32\n\tMaxerror  int32\n\tEsterror  int32\n\tStatus    int32\n\tConstant  int32\n\tPrecision int32\n\tTolerance int32\n\tTime      Timeval\n\tTick      int32\n\tPpsfreq   int32\n\tJitter    int32\n\tShift     int32\n\tStabil    int32\n\tJitcnt    int32\n\tCalcnt    int32\n\tErrcnt    int32\n\tStbcnt    int32\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int32\n\ntype Tms struct {\n\tUtime  int32\n\tStime  int32\n\tCutime int32\n\tCstime int32\n}\n\ntype Utimbuf struct {\n\tActime  int32\n\tModtime int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Stat_t struct {\n\tDev     uint32\n\tPad1    [3]int32\n\tIno     uint64\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint32\n\tPad2    [3]int32\n\tSize    int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBlksize int32\n\tPad4    int32\n\tBlocks  int64\n\tPad5    [14]int32\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]int8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\t_      [4]byte\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint32\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]int8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [16]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x58\n\tSizeofIovec           = 0x8\n\tSizeofMsghdr          = 0x1c\n\tSizeofCmsghdr         = 0xc\n)\n\nconst (\n\tSizeofSockFprog = 0x8\n)\n\ntype PtraceRegs struct {\n\tRegs     [32]uint64\n\tLo       uint64\n\tHi       uint64\n\tEpc      uint64\n\tBadvaddr uint64\n\tStatus   uint64\n\tCause    uint64\n}\n\ntype FdSet struct {\n\tBits [32]int32\n}\n\ntype Sysinfo_t struct {\n\tUptime    int32\n\tLoads     [3]uint32\n\tTotalram  uint32\n\tFreeram   uint32\n\tSharedram uint32\n\tBufferram uint32\n\tTotalswap uint32\n\tFreeswap  uint32\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint32\n\tFreehigh  uint32\n\tUnit      uint32\n\t_         [8]int8\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint32\n\tFname  [6]int8\n\tFpack  [6]int8\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\tPadFd  int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [32]uint32\n}\n\nconst _C__NSIG = 0x80\n\nconst (\n\tSIG_BLOCK   = 0x1\n\tSIG_UNBLOCK = 0x2\n\tSIG_SETMASK = 0x3\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tCode  int32\n\tErrno int32\n\t_     [116]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [23]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\t_                         [6]byte\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]int8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\t_                         [4]byte\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\t_                         [4]byte\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n\tCpu_delay_max             uint64\n\tCpu_delay_min             uint64\n\tBlkio_delay_max           uint64\n\tBlkio_delay_min           uint64\n\tSwapin_delay_max          uint64\n\tSwapin_delay_min          uint64\n\tFreepages_delay_max       uint64\n\tFreepages_delay_min       uint64\n\tThrashing_delay_max       uint64\n\tThrashing_delay_min       uint64\n\tCompact_delay_max         uint64\n\tCompact_delay_min         uint64\n\tWpcopy_delay_max          uint64\n\tWpcopy_delay_min          uint64\n\tIrq_delay_max             uint64\n\tIrq_delay_min             uint64\n}\n\ntype cpuMask uint32\n\nconst (\n\t_NCPUBITS = 0x20\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x1\n\tCBitFieldMaskBit1  = 0x2\n\tCBitFieldMaskBit2  = 0x4\n\tCBitFieldMaskBit3  = 0x8\n\tCBitFieldMaskBit4  = 0x10\n\tCBitFieldMaskBit5  = 0x20\n\tCBitFieldMaskBit6  = 0x40\n\tCBitFieldMaskBit7  = 0x80\n\tCBitFieldMaskBit8  = 0x100\n\tCBitFieldMaskBit9  = 0x200\n\tCBitFieldMaskBit10 = 0x400\n\tCBitFieldMaskBit11 = 0x800\n\tCBitFieldMaskBit12 = 0x1000\n\tCBitFieldMaskBit13 = 0x2000\n\tCBitFieldMaskBit14 = 0x4000\n\tCBitFieldMaskBit15 = 0x8000\n\tCBitFieldMaskBit16 = 0x10000\n\tCBitFieldMaskBit17 = 0x20000\n\tCBitFieldMaskBit18 = 0x40000\n\tCBitFieldMaskBit19 = 0x80000\n\tCBitFieldMaskBit20 = 0x100000\n\tCBitFieldMaskBit21 = 0x200000\n\tCBitFieldMaskBit22 = 0x400000\n\tCBitFieldMaskBit23 = 0x800000\n\tCBitFieldMaskBit24 = 0x1000000\n\tCBitFieldMaskBit25 = 0x2000000\n\tCBitFieldMaskBit26 = 0x4000000\n\tCBitFieldMaskBit27 = 0x8000000\n\tCBitFieldMaskBit28 = 0x10000000\n\tCBitFieldMaskBit29 = 0x20000000\n\tCBitFieldMaskBit30 = 0x40000000\n\tCBitFieldMaskBit31 = 0x80000000\n\tCBitFieldMaskBit32 = 0x100000000\n\tCBitFieldMaskBit33 = 0x200000000\n\tCBitFieldMaskBit34 = 0x400000000\n\tCBitFieldMaskBit35 = 0x800000000\n\tCBitFieldMaskBit36 = 0x1000000000\n\tCBitFieldMaskBit37 = 0x2000000000\n\tCBitFieldMaskBit38 = 0x4000000000\n\tCBitFieldMaskBit39 = 0x8000000000\n\tCBitFieldMaskBit40 = 0x10000000000\n\tCBitFieldMaskBit41 = 0x20000000000\n\tCBitFieldMaskBit42 = 0x40000000000\n\tCBitFieldMaskBit43 = 0x80000000000\n\tCBitFieldMaskBit44 = 0x100000000000\n\tCBitFieldMaskBit45 = 0x200000000000\n\tCBitFieldMaskBit46 = 0x400000000000\n\tCBitFieldMaskBit47 = 0x800000000000\n\tCBitFieldMaskBit48 = 0x1000000000000\n\tCBitFieldMaskBit49 = 0x2000000000000\n\tCBitFieldMaskBit50 = 0x4000000000000\n\tCBitFieldMaskBit51 = 0x8000000000000\n\tCBitFieldMaskBit52 = 0x10000000000000\n\tCBitFieldMaskBit53 = 0x20000000000000\n\tCBitFieldMaskBit54 = 0x40000000000000\n\tCBitFieldMaskBit55 = 0x80000000000000\n\tCBitFieldMaskBit56 = 0x100000000000000\n\tCBitFieldMaskBit57 = 0x200000000000000\n\tCBitFieldMaskBit58 = 0x400000000000000\n\tCBitFieldMaskBit59 = 0x800000000000000\n\tCBitFieldMaskBit60 = 0x1000000000000000\n\tCBitFieldMaskBit61 = 0x2000000000000000\n\tCBitFieldMaskBit62 = 0x4000000000000000\n\tCBitFieldMaskBit63 = 0x8000000000000000\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\tData   [122]byte\n\t_      uint32\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint32\n}\n\ntype Statfs_t struct {\n\tType    int32\n\tBsize   int32\n\tFrsize  int32\n\t_       [4]byte\n\tBlocks  uint64\n\tBfree   uint64\n\tFiles   uint64\n\tFfree   uint64\n\tBavail  uint64\n\tFsid    Fsid\n\tNamelen int32\n\tFlags   int32\n\tSpare   [5]int32\n\t_       [4]byte\n}\n\ntype TpacketHdr struct {\n\tStatus  uint32\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n}\n\nconst (\n\tSizeofTpacketHdr = 0x18\n)\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int32\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG = 0x20001269\n)\n\ntype CryptoUserAlg struct {\n\tName        [64]int8\n\tDriver_name [64]int8\n\tModule_name [64]int8\n\tType        uint32\n\tMask        uint32\n\tRefcnt      uint32\n\tFlags       uint32\n}\n\ntype CryptoStatAEAD struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatAKCipher struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tVerify_cnt   uint64\n\tSign_cnt     uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCipher struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCompress struct {\n\tType            [64]int8\n\tCompress_cnt    uint64\n\tCompress_tlen   uint64\n\tDecompress_cnt  uint64\n\tDecompress_tlen uint64\n\tErr_cnt         uint64\n}\n\ntype CryptoStatHash struct {\n\tType      [64]int8\n\tHash_cnt  uint64\n\tHash_tlen uint64\n\tErr_cnt   uint64\n}\n\ntype CryptoStatKPP struct {\n\tType                      [64]int8\n\tSetsecret_cnt             uint64\n\tGenerate_public_key_cnt   uint64\n\tCompute_shared_secret_cnt uint64\n\tErr_cnt                   uint64\n}\n\ntype CryptoStatRNG struct {\n\tType          [64]int8\n\tGenerate_cnt  uint64\n\tGenerate_tlen uint64\n\tSeed_cnt      uint64\n\tErr_cnt       uint64\n}\n\ntype CryptoStatLarval struct {\n\tType [64]int8\n}\n\ntype CryptoReportLarval struct {\n\tType [64]int8\n}\n\ntype CryptoReportHash struct {\n\tType       [64]int8\n\tBlocksize  uint32\n\tDigestsize uint32\n}\n\ntype CryptoReportCipher struct {\n\tType        [64]int8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n}\n\ntype CryptoReportBlkCipher struct {\n\tType        [64]int8\n\tGeniv       [64]int8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportAEAD struct {\n\tType        [64]int8\n\tGeniv       [64]int8\n\tBlocksize   uint32\n\tMaxauthsize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportComp struct {\n\tType [64]int8\n}\n\ntype CryptoReportRNG struct {\n\tType     [64]int8\n\tSeedsize uint32\n}\n\ntype CryptoReportAKCipher struct {\n\tType [64]int8\n}\n\ntype CryptoReportKPP struct {\n\tType [64]int8\n}\n\ntype CryptoReportAcomp struct {\n\tType [64]int8\n}\n\ntype LoopInfo struct {\n\tNumber           int32\n\tDevice           uint32\n\tInode            uint32\n\tRdevice          uint32\n\tOffset           int32\n\tEncrypt_type     int32\n\tEncrypt_key_size int32\n\tFlags            int32\n\tName             [64]int8\n\tEncrypt_key      [32]uint8\n\tInit             [2]uint32\n\tReserved         [4]int8\n}\n\ntype TIPCSubscr struct {\n\tSeq     TIPCServiceRange\n\tTimeout uint32\n\tFilter  uint32\n\tHandle  [8]int8\n}\n\ntype TIPCSIOCLNReq struct {\n\tPeer     uint32\n\tId       uint32\n\tLinkname [68]int8\n}\n\ntype TIPCSIOCNodeIDReq struct {\n\tPeer uint32\n\tId   [16]int8\n}\n\ntype PPSKInfo struct {\n\tAssert_sequence uint32\n\tClear_sequence  uint32\n\tAssert_tu       PPSKTime\n\tClear_tu        PPSKTime\n\tCurrent_mode    int32\n\t_               [4]byte\n}\n\nconst (\n\tPPS_GETPARAMS = 0x400470a1\n\tPPS_SETPARAMS = 0x800470a2\n\tPPS_GETCAP    = 0x400470a3\n\tPPS_FETCH     = 0xc00470a4\n)\n\nconst (\n\tPIDFD_NONBLOCK = 0x80\n)\n\ntype SysvIpcPerm struct {\n\tKey  int32\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint32\n\t_    [0]uint8\n\tSeq  uint16\n\t_    uint16\n\t_    uint32\n\t_    uint32\n}\ntype SysvShmDesc struct {\n\tPerm       SysvIpcPerm\n\tSegsz      uint32\n\tAtime      uint32\n\tDtime      uint32\n\tCtime      uint32\n\tCpid       int32\n\tLpid       int32\n\tNattch     uint32\n\tAtime_high uint16\n\tDtime_high uint16\n\tCtime_high uint16\n\t_          uint16\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go",
    "content": "// cgo -godefs -objdir=/tmp/ppc/cgo -- -Wall -Werror -static -I/tmp/ppc/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x4\n\tSizeofLong = 0x4\n)\n\ntype (\n\t_C_long int32\n)\n\ntype Timespec struct {\n\tSec  int32\n\tNsec int32\n}\n\ntype Timeval struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int32\n\tFreq      int32\n\tMaxerror  int32\n\tEsterror  int32\n\tStatus    int32\n\tConstant  int32\n\tPrecision int32\n\tTolerance int32\n\tTime      Timeval\n\tTick      int32\n\tPpsfreq   int32\n\tJitter    int32\n\tShift     int32\n\tStabil    int32\n\tJitcnt    int32\n\tCalcnt    int32\n\tErrcnt    int32\n\tStbcnt    int32\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int32\n\ntype Tms struct {\n\tUtime  int32\n\tStime  int32\n\tCutime int32\n\tCstime int32\n}\n\ntype Utimbuf struct {\n\tActime  int32\n\tModtime int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint64\n\t_       uint16\n\t_       [6]byte\n\tSize    int64\n\tBlksize int32\n\t_       [4]byte\n\tBlocks  int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\t_       uint32\n\t_       uint32\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]uint8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\t_      [4]byte\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint32\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]uint8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]uint8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [16]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x58\n\tSizeofIovec           = 0x8\n\tSizeofMsghdr          = 0x1c\n\tSizeofCmsghdr         = 0xc\n)\n\nconst (\n\tSizeofSockFprog = 0x8\n)\n\ntype PtraceRegs struct {\n\tGpr       [32]uint32\n\tNip       uint32\n\tMsr       uint32\n\tOrig_gpr3 uint32\n\tCtr       uint32\n\tLink      uint32\n\tXer       uint32\n\tCcr       uint32\n\tMq        uint32\n\tTrap      uint32\n\tDar       uint32\n\tDsisr     uint32\n\tResult    uint32\n}\n\ntype FdSet struct {\n\tBits [32]int32\n}\n\ntype Sysinfo_t struct {\n\tUptime    int32\n\tLoads     [3]uint32\n\tTotalram  uint32\n\tFreeram   uint32\n\tSharedram uint32\n\tBufferram uint32\n\tTotalswap uint32\n\tFreeswap  uint32\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint32\n\tFreehigh  uint32\n\tUnit      uint32\n\t_         [8]uint8\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint32\n\tFname  [6]uint8\n\tFpack  [6]uint8\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\t_      int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [32]uint32\n}\n\nconst _C__NSIG = 0x41\n\nconst (\n\tSIG_BLOCK   = 0x0\n\tSIG_UNBLOCK = 0x1\n\tSIG_SETMASK = 0x2\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tErrno int32\n\tCode  int32\n\t_     [116]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [19]uint8\n\tLine   uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\t_                         [6]byte\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]uint8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\t_                         [4]byte\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\t_                         [4]byte\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n\tCpu_delay_max             uint64\n\tCpu_delay_min             uint64\n\tBlkio_delay_max           uint64\n\tBlkio_delay_min           uint64\n\tSwapin_delay_max          uint64\n\tSwapin_delay_min          uint64\n\tFreepages_delay_max       uint64\n\tFreepages_delay_min       uint64\n\tThrashing_delay_max       uint64\n\tThrashing_delay_min       uint64\n\tCompact_delay_max         uint64\n\tCompact_delay_min         uint64\n\tWpcopy_delay_max          uint64\n\tWpcopy_delay_min          uint64\n\tIrq_delay_max             uint64\n\tIrq_delay_min             uint64\n}\n\ntype cpuMask uint32\n\nconst (\n\t_NCPUBITS = 0x20\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x8000000000000000\n\tCBitFieldMaskBit1  = 0x4000000000000000\n\tCBitFieldMaskBit2  = 0x2000000000000000\n\tCBitFieldMaskBit3  = 0x1000000000000000\n\tCBitFieldMaskBit4  = 0x800000000000000\n\tCBitFieldMaskBit5  = 0x400000000000000\n\tCBitFieldMaskBit6  = 0x200000000000000\n\tCBitFieldMaskBit7  = 0x100000000000000\n\tCBitFieldMaskBit8  = 0x80000000000000\n\tCBitFieldMaskBit9  = 0x40000000000000\n\tCBitFieldMaskBit10 = 0x20000000000000\n\tCBitFieldMaskBit11 = 0x10000000000000\n\tCBitFieldMaskBit12 = 0x8000000000000\n\tCBitFieldMaskBit13 = 0x4000000000000\n\tCBitFieldMaskBit14 = 0x2000000000000\n\tCBitFieldMaskBit15 = 0x1000000000000\n\tCBitFieldMaskBit16 = 0x800000000000\n\tCBitFieldMaskBit17 = 0x400000000000\n\tCBitFieldMaskBit18 = 0x200000000000\n\tCBitFieldMaskBit19 = 0x100000000000\n\tCBitFieldMaskBit20 = 0x80000000000\n\tCBitFieldMaskBit21 = 0x40000000000\n\tCBitFieldMaskBit22 = 0x20000000000\n\tCBitFieldMaskBit23 = 0x10000000000\n\tCBitFieldMaskBit24 = 0x8000000000\n\tCBitFieldMaskBit25 = 0x4000000000\n\tCBitFieldMaskBit26 = 0x2000000000\n\tCBitFieldMaskBit27 = 0x1000000000\n\tCBitFieldMaskBit28 = 0x800000000\n\tCBitFieldMaskBit29 = 0x400000000\n\tCBitFieldMaskBit30 = 0x200000000\n\tCBitFieldMaskBit31 = 0x100000000\n\tCBitFieldMaskBit32 = 0x80000000\n\tCBitFieldMaskBit33 = 0x40000000\n\tCBitFieldMaskBit34 = 0x20000000\n\tCBitFieldMaskBit35 = 0x10000000\n\tCBitFieldMaskBit36 = 0x8000000\n\tCBitFieldMaskBit37 = 0x4000000\n\tCBitFieldMaskBit38 = 0x2000000\n\tCBitFieldMaskBit39 = 0x1000000\n\tCBitFieldMaskBit40 = 0x800000\n\tCBitFieldMaskBit41 = 0x400000\n\tCBitFieldMaskBit42 = 0x200000\n\tCBitFieldMaskBit43 = 0x100000\n\tCBitFieldMaskBit44 = 0x80000\n\tCBitFieldMaskBit45 = 0x40000\n\tCBitFieldMaskBit46 = 0x20000\n\tCBitFieldMaskBit47 = 0x10000\n\tCBitFieldMaskBit48 = 0x8000\n\tCBitFieldMaskBit49 = 0x4000\n\tCBitFieldMaskBit50 = 0x2000\n\tCBitFieldMaskBit51 = 0x1000\n\tCBitFieldMaskBit52 = 0x800\n\tCBitFieldMaskBit53 = 0x400\n\tCBitFieldMaskBit54 = 0x200\n\tCBitFieldMaskBit55 = 0x100\n\tCBitFieldMaskBit56 = 0x80\n\tCBitFieldMaskBit57 = 0x40\n\tCBitFieldMaskBit58 = 0x20\n\tCBitFieldMaskBit59 = 0x10\n\tCBitFieldMaskBit60 = 0x8\n\tCBitFieldMaskBit61 = 0x4\n\tCBitFieldMaskBit62 = 0x2\n\tCBitFieldMaskBit63 = 0x1\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\tData   [122]byte\n\t_      uint32\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint32\n}\n\ntype Statfs_t struct {\n\tType    int32\n\tBsize   int32\n\tBlocks  uint64\n\tBfree   uint64\n\tBavail  uint64\n\tFiles   uint64\n\tFfree   uint64\n\tFsid    Fsid\n\tNamelen int32\n\tFrsize  int32\n\tFlags   int32\n\tSpare   [4]int32\n\t_       [4]byte\n}\n\ntype TpacketHdr struct {\n\tStatus  uint32\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n}\n\nconst (\n\tSizeofTpacketHdr = 0x18\n)\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int32\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG = 0x20001269\n)\n\ntype CryptoUserAlg struct {\n\tName        [64]uint8\n\tDriver_name [64]uint8\n\tModule_name [64]uint8\n\tType        uint32\n\tMask        uint32\n\tRefcnt      uint32\n\tFlags       uint32\n}\n\ntype CryptoStatAEAD struct {\n\tType         [64]uint8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatAKCipher struct {\n\tType         [64]uint8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tVerify_cnt   uint64\n\tSign_cnt     uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCipher struct {\n\tType         [64]uint8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCompress struct {\n\tType            [64]uint8\n\tCompress_cnt    uint64\n\tCompress_tlen   uint64\n\tDecompress_cnt  uint64\n\tDecompress_tlen uint64\n\tErr_cnt         uint64\n}\n\ntype CryptoStatHash struct {\n\tType      [64]uint8\n\tHash_cnt  uint64\n\tHash_tlen uint64\n\tErr_cnt   uint64\n}\n\ntype CryptoStatKPP struct {\n\tType                      [64]uint8\n\tSetsecret_cnt             uint64\n\tGenerate_public_key_cnt   uint64\n\tCompute_shared_secret_cnt uint64\n\tErr_cnt                   uint64\n}\n\ntype CryptoStatRNG struct {\n\tType          [64]uint8\n\tGenerate_cnt  uint64\n\tGenerate_tlen uint64\n\tSeed_cnt      uint64\n\tErr_cnt       uint64\n}\n\ntype CryptoStatLarval struct {\n\tType [64]uint8\n}\n\ntype CryptoReportLarval struct {\n\tType [64]uint8\n}\n\ntype CryptoReportHash struct {\n\tType       [64]uint8\n\tBlocksize  uint32\n\tDigestsize uint32\n}\n\ntype CryptoReportCipher struct {\n\tType        [64]uint8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n}\n\ntype CryptoReportBlkCipher struct {\n\tType        [64]uint8\n\tGeniv       [64]uint8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportAEAD struct {\n\tType        [64]uint8\n\tGeniv       [64]uint8\n\tBlocksize   uint32\n\tMaxauthsize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportComp struct {\n\tType [64]uint8\n}\n\ntype CryptoReportRNG struct {\n\tType     [64]uint8\n\tSeedsize uint32\n}\n\ntype CryptoReportAKCipher struct {\n\tType [64]uint8\n}\n\ntype CryptoReportKPP struct {\n\tType [64]uint8\n}\n\ntype CryptoReportAcomp struct {\n\tType [64]uint8\n}\n\ntype LoopInfo struct {\n\tNumber           int32\n\tDevice           uint32\n\tInode            uint32\n\tRdevice          uint32\n\tOffset           int32\n\tEncrypt_type     int32\n\tEncrypt_key_size int32\n\tFlags            int32\n\tName             [64]uint8\n\tEncrypt_key      [32]uint8\n\tInit             [2]uint32\n\tReserved         [4]uint8\n}\n\ntype TIPCSubscr struct {\n\tSeq     TIPCServiceRange\n\tTimeout uint32\n\tFilter  uint32\n\tHandle  [8]uint8\n}\n\ntype TIPCSIOCLNReq struct {\n\tPeer     uint32\n\tId       uint32\n\tLinkname [68]uint8\n}\n\ntype TIPCSIOCNodeIDReq struct {\n\tPeer uint32\n\tId   [16]uint8\n}\n\ntype PPSKInfo struct {\n\tAssert_sequence uint32\n\tClear_sequence  uint32\n\tAssert_tu       PPSKTime\n\tClear_tu        PPSKTime\n\tCurrent_mode    int32\n\t_               [4]byte\n}\n\nconst (\n\tPPS_GETPARAMS = 0x400470a1\n\tPPS_SETPARAMS = 0x800470a2\n\tPPS_GETCAP    = 0x400470a3\n\tPPS_FETCH     = 0xc00470a4\n)\n\nconst (\n\tPIDFD_NONBLOCK = 0x800\n)\n\ntype SysvIpcPerm struct {\n\tKey  int32\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint32\n\tSeq  uint32\n\t_    uint32\n\t_    uint64\n\t_    uint64\n}\ntype SysvShmDesc struct {\n\tPerm       SysvIpcPerm\n\tAtime_high uint32\n\tAtime      uint32\n\tDtime_high uint32\n\tDtime      uint32\n\tCtime_high uint32\n\tCtime      uint32\n\t_          uint32\n\tSegsz      uint32\n\tCpid       int32\n\tLpid       int32\n\tNattch     uint32\n\t_          uint32\n\t_          uint32\n\t_          [4]byte\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go",
    "content": "// cgo -godefs -objdir=/tmp/ppc64/cgo -- -Wall -Werror -static -I/tmp/ppc64/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc64 && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x8\n\tSizeofLong = 0x8\n)\n\ntype (\n\t_C_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int64\n\tFreq      int64\n\tMaxerror  int64\n\tEsterror  int64\n\tStatus    int32\n\tConstant  int64\n\tPrecision int64\n\tTolerance int64\n\tTime      Timeval\n\tTick      int64\n\tPpsfreq   int64\n\tJitter    int64\n\tShift     int32\n\tStabil    int64\n\tJitcnt    int64\n\tCalcnt    int64\n\tErrcnt    int64\n\tStbcnt    int64\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int64\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tNlink   uint64\n\tMode    uint32\n\tUid     uint32\n\tGid     uint32\n\t_       int32\n\tRdev    uint64\n\tSize    int64\n\tBlksize int64\n\tBlocks  int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\t_       uint64\n\t_       uint64\n\t_       uint64\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]uint8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint64\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]uint8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]uint8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint64\n\tControl    *byte\n\tControllen uint64\n\tFlags      int32\n\t_          [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint64\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [24]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x60\n\tSizeofIovec           = 0x10\n\tSizeofMsghdr          = 0x38\n\tSizeofCmsghdr         = 0x10\n)\n\nconst (\n\tSizeofSockFprog = 0x10\n)\n\ntype PtraceRegs struct {\n\tGpr       [32]uint64\n\tNip       uint64\n\tMsr       uint64\n\tOrig_gpr3 uint64\n\tCtr       uint64\n\tLink      uint64\n\tXer       uint64\n\tCcr       uint64\n\tSofte     uint64\n\tTrap      uint64\n\tDar       uint64\n\tDsisr     uint64\n\tResult    uint64\n}\n\ntype FdSet struct {\n\tBits [16]int64\n}\n\ntype Sysinfo_t struct {\n\tUptime    int64\n\tLoads     [3]uint64\n\tTotalram  uint64\n\tFreeram   uint64\n\tSharedram uint64\n\tBufferram uint64\n\tTotalswap uint64\n\tFreeswap  uint64\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint64\n\tFreehigh  uint64\n\tUnit      uint32\n\t_         [0]uint8\n\t_         [4]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint64\n\tFname  [6]uint8\n\tFpack  [6]uint8\n\t_      [4]byte\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\t_      int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst _C__NSIG = 0x41\n\nconst (\n\tSIG_BLOCK   = 0x0\n\tSIG_UNBLOCK = 0x1\n\tSIG_SETMASK = 0x2\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tErrno int32\n\tCode  int32\n\t_     int32\n\t_     [112]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [19]uint8\n\tLine   uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]uint8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n\tCpu_delay_max             uint64\n\tCpu_delay_min             uint64\n\tBlkio_delay_max           uint64\n\tBlkio_delay_min           uint64\n\tSwapin_delay_max          uint64\n\tSwapin_delay_min          uint64\n\tFreepages_delay_max       uint64\n\tFreepages_delay_min       uint64\n\tThrashing_delay_max       uint64\n\tThrashing_delay_min       uint64\n\tCompact_delay_max         uint64\n\tCompact_delay_min         uint64\n\tWpcopy_delay_max          uint64\n\tWpcopy_delay_min          uint64\n\tIrq_delay_max             uint64\n\tIrq_delay_min             uint64\n}\n\ntype cpuMask uint64\n\nconst (\n\t_NCPUBITS = 0x40\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x8000000000000000\n\tCBitFieldMaskBit1  = 0x4000000000000000\n\tCBitFieldMaskBit2  = 0x2000000000000000\n\tCBitFieldMaskBit3  = 0x1000000000000000\n\tCBitFieldMaskBit4  = 0x800000000000000\n\tCBitFieldMaskBit5  = 0x400000000000000\n\tCBitFieldMaskBit6  = 0x200000000000000\n\tCBitFieldMaskBit7  = 0x100000000000000\n\tCBitFieldMaskBit8  = 0x80000000000000\n\tCBitFieldMaskBit9  = 0x40000000000000\n\tCBitFieldMaskBit10 = 0x20000000000000\n\tCBitFieldMaskBit11 = 0x10000000000000\n\tCBitFieldMaskBit12 = 0x8000000000000\n\tCBitFieldMaskBit13 = 0x4000000000000\n\tCBitFieldMaskBit14 = 0x2000000000000\n\tCBitFieldMaskBit15 = 0x1000000000000\n\tCBitFieldMaskBit16 = 0x800000000000\n\tCBitFieldMaskBit17 = 0x400000000000\n\tCBitFieldMaskBit18 = 0x200000000000\n\tCBitFieldMaskBit19 = 0x100000000000\n\tCBitFieldMaskBit20 = 0x80000000000\n\tCBitFieldMaskBit21 = 0x40000000000\n\tCBitFieldMaskBit22 = 0x20000000000\n\tCBitFieldMaskBit23 = 0x10000000000\n\tCBitFieldMaskBit24 = 0x8000000000\n\tCBitFieldMaskBit25 = 0x4000000000\n\tCBitFieldMaskBit26 = 0x2000000000\n\tCBitFieldMaskBit27 = 0x1000000000\n\tCBitFieldMaskBit28 = 0x800000000\n\tCBitFieldMaskBit29 = 0x400000000\n\tCBitFieldMaskBit30 = 0x200000000\n\tCBitFieldMaskBit31 = 0x100000000\n\tCBitFieldMaskBit32 = 0x80000000\n\tCBitFieldMaskBit33 = 0x40000000\n\tCBitFieldMaskBit34 = 0x20000000\n\tCBitFieldMaskBit35 = 0x10000000\n\tCBitFieldMaskBit36 = 0x8000000\n\tCBitFieldMaskBit37 = 0x4000000\n\tCBitFieldMaskBit38 = 0x2000000\n\tCBitFieldMaskBit39 = 0x1000000\n\tCBitFieldMaskBit40 = 0x800000\n\tCBitFieldMaskBit41 = 0x400000\n\tCBitFieldMaskBit42 = 0x200000\n\tCBitFieldMaskBit43 = 0x100000\n\tCBitFieldMaskBit44 = 0x80000\n\tCBitFieldMaskBit45 = 0x40000\n\tCBitFieldMaskBit46 = 0x20000\n\tCBitFieldMaskBit47 = 0x10000\n\tCBitFieldMaskBit48 = 0x8000\n\tCBitFieldMaskBit49 = 0x4000\n\tCBitFieldMaskBit50 = 0x2000\n\tCBitFieldMaskBit51 = 0x1000\n\tCBitFieldMaskBit52 = 0x800\n\tCBitFieldMaskBit53 = 0x400\n\tCBitFieldMaskBit54 = 0x200\n\tCBitFieldMaskBit55 = 0x100\n\tCBitFieldMaskBit56 = 0x80\n\tCBitFieldMaskBit57 = 0x40\n\tCBitFieldMaskBit58 = 0x20\n\tCBitFieldMaskBit59 = 0x10\n\tCBitFieldMaskBit60 = 0x8\n\tCBitFieldMaskBit61 = 0x4\n\tCBitFieldMaskBit62 = 0x2\n\tCBitFieldMaskBit63 = 0x1\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\tData   [118]byte\n\t_      uint64\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint64\n}\n\ntype Statfs_t struct {\n\tType    int64\n\tBsize   int64\n\tBlocks  uint64\n\tBfree   uint64\n\tBavail  uint64\n\tFiles   uint64\n\tFfree   uint64\n\tFsid    Fsid\n\tNamelen int64\n\tFrsize  int64\n\tFlags   int64\n\tSpare   [4]int64\n}\n\ntype TpacketHdr struct {\n\tStatus  uint64\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n\t_       [4]byte\n}\n\nconst (\n\tSizeofTpacketHdr = 0x20\n)\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int64\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG = 0x20001269\n)\n\ntype CryptoUserAlg struct {\n\tName        [64]uint8\n\tDriver_name [64]uint8\n\tModule_name [64]uint8\n\tType        uint32\n\tMask        uint32\n\tRefcnt      uint32\n\tFlags       uint32\n}\n\ntype CryptoStatAEAD struct {\n\tType         [64]uint8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatAKCipher struct {\n\tType         [64]uint8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tVerify_cnt   uint64\n\tSign_cnt     uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCipher struct {\n\tType         [64]uint8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCompress struct {\n\tType            [64]uint8\n\tCompress_cnt    uint64\n\tCompress_tlen   uint64\n\tDecompress_cnt  uint64\n\tDecompress_tlen uint64\n\tErr_cnt         uint64\n}\n\ntype CryptoStatHash struct {\n\tType      [64]uint8\n\tHash_cnt  uint64\n\tHash_tlen uint64\n\tErr_cnt   uint64\n}\n\ntype CryptoStatKPP struct {\n\tType                      [64]uint8\n\tSetsecret_cnt             uint64\n\tGenerate_public_key_cnt   uint64\n\tCompute_shared_secret_cnt uint64\n\tErr_cnt                   uint64\n}\n\ntype CryptoStatRNG struct {\n\tType          [64]uint8\n\tGenerate_cnt  uint64\n\tGenerate_tlen uint64\n\tSeed_cnt      uint64\n\tErr_cnt       uint64\n}\n\ntype CryptoStatLarval struct {\n\tType [64]uint8\n}\n\ntype CryptoReportLarval struct {\n\tType [64]uint8\n}\n\ntype CryptoReportHash struct {\n\tType       [64]uint8\n\tBlocksize  uint32\n\tDigestsize uint32\n}\n\ntype CryptoReportCipher struct {\n\tType        [64]uint8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n}\n\ntype CryptoReportBlkCipher struct {\n\tType        [64]uint8\n\tGeniv       [64]uint8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportAEAD struct {\n\tType        [64]uint8\n\tGeniv       [64]uint8\n\tBlocksize   uint32\n\tMaxauthsize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportComp struct {\n\tType [64]uint8\n}\n\ntype CryptoReportRNG struct {\n\tType     [64]uint8\n\tSeedsize uint32\n}\n\ntype CryptoReportAKCipher struct {\n\tType [64]uint8\n}\n\ntype CryptoReportKPP struct {\n\tType [64]uint8\n}\n\ntype CryptoReportAcomp struct {\n\tType [64]uint8\n}\n\ntype LoopInfo struct {\n\tNumber           int32\n\tDevice           uint64\n\tInode            uint64\n\tRdevice          uint64\n\tOffset           int32\n\tEncrypt_type     int32\n\tEncrypt_key_size int32\n\tFlags            int32\n\tName             [64]uint8\n\tEncrypt_key      [32]uint8\n\tInit             [2]uint64\n\tReserved         [4]uint8\n\t_                [4]byte\n}\n\ntype TIPCSubscr struct {\n\tSeq     TIPCServiceRange\n\tTimeout uint32\n\tFilter  uint32\n\tHandle  [8]uint8\n}\n\ntype TIPCSIOCLNReq struct {\n\tPeer     uint32\n\tId       uint32\n\tLinkname [68]uint8\n}\n\ntype TIPCSIOCNodeIDReq struct {\n\tPeer uint32\n\tId   [16]uint8\n}\n\ntype PPSKInfo struct {\n\tAssert_sequence uint32\n\tClear_sequence  uint32\n\tAssert_tu       PPSKTime\n\tClear_tu        PPSKTime\n\tCurrent_mode    int32\n\t_               [4]byte\n}\n\nconst (\n\tPPS_GETPARAMS = 0x400870a1\n\tPPS_SETPARAMS = 0x800870a2\n\tPPS_GETCAP    = 0x400870a3\n\tPPS_FETCH     = 0xc00870a4\n)\n\nconst (\n\tPIDFD_NONBLOCK = 0x800\n)\n\ntype SysvIpcPerm struct {\n\tKey  int32\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint32\n\tSeq  uint32\n\t_    uint32\n\t_    uint64\n\t_    uint64\n}\ntype SysvShmDesc struct {\n\tPerm   SysvIpcPerm\n\tAtime  int64\n\tDtime  int64\n\tCtime  int64\n\tSegsz  uint64\n\tCpid   int32\n\tLpid   int32\n\tNattch uint64\n\t_      uint64\n\t_      uint64\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go",
    "content": "// cgo -godefs -objdir=/tmp/ppc64le/cgo -- -Wall -Werror -static -I/tmp/ppc64le/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc64le && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x8\n\tSizeofLong = 0x8\n)\n\ntype (\n\t_C_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int64\n\tFreq      int64\n\tMaxerror  int64\n\tEsterror  int64\n\tStatus    int32\n\tConstant  int64\n\tPrecision int64\n\tTolerance int64\n\tTime      Timeval\n\tTick      int64\n\tPpsfreq   int64\n\tJitter    int64\n\tShift     int32\n\tStabil    int64\n\tJitcnt    int64\n\tCalcnt    int64\n\tErrcnt    int64\n\tStbcnt    int64\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int64\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tNlink   uint64\n\tMode    uint32\n\tUid     uint32\n\tGid     uint32\n\t_       int32\n\tRdev    uint64\n\tSize    int64\n\tBlksize int64\n\tBlocks  int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\t_       uint64\n\t_       uint64\n\t_       uint64\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]uint8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint64\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]uint8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]uint8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint64\n\tControl    *byte\n\tControllen uint64\n\tFlags      int32\n\t_          [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint64\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [24]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x60\n\tSizeofIovec           = 0x10\n\tSizeofMsghdr          = 0x38\n\tSizeofCmsghdr         = 0x10\n)\n\nconst (\n\tSizeofSockFprog = 0x10\n)\n\ntype PtraceRegs struct {\n\tGpr       [32]uint64\n\tNip       uint64\n\tMsr       uint64\n\tOrig_gpr3 uint64\n\tCtr       uint64\n\tLink      uint64\n\tXer       uint64\n\tCcr       uint64\n\tSofte     uint64\n\tTrap      uint64\n\tDar       uint64\n\tDsisr     uint64\n\tResult    uint64\n}\n\ntype FdSet struct {\n\tBits [16]int64\n}\n\ntype Sysinfo_t struct {\n\tUptime    int64\n\tLoads     [3]uint64\n\tTotalram  uint64\n\tFreeram   uint64\n\tSharedram uint64\n\tBufferram uint64\n\tTotalswap uint64\n\tFreeswap  uint64\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint64\n\tFreehigh  uint64\n\tUnit      uint32\n\t_         [0]uint8\n\t_         [4]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint64\n\tFname  [6]uint8\n\tFpack  [6]uint8\n\t_      [4]byte\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\t_      int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst _C__NSIG = 0x41\n\nconst (\n\tSIG_BLOCK   = 0x0\n\tSIG_UNBLOCK = 0x1\n\tSIG_SETMASK = 0x2\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tErrno int32\n\tCode  int32\n\t_     int32\n\t_     [112]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [19]uint8\n\tLine   uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]uint8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n\tCpu_delay_max             uint64\n\tCpu_delay_min             uint64\n\tBlkio_delay_max           uint64\n\tBlkio_delay_min           uint64\n\tSwapin_delay_max          uint64\n\tSwapin_delay_min          uint64\n\tFreepages_delay_max       uint64\n\tFreepages_delay_min       uint64\n\tThrashing_delay_max       uint64\n\tThrashing_delay_min       uint64\n\tCompact_delay_max         uint64\n\tCompact_delay_min         uint64\n\tWpcopy_delay_max          uint64\n\tWpcopy_delay_min          uint64\n\tIrq_delay_max             uint64\n\tIrq_delay_min             uint64\n}\n\ntype cpuMask uint64\n\nconst (\n\t_NCPUBITS = 0x40\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x1\n\tCBitFieldMaskBit1  = 0x2\n\tCBitFieldMaskBit2  = 0x4\n\tCBitFieldMaskBit3  = 0x8\n\tCBitFieldMaskBit4  = 0x10\n\tCBitFieldMaskBit5  = 0x20\n\tCBitFieldMaskBit6  = 0x40\n\tCBitFieldMaskBit7  = 0x80\n\tCBitFieldMaskBit8  = 0x100\n\tCBitFieldMaskBit9  = 0x200\n\tCBitFieldMaskBit10 = 0x400\n\tCBitFieldMaskBit11 = 0x800\n\tCBitFieldMaskBit12 = 0x1000\n\tCBitFieldMaskBit13 = 0x2000\n\tCBitFieldMaskBit14 = 0x4000\n\tCBitFieldMaskBit15 = 0x8000\n\tCBitFieldMaskBit16 = 0x10000\n\tCBitFieldMaskBit17 = 0x20000\n\tCBitFieldMaskBit18 = 0x40000\n\tCBitFieldMaskBit19 = 0x80000\n\tCBitFieldMaskBit20 = 0x100000\n\tCBitFieldMaskBit21 = 0x200000\n\tCBitFieldMaskBit22 = 0x400000\n\tCBitFieldMaskBit23 = 0x800000\n\tCBitFieldMaskBit24 = 0x1000000\n\tCBitFieldMaskBit25 = 0x2000000\n\tCBitFieldMaskBit26 = 0x4000000\n\tCBitFieldMaskBit27 = 0x8000000\n\tCBitFieldMaskBit28 = 0x10000000\n\tCBitFieldMaskBit29 = 0x20000000\n\tCBitFieldMaskBit30 = 0x40000000\n\tCBitFieldMaskBit31 = 0x80000000\n\tCBitFieldMaskBit32 = 0x100000000\n\tCBitFieldMaskBit33 = 0x200000000\n\tCBitFieldMaskBit34 = 0x400000000\n\tCBitFieldMaskBit35 = 0x800000000\n\tCBitFieldMaskBit36 = 0x1000000000\n\tCBitFieldMaskBit37 = 0x2000000000\n\tCBitFieldMaskBit38 = 0x4000000000\n\tCBitFieldMaskBit39 = 0x8000000000\n\tCBitFieldMaskBit40 = 0x10000000000\n\tCBitFieldMaskBit41 = 0x20000000000\n\tCBitFieldMaskBit42 = 0x40000000000\n\tCBitFieldMaskBit43 = 0x80000000000\n\tCBitFieldMaskBit44 = 0x100000000000\n\tCBitFieldMaskBit45 = 0x200000000000\n\tCBitFieldMaskBit46 = 0x400000000000\n\tCBitFieldMaskBit47 = 0x800000000000\n\tCBitFieldMaskBit48 = 0x1000000000000\n\tCBitFieldMaskBit49 = 0x2000000000000\n\tCBitFieldMaskBit50 = 0x4000000000000\n\tCBitFieldMaskBit51 = 0x8000000000000\n\tCBitFieldMaskBit52 = 0x10000000000000\n\tCBitFieldMaskBit53 = 0x20000000000000\n\tCBitFieldMaskBit54 = 0x40000000000000\n\tCBitFieldMaskBit55 = 0x80000000000000\n\tCBitFieldMaskBit56 = 0x100000000000000\n\tCBitFieldMaskBit57 = 0x200000000000000\n\tCBitFieldMaskBit58 = 0x400000000000000\n\tCBitFieldMaskBit59 = 0x800000000000000\n\tCBitFieldMaskBit60 = 0x1000000000000000\n\tCBitFieldMaskBit61 = 0x2000000000000000\n\tCBitFieldMaskBit62 = 0x4000000000000000\n\tCBitFieldMaskBit63 = 0x8000000000000000\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\tData   [118]byte\n\t_      uint64\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint64\n}\n\ntype Statfs_t struct {\n\tType    int64\n\tBsize   int64\n\tBlocks  uint64\n\tBfree   uint64\n\tBavail  uint64\n\tFiles   uint64\n\tFfree   uint64\n\tFsid    Fsid\n\tNamelen int64\n\tFrsize  int64\n\tFlags   int64\n\tSpare   [4]int64\n}\n\ntype TpacketHdr struct {\n\tStatus  uint64\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n\t_       [4]byte\n}\n\nconst (\n\tSizeofTpacketHdr = 0x20\n)\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int64\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG = 0x20001269\n)\n\ntype CryptoUserAlg struct {\n\tName        [64]uint8\n\tDriver_name [64]uint8\n\tModule_name [64]uint8\n\tType        uint32\n\tMask        uint32\n\tRefcnt      uint32\n\tFlags       uint32\n}\n\ntype CryptoStatAEAD struct {\n\tType         [64]uint8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatAKCipher struct {\n\tType         [64]uint8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tVerify_cnt   uint64\n\tSign_cnt     uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCipher struct {\n\tType         [64]uint8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCompress struct {\n\tType            [64]uint8\n\tCompress_cnt    uint64\n\tCompress_tlen   uint64\n\tDecompress_cnt  uint64\n\tDecompress_tlen uint64\n\tErr_cnt         uint64\n}\n\ntype CryptoStatHash struct {\n\tType      [64]uint8\n\tHash_cnt  uint64\n\tHash_tlen uint64\n\tErr_cnt   uint64\n}\n\ntype CryptoStatKPP struct {\n\tType                      [64]uint8\n\tSetsecret_cnt             uint64\n\tGenerate_public_key_cnt   uint64\n\tCompute_shared_secret_cnt uint64\n\tErr_cnt                   uint64\n}\n\ntype CryptoStatRNG struct {\n\tType          [64]uint8\n\tGenerate_cnt  uint64\n\tGenerate_tlen uint64\n\tSeed_cnt      uint64\n\tErr_cnt       uint64\n}\n\ntype CryptoStatLarval struct {\n\tType [64]uint8\n}\n\ntype CryptoReportLarval struct {\n\tType [64]uint8\n}\n\ntype CryptoReportHash struct {\n\tType       [64]uint8\n\tBlocksize  uint32\n\tDigestsize uint32\n}\n\ntype CryptoReportCipher struct {\n\tType        [64]uint8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n}\n\ntype CryptoReportBlkCipher struct {\n\tType        [64]uint8\n\tGeniv       [64]uint8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportAEAD struct {\n\tType        [64]uint8\n\tGeniv       [64]uint8\n\tBlocksize   uint32\n\tMaxauthsize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportComp struct {\n\tType [64]uint8\n}\n\ntype CryptoReportRNG struct {\n\tType     [64]uint8\n\tSeedsize uint32\n}\n\ntype CryptoReportAKCipher struct {\n\tType [64]uint8\n}\n\ntype CryptoReportKPP struct {\n\tType [64]uint8\n}\n\ntype CryptoReportAcomp struct {\n\tType [64]uint8\n}\n\ntype LoopInfo struct {\n\tNumber           int32\n\tDevice           uint64\n\tInode            uint64\n\tRdevice          uint64\n\tOffset           int32\n\tEncrypt_type     int32\n\tEncrypt_key_size int32\n\tFlags            int32\n\tName             [64]uint8\n\tEncrypt_key      [32]uint8\n\tInit             [2]uint64\n\tReserved         [4]uint8\n\t_                [4]byte\n}\n\ntype TIPCSubscr struct {\n\tSeq     TIPCServiceRange\n\tTimeout uint32\n\tFilter  uint32\n\tHandle  [8]uint8\n}\n\ntype TIPCSIOCLNReq struct {\n\tPeer     uint32\n\tId       uint32\n\tLinkname [68]uint8\n}\n\ntype TIPCSIOCNodeIDReq struct {\n\tPeer uint32\n\tId   [16]uint8\n}\n\ntype PPSKInfo struct {\n\tAssert_sequence uint32\n\tClear_sequence  uint32\n\tAssert_tu       PPSKTime\n\tClear_tu        PPSKTime\n\tCurrent_mode    int32\n\t_               [4]byte\n}\n\nconst (\n\tPPS_GETPARAMS = 0x400870a1\n\tPPS_SETPARAMS = 0x800870a2\n\tPPS_GETCAP    = 0x400870a3\n\tPPS_FETCH     = 0xc00870a4\n)\n\nconst (\n\tPIDFD_NONBLOCK = 0x800\n)\n\ntype SysvIpcPerm struct {\n\tKey  int32\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint32\n\tSeq  uint32\n\t_    uint32\n\t_    uint64\n\t_    uint64\n}\ntype SysvShmDesc struct {\n\tPerm   SysvIpcPerm\n\tAtime  int64\n\tDtime  int64\n\tCtime  int64\n\tSegsz  uint64\n\tCpid   int32\n\tLpid   int32\n\tNattch uint64\n\t_      uint64\n\t_      uint64\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go",
    "content": "// cgo -godefs -objdir=/tmp/riscv64/cgo -- -Wall -Werror -static -I/tmp/riscv64/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build riscv64 && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x8\n\tSizeofLong = 0x8\n)\n\ntype (\n\t_C_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int64\n\tFreq      int64\n\tMaxerror  int64\n\tEsterror  int64\n\tStatus    int32\n\tConstant  int64\n\tPrecision int64\n\tTolerance int64\n\tTime      Timeval\n\tTick      int64\n\tPpsfreq   int64\n\tJitter    int64\n\tShift     int32\n\tStabil    int64\n\tJitcnt    int64\n\tCalcnt    int64\n\tErrcnt    int64\n\tStbcnt    int64\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int64\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint64\n\t_       uint64\n\tSize    int64\n\tBlksize int32\n\t_       int32\n\tBlocks  int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\t_       [2]int32\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]uint8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint64\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]uint8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]uint8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint64\n\tControl    *byte\n\tControllen uint64\n\tFlags      int32\n\t_          [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint64\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [24]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x60\n\tSizeofIovec           = 0x10\n\tSizeofMsghdr          = 0x38\n\tSizeofCmsghdr         = 0x10\n)\n\nconst (\n\tSizeofSockFprog = 0x10\n)\n\ntype PtraceRegs struct {\n\tPc  uint64\n\tRa  uint64\n\tSp  uint64\n\tGp  uint64\n\tTp  uint64\n\tT0  uint64\n\tT1  uint64\n\tT2  uint64\n\tS0  uint64\n\tS1  uint64\n\tA0  uint64\n\tA1  uint64\n\tA2  uint64\n\tA3  uint64\n\tA4  uint64\n\tA5  uint64\n\tA6  uint64\n\tA7  uint64\n\tS2  uint64\n\tS3  uint64\n\tS4  uint64\n\tS5  uint64\n\tS6  uint64\n\tS7  uint64\n\tS8  uint64\n\tS9  uint64\n\tS10 uint64\n\tS11 uint64\n\tT3  uint64\n\tT4  uint64\n\tT5  uint64\n\tT6  uint64\n}\n\ntype FdSet struct {\n\tBits [16]int64\n}\n\ntype Sysinfo_t struct {\n\tUptime    int64\n\tLoads     [3]uint64\n\tTotalram  uint64\n\tFreeram   uint64\n\tSharedram uint64\n\tBufferram uint64\n\tTotalswap uint64\n\tFreeswap  uint64\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint64\n\tFreehigh  uint64\n\tUnit      uint32\n\t_         [0]uint8\n\t_         [4]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint64\n\tFname  [6]uint8\n\tFpack  [6]uint8\n\t_      [4]byte\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\t_      int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst _C__NSIG = 0x41\n\nconst (\n\tSIG_BLOCK   = 0x0\n\tSIG_UNBLOCK = 0x1\n\tSIG_SETMASK = 0x2\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tErrno int32\n\tCode  int32\n\t_     int32\n\t_     [112]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [19]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]uint8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n\tCpu_delay_max             uint64\n\tCpu_delay_min             uint64\n\tBlkio_delay_max           uint64\n\tBlkio_delay_min           uint64\n\tSwapin_delay_max          uint64\n\tSwapin_delay_min          uint64\n\tFreepages_delay_max       uint64\n\tFreepages_delay_min       uint64\n\tThrashing_delay_max       uint64\n\tThrashing_delay_min       uint64\n\tCompact_delay_max         uint64\n\tCompact_delay_min         uint64\n\tWpcopy_delay_max          uint64\n\tWpcopy_delay_min          uint64\n\tIrq_delay_max             uint64\n\tIrq_delay_min             uint64\n}\n\ntype cpuMask uint64\n\nconst (\n\t_NCPUBITS = 0x40\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x1\n\tCBitFieldMaskBit1  = 0x2\n\tCBitFieldMaskBit2  = 0x4\n\tCBitFieldMaskBit3  = 0x8\n\tCBitFieldMaskBit4  = 0x10\n\tCBitFieldMaskBit5  = 0x20\n\tCBitFieldMaskBit6  = 0x40\n\tCBitFieldMaskBit7  = 0x80\n\tCBitFieldMaskBit8  = 0x100\n\tCBitFieldMaskBit9  = 0x200\n\tCBitFieldMaskBit10 = 0x400\n\tCBitFieldMaskBit11 = 0x800\n\tCBitFieldMaskBit12 = 0x1000\n\tCBitFieldMaskBit13 = 0x2000\n\tCBitFieldMaskBit14 = 0x4000\n\tCBitFieldMaskBit15 = 0x8000\n\tCBitFieldMaskBit16 = 0x10000\n\tCBitFieldMaskBit17 = 0x20000\n\tCBitFieldMaskBit18 = 0x40000\n\tCBitFieldMaskBit19 = 0x80000\n\tCBitFieldMaskBit20 = 0x100000\n\tCBitFieldMaskBit21 = 0x200000\n\tCBitFieldMaskBit22 = 0x400000\n\tCBitFieldMaskBit23 = 0x800000\n\tCBitFieldMaskBit24 = 0x1000000\n\tCBitFieldMaskBit25 = 0x2000000\n\tCBitFieldMaskBit26 = 0x4000000\n\tCBitFieldMaskBit27 = 0x8000000\n\tCBitFieldMaskBit28 = 0x10000000\n\tCBitFieldMaskBit29 = 0x20000000\n\tCBitFieldMaskBit30 = 0x40000000\n\tCBitFieldMaskBit31 = 0x80000000\n\tCBitFieldMaskBit32 = 0x100000000\n\tCBitFieldMaskBit33 = 0x200000000\n\tCBitFieldMaskBit34 = 0x400000000\n\tCBitFieldMaskBit35 = 0x800000000\n\tCBitFieldMaskBit36 = 0x1000000000\n\tCBitFieldMaskBit37 = 0x2000000000\n\tCBitFieldMaskBit38 = 0x4000000000\n\tCBitFieldMaskBit39 = 0x8000000000\n\tCBitFieldMaskBit40 = 0x10000000000\n\tCBitFieldMaskBit41 = 0x20000000000\n\tCBitFieldMaskBit42 = 0x40000000000\n\tCBitFieldMaskBit43 = 0x80000000000\n\tCBitFieldMaskBit44 = 0x100000000000\n\tCBitFieldMaskBit45 = 0x200000000000\n\tCBitFieldMaskBit46 = 0x400000000000\n\tCBitFieldMaskBit47 = 0x800000000000\n\tCBitFieldMaskBit48 = 0x1000000000000\n\tCBitFieldMaskBit49 = 0x2000000000000\n\tCBitFieldMaskBit50 = 0x4000000000000\n\tCBitFieldMaskBit51 = 0x8000000000000\n\tCBitFieldMaskBit52 = 0x10000000000000\n\tCBitFieldMaskBit53 = 0x20000000000000\n\tCBitFieldMaskBit54 = 0x40000000000000\n\tCBitFieldMaskBit55 = 0x80000000000000\n\tCBitFieldMaskBit56 = 0x100000000000000\n\tCBitFieldMaskBit57 = 0x200000000000000\n\tCBitFieldMaskBit58 = 0x400000000000000\n\tCBitFieldMaskBit59 = 0x800000000000000\n\tCBitFieldMaskBit60 = 0x1000000000000000\n\tCBitFieldMaskBit61 = 0x2000000000000000\n\tCBitFieldMaskBit62 = 0x4000000000000000\n\tCBitFieldMaskBit63 = 0x8000000000000000\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\tData   [118]byte\n\t_      uint64\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint64\n}\n\ntype Statfs_t struct {\n\tType    int64\n\tBsize   int64\n\tBlocks  uint64\n\tBfree   uint64\n\tBavail  uint64\n\tFiles   uint64\n\tFfree   uint64\n\tFsid    Fsid\n\tNamelen int64\n\tFrsize  int64\n\tFlags   int64\n\tSpare   [4]int64\n}\n\ntype TpacketHdr struct {\n\tStatus  uint64\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n\t_       [4]byte\n}\n\nconst (\n\tSizeofTpacketHdr = 0x20\n)\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int64\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG = 0x1269\n)\n\ntype CryptoUserAlg struct {\n\tName        [64]uint8\n\tDriver_name [64]uint8\n\tModule_name [64]uint8\n\tType        uint32\n\tMask        uint32\n\tRefcnt      uint32\n\tFlags       uint32\n}\n\ntype CryptoStatAEAD struct {\n\tType         [64]uint8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatAKCipher struct {\n\tType         [64]uint8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tVerify_cnt   uint64\n\tSign_cnt     uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCipher struct {\n\tType         [64]uint8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCompress struct {\n\tType            [64]uint8\n\tCompress_cnt    uint64\n\tCompress_tlen   uint64\n\tDecompress_cnt  uint64\n\tDecompress_tlen uint64\n\tErr_cnt         uint64\n}\n\ntype CryptoStatHash struct {\n\tType      [64]uint8\n\tHash_cnt  uint64\n\tHash_tlen uint64\n\tErr_cnt   uint64\n}\n\ntype CryptoStatKPP struct {\n\tType                      [64]uint8\n\tSetsecret_cnt             uint64\n\tGenerate_public_key_cnt   uint64\n\tCompute_shared_secret_cnt uint64\n\tErr_cnt                   uint64\n}\n\ntype CryptoStatRNG struct {\n\tType          [64]uint8\n\tGenerate_cnt  uint64\n\tGenerate_tlen uint64\n\tSeed_cnt      uint64\n\tErr_cnt       uint64\n}\n\ntype CryptoStatLarval struct {\n\tType [64]uint8\n}\n\ntype CryptoReportLarval struct {\n\tType [64]uint8\n}\n\ntype CryptoReportHash struct {\n\tType       [64]uint8\n\tBlocksize  uint32\n\tDigestsize uint32\n}\n\ntype CryptoReportCipher struct {\n\tType        [64]uint8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n}\n\ntype CryptoReportBlkCipher struct {\n\tType        [64]uint8\n\tGeniv       [64]uint8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportAEAD struct {\n\tType        [64]uint8\n\tGeniv       [64]uint8\n\tBlocksize   uint32\n\tMaxauthsize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportComp struct {\n\tType [64]uint8\n}\n\ntype CryptoReportRNG struct {\n\tType     [64]uint8\n\tSeedsize uint32\n}\n\ntype CryptoReportAKCipher struct {\n\tType [64]uint8\n}\n\ntype CryptoReportKPP struct {\n\tType [64]uint8\n}\n\ntype CryptoReportAcomp struct {\n\tType [64]uint8\n}\n\ntype LoopInfo struct {\n\tNumber           int32\n\tDevice           uint32\n\tInode            uint64\n\tRdevice          uint32\n\tOffset           int32\n\tEncrypt_type     int32\n\tEncrypt_key_size int32\n\tFlags            int32\n\tName             [64]uint8\n\tEncrypt_key      [32]uint8\n\tInit             [2]uint64\n\tReserved         [4]uint8\n\t_                [4]byte\n}\n\ntype TIPCSubscr struct {\n\tSeq     TIPCServiceRange\n\tTimeout uint32\n\tFilter  uint32\n\tHandle  [8]uint8\n}\n\ntype TIPCSIOCLNReq struct {\n\tPeer     uint32\n\tId       uint32\n\tLinkname [68]uint8\n}\n\ntype TIPCSIOCNodeIDReq struct {\n\tPeer uint32\n\tId   [16]uint8\n}\n\ntype PPSKInfo struct {\n\tAssert_sequence uint32\n\tClear_sequence  uint32\n\tAssert_tu       PPSKTime\n\tClear_tu        PPSKTime\n\tCurrent_mode    int32\n\t_               [4]byte\n}\n\nconst (\n\tPPS_GETPARAMS = 0x800870a1\n\tPPS_SETPARAMS = 0x400870a2\n\tPPS_GETCAP    = 0x800870a3\n\tPPS_FETCH     = 0xc00870a4\n)\n\nconst (\n\tPIDFD_NONBLOCK = 0x800\n)\n\ntype SysvIpcPerm struct {\n\tKey  int32\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint32\n\t_    [0]uint8\n\tSeq  uint16\n\t_    uint16\n\t_    uint64\n\t_    uint64\n}\ntype SysvShmDesc struct {\n\tPerm   SysvIpcPerm\n\tSegsz  uint64\n\tAtime  int64\n\tDtime  int64\n\tCtime  int64\n\tCpid   int32\n\tLpid   int32\n\tNattch uint64\n\t_      uint64\n\t_      uint64\n}\n\ntype RISCVHWProbePairs struct {\n\tKey   int64\n\tValue uint64\n}\n\nconst (\n\tRISCV_HWPROBE_KEY_MVENDORID          = 0x0\n\tRISCV_HWPROBE_KEY_MARCHID            = 0x1\n\tRISCV_HWPROBE_KEY_MIMPID             = 0x2\n\tRISCV_HWPROBE_KEY_BASE_BEHAVIOR      = 0x3\n\tRISCV_HWPROBE_BASE_BEHAVIOR_IMA      = 0x1\n\tRISCV_HWPROBE_KEY_IMA_EXT_0          = 0x4\n\tRISCV_HWPROBE_IMA_FD                 = 0x1\n\tRISCV_HWPROBE_IMA_C                  = 0x2\n\tRISCV_HWPROBE_IMA_V                  = 0x4\n\tRISCV_HWPROBE_EXT_ZBA                = 0x8\n\tRISCV_HWPROBE_EXT_ZBB                = 0x10\n\tRISCV_HWPROBE_EXT_ZBS                = 0x20\n\tRISCV_HWPROBE_EXT_ZICBOZ             = 0x40\n\tRISCV_HWPROBE_EXT_ZBC                = 0x80\n\tRISCV_HWPROBE_EXT_ZBKB               = 0x100\n\tRISCV_HWPROBE_EXT_ZBKC               = 0x200\n\tRISCV_HWPROBE_EXT_ZBKX               = 0x400\n\tRISCV_HWPROBE_EXT_ZKND               = 0x800\n\tRISCV_HWPROBE_EXT_ZKNE               = 0x1000\n\tRISCV_HWPROBE_EXT_ZKNH               = 0x2000\n\tRISCV_HWPROBE_EXT_ZKSED              = 0x4000\n\tRISCV_HWPROBE_EXT_ZKSH               = 0x8000\n\tRISCV_HWPROBE_EXT_ZKT                = 0x10000\n\tRISCV_HWPROBE_EXT_ZVBB               = 0x20000\n\tRISCV_HWPROBE_EXT_ZVBC               = 0x40000\n\tRISCV_HWPROBE_EXT_ZVKB               = 0x80000\n\tRISCV_HWPROBE_EXT_ZVKG               = 0x100000\n\tRISCV_HWPROBE_EXT_ZVKNED             = 0x200000\n\tRISCV_HWPROBE_EXT_ZVKNHA             = 0x400000\n\tRISCV_HWPROBE_EXT_ZVKNHB             = 0x800000\n\tRISCV_HWPROBE_EXT_ZVKSED             = 0x1000000\n\tRISCV_HWPROBE_EXT_ZVKSH              = 0x2000000\n\tRISCV_HWPROBE_EXT_ZVKT               = 0x4000000\n\tRISCV_HWPROBE_EXT_ZFH                = 0x8000000\n\tRISCV_HWPROBE_EXT_ZFHMIN             = 0x10000000\n\tRISCV_HWPROBE_EXT_ZIHINTNTL          = 0x20000000\n\tRISCV_HWPROBE_EXT_ZVFH               = 0x40000000\n\tRISCV_HWPROBE_EXT_ZVFHMIN            = 0x80000000\n\tRISCV_HWPROBE_EXT_ZFA                = 0x100000000\n\tRISCV_HWPROBE_EXT_ZTSO               = 0x200000000\n\tRISCV_HWPROBE_EXT_ZACAS              = 0x400000000\n\tRISCV_HWPROBE_EXT_ZICOND             = 0x800000000\n\tRISCV_HWPROBE_EXT_ZIHINTPAUSE        = 0x1000000000\n\tRISCV_HWPROBE_KEY_CPUPERF_0          = 0x5\n\tRISCV_HWPROBE_MISALIGNED_UNKNOWN     = 0x0\n\tRISCV_HWPROBE_MISALIGNED_EMULATED    = 0x1\n\tRISCV_HWPROBE_MISALIGNED_SLOW        = 0x2\n\tRISCV_HWPROBE_MISALIGNED_FAST        = 0x3\n\tRISCV_HWPROBE_MISALIGNED_UNSUPPORTED = 0x4\n\tRISCV_HWPROBE_MISALIGNED_MASK        = 0x7\n\tRISCV_HWPROBE_KEY_ZICBOZ_BLOCK_SIZE  = 0x6\n\tRISCV_HWPROBE_WHICH_CPUS             = 0x1\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go",
    "content": "// cgo -godefs -objdir=/tmp/s390x/cgo -- -Wall -Werror -static -I/tmp/s390x/include -fsigned-char linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build s390x && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x8\n\tSizeofLong = 0x8\n)\n\ntype (\n\t_C_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int64\n\tFreq      int64\n\tMaxerror  int64\n\tEsterror  int64\n\tStatus    int32\n\tConstant  int64\n\tPrecision int64\n\tTolerance int64\n\tTime      Timeval\n\tTick      int64\n\tPpsfreq   int64\n\tJitter    int64\n\tShift     int32\n\tStabil    int64\n\tJitcnt    int64\n\tCalcnt    int64\n\tErrcnt    int64\n\tStbcnt    int64\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int64\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tNlink   uint64\n\tMode    uint32\n\tUid     uint32\n\tGid     uint32\n\t_       int32\n\tRdev    uint64\n\tSize    int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBlksize int64\n\tBlocks  int64\n\t_       [3]int64\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]int8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x6\n\tFADV_NOREUSE  = 0x7\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint64\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]int8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint64\n\tControl    *byte\n\tControllen uint64\n\tFlags      int32\n\t_          [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint64\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [24]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x60\n\tSizeofIovec           = 0x10\n\tSizeofMsghdr          = 0x38\n\tSizeofCmsghdr         = 0x10\n)\n\nconst (\n\tSizeofSockFprog = 0x10\n)\n\ntype PtraceRegs struct {\n\tPsw                      PtracePsw\n\tGprs                     [16]uint64\n\tAcrs                     [16]uint32\n\tOrig_gpr2                uint64\n\tFp_regs                  PtraceFpregs\n\tPer_info                 PtracePer\n\tIeee_instruction_pointer uint64\n}\n\ntype PtracePsw struct {\n\tMask uint64\n\tAddr uint64\n}\n\ntype PtraceFpregs struct {\n\tFpc  uint32\n\tFprs [16]float64\n}\n\ntype PtracePer struct {\n\tControl_regs  [3]uint64\n\t_             [8]byte\n\tStarting_addr uint64\n\tEnding_addr   uint64\n\tPerc_atmid    uint16\n\tAddress       uint64\n\tAccess_id     uint8\n\t_             [7]byte\n}\n\ntype FdSet struct {\n\tBits [16]int64\n}\n\ntype Sysinfo_t struct {\n\tUptime    int64\n\tLoads     [3]uint64\n\tTotalram  uint64\n\tFreeram   uint64\n\tSharedram uint64\n\tBufferram uint64\n\tTotalswap uint64\n\tFreeswap  uint64\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint64\n\tFreehigh  uint64\n\tUnit      uint32\n\t_         [0]int8\n\t_         [4]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint64\n\tFname  [6]int8\n\tFpack  [6]int8\n\t_      [4]byte\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\t_      int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst _C__NSIG = 0x41\n\nconst (\n\tSIG_BLOCK   = 0x0\n\tSIG_UNBLOCK = 0x1\n\tSIG_SETMASK = 0x2\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tErrno int32\n\tCode  int32\n\t_     int32\n\t_     [112]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [19]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]int8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n\tCpu_delay_max             uint64\n\tCpu_delay_min             uint64\n\tBlkio_delay_max           uint64\n\tBlkio_delay_min           uint64\n\tSwapin_delay_max          uint64\n\tSwapin_delay_min          uint64\n\tFreepages_delay_max       uint64\n\tFreepages_delay_min       uint64\n\tThrashing_delay_max       uint64\n\tThrashing_delay_min       uint64\n\tCompact_delay_max         uint64\n\tCompact_delay_min         uint64\n\tWpcopy_delay_max          uint64\n\tWpcopy_delay_min          uint64\n\tIrq_delay_max             uint64\n\tIrq_delay_min             uint64\n}\n\ntype cpuMask uint64\n\nconst (\n\t_NCPUBITS = 0x40\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x8000000000000000\n\tCBitFieldMaskBit1  = 0x4000000000000000\n\tCBitFieldMaskBit2  = 0x2000000000000000\n\tCBitFieldMaskBit3  = 0x1000000000000000\n\tCBitFieldMaskBit4  = 0x800000000000000\n\tCBitFieldMaskBit5  = 0x400000000000000\n\tCBitFieldMaskBit6  = 0x200000000000000\n\tCBitFieldMaskBit7  = 0x100000000000000\n\tCBitFieldMaskBit8  = 0x80000000000000\n\tCBitFieldMaskBit9  = 0x40000000000000\n\tCBitFieldMaskBit10 = 0x20000000000000\n\tCBitFieldMaskBit11 = 0x10000000000000\n\tCBitFieldMaskBit12 = 0x8000000000000\n\tCBitFieldMaskBit13 = 0x4000000000000\n\tCBitFieldMaskBit14 = 0x2000000000000\n\tCBitFieldMaskBit15 = 0x1000000000000\n\tCBitFieldMaskBit16 = 0x800000000000\n\tCBitFieldMaskBit17 = 0x400000000000\n\tCBitFieldMaskBit18 = 0x200000000000\n\tCBitFieldMaskBit19 = 0x100000000000\n\tCBitFieldMaskBit20 = 0x80000000000\n\tCBitFieldMaskBit21 = 0x40000000000\n\tCBitFieldMaskBit22 = 0x20000000000\n\tCBitFieldMaskBit23 = 0x10000000000\n\tCBitFieldMaskBit24 = 0x8000000000\n\tCBitFieldMaskBit25 = 0x4000000000\n\tCBitFieldMaskBit26 = 0x2000000000\n\tCBitFieldMaskBit27 = 0x1000000000\n\tCBitFieldMaskBit28 = 0x800000000\n\tCBitFieldMaskBit29 = 0x400000000\n\tCBitFieldMaskBit30 = 0x200000000\n\tCBitFieldMaskBit31 = 0x100000000\n\tCBitFieldMaskBit32 = 0x80000000\n\tCBitFieldMaskBit33 = 0x40000000\n\tCBitFieldMaskBit34 = 0x20000000\n\tCBitFieldMaskBit35 = 0x10000000\n\tCBitFieldMaskBit36 = 0x8000000\n\tCBitFieldMaskBit37 = 0x4000000\n\tCBitFieldMaskBit38 = 0x2000000\n\tCBitFieldMaskBit39 = 0x1000000\n\tCBitFieldMaskBit40 = 0x800000\n\tCBitFieldMaskBit41 = 0x400000\n\tCBitFieldMaskBit42 = 0x200000\n\tCBitFieldMaskBit43 = 0x100000\n\tCBitFieldMaskBit44 = 0x80000\n\tCBitFieldMaskBit45 = 0x40000\n\tCBitFieldMaskBit46 = 0x20000\n\tCBitFieldMaskBit47 = 0x10000\n\tCBitFieldMaskBit48 = 0x8000\n\tCBitFieldMaskBit49 = 0x4000\n\tCBitFieldMaskBit50 = 0x2000\n\tCBitFieldMaskBit51 = 0x1000\n\tCBitFieldMaskBit52 = 0x800\n\tCBitFieldMaskBit53 = 0x400\n\tCBitFieldMaskBit54 = 0x200\n\tCBitFieldMaskBit55 = 0x100\n\tCBitFieldMaskBit56 = 0x80\n\tCBitFieldMaskBit57 = 0x40\n\tCBitFieldMaskBit58 = 0x20\n\tCBitFieldMaskBit59 = 0x10\n\tCBitFieldMaskBit60 = 0x8\n\tCBitFieldMaskBit61 = 0x4\n\tCBitFieldMaskBit62 = 0x2\n\tCBitFieldMaskBit63 = 0x1\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\tData   [118]byte\n\t_      uint64\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint64\n}\n\ntype Statfs_t struct {\n\tType    uint32\n\tBsize   uint32\n\tBlocks  uint64\n\tBfree   uint64\n\tBavail  uint64\n\tFiles   uint64\n\tFfree   uint64\n\tFsid    Fsid\n\tNamelen uint32\n\tFrsize  uint32\n\tFlags   uint32\n\tSpare   [4]uint32\n\t_       [4]byte\n}\n\ntype TpacketHdr struct {\n\tStatus  uint64\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n\t_       [4]byte\n}\n\nconst (\n\tSizeofTpacketHdr = 0x20\n)\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int64\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG = 0x1269\n)\n\ntype CryptoUserAlg struct {\n\tName        [64]int8\n\tDriver_name [64]int8\n\tModule_name [64]int8\n\tType        uint32\n\tMask        uint32\n\tRefcnt      uint32\n\tFlags       uint32\n}\n\ntype CryptoStatAEAD struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatAKCipher struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tVerify_cnt   uint64\n\tSign_cnt     uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCipher struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCompress struct {\n\tType            [64]int8\n\tCompress_cnt    uint64\n\tCompress_tlen   uint64\n\tDecompress_cnt  uint64\n\tDecompress_tlen uint64\n\tErr_cnt         uint64\n}\n\ntype CryptoStatHash struct {\n\tType      [64]int8\n\tHash_cnt  uint64\n\tHash_tlen uint64\n\tErr_cnt   uint64\n}\n\ntype CryptoStatKPP struct {\n\tType                      [64]int8\n\tSetsecret_cnt             uint64\n\tGenerate_public_key_cnt   uint64\n\tCompute_shared_secret_cnt uint64\n\tErr_cnt                   uint64\n}\n\ntype CryptoStatRNG struct {\n\tType          [64]int8\n\tGenerate_cnt  uint64\n\tGenerate_tlen uint64\n\tSeed_cnt      uint64\n\tErr_cnt       uint64\n}\n\ntype CryptoStatLarval struct {\n\tType [64]int8\n}\n\ntype CryptoReportLarval struct {\n\tType [64]int8\n}\n\ntype CryptoReportHash struct {\n\tType       [64]int8\n\tBlocksize  uint32\n\tDigestsize uint32\n}\n\ntype CryptoReportCipher struct {\n\tType        [64]int8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n}\n\ntype CryptoReportBlkCipher struct {\n\tType        [64]int8\n\tGeniv       [64]int8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportAEAD struct {\n\tType        [64]int8\n\tGeniv       [64]int8\n\tBlocksize   uint32\n\tMaxauthsize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportComp struct {\n\tType [64]int8\n}\n\ntype CryptoReportRNG struct {\n\tType     [64]int8\n\tSeedsize uint32\n}\n\ntype CryptoReportAKCipher struct {\n\tType [64]int8\n}\n\ntype CryptoReportKPP struct {\n\tType [64]int8\n}\n\ntype CryptoReportAcomp struct {\n\tType [64]int8\n}\n\ntype LoopInfo struct {\n\tNumber           int32\n\tDevice           uint16\n\tInode            uint64\n\tRdevice          uint16\n\tOffset           int32\n\tEncrypt_type     int32\n\tEncrypt_key_size int32\n\tFlags            int32\n\tName             [64]int8\n\tEncrypt_key      [32]uint8\n\tInit             [2]uint64\n\tReserved         [4]int8\n\t_                [4]byte\n}\n\ntype TIPCSubscr struct {\n\tSeq     TIPCServiceRange\n\tTimeout uint32\n\tFilter  uint32\n\tHandle  [8]int8\n}\n\ntype TIPCSIOCLNReq struct {\n\tPeer     uint32\n\tId       uint32\n\tLinkname [68]int8\n}\n\ntype TIPCSIOCNodeIDReq struct {\n\tPeer uint32\n\tId   [16]int8\n}\n\ntype PPSKInfo struct {\n\tAssert_sequence uint32\n\tClear_sequence  uint32\n\tAssert_tu       PPSKTime\n\tClear_tu        PPSKTime\n\tCurrent_mode    int32\n\t_               [4]byte\n}\n\nconst (\n\tPPS_GETPARAMS = 0x800870a1\n\tPPS_SETPARAMS = 0x400870a2\n\tPPS_GETCAP    = 0x800870a3\n\tPPS_FETCH     = 0xc00870a4\n)\n\nconst (\n\tPIDFD_NONBLOCK = 0x800\n)\n\ntype SysvIpcPerm struct {\n\tKey  int32\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint32\n\t_    uint16\n\tSeq  uint16\n\t_    uint64\n\t_    uint64\n}\ntype SysvShmDesc struct {\n\tPerm   SysvIpcPerm\n\tSegsz  uint64\n\tAtime  int64\n\tDtime  int64\n\tCtime  int64\n\tCpid   int32\n\tLpid   int32\n\tNattch uint64\n\t_      uint64\n\t_      uint64\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go",
    "content": "// cgo -godefs -objdir=/tmp/sparc64/cgo -- -Wall -Werror -static -I/tmp/sparc64/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build sparc64 && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x8\n\tSizeofLong = 0x8\n)\n\ntype (\n\t_C_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int32\n\t_    [4]byte\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int64\n\tFreq      int64\n\tMaxerror  int64\n\tEsterror  int64\n\tStatus    int32\n\tConstant  int64\n\tPrecision int64\n\tTolerance int64\n\tTime      Timeval\n\tTick      int64\n\tPpsfreq   int64\n\tJitter    int64\n\tShift     int32\n\tStabil    int64\n\tJitcnt    int64\n\tCalcnt    int64\n\tErrcnt    int64\n\tStbcnt    int64\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int64\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Stat_t struct {\n\tDev     uint64\n\t_       uint16\n\tIno     uint64\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint64\n\t_       uint16\n\tSize    int64\n\tBlksize int64\n\tBlocks  int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\t_       uint64\n\t_       uint64\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]int8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      int16\n\t_      [2]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint64\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]int8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint64\n\tControl    *byte\n\tControllen uint64\n\tFlags      int32\n\t_          [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint64\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [24]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x60\n\tSizeofIovec           = 0x10\n\tSizeofMsghdr          = 0x38\n\tSizeofCmsghdr         = 0x10\n)\n\nconst (\n\tSizeofSockFprog = 0x10\n)\n\ntype PtraceRegs struct {\n\tRegs   [16]uint64\n\tTstate uint64\n\tTpc    uint64\n\tTnpc   uint64\n\tY      uint32\n\tMagic  uint32\n}\n\ntype FdSet struct {\n\tBits [16]int64\n}\n\ntype Sysinfo_t struct {\n\tUptime    int64\n\tLoads     [3]uint64\n\tTotalram  uint64\n\tFreeram   uint64\n\tSharedram uint64\n\tBufferram uint64\n\tTotalswap uint64\n\tFreeswap  uint64\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint64\n\tFreehigh  uint64\n\tUnit      uint32\n\t_         [0]int8\n\t_         [4]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint64\n\tFname  [6]int8\n\tFpack  [6]int8\n\t_      [4]byte\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\t_      int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x400000\n)\n\nconst (\n\tPOLLRDHUP = 0x800\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst _C__NSIG = 0x41\n\nconst (\n\tSIG_BLOCK   = 0x1\n\tSIG_UNBLOCK = 0x2\n\tSIG_SETMASK = 0x4\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tErrno int32\n\tCode  int32\n\t_     int32\n\t_     [112]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [19]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]int8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n\tCpu_delay_max             uint64\n\tCpu_delay_min             uint64\n\tBlkio_delay_max           uint64\n\tBlkio_delay_min           uint64\n\tSwapin_delay_max          uint64\n\tSwapin_delay_min          uint64\n\tFreepages_delay_max       uint64\n\tFreepages_delay_min       uint64\n\tThrashing_delay_max       uint64\n\tThrashing_delay_min       uint64\n\tCompact_delay_max         uint64\n\tCompact_delay_min         uint64\n\tWpcopy_delay_max          uint64\n\tWpcopy_delay_min          uint64\n\tIrq_delay_max             uint64\n\tIrq_delay_min             uint64\n}\n\ntype cpuMask uint64\n\nconst (\n\t_NCPUBITS = 0x40\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x8000000000000000\n\tCBitFieldMaskBit1  = 0x4000000000000000\n\tCBitFieldMaskBit2  = 0x2000000000000000\n\tCBitFieldMaskBit3  = 0x1000000000000000\n\tCBitFieldMaskBit4  = 0x800000000000000\n\tCBitFieldMaskBit5  = 0x400000000000000\n\tCBitFieldMaskBit6  = 0x200000000000000\n\tCBitFieldMaskBit7  = 0x100000000000000\n\tCBitFieldMaskBit8  = 0x80000000000000\n\tCBitFieldMaskBit9  = 0x40000000000000\n\tCBitFieldMaskBit10 = 0x20000000000000\n\tCBitFieldMaskBit11 = 0x10000000000000\n\tCBitFieldMaskBit12 = 0x8000000000000\n\tCBitFieldMaskBit13 = 0x4000000000000\n\tCBitFieldMaskBit14 = 0x2000000000000\n\tCBitFieldMaskBit15 = 0x1000000000000\n\tCBitFieldMaskBit16 = 0x800000000000\n\tCBitFieldMaskBit17 = 0x400000000000\n\tCBitFieldMaskBit18 = 0x200000000000\n\tCBitFieldMaskBit19 = 0x100000000000\n\tCBitFieldMaskBit20 = 0x80000000000\n\tCBitFieldMaskBit21 = 0x40000000000\n\tCBitFieldMaskBit22 = 0x20000000000\n\tCBitFieldMaskBit23 = 0x10000000000\n\tCBitFieldMaskBit24 = 0x8000000000\n\tCBitFieldMaskBit25 = 0x4000000000\n\tCBitFieldMaskBit26 = 0x2000000000\n\tCBitFieldMaskBit27 = 0x1000000000\n\tCBitFieldMaskBit28 = 0x800000000\n\tCBitFieldMaskBit29 = 0x400000000\n\tCBitFieldMaskBit30 = 0x200000000\n\tCBitFieldMaskBit31 = 0x100000000\n\tCBitFieldMaskBit32 = 0x80000000\n\tCBitFieldMaskBit33 = 0x40000000\n\tCBitFieldMaskBit34 = 0x20000000\n\tCBitFieldMaskBit35 = 0x10000000\n\tCBitFieldMaskBit36 = 0x8000000\n\tCBitFieldMaskBit37 = 0x4000000\n\tCBitFieldMaskBit38 = 0x2000000\n\tCBitFieldMaskBit39 = 0x1000000\n\tCBitFieldMaskBit40 = 0x800000\n\tCBitFieldMaskBit41 = 0x400000\n\tCBitFieldMaskBit42 = 0x200000\n\tCBitFieldMaskBit43 = 0x100000\n\tCBitFieldMaskBit44 = 0x80000\n\tCBitFieldMaskBit45 = 0x40000\n\tCBitFieldMaskBit46 = 0x20000\n\tCBitFieldMaskBit47 = 0x10000\n\tCBitFieldMaskBit48 = 0x8000\n\tCBitFieldMaskBit49 = 0x4000\n\tCBitFieldMaskBit50 = 0x2000\n\tCBitFieldMaskBit51 = 0x1000\n\tCBitFieldMaskBit52 = 0x800\n\tCBitFieldMaskBit53 = 0x400\n\tCBitFieldMaskBit54 = 0x200\n\tCBitFieldMaskBit55 = 0x100\n\tCBitFieldMaskBit56 = 0x80\n\tCBitFieldMaskBit57 = 0x40\n\tCBitFieldMaskBit58 = 0x20\n\tCBitFieldMaskBit59 = 0x10\n\tCBitFieldMaskBit60 = 0x8\n\tCBitFieldMaskBit61 = 0x4\n\tCBitFieldMaskBit62 = 0x2\n\tCBitFieldMaskBit63 = 0x1\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\tData   [118]byte\n\t_      uint64\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint64\n}\n\ntype Statfs_t struct {\n\tType    int64\n\tBsize   int64\n\tBlocks  uint64\n\tBfree   uint64\n\tBavail  uint64\n\tFiles   uint64\n\tFfree   uint64\n\tFsid    Fsid\n\tNamelen int64\n\tFrsize  int64\n\tFlags   int64\n\tSpare   [4]int64\n}\n\ntype TpacketHdr struct {\n\tStatus  uint64\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n\t_       [4]byte\n}\n\nconst (\n\tSizeofTpacketHdr = 0x20\n)\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int64\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG = 0x20001269\n)\n\ntype CryptoUserAlg struct {\n\tName        [64]int8\n\tDriver_name [64]int8\n\tModule_name [64]int8\n\tType        uint32\n\tMask        uint32\n\tRefcnt      uint32\n\tFlags       uint32\n}\n\ntype CryptoStatAEAD struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatAKCipher struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tVerify_cnt   uint64\n\tSign_cnt     uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCipher struct {\n\tType         [64]int8\n\tEncrypt_cnt  uint64\n\tEncrypt_tlen uint64\n\tDecrypt_cnt  uint64\n\tDecrypt_tlen uint64\n\tErr_cnt      uint64\n}\n\ntype CryptoStatCompress struct {\n\tType            [64]int8\n\tCompress_cnt    uint64\n\tCompress_tlen   uint64\n\tDecompress_cnt  uint64\n\tDecompress_tlen uint64\n\tErr_cnt         uint64\n}\n\ntype CryptoStatHash struct {\n\tType      [64]int8\n\tHash_cnt  uint64\n\tHash_tlen uint64\n\tErr_cnt   uint64\n}\n\ntype CryptoStatKPP struct {\n\tType                      [64]int8\n\tSetsecret_cnt             uint64\n\tGenerate_public_key_cnt   uint64\n\tCompute_shared_secret_cnt uint64\n\tErr_cnt                   uint64\n}\n\ntype CryptoStatRNG struct {\n\tType          [64]int8\n\tGenerate_cnt  uint64\n\tGenerate_tlen uint64\n\tSeed_cnt      uint64\n\tErr_cnt       uint64\n}\n\ntype CryptoStatLarval struct {\n\tType [64]int8\n}\n\ntype CryptoReportLarval struct {\n\tType [64]int8\n}\n\ntype CryptoReportHash struct {\n\tType       [64]int8\n\tBlocksize  uint32\n\tDigestsize uint32\n}\n\ntype CryptoReportCipher struct {\n\tType        [64]int8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n}\n\ntype CryptoReportBlkCipher struct {\n\tType        [64]int8\n\tGeniv       [64]int8\n\tBlocksize   uint32\n\tMin_keysize uint32\n\tMax_keysize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportAEAD struct {\n\tType        [64]int8\n\tGeniv       [64]int8\n\tBlocksize   uint32\n\tMaxauthsize uint32\n\tIvsize      uint32\n}\n\ntype CryptoReportComp struct {\n\tType [64]int8\n}\n\ntype CryptoReportRNG struct {\n\tType     [64]int8\n\tSeedsize uint32\n}\n\ntype CryptoReportAKCipher struct {\n\tType [64]int8\n}\n\ntype CryptoReportKPP struct {\n\tType [64]int8\n}\n\ntype CryptoReportAcomp struct {\n\tType [64]int8\n}\n\ntype LoopInfo struct {\n\tNumber           int32\n\tDevice           uint32\n\tInode            uint64\n\tRdevice          uint32\n\tOffset           int32\n\tEncrypt_type     int32\n\tEncrypt_key_size int32\n\tFlags            int32\n\tName             [64]int8\n\tEncrypt_key      [32]uint8\n\tInit             [2]uint64\n\tReserved         [4]int8\n\t_                [4]byte\n}\n\ntype TIPCSubscr struct {\n\tSeq     TIPCServiceRange\n\tTimeout uint32\n\tFilter  uint32\n\tHandle  [8]int8\n}\n\ntype TIPCSIOCLNReq struct {\n\tPeer     uint32\n\tId       uint32\n\tLinkname [68]int8\n}\n\ntype TIPCSIOCNodeIDReq struct {\n\tPeer uint32\n\tId   [16]int8\n}\n\ntype PPSKInfo struct {\n\tAssert_sequence uint32\n\tClear_sequence  uint32\n\tAssert_tu       PPSKTime\n\tClear_tu        PPSKTime\n\tCurrent_mode    int32\n\t_               [4]byte\n}\n\nconst (\n\tPPS_GETPARAMS = 0x400870a1\n\tPPS_SETPARAMS = 0x800870a2\n\tPPS_GETCAP    = 0x400870a3\n\tPPS_FETCH     = 0xc00870a4\n)\n\nconst (\n\tPIDFD_NONBLOCK = 0x4000\n)\n\ntype SysvIpcPerm struct {\n\tKey  int32\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint32\n\t_    uint16\n\tSeq  uint16\n\t_    uint64\n\t_    uint64\n}\ntype SysvShmDesc struct {\n\tPerm   SysvIpcPerm\n\tAtime  int64\n\tDtime  int64\n\tCtime  int64\n\tSegsz  uint64\n\tCpid   int32\n\tLpid   int32\n\tNattch uint64\n\t_      uint64\n\t_      uint64\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go",
    "content": "// cgo -godefs types_netbsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build 386 && netbsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x4\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x4\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int32\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int32\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tDev     uint64\n\tMode    uint32\n\tIno     uint64\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize uint32\n\tFlags   uint32\n\tGen     uint32\n\tSpare   [2]uint32\n}\n\ntype Statfs_t [0]byte\n\ntype Statvfs_t struct {\n\tFlag        uint32\n\tBsize       uint32\n\tFrsize      uint32\n\tIosize      uint32\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      uint64\n\tBresvd      uint64\n\tFiles       uint64\n\tFfree       uint64\n\tFavail      uint64\n\tFresvd      uint64\n\tSyncreads   uint64\n\tSyncwrites  uint64\n\tAsyncreads  uint64\n\tAsyncwrites uint64\n\tFsidx       Fsid\n\tFsid        uint32\n\tNamemax     uint32\n\tOwner       uint32\n\tSpare       [4]uint32\n\tFstypename  [32]byte\n\tMntonname   [1024]byte\n\tMntfromname [1024]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno    uint64\n\tReclen    uint16\n\tNamlen    uint16\n\tType      uint8\n\tName      [512]int8\n\tPad_cgo_0 [3]byte\n}\n\ntype Fsid struct {\n\tX__fsid_val [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\nconst (\n\tST_WAIT   = 0x1\n\tST_NOWAIT = 0x2\n)\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [12]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x14\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x8\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x1c\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint32\n\tFilter uint32\n\tFlags  uint32\n\tFflags uint32\n\tData   int64\n\tUdata  int32\n}\n\ntype FdSet struct {\n\tBits [8]uint32\n}\n\nconst (\n\tSizeofIfMsghdr         = 0x98\n\tSizeofIfData           = 0x84\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfAnnounceMsghdr = 0x18\n\tSizeofRtMsghdr         = 0x78\n\tSizeofRtMetrics        = 0x50\n)\n\ntype IfMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tAddrs     int32\n\tFlags     int32\n\tIndex     uint16\n\tPad_cgo_0 [2]byte\n\tData      IfData\n\tPad_cgo_1 [4]byte\n}\n\ntype IfData struct {\n\tType       uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tPad_cgo_0  [1]byte\n\tLink_state int32\n\tMtu        uint64\n\tMetric     uint64\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tNoproto    uint64\n\tLastchange Timespec\n}\n\ntype IfaMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tAddrs     int32\n\tFlags     int32\n\tMetric    int32\n\tIndex     uint16\n\tPad_cgo_0 [6]byte\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tName    [16]int8\n\tWhat    uint16\n}\n\ntype RtMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tIndex     uint16\n\tPad_cgo_0 [2]byte\n\tFlags     int32\n\tAddrs     int32\n\tPid       int32\n\tSeq       int32\n\tErrno     int32\n\tUse       int32\n\tInits     int32\n\tPad_cgo_1 [4]byte\n\tRmx       RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint64\n\tMtu      uint64\n\tHopcount uint64\n\tRecvpipe uint64\n\tSendpipe uint64\n\tSsthresh uint64\n\tRtt      uint64\n\tRttvar   uint64\n\tExpire   int64\n\tPksent   int64\n}\n\ntype Mclpool [0]byte\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x80\n\tSizeofBpfProgram = 0x8\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x14\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv    uint64\n\tDrop    uint64\n\tCapt    uint64\n\tPadding [13]uint64\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp    BpfTimeval\n\tCaplen    uint32\n\tDatalen   uint32\n\tHdrlen    uint16\n\tPad_cgo_0 [2]byte\n}\n\ntype BpfTimeval struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\ntype Ptmget struct {\n\tCfd int32\n\tSfd int32\n\tCn  [1024]byte\n\tSn  [1024]byte\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x100\n\tAT_SYMLINK_NOFOLLOW = 0x200\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_REMOVEDIR        = 0x800\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Sysctlnode struct {\n\tFlags           uint32\n\tNum             int32\n\tName            [32]int8\n\tVer             uint32\n\tX__rsvd         uint32\n\tUn              [16]byte\n\tX_sysctl_size   [8]byte\n\tX_sysctl_func   [8]byte\n\tX_sysctl_parent [8]byte\n\tX_sysctl_desc   [8]byte\n}\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofUvmexp = 0x278\n\ntype Uvmexp struct {\n\tPagesize           int64\n\tPagemask           int64\n\tPageshift          int64\n\tNpages             int64\n\tFree               int64\n\tActive             int64\n\tInactive           int64\n\tPaging             int64\n\tWired              int64\n\tZeropages          int64\n\tReserve_pagedaemon int64\n\tReserve_kernel     int64\n\tFreemin            int64\n\tFreetarg           int64\n\tInactarg           int64\n\tWiredmax           int64\n\tNswapdev           int64\n\tSwpages            int64\n\tSwpginuse          int64\n\tSwpgonly           int64\n\tNswget             int64\n\tUnused1            int64\n\tCpuhit             int64\n\tCpumiss            int64\n\tFaults             int64\n\tTraps              int64\n\tIntrs              int64\n\tSwtch              int64\n\tSofts              int64\n\tSyscalls           int64\n\tPageins            int64\n\tSwapins            int64\n\tSwapouts           int64\n\tPgswapin           int64\n\tPgswapout          int64\n\tForks              int64\n\tForks_ppwait       int64\n\tForks_sharevm      int64\n\tPga_zerohit        int64\n\tPga_zeromiss       int64\n\tZeroaborts         int64\n\tFltnoram           int64\n\tFltnoanon          int64\n\tFltpgwait          int64\n\tFltpgrele          int64\n\tFltrelck           int64\n\tFltrelckok         int64\n\tFltanget           int64\n\tFltanretry         int64\n\tFltamcopy          int64\n\tFltnamap           int64\n\tFltnomap           int64\n\tFltlget            int64\n\tFltget             int64\n\tFlt_anon           int64\n\tFlt_acow           int64\n\tFlt_obj            int64\n\tFlt_prcopy         int64\n\tFlt_przero         int64\n\tPdwoke             int64\n\tPdrevs             int64\n\tUnused4            int64\n\tPdfreed            int64\n\tPdscans            int64\n\tPdanscan           int64\n\tPdobscan           int64\n\tPdreact            int64\n\tPdbusy             int64\n\tPdpageouts         int64\n\tPdpending          int64\n\tPddeact            int64\n\tAnonpages          int64\n\tFilepages          int64\n\tExecpages          int64\n\tColorhit           int64\n\tColormiss          int64\n\tNcolors            int64\n\tBootpages          int64\n\tPoolpages          int64\n}\n\nconst SizeofClockinfo = 0x14\n\ntype Clockinfo struct {\n\tHz      int32\n\tTick    int32\n\tTickadj int32\n\tStathz  int32\n\tProfhz  int32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go",
    "content": "// cgo -godefs types_netbsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && netbsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec       int64\n\tUsec      int32\n\tPad_cgo_0 [4]byte\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tDev     uint64\n\tMode    uint32\n\t_       [4]byte\n\tIno     uint64\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\t_       [4]byte\n\tRdev    uint64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize uint32\n\tFlags   uint32\n\tGen     uint32\n\tSpare   [2]uint32\n\t_       [4]byte\n}\n\ntype Statfs_t [0]byte\n\ntype Statvfs_t struct {\n\tFlag        uint64\n\tBsize       uint64\n\tFrsize      uint64\n\tIosize      uint64\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      uint64\n\tBresvd      uint64\n\tFiles       uint64\n\tFfree       uint64\n\tFavail      uint64\n\tFresvd      uint64\n\tSyncreads   uint64\n\tSyncwrites  uint64\n\tAsyncreads  uint64\n\tAsyncwrites uint64\n\tFsidx       Fsid\n\tFsid        uint64\n\tNamemax     uint64\n\tOwner       uint32\n\tSpare       [4]uint32\n\tFstypename  [32]byte\n\tMntonname   [1024]byte\n\tMntfromname [1024]byte\n\t_           [4]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno    uint64\n\tReclen    uint16\n\tNamlen    uint16\n\tType      uint8\n\tName      [512]int8\n\tPad_cgo_0 [3]byte\n}\n\ntype Fsid struct {\n\tX__fsid_val [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\nconst (\n\tST_WAIT   = 0x1\n\tST_NOWAIT = 0x2\n)\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [12]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tPad_cgo_0  [4]byte\n\tIov        *Iovec\n\tIovlen     int32\n\tPad_cgo_1  [4]byte\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x14\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent     uint64\n\tFilter    uint32\n\tFlags     uint32\n\tFflags    uint32\n\tPad_cgo_0 [4]byte\n\tData      int64\n\tUdata     int64\n}\n\ntype FdSet struct {\n\tBits [8]uint32\n}\n\nconst (\n\tSizeofIfMsghdr         = 0x98\n\tSizeofIfData           = 0x88\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfAnnounceMsghdr = 0x18\n\tSizeofRtMsghdr         = 0x78\n\tSizeofRtMetrics        = 0x50\n)\n\ntype IfMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tAddrs     int32\n\tFlags     int32\n\tIndex     uint16\n\tPad_cgo_0 [2]byte\n\tData      IfData\n}\n\ntype IfData struct {\n\tType       uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tPad_cgo_0  [1]byte\n\tLink_state int32\n\tMtu        uint64\n\tMetric     uint64\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tNoproto    uint64\n\tLastchange Timespec\n}\n\ntype IfaMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tAddrs     int32\n\tFlags     int32\n\tMetric    int32\n\tIndex     uint16\n\tPad_cgo_0 [6]byte\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tName    [16]int8\n\tWhat    uint16\n}\n\ntype RtMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tIndex     uint16\n\tPad_cgo_0 [2]byte\n\tFlags     int32\n\tAddrs     int32\n\tPid       int32\n\tSeq       int32\n\tErrno     int32\n\tUse       int32\n\tInits     int32\n\tPad_cgo_1 [4]byte\n\tRmx       RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint64\n\tMtu      uint64\n\tHopcount uint64\n\tRecvpipe uint64\n\tSendpipe uint64\n\tSsthresh uint64\n\tRtt      uint64\n\tRttvar   uint64\n\tExpire   int64\n\tPksent   int64\n}\n\ntype Mclpool [0]byte\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x80\n\tSizeofBpfProgram = 0x10\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x20\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv    uint64\n\tDrop    uint64\n\tCapt    uint64\n\tPadding [13]uint64\n}\n\ntype BpfProgram struct {\n\tLen       uint32\n\tPad_cgo_0 [4]byte\n\tInsns     *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp    BpfTimeval\n\tCaplen    uint32\n\tDatalen   uint32\n\tHdrlen    uint16\n\tPad_cgo_0 [6]byte\n}\n\ntype BpfTimeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\ntype Ptmget struct {\n\tCfd int32\n\tSfd int32\n\tCn  [1024]byte\n\tSn  [1024]byte\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x100\n\tAT_SYMLINK_NOFOLLOW = 0x200\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_REMOVEDIR        = 0x800\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Sysctlnode struct {\n\tFlags           uint32\n\tNum             int32\n\tName            [32]int8\n\tVer             uint32\n\tX__rsvd         uint32\n\tUn              [16]byte\n\tX_sysctl_size   [8]byte\n\tX_sysctl_func   [8]byte\n\tX_sysctl_parent [8]byte\n\tX_sysctl_desc   [8]byte\n}\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofUvmexp = 0x278\n\ntype Uvmexp struct {\n\tPagesize           int64\n\tPagemask           int64\n\tPageshift          int64\n\tNpages             int64\n\tFree               int64\n\tActive             int64\n\tInactive           int64\n\tPaging             int64\n\tWired              int64\n\tZeropages          int64\n\tReserve_pagedaemon int64\n\tReserve_kernel     int64\n\tFreemin            int64\n\tFreetarg           int64\n\tInactarg           int64\n\tWiredmax           int64\n\tNswapdev           int64\n\tSwpages            int64\n\tSwpginuse          int64\n\tSwpgonly           int64\n\tNswget             int64\n\tUnused1            int64\n\tCpuhit             int64\n\tCpumiss            int64\n\tFaults             int64\n\tTraps              int64\n\tIntrs              int64\n\tSwtch              int64\n\tSofts              int64\n\tSyscalls           int64\n\tPageins            int64\n\tSwapins            int64\n\tSwapouts           int64\n\tPgswapin           int64\n\tPgswapout          int64\n\tForks              int64\n\tForks_ppwait       int64\n\tForks_sharevm      int64\n\tPga_zerohit        int64\n\tPga_zeromiss       int64\n\tZeroaborts         int64\n\tFltnoram           int64\n\tFltnoanon          int64\n\tFltpgwait          int64\n\tFltpgrele          int64\n\tFltrelck           int64\n\tFltrelckok         int64\n\tFltanget           int64\n\tFltanretry         int64\n\tFltamcopy          int64\n\tFltnamap           int64\n\tFltnomap           int64\n\tFltlget            int64\n\tFltget             int64\n\tFlt_anon           int64\n\tFlt_acow           int64\n\tFlt_obj            int64\n\tFlt_prcopy         int64\n\tFlt_przero         int64\n\tPdwoke             int64\n\tPdrevs             int64\n\tUnused4            int64\n\tPdfreed            int64\n\tPdscans            int64\n\tPdanscan           int64\n\tPdobscan           int64\n\tPdreact            int64\n\tPdbusy             int64\n\tPdpageouts         int64\n\tPdpending          int64\n\tPddeact            int64\n\tAnonpages          int64\n\tFilepages          int64\n\tExecpages          int64\n\tColorhit           int64\n\tColormiss          int64\n\tNcolors            int64\n\tBootpages          int64\n\tPoolpages          int64\n}\n\nconst SizeofClockinfo = 0x14\n\ntype Clockinfo struct {\n\tHz      int32\n\tTick    int32\n\tTickadj int32\n\tStathz  int32\n\tProfhz  int32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go",
    "content": "// cgo -godefs types_netbsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm && netbsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x4\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x4\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int32\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec       int64\n\tNsec      int32\n\tPad_cgo_0 [4]byte\n}\n\ntype Timeval struct {\n\tSec       int64\n\tUsec      int32\n\tPad_cgo_0 [4]byte\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tDev     uint64\n\tMode    uint32\n\t_       [4]byte\n\tIno     uint64\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\t_       [4]byte\n\tRdev    uint64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize uint32\n\tFlags   uint32\n\tGen     uint32\n\tSpare   [2]uint32\n\t_       [4]byte\n}\n\ntype Statfs_t [0]byte\n\ntype Statvfs_t struct {\n\tFlag        uint32\n\tBsize       uint32\n\tFrsize      uint32\n\tIosize      uint32\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      uint64\n\tBresvd      uint64\n\tFiles       uint64\n\tFfree       uint64\n\tFavail      uint64\n\tFresvd      uint64\n\tSyncreads   uint64\n\tSyncwrites  uint64\n\tAsyncreads  uint64\n\tAsyncwrites uint64\n\tFsidx       Fsid\n\tFsid        uint32\n\tNamemax     uint32\n\tOwner       uint32\n\tSpare       [4]uint64\n\tFstypename  [32]byte\n\tMntonname   [1024]byte\n\tMntfromname [1024]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno    uint64\n\tReclen    uint16\n\tNamlen    uint16\n\tType      uint8\n\tName      [512]int8\n\tPad_cgo_0 [3]byte\n}\n\ntype Fsid struct {\n\tX__fsid_val [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\nconst (\n\tST_WAIT   = 0x1\n\tST_NOWAIT = 0x2\n)\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [12]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x14\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x8\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x1c\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent     uint32\n\tFilter    uint32\n\tFlags     uint32\n\tFflags    uint32\n\tData      int64\n\tUdata     int32\n\tPad_cgo_0 [4]byte\n}\n\ntype FdSet struct {\n\tBits [8]uint32\n}\n\nconst (\n\tSizeofIfMsghdr         = 0x98\n\tSizeofIfData           = 0x88\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfAnnounceMsghdr = 0x18\n\tSizeofRtMsghdr         = 0x78\n\tSizeofRtMetrics        = 0x50\n)\n\ntype IfMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tAddrs     int32\n\tFlags     int32\n\tIndex     uint16\n\tPad_cgo_0 [2]byte\n\tData      IfData\n}\n\ntype IfData struct {\n\tType       uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tPad_cgo_0  [1]byte\n\tLink_state int32\n\tMtu        uint64\n\tMetric     uint64\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tNoproto    uint64\n\tLastchange Timespec\n}\n\ntype IfaMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tAddrs     int32\n\tFlags     int32\n\tMetric    int32\n\tIndex     uint16\n\tPad_cgo_0 [6]byte\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tName    [16]int8\n\tWhat    uint16\n}\n\ntype RtMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tIndex     uint16\n\tPad_cgo_0 [2]byte\n\tFlags     int32\n\tAddrs     int32\n\tPid       int32\n\tSeq       int32\n\tErrno     int32\n\tUse       int32\n\tInits     int32\n\tPad_cgo_1 [4]byte\n\tRmx       RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint64\n\tMtu      uint64\n\tHopcount uint64\n\tRecvpipe uint64\n\tSendpipe uint64\n\tSsthresh uint64\n\tRtt      uint64\n\tRttvar   uint64\n\tExpire   int64\n\tPksent   int64\n}\n\ntype Mclpool [0]byte\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x80\n\tSizeofBpfProgram = 0x8\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x14\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv    uint64\n\tDrop    uint64\n\tCapt    uint64\n\tPadding [13]uint64\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp    BpfTimeval\n\tCaplen    uint32\n\tDatalen   uint32\n\tHdrlen    uint16\n\tPad_cgo_0 [2]byte\n}\n\ntype BpfTimeval struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\ntype Ptmget struct {\n\tCfd int32\n\tSfd int32\n\tCn  [1024]byte\n\tSn  [1024]byte\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x100\n\tAT_SYMLINK_NOFOLLOW = 0x200\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_REMOVEDIR        = 0x800\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Sysctlnode struct {\n\tFlags           uint32\n\tNum             int32\n\tName            [32]int8\n\tVer             uint32\n\tX__rsvd         uint32\n\tUn              [16]byte\n\tX_sysctl_size   [8]byte\n\tX_sysctl_func   [8]byte\n\tX_sysctl_parent [8]byte\n\tX_sysctl_desc   [8]byte\n}\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofUvmexp = 0x278\n\ntype Uvmexp struct {\n\tPagesize           int64\n\tPagemask           int64\n\tPageshift          int64\n\tNpages             int64\n\tFree               int64\n\tActive             int64\n\tInactive           int64\n\tPaging             int64\n\tWired              int64\n\tZeropages          int64\n\tReserve_pagedaemon int64\n\tReserve_kernel     int64\n\tFreemin            int64\n\tFreetarg           int64\n\tInactarg           int64\n\tWiredmax           int64\n\tNswapdev           int64\n\tSwpages            int64\n\tSwpginuse          int64\n\tSwpgonly           int64\n\tNswget             int64\n\tUnused1            int64\n\tCpuhit             int64\n\tCpumiss            int64\n\tFaults             int64\n\tTraps              int64\n\tIntrs              int64\n\tSwtch              int64\n\tSofts              int64\n\tSyscalls           int64\n\tPageins            int64\n\tSwapins            int64\n\tSwapouts           int64\n\tPgswapin           int64\n\tPgswapout          int64\n\tForks              int64\n\tForks_ppwait       int64\n\tForks_sharevm      int64\n\tPga_zerohit        int64\n\tPga_zeromiss       int64\n\tZeroaborts         int64\n\tFltnoram           int64\n\tFltnoanon          int64\n\tFltpgwait          int64\n\tFltpgrele          int64\n\tFltrelck           int64\n\tFltrelckok         int64\n\tFltanget           int64\n\tFltanretry         int64\n\tFltamcopy          int64\n\tFltnamap           int64\n\tFltnomap           int64\n\tFltlget            int64\n\tFltget             int64\n\tFlt_anon           int64\n\tFlt_acow           int64\n\tFlt_obj            int64\n\tFlt_prcopy         int64\n\tFlt_przero         int64\n\tPdwoke             int64\n\tPdrevs             int64\n\tUnused4            int64\n\tPdfreed            int64\n\tPdscans            int64\n\tPdanscan           int64\n\tPdobscan           int64\n\tPdreact            int64\n\tPdbusy             int64\n\tPdpageouts         int64\n\tPdpending          int64\n\tPddeact            int64\n\tAnonpages          int64\n\tFilepages          int64\n\tExecpages          int64\n\tColorhit           int64\n\tColormiss          int64\n\tNcolors            int64\n\tBootpages          int64\n\tPoolpages          int64\n}\n\nconst SizeofClockinfo = 0x14\n\ntype Clockinfo struct {\n\tHz      int32\n\tTick    int32\n\tTickadj int32\n\tStathz  int32\n\tProfhz  int32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go",
    "content": "// cgo -godefs types_netbsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && netbsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec       int64\n\tUsec      int32\n\tPad_cgo_0 [4]byte\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tDev     uint64\n\tMode    uint32\n\t_       [4]byte\n\tIno     uint64\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\t_       [4]byte\n\tRdev    uint64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize uint32\n\tFlags   uint32\n\tGen     uint32\n\tSpare   [2]uint32\n\t_       [4]byte\n}\n\ntype Statfs_t [0]byte\n\ntype Statvfs_t struct {\n\tFlag        uint64\n\tBsize       uint64\n\tFrsize      uint64\n\tIosize      uint64\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      uint64\n\tBresvd      uint64\n\tFiles       uint64\n\tFfree       uint64\n\tFavail      uint64\n\tFresvd      uint64\n\tSyncreads   uint64\n\tSyncwrites  uint64\n\tAsyncreads  uint64\n\tAsyncwrites uint64\n\tFsidx       Fsid\n\tFsid        uint64\n\tNamemax     uint64\n\tOwner       uint32\n\tSpare       [4]uint32\n\tFstypename  [32]byte\n\tMntonname   [1024]byte\n\tMntfromname [1024]byte\n\t_           [4]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno    uint64\n\tReclen    uint16\n\tNamlen    uint16\n\tType      uint8\n\tName      [512]int8\n\tPad_cgo_0 [3]byte\n}\n\ntype Fsid struct {\n\tX__fsid_val [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\nconst (\n\tST_WAIT   = 0x1\n\tST_NOWAIT = 0x2\n)\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [12]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tPad_cgo_0  [4]byte\n\tIov        *Iovec\n\tIovlen     int32\n\tPad_cgo_1  [4]byte\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x14\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent     uint64\n\tFilter    uint32\n\tFlags     uint32\n\tFflags    uint32\n\tPad_cgo_0 [4]byte\n\tData      int64\n\tUdata     int64\n}\n\ntype FdSet struct {\n\tBits [8]uint32\n}\n\nconst (\n\tSizeofIfMsghdr         = 0x98\n\tSizeofIfData           = 0x88\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfAnnounceMsghdr = 0x18\n\tSizeofRtMsghdr         = 0x78\n\tSizeofRtMetrics        = 0x50\n)\n\ntype IfMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tAddrs     int32\n\tFlags     int32\n\tIndex     uint16\n\tPad_cgo_0 [2]byte\n\tData      IfData\n}\n\ntype IfData struct {\n\tType       uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tPad_cgo_0  [1]byte\n\tLink_state int32\n\tMtu        uint64\n\tMetric     uint64\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tNoproto    uint64\n\tLastchange Timespec\n}\n\ntype IfaMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tAddrs     int32\n\tFlags     int32\n\tMetric    int32\n\tIndex     uint16\n\tPad_cgo_0 [6]byte\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tName    [16]int8\n\tWhat    uint16\n}\n\ntype RtMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tIndex     uint16\n\tPad_cgo_0 [2]byte\n\tFlags     int32\n\tAddrs     int32\n\tPid       int32\n\tSeq       int32\n\tErrno     int32\n\tUse       int32\n\tInits     int32\n\tPad_cgo_1 [4]byte\n\tRmx       RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint64\n\tMtu      uint64\n\tHopcount uint64\n\tRecvpipe uint64\n\tSendpipe uint64\n\tSsthresh uint64\n\tRtt      uint64\n\tRttvar   uint64\n\tExpire   int64\n\tPksent   int64\n}\n\ntype Mclpool [0]byte\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x80\n\tSizeofBpfProgram = 0x10\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x20\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv    uint64\n\tDrop    uint64\n\tCapt    uint64\n\tPadding [13]uint64\n}\n\ntype BpfProgram struct {\n\tLen       uint32\n\tPad_cgo_0 [4]byte\n\tInsns     *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp    BpfTimeval\n\tCaplen    uint32\n\tDatalen   uint32\n\tHdrlen    uint16\n\tPad_cgo_0 [6]byte\n}\n\ntype BpfTimeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\ntype Ptmget struct {\n\tCfd int32\n\tSfd int32\n\tCn  [1024]byte\n\tSn  [1024]byte\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x100\n\tAT_SYMLINK_NOFOLLOW = 0x200\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_REMOVEDIR        = 0x800\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Sysctlnode struct {\n\tFlags           uint32\n\tNum             int32\n\tName            [32]int8\n\tVer             uint32\n\tX__rsvd         uint32\n\tUn              [16]byte\n\tX_sysctl_size   [8]byte\n\tX_sysctl_func   [8]byte\n\tX_sysctl_parent [8]byte\n\tX_sysctl_desc   [8]byte\n}\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofUvmexp = 0x278\n\ntype Uvmexp struct {\n\tPagesize           int64\n\tPagemask           int64\n\tPageshift          int64\n\tNpages             int64\n\tFree               int64\n\tActive             int64\n\tInactive           int64\n\tPaging             int64\n\tWired              int64\n\tZeropages          int64\n\tReserve_pagedaemon int64\n\tReserve_kernel     int64\n\tFreemin            int64\n\tFreetarg           int64\n\tInactarg           int64\n\tWiredmax           int64\n\tNswapdev           int64\n\tSwpages            int64\n\tSwpginuse          int64\n\tSwpgonly           int64\n\tNswget             int64\n\tUnused1            int64\n\tCpuhit             int64\n\tCpumiss            int64\n\tFaults             int64\n\tTraps              int64\n\tIntrs              int64\n\tSwtch              int64\n\tSofts              int64\n\tSyscalls           int64\n\tPageins            int64\n\tSwapins            int64\n\tSwapouts           int64\n\tPgswapin           int64\n\tPgswapout          int64\n\tForks              int64\n\tForks_ppwait       int64\n\tForks_sharevm      int64\n\tPga_zerohit        int64\n\tPga_zeromiss       int64\n\tZeroaborts         int64\n\tFltnoram           int64\n\tFltnoanon          int64\n\tFltpgwait          int64\n\tFltpgrele          int64\n\tFltrelck           int64\n\tFltrelckok         int64\n\tFltanget           int64\n\tFltanretry         int64\n\tFltamcopy          int64\n\tFltnamap           int64\n\tFltnomap           int64\n\tFltlget            int64\n\tFltget             int64\n\tFlt_anon           int64\n\tFlt_acow           int64\n\tFlt_obj            int64\n\tFlt_prcopy         int64\n\tFlt_przero         int64\n\tPdwoke             int64\n\tPdrevs             int64\n\tUnused4            int64\n\tPdfreed            int64\n\tPdscans            int64\n\tPdanscan           int64\n\tPdobscan           int64\n\tPdreact            int64\n\tPdbusy             int64\n\tPdpageouts         int64\n\tPdpending          int64\n\tPddeact            int64\n\tAnonpages          int64\n\tFilepages          int64\n\tExecpages          int64\n\tColorhit           int64\n\tColormiss          int64\n\tNcolors            int64\n\tBootpages          int64\n\tPoolpages          int64\n}\n\nconst SizeofClockinfo = 0x14\n\ntype Clockinfo struct {\n\tHz      int32\n\tTick    int32\n\tTickadj int32\n\tStathz  int32\n\tProfhz  int32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go",
    "content": "// cgo -godefs types_openbsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build 386 && openbsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x4\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x4\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int32\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int32\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tMode    uint32\n\tDev     int32\n\tIno     uint64\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    int32\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint32\n\t_       Timespec\n}\n\ntype Statfs_t struct {\n\tF_flags       uint32\n\tF_bsize       uint32\n\tF_iosize      uint32\n\tF_blocks      uint64\n\tF_bfree       uint64\n\tF_bavail      int64\n\tF_files       uint64\n\tF_ffree       uint64\n\tF_favail      int64\n\tF_syncwrites  uint64\n\tF_syncreads   uint64\n\tF_asyncwrites uint64\n\tF_asyncreads  uint64\n\tF_fsid        Fsid\n\tF_namemax     uint32\n\tF_owner       uint32\n\tF_ctime       uint64\n\tF_fstypename  [16]byte\n\tF_mntonname   [90]byte\n\tF_mntfromname [90]byte\n\tF_mntfromspec [90]byte\n\t_             [2]byte\n\tMount_info    [160]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tNamlen uint8\n\t_      [4]uint8\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [24]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x20\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x8\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x1c\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint32\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n}\n\ntype FdSet struct {\n\tBits [32]uint32\n}\n\nconst (\n\tSizeofIfMsghdr         = 0xa0\n\tSizeofIfData           = 0x88\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfAnnounceMsghdr = 0x1a\n\tSizeofRtMsghdr         = 0x60\n\tSizeofRtMetrics        = 0x38\n)\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tXflags  int32\n\tData    IfData\n}\n\ntype IfData struct {\n\tType         uint8\n\tAddrlen      uint8\n\tHdrlen       uint8\n\tLink_state   uint8\n\tMtu          uint32\n\tMetric       uint32\n\tRdomain      uint32\n\tBaudrate     uint64\n\tIpackets     uint64\n\tIerrors      uint64\n\tOpackets     uint64\n\tOerrors      uint64\n\tCollisions   uint64\n\tIbytes       uint64\n\tObytes       uint64\n\tImcasts      uint64\n\tOmcasts      uint64\n\tIqdrops      uint64\n\tOqdrops      uint64\n\tNoproto      uint64\n\tCapabilities uint32\n\tLastchange   Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tMetric  int32\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tWhat    uint16\n\tName    [16]int8\n}\n\ntype RtMsghdr struct {\n\tMsglen   uint16\n\tVersion  uint8\n\tType     uint8\n\tHdrlen   uint16\n\tIndex    uint16\n\tTableid  uint16\n\tPriority uint8\n\tMpls     uint8\n\tAddrs    int32\n\tFlags    int32\n\tFmask    int32\n\tPid      int32\n\tSeq      int32\n\tErrno    int32\n\tInits    uint32\n\tRmx      RtMetrics\n}\n\ntype RtMetrics struct {\n\tPksent   uint64\n\tExpire   int64\n\tLocks    uint32\n\tMtu      uint32\n\tRefcnt   uint32\n\tHopcount uint32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPad      uint32\n}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x8\n\tSizeofBpfProgram = 0x8\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x18\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  BpfTimeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\tIfidx   uint16\n\tFlowid  uint16\n\tFlags   uint8\n\tDrops   uint8\n}\n\ntype BpfTimeval struct {\n\tSec  uint32\n\tUsec uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x1\n\tAT_SYMLINK_NOFOLLOW = 0x2\n\tAT_SYMLINK_FOLLOW   = 0x4\n\tAT_REMOVEDIR        = 0x8\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Sigset_t uint32\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofUvmexp = 0x158\n\ntype Uvmexp struct {\n\tPagesize           int32\n\tPagemask           int32\n\tPageshift          int32\n\tNpages             int32\n\tFree               int32\n\tActive             int32\n\tInactive           int32\n\tPaging             int32\n\tWired              int32\n\tZeropages          int32\n\tReserve_pagedaemon int32\n\tReserve_kernel     int32\n\tUnused01           int32\n\tVnodepages         int32\n\tVtextpages         int32\n\tFreemin            int32\n\tFreetarg           int32\n\tInactarg           int32\n\tWiredmax           int32\n\tAnonmin            int32\n\tVtextmin           int32\n\tVnodemin           int32\n\tAnonminpct         int32\n\tVtextminpct        int32\n\tVnodeminpct        int32\n\tNswapdev           int32\n\tSwpages            int32\n\tSwpginuse          int32\n\tSwpgonly           int32\n\tNswget             int32\n\tNanon              int32\n\tUnused05           int32\n\tUnused06           int32\n\tFaults             int32\n\tTraps              int32\n\tIntrs              int32\n\tSwtch              int32\n\tSofts              int32\n\tSyscalls           int32\n\tPageins            int32\n\tUnused07           int32\n\tUnused08           int32\n\tPgswapin           int32\n\tPgswapout          int32\n\tForks              int32\n\tForks_ppwait       int32\n\tForks_sharevm      int32\n\tPga_zerohit        int32\n\tPga_zeromiss       int32\n\tUnused09           int32\n\tFltnoram           int32\n\tFltnoanon          int32\n\tFltnoamap          int32\n\tFltpgwait          int32\n\tFltpgrele          int32\n\tFltrelck           int32\n\tFltrelckok         int32\n\tFltanget           int32\n\tFltanretry         int32\n\tFltamcopy          int32\n\tFltnamap           int32\n\tFltnomap           int32\n\tFltlget            int32\n\tFltget             int32\n\tFlt_anon           int32\n\tFlt_acow           int32\n\tFlt_obj            int32\n\tFlt_prcopy         int32\n\tFlt_przero         int32\n\tPdwoke             int32\n\tPdrevs             int32\n\tPdswout            int32\n\tPdfreed            int32\n\tPdscans            int32\n\tPdanscan           int32\n\tPdobscan           int32\n\tPdreact            int32\n\tPdbusy             int32\n\tPdpageouts         int32\n\tPdpending          int32\n\tPddeact            int32\n\tUnused11           int32\n\tUnused12           int32\n\tUnused13           int32\n\tFpswtch            int32\n\tKmapent            int32\n}\n\nconst SizeofClockinfo = 0x10\n\ntype Clockinfo struct {\n\tHz     int32\n\tTick   int32\n\tStathz int32\n\tProfhz int32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go",
    "content": "// cgo -godefs types_openbsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && openbsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tMode    uint32\n\tDev     int32\n\tIno     uint64\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    int32\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint32\n\t_       Timespec\n}\n\ntype Statfs_t struct {\n\tF_flags       uint32\n\tF_bsize       uint32\n\tF_iosize      uint32\n\tF_blocks      uint64\n\tF_bfree       uint64\n\tF_bavail      int64\n\tF_files       uint64\n\tF_ffree       uint64\n\tF_favail      int64\n\tF_syncwrites  uint64\n\tF_syncreads   uint64\n\tF_asyncwrites uint64\n\tF_asyncreads  uint64\n\tF_fsid        Fsid\n\tF_namemax     uint32\n\tF_owner       uint32\n\tF_ctime       uint64\n\tF_fstypename  [16]byte\n\tF_mntonname   [90]byte\n\tF_mntfromname [90]byte\n\tF_mntfromspec [90]byte\n\t_             [2]byte\n\tMount_info    [160]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tNamlen uint8\n\t_      [4]uint8\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [24]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x20\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint64\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n}\n\ntype FdSet struct {\n\tBits [32]uint32\n}\n\nconst (\n\tSizeofIfMsghdr         = 0xa8\n\tSizeofIfData           = 0x90\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfAnnounceMsghdr = 0x1a\n\tSizeofRtMsghdr         = 0x60\n\tSizeofRtMetrics        = 0x38\n)\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tXflags  int32\n\tData    IfData\n}\n\ntype IfData struct {\n\tType         uint8\n\tAddrlen      uint8\n\tHdrlen       uint8\n\tLink_state   uint8\n\tMtu          uint32\n\tMetric       uint32\n\tRdomain      uint32\n\tBaudrate     uint64\n\tIpackets     uint64\n\tIerrors      uint64\n\tOpackets     uint64\n\tOerrors      uint64\n\tCollisions   uint64\n\tIbytes       uint64\n\tObytes       uint64\n\tImcasts      uint64\n\tOmcasts      uint64\n\tIqdrops      uint64\n\tOqdrops      uint64\n\tNoproto      uint64\n\tCapabilities uint32\n\tLastchange   Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tMetric  int32\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tWhat    uint16\n\tName    [16]int8\n}\n\ntype RtMsghdr struct {\n\tMsglen   uint16\n\tVersion  uint8\n\tType     uint8\n\tHdrlen   uint16\n\tIndex    uint16\n\tTableid  uint16\n\tPriority uint8\n\tMpls     uint8\n\tAddrs    int32\n\tFlags    int32\n\tFmask    int32\n\tPid      int32\n\tSeq      int32\n\tErrno    int32\n\tInits    uint32\n\tRmx      RtMetrics\n}\n\ntype RtMetrics struct {\n\tPksent   uint64\n\tExpire   int64\n\tLocks    uint32\n\tMtu      uint32\n\tRefcnt   uint32\n\tHopcount uint32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPad      uint32\n}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x8\n\tSizeofBpfProgram = 0x10\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x18\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  BpfTimeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\tIfidx   uint16\n\tFlowid  uint16\n\tFlags   uint8\n\tDrops   uint8\n}\n\ntype BpfTimeval struct {\n\tSec  uint32\n\tUsec uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x1\n\tAT_SYMLINK_NOFOLLOW = 0x2\n\tAT_SYMLINK_FOLLOW   = 0x4\n\tAT_REMOVEDIR        = 0x8\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Sigset_t uint32\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofUvmexp = 0x158\n\ntype Uvmexp struct {\n\tPagesize           int32\n\tPagemask           int32\n\tPageshift          int32\n\tNpages             int32\n\tFree               int32\n\tActive             int32\n\tInactive           int32\n\tPaging             int32\n\tWired              int32\n\tZeropages          int32\n\tReserve_pagedaemon int32\n\tReserve_kernel     int32\n\tUnused01           int32\n\tVnodepages         int32\n\tVtextpages         int32\n\tFreemin            int32\n\tFreetarg           int32\n\tInactarg           int32\n\tWiredmax           int32\n\tAnonmin            int32\n\tVtextmin           int32\n\tVnodemin           int32\n\tAnonminpct         int32\n\tVtextminpct        int32\n\tVnodeminpct        int32\n\tNswapdev           int32\n\tSwpages            int32\n\tSwpginuse          int32\n\tSwpgonly           int32\n\tNswget             int32\n\tNanon              int32\n\tUnused05           int32\n\tUnused06           int32\n\tFaults             int32\n\tTraps              int32\n\tIntrs              int32\n\tSwtch              int32\n\tSofts              int32\n\tSyscalls           int32\n\tPageins            int32\n\tUnused07           int32\n\tUnused08           int32\n\tPgswapin           int32\n\tPgswapout          int32\n\tForks              int32\n\tForks_ppwait       int32\n\tForks_sharevm      int32\n\tPga_zerohit        int32\n\tPga_zeromiss       int32\n\tUnused09           int32\n\tFltnoram           int32\n\tFltnoanon          int32\n\tFltnoamap          int32\n\tFltpgwait          int32\n\tFltpgrele          int32\n\tFltrelck           int32\n\tFltrelckok         int32\n\tFltanget           int32\n\tFltanretry         int32\n\tFltamcopy          int32\n\tFltnamap           int32\n\tFltnomap           int32\n\tFltlget            int32\n\tFltget             int32\n\tFlt_anon           int32\n\tFlt_acow           int32\n\tFlt_obj            int32\n\tFlt_prcopy         int32\n\tFlt_przero         int32\n\tPdwoke             int32\n\tPdrevs             int32\n\tPdswout            int32\n\tPdfreed            int32\n\tPdscans            int32\n\tPdanscan           int32\n\tPdobscan           int32\n\tPdreact            int32\n\tPdbusy             int32\n\tPdpageouts         int32\n\tPdpending          int32\n\tPddeact            int32\n\tUnused11           int32\n\tUnused12           int32\n\tUnused13           int32\n\tFpswtch            int32\n\tKmapent            int32\n}\n\nconst SizeofClockinfo = 0x10\n\ntype Clockinfo struct {\n\tHz     int32\n\tTick   int32\n\tStathz int32\n\tProfhz int32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go",
    "content": "// cgo -godefs -- -fsigned-char types_openbsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm && openbsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x4\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x4\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int32\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int32\n\t_    [4]byte\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int32\n\t_    [4]byte\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tMode    uint32\n\tDev     int32\n\tIno     uint64\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    int32\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint32\n\t_       [4]byte\n\t_       Timespec\n}\n\ntype Statfs_t struct {\n\tF_flags       uint32\n\tF_bsize       uint32\n\tF_iosize      uint32\n\t_             [4]byte\n\tF_blocks      uint64\n\tF_bfree       uint64\n\tF_bavail      int64\n\tF_files       uint64\n\tF_ffree       uint64\n\tF_favail      int64\n\tF_syncwrites  uint64\n\tF_syncreads   uint64\n\tF_asyncwrites uint64\n\tF_asyncreads  uint64\n\tF_fsid        Fsid\n\tF_namemax     uint32\n\tF_owner       uint32\n\tF_ctime       uint64\n\tF_fstypename  [16]byte\n\tF_mntonname   [90]byte\n\tF_mntfromname [90]byte\n\tF_mntfromspec [90]byte\n\t_             [2]byte\n\tMount_info    [160]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tNamlen uint8\n\t_      [4]uint8\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [24]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x20\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x8\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x1c\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint32\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\t_      [4]byte\n\tData   int64\n\tUdata  *byte\n\t_      [4]byte\n}\n\ntype FdSet struct {\n\tBits [32]uint32\n}\n\nconst (\n\tSizeofIfMsghdr         = 0xa8\n\tSizeofIfData           = 0x90\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfAnnounceMsghdr = 0x1a\n\tSizeofRtMsghdr         = 0x60\n\tSizeofRtMetrics        = 0x38\n)\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tXflags  int32\n\tData    IfData\n}\n\ntype IfData struct {\n\tType         uint8\n\tAddrlen      uint8\n\tHdrlen       uint8\n\tLink_state   uint8\n\tMtu          uint32\n\tMetric       uint32\n\tRdomain      uint32\n\tBaudrate     uint64\n\tIpackets     uint64\n\tIerrors      uint64\n\tOpackets     uint64\n\tOerrors      uint64\n\tCollisions   uint64\n\tIbytes       uint64\n\tObytes       uint64\n\tImcasts      uint64\n\tOmcasts      uint64\n\tIqdrops      uint64\n\tOqdrops      uint64\n\tNoproto      uint64\n\tCapabilities uint32\n\t_            [4]byte\n\tLastchange   Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tMetric  int32\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tWhat    uint16\n\tName    [16]int8\n}\n\ntype RtMsghdr struct {\n\tMsglen   uint16\n\tVersion  uint8\n\tType     uint8\n\tHdrlen   uint16\n\tIndex    uint16\n\tTableid  uint16\n\tPriority uint8\n\tMpls     uint8\n\tAddrs    int32\n\tFlags    int32\n\tFmask    int32\n\tPid      int32\n\tSeq      int32\n\tErrno    int32\n\tInits    uint32\n\tRmx      RtMetrics\n}\n\ntype RtMetrics struct {\n\tPksent   uint64\n\tExpire   int64\n\tLocks    uint32\n\tMtu      uint32\n\tRefcnt   uint32\n\tHopcount uint32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPad      uint32\n}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x8\n\tSizeofBpfProgram = 0x8\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x18\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  BpfTimeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\tIfidx   uint16\n\tFlowid  uint16\n\tFlags   uint8\n\tDrops   uint8\n}\n\ntype BpfTimeval struct {\n\tSec  uint32\n\tUsec uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x1\n\tAT_SYMLINK_NOFOLLOW = 0x2\n\tAT_SYMLINK_FOLLOW   = 0x4\n\tAT_REMOVEDIR        = 0x8\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Sigset_t uint32\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofUvmexp = 0x158\n\ntype Uvmexp struct {\n\tPagesize           int32\n\tPagemask           int32\n\tPageshift          int32\n\tNpages             int32\n\tFree               int32\n\tActive             int32\n\tInactive           int32\n\tPaging             int32\n\tWired              int32\n\tZeropages          int32\n\tReserve_pagedaemon int32\n\tReserve_kernel     int32\n\tUnused01           int32\n\tVnodepages         int32\n\tVtextpages         int32\n\tFreemin            int32\n\tFreetarg           int32\n\tInactarg           int32\n\tWiredmax           int32\n\tAnonmin            int32\n\tVtextmin           int32\n\tVnodemin           int32\n\tAnonminpct         int32\n\tVtextminpct        int32\n\tVnodeminpct        int32\n\tNswapdev           int32\n\tSwpages            int32\n\tSwpginuse          int32\n\tSwpgonly           int32\n\tNswget             int32\n\tNanon              int32\n\tUnused05           int32\n\tUnused06           int32\n\tFaults             int32\n\tTraps              int32\n\tIntrs              int32\n\tSwtch              int32\n\tSofts              int32\n\tSyscalls           int32\n\tPageins            int32\n\tUnused07           int32\n\tUnused08           int32\n\tPgswapin           int32\n\tPgswapout          int32\n\tForks              int32\n\tForks_ppwait       int32\n\tForks_sharevm      int32\n\tPga_zerohit        int32\n\tPga_zeromiss       int32\n\tUnused09           int32\n\tFltnoram           int32\n\tFltnoanon          int32\n\tFltnoamap          int32\n\tFltpgwait          int32\n\tFltpgrele          int32\n\tFltrelck           int32\n\tFltrelckok         int32\n\tFltanget           int32\n\tFltanretry         int32\n\tFltamcopy          int32\n\tFltnamap           int32\n\tFltnomap           int32\n\tFltlget            int32\n\tFltget             int32\n\tFlt_anon           int32\n\tFlt_acow           int32\n\tFlt_obj            int32\n\tFlt_prcopy         int32\n\tFlt_przero         int32\n\tPdwoke             int32\n\tPdrevs             int32\n\tPdswout            int32\n\tPdfreed            int32\n\tPdscans            int32\n\tPdanscan           int32\n\tPdobscan           int32\n\tPdreact            int32\n\tPdbusy             int32\n\tPdpageouts         int32\n\tPdpending          int32\n\tPddeact            int32\n\tUnused11           int32\n\tUnused12           int32\n\tUnused13           int32\n\tFpswtch            int32\n\tKmapent            int32\n}\n\nconst SizeofClockinfo = 0x10\n\ntype Clockinfo struct {\n\tHz     int32\n\tTick   int32\n\tStathz int32\n\tProfhz int32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go",
    "content": "// cgo -godefs -- -fsigned-char types_openbsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && openbsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tMode    uint32\n\tDev     int32\n\tIno     uint64\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    int32\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint32\n\t_       Timespec\n}\n\ntype Statfs_t struct {\n\tF_flags       uint32\n\tF_bsize       uint32\n\tF_iosize      uint32\n\tF_blocks      uint64\n\tF_bfree       uint64\n\tF_bavail      int64\n\tF_files       uint64\n\tF_ffree       uint64\n\tF_favail      int64\n\tF_syncwrites  uint64\n\tF_syncreads   uint64\n\tF_asyncwrites uint64\n\tF_asyncreads  uint64\n\tF_fsid        Fsid\n\tF_namemax     uint32\n\tF_owner       uint32\n\tF_ctime       uint64\n\tF_fstypename  [16]byte\n\tF_mntonname   [90]byte\n\tF_mntfromname [90]byte\n\tF_mntfromspec [90]byte\n\t_             [2]byte\n\tMount_info    [160]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tNamlen uint8\n\t_      [4]uint8\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [24]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x20\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint64\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n}\n\ntype FdSet struct {\n\tBits [32]uint32\n}\n\nconst (\n\tSizeofIfMsghdr         = 0xa8\n\tSizeofIfData           = 0x90\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfAnnounceMsghdr = 0x1a\n\tSizeofRtMsghdr         = 0x60\n\tSizeofRtMetrics        = 0x38\n)\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tXflags  int32\n\tData    IfData\n}\n\ntype IfData struct {\n\tType         uint8\n\tAddrlen      uint8\n\tHdrlen       uint8\n\tLink_state   uint8\n\tMtu          uint32\n\tMetric       uint32\n\tRdomain      uint32\n\tBaudrate     uint64\n\tIpackets     uint64\n\tIerrors      uint64\n\tOpackets     uint64\n\tOerrors      uint64\n\tCollisions   uint64\n\tIbytes       uint64\n\tObytes       uint64\n\tImcasts      uint64\n\tOmcasts      uint64\n\tIqdrops      uint64\n\tOqdrops      uint64\n\tNoproto      uint64\n\tCapabilities uint32\n\tLastchange   Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tMetric  int32\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tWhat    uint16\n\tName    [16]int8\n}\n\ntype RtMsghdr struct {\n\tMsglen   uint16\n\tVersion  uint8\n\tType     uint8\n\tHdrlen   uint16\n\tIndex    uint16\n\tTableid  uint16\n\tPriority uint8\n\tMpls     uint8\n\tAddrs    int32\n\tFlags    int32\n\tFmask    int32\n\tPid      int32\n\tSeq      int32\n\tErrno    int32\n\tInits    uint32\n\tRmx      RtMetrics\n}\n\ntype RtMetrics struct {\n\tPksent   uint64\n\tExpire   int64\n\tLocks    uint32\n\tMtu      uint32\n\tRefcnt   uint32\n\tHopcount uint32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPad      uint32\n}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x8\n\tSizeofBpfProgram = 0x10\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x18\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  BpfTimeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\tIfidx   uint16\n\tFlowid  uint16\n\tFlags   uint8\n\tDrops   uint8\n}\n\ntype BpfTimeval struct {\n\tSec  uint32\n\tUsec uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x1\n\tAT_SYMLINK_NOFOLLOW = 0x2\n\tAT_SYMLINK_FOLLOW   = 0x4\n\tAT_REMOVEDIR        = 0x8\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Sigset_t uint32\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofUvmexp = 0x158\n\ntype Uvmexp struct {\n\tPagesize           int32\n\tPagemask           int32\n\tPageshift          int32\n\tNpages             int32\n\tFree               int32\n\tActive             int32\n\tInactive           int32\n\tPaging             int32\n\tWired              int32\n\tZeropages          int32\n\tReserve_pagedaemon int32\n\tReserve_kernel     int32\n\tUnused01           int32\n\tVnodepages         int32\n\tVtextpages         int32\n\tFreemin            int32\n\tFreetarg           int32\n\tInactarg           int32\n\tWiredmax           int32\n\tAnonmin            int32\n\tVtextmin           int32\n\tVnodemin           int32\n\tAnonminpct         int32\n\tVtextminpct        int32\n\tVnodeminpct        int32\n\tNswapdev           int32\n\tSwpages            int32\n\tSwpginuse          int32\n\tSwpgonly           int32\n\tNswget             int32\n\tNanon              int32\n\tUnused05           int32\n\tUnused06           int32\n\tFaults             int32\n\tTraps              int32\n\tIntrs              int32\n\tSwtch              int32\n\tSofts              int32\n\tSyscalls           int32\n\tPageins            int32\n\tUnused07           int32\n\tUnused08           int32\n\tPgswapin           int32\n\tPgswapout          int32\n\tForks              int32\n\tForks_ppwait       int32\n\tForks_sharevm      int32\n\tPga_zerohit        int32\n\tPga_zeromiss       int32\n\tUnused09           int32\n\tFltnoram           int32\n\tFltnoanon          int32\n\tFltnoamap          int32\n\tFltpgwait          int32\n\tFltpgrele          int32\n\tFltrelck           int32\n\tFltrelckok         int32\n\tFltanget           int32\n\tFltanretry         int32\n\tFltamcopy          int32\n\tFltnamap           int32\n\tFltnomap           int32\n\tFltlget            int32\n\tFltget             int32\n\tFlt_anon           int32\n\tFlt_acow           int32\n\tFlt_obj            int32\n\tFlt_prcopy         int32\n\tFlt_przero         int32\n\tPdwoke             int32\n\tPdrevs             int32\n\tPdswout            int32\n\tPdfreed            int32\n\tPdscans            int32\n\tPdanscan           int32\n\tPdobscan           int32\n\tPdreact            int32\n\tPdbusy             int32\n\tPdpageouts         int32\n\tPdpending          int32\n\tPddeact            int32\n\tUnused11           int32\n\tUnused12           int32\n\tUnused13           int32\n\tFpswtch            int32\n\tKmapent            int32\n}\n\nconst SizeofClockinfo = 0x10\n\ntype Clockinfo struct {\n\tHz     int32\n\tTick   int32\n\tStathz int32\n\tProfhz int32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_openbsd_mips64.go",
    "content": "// cgo -godefs -- -fsigned-char types_openbsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mips64 && openbsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tMode    uint32\n\tDev     int32\n\tIno     uint64\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    int32\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint32\n\t_       Timespec\n}\n\ntype Statfs_t struct {\n\tF_flags       uint32\n\tF_bsize       uint32\n\tF_iosize      uint32\n\tF_blocks      uint64\n\tF_bfree       uint64\n\tF_bavail      int64\n\tF_files       uint64\n\tF_ffree       uint64\n\tF_favail      int64\n\tF_syncwrites  uint64\n\tF_syncreads   uint64\n\tF_asyncwrites uint64\n\tF_asyncreads  uint64\n\tF_fsid        Fsid\n\tF_namemax     uint32\n\tF_owner       uint32\n\tF_ctime       uint64\n\tF_fstypename  [16]byte\n\tF_mntonname   [90]byte\n\tF_mntfromname [90]byte\n\tF_mntfromspec [90]byte\n\t_             [2]byte\n\tMount_info    [160]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tNamlen uint8\n\t_      [4]uint8\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [24]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x20\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint64\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n}\n\ntype FdSet struct {\n\tBits [32]uint32\n}\n\nconst (\n\tSizeofIfMsghdr         = 0xa8\n\tSizeofIfData           = 0x90\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfAnnounceMsghdr = 0x1a\n\tSizeofRtMsghdr         = 0x60\n\tSizeofRtMetrics        = 0x38\n)\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tXflags  int32\n\tData    IfData\n}\n\ntype IfData struct {\n\tType         uint8\n\tAddrlen      uint8\n\tHdrlen       uint8\n\tLink_state   uint8\n\tMtu          uint32\n\tMetric       uint32\n\tRdomain      uint32\n\tBaudrate     uint64\n\tIpackets     uint64\n\tIerrors      uint64\n\tOpackets     uint64\n\tOerrors      uint64\n\tCollisions   uint64\n\tIbytes       uint64\n\tObytes       uint64\n\tImcasts      uint64\n\tOmcasts      uint64\n\tIqdrops      uint64\n\tOqdrops      uint64\n\tNoproto      uint64\n\tCapabilities uint32\n\tLastchange   Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tMetric  int32\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tWhat    uint16\n\tName    [16]int8\n}\n\ntype RtMsghdr struct {\n\tMsglen   uint16\n\tVersion  uint8\n\tType     uint8\n\tHdrlen   uint16\n\tIndex    uint16\n\tTableid  uint16\n\tPriority uint8\n\tMpls     uint8\n\tAddrs    int32\n\tFlags    int32\n\tFmask    int32\n\tPid      int32\n\tSeq      int32\n\tErrno    int32\n\tInits    uint32\n\tRmx      RtMetrics\n}\n\ntype RtMetrics struct {\n\tPksent   uint64\n\tExpire   int64\n\tLocks    uint32\n\tMtu      uint32\n\tRefcnt   uint32\n\tHopcount uint32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPad      uint32\n}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x8\n\tSizeofBpfProgram = 0x10\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x18\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  BpfTimeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\tIfidx   uint16\n\tFlowid  uint16\n\tFlags   uint8\n\tDrops   uint8\n}\n\ntype BpfTimeval struct {\n\tSec  uint32\n\tUsec uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x1\n\tAT_SYMLINK_NOFOLLOW = 0x2\n\tAT_SYMLINK_FOLLOW   = 0x4\n\tAT_REMOVEDIR        = 0x8\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Sigset_t uint32\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofUvmexp = 0x158\n\ntype Uvmexp struct {\n\tPagesize           int32\n\tPagemask           int32\n\tPageshift          int32\n\tNpages             int32\n\tFree               int32\n\tActive             int32\n\tInactive           int32\n\tPaging             int32\n\tWired              int32\n\tZeropages          int32\n\tReserve_pagedaemon int32\n\tReserve_kernel     int32\n\tUnused01           int32\n\tVnodepages         int32\n\tVtextpages         int32\n\tFreemin            int32\n\tFreetarg           int32\n\tInactarg           int32\n\tWiredmax           int32\n\tAnonmin            int32\n\tVtextmin           int32\n\tVnodemin           int32\n\tAnonminpct         int32\n\tVtextminpct        int32\n\tVnodeminpct        int32\n\tNswapdev           int32\n\tSwpages            int32\n\tSwpginuse          int32\n\tSwpgonly           int32\n\tNswget             int32\n\tNanon              int32\n\tUnused05           int32\n\tUnused06           int32\n\tFaults             int32\n\tTraps              int32\n\tIntrs              int32\n\tSwtch              int32\n\tSofts              int32\n\tSyscalls           int32\n\tPageins            int32\n\tUnused07           int32\n\tUnused08           int32\n\tPgswapin           int32\n\tPgswapout          int32\n\tForks              int32\n\tForks_ppwait       int32\n\tForks_sharevm      int32\n\tPga_zerohit        int32\n\tPga_zeromiss       int32\n\tUnused09           int32\n\tFltnoram           int32\n\tFltnoanon          int32\n\tFltnoamap          int32\n\tFltpgwait          int32\n\tFltpgrele          int32\n\tFltrelck           int32\n\tFltrelckok         int32\n\tFltanget           int32\n\tFltanretry         int32\n\tFltamcopy          int32\n\tFltnamap           int32\n\tFltnomap           int32\n\tFltlget            int32\n\tFltget             int32\n\tFlt_anon           int32\n\tFlt_acow           int32\n\tFlt_obj            int32\n\tFlt_prcopy         int32\n\tFlt_przero         int32\n\tPdwoke             int32\n\tPdrevs             int32\n\tPdswout            int32\n\tPdfreed            int32\n\tPdscans            int32\n\tPdanscan           int32\n\tPdobscan           int32\n\tPdreact            int32\n\tPdbusy             int32\n\tPdpageouts         int32\n\tPdpending          int32\n\tPddeact            int32\n\tUnused11           int32\n\tUnused12           int32\n\tUnused13           int32\n\tFpswtch            int32\n\tKmapent            int32\n}\n\nconst SizeofClockinfo = 0x10\n\ntype Clockinfo struct {\n\tHz     int32\n\tTick   int32\n\tStathz int32\n\tProfhz int32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_openbsd_ppc64.go",
    "content": "// cgo -godefs -- -fsigned-char types_openbsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc64 && openbsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tMode    uint32\n\tDev     int32\n\tIno     uint64\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    int32\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint32\n\t_       Timespec\n}\n\ntype Statfs_t struct {\n\tF_flags       uint32\n\tF_bsize       uint32\n\tF_iosize      uint32\n\tF_blocks      uint64\n\tF_bfree       uint64\n\tF_bavail      int64\n\tF_files       uint64\n\tF_ffree       uint64\n\tF_favail      int64\n\tF_syncwrites  uint64\n\tF_syncreads   uint64\n\tF_asyncwrites uint64\n\tF_asyncreads  uint64\n\tF_fsid        Fsid\n\tF_namemax     uint32\n\tF_owner       uint32\n\tF_ctime       uint64\n\tF_fstypename  [16]byte\n\tF_mntonname   [90]byte\n\tF_mntfromname [90]byte\n\tF_mntfromspec [90]byte\n\t_             [2]byte\n\tMount_info    [160]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tNamlen uint8\n\t_      [4]uint8\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [24]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x20\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint64\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n}\n\ntype FdSet struct {\n\tBits [32]uint32\n}\n\nconst (\n\tSizeofIfMsghdr         = 0xa8\n\tSizeofIfData           = 0x90\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfAnnounceMsghdr = 0x1a\n\tSizeofRtMsghdr         = 0x60\n\tSizeofRtMetrics        = 0x38\n)\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tXflags  int32\n\tData    IfData\n}\n\ntype IfData struct {\n\tType         uint8\n\tAddrlen      uint8\n\tHdrlen       uint8\n\tLink_state   uint8\n\tMtu          uint32\n\tMetric       uint32\n\tRdomain      uint32\n\tBaudrate     uint64\n\tIpackets     uint64\n\tIerrors      uint64\n\tOpackets     uint64\n\tOerrors      uint64\n\tCollisions   uint64\n\tIbytes       uint64\n\tObytes       uint64\n\tImcasts      uint64\n\tOmcasts      uint64\n\tIqdrops      uint64\n\tOqdrops      uint64\n\tNoproto      uint64\n\tCapabilities uint32\n\tLastchange   Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tMetric  int32\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tWhat    uint16\n\tName    [16]int8\n}\n\ntype RtMsghdr struct {\n\tMsglen   uint16\n\tVersion  uint8\n\tType     uint8\n\tHdrlen   uint16\n\tIndex    uint16\n\tTableid  uint16\n\tPriority uint8\n\tMpls     uint8\n\tAddrs    int32\n\tFlags    int32\n\tFmask    int32\n\tPid      int32\n\tSeq      int32\n\tErrno    int32\n\tInits    uint32\n\tRmx      RtMetrics\n}\n\ntype RtMetrics struct {\n\tPksent   uint64\n\tExpire   int64\n\tLocks    uint32\n\tMtu      uint32\n\tRefcnt   uint32\n\tHopcount uint32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPad      uint32\n}\n\ntype Mclpool struct{}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x8\n\tSizeofBpfProgram = 0x10\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x18\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  BpfTimeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\tIfidx   uint16\n\tFlowid  uint16\n\tFlags   uint8\n\tDrops   uint8\n}\n\ntype BpfTimeval struct {\n\tSec  uint32\n\tUsec uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x1\n\tAT_SYMLINK_NOFOLLOW = 0x2\n\tAT_SYMLINK_FOLLOW   = 0x4\n\tAT_REMOVEDIR        = 0x8\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Sigset_t uint32\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofUvmexp = 0x158\n\ntype Uvmexp struct {\n\tPagesize           int32\n\tPagemask           int32\n\tPageshift          int32\n\tNpages             int32\n\tFree               int32\n\tActive             int32\n\tInactive           int32\n\tPaging             int32\n\tWired              int32\n\tZeropages          int32\n\tReserve_pagedaemon int32\n\tReserve_kernel     int32\n\tUnused01           int32\n\tVnodepages         int32\n\tVtextpages         int32\n\tFreemin            int32\n\tFreetarg           int32\n\tInactarg           int32\n\tWiredmax           int32\n\tAnonmin            int32\n\tVtextmin           int32\n\tVnodemin           int32\n\tAnonminpct         int32\n\tVtextminpct        int32\n\tVnodeminpct        int32\n\tNswapdev           int32\n\tSwpages            int32\n\tSwpginuse          int32\n\tSwpgonly           int32\n\tNswget             int32\n\tNanon              int32\n\tUnused05           int32\n\tUnused06           int32\n\tFaults             int32\n\tTraps              int32\n\tIntrs              int32\n\tSwtch              int32\n\tSofts              int32\n\tSyscalls           int32\n\tPageins            int32\n\tUnused07           int32\n\tUnused08           int32\n\tPgswapin           int32\n\tPgswapout          int32\n\tForks              int32\n\tForks_ppwait       int32\n\tForks_sharevm      int32\n\tPga_zerohit        int32\n\tPga_zeromiss       int32\n\tUnused09           int32\n\tFltnoram           int32\n\tFltnoanon          int32\n\tFltnoamap          int32\n\tFltpgwait          int32\n\tFltpgrele          int32\n\tFltrelck           int32\n\tFltrelckok         int32\n\tFltanget           int32\n\tFltanretry         int32\n\tFltamcopy          int32\n\tFltnamap           int32\n\tFltnomap           int32\n\tFltlget            int32\n\tFltget             int32\n\tFlt_anon           int32\n\tFlt_acow           int32\n\tFlt_obj            int32\n\tFlt_prcopy         int32\n\tFlt_przero         int32\n\tPdwoke             int32\n\tPdrevs             int32\n\tPdswout            int32\n\tPdfreed            int32\n\tPdscans            int32\n\tPdanscan           int32\n\tPdobscan           int32\n\tPdreact            int32\n\tPdbusy             int32\n\tPdpageouts         int32\n\tPdpending          int32\n\tPddeact            int32\n\tUnused11           int32\n\tUnused12           int32\n\tUnused13           int32\n\tFpswtch            int32\n\tKmapent            int32\n}\n\nconst SizeofClockinfo = 0x10\n\ntype Clockinfo struct {\n\tHz     int32\n\tTick   int32\n\tStathz int32\n\tProfhz int32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_openbsd_riscv64.go",
    "content": "// cgo -godefs -- -fsigned-char types_openbsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build riscv64 && openbsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tMode    uint32\n\tDev     int32\n\tIno     uint64\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    int32\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint32\n\t_       Timespec\n}\n\ntype Statfs_t struct {\n\tF_flags       uint32\n\tF_bsize       uint32\n\tF_iosize      uint32\n\tF_blocks      uint64\n\tF_bfree       uint64\n\tF_bavail      int64\n\tF_files       uint64\n\tF_ffree       uint64\n\tF_favail      int64\n\tF_syncwrites  uint64\n\tF_syncreads   uint64\n\tF_asyncwrites uint64\n\tF_asyncreads  uint64\n\tF_fsid        Fsid\n\tF_namemax     uint32\n\tF_owner       uint32\n\tF_ctime       uint64\n\tF_fstypename  [16]byte\n\tF_mntonname   [90]byte\n\tF_mntfromname [90]byte\n\tF_mntfromspec [90]byte\n\t_             [2]byte\n\tMount_info    [160]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tNamlen uint8\n\t_      [4]uint8\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [24]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x20\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint64\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n}\n\ntype FdSet struct {\n\tBits [32]uint32\n}\n\nconst (\n\tSizeofIfMsghdr         = 0xa8\n\tSizeofIfData           = 0x90\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfAnnounceMsghdr = 0x1a\n\tSizeofRtMsghdr         = 0x60\n\tSizeofRtMetrics        = 0x38\n)\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tXflags  int32\n\tData    IfData\n}\n\ntype IfData struct {\n\tType         uint8\n\tAddrlen      uint8\n\tHdrlen       uint8\n\tLink_state   uint8\n\tMtu          uint32\n\tMetric       uint32\n\tRdomain      uint32\n\tBaudrate     uint64\n\tIpackets     uint64\n\tIerrors      uint64\n\tOpackets     uint64\n\tOerrors      uint64\n\tCollisions   uint64\n\tIbytes       uint64\n\tObytes       uint64\n\tImcasts      uint64\n\tOmcasts      uint64\n\tIqdrops      uint64\n\tOqdrops      uint64\n\tNoproto      uint64\n\tCapabilities uint32\n\tLastchange   Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tMetric  int32\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tWhat    uint16\n\tName    [16]int8\n}\n\ntype RtMsghdr struct {\n\tMsglen   uint16\n\tVersion  uint8\n\tType     uint8\n\tHdrlen   uint16\n\tIndex    uint16\n\tTableid  uint16\n\tPriority uint8\n\tMpls     uint8\n\tAddrs    int32\n\tFlags    int32\n\tFmask    int32\n\tPid      int32\n\tSeq      int32\n\tErrno    int32\n\tInits    uint32\n\tRmx      RtMetrics\n}\n\ntype RtMetrics struct {\n\tPksent   uint64\n\tExpire   int64\n\tLocks    uint32\n\tMtu      uint32\n\tRefcnt   uint32\n\tHopcount uint32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPad      uint32\n}\n\ntype Mclpool struct{}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x8\n\tSizeofBpfProgram = 0x10\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x18\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  BpfTimeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\tIfidx   uint16\n\tFlowid  uint16\n\tFlags   uint8\n\tDrops   uint8\n}\n\ntype BpfTimeval struct {\n\tSec  uint32\n\tUsec uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x1\n\tAT_SYMLINK_NOFOLLOW = 0x2\n\tAT_SYMLINK_FOLLOW   = 0x4\n\tAT_REMOVEDIR        = 0x8\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Sigset_t uint32\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofUvmexp = 0x158\n\ntype Uvmexp struct {\n\tPagesize           int32\n\tPagemask           int32\n\tPageshift          int32\n\tNpages             int32\n\tFree               int32\n\tActive             int32\n\tInactive           int32\n\tPaging             int32\n\tWired              int32\n\tZeropages          int32\n\tReserve_pagedaemon int32\n\tReserve_kernel     int32\n\tUnused01           int32\n\tVnodepages         int32\n\tVtextpages         int32\n\tFreemin            int32\n\tFreetarg           int32\n\tInactarg           int32\n\tWiredmax           int32\n\tAnonmin            int32\n\tVtextmin           int32\n\tVnodemin           int32\n\tAnonminpct         int32\n\tVtextminpct        int32\n\tVnodeminpct        int32\n\tNswapdev           int32\n\tSwpages            int32\n\tSwpginuse          int32\n\tSwpgonly           int32\n\tNswget             int32\n\tNanon              int32\n\tUnused05           int32\n\tUnused06           int32\n\tFaults             int32\n\tTraps              int32\n\tIntrs              int32\n\tSwtch              int32\n\tSofts              int32\n\tSyscalls           int32\n\tPageins            int32\n\tUnused07           int32\n\tUnused08           int32\n\tPgswapin           int32\n\tPgswapout          int32\n\tForks              int32\n\tForks_ppwait       int32\n\tForks_sharevm      int32\n\tPga_zerohit        int32\n\tPga_zeromiss       int32\n\tUnused09           int32\n\tFltnoram           int32\n\tFltnoanon          int32\n\tFltnoamap          int32\n\tFltpgwait          int32\n\tFltpgrele          int32\n\tFltrelck           int32\n\tFltrelckok         int32\n\tFltanget           int32\n\tFltanretry         int32\n\tFltamcopy          int32\n\tFltnamap           int32\n\tFltnomap           int32\n\tFltlget            int32\n\tFltget             int32\n\tFlt_anon           int32\n\tFlt_acow           int32\n\tFlt_obj            int32\n\tFlt_prcopy         int32\n\tFlt_przero         int32\n\tPdwoke             int32\n\tPdrevs             int32\n\tPdswout            int32\n\tPdfreed            int32\n\tPdscans            int32\n\tPdanscan           int32\n\tPdobscan           int32\n\tPdreact            int32\n\tPdbusy             int32\n\tPdpageouts         int32\n\tPdpending          int32\n\tPddeact            int32\n\tUnused11           int32\n\tUnused12           int32\n\tUnused13           int32\n\tFpswtch            int32\n\tKmapent            int32\n}\n\nconst SizeofClockinfo = 0x10\n\ntype Clockinfo struct {\n\tHz     int32\n\tTick   int32\n\tStathz int32\n\tProfhz int32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go",
    "content": "// cgo -godefs types_solaris.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && solaris\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n\tPathMax        = 0x400\n\tMaxHostNameLen = 0x100\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Timeval32 struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint64\n\tSize    int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBlksize int32\n\tBlocks  int64\n\tFstype  [16]int8\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tSysid  int32\n\tPid    int32\n\tPad    [4]int64\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tName   [1]int8\n\t_      [5]byte\n}\n\ntype _Fsblkcnt_t uint64\n\ntype Statvfs_t struct {\n\tBsize    uint64\n\tFrsize   uint64\n\tBlocks   uint64\n\tBfree    uint64\n\tBavail   uint64\n\tFiles    uint64\n\tFfree    uint64\n\tFavail   uint64\n\tFsid     uint64\n\tBasetype [16]int8\n\tFlag     uint64\n\tNamemax  uint64\n\tFstr     [32]int8\n}\n\ntype RawSockaddrInet4 struct {\n\tFamily uint16\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tFamily   uint16\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n\t_        uint32\n}\n\ntype RawSockaddrUnix struct {\n\tFamily uint16\n\tPath   [108]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tFamily uint16\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [244]int8\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [236]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName         *byte\n\tNamelen      uint32\n\tIov          *Iovec\n\tIovlen       int32\n\tAccrights    *int8\n\tAccrightslen int32\n\t_            [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet4Pktinfo struct {\n\tIfindex  uint32\n\tSpec_dst [4]byte /* in_addr */\n\tAddr     [4]byte /* in_addr */\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x20\n\tSizeofSockaddrAny      = 0xfc\n\tSizeofSockaddrUnix     = 0x6e\n\tSizeofSockaddrDatalink = 0xfc\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet4Pktinfo     = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x24\n\tSizeofICMPv6Filter     = 0x20\n)\n\ntype FdSet struct {\n\tBits [1024]int64\n}\n\ntype Utsname struct {\n\tSysname  [257]byte\n\tNodename [257]byte\n\tRelease  [257]byte\n\tVersion  [257]byte\n\tMachine  [257]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int64\n\tTinode uint64\n\tFname  [6]int8\n\tFpack  [6]int8\n\t_      [4]byte\n}\n\nconst (\n\tAT_FDCWD            = 0xffd19553\n\tAT_SYMLINK_NOFOLLOW = 0x1000\n\tAT_SYMLINK_FOLLOW   = 0x2000\n\tAT_REMOVEDIR        = 0x1\n\tAT_EACCESS          = 0x4\n)\n\nconst (\n\tSizeofIfMsghdr  = 0x54\n\tSizeofIfData    = 0x44\n\tSizeofIfaMsghdr = 0x14\n\tSizeofRtMsghdr  = 0x4c\n\tSizeofRtMetrics = 0x28\n)\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\tData    IfData\n}\n\ntype IfData struct {\n\tType       uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tMtu        uint32\n\tMetric     uint32\n\tBaudrate   uint32\n\tIpackets   uint32\n\tIerrors    uint32\n\tOpackets   uint32\n\tOerrors    uint32\n\tCollisions uint32\n\tIbytes     uint32\n\tObytes     uint32\n\tImcasts    uint32\n\tOmcasts    uint32\n\tIqdrops    uint32\n\tNoproto    uint32\n\tLastchange Timeval32\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\tMetric  int32\n}\n\ntype RtMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tFlags   int32\n\tAddrs   int32\n\tPid     int32\n\tSeq     int32\n\tErrno   int32\n\tUse     int32\n\tInits   uint32\n\tRmx     RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint32\n\tMtu      uint32\n\tHopcount uint32\n\tExpire   uint32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPksent   uint32\n}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x80\n\tSizeofBpfProgram = 0x10\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x14\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint64\n\tDrop uint64\n\tCapt uint64\n\t_    [13]uint64\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfTimeval struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype BpfHdr struct {\n\tTstamp  BpfTimeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\t_       [2]byte\n}\n\ntype Termios struct {\n\tIflag uint32\n\tOflag uint32\n\tCflag uint32\n\tLflag uint32\n\tCc    [19]uint8\n\t_     [1]byte\n}\n\ntype Termio struct {\n\tIflag uint16\n\tOflag uint16\n\tCflag uint16\n\tLflag uint16\n\tLine  int8\n\tCc    [8]uint8\n\t_     [1]byte\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype fileObj struct {\n\tAtim Timespec\n\tMtim Timespec\n\tCtim Timespec\n\tPad  [3]uint64\n\tName *int8\n}\n\ntype portEvent struct {\n\tEvents int32\n\tSource uint16\n\tPad    uint16\n\tObject uint64\n\tUser   *byte\n}\n\nconst (\n\tPORT_SOURCE_AIO    = 0x1\n\tPORT_SOURCE_TIMER  = 0x2\n\tPORT_SOURCE_USER   = 0x3\n\tPORT_SOURCE_FD     = 0x4\n\tPORT_SOURCE_ALERT  = 0x5\n\tPORT_SOURCE_MQ     = 0x6\n\tPORT_SOURCE_FILE   = 0x7\n\tPORT_ALERT_SET     = 0x1\n\tPORT_ALERT_UPDATE  = 0x2\n\tPORT_ALERT_INVALID = 0x3\n\tFILE_ACCESS        = 0x1\n\tFILE_MODIFIED      = 0x2\n\tFILE_ATTRIB        = 0x4\n\tFILE_TRUNC         = 0x100000\n\tFILE_NOFOLLOW      = 0x10000000\n\tFILE_DELETE        = 0x10\n\tFILE_RENAME_TO     = 0x20\n\tFILE_RENAME_FROM   = 0x40\n\tUNMOUNTED          = 0x20000000\n\tMOUNTEDOVER        = 0x40000000\n\tFILE_EXCEPTION     = 0x60000070\n)\n\nconst (\n\tTUNNEWPPA = 0x540001\n\tTUNSETPPA = 0x540002\n\n\tI_STR     = 0x5308\n\tI_POP     = 0x5303\n\tI_PUSH    = 0x5302\n\tI_LINK    = 0x530c\n\tI_UNLINK  = 0x530d\n\tI_PLINK   = 0x5316\n\tI_PUNLINK = 0x5317\n\n\tIF_UNITSEL = -0x7ffb8cca\n)\n\ntype strbuf struct {\n\tMaxlen int32\n\tLen    int32\n\tBuf    *int8\n}\n\ntype Strioctl struct {\n\tCmd    int32\n\tTimout int32\n\tLen    int32\n\tDp     *int8\n}\n\ntype Lifreq struct {\n\tName   [32]int8\n\tLifru1 [4]byte\n\tType   uint32\n\tLifru  [336]byte\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_zos_s390x.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build zos && s390x\n\n// Hand edited based on ztypes_linux_s390x.go\n// TODO: auto-generate.\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n\tPathMax        = 0x1000\n)\n\nconst (\n\tSizeofSockaddrAny   = 128\n\tSizeofCmsghdr       = 12\n\tSizeofIPMreq        = 8\n\tSizeofIPv6Mreq      = 20\n\tSizeofICMPv6Filter  = 32\n\tSizeofIPv6MTUInfo   = 32\n\tSizeofInet4Pktinfo  = 8\n\tSizeofInet6Pktinfo  = 20\n\tSizeofLinger        = 8\n\tSizeofSockaddrInet4 = 16\n\tSizeofSockaddrInet6 = 28\n\tSizeofTCPInfo       = 0x68\n\tSizeofUcred         = 12\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype timeval_zos struct { //correct (with padding and all)\n\tSec  int64\n\t_    [4]byte // pad\n\tUsec int32\n}\n\ntype Tms struct { //clock_t is 4-byte unsigned int in zos\n\tUtime  uint32\n\tStime  uint32\n\tCutime uint32\n\tCstime uint32\n}\n\ntype Time_t int64\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Utsname struct {\n\tSysname  [16]byte\n\tNodename [32]byte\n\tRelease  [8]byte\n\tVersion  [8]byte\n\tMachine  [16]byte\n}\n\ntype Ucred struct {\n\tPid int32\n\tUid uint32\n\tGid uint32\n}\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]uint8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [108]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]uint8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\t_    [112]uint8 // pad\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tIov        *Iovec\n\tControl    *byte\n\tFlags      int32\n\tNamelen    int32\n\tIovlen     int32\n\tControllen int32\n}\n\ntype Cmsghdr struct {\n\tLen   int32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet4Pktinfo struct {\n\tAddr    [4]byte /* in_addr */\n\tIfindex uint32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tData [8]uint32\n}\n\ntype TCPInfo struct {\n\tState          uint8\n\tCa_state       uint8\n\tRetransmits    uint8\n\tProbes         uint8\n\tBackoff        uint8\n\tOptions        uint8\n\tRto            uint32\n\tAto            uint32\n\tSnd_mss        uint32\n\tRcv_mss        uint32\n\tUnacked        uint32\n\tSacked         uint32\n\tLost           uint32\n\tRetrans        uint32\n\tFackets        uint32\n\tLast_data_sent uint32\n\tLast_ack_sent  uint32\n\tLast_data_recv uint32\n\tLast_ack_recv  uint32\n\tPmtu           uint32\n\tRcv_ssthresh   uint32\n\tRtt            uint32\n\tRttvar         uint32\n\tSnd_ssthresh   uint32\n\tSnd_cwnd       uint32\n\tAdvmss         uint32\n\tReordering     uint32\n\tRcv_rtt        uint32\n\tRcv_space      uint32\n\tTotal_retrans  uint32\n}\n\ntype _Gid_t uint32\n\ntype rusage_zos struct {\n\tUtime timeval_zos\n\tStime timeval_zos\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\n// { int, short, short } in poll.h\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\ntype Stat_t struct { //Linux Definition\n\tDev     uint64\n\tIno     uint64\n\tNlink   uint64\n\tMode    uint32\n\tUid     uint32\n\tGid     uint32\n\t_       int32\n\tRdev    uint64\n\tSize    int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBlksize int64\n\tBlocks  int64\n\t_       [3]int64\n}\n\ntype Stat_LE_t struct {\n\t_            [4]byte // eye catcher\n\tLength       uint16\n\tVersion      uint16\n\tMode         int32\n\tIno          uint32\n\tDev          uint32\n\tNlink        int32\n\tUid          int32\n\tGid          int32\n\tSize         int64\n\tAtim31       [4]byte\n\tMtim31       [4]byte\n\tCtim31       [4]byte\n\tRdev         uint32\n\tAuditoraudit uint32\n\tUseraudit    uint32\n\tBlksize      int32\n\tCreatim31    [4]byte\n\tAuditID      [16]byte\n\t_            [4]byte // rsrvd1\n\tFile_tag     struct {\n\t\tCcsid   uint16\n\t\tTxtflag uint16 // aggregating Txflag:1 deferred:1 rsvflags:14\n\t}\n\tCharsetID [8]byte\n\tBlocks    int64\n\tGenvalue  uint32\n\tReftim31  [4]byte\n\tFid       [8]byte\n\tFilefmt   byte\n\tFspflag2  byte\n\t_         [2]byte // rsrvd2\n\tCtimemsec int32\n\tSeclabel  [8]byte\n\t_         [4]byte // rsrvd3\n\t_         [4]byte // rsrvd4\n\tAtim      Time_t\n\tMtim      Time_t\n\tCtim      Time_t\n\tCreatim   Time_t\n\tReftim    Time_t\n\t_         [24]byte // rsrvd5\n}\n\ntype Statvfs_t struct {\n\tID          [4]byte\n\tLen         int32\n\tBsize       uint64\n\tBlocks      uint64\n\tUsedspace   uint64\n\tBavail      uint64\n\tFlag        uint64\n\tMaxfilesize int64\n\t_           [16]byte\n\tFrsize      uint64\n\tBfree       uint64\n\tFiles       uint32\n\tFfree       uint32\n\tFavail      uint32\n\tNamemax31   uint32\n\tInvarsec    uint32\n\t_           [4]byte\n\tFsid        uint64\n\tNamemax     uint64\n}\n\ntype Statfs_t struct {\n\tType    uint64\n\tBsize   uint64\n\tBlocks  uint64\n\tBfree   uint64\n\tBavail  uint64\n\tFiles   uint32\n\tFfree   uint32\n\tFsid    uint64\n\tNamelen uint64\n\tFrsize  uint64\n\tFlags   uint64\n\t_       [4]uint64\n}\n\ntype direntLE struct {\n\tReclen uint16\n\tNamlen uint16\n\tIno    uint32\n\tExtra  uintptr\n\tName   [256]byte\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]uint8\n\t_      [5]byte\n}\n\ntype FdSet struct {\n\tBits [64]int32\n}\n\n// This struct is packed on z/OS so it can't be used directly.\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tPid    int32\n}\n\ntype F_cnvrt struct {\n\tCvtcmd int32\n\tPccsid int16\n\tFccsid int16\n}\n\ntype Termios struct {\n\tCflag uint32\n\tIflag uint32\n\tLflag uint32\n\tOflag uint32\n\tCc    [11]uint8\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\ntype W_Mnth struct {\n\tHid   [4]byte\n\tSize  int32\n\tCur1  int32 //32bit pointer\n\tCur2  int32 //^\n\tDevno uint32\n\t_     [4]byte\n}\n\ntype W_Mntent struct {\n\tFstype       uint32\n\tMode         uint32\n\tDev          uint32\n\tParentdev    uint32\n\tRootino      uint32\n\tStatus       byte\n\tDdname       [9]byte\n\tFstname      [9]byte\n\tFsname       [45]byte\n\tPathlen      uint32\n\tMountpoint   [1024]byte\n\tJobname      [8]byte\n\tPID          int32\n\tParmoffset   int32\n\tParmlen      int16\n\tOwner        [8]byte\n\tQuiesceowner [8]byte\n\t_            [38]byte\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\t_      int32\n\tFd     int32\n\tPad    int32\n}\n\ntype InotifyEvent struct {\n\tWd     int32\n\tMask   uint32\n\tCookie uint32\n\tLen    uint32\n\tName   string\n}\n\nconst (\n\tSizeofInotifyEvent = 0x10\n)\n\ntype ConsMsg2 struct {\n\tCm2Format       uint16\n\tCm2R1           uint16\n\tCm2Msglength    uint32\n\tCm2Msg          *byte\n\tCm2R2           [4]byte\n\tCm2R3           [4]byte\n\tCm2Routcde      *uint32\n\tCm2Descr        *uint32\n\tCm2Msgflag      uint32\n\tCm2Token        uint32\n\tCm2Msgid        *uint32\n\tCm2R4           [4]byte\n\tCm2DomToken     uint32\n\tCm2DomMsgid     *uint32\n\tCm2ModCartptr   *byte\n\tCm2ModConsidptr *byte\n\tCm2MsgCart      [8]byte\n\tCm2MsgConsid    [4]byte\n\tCm2R5           [12]byte\n}\n\nconst (\n\tCC_modify        = 1\n\tCC_stop          = 2\n\tCONSOLE_FORMAT_2 = 2\n\tCONSOLE_FORMAT_3 = 3\n\tCONSOLE_HRDCPY   = 0x80000000\n)\n\ntype OpenHow struct {\n\tFlags   uint64\n\tMode    uint64\n\tResolve uint64\n}\n\nconst SizeofOpenHow = 0x18\n\nconst (\n\tRESOLVE_CACHED        = 0x20\n\tRESOLVE_BENEATH       = 0x8\n\tRESOLVE_IN_ROOT       = 0x10\n\tRESOLVE_NO_MAGICLINKS = 0x2\n\tRESOLVE_NO_SYMLINKS   = 0x4\n\tRESOLVE_NO_XDEV       = 0x1\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tErrno int32\n\tCode  int32\n\tPid   int32\n\tUid   uint32\n\t_     [44]byte\n}\n\ntype SysvIpcPerm struct {\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode int32\n}\n\ntype SysvShmDesc struct {\n\tPerm   SysvIpcPerm\n\t_      [4]byte\n\tLpid   int32\n\tCpid   int32\n\tNattch uint32\n\t_      [4]byte\n\t_      [4]byte\n\t_      [4]byte\n\t_      int32\n\t_      uint8\n\t_      uint8\n\t_      uint16\n\t_      *byte\n\tSegsz  uint64\n\tAtime  Time_t\n\tDtime  Time_t\n\tCtime  Time_t\n}\n\ntype SysvShmDesc64 struct {\n\tPerm   SysvIpcPerm\n\t_      [4]byte\n\tLpid   int32\n\tCpid   int32\n\tNattch uint32\n\t_      [4]byte\n\t_      [4]byte\n\t_      [4]byte\n\t_      int32\n\t_      byte\n\t_      uint8\n\t_      uint16\n\t_      *byte\n\tSegsz  uint64\n\tAtime  int64\n\tDtime  int64\n\tCtime  int64\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/aliases.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build windows\n\npackage windows\n\nimport \"syscall\"\n\ntype Errno = syscall.Errno\ntype SysProcAttr = syscall.SysProcAttr\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/dll_windows.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage windows\n\nimport (\n\t\"sync\"\n\t\"sync/atomic\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// We need to use LoadLibrary and GetProcAddress from the Go runtime, because\n// the these symbols are loaded by the system linker and are required to\n// dynamically load additional symbols. Note that in the Go runtime, these\n// return syscall.Handle and syscall.Errno, but these are the same, in fact,\n// as windows.Handle and windows.Errno, and we intend to keep these the same.\n\n//go:linkname syscall_loadlibrary syscall.loadlibrary\nfunc syscall_loadlibrary(filename *uint16) (handle Handle, err Errno)\n\n//go:linkname syscall_getprocaddress syscall.getprocaddress\nfunc syscall_getprocaddress(handle Handle, procname *uint8) (proc uintptr, err Errno)\n\n// DLLError describes reasons for DLL load failures.\ntype DLLError struct {\n\tErr     error\n\tObjName string\n\tMsg     string\n}\n\nfunc (e *DLLError) Error() string { return e.Msg }\n\nfunc (e *DLLError) Unwrap() error { return e.Err }\n\n// A DLL implements access to a single DLL.\ntype DLL struct {\n\tName   string\n\tHandle Handle\n}\n\n// LoadDLL loads DLL file into memory.\n//\n// Warning: using LoadDLL without an absolute path name is subject to\n// DLL preloading attacks. To safely load a system DLL, use [NewLazySystemDLL],\n// or use [LoadLibraryEx] directly.\nfunc LoadDLL(name string) (dll *DLL, err error) {\n\tnamep, err := UTF16PtrFromString(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\th, e := syscall_loadlibrary(namep)\n\tif e != 0 {\n\t\treturn nil, &DLLError{\n\t\t\tErr:     e,\n\t\t\tObjName: name,\n\t\t\tMsg:     \"Failed to load \" + name + \": \" + e.Error(),\n\t\t}\n\t}\n\td := &DLL{\n\t\tName:   name,\n\t\tHandle: h,\n\t}\n\treturn d, nil\n}\n\n// MustLoadDLL is like LoadDLL but panics if load operation fails.\nfunc MustLoadDLL(name string) *DLL {\n\td, e := LoadDLL(name)\n\tif e != nil {\n\t\tpanic(e)\n\t}\n\treturn d\n}\n\n// FindProc searches DLL d for procedure named name and returns *Proc\n// if found. It returns an error if search fails.\nfunc (d *DLL) FindProc(name string) (proc *Proc, err error) {\n\tnamep, err := BytePtrFromString(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\ta, e := syscall_getprocaddress(d.Handle, namep)\n\tif e != 0 {\n\t\treturn nil, &DLLError{\n\t\t\tErr:     e,\n\t\t\tObjName: name,\n\t\t\tMsg:     \"Failed to find \" + name + \" procedure in \" + d.Name + \": \" + e.Error(),\n\t\t}\n\t}\n\tp := &Proc{\n\t\tDll:  d,\n\t\tName: name,\n\t\taddr: a,\n\t}\n\treturn p, nil\n}\n\n// MustFindProc is like FindProc but panics if search fails.\nfunc (d *DLL) MustFindProc(name string) *Proc {\n\tp, e := d.FindProc(name)\n\tif e != nil {\n\t\tpanic(e)\n\t}\n\treturn p\n}\n\n// FindProcByOrdinal searches DLL d for procedure by ordinal and returns *Proc\n// if found. It returns an error if search fails.\nfunc (d *DLL) FindProcByOrdinal(ordinal uintptr) (proc *Proc, err error) {\n\ta, e := GetProcAddressByOrdinal(d.Handle, ordinal)\n\tname := \"#\" + itoa(int(ordinal))\n\tif e != nil {\n\t\treturn nil, &DLLError{\n\t\t\tErr:     e,\n\t\t\tObjName: name,\n\t\t\tMsg:     \"Failed to find \" + name + \" procedure in \" + d.Name + \": \" + e.Error(),\n\t\t}\n\t}\n\tp := &Proc{\n\t\tDll:  d,\n\t\tName: name,\n\t\taddr: a,\n\t}\n\treturn p, nil\n}\n\n// MustFindProcByOrdinal is like FindProcByOrdinal but panics if search fails.\nfunc (d *DLL) MustFindProcByOrdinal(ordinal uintptr) *Proc {\n\tp, e := d.FindProcByOrdinal(ordinal)\n\tif e != nil {\n\t\tpanic(e)\n\t}\n\treturn p\n}\n\n// Release unloads DLL d from memory.\nfunc (d *DLL) Release() (err error) {\n\treturn FreeLibrary(d.Handle)\n}\n\n// A Proc implements access to a procedure inside a DLL.\ntype Proc struct {\n\tDll  *DLL\n\tName string\n\taddr uintptr\n}\n\n// Addr returns the address of the procedure represented by p.\n// The return value can be passed to Syscall to run the procedure.\nfunc (p *Proc) Addr() uintptr {\n\treturn p.addr\n}\n\n//go:uintptrescapes\n\n// Call executes procedure p with arguments a. It will panic, if more than 15 arguments\n// are supplied.\n//\n// The returned error is always non-nil, constructed from the result of GetLastError.\n// Callers must inspect the primary return value to decide whether an error occurred\n// (according to the semantics of the specific function being called) before consulting\n// the error. The error will be guaranteed to contain windows.Errno.\nfunc (p *Proc) Call(a ...uintptr) (r1, r2 uintptr, lastErr error) {\n\tswitch len(a) {\n\tcase 0:\n\t\treturn syscall.Syscall(p.Addr(), uintptr(len(a)), 0, 0, 0)\n\tcase 1:\n\t\treturn syscall.Syscall(p.Addr(), uintptr(len(a)), a[0], 0, 0)\n\tcase 2:\n\t\treturn syscall.Syscall(p.Addr(), uintptr(len(a)), a[0], a[1], 0)\n\tcase 3:\n\t\treturn syscall.Syscall(p.Addr(), uintptr(len(a)), a[0], a[1], a[2])\n\tcase 4:\n\t\treturn syscall.Syscall6(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], 0, 0)\n\tcase 5:\n\t\treturn syscall.Syscall6(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], 0)\n\tcase 6:\n\t\treturn syscall.Syscall6(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5])\n\tcase 7:\n\t\treturn syscall.Syscall9(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], 0, 0)\n\tcase 8:\n\t\treturn syscall.Syscall9(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], 0)\n\tcase 9:\n\t\treturn syscall.Syscall9(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8])\n\tcase 10:\n\t\treturn syscall.Syscall12(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], 0, 0)\n\tcase 11:\n\t\treturn syscall.Syscall12(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], 0)\n\tcase 12:\n\t\treturn syscall.Syscall12(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11])\n\tcase 13:\n\t\treturn syscall.Syscall15(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], 0, 0)\n\tcase 14:\n\t\treturn syscall.Syscall15(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], 0)\n\tcase 15:\n\t\treturn syscall.Syscall15(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14])\n\tdefault:\n\t\tpanic(\"Call \" + p.Name + \" with too many arguments \" + itoa(len(a)) + \".\")\n\t}\n}\n\n// A LazyDLL implements access to a single DLL.\n// It will delay the load of the DLL until the first\n// call to its Handle method or to one of its\n// LazyProc's Addr method.\ntype LazyDLL struct {\n\tName string\n\n\t// System determines whether the DLL must be loaded from the\n\t// Windows System directory, bypassing the normal DLL search\n\t// path.\n\tSystem bool\n\n\tmu  sync.Mutex\n\tdll *DLL // non nil once DLL is loaded\n}\n\n// Load loads DLL file d.Name into memory. It returns an error if fails.\n// Load will not try to load DLL, if it is already loaded into memory.\nfunc (d *LazyDLL) Load() error {\n\t// Non-racy version of:\n\t// if d.dll != nil {\n\tif atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(&d.dll))) != nil {\n\t\treturn nil\n\t}\n\td.mu.Lock()\n\tdefer d.mu.Unlock()\n\tif d.dll != nil {\n\t\treturn nil\n\t}\n\n\t// kernel32.dll is special, since it's where LoadLibraryEx comes from.\n\t// The kernel already special-cases its name, so it's always\n\t// loaded from system32.\n\tvar dll *DLL\n\tvar err error\n\tif d.Name == \"kernel32.dll\" {\n\t\tdll, err = LoadDLL(d.Name)\n\t} else {\n\t\tdll, err = loadLibraryEx(d.Name, d.System)\n\t}\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// Non-racy version of:\n\t// d.dll = dll\n\tatomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(&d.dll)), unsafe.Pointer(dll))\n\treturn nil\n}\n\n// mustLoad is like Load but panics if search fails.\nfunc (d *LazyDLL) mustLoad() {\n\te := d.Load()\n\tif e != nil {\n\t\tpanic(e)\n\t}\n}\n\n// Handle returns d's module handle.\nfunc (d *LazyDLL) Handle() uintptr {\n\td.mustLoad()\n\treturn uintptr(d.dll.Handle)\n}\n\n// NewProc returns a LazyProc for accessing the named procedure in the DLL d.\nfunc (d *LazyDLL) NewProc(name string) *LazyProc {\n\treturn &LazyProc{l: d, Name: name}\n}\n\n// NewLazyDLL creates new LazyDLL associated with DLL file.\n//\n// Warning: using NewLazyDLL without an absolute path name is subject to\n// DLL preloading attacks. To safely load a system DLL, use [NewLazySystemDLL].\nfunc NewLazyDLL(name string) *LazyDLL {\n\treturn &LazyDLL{Name: name}\n}\n\n// NewLazySystemDLL is like NewLazyDLL, but will only\n// search Windows System directory for the DLL if name is\n// a base name (like \"advapi32.dll\").\nfunc NewLazySystemDLL(name string) *LazyDLL {\n\treturn &LazyDLL{Name: name, System: true}\n}\n\n// A LazyProc implements access to a procedure inside a LazyDLL.\n// It delays the lookup until the Addr method is called.\ntype LazyProc struct {\n\tName string\n\n\tmu   sync.Mutex\n\tl    *LazyDLL\n\tproc *Proc\n}\n\n// Find searches DLL for procedure named p.Name. It returns\n// an error if search fails. Find will not search procedure,\n// if it is already found and loaded into memory.\nfunc (p *LazyProc) Find() error {\n\t// Non-racy version of:\n\t// if p.proc == nil {\n\tif atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(&p.proc))) == nil {\n\t\tp.mu.Lock()\n\t\tdefer p.mu.Unlock()\n\t\tif p.proc == nil {\n\t\t\te := p.l.Load()\n\t\t\tif e != nil {\n\t\t\t\treturn e\n\t\t\t}\n\t\t\tproc, e := p.l.dll.FindProc(p.Name)\n\t\t\tif e != nil {\n\t\t\t\treturn e\n\t\t\t}\n\t\t\t// Non-racy version of:\n\t\t\t// p.proc = proc\n\t\t\tatomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(&p.proc)), unsafe.Pointer(proc))\n\t\t}\n\t}\n\treturn nil\n}\n\n// mustFind is like Find but panics if search fails.\nfunc (p *LazyProc) mustFind() {\n\te := p.Find()\n\tif e != nil {\n\t\tpanic(e)\n\t}\n}\n\n// Addr returns the address of the procedure represented by p.\n// The return value can be passed to Syscall to run the procedure.\n// It will panic if the procedure cannot be found.\nfunc (p *LazyProc) Addr() uintptr {\n\tp.mustFind()\n\treturn p.proc.Addr()\n}\n\n//go:uintptrescapes\n\n// Call executes procedure p with arguments a. It will panic, if more than 15 arguments\n// are supplied. It will also panic if the procedure cannot be found.\n//\n// The returned error is always non-nil, constructed from the result of GetLastError.\n// Callers must inspect the primary return value to decide whether an error occurred\n// (according to the semantics of the specific function being called) before consulting\n// the error. The error will be guaranteed to contain windows.Errno.\nfunc (p *LazyProc) Call(a ...uintptr) (r1, r2 uintptr, lastErr error) {\n\tp.mustFind()\n\treturn p.proc.Call(a...)\n}\n\nvar canDoSearchSystem32Once struct {\n\tsync.Once\n\tv bool\n}\n\nfunc initCanDoSearchSystem32() {\n\t// https://msdn.microsoft.com/en-us/library/ms684179(v=vs.85).aspx says:\n\t// \"Windows 7, Windows Server 2008 R2, Windows Vista, and Windows\n\t// Server 2008: The LOAD_LIBRARY_SEARCH_* flags are available on\n\t// systems that have KB2533623 installed. To determine whether the\n\t// flags are available, use GetProcAddress to get the address of the\n\t// AddDllDirectory, RemoveDllDirectory, or SetDefaultDllDirectories\n\t// function. If GetProcAddress succeeds, the LOAD_LIBRARY_SEARCH_*\n\t// flags can be used with LoadLibraryEx.\"\n\tcanDoSearchSystem32Once.v = (modkernel32.NewProc(\"AddDllDirectory\").Find() == nil)\n}\n\nfunc canDoSearchSystem32() bool {\n\tcanDoSearchSystem32Once.Do(initCanDoSearchSystem32)\n\treturn canDoSearchSystem32Once.v\n}\n\nfunc isBaseName(name string) bool {\n\tfor _, c := range name {\n\t\tif c == ':' || c == '/' || c == '\\\\' {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// loadLibraryEx wraps the Windows LoadLibraryEx function.\n//\n// See https://msdn.microsoft.com/en-us/library/windows/desktop/ms684179(v=vs.85).aspx\n//\n// If name is not an absolute path, LoadLibraryEx searches for the DLL\n// in a variety of automatic locations unless constrained by flags.\n// See: https://msdn.microsoft.com/en-us/library/ff919712%28VS.85%29.aspx\nfunc loadLibraryEx(name string, system bool) (*DLL, error) {\n\tloadDLL := name\n\tvar flags uintptr\n\tif system {\n\t\tif canDoSearchSystem32() {\n\t\t\tflags = LOAD_LIBRARY_SEARCH_SYSTEM32\n\t\t} else if isBaseName(name) {\n\t\t\t// WindowsXP or unpatched Windows machine\n\t\t\t// trying to load \"foo.dll\" out of the system\n\t\t\t// folder, but LoadLibraryEx doesn't support\n\t\t\t// that yet on their system, so emulate it.\n\t\t\tsystemdir, err := GetSystemDirectory()\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tloadDLL = systemdir + \"\\\\\" + name\n\t\t}\n\t}\n\th, err := LoadLibraryEx(loadDLL, 0, flags)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &DLL{Name: name, Handle: h}, nil\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/env_windows.go",
    "content": "// Copyright 2010 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Windows environment variables.\n\npackage windows\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc Getenv(key string) (value string, found bool) {\n\treturn syscall.Getenv(key)\n}\n\nfunc Setenv(key, value string) error {\n\treturn syscall.Setenv(key, value)\n}\n\nfunc Clearenv() {\n\tsyscall.Clearenv()\n}\n\nfunc Environ() []string {\n\treturn syscall.Environ()\n}\n\n// Returns a default environment associated with the token, rather than the current\n// process. If inheritExisting is true, then this environment also inherits the\n// environment of the current process.\nfunc (token Token) Environ(inheritExisting bool) (env []string, err error) {\n\tvar block *uint16\n\terr = CreateEnvironmentBlock(&block, token, inheritExisting)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer DestroyEnvironmentBlock(block)\n\tsize := unsafe.Sizeof(*block)\n\tfor *block != 0 {\n\t\t// find NUL terminator\n\t\tend := unsafe.Pointer(block)\n\t\tfor *(*uint16)(end) != 0 {\n\t\t\tend = unsafe.Add(end, size)\n\t\t}\n\n\t\tentry := unsafe.Slice(block, (uintptr(end)-uintptr(unsafe.Pointer(block)))/size)\n\t\tenv = append(env, UTF16ToString(entry))\n\t\tblock = (*uint16)(unsafe.Add(end, size))\n\t}\n\treturn env, nil\n}\n\nfunc Unsetenv(key string) error {\n\treturn syscall.Unsetenv(key)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/eventlog.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build windows\n\npackage windows\n\nconst (\n\tEVENTLOG_SUCCESS          = 0\n\tEVENTLOG_ERROR_TYPE       = 1\n\tEVENTLOG_WARNING_TYPE     = 2\n\tEVENTLOG_INFORMATION_TYPE = 4\n\tEVENTLOG_AUDIT_SUCCESS    = 8\n\tEVENTLOG_AUDIT_FAILURE    = 16\n)\n\n//sys\tRegisterEventSource(uncServerName *uint16, sourceName *uint16) (handle Handle, err error) [failretval==0] = advapi32.RegisterEventSourceW\n//sys\tDeregisterEventSource(handle Handle) (err error) = advapi32.DeregisterEventSource\n//sys\tReportEvent(log Handle, etype uint16, category uint16, eventId uint32, usrSId uintptr, numStrings uint16, dataSize uint32, strings **uint16, rawData *byte) (err error) = advapi32.ReportEventW\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/exec_windows.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Fork, exec, wait, etc.\n\npackage windows\n\nimport (\n\terrorspkg \"errors\"\n\t\"unsafe\"\n)\n\n// EscapeArg rewrites command line argument s as prescribed\n// in http://msdn.microsoft.com/en-us/library/ms880421.\n// This function returns \"\" (2 double quotes) if s is empty.\n// Alternatively, these transformations are done:\n//   - every back slash (\\) is doubled, but only if immediately\n//     followed by double quote (\");\n//   - every double quote (\") is escaped by back slash (\\);\n//   - finally, s is wrapped with double quotes (arg -> \"arg\"),\n//     but only if there is space or tab inside s.\nfunc EscapeArg(s string) string {\n\tif len(s) == 0 {\n\t\treturn `\"\"`\n\t}\n\tn := len(s)\n\thasSpace := false\n\tfor i := 0; i < len(s); i++ {\n\t\tswitch s[i] {\n\t\tcase '\"', '\\\\':\n\t\t\tn++\n\t\tcase ' ', '\\t':\n\t\t\thasSpace = true\n\t\t}\n\t}\n\tif hasSpace {\n\t\tn += 2 // Reserve space for quotes.\n\t}\n\tif n == len(s) {\n\t\treturn s\n\t}\n\n\tqs := make([]byte, n)\n\tj := 0\n\tif hasSpace {\n\t\tqs[j] = '\"'\n\t\tj++\n\t}\n\tslashes := 0\n\tfor i := 0; i < len(s); i++ {\n\t\tswitch s[i] {\n\t\tdefault:\n\t\t\tslashes = 0\n\t\t\tqs[j] = s[i]\n\t\tcase '\\\\':\n\t\t\tslashes++\n\t\t\tqs[j] = s[i]\n\t\tcase '\"':\n\t\t\tfor ; slashes > 0; slashes-- {\n\t\t\t\tqs[j] = '\\\\'\n\t\t\t\tj++\n\t\t\t}\n\t\t\tqs[j] = '\\\\'\n\t\t\tj++\n\t\t\tqs[j] = s[i]\n\t\t}\n\t\tj++\n\t}\n\tif hasSpace {\n\t\tfor ; slashes > 0; slashes-- {\n\t\t\tqs[j] = '\\\\'\n\t\t\tj++\n\t\t}\n\t\tqs[j] = '\"'\n\t\tj++\n\t}\n\treturn string(qs[:j])\n}\n\n// ComposeCommandLine escapes and joins the given arguments suitable for use as a Windows command line,\n// in CreateProcess's CommandLine argument, CreateService/ChangeServiceConfig's BinaryPathName argument,\n// or any program that uses CommandLineToArgv.\nfunc ComposeCommandLine(args []string) string {\n\tif len(args) == 0 {\n\t\treturn \"\"\n\t}\n\n\t// Per https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-commandlinetoargvw:\n\t// “This function accepts command lines that contain a program name; the\n\t// program name can be enclosed in quotation marks or not.”\n\t//\n\t// Unfortunately, it provides no means of escaping interior quotation marks\n\t// within that program name, and we have no way to report them here.\n\tprog := args[0]\n\tmustQuote := len(prog) == 0\n\tfor i := 0; i < len(prog); i++ {\n\t\tc := prog[i]\n\t\tif c <= ' ' || (c == '\"' && i == 0) {\n\t\t\t// Force quotes for not only the ASCII space and tab as described in the\n\t\t\t// MSDN article, but also ASCII control characters.\n\t\t\t// The documentation for CommandLineToArgvW doesn't say what happens when\n\t\t\t// the first argument is not a valid program name, but it empirically\n\t\t\t// seems to drop unquoted control characters.\n\t\t\tmustQuote = true\n\t\t\tbreak\n\t\t}\n\t}\n\tvar commandLine []byte\n\tif mustQuote {\n\t\tcommandLine = make([]byte, 0, len(prog)+2)\n\t\tcommandLine = append(commandLine, '\"')\n\t\tfor i := 0; i < len(prog); i++ {\n\t\t\tc := prog[i]\n\t\t\tif c == '\"' {\n\t\t\t\t// This quote would interfere with our surrounding quotes.\n\t\t\t\t// We have no way to report an error, so just strip out\n\t\t\t\t// the offending character instead.\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tcommandLine = append(commandLine, c)\n\t\t}\n\t\tcommandLine = append(commandLine, '\"')\n\t} else {\n\t\tif len(args) == 1 {\n\t\t\t// args[0] is a valid command line representing itself.\n\t\t\t// No need to allocate a new slice or string for it.\n\t\t\treturn prog\n\t\t}\n\t\tcommandLine = []byte(prog)\n\t}\n\n\tfor _, arg := range args[1:] {\n\t\tcommandLine = append(commandLine, ' ')\n\t\t// TODO(bcmills): since we're already appending to a slice, it would be nice\n\t\t// to avoid the intermediate allocations of EscapeArg.\n\t\t// Perhaps we can factor out an appendEscapedArg function.\n\t\tcommandLine = append(commandLine, EscapeArg(arg)...)\n\t}\n\treturn string(commandLine)\n}\n\n// DecomposeCommandLine breaks apart its argument command line into unescaped parts using CommandLineToArgv,\n// as gathered from GetCommandLine, QUERY_SERVICE_CONFIG's BinaryPathName argument, or elsewhere that\n// command lines are passed around.\n// DecomposeCommandLine returns an error if commandLine contains NUL.\nfunc DecomposeCommandLine(commandLine string) ([]string, error) {\n\tif len(commandLine) == 0 {\n\t\treturn []string{}, nil\n\t}\n\tutf16CommandLine, err := UTF16FromString(commandLine)\n\tif err != nil {\n\t\treturn nil, errorspkg.New(\"string with NUL passed to DecomposeCommandLine\")\n\t}\n\tvar argc int32\n\targv, err := commandLineToArgv(&utf16CommandLine[0], &argc)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer LocalFree(Handle(unsafe.Pointer(argv)))\n\n\tvar args []string\n\tfor _, p := range unsafe.Slice(argv, argc) {\n\t\targs = append(args, UTF16PtrToString(p))\n\t}\n\treturn args, nil\n}\n\n// CommandLineToArgv parses a Unicode command line string and sets\n// argc to the number of parsed arguments.\n//\n// The returned memory should be freed using a single call to LocalFree.\n//\n// Note that although the return type of CommandLineToArgv indicates 8192\n// entries of up to 8192 characters each, the actual count of parsed arguments\n// may exceed 8192, and the documentation for CommandLineToArgvW does not mention\n// any bound on the lengths of the individual argument strings.\n// (See https://go.dev/issue/63236.)\nfunc CommandLineToArgv(cmd *uint16, argc *int32) (argv *[8192]*[8192]uint16, err error) {\n\targp, err := commandLineToArgv(cmd, argc)\n\targv = (*[8192]*[8192]uint16)(unsafe.Pointer(argp))\n\treturn argv, err\n}\n\nfunc CloseOnExec(fd Handle) {\n\tSetHandleInformation(Handle(fd), HANDLE_FLAG_INHERIT, 0)\n}\n\n// FullPath retrieves the full path of the specified file.\nfunc FullPath(name string) (path string, err error) {\n\tp, err := UTF16PtrFromString(name)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tn := uint32(100)\n\tfor {\n\t\tbuf := make([]uint16, n)\n\t\tn, err = GetFullPathName(p, uint32(len(buf)), &buf[0], nil)\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t\tif n <= uint32(len(buf)) {\n\t\t\treturn UTF16ToString(buf[:n]), nil\n\t\t}\n\t}\n}\n\n// NewProcThreadAttributeList allocates a new ProcThreadAttributeListContainer, with the requested maximum number of attributes.\nfunc NewProcThreadAttributeList(maxAttrCount uint32) (*ProcThreadAttributeListContainer, error) {\n\tvar size uintptr\n\terr := initializeProcThreadAttributeList(nil, maxAttrCount, 0, &size)\n\tif err != ERROR_INSUFFICIENT_BUFFER {\n\t\tif err == nil {\n\t\t\treturn nil, errorspkg.New(\"unable to query buffer size from InitializeProcThreadAttributeList\")\n\t\t}\n\t\treturn nil, err\n\t}\n\talloc, err := LocalAlloc(LMEM_FIXED, uint32(size))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\t// size is guaranteed to be ≥1 by InitializeProcThreadAttributeList.\n\tal := &ProcThreadAttributeListContainer{data: (*ProcThreadAttributeList)(unsafe.Pointer(alloc))}\n\terr = initializeProcThreadAttributeList(al.data, maxAttrCount, 0, &size)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn al, err\n}\n\n// Update modifies the ProcThreadAttributeList using UpdateProcThreadAttribute.\nfunc (al *ProcThreadAttributeListContainer) Update(attribute uintptr, value unsafe.Pointer, size uintptr) error {\n\tal.pointers = append(al.pointers, value)\n\treturn updateProcThreadAttribute(al.data, 0, attribute, value, size, nil, nil)\n}\n\n// Delete frees ProcThreadAttributeList's resources.\nfunc (al *ProcThreadAttributeListContainer) Delete() {\n\tdeleteProcThreadAttributeList(al.data)\n\tLocalFree(Handle(unsafe.Pointer(al.data)))\n\tal.data = nil\n\tal.pointers = nil\n}\n\n// List returns the actual ProcThreadAttributeList to be passed to StartupInfoEx.\nfunc (al *ProcThreadAttributeListContainer) List() *ProcThreadAttributeList {\n\treturn al.data\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/memory_windows.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage windows\n\nconst (\n\tMEM_COMMIT      = 0x00001000\n\tMEM_RESERVE     = 0x00002000\n\tMEM_DECOMMIT    = 0x00004000\n\tMEM_RELEASE     = 0x00008000\n\tMEM_RESET       = 0x00080000\n\tMEM_TOP_DOWN    = 0x00100000\n\tMEM_WRITE_WATCH = 0x00200000\n\tMEM_PHYSICAL    = 0x00400000\n\tMEM_RESET_UNDO  = 0x01000000\n\tMEM_LARGE_PAGES = 0x20000000\n\n\tPAGE_NOACCESS          = 0x00000001\n\tPAGE_READONLY          = 0x00000002\n\tPAGE_READWRITE         = 0x00000004\n\tPAGE_WRITECOPY         = 0x00000008\n\tPAGE_EXECUTE           = 0x00000010\n\tPAGE_EXECUTE_READ      = 0x00000020\n\tPAGE_EXECUTE_READWRITE = 0x00000040\n\tPAGE_EXECUTE_WRITECOPY = 0x00000080\n\tPAGE_GUARD             = 0x00000100\n\tPAGE_NOCACHE           = 0x00000200\n\tPAGE_WRITECOMBINE      = 0x00000400\n\tPAGE_TARGETS_INVALID   = 0x40000000\n\tPAGE_TARGETS_NO_UPDATE = 0x40000000\n\n\tQUOTA_LIMITS_HARDWS_MIN_DISABLE = 0x00000002\n\tQUOTA_LIMITS_HARDWS_MIN_ENABLE  = 0x00000001\n\tQUOTA_LIMITS_HARDWS_MAX_DISABLE = 0x00000008\n\tQUOTA_LIMITS_HARDWS_MAX_ENABLE  = 0x00000004\n)\n\ntype MemoryBasicInformation struct {\n\tBaseAddress       uintptr\n\tAllocationBase    uintptr\n\tAllocationProtect uint32\n\tPartitionId       uint16\n\tRegionSize        uintptr\n\tState             uint32\n\tProtect           uint32\n\tType              uint32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/mkerrors.bash",
    "content": "#!/bin/bash\n\n# Copyright 2019 The Go Authors. All rights reserved.\n# Use of this source code is governed by a BSD-style\n# license that can be found in the LICENSE file.\n\nset -e\nshopt -s nullglob\n\nwinerror=\"$(printf '%s\\n' \"/mnt/c/Program Files (x86)/Windows Kits/\"/*/Include/*/shared/winerror.h | sort -Vr | head -n 1)\"\n[[ -n $winerror ]] || { echo \"Unable to find winerror.h\" >&2; exit 1; }\nntstatus=\"$(printf '%s\\n' \"/mnt/c/Program Files (x86)/Windows Kits/\"/*/Include/*/shared/ntstatus.h | sort -Vr | head -n 1)\"\n[[ -n $ntstatus ]] || { echo \"Unable to find ntstatus.h\" >&2; exit 1; }\n\ndeclare -A errors\n\n{\n\techo \"// Code generated by 'mkerrors.bash'; DO NOT EDIT.\"\n\techo\n\techo \"package windows\"\n\techo \"import \\\"syscall\\\"\"\n\techo \"const (\"\n\n\twhile read -r line; do\n\t\tunset vtype\n\t\tif [[ $line =~ ^#define\\ +([A-Z0-9_]+k?)\\ +([A-Z0-9_]+\\()?([A-Z][A-Z0-9_]+k?)\\)? ]]; then\n\t\t\tkey=\"${BASH_REMATCH[1]}\"\n\t\t\tvalue=\"${BASH_REMATCH[3]}\"\n\t\telif [[ $line =~ ^#define\\ +([A-Z0-9_]+k?)\\ +([A-Z0-9_]+\\()?((0x)?[0-9A-Fa-f]+)L?\\)? ]]; then\n\t\t\tkey=\"${BASH_REMATCH[1]}\"\n\t\t\tvalue=\"${BASH_REMATCH[3]}\"\n\t\t\tvtype=\"${BASH_REMATCH[2]}\"\n\t\telif [[ $line =~ ^#define\\ +([A-Z0-9_]+k?)\\ +\\(\\(([A-Z]+)\\)((0x)?[0-9A-Fa-f]+)L?\\) ]]; then\n\t\t\tkey=\"${BASH_REMATCH[1]}\"\n\t\t\tvalue=\"${BASH_REMATCH[3]}\"\n\t\t\tvtype=\"${BASH_REMATCH[2]}\"\n\t\telse\n\t\t\tcontinue\n\t\tfi\n\t\t[[ -n $key && -n $value ]] || continue\n\t\t[[ -z ${errors[\"$key\"]} ]] || continue\n\t\terrors[\"$key\"]=\"$value\"\n\t\tif [[ -v vtype ]]; then\n\t\t\tif [[ $key == FACILITY_* || $key == NO_ERROR ]]; then\n\t\t\t\tvtype=\"\"\n\t\t\telif [[ $vtype == *HANDLE* || $vtype == *HRESULT* ]]; then\n\t\t\t\tvtype=\"Handle\"\n\t\t\telse\n\t\t\t\tvtype=\"syscall.Errno\"\n\t\t\tfi\n\t\t\tlast_vtype=\"$vtype\"\n\t\telse\n\t\t\tvtype=\"\"\n\t\t\tif [[ $last_vtype == Handle && $value == NO_ERROR ]]; then\n\t\t\t\tvalue=\"S_OK\"\n\t\t\telif [[ $last_vtype == syscall.Errno && $value == NO_ERROR ]]; then\n\t\t\t\tvalue=\"ERROR_SUCCESS\"\n\t\t\tfi\n\t\tfi\n\n\t\techo \"$key $vtype = $value\"\n\tdone < \"$winerror\"\n\n\twhile read -r line; do\n\t\t[[ $line =~ ^#define\\ (STATUS_[^\\s]+)\\ +\\(\\(NTSTATUS\\)((0x)?[0-9a-fA-F]+)L?\\) ]] || continue\n\t\techo \"${BASH_REMATCH[1]} NTStatus = ${BASH_REMATCH[2]}\"\n\tdone < \"$ntstatus\"\n\n\techo \")\"\n} | gofmt > \"zerrors_windows.go\"\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/mkknownfolderids.bash",
    "content": "#!/bin/bash\n\n# Copyright 2019 The Go Authors. All rights reserved.\n# Use of this source code is governed by a BSD-style\n# license that can be found in the LICENSE file.\n\nset -e\nshopt -s nullglob\n\nknownfolders=\"$(printf '%s\\n' \"/mnt/c/Program Files (x86)/Windows Kits/\"/*/Include/*/um/KnownFolders.h | sort -Vr | head -n 1)\"\n[[ -n $knownfolders ]] || { echo \"Unable to find KnownFolders.h\" >&2; exit 1; }\n\n{\n\techo \"// Code generated by 'mkknownfolderids.bash'; DO NOT EDIT.\"\n\techo\n\techo \"package windows\"\n\techo \"type KNOWNFOLDERID GUID\"\n\techo \"var (\"\n\twhile read -r line; do\n\t\t[[ $line =~ DEFINE_KNOWN_FOLDER\\((FOLDERID_[^,]+),[\\t\\ ]*(0x[^,]+),[\\t\\ ]*(0x[^,]+),[\\t\\ ]*(0x[^,]+),[\\t\\ ]*(0x[^,]+),[\\t\\ ]*(0x[^,]+),[\\t\\ ]*(0x[^,]+),[\\t\\ ]*(0x[^,]+),[\\t\\ ]*(0x[^,]+),[\\t\\ ]*(0x[^,]+),[\\t\\ ]*(0x[^,]+),[\\t\\ ]*(0x[^,]+)\\) ]] || continue\n\t\tprintf \"%s = &KNOWNFOLDERID{0x%08x, 0x%04x, 0x%04x, [8]byte{0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x}}\\n\" \\\n\t\t\t\"${BASH_REMATCH[1]}\" $(( \"${BASH_REMATCH[2]}\" )) $(( \"${BASH_REMATCH[3]}\" )) $(( \"${BASH_REMATCH[4]}\" )) \\\n\t\t\t$(( \"${BASH_REMATCH[5]}\" )) $(( \"${BASH_REMATCH[6]}\" )) $(( \"${BASH_REMATCH[7]}\" )) $(( \"${BASH_REMATCH[8]}\" )) \\\n\t\t\t$(( \"${BASH_REMATCH[9]}\" )) $(( \"${BASH_REMATCH[10]}\" )) $(( \"${BASH_REMATCH[11]}\" )) $(( \"${BASH_REMATCH[12]}\" ))\n\tdone < \"$knownfolders\"\n\techo \")\"\n} | gofmt > \"zknownfolderids_windows.go\"\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/mksyscall.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build generate\n\npackage windows\n\n//go:generate go run golang.org/x/sys/windows/mkwinsyscall -output zsyscall_windows.go eventlog.go service.go syscall_windows.go security_windows.go setupapi_windows.go\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/race.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build windows && race\n\npackage windows\n\nimport (\n\t\"runtime\"\n\t\"unsafe\"\n)\n\nconst raceenabled = true\n\nfunc raceAcquire(addr unsafe.Pointer) {\n\truntime.RaceAcquire(addr)\n}\n\nfunc raceReleaseMerge(addr unsafe.Pointer) {\n\truntime.RaceReleaseMerge(addr)\n}\n\nfunc raceReadRange(addr unsafe.Pointer, len int) {\n\truntime.RaceReadRange(addr, len)\n}\n\nfunc raceWriteRange(addr unsafe.Pointer, len int) {\n\truntime.RaceWriteRange(addr, len)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/race0.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build windows && !race\n\npackage windows\n\nimport (\n\t\"unsafe\"\n)\n\nconst raceenabled = false\n\nfunc raceAcquire(addr unsafe.Pointer) {\n}\n\nfunc raceReleaseMerge(addr unsafe.Pointer) {\n}\n\nfunc raceReadRange(addr unsafe.Pointer, len int) {\n}\n\nfunc raceWriteRange(addr unsafe.Pointer, len int) {\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/security_windows.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage windows\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nconst (\n\tNameUnknown          = 0\n\tNameFullyQualifiedDN = 1\n\tNameSamCompatible    = 2\n\tNameDisplay          = 3\n\tNameUniqueId         = 6\n\tNameCanonical        = 7\n\tNameUserPrincipal    = 8\n\tNameCanonicalEx      = 9\n\tNameServicePrincipal = 10\n\tNameDnsDomain        = 12\n)\n\n// This function returns 1 byte BOOLEAN rather than the 4 byte BOOL.\n// http://blogs.msdn.com/b/drnick/archive/2007/12/19/windows-and-upn-format-credentials.aspx\n//sys\tTranslateName(accName *uint16, accNameFormat uint32, desiredNameFormat uint32, translatedName *uint16, nSize *uint32) (err error) [failretval&0xff==0] = secur32.TranslateNameW\n//sys\tGetUserNameEx(nameFormat uint32, nameBuffre *uint16, nSize *uint32) (err error) [failretval&0xff==0] = secur32.GetUserNameExW\n\n// TranslateAccountName converts a directory service\n// object name from one format to another.\nfunc TranslateAccountName(username string, from, to uint32, initSize int) (string, error) {\n\tu, e := UTF16PtrFromString(username)\n\tif e != nil {\n\t\treturn \"\", e\n\t}\n\tn := uint32(50)\n\tfor {\n\t\tb := make([]uint16, n)\n\t\te = TranslateName(u, from, to, &b[0], &n)\n\t\tif e == nil {\n\t\t\treturn UTF16ToString(b[:n]), nil\n\t\t}\n\t\tif e != ERROR_INSUFFICIENT_BUFFER {\n\t\t\treturn \"\", e\n\t\t}\n\t\tif n <= uint32(len(b)) {\n\t\t\treturn \"\", e\n\t\t}\n\t}\n}\n\nconst (\n\t// do not reorder\n\tNetSetupUnknownStatus = iota\n\tNetSetupUnjoined\n\tNetSetupWorkgroupName\n\tNetSetupDomainName\n)\n\ntype UserInfo10 struct {\n\tName       *uint16\n\tComment    *uint16\n\tUsrComment *uint16\n\tFullName   *uint16\n}\n\n//sys\tNetUserGetInfo(serverName *uint16, userName *uint16, level uint32, buf **byte) (neterr error) = netapi32.NetUserGetInfo\n//sys\tNetGetJoinInformation(server *uint16, name **uint16, bufType *uint32) (neterr error) = netapi32.NetGetJoinInformation\n//sys\tNetApiBufferFree(buf *byte) (neterr error) = netapi32.NetApiBufferFree\n//sys   NetUserEnum(serverName *uint16, level uint32, filter uint32, buf **byte, prefMaxLen uint32, entriesRead *uint32, totalEntries *uint32, resumeHandle *uint32) (neterr error) = netapi32.NetUserEnum\n\nconst (\n\t// do not reorder\n\tSidTypeUser = 1 + iota\n\tSidTypeGroup\n\tSidTypeDomain\n\tSidTypeAlias\n\tSidTypeWellKnownGroup\n\tSidTypeDeletedAccount\n\tSidTypeInvalid\n\tSidTypeUnknown\n\tSidTypeComputer\n\tSidTypeLabel\n)\n\ntype SidIdentifierAuthority struct {\n\tValue [6]byte\n}\n\nvar (\n\tSECURITY_NULL_SID_AUTHORITY        = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 0}}\n\tSECURITY_WORLD_SID_AUTHORITY       = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 1}}\n\tSECURITY_LOCAL_SID_AUTHORITY       = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 2}}\n\tSECURITY_CREATOR_SID_AUTHORITY     = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 3}}\n\tSECURITY_NON_UNIQUE_AUTHORITY      = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 4}}\n\tSECURITY_NT_AUTHORITY              = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 5}}\n\tSECURITY_MANDATORY_LABEL_AUTHORITY = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 16}}\n)\n\nconst (\n\tSECURITY_NULL_RID                   = 0\n\tSECURITY_WORLD_RID                  = 0\n\tSECURITY_LOCAL_RID                  = 0\n\tSECURITY_CREATOR_OWNER_RID          = 0\n\tSECURITY_CREATOR_GROUP_RID          = 1\n\tSECURITY_DIALUP_RID                 = 1\n\tSECURITY_NETWORK_RID                = 2\n\tSECURITY_BATCH_RID                  = 3\n\tSECURITY_INTERACTIVE_RID            = 4\n\tSECURITY_LOGON_IDS_RID              = 5\n\tSECURITY_SERVICE_RID                = 6\n\tSECURITY_LOCAL_SYSTEM_RID           = 18\n\tSECURITY_BUILTIN_DOMAIN_RID         = 32\n\tSECURITY_PRINCIPAL_SELF_RID         = 10\n\tSECURITY_CREATOR_OWNER_SERVER_RID   = 0x2\n\tSECURITY_CREATOR_GROUP_SERVER_RID   = 0x3\n\tSECURITY_LOGON_IDS_RID_COUNT        = 0x3\n\tSECURITY_ANONYMOUS_LOGON_RID        = 0x7\n\tSECURITY_PROXY_RID                  = 0x8\n\tSECURITY_ENTERPRISE_CONTROLLERS_RID = 0x9\n\tSECURITY_SERVER_LOGON_RID           = SECURITY_ENTERPRISE_CONTROLLERS_RID\n\tSECURITY_AUTHENTICATED_USER_RID     = 0xb\n\tSECURITY_RESTRICTED_CODE_RID        = 0xc\n\tSECURITY_NT_NON_UNIQUE_RID          = 0x15\n)\n\n// Predefined domain-relative RIDs for local groups.\n// See https://msdn.microsoft.com/en-us/library/windows/desktop/aa379649(v=vs.85).aspx\nconst (\n\tDOMAIN_ALIAS_RID_ADMINS                         = 0x220\n\tDOMAIN_ALIAS_RID_USERS                          = 0x221\n\tDOMAIN_ALIAS_RID_GUESTS                         = 0x222\n\tDOMAIN_ALIAS_RID_POWER_USERS                    = 0x223\n\tDOMAIN_ALIAS_RID_ACCOUNT_OPS                    = 0x224\n\tDOMAIN_ALIAS_RID_SYSTEM_OPS                     = 0x225\n\tDOMAIN_ALIAS_RID_PRINT_OPS                      = 0x226\n\tDOMAIN_ALIAS_RID_BACKUP_OPS                     = 0x227\n\tDOMAIN_ALIAS_RID_REPLICATOR                     = 0x228\n\tDOMAIN_ALIAS_RID_RAS_SERVERS                    = 0x229\n\tDOMAIN_ALIAS_RID_PREW2KCOMPACCESS               = 0x22a\n\tDOMAIN_ALIAS_RID_REMOTE_DESKTOP_USERS           = 0x22b\n\tDOMAIN_ALIAS_RID_NETWORK_CONFIGURATION_OPS      = 0x22c\n\tDOMAIN_ALIAS_RID_INCOMING_FOREST_TRUST_BUILDERS = 0x22d\n\tDOMAIN_ALIAS_RID_MONITORING_USERS               = 0x22e\n\tDOMAIN_ALIAS_RID_LOGGING_USERS                  = 0x22f\n\tDOMAIN_ALIAS_RID_AUTHORIZATIONACCESS            = 0x230\n\tDOMAIN_ALIAS_RID_TS_LICENSE_SERVERS             = 0x231\n\tDOMAIN_ALIAS_RID_DCOM_USERS                     = 0x232\n\tDOMAIN_ALIAS_RID_IUSERS                         = 0x238\n\tDOMAIN_ALIAS_RID_CRYPTO_OPERATORS               = 0x239\n\tDOMAIN_ALIAS_RID_CACHEABLE_PRINCIPALS_GROUP     = 0x23b\n\tDOMAIN_ALIAS_RID_NON_CACHEABLE_PRINCIPALS_GROUP = 0x23c\n\tDOMAIN_ALIAS_RID_EVENT_LOG_READERS_GROUP        = 0x23d\n\tDOMAIN_ALIAS_RID_CERTSVC_DCOM_ACCESS_GROUP      = 0x23e\n)\n\n//sys\tLookupAccountSid(systemName *uint16, sid *SID, name *uint16, nameLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) = advapi32.LookupAccountSidW\n//sys\tLookupAccountName(systemName *uint16, accountName *uint16, sid *SID, sidLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) = advapi32.LookupAccountNameW\n//sys\tConvertSidToStringSid(sid *SID, stringSid **uint16) (err error) = advapi32.ConvertSidToStringSidW\n//sys\tConvertStringSidToSid(stringSid *uint16, sid **SID) (err error) = advapi32.ConvertStringSidToSidW\n//sys\tGetLengthSid(sid *SID) (len uint32) = advapi32.GetLengthSid\n//sys\tCopySid(destSidLen uint32, destSid *SID, srcSid *SID) (err error) = advapi32.CopySid\n//sys\tAllocateAndInitializeSid(identAuth *SidIdentifierAuthority, subAuth byte, subAuth0 uint32, subAuth1 uint32, subAuth2 uint32, subAuth3 uint32, subAuth4 uint32, subAuth5 uint32, subAuth6 uint32, subAuth7 uint32, sid **SID) (err error) = advapi32.AllocateAndInitializeSid\n//sys\tcreateWellKnownSid(sidType WELL_KNOWN_SID_TYPE, domainSid *SID, sid *SID, sizeSid *uint32) (err error) = advapi32.CreateWellKnownSid\n//sys\tisWellKnownSid(sid *SID, sidType WELL_KNOWN_SID_TYPE) (isWellKnown bool) = advapi32.IsWellKnownSid\n//sys\tFreeSid(sid *SID) (err error) [failretval!=0] = advapi32.FreeSid\n//sys\tEqualSid(sid1 *SID, sid2 *SID) (isEqual bool) = advapi32.EqualSid\n//sys\tgetSidIdentifierAuthority(sid *SID) (authority *SidIdentifierAuthority) = advapi32.GetSidIdentifierAuthority\n//sys\tgetSidSubAuthorityCount(sid *SID) (count *uint8) = advapi32.GetSidSubAuthorityCount\n//sys\tgetSidSubAuthority(sid *SID, index uint32) (subAuthority *uint32) = advapi32.GetSidSubAuthority\n//sys\tisValidSid(sid *SID) (isValid bool) = advapi32.IsValidSid\n\n// The security identifier (SID) structure is a variable-length\n// structure used to uniquely identify users or groups.\ntype SID struct{}\n\n// StringToSid converts a string-format security identifier\n// SID into a valid, functional SID.\nfunc StringToSid(s string) (*SID, error) {\n\tvar sid *SID\n\tp, e := UTF16PtrFromString(s)\n\tif e != nil {\n\t\treturn nil, e\n\t}\n\te = ConvertStringSidToSid(p, &sid)\n\tif e != nil {\n\t\treturn nil, e\n\t}\n\tdefer LocalFree((Handle)(unsafe.Pointer(sid)))\n\treturn sid.Copy()\n}\n\n// LookupSID retrieves a security identifier SID for the account\n// and the name of the domain on which the account was found.\n// System specify target computer to search.\nfunc LookupSID(system, account string) (sid *SID, domain string, accType uint32, err error) {\n\tif len(account) == 0 {\n\t\treturn nil, \"\", 0, syscall.EINVAL\n\t}\n\tacc, e := UTF16PtrFromString(account)\n\tif e != nil {\n\t\treturn nil, \"\", 0, e\n\t}\n\tvar sys *uint16\n\tif len(system) > 0 {\n\t\tsys, e = UTF16PtrFromString(system)\n\t\tif e != nil {\n\t\t\treturn nil, \"\", 0, e\n\t\t}\n\t}\n\tn := uint32(50)\n\tdn := uint32(50)\n\tfor {\n\t\tb := make([]byte, n)\n\t\tdb := make([]uint16, dn)\n\t\tsid = (*SID)(unsafe.Pointer(&b[0]))\n\t\te = LookupAccountName(sys, acc, sid, &n, &db[0], &dn, &accType)\n\t\tif e == nil {\n\t\t\treturn sid, UTF16ToString(db), accType, nil\n\t\t}\n\t\tif e != ERROR_INSUFFICIENT_BUFFER {\n\t\t\treturn nil, \"\", 0, e\n\t\t}\n\t\tif n <= uint32(len(b)) {\n\t\t\treturn nil, \"\", 0, e\n\t\t}\n\t}\n}\n\n// String converts SID to a string format suitable for display, storage, or transmission.\nfunc (sid *SID) String() string {\n\tvar s *uint16\n\te := ConvertSidToStringSid(sid, &s)\n\tif e != nil {\n\t\treturn \"\"\n\t}\n\tdefer LocalFree((Handle)(unsafe.Pointer(s)))\n\treturn UTF16ToString((*[256]uint16)(unsafe.Pointer(s))[:])\n}\n\n// Len returns the length, in bytes, of a valid security identifier SID.\nfunc (sid *SID) Len() int {\n\treturn int(GetLengthSid(sid))\n}\n\n// Copy creates a duplicate of security identifier SID.\nfunc (sid *SID) Copy() (*SID, error) {\n\tb := make([]byte, sid.Len())\n\tsid2 := (*SID)(unsafe.Pointer(&b[0]))\n\te := CopySid(uint32(len(b)), sid2, sid)\n\tif e != nil {\n\t\treturn nil, e\n\t}\n\treturn sid2, nil\n}\n\n// IdentifierAuthority returns the identifier authority of the SID.\nfunc (sid *SID) IdentifierAuthority() SidIdentifierAuthority {\n\treturn *getSidIdentifierAuthority(sid)\n}\n\n// SubAuthorityCount returns the number of sub-authorities in the SID.\nfunc (sid *SID) SubAuthorityCount() uint8 {\n\treturn *getSidSubAuthorityCount(sid)\n}\n\n// SubAuthority returns the sub-authority of the SID as specified by\n// the index, which must be less than sid.SubAuthorityCount().\nfunc (sid *SID) SubAuthority(idx uint32) uint32 {\n\tif idx >= uint32(sid.SubAuthorityCount()) {\n\t\tpanic(\"sub-authority index out of range\")\n\t}\n\treturn *getSidSubAuthority(sid, idx)\n}\n\n// IsValid returns whether the SID has a valid revision and length.\nfunc (sid *SID) IsValid() bool {\n\treturn isValidSid(sid)\n}\n\n// Equals compares two SIDs for equality.\nfunc (sid *SID) Equals(sid2 *SID) bool {\n\treturn EqualSid(sid, sid2)\n}\n\n// IsWellKnown determines whether the SID matches the well-known sidType.\nfunc (sid *SID) IsWellKnown(sidType WELL_KNOWN_SID_TYPE) bool {\n\treturn isWellKnownSid(sid, sidType)\n}\n\n// LookupAccount retrieves the name of the account for this SID\n// and the name of the first domain on which this SID is found.\n// System specify target computer to search for.\nfunc (sid *SID) LookupAccount(system string) (account, domain string, accType uint32, err error) {\n\tvar sys *uint16\n\tif len(system) > 0 {\n\t\tsys, err = UTF16PtrFromString(system)\n\t\tif err != nil {\n\t\t\treturn \"\", \"\", 0, err\n\t\t}\n\t}\n\tn := uint32(50)\n\tdn := uint32(50)\n\tfor {\n\t\tb := make([]uint16, n)\n\t\tdb := make([]uint16, dn)\n\t\te := LookupAccountSid(sys, sid, &b[0], &n, &db[0], &dn, &accType)\n\t\tif e == nil {\n\t\t\treturn UTF16ToString(b), UTF16ToString(db), accType, nil\n\t\t}\n\t\tif e != ERROR_INSUFFICIENT_BUFFER {\n\t\t\treturn \"\", \"\", 0, e\n\t\t}\n\t\tif n <= uint32(len(b)) {\n\t\t\treturn \"\", \"\", 0, e\n\t\t}\n\t}\n}\n\n// Various types of pre-specified SIDs that can be synthesized and compared at runtime.\ntype WELL_KNOWN_SID_TYPE uint32\n\nconst (\n\tWinNullSid                                    = 0\n\tWinWorldSid                                   = 1\n\tWinLocalSid                                   = 2\n\tWinCreatorOwnerSid                            = 3\n\tWinCreatorGroupSid                            = 4\n\tWinCreatorOwnerServerSid                      = 5\n\tWinCreatorGroupServerSid                      = 6\n\tWinNtAuthoritySid                             = 7\n\tWinDialupSid                                  = 8\n\tWinNetworkSid                                 = 9\n\tWinBatchSid                                   = 10\n\tWinInteractiveSid                             = 11\n\tWinServiceSid                                 = 12\n\tWinAnonymousSid                               = 13\n\tWinProxySid                                   = 14\n\tWinEnterpriseControllersSid                   = 15\n\tWinSelfSid                                    = 16\n\tWinAuthenticatedUserSid                       = 17\n\tWinRestrictedCodeSid                          = 18\n\tWinTerminalServerSid                          = 19\n\tWinRemoteLogonIdSid                           = 20\n\tWinLogonIdsSid                                = 21\n\tWinLocalSystemSid                             = 22\n\tWinLocalServiceSid                            = 23\n\tWinNetworkServiceSid                          = 24\n\tWinBuiltinDomainSid                           = 25\n\tWinBuiltinAdministratorsSid                   = 26\n\tWinBuiltinUsersSid                            = 27\n\tWinBuiltinGuestsSid                           = 28\n\tWinBuiltinPowerUsersSid                       = 29\n\tWinBuiltinAccountOperatorsSid                 = 30\n\tWinBuiltinSystemOperatorsSid                  = 31\n\tWinBuiltinPrintOperatorsSid                   = 32\n\tWinBuiltinBackupOperatorsSid                  = 33\n\tWinBuiltinReplicatorSid                       = 34\n\tWinBuiltinPreWindows2000CompatibleAccessSid   = 35\n\tWinBuiltinRemoteDesktopUsersSid               = 36\n\tWinBuiltinNetworkConfigurationOperatorsSid    = 37\n\tWinAccountAdministratorSid                    = 38\n\tWinAccountGuestSid                            = 39\n\tWinAccountKrbtgtSid                           = 40\n\tWinAccountDomainAdminsSid                     = 41\n\tWinAccountDomainUsersSid                      = 42\n\tWinAccountDomainGuestsSid                     = 43\n\tWinAccountComputersSid                        = 44\n\tWinAccountControllersSid                      = 45\n\tWinAccountCertAdminsSid                       = 46\n\tWinAccountSchemaAdminsSid                     = 47\n\tWinAccountEnterpriseAdminsSid                 = 48\n\tWinAccountPolicyAdminsSid                     = 49\n\tWinAccountRasAndIasServersSid                 = 50\n\tWinNTLMAuthenticationSid                      = 51\n\tWinDigestAuthenticationSid                    = 52\n\tWinSChannelAuthenticationSid                  = 53\n\tWinThisOrganizationSid                        = 54\n\tWinOtherOrganizationSid                       = 55\n\tWinBuiltinIncomingForestTrustBuildersSid      = 56\n\tWinBuiltinPerfMonitoringUsersSid              = 57\n\tWinBuiltinPerfLoggingUsersSid                 = 58\n\tWinBuiltinAuthorizationAccessSid              = 59\n\tWinBuiltinTerminalServerLicenseServersSid     = 60\n\tWinBuiltinDCOMUsersSid                        = 61\n\tWinBuiltinIUsersSid                           = 62\n\tWinIUserSid                                   = 63\n\tWinBuiltinCryptoOperatorsSid                  = 64\n\tWinUntrustedLabelSid                          = 65\n\tWinLowLabelSid                                = 66\n\tWinMediumLabelSid                             = 67\n\tWinHighLabelSid                               = 68\n\tWinSystemLabelSid                             = 69\n\tWinWriteRestrictedCodeSid                     = 70\n\tWinCreatorOwnerRightsSid                      = 71\n\tWinCacheablePrincipalsGroupSid                = 72\n\tWinNonCacheablePrincipalsGroupSid             = 73\n\tWinEnterpriseReadonlyControllersSid           = 74\n\tWinAccountReadonlyControllersSid              = 75\n\tWinBuiltinEventLogReadersGroup                = 76\n\tWinNewEnterpriseReadonlyControllersSid        = 77\n\tWinBuiltinCertSvcDComAccessGroup              = 78\n\tWinMediumPlusLabelSid                         = 79\n\tWinLocalLogonSid                              = 80\n\tWinConsoleLogonSid                            = 81\n\tWinThisOrganizationCertificateSid             = 82\n\tWinApplicationPackageAuthoritySid             = 83\n\tWinBuiltinAnyPackageSid                       = 84\n\tWinCapabilityInternetClientSid                = 85\n\tWinCapabilityInternetClientServerSid          = 86\n\tWinCapabilityPrivateNetworkClientServerSid    = 87\n\tWinCapabilityPicturesLibrarySid               = 88\n\tWinCapabilityVideosLibrarySid                 = 89\n\tWinCapabilityMusicLibrarySid                  = 90\n\tWinCapabilityDocumentsLibrarySid              = 91\n\tWinCapabilitySharedUserCertificatesSid        = 92\n\tWinCapabilityEnterpriseAuthenticationSid      = 93\n\tWinCapabilityRemovableStorageSid              = 94\n\tWinBuiltinRDSRemoteAccessServersSid           = 95\n\tWinBuiltinRDSEndpointServersSid               = 96\n\tWinBuiltinRDSManagementServersSid             = 97\n\tWinUserModeDriversSid                         = 98\n\tWinBuiltinHyperVAdminsSid                     = 99\n\tWinAccountCloneableControllersSid             = 100\n\tWinBuiltinAccessControlAssistanceOperatorsSid = 101\n\tWinBuiltinRemoteManagementUsersSid            = 102\n\tWinAuthenticationAuthorityAssertedSid         = 103\n\tWinAuthenticationServiceAssertedSid           = 104\n\tWinLocalAccountSid                            = 105\n\tWinLocalAccountAndAdministratorSid            = 106\n\tWinAccountProtectedUsersSid                   = 107\n\tWinCapabilityAppointmentsSid                  = 108\n\tWinCapabilityContactsSid                      = 109\n\tWinAccountDefaultSystemManagedSid             = 110\n\tWinBuiltinDefaultSystemManagedGroupSid        = 111\n\tWinBuiltinStorageReplicaAdminsSid             = 112\n\tWinAccountKeyAdminsSid                        = 113\n\tWinAccountEnterpriseKeyAdminsSid              = 114\n\tWinAuthenticationKeyTrustSid                  = 115\n\tWinAuthenticationKeyPropertyMFASid            = 116\n\tWinAuthenticationKeyPropertyAttestationSid    = 117\n\tWinAuthenticationFreshKeyAuthSid              = 118\n\tWinBuiltinDeviceOwnersSid                     = 119\n)\n\n// Creates a SID for a well-known predefined alias, generally using the constants of the form\n// Win*Sid, for the local machine.\nfunc CreateWellKnownSid(sidType WELL_KNOWN_SID_TYPE) (*SID, error) {\n\treturn CreateWellKnownDomainSid(sidType, nil)\n}\n\n// Creates a SID for a well-known predefined alias, generally using the constants of the form\n// Win*Sid, for the domain specified by the domainSid parameter.\nfunc CreateWellKnownDomainSid(sidType WELL_KNOWN_SID_TYPE, domainSid *SID) (*SID, error) {\n\tn := uint32(50)\n\tfor {\n\t\tb := make([]byte, n)\n\t\tsid := (*SID)(unsafe.Pointer(&b[0]))\n\t\terr := createWellKnownSid(sidType, domainSid, sid, &n)\n\t\tif err == nil {\n\t\t\treturn sid, nil\n\t\t}\n\t\tif err != ERROR_INSUFFICIENT_BUFFER {\n\t\t\treturn nil, err\n\t\t}\n\t\tif n <= uint32(len(b)) {\n\t\t\treturn nil, err\n\t\t}\n\t}\n}\n\nconst (\n\t// do not reorder\n\tTOKEN_ASSIGN_PRIMARY = 1 << iota\n\tTOKEN_DUPLICATE\n\tTOKEN_IMPERSONATE\n\tTOKEN_QUERY\n\tTOKEN_QUERY_SOURCE\n\tTOKEN_ADJUST_PRIVILEGES\n\tTOKEN_ADJUST_GROUPS\n\tTOKEN_ADJUST_DEFAULT\n\tTOKEN_ADJUST_SESSIONID\n\n\tTOKEN_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED |\n\t\tTOKEN_ASSIGN_PRIMARY |\n\t\tTOKEN_DUPLICATE |\n\t\tTOKEN_IMPERSONATE |\n\t\tTOKEN_QUERY |\n\t\tTOKEN_QUERY_SOURCE |\n\t\tTOKEN_ADJUST_PRIVILEGES |\n\t\tTOKEN_ADJUST_GROUPS |\n\t\tTOKEN_ADJUST_DEFAULT |\n\t\tTOKEN_ADJUST_SESSIONID\n\tTOKEN_READ  = STANDARD_RIGHTS_READ | TOKEN_QUERY\n\tTOKEN_WRITE = STANDARD_RIGHTS_WRITE |\n\t\tTOKEN_ADJUST_PRIVILEGES |\n\t\tTOKEN_ADJUST_GROUPS |\n\t\tTOKEN_ADJUST_DEFAULT\n\tTOKEN_EXECUTE = STANDARD_RIGHTS_EXECUTE\n)\n\nconst (\n\t// do not reorder\n\tTokenUser = 1 + iota\n\tTokenGroups\n\tTokenPrivileges\n\tTokenOwner\n\tTokenPrimaryGroup\n\tTokenDefaultDacl\n\tTokenSource\n\tTokenType\n\tTokenImpersonationLevel\n\tTokenStatistics\n\tTokenRestrictedSids\n\tTokenSessionId\n\tTokenGroupsAndPrivileges\n\tTokenSessionReference\n\tTokenSandBoxInert\n\tTokenAuditPolicy\n\tTokenOrigin\n\tTokenElevationType\n\tTokenLinkedToken\n\tTokenElevation\n\tTokenHasRestrictions\n\tTokenAccessInformation\n\tTokenVirtualizationAllowed\n\tTokenVirtualizationEnabled\n\tTokenIntegrityLevel\n\tTokenUIAccess\n\tTokenMandatoryPolicy\n\tTokenLogonSid\n\tMaxTokenInfoClass\n)\n\n// Group attributes inside of Tokengroups.Groups[i].Attributes\nconst (\n\tSE_GROUP_MANDATORY          = 0x00000001\n\tSE_GROUP_ENABLED_BY_DEFAULT = 0x00000002\n\tSE_GROUP_ENABLED            = 0x00000004\n\tSE_GROUP_OWNER              = 0x00000008\n\tSE_GROUP_USE_FOR_DENY_ONLY  = 0x00000010\n\tSE_GROUP_INTEGRITY          = 0x00000020\n\tSE_GROUP_INTEGRITY_ENABLED  = 0x00000040\n\tSE_GROUP_LOGON_ID           = 0xC0000000\n\tSE_GROUP_RESOURCE           = 0x20000000\n\tSE_GROUP_VALID_ATTRIBUTES   = SE_GROUP_MANDATORY | SE_GROUP_ENABLED_BY_DEFAULT | SE_GROUP_ENABLED | SE_GROUP_OWNER | SE_GROUP_USE_FOR_DENY_ONLY | SE_GROUP_LOGON_ID | SE_GROUP_RESOURCE | SE_GROUP_INTEGRITY | SE_GROUP_INTEGRITY_ENABLED\n)\n\n// Privilege attributes\nconst (\n\tSE_PRIVILEGE_ENABLED_BY_DEFAULT = 0x00000001\n\tSE_PRIVILEGE_ENABLED            = 0x00000002\n\tSE_PRIVILEGE_REMOVED            = 0x00000004\n\tSE_PRIVILEGE_USED_FOR_ACCESS    = 0x80000000\n\tSE_PRIVILEGE_VALID_ATTRIBUTES   = SE_PRIVILEGE_ENABLED_BY_DEFAULT | SE_PRIVILEGE_ENABLED | SE_PRIVILEGE_REMOVED | SE_PRIVILEGE_USED_FOR_ACCESS\n)\n\n// Token types\nconst (\n\tTokenPrimary       = 1\n\tTokenImpersonation = 2\n)\n\n// Impersonation levels\nconst (\n\tSecurityAnonymous      = 0\n\tSecurityIdentification = 1\n\tSecurityImpersonation  = 2\n\tSecurityDelegation     = 3\n)\n\ntype LUID struct {\n\tLowPart  uint32\n\tHighPart int32\n}\n\ntype LUIDAndAttributes struct {\n\tLuid       LUID\n\tAttributes uint32\n}\n\ntype SIDAndAttributes struct {\n\tSid        *SID\n\tAttributes uint32\n}\n\ntype Tokenuser struct {\n\tUser SIDAndAttributes\n}\n\ntype Tokenprimarygroup struct {\n\tPrimaryGroup *SID\n}\n\ntype Tokengroups struct {\n\tGroupCount uint32\n\tGroups     [1]SIDAndAttributes // Use AllGroups() for iterating.\n}\n\n// AllGroups returns a slice that can be used to iterate over the groups in g.\nfunc (g *Tokengroups) AllGroups() []SIDAndAttributes {\n\treturn (*[(1 << 28) - 1]SIDAndAttributes)(unsafe.Pointer(&g.Groups[0]))[:g.GroupCount:g.GroupCount]\n}\n\ntype Tokenprivileges struct {\n\tPrivilegeCount uint32\n\tPrivileges     [1]LUIDAndAttributes // Use AllPrivileges() for iterating.\n}\n\n// AllPrivileges returns a slice that can be used to iterate over the privileges in p.\nfunc (p *Tokenprivileges) AllPrivileges() []LUIDAndAttributes {\n\treturn (*[(1 << 27) - 1]LUIDAndAttributes)(unsafe.Pointer(&p.Privileges[0]))[:p.PrivilegeCount:p.PrivilegeCount]\n}\n\ntype Tokenmandatorylabel struct {\n\tLabel SIDAndAttributes\n}\n\nfunc (tml *Tokenmandatorylabel) Size() uint32 {\n\treturn uint32(unsafe.Sizeof(Tokenmandatorylabel{})) + GetLengthSid(tml.Label.Sid)\n}\n\n// Authorization Functions\n//sys\tcheckTokenMembership(tokenHandle Token, sidToCheck *SID, isMember *int32) (err error) = advapi32.CheckTokenMembership\n//sys\tisTokenRestricted(tokenHandle Token) (ret bool, err error) [!failretval] = advapi32.IsTokenRestricted\n//sys\tOpenProcessToken(process Handle, access uint32, token *Token) (err error) = advapi32.OpenProcessToken\n//sys\tOpenThreadToken(thread Handle, access uint32, openAsSelf bool, token *Token) (err error) = advapi32.OpenThreadToken\n//sys\tImpersonateSelf(impersonationlevel uint32) (err error) = advapi32.ImpersonateSelf\n//sys\tRevertToSelf() (err error) = advapi32.RevertToSelf\n//sys\tSetThreadToken(thread *Handle, token Token) (err error) = advapi32.SetThreadToken\n//sys\tLookupPrivilegeValue(systemname *uint16, name *uint16, luid *LUID) (err error) = advapi32.LookupPrivilegeValueW\n//sys\tAdjustTokenPrivileges(token Token, disableAllPrivileges bool, newstate *Tokenprivileges, buflen uint32, prevstate *Tokenprivileges, returnlen *uint32) (err error) = advapi32.AdjustTokenPrivileges\n//sys\tAdjustTokenGroups(token Token, resetToDefault bool, newstate *Tokengroups, buflen uint32, prevstate *Tokengroups, returnlen *uint32) (err error) = advapi32.AdjustTokenGroups\n//sys\tGetTokenInformation(token Token, infoClass uint32, info *byte, infoLen uint32, returnedLen *uint32) (err error) = advapi32.GetTokenInformation\n//sys\tSetTokenInformation(token Token, infoClass uint32, info *byte, infoLen uint32) (err error) = advapi32.SetTokenInformation\n//sys\tDuplicateTokenEx(existingToken Token, desiredAccess uint32, tokenAttributes *SecurityAttributes, impersonationLevel uint32, tokenType uint32, newToken *Token) (err error) = advapi32.DuplicateTokenEx\n//sys\tGetUserProfileDirectory(t Token, dir *uint16, dirLen *uint32) (err error) = userenv.GetUserProfileDirectoryW\n//sys\tgetSystemDirectory(dir *uint16, dirLen uint32) (len uint32, err error) = kernel32.GetSystemDirectoryW\n//sys\tgetWindowsDirectory(dir *uint16, dirLen uint32) (len uint32, err error) = kernel32.GetWindowsDirectoryW\n//sys\tgetSystemWindowsDirectory(dir *uint16, dirLen uint32) (len uint32, err error) = kernel32.GetSystemWindowsDirectoryW\n\n// An access token contains the security information for a logon session.\n// The system creates an access token when a user logs on, and every\n// process executed on behalf of the user has a copy of the token.\n// The token identifies the user, the user's groups, and the user's\n// privileges. The system uses the token to control access to securable\n// objects and to control the ability of the user to perform various\n// system-related operations on the local computer.\ntype Token Handle\n\n// OpenCurrentProcessToken opens an access token associated with current\n// process with TOKEN_QUERY access. It is a real token that needs to be closed.\n//\n// Deprecated: Explicitly call OpenProcessToken(CurrentProcess(), ...)\n// with the desired access instead, or use GetCurrentProcessToken for a\n// TOKEN_QUERY token.\nfunc OpenCurrentProcessToken() (Token, error) {\n\tvar token Token\n\terr := OpenProcessToken(CurrentProcess(), TOKEN_QUERY, &token)\n\treturn token, err\n}\n\n// GetCurrentProcessToken returns the access token associated with\n// the current process. It is a pseudo token that does not need\n// to be closed.\nfunc GetCurrentProcessToken() Token {\n\treturn Token(^uintptr(4 - 1))\n}\n\n// GetCurrentThreadToken return the access token associated with\n// the current thread. It is a pseudo token that does not need\n// to be closed.\nfunc GetCurrentThreadToken() Token {\n\treturn Token(^uintptr(5 - 1))\n}\n\n// GetCurrentThreadEffectiveToken returns the effective access token\n// associated with the current thread. It is a pseudo token that does\n// not need to be closed.\nfunc GetCurrentThreadEffectiveToken() Token {\n\treturn Token(^uintptr(6 - 1))\n}\n\n// Close releases access to access token.\nfunc (t Token) Close() error {\n\treturn CloseHandle(Handle(t))\n}\n\n// getInfo retrieves a specified type of information about an access token.\nfunc (t Token) getInfo(class uint32, initSize int) (unsafe.Pointer, error) {\n\tn := uint32(initSize)\n\tfor {\n\t\tb := make([]byte, n)\n\t\te := GetTokenInformation(t, class, &b[0], uint32(len(b)), &n)\n\t\tif e == nil {\n\t\t\treturn unsafe.Pointer(&b[0]), nil\n\t\t}\n\t\tif e != ERROR_INSUFFICIENT_BUFFER {\n\t\t\treturn nil, e\n\t\t}\n\t\tif n <= uint32(len(b)) {\n\t\t\treturn nil, e\n\t\t}\n\t}\n}\n\n// GetTokenUser retrieves access token t user account information.\nfunc (t Token) GetTokenUser() (*Tokenuser, error) {\n\ti, e := t.getInfo(TokenUser, 50)\n\tif e != nil {\n\t\treturn nil, e\n\t}\n\treturn (*Tokenuser)(i), nil\n}\n\n// GetTokenGroups retrieves group accounts associated with access token t.\nfunc (t Token) GetTokenGroups() (*Tokengroups, error) {\n\ti, e := t.getInfo(TokenGroups, 50)\n\tif e != nil {\n\t\treturn nil, e\n\t}\n\treturn (*Tokengroups)(i), nil\n}\n\n// GetTokenPrimaryGroup retrieves access token t primary group information.\n// A pointer to a SID structure representing a group that will become\n// the primary group of any objects created by a process using this access token.\nfunc (t Token) GetTokenPrimaryGroup() (*Tokenprimarygroup, error) {\n\ti, e := t.getInfo(TokenPrimaryGroup, 50)\n\tif e != nil {\n\t\treturn nil, e\n\t}\n\treturn (*Tokenprimarygroup)(i), nil\n}\n\n// GetUserProfileDirectory retrieves path to the\n// root directory of the access token t user's profile.\nfunc (t Token) GetUserProfileDirectory() (string, error) {\n\tn := uint32(100)\n\tfor {\n\t\tb := make([]uint16, n)\n\t\te := GetUserProfileDirectory(t, &b[0], &n)\n\t\tif e == nil {\n\t\t\treturn UTF16ToString(b), nil\n\t\t}\n\t\tif e != ERROR_INSUFFICIENT_BUFFER {\n\t\t\treturn \"\", e\n\t\t}\n\t\tif n <= uint32(len(b)) {\n\t\t\treturn \"\", e\n\t\t}\n\t}\n}\n\n// IsElevated returns whether the current token is elevated from a UAC perspective.\nfunc (token Token) IsElevated() bool {\n\tvar isElevated uint32\n\tvar outLen uint32\n\terr := GetTokenInformation(token, TokenElevation, (*byte)(unsafe.Pointer(&isElevated)), uint32(unsafe.Sizeof(isElevated)), &outLen)\n\tif err != nil {\n\t\treturn false\n\t}\n\treturn outLen == uint32(unsafe.Sizeof(isElevated)) && isElevated != 0\n}\n\n// GetLinkedToken returns the linked token, which may be an elevated UAC token.\nfunc (token Token) GetLinkedToken() (Token, error) {\n\tvar linkedToken Token\n\tvar outLen uint32\n\terr := GetTokenInformation(token, TokenLinkedToken, (*byte)(unsafe.Pointer(&linkedToken)), uint32(unsafe.Sizeof(linkedToken)), &outLen)\n\tif err != nil {\n\t\treturn Token(0), err\n\t}\n\treturn linkedToken, nil\n}\n\n// GetSystemDirectory retrieves the path to current location of the system\n// directory, which is typically, though not always, `C:\\Windows\\System32`.\nfunc GetSystemDirectory() (string, error) {\n\tn := uint32(MAX_PATH)\n\tfor {\n\t\tb := make([]uint16, n)\n\t\tl, e := getSystemDirectory(&b[0], n)\n\t\tif e != nil {\n\t\t\treturn \"\", e\n\t\t}\n\t\tif l <= n {\n\t\t\treturn UTF16ToString(b[:l]), nil\n\t\t}\n\t\tn = l\n\t}\n}\n\n// GetWindowsDirectory retrieves the path to current location of the Windows\n// directory, which is typically, though not always, `C:\\Windows`. This may\n// be a private user directory in the case that the application is running\n// under a terminal server.\nfunc GetWindowsDirectory() (string, error) {\n\tn := uint32(MAX_PATH)\n\tfor {\n\t\tb := make([]uint16, n)\n\t\tl, e := getWindowsDirectory(&b[0], n)\n\t\tif e != nil {\n\t\t\treturn \"\", e\n\t\t}\n\t\tif l <= n {\n\t\t\treturn UTF16ToString(b[:l]), nil\n\t\t}\n\t\tn = l\n\t}\n}\n\n// GetSystemWindowsDirectory retrieves the path to current location of the\n// Windows directory, which is typically, though not always, `C:\\Windows`.\nfunc GetSystemWindowsDirectory() (string, error) {\n\tn := uint32(MAX_PATH)\n\tfor {\n\t\tb := make([]uint16, n)\n\t\tl, e := getSystemWindowsDirectory(&b[0], n)\n\t\tif e != nil {\n\t\t\treturn \"\", e\n\t\t}\n\t\tif l <= n {\n\t\t\treturn UTF16ToString(b[:l]), nil\n\t\t}\n\t\tn = l\n\t}\n}\n\n// IsMember reports whether the access token t is a member of the provided SID.\nfunc (t Token) IsMember(sid *SID) (bool, error) {\n\tvar b int32\n\tif e := checkTokenMembership(t, sid, &b); e != nil {\n\t\treturn false, e\n\t}\n\treturn b != 0, nil\n}\n\n// IsRestricted reports whether the access token t is a restricted token.\nfunc (t Token) IsRestricted() (isRestricted bool, err error) {\n\tisRestricted, err = isTokenRestricted(t)\n\tif !isRestricted && err == syscall.EINVAL {\n\t\t// If err is EINVAL, this returned ERROR_SUCCESS indicating a non-restricted token.\n\t\terr = nil\n\t}\n\treturn\n}\n\nconst (\n\tWTS_CONSOLE_CONNECT        = 0x1\n\tWTS_CONSOLE_DISCONNECT     = 0x2\n\tWTS_REMOTE_CONNECT         = 0x3\n\tWTS_REMOTE_DISCONNECT      = 0x4\n\tWTS_SESSION_LOGON          = 0x5\n\tWTS_SESSION_LOGOFF         = 0x6\n\tWTS_SESSION_LOCK           = 0x7\n\tWTS_SESSION_UNLOCK         = 0x8\n\tWTS_SESSION_REMOTE_CONTROL = 0x9\n\tWTS_SESSION_CREATE         = 0xa\n\tWTS_SESSION_TERMINATE      = 0xb\n)\n\nconst (\n\tWTSActive       = 0\n\tWTSConnected    = 1\n\tWTSConnectQuery = 2\n\tWTSShadow       = 3\n\tWTSDisconnected = 4\n\tWTSIdle         = 5\n\tWTSListen       = 6\n\tWTSReset        = 7\n\tWTSDown         = 8\n\tWTSInit         = 9\n)\n\ntype WTSSESSION_NOTIFICATION struct {\n\tSize      uint32\n\tSessionID uint32\n}\n\ntype WTS_SESSION_INFO struct {\n\tSessionID         uint32\n\tWindowStationName *uint16\n\tState             uint32\n}\n\n//sys WTSQueryUserToken(session uint32, token *Token) (err error) = wtsapi32.WTSQueryUserToken\n//sys WTSEnumerateSessions(handle Handle, reserved uint32, version uint32, sessions **WTS_SESSION_INFO, count *uint32) (err error) = wtsapi32.WTSEnumerateSessionsW\n//sys WTSFreeMemory(ptr uintptr) = wtsapi32.WTSFreeMemory\n//sys WTSGetActiveConsoleSessionId() (sessionID uint32)\n\ntype ACL struct {\n\taclRevision byte\n\tsbz1        byte\n\taclSize     uint16\n\tAceCount    uint16\n\tsbz2        uint16\n}\n\ntype SECURITY_DESCRIPTOR struct {\n\trevision byte\n\tsbz1     byte\n\tcontrol  SECURITY_DESCRIPTOR_CONTROL\n\towner    *SID\n\tgroup    *SID\n\tsacl     *ACL\n\tdacl     *ACL\n}\n\ntype SECURITY_QUALITY_OF_SERVICE struct {\n\tLength              uint32\n\tImpersonationLevel  uint32\n\tContextTrackingMode byte\n\tEffectiveOnly       byte\n}\n\n// Constants for the ContextTrackingMode field of SECURITY_QUALITY_OF_SERVICE.\nconst (\n\tSECURITY_STATIC_TRACKING  = 0\n\tSECURITY_DYNAMIC_TRACKING = 1\n)\n\ntype SecurityAttributes struct {\n\tLength             uint32\n\tSecurityDescriptor *SECURITY_DESCRIPTOR\n\tInheritHandle      uint32\n}\n\ntype SE_OBJECT_TYPE uint32\n\n// Constants for type SE_OBJECT_TYPE\nconst (\n\tSE_UNKNOWN_OBJECT_TYPE     = 0\n\tSE_FILE_OBJECT             = 1\n\tSE_SERVICE                 = 2\n\tSE_PRINTER                 = 3\n\tSE_REGISTRY_KEY            = 4\n\tSE_LMSHARE                 = 5\n\tSE_KERNEL_OBJECT           = 6\n\tSE_WINDOW_OBJECT           = 7\n\tSE_DS_OBJECT               = 8\n\tSE_DS_OBJECT_ALL           = 9\n\tSE_PROVIDER_DEFINED_OBJECT = 10\n\tSE_WMIGUID_OBJECT          = 11\n\tSE_REGISTRY_WOW64_32KEY    = 12\n\tSE_REGISTRY_WOW64_64KEY    = 13\n)\n\ntype SECURITY_INFORMATION uint32\n\n// Constants for type SECURITY_INFORMATION\nconst (\n\tOWNER_SECURITY_INFORMATION            = 0x00000001\n\tGROUP_SECURITY_INFORMATION            = 0x00000002\n\tDACL_SECURITY_INFORMATION             = 0x00000004\n\tSACL_SECURITY_INFORMATION             = 0x00000008\n\tLABEL_SECURITY_INFORMATION            = 0x00000010\n\tATTRIBUTE_SECURITY_INFORMATION        = 0x00000020\n\tSCOPE_SECURITY_INFORMATION            = 0x00000040\n\tBACKUP_SECURITY_INFORMATION           = 0x00010000\n\tPROTECTED_DACL_SECURITY_INFORMATION   = 0x80000000\n\tPROTECTED_SACL_SECURITY_INFORMATION   = 0x40000000\n\tUNPROTECTED_DACL_SECURITY_INFORMATION = 0x20000000\n\tUNPROTECTED_SACL_SECURITY_INFORMATION = 0x10000000\n)\n\ntype SECURITY_DESCRIPTOR_CONTROL uint16\n\n// Constants for type SECURITY_DESCRIPTOR_CONTROL\nconst (\n\tSE_OWNER_DEFAULTED       = 0x0001\n\tSE_GROUP_DEFAULTED       = 0x0002\n\tSE_DACL_PRESENT          = 0x0004\n\tSE_DACL_DEFAULTED        = 0x0008\n\tSE_SACL_PRESENT          = 0x0010\n\tSE_SACL_DEFAULTED        = 0x0020\n\tSE_DACL_AUTO_INHERIT_REQ = 0x0100\n\tSE_SACL_AUTO_INHERIT_REQ = 0x0200\n\tSE_DACL_AUTO_INHERITED   = 0x0400\n\tSE_SACL_AUTO_INHERITED   = 0x0800\n\tSE_DACL_PROTECTED        = 0x1000\n\tSE_SACL_PROTECTED        = 0x2000\n\tSE_RM_CONTROL_VALID      = 0x4000\n\tSE_SELF_RELATIVE         = 0x8000\n)\n\ntype ACCESS_MASK uint32\n\n// Constants for type ACCESS_MASK\nconst (\n\tDELETE                   = 0x00010000\n\tREAD_CONTROL             = 0x00020000\n\tWRITE_DAC                = 0x00040000\n\tWRITE_OWNER              = 0x00080000\n\tSYNCHRONIZE              = 0x00100000\n\tSTANDARD_RIGHTS_REQUIRED = 0x000F0000\n\tSTANDARD_RIGHTS_READ     = READ_CONTROL\n\tSTANDARD_RIGHTS_WRITE    = READ_CONTROL\n\tSTANDARD_RIGHTS_EXECUTE  = READ_CONTROL\n\tSTANDARD_RIGHTS_ALL      = 0x001F0000\n\tSPECIFIC_RIGHTS_ALL      = 0x0000FFFF\n\tACCESS_SYSTEM_SECURITY   = 0x01000000\n\tMAXIMUM_ALLOWED          = 0x02000000\n\tGENERIC_READ             = 0x80000000\n\tGENERIC_WRITE            = 0x40000000\n\tGENERIC_EXECUTE          = 0x20000000\n\tGENERIC_ALL              = 0x10000000\n)\n\ntype ACCESS_MODE uint32\n\n// Constants for type ACCESS_MODE\nconst (\n\tNOT_USED_ACCESS   = 0\n\tGRANT_ACCESS      = 1\n\tSET_ACCESS        = 2\n\tDENY_ACCESS       = 3\n\tREVOKE_ACCESS     = 4\n\tSET_AUDIT_SUCCESS = 5\n\tSET_AUDIT_FAILURE = 6\n)\n\n// Constants for AceFlags and Inheritance fields\nconst (\n\tNO_INHERITANCE                     = 0x0\n\tSUB_OBJECTS_ONLY_INHERIT           = 0x1\n\tSUB_CONTAINERS_ONLY_INHERIT        = 0x2\n\tSUB_CONTAINERS_AND_OBJECTS_INHERIT = 0x3\n\tINHERIT_NO_PROPAGATE               = 0x4\n\tINHERIT_ONLY                       = 0x8\n\tINHERITED_ACCESS_ENTRY             = 0x10\n\tINHERITED_PARENT                   = 0x10000000\n\tINHERITED_GRANDPARENT              = 0x20000000\n\tOBJECT_INHERIT_ACE                 = 0x1\n\tCONTAINER_INHERIT_ACE              = 0x2\n\tNO_PROPAGATE_INHERIT_ACE           = 0x4\n\tINHERIT_ONLY_ACE                   = 0x8\n\tINHERITED_ACE                      = 0x10\n\tVALID_INHERIT_FLAGS                = 0x1F\n)\n\ntype MULTIPLE_TRUSTEE_OPERATION uint32\n\n// Constants for MULTIPLE_TRUSTEE_OPERATION\nconst (\n\tNO_MULTIPLE_TRUSTEE    = 0\n\tTRUSTEE_IS_IMPERSONATE = 1\n)\n\ntype TRUSTEE_FORM uint32\n\n// Constants for TRUSTEE_FORM\nconst (\n\tTRUSTEE_IS_SID              = 0\n\tTRUSTEE_IS_NAME             = 1\n\tTRUSTEE_BAD_FORM            = 2\n\tTRUSTEE_IS_OBJECTS_AND_SID  = 3\n\tTRUSTEE_IS_OBJECTS_AND_NAME = 4\n)\n\ntype TRUSTEE_TYPE uint32\n\n// Constants for TRUSTEE_TYPE\nconst (\n\tTRUSTEE_IS_UNKNOWN          = 0\n\tTRUSTEE_IS_USER             = 1\n\tTRUSTEE_IS_GROUP            = 2\n\tTRUSTEE_IS_DOMAIN           = 3\n\tTRUSTEE_IS_ALIAS            = 4\n\tTRUSTEE_IS_WELL_KNOWN_GROUP = 5\n\tTRUSTEE_IS_DELETED          = 6\n\tTRUSTEE_IS_INVALID          = 7\n\tTRUSTEE_IS_COMPUTER         = 8\n)\n\n// Constants for ObjectsPresent field\nconst (\n\tACE_OBJECT_TYPE_PRESENT           = 0x1\n\tACE_INHERITED_OBJECT_TYPE_PRESENT = 0x2\n)\n\ntype EXPLICIT_ACCESS struct {\n\tAccessPermissions ACCESS_MASK\n\tAccessMode        ACCESS_MODE\n\tInheritance       uint32\n\tTrustee           TRUSTEE\n}\n\n// https://learn.microsoft.com/en-us/windows/win32/api/winnt/ns-winnt-ace_header\ntype ACE_HEADER struct {\n\tAceType  uint8\n\tAceFlags uint8\n\tAceSize  uint16\n}\n\n// https://learn.microsoft.com/en-us/windows/win32/api/winnt/ns-winnt-access_allowed_ace\ntype ACCESS_ALLOWED_ACE struct {\n\tHeader   ACE_HEADER\n\tMask     ACCESS_MASK\n\tSidStart uint32\n}\n\nconst (\n\t// Constants for AceType\n\t// https://learn.microsoft.com/en-us/windows/win32/api/winnt/ns-winnt-ace_header\n\tACCESS_ALLOWED_ACE_TYPE = 0\n\tACCESS_DENIED_ACE_TYPE  = 1\n)\n\n// This type is the union inside of TRUSTEE and must be created using one of the TrusteeValueFrom* functions.\ntype TrusteeValue uintptr\n\nfunc TrusteeValueFromString(str string) TrusteeValue {\n\treturn TrusteeValue(unsafe.Pointer(StringToUTF16Ptr(str)))\n}\nfunc TrusteeValueFromSID(sid *SID) TrusteeValue {\n\treturn TrusteeValue(unsafe.Pointer(sid))\n}\nfunc TrusteeValueFromObjectsAndSid(objectsAndSid *OBJECTS_AND_SID) TrusteeValue {\n\treturn TrusteeValue(unsafe.Pointer(objectsAndSid))\n}\nfunc TrusteeValueFromObjectsAndName(objectsAndName *OBJECTS_AND_NAME) TrusteeValue {\n\treturn TrusteeValue(unsafe.Pointer(objectsAndName))\n}\n\ntype TRUSTEE struct {\n\tMultipleTrustee          *TRUSTEE\n\tMultipleTrusteeOperation MULTIPLE_TRUSTEE_OPERATION\n\tTrusteeForm              TRUSTEE_FORM\n\tTrusteeType              TRUSTEE_TYPE\n\tTrusteeValue             TrusteeValue\n}\n\ntype OBJECTS_AND_SID struct {\n\tObjectsPresent          uint32\n\tObjectTypeGuid          GUID\n\tInheritedObjectTypeGuid GUID\n\tSid                     *SID\n}\n\ntype OBJECTS_AND_NAME struct {\n\tObjectsPresent          uint32\n\tObjectType              SE_OBJECT_TYPE\n\tObjectTypeName          *uint16\n\tInheritedObjectTypeName *uint16\n\tName                    *uint16\n}\n\n//sys\tgetSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner **SID, group **SID, dacl **ACL, sacl **ACL, sd **SECURITY_DESCRIPTOR) (ret error) = advapi32.GetSecurityInfo\n//sys\tSetSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) (ret error) = advapi32.SetSecurityInfo\n//sys\tgetNamedSecurityInfo(objectName string, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner **SID, group **SID, dacl **ACL, sacl **ACL, sd **SECURITY_DESCRIPTOR) (ret error) = advapi32.GetNamedSecurityInfoW\n//sys\tSetNamedSecurityInfo(objectName string, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) (ret error) = advapi32.SetNamedSecurityInfoW\n//sys\tSetKernelObjectSecurity(handle Handle, securityInformation SECURITY_INFORMATION, securityDescriptor *SECURITY_DESCRIPTOR) (err error) = advapi32.SetKernelObjectSecurity\n\n//sys\tbuildSecurityDescriptor(owner *TRUSTEE, group *TRUSTEE, countAccessEntries uint32, accessEntries *EXPLICIT_ACCESS, countAuditEntries uint32, auditEntries *EXPLICIT_ACCESS, oldSecurityDescriptor *SECURITY_DESCRIPTOR, sizeNewSecurityDescriptor *uint32, newSecurityDescriptor **SECURITY_DESCRIPTOR) (ret error) = advapi32.BuildSecurityDescriptorW\n//sys\tinitializeSecurityDescriptor(absoluteSD *SECURITY_DESCRIPTOR, revision uint32) (err error) = advapi32.InitializeSecurityDescriptor\n\n//sys\tgetSecurityDescriptorControl(sd *SECURITY_DESCRIPTOR, control *SECURITY_DESCRIPTOR_CONTROL, revision *uint32) (err error) = advapi32.GetSecurityDescriptorControl\n//sys\tgetSecurityDescriptorDacl(sd *SECURITY_DESCRIPTOR, daclPresent *bool, dacl **ACL, daclDefaulted *bool) (err error) = advapi32.GetSecurityDescriptorDacl\n//sys\tgetSecurityDescriptorSacl(sd *SECURITY_DESCRIPTOR, saclPresent *bool, sacl **ACL, saclDefaulted *bool) (err error) = advapi32.GetSecurityDescriptorSacl\n//sys\tgetSecurityDescriptorOwner(sd *SECURITY_DESCRIPTOR, owner **SID, ownerDefaulted *bool) (err error) = advapi32.GetSecurityDescriptorOwner\n//sys\tgetSecurityDescriptorGroup(sd *SECURITY_DESCRIPTOR, group **SID, groupDefaulted *bool) (err error) = advapi32.GetSecurityDescriptorGroup\n//sys\tgetSecurityDescriptorLength(sd *SECURITY_DESCRIPTOR) (len uint32) = advapi32.GetSecurityDescriptorLength\n//sys\tgetSecurityDescriptorRMControl(sd *SECURITY_DESCRIPTOR, rmControl *uint8) (ret error) [failretval!=0] = advapi32.GetSecurityDescriptorRMControl\n//sys\tisValidSecurityDescriptor(sd *SECURITY_DESCRIPTOR) (isValid bool) = advapi32.IsValidSecurityDescriptor\n\n//sys\tsetSecurityDescriptorControl(sd *SECURITY_DESCRIPTOR, controlBitsOfInterest SECURITY_DESCRIPTOR_CONTROL, controlBitsToSet SECURITY_DESCRIPTOR_CONTROL) (err error) = advapi32.SetSecurityDescriptorControl\n//sys\tsetSecurityDescriptorDacl(sd *SECURITY_DESCRIPTOR, daclPresent bool, dacl *ACL, daclDefaulted bool) (err error) = advapi32.SetSecurityDescriptorDacl\n//sys\tsetSecurityDescriptorSacl(sd *SECURITY_DESCRIPTOR, saclPresent bool, sacl *ACL, saclDefaulted bool) (err error) = advapi32.SetSecurityDescriptorSacl\n//sys\tsetSecurityDescriptorOwner(sd *SECURITY_DESCRIPTOR, owner *SID, ownerDefaulted bool) (err error) = advapi32.SetSecurityDescriptorOwner\n//sys\tsetSecurityDescriptorGroup(sd *SECURITY_DESCRIPTOR, group *SID, groupDefaulted bool) (err error) = advapi32.SetSecurityDescriptorGroup\n//sys\tsetSecurityDescriptorRMControl(sd *SECURITY_DESCRIPTOR, rmControl *uint8) = advapi32.SetSecurityDescriptorRMControl\n\n//sys\tconvertStringSecurityDescriptorToSecurityDescriptor(str string, revision uint32, sd **SECURITY_DESCRIPTOR, size *uint32) (err error) = advapi32.ConvertStringSecurityDescriptorToSecurityDescriptorW\n//sys\tconvertSecurityDescriptorToStringSecurityDescriptor(sd *SECURITY_DESCRIPTOR, revision uint32, securityInformation SECURITY_INFORMATION, str **uint16, strLen *uint32) (err error) = advapi32.ConvertSecurityDescriptorToStringSecurityDescriptorW\n\n//sys\tmakeAbsoluteSD(selfRelativeSD *SECURITY_DESCRIPTOR, absoluteSD *SECURITY_DESCRIPTOR, absoluteSDSize *uint32, dacl *ACL, daclSize *uint32, sacl *ACL, saclSize *uint32, owner *SID, ownerSize *uint32, group *SID, groupSize *uint32) (err error) = advapi32.MakeAbsoluteSD\n//sys\tmakeSelfRelativeSD(absoluteSD *SECURITY_DESCRIPTOR, selfRelativeSD *SECURITY_DESCRIPTOR, selfRelativeSDSize *uint32) (err error) = advapi32.MakeSelfRelativeSD\n\n//sys\tsetEntriesInAcl(countExplicitEntries uint32, explicitEntries *EXPLICIT_ACCESS, oldACL *ACL, newACL **ACL) (ret error) = advapi32.SetEntriesInAclW\n//sys\tGetAce(acl *ACL, aceIndex uint32, pAce **ACCESS_ALLOWED_ACE) (err error) = advapi32.GetAce\n\n// Control returns the security descriptor control bits.\nfunc (sd *SECURITY_DESCRIPTOR) Control() (control SECURITY_DESCRIPTOR_CONTROL, revision uint32, err error) {\n\terr = getSecurityDescriptorControl(sd, &control, &revision)\n\treturn\n}\n\n// SetControl sets the security descriptor control bits.\nfunc (sd *SECURITY_DESCRIPTOR) SetControl(controlBitsOfInterest SECURITY_DESCRIPTOR_CONTROL, controlBitsToSet SECURITY_DESCRIPTOR_CONTROL) error {\n\treturn setSecurityDescriptorControl(sd, controlBitsOfInterest, controlBitsToSet)\n}\n\n// RMControl returns the security descriptor resource manager control bits.\nfunc (sd *SECURITY_DESCRIPTOR) RMControl() (control uint8, err error) {\n\terr = getSecurityDescriptorRMControl(sd, &control)\n\treturn\n}\n\n// SetRMControl sets the security descriptor resource manager control bits.\nfunc (sd *SECURITY_DESCRIPTOR) SetRMControl(rmControl uint8) {\n\tsetSecurityDescriptorRMControl(sd, &rmControl)\n}\n\n// DACL returns the security descriptor DACL and whether it was defaulted. The dacl return value may be nil\n// if a DACL exists but is an \"empty DACL\", meaning fully permissive. If the DACL does not exist, err returns\n// ERROR_OBJECT_NOT_FOUND.\nfunc (sd *SECURITY_DESCRIPTOR) DACL() (dacl *ACL, defaulted bool, err error) {\n\tvar present bool\n\terr = getSecurityDescriptorDacl(sd, &present, &dacl, &defaulted)\n\tif !present {\n\t\terr = ERROR_OBJECT_NOT_FOUND\n\t}\n\treturn\n}\n\n// SetDACL sets the absolute security descriptor DACL.\nfunc (absoluteSD *SECURITY_DESCRIPTOR) SetDACL(dacl *ACL, present, defaulted bool) error {\n\treturn setSecurityDescriptorDacl(absoluteSD, present, dacl, defaulted)\n}\n\n// SACL returns the security descriptor SACL and whether it was defaulted. The sacl return value may be nil\n// if a SACL exists but is an \"empty SACL\", meaning fully permissive. If the SACL does not exist, err returns\n// ERROR_OBJECT_NOT_FOUND.\nfunc (sd *SECURITY_DESCRIPTOR) SACL() (sacl *ACL, defaulted bool, err error) {\n\tvar present bool\n\terr = getSecurityDescriptorSacl(sd, &present, &sacl, &defaulted)\n\tif !present {\n\t\terr = ERROR_OBJECT_NOT_FOUND\n\t}\n\treturn\n}\n\n// SetSACL sets the absolute security descriptor SACL.\nfunc (absoluteSD *SECURITY_DESCRIPTOR) SetSACL(sacl *ACL, present, defaulted bool) error {\n\treturn setSecurityDescriptorSacl(absoluteSD, present, sacl, defaulted)\n}\n\n// Owner returns the security descriptor owner and whether it was defaulted.\nfunc (sd *SECURITY_DESCRIPTOR) Owner() (owner *SID, defaulted bool, err error) {\n\terr = getSecurityDescriptorOwner(sd, &owner, &defaulted)\n\treturn\n}\n\n// SetOwner sets the absolute security descriptor owner.\nfunc (absoluteSD *SECURITY_DESCRIPTOR) SetOwner(owner *SID, defaulted bool) error {\n\treturn setSecurityDescriptorOwner(absoluteSD, owner, defaulted)\n}\n\n// Group returns the security descriptor group and whether it was defaulted.\nfunc (sd *SECURITY_DESCRIPTOR) Group() (group *SID, defaulted bool, err error) {\n\terr = getSecurityDescriptorGroup(sd, &group, &defaulted)\n\treturn\n}\n\n// SetGroup sets the absolute security descriptor owner.\nfunc (absoluteSD *SECURITY_DESCRIPTOR) SetGroup(group *SID, defaulted bool) error {\n\treturn setSecurityDescriptorGroup(absoluteSD, group, defaulted)\n}\n\n// Length returns the length of the security descriptor.\nfunc (sd *SECURITY_DESCRIPTOR) Length() uint32 {\n\treturn getSecurityDescriptorLength(sd)\n}\n\n// IsValid returns whether the security descriptor is valid.\nfunc (sd *SECURITY_DESCRIPTOR) IsValid() bool {\n\treturn isValidSecurityDescriptor(sd)\n}\n\n// String returns the SDDL form of the security descriptor, with a function signature that can be\n// used with %v formatting directives.\nfunc (sd *SECURITY_DESCRIPTOR) String() string {\n\tvar sddl *uint16\n\terr := convertSecurityDescriptorToStringSecurityDescriptor(sd, 1, 0xff, &sddl, nil)\n\tif err != nil {\n\t\treturn \"\"\n\t}\n\tdefer LocalFree(Handle(unsafe.Pointer(sddl)))\n\treturn UTF16PtrToString(sddl)\n}\n\n// ToAbsolute converts a self-relative security descriptor into an absolute one.\nfunc (selfRelativeSD *SECURITY_DESCRIPTOR) ToAbsolute() (absoluteSD *SECURITY_DESCRIPTOR, err error) {\n\tcontrol, _, err := selfRelativeSD.Control()\n\tif err != nil {\n\t\treturn\n\t}\n\tif control&SE_SELF_RELATIVE == 0 {\n\t\terr = ERROR_INVALID_PARAMETER\n\t\treturn\n\t}\n\tvar absoluteSDSize, daclSize, saclSize, ownerSize, groupSize uint32\n\terr = makeAbsoluteSD(selfRelativeSD, nil, &absoluteSDSize,\n\t\tnil, &daclSize, nil, &saclSize, nil, &ownerSize, nil, &groupSize)\n\tswitch err {\n\tcase ERROR_INSUFFICIENT_BUFFER:\n\tcase nil:\n\t\t// makeAbsoluteSD is expected to fail, but it succeeds.\n\t\treturn nil, ERROR_INTERNAL_ERROR\n\tdefault:\n\t\treturn nil, err\n\t}\n\tif absoluteSDSize > 0 {\n\t\tabsoluteSD = new(SECURITY_DESCRIPTOR)\n\t\tif unsafe.Sizeof(*absoluteSD) < uintptr(absoluteSDSize) {\n\t\t\tpanic(\"sizeof(SECURITY_DESCRIPTOR) too small\")\n\t\t}\n\t}\n\tvar (\n\t\tdacl  *ACL\n\t\tsacl  *ACL\n\t\towner *SID\n\t\tgroup *SID\n\t)\n\tif daclSize > 0 {\n\t\tdacl = (*ACL)(unsafe.Pointer(unsafe.SliceData(make([]byte, daclSize))))\n\t}\n\tif saclSize > 0 {\n\t\tsacl = (*ACL)(unsafe.Pointer(unsafe.SliceData(make([]byte, saclSize))))\n\t}\n\tif ownerSize > 0 {\n\t\towner = (*SID)(unsafe.Pointer(unsafe.SliceData(make([]byte, ownerSize))))\n\t}\n\tif groupSize > 0 {\n\t\tgroup = (*SID)(unsafe.Pointer(unsafe.SliceData(make([]byte, groupSize))))\n\t}\n\t// We call into Windows via makeAbsoluteSD, which sets up\n\t// pointers within absoluteSD that point to other chunks of memory\n\t// we pass into makeAbsoluteSD, and that happens outside the view of the GC.\n\t// We therefore take some care here to then verify the pointers are as we expect\n\t// and set them explicitly in view of the GC. See https://go.dev/issue/73199.\n\t// TODO: consider weak pointers once Go 1.24 is appropriate. See suggestion in https://go.dev/cl/663575.\n\terr = makeAbsoluteSD(selfRelativeSD, absoluteSD, &absoluteSDSize,\n\t\tdacl, &daclSize, sacl, &saclSize, owner, &ownerSize, group, &groupSize)\n\tif err != nil {\n\t\t// Don't return absoluteSD, which might be partially initialized.\n\t\treturn nil, err\n\t}\n\t// Before using any fields, verify absoluteSD is in the format we expect according to Windows.\n\t// See https://learn.microsoft.com/en-us/windows/win32/secauthz/absolute-and-self-relative-security-descriptors\n\tabsControl, _, err := absoluteSD.Control()\n\tif err != nil {\n\t\tpanic(\"absoluteSD: \" + err.Error())\n\t}\n\tif absControl&SE_SELF_RELATIVE != 0 {\n\t\tpanic(\"absoluteSD not in absolute format\")\n\t}\n\tif absoluteSD.dacl != dacl {\n\t\tpanic(\"dacl pointer mismatch\")\n\t}\n\tif absoluteSD.sacl != sacl {\n\t\tpanic(\"sacl pointer mismatch\")\n\t}\n\tif absoluteSD.owner != owner {\n\t\tpanic(\"owner pointer mismatch\")\n\t}\n\tif absoluteSD.group != group {\n\t\tpanic(\"group pointer mismatch\")\n\t}\n\tabsoluteSD.dacl = dacl\n\tabsoluteSD.sacl = sacl\n\tabsoluteSD.owner = owner\n\tabsoluteSD.group = group\n\n\treturn\n}\n\n// ToSelfRelative converts an absolute security descriptor into a self-relative one.\nfunc (absoluteSD *SECURITY_DESCRIPTOR) ToSelfRelative() (selfRelativeSD *SECURITY_DESCRIPTOR, err error) {\n\tcontrol, _, err := absoluteSD.Control()\n\tif err != nil {\n\t\treturn\n\t}\n\tif control&SE_SELF_RELATIVE != 0 {\n\t\terr = ERROR_INVALID_PARAMETER\n\t\treturn\n\t}\n\tvar selfRelativeSDSize uint32\n\terr = makeSelfRelativeSD(absoluteSD, nil, &selfRelativeSDSize)\n\tswitch err {\n\tcase ERROR_INSUFFICIENT_BUFFER:\n\tcase nil:\n\t\t// makeSelfRelativeSD is expected to fail, but it succeeds.\n\t\treturn nil, ERROR_INTERNAL_ERROR\n\tdefault:\n\t\treturn nil, err\n\t}\n\tif selfRelativeSDSize > 0 {\n\t\tselfRelativeSD = (*SECURITY_DESCRIPTOR)(unsafe.Pointer(&make([]byte, selfRelativeSDSize)[0]))\n\t}\n\terr = makeSelfRelativeSD(absoluteSD, selfRelativeSD, &selfRelativeSDSize)\n\treturn\n}\n\nfunc (selfRelativeSD *SECURITY_DESCRIPTOR) copySelfRelativeSecurityDescriptor() *SECURITY_DESCRIPTOR {\n\tsdLen := int(selfRelativeSD.Length())\n\tconst min = int(unsafe.Sizeof(SECURITY_DESCRIPTOR{}))\n\tif sdLen < min {\n\t\tsdLen = min\n\t}\n\n\tsrc := unsafe.Slice((*byte)(unsafe.Pointer(selfRelativeSD)), sdLen)\n\t// SECURITY_DESCRIPTOR has pointers in it, which means checkptr expects for it to\n\t// be aligned properly. When we're copying a Windows-allocated struct to a\n\t// Go-allocated one, make sure that the Go allocation is aligned to the\n\t// pointer size.\n\tconst psize = int(unsafe.Sizeof(uintptr(0)))\n\talloc := make([]uintptr, (sdLen+psize-1)/psize)\n\tdst := unsafe.Slice((*byte)(unsafe.Pointer(&alloc[0])), sdLen)\n\tcopy(dst, src)\n\treturn (*SECURITY_DESCRIPTOR)(unsafe.Pointer(&dst[0]))\n}\n\n// SecurityDescriptorFromString converts an SDDL string describing a security descriptor into a\n// self-relative security descriptor object allocated on the Go heap.\nfunc SecurityDescriptorFromString(sddl string) (sd *SECURITY_DESCRIPTOR, err error) {\n\tvar winHeapSD *SECURITY_DESCRIPTOR\n\terr = convertStringSecurityDescriptorToSecurityDescriptor(sddl, 1, &winHeapSD, nil)\n\tif err != nil {\n\t\treturn\n\t}\n\tdefer LocalFree(Handle(unsafe.Pointer(winHeapSD)))\n\treturn winHeapSD.copySelfRelativeSecurityDescriptor(), nil\n}\n\n// GetSecurityInfo queries the security information for a given handle and returns the self-relative security\n// descriptor result on the Go heap.\nfunc GetSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION) (sd *SECURITY_DESCRIPTOR, err error) {\n\tvar winHeapSD *SECURITY_DESCRIPTOR\n\terr = getSecurityInfo(handle, objectType, securityInformation, nil, nil, nil, nil, &winHeapSD)\n\tif err != nil {\n\t\treturn\n\t}\n\tdefer LocalFree(Handle(unsafe.Pointer(winHeapSD)))\n\treturn winHeapSD.copySelfRelativeSecurityDescriptor(), nil\n}\n\n// GetNamedSecurityInfo queries the security information for a given named object and returns the self-relative security\n// descriptor result on the Go heap.\nfunc GetNamedSecurityInfo(objectName string, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION) (sd *SECURITY_DESCRIPTOR, err error) {\n\tvar winHeapSD *SECURITY_DESCRIPTOR\n\terr = getNamedSecurityInfo(objectName, objectType, securityInformation, nil, nil, nil, nil, &winHeapSD)\n\tif err != nil {\n\t\treturn\n\t}\n\tdefer LocalFree(Handle(unsafe.Pointer(winHeapSD)))\n\treturn winHeapSD.copySelfRelativeSecurityDescriptor(), nil\n}\n\n// BuildSecurityDescriptor makes a new security descriptor using the input trustees, explicit access lists, and\n// prior security descriptor to be merged, any of which can be nil, returning the self-relative security descriptor\n// result on the Go heap.\nfunc BuildSecurityDescriptor(owner *TRUSTEE, group *TRUSTEE, accessEntries []EXPLICIT_ACCESS, auditEntries []EXPLICIT_ACCESS, mergedSecurityDescriptor *SECURITY_DESCRIPTOR) (sd *SECURITY_DESCRIPTOR, err error) {\n\tvar winHeapSD *SECURITY_DESCRIPTOR\n\tvar winHeapSDSize uint32\n\tvar firstAccessEntry *EXPLICIT_ACCESS\n\tif len(accessEntries) > 0 {\n\t\tfirstAccessEntry = &accessEntries[0]\n\t}\n\tvar firstAuditEntry *EXPLICIT_ACCESS\n\tif len(auditEntries) > 0 {\n\t\tfirstAuditEntry = &auditEntries[0]\n\t}\n\terr = buildSecurityDescriptor(owner, group, uint32(len(accessEntries)), firstAccessEntry, uint32(len(auditEntries)), firstAuditEntry, mergedSecurityDescriptor, &winHeapSDSize, &winHeapSD)\n\tif err != nil {\n\t\treturn\n\t}\n\tdefer LocalFree(Handle(unsafe.Pointer(winHeapSD)))\n\treturn winHeapSD.copySelfRelativeSecurityDescriptor(), nil\n}\n\n// NewSecurityDescriptor creates and initializes a new absolute security descriptor.\nfunc NewSecurityDescriptor() (absoluteSD *SECURITY_DESCRIPTOR, err error) {\n\tabsoluteSD = &SECURITY_DESCRIPTOR{}\n\terr = initializeSecurityDescriptor(absoluteSD, 1)\n\treturn\n}\n\n// ACLFromEntries returns a new ACL on the Go heap containing a list of explicit entries as well as those of another ACL.\n// Both explicitEntries and mergedACL are optional and can be nil.\nfunc ACLFromEntries(explicitEntries []EXPLICIT_ACCESS, mergedACL *ACL) (acl *ACL, err error) {\n\tvar firstExplicitEntry *EXPLICIT_ACCESS\n\tif len(explicitEntries) > 0 {\n\t\tfirstExplicitEntry = &explicitEntries[0]\n\t}\n\tvar winHeapACL *ACL\n\terr = setEntriesInAcl(uint32(len(explicitEntries)), firstExplicitEntry, mergedACL, &winHeapACL)\n\tif err != nil {\n\t\treturn\n\t}\n\tdefer LocalFree(Handle(unsafe.Pointer(winHeapACL)))\n\taclBytes := make([]byte, winHeapACL.aclSize)\n\tcopy(aclBytes, (*[(1 << 31) - 1]byte)(unsafe.Pointer(winHeapACL))[:len(aclBytes):len(aclBytes)])\n\treturn (*ACL)(unsafe.Pointer(&aclBytes[0])), nil\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/service.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build windows\n\npackage windows\n\nconst (\n\tSC_MANAGER_CONNECT            = 1\n\tSC_MANAGER_CREATE_SERVICE     = 2\n\tSC_MANAGER_ENUMERATE_SERVICE  = 4\n\tSC_MANAGER_LOCK               = 8\n\tSC_MANAGER_QUERY_LOCK_STATUS  = 16\n\tSC_MANAGER_MODIFY_BOOT_CONFIG = 32\n\tSC_MANAGER_ALL_ACCESS         = 0xf003f\n)\n\nconst (\n\tSERVICE_KERNEL_DRIVER       = 1\n\tSERVICE_FILE_SYSTEM_DRIVER  = 2\n\tSERVICE_ADAPTER             = 4\n\tSERVICE_RECOGNIZER_DRIVER   = 8\n\tSERVICE_WIN32_OWN_PROCESS   = 16\n\tSERVICE_WIN32_SHARE_PROCESS = 32\n\tSERVICE_WIN32               = SERVICE_WIN32_OWN_PROCESS | SERVICE_WIN32_SHARE_PROCESS\n\tSERVICE_INTERACTIVE_PROCESS = 256\n\tSERVICE_DRIVER              = SERVICE_KERNEL_DRIVER | SERVICE_FILE_SYSTEM_DRIVER | SERVICE_RECOGNIZER_DRIVER\n\tSERVICE_TYPE_ALL            = SERVICE_WIN32 | SERVICE_ADAPTER | SERVICE_DRIVER | SERVICE_INTERACTIVE_PROCESS\n\n\tSERVICE_BOOT_START   = 0\n\tSERVICE_SYSTEM_START = 1\n\tSERVICE_AUTO_START   = 2\n\tSERVICE_DEMAND_START = 3\n\tSERVICE_DISABLED     = 4\n\n\tSERVICE_ERROR_IGNORE   = 0\n\tSERVICE_ERROR_NORMAL   = 1\n\tSERVICE_ERROR_SEVERE   = 2\n\tSERVICE_ERROR_CRITICAL = 3\n\n\tSC_STATUS_PROCESS_INFO = 0\n\n\tSC_ACTION_NONE        = 0\n\tSC_ACTION_RESTART     = 1\n\tSC_ACTION_REBOOT      = 2\n\tSC_ACTION_RUN_COMMAND = 3\n\n\tSERVICE_STOPPED          = 1\n\tSERVICE_START_PENDING    = 2\n\tSERVICE_STOP_PENDING     = 3\n\tSERVICE_RUNNING          = 4\n\tSERVICE_CONTINUE_PENDING = 5\n\tSERVICE_PAUSE_PENDING    = 6\n\tSERVICE_PAUSED           = 7\n\tSERVICE_NO_CHANGE        = 0xffffffff\n\n\tSERVICE_ACCEPT_STOP                  = 1\n\tSERVICE_ACCEPT_PAUSE_CONTINUE        = 2\n\tSERVICE_ACCEPT_SHUTDOWN              = 4\n\tSERVICE_ACCEPT_PARAMCHANGE           = 8\n\tSERVICE_ACCEPT_NETBINDCHANGE         = 16\n\tSERVICE_ACCEPT_HARDWAREPROFILECHANGE = 32\n\tSERVICE_ACCEPT_POWEREVENT            = 64\n\tSERVICE_ACCEPT_SESSIONCHANGE         = 128\n\tSERVICE_ACCEPT_PRESHUTDOWN           = 256\n\n\tSERVICE_CONTROL_STOP                  = 1\n\tSERVICE_CONTROL_PAUSE                 = 2\n\tSERVICE_CONTROL_CONTINUE              = 3\n\tSERVICE_CONTROL_INTERROGATE           = 4\n\tSERVICE_CONTROL_SHUTDOWN              = 5\n\tSERVICE_CONTROL_PARAMCHANGE           = 6\n\tSERVICE_CONTROL_NETBINDADD            = 7\n\tSERVICE_CONTROL_NETBINDREMOVE         = 8\n\tSERVICE_CONTROL_NETBINDENABLE         = 9\n\tSERVICE_CONTROL_NETBINDDISABLE        = 10\n\tSERVICE_CONTROL_DEVICEEVENT           = 11\n\tSERVICE_CONTROL_HARDWAREPROFILECHANGE = 12\n\tSERVICE_CONTROL_POWEREVENT            = 13\n\tSERVICE_CONTROL_SESSIONCHANGE         = 14\n\tSERVICE_CONTROL_PRESHUTDOWN           = 15\n\n\tSERVICE_ACTIVE    = 1\n\tSERVICE_INACTIVE  = 2\n\tSERVICE_STATE_ALL = 3\n\n\tSERVICE_QUERY_CONFIG         = 1\n\tSERVICE_CHANGE_CONFIG        = 2\n\tSERVICE_QUERY_STATUS         = 4\n\tSERVICE_ENUMERATE_DEPENDENTS = 8\n\tSERVICE_START                = 16\n\tSERVICE_STOP                 = 32\n\tSERVICE_PAUSE_CONTINUE       = 64\n\tSERVICE_INTERROGATE          = 128\n\tSERVICE_USER_DEFINED_CONTROL = 256\n\tSERVICE_ALL_ACCESS           = STANDARD_RIGHTS_REQUIRED | SERVICE_QUERY_CONFIG | SERVICE_CHANGE_CONFIG | SERVICE_QUERY_STATUS | SERVICE_ENUMERATE_DEPENDENTS | SERVICE_START | SERVICE_STOP | SERVICE_PAUSE_CONTINUE | SERVICE_INTERROGATE | SERVICE_USER_DEFINED_CONTROL\n\n\tSERVICE_RUNS_IN_SYSTEM_PROCESS = 1\n\n\tSERVICE_CONFIG_DESCRIPTION              = 1\n\tSERVICE_CONFIG_FAILURE_ACTIONS          = 2\n\tSERVICE_CONFIG_DELAYED_AUTO_START_INFO  = 3\n\tSERVICE_CONFIG_FAILURE_ACTIONS_FLAG     = 4\n\tSERVICE_CONFIG_SERVICE_SID_INFO         = 5\n\tSERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO = 6\n\tSERVICE_CONFIG_PRESHUTDOWN_INFO         = 7\n\tSERVICE_CONFIG_TRIGGER_INFO             = 8\n\tSERVICE_CONFIG_PREFERRED_NODE           = 9\n\tSERVICE_CONFIG_LAUNCH_PROTECTED         = 12\n\n\tSERVICE_SID_TYPE_NONE         = 0\n\tSERVICE_SID_TYPE_UNRESTRICTED = 1\n\tSERVICE_SID_TYPE_RESTRICTED   = 2 | SERVICE_SID_TYPE_UNRESTRICTED\n\n\tSC_ENUM_PROCESS_INFO = 0\n\n\tSERVICE_NOTIFY_STATUS_CHANGE    = 2\n\tSERVICE_NOTIFY_STOPPED          = 0x00000001\n\tSERVICE_NOTIFY_START_PENDING    = 0x00000002\n\tSERVICE_NOTIFY_STOP_PENDING     = 0x00000004\n\tSERVICE_NOTIFY_RUNNING          = 0x00000008\n\tSERVICE_NOTIFY_CONTINUE_PENDING = 0x00000010\n\tSERVICE_NOTIFY_PAUSE_PENDING    = 0x00000020\n\tSERVICE_NOTIFY_PAUSED           = 0x00000040\n\tSERVICE_NOTIFY_CREATED          = 0x00000080\n\tSERVICE_NOTIFY_DELETED          = 0x00000100\n\tSERVICE_NOTIFY_DELETE_PENDING   = 0x00000200\n\n\tSC_EVENT_DATABASE_CHANGE = 0\n\tSC_EVENT_PROPERTY_CHANGE = 1\n\tSC_EVENT_STATUS_CHANGE   = 2\n\n\tSERVICE_START_REASON_DEMAND             = 0x00000001\n\tSERVICE_START_REASON_AUTO               = 0x00000002\n\tSERVICE_START_REASON_TRIGGER            = 0x00000004\n\tSERVICE_START_REASON_RESTART_ON_FAILURE = 0x00000008\n\tSERVICE_START_REASON_DELAYEDAUTO        = 0x00000010\n\n\tSERVICE_DYNAMIC_INFORMATION_LEVEL_START_REASON = 1\n)\n\ntype ENUM_SERVICE_STATUS struct {\n\tServiceName   *uint16\n\tDisplayName   *uint16\n\tServiceStatus SERVICE_STATUS\n}\n\ntype SERVICE_STATUS struct {\n\tServiceType             uint32\n\tCurrentState            uint32\n\tControlsAccepted        uint32\n\tWin32ExitCode           uint32\n\tServiceSpecificExitCode uint32\n\tCheckPoint              uint32\n\tWaitHint                uint32\n}\n\ntype SERVICE_TABLE_ENTRY struct {\n\tServiceName *uint16\n\tServiceProc uintptr\n}\n\ntype QUERY_SERVICE_CONFIG struct {\n\tServiceType      uint32\n\tStartType        uint32\n\tErrorControl     uint32\n\tBinaryPathName   *uint16\n\tLoadOrderGroup   *uint16\n\tTagId            uint32\n\tDependencies     *uint16\n\tServiceStartName *uint16\n\tDisplayName      *uint16\n}\n\ntype SERVICE_DESCRIPTION struct {\n\tDescription *uint16\n}\n\ntype SERVICE_DELAYED_AUTO_START_INFO struct {\n\tIsDelayedAutoStartUp uint32\n}\n\ntype SERVICE_STATUS_PROCESS struct {\n\tServiceType             uint32\n\tCurrentState            uint32\n\tControlsAccepted        uint32\n\tWin32ExitCode           uint32\n\tServiceSpecificExitCode uint32\n\tCheckPoint              uint32\n\tWaitHint                uint32\n\tProcessId               uint32\n\tServiceFlags            uint32\n}\n\ntype ENUM_SERVICE_STATUS_PROCESS struct {\n\tServiceName          *uint16\n\tDisplayName          *uint16\n\tServiceStatusProcess SERVICE_STATUS_PROCESS\n}\n\ntype SERVICE_NOTIFY struct {\n\tVersion               uint32\n\tNotifyCallback        uintptr\n\tContext               uintptr\n\tNotificationStatus    uint32\n\tServiceStatus         SERVICE_STATUS_PROCESS\n\tNotificationTriggered uint32\n\tServiceNames          *uint16\n}\n\ntype SERVICE_FAILURE_ACTIONS struct {\n\tResetPeriod  uint32\n\tRebootMsg    *uint16\n\tCommand      *uint16\n\tActionsCount uint32\n\tActions      *SC_ACTION\n}\n\ntype SERVICE_FAILURE_ACTIONS_FLAG struct {\n\tFailureActionsOnNonCrashFailures int32\n}\n\ntype SC_ACTION struct {\n\tType  uint32\n\tDelay uint32\n}\n\ntype QUERY_SERVICE_LOCK_STATUS struct {\n\tIsLocked     uint32\n\tLockOwner    *uint16\n\tLockDuration uint32\n}\n\n//sys\tOpenSCManager(machineName *uint16, databaseName *uint16, access uint32) (handle Handle, err error) [failretval==0] = advapi32.OpenSCManagerW\n//sys\tCloseServiceHandle(handle Handle) (err error) = advapi32.CloseServiceHandle\n//sys\tCreateService(mgr Handle, serviceName *uint16, displayName *uint16, access uint32, srvType uint32, startType uint32, errCtl uint32, pathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16) (handle Handle, err error) [failretval==0] = advapi32.CreateServiceW\n//sys\tOpenService(mgr Handle, serviceName *uint16, access uint32) (handle Handle, err error) [failretval==0] = advapi32.OpenServiceW\n//sys\tDeleteService(service Handle) (err error) = advapi32.DeleteService\n//sys\tStartService(service Handle, numArgs uint32, argVectors **uint16) (err error) = advapi32.StartServiceW\n//sys\tQueryServiceStatus(service Handle, status *SERVICE_STATUS) (err error) = advapi32.QueryServiceStatus\n//sys\tQueryServiceLockStatus(mgr Handle, lockStatus *QUERY_SERVICE_LOCK_STATUS, bufSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceLockStatusW\n//sys\tControlService(service Handle, control uint32, status *SERVICE_STATUS) (err error) = advapi32.ControlService\n//sys\tStartServiceCtrlDispatcher(serviceTable *SERVICE_TABLE_ENTRY) (err error) = advapi32.StartServiceCtrlDispatcherW\n//sys\tSetServiceStatus(service Handle, serviceStatus *SERVICE_STATUS) (err error) = advapi32.SetServiceStatus\n//sys\tChangeServiceConfig(service Handle, serviceType uint32, startType uint32, errorControl uint32, binaryPathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16, displayName *uint16) (err error) = advapi32.ChangeServiceConfigW\n//sys\tQueryServiceConfig(service Handle, serviceConfig *QUERY_SERVICE_CONFIG, bufSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceConfigW\n//sys\tChangeServiceConfig2(service Handle, infoLevel uint32, info *byte) (err error) = advapi32.ChangeServiceConfig2W\n//sys\tQueryServiceConfig2(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceConfig2W\n//sys\tEnumServicesStatusEx(mgr Handle, infoLevel uint32, serviceType uint32, serviceState uint32, services *byte, bufSize uint32, bytesNeeded *uint32, servicesReturned *uint32, resumeHandle *uint32, groupName *uint16) (err error) = advapi32.EnumServicesStatusExW\n//sys\tQueryServiceStatusEx(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceStatusEx\n//sys\tNotifyServiceStatusChange(service Handle, notifyMask uint32, notifier *SERVICE_NOTIFY) (ret error) = advapi32.NotifyServiceStatusChangeW\n//sys\tSubscribeServiceChangeNotifications(service Handle, eventType uint32, callback uintptr, callbackCtx uintptr, subscription *uintptr) (ret error) = sechost.SubscribeServiceChangeNotifications?\n//sys\tUnsubscribeServiceChangeNotifications(subscription uintptr) = sechost.UnsubscribeServiceChangeNotifications?\n//sys\tRegisterServiceCtrlHandlerEx(serviceName *uint16, handlerProc uintptr, context uintptr) (handle Handle, err error) = advapi32.RegisterServiceCtrlHandlerExW\n//sys\tQueryServiceDynamicInformation(service Handle, infoLevel uint32, dynamicInfo unsafe.Pointer) (err error) = advapi32.QueryServiceDynamicInformation?\n//sys\tEnumDependentServices(service Handle, activityState uint32, services *ENUM_SERVICE_STATUS, buffSize uint32, bytesNeeded *uint32, servicesReturned *uint32) (err error) = advapi32.EnumDependentServicesW\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/setupapi_windows.go",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage windows\n\nimport (\n\t\"encoding/binary\"\n\t\"errors\"\n\t\"fmt\"\n\t\"runtime\"\n\t\"strings\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// This file contains functions that wrap SetupAPI.dll and CfgMgr32.dll,\n// core system functions for managing hardware devices, drivers, and the PnP tree.\n// Information about these APIs can be found at:\n//     https://docs.microsoft.com/en-us/windows-hardware/drivers/install/setupapi\n//     https://docs.microsoft.com/en-us/windows/win32/devinst/cfgmgr32-\n\nconst (\n\tERROR_EXPECTED_SECTION_NAME                  Errno = 0x20000000 | 0xC0000000 | 0\n\tERROR_BAD_SECTION_NAME_LINE                  Errno = 0x20000000 | 0xC0000000 | 1\n\tERROR_SECTION_NAME_TOO_LONG                  Errno = 0x20000000 | 0xC0000000 | 2\n\tERROR_GENERAL_SYNTAX                         Errno = 0x20000000 | 0xC0000000 | 3\n\tERROR_WRONG_INF_STYLE                        Errno = 0x20000000 | 0xC0000000 | 0x100\n\tERROR_SECTION_NOT_FOUND                      Errno = 0x20000000 | 0xC0000000 | 0x101\n\tERROR_LINE_NOT_FOUND                         Errno = 0x20000000 | 0xC0000000 | 0x102\n\tERROR_NO_BACKUP                              Errno = 0x20000000 | 0xC0000000 | 0x103\n\tERROR_NO_ASSOCIATED_CLASS                    Errno = 0x20000000 | 0xC0000000 | 0x200\n\tERROR_CLASS_MISMATCH                         Errno = 0x20000000 | 0xC0000000 | 0x201\n\tERROR_DUPLICATE_FOUND                        Errno = 0x20000000 | 0xC0000000 | 0x202\n\tERROR_NO_DRIVER_SELECTED                     Errno = 0x20000000 | 0xC0000000 | 0x203\n\tERROR_KEY_DOES_NOT_EXIST                     Errno = 0x20000000 | 0xC0000000 | 0x204\n\tERROR_INVALID_DEVINST_NAME                   Errno = 0x20000000 | 0xC0000000 | 0x205\n\tERROR_INVALID_CLASS                          Errno = 0x20000000 | 0xC0000000 | 0x206\n\tERROR_DEVINST_ALREADY_EXISTS                 Errno = 0x20000000 | 0xC0000000 | 0x207\n\tERROR_DEVINFO_NOT_REGISTERED                 Errno = 0x20000000 | 0xC0000000 | 0x208\n\tERROR_INVALID_REG_PROPERTY                   Errno = 0x20000000 | 0xC0000000 | 0x209\n\tERROR_NO_INF                                 Errno = 0x20000000 | 0xC0000000 | 0x20A\n\tERROR_NO_SUCH_DEVINST                        Errno = 0x20000000 | 0xC0000000 | 0x20B\n\tERROR_CANT_LOAD_CLASS_ICON                   Errno = 0x20000000 | 0xC0000000 | 0x20C\n\tERROR_INVALID_CLASS_INSTALLER                Errno = 0x20000000 | 0xC0000000 | 0x20D\n\tERROR_DI_DO_DEFAULT                          Errno = 0x20000000 | 0xC0000000 | 0x20E\n\tERROR_DI_NOFILECOPY                          Errno = 0x20000000 | 0xC0000000 | 0x20F\n\tERROR_INVALID_HWPROFILE                      Errno = 0x20000000 | 0xC0000000 | 0x210\n\tERROR_NO_DEVICE_SELECTED                     Errno = 0x20000000 | 0xC0000000 | 0x211\n\tERROR_DEVINFO_LIST_LOCKED                    Errno = 0x20000000 | 0xC0000000 | 0x212\n\tERROR_DEVINFO_DATA_LOCKED                    Errno = 0x20000000 | 0xC0000000 | 0x213\n\tERROR_DI_BAD_PATH                            Errno = 0x20000000 | 0xC0000000 | 0x214\n\tERROR_NO_CLASSINSTALL_PARAMS                 Errno = 0x20000000 | 0xC0000000 | 0x215\n\tERROR_FILEQUEUE_LOCKED                       Errno = 0x20000000 | 0xC0000000 | 0x216\n\tERROR_BAD_SERVICE_INSTALLSECT                Errno = 0x20000000 | 0xC0000000 | 0x217\n\tERROR_NO_CLASS_DRIVER_LIST                   Errno = 0x20000000 | 0xC0000000 | 0x218\n\tERROR_NO_ASSOCIATED_SERVICE                  Errno = 0x20000000 | 0xC0000000 | 0x219\n\tERROR_NO_DEFAULT_DEVICE_INTERFACE            Errno = 0x20000000 | 0xC0000000 | 0x21A\n\tERROR_DEVICE_INTERFACE_ACTIVE                Errno = 0x20000000 | 0xC0000000 | 0x21B\n\tERROR_DEVICE_INTERFACE_REMOVED               Errno = 0x20000000 | 0xC0000000 | 0x21C\n\tERROR_BAD_INTERFACE_INSTALLSECT              Errno = 0x20000000 | 0xC0000000 | 0x21D\n\tERROR_NO_SUCH_INTERFACE_CLASS                Errno = 0x20000000 | 0xC0000000 | 0x21E\n\tERROR_INVALID_REFERENCE_STRING               Errno = 0x20000000 | 0xC0000000 | 0x21F\n\tERROR_INVALID_MACHINENAME                    Errno = 0x20000000 | 0xC0000000 | 0x220\n\tERROR_REMOTE_COMM_FAILURE                    Errno = 0x20000000 | 0xC0000000 | 0x221\n\tERROR_MACHINE_UNAVAILABLE                    Errno = 0x20000000 | 0xC0000000 | 0x222\n\tERROR_NO_CONFIGMGR_SERVICES                  Errno = 0x20000000 | 0xC0000000 | 0x223\n\tERROR_INVALID_PROPPAGE_PROVIDER              Errno = 0x20000000 | 0xC0000000 | 0x224\n\tERROR_NO_SUCH_DEVICE_INTERFACE               Errno = 0x20000000 | 0xC0000000 | 0x225\n\tERROR_DI_POSTPROCESSING_REQUIRED             Errno = 0x20000000 | 0xC0000000 | 0x226\n\tERROR_INVALID_COINSTALLER                    Errno = 0x20000000 | 0xC0000000 | 0x227\n\tERROR_NO_COMPAT_DRIVERS                      Errno = 0x20000000 | 0xC0000000 | 0x228\n\tERROR_NO_DEVICE_ICON                         Errno = 0x20000000 | 0xC0000000 | 0x229\n\tERROR_INVALID_INF_LOGCONFIG                  Errno = 0x20000000 | 0xC0000000 | 0x22A\n\tERROR_DI_DONT_INSTALL                        Errno = 0x20000000 | 0xC0000000 | 0x22B\n\tERROR_INVALID_FILTER_DRIVER                  Errno = 0x20000000 | 0xC0000000 | 0x22C\n\tERROR_NON_WINDOWS_NT_DRIVER                  Errno = 0x20000000 | 0xC0000000 | 0x22D\n\tERROR_NON_WINDOWS_DRIVER                     Errno = 0x20000000 | 0xC0000000 | 0x22E\n\tERROR_NO_CATALOG_FOR_OEM_INF                 Errno = 0x20000000 | 0xC0000000 | 0x22F\n\tERROR_DEVINSTALL_QUEUE_NONNATIVE             Errno = 0x20000000 | 0xC0000000 | 0x230\n\tERROR_NOT_DISABLEABLE                        Errno = 0x20000000 | 0xC0000000 | 0x231\n\tERROR_CANT_REMOVE_DEVINST                    Errno = 0x20000000 | 0xC0000000 | 0x232\n\tERROR_INVALID_TARGET                         Errno = 0x20000000 | 0xC0000000 | 0x233\n\tERROR_DRIVER_NONNATIVE                       Errno = 0x20000000 | 0xC0000000 | 0x234\n\tERROR_IN_WOW64                               Errno = 0x20000000 | 0xC0000000 | 0x235\n\tERROR_SET_SYSTEM_RESTORE_POINT               Errno = 0x20000000 | 0xC0000000 | 0x236\n\tERROR_SCE_DISABLED                           Errno = 0x20000000 | 0xC0000000 | 0x238\n\tERROR_UNKNOWN_EXCEPTION                      Errno = 0x20000000 | 0xC0000000 | 0x239\n\tERROR_PNP_REGISTRY_ERROR                     Errno = 0x20000000 | 0xC0000000 | 0x23A\n\tERROR_REMOTE_REQUEST_UNSUPPORTED             Errno = 0x20000000 | 0xC0000000 | 0x23B\n\tERROR_NOT_AN_INSTALLED_OEM_INF               Errno = 0x20000000 | 0xC0000000 | 0x23C\n\tERROR_INF_IN_USE_BY_DEVICES                  Errno = 0x20000000 | 0xC0000000 | 0x23D\n\tERROR_DI_FUNCTION_OBSOLETE                   Errno = 0x20000000 | 0xC0000000 | 0x23E\n\tERROR_NO_AUTHENTICODE_CATALOG                Errno = 0x20000000 | 0xC0000000 | 0x23F\n\tERROR_AUTHENTICODE_DISALLOWED                Errno = 0x20000000 | 0xC0000000 | 0x240\n\tERROR_AUTHENTICODE_TRUSTED_PUBLISHER         Errno = 0x20000000 | 0xC0000000 | 0x241\n\tERROR_AUTHENTICODE_TRUST_NOT_ESTABLISHED     Errno = 0x20000000 | 0xC0000000 | 0x242\n\tERROR_AUTHENTICODE_PUBLISHER_NOT_TRUSTED     Errno = 0x20000000 | 0xC0000000 | 0x243\n\tERROR_SIGNATURE_OSATTRIBUTE_MISMATCH         Errno = 0x20000000 | 0xC0000000 | 0x244\n\tERROR_ONLY_VALIDATE_VIA_AUTHENTICODE         Errno = 0x20000000 | 0xC0000000 | 0x245\n\tERROR_DEVICE_INSTALLER_NOT_READY             Errno = 0x20000000 | 0xC0000000 | 0x246\n\tERROR_DRIVER_STORE_ADD_FAILED                Errno = 0x20000000 | 0xC0000000 | 0x247\n\tERROR_DEVICE_INSTALL_BLOCKED                 Errno = 0x20000000 | 0xC0000000 | 0x248\n\tERROR_DRIVER_INSTALL_BLOCKED                 Errno = 0x20000000 | 0xC0000000 | 0x249\n\tERROR_WRONG_INF_TYPE                         Errno = 0x20000000 | 0xC0000000 | 0x24A\n\tERROR_FILE_HASH_NOT_IN_CATALOG               Errno = 0x20000000 | 0xC0000000 | 0x24B\n\tERROR_DRIVER_STORE_DELETE_FAILED             Errno = 0x20000000 | 0xC0000000 | 0x24C\n\tERROR_UNRECOVERABLE_STACK_OVERFLOW           Errno = 0x20000000 | 0xC0000000 | 0x300\n\tEXCEPTION_SPAPI_UNRECOVERABLE_STACK_OVERFLOW Errno = ERROR_UNRECOVERABLE_STACK_OVERFLOW\n\tERROR_NO_DEFAULT_INTERFACE_DEVICE            Errno = ERROR_NO_DEFAULT_DEVICE_INTERFACE\n\tERROR_INTERFACE_DEVICE_ACTIVE                Errno = ERROR_DEVICE_INTERFACE_ACTIVE\n\tERROR_INTERFACE_DEVICE_REMOVED               Errno = ERROR_DEVICE_INTERFACE_REMOVED\n\tERROR_NO_SUCH_INTERFACE_DEVICE               Errno = ERROR_NO_SUCH_DEVICE_INTERFACE\n)\n\nconst (\n\tMAX_DEVICE_ID_LEN   = 200\n\tMAX_DEVNODE_ID_LEN  = MAX_DEVICE_ID_LEN\n\tMAX_GUID_STRING_LEN = 39 // 38 chars + terminator null\n\tMAX_CLASS_NAME_LEN  = 32\n\tMAX_PROFILE_LEN     = 80\n\tMAX_CONFIG_VALUE    = 9999\n\tMAX_INSTANCE_VALUE  = 9999\n\tCONFIGMG_VERSION    = 0x0400\n)\n\n// Maximum string length constants\nconst (\n\tLINE_LEN                    = 256  // Windows 9x-compatible maximum for displayable strings coming from a device INF.\n\tMAX_INF_STRING_LENGTH       = 4096 // Actual maximum size of an INF string (including string substitutions).\n\tMAX_INF_SECTION_NAME_LENGTH = 255  // For Windows 9x compatibility, INF section names should be constrained to 32 characters.\n\tMAX_TITLE_LEN               = 60\n\tMAX_INSTRUCTION_LEN         = 256\n\tMAX_LABEL_LEN               = 30\n\tMAX_SERVICE_NAME_LEN        = 256\n\tMAX_SUBTITLE_LEN            = 256\n)\n\nconst (\n\t// SP_MAX_MACHINENAME_LENGTH defines maximum length of a machine name in the format expected by ConfigMgr32 CM_Connect_Machine (i.e., \"\\\\\\\\MachineName\\0\").\n\tSP_MAX_MACHINENAME_LENGTH = MAX_PATH + 3\n)\n\n// HSPFILEQ is type for setup file queue\ntype HSPFILEQ uintptr\n\n// DevInfo holds reference to device information set\ntype DevInfo Handle\n\n// DEVINST is a handle usually recognized by cfgmgr32 APIs\ntype DEVINST uint32\n\n// DevInfoData is a device information structure (references a device instance that is a member of a device information set)\ntype DevInfoData struct {\n\tsize      uint32\n\tClassGUID GUID\n\tDevInst   DEVINST\n\t_         uintptr\n}\n\n// DevInfoListDetailData is a structure for detailed information on a device information set (used for SetupDiGetDeviceInfoListDetail which supersedes the functionality of SetupDiGetDeviceInfoListClass).\ntype DevInfoListDetailData struct {\n\tsize                uint32 // Use unsafeSizeOf method\n\tClassGUID           GUID\n\tRemoteMachineHandle Handle\n\tremoteMachineName   [SP_MAX_MACHINENAME_LENGTH]uint16\n}\n\nfunc (*DevInfoListDetailData) unsafeSizeOf() uint32 {\n\tif unsafe.Sizeof(uintptr(0)) == 4 {\n\t\t// Windows declares this with pshpack1.h\n\t\treturn uint32(unsafe.Offsetof(DevInfoListDetailData{}.remoteMachineName) + unsafe.Sizeof(DevInfoListDetailData{}.remoteMachineName))\n\t}\n\treturn uint32(unsafe.Sizeof(DevInfoListDetailData{}))\n}\n\nfunc (data *DevInfoListDetailData) RemoteMachineName() string {\n\treturn UTF16ToString(data.remoteMachineName[:])\n}\n\nfunc (data *DevInfoListDetailData) SetRemoteMachineName(remoteMachineName string) error {\n\tstr, err := UTF16FromString(remoteMachineName)\n\tif err != nil {\n\t\treturn err\n\t}\n\tcopy(data.remoteMachineName[:], str)\n\treturn nil\n}\n\n// DI_FUNCTION is function type for device installer\ntype DI_FUNCTION uint32\n\nconst (\n\tDIF_SELECTDEVICE                   DI_FUNCTION = 0x00000001\n\tDIF_INSTALLDEVICE                  DI_FUNCTION = 0x00000002\n\tDIF_ASSIGNRESOURCES                DI_FUNCTION = 0x00000003\n\tDIF_PROPERTIES                     DI_FUNCTION = 0x00000004\n\tDIF_REMOVE                         DI_FUNCTION = 0x00000005\n\tDIF_FIRSTTIMESETUP                 DI_FUNCTION = 0x00000006\n\tDIF_FOUNDDEVICE                    DI_FUNCTION = 0x00000007\n\tDIF_SELECTCLASSDRIVERS             DI_FUNCTION = 0x00000008\n\tDIF_VALIDATECLASSDRIVERS           DI_FUNCTION = 0x00000009\n\tDIF_INSTALLCLASSDRIVERS            DI_FUNCTION = 0x0000000A\n\tDIF_CALCDISKSPACE                  DI_FUNCTION = 0x0000000B\n\tDIF_DESTROYPRIVATEDATA             DI_FUNCTION = 0x0000000C\n\tDIF_VALIDATEDRIVER                 DI_FUNCTION = 0x0000000D\n\tDIF_DETECT                         DI_FUNCTION = 0x0000000F\n\tDIF_INSTALLWIZARD                  DI_FUNCTION = 0x00000010\n\tDIF_DESTROYWIZARDDATA              DI_FUNCTION = 0x00000011\n\tDIF_PROPERTYCHANGE                 DI_FUNCTION = 0x00000012\n\tDIF_ENABLECLASS                    DI_FUNCTION = 0x00000013\n\tDIF_DETECTVERIFY                   DI_FUNCTION = 0x00000014\n\tDIF_INSTALLDEVICEFILES             DI_FUNCTION = 0x00000015\n\tDIF_UNREMOVE                       DI_FUNCTION = 0x00000016\n\tDIF_SELECTBESTCOMPATDRV            DI_FUNCTION = 0x00000017\n\tDIF_ALLOW_INSTALL                  DI_FUNCTION = 0x00000018\n\tDIF_REGISTERDEVICE                 DI_FUNCTION = 0x00000019\n\tDIF_NEWDEVICEWIZARD_PRESELECT      DI_FUNCTION = 0x0000001A\n\tDIF_NEWDEVICEWIZARD_SELECT         DI_FUNCTION = 0x0000001B\n\tDIF_NEWDEVICEWIZARD_PREANALYZE     DI_FUNCTION = 0x0000001C\n\tDIF_NEWDEVICEWIZARD_POSTANALYZE    DI_FUNCTION = 0x0000001D\n\tDIF_NEWDEVICEWIZARD_FINISHINSTALL  DI_FUNCTION = 0x0000001E\n\tDIF_INSTALLINTERFACES              DI_FUNCTION = 0x00000020\n\tDIF_DETECTCANCEL                   DI_FUNCTION = 0x00000021\n\tDIF_REGISTER_COINSTALLERS          DI_FUNCTION = 0x00000022\n\tDIF_ADDPROPERTYPAGE_ADVANCED       DI_FUNCTION = 0x00000023\n\tDIF_ADDPROPERTYPAGE_BASIC          DI_FUNCTION = 0x00000024\n\tDIF_TROUBLESHOOTER                 DI_FUNCTION = 0x00000026\n\tDIF_POWERMESSAGEWAKE               DI_FUNCTION = 0x00000027\n\tDIF_ADDREMOTEPROPERTYPAGE_ADVANCED DI_FUNCTION = 0x00000028\n\tDIF_UPDATEDRIVER_UI                DI_FUNCTION = 0x00000029\n\tDIF_FINISHINSTALL_ACTION           DI_FUNCTION = 0x0000002A\n)\n\n// DevInstallParams is device installation parameters structure (associated with a particular device information element, or globally with a device information set)\ntype DevInstallParams struct {\n\tsize                     uint32\n\tFlags                    DI_FLAGS\n\tFlagsEx                  DI_FLAGSEX\n\thwndParent               uintptr\n\tInstallMsgHandler        uintptr\n\tInstallMsgHandlerContext uintptr\n\tFileQueue                HSPFILEQ\n\t_                        uintptr\n\t_                        uint32\n\tdriverPath               [MAX_PATH]uint16\n}\n\nfunc (params *DevInstallParams) DriverPath() string {\n\treturn UTF16ToString(params.driverPath[:])\n}\n\nfunc (params *DevInstallParams) SetDriverPath(driverPath string) error {\n\tstr, err := UTF16FromString(driverPath)\n\tif err != nil {\n\t\treturn err\n\t}\n\tcopy(params.driverPath[:], str)\n\treturn nil\n}\n\n// DI_FLAGS is SP_DEVINSTALL_PARAMS.Flags values\ntype DI_FLAGS uint32\n\nconst (\n\t// Flags for choosing a device\n\tDI_SHOWOEM       DI_FLAGS = 0x00000001 // support Other... button\n\tDI_SHOWCOMPAT    DI_FLAGS = 0x00000002 // show compatibility list\n\tDI_SHOWCLASS     DI_FLAGS = 0x00000004 // show class list\n\tDI_SHOWALL       DI_FLAGS = 0x00000007 // both class & compat list shown\n\tDI_NOVCP         DI_FLAGS = 0x00000008 // don't create a new copy queue--use caller-supplied FileQueue\n\tDI_DIDCOMPAT     DI_FLAGS = 0x00000010 // Searched for compatible devices\n\tDI_DIDCLASS      DI_FLAGS = 0x00000020 // Searched for class devices\n\tDI_AUTOASSIGNRES DI_FLAGS = 0x00000040 // No UI for resources if possible\n\n\t// Flags returned by DiInstallDevice to indicate need to reboot/restart\n\tDI_NEEDRESTART DI_FLAGS = 0x00000080 // Reboot required to take effect\n\tDI_NEEDREBOOT  DI_FLAGS = 0x00000100 // \"\"\n\n\t// Flags for device installation\n\tDI_NOBROWSE DI_FLAGS = 0x00000200 // no Browse... in InsertDisk\n\n\t// Flags set by DiBuildDriverInfoList\n\tDI_MULTMFGS DI_FLAGS = 0x00000400 // Set if multiple manufacturers in class driver list\n\n\t// Flag indicates that device is disabled\n\tDI_DISABLED DI_FLAGS = 0x00000800 // Set if device disabled\n\n\t// Flags for Device/Class Properties\n\tDI_GENERALPAGE_ADDED  DI_FLAGS = 0x00001000\n\tDI_RESOURCEPAGE_ADDED DI_FLAGS = 0x00002000\n\n\t// Flag to indicate the setting properties for this Device (or class) caused a change so the Dev Mgr UI probably needs to be updated.\n\tDI_PROPERTIES_CHANGE DI_FLAGS = 0x00004000\n\n\t// Flag to indicate that the sorting from the INF file should be used.\n\tDI_INF_IS_SORTED DI_FLAGS = 0x00008000\n\n\t// Flag to indicate that only the INF specified by SP_DEVINSTALL_PARAMS.DriverPath should be searched.\n\tDI_ENUMSINGLEINF DI_FLAGS = 0x00010000\n\n\t// Flag that prevents ConfigMgr from removing/re-enumerating devices during device\n\t// registration, installation, and deletion.\n\tDI_DONOTCALLCONFIGMG DI_FLAGS = 0x00020000\n\n\t// The following flag can be used to install a device disabled\n\tDI_INSTALLDISABLED DI_FLAGS = 0x00040000\n\n\t// Flag that causes SetupDiBuildDriverInfoList to build a device's compatible driver\n\t// list from its existing class driver list, instead of the normal INF search.\n\tDI_COMPAT_FROM_CLASS DI_FLAGS = 0x00080000\n\n\t// This flag is set if the Class Install params should be used.\n\tDI_CLASSINSTALLPARAMS DI_FLAGS = 0x00100000\n\n\t// This flag is set if the caller of DiCallClassInstaller does NOT want the internal default action performed if the Class installer returns ERROR_DI_DO_DEFAULT.\n\tDI_NODI_DEFAULTACTION DI_FLAGS = 0x00200000\n\n\t// Flags for device installation\n\tDI_QUIETINSTALL        DI_FLAGS = 0x00800000 // don't confuse the user with questions or excess info\n\tDI_NOFILECOPY          DI_FLAGS = 0x01000000 // No file Copy necessary\n\tDI_FORCECOPY           DI_FLAGS = 0x02000000 // Force files to be copied from install path\n\tDI_DRIVERPAGE_ADDED    DI_FLAGS = 0x04000000 // Prop provider added Driver page.\n\tDI_USECI_SELECTSTRINGS DI_FLAGS = 0x08000000 // Use Class Installer Provided strings in the Select Device Dlg\n\tDI_OVERRIDE_INFFLAGS   DI_FLAGS = 0x10000000 // Override INF flags\n\tDI_PROPS_NOCHANGEUSAGE DI_FLAGS = 0x20000000 // No Enable/Disable in General Props\n\n\tDI_NOSELECTICONS DI_FLAGS = 0x40000000 // No small icons in select device dialogs\n\n\tDI_NOWRITE_IDS DI_FLAGS = 0x80000000 // Don't write HW & Compat IDs on install\n)\n\n// DI_FLAGSEX is SP_DEVINSTALL_PARAMS.FlagsEx values\ntype DI_FLAGSEX uint32\n\nconst (\n\tDI_FLAGSEX_CI_FAILED                DI_FLAGSEX = 0x00000004 // Failed to Load/Call class installer\n\tDI_FLAGSEX_FINISHINSTALL_ACTION     DI_FLAGSEX = 0x00000008 // Class/co-installer wants to get a DIF_FINISH_INSTALL action in client context.\n\tDI_FLAGSEX_DIDINFOLIST              DI_FLAGSEX = 0x00000010 // Did the Class Info List\n\tDI_FLAGSEX_DIDCOMPATINFO            DI_FLAGSEX = 0x00000020 // Did the Compat Info List\n\tDI_FLAGSEX_FILTERCLASSES            DI_FLAGSEX = 0x00000040\n\tDI_FLAGSEX_SETFAILEDINSTALL         DI_FLAGSEX = 0x00000080\n\tDI_FLAGSEX_DEVICECHANGE             DI_FLAGSEX = 0x00000100\n\tDI_FLAGSEX_ALWAYSWRITEIDS           DI_FLAGSEX = 0x00000200\n\tDI_FLAGSEX_PROPCHANGE_PENDING       DI_FLAGSEX = 0x00000400 // One or more device property sheets have had changes made to them, and need to have a DIF_PROPERTYCHANGE occur.\n\tDI_FLAGSEX_ALLOWEXCLUDEDDRVS        DI_FLAGSEX = 0x00000800\n\tDI_FLAGSEX_NOUIONQUERYREMOVE        DI_FLAGSEX = 0x00001000\n\tDI_FLAGSEX_USECLASSFORCOMPAT        DI_FLAGSEX = 0x00002000 // Use the device's class when building compat drv list. (Ignored if DI_COMPAT_FROM_CLASS flag is specified.)\n\tDI_FLAGSEX_NO_DRVREG_MODIFY         DI_FLAGSEX = 0x00008000 // Don't run AddReg and DelReg for device's software (driver) key.\n\tDI_FLAGSEX_IN_SYSTEM_SETUP          DI_FLAGSEX = 0x00010000 // Installation is occurring during initial system setup.\n\tDI_FLAGSEX_INET_DRIVER              DI_FLAGSEX = 0x00020000 // Driver came from Windows Update\n\tDI_FLAGSEX_APPENDDRIVERLIST         DI_FLAGSEX = 0x00040000 // Cause SetupDiBuildDriverInfoList to append a new driver list to an existing list.\n\tDI_FLAGSEX_PREINSTALLBACKUP         DI_FLAGSEX = 0x00080000 // not used\n\tDI_FLAGSEX_BACKUPONREPLACE          DI_FLAGSEX = 0x00100000 // not used\n\tDI_FLAGSEX_DRIVERLIST_FROM_URL      DI_FLAGSEX = 0x00200000 // build driver list from INF(s) retrieved from URL specified in SP_DEVINSTALL_PARAMS.DriverPath (empty string means Windows Update website)\n\tDI_FLAGSEX_EXCLUDE_OLD_INET_DRIVERS DI_FLAGSEX = 0x00800000 // Don't include old Internet drivers when building a driver list. Ignored on Windows Vista and later.\n\tDI_FLAGSEX_POWERPAGE_ADDED          DI_FLAGSEX = 0x01000000 // class installer added their own power page\n\tDI_FLAGSEX_FILTERSIMILARDRIVERS     DI_FLAGSEX = 0x02000000 // only include similar drivers in class list\n\tDI_FLAGSEX_INSTALLEDDRIVER          DI_FLAGSEX = 0x04000000 // only add the installed driver to the class or compat driver list.  Used in calls to SetupDiBuildDriverInfoList\n\tDI_FLAGSEX_NO_CLASSLIST_NODE_MERGE  DI_FLAGSEX = 0x08000000 // Don't remove identical driver nodes from the class list\n\tDI_FLAGSEX_ALTPLATFORM_DRVSEARCH    DI_FLAGSEX = 0x10000000 // Build driver list based on alternate platform information specified in associated file queue\n\tDI_FLAGSEX_RESTART_DEVICE_ONLY      DI_FLAGSEX = 0x20000000 // only restart the device drivers are being installed on as opposed to restarting all devices using those drivers.\n\tDI_FLAGSEX_RECURSIVESEARCH          DI_FLAGSEX = 0x40000000 // Tell SetupDiBuildDriverInfoList to do a recursive search\n\tDI_FLAGSEX_SEARCH_PUBLISHED_INFS    DI_FLAGSEX = 0x80000000 // Tell SetupDiBuildDriverInfoList to do a \"published INF\" search\n)\n\n// ClassInstallHeader is the first member of any class install parameters structure. It contains the device installation request code that defines the format of the rest of the install parameters structure.\ntype ClassInstallHeader struct {\n\tsize            uint32\n\tInstallFunction DI_FUNCTION\n}\n\nfunc MakeClassInstallHeader(installFunction DI_FUNCTION) *ClassInstallHeader {\n\thdr := &ClassInstallHeader{InstallFunction: installFunction}\n\thdr.size = uint32(unsafe.Sizeof(*hdr))\n\treturn hdr\n}\n\n// DICS_STATE specifies values indicating a change in a device's state\ntype DICS_STATE uint32\n\nconst (\n\tDICS_ENABLE     DICS_STATE = 0x00000001 // The device is being enabled.\n\tDICS_DISABLE    DICS_STATE = 0x00000002 // The device is being disabled.\n\tDICS_PROPCHANGE DICS_STATE = 0x00000003 // The properties of the device have changed.\n\tDICS_START      DICS_STATE = 0x00000004 // The device is being started (if the request is for the currently active hardware profile).\n\tDICS_STOP       DICS_STATE = 0x00000005 // The device is being stopped. The driver stack will be unloaded and the CSCONFIGFLAG_DO_NOT_START flag will be set for the device.\n)\n\n// DICS_FLAG specifies the scope of a device property change\ntype DICS_FLAG uint32\n\nconst (\n\tDICS_FLAG_GLOBAL         DICS_FLAG = 0x00000001 // make change in all hardware profiles\n\tDICS_FLAG_CONFIGSPECIFIC DICS_FLAG = 0x00000002 // make change in specified profile only\n\tDICS_FLAG_CONFIGGENERAL  DICS_FLAG = 0x00000004 // 1 or more hardware profile-specific changes to follow (obsolete)\n)\n\n// PropChangeParams is a structure corresponding to a DIF_PROPERTYCHANGE install function.\ntype PropChangeParams struct {\n\tClassInstallHeader ClassInstallHeader\n\tStateChange        DICS_STATE\n\tScope              DICS_FLAG\n\tHwProfile          uint32\n}\n\n// DI_REMOVEDEVICE specifies the scope of the device removal\ntype DI_REMOVEDEVICE uint32\n\nconst (\n\tDI_REMOVEDEVICE_GLOBAL         DI_REMOVEDEVICE = 0x00000001 // Make this change in all hardware profiles. Remove information about the device from the registry.\n\tDI_REMOVEDEVICE_CONFIGSPECIFIC DI_REMOVEDEVICE = 0x00000002 // Make this change to only the hardware profile specified by HwProfile. this flag only applies to root-enumerated devices. When Windows removes the device from the last hardware profile in which it was configured, Windows performs a global removal.\n)\n\n// RemoveDeviceParams is a structure corresponding to a DIF_REMOVE install function.\ntype RemoveDeviceParams struct {\n\tClassInstallHeader ClassInstallHeader\n\tScope              DI_REMOVEDEVICE\n\tHwProfile          uint32\n}\n\n// DrvInfoData is driver information structure (member of a driver info list that may be associated with a particular device instance, or (globally) with a device information set)\ntype DrvInfoData struct {\n\tsize          uint32\n\tDriverType    uint32\n\t_             uintptr\n\tdescription   [LINE_LEN]uint16\n\tmfgName       [LINE_LEN]uint16\n\tproviderName  [LINE_LEN]uint16\n\tDriverDate    Filetime\n\tDriverVersion uint64\n}\n\nfunc (data *DrvInfoData) Description() string {\n\treturn UTF16ToString(data.description[:])\n}\n\nfunc (data *DrvInfoData) SetDescription(description string) error {\n\tstr, err := UTF16FromString(description)\n\tif err != nil {\n\t\treturn err\n\t}\n\tcopy(data.description[:], str)\n\treturn nil\n}\n\nfunc (data *DrvInfoData) MfgName() string {\n\treturn UTF16ToString(data.mfgName[:])\n}\n\nfunc (data *DrvInfoData) SetMfgName(mfgName string) error {\n\tstr, err := UTF16FromString(mfgName)\n\tif err != nil {\n\t\treturn err\n\t}\n\tcopy(data.mfgName[:], str)\n\treturn nil\n}\n\nfunc (data *DrvInfoData) ProviderName() string {\n\treturn UTF16ToString(data.providerName[:])\n}\n\nfunc (data *DrvInfoData) SetProviderName(providerName string) error {\n\tstr, err := UTF16FromString(providerName)\n\tif err != nil {\n\t\treturn err\n\t}\n\tcopy(data.providerName[:], str)\n\treturn nil\n}\n\n// IsNewer method returns true if DrvInfoData date and version is newer than supplied parameters.\nfunc (data *DrvInfoData) IsNewer(driverDate Filetime, driverVersion uint64) bool {\n\tif data.DriverDate.HighDateTime > driverDate.HighDateTime {\n\t\treturn true\n\t}\n\tif data.DriverDate.HighDateTime < driverDate.HighDateTime {\n\t\treturn false\n\t}\n\n\tif data.DriverDate.LowDateTime > driverDate.LowDateTime {\n\t\treturn true\n\t}\n\tif data.DriverDate.LowDateTime < driverDate.LowDateTime {\n\t\treturn false\n\t}\n\n\tif data.DriverVersion > driverVersion {\n\t\treturn true\n\t}\n\tif data.DriverVersion < driverVersion {\n\t\treturn false\n\t}\n\n\treturn false\n}\n\n// DrvInfoDetailData is driver information details structure (provides detailed information about a particular driver information structure)\ntype DrvInfoDetailData struct {\n\tsize            uint32 // Use unsafeSizeOf method\n\tInfDate         Filetime\n\tcompatIDsOffset uint32\n\tcompatIDsLength uint32\n\t_               uintptr\n\tsectionName     [LINE_LEN]uint16\n\tinfFileName     [MAX_PATH]uint16\n\tdrvDescription  [LINE_LEN]uint16\n\thardwareID      [1]uint16\n}\n\nfunc (*DrvInfoDetailData) unsafeSizeOf() uint32 {\n\tif unsafe.Sizeof(uintptr(0)) == 4 {\n\t\t// Windows declares this with pshpack1.h\n\t\treturn uint32(unsafe.Offsetof(DrvInfoDetailData{}.hardwareID) + unsafe.Sizeof(DrvInfoDetailData{}.hardwareID))\n\t}\n\treturn uint32(unsafe.Sizeof(DrvInfoDetailData{}))\n}\n\nfunc (data *DrvInfoDetailData) SectionName() string {\n\treturn UTF16ToString(data.sectionName[:])\n}\n\nfunc (data *DrvInfoDetailData) InfFileName() string {\n\treturn UTF16ToString(data.infFileName[:])\n}\n\nfunc (data *DrvInfoDetailData) DrvDescription() string {\n\treturn UTF16ToString(data.drvDescription[:])\n}\n\nfunc (data *DrvInfoDetailData) HardwareID() string {\n\tif data.compatIDsOffset > 1 {\n\t\tbufW := data.getBuf()\n\t\treturn UTF16ToString(bufW[:wcslen(bufW)])\n\t}\n\n\treturn \"\"\n}\n\nfunc (data *DrvInfoDetailData) CompatIDs() []string {\n\ta := make([]string, 0)\n\n\tif data.compatIDsLength > 0 {\n\t\tbufW := data.getBuf()\n\t\tbufW = bufW[data.compatIDsOffset : data.compatIDsOffset+data.compatIDsLength]\n\t\tfor i := 0; i < len(bufW); {\n\t\t\tj := i + wcslen(bufW[i:])\n\t\t\tif i < j {\n\t\t\t\ta = append(a, UTF16ToString(bufW[i:j]))\n\t\t\t}\n\t\t\ti = j + 1\n\t\t}\n\t}\n\n\treturn a\n}\n\nfunc (data *DrvInfoDetailData) getBuf() []uint16 {\n\tlen := (data.size - uint32(unsafe.Offsetof(data.hardwareID))) / 2\n\tsl := struct {\n\t\taddr *uint16\n\t\tlen  int\n\t\tcap  int\n\t}{&data.hardwareID[0], int(len), int(len)}\n\treturn *(*[]uint16)(unsafe.Pointer(&sl))\n}\n\n// IsCompatible method tests if given hardware ID matches the driver or is listed on the compatible ID list.\nfunc (data *DrvInfoDetailData) IsCompatible(hwid string) bool {\n\thwidLC := strings.ToLower(hwid)\n\tif strings.ToLower(data.HardwareID()) == hwidLC {\n\t\treturn true\n\t}\n\ta := data.CompatIDs()\n\tfor i := range a {\n\t\tif strings.ToLower(a[i]) == hwidLC {\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn false\n}\n\n// DICD flags control SetupDiCreateDeviceInfo\ntype DICD uint32\n\nconst (\n\tDICD_GENERATE_ID       DICD = 0x00000001\n\tDICD_INHERIT_CLASSDRVS DICD = 0x00000002\n)\n\n// SUOI flags control SetupUninstallOEMInf\ntype SUOI uint32\n\nconst (\n\tSUOI_FORCEDELETE SUOI = 0x0001\n)\n\n// SPDIT flags to distinguish between class drivers and\n// device drivers. (Passed in 'DriverType' parameter of\n// driver information list APIs)\ntype SPDIT uint32\n\nconst (\n\tSPDIT_NODRIVER     SPDIT = 0x00000000\n\tSPDIT_CLASSDRIVER  SPDIT = 0x00000001\n\tSPDIT_COMPATDRIVER SPDIT = 0x00000002\n)\n\n// DIGCF flags control what is included in the device information set built by SetupDiGetClassDevs\ntype DIGCF uint32\n\nconst (\n\tDIGCF_DEFAULT         DIGCF = 0x00000001 // only valid with DIGCF_DEVICEINTERFACE\n\tDIGCF_PRESENT         DIGCF = 0x00000002\n\tDIGCF_ALLCLASSES      DIGCF = 0x00000004\n\tDIGCF_PROFILE         DIGCF = 0x00000008\n\tDIGCF_DEVICEINTERFACE DIGCF = 0x00000010\n)\n\n// DIREG specifies values for SetupDiCreateDevRegKey, SetupDiOpenDevRegKey, and SetupDiDeleteDevRegKey.\ntype DIREG uint32\n\nconst (\n\tDIREG_DEV  DIREG = 0x00000001 // Open/Create/Delete device key\n\tDIREG_DRV  DIREG = 0x00000002 // Open/Create/Delete driver key\n\tDIREG_BOTH DIREG = 0x00000004 // Delete both driver and Device key\n)\n\n// SPDRP specifies device registry property codes\n// (Codes marked as read-only (R) may only be used for\n// SetupDiGetDeviceRegistryProperty)\n//\n// These values should cover the same set of registry properties\n// as defined by the CM_DRP codes in cfgmgr32.h.\n//\n// Note that SPDRP codes are zero based while CM_DRP codes are one based!\ntype SPDRP uint32\n\nconst (\n\tSPDRP_DEVICEDESC                  SPDRP = 0x00000000 // DeviceDesc (R/W)\n\tSPDRP_HARDWAREID                  SPDRP = 0x00000001 // HardwareID (R/W)\n\tSPDRP_COMPATIBLEIDS               SPDRP = 0x00000002 // CompatibleIDs (R/W)\n\tSPDRP_SERVICE                     SPDRP = 0x00000004 // Service (R/W)\n\tSPDRP_CLASS                       SPDRP = 0x00000007 // Class (R--tied to ClassGUID)\n\tSPDRP_CLASSGUID                   SPDRP = 0x00000008 // ClassGUID (R/W)\n\tSPDRP_DRIVER                      SPDRP = 0x00000009 // Driver (R/W)\n\tSPDRP_CONFIGFLAGS                 SPDRP = 0x0000000A // ConfigFlags (R/W)\n\tSPDRP_MFG                         SPDRP = 0x0000000B // Mfg (R/W)\n\tSPDRP_FRIENDLYNAME                SPDRP = 0x0000000C // FriendlyName (R/W)\n\tSPDRP_LOCATION_INFORMATION        SPDRP = 0x0000000D // LocationInformation (R/W)\n\tSPDRP_PHYSICAL_DEVICE_OBJECT_NAME SPDRP = 0x0000000E // PhysicalDeviceObjectName (R)\n\tSPDRP_CAPABILITIES                SPDRP = 0x0000000F // Capabilities (R)\n\tSPDRP_UI_NUMBER                   SPDRP = 0x00000010 // UiNumber (R)\n\tSPDRP_UPPERFILTERS                SPDRP = 0x00000011 // UpperFilters (R/W)\n\tSPDRP_LOWERFILTERS                SPDRP = 0x00000012 // LowerFilters (R/W)\n\tSPDRP_BUSTYPEGUID                 SPDRP = 0x00000013 // BusTypeGUID (R)\n\tSPDRP_LEGACYBUSTYPE               SPDRP = 0x00000014 // LegacyBusType (R)\n\tSPDRP_BUSNUMBER                   SPDRP = 0x00000015 // BusNumber (R)\n\tSPDRP_ENUMERATOR_NAME             SPDRP = 0x00000016 // Enumerator Name (R)\n\tSPDRP_SECURITY                    SPDRP = 0x00000017 // Security (R/W, binary form)\n\tSPDRP_SECURITY_SDS                SPDRP = 0x00000018 // Security (W, SDS form)\n\tSPDRP_DEVTYPE                     SPDRP = 0x00000019 // Device Type (R/W)\n\tSPDRP_EXCLUSIVE                   SPDRP = 0x0000001A // Device is exclusive-access (R/W)\n\tSPDRP_CHARACTERISTICS             SPDRP = 0x0000001B // Device Characteristics (R/W)\n\tSPDRP_ADDRESS                     SPDRP = 0x0000001C // Device Address (R)\n\tSPDRP_UI_NUMBER_DESC_FORMAT       SPDRP = 0x0000001D // UiNumberDescFormat (R/W)\n\tSPDRP_DEVICE_POWER_DATA           SPDRP = 0x0000001E // Device Power Data (R)\n\tSPDRP_REMOVAL_POLICY              SPDRP = 0x0000001F // Removal Policy (R)\n\tSPDRP_REMOVAL_POLICY_HW_DEFAULT   SPDRP = 0x00000020 // Hardware Removal Policy (R)\n\tSPDRP_REMOVAL_POLICY_OVERRIDE     SPDRP = 0x00000021 // Removal Policy Override (RW)\n\tSPDRP_INSTALL_STATE               SPDRP = 0x00000022 // Device Install State (R)\n\tSPDRP_LOCATION_PATHS              SPDRP = 0x00000023 // Device Location Paths (R)\n\tSPDRP_BASE_CONTAINERID            SPDRP = 0x00000024 // Base ContainerID (R)\n\n\tSPDRP_MAXIMUM_PROPERTY SPDRP = 0x00000025 // Upper bound on ordinals\n)\n\n// DEVPROPTYPE represents the property-data-type identifier that specifies the\n// data type of a device property value in the unified device property model.\ntype DEVPROPTYPE uint32\n\nconst (\n\tDEVPROP_TYPEMOD_ARRAY DEVPROPTYPE = 0x00001000\n\tDEVPROP_TYPEMOD_LIST  DEVPROPTYPE = 0x00002000\n\n\tDEVPROP_TYPE_EMPTY                      DEVPROPTYPE = 0x00000000\n\tDEVPROP_TYPE_NULL                       DEVPROPTYPE = 0x00000001\n\tDEVPROP_TYPE_SBYTE                      DEVPROPTYPE = 0x00000002\n\tDEVPROP_TYPE_BYTE                       DEVPROPTYPE = 0x00000003\n\tDEVPROP_TYPE_INT16                      DEVPROPTYPE = 0x00000004\n\tDEVPROP_TYPE_UINT16                     DEVPROPTYPE = 0x00000005\n\tDEVPROP_TYPE_INT32                      DEVPROPTYPE = 0x00000006\n\tDEVPROP_TYPE_UINT32                     DEVPROPTYPE = 0x00000007\n\tDEVPROP_TYPE_INT64                      DEVPROPTYPE = 0x00000008\n\tDEVPROP_TYPE_UINT64                     DEVPROPTYPE = 0x00000009\n\tDEVPROP_TYPE_FLOAT                      DEVPROPTYPE = 0x0000000A\n\tDEVPROP_TYPE_DOUBLE                     DEVPROPTYPE = 0x0000000B\n\tDEVPROP_TYPE_DECIMAL                    DEVPROPTYPE = 0x0000000C\n\tDEVPROP_TYPE_GUID                       DEVPROPTYPE = 0x0000000D\n\tDEVPROP_TYPE_CURRENCY                   DEVPROPTYPE = 0x0000000E\n\tDEVPROP_TYPE_DATE                       DEVPROPTYPE = 0x0000000F\n\tDEVPROP_TYPE_FILETIME                   DEVPROPTYPE = 0x00000010\n\tDEVPROP_TYPE_BOOLEAN                    DEVPROPTYPE = 0x00000011\n\tDEVPROP_TYPE_STRING                     DEVPROPTYPE = 0x00000012\n\tDEVPROP_TYPE_STRING_LIST                DEVPROPTYPE = DEVPROP_TYPE_STRING | DEVPROP_TYPEMOD_LIST\n\tDEVPROP_TYPE_SECURITY_DESCRIPTOR        DEVPROPTYPE = 0x00000013\n\tDEVPROP_TYPE_SECURITY_DESCRIPTOR_STRING DEVPROPTYPE = 0x00000014\n\tDEVPROP_TYPE_DEVPROPKEY                 DEVPROPTYPE = 0x00000015\n\tDEVPROP_TYPE_DEVPROPTYPE                DEVPROPTYPE = 0x00000016\n\tDEVPROP_TYPE_BINARY                     DEVPROPTYPE = DEVPROP_TYPE_BYTE | DEVPROP_TYPEMOD_ARRAY\n\tDEVPROP_TYPE_ERROR                      DEVPROPTYPE = 0x00000017\n\tDEVPROP_TYPE_NTSTATUS                   DEVPROPTYPE = 0x00000018\n\tDEVPROP_TYPE_STRING_INDIRECT            DEVPROPTYPE = 0x00000019\n\n\tMAX_DEVPROP_TYPE    DEVPROPTYPE = 0x00000019\n\tMAX_DEVPROP_TYPEMOD DEVPROPTYPE = 0x00002000\n\n\tDEVPROP_MASK_TYPE    DEVPROPTYPE = 0x00000FFF\n\tDEVPROP_MASK_TYPEMOD DEVPROPTYPE = 0x0000F000\n)\n\n// DEVPROPGUID specifies a property category.\ntype DEVPROPGUID GUID\n\n// DEVPROPID uniquely identifies the property within the property category.\ntype DEVPROPID uint32\n\nconst DEVPROPID_FIRST_USABLE DEVPROPID = 2\n\n// DEVPROPKEY represents a device property key for a device property in the\n// unified device property model.\ntype DEVPROPKEY struct {\n\tFmtID DEVPROPGUID\n\tPID   DEVPROPID\n}\n\n// CONFIGRET is a return value or error code from cfgmgr32 APIs\ntype CONFIGRET uint32\n\nfunc (ret CONFIGRET) Error() string {\n\tif win32Error, ok := ret.Unwrap().(Errno); ok {\n\t\treturn fmt.Sprintf(\"%s (CfgMgr error: 0x%08x)\", win32Error.Error(), uint32(ret))\n\t}\n\treturn fmt.Sprintf(\"CfgMgr error: 0x%08x\", uint32(ret))\n}\n\nfunc (ret CONFIGRET) Win32Error(defaultError Errno) Errno {\n\treturn cm_MapCrToWin32Err(ret, defaultError)\n}\n\nfunc (ret CONFIGRET) Unwrap() error {\n\tconst noMatch = Errno(^uintptr(0))\n\twin32Error := ret.Win32Error(noMatch)\n\tif win32Error == noMatch {\n\t\treturn nil\n\t}\n\treturn win32Error\n}\n\nconst (\n\tCR_SUCCESS                  CONFIGRET = 0x00000000\n\tCR_DEFAULT                  CONFIGRET = 0x00000001\n\tCR_OUT_OF_MEMORY            CONFIGRET = 0x00000002\n\tCR_INVALID_POINTER          CONFIGRET = 0x00000003\n\tCR_INVALID_FLAG             CONFIGRET = 0x00000004\n\tCR_INVALID_DEVNODE          CONFIGRET = 0x00000005\n\tCR_INVALID_DEVINST                    = CR_INVALID_DEVNODE\n\tCR_INVALID_RES_DES          CONFIGRET = 0x00000006\n\tCR_INVALID_LOG_CONF         CONFIGRET = 0x00000007\n\tCR_INVALID_ARBITRATOR       CONFIGRET = 0x00000008\n\tCR_INVALID_NODELIST         CONFIGRET = 0x00000009\n\tCR_DEVNODE_HAS_REQS         CONFIGRET = 0x0000000A\n\tCR_DEVINST_HAS_REQS                   = CR_DEVNODE_HAS_REQS\n\tCR_INVALID_RESOURCEID       CONFIGRET = 0x0000000B\n\tCR_DLVXD_NOT_FOUND          CONFIGRET = 0x0000000C\n\tCR_NO_SUCH_DEVNODE          CONFIGRET = 0x0000000D\n\tCR_NO_SUCH_DEVINST                    = CR_NO_SUCH_DEVNODE\n\tCR_NO_MORE_LOG_CONF         CONFIGRET = 0x0000000E\n\tCR_NO_MORE_RES_DES          CONFIGRET = 0x0000000F\n\tCR_ALREADY_SUCH_DEVNODE     CONFIGRET = 0x00000010\n\tCR_ALREADY_SUCH_DEVINST               = CR_ALREADY_SUCH_DEVNODE\n\tCR_INVALID_RANGE_LIST       CONFIGRET = 0x00000011\n\tCR_INVALID_RANGE            CONFIGRET = 0x00000012\n\tCR_FAILURE                  CONFIGRET = 0x00000013\n\tCR_NO_SUCH_LOGICAL_DEV      CONFIGRET = 0x00000014\n\tCR_CREATE_BLOCKED           CONFIGRET = 0x00000015\n\tCR_NOT_SYSTEM_VM            CONFIGRET = 0x00000016\n\tCR_REMOVE_VETOED            CONFIGRET = 0x00000017\n\tCR_APM_VETOED               CONFIGRET = 0x00000018\n\tCR_INVALID_LOAD_TYPE        CONFIGRET = 0x00000019\n\tCR_BUFFER_SMALL             CONFIGRET = 0x0000001A\n\tCR_NO_ARBITRATOR            CONFIGRET = 0x0000001B\n\tCR_NO_REGISTRY_HANDLE       CONFIGRET = 0x0000001C\n\tCR_REGISTRY_ERROR           CONFIGRET = 0x0000001D\n\tCR_INVALID_DEVICE_ID        CONFIGRET = 0x0000001E\n\tCR_INVALID_DATA             CONFIGRET = 0x0000001F\n\tCR_INVALID_API              CONFIGRET = 0x00000020\n\tCR_DEVLOADER_NOT_READY      CONFIGRET = 0x00000021\n\tCR_NEED_RESTART             CONFIGRET = 0x00000022\n\tCR_NO_MORE_HW_PROFILES      CONFIGRET = 0x00000023\n\tCR_DEVICE_NOT_THERE         CONFIGRET = 0x00000024\n\tCR_NO_SUCH_VALUE            CONFIGRET = 0x00000025\n\tCR_WRONG_TYPE               CONFIGRET = 0x00000026\n\tCR_INVALID_PRIORITY         CONFIGRET = 0x00000027\n\tCR_NOT_DISABLEABLE          CONFIGRET = 0x00000028\n\tCR_FREE_RESOURCES           CONFIGRET = 0x00000029\n\tCR_QUERY_VETOED             CONFIGRET = 0x0000002A\n\tCR_CANT_SHARE_IRQ           CONFIGRET = 0x0000002B\n\tCR_NO_DEPENDENT             CONFIGRET = 0x0000002C\n\tCR_SAME_RESOURCES           CONFIGRET = 0x0000002D\n\tCR_NO_SUCH_REGISTRY_KEY     CONFIGRET = 0x0000002E\n\tCR_INVALID_MACHINENAME      CONFIGRET = 0x0000002F\n\tCR_REMOTE_COMM_FAILURE      CONFIGRET = 0x00000030\n\tCR_MACHINE_UNAVAILABLE      CONFIGRET = 0x00000031\n\tCR_NO_CM_SERVICES           CONFIGRET = 0x00000032\n\tCR_ACCESS_DENIED            CONFIGRET = 0x00000033\n\tCR_CALL_NOT_IMPLEMENTED     CONFIGRET = 0x00000034\n\tCR_INVALID_PROPERTY         CONFIGRET = 0x00000035\n\tCR_DEVICE_INTERFACE_ACTIVE  CONFIGRET = 0x00000036\n\tCR_NO_SUCH_DEVICE_INTERFACE CONFIGRET = 0x00000037\n\tCR_INVALID_REFERENCE_STRING CONFIGRET = 0x00000038\n\tCR_INVALID_CONFLICT_LIST    CONFIGRET = 0x00000039\n\tCR_INVALID_INDEX            CONFIGRET = 0x0000003A\n\tCR_INVALID_STRUCTURE_SIZE   CONFIGRET = 0x0000003B\n\tNUM_CR_RESULTS              CONFIGRET = 0x0000003C\n)\n\nconst (\n\tCM_GET_DEVICE_INTERFACE_LIST_PRESENT     = 0 // only currently 'live' device interfaces\n\tCM_GET_DEVICE_INTERFACE_LIST_ALL_DEVICES = 1 // all registered device interfaces, live or not\n)\n\nconst (\n\tDN_ROOT_ENUMERATED       = 0x00000001        // Was enumerated by ROOT\n\tDN_DRIVER_LOADED         = 0x00000002        // Has Register_Device_Driver\n\tDN_ENUM_LOADED           = 0x00000004        // Has Register_Enumerator\n\tDN_STARTED               = 0x00000008        // Is currently configured\n\tDN_MANUAL                = 0x00000010        // Manually installed\n\tDN_NEED_TO_ENUM          = 0x00000020        // May need reenumeration\n\tDN_NOT_FIRST_TIME        = 0x00000040        // Has received a config\n\tDN_HARDWARE_ENUM         = 0x00000080        // Enum generates hardware ID\n\tDN_LIAR                  = 0x00000100        // Lied about can reconfig once\n\tDN_HAS_MARK              = 0x00000200        // Not CM_Create_DevInst lately\n\tDN_HAS_PROBLEM           = 0x00000400        // Need device installer\n\tDN_FILTERED              = 0x00000800        // Is filtered\n\tDN_MOVED                 = 0x00001000        // Has been moved\n\tDN_DISABLEABLE           = 0x00002000        // Can be disabled\n\tDN_REMOVABLE             = 0x00004000        // Can be removed\n\tDN_PRIVATE_PROBLEM       = 0x00008000        // Has a private problem\n\tDN_MF_PARENT             = 0x00010000        // Multi function parent\n\tDN_MF_CHILD              = 0x00020000        // Multi function child\n\tDN_WILL_BE_REMOVED       = 0x00040000        // DevInst is being removed\n\tDN_NOT_FIRST_TIMEE       = 0x00080000        // Has received a config enumerate\n\tDN_STOP_FREE_RES         = 0x00100000        // When child is stopped, free resources\n\tDN_REBAL_CANDIDATE       = 0x00200000        // Don't skip during rebalance\n\tDN_BAD_PARTIAL           = 0x00400000        // This devnode's log_confs do not have same resources\n\tDN_NT_ENUMERATOR         = 0x00800000        // This devnode's is an NT enumerator\n\tDN_NT_DRIVER             = 0x01000000        // This devnode's is an NT driver\n\tDN_NEEDS_LOCKING         = 0x02000000        // Devnode need lock resume processing\n\tDN_ARM_WAKEUP            = 0x04000000        // Devnode can be the wakeup device\n\tDN_APM_ENUMERATOR        = 0x08000000        // APM aware enumerator\n\tDN_APM_DRIVER            = 0x10000000        // APM aware driver\n\tDN_SILENT_INSTALL        = 0x20000000        // Silent install\n\tDN_NO_SHOW_IN_DM         = 0x40000000        // No show in device manager\n\tDN_BOOT_LOG_PROB         = 0x80000000        // Had a problem during preassignment of boot log conf\n\tDN_NEED_RESTART          = DN_LIAR           // System needs to be restarted for this Devnode to work properly\n\tDN_DRIVER_BLOCKED        = DN_NOT_FIRST_TIME // One or more drivers are blocked from loading for this Devnode\n\tDN_LEGACY_DRIVER         = DN_MOVED          // This device is using a legacy driver\n\tDN_CHILD_WITH_INVALID_ID = DN_HAS_MARK       // One or more children have invalid IDs\n\tDN_DEVICE_DISCONNECTED   = DN_NEEDS_LOCKING  // The function driver for a device reported that the device is not connected.  Typically this means a wireless device is out of range.\n\tDN_QUERY_REMOVE_PENDING  = DN_MF_PARENT      // Device is part of a set of related devices collectively pending query-removal\n\tDN_QUERY_REMOVE_ACTIVE   = DN_MF_CHILD       // Device is actively engaged in a query-remove IRP\n\tDN_CHANGEABLE_FLAGS      = DN_NOT_FIRST_TIME | DN_HARDWARE_ENUM | DN_HAS_MARK | DN_DISABLEABLE | DN_REMOVABLE | DN_MF_CHILD | DN_MF_PARENT | DN_NOT_FIRST_TIMEE | DN_STOP_FREE_RES | DN_REBAL_CANDIDATE | DN_NT_ENUMERATOR | DN_NT_DRIVER | DN_SILENT_INSTALL | DN_NO_SHOW_IN_DM\n)\n\n//sys\tsetupDiCreateDeviceInfoListEx(classGUID *GUID, hwndParent uintptr, machineName *uint16, reserved uintptr) (handle DevInfo, err error) [failretval==DevInfo(InvalidHandle)] = setupapi.SetupDiCreateDeviceInfoListExW\n\n// SetupDiCreateDeviceInfoListEx function creates an empty device information set on a remote or a local computer and optionally associates the set with a device setup class.\nfunc SetupDiCreateDeviceInfoListEx(classGUID *GUID, hwndParent uintptr, machineName string) (deviceInfoSet DevInfo, err error) {\n\tvar machineNameUTF16 *uint16\n\tif machineName != \"\" {\n\t\tmachineNameUTF16, err = UTF16PtrFromString(machineName)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\treturn setupDiCreateDeviceInfoListEx(classGUID, hwndParent, machineNameUTF16, 0)\n}\n\n//sys\tsetupDiGetDeviceInfoListDetail(deviceInfoSet DevInfo, deviceInfoSetDetailData *DevInfoListDetailData) (err error) = setupapi.SetupDiGetDeviceInfoListDetailW\n\n// SetupDiGetDeviceInfoListDetail function retrieves information associated with a device information set including the class GUID, remote computer handle, and remote computer name.\nfunc SetupDiGetDeviceInfoListDetail(deviceInfoSet DevInfo) (deviceInfoSetDetailData *DevInfoListDetailData, err error) {\n\tdata := &DevInfoListDetailData{}\n\tdata.size = data.unsafeSizeOf()\n\n\treturn data, setupDiGetDeviceInfoListDetail(deviceInfoSet, data)\n}\n\n// DeviceInfoListDetail method retrieves information associated with a device information set including the class GUID, remote computer handle, and remote computer name.\nfunc (deviceInfoSet DevInfo) DeviceInfoListDetail() (*DevInfoListDetailData, error) {\n\treturn SetupDiGetDeviceInfoListDetail(deviceInfoSet)\n}\n\n//sys\tsetupDiCreateDeviceInfo(deviceInfoSet DevInfo, DeviceName *uint16, classGUID *GUID, DeviceDescription *uint16, hwndParent uintptr, CreationFlags DICD, deviceInfoData *DevInfoData) (err error) = setupapi.SetupDiCreateDeviceInfoW\n\n// SetupDiCreateDeviceInfo function creates a new device information element and adds it as a new member to the specified device information set.\nfunc SetupDiCreateDeviceInfo(deviceInfoSet DevInfo, deviceName string, classGUID *GUID, deviceDescription string, hwndParent uintptr, creationFlags DICD) (deviceInfoData *DevInfoData, err error) {\n\tdeviceNameUTF16, err := UTF16PtrFromString(deviceName)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tvar deviceDescriptionUTF16 *uint16\n\tif deviceDescription != \"\" {\n\t\tdeviceDescriptionUTF16, err = UTF16PtrFromString(deviceDescription)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\n\tdata := &DevInfoData{}\n\tdata.size = uint32(unsafe.Sizeof(*data))\n\n\treturn data, setupDiCreateDeviceInfo(deviceInfoSet, deviceNameUTF16, classGUID, deviceDescriptionUTF16, hwndParent, creationFlags, data)\n}\n\n// CreateDeviceInfo method creates a new device information element and adds it as a new member to the specified device information set.\nfunc (deviceInfoSet DevInfo) CreateDeviceInfo(deviceName string, classGUID *GUID, deviceDescription string, hwndParent uintptr, creationFlags DICD) (*DevInfoData, error) {\n\treturn SetupDiCreateDeviceInfo(deviceInfoSet, deviceName, classGUID, deviceDescription, hwndParent, creationFlags)\n}\n\n//sys\tsetupDiEnumDeviceInfo(deviceInfoSet DevInfo, memberIndex uint32, deviceInfoData *DevInfoData) (err error) = setupapi.SetupDiEnumDeviceInfo\n\n// SetupDiEnumDeviceInfo function returns a DevInfoData structure that specifies a device information element in a device information set.\nfunc SetupDiEnumDeviceInfo(deviceInfoSet DevInfo, memberIndex int) (*DevInfoData, error) {\n\tdata := &DevInfoData{}\n\tdata.size = uint32(unsafe.Sizeof(*data))\n\n\treturn data, setupDiEnumDeviceInfo(deviceInfoSet, uint32(memberIndex), data)\n}\n\n// EnumDeviceInfo method returns a DevInfoData structure that specifies a device information element in a device information set.\nfunc (deviceInfoSet DevInfo) EnumDeviceInfo(memberIndex int) (*DevInfoData, error) {\n\treturn SetupDiEnumDeviceInfo(deviceInfoSet, memberIndex)\n}\n\n// SetupDiDestroyDeviceInfoList function deletes a device information set and frees all associated memory.\n//sys\tSetupDiDestroyDeviceInfoList(deviceInfoSet DevInfo) (err error) = setupapi.SetupDiDestroyDeviceInfoList\n\n// Close method deletes a device information set and frees all associated memory.\nfunc (deviceInfoSet DevInfo) Close() error {\n\treturn SetupDiDestroyDeviceInfoList(deviceInfoSet)\n}\n\n//sys\tSetupDiBuildDriverInfoList(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverType SPDIT) (err error) = setupapi.SetupDiBuildDriverInfoList\n\n// BuildDriverInfoList method builds a list of drivers that is associated with a specific device or with the global class driver list for a device information set.\nfunc (deviceInfoSet DevInfo) BuildDriverInfoList(deviceInfoData *DevInfoData, driverType SPDIT) error {\n\treturn SetupDiBuildDriverInfoList(deviceInfoSet, deviceInfoData, driverType)\n}\n\n//sys\tSetupDiCancelDriverInfoSearch(deviceInfoSet DevInfo) (err error) = setupapi.SetupDiCancelDriverInfoSearch\n\n// CancelDriverInfoSearch method cancels a driver list search that is currently in progress in a different thread.\nfunc (deviceInfoSet DevInfo) CancelDriverInfoSearch() error {\n\treturn SetupDiCancelDriverInfoSearch(deviceInfoSet)\n}\n\n//sys\tsetupDiEnumDriverInfo(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverType SPDIT, memberIndex uint32, driverInfoData *DrvInfoData) (err error) = setupapi.SetupDiEnumDriverInfoW\n\n// SetupDiEnumDriverInfo function enumerates the members of a driver list.\nfunc SetupDiEnumDriverInfo(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverType SPDIT, memberIndex int) (*DrvInfoData, error) {\n\tdata := &DrvInfoData{}\n\tdata.size = uint32(unsafe.Sizeof(*data))\n\n\treturn data, setupDiEnumDriverInfo(deviceInfoSet, deviceInfoData, driverType, uint32(memberIndex), data)\n}\n\n// EnumDriverInfo method enumerates the members of a driver list.\nfunc (deviceInfoSet DevInfo) EnumDriverInfo(deviceInfoData *DevInfoData, driverType SPDIT, memberIndex int) (*DrvInfoData, error) {\n\treturn SetupDiEnumDriverInfo(deviceInfoSet, deviceInfoData, driverType, memberIndex)\n}\n\n//sys\tsetupDiGetSelectedDriver(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverInfoData *DrvInfoData) (err error) = setupapi.SetupDiGetSelectedDriverW\n\n// SetupDiGetSelectedDriver function retrieves the selected driver for a device information set or a particular device information element.\nfunc SetupDiGetSelectedDriver(deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (*DrvInfoData, error) {\n\tdata := &DrvInfoData{}\n\tdata.size = uint32(unsafe.Sizeof(*data))\n\n\treturn data, setupDiGetSelectedDriver(deviceInfoSet, deviceInfoData, data)\n}\n\n// SelectedDriver method retrieves the selected driver for a device information set or a particular device information element.\nfunc (deviceInfoSet DevInfo) SelectedDriver(deviceInfoData *DevInfoData) (*DrvInfoData, error) {\n\treturn SetupDiGetSelectedDriver(deviceInfoSet, deviceInfoData)\n}\n\n//sys\tSetupDiSetSelectedDriver(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverInfoData *DrvInfoData) (err error) = setupapi.SetupDiSetSelectedDriverW\n\n// SetSelectedDriver method sets, or resets, the selected driver for a device information element or the selected class driver for a device information set.\nfunc (deviceInfoSet DevInfo) SetSelectedDriver(deviceInfoData *DevInfoData, driverInfoData *DrvInfoData) error {\n\treturn SetupDiSetSelectedDriver(deviceInfoSet, deviceInfoData, driverInfoData)\n}\n\n//sys\tsetupDiGetDriverInfoDetail(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverInfoData *DrvInfoData, driverInfoDetailData *DrvInfoDetailData, driverInfoDetailDataSize uint32, requiredSize *uint32) (err error) = setupapi.SetupDiGetDriverInfoDetailW\n\n// SetupDiGetDriverInfoDetail function retrieves driver information detail for a device information set or a particular device information element in the device information set.\nfunc SetupDiGetDriverInfoDetail(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverInfoData *DrvInfoData) (*DrvInfoDetailData, error) {\n\treqSize := uint32(2048)\n\tfor {\n\t\tbuf := make([]byte, reqSize)\n\t\tdata := (*DrvInfoDetailData)(unsafe.Pointer(&buf[0]))\n\t\tdata.size = data.unsafeSizeOf()\n\t\terr := setupDiGetDriverInfoDetail(deviceInfoSet, deviceInfoData, driverInfoData, data, uint32(len(buf)), &reqSize)\n\t\tif err == ERROR_INSUFFICIENT_BUFFER {\n\t\t\tcontinue\n\t\t}\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tdata.size = reqSize\n\t\treturn data, nil\n\t}\n}\n\n// DriverInfoDetail method retrieves driver information detail for a device information set or a particular device information element in the device information set.\nfunc (deviceInfoSet DevInfo) DriverInfoDetail(deviceInfoData *DevInfoData, driverInfoData *DrvInfoData) (*DrvInfoDetailData, error) {\n\treturn SetupDiGetDriverInfoDetail(deviceInfoSet, deviceInfoData, driverInfoData)\n}\n\n//sys\tSetupDiDestroyDriverInfoList(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverType SPDIT) (err error) = setupapi.SetupDiDestroyDriverInfoList\n\n// DestroyDriverInfoList method deletes a driver list.\nfunc (deviceInfoSet DevInfo) DestroyDriverInfoList(deviceInfoData *DevInfoData, driverType SPDIT) error {\n\treturn SetupDiDestroyDriverInfoList(deviceInfoSet, deviceInfoData, driverType)\n}\n\n//sys\tsetupDiGetClassDevsEx(classGUID *GUID, Enumerator *uint16, hwndParent uintptr, Flags DIGCF, deviceInfoSet DevInfo, machineName *uint16, reserved uintptr) (handle DevInfo, err error) [failretval==DevInfo(InvalidHandle)] = setupapi.SetupDiGetClassDevsExW\n\n// SetupDiGetClassDevsEx function returns a handle to a device information set that contains requested device information elements for a local or a remote computer.\nfunc SetupDiGetClassDevsEx(classGUID *GUID, enumerator string, hwndParent uintptr, flags DIGCF, deviceInfoSet DevInfo, machineName string) (handle DevInfo, err error) {\n\tvar enumeratorUTF16 *uint16\n\tif enumerator != \"\" {\n\t\tenumeratorUTF16, err = UTF16PtrFromString(enumerator)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\tvar machineNameUTF16 *uint16\n\tif machineName != \"\" {\n\t\tmachineNameUTF16, err = UTF16PtrFromString(machineName)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\treturn setupDiGetClassDevsEx(classGUID, enumeratorUTF16, hwndParent, flags, deviceInfoSet, machineNameUTF16, 0)\n}\n\n// SetupDiCallClassInstaller function calls the appropriate class installer, and any registered co-installers, with the specified installation request (DIF code).\n//sys\tSetupDiCallClassInstaller(installFunction DI_FUNCTION, deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (err error) = setupapi.SetupDiCallClassInstaller\n\n// CallClassInstaller member calls the appropriate class installer, and any registered co-installers, with the specified installation request (DIF code).\nfunc (deviceInfoSet DevInfo) CallClassInstaller(installFunction DI_FUNCTION, deviceInfoData *DevInfoData) error {\n\treturn SetupDiCallClassInstaller(installFunction, deviceInfoSet, deviceInfoData)\n}\n\n// SetupDiOpenDevRegKey function opens a registry key for device-specific configuration information.\n//sys\tSetupDiOpenDevRegKey(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, Scope DICS_FLAG, HwProfile uint32, KeyType DIREG, samDesired uint32) (key Handle, err error) [failretval==InvalidHandle] = setupapi.SetupDiOpenDevRegKey\n\n// OpenDevRegKey method opens a registry key for device-specific configuration information.\nfunc (deviceInfoSet DevInfo) OpenDevRegKey(DeviceInfoData *DevInfoData, Scope DICS_FLAG, HwProfile uint32, KeyType DIREG, samDesired uint32) (Handle, error) {\n\treturn SetupDiOpenDevRegKey(deviceInfoSet, DeviceInfoData, Scope, HwProfile, KeyType, samDesired)\n}\n\n//sys\tsetupDiGetDeviceProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, propertyKey *DEVPROPKEY, propertyType *DEVPROPTYPE, propertyBuffer *byte, propertyBufferSize uint32, requiredSize *uint32, flags uint32) (err error) = setupapi.SetupDiGetDevicePropertyW\n\n// SetupDiGetDeviceProperty function retrieves a specified device instance property.\nfunc SetupDiGetDeviceProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, propertyKey *DEVPROPKEY) (value interface{}, err error) {\n\treqSize := uint32(256)\n\tfor {\n\t\tvar dataType DEVPROPTYPE\n\t\tbuf := make([]byte, reqSize)\n\t\terr = setupDiGetDeviceProperty(deviceInfoSet, deviceInfoData, propertyKey, &dataType, &buf[0], uint32(len(buf)), &reqSize, 0)\n\t\tif err == ERROR_INSUFFICIENT_BUFFER {\n\t\t\tcontinue\n\t\t}\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t\tswitch dataType {\n\t\tcase DEVPROP_TYPE_STRING:\n\t\t\tret := UTF16ToString(bufToUTF16(buf))\n\t\t\truntime.KeepAlive(buf)\n\t\t\treturn ret, nil\n\t\t}\n\t\treturn nil, errors.New(\"unimplemented property type\")\n\t}\n}\n\n//sys\tsetupDiGetDeviceRegistryProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, property SPDRP, propertyRegDataType *uint32, propertyBuffer *byte, propertyBufferSize uint32, requiredSize *uint32) (err error) = setupapi.SetupDiGetDeviceRegistryPropertyW\n\n// SetupDiGetDeviceRegistryProperty function retrieves a specified Plug and Play device property.\nfunc SetupDiGetDeviceRegistryProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, property SPDRP) (value interface{}, err error) {\n\treqSize := uint32(256)\n\tfor {\n\t\tvar dataType uint32\n\t\tbuf := make([]byte, reqSize)\n\t\terr = setupDiGetDeviceRegistryProperty(deviceInfoSet, deviceInfoData, property, &dataType, &buf[0], uint32(len(buf)), &reqSize)\n\t\tif err == ERROR_INSUFFICIENT_BUFFER {\n\t\t\tcontinue\n\t\t}\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t\treturn getRegistryValue(buf[:reqSize], dataType)\n\t}\n}\n\nfunc getRegistryValue(buf []byte, dataType uint32) (interface{}, error) {\n\tswitch dataType {\n\tcase REG_SZ:\n\t\tret := UTF16ToString(bufToUTF16(buf))\n\t\truntime.KeepAlive(buf)\n\t\treturn ret, nil\n\tcase REG_EXPAND_SZ:\n\t\tvalue := UTF16ToString(bufToUTF16(buf))\n\t\tif value == \"\" {\n\t\t\treturn \"\", nil\n\t\t}\n\t\tp, err := syscall.UTF16PtrFromString(value)\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t\tret := make([]uint16, 100)\n\t\tfor {\n\t\t\tn, err := ExpandEnvironmentStrings(p, &ret[0], uint32(len(ret)))\n\t\t\tif err != nil {\n\t\t\t\treturn \"\", err\n\t\t\t}\n\t\t\tif n <= uint32(len(ret)) {\n\t\t\t\treturn UTF16ToString(ret[:n]), nil\n\t\t\t}\n\t\t\tret = make([]uint16, n)\n\t\t}\n\tcase REG_BINARY:\n\t\treturn buf, nil\n\tcase REG_DWORD_LITTLE_ENDIAN:\n\t\treturn binary.LittleEndian.Uint32(buf), nil\n\tcase REG_DWORD_BIG_ENDIAN:\n\t\treturn binary.BigEndian.Uint32(buf), nil\n\tcase REG_MULTI_SZ:\n\t\tbufW := bufToUTF16(buf)\n\t\ta := []string{}\n\t\tfor i := 0; i < len(bufW); {\n\t\t\tj := i + wcslen(bufW[i:])\n\t\t\tif i < j {\n\t\t\t\ta = append(a, UTF16ToString(bufW[i:j]))\n\t\t\t}\n\t\t\ti = j + 1\n\t\t}\n\t\truntime.KeepAlive(buf)\n\t\treturn a, nil\n\tcase REG_QWORD_LITTLE_ENDIAN:\n\t\treturn binary.LittleEndian.Uint64(buf), nil\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"Unsupported registry value type: %v\", dataType)\n\t}\n}\n\n// bufToUTF16 function reinterprets []byte buffer as []uint16\nfunc bufToUTF16(buf []byte) []uint16 {\n\tsl := struct {\n\t\taddr *uint16\n\t\tlen  int\n\t\tcap  int\n\t}{(*uint16)(unsafe.Pointer(&buf[0])), len(buf) / 2, cap(buf) / 2}\n\treturn *(*[]uint16)(unsafe.Pointer(&sl))\n}\n\n// utf16ToBuf function reinterprets []uint16 as []byte\nfunc utf16ToBuf(buf []uint16) []byte {\n\tsl := struct {\n\t\taddr *byte\n\t\tlen  int\n\t\tcap  int\n\t}{(*byte)(unsafe.Pointer(&buf[0])), len(buf) * 2, cap(buf) * 2}\n\treturn *(*[]byte)(unsafe.Pointer(&sl))\n}\n\nfunc wcslen(str []uint16) int {\n\tfor i := 0; i < len(str); i++ {\n\t\tif str[i] == 0 {\n\t\t\treturn i\n\t\t}\n\t}\n\treturn len(str)\n}\n\n// DeviceRegistryProperty method retrieves a specified Plug and Play device property.\nfunc (deviceInfoSet DevInfo) DeviceRegistryProperty(deviceInfoData *DevInfoData, property SPDRP) (interface{}, error) {\n\treturn SetupDiGetDeviceRegistryProperty(deviceInfoSet, deviceInfoData, property)\n}\n\n//sys\tsetupDiSetDeviceRegistryProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, property SPDRP, propertyBuffer *byte, propertyBufferSize uint32) (err error) = setupapi.SetupDiSetDeviceRegistryPropertyW\n\n// SetupDiSetDeviceRegistryProperty function sets a Plug and Play device property for a device.\nfunc SetupDiSetDeviceRegistryProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, property SPDRP, propertyBuffers []byte) error {\n\treturn setupDiSetDeviceRegistryProperty(deviceInfoSet, deviceInfoData, property, &propertyBuffers[0], uint32(len(propertyBuffers)))\n}\n\n// SetDeviceRegistryProperty function sets a Plug and Play device property for a device.\nfunc (deviceInfoSet DevInfo) SetDeviceRegistryProperty(deviceInfoData *DevInfoData, property SPDRP, propertyBuffers []byte) error {\n\treturn SetupDiSetDeviceRegistryProperty(deviceInfoSet, deviceInfoData, property, propertyBuffers)\n}\n\n// SetDeviceRegistryPropertyString method sets a Plug and Play device property string for a device.\nfunc (deviceInfoSet DevInfo) SetDeviceRegistryPropertyString(deviceInfoData *DevInfoData, property SPDRP, str string) error {\n\tstr16, err := UTF16FromString(str)\n\tif err != nil {\n\t\treturn err\n\t}\n\terr = SetupDiSetDeviceRegistryProperty(deviceInfoSet, deviceInfoData, property, utf16ToBuf(append(str16, 0)))\n\truntime.KeepAlive(str16)\n\treturn err\n}\n\n//sys\tsetupDiGetDeviceInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, deviceInstallParams *DevInstallParams) (err error) = setupapi.SetupDiGetDeviceInstallParamsW\n\n// SetupDiGetDeviceInstallParams function retrieves device installation parameters for a device information set or a particular device information element.\nfunc SetupDiGetDeviceInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (*DevInstallParams, error) {\n\tparams := &DevInstallParams{}\n\tparams.size = uint32(unsafe.Sizeof(*params))\n\n\treturn params, setupDiGetDeviceInstallParams(deviceInfoSet, deviceInfoData, params)\n}\n\n// DeviceInstallParams method retrieves device installation parameters for a device information set or a particular device information element.\nfunc (deviceInfoSet DevInfo) DeviceInstallParams(deviceInfoData *DevInfoData) (*DevInstallParams, error) {\n\treturn SetupDiGetDeviceInstallParams(deviceInfoSet, deviceInfoData)\n}\n\n//sys\tsetupDiGetDeviceInstanceId(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, instanceId *uint16, instanceIdSize uint32, instanceIdRequiredSize *uint32) (err error) = setupapi.SetupDiGetDeviceInstanceIdW\n\n// SetupDiGetDeviceInstanceId function retrieves the instance ID of the device.\nfunc SetupDiGetDeviceInstanceId(deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (string, error) {\n\treqSize := uint32(1024)\n\tfor {\n\t\tbuf := make([]uint16, reqSize)\n\t\terr := setupDiGetDeviceInstanceId(deviceInfoSet, deviceInfoData, &buf[0], uint32(len(buf)), &reqSize)\n\t\tif err == ERROR_INSUFFICIENT_BUFFER {\n\t\t\tcontinue\n\t\t}\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t\treturn UTF16ToString(buf), nil\n\t}\n}\n\n// DeviceInstanceID method retrieves the instance ID of the device.\nfunc (deviceInfoSet DevInfo) DeviceInstanceID(deviceInfoData *DevInfoData) (string, error) {\n\treturn SetupDiGetDeviceInstanceId(deviceInfoSet, deviceInfoData)\n}\n\n// SetupDiGetClassInstallParams function retrieves class installation parameters for a device information set or a particular device information element.\n//sys\tSetupDiGetClassInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, classInstallParams *ClassInstallHeader, classInstallParamsSize uint32, requiredSize *uint32) (err error) = setupapi.SetupDiGetClassInstallParamsW\n\n// ClassInstallParams method retrieves class installation parameters for a device information set or a particular device information element.\nfunc (deviceInfoSet DevInfo) ClassInstallParams(deviceInfoData *DevInfoData, classInstallParams *ClassInstallHeader, classInstallParamsSize uint32, requiredSize *uint32) error {\n\treturn SetupDiGetClassInstallParams(deviceInfoSet, deviceInfoData, classInstallParams, classInstallParamsSize, requiredSize)\n}\n\n//sys\tSetupDiSetDeviceInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, deviceInstallParams *DevInstallParams) (err error) = setupapi.SetupDiSetDeviceInstallParamsW\n\n// SetDeviceInstallParams member sets device installation parameters for a device information set or a particular device information element.\nfunc (deviceInfoSet DevInfo) SetDeviceInstallParams(deviceInfoData *DevInfoData, deviceInstallParams *DevInstallParams) error {\n\treturn SetupDiSetDeviceInstallParams(deviceInfoSet, deviceInfoData, deviceInstallParams)\n}\n\n// SetupDiSetClassInstallParams function sets or clears class install parameters for a device information set or a particular device information element.\n//sys\tSetupDiSetClassInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, classInstallParams *ClassInstallHeader, classInstallParamsSize uint32) (err error) = setupapi.SetupDiSetClassInstallParamsW\n\n// SetClassInstallParams method sets or clears class install parameters for a device information set or a particular device information element.\nfunc (deviceInfoSet DevInfo) SetClassInstallParams(deviceInfoData *DevInfoData, classInstallParams *ClassInstallHeader, classInstallParamsSize uint32) error {\n\treturn SetupDiSetClassInstallParams(deviceInfoSet, deviceInfoData, classInstallParams, classInstallParamsSize)\n}\n\n//sys\tsetupDiClassNameFromGuidEx(classGUID *GUID, className *uint16, classNameSize uint32, requiredSize *uint32, machineName *uint16, reserved uintptr) (err error) = setupapi.SetupDiClassNameFromGuidExW\n\n// SetupDiClassNameFromGuidEx function retrieves the class name associated with a class GUID. The class can be installed on a local or remote computer.\nfunc SetupDiClassNameFromGuidEx(classGUID *GUID, machineName string) (className string, err error) {\n\tvar classNameUTF16 [MAX_CLASS_NAME_LEN]uint16\n\n\tvar machineNameUTF16 *uint16\n\tif machineName != \"\" {\n\t\tmachineNameUTF16, err = UTF16PtrFromString(machineName)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\n\terr = setupDiClassNameFromGuidEx(classGUID, &classNameUTF16[0], MAX_CLASS_NAME_LEN, nil, machineNameUTF16, 0)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tclassName = UTF16ToString(classNameUTF16[:])\n\treturn\n}\n\n//sys\tsetupDiClassGuidsFromNameEx(className *uint16, classGuidList *GUID, classGuidListSize uint32, requiredSize *uint32, machineName *uint16, reserved uintptr) (err error) = setupapi.SetupDiClassGuidsFromNameExW\n\n// SetupDiClassGuidsFromNameEx function retrieves the GUIDs associated with the specified class name. This resulting list contains the classes currently installed on a local or remote computer.\nfunc SetupDiClassGuidsFromNameEx(className string, machineName string) ([]GUID, error) {\n\tclassNameUTF16, err := UTF16PtrFromString(className)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar machineNameUTF16 *uint16\n\tif machineName != \"\" {\n\t\tmachineNameUTF16, err = UTF16PtrFromString(machineName)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\treqSize := uint32(4)\n\tfor {\n\t\tbuf := make([]GUID, reqSize)\n\t\terr = setupDiClassGuidsFromNameEx(classNameUTF16, &buf[0], uint32(len(buf)), &reqSize, machineNameUTF16, 0)\n\t\tif err == ERROR_INSUFFICIENT_BUFFER {\n\t\t\tcontinue\n\t\t}\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn buf[:reqSize], nil\n\t}\n}\n\n//sys\tsetupDiGetSelectedDevice(deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (err error) = setupapi.SetupDiGetSelectedDevice\n\n// SetupDiGetSelectedDevice function retrieves the selected device information element in a device information set.\nfunc SetupDiGetSelectedDevice(deviceInfoSet DevInfo) (*DevInfoData, error) {\n\tdata := &DevInfoData{}\n\tdata.size = uint32(unsafe.Sizeof(*data))\n\n\treturn data, setupDiGetSelectedDevice(deviceInfoSet, data)\n}\n\n// SelectedDevice method retrieves the selected device information element in a device information set.\nfunc (deviceInfoSet DevInfo) SelectedDevice() (*DevInfoData, error) {\n\treturn SetupDiGetSelectedDevice(deviceInfoSet)\n}\n\n// SetupDiSetSelectedDevice function sets a device information element as the selected member of a device information set. This function is typically used by an installation wizard.\n//sys\tSetupDiSetSelectedDevice(deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (err error) = setupapi.SetupDiSetSelectedDevice\n\n// SetSelectedDevice method sets a device information element as the selected member of a device information set. This function is typically used by an installation wizard.\nfunc (deviceInfoSet DevInfo) SetSelectedDevice(deviceInfoData *DevInfoData) error {\n\treturn SetupDiSetSelectedDevice(deviceInfoSet, deviceInfoData)\n}\n\n//sys\tsetupUninstallOEMInf(infFileName *uint16, flags SUOI, reserved uintptr) (err error) = setupapi.SetupUninstallOEMInfW\n\n// SetupUninstallOEMInf uninstalls the specified driver.\nfunc SetupUninstallOEMInf(infFileName string, flags SUOI) error {\n\tinfFileName16, err := UTF16PtrFromString(infFileName)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn setupUninstallOEMInf(infFileName16, flags, 0)\n}\n\n//sys cm_MapCrToWin32Err(configRet CONFIGRET, defaultWin32Error Errno) (ret Errno) = CfgMgr32.CM_MapCrToWin32Err\n\n//sys cm_Get_Device_Interface_List_Size(len *uint32, interfaceClass *GUID, deviceID *uint16, flags uint32) (ret CONFIGRET) = CfgMgr32.CM_Get_Device_Interface_List_SizeW\n//sys cm_Get_Device_Interface_List(interfaceClass *GUID, deviceID *uint16, buffer *uint16, bufferLen uint32, flags uint32) (ret CONFIGRET) = CfgMgr32.CM_Get_Device_Interface_ListW\n\nfunc CM_Get_Device_Interface_List(deviceID string, interfaceClass *GUID, flags uint32) ([]string, error) {\n\tdeviceID16, err := UTF16PtrFromString(deviceID)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tvar buf []uint16\n\tvar buflen uint32\n\tfor {\n\t\tif ret := cm_Get_Device_Interface_List_Size(&buflen, interfaceClass, deviceID16, flags); ret != CR_SUCCESS {\n\t\t\treturn nil, ret\n\t\t}\n\t\tbuf = make([]uint16, buflen)\n\t\tif ret := cm_Get_Device_Interface_List(interfaceClass, deviceID16, &buf[0], buflen, flags); ret == CR_SUCCESS {\n\t\t\tbreak\n\t\t} else if ret != CR_BUFFER_SMALL {\n\t\t\treturn nil, ret\n\t\t}\n\t}\n\tvar interfaces []string\n\tfor i := 0; i < len(buf); {\n\t\tj := i + wcslen(buf[i:])\n\t\tif i < j {\n\t\t\tinterfaces = append(interfaces, UTF16ToString(buf[i:j]))\n\t\t}\n\t\ti = j + 1\n\t}\n\tif interfaces == nil {\n\t\treturn nil, ERROR_NO_SUCH_DEVICE_INTERFACE\n\t}\n\treturn interfaces, nil\n}\n\n//sys cm_Get_DevNode_Status(status *uint32, problemNumber *uint32, devInst DEVINST, flags uint32) (ret CONFIGRET) = CfgMgr32.CM_Get_DevNode_Status\n\nfunc CM_Get_DevNode_Status(status *uint32, problemNumber *uint32, devInst DEVINST, flags uint32) error {\n\tret := cm_Get_DevNode_Status(status, problemNumber, devInst, flags)\n\tif ret == CR_SUCCESS {\n\t\treturn nil\n\t}\n\treturn ret\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/str.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build windows\n\npackage windows\n\nfunc itoa(val int) string { // do it here rather than with fmt to avoid dependency\n\tif val < 0 {\n\t\treturn \"-\" + itoa(-val)\n\t}\n\tvar buf [32]byte // big enough for int64\n\ti := len(buf) - 1\n\tfor val >= 10 {\n\t\tbuf[i] = byte(val%10 + '0')\n\t\ti--\n\t\tval /= 10\n\t}\n\tbuf[i] = byte(val + '0')\n\treturn string(buf[i:])\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/syscall.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build windows\n\n// Package windows contains an interface to the low-level operating system\n// primitives. OS details vary depending on the underlying system, and\n// by default, godoc will display the OS-specific documentation for the current\n// system. If you want godoc to display syscall documentation for another\n// system, set $GOOS and $GOARCH to the desired system. For example, if\n// you want to view documentation for freebsd/arm on linux/amd64, set $GOOS\n// to freebsd and $GOARCH to arm.\n//\n// The primary use of this package is inside other packages that provide a more\n// portable interface to the system, such as \"os\", \"time\" and \"net\".  Use\n// those packages rather than this one if you can.\n//\n// For details of the functions and data types in this package consult\n// the manuals for the appropriate operating system.\n//\n// These calls return err == nil to indicate success; otherwise\n// err represents an operating system error describing the failure and\n// holds a value of type syscall.Errno.\npackage windows // import \"golang.org/x/sys/windows\"\n\nimport (\n\t\"bytes\"\n\t\"strings\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// ByteSliceFromString returns a NUL-terminated slice of bytes\n// containing the text of s. If s contains a NUL byte at any\n// location, it returns (nil, syscall.EINVAL).\nfunc ByteSliceFromString(s string) ([]byte, error) {\n\tif strings.IndexByte(s, 0) != -1 {\n\t\treturn nil, syscall.EINVAL\n\t}\n\ta := make([]byte, len(s)+1)\n\tcopy(a, s)\n\treturn a, nil\n}\n\n// BytePtrFromString returns a pointer to a NUL-terminated array of\n// bytes containing the text of s. If s contains a NUL byte at any\n// location, it returns (nil, syscall.EINVAL).\nfunc BytePtrFromString(s string) (*byte, error) {\n\ta, err := ByteSliceFromString(s)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &a[0], nil\n}\n\n// ByteSliceToString returns a string form of the text represented by the slice s, with a terminating NUL and any\n// bytes after the NUL removed.\nfunc ByteSliceToString(s []byte) string {\n\tif i := bytes.IndexByte(s, 0); i != -1 {\n\t\ts = s[:i]\n\t}\n\treturn string(s)\n}\n\n// BytePtrToString takes a pointer to a sequence of text and returns the corresponding string.\n// If the pointer is nil, it returns the empty string. It assumes that the text sequence is terminated\n// at a zero byte; if the zero byte is not present, the program may crash.\nfunc BytePtrToString(p *byte) string {\n\tif p == nil {\n\t\treturn \"\"\n\t}\n\tif *p == 0 {\n\t\treturn \"\"\n\t}\n\n\t// Find NUL terminator.\n\tn := 0\n\tfor ptr := unsafe.Pointer(p); *(*byte)(ptr) != 0; n++ {\n\t\tptr = unsafe.Pointer(uintptr(ptr) + 1)\n\t}\n\n\treturn string(unsafe.Slice(p, n))\n}\n\n// Single-word zero for use when we need a valid pointer to 0 bytes.\n// See mksyscall.pl.\nvar _zero uintptr\n\nfunc (ts *Timespec) Unix() (sec int64, nsec int64) {\n\treturn int64(ts.Sec), int64(ts.Nsec)\n}\n\nfunc (tv *Timeval) Unix() (sec int64, nsec int64) {\n\treturn int64(tv.Sec), int64(tv.Usec) * 1000\n}\n\nfunc (ts *Timespec) Nano() int64 {\n\treturn int64(ts.Sec)*1e9 + int64(ts.Nsec)\n}\n\nfunc (tv *Timeval) Nano() int64 {\n\treturn int64(tv.Sec)*1e9 + int64(tv.Usec)*1000\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/syscall_windows.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Windows system calls.\n\npackage windows\n\nimport (\n\terrorspkg \"errors\"\n\t\"fmt\"\n\t\"runtime\"\n\t\"sync\"\n\t\"syscall\"\n\t\"time\"\n\t\"unicode/utf16\"\n\t\"unsafe\"\n)\n\ntype (\n\tHandle uintptr\n\tHWND   uintptr\n)\n\nconst (\n\tInvalidHandle = ^Handle(0)\n\tInvalidHWND   = ^HWND(0)\n\n\t// Flags for DefineDosDevice.\n\tDDD_EXACT_MATCH_ON_REMOVE = 0x00000004\n\tDDD_NO_BROADCAST_SYSTEM   = 0x00000008\n\tDDD_RAW_TARGET_PATH       = 0x00000001\n\tDDD_REMOVE_DEFINITION     = 0x00000002\n\n\t// Return values for GetDriveType.\n\tDRIVE_UNKNOWN     = 0\n\tDRIVE_NO_ROOT_DIR = 1\n\tDRIVE_REMOVABLE   = 2\n\tDRIVE_FIXED       = 3\n\tDRIVE_REMOTE      = 4\n\tDRIVE_CDROM       = 5\n\tDRIVE_RAMDISK     = 6\n\n\t// File system flags from GetVolumeInformation and GetVolumeInformationByHandle.\n\tFILE_CASE_SENSITIVE_SEARCH        = 0x00000001\n\tFILE_CASE_PRESERVED_NAMES         = 0x00000002\n\tFILE_FILE_COMPRESSION             = 0x00000010\n\tFILE_DAX_VOLUME                   = 0x20000000\n\tFILE_NAMED_STREAMS                = 0x00040000\n\tFILE_PERSISTENT_ACLS              = 0x00000008\n\tFILE_READ_ONLY_VOLUME             = 0x00080000\n\tFILE_SEQUENTIAL_WRITE_ONCE        = 0x00100000\n\tFILE_SUPPORTS_ENCRYPTION          = 0x00020000\n\tFILE_SUPPORTS_EXTENDED_ATTRIBUTES = 0x00800000\n\tFILE_SUPPORTS_HARD_LINKS          = 0x00400000\n\tFILE_SUPPORTS_OBJECT_IDS          = 0x00010000\n\tFILE_SUPPORTS_OPEN_BY_FILE_ID     = 0x01000000\n\tFILE_SUPPORTS_REPARSE_POINTS      = 0x00000080\n\tFILE_SUPPORTS_SPARSE_FILES        = 0x00000040\n\tFILE_SUPPORTS_TRANSACTIONS        = 0x00200000\n\tFILE_SUPPORTS_USN_JOURNAL         = 0x02000000\n\tFILE_UNICODE_ON_DISK              = 0x00000004\n\tFILE_VOLUME_IS_COMPRESSED         = 0x00008000\n\tFILE_VOLUME_QUOTAS                = 0x00000020\n\n\t// Flags for LockFileEx.\n\tLOCKFILE_FAIL_IMMEDIATELY = 0x00000001\n\tLOCKFILE_EXCLUSIVE_LOCK   = 0x00000002\n\n\t// Return value of SleepEx and other APC functions\n\tWAIT_IO_COMPLETION = 0x000000C0\n)\n\n// StringToUTF16 is deprecated. Use UTF16FromString instead.\n// If s contains a NUL byte this function panics instead of\n// returning an error.\nfunc StringToUTF16(s string) []uint16 {\n\ta, err := UTF16FromString(s)\n\tif err != nil {\n\t\tpanic(\"windows: string with NUL passed to StringToUTF16\")\n\t}\n\treturn a\n}\n\n// UTF16FromString returns the UTF-16 encoding of the UTF-8 string\n// s, with a terminating NUL added. If s contains a NUL byte at any\n// location, it returns (nil, syscall.EINVAL).\nfunc UTF16FromString(s string) ([]uint16, error) {\n\treturn syscall.UTF16FromString(s)\n}\n\n// UTF16ToString returns the UTF-8 encoding of the UTF-16 sequence s,\n// with a terminating NUL and any bytes after the NUL removed.\nfunc UTF16ToString(s []uint16) string {\n\treturn syscall.UTF16ToString(s)\n}\n\n// StringToUTF16Ptr is deprecated. Use UTF16PtrFromString instead.\n// If s contains a NUL byte this function panics instead of\n// returning an error.\nfunc StringToUTF16Ptr(s string) *uint16 { return &StringToUTF16(s)[0] }\n\n// UTF16PtrFromString returns pointer to the UTF-16 encoding of\n// the UTF-8 string s, with a terminating NUL added. If s\n// contains a NUL byte at any location, it returns (nil, syscall.EINVAL).\nfunc UTF16PtrFromString(s string) (*uint16, error) {\n\ta, err := UTF16FromString(s)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &a[0], nil\n}\n\n// UTF16PtrToString takes a pointer to a UTF-16 sequence and returns the corresponding UTF-8 encoded string.\n// If the pointer is nil, it returns the empty string. It assumes that the UTF-16 sequence is terminated\n// at a zero word; if the zero word is not present, the program may crash.\nfunc UTF16PtrToString(p *uint16) string {\n\tif p == nil {\n\t\treturn \"\"\n\t}\n\tif *p == 0 {\n\t\treturn \"\"\n\t}\n\n\t// Find NUL terminator.\n\tn := 0\n\tfor ptr := unsafe.Pointer(p); *(*uint16)(ptr) != 0; n++ {\n\t\tptr = unsafe.Pointer(uintptr(ptr) + unsafe.Sizeof(*p))\n\t}\n\treturn UTF16ToString(unsafe.Slice(p, n))\n}\n\nfunc Getpagesize() int { return 4096 }\n\n// NewCallback converts a Go function to a function pointer conforming to the stdcall calling convention.\n// This is useful when interoperating with Windows code requiring callbacks.\n// The argument is expected to be a function with one uintptr-sized result. The function must not have arguments with size larger than the size of uintptr.\nfunc NewCallback(fn interface{}) uintptr {\n\treturn syscall.NewCallback(fn)\n}\n\n// NewCallbackCDecl converts a Go function to a function pointer conforming to the cdecl calling convention.\n// This is useful when interoperating with Windows code requiring callbacks.\n// The argument is expected to be a function with one uintptr-sized result. The function must not have arguments with size larger than the size of uintptr.\nfunc NewCallbackCDecl(fn interface{}) uintptr {\n\treturn syscall.NewCallbackCDecl(fn)\n}\n\n// windows api calls\n\n//sys\tGetLastError() (lasterr error)\n//sys\tLoadLibrary(libname string) (handle Handle, err error) = LoadLibraryW\n//sys\tLoadLibraryEx(libname string, zero Handle, flags uintptr) (handle Handle, err error) = LoadLibraryExW\n//sys\tFreeLibrary(handle Handle) (err error)\n//sys\tGetProcAddress(module Handle, procname string) (proc uintptr, err error)\n//sys\tGetModuleFileName(module Handle, filename *uint16, size uint32) (n uint32, err error) = kernel32.GetModuleFileNameW\n//sys\tGetModuleHandleEx(flags uint32, moduleName *uint16, module *Handle) (err error) = kernel32.GetModuleHandleExW\n//sys\tSetDefaultDllDirectories(directoryFlags uint32) (err error)\n//sys\tAddDllDirectory(path *uint16) (cookie uintptr, err error) = kernel32.AddDllDirectory\n//sys\tRemoveDllDirectory(cookie uintptr) (err error) = kernel32.RemoveDllDirectory\n//sys\tSetDllDirectory(path string) (err error) = kernel32.SetDllDirectoryW\n//sys\tGetVersion() (ver uint32, err error)\n//sys\tFormatMessage(flags uint32, msgsrc uintptr, msgid uint32, langid uint32, buf []uint16, args *byte) (n uint32, err error) = FormatMessageW\n//sys\tExitProcess(exitcode uint32)\n//sys\tIsWow64Process(handle Handle, isWow64 *bool) (err error) = IsWow64Process\n//sys\tIsWow64Process2(handle Handle, processMachine *uint16, nativeMachine *uint16) (err error) = IsWow64Process2?\n//sys\tCreateFile(name *uint16, access uint32, mode uint32, sa *SecurityAttributes, createmode uint32, attrs uint32, templatefile Handle) (handle Handle, err error) [failretval==InvalidHandle] = CreateFileW\n//sys\tCreateNamedPipe(name *uint16, flags uint32, pipeMode uint32, maxInstances uint32, outSize uint32, inSize uint32, defaultTimeout uint32, sa *SecurityAttributes) (handle Handle, err error)  [failretval==InvalidHandle] = CreateNamedPipeW\n//sys\tConnectNamedPipe(pipe Handle, overlapped *Overlapped) (err error)\n//sys\tDisconnectNamedPipe(pipe Handle) (err error)\n//sys   GetNamedPipeClientProcessId(pipe Handle, clientProcessID *uint32) (err error)\n//sys   GetNamedPipeServerProcessId(pipe Handle, serverProcessID *uint32) (err error)\n//sys\tGetNamedPipeInfo(pipe Handle, flags *uint32, outSize *uint32, inSize *uint32, maxInstances *uint32) (err error)\n//sys\tGetNamedPipeHandleState(pipe Handle, state *uint32, curInstances *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32, userName *uint16, maxUserNameSize uint32) (err error) = GetNamedPipeHandleStateW\n//sys\tSetNamedPipeHandleState(pipe Handle, state *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32) (err error) = SetNamedPipeHandleState\n//sys\treadFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) = ReadFile\n//sys\twriteFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) = WriteFile\n//sys\tGetOverlappedResult(handle Handle, overlapped *Overlapped, done *uint32, wait bool) (err error)\n//sys\tSetFilePointer(handle Handle, lowoffset int32, highoffsetptr *int32, whence uint32) (newlowoffset uint32, err error) [failretval==0xffffffff]\n//sys\tCloseHandle(handle Handle) (err error)\n//sys\tGetStdHandle(stdhandle uint32) (handle Handle, err error) [failretval==InvalidHandle]\n//sys\tSetStdHandle(stdhandle uint32, handle Handle) (err error)\n//sys\tfindFirstFile1(name *uint16, data *win32finddata1) (handle Handle, err error) [failretval==InvalidHandle] = FindFirstFileW\n//sys\tfindNextFile1(handle Handle, data *win32finddata1) (err error) = FindNextFileW\n//sys\tFindClose(handle Handle) (err error)\n//sys\tGetFileInformationByHandle(handle Handle, data *ByHandleFileInformation) (err error)\n//sys\tGetFileInformationByHandleEx(handle Handle, class uint32, outBuffer *byte, outBufferLen uint32) (err error)\n//sys\tSetFileInformationByHandle(handle Handle, class uint32, inBuffer *byte, inBufferLen uint32) (err error)\n//sys\tGetCurrentDirectory(buflen uint32, buf *uint16) (n uint32, err error) = GetCurrentDirectoryW\n//sys\tSetCurrentDirectory(path *uint16) (err error) = SetCurrentDirectoryW\n//sys\tCreateDirectory(path *uint16, sa *SecurityAttributes) (err error) = CreateDirectoryW\n//sys\tRemoveDirectory(path *uint16) (err error) = RemoveDirectoryW\n//sys\tDeleteFile(path *uint16) (err error) = DeleteFileW\n//sys\tMoveFile(from *uint16, to *uint16) (err error) = MoveFileW\n//sys\tMoveFileEx(from *uint16, to *uint16, flags uint32) (err error) = MoveFileExW\n//sys\tLockFileEx(file Handle, flags uint32, reserved uint32, bytesLow uint32, bytesHigh uint32, overlapped *Overlapped) (err error)\n//sys\tUnlockFileEx(file Handle, reserved uint32, bytesLow uint32, bytesHigh uint32, overlapped *Overlapped) (err error)\n//sys\tGetComputerName(buf *uint16, n *uint32) (err error) = GetComputerNameW\n//sys\tGetComputerNameEx(nametype uint32, buf *uint16, n *uint32) (err error) = GetComputerNameExW\n//sys\tSetEndOfFile(handle Handle) (err error)\n//sys\tSetFileValidData(handle Handle, validDataLength int64) (err error)\n//sys\tGetSystemTimeAsFileTime(time *Filetime)\n//sys\tGetSystemTimePreciseAsFileTime(time *Filetime)\n//sys\tGetTimeZoneInformation(tzi *Timezoneinformation) (rc uint32, err error) [failretval==0xffffffff]\n//sys\tCreateIoCompletionPort(filehandle Handle, cphandle Handle, key uintptr, threadcnt uint32) (handle Handle, err error)\n//sys\tGetQueuedCompletionStatus(cphandle Handle, qty *uint32, key *uintptr, overlapped **Overlapped, timeout uint32) (err error)\n//sys\tPostQueuedCompletionStatus(cphandle Handle, qty uint32, key uintptr, overlapped *Overlapped) (err error)\n//sys\tCancelIo(s Handle) (err error)\n//sys\tCancelIoEx(s Handle, o *Overlapped) (err error)\n//sys\tCreateProcess(appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) = CreateProcessW\n//sys\tCreateProcessAsUser(token Token, appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) = advapi32.CreateProcessAsUserW\n//sys   initializeProcThreadAttributeList(attrlist *ProcThreadAttributeList, attrcount uint32, flags uint32, size *uintptr) (err error) = InitializeProcThreadAttributeList\n//sys   deleteProcThreadAttributeList(attrlist *ProcThreadAttributeList) = DeleteProcThreadAttributeList\n//sys   updateProcThreadAttribute(attrlist *ProcThreadAttributeList, flags uint32, attr uintptr, value unsafe.Pointer, size uintptr, prevvalue unsafe.Pointer, returnedsize *uintptr) (err error) = UpdateProcThreadAttribute\n//sys\tOpenProcess(desiredAccess uint32, inheritHandle bool, processId uint32) (handle Handle, err error)\n//sys\tShellExecute(hwnd Handle, verb *uint16, file *uint16, args *uint16, cwd *uint16, showCmd int32) (err error) [failretval<=32] = shell32.ShellExecuteW\n//sys\tGetWindowThreadProcessId(hwnd HWND, pid *uint32) (tid uint32, err error) = user32.GetWindowThreadProcessId\n//sys\tLoadKeyboardLayout(name *uint16, flags uint32) (hkl Handle, err error) [failretval==0] = user32.LoadKeyboardLayoutW\n//sys\tUnloadKeyboardLayout(hkl Handle) (err error) = user32.UnloadKeyboardLayout\n//sys\tGetKeyboardLayout(tid uint32) (hkl Handle) = user32.GetKeyboardLayout\n//sys\tToUnicodeEx(vkey uint32, scancode uint32, keystate *byte, pwszBuff *uint16, cchBuff int32, flags uint32, hkl Handle) (ret int32) = user32.ToUnicodeEx\n//sys\tGetShellWindow() (shellWindow HWND) = user32.GetShellWindow\n//sys\tMessageBox(hwnd HWND, text *uint16, caption *uint16, boxtype uint32) (ret int32, err error) [failretval==0] = user32.MessageBoxW\n//sys\tExitWindowsEx(flags uint32, reason uint32) (err error) = user32.ExitWindowsEx\n//sys\tshGetKnownFolderPath(id *KNOWNFOLDERID, flags uint32, token Token, path **uint16) (ret error) = shell32.SHGetKnownFolderPath\n//sys\tTerminateProcess(handle Handle, exitcode uint32) (err error)\n//sys\tGetExitCodeProcess(handle Handle, exitcode *uint32) (err error)\n//sys\tgetStartupInfo(startupInfo *StartupInfo) = GetStartupInfoW\n//sys\tGetProcessTimes(handle Handle, creationTime *Filetime, exitTime *Filetime, kernelTime *Filetime, userTime *Filetime) (err error)\n//sys\tDuplicateHandle(hSourceProcessHandle Handle, hSourceHandle Handle, hTargetProcessHandle Handle, lpTargetHandle *Handle, dwDesiredAccess uint32, bInheritHandle bool, dwOptions uint32) (err error)\n//sys\tWaitForSingleObject(handle Handle, waitMilliseconds uint32) (event uint32, err error) [failretval==0xffffffff]\n//sys\twaitForMultipleObjects(count uint32, handles uintptr, waitAll bool, waitMilliseconds uint32) (event uint32, err error) [failretval==0xffffffff] = WaitForMultipleObjects\n//sys\tGetTempPath(buflen uint32, buf *uint16) (n uint32, err error) = GetTempPathW\n//sys\tCreatePipe(readhandle *Handle, writehandle *Handle, sa *SecurityAttributes, size uint32) (err error)\n//sys\tGetFileType(filehandle Handle) (n uint32, err error)\n//sys\tCryptAcquireContext(provhandle *Handle, container *uint16, provider *uint16, provtype uint32, flags uint32) (err error) = advapi32.CryptAcquireContextW\n//sys\tCryptReleaseContext(provhandle Handle, flags uint32) (err error) = advapi32.CryptReleaseContext\n//sys\tCryptGenRandom(provhandle Handle, buflen uint32, buf *byte) (err error) = advapi32.CryptGenRandom\n//sys\tGetEnvironmentStrings() (envs *uint16, err error) [failretval==nil] = kernel32.GetEnvironmentStringsW\n//sys\tFreeEnvironmentStrings(envs *uint16) (err error) = kernel32.FreeEnvironmentStringsW\n//sys\tGetEnvironmentVariable(name *uint16, buffer *uint16, size uint32) (n uint32, err error) = kernel32.GetEnvironmentVariableW\n//sys\tSetEnvironmentVariable(name *uint16, value *uint16) (err error) = kernel32.SetEnvironmentVariableW\n//sys\tExpandEnvironmentStrings(src *uint16, dst *uint16, size uint32) (n uint32, err error) = kernel32.ExpandEnvironmentStringsW\n//sys\tCreateEnvironmentBlock(block **uint16, token Token, inheritExisting bool) (err error) = userenv.CreateEnvironmentBlock\n//sys\tDestroyEnvironmentBlock(block *uint16) (err error) = userenv.DestroyEnvironmentBlock\n//sys\tgetTickCount64() (ms uint64) = kernel32.GetTickCount64\n//sys   GetFileTime(handle Handle, ctime *Filetime, atime *Filetime, wtime *Filetime) (err error)\n//sys\tSetFileTime(handle Handle, ctime *Filetime, atime *Filetime, wtime *Filetime) (err error)\n//sys\tGetFileAttributes(name *uint16) (attrs uint32, err error) [failretval==INVALID_FILE_ATTRIBUTES] = kernel32.GetFileAttributesW\n//sys\tSetFileAttributes(name *uint16, attrs uint32) (err error) = kernel32.SetFileAttributesW\n//sys\tGetFileAttributesEx(name *uint16, level uint32, info *byte) (err error) = kernel32.GetFileAttributesExW\n//sys\tGetCommandLine() (cmd *uint16) = kernel32.GetCommandLineW\n//sys\tcommandLineToArgv(cmd *uint16, argc *int32) (argv **uint16, err error) [failretval==nil] = shell32.CommandLineToArgvW\n//sys\tLocalFree(hmem Handle) (handle Handle, err error) [failretval!=0]\n//sys\tLocalAlloc(flags uint32, length uint32) (ptr uintptr, err error)\n//sys\tSetHandleInformation(handle Handle, mask uint32, flags uint32) (err error)\n//sys\tFlushFileBuffers(handle Handle) (err error)\n//sys\tGetFullPathName(path *uint16, buflen uint32, buf *uint16, fname **uint16) (n uint32, err error) = kernel32.GetFullPathNameW\n//sys\tGetLongPathName(path *uint16, buf *uint16, buflen uint32) (n uint32, err error) = kernel32.GetLongPathNameW\n//sys\tGetShortPathName(longpath *uint16, shortpath *uint16, buflen uint32) (n uint32, err error) = kernel32.GetShortPathNameW\n//sys\tGetFinalPathNameByHandle(file Handle, filePath *uint16, filePathSize uint32, flags uint32) (n uint32, err error) = kernel32.GetFinalPathNameByHandleW\n//sys\tCreateFileMapping(fhandle Handle, sa *SecurityAttributes, prot uint32, maxSizeHigh uint32, maxSizeLow uint32, name *uint16) (handle Handle, err error) [failretval == 0 || e1 == ERROR_ALREADY_EXISTS] = kernel32.CreateFileMappingW\n//sys\tMapViewOfFile(handle Handle, access uint32, offsetHigh uint32, offsetLow uint32, length uintptr) (addr uintptr, err error)\n//sys\tUnmapViewOfFile(addr uintptr) (err error)\n//sys\tFlushViewOfFile(addr uintptr, length uintptr) (err error)\n//sys\tVirtualLock(addr uintptr, length uintptr) (err error)\n//sys\tVirtualUnlock(addr uintptr, length uintptr) (err error)\n//sys\tVirtualAlloc(address uintptr, size uintptr, alloctype uint32, protect uint32) (value uintptr, err error) = kernel32.VirtualAlloc\n//sys\tVirtualFree(address uintptr, size uintptr, freetype uint32) (err error) = kernel32.VirtualFree\n//sys\tVirtualProtect(address uintptr, size uintptr, newprotect uint32, oldprotect *uint32) (err error) = kernel32.VirtualProtect\n//sys\tVirtualProtectEx(process Handle, address uintptr, size uintptr, newProtect uint32, oldProtect *uint32) (err error) = kernel32.VirtualProtectEx\n//sys\tVirtualQuery(address uintptr, buffer *MemoryBasicInformation, length uintptr) (err error) = kernel32.VirtualQuery\n//sys\tVirtualQueryEx(process Handle, address uintptr, buffer *MemoryBasicInformation, length uintptr) (err error) = kernel32.VirtualQueryEx\n//sys\tReadProcessMemory(process Handle, baseAddress uintptr, buffer *byte, size uintptr, numberOfBytesRead *uintptr) (err error) = kernel32.ReadProcessMemory\n//sys\tWriteProcessMemory(process Handle, baseAddress uintptr, buffer *byte, size uintptr, numberOfBytesWritten *uintptr) (err error) = kernel32.WriteProcessMemory\n//sys\tTransmitFile(s Handle, handle Handle, bytesToWrite uint32, bytsPerSend uint32, overlapped *Overlapped, transmitFileBuf *TransmitFileBuffers, flags uint32) (err error) = mswsock.TransmitFile\n//sys\tReadDirectoryChanges(handle Handle, buf *byte, buflen uint32, watchSubTree bool, mask uint32, retlen *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) = kernel32.ReadDirectoryChangesW\n//sys\tFindFirstChangeNotification(path string, watchSubtree bool, notifyFilter uint32) (handle Handle, err error) [failretval==InvalidHandle] = kernel32.FindFirstChangeNotificationW\n//sys\tFindNextChangeNotification(handle Handle) (err error)\n//sys\tFindCloseChangeNotification(handle Handle) (err error)\n//sys\tCertOpenSystemStore(hprov Handle, name *uint16) (store Handle, err error) = crypt32.CertOpenSystemStoreW\n//sys\tCertOpenStore(storeProvider uintptr, msgAndCertEncodingType uint32, cryptProv uintptr, flags uint32, para uintptr) (handle Handle, err error) = crypt32.CertOpenStore\n//sys\tCertEnumCertificatesInStore(store Handle, prevContext *CertContext) (context *CertContext, err error) [failretval==nil] = crypt32.CertEnumCertificatesInStore\n//sys\tCertAddCertificateContextToStore(store Handle, certContext *CertContext, addDisposition uint32, storeContext **CertContext) (err error) = crypt32.CertAddCertificateContextToStore\n//sys\tCertCloseStore(store Handle, flags uint32) (err error) = crypt32.CertCloseStore\n//sys\tCertDeleteCertificateFromStore(certContext *CertContext) (err error) = crypt32.CertDeleteCertificateFromStore\n//sys\tCertDuplicateCertificateContext(certContext *CertContext) (dupContext *CertContext) = crypt32.CertDuplicateCertificateContext\n//sys\tPFXImportCertStore(pfx *CryptDataBlob, password *uint16, flags uint32) (store Handle, err error) = crypt32.PFXImportCertStore\n//sys\tCertGetCertificateChain(engine Handle, leaf *CertContext, time *Filetime, additionalStore Handle, para *CertChainPara, flags uint32, reserved uintptr, chainCtx **CertChainContext) (err error) = crypt32.CertGetCertificateChain\n//sys\tCertFreeCertificateChain(ctx *CertChainContext) = crypt32.CertFreeCertificateChain\n//sys\tCertCreateCertificateContext(certEncodingType uint32, certEncoded *byte, encodedLen uint32) (context *CertContext, err error) [failretval==nil] = crypt32.CertCreateCertificateContext\n//sys\tCertFreeCertificateContext(ctx *CertContext) (err error) = crypt32.CertFreeCertificateContext\n//sys\tCertVerifyCertificateChainPolicy(policyOID uintptr, chain *CertChainContext, para *CertChainPolicyPara, status *CertChainPolicyStatus) (err error) = crypt32.CertVerifyCertificateChainPolicy\n//sys\tCertGetNameString(certContext *CertContext, nameType uint32, flags uint32, typePara unsafe.Pointer, name *uint16, size uint32) (chars uint32) = crypt32.CertGetNameStringW\n//sys\tCertFindExtension(objId *byte, countExtensions uint32, extensions *CertExtension) (ret *CertExtension) = crypt32.CertFindExtension\n//sys   CertFindCertificateInStore(store Handle, certEncodingType uint32, findFlags uint32, findType uint32, findPara unsafe.Pointer, prevCertContext *CertContext) (cert *CertContext, err error) [failretval==nil] = crypt32.CertFindCertificateInStore\n//sys   CertFindChainInStore(store Handle, certEncodingType uint32, findFlags uint32, findType uint32, findPara unsafe.Pointer, prevChainContext *CertChainContext) (certchain *CertChainContext, err error) [failretval==nil] = crypt32.CertFindChainInStore\n//sys   CryptAcquireCertificatePrivateKey(cert *CertContext, flags uint32, parameters unsafe.Pointer, cryptProvOrNCryptKey *Handle, keySpec *uint32, callerFreeProvOrNCryptKey *bool) (err error) = crypt32.CryptAcquireCertificatePrivateKey\n//sys\tCryptQueryObject(objectType uint32, object unsafe.Pointer, expectedContentTypeFlags uint32, expectedFormatTypeFlags uint32, flags uint32, msgAndCertEncodingType *uint32, contentType *uint32, formatType *uint32, certStore *Handle, msg *Handle, context *unsafe.Pointer) (err error) = crypt32.CryptQueryObject\n//sys\tCryptDecodeObject(encodingType uint32, structType *byte, encodedBytes *byte, lenEncodedBytes uint32, flags uint32, decoded unsafe.Pointer, decodedLen *uint32) (err error) = crypt32.CryptDecodeObject\n//sys\tCryptProtectData(dataIn *DataBlob, name *uint16, optionalEntropy *DataBlob, reserved uintptr, promptStruct *CryptProtectPromptStruct, flags uint32, dataOut *DataBlob) (err error) = crypt32.CryptProtectData\n//sys\tCryptUnprotectData(dataIn *DataBlob, name **uint16, optionalEntropy *DataBlob, reserved uintptr, promptStruct *CryptProtectPromptStruct, flags uint32, dataOut *DataBlob) (err error) = crypt32.CryptUnprotectData\n//sys\tWinVerifyTrustEx(hwnd HWND, actionId *GUID, data *WinTrustData) (ret error) = wintrust.WinVerifyTrustEx\n//sys\tRegOpenKeyEx(key Handle, subkey *uint16, options uint32, desiredAccess uint32, result *Handle) (regerrno error) = advapi32.RegOpenKeyExW\n//sys\tRegCloseKey(key Handle) (regerrno error) = advapi32.RegCloseKey\n//sys\tRegQueryInfoKey(key Handle, class *uint16, classLen *uint32, reserved *uint32, subkeysLen *uint32, maxSubkeyLen *uint32, maxClassLen *uint32, valuesLen *uint32, maxValueNameLen *uint32, maxValueLen *uint32, saLen *uint32, lastWriteTime *Filetime) (regerrno error) = advapi32.RegQueryInfoKeyW\n//sys\tRegEnumKeyEx(key Handle, index uint32, name *uint16, nameLen *uint32, reserved *uint32, class *uint16, classLen *uint32, lastWriteTime *Filetime) (regerrno error) = advapi32.RegEnumKeyExW\n//sys\tRegQueryValueEx(key Handle, name *uint16, reserved *uint32, valtype *uint32, buf *byte, buflen *uint32) (regerrno error) = advapi32.RegQueryValueExW\n//sys\tRegNotifyChangeKeyValue(key Handle, watchSubtree bool, notifyFilter uint32, event Handle, asynchronous bool) (regerrno error) = advapi32.RegNotifyChangeKeyValue\n//sys\tGetCurrentProcessId() (pid uint32) = kernel32.GetCurrentProcessId\n//sys\tProcessIdToSessionId(pid uint32, sessionid *uint32) (err error) = kernel32.ProcessIdToSessionId\n//sys\tClosePseudoConsole(console Handle) = kernel32.ClosePseudoConsole\n//sys\tcreatePseudoConsole(size uint32, in Handle, out Handle, flags uint32, pconsole *Handle) (hr error) = kernel32.CreatePseudoConsole\n//sys\tGetConsoleMode(console Handle, mode *uint32) (err error) = kernel32.GetConsoleMode\n//sys\tSetConsoleMode(console Handle, mode uint32) (err error) = kernel32.SetConsoleMode\n//sys\tGetConsoleScreenBufferInfo(console Handle, info *ConsoleScreenBufferInfo) (err error) = kernel32.GetConsoleScreenBufferInfo\n//sys\tsetConsoleCursorPosition(console Handle, position uint32) (err error) = kernel32.SetConsoleCursorPosition\n//sys\tGetConsoleCP() (cp uint32, err error) = kernel32.GetConsoleCP\n//sys\tGetConsoleOutputCP() (cp uint32, err error) = kernel32.GetConsoleOutputCP\n//sys\tSetConsoleCP(cp uint32) (err error) = kernel32.SetConsoleCP\n//sys\tSetConsoleOutputCP(cp uint32) (err error) = kernel32.SetConsoleOutputCP\n//sys\tWriteConsole(console Handle, buf *uint16, towrite uint32, written *uint32, reserved *byte) (err error) = kernel32.WriteConsoleW\n//sys\tReadConsole(console Handle, buf *uint16, toread uint32, read *uint32, inputControl *byte) (err error) = kernel32.ReadConsoleW\n//sys\tGetNumberOfConsoleInputEvents(console Handle, numevents *uint32) (err error) = kernel32.GetNumberOfConsoleInputEvents\n//sys\tFlushConsoleInputBuffer(console Handle) (err error) = kernel32.FlushConsoleInputBuffer\n//sys\tresizePseudoConsole(pconsole Handle, size uint32) (hr error) = kernel32.ResizePseudoConsole\n//sys\tCreateToolhelp32Snapshot(flags uint32, processId uint32) (handle Handle, err error) [failretval==InvalidHandle] = kernel32.CreateToolhelp32Snapshot\n//sys\tModule32First(snapshot Handle, moduleEntry *ModuleEntry32) (err error) = kernel32.Module32FirstW\n//sys\tModule32Next(snapshot Handle, moduleEntry *ModuleEntry32) (err error) = kernel32.Module32NextW\n//sys\tProcess32First(snapshot Handle, procEntry *ProcessEntry32) (err error) = kernel32.Process32FirstW\n//sys\tProcess32Next(snapshot Handle, procEntry *ProcessEntry32) (err error) = kernel32.Process32NextW\n//sys\tThread32First(snapshot Handle, threadEntry *ThreadEntry32) (err error)\n//sys\tThread32Next(snapshot Handle, threadEntry *ThreadEntry32) (err error)\n//sys\tDeviceIoControl(handle Handle, ioControlCode uint32, inBuffer *byte, inBufferSize uint32, outBuffer *byte, outBufferSize uint32, bytesReturned *uint32, overlapped *Overlapped) (err error)\n// This function returns 1 byte BOOLEAN rather than the 4 byte BOOL.\n//sys\tCreateSymbolicLink(symlinkfilename *uint16, targetfilename *uint16, flags uint32) (err error) [failretval&0xff==0] = CreateSymbolicLinkW\n//sys\tCreateHardLink(filename *uint16, existingfilename *uint16, reserved uintptr) (err error) [failretval&0xff==0] = CreateHardLinkW\n//sys\tGetCurrentThreadId() (id uint32)\n//sys\tCreateEvent(eventAttrs *SecurityAttributes, manualReset uint32, initialState uint32, name *uint16) (handle Handle, err error) [failretval == 0 || e1 == ERROR_ALREADY_EXISTS] = kernel32.CreateEventW\n//sys\tCreateEventEx(eventAttrs *SecurityAttributes, name *uint16, flags uint32, desiredAccess uint32) (handle Handle, err error) [failretval == 0 || e1 == ERROR_ALREADY_EXISTS] = kernel32.CreateEventExW\n//sys\tOpenEvent(desiredAccess uint32, inheritHandle bool, name *uint16) (handle Handle, err error) = kernel32.OpenEventW\n//sys\tSetEvent(event Handle) (err error) = kernel32.SetEvent\n//sys\tResetEvent(event Handle) (err error) = kernel32.ResetEvent\n//sys\tPulseEvent(event Handle) (err error) = kernel32.PulseEvent\n//sys\tCreateMutex(mutexAttrs *SecurityAttributes, initialOwner bool, name *uint16) (handle Handle, err error) [failretval == 0 || e1 == ERROR_ALREADY_EXISTS] = kernel32.CreateMutexW\n//sys\tCreateMutexEx(mutexAttrs *SecurityAttributes, name *uint16, flags uint32, desiredAccess uint32) (handle Handle, err error) [failretval == 0 || e1 == ERROR_ALREADY_EXISTS] = kernel32.CreateMutexExW\n//sys\tOpenMutex(desiredAccess uint32, inheritHandle bool, name *uint16) (handle Handle, err error) = kernel32.OpenMutexW\n//sys\tReleaseMutex(mutex Handle) (err error) = kernel32.ReleaseMutex\n//sys\tSleepEx(milliseconds uint32, alertable bool) (ret uint32) = kernel32.SleepEx\n//sys\tCreateJobObject(jobAttr *SecurityAttributes, name *uint16) (handle Handle, err error) = kernel32.CreateJobObjectW\n//sys\tAssignProcessToJobObject(job Handle, process Handle) (err error) = kernel32.AssignProcessToJobObject\n//sys\tTerminateJobObject(job Handle, exitCode uint32) (err error) = kernel32.TerminateJobObject\n//sys\tSetErrorMode(mode uint32) (ret uint32) = kernel32.SetErrorMode\n//sys\tResumeThread(thread Handle) (ret uint32, err error) [failretval==0xffffffff] = kernel32.ResumeThread\n//sys\tSetPriorityClass(process Handle, priorityClass uint32) (err error) = kernel32.SetPriorityClass\n//sys\tGetPriorityClass(process Handle) (ret uint32, err error) = kernel32.GetPriorityClass\n//sys\tQueryInformationJobObject(job Handle, JobObjectInformationClass int32, JobObjectInformation uintptr, JobObjectInformationLength uint32, retlen *uint32) (err error) = kernel32.QueryInformationJobObject\n//sys\tSetInformationJobObject(job Handle, JobObjectInformationClass uint32, JobObjectInformation uintptr, JobObjectInformationLength uint32) (ret int, err error)\n//sys\tGenerateConsoleCtrlEvent(ctrlEvent uint32, processGroupID uint32) (err error)\n//sys\tGetProcessId(process Handle) (id uint32, err error)\n//sys\tQueryFullProcessImageName(proc Handle, flags uint32, exeName *uint16, size *uint32) (err error) = kernel32.QueryFullProcessImageNameW\n//sys\tOpenThread(desiredAccess uint32, inheritHandle bool, threadId uint32) (handle Handle, err error)\n//sys\tSetProcessPriorityBoost(process Handle, disable bool) (err error) = kernel32.SetProcessPriorityBoost\n//sys\tGetProcessWorkingSetSizeEx(hProcess Handle, lpMinimumWorkingSetSize *uintptr, lpMaximumWorkingSetSize *uintptr, flags *uint32)\n//sys\tSetProcessWorkingSetSizeEx(hProcess Handle, dwMinimumWorkingSetSize uintptr, dwMaximumWorkingSetSize uintptr, flags uint32) (err error)\n//sys\tClearCommBreak(handle Handle) (err error)\n//sys\tClearCommError(handle Handle, lpErrors *uint32, lpStat *ComStat) (err error)\n//sys\tEscapeCommFunction(handle Handle, dwFunc uint32) (err error)\n//sys\tGetCommState(handle Handle, lpDCB *DCB) (err error)\n//sys\tGetCommModemStatus(handle Handle, lpModemStat *uint32) (err error)\n//sys\tGetCommTimeouts(handle Handle, timeouts *CommTimeouts) (err error)\n//sys\tPurgeComm(handle Handle, dwFlags uint32) (err error)\n//sys\tSetCommBreak(handle Handle) (err error)\n//sys\tSetCommMask(handle Handle, dwEvtMask uint32) (err error)\n//sys\tSetCommState(handle Handle, lpDCB *DCB) (err error)\n//sys\tSetCommTimeouts(handle Handle, timeouts *CommTimeouts) (err error)\n//sys\tSetupComm(handle Handle, dwInQueue uint32, dwOutQueue uint32) (err error)\n//sys\tWaitCommEvent(handle Handle, lpEvtMask *uint32, lpOverlapped *Overlapped) (err error)\n//sys\tGetActiveProcessorCount(groupNumber uint16) (ret uint32)\n//sys\tGetMaximumProcessorCount(groupNumber uint16) (ret uint32)\n//sys\tEnumWindows(enumFunc uintptr, param unsafe.Pointer) (err error) = user32.EnumWindows\n//sys\tEnumChildWindows(hwnd HWND, enumFunc uintptr, param unsafe.Pointer) = user32.EnumChildWindows\n//sys\tGetClassName(hwnd HWND, className *uint16, maxCount int32) (copied int32, err error) = user32.GetClassNameW\n//sys\tGetDesktopWindow() (hwnd HWND) = user32.GetDesktopWindow\n//sys\tGetForegroundWindow() (hwnd HWND) = user32.GetForegroundWindow\n//sys\tIsWindow(hwnd HWND) (isWindow bool) = user32.IsWindow\n//sys\tIsWindowUnicode(hwnd HWND) (isUnicode bool) = user32.IsWindowUnicode\n//sys\tIsWindowVisible(hwnd HWND) (isVisible bool) = user32.IsWindowVisible\n//sys\tGetGUIThreadInfo(thread uint32, info *GUIThreadInfo) (err error) = user32.GetGUIThreadInfo\n//sys\tGetLargePageMinimum() (size uintptr)\n\n// Volume Management Functions\n//sys\tDefineDosDevice(flags uint32, deviceName *uint16, targetPath *uint16) (err error) = DefineDosDeviceW\n//sys\tDeleteVolumeMountPoint(volumeMountPoint *uint16) (err error) = DeleteVolumeMountPointW\n//sys\tFindFirstVolume(volumeName *uint16, bufferLength uint32) (handle Handle, err error) [failretval==InvalidHandle] = FindFirstVolumeW\n//sys\tFindFirstVolumeMountPoint(rootPathName *uint16, volumeMountPoint *uint16, bufferLength uint32) (handle Handle, err error) [failretval==InvalidHandle] = FindFirstVolumeMountPointW\n//sys\tFindNextVolume(findVolume Handle, volumeName *uint16, bufferLength uint32) (err error) = FindNextVolumeW\n//sys\tFindNextVolumeMountPoint(findVolumeMountPoint Handle, volumeMountPoint *uint16, bufferLength uint32) (err error) = FindNextVolumeMountPointW\n//sys\tFindVolumeClose(findVolume Handle) (err error)\n//sys\tFindVolumeMountPointClose(findVolumeMountPoint Handle) (err error)\n//sys\tGetDiskFreeSpaceEx(directoryName *uint16, freeBytesAvailableToCaller *uint64, totalNumberOfBytes *uint64, totalNumberOfFreeBytes *uint64) (err error) = GetDiskFreeSpaceExW\n//sys\tGetDriveType(rootPathName *uint16) (driveType uint32) = GetDriveTypeW\n//sys\tGetLogicalDrives() (drivesBitMask uint32, err error) [failretval==0]\n//sys\tGetLogicalDriveStrings(bufferLength uint32, buffer *uint16) (n uint32, err error) [failretval==0] = GetLogicalDriveStringsW\n//sys\tGetVolumeInformation(rootPathName *uint16, volumeNameBuffer *uint16, volumeNameSize uint32, volumeNameSerialNumber *uint32, maximumComponentLength *uint32, fileSystemFlags *uint32, fileSystemNameBuffer *uint16, fileSystemNameSize uint32) (err error) = GetVolumeInformationW\n//sys\tGetVolumeInformationByHandle(file Handle, volumeNameBuffer *uint16, volumeNameSize uint32, volumeNameSerialNumber *uint32, maximumComponentLength *uint32, fileSystemFlags *uint32, fileSystemNameBuffer *uint16, fileSystemNameSize uint32) (err error) = GetVolumeInformationByHandleW\n//sys\tGetVolumeNameForVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16, bufferlength uint32) (err error) = GetVolumeNameForVolumeMountPointW\n//sys\tGetVolumePathName(fileName *uint16, volumePathName *uint16, bufferLength uint32) (err error) = GetVolumePathNameW\n//sys\tGetVolumePathNamesForVolumeName(volumeName *uint16, volumePathNames *uint16, bufferLength uint32, returnLength *uint32) (err error) = GetVolumePathNamesForVolumeNameW\n//sys\tQueryDosDevice(deviceName *uint16, targetPath *uint16, max uint32) (n uint32, err error) [failretval==0] = QueryDosDeviceW\n//sys\tSetVolumeLabel(rootPathName *uint16, volumeName *uint16) (err error) = SetVolumeLabelW\n//sys\tSetVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16) (err error) = SetVolumeMountPointW\n//sys\tInitiateSystemShutdownEx(machineName *uint16, message *uint16, timeout uint32, forceAppsClosed bool, rebootAfterShutdown bool, reason uint32) (err error) = advapi32.InitiateSystemShutdownExW\n//sys\tSetProcessShutdownParameters(level uint32, flags uint32) (err error) = kernel32.SetProcessShutdownParameters\n//sys\tGetProcessShutdownParameters(level *uint32, flags *uint32) (err error) = kernel32.GetProcessShutdownParameters\n//sys\tclsidFromString(lpsz *uint16, pclsid *GUID) (ret error) = ole32.CLSIDFromString\n//sys\tstringFromGUID2(rguid *GUID, lpsz *uint16, cchMax int32) (chars int32) = ole32.StringFromGUID2\n//sys\tcoCreateGuid(pguid *GUID) (ret error) = ole32.CoCreateGuid\n//sys\tCoTaskMemFree(address unsafe.Pointer) = ole32.CoTaskMemFree\n//sys\tCoInitializeEx(reserved uintptr, coInit uint32) (ret error) = ole32.CoInitializeEx\n//sys\tCoUninitialize() = ole32.CoUninitialize\n//sys\tCoGetObject(name *uint16, bindOpts *BIND_OPTS3, guid *GUID, functionTable **uintptr) (ret error) = ole32.CoGetObject\n//sys\tgetProcessPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) = kernel32.GetProcessPreferredUILanguages\n//sys\tgetThreadPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) = kernel32.GetThreadPreferredUILanguages\n//sys\tgetUserPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) = kernel32.GetUserPreferredUILanguages\n//sys\tgetSystemPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) = kernel32.GetSystemPreferredUILanguages\n//sys\tfindResource(module Handle, name uintptr, resType uintptr) (resInfo Handle, err error) = kernel32.FindResourceW\n//sys\tSizeofResource(module Handle, resInfo Handle) (size uint32, err error) = kernel32.SizeofResource\n//sys\tLoadResource(module Handle, resInfo Handle) (resData Handle, err error) = kernel32.LoadResource\n//sys\tLockResource(resData Handle) (addr uintptr, err error) = kernel32.LockResource\n\n// Version APIs\n//sys\tGetFileVersionInfoSize(filename string, zeroHandle *Handle) (bufSize uint32, err error) = version.GetFileVersionInfoSizeW\n//sys\tGetFileVersionInfo(filename string, handle uint32, bufSize uint32, buffer unsafe.Pointer) (err error) = version.GetFileVersionInfoW\n//sys\tVerQueryValue(block unsafe.Pointer, subBlock string, pointerToBufferPointer unsafe.Pointer, bufSize *uint32) (err error) = version.VerQueryValueW\n\n// Process Status API (PSAPI)\n//sys\tenumProcesses(processIds *uint32, nSize uint32, bytesReturned *uint32) (err error) = psapi.EnumProcesses\n//sys\tEnumProcessModules(process Handle, module *Handle, cb uint32, cbNeeded *uint32) (err error) = psapi.EnumProcessModules\n//sys\tEnumProcessModulesEx(process Handle, module *Handle, cb uint32, cbNeeded *uint32, filterFlag uint32) (err error) = psapi.EnumProcessModulesEx\n//sys\tGetModuleInformation(process Handle, module Handle, modinfo *ModuleInfo, cb uint32) (err error) = psapi.GetModuleInformation\n//sys\tGetModuleFileNameEx(process Handle, module Handle, filename *uint16, size uint32) (err error) = psapi.GetModuleFileNameExW\n//sys\tGetModuleBaseName(process Handle, module Handle, baseName *uint16, size uint32) (err error) = psapi.GetModuleBaseNameW\n//sys   QueryWorkingSetEx(process Handle, pv uintptr, cb uint32) (err error) = psapi.QueryWorkingSetEx\n\n// NT Native APIs\n//sys\trtlNtStatusToDosErrorNoTeb(ntstatus NTStatus) (ret syscall.Errno) = ntdll.RtlNtStatusToDosErrorNoTeb\n//sys\trtlGetVersion(info *OsVersionInfoEx) (ntstatus error) = ntdll.RtlGetVersion\n//sys\trtlGetNtVersionNumbers(majorVersion *uint32, minorVersion *uint32, buildNumber *uint32) = ntdll.RtlGetNtVersionNumbers\n//sys\tRtlGetCurrentPeb() (peb *PEB) = ntdll.RtlGetCurrentPeb\n//sys\tRtlInitUnicodeString(destinationString *NTUnicodeString, sourceString *uint16) = ntdll.RtlInitUnicodeString\n//sys\tRtlInitString(destinationString *NTString, sourceString *byte) = ntdll.RtlInitString\n//sys\tNtCreateFile(handle *Handle, access uint32, oa *OBJECT_ATTRIBUTES, iosb *IO_STATUS_BLOCK, allocationSize *int64, attributes uint32, share uint32, disposition uint32, options uint32, eabuffer uintptr, ealength uint32) (ntstatus error) = ntdll.NtCreateFile\n//sys\tNtCreateNamedPipeFile(pipe *Handle, access uint32, oa *OBJECT_ATTRIBUTES, iosb *IO_STATUS_BLOCK, share uint32, disposition uint32, options uint32, typ uint32, readMode uint32, completionMode uint32, maxInstances uint32, inboundQuota uint32, outputQuota uint32, timeout *int64) (ntstatus error) = ntdll.NtCreateNamedPipeFile\n//sys\tNtSetInformationFile(handle Handle, iosb *IO_STATUS_BLOCK, inBuffer *byte, inBufferLen uint32, class uint32) (ntstatus error) = ntdll.NtSetInformationFile\n//sys\tRtlDosPathNameToNtPathName(dosName *uint16, ntName *NTUnicodeString, ntFileNamePart *uint16, relativeName *RTL_RELATIVE_NAME) (ntstatus error) = ntdll.RtlDosPathNameToNtPathName_U_WithStatus\n//sys\tRtlDosPathNameToRelativeNtPathName(dosName *uint16, ntName *NTUnicodeString, ntFileNamePart *uint16, relativeName *RTL_RELATIVE_NAME) (ntstatus error) = ntdll.RtlDosPathNameToRelativeNtPathName_U_WithStatus\n//sys\tRtlDefaultNpAcl(acl **ACL) (ntstatus error) = ntdll.RtlDefaultNpAcl\n//sys\tNtQueryInformationProcess(proc Handle, procInfoClass int32, procInfo unsafe.Pointer, procInfoLen uint32, retLen *uint32) (ntstatus error) = ntdll.NtQueryInformationProcess\n//sys\tNtSetInformationProcess(proc Handle, procInfoClass int32, procInfo unsafe.Pointer, procInfoLen uint32) (ntstatus error) = ntdll.NtSetInformationProcess\n//sys\tNtQuerySystemInformation(sysInfoClass int32, sysInfo unsafe.Pointer, sysInfoLen uint32, retLen *uint32) (ntstatus error) = ntdll.NtQuerySystemInformation\n//sys\tNtSetSystemInformation(sysInfoClass int32, sysInfo unsafe.Pointer, sysInfoLen uint32) (ntstatus error) = ntdll.NtSetSystemInformation\n//sys\tRtlAddFunctionTable(functionTable *RUNTIME_FUNCTION, entryCount uint32, baseAddress uintptr) (ret bool) = ntdll.RtlAddFunctionTable\n//sys\tRtlDeleteFunctionTable(functionTable *RUNTIME_FUNCTION) (ret bool) = ntdll.RtlDeleteFunctionTable\n\n// Desktop Window Manager API (Dwmapi)\n//sys\tDwmGetWindowAttribute(hwnd HWND, attribute uint32, value unsafe.Pointer, size uint32) (ret error) = dwmapi.DwmGetWindowAttribute\n//sys\tDwmSetWindowAttribute(hwnd HWND, attribute uint32, value unsafe.Pointer, size uint32) (ret error) = dwmapi.DwmSetWindowAttribute\n\n// Windows Multimedia API\n//sys TimeBeginPeriod (period uint32) (err error) [failretval != 0] = winmm.timeBeginPeriod\n//sys TimeEndPeriod (period uint32) (err error) [failretval != 0] = winmm.timeEndPeriod\n\n// syscall interface implementation for other packages\n\n// GetCurrentProcess returns the handle for the current process.\n// It is a pseudo handle that does not need to be closed.\n// The returned error is always nil.\n//\n// Deprecated: use CurrentProcess for the same Handle without the nil\n// error.\nfunc GetCurrentProcess() (Handle, error) {\n\treturn CurrentProcess(), nil\n}\n\n// CurrentProcess returns the handle for the current process.\n// It is a pseudo handle that does not need to be closed.\nfunc CurrentProcess() Handle { return Handle(^uintptr(1 - 1)) }\n\n// GetCurrentThread returns the handle for the current thread.\n// It is a pseudo handle that does not need to be closed.\n// The returned error is always nil.\n//\n// Deprecated: use CurrentThread for the same Handle without the nil\n// error.\nfunc GetCurrentThread() (Handle, error) {\n\treturn CurrentThread(), nil\n}\n\n// CurrentThread returns the handle for the current thread.\n// It is a pseudo handle that does not need to be closed.\nfunc CurrentThread() Handle { return Handle(^uintptr(2 - 1)) }\n\n// GetProcAddressByOrdinal retrieves the address of the exported\n// function from module by ordinal.\nfunc GetProcAddressByOrdinal(module Handle, ordinal uintptr) (proc uintptr, err error) {\n\tr0, _, e1 := syscall.Syscall(procGetProcAddress.Addr(), 2, uintptr(module), ordinal, 0)\n\tproc = uintptr(r0)\n\tif proc == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc Exit(code int) { ExitProcess(uint32(code)) }\n\nfunc makeInheritSa() *SecurityAttributes {\n\tvar sa SecurityAttributes\n\tsa.Length = uint32(unsafe.Sizeof(sa))\n\tsa.InheritHandle = 1\n\treturn &sa\n}\n\nfunc Open(path string, mode int, perm uint32) (fd Handle, err error) {\n\tif len(path) == 0 {\n\t\treturn InvalidHandle, ERROR_FILE_NOT_FOUND\n\t}\n\tpathp, err := UTF16PtrFromString(path)\n\tif err != nil {\n\t\treturn InvalidHandle, err\n\t}\n\tvar access uint32\n\tswitch mode & (O_RDONLY | O_WRONLY | O_RDWR) {\n\tcase O_RDONLY:\n\t\taccess = GENERIC_READ\n\tcase O_WRONLY:\n\t\taccess = GENERIC_WRITE\n\tcase O_RDWR:\n\t\taccess = GENERIC_READ | GENERIC_WRITE\n\t}\n\tif mode&O_CREAT != 0 {\n\t\taccess |= GENERIC_WRITE\n\t}\n\tif mode&O_APPEND != 0 {\n\t\taccess &^= GENERIC_WRITE\n\t\taccess |= FILE_APPEND_DATA\n\t}\n\tsharemode := uint32(FILE_SHARE_READ | FILE_SHARE_WRITE)\n\tvar sa *SecurityAttributes\n\tif mode&O_CLOEXEC == 0 {\n\t\tsa = makeInheritSa()\n\t}\n\tvar createmode uint32\n\tswitch {\n\tcase mode&(O_CREAT|O_EXCL) == (O_CREAT | O_EXCL):\n\t\tcreatemode = CREATE_NEW\n\tcase mode&(O_CREAT|O_TRUNC) == (O_CREAT | O_TRUNC):\n\t\tcreatemode = CREATE_ALWAYS\n\tcase mode&O_CREAT == O_CREAT:\n\t\tcreatemode = OPEN_ALWAYS\n\tcase mode&O_TRUNC == O_TRUNC:\n\t\tcreatemode = TRUNCATE_EXISTING\n\tdefault:\n\t\tcreatemode = OPEN_EXISTING\n\t}\n\tvar attrs uint32 = FILE_ATTRIBUTE_NORMAL\n\tif perm&S_IWRITE == 0 {\n\t\tattrs = FILE_ATTRIBUTE_READONLY\n\t}\n\th, e := CreateFile(pathp, access, sharemode, sa, createmode, attrs, 0)\n\treturn h, e\n}\n\nfunc Read(fd Handle, p []byte) (n int, err error) {\n\tvar done uint32\n\te := ReadFile(fd, p, &done, nil)\n\tif e != nil {\n\t\tif e == ERROR_BROKEN_PIPE {\n\t\t\t// NOTE(brainman): work around ERROR_BROKEN_PIPE is returned on reading EOF from stdin\n\t\t\treturn 0, nil\n\t\t}\n\t\treturn 0, e\n\t}\n\treturn int(done), nil\n}\n\nfunc Write(fd Handle, p []byte) (n int, err error) {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\tvar done uint32\n\te := WriteFile(fd, p, &done, nil)\n\tif e != nil {\n\t\treturn 0, e\n\t}\n\treturn int(done), nil\n}\n\nfunc ReadFile(fd Handle, p []byte, done *uint32, overlapped *Overlapped) error {\n\terr := readFile(fd, p, done, overlapped)\n\tif raceenabled {\n\t\tif *done > 0 {\n\t\t\traceWriteRange(unsafe.Pointer(&p[0]), int(*done))\n\t\t}\n\t\traceAcquire(unsafe.Pointer(&ioSync))\n\t}\n\treturn err\n}\n\nfunc WriteFile(fd Handle, p []byte, done *uint32, overlapped *Overlapped) error {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\terr := writeFile(fd, p, done, overlapped)\n\tif raceenabled && *done > 0 {\n\t\traceReadRange(unsafe.Pointer(&p[0]), int(*done))\n\t}\n\treturn err\n}\n\nvar ioSync int64\n\nfunc Seek(fd Handle, offset int64, whence int) (newoffset int64, err error) {\n\tvar w uint32\n\tswitch whence {\n\tcase 0:\n\t\tw = FILE_BEGIN\n\tcase 1:\n\t\tw = FILE_CURRENT\n\tcase 2:\n\t\tw = FILE_END\n\t}\n\thi := int32(offset >> 32)\n\tlo := int32(offset)\n\t// use GetFileType to check pipe, pipe can't do seek\n\tft, _ := GetFileType(fd)\n\tif ft == FILE_TYPE_PIPE {\n\t\treturn 0, syscall.EPIPE\n\t}\n\trlo, e := SetFilePointer(fd, lo, &hi, w)\n\tif e != nil {\n\t\treturn 0, e\n\t}\n\treturn int64(hi)<<32 + int64(rlo), nil\n}\n\nfunc Close(fd Handle) (err error) {\n\treturn CloseHandle(fd)\n}\n\nvar (\n\tStdin  = getStdHandle(STD_INPUT_HANDLE)\n\tStdout = getStdHandle(STD_OUTPUT_HANDLE)\n\tStderr = getStdHandle(STD_ERROR_HANDLE)\n)\n\nfunc getStdHandle(stdhandle uint32) (fd Handle) {\n\tr, _ := GetStdHandle(stdhandle)\n\treturn r\n}\n\nconst ImplementsGetwd = true\n\nfunc Getwd() (wd string, err error) {\n\tb := make([]uint16, 300)\n\tn, e := GetCurrentDirectory(uint32(len(b)), &b[0])\n\tif e != nil {\n\t\treturn \"\", e\n\t}\n\treturn string(utf16.Decode(b[0:n])), nil\n}\n\nfunc Chdir(path string) (err error) {\n\tpathp, err := UTF16PtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn SetCurrentDirectory(pathp)\n}\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tpathp, err := UTF16PtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn CreateDirectory(pathp, nil)\n}\n\nfunc Rmdir(path string) (err error) {\n\tpathp, err := UTF16PtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn RemoveDirectory(pathp)\n}\n\nfunc Unlink(path string) (err error) {\n\tpathp, err := UTF16PtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn DeleteFile(pathp)\n}\n\nfunc Rename(oldpath, newpath string) (err error) {\n\tfrom, err := UTF16PtrFromString(oldpath)\n\tif err != nil {\n\t\treturn err\n\t}\n\tto, err := UTF16PtrFromString(newpath)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn MoveFileEx(from, to, MOVEFILE_REPLACE_EXISTING)\n}\n\nfunc ComputerName() (name string, err error) {\n\tvar n uint32 = MAX_COMPUTERNAME_LENGTH + 1\n\tb := make([]uint16, n)\n\te := GetComputerName(&b[0], &n)\n\tif e != nil {\n\t\treturn \"\", e\n\t}\n\treturn string(utf16.Decode(b[0:n])), nil\n}\n\nfunc DurationSinceBoot() time.Duration {\n\treturn time.Duration(getTickCount64()) * time.Millisecond\n}\n\nfunc Ftruncate(fd Handle, length int64) (err error) {\n\ttype _FILE_END_OF_FILE_INFO struct {\n\t\tEndOfFile int64\n\t}\n\tvar info _FILE_END_OF_FILE_INFO\n\tinfo.EndOfFile = length\n\treturn SetFileInformationByHandle(fd, FileEndOfFileInfo, (*byte)(unsafe.Pointer(&info)), uint32(unsafe.Sizeof(info)))\n}\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\tvar ft Filetime\n\tGetSystemTimeAsFileTime(&ft)\n\t*tv = NsecToTimeval(ft.Nanoseconds())\n\treturn nil\n}\n\nfunc Pipe(p []Handle) (err error) {\n\tif len(p) != 2 {\n\t\treturn syscall.EINVAL\n\t}\n\tvar r, w Handle\n\te := CreatePipe(&r, &w, makeInheritSa(), 0)\n\tif e != nil {\n\t\treturn e\n\t}\n\tp[0] = r\n\tp[1] = w\n\treturn nil\n}\n\nfunc Utimes(path string, tv []Timeval) (err error) {\n\tif len(tv) != 2 {\n\t\treturn syscall.EINVAL\n\t}\n\tpathp, e := UTF16PtrFromString(path)\n\tif e != nil {\n\t\treturn e\n\t}\n\th, e := CreateFile(pathp,\n\t\tFILE_WRITE_ATTRIBUTES, FILE_SHARE_WRITE, nil,\n\t\tOPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0)\n\tif e != nil {\n\t\treturn e\n\t}\n\tdefer CloseHandle(h)\n\ta := NsecToFiletime(tv[0].Nanoseconds())\n\tw := NsecToFiletime(tv[1].Nanoseconds())\n\treturn SetFileTime(h, nil, &a, &w)\n}\n\nfunc UtimesNano(path string, ts []Timespec) (err error) {\n\tif len(ts) != 2 {\n\t\treturn syscall.EINVAL\n\t}\n\tpathp, e := UTF16PtrFromString(path)\n\tif e != nil {\n\t\treturn e\n\t}\n\th, e := CreateFile(pathp,\n\t\tFILE_WRITE_ATTRIBUTES, FILE_SHARE_WRITE, nil,\n\t\tOPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0)\n\tif e != nil {\n\t\treturn e\n\t}\n\tdefer CloseHandle(h)\n\ta := NsecToFiletime(TimespecToNsec(ts[0]))\n\tw := NsecToFiletime(TimespecToNsec(ts[1]))\n\treturn SetFileTime(h, nil, &a, &w)\n}\n\nfunc Fsync(fd Handle) (err error) {\n\treturn FlushFileBuffers(fd)\n}\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tp, e := UTF16PtrFromString(path)\n\tif e != nil {\n\t\treturn e\n\t}\n\tattrs, e := GetFileAttributes(p)\n\tif e != nil {\n\t\treturn e\n\t}\n\tif mode&S_IWRITE != 0 {\n\t\tattrs &^= FILE_ATTRIBUTE_READONLY\n\t} else {\n\t\tattrs |= FILE_ATTRIBUTE_READONLY\n\t}\n\treturn SetFileAttributes(p, attrs)\n}\n\nfunc LoadGetSystemTimePreciseAsFileTime() error {\n\treturn procGetSystemTimePreciseAsFileTime.Find()\n}\n\nfunc LoadCancelIoEx() error {\n\treturn procCancelIoEx.Find()\n}\n\nfunc LoadSetFileCompletionNotificationModes() error {\n\treturn procSetFileCompletionNotificationModes.Find()\n}\n\nfunc WaitForMultipleObjects(handles []Handle, waitAll bool, waitMilliseconds uint32) (event uint32, err error) {\n\t// Every other win32 array API takes arguments as \"pointer, count\", except for this function. So we\n\t// can't declare it as a usual [] type, because mksyscall will use the opposite order. We therefore\n\t// trivially stub this ourselves.\n\n\tvar handlePtr *Handle\n\tif len(handles) > 0 {\n\t\thandlePtr = &handles[0]\n\t}\n\treturn waitForMultipleObjects(uint32(len(handles)), uintptr(unsafe.Pointer(handlePtr)), waitAll, waitMilliseconds)\n}\n\n// net api calls\n\nconst socket_error = uintptr(^uint32(0))\n\n//sys\tWSAStartup(verreq uint32, data *WSAData) (sockerr error) = ws2_32.WSAStartup\n//sys\tWSACleanup() (err error) [failretval==socket_error] = ws2_32.WSACleanup\n//sys\tWSAIoctl(s Handle, iocc uint32, inbuf *byte, cbif uint32, outbuf *byte, cbob uint32, cbbr *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) [failretval==socket_error] = ws2_32.WSAIoctl\n//sys\tWSALookupServiceBegin(querySet *WSAQUERYSET, flags uint32, handle *Handle) (err error) [failretval==socket_error] = ws2_32.WSALookupServiceBeginW\n//sys\tWSALookupServiceNext(handle Handle, flags uint32, size *int32, querySet *WSAQUERYSET) (err error) [failretval==socket_error] = ws2_32.WSALookupServiceNextW\n//sys\tWSALookupServiceEnd(handle Handle) (err error) [failretval==socket_error] = ws2_32.WSALookupServiceEnd\n//sys\tsocket(af int32, typ int32, protocol int32) (handle Handle, err error) [failretval==InvalidHandle] = ws2_32.socket\n//sys\tsendto(s Handle, buf []byte, flags int32, to unsafe.Pointer, tolen int32) (err error) [failretval==socket_error] = ws2_32.sendto\n//sys\trecvfrom(s Handle, buf []byte, flags int32, from *RawSockaddrAny, fromlen *int32) (n int32, err error) [failretval==-1] = ws2_32.recvfrom\n//sys\tSetsockopt(s Handle, level int32, optname int32, optval *byte, optlen int32) (err error) [failretval==socket_error] = ws2_32.setsockopt\n//sys\tGetsockopt(s Handle, level int32, optname int32, optval *byte, optlen *int32) (err error) [failretval==socket_error] = ws2_32.getsockopt\n//sys\tbind(s Handle, name unsafe.Pointer, namelen int32) (err error) [failretval==socket_error] = ws2_32.bind\n//sys\tconnect(s Handle, name unsafe.Pointer, namelen int32) (err error) [failretval==socket_error] = ws2_32.connect\n//sys\tgetsockname(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) [failretval==socket_error] = ws2_32.getsockname\n//sys\tgetpeername(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) [failretval==socket_error] = ws2_32.getpeername\n//sys\tlisten(s Handle, backlog int32) (err error) [failretval==socket_error] = ws2_32.listen\n//sys\tshutdown(s Handle, how int32) (err error) [failretval==socket_error] = ws2_32.shutdown\n//sys\tClosesocket(s Handle) (err error) [failretval==socket_error] = ws2_32.closesocket\n//sys\tAcceptEx(ls Handle, as Handle, buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, recvd *uint32, overlapped *Overlapped) (err error) = mswsock.AcceptEx\n//sys\tGetAcceptExSockaddrs(buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, lrsa **RawSockaddrAny, lrsalen *int32, rrsa **RawSockaddrAny, rrsalen *int32) = mswsock.GetAcceptExSockaddrs\n//sys\tWSARecv(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSARecv\n//sys\tWSASend(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSASend\n//sys\tWSARecvFrom(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32,  from *RawSockaddrAny, fromlen *int32, overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSARecvFrom\n//sys\tWSASendTo(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, to *RawSockaddrAny, tolen int32,  overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSASendTo\n//sys\tWSASocket(af int32, typ int32, protocol int32, protoInfo *WSAProtocolInfo, group uint32, flags uint32) (handle Handle, err error) [failretval==InvalidHandle] = ws2_32.WSASocketW\n//sys\tWSADuplicateSocket(s Handle, processID uint32, info *WSAProtocolInfo) (err error) [failretval!=0] = ws2_32.WSADuplicateSocketW\n//sys\tGetHostByName(name string) (h *Hostent, err error) [failretval==nil] = ws2_32.gethostbyname\n//sys\tGetServByName(name string, proto string) (s *Servent, err error) [failretval==nil] = ws2_32.getservbyname\n//sys\tNtohs(netshort uint16) (u uint16) = ws2_32.ntohs\n//sys\tGetProtoByName(name string) (p *Protoent, err error) [failretval==nil] = ws2_32.getprotobyname\n//sys\tDnsQuery(name string, qtype uint16, options uint32, extra *byte, qrs **DNSRecord, pr *byte) (status error) = dnsapi.DnsQuery_W\n//sys\tDnsRecordListFree(rl *DNSRecord, freetype uint32) = dnsapi.DnsRecordListFree\n//sys\tDnsNameCompare(name1 *uint16, name2 *uint16) (same bool) = dnsapi.DnsNameCompare_W\n//sys\tGetAddrInfoW(nodename *uint16, servicename *uint16, hints *AddrinfoW, result **AddrinfoW) (sockerr error) = ws2_32.GetAddrInfoW\n//sys\tFreeAddrInfoW(addrinfo *AddrinfoW) = ws2_32.FreeAddrInfoW\n//sys\tGetIfEntry(pIfRow *MibIfRow) (errcode error) = iphlpapi.GetIfEntry\n//sys\tGetAdaptersInfo(ai *IpAdapterInfo, ol *uint32) (errcode error) = iphlpapi.GetAdaptersInfo\n//sys\tSetFileCompletionNotificationModes(handle Handle, flags uint8) (err error) = kernel32.SetFileCompletionNotificationModes\n//sys\tWSAEnumProtocols(protocols *int32, protocolBuffer *WSAProtocolInfo, bufferLength *uint32) (n int32, err error) [failretval==-1] = ws2_32.WSAEnumProtocolsW\n//sys\tWSAGetOverlappedResult(h Handle, o *Overlapped, bytes *uint32, wait bool, flags *uint32) (err error) = ws2_32.WSAGetOverlappedResult\n//sys\tGetAdaptersAddresses(family uint32, flags uint32, reserved uintptr, adapterAddresses *IpAdapterAddresses, sizePointer *uint32) (errcode error) = iphlpapi.GetAdaptersAddresses\n//sys\tGetACP() (acp uint32) = kernel32.GetACP\n//sys\tMultiByteToWideChar(codePage uint32, dwFlags uint32, str *byte, nstr int32, wchar *uint16, nwchar int32) (nwrite int32, err error) = kernel32.MultiByteToWideChar\n//sys\tgetBestInterfaceEx(sockaddr unsafe.Pointer, pdwBestIfIndex *uint32) (errcode error) = iphlpapi.GetBestInterfaceEx\n//sys   GetIfEntry2Ex(level uint32, row *MibIfRow2) (errcode error) = iphlpapi.GetIfEntry2Ex\n//sys   GetIpForwardEntry2(row *MibIpForwardRow2) (errcode error) = iphlpapi.GetIpForwardEntry2\n//sys   GetIpForwardTable2(family uint16, table **MibIpForwardTable2) (errcode error) = iphlpapi.GetIpForwardTable2\n//sys   GetUnicastIpAddressEntry(row *MibUnicastIpAddressRow) (errcode error) = iphlpapi.GetUnicastIpAddressEntry\n//sys   FreeMibTable(memory unsafe.Pointer) = iphlpapi.FreeMibTable\n//sys   NotifyIpInterfaceChange(family uint16, callback uintptr, callerContext unsafe.Pointer, initialNotification bool, notificationHandle *Handle) (errcode error) = iphlpapi.NotifyIpInterfaceChange\n//sys   NotifyRouteChange2(family uint16, callback uintptr, callerContext unsafe.Pointer, initialNotification bool, notificationHandle *Handle) (errcode error) = iphlpapi.NotifyRouteChange2\n//sys   NotifyUnicastIpAddressChange(family uint16, callback uintptr, callerContext unsafe.Pointer, initialNotification bool, notificationHandle *Handle) (errcode error) = iphlpapi.NotifyUnicastIpAddressChange\n//sys   CancelMibChangeNotify2(notificationHandle Handle) (errcode error) = iphlpapi.CancelMibChangeNotify2\n//sys\tIsProcessorFeaturePresent(ProcessorFeature uint32) (ret bool) = kernel32.IsProcessorFeaturePresent\n\n// For testing: clients can set this flag to force\n// creation of IPv6 sockets to return EAFNOSUPPORT.\nvar SocketDisableIPv6 bool\n\ntype RawSockaddrInet4 struct {\n\tFamily uint16\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]uint8\n}\n\ntype RawSockaddrInet6 struct {\n\tFamily   uint16\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\n// RawSockaddrInet is a union that contains an IPv4, an IPv6 address, or an address family. See\n// https://learn.microsoft.com/en-us/windows/win32/api/ws2ipdef/ns-ws2ipdef-sockaddr_inet.\n//\n// A [*RawSockaddrInet] may be converted to a [*RawSockaddrInet4] or [*RawSockaddrInet6] using\n// unsafe, depending on the address family.\ntype RawSockaddrInet struct {\n\tFamily uint16\n\tPort   uint16\n\tData   [6]uint32\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [100]int8\n}\n\ntype Sockaddr interface {\n\tsockaddr() (ptr unsafe.Pointer, len int32, err error) // lowercase; only we can define Sockaddrs\n}\n\ntype SockaddrInet4 struct {\n\tPort int\n\tAddr [4]byte\n\traw  RawSockaddrInet4\n}\n\nfunc (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, int32, error) {\n\tif sa.Port < 0 || sa.Port > 0xFFFF {\n\t\treturn nil, 0, syscall.EINVAL\n\t}\n\tsa.raw.Family = AF_INET\n\tp := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))\n\tp[0] = byte(sa.Port >> 8)\n\tp[1] = byte(sa.Port)\n\tsa.raw.Addr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), int32(unsafe.Sizeof(sa.raw)), nil\n}\n\ntype SockaddrInet6 struct {\n\tPort   int\n\tZoneId uint32\n\tAddr   [16]byte\n\traw    RawSockaddrInet6\n}\n\nfunc (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, int32, error) {\n\tif sa.Port < 0 || sa.Port > 0xFFFF {\n\t\treturn nil, 0, syscall.EINVAL\n\t}\n\tsa.raw.Family = AF_INET6\n\tp := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))\n\tp[0] = byte(sa.Port >> 8)\n\tp[1] = byte(sa.Port)\n\tsa.raw.Scope_id = sa.ZoneId\n\tsa.raw.Addr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), int32(unsafe.Sizeof(sa.raw)), nil\n}\n\ntype RawSockaddrUnix struct {\n\tFamily uint16\n\tPath   [UNIX_PATH_MAX]int8\n}\n\ntype SockaddrUnix struct {\n\tName string\n\traw  RawSockaddrUnix\n}\n\nfunc (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, int32, error) {\n\tname := sa.Name\n\tn := len(name)\n\tif n > len(sa.raw.Path) {\n\t\treturn nil, 0, syscall.EINVAL\n\t}\n\tif n == len(sa.raw.Path) && name[0] != '@' {\n\t\treturn nil, 0, syscall.EINVAL\n\t}\n\tsa.raw.Family = AF_UNIX\n\tfor i := 0; i < n; i++ {\n\t\tsa.raw.Path[i] = int8(name[i])\n\t}\n\t// length is family (uint16), name, NUL.\n\tsl := int32(2)\n\tif n > 0 {\n\t\tsl += int32(n) + 1\n\t}\n\tif sa.raw.Path[0] == '@' || (sa.raw.Path[0] == 0 && sl > 3) {\n\t\t// Check sl > 3 so we don't change unnamed socket behavior.\n\t\tsa.raw.Path[0] = 0\n\t\t// Don't count trailing NUL for abstract address.\n\t\tsl--\n\t}\n\n\treturn unsafe.Pointer(&sa.raw), sl, nil\n}\n\ntype RawSockaddrBth struct {\n\tAddressFamily  [2]byte\n\tBtAddr         [8]byte\n\tServiceClassId [16]byte\n\tPort           [4]byte\n}\n\ntype SockaddrBth struct {\n\tBtAddr         uint64\n\tServiceClassId GUID\n\tPort           uint32\n\n\traw RawSockaddrBth\n}\n\nfunc (sa *SockaddrBth) sockaddr() (unsafe.Pointer, int32, error) {\n\tfamily := AF_BTH\n\tsa.raw = RawSockaddrBth{\n\t\tAddressFamily:  *(*[2]byte)(unsafe.Pointer(&family)),\n\t\tBtAddr:         *(*[8]byte)(unsafe.Pointer(&sa.BtAddr)),\n\t\tPort:           *(*[4]byte)(unsafe.Pointer(&sa.Port)),\n\t\tServiceClassId: *(*[16]byte)(unsafe.Pointer(&sa.ServiceClassId)),\n\t}\n\treturn unsafe.Pointer(&sa.raw), int32(unsafe.Sizeof(sa.raw)), nil\n}\n\nfunc (rsa *RawSockaddrAny) Sockaddr() (Sockaddr, error) {\n\tswitch rsa.Addr.Family {\n\tcase AF_UNIX:\n\t\tpp := (*RawSockaddrUnix)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrUnix)\n\t\tif pp.Path[0] == 0 {\n\t\t\t// \"Abstract\" Unix domain socket.\n\t\t\t// Rewrite leading NUL as @ for textual display.\n\t\t\t// (This is the standard convention.)\n\t\t\t// Not friendly to overwrite in place,\n\t\t\t// but the callers below don't care.\n\t\t\tpp.Path[0] = '@'\n\t\t}\n\n\t\t// Assume path ends at NUL.\n\t\t// This is not technically the Linux semantics for\n\t\t// abstract Unix domain sockets--they are supposed\n\t\t// to be uninterpreted fixed-size binary blobs--but\n\t\t// everyone uses this convention.\n\t\tn := 0\n\t\tfor n < len(pp.Path) && pp.Path[n] != 0 {\n\t\t\tn++\n\t\t}\n\t\tsa.Name = string(unsafe.Slice((*byte)(unsafe.Pointer(&pp.Path[0])), n))\n\t\treturn sa, nil\n\n\tcase AF_INET:\n\t\tpp := (*RawSockaddrInet4)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrInet4)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tsa.Addr = pp.Addr\n\t\treturn sa, nil\n\n\tcase AF_INET6:\n\t\tpp := (*RawSockaddrInet6)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrInet6)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tsa.ZoneId = pp.Scope_id\n\t\tsa.Addr = pp.Addr\n\t\treturn sa, nil\n\t}\n\treturn nil, syscall.EAFNOSUPPORT\n}\n\nfunc Socket(domain, typ, proto int) (fd Handle, err error) {\n\tif domain == AF_INET6 && SocketDisableIPv6 {\n\t\treturn InvalidHandle, syscall.EAFNOSUPPORT\n\t}\n\treturn socket(int32(domain), int32(typ), int32(proto))\n}\n\nfunc SetsockoptInt(fd Handle, level, opt int, value int) (err error) {\n\tv := int32(value)\n\treturn Setsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(&v)), int32(unsafe.Sizeof(v)))\n}\n\nfunc Bind(fd Handle, sa Sockaddr) (err error) {\n\tptr, n, err := sa.sockaddr()\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn bind(fd, ptr, n)\n}\n\nfunc Connect(fd Handle, sa Sockaddr) (err error) {\n\tptr, n, err := sa.sockaddr()\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn connect(fd, ptr, n)\n}\n\nfunc GetBestInterfaceEx(sa Sockaddr, pdwBestIfIndex *uint32) (err error) {\n\tptr, _, err := sa.sockaddr()\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn getBestInterfaceEx(ptr, pdwBestIfIndex)\n}\n\nfunc Getsockname(fd Handle) (sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tl := int32(unsafe.Sizeof(rsa))\n\tif err = getsockname(fd, &rsa, &l); err != nil {\n\t\treturn\n\t}\n\treturn rsa.Sockaddr()\n}\n\nfunc Getpeername(fd Handle) (sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tl := int32(unsafe.Sizeof(rsa))\n\tif err = getpeername(fd, &rsa, &l); err != nil {\n\t\treturn\n\t}\n\treturn rsa.Sockaddr()\n}\n\nfunc Listen(s Handle, n int) (err error) {\n\treturn listen(s, int32(n))\n}\n\nfunc Shutdown(fd Handle, how int) (err error) {\n\treturn shutdown(fd, int32(how))\n}\n\nfunc WSASendto(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, to Sockaddr, overlapped *Overlapped, croutine *byte) (err error) {\n\tvar rsa unsafe.Pointer\n\tvar l int32\n\tif to != nil {\n\t\trsa, l, err = to.sockaddr()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn WSASendTo(s, bufs, bufcnt, sent, flags, (*RawSockaddrAny)(unsafe.Pointer(rsa)), l, overlapped, croutine)\n}\n\nfunc LoadGetAddrInfo() error {\n\treturn procGetAddrInfoW.Find()\n}\n\nvar connectExFunc struct {\n\tonce sync.Once\n\taddr uintptr\n\terr  error\n}\n\nfunc LoadConnectEx() error {\n\tconnectExFunc.once.Do(func() {\n\t\tvar s Handle\n\t\ts, connectExFunc.err = Socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)\n\t\tif connectExFunc.err != nil {\n\t\t\treturn\n\t\t}\n\t\tdefer CloseHandle(s)\n\t\tvar n uint32\n\t\tconnectExFunc.err = WSAIoctl(s,\n\t\t\tSIO_GET_EXTENSION_FUNCTION_POINTER,\n\t\t\t(*byte)(unsafe.Pointer(&WSAID_CONNECTEX)),\n\t\t\tuint32(unsafe.Sizeof(WSAID_CONNECTEX)),\n\t\t\t(*byte)(unsafe.Pointer(&connectExFunc.addr)),\n\t\t\tuint32(unsafe.Sizeof(connectExFunc.addr)),\n\t\t\t&n, nil, 0)\n\t})\n\treturn connectExFunc.err\n}\n\nfunc connectEx(s Handle, name unsafe.Pointer, namelen int32, sendBuf *byte, sendDataLen uint32, bytesSent *uint32, overlapped *Overlapped) (err error) {\n\tr1, _, e1 := syscall.Syscall9(connectExFunc.addr, 7, uintptr(s), uintptr(name), uintptr(namelen), uintptr(unsafe.Pointer(sendBuf)), uintptr(sendDataLen), uintptr(unsafe.Pointer(bytesSent)), uintptr(unsafe.Pointer(overlapped)), 0, 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = error(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc ConnectEx(fd Handle, sa Sockaddr, sendBuf *byte, sendDataLen uint32, bytesSent *uint32, overlapped *Overlapped) error {\n\terr := LoadConnectEx()\n\tif err != nil {\n\t\treturn errorspkg.New(\"failed to find ConnectEx: \" + err.Error())\n\t}\n\tptr, n, err := sa.sockaddr()\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn connectEx(fd, ptr, n, sendBuf, sendDataLen, bytesSent, overlapped)\n}\n\nvar sendRecvMsgFunc struct {\n\tonce     sync.Once\n\tsendAddr uintptr\n\trecvAddr uintptr\n\terr      error\n}\n\nfunc loadWSASendRecvMsg() error {\n\tsendRecvMsgFunc.once.Do(func() {\n\t\tvar s Handle\n\t\ts, sendRecvMsgFunc.err = Socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)\n\t\tif sendRecvMsgFunc.err != nil {\n\t\t\treturn\n\t\t}\n\t\tdefer CloseHandle(s)\n\t\tvar n uint32\n\t\tsendRecvMsgFunc.err = WSAIoctl(s,\n\t\t\tSIO_GET_EXTENSION_FUNCTION_POINTER,\n\t\t\t(*byte)(unsafe.Pointer(&WSAID_WSARECVMSG)),\n\t\t\tuint32(unsafe.Sizeof(WSAID_WSARECVMSG)),\n\t\t\t(*byte)(unsafe.Pointer(&sendRecvMsgFunc.recvAddr)),\n\t\t\tuint32(unsafe.Sizeof(sendRecvMsgFunc.recvAddr)),\n\t\t\t&n, nil, 0)\n\t\tif sendRecvMsgFunc.err != nil {\n\t\t\treturn\n\t\t}\n\t\tsendRecvMsgFunc.err = WSAIoctl(s,\n\t\t\tSIO_GET_EXTENSION_FUNCTION_POINTER,\n\t\t\t(*byte)(unsafe.Pointer(&WSAID_WSASENDMSG)),\n\t\t\tuint32(unsafe.Sizeof(WSAID_WSASENDMSG)),\n\t\t\t(*byte)(unsafe.Pointer(&sendRecvMsgFunc.sendAddr)),\n\t\t\tuint32(unsafe.Sizeof(sendRecvMsgFunc.sendAddr)),\n\t\t\t&n, nil, 0)\n\t})\n\treturn sendRecvMsgFunc.err\n}\n\nfunc WSASendMsg(fd Handle, msg *WSAMsg, flags uint32, bytesSent *uint32, overlapped *Overlapped, croutine *byte) error {\n\terr := loadWSASendRecvMsg()\n\tif err != nil {\n\t\treturn err\n\t}\n\tr1, _, e1 := syscall.Syscall6(sendRecvMsgFunc.sendAddr, 6, uintptr(fd), uintptr(unsafe.Pointer(msg)), uintptr(flags), uintptr(unsafe.Pointer(bytesSent)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)))\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn err\n}\n\nfunc WSARecvMsg(fd Handle, msg *WSAMsg, bytesReceived *uint32, overlapped *Overlapped, croutine *byte) error {\n\terr := loadWSASendRecvMsg()\n\tif err != nil {\n\t\treturn err\n\t}\n\tr1, _, e1 := syscall.Syscall6(sendRecvMsgFunc.recvAddr, 5, uintptr(fd), uintptr(unsafe.Pointer(msg)), uintptr(unsafe.Pointer(bytesReceived)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)), 0)\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn err\n}\n\n// Invented structures to support what package os expects.\ntype Rusage struct {\n\tCreationTime Filetime\n\tExitTime     Filetime\n\tKernelTime   Filetime\n\tUserTime     Filetime\n}\n\ntype WaitStatus struct {\n\tExitCode uint32\n}\n\nfunc (w WaitStatus) Exited() bool { return true }\n\nfunc (w WaitStatus) ExitStatus() int { return int(w.ExitCode) }\n\nfunc (w WaitStatus) Signal() Signal { return -1 }\n\nfunc (w WaitStatus) CoreDump() bool { return false }\n\nfunc (w WaitStatus) Stopped() bool { return false }\n\nfunc (w WaitStatus) Continued() bool { return false }\n\nfunc (w WaitStatus) StopSignal() Signal { return -1 }\n\nfunc (w WaitStatus) Signaled() bool { return false }\n\nfunc (w WaitStatus) TrapCause() int { return -1 }\n\n// Timespec is an invented structure on Windows, but here for\n// consistency with the corresponding package for other operating systems.\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\nfunc TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }\n\nfunc NsecToTimespec(nsec int64) (ts Timespec) {\n\tts.Sec = nsec / 1e9\n\tts.Nsec = nsec % 1e9\n\treturn\n}\n\n// TODO(brainman): fix all needed for net\n\nfunc Accept(fd Handle) (nfd Handle, sa Sockaddr, err error) { return 0, nil, syscall.EWINDOWS }\n\nfunc Recvfrom(fd Handle, p []byte, flags int) (n int, from Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tl := int32(unsafe.Sizeof(rsa))\n\tn32, err := recvfrom(fd, p, int32(flags), &rsa, &l)\n\tn = int(n32)\n\tif err != nil {\n\t\treturn\n\t}\n\tfrom, err = rsa.Sockaddr()\n\treturn\n}\n\nfunc Sendto(fd Handle, p []byte, flags int, to Sockaddr) (err error) {\n\tptr, l, err := to.sockaddr()\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn sendto(fd, p, int32(flags), ptr, l)\n}\n\nfunc SetsockoptTimeval(fd Handle, level, opt int, tv *Timeval) (err error) { return syscall.EWINDOWS }\n\n// The Linger struct is wrong but we only noticed after Go 1.\n// sysLinger is the real system call structure.\n\n// BUG(brainman): The definition of Linger is not appropriate for direct use\n// with Setsockopt and Getsockopt.\n// Use SetsockoptLinger instead.\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype sysLinger struct {\n\tOnoff  uint16\n\tLinger uint16\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\nfunc GetsockoptInt(fd Handle, level, opt int) (int, error) {\n\tv := int32(0)\n\tl := int32(unsafe.Sizeof(v))\n\terr := Getsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(&v)), &l)\n\treturn int(v), err\n}\n\nfunc SetsockoptLinger(fd Handle, level, opt int, l *Linger) (err error) {\n\tsys := sysLinger{Onoff: uint16(l.Onoff), Linger: uint16(l.Linger)}\n\treturn Setsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(&sys)), int32(unsafe.Sizeof(sys)))\n}\n\nfunc SetsockoptInet4Addr(fd Handle, level, opt int, value [4]byte) (err error) {\n\treturn Setsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(&value[0])), 4)\n}\n\nfunc SetsockoptIPMreq(fd Handle, level, opt int, mreq *IPMreq) (err error) {\n\treturn Setsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(mreq)), int32(unsafe.Sizeof(*mreq)))\n}\n\nfunc SetsockoptIPv6Mreq(fd Handle, level, opt int, mreq *IPv6Mreq) (err error) {\n\treturn syscall.EWINDOWS\n}\n\nfunc EnumProcesses(processIds []uint32, bytesReturned *uint32) error {\n\t// EnumProcesses syscall expects the size parameter to be in bytes, but the code generated with mksyscall uses\n\t// the length of the processIds slice instead. Hence, this wrapper function is added to fix the discrepancy.\n\tvar p *uint32\n\tif len(processIds) > 0 {\n\t\tp = &processIds[0]\n\t}\n\tsize := uint32(len(processIds) * 4)\n\treturn enumProcesses(p, size, bytesReturned)\n}\n\nfunc Getpid() (pid int) { return int(GetCurrentProcessId()) }\n\nfunc FindFirstFile(name *uint16, data *Win32finddata) (handle Handle, err error) {\n\t// NOTE(rsc): The Win32finddata struct is wrong for the system call:\n\t// the two paths are each one uint16 short. Use the correct struct,\n\t// a win32finddata1, and then copy the results out.\n\t// There is no loss of expressivity here, because the final\n\t// uint16, if it is used, is supposed to be a NUL, and Go doesn't need that.\n\t// For Go 1.1, we might avoid the allocation of win32finddata1 here\n\t// by adding a final Bug [2]uint16 field to the struct and then\n\t// adjusting the fields in the result directly.\n\tvar data1 win32finddata1\n\thandle, err = findFirstFile1(name, &data1)\n\tif err == nil {\n\t\tcopyFindData(data, &data1)\n\t}\n\treturn\n}\n\nfunc FindNextFile(handle Handle, data *Win32finddata) (err error) {\n\tvar data1 win32finddata1\n\terr = findNextFile1(handle, &data1)\n\tif err == nil {\n\t\tcopyFindData(data, &data1)\n\t}\n\treturn\n}\n\nfunc getProcessEntry(pid int) (*ProcessEntry32, error) {\n\tsnapshot, err := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer CloseHandle(snapshot)\n\tvar procEntry ProcessEntry32\n\tprocEntry.Size = uint32(unsafe.Sizeof(procEntry))\n\tif err = Process32First(snapshot, &procEntry); err != nil {\n\t\treturn nil, err\n\t}\n\tfor {\n\t\tif procEntry.ProcessID == uint32(pid) {\n\t\t\treturn &procEntry, nil\n\t\t}\n\t\terr = Process32Next(snapshot, &procEntry)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n}\n\nfunc Getppid() (ppid int) {\n\tpe, err := getProcessEntry(Getpid())\n\tif err != nil {\n\t\treturn -1\n\t}\n\treturn int(pe.ParentProcessID)\n}\n\n// TODO(brainman): fix all needed for os\nfunc Fchdir(fd Handle) (err error)             { return syscall.EWINDOWS }\nfunc Link(oldpath, newpath string) (err error) { return syscall.EWINDOWS }\nfunc Symlink(path, link string) (err error)    { return syscall.EWINDOWS }\n\nfunc Fchmod(fd Handle, mode uint32) (err error)        { return syscall.EWINDOWS }\nfunc Chown(path string, uid int, gid int) (err error)  { return syscall.EWINDOWS }\nfunc Lchown(path string, uid int, gid int) (err error) { return syscall.EWINDOWS }\nfunc Fchown(fd Handle, uid int, gid int) (err error)   { return syscall.EWINDOWS }\n\nfunc Getuid() (uid int)                  { return -1 }\nfunc Geteuid() (euid int)                { return -1 }\nfunc Getgid() (gid int)                  { return -1 }\nfunc Getegid() (egid int)                { return -1 }\nfunc Getgroups() (gids []int, err error) { return nil, syscall.EWINDOWS }\n\ntype Signal int\n\nfunc (s Signal) Signal() {}\n\nfunc (s Signal) String() string {\n\tif 0 <= s && int(s) < len(signals) {\n\t\tstr := signals[s]\n\t\tif str != \"\" {\n\t\t\treturn str\n\t\t}\n\t}\n\treturn \"signal \" + itoa(int(s))\n}\n\nfunc LoadCreateSymbolicLink() error {\n\treturn procCreateSymbolicLinkW.Find()\n}\n\n// Readlink returns the destination of the named symbolic link.\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tfd, err := CreateFile(StringToUTF16Ptr(path), GENERIC_READ, 0, nil, OPEN_EXISTING,\n\t\tFILE_FLAG_OPEN_REPARSE_POINT|FILE_FLAG_BACKUP_SEMANTICS, 0)\n\tif err != nil {\n\t\treturn -1, err\n\t}\n\tdefer CloseHandle(fd)\n\n\trdbbuf := make([]byte, MAXIMUM_REPARSE_DATA_BUFFER_SIZE)\n\tvar bytesReturned uint32\n\terr = DeviceIoControl(fd, FSCTL_GET_REPARSE_POINT, nil, 0, &rdbbuf[0], uint32(len(rdbbuf)), &bytesReturned, nil)\n\tif err != nil {\n\t\treturn -1, err\n\t}\n\n\trdb := (*reparseDataBuffer)(unsafe.Pointer(&rdbbuf[0]))\n\tvar s string\n\tswitch rdb.ReparseTag {\n\tcase IO_REPARSE_TAG_SYMLINK:\n\t\tdata := (*symbolicLinkReparseBuffer)(unsafe.Pointer(&rdb.reparseBuffer))\n\t\tp := (*[0xffff]uint16)(unsafe.Pointer(&data.PathBuffer[0]))\n\t\ts = UTF16ToString(p[data.PrintNameOffset/2 : (data.PrintNameLength-data.PrintNameOffset)/2])\n\tcase IO_REPARSE_TAG_MOUNT_POINT:\n\t\tdata := (*mountPointReparseBuffer)(unsafe.Pointer(&rdb.reparseBuffer))\n\t\tp := (*[0xffff]uint16)(unsafe.Pointer(&data.PathBuffer[0]))\n\t\ts = UTF16ToString(p[data.PrintNameOffset/2 : (data.PrintNameLength-data.PrintNameOffset)/2])\n\tdefault:\n\t\t// the path is not a symlink or junction but another type of reparse\n\t\t// point\n\t\treturn -1, syscall.ENOENT\n\t}\n\tn = copy(buf, []byte(s))\n\n\treturn n, nil\n}\n\n// GUIDFromString parses a string in the form of\n// \"{XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}\" into a GUID.\nfunc GUIDFromString(str string) (GUID, error) {\n\tguid := GUID{}\n\tstr16, err := syscall.UTF16PtrFromString(str)\n\tif err != nil {\n\t\treturn guid, err\n\t}\n\terr = clsidFromString(str16, &guid)\n\tif err != nil {\n\t\treturn guid, err\n\t}\n\treturn guid, nil\n}\n\n// GenerateGUID creates a new random GUID.\nfunc GenerateGUID() (GUID, error) {\n\tguid := GUID{}\n\terr := coCreateGuid(&guid)\n\tif err != nil {\n\t\treturn guid, err\n\t}\n\treturn guid, nil\n}\n\n// String returns the canonical string form of the GUID,\n// in the form of \"{XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}\".\nfunc (guid GUID) String() string {\n\tvar str [100]uint16\n\tchars := stringFromGUID2(&guid, &str[0], int32(len(str)))\n\tif chars <= 1 {\n\t\treturn \"\"\n\t}\n\treturn string(utf16.Decode(str[:chars-1]))\n}\n\n// KnownFolderPath returns a well-known folder path for the current user, specified by one of\n// the FOLDERID_ constants, and chosen and optionally created based on a KF_ flag.\nfunc KnownFolderPath(folderID *KNOWNFOLDERID, flags uint32) (string, error) {\n\treturn Token(0).KnownFolderPath(folderID, flags)\n}\n\n// KnownFolderPath returns a well-known folder path for the user token, specified by one of\n// the FOLDERID_ constants, and chosen and optionally created based on a KF_ flag.\nfunc (t Token) KnownFolderPath(folderID *KNOWNFOLDERID, flags uint32) (string, error) {\n\tvar p *uint16\n\terr := shGetKnownFolderPath(folderID, flags, t, &p)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tdefer CoTaskMemFree(unsafe.Pointer(p))\n\treturn UTF16PtrToString(p), nil\n}\n\n// RtlGetVersion returns the version of the underlying operating system, ignoring\n// manifest semantics but is affected by the application compatibility layer.\nfunc RtlGetVersion() *OsVersionInfoEx {\n\tinfo := &OsVersionInfoEx{}\n\tinfo.osVersionInfoSize = uint32(unsafe.Sizeof(*info))\n\t// According to documentation, this function always succeeds.\n\t// The function doesn't even check the validity of the\n\t// osVersionInfoSize member. Disassembling ntdll.dll indicates\n\t// that the documentation is indeed correct about that.\n\t_ = rtlGetVersion(info)\n\treturn info\n}\n\n// RtlGetNtVersionNumbers returns the version of the underlying operating system,\n// ignoring manifest semantics and the application compatibility layer.\nfunc RtlGetNtVersionNumbers() (majorVersion, minorVersion, buildNumber uint32) {\n\trtlGetNtVersionNumbers(&majorVersion, &minorVersion, &buildNumber)\n\tbuildNumber &= 0xffff\n\treturn\n}\n\n// GetProcessPreferredUILanguages retrieves the process preferred UI languages.\nfunc GetProcessPreferredUILanguages(flags uint32) ([]string, error) {\n\treturn getUILanguages(flags, getProcessPreferredUILanguages)\n}\n\n// GetThreadPreferredUILanguages retrieves the thread preferred UI languages for the current thread.\nfunc GetThreadPreferredUILanguages(flags uint32) ([]string, error) {\n\treturn getUILanguages(flags, getThreadPreferredUILanguages)\n}\n\n// GetUserPreferredUILanguages retrieves information about the user preferred UI languages.\nfunc GetUserPreferredUILanguages(flags uint32) ([]string, error) {\n\treturn getUILanguages(flags, getUserPreferredUILanguages)\n}\n\n// GetSystemPreferredUILanguages retrieves the system preferred UI languages.\nfunc GetSystemPreferredUILanguages(flags uint32) ([]string, error) {\n\treturn getUILanguages(flags, getSystemPreferredUILanguages)\n}\n\nfunc getUILanguages(flags uint32, f func(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) error) ([]string, error) {\n\tsize := uint32(128)\n\tfor {\n\t\tvar numLanguages uint32\n\t\tbuf := make([]uint16, size)\n\t\terr := f(flags, &numLanguages, &buf[0], &size)\n\t\tif err == ERROR_INSUFFICIENT_BUFFER {\n\t\t\tcontinue\n\t\t}\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tbuf = buf[:size]\n\t\tif numLanguages == 0 || len(buf) == 0 { // GetProcessPreferredUILanguages may return numLanguages==0 with \"\\0\\0\"\n\t\t\treturn []string{}, nil\n\t\t}\n\t\tif buf[len(buf)-1] == 0 {\n\t\t\tbuf = buf[:len(buf)-1] // remove terminating null\n\t\t}\n\t\tlanguages := make([]string, 0, numLanguages)\n\t\tfrom := 0\n\t\tfor i, c := range buf {\n\t\t\tif c == 0 {\n\t\t\t\tlanguages = append(languages, string(utf16.Decode(buf[from:i])))\n\t\t\t\tfrom = i + 1\n\t\t\t}\n\t\t}\n\t\treturn languages, nil\n\t}\n}\n\nfunc SetConsoleCursorPosition(console Handle, position Coord) error {\n\treturn setConsoleCursorPosition(console, *((*uint32)(unsafe.Pointer(&position))))\n}\n\nfunc GetStartupInfo(startupInfo *StartupInfo) error {\n\tgetStartupInfo(startupInfo)\n\treturn nil\n}\n\nfunc (s NTStatus) Errno() syscall.Errno {\n\treturn rtlNtStatusToDosErrorNoTeb(s)\n}\n\nfunc langID(pri, sub uint16) uint32 { return uint32(sub)<<10 | uint32(pri) }\n\nfunc (s NTStatus) Error() string {\n\tb := make([]uint16, 300)\n\tn, err := FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_FROM_HMODULE|FORMAT_MESSAGE_ARGUMENT_ARRAY, modntdll.Handle(), uint32(s), langID(LANG_ENGLISH, SUBLANG_ENGLISH_US), b, nil)\n\tif err != nil {\n\t\treturn fmt.Sprintf(\"NTSTATUS 0x%08x\", uint32(s))\n\t}\n\t// trim terminating \\r and \\n\n\tfor ; n > 0 && (b[n-1] == '\\n' || b[n-1] == '\\r'); n-- {\n\t}\n\treturn string(utf16.Decode(b[:n]))\n}\n\n// NewNTUnicodeString returns a new NTUnicodeString structure for use with native\n// NT APIs that work over the NTUnicodeString type. Note that most Windows APIs\n// do not use NTUnicodeString, and instead UTF16PtrFromString should be used for\n// the more common *uint16 string type.\nfunc NewNTUnicodeString(s string) (*NTUnicodeString, error) {\n\ts16, err := UTF16FromString(s)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tn := uint16(len(s16) * 2)\n\treturn &NTUnicodeString{\n\t\tLength:        n - 2, // subtract 2 bytes for the NULL terminator\n\t\tMaximumLength: n,\n\t\tBuffer:        &s16[0],\n\t}, nil\n}\n\n// Slice returns a uint16 slice that aliases the data in the NTUnicodeString.\nfunc (s *NTUnicodeString) Slice() []uint16 {\n\t// Note: this rounds the length down, if it happens\n\t// to (incorrectly) be odd. Probably safer than rounding up.\n\treturn unsafe.Slice(s.Buffer, s.MaximumLength/2)[:s.Length/2]\n}\n\nfunc (s *NTUnicodeString) String() string {\n\treturn UTF16ToString(s.Slice())\n}\n\n// NewNTString returns a new NTString structure for use with native\n// NT APIs that work over the NTString type. Note that most Windows APIs\n// do not use NTString, and instead UTF16PtrFromString should be used for\n// the more common *uint16 string type.\nfunc NewNTString(s string) (*NTString, error) {\n\tvar nts NTString\n\ts8, err := BytePtrFromString(s)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tRtlInitString(&nts, s8)\n\treturn &nts, nil\n}\n\n// Slice returns a byte slice that aliases the data in the NTString.\nfunc (s *NTString) Slice() []byte {\n\tslice := unsafe.Slice(s.Buffer, s.MaximumLength)\n\treturn slice[:s.Length]\n}\n\nfunc (s *NTString) String() string {\n\treturn ByteSliceToString(s.Slice())\n}\n\n// FindResource resolves a resource of the given name and resource type.\nfunc FindResource(module Handle, name, resType ResourceIDOrString) (Handle, error) {\n\tvar namePtr, resTypePtr uintptr\n\tvar name16, resType16 *uint16\n\tvar err error\n\tresolvePtr := func(i interface{}, keep **uint16) (uintptr, error) {\n\t\tswitch v := i.(type) {\n\t\tcase string:\n\t\t\t*keep, err = UTF16PtrFromString(v)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\treturn uintptr(unsafe.Pointer(*keep)), nil\n\t\tcase ResourceID:\n\t\t\treturn uintptr(v), nil\n\t\t}\n\t\treturn 0, errorspkg.New(\"parameter must be a ResourceID or a string\")\n\t}\n\tnamePtr, err = resolvePtr(name, &name16)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tresTypePtr, err = resolvePtr(resType, &resType16)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tresInfo, err := findResource(module, namePtr, resTypePtr)\n\truntime.KeepAlive(name16)\n\truntime.KeepAlive(resType16)\n\treturn resInfo, err\n}\n\nfunc LoadResourceData(module, resInfo Handle) (data []byte, err error) {\n\tsize, err := SizeofResource(module, resInfo)\n\tif err != nil {\n\t\treturn\n\t}\n\tresData, err := LoadResource(module, resInfo)\n\tif err != nil {\n\t\treturn\n\t}\n\tptr, err := LockResource(resData)\n\tif err != nil {\n\t\treturn\n\t}\n\tdata = unsafe.Slice((*byte)(unsafe.Pointer(ptr)), size)\n\treturn\n}\n\n// PSAPI_WORKING_SET_EX_BLOCK contains extended working set information for a page.\ntype PSAPI_WORKING_SET_EX_BLOCK uint64\n\n// Valid returns the validity of this page.\n// If this bit is 1, the subsequent members are valid; otherwise they should be ignored.\nfunc (b PSAPI_WORKING_SET_EX_BLOCK) Valid() bool {\n\treturn (b & 1) == 1\n}\n\n// ShareCount is the number of processes that share this page. The maximum value of this member is 7.\nfunc (b PSAPI_WORKING_SET_EX_BLOCK) ShareCount() uint64 {\n\treturn b.intField(1, 3)\n}\n\n// Win32Protection is the memory protection attributes of the page. For a list of values, see\n// https://docs.microsoft.com/en-us/windows/win32/memory/memory-protection-constants\nfunc (b PSAPI_WORKING_SET_EX_BLOCK) Win32Protection() uint64 {\n\treturn b.intField(4, 11)\n}\n\n// Shared returns the shared status of this page.\n// If this bit is 1, the page can be shared.\nfunc (b PSAPI_WORKING_SET_EX_BLOCK) Shared() bool {\n\treturn (b & (1 << 15)) == 1\n}\n\n// Node is the NUMA node. The maximum value of this member is 63.\nfunc (b PSAPI_WORKING_SET_EX_BLOCK) Node() uint64 {\n\treturn b.intField(16, 6)\n}\n\n// Locked returns the locked status of this page.\n// If this bit is 1, the virtual page is locked in physical memory.\nfunc (b PSAPI_WORKING_SET_EX_BLOCK) Locked() bool {\n\treturn (b & (1 << 22)) == 1\n}\n\n// LargePage returns the large page status of this page.\n// If this bit is 1, the page is a large page.\nfunc (b PSAPI_WORKING_SET_EX_BLOCK) LargePage() bool {\n\treturn (b & (1 << 23)) == 1\n}\n\n// Bad returns the bad status of this page.\n// If this bit is 1, the page is has been reported as bad.\nfunc (b PSAPI_WORKING_SET_EX_BLOCK) Bad() bool {\n\treturn (b & (1 << 31)) == 1\n}\n\n// intField extracts an integer field in the PSAPI_WORKING_SET_EX_BLOCK union.\nfunc (b PSAPI_WORKING_SET_EX_BLOCK) intField(start, length int) uint64 {\n\tvar mask PSAPI_WORKING_SET_EX_BLOCK\n\tfor pos := start; pos < start+length; pos++ {\n\t\tmask |= (1 << pos)\n\t}\n\n\tmasked := b & mask\n\treturn uint64(masked >> start)\n}\n\n// PSAPI_WORKING_SET_EX_INFORMATION contains extended working set information for a process.\ntype PSAPI_WORKING_SET_EX_INFORMATION struct {\n\t// The virtual address.\n\tVirtualAddress Pointer\n\t// A PSAPI_WORKING_SET_EX_BLOCK union that indicates the attributes of the page at VirtualAddress.\n\tVirtualAttributes PSAPI_WORKING_SET_EX_BLOCK\n}\n\n// CreatePseudoConsole creates a windows pseudo console.\nfunc CreatePseudoConsole(size Coord, in Handle, out Handle, flags uint32, pconsole *Handle) error {\n\t// We need this wrapper to manually cast Coord to uint32. The autogenerated wrappers only\n\t// accept arguments that can be casted to uintptr, and Coord can't.\n\treturn createPseudoConsole(*((*uint32)(unsafe.Pointer(&size))), in, out, flags, pconsole)\n}\n\n// ResizePseudoConsole resizes the internal buffers of the pseudo console to the width and height specified in `size`.\nfunc ResizePseudoConsole(pconsole Handle, size Coord) error {\n\t// We need this wrapper to manually cast Coord to uint32. The autogenerated wrappers only\n\t// accept arguments that can be casted to uintptr, and Coord can't.\n\treturn resizePseudoConsole(pconsole, *((*uint32)(unsafe.Pointer(&size))))\n}\n\n// DCB constants. See https://learn.microsoft.com/en-us/windows/win32/api/winbase/ns-winbase-dcb.\nconst (\n\tCBR_110    = 110\n\tCBR_300    = 300\n\tCBR_600    = 600\n\tCBR_1200   = 1200\n\tCBR_2400   = 2400\n\tCBR_4800   = 4800\n\tCBR_9600   = 9600\n\tCBR_14400  = 14400\n\tCBR_19200  = 19200\n\tCBR_38400  = 38400\n\tCBR_57600  = 57600\n\tCBR_115200 = 115200\n\tCBR_128000 = 128000\n\tCBR_256000 = 256000\n\n\tDTR_CONTROL_DISABLE   = 0x00000000\n\tDTR_CONTROL_ENABLE    = 0x00000010\n\tDTR_CONTROL_HANDSHAKE = 0x00000020\n\n\tRTS_CONTROL_DISABLE   = 0x00000000\n\tRTS_CONTROL_ENABLE    = 0x00001000\n\tRTS_CONTROL_HANDSHAKE = 0x00002000\n\tRTS_CONTROL_TOGGLE    = 0x00003000\n\n\tNOPARITY    = 0\n\tODDPARITY   = 1\n\tEVENPARITY  = 2\n\tMARKPARITY  = 3\n\tSPACEPARITY = 4\n\n\tONESTOPBIT   = 0\n\tONE5STOPBITS = 1\n\tTWOSTOPBITS  = 2\n)\n\n// EscapeCommFunction constants. See https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-escapecommfunction.\nconst (\n\tSETXOFF  = 1\n\tSETXON   = 2\n\tSETRTS   = 3\n\tCLRRTS   = 4\n\tSETDTR   = 5\n\tCLRDTR   = 6\n\tSETBREAK = 8\n\tCLRBREAK = 9\n)\n\n// PurgeComm constants. See https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-purgecomm.\nconst (\n\tPURGE_TXABORT = 0x0001\n\tPURGE_RXABORT = 0x0002\n\tPURGE_TXCLEAR = 0x0004\n\tPURGE_RXCLEAR = 0x0008\n)\n\n// SetCommMask constants. See https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-setcommmask.\nconst (\n\tEV_RXCHAR  = 0x0001\n\tEV_RXFLAG  = 0x0002\n\tEV_TXEMPTY = 0x0004\n\tEV_CTS     = 0x0008\n\tEV_DSR     = 0x0010\n\tEV_RLSD    = 0x0020\n\tEV_BREAK   = 0x0040\n\tEV_ERR     = 0x0080\n\tEV_RING    = 0x0100\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/types_windows.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage windows\n\nimport (\n\t\"net\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// NTStatus corresponds with NTSTATUS, error values returned by ntdll.dll and\n// other native functions.\ntype NTStatus uint32\n\nconst (\n\t// Invented values to support what package os expects.\n\tO_RDONLY   = 0x00000\n\tO_WRONLY   = 0x00001\n\tO_RDWR     = 0x00002\n\tO_CREAT    = 0x00040\n\tO_EXCL     = 0x00080\n\tO_NOCTTY   = 0x00100\n\tO_TRUNC    = 0x00200\n\tO_NONBLOCK = 0x00800\n\tO_APPEND   = 0x00400\n\tO_SYNC     = 0x01000\n\tO_ASYNC    = 0x02000\n\tO_CLOEXEC  = 0x80000\n)\n\nconst (\n\t// More invented values for signals\n\tSIGHUP  = Signal(0x1)\n\tSIGINT  = Signal(0x2)\n\tSIGQUIT = Signal(0x3)\n\tSIGILL  = Signal(0x4)\n\tSIGTRAP = Signal(0x5)\n\tSIGABRT = Signal(0x6)\n\tSIGBUS  = Signal(0x7)\n\tSIGFPE  = Signal(0x8)\n\tSIGKILL = Signal(0x9)\n\tSIGSEGV = Signal(0xb)\n\tSIGPIPE = Signal(0xd)\n\tSIGALRM = Signal(0xe)\n\tSIGTERM = Signal(0xf)\n)\n\nvar signals = [...]string{\n\t1:  \"hangup\",\n\t2:  \"interrupt\",\n\t3:  \"quit\",\n\t4:  \"illegal instruction\",\n\t5:  \"trace/breakpoint trap\",\n\t6:  \"aborted\",\n\t7:  \"bus error\",\n\t8:  \"floating point exception\",\n\t9:  \"killed\",\n\t10: \"user defined signal 1\",\n\t11: \"segmentation fault\",\n\t12: \"user defined signal 2\",\n\t13: \"broken pipe\",\n\t14: \"alarm clock\",\n\t15: \"terminated\",\n}\n\n// File flags for [os.OpenFile]. The O_ prefix is used to indicate\n// that these flags are specific to the OpenFile function.\nconst (\n\tO_FILE_FLAG_OPEN_NO_RECALL     = FILE_FLAG_OPEN_NO_RECALL\n\tO_FILE_FLAG_OPEN_REPARSE_POINT = FILE_FLAG_OPEN_REPARSE_POINT\n\tO_FILE_FLAG_SESSION_AWARE      = FILE_FLAG_SESSION_AWARE\n\tO_FILE_FLAG_POSIX_SEMANTICS    = FILE_FLAG_POSIX_SEMANTICS\n\tO_FILE_FLAG_BACKUP_SEMANTICS   = FILE_FLAG_BACKUP_SEMANTICS\n\tO_FILE_FLAG_DELETE_ON_CLOSE    = FILE_FLAG_DELETE_ON_CLOSE\n\tO_FILE_FLAG_SEQUENTIAL_SCAN    = FILE_FLAG_SEQUENTIAL_SCAN\n\tO_FILE_FLAG_RANDOM_ACCESS      = FILE_FLAG_RANDOM_ACCESS\n\tO_FILE_FLAG_NO_BUFFERING       = FILE_FLAG_NO_BUFFERING\n\tO_FILE_FLAG_OVERLAPPED         = FILE_FLAG_OVERLAPPED\n\tO_FILE_FLAG_WRITE_THROUGH      = FILE_FLAG_WRITE_THROUGH\n)\n\nconst (\n\tFILE_READ_DATA        = 0x00000001\n\tFILE_READ_ATTRIBUTES  = 0x00000080\n\tFILE_READ_EA          = 0x00000008\n\tFILE_WRITE_DATA       = 0x00000002\n\tFILE_WRITE_ATTRIBUTES = 0x00000100\n\tFILE_WRITE_EA         = 0x00000010\n\tFILE_APPEND_DATA      = 0x00000004\n\tFILE_EXECUTE          = 0x00000020\n\n\tFILE_GENERIC_READ    = STANDARD_RIGHTS_READ | FILE_READ_DATA | FILE_READ_ATTRIBUTES | FILE_READ_EA | SYNCHRONIZE\n\tFILE_GENERIC_WRITE   = STANDARD_RIGHTS_WRITE | FILE_WRITE_DATA | FILE_WRITE_ATTRIBUTES | FILE_WRITE_EA | FILE_APPEND_DATA | SYNCHRONIZE\n\tFILE_GENERIC_EXECUTE = STANDARD_RIGHTS_EXECUTE | FILE_READ_ATTRIBUTES | FILE_EXECUTE | SYNCHRONIZE\n\n\tFILE_LIST_DIRECTORY = 0x00000001\n\tFILE_TRAVERSE       = 0x00000020\n\n\tFILE_SHARE_READ   = 0x00000001\n\tFILE_SHARE_WRITE  = 0x00000002\n\tFILE_SHARE_DELETE = 0x00000004\n\n\tFILE_ATTRIBUTE_READONLY              = 0x00000001\n\tFILE_ATTRIBUTE_HIDDEN                = 0x00000002\n\tFILE_ATTRIBUTE_SYSTEM                = 0x00000004\n\tFILE_ATTRIBUTE_DIRECTORY             = 0x00000010\n\tFILE_ATTRIBUTE_ARCHIVE               = 0x00000020\n\tFILE_ATTRIBUTE_DEVICE                = 0x00000040\n\tFILE_ATTRIBUTE_NORMAL                = 0x00000080\n\tFILE_ATTRIBUTE_TEMPORARY             = 0x00000100\n\tFILE_ATTRIBUTE_SPARSE_FILE           = 0x00000200\n\tFILE_ATTRIBUTE_REPARSE_POINT         = 0x00000400\n\tFILE_ATTRIBUTE_COMPRESSED            = 0x00000800\n\tFILE_ATTRIBUTE_OFFLINE               = 0x00001000\n\tFILE_ATTRIBUTE_NOT_CONTENT_INDEXED   = 0x00002000\n\tFILE_ATTRIBUTE_ENCRYPTED             = 0x00004000\n\tFILE_ATTRIBUTE_INTEGRITY_STREAM      = 0x00008000\n\tFILE_ATTRIBUTE_VIRTUAL               = 0x00010000\n\tFILE_ATTRIBUTE_NO_SCRUB_DATA         = 0x00020000\n\tFILE_ATTRIBUTE_RECALL_ON_OPEN        = 0x00040000\n\tFILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS = 0x00400000\n\n\tINVALID_FILE_ATTRIBUTES = 0xffffffff\n\n\tCREATE_NEW        = 1\n\tCREATE_ALWAYS     = 2\n\tOPEN_EXISTING     = 3\n\tOPEN_ALWAYS       = 4\n\tTRUNCATE_EXISTING = 5\n\n\tFILE_FLAG_OPEN_REQUIRING_OPLOCK = 0x00040000\n\tFILE_FLAG_FIRST_PIPE_INSTANCE   = 0x00080000\n\tFILE_FLAG_OPEN_NO_RECALL        = 0x00100000\n\tFILE_FLAG_OPEN_REPARSE_POINT    = 0x00200000\n\tFILE_FLAG_SESSION_AWARE         = 0x00800000\n\tFILE_FLAG_POSIX_SEMANTICS       = 0x01000000\n\tFILE_FLAG_BACKUP_SEMANTICS      = 0x02000000\n\tFILE_FLAG_DELETE_ON_CLOSE       = 0x04000000\n\tFILE_FLAG_SEQUENTIAL_SCAN       = 0x08000000\n\tFILE_FLAG_RANDOM_ACCESS         = 0x10000000\n\tFILE_FLAG_NO_BUFFERING          = 0x20000000\n\tFILE_FLAG_OVERLAPPED            = 0x40000000\n\tFILE_FLAG_WRITE_THROUGH         = 0x80000000\n\n\tHANDLE_FLAG_INHERIT    = 0x00000001\n\tSTARTF_USESTDHANDLES   = 0x00000100\n\tSTARTF_USESHOWWINDOW   = 0x00000001\n\tDUPLICATE_CLOSE_SOURCE = 0x00000001\n\tDUPLICATE_SAME_ACCESS  = 0x00000002\n\n\tSTD_INPUT_HANDLE  = -10 & (1<<32 - 1)\n\tSTD_OUTPUT_HANDLE = -11 & (1<<32 - 1)\n\tSTD_ERROR_HANDLE  = -12 & (1<<32 - 1)\n\n\tFILE_BEGIN   = 0\n\tFILE_CURRENT = 1\n\tFILE_END     = 2\n\n\tLANG_ENGLISH       = 0x09\n\tSUBLANG_ENGLISH_US = 0x01\n\n\tFORMAT_MESSAGE_ALLOCATE_BUFFER = 256\n\tFORMAT_MESSAGE_IGNORE_INSERTS  = 512\n\tFORMAT_MESSAGE_FROM_STRING     = 1024\n\tFORMAT_MESSAGE_FROM_HMODULE    = 2048\n\tFORMAT_MESSAGE_FROM_SYSTEM     = 4096\n\tFORMAT_MESSAGE_ARGUMENT_ARRAY  = 8192\n\tFORMAT_MESSAGE_MAX_WIDTH_MASK  = 255\n\n\tMAX_PATH      = 260\n\tMAX_LONG_PATH = 32768\n\n\tMAX_MODULE_NAME32 = 255\n\n\tMAX_COMPUTERNAME_LENGTH = 15\n\n\tMAX_DHCPV6_DUID_LENGTH = 130\n\n\tMAX_DNS_SUFFIX_STRING_LENGTH = 256\n\n\tTIME_ZONE_ID_UNKNOWN  = 0\n\tTIME_ZONE_ID_STANDARD = 1\n\n\tTIME_ZONE_ID_DAYLIGHT = 2\n\tIGNORE                = 0\n\tINFINITE              = 0xffffffff\n\n\tWAIT_ABANDONED = 0x00000080\n\tWAIT_OBJECT_0  = 0x00000000\n\tWAIT_FAILED    = 0xFFFFFFFF\n\n\t// Access rights for process.\n\tPROCESS_ALL_ACCESS                = 0xFFFF\n\tPROCESS_CREATE_PROCESS            = 0x0080\n\tPROCESS_CREATE_THREAD             = 0x0002\n\tPROCESS_DUP_HANDLE                = 0x0040\n\tPROCESS_QUERY_INFORMATION         = 0x0400\n\tPROCESS_QUERY_LIMITED_INFORMATION = 0x1000\n\tPROCESS_SET_INFORMATION           = 0x0200\n\tPROCESS_SET_QUOTA                 = 0x0100\n\tPROCESS_SUSPEND_RESUME            = 0x0800\n\tPROCESS_TERMINATE                 = 0x0001\n\tPROCESS_VM_OPERATION              = 0x0008\n\tPROCESS_VM_READ                   = 0x0010\n\tPROCESS_VM_WRITE                  = 0x0020\n\n\t// Access rights for thread.\n\tTHREAD_DIRECT_IMPERSONATION      = 0x0200\n\tTHREAD_GET_CONTEXT               = 0x0008\n\tTHREAD_IMPERSONATE               = 0x0100\n\tTHREAD_QUERY_INFORMATION         = 0x0040\n\tTHREAD_QUERY_LIMITED_INFORMATION = 0x0800\n\tTHREAD_SET_CONTEXT               = 0x0010\n\tTHREAD_SET_INFORMATION           = 0x0020\n\tTHREAD_SET_LIMITED_INFORMATION   = 0x0400\n\tTHREAD_SET_THREAD_TOKEN          = 0x0080\n\tTHREAD_SUSPEND_RESUME            = 0x0002\n\tTHREAD_TERMINATE                 = 0x0001\n\n\tFILE_MAP_COPY    = 0x01\n\tFILE_MAP_WRITE   = 0x02\n\tFILE_MAP_READ    = 0x04\n\tFILE_MAP_EXECUTE = 0x20\n\n\tCTRL_C_EVENT        = 0\n\tCTRL_BREAK_EVENT    = 1\n\tCTRL_CLOSE_EVENT    = 2\n\tCTRL_LOGOFF_EVENT   = 5\n\tCTRL_SHUTDOWN_EVENT = 6\n\n\t// Windows reserves errors >= 1<<29 for application use.\n\tAPPLICATION_ERROR = 1 << 29\n)\n\nconst (\n\t// Process creation flags.\n\tCREATE_BREAKAWAY_FROM_JOB        = 0x01000000\n\tCREATE_DEFAULT_ERROR_MODE        = 0x04000000\n\tCREATE_NEW_CONSOLE               = 0x00000010\n\tCREATE_NEW_PROCESS_GROUP         = 0x00000200\n\tCREATE_NO_WINDOW                 = 0x08000000\n\tCREATE_PROTECTED_PROCESS         = 0x00040000\n\tCREATE_PRESERVE_CODE_AUTHZ_LEVEL = 0x02000000\n\tCREATE_SEPARATE_WOW_VDM          = 0x00000800\n\tCREATE_SHARED_WOW_VDM            = 0x00001000\n\tCREATE_SUSPENDED                 = 0x00000004\n\tCREATE_UNICODE_ENVIRONMENT       = 0x00000400\n\tDEBUG_ONLY_THIS_PROCESS          = 0x00000002\n\tDEBUG_PROCESS                    = 0x00000001\n\tDETACHED_PROCESS                 = 0x00000008\n\tEXTENDED_STARTUPINFO_PRESENT     = 0x00080000\n\tINHERIT_PARENT_AFFINITY          = 0x00010000\n)\n\nconst (\n\t// attributes for ProcThreadAttributeList\n\tPROC_THREAD_ATTRIBUTE_PARENT_PROCESS    = 0x00020000\n\tPROC_THREAD_ATTRIBUTE_HANDLE_LIST       = 0x00020002\n\tPROC_THREAD_ATTRIBUTE_GROUP_AFFINITY    = 0x00030003\n\tPROC_THREAD_ATTRIBUTE_PREFERRED_NODE    = 0x00020004\n\tPROC_THREAD_ATTRIBUTE_IDEAL_PROCESSOR   = 0x00030005\n\tPROC_THREAD_ATTRIBUTE_MITIGATION_POLICY = 0x00020007\n\tPROC_THREAD_ATTRIBUTE_UMS_THREAD        = 0x00030006\n\tPROC_THREAD_ATTRIBUTE_PROTECTION_LEVEL  = 0x0002000b\n\tPROC_THREAD_ATTRIBUTE_PSEUDOCONSOLE     = 0x00020016\n)\n\nconst (\n\t// flags for CreateToolhelp32Snapshot\n\tTH32CS_SNAPHEAPLIST = 0x01\n\tTH32CS_SNAPPROCESS  = 0x02\n\tTH32CS_SNAPTHREAD   = 0x04\n\tTH32CS_SNAPMODULE   = 0x08\n\tTH32CS_SNAPMODULE32 = 0x10\n\tTH32CS_SNAPALL      = TH32CS_SNAPHEAPLIST | TH32CS_SNAPMODULE | TH32CS_SNAPPROCESS | TH32CS_SNAPTHREAD\n\tTH32CS_INHERIT      = 0x80000000\n)\n\nconst (\n\t// flags for EnumProcessModulesEx\n\tLIST_MODULES_32BIT   = 0x01\n\tLIST_MODULES_64BIT   = 0x02\n\tLIST_MODULES_ALL     = 0x03\n\tLIST_MODULES_DEFAULT = 0x00\n)\n\nconst (\n\t// filters for ReadDirectoryChangesW and FindFirstChangeNotificationW\n\tFILE_NOTIFY_CHANGE_FILE_NAME   = 0x001\n\tFILE_NOTIFY_CHANGE_DIR_NAME    = 0x002\n\tFILE_NOTIFY_CHANGE_ATTRIBUTES  = 0x004\n\tFILE_NOTIFY_CHANGE_SIZE        = 0x008\n\tFILE_NOTIFY_CHANGE_LAST_WRITE  = 0x010\n\tFILE_NOTIFY_CHANGE_LAST_ACCESS = 0x020\n\tFILE_NOTIFY_CHANGE_CREATION    = 0x040\n\tFILE_NOTIFY_CHANGE_SECURITY    = 0x100\n)\n\nconst (\n\t// do not reorder\n\tFILE_ACTION_ADDED = iota + 1\n\tFILE_ACTION_REMOVED\n\tFILE_ACTION_MODIFIED\n\tFILE_ACTION_RENAMED_OLD_NAME\n\tFILE_ACTION_RENAMED_NEW_NAME\n)\n\nconst (\n\t// wincrypt.h\n\t/* certenrolld_begin -- PROV_RSA_*/\n\tPROV_RSA_FULL      = 1\n\tPROV_RSA_SIG       = 2\n\tPROV_DSS           = 3\n\tPROV_FORTEZZA      = 4\n\tPROV_MS_EXCHANGE   = 5\n\tPROV_SSL           = 6\n\tPROV_RSA_SCHANNEL  = 12\n\tPROV_DSS_DH        = 13\n\tPROV_EC_ECDSA_SIG  = 14\n\tPROV_EC_ECNRA_SIG  = 15\n\tPROV_EC_ECDSA_FULL = 16\n\tPROV_EC_ECNRA_FULL = 17\n\tPROV_DH_SCHANNEL   = 18\n\tPROV_SPYRUS_LYNKS  = 20\n\tPROV_RNG           = 21\n\tPROV_INTEL_SEC     = 22\n\tPROV_REPLACE_OWF   = 23\n\tPROV_RSA_AES       = 24\n\n\t/* dwFlags definitions for CryptAcquireContext */\n\tCRYPT_VERIFYCONTEXT              = 0xF0000000\n\tCRYPT_NEWKEYSET                  = 0x00000008\n\tCRYPT_DELETEKEYSET               = 0x00000010\n\tCRYPT_MACHINE_KEYSET             = 0x00000020\n\tCRYPT_SILENT                     = 0x00000040\n\tCRYPT_DEFAULT_CONTAINER_OPTIONAL = 0x00000080\n\n\t/* Flags for PFXImportCertStore */\n\tCRYPT_EXPORTABLE                   = 0x00000001\n\tCRYPT_USER_PROTECTED               = 0x00000002\n\tCRYPT_USER_KEYSET                  = 0x00001000\n\tPKCS12_PREFER_CNG_KSP              = 0x00000100\n\tPKCS12_ALWAYS_CNG_KSP              = 0x00000200\n\tPKCS12_ALLOW_OVERWRITE_KEY         = 0x00004000\n\tPKCS12_NO_PERSIST_KEY              = 0x00008000\n\tPKCS12_INCLUDE_EXTENDED_PROPERTIES = 0x00000010\n\n\t/* Flags for CryptAcquireCertificatePrivateKey */\n\tCRYPT_ACQUIRE_CACHE_FLAG             = 0x00000001\n\tCRYPT_ACQUIRE_USE_PROV_INFO_FLAG     = 0x00000002\n\tCRYPT_ACQUIRE_COMPARE_KEY_FLAG       = 0x00000004\n\tCRYPT_ACQUIRE_NO_HEALING             = 0x00000008\n\tCRYPT_ACQUIRE_SILENT_FLAG            = 0x00000040\n\tCRYPT_ACQUIRE_WINDOW_HANDLE_FLAG     = 0x00000080\n\tCRYPT_ACQUIRE_NCRYPT_KEY_FLAGS_MASK  = 0x00070000\n\tCRYPT_ACQUIRE_ALLOW_NCRYPT_KEY_FLAG  = 0x00010000\n\tCRYPT_ACQUIRE_PREFER_NCRYPT_KEY_FLAG = 0x00020000\n\tCRYPT_ACQUIRE_ONLY_NCRYPT_KEY_FLAG   = 0x00040000\n\n\t/* pdwKeySpec for CryptAcquireCertificatePrivateKey */\n\tAT_KEYEXCHANGE       = 1\n\tAT_SIGNATURE         = 2\n\tCERT_NCRYPT_KEY_SPEC = 0xFFFFFFFF\n\n\t/* Default usage match type is AND with value zero */\n\tUSAGE_MATCH_TYPE_AND = 0\n\tUSAGE_MATCH_TYPE_OR  = 1\n\n\t/* msgAndCertEncodingType values for CertOpenStore function */\n\tX509_ASN_ENCODING   = 0x00000001\n\tPKCS_7_ASN_ENCODING = 0x00010000\n\n\t/* storeProvider values for CertOpenStore function */\n\tCERT_STORE_PROV_MSG               = 1\n\tCERT_STORE_PROV_MEMORY            = 2\n\tCERT_STORE_PROV_FILE              = 3\n\tCERT_STORE_PROV_REG               = 4\n\tCERT_STORE_PROV_PKCS7             = 5\n\tCERT_STORE_PROV_SERIALIZED        = 6\n\tCERT_STORE_PROV_FILENAME_A        = 7\n\tCERT_STORE_PROV_FILENAME_W        = 8\n\tCERT_STORE_PROV_FILENAME          = CERT_STORE_PROV_FILENAME_W\n\tCERT_STORE_PROV_SYSTEM_A          = 9\n\tCERT_STORE_PROV_SYSTEM_W          = 10\n\tCERT_STORE_PROV_SYSTEM            = CERT_STORE_PROV_SYSTEM_W\n\tCERT_STORE_PROV_COLLECTION        = 11\n\tCERT_STORE_PROV_SYSTEM_REGISTRY_A = 12\n\tCERT_STORE_PROV_SYSTEM_REGISTRY_W = 13\n\tCERT_STORE_PROV_SYSTEM_REGISTRY   = CERT_STORE_PROV_SYSTEM_REGISTRY_W\n\tCERT_STORE_PROV_PHYSICAL_W        = 14\n\tCERT_STORE_PROV_PHYSICAL          = CERT_STORE_PROV_PHYSICAL_W\n\tCERT_STORE_PROV_SMART_CARD_W      = 15\n\tCERT_STORE_PROV_SMART_CARD        = CERT_STORE_PROV_SMART_CARD_W\n\tCERT_STORE_PROV_LDAP_W            = 16\n\tCERT_STORE_PROV_LDAP              = CERT_STORE_PROV_LDAP_W\n\tCERT_STORE_PROV_PKCS12            = 17\n\n\t/* store characteristics (low WORD of flag) for CertOpenStore function */\n\tCERT_STORE_NO_CRYPT_RELEASE_FLAG            = 0x00000001\n\tCERT_STORE_SET_LOCALIZED_NAME_FLAG          = 0x00000002\n\tCERT_STORE_DEFER_CLOSE_UNTIL_LAST_FREE_FLAG = 0x00000004\n\tCERT_STORE_DELETE_FLAG                      = 0x00000010\n\tCERT_STORE_UNSAFE_PHYSICAL_FLAG             = 0x00000020\n\tCERT_STORE_SHARE_STORE_FLAG                 = 0x00000040\n\tCERT_STORE_SHARE_CONTEXT_FLAG               = 0x00000080\n\tCERT_STORE_MANIFOLD_FLAG                    = 0x00000100\n\tCERT_STORE_ENUM_ARCHIVED_FLAG               = 0x00000200\n\tCERT_STORE_UPDATE_KEYID_FLAG                = 0x00000400\n\tCERT_STORE_BACKUP_RESTORE_FLAG              = 0x00000800\n\tCERT_STORE_MAXIMUM_ALLOWED_FLAG             = 0x00001000\n\tCERT_STORE_CREATE_NEW_FLAG                  = 0x00002000\n\tCERT_STORE_OPEN_EXISTING_FLAG               = 0x00004000\n\tCERT_STORE_READONLY_FLAG                    = 0x00008000\n\n\t/* store locations (high WORD of flag) for CertOpenStore function */\n\tCERT_SYSTEM_STORE_CURRENT_USER               = 0x00010000\n\tCERT_SYSTEM_STORE_LOCAL_MACHINE              = 0x00020000\n\tCERT_SYSTEM_STORE_CURRENT_SERVICE            = 0x00040000\n\tCERT_SYSTEM_STORE_SERVICES                   = 0x00050000\n\tCERT_SYSTEM_STORE_USERS                      = 0x00060000\n\tCERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY  = 0x00070000\n\tCERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY = 0x00080000\n\tCERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE   = 0x00090000\n\tCERT_SYSTEM_STORE_UNPROTECTED_FLAG           = 0x40000000\n\tCERT_SYSTEM_STORE_RELOCATE_FLAG              = 0x80000000\n\n\t/* Miscellaneous high-WORD flags for CertOpenStore function */\n\tCERT_REGISTRY_STORE_REMOTE_FLAG      = 0x00010000\n\tCERT_REGISTRY_STORE_SERIALIZED_FLAG  = 0x00020000\n\tCERT_REGISTRY_STORE_ROAMING_FLAG     = 0x00040000\n\tCERT_REGISTRY_STORE_MY_IE_DIRTY_FLAG = 0x00080000\n\tCERT_REGISTRY_STORE_LM_GPT_FLAG      = 0x01000000\n\tCERT_REGISTRY_STORE_CLIENT_GPT_FLAG  = 0x80000000\n\tCERT_FILE_STORE_COMMIT_ENABLE_FLAG   = 0x00010000\n\tCERT_LDAP_STORE_SIGN_FLAG            = 0x00010000\n\tCERT_LDAP_STORE_AREC_EXCLUSIVE_FLAG  = 0x00020000\n\tCERT_LDAP_STORE_OPENED_FLAG          = 0x00040000\n\tCERT_LDAP_STORE_UNBIND_FLAG          = 0x00080000\n\n\t/* addDisposition values for CertAddCertificateContextToStore function */\n\tCERT_STORE_ADD_NEW                                 = 1\n\tCERT_STORE_ADD_USE_EXISTING                        = 2\n\tCERT_STORE_ADD_REPLACE_EXISTING                    = 3\n\tCERT_STORE_ADD_ALWAYS                              = 4\n\tCERT_STORE_ADD_REPLACE_EXISTING_INHERIT_PROPERTIES = 5\n\tCERT_STORE_ADD_NEWER                               = 6\n\tCERT_STORE_ADD_NEWER_INHERIT_PROPERTIES            = 7\n\n\t/* ErrorStatus values for CertTrustStatus struct */\n\tCERT_TRUST_NO_ERROR                          = 0x00000000\n\tCERT_TRUST_IS_NOT_TIME_VALID                 = 0x00000001\n\tCERT_TRUST_IS_REVOKED                        = 0x00000004\n\tCERT_TRUST_IS_NOT_SIGNATURE_VALID            = 0x00000008\n\tCERT_TRUST_IS_NOT_VALID_FOR_USAGE            = 0x00000010\n\tCERT_TRUST_IS_UNTRUSTED_ROOT                 = 0x00000020\n\tCERT_TRUST_REVOCATION_STATUS_UNKNOWN         = 0x00000040\n\tCERT_TRUST_IS_CYCLIC                         = 0x00000080\n\tCERT_TRUST_INVALID_EXTENSION                 = 0x00000100\n\tCERT_TRUST_INVALID_POLICY_CONSTRAINTS        = 0x00000200\n\tCERT_TRUST_INVALID_BASIC_CONSTRAINTS         = 0x00000400\n\tCERT_TRUST_INVALID_NAME_CONSTRAINTS          = 0x00000800\n\tCERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT = 0x00001000\n\tCERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT   = 0x00002000\n\tCERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT = 0x00004000\n\tCERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT      = 0x00008000\n\tCERT_TRUST_IS_PARTIAL_CHAIN                  = 0x00010000\n\tCERT_TRUST_CTL_IS_NOT_TIME_VALID             = 0x00020000\n\tCERT_TRUST_CTL_IS_NOT_SIGNATURE_VALID        = 0x00040000\n\tCERT_TRUST_CTL_IS_NOT_VALID_FOR_USAGE        = 0x00080000\n\tCERT_TRUST_HAS_WEAK_SIGNATURE                = 0x00100000\n\tCERT_TRUST_IS_OFFLINE_REVOCATION             = 0x01000000\n\tCERT_TRUST_NO_ISSUANCE_CHAIN_POLICY          = 0x02000000\n\tCERT_TRUST_IS_EXPLICIT_DISTRUST              = 0x04000000\n\tCERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT    = 0x08000000\n\n\t/* InfoStatus values for CertTrustStatus struct */\n\tCERT_TRUST_HAS_EXACT_MATCH_ISSUER        = 0x00000001\n\tCERT_TRUST_HAS_KEY_MATCH_ISSUER          = 0x00000002\n\tCERT_TRUST_HAS_NAME_MATCH_ISSUER         = 0x00000004\n\tCERT_TRUST_IS_SELF_SIGNED                = 0x00000008\n\tCERT_TRUST_HAS_PREFERRED_ISSUER          = 0x00000100\n\tCERT_TRUST_HAS_ISSUANCE_CHAIN_POLICY     = 0x00000400\n\tCERT_TRUST_HAS_VALID_NAME_CONSTRAINTS    = 0x00000400\n\tCERT_TRUST_IS_PEER_TRUSTED               = 0x00000800\n\tCERT_TRUST_HAS_CRL_VALIDITY_EXTENDED     = 0x00001000\n\tCERT_TRUST_IS_FROM_EXCLUSIVE_TRUST_STORE = 0x00002000\n\tCERT_TRUST_IS_CA_TRUSTED                 = 0x00004000\n\tCERT_TRUST_IS_COMPLEX_CHAIN              = 0x00010000\n\n\t/* Certificate Information Flags */\n\tCERT_INFO_VERSION_FLAG                 = 1\n\tCERT_INFO_SERIAL_NUMBER_FLAG           = 2\n\tCERT_INFO_SIGNATURE_ALGORITHM_FLAG     = 3\n\tCERT_INFO_ISSUER_FLAG                  = 4\n\tCERT_INFO_NOT_BEFORE_FLAG              = 5\n\tCERT_INFO_NOT_AFTER_FLAG               = 6\n\tCERT_INFO_SUBJECT_FLAG                 = 7\n\tCERT_INFO_SUBJECT_PUBLIC_KEY_INFO_FLAG = 8\n\tCERT_INFO_ISSUER_UNIQUE_ID_FLAG        = 9\n\tCERT_INFO_SUBJECT_UNIQUE_ID_FLAG       = 10\n\tCERT_INFO_EXTENSION_FLAG               = 11\n\n\t/* dwFindType for CertFindCertificateInStore  */\n\tCERT_COMPARE_MASK                     = 0xFFFF\n\tCERT_COMPARE_SHIFT                    = 16\n\tCERT_COMPARE_ANY                      = 0\n\tCERT_COMPARE_SHA1_HASH                = 1\n\tCERT_COMPARE_NAME                     = 2\n\tCERT_COMPARE_ATTR                     = 3\n\tCERT_COMPARE_MD5_HASH                 = 4\n\tCERT_COMPARE_PROPERTY                 = 5\n\tCERT_COMPARE_PUBLIC_KEY               = 6\n\tCERT_COMPARE_HASH                     = CERT_COMPARE_SHA1_HASH\n\tCERT_COMPARE_NAME_STR_A               = 7\n\tCERT_COMPARE_NAME_STR_W               = 8\n\tCERT_COMPARE_KEY_SPEC                 = 9\n\tCERT_COMPARE_ENHKEY_USAGE             = 10\n\tCERT_COMPARE_CTL_USAGE                = CERT_COMPARE_ENHKEY_USAGE\n\tCERT_COMPARE_SUBJECT_CERT             = 11\n\tCERT_COMPARE_ISSUER_OF                = 12\n\tCERT_COMPARE_EXISTING                 = 13\n\tCERT_COMPARE_SIGNATURE_HASH           = 14\n\tCERT_COMPARE_KEY_IDENTIFIER           = 15\n\tCERT_COMPARE_CERT_ID                  = 16\n\tCERT_COMPARE_CROSS_CERT_DIST_POINTS   = 17\n\tCERT_COMPARE_PUBKEY_MD5_HASH          = 18\n\tCERT_COMPARE_SUBJECT_INFO_ACCESS      = 19\n\tCERT_COMPARE_HASH_STR                 = 20\n\tCERT_COMPARE_HAS_PRIVATE_KEY          = 21\n\tCERT_FIND_ANY                         = (CERT_COMPARE_ANY << CERT_COMPARE_SHIFT)\n\tCERT_FIND_SHA1_HASH                   = (CERT_COMPARE_SHA1_HASH << CERT_COMPARE_SHIFT)\n\tCERT_FIND_MD5_HASH                    = (CERT_COMPARE_MD5_HASH << CERT_COMPARE_SHIFT)\n\tCERT_FIND_SIGNATURE_HASH              = (CERT_COMPARE_SIGNATURE_HASH << CERT_COMPARE_SHIFT)\n\tCERT_FIND_KEY_IDENTIFIER              = (CERT_COMPARE_KEY_IDENTIFIER << CERT_COMPARE_SHIFT)\n\tCERT_FIND_HASH                        = CERT_FIND_SHA1_HASH\n\tCERT_FIND_PROPERTY                    = (CERT_COMPARE_PROPERTY << CERT_COMPARE_SHIFT)\n\tCERT_FIND_PUBLIC_KEY                  = (CERT_COMPARE_PUBLIC_KEY << CERT_COMPARE_SHIFT)\n\tCERT_FIND_SUBJECT_NAME                = (CERT_COMPARE_NAME<<CERT_COMPARE_SHIFT | CERT_INFO_SUBJECT_FLAG)\n\tCERT_FIND_SUBJECT_ATTR                = (CERT_COMPARE_ATTR<<CERT_COMPARE_SHIFT | CERT_INFO_SUBJECT_FLAG)\n\tCERT_FIND_ISSUER_NAME                 = (CERT_COMPARE_NAME<<CERT_COMPARE_SHIFT | CERT_INFO_ISSUER_FLAG)\n\tCERT_FIND_ISSUER_ATTR                 = (CERT_COMPARE_ATTR<<CERT_COMPARE_SHIFT | CERT_INFO_ISSUER_FLAG)\n\tCERT_FIND_SUBJECT_STR_A               = (CERT_COMPARE_NAME_STR_A<<CERT_COMPARE_SHIFT | CERT_INFO_SUBJECT_FLAG)\n\tCERT_FIND_SUBJECT_STR_W               = (CERT_COMPARE_NAME_STR_W<<CERT_COMPARE_SHIFT | CERT_INFO_SUBJECT_FLAG)\n\tCERT_FIND_SUBJECT_STR                 = CERT_FIND_SUBJECT_STR_W\n\tCERT_FIND_ISSUER_STR_A                = (CERT_COMPARE_NAME_STR_A<<CERT_COMPARE_SHIFT | CERT_INFO_ISSUER_FLAG)\n\tCERT_FIND_ISSUER_STR_W                = (CERT_COMPARE_NAME_STR_W<<CERT_COMPARE_SHIFT | CERT_INFO_ISSUER_FLAG)\n\tCERT_FIND_ISSUER_STR                  = CERT_FIND_ISSUER_STR_W\n\tCERT_FIND_KEY_SPEC                    = (CERT_COMPARE_KEY_SPEC << CERT_COMPARE_SHIFT)\n\tCERT_FIND_ENHKEY_USAGE                = (CERT_COMPARE_ENHKEY_USAGE << CERT_COMPARE_SHIFT)\n\tCERT_FIND_CTL_USAGE                   = CERT_FIND_ENHKEY_USAGE\n\tCERT_FIND_SUBJECT_CERT                = (CERT_COMPARE_SUBJECT_CERT << CERT_COMPARE_SHIFT)\n\tCERT_FIND_ISSUER_OF                   = (CERT_COMPARE_ISSUER_OF << CERT_COMPARE_SHIFT)\n\tCERT_FIND_EXISTING                    = (CERT_COMPARE_EXISTING << CERT_COMPARE_SHIFT)\n\tCERT_FIND_CERT_ID                     = (CERT_COMPARE_CERT_ID << CERT_COMPARE_SHIFT)\n\tCERT_FIND_CROSS_CERT_DIST_POINTS      = (CERT_COMPARE_CROSS_CERT_DIST_POINTS << CERT_COMPARE_SHIFT)\n\tCERT_FIND_PUBKEY_MD5_HASH             = (CERT_COMPARE_PUBKEY_MD5_HASH << CERT_COMPARE_SHIFT)\n\tCERT_FIND_SUBJECT_INFO_ACCESS         = (CERT_COMPARE_SUBJECT_INFO_ACCESS << CERT_COMPARE_SHIFT)\n\tCERT_FIND_HASH_STR                    = (CERT_COMPARE_HASH_STR << CERT_COMPARE_SHIFT)\n\tCERT_FIND_HAS_PRIVATE_KEY             = (CERT_COMPARE_HAS_PRIVATE_KEY << CERT_COMPARE_SHIFT)\n\tCERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG  = 0x1\n\tCERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG  = 0x2\n\tCERT_FIND_PROP_ONLY_ENHKEY_USAGE_FLAG = 0x4\n\tCERT_FIND_NO_ENHKEY_USAGE_FLAG        = 0x8\n\tCERT_FIND_OR_ENHKEY_USAGE_FLAG        = 0x10\n\tCERT_FIND_VALID_ENHKEY_USAGE_FLAG     = 0x20\n\tCERT_FIND_OPTIONAL_CTL_USAGE_FLAG     = CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG\n\tCERT_FIND_EXT_ONLY_CTL_USAGE_FLAG     = CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG\n\tCERT_FIND_PROP_ONLY_CTL_USAGE_FLAG    = CERT_FIND_PROP_ONLY_ENHKEY_USAGE_FLAG\n\tCERT_FIND_NO_CTL_USAGE_FLAG           = CERT_FIND_NO_ENHKEY_USAGE_FLAG\n\tCERT_FIND_OR_CTL_USAGE_FLAG           = CERT_FIND_OR_ENHKEY_USAGE_FLAG\n\tCERT_FIND_VALID_CTL_USAGE_FLAG        = CERT_FIND_VALID_ENHKEY_USAGE_FLAG\n\n\t/* policyOID values for CertVerifyCertificateChainPolicy function */\n\tCERT_CHAIN_POLICY_BASE              = 1\n\tCERT_CHAIN_POLICY_AUTHENTICODE      = 2\n\tCERT_CHAIN_POLICY_AUTHENTICODE_TS   = 3\n\tCERT_CHAIN_POLICY_SSL               = 4\n\tCERT_CHAIN_POLICY_BASIC_CONSTRAINTS = 5\n\tCERT_CHAIN_POLICY_NT_AUTH           = 6\n\tCERT_CHAIN_POLICY_MICROSOFT_ROOT    = 7\n\tCERT_CHAIN_POLICY_EV                = 8\n\tCERT_CHAIN_POLICY_SSL_F12           = 9\n\n\t/* flag for dwFindType CertFindChainInStore  */\n\tCERT_CHAIN_FIND_BY_ISSUER = 1\n\n\t/* dwFindFlags for CertFindChainInStore when dwFindType == CERT_CHAIN_FIND_BY_ISSUER */\n\tCERT_CHAIN_FIND_BY_ISSUER_COMPARE_KEY_FLAG    = 0x0001\n\tCERT_CHAIN_FIND_BY_ISSUER_COMPLEX_CHAIN_FLAG  = 0x0002\n\tCERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_URL_FLAG = 0x0004\n\tCERT_CHAIN_FIND_BY_ISSUER_LOCAL_MACHINE_FLAG  = 0x0008\n\tCERT_CHAIN_FIND_BY_ISSUER_NO_KEY_FLAG         = 0x4000\n\tCERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_FLAG     = 0x8000\n\n\t/* Certificate Store close flags */\n\tCERT_CLOSE_STORE_FORCE_FLAG = 0x00000001\n\tCERT_CLOSE_STORE_CHECK_FLAG = 0x00000002\n\n\t/* CryptQueryObject object type */\n\tCERT_QUERY_OBJECT_FILE = 1\n\tCERT_QUERY_OBJECT_BLOB = 2\n\n\t/* CryptQueryObject content type flags */\n\tCERT_QUERY_CONTENT_CERT                    = 1\n\tCERT_QUERY_CONTENT_CTL                     = 2\n\tCERT_QUERY_CONTENT_CRL                     = 3\n\tCERT_QUERY_CONTENT_SERIALIZED_STORE        = 4\n\tCERT_QUERY_CONTENT_SERIALIZED_CERT         = 5\n\tCERT_QUERY_CONTENT_SERIALIZED_CTL          = 6\n\tCERT_QUERY_CONTENT_SERIALIZED_CRL          = 7\n\tCERT_QUERY_CONTENT_PKCS7_SIGNED            = 8\n\tCERT_QUERY_CONTENT_PKCS7_UNSIGNED          = 9\n\tCERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED      = 10\n\tCERT_QUERY_CONTENT_PKCS10                  = 11\n\tCERT_QUERY_CONTENT_PFX                     = 12\n\tCERT_QUERY_CONTENT_CERT_PAIR               = 13\n\tCERT_QUERY_CONTENT_PFX_AND_LOAD            = 14\n\tCERT_QUERY_CONTENT_FLAG_CERT               = (1 << CERT_QUERY_CONTENT_CERT)\n\tCERT_QUERY_CONTENT_FLAG_CTL                = (1 << CERT_QUERY_CONTENT_CTL)\n\tCERT_QUERY_CONTENT_FLAG_CRL                = (1 << CERT_QUERY_CONTENT_CRL)\n\tCERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE   = (1 << CERT_QUERY_CONTENT_SERIALIZED_STORE)\n\tCERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT    = (1 << CERT_QUERY_CONTENT_SERIALIZED_CERT)\n\tCERT_QUERY_CONTENT_FLAG_SERIALIZED_CTL     = (1 << CERT_QUERY_CONTENT_SERIALIZED_CTL)\n\tCERT_QUERY_CONTENT_FLAG_SERIALIZED_CRL     = (1 << CERT_QUERY_CONTENT_SERIALIZED_CRL)\n\tCERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED       = (1 << CERT_QUERY_CONTENT_PKCS7_SIGNED)\n\tCERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED     = (1 << CERT_QUERY_CONTENT_PKCS7_UNSIGNED)\n\tCERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED = (1 << CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED)\n\tCERT_QUERY_CONTENT_FLAG_PKCS10             = (1 << CERT_QUERY_CONTENT_PKCS10)\n\tCERT_QUERY_CONTENT_FLAG_PFX                = (1 << CERT_QUERY_CONTENT_PFX)\n\tCERT_QUERY_CONTENT_FLAG_CERT_PAIR          = (1 << CERT_QUERY_CONTENT_CERT_PAIR)\n\tCERT_QUERY_CONTENT_FLAG_PFX_AND_LOAD       = (1 << CERT_QUERY_CONTENT_PFX_AND_LOAD)\n\tCERT_QUERY_CONTENT_FLAG_ALL                = (CERT_QUERY_CONTENT_FLAG_CERT | CERT_QUERY_CONTENT_FLAG_CTL | CERT_QUERY_CONTENT_FLAG_CRL | CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE | CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT | CERT_QUERY_CONTENT_FLAG_SERIALIZED_CTL | CERT_QUERY_CONTENT_FLAG_SERIALIZED_CRL | CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED | CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED | CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED | CERT_QUERY_CONTENT_FLAG_PKCS10 | CERT_QUERY_CONTENT_FLAG_PFX | CERT_QUERY_CONTENT_FLAG_CERT_PAIR)\n\tCERT_QUERY_CONTENT_FLAG_ALL_ISSUER_CERT    = (CERT_QUERY_CONTENT_FLAG_CERT | CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE | CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT | CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED | CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED)\n\n\t/* CryptQueryObject format type flags */\n\tCERT_QUERY_FORMAT_BINARY                     = 1\n\tCERT_QUERY_FORMAT_BASE64_ENCODED             = 2\n\tCERT_QUERY_FORMAT_ASN_ASCII_HEX_ENCODED      = 3\n\tCERT_QUERY_FORMAT_FLAG_BINARY                = (1 << CERT_QUERY_FORMAT_BINARY)\n\tCERT_QUERY_FORMAT_FLAG_BASE64_ENCODED        = (1 << CERT_QUERY_FORMAT_BASE64_ENCODED)\n\tCERT_QUERY_FORMAT_FLAG_ASN_ASCII_HEX_ENCODED = (1 << CERT_QUERY_FORMAT_ASN_ASCII_HEX_ENCODED)\n\tCERT_QUERY_FORMAT_FLAG_ALL                   = (CERT_QUERY_FORMAT_FLAG_BINARY | CERT_QUERY_FORMAT_FLAG_BASE64_ENCODED | CERT_QUERY_FORMAT_FLAG_ASN_ASCII_HEX_ENCODED)\n\n\t/* CertGetNameString name types */\n\tCERT_NAME_EMAIL_TYPE            = 1\n\tCERT_NAME_RDN_TYPE              = 2\n\tCERT_NAME_ATTR_TYPE             = 3\n\tCERT_NAME_SIMPLE_DISPLAY_TYPE   = 4\n\tCERT_NAME_FRIENDLY_DISPLAY_TYPE = 5\n\tCERT_NAME_DNS_TYPE              = 6\n\tCERT_NAME_URL_TYPE              = 7\n\tCERT_NAME_UPN_TYPE              = 8\n\n\t/* CertGetNameString flags */\n\tCERT_NAME_ISSUER_FLAG              = 0x1\n\tCERT_NAME_DISABLE_IE4_UTF8_FLAG    = 0x10000\n\tCERT_NAME_SEARCH_ALL_NAMES_FLAG    = 0x2\n\tCERT_NAME_STR_ENABLE_PUNYCODE_FLAG = 0x00200000\n\n\t/* AuthType values for SSLExtraCertChainPolicyPara struct */\n\tAUTHTYPE_CLIENT = 1\n\tAUTHTYPE_SERVER = 2\n\n\t/* Checks values for SSLExtraCertChainPolicyPara struct */\n\tSECURITY_FLAG_IGNORE_REVOCATION        = 0x00000080\n\tSECURITY_FLAG_IGNORE_UNKNOWN_CA        = 0x00000100\n\tSECURITY_FLAG_IGNORE_WRONG_USAGE       = 0x00000200\n\tSECURITY_FLAG_IGNORE_CERT_CN_INVALID   = 0x00001000\n\tSECURITY_FLAG_IGNORE_CERT_DATE_INVALID = 0x00002000\n\n\t/* Flags for Crypt[Un]ProtectData */\n\tCRYPTPROTECT_UI_FORBIDDEN      = 0x1\n\tCRYPTPROTECT_LOCAL_MACHINE     = 0x4\n\tCRYPTPROTECT_CRED_SYNC         = 0x8\n\tCRYPTPROTECT_AUDIT             = 0x10\n\tCRYPTPROTECT_NO_RECOVERY       = 0x20\n\tCRYPTPROTECT_VERIFY_PROTECTION = 0x40\n\tCRYPTPROTECT_CRED_REGENERATE   = 0x80\n\n\t/* Flags for CryptProtectPromptStruct */\n\tCRYPTPROTECT_PROMPT_ON_UNPROTECT   = 1\n\tCRYPTPROTECT_PROMPT_ON_PROTECT     = 2\n\tCRYPTPROTECT_PROMPT_RESERVED       = 4\n\tCRYPTPROTECT_PROMPT_STRONG         = 8\n\tCRYPTPROTECT_PROMPT_REQUIRE_STRONG = 16\n)\n\nconst (\n\t// flags for SetErrorMode\n\tSEM_FAILCRITICALERRORS     = 0x0001\n\tSEM_NOALIGNMENTFAULTEXCEPT = 0x0004\n\tSEM_NOGPFAULTERRORBOX      = 0x0002\n\tSEM_NOOPENFILEERRORBOX     = 0x8000\n)\n\nconst (\n\t// Priority class.\n\tABOVE_NORMAL_PRIORITY_CLASS   = 0x00008000\n\tBELOW_NORMAL_PRIORITY_CLASS   = 0x00004000\n\tHIGH_PRIORITY_CLASS           = 0x00000080\n\tIDLE_PRIORITY_CLASS           = 0x00000040\n\tNORMAL_PRIORITY_CLASS         = 0x00000020\n\tPROCESS_MODE_BACKGROUND_BEGIN = 0x00100000\n\tPROCESS_MODE_BACKGROUND_END   = 0x00200000\n\tREALTIME_PRIORITY_CLASS       = 0x00000100\n)\n\n/* wintrust.h constants for WinVerifyTrustEx */\nconst (\n\tWTD_UI_ALL    = 1\n\tWTD_UI_NONE   = 2\n\tWTD_UI_NOBAD  = 3\n\tWTD_UI_NOGOOD = 4\n\n\tWTD_REVOKE_NONE       = 0\n\tWTD_REVOKE_WHOLECHAIN = 1\n\n\tWTD_CHOICE_FILE    = 1\n\tWTD_CHOICE_CATALOG = 2\n\tWTD_CHOICE_BLOB    = 3\n\tWTD_CHOICE_SIGNER  = 4\n\tWTD_CHOICE_CERT    = 5\n\n\tWTD_STATEACTION_IGNORE           = 0x00000000\n\tWTD_STATEACTION_VERIFY           = 0x00000001\n\tWTD_STATEACTION_CLOSE            = 0x00000002\n\tWTD_STATEACTION_AUTO_CACHE       = 0x00000003\n\tWTD_STATEACTION_AUTO_CACHE_FLUSH = 0x00000004\n\n\tWTD_USE_IE4_TRUST_FLAG                  = 0x1\n\tWTD_NO_IE4_CHAIN_FLAG                   = 0x2\n\tWTD_NO_POLICY_USAGE_FLAG                = 0x4\n\tWTD_REVOCATION_CHECK_NONE               = 0x10\n\tWTD_REVOCATION_CHECK_END_CERT           = 0x20\n\tWTD_REVOCATION_CHECK_CHAIN              = 0x40\n\tWTD_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT = 0x80\n\tWTD_SAFER_FLAG                          = 0x100\n\tWTD_HASH_ONLY_FLAG                      = 0x200\n\tWTD_USE_DEFAULT_OSVER_CHECK             = 0x400\n\tWTD_LIFETIME_SIGNING_FLAG               = 0x800\n\tWTD_CACHE_ONLY_URL_RETRIEVAL            = 0x1000\n\tWTD_DISABLE_MD2_MD4                     = 0x2000\n\tWTD_MOTW                                = 0x4000\n\n\tWTD_UICONTEXT_EXECUTE = 0\n\tWTD_UICONTEXT_INSTALL = 1\n)\n\nvar (\n\tOID_PKIX_KP_SERVER_AUTH = []byte(\"1.3.6.1.5.5.7.3.1\\x00\")\n\tOID_SERVER_GATED_CRYPTO = []byte(\"1.3.6.1.4.1.311.10.3.3\\x00\")\n\tOID_SGC_NETSCAPE        = []byte(\"2.16.840.1.113730.4.1\\x00\")\n\n\tWINTRUST_ACTION_GENERIC_VERIFY_V2 = GUID{\n\t\tData1: 0xaac56b,\n\t\tData2: 0xcd44,\n\t\tData3: 0x11d0,\n\t\tData4: [8]byte{0x8c, 0xc2, 0x0, 0xc0, 0x4f, 0xc2, 0x95, 0xee},\n\t}\n)\n\n// Pointer represents a pointer to an arbitrary Windows type.\n//\n// Pointer-typed fields may point to one of many different types. It's\n// up to the caller to provide a pointer to the appropriate type, cast\n// to Pointer. The caller must obey the unsafe.Pointer rules while\n// doing so.\ntype Pointer *struct{}\n\n// Invented values to support what package os expects.\ntype Timeval struct {\n\tSec  int32\n\tUsec int32\n}\n\nfunc (tv *Timeval) Nanoseconds() int64 {\n\treturn (int64(tv.Sec)*1e6 + int64(tv.Usec)) * 1e3\n}\n\nfunc NsecToTimeval(nsec int64) (tv Timeval) {\n\ttv.Sec = int32(nsec / 1e9)\n\ttv.Usec = int32(nsec % 1e9 / 1e3)\n\treturn\n}\n\ntype Overlapped struct {\n\tInternal     uintptr\n\tInternalHigh uintptr\n\tOffset       uint32\n\tOffsetHigh   uint32\n\tHEvent       Handle\n}\n\ntype FileNotifyInformation struct {\n\tNextEntryOffset uint32\n\tAction          uint32\n\tFileNameLength  uint32\n\tFileName        uint16\n}\n\ntype Filetime struct {\n\tLowDateTime  uint32\n\tHighDateTime uint32\n}\n\n// Nanoseconds returns Filetime ft in nanoseconds\n// since Epoch (00:00:00 UTC, January 1, 1970).\nfunc (ft *Filetime) Nanoseconds() int64 {\n\t// 100-nanosecond intervals since January 1, 1601\n\tnsec := int64(ft.HighDateTime)<<32 + int64(ft.LowDateTime)\n\t// change starting time to the Epoch (00:00:00 UTC, January 1, 1970)\n\tnsec -= 116444736000000000\n\t// convert into nanoseconds\n\tnsec *= 100\n\treturn nsec\n}\n\nfunc NsecToFiletime(nsec int64) (ft Filetime) {\n\t// convert into 100-nanosecond\n\tnsec /= 100\n\t// change starting time to January 1, 1601\n\tnsec += 116444736000000000\n\t// split into high / low\n\tft.LowDateTime = uint32(nsec & 0xffffffff)\n\tft.HighDateTime = uint32(nsec >> 32 & 0xffffffff)\n\treturn ft\n}\n\ntype Win32finddata struct {\n\tFileAttributes    uint32\n\tCreationTime      Filetime\n\tLastAccessTime    Filetime\n\tLastWriteTime     Filetime\n\tFileSizeHigh      uint32\n\tFileSizeLow       uint32\n\tReserved0         uint32\n\tReserved1         uint32\n\tFileName          [MAX_PATH - 1]uint16\n\tAlternateFileName [13]uint16\n}\n\n// This is the actual system call structure.\n// Win32finddata is what we committed to in Go 1.\ntype win32finddata1 struct {\n\tFileAttributes    uint32\n\tCreationTime      Filetime\n\tLastAccessTime    Filetime\n\tLastWriteTime     Filetime\n\tFileSizeHigh      uint32\n\tFileSizeLow       uint32\n\tReserved0         uint32\n\tReserved1         uint32\n\tFileName          [MAX_PATH]uint16\n\tAlternateFileName [14]uint16\n\n\t// The Microsoft documentation for this struct¹ describes three additional\n\t// fields: dwFileType, dwCreatorType, and wFinderFlags. However, those fields\n\t// are empirically only present in the macOS port of the Win32 API,² and thus\n\t// not needed for binaries built for Windows.\n\t//\n\t// ¹ https://docs.microsoft.com/en-us/windows/win32/api/minwinbase/ns-minwinbase-win32_find_dataw describe\n\t// ² https://golang.org/issue/42637#issuecomment-760715755.\n}\n\nfunc copyFindData(dst *Win32finddata, src *win32finddata1) {\n\tdst.FileAttributes = src.FileAttributes\n\tdst.CreationTime = src.CreationTime\n\tdst.LastAccessTime = src.LastAccessTime\n\tdst.LastWriteTime = src.LastWriteTime\n\tdst.FileSizeHigh = src.FileSizeHigh\n\tdst.FileSizeLow = src.FileSizeLow\n\tdst.Reserved0 = src.Reserved0\n\tdst.Reserved1 = src.Reserved1\n\n\t// The src is 1 element bigger than dst, but it must be NUL.\n\tcopy(dst.FileName[:], src.FileName[:])\n\tcopy(dst.AlternateFileName[:], src.AlternateFileName[:])\n}\n\ntype ByHandleFileInformation struct {\n\tFileAttributes     uint32\n\tCreationTime       Filetime\n\tLastAccessTime     Filetime\n\tLastWriteTime      Filetime\n\tVolumeSerialNumber uint32\n\tFileSizeHigh       uint32\n\tFileSizeLow        uint32\n\tNumberOfLinks      uint32\n\tFileIndexHigh      uint32\n\tFileIndexLow       uint32\n}\n\nconst (\n\tGetFileExInfoStandard = 0\n\tGetFileExMaxInfoLevel = 1\n)\n\ntype Win32FileAttributeData struct {\n\tFileAttributes uint32\n\tCreationTime   Filetime\n\tLastAccessTime Filetime\n\tLastWriteTime  Filetime\n\tFileSizeHigh   uint32\n\tFileSizeLow    uint32\n}\n\n// ShowWindow constants\nconst (\n\t// winuser.h\n\tSW_HIDE            = 0\n\tSW_NORMAL          = 1\n\tSW_SHOWNORMAL      = 1\n\tSW_SHOWMINIMIZED   = 2\n\tSW_SHOWMAXIMIZED   = 3\n\tSW_MAXIMIZE        = 3\n\tSW_SHOWNOACTIVATE  = 4\n\tSW_SHOW            = 5\n\tSW_MINIMIZE        = 6\n\tSW_SHOWMINNOACTIVE = 7\n\tSW_SHOWNA          = 8\n\tSW_RESTORE         = 9\n\tSW_SHOWDEFAULT     = 10\n\tSW_FORCEMINIMIZE   = 11\n)\n\ntype StartupInfo struct {\n\tCb            uint32\n\t_             *uint16\n\tDesktop       *uint16\n\tTitle         *uint16\n\tX             uint32\n\tY             uint32\n\tXSize         uint32\n\tYSize         uint32\n\tXCountChars   uint32\n\tYCountChars   uint32\n\tFillAttribute uint32\n\tFlags         uint32\n\tShowWindow    uint16\n\t_             uint16\n\t_             *byte\n\tStdInput      Handle\n\tStdOutput     Handle\n\tStdErr        Handle\n}\n\ntype StartupInfoEx struct {\n\tStartupInfo\n\tProcThreadAttributeList *ProcThreadAttributeList\n}\n\n// ProcThreadAttributeList is a placeholder type to represent a PROC_THREAD_ATTRIBUTE_LIST.\n//\n// To create a *ProcThreadAttributeList, use NewProcThreadAttributeList, update\n// it with ProcThreadAttributeListContainer.Update, free its memory using\n// ProcThreadAttributeListContainer.Delete, and access the list itself using\n// ProcThreadAttributeListContainer.List.\ntype ProcThreadAttributeList struct{}\n\ntype ProcThreadAttributeListContainer struct {\n\tdata     *ProcThreadAttributeList\n\tpointers []unsafe.Pointer\n}\n\ntype ProcessInformation struct {\n\tProcess   Handle\n\tThread    Handle\n\tProcessId uint32\n\tThreadId  uint32\n}\n\ntype ProcessEntry32 struct {\n\tSize            uint32\n\tUsage           uint32\n\tProcessID       uint32\n\tDefaultHeapID   uintptr\n\tModuleID        uint32\n\tThreads         uint32\n\tParentProcessID uint32\n\tPriClassBase    int32\n\tFlags           uint32\n\tExeFile         [MAX_PATH]uint16\n}\n\ntype ThreadEntry32 struct {\n\tSize           uint32\n\tUsage          uint32\n\tThreadID       uint32\n\tOwnerProcessID uint32\n\tBasePri        int32\n\tDeltaPri       int32\n\tFlags          uint32\n}\n\ntype ModuleEntry32 struct {\n\tSize         uint32\n\tModuleID     uint32\n\tProcessID    uint32\n\tGlblcntUsage uint32\n\tProccntUsage uint32\n\tModBaseAddr  uintptr\n\tModBaseSize  uint32\n\tModuleHandle Handle\n\tModule       [MAX_MODULE_NAME32 + 1]uint16\n\tExePath      [MAX_PATH]uint16\n}\n\nconst SizeofModuleEntry32 = unsafe.Sizeof(ModuleEntry32{})\n\ntype Systemtime struct {\n\tYear         uint16\n\tMonth        uint16\n\tDayOfWeek    uint16\n\tDay          uint16\n\tHour         uint16\n\tMinute       uint16\n\tSecond       uint16\n\tMilliseconds uint16\n}\n\ntype Timezoneinformation struct {\n\tBias         int32\n\tStandardName [32]uint16\n\tStandardDate Systemtime\n\tStandardBias int32\n\tDaylightName [32]uint16\n\tDaylightDate Systemtime\n\tDaylightBias int32\n}\n\n// Socket related.\n\nconst (\n\tAF_UNSPEC  = 0\n\tAF_UNIX    = 1\n\tAF_INET    = 2\n\tAF_NETBIOS = 17\n\tAF_INET6   = 23\n\tAF_IRDA    = 26\n\tAF_BTH     = 32\n\n\tSOCK_STREAM    = 1\n\tSOCK_DGRAM     = 2\n\tSOCK_RAW       = 3\n\tSOCK_RDM       = 4\n\tSOCK_SEQPACKET = 5\n\n\tIPPROTO_IP      = 0\n\tIPPROTO_ICMP    = 1\n\tIPPROTO_IGMP    = 2\n\tBTHPROTO_RFCOMM = 3\n\tIPPROTO_TCP     = 6\n\tIPPROTO_UDP     = 17\n\tIPPROTO_IPV6    = 41\n\tIPPROTO_ICMPV6  = 58\n\tIPPROTO_RM      = 113\n\n\tSOL_SOCKET                = 0xffff\n\tSO_REUSEADDR              = 4\n\tSO_KEEPALIVE              = 8\n\tSO_DONTROUTE              = 16\n\tSO_BROADCAST              = 32\n\tSO_LINGER                 = 128\n\tSO_RCVBUF                 = 0x1002\n\tSO_RCVTIMEO               = 0x1006\n\tSO_SNDBUF                 = 0x1001\n\tSO_UPDATE_ACCEPT_CONTEXT  = 0x700b\n\tSO_UPDATE_CONNECT_CONTEXT = 0x7010\n\n\tIOC_OUT                            = 0x40000000\n\tIOC_IN                             = 0x80000000\n\tIOC_VENDOR                         = 0x18000000\n\tIOC_INOUT                          = IOC_IN | IOC_OUT\n\tIOC_WS2                            = 0x08000000\n\tSIO_GET_EXTENSION_FUNCTION_POINTER = IOC_INOUT | IOC_WS2 | 6\n\tSIO_KEEPALIVE_VALS                 = IOC_IN | IOC_VENDOR | 4\n\tSIO_UDP_CONNRESET                  = IOC_IN | IOC_VENDOR | 12\n\tSIO_UDP_NETRESET                   = IOC_IN | IOC_VENDOR | 15\n\n\t// cf. http://support.microsoft.com/default.aspx?scid=kb;en-us;257460\n\n\tIP_HDRINCL         = 0x2\n\tIP_TOS             = 0x3\n\tIP_TTL             = 0x4\n\tIP_MULTICAST_IF    = 0x9\n\tIP_MULTICAST_TTL   = 0xa\n\tIP_MULTICAST_LOOP  = 0xb\n\tIP_ADD_MEMBERSHIP  = 0xc\n\tIP_DROP_MEMBERSHIP = 0xd\n\tIP_PKTINFO         = 0x13\n\tIP_MTU_DISCOVER    = 0x47\n\n\tIPV6_V6ONLY         = 0x1b\n\tIPV6_UNICAST_HOPS   = 0x4\n\tIPV6_MULTICAST_IF   = 0x9\n\tIPV6_MULTICAST_HOPS = 0xa\n\tIPV6_MULTICAST_LOOP = 0xb\n\tIPV6_JOIN_GROUP     = 0xc\n\tIPV6_LEAVE_GROUP    = 0xd\n\tIPV6_PKTINFO        = 0x13\n\tIPV6_MTU_DISCOVER   = 0x47\n\n\tMSG_OOB       = 0x1\n\tMSG_PEEK      = 0x2\n\tMSG_DONTROUTE = 0x4\n\tMSG_WAITALL   = 0x8\n\n\tMSG_TRUNC  = 0x0100\n\tMSG_CTRUNC = 0x0200\n\tMSG_BCAST  = 0x0400\n\tMSG_MCAST  = 0x0800\n\n\tSOMAXCONN = 0x7fffffff\n\n\tTCP_NODELAY                    = 1\n\tTCP_EXPEDITED_1122             = 2\n\tTCP_KEEPALIVE                  = 3\n\tTCP_MAXSEG                     = 4\n\tTCP_MAXRT                      = 5\n\tTCP_STDURG                     = 6\n\tTCP_NOURG                      = 7\n\tTCP_ATMARK                     = 8\n\tTCP_NOSYNRETRIES               = 9\n\tTCP_TIMESTAMPS                 = 10\n\tTCP_OFFLOAD_PREFERENCE         = 11\n\tTCP_CONGESTION_ALGORITHM       = 12\n\tTCP_DELAY_FIN_ACK              = 13\n\tTCP_MAXRTMS                    = 14\n\tTCP_FASTOPEN                   = 15\n\tTCP_KEEPCNT                    = 16\n\tTCP_KEEPIDLE                   = TCP_KEEPALIVE\n\tTCP_KEEPINTVL                  = 17\n\tTCP_FAIL_CONNECT_ON_ICMP_ERROR = 18\n\tTCP_ICMP_ERROR_INFO            = 19\n\n\tUDP_NOCHECKSUM              = 1\n\tUDP_SEND_MSG_SIZE           = 2\n\tUDP_RECV_MAX_COALESCED_SIZE = 3\n\tUDP_CHECKSUM_COVERAGE       = 20\n\n\tUDP_COALESCED_INFO = 3\n\n\tSHUT_RD   = 0\n\tSHUT_WR   = 1\n\tSHUT_RDWR = 2\n\n\tWSADESCRIPTION_LEN = 256\n\tWSASYS_STATUS_LEN  = 128\n)\n\n// enum PMTUD_STATE from ws2ipdef.h\nconst (\n\tIP_PMTUDISC_NOT_SET = 0\n\tIP_PMTUDISC_DO      = 1\n\tIP_PMTUDISC_DONT    = 2\n\tIP_PMTUDISC_PROBE   = 3\n\tIP_PMTUDISC_MAX     = 4\n)\n\ntype WSABuf struct {\n\tLen uint32\n\tBuf *byte\n}\n\ntype WSAMsg struct {\n\tName        *syscall.RawSockaddrAny\n\tNamelen     int32\n\tBuffers     *WSABuf\n\tBufferCount uint32\n\tControl     WSABuf\n\tFlags       uint32\n}\n\ntype WSACMSGHDR struct {\n\tLen   uintptr\n\tLevel int32\n\tType  int32\n}\n\ntype IN_PKTINFO struct {\n\tAddr    [4]byte\n\tIfindex uint32\n}\n\ntype IN6_PKTINFO struct {\n\tAddr    [16]byte\n\tIfindex uint32\n}\n\n// Flags for WSASocket\nconst (\n\tWSA_FLAG_OVERLAPPED             = 0x01\n\tWSA_FLAG_MULTIPOINT_C_ROOT      = 0x02\n\tWSA_FLAG_MULTIPOINT_C_LEAF      = 0x04\n\tWSA_FLAG_MULTIPOINT_D_ROOT      = 0x08\n\tWSA_FLAG_MULTIPOINT_D_LEAF      = 0x10\n\tWSA_FLAG_ACCESS_SYSTEM_SECURITY = 0x40\n\tWSA_FLAG_NO_HANDLE_INHERIT      = 0x80\n\tWSA_FLAG_REGISTERED_IO          = 0x100\n)\n\n// Invented values to support what package os expects.\nconst (\n\tS_IFMT   = 0x1f000\n\tS_IFIFO  = 0x1000\n\tS_IFCHR  = 0x2000\n\tS_IFDIR  = 0x4000\n\tS_IFBLK  = 0x6000\n\tS_IFREG  = 0x8000\n\tS_IFLNK  = 0xa000\n\tS_IFSOCK = 0xc000\n\tS_ISUID  = 0x800\n\tS_ISGID  = 0x400\n\tS_ISVTX  = 0x200\n\tS_IRUSR  = 0x100\n\tS_IWRITE = 0x80\n\tS_IWUSR  = 0x80\n\tS_IXUSR  = 0x40\n)\n\nconst (\n\tFILE_TYPE_CHAR    = 0x0002\n\tFILE_TYPE_DISK    = 0x0001\n\tFILE_TYPE_PIPE    = 0x0003\n\tFILE_TYPE_REMOTE  = 0x8000\n\tFILE_TYPE_UNKNOWN = 0x0000\n)\n\ntype Hostent struct {\n\tName     *byte\n\tAliases  **byte\n\tAddrType uint16\n\tLength   uint16\n\tAddrList **byte\n}\n\ntype Protoent struct {\n\tName    *byte\n\tAliases **byte\n\tProto   uint16\n}\n\nconst (\n\tDNS_TYPE_A       = 0x0001\n\tDNS_TYPE_NS      = 0x0002\n\tDNS_TYPE_MD      = 0x0003\n\tDNS_TYPE_MF      = 0x0004\n\tDNS_TYPE_CNAME   = 0x0005\n\tDNS_TYPE_SOA     = 0x0006\n\tDNS_TYPE_MB      = 0x0007\n\tDNS_TYPE_MG      = 0x0008\n\tDNS_TYPE_MR      = 0x0009\n\tDNS_TYPE_NULL    = 0x000a\n\tDNS_TYPE_WKS     = 0x000b\n\tDNS_TYPE_PTR     = 0x000c\n\tDNS_TYPE_HINFO   = 0x000d\n\tDNS_TYPE_MINFO   = 0x000e\n\tDNS_TYPE_MX      = 0x000f\n\tDNS_TYPE_TEXT    = 0x0010\n\tDNS_TYPE_RP      = 0x0011\n\tDNS_TYPE_AFSDB   = 0x0012\n\tDNS_TYPE_X25     = 0x0013\n\tDNS_TYPE_ISDN    = 0x0014\n\tDNS_TYPE_RT      = 0x0015\n\tDNS_TYPE_NSAP    = 0x0016\n\tDNS_TYPE_NSAPPTR = 0x0017\n\tDNS_TYPE_SIG     = 0x0018\n\tDNS_TYPE_KEY     = 0x0019\n\tDNS_TYPE_PX      = 0x001a\n\tDNS_TYPE_GPOS    = 0x001b\n\tDNS_TYPE_AAAA    = 0x001c\n\tDNS_TYPE_LOC     = 0x001d\n\tDNS_TYPE_NXT     = 0x001e\n\tDNS_TYPE_EID     = 0x001f\n\tDNS_TYPE_NIMLOC  = 0x0020\n\tDNS_TYPE_SRV     = 0x0021\n\tDNS_TYPE_ATMA    = 0x0022\n\tDNS_TYPE_NAPTR   = 0x0023\n\tDNS_TYPE_KX      = 0x0024\n\tDNS_TYPE_CERT    = 0x0025\n\tDNS_TYPE_A6      = 0x0026\n\tDNS_TYPE_DNAME   = 0x0027\n\tDNS_TYPE_SINK    = 0x0028\n\tDNS_TYPE_OPT     = 0x0029\n\tDNS_TYPE_DS      = 0x002B\n\tDNS_TYPE_RRSIG   = 0x002E\n\tDNS_TYPE_NSEC    = 0x002F\n\tDNS_TYPE_DNSKEY  = 0x0030\n\tDNS_TYPE_DHCID   = 0x0031\n\tDNS_TYPE_UINFO   = 0x0064\n\tDNS_TYPE_UID     = 0x0065\n\tDNS_TYPE_GID     = 0x0066\n\tDNS_TYPE_UNSPEC  = 0x0067\n\tDNS_TYPE_ADDRS   = 0x00f8\n\tDNS_TYPE_TKEY    = 0x00f9\n\tDNS_TYPE_TSIG    = 0x00fa\n\tDNS_TYPE_IXFR    = 0x00fb\n\tDNS_TYPE_AXFR    = 0x00fc\n\tDNS_TYPE_MAILB   = 0x00fd\n\tDNS_TYPE_MAILA   = 0x00fe\n\tDNS_TYPE_ALL     = 0x00ff\n\tDNS_TYPE_ANY     = 0x00ff\n\tDNS_TYPE_WINS    = 0xff01\n\tDNS_TYPE_WINSR   = 0xff02\n\tDNS_TYPE_NBSTAT  = 0xff01\n)\n\nconst (\n\t// flags inside DNSRecord.Dw\n\tDnsSectionQuestion   = 0x0000\n\tDnsSectionAnswer     = 0x0001\n\tDnsSectionAuthority  = 0x0002\n\tDnsSectionAdditional = 0x0003\n)\n\nconst (\n\t// flags of WSALookupService\n\tLUP_DEEP                = 0x0001\n\tLUP_CONTAINERS          = 0x0002\n\tLUP_NOCONTAINERS        = 0x0004\n\tLUP_NEAREST             = 0x0008\n\tLUP_RETURN_NAME         = 0x0010\n\tLUP_RETURN_TYPE         = 0x0020\n\tLUP_RETURN_VERSION      = 0x0040\n\tLUP_RETURN_COMMENT      = 0x0080\n\tLUP_RETURN_ADDR         = 0x0100\n\tLUP_RETURN_BLOB         = 0x0200\n\tLUP_RETURN_ALIASES      = 0x0400\n\tLUP_RETURN_QUERY_STRING = 0x0800\n\tLUP_RETURN_ALL          = 0x0FF0\n\tLUP_RES_SERVICE         = 0x8000\n\n\tLUP_FLUSHCACHE    = 0x1000\n\tLUP_FLUSHPREVIOUS = 0x2000\n\n\tLUP_NON_AUTHORITATIVE      = 0x4000\n\tLUP_SECURE                 = 0x8000\n\tLUP_RETURN_PREFERRED_NAMES = 0x10000\n\tLUP_DNS_ONLY               = 0x20000\n\n\tLUP_ADDRCONFIG           = 0x100000\n\tLUP_DUAL_ADDR            = 0x200000\n\tLUP_FILESERVER           = 0x400000\n\tLUP_DISABLE_IDN_ENCODING = 0x00800000\n\tLUP_API_ANSI             = 0x01000000\n\n\tLUP_RESOLUTION_HANDLE = 0x80000000\n)\n\nconst (\n\t// values of WSAQUERYSET's namespace\n\tNS_ALL       = 0\n\tNS_DNS       = 12\n\tNS_NLA       = 15\n\tNS_BTH       = 16\n\tNS_EMAIL     = 37\n\tNS_PNRPNAME  = 38\n\tNS_PNRPCLOUD = 39\n)\n\ntype DNSSRVData struct {\n\tTarget   *uint16\n\tPriority uint16\n\tWeight   uint16\n\tPort     uint16\n\tPad      uint16\n}\n\ntype DNSPTRData struct {\n\tHost *uint16\n}\n\ntype DNSMXData struct {\n\tNameExchange *uint16\n\tPreference   uint16\n\tPad          uint16\n}\n\ntype DNSTXTData struct {\n\tStringCount uint16\n\tStringArray [1]*uint16\n}\n\ntype DNSRecord struct {\n\tNext     *DNSRecord\n\tName     *uint16\n\tType     uint16\n\tLength   uint16\n\tDw       uint32\n\tTtl      uint32\n\tReserved uint32\n\tData     [40]byte\n}\n\nconst (\n\tTF_DISCONNECT         = 1\n\tTF_REUSE_SOCKET       = 2\n\tTF_WRITE_BEHIND       = 4\n\tTF_USE_DEFAULT_WORKER = 0\n\tTF_USE_SYSTEM_THREAD  = 16\n\tTF_USE_KERNEL_APC     = 32\n)\n\ntype TransmitFileBuffers struct {\n\tHead       uintptr\n\tHeadLength uint32\n\tTail       uintptr\n\tTailLength uint32\n}\n\nconst (\n\tIFF_UP           = 1\n\tIFF_BROADCAST    = 2\n\tIFF_LOOPBACK     = 4\n\tIFF_POINTTOPOINT = 8\n\tIFF_MULTICAST    = 16\n)\n\nconst SIO_GET_INTERFACE_LIST = 0x4004747F\n\n// TODO(mattn): SockaddrGen is union of sockaddr/sockaddr_in/sockaddr_in6_old.\n// will be fixed to change variable type as suitable.\n\ntype SockaddrGen [24]byte\n\ntype InterfaceInfo struct {\n\tFlags            uint32\n\tAddress          SockaddrGen\n\tBroadcastAddress SockaddrGen\n\tNetmask          SockaddrGen\n}\n\ntype IpAddressString struct {\n\tString [16]byte\n}\n\ntype IpMaskString IpAddressString\n\ntype IpAddrString struct {\n\tNext      *IpAddrString\n\tIpAddress IpAddressString\n\tIpMask    IpMaskString\n\tContext   uint32\n}\n\nconst MAX_ADAPTER_NAME_LENGTH = 256\nconst MAX_ADAPTER_DESCRIPTION_LENGTH = 128\nconst MAX_ADAPTER_ADDRESS_LENGTH = 8\n\ntype IpAdapterInfo struct {\n\tNext                *IpAdapterInfo\n\tComboIndex          uint32\n\tAdapterName         [MAX_ADAPTER_NAME_LENGTH + 4]byte\n\tDescription         [MAX_ADAPTER_DESCRIPTION_LENGTH + 4]byte\n\tAddressLength       uint32\n\tAddress             [MAX_ADAPTER_ADDRESS_LENGTH]byte\n\tIndex               uint32\n\tType                uint32\n\tDhcpEnabled         uint32\n\tCurrentIpAddress    *IpAddrString\n\tIpAddressList       IpAddrString\n\tGatewayList         IpAddrString\n\tDhcpServer          IpAddrString\n\tHaveWins            bool\n\tPrimaryWinsServer   IpAddrString\n\tSecondaryWinsServer IpAddrString\n\tLeaseObtained       int64\n\tLeaseExpires        int64\n}\n\nconst MAXLEN_PHYSADDR = 8\nconst MAX_INTERFACE_NAME_LEN = 256\nconst MAXLEN_IFDESCR = 256\n\ntype MibIfRow struct {\n\tName            [MAX_INTERFACE_NAME_LEN]uint16\n\tIndex           uint32\n\tType            uint32\n\tMtu             uint32\n\tSpeed           uint32\n\tPhysAddrLen     uint32\n\tPhysAddr        [MAXLEN_PHYSADDR]byte\n\tAdminStatus     uint32\n\tOperStatus      uint32\n\tLastChange      uint32\n\tInOctets        uint32\n\tInUcastPkts     uint32\n\tInNUcastPkts    uint32\n\tInDiscards      uint32\n\tInErrors        uint32\n\tInUnknownProtos uint32\n\tOutOctets       uint32\n\tOutUcastPkts    uint32\n\tOutNUcastPkts   uint32\n\tOutDiscards     uint32\n\tOutErrors       uint32\n\tOutQLen         uint32\n\tDescrLen        uint32\n\tDescr           [MAXLEN_IFDESCR]byte\n}\n\ntype CertInfo struct {\n\tVersion              uint32\n\tSerialNumber         CryptIntegerBlob\n\tSignatureAlgorithm   CryptAlgorithmIdentifier\n\tIssuer               CertNameBlob\n\tNotBefore            Filetime\n\tNotAfter             Filetime\n\tSubject              CertNameBlob\n\tSubjectPublicKeyInfo CertPublicKeyInfo\n\tIssuerUniqueId       CryptBitBlob\n\tSubjectUniqueId      CryptBitBlob\n\tCountExtensions      uint32\n\tExtensions           *CertExtension\n}\n\ntype CertExtension struct {\n\tObjId    *byte\n\tCritical int32\n\tValue    CryptObjidBlob\n}\n\ntype CryptAlgorithmIdentifier struct {\n\tObjId      *byte\n\tParameters CryptObjidBlob\n}\n\ntype CertPublicKeyInfo struct {\n\tAlgorithm CryptAlgorithmIdentifier\n\tPublicKey CryptBitBlob\n}\n\ntype DataBlob struct {\n\tSize uint32\n\tData *byte\n}\ntype CryptIntegerBlob DataBlob\ntype CryptUintBlob DataBlob\ntype CryptObjidBlob DataBlob\ntype CertNameBlob DataBlob\ntype CertRdnValueBlob DataBlob\ntype CertBlob DataBlob\ntype CrlBlob DataBlob\ntype CryptDataBlob DataBlob\ntype CryptHashBlob DataBlob\ntype CryptDigestBlob DataBlob\ntype CryptDerBlob DataBlob\ntype CryptAttrBlob DataBlob\n\ntype CryptBitBlob struct {\n\tSize       uint32\n\tData       *byte\n\tUnusedBits uint32\n}\n\ntype CertContext struct {\n\tEncodingType uint32\n\tEncodedCert  *byte\n\tLength       uint32\n\tCertInfo     *CertInfo\n\tStore        Handle\n}\n\ntype CertChainContext struct {\n\tSize                       uint32\n\tTrustStatus                CertTrustStatus\n\tChainCount                 uint32\n\tChains                     **CertSimpleChain\n\tLowerQualityChainCount     uint32\n\tLowerQualityChains         **CertChainContext\n\tHasRevocationFreshnessTime uint32\n\tRevocationFreshnessTime    uint32\n}\n\ntype CertTrustListInfo struct {\n\t// Not implemented\n}\n\ntype CertSimpleChain struct {\n\tSize                       uint32\n\tTrustStatus                CertTrustStatus\n\tNumElements                uint32\n\tElements                   **CertChainElement\n\tTrustListInfo              *CertTrustListInfo\n\tHasRevocationFreshnessTime uint32\n\tRevocationFreshnessTime    uint32\n}\n\ntype CertChainElement struct {\n\tSize              uint32\n\tCertContext       *CertContext\n\tTrustStatus       CertTrustStatus\n\tRevocationInfo    *CertRevocationInfo\n\tIssuanceUsage     *CertEnhKeyUsage\n\tApplicationUsage  *CertEnhKeyUsage\n\tExtendedErrorInfo *uint16\n}\n\ntype CertRevocationCrlInfo struct {\n\t// Not implemented\n}\n\ntype CertRevocationInfo struct {\n\tSize             uint32\n\tRevocationResult uint32\n\tRevocationOid    *byte\n\tOidSpecificInfo  Pointer\n\tHasFreshnessTime uint32\n\tFreshnessTime    uint32\n\tCrlInfo          *CertRevocationCrlInfo\n}\n\ntype CertTrustStatus struct {\n\tErrorStatus uint32\n\tInfoStatus  uint32\n}\n\ntype CertUsageMatch struct {\n\tType  uint32\n\tUsage CertEnhKeyUsage\n}\n\ntype CertEnhKeyUsage struct {\n\tLength           uint32\n\tUsageIdentifiers **byte\n}\n\ntype CertChainPara struct {\n\tSize                         uint32\n\tRequestedUsage               CertUsageMatch\n\tRequstedIssuancePolicy       CertUsageMatch\n\tURLRetrievalTimeout          uint32\n\tCheckRevocationFreshnessTime uint32\n\tRevocationFreshnessTime      uint32\n\tCacheResync                  *Filetime\n}\n\ntype CertChainPolicyPara struct {\n\tSize            uint32\n\tFlags           uint32\n\tExtraPolicyPara Pointer\n}\n\ntype SSLExtraCertChainPolicyPara struct {\n\tSize       uint32\n\tAuthType   uint32\n\tChecks     uint32\n\tServerName *uint16\n}\n\ntype CertChainPolicyStatus struct {\n\tSize              uint32\n\tError             uint32\n\tChainIndex        uint32\n\tElementIndex      uint32\n\tExtraPolicyStatus Pointer\n}\n\ntype CertPolicyInfo struct {\n\tIdentifier      *byte\n\tCountQualifiers uint32\n\tQualifiers      *CertPolicyQualifierInfo\n}\n\ntype CertPoliciesInfo struct {\n\tCount       uint32\n\tPolicyInfos *CertPolicyInfo\n}\n\ntype CertPolicyQualifierInfo struct {\n\t// Not implemented\n}\n\ntype CertStrongSignPara struct {\n\tSize                      uint32\n\tInfoChoice                uint32\n\tInfoOrSerializedInfoOrOID unsafe.Pointer\n}\n\ntype CryptProtectPromptStruct struct {\n\tSize        uint32\n\tPromptFlags uint32\n\tApp         HWND\n\tPrompt      *uint16\n}\n\ntype CertChainFindByIssuerPara struct {\n\tSize                   uint32\n\tUsageIdentifier        *byte\n\tKeySpec                uint32\n\tAcquirePrivateKeyFlags uint32\n\tIssuerCount            uint32\n\tIssuer                 Pointer\n\tFindCallback           Pointer\n\tFindArg                Pointer\n\tIssuerChainIndex       *uint32\n\tIssuerElementIndex     *uint32\n}\n\ntype WinTrustData struct {\n\tSize                            uint32\n\tPolicyCallbackData              uintptr\n\tSIPClientData                   uintptr\n\tUIChoice                        uint32\n\tRevocationChecks                uint32\n\tUnionChoice                     uint32\n\tFileOrCatalogOrBlobOrSgnrOrCert unsafe.Pointer\n\tStateAction                     uint32\n\tStateData                       Handle\n\tURLReference                    *uint16\n\tProvFlags                       uint32\n\tUIContext                       uint32\n\tSignatureSettings               *WinTrustSignatureSettings\n}\n\ntype WinTrustFileInfo struct {\n\tSize         uint32\n\tFilePath     *uint16\n\tFile         Handle\n\tKnownSubject *GUID\n}\n\ntype WinTrustSignatureSettings struct {\n\tSize             uint32\n\tIndex            uint32\n\tFlags            uint32\n\tSecondarySigs    uint32\n\tVerifiedSigIndex uint32\n\tCryptoPolicy     *CertStrongSignPara\n}\n\nconst (\n\t// do not reorder\n\tHKEY_CLASSES_ROOT = 0x80000000 + iota\n\tHKEY_CURRENT_USER\n\tHKEY_LOCAL_MACHINE\n\tHKEY_USERS\n\tHKEY_PERFORMANCE_DATA\n\tHKEY_CURRENT_CONFIG\n\tHKEY_DYN_DATA\n\n\tKEY_QUERY_VALUE        = 1\n\tKEY_SET_VALUE          = 2\n\tKEY_CREATE_SUB_KEY     = 4\n\tKEY_ENUMERATE_SUB_KEYS = 8\n\tKEY_NOTIFY             = 16\n\tKEY_CREATE_LINK        = 32\n\tKEY_WRITE              = 0x20006\n\tKEY_EXECUTE            = 0x20019\n\tKEY_READ               = 0x20019\n\tKEY_WOW64_64KEY        = 0x0100\n\tKEY_WOW64_32KEY        = 0x0200\n\tKEY_ALL_ACCESS         = 0xf003f\n)\n\nconst (\n\t// do not reorder\n\tREG_NONE = iota\n\tREG_SZ\n\tREG_EXPAND_SZ\n\tREG_BINARY\n\tREG_DWORD_LITTLE_ENDIAN\n\tREG_DWORD_BIG_ENDIAN\n\tREG_LINK\n\tREG_MULTI_SZ\n\tREG_RESOURCE_LIST\n\tREG_FULL_RESOURCE_DESCRIPTOR\n\tREG_RESOURCE_REQUIREMENTS_LIST\n\tREG_QWORD_LITTLE_ENDIAN\n\tREG_DWORD = REG_DWORD_LITTLE_ENDIAN\n\tREG_QWORD = REG_QWORD_LITTLE_ENDIAN\n)\n\nconst (\n\tEVENT_MODIFY_STATE = 0x0002\n\tEVENT_ALL_ACCESS   = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3\n\n\tMUTANT_QUERY_STATE = 0x0001\n\tMUTANT_ALL_ACCESS  = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | MUTANT_QUERY_STATE\n\n\tSEMAPHORE_MODIFY_STATE = 0x0002\n\tSEMAPHORE_ALL_ACCESS   = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3\n\n\tTIMER_QUERY_STATE  = 0x0001\n\tTIMER_MODIFY_STATE = 0x0002\n\tTIMER_ALL_ACCESS   = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | TIMER_QUERY_STATE | TIMER_MODIFY_STATE\n\n\tMUTEX_MODIFY_STATE = MUTANT_QUERY_STATE\n\tMUTEX_ALL_ACCESS   = MUTANT_ALL_ACCESS\n\n\tCREATE_EVENT_MANUAL_RESET  = 0x1\n\tCREATE_EVENT_INITIAL_SET   = 0x2\n\tCREATE_MUTEX_INITIAL_OWNER = 0x1\n)\n\ntype AddrinfoW struct {\n\tFlags     int32\n\tFamily    int32\n\tSocktype  int32\n\tProtocol  int32\n\tAddrlen   uintptr\n\tCanonname *uint16\n\tAddr      uintptr\n\tNext      *AddrinfoW\n}\n\nconst (\n\tAI_PASSIVE     = 1\n\tAI_CANONNAME   = 2\n\tAI_NUMERICHOST = 4\n)\n\ntype GUID struct {\n\tData1 uint32\n\tData2 uint16\n\tData3 uint16\n\tData4 [8]byte\n}\n\nvar WSAID_CONNECTEX = GUID{\n\t0x25a207b9,\n\t0xddf3,\n\t0x4660,\n\t[8]byte{0x8e, 0xe9, 0x76, 0xe5, 0x8c, 0x74, 0x06, 0x3e},\n}\n\nvar WSAID_WSASENDMSG = GUID{\n\t0xa441e712,\n\t0x754f,\n\t0x43ca,\n\t[8]byte{0x84, 0xa7, 0x0d, 0xee, 0x44, 0xcf, 0x60, 0x6d},\n}\n\nvar WSAID_WSARECVMSG = GUID{\n\t0xf689d7c8,\n\t0x6f1f,\n\t0x436b,\n\t[8]byte{0x8a, 0x53, 0xe5, 0x4f, 0xe3, 0x51, 0xc3, 0x22},\n}\n\nconst (\n\tFILE_SKIP_COMPLETION_PORT_ON_SUCCESS = 1\n\tFILE_SKIP_SET_EVENT_ON_HANDLE        = 2\n)\n\nconst (\n\tWSAPROTOCOL_LEN    = 255\n\tMAX_PROTOCOL_CHAIN = 7\n\tBASE_PROTOCOL      = 1\n\tLAYERED_PROTOCOL   = 0\n\n\tXP1_CONNECTIONLESS           = 0x00000001\n\tXP1_GUARANTEED_DELIVERY      = 0x00000002\n\tXP1_GUARANTEED_ORDER         = 0x00000004\n\tXP1_MESSAGE_ORIENTED         = 0x00000008\n\tXP1_PSEUDO_STREAM            = 0x00000010\n\tXP1_GRACEFUL_CLOSE           = 0x00000020\n\tXP1_EXPEDITED_DATA           = 0x00000040\n\tXP1_CONNECT_DATA             = 0x00000080\n\tXP1_DISCONNECT_DATA          = 0x00000100\n\tXP1_SUPPORT_BROADCAST        = 0x00000200\n\tXP1_SUPPORT_MULTIPOINT       = 0x00000400\n\tXP1_MULTIPOINT_CONTROL_PLANE = 0x00000800\n\tXP1_MULTIPOINT_DATA_PLANE    = 0x00001000\n\tXP1_QOS_SUPPORTED            = 0x00002000\n\tXP1_UNI_SEND                 = 0x00008000\n\tXP1_UNI_RECV                 = 0x00010000\n\tXP1_IFS_HANDLES              = 0x00020000\n\tXP1_PARTIAL_MESSAGE          = 0x00040000\n\tXP1_SAN_SUPPORT_SDP          = 0x00080000\n\n\tPFL_MULTIPLE_PROTO_ENTRIES  = 0x00000001\n\tPFL_RECOMMENDED_PROTO_ENTRY = 0x00000002\n\tPFL_HIDDEN                  = 0x00000004\n\tPFL_MATCHES_PROTOCOL_ZERO   = 0x00000008\n\tPFL_NETWORKDIRECT_PROVIDER  = 0x00000010\n)\n\ntype WSAProtocolInfo struct {\n\tServiceFlags1     uint32\n\tServiceFlags2     uint32\n\tServiceFlags3     uint32\n\tServiceFlags4     uint32\n\tProviderFlags     uint32\n\tProviderId        GUID\n\tCatalogEntryId    uint32\n\tProtocolChain     WSAProtocolChain\n\tVersion           int32\n\tAddressFamily     int32\n\tMaxSockAddr       int32\n\tMinSockAddr       int32\n\tSocketType        int32\n\tProtocol          int32\n\tProtocolMaxOffset int32\n\tNetworkByteOrder  int32\n\tSecurityScheme    int32\n\tMessageSize       uint32\n\tProviderReserved  uint32\n\tProtocolName      [WSAPROTOCOL_LEN + 1]uint16\n}\n\ntype WSAProtocolChain struct {\n\tChainLen     int32\n\tChainEntries [MAX_PROTOCOL_CHAIN]uint32\n}\n\ntype TCPKeepalive struct {\n\tOnOff    uint32\n\tTime     uint32\n\tInterval uint32\n}\n\ntype symbolicLinkReparseBuffer struct {\n\tSubstituteNameOffset uint16\n\tSubstituteNameLength uint16\n\tPrintNameOffset      uint16\n\tPrintNameLength      uint16\n\tFlags                uint32\n\tPathBuffer           [1]uint16\n}\n\ntype mountPointReparseBuffer struct {\n\tSubstituteNameOffset uint16\n\tSubstituteNameLength uint16\n\tPrintNameOffset      uint16\n\tPrintNameLength      uint16\n\tPathBuffer           [1]uint16\n}\n\ntype reparseDataBuffer struct {\n\tReparseTag        uint32\n\tReparseDataLength uint16\n\tReserved          uint16\n\n\t// GenericReparseBuffer\n\treparseBuffer byte\n}\n\nconst (\n\tFSCTL_CREATE_OR_GET_OBJECT_ID             = 0x0900C0\n\tFSCTL_DELETE_OBJECT_ID                    = 0x0900A0\n\tFSCTL_DELETE_REPARSE_POINT                = 0x0900AC\n\tFSCTL_DUPLICATE_EXTENTS_TO_FILE           = 0x098344\n\tFSCTL_DUPLICATE_EXTENTS_TO_FILE_EX        = 0x0983E8\n\tFSCTL_FILESYSTEM_GET_STATISTICS           = 0x090060\n\tFSCTL_FILE_LEVEL_TRIM                     = 0x098208\n\tFSCTL_FIND_FILES_BY_SID                   = 0x09008F\n\tFSCTL_GET_COMPRESSION                     = 0x09003C\n\tFSCTL_GET_INTEGRITY_INFORMATION           = 0x09027C\n\tFSCTL_GET_NTFS_VOLUME_DATA                = 0x090064\n\tFSCTL_GET_REFS_VOLUME_DATA                = 0x0902D8\n\tFSCTL_GET_OBJECT_ID                       = 0x09009C\n\tFSCTL_GET_REPARSE_POINT                   = 0x0900A8\n\tFSCTL_GET_RETRIEVAL_POINTER_COUNT         = 0x09042B\n\tFSCTL_GET_RETRIEVAL_POINTERS              = 0x090073\n\tFSCTL_GET_RETRIEVAL_POINTERS_AND_REFCOUNT = 0x0903D3\n\tFSCTL_IS_PATHNAME_VALID                   = 0x09002C\n\tFSCTL_LMR_SET_LINK_TRACKING_INFORMATION   = 0x1400EC\n\tFSCTL_MARK_HANDLE                         = 0x0900FC\n\tFSCTL_OFFLOAD_READ                        = 0x094264\n\tFSCTL_OFFLOAD_WRITE                       = 0x098268\n\tFSCTL_PIPE_PEEK                           = 0x11400C\n\tFSCTL_PIPE_TRANSCEIVE                     = 0x11C017\n\tFSCTL_PIPE_WAIT                           = 0x110018\n\tFSCTL_QUERY_ALLOCATED_RANGES              = 0x0940CF\n\tFSCTL_QUERY_FAT_BPB                       = 0x090058\n\tFSCTL_QUERY_FILE_REGIONS                  = 0x090284\n\tFSCTL_QUERY_ON_DISK_VOLUME_INFO           = 0x09013C\n\tFSCTL_QUERY_SPARING_INFO                  = 0x090138\n\tFSCTL_READ_FILE_USN_DATA                  = 0x0900EB\n\tFSCTL_RECALL_FILE                         = 0x090117\n\tFSCTL_REFS_STREAM_SNAPSHOT_MANAGEMENT     = 0x090440\n\tFSCTL_SET_COMPRESSION                     = 0x09C040\n\tFSCTL_SET_DEFECT_MANAGEMENT               = 0x098134\n\tFSCTL_SET_ENCRYPTION                      = 0x0900D7\n\tFSCTL_SET_INTEGRITY_INFORMATION           = 0x09C280\n\tFSCTL_SET_INTEGRITY_INFORMATION_EX        = 0x090380\n\tFSCTL_SET_OBJECT_ID                       = 0x090098\n\tFSCTL_SET_OBJECT_ID_EXTENDED              = 0x0900BC\n\tFSCTL_SET_REPARSE_POINT                   = 0x0900A4\n\tFSCTL_SET_SPARSE                          = 0x0900C4\n\tFSCTL_SET_ZERO_DATA                       = 0x0980C8\n\tFSCTL_SET_ZERO_ON_DEALLOCATION            = 0x090194\n\tFSCTL_SIS_COPYFILE                        = 0x090100\n\tFSCTL_WRITE_USN_CLOSE_RECORD              = 0x0900EF\n\n\tMAXIMUM_REPARSE_DATA_BUFFER_SIZE = 16 * 1024\n\tIO_REPARSE_TAG_MOUNT_POINT       = 0xA0000003\n\tIO_REPARSE_TAG_SYMLINK           = 0xA000000C\n\tSYMBOLIC_LINK_FLAG_DIRECTORY     = 0x1\n)\n\n// FILE_ZERO_DATA_INFORMATION from winioctl.h\ntype FileZeroDataInformation struct {\n\tFileOffset      int64\n\tBeyondFinalZero int64\n}\n\nconst (\n\tComputerNameNetBIOS                   = 0\n\tComputerNameDnsHostname               = 1\n\tComputerNameDnsDomain                 = 2\n\tComputerNameDnsFullyQualified         = 3\n\tComputerNamePhysicalNetBIOS           = 4\n\tComputerNamePhysicalDnsHostname       = 5\n\tComputerNamePhysicalDnsDomain         = 6\n\tComputerNamePhysicalDnsFullyQualified = 7\n\tComputerNameMax                       = 8\n)\n\n// For MessageBox()\nconst (\n\tMB_OK                   = 0x00000000\n\tMB_OKCANCEL             = 0x00000001\n\tMB_ABORTRETRYIGNORE     = 0x00000002\n\tMB_YESNOCANCEL          = 0x00000003\n\tMB_YESNO                = 0x00000004\n\tMB_RETRYCANCEL          = 0x00000005\n\tMB_CANCELTRYCONTINUE    = 0x00000006\n\tMB_ICONHAND             = 0x00000010\n\tMB_ICONQUESTION         = 0x00000020\n\tMB_ICONEXCLAMATION      = 0x00000030\n\tMB_ICONASTERISK         = 0x00000040\n\tMB_USERICON             = 0x00000080\n\tMB_ICONWARNING          = MB_ICONEXCLAMATION\n\tMB_ICONERROR            = MB_ICONHAND\n\tMB_ICONINFORMATION      = MB_ICONASTERISK\n\tMB_ICONSTOP             = MB_ICONHAND\n\tMB_DEFBUTTON1           = 0x00000000\n\tMB_DEFBUTTON2           = 0x00000100\n\tMB_DEFBUTTON3           = 0x00000200\n\tMB_DEFBUTTON4           = 0x00000300\n\tMB_APPLMODAL            = 0x00000000\n\tMB_SYSTEMMODAL          = 0x00001000\n\tMB_TASKMODAL            = 0x00002000\n\tMB_HELP                 = 0x00004000\n\tMB_NOFOCUS              = 0x00008000\n\tMB_SETFOREGROUND        = 0x00010000\n\tMB_DEFAULT_DESKTOP_ONLY = 0x00020000\n\tMB_TOPMOST              = 0x00040000\n\tMB_RIGHT                = 0x00080000\n\tMB_RTLREADING           = 0x00100000\n\tMB_SERVICE_NOTIFICATION = 0x00200000\n)\n\nconst (\n\tMOVEFILE_REPLACE_EXISTING      = 0x1\n\tMOVEFILE_COPY_ALLOWED          = 0x2\n\tMOVEFILE_DELAY_UNTIL_REBOOT    = 0x4\n\tMOVEFILE_WRITE_THROUGH         = 0x8\n\tMOVEFILE_CREATE_HARDLINK       = 0x10\n\tMOVEFILE_FAIL_IF_NOT_TRACKABLE = 0x20\n)\n\n// Flags for GetAdaptersAddresses, see\n// https://learn.microsoft.com/en-us/windows/win32/api/iphlpapi/nf-iphlpapi-getadaptersaddresses.\nconst (\n\tGAA_FLAG_SKIP_UNICAST                = 0x1\n\tGAA_FLAG_SKIP_ANYCAST                = 0x2\n\tGAA_FLAG_SKIP_MULTICAST              = 0x4\n\tGAA_FLAG_SKIP_DNS_SERVER             = 0x8\n\tGAA_FLAG_INCLUDE_PREFIX              = 0x10\n\tGAA_FLAG_SKIP_FRIENDLY_NAME          = 0x20\n\tGAA_FLAG_INCLUDE_WINS_INFO           = 0x40\n\tGAA_FLAG_INCLUDE_GATEWAYS            = 0x80\n\tGAA_FLAG_INCLUDE_ALL_INTERFACES      = 0x100\n\tGAA_FLAG_INCLUDE_ALL_COMPARTMENTS    = 0x200\n\tGAA_FLAG_INCLUDE_TUNNEL_BINDINGORDER = 0x400\n)\n\nconst (\n\tIF_TYPE_OTHER              = 1\n\tIF_TYPE_ETHERNET_CSMACD    = 6\n\tIF_TYPE_ISO88025_TOKENRING = 9\n\tIF_TYPE_PPP                = 23\n\tIF_TYPE_SOFTWARE_LOOPBACK  = 24\n\tIF_TYPE_ATM                = 37\n\tIF_TYPE_IEEE80211          = 71\n\tIF_TYPE_TUNNEL             = 131\n\tIF_TYPE_IEEE1394           = 144\n)\n\n// Enum NL_PREFIX_ORIGIN for [IpAdapterUnicastAddress], see\n// https://learn.microsoft.com/en-us/windows/win32/api/nldef/ne-nldef-nl_prefix_origin\nconst (\n\tIpPrefixOriginOther               = 0\n\tIpPrefixOriginManual              = 1\n\tIpPrefixOriginWellKnown           = 2\n\tIpPrefixOriginDhcp                = 3\n\tIpPrefixOriginRouterAdvertisement = 4\n\tIpPrefixOriginUnchanged           = 1 << 4\n)\n\n// Enum NL_SUFFIX_ORIGIN for [IpAdapterUnicastAddress], see\n// https://learn.microsoft.com/en-us/windows/win32/api/nldef/ne-nldef-nl_suffix_origin\nconst (\n\tNlsoOther                      = 0\n\tNlsoManual                     = 1\n\tNlsoWellKnown                  = 2\n\tNlsoDhcp                       = 3\n\tNlsoLinkLayerAddress           = 4\n\tNlsoRandom                     = 5\n\tIpSuffixOriginOther            = 0\n\tIpSuffixOriginManual           = 1\n\tIpSuffixOriginWellKnown        = 2\n\tIpSuffixOriginDhcp             = 3\n\tIpSuffixOriginLinkLayerAddress = 4\n\tIpSuffixOriginRandom           = 5\n\tIpSuffixOriginUnchanged        = 1 << 4\n)\n\n// Enum NL_DAD_STATE for [IpAdapterUnicastAddress], see\n// https://learn.microsoft.com/en-us/windows/win32/api/nldef/ne-nldef-nl_dad_state\nconst (\n\tNldsInvalid          = 0\n\tNldsTentative        = 1\n\tNldsDuplicate        = 2\n\tNldsDeprecated       = 3\n\tNldsPreferred        = 4\n\tIpDadStateInvalid    = 0\n\tIpDadStateTentative  = 1\n\tIpDadStateDuplicate  = 2\n\tIpDadStateDeprecated = 3\n\tIpDadStatePreferred  = 4\n)\n\ntype SocketAddress struct {\n\tSockaddr       *syscall.RawSockaddrAny\n\tSockaddrLength int32\n}\n\n// IP returns an IPv4 or IPv6 address, or nil if the underlying SocketAddress is neither.\nfunc (addr *SocketAddress) IP() net.IP {\n\tif uintptr(addr.SockaddrLength) >= unsafe.Sizeof(RawSockaddrInet4{}) && addr.Sockaddr.Addr.Family == AF_INET {\n\t\treturn (*RawSockaddrInet4)(unsafe.Pointer(addr.Sockaddr)).Addr[:]\n\t} else if uintptr(addr.SockaddrLength) >= unsafe.Sizeof(RawSockaddrInet6{}) && addr.Sockaddr.Addr.Family == AF_INET6 {\n\t\treturn (*RawSockaddrInet6)(unsafe.Pointer(addr.Sockaddr)).Addr[:]\n\t}\n\treturn nil\n}\n\ntype IpAdapterUnicastAddress struct {\n\tLength             uint32\n\tFlags              uint32\n\tNext               *IpAdapterUnicastAddress\n\tAddress            SocketAddress\n\tPrefixOrigin       int32\n\tSuffixOrigin       int32\n\tDadState           int32\n\tValidLifetime      uint32\n\tPreferredLifetime  uint32\n\tLeaseLifetime      uint32\n\tOnLinkPrefixLength uint8\n}\n\ntype IpAdapterAnycastAddress struct {\n\tLength  uint32\n\tFlags   uint32\n\tNext    *IpAdapterAnycastAddress\n\tAddress SocketAddress\n}\n\ntype IpAdapterMulticastAddress struct {\n\tLength  uint32\n\tFlags   uint32\n\tNext    *IpAdapterMulticastAddress\n\tAddress SocketAddress\n}\n\ntype IpAdapterDnsServerAdapter struct {\n\tLength   uint32\n\tReserved uint32\n\tNext     *IpAdapterDnsServerAdapter\n\tAddress  SocketAddress\n}\n\ntype IpAdapterPrefix struct {\n\tLength       uint32\n\tFlags        uint32\n\tNext         *IpAdapterPrefix\n\tAddress      SocketAddress\n\tPrefixLength uint32\n}\n\ntype IpAdapterAddresses struct {\n\tLength                 uint32\n\tIfIndex                uint32\n\tNext                   *IpAdapterAddresses\n\tAdapterName            *byte\n\tFirstUnicastAddress    *IpAdapterUnicastAddress\n\tFirstAnycastAddress    *IpAdapterAnycastAddress\n\tFirstMulticastAddress  *IpAdapterMulticastAddress\n\tFirstDnsServerAddress  *IpAdapterDnsServerAdapter\n\tDnsSuffix              *uint16\n\tDescription            *uint16\n\tFriendlyName           *uint16\n\tPhysicalAddress        [syscall.MAX_ADAPTER_ADDRESS_LENGTH]byte\n\tPhysicalAddressLength  uint32\n\tFlags                  uint32\n\tMtu                    uint32\n\tIfType                 uint32\n\tOperStatus             uint32\n\tIpv6IfIndex            uint32\n\tZoneIndices            [16]uint32\n\tFirstPrefix            *IpAdapterPrefix\n\tTransmitLinkSpeed      uint64\n\tReceiveLinkSpeed       uint64\n\tFirstWinsServerAddress *IpAdapterWinsServerAddress\n\tFirstGatewayAddress    *IpAdapterGatewayAddress\n\tIpv4Metric             uint32\n\tIpv6Metric             uint32\n\tLuid                   uint64\n\tDhcpv4Server           SocketAddress\n\tCompartmentId          uint32\n\tNetworkGuid            GUID\n\tConnectionType         uint32\n\tTunnelType             uint32\n\tDhcpv6Server           SocketAddress\n\tDhcpv6ClientDuid       [MAX_DHCPV6_DUID_LENGTH]byte\n\tDhcpv6ClientDuidLength uint32\n\tDhcpv6Iaid             uint32\n\tFirstDnsSuffix         *IpAdapterDNSSuffix\n}\n\ntype IpAdapterWinsServerAddress struct {\n\tLength   uint32\n\tReserved uint32\n\tNext     *IpAdapterWinsServerAddress\n\tAddress  SocketAddress\n}\n\ntype IpAdapterGatewayAddress struct {\n\tLength   uint32\n\tReserved uint32\n\tNext     *IpAdapterGatewayAddress\n\tAddress  SocketAddress\n}\n\ntype IpAdapterDNSSuffix struct {\n\tNext   *IpAdapterDNSSuffix\n\tString [MAX_DNS_SUFFIX_STRING_LENGTH]uint16\n}\n\nconst (\n\tIfOperStatusUp             = 1\n\tIfOperStatusDown           = 2\n\tIfOperStatusTesting        = 3\n\tIfOperStatusUnknown        = 4\n\tIfOperStatusDormant        = 5\n\tIfOperStatusNotPresent     = 6\n\tIfOperStatusLowerLayerDown = 7\n)\n\nconst (\n\tIF_MAX_PHYS_ADDRESS_LENGTH = 32\n\tIF_MAX_STRING_SIZE         = 256\n)\n\n// MIB_IF_ENTRY_LEVEL enumeration from netioapi.h or\n// https://learn.microsoft.com/en-us/windows/win32/api/netioapi/nf-netioapi-getifentry2ex.\nconst (\n\tMibIfEntryNormal                  = 0\n\tMibIfEntryNormalWithoutStatistics = 2\n)\n\n// MIB_NOTIFICATION_TYPE enumeration from netioapi.h or\n// https://learn.microsoft.com/en-us/windows/win32/api/netioapi/ne-netioapi-mib_notification_type.\nconst (\n\tMibParameterNotification = 0\n\tMibAddInstance           = 1\n\tMibDeleteInstance        = 2\n\tMibInitialNotification   = 3\n)\n\n// MibIfRow2 stores information about a particular interface. See\n// https://learn.microsoft.com/en-us/windows/win32/api/netioapi/ns-netioapi-mib_if_row2.\ntype MibIfRow2 struct {\n\tInterfaceLuid               uint64\n\tInterfaceIndex              uint32\n\tInterfaceGuid               GUID\n\tAlias                       [IF_MAX_STRING_SIZE + 1]uint16\n\tDescription                 [IF_MAX_STRING_SIZE + 1]uint16\n\tPhysicalAddressLength       uint32\n\tPhysicalAddress             [IF_MAX_PHYS_ADDRESS_LENGTH]uint8\n\tPermanentPhysicalAddress    [IF_MAX_PHYS_ADDRESS_LENGTH]uint8\n\tMtu                         uint32\n\tType                        uint32\n\tTunnelType                  uint32\n\tMediaType                   uint32\n\tPhysicalMediumType          uint32\n\tAccessType                  uint32\n\tDirectionType               uint32\n\tInterfaceAndOperStatusFlags uint8\n\tOperStatus                  uint32\n\tAdminStatus                 uint32\n\tMediaConnectState           uint32\n\tNetworkGuid                 GUID\n\tConnectionType              uint32\n\tTransmitLinkSpeed           uint64\n\tReceiveLinkSpeed            uint64\n\tInOctets                    uint64\n\tInUcastPkts                 uint64\n\tInNUcastPkts                uint64\n\tInDiscards                  uint64\n\tInErrors                    uint64\n\tInUnknownProtos             uint64\n\tInUcastOctets               uint64\n\tInMulticastOctets           uint64\n\tInBroadcastOctets           uint64\n\tOutOctets                   uint64\n\tOutUcastPkts                uint64\n\tOutNUcastPkts               uint64\n\tOutDiscards                 uint64\n\tOutErrors                   uint64\n\tOutUcastOctets              uint64\n\tOutMulticastOctets          uint64\n\tOutBroadcastOctets          uint64\n\tOutQLen                     uint64\n}\n\n// IP_ADDRESS_PREFIX stores an IP address prefix. See\n// https://learn.microsoft.com/en-us/windows/win32/api/netioapi/ns-netioapi-ip_address_prefix.\ntype IpAddressPrefix struct {\n\tPrefix       RawSockaddrInet\n\tPrefixLength uint8\n}\n\n// NL_ROUTE_ORIGIN enumeration from nldef.h or\n// https://learn.microsoft.com/en-us/windows/win32/api/nldef/ne-nldef-nl_route_origin.\nconst (\n\tNlroManual              = 0\n\tNlroWellKnown           = 1\n\tNlroDHCP                = 2\n\tNlroRouterAdvertisement = 3\n\tNlro6to4                = 4\n)\n\n// NL_ROUTE_ORIGIN enumeration from nldef.h or\n// https://learn.microsoft.com/en-us/windows/win32/api/nldef/ne-nldef-nl_route_protocol.\nconst (\n\tMIB_IPPROTO_OTHER             = 1\n\tMIB_IPPROTO_LOCAL             = 2\n\tMIB_IPPROTO_NETMGMT           = 3\n\tMIB_IPPROTO_ICMP              = 4\n\tMIB_IPPROTO_EGP               = 5\n\tMIB_IPPROTO_GGP               = 6\n\tMIB_IPPROTO_HELLO             = 7\n\tMIB_IPPROTO_RIP               = 8\n\tMIB_IPPROTO_IS_IS             = 9\n\tMIB_IPPROTO_ES_IS             = 10\n\tMIB_IPPROTO_CISCO             = 11\n\tMIB_IPPROTO_BBN               = 12\n\tMIB_IPPROTO_OSPF              = 13\n\tMIB_IPPROTO_BGP               = 14\n\tMIB_IPPROTO_IDPR              = 15\n\tMIB_IPPROTO_EIGRP             = 16\n\tMIB_IPPROTO_DVMRP             = 17\n\tMIB_IPPROTO_RPL               = 18\n\tMIB_IPPROTO_DHCP              = 19\n\tMIB_IPPROTO_NT_AUTOSTATIC     = 10002\n\tMIB_IPPROTO_NT_STATIC         = 10006\n\tMIB_IPPROTO_NT_STATIC_NON_DOD = 10007\n)\n\n// MIB_IPFORWARD_ROW2 stores information about an IP route entry. See\n// https://learn.microsoft.com/en-us/windows/win32/api/netioapi/ns-netioapi-mib_ipforward_row2.\ntype MibIpForwardRow2 struct {\n\tInterfaceLuid        uint64\n\tInterfaceIndex       uint32\n\tDestinationPrefix    IpAddressPrefix\n\tNextHop              RawSockaddrInet\n\tSitePrefixLength     uint8\n\tValidLifetime        uint32\n\tPreferredLifetime    uint32\n\tMetric               uint32\n\tProtocol             uint32\n\tLoopback             uint8\n\tAutoconfigureAddress uint8\n\tPublish              uint8\n\tImmortal             uint8\n\tAge                  uint32\n\tOrigin               uint32\n}\n\n// MIB_IPFORWARD_TABLE2 contains a table of IP route entries. See\n// https://learn.microsoft.com/en-us/windows/win32/api/netioapi/ns-netioapi-mib_ipforward_table2.\ntype MibIpForwardTable2 struct {\n\tNumEntries uint32\n\tTable      [1]MibIpForwardRow2\n}\n\n// Rows returns the IP route entries in the table.\nfunc (t *MibIpForwardTable2) Rows() []MibIpForwardRow2 {\n\treturn unsafe.Slice(&t.Table[0], t.NumEntries)\n}\n\n// MIB_UNICASTIPADDRESS_ROW stores information about a unicast IP address. See\n// https://learn.microsoft.com/en-us/windows/win32/api/netioapi/ns-netioapi-mib_unicastipaddress_row.\ntype MibUnicastIpAddressRow struct {\n\tAddress            RawSockaddrInet6 // SOCKADDR_INET union\n\tInterfaceLuid      uint64\n\tInterfaceIndex     uint32\n\tPrefixOrigin       uint32\n\tSuffixOrigin       uint32\n\tValidLifetime      uint32\n\tPreferredLifetime  uint32\n\tOnLinkPrefixLength uint8\n\tSkipAsSource       uint8\n\tDadState           uint32\n\tScopeId            uint32\n\tCreationTimeStamp  Filetime\n}\n\nconst ScopeLevelCount = 16\n\n// MIB_IPINTERFACE_ROW stores interface management information for a particular IP address family on a network interface.\n// See https://learn.microsoft.com/en-us/windows/win32/api/netioapi/ns-netioapi-mib_ipinterface_row.\ntype MibIpInterfaceRow struct {\n\tFamily                               uint16\n\tInterfaceLuid                        uint64\n\tInterfaceIndex                       uint32\n\tMaxReassemblySize                    uint32\n\tInterfaceIdentifier                  uint64\n\tMinRouterAdvertisementInterval       uint32\n\tMaxRouterAdvertisementInterval       uint32\n\tAdvertisingEnabled                   uint8\n\tForwardingEnabled                    uint8\n\tWeakHostSend                         uint8\n\tWeakHostReceive                      uint8\n\tUseAutomaticMetric                   uint8\n\tUseNeighborUnreachabilityDetection   uint8\n\tManagedAddressConfigurationSupported uint8\n\tOtherStatefulConfigurationSupported  uint8\n\tAdvertiseDefaultRoute                uint8\n\tRouterDiscoveryBehavior              uint32\n\tDadTransmits                         uint32\n\tBaseReachableTime                    uint32\n\tRetransmitTime                       uint32\n\tPathMtuDiscoveryTimeout              uint32\n\tLinkLocalAddressBehavior             uint32\n\tLinkLocalAddressTimeout              uint32\n\tZoneIndices                          [ScopeLevelCount]uint32\n\tSitePrefixLength                     uint32\n\tMetric                               uint32\n\tNlMtu                                uint32\n\tConnected                            uint8\n\tSupportsWakeUpPatterns               uint8\n\tSupportsNeighborDiscovery            uint8\n\tSupportsRouterDiscovery              uint8\n\tReachableTime                        uint32\n\tTransmitOffload                      uint32\n\tReceiveOffload                       uint32\n\tDisableDefaultRoutes                 uint8\n}\n\n// Console related constants used for the mode parameter to SetConsoleMode. See\n// https://docs.microsoft.com/en-us/windows/console/setconsolemode for details.\n\nconst (\n\tENABLE_PROCESSED_INPUT        = 0x1\n\tENABLE_LINE_INPUT             = 0x2\n\tENABLE_ECHO_INPUT             = 0x4\n\tENABLE_WINDOW_INPUT           = 0x8\n\tENABLE_MOUSE_INPUT            = 0x10\n\tENABLE_INSERT_MODE            = 0x20\n\tENABLE_QUICK_EDIT_MODE        = 0x40\n\tENABLE_EXTENDED_FLAGS         = 0x80\n\tENABLE_AUTO_POSITION          = 0x100\n\tENABLE_VIRTUAL_TERMINAL_INPUT = 0x200\n\n\tENABLE_PROCESSED_OUTPUT            = 0x1\n\tENABLE_WRAP_AT_EOL_OUTPUT          = 0x2\n\tENABLE_VIRTUAL_TERMINAL_PROCESSING = 0x4\n\tDISABLE_NEWLINE_AUTO_RETURN        = 0x8\n\tENABLE_LVB_GRID_WORLDWIDE          = 0x10\n)\n\n// Pseudo console related constants used for the flags parameter to\n// CreatePseudoConsole. See: https://learn.microsoft.com/en-us/windows/console/createpseudoconsole\nconst (\n\tPSEUDOCONSOLE_INHERIT_CURSOR = 0x1\n)\n\ntype Coord struct {\n\tX int16\n\tY int16\n}\n\ntype SmallRect struct {\n\tLeft   int16\n\tTop    int16\n\tRight  int16\n\tBottom int16\n}\n\n// Used with GetConsoleScreenBuffer to retrieve information about a console\n// screen buffer. See\n// https://docs.microsoft.com/en-us/windows/console/console-screen-buffer-info-str\n// for details.\n\ntype ConsoleScreenBufferInfo struct {\n\tSize              Coord\n\tCursorPosition    Coord\n\tAttributes        uint16\n\tWindow            SmallRect\n\tMaximumWindowSize Coord\n}\n\nconst UNIX_PATH_MAX = 108 // defined in afunix.h\n\nconst (\n\t// flags for JOBOBJECT_BASIC_LIMIT_INFORMATION.LimitFlags\n\tJOB_OBJECT_LIMIT_ACTIVE_PROCESS             = 0x00000008\n\tJOB_OBJECT_LIMIT_AFFINITY                   = 0x00000010\n\tJOB_OBJECT_LIMIT_BREAKAWAY_OK               = 0x00000800\n\tJOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION = 0x00000400\n\tJOB_OBJECT_LIMIT_JOB_MEMORY                 = 0x00000200\n\tJOB_OBJECT_LIMIT_JOB_TIME                   = 0x00000004\n\tJOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE          = 0x00002000\n\tJOB_OBJECT_LIMIT_PRESERVE_JOB_TIME          = 0x00000040\n\tJOB_OBJECT_LIMIT_PRIORITY_CLASS             = 0x00000020\n\tJOB_OBJECT_LIMIT_PROCESS_MEMORY             = 0x00000100\n\tJOB_OBJECT_LIMIT_PROCESS_TIME               = 0x00000002\n\tJOB_OBJECT_LIMIT_SCHEDULING_CLASS           = 0x00000080\n\tJOB_OBJECT_LIMIT_SILENT_BREAKAWAY_OK        = 0x00001000\n\tJOB_OBJECT_LIMIT_SUBSET_AFFINITY            = 0x00004000\n\tJOB_OBJECT_LIMIT_WORKINGSET                 = 0x00000001\n)\n\ntype IO_COUNTERS struct {\n\tReadOperationCount  uint64\n\tWriteOperationCount uint64\n\tOtherOperationCount uint64\n\tReadTransferCount   uint64\n\tWriteTransferCount  uint64\n\tOtherTransferCount  uint64\n}\n\ntype JOBOBJECT_EXTENDED_LIMIT_INFORMATION struct {\n\tBasicLimitInformation JOBOBJECT_BASIC_LIMIT_INFORMATION\n\tIoInfo                IO_COUNTERS\n\tProcessMemoryLimit    uintptr\n\tJobMemoryLimit        uintptr\n\tPeakProcessMemoryUsed uintptr\n\tPeakJobMemoryUsed     uintptr\n}\n\nconst (\n\t// UIRestrictionsClass\n\tJOB_OBJECT_UILIMIT_DESKTOP          = 0x00000040\n\tJOB_OBJECT_UILIMIT_DISPLAYSETTINGS  = 0x00000010\n\tJOB_OBJECT_UILIMIT_EXITWINDOWS      = 0x00000080\n\tJOB_OBJECT_UILIMIT_GLOBALATOMS      = 0x00000020\n\tJOB_OBJECT_UILIMIT_HANDLES          = 0x00000001\n\tJOB_OBJECT_UILIMIT_READCLIPBOARD    = 0x00000002\n\tJOB_OBJECT_UILIMIT_SYSTEMPARAMETERS = 0x00000008\n\tJOB_OBJECT_UILIMIT_WRITECLIPBOARD   = 0x00000004\n)\n\ntype JOBOBJECT_BASIC_UI_RESTRICTIONS struct {\n\tUIRestrictionsClass uint32\n}\n\nconst (\n\t// JobObjectInformationClass for QueryInformationJobObject and SetInformationJobObject\n\tJobObjectAssociateCompletionPortInformation = 7\n\tJobObjectBasicAccountingInformation         = 1\n\tJobObjectBasicAndIoAccountingInformation    = 8\n\tJobObjectBasicLimitInformation              = 2\n\tJobObjectBasicProcessIdList                 = 3\n\tJobObjectBasicUIRestrictions                = 4\n\tJobObjectCpuRateControlInformation          = 15\n\tJobObjectEndOfJobTimeInformation            = 6\n\tJobObjectExtendedLimitInformation           = 9\n\tJobObjectGroupInformation                   = 11\n\tJobObjectGroupInformationEx                 = 14\n\tJobObjectLimitViolationInformation          = 13\n\tJobObjectLimitViolationInformation2         = 34\n\tJobObjectNetRateControlInformation          = 32\n\tJobObjectNotificationLimitInformation       = 12\n\tJobObjectNotificationLimitInformation2      = 33\n\tJobObjectSecurityLimitInformation           = 5\n)\n\nconst (\n\tKF_FLAG_DEFAULT                          = 0x00000000\n\tKF_FLAG_FORCE_APP_DATA_REDIRECTION       = 0x00080000\n\tKF_FLAG_RETURN_FILTER_REDIRECTION_TARGET = 0x00040000\n\tKF_FLAG_FORCE_PACKAGE_REDIRECTION        = 0x00020000\n\tKF_FLAG_NO_PACKAGE_REDIRECTION           = 0x00010000\n\tKF_FLAG_FORCE_APPCONTAINER_REDIRECTION   = 0x00020000\n\tKF_FLAG_NO_APPCONTAINER_REDIRECTION      = 0x00010000\n\tKF_FLAG_CREATE                           = 0x00008000\n\tKF_FLAG_DONT_VERIFY                      = 0x00004000\n\tKF_FLAG_DONT_UNEXPAND                    = 0x00002000\n\tKF_FLAG_NO_ALIAS                         = 0x00001000\n\tKF_FLAG_INIT                             = 0x00000800\n\tKF_FLAG_DEFAULT_PATH                     = 0x00000400\n\tKF_FLAG_NOT_PARENT_RELATIVE              = 0x00000200\n\tKF_FLAG_SIMPLE_IDLIST                    = 0x00000100\n\tKF_FLAG_ALIAS_ONLY                       = 0x80000000\n)\n\ntype OsVersionInfoEx struct {\n\tosVersionInfoSize uint32\n\tMajorVersion      uint32\n\tMinorVersion      uint32\n\tBuildNumber       uint32\n\tPlatformId        uint32\n\tCsdVersion        [128]uint16\n\tServicePackMajor  uint16\n\tServicePackMinor  uint16\n\tSuiteMask         uint16\n\tProductType       byte\n\t_                 byte\n}\n\nconst (\n\tEWX_LOGOFF          = 0x00000000\n\tEWX_SHUTDOWN        = 0x00000001\n\tEWX_REBOOT          = 0x00000002\n\tEWX_FORCE           = 0x00000004\n\tEWX_POWEROFF        = 0x00000008\n\tEWX_FORCEIFHUNG     = 0x00000010\n\tEWX_QUICKRESOLVE    = 0x00000020\n\tEWX_RESTARTAPPS     = 0x00000040\n\tEWX_HYBRID_SHUTDOWN = 0x00400000\n\tEWX_BOOTOPTIONS     = 0x01000000\n\n\tSHTDN_REASON_FLAG_COMMENT_REQUIRED          = 0x01000000\n\tSHTDN_REASON_FLAG_DIRTY_PROBLEM_ID_REQUIRED = 0x02000000\n\tSHTDN_REASON_FLAG_CLEAN_UI                  = 0x04000000\n\tSHTDN_REASON_FLAG_DIRTY_UI                  = 0x08000000\n\tSHTDN_REASON_FLAG_USER_DEFINED              = 0x40000000\n\tSHTDN_REASON_FLAG_PLANNED                   = 0x80000000\n\tSHTDN_REASON_MAJOR_OTHER                    = 0x00000000\n\tSHTDN_REASON_MAJOR_NONE                     = 0x00000000\n\tSHTDN_REASON_MAJOR_HARDWARE                 = 0x00010000\n\tSHTDN_REASON_MAJOR_OPERATINGSYSTEM          = 0x00020000\n\tSHTDN_REASON_MAJOR_SOFTWARE                 = 0x00030000\n\tSHTDN_REASON_MAJOR_APPLICATION              = 0x00040000\n\tSHTDN_REASON_MAJOR_SYSTEM                   = 0x00050000\n\tSHTDN_REASON_MAJOR_POWER                    = 0x00060000\n\tSHTDN_REASON_MAJOR_LEGACY_API               = 0x00070000\n\tSHTDN_REASON_MINOR_OTHER                    = 0x00000000\n\tSHTDN_REASON_MINOR_NONE                     = 0x000000ff\n\tSHTDN_REASON_MINOR_MAINTENANCE              = 0x00000001\n\tSHTDN_REASON_MINOR_INSTALLATION             = 0x00000002\n\tSHTDN_REASON_MINOR_UPGRADE                  = 0x00000003\n\tSHTDN_REASON_MINOR_RECONFIG                 = 0x00000004\n\tSHTDN_REASON_MINOR_HUNG                     = 0x00000005\n\tSHTDN_REASON_MINOR_UNSTABLE                 = 0x00000006\n\tSHTDN_REASON_MINOR_DISK                     = 0x00000007\n\tSHTDN_REASON_MINOR_PROCESSOR                = 0x00000008\n\tSHTDN_REASON_MINOR_NETWORKCARD              = 0x00000009\n\tSHTDN_REASON_MINOR_POWER_SUPPLY             = 0x0000000a\n\tSHTDN_REASON_MINOR_CORDUNPLUGGED            = 0x0000000b\n\tSHTDN_REASON_MINOR_ENVIRONMENT              = 0x0000000c\n\tSHTDN_REASON_MINOR_HARDWARE_DRIVER          = 0x0000000d\n\tSHTDN_REASON_MINOR_OTHERDRIVER              = 0x0000000e\n\tSHTDN_REASON_MINOR_BLUESCREEN               = 0x0000000F\n\tSHTDN_REASON_MINOR_SERVICEPACK              = 0x00000010\n\tSHTDN_REASON_MINOR_HOTFIX                   = 0x00000011\n\tSHTDN_REASON_MINOR_SECURITYFIX              = 0x00000012\n\tSHTDN_REASON_MINOR_SECURITY                 = 0x00000013\n\tSHTDN_REASON_MINOR_NETWORK_CONNECTIVITY     = 0x00000014\n\tSHTDN_REASON_MINOR_WMI                      = 0x00000015\n\tSHTDN_REASON_MINOR_SERVICEPACK_UNINSTALL    = 0x00000016\n\tSHTDN_REASON_MINOR_HOTFIX_UNINSTALL         = 0x00000017\n\tSHTDN_REASON_MINOR_SECURITYFIX_UNINSTALL    = 0x00000018\n\tSHTDN_REASON_MINOR_MMC                      = 0x00000019\n\tSHTDN_REASON_MINOR_SYSTEMRESTORE            = 0x0000001a\n\tSHTDN_REASON_MINOR_TERMSRV                  = 0x00000020\n\tSHTDN_REASON_MINOR_DC_PROMOTION             = 0x00000021\n\tSHTDN_REASON_MINOR_DC_DEMOTION              = 0x00000022\n\tSHTDN_REASON_UNKNOWN                        = SHTDN_REASON_MINOR_NONE\n\tSHTDN_REASON_LEGACY_API                     = SHTDN_REASON_MAJOR_LEGACY_API | SHTDN_REASON_FLAG_PLANNED\n\tSHTDN_REASON_VALID_BIT_MASK                 = 0xc0ffffff\n\n\tSHUTDOWN_NORETRY = 0x1\n)\n\n// Flags used for GetModuleHandleEx\nconst (\n\tGET_MODULE_HANDLE_EX_FLAG_PIN                = 1\n\tGET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT = 2\n\tGET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS       = 4\n)\n\n// MUI function flag values\nconst (\n\tMUI_LANGUAGE_ID                    = 0x4\n\tMUI_LANGUAGE_NAME                  = 0x8\n\tMUI_MERGE_SYSTEM_FALLBACK          = 0x10\n\tMUI_MERGE_USER_FALLBACK            = 0x20\n\tMUI_UI_FALLBACK                    = MUI_MERGE_SYSTEM_FALLBACK | MUI_MERGE_USER_FALLBACK\n\tMUI_THREAD_LANGUAGES               = 0x40\n\tMUI_CONSOLE_FILTER                 = 0x100\n\tMUI_COMPLEX_SCRIPT_FILTER          = 0x200\n\tMUI_RESET_FILTERS                  = 0x001\n\tMUI_USER_PREFERRED_UI_LANGUAGES    = 0x10\n\tMUI_USE_INSTALLED_LANGUAGES        = 0x20\n\tMUI_USE_SEARCH_ALL_LANGUAGES       = 0x40\n\tMUI_LANG_NEUTRAL_PE_FILE           = 0x100\n\tMUI_NON_LANG_NEUTRAL_FILE          = 0x200\n\tMUI_MACHINE_LANGUAGE_SETTINGS      = 0x400\n\tMUI_FILETYPE_NOT_LANGUAGE_NEUTRAL  = 0x001\n\tMUI_FILETYPE_LANGUAGE_NEUTRAL_MAIN = 0x002\n\tMUI_FILETYPE_LANGUAGE_NEUTRAL_MUI  = 0x004\n\tMUI_QUERY_TYPE                     = 0x001\n\tMUI_QUERY_CHECKSUM                 = 0x002\n\tMUI_QUERY_LANGUAGE_NAME            = 0x004\n\tMUI_QUERY_RESOURCE_TYPES           = 0x008\n\tMUI_FILEINFO_VERSION               = 0x001\n\n\tMUI_FULL_LANGUAGE      = 0x01\n\tMUI_PARTIAL_LANGUAGE   = 0x02\n\tMUI_LIP_LANGUAGE       = 0x04\n\tMUI_LANGUAGE_INSTALLED = 0x20\n\tMUI_LANGUAGE_LICENSED  = 0x40\n)\n\n// FILE_INFO_BY_HANDLE_CLASS constants for SetFileInformationByHandle/GetFileInformationByHandleEx\nconst (\n\tFileBasicInfo                  = 0\n\tFileStandardInfo               = 1\n\tFileNameInfo                   = 2\n\tFileRenameInfo                 = 3\n\tFileDispositionInfo            = 4\n\tFileAllocationInfo             = 5\n\tFileEndOfFileInfo              = 6\n\tFileStreamInfo                 = 7\n\tFileCompressionInfo            = 8\n\tFileAttributeTagInfo           = 9\n\tFileIdBothDirectoryInfo        = 10\n\tFileIdBothDirectoryRestartInfo = 11\n\tFileIoPriorityHintInfo         = 12\n\tFileRemoteProtocolInfo         = 13\n\tFileFullDirectoryInfo          = 14\n\tFileFullDirectoryRestartInfo   = 15\n\tFileStorageInfo                = 16\n\tFileAlignmentInfo              = 17\n\tFileIdInfo                     = 18\n\tFileIdExtdDirectoryInfo        = 19\n\tFileIdExtdDirectoryRestartInfo = 20\n\tFileDispositionInfoEx          = 21\n\tFileRenameInfoEx               = 22\n\tFileCaseSensitiveInfo          = 23\n\tFileNormalizedNameInfo         = 24\n)\n\n// LoadLibrary flags for determining from where to search for a DLL\nconst (\n\tDONT_RESOLVE_DLL_REFERENCES               = 0x1\n\tLOAD_LIBRARY_AS_DATAFILE                  = 0x2\n\tLOAD_WITH_ALTERED_SEARCH_PATH             = 0x8\n\tLOAD_IGNORE_CODE_AUTHZ_LEVEL              = 0x10\n\tLOAD_LIBRARY_AS_IMAGE_RESOURCE            = 0x20\n\tLOAD_LIBRARY_AS_DATAFILE_EXCLUSIVE        = 0x40\n\tLOAD_LIBRARY_REQUIRE_SIGNED_TARGET        = 0x80\n\tLOAD_LIBRARY_SEARCH_DLL_LOAD_DIR          = 0x100\n\tLOAD_LIBRARY_SEARCH_APPLICATION_DIR       = 0x200\n\tLOAD_LIBRARY_SEARCH_USER_DIRS             = 0x400\n\tLOAD_LIBRARY_SEARCH_SYSTEM32              = 0x800\n\tLOAD_LIBRARY_SEARCH_DEFAULT_DIRS          = 0x1000\n\tLOAD_LIBRARY_SAFE_CURRENT_DIRS            = 0x00002000\n\tLOAD_LIBRARY_SEARCH_SYSTEM32_NO_FORWARDER = 0x00004000\n\tLOAD_LIBRARY_OS_INTEGRITY_CONTINUITY      = 0x00008000\n)\n\n// RegNotifyChangeKeyValue notifyFilter flags.\nconst (\n\t// REG_NOTIFY_CHANGE_NAME notifies the caller if a subkey is added or deleted.\n\tREG_NOTIFY_CHANGE_NAME = 0x00000001\n\n\t// REG_NOTIFY_CHANGE_ATTRIBUTES notifies the caller of changes to the attributes of the key, such as the security descriptor information.\n\tREG_NOTIFY_CHANGE_ATTRIBUTES = 0x00000002\n\n\t// REG_NOTIFY_CHANGE_LAST_SET notifies the caller of changes to a value of the key. This can include adding or deleting a value, or changing an existing value.\n\tREG_NOTIFY_CHANGE_LAST_SET = 0x00000004\n\n\t// REG_NOTIFY_CHANGE_SECURITY notifies the caller of changes to the security descriptor of the key.\n\tREG_NOTIFY_CHANGE_SECURITY = 0x00000008\n\n\t// REG_NOTIFY_THREAD_AGNOSTIC indicates that the lifetime of the registration must not be tied to the lifetime of the thread issuing the RegNotifyChangeKeyValue call. Note: This flag value is only supported in Windows 8 and later.\n\tREG_NOTIFY_THREAD_AGNOSTIC = 0x10000000\n)\n\ntype CommTimeouts struct {\n\tReadIntervalTimeout         uint32\n\tReadTotalTimeoutMultiplier  uint32\n\tReadTotalTimeoutConstant    uint32\n\tWriteTotalTimeoutMultiplier uint32\n\tWriteTotalTimeoutConstant   uint32\n}\n\n// NTUnicodeString is a UTF-16 string for NT native APIs, corresponding to UNICODE_STRING.\ntype NTUnicodeString struct {\n\t// Note: Length and MaximumLength are in *bytes*, not uint16s.\n\t// They should always be even.\n\tLength        uint16\n\tMaximumLength uint16\n\tBuffer        *uint16\n}\n\n// NTString is an ANSI string for NT native APIs, corresponding to STRING.\ntype NTString struct {\n\tLength        uint16\n\tMaximumLength uint16\n\tBuffer        *byte\n}\n\ntype LIST_ENTRY struct {\n\tFlink *LIST_ENTRY\n\tBlink *LIST_ENTRY\n}\n\ntype RUNTIME_FUNCTION struct {\n\tBeginAddress uint32\n\tEndAddress   uint32\n\tUnwindData   uint32\n}\n\ntype LDR_DATA_TABLE_ENTRY struct {\n\treserved1          [2]uintptr\n\tInMemoryOrderLinks LIST_ENTRY\n\treserved2          [2]uintptr\n\tDllBase            uintptr\n\treserved3          [2]uintptr\n\tFullDllName        NTUnicodeString\n\treserved4          [8]byte\n\treserved5          [3]uintptr\n\treserved6          uintptr\n\tTimeDateStamp      uint32\n}\n\ntype PEB_LDR_DATA struct {\n\treserved1               [8]byte\n\treserved2               [3]uintptr\n\tInMemoryOrderModuleList LIST_ENTRY\n}\n\ntype CURDIR struct {\n\tDosPath NTUnicodeString\n\tHandle  Handle\n}\n\ntype RTL_DRIVE_LETTER_CURDIR struct {\n\tFlags     uint16\n\tLength    uint16\n\tTimeStamp uint32\n\tDosPath   NTString\n}\n\ntype RTL_USER_PROCESS_PARAMETERS struct {\n\tMaximumLength, Length uint32\n\n\tFlags, DebugFlags uint32\n\n\tConsoleHandle                                Handle\n\tConsoleFlags                                 uint32\n\tStandardInput, StandardOutput, StandardError Handle\n\n\tCurrentDirectory CURDIR\n\tDllPath          NTUnicodeString\n\tImagePathName    NTUnicodeString\n\tCommandLine      NTUnicodeString\n\tEnvironment      unsafe.Pointer\n\n\tStartingX, StartingY, CountX, CountY, CountCharsX, CountCharsY, FillAttribute uint32\n\n\tWindowFlags, ShowWindowFlags                     uint32\n\tWindowTitle, DesktopInfo, ShellInfo, RuntimeData NTUnicodeString\n\tCurrentDirectories                               [32]RTL_DRIVE_LETTER_CURDIR\n\n\tEnvironmentSize, EnvironmentVersion uintptr\n\n\tPackageDependencyData unsafe.Pointer\n\tProcessGroupId        uint32\n\tLoaderThreads         uint32\n\n\tRedirectionDllName               NTUnicodeString\n\tHeapPartitionName                NTUnicodeString\n\tDefaultThreadpoolCpuSetMasks     uintptr\n\tDefaultThreadpoolCpuSetMaskCount uint32\n}\n\ntype PEB struct {\n\treserved1              [2]byte\n\tBeingDebugged          byte\n\tBitField               byte\n\treserved3              uintptr\n\tImageBaseAddress       uintptr\n\tLdr                    *PEB_LDR_DATA\n\tProcessParameters      *RTL_USER_PROCESS_PARAMETERS\n\treserved4              [3]uintptr\n\tAtlThunkSListPtr       uintptr\n\treserved5              uintptr\n\treserved6              uint32\n\treserved7              uintptr\n\treserved8              uint32\n\tAtlThunkSListPtr32     uint32\n\treserved9              [45]uintptr\n\treserved10             [96]byte\n\tPostProcessInitRoutine uintptr\n\treserved11             [128]byte\n\treserved12             [1]uintptr\n\tSessionId              uint32\n}\n\ntype OBJECT_ATTRIBUTES struct {\n\tLength             uint32\n\tRootDirectory      Handle\n\tObjectName         *NTUnicodeString\n\tAttributes         uint32\n\tSecurityDescriptor *SECURITY_DESCRIPTOR\n\tSecurityQoS        *SECURITY_QUALITY_OF_SERVICE\n}\n\n// Values for the Attributes member of OBJECT_ATTRIBUTES.\nconst (\n\tOBJ_INHERIT                       = 0x00000002\n\tOBJ_PERMANENT                     = 0x00000010\n\tOBJ_EXCLUSIVE                     = 0x00000020\n\tOBJ_CASE_INSENSITIVE              = 0x00000040\n\tOBJ_OPENIF                        = 0x00000080\n\tOBJ_OPENLINK                      = 0x00000100\n\tOBJ_KERNEL_HANDLE                 = 0x00000200\n\tOBJ_FORCE_ACCESS_CHECK            = 0x00000400\n\tOBJ_IGNORE_IMPERSONATED_DEVICEMAP = 0x00000800\n\tOBJ_DONT_REPARSE                  = 0x00001000\n\tOBJ_VALID_ATTRIBUTES              = 0x00001FF2\n)\n\ntype IO_STATUS_BLOCK struct {\n\tStatus      NTStatus\n\tInformation uintptr\n}\n\ntype RTLP_CURDIR_REF struct {\n\tRefCount int32\n\tHandle   Handle\n}\n\ntype RTL_RELATIVE_NAME struct {\n\tRelativeName        NTUnicodeString\n\tContainingDirectory Handle\n\tCurDirRef           *RTLP_CURDIR_REF\n}\n\nconst (\n\t// CreateDisposition flags for NtCreateFile and NtCreateNamedPipeFile.\n\tFILE_SUPERSEDE           = 0x00000000\n\tFILE_OPEN                = 0x00000001\n\tFILE_CREATE              = 0x00000002\n\tFILE_OPEN_IF             = 0x00000003\n\tFILE_OVERWRITE           = 0x00000004\n\tFILE_OVERWRITE_IF        = 0x00000005\n\tFILE_MAXIMUM_DISPOSITION = 0x00000005\n\n\t// CreateOptions flags for NtCreateFile and NtCreateNamedPipeFile.\n\tFILE_DIRECTORY_FILE            = 0x00000001\n\tFILE_WRITE_THROUGH             = 0x00000002\n\tFILE_SEQUENTIAL_ONLY           = 0x00000004\n\tFILE_NO_INTERMEDIATE_BUFFERING = 0x00000008\n\tFILE_SYNCHRONOUS_IO_ALERT      = 0x00000010\n\tFILE_SYNCHRONOUS_IO_NONALERT   = 0x00000020\n\tFILE_NON_DIRECTORY_FILE        = 0x00000040\n\tFILE_CREATE_TREE_CONNECTION    = 0x00000080\n\tFILE_COMPLETE_IF_OPLOCKED      = 0x00000100\n\tFILE_NO_EA_KNOWLEDGE           = 0x00000200\n\tFILE_OPEN_REMOTE_INSTANCE      = 0x00000400\n\tFILE_RANDOM_ACCESS             = 0x00000800\n\tFILE_DELETE_ON_CLOSE           = 0x00001000\n\tFILE_OPEN_BY_FILE_ID           = 0x00002000\n\tFILE_OPEN_FOR_BACKUP_INTENT    = 0x00004000\n\tFILE_NO_COMPRESSION            = 0x00008000\n\tFILE_OPEN_REQUIRING_OPLOCK     = 0x00010000\n\tFILE_DISALLOW_EXCLUSIVE        = 0x00020000\n\tFILE_RESERVE_OPFILTER          = 0x00100000\n\tFILE_OPEN_REPARSE_POINT        = 0x00200000\n\tFILE_OPEN_NO_RECALL            = 0x00400000\n\tFILE_OPEN_FOR_FREE_SPACE_QUERY = 0x00800000\n\n\t// Parameter constants for NtCreateNamedPipeFile.\n\n\tFILE_PIPE_BYTE_STREAM_TYPE = 0x00000000\n\tFILE_PIPE_MESSAGE_TYPE     = 0x00000001\n\n\tFILE_PIPE_ACCEPT_REMOTE_CLIENTS = 0x00000000\n\tFILE_PIPE_REJECT_REMOTE_CLIENTS = 0x00000002\n\n\tFILE_PIPE_TYPE_VALID_MASK = 0x00000003\n\n\tFILE_PIPE_BYTE_STREAM_MODE = 0x00000000\n\tFILE_PIPE_MESSAGE_MODE     = 0x00000001\n\n\tFILE_PIPE_QUEUE_OPERATION    = 0x00000000\n\tFILE_PIPE_COMPLETE_OPERATION = 0x00000001\n\n\tFILE_PIPE_INBOUND     = 0x00000000\n\tFILE_PIPE_OUTBOUND    = 0x00000001\n\tFILE_PIPE_FULL_DUPLEX = 0x00000002\n\n\tFILE_PIPE_DISCONNECTED_STATE = 0x00000001\n\tFILE_PIPE_LISTENING_STATE    = 0x00000002\n\tFILE_PIPE_CONNECTED_STATE    = 0x00000003\n\tFILE_PIPE_CLOSING_STATE      = 0x00000004\n\n\tFILE_PIPE_CLIENT_END = 0x00000000\n\tFILE_PIPE_SERVER_END = 0x00000001\n)\n\nconst (\n\t// FileInformationClass for NtSetInformationFile\n\tFileBasicInformation                         = 4\n\tFileRenameInformation                        = 10\n\tFileDispositionInformation                   = 13\n\tFilePositionInformation                      = 14\n\tFileEndOfFileInformation                     = 20\n\tFileValidDataLengthInformation               = 39\n\tFileShortNameInformation                     = 40\n\tFileIoPriorityHintInformation                = 43\n\tFileReplaceCompletionInformation             = 61\n\tFileDispositionInformationEx                 = 64\n\tFileCaseSensitiveInformation                 = 71\n\tFileLinkInformation                          = 72\n\tFileCaseSensitiveInformationForceAccessCheck = 75\n\tFileKnownFolderInformation                   = 76\n\n\t// Flags for FILE_RENAME_INFORMATION\n\tFILE_RENAME_REPLACE_IF_EXISTS                    = 0x00000001\n\tFILE_RENAME_POSIX_SEMANTICS                      = 0x00000002\n\tFILE_RENAME_SUPPRESS_PIN_STATE_INHERITANCE       = 0x00000004\n\tFILE_RENAME_SUPPRESS_STORAGE_RESERVE_INHERITANCE = 0x00000008\n\tFILE_RENAME_NO_INCREASE_AVAILABLE_SPACE          = 0x00000010\n\tFILE_RENAME_NO_DECREASE_AVAILABLE_SPACE          = 0x00000020\n\tFILE_RENAME_PRESERVE_AVAILABLE_SPACE             = 0x00000030\n\tFILE_RENAME_IGNORE_READONLY_ATTRIBUTE            = 0x00000040\n\tFILE_RENAME_FORCE_RESIZE_TARGET_SR               = 0x00000080\n\tFILE_RENAME_FORCE_RESIZE_SOURCE_SR               = 0x00000100\n\tFILE_RENAME_FORCE_RESIZE_SR                      = 0x00000180\n\n\t// Flags for FILE_DISPOSITION_INFORMATION_EX\n\tFILE_DISPOSITION_DO_NOT_DELETE             = 0x00000000\n\tFILE_DISPOSITION_DELETE                    = 0x00000001\n\tFILE_DISPOSITION_POSIX_SEMANTICS           = 0x00000002\n\tFILE_DISPOSITION_FORCE_IMAGE_SECTION_CHECK = 0x00000004\n\tFILE_DISPOSITION_ON_CLOSE                  = 0x00000008\n\tFILE_DISPOSITION_IGNORE_READONLY_ATTRIBUTE = 0x00000010\n\n\t// Flags for FILE_CASE_SENSITIVE_INFORMATION\n\tFILE_CS_FLAG_CASE_SENSITIVE_DIR = 0x00000001\n\n\t// Flags for FILE_LINK_INFORMATION\n\tFILE_LINK_REPLACE_IF_EXISTS                    = 0x00000001\n\tFILE_LINK_POSIX_SEMANTICS                      = 0x00000002\n\tFILE_LINK_SUPPRESS_STORAGE_RESERVE_INHERITANCE = 0x00000008\n\tFILE_LINK_NO_INCREASE_AVAILABLE_SPACE          = 0x00000010\n\tFILE_LINK_NO_DECREASE_AVAILABLE_SPACE          = 0x00000020\n\tFILE_LINK_PRESERVE_AVAILABLE_SPACE             = 0x00000030\n\tFILE_LINK_IGNORE_READONLY_ATTRIBUTE            = 0x00000040\n\tFILE_LINK_FORCE_RESIZE_TARGET_SR               = 0x00000080\n\tFILE_LINK_FORCE_RESIZE_SOURCE_SR               = 0x00000100\n\tFILE_LINK_FORCE_RESIZE_SR                      = 0x00000180\n)\n\n// ProcessInformationClasses for NtQueryInformationProcess and NtSetInformationProcess.\nconst (\n\tProcessBasicInformation = iota\n\tProcessQuotaLimits\n\tProcessIoCounters\n\tProcessVmCounters\n\tProcessTimes\n\tProcessBasePriority\n\tProcessRaisePriority\n\tProcessDebugPort\n\tProcessExceptionPort\n\tProcessAccessToken\n\tProcessLdtInformation\n\tProcessLdtSize\n\tProcessDefaultHardErrorMode\n\tProcessIoPortHandlers\n\tProcessPooledUsageAndLimits\n\tProcessWorkingSetWatch\n\tProcessUserModeIOPL\n\tProcessEnableAlignmentFaultFixup\n\tProcessPriorityClass\n\tProcessWx86Information\n\tProcessHandleCount\n\tProcessAffinityMask\n\tProcessPriorityBoost\n\tProcessDeviceMap\n\tProcessSessionInformation\n\tProcessForegroundInformation\n\tProcessWow64Information\n\tProcessImageFileName\n\tProcessLUIDDeviceMapsEnabled\n\tProcessBreakOnTermination\n\tProcessDebugObjectHandle\n\tProcessDebugFlags\n\tProcessHandleTracing\n\tProcessIoPriority\n\tProcessExecuteFlags\n\tProcessTlsInformation\n\tProcessCookie\n\tProcessImageInformation\n\tProcessCycleTime\n\tProcessPagePriority\n\tProcessInstrumentationCallback\n\tProcessThreadStackAllocation\n\tProcessWorkingSetWatchEx\n\tProcessImageFileNameWin32\n\tProcessImageFileMapping\n\tProcessAffinityUpdateMode\n\tProcessMemoryAllocationMode\n\tProcessGroupInformation\n\tProcessTokenVirtualizationEnabled\n\tProcessConsoleHostProcess\n\tProcessWindowInformation\n\tProcessHandleInformation\n\tProcessMitigationPolicy\n\tProcessDynamicFunctionTableInformation\n\tProcessHandleCheckingMode\n\tProcessKeepAliveCount\n\tProcessRevokeFileHandles\n\tProcessWorkingSetControl\n\tProcessHandleTable\n\tProcessCheckStackExtentsMode\n\tProcessCommandLineInformation\n\tProcessProtectionInformation\n\tProcessMemoryExhaustion\n\tProcessFaultInformation\n\tProcessTelemetryIdInformation\n\tProcessCommitReleaseInformation\n\tProcessDefaultCpuSetsInformation\n\tProcessAllowedCpuSetsInformation\n\tProcessSubsystemProcess\n\tProcessJobMemoryInformation\n\tProcessInPrivate\n\tProcessRaiseUMExceptionOnInvalidHandleClose\n\tProcessIumChallengeResponse\n\tProcessChildProcessInformation\n\tProcessHighGraphicsPriorityInformation\n\tProcessSubsystemInformation\n\tProcessEnergyValues\n\tProcessActivityThrottleState\n\tProcessActivityThrottlePolicy\n\tProcessWin32kSyscallFilterInformation\n\tProcessDisableSystemAllowedCpuSets\n\tProcessWakeInformation\n\tProcessEnergyTrackingState\n\tProcessManageWritesToExecutableMemory\n\tProcessCaptureTrustletLiveDump\n\tProcessTelemetryCoverage\n\tProcessEnclaveInformation\n\tProcessEnableReadWriteVmLogging\n\tProcessUptimeInformation\n\tProcessImageSection\n\tProcessDebugAuthInformation\n\tProcessSystemResourceManagement\n\tProcessSequenceNumber\n\tProcessLoaderDetour\n\tProcessSecurityDomainInformation\n\tProcessCombineSecurityDomainsInformation\n\tProcessEnableLogging\n\tProcessLeapSecondInformation\n\tProcessFiberShadowStackAllocation\n\tProcessFreeFiberShadowStackAllocation\n\tProcessAltSystemCallInformation\n\tProcessDynamicEHContinuationTargets\n\tProcessDynamicEnforcedCetCompatibleRanges\n)\n\ntype PROCESS_BASIC_INFORMATION struct {\n\tExitStatus                   NTStatus\n\tPebBaseAddress               *PEB\n\tAffinityMask                 uintptr\n\tBasePriority                 int32\n\tUniqueProcessId              uintptr\n\tInheritedFromUniqueProcessId uintptr\n}\n\ntype SYSTEM_PROCESS_INFORMATION struct {\n\tNextEntryOffset              uint32\n\tNumberOfThreads              uint32\n\tWorkingSetPrivateSize        int64\n\tHardFaultCount               uint32\n\tNumberOfThreadsHighWatermark uint32\n\tCycleTime                    uint64\n\tCreateTime                   int64\n\tUserTime                     int64\n\tKernelTime                   int64\n\tImageName                    NTUnicodeString\n\tBasePriority                 int32\n\tUniqueProcessID              uintptr\n\tInheritedFromUniqueProcessID uintptr\n\tHandleCount                  uint32\n\tSessionID                    uint32\n\tUniqueProcessKey             *uint32\n\tPeakVirtualSize              uintptr\n\tVirtualSize                  uintptr\n\tPageFaultCount               uint32\n\tPeakWorkingSetSize           uintptr\n\tWorkingSetSize               uintptr\n\tQuotaPeakPagedPoolUsage      uintptr\n\tQuotaPagedPoolUsage          uintptr\n\tQuotaPeakNonPagedPoolUsage   uintptr\n\tQuotaNonPagedPoolUsage       uintptr\n\tPagefileUsage                uintptr\n\tPeakPagefileUsage            uintptr\n\tPrivatePageCount             uintptr\n\tReadOperationCount           int64\n\tWriteOperationCount          int64\n\tOtherOperationCount          int64\n\tReadTransferCount            int64\n\tWriteTransferCount           int64\n\tOtherTransferCount           int64\n}\n\n// SystemInformationClasses for NtQuerySystemInformation and NtSetSystemInformation\nconst (\n\tSystemBasicInformation = iota\n\tSystemProcessorInformation\n\tSystemPerformanceInformation\n\tSystemTimeOfDayInformation\n\tSystemPathInformation\n\tSystemProcessInformation\n\tSystemCallCountInformation\n\tSystemDeviceInformation\n\tSystemProcessorPerformanceInformation\n\tSystemFlagsInformation\n\tSystemCallTimeInformation\n\tSystemModuleInformation\n\tSystemLocksInformation\n\tSystemStackTraceInformation\n\tSystemPagedPoolInformation\n\tSystemNonPagedPoolInformation\n\tSystemHandleInformation\n\tSystemObjectInformation\n\tSystemPageFileInformation\n\tSystemVdmInstemulInformation\n\tSystemVdmBopInformation\n\tSystemFileCacheInformation\n\tSystemPoolTagInformation\n\tSystemInterruptInformation\n\tSystemDpcBehaviorInformation\n\tSystemFullMemoryInformation\n\tSystemLoadGdiDriverInformation\n\tSystemUnloadGdiDriverInformation\n\tSystemTimeAdjustmentInformation\n\tSystemSummaryMemoryInformation\n\tSystemMirrorMemoryInformation\n\tSystemPerformanceTraceInformation\n\tsystemObsolete0\n\tSystemExceptionInformation\n\tSystemCrashDumpStateInformation\n\tSystemKernelDebuggerInformation\n\tSystemContextSwitchInformation\n\tSystemRegistryQuotaInformation\n\tSystemExtendServiceTableInformation\n\tSystemPrioritySeperation\n\tSystemVerifierAddDriverInformation\n\tSystemVerifierRemoveDriverInformation\n\tSystemProcessorIdleInformation\n\tSystemLegacyDriverInformation\n\tSystemCurrentTimeZoneInformation\n\tSystemLookasideInformation\n\tSystemTimeSlipNotification\n\tSystemSessionCreate\n\tSystemSessionDetach\n\tSystemSessionInformation\n\tSystemRangeStartInformation\n\tSystemVerifierInformation\n\tSystemVerifierThunkExtend\n\tSystemSessionProcessInformation\n\tSystemLoadGdiDriverInSystemSpace\n\tSystemNumaProcessorMap\n\tSystemPrefetcherInformation\n\tSystemExtendedProcessInformation\n\tSystemRecommendedSharedDataAlignment\n\tSystemComPlusPackage\n\tSystemNumaAvailableMemory\n\tSystemProcessorPowerInformation\n\tSystemEmulationBasicInformation\n\tSystemEmulationProcessorInformation\n\tSystemExtendedHandleInformation\n\tSystemLostDelayedWriteInformation\n\tSystemBigPoolInformation\n\tSystemSessionPoolTagInformation\n\tSystemSessionMappedViewInformation\n\tSystemHotpatchInformation\n\tSystemObjectSecurityMode\n\tSystemWatchdogTimerHandler\n\tSystemWatchdogTimerInformation\n\tSystemLogicalProcessorInformation\n\tSystemWow64SharedInformationObsolete\n\tSystemRegisterFirmwareTableInformationHandler\n\tSystemFirmwareTableInformation\n\tSystemModuleInformationEx\n\tSystemVerifierTriageInformation\n\tSystemSuperfetchInformation\n\tSystemMemoryListInformation\n\tSystemFileCacheInformationEx\n\tSystemThreadPriorityClientIdInformation\n\tSystemProcessorIdleCycleTimeInformation\n\tSystemVerifierCancellationInformation\n\tSystemProcessorPowerInformationEx\n\tSystemRefTraceInformation\n\tSystemSpecialPoolInformation\n\tSystemProcessIdInformation\n\tSystemErrorPortInformation\n\tSystemBootEnvironmentInformation\n\tSystemHypervisorInformation\n\tSystemVerifierInformationEx\n\tSystemTimeZoneInformation\n\tSystemImageFileExecutionOptionsInformation\n\tSystemCoverageInformation\n\tSystemPrefetchPatchInformation\n\tSystemVerifierFaultsInformation\n\tSystemSystemPartitionInformation\n\tSystemSystemDiskInformation\n\tSystemProcessorPerformanceDistribution\n\tSystemNumaProximityNodeInformation\n\tSystemDynamicTimeZoneInformation\n\tSystemCodeIntegrityInformation\n\tSystemProcessorMicrocodeUpdateInformation\n\tSystemProcessorBrandString\n\tSystemVirtualAddressInformation\n\tSystemLogicalProcessorAndGroupInformation\n\tSystemProcessorCycleTimeInformation\n\tSystemStoreInformation\n\tSystemRegistryAppendString\n\tSystemAitSamplingValue\n\tSystemVhdBootInformation\n\tSystemCpuQuotaInformation\n\tSystemNativeBasicInformation\n\tsystemSpare1\n\tSystemLowPriorityIoInformation\n\tSystemTpmBootEntropyInformation\n\tSystemVerifierCountersInformation\n\tSystemPagedPoolInformationEx\n\tSystemSystemPtesInformationEx\n\tSystemNodeDistanceInformation\n\tSystemAcpiAuditInformation\n\tSystemBasicPerformanceInformation\n\tSystemQueryPerformanceCounterInformation\n\tSystemSessionBigPoolInformation\n\tSystemBootGraphicsInformation\n\tSystemScrubPhysicalMemoryInformation\n\tSystemBadPageInformation\n\tSystemProcessorProfileControlArea\n\tSystemCombinePhysicalMemoryInformation\n\tSystemEntropyInterruptTimingCallback\n\tSystemConsoleInformation\n\tSystemPlatformBinaryInformation\n\tSystemThrottleNotificationInformation\n\tSystemHypervisorProcessorCountInformation\n\tSystemDeviceDataInformation\n\tSystemDeviceDataEnumerationInformation\n\tSystemMemoryTopologyInformation\n\tSystemMemoryChannelInformation\n\tSystemBootLogoInformation\n\tSystemProcessorPerformanceInformationEx\n\tsystemSpare0\n\tSystemSecureBootPolicyInformation\n\tSystemPageFileInformationEx\n\tSystemSecureBootInformation\n\tSystemEntropyInterruptTimingRawInformation\n\tSystemPortableWorkspaceEfiLauncherInformation\n\tSystemFullProcessInformation\n\tSystemKernelDebuggerInformationEx\n\tSystemBootMetadataInformation\n\tSystemSoftRebootInformation\n\tSystemElamCertificateInformation\n\tSystemOfflineDumpConfigInformation\n\tSystemProcessorFeaturesInformation\n\tSystemRegistryReconciliationInformation\n\tSystemEdidInformation\n\tSystemManufacturingInformation\n\tSystemEnergyEstimationConfigInformation\n\tSystemHypervisorDetailInformation\n\tSystemProcessorCycleStatsInformation\n\tSystemVmGenerationCountInformation\n\tSystemTrustedPlatformModuleInformation\n\tSystemKernelDebuggerFlags\n\tSystemCodeIntegrityPolicyInformation\n\tSystemIsolatedUserModeInformation\n\tSystemHardwareSecurityTestInterfaceResultsInformation\n\tSystemSingleModuleInformation\n\tSystemAllowedCpuSetsInformation\n\tSystemDmaProtectionInformation\n\tSystemInterruptCpuSetsInformation\n\tSystemSecureBootPolicyFullInformation\n\tSystemCodeIntegrityPolicyFullInformation\n\tSystemAffinitizedInterruptProcessorInformation\n\tSystemRootSiloInformation\n)\n\ntype RTL_PROCESS_MODULE_INFORMATION struct {\n\tSection          Handle\n\tMappedBase       uintptr\n\tImageBase        uintptr\n\tImageSize        uint32\n\tFlags            uint32\n\tLoadOrderIndex   uint16\n\tInitOrderIndex   uint16\n\tLoadCount        uint16\n\tOffsetToFileName uint16\n\tFullPathName     [256]byte\n}\n\ntype RTL_PROCESS_MODULES struct {\n\tNumberOfModules uint32\n\tModules         [1]RTL_PROCESS_MODULE_INFORMATION\n}\n\n// Constants for LocalAlloc flags.\nconst (\n\tLMEM_FIXED          = 0x0\n\tLMEM_MOVEABLE       = 0x2\n\tLMEM_NOCOMPACT      = 0x10\n\tLMEM_NODISCARD      = 0x20\n\tLMEM_ZEROINIT       = 0x40\n\tLMEM_MODIFY         = 0x80\n\tLMEM_DISCARDABLE    = 0xf00\n\tLMEM_VALID_FLAGS    = 0xf72\n\tLMEM_INVALID_HANDLE = 0x8000\n\tLHND                = LMEM_MOVEABLE | LMEM_ZEROINIT\n\tLPTR                = LMEM_FIXED | LMEM_ZEROINIT\n\tNONZEROLHND         = LMEM_MOVEABLE\n\tNONZEROLPTR         = LMEM_FIXED\n)\n\n// Constants for the CreateNamedPipe-family of functions.\nconst (\n\tPIPE_ACCESS_INBOUND  = 0x1\n\tPIPE_ACCESS_OUTBOUND = 0x2\n\tPIPE_ACCESS_DUPLEX   = 0x3\n\n\tPIPE_CLIENT_END = 0x0\n\tPIPE_SERVER_END = 0x1\n\n\tPIPE_WAIT                  = 0x0\n\tPIPE_NOWAIT                = 0x1\n\tPIPE_READMODE_BYTE         = 0x0\n\tPIPE_READMODE_MESSAGE      = 0x2\n\tPIPE_TYPE_BYTE             = 0x0\n\tPIPE_TYPE_MESSAGE          = 0x4\n\tPIPE_ACCEPT_REMOTE_CLIENTS = 0x0\n\tPIPE_REJECT_REMOTE_CLIENTS = 0x8\n\n\tPIPE_UNLIMITED_INSTANCES = 255\n)\n\n// Constants for security attributes when opening named pipes.\nconst (\n\tSECURITY_ANONYMOUS      = SecurityAnonymous << 16\n\tSECURITY_IDENTIFICATION = SecurityIdentification << 16\n\tSECURITY_IMPERSONATION  = SecurityImpersonation << 16\n\tSECURITY_DELEGATION     = SecurityDelegation << 16\n\n\tSECURITY_CONTEXT_TRACKING = 0x40000\n\tSECURITY_EFFECTIVE_ONLY   = 0x80000\n\n\tSECURITY_SQOS_PRESENT     = 0x100000\n\tSECURITY_VALID_SQOS_FLAGS = 0x1f0000\n)\n\n// ResourceID represents a 16-bit resource identifier, traditionally created with the MAKEINTRESOURCE macro.\ntype ResourceID uint16\n\n// ResourceIDOrString must be either a ResourceID, to specify a resource or resource type by ID,\n// or a string, to specify a resource or resource type by name.\ntype ResourceIDOrString interface{}\n\n// Predefined resource names and types.\nvar (\n\t// Predefined names.\n\tCREATEPROCESS_MANIFEST_RESOURCE_ID                 ResourceID = 1\n\tISOLATIONAWARE_MANIFEST_RESOURCE_ID                ResourceID = 2\n\tISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID ResourceID = 3\n\tISOLATIONPOLICY_MANIFEST_RESOURCE_ID               ResourceID = 4\n\tISOLATIONPOLICY_BROWSER_MANIFEST_RESOURCE_ID       ResourceID = 5\n\tMINIMUM_RESERVED_MANIFEST_RESOURCE_ID              ResourceID = 1  // inclusive\n\tMAXIMUM_RESERVED_MANIFEST_RESOURCE_ID              ResourceID = 16 // inclusive\n\n\t// Predefined types.\n\tRT_CURSOR       ResourceID = 1\n\tRT_BITMAP       ResourceID = 2\n\tRT_ICON         ResourceID = 3\n\tRT_MENU         ResourceID = 4\n\tRT_DIALOG       ResourceID = 5\n\tRT_STRING       ResourceID = 6\n\tRT_FONTDIR      ResourceID = 7\n\tRT_FONT         ResourceID = 8\n\tRT_ACCELERATOR  ResourceID = 9\n\tRT_RCDATA       ResourceID = 10\n\tRT_MESSAGETABLE ResourceID = 11\n\tRT_GROUP_CURSOR ResourceID = 12\n\tRT_GROUP_ICON   ResourceID = 14\n\tRT_VERSION      ResourceID = 16\n\tRT_DLGINCLUDE   ResourceID = 17\n\tRT_PLUGPLAY     ResourceID = 19\n\tRT_VXD          ResourceID = 20\n\tRT_ANICURSOR    ResourceID = 21\n\tRT_ANIICON      ResourceID = 22\n\tRT_HTML         ResourceID = 23\n\tRT_MANIFEST     ResourceID = 24\n)\n\ntype VS_FIXEDFILEINFO struct {\n\tSignature        uint32\n\tStrucVersion     uint32\n\tFileVersionMS    uint32\n\tFileVersionLS    uint32\n\tProductVersionMS uint32\n\tProductVersionLS uint32\n\tFileFlagsMask    uint32\n\tFileFlags        uint32\n\tFileOS           uint32\n\tFileType         uint32\n\tFileSubtype      uint32\n\tFileDateMS       uint32\n\tFileDateLS       uint32\n}\n\ntype COAUTHIDENTITY struct {\n\tUser           *uint16\n\tUserLength     uint32\n\tDomain         *uint16\n\tDomainLength   uint32\n\tPassword       *uint16\n\tPasswordLength uint32\n\tFlags          uint32\n}\n\ntype COAUTHINFO struct {\n\tAuthnSvc           uint32\n\tAuthzSvc           uint32\n\tServerPrincName    *uint16\n\tAuthnLevel         uint32\n\tImpersonationLevel uint32\n\tAuthIdentityData   *COAUTHIDENTITY\n\tCapabilities       uint32\n}\n\ntype COSERVERINFO struct {\n\tReserved1 uint32\n\tAame      *uint16\n\tAuthInfo  *COAUTHINFO\n\tReserved2 uint32\n}\n\ntype BIND_OPTS3 struct {\n\tCbStruct          uint32\n\tFlags             uint32\n\tMode              uint32\n\tTickCountDeadline uint32\n\tTrackFlags        uint32\n\tClassContext      uint32\n\tLocale            uint32\n\tServerInfo        *COSERVERINFO\n\tHwnd              HWND\n}\n\nconst (\n\tCLSCTX_INPROC_SERVER          = 0x1\n\tCLSCTX_INPROC_HANDLER         = 0x2\n\tCLSCTX_LOCAL_SERVER           = 0x4\n\tCLSCTX_INPROC_SERVER16        = 0x8\n\tCLSCTX_REMOTE_SERVER          = 0x10\n\tCLSCTX_INPROC_HANDLER16       = 0x20\n\tCLSCTX_RESERVED1              = 0x40\n\tCLSCTX_RESERVED2              = 0x80\n\tCLSCTX_RESERVED3              = 0x100\n\tCLSCTX_RESERVED4              = 0x200\n\tCLSCTX_NO_CODE_DOWNLOAD       = 0x400\n\tCLSCTX_RESERVED5              = 0x800\n\tCLSCTX_NO_CUSTOM_MARSHAL      = 0x1000\n\tCLSCTX_ENABLE_CODE_DOWNLOAD   = 0x2000\n\tCLSCTX_NO_FAILURE_LOG         = 0x4000\n\tCLSCTX_DISABLE_AAA            = 0x8000\n\tCLSCTX_ENABLE_AAA             = 0x10000\n\tCLSCTX_FROM_DEFAULT_CONTEXT   = 0x20000\n\tCLSCTX_ACTIVATE_32_BIT_SERVER = 0x40000\n\tCLSCTX_ACTIVATE_64_BIT_SERVER = 0x80000\n\tCLSCTX_ENABLE_CLOAKING        = 0x100000\n\tCLSCTX_APPCONTAINER           = 0x400000\n\tCLSCTX_ACTIVATE_AAA_AS_IU     = 0x800000\n\tCLSCTX_PS_DLL                 = 0x80000000\n\n\tCOINIT_MULTITHREADED     = 0x0\n\tCOINIT_APARTMENTTHREADED = 0x2\n\tCOINIT_DISABLE_OLE1DDE   = 0x4\n\tCOINIT_SPEED_OVER_MEMORY = 0x8\n)\n\n// Flag for QueryFullProcessImageName.\nconst PROCESS_NAME_NATIVE = 1\n\ntype ModuleInfo struct {\n\tBaseOfDll   uintptr\n\tSizeOfImage uint32\n\tEntryPoint  uintptr\n}\n\nconst ALL_PROCESSOR_GROUPS = 0xFFFF\n\ntype Rect struct {\n\tLeft   int32\n\tTop    int32\n\tRight  int32\n\tBottom int32\n}\n\ntype GUIThreadInfo struct {\n\tSize        uint32\n\tFlags       uint32\n\tActive      HWND\n\tFocus       HWND\n\tCapture     HWND\n\tMenuOwner   HWND\n\tMoveSize    HWND\n\tCaretHandle HWND\n\tCaretRect   Rect\n}\n\nconst (\n\tDWMWA_NCRENDERING_ENABLED            = 1\n\tDWMWA_NCRENDERING_POLICY             = 2\n\tDWMWA_TRANSITIONS_FORCEDISABLED      = 3\n\tDWMWA_ALLOW_NCPAINT                  = 4\n\tDWMWA_CAPTION_BUTTON_BOUNDS          = 5\n\tDWMWA_NONCLIENT_RTL_LAYOUT           = 6\n\tDWMWA_FORCE_ICONIC_REPRESENTATION    = 7\n\tDWMWA_FLIP3D_POLICY                  = 8\n\tDWMWA_EXTENDED_FRAME_BOUNDS          = 9\n\tDWMWA_HAS_ICONIC_BITMAP              = 10\n\tDWMWA_DISALLOW_PEEK                  = 11\n\tDWMWA_EXCLUDED_FROM_PEEK             = 12\n\tDWMWA_CLOAK                          = 13\n\tDWMWA_CLOAKED                        = 14\n\tDWMWA_FREEZE_REPRESENTATION          = 15\n\tDWMWA_PASSIVE_UPDATE_MODE            = 16\n\tDWMWA_USE_HOSTBACKDROPBRUSH          = 17\n\tDWMWA_USE_IMMERSIVE_DARK_MODE        = 20\n\tDWMWA_WINDOW_CORNER_PREFERENCE       = 33\n\tDWMWA_BORDER_COLOR                   = 34\n\tDWMWA_CAPTION_COLOR                  = 35\n\tDWMWA_TEXT_COLOR                     = 36\n\tDWMWA_VISIBLE_FRAME_BORDER_THICKNESS = 37\n)\n\ntype WSAQUERYSET struct {\n\tSize                uint32\n\tServiceInstanceName *uint16\n\tServiceClassId      *GUID\n\tVersion             *WSAVersion\n\tComment             *uint16\n\tNameSpace           uint32\n\tNSProviderId        *GUID\n\tContext             *uint16\n\tNumberOfProtocols   uint32\n\tAfpProtocols        *AFProtocols\n\tQueryString         *uint16\n\tNumberOfCsAddrs     uint32\n\tSaBuffer            *CSAddrInfo\n\tOutputFlags         uint32\n\tBlob                *BLOB\n}\n\ntype WSAVersion struct {\n\tVersion                 uint32\n\tEnumerationOfComparison int32\n}\n\ntype AFProtocols struct {\n\tAddressFamily int32\n\tProtocol      int32\n}\n\ntype CSAddrInfo struct {\n\tLocalAddr  SocketAddress\n\tRemoteAddr SocketAddress\n\tSocketType int32\n\tProtocol   int32\n}\n\ntype BLOB struct {\n\tSize     uint32\n\tBlobData *byte\n}\n\ntype ComStat struct {\n\tFlags    uint32\n\tCBInQue  uint32\n\tCBOutQue uint32\n}\n\ntype DCB struct {\n\tDCBlength  uint32\n\tBaudRate   uint32\n\tFlags      uint32\n\twReserved  uint16\n\tXonLim     uint16\n\tXoffLim    uint16\n\tByteSize   uint8\n\tParity     uint8\n\tStopBits   uint8\n\tXonChar    byte\n\tXoffChar   byte\n\tErrorChar  byte\n\tEofChar    byte\n\tEvtChar    byte\n\twReserved1 uint16\n}\n\n// Keyboard Layout Flags.\n// See https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-loadkeyboardlayoutw\nconst (\n\tKLF_ACTIVATE      = 0x00000001\n\tKLF_SUBSTITUTE_OK = 0x00000002\n\tKLF_REORDER       = 0x00000008\n\tKLF_REPLACELANG   = 0x00000010\n\tKLF_NOTELLSHELL   = 0x00000080\n\tKLF_SETFORPROCESS = 0x00000100\n)\n\n// Virtual Key codes\n// https://docs.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes\nconst (\n\tVK_LBUTTON             = 0x01\n\tVK_RBUTTON             = 0x02\n\tVK_CANCEL              = 0x03\n\tVK_MBUTTON             = 0x04\n\tVK_XBUTTON1            = 0x05\n\tVK_XBUTTON2            = 0x06\n\tVK_BACK                = 0x08\n\tVK_TAB                 = 0x09\n\tVK_CLEAR               = 0x0C\n\tVK_RETURN              = 0x0D\n\tVK_SHIFT               = 0x10\n\tVK_CONTROL             = 0x11\n\tVK_MENU                = 0x12\n\tVK_PAUSE               = 0x13\n\tVK_CAPITAL             = 0x14\n\tVK_KANA                = 0x15\n\tVK_HANGEUL             = 0x15\n\tVK_HANGUL              = 0x15\n\tVK_IME_ON              = 0x16\n\tVK_JUNJA               = 0x17\n\tVK_FINAL               = 0x18\n\tVK_HANJA               = 0x19\n\tVK_KANJI               = 0x19\n\tVK_IME_OFF             = 0x1A\n\tVK_ESCAPE              = 0x1B\n\tVK_CONVERT             = 0x1C\n\tVK_NONCONVERT          = 0x1D\n\tVK_ACCEPT              = 0x1E\n\tVK_MODECHANGE          = 0x1F\n\tVK_SPACE               = 0x20\n\tVK_PRIOR               = 0x21\n\tVK_NEXT                = 0x22\n\tVK_END                 = 0x23\n\tVK_HOME                = 0x24\n\tVK_LEFT                = 0x25\n\tVK_UP                  = 0x26\n\tVK_RIGHT               = 0x27\n\tVK_DOWN                = 0x28\n\tVK_SELECT              = 0x29\n\tVK_PRINT               = 0x2A\n\tVK_EXECUTE             = 0x2B\n\tVK_SNAPSHOT            = 0x2C\n\tVK_INSERT              = 0x2D\n\tVK_DELETE              = 0x2E\n\tVK_HELP                = 0x2F\n\tVK_LWIN                = 0x5B\n\tVK_RWIN                = 0x5C\n\tVK_APPS                = 0x5D\n\tVK_SLEEP               = 0x5F\n\tVK_NUMPAD0             = 0x60\n\tVK_NUMPAD1             = 0x61\n\tVK_NUMPAD2             = 0x62\n\tVK_NUMPAD3             = 0x63\n\tVK_NUMPAD4             = 0x64\n\tVK_NUMPAD5             = 0x65\n\tVK_NUMPAD6             = 0x66\n\tVK_NUMPAD7             = 0x67\n\tVK_NUMPAD8             = 0x68\n\tVK_NUMPAD9             = 0x69\n\tVK_MULTIPLY            = 0x6A\n\tVK_ADD                 = 0x6B\n\tVK_SEPARATOR           = 0x6C\n\tVK_SUBTRACT            = 0x6D\n\tVK_DECIMAL             = 0x6E\n\tVK_DIVIDE              = 0x6F\n\tVK_F1                  = 0x70\n\tVK_F2                  = 0x71\n\tVK_F3                  = 0x72\n\tVK_F4                  = 0x73\n\tVK_F5                  = 0x74\n\tVK_F6                  = 0x75\n\tVK_F7                  = 0x76\n\tVK_F8                  = 0x77\n\tVK_F9                  = 0x78\n\tVK_F10                 = 0x79\n\tVK_F11                 = 0x7A\n\tVK_F12                 = 0x7B\n\tVK_F13                 = 0x7C\n\tVK_F14                 = 0x7D\n\tVK_F15                 = 0x7E\n\tVK_F16                 = 0x7F\n\tVK_F17                 = 0x80\n\tVK_F18                 = 0x81\n\tVK_F19                 = 0x82\n\tVK_F20                 = 0x83\n\tVK_F21                 = 0x84\n\tVK_F22                 = 0x85\n\tVK_F23                 = 0x86\n\tVK_F24                 = 0x87\n\tVK_NUMLOCK             = 0x90\n\tVK_SCROLL              = 0x91\n\tVK_OEM_NEC_EQUAL       = 0x92\n\tVK_OEM_FJ_JISHO        = 0x92\n\tVK_OEM_FJ_MASSHOU      = 0x93\n\tVK_OEM_FJ_TOUROKU      = 0x94\n\tVK_OEM_FJ_LOYA         = 0x95\n\tVK_OEM_FJ_ROYA         = 0x96\n\tVK_LSHIFT              = 0xA0\n\tVK_RSHIFT              = 0xA1\n\tVK_LCONTROL            = 0xA2\n\tVK_RCONTROL            = 0xA3\n\tVK_LMENU               = 0xA4\n\tVK_RMENU               = 0xA5\n\tVK_BROWSER_BACK        = 0xA6\n\tVK_BROWSER_FORWARD     = 0xA7\n\tVK_BROWSER_REFRESH     = 0xA8\n\tVK_BROWSER_STOP        = 0xA9\n\tVK_BROWSER_SEARCH      = 0xAA\n\tVK_BROWSER_FAVORITES   = 0xAB\n\tVK_BROWSER_HOME        = 0xAC\n\tVK_VOLUME_MUTE         = 0xAD\n\tVK_VOLUME_DOWN         = 0xAE\n\tVK_VOLUME_UP           = 0xAF\n\tVK_MEDIA_NEXT_TRACK    = 0xB0\n\tVK_MEDIA_PREV_TRACK    = 0xB1\n\tVK_MEDIA_STOP          = 0xB2\n\tVK_MEDIA_PLAY_PAUSE    = 0xB3\n\tVK_LAUNCH_MAIL         = 0xB4\n\tVK_LAUNCH_MEDIA_SELECT = 0xB5\n\tVK_LAUNCH_APP1         = 0xB6\n\tVK_LAUNCH_APP2         = 0xB7\n\tVK_OEM_1               = 0xBA\n\tVK_OEM_PLUS            = 0xBB\n\tVK_OEM_COMMA           = 0xBC\n\tVK_OEM_MINUS           = 0xBD\n\tVK_OEM_PERIOD          = 0xBE\n\tVK_OEM_2               = 0xBF\n\tVK_OEM_3               = 0xC0\n\tVK_OEM_4               = 0xDB\n\tVK_OEM_5               = 0xDC\n\tVK_OEM_6               = 0xDD\n\tVK_OEM_7               = 0xDE\n\tVK_OEM_8               = 0xDF\n\tVK_OEM_AX              = 0xE1\n\tVK_OEM_102             = 0xE2\n\tVK_ICO_HELP            = 0xE3\n\tVK_ICO_00              = 0xE4\n\tVK_PROCESSKEY          = 0xE5\n\tVK_ICO_CLEAR           = 0xE6\n\tVK_OEM_RESET           = 0xE9\n\tVK_OEM_JUMP            = 0xEA\n\tVK_OEM_PA1             = 0xEB\n\tVK_OEM_PA2             = 0xEC\n\tVK_OEM_PA3             = 0xED\n\tVK_OEM_WSCTRL          = 0xEE\n\tVK_OEM_CUSEL           = 0xEF\n\tVK_OEM_ATTN            = 0xF0\n\tVK_OEM_FINISH          = 0xF1\n\tVK_OEM_COPY            = 0xF2\n\tVK_OEM_AUTO            = 0xF3\n\tVK_OEM_ENLW            = 0xF4\n\tVK_OEM_BACKTAB         = 0xF5\n\tVK_ATTN                = 0xF6\n\tVK_CRSEL               = 0xF7\n\tVK_EXSEL               = 0xF8\n\tVK_EREOF               = 0xF9\n\tVK_PLAY                = 0xFA\n\tVK_ZOOM                = 0xFB\n\tVK_NONAME              = 0xFC\n\tVK_PA1                 = 0xFD\n\tVK_OEM_CLEAR           = 0xFE\n)\n\n// Mouse button constants.\n// https://docs.microsoft.com/en-us/windows/console/mouse-event-record-str\nconst (\n\tFROM_LEFT_1ST_BUTTON_PRESSED = 0x0001\n\tRIGHTMOST_BUTTON_PRESSED     = 0x0002\n\tFROM_LEFT_2ND_BUTTON_PRESSED = 0x0004\n\tFROM_LEFT_3RD_BUTTON_PRESSED = 0x0008\n\tFROM_LEFT_4TH_BUTTON_PRESSED = 0x0010\n)\n\n// Control key state constaints.\n// https://docs.microsoft.com/en-us/windows/console/key-event-record-str\n// https://docs.microsoft.com/en-us/windows/console/mouse-event-record-str\nconst (\n\tCAPSLOCK_ON        = 0x0080\n\tENHANCED_KEY       = 0x0100\n\tLEFT_ALT_PRESSED   = 0x0002\n\tLEFT_CTRL_PRESSED  = 0x0008\n\tNUMLOCK_ON         = 0x0020\n\tRIGHT_ALT_PRESSED  = 0x0001\n\tRIGHT_CTRL_PRESSED = 0x0004\n\tSCROLLLOCK_ON      = 0x0040\n\tSHIFT_PRESSED      = 0x0010\n)\n\n// Mouse event record event flags.\n// https://docs.microsoft.com/en-us/windows/console/mouse-event-record-str\nconst (\n\tMOUSE_MOVED    = 0x0001\n\tDOUBLE_CLICK   = 0x0002\n\tMOUSE_WHEELED  = 0x0004\n\tMOUSE_HWHEELED = 0x0008\n)\n\n// Input Record Event Types\n// https://learn.microsoft.com/en-us/windows/console/input-record-str\nconst (\n\tFOCUS_EVENT              = 0x0010\n\tKEY_EVENT                = 0x0001\n\tMENU_EVENT               = 0x0008\n\tMOUSE_EVENT              = 0x0002\n\tWINDOW_BUFFER_SIZE_EVENT = 0x0004\n)\n\n// The processor features to be tested for IsProcessorFeaturePresent, see\n// https://learn.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-isprocessorfeaturepresent\nconst (\n\tPF_ARM_64BIT_LOADSTORE_ATOMIC              = 25\n\tPF_ARM_DIVIDE_INSTRUCTION_AVAILABLE        = 24\n\tPF_ARM_EXTERNAL_CACHE_AVAILABLE            = 26\n\tPF_ARM_FMAC_INSTRUCTIONS_AVAILABLE         = 27\n\tPF_ARM_VFP_32_REGISTERS_AVAILABLE          = 18\n\tPF_3DNOW_INSTRUCTIONS_AVAILABLE            = 7\n\tPF_CHANNELS_ENABLED                        = 16\n\tPF_COMPARE_EXCHANGE_DOUBLE                 = 2\n\tPF_COMPARE_EXCHANGE128                     = 14\n\tPF_COMPARE64_EXCHANGE128                   = 15\n\tPF_FASTFAIL_AVAILABLE                      = 23\n\tPF_FLOATING_POINT_EMULATED                 = 1\n\tPF_FLOATING_POINT_PRECISION_ERRATA         = 0\n\tPF_MMX_INSTRUCTIONS_AVAILABLE              = 3\n\tPF_NX_ENABLED                              = 12\n\tPF_PAE_ENABLED                             = 9\n\tPF_RDTSC_INSTRUCTION_AVAILABLE             = 8\n\tPF_RDWRFSGSBASE_AVAILABLE                  = 22\n\tPF_SECOND_LEVEL_ADDRESS_TRANSLATION        = 20\n\tPF_SSE3_INSTRUCTIONS_AVAILABLE             = 13\n\tPF_SSSE3_INSTRUCTIONS_AVAILABLE            = 36\n\tPF_SSE4_1_INSTRUCTIONS_AVAILABLE           = 37\n\tPF_SSE4_2_INSTRUCTIONS_AVAILABLE           = 38\n\tPF_AVX_INSTRUCTIONS_AVAILABLE              = 39\n\tPF_AVX2_INSTRUCTIONS_AVAILABLE             = 40\n\tPF_AVX512F_INSTRUCTIONS_AVAILABLE          = 41\n\tPF_VIRT_FIRMWARE_ENABLED                   = 21\n\tPF_XMMI_INSTRUCTIONS_AVAILABLE             = 6\n\tPF_XMMI64_INSTRUCTIONS_AVAILABLE           = 10\n\tPF_XSAVE_ENABLED                           = 17\n\tPF_ARM_V8_INSTRUCTIONS_AVAILABLE           = 29\n\tPF_ARM_V8_CRYPTO_INSTRUCTIONS_AVAILABLE    = 30\n\tPF_ARM_V8_CRC32_INSTRUCTIONS_AVAILABLE     = 31\n\tPF_ARM_V81_ATOMIC_INSTRUCTIONS_AVAILABLE   = 34\n\tPF_ARM_V82_DP_INSTRUCTIONS_AVAILABLE       = 43\n\tPF_ARM_V83_JSCVT_INSTRUCTIONS_AVAILABLE    = 44\n\tPF_ARM_V83_LRCPC_INSTRUCTIONS_AVAILABLE    = 45\n\tPF_ARM_SVE_INSTRUCTIONS_AVAILABLE          = 46\n\tPF_ARM_SVE2_INSTRUCTIONS_AVAILABLE         = 47\n\tPF_ARM_SVE2_1_INSTRUCTIONS_AVAILABLE       = 48\n\tPF_ARM_SVE_AES_INSTRUCTIONS_AVAILABLE      = 49\n\tPF_ARM_SVE_PMULL128_INSTRUCTIONS_AVAILABLE = 50\n\tPF_ARM_SVE_BITPERM_INSTRUCTIONS_AVAILABLE  = 51\n\tPF_ARM_SVE_BF16_INSTRUCTIONS_AVAILABLE     = 52\n\tPF_ARM_SVE_EBF16_INSTRUCTIONS_AVAILABLE    = 53\n\tPF_ARM_SVE_B16B16_INSTRUCTIONS_AVAILABLE   = 54\n\tPF_ARM_SVE_SHA3_INSTRUCTIONS_AVAILABLE     = 55\n\tPF_ARM_SVE_SM4_INSTRUCTIONS_AVAILABLE      = 56\n\tPF_ARM_SVE_I8MM_INSTRUCTIONS_AVAILABLE     = 57\n\tPF_ARM_SVE_F32MM_INSTRUCTIONS_AVAILABLE    = 58\n\tPF_ARM_SVE_F64MM_INSTRUCTIONS_AVAILABLE    = 59\n\tPF_BMI2_INSTRUCTIONS_AVAILABLE             = 60\n\tPF_MOVDIR64B_INSTRUCTION_AVAILABLE         = 61\n\tPF_ARM_LSE2_AVAILABLE                      = 62\n\tPF_ARM_SHA3_INSTRUCTIONS_AVAILABLE         = 64\n\tPF_ARM_SHA512_INSTRUCTIONS_AVAILABLE       = 65\n\tPF_ARM_V82_I8MM_INSTRUCTIONS_AVAILABLE     = 66\n\tPF_ARM_V82_FP16_INSTRUCTIONS_AVAILABLE     = 67\n\tPF_ARM_V86_BF16_INSTRUCTIONS_AVAILABLE     = 68\n\tPF_ARM_V86_EBF16_INSTRUCTIONS_AVAILABLE    = 69\n\tPF_ARM_SME_INSTRUCTIONS_AVAILABLE          = 70\n\tPF_ARM_SME2_INSTRUCTIONS_AVAILABLE         = 71\n\tPF_ARM_SME2_1_INSTRUCTIONS_AVAILABLE       = 72\n\tPF_ARM_SME2_2_INSTRUCTIONS_AVAILABLE       = 73\n\tPF_ARM_SME_AES_INSTRUCTIONS_AVAILABLE      = 74\n\tPF_ARM_SME_SBITPERM_INSTRUCTIONS_AVAILABLE = 75\n\tPF_ARM_SME_SF8MM4_INSTRUCTIONS_AVAILABLE   = 76\n\tPF_ARM_SME_SF8MM8_INSTRUCTIONS_AVAILABLE   = 77\n\tPF_ARM_SME_SF8DP2_INSTRUCTIONS_AVAILABLE   = 78\n\tPF_ARM_SME_SF8DP4_INSTRUCTIONS_AVAILABLE   = 79\n\tPF_ARM_SME_SF8FMA_INSTRUCTIONS_AVAILABLE   = 80\n\tPF_ARM_SME_F8F32_INSTRUCTIONS_AVAILABLE    = 81\n\tPF_ARM_SME_F8F16_INSTRUCTIONS_AVAILABLE    = 82\n\tPF_ARM_SME_F16F16_INSTRUCTIONS_AVAILABLE   = 83\n\tPF_ARM_SME_B16B16_INSTRUCTIONS_AVAILABLE   = 84\n\tPF_ARM_SME_F64F64_INSTRUCTIONS_AVAILABLE   = 85\n\tPF_ARM_SME_I16I64_INSTRUCTIONS_AVAILABLE   = 86\n\tPF_ARM_SME_LUTv2_INSTRUCTIONS_AVAILABLE    = 87\n\tPF_ARM_SME_FA64_INSTRUCTIONS_AVAILABLE     = 88\n\tPF_UMONITOR_INSTRUCTION_AVAILABLE          = 89\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/types_windows_386.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage windows\n\ntype WSAData struct {\n\tVersion      uint16\n\tHighVersion  uint16\n\tDescription  [WSADESCRIPTION_LEN + 1]byte\n\tSystemStatus [WSASYS_STATUS_LEN + 1]byte\n\tMaxSockets   uint16\n\tMaxUdpDg     uint16\n\tVendorInfo   *byte\n}\n\ntype Servent struct {\n\tName    *byte\n\tAliases **byte\n\tPort    uint16\n\tProto   *byte\n}\n\ntype JOBOBJECT_BASIC_LIMIT_INFORMATION struct {\n\tPerProcessUserTimeLimit int64\n\tPerJobUserTimeLimit     int64\n\tLimitFlags              uint32\n\tMinimumWorkingSetSize   uintptr\n\tMaximumWorkingSetSize   uintptr\n\tActiveProcessLimit      uint32\n\tAffinity                uintptr\n\tPriorityClass           uint32\n\tSchedulingClass         uint32\n\t_                       uint32 // pad to 8 byte boundary\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/types_windows_amd64.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage windows\n\ntype WSAData struct {\n\tVersion      uint16\n\tHighVersion  uint16\n\tMaxSockets   uint16\n\tMaxUdpDg     uint16\n\tVendorInfo   *byte\n\tDescription  [WSADESCRIPTION_LEN + 1]byte\n\tSystemStatus [WSASYS_STATUS_LEN + 1]byte\n}\n\ntype Servent struct {\n\tName    *byte\n\tAliases **byte\n\tProto   *byte\n\tPort    uint16\n}\n\ntype JOBOBJECT_BASIC_LIMIT_INFORMATION struct {\n\tPerProcessUserTimeLimit int64\n\tPerJobUserTimeLimit     int64\n\tLimitFlags              uint32\n\tMinimumWorkingSetSize   uintptr\n\tMaximumWorkingSetSize   uintptr\n\tActiveProcessLimit      uint32\n\tAffinity                uintptr\n\tPriorityClass           uint32\n\tSchedulingClass         uint32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/types_windows_arm.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage windows\n\ntype WSAData struct {\n\tVersion      uint16\n\tHighVersion  uint16\n\tDescription  [WSADESCRIPTION_LEN + 1]byte\n\tSystemStatus [WSASYS_STATUS_LEN + 1]byte\n\tMaxSockets   uint16\n\tMaxUdpDg     uint16\n\tVendorInfo   *byte\n}\n\ntype Servent struct {\n\tName    *byte\n\tAliases **byte\n\tPort    uint16\n\tProto   *byte\n}\n\ntype JOBOBJECT_BASIC_LIMIT_INFORMATION struct {\n\tPerProcessUserTimeLimit int64\n\tPerJobUserTimeLimit     int64\n\tLimitFlags              uint32\n\tMinimumWorkingSetSize   uintptr\n\tMaximumWorkingSetSize   uintptr\n\tActiveProcessLimit      uint32\n\tAffinity                uintptr\n\tPriorityClass           uint32\n\tSchedulingClass         uint32\n\t_                       uint32 // pad to 8 byte boundary\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/types_windows_arm64.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage windows\n\ntype WSAData struct {\n\tVersion      uint16\n\tHighVersion  uint16\n\tMaxSockets   uint16\n\tMaxUdpDg     uint16\n\tVendorInfo   *byte\n\tDescription  [WSADESCRIPTION_LEN + 1]byte\n\tSystemStatus [WSASYS_STATUS_LEN + 1]byte\n}\n\ntype Servent struct {\n\tName    *byte\n\tAliases **byte\n\tProto   *byte\n\tPort    uint16\n}\n\ntype JOBOBJECT_BASIC_LIMIT_INFORMATION struct {\n\tPerProcessUserTimeLimit int64\n\tPerJobUserTimeLimit     int64\n\tLimitFlags              uint32\n\tMinimumWorkingSetSize   uintptr\n\tMaximumWorkingSetSize   uintptr\n\tActiveProcessLimit      uint32\n\tAffinity                uintptr\n\tPriorityClass           uint32\n\tSchedulingClass         uint32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/zerrors_windows.go",
    "content": "// Code generated by 'mkerrors.bash'; DO NOT EDIT.\n\npackage windows\n\nimport \"syscall\"\n\nconst (\n\tFACILITY_NULL                                                                           = 0\n\tFACILITY_RPC                                                                            = 1\n\tFACILITY_DISPATCH                                                                       = 2\n\tFACILITY_STORAGE                                                                        = 3\n\tFACILITY_ITF                                                                            = 4\n\tFACILITY_WIN32                                                                          = 7\n\tFACILITY_WINDOWS                                                                        = 8\n\tFACILITY_SSPI                                                                           = 9\n\tFACILITY_SECURITY                                                                       = 9\n\tFACILITY_CONTROL                                                                        = 10\n\tFACILITY_CERT                                                                           = 11\n\tFACILITY_INTERNET                                                                       = 12\n\tFACILITY_MEDIASERVER                                                                    = 13\n\tFACILITY_MSMQ                                                                           = 14\n\tFACILITY_SETUPAPI                                                                       = 15\n\tFACILITY_SCARD                                                                          = 16\n\tFACILITY_COMPLUS                                                                        = 17\n\tFACILITY_AAF                                                                            = 18\n\tFACILITY_URT                                                                            = 19\n\tFACILITY_ACS                                                                            = 20\n\tFACILITY_DPLAY                                                                          = 21\n\tFACILITY_UMI                                                                            = 22\n\tFACILITY_SXS                                                                            = 23\n\tFACILITY_WINDOWS_CE                                                                     = 24\n\tFACILITY_HTTP                                                                           = 25\n\tFACILITY_USERMODE_COMMONLOG                                                             = 26\n\tFACILITY_WER                                                                            = 27\n\tFACILITY_USERMODE_FILTER_MANAGER                                                        = 31\n\tFACILITY_BACKGROUNDCOPY                                                                 = 32\n\tFACILITY_CONFIGURATION                                                                  = 33\n\tFACILITY_WIA                                                                            = 33\n\tFACILITY_STATE_MANAGEMENT                                                               = 34\n\tFACILITY_METADIRECTORY                                                                  = 35\n\tFACILITY_WINDOWSUPDATE                                                                  = 36\n\tFACILITY_DIRECTORYSERVICE                                                               = 37\n\tFACILITY_GRAPHICS                                                                       = 38\n\tFACILITY_SHELL                                                                          = 39\n\tFACILITY_NAP                                                                            = 39\n\tFACILITY_TPM_SERVICES                                                                   = 40\n\tFACILITY_TPM_SOFTWARE                                                                   = 41\n\tFACILITY_UI                                                                             = 42\n\tFACILITY_XAML                                                                           = 43\n\tFACILITY_ACTION_QUEUE                                                                   = 44\n\tFACILITY_PLA                                                                            = 48\n\tFACILITY_WINDOWS_SETUP                                                                  = 48\n\tFACILITY_FVE                                                                            = 49\n\tFACILITY_FWP                                                                            = 50\n\tFACILITY_WINRM                                                                          = 51\n\tFACILITY_NDIS                                                                           = 52\n\tFACILITY_USERMODE_HYPERVISOR                                                            = 53\n\tFACILITY_CMI                                                                            = 54\n\tFACILITY_USERMODE_VIRTUALIZATION                                                        = 55\n\tFACILITY_USERMODE_VOLMGR                                                                = 56\n\tFACILITY_BCD                                                                            = 57\n\tFACILITY_USERMODE_VHD                                                                   = 58\n\tFACILITY_USERMODE_HNS                                                                   = 59\n\tFACILITY_SDIAG                                                                          = 60\n\tFACILITY_WEBSERVICES                                                                    = 61\n\tFACILITY_WINPE                                                                          = 61\n\tFACILITY_WPN                                                                            = 62\n\tFACILITY_WINDOWS_STORE                                                                  = 63\n\tFACILITY_INPUT                                                                          = 64\n\tFACILITY_EAP                                                                            = 66\n\tFACILITY_WINDOWS_DEFENDER                                                               = 80\n\tFACILITY_OPC                                                                            = 81\n\tFACILITY_XPS                                                                            = 82\n\tFACILITY_MBN                                                                            = 84\n\tFACILITY_POWERSHELL                                                                     = 84\n\tFACILITY_RAS                                                                            = 83\n\tFACILITY_P2P_INT                                                                        = 98\n\tFACILITY_P2P                                                                            = 99\n\tFACILITY_DAF                                                                            = 100\n\tFACILITY_BLUETOOTH_ATT                                                                  = 101\n\tFACILITY_AUDIO                                                                          = 102\n\tFACILITY_STATEREPOSITORY                                                                = 103\n\tFACILITY_VISUALCPP                                                                      = 109\n\tFACILITY_SCRIPT                                                                         = 112\n\tFACILITY_PARSE                                                                          = 113\n\tFACILITY_BLB                                                                            = 120\n\tFACILITY_BLB_CLI                                                                        = 121\n\tFACILITY_WSBAPP                                                                         = 122\n\tFACILITY_BLBUI                                                                          = 128\n\tFACILITY_USN                                                                            = 129\n\tFACILITY_USERMODE_VOLSNAP                                                               = 130\n\tFACILITY_TIERING                                                                        = 131\n\tFACILITY_WSB_ONLINE                                                                     = 133\n\tFACILITY_ONLINE_ID                                                                      = 134\n\tFACILITY_DEVICE_UPDATE_AGENT                                                            = 135\n\tFACILITY_DRVSERVICING                                                                   = 136\n\tFACILITY_DLS                                                                            = 153\n\tFACILITY_DELIVERY_OPTIMIZATION                                                          = 208\n\tFACILITY_USERMODE_SPACES                                                                = 231\n\tFACILITY_USER_MODE_SECURITY_CORE                                                        = 232\n\tFACILITY_USERMODE_LICENSING                                                             = 234\n\tFACILITY_SOS                                                                            = 160\n\tFACILITY_DEBUGGERS                                                                      = 176\n\tFACILITY_SPP                                                                            = 256\n\tFACILITY_RESTORE                                                                        = 256\n\tFACILITY_DMSERVER                                                                       = 256\n\tFACILITY_DEPLOYMENT_SERVICES_SERVER                                                     = 257\n\tFACILITY_DEPLOYMENT_SERVICES_IMAGING                                                    = 258\n\tFACILITY_DEPLOYMENT_SERVICES_MANAGEMENT                                                 = 259\n\tFACILITY_DEPLOYMENT_SERVICES_UTIL                                                       = 260\n\tFACILITY_DEPLOYMENT_SERVICES_BINLSVC                                                    = 261\n\tFACILITY_DEPLOYMENT_SERVICES_PXE                                                        = 263\n\tFACILITY_DEPLOYMENT_SERVICES_TFTP                                                       = 264\n\tFACILITY_DEPLOYMENT_SERVICES_TRANSPORT_MANAGEMENT                                       = 272\n\tFACILITY_DEPLOYMENT_SERVICES_DRIVER_PROVISIONING                                        = 278\n\tFACILITY_DEPLOYMENT_SERVICES_MULTICAST_SERVER                                           = 289\n\tFACILITY_DEPLOYMENT_SERVICES_MULTICAST_CLIENT                                           = 290\n\tFACILITY_DEPLOYMENT_SERVICES_CONTENT_PROVIDER                                           = 293\n\tFACILITY_LINGUISTIC_SERVICES                                                            = 305\n\tFACILITY_AUDIOSTREAMING                                                                 = 1094\n\tFACILITY_ACCELERATOR                                                                    = 1536\n\tFACILITY_WMAAECMA                                                                       = 1996\n\tFACILITY_DIRECTMUSIC                                                                    = 2168\n\tFACILITY_DIRECT3D10                                                                     = 2169\n\tFACILITY_DXGI                                                                           = 2170\n\tFACILITY_DXGI_DDI                                                                       = 2171\n\tFACILITY_DIRECT3D11                                                                     = 2172\n\tFACILITY_DIRECT3D11_DEBUG                                                               = 2173\n\tFACILITY_DIRECT3D12                                                                     = 2174\n\tFACILITY_DIRECT3D12_DEBUG                                                               = 2175\n\tFACILITY_LEAP                                                                           = 2184\n\tFACILITY_AUDCLNT                                                                        = 2185\n\tFACILITY_WINCODEC_DWRITE_DWM                                                            = 2200\n\tFACILITY_WINML                                                                          = 2192\n\tFACILITY_DIRECT2D                                                                       = 2201\n\tFACILITY_DEFRAG                                                                         = 2304\n\tFACILITY_USERMODE_SDBUS                                                                 = 2305\n\tFACILITY_JSCRIPT                                                                        = 2306\n\tFACILITY_PIDGENX                                                                        = 2561\n\tFACILITY_EAS                                                                            = 85\n\tFACILITY_WEB                                                                            = 885\n\tFACILITY_WEB_SOCKET                                                                     = 886\n\tFACILITY_MOBILE                                                                         = 1793\n\tFACILITY_SQLITE                                                                         = 1967\n\tFACILITY_UTC                                                                            = 1989\n\tFACILITY_WEP                                                                            = 2049\n\tFACILITY_SYNCENGINE                                                                     = 2050\n\tFACILITY_XBOX                                                                           = 2339\n\tFACILITY_GAME                                                                           = 2340\n\tFACILITY_PIX                                                                            = 2748\n\tERROR_SUCCESS                                                             syscall.Errno = 0\n\tNO_ERROR                                                                                = 0\n\tSEC_E_OK                                                                  Handle        = 0x00000000\n\tERROR_INVALID_FUNCTION                                                    syscall.Errno = 1\n\tERROR_FILE_NOT_FOUND                                                      syscall.Errno = 2\n\tERROR_PATH_NOT_FOUND                                                      syscall.Errno = 3\n\tERROR_TOO_MANY_OPEN_FILES                                                 syscall.Errno = 4\n\tERROR_ACCESS_DENIED                                                       syscall.Errno = 5\n\tERROR_INVALID_HANDLE                                                      syscall.Errno = 6\n\tERROR_ARENA_TRASHED                                                       syscall.Errno = 7\n\tERROR_NOT_ENOUGH_MEMORY                                                   syscall.Errno = 8\n\tERROR_INVALID_BLOCK                                                       syscall.Errno = 9\n\tERROR_BAD_ENVIRONMENT                                                     syscall.Errno = 10\n\tERROR_BAD_FORMAT                                                          syscall.Errno = 11\n\tERROR_INVALID_ACCESS                                                      syscall.Errno = 12\n\tERROR_INVALID_DATA                                                        syscall.Errno = 13\n\tERROR_OUTOFMEMORY                                                         syscall.Errno = 14\n\tERROR_INVALID_DRIVE                                                       syscall.Errno = 15\n\tERROR_CURRENT_DIRECTORY                                                   syscall.Errno = 16\n\tERROR_NOT_SAME_DEVICE                                                     syscall.Errno = 17\n\tERROR_NO_MORE_FILES                                                       syscall.Errno = 18\n\tERROR_WRITE_PROTECT                                                       syscall.Errno = 19\n\tERROR_BAD_UNIT                                                            syscall.Errno = 20\n\tERROR_NOT_READY                                                           syscall.Errno = 21\n\tERROR_BAD_COMMAND                                                         syscall.Errno = 22\n\tERROR_CRC                                                                 syscall.Errno = 23\n\tERROR_BAD_LENGTH                                                          syscall.Errno = 24\n\tERROR_SEEK                                                                syscall.Errno = 25\n\tERROR_NOT_DOS_DISK                                                        syscall.Errno = 26\n\tERROR_SECTOR_NOT_FOUND                                                    syscall.Errno = 27\n\tERROR_OUT_OF_PAPER                                                        syscall.Errno = 28\n\tERROR_WRITE_FAULT                                                         syscall.Errno = 29\n\tERROR_READ_FAULT                                                          syscall.Errno = 30\n\tERROR_GEN_FAILURE                                                         syscall.Errno = 31\n\tERROR_SHARING_VIOLATION                                                   syscall.Errno = 32\n\tERROR_LOCK_VIOLATION                                                      syscall.Errno = 33\n\tERROR_WRONG_DISK                                                          syscall.Errno = 34\n\tERROR_SHARING_BUFFER_EXCEEDED                                             syscall.Errno = 36\n\tERROR_HANDLE_EOF                                                          syscall.Errno = 38\n\tERROR_HANDLE_DISK_FULL                                                    syscall.Errno = 39\n\tERROR_NOT_SUPPORTED                                                       syscall.Errno = 50\n\tERROR_REM_NOT_LIST                                                        syscall.Errno = 51\n\tERROR_DUP_NAME                                                            syscall.Errno = 52\n\tERROR_BAD_NETPATH                                                         syscall.Errno = 53\n\tERROR_NETWORK_BUSY                                                        syscall.Errno = 54\n\tERROR_DEV_NOT_EXIST                                                       syscall.Errno = 55\n\tERROR_TOO_MANY_CMDS                                                       syscall.Errno = 56\n\tERROR_ADAP_HDW_ERR                                                        syscall.Errno = 57\n\tERROR_BAD_NET_RESP                                                        syscall.Errno = 58\n\tERROR_UNEXP_NET_ERR                                                       syscall.Errno = 59\n\tERROR_BAD_REM_ADAP                                                        syscall.Errno = 60\n\tERROR_PRINTQ_FULL                                                         syscall.Errno = 61\n\tERROR_NO_SPOOL_SPACE                                                      syscall.Errno = 62\n\tERROR_PRINT_CANCELLED                                                     syscall.Errno = 63\n\tERROR_NETNAME_DELETED                                                     syscall.Errno = 64\n\tERROR_NETWORK_ACCESS_DENIED                                               syscall.Errno = 65\n\tERROR_BAD_DEV_TYPE                                                        syscall.Errno = 66\n\tERROR_BAD_NET_NAME                                                        syscall.Errno = 67\n\tERROR_TOO_MANY_NAMES                                                      syscall.Errno = 68\n\tERROR_TOO_MANY_SESS                                                       syscall.Errno = 69\n\tERROR_SHARING_PAUSED                                                      syscall.Errno = 70\n\tERROR_REQ_NOT_ACCEP                                                       syscall.Errno = 71\n\tERROR_REDIR_PAUSED                                                        syscall.Errno = 72\n\tERROR_FILE_EXISTS                                                         syscall.Errno = 80\n\tERROR_CANNOT_MAKE                                                         syscall.Errno = 82\n\tERROR_FAIL_I24                                                            syscall.Errno = 83\n\tERROR_OUT_OF_STRUCTURES                                                   syscall.Errno = 84\n\tERROR_ALREADY_ASSIGNED                                                    syscall.Errno = 85\n\tERROR_INVALID_PASSWORD                                                    syscall.Errno = 86\n\tERROR_INVALID_PARAMETER                                                   syscall.Errno = 87\n\tERROR_NET_WRITE_FAULT                                                     syscall.Errno = 88\n\tERROR_NO_PROC_SLOTS                                                       syscall.Errno = 89\n\tERROR_TOO_MANY_SEMAPHORES                                                 syscall.Errno = 100\n\tERROR_EXCL_SEM_ALREADY_OWNED                                              syscall.Errno = 101\n\tERROR_SEM_IS_SET                                                          syscall.Errno = 102\n\tERROR_TOO_MANY_SEM_REQUESTS                                               syscall.Errno = 103\n\tERROR_INVALID_AT_INTERRUPT_TIME                                           syscall.Errno = 104\n\tERROR_SEM_OWNER_DIED                                                      syscall.Errno = 105\n\tERROR_SEM_USER_LIMIT                                                      syscall.Errno = 106\n\tERROR_DISK_CHANGE                                                         syscall.Errno = 107\n\tERROR_DRIVE_LOCKED                                                        syscall.Errno = 108\n\tERROR_BROKEN_PIPE                                                         syscall.Errno = 109\n\tERROR_OPEN_FAILED                                                         syscall.Errno = 110\n\tERROR_BUFFER_OVERFLOW                                                     syscall.Errno = 111\n\tERROR_DISK_FULL                                                           syscall.Errno = 112\n\tERROR_NO_MORE_SEARCH_HANDLES                                              syscall.Errno = 113\n\tERROR_INVALID_TARGET_HANDLE                                               syscall.Errno = 114\n\tERROR_INVALID_CATEGORY                                                    syscall.Errno = 117\n\tERROR_INVALID_VERIFY_SWITCH                                               syscall.Errno = 118\n\tERROR_BAD_DRIVER_LEVEL                                                    syscall.Errno = 119\n\tERROR_CALL_NOT_IMPLEMENTED                                                syscall.Errno = 120\n\tERROR_SEM_TIMEOUT                                                         syscall.Errno = 121\n\tERROR_INSUFFICIENT_BUFFER                                                 syscall.Errno = 122\n\tERROR_INVALID_NAME                                                        syscall.Errno = 123\n\tERROR_INVALID_LEVEL                                                       syscall.Errno = 124\n\tERROR_NO_VOLUME_LABEL                                                     syscall.Errno = 125\n\tERROR_MOD_NOT_FOUND                                                       syscall.Errno = 126\n\tERROR_PROC_NOT_FOUND                                                      syscall.Errno = 127\n\tERROR_WAIT_NO_CHILDREN                                                    syscall.Errno = 128\n\tERROR_CHILD_NOT_COMPLETE                                                  syscall.Errno = 129\n\tERROR_DIRECT_ACCESS_HANDLE                                                syscall.Errno = 130\n\tERROR_NEGATIVE_SEEK                                                       syscall.Errno = 131\n\tERROR_SEEK_ON_DEVICE                                                      syscall.Errno = 132\n\tERROR_IS_JOIN_TARGET                                                      syscall.Errno = 133\n\tERROR_IS_JOINED                                                           syscall.Errno = 134\n\tERROR_IS_SUBSTED                                                          syscall.Errno = 135\n\tERROR_NOT_JOINED                                                          syscall.Errno = 136\n\tERROR_NOT_SUBSTED                                                         syscall.Errno = 137\n\tERROR_JOIN_TO_JOIN                                                        syscall.Errno = 138\n\tERROR_SUBST_TO_SUBST                                                      syscall.Errno = 139\n\tERROR_JOIN_TO_SUBST                                                       syscall.Errno = 140\n\tERROR_SUBST_TO_JOIN                                                       syscall.Errno = 141\n\tERROR_BUSY_DRIVE                                                          syscall.Errno = 142\n\tERROR_SAME_DRIVE                                                          syscall.Errno = 143\n\tERROR_DIR_NOT_ROOT                                                        syscall.Errno = 144\n\tERROR_DIR_NOT_EMPTY                                                       syscall.Errno = 145\n\tERROR_IS_SUBST_PATH                                                       syscall.Errno = 146\n\tERROR_IS_JOIN_PATH                                                        syscall.Errno = 147\n\tERROR_PATH_BUSY                                                           syscall.Errno = 148\n\tERROR_IS_SUBST_TARGET                                                     syscall.Errno = 149\n\tERROR_SYSTEM_TRACE                                                        syscall.Errno = 150\n\tERROR_INVALID_EVENT_COUNT                                                 syscall.Errno = 151\n\tERROR_TOO_MANY_MUXWAITERS                                                 syscall.Errno = 152\n\tERROR_INVALID_LIST_FORMAT                                                 syscall.Errno = 153\n\tERROR_LABEL_TOO_LONG                                                      syscall.Errno = 154\n\tERROR_TOO_MANY_TCBS                                                       syscall.Errno = 155\n\tERROR_SIGNAL_REFUSED                                                      syscall.Errno = 156\n\tERROR_DISCARDED                                                           syscall.Errno = 157\n\tERROR_NOT_LOCKED                                                          syscall.Errno = 158\n\tERROR_BAD_THREADID_ADDR                                                   syscall.Errno = 159\n\tERROR_BAD_ARGUMENTS                                                       syscall.Errno = 160\n\tERROR_BAD_PATHNAME                                                        syscall.Errno = 161\n\tERROR_SIGNAL_PENDING                                                      syscall.Errno = 162\n\tERROR_MAX_THRDS_REACHED                                                   syscall.Errno = 164\n\tERROR_LOCK_FAILED                                                         syscall.Errno = 167\n\tERROR_BUSY                                                                syscall.Errno = 170\n\tERROR_DEVICE_SUPPORT_IN_PROGRESS                                          syscall.Errno = 171\n\tERROR_CANCEL_VIOLATION                                                    syscall.Errno = 173\n\tERROR_ATOMIC_LOCKS_NOT_SUPPORTED                                          syscall.Errno = 174\n\tERROR_INVALID_SEGMENT_NUMBER                                              syscall.Errno = 180\n\tERROR_INVALID_ORDINAL                                                     syscall.Errno = 182\n\tERROR_ALREADY_EXISTS                                                      syscall.Errno = 183\n\tERROR_INVALID_FLAG_NUMBER                                                 syscall.Errno = 186\n\tERROR_SEM_NOT_FOUND                                                       syscall.Errno = 187\n\tERROR_INVALID_STARTING_CODESEG                                            syscall.Errno = 188\n\tERROR_INVALID_STACKSEG                                                    syscall.Errno = 189\n\tERROR_INVALID_MODULETYPE                                                  syscall.Errno = 190\n\tERROR_INVALID_EXE_SIGNATURE                                               syscall.Errno = 191\n\tERROR_EXE_MARKED_INVALID                                                  syscall.Errno = 192\n\tERROR_BAD_EXE_FORMAT                                                      syscall.Errno = 193\n\tERROR_ITERATED_DATA_EXCEEDS_64k                                           syscall.Errno = 194\n\tERROR_INVALID_MINALLOCSIZE                                                syscall.Errno = 195\n\tERROR_DYNLINK_FROM_INVALID_RING                                           syscall.Errno = 196\n\tERROR_IOPL_NOT_ENABLED                                                    syscall.Errno = 197\n\tERROR_INVALID_SEGDPL                                                      syscall.Errno = 198\n\tERROR_AUTODATASEG_EXCEEDS_64k                                             syscall.Errno = 199\n\tERROR_RING2SEG_MUST_BE_MOVABLE                                            syscall.Errno = 200\n\tERROR_RELOC_CHAIN_XEEDS_SEGLIM                                            syscall.Errno = 201\n\tERROR_INFLOOP_IN_RELOC_CHAIN                                              syscall.Errno = 202\n\tERROR_ENVVAR_NOT_FOUND                                                    syscall.Errno = 203\n\tERROR_NO_SIGNAL_SENT                                                      syscall.Errno = 205\n\tERROR_FILENAME_EXCED_RANGE                                                syscall.Errno = 206\n\tERROR_RING2_STACK_IN_USE                                                  syscall.Errno = 207\n\tERROR_META_EXPANSION_TOO_LONG                                             syscall.Errno = 208\n\tERROR_INVALID_SIGNAL_NUMBER                                               syscall.Errno = 209\n\tERROR_THREAD_1_INACTIVE                                                   syscall.Errno = 210\n\tERROR_LOCKED                                                              syscall.Errno = 212\n\tERROR_TOO_MANY_MODULES                                                    syscall.Errno = 214\n\tERROR_NESTING_NOT_ALLOWED                                                 syscall.Errno = 215\n\tERROR_EXE_MACHINE_TYPE_MISMATCH                                           syscall.Errno = 216\n\tERROR_EXE_CANNOT_MODIFY_SIGNED_BINARY                                     syscall.Errno = 217\n\tERROR_EXE_CANNOT_MODIFY_STRONG_SIGNED_BINARY                              syscall.Errno = 218\n\tERROR_FILE_CHECKED_OUT                                                    syscall.Errno = 220\n\tERROR_CHECKOUT_REQUIRED                                                   syscall.Errno = 221\n\tERROR_BAD_FILE_TYPE                                                       syscall.Errno = 222\n\tERROR_FILE_TOO_LARGE                                                      syscall.Errno = 223\n\tERROR_FORMS_AUTH_REQUIRED                                                 syscall.Errno = 224\n\tERROR_VIRUS_INFECTED                                                      syscall.Errno = 225\n\tERROR_VIRUS_DELETED                                                       syscall.Errno = 226\n\tERROR_PIPE_LOCAL                                                          syscall.Errno = 229\n\tERROR_BAD_PIPE                                                            syscall.Errno = 230\n\tERROR_PIPE_BUSY                                                           syscall.Errno = 231\n\tERROR_NO_DATA                                                             syscall.Errno = 232\n\tERROR_PIPE_NOT_CONNECTED                                                  syscall.Errno = 233\n\tERROR_MORE_DATA                                                           syscall.Errno = 234\n\tERROR_NO_WORK_DONE                                                        syscall.Errno = 235\n\tERROR_VC_DISCONNECTED                                                     syscall.Errno = 240\n\tERROR_INVALID_EA_NAME                                                     syscall.Errno = 254\n\tERROR_EA_LIST_INCONSISTENT                                                syscall.Errno = 255\n\tWAIT_TIMEOUT                                                              syscall.Errno = 258\n\tERROR_NO_MORE_ITEMS                                                       syscall.Errno = 259\n\tERROR_CANNOT_COPY                                                         syscall.Errno = 266\n\tERROR_DIRECTORY                                                           syscall.Errno = 267\n\tERROR_EAS_DIDNT_FIT                                                       syscall.Errno = 275\n\tERROR_EA_FILE_CORRUPT                                                     syscall.Errno = 276\n\tERROR_EA_TABLE_FULL                                                       syscall.Errno = 277\n\tERROR_INVALID_EA_HANDLE                                                   syscall.Errno = 278\n\tERROR_EAS_NOT_SUPPORTED                                                   syscall.Errno = 282\n\tERROR_NOT_OWNER                                                           syscall.Errno = 288\n\tERROR_TOO_MANY_POSTS                                                      syscall.Errno = 298\n\tERROR_PARTIAL_COPY                                                        syscall.Errno = 299\n\tERROR_OPLOCK_NOT_GRANTED                                                  syscall.Errno = 300\n\tERROR_INVALID_OPLOCK_PROTOCOL                                             syscall.Errno = 301\n\tERROR_DISK_TOO_FRAGMENTED                                                 syscall.Errno = 302\n\tERROR_DELETE_PENDING                                                      syscall.Errno = 303\n\tERROR_INCOMPATIBLE_WITH_GLOBAL_SHORT_NAME_REGISTRY_SETTING                syscall.Errno = 304\n\tERROR_SHORT_NAMES_NOT_ENABLED_ON_VOLUME                                   syscall.Errno = 305\n\tERROR_SECURITY_STREAM_IS_INCONSISTENT                                     syscall.Errno = 306\n\tERROR_INVALID_LOCK_RANGE                                                  syscall.Errno = 307\n\tERROR_IMAGE_SUBSYSTEM_NOT_PRESENT                                         syscall.Errno = 308\n\tERROR_NOTIFICATION_GUID_ALREADY_DEFINED                                   syscall.Errno = 309\n\tERROR_INVALID_EXCEPTION_HANDLER                                           syscall.Errno = 310\n\tERROR_DUPLICATE_PRIVILEGES                                                syscall.Errno = 311\n\tERROR_NO_RANGES_PROCESSED                                                 syscall.Errno = 312\n\tERROR_NOT_ALLOWED_ON_SYSTEM_FILE                                          syscall.Errno = 313\n\tERROR_DISK_RESOURCES_EXHAUSTED                                            syscall.Errno = 314\n\tERROR_INVALID_TOKEN                                                       syscall.Errno = 315\n\tERROR_DEVICE_FEATURE_NOT_SUPPORTED                                        syscall.Errno = 316\n\tERROR_MR_MID_NOT_FOUND                                                    syscall.Errno = 317\n\tERROR_SCOPE_NOT_FOUND                                                     syscall.Errno = 318\n\tERROR_UNDEFINED_SCOPE                                                     syscall.Errno = 319\n\tERROR_INVALID_CAP                                                         syscall.Errno = 320\n\tERROR_DEVICE_UNREACHABLE                                                  syscall.Errno = 321\n\tERROR_DEVICE_NO_RESOURCES                                                 syscall.Errno = 322\n\tERROR_DATA_CHECKSUM_ERROR                                                 syscall.Errno = 323\n\tERROR_INTERMIXED_KERNEL_EA_OPERATION                                      syscall.Errno = 324\n\tERROR_FILE_LEVEL_TRIM_NOT_SUPPORTED                                       syscall.Errno = 326\n\tERROR_OFFSET_ALIGNMENT_VIOLATION                                          syscall.Errno = 327\n\tERROR_INVALID_FIELD_IN_PARAMETER_LIST                                     syscall.Errno = 328\n\tERROR_OPERATION_IN_PROGRESS                                               syscall.Errno = 329\n\tERROR_BAD_DEVICE_PATH                                                     syscall.Errno = 330\n\tERROR_TOO_MANY_DESCRIPTORS                                                syscall.Errno = 331\n\tERROR_SCRUB_DATA_DISABLED                                                 syscall.Errno = 332\n\tERROR_NOT_REDUNDANT_STORAGE                                               syscall.Errno = 333\n\tERROR_RESIDENT_FILE_NOT_SUPPORTED                                         syscall.Errno = 334\n\tERROR_COMPRESSED_FILE_NOT_SUPPORTED                                       syscall.Errno = 335\n\tERROR_DIRECTORY_NOT_SUPPORTED                                             syscall.Errno = 336\n\tERROR_NOT_READ_FROM_COPY                                                  syscall.Errno = 337\n\tERROR_FT_WRITE_FAILURE                                                    syscall.Errno = 338\n\tERROR_FT_DI_SCAN_REQUIRED                                                 syscall.Errno = 339\n\tERROR_INVALID_KERNEL_INFO_VERSION                                         syscall.Errno = 340\n\tERROR_INVALID_PEP_INFO_VERSION                                            syscall.Errno = 341\n\tERROR_OBJECT_NOT_EXTERNALLY_BACKED                                        syscall.Errno = 342\n\tERROR_EXTERNAL_BACKING_PROVIDER_UNKNOWN                                   syscall.Errno = 343\n\tERROR_COMPRESSION_NOT_BENEFICIAL                                          syscall.Errno = 344\n\tERROR_STORAGE_TOPOLOGY_ID_MISMATCH                                        syscall.Errno = 345\n\tERROR_BLOCKED_BY_PARENTAL_CONTROLS                                        syscall.Errno = 346\n\tERROR_BLOCK_TOO_MANY_REFERENCES                                           syscall.Errno = 347\n\tERROR_MARKED_TO_DISALLOW_WRITES                                           syscall.Errno = 348\n\tERROR_ENCLAVE_FAILURE                                                     syscall.Errno = 349\n\tERROR_FAIL_NOACTION_REBOOT                                                syscall.Errno = 350\n\tERROR_FAIL_SHUTDOWN                                                       syscall.Errno = 351\n\tERROR_FAIL_RESTART                                                        syscall.Errno = 352\n\tERROR_MAX_SESSIONS_REACHED                                                syscall.Errno = 353\n\tERROR_NETWORK_ACCESS_DENIED_EDP                                           syscall.Errno = 354\n\tERROR_DEVICE_HINT_NAME_BUFFER_TOO_SMALL                                   syscall.Errno = 355\n\tERROR_EDP_POLICY_DENIES_OPERATION                                         syscall.Errno = 356\n\tERROR_EDP_DPL_POLICY_CANT_BE_SATISFIED                                    syscall.Errno = 357\n\tERROR_CLOUD_FILE_SYNC_ROOT_METADATA_CORRUPT                               syscall.Errno = 358\n\tERROR_DEVICE_IN_MAINTENANCE                                               syscall.Errno = 359\n\tERROR_NOT_SUPPORTED_ON_DAX                                                syscall.Errno = 360\n\tERROR_DAX_MAPPING_EXISTS                                                  syscall.Errno = 361\n\tERROR_CLOUD_FILE_PROVIDER_NOT_RUNNING                                     syscall.Errno = 362\n\tERROR_CLOUD_FILE_METADATA_CORRUPT                                         syscall.Errno = 363\n\tERROR_CLOUD_FILE_METADATA_TOO_LARGE                                       syscall.Errno = 364\n\tERROR_CLOUD_FILE_PROPERTY_BLOB_TOO_LARGE                                  syscall.Errno = 365\n\tERROR_CLOUD_FILE_PROPERTY_BLOB_CHECKSUM_MISMATCH                          syscall.Errno = 366\n\tERROR_CHILD_PROCESS_BLOCKED                                               syscall.Errno = 367\n\tERROR_STORAGE_LOST_DATA_PERSISTENCE                                       syscall.Errno = 368\n\tERROR_FILE_SYSTEM_VIRTUALIZATION_UNAVAILABLE                              syscall.Errno = 369\n\tERROR_FILE_SYSTEM_VIRTUALIZATION_METADATA_CORRUPT                         syscall.Errno = 370\n\tERROR_FILE_SYSTEM_VIRTUALIZATION_BUSY                                     syscall.Errno = 371\n\tERROR_FILE_SYSTEM_VIRTUALIZATION_PROVIDER_UNKNOWN                         syscall.Errno = 372\n\tERROR_GDI_HANDLE_LEAK                                                     syscall.Errno = 373\n\tERROR_CLOUD_FILE_TOO_MANY_PROPERTY_BLOBS                                  syscall.Errno = 374\n\tERROR_CLOUD_FILE_PROPERTY_VERSION_NOT_SUPPORTED                           syscall.Errno = 375\n\tERROR_NOT_A_CLOUD_FILE                                                    syscall.Errno = 376\n\tERROR_CLOUD_FILE_NOT_IN_SYNC                                              syscall.Errno = 377\n\tERROR_CLOUD_FILE_ALREADY_CONNECTED                                        syscall.Errno = 378\n\tERROR_CLOUD_FILE_NOT_SUPPORTED                                            syscall.Errno = 379\n\tERROR_CLOUD_FILE_INVALID_REQUEST                                          syscall.Errno = 380\n\tERROR_CLOUD_FILE_READ_ONLY_VOLUME                                         syscall.Errno = 381\n\tERROR_CLOUD_FILE_CONNECTED_PROVIDER_ONLY                                  syscall.Errno = 382\n\tERROR_CLOUD_FILE_VALIDATION_FAILED                                        syscall.Errno = 383\n\tERROR_SMB1_NOT_AVAILABLE                                                  syscall.Errno = 384\n\tERROR_FILE_SYSTEM_VIRTUALIZATION_INVALID_OPERATION                        syscall.Errno = 385\n\tERROR_CLOUD_FILE_AUTHENTICATION_FAILED                                    syscall.Errno = 386\n\tERROR_CLOUD_FILE_INSUFFICIENT_RESOURCES                                   syscall.Errno = 387\n\tERROR_CLOUD_FILE_NETWORK_UNAVAILABLE                                      syscall.Errno = 388\n\tERROR_CLOUD_FILE_UNSUCCESSFUL                                             syscall.Errno = 389\n\tERROR_CLOUD_FILE_NOT_UNDER_SYNC_ROOT                                      syscall.Errno = 390\n\tERROR_CLOUD_FILE_IN_USE                                                   syscall.Errno = 391\n\tERROR_CLOUD_FILE_PINNED                                                   syscall.Errno = 392\n\tERROR_CLOUD_FILE_REQUEST_ABORTED                                          syscall.Errno = 393\n\tERROR_CLOUD_FILE_PROPERTY_CORRUPT                                         syscall.Errno = 394\n\tERROR_CLOUD_FILE_ACCESS_DENIED                                            syscall.Errno = 395\n\tERROR_CLOUD_FILE_INCOMPATIBLE_HARDLINKS                                   syscall.Errno = 396\n\tERROR_CLOUD_FILE_PROPERTY_LOCK_CONFLICT                                   syscall.Errno = 397\n\tERROR_CLOUD_FILE_REQUEST_CANCELED                                         syscall.Errno = 398\n\tERROR_EXTERNAL_SYSKEY_NOT_SUPPORTED                                       syscall.Errno = 399\n\tERROR_THREAD_MODE_ALREADY_BACKGROUND                                      syscall.Errno = 400\n\tERROR_THREAD_MODE_NOT_BACKGROUND                                          syscall.Errno = 401\n\tERROR_PROCESS_MODE_ALREADY_BACKGROUND                                     syscall.Errno = 402\n\tERROR_PROCESS_MODE_NOT_BACKGROUND                                         syscall.Errno = 403\n\tERROR_CLOUD_FILE_PROVIDER_TERMINATED                                      syscall.Errno = 404\n\tERROR_NOT_A_CLOUD_SYNC_ROOT                                               syscall.Errno = 405\n\tERROR_FILE_PROTECTED_UNDER_DPL                                            syscall.Errno = 406\n\tERROR_VOLUME_NOT_CLUSTER_ALIGNED                                          syscall.Errno = 407\n\tERROR_NO_PHYSICALLY_ALIGNED_FREE_SPACE_FOUND                              syscall.Errno = 408\n\tERROR_APPX_FILE_NOT_ENCRYPTED                                             syscall.Errno = 409\n\tERROR_RWRAW_ENCRYPTED_FILE_NOT_ENCRYPTED                                  syscall.Errno = 410\n\tERROR_RWRAW_ENCRYPTED_INVALID_EDATAINFO_FILEOFFSET                        syscall.Errno = 411\n\tERROR_RWRAW_ENCRYPTED_INVALID_EDATAINFO_FILERANGE                         syscall.Errno = 412\n\tERROR_RWRAW_ENCRYPTED_INVALID_EDATAINFO_PARAMETER                         syscall.Errno = 413\n\tERROR_LINUX_SUBSYSTEM_NOT_PRESENT                                         syscall.Errno = 414\n\tERROR_FT_READ_FAILURE                                                     syscall.Errno = 415\n\tERROR_STORAGE_RESERVE_ID_INVALID                                          syscall.Errno = 416\n\tERROR_STORAGE_RESERVE_DOES_NOT_EXIST                                      syscall.Errno = 417\n\tERROR_STORAGE_RESERVE_ALREADY_EXISTS                                      syscall.Errno = 418\n\tERROR_STORAGE_RESERVE_NOT_EMPTY                                           syscall.Errno = 419\n\tERROR_NOT_A_DAX_VOLUME                                                    syscall.Errno = 420\n\tERROR_NOT_DAX_MAPPABLE                                                    syscall.Errno = 421\n\tERROR_TIME_SENSITIVE_THREAD                                               syscall.Errno = 422\n\tERROR_DPL_NOT_SUPPORTED_FOR_USER                                          syscall.Errno = 423\n\tERROR_CASE_DIFFERING_NAMES_IN_DIR                                         syscall.Errno = 424\n\tERROR_FILE_NOT_SUPPORTED                                                  syscall.Errno = 425\n\tERROR_CLOUD_FILE_REQUEST_TIMEOUT                                          syscall.Errno = 426\n\tERROR_NO_TASK_QUEUE                                                       syscall.Errno = 427\n\tERROR_SRC_SRV_DLL_LOAD_FAILED                                             syscall.Errno = 428\n\tERROR_NOT_SUPPORTED_WITH_BTT                                              syscall.Errno = 429\n\tERROR_ENCRYPTION_DISABLED                                                 syscall.Errno = 430\n\tERROR_ENCRYPTING_METADATA_DISALLOWED                                      syscall.Errno = 431\n\tERROR_CANT_CLEAR_ENCRYPTION_FLAG                                          syscall.Errno = 432\n\tERROR_NO_SUCH_DEVICE                                                      syscall.Errno = 433\n\tERROR_CAPAUTHZ_NOT_DEVUNLOCKED                                            syscall.Errno = 450\n\tERROR_CAPAUTHZ_CHANGE_TYPE                                                syscall.Errno = 451\n\tERROR_CAPAUTHZ_NOT_PROVISIONED                                            syscall.Errno = 452\n\tERROR_CAPAUTHZ_NOT_AUTHORIZED                                             syscall.Errno = 453\n\tERROR_CAPAUTHZ_NO_POLICY                                                  syscall.Errno = 454\n\tERROR_CAPAUTHZ_DB_CORRUPTED                                               syscall.Errno = 455\n\tERROR_CAPAUTHZ_SCCD_INVALID_CATALOG                                       syscall.Errno = 456\n\tERROR_CAPAUTHZ_SCCD_NO_AUTH_ENTITY                                        syscall.Errno = 457\n\tERROR_CAPAUTHZ_SCCD_PARSE_ERROR                                           syscall.Errno = 458\n\tERROR_CAPAUTHZ_SCCD_DEV_MODE_REQUIRED                                     syscall.Errno = 459\n\tERROR_CAPAUTHZ_SCCD_NO_CAPABILITY_MATCH                                   syscall.Errno = 460\n\tERROR_PNP_QUERY_REMOVE_DEVICE_TIMEOUT                                     syscall.Errno = 480\n\tERROR_PNP_QUERY_REMOVE_RELATED_DEVICE_TIMEOUT                             syscall.Errno = 481\n\tERROR_PNP_QUERY_REMOVE_UNRELATED_DEVICE_TIMEOUT                           syscall.Errno = 482\n\tERROR_DEVICE_HARDWARE_ERROR                                               syscall.Errno = 483\n\tERROR_INVALID_ADDRESS                                                     syscall.Errno = 487\n\tERROR_VRF_CFG_ENABLED                                                     syscall.Errno = 1183\n\tERROR_PARTITION_TERMINATING                                               syscall.Errno = 1184\n\tERROR_USER_PROFILE_LOAD                                                   syscall.Errno = 500\n\tERROR_ARITHMETIC_OVERFLOW                                                 syscall.Errno = 534\n\tERROR_PIPE_CONNECTED                                                      syscall.Errno = 535\n\tERROR_PIPE_LISTENING                                                      syscall.Errno = 536\n\tERROR_VERIFIER_STOP                                                       syscall.Errno = 537\n\tERROR_ABIOS_ERROR                                                         syscall.Errno = 538\n\tERROR_WX86_WARNING                                                        syscall.Errno = 539\n\tERROR_WX86_ERROR                                                          syscall.Errno = 540\n\tERROR_TIMER_NOT_CANCELED                                                  syscall.Errno = 541\n\tERROR_UNWIND                                                              syscall.Errno = 542\n\tERROR_BAD_STACK                                                           syscall.Errno = 543\n\tERROR_INVALID_UNWIND_TARGET                                               syscall.Errno = 544\n\tERROR_INVALID_PORT_ATTRIBUTES                                             syscall.Errno = 545\n\tERROR_PORT_MESSAGE_TOO_LONG                                               syscall.Errno = 546\n\tERROR_INVALID_QUOTA_LOWER                                                 syscall.Errno = 547\n\tERROR_DEVICE_ALREADY_ATTACHED                                             syscall.Errno = 548\n\tERROR_INSTRUCTION_MISALIGNMENT                                            syscall.Errno = 549\n\tERROR_PROFILING_NOT_STARTED                                               syscall.Errno = 550\n\tERROR_PROFILING_NOT_STOPPED                                               syscall.Errno = 551\n\tERROR_COULD_NOT_INTERPRET                                                 syscall.Errno = 552\n\tERROR_PROFILING_AT_LIMIT                                                  syscall.Errno = 553\n\tERROR_CANT_WAIT                                                           syscall.Errno = 554\n\tERROR_CANT_TERMINATE_SELF                                                 syscall.Errno = 555\n\tERROR_UNEXPECTED_MM_CREATE_ERR                                            syscall.Errno = 556\n\tERROR_UNEXPECTED_MM_MAP_ERROR                                             syscall.Errno = 557\n\tERROR_UNEXPECTED_MM_EXTEND_ERR                                            syscall.Errno = 558\n\tERROR_BAD_FUNCTION_TABLE                                                  syscall.Errno = 559\n\tERROR_NO_GUID_TRANSLATION                                                 syscall.Errno = 560\n\tERROR_INVALID_LDT_SIZE                                                    syscall.Errno = 561\n\tERROR_INVALID_LDT_OFFSET                                                  syscall.Errno = 563\n\tERROR_INVALID_LDT_DESCRIPTOR                                              syscall.Errno = 564\n\tERROR_TOO_MANY_THREADS                                                    syscall.Errno = 565\n\tERROR_THREAD_NOT_IN_PROCESS                                               syscall.Errno = 566\n\tERROR_PAGEFILE_QUOTA_EXCEEDED                                             syscall.Errno = 567\n\tERROR_LOGON_SERVER_CONFLICT                                               syscall.Errno = 568\n\tERROR_SYNCHRONIZATION_REQUIRED                                            syscall.Errno = 569\n\tERROR_NET_OPEN_FAILED                                                     syscall.Errno = 570\n\tERROR_IO_PRIVILEGE_FAILED                                                 syscall.Errno = 571\n\tERROR_CONTROL_C_EXIT                                                      syscall.Errno = 572\n\tERROR_MISSING_SYSTEMFILE                                                  syscall.Errno = 573\n\tERROR_UNHANDLED_EXCEPTION                                                 syscall.Errno = 574\n\tERROR_APP_INIT_FAILURE                                                    syscall.Errno = 575\n\tERROR_PAGEFILE_CREATE_FAILED                                              syscall.Errno = 576\n\tERROR_INVALID_IMAGE_HASH                                                  syscall.Errno = 577\n\tERROR_NO_PAGEFILE                                                         syscall.Errno = 578\n\tERROR_ILLEGAL_FLOAT_CONTEXT                                               syscall.Errno = 579\n\tERROR_NO_EVENT_PAIR                                                       syscall.Errno = 580\n\tERROR_DOMAIN_CTRLR_CONFIG_ERROR                                           syscall.Errno = 581\n\tERROR_ILLEGAL_CHARACTER                                                   syscall.Errno = 582\n\tERROR_UNDEFINED_CHARACTER                                                 syscall.Errno = 583\n\tERROR_FLOPPY_VOLUME                                                       syscall.Errno = 584\n\tERROR_BIOS_FAILED_TO_CONNECT_INTERRUPT                                    syscall.Errno = 585\n\tERROR_BACKUP_CONTROLLER                                                   syscall.Errno = 586\n\tERROR_MUTANT_LIMIT_EXCEEDED                                               syscall.Errno = 587\n\tERROR_FS_DRIVER_REQUIRED                                                  syscall.Errno = 588\n\tERROR_CANNOT_LOAD_REGISTRY_FILE                                           syscall.Errno = 589\n\tERROR_DEBUG_ATTACH_FAILED                                                 syscall.Errno = 590\n\tERROR_SYSTEM_PROCESS_TERMINATED                                           syscall.Errno = 591\n\tERROR_DATA_NOT_ACCEPTED                                                   syscall.Errno = 592\n\tERROR_VDM_HARD_ERROR                                                      syscall.Errno = 593\n\tERROR_DRIVER_CANCEL_TIMEOUT                                               syscall.Errno = 594\n\tERROR_REPLY_MESSAGE_MISMATCH                                              syscall.Errno = 595\n\tERROR_LOST_WRITEBEHIND_DATA                                               syscall.Errno = 596\n\tERROR_CLIENT_SERVER_PARAMETERS_INVALID                                    syscall.Errno = 597\n\tERROR_NOT_TINY_STREAM                                                     syscall.Errno = 598\n\tERROR_STACK_OVERFLOW_READ                                                 syscall.Errno = 599\n\tERROR_CONVERT_TO_LARGE                                                    syscall.Errno = 600\n\tERROR_FOUND_OUT_OF_SCOPE                                                  syscall.Errno = 601\n\tERROR_ALLOCATE_BUCKET                                                     syscall.Errno = 602\n\tERROR_MARSHALL_OVERFLOW                                                   syscall.Errno = 603\n\tERROR_INVALID_VARIANT                                                     syscall.Errno = 604\n\tERROR_BAD_COMPRESSION_BUFFER                                              syscall.Errno = 605\n\tERROR_AUDIT_FAILED                                                        syscall.Errno = 606\n\tERROR_TIMER_RESOLUTION_NOT_SET                                            syscall.Errno = 607\n\tERROR_INSUFFICIENT_LOGON_INFO                                             syscall.Errno = 608\n\tERROR_BAD_DLL_ENTRYPOINT                                                  syscall.Errno = 609\n\tERROR_BAD_SERVICE_ENTRYPOINT                                              syscall.Errno = 610\n\tERROR_IP_ADDRESS_CONFLICT1                                                syscall.Errno = 611\n\tERROR_IP_ADDRESS_CONFLICT2                                                syscall.Errno = 612\n\tERROR_REGISTRY_QUOTA_LIMIT                                                syscall.Errno = 613\n\tERROR_NO_CALLBACK_ACTIVE                                                  syscall.Errno = 614\n\tERROR_PWD_TOO_SHORT                                                       syscall.Errno = 615\n\tERROR_PWD_TOO_RECENT                                                      syscall.Errno = 616\n\tERROR_PWD_HISTORY_CONFLICT                                                syscall.Errno = 617\n\tERROR_UNSUPPORTED_COMPRESSION                                             syscall.Errno = 618\n\tERROR_INVALID_HW_PROFILE                                                  syscall.Errno = 619\n\tERROR_INVALID_PLUGPLAY_DEVICE_PATH                                        syscall.Errno = 620\n\tERROR_QUOTA_LIST_INCONSISTENT                                             syscall.Errno = 621\n\tERROR_EVALUATION_EXPIRATION                                               syscall.Errno = 622\n\tERROR_ILLEGAL_DLL_RELOCATION                                              syscall.Errno = 623\n\tERROR_DLL_INIT_FAILED_LOGOFF                                              syscall.Errno = 624\n\tERROR_VALIDATE_CONTINUE                                                   syscall.Errno = 625\n\tERROR_NO_MORE_MATCHES                                                     syscall.Errno = 626\n\tERROR_RANGE_LIST_CONFLICT                                                 syscall.Errno = 627\n\tERROR_SERVER_SID_MISMATCH                                                 syscall.Errno = 628\n\tERROR_CANT_ENABLE_DENY_ONLY                                               syscall.Errno = 629\n\tERROR_FLOAT_MULTIPLE_FAULTS                                               syscall.Errno = 630\n\tERROR_FLOAT_MULTIPLE_TRAPS                                                syscall.Errno = 631\n\tERROR_NOINTERFACE                                                         syscall.Errno = 632\n\tERROR_DRIVER_FAILED_SLEEP                                                 syscall.Errno = 633\n\tERROR_CORRUPT_SYSTEM_FILE                                                 syscall.Errno = 634\n\tERROR_COMMITMENT_MINIMUM                                                  syscall.Errno = 635\n\tERROR_PNP_RESTART_ENUMERATION                                             syscall.Errno = 636\n\tERROR_SYSTEM_IMAGE_BAD_SIGNATURE                                          syscall.Errno = 637\n\tERROR_PNP_REBOOT_REQUIRED                                                 syscall.Errno = 638\n\tERROR_INSUFFICIENT_POWER                                                  syscall.Errno = 639\n\tERROR_MULTIPLE_FAULT_VIOLATION                                            syscall.Errno = 640\n\tERROR_SYSTEM_SHUTDOWN                                                     syscall.Errno = 641\n\tERROR_PORT_NOT_SET                                                        syscall.Errno = 642\n\tERROR_DS_VERSION_CHECK_FAILURE                                            syscall.Errno = 643\n\tERROR_RANGE_NOT_FOUND                                                     syscall.Errno = 644\n\tERROR_NOT_SAFE_MODE_DRIVER                                                syscall.Errno = 646\n\tERROR_FAILED_DRIVER_ENTRY                                                 syscall.Errno = 647\n\tERROR_DEVICE_ENUMERATION_ERROR                                            syscall.Errno = 648\n\tERROR_MOUNT_POINT_NOT_RESOLVED                                            syscall.Errno = 649\n\tERROR_INVALID_DEVICE_OBJECT_PARAMETER                                     syscall.Errno = 650\n\tERROR_MCA_OCCURED                                                         syscall.Errno = 651\n\tERROR_DRIVER_DATABASE_ERROR                                               syscall.Errno = 652\n\tERROR_SYSTEM_HIVE_TOO_LARGE                                               syscall.Errno = 653\n\tERROR_DRIVER_FAILED_PRIOR_UNLOAD                                          syscall.Errno = 654\n\tERROR_VOLSNAP_PREPARE_HIBERNATE                                           syscall.Errno = 655\n\tERROR_HIBERNATION_FAILURE                                                 syscall.Errno = 656\n\tERROR_PWD_TOO_LONG                                                        syscall.Errno = 657\n\tERROR_FILE_SYSTEM_LIMITATION                                              syscall.Errno = 665\n\tERROR_ASSERTION_FAILURE                                                   syscall.Errno = 668\n\tERROR_ACPI_ERROR                                                          syscall.Errno = 669\n\tERROR_WOW_ASSERTION                                                       syscall.Errno = 670\n\tERROR_PNP_BAD_MPS_TABLE                                                   syscall.Errno = 671\n\tERROR_PNP_TRANSLATION_FAILED                                              syscall.Errno = 672\n\tERROR_PNP_IRQ_TRANSLATION_FAILED                                          syscall.Errno = 673\n\tERROR_PNP_INVALID_ID                                                      syscall.Errno = 674\n\tERROR_WAKE_SYSTEM_DEBUGGER                                                syscall.Errno = 675\n\tERROR_HANDLES_CLOSED                                                      syscall.Errno = 676\n\tERROR_EXTRANEOUS_INFORMATION                                              syscall.Errno = 677\n\tERROR_RXACT_COMMIT_NECESSARY                                              syscall.Errno = 678\n\tERROR_MEDIA_CHECK                                                         syscall.Errno = 679\n\tERROR_GUID_SUBSTITUTION_MADE                                              syscall.Errno = 680\n\tERROR_STOPPED_ON_SYMLINK                                                  syscall.Errno = 681\n\tERROR_LONGJUMP                                                            syscall.Errno = 682\n\tERROR_PLUGPLAY_QUERY_VETOED                                               syscall.Errno = 683\n\tERROR_UNWIND_CONSOLIDATE                                                  syscall.Errno = 684\n\tERROR_REGISTRY_HIVE_RECOVERED                                             syscall.Errno = 685\n\tERROR_DLL_MIGHT_BE_INSECURE                                               syscall.Errno = 686\n\tERROR_DLL_MIGHT_BE_INCOMPATIBLE                                           syscall.Errno = 687\n\tERROR_DBG_EXCEPTION_NOT_HANDLED                                           syscall.Errno = 688\n\tERROR_DBG_REPLY_LATER                                                     syscall.Errno = 689\n\tERROR_DBG_UNABLE_TO_PROVIDE_HANDLE                                        syscall.Errno = 690\n\tERROR_DBG_TERMINATE_THREAD                                                syscall.Errno = 691\n\tERROR_DBG_TERMINATE_PROCESS                                               syscall.Errno = 692\n\tERROR_DBG_CONTROL_C                                                       syscall.Errno = 693\n\tERROR_DBG_PRINTEXCEPTION_C                                                syscall.Errno = 694\n\tERROR_DBG_RIPEXCEPTION                                                    syscall.Errno = 695\n\tERROR_DBG_CONTROL_BREAK                                                   syscall.Errno = 696\n\tERROR_DBG_COMMAND_EXCEPTION                                               syscall.Errno = 697\n\tERROR_OBJECT_NAME_EXISTS                                                  syscall.Errno = 698\n\tERROR_THREAD_WAS_SUSPENDED                                                syscall.Errno = 699\n\tERROR_IMAGE_NOT_AT_BASE                                                   syscall.Errno = 700\n\tERROR_RXACT_STATE_CREATED                                                 syscall.Errno = 701\n\tERROR_SEGMENT_NOTIFICATION                                                syscall.Errno = 702\n\tERROR_BAD_CURRENT_DIRECTORY                                               syscall.Errno = 703\n\tERROR_FT_READ_RECOVERY_FROM_BACKUP                                        syscall.Errno = 704\n\tERROR_FT_WRITE_RECOVERY                                                   syscall.Errno = 705\n\tERROR_IMAGE_MACHINE_TYPE_MISMATCH                                         syscall.Errno = 706\n\tERROR_RECEIVE_PARTIAL                                                     syscall.Errno = 707\n\tERROR_RECEIVE_EXPEDITED                                                   syscall.Errno = 708\n\tERROR_RECEIVE_PARTIAL_EXPEDITED                                           syscall.Errno = 709\n\tERROR_EVENT_DONE                                                          syscall.Errno = 710\n\tERROR_EVENT_PENDING                                                       syscall.Errno = 711\n\tERROR_CHECKING_FILE_SYSTEM                                                syscall.Errno = 712\n\tERROR_FATAL_APP_EXIT                                                      syscall.Errno = 713\n\tERROR_PREDEFINED_HANDLE                                                   syscall.Errno = 714\n\tERROR_WAS_UNLOCKED                                                        syscall.Errno = 715\n\tERROR_SERVICE_NOTIFICATION                                                syscall.Errno = 716\n\tERROR_WAS_LOCKED                                                          syscall.Errno = 717\n\tERROR_LOG_HARD_ERROR                                                      syscall.Errno = 718\n\tERROR_ALREADY_WIN32                                                       syscall.Errno = 719\n\tERROR_IMAGE_MACHINE_TYPE_MISMATCH_EXE                                     syscall.Errno = 720\n\tERROR_NO_YIELD_PERFORMED                                                  syscall.Errno = 721\n\tERROR_TIMER_RESUME_IGNORED                                                syscall.Errno = 722\n\tERROR_ARBITRATION_UNHANDLED                                               syscall.Errno = 723\n\tERROR_CARDBUS_NOT_SUPPORTED                                               syscall.Errno = 724\n\tERROR_MP_PROCESSOR_MISMATCH                                               syscall.Errno = 725\n\tERROR_HIBERNATED                                                          syscall.Errno = 726\n\tERROR_RESUME_HIBERNATION                                                  syscall.Errno = 727\n\tERROR_FIRMWARE_UPDATED                                                    syscall.Errno = 728\n\tERROR_DRIVERS_LEAKING_LOCKED_PAGES                                        syscall.Errno = 729\n\tERROR_WAKE_SYSTEM                                                         syscall.Errno = 730\n\tERROR_WAIT_1                                                              syscall.Errno = 731\n\tERROR_WAIT_2                                                              syscall.Errno = 732\n\tERROR_WAIT_3                                                              syscall.Errno = 733\n\tERROR_WAIT_63                                                             syscall.Errno = 734\n\tERROR_ABANDONED_WAIT_0                                                    syscall.Errno = 735\n\tERROR_ABANDONED_WAIT_63                                                   syscall.Errno = 736\n\tERROR_USER_APC                                                            syscall.Errno = 737\n\tERROR_KERNEL_APC                                                          syscall.Errno = 738\n\tERROR_ALERTED                                                             syscall.Errno = 739\n\tERROR_ELEVATION_REQUIRED                                                  syscall.Errno = 740\n\tERROR_REPARSE                                                             syscall.Errno = 741\n\tERROR_OPLOCK_BREAK_IN_PROGRESS                                            syscall.Errno = 742\n\tERROR_VOLUME_MOUNTED                                                      syscall.Errno = 743\n\tERROR_RXACT_COMMITTED                                                     syscall.Errno = 744\n\tERROR_NOTIFY_CLEANUP                                                      syscall.Errno = 745\n\tERROR_PRIMARY_TRANSPORT_CONNECT_FAILED                                    syscall.Errno = 746\n\tERROR_PAGE_FAULT_TRANSITION                                               syscall.Errno = 747\n\tERROR_PAGE_FAULT_DEMAND_ZERO                                              syscall.Errno = 748\n\tERROR_PAGE_FAULT_COPY_ON_WRITE                                            syscall.Errno = 749\n\tERROR_PAGE_FAULT_GUARD_PAGE                                               syscall.Errno = 750\n\tERROR_PAGE_FAULT_PAGING_FILE                                              syscall.Errno = 751\n\tERROR_CACHE_PAGE_LOCKED                                                   syscall.Errno = 752\n\tERROR_CRASH_DUMP                                                          syscall.Errno = 753\n\tERROR_BUFFER_ALL_ZEROS                                                    syscall.Errno = 754\n\tERROR_REPARSE_OBJECT                                                      syscall.Errno = 755\n\tERROR_RESOURCE_REQUIREMENTS_CHANGED                                       syscall.Errno = 756\n\tERROR_TRANSLATION_COMPLETE                                                syscall.Errno = 757\n\tERROR_NOTHING_TO_TERMINATE                                                syscall.Errno = 758\n\tERROR_PROCESS_NOT_IN_JOB                                                  syscall.Errno = 759\n\tERROR_PROCESS_IN_JOB                                                      syscall.Errno = 760\n\tERROR_VOLSNAP_HIBERNATE_READY                                             syscall.Errno = 761\n\tERROR_FSFILTER_OP_COMPLETED_SUCCESSFULLY                                  syscall.Errno = 762\n\tERROR_INTERRUPT_VECTOR_ALREADY_CONNECTED                                  syscall.Errno = 763\n\tERROR_INTERRUPT_STILL_CONNECTED                                           syscall.Errno = 764\n\tERROR_WAIT_FOR_OPLOCK                                                     syscall.Errno = 765\n\tERROR_DBG_EXCEPTION_HANDLED                                               syscall.Errno = 766\n\tERROR_DBG_CONTINUE                                                        syscall.Errno = 767\n\tERROR_CALLBACK_POP_STACK                                                  syscall.Errno = 768\n\tERROR_COMPRESSION_DISABLED                                                syscall.Errno = 769\n\tERROR_CANTFETCHBACKWARDS                                                  syscall.Errno = 770\n\tERROR_CANTSCROLLBACKWARDS                                                 syscall.Errno = 771\n\tERROR_ROWSNOTRELEASED                                                     syscall.Errno = 772\n\tERROR_BAD_ACCESSOR_FLAGS                                                  syscall.Errno = 773\n\tERROR_ERRORS_ENCOUNTERED                                                  syscall.Errno = 774\n\tERROR_NOT_CAPABLE                                                         syscall.Errno = 775\n\tERROR_REQUEST_OUT_OF_SEQUENCE                                             syscall.Errno = 776\n\tERROR_VERSION_PARSE_ERROR                                                 syscall.Errno = 777\n\tERROR_BADSTARTPOSITION                                                    syscall.Errno = 778\n\tERROR_MEMORY_HARDWARE                                                     syscall.Errno = 779\n\tERROR_DISK_REPAIR_DISABLED                                                syscall.Errno = 780\n\tERROR_INSUFFICIENT_RESOURCE_FOR_SPECIFIED_SHARED_SECTION_SIZE             syscall.Errno = 781\n\tERROR_SYSTEM_POWERSTATE_TRANSITION                                        syscall.Errno = 782\n\tERROR_SYSTEM_POWERSTATE_COMPLEX_TRANSITION                                syscall.Errno = 783\n\tERROR_MCA_EXCEPTION                                                       syscall.Errno = 784\n\tERROR_ACCESS_AUDIT_BY_POLICY                                              syscall.Errno = 785\n\tERROR_ACCESS_DISABLED_NO_SAFER_UI_BY_POLICY                               syscall.Errno = 786\n\tERROR_ABANDON_HIBERFILE                                                   syscall.Errno = 787\n\tERROR_LOST_WRITEBEHIND_DATA_NETWORK_DISCONNECTED                          syscall.Errno = 788\n\tERROR_LOST_WRITEBEHIND_DATA_NETWORK_SERVER_ERROR                          syscall.Errno = 789\n\tERROR_LOST_WRITEBEHIND_DATA_LOCAL_DISK_ERROR                              syscall.Errno = 790\n\tERROR_BAD_MCFG_TABLE                                                      syscall.Errno = 791\n\tERROR_DISK_REPAIR_REDIRECTED                                              syscall.Errno = 792\n\tERROR_DISK_REPAIR_UNSUCCESSFUL                                            syscall.Errno = 793\n\tERROR_CORRUPT_LOG_OVERFULL                                                syscall.Errno = 794\n\tERROR_CORRUPT_LOG_CORRUPTED                                               syscall.Errno = 795\n\tERROR_CORRUPT_LOG_UNAVAILABLE                                             syscall.Errno = 796\n\tERROR_CORRUPT_LOG_DELETED_FULL                                            syscall.Errno = 797\n\tERROR_CORRUPT_LOG_CLEARED                                                 syscall.Errno = 798\n\tERROR_ORPHAN_NAME_EXHAUSTED                                               syscall.Errno = 799\n\tERROR_OPLOCK_SWITCHED_TO_NEW_HANDLE                                       syscall.Errno = 800\n\tERROR_CANNOT_GRANT_REQUESTED_OPLOCK                                       syscall.Errno = 801\n\tERROR_CANNOT_BREAK_OPLOCK                                                 syscall.Errno = 802\n\tERROR_OPLOCK_HANDLE_CLOSED                                                syscall.Errno = 803\n\tERROR_NO_ACE_CONDITION                                                    syscall.Errno = 804\n\tERROR_INVALID_ACE_CONDITION                                               syscall.Errno = 805\n\tERROR_FILE_HANDLE_REVOKED                                                 syscall.Errno = 806\n\tERROR_IMAGE_AT_DIFFERENT_BASE                                             syscall.Errno = 807\n\tERROR_ENCRYPTED_IO_NOT_POSSIBLE                                           syscall.Errno = 808\n\tERROR_FILE_METADATA_OPTIMIZATION_IN_PROGRESS                              syscall.Errno = 809\n\tERROR_QUOTA_ACTIVITY                                                      syscall.Errno = 810\n\tERROR_HANDLE_REVOKED                                                      syscall.Errno = 811\n\tERROR_CALLBACK_INVOKE_INLINE                                              syscall.Errno = 812\n\tERROR_CPU_SET_INVALID                                                     syscall.Errno = 813\n\tERROR_ENCLAVE_NOT_TERMINATED                                              syscall.Errno = 814\n\tERROR_ENCLAVE_VIOLATION                                                   syscall.Errno = 815\n\tERROR_EA_ACCESS_DENIED                                                    syscall.Errno = 994\n\tERROR_OPERATION_ABORTED                                                   syscall.Errno = 995\n\tERROR_IO_INCOMPLETE                                                       syscall.Errno = 996\n\tERROR_IO_PENDING                                                          syscall.Errno = 997\n\tERROR_NOACCESS                                                            syscall.Errno = 998\n\tERROR_SWAPERROR                                                           syscall.Errno = 999\n\tERROR_STACK_OVERFLOW                                                      syscall.Errno = 1001\n\tERROR_INVALID_MESSAGE                                                     syscall.Errno = 1002\n\tERROR_CAN_NOT_COMPLETE                                                    syscall.Errno = 1003\n\tERROR_INVALID_FLAGS                                                       syscall.Errno = 1004\n\tERROR_UNRECOGNIZED_VOLUME                                                 syscall.Errno = 1005\n\tERROR_FILE_INVALID                                                        syscall.Errno = 1006\n\tERROR_FULLSCREEN_MODE                                                     syscall.Errno = 1007\n\tERROR_NO_TOKEN                                                            syscall.Errno = 1008\n\tERROR_BADDB                                                               syscall.Errno = 1009\n\tERROR_BADKEY                                                              syscall.Errno = 1010\n\tERROR_CANTOPEN                                                            syscall.Errno = 1011\n\tERROR_CANTREAD                                                            syscall.Errno = 1012\n\tERROR_CANTWRITE                                                           syscall.Errno = 1013\n\tERROR_REGISTRY_RECOVERED                                                  syscall.Errno = 1014\n\tERROR_REGISTRY_CORRUPT                                                    syscall.Errno = 1015\n\tERROR_REGISTRY_IO_FAILED                                                  syscall.Errno = 1016\n\tERROR_NOT_REGISTRY_FILE                                                   syscall.Errno = 1017\n\tERROR_KEY_DELETED                                                         syscall.Errno = 1018\n\tERROR_NO_LOG_SPACE                                                        syscall.Errno = 1019\n\tERROR_KEY_HAS_CHILDREN                                                    syscall.Errno = 1020\n\tERROR_CHILD_MUST_BE_VOLATILE                                              syscall.Errno = 1021\n\tERROR_NOTIFY_ENUM_DIR                                                     syscall.Errno = 1022\n\tERROR_DEPENDENT_SERVICES_RUNNING                                          syscall.Errno = 1051\n\tERROR_INVALID_SERVICE_CONTROL                                             syscall.Errno = 1052\n\tERROR_SERVICE_REQUEST_TIMEOUT                                             syscall.Errno = 1053\n\tERROR_SERVICE_NO_THREAD                                                   syscall.Errno = 1054\n\tERROR_SERVICE_DATABASE_LOCKED                                             syscall.Errno = 1055\n\tERROR_SERVICE_ALREADY_RUNNING                                             syscall.Errno = 1056\n\tERROR_INVALID_SERVICE_ACCOUNT                                             syscall.Errno = 1057\n\tERROR_SERVICE_DISABLED                                                    syscall.Errno = 1058\n\tERROR_CIRCULAR_DEPENDENCY                                                 syscall.Errno = 1059\n\tERROR_SERVICE_DOES_NOT_EXIST                                              syscall.Errno = 1060\n\tERROR_SERVICE_CANNOT_ACCEPT_CTRL                                          syscall.Errno = 1061\n\tERROR_SERVICE_NOT_ACTIVE                                                  syscall.Errno = 1062\n\tERROR_FAILED_SERVICE_CONTROLLER_CONNECT                                   syscall.Errno = 1063\n\tERROR_EXCEPTION_IN_SERVICE                                                syscall.Errno = 1064\n\tERROR_DATABASE_DOES_NOT_EXIST                                             syscall.Errno = 1065\n\tERROR_SERVICE_SPECIFIC_ERROR                                              syscall.Errno = 1066\n\tERROR_PROCESS_ABORTED                                                     syscall.Errno = 1067\n\tERROR_SERVICE_DEPENDENCY_FAIL                                             syscall.Errno = 1068\n\tERROR_SERVICE_LOGON_FAILED                                                syscall.Errno = 1069\n\tERROR_SERVICE_START_HANG                                                  syscall.Errno = 1070\n\tERROR_INVALID_SERVICE_LOCK                                                syscall.Errno = 1071\n\tERROR_SERVICE_MARKED_FOR_DELETE                                           syscall.Errno = 1072\n\tERROR_SERVICE_EXISTS                                                      syscall.Errno = 1073\n\tERROR_ALREADY_RUNNING_LKG                                                 syscall.Errno = 1074\n\tERROR_SERVICE_DEPENDENCY_DELETED                                          syscall.Errno = 1075\n\tERROR_BOOT_ALREADY_ACCEPTED                                               syscall.Errno = 1076\n\tERROR_SERVICE_NEVER_STARTED                                               syscall.Errno = 1077\n\tERROR_DUPLICATE_SERVICE_NAME                                              syscall.Errno = 1078\n\tERROR_DIFFERENT_SERVICE_ACCOUNT                                           syscall.Errno = 1079\n\tERROR_CANNOT_DETECT_DRIVER_FAILURE                                        syscall.Errno = 1080\n\tERROR_CANNOT_DETECT_PROCESS_ABORT                                         syscall.Errno = 1081\n\tERROR_NO_RECOVERY_PROGRAM                                                 syscall.Errno = 1082\n\tERROR_SERVICE_NOT_IN_EXE                                                  syscall.Errno = 1083\n\tERROR_NOT_SAFEBOOT_SERVICE                                                syscall.Errno = 1084\n\tERROR_END_OF_MEDIA                                                        syscall.Errno = 1100\n\tERROR_FILEMARK_DETECTED                                                   syscall.Errno = 1101\n\tERROR_BEGINNING_OF_MEDIA                                                  syscall.Errno = 1102\n\tERROR_SETMARK_DETECTED                                                    syscall.Errno = 1103\n\tERROR_NO_DATA_DETECTED                                                    syscall.Errno = 1104\n\tERROR_PARTITION_FAILURE                                                   syscall.Errno = 1105\n\tERROR_INVALID_BLOCK_LENGTH                                                syscall.Errno = 1106\n\tERROR_DEVICE_NOT_PARTITIONED                                              syscall.Errno = 1107\n\tERROR_UNABLE_TO_LOCK_MEDIA                                                syscall.Errno = 1108\n\tERROR_UNABLE_TO_UNLOAD_MEDIA                                              syscall.Errno = 1109\n\tERROR_MEDIA_CHANGED                                                       syscall.Errno = 1110\n\tERROR_BUS_RESET                                                           syscall.Errno = 1111\n\tERROR_NO_MEDIA_IN_DRIVE                                                   syscall.Errno = 1112\n\tERROR_NO_UNICODE_TRANSLATION                                              syscall.Errno = 1113\n\tERROR_DLL_INIT_FAILED                                                     syscall.Errno = 1114\n\tERROR_SHUTDOWN_IN_PROGRESS                                                syscall.Errno = 1115\n\tERROR_NO_SHUTDOWN_IN_PROGRESS                                             syscall.Errno = 1116\n\tERROR_IO_DEVICE                                                           syscall.Errno = 1117\n\tERROR_SERIAL_NO_DEVICE                                                    syscall.Errno = 1118\n\tERROR_IRQ_BUSY                                                            syscall.Errno = 1119\n\tERROR_MORE_WRITES                                                         syscall.Errno = 1120\n\tERROR_COUNTER_TIMEOUT                                                     syscall.Errno = 1121\n\tERROR_FLOPPY_ID_MARK_NOT_FOUND                                            syscall.Errno = 1122\n\tERROR_FLOPPY_WRONG_CYLINDER                                               syscall.Errno = 1123\n\tERROR_FLOPPY_UNKNOWN_ERROR                                                syscall.Errno = 1124\n\tERROR_FLOPPY_BAD_REGISTERS                                                syscall.Errno = 1125\n\tERROR_DISK_RECALIBRATE_FAILED                                             syscall.Errno = 1126\n\tERROR_DISK_OPERATION_FAILED                                               syscall.Errno = 1127\n\tERROR_DISK_RESET_FAILED                                                   syscall.Errno = 1128\n\tERROR_EOM_OVERFLOW                                                        syscall.Errno = 1129\n\tERROR_NOT_ENOUGH_SERVER_MEMORY                                            syscall.Errno = 1130\n\tERROR_POSSIBLE_DEADLOCK                                                   syscall.Errno = 1131\n\tERROR_MAPPED_ALIGNMENT                                                    syscall.Errno = 1132\n\tERROR_SET_POWER_STATE_VETOED                                              syscall.Errno = 1140\n\tERROR_SET_POWER_STATE_FAILED                                              syscall.Errno = 1141\n\tERROR_TOO_MANY_LINKS                                                      syscall.Errno = 1142\n\tERROR_OLD_WIN_VERSION                                                     syscall.Errno = 1150\n\tERROR_APP_WRONG_OS                                                        syscall.Errno = 1151\n\tERROR_SINGLE_INSTANCE_APP                                                 syscall.Errno = 1152\n\tERROR_RMODE_APP                                                           syscall.Errno = 1153\n\tERROR_INVALID_DLL                                                         syscall.Errno = 1154\n\tERROR_NO_ASSOCIATION                                                      syscall.Errno = 1155\n\tERROR_DDE_FAIL                                                            syscall.Errno = 1156\n\tERROR_DLL_NOT_FOUND                                                       syscall.Errno = 1157\n\tERROR_NO_MORE_USER_HANDLES                                                syscall.Errno = 1158\n\tERROR_MESSAGE_SYNC_ONLY                                                   syscall.Errno = 1159\n\tERROR_SOURCE_ELEMENT_EMPTY                                                syscall.Errno = 1160\n\tERROR_DESTINATION_ELEMENT_FULL                                            syscall.Errno = 1161\n\tERROR_ILLEGAL_ELEMENT_ADDRESS                                             syscall.Errno = 1162\n\tERROR_MAGAZINE_NOT_PRESENT                                                syscall.Errno = 1163\n\tERROR_DEVICE_REINITIALIZATION_NEEDED                                      syscall.Errno = 1164\n\tERROR_DEVICE_REQUIRES_CLEANING                                            syscall.Errno = 1165\n\tERROR_DEVICE_DOOR_OPEN                                                    syscall.Errno = 1166\n\tERROR_DEVICE_NOT_CONNECTED                                                syscall.Errno = 1167\n\tERROR_NOT_FOUND                                                           syscall.Errno = 1168\n\tERROR_NO_MATCH                                                            syscall.Errno = 1169\n\tERROR_SET_NOT_FOUND                                                       syscall.Errno = 1170\n\tERROR_POINT_NOT_FOUND                                                     syscall.Errno = 1171\n\tERROR_NO_TRACKING_SERVICE                                                 syscall.Errno = 1172\n\tERROR_NO_VOLUME_ID                                                        syscall.Errno = 1173\n\tERROR_UNABLE_TO_REMOVE_REPLACED                                           syscall.Errno = 1175\n\tERROR_UNABLE_TO_MOVE_REPLACEMENT                                          syscall.Errno = 1176\n\tERROR_UNABLE_TO_MOVE_REPLACEMENT_2                                        syscall.Errno = 1177\n\tERROR_JOURNAL_DELETE_IN_PROGRESS                                          syscall.Errno = 1178\n\tERROR_JOURNAL_NOT_ACTIVE                                                  syscall.Errno = 1179\n\tERROR_POTENTIAL_FILE_FOUND                                                syscall.Errno = 1180\n\tERROR_JOURNAL_ENTRY_DELETED                                               syscall.Errno = 1181\n\tERROR_SHUTDOWN_IS_SCHEDULED                                               syscall.Errno = 1190\n\tERROR_SHUTDOWN_USERS_LOGGED_ON                                            syscall.Errno = 1191\n\tERROR_BAD_DEVICE                                                          syscall.Errno = 1200\n\tERROR_CONNECTION_UNAVAIL                                                  syscall.Errno = 1201\n\tERROR_DEVICE_ALREADY_REMEMBERED                                           syscall.Errno = 1202\n\tERROR_NO_NET_OR_BAD_PATH                                                  syscall.Errno = 1203\n\tERROR_BAD_PROVIDER                                                        syscall.Errno = 1204\n\tERROR_CANNOT_OPEN_PROFILE                                                 syscall.Errno = 1205\n\tERROR_BAD_PROFILE                                                         syscall.Errno = 1206\n\tERROR_NOT_CONTAINER                                                       syscall.Errno = 1207\n\tERROR_EXTENDED_ERROR                                                      syscall.Errno = 1208\n\tERROR_INVALID_GROUPNAME                                                   syscall.Errno = 1209\n\tERROR_INVALID_COMPUTERNAME                                                syscall.Errno = 1210\n\tERROR_INVALID_EVENTNAME                                                   syscall.Errno = 1211\n\tERROR_INVALID_DOMAINNAME                                                  syscall.Errno = 1212\n\tERROR_INVALID_SERVICENAME                                                 syscall.Errno = 1213\n\tERROR_INVALID_NETNAME                                                     syscall.Errno = 1214\n\tERROR_INVALID_SHARENAME                                                   syscall.Errno = 1215\n\tERROR_INVALID_PASSWORDNAME                                                syscall.Errno = 1216\n\tERROR_INVALID_MESSAGENAME                                                 syscall.Errno = 1217\n\tERROR_INVALID_MESSAGEDEST                                                 syscall.Errno = 1218\n\tERROR_SESSION_CREDENTIAL_CONFLICT                                         syscall.Errno = 1219\n\tERROR_REMOTE_SESSION_LIMIT_EXCEEDED                                       syscall.Errno = 1220\n\tERROR_DUP_DOMAINNAME                                                      syscall.Errno = 1221\n\tERROR_NO_NETWORK                                                          syscall.Errno = 1222\n\tERROR_CANCELLED                                                           syscall.Errno = 1223\n\tERROR_USER_MAPPED_FILE                                                    syscall.Errno = 1224\n\tERROR_CONNECTION_REFUSED                                                  syscall.Errno = 1225\n\tERROR_GRACEFUL_DISCONNECT                                                 syscall.Errno = 1226\n\tERROR_ADDRESS_ALREADY_ASSOCIATED                                          syscall.Errno = 1227\n\tERROR_ADDRESS_NOT_ASSOCIATED                                              syscall.Errno = 1228\n\tERROR_CONNECTION_INVALID                                                  syscall.Errno = 1229\n\tERROR_CONNECTION_ACTIVE                                                   syscall.Errno = 1230\n\tERROR_NETWORK_UNREACHABLE                                                 syscall.Errno = 1231\n\tERROR_HOST_UNREACHABLE                                                    syscall.Errno = 1232\n\tERROR_PROTOCOL_UNREACHABLE                                                syscall.Errno = 1233\n\tERROR_PORT_UNREACHABLE                                                    syscall.Errno = 1234\n\tERROR_REQUEST_ABORTED                                                     syscall.Errno = 1235\n\tERROR_CONNECTION_ABORTED                                                  syscall.Errno = 1236\n\tERROR_RETRY                                                               syscall.Errno = 1237\n\tERROR_CONNECTION_COUNT_LIMIT                                              syscall.Errno = 1238\n\tERROR_LOGIN_TIME_RESTRICTION                                              syscall.Errno = 1239\n\tERROR_LOGIN_WKSTA_RESTRICTION                                             syscall.Errno = 1240\n\tERROR_INCORRECT_ADDRESS                                                   syscall.Errno = 1241\n\tERROR_ALREADY_REGISTERED                                                  syscall.Errno = 1242\n\tERROR_SERVICE_NOT_FOUND                                                   syscall.Errno = 1243\n\tERROR_NOT_AUTHENTICATED                                                   syscall.Errno = 1244\n\tERROR_NOT_LOGGED_ON                                                       syscall.Errno = 1245\n\tERROR_CONTINUE                                                            syscall.Errno = 1246\n\tERROR_ALREADY_INITIALIZED                                                 syscall.Errno = 1247\n\tERROR_NO_MORE_DEVICES                                                     syscall.Errno = 1248\n\tERROR_NO_SUCH_SITE                                                        syscall.Errno = 1249\n\tERROR_DOMAIN_CONTROLLER_EXISTS                                            syscall.Errno = 1250\n\tERROR_ONLY_IF_CONNECTED                                                   syscall.Errno = 1251\n\tERROR_OVERRIDE_NOCHANGES                                                  syscall.Errno = 1252\n\tERROR_BAD_USER_PROFILE                                                    syscall.Errno = 1253\n\tERROR_NOT_SUPPORTED_ON_SBS                                                syscall.Errno = 1254\n\tERROR_SERVER_SHUTDOWN_IN_PROGRESS                                         syscall.Errno = 1255\n\tERROR_HOST_DOWN                                                           syscall.Errno = 1256\n\tERROR_NON_ACCOUNT_SID                                                     syscall.Errno = 1257\n\tERROR_NON_DOMAIN_SID                                                      syscall.Errno = 1258\n\tERROR_APPHELP_BLOCK                                                       syscall.Errno = 1259\n\tERROR_ACCESS_DISABLED_BY_POLICY                                           syscall.Errno = 1260\n\tERROR_REG_NAT_CONSUMPTION                                                 syscall.Errno = 1261\n\tERROR_CSCSHARE_OFFLINE                                                    syscall.Errno = 1262\n\tERROR_PKINIT_FAILURE                                                      syscall.Errno = 1263\n\tERROR_SMARTCARD_SUBSYSTEM_FAILURE                                         syscall.Errno = 1264\n\tERROR_DOWNGRADE_DETECTED                                                  syscall.Errno = 1265\n\tERROR_MACHINE_LOCKED                                                      syscall.Errno = 1271\n\tERROR_SMB_GUEST_LOGON_BLOCKED                                             syscall.Errno = 1272\n\tERROR_CALLBACK_SUPPLIED_INVALID_DATA                                      syscall.Errno = 1273\n\tERROR_SYNC_FOREGROUND_REFRESH_REQUIRED                                    syscall.Errno = 1274\n\tERROR_DRIVER_BLOCKED                                                      syscall.Errno = 1275\n\tERROR_INVALID_IMPORT_OF_NON_DLL                                           syscall.Errno = 1276\n\tERROR_ACCESS_DISABLED_WEBBLADE                                            syscall.Errno = 1277\n\tERROR_ACCESS_DISABLED_WEBBLADE_TAMPER                                     syscall.Errno = 1278\n\tERROR_RECOVERY_FAILURE                                                    syscall.Errno = 1279\n\tERROR_ALREADY_FIBER                                                       syscall.Errno = 1280\n\tERROR_ALREADY_THREAD                                                      syscall.Errno = 1281\n\tERROR_STACK_BUFFER_OVERRUN                                                syscall.Errno = 1282\n\tERROR_PARAMETER_QUOTA_EXCEEDED                                            syscall.Errno = 1283\n\tERROR_DEBUGGER_INACTIVE                                                   syscall.Errno = 1284\n\tERROR_DELAY_LOAD_FAILED                                                   syscall.Errno = 1285\n\tERROR_VDM_DISALLOWED                                                      syscall.Errno = 1286\n\tERROR_UNIDENTIFIED_ERROR                                                  syscall.Errno = 1287\n\tERROR_INVALID_CRUNTIME_PARAMETER                                          syscall.Errno = 1288\n\tERROR_BEYOND_VDL                                                          syscall.Errno = 1289\n\tERROR_INCOMPATIBLE_SERVICE_SID_TYPE                                       syscall.Errno = 1290\n\tERROR_DRIVER_PROCESS_TERMINATED                                           syscall.Errno = 1291\n\tERROR_IMPLEMENTATION_LIMIT                                                syscall.Errno = 1292\n\tERROR_PROCESS_IS_PROTECTED                                                syscall.Errno = 1293\n\tERROR_SERVICE_NOTIFY_CLIENT_LAGGING                                       syscall.Errno = 1294\n\tERROR_DISK_QUOTA_EXCEEDED                                                 syscall.Errno = 1295\n\tERROR_CONTENT_BLOCKED                                                     syscall.Errno = 1296\n\tERROR_INCOMPATIBLE_SERVICE_PRIVILEGE                                      syscall.Errno = 1297\n\tERROR_APP_HANG                                                            syscall.Errno = 1298\n\tERROR_INVALID_LABEL                                                       syscall.Errno = 1299\n\tERROR_NOT_ALL_ASSIGNED                                                    syscall.Errno = 1300\n\tERROR_SOME_NOT_MAPPED                                                     syscall.Errno = 1301\n\tERROR_NO_QUOTAS_FOR_ACCOUNT                                               syscall.Errno = 1302\n\tERROR_LOCAL_USER_SESSION_KEY                                              syscall.Errno = 1303\n\tERROR_NULL_LM_PASSWORD                                                    syscall.Errno = 1304\n\tERROR_UNKNOWN_REVISION                                                    syscall.Errno = 1305\n\tERROR_REVISION_MISMATCH                                                   syscall.Errno = 1306\n\tERROR_INVALID_OWNER                                                       syscall.Errno = 1307\n\tERROR_INVALID_PRIMARY_GROUP                                               syscall.Errno = 1308\n\tERROR_NO_IMPERSONATION_TOKEN                                              syscall.Errno = 1309\n\tERROR_CANT_DISABLE_MANDATORY                                              syscall.Errno = 1310\n\tERROR_NO_LOGON_SERVERS                                                    syscall.Errno = 1311\n\tERROR_NO_SUCH_LOGON_SESSION                                               syscall.Errno = 1312\n\tERROR_NO_SUCH_PRIVILEGE                                                   syscall.Errno = 1313\n\tERROR_PRIVILEGE_NOT_HELD                                                  syscall.Errno = 1314\n\tERROR_INVALID_ACCOUNT_NAME                                                syscall.Errno = 1315\n\tERROR_USER_EXISTS                                                         syscall.Errno = 1316\n\tERROR_NO_SUCH_USER                                                        syscall.Errno = 1317\n\tERROR_GROUP_EXISTS                                                        syscall.Errno = 1318\n\tERROR_NO_SUCH_GROUP                                                       syscall.Errno = 1319\n\tERROR_MEMBER_IN_GROUP                                                     syscall.Errno = 1320\n\tERROR_MEMBER_NOT_IN_GROUP                                                 syscall.Errno = 1321\n\tERROR_LAST_ADMIN                                                          syscall.Errno = 1322\n\tERROR_WRONG_PASSWORD                                                      syscall.Errno = 1323\n\tERROR_ILL_FORMED_PASSWORD                                                 syscall.Errno = 1324\n\tERROR_PASSWORD_RESTRICTION                                                syscall.Errno = 1325\n\tERROR_LOGON_FAILURE                                                       syscall.Errno = 1326\n\tERROR_ACCOUNT_RESTRICTION                                                 syscall.Errno = 1327\n\tERROR_INVALID_LOGON_HOURS                                                 syscall.Errno = 1328\n\tERROR_INVALID_WORKSTATION                                                 syscall.Errno = 1329\n\tERROR_PASSWORD_EXPIRED                                                    syscall.Errno = 1330\n\tERROR_ACCOUNT_DISABLED                                                    syscall.Errno = 1331\n\tERROR_NONE_MAPPED                                                         syscall.Errno = 1332\n\tERROR_TOO_MANY_LUIDS_REQUESTED                                            syscall.Errno = 1333\n\tERROR_LUIDS_EXHAUSTED                                                     syscall.Errno = 1334\n\tERROR_INVALID_SUB_AUTHORITY                                               syscall.Errno = 1335\n\tERROR_INVALID_ACL                                                         syscall.Errno = 1336\n\tERROR_INVALID_SID                                                         syscall.Errno = 1337\n\tERROR_INVALID_SECURITY_DESCR                                              syscall.Errno = 1338\n\tERROR_BAD_INHERITANCE_ACL                                                 syscall.Errno = 1340\n\tERROR_SERVER_DISABLED                                                     syscall.Errno = 1341\n\tERROR_SERVER_NOT_DISABLED                                                 syscall.Errno = 1342\n\tERROR_INVALID_ID_AUTHORITY                                                syscall.Errno = 1343\n\tERROR_ALLOTTED_SPACE_EXCEEDED                                             syscall.Errno = 1344\n\tERROR_INVALID_GROUP_ATTRIBUTES                                            syscall.Errno = 1345\n\tERROR_BAD_IMPERSONATION_LEVEL                                             syscall.Errno = 1346\n\tERROR_CANT_OPEN_ANONYMOUS                                                 syscall.Errno = 1347\n\tERROR_BAD_VALIDATION_CLASS                                                syscall.Errno = 1348\n\tERROR_BAD_TOKEN_TYPE                                                      syscall.Errno = 1349\n\tERROR_NO_SECURITY_ON_OBJECT                                               syscall.Errno = 1350\n\tERROR_CANT_ACCESS_DOMAIN_INFO                                             syscall.Errno = 1351\n\tERROR_INVALID_SERVER_STATE                                                syscall.Errno = 1352\n\tERROR_INVALID_DOMAIN_STATE                                                syscall.Errno = 1353\n\tERROR_INVALID_DOMAIN_ROLE                                                 syscall.Errno = 1354\n\tERROR_NO_SUCH_DOMAIN                                                      syscall.Errno = 1355\n\tERROR_DOMAIN_EXISTS                                                       syscall.Errno = 1356\n\tERROR_DOMAIN_LIMIT_EXCEEDED                                               syscall.Errno = 1357\n\tERROR_INTERNAL_DB_CORRUPTION                                              syscall.Errno = 1358\n\tERROR_INTERNAL_ERROR                                                      syscall.Errno = 1359\n\tERROR_GENERIC_NOT_MAPPED                                                  syscall.Errno = 1360\n\tERROR_BAD_DESCRIPTOR_FORMAT                                               syscall.Errno = 1361\n\tERROR_NOT_LOGON_PROCESS                                                   syscall.Errno = 1362\n\tERROR_LOGON_SESSION_EXISTS                                                syscall.Errno = 1363\n\tERROR_NO_SUCH_PACKAGE                                                     syscall.Errno = 1364\n\tERROR_BAD_LOGON_SESSION_STATE                                             syscall.Errno = 1365\n\tERROR_LOGON_SESSION_COLLISION                                             syscall.Errno = 1366\n\tERROR_INVALID_LOGON_TYPE                                                  syscall.Errno = 1367\n\tERROR_CANNOT_IMPERSONATE                                                  syscall.Errno = 1368\n\tERROR_RXACT_INVALID_STATE                                                 syscall.Errno = 1369\n\tERROR_RXACT_COMMIT_FAILURE                                                syscall.Errno = 1370\n\tERROR_SPECIAL_ACCOUNT                                                     syscall.Errno = 1371\n\tERROR_SPECIAL_GROUP                                                       syscall.Errno = 1372\n\tERROR_SPECIAL_USER                                                        syscall.Errno = 1373\n\tERROR_MEMBERS_PRIMARY_GROUP                                               syscall.Errno = 1374\n\tERROR_TOKEN_ALREADY_IN_USE                                                syscall.Errno = 1375\n\tERROR_NO_SUCH_ALIAS                                                       syscall.Errno = 1376\n\tERROR_MEMBER_NOT_IN_ALIAS                                                 syscall.Errno = 1377\n\tERROR_MEMBER_IN_ALIAS                                                     syscall.Errno = 1378\n\tERROR_ALIAS_EXISTS                                                        syscall.Errno = 1379\n\tERROR_LOGON_NOT_GRANTED                                                   syscall.Errno = 1380\n\tERROR_TOO_MANY_SECRETS                                                    syscall.Errno = 1381\n\tERROR_SECRET_TOO_LONG                                                     syscall.Errno = 1382\n\tERROR_INTERNAL_DB_ERROR                                                   syscall.Errno = 1383\n\tERROR_TOO_MANY_CONTEXT_IDS                                                syscall.Errno = 1384\n\tERROR_LOGON_TYPE_NOT_GRANTED                                              syscall.Errno = 1385\n\tERROR_NT_CROSS_ENCRYPTION_REQUIRED                                        syscall.Errno = 1386\n\tERROR_NO_SUCH_MEMBER                                                      syscall.Errno = 1387\n\tERROR_INVALID_MEMBER                                                      syscall.Errno = 1388\n\tERROR_TOO_MANY_SIDS                                                       syscall.Errno = 1389\n\tERROR_LM_CROSS_ENCRYPTION_REQUIRED                                        syscall.Errno = 1390\n\tERROR_NO_INHERITANCE                                                      syscall.Errno = 1391\n\tERROR_FILE_CORRUPT                                                        syscall.Errno = 1392\n\tERROR_DISK_CORRUPT                                                        syscall.Errno = 1393\n\tERROR_NO_USER_SESSION_KEY                                                 syscall.Errno = 1394\n\tERROR_LICENSE_QUOTA_EXCEEDED                                              syscall.Errno = 1395\n\tERROR_WRONG_TARGET_NAME                                                   syscall.Errno = 1396\n\tERROR_MUTUAL_AUTH_FAILED                                                  syscall.Errno = 1397\n\tERROR_TIME_SKEW                                                           syscall.Errno = 1398\n\tERROR_CURRENT_DOMAIN_NOT_ALLOWED                                          syscall.Errno = 1399\n\tERROR_INVALID_WINDOW_HANDLE                                               syscall.Errno = 1400\n\tERROR_INVALID_MENU_HANDLE                                                 syscall.Errno = 1401\n\tERROR_INVALID_CURSOR_HANDLE                                               syscall.Errno = 1402\n\tERROR_INVALID_ACCEL_HANDLE                                                syscall.Errno = 1403\n\tERROR_INVALID_HOOK_HANDLE                                                 syscall.Errno = 1404\n\tERROR_INVALID_DWP_HANDLE                                                  syscall.Errno = 1405\n\tERROR_TLW_WITH_WSCHILD                                                    syscall.Errno = 1406\n\tERROR_CANNOT_FIND_WND_CLASS                                               syscall.Errno = 1407\n\tERROR_WINDOW_OF_OTHER_THREAD                                              syscall.Errno = 1408\n\tERROR_HOTKEY_ALREADY_REGISTERED                                           syscall.Errno = 1409\n\tERROR_CLASS_ALREADY_EXISTS                                                syscall.Errno = 1410\n\tERROR_CLASS_DOES_NOT_EXIST                                                syscall.Errno = 1411\n\tERROR_CLASS_HAS_WINDOWS                                                   syscall.Errno = 1412\n\tERROR_INVALID_INDEX                                                       syscall.Errno = 1413\n\tERROR_INVALID_ICON_HANDLE                                                 syscall.Errno = 1414\n\tERROR_PRIVATE_DIALOG_INDEX                                                syscall.Errno = 1415\n\tERROR_LISTBOX_ID_NOT_FOUND                                                syscall.Errno = 1416\n\tERROR_NO_WILDCARD_CHARACTERS                                              syscall.Errno = 1417\n\tERROR_CLIPBOARD_NOT_OPEN                                                  syscall.Errno = 1418\n\tERROR_HOTKEY_NOT_REGISTERED                                               syscall.Errno = 1419\n\tERROR_WINDOW_NOT_DIALOG                                                   syscall.Errno = 1420\n\tERROR_CONTROL_ID_NOT_FOUND                                                syscall.Errno = 1421\n\tERROR_INVALID_COMBOBOX_MESSAGE                                            syscall.Errno = 1422\n\tERROR_WINDOW_NOT_COMBOBOX                                                 syscall.Errno = 1423\n\tERROR_INVALID_EDIT_HEIGHT                                                 syscall.Errno = 1424\n\tERROR_DC_NOT_FOUND                                                        syscall.Errno = 1425\n\tERROR_INVALID_HOOK_FILTER                                                 syscall.Errno = 1426\n\tERROR_INVALID_FILTER_PROC                                                 syscall.Errno = 1427\n\tERROR_HOOK_NEEDS_HMOD                                                     syscall.Errno = 1428\n\tERROR_GLOBAL_ONLY_HOOK                                                    syscall.Errno = 1429\n\tERROR_JOURNAL_HOOK_SET                                                    syscall.Errno = 1430\n\tERROR_HOOK_NOT_INSTALLED                                                  syscall.Errno = 1431\n\tERROR_INVALID_LB_MESSAGE                                                  syscall.Errno = 1432\n\tERROR_SETCOUNT_ON_BAD_LB                                                  syscall.Errno = 1433\n\tERROR_LB_WITHOUT_TABSTOPS                                                 syscall.Errno = 1434\n\tERROR_DESTROY_OBJECT_OF_OTHER_THREAD                                      syscall.Errno = 1435\n\tERROR_CHILD_WINDOW_MENU                                                   syscall.Errno = 1436\n\tERROR_NO_SYSTEM_MENU                                                      syscall.Errno = 1437\n\tERROR_INVALID_MSGBOX_STYLE                                                syscall.Errno = 1438\n\tERROR_INVALID_SPI_VALUE                                                   syscall.Errno = 1439\n\tERROR_SCREEN_ALREADY_LOCKED                                               syscall.Errno = 1440\n\tERROR_HWNDS_HAVE_DIFF_PARENT                                              syscall.Errno = 1441\n\tERROR_NOT_CHILD_WINDOW                                                    syscall.Errno = 1442\n\tERROR_INVALID_GW_COMMAND                                                  syscall.Errno = 1443\n\tERROR_INVALID_THREAD_ID                                                   syscall.Errno = 1444\n\tERROR_NON_MDICHILD_WINDOW                                                 syscall.Errno = 1445\n\tERROR_POPUP_ALREADY_ACTIVE                                                syscall.Errno = 1446\n\tERROR_NO_SCROLLBARS                                                       syscall.Errno = 1447\n\tERROR_INVALID_SCROLLBAR_RANGE                                             syscall.Errno = 1448\n\tERROR_INVALID_SHOWWIN_COMMAND                                             syscall.Errno = 1449\n\tERROR_NO_SYSTEM_RESOURCES                                                 syscall.Errno = 1450\n\tERROR_NONPAGED_SYSTEM_RESOURCES                                           syscall.Errno = 1451\n\tERROR_PAGED_SYSTEM_RESOURCES                                              syscall.Errno = 1452\n\tERROR_WORKING_SET_QUOTA                                                   syscall.Errno = 1453\n\tERROR_PAGEFILE_QUOTA                                                      syscall.Errno = 1454\n\tERROR_COMMITMENT_LIMIT                                                    syscall.Errno = 1455\n\tERROR_MENU_ITEM_NOT_FOUND                                                 syscall.Errno = 1456\n\tERROR_INVALID_KEYBOARD_HANDLE                                             syscall.Errno = 1457\n\tERROR_HOOK_TYPE_NOT_ALLOWED                                               syscall.Errno = 1458\n\tERROR_REQUIRES_INTERACTIVE_WINDOWSTATION                                  syscall.Errno = 1459\n\tERROR_TIMEOUT                                                             syscall.Errno = 1460\n\tERROR_INVALID_MONITOR_HANDLE                                              syscall.Errno = 1461\n\tERROR_INCORRECT_SIZE                                                      syscall.Errno = 1462\n\tERROR_SYMLINK_CLASS_DISABLED                                              syscall.Errno = 1463\n\tERROR_SYMLINK_NOT_SUPPORTED                                               syscall.Errno = 1464\n\tERROR_XML_PARSE_ERROR                                                     syscall.Errno = 1465\n\tERROR_XMLDSIG_ERROR                                                       syscall.Errno = 1466\n\tERROR_RESTART_APPLICATION                                                 syscall.Errno = 1467\n\tERROR_WRONG_COMPARTMENT                                                   syscall.Errno = 1468\n\tERROR_AUTHIP_FAILURE                                                      syscall.Errno = 1469\n\tERROR_NO_NVRAM_RESOURCES                                                  syscall.Errno = 1470\n\tERROR_NOT_GUI_PROCESS                                                     syscall.Errno = 1471\n\tERROR_EVENTLOG_FILE_CORRUPT                                               syscall.Errno = 1500\n\tERROR_EVENTLOG_CANT_START                                                 syscall.Errno = 1501\n\tERROR_LOG_FILE_FULL                                                       syscall.Errno = 1502\n\tERROR_EVENTLOG_FILE_CHANGED                                               syscall.Errno = 1503\n\tERROR_CONTAINER_ASSIGNED                                                  syscall.Errno = 1504\n\tERROR_JOB_NO_CONTAINER                                                    syscall.Errno = 1505\n\tERROR_INVALID_TASK_NAME                                                   syscall.Errno = 1550\n\tERROR_INVALID_TASK_INDEX                                                  syscall.Errno = 1551\n\tERROR_THREAD_ALREADY_IN_TASK                                              syscall.Errno = 1552\n\tERROR_INSTALL_SERVICE_FAILURE                                             syscall.Errno = 1601\n\tERROR_INSTALL_USEREXIT                                                    syscall.Errno = 1602\n\tERROR_INSTALL_FAILURE                                                     syscall.Errno = 1603\n\tERROR_INSTALL_SUSPEND                                                     syscall.Errno = 1604\n\tERROR_UNKNOWN_PRODUCT                                                     syscall.Errno = 1605\n\tERROR_UNKNOWN_FEATURE                                                     syscall.Errno = 1606\n\tERROR_UNKNOWN_COMPONENT                                                   syscall.Errno = 1607\n\tERROR_UNKNOWN_PROPERTY                                                    syscall.Errno = 1608\n\tERROR_INVALID_HANDLE_STATE                                                syscall.Errno = 1609\n\tERROR_BAD_CONFIGURATION                                                   syscall.Errno = 1610\n\tERROR_INDEX_ABSENT                                                        syscall.Errno = 1611\n\tERROR_INSTALL_SOURCE_ABSENT                                               syscall.Errno = 1612\n\tERROR_INSTALL_PACKAGE_VERSION                                             syscall.Errno = 1613\n\tERROR_PRODUCT_UNINSTALLED                                                 syscall.Errno = 1614\n\tERROR_BAD_QUERY_SYNTAX                                                    syscall.Errno = 1615\n\tERROR_INVALID_FIELD                                                       syscall.Errno = 1616\n\tERROR_DEVICE_REMOVED                                                      syscall.Errno = 1617\n\tERROR_INSTALL_ALREADY_RUNNING                                             syscall.Errno = 1618\n\tERROR_INSTALL_PACKAGE_OPEN_FAILED                                         syscall.Errno = 1619\n\tERROR_INSTALL_PACKAGE_INVALID                                             syscall.Errno = 1620\n\tERROR_INSTALL_UI_FAILURE                                                  syscall.Errno = 1621\n\tERROR_INSTALL_LOG_FAILURE                                                 syscall.Errno = 1622\n\tERROR_INSTALL_LANGUAGE_UNSUPPORTED                                        syscall.Errno = 1623\n\tERROR_INSTALL_TRANSFORM_FAILURE                                           syscall.Errno = 1624\n\tERROR_INSTALL_PACKAGE_REJECTED                                            syscall.Errno = 1625\n\tERROR_FUNCTION_NOT_CALLED                                                 syscall.Errno = 1626\n\tERROR_FUNCTION_FAILED                                                     syscall.Errno = 1627\n\tERROR_INVALID_TABLE                                                       syscall.Errno = 1628\n\tERROR_DATATYPE_MISMATCH                                                   syscall.Errno = 1629\n\tERROR_UNSUPPORTED_TYPE                                                    syscall.Errno = 1630\n\tERROR_CREATE_FAILED                                                       syscall.Errno = 1631\n\tERROR_INSTALL_TEMP_UNWRITABLE                                             syscall.Errno = 1632\n\tERROR_INSTALL_PLATFORM_UNSUPPORTED                                        syscall.Errno = 1633\n\tERROR_INSTALL_NOTUSED                                                     syscall.Errno = 1634\n\tERROR_PATCH_PACKAGE_OPEN_FAILED                                           syscall.Errno = 1635\n\tERROR_PATCH_PACKAGE_INVALID                                               syscall.Errno = 1636\n\tERROR_PATCH_PACKAGE_UNSUPPORTED                                           syscall.Errno = 1637\n\tERROR_PRODUCT_VERSION                                                     syscall.Errno = 1638\n\tERROR_INVALID_COMMAND_LINE                                                syscall.Errno = 1639\n\tERROR_INSTALL_REMOTE_DISALLOWED                                           syscall.Errno = 1640\n\tERROR_SUCCESS_REBOOT_INITIATED                                            syscall.Errno = 1641\n\tERROR_PATCH_TARGET_NOT_FOUND                                              syscall.Errno = 1642\n\tERROR_PATCH_PACKAGE_REJECTED                                              syscall.Errno = 1643\n\tERROR_INSTALL_TRANSFORM_REJECTED                                          syscall.Errno = 1644\n\tERROR_INSTALL_REMOTE_PROHIBITED                                           syscall.Errno = 1645\n\tERROR_PATCH_REMOVAL_UNSUPPORTED                                           syscall.Errno = 1646\n\tERROR_UNKNOWN_PATCH                                                       syscall.Errno = 1647\n\tERROR_PATCH_NO_SEQUENCE                                                   syscall.Errno = 1648\n\tERROR_PATCH_REMOVAL_DISALLOWED                                            syscall.Errno = 1649\n\tERROR_INVALID_PATCH_XML                                                   syscall.Errno = 1650\n\tERROR_PATCH_MANAGED_ADVERTISED_PRODUCT                                    syscall.Errno = 1651\n\tERROR_INSTALL_SERVICE_SAFEBOOT                                            syscall.Errno = 1652\n\tERROR_FAIL_FAST_EXCEPTION                                                 syscall.Errno = 1653\n\tERROR_INSTALL_REJECTED                                                    syscall.Errno = 1654\n\tERROR_DYNAMIC_CODE_BLOCKED                                                syscall.Errno = 1655\n\tERROR_NOT_SAME_OBJECT                                                     syscall.Errno = 1656\n\tERROR_STRICT_CFG_VIOLATION                                                syscall.Errno = 1657\n\tERROR_SET_CONTEXT_DENIED                                                  syscall.Errno = 1660\n\tERROR_CROSS_PARTITION_VIOLATION                                           syscall.Errno = 1661\n\tRPC_S_INVALID_STRING_BINDING                                              syscall.Errno = 1700\n\tRPC_S_WRONG_KIND_OF_BINDING                                               syscall.Errno = 1701\n\tRPC_S_INVALID_BINDING                                                     syscall.Errno = 1702\n\tRPC_S_PROTSEQ_NOT_SUPPORTED                                               syscall.Errno = 1703\n\tRPC_S_INVALID_RPC_PROTSEQ                                                 syscall.Errno = 1704\n\tRPC_S_INVALID_STRING_UUID                                                 syscall.Errno = 1705\n\tRPC_S_INVALID_ENDPOINT_FORMAT                                             syscall.Errno = 1706\n\tRPC_S_INVALID_NET_ADDR                                                    syscall.Errno = 1707\n\tRPC_S_NO_ENDPOINT_FOUND                                                   syscall.Errno = 1708\n\tRPC_S_INVALID_TIMEOUT                                                     syscall.Errno = 1709\n\tRPC_S_OBJECT_NOT_FOUND                                                    syscall.Errno = 1710\n\tRPC_S_ALREADY_REGISTERED                                                  syscall.Errno = 1711\n\tRPC_S_TYPE_ALREADY_REGISTERED                                             syscall.Errno = 1712\n\tRPC_S_ALREADY_LISTENING                                                   syscall.Errno = 1713\n\tRPC_S_NO_PROTSEQS_REGISTERED                                              syscall.Errno = 1714\n\tRPC_S_NOT_LISTENING                                                       syscall.Errno = 1715\n\tRPC_S_UNKNOWN_MGR_TYPE                                                    syscall.Errno = 1716\n\tRPC_S_UNKNOWN_IF                                                          syscall.Errno = 1717\n\tRPC_S_NO_BINDINGS                                                         syscall.Errno = 1718\n\tRPC_S_NO_PROTSEQS                                                         syscall.Errno = 1719\n\tRPC_S_CANT_CREATE_ENDPOINT                                                syscall.Errno = 1720\n\tRPC_S_OUT_OF_RESOURCES                                                    syscall.Errno = 1721\n\tRPC_S_SERVER_UNAVAILABLE                                                  syscall.Errno = 1722\n\tRPC_S_SERVER_TOO_BUSY                                                     syscall.Errno = 1723\n\tRPC_S_INVALID_NETWORK_OPTIONS                                             syscall.Errno = 1724\n\tRPC_S_NO_CALL_ACTIVE                                                      syscall.Errno = 1725\n\tRPC_S_CALL_FAILED                                                         syscall.Errno = 1726\n\tRPC_S_CALL_FAILED_DNE                                                     syscall.Errno = 1727\n\tRPC_S_PROTOCOL_ERROR                                                      syscall.Errno = 1728\n\tRPC_S_PROXY_ACCESS_DENIED                                                 syscall.Errno = 1729\n\tRPC_S_UNSUPPORTED_TRANS_SYN                                               syscall.Errno = 1730\n\tRPC_S_UNSUPPORTED_TYPE                                                    syscall.Errno = 1732\n\tRPC_S_INVALID_TAG                                                         syscall.Errno = 1733\n\tRPC_S_INVALID_BOUND                                                       syscall.Errno = 1734\n\tRPC_S_NO_ENTRY_NAME                                                       syscall.Errno = 1735\n\tRPC_S_INVALID_NAME_SYNTAX                                                 syscall.Errno = 1736\n\tRPC_S_UNSUPPORTED_NAME_SYNTAX                                             syscall.Errno = 1737\n\tRPC_S_UUID_NO_ADDRESS                                                     syscall.Errno = 1739\n\tRPC_S_DUPLICATE_ENDPOINT                                                  syscall.Errno = 1740\n\tRPC_S_UNKNOWN_AUTHN_TYPE                                                  syscall.Errno = 1741\n\tRPC_S_MAX_CALLS_TOO_SMALL                                                 syscall.Errno = 1742\n\tRPC_S_STRING_TOO_LONG                                                     syscall.Errno = 1743\n\tRPC_S_PROTSEQ_NOT_FOUND                                                   syscall.Errno = 1744\n\tRPC_S_PROCNUM_OUT_OF_RANGE                                                syscall.Errno = 1745\n\tRPC_S_BINDING_HAS_NO_AUTH                                                 syscall.Errno = 1746\n\tRPC_S_UNKNOWN_AUTHN_SERVICE                                               syscall.Errno = 1747\n\tRPC_S_UNKNOWN_AUTHN_LEVEL                                                 syscall.Errno = 1748\n\tRPC_S_INVALID_AUTH_IDENTITY                                               syscall.Errno = 1749\n\tRPC_S_UNKNOWN_AUTHZ_SERVICE                                               syscall.Errno = 1750\n\tEPT_S_INVALID_ENTRY                                                       syscall.Errno = 1751\n\tEPT_S_CANT_PERFORM_OP                                                     syscall.Errno = 1752\n\tEPT_S_NOT_REGISTERED                                                      syscall.Errno = 1753\n\tRPC_S_NOTHING_TO_EXPORT                                                   syscall.Errno = 1754\n\tRPC_S_INCOMPLETE_NAME                                                     syscall.Errno = 1755\n\tRPC_S_INVALID_VERS_OPTION                                                 syscall.Errno = 1756\n\tRPC_S_NO_MORE_MEMBERS                                                     syscall.Errno = 1757\n\tRPC_S_NOT_ALL_OBJS_UNEXPORTED                                             syscall.Errno = 1758\n\tRPC_S_INTERFACE_NOT_FOUND                                                 syscall.Errno = 1759\n\tRPC_S_ENTRY_ALREADY_EXISTS                                                syscall.Errno = 1760\n\tRPC_S_ENTRY_NOT_FOUND                                                     syscall.Errno = 1761\n\tRPC_S_NAME_SERVICE_UNAVAILABLE                                            syscall.Errno = 1762\n\tRPC_S_INVALID_NAF_ID                                                      syscall.Errno = 1763\n\tRPC_S_CANNOT_SUPPORT                                                      syscall.Errno = 1764\n\tRPC_S_NO_CONTEXT_AVAILABLE                                                syscall.Errno = 1765\n\tRPC_S_INTERNAL_ERROR                                                      syscall.Errno = 1766\n\tRPC_S_ZERO_DIVIDE                                                         syscall.Errno = 1767\n\tRPC_S_ADDRESS_ERROR                                                       syscall.Errno = 1768\n\tRPC_S_FP_DIV_ZERO                                                         syscall.Errno = 1769\n\tRPC_S_FP_UNDERFLOW                                                        syscall.Errno = 1770\n\tRPC_S_FP_OVERFLOW                                                         syscall.Errno = 1771\n\tRPC_X_NO_MORE_ENTRIES                                                     syscall.Errno = 1772\n\tRPC_X_SS_CHAR_TRANS_OPEN_FAIL                                             syscall.Errno = 1773\n\tRPC_X_SS_CHAR_TRANS_SHORT_FILE                                            syscall.Errno = 1774\n\tRPC_X_SS_IN_NULL_CONTEXT                                                  syscall.Errno = 1775\n\tRPC_X_SS_CONTEXT_DAMAGED                                                  syscall.Errno = 1777\n\tRPC_X_SS_HANDLES_MISMATCH                                                 syscall.Errno = 1778\n\tRPC_X_SS_CANNOT_GET_CALL_HANDLE                                           syscall.Errno = 1779\n\tRPC_X_NULL_REF_POINTER                                                    syscall.Errno = 1780\n\tRPC_X_ENUM_VALUE_OUT_OF_RANGE                                             syscall.Errno = 1781\n\tRPC_X_BYTE_COUNT_TOO_SMALL                                                syscall.Errno = 1782\n\tRPC_X_BAD_STUB_DATA                                                       syscall.Errno = 1783\n\tERROR_INVALID_USER_BUFFER                                                 syscall.Errno = 1784\n\tERROR_UNRECOGNIZED_MEDIA                                                  syscall.Errno = 1785\n\tERROR_NO_TRUST_LSA_SECRET                                                 syscall.Errno = 1786\n\tERROR_NO_TRUST_SAM_ACCOUNT                                                syscall.Errno = 1787\n\tERROR_TRUSTED_DOMAIN_FAILURE                                              syscall.Errno = 1788\n\tERROR_TRUSTED_RELATIONSHIP_FAILURE                                        syscall.Errno = 1789\n\tERROR_TRUST_FAILURE                                                       syscall.Errno = 1790\n\tRPC_S_CALL_IN_PROGRESS                                                    syscall.Errno = 1791\n\tERROR_NETLOGON_NOT_STARTED                                                syscall.Errno = 1792\n\tERROR_ACCOUNT_EXPIRED                                                     syscall.Errno = 1793\n\tERROR_REDIRECTOR_HAS_OPEN_HANDLES                                         syscall.Errno = 1794\n\tERROR_PRINTER_DRIVER_ALREADY_INSTALLED                                    syscall.Errno = 1795\n\tERROR_UNKNOWN_PORT                                                        syscall.Errno = 1796\n\tERROR_UNKNOWN_PRINTER_DRIVER                                              syscall.Errno = 1797\n\tERROR_UNKNOWN_PRINTPROCESSOR                                              syscall.Errno = 1798\n\tERROR_INVALID_SEPARATOR_FILE                                              syscall.Errno = 1799\n\tERROR_INVALID_PRIORITY                                                    syscall.Errno = 1800\n\tERROR_INVALID_PRINTER_NAME                                                syscall.Errno = 1801\n\tERROR_PRINTER_ALREADY_EXISTS                                              syscall.Errno = 1802\n\tERROR_INVALID_PRINTER_COMMAND                                             syscall.Errno = 1803\n\tERROR_INVALID_DATATYPE                                                    syscall.Errno = 1804\n\tERROR_INVALID_ENVIRONMENT                                                 syscall.Errno = 1805\n\tRPC_S_NO_MORE_BINDINGS                                                    syscall.Errno = 1806\n\tERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT                                   syscall.Errno = 1807\n\tERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT                                   syscall.Errno = 1808\n\tERROR_NOLOGON_SERVER_TRUST_ACCOUNT                                        syscall.Errno = 1809\n\tERROR_DOMAIN_TRUST_INCONSISTENT                                           syscall.Errno = 1810\n\tERROR_SERVER_HAS_OPEN_HANDLES                                             syscall.Errno = 1811\n\tERROR_RESOURCE_DATA_NOT_FOUND                                             syscall.Errno = 1812\n\tERROR_RESOURCE_TYPE_NOT_FOUND                                             syscall.Errno = 1813\n\tERROR_RESOURCE_NAME_NOT_FOUND                                             syscall.Errno = 1814\n\tERROR_RESOURCE_LANG_NOT_FOUND                                             syscall.Errno = 1815\n\tERROR_NOT_ENOUGH_QUOTA                                                    syscall.Errno = 1816\n\tRPC_S_NO_INTERFACES                                                       syscall.Errno = 1817\n\tRPC_S_CALL_CANCELLED                                                      syscall.Errno = 1818\n\tRPC_S_BINDING_INCOMPLETE                                                  syscall.Errno = 1819\n\tRPC_S_COMM_FAILURE                                                        syscall.Errno = 1820\n\tRPC_S_UNSUPPORTED_AUTHN_LEVEL                                             syscall.Errno = 1821\n\tRPC_S_NO_PRINC_NAME                                                       syscall.Errno = 1822\n\tRPC_S_NOT_RPC_ERROR                                                       syscall.Errno = 1823\n\tRPC_S_UUID_LOCAL_ONLY                                                     syscall.Errno = 1824\n\tRPC_S_SEC_PKG_ERROR                                                       syscall.Errno = 1825\n\tRPC_S_NOT_CANCELLED                                                       syscall.Errno = 1826\n\tRPC_X_INVALID_ES_ACTION                                                   syscall.Errno = 1827\n\tRPC_X_WRONG_ES_VERSION                                                    syscall.Errno = 1828\n\tRPC_X_WRONG_STUB_VERSION                                                  syscall.Errno = 1829\n\tRPC_X_INVALID_PIPE_OBJECT                                                 syscall.Errno = 1830\n\tRPC_X_WRONG_PIPE_ORDER                                                    syscall.Errno = 1831\n\tRPC_X_WRONG_PIPE_VERSION                                                  syscall.Errno = 1832\n\tRPC_S_COOKIE_AUTH_FAILED                                                  syscall.Errno = 1833\n\tRPC_S_DO_NOT_DISTURB                                                      syscall.Errno = 1834\n\tRPC_S_SYSTEM_HANDLE_COUNT_EXCEEDED                                        syscall.Errno = 1835\n\tRPC_S_SYSTEM_HANDLE_TYPE_MISMATCH                                         syscall.Errno = 1836\n\tRPC_S_GROUP_MEMBER_NOT_FOUND                                              syscall.Errno = 1898\n\tEPT_S_CANT_CREATE                                                         syscall.Errno = 1899\n\tRPC_S_INVALID_OBJECT                                                      syscall.Errno = 1900\n\tERROR_INVALID_TIME                                                        syscall.Errno = 1901\n\tERROR_INVALID_FORM_NAME                                                   syscall.Errno = 1902\n\tERROR_INVALID_FORM_SIZE                                                   syscall.Errno = 1903\n\tERROR_ALREADY_WAITING                                                     syscall.Errno = 1904\n\tERROR_PRINTER_DELETED                                                     syscall.Errno = 1905\n\tERROR_INVALID_PRINTER_STATE                                               syscall.Errno = 1906\n\tERROR_PASSWORD_MUST_CHANGE                                                syscall.Errno = 1907\n\tERROR_DOMAIN_CONTROLLER_NOT_FOUND                                         syscall.Errno = 1908\n\tERROR_ACCOUNT_LOCKED_OUT                                                  syscall.Errno = 1909\n\tOR_INVALID_OXID                                                           syscall.Errno = 1910\n\tOR_INVALID_OID                                                            syscall.Errno = 1911\n\tOR_INVALID_SET                                                            syscall.Errno = 1912\n\tRPC_S_SEND_INCOMPLETE                                                     syscall.Errno = 1913\n\tRPC_S_INVALID_ASYNC_HANDLE                                                syscall.Errno = 1914\n\tRPC_S_INVALID_ASYNC_CALL                                                  syscall.Errno = 1915\n\tRPC_X_PIPE_CLOSED                                                         syscall.Errno = 1916\n\tRPC_X_PIPE_DISCIPLINE_ERROR                                               syscall.Errno = 1917\n\tRPC_X_PIPE_EMPTY                                                          syscall.Errno = 1918\n\tERROR_NO_SITENAME                                                         syscall.Errno = 1919\n\tERROR_CANT_ACCESS_FILE                                                    syscall.Errno = 1920\n\tERROR_CANT_RESOLVE_FILENAME                                               syscall.Errno = 1921\n\tRPC_S_ENTRY_TYPE_MISMATCH                                                 syscall.Errno = 1922\n\tRPC_S_NOT_ALL_OBJS_EXPORTED                                               syscall.Errno = 1923\n\tRPC_S_INTERFACE_NOT_EXPORTED                                              syscall.Errno = 1924\n\tRPC_S_PROFILE_NOT_ADDED                                                   syscall.Errno = 1925\n\tRPC_S_PRF_ELT_NOT_ADDED                                                   syscall.Errno = 1926\n\tRPC_S_PRF_ELT_NOT_REMOVED                                                 syscall.Errno = 1927\n\tRPC_S_GRP_ELT_NOT_ADDED                                                   syscall.Errno = 1928\n\tRPC_S_GRP_ELT_NOT_REMOVED                                                 syscall.Errno = 1929\n\tERROR_KM_DRIVER_BLOCKED                                                   syscall.Errno = 1930\n\tERROR_CONTEXT_EXPIRED                                                     syscall.Errno = 1931\n\tERROR_PER_USER_TRUST_QUOTA_EXCEEDED                                       syscall.Errno = 1932\n\tERROR_ALL_USER_TRUST_QUOTA_EXCEEDED                                       syscall.Errno = 1933\n\tERROR_USER_DELETE_TRUST_QUOTA_EXCEEDED                                    syscall.Errno = 1934\n\tERROR_AUTHENTICATION_FIREWALL_FAILED                                      syscall.Errno = 1935\n\tERROR_REMOTE_PRINT_CONNECTIONS_BLOCKED                                    syscall.Errno = 1936\n\tERROR_NTLM_BLOCKED                                                        syscall.Errno = 1937\n\tERROR_PASSWORD_CHANGE_REQUIRED                                            syscall.Errno = 1938\n\tERROR_LOST_MODE_LOGON_RESTRICTION                                         syscall.Errno = 1939\n\tERROR_INVALID_PIXEL_FORMAT                                                syscall.Errno = 2000\n\tERROR_BAD_DRIVER                                                          syscall.Errno = 2001\n\tERROR_INVALID_WINDOW_STYLE                                                syscall.Errno = 2002\n\tERROR_METAFILE_NOT_SUPPORTED                                              syscall.Errno = 2003\n\tERROR_TRANSFORM_NOT_SUPPORTED                                             syscall.Errno = 2004\n\tERROR_CLIPPING_NOT_SUPPORTED                                              syscall.Errno = 2005\n\tERROR_INVALID_CMM                                                         syscall.Errno = 2010\n\tERROR_INVALID_PROFILE                                                     syscall.Errno = 2011\n\tERROR_TAG_NOT_FOUND                                                       syscall.Errno = 2012\n\tERROR_TAG_NOT_PRESENT                                                     syscall.Errno = 2013\n\tERROR_DUPLICATE_TAG                                                       syscall.Errno = 2014\n\tERROR_PROFILE_NOT_ASSOCIATED_WITH_DEVICE                                  syscall.Errno = 2015\n\tERROR_PROFILE_NOT_FOUND                                                   syscall.Errno = 2016\n\tERROR_INVALID_COLORSPACE                                                  syscall.Errno = 2017\n\tERROR_ICM_NOT_ENABLED                                                     syscall.Errno = 2018\n\tERROR_DELETING_ICM_XFORM                                                  syscall.Errno = 2019\n\tERROR_INVALID_TRANSFORM                                                   syscall.Errno = 2020\n\tERROR_COLORSPACE_MISMATCH                                                 syscall.Errno = 2021\n\tERROR_INVALID_COLORINDEX                                                  syscall.Errno = 2022\n\tERROR_PROFILE_DOES_NOT_MATCH_DEVICE                                       syscall.Errno = 2023\n\tERROR_CONNECTED_OTHER_PASSWORD                                            syscall.Errno = 2108\n\tERROR_CONNECTED_OTHER_PASSWORD_DEFAULT                                    syscall.Errno = 2109\n\tERROR_BAD_USERNAME                                                        syscall.Errno = 2202\n\tERROR_NOT_CONNECTED                                                       syscall.Errno = 2250\n\tERROR_OPEN_FILES                                                          syscall.Errno = 2401\n\tERROR_ACTIVE_CONNECTIONS                                                  syscall.Errno = 2402\n\tERROR_DEVICE_IN_USE                                                       syscall.Errno = 2404\n\tERROR_UNKNOWN_PRINT_MONITOR                                               syscall.Errno = 3000\n\tERROR_PRINTER_DRIVER_IN_USE                                               syscall.Errno = 3001\n\tERROR_SPOOL_FILE_NOT_FOUND                                                syscall.Errno = 3002\n\tERROR_SPL_NO_STARTDOC                                                     syscall.Errno = 3003\n\tERROR_SPL_NO_ADDJOB                                                       syscall.Errno = 3004\n\tERROR_PRINT_PROCESSOR_ALREADY_INSTALLED                                   syscall.Errno = 3005\n\tERROR_PRINT_MONITOR_ALREADY_INSTALLED                                     syscall.Errno = 3006\n\tERROR_INVALID_PRINT_MONITOR                                               syscall.Errno = 3007\n\tERROR_PRINT_MONITOR_IN_USE                                                syscall.Errno = 3008\n\tERROR_PRINTER_HAS_JOBS_QUEUED                                             syscall.Errno = 3009\n\tERROR_SUCCESS_REBOOT_REQUIRED                                             syscall.Errno = 3010\n\tERROR_SUCCESS_RESTART_REQUIRED                                            syscall.Errno = 3011\n\tERROR_PRINTER_NOT_FOUND                                                   syscall.Errno = 3012\n\tERROR_PRINTER_DRIVER_WARNED                                               syscall.Errno = 3013\n\tERROR_PRINTER_DRIVER_BLOCKED                                              syscall.Errno = 3014\n\tERROR_PRINTER_DRIVER_PACKAGE_IN_USE                                       syscall.Errno = 3015\n\tERROR_CORE_DRIVER_PACKAGE_NOT_FOUND                                       syscall.Errno = 3016\n\tERROR_FAIL_REBOOT_REQUIRED                                                syscall.Errno = 3017\n\tERROR_FAIL_REBOOT_INITIATED                                               syscall.Errno = 3018\n\tERROR_PRINTER_DRIVER_DOWNLOAD_NEEDED                                      syscall.Errno = 3019\n\tERROR_PRINT_JOB_RESTART_REQUIRED                                          syscall.Errno = 3020\n\tERROR_INVALID_PRINTER_DRIVER_MANIFEST                                     syscall.Errno = 3021\n\tERROR_PRINTER_NOT_SHAREABLE                                               syscall.Errno = 3022\n\tERROR_REQUEST_PAUSED                                                      syscall.Errno = 3050\n\tERROR_APPEXEC_CONDITION_NOT_SATISFIED                                     syscall.Errno = 3060\n\tERROR_APPEXEC_HANDLE_INVALIDATED                                          syscall.Errno = 3061\n\tERROR_APPEXEC_INVALID_HOST_GENERATION                                     syscall.Errno = 3062\n\tERROR_APPEXEC_UNEXPECTED_PROCESS_REGISTRATION                             syscall.Errno = 3063\n\tERROR_APPEXEC_INVALID_HOST_STATE                                          syscall.Errno = 3064\n\tERROR_APPEXEC_NO_DONOR                                                    syscall.Errno = 3065\n\tERROR_APPEXEC_HOST_ID_MISMATCH                                            syscall.Errno = 3066\n\tERROR_APPEXEC_UNKNOWN_USER                                                syscall.Errno = 3067\n\tERROR_IO_REISSUE_AS_CACHED                                                syscall.Errno = 3950\n\tERROR_WINS_INTERNAL                                                       syscall.Errno = 4000\n\tERROR_CAN_NOT_DEL_LOCAL_WINS                                              syscall.Errno = 4001\n\tERROR_STATIC_INIT                                                         syscall.Errno = 4002\n\tERROR_INC_BACKUP                                                          syscall.Errno = 4003\n\tERROR_FULL_BACKUP                                                         syscall.Errno = 4004\n\tERROR_REC_NON_EXISTENT                                                    syscall.Errno = 4005\n\tERROR_RPL_NOT_ALLOWED                                                     syscall.Errno = 4006\n\tPEERDIST_ERROR_CONTENTINFO_VERSION_UNSUPPORTED                            syscall.Errno = 4050\n\tPEERDIST_ERROR_CANNOT_PARSE_CONTENTINFO                                   syscall.Errno = 4051\n\tPEERDIST_ERROR_MISSING_DATA                                               syscall.Errno = 4052\n\tPEERDIST_ERROR_NO_MORE                                                    syscall.Errno = 4053\n\tPEERDIST_ERROR_NOT_INITIALIZED                                            syscall.Errno = 4054\n\tPEERDIST_ERROR_ALREADY_INITIALIZED                                        syscall.Errno = 4055\n\tPEERDIST_ERROR_SHUTDOWN_IN_PROGRESS                                       syscall.Errno = 4056\n\tPEERDIST_ERROR_INVALIDATED                                                syscall.Errno = 4057\n\tPEERDIST_ERROR_ALREADY_EXISTS                                             syscall.Errno = 4058\n\tPEERDIST_ERROR_OPERATION_NOTFOUND                                         syscall.Errno = 4059\n\tPEERDIST_ERROR_ALREADY_COMPLETED                                          syscall.Errno = 4060\n\tPEERDIST_ERROR_OUT_OF_BOUNDS                                              syscall.Errno = 4061\n\tPEERDIST_ERROR_VERSION_UNSUPPORTED                                        syscall.Errno = 4062\n\tPEERDIST_ERROR_INVALID_CONFIGURATION                                      syscall.Errno = 4063\n\tPEERDIST_ERROR_NOT_LICENSED                                               syscall.Errno = 4064\n\tPEERDIST_ERROR_SERVICE_UNAVAILABLE                                        syscall.Errno = 4065\n\tPEERDIST_ERROR_TRUST_FAILURE                                              syscall.Errno = 4066\n\tERROR_DHCP_ADDRESS_CONFLICT                                               syscall.Errno = 4100\n\tERROR_WMI_GUID_NOT_FOUND                                                  syscall.Errno = 4200\n\tERROR_WMI_INSTANCE_NOT_FOUND                                              syscall.Errno = 4201\n\tERROR_WMI_ITEMID_NOT_FOUND                                                syscall.Errno = 4202\n\tERROR_WMI_TRY_AGAIN                                                       syscall.Errno = 4203\n\tERROR_WMI_DP_NOT_FOUND                                                    syscall.Errno = 4204\n\tERROR_WMI_UNRESOLVED_INSTANCE_REF                                         syscall.Errno = 4205\n\tERROR_WMI_ALREADY_ENABLED                                                 syscall.Errno = 4206\n\tERROR_WMI_GUID_DISCONNECTED                                               syscall.Errno = 4207\n\tERROR_WMI_SERVER_UNAVAILABLE                                              syscall.Errno = 4208\n\tERROR_WMI_DP_FAILED                                                       syscall.Errno = 4209\n\tERROR_WMI_INVALID_MOF                                                     syscall.Errno = 4210\n\tERROR_WMI_INVALID_REGINFO                                                 syscall.Errno = 4211\n\tERROR_WMI_ALREADY_DISABLED                                                syscall.Errno = 4212\n\tERROR_WMI_READ_ONLY                                                       syscall.Errno = 4213\n\tERROR_WMI_SET_FAILURE                                                     syscall.Errno = 4214\n\tERROR_NOT_APPCONTAINER                                                    syscall.Errno = 4250\n\tERROR_APPCONTAINER_REQUIRED                                               syscall.Errno = 4251\n\tERROR_NOT_SUPPORTED_IN_APPCONTAINER                                       syscall.Errno = 4252\n\tERROR_INVALID_PACKAGE_SID_LENGTH                                          syscall.Errno = 4253\n\tERROR_INVALID_MEDIA                                                       syscall.Errno = 4300\n\tERROR_INVALID_LIBRARY                                                     syscall.Errno = 4301\n\tERROR_INVALID_MEDIA_POOL                                                  syscall.Errno = 4302\n\tERROR_DRIVE_MEDIA_MISMATCH                                                syscall.Errno = 4303\n\tERROR_MEDIA_OFFLINE                                                       syscall.Errno = 4304\n\tERROR_LIBRARY_OFFLINE                                                     syscall.Errno = 4305\n\tERROR_EMPTY                                                               syscall.Errno = 4306\n\tERROR_NOT_EMPTY                                                           syscall.Errno = 4307\n\tERROR_MEDIA_UNAVAILABLE                                                   syscall.Errno = 4308\n\tERROR_RESOURCE_DISABLED                                                   syscall.Errno = 4309\n\tERROR_INVALID_CLEANER                                                     syscall.Errno = 4310\n\tERROR_UNABLE_TO_CLEAN                                                     syscall.Errno = 4311\n\tERROR_OBJECT_NOT_FOUND                                                    syscall.Errno = 4312\n\tERROR_DATABASE_FAILURE                                                    syscall.Errno = 4313\n\tERROR_DATABASE_FULL                                                       syscall.Errno = 4314\n\tERROR_MEDIA_INCOMPATIBLE                                                  syscall.Errno = 4315\n\tERROR_RESOURCE_NOT_PRESENT                                                syscall.Errno = 4316\n\tERROR_INVALID_OPERATION                                                   syscall.Errno = 4317\n\tERROR_MEDIA_NOT_AVAILABLE                                                 syscall.Errno = 4318\n\tERROR_DEVICE_NOT_AVAILABLE                                                syscall.Errno = 4319\n\tERROR_REQUEST_REFUSED                                                     syscall.Errno = 4320\n\tERROR_INVALID_DRIVE_OBJECT                                                syscall.Errno = 4321\n\tERROR_LIBRARY_FULL                                                        syscall.Errno = 4322\n\tERROR_MEDIUM_NOT_ACCESSIBLE                                               syscall.Errno = 4323\n\tERROR_UNABLE_TO_LOAD_MEDIUM                                               syscall.Errno = 4324\n\tERROR_UNABLE_TO_INVENTORY_DRIVE                                           syscall.Errno = 4325\n\tERROR_UNABLE_TO_INVENTORY_SLOT                                            syscall.Errno = 4326\n\tERROR_UNABLE_TO_INVENTORY_TRANSPORT                                       syscall.Errno = 4327\n\tERROR_TRANSPORT_FULL                                                      syscall.Errno = 4328\n\tERROR_CONTROLLING_IEPORT                                                  syscall.Errno = 4329\n\tERROR_UNABLE_TO_EJECT_MOUNTED_MEDIA                                       syscall.Errno = 4330\n\tERROR_CLEANER_SLOT_SET                                                    syscall.Errno = 4331\n\tERROR_CLEANER_SLOT_NOT_SET                                                syscall.Errno = 4332\n\tERROR_CLEANER_CARTRIDGE_SPENT                                             syscall.Errno = 4333\n\tERROR_UNEXPECTED_OMID                                                     syscall.Errno = 4334\n\tERROR_CANT_DELETE_LAST_ITEM                                               syscall.Errno = 4335\n\tERROR_MESSAGE_EXCEEDS_MAX_SIZE                                            syscall.Errno = 4336\n\tERROR_VOLUME_CONTAINS_SYS_FILES                                           syscall.Errno = 4337\n\tERROR_INDIGENOUS_TYPE                                                     syscall.Errno = 4338\n\tERROR_NO_SUPPORTING_DRIVES                                                syscall.Errno = 4339\n\tERROR_CLEANER_CARTRIDGE_INSTALLED                                         syscall.Errno = 4340\n\tERROR_IEPORT_FULL                                                         syscall.Errno = 4341\n\tERROR_FILE_OFFLINE                                                        syscall.Errno = 4350\n\tERROR_REMOTE_STORAGE_NOT_ACTIVE                                           syscall.Errno = 4351\n\tERROR_REMOTE_STORAGE_MEDIA_ERROR                                          syscall.Errno = 4352\n\tERROR_NOT_A_REPARSE_POINT                                                 syscall.Errno = 4390\n\tERROR_REPARSE_ATTRIBUTE_CONFLICT                                          syscall.Errno = 4391\n\tERROR_INVALID_REPARSE_DATA                                                syscall.Errno = 4392\n\tERROR_REPARSE_TAG_INVALID                                                 syscall.Errno = 4393\n\tERROR_REPARSE_TAG_MISMATCH                                                syscall.Errno = 4394\n\tERROR_REPARSE_POINT_ENCOUNTERED                                           syscall.Errno = 4395\n\tERROR_APP_DATA_NOT_FOUND                                                  syscall.Errno = 4400\n\tERROR_APP_DATA_EXPIRED                                                    syscall.Errno = 4401\n\tERROR_APP_DATA_CORRUPT                                                    syscall.Errno = 4402\n\tERROR_APP_DATA_LIMIT_EXCEEDED                                             syscall.Errno = 4403\n\tERROR_APP_DATA_REBOOT_REQUIRED                                            syscall.Errno = 4404\n\tERROR_SECUREBOOT_ROLLBACK_DETECTED                                        syscall.Errno = 4420\n\tERROR_SECUREBOOT_POLICY_VIOLATION                                         syscall.Errno = 4421\n\tERROR_SECUREBOOT_INVALID_POLICY                                           syscall.Errno = 4422\n\tERROR_SECUREBOOT_POLICY_PUBLISHER_NOT_FOUND                               syscall.Errno = 4423\n\tERROR_SECUREBOOT_POLICY_NOT_SIGNED                                        syscall.Errno = 4424\n\tERROR_SECUREBOOT_NOT_ENABLED                                              syscall.Errno = 4425\n\tERROR_SECUREBOOT_FILE_REPLACED                                            syscall.Errno = 4426\n\tERROR_SECUREBOOT_POLICY_NOT_AUTHORIZED                                    syscall.Errno = 4427\n\tERROR_SECUREBOOT_POLICY_UNKNOWN                                           syscall.Errno = 4428\n\tERROR_SECUREBOOT_POLICY_MISSING_ANTIROLLBACKVERSION                       syscall.Errno = 4429\n\tERROR_SECUREBOOT_PLATFORM_ID_MISMATCH                                     syscall.Errno = 4430\n\tERROR_SECUREBOOT_POLICY_ROLLBACK_DETECTED                                 syscall.Errno = 4431\n\tERROR_SECUREBOOT_POLICY_UPGRADE_MISMATCH                                  syscall.Errno = 4432\n\tERROR_SECUREBOOT_REQUIRED_POLICY_FILE_MISSING                             syscall.Errno = 4433\n\tERROR_SECUREBOOT_NOT_BASE_POLICY                                          syscall.Errno = 4434\n\tERROR_SECUREBOOT_NOT_SUPPLEMENTAL_POLICY                                  syscall.Errno = 4435\n\tERROR_OFFLOAD_READ_FLT_NOT_SUPPORTED                                      syscall.Errno = 4440\n\tERROR_OFFLOAD_WRITE_FLT_NOT_SUPPORTED                                     syscall.Errno = 4441\n\tERROR_OFFLOAD_READ_FILE_NOT_SUPPORTED                                     syscall.Errno = 4442\n\tERROR_OFFLOAD_WRITE_FILE_NOT_SUPPORTED                                    syscall.Errno = 4443\n\tERROR_ALREADY_HAS_STREAM_ID                                               syscall.Errno = 4444\n\tERROR_SMR_GARBAGE_COLLECTION_REQUIRED                                     syscall.Errno = 4445\n\tERROR_WOF_WIM_HEADER_CORRUPT                                              syscall.Errno = 4446\n\tERROR_WOF_WIM_RESOURCE_TABLE_CORRUPT                                      syscall.Errno = 4447\n\tERROR_WOF_FILE_RESOURCE_TABLE_CORRUPT                                     syscall.Errno = 4448\n\tERROR_VOLUME_NOT_SIS_ENABLED                                              syscall.Errno = 4500\n\tERROR_SYSTEM_INTEGRITY_ROLLBACK_DETECTED                                  syscall.Errno = 4550\n\tERROR_SYSTEM_INTEGRITY_POLICY_VIOLATION                                   syscall.Errno = 4551\n\tERROR_SYSTEM_INTEGRITY_INVALID_POLICY                                     syscall.Errno = 4552\n\tERROR_SYSTEM_INTEGRITY_POLICY_NOT_SIGNED                                  syscall.Errno = 4553\n\tERROR_SYSTEM_INTEGRITY_TOO_MANY_POLICIES                                  syscall.Errno = 4554\n\tERROR_SYSTEM_INTEGRITY_SUPPLEMENTAL_POLICY_NOT_AUTHORIZED                 syscall.Errno = 4555\n\tERROR_VSM_NOT_INITIALIZED                                                 syscall.Errno = 4560\n\tERROR_VSM_DMA_PROTECTION_NOT_IN_USE                                       syscall.Errno = 4561\n\tERROR_PLATFORM_MANIFEST_NOT_AUTHORIZED                                    syscall.Errno = 4570\n\tERROR_PLATFORM_MANIFEST_INVALID                                           syscall.Errno = 4571\n\tERROR_PLATFORM_MANIFEST_FILE_NOT_AUTHORIZED                               syscall.Errno = 4572\n\tERROR_PLATFORM_MANIFEST_CATALOG_NOT_AUTHORIZED                            syscall.Errno = 4573\n\tERROR_PLATFORM_MANIFEST_BINARY_ID_NOT_FOUND                               syscall.Errno = 4574\n\tERROR_PLATFORM_MANIFEST_NOT_ACTIVE                                        syscall.Errno = 4575\n\tERROR_PLATFORM_MANIFEST_NOT_SIGNED                                        syscall.Errno = 4576\n\tERROR_DEPENDENT_RESOURCE_EXISTS                                           syscall.Errno = 5001\n\tERROR_DEPENDENCY_NOT_FOUND                                                syscall.Errno = 5002\n\tERROR_DEPENDENCY_ALREADY_EXISTS                                           syscall.Errno = 5003\n\tERROR_RESOURCE_NOT_ONLINE                                                 syscall.Errno = 5004\n\tERROR_HOST_NODE_NOT_AVAILABLE                                             syscall.Errno = 5005\n\tERROR_RESOURCE_NOT_AVAILABLE                                              syscall.Errno = 5006\n\tERROR_RESOURCE_NOT_FOUND                                                  syscall.Errno = 5007\n\tERROR_SHUTDOWN_CLUSTER                                                    syscall.Errno = 5008\n\tERROR_CANT_EVICT_ACTIVE_NODE                                              syscall.Errno = 5009\n\tERROR_OBJECT_ALREADY_EXISTS                                               syscall.Errno = 5010\n\tERROR_OBJECT_IN_LIST                                                      syscall.Errno = 5011\n\tERROR_GROUP_NOT_AVAILABLE                                                 syscall.Errno = 5012\n\tERROR_GROUP_NOT_FOUND                                                     syscall.Errno = 5013\n\tERROR_GROUP_NOT_ONLINE                                                    syscall.Errno = 5014\n\tERROR_HOST_NODE_NOT_RESOURCE_OWNER                                        syscall.Errno = 5015\n\tERROR_HOST_NODE_NOT_GROUP_OWNER                                           syscall.Errno = 5016\n\tERROR_RESMON_CREATE_FAILED                                                syscall.Errno = 5017\n\tERROR_RESMON_ONLINE_FAILED                                                syscall.Errno = 5018\n\tERROR_RESOURCE_ONLINE                                                     syscall.Errno = 5019\n\tERROR_QUORUM_RESOURCE                                                     syscall.Errno = 5020\n\tERROR_NOT_QUORUM_CAPABLE                                                  syscall.Errno = 5021\n\tERROR_CLUSTER_SHUTTING_DOWN                                               syscall.Errno = 5022\n\tERROR_INVALID_STATE                                                       syscall.Errno = 5023\n\tERROR_RESOURCE_PROPERTIES_STORED                                          syscall.Errno = 5024\n\tERROR_NOT_QUORUM_CLASS                                                    syscall.Errno = 5025\n\tERROR_CORE_RESOURCE                                                       syscall.Errno = 5026\n\tERROR_QUORUM_RESOURCE_ONLINE_FAILED                                       syscall.Errno = 5027\n\tERROR_QUORUMLOG_OPEN_FAILED                                               syscall.Errno = 5028\n\tERROR_CLUSTERLOG_CORRUPT                                                  syscall.Errno = 5029\n\tERROR_CLUSTERLOG_RECORD_EXCEEDS_MAXSIZE                                   syscall.Errno = 5030\n\tERROR_CLUSTERLOG_EXCEEDS_MAXSIZE                                          syscall.Errno = 5031\n\tERROR_CLUSTERLOG_CHKPOINT_NOT_FOUND                                       syscall.Errno = 5032\n\tERROR_CLUSTERLOG_NOT_ENOUGH_SPACE                                         syscall.Errno = 5033\n\tERROR_QUORUM_OWNER_ALIVE                                                  syscall.Errno = 5034\n\tERROR_NETWORK_NOT_AVAILABLE                                               syscall.Errno = 5035\n\tERROR_NODE_NOT_AVAILABLE                                                  syscall.Errno = 5036\n\tERROR_ALL_NODES_NOT_AVAILABLE                                             syscall.Errno = 5037\n\tERROR_RESOURCE_FAILED                                                     syscall.Errno = 5038\n\tERROR_CLUSTER_INVALID_NODE                                                syscall.Errno = 5039\n\tERROR_CLUSTER_NODE_EXISTS                                                 syscall.Errno = 5040\n\tERROR_CLUSTER_JOIN_IN_PROGRESS                                            syscall.Errno = 5041\n\tERROR_CLUSTER_NODE_NOT_FOUND                                              syscall.Errno = 5042\n\tERROR_CLUSTER_LOCAL_NODE_NOT_FOUND                                        syscall.Errno = 5043\n\tERROR_CLUSTER_NETWORK_EXISTS                                              syscall.Errno = 5044\n\tERROR_CLUSTER_NETWORK_NOT_FOUND                                           syscall.Errno = 5045\n\tERROR_CLUSTER_NETINTERFACE_EXISTS                                         syscall.Errno = 5046\n\tERROR_CLUSTER_NETINTERFACE_NOT_FOUND                                      syscall.Errno = 5047\n\tERROR_CLUSTER_INVALID_REQUEST                                             syscall.Errno = 5048\n\tERROR_CLUSTER_INVALID_NETWORK_PROVIDER                                    syscall.Errno = 5049\n\tERROR_CLUSTER_NODE_DOWN                                                   syscall.Errno = 5050\n\tERROR_CLUSTER_NODE_UNREACHABLE                                            syscall.Errno = 5051\n\tERROR_CLUSTER_NODE_NOT_MEMBER                                             syscall.Errno = 5052\n\tERROR_CLUSTER_JOIN_NOT_IN_PROGRESS                                        syscall.Errno = 5053\n\tERROR_CLUSTER_INVALID_NETWORK                                             syscall.Errno = 5054\n\tERROR_CLUSTER_NODE_UP                                                     syscall.Errno = 5056\n\tERROR_CLUSTER_IPADDR_IN_USE                                               syscall.Errno = 5057\n\tERROR_CLUSTER_NODE_NOT_PAUSED                                             syscall.Errno = 5058\n\tERROR_CLUSTER_NO_SECURITY_CONTEXT                                         syscall.Errno = 5059\n\tERROR_CLUSTER_NETWORK_NOT_INTERNAL                                        syscall.Errno = 5060\n\tERROR_CLUSTER_NODE_ALREADY_UP                                             syscall.Errno = 5061\n\tERROR_CLUSTER_NODE_ALREADY_DOWN                                           syscall.Errno = 5062\n\tERROR_CLUSTER_NETWORK_ALREADY_ONLINE                                      syscall.Errno = 5063\n\tERROR_CLUSTER_NETWORK_ALREADY_OFFLINE                                     syscall.Errno = 5064\n\tERROR_CLUSTER_NODE_ALREADY_MEMBER                                         syscall.Errno = 5065\n\tERROR_CLUSTER_LAST_INTERNAL_NETWORK                                       syscall.Errno = 5066\n\tERROR_CLUSTER_NETWORK_HAS_DEPENDENTS                                      syscall.Errno = 5067\n\tERROR_INVALID_OPERATION_ON_QUORUM                                         syscall.Errno = 5068\n\tERROR_DEPENDENCY_NOT_ALLOWED                                              syscall.Errno = 5069\n\tERROR_CLUSTER_NODE_PAUSED                                                 syscall.Errno = 5070\n\tERROR_NODE_CANT_HOST_RESOURCE                                             syscall.Errno = 5071\n\tERROR_CLUSTER_NODE_NOT_READY                                              syscall.Errno = 5072\n\tERROR_CLUSTER_NODE_SHUTTING_DOWN                                          syscall.Errno = 5073\n\tERROR_CLUSTER_JOIN_ABORTED                                                syscall.Errno = 5074\n\tERROR_CLUSTER_INCOMPATIBLE_VERSIONS                                       syscall.Errno = 5075\n\tERROR_CLUSTER_MAXNUM_OF_RESOURCES_EXCEEDED                                syscall.Errno = 5076\n\tERROR_CLUSTER_SYSTEM_CONFIG_CHANGED                                       syscall.Errno = 5077\n\tERROR_CLUSTER_RESOURCE_TYPE_NOT_FOUND                                     syscall.Errno = 5078\n\tERROR_CLUSTER_RESTYPE_NOT_SUPPORTED                                       syscall.Errno = 5079\n\tERROR_CLUSTER_RESNAME_NOT_FOUND                                           syscall.Errno = 5080\n\tERROR_CLUSTER_NO_RPC_PACKAGES_REGISTERED                                  syscall.Errno = 5081\n\tERROR_CLUSTER_OWNER_NOT_IN_PREFLIST                                       syscall.Errno = 5082\n\tERROR_CLUSTER_DATABASE_SEQMISMATCH                                        syscall.Errno = 5083\n\tERROR_RESMON_INVALID_STATE                                                syscall.Errno = 5084\n\tERROR_CLUSTER_GUM_NOT_LOCKER                                              syscall.Errno = 5085\n\tERROR_QUORUM_DISK_NOT_FOUND                                               syscall.Errno = 5086\n\tERROR_DATABASE_BACKUP_CORRUPT                                             syscall.Errno = 5087\n\tERROR_CLUSTER_NODE_ALREADY_HAS_DFS_ROOT                                   syscall.Errno = 5088\n\tERROR_RESOURCE_PROPERTY_UNCHANGEABLE                                      syscall.Errno = 5089\n\tERROR_NO_ADMIN_ACCESS_POINT                                               syscall.Errno = 5090\n\tERROR_CLUSTER_MEMBERSHIP_INVALID_STATE                                    syscall.Errno = 5890\n\tERROR_CLUSTER_QUORUMLOG_NOT_FOUND                                         syscall.Errno = 5891\n\tERROR_CLUSTER_MEMBERSHIP_HALT                                             syscall.Errno = 5892\n\tERROR_CLUSTER_INSTANCE_ID_MISMATCH                                        syscall.Errno = 5893\n\tERROR_CLUSTER_NETWORK_NOT_FOUND_FOR_IP                                    syscall.Errno = 5894\n\tERROR_CLUSTER_PROPERTY_DATA_TYPE_MISMATCH                                 syscall.Errno = 5895\n\tERROR_CLUSTER_EVICT_WITHOUT_CLEANUP                                       syscall.Errno = 5896\n\tERROR_CLUSTER_PARAMETER_MISMATCH                                          syscall.Errno = 5897\n\tERROR_NODE_CANNOT_BE_CLUSTERED                                            syscall.Errno = 5898\n\tERROR_CLUSTER_WRONG_OS_VERSION                                            syscall.Errno = 5899\n\tERROR_CLUSTER_CANT_CREATE_DUP_CLUSTER_NAME                                syscall.Errno = 5900\n\tERROR_CLUSCFG_ALREADY_COMMITTED                                           syscall.Errno = 5901\n\tERROR_CLUSCFG_ROLLBACK_FAILED                                             syscall.Errno = 5902\n\tERROR_CLUSCFG_SYSTEM_DISK_DRIVE_LETTER_CONFLICT                           syscall.Errno = 5903\n\tERROR_CLUSTER_OLD_VERSION                                                 syscall.Errno = 5904\n\tERROR_CLUSTER_MISMATCHED_COMPUTER_ACCT_NAME                               syscall.Errno = 5905\n\tERROR_CLUSTER_NO_NET_ADAPTERS                                             syscall.Errno = 5906\n\tERROR_CLUSTER_POISONED                                                    syscall.Errno = 5907\n\tERROR_CLUSTER_GROUP_MOVING                                                syscall.Errno = 5908\n\tERROR_CLUSTER_RESOURCE_TYPE_BUSY                                          syscall.Errno = 5909\n\tERROR_RESOURCE_CALL_TIMED_OUT                                             syscall.Errno = 5910\n\tERROR_INVALID_CLUSTER_IPV6_ADDRESS                                        syscall.Errno = 5911\n\tERROR_CLUSTER_INTERNAL_INVALID_FUNCTION                                   syscall.Errno = 5912\n\tERROR_CLUSTER_PARAMETER_OUT_OF_BOUNDS                                     syscall.Errno = 5913\n\tERROR_CLUSTER_PARTIAL_SEND                                                syscall.Errno = 5914\n\tERROR_CLUSTER_REGISTRY_INVALID_FUNCTION                                   syscall.Errno = 5915\n\tERROR_CLUSTER_INVALID_STRING_TERMINATION                                  syscall.Errno = 5916\n\tERROR_CLUSTER_INVALID_STRING_FORMAT                                       syscall.Errno = 5917\n\tERROR_CLUSTER_DATABASE_TRANSACTION_IN_PROGRESS                            syscall.Errno = 5918\n\tERROR_CLUSTER_DATABASE_TRANSACTION_NOT_IN_PROGRESS                        syscall.Errno = 5919\n\tERROR_CLUSTER_NULL_DATA                                                   syscall.Errno = 5920\n\tERROR_CLUSTER_PARTIAL_READ                                                syscall.Errno = 5921\n\tERROR_CLUSTER_PARTIAL_WRITE                                               syscall.Errno = 5922\n\tERROR_CLUSTER_CANT_DESERIALIZE_DATA                                       syscall.Errno = 5923\n\tERROR_DEPENDENT_RESOURCE_PROPERTY_CONFLICT                                syscall.Errno = 5924\n\tERROR_CLUSTER_NO_QUORUM                                                   syscall.Errno = 5925\n\tERROR_CLUSTER_INVALID_IPV6_NETWORK                                        syscall.Errno = 5926\n\tERROR_CLUSTER_INVALID_IPV6_TUNNEL_NETWORK                                 syscall.Errno = 5927\n\tERROR_QUORUM_NOT_ALLOWED_IN_THIS_GROUP                                    syscall.Errno = 5928\n\tERROR_DEPENDENCY_TREE_TOO_COMPLEX                                         syscall.Errno = 5929\n\tERROR_EXCEPTION_IN_RESOURCE_CALL                                          syscall.Errno = 5930\n\tERROR_CLUSTER_RHS_FAILED_INITIALIZATION                                   syscall.Errno = 5931\n\tERROR_CLUSTER_NOT_INSTALLED                                               syscall.Errno = 5932\n\tERROR_CLUSTER_RESOURCES_MUST_BE_ONLINE_ON_THE_SAME_NODE                   syscall.Errno = 5933\n\tERROR_CLUSTER_MAX_NODES_IN_CLUSTER                                        syscall.Errno = 5934\n\tERROR_CLUSTER_TOO_MANY_NODES                                              syscall.Errno = 5935\n\tERROR_CLUSTER_OBJECT_ALREADY_USED                                         syscall.Errno = 5936\n\tERROR_NONCORE_GROUPS_FOUND                                                syscall.Errno = 5937\n\tERROR_FILE_SHARE_RESOURCE_CONFLICT                                        syscall.Errno = 5938\n\tERROR_CLUSTER_EVICT_INVALID_REQUEST                                       syscall.Errno = 5939\n\tERROR_CLUSTER_SINGLETON_RESOURCE                                          syscall.Errno = 5940\n\tERROR_CLUSTER_GROUP_SINGLETON_RESOURCE                                    syscall.Errno = 5941\n\tERROR_CLUSTER_RESOURCE_PROVIDER_FAILED                                    syscall.Errno = 5942\n\tERROR_CLUSTER_RESOURCE_CONFIGURATION_ERROR                                syscall.Errno = 5943\n\tERROR_CLUSTER_GROUP_BUSY                                                  syscall.Errno = 5944\n\tERROR_CLUSTER_NOT_SHARED_VOLUME                                           syscall.Errno = 5945\n\tERROR_CLUSTER_INVALID_SECURITY_DESCRIPTOR                                 syscall.Errno = 5946\n\tERROR_CLUSTER_SHARED_VOLUMES_IN_USE                                       syscall.Errno = 5947\n\tERROR_CLUSTER_USE_SHARED_VOLUMES_API                                      syscall.Errno = 5948\n\tERROR_CLUSTER_BACKUP_IN_PROGRESS                                          syscall.Errno = 5949\n\tERROR_NON_CSV_PATH                                                        syscall.Errno = 5950\n\tERROR_CSV_VOLUME_NOT_LOCAL                                                syscall.Errno = 5951\n\tERROR_CLUSTER_WATCHDOG_TERMINATING                                        syscall.Errno = 5952\n\tERROR_CLUSTER_RESOURCE_VETOED_MOVE_INCOMPATIBLE_NODES                     syscall.Errno = 5953\n\tERROR_CLUSTER_INVALID_NODE_WEIGHT                                         syscall.Errno = 5954\n\tERROR_CLUSTER_RESOURCE_VETOED_CALL                                        syscall.Errno = 5955\n\tERROR_RESMON_SYSTEM_RESOURCES_LACKING                                     syscall.Errno = 5956\n\tERROR_CLUSTER_RESOURCE_VETOED_MOVE_NOT_ENOUGH_RESOURCES_ON_DESTINATION    syscall.Errno = 5957\n\tERROR_CLUSTER_RESOURCE_VETOED_MOVE_NOT_ENOUGH_RESOURCES_ON_SOURCE         syscall.Errno = 5958\n\tERROR_CLUSTER_GROUP_QUEUED                                                syscall.Errno = 5959\n\tERROR_CLUSTER_RESOURCE_LOCKED_STATUS                                      syscall.Errno = 5960\n\tERROR_CLUSTER_SHARED_VOLUME_FAILOVER_NOT_ALLOWED                          syscall.Errno = 5961\n\tERROR_CLUSTER_NODE_DRAIN_IN_PROGRESS                                      syscall.Errno = 5962\n\tERROR_CLUSTER_DISK_NOT_CONNECTED                                          syscall.Errno = 5963\n\tERROR_DISK_NOT_CSV_CAPABLE                                                syscall.Errno = 5964\n\tERROR_RESOURCE_NOT_IN_AVAILABLE_STORAGE                                   syscall.Errno = 5965\n\tERROR_CLUSTER_SHARED_VOLUME_REDIRECTED                                    syscall.Errno = 5966\n\tERROR_CLUSTER_SHARED_VOLUME_NOT_REDIRECTED                                syscall.Errno = 5967\n\tERROR_CLUSTER_CANNOT_RETURN_PROPERTIES                                    syscall.Errno = 5968\n\tERROR_CLUSTER_RESOURCE_CONTAINS_UNSUPPORTED_DIFF_AREA_FOR_SHARED_VOLUMES  syscall.Errno = 5969\n\tERROR_CLUSTER_RESOURCE_IS_IN_MAINTENANCE_MODE                             syscall.Errno = 5970\n\tERROR_CLUSTER_AFFINITY_CONFLICT                                           syscall.Errno = 5971\n\tERROR_CLUSTER_RESOURCE_IS_REPLICA_VIRTUAL_MACHINE                         syscall.Errno = 5972\n\tERROR_CLUSTER_UPGRADE_INCOMPATIBLE_VERSIONS                               syscall.Errno = 5973\n\tERROR_CLUSTER_UPGRADE_FIX_QUORUM_NOT_SUPPORTED                            syscall.Errno = 5974\n\tERROR_CLUSTER_UPGRADE_RESTART_REQUIRED                                    syscall.Errno = 5975\n\tERROR_CLUSTER_UPGRADE_IN_PROGRESS                                         syscall.Errno = 5976\n\tERROR_CLUSTER_UPGRADE_INCOMPLETE                                          syscall.Errno = 5977\n\tERROR_CLUSTER_NODE_IN_GRACE_PERIOD                                        syscall.Errno = 5978\n\tERROR_CLUSTER_CSV_IO_PAUSE_TIMEOUT                                        syscall.Errno = 5979\n\tERROR_NODE_NOT_ACTIVE_CLUSTER_MEMBER                                      syscall.Errno = 5980\n\tERROR_CLUSTER_RESOURCE_NOT_MONITORED                                      syscall.Errno = 5981\n\tERROR_CLUSTER_RESOURCE_DOES_NOT_SUPPORT_UNMONITORED                       syscall.Errno = 5982\n\tERROR_CLUSTER_RESOURCE_IS_REPLICATED                                      syscall.Errno = 5983\n\tERROR_CLUSTER_NODE_ISOLATED                                               syscall.Errno = 5984\n\tERROR_CLUSTER_NODE_QUARANTINED                                            syscall.Errno = 5985\n\tERROR_CLUSTER_DATABASE_UPDATE_CONDITION_FAILED                            syscall.Errno = 5986\n\tERROR_CLUSTER_SPACE_DEGRADED                                              syscall.Errno = 5987\n\tERROR_CLUSTER_TOKEN_DELEGATION_NOT_SUPPORTED                              syscall.Errno = 5988\n\tERROR_CLUSTER_CSV_INVALID_HANDLE                                          syscall.Errno = 5989\n\tERROR_CLUSTER_CSV_SUPPORTED_ONLY_ON_COORDINATOR                           syscall.Errno = 5990\n\tERROR_GROUPSET_NOT_AVAILABLE                                              syscall.Errno = 5991\n\tERROR_GROUPSET_NOT_FOUND                                                  syscall.Errno = 5992\n\tERROR_GROUPSET_CANT_PROVIDE                                               syscall.Errno = 5993\n\tERROR_CLUSTER_FAULT_DOMAIN_PARENT_NOT_FOUND                               syscall.Errno = 5994\n\tERROR_CLUSTER_FAULT_DOMAIN_INVALID_HIERARCHY                              syscall.Errno = 5995\n\tERROR_CLUSTER_FAULT_DOMAIN_FAILED_S2D_VALIDATION                          syscall.Errno = 5996\n\tERROR_CLUSTER_FAULT_DOMAIN_S2D_CONNECTIVITY_LOSS                          syscall.Errno = 5997\n\tERROR_CLUSTER_INVALID_INFRASTRUCTURE_FILESERVER_NAME                      syscall.Errno = 5998\n\tERROR_CLUSTERSET_MANAGEMENT_CLUSTER_UNREACHABLE                           syscall.Errno = 5999\n\tERROR_ENCRYPTION_FAILED                                                   syscall.Errno = 6000\n\tERROR_DECRYPTION_FAILED                                                   syscall.Errno = 6001\n\tERROR_FILE_ENCRYPTED                                                      syscall.Errno = 6002\n\tERROR_NO_RECOVERY_POLICY                                                  syscall.Errno = 6003\n\tERROR_NO_EFS                                                              syscall.Errno = 6004\n\tERROR_WRONG_EFS                                                           syscall.Errno = 6005\n\tERROR_NO_USER_KEYS                                                        syscall.Errno = 6006\n\tERROR_FILE_NOT_ENCRYPTED                                                  syscall.Errno = 6007\n\tERROR_NOT_EXPORT_FORMAT                                                   syscall.Errno = 6008\n\tERROR_FILE_READ_ONLY                                                      syscall.Errno = 6009\n\tERROR_DIR_EFS_DISALLOWED                                                  syscall.Errno = 6010\n\tERROR_EFS_SERVER_NOT_TRUSTED                                              syscall.Errno = 6011\n\tERROR_BAD_RECOVERY_POLICY                                                 syscall.Errno = 6012\n\tERROR_EFS_ALG_BLOB_TOO_BIG                                                syscall.Errno = 6013\n\tERROR_VOLUME_NOT_SUPPORT_EFS                                              syscall.Errno = 6014\n\tERROR_EFS_DISABLED                                                        syscall.Errno = 6015\n\tERROR_EFS_VERSION_NOT_SUPPORT                                             syscall.Errno = 6016\n\tERROR_CS_ENCRYPTION_INVALID_SERVER_RESPONSE                               syscall.Errno = 6017\n\tERROR_CS_ENCRYPTION_UNSUPPORTED_SERVER                                    syscall.Errno = 6018\n\tERROR_CS_ENCRYPTION_EXISTING_ENCRYPTED_FILE                               syscall.Errno = 6019\n\tERROR_CS_ENCRYPTION_NEW_ENCRYPTED_FILE                                    syscall.Errno = 6020\n\tERROR_CS_ENCRYPTION_FILE_NOT_CSE                                          syscall.Errno = 6021\n\tERROR_ENCRYPTION_POLICY_DENIES_OPERATION                                  syscall.Errno = 6022\n\tERROR_WIP_ENCRYPTION_FAILED                                               syscall.Errno = 6023\n\tERROR_NO_BROWSER_SERVERS_FOUND                                            syscall.Errno = 6118\n\tSCHED_E_SERVICE_NOT_LOCALSYSTEM                                           syscall.Errno = 6200\n\tERROR_LOG_SECTOR_INVALID                                                  syscall.Errno = 6600\n\tERROR_LOG_SECTOR_PARITY_INVALID                                           syscall.Errno = 6601\n\tERROR_LOG_SECTOR_REMAPPED                                                 syscall.Errno = 6602\n\tERROR_LOG_BLOCK_INCOMPLETE                                                syscall.Errno = 6603\n\tERROR_LOG_INVALID_RANGE                                                   syscall.Errno = 6604\n\tERROR_LOG_BLOCKS_EXHAUSTED                                                syscall.Errno = 6605\n\tERROR_LOG_READ_CONTEXT_INVALID                                            syscall.Errno = 6606\n\tERROR_LOG_RESTART_INVALID                                                 syscall.Errno = 6607\n\tERROR_LOG_BLOCK_VERSION                                                   syscall.Errno = 6608\n\tERROR_LOG_BLOCK_INVALID                                                   syscall.Errno = 6609\n\tERROR_LOG_READ_MODE_INVALID                                               syscall.Errno = 6610\n\tERROR_LOG_NO_RESTART                                                      syscall.Errno = 6611\n\tERROR_LOG_METADATA_CORRUPT                                                syscall.Errno = 6612\n\tERROR_LOG_METADATA_INVALID                                                syscall.Errno = 6613\n\tERROR_LOG_METADATA_INCONSISTENT                                           syscall.Errno = 6614\n\tERROR_LOG_RESERVATION_INVALID                                             syscall.Errno = 6615\n\tERROR_LOG_CANT_DELETE                                                     syscall.Errno = 6616\n\tERROR_LOG_CONTAINER_LIMIT_EXCEEDED                                        syscall.Errno = 6617\n\tERROR_LOG_START_OF_LOG                                                    syscall.Errno = 6618\n\tERROR_LOG_POLICY_ALREADY_INSTALLED                                        syscall.Errno = 6619\n\tERROR_LOG_POLICY_NOT_INSTALLED                                            syscall.Errno = 6620\n\tERROR_LOG_POLICY_INVALID                                                  syscall.Errno = 6621\n\tERROR_LOG_POLICY_CONFLICT                                                 syscall.Errno = 6622\n\tERROR_LOG_PINNED_ARCHIVE_TAIL                                             syscall.Errno = 6623\n\tERROR_LOG_RECORD_NONEXISTENT                                              syscall.Errno = 6624\n\tERROR_LOG_RECORDS_RESERVED_INVALID                                        syscall.Errno = 6625\n\tERROR_LOG_SPACE_RESERVED_INVALID                                          syscall.Errno = 6626\n\tERROR_LOG_TAIL_INVALID                                                    syscall.Errno = 6627\n\tERROR_LOG_FULL                                                            syscall.Errno = 6628\n\tERROR_COULD_NOT_RESIZE_LOG                                                syscall.Errno = 6629\n\tERROR_LOG_MULTIPLEXED                                                     syscall.Errno = 6630\n\tERROR_LOG_DEDICATED                                                       syscall.Errno = 6631\n\tERROR_LOG_ARCHIVE_NOT_IN_PROGRESS                                         syscall.Errno = 6632\n\tERROR_LOG_ARCHIVE_IN_PROGRESS                                             syscall.Errno = 6633\n\tERROR_LOG_EPHEMERAL                                                       syscall.Errno = 6634\n\tERROR_LOG_NOT_ENOUGH_CONTAINERS                                           syscall.Errno = 6635\n\tERROR_LOG_CLIENT_ALREADY_REGISTERED                                       syscall.Errno = 6636\n\tERROR_LOG_CLIENT_NOT_REGISTERED                                           syscall.Errno = 6637\n\tERROR_LOG_FULL_HANDLER_IN_PROGRESS                                        syscall.Errno = 6638\n\tERROR_LOG_CONTAINER_READ_FAILED                                           syscall.Errno = 6639\n\tERROR_LOG_CONTAINER_WRITE_FAILED                                          syscall.Errno = 6640\n\tERROR_LOG_CONTAINER_OPEN_FAILED                                           syscall.Errno = 6641\n\tERROR_LOG_CONTAINER_STATE_INVALID                                         syscall.Errno = 6642\n\tERROR_LOG_STATE_INVALID                                                   syscall.Errno = 6643\n\tERROR_LOG_PINNED                                                          syscall.Errno = 6644\n\tERROR_LOG_METADATA_FLUSH_FAILED                                           syscall.Errno = 6645\n\tERROR_LOG_INCONSISTENT_SECURITY                                           syscall.Errno = 6646\n\tERROR_LOG_APPENDED_FLUSH_FAILED                                           syscall.Errno = 6647\n\tERROR_LOG_PINNED_RESERVATION                                              syscall.Errno = 6648\n\tERROR_INVALID_TRANSACTION                                                 syscall.Errno = 6700\n\tERROR_TRANSACTION_NOT_ACTIVE                                              syscall.Errno = 6701\n\tERROR_TRANSACTION_REQUEST_NOT_VALID                                       syscall.Errno = 6702\n\tERROR_TRANSACTION_NOT_REQUESTED                                           syscall.Errno = 6703\n\tERROR_TRANSACTION_ALREADY_ABORTED                                         syscall.Errno = 6704\n\tERROR_TRANSACTION_ALREADY_COMMITTED                                       syscall.Errno = 6705\n\tERROR_TM_INITIALIZATION_FAILED                                            syscall.Errno = 6706\n\tERROR_RESOURCEMANAGER_READ_ONLY                                           syscall.Errno = 6707\n\tERROR_TRANSACTION_NOT_JOINED                                              syscall.Errno = 6708\n\tERROR_TRANSACTION_SUPERIOR_EXISTS                                         syscall.Errno = 6709\n\tERROR_CRM_PROTOCOL_ALREADY_EXISTS                                         syscall.Errno = 6710\n\tERROR_TRANSACTION_PROPAGATION_FAILED                                      syscall.Errno = 6711\n\tERROR_CRM_PROTOCOL_NOT_FOUND                                              syscall.Errno = 6712\n\tERROR_TRANSACTION_INVALID_MARSHALL_BUFFER                                 syscall.Errno = 6713\n\tERROR_CURRENT_TRANSACTION_NOT_VALID                                       syscall.Errno = 6714\n\tERROR_TRANSACTION_NOT_FOUND                                               syscall.Errno = 6715\n\tERROR_RESOURCEMANAGER_NOT_FOUND                                           syscall.Errno = 6716\n\tERROR_ENLISTMENT_NOT_FOUND                                                syscall.Errno = 6717\n\tERROR_TRANSACTIONMANAGER_NOT_FOUND                                        syscall.Errno = 6718\n\tERROR_TRANSACTIONMANAGER_NOT_ONLINE                                       syscall.Errno = 6719\n\tERROR_TRANSACTIONMANAGER_RECOVERY_NAME_COLLISION                          syscall.Errno = 6720\n\tERROR_TRANSACTION_NOT_ROOT                                                syscall.Errno = 6721\n\tERROR_TRANSACTION_OBJECT_EXPIRED                                          syscall.Errno = 6722\n\tERROR_TRANSACTION_RESPONSE_NOT_ENLISTED                                   syscall.Errno = 6723\n\tERROR_TRANSACTION_RECORD_TOO_LONG                                         syscall.Errno = 6724\n\tERROR_IMPLICIT_TRANSACTION_NOT_SUPPORTED                                  syscall.Errno = 6725\n\tERROR_TRANSACTION_INTEGRITY_VIOLATED                                      syscall.Errno = 6726\n\tERROR_TRANSACTIONMANAGER_IDENTITY_MISMATCH                                syscall.Errno = 6727\n\tERROR_RM_CANNOT_BE_FROZEN_FOR_SNAPSHOT                                    syscall.Errno = 6728\n\tERROR_TRANSACTION_MUST_WRITETHROUGH                                       syscall.Errno = 6729\n\tERROR_TRANSACTION_NO_SUPERIOR                                             syscall.Errno = 6730\n\tERROR_HEURISTIC_DAMAGE_POSSIBLE                                           syscall.Errno = 6731\n\tERROR_TRANSACTIONAL_CONFLICT                                              syscall.Errno = 6800\n\tERROR_RM_NOT_ACTIVE                                                       syscall.Errno = 6801\n\tERROR_RM_METADATA_CORRUPT                                                 syscall.Errno = 6802\n\tERROR_DIRECTORY_NOT_RM                                                    syscall.Errno = 6803\n\tERROR_TRANSACTIONS_UNSUPPORTED_REMOTE                                     syscall.Errno = 6805\n\tERROR_LOG_RESIZE_INVALID_SIZE                                             syscall.Errno = 6806\n\tERROR_OBJECT_NO_LONGER_EXISTS                                             syscall.Errno = 6807\n\tERROR_STREAM_MINIVERSION_NOT_FOUND                                        syscall.Errno = 6808\n\tERROR_STREAM_MINIVERSION_NOT_VALID                                        syscall.Errno = 6809\n\tERROR_MINIVERSION_INACCESSIBLE_FROM_SPECIFIED_TRANSACTION                 syscall.Errno = 6810\n\tERROR_CANT_OPEN_MINIVERSION_WITH_MODIFY_INTENT                            syscall.Errno = 6811\n\tERROR_CANT_CREATE_MORE_STREAM_MINIVERSIONS                                syscall.Errno = 6812\n\tERROR_REMOTE_FILE_VERSION_MISMATCH                                        syscall.Errno = 6814\n\tERROR_HANDLE_NO_LONGER_VALID                                              syscall.Errno = 6815\n\tERROR_NO_TXF_METADATA                                                     syscall.Errno = 6816\n\tERROR_LOG_CORRUPTION_DETECTED                                             syscall.Errno = 6817\n\tERROR_CANT_RECOVER_WITH_HANDLE_OPEN                                       syscall.Errno = 6818\n\tERROR_RM_DISCONNECTED                                                     syscall.Errno = 6819\n\tERROR_ENLISTMENT_NOT_SUPERIOR                                             syscall.Errno = 6820\n\tERROR_RECOVERY_NOT_NEEDED                                                 syscall.Errno = 6821\n\tERROR_RM_ALREADY_STARTED                                                  syscall.Errno = 6822\n\tERROR_FILE_IDENTITY_NOT_PERSISTENT                                        syscall.Errno = 6823\n\tERROR_CANT_BREAK_TRANSACTIONAL_DEPENDENCY                                 syscall.Errno = 6824\n\tERROR_CANT_CROSS_RM_BOUNDARY                                              syscall.Errno = 6825\n\tERROR_TXF_DIR_NOT_EMPTY                                                   syscall.Errno = 6826\n\tERROR_INDOUBT_TRANSACTIONS_EXIST                                          syscall.Errno = 6827\n\tERROR_TM_VOLATILE                                                         syscall.Errno = 6828\n\tERROR_ROLLBACK_TIMER_EXPIRED                                              syscall.Errno = 6829\n\tERROR_TXF_ATTRIBUTE_CORRUPT                                               syscall.Errno = 6830\n\tERROR_EFS_NOT_ALLOWED_IN_TRANSACTION                                      syscall.Errno = 6831\n\tERROR_TRANSACTIONAL_OPEN_NOT_ALLOWED                                      syscall.Errno = 6832\n\tERROR_LOG_GROWTH_FAILED                                                   syscall.Errno = 6833\n\tERROR_TRANSACTED_MAPPING_UNSUPPORTED_REMOTE                               syscall.Errno = 6834\n\tERROR_TXF_METADATA_ALREADY_PRESENT                                        syscall.Errno = 6835\n\tERROR_TRANSACTION_SCOPE_CALLBACKS_NOT_SET                                 syscall.Errno = 6836\n\tERROR_TRANSACTION_REQUIRED_PROMOTION                                      syscall.Errno = 6837\n\tERROR_CANNOT_EXECUTE_FILE_IN_TRANSACTION                                  syscall.Errno = 6838\n\tERROR_TRANSACTIONS_NOT_FROZEN                                             syscall.Errno = 6839\n\tERROR_TRANSACTION_FREEZE_IN_PROGRESS                                      syscall.Errno = 6840\n\tERROR_NOT_SNAPSHOT_VOLUME                                                 syscall.Errno = 6841\n\tERROR_NO_SAVEPOINT_WITH_OPEN_FILES                                        syscall.Errno = 6842\n\tERROR_DATA_LOST_REPAIR                                                    syscall.Errno = 6843\n\tERROR_SPARSE_NOT_ALLOWED_IN_TRANSACTION                                   syscall.Errno = 6844\n\tERROR_TM_IDENTITY_MISMATCH                                                syscall.Errno = 6845\n\tERROR_FLOATED_SECTION                                                     syscall.Errno = 6846\n\tERROR_CANNOT_ACCEPT_TRANSACTED_WORK                                       syscall.Errno = 6847\n\tERROR_CANNOT_ABORT_TRANSACTIONS                                           syscall.Errno = 6848\n\tERROR_BAD_CLUSTERS                                                        syscall.Errno = 6849\n\tERROR_COMPRESSION_NOT_ALLOWED_IN_TRANSACTION                              syscall.Errno = 6850\n\tERROR_VOLUME_DIRTY                                                        syscall.Errno = 6851\n\tERROR_NO_LINK_TRACKING_IN_TRANSACTION                                     syscall.Errno = 6852\n\tERROR_OPERATION_NOT_SUPPORTED_IN_TRANSACTION                              syscall.Errno = 6853\n\tERROR_EXPIRED_HANDLE                                                      syscall.Errno = 6854\n\tERROR_TRANSACTION_NOT_ENLISTED                                            syscall.Errno = 6855\n\tERROR_CTX_WINSTATION_NAME_INVALID                                         syscall.Errno = 7001\n\tERROR_CTX_INVALID_PD                                                      syscall.Errno = 7002\n\tERROR_CTX_PD_NOT_FOUND                                                    syscall.Errno = 7003\n\tERROR_CTX_WD_NOT_FOUND                                                    syscall.Errno = 7004\n\tERROR_CTX_CANNOT_MAKE_EVENTLOG_ENTRY                                      syscall.Errno = 7005\n\tERROR_CTX_SERVICE_NAME_COLLISION                                          syscall.Errno = 7006\n\tERROR_CTX_CLOSE_PENDING                                                   syscall.Errno = 7007\n\tERROR_CTX_NO_OUTBUF                                                       syscall.Errno = 7008\n\tERROR_CTX_MODEM_INF_NOT_FOUND                                             syscall.Errno = 7009\n\tERROR_CTX_INVALID_MODEMNAME                                               syscall.Errno = 7010\n\tERROR_CTX_MODEM_RESPONSE_ERROR                                            syscall.Errno = 7011\n\tERROR_CTX_MODEM_RESPONSE_TIMEOUT                                          syscall.Errno = 7012\n\tERROR_CTX_MODEM_RESPONSE_NO_CARRIER                                       syscall.Errno = 7013\n\tERROR_CTX_MODEM_RESPONSE_NO_DIALTONE                                      syscall.Errno = 7014\n\tERROR_CTX_MODEM_RESPONSE_BUSY                                             syscall.Errno = 7015\n\tERROR_CTX_MODEM_RESPONSE_VOICE                                            syscall.Errno = 7016\n\tERROR_CTX_TD_ERROR                                                        syscall.Errno = 7017\n\tERROR_CTX_WINSTATION_NOT_FOUND                                            syscall.Errno = 7022\n\tERROR_CTX_WINSTATION_ALREADY_EXISTS                                       syscall.Errno = 7023\n\tERROR_CTX_WINSTATION_BUSY                                                 syscall.Errno = 7024\n\tERROR_CTX_BAD_VIDEO_MODE                                                  syscall.Errno = 7025\n\tERROR_CTX_GRAPHICS_INVALID                                                syscall.Errno = 7035\n\tERROR_CTX_LOGON_DISABLED                                                  syscall.Errno = 7037\n\tERROR_CTX_NOT_CONSOLE                                                     syscall.Errno = 7038\n\tERROR_CTX_CLIENT_QUERY_TIMEOUT                                            syscall.Errno = 7040\n\tERROR_CTX_CONSOLE_DISCONNECT                                              syscall.Errno = 7041\n\tERROR_CTX_CONSOLE_CONNECT                                                 syscall.Errno = 7042\n\tERROR_CTX_SHADOW_DENIED                                                   syscall.Errno = 7044\n\tERROR_CTX_WINSTATION_ACCESS_DENIED                                        syscall.Errno = 7045\n\tERROR_CTX_INVALID_WD                                                      syscall.Errno = 7049\n\tERROR_CTX_SHADOW_INVALID                                                  syscall.Errno = 7050\n\tERROR_CTX_SHADOW_DISABLED                                                 syscall.Errno = 7051\n\tERROR_CTX_CLIENT_LICENSE_IN_USE                                           syscall.Errno = 7052\n\tERROR_CTX_CLIENT_LICENSE_NOT_SET                                          syscall.Errno = 7053\n\tERROR_CTX_LICENSE_NOT_AVAILABLE                                           syscall.Errno = 7054\n\tERROR_CTX_LICENSE_CLIENT_INVALID                                          syscall.Errno = 7055\n\tERROR_CTX_LICENSE_EXPIRED                                                 syscall.Errno = 7056\n\tERROR_CTX_SHADOW_NOT_RUNNING                                              syscall.Errno = 7057\n\tERROR_CTX_SHADOW_ENDED_BY_MODE_CHANGE                                     syscall.Errno = 7058\n\tERROR_ACTIVATION_COUNT_EXCEEDED                                           syscall.Errno = 7059\n\tERROR_CTX_WINSTATIONS_DISABLED                                            syscall.Errno = 7060\n\tERROR_CTX_ENCRYPTION_LEVEL_REQUIRED                                       syscall.Errno = 7061\n\tERROR_CTX_SESSION_IN_USE                                                  syscall.Errno = 7062\n\tERROR_CTX_NO_FORCE_LOGOFF                                                 syscall.Errno = 7063\n\tERROR_CTX_ACCOUNT_RESTRICTION                                             syscall.Errno = 7064\n\tERROR_RDP_PROTOCOL_ERROR                                                  syscall.Errno = 7065\n\tERROR_CTX_CDM_CONNECT                                                     syscall.Errno = 7066\n\tERROR_CTX_CDM_DISCONNECT                                                  syscall.Errno = 7067\n\tERROR_CTX_SECURITY_LAYER_ERROR                                            syscall.Errno = 7068\n\tERROR_TS_INCOMPATIBLE_SESSIONS                                            syscall.Errno = 7069\n\tERROR_TS_VIDEO_SUBSYSTEM_ERROR                                            syscall.Errno = 7070\n\tFRS_ERR_INVALID_API_SEQUENCE                                              syscall.Errno = 8001\n\tFRS_ERR_STARTING_SERVICE                                                  syscall.Errno = 8002\n\tFRS_ERR_STOPPING_SERVICE                                                  syscall.Errno = 8003\n\tFRS_ERR_INTERNAL_API                                                      syscall.Errno = 8004\n\tFRS_ERR_INTERNAL                                                          syscall.Errno = 8005\n\tFRS_ERR_SERVICE_COMM                                                      syscall.Errno = 8006\n\tFRS_ERR_INSUFFICIENT_PRIV                                                 syscall.Errno = 8007\n\tFRS_ERR_AUTHENTICATION                                                    syscall.Errno = 8008\n\tFRS_ERR_PARENT_INSUFFICIENT_PRIV                                          syscall.Errno = 8009\n\tFRS_ERR_PARENT_AUTHENTICATION                                             syscall.Errno = 8010\n\tFRS_ERR_CHILD_TO_PARENT_COMM                                              syscall.Errno = 8011\n\tFRS_ERR_PARENT_TO_CHILD_COMM                                              syscall.Errno = 8012\n\tFRS_ERR_SYSVOL_POPULATE                                                   syscall.Errno = 8013\n\tFRS_ERR_SYSVOL_POPULATE_TIMEOUT                                           syscall.Errno = 8014\n\tFRS_ERR_SYSVOL_IS_BUSY                                                    syscall.Errno = 8015\n\tFRS_ERR_SYSVOL_DEMOTE                                                     syscall.Errno = 8016\n\tFRS_ERR_INVALID_SERVICE_PARAMETER                                         syscall.Errno = 8017\n\tDS_S_SUCCESS                                                                            = ERROR_SUCCESS\n\tERROR_DS_NOT_INSTALLED                                                    syscall.Errno = 8200\n\tERROR_DS_MEMBERSHIP_EVALUATED_LOCALLY                                     syscall.Errno = 8201\n\tERROR_DS_NO_ATTRIBUTE_OR_VALUE                                            syscall.Errno = 8202\n\tERROR_DS_INVALID_ATTRIBUTE_SYNTAX                                         syscall.Errno = 8203\n\tERROR_DS_ATTRIBUTE_TYPE_UNDEFINED                                         syscall.Errno = 8204\n\tERROR_DS_ATTRIBUTE_OR_VALUE_EXISTS                                        syscall.Errno = 8205\n\tERROR_DS_BUSY                                                             syscall.Errno = 8206\n\tERROR_DS_UNAVAILABLE                                                      syscall.Errno = 8207\n\tERROR_DS_NO_RIDS_ALLOCATED                                                syscall.Errno = 8208\n\tERROR_DS_NO_MORE_RIDS                                                     syscall.Errno = 8209\n\tERROR_DS_INCORRECT_ROLE_OWNER                                             syscall.Errno = 8210\n\tERROR_DS_RIDMGR_INIT_ERROR                                                syscall.Errno = 8211\n\tERROR_DS_OBJ_CLASS_VIOLATION                                              syscall.Errno = 8212\n\tERROR_DS_CANT_ON_NON_LEAF                                                 syscall.Errno = 8213\n\tERROR_DS_CANT_ON_RDN                                                      syscall.Errno = 8214\n\tERROR_DS_CANT_MOD_OBJ_CLASS                                               syscall.Errno = 8215\n\tERROR_DS_CROSS_DOM_MOVE_ERROR                                             syscall.Errno = 8216\n\tERROR_DS_GC_NOT_AVAILABLE                                                 syscall.Errno = 8217\n\tERROR_SHARED_POLICY                                                       syscall.Errno = 8218\n\tERROR_POLICY_OBJECT_NOT_FOUND                                             syscall.Errno = 8219\n\tERROR_POLICY_ONLY_IN_DS                                                   syscall.Errno = 8220\n\tERROR_PROMOTION_ACTIVE                                                    syscall.Errno = 8221\n\tERROR_NO_PROMOTION_ACTIVE                                                 syscall.Errno = 8222\n\tERROR_DS_OPERATIONS_ERROR                                                 syscall.Errno = 8224\n\tERROR_DS_PROTOCOL_ERROR                                                   syscall.Errno = 8225\n\tERROR_DS_TIMELIMIT_EXCEEDED                                               syscall.Errno = 8226\n\tERROR_DS_SIZELIMIT_EXCEEDED                                               syscall.Errno = 8227\n\tERROR_DS_ADMIN_LIMIT_EXCEEDED                                             syscall.Errno = 8228\n\tERROR_DS_COMPARE_FALSE                                                    syscall.Errno = 8229\n\tERROR_DS_COMPARE_TRUE                                                     syscall.Errno = 8230\n\tERROR_DS_AUTH_METHOD_NOT_SUPPORTED                                        syscall.Errno = 8231\n\tERROR_DS_STRONG_AUTH_REQUIRED                                             syscall.Errno = 8232\n\tERROR_DS_INAPPROPRIATE_AUTH                                               syscall.Errno = 8233\n\tERROR_DS_AUTH_UNKNOWN                                                     syscall.Errno = 8234\n\tERROR_DS_REFERRAL                                                         syscall.Errno = 8235\n\tERROR_DS_UNAVAILABLE_CRIT_EXTENSION                                       syscall.Errno = 8236\n\tERROR_DS_CONFIDENTIALITY_REQUIRED                                         syscall.Errno = 8237\n\tERROR_DS_INAPPROPRIATE_MATCHING                                           syscall.Errno = 8238\n\tERROR_DS_CONSTRAINT_VIOLATION                                             syscall.Errno = 8239\n\tERROR_DS_NO_SUCH_OBJECT                                                   syscall.Errno = 8240\n\tERROR_DS_ALIAS_PROBLEM                                                    syscall.Errno = 8241\n\tERROR_DS_INVALID_DN_SYNTAX                                                syscall.Errno = 8242\n\tERROR_DS_IS_LEAF                                                          syscall.Errno = 8243\n\tERROR_DS_ALIAS_DEREF_PROBLEM                                              syscall.Errno = 8244\n\tERROR_DS_UNWILLING_TO_PERFORM                                             syscall.Errno = 8245\n\tERROR_DS_LOOP_DETECT                                                      syscall.Errno = 8246\n\tERROR_DS_NAMING_VIOLATION                                                 syscall.Errno = 8247\n\tERROR_DS_OBJECT_RESULTS_TOO_LARGE                                         syscall.Errno = 8248\n\tERROR_DS_AFFECTS_MULTIPLE_DSAS                                            syscall.Errno = 8249\n\tERROR_DS_SERVER_DOWN                                                      syscall.Errno = 8250\n\tERROR_DS_LOCAL_ERROR                                                      syscall.Errno = 8251\n\tERROR_DS_ENCODING_ERROR                                                   syscall.Errno = 8252\n\tERROR_DS_DECODING_ERROR                                                   syscall.Errno = 8253\n\tERROR_DS_FILTER_UNKNOWN                                                   syscall.Errno = 8254\n\tERROR_DS_PARAM_ERROR                                                      syscall.Errno = 8255\n\tERROR_DS_NOT_SUPPORTED                                                    syscall.Errno = 8256\n\tERROR_DS_NO_RESULTS_RETURNED                                              syscall.Errno = 8257\n\tERROR_DS_CONTROL_NOT_FOUND                                                syscall.Errno = 8258\n\tERROR_DS_CLIENT_LOOP                                                      syscall.Errno = 8259\n\tERROR_DS_REFERRAL_LIMIT_EXCEEDED                                          syscall.Errno = 8260\n\tERROR_DS_SORT_CONTROL_MISSING                                             syscall.Errno = 8261\n\tERROR_DS_OFFSET_RANGE_ERROR                                               syscall.Errno = 8262\n\tERROR_DS_RIDMGR_DISABLED                                                  syscall.Errno = 8263\n\tERROR_DS_ROOT_MUST_BE_NC                                                  syscall.Errno = 8301\n\tERROR_DS_ADD_REPLICA_INHIBITED                                            syscall.Errno = 8302\n\tERROR_DS_ATT_NOT_DEF_IN_SCHEMA                                            syscall.Errno = 8303\n\tERROR_DS_MAX_OBJ_SIZE_EXCEEDED                                            syscall.Errno = 8304\n\tERROR_DS_OBJ_STRING_NAME_EXISTS                                           syscall.Errno = 8305\n\tERROR_DS_NO_RDN_DEFINED_IN_SCHEMA                                         syscall.Errno = 8306\n\tERROR_DS_RDN_DOESNT_MATCH_SCHEMA                                          syscall.Errno = 8307\n\tERROR_DS_NO_REQUESTED_ATTS_FOUND                                          syscall.Errno = 8308\n\tERROR_DS_USER_BUFFER_TO_SMALL                                             syscall.Errno = 8309\n\tERROR_DS_ATT_IS_NOT_ON_OBJ                                                syscall.Errno = 8310\n\tERROR_DS_ILLEGAL_MOD_OPERATION                                            syscall.Errno = 8311\n\tERROR_DS_OBJ_TOO_LARGE                                                    syscall.Errno = 8312\n\tERROR_DS_BAD_INSTANCE_TYPE                                                syscall.Errno = 8313\n\tERROR_DS_MASTERDSA_REQUIRED                                               syscall.Errno = 8314\n\tERROR_DS_OBJECT_CLASS_REQUIRED                                            syscall.Errno = 8315\n\tERROR_DS_MISSING_REQUIRED_ATT                                             syscall.Errno = 8316\n\tERROR_DS_ATT_NOT_DEF_FOR_CLASS                                            syscall.Errno = 8317\n\tERROR_DS_ATT_ALREADY_EXISTS                                               syscall.Errno = 8318\n\tERROR_DS_CANT_ADD_ATT_VALUES                                              syscall.Errno = 8320\n\tERROR_DS_SINGLE_VALUE_CONSTRAINT                                          syscall.Errno = 8321\n\tERROR_DS_RANGE_CONSTRAINT                                                 syscall.Errno = 8322\n\tERROR_DS_ATT_VAL_ALREADY_EXISTS                                           syscall.Errno = 8323\n\tERROR_DS_CANT_REM_MISSING_ATT                                             syscall.Errno = 8324\n\tERROR_DS_CANT_REM_MISSING_ATT_VAL                                         syscall.Errno = 8325\n\tERROR_DS_ROOT_CANT_BE_SUBREF                                              syscall.Errno = 8326\n\tERROR_DS_NO_CHAINING                                                      syscall.Errno = 8327\n\tERROR_DS_NO_CHAINED_EVAL                                                  syscall.Errno = 8328\n\tERROR_DS_NO_PARENT_OBJECT                                                 syscall.Errno = 8329\n\tERROR_DS_PARENT_IS_AN_ALIAS                                               syscall.Errno = 8330\n\tERROR_DS_CANT_MIX_MASTER_AND_REPS                                         syscall.Errno = 8331\n\tERROR_DS_CHILDREN_EXIST                                                   syscall.Errno = 8332\n\tERROR_DS_OBJ_NOT_FOUND                                                    syscall.Errno = 8333\n\tERROR_DS_ALIASED_OBJ_MISSING                                              syscall.Errno = 8334\n\tERROR_DS_BAD_NAME_SYNTAX                                                  syscall.Errno = 8335\n\tERROR_DS_ALIAS_POINTS_TO_ALIAS                                            syscall.Errno = 8336\n\tERROR_DS_CANT_DEREF_ALIAS                                                 syscall.Errno = 8337\n\tERROR_DS_OUT_OF_SCOPE                                                     syscall.Errno = 8338\n\tERROR_DS_OBJECT_BEING_REMOVED                                             syscall.Errno = 8339\n\tERROR_DS_CANT_DELETE_DSA_OBJ                                              syscall.Errno = 8340\n\tERROR_DS_GENERIC_ERROR                                                    syscall.Errno = 8341\n\tERROR_DS_DSA_MUST_BE_INT_MASTER                                           syscall.Errno = 8342\n\tERROR_DS_CLASS_NOT_DSA                                                    syscall.Errno = 8343\n\tERROR_DS_INSUFF_ACCESS_RIGHTS                                             syscall.Errno = 8344\n\tERROR_DS_ILLEGAL_SUPERIOR                                                 syscall.Errno = 8345\n\tERROR_DS_ATTRIBUTE_OWNED_BY_SAM                                           syscall.Errno = 8346\n\tERROR_DS_NAME_TOO_MANY_PARTS                                              syscall.Errno = 8347\n\tERROR_DS_NAME_TOO_LONG                                                    syscall.Errno = 8348\n\tERROR_DS_NAME_VALUE_TOO_LONG                                              syscall.Errno = 8349\n\tERROR_DS_NAME_UNPARSEABLE                                                 syscall.Errno = 8350\n\tERROR_DS_NAME_TYPE_UNKNOWN                                                syscall.Errno = 8351\n\tERROR_DS_NOT_AN_OBJECT                                                    syscall.Errno = 8352\n\tERROR_DS_SEC_DESC_TOO_SHORT                                               syscall.Errno = 8353\n\tERROR_DS_SEC_DESC_INVALID                                                 syscall.Errno = 8354\n\tERROR_DS_NO_DELETED_NAME                                                  syscall.Errno = 8355\n\tERROR_DS_SUBREF_MUST_HAVE_PARENT                                          syscall.Errno = 8356\n\tERROR_DS_NCNAME_MUST_BE_NC                                                syscall.Errno = 8357\n\tERROR_DS_CANT_ADD_SYSTEM_ONLY                                             syscall.Errno = 8358\n\tERROR_DS_CLASS_MUST_BE_CONCRETE                                           syscall.Errno = 8359\n\tERROR_DS_INVALID_DMD                                                      syscall.Errno = 8360\n\tERROR_DS_OBJ_GUID_EXISTS                                                  syscall.Errno = 8361\n\tERROR_DS_NOT_ON_BACKLINK                                                  syscall.Errno = 8362\n\tERROR_DS_NO_CROSSREF_FOR_NC                                               syscall.Errno = 8363\n\tERROR_DS_SHUTTING_DOWN                                                    syscall.Errno = 8364\n\tERROR_DS_UNKNOWN_OPERATION                                                syscall.Errno = 8365\n\tERROR_DS_INVALID_ROLE_OWNER                                               syscall.Errno = 8366\n\tERROR_DS_COULDNT_CONTACT_FSMO                                             syscall.Errno = 8367\n\tERROR_DS_CROSS_NC_DN_RENAME                                               syscall.Errno = 8368\n\tERROR_DS_CANT_MOD_SYSTEM_ONLY                                             syscall.Errno = 8369\n\tERROR_DS_REPLICATOR_ONLY                                                  syscall.Errno = 8370\n\tERROR_DS_OBJ_CLASS_NOT_DEFINED                                            syscall.Errno = 8371\n\tERROR_DS_OBJ_CLASS_NOT_SUBCLASS                                           syscall.Errno = 8372\n\tERROR_DS_NAME_REFERENCE_INVALID                                           syscall.Errno = 8373\n\tERROR_DS_CROSS_REF_EXISTS                                                 syscall.Errno = 8374\n\tERROR_DS_CANT_DEL_MASTER_CROSSREF                                         syscall.Errno = 8375\n\tERROR_DS_SUBTREE_NOTIFY_NOT_NC_HEAD                                       syscall.Errno = 8376\n\tERROR_DS_NOTIFY_FILTER_TOO_COMPLEX                                        syscall.Errno = 8377\n\tERROR_DS_DUP_RDN                                                          syscall.Errno = 8378\n\tERROR_DS_DUP_OID                                                          syscall.Errno = 8379\n\tERROR_DS_DUP_MAPI_ID                                                      syscall.Errno = 8380\n\tERROR_DS_DUP_SCHEMA_ID_GUID                                               syscall.Errno = 8381\n\tERROR_DS_DUP_LDAP_DISPLAY_NAME                                            syscall.Errno = 8382\n\tERROR_DS_SEMANTIC_ATT_TEST                                                syscall.Errno = 8383\n\tERROR_DS_SYNTAX_MISMATCH                                                  syscall.Errno = 8384\n\tERROR_DS_EXISTS_IN_MUST_HAVE                                              syscall.Errno = 8385\n\tERROR_DS_EXISTS_IN_MAY_HAVE                                               syscall.Errno = 8386\n\tERROR_DS_NONEXISTENT_MAY_HAVE                                             syscall.Errno = 8387\n\tERROR_DS_NONEXISTENT_MUST_HAVE                                            syscall.Errno = 8388\n\tERROR_DS_AUX_CLS_TEST_FAIL                                                syscall.Errno = 8389\n\tERROR_DS_NONEXISTENT_POSS_SUP                                             syscall.Errno = 8390\n\tERROR_DS_SUB_CLS_TEST_FAIL                                                syscall.Errno = 8391\n\tERROR_DS_BAD_RDN_ATT_ID_SYNTAX                                            syscall.Errno = 8392\n\tERROR_DS_EXISTS_IN_AUX_CLS                                                syscall.Errno = 8393\n\tERROR_DS_EXISTS_IN_SUB_CLS                                                syscall.Errno = 8394\n\tERROR_DS_EXISTS_IN_POSS_SUP                                               syscall.Errno = 8395\n\tERROR_DS_RECALCSCHEMA_FAILED                                              syscall.Errno = 8396\n\tERROR_DS_TREE_DELETE_NOT_FINISHED                                         syscall.Errno = 8397\n\tERROR_DS_CANT_DELETE                                                      syscall.Errno = 8398\n\tERROR_DS_ATT_SCHEMA_REQ_ID                                                syscall.Errno = 8399\n\tERROR_DS_BAD_ATT_SCHEMA_SYNTAX                                            syscall.Errno = 8400\n\tERROR_DS_CANT_CACHE_ATT                                                   syscall.Errno = 8401\n\tERROR_DS_CANT_CACHE_CLASS                                                 syscall.Errno = 8402\n\tERROR_DS_CANT_REMOVE_ATT_CACHE                                            syscall.Errno = 8403\n\tERROR_DS_CANT_REMOVE_CLASS_CACHE                                          syscall.Errno = 8404\n\tERROR_DS_CANT_RETRIEVE_DN                                                 syscall.Errno = 8405\n\tERROR_DS_MISSING_SUPREF                                                   syscall.Errno = 8406\n\tERROR_DS_CANT_RETRIEVE_INSTANCE                                           syscall.Errno = 8407\n\tERROR_DS_CODE_INCONSISTENCY                                               syscall.Errno = 8408\n\tERROR_DS_DATABASE_ERROR                                                   syscall.Errno = 8409\n\tERROR_DS_GOVERNSID_MISSING                                                syscall.Errno = 8410\n\tERROR_DS_MISSING_EXPECTED_ATT                                             syscall.Errno = 8411\n\tERROR_DS_NCNAME_MISSING_CR_REF                                            syscall.Errno = 8412\n\tERROR_DS_SECURITY_CHECKING_ERROR                                          syscall.Errno = 8413\n\tERROR_DS_SCHEMA_NOT_LOADED                                                syscall.Errno = 8414\n\tERROR_DS_SCHEMA_ALLOC_FAILED                                              syscall.Errno = 8415\n\tERROR_DS_ATT_SCHEMA_REQ_SYNTAX                                            syscall.Errno = 8416\n\tERROR_DS_GCVERIFY_ERROR                                                   syscall.Errno = 8417\n\tERROR_DS_DRA_SCHEMA_MISMATCH                                              syscall.Errno = 8418\n\tERROR_DS_CANT_FIND_DSA_OBJ                                                syscall.Errno = 8419\n\tERROR_DS_CANT_FIND_EXPECTED_NC                                            syscall.Errno = 8420\n\tERROR_DS_CANT_FIND_NC_IN_CACHE                                            syscall.Errno = 8421\n\tERROR_DS_CANT_RETRIEVE_CHILD                                              syscall.Errno = 8422\n\tERROR_DS_SECURITY_ILLEGAL_MODIFY                                          syscall.Errno = 8423\n\tERROR_DS_CANT_REPLACE_HIDDEN_REC                                          syscall.Errno = 8424\n\tERROR_DS_BAD_HIERARCHY_FILE                                               syscall.Errno = 8425\n\tERROR_DS_BUILD_HIERARCHY_TABLE_FAILED                                     syscall.Errno = 8426\n\tERROR_DS_CONFIG_PARAM_MISSING                                             syscall.Errno = 8427\n\tERROR_DS_COUNTING_AB_INDICES_FAILED                                       syscall.Errno = 8428\n\tERROR_DS_HIERARCHY_TABLE_MALLOC_FAILED                                    syscall.Errno = 8429\n\tERROR_DS_INTERNAL_FAILURE                                                 syscall.Errno = 8430\n\tERROR_DS_UNKNOWN_ERROR                                                    syscall.Errno = 8431\n\tERROR_DS_ROOT_REQUIRES_CLASS_TOP                                          syscall.Errno = 8432\n\tERROR_DS_REFUSING_FSMO_ROLES                                              syscall.Errno = 8433\n\tERROR_DS_MISSING_FSMO_SETTINGS                                            syscall.Errno = 8434\n\tERROR_DS_UNABLE_TO_SURRENDER_ROLES                                        syscall.Errno = 8435\n\tERROR_DS_DRA_GENERIC                                                      syscall.Errno = 8436\n\tERROR_DS_DRA_INVALID_PARAMETER                                            syscall.Errno = 8437\n\tERROR_DS_DRA_BUSY                                                         syscall.Errno = 8438\n\tERROR_DS_DRA_BAD_DN                                                       syscall.Errno = 8439\n\tERROR_DS_DRA_BAD_NC                                                       syscall.Errno = 8440\n\tERROR_DS_DRA_DN_EXISTS                                                    syscall.Errno = 8441\n\tERROR_DS_DRA_INTERNAL_ERROR                                               syscall.Errno = 8442\n\tERROR_DS_DRA_INCONSISTENT_DIT                                             syscall.Errno = 8443\n\tERROR_DS_DRA_CONNECTION_FAILED                                            syscall.Errno = 8444\n\tERROR_DS_DRA_BAD_INSTANCE_TYPE                                            syscall.Errno = 8445\n\tERROR_DS_DRA_OUT_OF_MEM                                                   syscall.Errno = 8446\n\tERROR_DS_DRA_MAIL_PROBLEM                                                 syscall.Errno = 8447\n\tERROR_DS_DRA_REF_ALREADY_EXISTS                                           syscall.Errno = 8448\n\tERROR_DS_DRA_REF_NOT_FOUND                                                syscall.Errno = 8449\n\tERROR_DS_DRA_OBJ_IS_REP_SOURCE                                            syscall.Errno = 8450\n\tERROR_DS_DRA_DB_ERROR                                                     syscall.Errno = 8451\n\tERROR_DS_DRA_NO_REPLICA                                                   syscall.Errno = 8452\n\tERROR_DS_DRA_ACCESS_DENIED                                                syscall.Errno = 8453\n\tERROR_DS_DRA_NOT_SUPPORTED                                                syscall.Errno = 8454\n\tERROR_DS_DRA_RPC_CANCELLED                                                syscall.Errno = 8455\n\tERROR_DS_DRA_SOURCE_DISABLED                                              syscall.Errno = 8456\n\tERROR_DS_DRA_SINK_DISABLED                                                syscall.Errno = 8457\n\tERROR_DS_DRA_NAME_COLLISION                                               syscall.Errno = 8458\n\tERROR_DS_DRA_SOURCE_REINSTALLED                                           syscall.Errno = 8459\n\tERROR_DS_DRA_MISSING_PARENT                                               syscall.Errno = 8460\n\tERROR_DS_DRA_PREEMPTED                                                    syscall.Errno = 8461\n\tERROR_DS_DRA_ABANDON_SYNC                                                 syscall.Errno = 8462\n\tERROR_DS_DRA_SHUTDOWN                                                     syscall.Errno = 8463\n\tERROR_DS_DRA_INCOMPATIBLE_PARTIAL_SET                                     syscall.Errno = 8464\n\tERROR_DS_DRA_SOURCE_IS_PARTIAL_REPLICA                                    syscall.Errno = 8465\n\tERROR_DS_DRA_EXTN_CONNECTION_FAILED                                       syscall.Errno = 8466\n\tERROR_DS_INSTALL_SCHEMA_MISMATCH                                          syscall.Errno = 8467\n\tERROR_DS_DUP_LINK_ID                                                      syscall.Errno = 8468\n\tERROR_DS_NAME_ERROR_RESOLVING                                             syscall.Errno = 8469\n\tERROR_DS_NAME_ERROR_NOT_FOUND                                             syscall.Errno = 8470\n\tERROR_DS_NAME_ERROR_NOT_UNIQUE                                            syscall.Errno = 8471\n\tERROR_DS_NAME_ERROR_NO_MAPPING                                            syscall.Errno = 8472\n\tERROR_DS_NAME_ERROR_DOMAIN_ONLY                                           syscall.Errno = 8473\n\tERROR_DS_NAME_ERROR_NO_SYNTACTICAL_MAPPING                                syscall.Errno = 8474\n\tERROR_DS_CONSTRUCTED_ATT_MOD                                              syscall.Errno = 8475\n\tERROR_DS_WRONG_OM_OBJ_CLASS                                               syscall.Errno = 8476\n\tERROR_DS_DRA_REPL_PENDING                                                 syscall.Errno = 8477\n\tERROR_DS_DS_REQUIRED                                                      syscall.Errno = 8478\n\tERROR_DS_INVALID_LDAP_DISPLAY_NAME                                        syscall.Errno = 8479\n\tERROR_DS_NON_BASE_SEARCH                                                  syscall.Errno = 8480\n\tERROR_DS_CANT_RETRIEVE_ATTS                                               syscall.Errno = 8481\n\tERROR_DS_BACKLINK_WITHOUT_LINK                                            syscall.Errno = 8482\n\tERROR_DS_EPOCH_MISMATCH                                                   syscall.Errno = 8483\n\tERROR_DS_SRC_NAME_MISMATCH                                                syscall.Errno = 8484\n\tERROR_DS_SRC_AND_DST_NC_IDENTICAL                                         syscall.Errno = 8485\n\tERROR_DS_DST_NC_MISMATCH                                                  syscall.Errno = 8486\n\tERROR_DS_NOT_AUTHORITIVE_FOR_DST_NC                                       syscall.Errno = 8487\n\tERROR_DS_SRC_GUID_MISMATCH                                                syscall.Errno = 8488\n\tERROR_DS_CANT_MOVE_DELETED_OBJECT                                         syscall.Errno = 8489\n\tERROR_DS_PDC_OPERATION_IN_PROGRESS                                        syscall.Errno = 8490\n\tERROR_DS_CROSS_DOMAIN_CLEANUP_REQD                                        syscall.Errno = 8491\n\tERROR_DS_ILLEGAL_XDOM_MOVE_OPERATION                                      syscall.Errno = 8492\n\tERROR_DS_CANT_WITH_ACCT_GROUP_MEMBERSHPS                                  syscall.Errno = 8493\n\tERROR_DS_NC_MUST_HAVE_NC_PARENT                                           syscall.Errno = 8494\n\tERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE                                        syscall.Errno = 8495\n\tERROR_DS_DST_DOMAIN_NOT_NATIVE                                            syscall.Errno = 8496\n\tERROR_DS_MISSING_INFRASTRUCTURE_CONTAINER                                 syscall.Errno = 8497\n\tERROR_DS_CANT_MOVE_ACCOUNT_GROUP                                          syscall.Errno = 8498\n\tERROR_DS_CANT_MOVE_RESOURCE_GROUP                                         syscall.Errno = 8499\n\tERROR_DS_INVALID_SEARCH_FLAG                                              syscall.Errno = 8500\n\tERROR_DS_NO_TREE_DELETE_ABOVE_NC                                          syscall.Errno = 8501\n\tERROR_DS_COULDNT_LOCK_TREE_FOR_DELETE                                     syscall.Errno = 8502\n\tERROR_DS_COULDNT_IDENTIFY_OBJECTS_FOR_TREE_DELETE                         syscall.Errno = 8503\n\tERROR_DS_SAM_INIT_FAILURE                                                 syscall.Errno = 8504\n\tERROR_DS_SENSITIVE_GROUP_VIOLATION                                        syscall.Errno = 8505\n\tERROR_DS_CANT_MOD_PRIMARYGROUPID                                          syscall.Errno = 8506\n\tERROR_DS_ILLEGAL_BASE_SCHEMA_MOD                                          syscall.Errno = 8507\n\tERROR_DS_NONSAFE_SCHEMA_CHANGE                                            syscall.Errno = 8508\n\tERROR_DS_SCHEMA_UPDATE_DISALLOWED                                         syscall.Errno = 8509\n\tERROR_DS_CANT_CREATE_UNDER_SCHEMA                                         syscall.Errno = 8510\n\tERROR_DS_INSTALL_NO_SRC_SCH_VERSION                                       syscall.Errno = 8511\n\tERROR_DS_INSTALL_NO_SCH_VERSION_IN_INIFILE                                syscall.Errno = 8512\n\tERROR_DS_INVALID_GROUP_TYPE                                               syscall.Errno = 8513\n\tERROR_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN                               syscall.Errno = 8514\n\tERROR_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN                                syscall.Errno = 8515\n\tERROR_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER                                    syscall.Errno = 8516\n\tERROR_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER                                syscall.Errno = 8517\n\tERROR_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER                                 syscall.Errno = 8518\n\tERROR_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER                              syscall.Errno = 8519\n\tERROR_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER                         syscall.Errno = 8520\n\tERROR_DS_HAVE_PRIMARY_MEMBERS                                             syscall.Errno = 8521\n\tERROR_DS_STRING_SD_CONVERSION_FAILED                                      syscall.Errno = 8522\n\tERROR_DS_NAMING_MASTER_GC                                                 syscall.Errno = 8523\n\tERROR_DS_DNS_LOOKUP_FAILURE                                               syscall.Errno = 8524\n\tERROR_DS_COULDNT_UPDATE_SPNS                                              syscall.Errno = 8525\n\tERROR_DS_CANT_RETRIEVE_SD                                                 syscall.Errno = 8526\n\tERROR_DS_KEY_NOT_UNIQUE                                                   syscall.Errno = 8527\n\tERROR_DS_WRONG_LINKED_ATT_SYNTAX                                          syscall.Errno = 8528\n\tERROR_DS_SAM_NEED_BOOTKEY_PASSWORD                                        syscall.Errno = 8529\n\tERROR_DS_SAM_NEED_BOOTKEY_FLOPPY                                          syscall.Errno = 8530\n\tERROR_DS_CANT_START                                                       syscall.Errno = 8531\n\tERROR_DS_INIT_FAILURE                                                     syscall.Errno = 8532\n\tERROR_DS_NO_PKT_PRIVACY_ON_CONNECTION                                     syscall.Errno = 8533\n\tERROR_DS_SOURCE_DOMAIN_IN_FOREST                                          syscall.Errno = 8534\n\tERROR_DS_DESTINATION_DOMAIN_NOT_IN_FOREST                                 syscall.Errno = 8535\n\tERROR_DS_DESTINATION_AUDITING_NOT_ENABLED                                 syscall.Errno = 8536\n\tERROR_DS_CANT_FIND_DC_FOR_SRC_DOMAIN                                      syscall.Errno = 8537\n\tERROR_DS_SRC_OBJ_NOT_GROUP_OR_USER                                        syscall.Errno = 8538\n\tERROR_DS_SRC_SID_EXISTS_IN_FOREST                                         syscall.Errno = 8539\n\tERROR_DS_SRC_AND_DST_OBJECT_CLASS_MISMATCH                                syscall.Errno = 8540\n\tERROR_SAM_INIT_FAILURE                                                    syscall.Errno = 8541\n\tERROR_DS_DRA_SCHEMA_INFO_SHIP                                             syscall.Errno = 8542\n\tERROR_DS_DRA_SCHEMA_CONFLICT                                              syscall.Errno = 8543\n\tERROR_DS_DRA_EARLIER_SCHEMA_CONFLICT                                      syscall.Errno = 8544\n\tERROR_DS_DRA_OBJ_NC_MISMATCH                                              syscall.Errno = 8545\n\tERROR_DS_NC_STILL_HAS_DSAS                                                syscall.Errno = 8546\n\tERROR_DS_GC_REQUIRED                                                      syscall.Errno = 8547\n\tERROR_DS_LOCAL_MEMBER_OF_LOCAL_ONLY                                       syscall.Errno = 8548\n\tERROR_DS_NO_FPO_IN_UNIVERSAL_GROUPS                                       syscall.Errno = 8549\n\tERROR_DS_CANT_ADD_TO_GC                                                   syscall.Errno = 8550\n\tERROR_DS_NO_CHECKPOINT_WITH_PDC                                           syscall.Errno = 8551\n\tERROR_DS_SOURCE_AUDITING_NOT_ENABLED                                      syscall.Errno = 8552\n\tERROR_DS_CANT_CREATE_IN_NONDOMAIN_NC                                      syscall.Errno = 8553\n\tERROR_DS_INVALID_NAME_FOR_SPN                                             syscall.Errno = 8554\n\tERROR_DS_FILTER_USES_CONTRUCTED_ATTRS                                     syscall.Errno = 8555\n\tERROR_DS_UNICODEPWD_NOT_IN_QUOTES                                         syscall.Errno = 8556\n\tERROR_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED                                   syscall.Errno = 8557\n\tERROR_DS_MUST_BE_RUN_ON_DST_DC                                            syscall.Errno = 8558\n\tERROR_DS_SRC_DC_MUST_BE_SP4_OR_GREATER                                    syscall.Errno = 8559\n\tERROR_DS_CANT_TREE_DELETE_CRITICAL_OBJ                                    syscall.Errno = 8560\n\tERROR_DS_INIT_FAILURE_CONSOLE                                             syscall.Errno = 8561\n\tERROR_DS_SAM_INIT_FAILURE_CONSOLE                                         syscall.Errno = 8562\n\tERROR_DS_FOREST_VERSION_TOO_HIGH                                          syscall.Errno = 8563\n\tERROR_DS_DOMAIN_VERSION_TOO_HIGH                                          syscall.Errno = 8564\n\tERROR_DS_FOREST_VERSION_TOO_LOW                                           syscall.Errno = 8565\n\tERROR_DS_DOMAIN_VERSION_TOO_LOW                                           syscall.Errno = 8566\n\tERROR_DS_INCOMPATIBLE_VERSION                                             syscall.Errno = 8567\n\tERROR_DS_LOW_DSA_VERSION                                                  syscall.Errno = 8568\n\tERROR_DS_NO_BEHAVIOR_VERSION_IN_MIXEDDOMAIN                               syscall.Errno = 8569\n\tERROR_DS_NOT_SUPPORTED_SORT_ORDER                                         syscall.Errno = 8570\n\tERROR_DS_NAME_NOT_UNIQUE                                                  syscall.Errno = 8571\n\tERROR_DS_MACHINE_ACCOUNT_CREATED_PRENT4                                   syscall.Errno = 8572\n\tERROR_DS_OUT_OF_VERSION_STORE                                             syscall.Errno = 8573\n\tERROR_DS_INCOMPATIBLE_CONTROLS_USED                                       syscall.Errno = 8574\n\tERROR_DS_NO_REF_DOMAIN                                                    syscall.Errno = 8575\n\tERROR_DS_RESERVED_LINK_ID                                                 syscall.Errno = 8576\n\tERROR_DS_LINK_ID_NOT_AVAILABLE                                            syscall.Errno = 8577\n\tERROR_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER                                    syscall.Errno = 8578\n\tERROR_DS_MODIFYDN_DISALLOWED_BY_INSTANCE_TYPE                             syscall.Errno = 8579\n\tERROR_DS_NO_OBJECT_MOVE_IN_SCHEMA_NC                                      syscall.Errno = 8580\n\tERROR_DS_MODIFYDN_DISALLOWED_BY_FLAG                                      syscall.Errno = 8581\n\tERROR_DS_MODIFYDN_WRONG_GRANDPARENT                                       syscall.Errno = 8582\n\tERROR_DS_NAME_ERROR_TRUST_REFERRAL                                        syscall.Errno = 8583\n\tERROR_NOT_SUPPORTED_ON_STANDARD_SERVER                                    syscall.Errno = 8584\n\tERROR_DS_CANT_ACCESS_REMOTE_PART_OF_AD                                    syscall.Errno = 8585\n\tERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE_V2                                     syscall.Errno = 8586\n\tERROR_DS_THREAD_LIMIT_EXCEEDED                                            syscall.Errno = 8587\n\tERROR_DS_NOT_CLOSEST                                                      syscall.Errno = 8588\n\tERROR_DS_CANT_DERIVE_SPN_WITHOUT_SERVER_REF                               syscall.Errno = 8589\n\tERROR_DS_SINGLE_USER_MODE_FAILED                                          syscall.Errno = 8590\n\tERROR_DS_NTDSCRIPT_SYNTAX_ERROR                                           syscall.Errno = 8591\n\tERROR_DS_NTDSCRIPT_PROCESS_ERROR                                          syscall.Errno = 8592\n\tERROR_DS_DIFFERENT_REPL_EPOCHS                                            syscall.Errno = 8593\n\tERROR_DS_DRS_EXTENSIONS_CHANGED                                           syscall.Errno = 8594\n\tERROR_DS_REPLICA_SET_CHANGE_NOT_ALLOWED_ON_DISABLED_CR                    syscall.Errno = 8595\n\tERROR_DS_NO_MSDS_INTID                                                    syscall.Errno = 8596\n\tERROR_DS_DUP_MSDS_INTID                                                   syscall.Errno = 8597\n\tERROR_DS_EXISTS_IN_RDNATTID                                               syscall.Errno = 8598\n\tERROR_DS_AUTHORIZATION_FAILED                                             syscall.Errno = 8599\n\tERROR_DS_INVALID_SCRIPT                                                   syscall.Errno = 8600\n\tERROR_DS_REMOTE_CROSSREF_OP_FAILED                                        syscall.Errno = 8601\n\tERROR_DS_CROSS_REF_BUSY                                                   syscall.Errno = 8602\n\tERROR_DS_CANT_DERIVE_SPN_FOR_DELETED_DOMAIN                               syscall.Errno = 8603\n\tERROR_DS_CANT_DEMOTE_WITH_WRITEABLE_NC                                    syscall.Errno = 8604\n\tERROR_DS_DUPLICATE_ID_FOUND                                               syscall.Errno = 8605\n\tERROR_DS_INSUFFICIENT_ATTR_TO_CREATE_OBJECT                               syscall.Errno = 8606\n\tERROR_DS_GROUP_CONVERSION_ERROR                                           syscall.Errno = 8607\n\tERROR_DS_CANT_MOVE_APP_BASIC_GROUP                                        syscall.Errno = 8608\n\tERROR_DS_CANT_MOVE_APP_QUERY_GROUP                                        syscall.Errno = 8609\n\tERROR_DS_ROLE_NOT_VERIFIED                                                syscall.Errno = 8610\n\tERROR_DS_WKO_CONTAINER_CANNOT_BE_SPECIAL                                  syscall.Errno = 8611\n\tERROR_DS_DOMAIN_RENAME_IN_PROGRESS                                        syscall.Errno = 8612\n\tERROR_DS_EXISTING_AD_CHILD_NC                                             syscall.Errno = 8613\n\tERROR_DS_REPL_LIFETIME_EXCEEDED                                           syscall.Errno = 8614\n\tERROR_DS_DISALLOWED_IN_SYSTEM_CONTAINER                                   syscall.Errno = 8615\n\tERROR_DS_LDAP_SEND_QUEUE_FULL                                             syscall.Errno = 8616\n\tERROR_DS_DRA_OUT_SCHEDULE_WINDOW                                          syscall.Errno = 8617\n\tERROR_DS_POLICY_NOT_KNOWN                                                 syscall.Errno = 8618\n\tERROR_NO_SITE_SETTINGS_OBJECT                                             syscall.Errno = 8619\n\tERROR_NO_SECRETS                                                          syscall.Errno = 8620\n\tERROR_NO_WRITABLE_DC_FOUND                                                syscall.Errno = 8621\n\tERROR_DS_NO_SERVER_OBJECT                                                 syscall.Errno = 8622\n\tERROR_DS_NO_NTDSA_OBJECT                                                  syscall.Errno = 8623\n\tERROR_DS_NON_ASQ_SEARCH                                                   syscall.Errno = 8624\n\tERROR_DS_AUDIT_FAILURE                                                    syscall.Errno = 8625\n\tERROR_DS_INVALID_SEARCH_FLAG_SUBTREE                                      syscall.Errno = 8626\n\tERROR_DS_INVALID_SEARCH_FLAG_TUPLE                                        syscall.Errno = 8627\n\tERROR_DS_HIERARCHY_TABLE_TOO_DEEP                                         syscall.Errno = 8628\n\tERROR_DS_DRA_CORRUPT_UTD_VECTOR                                           syscall.Errno = 8629\n\tERROR_DS_DRA_SECRETS_DENIED                                               syscall.Errno = 8630\n\tERROR_DS_RESERVED_MAPI_ID                                                 syscall.Errno = 8631\n\tERROR_DS_MAPI_ID_NOT_AVAILABLE                                            syscall.Errno = 8632\n\tERROR_DS_DRA_MISSING_KRBTGT_SECRET                                        syscall.Errno = 8633\n\tERROR_DS_DOMAIN_NAME_EXISTS_IN_FOREST                                     syscall.Errno = 8634\n\tERROR_DS_FLAT_NAME_EXISTS_IN_FOREST                                       syscall.Errno = 8635\n\tERROR_INVALID_USER_PRINCIPAL_NAME                                         syscall.Errno = 8636\n\tERROR_DS_OID_MAPPED_GROUP_CANT_HAVE_MEMBERS                               syscall.Errno = 8637\n\tERROR_DS_OID_NOT_FOUND                                                    syscall.Errno = 8638\n\tERROR_DS_DRA_RECYCLED_TARGET                                              syscall.Errno = 8639\n\tERROR_DS_DISALLOWED_NC_REDIRECT                                           syscall.Errno = 8640\n\tERROR_DS_HIGH_ADLDS_FFL                                                   syscall.Errno = 8641\n\tERROR_DS_HIGH_DSA_VERSION                                                 syscall.Errno = 8642\n\tERROR_DS_LOW_ADLDS_FFL                                                    syscall.Errno = 8643\n\tERROR_DOMAIN_SID_SAME_AS_LOCAL_WORKSTATION                                syscall.Errno = 8644\n\tERROR_DS_UNDELETE_SAM_VALIDATION_FAILED                                   syscall.Errno = 8645\n\tERROR_INCORRECT_ACCOUNT_TYPE                                              syscall.Errno = 8646\n\tERROR_DS_SPN_VALUE_NOT_UNIQUE_IN_FOREST                                   syscall.Errno = 8647\n\tERROR_DS_UPN_VALUE_NOT_UNIQUE_IN_FOREST                                   syscall.Errno = 8648\n\tERROR_DS_MISSING_FOREST_TRUST                                             syscall.Errno = 8649\n\tERROR_DS_VALUE_KEY_NOT_UNIQUE                                             syscall.Errno = 8650\n\tDNS_ERROR_RESPONSE_CODES_BASE                                             syscall.Errno = 9000\n\tDNS_ERROR_RCODE_NO_ERROR                                                                = ERROR_SUCCESS\n\tDNS_ERROR_MASK                                                            syscall.Errno = 0x00002328\n\tDNS_ERROR_RCODE_FORMAT_ERROR                                              syscall.Errno = 9001\n\tDNS_ERROR_RCODE_SERVER_FAILURE                                            syscall.Errno = 9002\n\tDNS_ERROR_RCODE_NAME_ERROR                                                syscall.Errno = 9003\n\tDNS_ERROR_RCODE_NOT_IMPLEMENTED                                           syscall.Errno = 9004\n\tDNS_ERROR_RCODE_REFUSED                                                   syscall.Errno = 9005\n\tDNS_ERROR_RCODE_YXDOMAIN                                                  syscall.Errno = 9006\n\tDNS_ERROR_RCODE_YXRRSET                                                   syscall.Errno = 9007\n\tDNS_ERROR_RCODE_NXRRSET                                                   syscall.Errno = 9008\n\tDNS_ERROR_RCODE_NOTAUTH                                                   syscall.Errno = 9009\n\tDNS_ERROR_RCODE_NOTZONE                                                   syscall.Errno = 9010\n\tDNS_ERROR_RCODE_BADSIG                                                    syscall.Errno = 9016\n\tDNS_ERROR_RCODE_BADKEY                                                    syscall.Errno = 9017\n\tDNS_ERROR_RCODE_BADTIME                                                   syscall.Errno = 9018\n\tDNS_ERROR_RCODE_LAST                                                                    = DNS_ERROR_RCODE_BADTIME\n\tDNS_ERROR_DNSSEC_BASE                                                     syscall.Errno = 9100\n\tDNS_ERROR_KEYMASTER_REQUIRED                                              syscall.Errno = 9101\n\tDNS_ERROR_NOT_ALLOWED_ON_SIGNED_ZONE                                      syscall.Errno = 9102\n\tDNS_ERROR_NSEC3_INCOMPATIBLE_WITH_RSA_SHA1                                syscall.Errno = 9103\n\tDNS_ERROR_NOT_ENOUGH_SIGNING_KEY_DESCRIPTORS                              syscall.Errno = 9104\n\tDNS_ERROR_UNSUPPORTED_ALGORITHM                                           syscall.Errno = 9105\n\tDNS_ERROR_INVALID_KEY_SIZE                                                syscall.Errno = 9106\n\tDNS_ERROR_SIGNING_KEY_NOT_ACCESSIBLE                                      syscall.Errno = 9107\n\tDNS_ERROR_KSP_DOES_NOT_SUPPORT_PROTECTION                                 syscall.Errno = 9108\n\tDNS_ERROR_UNEXPECTED_DATA_PROTECTION_ERROR                                syscall.Errno = 9109\n\tDNS_ERROR_UNEXPECTED_CNG_ERROR                                            syscall.Errno = 9110\n\tDNS_ERROR_UNKNOWN_SIGNING_PARAMETER_VERSION                               syscall.Errno = 9111\n\tDNS_ERROR_KSP_NOT_ACCESSIBLE                                              syscall.Errno = 9112\n\tDNS_ERROR_TOO_MANY_SKDS                                                   syscall.Errno = 9113\n\tDNS_ERROR_INVALID_ROLLOVER_PERIOD                                         syscall.Errno = 9114\n\tDNS_ERROR_INVALID_INITIAL_ROLLOVER_OFFSET                                 syscall.Errno = 9115\n\tDNS_ERROR_ROLLOVER_IN_PROGRESS                                            syscall.Errno = 9116\n\tDNS_ERROR_STANDBY_KEY_NOT_PRESENT                                         syscall.Errno = 9117\n\tDNS_ERROR_NOT_ALLOWED_ON_ZSK                                              syscall.Errno = 9118\n\tDNS_ERROR_NOT_ALLOWED_ON_ACTIVE_SKD                                       syscall.Errno = 9119\n\tDNS_ERROR_ROLLOVER_ALREADY_QUEUED                                         syscall.Errno = 9120\n\tDNS_ERROR_NOT_ALLOWED_ON_UNSIGNED_ZONE                                    syscall.Errno = 9121\n\tDNS_ERROR_BAD_KEYMASTER                                                   syscall.Errno = 9122\n\tDNS_ERROR_INVALID_SIGNATURE_VALIDITY_PERIOD                               syscall.Errno = 9123\n\tDNS_ERROR_INVALID_NSEC3_ITERATION_COUNT                                   syscall.Errno = 9124\n\tDNS_ERROR_DNSSEC_IS_DISABLED                                              syscall.Errno = 9125\n\tDNS_ERROR_INVALID_XML                                                     syscall.Errno = 9126\n\tDNS_ERROR_NO_VALID_TRUST_ANCHORS                                          syscall.Errno = 9127\n\tDNS_ERROR_ROLLOVER_NOT_POKEABLE                                           syscall.Errno = 9128\n\tDNS_ERROR_NSEC3_NAME_COLLISION                                            syscall.Errno = 9129\n\tDNS_ERROR_NSEC_INCOMPATIBLE_WITH_NSEC3_RSA_SHA1                           syscall.Errno = 9130\n\tDNS_ERROR_PACKET_FMT_BASE                                                 syscall.Errno = 9500\n\tDNS_INFO_NO_RECORDS                                                       syscall.Errno = 9501\n\tDNS_ERROR_BAD_PACKET                                                      syscall.Errno = 9502\n\tDNS_ERROR_NO_PACKET                                                       syscall.Errno = 9503\n\tDNS_ERROR_RCODE                                                           syscall.Errno = 9504\n\tDNS_ERROR_UNSECURE_PACKET                                                 syscall.Errno = 9505\n\tDNS_STATUS_PACKET_UNSECURE                                                              = DNS_ERROR_UNSECURE_PACKET\n\tDNS_REQUEST_PENDING                                                       syscall.Errno = 9506\n\tDNS_ERROR_NO_MEMORY                                                                     = ERROR_OUTOFMEMORY\n\tDNS_ERROR_INVALID_NAME                                                                  = ERROR_INVALID_NAME\n\tDNS_ERROR_INVALID_DATA                                                                  = ERROR_INVALID_DATA\n\tDNS_ERROR_GENERAL_API_BASE                                                syscall.Errno = 9550\n\tDNS_ERROR_INVALID_TYPE                                                    syscall.Errno = 9551\n\tDNS_ERROR_INVALID_IP_ADDRESS                                              syscall.Errno = 9552\n\tDNS_ERROR_INVALID_PROPERTY                                                syscall.Errno = 9553\n\tDNS_ERROR_TRY_AGAIN_LATER                                                 syscall.Errno = 9554\n\tDNS_ERROR_NOT_UNIQUE                                                      syscall.Errno = 9555\n\tDNS_ERROR_NON_RFC_NAME                                                    syscall.Errno = 9556\n\tDNS_STATUS_FQDN                                                           syscall.Errno = 9557\n\tDNS_STATUS_DOTTED_NAME                                                    syscall.Errno = 9558\n\tDNS_STATUS_SINGLE_PART_NAME                                               syscall.Errno = 9559\n\tDNS_ERROR_INVALID_NAME_CHAR                                               syscall.Errno = 9560\n\tDNS_ERROR_NUMERIC_NAME                                                    syscall.Errno = 9561\n\tDNS_ERROR_NOT_ALLOWED_ON_ROOT_SERVER                                      syscall.Errno = 9562\n\tDNS_ERROR_NOT_ALLOWED_UNDER_DELEGATION                                    syscall.Errno = 9563\n\tDNS_ERROR_CANNOT_FIND_ROOT_HINTS                                          syscall.Errno = 9564\n\tDNS_ERROR_INCONSISTENT_ROOT_HINTS                                         syscall.Errno = 9565\n\tDNS_ERROR_DWORD_VALUE_TOO_SMALL                                           syscall.Errno = 9566\n\tDNS_ERROR_DWORD_VALUE_TOO_LARGE                                           syscall.Errno = 9567\n\tDNS_ERROR_BACKGROUND_LOADING                                              syscall.Errno = 9568\n\tDNS_ERROR_NOT_ALLOWED_ON_RODC                                             syscall.Errno = 9569\n\tDNS_ERROR_NOT_ALLOWED_UNDER_DNAME                                         syscall.Errno = 9570\n\tDNS_ERROR_DELEGATION_REQUIRED                                             syscall.Errno = 9571\n\tDNS_ERROR_INVALID_POLICY_TABLE                                            syscall.Errno = 9572\n\tDNS_ERROR_ADDRESS_REQUIRED                                                syscall.Errno = 9573\n\tDNS_ERROR_ZONE_BASE                                                       syscall.Errno = 9600\n\tDNS_ERROR_ZONE_DOES_NOT_EXIST                                             syscall.Errno = 9601\n\tDNS_ERROR_NO_ZONE_INFO                                                    syscall.Errno = 9602\n\tDNS_ERROR_INVALID_ZONE_OPERATION                                          syscall.Errno = 9603\n\tDNS_ERROR_ZONE_CONFIGURATION_ERROR                                        syscall.Errno = 9604\n\tDNS_ERROR_ZONE_HAS_NO_SOA_RECORD                                          syscall.Errno = 9605\n\tDNS_ERROR_ZONE_HAS_NO_NS_RECORDS                                          syscall.Errno = 9606\n\tDNS_ERROR_ZONE_LOCKED                                                     syscall.Errno = 9607\n\tDNS_ERROR_ZONE_CREATION_FAILED                                            syscall.Errno = 9608\n\tDNS_ERROR_ZONE_ALREADY_EXISTS                                             syscall.Errno = 9609\n\tDNS_ERROR_AUTOZONE_ALREADY_EXISTS                                         syscall.Errno = 9610\n\tDNS_ERROR_INVALID_ZONE_TYPE                                               syscall.Errno = 9611\n\tDNS_ERROR_SECONDARY_REQUIRES_MASTER_IP                                    syscall.Errno = 9612\n\tDNS_ERROR_ZONE_NOT_SECONDARY                                              syscall.Errno = 9613\n\tDNS_ERROR_NEED_SECONDARY_ADDRESSES                                        syscall.Errno = 9614\n\tDNS_ERROR_WINS_INIT_FAILED                                                syscall.Errno = 9615\n\tDNS_ERROR_NEED_WINS_SERVERS                                               syscall.Errno = 9616\n\tDNS_ERROR_NBSTAT_INIT_FAILED                                              syscall.Errno = 9617\n\tDNS_ERROR_SOA_DELETE_INVALID                                              syscall.Errno = 9618\n\tDNS_ERROR_FORWARDER_ALREADY_EXISTS                                        syscall.Errno = 9619\n\tDNS_ERROR_ZONE_REQUIRES_MASTER_IP                                         syscall.Errno = 9620\n\tDNS_ERROR_ZONE_IS_SHUTDOWN                                                syscall.Errno = 9621\n\tDNS_ERROR_ZONE_LOCKED_FOR_SIGNING                                         syscall.Errno = 9622\n\tDNS_ERROR_DATAFILE_BASE                                                   syscall.Errno = 9650\n\tDNS_ERROR_PRIMARY_REQUIRES_DATAFILE                                       syscall.Errno = 9651\n\tDNS_ERROR_INVALID_DATAFILE_NAME                                           syscall.Errno = 9652\n\tDNS_ERROR_DATAFILE_OPEN_FAILURE                                           syscall.Errno = 9653\n\tDNS_ERROR_FILE_WRITEBACK_FAILED                                           syscall.Errno = 9654\n\tDNS_ERROR_DATAFILE_PARSING                                                syscall.Errno = 9655\n\tDNS_ERROR_DATABASE_BASE                                                   syscall.Errno = 9700\n\tDNS_ERROR_RECORD_DOES_NOT_EXIST                                           syscall.Errno = 9701\n\tDNS_ERROR_RECORD_FORMAT                                                   syscall.Errno = 9702\n\tDNS_ERROR_NODE_CREATION_FAILED                                            syscall.Errno = 9703\n\tDNS_ERROR_UNKNOWN_RECORD_TYPE                                             syscall.Errno = 9704\n\tDNS_ERROR_RECORD_TIMED_OUT                                                syscall.Errno = 9705\n\tDNS_ERROR_NAME_NOT_IN_ZONE                                                syscall.Errno = 9706\n\tDNS_ERROR_CNAME_LOOP                                                      syscall.Errno = 9707\n\tDNS_ERROR_NODE_IS_CNAME                                                   syscall.Errno = 9708\n\tDNS_ERROR_CNAME_COLLISION                                                 syscall.Errno = 9709\n\tDNS_ERROR_RECORD_ONLY_AT_ZONE_ROOT                                        syscall.Errno = 9710\n\tDNS_ERROR_RECORD_ALREADY_EXISTS                                           syscall.Errno = 9711\n\tDNS_ERROR_SECONDARY_DATA                                                  syscall.Errno = 9712\n\tDNS_ERROR_NO_CREATE_CACHE_DATA                                            syscall.Errno = 9713\n\tDNS_ERROR_NAME_DOES_NOT_EXIST                                             syscall.Errno = 9714\n\tDNS_WARNING_PTR_CREATE_FAILED                                             syscall.Errno = 9715\n\tDNS_WARNING_DOMAIN_UNDELETED                                              syscall.Errno = 9716\n\tDNS_ERROR_DS_UNAVAILABLE                                                  syscall.Errno = 9717\n\tDNS_ERROR_DS_ZONE_ALREADY_EXISTS                                          syscall.Errno = 9718\n\tDNS_ERROR_NO_BOOTFILE_IF_DS_ZONE                                          syscall.Errno = 9719\n\tDNS_ERROR_NODE_IS_DNAME                                                   syscall.Errno = 9720\n\tDNS_ERROR_DNAME_COLLISION                                                 syscall.Errno = 9721\n\tDNS_ERROR_ALIAS_LOOP                                                      syscall.Errno = 9722\n\tDNS_ERROR_OPERATION_BASE                                                  syscall.Errno = 9750\n\tDNS_INFO_AXFR_COMPLETE                                                    syscall.Errno = 9751\n\tDNS_ERROR_AXFR                                                            syscall.Errno = 9752\n\tDNS_INFO_ADDED_LOCAL_WINS                                                 syscall.Errno = 9753\n\tDNS_ERROR_SECURE_BASE                                                     syscall.Errno = 9800\n\tDNS_STATUS_CONTINUE_NEEDED                                                syscall.Errno = 9801\n\tDNS_ERROR_SETUP_BASE                                                      syscall.Errno = 9850\n\tDNS_ERROR_NO_TCPIP                                                        syscall.Errno = 9851\n\tDNS_ERROR_NO_DNS_SERVERS                                                  syscall.Errno = 9852\n\tDNS_ERROR_DP_BASE                                                         syscall.Errno = 9900\n\tDNS_ERROR_DP_DOES_NOT_EXIST                                               syscall.Errno = 9901\n\tDNS_ERROR_DP_ALREADY_EXISTS                                               syscall.Errno = 9902\n\tDNS_ERROR_DP_NOT_ENLISTED                                                 syscall.Errno = 9903\n\tDNS_ERROR_DP_ALREADY_ENLISTED                                             syscall.Errno = 9904\n\tDNS_ERROR_DP_NOT_AVAILABLE                                                syscall.Errno = 9905\n\tDNS_ERROR_DP_FSMO_ERROR                                                   syscall.Errno = 9906\n\tDNS_ERROR_RRL_NOT_ENABLED                                                 syscall.Errno = 9911\n\tDNS_ERROR_RRL_INVALID_WINDOW_SIZE                                         syscall.Errno = 9912\n\tDNS_ERROR_RRL_INVALID_IPV4_PREFIX                                         syscall.Errno = 9913\n\tDNS_ERROR_RRL_INVALID_IPV6_PREFIX                                         syscall.Errno = 9914\n\tDNS_ERROR_RRL_INVALID_TC_RATE                                             syscall.Errno = 9915\n\tDNS_ERROR_RRL_INVALID_LEAK_RATE                                           syscall.Errno = 9916\n\tDNS_ERROR_RRL_LEAK_RATE_LESSTHAN_TC_RATE                                  syscall.Errno = 9917\n\tDNS_ERROR_VIRTUALIZATION_INSTANCE_ALREADY_EXISTS                          syscall.Errno = 9921\n\tDNS_ERROR_VIRTUALIZATION_INSTANCE_DOES_NOT_EXIST                          syscall.Errno = 9922\n\tDNS_ERROR_VIRTUALIZATION_TREE_LOCKED                                      syscall.Errno = 9923\n\tDNS_ERROR_INVAILD_VIRTUALIZATION_INSTANCE_NAME                            syscall.Errno = 9924\n\tDNS_ERROR_DEFAULT_VIRTUALIZATION_INSTANCE                                 syscall.Errno = 9925\n\tDNS_ERROR_ZONESCOPE_ALREADY_EXISTS                                        syscall.Errno = 9951\n\tDNS_ERROR_ZONESCOPE_DOES_NOT_EXIST                                        syscall.Errno = 9952\n\tDNS_ERROR_DEFAULT_ZONESCOPE                                               syscall.Errno = 9953\n\tDNS_ERROR_INVALID_ZONESCOPE_NAME                                          syscall.Errno = 9954\n\tDNS_ERROR_NOT_ALLOWED_WITH_ZONESCOPES                                     syscall.Errno = 9955\n\tDNS_ERROR_LOAD_ZONESCOPE_FAILED                                           syscall.Errno = 9956\n\tDNS_ERROR_ZONESCOPE_FILE_WRITEBACK_FAILED                                 syscall.Errno = 9957\n\tDNS_ERROR_INVALID_SCOPE_NAME                                              syscall.Errno = 9958\n\tDNS_ERROR_SCOPE_DOES_NOT_EXIST                                            syscall.Errno = 9959\n\tDNS_ERROR_DEFAULT_SCOPE                                                   syscall.Errno = 9960\n\tDNS_ERROR_INVALID_SCOPE_OPERATION                                         syscall.Errno = 9961\n\tDNS_ERROR_SCOPE_LOCKED                                                    syscall.Errno = 9962\n\tDNS_ERROR_SCOPE_ALREADY_EXISTS                                            syscall.Errno = 9963\n\tDNS_ERROR_POLICY_ALREADY_EXISTS                                           syscall.Errno = 9971\n\tDNS_ERROR_POLICY_DOES_NOT_EXIST                                           syscall.Errno = 9972\n\tDNS_ERROR_POLICY_INVALID_CRITERIA                                         syscall.Errno = 9973\n\tDNS_ERROR_POLICY_INVALID_SETTINGS                                         syscall.Errno = 9974\n\tDNS_ERROR_CLIENT_SUBNET_IS_ACCESSED                                       syscall.Errno = 9975\n\tDNS_ERROR_CLIENT_SUBNET_DOES_NOT_EXIST                                    syscall.Errno = 9976\n\tDNS_ERROR_CLIENT_SUBNET_ALREADY_EXISTS                                    syscall.Errno = 9977\n\tDNS_ERROR_SUBNET_DOES_NOT_EXIST                                           syscall.Errno = 9978\n\tDNS_ERROR_SUBNET_ALREADY_EXISTS                                           syscall.Errno = 9979\n\tDNS_ERROR_POLICY_LOCKED                                                   syscall.Errno = 9980\n\tDNS_ERROR_POLICY_INVALID_WEIGHT                                           syscall.Errno = 9981\n\tDNS_ERROR_POLICY_INVALID_NAME                                             syscall.Errno = 9982\n\tDNS_ERROR_POLICY_MISSING_CRITERIA                                         syscall.Errno = 9983\n\tDNS_ERROR_INVALID_CLIENT_SUBNET_NAME                                      syscall.Errno = 9984\n\tDNS_ERROR_POLICY_PROCESSING_ORDER_INVALID                                 syscall.Errno = 9985\n\tDNS_ERROR_POLICY_SCOPE_MISSING                                            syscall.Errno = 9986\n\tDNS_ERROR_POLICY_SCOPE_NOT_ALLOWED                                        syscall.Errno = 9987\n\tDNS_ERROR_SERVERSCOPE_IS_REFERENCED                                       syscall.Errno = 9988\n\tDNS_ERROR_ZONESCOPE_IS_REFERENCED                                         syscall.Errno = 9989\n\tDNS_ERROR_POLICY_INVALID_CRITERIA_CLIENT_SUBNET                           syscall.Errno = 9990\n\tDNS_ERROR_POLICY_INVALID_CRITERIA_TRANSPORT_PROTOCOL                      syscall.Errno = 9991\n\tDNS_ERROR_POLICY_INVALID_CRITERIA_NETWORK_PROTOCOL                        syscall.Errno = 9992\n\tDNS_ERROR_POLICY_INVALID_CRITERIA_INTERFACE                               syscall.Errno = 9993\n\tDNS_ERROR_POLICY_INVALID_CRITERIA_FQDN                                    syscall.Errno = 9994\n\tDNS_ERROR_POLICY_INVALID_CRITERIA_QUERY_TYPE                              syscall.Errno = 9995\n\tDNS_ERROR_POLICY_INVALID_CRITERIA_TIME_OF_DAY                             syscall.Errno = 9996\n\tWSABASEERR                                                                syscall.Errno = 10000\n\tWSAEINTR                                                                  syscall.Errno = 10004\n\tWSAEBADF                                                                  syscall.Errno = 10009\n\tWSAEACCES                                                                 syscall.Errno = 10013\n\tWSAEFAULT                                                                 syscall.Errno = 10014\n\tWSAEINVAL                                                                 syscall.Errno = 10022\n\tWSAEMFILE                                                                 syscall.Errno = 10024\n\tWSAEWOULDBLOCK                                                            syscall.Errno = 10035\n\tWSAEINPROGRESS                                                            syscall.Errno = 10036\n\tWSAEALREADY                                                               syscall.Errno = 10037\n\tWSAENOTSOCK                                                               syscall.Errno = 10038\n\tWSAEDESTADDRREQ                                                           syscall.Errno = 10039\n\tWSAEMSGSIZE                                                               syscall.Errno = 10040\n\tWSAEPROTOTYPE                                                             syscall.Errno = 10041\n\tWSAENOPROTOOPT                                                            syscall.Errno = 10042\n\tWSAEPROTONOSUPPORT                                                        syscall.Errno = 10043\n\tWSAESOCKTNOSUPPORT                                                        syscall.Errno = 10044\n\tWSAEOPNOTSUPP                                                             syscall.Errno = 10045\n\tWSAEPFNOSUPPORT                                                           syscall.Errno = 10046\n\tWSAEAFNOSUPPORT                                                           syscall.Errno = 10047\n\tWSAEADDRINUSE                                                             syscall.Errno = 10048\n\tWSAEADDRNOTAVAIL                                                          syscall.Errno = 10049\n\tWSAENETDOWN                                                               syscall.Errno = 10050\n\tWSAENETUNREACH                                                            syscall.Errno = 10051\n\tWSAENETRESET                                                              syscall.Errno = 10052\n\tWSAECONNABORTED                                                           syscall.Errno = 10053\n\tWSAECONNRESET                                                             syscall.Errno = 10054\n\tWSAENOBUFS                                                                syscall.Errno = 10055\n\tWSAEISCONN                                                                syscall.Errno = 10056\n\tWSAENOTCONN                                                               syscall.Errno = 10057\n\tWSAESHUTDOWN                                                              syscall.Errno = 10058\n\tWSAETOOMANYREFS                                                           syscall.Errno = 10059\n\tWSAETIMEDOUT                                                              syscall.Errno = 10060\n\tWSAECONNREFUSED                                                           syscall.Errno = 10061\n\tWSAELOOP                                                                  syscall.Errno = 10062\n\tWSAENAMETOOLONG                                                           syscall.Errno = 10063\n\tWSAEHOSTDOWN                                                              syscall.Errno = 10064\n\tWSAEHOSTUNREACH                                                           syscall.Errno = 10065\n\tWSAENOTEMPTY                                                              syscall.Errno = 10066\n\tWSAEPROCLIM                                                               syscall.Errno = 10067\n\tWSAEUSERS                                                                 syscall.Errno = 10068\n\tWSAEDQUOT                                                                 syscall.Errno = 10069\n\tWSAESTALE                                                                 syscall.Errno = 10070\n\tWSAEREMOTE                                                                syscall.Errno = 10071\n\tWSASYSNOTREADY                                                            syscall.Errno = 10091\n\tWSAVERNOTSUPPORTED                                                        syscall.Errno = 10092\n\tWSANOTINITIALISED                                                         syscall.Errno = 10093\n\tWSAEDISCON                                                                syscall.Errno = 10101\n\tWSAENOMORE                                                                syscall.Errno = 10102\n\tWSAECANCELLED                                                             syscall.Errno = 10103\n\tWSAEINVALIDPROCTABLE                                                      syscall.Errno = 10104\n\tWSAEINVALIDPROVIDER                                                       syscall.Errno = 10105\n\tWSAEPROVIDERFAILEDINIT                                                    syscall.Errno = 10106\n\tWSASYSCALLFAILURE                                                         syscall.Errno = 10107\n\tWSASERVICE_NOT_FOUND                                                      syscall.Errno = 10108\n\tWSATYPE_NOT_FOUND                                                         syscall.Errno = 10109\n\tWSA_E_NO_MORE                                                             syscall.Errno = 10110\n\tWSA_E_CANCELLED                                                           syscall.Errno = 10111\n\tWSAEREFUSED                                                               syscall.Errno = 10112\n\tWSAHOST_NOT_FOUND                                                         syscall.Errno = 11001\n\tWSATRY_AGAIN                                                              syscall.Errno = 11002\n\tWSANO_RECOVERY                                                            syscall.Errno = 11003\n\tWSANO_DATA                                                                syscall.Errno = 11004\n\tWSA_QOS_RECEIVERS                                                         syscall.Errno = 11005\n\tWSA_QOS_SENDERS                                                           syscall.Errno = 11006\n\tWSA_QOS_NO_SENDERS                                                        syscall.Errno = 11007\n\tWSA_QOS_NO_RECEIVERS                                                      syscall.Errno = 11008\n\tWSA_QOS_REQUEST_CONFIRMED                                                 syscall.Errno = 11009\n\tWSA_QOS_ADMISSION_FAILURE                                                 syscall.Errno = 11010\n\tWSA_QOS_POLICY_FAILURE                                                    syscall.Errno = 11011\n\tWSA_QOS_BAD_STYLE                                                         syscall.Errno = 11012\n\tWSA_QOS_BAD_OBJECT                                                        syscall.Errno = 11013\n\tWSA_QOS_TRAFFIC_CTRL_ERROR                                                syscall.Errno = 11014\n\tWSA_QOS_GENERIC_ERROR                                                     syscall.Errno = 11015\n\tWSA_QOS_ESERVICETYPE                                                      syscall.Errno = 11016\n\tWSA_QOS_EFLOWSPEC                                                         syscall.Errno = 11017\n\tWSA_QOS_EPROVSPECBUF                                                      syscall.Errno = 11018\n\tWSA_QOS_EFILTERSTYLE                                                      syscall.Errno = 11019\n\tWSA_QOS_EFILTERTYPE                                                       syscall.Errno = 11020\n\tWSA_QOS_EFILTERCOUNT                                                      syscall.Errno = 11021\n\tWSA_QOS_EOBJLENGTH                                                        syscall.Errno = 11022\n\tWSA_QOS_EFLOWCOUNT                                                        syscall.Errno = 11023\n\tWSA_QOS_EUNKOWNPSOBJ                                                      syscall.Errno = 11024\n\tWSA_QOS_EPOLICYOBJ                                                        syscall.Errno = 11025\n\tWSA_QOS_EFLOWDESC                                                         syscall.Errno = 11026\n\tWSA_QOS_EPSFLOWSPEC                                                       syscall.Errno = 11027\n\tWSA_QOS_EPSFILTERSPEC                                                     syscall.Errno = 11028\n\tWSA_QOS_ESDMODEOBJ                                                        syscall.Errno = 11029\n\tWSA_QOS_ESHAPERATEOBJ                                                     syscall.Errno = 11030\n\tWSA_QOS_RESERVED_PETYPE                                                   syscall.Errno = 11031\n\tWSA_SECURE_HOST_NOT_FOUND                                                 syscall.Errno = 11032\n\tWSA_IPSEC_NAME_POLICY_ERROR                                               syscall.Errno = 11033\n\tERROR_IPSEC_QM_POLICY_EXISTS                                              syscall.Errno = 13000\n\tERROR_IPSEC_QM_POLICY_NOT_FOUND                                           syscall.Errno = 13001\n\tERROR_IPSEC_QM_POLICY_IN_USE                                              syscall.Errno = 13002\n\tERROR_IPSEC_MM_POLICY_EXISTS                                              syscall.Errno = 13003\n\tERROR_IPSEC_MM_POLICY_NOT_FOUND                                           syscall.Errno = 13004\n\tERROR_IPSEC_MM_POLICY_IN_USE                                              syscall.Errno = 13005\n\tERROR_IPSEC_MM_FILTER_EXISTS                                              syscall.Errno = 13006\n\tERROR_IPSEC_MM_FILTER_NOT_FOUND                                           syscall.Errno = 13007\n\tERROR_IPSEC_TRANSPORT_FILTER_EXISTS                                       syscall.Errno = 13008\n\tERROR_IPSEC_TRANSPORT_FILTER_NOT_FOUND                                    syscall.Errno = 13009\n\tERROR_IPSEC_MM_AUTH_EXISTS                                                syscall.Errno = 13010\n\tERROR_IPSEC_MM_AUTH_NOT_FOUND                                             syscall.Errno = 13011\n\tERROR_IPSEC_MM_AUTH_IN_USE                                                syscall.Errno = 13012\n\tERROR_IPSEC_DEFAULT_MM_POLICY_NOT_FOUND                                   syscall.Errno = 13013\n\tERROR_IPSEC_DEFAULT_MM_AUTH_NOT_FOUND                                     syscall.Errno = 13014\n\tERROR_IPSEC_DEFAULT_QM_POLICY_NOT_FOUND                                   syscall.Errno = 13015\n\tERROR_IPSEC_TUNNEL_FILTER_EXISTS                                          syscall.Errno = 13016\n\tERROR_IPSEC_TUNNEL_FILTER_NOT_FOUND                                       syscall.Errno = 13017\n\tERROR_IPSEC_MM_FILTER_PENDING_DELETION                                    syscall.Errno = 13018\n\tERROR_IPSEC_TRANSPORT_FILTER_PENDING_DELETION                             syscall.Errno = 13019\n\tERROR_IPSEC_TUNNEL_FILTER_PENDING_DELETION                                syscall.Errno = 13020\n\tERROR_IPSEC_MM_POLICY_PENDING_DELETION                                    syscall.Errno = 13021\n\tERROR_IPSEC_MM_AUTH_PENDING_DELETION                                      syscall.Errno = 13022\n\tERROR_IPSEC_QM_POLICY_PENDING_DELETION                                    syscall.Errno = 13023\n\tWARNING_IPSEC_MM_POLICY_PRUNED                                            syscall.Errno = 13024\n\tWARNING_IPSEC_QM_POLICY_PRUNED                                            syscall.Errno = 13025\n\tERROR_IPSEC_IKE_NEG_STATUS_BEGIN                                          syscall.Errno = 13800\n\tERROR_IPSEC_IKE_AUTH_FAIL                                                 syscall.Errno = 13801\n\tERROR_IPSEC_IKE_ATTRIB_FAIL                                               syscall.Errno = 13802\n\tERROR_IPSEC_IKE_NEGOTIATION_PENDING                                       syscall.Errno = 13803\n\tERROR_IPSEC_IKE_GENERAL_PROCESSING_ERROR                                  syscall.Errno = 13804\n\tERROR_IPSEC_IKE_TIMED_OUT                                                 syscall.Errno = 13805\n\tERROR_IPSEC_IKE_NO_CERT                                                   syscall.Errno = 13806\n\tERROR_IPSEC_IKE_SA_DELETED                                                syscall.Errno = 13807\n\tERROR_IPSEC_IKE_SA_REAPED                                                 syscall.Errno = 13808\n\tERROR_IPSEC_IKE_MM_ACQUIRE_DROP                                           syscall.Errno = 13809\n\tERROR_IPSEC_IKE_QM_ACQUIRE_DROP                                           syscall.Errno = 13810\n\tERROR_IPSEC_IKE_QUEUE_DROP_MM                                             syscall.Errno = 13811\n\tERROR_IPSEC_IKE_QUEUE_DROP_NO_MM                                          syscall.Errno = 13812\n\tERROR_IPSEC_IKE_DROP_NO_RESPONSE                                          syscall.Errno = 13813\n\tERROR_IPSEC_IKE_MM_DELAY_DROP                                             syscall.Errno = 13814\n\tERROR_IPSEC_IKE_QM_DELAY_DROP                                             syscall.Errno = 13815\n\tERROR_IPSEC_IKE_ERROR                                                     syscall.Errno = 13816\n\tERROR_IPSEC_IKE_CRL_FAILED                                                syscall.Errno = 13817\n\tERROR_IPSEC_IKE_INVALID_KEY_USAGE                                         syscall.Errno = 13818\n\tERROR_IPSEC_IKE_INVALID_CERT_TYPE                                         syscall.Errno = 13819\n\tERROR_IPSEC_IKE_NO_PRIVATE_KEY                                            syscall.Errno = 13820\n\tERROR_IPSEC_IKE_SIMULTANEOUS_REKEY                                        syscall.Errno = 13821\n\tERROR_IPSEC_IKE_DH_FAIL                                                   syscall.Errno = 13822\n\tERROR_IPSEC_IKE_CRITICAL_PAYLOAD_NOT_RECOGNIZED                           syscall.Errno = 13823\n\tERROR_IPSEC_IKE_INVALID_HEADER                                            syscall.Errno = 13824\n\tERROR_IPSEC_IKE_NO_POLICY                                                 syscall.Errno = 13825\n\tERROR_IPSEC_IKE_INVALID_SIGNATURE                                         syscall.Errno = 13826\n\tERROR_IPSEC_IKE_KERBEROS_ERROR                                            syscall.Errno = 13827\n\tERROR_IPSEC_IKE_NO_PUBLIC_KEY                                             syscall.Errno = 13828\n\tERROR_IPSEC_IKE_PROCESS_ERR                                               syscall.Errno = 13829\n\tERROR_IPSEC_IKE_PROCESS_ERR_SA                                            syscall.Errno = 13830\n\tERROR_IPSEC_IKE_PROCESS_ERR_PROP                                          syscall.Errno = 13831\n\tERROR_IPSEC_IKE_PROCESS_ERR_TRANS                                         syscall.Errno = 13832\n\tERROR_IPSEC_IKE_PROCESS_ERR_KE                                            syscall.Errno = 13833\n\tERROR_IPSEC_IKE_PROCESS_ERR_ID                                            syscall.Errno = 13834\n\tERROR_IPSEC_IKE_PROCESS_ERR_CERT                                          syscall.Errno = 13835\n\tERROR_IPSEC_IKE_PROCESS_ERR_CERT_REQ                                      syscall.Errno = 13836\n\tERROR_IPSEC_IKE_PROCESS_ERR_HASH                                          syscall.Errno = 13837\n\tERROR_IPSEC_IKE_PROCESS_ERR_SIG                                           syscall.Errno = 13838\n\tERROR_IPSEC_IKE_PROCESS_ERR_NONCE                                         syscall.Errno = 13839\n\tERROR_IPSEC_IKE_PROCESS_ERR_NOTIFY                                        syscall.Errno = 13840\n\tERROR_IPSEC_IKE_PROCESS_ERR_DELETE                                        syscall.Errno = 13841\n\tERROR_IPSEC_IKE_PROCESS_ERR_VENDOR                                        syscall.Errno = 13842\n\tERROR_IPSEC_IKE_INVALID_PAYLOAD                                           syscall.Errno = 13843\n\tERROR_IPSEC_IKE_LOAD_SOFT_SA                                              syscall.Errno = 13844\n\tERROR_IPSEC_IKE_SOFT_SA_TORN_DOWN                                         syscall.Errno = 13845\n\tERROR_IPSEC_IKE_INVALID_COOKIE                                            syscall.Errno = 13846\n\tERROR_IPSEC_IKE_NO_PEER_CERT                                              syscall.Errno = 13847\n\tERROR_IPSEC_IKE_PEER_CRL_FAILED                                           syscall.Errno = 13848\n\tERROR_IPSEC_IKE_POLICY_CHANGE                                             syscall.Errno = 13849\n\tERROR_IPSEC_IKE_NO_MM_POLICY                                              syscall.Errno = 13850\n\tERROR_IPSEC_IKE_NOTCBPRIV                                                 syscall.Errno = 13851\n\tERROR_IPSEC_IKE_SECLOADFAIL                                               syscall.Errno = 13852\n\tERROR_IPSEC_IKE_FAILSSPINIT                                               syscall.Errno = 13853\n\tERROR_IPSEC_IKE_FAILQUERYSSP                                              syscall.Errno = 13854\n\tERROR_IPSEC_IKE_SRVACQFAIL                                                syscall.Errno = 13855\n\tERROR_IPSEC_IKE_SRVQUERYCRED                                              syscall.Errno = 13856\n\tERROR_IPSEC_IKE_GETSPIFAIL                                                syscall.Errno = 13857\n\tERROR_IPSEC_IKE_INVALID_FILTER                                            syscall.Errno = 13858\n\tERROR_IPSEC_IKE_OUT_OF_MEMORY                                             syscall.Errno = 13859\n\tERROR_IPSEC_IKE_ADD_UPDATE_KEY_FAILED                                     syscall.Errno = 13860\n\tERROR_IPSEC_IKE_INVALID_POLICY                                            syscall.Errno = 13861\n\tERROR_IPSEC_IKE_UNKNOWN_DOI                                               syscall.Errno = 13862\n\tERROR_IPSEC_IKE_INVALID_SITUATION                                         syscall.Errno = 13863\n\tERROR_IPSEC_IKE_DH_FAILURE                                                syscall.Errno = 13864\n\tERROR_IPSEC_IKE_INVALID_GROUP                                             syscall.Errno = 13865\n\tERROR_IPSEC_IKE_ENCRYPT                                                   syscall.Errno = 13866\n\tERROR_IPSEC_IKE_DECRYPT                                                   syscall.Errno = 13867\n\tERROR_IPSEC_IKE_POLICY_MATCH                                              syscall.Errno = 13868\n\tERROR_IPSEC_IKE_UNSUPPORTED_ID                                            syscall.Errno = 13869\n\tERROR_IPSEC_IKE_INVALID_HASH                                              syscall.Errno = 13870\n\tERROR_IPSEC_IKE_INVALID_HASH_ALG                                          syscall.Errno = 13871\n\tERROR_IPSEC_IKE_INVALID_HASH_SIZE                                         syscall.Errno = 13872\n\tERROR_IPSEC_IKE_INVALID_ENCRYPT_ALG                                       syscall.Errno = 13873\n\tERROR_IPSEC_IKE_INVALID_AUTH_ALG                                          syscall.Errno = 13874\n\tERROR_IPSEC_IKE_INVALID_SIG                                               syscall.Errno = 13875\n\tERROR_IPSEC_IKE_LOAD_FAILED                                               syscall.Errno = 13876\n\tERROR_IPSEC_IKE_RPC_DELETE                                                syscall.Errno = 13877\n\tERROR_IPSEC_IKE_BENIGN_REINIT                                             syscall.Errno = 13878\n\tERROR_IPSEC_IKE_INVALID_RESPONDER_LIFETIME_NOTIFY                         syscall.Errno = 13879\n\tERROR_IPSEC_IKE_INVALID_MAJOR_VERSION                                     syscall.Errno = 13880\n\tERROR_IPSEC_IKE_INVALID_CERT_KEYLEN                                       syscall.Errno = 13881\n\tERROR_IPSEC_IKE_MM_LIMIT                                                  syscall.Errno = 13882\n\tERROR_IPSEC_IKE_NEGOTIATION_DISABLED                                      syscall.Errno = 13883\n\tERROR_IPSEC_IKE_QM_LIMIT                                                  syscall.Errno = 13884\n\tERROR_IPSEC_IKE_MM_EXPIRED                                                syscall.Errno = 13885\n\tERROR_IPSEC_IKE_PEER_MM_ASSUMED_INVALID                                   syscall.Errno = 13886\n\tERROR_IPSEC_IKE_CERT_CHAIN_POLICY_MISMATCH                                syscall.Errno = 13887\n\tERROR_IPSEC_IKE_UNEXPECTED_MESSAGE_ID                                     syscall.Errno = 13888\n\tERROR_IPSEC_IKE_INVALID_AUTH_PAYLOAD                                      syscall.Errno = 13889\n\tERROR_IPSEC_IKE_DOS_COOKIE_SENT                                           syscall.Errno = 13890\n\tERROR_IPSEC_IKE_SHUTTING_DOWN                                             syscall.Errno = 13891\n\tERROR_IPSEC_IKE_CGA_AUTH_FAILED                                           syscall.Errno = 13892\n\tERROR_IPSEC_IKE_PROCESS_ERR_NATOA                                         syscall.Errno = 13893\n\tERROR_IPSEC_IKE_INVALID_MM_FOR_QM                                         syscall.Errno = 13894\n\tERROR_IPSEC_IKE_QM_EXPIRED                                                syscall.Errno = 13895\n\tERROR_IPSEC_IKE_TOO_MANY_FILTERS                                          syscall.Errno = 13896\n\tERROR_IPSEC_IKE_NEG_STATUS_END                                            syscall.Errno = 13897\n\tERROR_IPSEC_IKE_KILL_DUMMY_NAP_TUNNEL                                     syscall.Errno = 13898\n\tERROR_IPSEC_IKE_INNER_IP_ASSIGNMENT_FAILURE                               syscall.Errno = 13899\n\tERROR_IPSEC_IKE_REQUIRE_CP_PAYLOAD_MISSING                                syscall.Errno = 13900\n\tERROR_IPSEC_KEY_MODULE_IMPERSONATION_NEGOTIATION_PENDING                  syscall.Errno = 13901\n\tERROR_IPSEC_IKE_COEXISTENCE_SUPPRESS                                      syscall.Errno = 13902\n\tERROR_IPSEC_IKE_RATELIMIT_DROP                                            syscall.Errno = 13903\n\tERROR_IPSEC_IKE_PEER_DOESNT_SUPPORT_MOBIKE                                syscall.Errno = 13904\n\tERROR_IPSEC_IKE_AUTHORIZATION_FAILURE                                     syscall.Errno = 13905\n\tERROR_IPSEC_IKE_STRONG_CRED_AUTHORIZATION_FAILURE                         syscall.Errno = 13906\n\tERROR_IPSEC_IKE_AUTHORIZATION_FAILURE_WITH_OPTIONAL_RETRY                 syscall.Errno = 13907\n\tERROR_IPSEC_IKE_STRONG_CRED_AUTHORIZATION_AND_CERTMAP_FAILURE             syscall.Errno = 13908\n\tERROR_IPSEC_IKE_NEG_STATUS_EXTENDED_END                                   syscall.Errno = 13909\n\tERROR_IPSEC_BAD_SPI                                                       syscall.Errno = 13910\n\tERROR_IPSEC_SA_LIFETIME_EXPIRED                                           syscall.Errno = 13911\n\tERROR_IPSEC_WRONG_SA                                                      syscall.Errno = 13912\n\tERROR_IPSEC_REPLAY_CHECK_FAILED                                           syscall.Errno = 13913\n\tERROR_IPSEC_INVALID_PACKET                                                syscall.Errno = 13914\n\tERROR_IPSEC_INTEGRITY_CHECK_FAILED                                        syscall.Errno = 13915\n\tERROR_IPSEC_CLEAR_TEXT_DROP                                               syscall.Errno = 13916\n\tERROR_IPSEC_AUTH_FIREWALL_DROP                                            syscall.Errno = 13917\n\tERROR_IPSEC_THROTTLE_DROP                                                 syscall.Errno = 13918\n\tERROR_IPSEC_DOSP_BLOCK                                                    syscall.Errno = 13925\n\tERROR_IPSEC_DOSP_RECEIVED_MULTICAST                                       syscall.Errno = 13926\n\tERROR_IPSEC_DOSP_INVALID_PACKET                                           syscall.Errno = 13927\n\tERROR_IPSEC_DOSP_STATE_LOOKUP_FAILED                                      syscall.Errno = 13928\n\tERROR_IPSEC_DOSP_MAX_ENTRIES                                              syscall.Errno = 13929\n\tERROR_IPSEC_DOSP_KEYMOD_NOT_ALLOWED                                       syscall.Errno = 13930\n\tERROR_IPSEC_DOSP_NOT_INSTALLED                                            syscall.Errno = 13931\n\tERROR_IPSEC_DOSP_MAX_PER_IP_RATELIMIT_QUEUES                              syscall.Errno = 13932\n\tERROR_SXS_SECTION_NOT_FOUND                                               syscall.Errno = 14000\n\tERROR_SXS_CANT_GEN_ACTCTX                                                 syscall.Errno = 14001\n\tERROR_SXS_INVALID_ACTCTXDATA_FORMAT                                       syscall.Errno = 14002\n\tERROR_SXS_ASSEMBLY_NOT_FOUND                                              syscall.Errno = 14003\n\tERROR_SXS_MANIFEST_FORMAT_ERROR                                           syscall.Errno = 14004\n\tERROR_SXS_MANIFEST_PARSE_ERROR                                            syscall.Errno = 14005\n\tERROR_SXS_ACTIVATION_CONTEXT_DISABLED                                     syscall.Errno = 14006\n\tERROR_SXS_KEY_NOT_FOUND                                                   syscall.Errno = 14007\n\tERROR_SXS_VERSION_CONFLICT                                                syscall.Errno = 14008\n\tERROR_SXS_WRONG_SECTION_TYPE                                              syscall.Errno = 14009\n\tERROR_SXS_THREAD_QUERIES_DISABLED                                         syscall.Errno = 14010\n\tERROR_SXS_PROCESS_DEFAULT_ALREADY_SET                                     syscall.Errno = 14011\n\tERROR_SXS_UNKNOWN_ENCODING_GROUP                                          syscall.Errno = 14012\n\tERROR_SXS_UNKNOWN_ENCODING                                                syscall.Errno = 14013\n\tERROR_SXS_INVALID_XML_NAMESPACE_URI                                       syscall.Errno = 14014\n\tERROR_SXS_ROOT_MANIFEST_DEPENDENCY_NOT_INSTALLED                          syscall.Errno = 14015\n\tERROR_SXS_LEAF_MANIFEST_DEPENDENCY_NOT_INSTALLED                          syscall.Errno = 14016\n\tERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE                             syscall.Errno = 14017\n\tERROR_SXS_MANIFEST_MISSING_REQUIRED_DEFAULT_NAMESPACE                     syscall.Errno = 14018\n\tERROR_SXS_MANIFEST_INVALID_REQUIRED_DEFAULT_NAMESPACE                     syscall.Errno = 14019\n\tERROR_SXS_PRIVATE_MANIFEST_CROSS_PATH_WITH_REPARSE_POINT                  syscall.Errno = 14020\n\tERROR_SXS_DUPLICATE_DLL_NAME                                              syscall.Errno = 14021\n\tERROR_SXS_DUPLICATE_WINDOWCLASS_NAME                                      syscall.Errno = 14022\n\tERROR_SXS_DUPLICATE_CLSID                                                 syscall.Errno = 14023\n\tERROR_SXS_DUPLICATE_IID                                                   syscall.Errno = 14024\n\tERROR_SXS_DUPLICATE_TLBID                                                 syscall.Errno = 14025\n\tERROR_SXS_DUPLICATE_PROGID                                                syscall.Errno = 14026\n\tERROR_SXS_DUPLICATE_ASSEMBLY_NAME                                         syscall.Errno = 14027\n\tERROR_SXS_FILE_HASH_MISMATCH                                              syscall.Errno = 14028\n\tERROR_SXS_POLICY_PARSE_ERROR                                              syscall.Errno = 14029\n\tERROR_SXS_XML_E_MISSINGQUOTE                                              syscall.Errno = 14030\n\tERROR_SXS_XML_E_COMMENTSYNTAX                                             syscall.Errno = 14031\n\tERROR_SXS_XML_E_BADSTARTNAMECHAR                                          syscall.Errno = 14032\n\tERROR_SXS_XML_E_BADNAMECHAR                                               syscall.Errno = 14033\n\tERROR_SXS_XML_E_BADCHARINSTRING                                           syscall.Errno = 14034\n\tERROR_SXS_XML_E_XMLDECLSYNTAX                                             syscall.Errno = 14035\n\tERROR_SXS_XML_E_BADCHARDATA                                               syscall.Errno = 14036\n\tERROR_SXS_XML_E_MISSINGWHITESPACE                                         syscall.Errno = 14037\n\tERROR_SXS_XML_E_EXPECTINGTAGEND                                           syscall.Errno = 14038\n\tERROR_SXS_XML_E_MISSINGSEMICOLON                                          syscall.Errno = 14039\n\tERROR_SXS_XML_E_UNBALANCEDPAREN                                           syscall.Errno = 14040\n\tERROR_SXS_XML_E_INTERNALERROR                                             syscall.Errno = 14041\n\tERROR_SXS_XML_E_UNEXPECTED_WHITESPACE                                     syscall.Errno = 14042\n\tERROR_SXS_XML_E_INCOMPLETE_ENCODING                                       syscall.Errno = 14043\n\tERROR_SXS_XML_E_MISSING_PAREN                                             syscall.Errno = 14044\n\tERROR_SXS_XML_E_EXPECTINGCLOSEQUOTE                                       syscall.Errno = 14045\n\tERROR_SXS_XML_E_MULTIPLE_COLONS                                           syscall.Errno = 14046\n\tERROR_SXS_XML_E_INVALID_DECIMAL                                           syscall.Errno = 14047\n\tERROR_SXS_XML_E_INVALID_HEXIDECIMAL                                       syscall.Errno = 14048\n\tERROR_SXS_XML_E_INVALID_UNICODE                                           syscall.Errno = 14049\n\tERROR_SXS_XML_E_WHITESPACEORQUESTIONMARK                                  syscall.Errno = 14050\n\tERROR_SXS_XML_E_UNEXPECTEDENDTAG                                          syscall.Errno = 14051\n\tERROR_SXS_XML_E_UNCLOSEDTAG                                               syscall.Errno = 14052\n\tERROR_SXS_XML_E_DUPLICATEATTRIBUTE                                        syscall.Errno = 14053\n\tERROR_SXS_XML_E_MULTIPLEROOTS                                             syscall.Errno = 14054\n\tERROR_SXS_XML_E_INVALIDATROOTLEVEL                                        syscall.Errno = 14055\n\tERROR_SXS_XML_E_BADXMLDECL                                                syscall.Errno = 14056\n\tERROR_SXS_XML_E_MISSINGROOT                                               syscall.Errno = 14057\n\tERROR_SXS_XML_E_UNEXPECTEDEOF                                             syscall.Errno = 14058\n\tERROR_SXS_XML_E_BADPEREFINSUBSET                                          syscall.Errno = 14059\n\tERROR_SXS_XML_E_UNCLOSEDSTARTTAG                                          syscall.Errno = 14060\n\tERROR_SXS_XML_E_UNCLOSEDENDTAG                                            syscall.Errno = 14061\n\tERROR_SXS_XML_E_UNCLOSEDSTRING                                            syscall.Errno = 14062\n\tERROR_SXS_XML_E_UNCLOSEDCOMMENT                                           syscall.Errno = 14063\n\tERROR_SXS_XML_E_UNCLOSEDDECL                                              syscall.Errno = 14064\n\tERROR_SXS_XML_E_UNCLOSEDCDATA                                             syscall.Errno = 14065\n\tERROR_SXS_XML_E_RESERVEDNAMESPACE                                         syscall.Errno = 14066\n\tERROR_SXS_XML_E_INVALIDENCODING                                           syscall.Errno = 14067\n\tERROR_SXS_XML_E_INVALIDSWITCH                                             syscall.Errno = 14068\n\tERROR_SXS_XML_E_BADXMLCASE                                                syscall.Errno = 14069\n\tERROR_SXS_XML_E_INVALID_STANDALONE                                        syscall.Errno = 14070\n\tERROR_SXS_XML_E_UNEXPECTED_STANDALONE                                     syscall.Errno = 14071\n\tERROR_SXS_XML_E_INVALID_VERSION                                           syscall.Errno = 14072\n\tERROR_SXS_XML_E_MISSINGEQUALS                                             syscall.Errno = 14073\n\tERROR_SXS_PROTECTION_RECOVERY_FAILED                                      syscall.Errno = 14074\n\tERROR_SXS_PROTECTION_PUBLIC_KEY_TOO_SHORT                                 syscall.Errno = 14075\n\tERROR_SXS_PROTECTION_CATALOG_NOT_VALID                                    syscall.Errno = 14076\n\tERROR_SXS_UNTRANSLATABLE_HRESULT                                          syscall.Errno = 14077\n\tERROR_SXS_PROTECTION_CATALOG_FILE_MISSING                                 syscall.Errno = 14078\n\tERROR_SXS_MISSING_ASSEMBLY_IDENTITY_ATTRIBUTE                             syscall.Errno = 14079\n\tERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE_NAME                        syscall.Errno = 14080\n\tERROR_SXS_ASSEMBLY_MISSING                                                syscall.Errno = 14081\n\tERROR_SXS_CORRUPT_ACTIVATION_STACK                                        syscall.Errno = 14082\n\tERROR_SXS_CORRUPTION                                                      syscall.Errno = 14083\n\tERROR_SXS_EARLY_DEACTIVATION                                              syscall.Errno = 14084\n\tERROR_SXS_INVALID_DEACTIVATION                                            syscall.Errno = 14085\n\tERROR_SXS_MULTIPLE_DEACTIVATION                                           syscall.Errno = 14086\n\tERROR_SXS_PROCESS_TERMINATION_REQUESTED                                   syscall.Errno = 14087\n\tERROR_SXS_RELEASE_ACTIVATION_CONTEXT                                      syscall.Errno = 14088\n\tERROR_SXS_SYSTEM_DEFAULT_ACTIVATION_CONTEXT_EMPTY                         syscall.Errno = 14089\n\tERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_VALUE                                syscall.Errno = 14090\n\tERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_NAME                                 syscall.Errno = 14091\n\tERROR_SXS_IDENTITY_DUPLICATE_ATTRIBUTE                                    syscall.Errno = 14092\n\tERROR_SXS_IDENTITY_PARSE_ERROR                                            syscall.Errno = 14093\n\tERROR_MALFORMED_SUBSTITUTION_STRING                                       syscall.Errno = 14094\n\tERROR_SXS_INCORRECT_PUBLIC_KEY_TOKEN                                      syscall.Errno = 14095\n\tERROR_UNMAPPED_SUBSTITUTION_STRING                                        syscall.Errno = 14096\n\tERROR_SXS_ASSEMBLY_NOT_LOCKED                                             syscall.Errno = 14097\n\tERROR_SXS_COMPONENT_STORE_CORRUPT                                         syscall.Errno = 14098\n\tERROR_ADVANCED_INSTALLER_FAILED                                           syscall.Errno = 14099\n\tERROR_XML_ENCODING_MISMATCH                                               syscall.Errno = 14100\n\tERROR_SXS_MANIFEST_IDENTITY_SAME_BUT_CONTENTS_DIFFERENT                   syscall.Errno = 14101\n\tERROR_SXS_IDENTITIES_DIFFERENT                                            syscall.Errno = 14102\n\tERROR_SXS_ASSEMBLY_IS_NOT_A_DEPLOYMENT                                    syscall.Errno = 14103\n\tERROR_SXS_FILE_NOT_PART_OF_ASSEMBLY                                       syscall.Errno = 14104\n\tERROR_SXS_MANIFEST_TOO_BIG                                                syscall.Errno = 14105\n\tERROR_SXS_SETTING_NOT_REGISTERED                                          syscall.Errno = 14106\n\tERROR_SXS_TRANSACTION_CLOSURE_INCOMPLETE                                  syscall.Errno = 14107\n\tERROR_SMI_PRIMITIVE_INSTALLER_FAILED                                      syscall.Errno = 14108\n\tERROR_GENERIC_COMMAND_FAILED                                              syscall.Errno = 14109\n\tERROR_SXS_FILE_HASH_MISSING                                               syscall.Errno = 14110\n\tERROR_SXS_DUPLICATE_ACTIVATABLE_CLASS                                     syscall.Errno = 14111\n\tERROR_EVT_INVALID_CHANNEL_PATH                                            syscall.Errno = 15000\n\tERROR_EVT_INVALID_QUERY                                                   syscall.Errno = 15001\n\tERROR_EVT_PUBLISHER_METADATA_NOT_FOUND                                    syscall.Errno = 15002\n\tERROR_EVT_EVENT_TEMPLATE_NOT_FOUND                                        syscall.Errno = 15003\n\tERROR_EVT_INVALID_PUBLISHER_NAME                                          syscall.Errno = 15004\n\tERROR_EVT_INVALID_EVENT_DATA                                              syscall.Errno = 15005\n\tERROR_EVT_CHANNEL_NOT_FOUND                                               syscall.Errno = 15007\n\tERROR_EVT_MALFORMED_XML_TEXT                                              syscall.Errno = 15008\n\tERROR_EVT_SUBSCRIPTION_TO_DIRECT_CHANNEL                                  syscall.Errno = 15009\n\tERROR_EVT_CONFIGURATION_ERROR                                             syscall.Errno = 15010\n\tERROR_EVT_QUERY_RESULT_STALE                                              syscall.Errno = 15011\n\tERROR_EVT_QUERY_RESULT_INVALID_POSITION                                   syscall.Errno = 15012\n\tERROR_EVT_NON_VALIDATING_MSXML                                            syscall.Errno = 15013\n\tERROR_EVT_FILTER_ALREADYSCOPED                                            syscall.Errno = 15014\n\tERROR_EVT_FILTER_NOTELTSET                                                syscall.Errno = 15015\n\tERROR_EVT_FILTER_INVARG                                                   syscall.Errno = 15016\n\tERROR_EVT_FILTER_INVTEST                                                  syscall.Errno = 15017\n\tERROR_EVT_FILTER_INVTYPE                                                  syscall.Errno = 15018\n\tERROR_EVT_FILTER_PARSEERR                                                 syscall.Errno = 15019\n\tERROR_EVT_FILTER_UNSUPPORTEDOP                                            syscall.Errno = 15020\n\tERROR_EVT_FILTER_UNEXPECTEDTOKEN                                          syscall.Errno = 15021\n\tERROR_EVT_INVALID_OPERATION_OVER_ENABLED_DIRECT_CHANNEL                   syscall.Errno = 15022\n\tERROR_EVT_INVALID_CHANNEL_PROPERTY_VALUE                                  syscall.Errno = 15023\n\tERROR_EVT_INVALID_PUBLISHER_PROPERTY_VALUE                                syscall.Errno = 15024\n\tERROR_EVT_CHANNEL_CANNOT_ACTIVATE                                         syscall.Errno = 15025\n\tERROR_EVT_FILTER_TOO_COMPLEX                                              syscall.Errno = 15026\n\tERROR_EVT_MESSAGE_NOT_FOUND                                               syscall.Errno = 15027\n\tERROR_EVT_MESSAGE_ID_NOT_FOUND                                            syscall.Errno = 15028\n\tERROR_EVT_UNRESOLVED_VALUE_INSERT                                         syscall.Errno = 15029\n\tERROR_EVT_UNRESOLVED_PARAMETER_INSERT                                     syscall.Errno = 15030\n\tERROR_EVT_MAX_INSERTS_REACHED                                             syscall.Errno = 15031\n\tERROR_EVT_EVENT_DEFINITION_NOT_FOUND                                      syscall.Errno = 15032\n\tERROR_EVT_MESSAGE_LOCALE_NOT_FOUND                                        syscall.Errno = 15033\n\tERROR_EVT_VERSION_TOO_OLD                                                 syscall.Errno = 15034\n\tERROR_EVT_VERSION_TOO_NEW                                                 syscall.Errno = 15035\n\tERROR_EVT_CANNOT_OPEN_CHANNEL_OF_QUERY                                    syscall.Errno = 15036\n\tERROR_EVT_PUBLISHER_DISABLED                                              syscall.Errno = 15037\n\tERROR_EVT_FILTER_OUT_OF_RANGE                                             syscall.Errno = 15038\n\tERROR_EC_SUBSCRIPTION_CANNOT_ACTIVATE                                     syscall.Errno = 15080\n\tERROR_EC_LOG_DISABLED                                                     syscall.Errno = 15081\n\tERROR_EC_CIRCULAR_FORWARDING                                              syscall.Errno = 15082\n\tERROR_EC_CREDSTORE_FULL                                                   syscall.Errno = 15083\n\tERROR_EC_CRED_NOT_FOUND                                                   syscall.Errno = 15084\n\tERROR_EC_NO_ACTIVE_CHANNEL                                                syscall.Errno = 15085\n\tERROR_MUI_FILE_NOT_FOUND                                                  syscall.Errno = 15100\n\tERROR_MUI_INVALID_FILE                                                    syscall.Errno = 15101\n\tERROR_MUI_INVALID_RC_CONFIG                                               syscall.Errno = 15102\n\tERROR_MUI_INVALID_LOCALE_NAME                                             syscall.Errno = 15103\n\tERROR_MUI_INVALID_ULTIMATEFALLBACK_NAME                                   syscall.Errno = 15104\n\tERROR_MUI_FILE_NOT_LOADED                                                 syscall.Errno = 15105\n\tERROR_RESOURCE_ENUM_USER_STOP                                             syscall.Errno = 15106\n\tERROR_MUI_INTLSETTINGS_UILANG_NOT_INSTALLED                               syscall.Errno = 15107\n\tERROR_MUI_INTLSETTINGS_INVALID_LOCALE_NAME                                syscall.Errno = 15108\n\tERROR_MRM_RUNTIME_NO_DEFAULT_OR_NEUTRAL_RESOURCE                          syscall.Errno = 15110\n\tERROR_MRM_INVALID_PRICONFIG                                               syscall.Errno = 15111\n\tERROR_MRM_INVALID_FILE_TYPE                                               syscall.Errno = 15112\n\tERROR_MRM_UNKNOWN_QUALIFIER                                               syscall.Errno = 15113\n\tERROR_MRM_INVALID_QUALIFIER_VALUE                                         syscall.Errno = 15114\n\tERROR_MRM_NO_CANDIDATE                                                    syscall.Errno = 15115\n\tERROR_MRM_NO_MATCH_OR_DEFAULT_CANDIDATE                                   syscall.Errno = 15116\n\tERROR_MRM_RESOURCE_TYPE_MISMATCH                                          syscall.Errno = 15117\n\tERROR_MRM_DUPLICATE_MAP_NAME                                              syscall.Errno = 15118\n\tERROR_MRM_DUPLICATE_ENTRY                                                 syscall.Errno = 15119\n\tERROR_MRM_INVALID_RESOURCE_IDENTIFIER                                     syscall.Errno = 15120\n\tERROR_MRM_FILEPATH_TOO_LONG                                               syscall.Errno = 15121\n\tERROR_MRM_UNSUPPORTED_DIRECTORY_TYPE                                      syscall.Errno = 15122\n\tERROR_MRM_INVALID_PRI_FILE                                                syscall.Errno = 15126\n\tERROR_MRM_NAMED_RESOURCE_NOT_FOUND                                        syscall.Errno = 15127\n\tERROR_MRM_MAP_NOT_FOUND                                                   syscall.Errno = 15135\n\tERROR_MRM_UNSUPPORTED_PROFILE_TYPE                                        syscall.Errno = 15136\n\tERROR_MRM_INVALID_QUALIFIER_OPERATOR                                      syscall.Errno = 15137\n\tERROR_MRM_INDETERMINATE_QUALIFIER_VALUE                                   syscall.Errno = 15138\n\tERROR_MRM_AUTOMERGE_ENABLED                                               syscall.Errno = 15139\n\tERROR_MRM_TOO_MANY_RESOURCES                                              syscall.Errno = 15140\n\tERROR_MRM_UNSUPPORTED_FILE_TYPE_FOR_MERGE                                 syscall.Errno = 15141\n\tERROR_MRM_UNSUPPORTED_FILE_TYPE_FOR_LOAD_UNLOAD_PRI_FILE                  syscall.Errno = 15142\n\tERROR_MRM_NO_CURRENT_VIEW_ON_THREAD                                       syscall.Errno = 15143\n\tERROR_DIFFERENT_PROFILE_RESOURCE_MANAGER_EXIST                            syscall.Errno = 15144\n\tERROR_OPERATION_NOT_ALLOWED_FROM_SYSTEM_COMPONENT                         syscall.Errno = 15145\n\tERROR_MRM_DIRECT_REF_TO_NON_DEFAULT_RESOURCE                              syscall.Errno = 15146\n\tERROR_MRM_GENERATION_COUNT_MISMATCH                                       syscall.Errno = 15147\n\tERROR_PRI_MERGE_VERSION_MISMATCH                                          syscall.Errno = 15148\n\tERROR_PRI_MERGE_MISSING_SCHEMA                                            syscall.Errno = 15149\n\tERROR_PRI_MERGE_LOAD_FILE_FAILED                                          syscall.Errno = 15150\n\tERROR_PRI_MERGE_ADD_FILE_FAILED                                           syscall.Errno = 15151\n\tERROR_PRI_MERGE_WRITE_FILE_FAILED                                         syscall.Errno = 15152\n\tERROR_PRI_MERGE_MULTIPLE_PACKAGE_FAMILIES_NOT_ALLOWED                     syscall.Errno = 15153\n\tERROR_PRI_MERGE_MULTIPLE_MAIN_PACKAGES_NOT_ALLOWED                        syscall.Errno = 15154\n\tERROR_PRI_MERGE_BUNDLE_PACKAGES_NOT_ALLOWED                               syscall.Errno = 15155\n\tERROR_PRI_MERGE_MAIN_PACKAGE_REQUIRED                                     syscall.Errno = 15156\n\tERROR_PRI_MERGE_RESOURCE_PACKAGE_REQUIRED                                 syscall.Errno = 15157\n\tERROR_PRI_MERGE_INVALID_FILE_NAME                                         syscall.Errno = 15158\n\tERROR_MRM_PACKAGE_NOT_FOUND                                               syscall.Errno = 15159\n\tERROR_MRM_MISSING_DEFAULT_LANGUAGE                                        syscall.Errno = 15160\n\tERROR_MCA_INVALID_CAPABILITIES_STRING                                     syscall.Errno = 15200\n\tERROR_MCA_INVALID_VCP_VERSION                                             syscall.Errno = 15201\n\tERROR_MCA_MONITOR_VIOLATES_MCCS_SPECIFICATION                             syscall.Errno = 15202\n\tERROR_MCA_MCCS_VERSION_MISMATCH                                           syscall.Errno = 15203\n\tERROR_MCA_UNSUPPORTED_MCCS_VERSION                                        syscall.Errno = 15204\n\tERROR_MCA_INTERNAL_ERROR                                                  syscall.Errno = 15205\n\tERROR_MCA_INVALID_TECHNOLOGY_TYPE_RETURNED                                syscall.Errno = 15206\n\tERROR_MCA_UNSUPPORTED_COLOR_TEMPERATURE                                   syscall.Errno = 15207\n\tERROR_AMBIGUOUS_SYSTEM_DEVICE                                             syscall.Errno = 15250\n\tERROR_SYSTEM_DEVICE_NOT_FOUND                                             syscall.Errno = 15299\n\tERROR_HASH_NOT_SUPPORTED                                                  syscall.Errno = 15300\n\tERROR_HASH_NOT_PRESENT                                                    syscall.Errno = 15301\n\tERROR_SECONDARY_IC_PROVIDER_NOT_REGISTERED                                syscall.Errno = 15321\n\tERROR_GPIO_CLIENT_INFORMATION_INVALID                                     syscall.Errno = 15322\n\tERROR_GPIO_VERSION_NOT_SUPPORTED                                          syscall.Errno = 15323\n\tERROR_GPIO_INVALID_REGISTRATION_PACKET                                    syscall.Errno = 15324\n\tERROR_GPIO_OPERATION_DENIED                                               syscall.Errno = 15325\n\tERROR_GPIO_INCOMPATIBLE_CONNECT_MODE                                      syscall.Errno = 15326\n\tERROR_GPIO_INTERRUPT_ALREADY_UNMASKED                                     syscall.Errno = 15327\n\tERROR_CANNOT_SWITCH_RUNLEVEL                                              syscall.Errno = 15400\n\tERROR_INVALID_RUNLEVEL_SETTING                                            syscall.Errno = 15401\n\tERROR_RUNLEVEL_SWITCH_TIMEOUT                                             syscall.Errno = 15402\n\tERROR_RUNLEVEL_SWITCH_AGENT_TIMEOUT                                       syscall.Errno = 15403\n\tERROR_RUNLEVEL_SWITCH_IN_PROGRESS                                         syscall.Errno = 15404\n\tERROR_SERVICES_FAILED_AUTOSTART                                           syscall.Errno = 15405\n\tERROR_COM_TASK_STOP_PENDING                                               syscall.Errno = 15501\n\tERROR_INSTALL_OPEN_PACKAGE_FAILED                                         syscall.Errno = 15600\n\tERROR_INSTALL_PACKAGE_NOT_FOUND                                           syscall.Errno = 15601\n\tERROR_INSTALL_INVALID_PACKAGE                                             syscall.Errno = 15602\n\tERROR_INSTALL_RESOLVE_DEPENDENCY_FAILED                                   syscall.Errno = 15603\n\tERROR_INSTALL_OUT_OF_DISK_SPACE                                           syscall.Errno = 15604\n\tERROR_INSTALL_NETWORK_FAILURE                                             syscall.Errno = 15605\n\tERROR_INSTALL_REGISTRATION_FAILURE                                        syscall.Errno = 15606\n\tERROR_INSTALL_DEREGISTRATION_FAILURE                                      syscall.Errno = 15607\n\tERROR_INSTALL_CANCEL                                                      syscall.Errno = 15608\n\tERROR_INSTALL_FAILED                                                      syscall.Errno = 15609\n\tERROR_REMOVE_FAILED                                                       syscall.Errno = 15610\n\tERROR_PACKAGE_ALREADY_EXISTS                                              syscall.Errno = 15611\n\tERROR_NEEDS_REMEDIATION                                                   syscall.Errno = 15612\n\tERROR_INSTALL_PREREQUISITE_FAILED                                         syscall.Errno = 15613\n\tERROR_PACKAGE_REPOSITORY_CORRUPTED                                        syscall.Errno = 15614\n\tERROR_INSTALL_POLICY_FAILURE                                              syscall.Errno = 15615\n\tERROR_PACKAGE_UPDATING                                                    syscall.Errno = 15616\n\tERROR_DEPLOYMENT_BLOCKED_BY_POLICY                                        syscall.Errno = 15617\n\tERROR_PACKAGES_IN_USE                                                     syscall.Errno = 15618\n\tERROR_RECOVERY_FILE_CORRUPT                                               syscall.Errno = 15619\n\tERROR_INVALID_STAGED_SIGNATURE                                            syscall.Errno = 15620\n\tERROR_DELETING_EXISTING_APPLICATIONDATA_STORE_FAILED                      syscall.Errno = 15621\n\tERROR_INSTALL_PACKAGE_DOWNGRADE                                           syscall.Errno = 15622\n\tERROR_SYSTEM_NEEDS_REMEDIATION                                            syscall.Errno = 15623\n\tERROR_APPX_INTEGRITY_FAILURE_CLR_NGEN                                     syscall.Errno = 15624\n\tERROR_RESILIENCY_FILE_CORRUPT                                             syscall.Errno = 15625\n\tERROR_INSTALL_FIREWALL_SERVICE_NOT_RUNNING                                syscall.Errno = 15626\n\tERROR_PACKAGE_MOVE_FAILED                                                 syscall.Errno = 15627\n\tERROR_INSTALL_VOLUME_NOT_EMPTY                                            syscall.Errno = 15628\n\tERROR_INSTALL_VOLUME_OFFLINE                                              syscall.Errno = 15629\n\tERROR_INSTALL_VOLUME_CORRUPT                                              syscall.Errno = 15630\n\tERROR_NEEDS_REGISTRATION                                                  syscall.Errno = 15631\n\tERROR_INSTALL_WRONG_PROCESSOR_ARCHITECTURE                                syscall.Errno = 15632\n\tERROR_DEV_SIDELOAD_LIMIT_EXCEEDED                                         syscall.Errno = 15633\n\tERROR_INSTALL_OPTIONAL_PACKAGE_REQUIRES_MAIN_PACKAGE                      syscall.Errno = 15634\n\tERROR_PACKAGE_NOT_SUPPORTED_ON_FILESYSTEM                                 syscall.Errno = 15635\n\tERROR_PACKAGE_MOVE_BLOCKED_BY_STREAMING                                   syscall.Errno = 15636\n\tERROR_INSTALL_OPTIONAL_PACKAGE_APPLICATIONID_NOT_UNIQUE                   syscall.Errno = 15637\n\tERROR_PACKAGE_STAGING_ONHOLD                                              syscall.Errno = 15638\n\tERROR_INSTALL_INVALID_RELATED_SET_UPDATE                                  syscall.Errno = 15639\n\tERROR_INSTALL_OPTIONAL_PACKAGE_REQUIRES_MAIN_PACKAGE_FULLTRUST_CAPABILITY syscall.Errno = 15640\n\tERROR_DEPLOYMENT_BLOCKED_BY_USER_LOG_OFF                                  syscall.Errno = 15641\n\tERROR_PROVISION_OPTIONAL_PACKAGE_REQUIRES_MAIN_PACKAGE_PROVISIONED        syscall.Errno = 15642\n\tERROR_PACKAGES_REPUTATION_CHECK_FAILED                                    syscall.Errno = 15643\n\tERROR_PACKAGES_REPUTATION_CHECK_TIMEDOUT                                  syscall.Errno = 15644\n\tERROR_DEPLOYMENT_OPTION_NOT_SUPPORTED                                     syscall.Errno = 15645\n\tERROR_APPINSTALLER_ACTIVATION_BLOCKED                                     syscall.Errno = 15646\n\tERROR_REGISTRATION_FROM_REMOTE_DRIVE_NOT_SUPPORTED                        syscall.Errno = 15647\n\tERROR_APPX_RAW_DATA_WRITE_FAILED                                          syscall.Errno = 15648\n\tERROR_DEPLOYMENT_BLOCKED_BY_VOLUME_POLICY_PACKAGE                         syscall.Errno = 15649\n\tERROR_DEPLOYMENT_BLOCKED_BY_VOLUME_POLICY_MACHINE                         syscall.Errno = 15650\n\tERROR_DEPLOYMENT_BLOCKED_BY_PROFILE_POLICY                                syscall.Errno = 15651\n\tERROR_DEPLOYMENT_FAILED_CONFLICTING_MUTABLE_PACKAGE_DIRECTORY             syscall.Errno = 15652\n\tERROR_SINGLETON_RESOURCE_INSTALLED_IN_ACTIVE_USER                         syscall.Errno = 15653\n\tERROR_DIFFERENT_VERSION_OF_PACKAGED_SERVICE_INSTALLED                     syscall.Errno = 15654\n\tERROR_SERVICE_EXISTS_AS_NON_PACKAGED_SERVICE                              syscall.Errno = 15655\n\tERROR_PACKAGED_SERVICE_REQUIRES_ADMIN_PRIVILEGES                          syscall.Errno = 15656\n\tAPPMODEL_ERROR_NO_PACKAGE                                                 syscall.Errno = 15700\n\tAPPMODEL_ERROR_PACKAGE_RUNTIME_CORRUPT                                    syscall.Errno = 15701\n\tAPPMODEL_ERROR_PACKAGE_IDENTITY_CORRUPT                                   syscall.Errno = 15702\n\tAPPMODEL_ERROR_NO_APPLICATION                                             syscall.Errno = 15703\n\tAPPMODEL_ERROR_DYNAMIC_PROPERTY_READ_FAILED                               syscall.Errno = 15704\n\tAPPMODEL_ERROR_DYNAMIC_PROPERTY_INVALID                                   syscall.Errno = 15705\n\tAPPMODEL_ERROR_PACKAGE_NOT_AVAILABLE                                      syscall.Errno = 15706\n\tAPPMODEL_ERROR_NO_MUTABLE_DIRECTORY                                       syscall.Errno = 15707\n\tERROR_STATE_LOAD_STORE_FAILED                                             syscall.Errno = 15800\n\tERROR_STATE_GET_VERSION_FAILED                                            syscall.Errno = 15801\n\tERROR_STATE_SET_VERSION_FAILED                                            syscall.Errno = 15802\n\tERROR_STATE_STRUCTURED_RESET_FAILED                                       syscall.Errno = 15803\n\tERROR_STATE_OPEN_CONTAINER_FAILED                                         syscall.Errno = 15804\n\tERROR_STATE_CREATE_CONTAINER_FAILED                                       syscall.Errno = 15805\n\tERROR_STATE_DELETE_CONTAINER_FAILED                                       syscall.Errno = 15806\n\tERROR_STATE_READ_SETTING_FAILED                                           syscall.Errno = 15807\n\tERROR_STATE_WRITE_SETTING_FAILED                                          syscall.Errno = 15808\n\tERROR_STATE_DELETE_SETTING_FAILED                                         syscall.Errno = 15809\n\tERROR_STATE_QUERY_SETTING_FAILED                                          syscall.Errno = 15810\n\tERROR_STATE_READ_COMPOSITE_SETTING_FAILED                                 syscall.Errno = 15811\n\tERROR_STATE_WRITE_COMPOSITE_SETTING_FAILED                                syscall.Errno = 15812\n\tERROR_STATE_ENUMERATE_CONTAINER_FAILED                                    syscall.Errno = 15813\n\tERROR_STATE_ENUMERATE_SETTINGS_FAILED                                     syscall.Errno = 15814\n\tERROR_STATE_COMPOSITE_SETTING_VALUE_SIZE_LIMIT_EXCEEDED                   syscall.Errno = 15815\n\tERROR_STATE_SETTING_VALUE_SIZE_LIMIT_EXCEEDED                             syscall.Errno = 15816\n\tERROR_STATE_SETTING_NAME_SIZE_LIMIT_EXCEEDED                              syscall.Errno = 15817\n\tERROR_STATE_CONTAINER_NAME_SIZE_LIMIT_EXCEEDED                            syscall.Errno = 15818\n\tERROR_API_UNAVAILABLE                                                     syscall.Errno = 15841\n\tSTORE_ERROR_UNLICENSED                                                    syscall.Errno = 15861\n\tSTORE_ERROR_UNLICENSED_USER                                               syscall.Errno = 15862\n\tSTORE_ERROR_PENDING_COM_TRANSACTION                                       syscall.Errno = 15863\n\tSTORE_ERROR_LICENSE_REVOKED                                               syscall.Errno = 15864\n\tSEVERITY_SUCCESS                                                          syscall.Errno = 0\n\tSEVERITY_ERROR                                                            syscall.Errno = 1\n\tFACILITY_NT_BIT                                                                         = 0x10000000\n\tE_NOT_SET                                                                               = ERROR_NOT_FOUND\n\tE_NOT_VALID_STATE                                                                       = ERROR_INVALID_STATE\n\tE_NOT_SUFFICIENT_BUFFER                                                                 = ERROR_INSUFFICIENT_BUFFER\n\tE_TIME_SENSITIVE_THREAD                                                                 = ERROR_TIME_SENSITIVE_THREAD\n\tE_NO_TASK_QUEUE                                                                         = ERROR_NO_TASK_QUEUE\n\tNOERROR                                                                   syscall.Errno = 0\n\tE_UNEXPECTED                                                              Handle        = 0x8000FFFF\n\tE_NOTIMPL                                                                 Handle        = 0x80004001\n\tE_OUTOFMEMORY                                                             Handle        = 0x8007000E\n\tE_INVALIDARG                                                              Handle        = 0x80070057\n\tE_NOINTERFACE                                                             Handle        = 0x80004002\n\tE_POINTER                                                                 Handle        = 0x80004003\n\tE_HANDLE                                                                  Handle        = 0x80070006\n\tE_ABORT                                                                   Handle        = 0x80004004\n\tE_FAIL                                                                    Handle        = 0x80004005\n\tE_ACCESSDENIED                                                            Handle        = 0x80070005\n\tE_PENDING                                                                 Handle        = 0x8000000A\n\tE_BOUNDS                                                                  Handle        = 0x8000000B\n\tE_CHANGED_STATE                                                           Handle        = 0x8000000C\n\tE_ILLEGAL_STATE_CHANGE                                                    Handle        = 0x8000000D\n\tE_ILLEGAL_METHOD_CALL                                                     Handle        = 0x8000000E\n\tRO_E_METADATA_NAME_NOT_FOUND                                              Handle        = 0x8000000F\n\tRO_E_METADATA_NAME_IS_NAMESPACE                                           Handle        = 0x80000010\n\tRO_E_METADATA_INVALID_TYPE_FORMAT                                         Handle        = 0x80000011\n\tRO_E_INVALID_METADATA_FILE                                                Handle        = 0x80000012\n\tRO_E_CLOSED                                                               Handle        = 0x80000013\n\tRO_E_EXCLUSIVE_WRITE                                                      Handle        = 0x80000014\n\tRO_E_CHANGE_NOTIFICATION_IN_PROGRESS                                      Handle        = 0x80000015\n\tRO_E_ERROR_STRING_NOT_FOUND                                               Handle        = 0x80000016\n\tE_STRING_NOT_NULL_TERMINATED                                              Handle        = 0x80000017\n\tE_ILLEGAL_DELEGATE_ASSIGNMENT                                             Handle        = 0x80000018\n\tE_ASYNC_OPERATION_NOT_STARTED                                             Handle        = 0x80000019\n\tE_APPLICATION_EXITING                                                     Handle        = 0x8000001A\n\tE_APPLICATION_VIEW_EXITING                                                Handle        = 0x8000001B\n\tRO_E_MUST_BE_AGILE                                                        Handle        = 0x8000001C\n\tRO_E_UNSUPPORTED_FROM_MTA                                                 Handle        = 0x8000001D\n\tRO_E_COMMITTED                                                            Handle        = 0x8000001E\n\tRO_E_BLOCKED_CROSS_ASTA_CALL                                              Handle        = 0x8000001F\n\tRO_E_CANNOT_ACTIVATE_FULL_TRUST_SERVER                                    Handle        = 0x80000020\n\tRO_E_CANNOT_ACTIVATE_UNIVERSAL_APPLICATION_SERVER                         Handle        = 0x80000021\n\tCO_E_INIT_TLS                                                             Handle        = 0x80004006\n\tCO_E_INIT_SHARED_ALLOCATOR                                                Handle        = 0x80004007\n\tCO_E_INIT_MEMORY_ALLOCATOR                                                Handle        = 0x80004008\n\tCO_E_INIT_CLASS_CACHE                                                     Handle        = 0x80004009\n\tCO_E_INIT_RPC_CHANNEL                                                     Handle        = 0x8000400A\n\tCO_E_INIT_TLS_SET_CHANNEL_CONTROL                                         Handle        = 0x8000400B\n\tCO_E_INIT_TLS_CHANNEL_CONTROL                                             Handle        = 0x8000400C\n\tCO_E_INIT_UNACCEPTED_USER_ALLOCATOR                                       Handle        = 0x8000400D\n\tCO_E_INIT_SCM_MUTEX_EXISTS                                                Handle        = 0x8000400E\n\tCO_E_INIT_SCM_FILE_MAPPING_EXISTS                                         Handle        = 0x8000400F\n\tCO_E_INIT_SCM_MAP_VIEW_OF_FILE                                            Handle        = 0x80004010\n\tCO_E_INIT_SCM_EXEC_FAILURE                                                Handle        = 0x80004011\n\tCO_E_INIT_ONLY_SINGLE_THREADED                                            Handle        = 0x80004012\n\tCO_E_CANT_REMOTE                                                          Handle        = 0x80004013\n\tCO_E_BAD_SERVER_NAME                                                      Handle        = 0x80004014\n\tCO_E_WRONG_SERVER_IDENTITY                                                Handle        = 0x80004015\n\tCO_E_OLE1DDE_DISABLED                                                     Handle        = 0x80004016\n\tCO_E_RUNAS_SYNTAX                                                         Handle        = 0x80004017\n\tCO_E_CREATEPROCESS_FAILURE                                                Handle        = 0x80004018\n\tCO_E_RUNAS_CREATEPROCESS_FAILURE                                          Handle        = 0x80004019\n\tCO_E_RUNAS_LOGON_FAILURE                                                  Handle        = 0x8000401A\n\tCO_E_LAUNCH_PERMSSION_DENIED                                              Handle        = 0x8000401B\n\tCO_E_START_SERVICE_FAILURE                                                Handle        = 0x8000401C\n\tCO_E_REMOTE_COMMUNICATION_FAILURE                                         Handle        = 0x8000401D\n\tCO_E_SERVER_START_TIMEOUT                                                 Handle        = 0x8000401E\n\tCO_E_CLSREG_INCONSISTENT                                                  Handle        = 0x8000401F\n\tCO_E_IIDREG_INCONSISTENT                                                  Handle        = 0x80004020\n\tCO_E_NOT_SUPPORTED                                                        Handle        = 0x80004021\n\tCO_E_RELOAD_DLL                                                           Handle        = 0x80004022\n\tCO_E_MSI_ERROR                                                            Handle        = 0x80004023\n\tCO_E_ATTEMPT_TO_CREATE_OUTSIDE_CLIENT_CONTEXT                             Handle        = 0x80004024\n\tCO_E_SERVER_PAUSED                                                        Handle        = 0x80004025\n\tCO_E_SERVER_NOT_PAUSED                                                    Handle        = 0x80004026\n\tCO_E_CLASS_DISABLED                                                       Handle        = 0x80004027\n\tCO_E_CLRNOTAVAILABLE                                                      Handle        = 0x80004028\n\tCO_E_ASYNC_WORK_REJECTED                                                  Handle        = 0x80004029\n\tCO_E_SERVER_INIT_TIMEOUT                                                  Handle        = 0x8000402A\n\tCO_E_NO_SECCTX_IN_ACTIVATE                                                Handle        = 0x8000402B\n\tCO_E_TRACKER_CONFIG                                                       Handle        = 0x80004030\n\tCO_E_THREADPOOL_CONFIG                                                    Handle        = 0x80004031\n\tCO_E_SXS_CONFIG                                                           Handle        = 0x80004032\n\tCO_E_MALFORMED_SPN                                                        Handle        = 0x80004033\n\tCO_E_UNREVOKED_REGISTRATION_ON_APARTMENT_SHUTDOWN                         Handle        = 0x80004034\n\tCO_E_PREMATURE_STUB_RUNDOWN                                               Handle        = 0x80004035\n\tS_OK                                                                      Handle        = 0\n\tS_FALSE                                                                   Handle        = 1\n\tOLE_E_FIRST                                                               Handle        = 0x80040000\n\tOLE_E_LAST                                                                Handle        = 0x800400FF\n\tOLE_S_FIRST                                                               Handle        = 0x00040000\n\tOLE_S_LAST                                                                Handle        = 0x000400FF\n\tOLE_E_OLEVERB                                                             Handle        = 0x80040000\n\tOLE_E_ADVF                                                                Handle        = 0x80040001\n\tOLE_E_ENUM_NOMORE                                                         Handle        = 0x80040002\n\tOLE_E_ADVISENOTSUPPORTED                                                  Handle        = 0x80040003\n\tOLE_E_NOCONNECTION                                                        Handle        = 0x80040004\n\tOLE_E_NOTRUNNING                                                          Handle        = 0x80040005\n\tOLE_E_NOCACHE                                                             Handle        = 0x80040006\n\tOLE_E_BLANK                                                               Handle        = 0x80040007\n\tOLE_E_CLASSDIFF                                                           Handle        = 0x80040008\n\tOLE_E_CANT_GETMONIKER                                                     Handle        = 0x80040009\n\tOLE_E_CANT_BINDTOSOURCE                                                   Handle        = 0x8004000A\n\tOLE_E_STATIC                                                              Handle        = 0x8004000B\n\tOLE_E_PROMPTSAVECANCELLED                                                 Handle        = 0x8004000C\n\tOLE_E_INVALIDRECT                                                         Handle        = 0x8004000D\n\tOLE_E_WRONGCOMPOBJ                                                        Handle        = 0x8004000E\n\tOLE_E_INVALIDHWND                                                         Handle        = 0x8004000F\n\tOLE_E_NOT_INPLACEACTIVE                                                   Handle        = 0x80040010\n\tOLE_E_CANTCONVERT                                                         Handle        = 0x80040011\n\tOLE_E_NOSTORAGE                                                           Handle        = 0x80040012\n\tDV_E_FORMATETC                                                            Handle        = 0x80040064\n\tDV_E_DVTARGETDEVICE                                                       Handle        = 0x80040065\n\tDV_E_STGMEDIUM                                                            Handle        = 0x80040066\n\tDV_E_STATDATA                                                             Handle        = 0x80040067\n\tDV_E_LINDEX                                                               Handle        = 0x80040068\n\tDV_E_TYMED                                                                Handle        = 0x80040069\n\tDV_E_CLIPFORMAT                                                           Handle        = 0x8004006A\n\tDV_E_DVASPECT                                                             Handle        = 0x8004006B\n\tDV_E_DVTARGETDEVICE_SIZE                                                  Handle        = 0x8004006C\n\tDV_E_NOIVIEWOBJECT                                                        Handle        = 0x8004006D\n\tDRAGDROP_E_FIRST                                                          syscall.Errno = 0x80040100\n\tDRAGDROP_E_LAST                                                           syscall.Errno = 0x8004010F\n\tDRAGDROP_S_FIRST                                                          syscall.Errno = 0x00040100\n\tDRAGDROP_S_LAST                                                           syscall.Errno = 0x0004010F\n\tDRAGDROP_E_NOTREGISTERED                                                  Handle        = 0x80040100\n\tDRAGDROP_E_ALREADYREGISTERED                                              Handle        = 0x80040101\n\tDRAGDROP_E_INVALIDHWND                                                    Handle        = 0x80040102\n\tDRAGDROP_E_CONCURRENT_DRAG_ATTEMPTED                                      Handle        = 0x80040103\n\tCLASSFACTORY_E_FIRST                                                      syscall.Errno = 0x80040110\n\tCLASSFACTORY_E_LAST                                                       syscall.Errno = 0x8004011F\n\tCLASSFACTORY_S_FIRST                                                      syscall.Errno = 0x00040110\n\tCLASSFACTORY_S_LAST                                                       syscall.Errno = 0x0004011F\n\tCLASS_E_NOAGGREGATION                                                     Handle        = 0x80040110\n\tCLASS_E_CLASSNOTAVAILABLE                                                 Handle        = 0x80040111\n\tCLASS_E_NOTLICENSED                                                       Handle        = 0x80040112\n\tMARSHAL_E_FIRST                                                           syscall.Errno = 0x80040120\n\tMARSHAL_E_LAST                                                            syscall.Errno = 0x8004012F\n\tMARSHAL_S_FIRST                                                           syscall.Errno = 0x00040120\n\tMARSHAL_S_LAST                                                            syscall.Errno = 0x0004012F\n\tDATA_E_FIRST                                                              syscall.Errno = 0x80040130\n\tDATA_E_LAST                                                               syscall.Errno = 0x8004013F\n\tDATA_S_FIRST                                                              syscall.Errno = 0x00040130\n\tDATA_S_LAST                                                               syscall.Errno = 0x0004013F\n\tVIEW_E_FIRST                                                              syscall.Errno = 0x80040140\n\tVIEW_E_LAST                                                               syscall.Errno = 0x8004014F\n\tVIEW_S_FIRST                                                              syscall.Errno = 0x00040140\n\tVIEW_S_LAST                                                               syscall.Errno = 0x0004014F\n\tVIEW_E_DRAW                                                               Handle        = 0x80040140\n\tREGDB_E_FIRST                                                             syscall.Errno = 0x80040150\n\tREGDB_E_LAST                                                              syscall.Errno = 0x8004015F\n\tREGDB_S_FIRST                                                             syscall.Errno = 0x00040150\n\tREGDB_S_LAST                                                              syscall.Errno = 0x0004015F\n\tREGDB_E_READREGDB                                                         Handle        = 0x80040150\n\tREGDB_E_WRITEREGDB                                                        Handle        = 0x80040151\n\tREGDB_E_KEYMISSING                                                        Handle        = 0x80040152\n\tREGDB_E_INVALIDVALUE                                                      Handle        = 0x80040153\n\tREGDB_E_CLASSNOTREG                                                       Handle        = 0x80040154\n\tREGDB_E_IIDNOTREG                                                         Handle        = 0x80040155\n\tREGDB_E_BADTHREADINGMODEL                                                 Handle        = 0x80040156\n\tREGDB_E_PACKAGEPOLICYVIOLATION                                            Handle        = 0x80040157\n\tCAT_E_FIRST                                                               syscall.Errno = 0x80040160\n\tCAT_E_LAST                                                                syscall.Errno = 0x80040161\n\tCAT_E_CATIDNOEXIST                                                        Handle        = 0x80040160\n\tCAT_E_NODESCRIPTION                                                       Handle        = 0x80040161\n\tCS_E_FIRST                                                                syscall.Errno = 0x80040164\n\tCS_E_LAST                                                                 syscall.Errno = 0x8004016F\n\tCS_E_PACKAGE_NOTFOUND                                                     Handle        = 0x80040164\n\tCS_E_NOT_DELETABLE                                                        Handle        = 0x80040165\n\tCS_E_CLASS_NOTFOUND                                                       Handle        = 0x80040166\n\tCS_E_INVALID_VERSION                                                      Handle        = 0x80040167\n\tCS_E_NO_CLASSSTORE                                                        Handle        = 0x80040168\n\tCS_E_OBJECT_NOTFOUND                                                      Handle        = 0x80040169\n\tCS_E_OBJECT_ALREADY_EXISTS                                                Handle        = 0x8004016A\n\tCS_E_INVALID_PATH                                                         Handle        = 0x8004016B\n\tCS_E_NETWORK_ERROR                                                        Handle        = 0x8004016C\n\tCS_E_ADMIN_LIMIT_EXCEEDED                                                 Handle        = 0x8004016D\n\tCS_E_SCHEMA_MISMATCH                                                      Handle        = 0x8004016E\n\tCS_E_INTERNAL_ERROR                                                       Handle        = 0x8004016F\n\tCACHE_E_FIRST                                                             syscall.Errno = 0x80040170\n\tCACHE_E_LAST                                                              syscall.Errno = 0x8004017F\n\tCACHE_S_FIRST                                                             syscall.Errno = 0x00040170\n\tCACHE_S_LAST                                                              syscall.Errno = 0x0004017F\n\tCACHE_E_NOCACHE_UPDATED                                                   Handle        = 0x80040170\n\tOLEOBJ_E_FIRST                                                            syscall.Errno = 0x80040180\n\tOLEOBJ_E_LAST                                                             syscall.Errno = 0x8004018F\n\tOLEOBJ_S_FIRST                                                            syscall.Errno = 0x00040180\n\tOLEOBJ_S_LAST                                                             syscall.Errno = 0x0004018F\n\tOLEOBJ_E_NOVERBS                                                          Handle        = 0x80040180\n\tOLEOBJ_E_INVALIDVERB                                                      Handle        = 0x80040181\n\tCLIENTSITE_E_FIRST                                                        syscall.Errno = 0x80040190\n\tCLIENTSITE_E_LAST                                                         syscall.Errno = 0x8004019F\n\tCLIENTSITE_S_FIRST                                                        syscall.Errno = 0x00040190\n\tCLIENTSITE_S_LAST                                                         syscall.Errno = 0x0004019F\n\tINPLACE_E_NOTUNDOABLE                                                     Handle        = 0x800401A0\n\tINPLACE_E_NOTOOLSPACE                                                     Handle        = 0x800401A1\n\tINPLACE_E_FIRST                                                           syscall.Errno = 0x800401A0\n\tINPLACE_E_LAST                                                            syscall.Errno = 0x800401AF\n\tINPLACE_S_FIRST                                                           syscall.Errno = 0x000401A0\n\tINPLACE_S_LAST                                                            syscall.Errno = 0x000401AF\n\tENUM_E_FIRST                                                              syscall.Errno = 0x800401B0\n\tENUM_E_LAST                                                               syscall.Errno = 0x800401BF\n\tENUM_S_FIRST                                                              syscall.Errno = 0x000401B0\n\tENUM_S_LAST                                                               syscall.Errno = 0x000401BF\n\tCONVERT10_E_FIRST                                                         syscall.Errno = 0x800401C0\n\tCONVERT10_E_LAST                                                          syscall.Errno = 0x800401CF\n\tCONVERT10_S_FIRST                                                         syscall.Errno = 0x000401C0\n\tCONVERT10_S_LAST                                                          syscall.Errno = 0x000401CF\n\tCONVERT10_E_OLESTREAM_GET                                                 Handle        = 0x800401C0\n\tCONVERT10_E_OLESTREAM_PUT                                                 Handle        = 0x800401C1\n\tCONVERT10_E_OLESTREAM_FMT                                                 Handle        = 0x800401C2\n\tCONVERT10_E_OLESTREAM_BITMAP_TO_DIB                                       Handle        = 0x800401C3\n\tCONVERT10_E_STG_FMT                                                       Handle        = 0x800401C4\n\tCONVERT10_E_STG_NO_STD_STREAM                                             Handle        = 0x800401C5\n\tCONVERT10_E_STG_DIB_TO_BITMAP                                             Handle        = 0x800401C6\n\tCLIPBRD_E_FIRST                                                           syscall.Errno = 0x800401D0\n\tCLIPBRD_E_LAST                                                            syscall.Errno = 0x800401DF\n\tCLIPBRD_S_FIRST                                                           syscall.Errno = 0x000401D0\n\tCLIPBRD_S_LAST                                                            syscall.Errno = 0x000401DF\n\tCLIPBRD_E_CANT_OPEN                                                       Handle        = 0x800401D0\n\tCLIPBRD_E_CANT_EMPTY                                                      Handle        = 0x800401D1\n\tCLIPBRD_E_CANT_SET                                                        Handle        = 0x800401D2\n\tCLIPBRD_E_BAD_DATA                                                        Handle        = 0x800401D3\n\tCLIPBRD_E_CANT_CLOSE                                                      Handle        = 0x800401D4\n\tMK_E_FIRST                                                                syscall.Errno = 0x800401E0\n\tMK_E_LAST                                                                 syscall.Errno = 0x800401EF\n\tMK_S_FIRST                                                                syscall.Errno = 0x000401E0\n\tMK_S_LAST                                                                 syscall.Errno = 0x000401EF\n\tMK_E_CONNECTMANUALLY                                                      Handle        = 0x800401E0\n\tMK_E_EXCEEDEDDEADLINE                                                     Handle        = 0x800401E1\n\tMK_E_NEEDGENERIC                                                          Handle        = 0x800401E2\n\tMK_E_UNAVAILABLE                                                          Handle        = 0x800401E3\n\tMK_E_SYNTAX                                                               Handle        = 0x800401E4\n\tMK_E_NOOBJECT                                                             Handle        = 0x800401E5\n\tMK_E_INVALIDEXTENSION                                                     Handle        = 0x800401E6\n\tMK_E_INTERMEDIATEINTERFACENOTSUPPORTED                                    Handle        = 0x800401E7\n\tMK_E_NOTBINDABLE                                                          Handle        = 0x800401E8\n\tMK_E_NOTBOUND                                                             Handle        = 0x800401E9\n\tMK_E_CANTOPENFILE                                                         Handle        = 0x800401EA\n\tMK_E_MUSTBOTHERUSER                                                       Handle        = 0x800401EB\n\tMK_E_NOINVERSE                                                            Handle        = 0x800401EC\n\tMK_E_NOSTORAGE                                                            Handle        = 0x800401ED\n\tMK_E_NOPREFIX                                                             Handle        = 0x800401EE\n\tMK_E_ENUMERATION_FAILED                                                   Handle        = 0x800401EF\n\tCO_E_FIRST                                                                syscall.Errno = 0x800401F0\n\tCO_E_LAST                                                                 syscall.Errno = 0x800401FF\n\tCO_S_FIRST                                                                syscall.Errno = 0x000401F0\n\tCO_S_LAST                                                                 syscall.Errno = 0x000401FF\n\tCO_E_NOTINITIALIZED                                                       Handle        = 0x800401F0\n\tCO_E_ALREADYINITIALIZED                                                   Handle        = 0x800401F1\n\tCO_E_CANTDETERMINECLASS                                                   Handle        = 0x800401F2\n\tCO_E_CLASSSTRING                                                          Handle        = 0x800401F3\n\tCO_E_IIDSTRING                                                            Handle        = 0x800401F4\n\tCO_E_APPNOTFOUND                                                          Handle        = 0x800401F5\n\tCO_E_APPSINGLEUSE                                                         Handle        = 0x800401F6\n\tCO_E_ERRORINAPP                                                           Handle        = 0x800401F7\n\tCO_E_DLLNOTFOUND                                                          Handle        = 0x800401F8\n\tCO_E_ERRORINDLL                                                           Handle        = 0x800401F9\n\tCO_E_WRONGOSFORAPP                                                        Handle        = 0x800401FA\n\tCO_E_OBJNOTREG                                                            Handle        = 0x800401FB\n\tCO_E_OBJISREG                                                             Handle        = 0x800401FC\n\tCO_E_OBJNOTCONNECTED                                                      Handle        = 0x800401FD\n\tCO_E_APPDIDNTREG                                                          Handle        = 0x800401FE\n\tCO_E_RELEASED                                                             Handle        = 0x800401FF\n\tEVENT_E_FIRST                                                             syscall.Errno = 0x80040200\n\tEVENT_E_LAST                                                              syscall.Errno = 0x8004021F\n\tEVENT_S_FIRST                                                             syscall.Errno = 0x00040200\n\tEVENT_S_LAST                                                              syscall.Errno = 0x0004021F\n\tEVENT_S_SOME_SUBSCRIBERS_FAILED                                           Handle        = 0x00040200\n\tEVENT_E_ALL_SUBSCRIBERS_FAILED                                            Handle        = 0x80040201\n\tEVENT_S_NOSUBSCRIBERS                                                     Handle        = 0x00040202\n\tEVENT_E_QUERYSYNTAX                                                       Handle        = 0x80040203\n\tEVENT_E_QUERYFIELD                                                        Handle        = 0x80040204\n\tEVENT_E_INTERNALEXCEPTION                                                 Handle        = 0x80040205\n\tEVENT_E_INTERNALERROR                                                     Handle        = 0x80040206\n\tEVENT_E_INVALID_PER_USER_SID                                              Handle        = 0x80040207\n\tEVENT_E_USER_EXCEPTION                                                    Handle        = 0x80040208\n\tEVENT_E_TOO_MANY_METHODS                                                  Handle        = 0x80040209\n\tEVENT_E_MISSING_EVENTCLASS                                                Handle        = 0x8004020A\n\tEVENT_E_NOT_ALL_REMOVED                                                   Handle        = 0x8004020B\n\tEVENT_E_COMPLUS_NOT_INSTALLED                                             Handle        = 0x8004020C\n\tEVENT_E_CANT_MODIFY_OR_DELETE_UNCONFIGURED_OBJECT                         Handle        = 0x8004020D\n\tEVENT_E_CANT_MODIFY_OR_DELETE_CONFIGURED_OBJECT                           Handle        = 0x8004020E\n\tEVENT_E_INVALID_EVENT_CLASS_PARTITION                                     Handle        = 0x8004020F\n\tEVENT_E_PER_USER_SID_NOT_LOGGED_ON                                        Handle        = 0x80040210\n\tTPC_E_INVALID_PROPERTY                                                    Handle        = 0x80040241\n\tTPC_E_NO_DEFAULT_TABLET                                                   Handle        = 0x80040212\n\tTPC_E_UNKNOWN_PROPERTY                                                    Handle        = 0x8004021B\n\tTPC_E_INVALID_INPUT_RECT                                                  Handle        = 0x80040219\n\tTPC_E_INVALID_STROKE                                                      Handle        = 0x80040222\n\tTPC_E_INITIALIZE_FAIL                                                     Handle        = 0x80040223\n\tTPC_E_NOT_RELEVANT                                                        Handle        = 0x80040232\n\tTPC_E_INVALID_PACKET_DESCRIPTION                                          Handle        = 0x80040233\n\tTPC_E_RECOGNIZER_NOT_REGISTERED                                           Handle        = 0x80040235\n\tTPC_E_INVALID_RIGHTS                                                      Handle        = 0x80040236\n\tTPC_E_OUT_OF_ORDER_CALL                                                   Handle        = 0x80040237\n\tTPC_E_QUEUE_FULL                                                          Handle        = 0x80040238\n\tTPC_E_INVALID_CONFIGURATION                                               Handle        = 0x80040239\n\tTPC_E_INVALID_DATA_FROM_RECOGNIZER                                        Handle        = 0x8004023A\n\tTPC_S_TRUNCATED                                                           Handle        = 0x00040252\n\tTPC_S_INTERRUPTED                                                         Handle        = 0x00040253\n\tTPC_S_NO_DATA_TO_PROCESS                                                  Handle        = 0x00040254\n\tXACT_E_FIRST                                                              syscall.Errno = 0x8004D000\n\tXACT_E_LAST                                                               syscall.Errno = 0x8004D02B\n\tXACT_S_FIRST                                                              syscall.Errno = 0x0004D000\n\tXACT_S_LAST                                                               syscall.Errno = 0x0004D010\n\tXACT_E_ALREADYOTHERSINGLEPHASE                                            Handle        = 0x8004D000\n\tXACT_E_CANTRETAIN                                                         Handle        = 0x8004D001\n\tXACT_E_COMMITFAILED                                                       Handle        = 0x8004D002\n\tXACT_E_COMMITPREVENTED                                                    Handle        = 0x8004D003\n\tXACT_E_HEURISTICABORT                                                     Handle        = 0x8004D004\n\tXACT_E_HEURISTICCOMMIT                                                    Handle        = 0x8004D005\n\tXACT_E_HEURISTICDAMAGE                                                    Handle        = 0x8004D006\n\tXACT_E_HEURISTICDANGER                                                    Handle        = 0x8004D007\n\tXACT_E_ISOLATIONLEVEL                                                     Handle        = 0x8004D008\n\tXACT_E_NOASYNC                                                            Handle        = 0x8004D009\n\tXACT_E_NOENLIST                                                           Handle        = 0x8004D00A\n\tXACT_E_NOISORETAIN                                                        Handle        = 0x8004D00B\n\tXACT_E_NORESOURCE                                                         Handle        = 0x8004D00C\n\tXACT_E_NOTCURRENT                                                         Handle        = 0x8004D00D\n\tXACT_E_NOTRANSACTION                                                      Handle        = 0x8004D00E\n\tXACT_E_NOTSUPPORTED                                                       Handle        = 0x8004D00F\n\tXACT_E_UNKNOWNRMGRID                                                      Handle        = 0x8004D010\n\tXACT_E_WRONGSTATE                                                         Handle        = 0x8004D011\n\tXACT_E_WRONGUOW                                                           Handle        = 0x8004D012\n\tXACT_E_XTIONEXISTS                                                        Handle        = 0x8004D013\n\tXACT_E_NOIMPORTOBJECT                                                     Handle        = 0x8004D014\n\tXACT_E_INVALIDCOOKIE                                                      Handle        = 0x8004D015\n\tXACT_E_INDOUBT                                                            Handle        = 0x8004D016\n\tXACT_E_NOTIMEOUT                                                          Handle        = 0x8004D017\n\tXACT_E_ALREADYINPROGRESS                                                  Handle        = 0x8004D018\n\tXACT_E_ABORTED                                                            Handle        = 0x8004D019\n\tXACT_E_LOGFULL                                                            Handle        = 0x8004D01A\n\tXACT_E_TMNOTAVAILABLE                                                     Handle        = 0x8004D01B\n\tXACT_E_CONNECTION_DOWN                                                    Handle        = 0x8004D01C\n\tXACT_E_CONNECTION_DENIED                                                  Handle        = 0x8004D01D\n\tXACT_E_REENLISTTIMEOUT                                                    Handle        = 0x8004D01E\n\tXACT_E_TIP_CONNECT_FAILED                                                 Handle        = 0x8004D01F\n\tXACT_E_TIP_PROTOCOL_ERROR                                                 Handle        = 0x8004D020\n\tXACT_E_TIP_PULL_FAILED                                                    Handle        = 0x8004D021\n\tXACT_E_DEST_TMNOTAVAILABLE                                                Handle        = 0x8004D022\n\tXACT_E_TIP_DISABLED                                                       Handle        = 0x8004D023\n\tXACT_E_NETWORK_TX_DISABLED                                                Handle        = 0x8004D024\n\tXACT_E_PARTNER_NETWORK_TX_DISABLED                                        Handle        = 0x8004D025\n\tXACT_E_XA_TX_DISABLED                                                     Handle        = 0x8004D026\n\tXACT_E_UNABLE_TO_READ_DTC_CONFIG                                          Handle        = 0x8004D027\n\tXACT_E_UNABLE_TO_LOAD_DTC_PROXY                                           Handle        = 0x8004D028\n\tXACT_E_ABORTING                                                           Handle        = 0x8004D029\n\tXACT_E_PUSH_COMM_FAILURE                                                  Handle        = 0x8004D02A\n\tXACT_E_PULL_COMM_FAILURE                                                  Handle        = 0x8004D02B\n\tXACT_E_LU_TX_DISABLED                                                     Handle        = 0x8004D02C\n\tXACT_E_CLERKNOTFOUND                                                      Handle        = 0x8004D080\n\tXACT_E_CLERKEXISTS                                                        Handle        = 0x8004D081\n\tXACT_E_RECOVERYINPROGRESS                                                 Handle        = 0x8004D082\n\tXACT_E_TRANSACTIONCLOSED                                                  Handle        = 0x8004D083\n\tXACT_E_INVALIDLSN                                                         Handle        = 0x8004D084\n\tXACT_E_REPLAYREQUEST                                                      Handle        = 0x8004D085\n\tXACT_S_ASYNC                                                              Handle        = 0x0004D000\n\tXACT_S_DEFECT                                                             Handle        = 0x0004D001\n\tXACT_S_READONLY                                                           Handle        = 0x0004D002\n\tXACT_S_SOMENORETAIN                                                       Handle        = 0x0004D003\n\tXACT_S_OKINFORM                                                           Handle        = 0x0004D004\n\tXACT_S_MADECHANGESCONTENT                                                 Handle        = 0x0004D005\n\tXACT_S_MADECHANGESINFORM                                                  Handle        = 0x0004D006\n\tXACT_S_ALLNORETAIN                                                        Handle        = 0x0004D007\n\tXACT_S_ABORTING                                                           Handle        = 0x0004D008\n\tXACT_S_SINGLEPHASE                                                        Handle        = 0x0004D009\n\tXACT_S_LOCALLY_OK                                                         Handle        = 0x0004D00A\n\tXACT_S_LASTRESOURCEMANAGER                                                Handle        = 0x0004D010\n\tCONTEXT_E_FIRST                                                           syscall.Errno = 0x8004E000\n\tCONTEXT_E_LAST                                                            syscall.Errno = 0x8004E02F\n\tCONTEXT_S_FIRST                                                           syscall.Errno = 0x0004E000\n\tCONTEXT_S_LAST                                                            syscall.Errno = 0x0004E02F\n\tCONTEXT_E_ABORTED                                                         Handle        = 0x8004E002\n\tCONTEXT_E_ABORTING                                                        Handle        = 0x8004E003\n\tCONTEXT_E_NOCONTEXT                                                       Handle        = 0x8004E004\n\tCONTEXT_E_WOULD_DEADLOCK                                                  Handle        = 0x8004E005\n\tCONTEXT_E_SYNCH_TIMEOUT                                                   Handle        = 0x8004E006\n\tCONTEXT_E_OLDREF                                                          Handle        = 0x8004E007\n\tCONTEXT_E_ROLENOTFOUND                                                    Handle        = 0x8004E00C\n\tCONTEXT_E_TMNOTAVAILABLE                                                  Handle        = 0x8004E00F\n\tCO_E_ACTIVATIONFAILED                                                     Handle        = 0x8004E021\n\tCO_E_ACTIVATIONFAILED_EVENTLOGGED                                         Handle        = 0x8004E022\n\tCO_E_ACTIVATIONFAILED_CATALOGERROR                                        Handle        = 0x8004E023\n\tCO_E_ACTIVATIONFAILED_TIMEOUT                                             Handle        = 0x8004E024\n\tCO_E_INITIALIZATIONFAILED                                                 Handle        = 0x8004E025\n\tCONTEXT_E_NOJIT                                                           Handle        = 0x8004E026\n\tCONTEXT_E_NOTRANSACTION                                                   Handle        = 0x8004E027\n\tCO_E_THREADINGMODEL_CHANGED                                               Handle        = 0x8004E028\n\tCO_E_NOIISINTRINSICS                                                      Handle        = 0x8004E029\n\tCO_E_NOCOOKIES                                                            Handle        = 0x8004E02A\n\tCO_E_DBERROR                                                              Handle        = 0x8004E02B\n\tCO_E_NOTPOOLED                                                            Handle        = 0x8004E02C\n\tCO_E_NOTCONSTRUCTED                                                       Handle        = 0x8004E02D\n\tCO_E_NOSYNCHRONIZATION                                                    Handle        = 0x8004E02E\n\tCO_E_ISOLEVELMISMATCH                                                     Handle        = 0x8004E02F\n\tCO_E_CALL_OUT_OF_TX_SCOPE_NOT_ALLOWED                                     Handle        = 0x8004E030\n\tCO_E_EXIT_TRANSACTION_SCOPE_NOT_CALLED                                    Handle        = 0x8004E031\n\tOLE_S_USEREG                                                              Handle        = 0x00040000\n\tOLE_S_STATIC                                                              Handle        = 0x00040001\n\tOLE_S_MAC_CLIPFORMAT                                                      Handle        = 0x00040002\n\tDRAGDROP_S_DROP                                                           Handle        = 0x00040100\n\tDRAGDROP_S_CANCEL                                                         Handle        = 0x00040101\n\tDRAGDROP_S_USEDEFAULTCURSORS                                              Handle        = 0x00040102\n\tDATA_S_SAMEFORMATETC                                                      Handle        = 0x00040130\n\tVIEW_S_ALREADY_FROZEN                                                     Handle        = 0x00040140\n\tCACHE_S_FORMATETC_NOTSUPPORTED                                            Handle        = 0x00040170\n\tCACHE_S_SAMECACHE                                                         Handle        = 0x00040171\n\tCACHE_S_SOMECACHES_NOTUPDATED                                             Handle        = 0x00040172\n\tOLEOBJ_S_INVALIDVERB                                                      Handle        = 0x00040180\n\tOLEOBJ_S_CANNOT_DOVERB_NOW                                                Handle        = 0x00040181\n\tOLEOBJ_S_INVALIDHWND                                                      Handle        = 0x00040182\n\tINPLACE_S_TRUNCATED                                                       Handle        = 0x000401A0\n\tCONVERT10_S_NO_PRESENTATION                                               Handle        = 0x000401C0\n\tMK_S_REDUCED_TO_SELF                                                      Handle        = 0x000401E2\n\tMK_S_ME                                                                   Handle        = 0x000401E4\n\tMK_S_HIM                                                                  Handle        = 0x000401E5\n\tMK_S_US                                                                   Handle        = 0x000401E6\n\tMK_S_MONIKERALREADYREGISTERED                                             Handle        = 0x000401E7\n\tSCHED_S_TASK_READY                                                        Handle        = 0x00041300\n\tSCHED_S_TASK_RUNNING                                                      Handle        = 0x00041301\n\tSCHED_S_TASK_DISABLED                                                     Handle        = 0x00041302\n\tSCHED_S_TASK_HAS_NOT_RUN                                                  Handle        = 0x00041303\n\tSCHED_S_TASK_NO_MORE_RUNS                                                 Handle        = 0x00041304\n\tSCHED_S_TASK_NOT_SCHEDULED                                                Handle        = 0x00041305\n\tSCHED_S_TASK_TERMINATED                                                   Handle        = 0x00041306\n\tSCHED_S_TASK_NO_VALID_TRIGGERS                                            Handle        = 0x00041307\n\tSCHED_S_EVENT_TRIGGER                                                     Handle        = 0x00041308\n\tSCHED_E_TRIGGER_NOT_FOUND                                                 Handle        = 0x80041309\n\tSCHED_E_TASK_NOT_READY                                                    Handle        = 0x8004130A\n\tSCHED_E_TASK_NOT_RUNNING                                                  Handle        = 0x8004130B\n\tSCHED_E_SERVICE_NOT_INSTALLED                                             Handle        = 0x8004130C\n\tSCHED_E_CANNOT_OPEN_TASK                                                  Handle        = 0x8004130D\n\tSCHED_E_INVALID_TASK                                                      Handle        = 0x8004130E\n\tSCHED_E_ACCOUNT_INFORMATION_NOT_SET                                       Handle        = 0x8004130F\n\tSCHED_E_ACCOUNT_NAME_NOT_FOUND                                            Handle        = 0x80041310\n\tSCHED_E_ACCOUNT_DBASE_CORRUPT                                             Handle        = 0x80041311\n\tSCHED_E_NO_SECURITY_SERVICES                                              Handle        = 0x80041312\n\tSCHED_E_UNKNOWN_OBJECT_VERSION                                            Handle        = 0x80041313\n\tSCHED_E_UNSUPPORTED_ACCOUNT_OPTION                                        Handle        = 0x80041314\n\tSCHED_E_SERVICE_NOT_RUNNING                                               Handle        = 0x80041315\n\tSCHED_E_UNEXPECTEDNODE                                                    Handle        = 0x80041316\n\tSCHED_E_NAMESPACE                                                         Handle        = 0x80041317\n\tSCHED_E_INVALIDVALUE                                                      Handle        = 0x80041318\n\tSCHED_E_MISSINGNODE                                                       Handle        = 0x80041319\n\tSCHED_E_MALFORMEDXML                                                      Handle        = 0x8004131A\n\tSCHED_S_SOME_TRIGGERS_FAILED                                              Handle        = 0x0004131B\n\tSCHED_S_BATCH_LOGON_PROBLEM                                               Handle        = 0x0004131C\n\tSCHED_E_TOO_MANY_NODES                                                    Handle        = 0x8004131D\n\tSCHED_E_PAST_END_BOUNDARY                                                 Handle        = 0x8004131E\n\tSCHED_E_ALREADY_RUNNING                                                   Handle        = 0x8004131F\n\tSCHED_E_USER_NOT_LOGGED_ON                                                Handle        = 0x80041320\n\tSCHED_E_INVALID_TASK_HASH                                                 Handle        = 0x80041321\n\tSCHED_E_SERVICE_NOT_AVAILABLE                                             Handle        = 0x80041322\n\tSCHED_E_SERVICE_TOO_BUSY                                                  Handle        = 0x80041323\n\tSCHED_E_TASK_ATTEMPTED                                                    Handle        = 0x80041324\n\tSCHED_S_TASK_QUEUED                                                       Handle        = 0x00041325\n\tSCHED_E_TASK_DISABLED                                                     Handle        = 0x80041326\n\tSCHED_E_TASK_NOT_V1_COMPAT                                                Handle        = 0x80041327\n\tSCHED_E_START_ON_DEMAND                                                   Handle        = 0x80041328\n\tSCHED_E_TASK_NOT_UBPM_COMPAT                                              Handle        = 0x80041329\n\tSCHED_E_DEPRECATED_FEATURE_USED                                           Handle        = 0x80041330\n\tCO_E_CLASS_CREATE_FAILED                                                  Handle        = 0x80080001\n\tCO_E_SCM_ERROR                                                            Handle        = 0x80080002\n\tCO_E_SCM_RPC_FAILURE                                                      Handle        = 0x80080003\n\tCO_E_BAD_PATH                                                             Handle        = 0x80080004\n\tCO_E_SERVER_EXEC_FAILURE                                                  Handle        = 0x80080005\n\tCO_E_OBJSRV_RPC_FAILURE                                                   Handle        = 0x80080006\n\tMK_E_NO_NORMALIZED                                                        Handle        = 0x80080007\n\tCO_E_SERVER_STOPPING                                                      Handle        = 0x80080008\n\tMEM_E_INVALID_ROOT                                                        Handle        = 0x80080009\n\tMEM_E_INVALID_LINK                                                        Handle        = 0x80080010\n\tMEM_E_INVALID_SIZE                                                        Handle        = 0x80080011\n\tCO_S_NOTALLINTERFACES                                                     Handle        = 0x00080012\n\tCO_S_MACHINENAMENOTFOUND                                                  Handle        = 0x00080013\n\tCO_E_MISSING_DISPLAYNAME                                                  Handle        = 0x80080015\n\tCO_E_RUNAS_VALUE_MUST_BE_AAA                                              Handle        = 0x80080016\n\tCO_E_ELEVATION_DISABLED                                                   Handle        = 0x80080017\n\tAPPX_E_PACKAGING_INTERNAL                                                 Handle        = 0x80080200\n\tAPPX_E_INTERLEAVING_NOT_ALLOWED                                           Handle        = 0x80080201\n\tAPPX_E_RELATIONSHIPS_NOT_ALLOWED                                          Handle        = 0x80080202\n\tAPPX_E_MISSING_REQUIRED_FILE                                              Handle        = 0x80080203\n\tAPPX_E_INVALID_MANIFEST                                                   Handle        = 0x80080204\n\tAPPX_E_INVALID_BLOCKMAP                                                   Handle        = 0x80080205\n\tAPPX_E_CORRUPT_CONTENT                                                    Handle        = 0x80080206\n\tAPPX_E_BLOCK_HASH_INVALID                                                 Handle        = 0x80080207\n\tAPPX_E_REQUESTED_RANGE_TOO_LARGE                                          Handle        = 0x80080208\n\tAPPX_E_INVALID_SIP_CLIENT_DATA                                            Handle        = 0x80080209\n\tAPPX_E_INVALID_KEY_INFO                                                   Handle        = 0x8008020A\n\tAPPX_E_INVALID_CONTENTGROUPMAP                                            Handle        = 0x8008020B\n\tAPPX_E_INVALID_APPINSTALLER                                               Handle        = 0x8008020C\n\tAPPX_E_DELTA_BASELINE_VERSION_MISMATCH                                    Handle        = 0x8008020D\n\tAPPX_E_DELTA_PACKAGE_MISSING_FILE                                         Handle        = 0x8008020E\n\tAPPX_E_INVALID_DELTA_PACKAGE                                              Handle        = 0x8008020F\n\tAPPX_E_DELTA_APPENDED_PACKAGE_NOT_ALLOWED                                 Handle        = 0x80080210\n\tAPPX_E_INVALID_PACKAGING_LAYOUT                                           Handle        = 0x80080211\n\tAPPX_E_INVALID_PACKAGESIGNCONFIG                                          Handle        = 0x80080212\n\tAPPX_E_RESOURCESPRI_NOT_ALLOWED                                           Handle        = 0x80080213\n\tAPPX_E_FILE_COMPRESSION_MISMATCH                                          Handle        = 0x80080214\n\tAPPX_E_INVALID_PAYLOAD_PACKAGE_EXTENSION                                  Handle        = 0x80080215\n\tAPPX_E_INVALID_ENCRYPTION_EXCLUSION_FILE_LIST                             Handle        = 0x80080216\n\tBT_E_SPURIOUS_ACTIVATION                                                  Handle        = 0x80080300\n\tDISP_E_UNKNOWNINTERFACE                                                   Handle        = 0x80020001\n\tDISP_E_MEMBERNOTFOUND                                                     Handle        = 0x80020003\n\tDISP_E_PARAMNOTFOUND                                                      Handle        = 0x80020004\n\tDISP_E_TYPEMISMATCH                                                       Handle        = 0x80020005\n\tDISP_E_UNKNOWNNAME                                                        Handle        = 0x80020006\n\tDISP_E_NONAMEDARGS                                                        Handle        = 0x80020007\n\tDISP_E_BADVARTYPE                                                         Handle        = 0x80020008\n\tDISP_E_EXCEPTION                                                          Handle        = 0x80020009\n\tDISP_E_OVERFLOW                                                           Handle        = 0x8002000A\n\tDISP_E_BADINDEX                                                           Handle        = 0x8002000B\n\tDISP_E_UNKNOWNLCID                                                        Handle        = 0x8002000C\n\tDISP_E_ARRAYISLOCKED                                                      Handle        = 0x8002000D\n\tDISP_E_BADPARAMCOUNT                                                      Handle        = 0x8002000E\n\tDISP_E_PARAMNOTOPTIONAL                                                   Handle        = 0x8002000F\n\tDISP_E_BADCALLEE                                                          Handle        = 0x80020010\n\tDISP_E_NOTACOLLECTION                                                     Handle        = 0x80020011\n\tDISP_E_DIVBYZERO                                                          Handle        = 0x80020012\n\tDISP_E_BUFFERTOOSMALL                                                     Handle        = 0x80020013\n\tTYPE_E_BUFFERTOOSMALL                                                     Handle        = 0x80028016\n\tTYPE_E_FIELDNOTFOUND                                                      Handle        = 0x80028017\n\tTYPE_E_INVDATAREAD                                                        Handle        = 0x80028018\n\tTYPE_E_UNSUPFORMAT                                                        Handle        = 0x80028019\n\tTYPE_E_REGISTRYACCESS                                                     Handle        = 0x8002801C\n\tTYPE_E_LIBNOTREGISTERED                                                   Handle        = 0x8002801D\n\tTYPE_E_UNDEFINEDTYPE                                                      Handle        = 0x80028027\n\tTYPE_E_QUALIFIEDNAMEDISALLOWED                                            Handle        = 0x80028028\n\tTYPE_E_INVALIDSTATE                                                       Handle        = 0x80028029\n\tTYPE_E_WRONGTYPEKIND                                                      Handle        = 0x8002802A\n\tTYPE_E_ELEMENTNOTFOUND                                                    Handle        = 0x8002802B\n\tTYPE_E_AMBIGUOUSNAME                                                      Handle        = 0x8002802C\n\tTYPE_E_NAMECONFLICT                                                       Handle        = 0x8002802D\n\tTYPE_E_UNKNOWNLCID                                                        Handle        = 0x8002802E\n\tTYPE_E_DLLFUNCTIONNOTFOUND                                                Handle        = 0x8002802F\n\tTYPE_E_BADMODULEKIND                                                      Handle        = 0x800288BD\n\tTYPE_E_SIZETOOBIG                                                         Handle        = 0x800288C5\n\tTYPE_E_DUPLICATEID                                                        Handle        = 0x800288C6\n\tTYPE_E_INVALIDID                                                          Handle        = 0x800288CF\n\tTYPE_E_TYPEMISMATCH                                                       Handle        = 0x80028CA0\n\tTYPE_E_OUTOFBOUNDS                                                        Handle        = 0x80028CA1\n\tTYPE_E_IOERROR                                                            Handle        = 0x80028CA2\n\tTYPE_E_CANTCREATETMPFILE                                                  Handle        = 0x80028CA3\n\tTYPE_E_CANTLOADLIBRARY                                                    Handle        = 0x80029C4A\n\tTYPE_E_INCONSISTENTPROPFUNCS                                              Handle        = 0x80029C83\n\tTYPE_E_CIRCULARTYPE                                                       Handle        = 0x80029C84\n\tSTG_E_INVALIDFUNCTION                                                     Handle        = 0x80030001\n\tSTG_E_FILENOTFOUND                                                        Handle        = 0x80030002\n\tSTG_E_PATHNOTFOUND                                                        Handle        = 0x80030003\n\tSTG_E_TOOMANYOPENFILES                                                    Handle        = 0x80030004\n\tSTG_E_ACCESSDENIED                                                        Handle        = 0x80030005\n\tSTG_E_INVALIDHANDLE                                                       Handle        = 0x80030006\n\tSTG_E_INSUFFICIENTMEMORY                                                  Handle        = 0x80030008\n\tSTG_E_INVALIDPOINTER                                                      Handle        = 0x80030009\n\tSTG_E_NOMOREFILES                                                         Handle        = 0x80030012\n\tSTG_E_DISKISWRITEPROTECTED                                                Handle        = 0x80030013\n\tSTG_E_SEEKERROR                                                           Handle        = 0x80030019\n\tSTG_E_WRITEFAULT                                                          Handle        = 0x8003001D\n\tSTG_E_READFAULT                                                           Handle        = 0x8003001E\n\tSTG_E_SHAREVIOLATION                                                      Handle        = 0x80030020\n\tSTG_E_LOCKVIOLATION                                                       Handle        = 0x80030021\n\tSTG_E_FILEALREADYEXISTS                                                   Handle        = 0x80030050\n\tSTG_E_INVALIDPARAMETER                                                    Handle        = 0x80030057\n\tSTG_E_MEDIUMFULL                                                          Handle        = 0x80030070\n\tSTG_E_PROPSETMISMATCHED                                                   Handle        = 0x800300F0\n\tSTG_E_ABNORMALAPIEXIT                                                     Handle        = 0x800300FA\n\tSTG_E_INVALIDHEADER                                                       Handle        = 0x800300FB\n\tSTG_E_INVALIDNAME                                                         Handle        = 0x800300FC\n\tSTG_E_UNKNOWN                                                             Handle        = 0x800300FD\n\tSTG_E_UNIMPLEMENTEDFUNCTION                                               Handle        = 0x800300FE\n\tSTG_E_INVALIDFLAG                                                         Handle        = 0x800300FF\n\tSTG_E_INUSE                                                               Handle        = 0x80030100\n\tSTG_E_NOTCURRENT                                                          Handle        = 0x80030101\n\tSTG_E_REVERTED                                                            Handle        = 0x80030102\n\tSTG_E_CANTSAVE                                                            Handle        = 0x80030103\n\tSTG_E_OLDFORMAT                                                           Handle        = 0x80030104\n\tSTG_E_OLDDLL                                                              Handle        = 0x80030105\n\tSTG_E_SHAREREQUIRED                                                       Handle        = 0x80030106\n\tSTG_E_NOTFILEBASEDSTORAGE                                                 Handle        = 0x80030107\n\tSTG_E_EXTANTMARSHALLINGS                                                  Handle        = 0x80030108\n\tSTG_E_DOCFILECORRUPT                                                      Handle        = 0x80030109\n\tSTG_E_BADBASEADDRESS                                                      Handle        = 0x80030110\n\tSTG_E_DOCFILETOOLARGE                                                     Handle        = 0x80030111\n\tSTG_E_NOTSIMPLEFORMAT                                                     Handle        = 0x80030112\n\tSTG_E_INCOMPLETE                                                          Handle        = 0x80030201\n\tSTG_E_TERMINATED                                                          Handle        = 0x80030202\n\tSTG_S_CONVERTED                                                           Handle        = 0x00030200\n\tSTG_S_BLOCK                                                               Handle        = 0x00030201\n\tSTG_S_RETRYNOW                                                            Handle        = 0x00030202\n\tSTG_S_MONITORING                                                          Handle        = 0x00030203\n\tSTG_S_MULTIPLEOPENS                                                       Handle        = 0x00030204\n\tSTG_S_CONSOLIDATIONFAILED                                                 Handle        = 0x00030205\n\tSTG_S_CANNOTCONSOLIDATE                                                   Handle        = 0x00030206\n\tSTG_S_POWER_CYCLE_REQUIRED                                                Handle        = 0x00030207\n\tSTG_E_FIRMWARE_SLOT_INVALID                                               Handle        = 0x80030208\n\tSTG_E_FIRMWARE_IMAGE_INVALID                                              Handle        = 0x80030209\n\tSTG_E_DEVICE_UNRESPONSIVE                                                 Handle        = 0x8003020A\n\tSTG_E_STATUS_COPY_PROTECTION_FAILURE                                      Handle        = 0x80030305\n\tSTG_E_CSS_AUTHENTICATION_FAILURE                                          Handle        = 0x80030306\n\tSTG_E_CSS_KEY_NOT_PRESENT                                                 Handle        = 0x80030307\n\tSTG_E_CSS_KEY_NOT_ESTABLISHED                                             Handle        = 0x80030308\n\tSTG_E_CSS_SCRAMBLED_SECTOR                                                Handle        = 0x80030309\n\tSTG_E_CSS_REGION_MISMATCH                                                 Handle        = 0x8003030A\n\tSTG_E_RESETS_EXHAUSTED                                                    Handle        = 0x8003030B\n\tRPC_E_CALL_REJECTED                                                       Handle        = 0x80010001\n\tRPC_E_CALL_CANCELED                                                       Handle        = 0x80010002\n\tRPC_E_CANTPOST_INSENDCALL                                                 Handle        = 0x80010003\n\tRPC_E_CANTCALLOUT_INASYNCCALL                                             Handle        = 0x80010004\n\tRPC_E_CANTCALLOUT_INEXTERNALCALL                                          Handle        = 0x80010005\n\tRPC_E_CONNECTION_TERMINATED                                               Handle        = 0x80010006\n\tRPC_E_SERVER_DIED                                                         Handle        = 0x80010007\n\tRPC_E_CLIENT_DIED                                                         Handle        = 0x80010008\n\tRPC_E_INVALID_DATAPACKET                                                  Handle        = 0x80010009\n\tRPC_E_CANTTRANSMIT_CALL                                                   Handle        = 0x8001000A\n\tRPC_E_CLIENT_CANTMARSHAL_DATA                                             Handle        = 0x8001000B\n\tRPC_E_CLIENT_CANTUNMARSHAL_DATA                                           Handle        = 0x8001000C\n\tRPC_E_SERVER_CANTMARSHAL_DATA                                             Handle        = 0x8001000D\n\tRPC_E_SERVER_CANTUNMARSHAL_DATA                                           Handle        = 0x8001000E\n\tRPC_E_INVALID_DATA                                                        Handle        = 0x8001000F\n\tRPC_E_INVALID_PARAMETER                                                   Handle        = 0x80010010\n\tRPC_E_CANTCALLOUT_AGAIN                                                   Handle        = 0x80010011\n\tRPC_E_SERVER_DIED_DNE                                                     Handle        = 0x80010012\n\tRPC_E_SYS_CALL_FAILED                                                     Handle        = 0x80010100\n\tRPC_E_OUT_OF_RESOURCES                                                    Handle        = 0x80010101\n\tRPC_E_ATTEMPTED_MULTITHREAD                                               Handle        = 0x80010102\n\tRPC_E_NOT_REGISTERED                                                      Handle        = 0x80010103\n\tRPC_E_FAULT                                                               Handle        = 0x80010104\n\tRPC_E_SERVERFAULT                                                         Handle        = 0x80010105\n\tRPC_E_CHANGED_MODE                                                        Handle        = 0x80010106\n\tRPC_E_INVALIDMETHOD                                                       Handle        = 0x80010107\n\tRPC_E_DISCONNECTED                                                        Handle        = 0x80010108\n\tRPC_E_RETRY                                                               Handle        = 0x80010109\n\tRPC_E_SERVERCALL_RETRYLATER                                               Handle        = 0x8001010A\n\tRPC_E_SERVERCALL_REJECTED                                                 Handle        = 0x8001010B\n\tRPC_E_INVALID_CALLDATA                                                    Handle        = 0x8001010C\n\tRPC_E_CANTCALLOUT_ININPUTSYNCCALL                                         Handle        = 0x8001010D\n\tRPC_E_WRONG_THREAD                                                        Handle        = 0x8001010E\n\tRPC_E_THREAD_NOT_INIT                                                     Handle        = 0x8001010F\n\tRPC_E_VERSION_MISMATCH                                                    Handle        = 0x80010110\n\tRPC_E_INVALID_HEADER                                                      Handle        = 0x80010111\n\tRPC_E_INVALID_EXTENSION                                                   Handle        = 0x80010112\n\tRPC_E_INVALID_IPID                                                        Handle        = 0x80010113\n\tRPC_E_INVALID_OBJECT                                                      Handle        = 0x80010114\n\tRPC_S_CALLPENDING                                                         Handle        = 0x80010115\n\tRPC_S_WAITONTIMER                                                         Handle        = 0x80010116\n\tRPC_E_CALL_COMPLETE                                                       Handle        = 0x80010117\n\tRPC_E_UNSECURE_CALL                                                       Handle        = 0x80010118\n\tRPC_E_TOO_LATE                                                            Handle        = 0x80010119\n\tRPC_E_NO_GOOD_SECURITY_PACKAGES                                           Handle        = 0x8001011A\n\tRPC_E_ACCESS_DENIED                                                       Handle        = 0x8001011B\n\tRPC_E_REMOTE_DISABLED                                                     Handle        = 0x8001011C\n\tRPC_E_INVALID_OBJREF                                                      Handle        = 0x8001011D\n\tRPC_E_NO_CONTEXT                                                          Handle        = 0x8001011E\n\tRPC_E_TIMEOUT                                                             Handle        = 0x8001011F\n\tRPC_E_NO_SYNC                                                             Handle        = 0x80010120\n\tRPC_E_FULLSIC_REQUIRED                                                    Handle        = 0x80010121\n\tRPC_E_INVALID_STD_NAME                                                    Handle        = 0x80010122\n\tCO_E_FAILEDTOIMPERSONATE                                                  Handle        = 0x80010123\n\tCO_E_FAILEDTOGETSECCTX                                                    Handle        = 0x80010124\n\tCO_E_FAILEDTOOPENTHREADTOKEN                                              Handle        = 0x80010125\n\tCO_E_FAILEDTOGETTOKENINFO                                                 Handle        = 0x80010126\n\tCO_E_TRUSTEEDOESNTMATCHCLIENT                                             Handle        = 0x80010127\n\tCO_E_FAILEDTOQUERYCLIENTBLANKET                                           Handle        = 0x80010128\n\tCO_E_FAILEDTOSETDACL                                                      Handle        = 0x80010129\n\tCO_E_ACCESSCHECKFAILED                                                    Handle        = 0x8001012A\n\tCO_E_NETACCESSAPIFAILED                                                   Handle        = 0x8001012B\n\tCO_E_WRONGTRUSTEENAMESYNTAX                                               Handle        = 0x8001012C\n\tCO_E_INVALIDSID                                                           Handle        = 0x8001012D\n\tCO_E_CONVERSIONFAILED                                                     Handle        = 0x8001012E\n\tCO_E_NOMATCHINGSIDFOUND                                                   Handle        = 0x8001012F\n\tCO_E_LOOKUPACCSIDFAILED                                                   Handle        = 0x80010130\n\tCO_E_NOMATCHINGNAMEFOUND                                                  Handle        = 0x80010131\n\tCO_E_LOOKUPACCNAMEFAILED                                                  Handle        = 0x80010132\n\tCO_E_SETSERLHNDLFAILED                                                    Handle        = 0x80010133\n\tCO_E_FAILEDTOGETWINDIR                                                    Handle        = 0x80010134\n\tCO_E_PATHTOOLONG                                                          Handle        = 0x80010135\n\tCO_E_FAILEDTOGENUUID                                                      Handle        = 0x80010136\n\tCO_E_FAILEDTOCREATEFILE                                                   Handle        = 0x80010137\n\tCO_E_FAILEDTOCLOSEHANDLE                                                  Handle        = 0x80010138\n\tCO_E_EXCEEDSYSACLLIMIT                                                    Handle        = 0x80010139\n\tCO_E_ACESINWRONGORDER                                                     Handle        = 0x8001013A\n\tCO_E_INCOMPATIBLESTREAMVERSION                                            Handle        = 0x8001013B\n\tCO_E_FAILEDTOOPENPROCESSTOKEN                                             Handle        = 0x8001013C\n\tCO_E_DECODEFAILED                                                         Handle        = 0x8001013D\n\tCO_E_ACNOTINITIALIZED                                                     Handle        = 0x8001013F\n\tCO_E_CANCEL_DISABLED                                                      Handle        = 0x80010140\n\tRPC_E_UNEXPECTED                                                          Handle        = 0x8001FFFF\n\tERROR_AUDITING_DISABLED                                                   Handle        = 0xC0090001\n\tERROR_ALL_SIDS_FILTERED                                                   Handle        = 0xC0090002\n\tERROR_BIZRULES_NOT_ENABLED                                                Handle        = 0xC0090003\n\tNTE_BAD_UID                                                               Handle        = 0x80090001\n\tNTE_BAD_HASH                                                              Handle        = 0x80090002\n\tNTE_BAD_KEY                                                               Handle        = 0x80090003\n\tNTE_BAD_LEN                                                               Handle        = 0x80090004\n\tNTE_BAD_DATA                                                              Handle        = 0x80090005\n\tNTE_BAD_SIGNATURE                                                         Handle        = 0x80090006\n\tNTE_BAD_VER                                                               Handle        = 0x80090007\n\tNTE_BAD_ALGID                                                             Handle        = 0x80090008\n\tNTE_BAD_FLAGS                                                             Handle        = 0x80090009\n\tNTE_BAD_TYPE                                                              Handle        = 0x8009000A\n\tNTE_BAD_KEY_STATE                                                         Handle        = 0x8009000B\n\tNTE_BAD_HASH_STATE                                                        Handle        = 0x8009000C\n\tNTE_NO_KEY                                                                Handle        = 0x8009000D\n\tNTE_NO_MEMORY                                                             Handle        = 0x8009000E\n\tNTE_EXISTS                                                                Handle        = 0x8009000F\n\tNTE_PERM                                                                  Handle        = 0x80090010\n\tNTE_NOT_FOUND                                                             Handle        = 0x80090011\n\tNTE_DOUBLE_ENCRYPT                                                        Handle        = 0x80090012\n\tNTE_BAD_PROVIDER                                                          Handle        = 0x80090013\n\tNTE_BAD_PROV_TYPE                                                         Handle        = 0x80090014\n\tNTE_BAD_PUBLIC_KEY                                                        Handle        = 0x80090015\n\tNTE_BAD_KEYSET                                                            Handle        = 0x80090016\n\tNTE_PROV_TYPE_NOT_DEF                                                     Handle        = 0x80090017\n\tNTE_PROV_TYPE_ENTRY_BAD                                                   Handle        = 0x80090018\n\tNTE_KEYSET_NOT_DEF                                                        Handle        = 0x80090019\n\tNTE_KEYSET_ENTRY_BAD                                                      Handle        = 0x8009001A\n\tNTE_PROV_TYPE_NO_MATCH                                                    Handle        = 0x8009001B\n\tNTE_SIGNATURE_FILE_BAD                                                    Handle        = 0x8009001C\n\tNTE_PROVIDER_DLL_FAIL                                                     Handle        = 0x8009001D\n\tNTE_PROV_DLL_NOT_FOUND                                                    Handle        = 0x8009001E\n\tNTE_BAD_KEYSET_PARAM                                                      Handle        = 0x8009001F\n\tNTE_FAIL                                                                  Handle        = 0x80090020\n\tNTE_SYS_ERR                                                               Handle        = 0x80090021\n\tNTE_SILENT_CONTEXT                                                        Handle        = 0x80090022\n\tNTE_TOKEN_KEYSET_STORAGE_FULL                                             Handle        = 0x80090023\n\tNTE_TEMPORARY_PROFILE                                                     Handle        = 0x80090024\n\tNTE_FIXEDPARAMETER                                                        Handle        = 0x80090025\n\tNTE_INVALID_HANDLE                                                        Handle        = 0x80090026\n\tNTE_INVALID_PARAMETER                                                     Handle        = 0x80090027\n\tNTE_BUFFER_TOO_SMALL                                                      Handle        = 0x80090028\n\tNTE_NOT_SUPPORTED                                                         Handle        = 0x80090029\n\tNTE_NO_MORE_ITEMS                                                         Handle        = 0x8009002A\n\tNTE_BUFFERS_OVERLAP                                                       Handle        = 0x8009002B\n\tNTE_DECRYPTION_FAILURE                                                    Handle        = 0x8009002C\n\tNTE_INTERNAL_ERROR                                                        Handle        = 0x8009002D\n\tNTE_UI_REQUIRED                                                           Handle        = 0x8009002E\n\tNTE_HMAC_NOT_SUPPORTED                                                    Handle        = 0x8009002F\n\tNTE_DEVICE_NOT_READY                                                      Handle        = 0x80090030\n\tNTE_AUTHENTICATION_IGNORED                                                Handle        = 0x80090031\n\tNTE_VALIDATION_FAILED                                                     Handle        = 0x80090032\n\tNTE_INCORRECT_PASSWORD                                                    Handle        = 0x80090033\n\tNTE_ENCRYPTION_FAILURE                                                    Handle        = 0x80090034\n\tNTE_DEVICE_NOT_FOUND                                                      Handle        = 0x80090035\n\tNTE_USER_CANCELLED                                                        Handle        = 0x80090036\n\tNTE_PASSWORD_CHANGE_REQUIRED                                              Handle        = 0x80090037\n\tNTE_NOT_ACTIVE_CONSOLE                                                    Handle        = 0x80090038\n\tSEC_E_INSUFFICIENT_MEMORY                                                 Handle        = 0x80090300\n\tSEC_E_INVALID_HANDLE                                                      Handle        = 0x80090301\n\tSEC_E_UNSUPPORTED_FUNCTION                                                Handle        = 0x80090302\n\tSEC_E_TARGET_UNKNOWN                                                      Handle        = 0x80090303\n\tSEC_E_INTERNAL_ERROR                                                      Handle        = 0x80090304\n\tSEC_E_SECPKG_NOT_FOUND                                                    Handle        = 0x80090305\n\tSEC_E_NOT_OWNER                                                           Handle        = 0x80090306\n\tSEC_E_CANNOT_INSTALL                                                      Handle        = 0x80090307\n\tSEC_E_INVALID_TOKEN                                                       Handle        = 0x80090308\n\tSEC_E_CANNOT_PACK                                                         Handle        = 0x80090309\n\tSEC_E_QOP_NOT_SUPPORTED                                                   Handle        = 0x8009030A\n\tSEC_E_NO_IMPERSONATION                                                    Handle        = 0x8009030B\n\tSEC_E_LOGON_DENIED                                                        Handle        = 0x8009030C\n\tSEC_E_UNKNOWN_CREDENTIALS                                                 Handle        = 0x8009030D\n\tSEC_E_NO_CREDENTIALS                                                      Handle        = 0x8009030E\n\tSEC_E_MESSAGE_ALTERED                                                     Handle        = 0x8009030F\n\tSEC_E_OUT_OF_SEQUENCE                                                     Handle        = 0x80090310\n\tSEC_E_NO_AUTHENTICATING_AUTHORITY                                         Handle        = 0x80090311\n\tSEC_I_CONTINUE_NEEDED                                                     Handle        = 0x00090312\n\tSEC_I_COMPLETE_NEEDED                                                     Handle        = 0x00090313\n\tSEC_I_COMPLETE_AND_CONTINUE                                               Handle        = 0x00090314\n\tSEC_I_LOCAL_LOGON                                                         Handle        = 0x00090315\n\tSEC_I_GENERIC_EXTENSION_RECEIVED                                          Handle        = 0x00090316\n\tSEC_E_BAD_PKGID                                                           Handle        = 0x80090316\n\tSEC_E_CONTEXT_EXPIRED                                                     Handle        = 0x80090317\n\tSEC_I_CONTEXT_EXPIRED                                                     Handle        = 0x00090317\n\tSEC_E_INCOMPLETE_MESSAGE                                                  Handle        = 0x80090318\n\tSEC_E_INCOMPLETE_CREDENTIALS                                              Handle        = 0x80090320\n\tSEC_E_BUFFER_TOO_SMALL                                                    Handle        = 0x80090321\n\tSEC_I_INCOMPLETE_CREDENTIALS                                              Handle        = 0x00090320\n\tSEC_I_RENEGOTIATE                                                         Handle        = 0x00090321\n\tSEC_E_WRONG_PRINCIPAL                                                     Handle        = 0x80090322\n\tSEC_I_NO_LSA_CONTEXT                                                      Handle        = 0x00090323\n\tSEC_E_TIME_SKEW                                                           Handle        = 0x80090324\n\tSEC_E_UNTRUSTED_ROOT                                                      Handle        = 0x80090325\n\tSEC_E_ILLEGAL_MESSAGE                                                     Handle        = 0x80090326\n\tSEC_E_CERT_UNKNOWN                                                        Handle        = 0x80090327\n\tSEC_E_CERT_EXPIRED                                                        Handle        = 0x80090328\n\tSEC_E_ENCRYPT_FAILURE                                                     Handle        = 0x80090329\n\tSEC_E_DECRYPT_FAILURE                                                     Handle        = 0x80090330\n\tSEC_E_ALGORITHM_MISMATCH                                                  Handle        = 0x80090331\n\tSEC_E_SECURITY_QOS_FAILED                                                 Handle        = 0x80090332\n\tSEC_E_UNFINISHED_CONTEXT_DELETED                                          Handle        = 0x80090333\n\tSEC_E_NO_TGT_REPLY                                                        Handle        = 0x80090334\n\tSEC_E_NO_IP_ADDRESSES                                                     Handle        = 0x80090335\n\tSEC_E_WRONG_CREDENTIAL_HANDLE                                             Handle        = 0x80090336\n\tSEC_E_CRYPTO_SYSTEM_INVALID                                               Handle        = 0x80090337\n\tSEC_E_MAX_REFERRALS_EXCEEDED                                              Handle        = 0x80090338\n\tSEC_E_MUST_BE_KDC                                                         Handle        = 0x80090339\n\tSEC_E_STRONG_CRYPTO_NOT_SUPPORTED                                         Handle        = 0x8009033A\n\tSEC_E_TOO_MANY_PRINCIPALS                                                 Handle        = 0x8009033B\n\tSEC_E_NO_PA_DATA                                                          Handle        = 0x8009033C\n\tSEC_E_PKINIT_NAME_MISMATCH                                                Handle        = 0x8009033D\n\tSEC_E_SMARTCARD_LOGON_REQUIRED                                            Handle        = 0x8009033E\n\tSEC_E_SHUTDOWN_IN_PROGRESS                                                Handle        = 0x8009033F\n\tSEC_E_KDC_INVALID_REQUEST                                                 Handle        = 0x80090340\n\tSEC_E_KDC_UNABLE_TO_REFER                                                 Handle        = 0x80090341\n\tSEC_E_KDC_UNKNOWN_ETYPE                                                   Handle        = 0x80090342\n\tSEC_E_UNSUPPORTED_PREAUTH                                                 Handle        = 0x80090343\n\tSEC_E_DELEGATION_REQUIRED                                                 Handle        = 0x80090345\n\tSEC_E_BAD_BINDINGS                                                        Handle        = 0x80090346\n\tSEC_E_MULTIPLE_ACCOUNTS                                                   Handle        = 0x80090347\n\tSEC_E_NO_KERB_KEY                                                         Handle        = 0x80090348\n\tSEC_E_CERT_WRONG_USAGE                                                    Handle        = 0x80090349\n\tSEC_E_DOWNGRADE_DETECTED                                                  Handle        = 0x80090350\n\tSEC_E_SMARTCARD_CERT_REVOKED                                              Handle        = 0x80090351\n\tSEC_E_ISSUING_CA_UNTRUSTED                                                Handle        = 0x80090352\n\tSEC_E_REVOCATION_OFFLINE_C                                                Handle        = 0x80090353\n\tSEC_E_PKINIT_CLIENT_FAILURE                                               Handle        = 0x80090354\n\tSEC_E_SMARTCARD_CERT_EXPIRED                                              Handle        = 0x80090355\n\tSEC_E_NO_S4U_PROT_SUPPORT                                                 Handle        = 0x80090356\n\tSEC_E_CROSSREALM_DELEGATION_FAILURE                                       Handle        = 0x80090357\n\tSEC_E_REVOCATION_OFFLINE_KDC                                              Handle        = 0x80090358\n\tSEC_E_ISSUING_CA_UNTRUSTED_KDC                                            Handle        = 0x80090359\n\tSEC_E_KDC_CERT_EXPIRED                                                    Handle        = 0x8009035A\n\tSEC_E_KDC_CERT_REVOKED                                                    Handle        = 0x8009035B\n\tSEC_I_SIGNATURE_NEEDED                                                    Handle        = 0x0009035C\n\tSEC_E_INVALID_PARAMETER                                                   Handle        = 0x8009035D\n\tSEC_E_DELEGATION_POLICY                                                   Handle        = 0x8009035E\n\tSEC_E_POLICY_NLTM_ONLY                                                    Handle        = 0x8009035F\n\tSEC_I_NO_RENEGOTIATION                                                    Handle        = 0x00090360\n\tSEC_E_NO_CONTEXT                                                          Handle        = 0x80090361\n\tSEC_E_PKU2U_CERT_FAILURE                                                  Handle        = 0x80090362\n\tSEC_E_MUTUAL_AUTH_FAILED                                                  Handle        = 0x80090363\n\tSEC_I_MESSAGE_FRAGMENT                                                    Handle        = 0x00090364\n\tSEC_E_ONLY_HTTPS_ALLOWED                                                  Handle        = 0x80090365\n\tSEC_I_CONTINUE_NEEDED_MESSAGE_OK                                          Handle        = 0x00090366\n\tSEC_E_APPLICATION_PROTOCOL_MISMATCH                                       Handle        = 0x80090367\n\tSEC_I_ASYNC_CALL_PENDING                                                  Handle        = 0x00090368\n\tSEC_E_INVALID_UPN_NAME                                                    Handle        = 0x80090369\n\tSEC_E_EXT_BUFFER_TOO_SMALL                                                Handle        = 0x8009036A\n\tSEC_E_INSUFFICIENT_BUFFERS                                                Handle        = 0x8009036B\n\tSEC_E_NO_SPM                                                                            = SEC_E_INTERNAL_ERROR\n\tSEC_E_NOT_SUPPORTED                                                                     = SEC_E_UNSUPPORTED_FUNCTION\n\tCRYPT_E_MSG_ERROR                                                         Handle        = 0x80091001\n\tCRYPT_E_UNKNOWN_ALGO                                                      Handle        = 0x80091002\n\tCRYPT_E_OID_FORMAT                                                        Handle        = 0x80091003\n\tCRYPT_E_INVALID_MSG_TYPE                                                  Handle        = 0x80091004\n\tCRYPT_E_UNEXPECTED_ENCODING                                               Handle        = 0x80091005\n\tCRYPT_E_AUTH_ATTR_MISSING                                                 Handle        = 0x80091006\n\tCRYPT_E_HASH_VALUE                                                        Handle        = 0x80091007\n\tCRYPT_E_INVALID_INDEX                                                     Handle        = 0x80091008\n\tCRYPT_E_ALREADY_DECRYPTED                                                 Handle        = 0x80091009\n\tCRYPT_E_NOT_DECRYPTED                                                     Handle        = 0x8009100A\n\tCRYPT_E_RECIPIENT_NOT_FOUND                                               Handle        = 0x8009100B\n\tCRYPT_E_CONTROL_TYPE                                                      Handle        = 0x8009100C\n\tCRYPT_E_ISSUER_SERIALNUMBER                                               Handle        = 0x8009100D\n\tCRYPT_E_SIGNER_NOT_FOUND                                                  Handle        = 0x8009100E\n\tCRYPT_E_ATTRIBUTES_MISSING                                                Handle        = 0x8009100F\n\tCRYPT_E_STREAM_MSG_NOT_READY                                              Handle        = 0x80091010\n\tCRYPT_E_STREAM_INSUFFICIENT_DATA                                          Handle        = 0x80091011\n\tCRYPT_I_NEW_PROTECTION_REQUIRED                                           Handle        = 0x00091012\n\tCRYPT_E_BAD_LEN                                                           Handle        = 0x80092001\n\tCRYPT_E_BAD_ENCODE                                                        Handle        = 0x80092002\n\tCRYPT_E_FILE_ERROR                                                        Handle        = 0x80092003\n\tCRYPT_E_NOT_FOUND                                                         Handle        = 0x80092004\n\tCRYPT_E_EXISTS                                                            Handle        = 0x80092005\n\tCRYPT_E_NO_PROVIDER                                                       Handle        = 0x80092006\n\tCRYPT_E_SELF_SIGNED                                                       Handle        = 0x80092007\n\tCRYPT_E_DELETED_PREV                                                      Handle        = 0x80092008\n\tCRYPT_E_NO_MATCH                                                          Handle        = 0x80092009\n\tCRYPT_E_UNEXPECTED_MSG_TYPE                                               Handle        = 0x8009200A\n\tCRYPT_E_NO_KEY_PROPERTY                                                   Handle        = 0x8009200B\n\tCRYPT_E_NO_DECRYPT_CERT                                                   Handle        = 0x8009200C\n\tCRYPT_E_BAD_MSG                                                           Handle        = 0x8009200D\n\tCRYPT_E_NO_SIGNER                                                         Handle        = 0x8009200E\n\tCRYPT_E_PENDING_CLOSE                                                     Handle        = 0x8009200F\n\tCRYPT_E_REVOKED                                                           Handle        = 0x80092010\n\tCRYPT_E_NO_REVOCATION_DLL                                                 Handle        = 0x80092011\n\tCRYPT_E_NO_REVOCATION_CHECK                                               Handle        = 0x80092012\n\tCRYPT_E_REVOCATION_OFFLINE                                                Handle        = 0x80092013\n\tCRYPT_E_NOT_IN_REVOCATION_DATABASE                                        Handle        = 0x80092014\n\tCRYPT_E_INVALID_NUMERIC_STRING                                            Handle        = 0x80092020\n\tCRYPT_E_INVALID_PRINTABLE_STRING                                          Handle        = 0x80092021\n\tCRYPT_E_INVALID_IA5_STRING                                                Handle        = 0x80092022\n\tCRYPT_E_INVALID_X500_STRING                                               Handle        = 0x80092023\n\tCRYPT_E_NOT_CHAR_STRING                                                   Handle        = 0x80092024\n\tCRYPT_E_FILERESIZED                                                       Handle        = 0x80092025\n\tCRYPT_E_SECURITY_SETTINGS                                                 Handle        = 0x80092026\n\tCRYPT_E_NO_VERIFY_USAGE_DLL                                               Handle        = 0x80092027\n\tCRYPT_E_NO_VERIFY_USAGE_CHECK                                             Handle        = 0x80092028\n\tCRYPT_E_VERIFY_USAGE_OFFLINE                                              Handle        = 0x80092029\n\tCRYPT_E_NOT_IN_CTL                                                        Handle        = 0x8009202A\n\tCRYPT_E_NO_TRUSTED_SIGNER                                                 Handle        = 0x8009202B\n\tCRYPT_E_MISSING_PUBKEY_PARA                                               Handle        = 0x8009202C\n\tCRYPT_E_OBJECT_LOCATOR_OBJECT_NOT_FOUND                                   Handle        = 0x8009202D\n\tCRYPT_E_OSS_ERROR                                                         Handle        = 0x80093000\n\tOSS_MORE_BUF                                                              Handle        = 0x80093001\n\tOSS_NEGATIVE_UINTEGER                                                     Handle        = 0x80093002\n\tOSS_PDU_RANGE                                                             Handle        = 0x80093003\n\tOSS_MORE_INPUT                                                            Handle        = 0x80093004\n\tOSS_DATA_ERROR                                                            Handle        = 0x80093005\n\tOSS_BAD_ARG                                                               Handle        = 0x80093006\n\tOSS_BAD_VERSION                                                           Handle        = 0x80093007\n\tOSS_OUT_MEMORY                                                            Handle        = 0x80093008\n\tOSS_PDU_MISMATCH                                                          Handle        = 0x80093009\n\tOSS_LIMITED                                                               Handle        = 0x8009300A\n\tOSS_BAD_PTR                                                               Handle        = 0x8009300B\n\tOSS_BAD_TIME                                                              Handle        = 0x8009300C\n\tOSS_INDEFINITE_NOT_SUPPORTED                                              Handle        = 0x8009300D\n\tOSS_MEM_ERROR                                                             Handle        = 0x8009300E\n\tOSS_BAD_TABLE                                                             Handle        = 0x8009300F\n\tOSS_TOO_LONG                                                              Handle        = 0x80093010\n\tOSS_CONSTRAINT_VIOLATED                                                   Handle        = 0x80093011\n\tOSS_FATAL_ERROR                                                           Handle        = 0x80093012\n\tOSS_ACCESS_SERIALIZATION_ERROR                                            Handle        = 0x80093013\n\tOSS_NULL_TBL                                                              Handle        = 0x80093014\n\tOSS_NULL_FCN                                                              Handle        = 0x80093015\n\tOSS_BAD_ENCRULES                                                          Handle        = 0x80093016\n\tOSS_UNAVAIL_ENCRULES                                                      Handle        = 0x80093017\n\tOSS_CANT_OPEN_TRACE_WINDOW                                                Handle        = 0x80093018\n\tOSS_UNIMPLEMENTED                                                         Handle        = 0x80093019\n\tOSS_OID_DLL_NOT_LINKED                                                    Handle        = 0x8009301A\n\tOSS_CANT_OPEN_TRACE_FILE                                                  Handle        = 0x8009301B\n\tOSS_TRACE_FILE_ALREADY_OPEN                                               Handle        = 0x8009301C\n\tOSS_TABLE_MISMATCH                                                        Handle        = 0x8009301D\n\tOSS_TYPE_NOT_SUPPORTED                                                    Handle        = 0x8009301E\n\tOSS_REAL_DLL_NOT_LINKED                                                   Handle        = 0x8009301F\n\tOSS_REAL_CODE_NOT_LINKED                                                  Handle        = 0x80093020\n\tOSS_OUT_OF_RANGE                                                          Handle        = 0x80093021\n\tOSS_COPIER_DLL_NOT_LINKED                                                 Handle        = 0x80093022\n\tOSS_CONSTRAINT_DLL_NOT_LINKED                                             Handle        = 0x80093023\n\tOSS_COMPARATOR_DLL_NOT_LINKED                                             Handle        = 0x80093024\n\tOSS_COMPARATOR_CODE_NOT_LINKED                                            Handle        = 0x80093025\n\tOSS_MEM_MGR_DLL_NOT_LINKED                                                Handle        = 0x80093026\n\tOSS_PDV_DLL_NOT_LINKED                                                    Handle        = 0x80093027\n\tOSS_PDV_CODE_NOT_LINKED                                                   Handle        = 0x80093028\n\tOSS_API_DLL_NOT_LINKED                                                    Handle        = 0x80093029\n\tOSS_BERDER_DLL_NOT_LINKED                                                 Handle        = 0x8009302A\n\tOSS_PER_DLL_NOT_LINKED                                                    Handle        = 0x8009302B\n\tOSS_OPEN_TYPE_ERROR                                                       Handle        = 0x8009302C\n\tOSS_MUTEX_NOT_CREATED                                                     Handle        = 0x8009302D\n\tOSS_CANT_CLOSE_TRACE_FILE                                                 Handle        = 0x8009302E\n\tCRYPT_E_ASN1_ERROR                                                        Handle        = 0x80093100\n\tCRYPT_E_ASN1_INTERNAL                                                     Handle        = 0x80093101\n\tCRYPT_E_ASN1_EOD                                                          Handle        = 0x80093102\n\tCRYPT_E_ASN1_CORRUPT                                                      Handle        = 0x80093103\n\tCRYPT_E_ASN1_LARGE                                                        Handle        = 0x80093104\n\tCRYPT_E_ASN1_CONSTRAINT                                                   Handle        = 0x80093105\n\tCRYPT_E_ASN1_MEMORY                                                       Handle        = 0x80093106\n\tCRYPT_E_ASN1_OVERFLOW                                                     Handle        = 0x80093107\n\tCRYPT_E_ASN1_BADPDU                                                       Handle        = 0x80093108\n\tCRYPT_E_ASN1_BADARGS                                                      Handle        = 0x80093109\n\tCRYPT_E_ASN1_BADREAL                                                      Handle        = 0x8009310A\n\tCRYPT_E_ASN1_BADTAG                                                       Handle        = 0x8009310B\n\tCRYPT_E_ASN1_CHOICE                                                       Handle        = 0x8009310C\n\tCRYPT_E_ASN1_RULE                                                         Handle        = 0x8009310D\n\tCRYPT_E_ASN1_UTF8                                                         Handle        = 0x8009310E\n\tCRYPT_E_ASN1_PDU_TYPE                                                     Handle        = 0x80093133\n\tCRYPT_E_ASN1_NYI                                                          Handle        = 0x80093134\n\tCRYPT_E_ASN1_EXTENDED                                                     Handle        = 0x80093201\n\tCRYPT_E_ASN1_NOEOD                                                        Handle        = 0x80093202\n\tCERTSRV_E_BAD_REQUESTSUBJECT                                              Handle        = 0x80094001\n\tCERTSRV_E_NO_REQUEST                                                      Handle        = 0x80094002\n\tCERTSRV_E_BAD_REQUESTSTATUS                                               Handle        = 0x80094003\n\tCERTSRV_E_PROPERTY_EMPTY                                                  Handle        = 0x80094004\n\tCERTSRV_E_INVALID_CA_CERTIFICATE                                          Handle        = 0x80094005\n\tCERTSRV_E_SERVER_SUSPENDED                                                Handle        = 0x80094006\n\tCERTSRV_E_ENCODING_LENGTH                                                 Handle        = 0x80094007\n\tCERTSRV_E_ROLECONFLICT                                                    Handle        = 0x80094008\n\tCERTSRV_E_RESTRICTEDOFFICER                                               Handle        = 0x80094009\n\tCERTSRV_E_KEY_ARCHIVAL_NOT_CONFIGURED                                     Handle        = 0x8009400A\n\tCERTSRV_E_NO_VALID_KRA                                                    Handle        = 0x8009400B\n\tCERTSRV_E_BAD_REQUEST_KEY_ARCHIVAL                                        Handle        = 0x8009400C\n\tCERTSRV_E_NO_CAADMIN_DEFINED                                              Handle        = 0x8009400D\n\tCERTSRV_E_BAD_RENEWAL_CERT_ATTRIBUTE                                      Handle        = 0x8009400E\n\tCERTSRV_E_NO_DB_SESSIONS                                                  Handle        = 0x8009400F\n\tCERTSRV_E_ALIGNMENT_FAULT                                                 Handle        = 0x80094010\n\tCERTSRV_E_ENROLL_DENIED                                                   Handle        = 0x80094011\n\tCERTSRV_E_TEMPLATE_DENIED                                                 Handle        = 0x80094012\n\tCERTSRV_E_DOWNLEVEL_DC_SSL_OR_UPGRADE                                     Handle        = 0x80094013\n\tCERTSRV_E_ADMIN_DENIED_REQUEST                                            Handle        = 0x80094014\n\tCERTSRV_E_NO_POLICY_SERVER                                                Handle        = 0x80094015\n\tCERTSRV_E_WEAK_SIGNATURE_OR_KEY                                           Handle        = 0x80094016\n\tCERTSRV_E_KEY_ATTESTATION_NOT_SUPPORTED                                   Handle        = 0x80094017\n\tCERTSRV_E_ENCRYPTION_CERT_REQUIRED                                        Handle        = 0x80094018\n\tCERTSRV_E_UNSUPPORTED_CERT_TYPE                                           Handle        = 0x80094800\n\tCERTSRV_E_NO_CERT_TYPE                                                    Handle        = 0x80094801\n\tCERTSRV_E_TEMPLATE_CONFLICT                                               Handle        = 0x80094802\n\tCERTSRV_E_SUBJECT_ALT_NAME_REQUIRED                                       Handle        = 0x80094803\n\tCERTSRV_E_ARCHIVED_KEY_REQUIRED                                           Handle        = 0x80094804\n\tCERTSRV_E_SMIME_REQUIRED                                                  Handle        = 0x80094805\n\tCERTSRV_E_BAD_RENEWAL_SUBJECT                                             Handle        = 0x80094806\n\tCERTSRV_E_BAD_TEMPLATE_VERSION                                            Handle        = 0x80094807\n\tCERTSRV_E_TEMPLATE_POLICY_REQUIRED                                        Handle        = 0x80094808\n\tCERTSRV_E_SIGNATURE_POLICY_REQUIRED                                       Handle        = 0x80094809\n\tCERTSRV_E_SIGNATURE_COUNT                                                 Handle        = 0x8009480A\n\tCERTSRV_E_SIGNATURE_REJECTED                                              Handle        = 0x8009480B\n\tCERTSRV_E_ISSUANCE_POLICY_REQUIRED                                        Handle        = 0x8009480C\n\tCERTSRV_E_SUBJECT_UPN_REQUIRED                                            Handle        = 0x8009480D\n\tCERTSRV_E_SUBJECT_DIRECTORY_GUID_REQUIRED                                 Handle        = 0x8009480E\n\tCERTSRV_E_SUBJECT_DNS_REQUIRED                                            Handle        = 0x8009480F\n\tCERTSRV_E_ARCHIVED_KEY_UNEXPECTED                                         Handle        = 0x80094810\n\tCERTSRV_E_KEY_LENGTH                                                      Handle        = 0x80094811\n\tCERTSRV_E_SUBJECT_EMAIL_REQUIRED                                          Handle        = 0x80094812\n\tCERTSRV_E_UNKNOWN_CERT_TYPE                                               Handle        = 0x80094813\n\tCERTSRV_E_CERT_TYPE_OVERLAP                                               Handle        = 0x80094814\n\tCERTSRV_E_TOO_MANY_SIGNATURES                                             Handle        = 0x80094815\n\tCERTSRV_E_RENEWAL_BAD_PUBLIC_KEY                                          Handle        = 0x80094816\n\tCERTSRV_E_INVALID_EK                                                      Handle        = 0x80094817\n\tCERTSRV_E_INVALID_IDBINDING                                               Handle        = 0x80094818\n\tCERTSRV_E_INVALID_ATTESTATION                                             Handle        = 0x80094819\n\tCERTSRV_E_KEY_ATTESTATION                                                 Handle        = 0x8009481A\n\tCERTSRV_E_CORRUPT_KEY_ATTESTATION                                         Handle        = 0x8009481B\n\tCERTSRV_E_EXPIRED_CHALLENGE                                               Handle        = 0x8009481C\n\tCERTSRV_E_INVALID_RESPONSE                                                Handle        = 0x8009481D\n\tCERTSRV_E_INVALID_REQUESTID                                               Handle        = 0x8009481E\n\tCERTSRV_E_REQUEST_PRECERTIFICATE_MISMATCH                                 Handle        = 0x8009481F\n\tCERTSRV_E_PENDING_CLIENT_RESPONSE                                         Handle        = 0x80094820\n\tXENROLL_E_KEY_NOT_EXPORTABLE                                              Handle        = 0x80095000\n\tXENROLL_E_CANNOT_ADD_ROOT_CERT                                            Handle        = 0x80095001\n\tXENROLL_E_RESPONSE_KA_HASH_NOT_FOUND                                      Handle        = 0x80095002\n\tXENROLL_E_RESPONSE_UNEXPECTED_KA_HASH                                     Handle        = 0x80095003\n\tXENROLL_E_RESPONSE_KA_HASH_MISMATCH                                       Handle        = 0x80095004\n\tXENROLL_E_KEYSPEC_SMIME_MISMATCH                                          Handle        = 0x80095005\n\tTRUST_E_SYSTEM_ERROR                                                      Handle        = 0x80096001\n\tTRUST_E_NO_SIGNER_CERT                                                    Handle        = 0x80096002\n\tTRUST_E_COUNTER_SIGNER                                                    Handle        = 0x80096003\n\tTRUST_E_CERT_SIGNATURE                                                    Handle        = 0x80096004\n\tTRUST_E_TIME_STAMP                                                        Handle        = 0x80096005\n\tTRUST_E_BAD_DIGEST                                                        Handle        = 0x80096010\n\tTRUST_E_MALFORMED_SIGNATURE                                               Handle        = 0x80096011\n\tTRUST_E_BASIC_CONSTRAINTS                                                 Handle        = 0x80096019\n\tTRUST_E_FINANCIAL_CRITERIA                                                Handle        = 0x8009601E\n\tMSSIPOTF_E_OUTOFMEMRANGE                                                  Handle        = 0x80097001\n\tMSSIPOTF_E_CANTGETOBJECT                                                  Handle        = 0x80097002\n\tMSSIPOTF_E_NOHEADTABLE                                                    Handle        = 0x80097003\n\tMSSIPOTF_E_BAD_MAGICNUMBER                                                Handle        = 0x80097004\n\tMSSIPOTF_E_BAD_OFFSET_TABLE                                               Handle        = 0x80097005\n\tMSSIPOTF_E_TABLE_TAGORDER                                                 Handle        = 0x80097006\n\tMSSIPOTF_E_TABLE_LONGWORD                                                 Handle        = 0x80097007\n\tMSSIPOTF_E_BAD_FIRST_TABLE_PLACEMENT                                      Handle        = 0x80097008\n\tMSSIPOTF_E_TABLES_OVERLAP                                                 Handle        = 0x80097009\n\tMSSIPOTF_E_TABLE_PADBYTES                                                 Handle        = 0x8009700A\n\tMSSIPOTF_E_FILETOOSMALL                                                   Handle        = 0x8009700B\n\tMSSIPOTF_E_TABLE_CHECKSUM                                                 Handle        = 0x8009700C\n\tMSSIPOTF_E_FILE_CHECKSUM                                                  Handle        = 0x8009700D\n\tMSSIPOTF_E_FAILED_POLICY                                                  Handle        = 0x80097010\n\tMSSIPOTF_E_FAILED_HINTS_CHECK                                             Handle        = 0x80097011\n\tMSSIPOTF_E_NOT_OPENTYPE                                                   Handle        = 0x80097012\n\tMSSIPOTF_E_FILE                                                           Handle        = 0x80097013\n\tMSSIPOTF_E_CRYPT                                                          Handle        = 0x80097014\n\tMSSIPOTF_E_BADVERSION                                                     Handle        = 0x80097015\n\tMSSIPOTF_E_DSIG_STRUCTURE                                                 Handle        = 0x80097016\n\tMSSIPOTF_E_PCONST_CHECK                                                   Handle        = 0x80097017\n\tMSSIPOTF_E_STRUCTURE                                                      Handle        = 0x80097018\n\tERROR_CRED_REQUIRES_CONFIRMATION                                          Handle        = 0x80097019\n\tNTE_OP_OK                                                                 syscall.Errno = 0\n\tTRUST_E_PROVIDER_UNKNOWN                                                  Handle        = 0x800B0001\n\tTRUST_E_ACTION_UNKNOWN                                                    Handle        = 0x800B0002\n\tTRUST_E_SUBJECT_FORM_UNKNOWN                                              Handle        = 0x800B0003\n\tTRUST_E_SUBJECT_NOT_TRUSTED                                               Handle        = 0x800B0004\n\tDIGSIG_E_ENCODE                                                           Handle        = 0x800B0005\n\tDIGSIG_E_DECODE                                                           Handle        = 0x800B0006\n\tDIGSIG_E_EXTENSIBILITY                                                    Handle        = 0x800B0007\n\tDIGSIG_E_CRYPTO                                                           Handle        = 0x800B0008\n\tPERSIST_E_SIZEDEFINITE                                                    Handle        = 0x800B0009\n\tPERSIST_E_SIZEINDEFINITE                                                  Handle        = 0x800B000A\n\tPERSIST_E_NOTSELFSIZING                                                   Handle        = 0x800B000B\n\tTRUST_E_NOSIGNATURE                                                       Handle        = 0x800B0100\n\tCERT_E_EXPIRED                                                            Handle        = 0x800B0101\n\tCERT_E_VALIDITYPERIODNESTING                                              Handle        = 0x800B0102\n\tCERT_E_ROLE                                                               Handle        = 0x800B0103\n\tCERT_E_PATHLENCONST                                                       Handle        = 0x800B0104\n\tCERT_E_CRITICAL                                                           Handle        = 0x800B0105\n\tCERT_E_PURPOSE                                                            Handle        = 0x800B0106\n\tCERT_E_ISSUERCHAINING                                                     Handle        = 0x800B0107\n\tCERT_E_MALFORMED                                                          Handle        = 0x800B0108\n\tCERT_E_UNTRUSTEDROOT                                                      Handle        = 0x800B0109\n\tCERT_E_CHAINING                                                           Handle        = 0x800B010A\n\tTRUST_E_FAIL                                                              Handle        = 0x800B010B\n\tCERT_E_REVOKED                                                            Handle        = 0x800B010C\n\tCERT_E_UNTRUSTEDTESTROOT                                                  Handle        = 0x800B010D\n\tCERT_E_REVOCATION_FAILURE                                                 Handle        = 0x800B010E\n\tCERT_E_CN_NO_MATCH                                                        Handle        = 0x800B010F\n\tCERT_E_WRONG_USAGE                                                        Handle        = 0x800B0110\n\tTRUST_E_EXPLICIT_DISTRUST                                                 Handle        = 0x800B0111\n\tCERT_E_UNTRUSTEDCA                                                        Handle        = 0x800B0112\n\tCERT_E_INVALID_POLICY                                                     Handle        = 0x800B0113\n\tCERT_E_INVALID_NAME                                                       Handle        = 0x800B0114\n\tSPAPI_E_EXPECTED_SECTION_NAME                                             Handle        = 0x800F0000\n\tSPAPI_E_BAD_SECTION_NAME_LINE                                             Handle        = 0x800F0001\n\tSPAPI_E_SECTION_NAME_TOO_LONG                                             Handle        = 0x800F0002\n\tSPAPI_E_GENERAL_SYNTAX                                                    Handle        = 0x800F0003\n\tSPAPI_E_WRONG_INF_STYLE                                                   Handle        = 0x800F0100\n\tSPAPI_E_SECTION_NOT_FOUND                                                 Handle        = 0x800F0101\n\tSPAPI_E_LINE_NOT_FOUND                                                    Handle        = 0x800F0102\n\tSPAPI_E_NO_BACKUP                                                         Handle        = 0x800F0103\n\tSPAPI_E_NO_ASSOCIATED_CLASS                                               Handle        = 0x800F0200\n\tSPAPI_E_CLASS_MISMATCH                                                    Handle        = 0x800F0201\n\tSPAPI_E_DUPLICATE_FOUND                                                   Handle        = 0x800F0202\n\tSPAPI_E_NO_DRIVER_SELECTED                                                Handle        = 0x800F0203\n\tSPAPI_E_KEY_DOES_NOT_EXIST                                                Handle        = 0x800F0204\n\tSPAPI_E_INVALID_DEVINST_NAME                                              Handle        = 0x800F0205\n\tSPAPI_E_INVALID_CLASS                                                     Handle        = 0x800F0206\n\tSPAPI_E_DEVINST_ALREADY_EXISTS                                            Handle        = 0x800F0207\n\tSPAPI_E_DEVINFO_NOT_REGISTERED                                            Handle        = 0x800F0208\n\tSPAPI_E_INVALID_REG_PROPERTY                                              Handle        = 0x800F0209\n\tSPAPI_E_NO_INF                                                            Handle        = 0x800F020A\n\tSPAPI_E_NO_SUCH_DEVINST                                                   Handle        = 0x800F020B\n\tSPAPI_E_CANT_LOAD_CLASS_ICON                                              Handle        = 0x800F020C\n\tSPAPI_E_INVALID_CLASS_INSTALLER                                           Handle        = 0x800F020D\n\tSPAPI_E_DI_DO_DEFAULT                                                     Handle        = 0x800F020E\n\tSPAPI_E_DI_NOFILECOPY                                                     Handle        = 0x800F020F\n\tSPAPI_E_INVALID_HWPROFILE                                                 Handle        = 0x800F0210\n\tSPAPI_E_NO_DEVICE_SELECTED                                                Handle        = 0x800F0211\n\tSPAPI_E_DEVINFO_LIST_LOCKED                                               Handle        = 0x800F0212\n\tSPAPI_E_DEVINFO_DATA_LOCKED                                               Handle        = 0x800F0213\n\tSPAPI_E_DI_BAD_PATH                                                       Handle        = 0x800F0214\n\tSPAPI_E_NO_CLASSINSTALL_PARAMS                                            Handle        = 0x800F0215\n\tSPAPI_E_FILEQUEUE_LOCKED                                                  Handle        = 0x800F0216\n\tSPAPI_E_BAD_SERVICE_INSTALLSECT                                           Handle        = 0x800F0217\n\tSPAPI_E_NO_CLASS_DRIVER_LIST                                              Handle        = 0x800F0218\n\tSPAPI_E_NO_ASSOCIATED_SERVICE                                             Handle        = 0x800F0219\n\tSPAPI_E_NO_DEFAULT_DEVICE_INTERFACE                                       Handle        = 0x800F021A\n\tSPAPI_E_DEVICE_INTERFACE_ACTIVE                                           Handle        = 0x800F021B\n\tSPAPI_E_DEVICE_INTERFACE_REMOVED                                          Handle        = 0x800F021C\n\tSPAPI_E_BAD_INTERFACE_INSTALLSECT                                         Handle        = 0x800F021D\n\tSPAPI_E_NO_SUCH_INTERFACE_CLASS                                           Handle        = 0x800F021E\n\tSPAPI_E_INVALID_REFERENCE_STRING                                          Handle        = 0x800F021F\n\tSPAPI_E_INVALID_MACHINENAME                                               Handle        = 0x800F0220\n\tSPAPI_E_REMOTE_COMM_FAILURE                                               Handle        = 0x800F0221\n\tSPAPI_E_MACHINE_UNAVAILABLE                                               Handle        = 0x800F0222\n\tSPAPI_E_NO_CONFIGMGR_SERVICES                                             Handle        = 0x800F0223\n\tSPAPI_E_INVALID_PROPPAGE_PROVIDER                                         Handle        = 0x800F0224\n\tSPAPI_E_NO_SUCH_DEVICE_INTERFACE                                          Handle        = 0x800F0225\n\tSPAPI_E_DI_POSTPROCESSING_REQUIRED                                        Handle        = 0x800F0226\n\tSPAPI_E_INVALID_COINSTALLER                                               Handle        = 0x800F0227\n\tSPAPI_E_NO_COMPAT_DRIVERS                                                 Handle        = 0x800F0228\n\tSPAPI_E_NO_DEVICE_ICON                                                    Handle        = 0x800F0229\n\tSPAPI_E_INVALID_INF_LOGCONFIG                                             Handle        = 0x800F022A\n\tSPAPI_E_DI_DONT_INSTALL                                                   Handle        = 0x800F022B\n\tSPAPI_E_INVALID_FILTER_DRIVER                                             Handle        = 0x800F022C\n\tSPAPI_E_NON_WINDOWS_NT_DRIVER                                             Handle        = 0x800F022D\n\tSPAPI_E_NON_WINDOWS_DRIVER                                                Handle        = 0x800F022E\n\tSPAPI_E_NO_CATALOG_FOR_OEM_INF                                            Handle        = 0x800F022F\n\tSPAPI_E_DEVINSTALL_QUEUE_NONNATIVE                                        Handle        = 0x800F0230\n\tSPAPI_E_NOT_DISABLEABLE                                                   Handle        = 0x800F0231\n\tSPAPI_E_CANT_REMOVE_DEVINST                                               Handle        = 0x800F0232\n\tSPAPI_E_INVALID_TARGET                                                    Handle        = 0x800F0233\n\tSPAPI_E_DRIVER_NONNATIVE                                                  Handle        = 0x800F0234\n\tSPAPI_E_IN_WOW64                                                          Handle        = 0x800F0235\n\tSPAPI_E_SET_SYSTEM_RESTORE_POINT                                          Handle        = 0x800F0236\n\tSPAPI_E_INCORRECTLY_COPIED_INF                                            Handle        = 0x800F0237\n\tSPAPI_E_SCE_DISABLED                                                      Handle        = 0x800F0238\n\tSPAPI_E_UNKNOWN_EXCEPTION                                                 Handle        = 0x800F0239\n\tSPAPI_E_PNP_REGISTRY_ERROR                                                Handle        = 0x800F023A\n\tSPAPI_E_REMOTE_REQUEST_UNSUPPORTED                                        Handle        = 0x800F023B\n\tSPAPI_E_NOT_AN_INSTALLED_OEM_INF                                          Handle        = 0x800F023C\n\tSPAPI_E_INF_IN_USE_BY_DEVICES                                             Handle        = 0x800F023D\n\tSPAPI_E_DI_FUNCTION_OBSOLETE                                              Handle        = 0x800F023E\n\tSPAPI_E_NO_AUTHENTICODE_CATALOG                                           Handle        = 0x800F023F\n\tSPAPI_E_AUTHENTICODE_DISALLOWED                                           Handle        = 0x800F0240\n\tSPAPI_E_AUTHENTICODE_TRUSTED_PUBLISHER                                    Handle        = 0x800F0241\n\tSPAPI_E_AUTHENTICODE_TRUST_NOT_ESTABLISHED                                Handle        = 0x800F0242\n\tSPAPI_E_AUTHENTICODE_PUBLISHER_NOT_TRUSTED                                Handle        = 0x800F0243\n\tSPAPI_E_SIGNATURE_OSATTRIBUTE_MISMATCH                                    Handle        = 0x800F0244\n\tSPAPI_E_ONLY_VALIDATE_VIA_AUTHENTICODE                                    Handle        = 0x800F0245\n\tSPAPI_E_DEVICE_INSTALLER_NOT_READY                                        Handle        = 0x800F0246\n\tSPAPI_E_DRIVER_STORE_ADD_FAILED                                           Handle        = 0x800F0247\n\tSPAPI_E_DEVICE_INSTALL_BLOCKED                                            Handle        = 0x800F0248\n\tSPAPI_E_DRIVER_INSTALL_BLOCKED                                            Handle        = 0x800F0249\n\tSPAPI_E_WRONG_INF_TYPE                                                    Handle        = 0x800F024A\n\tSPAPI_E_FILE_HASH_NOT_IN_CATALOG                                          Handle        = 0x800F024B\n\tSPAPI_E_DRIVER_STORE_DELETE_FAILED                                        Handle        = 0x800F024C\n\tSPAPI_E_UNRECOVERABLE_STACK_OVERFLOW                                      Handle        = 0x800F0300\n\tSPAPI_E_ERROR_NOT_INSTALLED                                               Handle        = 0x800F1000\n\tSCARD_S_SUCCESS                                                                         = S_OK\n\tSCARD_F_INTERNAL_ERROR                                                    Handle        = 0x80100001\n\tSCARD_E_CANCELLED                                                         Handle        = 0x80100002\n\tSCARD_E_INVALID_HANDLE                                                    Handle        = 0x80100003\n\tSCARD_E_INVALID_PARAMETER                                                 Handle        = 0x80100004\n\tSCARD_E_INVALID_TARGET                                                    Handle        = 0x80100005\n\tSCARD_E_NO_MEMORY                                                         Handle        = 0x80100006\n\tSCARD_F_WAITED_TOO_LONG                                                   Handle        = 0x80100007\n\tSCARD_E_INSUFFICIENT_BUFFER                                               Handle        = 0x80100008\n\tSCARD_E_UNKNOWN_READER                                                    Handle        = 0x80100009\n\tSCARD_E_TIMEOUT                                                           Handle        = 0x8010000A\n\tSCARD_E_SHARING_VIOLATION                                                 Handle        = 0x8010000B\n\tSCARD_E_NO_SMARTCARD                                                      Handle        = 0x8010000C\n\tSCARD_E_UNKNOWN_CARD                                                      Handle        = 0x8010000D\n\tSCARD_E_CANT_DISPOSE                                                      Handle        = 0x8010000E\n\tSCARD_E_PROTO_MISMATCH                                                    Handle        = 0x8010000F\n\tSCARD_E_NOT_READY                                                         Handle        = 0x80100010\n\tSCARD_E_INVALID_VALUE                                                     Handle        = 0x80100011\n\tSCARD_E_SYSTEM_CANCELLED                                                  Handle        = 0x80100012\n\tSCARD_F_COMM_ERROR                                                        Handle        = 0x80100013\n\tSCARD_F_UNKNOWN_ERROR                                                     Handle        = 0x80100014\n\tSCARD_E_INVALID_ATR                                                       Handle        = 0x80100015\n\tSCARD_E_NOT_TRANSACTED                                                    Handle        = 0x80100016\n\tSCARD_E_READER_UNAVAILABLE                                                Handle        = 0x80100017\n\tSCARD_P_SHUTDOWN                                                          Handle        = 0x80100018\n\tSCARD_E_PCI_TOO_SMALL                                                     Handle        = 0x80100019\n\tSCARD_E_READER_UNSUPPORTED                                                Handle        = 0x8010001A\n\tSCARD_E_DUPLICATE_READER                                                  Handle        = 0x8010001B\n\tSCARD_E_CARD_UNSUPPORTED                                                  Handle        = 0x8010001C\n\tSCARD_E_NO_SERVICE                                                        Handle        = 0x8010001D\n\tSCARD_E_SERVICE_STOPPED                                                   Handle        = 0x8010001E\n\tSCARD_E_UNEXPECTED                                                        Handle        = 0x8010001F\n\tSCARD_E_ICC_INSTALLATION                                                  Handle        = 0x80100020\n\tSCARD_E_ICC_CREATEORDER                                                   Handle        = 0x80100021\n\tSCARD_E_UNSUPPORTED_FEATURE                                               Handle        = 0x80100022\n\tSCARD_E_DIR_NOT_FOUND                                                     Handle        = 0x80100023\n\tSCARD_E_FILE_NOT_FOUND                                                    Handle        = 0x80100024\n\tSCARD_E_NO_DIR                                                            Handle        = 0x80100025\n\tSCARD_E_NO_FILE                                                           Handle        = 0x80100026\n\tSCARD_E_NO_ACCESS                                                         Handle        = 0x80100027\n\tSCARD_E_WRITE_TOO_MANY                                                    Handle        = 0x80100028\n\tSCARD_E_BAD_SEEK                                                          Handle        = 0x80100029\n\tSCARD_E_INVALID_CHV                                                       Handle        = 0x8010002A\n\tSCARD_E_UNKNOWN_RES_MNG                                                   Handle        = 0x8010002B\n\tSCARD_E_NO_SUCH_CERTIFICATE                                               Handle        = 0x8010002C\n\tSCARD_E_CERTIFICATE_UNAVAILABLE                                           Handle        = 0x8010002D\n\tSCARD_E_NO_READERS_AVAILABLE                                              Handle        = 0x8010002E\n\tSCARD_E_COMM_DATA_LOST                                                    Handle        = 0x8010002F\n\tSCARD_E_NO_KEY_CONTAINER                                                  Handle        = 0x80100030\n\tSCARD_E_SERVER_TOO_BUSY                                                   Handle        = 0x80100031\n\tSCARD_E_PIN_CACHE_EXPIRED                                                 Handle        = 0x80100032\n\tSCARD_E_NO_PIN_CACHE                                                      Handle        = 0x80100033\n\tSCARD_E_READ_ONLY_CARD                                                    Handle        = 0x80100034\n\tSCARD_W_UNSUPPORTED_CARD                                                  Handle        = 0x80100065\n\tSCARD_W_UNRESPONSIVE_CARD                                                 Handle        = 0x80100066\n\tSCARD_W_UNPOWERED_CARD                                                    Handle        = 0x80100067\n\tSCARD_W_RESET_CARD                                                        Handle        = 0x80100068\n\tSCARD_W_REMOVED_CARD                                                      Handle        = 0x80100069\n\tSCARD_W_SECURITY_VIOLATION                                                Handle        = 0x8010006A\n\tSCARD_W_WRONG_CHV                                                         Handle        = 0x8010006B\n\tSCARD_W_CHV_BLOCKED                                                       Handle        = 0x8010006C\n\tSCARD_W_EOF                                                               Handle        = 0x8010006D\n\tSCARD_W_CANCELLED_BY_USER                                                 Handle        = 0x8010006E\n\tSCARD_W_CARD_NOT_AUTHENTICATED                                            Handle        = 0x8010006F\n\tSCARD_W_CACHE_ITEM_NOT_FOUND                                              Handle        = 0x80100070\n\tSCARD_W_CACHE_ITEM_STALE                                                  Handle        = 0x80100071\n\tSCARD_W_CACHE_ITEM_TOO_BIG                                                Handle        = 0x80100072\n\tCOMADMIN_E_OBJECTERRORS                                                   Handle        = 0x80110401\n\tCOMADMIN_E_OBJECTINVALID                                                  Handle        = 0x80110402\n\tCOMADMIN_E_KEYMISSING                                                     Handle        = 0x80110403\n\tCOMADMIN_E_ALREADYINSTALLED                                               Handle        = 0x80110404\n\tCOMADMIN_E_APP_FILE_WRITEFAIL                                             Handle        = 0x80110407\n\tCOMADMIN_E_APP_FILE_READFAIL                                              Handle        = 0x80110408\n\tCOMADMIN_E_APP_FILE_VERSION                                               Handle        = 0x80110409\n\tCOMADMIN_E_BADPATH                                                        Handle        = 0x8011040A\n\tCOMADMIN_E_APPLICATIONEXISTS                                              Handle        = 0x8011040B\n\tCOMADMIN_E_ROLEEXISTS                                                     Handle        = 0x8011040C\n\tCOMADMIN_E_CANTCOPYFILE                                                   Handle        = 0x8011040D\n\tCOMADMIN_E_NOUSER                                                         Handle        = 0x8011040F\n\tCOMADMIN_E_INVALIDUSERIDS                                                 Handle        = 0x80110410\n\tCOMADMIN_E_NOREGISTRYCLSID                                                Handle        = 0x80110411\n\tCOMADMIN_E_BADREGISTRYPROGID                                              Handle        = 0x80110412\n\tCOMADMIN_E_AUTHENTICATIONLEVEL                                            Handle        = 0x80110413\n\tCOMADMIN_E_USERPASSWDNOTVALID                                             Handle        = 0x80110414\n\tCOMADMIN_E_CLSIDORIIDMISMATCH                                             Handle        = 0x80110418\n\tCOMADMIN_E_REMOTEINTERFACE                                                Handle        = 0x80110419\n\tCOMADMIN_E_DLLREGISTERSERVER                                              Handle        = 0x8011041A\n\tCOMADMIN_E_NOSERVERSHARE                                                  Handle        = 0x8011041B\n\tCOMADMIN_E_DLLLOADFAILED                                                  Handle        = 0x8011041D\n\tCOMADMIN_E_BADREGISTRYLIBID                                               Handle        = 0x8011041E\n\tCOMADMIN_E_APPDIRNOTFOUND                                                 Handle        = 0x8011041F\n\tCOMADMIN_E_REGISTRARFAILED                                                Handle        = 0x80110423\n\tCOMADMIN_E_COMPFILE_DOESNOTEXIST                                          Handle        = 0x80110424\n\tCOMADMIN_E_COMPFILE_LOADDLLFAIL                                           Handle        = 0x80110425\n\tCOMADMIN_E_COMPFILE_GETCLASSOBJ                                           Handle        = 0x80110426\n\tCOMADMIN_E_COMPFILE_CLASSNOTAVAIL                                         Handle        = 0x80110427\n\tCOMADMIN_E_COMPFILE_BADTLB                                                Handle        = 0x80110428\n\tCOMADMIN_E_COMPFILE_NOTINSTALLABLE                                        Handle        = 0x80110429\n\tCOMADMIN_E_NOTCHANGEABLE                                                  Handle        = 0x8011042A\n\tCOMADMIN_E_NOTDELETEABLE                                                  Handle        = 0x8011042B\n\tCOMADMIN_E_SESSION                                                        Handle        = 0x8011042C\n\tCOMADMIN_E_COMP_MOVE_LOCKED                                               Handle        = 0x8011042D\n\tCOMADMIN_E_COMP_MOVE_BAD_DEST                                             Handle        = 0x8011042E\n\tCOMADMIN_E_REGISTERTLB                                                    Handle        = 0x80110430\n\tCOMADMIN_E_SYSTEMAPP                                                      Handle        = 0x80110433\n\tCOMADMIN_E_COMPFILE_NOREGISTRAR                                           Handle        = 0x80110434\n\tCOMADMIN_E_COREQCOMPINSTALLED                                             Handle        = 0x80110435\n\tCOMADMIN_E_SERVICENOTINSTALLED                                            Handle        = 0x80110436\n\tCOMADMIN_E_PROPERTYSAVEFAILED                                             Handle        = 0x80110437\n\tCOMADMIN_E_OBJECTEXISTS                                                   Handle        = 0x80110438\n\tCOMADMIN_E_COMPONENTEXISTS                                                Handle        = 0x80110439\n\tCOMADMIN_E_REGFILE_CORRUPT                                                Handle        = 0x8011043B\n\tCOMADMIN_E_PROPERTY_OVERFLOW                                              Handle        = 0x8011043C\n\tCOMADMIN_E_NOTINREGISTRY                                                  Handle        = 0x8011043E\n\tCOMADMIN_E_OBJECTNOTPOOLABLE                                              Handle        = 0x8011043F\n\tCOMADMIN_E_APPLID_MATCHES_CLSID                                           Handle        = 0x80110446\n\tCOMADMIN_E_ROLE_DOES_NOT_EXIST                                            Handle        = 0x80110447\n\tCOMADMIN_E_START_APP_NEEDS_COMPONENTS                                     Handle        = 0x80110448\n\tCOMADMIN_E_REQUIRES_DIFFERENT_PLATFORM                                    Handle        = 0x80110449\n\tCOMADMIN_E_CAN_NOT_EXPORT_APP_PROXY                                       Handle        = 0x8011044A\n\tCOMADMIN_E_CAN_NOT_START_APP                                              Handle        = 0x8011044B\n\tCOMADMIN_E_CAN_NOT_EXPORT_SYS_APP                                         Handle        = 0x8011044C\n\tCOMADMIN_E_CANT_SUBSCRIBE_TO_COMPONENT                                    Handle        = 0x8011044D\n\tCOMADMIN_E_EVENTCLASS_CANT_BE_SUBSCRIBER                                  Handle        = 0x8011044E\n\tCOMADMIN_E_LIB_APP_PROXY_INCOMPATIBLE                                     Handle        = 0x8011044F\n\tCOMADMIN_E_BASE_PARTITION_ONLY                                            Handle        = 0x80110450\n\tCOMADMIN_E_START_APP_DISABLED                                             Handle        = 0x80110451\n\tCOMADMIN_E_CAT_DUPLICATE_PARTITION_NAME                                   Handle        = 0x80110457\n\tCOMADMIN_E_CAT_INVALID_PARTITION_NAME                                     Handle        = 0x80110458\n\tCOMADMIN_E_CAT_PARTITION_IN_USE                                           Handle        = 0x80110459\n\tCOMADMIN_E_FILE_PARTITION_DUPLICATE_FILES                                 Handle        = 0x8011045A\n\tCOMADMIN_E_CAT_IMPORTED_COMPONENTS_NOT_ALLOWED                            Handle        = 0x8011045B\n\tCOMADMIN_E_AMBIGUOUS_APPLICATION_NAME                                     Handle        = 0x8011045C\n\tCOMADMIN_E_AMBIGUOUS_PARTITION_NAME                                       Handle        = 0x8011045D\n\tCOMADMIN_E_REGDB_NOTINITIALIZED                                           Handle        = 0x80110472\n\tCOMADMIN_E_REGDB_NOTOPEN                                                  Handle        = 0x80110473\n\tCOMADMIN_E_REGDB_SYSTEMERR                                                Handle        = 0x80110474\n\tCOMADMIN_E_REGDB_ALREADYRUNNING                                           Handle        = 0x80110475\n\tCOMADMIN_E_MIG_VERSIONNOTSUPPORTED                                        Handle        = 0x80110480\n\tCOMADMIN_E_MIG_SCHEMANOTFOUND                                             Handle        = 0x80110481\n\tCOMADMIN_E_CAT_BITNESSMISMATCH                                            Handle        = 0x80110482\n\tCOMADMIN_E_CAT_UNACCEPTABLEBITNESS                                        Handle        = 0x80110483\n\tCOMADMIN_E_CAT_WRONGAPPBITNESS                                            Handle        = 0x80110484\n\tCOMADMIN_E_CAT_PAUSE_RESUME_NOT_SUPPORTED                                 Handle        = 0x80110485\n\tCOMADMIN_E_CAT_SERVERFAULT                                                Handle        = 0x80110486\n\tCOMQC_E_APPLICATION_NOT_QUEUED                                            Handle        = 0x80110600\n\tCOMQC_E_NO_QUEUEABLE_INTERFACES                                           Handle        = 0x80110601\n\tCOMQC_E_QUEUING_SERVICE_NOT_AVAILABLE                                     Handle        = 0x80110602\n\tCOMQC_E_NO_IPERSISTSTREAM                                                 Handle        = 0x80110603\n\tCOMQC_E_BAD_MESSAGE                                                       Handle        = 0x80110604\n\tCOMQC_E_UNAUTHENTICATED                                                   Handle        = 0x80110605\n\tCOMQC_E_UNTRUSTED_ENQUEUER                                                Handle        = 0x80110606\n\tMSDTC_E_DUPLICATE_RESOURCE                                                Handle        = 0x80110701\n\tCOMADMIN_E_OBJECT_PARENT_MISSING                                          Handle        = 0x80110808\n\tCOMADMIN_E_OBJECT_DOES_NOT_EXIST                                          Handle        = 0x80110809\n\tCOMADMIN_E_APP_NOT_RUNNING                                                Handle        = 0x8011080A\n\tCOMADMIN_E_INVALID_PARTITION                                              Handle        = 0x8011080B\n\tCOMADMIN_E_SVCAPP_NOT_POOLABLE_OR_RECYCLABLE                              Handle        = 0x8011080D\n\tCOMADMIN_E_USER_IN_SET                                                    Handle        = 0x8011080E\n\tCOMADMIN_E_CANTRECYCLELIBRARYAPPS                                         Handle        = 0x8011080F\n\tCOMADMIN_E_CANTRECYCLESERVICEAPPS                                         Handle        = 0x80110811\n\tCOMADMIN_E_PROCESSALREADYRECYCLED                                         Handle        = 0x80110812\n\tCOMADMIN_E_PAUSEDPROCESSMAYNOTBERECYCLED                                  Handle        = 0x80110813\n\tCOMADMIN_E_CANTMAKEINPROCSERVICE                                          Handle        = 0x80110814\n\tCOMADMIN_E_PROGIDINUSEBYCLSID                                             Handle        = 0x80110815\n\tCOMADMIN_E_DEFAULT_PARTITION_NOT_IN_SET                                   Handle        = 0x80110816\n\tCOMADMIN_E_RECYCLEDPROCESSMAYNOTBEPAUSED                                  Handle        = 0x80110817\n\tCOMADMIN_E_PARTITION_ACCESSDENIED                                         Handle        = 0x80110818\n\tCOMADMIN_E_PARTITION_MSI_ONLY                                             Handle        = 0x80110819\n\tCOMADMIN_E_LEGACYCOMPS_NOT_ALLOWED_IN_1_0_FORMAT                          Handle        = 0x8011081A\n\tCOMADMIN_E_LEGACYCOMPS_NOT_ALLOWED_IN_NONBASE_PARTITIONS                  Handle        = 0x8011081B\n\tCOMADMIN_E_COMP_MOVE_SOURCE                                               Handle        = 0x8011081C\n\tCOMADMIN_E_COMP_MOVE_DEST                                                 Handle        = 0x8011081D\n\tCOMADMIN_E_COMP_MOVE_PRIVATE                                              Handle        = 0x8011081E\n\tCOMADMIN_E_BASEPARTITION_REQUIRED_IN_SET                                  Handle        = 0x8011081F\n\tCOMADMIN_E_CANNOT_ALIAS_EVENTCLASS                                        Handle        = 0x80110820\n\tCOMADMIN_E_PRIVATE_ACCESSDENIED                                           Handle        = 0x80110821\n\tCOMADMIN_E_SAFERINVALID                                                   Handle        = 0x80110822\n\tCOMADMIN_E_REGISTRY_ACCESSDENIED                                          Handle        = 0x80110823\n\tCOMADMIN_E_PARTITIONS_DISABLED                                            Handle        = 0x80110824\n\tWER_S_REPORT_DEBUG                                                        Handle        = 0x001B0000\n\tWER_S_REPORT_UPLOADED                                                     Handle        = 0x001B0001\n\tWER_S_REPORT_QUEUED                                                       Handle        = 0x001B0002\n\tWER_S_DISABLED                                                            Handle        = 0x001B0003\n\tWER_S_SUSPENDED_UPLOAD                                                    Handle        = 0x001B0004\n\tWER_S_DISABLED_QUEUE                                                      Handle        = 0x001B0005\n\tWER_S_DISABLED_ARCHIVE                                                    Handle        = 0x001B0006\n\tWER_S_REPORT_ASYNC                                                        Handle        = 0x001B0007\n\tWER_S_IGNORE_ASSERT_INSTANCE                                              Handle        = 0x001B0008\n\tWER_S_IGNORE_ALL_ASSERTS                                                  Handle        = 0x001B0009\n\tWER_S_ASSERT_CONTINUE                                                     Handle        = 0x001B000A\n\tWER_S_THROTTLED                                                           Handle        = 0x001B000B\n\tWER_S_REPORT_UPLOADED_CAB                                                 Handle        = 0x001B000C\n\tWER_E_CRASH_FAILURE                                                       Handle        = 0x801B8000\n\tWER_E_CANCELED                                                            Handle        = 0x801B8001\n\tWER_E_NETWORK_FAILURE                                                     Handle        = 0x801B8002\n\tWER_E_NOT_INITIALIZED                                                     Handle        = 0x801B8003\n\tWER_E_ALREADY_REPORTING                                                   Handle        = 0x801B8004\n\tWER_E_DUMP_THROTTLED                                                      Handle        = 0x801B8005\n\tWER_E_INSUFFICIENT_CONSENT                                                Handle        = 0x801B8006\n\tWER_E_TOO_HEAVY                                                           Handle        = 0x801B8007\n\tERROR_FLT_IO_COMPLETE                                                     Handle        = 0x001F0001\n\tERROR_FLT_NO_HANDLER_DEFINED                                              Handle        = 0x801F0001\n\tERROR_FLT_CONTEXT_ALREADY_DEFINED                                         Handle        = 0x801F0002\n\tERROR_FLT_INVALID_ASYNCHRONOUS_REQUEST                                    Handle        = 0x801F0003\n\tERROR_FLT_DISALLOW_FAST_IO                                                Handle        = 0x801F0004\n\tERROR_FLT_INVALID_NAME_REQUEST                                            Handle        = 0x801F0005\n\tERROR_FLT_NOT_SAFE_TO_POST_OPERATION                                      Handle        = 0x801F0006\n\tERROR_FLT_NOT_INITIALIZED                                                 Handle        = 0x801F0007\n\tERROR_FLT_FILTER_NOT_READY                                                Handle        = 0x801F0008\n\tERROR_FLT_POST_OPERATION_CLEANUP                                          Handle        = 0x801F0009\n\tERROR_FLT_INTERNAL_ERROR                                                  Handle        = 0x801F000A\n\tERROR_FLT_DELETING_OBJECT                                                 Handle        = 0x801F000B\n\tERROR_FLT_MUST_BE_NONPAGED_POOL                                           Handle        = 0x801F000C\n\tERROR_FLT_DUPLICATE_ENTRY                                                 Handle        = 0x801F000D\n\tERROR_FLT_CBDQ_DISABLED                                                   Handle        = 0x801F000E\n\tERROR_FLT_DO_NOT_ATTACH                                                   Handle        = 0x801F000F\n\tERROR_FLT_DO_NOT_DETACH                                                   Handle        = 0x801F0010\n\tERROR_FLT_INSTANCE_ALTITUDE_COLLISION                                     Handle        = 0x801F0011\n\tERROR_FLT_INSTANCE_NAME_COLLISION                                         Handle        = 0x801F0012\n\tERROR_FLT_FILTER_NOT_FOUND                                                Handle        = 0x801F0013\n\tERROR_FLT_VOLUME_NOT_FOUND                                                Handle        = 0x801F0014\n\tERROR_FLT_INSTANCE_NOT_FOUND                                              Handle        = 0x801F0015\n\tERROR_FLT_CONTEXT_ALLOCATION_NOT_FOUND                                    Handle        = 0x801F0016\n\tERROR_FLT_INVALID_CONTEXT_REGISTRATION                                    Handle        = 0x801F0017\n\tERROR_FLT_NAME_CACHE_MISS                                                 Handle        = 0x801F0018\n\tERROR_FLT_NO_DEVICE_OBJECT                                                Handle        = 0x801F0019\n\tERROR_FLT_VOLUME_ALREADY_MOUNTED                                          Handle        = 0x801F001A\n\tERROR_FLT_ALREADY_ENLISTED                                                Handle        = 0x801F001B\n\tERROR_FLT_CONTEXT_ALREADY_LINKED                                          Handle        = 0x801F001C\n\tERROR_FLT_NO_WAITER_FOR_REPLY                                             Handle        = 0x801F0020\n\tERROR_FLT_REGISTRATION_BUSY                                               Handle        = 0x801F0023\n\tERROR_HUNG_DISPLAY_DRIVER_THREAD                                          Handle        = 0x80260001\n\tDWM_E_COMPOSITIONDISABLED                                                 Handle        = 0x80263001\n\tDWM_E_REMOTING_NOT_SUPPORTED                                              Handle        = 0x80263002\n\tDWM_E_NO_REDIRECTION_SURFACE_AVAILABLE                                    Handle        = 0x80263003\n\tDWM_E_NOT_QUEUING_PRESENTS                                                Handle        = 0x80263004\n\tDWM_E_ADAPTER_NOT_FOUND                                                   Handle        = 0x80263005\n\tDWM_S_GDI_REDIRECTION_SURFACE                                             Handle        = 0x00263005\n\tDWM_E_TEXTURE_TOO_LARGE                                                   Handle        = 0x80263007\n\tDWM_S_GDI_REDIRECTION_SURFACE_BLT_VIA_GDI                                 Handle        = 0x00263008\n\tERROR_MONITOR_NO_DESCRIPTOR                                               Handle        = 0x00261001\n\tERROR_MONITOR_UNKNOWN_DESCRIPTOR_FORMAT                                   Handle        = 0x00261002\n\tERROR_MONITOR_INVALID_DESCRIPTOR_CHECKSUM                                 Handle        = 0xC0261003\n\tERROR_MONITOR_INVALID_STANDARD_TIMING_BLOCK                               Handle        = 0xC0261004\n\tERROR_MONITOR_WMI_DATABLOCK_REGISTRATION_FAILED                           Handle        = 0xC0261005\n\tERROR_MONITOR_INVALID_SERIAL_NUMBER_MONDSC_BLOCK                          Handle        = 0xC0261006\n\tERROR_MONITOR_INVALID_USER_FRIENDLY_MONDSC_BLOCK                          Handle        = 0xC0261007\n\tERROR_MONITOR_NO_MORE_DESCRIPTOR_DATA                                     Handle        = 0xC0261008\n\tERROR_MONITOR_INVALID_DETAILED_TIMING_BLOCK                               Handle        = 0xC0261009\n\tERROR_MONITOR_INVALID_MANUFACTURE_DATE                                    Handle        = 0xC026100A\n\tERROR_GRAPHICS_NOT_EXCLUSIVE_MODE_OWNER                                   Handle        = 0xC0262000\n\tERROR_GRAPHICS_INSUFFICIENT_DMA_BUFFER                                    Handle        = 0xC0262001\n\tERROR_GRAPHICS_INVALID_DISPLAY_ADAPTER                                    Handle        = 0xC0262002\n\tERROR_GRAPHICS_ADAPTER_WAS_RESET                                          Handle        = 0xC0262003\n\tERROR_GRAPHICS_INVALID_DRIVER_MODEL                                       Handle        = 0xC0262004\n\tERROR_GRAPHICS_PRESENT_MODE_CHANGED                                       Handle        = 0xC0262005\n\tERROR_GRAPHICS_PRESENT_OCCLUDED                                           Handle        = 0xC0262006\n\tERROR_GRAPHICS_PRESENT_DENIED                                             Handle        = 0xC0262007\n\tERROR_GRAPHICS_CANNOTCOLORCONVERT                                         Handle        = 0xC0262008\n\tERROR_GRAPHICS_DRIVER_MISMATCH                                            Handle        = 0xC0262009\n\tERROR_GRAPHICS_PARTIAL_DATA_POPULATED                                     Handle        = 0x4026200A\n\tERROR_GRAPHICS_PRESENT_REDIRECTION_DISABLED                               Handle        = 0xC026200B\n\tERROR_GRAPHICS_PRESENT_UNOCCLUDED                                         Handle        = 0xC026200C\n\tERROR_GRAPHICS_WINDOWDC_NOT_AVAILABLE                                     Handle        = 0xC026200D\n\tERROR_GRAPHICS_WINDOWLESS_PRESENT_DISABLED                                Handle        = 0xC026200E\n\tERROR_GRAPHICS_PRESENT_INVALID_WINDOW                                     Handle        = 0xC026200F\n\tERROR_GRAPHICS_PRESENT_BUFFER_NOT_BOUND                                   Handle        = 0xC0262010\n\tERROR_GRAPHICS_VAIL_STATE_CHANGED                                         Handle        = 0xC0262011\n\tERROR_GRAPHICS_INDIRECT_DISPLAY_ABANDON_SWAPCHAIN                         Handle        = 0xC0262012\n\tERROR_GRAPHICS_INDIRECT_DISPLAY_DEVICE_STOPPED                            Handle        = 0xC0262013\n\tERROR_GRAPHICS_NO_VIDEO_MEMORY                                            Handle        = 0xC0262100\n\tERROR_GRAPHICS_CANT_LOCK_MEMORY                                           Handle        = 0xC0262101\n\tERROR_GRAPHICS_ALLOCATION_BUSY                                            Handle        = 0xC0262102\n\tERROR_GRAPHICS_TOO_MANY_REFERENCES                                        Handle        = 0xC0262103\n\tERROR_GRAPHICS_TRY_AGAIN_LATER                                            Handle        = 0xC0262104\n\tERROR_GRAPHICS_TRY_AGAIN_NOW                                              Handle        = 0xC0262105\n\tERROR_GRAPHICS_ALLOCATION_INVALID                                         Handle        = 0xC0262106\n\tERROR_GRAPHICS_UNSWIZZLING_APERTURE_UNAVAILABLE                           Handle        = 0xC0262107\n\tERROR_GRAPHICS_UNSWIZZLING_APERTURE_UNSUPPORTED                           Handle        = 0xC0262108\n\tERROR_GRAPHICS_CANT_EVICT_PINNED_ALLOCATION                               Handle        = 0xC0262109\n\tERROR_GRAPHICS_INVALID_ALLOCATION_USAGE                                   Handle        = 0xC0262110\n\tERROR_GRAPHICS_CANT_RENDER_LOCKED_ALLOCATION                              Handle        = 0xC0262111\n\tERROR_GRAPHICS_ALLOCATION_CLOSED                                          Handle        = 0xC0262112\n\tERROR_GRAPHICS_INVALID_ALLOCATION_INSTANCE                                Handle        = 0xC0262113\n\tERROR_GRAPHICS_INVALID_ALLOCATION_HANDLE                                  Handle        = 0xC0262114\n\tERROR_GRAPHICS_WRONG_ALLOCATION_DEVICE                                    Handle        = 0xC0262115\n\tERROR_GRAPHICS_ALLOCATION_CONTENT_LOST                                    Handle        = 0xC0262116\n\tERROR_GRAPHICS_GPU_EXCEPTION_ON_DEVICE                                    Handle        = 0xC0262200\n\tERROR_GRAPHICS_SKIP_ALLOCATION_PREPARATION                                Handle        = 0x40262201\n\tERROR_GRAPHICS_INVALID_VIDPN_TOPOLOGY                                     Handle        = 0xC0262300\n\tERROR_GRAPHICS_VIDPN_TOPOLOGY_NOT_SUPPORTED                               Handle        = 0xC0262301\n\tERROR_GRAPHICS_VIDPN_TOPOLOGY_CURRENTLY_NOT_SUPPORTED                     Handle        = 0xC0262302\n\tERROR_GRAPHICS_INVALID_VIDPN                                              Handle        = 0xC0262303\n\tERROR_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE                               Handle        = 0xC0262304\n\tERROR_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET                               Handle        = 0xC0262305\n\tERROR_GRAPHICS_VIDPN_MODALITY_NOT_SUPPORTED                               Handle        = 0xC0262306\n\tERROR_GRAPHICS_MODE_NOT_PINNED                                            Handle        = 0x00262307\n\tERROR_GRAPHICS_INVALID_VIDPN_SOURCEMODESET                                Handle        = 0xC0262308\n\tERROR_GRAPHICS_INVALID_VIDPN_TARGETMODESET                                Handle        = 0xC0262309\n\tERROR_GRAPHICS_INVALID_FREQUENCY                                          Handle        = 0xC026230A\n\tERROR_GRAPHICS_INVALID_ACTIVE_REGION                                      Handle        = 0xC026230B\n\tERROR_GRAPHICS_INVALID_TOTAL_REGION                                       Handle        = 0xC026230C\n\tERROR_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE_MODE                          Handle        = 0xC0262310\n\tERROR_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET_MODE                          Handle        = 0xC0262311\n\tERROR_GRAPHICS_PINNED_MODE_MUST_REMAIN_IN_SET                             Handle        = 0xC0262312\n\tERROR_GRAPHICS_PATH_ALREADY_IN_TOPOLOGY                                   Handle        = 0xC0262313\n\tERROR_GRAPHICS_MODE_ALREADY_IN_MODESET                                    Handle        = 0xC0262314\n\tERROR_GRAPHICS_INVALID_VIDEOPRESENTSOURCESET                              Handle        = 0xC0262315\n\tERROR_GRAPHICS_INVALID_VIDEOPRESENTTARGETSET                              Handle        = 0xC0262316\n\tERROR_GRAPHICS_SOURCE_ALREADY_IN_SET                                      Handle        = 0xC0262317\n\tERROR_GRAPHICS_TARGET_ALREADY_IN_SET                                      Handle        = 0xC0262318\n\tERROR_GRAPHICS_INVALID_VIDPN_PRESENT_PATH                                 Handle        = 0xC0262319\n\tERROR_GRAPHICS_NO_RECOMMENDED_VIDPN_TOPOLOGY                              Handle        = 0xC026231A\n\tERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGESET                          Handle        = 0xC026231B\n\tERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE                             Handle        = 0xC026231C\n\tERROR_GRAPHICS_FREQUENCYRANGE_NOT_IN_SET                                  Handle        = 0xC026231D\n\tERROR_GRAPHICS_NO_PREFERRED_MODE                                          Handle        = 0x0026231E\n\tERROR_GRAPHICS_FREQUENCYRANGE_ALREADY_IN_SET                              Handle        = 0xC026231F\n\tERROR_GRAPHICS_STALE_MODESET                                              Handle        = 0xC0262320\n\tERROR_GRAPHICS_INVALID_MONITOR_SOURCEMODESET                              Handle        = 0xC0262321\n\tERROR_GRAPHICS_INVALID_MONITOR_SOURCE_MODE                                Handle        = 0xC0262322\n\tERROR_GRAPHICS_NO_RECOMMENDED_FUNCTIONAL_VIDPN                            Handle        = 0xC0262323\n\tERROR_GRAPHICS_MODE_ID_MUST_BE_UNIQUE                                     Handle        = 0xC0262324\n\tERROR_GRAPHICS_EMPTY_ADAPTER_MONITOR_MODE_SUPPORT_INTERSECTION            Handle        = 0xC0262325\n\tERROR_GRAPHICS_VIDEO_PRESENT_TARGETS_LESS_THAN_SOURCES                    Handle        = 0xC0262326\n\tERROR_GRAPHICS_PATH_NOT_IN_TOPOLOGY                                       Handle        = 0xC0262327\n\tERROR_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_SOURCE                      Handle        = 0xC0262328\n\tERROR_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_TARGET                      Handle        = 0xC0262329\n\tERROR_GRAPHICS_INVALID_MONITORDESCRIPTORSET                               Handle        = 0xC026232A\n\tERROR_GRAPHICS_INVALID_MONITORDESCRIPTOR                                  Handle        = 0xC026232B\n\tERROR_GRAPHICS_MONITORDESCRIPTOR_NOT_IN_SET                               Handle        = 0xC026232C\n\tERROR_GRAPHICS_MONITORDESCRIPTOR_ALREADY_IN_SET                           Handle        = 0xC026232D\n\tERROR_GRAPHICS_MONITORDESCRIPTOR_ID_MUST_BE_UNIQUE                        Handle        = 0xC026232E\n\tERROR_GRAPHICS_INVALID_VIDPN_TARGET_SUBSET_TYPE                           Handle        = 0xC026232F\n\tERROR_GRAPHICS_RESOURCES_NOT_RELATED                                      Handle        = 0xC0262330\n\tERROR_GRAPHICS_SOURCE_ID_MUST_BE_UNIQUE                                   Handle        = 0xC0262331\n\tERROR_GRAPHICS_TARGET_ID_MUST_BE_UNIQUE                                   Handle        = 0xC0262332\n\tERROR_GRAPHICS_NO_AVAILABLE_VIDPN_TARGET                                  Handle        = 0xC0262333\n\tERROR_GRAPHICS_MONITOR_COULD_NOT_BE_ASSOCIATED_WITH_ADAPTER               Handle        = 0xC0262334\n\tERROR_GRAPHICS_NO_VIDPNMGR                                                Handle        = 0xC0262335\n\tERROR_GRAPHICS_NO_ACTIVE_VIDPN                                            Handle        = 0xC0262336\n\tERROR_GRAPHICS_STALE_VIDPN_TOPOLOGY                                       Handle        = 0xC0262337\n\tERROR_GRAPHICS_MONITOR_NOT_CONNECTED                                      Handle        = 0xC0262338\n\tERROR_GRAPHICS_SOURCE_NOT_IN_TOPOLOGY                                     Handle        = 0xC0262339\n\tERROR_GRAPHICS_INVALID_PRIMARYSURFACE_SIZE                                Handle        = 0xC026233A\n\tERROR_GRAPHICS_INVALID_VISIBLEREGION_SIZE                                 Handle        = 0xC026233B\n\tERROR_GRAPHICS_INVALID_STRIDE                                             Handle        = 0xC026233C\n\tERROR_GRAPHICS_INVALID_PIXELFORMAT                                        Handle        = 0xC026233D\n\tERROR_GRAPHICS_INVALID_COLORBASIS                                         Handle        = 0xC026233E\n\tERROR_GRAPHICS_INVALID_PIXELVALUEACCESSMODE                               Handle        = 0xC026233F\n\tERROR_GRAPHICS_TARGET_NOT_IN_TOPOLOGY                                     Handle        = 0xC0262340\n\tERROR_GRAPHICS_NO_DISPLAY_MODE_MANAGEMENT_SUPPORT                         Handle        = 0xC0262341\n\tERROR_GRAPHICS_VIDPN_SOURCE_IN_USE                                        Handle        = 0xC0262342\n\tERROR_GRAPHICS_CANT_ACCESS_ACTIVE_VIDPN                                   Handle        = 0xC0262343\n\tERROR_GRAPHICS_INVALID_PATH_IMPORTANCE_ORDINAL                            Handle        = 0xC0262344\n\tERROR_GRAPHICS_INVALID_PATH_CONTENT_GEOMETRY_TRANSFORMATION               Handle        = 0xC0262345\n\tERROR_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_SUPPORTED         Handle        = 0xC0262346\n\tERROR_GRAPHICS_INVALID_GAMMA_RAMP                                         Handle        = 0xC0262347\n\tERROR_GRAPHICS_GAMMA_RAMP_NOT_SUPPORTED                                   Handle        = 0xC0262348\n\tERROR_GRAPHICS_MULTISAMPLING_NOT_SUPPORTED                                Handle        = 0xC0262349\n\tERROR_GRAPHICS_MODE_NOT_IN_MODESET                                        Handle        = 0xC026234A\n\tERROR_GRAPHICS_DATASET_IS_EMPTY                                           Handle        = 0x0026234B\n\tERROR_GRAPHICS_NO_MORE_ELEMENTS_IN_DATASET                                Handle        = 0x0026234C\n\tERROR_GRAPHICS_INVALID_VIDPN_TOPOLOGY_RECOMMENDATION_REASON               Handle        = 0xC026234D\n\tERROR_GRAPHICS_INVALID_PATH_CONTENT_TYPE                                  Handle        = 0xC026234E\n\tERROR_GRAPHICS_INVALID_COPYPROTECTION_TYPE                                Handle        = 0xC026234F\n\tERROR_GRAPHICS_UNASSIGNED_MODESET_ALREADY_EXISTS                          Handle        = 0xC0262350\n\tERROR_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_PINNED            Handle        = 0x00262351\n\tERROR_GRAPHICS_INVALID_SCANLINE_ORDERING                                  Handle        = 0xC0262352\n\tERROR_GRAPHICS_TOPOLOGY_CHANGES_NOT_ALLOWED                               Handle        = 0xC0262353\n\tERROR_GRAPHICS_NO_AVAILABLE_IMPORTANCE_ORDINALS                           Handle        = 0xC0262354\n\tERROR_GRAPHICS_INCOMPATIBLE_PRIVATE_FORMAT                                Handle        = 0xC0262355\n\tERROR_GRAPHICS_INVALID_MODE_PRUNING_ALGORITHM                             Handle        = 0xC0262356\n\tERROR_GRAPHICS_INVALID_MONITOR_CAPABILITY_ORIGIN                          Handle        = 0xC0262357\n\tERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE_CONSTRAINT                  Handle        = 0xC0262358\n\tERROR_GRAPHICS_MAX_NUM_PATHS_REACHED                                      Handle        = 0xC0262359\n\tERROR_GRAPHICS_CANCEL_VIDPN_TOPOLOGY_AUGMENTATION                         Handle        = 0xC026235A\n\tERROR_GRAPHICS_INVALID_CLIENT_TYPE                                        Handle        = 0xC026235B\n\tERROR_GRAPHICS_CLIENTVIDPN_NOT_SET                                        Handle        = 0xC026235C\n\tERROR_GRAPHICS_SPECIFIED_CHILD_ALREADY_CONNECTED                          Handle        = 0xC0262400\n\tERROR_GRAPHICS_CHILD_DESCRIPTOR_NOT_SUPPORTED                             Handle        = 0xC0262401\n\tERROR_GRAPHICS_UNKNOWN_CHILD_STATUS                                       Handle        = 0x4026242F\n\tERROR_GRAPHICS_NOT_A_LINKED_ADAPTER                                       Handle        = 0xC0262430\n\tERROR_GRAPHICS_LEADLINK_NOT_ENUMERATED                                    Handle        = 0xC0262431\n\tERROR_GRAPHICS_CHAINLINKS_NOT_ENUMERATED                                  Handle        = 0xC0262432\n\tERROR_GRAPHICS_ADAPTER_CHAIN_NOT_READY                                    Handle        = 0xC0262433\n\tERROR_GRAPHICS_CHAINLINKS_NOT_STARTED                                     Handle        = 0xC0262434\n\tERROR_GRAPHICS_CHAINLINKS_NOT_POWERED_ON                                  Handle        = 0xC0262435\n\tERROR_GRAPHICS_INCONSISTENT_DEVICE_LINK_STATE                             Handle        = 0xC0262436\n\tERROR_GRAPHICS_LEADLINK_START_DEFERRED                                    Handle        = 0x40262437\n\tERROR_GRAPHICS_NOT_POST_DEVICE_DRIVER                                     Handle        = 0xC0262438\n\tERROR_GRAPHICS_POLLING_TOO_FREQUENTLY                                     Handle        = 0x40262439\n\tERROR_GRAPHICS_START_DEFERRED                                             Handle        = 0x4026243A\n\tERROR_GRAPHICS_ADAPTER_ACCESS_NOT_EXCLUDED                                Handle        = 0xC026243B\n\tERROR_GRAPHICS_DEPENDABLE_CHILD_STATUS                                    Handle        = 0x4026243C\n\tERROR_GRAPHICS_OPM_NOT_SUPPORTED                                          Handle        = 0xC0262500\n\tERROR_GRAPHICS_COPP_NOT_SUPPORTED                                         Handle        = 0xC0262501\n\tERROR_GRAPHICS_UAB_NOT_SUPPORTED                                          Handle        = 0xC0262502\n\tERROR_GRAPHICS_OPM_INVALID_ENCRYPTED_PARAMETERS                           Handle        = 0xC0262503\n\tERROR_GRAPHICS_OPM_NO_VIDEO_OUTPUTS_EXIST                                 Handle        = 0xC0262505\n\tERROR_GRAPHICS_OPM_INTERNAL_ERROR                                         Handle        = 0xC026250B\n\tERROR_GRAPHICS_OPM_INVALID_HANDLE                                         Handle        = 0xC026250C\n\tERROR_GRAPHICS_PVP_INVALID_CERTIFICATE_LENGTH                             Handle        = 0xC026250E\n\tERROR_GRAPHICS_OPM_SPANNING_MODE_ENABLED                                  Handle        = 0xC026250F\n\tERROR_GRAPHICS_OPM_THEATER_MODE_ENABLED                                   Handle        = 0xC0262510\n\tERROR_GRAPHICS_PVP_HFS_FAILED                                             Handle        = 0xC0262511\n\tERROR_GRAPHICS_OPM_INVALID_SRM                                            Handle        = 0xC0262512\n\tERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_HDCP                           Handle        = 0xC0262513\n\tERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_ACP                            Handle        = 0xC0262514\n\tERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_CGMSA                          Handle        = 0xC0262515\n\tERROR_GRAPHICS_OPM_HDCP_SRM_NEVER_SET                                     Handle        = 0xC0262516\n\tERROR_GRAPHICS_OPM_RESOLUTION_TOO_HIGH                                    Handle        = 0xC0262517\n\tERROR_GRAPHICS_OPM_ALL_HDCP_HARDWARE_ALREADY_IN_USE                       Handle        = 0xC0262518\n\tERROR_GRAPHICS_OPM_VIDEO_OUTPUT_NO_LONGER_EXISTS                          Handle        = 0xC026251A\n\tERROR_GRAPHICS_OPM_SESSION_TYPE_CHANGE_IN_PROGRESS                        Handle        = 0xC026251B\n\tERROR_GRAPHICS_OPM_VIDEO_OUTPUT_DOES_NOT_HAVE_COPP_SEMANTICS              Handle        = 0xC026251C\n\tERROR_GRAPHICS_OPM_INVALID_INFORMATION_REQUEST                            Handle        = 0xC026251D\n\tERROR_GRAPHICS_OPM_DRIVER_INTERNAL_ERROR                                  Handle        = 0xC026251E\n\tERROR_GRAPHICS_OPM_VIDEO_OUTPUT_DOES_NOT_HAVE_OPM_SEMANTICS               Handle        = 0xC026251F\n\tERROR_GRAPHICS_OPM_SIGNALING_NOT_SUPPORTED                                Handle        = 0xC0262520\n\tERROR_GRAPHICS_OPM_INVALID_CONFIGURATION_REQUEST                          Handle        = 0xC0262521\n\tERROR_GRAPHICS_I2C_NOT_SUPPORTED                                          Handle        = 0xC0262580\n\tERROR_GRAPHICS_I2C_DEVICE_DOES_NOT_EXIST                                  Handle        = 0xC0262581\n\tERROR_GRAPHICS_I2C_ERROR_TRANSMITTING_DATA                                Handle        = 0xC0262582\n\tERROR_GRAPHICS_I2C_ERROR_RECEIVING_DATA                                   Handle        = 0xC0262583\n\tERROR_GRAPHICS_DDCCI_VCP_NOT_SUPPORTED                                    Handle        = 0xC0262584\n\tERROR_GRAPHICS_DDCCI_INVALID_DATA                                         Handle        = 0xC0262585\n\tERROR_GRAPHICS_DDCCI_MONITOR_RETURNED_INVALID_TIMING_STATUS_BYTE          Handle        = 0xC0262586\n\tERROR_GRAPHICS_MCA_INVALID_CAPABILITIES_STRING                            Handle        = 0xC0262587\n\tERROR_GRAPHICS_MCA_INTERNAL_ERROR                                         Handle        = 0xC0262588\n\tERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_COMMAND                              Handle        = 0xC0262589\n\tERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_LENGTH                               Handle        = 0xC026258A\n\tERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_CHECKSUM                             Handle        = 0xC026258B\n\tERROR_GRAPHICS_INVALID_PHYSICAL_MONITOR_HANDLE                            Handle        = 0xC026258C\n\tERROR_GRAPHICS_MONITOR_NO_LONGER_EXISTS                                   Handle        = 0xC026258D\n\tERROR_GRAPHICS_DDCCI_CURRENT_CURRENT_VALUE_GREATER_THAN_MAXIMUM_VALUE     Handle        = 0xC02625D8\n\tERROR_GRAPHICS_MCA_INVALID_VCP_VERSION                                    Handle        = 0xC02625D9\n\tERROR_GRAPHICS_MCA_MONITOR_VIOLATES_MCCS_SPECIFICATION                    Handle        = 0xC02625DA\n\tERROR_GRAPHICS_MCA_MCCS_VERSION_MISMATCH                                  Handle        = 0xC02625DB\n\tERROR_GRAPHICS_MCA_UNSUPPORTED_MCCS_VERSION                               Handle        = 0xC02625DC\n\tERROR_GRAPHICS_MCA_INVALID_TECHNOLOGY_TYPE_RETURNED                       Handle        = 0xC02625DE\n\tERROR_GRAPHICS_MCA_UNSUPPORTED_COLOR_TEMPERATURE                          Handle        = 0xC02625DF\n\tERROR_GRAPHICS_ONLY_CONSOLE_SESSION_SUPPORTED                             Handle        = 0xC02625E0\n\tERROR_GRAPHICS_NO_DISPLAY_DEVICE_CORRESPONDS_TO_NAME                      Handle        = 0xC02625E1\n\tERROR_GRAPHICS_DISPLAY_DEVICE_NOT_ATTACHED_TO_DESKTOP                     Handle        = 0xC02625E2\n\tERROR_GRAPHICS_MIRRORING_DEVICES_NOT_SUPPORTED                            Handle        = 0xC02625E3\n\tERROR_GRAPHICS_INVALID_POINTER                                            Handle        = 0xC02625E4\n\tERROR_GRAPHICS_NO_MONITORS_CORRESPOND_TO_DISPLAY_DEVICE                   Handle        = 0xC02625E5\n\tERROR_GRAPHICS_PARAMETER_ARRAY_TOO_SMALL                                  Handle        = 0xC02625E6\n\tERROR_GRAPHICS_INTERNAL_ERROR                                             Handle        = 0xC02625E7\n\tERROR_GRAPHICS_SESSION_TYPE_CHANGE_IN_PROGRESS                            Handle        = 0xC02605E8\n\tNAP_E_INVALID_PACKET                                                      Handle        = 0x80270001\n\tNAP_E_MISSING_SOH                                                         Handle        = 0x80270002\n\tNAP_E_CONFLICTING_ID                                                      Handle        = 0x80270003\n\tNAP_E_NO_CACHED_SOH                                                       Handle        = 0x80270004\n\tNAP_E_STILL_BOUND                                                         Handle        = 0x80270005\n\tNAP_E_NOT_REGISTERED                                                      Handle        = 0x80270006\n\tNAP_E_NOT_INITIALIZED                                                     Handle        = 0x80270007\n\tNAP_E_MISMATCHED_ID                                                       Handle        = 0x80270008\n\tNAP_E_NOT_PENDING                                                         Handle        = 0x80270009\n\tNAP_E_ID_NOT_FOUND                                                        Handle        = 0x8027000A\n\tNAP_E_MAXSIZE_TOO_SMALL                                                   Handle        = 0x8027000B\n\tNAP_E_SERVICE_NOT_RUNNING                                                 Handle        = 0x8027000C\n\tNAP_S_CERT_ALREADY_PRESENT                                                Handle        = 0x0027000D\n\tNAP_E_ENTITY_DISABLED                                                     Handle        = 0x8027000E\n\tNAP_E_NETSH_GROUPPOLICY_ERROR                                             Handle        = 0x8027000F\n\tNAP_E_TOO_MANY_CALLS                                                      Handle        = 0x80270010\n\tNAP_E_SHV_CONFIG_EXISTED                                                  Handle        = 0x80270011\n\tNAP_E_SHV_CONFIG_NOT_FOUND                                                Handle        = 0x80270012\n\tNAP_E_SHV_TIMEOUT                                                         Handle        = 0x80270013\n\tTPM_E_ERROR_MASK                                                          Handle        = 0x80280000\n\tTPM_E_AUTHFAIL                                                            Handle        = 0x80280001\n\tTPM_E_BADINDEX                                                            Handle        = 0x80280002\n\tTPM_E_BAD_PARAMETER                                                       Handle        = 0x80280003\n\tTPM_E_AUDITFAILURE                                                        Handle        = 0x80280004\n\tTPM_E_CLEAR_DISABLED                                                      Handle        = 0x80280005\n\tTPM_E_DEACTIVATED                                                         Handle        = 0x80280006\n\tTPM_E_DISABLED                                                            Handle        = 0x80280007\n\tTPM_E_DISABLED_CMD                                                        Handle        = 0x80280008\n\tTPM_E_FAIL                                                                Handle        = 0x80280009\n\tTPM_E_BAD_ORDINAL                                                         Handle        = 0x8028000A\n\tTPM_E_INSTALL_DISABLED                                                    Handle        = 0x8028000B\n\tTPM_E_INVALID_KEYHANDLE                                                   Handle        = 0x8028000C\n\tTPM_E_KEYNOTFOUND                                                         Handle        = 0x8028000D\n\tTPM_E_INAPPROPRIATE_ENC                                                   Handle        = 0x8028000E\n\tTPM_E_MIGRATEFAIL                                                         Handle        = 0x8028000F\n\tTPM_E_INVALID_PCR_INFO                                                    Handle        = 0x80280010\n\tTPM_E_NOSPACE                                                             Handle        = 0x80280011\n\tTPM_E_NOSRK                                                               Handle        = 0x80280012\n\tTPM_E_NOTSEALED_BLOB                                                      Handle        = 0x80280013\n\tTPM_E_OWNER_SET                                                           Handle        = 0x80280014\n\tTPM_E_RESOURCES                                                           Handle        = 0x80280015\n\tTPM_E_SHORTRANDOM                                                         Handle        = 0x80280016\n\tTPM_E_SIZE                                                                Handle        = 0x80280017\n\tTPM_E_WRONGPCRVAL                                                         Handle        = 0x80280018\n\tTPM_E_BAD_PARAM_SIZE                                                      Handle        = 0x80280019\n\tTPM_E_SHA_THREAD                                                          Handle        = 0x8028001A\n\tTPM_E_SHA_ERROR                                                           Handle        = 0x8028001B\n\tTPM_E_FAILEDSELFTEST                                                      Handle        = 0x8028001C\n\tTPM_E_AUTH2FAIL                                                           Handle        = 0x8028001D\n\tTPM_E_BADTAG                                                              Handle        = 0x8028001E\n\tTPM_E_IOERROR                                                             Handle        = 0x8028001F\n\tTPM_E_ENCRYPT_ERROR                                                       Handle        = 0x80280020\n\tTPM_E_DECRYPT_ERROR                                                       Handle        = 0x80280021\n\tTPM_E_INVALID_AUTHHANDLE                                                  Handle        = 0x80280022\n\tTPM_E_NO_ENDORSEMENT                                                      Handle        = 0x80280023\n\tTPM_E_INVALID_KEYUSAGE                                                    Handle        = 0x80280024\n\tTPM_E_WRONG_ENTITYTYPE                                                    Handle        = 0x80280025\n\tTPM_E_INVALID_POSTINIT                                                    Handle        = 0x80280026\n\tTPM_E_INAPPROPRIATE_SIG                                                   Handle        = 0x80280027\n\tTPM_E_BAD_KEY_PROPERTY                                                    Handle        = 0x80280028\n\tTPM_E_BAD_MIGRATION                                                       Handle        = 0x80280029\n\tTPM_E_BAD_SCHEME                                                          Handle        = 0x8028002A\n\tTPM_E_BAD_DATASIZE                                                        Handle        = 0x8028002B\n\tTPM_E_BAD_MODE                                                            Handle        = 0x8028002C\n\tTPM_E_BAD_PRESENCE                                                        Handle        = 0x8028002D\n\tTPM_E_BAD_VERSION                                                         Handle        = 0x8028002E\n\tTPM_E_NO_WRAP_TRANSPORT                                                   Handle        = 0x8028002F\n\tTPM_E_AUDITFAIL_UNSUCCESSFUL                                              Handle        = 0x80280030\n\tTPM_E_AUDITFAIL_SUCCESSFUL                                                Handle        = 0x80280031\n\tTPM_E_NOTRESETABLE                                                        Handle        = 0x80280032\n\tTPM_E_NOTLOCAL                                                            Handle        = 0x80280033\n\tTPM_E_BAD_TYPE                                                            Handle        = 0x80280034\n\tTPM_E_INVALID_RESOURCE                                                    Handle        = 0x80280035\n\tTPM_E_NOTFIPS                                                             Handle        = 0x80280036\n\tTPM_E_INVALID_FAMILY                                                      Handle        = 0x80280037\n\tTPM_E_NO_NV_PERMISSION                                                    Handle        = 0x80280038\n\tTPM_E_REQUIRES_SIGN                                                       Handle        = 0x80280039\n\tTPM_E_KEY_NOTSUPPORTED                                                    Handle        = 0x8028003A\n\tTPM_E_AUTH_CONFLICT                                                       Handle        = 0x8028003B\n\tTPM_E_AREA_LOCKED                                                         Handle        = 0x8028003C\n\tTPM_E_BAD_LOCALITY                                                        Handle        = 0x8028003D\n\tTPM_E_READ_ONLY                                                           Handle        = 0x8028003E\n\tTPM_E_PER_NOWRITE                                                         Handle        = 0x8028003F\n\tTPM_E_FAMILYCOUNT                                                         Handle        = 0x80280040\n\tTPM_E_WRITE_LOCKED                                                        Handle        = 0x80280041\n\tTPM_E_BAD_ATTRIBUTES                                                      Handle        = 0x80280042\n\tTPM_E_INVALID_STRUCTURE                                                   Handle        = 0x80280043\n\tTPM_E_KEY_OWNER_CONTROL                                                   Handle        = 0x80280044\n\tTPM_E_BAD_COUNTER                                                         Handle        = 0x80280045\n\tTPM_E_NOT_FULLWRITE                                                       Handle        = 0x80280046\n\tTPM_E_CONTEXT_GAP                                                         Handle        = 0x80280047\n\tTPM_E_MAXNVWRITES                                                         Handle        = 0x80280048\n\tTPM_E_NOOPERATOR                                                          Handle        = 0x80280049\n\tTPM_E_RESOURCEMISSING                                                     Handle        = 0x8028004A\n\tTPM_E_DELEGATE_LOCK                                                       Handle        = 0x8028004B\n\tTPM_E_DELEGATE_FAMILY                                                     Handle        = 0x8028004C\n\tTPM_E_DELEGATE_ADMIN                                                      Handle        = 0x8028004D\n\tTPM_E_TRANSPORT_NOTEXCLUSIVE                                              Handle        = 0x8028004E\n\tTPM_E_OWNER_CONTROL                                                       Handle        = 0x8028004F\n\tTPM_E_DAA_RESOURCES                                                       Handle        = 0x80280050\n\tTPM_E_DAA_INPUT_DATA0                                                     Handle        = 0x80280051\n\tTPM_E_DAA_INPUT_DATA1                                                     Handle        = 0x80280052\n\tTPM_E_DAA_ISSUER_SETTINGS                                                 Handle        = 0x80280053\n\tTPM_E_DAA_TPM_SETTINGS                                                    Handle        = 0x80280054\n\tTPM_E_DAA_STAGE                                                           Handle        = 0x80280055\n\tTPM_E_DAA_ISSUER_VALIDITY                                                 Handle        = 0x80280056\n\tTPM_E_DAA_WRONG_W                                                         Handle        = 0x80280057\n\tTPM_E_BAD_HANDLE                                                          Handle        = 0x80280058\n\tTPM_E_BAD_DELEGATE                                                        Handle        = 0x80280059\n\tTPM_E_BADCONTEXT                                                          Handle        = 0x8028005A\n\tTPM_E_TOOMANYCONTEXTS                                                     Handle        = 0x8028005B\n\tTPM_E_MA_TICKET_SIGNATURE                                                 Handle        = 0x8028005C\n\tTPM_E_MA_DESTINATION                                                      Handle        = 0x8028005D\n\tTPM_E_MA_SOURCE                                                           Handle        = 0x8028005E\n\tTPM_E_MA_AUTHORITY                                                        Handle        = 0x8028005F\n\tTPM_E_PERMANENTEK                                                         Handle        = 0x80280061\n\tTPM_E_BAD_SIGNATURE                                                       Handle        = 0x80280062\n\tTPM_E_NOCONTEXTSPACE                                                      Handle        = 0x80280063\n\tTPM_20_E_ASYMMETRIC                                                       Handle        = 0x80280081\n\tTPM_20_E_ATTRIBUTES                                                       Handle        = 0x80280082\n\tTPM_20_E_HASH                                                             Handle        = 0x80280083\n\tTPM_20_E_VALUE                                                            Handle        = 0x80280084\n\tTPM_20_E_HIERARCHY                                                        Handle        = 0x80280085\n\tTPM_20_E_KEY_SIZE                                                         Handle        = 0x80280087\n\tTPM_20_E_MGF                                                              Handle        = 0x80280088\n\tTPM_20_E_MODE                                                             Handle        = 0x80280089\n\tTPM_20_E_TYPE                                                             Handle        = 0x8028008A\n\tTPM_20_E_HANDLE                                                           Handle        = 0x8028008B\n\tTPM_20_E_KDF                                                              Handle        = 0x8028008C\n\tTPM_20_E_RANGE                                                            Handle        = 0x8028008D\n\tTPM_20_E_AUTH_FAIL                                                        Handle        = 0x8028008E\n\tTPM_20_E_NONCE                                                            Handle        = 0x8028008F\n\tTPM_20_E_PP                                                               Handle        = 0x80280090\n\tTPM_20_E_SCHEME                                                           Handle        = 0x80280092\n\tTPM_20_E_SIZE                                                             Handle        = 0x80280095\n\tTPM_20_E_SYMMETRIC                                                        Handle        = 0x80280096\n\tTPM_20_E_TAG                                                              Handle        = 0x80280097\n\tTPM_20_E_SELECTOR                                                         Handle        = 0x80280098\n\tTPM_20_E_INSUFFICIENT                                                     Handle        = 0x8028009A\n\tTPM_20_E_SIGNATURE                                                        Handle        = 0x8028009B\n\tTPM_20_E_KEY                                                              Handle        = 0x8028009C\n\tTPM_20_E_POLICY_FAIL                                                      Handle        = 0x8028009D\n\tTPM_20_E_INTEGRITY                                                        Handle        = 0x8028009F\n\tTPM_20_E_TICKET                                                           Handle        = 0x802800A0\n\tTPM_20_E_RESERVED_BITS                                                    Handle        = 0x802800A1\n\tTPM_20_E_BAD_AUTH                                                         Handle        = 0x802800A2\n\tTPM_20_E_EXPIRED                                                          Handle        = 0x802800A3\n\tTPM_20_E_POLICY_CC                                                        Handle        = 0x802800A4\n\tTPM_20_E_BINDING                                                          Handle        = 0x802800A5\n\tTPM_20_E_CURVE                                                            Handle        = 0x802800A6\n\tTPM_20_E_ECC_POINT                                                        Handle        = 0x802800A7\n\tTPM_20_E_INITIALIZE                                                       Handle        = 0x80280100\n\tTPM_20_E_FAILURE                                                          Handle        = 0x80280101\n\tTPM_20_E_SEQUENCE                                                         Handle        = 0x80280103\n\tTPM_20_E_PRIVATE                                                          Handle        = 0x8028010B\n\tTPM_20_E_HMAC                                                             Handle        = 0x80280119\n\tTPM_20_E_DISABLED                                                         Handle        = 0x80280120\n\tTPM_20_E_EXCLUSIVE                                                        Handle        = 0x80280121\n\tTPM_20_E_ECC_CURVE                                                        Handle        = 0x80280123\n\tTPM_20_E_AUTH_TYPE                                                        Handle        = 0x80280124\n\tTPM_20_E_AUTH_MISSING                                                     Handle        = 0x80280125\n\tTPM_20_E_POLICY                                                           Handle        = 0x80280126\n\tTPM_20_E_PCR                                                              Handle        = 0x80280127\n\tTPM_20_E_PCR_CHANGED                                                      Handle        = 0x80280128\n\tTPM_20_E_UPGRADE                                                          Handle        = 0x8028012D\n\tTPM_20_E_TOO_MANY_CONTEXTS                                                Handle        = 0x8028012E\n\tTPM_20_E_AUTH_UNAVAILABLE                                                 Handle        = 0x8028012F\n\tTPM_20_E_REBOOT                                                           Handle        = 0x80280130\n\tTPM_20_E_UNBALANCED                                                       Handle        = 0x80280131\n\tTPM_20_E_COMMAND_SIZE                                                     Handle        = 0x80280142\n\tTPM_20_E_COMMAND_CODE                                                     Handle        = 0x80280143\n\tTPM_20_E_AUTHSIZE                                                         Handle        = 0x80280144\n\tTPM_20_E_AUTH_CONTEXT                                                     Handle        = 0x80280145\n\tTPM_20_E_NV_RANGE                                                         Handle        = 0x80280146\n\tTPM_20_E_NV_SIZE                                                          Handle        = 0x80280147\n\tTPM_20_E_NV_LOCKED                                                        Handle        = 0x80280148\n\tTPM_20_E_NV_AUTHORIZATION                                                 Handle        = 0x80280149\n\tTPM_20_E_NV_UNINITIALIZED                                                 Handle        = 0x8028014A\n\tTPM_20_E_NV_SPACE                                                         Handle        = 0x8028014B\n\tTPM_20_E_NV_DEFINED                                                       Handle        = 0x8028014C\n\tTPM_20_E_BAD_CONTEXT                                                      Handle        = 0x80280150\n\tTPM_20_E_CPHASH                                                           Handle        = 0x80280151\n\tTPM_20_E_PARENT                                                           Handle        = 0x80280152\n\tTPM_20_E_NEEDS_TEST                                                       Handle        = 0x80280153\n\tTPM_20_E_NO_RESULT                                                        Handle        = 0x80280154\n\tTPM_20_E_SENSITIVE                                                        Handle        = 0x80280155\n\tTPM_E_COMMAND_BLOCKED                                                     Handle        = 0x80280400\n\tTPM_E_INVALID_HANDLE                                                      Handle        = 0x80280401\n\tTPM_E_DUPLICATE_VHANDLE                                                   Handle        = 0x80280402\n\tTPM_E_EMBEDDED_COMMAND_BLOCKED                                            Handle        = 0x80280403\n\tTPM_E_EMBEDDED_COMMAND_UNSUPPORTED                                        Handle        = 0x80280404\n\tTPM_E_RETRY                                                               Handle        = 0x80280800\n\tTPM_E_NEEDS_SELFTEST                                                      Handle        = 0x80280801\n\tTPM_E_DOING_SELFTEST                                                      Handle        = 0x80280802\n\tTPM_E_DEFEND_LOCK_RUNNING                                                 Handle        = 0x80280803\n\tTPM_20_E_CONTEXT_GAP                                                      Handle        = 0x80280901\n\tTPM_20_E_OBJECT_MEMORY                                                    Handle        = 0x80280902\n\tTPM_20_E_SESSION_MEMORY                                                   Handle        = 0x80280903\n\tTPM_20_E_MEMORY                                                           Handle        = 0x80280904\n\tTPM_20_E_SESSION_HANDLES                                                  Handle        = 0x80280905\n\tTPM_20_E_OBJECT_HANDLES                                                   Handle        = 0x80280906\n\tTPM_20_E_LOCALITY                                                         Handle        = 0x80280907\n\tTPM_20_E_YIELDED                                                          Handle        = 0x80280908\n\tTPM_20_E_CANCELED                                                         Handle        = 0x80280909\n\tTPM_20_E_TESTING                                                          Handle        = 0x8028090A\n\tTPM_20_E_NV_RATE                                                          Handle        = 0x80280920\n\tTPM_20_E_LOCKOUT                                                          Handle        = 0x80280921\n\tTPM_20_E_RETRY                                                            Handle        = 0x80280922\n\tTPM_20_E_NV_UNAVAILABLE                                                   Handle        = 0x80280923\n\tTBS_E_INTERNAL_ERROR                                                      Handle        = 0x80284001\n\tTBS_E_BAD_PARAMETER                                                       Handle        = 0x80284002\n\tTBS_E_INVALID_OUTPUT_POINTER                                              Handle        = 0x80284003\n\tTBS_E_INVALID_CONTEXT                                                     Handle        = 0x80284004\n\tTBS_E_INSUFFICIENT_BUFFER                                                 Handle        = 0x80284005\n\tTBS_E_IOERROR                                                             Handle        = 0x80284006\n\tTBS_E_INVALID_CONTEXT_PARAM                                               Handle        = 0x80284007\n\tTBS_E_SERVICE_NOT_RUNNING                                                 Handle        = 0x80284008\n\tTBS_E_TOO_MANY_TBS_CONTEXTS                                               Handle        = 0x80284009\n\tTBS_E_TOO_MANY_RESOURCES                                                  Handle        = 0x8028400A\n\tTBS_E_SERVICE_START_PENDING                                               Handle        = 0x8028400B\n\tTBS_E_PPI_NOT_SUPPORTED                                                   Handle        = 0x8028400C\n\tTBS_E_COMMAND_CANCELED                                                    Handle        = 0x8028400D\n\tTBS_E_BUFFER_TOO_LARGE                                                    Handle        = 0x8028400E\n\tTBS_E_TPM_NOT_FOUND                                                       Handle        = 0x8028400F\n\tTBS_E_SERVICE_DISABLED                                                    Handle        = 0x80284010\n\tTBS_E_NO_EVENT_LOG                                                        Handle        = 0x80284011\n\tTBS_E_ACCESS_DENIED                                                       Handle        = 0x80284012\n\tTBS_E_PROVISIONING_NOT_ALLOWED                                            Handle        = 0x80284013\n\tTBS_E_PPI_FUNCTION_UNSUPPORTED                                            Handle        = 0x80284014\n\tTBS_E_OWNERAUTH_NOT_FOUND                                                 Handle        = 0x80284015\n\tTBS_E_PROVISIONING_INCOMPLETE                                             Handle        = 0x80284016\n\tTPMAPI_E_INVALID_STATE                                                    Handle        = 0x80290100\n\tTPMAPI_E_NOT_ENOUGH_DATA                                                  Handle        = 0x80290101\n\tTPMAPI_E_TOO_MUCH_DATA                                                    Handle        = 0x80290102\n\tTPMAPI_E_INVALID_OUTPUT_POINTER                                           Handle        = 0x80290103\n\tTPMAPI_E_INVALID_PARAMETER                                                Handle        = 0x80290104\n\tTPMAPI_E_OUT_OF_MEMORY                                                    Handle        = 0x80290105\n\tTPMAPI_E_BUFFER_TOO_SMALL                                                 Handle        = 0x80290106\n\tTPMAPI_E_INTERNAL_ERROR                                                   Handle        = 0x80290107\n\tTPMAPI_E_ACCESS_DENIED                                                    Handle        = 0x80290108\n\tTPMAPI_E_AUTHORIZATION_FAILED                                             Handle        = 0x80290109\n\tTPMAPI_E_INVALID_CONTEXT_HANDLE                                           Handle        = 0x8029010A\n\tTPMAPI_E_TBS_COMMUNICATION_ERROR                                          Handle        = 0x8029010B\n\tTPMAPI_E_TPM_COMMAND_ERROR                                                Handle        = 0x8029010C\n\tTPMAPI_E_MESSAGE_TOO_LARGE                                                Handle        = 0x8029010D\n\tTPMAPI_E_INVALID_ENCODING                                                 Handle        = 0x8029010E\n\tTPMAPI_E_INVALID_KEY_SIZE                                                 Handle        = 0x8029010F\n\tTPMAPI_E_ENCRYPTION_FAILED                                                Handle        = 0x80290110\n\tTPMAPI_E_INVALID_KEY_PARAMS                                               Handle        = 0x80290111\n\tTPMAPI_E_INVALID_MIGRATION_AUTHORIZATION_BLOB                             Handle        = 0x80290112\n\tTPMAPI_E_INVALID_PCR_INDEX                                                Handle        = 0x80290113\n\tTPMAPI_E_INVALID_DELEGATE_BLOB                                            Handle        = 0x80290114\n\tTPMAPI_E_INVALID_CONTEXT_PARAMS                                           Handle        = 0x80290115\n\tTPMAPI_E_INVALID_KEY_BLOB                                                 Handle        = 0x80290116\n\tTPMAPI_E_INVALID_PCR_DATA                                                 Handle        = 0x80290117\n\tTPMAPI_E_INVALID_OWNER_AUTH                                               Handle        = 0x80290118\n\tTPMAPI_E_FIPS_RNG_CHECK_FAILED                                            Handle        = 0x80290119\n\tTPMAPI_E_EMPTY_TCG_LOG                                                    Handle        = 0x8029011A\n\tTPMAPI_E_INVALID_TCG_LOG_ENTRY                                            Handle        = 0x8029011B\n\tTPMAPI_E_TCG_SEPARATOR_ABSENT                                             Handle        = 0x8029011C\n\tTPMAPI_E_TCG_INVALID_DIGEST_ENTRY                                         Handle        = 0x8029011D\n\tTPMAPI_E_POLICY_DENIES_OPERATION                                          Handle        = 0x8029011E\n\tTPMAPI_E_NV_BITS_NOT_DEFINED                                              Handle        = 0x8029011F\n\tTPMAPI_E_NV_BITS_NOT_READY                                                Handle        = 0x80290120\n\tTPMAPI_E_SEALING_KEY_NOT_AVAILABLE                                        Handle        = 0x80290121\n\tTPMAPI_E_NO_AUTHORIZATION_CHAIN_FOUND                                     Handle        = 0x80290122\n\tTPMAPI_E_SVN_COUNTER_NOT_AVAILABLE                                        Handle        = 0x80290123\n\tTPMAPI_E_OWNER_AUTH_NOT_NULL                                              Handle        = 0x80290124\n\tTPMAPI_E_ENDORSEMENT_AUTH_NOT_NULL                                        Handle        = 0x80290125\n\tTPMAPI_E_AUTHORIZATION_REVOKED                                            Handle        = 0x80290126\n\tTPMAPI_E_MALFORMED_AUTHORIZATION_KEY                                      Handle        = 0x80290127\n\tTPMAPI_E_AUTHORIZING_KEY_NOT_SUPPORTED                                    Handle        = 0x80290128\n\tTPMAPI_E_INVALID_AUTHORIZATION_SIGNATURE                                  Handle        = 0x80290129\n\tTPMAPI_E_MALFORMED_AUTHORIZATION_POLICY                                   Handle        = 0x8029012A\n\tTPMAPI_E_MALFORMED_AUTHORIZATION_OTHER                                    Handle        = 0x8029012B\n\tTPMAPI_E_SEALING_KEY_CHANGED                                              Handle        = 0x8029012C\n\tTBSIMP_E_BUFFER_TOO_SMALL                                                 Handle        = 0x80290200\n\tTBSIMP_E_CLEANUP_FAILED                                                   Handle        = 0x80290201\n\tTBSIMP_E_INVALID_CONTEXT_HANDLE                                           Handle        = 0x80290202\n\tTBSIMP_E_INVALID_CONTEXT_PARAM                                            Handle        = 0x80290203\n\tTBSIMP_E_TPM_ERROR                                                        Handle        = 0x80290204\n\tTBSIMP_E_HASH_BAD_KEY                                                     Handle        = 0x80290205\n\tTBSIMP_E_DUPLICATE_VHANDLE                                                Handle        = 0x80290206\n\tTBSIMP_E_INVALID_OUTPUT_POINTER                                           Handle        = 0x80290207\n\tTBSIMP_E_INVALID_PARAMETER                                                Handle        = 0x80290208\n\tTBSIMP_E_RPC_INIT_FAILED                                                  Handle        = 0x80290209\n\tTBSIMP_E_SCHEDULER_NOT_RUNNING                                            Handle        = 0x8029020A\n\tTBSIMP_E_COMMAND_CANCELED                                                 Handle        = 0x8029020B\n\tTBSIMP_E_OUT_OF_MEMORY                                                    Handle        = 0x8029020C\n\tTBSIMP_E_LIST_NO_MORE_ITEMS                                               Handle        = 0x8029020D\n\tTBSIMP_E_LIST_NOT_FOUND                                                   Handle        = 0x8029020E\n\tTBSIMP_E_NOT_ENOUGH_SPACE                                                 Handle        = 0x8029020F\n\tTBSIMP_E_NOT_ENOUGH_TPM_CONTEXTS                                          Handle        = 0x80290210\n\tTBSIMP_E_COMMAND_FAILED                                                   Handle        = 0x80290211\n\tTBSIMP_E_UNKNOWN_ORDINAL                                                  Handle        = 0x80290212\n\tTBSIMP_E_RESOURCE_EXPIRED                                                 Handle        = 0x80290213\n\tTBSIMP_E_INVALID_RESOURCE                                                 Handle        = 0x80290214\n\tTBSIMP_E_NOTHING_TO_UNLOAD                                                Handle        = 0x80290215\n\tTBSIMP_E_HASH_TABLE_FULL                                                  Handle        = 0x80290216\n\tTBSIMP_E_TOO_MANY_TBS_CONTEXTS                                            Handle        = 0x80290217\n\tTBSIMP_E_TOO_MANY_RESOURCES                                               Handle        = 0x80290218\n\tTBSIMP_E_PPI_NOT_SUPPORTED                                                Handle        = 0x80290219\n\tTBSIMP_E_TPM_INCOMPATIBLE                                                 Handle        = 0x8029021A\n\tTBSIMP_E_NO_EVENT_LOG                                                     Handle        = 0x8029021B\n\tTPM_E_PPI_ACPI_FAILURE                                                    Handle        = 0x80290300\n\tTPM_E_PPI_USER_ABORT                                                      Handle        = 0x80290301\n\tTPM_E_PPI_BIOS_FAILURE                                                    Handle        = 0x80290302\n\tTPM_E_PPI_NOT_SUPPORTED                                                   Handle        = 0x80290303\n\tTPM_E_PPI_BLOCKED_IN_BIOS                                                 Handle        = 0x80290304\n\tTPM_E_PCP_ERROR_MASK                                                      Handle        = 0x80290400\n\tTPM_E_PCP_DEVICE_NOT_READY                                                Handle        = 0x80290401\n\tTPM_E_PCP_INVALID_HANDLE                                                  Handle        = 0x80290402\n\tTPM_E_PCP_INVALID_PARAMETER                                               Handle        = 0x80290403\n\tTPM_E_PCP_FLAG_NOT_SUPPORTED                                              Handle        = 0x80290404\n\tTPM_E_PCP_NOT_SUPPORTED                                                   Handle        = 0x80290405\n\tTPM_E_PCP_BUFFER_TOO_SMALL                                                Handle        = 0x80290406\n\tTPM_E_PCP_INTERNAL_ERROR                                                  Handle        = 0x80290407\n\tTPM_E_PCP_AUTHENTICATION_FAILED                                           Handle        = 0x80290408\n\tTPM_E_PCP_AUTHENTICATION_IGNORED                                          Handle        = 0x80290409\n\tTPM_E_PCP_POLICY_NOT_FOUND                                                Handle        = 0x8029040A\n\tTPM_E_PCP_PROFILE_NOT_FOUND                                               Handle        = 0x8029040B\n\tTPM_E_PCP_VALIDATION_FAILED                                               Handle        = 0x8029040C\n\tTPM_E_PCP_WRONG_PARENT                                                    Handle        = 0x8029040E\n\tTPM_E_KEY_NOT_LOADED                                                      Handle        = 0x8029040F\n\tTPM_E_NO_KEY_CERTIFICATION                                                Handle        = 0x80290410\n\tTPM_E_KEY_NOT_FINALIZED                                                   Handle        = 0x80290411\n\tTPM_E_ATTESTATION_CHALLENGE_NOT_SET                                       Handle        = 0x80290412\n\tTPM_E_NOT_PCR_BOUND                                                       Handle        = 0x80290413\n\tTPM_E_KEY_ALREADY_FINALIZED                                               Handle        = 0x80290414\n\tTPM_E_KEY_USAGE_POLICY_NOT_SUPPORTED                                      Handle        = 0x80290415\n\tTPM_E_KEY_USAGE_POLICY_INVALID                                            Handle        = 0x80290416\n\tTPM_E_SOFT_KEY_ERROR                                                      Handle        = 0x80290417\n\tTPM_E_KEY_NOT_AUTHENTICATED                                               Handle        = 0x80290418\n\tTPM_E_PCP_KEY_NOT_AIK                                                     Handle        = 0x80290419\n\tTPM_E_KEY_NOT_SIGNING_KEY                                                 Handle        = 0x8029041A\n\tTPM_E_LOCKED_OUT                                                          Handle        = 0x8029041B\n\tTPM_E_CLAIM_TYPE_NOT_SUPPORTED                                            Handle        = 0x8029041C\n\tTPM_E_VERSION_NOT_SUPPORTED                                               Handle        = 0x8029041D\n\tTPM_E_BUFFER_LENGTH_MISMATCH                                              Handle        = 0x8029041E\n\tTPM_E_PCP_IFX_RSA_KEY_CREATION_BLOCKED                                    Handle        = 0x8029041F\n\tTPM_E_PCP_TICKET_MISSING                                                  Handle        = 0x80290420\n\tTPM_E_PCP_RAW_POLICY_NOT_SUPPORTED                                        Handle        = 0x80290421\n\tTPM_E_PCP_KEY_HANDLE_INVALIDATED                                          Handle        = 0x80290422\n\tTPM_E_PCP_UNSUPPORTED_PSS_SALT                                            Handle        = 0x40290423\n\tTPM_E_ZERO_EXHAUST_ENABLED                                                Handle        = 0x80290500\n\tPLA_E_DCS_NOT_FOUND                                                       Handle        = 0x80300002\n\tPLA_E_DCS_IN_USE                                                          Handle        = 0x803000AA\n\tPLA_E_TOO_MANY_FOLDERS                                                    Handle        = 0x80300045\n\tPLA_E_NO_MIN_DISK                                                         Handle        = 0x80300070\n\tPLA_E_DCS_ALREADY_EXISTS                                                  Handle        = 0x803000B7\n\tPLA_S_PROPERTY_IGNORED                                                    Handle        = 0x00300100\n\tPLA_E_PROPERTY_CONFLICT                                                   Handle        = 0x80300101\n\tPLA_E_DCS_SINGLETON_REQUIRED                                              Handle        = 0x80300102\n\tPLA_E_CREDENTIALS_REQUIRED                                                Handle        = 0x80300103\n\tPLA_E_DCS_NOT_RUNNING                                                     Handle        = 0x80300104\n\tPLA_E_CONFLICT_INCL_EXCL_API                                              Handle        = 0x80300105\n\tPLA_E_NETWORK_EXE_NOT_VALID                                               Handle        = 0x80300106\n\tPLA_E_EXE_ALREADY_CONFIGURED                                              Handle        = 0x80300107\n\tPLA_E_EXE_PATH_NOT_VALID                                                  Handle        = 0x80300108\n\tPLA_E_DC_ALREADY_EXISTS                                                   Handle        = 0x80300109\n\tPLA_E_DCS_START_WAIT_TIMEOUT                                              Handle        = 0x8030010A\n\tPLA_E_DC_START_WAIT_TIMEOUT                                               Handle        = 0x8030010B\n\tPLA_E_REPORT_WAIT_TIMEOUT                                                 Handle        = 0x8030010C\n\tPLA_E_NO_DUPLICATES                                                       Handle        = 0x8030010D\n\tPLA_E_EXE_FULL_PATH_REQUIRED                                              Handle        = 0x8030010E\n\tPLA_E_INVALID_SESSION_NAME                                                Handle        = 0x8030010F\n\tPLA_E_PLA_CHANNEL_NOT_ENABLED                                             Handle        = 0x80300110\n\tPLA_E_TASKSCHED_CHANNEL_NOT_ENABLED                                       Handle        = 0x80300111\n\tPLA_E_RULES_MANAGER_FAILED                                                Handle        = 0x80300112\n\tPLA_E_CABAPI_FAILURE                                                      Handle        = 0x80300113\n\tFVE_E_LOCKED_VOLUME                                                       Handle        = 0x80310000\n\tFVE_E_NOT_ENCRYPTED                                                       Handle        = 0x80310001\n\tFVE_E_NO_TPM_BIOS                                                         Handle        = 0x80310002\n\tFVE_E_NO_MBR_METRIC                                                       Handle        = 0x80310003\n\tFVE_E_NO_BOOTSECTOR_METRIC                                                Handle        = 0x80310004\n\tFVE_E_NO_BOOTMGR_METRIC                                                   Handle        = 0x80310005\n\tFVE_E_WRONG_BOOTMGR                                                       Handle        = 0x80310006\n\tFVE_E_SECURE_KEY_REQUIRED                                                 Handle        = 0x80310007\n\tFVE_E_NOT_ACTIVATED                                                       Handle        = 0x80310008\n\tFVE_E_ACTION_NOT_ALLOWED                                                  Handle        = 0x80310009\n\tFVE_E_AD_SCHEMA_NOT_INSTALLED                                             Handle        = 0x8031000A\n\tFVE_E_AD_INVALID_DATATYPE                                                 Handle        = 0x8031000B\n\tFVE_E_AD_INVALID_DATASIZE                                                 Handle        = 0x8031000C\n\tFVE_E_AD_NO_VALUES                                                        Handle        = 0x8031000D\n\tFVE_E_AD_ATTR_NOT_SET                                                     Handle        = 0x8031000E\n\tFVE_E_AD_GUID_NOT_FOUND                                                   Handle        = 0x8031000F\n\tFVE_E_BAD_INFORMATION                                                     Handle        = 0x80310010\n\tFVE_E_TOO_SMALL                                                           Handle        = 0x80310011\n\tFVE_E_SYSTEM_VOLUME                                                       Handle        = 0x80310012\n\tFVE_E_FAILED_WRONG_FS                                                     Handle        = 0x80310013\n\tFVE_E_BAD_PARTITION_SIZE                                                  Handle        = 0x80310014\n\tFVE_E_NOT_SUPPORTED                                                       Handle        = 0x80310015\n\tFVE_E_BAD_DATA                                                            Handle        = 0x80310016\n\tFVE_E_VOLUME_NOT_BOUND                                                    Handle        = 0x80310017\n\tFVE_E_TPM_NOT_OWNED                                                       Handle        = 0x80310018\n\tFVE_E_NOT_DATA_VOLUME                                                     Handle        = 0x80310019\n\tFVE_E_AD_INSUFFICIENT_BUFFER                                              Handle        = 0x8031001A\n\tFVE_E_CONV_READ                                                           Handle        = 0x8031001B\n\tFVE_E_CONV_WRITE                                                          Handle        = 0x8031001C\n\tFVE_E_KEY_REQUIRED                                                        Handle        = 0x8031001D\n\tFVE_E_CLUSTERING_NOT_SUPPORTED                                            Handle        = 0x8031001E\n\tFVE_E_VOLUME_BOUND_ALREADY                                                Handle        = 0x8031001F\n\tFVE_E_OS_NOT_PROTECTED                                                    Handle        = 0x80310020\n\tFVE_E_PROTECTION_DISABLED                                                 Handle        = 0x80310021\n\tFVE_E_RECOVERY_KEY_REQUIRED                                               Handle        = 0x80310022\n\tFVE_E_FOREIGN_VOLUME                                                      Handle        = 0x80310023\n\tFVE_E_OVERLAPPED_UPDATE                                                   Handle        = 0x80310024\n\tFVE_E_TPM_SRK_AUTH_NOT_ZERO                                               Handle        = 0x80310025\n\tFVE_E_FAILED_SECTOR_SIZE                                                  Handle        = 0x80310026\n\tFVE_E_FAILED_AUTHENTICATION                                               Handle        = 0x80310027\n\tFVE_E_NOT_OS_VOLUME                                                       Handle        = 0x80310028\n\tFVE_E_AUTOUNLOCK_ENABLED                                                  Handle        = 0x80310029\n\tFVE_E_WRONG_BOOTSECTOR                                                    Handle        = 0x8031002A\n\tFVE_E_WRONG_SYSTEM_FS                                                     Handle        = 0x8031002B\n\tFVE_E_POLICY_PASSWORD_REQUIRED                                            Handle        = 0x8031002C\n\tFVE_E_CANNOT_SET_FVEK_ENCRYPTED                                           Handle        = 0x8031002D\n\tFVE_E_CANNOT_ENCRYPT_NO_KEY                                               Handle        = 0x8031002E\n\tFVE_E_BOOTABLE_CDDVD                                                      Handle        = 0x80310030\n\tFVE_E_PROTECTOR_EXISTS                                                    Handle        = 0x80310031\n\tFVE_E_RELATIVE_PATH                                                       Handle        = 0x80310032\n\tFVE_E_PROTECTOR_NOT_FOUND                                                 Handle        = 0x80310033\n\tFVE_E_INVALID_KEY_FORMAT                                                  Handle        = 0x80310034\n\tFVE_E_INVALID_PASSWORD_FORMAT                                             Handle        = 0x80310035\n\tFVE_E_FIPS_RNG_CHECK_FAILED                                               Handle        = 0x80310036\n\tFVE_E_FIPS_PREVENTS_RECOVERY_PASSWORD                                     Handle        = 0x80310037\n\tFVE_E_FIPS_PREVENTS_EXTERNAL_KEY_EXPORT                                   Handle        = 0x80310038\n\tFVE_E_NOT_DECRYPTED                                                       Handle        = 0x80310039\n\tFVE_E_INVALID_PROTECTOR_TYPE                                              Handle        = 0x8031003A\n\tFVE_E_NO_PROTECTORS_TO_TEST                                               Handle        = 0x8031003B\n\tFVE_E_KEYFILE_NOT_FOUND                                                   Handle        = 0x8031003C\n\tFVE_E_KEYFILE_INVALID                                                     Handle        = 0x8031003D\n\tFVE_E_KEYFILE_NO_VMK                                                      Handle        = 0x8031003E\n\tFVE_E_TPM_DISABLED                                                        Handle        = 0x8031003F\n\tFVE_E_NOT_ALLOWED_IN_SAFE_MODE                                            Handle        = 0x80310040\n\tFVE_E_TPM_INVALID_PCR                                                     Handle        = 0x80310041\n\tFVE_E_TPM_NO_VMK                                                          Handle        = 0x80310042\n\tFVE_E_PIN_INVALID                                                         Handle        = 0x80310043\n\tFVE_E_AUTH_INVALID_APPLICATION                                            Handle        = 0x80310044\n\tFVE_E_AUTH_INVALID_CONFIG                                                 Handle        = 0x80310045\n\tFVE_E_FIPS_DISABLE_PROTECTION_NOT_ALLOWED                                 Handle        = 0x80310046\n\tFVE_E_FS_NOT_EXTENDED                                                     Handle        = 0x80310047\n\tFVE_E_FIRMWARE_TYPE_NOT_SUPPORTED                                         Handle        = 0x80310048\n\tFVE_E_NO_LICENSE                                                          Handle        = 0x80310049\n\tFVE_E_NOT_ON_STACK                                                        Handle        = 0x8031004A\n\tFVE_E_FS_MOUNTED                                                          Handle        = 0x8031004B\n\tFVE_E_TOKEN_NOT_IMPERSONATED                                              Handle        = 0x8031004C\n\tFVE_E_DRY_RUN_FAILED                                                      Handle        = 0x8031004D\n\tFVE_E_REBOOT_REQUIRED                                                     Handle        = 0x8031004E\n\tFVE_E_DEBUGGER_ENABLED                                                    Handle        = 0x8031004F\n\tFVE_E_RAW_ACCESS                                                          Handle        = 0x80310050\n\tFVE_E_RAW_BLOCKED                                                         Handle        = 0x80310051\n\tFVE_E_BCD_APPLICATIONS_PATH_INCORRECT                                     Handle        = 0x80310052\n\tFVE_E_NOT_ALLOWED_IN_VERSION                                              Handle        = 0x80310053\n\tFVE_E_NO_AUTOUNLOCK_MASTER_KEY                                            Handle        = 0x80310054\n\tFVE_E_MOR_FAILED                                                          Handle        = 0x80310055\n\tFVE_E_HIDDEN_VOLUME                                                       Handle        = 0x80310056\n\tFVE_E_TRANSIENT_STATE                                                     Handle        = 0x80310057\n\tFVE_E_PUBKEY_NOT_ALLOWED                                                  Handle        = 0x80310058\n\tFVE_E_VOLUME_HANDLE_OPEN                                                  Handle        = 0x80310059\n\tFVE_E_NO_FEATURE_LICENSE                                                  Handle        = 0x8031005A\n\tFVE_E_INVALID_STARTUP_OPTIONS                                             Handle        = 0x8031005B\n\tFVE_E_POLICY_RECOVERY_PASSWORD_NOT_ALLOWED                                Handle        = 0x8031005C\n\tFVE_E_POLICY_RECOVERY_PASSWORD_REQUIRED                                   Handle        = 0x8031005D\n\tFVE_E_POLICY_RECOVERY_KEY_NOT_ALLOWED                                     Handle        = 0x8031005E\n\tFVE_E_POLICY_RECOVERY_KEY_REQUIRED                                        Handle        = 0x8031005F\n\tFVE_E_POLICY_STARTUP_PIN_NOT_ALLOWED                                      Handle        = 0x80310060\n\tFVE_E_POLICY_STARTUP_PIN_REQUIRED                                         Handle        = 0x80310061\n\tFVE_E_POLICY_STARTUP_KEY_NOT_ALLOWED                                      Handle        = 0x80310062\n\tFVE_E_POLICY_STARTUP_KEY_REQUIRED                                         Handle        = 0x80310063\n\tFVE_E_POLICY_STARTUP_PIN_KEY_NOT_ALLOWED                                  Handle        = 0x80310064\n\tFVE_E_POLICY_STARTUP_PIN_KEY_REQUIRED                                     Handle        = 0x80310065\n\tFVE_E_POLICY_STARTUP_TPM_NOT_ALLOWED                                      Handle        = 0x80310066\n\tFVE_E_POLICY_STARTUP_TPM_REQUIRED                                         Handle        = 0x80310067\n\tFVE_E_POLICY_INVALID_PIN_LENGTH                                           Handle        = 0x80310068\n\tFVE_E_KEY_PROTECTOR_NOT_SUPPORTED                                         Handle        = 0x80310069\n\tFVE_E_POLICY_PASSPHRASE_NOT_ALLOWED                                       Handle        = 0x8031006A\n\tFVE_E_POLICY_PASSPHRASE_REQUIRED                                          Handle        = 0x8031006B\n\tFVE_E_FIPS_PREVENTS_PASSPHRASE                                            Handle        = 0x8031006C\n\tFVE_E_OS_VOLUME_PASSPHRASE_NOT_ALLOWED                                    Handle        = 0x8031006D\n\tFVE_E_INVALID_BITLOCKER_OID                                               Handle        = 0x8031006E\n\tFVE_E_VOLUME_TOO_SMALL                                                    Handle        = 0x8031006F\n\tFVE_E_DV_NOT_SUPPORTED_ON_FS                                              Handle        = 0x80310070\n\tFVE_E_DV_NOT_ALLOWED_BY_GP                                                Handle        = 0x80310071\n\tFVE_E_POLICY_USER_CERTIFICATE_NOT_ALLOWED                                 Handle        = 0x80310072\n\tFVE_E_POLICY_USER_CERTIFICATE_REQUIRED                                    Handle        = 0x80310073\n\tFVE_E_POLICY_USER_CERT_MUST_BE_HW                                         Handle        = 0x80310074\n\tFVE_E_POLICY_USER_CONFIGURE_FDV_AUTOUNLOCK_NOT_ALLOWED                    Handle        = 0x80310075\n\tFVE_E_POLICY_USER_CONFIGURE_RDV_AUTOUNLOCK_NOT_ALLOWED                    Handle        = 0x80310076\n\tFVE_E_POLICY_USER_CONFIGURE_RDV_NOT_ALLOWED                               Handle        = 0x80310077\n\tFVE_E_POLICY_USER_ENABLE_RDV_NOT_ALLOWED                                  Handle        = 0x80310078\n\tFVE_E_POLICY_USER_DISABLE_RDV_NOT_ALLOWED                                 Handle        = 0x80310079\n\tFVE_E_POLICY_INVALID_PASSPHRASE_LENGTH                                    Handle        = 0x80310080\n\tFVE_E_POLICY_PASSPHRASE_TOO_SIMPLE                                        Handle        = 0x80310081\n\tFVE_E_RECOVERY_PARTITION                                                  Handle        = 0x80310082\n\tFVE_E_POLICY_CONFLICT_FDV_RK_OFF_AUK_ON                                   Handle        = 0x80310083\n\tFVE_E_POLICY_CONFLICT_RDV_RK_OFF_AUK_ON                                   Handle        = 0x80310084\n\tFVE_E_NON_BITLOCKER_OID                                                   Handle        = 0x80310085\n\tFVE_E_POLICY_PROHIBITS_SELFSIGNED                                         Handle        = 0x80310086\n\tFVE_E_POLICY_CONFLICT_RO_AND_STARTUP_KEY_REQUIRED                         Handle        = 0x80310087\n\tFVE_E_CONV_RECOVERY_FAILED                                                Handle        = 0x80310088\n\tFVE_E_VIRTUALIZED_SPACE_TOO_BIG                                           Handle        = 0x80310089\n\tFVE_E_POLICY_CONFLICT_OSV_RP_OFF_ADB_ON                                   Handle        = 0x80310090\n\tFVE_E_POLICY_CONFLICT_FDV_RP_OFF_ADB_ON                                   Handle        = 0x80310091\n\tFVE_E_POLICY_CONFLICT_RDV_RP_OFF_ADB_ON                                   Handle        = 0x80310092\n\tFVE_E_NON_BITLOCKER_KU                                                    Handle        = 0x80310093\n\tFVE_E_PRIVATEKEY_AUTH_FAILED                                              Handle        = 0x80310094\n\tFVE_E_REMOVAL_OF_DRA_FAILED                                               Handle        = 0x80310095\n\tFVE_E_OPERATION_NOT_SUPPORTED_ON_VISTA_VOLUME                             Handle        = 0x80310096\n\tFVE_E_CANT_LOCK_AUTOUNLOCK_ENABLED_VOLUME                                 Handle        = 0x80310097\n\tFVE_E_FIPS_HASH_KDF_NOT_ALLOWED                                           Handle        = 0x80310098\n\tFVE_E_ENH_PIN_INVALID                                                     Handle        = 0x80310099\n\tFVE_E_INVALID_PIN_CHARS                                                   Handle        = 0x8031009A\n\tFVE_E_INVALID_DATUM_TYPE                                                  Handle        = 0x8031009B\n\tFVE_E_EFI_ONLY                                                            Handle        = 0x8031009C\n\tFVE_E_MULTIPLE_NKP_CERTS                                                  Handle        = 0x8031009D\n\tFVE_E_REMOVAL_OF_NKP_FAILED                                               Handle        = 0x8031009E\n\tFVE_E_INVALID_NKP_CERT                                                    Handle        = 0x8031009F\n\tFVE_E_NO_EXISTING_PIN                                                     Handle        = 0x803100A0\n\tFVE_E_PROTECTOR_CHANGE_PIN_MISMATCH                                       Handle        = 0x803100A1\n\tFVE_E_PIN_PROTECTOR_CHANGE_BY_STD_USER_DISALLOWED                         Handle        = 0x803100A2\n\tFVE_E_PROTECTOR_CHANGE_MAX_PIN_CHANGE_ATTEMPTS_REACHED                    Handle        = 0x803100A3\n\tFVE_E_POLICY_PASSPHRASE_REQUIRES_ASCII                                    Handle        = 0x803100A4\n\tFVE_E_FULL_ENCRYPTION_NOT_ALLOWED_ON_TP_STORAGE                           Handle        = 0x803100A5\n\tFVE_E_WIPE_NOT_ALLOWED_ON_TP_STORAGE                                      Handle        = 0x803100A6\n\tFVE_E_KEY_LENGTH_NOT_SUPPORTED_BY_EDRIVE                                  Handle        = 0x803100A7\n\tFVE_E_NO_EXISTING_PASSPHRASE                                              Handle        = 0x803100A8\n\tFVE_E_PROTECTOR_CHANGE_PASSPHRASE_MISMATCH                                Handle        = 0x803100A9\n\tFVE_E_PASSPHRASE_TOO_LONG                                                 Handle        = 0x803100AA\n\tFVE_E_NO_PASSPHRASE_WITH_TPM                                              Handle        = 0x803100AB\n\tFVE_E_NO_TPM_WITH_PASSPHRASE                                              Handle        = 0x803100AC\n\tFVE_E_NOT_ALLOWED_ON_CSV_STACK                                            Handle        = 0x803100AD\n\tFVE_E_NOT_ALLOWED_ON_CLUSTER                                              Handle        = 0x803100AE\n\tFVE_E_EDRIVE_NO_FAILOVER_TO_SW                                            Handle        = 0x803100AF\n\tFVE_E_EDRIVE_BAND_IN_USE                                                  Handle        = 0x803100B0\n\tFVE_E_EDRIVE_DISALLOWED_BY_GP                                             Handle        = 0x803100B1\n\tFVE_E_EDRIVE_INCOMPATIBLE_VOLUME                                          Handle        = 0x803100B2\n\tFVE_E_NOT_ALLOWED_TO_UPGRADE_WHILE_CONVERTING                             Handle        = 0x803100B3\n\tFVE_E_EDRIVE_DV_NOT_SUPPORTED                                             Handle        = 0x803100B4\n\tFVE_E_NO_PREBOOT_KEYBOARD_DETECTED                                        Handle        = 0x803100B5\n\tFVE_E_NO_PREBOOT_KEYBOARD_OR_WINRE_DETECTED                               Handle        = 0x803100B6\n\tFVE_E_POLICY_REQUIRES_STARTUP_PIN_ON_TOUCH_DEVICE                         Handle        = 0x803100B7\n\tFVE_E_POLICY_REQUIRES_RECOVERY_PASSWORD_ON_TOUCH_DEVICE                   Handle        = 0x803100B8\n\tFVE_E_WIPE_CANCEL_NOT_APPLICABLE                                          Handle        = 0x803100B9\n\tFVE_E_SECUREBOOT_DISABLED                                                 Handle        = 0x803100BA\n\tFVE_E_SECUREBOOT_CONFIGURATION_INVALID                                    Handle        = 0x803100BB\n\tFVE_E_EDRIVE_DRY_RUN_FAILED                                               Handle        = 0x803100BC\n\tFVE_E_SHADOW_COPY_PRESENT                                                 Handle        = 0x803100BD\n\tFVE_E_POLICY_INVALID_ENHANCED_BCD_SETTINGS                                Handle        = 0x803100BE\n\tFVE_E_EDRIVE_INCOMPATIBLE_FIRMWARE                                        Handle        = 0x803100BF\n\tFVE_E_PROTECTOR_CHANGE_MAX_PASSPHRASE_CHANGE_ATTEMPTS_REACHED             Handle        = 0x803100C0\n\tFVE_E_PASSPHRASE_PROTECTOR_CHANGE_BY_STD_USER_DISALLOWED                  Handle        = 0x803100C1\n\tFVE_E_LIVEID_ACCOUNT_SUSPENDED                                            Handle        = 0x803100C2\n\tFVE_E_LIVEID_ACCOUNT_BLOCKED                                              Handle        = 0x803100C3\n\tFVE_E_NOT_PROVISIONED_ON_ALL_VOLUMES                                      Handle        = 0x803100C4\n\tFVE_E_DE_FIXED_DATA_NOT_SUPPORTED                                         Handle        = 0x803100C5\n\tFVE_E_DE_HARDWARE_NOT_COMPLIANT                                           Handle        = 0x803100C6\n\tFVE_E_DE_WINRE_NOT_CONFIGURED                                             Handle        = 0x803100C7\n\tFVE_E_DE_PROTECTION_SUSPENDED                                             Handle        = 0x803100C8\n\tFVE_E_DE_OS_VOLUME_NOT_PROTECTED                                          Handle        = 0x803100C9\n\tFVE_E_DE_DEVICE_LOCKEDOUT                                                 Handle        = 0x803100CA\n\tFVE_E_DE_PROTECTION_NOT_YET_ENABLED                                       Handle        = 0x803100CB\n\tFVE_E_INVALID_PIN_CHARS_DETAILED                                          Handle        = 0x803100CC\n\tFVE_E_DEVICE_LOCKOUT_COUNTER_UNAVAILABLE                                  Handle        = 0x803100CD\n\tFVE_E_DEVICELOCKOUT_COUNTER_MISMATCH                                      Handle        = 0x803100CE\n\tFVE_E_BUFFER_TOO_LARGE                                                    Handle        = 0x803100CF\n\tFVE_E_NO_SUCH_CAPABILITY_ON_TARGET                                        Handle        = 0x803100D0\n\tFVE_E_DE_PREVENTED_FOR_OS                                                 Handle        = 0x803100D1\n\tFVE_E_DE_VOLUME_OPTED_OUT                                                 Handle        = 0x803100D2\n\tFVE_E_DE_VOLUME_NOT_SUPPORTED                                             Handle        = 0x803100D3\n\tFVE_E_EOW_NOT_SUPPORTED_IN_VERSION                                        Handle        = 0x803100D4\n\tFVE_E_ADBACKUP_NOT_ENABLED                                                Handle        = 0x803100D5\n\tFVE_E_VOLUME_EXTEND_PREVENTS_EOW_DECRYPT                                  Handle        = 0x803100D6\n\tFVE_E_NOT_DE_VOLUME                                                       Handle        = 0x803100D7\n\tFVE_E_PROTECTION_CANNOT_BE_DISABLED                                       Handle        = 0x803100D8\n\tFVE_E_OSV_KSR_NOT_ALLOWED                                                 Handle        = 0x803100D9\n\tFVE_E_AD_BACKUP_REQUIRED_POLICY_NOT_SET_OS_DRIVE                          Handle        = 0x803100DA\n\tFVE_E_AD_BACKUP_REQUIRED_POLICY_NOT_SET_FIXED_DRIVE                       Handle        = 0x803100DB\n\tFVE_E_AD_BACKUP_REQUIRED_POLICY_NOT_SET_REMOVABLE_DRIVE                   Handle        = 0x803100DC\n\tFVE_E_KEY_ROTATION_NOT_SUPPORTED                                          Handle        = 0x803100DD\n\tFVE_E_EXECUTE_REQUEST_SENT_TOO_SOON                                       Handle        = 0x803100DE\n\tFVE_E_KEY_ROTATION_NOT_ENABLED                                            Handle        = 0x803100DF\n\tFVE_E_DEVICE_NOT_JOINED                                                   Handle        = 0x803100E0\n\tFWP_E_CALLOUT_NOT_FOUND                                                   Handle        = 0x80320001\n\tFWP_E_CONDITION_NOT_FOUND                                                 Handle        = 0x80320002\n\tFWP_E_FILTER_NOT_FOUND                                                    Handle        = 0x80320003\n\tFWP_E_LAYER_NOT_FOUND                                                     Handle        = 0x80320004\n\tFWP_E_PROVIDER_NOT_FOUND                                                  Handle        = 0x80320005\n\tFWP_E_PROVIDER_CONTEXT_NOT_FOUND                                          Handle        = 0x80320006\n\tFWP_E_SUBLAYER_NOT_FOUND                                                  Handle        = 0x80320007\n\tFWP_E_NOT_FOUND                                                           Handle        = 0x80320008\n\tFWP_E_ALREADY_EXISTS                                                      Handle        = 0x80320009\n\tFWP_E_IN_USE                                                              Handle        = 0x8032000A\n\tFWP_E_DYNAMIC_SESSION_IN_PROGRESS                                         Handle        = 0x8032000B\n\tFWP_E_WRONG_SESSION                                                       Handle        = 0x8032000C\n\tFWP_E_NO_TXN_IN_PROGRESS                                                  Handle        = 0x8032000D\n\tFWP_E_TXN_IN_PROGRESS                                                     Handle        = 0x8032000E\n\tFWP_E_TXN_ABORTED                                                         Handle        = 0x8032000F\n\tFWP_E_SESSION_ABORTED                                                     Handle        = 0x80320010\n\tFWP_E_INCOMPATIBLE_TXN                                                    Handle        = 0x80320011\n\tFWP_E_TIMEOUT                                                             Handle        = 0x80320012\n\tFWP_E_NET_EVENTS_DISABLED                                                 Handle        = 0x80320013\n\tFWP_E_INCOMPATIBLE_LAYER                                                  Handle        = 0x80320014\n\tFWP_E_KM_CLIENTS_ONLY                                                     Handle        = 0x80320015\n\tFWP_E_LIFETIME_MISMATCH                                                   Handle        = 0x80320016\n\tFWP_E_BUILTIN_OBJECT                                                      Handle        = 0x80320017\n\tFWP_E_TOO_MANY_CALLOUTS                                                   Handle        = 0x80320018\n\tFWP_E_NOTIFICATION_DROPPED                                                Handle        = 0x80320019\n\tFWP_E_TRAFFIC_MISMATCH                                                    Handle        = 0x8032001A\n\tFWP_E_INCOMPATIBLE_SA_STATE                                               Handle        = 0x8032001B\n\tFWP_E_NULL_POINTER                                                        Handle        = 0x8032001C\n\tFWP_E_INVALID_ENUMERATOR                                                  Handle        = 0x8032001D\n\tFWP_E_INVALID_FLAGS                                                       Handle        = 0x8032001E\n\tFWP_E_INVALID_NET_MASK                                                    Handle        = 0x8032001F\n\tFWP_E_INVALID_RANGE                                                       Handle        = 0x80320020\n\tFWP_E_INVALID_INTERVAL                                                    Handle        = 0x80320021\n\tFWP_E_ZERO_LENGTH_ARRAY                                                   Handle        = 0x80320022\n\tFWP_E_NULL_DISPLAY_NAME                                                   Handle        = 0x80320023\n\tFWP_E_INVALID_ACTION_TYPE                                                 Handle        = 0x80320024\n\tFWP_E_INVALID_WEIGHT                                                      Handle        = 0x80320025\n\tFWP_E_MATCH_TYPE_MISMATCH                                                 Handle        = 0x80320026\n\tFWP_E_TYPE_MISMATCH                                                       Handle        = 0x80320027\n\tFWP_E_OUT_OF_BOUNDS                                                       Handle        = 0x80320028\n\tFWP_E_RESERVED                                                            Handle        = 0x80320029\n\tFWP_E_DUPLICATE_CONDITION                                                 Handle        = 0x8032002A\n\tFWP_E_DUPLICATE_KEYMOD                                                    Handle        = 0x8032002B\n\tFWP_E_ACTION_INCOMPATIBLE_WITH_LAYER                                      Handle        = 0x8032002C\n\tFWP_E_ACTION_INCOMPATIBLE_WITH_SUBLAYER                                   Handle        = 0x8032002D\n\tFWP_E_CONTEXT_INCOMPATIBLE_WITH_LAYER                                     Handle        = 0x8032002E\n\tFWP_E_CONTEXT_INCOMPATIBLE_WITH_CALLOUT                                   Handle        = 0x8032002F\n\tFWP_E_INCOMPATIBLE_AUTH_METHOD                                            Handle        = 0x80320030\n\tFWP_E_INCOMPATIBLE_DH_GROUP                                               Handle        = 0x80320031\n\tFWP_E_EM_NOT_SUPPORTED                                                    Handle        = 0x80320032\n\tFWP_E_NEVER_MATCH                                                         Handle        = 0x80320033\n\tFWP_E_PROVIDER_CONTEXT_MISMATCH                                           Handle        = 0x80320034\n\tFWP_E_INVALID_PARAMETER                                                   Handle        = 0x80320035\n\tFWP_E_TOO_MANY_SUBLAYERS                                                  Handle        = 0x80320036\n\tFWP_E_CALLOUT_NOTIFICATION_FAILED                                         Handle        = 0x80320037\n\tFWP_E_INVALID_AUTH_TRANSFORM                                              Handle        = 0x80320038\n\tFWP_E_INVALID_CIPHER_TRANSFORM                                            Handle        = 0x80320039\n\tFWP_E_INCOMPATIBLE_CIPHER_TRANSFORM                                       Handle        = 0x8032003A\n\tFWP_E_INVALID_TRANSFORM_COMBINATION                                       Handle        = 0x8032003B\n\tFWP_E_DUPLICATE_AUTH_METHOD                                               Handle        = 0x8032003C\n\tFWP_E_INVALID_TUNNEL_ENDPOINT                                             Handle        = 0x8032003D\n\tFWP_E_L2_DRIVER_NOT_READY                                                 Handle        = 0x8032003E\n\tFWP_E_KEY_DICTATOR_ALREADY_REGISTERED                                     Handle        = 0x8032003F\n\tFWP_E_KEY_DICTATION_INVALID_KEYING_MATERIAL                               Handle        = 0x80320040\n\tFWP_E_CONNECTIONS_DISABLED                                                Handle        = 0x80320041\n\tFWP_E_INVALID_DNS_NAME                                                    Handle        = 0x80320042\n\tFWP_E_STILL_ON                                                            Handle        = 0x80320043\n\tFWP_E_IKEEXT_NOT_RUNNING                                                  Handle        = 0x80320044\n\tFWP_E_DROP_NOICMP                                                         Handle        = 0x80320104\n\tWS_S_ASYNC                                                                Handle        = 0x003D0000\n\tWS_S_END                                                                  Handle        = 0x003D0001\n\tWS_E_INVALID_FORMAT                                                       Handle        = 0x803D0000\n\tWS_E_OBJECT_FAULTED                                                       Handle        = 0x803D0001\n\tWS_E_NUMERIC_OVERFLOW                                                     Handle        = 0x803D0002\n\tWS_E_INVALID_OPERATION                                                    Handle        = 0x803D0003\n\tWS_E_OPERATION_ABORTED                                                    Handle        = 0x803D0004\n\tWS_E_ENDPOINT_ACCESS_DENIED                                               Handle        = 0x803D0005\n\tWS_E_OPERATION_TIMED_OUT                                                  Handle        = 0x803D0006\n\tWS_E_OPERATION_ABANDONED                                                  Handle        = 0x803D0007\n\tWS_E_QUOTA_EXCEEDED                                                       Handle        = 0x803D0008\n\tWS_E_NO_TRANSLATION_AVAILABLE                                             Handle        = 0x803D0009\n\tWS_E_SECURITY_VERIFICATION_FAILURE                                        Handle        = 0x803D000A\n\tWS_E_ADDRESS_IN_USE                                                       Handle        = 0x803D000B\n\tWS_E_ADDRESS_NOT_AVAILABLE                                                Handle        = 0x803D000C\n\tWS_E_ENDPOINT_NOT_FOUND                                                   Handle        = 0x803D000D\n\tWS_E_ENDPOINT_NOT_AVAILABLE                                               Handle        = 0x803D000E\n\tWS_E_ENDPOINT_FAILURE                                                     Handle        = 0x803D000F\n\tWS_E_ENDPOINT_UNREACHABLE                                                 Handle        = 0x803D0010\n\tWS_E_ENDPOINT_ACTION_NOT_SUPPORTED                                        Handle        = 0x803D0011\n\tWS_E_ENDPOINT_TOO_BUSY                                                    Handle        = 0x803D0012\n\tWS_E_ENDPOINT_FAULT_RECEIVED                                              Handle        = 0x803D0013\n\tWS_E_ENDPOINT_DISCONNECTED                                                Handle        = 0x803D0014\n\tWS_E_PROXY_FAILURE                                                        Handle        = 0x803D0015\n\tWS_E_PROXY_ACCESS_DENIED                                                  Handle        = 0x803D0016\n\tWS_E_NOT_SUPPORTED                                                        Handle        = 0x803D0017\n\tWS_E_PROXY_REQUIRES_BASIC_AUTH                                            Handle        = 0x803D0018\n\tWS_E_PROXY_REQUIRES_DIGEST_AUTH                                           Handle        = 0x803D0019\n\tWS_E_PROXY_REQUIRES_NTLM_AUTH                                             Handle        = 0x803D001A\n\tWS_E_PROXY_REQUIRES_NEGOTIATE_AUTH                                        Handle        = 0x803D001B\n\tWS_E_SERVER_REQUIRES_BASIC_AUTH                                           Handle        = 0x803D001C\n\tWS_E_SERVER_REQUIRES_DIGEST_AUTH                                          Handle        = 0x803D001D\n\tWS_E_SERVER_REQUIRES_NTLM_AUTH                                            Handle        = 0x803D001E\n\tWS_E_SERVER_REQUIRES_NEGOTIATE_AUTH                                       Handle        = 0x803D001F\n\tWS_E_INVALID_ENDPOINT_URL                                                 Handle        = 0x803D0020\n\tWS_E_OTHER                                                                Handle        = 0x803D0021\n\tWS_E_SECURITY_TOKEN_EXPIRED                                               Handle        = 0x803D0022\n\tWS_E_SECURITY_SYSTEM_FAILURE                                              Handle        = 0x803D0023\n\tERROR_NDIS_INTERFACE_CLOSING                                              syscall.Errno = 0x80340002\n\tERROR_NDIS_BAD_VERSION                                                    syscall.Errno = 0x80340004\n\tERROR_NDIS_BAD_CHARACTERISTICS                                            syscall.Errno = 0x80340005\n\tERROR_NDIS_ADAPTER_NOT_FOUND                                              syscall.Errno = 0x80340006\n\tERROR_NDIS_OPEN_FAILED                                                    syscall.Errno = 0x80340007\n\tERROR_NDIS_DEVICE_FAILED                                                  syscall.Errno = 0x80340008\n\tERROR_NDIS_MULTICAST_FULL                                                 syscall.Errno = 0x80340009\n\tERROR_NDIS_MULTICAST_EXISTS                                               syscall.Errno = 0x8034000A\n\tERROR_NDIS_MULTICAST_NOT_FOUND                                            syscall.Errno = 0x8034000B\n\tERROR_NDIS_REQUEST_ABORTED                                                syscall.Errno = 0x8034000C\n\tERROR_NDIS_RESET_IN_PROGRESS                                              syscall.Errno = 0x8034000D\n\tERROR_NDIS_NOT_SUPPORTED                                                  syscall.Errno = 0x803400BB\n\tERROR_NDIS_INVALID_PACKET                                                 syscall.Errno = 0x8034000F\n\tERROR_NDIS_ADAPTER_NOT_READY                                              syscall.Errno = 0x80340011\n\tERROR_NDIS_INVALID_LENGTH                                                 syscall.Errno = 0x80340014\n\tERROR_NDIS_INVALID_DATA                                                   syscall.Errno = 0x80340015\n\tERROR_NDIS_BUFFER_TOO_SHORT                                               syscall.Errno = 0x80340016\n\tERROR_NDIS_INVALID_OID                                                    syscall.Errno = 0x80340017\n\tERROR_NDIS_ADAPTER_REMOVED                                                syscall.Errno = 0x80340018\n\tERROR_NDIS_UNSUPPORTED_MEDIA                                              syscall.Errno = 0x80340019\n\tERROR_NDIS_GROUP_ADDRESS_IN_USE                                           syscall.Errno = 0x8034001A\n\tERROR_NDIS_FILE_NOT_FOUND                                                 syscall.Errno = 0x8034001B\n\tERROR_NDIS_ERROR_READING_FILE                                             syscall.Errno = 0x8034001C\n\tERROR_NDIS_ALREADY_MAPPED                                                 syscall.Errno = 0x8034001D\n\tERROR_NDIS_RESOURCE_CONFLICT                                              syscall.Errno = 0x8034001E\n\tERROR_NDIS_MEDIA_DISCONNECTED                                             syscall.Errno = 0x8034001F\n\tERROR_NDIS_INVALID_ADDRESS                                                syscall.Errno = 0x80340022\n\tERROR_NDIS_INVALID_DEVICE_REQUEST                                         syscall.Errno = 0x80340010\n\tERROR_NDIS_PAUSED                                                         syscall.Errno = 0x8034002A\n\tERROR_NDIS_INTERFACE_NOT_FOUND                                            syscall.Errno = 0x8034002B\n\tERROR_NDIS_UNSUPPORTED_REVISION                                           syscall.Errno = 0x8034002C\n\tERROR_NDIS_INVALID_PORT                                                   syscall.Errno = 0x8034002D\n\tERROR_NDIS_INVALID_PORT_STATE                                             syscall.Errno = 0x8034002E\n\tERROR_NDIS_LOW_POWER_STATE                                                syscall.Errno = 0x8034002F\n\tERROR_NDIS_REINIT_REQUIRED                                                syscall.Errno = 0x80340030\n\tERROR_NDIS_NO_QUEUES                                                      syscall.Errno = 0x80340031\n\tERROR_NDIS_DOT11_AUTO_CONFIG_ENABLED                                      syscall.Errno = 0x80342000\n\tERROR_NDIS_DOT11_MEDIA_IN_USE                                             syscall.Errno = 0x80342001\n\tERROR_NDIS_DOT11_POWER_STATE_INVALID                                      syscall.Errno = 0x80342002\n\tERROR_NDIS_PM_WOL_PATTERN_LIST_FULL                                       syscall.Errno = 0x80342003\n\tERROR_NDIS_PM_PROTOCOL_OFFLOAD_LIST_FULL                                  syscall.Errno = 0x80342004\n\tERROR_NDIS_DOT11_AP_CHANNEL_CURRENTLY_NOT_AVAILABLE                       syscall.Errno = 0x80342005\n\tERROR_NDIS_DOT11_AP_BAND_CURRENTLY_NOT_AVAILABLE                          syscall.Errno = 0x80342006\n\tERROR_NDIS_DOT11_AP_CHANNEL_NOT_ALLOWED                                   syscall.Errno = 0x80342007\n\tERROR_NDIS_DOT11_AP_BAND_NOT_ALLOWED                                      syscall.Errno = 0x80342008\n\tERROR_NDIS_INDICATION_REQUIRED                                            syscall.Errno = 0x00340001\n\tERROR_NDIS_OFFLOAD_POLICY                                                 syscall.Errno = 0xC034100F\n\tERROR_NDIS_OFFLOAD_CONNECTION_REJECTED                                    syscall.Errno = 0xC0341012\n\tERROR_NDIS_OFFLOAD_PATH_REJECTED                                          syscall.Errno = 0xC0341013\n\tERROR_HV_INVALID_HYPERCALL_CODE                                           syscall.Errno = 0xC0350002\n\tERROR_HV_INVALID_HYPERCALL_INPUT                                          syscall.Errno = 0xC0350003\n\tERROR_HV_INVALID_ALIGNMENT                                                syscall.Errno = 0xC0350004\n\tERROR_HV_INVALID_PARAMETER                                                syscall.Errno = 0xC0350005\n\tERROR_HV_ACCESS_DENIED                                                    syscall.Errno = 0xC0350006\n\tERROR_HV_INVALID_PARTITION_STATE                                          syscall.Errno = 0xC0350007\n\tERROR_HV_OPERATION_DENIED                                                 syscall.Errno = 0xC0350008\n\tERROR_HV_UNKNOWN_PROPERTY                                                 syscall.Errno = 0xC0350009\n\tERROR_HV_PROPERTY_VALUE_OUT_OF_RANGE                                      syscall.Errno = 0xC035000A\n\tERROR_HV_INSUFFICIENT_MEMORY                                              syscall.Errno = 0xC035000B\n\tERROR_HV_PARTITION_TOO_DEEP                                               syscall.Errno = 0xC035000C\n\tERROR_HV_INVALID_PARTITION_ID                                             syscall.Errno = 0xC035000D\n\tERROR_HV_INVALID_VP_INDEX                                                 syscall.Errno = 0xC035000E\n\tERROR_HV_INVALID_PORT_ID                                                  syscall.Errno = 0xC0350011\n\tERROR_HV_INVALID_CONNECTION_ID                                            syscall.Errno = 0xC0350012\n\tERROR_HV_INSUFFICIENT_BUFFERS                                             syscall.Errno = 0xC0350013\n\tERROR_HV_NOT_ACKNOWLEDGED                                                 syscall.Errno = 0xC0350014\n\tERROR_HV_INVALID_VP_STATE                                                 syscall.Errno = 0xC0350015\n\tERROR_HV_ACKNOWLEDGED                                                     syscall.Errno = 0xC0350016\n\tERROR_HV_INVALID_SAVE_RESTORE_STATE                                       syscall.Errno = 0xC0350017\n\tERROR_HV_INVALID_SYNIC_STATE                                              syscall.Errno = 0xC0350018\n\tERROR_HV_OBJECT_IN_USE                                                    syscall.Errno = 0xC0350019\n\tERROR_HV_INVALID_PROXIMITY_DOMAIN_INFO                                    syscall.Errno = 0xC035001A\n\tERROR_HV_NO_DATA                                                          syscall.Errno = 0xC035001B\n\tERROR_HV_INACTIVE                                                         syscall.Errno = 0xC035001C\n\tERROR_HV_NO_RESOURCES                                                     syscall.Errno = 0xC035001D\n\tERROR_HV_FEATURE_UNAVAILABLE                                              syscall.Errno = 0xC035001E\n\tERROR_HV_INSUFFICIENT_BUFFER                                              syscall.Errno = 0xC0350033\n\tERROR_HV_INSUFFICIENT_DEVICE_DOMAINS                                      syscall.Errno = 0xC0350038\n\tERROR_HV_CPUID_FEATURE_VALIDATION                                         syscall.Errno = 0xC035003C\n\tERROR_HV_CPUID_XSAVE_FEATURE_VALIDATION                                   syscall.Errno = 0xC035003D\n\tERROR_HV_PROCESSOR_STARTUP_TIMEOUT                                        syscall.Errno = 0xC035003E\n\tERROR_HV_SMX_ENABLED                                                      syscall.Errno = 0xC035003F\n\tERROR_HV_INVALID_LP_INDEX                                                 syscall.Errno = 0xC0350041\n\tERROR_HV_INVALID_REGISTER_VALUE                                           syscall.Errno = 0xC0350050\n\tERROR_HV_INVALID_VTL_STATE                                                syscall.Errno = 0xC0350051\n\tERROR_HV_NX_NOT_DETECTED                                                  syscall.Errno = 0xC0350055\n\tERROR_HV_INVALID_DEVICE_ID                                                syscall.Errno = 0xC0350057\n\tERROR_HV_INVALID_DEVICE_STATE                                             syscall.Errno = 0xC0350058\n\tERROR_HV_PENDING_PAGE_REQUESTS                                            syscall.Errno = 0x00350059\n\tERROR_HV_PAGE_REQUEST_INVALID                                             syscall.Errno = 0xC0350060\n\tERROR_HV_INVALID_CPU_GROUP_ID                                             syscall.Errno = 0xC035006F\n\tERROR_HV_INVALID_CPU_GROUP_STATE                                          syscall.Errno = 0xC0350070\n\tERROR_HV_OPERATION_FAILED                                                 syscall.Errno = 0xC0350071\n\tERROR_HV_NOT_ALLOWED_WITH_NESTED_VIRT_ACTIVE                              syscall.Errno = 0xC0350072\n\tERROR_HV_INSUFFICIENT_ROOT_MEMORY                                         syscall.Errno = 0xC0350073\n\tERROR_HV_NOT_PRESENT                                                      syscall.Errno = 0xC0351000\n\tERROR_VID_DUPLICATE_HANDLER                                               syscall.Errno = 0xC0370001\n\tERROR_VID_TOO_MANY_HANDLERS                                               syscall.Errno = 0xC0370002\n\tERROR_VID_QUEUE_FULL                                                      syscall.Errno = 0xC0370003\n\tERROR_VID_HANDLER_NOT_PRESENT                                             syscall.Errno = 0xC0370004\n\tERROR_VID_INVALID_OBJECT_NAME                                             syscall.Errno = 0xC0370005\n\tERROR_VID_PARTITION_NAME_TOO_LONG                                         syscall.Errno = 0xC0370006\n\tERROR_VID_MESSAGE_QUEUE_NAME_TOO_LONG                                     syscall.Errno = 0xC0370007\n\tERROR_VID_PARTITION_ALREADY_EXISTS                                        syscall.Errno = 0xC0370008\n\tERROR_VID_PARTITION_DOES_NOT_EXIST                                        syscall.Errno = 0xC0370009\n\tERROR_VID_PARTITION_NAME_NOT_FOUND                                        syscall.Errno = 0xC037000A\n\tERROR_VID_MESSAGE_QUEUE_ALREADY_EXISTS                                    syscall.Errno = 0xC037000B\n\tERROR_VID_EXCEEDED_MBP_ENTRY_MAP_LIMIT                                    syscall.Errno = 0xC037000C\n\tERROR_VID_MB_STILL_REFERENCED                                             syscall.Errno = 0xC037000D\n\tERROR_VID_CHILD_GPA_PAGE_SET_CORRUPTED                                    syscall.Errno = 0xC037000E\n\tERROR_VID_INVALID_NUMA_SETTINGS                                           syscall.Errno = 0xC037000F\n\tERROR_VID_INVALID_NUMA_NODE_INDEX                                         syscall.Errno = 0xC0370010\n\tERROR_VID_NOTIFICATION_QUEUE_ALREADY_ASSOCIATED                           syscall.Errno = 0xC0370011\n\tERROR_VID_INVALID_MEMORY_BLOCK_HANDLE                                     syscall.Errno = 0xC0370012\n\tERROR_VID_PAGE_RANGE_OVERFLOW                                             syscall.Errno = 0xC0370013\n\tERROR_VID_INVALID_MESSAGE_QUEUE_HANDLE                                    syscall.Errno = 0xC0370014\n\tERROR_VID_INVALID_GPA_RANGE_HANDLE                                        syscall.Errno = 0xC0370015\n\tERROR_VID_NO_MEMORY_BLOCK_NOTIFICATION_QUEUE                              syscall.Errno = 0xC0370016\n\tERROR_VID_MEMORY_BLOCK_LOCK_COUNT_EXCEEDED                                syscall.Errno = 0xC0370017\n\tERROR_VID_INVALID_PPM_HANDLE                                              syscall.Errno = 0xC0370018\n\tERROR_VID_MBPS_ARE_LOCKED                                                 syscall.Errno = 0xC0370019\n\tERROR_VID_MESSAGE_QUEUE_CLOSED                                            syscall.Errno = 0xC037001A\n\tERROR_VID_VIRTUAL_PROCESSOR_LIMIT_EXCEEDED                                syscall.Errno = 0xC037001B\n\tERROR_VID_STOP_PENDING                                                    syscall.Errno = 0xC037001C\n\tERROR_VID_INVALID_PROCESSOR_STATE                                         syscall.Errno = 0xC037001D\n\tERROR_VID_EXCEEDED_KM_CONTEXT_COUNT_LIMIT                                 syscall.Errno = 0xC037001E\n\tERROR_VID_KM_INTERFACE_ALREADY_INITIALIZED                                syscall.Errno = 0xC037001F\n\tERROR_VID_MB_PROPERTY_ALREADY_SET_RESET                                   syscall.Errno = 0xC0370020\n\tERROR_VID_MMIO_RANGE_DESTROYED                                            syscall.Errno = 0xC0370021\n\tERROR_VID_INVALID_CHILD_GPA_PAGE_SET                                      syscall.Errno = 0xC0370022\n\tERROR_VID_RESERVE_PAGE_SET_IS_BEING_USED                                  syscall.Errno = 0xC0370023\n\tERROR_VID_RESERVE_PAGE_SET_TOO_SMALL                                      syscall.Errno = 0xC0370024\n\tERROR_VID_MBP_ALREADY_LOCKED_USING_RESERVED_PAGE                          syscall.Errno = 0xC0370025\n\tERROR_VID_MBP_COUNT_EXCEEDED_LIMIT                                        syscall.Errno = 0xC0370026\n\tERROR_VID_SAVED_STATE_CORRUPT                                             syscall.Errno = 0xC0370027\n\tERROR_VID_SAVED_STATE_UNRECOGNIZED_ITEM                                   syscall.Errno = 0xC0370028\n\tERROR_VID_SAVED_STATE_INCOMPATIBLE                                        syscall.Errno = 0xC0370029\n\tERROR_VID_VTL_ACCESS_DENIED                                               syscall.Errno = 0xC037002A\n\tERROR_VMCOMPUTE_TERMINATED_DURING_START                                   syscall.Errno = 0xC0370100\n\tERROR_VMCOMPUTE_IMAGE_MISMATCH                                            syscall.Errno = 0xC0370101\n\tERROR_VMCOMPUTE_HYPERV_NOT_INSTALLED                                      syscall.Errno = 0xC0370102\n\tERROR_VMCOMPUTE_OPERATION_PENDING                                         syscall.Errno = 0xC0370103\n\tERROR_VMCOMPUTE_TOO_MANY_NOTIFICATIONS                                    syscall.Errno = 0xC0370104\n\tERROR_VMCOMPUTE_INVALID_STATE                                             syscall.Errno = 0xC0370105\n\tERROR_VMCOMPUTE_UNEXPECTED_EXIT                                           syscall.Errno = 0xC0370106\n\tERROR_VMCOMPUTE_TERMINATED                                                syscall.Errno = 0xC0370107\n\tERROR_VMCOMPUTE_CONNECT_FAILED                                            syscall.Errno = 0xC0370108\n\tERROR_VMCOMPUTE_TIMEOUT                                                   syscall.Errno = 0xC0370109\n\tERROR_VMCOMPUTE_CONNECTION_CLOSED                                         syscall.Errno = 0xC037010A\n\tERROR_VMCOMPUTE_UNKNOWN_MESSAGE                                           syscall.Errno = 0xC037010B\n\tERROR_VMCOMPUTE_UNSUPPORTED_PROTOCOL_VERSION                              syscall.Errno = 0xC037010C\n\tERROR_VMCOMPUTE_INVALID_JSON                                              syscall.Errno = 0xC037010D\n\tERROR_VMCOMPUTE_SYSTEM_NOT_FOUND                                          syscall.Errno = 0xC037010E\n\tERROR_VMCOMPUTE_SYSTEM_ALREADY_EXISTS                                     syscall.Errno = 0xC037010F\n\tERROR_VMCOMPUTE_SYSTEM_ALREADY_STOPPED                                    syscall.Errno = 0xC0370110\n\tERROR_VMCOMPUTE_PROTOCOL_ERROR                                            syscall.Errno = 0xC0370111\n\tERROR_VMCOMPUTE_INVALID_LAYER                                             syscall.Errno = 0xC0370112\n\tERROR_VMCOMPUTE_WINDOWS_INSIDER_REQUIRED                                  syscall.Errno = 0xC0370113\n\tHCS_E_TERMINATED_DURING_START                                             Handle        = 0x80370100\n\tHCS_E_IMAGE_MISMATCH                                                      Handle        = 0x80370101\n\tHCS_E_HYPERV_NOT_INSTALLED                                                Handle        = 0x80370102\n\tHCS_E_INVALID_STATE                                                       Handle        = 0x80370105\n\tHCS_E_UNEXPECTED_EXIT                                                     Handle        = 0x80370106\n\tHCS_E_TERMINATED                                                          Handle        = 0x80370107\n\tHCS_E_CONNECT_FAILED                                                      Handle        = 0x80370108\n\tHCS_E_CONNECTION_TIMEOUT                                                  Handle        = 0x80370109\n\tHCS_E_CONNECTION_CLOSED                                                   Handle        = 0x8037010A\n\tHCS_E_UNKNOWN_MESSAGE                                                     Handle        = 0x8037010B\n\tHCS_E_UNSUPPORTED_PROTOCOL_VERSION                                        Handle        = 0x8037010C\n\tHCS_E_INVALID_JSON                                                        Handle        = 0x8037010D\n\tHCS_E_SYSTEM_NOT_FOUND                                                    Handle        = 0x8037010E\n\tHCS_E_SYSTEM_ALREADY_EXISTS                                               Handle        = 0x8037010F\n\tHCS_E_SYSTEM_ALREADY_STOPPED                                              Handle        = 0x80370110\n\tHCS_E_PROTOCOL_ERROR                                                      Handle        = 0x80370111\n\tHCS_E_INVALID_LAYER                                                       Handle        = 0x80370112\n\tHCS_E_WINDOWS_INSIDER_REQUIRED                                            Handle        = 0x80370113\n\tHCS_E_SERVICE_NOT_AVAILABLE                                               Handle        = 0x80370114\n\tHCS_E_OPERATION_NOT_STARTED                                               Handle        = 0x80370115\n\tHCS_E_OPERATION_ALREADY_STARTED                                           Handle        = 0x80370116\n\tHCS_E_OPERATION_PENDING                                                   Handle        = 0x80370117\n\tHCS_E_OPERATION_TIMEOUT                                                   Handle        = 0x80370118\n\tHCS_E_OPERATION_SYSTEM_CALLBACK_ALREADY_SET                               Handle        = 0x80370119\n\tHCS_E_OPERATION_RESULT_ALLOCATION_FAILED                                  Handle        = 0x8037011A\n\tHCS_E_ACCESS_DENIED                                                       Handle        = 0x8037011B\n\tHCS_E_GUEST_CRITICAL_ERROR                                                Handle        = 0x8037011C\n\tERROR_VNET_VIRTUAL_SWITCH_NAME_NOT_FOUND                                  syscall.Errno = 0xC0370200\n\tERROR_VID_REMOTE_NODE_PARENT_GPA_PAGES_USED                               syscall.Errno = 0x80370001\n\tWHV_E_UNKNOWN_CAPABILITY                                                  Handle        = 0x80370300\n\tWHV_E_INSUFFICIENT_BUFFER                                                 Handle        = 0x80370301\n\tWHV_E_UNKNOWN_PROPERTY                                                    Handle        = 0x80370302\n\tWHV_E_UNSUPPORTED_HYPERVISOR_CONFIG                                       Handle        = 0x80370303\n\tWHV_E_INVALID_PARTITION_CONFIG                                            Handle        = 0x80370304\n\tWHV_E_GPA_RANGE_NOT_FOUND                                                 Handle        = 0x80370305\n\tWHV_E_VP_ALREADY_EXISTS                                                   Handle        = 0x80370306\n\tWHV_E_VP_DOES_NOT_EXIST                                                   Handle        = 0x80370307\n\tWHV_E_INVALID_VP_STATE                                                    Handle        = 0x80370308\n\tWHV_E_INVALID_VP_REGISTER_NAME                                            Handle        = 0x80370309\n\tERROR_VSMB_SAVED_STATE_FILE_NOT_FOUND                                     syscall.Errno = 0xC0370400\n\tERROR_VSMB_SAVED_STATE_CORRUPT                                            syscall.Errno = 0xC0370401\n\tERROR_VOLMGR_INCOMPLETE_REGENERATION                                      syscall.Errno = 0x80380001\n\tERROR_VOLMGR_INCOMPLETE_DISK_MIGRATION                                    syscall.Errno = 0x80380002\n\tERROR_VOLMGR_DATABASE_FULL                                                syscall.Errno = 0xC0380001\n\tERROR_VOLMGR_DISK_CONFIGURATION_CORRUPTED                                 syscall.Errno = 0xC0380002\n\tERROR_VOLMGR_DISK_CONFIGURATION_NOT_IN_SYNC                               syscall.Errno = 0xC0380003\n\tERROR_VOLMGR_PACK_CONFIG_UPDATE_FAILED                                    syscall.Errno = 0xC0380004\n\tERROR_VOLMGR_DISK_CONTAINS_NON_SIMPLE_VOLUME                              syscall.Errno = 0xC0380005\n\tERROR_VOLMGR_DISK_DUPLICATE                                               syscall.Errno = 0xC0380006\n\tERROR_VOLMGR_DISK_DYNAMIC                                                 syscall.Errno = 0xC0380007\n\tERROR_VOLMGR_DISK_ID_INVALID                                              syscall.Errno = 0xC0380008\n\tERROR_VOLMGR_DISK_INVALID                                                 syscall.Errno = 0xC0380009\n\tERROR_VOLMGR_DISK_LAST_VOTER                                              syscall.Errno = 0xC038000A\n\tERROR_VOLMGR_DISK_LAYOUT_INVALID                                          syscall.Errno = 0xC038000B\n\tERROR_VOLMGR_DISK_LAYOUT_NON_BASIC_BETWEEN_BASIC_PARTITIONS               syscall.Errno = 0xC038000C\n\tERROR_VOLMGR_DISK_LAYOUT_NOT_CYLINDER_ALIGNED                             syscall.Errno = 0xC038000D\n\tERROR_VOLMGR_DISK_LAYOUT_PARTITIONS_TOO_SMALL                             syscall.Errno = 0xC038000E\n\tERROR_VOLMGR_DISK_LAYOUT_PRIMARY_BETWEEN_LOGICAL_PARTITIONS               syscall.Errno = 0xC038000F\n\tERROR_VOLMGR_DISK_LAYOUT_TOO_MANY_PARTITIONS                              syscall.Errno = 0xC0380010\n\tERROR_VOLMGR_DISK_MISSING                                                 syscall.Errno = 0xC0380011\n\tERROR_VOLMGR_DISK_NOT_EMPTY                                               syscall.Errno = 0xC0380012\n\tERROR_VOLMGR_DISK_NOT_ENOUGH_SPACE                                        syscall.Errno = 0xC0380013\n\tERROR_VOLMGR_DISK_REVECTORING_FAILED                                      syscall.Errno = 0xC0380014\n\tERROR_VOLMGR_DISK_SECTOR_SIZE_INVALID                                     syscall.Errno = 0xC0380015\n\tERROR_VOLMGR_DISK_SET_NOT_CONTAINED                                       syscall.Errno = 0xC0380016\n\tERROR_VOLMGR_DISK_USED_BY_MULTIPLE_MEMBERS                                syscall.Errno = 0xC0380017\n\tERROR_VOLMGR_DISK_USED_BY_MULTIPLE_PLEXES                                 syscall.Errno = 0xC0380018\n\tERROR_VOLMGR_DYNAMIC_DISK_NOT_SUPPORTED                                   syscall.Errno = 0xC0380019\n\tERROR_VOLMGR_EXTENT_ALREADY_USED                                          syscall.Errno = 0xC038001A\n\tERROR_VOLMGR_EXTENT_NOT_CONTIGUOUS                                        syscall.Errno = 0xC038001B\n\tERROR_VOLMGR_EXTENT_NOT_IN_PUBLIC_REGION                                  syscall.Errno = 0xC038001C\n\tERROR_VOLMGR_EXTENT_NOT_SECTOR_ALIGNED                                    syscall.Errno = 0xC038001D\n\tERROR_VOLMGR_EXTENT_OVERLAPS_EBR_PARTITION                                syscall.Errno = 0xC038001E\n\tERROR_VOLMGR_EXTENT_VOLUME_LENGTHS_DO_NOT_MATCH                           syscall.Errno = 0xC038001F\n\tERROR_VOLMGR_FAULT_TOLERANT_NOT_SUPPORTED                                 syscall.Errno = 0xC0380020\n\tERROR_VOLMGR_INTERLEAVE_LENGTH_INVALID                                    syscall.Errno = 0xC0380021\n\tERROR_VOLMGR_MAXIMUM_REGISTERED_USERS                                     syscall.Errno = 0xC0380022\n\tERROR_VOLMGR_MEMBER_IN_SYNC                                               syscall.Errno = 0xC0380023\n\tERROR_VOLMGR_MEMBER_INDEX_DUPLICATE                                       syscall.Errno = 0xC0380024\n\tERROR_VOLMGR_MEMBER_INDEX_INVALID                                         syscall.Errno = 0xC0380025\n\tERROR_VOLMGR_MEMBER_MISSING                                               syscall.Errno = 0xC0380026\n\tERROR_VOLMGR_MEMBER_NOT_DETACHED                                          syscall.Errno = 0xC0380027\n\tERROR_VOLMGR_MEMBER_REGENERATING                                          syscall.Errno = 0xC0380028\n\tERROR_VOLMGR_ALL_DISKS_FAILED                                             syscall.Errno = 0xC0380029\n\tERROR_VOLMGR_NO_REGISTERED_USERS                                          syscall.Errno = 0xC038002A\n\tERROR_VOLMGR_NO_SUCH_USER                                                 syscall.Errno = 0xC038002B\n\tERROR_VOLMGR_NOTIFICATION_RESET                                           syscall.Errno = 0xC038002C\n\tERROR_VOLMGR_NUMBER_OF_MEMBERS_INVALID                                    syscall.Errno = 0xC038002D\n\tERROR_VOLMGR_NUMBER_OF_PLEXES_INVALID                                     syscall.Errno = 0xC038002E\n\tERROR_VOLMGR_PACK_DUPLICATE                                               syscall.Errno = 0xC038002F\n\tERROR_VOLMGR_PACK_ID_INVALID                                              syscall.Errno = 0xC0380030\n\tERROR_VOLMGR_PACK_INVALID                                                 syscall.Errno = 0xC0380031\n\tERROR_VOLMGR_PACK_NAME_INVALID                                            syscall.Errno = 0xC0380032\n\tERROR_VOLMGR_PACK_OFFLINE                                                 syscall.Errno = 0xC0380033\n\tERROR_VOLMGR_PACK_HAS_QUORUM                                              syscall.Errno = 0xC0380034\n\tERROR_VOLMGR_PACK_WITHOUT_QUORUM                                          syscall.Errno = 0xC0380035\n\tERROR_VOLMGR_PARTITION_STYLE_INVALID                                      syscall.Errno = 0xC0380036\n\tERROR_VOLMGR_PARTITION_UPDATE_FAILED                                      syscall.Errno = 0xC0380037\n\tERROR_VOLMGR_PLEX_IN_SYNC                                                 syscall.Errno = 0xC0380038\n\tERROR_VOLMGR_PLEX_INDEX_DUPLICATE                                         syscall.Errno = 0xC0380039\n\tERROR_VOLMGR_PLEX_INDEX_INVALID                                           syscall.Errno = 0xC038003A\n\tERROR_VOLMGR_PLEX_LAST_ACTIVE                                             syscall.Errno = 0xC038003B\n\tERROR_VOLMGR_PLEX_MISSING                                                 syscall.Errno = 0xC038003C\n\tERROR_VOLMGR_PLEX_REGENERATING                                            syscall.Errno = 0xC038003D\n\tERROR_VOLMGR_PLEX_TYPE_INVALID                                            syscall.Errno = 0xC038003E\n\tERROR_VOLMGR_PLEX_NOT_RAID5                                               syscall.Errno = 0xC038003F\n\tERROR_VOLMGR_PLEX_NOT_SIMPLE                                              syscall.Errno = 0xC0380040\n\tERROR_VOLMGR_STRUCTURE_SIZE_INVALID                                       syscall.Errno = 0xC0380041\n\tERROR_VOLMGR_TOO_MANY_NOTIFICATION_REQUESTS                               syscall.Errno = 0xC0380042\n\tERROR_VOLMGR_TRANSACTION_IN_PROGRESS                                      syscall.Errno = 0xC0380043\n\tERROR_VOLMGR_UNEXPECTED_DISK_LAYOUT_CHANGE                                syscall.Errno = 0xC0380044\n\tERROR_VOLMGR_VOLUME_CONTAINS_MISSING_DISK                                 syscall.Errno = 0xC0380045\n\tERROR_VOLMGR_VOLUME_ID_INVALID                                            syscall.Errno = 0xC0380046\n\tERROR_VOLMGR_VOLUME_LENGTH_INVALID                                        syscall.Errno = 0xC0380047\n\tERROR_VOLMGR_VOLUME_LENGTH_NOT_SECTOR_SIZE_MULTIPLE                       syscall.Errno = 0xC0380048\n\tERROR_VOLMGR_VOLUME_NOT_MIRRORED                                          syscall.Errno = 0xC0380049\n\tERROR_VOLMGR_VOLUME_NOT_RETAINED                                          syscall.Errno = 0xC038004A\n\tERROR_VOLMGR_VOLUME_OFFLINE                                               syscall.Errno = 0xC038004B\n\tERROR_VOLMGR_VOLUME_RETAINED                                              syscall.Errno = 0xC038004C\n\tERROR_VOLMGR_NUMBER_OF_EXTENTS_INVALID                                    syscall.Errno = 0xC038004D\n\tERROR_VOLMGR_DIFFERENT_SECTOR_SIZE                                        syscall.Errno = 0xC038004E\n\tERROR_VOLMGR_BAD_BOOT_DISK                                                syscall.Errno = 0xC038004F\n\tERROR_VOLMGR_PACK_CONFIG_OFFLINE                                          syscall.Errno = 0xC0380050\n\tERROR_VOLMGR_PACK_CONFIG_ONLINE                                           syscall.Errno = 0xC0380051\n\tERROR_VOLMGR_NOT_PRIMARY_PACK                                             syscall.Errno = 0xC0380052\n\tERROR_VOLMGR_PACK_LOG_UPDATE_FAILED                                       syscall.Errno = 0xC0380053\n\tERROR_VOLMGR_NUMBER_OF_DISKS_IN_PLEX_INVALID                              syscall.Errno = 0xC0380054\n\tERROR_VOLMGR_NUMBER_OF_DISKS_IN_MEMBER_INVALID                            syscall.Errno = 0xC0380055\n\tERROR_VOLMGR_VOLUME_MIRRORED                                              syscall.Errno = 0xC0380056\n\tERROR_VOLMGR_PLEX_NOT_SIMPLE_SPANNED                                      syscall.Errno = 0xC0380057\n\tERROR_VOLMGR_NO_VALID_LOG_COPIES                                          syscall.Errno = 0xC0380058\n\tERROR_VOLMGR_PRIMARY_PACK_PRESENT                                         syscall.Errno = 0xC0380059\n\tERROR_VOLMGR_NUMBER_OF_DISKS_INVALID                                      syscall.Errno = 0xC038005A\n\tERROR_VOLMGR_MIRROR_NOT_SUPPORTED                                         syscall.Errno = 0xC038005B\n\tERROR_VOLMGR_RAID5_NOT_SUPPORTED                                          syscall.Errno = 0xC038005C\n\tERROR_BCD_NOT_ALL_ENTRIES_IMPORTED                                        syscall.Errno = 0x80390001\n\tERROR_BCD_TOO_MANY_ELEMENTS                                               syscall.Errno = 0xC0390002\n\tERROR_BCD_NOT_ALL_ENTRIES_SYNCHRONIZED                                    syscall.Errno = 0x80390003\n\tERROR_VHD_DRIVE_FOOTER_MISSING                                            syscall.Errno = 0xC03A0001\n\tERROR_VHD_DRIVE_FOOTER_CHECKSUM_MISMATCH                                  syscall.Errno = 0xC03A0002\n\tERROR_VHD_DRIVE_FOOTER_CORRUPT                                            syscall.Errno = 0xC03A0003\n\tERROR_VHD_FORMAT_UNKNOWN                                                  syscall.Errno = 0xC03A0004\n\tERROR_VHD_FORMAT_UNSUPPORTED_VERSION                                      syscall.Errno = 0xC03A0005\n\tERROR_VHD_SPARSE_HEADER_CHECKSUM_MISMATCH                                 syscall.Errno = 0xC03A0006\n\tERROR_VHD_SPARSE_HEADER_UNSUPPORTED_VERSION                               syscall.Errno = 0xC03A0007\n\tERROR_VHD_SPARSE_HEADER_CORRUPT                                           syscall.Errno = 0xC03A0008\n\tERROR_VHD_BLOCK_ALLOCATION_FAILURE                                        syscall.Errno = 0xC03A0009\n\tERROR_VHD_BLOCK_ALLOCATION_TABLE_CORRUPT                                  syscall.Errno = 0xC03A000A\n\tERROR_VHD_INVALID_BLOCK_SIZE                                              syscall.Errno = 0xC03A000B\n\tERROR_VHD_BITMAP_MISMATCH                                                 syscall.Errno = 0xC03A000C\n\tERROR_VHD_PARENT_VHD_NOT_FOUND                                            syscall.Errno = 0xC03A000D\n\tERROR_VHD_CHILD_PARENT_ID_MISMATCH                                        syscall.Errno = 0xC03A000E\n\tERROR_VHD_CHILD_PARENT_TIMESTAMP_MISMATCH                                 syscall.Errno = 0xC03A000F\n\tERROR_VHD_METADATA_READ_FAILURE                                           syscall.Errno = 0xC03A0010\n\tERROR_VHD_METADATA_WRITE_FAILURE                                          syscall.Errno = 0xC03A0011\n\tERROR_VHD_INVALID_SIZE                                                    syscall.Errno = 0xC03A0012\n\tERROR_VHD_INVALID_FILE_SIZE                                               syscall.Errno = 0xC03A0013\n\tERROR_VIRTDISK_PROVIDER_NOT_FOUND                                         syscall.Errno = 0xC03A0014\n\tERROR_VIRTDISK_NOT_VIRTUAL_DISK                                           syscall.Errno = 0xC03A0015\n\tERROR_VHD_PARENT_VHD_ACCESS_DENIED                                        syscall.Errno = 0xC03A0016\n\tERROR_VHD_CHILD_PARENT_SIZE_MISMATCH                                      syscall.Errno = 0xC03A0017\n\tERROR_VHD_DIFFERENCING_CHAIN_CYCLE_DETECTED                               syscall.Errno = 0xC03A0018\n\tERROR_VHD_DIFFERENCING_CHAIN_ERROR_IN_PARENT                              syscall.Errno = 0xC03A0019\n\tERROR_VIRTUAL_DISK_LIMITATION                                             syscall.Errno = 0xC03A001A\n\tERROR_VHD_INVALID_TYPE                                                    syscall.Errno = 0xC03A001B\n\tERROR_VHD_INVALID_STATE                                                   syscall.Errno = 0xC03A001C\n\tERROR_VIRTDISK_UNSUPPORTED_DISK_SECTOR_SIZE                               syscall.Errno = 0xC03A001D\n\tERROR_VIRTDISK_DISK_ALREADY_OWNED                                         syscall.Errno = 0xC03A001E\n\tERROR_VIRTDISK_DISK_ONLINE_AND_WRITABLE                                   syscall.Errno = 0xC03A001F\n\tERROR_CTLOG_TRACKING_NOT_INITIALIZED                                      syscall.Errno = 0xC03A0020\n\tERROR_CTLOG_LOGFILE_SIZE_EXCEEDED_MAXSIZE                                 syscall.Errno = 0xC03A0021\n\tERROR_CTLOG_VHD_CHANGED_OFFLINE                                           syscall.Errno = 0xC03A0022\n\tERROR_CTLOG_INVALID_TRACKING_STATE                                        syscall.Errno = 0xC03A0023\n\tERROR_CTLOG_INCONSISTENT_TRACKING_FILE                                    syscall.Errno = 0xC03A0024\n\tERROR_VHD_RESIZE_WOULD_TRUNCATE_DATA                                      syscall.Errno = 0xC03A0025\n\tERROR_VHD_COULD_NOT_COMPUTE_MINIMUM_VIRTUAL_SIZE                          syscall.Errno = 0xC03A0026\n\tERROR_VHD_ALREADY_AT_OR_BELOW_MINIMUM_VIRTUAL_SIZE                        syscall.Errno = 0xC03A0027\n\tERROR_VHD_METADATA_FULL                                                   syscall.Errno = 0xC03A0028\n\tERROR_VHD_INVALID_CHANGE_TRACKING_ID                                      syscall.Errno = 0xC03A0029\n\tERROR_VHD_CHANGE_TRACKING_DISABLED                                        syscall.Errno = 0xC03A002A\n\tERROR_VHD_MISSING_CHANGE_TRACKING_INFORMATION                             syscall.Errno = 0xC03A0030\n\tERROR_QUERY_STORAGE_ERROR                                                 syscall.Errno = 0x803A0001\n\tHCN_E_NETWORK_NOT_FOUND                                                   Handle        = 0x803B0001\n\tHCN_E_ENDPOINT_NOT_FOUND                                                  Handle        = 0x803B0002\n\tHCN_E_LAYER_NOT_FOUND                                                     Handle        = 0x803B0003\n\tHCN_E_SWITCH_NOT_FOUND                                                    Handle        = 0x803B0004\n\tHCN_E_SUBNET_NOT_FOUND                                                    Handle        = 0x803B0005\n\tHCN_E_ADAPTER_NOT_FOUND                                                   Handle        = 0x803B0006\n\tHCN_E_PORT_NOT_FOUND                                                      Handle        = 0x803B0007\n\tHCN_E_POLICY_NOT_FOUND                                                    Handle        = 0x803B0008\n\tHCN_E_VFP_PORTSETTING_NOT_FOUND                                           Handle        = 0x803B0009\n\tHCN_E_INVALID_NETWORK                                                     Handle        = 0x803B000A\n\tHCN_E_INVALID_NETWORK_TYPE                                                Handle        = 0x803B000B\n\tHCN_E_INVALID_ENDPOINT                                                    Handle        = 0x803B000C\n\tHCN_E_INVALID_POLICY                                                      Handle        = 0x803B000D\n\tHCN_E_INVALID_POLICY_TYPE                                                 Handle        = 0x803B000E\n\tHCN_E_INVALID_REMOTE_ENDPOINT_OPERATION                                   Handle        = 0x803B000F\n\tHCN_E_NETWORK_ALREADY_EXISTS                                              Handle        = 0x803B0010\n\tHCN_E_LAYER_ALREADY_EXISTS                                                Handle        = 0x803B0011\n\tHCN_E_POLICY_ALREADY_EXISTS                                               Handle        = 0x803B0012\n\tHCN_E_PORT_ALREADY_EXISTS                                                 Handle        = 0x803B0013\n\tHCN_E_ENDPOINT_ALREADY_ATTACHED                                           Handle        = 0x803B0014\n\tHCN_E_REQUEST_UNSUPPORTED                                                 Handle        = 0x803B0015\n\tHCN_E_MAPPING_NOT_SUPPORTED                                               Handle        = 0x803B0016\n\tHCN_E_DEGRADED_OPERATION                                                  Handle        = 0x803B0017\n\tHCN_E_SHARED_SWITCH_MODIFICATION                                          Handle        = 0x803B0018\n\tHCN_E_GUID_CONVERSION_FAILURE                                             Handle        = 0x803B0019\n\tHCN_E_REGKEY_FAILURE                                                      Handle        = 0x803B001A\n\tHCN_E_INVALID_JSON                                                        Handle        = 0x803B001B\n\tHCN_E_INVALID_JSON_REFERENCE                                              Handle        = 0x803B001C\n\tHCN_E_ENDPOINT_SHARING_DISABLED                                           Handle        = 0x803B001D\n\tHCN_E_INVALID_IP                                                          Handle        = 0x803B001E\n\tHCN_E_SWITCH_EXTENSION_NOT_FOUND                                          Handle        = 0x803B001F\n\tHCN_E_MANAGER_STOPPED                                                     Handle        = 0x803B0020\n\tGCN_E_MODULE_NOT_FOUND                                                    Handle        = 0x803B0021\n\tGCN_E_NO_REQUEST_HANDLERS                                                 Handle        = 0x803B0022\n\tGCN_E_REQUEST_UNSUPPORTED                                                 Handle        = 0x803B0023\n\tGCN_E_RUNTIMEKEYS_FAILED                                                  Handle        = 0x803B0024\n\tGCN_E_NETADAPTER_TIMEOUT                                                  Handle        = 0x803B0025\n\tGCN_E_NETADAPTER_NOT_FOUND                                                Handle        = 0x803B0026\n\tGCN_E_NETCOMPARTMENT_NOT_FOUND                                            Handle        = 0x803B0027\n\tGCN_E_NETINTERFACE_NOT_FOUND                                              Handle        = 0x803B0028\n\tGCN_E_DEFAULTNAMESPACE_EXISTS                                             Handle        = 0x803B0029\n\tHCN_E_ICS_DISABLED                                                        Handle        = 0x803B002A\n\tHCN_E_ENDPOINT_NAMESPACE_ALREADY_EXISTS                                   Handle        = 0x803B002B\n\tHCN_E_ENTITY_HAS_REFERENCES                                               Handle        = 0x803B002C\n\tHCN_E_INVALID_INTERNAL_PORT                                               Handle        = 0x803B002D\n\tHCN_E_NAMESPACE_ATTACH_FAILED                                             Handle        = 0x803B002E\n\tHCN_E_ADDR_INVALID_OR_RESERVED                                            Handle        = 0x803B002F\n\tSDIAG_E_CANCELLED                                                         syscall.Errno = 0x803C0100\n\tSDIAG_E_SCRIPT                                                            syscall.Errno = 0x803C0101\n\tSDIAG_E_POWERSHELL                                                        syscall.Errno = 0x803C0102\n\tSDIAG_E_MANAGEDHOST                                                       syscall.Errno = 0x803C0103\n\tSDIAG_E_NOVERIFIER                                                        syscall.Errno = 0x803C0104\n\tSDIAG_S_CANNOTRUN                                                         syscall.Errno = 0x003C0105\n\tSDIAG_E_DISABLED                                                          syscall.Errno = 0x803C0106\n\tSDIAG_E_TRUST                                                             syscall.Errno = 0x803C0107\n\tSDIAG_E_CANNOTRUN                                                         syscall.Errno = 0x803C0108\n\tSDIAG_E_VERSION                                                           syscall.Errno = 0x803C0109\n\tSDIAG_E_RESOURCE                                                          syscall.Errno = 0x803C010A\n\tSDIAG_E_ROOTCAUSE                                                         syscall.Errno = 0x803C010B\n\tWPN_E_CHANNEL_CLOSED                                                      Handle        = 0x803E0100\n\tWPN_E_CHANNEL_REQUEST_NOT_COMPLETE                                        Handle        = 0x803E0101\n\tWPN_E_INVALID_APP                                                         Handle        = 0x803E0102\n\tWPN_E_OUTSTANDING_CHANNEL_REQUEST                                         Handle        = 0x803E0103\n\tWPN_E_DUPLICATE_CHANNEL                                                   Handle        = 0x803E0104\n\tWPN_E_PLATFORM_UNAVAILABLE                                                Handle        = 0x803E0105\n\tWPN_E_NOTIFICATION_POSTED                                                 Handle        = 0x803E0106\n\tWPN_E_NOTIFICATION_HIDDEN                                                 Handle        = 0x803E0107\n\tWPN_E_NOTIFICATION_NOT_POSTED                                             Handle        = 0x803E0108\n\tWPN_E_CLOUD_DISABLED                                                      Handle        = 0x803E0109\n\tWPN_E_CLOUD_INCAPABLE                                                     Handle        = 0x803E0110\n\tWPN_E_CLOUD_AUTH_UNAVAILABLE                                              Handle        = 0x803E011A\n\tWPN_E_CLOUD_SERVICE_UNAVAILABLE                                           Handle        = 0x803E011B\n\tWPN_E_FAILED_LOCK_SCREEN_UPDATE_INTIALIZATION                             Handle        = 0x803E011C\n\tWPN_E_NOTIFICATION_DISABLED                                               Handle        = 0x803E0111\n\tWPN_E_NOTIFICATION_INCAPABLE                                              Handle        = 0x803E0112\n\tWPN_E_INTERNET_INCAPABLE                                                  Handle        = 0x803E0113\n\tWPN_E_NOTIFICATION_TYPE_DISABLED                                          Handle        = 0x803E0114\n\tWPN_E_NOTIFICATION_SIZE                                                   Handle        = 0x803E0115\n\tWPN_E_TAG_SIZE                                                            Handle        = 0x803E0116\n\tWPN_E_ACCESS_DENIED                                                       Handle        = 0x803E0117\n\tWPN_E_DUPLICATE_REGISTRATION                                              Handle        = 0x803E0118\n\tWPN_E_PUSH_NOTIFICATION_INCAPABLE                                         Handle        = 0x803E0119\n\tWPN_E_DEV_ID_SIZE                                                         Handle        = 0x803E0120\n\tWPN_E_TAG_ALPHANUMERIC                                                    Handle        = 0x803E012A\n\tWPN_E_INVALID_HTTP_STATUS_CODE                                            Handle        = 0x803E012B\n\tWPN_E_OUT_OF_SESSION                                                      Handle        = 0x803E0200\n\tWPN_E_POWER_SAVE                                                          Handle        = 0x803E0201\n\tWPN_E_IMAGE_NOT_FOUND_IN_CACHE                                            Handle        = 0x803E0202\n\tWPN_E_ALL_URL_NOT_COMPLETED                                               Handle        = 0x803E0203\n\tWPN_E_INVALID_CLOUD_IMAGE                                                 Handle        = 0x803E0204\n\tWPN_E_NOTIFICATION_ID_MATCHED                                             Handle        = 0x803E0205\n\tWPN_E_CALLBACK_ALREADY_REGISTERED                                         Handle        = 0x803E0206\n\tWPN_E_TOAST_NOTIFICATION_DROPPED                                          Handle        = 0x803E0207\n\tWPN_E_STORAGE_LOCKED                                                      Handle        = 0x803E0208\n\tWPN_E_GROUP_SIZE                                                          Handle        = 0x803E0209\n\tWPN_E_GROUP_ALPHANUMERIC                                                  Handle        = 0x803E020A\n\tWPN_E_CLOUD_DISABLED_FOR_APP                                              Handle        = 0x803E020B\n\tE_MBN_CONTEXT_NOT_ACTIVATED                                               Handle        = 0x80548201\n\tE_MBN_BAD_SIM                                                             Handle        = 0x80548202\n\tE_MBN_DATA_CLASS_NOT_AVAILABLE                                            Handle        = 0x80548203\n\tE_MBN_INVALID_ACCESS_STRING                                               Handle        = 0x80548204\n\tE_MBN_MAX_ACTIVATED_CONTEXTS                                              Handle        = 0x80548205\n\tE_MBN_PACKET_SVC_DETACHED                                                 Handle        = 0x80548206\n\tE_MBN_PROVIDER_NOT_VISIBLE                                                Handle        = 0x80548207\n\tE_MBN_RADIO_POWER_OFF                                                     Handle        = 0x80548208\n\tE_MBN_SERVICE_NOT_ACTIVATED                                               Handle        = 0x80548209\n\tE_MBN_SIM_NOT_INSERTED                                                    Handle        = 0x8054820A\n\tE_MBN_VOICE_CALL_IN_PROGRESS                                              Handle        = 0x8054820B\n\tE_MBN_INVALID_CACHE                                                       Handle        = 0x8054820C\n\tE_MBN_NOT_REGISTERED                                                      Handle        = 0x8054820D\n\tE_MBN_PROVIDERS_NOT_FOUND                                                 Handle        = 0x8054820E\n\tE_MBN_PIN_NOT_SUPPORTED                                                   Handle        = 0x8054820F\n\tE_MBN_PIN_REQUIRED                                                        Handle        = 0x80548210\n\tE_MBN_PIN_DISABLED                                                        Handle        = 0x80548211\n\tE_MBN_FAILURE                                                             Handle        = 0x80548212\n\tE_MBN_INVALID_PROFILE                                                     Handle        = 0x80548218\n\tE_MBN_DEFAULT_PROFILE_EXIST                                               Handle        = 0x80548219\n\tE_MBN_SMS_ENCODING_NOT_SUPPORTED                                          Handle        = 0x80548220\n\tE_MBN_SMS_FILTER_NOT_SUPPORTED                                            Handle        = 0x80548221\n\tE_MBN_SMS_INVALID_MEMORY_INDEX                                            Handle        = 0x80548222\n\tE_MBN_SMS_LANG_NOT_SUPPORTED                                              Handle        = 0x80548223\n\tE_MBN_SMS_MEMORY_FAILURE                                                  Handle        = 0x80548224\n\tE_MBN_SMS_NETWORK_TIMEOUT                                                 Handle        = 0x80548225\n\tE_MBN_SMS_UNKNOWN_SMSC_ADDRESS                                            Handle        = 0x80548226\n\tE_MBN_SMS_FORMAT_NOT_SUPPORTED                                            Handle        = 0x80548227\n\tE_MBN_SMS_OPERATION_NOT_ALLOWED                                           Handle        = 0x80548228\n\tE_MBN_SMS_MEMORY_FULL                                                     Handle        = 0x80548229\n\tPEER_E_IPV6_NOT_INSTALLED                                                 Handle        = 0x80630001\n\tPEER_E_NOT_INITIALIZED                                                    Handle        = 0x80630002\n\tPEER_E_CANNOT_START_SERVICE                                               Handle        = 0x80630003\n\tPEER_E_NOT_LICENSED                                                       Handle        = 0x80630004\n\tPEER_E_INVALID_GRAPH                                                      Handle        = 0x80630010\n\tPEER_E_DBNAME_CHANGED                                                     Handle        = 0x80630011\n\tPEER_E_DUPLICATE_GRAPH                                                    Handle        = 0x80630012\n\tPEER_E_GRAPH_NOT_READY                                                    Handle        = 0x80630013\n\tPEER_E_GRAPH_SHUTTING_DOWN                                                Handle        = 0x80630014\n\tPEER_E_GRAPH_IN_USE                                                       Handle        = 0x80630015\n\tPEER_E_INVALID_DATABASE                                                   Handle        = 0x80630016\n\tPEER_E_TOO_MANY_ATTRIBUTES                                                Handle        = 0x80630017\n\tPEER_E_CONNECTION_NOT_FOUND                                               Handle        = 0x80630103\n\tPEER_E_CONNECT_SELF                                                       Handle        = 0x80630106\n\tPEER_E_ALREADY_LISTENING                                                  Handle        = 0x80630107\n\tPEER_E_NODE_NOT_FOUND                                                     Handle        = 0x80630108\n\tPEER_E_CONNECTION_FAILED                                                  Handle        = 0x80630109\n\tPEER_E_CONNECTION_NOT_AUTHENTICATED                                       Handle        = 0x8063010A\n\tPEER_E_CONNECTION_REFUSED                                                 Handle        = 0x8063010B\n\tPEER_E_CLASSIFIER_TOO_LONG                                                Handle        = 0x80630201\n\tPEER_E_TOO_MANY_IDENTITIES                                                Handle        = 0x80630202\n\tPEER_E_NO_KEY_ACCESS                                                      Handle        = 0x80630203\n\tPEER_E_GROUPS_EXIST                                                       Handle        = 0x80630204\n\tPEER_E_RECORD_NOT_FOUND                                                   Handle        = 0x80630301\n\tPEER_E_DATABASE_ACCESSDENIED                                              Handle        = 0x80630302\n\tPEER_E_DBINITIALIZATION_FAILED                                            Handle        = 0x80630303\n\tPEER_E_MAX_RECORD_SIZE_EXCEEDED                                           Handle        = 0x80630304\n\tPEER_E_DATABASE_ALREADY_PRESENT                                           Handle        = 0x80630305\n\tPEER_E_DATABASE_NOT_PRESENT                                               Handle        = 0x80630306\n\tPEER_E_IDENTITY_NOT_FOUND                                                 Handle        = 0x80630401\n\tPEER_E_EVENT_HANDLE_NOT_FOUND                                             Handle        = 0x80630501\n\tPEER_E_INVALID_SEARCH                                                     Handle        = 0x80630601\n\tPEER_E_INVALID_ATTRIBUTES                                                 Handle        = 0x80630602\n\tPEER_E_INVITATION_NOT_TRUSTED                                             Handle        = 0x80630701\n\tPEER_E_CHAIN_TOO_LONG                                                     Handle        = 0x80630703\n\tPEER_E_INVALID_TIME_PERIOD                                                Handle        = 0x80630705\n\tPEER_E_CIRCULAR_CHAIN_DETECTED                                            Handle        = 0x80630706\n\tPEER_E_CERT_STORE_CORRUPTED                                               Handle        = 0x80630801\n\tPEER_E_NO_CLOUD                                                           Handle        = 0x80631001\n\tPEER_E_CLOUD_NAME_AMBIGUOUS                                               Handle        = 0x80631005\n\tPEER_E_INVALID_RECORD                                                     Handle        = 0x80632010\n\tPEER_E_NOT_AUTHORIZED                                                     Handle        = 0x80632020\n\tPEER_E_PASSWORD_DOES_NOT_MEET_POLICY                                      Handle        = 0x80632021\n\tPEER_E_DEFERRED_VALIDATION                                                Handle        = 0x80632030\n\tPEER_E_INVALID_GROUP_PROPERTIES                                           Handle        = 0x80632040\n\tPEER_E_INVALID_PEER_NAME                                                  Handle        = 0x80632050\n\tPEER_E_INVALID_CLASSIFIER                                                 Handle        = 0x80632060\n\tPEER_E_INVALID_FRIENDLY_NAME                                              Handle        = 0x80632070\n\tPEER_E_INVALID_ROLE_PROPERTY                                              Handle        = 0x80632071\n\tPEER_E_INVALID_CLASSIFIER_PROPERTY                                        Handle        = 0x80632072\n\tPEER_E_INVALID_RECORD_EXPIRATION                                          Handle        = 0x80632080\n\tPEER_E_INVALID_CREDENTIAL_INFO                                            Handle        = 0x80632081\n\tPEER_E_INVALID_CREDENTIAL                                                 Handle        = 0x80632082\n\tPEER_E_INVALID_RECORD_SIZE                                                Handle        = 0x80632083\n\tPEER_E_UNSUPPORTED_VERSION                                                Handle        = 0x80632090\n\tPEER_E_GROUP_NOT_READY                                                    Handle        = 0x80632091\n\tPEER_E_GROUP_IN_USE                                                       Handle        = 0x80632092\n\tPEER_E_INVALID_GROUP                                                      Handle        = 0x80632093\n\tPEER_E_NO_MEMBERS_FOUND                                                   Handle        = 0x80632094\n\tPEER_E_NO_MEMBER_CONNECTIONS                                              Handle        = 0x80632095\n\tPEER_E_UNABLE_TO_LISTEN                                                   Handle        = 0x80632096\n\tPEER_E_IDENTITY_DELETED                                                   Handle        = 0x806320A0\n\tPEER_E_SERVICE_NOT_AVAILABLE                                              Handle        = 0x806320A1\n\tPEER_E_CONTACT_NOT_FOUND                                                  Handle        = 0x80636001\n\tPEER_S_GRAPH_DATA_CREATED                                                 Handle        = 0x00630001\n\tPEER_S_NO_EVENT_DATA                                                      Handle        = 0x00630002\n\tPEER_S_ALREADY_CONNECTED                                                  Handle        = 0x00632000\n\tPEER_S_SUBSCRIPTION_EXISTS                                                Handle        = 0x00636000\n\tPEER_S_NO_CONNECTIVITY                                                    Handle        = 0x00630005\n\tPEER_S_ALREADY_A_MEMBER                                                   Handle        = 0x00630006\n\tPEER_E_CANNOT_CONVERT_PEER_NAME                                           Handle        = 0x80634001\n\tPEER_E_INVALID_PEER_HOST_NAME                                             Handle        = 0x80634002\n\tPEER_E_NO_MORE                                                            Handle        = 0x80634003\n\tPEER_E_PNRP_DUPLICATE_PEER_NAME                                           Handle        = 0x80634005\n\tPEER_E_INVITE_CANCELLED                                                   Handle        = 0x80637000\n\tPEER_E_INVITE_RESPONSE_NOT_AVAILABLE                                      Handle        = 0x80637001\n\tPEER_E_NOT_SIGNED_IN                                                      Handle        = 0x80637003\n\tPEER_E_PRIVACY_DECLINED                                                   Handle        = 0x80637004\n\tPEER_E_TIMEOUT                                                            Handle        = 0x80637005\n\tPEER_E_INVALID_ADDRESS                                                    Handle        = 0x80637007\n\tPEER_E_FW_EXCEPTION_DISABLED                                              Handle        = 0x80637008\n\tPEER_E_FW_BLOCKED_BY_POLICY                                               Handle        = 0x80637009\n\tPEER_E_FW_BLOCKED_BY_SHIELDS_UP                                           Handle        = 0x8063700A\n\tPEER_E_FW_DECLINED                                                        Handle        = 0x8063700B\n\tUI_E_CREATE_FAILED                                                        Handle        = 0x802A0001\n\tUI_E_SHUTDOWN_CALLED                                                      Handle        = 0x802A0002\n\tUI_E_ILLEGAL_REENTRANCY                                                   Handle        = 0x802A0003\n\tUI_E_OBJECT_SEALED                                                        Handle        = 0x802A0004\n\tUI_E_VALUE_NOT_SET                                                        Handle        = 0x802A0005\n\tUI_E_VALUE_NOT_DETERMINED                                                 Handle        = 0x802A0006\n\tUI_E_INVALID_OUTPUT                                                       Handle        = 0x802A0007\n\tUI_E_BOOLEAN_EXPECTED                                                     Handle        = 0x802A0008\n\tUI_E_DIFFERENT_OWNER                                                      Handle        = 0x802A0009\n\tUI_E_AMBIGUOUS_MATCH                                                      Handle        = 0x802A000A\n\tUI_E_FP_OVERFLOW                                                          Handle        = 0x802A000B\n\tUI_E_WRONG_THREAD                                                         Handle        = 0x802A000C\n\tUI_E_STORYBOARD_ACTIVE                                                    Handle        = 0x802A0101\n\tUI_E_STORYBOARD_NOT_PLAYING                                               Handle        = 0x802A0102\n\tUI_E_START_KEYFRAME_AFTER_END                                             Handle        = 0x802A0103\n\tUI_E_END_KEYFRAME_NOT_DETERMINED                                          Handle        = 0x802A0104\n\tUI_E_LOOPS_OVERLAP                                                        Handle        = 0x802A0105\n\tUI_E_TRANSITION_ALREADY_USED                                              Handle        = 0x802A0106\n\tUI_E_TRANSITION_NOT_IN_STORYBOARD                                         Handle        = 0x802A0107\n\tUI_E_TRANSITION_ECLIPSED                                                  Handle        = 0x802A0108\n\tUI_E_TIME_BEFORE_LAST_UPDATE                                              Handle        = 0x802A0109\n\tUI_E_TIMER_CLIENT_ALREADY_CONNECTED                                       Handle        = 0x802A010A\n\tUI_E_INVALID_DIMENSION                                                    Handle        = 0x802A010B\n\tUI_E_PRIMITIVE_OUT_OF_BOUNDS                                              Handle        = 0x802A010C\n\tUI_E_WINDOW_CLOSED                                                        Handle        = 0x802A0201\n\tE_BLUETOOTH_ATT_INVALID_HANDLE                                            Handle        = 0x80650001\n\tE_BLUETOOTH_ATT_READ_NOT_PERMITTED                                        Handle        = 0x80650002\n\tE_BLUETOOTH_ATT_WRITE_NOT_PERMITTED                                       Handle        = 0x80650003\n\tE_BLUETOOTH_ATT_INVALID_PDU                                               Handle        = 0x80650004\n\tE_BLUETOOTH_ATT_INSUFFICIENT_AUTHENTICATION                               Handle        = 0x80650005\n\tE_BLUETOOTH_ATT_REQUEST_NOT_SUPPORTED                                     Handle        = 0x80650006\n\tE_BLUETOOTH_ATT_INVALID_OFFSET                                            Handle        = 0x80650007\n\tE_BLUETOOTH_ATT_INSUFFICIENT_AUTHORIZATION                                Handle        = 0x80650008\n\tE_BLUETOOTH_ATT_PREPARE_QUEUE_FULL                                        Handle        = 0x80650009\n\tE_BLUETOOTH_ATT_ATTRIBUTE_NOT_FOUND                                       Handle        = 0x8065000A\n\tE_BLUETOOTH_ATT_ATTRIBUTE_NOT_LONG                                        Handle        = 0x8065000B\n\tE_BLUETOOTH_ATT_INSUFFICIENT_ENCRYPTION_KEY_SIZE                          Handle        = 0x8065000C\n\tE_BLUETOOTH_ATT_INVALID_ATTRIBUTE_VALUE_LENGTH                            Handle        = 0x8065000D\n\tE_BLUETOOTH_ATT_UNLIKELY                                                  Handle        = 0x8065000E\n\tE_BLUETOOTH_ATT_INSUFFICIENT_ENCRYPTION                                   Handle        = 0x8065000F\n\tE_BLUETOOTH_ATT_UNSUPPORTED_GROUP_TYPE                                    Handle        = 0x80650010\n\tE_BLUETOOTH_ATT_INSUFFICIENT_RESOURCES                                    Handle        = 0x80650011\n\tE_BLUETOOTH_ATT_UNKNOWN_ERROR                                             Handle        = 0x80651000\n\tE_AUDIO_ENGINE_NODE_NOT_FOUND                                             Handle        = 0x80660001\n\tE_HDAUDIO_EMPTY_CONNECTION_LIST                                           Handle        = 0x80660002\n\tE_HDAUDIO_CONNECTION_LIST_NOT_SUPPORTED                                   Handle        = 0x80660003\n\tE_HDAUDIO_NO_LOGICAL_DEVICES_CREATED                                      Handle        = 0x80660004\n\tE_HDAUDIO_NULL_LINKED_LIST_ENTRY                                          Handle        = 0x80660005\n\tSTATEREPOSITORY_E_CONCURRENCY_LOCKING_FAILURE                             Handle        = 0x80670001\n\tSTATEREPOSITORY_E_STATEMENT_INPROGRESS                                    Handle        = 0x80670002\n\tSTATEREPOSITORY_E_CONFIGURATION_INVALID                                   Handle        = 0x80670003\n\tSTATEREPOSITORY_E_UNKNOWN_SCHEMA_VERSION                                  Handle        = 0x80670004\n\tSTATEREPOSITORY_ERROR_DICTIONARY_CORRUPTED                                Handle        = 0x80670005\n\tSTATEREPOSITORY_E_BLOCKED                                                 Handle        = 0x80670006\n\tSTATEREPOSITORY_E_BUSY_RETRY                                              Handle        = 0x80670007\n\tSTATEREPOSITORY_E_BUSY_RECOVERY_RETRY                                     Handle        = 0x80670008\n\tSTATEREPOSITORY_E_LOCKED_RETRY                                            Handle        = 0x80670009\n\tSTATEREPOSITORY_E_LOCKED_SHAREDCACHE_RETRY                                Handle        = 0x8067000A\n\tSTATEREPOSITORY_E_TRANSACTION_REQUIRED                                    Handle        = 0x8067000B\n\tSTATEREPOSITORY_E_BUSY_TIMEOUT_EXCEEDED                                   Handle        = 0x8067000C\n\tSTATEREPOSITORY_E_BUSY_RECOVERY_TIMEOUT_EXCEEDED                          Handle        = 0x8067000D\n\tSTATEREPOSITORY_E_LOCKED_TIMEOUT_EXCEEDED                                 Handle        = 0x8067000E\n\tSTATEREPOSITORY_E_LOCKED_SHAREDCACHE_TIMEOUT_EXCEEDED                     Handle        = 0x8067000F\n\tSTATEREPOSITORY_E_SERVICE_STOP_IN_PROGRESS                                Handle        = 0x80670010\n\tSTATEREPOSTORY_E_NESTED_TRANSACTION_NOT_SUPPORTED                         Handle        = 0x80670011\n\tSTATEREPOSITORY_ERROR_CACHE_CORRUPTED                                     Handle        = 0x80670012\n\tSTATEREPOSITORY_TRANSACTION_CALLER_ID_CHANGED                             Handle        = 0x00670013\n\tSTATEREPOSITORY_TRANSACTION_IN_PROGRESS                                   Handle        = 0x00670014\n\tERROR_SPACES_POOL_WAS_DELETED                                             Handle        = 0x00E70001\n\tERROR_SPACES_FAULT_DOMAIN_TYPE_INVALID                                    Handle        = 0x80E70001\n\tERROR_SPACES_INTERNAL_ERROR                                               Handle        = 0x80E70002\n\tERROR_SPACES_RESILIENCY_TYPE_INVALID                                      Handle        = 0x80E70003\n\tERROR_SPACES_DRIVE_SECTOR_SIZE_INVALID                                    Handle        = 0x80E70004\n\tERROR_SPACES_DRIVE_REDUNDANCY_INVALID                                     Handle        = 0x80E70006\n\tERROR_SPACES_NUMBER_OF_DATA_COPIES_INVALID                                Handle        = 0x80E70007\n\tERROR_SPACES_PARITY_LAYOUT_INVALID                                        Handle        = 0x80E70008\n\tERROR_SPACES_INTERLEAVE_LENGTH_INVALID                                    Handle        = 0x80E70009\n\tERROR_SPACES_NUMBER_OF_COLUMNS_INVALID                                    Handle        = 0x80E7000A\n\tERROR_SPACES_NOT_ENOUGH_DRIVES                                            Handle        = 0x80E7000B\n\tERROR_SPACES_EXTENDED_ERROR                                               Handle        = 0x80E7000C\n\tERROR_SPACES_PROVISIONING_TYPE_INVALID                                    Handle        = 0x80E7000D\n\tERROR_SPACES_ALLOCATION_SIZE_INVALID                                      Handle        = 0x80E7000E\n\tERROR_SPACES_ENCLOSURE_AWARE_INVALID                                      Handle        = 0x80E7000F\n\tERROR_SPACES_WRITE_CACHE_SIZE_INVALID                                     Handle        = 0x80E70010\n\tERROR_SPACES_NUMBER_OF_GROUPS_INVALID                                     Handle        = 0x80E70011\n\tERROR_SPACES_DRIVE_OPERATIONAL_STATE_INVALID                              Handle        = 0x80E70012\n\tERROR_SPACES_ENTRY_INCOMPLETE                                             Handle        = 0x80E70013\n\tERROR_SPACES_ENTRY_INVALID                                                Handle        = 0x80E70014\n\tERROR_VOLSNAP_BOOTFILE_NOT_VALID                                          Handle        = 0x80820001\n\tERROR_VOLSNAP_ACTIVATION_TIMEOUT                                          Handle        = 0x80820002\n\tERROR_TIERING_NOT_SUPPORTED_ON_VOLUME                                     Handle        = 0x80830001\n\tERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS                                 Handle        = 0x80830002\n\tERROR_TIERING_STORAGE_TIER_NOT_FOUND                                      Handle        = 0x80830003\n\tERROR_TIERING_INVALID_FILE_ID                                             Handle        = 0x80830004\n\tERROR_TIERING_WRONG_CLUSTER_NODE                                          Handle        = 0x80830005\n\tERROR_TIERING_ALREADY_PROCESSING                                          Handle        = 0x80830006\n\tERROR_TIERING_CANNOT_PIN_OBJECT                                           Handle        = 0x80830007\n\tERROR_TIERING_FILE_IS_NOT_PINNED                                          Handle        = 0x80830008\n\tERROR_NOT_A_TIERED_VOLUME                                                 Handle        = 0x80830009\n\tERROR_ATTRIBUTE_NOT_PRESENT                                               Handle        = 0x8083000A\n\tERROR_SECCORE_INVALID_COMMAND                                             Handle        = 0xC0E80000\n\tERROR_NO_APPLICABLE_APP_LICENSES_FOUND                                    Handle        = 0xC0EA0001\n\tERROR_CLIP_LICENSE_NOT_FOUND                                              Handle        = 0xC0EA0002\n\tERROR_CLIP_DEVICE_LICENSE_MISSING                                         Handle        = 0xC0EA0003\n\tERROR_CLIP_LICENSE_INVALID_SIGNATURE                                      Handle        = 0xC0EA0004\n\tERROR_CLIP_KEYHOLDER_LICENSE_MISSING_OR_INVALID                           Handle        = 0xC0EA0005\n\tERROR_CLIP_LICENSE_EXPIRED                                                Handle        = 0xC0EA0006\n\tERROR_CLIP_LICENSE_SIGNED_BY_UNKNOWN_SOURCE                               Handle        = 0xC0EA0007\n\tERROR_CLIP_LICENSE_NOT_SIGNED                                             Handle        = 0xC0EA0008\n\tERROR_CLIP_LICENSE_HARDWARE_ID_OUT_OF_TOLERANCE                           Handle        = 0xC0EA0009\n\tERROR_CLIP_LICENSE_DEVICE_ID_MISMATCH                                     Handle        = 0xC0EA000A\n\tDXGI_STATUS_OCCLUDED                                                      Handle        = 0x087A0001\n\tDXGI_STATUS_CLIPPED                                                       Handle        = 0x087A0002\n\tDXGI_STATUS_NO_REDIRECTION                                                Handle        = 0x087A0004\n\tDXGI_STATUS_NO_DESKTOP_ACCESS                                             Handle        = 0x087A0005\n\tDXGI_STATUS_GRAPHICS_VIDPN_SOURCE_IN_USE                                  Handle        = 0x087A0006\n\tDXGI_STATUS_MODE_CHANGED                                                  Handle        = 0x087A0007\n\tDXGI_STATUS_MODE_CHANGE_IN_PROGRESS                                       Handle        = 0x087A0008\n\tDXGI_ERROR_INVALID_CALL                                                   Handle        = 0x887A0001\n\tDXGI_ERROR_NOT_FOUND                                                      Handle        = 0x887A0002\n\tDXGI_ERROR_MORE_DATA                                                      Handle        = 0x887A0003\n\tDXGI_ERROR_UNSUPPORTED                                                    Handle        = 0x887A0004\n\tDXGI_ERROR_DEVICE_REMOVED                                                 Handle        = 0x887A0005\n\tDXGI_ERROR_DEVICE_HUNG                                                    Handle        = 0x887A0006\n\tDXGI_ERROR_DEVICE_RESET                                                   Handle        = 0x887A0007\n\tDXGI_ERROR_WAS_STILL_DRAWING                                              Handle        = 0x887A000A\n\tDXGI_ERROR_FRAME_STATISTICS_DISJOINT                                      Handle        = 0x887A000B\n\tDXGI_ERROR_GRAPHICS_VIDPN_SOURCE_IN_USE                                   Handle        = 0x887A000C\n\tDXGI_ERROR_DRIVER_INTERNAL_ERROR                                          Handle        = 0x887A0020\n\tDXGI_ERROR_NONEXCLUSIVE                                                   Handle        = 0x887A0021\n\tDXGI_ERROR_NOT_CURRENTLY_AVAILABLE                                        Handle        = 0x887A0022\n\tDXGI_ERROR_REMOTE_CLIENT_DISCONNECTED                                     Handle        = 0x887A0023\n\tDXGI_ERROR_REMOTE_OUTOFMEMORY                                             Handle        = 0x887A0024\n\tDXGI_ERROR_ACCESS_LOST                                                    Handle        = 0x887A0026\n\tDXGI_ERROR_WAIT_TIMEOUT                                                   Handle        = 0x887A0027\n\tDXGI_ERROR_SESSION_DISCONNECTED                                           Handle        = 0x887A0028\n\tDXGI_ERROR_RESTRICT_TO_OUTPUT_STALE                                       Handle        = 0x887A0029\n\tDXGI_ERROR_CANNOT_PROTECT_CONTENT                                         Handle        = 0x887A002A\n\tDXGI_ERROR_ACCESS_DENIED                                                  Handle        = 0x887A002B\n\tDXGI_ERROR_NAME_ALREADY_EXISTS                                            Handle        = 0x887A002C\n\tDXGI_ERROR_SDK_COMPONENT_MISSING                                          Handle        = 0x887A002D\n\tDXGI_ERROR_NOT_CURRENT                                                    Handle        = 0x887A002E\n\tDXGI_ERROR_HW_PROTECTION_OUTOFMEMORY                                      Handle        = 0x887A0030\n\tDXGI_ERROR_DYNAMIC_CODE_POLICY_VIOLATION                                  Handle        = 0x887A0031\n\tDXGI_ERROR_NON_COMPOSITED_UI                                              Handle        = 0x887A0032\n\tDXGI_STATUS_UNOCCLUDED                                                    Handle        = 0x087A0009\n\tDXGI_STATUS_DDA_WAS_STILL_DRAWING                                         Handle        = 0x087A000A\n\tDXGI_ERROR_MODE_CHANGE_IN_PROGRESS                                        Handle        = 0x887A0025\n\tDXGI_STATUS_PRESENT_REQUIRED                                              Handle        = 0x087A002F\n\tDXGI_ERROR_CACHE_CORRUPT                                                  Handle        = 0x887A0033\n\tDXGI_ERROR_CACHE_FULL                                                     Handle        = 0x887A0034\n\tDXGI_ERROR_CACHE_HASH_COLLISION                                           Handle        = 0x887A0035\n\tDXGI_ERROR_ALREADY_EXISTS                                                 Handle        = 0x887A0036\n\tDXGI_DDI_ERR_WASSTILLDRAWING                                              Handle        = 0x887B0001\n\tDXGI_DDI_ERR_UNSUPPORTED                                                  Handle        = 0x887B0002\n\tDXGI_DDI_ERR_NONEXCLUSIVE                                                 Handle        = 0x887B0003\n\tD3D10_ERROR_TOO_MANY_UNIQUE_STATE_OBJECTS                                 Handle        = 0x88790001\n\tD3D10_ERROR_FILE_NOT_FOUND                                                Handle        = 0x88790002\n\tD3D11_ERROR_TOO_MANY_UNIQUE_STATE_OBJECTS                                 Handle        = 0x887C0001\n\tD3D11_ERROR_FILE_NOT_FOUND                                                Handle        = 0x887C0002\n\tD3D11_ERROR_TOO_MANY_UNIQUE_VIEW_OBJECTS                                  Handle        = 0x887C0003\n\tD3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD                  Handle        = 0x887C0004\n\tD3D12_ERROR_ADAPTER_NOT_FOUND                                             Handle        = 0x887E0001\n\tD3D12_ERROR_DRIVER_VERSION_MISMATCH                                       Handle        = 0x887E0002\n\tD2DERR_WRONG_STATE                                                        Handle        = 0x88990001\n\tD2DERR_NOT_INITIALIZED                                                    Handle        = 0x88990002\n\tD2DERR_UNSUPPORTED_OPERATION                                              Handle        = 0x88990003\n\tD2DERR_SCANNER_FAILED                                                     Handle        = 0x88990004\n\tD2DERR_SCREEN_ACCESS_DENIED                                               Handle        = 0x88990005\n\tD2DERR_DISPLAY_STATE_INVALID                                              Handle        = 0x88990006\n\tD2DERR_ZERO_VECTOR                                                        Handle        = 0x88990007\n\tD2DERR_INTERNAL_ERROR                                                     Handle        = 0x88990008\n\tD2DERR_DISPLAY_FORMAT_NOT_SUPPORTED                                       Handle        = 0x88990009\n\tD2DERR_INVALID_CALL                                                       Handle        = 0x8899000A\n\tD2DERR_NO_HARDWARE_DEVICE                                                 Handle        = 0x8899000B\n\tD2DERR_RECREATE_TARGET                                                    Handle        = 0x8899000C\n\tD2DERR_TOO_MANY_SHADER_ELEMENTS                                           Handle        = 0x8899000D\n\tD2DERR_SHADER_COMPILE_FAILED                                              Handle        = 0x8899000E\n\tD2DERR_MAX_TEXTURE_SIZE_EXCEEDED                                          Handle        = 0x8899000F\n\tD2DERR_UNSUPPORTED_VERSION                                                Handle        = 0x88990010\n\tD2DERR_BAD_NUMBER                                                         Handle        = 0x88990011\n\tD2DERR_WRONG_FACTORY                                                      Handle        = 0x88990012\n\tD2DERR_LAYER_ALREADY_IN_USE                                               Handle        = 0x88990013\n\tD2DERR_POP_CALL_DID_NOT_MATCH_PUSH                                        Handle        = 0x88990014\n\tD2DERR_WRONG_RESOURCE_DOMAIN                                              Handle        = 0x88990015\n\tD2DERR_PUSH_POP_UNBALANCED                                                Handle        = 0x88990016\n\tD2DERR_RENDER_TARGET_HAS_LAYER_OR_CLIPRECT                                Handle        = 0x88990017\n\tD2DERR_INCOMPATIBLE_BRUSH_TYPES                                           Handle        = 0x88990018\n\tD2DERR_WIN32_ERROR                                                        Handle        = 0x88990019\n\tD2DERR_TARGET_NOT_GDI_COMPATIBLE                                          Handle        = 0x8899001A\n\tD2DERR_TEXT_EFFECT_IS_WRONG_TYPE                                          Handle        = 0x8899001B\n\tD2DERR_TEXT_RENDERER_NOT_RELEASED                                         Handle        = 0x8899001C\n\tD2DERR_EXCEEDS_MAX_BITMAP_SIZE                                            Handle        = 0x8899001D\n\tD2DERR_INVALID_GRAPH_CONFIGURATION                                        Handle        = 0x8899001E\n\tD2DERR_INVALID_INTERNAL_GRAPH_CONFIGURATION                               Handle        = 0x8899001F\n\tD2DERR_CYCLIC_GRAPH                                                       Handle        = 0x88990020\n\tD2DERR_BITMAP_CANNOT_DRAW                                                 Handle        = 0x88990021\n\tD2DERR_OUTSTANDING_BITMAP_REFERENCES                                      Handle        = 0x88990022\n\tD2DERR_ORIGINAL_TARGET_NOT_BOUND                                          Handle        = 0x88990023\n\tD2DERR_INVALID_TARGET                                                     Handle        = 0x88990024\n\tD2DERR_BITMAP_BOUND_AS_TARGET                                             Handle        = 0x88990025\n\tD2DERR_INSUFFICIENT_DEVICE_CAPABILITIES                                   Handle        = 0x88990026\n\tD2DERR_INTERMEDIATE_TOO_LARGE                                             Handle        = 0x88990027\n\tD2DERR_EFFECT_IS_NOT_REGISTERED                                           Handle        = 0x88990028\n\tD2DERR_INVALID_PROPERTY                                                   Handle        = 0x88990029\n\tD2DERR_NO_SUBPROPERTIES                                                   Handle        = 0x8899002A\n\tD2DERR_PRINT_JOB_CLOSED                                                   Handle        = 0x8899002B\n\tD2DERR_PRINT_FORMAT_NOT_SUPPORTED                                         Handle        = 0x8899002C\n\tD2DERR_TOO_MANY_TRANSFORM_INPUTS                                          Handle        = 0x8899002D\n\tD2DERR_INVALID_GLYPH_IMAGE                                                Handle        = 0x8899002E\n\tDWRITE_E_FILEFORMAT                                                       Handle        = 0x88985000\n\tDWRITE_E_UNEXPECTED                                                       Handle        = 0x88985001\n\tDWRITE_E_NOFONT                                                           Handle        = 0x88985002\n\tDWRITE_E_FILENOTFOUND                                                     Handle        = 0x88985003\n\tDWRITE_E_FILEACCESS                                                       Handle        = 0x88985004\n\tDWRITE_E_FONTCOLLECTIONOBSOLETE                                           Handle        = 0x88985005\n\tDWRITE_E_ALREADYREGISTERED                                                Handle        = 0x88985006\n\tDWRITE_E_CACHEFORMAT                                                      Handle        = 0x88985007\n\tDWRITE_E_CACHEVERSION                                                     Handle        = 0x88985008\n\tDWRITE_E_UNSUPPORTEDOPERATION                                             Handle        = 0x88985009\n\tDWRITE_E_TEXTRENDERERINCOMPATIBLE                                         Handle        = 0x8898500A\n\tDWRITE_E_FLOWDIRECTIONCONFLICTS                                           Handle        = 0x8898500B\n\tDWRITE_E_NOCOLOR                                                          Handle        = 0x8898500C\n\tDWRITE_E_REMOTEFONT                                                       Handle        = 0x8898500D\n\tDWRITE_E_DOWNLOADCANCELLED                                                Handle        = 0x8898500E\n\tDWRITE_E_DOWNLOADFAILED                                                   Handle        = 0x8898500F\n\tDWRITE_E_TOOMANYDOWNLOADS                                                 Handle        = 0x88985010\n\tWINCODEC_ERR_WRONGSTATE                                                   Handle        = 0x88982F04\n\tWINCODEC_ERR_VALUEOUTOFRANGE                                              Handle        = 0x88982F05\n\tWINCODEC_ERR_UNKNOWNIMAGEFORMAT                                           Handle        = 0x88982F07\n\tWINCODEC_ERR_UNSUPPORTEDVERSION                                           Handle        = 0x88982F0B\n\tWINCODEC_ERR_NOTINITIALIZED                                               Handle        = 0x88982F0C\n\tWINCODEC_ERR_ALREADYLOCKED                                                Handle        = 0x88982F0D\n\tWINCODEC_ERR_PROPERTYNOTFOUND                                             Handle        = 0x88982F40\n\tWINCODEC_ERR_PROPERTYNOTSUPPORTED                                         Handle        = 0x88982F41\n\tWINCODEC_ERR_PROPERTYSIZE                                                 Handle        = 0x88982F42\n\tWINCODEC_ERR_CODECPRESENT                                                 Handle        = 0x88982F43\n\tWINCODEC_ERR_CODECNOTHUMBNAIL                                             Handle        = 0x88982F44\n\tWINCODEC_ERR_PALETTEUNAVAILABLE                                           Handle        = 0x88982F45\n\tWINCODEC_ERR_CODECTOOMANYSCANLINES                                        Handle        = 0x88982F46\n\tWINCODEC_ERR_INTERNALERROR                                                Handle        = 0x88982F48\n\tWINCODEC_ERR_SOURCERECTDOESNOTMATCHDIMENSIONS                             Handle        = 0x88982F49\n\tWINCODEC_ERR_COMPONENTNOTFOUND                                            Handle        = 0x88982F50\n\tWINCODEC_ERR_IMAGESIZEOUTOFRANGE                                          Handle        = 0x88982F51\n\tWINCODEC_ERR_TOOMUCHMETADATA                                              Handle        = 0x88982F52\n\tWINCODEC_ERR_BADIMAGE                                                     Handle        = 0x88982F60\n\tWINCODEC_ERR_BADHEADER                                                    Handle        = 0x88982F61\n\tWINCODEC_ERR_FRAMEMISSING                                                 Handle        = 0x88982F62\n\tWINCODEC_ERR_BADMETADATAHEADER                                            Handle        = 0x88982F63\n\tWINCODEC_ERR_BADSTREAMDATA                                                Handle        = 0x88982F70\n\tWINCODEC_ERR_STREAMWRITE                                                  Handle        = 0x88982F71\n\tWINCODEC_ERR_STREAMREAD                                                   Handle        = 0x88982F72\n\tWINCODEC_ERR_STREAMNOTAVAILABLE                                           Handle        = 0x88982F73\n\tWINCODEC_ERR_UNSUPPORTEDPIXELFORMAT                                       Handle        = 0x88982F80\n\tWINCODEC_ERR_UNSUPPORTEDOPERATION                                         Handle        = 0x88982F81\n\tWINCODEC_ERR_INVALIDREGISTRATION                                          Handle        = 0x88982F8A\n\tWINCODEC_ERR_COMPONENTINITIALIZEFAILURE                                   Handle        = 0x88982F8B\n\tWINCODEC_ERR_INSUFFICIENTBUFFER                                           Handle        = 0x88982F8C\n\tWINCODEC_ERR_DUPLICATEMETADATAPRESENT                                     Handle        = 0x88982F8D\n\tWINCODEC_ERR_PROPERTYUNEXPECTEDTYPE                                       Handle        = 0x88982F8E\n\tWINCODEC_ERR_UNEXPECTEDSIZE                                               Handle        = 0x88982F8F\n\tWINCODEC_ERR_INVALIDQUERYREQUEST                                          Handle        = 0x88982F90\n\tWINCODEC_ERR_UNEXPECTEDMETADATATYPE                                       Handle        = 0x88982F91\n\tWINCODEC_ERR_REQUESTONLYVALIDATMETADATAROOT                               Handle        = 0x88982F92\n\tWINCODEC_ERR_INVALIDQUERYCHARACTER                                        Handle        = 0x88982F93\n\tWINCODEC_ERR_WIN32ERROR                                                   Handle        = 0x88982F94\n\tWINCODEC_ERR_INVALIDPROGRESSIVELEVEL                                      Handle        = 0x88982F95\n\tWINCODEC_ERR_INVALIDJPEGSCANINDEX                                         Handle        = 0x88982F96\n\tMILERR_OBJECTBUSY                                                         Handle        = 0x88980001\n\tMILERR_INSUFFICIENTBUFFER                                                 Handle        = 0x88980002\n\tMILERR_WIN32ERROR                                                         Handle        = 0x88980003\n\tMILERR_SCANNER_FAILED                                                     Handle        = 0x88980004\n\tMILERR_SCREENACCESSDENIED                                                 Handle        = 0x88980005\n\tMILERR_DISPLAYSTATEINVALID                                                Handle        = 0x88980006\n\tMILERR_NONINVERTIBLEMATRIX                                                Handle        = 0x88980007\n\tMILERR_ZEROVECTOR                                                         Handle        = 0x88980008\n\tMILERR_TERMINATED                                                         Handle        = 0x88980009\n\tMILERR_BADNUMBER                                                          Handle        = 0x8898000A\n\tMILERR_INTERNALERROR                                                      Handle        = 0x88980080\n\tMILERR_DISPLAYFORMATNOTSUPPORTED                                          Handle        = 0x88980084\n\tMILERR_INVALIDCALL                                                        Handle        = 0x88980085\n\tMILERR_ALREADYLOCKED                                                      Handle        = 0x88980086\n\tMILERR_NOTLOCKED                                                          Handle        = 0x88980087\n\tMILERR_DEVICECANNOTRENDERTEXT                                             Handle        = 0x88980088\n\tMILERR_GLYPHBITMAPMISSED                                                  Handle        = 0x88980089\n\tMILERR_MALFORMEDGLYPHCACHE                                                Handle        = 0x8898008A\n\tMILERR_GENERIC_IGNORE                                                     Handle        = 0x8898008B\n\tMILERR_MALFORMED_GUIDELINE_DATA                                           Handle        = 0x8898008C\n\tMILERR_NO_HARDWARE_DEVICE                                                 Handle        = 0x8898008D\n\tMILERR_NEED_RECREATE_AND_PRESENT                                          Handle        = 0x8898008E\n\tMILERR_ALREADY_INITIALIZED                                                Handle        = 0x8898008F\n\tMILERR_MISMATCHED_SIZE                                                    Handle        = 0x88980090\n\tMILERR_NO_REDIRECTION_SURFACE_AVAILABLE                                   Handle        = 0x88980091\n\tMILERR_REMOTING_NOT_SUPPORTED                                             Handle        = 0x88980092\n\tMILERR_QUEUED_PRESENT_NOT_SUPPORTED                                       Handle        = 0x88980093\n\tMILERR_NOT_QUEUING_PRESENTS                                               Handle        = 0x88980094\n\tMILERR_NO_REDIRECTION_SURFACE_RETRY_LATER                                 Handle        = 0x88980095\n\tMILERR_TOOMANYSHADERELEMNTS                                               Handle        = 0x88980096\n\tMILERR_MROW_READLOCK_FAILED                                               Handle        = 0x88980097\n\tMILERR_MROW_UPDATE_FAILED                                                 Handle        = 0x88980098\n\tMILERR_SHADER_COMPILE_FAILED                                              Handle        = 0x88980099\n\tMILERR_MAX_TEXTURE_SIZE_EXCEEDED                                          Handle        = 0x8898009A\n\tMILERR_QPC_TIME_WENT_BACKWARD                                             Handle        = 0x8898009B\n\tMILERR_DXGI_ENUMERATION_OUT_OF_SYNC                                       Handle        = 0x8898009D\n\tMILERR_ADAPTER_NOT_FOUND                                                  Handle        = 0x8898009E\n\tMILERR_COLORSPACE_NOT_SUPPORTED                                           Handle        = 0x8898009F\n\tMILERR_PREFILTER_NOT_SUPPORTED                                            Handle        = 0x889800A0\n\tMILERR_DISPLAYID_ACCESS_DENIED                                            Handle        = 0x889800A1\n\tUCEERR_INVALIDPACKETHEADER                                                Handle        = 0x88980400\n\tUCEERR_UNKNOWNPACKET                                                      Handle        = 0x88980401\n\tUCEERR_ILLEGALPACKET                                                      Handle        = 0x88980402\n\tUCEERR_MALFORMEDPACKET                                                    Handle        = 0x88980403\n\tUCEERR_ILLEGALHANDLE                                                      Handle        = 0x88980404\n\tUCEERR_HANDLELOOKUPFAILED                                                 Handle        = 0x88980405\n\tUCEERR_RENDERTHREADFAILURE                                                Handle        = 0x88980406\n\tUCEERR_CTXSTACKFRSTTARGETNULL                                             Handle        = 0x88980407\n\tUCEERR_CONNECTIONIDLOOKUPFAILED                                           Handle        = 0x88980408\n\tUCEERR_BLOCKSFULL                                                         Handle        = 0x88980409\n\tUCEERR_MEMORYFAILURE                                                      Handle        = 0x8898040A\n\tUCEERR_PACKETRECORDOUTOFRANGE                                             Handle        = 0x8898040B\n\tUCEERR_ILLEGALRECORDTYPE                                                  Handle        = 0x8898040C\n\tUCEERR_OUTOFHANDLES                                                       Handle        = 0x8898040D\n\tUCEERR_UNCHANGABLE_UPDATE_ATTEMPTED                                       Handle        = 0x8898040E\n\tUCEERR_NO_MULTIPLE_WORKER_THREADS                                         Handle        = 0x8898040F\n\tUCEERR_REMOTINGNOTSUPPORTED                                               Handle        = 0x88980410\n\tUCEERR_MISSINGENDCOMMAND                                                  Handle        = 0x88980411\n\tUCEERR_MISSINGBEGINCOMMAND                                                Handle        = 0x88980412\n\tUCEERR_CHANNELSYNCTIMEDOUT                                                Handle        = 0x88980413\n\tUCEERR_CHANNELSYNCABANDONED                                               Handle        = 0x88980414\n\tUCEERR_UNSUPPORTEDTRANSPORTVERSION                                        Handle        = 0x88980415\n\tUCEERR_TRANSPORTUNAVAILABLE                                               Handle        = 0x88980416\n\tUCEERR_FEEDBACK_UNSUPPORTED                                               Handle        = 0x88980417\n\tUCEERR_COMMANDTRANSPORTDENIED                                             Handle        = 0x88980418\n\tUCEERR_GRAPHICSSTREAMUNAVAILABLE                                          Handle        = 0x88980419\n\tUCEERR_GRAPHICSSTREAMALREADYOPEN                                          Handle        = 0x88980420\n\tUCEERR_TRANSPORTDISCONNECTED                                              Handle        = 0x88980421\n\tUCEERR_TRANSPORTOVERLOADED                                                Handle        = 0x88980422\n\tUCEERR_PARTITION_ZOMBIED                                                  Handle        = 0x88980423\n\tMILAVERR_NOCLOCK                                                          Handle        = 0x88980500\n\tMILAVERR_NOMEDIATYPE                                                      Handle        = 0x88980501\n\tMILAVERR_NOVIDEOMIXER                                                     Handle        = 0x88980502\n\tMILAVERR_NOVIDEOPRESENTER                                                 Handle        = 0x88980503\n\tMILAVERR_NOREADYFRAMES                                                    Handle        = 0x88980504\n\tMILAVERR_MODULENOTLOADED                                                  Handle        = 0x88980505\n\tMILAVERR_WMPFACTORYNOTREGISTERED                                          Handle        = 0x88980506\n\tMILAVERR_INVALIDWMPVERSION                                                Handle        = 0x88980507\n\tMILAVERR_INSUFFICIENTVIDEORESOURCES                                       Handle        = 0x88980508\n\tMILAVERR_VIDEOACCELERATIONNOTAVAILABLE                                    Handle        = 0x88980509\n\tMILAVERR_REQUESTEDTEXTURETOOBIG                                           Handle        = 0x8898050A\n\tMILAVERR_SEEKFAILED                                                       Handle        = 0x8898050B\n\tMILAVERR_UNEXPECTEDWMPFAILURE                                             Handle        = 0x8898050C\n\tMILAVERR_MEDIAPLAYERCLOSED                                                Handle        = 0x8898050D\n\tMILAVERR_UNKNOWNHARDWAREERROR                                             Handle        = 0x8898050E\n\tMILEFFECTSERR_UNKNOWNPROPERTY                                             Handle        = 0x8898060E\n\tMILEFFECTSERR_EFFECTNOTPARTOFGROUP                                        Handle        = 0x8898060F\n\tMILEFFECTSERR_NOINPUTSOURCEATTACHED                                       Handle        = 0x88980610\n\tMILEFFECTSERR_CONNECTORNOTCONNECTED                                       Handle        = 0x88980611\n\tMILEFFECTSERR_CONNECTORNOTASSOCIATEDWITHEFFECT                            Handle        = 0x88980612\n\tMILEFFECTSERR_RESERVED                                                    Handle        = 0x88980613\n\tMILEFFECTSERR_CYCLEDETECTED                                               Handle        = 0x88980614\n\tMILEFFECTSERR_EFFECTINMORETHANONEGRAPH                                    Handle        = 0x88980615\n\tMILEFFECTSERR_EFFECTALREADYINAGRAPH                                       Handle        = 0x88980616\n\tMILEFFECTSERR_EFFECTHASNOCHILDREN                                         Handle        = 0x88980617\n\tMILEFFECTSERR_ALREADYATTACHEDTOLISTENER                                   Handle        = 0x88980618\n\tMILEFFECTSERR_NOTAFFINETRANSFORM                                          Handle        = 0x88980619\n\tMILEFFECTSERR_EMPTYBOUNDS                                                 Handle        = 0x8898061A\n\tMILEFFECTSERR_OUTPUTSIZETOOLARGE                                          Handle        = 0x8898061B\n\tDWMERR_STATE_TRANSITION_FAILED                                            Handle        = 0x88980700\n\tDWMERR_THEME_FAILED                                                       Handle        = 0x88980701\n\tDWMERR_CATASTROPHIC_FAILURE                                               Handle        = 0x88980702\n\tDCOMPOSITION_ERROR_WINDOW_ALREADY_COMPOSED                                Handle        = 0x88980800\n\tDCOMPOSITION_ERROR_SURFACE_BEING_RENDERED                                 Handle        = 0x88980801\n\tDCOMPOSITION_ERROR_SURFACE_NOT_BEING_RENDERED                             Handle        = 0x88980802\n\tONL_E_INVALID_AUTHENTICATION_TARGET                                       Handle        = 0x80860001\n\tONL_E_ACCESS_DENIED_BY_TOU                                                Handle        = 0x80860002\n\tONL_E_INVALID_APPLICATION                                                 Handle        = 0x80860003\n\tONL_E_PASSWORD_UPDATE_REQUIRED                                            Handle        = 0x80860004\n\tONL_E_ACCOUNT_UPDATE_REQUIRED                                             Handle        = 0x80860005\n\tONL_E_FORCESIGNIN                                                         Handle        = 0x80860006\n\tONL_E_ACCOUNT_LOCKED                                                      Handle        = 0x80860007\n\tONL_E_PARENTAL_CONSENT_REQUIRED                                           Handle        = 0x80860008\n\tONL_E_EMAIL_VERIFICATION_REQUIRED                                         Handle        = 0x80860009\n\tONL_E_ACCOUNT_SUSPENDED_COMPROIMISE                                       Handle        = 0x8086000A\n\tONL_E_ACCOUNT_SUSPENDED_ABUSE                                             Handle        = 0x8086000B\n\tONL_E_ACTION_REQUIRED                                                     Handle        = 0x8086000C\n\tONL_CONNECTION_COUNT_LIMIT                                                Handle        = 0x8086000D\n\tONL_E_CONNECTED_ACCOUNT_CAN_NOT_SIGNOUT                                   Handle        = 0x8086000E\n\tONL_E_USER_AUTHENTICATION_REQUIRED                                        Handle        = 0x8086000F\n\tONL_E_REQUEST_THROTTLED                                                   Handle        = 0x80860010\n\tFA_E_MAX_PERSISTED_ITEMS_REACHED                                          Handle        = 0x80270220\n\tFA_E_HOMEGROUP_NOT_AVAILABLE                                              Handle        = 0x80270222\n\tE_MONITOR_RESOLUTION_TOO_LOW                                              Handle        = 0x80270250\n\tE_ELEVATED_ACTIVATION_NOT_SUPPORTED                                       Handle        = 0x80270251\n\tE_UAC_DISABLED                                                            Handle        = 0x80270252\n\tE_FULL_ADMIN_NOT_SUPPORTED                                                Handle        = 0x80270253\n\tE_APPLICATION_NOT_REGISTERED                                              Handle        = 0x80270254\n\tE_MULTIPLE_EXTENSIONS_FOR_APPLICATION                                     Handle        = 0x80270255\n\tE_MULTIPLE_PACKAGES_FOR_FAMILY                                            Handle        = 0x80270256\n\tE_APPLICATION_MANAGER_NOT_RUNNING                                         Handle        = 0x80270257\n\tS_STORE_LAUNCHED_FOR_REMEDIATION                                          Handle        = 0x00270258\n\tS_APPLICATION_ACTIVATION_ERROR_HANDLED_BY_DIALOG                          Handle        = 0x00270259\n\tE_APPLICATION_ACTIVATION_TIMED_OUT                                        Handle        = 0x8027025A\n\tE_APPLICATION_ACTIVATION_EXEC_FAILURE                                     Handle        = 0x8027025B\n\tE_APPLICATION_TEMPORARY_LICENSE_ERROR                                     Handle        = 0x8027025C\n\tE_APPLICATION_TRIAL_LICENSE_EXPIRED                                       Handle        = 0x8027025D\n\tE_SKYDRIVE_ROOT_TARGET_FILE_SYSTEM_NOT_SUPPORTED                          Handle        = 0x80270260\n\tE_SKYDRIVE_ROOT_TARGET_OVERLAP                                            Handle        = 0x80270261\n\tE_SKYDRIVE_ROOT_TARGET_CANNOT_INDEX                                       Handle        = 0x80270262\n\tE_SKYDRIVE_FILE_NOT_UPLOADED                                              Handle        = 0x80270263\n\tE_SKYDRIVE_UPDATE_AVAILABILITY_FAIL                                       Handle        = 0x80270264\n\tE_SKYDRIVE_ROOT_TARGET_VOLUME_ROOT_NOT_SUPPORTED                          Handle        = 0x80270265\n\tE_SYNCENGINE_FILE_SIZE_OVER_LIMIT                                         Handle        = 0x8802B001\n\tE_SYNCENGINE_FILE_SIZE_EXCEEDS_REMAINING_QUOTA                            Handle        = 0x8802B002\n\tE_SYNCENGINE_UNSUPPORTED_FILE_NAME                                        Handle        = 0x8802B003\n\tE_SYNCENGINE_FOLDER_ITEM_COUNT_LIMIT_EXCEEDED                             Handle        = 0x8802B004\n\tE_SYNCENGINE_FILE_SYNC_PARTNER_ERROR                                      Handle        = 0x8802B005\n\tE_SYNCENGINE_SYNC_PAUSED_BY_SERVICE                                       Handle        = 0x8802B006\n\tE_SYNCENGINE_FILE_IDENTIFIER_UNKNOWN                                      Handle        = 0x8802C002\n\tE_SYNCENGINE_SERVICE_AUTHENTICATION_FAILED                                Handle        = 0x8802C003\n\tE_SYNCENGINE_UNKNOWN_SERVICE_ERROR                                        Handle        = 0x8802C004\n\tE_SYNCENGINE_SERVICE_RETURNED_UNEXPECTED_SIZE                             Handle        = 0x8802C005\n\tE_SYNCENGINE_REQUEST_BLOCKED_BY_SERVICE                                   Handle        = 0x8802C006\n\tE_SYNCENGINE_REQUEST_BLOCKED_DUE_TO_CLIENT_ERROR                          Handle        = 0x8802C007\n\tE_SYNCENGINE_FOLDER_INACCESSIBLE                                          Handle        = 0x8802D001\n\tE_SYNCENGINE_UNSUPPORTED_FOLDER_NAME                                      Handle        = 0x8802D002\n\tE_SYNCENGINE_UNSUPPORTED_MARKET                                           Handle        = 0x8802D003\n\tE_SYNCENGINE_PATH_LENGTH_LIMIT_EXCEEDED                                   Handle        = 0x8802D004\n\tE_SYNCENGINE_REMOTE_PATH_LENGTH_LIMIT_EXCEEDED                            Handle        = 0x8802D005\n\tE_SYNCENGINE_CLIENT_UPDATE_NEEDED                                         Handle        = 0x8802D006\n\tE_SYNCENGINE_PROXY_AUTHENTICATION_REQUIRED                                Handle        = 0x8802D007\n\tE_SYNCENGINE_STORAGE_SERVICE_PROVISIONING_FAILED                          Handle        = 0x8802D008\n\tE_SYNCENGINE_UNSUPPORTED_REPARSE_POINT                                    Handle        = 0x8802D009\n\tE_SYNCENGINE_STORAGE_SERVICE_BLOCKED                                      Handle        = 0x8802D00A\n\tE_SYNCENGINE_FOLDER_IN_REDIRECTION                                        Handle        = 0x8802D00B\n\tEAS_E_POLICY_NOT_MANAGED_BY_OS                                            Handle        = 0x80550001\n\tEAS_E_POLICY_COMPLIANT_WITH_ACTIONS                                       Handle        = 0x80550002\n\tEAS_E_REQUESTED_POLICY_NOT_ENFORCEABLE                                    Handle        = 0x80550003\n\tEAS_E_CURRENT_USER_HAS_BLANK_PASSWORD                                     Handle        = 0x80550004\n\tEAS_E_REQUESTED_POLICY_PASSWORD_EXPIRATION_INCOMPATIBLE                   Handle        = 0x80550005\n\tEAS_E_USER_CANNOT_CHANGE_PASSWORD                                         Handle        = 0x80550006\n\tEAS_E_ADMINS_HAVE_BLANK_PASSWORD                                          Handle        = 0x80550007\n\tEAS_E_ADMINS_CANNOT_CHANGE_PASSWORD                                       Handle        = 0x80550008\n\tEAS_E_LOCAL_CONTROLLED_USERS_CANNOT_CHANGE_PASSWORD                       Handle        = 0x80550009\n\tEAS_E_PASSWORD_POLICY_NOT_ENFORCEABLE_FOR_CONNECTED_ADMINS                Handle        = 0x8055000A\n\tEAS_E_CONNECTED_ADMINS_NEED_TO_CHANGE_PASSWORD                            Handle        = 0x8055000B\n\tEAS_E_PASSWORD_POLICY_NOT_ENFORCEABLE_FOR_CURRENT_CONNECTED_USER          Handle        = 0x8055000C\n\tEAS_E_CURRENT_CONNECTED_USER_NEED_TO_CHANGE_PASSWORD                      Handle        = 0x8055000D\n\tWEB_E_UNSUPPORTED_FORMAT                                                  Handle        = 0x83750001\n\tWEB_E_INVALID_XML                                                         Handle        = 0x83750002\n\tWEB_E_MISSING_REQUIRED_ELEMENT                                            Handle        = 0x83750003\n\tWEB_E_MISSING_REQUIRED_ATTRIBUTE                                          Handle        = 0x83750004\n\tWEB_E_UNEXPECTED_CONTENT                                                  Handle        = 0x83750005\n\tWEB_E_RESOURCE_TOO_LARGE                                                  Handle        = 0x83750006\n\tWEB_E_INVALID_JSON_STRING                                                 Handle        = 0x83750007\n\tWEB_E_INVALID_JSON_NUMBER                                                 Handle        = 0x83750008\n\tWEB_E_JSON_VALUE_NOT_FOUND                                                Handle        = 0x83750009\n\tHTTP_E_STATUS_UNEXPECTED                                                  Handle        = 0x80190001\n\tHTTP_E_STATUS_UNEXPECTED_REDIRECTION                                      Handle        = 0x80190003\n\tHTTP_E_STATUS_UNEXPECTED_CLIENT_ERROR                                     Handle        = 0x80190004\n\tHTTP_E_STATUS_UNEXPECTED_SERVER_ERROR                                     Handle        = 0x80190005\n\tHTTP_E_STATUS_AMBIGUOUS                                                   Handle        = 0x8019012C\n\tHTTP_E_STATUS_MOVED                                                       Handle        = 0x8019012D\n\tHTTP_E_STATUS_REDIRECT                                                    Handle        = 0x8019012E\n\tHTTP_E_STATUS_REDIRECT_METHOD                                             Handle        = 0x8019012F\n\tHTTP_E_STATUS_NOT_MODIFIED                                                Handle        = 0x80190130\n\tHTTP_E_STATUS_USE_PROXY                                                   Handle        = 0x80190131\n\tHTTP_E_STATUS_REDIRECT_KEEP_VERB                                          Handle        = 0x80190133\n\tHTTP_E_STATUS_BAD_REQUEST                                                 Handle        = 0x80190190\n\tHTTP_E_STATUS_DENIED                                                      Handle        = 0x80190191\n\tHTTP_E_STATUS_PAYMENT_REQ                                                 Handle        = 0x80190192\n\tHTTP_E_STATUS_FORBIDDEN                                                   Handle        = 0x80190193\n\tHTTP_E_STATUS_NOT_FOUND                                                   Handle        = 0x80190194\n\tHTTP_E_STATUS_BAD_METHOD                                                  Handle        = 0x80190195\n\tHTTP_E_STATUS_NONE_ACCEPTABLE                                             Handle        = 0x80190196\n\tHTTP_E_STATUS_PROXY_AUTH_REQ                                              Handle        = 0x80190197\n\tHTTP_E_STATUS_REQUEST_TIMEOUT                                             Handle        = 0x80190198\n\tHTTP_E_STATUS_CONFLICT                                                    Handle        = 0x80190199\n\tHTTP_E_STATUS_GONE                                                        Handle        = 0x8019019A\n\tHTTP_E_STATUS_LENGTH_REQUIRED                                             Handle        = 0x8019019B\n\tHTTP_E_STATUS_PRECOND_FAILED                                              Handle        = 0x8019019C\n\tHTTP_E_STATUS_REQUEST_TOO_LARGE                                           Handle        = 0x8019019D\n\tHTTP_E_STATUS_URI_TOO_LONG                                                Handle        = 0x8019019E\n\tHTTP_E_STATUS_UNSUPPORTED_MEDIA                                           Handle        = 0x8019019F\n\tHTTP_E_STATUS_RANGE_NOT_SATISFIABLE                                       Handle        = 0x801901A0\n\tHTTP_E_STATUS_EXPECTATION_FAILED                                          Handle        = 0x801901A1\n\tHTTP_E_STATUS_SERVER_ERROR                                                Handle        = 0x801901F4\n\tHTTP_E_STATUS_NOT_SUPPORTED                                               Handle        = 0x801901F5\n\tHTTP_E_STATUS_BAD_GATEWAY                                                 Handle        = 0x801901F6\n\tHTTP_E_STATUS_SERVICE_UNAVAIL                                             Handle        = 0x801901F7\n\tHTTP_E_STATUS_GATEWAY_TIMEOUT                                             Handle        = 0x801901F8\n\tHTTP_E_STATUS_VERSION_NOT_SUP                                             Handle        = 0x801901F9\n\tE_INVALID_PROTOCOL_OPERATION                                              Handle        = 0x83760001\n\tE_INVALID_PROTOCOL_FORMAT                                                 Handle        = 0x83760002\n\tE_PROTOCOL_EXTENSIONS_NOT_SUPPORTED                                       Handle        = 0x83760003\n\tE_SUBPROTOCOL_NOT_SUPPORTED                                               Handle        = 0x83760004\n\tE_PROTOCOL_VERSION_NOT_SUPPORTED                                          Handle        = 0x83760005\n\tINPUT_E_OUT_OF_ORDER                                                      Handle        = 0x80400000\n\tINPUT_E_REENTRANCY                                                        Handle        = 0x80400001\n\tINPUT_E_MULTIMODAL                                                        Handle        = 0x80400002\n\tINPUT_E_PACKET                                                            Handle        = 0x80400003\n\tINPUT_E_FRAME                                                             Handle        = 0x80400004\n\tINPUT_E_HISTORY                                                           Handle        = 0x80400005\n\tINPUT_E_DEVICE_INFO                                                       Handle        = 0x80400006\n\tINPUT_E_TRANSFORM                                                         Handle        = 0x80400007\n\tINPUT_E_DEVICE_PROPERTY                                                   Handle        = 0x80400008\n\tINET_E_INVALID_URL                                                        Handle        = 0x800C0002\n\tINET_E_NO_SESSION                                                         Handle        = 0x800C0003\n\tINET_E_CANNOT_CONNECT                                                     Handle        = 0x800C0004\n\tINET_E_RESOURCE_NOT_FOUND                                                 Handle        = 0x800C0005\n\tINET_E_OBJECT_NOT_FOUND                                                   Handle        = 0x800C0006\n\tINET_E_DATA_NOT_AVAILABLE                                                 Handle        = 0x800C0007\n\tINET_E_DOWNLOAD_FAILURE                                                   Handle        = 0x800C0008\n\tINET_E_AUTHENTICATION_REQUIRED                                            Handle        = 0x800C0009\n\tINET_E_NO_VALID_MEDIA                                                     Handle        = 0x800C000A\n\tINET_E_CONNECTION_TIMEOUT                                                 Handle        = 0x800C000B\n\tINET_E_INVALID_REQUEST                                                    Handle        = 0x800C000C\n\tINET_E_UNKNOWN_PROTOCOL                                                   Handle        = 0x800C000D\n\tINET_E_SECURITY_PROBLEM                                                   Handle        = 0x800C000E\n\tINET_E_CANNOT_LOAD_DATA                                                   Handle        = 0x800C000F\n\tINET_E_CANNOT_INSTANTIATE_OBJECT                                          Handle        = 0x800C0010\n\tINET_E_INVALID_CERTIFICATE                                                Handle        = 0x800C0019\n\tINET_E_REDIRECT_FAILED                                                    Handle        = 0x800C0014\n\tINET_E_REDIRECT_TO_DIR                                                    Handle        = 0x800C0015\n\tERROR_DBG_CREATE_PROCESS_FAILURE_LOCKDOWN                                 Handle        = 0x80B00001\n\tERROR_DBG_ATTACH_PROCESS_FAILURE_LOCKDOWN                                 Handle        = 0x80B00002\n\tERROR_DBG_CONNECT_SERVER_FAILURE_LOCKDOWN                                 Handle        = 0x80B00003\n\tERROR_DBG_START_SERVER_FAILURE_LOCKDOWN                                   Handle        = 0x80B00004\n\tERROR_IO_PREEMPTED                                                        Handle        = 0x89010001\n\tJSCRIPT_E_CANTEXECUTE                                                     Handle        = 0x89020001\n\tWEP_E_NOT_PROVISIONED_ON_ALL_VOLUMES                                      Handle        = 0x88010001\n\tWEP_E_FIXED_DATA_NOT_SUPPORTED                                            Handle        = 0x88010002\n\tWEP_E_HARDWARE_NOT_COMPLIANT                                              Handle        = 0x88010003\n\tWEP_E_LOCK_NOT_CONFIGURED                                                 Handle        = 0x88010004\n\tWEP_E_PROTECTION_SUSPENDED                                                Handle        = 0x88010005\n\tWEP_E_NO_LICENSE                                                          Handle        = 0x88010006\n\tWEP_E_OS_NOT_PROTECTED                                                    Handle        = 0x88010007\n\tWEP_E_UNEXPECTED_FAIL                                                     Handle        = 0x88010008\n\tWEP_E_BUFFER_TOO_LARGE                                                    Handle        = 0x88010009\n\tERROR_SVHDX_ERROR_STORED                                                  Handle        = 0xC05C0000\n\tERROR_SVHDX_ERROR_NOT_AVAILABLE                                           Handle        = 0xC05CFF00\n\tERROR_SVHDX_UNIT_ATTENTION_AVAILABLE                                      Handle        = 0xC05CFF01\n\tERROR_SVHDX_UNIT_ATTENTION_CAPACITY_DATA_CHANGED                          Handle        = 0xC05CFF02\n\tERROR_SVHDX_UNIT_ATTENTION_RESERVATIONS_PREEMPTED                         Handle        = 0xC05CFF03\n\tERROR_SVHDX_UNIT_ATTENTION_RESERVATIONS_RELEASED                          Handle        = 0xC05CFF04\n\tERROR_SVHDX_UNIT_ATTENTION_REGISTRATIONS_PREEMPTED                        Handle        = 0xC05CFF05\n\tERROR_SVHDX_UNIT_ATTENTION_OPERATING_DEFINITION_CHANGED                   Handle        = 0xC05CFF06\n\tERROR_SVHDX_RESERVATION_CONFLICT                                          Handle        = 0xC05CFF07\n\tERROR_SVHDX_WRONG_FILE_TYPE                                               Handle        = 0xC05CFF08\n\tERROR_SVHDX_VERSION_MISMATCH                                              Handle        = 0xC05CFF09\n\tERROR_VHD_SHARED                                                          Handle        = 0xC05CFF0A\n\tERROR_SVHDX_NO_INITIATOR                                                  Handle        = 0xC05CFF0B\n\tERROR_VHDSET_BACKING_STORAGE_NOT_FOUND                                    Handle        = 0xC05CFF0C\n\tERROR_SMB_NO_PREAUTH_INTEGRITY_HASH_OVERLAP                               Handle        = 0xC05D0000\n\tERROR_SMB_BAD_CLUSTER_DIALECT                                             Handle        = 0xC05D0001\n\tWININET_E_OUT_OF_HANDLES                                                  Handle        = 0x80072EE1\n\tWININET_E_TIMEOUT                                                         Handle        = 0x80072EE2\n\tWININET_E_EXTENDED_ERROR                                                  Handle        = 0x80072EE3\n\tWININET_E_INTERNAL_ERROR                                                  Handle        = 0x80072EE4\n\tWININET_E_INVALID_URL                                                     Handle        = 0x80072EE5\n\tWININET_E_UNRECOGNIZED_SCHEME                                             Handle        = 0x80072EE6\n\tWININET_E_NAME_NOT_RESOLVED                                               Handle        = 0x80072EE7\n\tWININET_E_PROTOCOL_NOT_FOUND                                              Handle        = 0x80072EE8\n\tWININET_E_INVALID_OPTION                                                  Handle        = 0x80072EE9\n\tWININET_E_BAD_OPTION_LENGTH                                               Handle        = 0x80072EEA\n\tWININET_E_OPTION_NOT_SETTABLE                                             Handle        = 0x80072EEB\n\tWININET_E_SHUTDOWN                                                        Handle        = 0x80072EEC\n\tWININET_E_INCORRECT_USER_NAME                                             Handle        = 0x80072EED\n\tWININET_E_INCORRECT_PASSWORD                                              Handle        = 0x80072EEE\n\tWININET_E_LOGIN_FAILURE                                                   Handle        = 0x80072EEF\n\tWININET_E_INVALID_OPERATION                                               Handle        = 0x80072EF0\n\tWININET_E_OPERATION_CANCELLED                                             Handle        = 0x80072EF1\n\tWININET_E_INCORRECT_HANDLE_TYPE                                           Handle        = 0x80072EF2\n\tWININET_E_INCORRECT_HANDLE_STATE                                          Handle        = 0x80072EF3\n\tWININET_E_NOT_PROXY_REQUEST                                               Handle        = 0x80072EF4\n\tWININET_E_REGISTRY_VALUE_NOT_FOUND                                        Handle        = 0x80072EF5\n\tWININET_E_BAD_REGISTRY_PARAMETER                                          Handle        = 0x80072EF6\n\tWININET_E_NO_DIRECT_ACCESS                                                Handle        = 0x80072EF7\n\tWININET_E_NO_CONTEXT                                                      Handle        = 0x80072EF8\n\tWININET_E_NO_CALLBACK                                                     Handle        = 0x80072EF9\n\tWININET_E_REQUEST_PENDING                                                 Handle        = 0x80072EFA\n\tWININET_E_INCORRECT_FORMAT                                                Handle        = 0x80072EFB\n\tWININET_E_ITEM_NOT_FOUND                                                  Handle        = 0x80072EFC\n\tWININET_E_CANNOT_CONNECT                                                  Handle        = 0x80072EFD\n\tWININET_E_CONNECTION_ABORTED                                              Handle        = 0x80072EFE\n\tWININET_E_CONNECTION_RESET                                                Handle        = 0x80072EFF\n\tWININET_E_FORCE_RETRY                                                     Handle        = 0x80072F00\n\tWININET_E_INVALID_PROXY_REQUEST                                           Handle        = 0x80072F01\n\tWININET_E_NEED_UI                                                         Handle        = 0x80072F02\n\tWININET_E_HANDLE_EXISTS                                                   Handle        = 0x80072F04\n\tWININET_E_SEC_CERT_DATE_INVALID                                           Handle        = 0x80072F05\n\tWININET_E_SEC_CERT_CN_INVALID                                             Handle        = 0x80072F06\n\tWININET_E_HTTP_TO_HTTPS_ON_REDIR                                          Handle        = 0x80072F07\n\tWININET_E_HTTPS_TO_HTTP_ON_REDIR                                          Handle        = 0x80072F08\n\tWININET_E_MIXED_SECURITY                                                  Handle        = 0x80072F09\n\tWININET_E_CHG_POST_IS_NON_SECURE                                          Handle        = 0x80072F0A\n\tWININET_E_POST_IS_NON_SECURE                                              Handle        = 0x80072F0B\n\tWININET_E_CLIENT_AUTH_CERT_NEEDED                                         Handle        = 0x80072F0C\n\tWININET_E_INVALID_CA                                                      Handle        = 0x80072F0D\n\tWININET_E_CLIENT_AUTH_NOT_SETUP                                           Handle        = 0x80072F0E\n\tWININET_E_ASYNC_THREAD_FAILED                                             Handle        = 0x80072F0F\n\tWININET_E_REDIRECT_SCHEME_CHANGE                                          Handle        = 0x80072F10\n\tWININET_E_DIALOG_PENDING                                                  Handle        = 0x80072F11\n\tWININET_E_RETRY_DIALOG                                                    Handle        = 0x80072F12\n\tWININET_E_NO_NEW_CONTAINERS                                               Handle        = 0x80072F13\n\tWININET_E_HTTPS_HTTP_SUBMIT_REDIR                                         Handle        = 0x80072F14\n\tWININET_E_SEC_CERT_ERRORS                                                 Handle        = 0x80072F17\n\tWININET_E_SEC_CERT_REV_FAILED                                             Handle        = 0x80072F19\n\tWININET_E_HEADER_NOT_FOUND                                                Handle        = 0x80072F76\n\tWININET_E_DOWNLEVEL_SERVER                                                Handle        = 0x80072F77\n\tWININET_E_INVALID_SERVER_RESPONSE                                         Handle        = 0x80072F78\n\tWININET_E_INVALID_HEADER                                                  Handle        = 0x80072F79\n\tWININET_E_INVALID_QUERY_REQUEST                                           Handle        = 0x80072F7A\n\tWININET_E_HEADER_ALREADY_EXISTS                                           Handle        = 0x80072F7B\n\tWININET_E_REDIRECT_FAILED                                                 Handle        = 0x80072F7C\n\tWININET_E_SECURITY_CHANNEL_ERROR                                          Handle        = 0x80072F7D\n\tWININET_E_UNABLE_TO_CACHE_FILE                                            Handle        = 0x80072F7E\n\tWININET_E_TCPIP_NOT_INSTALLED                                             Handle        = 0x80072F7F\n\tWININET_E_DISCONNECTED                                                    Handle        = 0x80072F83\n\tWININET_E_SERVER_UNREACHABLE                                              Handle        = 0x80072F84\n\tWININET_E_PROXY_SERVER_UNREACHABLE                                        Handle        = 0x80072F85\n\tWININET_E_BAD_AUTO_PROXY_SCRIPT                                           Handle        = 0x80072F86\n\tWININET_E_UNABLE_TO_DOWNLOAD_SCRIPT                                       Handle        = 0x80072F87\n\tWININET_E_SEC_INVALID_CERT                                                Handle        = 0x80072F89\n\tWININET_E_SEC_CERT_REVOKED                                                Handle        = 0x80072F8A\n\tWININET_E_FAILED_DUETOSECURITYCHECK                                       Handle        = 0x80072F8B\n\tWININET_E_NOT_INITIALIZED                                                 Handle        = 0x80072F8C\n\tWININET_E_LOGIN_FAILURE_DISPLAY_ENTITY_BODY                               Handle        = 0x80072F8E\n\tWININET_E_DECODING_FAILED                                                 Handle        = 0x80072F8F\n\tWININET_E_NOT_REDIRECTED                                                  Handle        = 0x80072F80\n\tWININET_E_COOKIE_NEEDS_CONFIRMATION                                       Handle        = 0x80072F81\n\tWININET_E_COOKIE_DECLINED                                                 Handle        = 0x80072F82\n\tWININET_E_REDIRECT_NEEDS_CONFIRMATION                                     Handle        = 0x80072F88\n\tSQLITE_E_ERROR                                                            Handle        = 0x87AF0001\n\tSQLITE_E_INTERNAL                                                         Handle        = 0x87AF0002\n\tSQLITE_E_PERM                                                             Handle        = 0x87AF0003\n\tSQLITE_E_ABORT                                                            Handle        = 0x87AF0004\n\tSQLITE_E_BUSY                                                             Handle        = 0x87AF0005\n\tSQLITE_E_LOCKED                                                           Handle        = 0x87AF0006\n\tSQLITE_E_NOMEM                                                            Handle        = 0x87AF0007\n\tSQLITE_E_READONLY                                                         Handle        = 0x87AF0008\n\tSQLITE_E_INTERRUPT                                                        Handle        = 0x87AF0009\n\tSQLITE_E_IOERR                                                            Handle        = 0x87AF000A\n\tSQLITE_E_CORRUPT                                                          Handle        = 0x87AF000B\n\tSQLITE_E_NOTFOUND                                                         Handle        = 0x87AF000C\n\tSQLITE_E_FULL                                                             Handle        = 0x87AF000D\n\tSQLITE_E_CANTOPEN                                                         Handle        = 0x87AF000E\n\tSQLITE_E_PROTOCOL                                                         Handle        = 0x87AF000F\n\tSQLITE_E_EMPTY                                                            Handle        = 0x87AF0010\n\tSQLITE_E_SCHEMA                                                           Handle        = 0x87AF0011\n\tSQLITE_E_TOOBIG                                                           Handle        = 0x87AF0012\n\tSQLITE_E_CONSTRAINT                                                       Handle        = 0x87AF0013\n\tSQLITE_E_MISMATCH                                                         Handle        = 0x87AF0014\n\tSQLITE_E_MISUSE                                                           Handle        = 0x87AF0015\n\tSQLITE_E_NOLFS                                                            Handle        = 0x87AF0016\n\tSQLITE_E_AUTH                                                             Handle        = 0x87AF0017\n\tSQLITE_E_FORMAT                                                           Handle        = 0x87AF0018\n\tSQLITE_E_RANGE                                                            Handle        = 0x87AF0019\n\tSQLITE_E_NOTADB                                                           Handle        = 0x87AF001A\n\tSQLITE_E_NOTICE                                                           Handle        = 0x87AF001B\n\tSQLITE_E_WARNING                                                          Handle        = 0x87AF001C\n\tSQLITE_E_ROW                                                              Handle        = 0x87AF0064\n\tSQLITE_E_DONE                                                             Handle        = 0x87AF0065\n\tSQLITE_E_IOERR_READ                                                       Handle        = 0x87AF010A\n\tSQLITE_E_IOERR_SHORT_READ                                                 Handle        = 0x87AF020A\n\tSQLITE_E_IOERR_WRITE                                                      Handle        = 0x87AF030A\n\tSQLITE_E_IOERR_FSYNC                                                      Handle        = 0x87AF040A\n\tSQLITE_E_IOERR_DIR_FSYNC                                                  Handle        = 0x87AF050A\n\tSQLITE_E_IOERR_TRUNCATE                                                   Handle        = 0x87AF060A\n\tSQLITE_E_IOERR_FSTAT                                                      Handle        = 0x87AF070A\n\tSQLITE_E_IOERR_UNLOCK                                                     Handle        = 0x87AF080A\n\tSQLITE_E_IOERR_RDLOCK                                                     Handle        = 0x87AF090A\n\tSQLITE_E_IOERR_DELETE                                                     Handle        = 0x87AF0A0A\n\tSQLITE_E_IOERR_BLOCKED                                                    Handle        = 0x87AF0B0A\n\tSQLITE_E_IOERR_NOMEM                                                      Handle        = 0x87AF0C0A\n\tSQLITE_E_IOERR_ACCESS                                                     Handle        = 0x87AF0D0A\n\tSQLITE_E_IOERR_CHECKRESERVEDLOCK                                          Handle        = 0x87AF0E0A\n\tSQLITE_E_IOERR_LOCK                                                       Handle        = 0x87AF0F0A\n\tSQLITE_E_IOERR_CLOSE                                                      Handle        = 0x87AF100A\n\tSQLITE_E_IOERR_DIR_CLOSE                                                  Handle        = 0x87AF110A\n\tSQLITE_E_IOERR_SHMOPEN                                                    Handle        = 0x87AF120A\n\tSQLITE_E_IOERR_SHMSIZE                                                    Handle        = 0x87AF130A\n\tSQLITE_E_IOERR_SHMLOCK                                                    Handle        = 0x87AF140A\n\tSQLITE_E_IOERR_SHMMAP                                                     Handle        = 0x87AF150A\n\tSQLITE_E_IOERR_SEEK                                                       Handle        = 0x87AF160A\n\tSQLITE_E_IOERR_DELETE_NOENT                                               Handle        = 0x87AF170A\n\tSQLITE_E_IOERR_MMAP                                                       Handle        = 0x87AF180A\n\tSQLITE_E_IOERR_GETTEMPPATH                                                Handle        = 0x87AF190A\n\tSQLITE_E_IOERR_CONVPATH                                                   Handle        = 0x87AF1A0A\n\tSQLITE_E_IOERR_VNODE                                                      Handle        = 0x87AF1A02\n\tSQLITE_E_IOERR_AUTH                                                       Handle        = 0x87AF1A03\n\tSQLITE_E_LOCKED_SHAREDCACHE                                               Handle        = 0x87AF0106\n\tSQLITE_E_BUSY_RECOVERY                                                    Handle        = 0x87AF0105\n\tSQLITE_E_BUSY_SNAPSHOT                                                    Handle        = 0x87AF0205\n\tSQLITE_E_CANTOPEN_NOTEMPDIR                                               Handle        = 0x87AF010E\n\tSQLITE_E_CANTOPEN_ISDIR                                                   Handle        = 0x87AF020E\n\tSQLITE_E_CANTOPEN_FULLPATH                                                Handle        = 0x87AF030E\n\tSQLITE_E_CANTOPEN_CONVPATH                                                Handle        = 0x87AF040E\n\tSQLITE_E_CORRUPT_VTAB                                                     Handle        = 0x87AF010B\n\tSQLITE_E_READONLY_RECOVERY                                                Handle        = 0x87AF0108\n\tSQLITE_E_READONLY_CANTLOCK                                                Handle        = 0x87AF0208\n\tSQLITE_E_READONLY_ROLLBACK                                                Handle        = 0x87AF0308\n\tSQLITE_E_READONLY_DBMOVED                                                 Handle        = 0x87AF0408\n\tSQLITE_E_ABORT_ROLLBACK                                                   Handle        = 0x87AF0204\n\tSQLITE_E_CONSTRAINT_CHECK                                                 Handle        = 0x87AF0113\n\tSQLITE_E_CONSTRAINT_COMMITHOOK                                            Handle        = 0x87AF0213\n\tSQLITE_E_CONSTRAINT_FOREIGNKEY                                            Handle        = 0x87AF0313\n\tSQLITE_E_CONSTRAINT_FUNCTION                                              Handle        = 0x87AF0413\n\tSQLITE_E_CONSTRAINT_NOTNULL                                               Handle        = 0x87AF0513\n\tSQLITE_E_CONSTRAINT_PRIMARYKEY                                            Handle        = 0x87AF0613\n\tSQLITE_E_CONSTRAINT_TRIGGER                                               Handle        = 0x87AF0713\n\tSQLITE_E_CONSTRAINT_UNIQUE                                                Handle        = 0x87AF0813\n\tSQLITE_E_CONSTRAINT_VTAB                                                  Handle        = 0x87AF0913\n\tSQLITE_E_CONSTRAINT_ROWID                                                 Handle        = 0x87AF0A13\n\tSQLITE_E_NOTICE_RECOVER_WAL                                               Handle        = 0x87AF011B\n\tSQLITE_E_NOTICE_RECOVER_ROLLBACK                                          Handle        = 0x87AF021B\n\tSQLITE_E_WARNING_AUTOINDEX                                                Handle        = 0x87AF011C\n\tUTC_E_TOGGLE_TRACE_STARTED                                                Handle        = 0x87C51001\n\tUTC_E_ALTERNATIVE_TRACE_CANNOT_PREEMPT                                    Handle        = 0x87C51002\n\tUTC_E_AOT_NOT_RUNNING                                                     Handle        = 0x87C51003\n\tUTC_E_SCRIPT_TYPE_INVALID                                                 Handle        = 0x87C51004\n\tUTC_E_SCENARIODEF_NOT_FOUND                                               Handle        = 0x87C51005\n\tUTC_E_TRACEPROFILE_NOT_FOUND                                              Handle        = 0x87C51006\n\tUTC_E_FORWARDER_ALREADY_ENABLED                                           Handle        = 0x87C51007\n\tUTC_E_FORWARDER_ALREADY_DISABLED                                          Handle        = 0x87C51008\n\tUTC_E_EVENTLOG_ENTRY_MALFORMED                                            Handle        = 0x87C51009\n\tUTC_E_DIAGRULES_SCHEMAVERSION_MISMATCH                                    Handle        = 0x87C5100A\n\tUTC_E_SCRIPT_TERMINATED                                                   Handle        = 0x87C5100B\n\tUTC_E_INVALID_CUSTOM_FILTER                                               Handle        = 0x87C5100C\n\tUTC_E_TRACE_NOT_RUNNING                                                   Handle        = 0x87C5100D\n\tUTC_E_REESCALATED_TOO_QUICKLY                                             Handle        = 0x87C5100E\n\tUTC_E_ESCALATION_ALREADY_RUNNING                                          Handle        = 0x87C5100F\n\tUTC_E_PERFTRACK_ALREADY_TRACING                                           Handle        = 0x87C51010\n\tUTC_E_REACHED_MAX_ESCALATIONS                                             Handle        = 0x87C51011\n\tUTC_E_FORWARDER_PRODUCER_MISMATCH                                         Handle        = 0x87C51012\n\tUTC_E_INTENTIONAL_SCRIPT_FAILURE                                          Handle        = 0x87C51013\n\tUTC_E_SQM_INIT_FAILED                                                     Handle        = 0x87C51014\n\tUTC_E_NO_WER_LOGGER_SUPPORTED                                             Handle        = 0x87C51015\n\tUTC_E_TRACERS_DONT_EXIST                                                  Handle        = 0x87C51016\n\tUTC_E_WINRT_INIT_FAILED                                                   Handle        = 0x87C51017\n\tUTC_E_SCENARIODEF_SCHEMAVERSION_MISMATCH                                  Handle        = 0x87C51018\n\tUTC_E_INVALID_FILTER                                                      Handle        = 0x87C51019\n\tUTC_E_EXE_TERMINATED                                                      Handle        = 0x87C5101A\n\tUTC_E_ESCALATION_NOT_AUTHORIZED                                           Handle        = 0x87C5101B\n\tUTC_E_SETUP_NOT_AUTHORIZED                                                Handle        = 0x87C5101C\n\tUTC_E_CHILD_PROCESS_FAILED                                                Handle        = 0x87C5101D\n\tUTC_E_COMMAND_LINE_NOT_AUTHORIZED                                         Handle        = 0x87C5101E\n\tUTC_E_CANNOT_LOAD_SCENARIO_EDITOR_XML                                     Handle        = 0x87C5101F\n\tUTC_E_ESCALATION_TIMED_OUT                                                Handle        = 0x87C51020\n\tUTC_E_SETUP_TIMED_OUT                                                     Handle        = 0x87C51021\n\tUTC_E_TRIGGER_MISMATCH                                                    Handle        = 0x87C51022\n\tUTC_E_TRIGGER_NOT_FOUND                                                   Handle        = 0x87C51023\n\tUTC_E_SIF_NOT_SUPPORTED                                                   Handle        = 0x87C51024\n\tUTC_E_DELAY_TERMINATED                                                    Handle        = 0x87C51025\n\tUTC_E_DEVICE_TICKET_ERROR                                                 Handle        = 0x87C51026\n\tUTC_E_TRACE_BUFFER_LIMIT_EXCEEDED                                         Handle        = 0x87C51027\n\tUTC_E_API_RESULT_UNAVAILABLE                                              Handle        = 0x87C51028\n\tUTC_E_RPC_TIMEOUT                                                         Handle        = 0x87C51029\n\tUTC_E_RPC_WAIT_FAILED                                                     Handle        = 0x87C5102A\n\tUTC_E_API_BUSY                                                            Handle        = 0x87C5102B\n\tUTC_E_TRACE_MIN_DURATION_REQUIREMENT_NOT_MET                              Handle        = 0x87C5102C\n\tUTC_E_EXCLUSIVITY_NOT_AVAILABLE                                           Handle        = 0x87C5102D\n\tUTC_E_GETFILE_FILE_PATH_NOT_APPROVED                                      Handle        = 0x87C5102E\n\tUTC_E_ESCALATION_DIRECTORY_ALREADY_EXISTS                                 Handle        = 0x87C5102F\n\tUTC_E_TIME_TRIGGER_ON_START_INVALID                                       Handle        = 0x87C51030\n\tUTC_E_TIME_TRIGGER_ONLY_VALID_ON_SINGLE_TRANSITION                        Handle        = 0x87C51031\n\tUTC_E_TIME_TRIGGER_INVALID_TIME_RANGE                                     Handle        = 0x87C51032\n\tUTC_E_MULTIPLE_TIME_TRIGGER_ON_SINGLE_STATE                               Handle        = 0x87C51033\n\tUTC_E_BINARY_MISSING                                                      Handle        = 0x87C51034\n\tUTC_E_NETWORK_CAPTURE_NOT_ALLOWED                                         Handle        = 0x87C51035\n\tUTC_E_FAILED_TO_RESOLVE_CONTAINER_ID                                      Handle        = 0x87C51036\n\tUTC_E_UNABLE_TO_RESOLVE_SESSION                                           Handle        = 0x87C51037\n\tUTC_E_THROTTLED                                                           Handle        = 0x87C51038\n\tUTC_E_UNAPPROVED_SCRIPT                                                   Handle        = 0x87C51039\n\tUTC_E_SCRIPT_MISSING                                                      Handle        = 0x87C5103A\n\tUTC_E_SCENARIO_THROTTLED                                                  Handle        = 0x87C5103B\n\tUTC_E_API_NOT_SUPPORTED                                                   Handle        = 0x87C5103C\n\tUTC_E_GETFILE_EXTERNAL_PATH_NOT_APPROVED                                  Handle        = 0x87C5103D\n\tUTC_E_TRY_GET_SCENARIO_TIMEOUT_EXCEEDED                                   Handle        = 0x87C5103E\n\tUTC_E_CERT_REV_FAILED                                                     Handle        = 0x87C5103F\n\tUTC_E_FAILED_TO_START_NDISCAP                                             Handle        = 0x87C51040\n\tUTC_E_KERNELDUMP_LIMIT_REACHED                                            Handle        = 0x87C51041\n\tUTC_E_MISSING_AGGREGATE_EVENT_TAG                                         Handle        = 0x87C51042\n\tUTC_E_INVALID_AGGREGATION_STRUCT                                          Handle        = 0x87C51043\n\tUTC_E_ACTION_NOT_SUPPORTED_IN_DESTINATION                                 Handle        = 0x87C51044\n\tUTC_E_FILTER_MISSING_ATTRIBUTE                                            Handle        = 0x87C51045\n\tUTC_E_FILTER_INVALID_TYPE                                                 Handle        = 0x87C51046\n\tUTC_E_FILTER_VARIABLE_NOT_FOUND                                           Handle        = 0x87C51047\n\tUTC_E_FILTER_FUNCTION_RESTRICTED                                          Handle        = 0x87C51048\n\tUTC_E_FILTER_VERSION_MISMATCH                                             Handle        = 0x87C51049\n\tUTC_E_FILTER_INVALID_FUNCTION                                             Handle        = 0x87C51050\n\tUTC_E_FILTER_INVALID_FUNCTION_PARAMS                                      Handle        = 0x87C51051\n\tUTC_E_FILTER_INVALID_COMMAND                                              Handle        = 0x87C51052\n\tUTC_E_FILTER_ILLEGAL_EVAL                                                 Handle        = 0x87C51053\n\tUTC_E_TTTRACER_RETURNED_ERROR                                             Handle        = 0x87C51054\n\tUTC_E_AGENT_DIAGNOSTICS_TOO_LARGE                                         Handle        = 0x87C51055\n\tUTC_E_FAILED_TO_RECEIVE_AGENT_DIAGNOSTICS                                 Handle        = 0x87C51056\n\tUTC_E_SCENARIO_HAS_NO_ACTIONS                                             Handle        = 0x87C51057\n\tUTC_E_TTTRACER_STORAGE_FULL                                               Handle        = 0x87C51058\n\tUTC_E_INSUFFICIENT_SPACE_TO_START_TRACE                                   Handle        = 0x87C51059\n\tUTC_E_ESCALATION_CANCELLED_AT_SHUTDOWN                                    Handle        = 0x87C5105A\n\tUTC_E_GETFILEINFOACTION_FILE_NOT_APPROVED                                 Handle        = 0x87C5105B\n\tUTC_E_SETREGKEYACTION_TYPE_NOT_APPROVED                                   Handle        = 0x87C5105C\n\tWINML_ERR_INVALID_DEVICE                                                  Handle        = 0x88900001\n\tWINML_ERR_INVALID_BINDING                                                 Handle        = 0x88900002\n\tWINML_ERR_VALUE_NOTFOUND                                                  Handle        = 0x88900003\n\tWINML_ERR_SIZE_MISMATCH                                                   Handle        = 0x88900004\n\tSTATUS_WAIT_0                                                             NTStatus      = 0x00000000\n\tSTATUS_SUCCESS                                                            NTStatus      = 0x00000000\n\tSTATUS_WAIT_1                                                             NTStatus      = 0x00000001\n\tSTATUS_WAIT_2                                                             NTStatus      = 0x00000002\n\tSTATUS_WAIT_3                                                             NTStatus      = 0x00000003\n\tSTATUS_WAIT_63                                                            NTStatus      = 0x0000003F\n\tSTATUS_ABANDONED                                                          NTStatus      = 0x00000080\n\tSTATUS_ABANDONED_WAIT_0                                                   NTStatus      = 0x00000080\n\tSTATUS_ABANDONED_WAIT_63                                                  NTStatus      = 0x000000BF\n\tSTATUS_USER_APC                                                           NTStatus      = 0x000000C0\n\tSTATUS_ALREADY_COMPLETE                                                   NTStatus      = 0x000000FF\n\tSTATUS_KERNEL_APC                                                         NTStatus      = 0x00000100\n\tSTATUS_ALERTED                                                            NTStatus      = 0x00000101\n\tSTATUS_TIMEOUT                                                            NTStatus      = 0x00000102\n\tSTATUS_PENDING                                                            NTStatus      = 0x00000103\n\tSTATUS_REPARSE                                                            NTStatus      = 0x00000104\n\tSTATUS_MORE_ENTRIES                                                       NTStatus      = 0x00000105\n\tSTATUS_NOT_ALL_ASSIGNED                                                   NTStatus      = 0x00000106\n\tSTATUS_SOME_NOT_MAPPED                                                    NTStatus      = 0x00000107\n\tSTATUS_OPLOCK_BREAK_IN_PROGRESS                                           NTStatus      = 0x00000108\n\tSTATUS_VOLUME_MOUNTED                                                     NTStatus      = 0x00000109\n\tSTATUS_RXACT_COMMITTED                                                    NTStatus      = 0x0000010A\n\tSTATUS_NOTIFY_CLEANUP                                                     NTStatus      = 0x0000010B\n\tSTATUS_NOTIFY_ENUM_DIR                                                    NTStatus      = 0x0000010C\n\tSTATUS_NO_QUOTAS_FOR_ACCOUNT                                              NTStatus      = 0x0000010D\n\tSTATUS_PRIMARY_TRANSPORT_CONNECT_FAILED                                   NTStatus      = 0x0000010E\n\tSTATUS_PAGE_FAULT_TRANSITION                                              NTStatus      = 0x00000110\n\tSTATUS_PAGE_FAULT_DEMAND_ZERO                                             NTStatus      = 0x00000111\n\tSTATUS_PAGE_FAULT_COPY_ON_WRITE                                           NTStatus      = 0x00000112\n\tSTATUS_PAGE_FAULT_GUARD_PAGE                                              NTStatus      = 0x00000113\n\tSTATUS_PAGE_FAULT_PAGING_FILE                                             NTStatus      = 0x00000114\n\tSTATUS_CACHE_PAGE_LOCKED                                                  NTStatus      = 0x00000115\n\tSTATUS_CRASH_DUMP                                                         NTStatus      = 0x00000116\n\tSTATUS_BUFFER_ALL_ZEROS                                                   NTStatus      = 0x00000117\n\tSTATUS_REPARSE_OBJECT                                                     NTStatus      = 0x00000118\n\tSTATUS_RESOURCE_REQUIREMENTS_CHANGED                                      NTStatus      = 0x00000119\n\tSTATUS_TRANSLATION_COMPLETE                                               NTStatus      = 0x00000120\n\tSTATUS_DS_MEMBERSHIP_EVALUATED_LOCALLY                                    NTStatus      = 0x00000121\n\tSTATUS_NOTHING_TO_TERMINATE                                               NTStatus      = 0x00000122\n\tSTATUS_PROCESS_NOT_IN_JOB                                                 NTStatus      = 0x00000123\n\tSTATUS_PROCESS_IN_JOB                                                     NTStatus      = 0x00000124\n\tSTATUS_VOLSNAP_HIBERNATE_READY                                            NTStatus      = 0x00000125\n\tSTATUS_FSFILTER_OP_COMPLETED_SUCCESSFULLY                                 NTStatus      = 0x00000126\n\tSTATUS_INTERRUPT_VECTOR_ALREADY_CONNECTED                                 NTStatus      = 0x00000127\n\tSTATUS_INTERRUPT_STILL_CONNECTED                                          NTStatus      = 0x00000128\n\tSTATUS_PROCESS_CLONED                                                     NTStatus      = 0x00000129\n\tSTATUS_FILE_LOCKED_WITH_ONLY_READERS                                      NTStatus      = 0x0000012A\n\tSTATUS_FILE_LOCKED_WITH_WRITERS                                           NTStatus      = 0x0000012B\n\tSTATUS_VALID_IMAGE_HASH                                                   NTStatus      = 0x0000012C\n\tSTATUS_VALID_CATALOG_HASH                                                 NTStatus      = 0x0000012D\n\tSTATUS_VALID_STRONG_CODE_HASH                                             NTStatus      = 0x0000012E\n\tSTATUS_GHOSTED                                                            NTStatus      = 0x0000012F\n\tSTATUS_DATA_OVERWRITTEN                                                   NTStatus      = 0x00000130\n\tSTATUS_RESOURCEMANAGER_READ_ONLY                                          NTStatus      = 0x00000202\n\tSTATUS_RING_PREVIOUSLY_EMPTY                                              NTStatus      = 0x00000210\n\tSTATUS_RING_PREVIOUSLY_FULL                                               NTStatus      = 0x00000211\n\tSTATUS_RING_PREVIOUSLY_ABOVE_QUOTA                                        NTStatus      = 0x00000212\n\tSTATUS_RING_NEWLY_EMPTY                                                   NTStatus      = 0x00000213\n\tSTATUS_RING_SIGNAL_OPPOSITE_ENDPOINT                                      NTStatus      = 0x00000214\n\tSTATUS_OPLOCK_SWITCHED_TO_NEW_HANDLE                                      NTStatus      = 0x00000215\n\tSTATUS_OPLOCK_HANDLE_CLOSED                                               NTStatus      = 0x00000216\n\tSTATUS_WAIT_FOR_OPLOCK                                                    NTStatus      = 0x00000367\n\tSTATUS_REPARSE_GLOBAL                                                     NTStatus      = 0x00000368\n\tSTATUS_FLT_IO_COMPLETE                                                    NTStatus      = 0x001C0001\n\tSTATUS_OBJECT_NAME_EXISTS                                                 NTStatus      = 0x40000000\n\tSTATUS_THREAD_WAS_SUSPENDED                                               NTStatus      = 0x40000001\n\tSTATUS_WORKING_SET_LIMIT_RANGE                                            NTStatus      = 0x40000002\n\tSTATUS_IMAGE_NOT_AT_BASE                                                  NTStatus      = 0x40000003\n\tSTATUS_RXACT_STATE_CREATED                                                NTStatus      = 0x40000004\n\tSTATUS_SEGMENT_NOTIFICATION                                               NTStatus      = 0x40000005\n\tSTATUS_LOCAL_USER_SESSION_KEY                                             NTStatus      = 0x40000006\n\tSTATUS_BAD_CURRENT_DIRECTORY                                              NTStatus      = 0x40000007\n\tSTATUS_SERIAL_MORE_WRITES                                                 NTStatus      = 0x40000008\n\tSTATUS_REGISTRY_RECOVERED                                                 NTStatus      = 0x40000009\n\tSTATUS_FT_READ_RECOVERY_FROM_BACKUP                                       NTStatus      = 0x4000000A\n\tSTATUS_FT_WRITE_RECOVERY                                                  NTStatus      = 0x4000000B\n\tSTATUS_SERIAL_COUNTER_TIMEOUT                                             NTStatus      = 0x4000000C\n\tSTATUS_NULL_LM_PASSWORD                                                   NTStatus      = 0x4000000D\n\tSTATUS_IMAGE_MACHINE_TYPE_MISMATCH                                        NTStatus      = 0x4000000E\n\tSTATUS_RECEIVE_PARTIAL                                                    NTStatus      = 0x4000000F\n\tSTATUS_RECEIVE_EXPEDITED                                                  NTStatus      = 0x40000010\n\tSTATUS_RECEIVE_PARTIAL_EXPEDITED                                          NTStatus      = 0x40000011\n\tSTATUS_EVENT_DONE                                                         NTStatus      = 0x40000012\n\tSTATUS_EVENT_PENDING                                                      NTStatus      = 0x40000013\n\tSTATUS_CHECKING_FILE_SYSTEM                                               NTStatus      = 0x40000014\n\tSTATUS_FATAL_APP_EXIT                                                     NTStatus      = 0x40000015\n\tSTATUS_PREDEFINED_HANDLE                                                  NTStatus      = 0x40000016\n\tSTATUS_WAS_UNLOCKED                                                       NTStatus      = 0x40000017\n\tSTATUS_SERVICE_NOTIFICATION                                               NTStatus      = 0x40000018\n\tSTATUS_WAS_LOCKED                                                         NTStatus      = 0x40000019\n\tSTATUS_LOG_HARD_ERROR                                                     NTStatus      = 0x4000001A\n\tSTATUS_ALREADY_WIN32                                                      NTStatus      = 0x4000001B\n\tSTATUS_WX86_UNSIMULATE                                                    NTStatus      = 0x4000001C\n\tSTATUS_WX86_CONTINUE                                                      NTStatus      = 0x4000001D\n\tSTATUS_WX86_SINGLE_STEP                                                   NTStatus      = 0x4000001E\n\tSTATUS_WX86_BREAKPOINT                                                    NTStatus      = 0x4000001F\n\tSTATUS_WX86_EXCEPTION_CONTINUE                                            NTStatus      = 0x40000020\n\tSTATUS_WX86_EXCEPTION_LASTCHANCE                                          NTStatus      = 0x40000021\n\tSTATUS_WX86_EXCEPTION_CHAIN                                               NTStatus      = 0x40000022\n\tSTATUS_IMAGE_MACHINE_TYPE_MISMATCH_EXE                                    NTStatus      = 0x40000023\n\tSTATUS_NO_YIELD_PERFORMED                                                 NTStatus      = 0x40000024\n\tSTATUS_TIMER_RESUME_IGNORED                                               NTStatus      = 0x40000025\n\tSTATUS_ARBITRATION_UNHANDLED                                              NTStatus      = 0x40000026\n\tSTATUS_CARDBUS_NOT_SUPPORTED                                              NTStatus      = 0x40000027\n\tSTATUS_WX86_CREATEWX86TIB                                                 NTStatus      = 0x40000028\n\tSTATUS_MP_PROCESSOR_MISMATCH                                              NTStatus      = 0x40000029\n\tSTATUS_HIBERNATED                                                         NTStatus      = 0x4000002A\n\tSTATUS_RESUME_HIBERNATION                                                 NTStatus      = 0x4000002B\n\tSTATUS_FIRMWARE_UPDATED                                                   NTStatus      = 0x4000002C\n\tSTATUS_DRIVERS_LEAKING_LOCKED_PAGES                                       NTStatus      = 0x4000002D\n\tSTATUS_MESSAGE_RETRIEVED                                                  NTStatus      = 0x4000002E\n\tSTATUS_SYSTEM_POWERSTATE_TRANSITION                                       NTStatus      = 0x4000002F\n\tSTATUS_ALPC_CHECK_COMPLETION_LIST                                         NTStatus      = 0x40000030\n\tSTATUS_SYSTEM_POWERSTATE_COMPLEX_TRANSITION                               NTStatus      = 0x40000031\n\tSTATUS_ACCESS_AUDIT_BY_POLICY                                             NTStatus      = 0x40000032\n\tSTATUS_ABANDON_HIBERFILE                                                  NTStatus      = 0x40000033\n\tSTATUS_BIZRULES_NOT_ENABLED                                               NTStatus      = 0x40000034\n\tSTATUS_FT_READ_FROM_COPY                                                  NTStatus      = 0x40000035\n\tSTATUS_IMAGE_AT_DIFFERENT_BASE                                            NTStatus      = 0x40000036\n\tSTATUS_PATCH_DEFERRED                                                     NTStatus      = 0x40000037\n\tSTATUS_HEURISTIC_DAMAGE_POSSIBLE                                          NTStatus      = 0x40190001\n\tSTATUS_GUARD_PAGE_VIOLATION                                               NTStatus      = 0x80000001\n\tSTATUS_DATATYPE_MISALIGNMENT                                              NTStatus      = 0x80000002\n\tSTATUS_BREAKPOINT                                                         NTStatus      = 0x80000003\n\tSTATUS_SINGLE_STEP                                                        NTStatus      = 0x80000004\n\tSTATUS_BUFFER_OVERFLOW                                                    NTStatus      = 0x80000005\n\tSTATUS_NO_MORE_FILES                                                      NTStatus      = 0x80000006\n\tSTATUS_WAKE_SYSTEM_DEBUGGER                                               NTStatus      = 0x80000007\n\tSTATUS_HANDLES_CLOSED                                                     NTStatus      = 0x8000000A\n\tSTATUS_NO_INHERITANCE                                                     NTStatus      = 0x8000000B\n\tSTATUS_GUID_SUBSTITUTION_MADE                                             NTStatus      = 0x8000000C\n\tSTATUS_PARTIAL_COPY                                                       NTStatus      = 0x8000000D\n\tSTATUS_DEVICE_PAPER_EMPTY                                                 NTStatus      = 0x8000000E\n\tSTATUS_DEVICE_POWERED_OFF                                                 NTStatus      = 0x8000000F\n\tSTATUS_DEVICE_OFF_LINE                                                    NTStatus      = 0x80000010\n\tSTATUS_DEVICE_BUSY                                                        NTStatus      = 0x80000011\n\tSTATUS_NO_MORE_EAS                                                        NTStatus      = 0x80000012\n\tSTATUS_INVALID_EA_NAME                                                    NTStatus      = 0x80000013\n\tSTATUS_EA_LIST_INCONSISTENT                                               NTStatus      = 0x80000014\n\tSTATUS_INVALID_EA_FLAG                                                    NTStatus      = 0x80000015\n\tSTATUS_VERIFY_REQUIRED                                                    NTStatus      = 0x80000016\n\tSTATUS_EXTRANEOUS_INFORMATION                                             NTStatus      = 0x80000017\n\tSTATUS_RXACT_COMMIT_NECESSARY                                             NTStatus      = 0x80000018\n\tSTATUS_NO_MORE_ENTRIES                                                    NTStatus      = 0x8000001A\n\tSTATUS_FILEMARK_DETECTED                                                  NTStatus      = 0x8000001B\n\tSTATUS_MEDIA_CHANGED                                                      NTStatus      = 0x8000001C\n\tSTATUS_BUS_RESET                                                          NTStatus      = 0x8000001D\n\tSTATUS_END_OF_MEDIA                                                       NTStatus      = 0x8000001E\n\tSTATUS_BEGINNING_OF_MEDIA                                                 NTStatus      = 0x8000001F\n\tSTATUS_MEDIA_CHECK                                                        NTStatus      = 0x80000020\n\tSTATUS_SETMARK_DETECTED                                                   NTStatus      = 0x80000021\n\tSTATUS_NO_DATA_DETECTED                                                   NTStatus      = 0x80000022\n\tSTATUS_REDIRECTOR_HAS_OPEN_HANDLES                                        NTStatus      = 0x80000023\n\tSTATUS_SERVER_HAS_OPEN_HANDLES                                            NTStatus      = 0x80000024\n\tSTATUS_ALREADY_DISCONNECTED                                               NTStatus      = 0x80000025\n\tSTATUS_LONGJUMP                                                           NTStatus      = 0x80000026\n\tSTATUS_CLEANER_CARTRIDGE_INSTALLED                                        NTStatus      = 0x80000027\n\tSTATUS_PLUGPLAY_QUERY_VETOED                                              NTStatus      = 0x80000028\n\tSTATUS_UNWIND_CONSOLIDATE                                                 NTStatus      = 0x80000029\n\tSTATUS_REGISTRY_HIVE_RECOVERED                                            NTStatus      = 0x8000002A\n\tSTATUS_DLL_MIGHT_BE_INSECURE                                              NTStatus      = 0x8000002B\n\tSTATUS_DLL_MIGHT_BE_INCOMPATIBLE                                          NTStatus      = 0x8000002C\n\tSTATUS_STOPPED_ON_SYMLINK                                                 NTStatus      = 0x8000002D\n\tSTATUS_CANNOT_GRANT_REQUESTED_OPLOCK                                      NTStatus      = 0x8000002E\n\tSTATUS_NO_ACE_CONDITION                                                   NTStatus      = 0x8000002F\n\tSTATUS_DEVICE_SUPPORT_IN_PROGRESS                                         NTStatus      = 0x80000030\n\tSTATUS_DEVICE_POWER_CYCLE_REQUIRED                                        NTStatus      = 0x80000031\n\tSTATUS_NO_WORK_DONE                                                       NTStatus      = 0x80000032\n\tSTATUS_CLUSTER_NODE_ALREADY_UP                                            NTStatus      = 0x80130001\n\tSTATUS_CLUSTER_NODE_ALREADY_DOWN                                          NTStatus      = 0x80130002\n\tSTATUS_CLUSTER_NETWORK_ALREADY_ONLINE                                     NTStatus      = 0x80130003\n\tSTATUS_CLUSTER_NETWORK_ALREADY_OFFLINE                                    NTStatus      = 0x80130004\n\tSTATUS_CLUSTER_NODE_ALREADY_MEMBER                                        NTStatus      = 0x80130005\n\tSTATUS_FLT_BUFFER_TOO_SMALL                                               NTStatus      = 0x801C0001\n\tSTATUS_FVE_PARTIAL_METADATA                                               NTStatus      = 0x80210001\n\tSTATUS_FVE_TRANSIENT_STATE                                                NTStatus      = 0x80210002\n\tSTATUS_CLOUD_FILE_PROPERTY_BLOB_CHECKSUM_MISMATCH                         NTStatus      = 0x8000CF00\n\tSTATUS_UNSUCCESSFUL                                                       NTStatus      = 0xC0000001\n\tSTATUS_NOT_IMPLEMENTED                                                    NTStatus      = 0xC0000002\n\tSTATUS_INVALID_INFO_CLASS                                                 NTStatus      = 0xC0000003\n\tSTATUS_INFO_LENGTH_MISMATCH                                               NTStatus      = 0xC0000004\n\tSTATUS_ACCESS_VIOLATION                                                   NTStatus      = 0xC0000005\n\tSTATUS_IN_PAGE_ERROR                                                      NTStatus      = 0xC0000006\n\tSTATUS_PAGEFILE_QUOTA                                                     NTStatus      = 0xC0000007\n\tSTATUS_INVALID_HANDLE                                                     NTStatus      = 0xC0000008\n\tSTATUS_BAD_INITIAL_STACK                                                  NTStatus      = 0xC0000009\n\tSTATUS_BAD_INITIAL_PC                                                     NTStatus      = 0xC000000A\n\tSTATUS_INVALID_CID                                                        NTStatus      = 0xC000000B\n\tSTATUS_TIMER_NOT_CANCELED                                                 NTStatus      = 0xC000000C\n\tSTATUS_INVALID_PARAMETER                                                  NTStatus      = 0xC000000D\n\tSTATUS_NO_SUCH_DEVICE                                                     NTStatus      = 0xC000000E\n\tSTATUS_NO_SUCH_FILE                                                       NTStatus      = 0xC000000F\n\tSTATUS_INVALID_DEVICE_REQUEST                                             NTStatus      = 0xC0000010\n\tSTATUS_END_OF_FILE                                                        NTStatus      = 0xC0000011\n\tSTATUS_WRONG_VOLUME                                                       NTStatus      = 0xC0000012\n\tSTATUS_NO_MEDIA_IN_DEVICE                                                 NTStatus      = 0xC0000013\n\tSTATUS_UNRECOGNIZED_MEDIA                                                 NTStatus      = 0xC0000014\n\tSTATUS_NONEXISTENT_SECTOR                                                 NTStatus      = 0xC0000015\n\tSTATUS_MORE_PROCESSING_REQUIRED                                           NTStatus      = 0xC0000016\n\tSTATUS_NO_MEMORY                                                          NTStatus      = 0xC0000017\n\tSTATUS_CONFLICTING_ADDRESSES                                              NTStatus      = 0xC0000018\n\tSTATUS_NOT_MAPPED_VIEW                                                    NTStatus      = 0xC0000019\n\tSTATUS_UNABLE_TO_FREE_VM                                                  NTStatus      = 0xC000001A\n\tSTATUS_UNABLE_TO_DELETE_SECTION                                           NTStatus      = 0xC000001B\n\tSTATUS_INVALID_SYSTEM_SERVICE                                             NTStatus      = 0xC000001C\n\tSTATUS_ILLEGAL_INSTRUCTION                                                NTStatus      = 0xC000001D\n\tSTATUS_INVALID_LOCK_SEQUENCE                                              NTStatus      = 0xC000001E\n\tSTATUS_INVALID_VIEW_SIZE                                                  NTStatus      = 0xC000001F\n\tSTATUS_INVALID_FILE_FOR_SECTION                                           NTStatus      = 0xC0000020\n\tSTATUS_ALREADY_COMMITTED                                                  NTStatus      = 0xC0000021\n\tSTATUS_ACCESS_DENIED                                                      NTStatus      = 0xC0000022\n\tSTATUS_BUFFER_TOO_SMALL                                                   NTStatus      = 0xC0000023\n\tSTATUS_OBJECT_TYPE_MISMATCH                                               NTStatus      = 0xC0000024\n\tSTATUS_NONCONTINUABLE_EXCEPTION                                           NTStatus      = 0xC0000025\n\tSTATUS_INVALID_DISPOSITION                                                NTStatus      = 0xC0000026\n\tSTATUS_UNWIND                                                             NTStatus      = 0xC0000027\n\tSTATUS_BAD_STACK                                                          NTStatus      = 0xC0000028\n\tSTATUS_INVALID_UNWIND_TARGET                                              NTStatus      = 0xC0000029\n\tSTATUS_NOT_LOCKED                                                         NTStatus      = 0xC000002A\n\tSTATUS_PARITY_ERROR                                                       NTStatus      = 0xC000002B\n\tSTATUS_UNABLE_TO_DECOMMIT_VM                                              NTStatus      = 0xC000002C\n\tSTATUS_NOT_COMMITTED                                                      NTStatus      = 0xC000002D\n\tSTATUS_INVALID_PORT_ATTRIBUTES                                            NTStatus      = 0xC000002E\n\tSTATUS_PORT_MESSAGE_TOO_LONG                                              NTStatus      = 0xC000002F\n\tSTATUS_INVALID_PARAMETER_MIX                                              NTStatus      = 0xC0000030\n\tSTATUS_INVALID_QUOTA_LOWER                                                NTStatus      = 0xC0000031\n\tSTATUS_DISK_CORRUPT_ERROR                                                 NTStatus      = 0xC0000032\n\tSTATUS_OBJECT_NAME_INVALID                                                NTStatus      = 0xC0000033\n\tSTATUS_OBJECT_NAME_NOT_FOUND                                              NTStatus      = 0xC0000034\n\tSTATUS_OBJECT_NAME_COLLISION                                              NTStatus      = 0xC0000035\n\tSTATUS_PORT_DO_NOT_DISTURB                                                NTStatus      = 0xC0000036\n\tSTATUS_PORT_DISCONNECTED                                                  NTStatus      = 0xC0000037\n\tSTATUS_DEVICE_ALREADY_ATTACHED                                            NTStatus      = 0xC0000038\n\tSTATUS_OBJECT_PATH_INVALID                                                NTStatus      = 0xC0000039\n\tSTATUS_OBJECT_PATH_NOT_FOUND                                              NTStatus      = 0xC000003A\n\tSTATUS_OBJECT_PATH_SYNTAX_BAD                                             NTStatus      = 0xC000003B\n\tSTATUS_DATA_OVERRUN                                                       NTStatus      = 0xC000003C\n\tSTATUS_DATA_LATE_ERROR                                                    NTStatus      = 0xC000003D\n\tSTATUS_DATA_ERROR                                                         NTStatus      = 0xC000003E\n\tSTATUS_CRC_ERROR                                                          NTStatus      = 0xC000003F\n\tSTATUS_SECTION_TOO_BIG                                                    NTStatus      = 0xC0000040\n\tSTATUS_PORT_CONNECTION_REFUSED                                            NTStatus      = 0xC0000041\n\tSTATUS_INVALID_PORT_HANDLE                                                NTStatus      = 0xC0000042\n\tSTATUS_SHARING_VIOLATION                                                  NTStatus      = 0xC0000043\n\tSTATUS_QUOTA_EXCEEDED                                                     NTStatus      = 0xC0000044\n\tSTATUS_INVALID_PAGE_PROTECTION                                            NTStatus      = 0xC0000045\n\tSTATUS_MUTANT_NOT_OWNED                                                   NTStatus      = 0xC0000046\n\tSTATUS_SEMAPHORE_LIMIT_EXCEEDED                                           NTStatus      = 0xC0000047\n\tSTATUS_PORT_ALREADY_SET                                                   NTStatus      = 0xC0000048\n\tSTATUS_SECTION_NOT_IMAGE                                                  NTStatus      = 0xC0000049\n\tSTATUS_SUSPEND_COUNT_EXCEEDED                                             NTStatus      = 0xC000004A\n\tSTATUS_THREAD_IS_TERMINATING                                              NTStatus      = 0xC000004B\n\tSTATUS_BAD_WORKING_SET_LIMIT                                              NTStatus      = 0xC000004C\n\tSTATUS_INCOMPATIBLE_FILE_MAP                                              NTStatus      = 0xC000004D\n\tSTATUS_SECTION_PROTECTION                                                 NTStatus      = 0xC000004E\n\tSTATUS_EAS_NOT_SUPPORTED                                                  NTStatus      = 0xC000004F\n\tSTATUS_EA_TOO_LARGE                                                       NTStatus      = 0xC0000050\n\tSTATUS_NONEXISTENT_EA_ENTRY                                               NTStatus      = 0xC0000051\n\tSTATUS_NO_EAS_ON_FILE                                                     NTStatus      = 0xC0000052\n\tSTATUS_EA_CORRUPT_ERROR                                                   NTStatus      = 0xC0000053\n\tSTATUS_FILE_LOCK_CONFLICT                                                 NTStatus      = 0xC0000054\n\tSTATUS_LOCK_NOT_GRANTED                                                   NTStatus      = 0xC0000055\n\tSTATUS_DELETE_PENDING                                                     NTStatus      = 0xC0000056\n\tSTATUS_CTL_FILE_NOT_SUPPORTED                                             NTStatus      = 0xC0000057\n\tSTATUS_UNKNOWN_REVISION                                                   NTStatus      = 0xC0000058\n\tSTATUS_REVISION_MISMATCH                                                  NTStatus      = 0xC0000059\n\tSTATUS_INVALID_OWNER                                                      NTStatus      = 0xC000005A\n\tSTATUS_INVALID_PRIMARY_GROUP                                              NTStatus      = 0xC000005B\n\tSTATUS_NO_IMPERSONATION_TOKEN                                             NTStatus      = 0xC000005C\n\tSTATUS_CANT_DISABLE_MANDATORY                                             NTStatus      = 0xC000005D\n\tSTATUS_NO_LOGON_SERVERS                                                   NTStatus      = 0xC000005E\n\tSTATUS_NO_SUCH_LOGON_SESSION                                              NTStatus      = 0xC000005F\n\tSTATUS_NO_SUCH_PRIVILEGE                                                  NTStatus      = 0xC0000060\n\tSTATUS_PRIVILEGE_NOT_HELD                                                 NTStatus      = 0xC0000061\n\tSTATUS_INVALID_ACCOUNT_NAME                                               NTStatus      = 0xC0000062\n\tSTATUS_USER_EXISTS                                                        NTStatus      = 0xC0000063\n\tSTATUS_NO_SUCH_USER                                                       NTStatus      = 0xC0000064\n\tSTATUS_GROUP_EXISTS                                                       NTStatus      = 0xC0000065\n\tSTATUS_NO_SUCH_GROUP                                                      NTStatus      = 0xC0000066\n\tSTATUS_MEMBER_IN_GROUP                                                    NTStatus      = 0xC0000067\n\tSTATUS_MEMBER_NOT_IN_GROUP                                                NTStatus      = 0xC0000068\n\tSTATUS_LAST_ADMIN                                                         NTStatus      = 0xC0000069\n\tSTATUS_WRONG_PASSWORD                                                     NTStatus      = 0xC000006A\n\tSTATUS_ILL_FORMED_PASSWORD                                                NTStatus      = 0xC000006B\n\tSTATUS_PASSWORD_RESTRICTION                                               NTStatus      = 0xC000006C\n\tSTATUS_LOGON_FAILURE                                                      NTStatus      = 0xC000006D\n\tSTATUS_ACCOUNT_RESTRICTION                                                NTStatus      = 0xC000006E\n\tSTATUS_INVALID_LOGON_HOURS                                                NTStatus      = 0xC000006F\n\tSTATUS_INVALID_WORKSTATION                                                NTStatus      = 0xC0000070\n\tSTATUS_PASSWORD_EXPIRED                                                   NTStatus      = 0xC0000071\n\tSTATUS_ACCOUNT_DISABLED                                                   NTStatus      = 0xC0000072\n\tSTATUS_NONE_MAPPED                                                        NTStatus      = 0xC0000073\n\tSTATUS_TOO_MANY_LUIDS_REQUESTED                                           NTStatus      = 0xC0000074\n\tSTATUS_LUIDS_EXHAUSTED                                                    NTStatus      = 0xC0000075\n\tSTATUS_INVALID_SUB_AUTHORITY                                              NTStatus      = 0xC0000076\n\tSTATUS_INVALID_ACL                                                        NTStatus      = 0xC0000077\n\tSTATUS_INVALID_SID                                                        NTStatus      = 0xC0000078\n\tSTATUS_INVALID_SECURITY_DESCR                                             NTStatus      = 0xC0000079\n\tSTATUS_PROCEDURE_NOT_FOUND                                                NTStatus      = 0xC000007A\n\tSTATUS_INVALID_IMAGE_FORMAT                                               NTStatus      = 0xC000007B\n\tSTATUS_NO_TOKEN                                                           NTStatus      = 0xC000007C\n\tSTATUS_BAD_INHERITANCE_ACL                                                NTStatus      = 0xC000007D\n\tSTATUS_RANGE_NOT_LOCKED                                                   NTStatus      = 0xC000007E\n\tSTATUS_DISK_FULL                                                          NTStatus      = 0xC000007F\n\tSTATUS_SERVER_DISABLED                                                    NTStatus      = 0xC0000080\n\tSTATUS_SERVER_NOT_DISABLED                                                NTStatus      = 0xC0000081\n\tSTATUS_TOO_MANY_GUIDS_REQUESTED                                           NTStatus      = 0xC0000082\n\tSTATUS_GUIDS_EXHAUSTED                                                    NTStatus      = 0xC0000083\n\tSTATUS_INVALID_ID_AUTHORITY                                               NTStatus      = 0xC0000084\n\tSTATUS_AGENTS_EXHAUSTED                                                   NTStatus      = 0xC0000085\n\tSTATUS_INVALID_VOLUME_LABEL                                               NTStatus      = 0xC0000086\n\tSTATUS_SECTION_NOT_EXTENDED                                               NTStatus      = 0xC0000087\n\tSTATUS_NOT_MAPPED_DATA                                                    NTStatus      = 0xC0000088\n\tSTATUS_RESOURCE_DATA_NOT_FOUND                                            NTStatus      = 0xC0000089\n\tSTATUS_RESOURCE_TYPE_NOT_FOUND                                            NTStatus      = 0xC000008A\n\tSTATUS_RESOURCE_NAME_NOT_FOUND                                            NTStatus      = 0xC000008B\n\tSTATUS_ARRAY_BOUNDS_EXCEEDED                                              NTStatus      = 0xC000008C\n\tSTATUS_FLOAT_DENORMAL_OPERAND                                             NTStatus      = 0xC000008D\n\tSTATUS_FLOAT_DIVIDE_BY_ZERO                                               NTStatus      = 0xC000008E\n\tSTATUS_FLOAT_INEXACT_RESULT                                               NTStatus      = 0xC000008F\n\tSTATUS_FLOAT_INVALID_OPERATION                                            NTStatus      = 0xC0000090\n\tSTATUS_FLOAT_OVERFLOW                                                     NTStatus      = 0xC0000091\n\tSTATUS_FLOAT_STACK_CHECK                                                  NTStatus      = 0xC0000092\n\tSTATUS_FLOAT_UNDERFLOW                                                    NTStatus      = 0xC0000093\n\tSTATUS_INTEGER_DIVIDE_BY_ZERO                                             NTStatus      = 0xC0000094\n\tSTATUS_INTEGER_OVERFLOW                                                   NTStatus      = 0xC0000095\n\tSTATUS_PRIVILEGED_INSTRUCTION                                             NTStatus      = 0xC0000096\n\tSTATUS_TOO_MANY_PAGING_FILES                                              NTStatus      = 0xC0000097\n\tSTATUS_FILE_INVALID                                                       NTStatus      = 0xC0000098\n\tSTATUS_ALLOTTED_SPACE_EXCEEDED                                            NTStatus      = 0xC0000099\n\tSTATUS_INSUFFICIENT_RESOURCES                                             NTStatus      = 0xC000009A\n\tSTATUS_DFS_EXIT_PATH_FOUND                                                NTStatus      = 0xC000009B\n\tSTATUS_DEVICE_DATA_ERROR                                                  NTStatus      = 0xC000009C\n\tSTATUS_DEVICE_NOT_CONNECTED                                               NTStatus      = 0xC000009D\n\tSTATUS_DEVICE_POWER_FAILURE                                               NTStatus      = 0xC000009E\n\tSTATUS_FREE_VM_NOT_AT_BASE                                                NTStatus      = 0xC000009F\n\tSTATUS_MEMORY_NOT_ALLOCATED                                               NTStatus      = 0xC00000A0\n\tSTATUS_WORKING_SET_QUOTA                                                  NTStatus      = 0xC00000A1\n\tSTATUS_MEDIA_WRITE_PROTECTED                                              NTStatus      = 0xC00000A2\n\tSTATUS_DEVICE_NOT_READY                                                   NTStatus      = 0xC00000A3\n\tSTATUS_INVALID_GROUP_ATTRIBUTES                                           NTStatus      = 0xC00000A4\n\tSTATUS_BAD_IMPERSONATION_LEVEL                                            NTStatus      = 0xC00000A5\n\tSTATUS_CANT_OPEN_ANONYMOUS                                                NTStatus      = 0xC00000A6\n\tSTATUS_BAD_VALIDATION_CLASS                                               NTStatus      = 0xC00000A7\n\tSTATUS_BAD_TOKEN_TYPE                                                     NTStatus      = 0xC00000A8\n\tSTATUS_BAD_MASTER_BOOT_RECORD                                             NTStatus      = 0xC00000A9\n\tSTATUS_INSTRUCTION_MISALIGNMENT                                           NTStatus      = 0xC00000AA\n\tSTATUS_INSTANCE_NOT_AVAILABLE                                             NTStatus      = 0xC00000AB\n\tSTATUS_PIPE_NOT_AVAILABLE                                                 NTStatus      = 0xC00000AC\n\tSTATUS_INVALID_PIPE_STATE                                                 NTStatus      = 0xC00000AD\n\tSTATUS_PIPE_BUSY                                                          NTStatus      = 0xC00000AE\n\tSTATUS_ILLEGAL_FUNCTION                                                   NTStatus      = 0xC00000AF\n\tSTATUS_PIPE_DISCONNECTED                                                  NTStatus      = 0xC00000B0\n\tSTATUS_PIPE_CLOSING                                                       NTStatus      = 0xC00000B1\n\tSTATUS_PIPE_CONNECTED                                                     NTStatus      = 0xC00000B2\n\tSTATUS_PIPE_LISTENING                                                     NTStatus      = 0xC00000B3\n\tSTATUS_INVALID_READ_MODE                                                  NTStatus      = 0xC00000B4\n\tSTATUS_IO_TIMEOUT                                                         NTStatus      = 0xC00000B5\n\tSTATUS_FILE_FORCED_CLOSED                                                 NTStatus      = 0xC00000B6\n\tSTATUS_PROFILING_NOT_STARTED                                              NTStatus      = 0xC00000B7\n\tSTATUS_PROFILING_NOT_STOPPED                                              NTStatus      = 0xC00000B8\n\tSTATUS_COULD_NOT_INTERPRET                                                NTStatus      = 0xC00000B9\n\tSTATUS_FILE_IS_A_DIRECTORY                                                NTStatus      = 0xC00000BA\n\tSTATUS_NOT_SUPPORTED                                                      NTStatus      = 0xC00000BB\n\tSTATUS_REMOTE_NOT_LISTENING                                               NTStatus      = 0xC00000BC\n\tSTATUS_DUPLICATE_NAME                                                     NTStatus      = 0xC00000BD\n\tSTATUS_BAD_NETWORK_PATH                                                   NTStatus      = 0xC00000BE\n\tSTATUS_NETWORK_BUSY                                                       NTStatus      = 0xC00000BF\n\tSTATUS_DEVICE_DOES_NOT_EXIST                                              NTStatus      = 0xC00000C0\n\tSTATUS_TOO_MANY_COMMANDS                                                  NTStatus      = 0xC00000C1\n\tSTATUS_ADAPTER_HARDWARE_ERROR                                             NTStatus      = 0xC00000C2\n\tSTATUS_INVALID_NETWORK_RESPONSE                                           NTStatus      = 0xC00000C3\n\tSTATUS_UNEXPECTED_NETWORK_ERROR                                           NTStatus      = 0xC00000C4\n\tSTATUS_BAD_REMOTE_ADAPTER                                                 NTStatus      = 0xC00000C5\n\tSTATUS_PRINT_QUEUE_FULL                                                   NTStatus      = 0xC00000C6\n\tSTATUS_NO_SPOOL_SPACE                                                     NTStatus      = 0xC00000C7\n\tSTATUS_PRINT_CANCELLED                                                    NTStatus      = 0xC00000C8\n\tSTATUS_NETWORK_NAME_DELETED                                               NTStatus      = 0xC00000C9\n\tSTATUS_NETWORK_ACCESS_DENIED                                              NTStatus      = 0xC00000CA\n\tSTATUS_BAD_DEVICE_TYPE                                                    NTStatus      = 0xC00000CB\n\tSTATUS_BAD_NETWORK_NAME                                                   NTStatus      = 0xC00000CC\n\tSTATUS_TOO_MANY_NAMES                                                     NTStatus      = 0xC00000CD\n\tSTATUS_TOO_MANY_SESSIONS                                                  NTStatus      = 0xC00000CE\n\tSTATUS_SHARING_PAUSED                                                     NTStatus      = 0xC00000CF\n\tSTATUS_REQUEST_NOT_ACCEPTED                                               NTStatus      = 0xC00000D0\n\tSTATUS_REDIRECTOR_PAUSED                                                  NTStatus      = 0xC00000D1\n\tSTATUS_NET_WRITE_FAULT                                                    NTStatus      = 0xC00000D2\n\tSTATUS_PROFILING_AT_LIMIT                                                 NTStatus      = 0xC00000D3\n\tSTATUS_NOT_SAME_DEVICE                                                    NTStatus      = 0xC00000D4\n\tSTATUS_FILE_RENAMED                                                       NTStatus      = 0xC00000D5\n\tSTATUS_VIRTUAL_CIRCUIT_CLOSED                                             NTStatus      = 0xC00000D6\n\tSTATUS_NO_SECURITY_ON_OBJECT                                              NTStatus      = 0xC00000D7\n\tSTATUS_CANT_WAIT                                                          NTStatus      = 0xC00000D8\n\tSTATUS_PIPE_EMPTY                                                         NTStatus      = 0xC00000D9\n\tSTATUS_CANT_ACCESS_DOMAIN_INFO                                            NTStatus      = 0xC00000DA\n\tSTATUS_CANT_TERMINATE_SELF                                                NTStatus      = 0xC00000DB\n\tSTATUS_INVALID_SERVER_STATE                                               NTStatus      = 0xC00000DC\n\tSTATUS_INVALID_DOMAIN_STATE                                               NTStatus      = 0xC00000DD\n\tSTATUS_INVALID_DOMAIN_ROLE                                                NTStatus      = 0xC00000DE\n\tSTATUS_NO_SUCH_DOMAIN                                                     NTStatus      = 0xC00000DF\n\tSTATUS_DOMAIN_EXISTS                                                      NTStatus      = 0xC00000E0\n\tSTATUS_DOMAIN_LIMIT_EXCEEDED                                              NTStatus      = 0xC00000E1\n\tSTATUS_OPLOCK_NOT_GRANTED                                                 NTStatus      = 0xC00000E2\n\tSTATUS_INVALID_OPLOCK_PROTOCOL                                            NTStatus      = 0xC00000E3\n\tSTATUS_INTERNAL_DB_CORRUPTION                                             NTStatus      = 0xC00000E4\n\tSTATUS_INTERNAL_ERROR                                                     NTStatus      = 0xC00000E5\n\tSTATUS_GENERIC_NOT_MAPPED                                                 NTStatus      = 0xC00000E6\n\tSTATUS_BAD_DESCRIPTOR_FORMAT                                              NTStatus      = 0xC00000E7\n\tSTATUS_INVALID_USER_BUFFER                                                NTStatus      = 0xC00000E8\n\tSTATUS_UNEXPECTED_IO_ERROR                                                NTStatus      = 0xC00000E9\n\tSTATUS_UNEXPECTED_MM_CREATE_ERR                                           NTStatus      = 0xC00000EA\n\tSTATUS_UNEXPECTED_MM_MAP_ERROR                                            NTStatus      = 0xC00000EB\n\tSTATUS_UNEXPECTED_MM_EXTEND_ERR                                           NTStatus      = 0xC00000EC\n\tSTATUS_NOT_LOGON_PROCESS                                                  NTStatus      = 0xC00000ED\n\tSTATUS_LOGON_SESSION_EXISTS                                               NTStatus      = 0xC00000EE\n\tSTATUS_INVALID_PARAMETER_1                                                NTStatus      = 0xC00000EF\n\tSTATUS_INVALID_PARAMETER_2                                                NTStatus      = 0xC00000F0\n\tSTATUS_INVALID_PARAMETER_3                                                NTStatus      = 0xC00000F1\n\tSTATUS_INVALID_PARAMETER_4                                                NTStatus      = 0xC00000F2\n\tSTATUS_INVALID_PARAMETER_5                                                NTStatus      = 0xC00000F3\n\tSTATUS_INVALID_PARAMETER_6                                                NTStatus      = 0xC00000F4\n\tSTATUS_INVALID_PARAMETER_7                                                NTStatus      = 0xC00000F5\n\tSTATUS_INVALID_PARAMETER_8                                                NTStatus      = 0xC00000F6\n\tSTATUS_INVALID_PARAMETER_9                                                NTStatus      = 0xC00000F7\n\tSTATUS_INVALID_PARAMETER_10                                               NTStatus      = 0xC00000F8\n\tSTATUS_INVALID_PARAMETER_11                                               NTStatus      = 0xC00000F9\n\tSTATUS_INVALID_PARAMETER_12                                               NTStatus      = 0xC00000FA\n\tSTATUS_REDIRECTOR_NOT_STARTED                                             NTStatus      = 0xC00000FB\n\tSTATUS_REDIRECTOR_STARTED                                                 NTStatus      = 0xC00000FC\n\tSTATUS_STACK_OVERFLOW                                                     NTStatus      = 0xC00000FD\n\tSTATUS_NO_SUCH_PACKAGE                                                    NTStatus      = 0xC00000FE\n\tSTATUS_BAD_FUNCTION_TABLE                                                 NTStatus      = 0xC00000FF\n\tSTATUS_VARIABLE_NOT_FOUND                                                 NTStatus      = 0xC0000100\n\tSTATUS_DIRECTORY_NOT_EMPTY                                                NTStatus      = 0xC0000101\n\tSTATUS_FILE_CORRUPT_ERROR                                                 NTStatus      = 0xC0000102\n\tSTATUS_NOT_A_DIRECTORY                                                    NTStatus      = 0xC0000103\n\tSTATUS_BAD_LOGON_SESSION_STATE                                            NTStatus      = 0xC0000104\n\tSTATUS_LOGON_SESSION_COLLISION                                            NTStatus      = 0xC0000105\n\tSTATUS_NAME_TOO_LONG                                                      NTStatus      = 0xC0000106\n\tSTATUS_FILES_OPEN                                                         NTStatus      = 0xC0000107\n\tSTATUS_CONNECTION_IN_USE                                                  NTStatus      = 0xC0000108\n\tSTATUS_MESSAGE_NOT_FOUND                                                  NTStatus      = 0xC0000109\n\tSTATUS_PROCESS_IS_TERMINATING                                             NTStatus      = 0xC000010A\n\tSTATUS_INVALID_LOGON_TYPE                                                 NTStatus      = 0xC000010B\n\tSTATUS_NO_GUID_TRANSLATION                                                NTStatus      = 0xC000010C\n\tSTATUS_CANNOT_IMPERSONATE                                                 NTStatus      = 0xC000010D\n\tSTATUS_IMAGE_ALREADY_LOADED                                               NTStatus      = 0xC000010E\n\tSTATUS_ABIOS_NOT_PRESENT                                                  NTStatus      = 0xC000010F\n\tSTATUS_ABIOS_LID_NOT_EXIST                                                NTStatus      = 0xC0000110\n\tSTATUS_ABIOS_LID_ALREADY_OWNED                                            NTStatus      = 0xC0000111\n\tSTATUS_ABIOS_NOT_LID_OWNER                                                NTStatus      = 0xC0000112\n\tSTATUS_ABIOS_INVALID_COMMAND                                              NTStatus      = 0xC0000113\n\tSTATUS_ABIOS_INVALID_LID                                                  NTStatus      = 0xC0000114\n\tSTATUS_ABIOS_SELECTOR_NOT_AVAILABLE                                       NTStatus      = 0xC0000115\n\tSTATUS_ABIOS_INVALID_SELECTOR                                             NTStatus      = 0xC0000116\n\tSTATUS_NO_LDT                                                             NTStatus      = 0xC0000117\n\tSTATUS_INVALID_LDT_SIZE                                                   NTStatus      = 0xC0000118\n\tSTATUS_INVALID_LDT_OFFSET                                                 NTStatus      = 0xC0000119\n\tSTATUS_INVALID_LDT_DESCRIPTOR                                             NTStatus      = 0xC000011A\n\tSTATUS_INVALID_IMAGE_NE_FORMAT                                            NTStatus      = 0xC000011B\n\tSTATUS_RXACT_INVALID_STATE                                                NTStatus      = 0xC000011C\n\tSTATUS_RXACT_COMMIT_FAILURE                                               NTStatus      = 0xC000011D\n\tSTATUS_MAPPED_FILE_SIZE_ZERO                                              NTStatus      = 0xC000011E\n\tSTATUS_TOO_MANY_OPENED_FILES                                              NTStatus      = 0xC000011F\n\tSTATUS_CANCELLED                                                          NTStatus      = 0xC0000120\n\tSTATUS_CANNOT_DELETE                                                      NTStatus      = 0xC0000121\n\tSTATUS_INVALID_COMPUTER_NAME                                              NTStatus      = 0xC0000122\n\tSTATUS_FILE_DELETED                                                       NTStatus      = 0xC0000123\n\tSTATUS_SPECIAL_ACCOUNT                                                    NTStatus      = 0xC0000124\n\tSTATUS_SPECIAL_GROUP                                                      NTStatus      = 0xC0000125\n\tSTATUS_SPECIAL_USER                                                       NTStatus      = 0xC0000126\n\tSTATUS_MEMBERS_PRIMARY_GROUP                                              NTStatus      = 0xC0000127\n\tSTATUS_FILE_CLOSED                                                        NTStatus      = 0xC0000128\n\tSTATUS_TOO_MANY_THREADS                                                   NTStatus      = 0xC0000129\n\tSTATUS_THREAD_NOT_IN_PROCESS                                              NTStatus      = 0xC000012A\n\tSTATUS_TOKEN_ALREADY_IN_USE                                               NTStatus      = 0xC000012B\n\tSTATUS_PAGEFILE_QUOTA_EXCEEDED                                            NTStatus      = 0xC000012C\n\tSTATUS_COMMITMENT_LIMIT                                                   NTStatus      = 0xC000012D\n\tSTATUS_INVALID_IMAGE_LE_FORMAT                                            NTStatus      = 0xC000012E\n\tSTATUS_INVALID_IMAGE_NOT_MZ                                               NTStatus      = 0xC000012F\n\tSTATUS_INVALID_IMAGE_PROTECT                                              NTStatus      = 0xC0000130\n\tSTATUS_INVALID_IMAGE_WIN_16                                               NTStatus      = 0xC0000131\n\tSTATUS_LOGON_SERVER_CONFLICT                                              NTStatus      = 0xC0000132\n\tSTATUS_TIME_DIFFERENCE_AT_DC                                              NTStatus      = 0xC0000133\n\tSTATUS_SYNCHRONIZATION_REQUIRED                                           NTStatus      = 0xC0000134\n\tSTATUS_DLL_NOT_FOUND                                                      NTStatus      = 0xC0000135\n\tSTATUS_OPEN_FAILED                                                        NTStatus      = 0xC0000136\n\tSTATUS_IO_PRIVILEGE_FAILED                                                NTStatus      = 0xC0000137\n\tSTATUS_ORDINAL_NOT_FOUND                                                  NTStatus      = 0xC0000138\n\tSTATUS_ENTRYPOINT_NOT_FOUND                                               NTStatus      = 0xC0000139\n\tSTATUS_CONTROL_C_EXIT                                                     NTStatus      = 0xC000013A\n\tSTATUS_LOCAL_DISCONNECT                                                   NTStatus      = 0xC000013B\n\tSTATUS_REMOTE_DISCONNECT                                                  NTStatus      = 0xC000013C\n\tSTATUS_REMOTE_RESOURCES                                                   NTStatus      = 0xC000013D\n\tSTATUS_LINK_FAILED                                                        NTStatus      = 0xC000013E\n\tSTATUS_LINK_TIMEOUT                                                       NTStatus      = 0xC000013F\n\tSTATUS_INVALID_CONNECTION                                                 NTStatus      = 0xC0000140\n\tSTATUS_INVALID_ADDRESS                                                    NTStatus      = 0xC0000141\n\tSTATUS_DLL_INIT_FAILED                                                    NTStatus      = 0xC0000142\n\tSTATUS_MISSING_SYSTEMFILE                                                 NTStatus      = 0xC0000143\n\tSTATUS_UNHANDLED_EXCEPTION                                                NTStatus      = 0xC0000144\n\tSTATUS_APP_INIT_FAILURE                                                   NTStatus      = 0xC0000145\n\tSTATUS_PAGEFILE_CREATE_FAILED                                             NTStatus      = 0xC0000146\n\tSTATUS_NO_PAGEFILE                                                        NTStatus      = 0xC0000147\n\tSTATUS_INVALID_LEVEL                                                      NTStatus      = 0xC0000148\n\tSTATUS_WRONG_PASSWORD_CORE                                                NTStatus      = 0xC0000149\n\tSTATUS_ILLEGAL_FLOAT_CONTEXT                                              NTStatus      = 0xC000014A\n\tSTATUS_PIPE_BROKEN                                                        NTStatus      = 0xC000014B\n\tSTATUS_REGISTRY_CORRUPT                                                   NTStatus      = 0xC000014C\n\tSTATUS_REGISTRY_IO_FAILED                                                 NTStatus      = 0xC000014D\n\tSTATUS_NO_EVENT_PAIR                                                      NTStatus      = 0xC000014E\n\tSTATUS_UNRECOGNIZED_VOLUME                                                NTStatus      = 0xC000014F\n\tSTATUS_SERIAL_NO_DEVICE_INITED                                            NTStatus      = 0xC0000150\n\tSTATUS_NO_SUCH_ALIAS                                                      NTStatus      = 0xC0000151\n\tSTATUS_MEMBER_NOT_IN_ALIAS                                                NTStatus      = 0xC0000152\n\tSTATUS_MEMBER_IN_ALIAS                                                    NTStatus      = 0xC0000153\n\tSTATUS_ALIAS_EXISTS                                                       NTStatus      = 0xC0000154\n\tSTATUS_LOGON_NOT_GRANTED                                                  NTStatus      = 0xC0000155\n\tSTATUS_TOO_MANY_SECRETS                                                   NTStatus      = 0xC0000156\n\tSTATUS_SECRET_TOO_LONG                                                    NTStatus      = 0xC0000157\n\tSTATUS_INTERNAL_DB_ERROR                                                  NTStatus      = 0xC0000158\n\tSTATUS_FULLSCREEN_MODE                                                    NTStatus      = 0xC0000159\n\tSTATUS_TOO_MANY_CONTEXT_IDS                                               NTStatus      = 0xC000015A\n\tSTATUS_LOGON_TYPE_NOT_GRANTED                                             NTStatus      = 0xC000015B\n\tSTATUS_NOT_REGISTRY_FILE                                                  NTStatus      = 0xC000015C\n\tSTATUS_NT_CROSS_ENCRYPTION_REQUIRED                                       NTStatus      = 0xC000015D\n\tSTATUS_DOMAIN_CTRLR_CONFIG_ERROR                                          NTStatus      = 0xC000015E\n\tSTATUS_FT_MISSING_MEMBER                                                  NTStatus      = 0xC000015F\n\tSTATUS_ILL_FORMED_SERVICE_ENTRY                                           NTStatus      = 0xC0000160\n\tSTATUS_ILLEGAL_CHARACTER                                                  NTStatus      = 0xC0000161\n\tSTATUS_UNMAPPABLE_CHARACTER                                               NTStatus      = 0xC0000162\n\tSTATUS_UNDEFINED_CHARACTER                                                NTStatus      = 0xC0000163\n\tSTATUS_FLOPPY_VOLUME                                                      NTStatus      = 0xC0000164\n\tSTATUS_FLOPPY_ID_MARK_NOT_FOUND                                           NTStatus      = 0xC0000165\n\tSTATUS_FLOPPY_WRONG_CYLINDER                                              NTStatus      = 0xC0000166\n\tSTATUS_FLOPPY_UNKNOWN_ERROR                                               NTStatus      = 0xC0000167\n\tSTATUS_FLOPPY_BAD_REGISTERS                                               NTStatus      = 0xC0000168\n\tSTATUS_DISK_RECALIBRATE_FAILED                                            NTStatus      = 0xC0000169\n\tSTATUS_DISK_OPERATION_FAILED                                              NTStatus      = 0xC000016A\n\tSTATUS_DISK_RESET_FAILED                                                  NTStatus      = 0xC000016B\n\tSTATUS_SHARED_IRQ_BUSY                                                    NTStatus      = 0xC000016C\n\tSTATUS_FT_ORPHANING                                                       NTStatus      = 0xC000016D\n\tSTATUS_BIOS_FAILED_TO_CONNECT_INTERRUPT                                   NTStatus      = 0xC000016E\n\tSTATUS_PARTITION_FAILURE                                                  NTStatus      = 0xC0000172\n\tSTATUS_INVALID_BLOCK_LENGTH                                               NTStatus      = 0xC0000173\n\tSTATUS_DEVICE_NOT_PARTITIONED                                             NTStatus      = 0xC0000174\n\tSTATUS_UNABLE_TO_LOCK_MEDIA                                               NTStatus      = 0xC0000175\n\tSTATUS_UNABLE_TO_UNLOAD_MEDIA                                             NTStatus      = 0xC0000176\n\tSTATUS_EOM_OVERFLOW                                                       NTStatus      = 0xC0000177\n\tSTATUS_NO_MEDIA                                                           NTStatus      = 0xC0000178\n\tSTATUS_NO_SUCH_MEMBER                                                     NTStatus      = 0xC000017A\n\tSTATUS_INVALID_MEMBER                                                     NTStatus      = 0xC000017B\n\tSTATUS_KEY_DELETED                                                        NTStatus      = 0xC000017C\n\tSTATUS_NO_LOG_SPACE                                                       NTStatus      = 0xC000017D\n\tSTATUS_TOO_MANY_SIDS                                                      NTStatus      = 0xC000017E\n\tSTATUS_LM_CROSS_ENCRYPTION_REQUIRED                                       NTStatus      = 0xC000017F\n\tSTATUS_KEY_HAS_CHILDREN                                                   NTStatus      = 0xC0000180\n\tSTATUS_CHILD_MUST_BE_VOLATILE                                             NTStatus      = 0xC0000181\n\tSTATUS_DEVICE_CONFIGURATION_ERROR                                         NTStatus      = 0xC0000182\n\tSTATUS_DRIVER_INTERNAL_ERROR                                              NTStatus      = 0xC0000183\n\tSTATUS_INVALID_DEVICE_STATE                                               NTStatus      = 0xC0000184\n\tSTATUS_IO_DEVICE_ERROR                                                    NTStatus      = 0xC0000185\n\tSTATUS_DEVICE_PROTOCOL_ERROR                                              NTStatus      = 0xC0000186\n\tSTATUS_BACKUP_CONTROLLER                                                  NTStatus      = 0xC0000187\n\tSTATUS_LOG_FILE_FULL                                                      NTStatus      = 0xC0000188\n\tSTATUS_TOO_LATE                                                           NTStatus      = 0xC0000189\n\tSTATUS_NO_TRUST_LSA_SECRET                                                NTStatus      = 0xC000018A\n\tSTATUS_NO_TRUST_SAM_ACCOUNT                                               NTStatus      = 0xC000018B\n\tSTATUS_TRUSTED_DOMAIN_FAILURE                                             NTStatus      = 0xC000018C\n\tSTATUS_TRUSTED_RELATIONSHIP_FAILURE                                       NTStatus      = 0xC000018D\n\tSTATUS_EVENTLOG_FILE_CORRUPT                                              NTStatus      = 0xC000018E\n\tSTATUS_EVENTLOG_CANT_START                                                NTStatus      = 0xC000018F\n\tSTATUS_TRUST_FAILURE                                                      NTStatus      = 0xC0000190\n\tSTATUS_MUTANT_LIMIT_EXCEEDED                                              NTStatus      = 0xC0000191\n\tSTATUS_NETLOGON_NOT_STARTED                                               NTStatus      = 0xC0000192\n\tSTATUS_ACCOUNT_EXPIRED                                                    NTStatus      = 0xC0000193\n\tSTATUS_POSSIBLE_DEADLOCK                                                  NTStatus      = 0xC0000194\n\tSTATUS_NETWORK_CREDENTIAL_CONFLICT                                        NTStatus      = 0xC0000195\n\tSTATUS_REMOTE_SESSION_LIMIT                                               NTStatus      = 0xC0000196\n\tSTATUS_EVENTLOG_FILE_CHANGED                                              NTStatus      = 0xC0000197\n\tSTATUS_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT                                  NTStatus      = 0xC0000198\n\tSTATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT                                  NTStatus      = 0xC0000199\n\tSTATUS_NOLOGON_SERVER_TRUST_ACCOUNT                                       NTStatus      = 0xC000019A\n\tSTATUS_DOMAIN_TRUST_INCONSISTENT                                          NTStatus      = 0xC000019B\n\tSTATUS_FS_DRIVER_REQUIRED                                                 NTStatus      = 0xC000019C\n\tSTATUS_IMAGE_ALREADY_LOADED_AS_DLL                                        NTStatus      = 0xC000019D\n\tSTATUS_INCOMPATIBLE_WITH_GLOBAL_SHORT_NAME_REGISTRY_SETTING               NTStatus      = 0xC000019E\n\tSTATUS_SHORT_NAMES_NOT_ENABLED_ON_VOLUME                                  NTStatus      = 0xC000019F\n\tSTATUS_SECURITY_STREAM_IS_INCONSISTENT                                    NTStatus      = 0xC00001A0\n\tSTATUS_INVALID_LOCK_RANGE                                                 NTStatus      = 0xC00001A1\n\tSTATUS_INVALID_ACE_CONDITION                                              NTStatus      = 0xC00001A2\n\tSTATUS_IMAGE_SUBSYSTEM_NOT_PRESENT                                        NTStatus      = 0xC00001A3\n\tSTATUS_NOTIFICATION_GUID_ALREADY_DEFINED                                  NTStatus      = 0xC00001A4\n\tSTATUS_INVALID_EXCEPTION_HANDLER                                          NTStatus      = 0xC00001A5\n\tSTATUS_DUPLICATE_PRIVILEGES                                               NTStatus      = 0xC00001A6\n\tSTATUS_NOT_ALLOWED_ON_SYSTEM_FILE                                         NTStatus      = 0xC00001A7\n\tSTATUS_REPAIR_NEEDED                                                      NTStatus      = 0xC00001A8\n\tSTATUS_QUOTA_NOT_ENABLED                                                  NTStatus      = 0xC00001A9\n\tSTATUS_NO_APPLICATION_PACKAGE                                             NTStatus      = 0xC00001AA\n\tSTATUS_FILE_METADATA_OPTIMIZATION_IN_PROGRESS                             NTStatus      = 0xC00001AB\n\tSTATUS_NOT_SAME_OBJECT                                                    NTStatus      = 0xC00001AC\n\tSTATUS_FATAL_MEMORY_EXHAUSTION                                            NTStatus      = 0xC00001AD\n\tSTATUS_ERROR_PROCESS_NOT_IN_JOB                                           NTStatus      = 0xC00001AE\n\tSTATUS_CPU_SET_INVALID                                                    NTStatus      = 0xC00001AF\n\tSTATUS_IO_DEVICE_INVALID_DATA                                             NTStatus      = 0xC00001B0\n\tSTATUS_IO_UNALIGNED_WRITE                                                 NTStatus      = 0xC00001B1\n\tSTATUS_NETWORK_OPEN_RESTRICTION                                           NTStatus      = 0xC0000201\n\tSTATUS_NO_USER_SESSION_KEY                                                NTStatus      = 0xC0000202\n\tSTATUS_USER_SESSION_DELETED                                               NTStatus      = 0xC0000203\n\tSTATUS_RESOURCE_LANG_NOT_FOUND                                            NTStatus      = 0xC0000204\n\tSTATUS_INSUFF_SERVER_RESOURCES                                            NTStatus      = 0xC0000205\n\tSTATUS_INVALID_BUFFER_SIZE                                                NTStatus      = 0xC0000206\n\tSTATUS_INVALID_ADDRESS_COMPONENT                                          NTStatus      = 0xC0000207\n\tSTATUS_INVALID_ADDRESS_WILDCARD                                           NTStatus      = 0xC0000208\n\tSTATUS_TOO_MANY_ADDRESSES                                                 NTStatus      = 0xC0000209\n\tSTATUS_ADDRESS_ALREADY_EXISTS                                             NTStatus      = 0xC000020A\n\tSTATUS_ADDRESS_CLOSED                                                     NTStatus      = 0xC000020B\n\tSTATUS_CONNECTION_DISCONNECTED                                            NTStatus      = 0xC000020C\n\tSTATUS_CONNECTION_RESET                                                   NTStatus      = 0xC000020D\n\tSTATUS_TOO_MANY_NODES                                                     NTStatus      = 0xC000020E\n\tSTATUS_TRANSACTION_ABORTED                                                NTStatus      = 0xC000020F\n\tSTATUS_TRANSACTION_TIMED_OUT                                              NTStatus      = 0xC0000210\n\tSTATUS_TRANSACTION_NO_RELEASE                                             NTStatus      = 0xC0000211\n\tSTATUS_TRANSACTION_NO_MATCH                                               NTStatus      = 0xC0000212\n\tSTATUS_TRANSACTION_RESPONDED                                              NTStatus      = 0xC0000213\n\tSTATUS_TRANSACTION_INVALID_ID                                             NTStatus      = 0xC0000214\n\tSTATUS_TRANSACTION_INVALID_TYPE                                           NTStatus      = 0xC0000215\n\tSTATUS_NOT_SERVER_SESSION                                                 NTStatus      = 0xC0000216\n\tSTATUS_NOT_CLIENT_SESSION                                                 NTStatus      = 0xC0000217\n\tSTATUS_CANNOT_LOAD_REGISTRY_FILE                                          NTStatus      = 0xC0000218\n\tSTATUS_DEBUG_ATTACH_FAILED                                                NTStatus      = 0xC0000219\n\tSTATUS_SYSTEM_PROCESS_TERMINATED                                          NTStatus      = 0xC000021A\n\tSTATUS_DATA_NOT_ACCEPTED                                                  NTStatus      = 0xC000021B\n\tSTATUS_NO_BROWSER_SERVERS_FOUND                                           NTStatus      = 0xC000021C\n\tSTATUS_VDM_HARD_ERROR                                                     NTStatus      = 0xC000021D\n\tSTATUS_DRIVER_CANCEL_TIMEOUT                                              NTStatus      = 0xC000021E\n\tSTATUS_REPLY_MESSAGE_MISMATCH                                             NTStatus      = 0xC000021F\n\tSTATUS_MAPPED_ALIGNMENT                                                   NTStatus      = 0xC0000220\n\tSTATUS_IMAGE_CHECKSUM_MISMATCH                                            NTStatus      = 0xC0000221\n\tSTATUS_LOST_WRITEBEHIND_DATA                                              NTStatus      = 0xC0000222\n\tSTATUS_CLIENT_SERVER_PARAMETERS_INVALID                                   NTStatus      = 0xC0000223\n\tSTATUS_PASSWORD_MUST_CHANGE                                               NTStatus      = 0xC0000224\n\tSTATUS_NOT_FOUND                                                          NTStatus      = 0xC0000225\n\tSTATUS_NOT_TINY_STREAM                                                    NTStatus      = 0xC0000226\n\tSTATUS_RECOVERY_FAILURE                                                   NTStatus      = 0xC0000227\n\tSTATUS_STACK_OVERFLOW_READ                                                NTStatus      = 0xC0000228\n\tSTATUS_FAIL_CHECK                                                         NTStatus      = 0xC0000229\n\tSTATUS_DUPLICATE_OBJECTID                                                 NTStatus      = 0xC000022A\n\tSTATUS_OBJECTID_EXISTS                                                    NTStatus      = 0xC000022B\n\tSTATUS_CONVERT_TO_LARGE                                                   NTStatus      = 0xC000022C\n\tSTATUS_RETRY                                                              NTStatus      = 0xC000022D\n\tSTATUS_FOUND_OUT_OF_SCOPE                                                 NTStatus      = 0xC000022E\n\tSTATUS_ALLOCATE_BUCKET                                                    NTStatus      = 0xC000022F\n\tSTATUS_PROPSET_NOT_FOUND                                                  NTStatus      = 0xC0000230\n\tSTATUS_MARSHALL_OVERFLOW                                                  NTStatus      = 0xC0000231\n\tSTATUS_INVALID_VARIANT                                                    NTStatus      = 0xC0000232\n\tSTATUS_DOMAIN_CONTROLLER_NOT_FOUND                                        NTStatus      = 0xC0000233\n\tSTATUS_ACCOUNT_LOCKED_OUT                                                 NTStatus      = 0xC0000234\n\tSTATUS_HANDLE_NOT_CLOSABLE                                                NTStatus      = 0xC0000235\n\tSTATUS_CONNECTION_REFUSED                                                 NTStatus      = 0xC0000236\n\tSTATUS_GRACEFUL_DISCONNECT                                                NTStatus      = 0xC0000237\n\tSTATUS_ADDRESS_ALREADY_ASSOCIATED                                         NTStatus      = 0xC0000238\n\tSTATUS_ADDRESS_NOT_ASSOCIATED                                             NTStatus      = 0xC0000239\n\tSTATUS_CONNECTION_INVALID                                                 NTStatus      = 0xC000023A\n\tSTATUS_CONNECTION_ACTIVE                                                  NTStatus      = 0xC000023B\n\tSTATUS_NETWORK_UNREACHABLE                                                NTStatus      = 0xC000023C\n\tSTATUS_HOST_UNREACHABLE                                                   NTStatus      = 0xC000023D\n\tSTATUS_PROTOCOL_UNREACHABLE                                               NTStatus      = 0xC000023E\n\tSTATUS_PORT_UNREACHABLE                                                   NTStatus      = 0xC000023F\n\tSTATUS_REQUEST_ABORTED                                                    NTStatus      = 0xC0000240\n\tSTATUS_CONNECTION_ABORTED                                                 NTStatus      = 0xC0000241\n\tSTATUS_BAD_COMPRESSION_BUFFER                                             NTStatus      = 0xC0000242\n\tSTATUS_USER_MAPPED_FILE                                                   NTStatus      = 0xC0000243\n\tSTATUS_AUDIT_FAILED                                                       NTStatus      = 0xC0000244\n\tSTATUS_TIMER_RESOLUTION_NOT_SET                                           NTStatus      = 0xC0000245\n\tSTATUS_CONNECTION_COUNT_LIMIT                                             NTStatus      = 0xC0000246\n\tSTATUS_LOGIN_TIME_RESTRICTION                                             NTStatus      = 0xC0000247\n\tSTATUS_LOGIN_WKSTA_RESTRICTION                                            NTStatus      = 0xC0000248\n\tSTATUS_IMAGE_MP_UP_MISMATCH                                               NTStatus      = 0xC0000249\n\tSTATUS_INSUFFICIENT_LOGON_INFO                                            NTStatus      = 0xC0000250\n\tSTATUS_BAD_DLL_ENTRYPOINT                                                 NTStatus      = 0xC0000251\n\tSTATUS_BAD_SERVICE_ENTRYPOINT                                             NTStatus      = 0xC0000252\n\tSTATUS_LPC_REPLY_LOST                                                     NTStatus      = 0xC0000253\n\tSTATUS_IP_ADDRESS_CONFLICT1                                               NTStatus      = 0xC0000254\n\tSTATUS_IP_ADDRESS_CONFLICT2                                               NTStatus      = 0xC0000255\n\tSTATUS_REGISTRY_QUOTA_LIMIT                                               NTStatus      = 0xC0000256\n\tSTATUS_PATH_NOT_COVERED                                                   NTStatus      = 0xC0000257\n\tSTATUS_NO_CALLBACK_ACTIVE                                                 NTStatus      = 0xC0000258\n\tSTATUS_LICENSE_QUOTA_EXCEEDED                                             NTStatus      = 0xC0000259\n\tSTATUS_PWD_TOO_SHORT                                                      NTStatus      = 0xC000025A\n\tSTATUS_PWD_TOO_RECENT                                                     NTStatus      = 0xC000025B\n\tSTATUS_PWD_HISTORY_CONFLICT                                               NTStatus      = 0xC000025C\n\tSTATUS_PLUGPLAY_NO_DEVICE                                                 NTStatus      = 0xC000025E\n\tSTATUS_UNSUPPORTED_COMPRESSION                                            NTStatus      = 0xC000025F\n\tSTATUS_INVALID_HW_PROFILE                                                 NTStatus      = 0xC0000260\n\tSTATUS_INVALID_PLUGPLAY_DEVICE_PATH                                       NTStatus      = 0xC0000261\n\tSTATUS_DRIVER_ORDINAL_NOT_FOUND                                           NTStatus      = 0xC0000262\n\tSTATUS_DRIVER_ENTRYPOINT_NOT_FOUND                                        NTStatus      = 0xC0000263\n\tSTATUS_RESOURCE_NOT_OWNED                                                 NTStatus      = 0xC0000264\n\tSTATUS_TOO_MANY_LINKS                                                     NTStatus      = 0xC0000265\n\tSTATUS_QUOTA_LIST_INCONSISTENT                                            NTStatus      = 0xC0000266\n\tSTATUS_FILE_IS_OFFLINE                                                    NTStatus      = 0xC0000267\n\tSTATUS_EVALUATION_EXPIRATION                                              NTStatus      = 0xC0000268\n\tSTATUS_ILLEGAL_DLL_RELOCATION                                             NTStatus      = 0xC0000269\n\tSTATUS_LICENSE_VIOLATION                                                  NTStatus      = 0xC000026A\n\tSTATUS_DLL_INIT_FAILED_LOGOFF                                             NTStatus      = 0xC000026B\n\tSTATUS_DRIVER_UNABLE_TO_LOAD                                              NTStatus      = 0xC000026C\n\tSTATUS_DFS_UNAVAILABLE                                                    NTStatus      = 0xC000026D\n\tSTATUS_VOLUME_DISMOUNTED                                                  NTStatus      = 0xC000026E\n\tSTATUS_WX86_INTERNAL_ERROR                                                NTStatus      = 0xC000026F\n\tSTATUS_WX86_FLOAT_STACK_CHECK                                             NTStatus      = 0xC0000270\n\tSTATUS_VALIDATE_CONTINUE                                                  NTStatus      = 0xC0000271\n\tSTATUS_NO_MATCH                                                           NTStatus      = 0xC0000272\n\tSTATUS_NO_MORE_MATCHES                                                    NTStatus      = 0xC0000273\n\tSTATUS_NOT_A_REPARSE_POINT                                                NTStatus      = 0xC0000275\n\tSTATUS_IO_REPARSE_TAG_INVALID                                             NTStatus      = 0xC0000276\n\tSTATUS_IO_REPARSE_TAG_MISMATCH                                            NTStatus      = 0xC0000277\n\tSTATUS_IO_REPARSE_DATA_INVALID                                            NTStatus      = 0xC0000278\n\tSTATUS_IO_REPARSE_TAG_NOT_HANDLED                                         NTStatus      = 0xC0000279\n\tSTATUS_PWD_TOO_LONG                                                       NTStatus      = 0xC000027A\n\tSTATUS_STOWED_EXCEPTION                                                   NTStatus      = 0xC000027B\n\tSTATUS_CONTEXT_STOWED_EXCEPTION                                           NTStatus      = 0xC000027C\n\tSTATUS_REPARSE_POINT_NOT_RESOLVED                                         NTStatus      = 0xC0000280\n\tSTATUS_DIRECTORY_IS_A_REPARSE_POINT                                       NTStatus      = 0xC0000281\n\tSTATUS_RANGE_LIST_CONFLICT                                                NTStatus      = 0xC0000282\n\tSTATUS_SOURCE_ELEMENT_EMPTY                                               NTStatus      = 0xC0000283\n\tSTATUS_DESTINATION_ELEMENT_FULL                                           NTStatus      = 0xC0000284\n\tSTATUS_ILLEGAL_ELEMENT_ADDRESS                                            NTStatus      = 0xC0000285\n\tSTATUS_MAGAZINE_NOT_PRESENT                                               NTStatus      = 0xC0000286\n\tSTATUS_REINITIALIZATION_NEEDED                                            NTStatus      = 0xC0000287\n\tSTATUS_DEVICE_REQUIRES_CLEANING                                           NTStatus      = 0x80000288\n\tSTATUS_DEVICE_DOOR_OPEN                                                   NTStatus      = 0x80000289\n\tSTATUS_ENCRYPTION_FAILED                                                  NTStatus      = 0xC000028A\n\tSTATUS_DECRYPTION_FAILED                                                  NTStatus      = 0xC000028B\n\tSTATUS_RANGE_NOT_FOUND                                                    NTStatus      = 0xC000028C\n\tSTATUS_NO_RECOVERY_POLICY                                                 NTStatus      = 0xC000028D\n\tSTATUS_NO_EFS                                                             NTStatus      = 0xC000028E\n\tSTATUS_WRONG_EFS                                                          NTStatus      = 0xC000028F\n\tSTATUS_NO_USER_KEYS                                                       NTStatus      = 0xC0000290\n\tSTATUS_FILE_NOT_ENCRYPTED                                                 NTStatus      = 0xC0000291\n\tSTATUS_NOT_EXPORT_FORMAT                                                  NTStatus      = 0xC0000292\n\tSTATUS_FILE_ENCRYPTED                                                     NTStatus      = 0xC0000293\n\tSTATUS_WAKE_SYSTEM                                                        NTStatus      = 0x40000294\n\tSTATUS_WMI_GUID_NOT_FOUND                                                 NTStatus      = 0xC0000295\n\tSTATUS_WMI_INSTANCE_NOT_FOUND                                             NTStatus      = 0xC0000296\n\tSTATUS_WMI_ITEMID_NOT_FOUND                                               NTStatus      = 0xC0000297\n\tSTATUS_WMI_TRY_AGAIN                                                      NTStatus      = 0xC0000298\n\tSTATUS_SHARED_POLICY                                                      NTStatus      = 0xC0000299\n\tSTATUS_POLICY_OBJECT_NOT_FOUND                                            NTStatus      = 0xC000029A\n\tSTATUS_POLICY_ONLY_IN_DS                                                  NTStatus      = 0xC000029B\n\tSTATUS_VOLUME_NOT_UPGRADED                                                NTStatus      = 0xC000029C\n\tSTATUS_REMOTE_STORAGE_NOT_ACTIVE                                          NTStatus      = 0xC000029D\n\tSTATUS_REMOTE_STORAGE_MEDIA_ERROR                                         NTStatus      = 0xC000029E\n\tSTATUS_NO_TRACKING_SERVICE                                                NTStatus      = 0xC000029F\n\tSTATUS_SERVER_SID_MISMATCH                                                NTStatus      = 0xC00002A0\n\tSTATUS_DS_NO_ATTRIBUTE_OR_VALUE                                           NTStatus      = 0xC00002A1\n\tSTATUS_DS_INVALID_ATTRIBUTE_SYNTAX                                        NTStatus      = 0xC00002A2\n\tSTATUS_DS_ATTRIBUTE_TYPE_UNDEFINED                                        NTStatus      = 0xC00002A3\n\tSTATUS_DS_ATTRIBUTE_OR_VALUE_EXISTS                                       NTStatus      = 0xC00002A4\n\tSTATUS_DS_BUSY                                                            NTStatus      = 0xC00002A5\n\tSTATUS_DS_UNAVAILABLE                                                     NTStatus      = 0xC00002A6\n\tSTATUS_DS_NO_RIDS_ALLOCATED                                               NTStatus      = 0xC00002A7\n\tSTATUS_DS_NO_MORE_RIDS                                                    NTStatus      = 0xC00002A8\n\tSTATUS_DS_INCORRECT_ROLE_OWNER                                            NTStatus      = 0xC00002A9\n\tSTATUS_DS_RIDMGR_INIT_ERROR                                               NTStatus      = 0xC00002AA\n\tSTATUS_DS_OBJ_CLASS_VIOLATION                                             NTStatus      = 0xC00002AB\n\tSTATUS_DS_CANT_ON_NON_LEAF                                                NTStatus      = 0xC00002AC\n\tSTATUS_DS_CANT_ON_RDN                                                     NTStatus      = 0xC00002AD\n\tSTATUS_DS_CANT_MOD_OBJ_CLASS                                              NTStatus      = 0xC00002AE\n\tSTATUS_DS_CROSS_DOM_MOVE_FAILED                                           NTStatus      = 0xC00002AF\n\tSTATUS_DS_GC_NOT_AVAILABLE                                                NTStatus      = 0xC00002B0\n\tSTATUS_DIRECTORY_SERVICE_REQUIRED                                         NTStatus      = 0xC00002B1\n\tSTATUS_REPARSE_ATTRIBUTE_CONFLICT                                         NTStatus      = 0xC00002B2\n\tSTATUS_CANT_ENABLE_DENY_ONLY                                              NTStatus      = 0xC00002B3\n\tSTATUS_FLOAT_MULTIPLE_FAULTS                                              NTStatus      = 0xC00002B4\n\tSTATUS_FLOAT_MULTIPLE_TRAPS                                               NTStatus      = 0xC00002B5\n\tSTATUS_DEVICE_REMOVED                                                     NTStatus      = 0xC00002B6\n\tSTATUS_JOURNAL_DELETE_IN_PROGRESS                                         NTStatus      = 0xC00002B7\n\tSTATUS_JOURNAL_NOT_ACTIVE                                                 NTStatus      = 0xC00002B8\n\tSTATUS_NOINTERFACE                                                        NTStatus      = 0xC00002B9\n\tSTATUS_DS_RIDMGR_DISABLED                                                 NTStatus      = 0xC00002BA\n\tSTATUS_DS_ADMIN_LIMIT_EXCEEDED                                            NTStatus      = 0xC00002C1\n\tSTATUS_DRIVER_FAILED_SLEEP                                                NTStatus      = 0xC00002C2\n\tSTATUS_MUTUAL_AUTHENTICATION_FAILED                                       NTStatus      = 0xC00002C3\n\tSTATUS_CORRUPT_SYSTEM_FILE                                                NTStatus      = 0xC00002C4\n\tSTATUS_DATATYPE_MISALIGNMENT_ERROR                                        NTStatus      = 0xC00002C5\n\tSTATUS_WMI_READ_ONLY                                                      NTStatus      = 0xC00002C6\n\tSTATUS_WMI_SET_FAILURE                                                    NTStatus      = 0xC00002C7\n\tSTATUS_COMMITMENT_MINIMUM                                                 NTStatus      = 0xC00002C8\n\tSTATUS_REG_NAT_CONSUMPTION                                                NTStatus      = 0xC00002C9\n\tSTATUS_TRANSPORT_FULL                                                     NTStatus      = 0xC00002CA\n\tSTATUS_DS_SAM_INIT_FAILURE                                                NTStatus      = 0xC00002CB\n\tSTATUS_ONLY_IF_CONNECTED                                                  NTStatus      = 0xC00002CC\n\tSTATUS_DS_SENSITIVE_GROUP_VIOLATION                                       NTStatus      = 0xC00002CD\n\tSTATUS_PNP_RESTART_ENUMERATION                                            NTStatus      = 0xC00002CE\n\tSTATUS_JOURNAL_ENTRY_DELETED                                              NTStatus      = 0xC00002CF\n\tSTATUS_DS_CANT_MOD_PRIMARYGROUPID                                         NTStatus      = 0xC00002D0\n\tSTATUS_SYSTEM_IMAGE_BAD_SIGNATURE                                         NTStatus      = 0xC00002D1\n\tSTATUS_PNP_REBOOT_REQUIRED                                                NTStatus      = 0xC00002D2\n\tSTATUS_POWER_STATE_INVALID                                                NTStatus      = 0xC00002D3\n\tSTATUS_DS_INVALID_GROUP_TYPE                                              NTStatus      = 0xC00002D4\n\tSTATUS_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN                              NTStatus      = 0xC00002D5\n\tSTATUS_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN                               NTStatus      = 0xC00002D6\n\tSTATUS_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER                                   NTStatus      = 0xC00002D7\n\tSTATUS_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER                               NTStatus      = 0xC00002D8\n\tSTATUS_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER                                NTStatus      = 0xC00002D9\n\tSTATUS_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER                             NTStatus      = 0xC00002DA\n\tSTATUS_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER                        NTStatus      = 0xC00002DB\n\tSTATUS_DS_HAVE_PRIMARY_MEMBERS                                            NTStatus      = 0xC00002DC\n\tSTATUS_WMI_NOT_SUPPORTED                                                  NTStatus      = 0xC00002DD\n\tSTATUS_INSUFFICIENT_POWER                                                 NTStatus      = 0xC00002DE\n\tSTATUS_SAM_NEED_BOOTKEY_PASSWORD                                          NTStatus      = 0xC00002DF\n\tSTATUS_SAM_NEED_BOOTKEY_FLOPPY                                            NTStatus      = 0xC00002E0\n\tSTATUS_DS_CANT_START                                                      NTStatus      = 0xC00002E1\n\tSTATUS_DS_INIT_FAILURE                                                    NTStatus      = 0xC00002E2\n\tSTATUS_SAM_INIT_FAILURE                                                   NTStatus      = 0xC00002E3\n\tSTATUS_DS_GC_REQUIRED                                                     NTStatus      = 0xC00002E4\n\tSTATUS_DS_LOCAL_MEMBER_OF_LOCAL_ONLY                                      NTStatus      = 0xC00002E5\n\tSTATUS_DS_NO_FPO_IN_UNIVERSAL_GROUPS                                      NTStatus      = 0xC00002E6\n\tSTATUS_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED                                  NTStatus      = 0xC00002E7\n\tSTATUS_MULTIPLE_FAULT_VIOLATION                                           NTStatus      = 0xC00002E8\n\tSTATUS_CURRENT_DOMAIN_NOT_ALLOWED                                         NTStatus      = 0xC00002E9\n\tSTATUS_CANNOT_MAKE                                                        NTStatus      = 0xC00002EA\n\tSTATUS_SYSTEM_SHUTDOWN                                                    NTStatus      = 0xC00002EB\n\tSTATUS_DS_INIT_FAILURE_CONSOLE                                            NTStatus      = 0xC00002EC\n\tSTATUS_DS_SAM_INIT_FAILURE_CONSOLE                                        NTStatus      = 0xC00002ED\n\tSTATUS_UNFINISHED_CONTEXT_DELETED                                         NTStatus      = 0xC00002EE\n\tSTATUS_NO_TGT_REPLY                                                       NTStatus      = 0xC00002EF\n\tSTATUS_OBJECTID_NOT_FOUND                                                 NTStatus      = 0xC00002F0\n\tSTATUS_NO_IP_ADDRESSES                                                    NTStatus      = 0xC00002F1\n\tSTATUS_WRONG_CREDENTIAL_HANDLE                                            NTStatus      = 0xC00002F2\n\tSTATUS_CRYPTO_SYSTEM_INVALID                                              NTStatus      = 0xC00002F3\n\tSTATUS_MAX_REFERRALS_EXCEEDED                                             NTStatus      = 0xC00002F4\n\tSTATUS_MUST_BE_KDC                                                        NTStatus      = 0xC00002F5\n\tSTATUS_STRONG_CRYPTO_NOT_SUPPORTED                                        NTStatus      = 0xC00002F6\n\tSTATUS_TOO_MANY_PRINCIPALS                                                NTStatus      = 0xC00002F7\n\tSTATUS_NO_PA_DATA                                                         NTStatus      = 0xC00002F8\n\tSTATUS_PKINIT_NAME_MISMATCH                                               NTStatus      = 0xC00002F9\n\tSTATUS_SMARTCARD_LOGON_REQUIRED                                           NTStatus      = 0xC00002FA\n\tSTATUS_KDC_INVALID_REQUEST                                                NTStatus      = 0xC00002FB\n\tSTATUS_KDC_UNABLE_TO_REFER                                                NTStatus      = 0xC00002FC\n\tSTATUS_KDC_UNKNOWN_ETYPE                                                  NTStatus      = 0xC00002FD\n\tSTATUS_SHUTDOWN_IN_PROGRESS                                               NTStatus      = 0xC00002FE\n\tSTATUS_SERVER_SHUTDOWN_IN_PROGRESS                                        NTStatus      = 0xC00002FF\n\tSTATUS_NOT_SUPPORTED_ON_SBS                                               NTStatus      = 0xC0000300\n\tSTATUS_WMI_GUID_DISCONNECTED                                              NTStatus      = 0xC0000301\n\tSTATUS_WMI_ALREADY_DISABLED                                               NTStatus      = 0xC0000302\n\tSTATUS_WMI_ALREADY_ENABLED                                                NTStatus      = 0xC0000303\n\tSTATUS_MFT_TOO_FRAGMENTED                                                 NTStatus      = 0xC0000304\n\tSTATUS_COPY_PROTECTION_FAILURE                                            NTStatus      = 0xC0000305\n\tSTATUS_CSS_AUTHENTICATION_FAILURE                                         NTStatus      = 0xC0000306\n\tSTATUS_CSS_KEY_NOT_PRESENT                                                NTStatus      = 0xC0000307\n\tSTATUS_CSS_KEY_NOT_ESTABLISHED                                            NTStatus      = 0xC0000308\n\tSTATUS_CSS_SCRAMBLED_SECTOR                                               NTStatus      = 0xC0000309\n\tSTATUS_CSS_REGION_MISMATCH                                                NTStatus      = 0xC000030A\n\tSTATUS_CSS_RESETS_EXHAUSTED                                               NTStatus      = 0xC000030B\n\tSTATUS_PASSWORD_CHANGE_REQUIRED                                           NTStatus      = 0xC000030C\n\tSTATUS_LOST_MODE_LOGON_RESTRICTION                                        NTStatus      = 0xC000030D\n\tSTATUS_PKINIT_FAILURE                                                     NTStatus      = 0xC0000320\n\tSTATUS_SMARTCARD_SUBSYSTEM_FAILURE                                        NTStatus      = 0xC0000321\n\tSTATUS_NO_KERB_KEY                                                        NTStatus      = 0xC0000322\n\tSTATUS_HOST_DOWN                                                          NTStatus      = 0xC0000350\n\tSTATUS_UNSUPPORTED_PREAUTH                                                NTStatus      = 0xC0000351\n\tSTATUS_EFS_ALG_BLOB_TOO_BIG                                               NTStatus      = 0xC0000352\n\tSTATUS_PORT_NOT_SET                                                       NTStatus      = 0xC0000353\n\tSTATUS_DEBUGGER_INACTIVE                                                  NTStatus      = 0xC0000354\n\tSTATUS_DS_VERSION_CHECK_FAILURE                                           NTStatus      = 0xC0000355\n\tSTATUS_AUDITING_DISABLED                                                  NTStatus      = 0xC0000356\n\tSTATUS_PRENT4_MACHINE_ACCOUNT                                             NTStatus      = 0xC0000357\n\tSTATUS_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER                                   NTStatus      = 0xC0000358\n\tSTATUS_INVALID_IMAGE_WIN_32                                               NTStatus      = 0xC0000359\n\tSTATUS_INVALID_IMAGE_WIN_64                                               NTStatus      = 0xC000035A\n\tSTATUS_BAD_BINDINGS                                                       NTStatus      = 0xC000035B\n\tSTATUS_NETWORK_SESSION_EXPIRED                                            NTStatus      = 0xC000035C\n\tSTATUS_APPHELP_BLOCK                                                      NTStatus      = 0xC000035D\n\tSTATUS_ALL_SIDS_FILTERED                                                  NTStatus      = 0xC000035E\n\tSTATUS_NOT_SAFE_MODE_DRIVER                                               NTStatus      = 0xC000035F\n\tSTATUS_ACCESS_DISABLED_BY_POLICY_DEFAULT                                  NTStatus      = 0xC0000361\n\tSTATUS_ACCESS_DISABLED_BY_POLICY_PATH                                     NTStatus      = 0xC0000362\n\tSTATUS_ACCESS_DISABLED_BY_POLICY_PUBLISHER                                NTStatus      = 0xC0000363\n\tSTATUS_ACCESS_DISABLED_BY_POLICY_OTHER                                    NTStatus      = 0xC0000364\n\tSTATUS_FAILED_DRIVER_ENTRY                                                NTStatus      = 0xC0000365\n\tSTATUS_DEVICE_ENUMERATION_ERROR                                           NTStatus      = 0xC0000366\n\tSTATUS_MOUNT_POINT_NOT_RESOLVED                                           NTStatus      = 0xC0000368\n\tSTATUS_INVALID_DEVICE_OBJECT_PARAMETER                                    NTStatus      = 0xC0000369\n\tSTATUS_MCA_OCCURED                                                        NTStatus      = 0xC000036A\n\tSTATUS_DRIVER_BLOCKED_CRITICAL                                            NTStatus      = 0xC000036B\n\tSTATUS_DRIVER_BLOCKED                                                     NTStatus      = 0xC000036C\n\tSTATUS_DRIVER_DATABASE_ERROR                                              NTStatus      = 0xC000036D\n\tSTATUS_SYSTEM_HIVE_TOO_LARGE                                              NTStatus      = 0xC000036E\n\tSTATUS_INVALID_IMPORT_OF_NON_DLL                                          NTStatus      = 0xC000036F\n\tSTATUS_DS_SHUTTING_DOWN                                                   NTStatus      = 0x40000370\n\tSTATUS_NO_SECRETS                                                         NTStatus      = 0xC0000371\n\tSTATUS_ACCESS_DISABLED_NO_SAFER_UI_BY_POLICY                              NTStatus      = 0xC0000372\n\tSTATUS_FAILED_STACK_SWITCH                                                NTStatus      = 0xC0000373\n\tSTATUS_HEAP_CORRUPTION                                                    NTStatus      = 0xC0000374\n\tSTATUS_SMARTCARD_WRONG_PIN                                                NTStatus      = 0xC0000380\n\tSTATUS_SMARTCARD_CARD_BLOCKED                                             NTStatus      = 0xC0000381\n\tSTATUS_SMARTCARD_CARD_NOT_AUTHENTICATED                                   NTStatus      = 0xC0000382\n\tSTATUS_SMARTCARD_NO_CARD                                                  NTStatus      = 0xC0000383\n\tSTATUS_SMARTCARD_NO_KEY_CONTAINER                                         NTStatus      = 0xC0000384\n\tSTATUS_SMARTCARD_NO_CERTIFICATE                                           NTStatus      = 0xC0000385\n\tSTATUS_SMARTCARD_NO_KEYSET                                                NTStatus      = 0xC0000386\n\tSTATUS_SMARTCARD_IO_ERROR                                                 NTStatus      = 0xC0000387\n\tSTATUS_DOWNGRADE_DETECTED                                                 NTStatus      = 0xC0000388\n\tSTATUS_SMARTCARD_CERT_REVOKED                                             NTStatus      = 0xC0000389\n\tSTATUS_ISSUING_CA_UNTRUSTED                                               NTStatus      = 0xC000038A\n\tSTATUS_REVOCATION_OFFLINE_C                                               NTStatus      = 0xC000038B\n\tSTATUS_PKINIT_CLIENT_FAILURE                                              NTStatus      = 0xC000038C\n\tSTATUS_SMARTCARD_CERT_EXPIRED                                             NTStatus      = 0xC000038D\n\tSTATUS_DRIVER_FAILED_PRIOR_UNLOAD                                         NTStatus      = 0xC000038E\n\tSTATUS_SMARTCARD_SILENT_CONTEXT                                           NTStatus      = 0xC000038F\n\tSTATUS_PER_USER_TRUST_QUOTA_EXCEEDED                                      NTStatus      = 0xC0000401\n\tSTATUS_ALL_USER_TRUST_QUOTA_EXCEEDED                                      NTStatus      = 0xC0000402\n\tSTATUS_USER_DELETE_TRUST_QUOTA_EXCEEDED                                   NTStatus      = 0xC0000403\n\tSTATUS_DS_NAME_NOT_UNIQUE                                                 NTStatus      = 0xC0000404\n\tSTATUS_DS_DUPLICATE_ID_FOUND                                              NTStatus      = 0xC0000405\n\tSTATUS_DS_GROUP_CONVERSION_ERROR                                          NTStatus      = 0xC0000406\n\tSTATUS_VOLSNAP_PREPARE_HIBERNATE                                          NTStatus      = 0xC0000407\n\tSTATUS_USER2USER_REQUIRED                                                 NTStatus      = 0xC0000408\n\tSTATUS_STACK_BUFFER_OVERRUN                                               NTStatus      = 0xC0000409\n\tSTATUS_NO_S4U_PROT_SUPPORT                                                NTStatus      = 0xC000040A\n\tSTATUS_CROSSREALM_DELEGATION_FAILURE                                      NTStatus      = 0xC000040B\n\tSTATUS_REVOCATION_OFFLINE_KDC                                             NTStatus      = 0xC000040C\n\tSTATUS_ISSUING_CA_UNTRUSTED_KDC                                           NTStatus      = 0xC000040D\n\tSTATUS_KDC_CERT_EXPIRED                                                   NTStatus      = 0xC000040E\n\tSTATUS_KDC_CERT_REVOKED                                                   NTStatus      = 0xC000040F\n\tSTATUS_PARAMETER_QUOTA_EXCEEDED                                           NTStatus      = 0xC0000410\n\tSTATUS_HIBERNATION_FAILURE                                                NTStatus      = 0xC0000411\n\tSTATUS_DELAY_LOAD_FAILED                                                  NTStatus      = 0xC0000412\n\tSTATUS_AUTHENTICATION_FIREWALL_FAILED                                     NTStatus      = 0xC0000413\n\tSTATUS_VDM_DISALLOWED                                                     NTStatus      = 0xC0000414\n\tSTATUS_HUNG_DISPLAY_DRIVER_THREAD                                         NTStatus      = 0xC0000415\n\tSTATUS_INSUFFICIENT_RESOURCE_FOR_SPECIFIED_SHARED_SECTION_SIZE            NTStatus      = 0xC0000416\n\tSTATUS_INVALID_CRUNTIME_PARAMETER                                         NTStatus      = 0xC0000417\n\tSTATUS_NTLM_BLOCKED                                                       NTStatus      = 0xC0000418\n\tSTATUS_DS_SRC_SID_EXISTS_IN_FOREST                                        NTStatus      = 0xC0000419\n\tSTATUS_DS_DOMAIN_NAME_EXISTS_IN_FOREST                                    NTStatus      = 0xC000041A\n\tSTATUS_DS_FLAT_NAME_EXISTS_IN_FOREST                                      NTStatus      = 0xC000041B\n\tSTATUS_INVALID_USER_PRINCIPAL_NAME                                        NTStatus      = 0xC000041C\n\tSTATUS_FATAL_USER_CALLBACK_EXCEPTION                                      NTStatus      = 0xC000041D\n\tSTATUS_ASSERTION_FAILURE                                                  NTStatus      = 0xC0000420\n\tSTATUS_VERIFIER_STOP                                                      NTStatus      = 0xC0000421\n\tSTATUS_CALLBACK_POP_STACK                                                 NTStatus      = 0xC0000423\n\tSTATUS_INCOMPATIBLE_DRIVER_BLOCKED                                        NTStatus      = 0xC0000424\n\tSTATUS_HIVE_UNLOADED                                                      NTStatus      = 0xC0000425\n\tSTATUS_COMPRESSION_DISABLED                                               NTStatus      = 0xC0000426\n\tSTATUS_FILE_SYSTEM_LIMITATION                                             NTStatus      = 0xC0000427\n\tSTATUS_INVALID_IMAGE_HASH                                                 NTStatus      = 0xC0000428\n\tSTATUS_NOT_CAPABLE                                                        NTStatus      = 0xC0000429\n\tSTATUS_REQUEST_OUT_OF_SEQUENCE                                            NTStatus      = 0xC000042A\n\tSTATUS_IMPLEMENTATION_LIMIT                                               NTStatus      = 0xC000042B\n\tSTATUS_ELEVATION_REQUIRED                                                 NTStatus      = 0xC000042C\n\tSTATUS_NO_SECURITY_CONTEXT                                                NTStatus      = 0xC000042D\n\tSTATUS_PKU2U_CERT_FAILURE                                                 NTStatus      = 0xC000042F\n\tSTATUS_BEYOND_VDL                                                         NTStatus      = 0xC0000432\n\tSTATUS_ENCOUNTERED_WRITE_IN_PROGRESS                                      NTStatus      = 0xC0000433\n\tSTATUS_PTE_CHANGED                                                        NTStatus      = 0xC0000434\n\tSTATUS_PURGE_FAILED                                                       NTStatus      = 0xC0000435\n\tSTATUS_CRED_REQUIRES_CONFIRMATION                                         NTStatus      = 0xC0000440\n\tSTATUS_CS_ENCRYPTION_INVALID_SERVER_RESPONSE                              NTStatus      = 0xC0000441\n\tSTATUS_CS_ENCRYPTION_UNSUPPORTED_SERVER                                   NTStatus      = 0xC0000442\n\tSTATUS_CS_ENCRYPTION_EXISTING_ENCRYPTED_FILE                              NTStatus      = 0xC0000443\n\tSTATUS_CS_ENCRYPTION_NEW_ENCRYPTED_FILE                                   NTStatus      = 0xC0000444\n\tSTATUS_CS_ENCRYPTION_FILE_NOT_CSE                                         NTStatus      = 0xC0000445\n\tSTATUS_INVALID_LABEL                                                      NTStatus      = 0xC0000446\n\tSTATUS_DRIVER_PROCESS_TERMINATED                                          NTStatus      = 0xC0000450\n\tSTATUS_AMBIGUOUS_SYSTEM_DEVICE                                            NTStatus      = 0xC0000451\n\tSTATUS_SYSTEM_DEVICE_NOT_FOUND                                            NTStatus      = 0xC0000452\n\tSTATUS_RESTART_BOOT_APPLICATION                                           NTStatus      = 0xC0000453\n\tSTATUS_INSUFFICIENT_NVRAM_RESOURCES                                       NTStatus      = 0xC0000454\n\tSTATUS_INVALID_SESSION                                                    NTStatus      = 0xC0000455\n\tSTATUS_THREAD_ALREADY_IN_SESSION                                          NTStatus      = 0xC0000456\n\tSTATUS_THREAD_NOT_IN_SESSION                                              NTStatus      = 0xC0000457\n\tSTATUS_INVALID_WEIGHT                                                     NTStatus      = 0xC0000458\n\tSTATUS_REQUEST_PAUSED                                                     NTStatus      = 0xC0000459\n\tSTATUS_NO_RANGES_PROCESSED                                                NTStatus      = 0xC0000460\n\tSTATUS_DISK_RESOURCES_EXHAUSTED                                           NTStatus      = 0xC0000461\n\tSTATUS_NEEDS_REMEDIATION                                                  NTStatus      = 0xC0000462\n\tSTATUS_DEVICE_FEATURE_NOT_SUPPORTED                                       NTStatus      = 0xC0000463\n\tSTATUS_DEVICE_UNREACHABLE                                                 NTStatus      = 0xC0000464\n\tSTATUS_INVALID_TOKEN                                                      NTStatus      = 0xC0000465\n\tSTATUS_SERVER_UNAVAILABLE                                                 NTStatus      = 0xC0000466\n\tSTATUS_FILE_NOT_AVAILABLE                                                 NTStatus      = 0xC0000467\n\tSTATUS_DEVICE_INSUFFICIENT_RESOURCES                                      NTStatus      = 0xC0000468\n\tSTATUS_PACKAGE_UPDATING                                                   NTStatus      = 0xC0000469\n\tSTATUS_NOT_READ_FROM_COPY                                                 NTStatus      = 0xC000046A\n\tSTATUS_FT_WRITE_FAILURE                                                   NTStatus      = 0xC000046B\n\tSTATUS_FT_DI_SCAN_REQUIRED                                                NTStatus      = 0xC000046C\n\tSTATUS_OBJECT_NOT_EXTERNALLY_BACKED                                       NTStatus      = 0xC000046D\n\tSTATUS_EXTERNAL_BACKING_PROVIDER_UNKNOWN                                  NTStatus      = 0xC000046E\n\tSTATUS_COMPRESSION_NOT_BENEFICIAL                                         NTStatus      = 0xC000046F\n\tSTATUS_DATA_CHECKSUM_ERROR                                                NTStatus      = 0xC0000470\n\tSTATUS_INTERMIXED_KERNEL_EA_OPERATION                                     NTStatus      = 0xC0000471\n\tSTATUS_TRIM_READ_ZERO_NOT_SUPPORTED                                       NTStatus      = 0xC0000472\n\tSTATUS_TOO_MANY_SEGMENT_DESCRIPTORS                                       NTStatus      = 0xC0000473\n\tSTATUS_INVALID_OFFSET_ALIGNMENT                                           NTStatus      = 0xC0000474\n\tSTATUS_INVALID_FIELD_IN_PARAMETER_LIST                                    NTStatus      = 0xC0000475\n\tSTATUS_OPERATION_IN_PROGRESS                                              NTStatus      = 0xC0000476\n\tSTATUS_INVALID_INITIATOR_TARGET_PATH                                      NTStatus      = 0xC0000477\n\tSTATUS_SCRUB_DATA_DISABLED                                                NTStatus      = 0xC0000478\n\tSTATUS_NOT_REDUNDANT_STORAGE                                              NTStatus      = 0xC0000479\n\tSTATUS_RESIDENT_FILE_NOT_SUPPORTED                                        NTStatus      = 0xC000047A\n\tSTATUS_COMPRESSED_FILE_NOT_SUPPORTED                                      NTStatus      = 0xC000047B\n\tSTATUS_DIRECTORY_NOT_SUPPORTED                                            NTStatus      = 0xC000047C\n\tSTATUS_IO_OPERATION_TIMEOUT                                               NTStatus      = 0xC000047D\n\tSTATUS_SYSTEM_NEEDS_REMEDIATION                                           NTStatus      = 0xC000047E\n\tSTATUS_APPX_INTEGRITY_FAILURE_CLR_NGEN                                    NTStatus      = 0xC000047F\n\tSTATUS_SHARE_UNAVAILABLE                                                  NTStatus      = 0xC0000480\n\tSTATUS_APISET_NOT_HOSTED                                                  NTStatus      = 0xC0000481\n\tSTATUS_APISET_NOT_PRESENT                                                 NTStatus      = 0xC0000482\n\tSTATUS_DEVICE_HARDWARE_ERROR                                              NTStatus      = 0xC0000483\n\tSTATUS_FIRMWARE_SLOT_INVALID                                              NTStatus      = 0xC0000484\n\tSTATUS_FIRMWARE_IMAGE_INVALID                                             NTStatus      = 0xC0000485\n\tSTATUS_STORAGE_TOPOLOGY_ID_MISMATCH                                       NTStatus      = 0xC0000486\n\tSTATUS_WIM_NOT_BOOTABLE                                                   NTStatus      = 0xC0000487\n\tSTATUS_BLOCKED_BY_PARENTAL_CONTROLS                                       NTStatus      = 0xC0000488\n\tSTATUS_NEEDS_REGISTRATION                                                 NTStatus      = 0xC0000489\n\tSTATUS_QUOTA_ACTIVITY                                                     NTStatus      = 0xC000048A\n\tSTATUS_CALLBACK_INVOKE_INLINE                                             NTStatus      = 0xC000048B\n\tSTATUS_BLOCK_TOO_MANY_REFERENCES                                          NTStatus      = 0xC000048C\n\tSTATUS_MARKED_TO_DISALLOW_WRITES                                          NTStatus      = 0xC000048D\n\tSTATUS_NETWORK_ACCESS_DENIED_EDP                                          NTStatus      = 0xC000048E\n\tSTATUS_ENCLAVE_FAILURE                                                    NTStatus      = 0xC000048F\n\tSTATUS_PNP_NO_COMPAT_DRIVERS                                              NTStatus      = 0xC0000490\n\tSTATUS_PNP_DRIVER_PACKAGE_NOT_FOUND                                       NTStatus      = 0xC0000491\n\tSTATUS_PNP_DRIVER_CONFIGURATION_NOT_FOUND                                 NTStatus      = 0xC0000492\n\tSTATUS_PNP_DRIVER_CONFIGURATION_INCOMPLETE                                NTStatus      = 0xC0000493\n\tSTATUS_PNP_FUNCTION_DRIVER_REQUIRED                                       NTStatus      = 0xC0000494\n\tSTATUS_PNP_DEVICE_CONFIGURATION_PENDING                                   NTStatus      = 0xC0000495\n\tSTATUS_DEVICE_HINT_NAME_BUFFER_TOO_SMALL                                  NTStatus      = 0xC0000496\n\tSTATUS_PACKAGE_NOT_AVAILABLE                                              NTStatus      = 0xC0000497\n\tSTATUS_DEVICE_IN_MAINTENANCE                                              NTStatus      = 0xC0000499\n\tSTATUS_NOT_SUPPORTED_ON_DAX                                               NTStatus      = 0xC000049A\n\tSTATUS_FREE_SPACE_TOO_FRAGMENTED                                          NTStatus      = 0xC000049B\n\tSTATUS_DAX_MAPPING_EXISTS                                                 NTStatus      = 0xC000049C\n\tSTATUS_CHILD_PROCESS_BLOCKED                                              NTStatus      = 0xC000049D\n\tSTATUS_STORAGE_LOST_DATA_PERSISTENCE                                      NTStatus      = 0xC000049E\n\tSTATUS_VRF_CFG_ENABLED                                                    NTStatus      = 0xC000049F\n\tSTATUS_PARTITION_TERMINATING                                              NTStatus      = 0xC00004A0\n\tSTATUS_EXTERNAL_SYSKEY_NOT_SUPPORTED                                      NTStatus      = 0xC00004A1\n\tSTATUS_ENCLAVE_VIOLATION                                                  NTStatus      = 0xC00004A2\n\tSTATUS_FILE_PROTECTED_UNDER_DPL                                           NTStatus      = 0xC00004A3\n\tSTATUS_VOLUME_NOT_CLUSTER_ALIGNED                                         NTStatus      = 0xC00004A4\n\tSTATUS_NO_PHYSICALLY_ALIGNED_FREE_SPACE_FOUND                             NTStatus      = 0xC00004A5\n\tSTATUS_APPX_FILE_NOT_ENCRYPTED                                            NTStatus      = 0xC00004A6\n\tSTATUS_RWRAW_ENCRYPTED_FILE_NOT_ENCRYPTED                                 NTStatus      = 0xC00004A7\n\tSTATUS_RWRAW_ENCRYPTED_INVALID_EDATAINFO_FILEOFFSET                       NTStatus      = 0xC00004A8\n\tSTATUS_RWRAW_ENCRYPTED_INVALID_EDATAINFO_FILERANGE                        NTStatus      = 0xC00004A9\n\tSTATUS_RWRAW_ENCRYPTED_INVALID_EDATAINFO_PARAMETER                        NTStatus      = 0xC00004AA\n\tSTATUS_FT_READ_FAILURE                                                    NTStatus      = 0xC00004AB\n\tSTATUS_PATCH_CONFLICT                                                     NTStatus      = 0xC00004AC\n\tSTATUS_STORAGE_RESERVE_ID_INVALID                                         NTStatus      = 0xC00004AD\n\tSTATUS_STORAGE_RESERVE_DOES_NOT_EXIST                                     NTStatus      = 0xC00004AE\n\tSTATUS_STORAGE_RESERVE_ALREADY_EXISTS                                     NTStatus      = 0xC00004AF\n\tSTATUS_STORAGE_RESERVE_NOT_EMPTY                                          NTStatus      = 0xC00004B0\n\tSTATUS_NOT_A_DAX_VOLUME                                                   NTStatus      = 0xC00004B1\n\tSTATUS_NOT_DAX_MAPPABLE                                                   NTStatus      = 0xC00004B2\n\tSTATUS_CASE_DIFFERING_NAMES_IN_DIR                                        NTStatus      = 0xC00004B3\n\tSTATUS_FILE_NOT_SUPPORTED                                                 NTStatus      = 0xC00004B4\n\tSTATUS_NOT_SUPPORTED_WITH_BTT                                             NTStatus      = 0xC00004B5\n\tSTATUS_ENCRYPTION_DISABLED                                                NTStatus      = 0xC00004B6\n\tSTATUS_ENCRYPTING_METADATA_DISALLOWED                                     NTStatus      = 0xC00004B7\n\tSTATUS_CANT_CLEAR_ENCRYPTION_FLAG                                         NTStatus      = 0xC00004B8\n\tSTATUS_INVALID_TASK_NAME                                                  NTStatus      = 0xC0000500\n\tSTATUS_INVALID_TASK_INDEX                                                 NTStatus      = 0xC0000501\n\tSTATUS_THREAD_ALREADY_IN_TASK                                             NTStatus      = 0xC0000502\n\tSTATUS_CALLBACK_BYPASS                                                    NTStatus      = 0xC0000503\n\tSTATUS_UNDEFINED_SCOPE                                                    NTStatus      = 0xC0000504\n\tSTATUS_INVALID_CAP                                                        NTStatus      = 0xC0000505\n\tSTATUS_NOT_GUI_PROCESS                                                    NTStatus      = 0xC0000506\n\tSTATUS_DEVICE_HUNG                                                        NTStatus      = 0xC0000507\n\tSTATUS_CONTAINER_ASSIGNED                                                 NTStatus      = 0xC0000508\n\tSTATUS_JOB_NO_CONTAINER                                                   NTStatus      = 0xC0000509\n\tSTATUS_DEVICE_UNRESPONSIVE                                                NTStatus      = 0xC000050A\n\tSTATUS_REPARSE_POINT_ENCOUNTERED                                          NTStatus      = 0xC000050B\n\tSTATUS_ATTRIBUTE_NOT_PRESENT                                              NTStatus      = 0xC000050C\n\tSTATUS_NOT_A_TIERED_VOLUME                                                NTStatus      = 0xC000050D\n\tSTATUS_ALREADY_HAS_STREAM_ID                                              NTStatus      = 0xC000050E\n\tSTATUS_JOB_NOT_EMPTY                                                      NTStatus      = 0xC000050F\n\tSTATUS_ALREADY_INITIALIZED                                                NTStatus      = 0xC0000510\n\tSTATUS_ENCLAVE_NOT_TERMINATED                                             NTStatus      = 0xC0000511\n\tSTATUS_ENCLAVE_IS_TERMINATING                                             NTStatus      = 0xC0000512\n\tSTATUS_SMB1_NOT_AVAILABLE                                                 NTStatus      = 0xC0000513\n\tSTATUS_SMR_GARBAGE_COLLECTION_REQUIRED                                    NTStatus      = 0xC0000514\n\tSTATUS_INTERRUPTED                                                        NTStatus      = 0xC0000515\n\tSTATUS_THREAD_NOT_RUNNING                                                 NTStatus      = 0xC0000516\n\tSTATUS_FAIL_FAST_EXCEPTION                                                NTStatus      = 0xC0000602\n\tSTATUS_IMAGE_CERT_REVOKED                                                 NTStatus      = 0xC0000603\n\tSTATUS_DYNAMIC_CODE_BLOCKED                                               NTStatus      = 0xC0000604\n\tSTATUS_IMAGE_CERT_EXPIRED                                                 NTStatus      = 0xC0000605\n\tSTATUS_STRICT_CFG_VIOLATION                                               NTStatus      = 0xC0000606\n\tSTATUS_SET_CONTEXT_DENIED                                                 NTStatus      = 0xC000060A\n\tSTATUS_CROSS_PARTITION_VIOLATION                                          NTStatus      = 0xC000060B\n\tSTATUS_PORT_CLOSED                                                        NTStatus      = 0xC0000700\n\tSTATUS_MESSAGE_LOST                                                       NTStatus      = 0xC0000701\n\tSTATUS_INVALID_MESSAGE                                                    NTStatus      = 0xC0000702\n\tSTATUS_REQUEST_CANCELED                                                   NTStatus      = 0xC0000703\n\tSTATUS_RECURSIVE_DISPATCH                                                 NTStatus      = 0xC0000704\n\tSTATUS_LPC_RECEIVE_BUFFER_EXPECTED                                        NTStatus      = 0xC0000705\n\tSTATUS_LPC_INVALID_CONNECTION_USAGE                                       NTStatus      = 0xC0000706\n\tSTATUS_LPC_REQUESTS_NOT_ALLOWED                                           NTStatus      = 0xC0000707\n\tSTATUS_RESOURCE_IN_USE                                                    NTStatus      = 0xC0000708\n\tSTATUS_HARDWARE_MEMORY_ERROR                                              NTStatus      = 0xC0000709\n\tSTATUS_THREADPOOL_HANDLE_EXCEPTION                                        NTStatus      = 0xC000070A\n\tSTATUS_THREADPOOL_SET_EVENT_ON_COMPLETION_FAILED                          NTStatus      = 0xC000070B\n\tSTATUS_THREADPOOL_RELEASE_SEMAPHORE_ON_COMPLETION_FAILED                  NTStatus      = 0xC000070C\n\tSTATUS_THREADPOOL_RELEASE_MUTEX_ON_COMPLETION_FAILED                      NTStatus      = 0xC000070D\n\tSTATUS_THREADPOOL_FREE_LIBRARY_ON_COMPLETION_FAILED                       NTStatus      = 0xC000070E\n\tSTATUS_THREADPOOL_RELEASED_DURING_OPERATION                               NTStatus      = 0xC000070F\n\tSTATUS_CALLBACK_RETURNED_WHILE_IMPERSONATING                              NTStatus      = 0xC0000710\n\tSTATUS_APC_RETURNED_WHILE_IMPERSONATING                                   NTStatus      = 0xC0000711\n\tSTATUS_PROCESS_IS_PROTECTED                                               NTStatus      = 0xC0000712\n\tSTATUS_MCA_EXCEPTION                                                      NTStatus      = 0xC0000713\n\tSTATUS_CERTIFICATE_MAPPING_NOT_UNIQUE                                     NTStatus      = 0xC0000714\n\tSTATUS_SYMLINK_CLASS_DISABLED                                             NTStatus      = 0xC0000715\n\tSTATUS_INVALID_IDN_NORMALIZATION                                          NTStatus      = 0xC0000716\n\tSTATUS_NO_UNICODE_TRANSLATION                                             NTStatus      = 0xC0000717\n\tSTATUS_ALREADY_REGISTERED                                                 NTStatus      = 0xC0000718\n\tSTATUS_CONTEXT_MISMATCH                                                   NTStatus      = 0xC0000719\n\tSTATUS_PORT_ALREADY_HAS_COMPLETION_LIST                                   NTStatus      = 0xC000071A\n\tSTATUS_CALLBACK_RETURNED_THREAD_PRIORITY                                  NTStatus      = 0xC000071B\n\tSTATUS_INVALID_THREAD                                                     NTStatus      = 0xC000071C\n\tSTATUS_CALLBACK_RETURNED_TRANSACTION                                      NTStatus      = 0xC000071D\n\tSTATUS_CALLBACK_RETURNED_LDR_LOCK                                         NTStatus      = 0xC000071E\n\tSTATUS_CALLBACK_RETURNED_LANG                                             NTStatus      = 0xC000071F\n\tSTATUS_CALLBACK_RETURNED_PRI_BACK                                         NTStatus      = 0xC0000720\n\tSTATUS_CALLBACK_RETURNED_THREAD_AFFINITY                                  NTStatus      = 0xC0000721\n\tSTATUS_LPC_HANDLE_COUNT_EXCEEDED                                          NTStatus      = 0xC0000722\n\tSTATUS_EXECUTABLE_MEMORY_WRITE                                            NTStatus      = 0xC0000723\n\tSTATUS_KERNEL_EXECUTABLE_MEMORY_WRITE                                     NTStatus      = 0xC0000724\n\tSTATUS_ATTACHED_EXECUTABLE_MEMORY_WRITE                                   NTStatus      = 0xC0000725\n\tSTATUS_TRIGGERED_EXECUTABLE_MEMORY_WRITE                                  NTStatus      = 0xC0000726\n\tSTATUS_DISK_REPAIR_DISABLED                                               NTStatus      = 0xC0000800\n\tSTATUS_DS_DOMAIN_RENAME_IN_PROGRESS                                       NTStatus      = 0xC0000801\n\tSTATUS_DISK_QUOTA_EXCEEDED                                                NTStatus      = 0xC0000802\n\tSTATUS_DATA_LOST_REPAIR                                                   NTStatus      = 0x80000803\n\tSTATUS_CONTENT_BLOCKED                                                    NTStatus      = 0xC0000804\n\tSTATUS_BAD_CLUSTERS                                                       NTStatus      = 0xC0000805\n\tSTATUS_VOLUME_DIRTY                                                       NTStatus      = 0xC0000806\n\tSTATUS_DISK_REPAIR_REDIRECTED                                             NTStatus      = 0x40000807\n\tSTATUS_DISK_REPAIR_UNSUCCESSFUL                                           NTStatus      = 0xC0000808\n\tSTATUS_CORRUPT_LOG_OVERFULL                                               NTStatus      = 0xC0000809\n\tSTATUS_CORRUPT_LOG_CORRUPTED                                              NTStatus      = 0xC000080A\n\tSTATUS_CORRUPT_LOG_UNAVAILABLE                                            NTStatus      = 0xC000080B\n\tSTATUS_CORRUPT_LOG_DELETED_FULL                                           NTStatus      = 0xC000080C\n\tSTATUS_CORRUPT_LOG_CLEARED                                                NTStatus      = 0xC000080D\n\tSTATUS_ORPHAN_NAME_EXHAUSTED                                              NTStatus      = 0xC000080E\n\tSTATUS_PROACTIVE_SCAN_IN_PROGRESS                                         NTStatus      = 0xC000080F\n\tSTATUS_ENCRYPTED_IO_NOT_POSSIBLE                                          NTStatus      = 0xC0000810\n\tSTATUS_CORRUPT_LOG_UPLEVEL_RECORDS                                        NTStatus      = 0xC0000811\n\tSTATUS_FILE_CHECKED_OUT                                                   NTStatus      = 0xC0000901\n\tSTATUS_CHECKOUT_REQUIRED                                                  NTStatus      = 0xC0000902\n\tSTATUS_BAD_FILE_TYPE                                                      NTStatus      = 0xC0000903\n\tSTATUS_FILE_TOO_LARGE                                                     NTStatus      = 0xC0000904\n\tSTATUS_FORMS_AUTH_REQUIRED                                                NTStatus      = 0xC0000905\n\tSTATUS_VIRUS_INFECTED                                                     NTStatus      = 0xC0000906\n\tSTATUS_VIRUS_DELETED                                                      NTStatus      = 0xC0000907\n\tSTATUS_BAD_MCFG_TABLE                                                     NTStatus      = 0xC0000908\n\tSTATUS_CANNOT_BREAK_OPLOCK                                                NTStatus      = 0xC0000909\n\tSTATUS_BAD_KEY                                                            NTStatus      = 0xC000090A\n\tSTATUS_BAD_DATA                                                           NTStatus      = 0xC000090B\n\tSTATUS_NO_KEY                                                             NTStatus      = 0xC000090C\n\tSTATUS_FILE_HANDLE_REVOKED                                                NTStatus      = 0xC0000910\n\tSTATUS_WOW_ASSERTION                                                      NTStatus      = 0xC0009898\n\tSTATUS_INVALID_SIGNATURE                                                  NTStatus      = 0xC000A000\n\tSTATUS_HMAC_NOT_SUPPORTED                                                 NTStatus      = 0xC000A001\n\tSTATUS_AUTH_TAG_MISMATCH                                                  NTStatus      = 0xC000A002\n\tSTATUS_INVALID_STATE_TRANSITION                                           NTStatus      = 0xC000A003\n\tSTATUS_INVALID_KERNEL_INFO_VERSION                                        NTStatus      = 0xC000A004\n\tSTATUS_INVALID_PEP_INFO_VERSION                                           NTStatus      = 0xC000A005\n\tSTATUS_HANDLE_REVOKED                                                     NTStatus      = 0xC000A006\n\tSTATUS_EOF_ON_GHOSTED_RANGE                                               NTStatus      = 0xC000A007\n\tSTATUS_IPSEC_QUEUE_OVERFLOW                                               NTStatus      = 0xC000A010\n\tSTATUS_ND_QUEUE_OVERFLOW                                                  NTStatus      = 0xC000A011\n\tSTATUS_HOPLIMIT_EXCEEDED                                                  NTStatus      = 0xC000A012\n\tSTATUS_PROTOCOL_NOT_SUPPORTED                                             NTStatus      = 0xC000A013\n\tSTATUS_FASTPATH_REJECTED                                                  NTStatus      = 0xC000A014\n\tSTATUS_LOST_WRITEBEHIND_DATA_NETWORK_DISCONNECTED                         NTStatus      = 0xC000A080\n\tSTATUS_LOST_WRITEBEHIND_DATA_NETWORK_SERVER_ERROR                         NTStatus      = 0xC000A081\n\tSTATUS_LOST_WRITEBEHIND_DATA_LOCAL_DISK_ERROR                             NTStatus      = 0xC000A082\n\tSTATUS_XML_PARSE_ERROR                                                    NTStatus      = 0xC000A083\n\tSTATUS_XMLDSIG_ERROR                                                      NTStatus      = 0xC000A084\n\tSTATUS_WRONG_COMPARTMENT                                                  NTStatus      = 0xC000A085\n\tSTATUS_AUTHIP_FAILURE                                                     NTStatus      = 0xC000A086\n\tSTATUS_DS_OID_MAPPED_GROUP_CANT_HAVE_MEMBERS                              NTStatus      = 0xC000A087\n\tSTATUS_DS_OID_NOT_FOUND                                                   NTStatus      = 0xC000A088\n\tSTATUS_INCORRECT_ACCOUNT_TYPE                                             NTStatus      = 0xC000A089\n\tSTATUS_HASH_NOT_SUPPORTED                                                 NTStatus      = 0xC000A100\n\tSTATUS_HASH_NOT_PRESENT                                                   NTStatus      = 0xC000A101\n\tSTATUS_SECONDARY_IC_PROVIDER_NOT_REGISTERED                               NTStatus      = 0xC000A121\n\tSTATUS_GPIO_CLIENT_INFORMATION_INVALID                                    NTStatus      = 0xC000A122\n\tSTATUS_GPIO_VERSION_NOT_SUPPORTED                                         NTStatus      = 0xC000A123\n\tSTATUS_GPIO_INVALID_REGISTRATION_PACKET                                   NTStatus      = 0xC000A124\n\tSTATUS_GPIO_OPERATION_DENIED                                              NTStatus      = 0xC000A125\n\tSTATUS_GPIO_INCOMPATIBLE_CONNECT_MODE                                     NTStatus      = 0xC000A126\n\tSTATUS_GPIO_INTERRUPT_ALREADY_UNMASKED                                    NTStatus      = 0x8000A127\n\tSTATUS_CANNOT_SWITCH_RUNLEVEL                                             NTStatus      = 0xC000A141\n\tSTATUS_INVALID_RUNLEVEL_SETTING                                           NTStatus      = 0xC000A142\n\tSTATUS_RUNLEVEL_SWITCH_TIMEOUT                                            NTStatus      = 0xC000A143\n\tSTATUS_SERVICES_FAILED_AUTOSTART                                          NTStatus      = 0x4000A144\n\tSTATUS_RUNLEVEL_SWITCH_AGENT_TIMEOUT                                      NTStatus      = 0xC000A145\n\tSTATUS_RUNLEVEL_SWITCH_IN_PROGRESS                                        NTStatus      = 0xC000A146\n\tSTATUS_NOT_APPCONTAINER                                                   NTStatus      = 0xC000A200\n\tSTATUS_NOT_SUPPORTED_IN_APPCONTAINER                                      NTStatus      = 0xC000A201\n\tSTATUS_INVALID_PACKAGE_SID_LENGTH                                         NTStatus      = 0xC000A202\n\tSTATUS_LPAC_ACCESS_DENIED                                                 NTStatus      = 0xC000A203\n\tSTATUS_ADMINLESS_ACCESS_DENIED                                            NTStatus      = 0xC000A204\n\tSTATUS_APP_DATA_NOT_FOUND                                                 NTStatus      = 0xC000A281\n\tSTATUS_APP_DATA_EXPIRED                                                   NTStatus      = 0xC000A282\n\tSTATUS_APP_DATA_CORRUPT                                                   NTStatus      = 0xC000A283\n\tSTATUS_APP_DATA_LIMIT_EXCEEDED                                            NTStatus      = 0xC000A284\n\tSTATUS_APP_DATA_REBOOT_REQUIRED                                           NTStatus      = 0xC000A285\n\tSTATUS_OFFLOAD_READ_FLT_NOT_SUPPORTED                                     NTStatus      = 0xC000A2A1\n\tSTATUS_OFFLOAD_WRITE_FLT_NOT_SUPPORTED                                    NTStatus      = 0xC000A2A2\n\tSTATUS_OFFLOAD_READ_FILE_NOT_SUPPORTED                                    NTStatus      = 0xC000A2A3\n\tSTATUS_OFFLOAD_WRITE_FILE_NOT_SUPPORTED                                   NTStatus      = 0xC000A2A4\n\tSTATUS_WOF_WIM_HEADER_CORRUPT                                             NTStatus      = 0xC000A2A5\n\tSTATUS_WOF_WIM_RESOURCE_TABLE_CORRUPT                                     NTStatus      = 0xC000A2A6\n\tSTATUS_WOF_FILE_RESOURCE_TABLE_CORRUPT                                    NTStatus      = 0xC000A2A7\n\tSTATUS_FILE_SYSTEM_VIRTUALIZATION_UNAVAILABLE                             NTStatus      = 0xC000CE01\n\tSTATUS_FILE_SYSTEM_VIRTUALIZATION_METADATA_CORRUPT                        NTStatus      = 0xC000CE02\n\tSTATUS_FILE_SYSTEM_VIRTUALIZATION_BUSY                                    NTStatus      = 0xC000CE03\n\tSTATUS_FILE_SYSTEM_VIRTUALIZATION_PROVIDER_UNKNOWN                        NTStatus      = 0xC000CE04\n\tSTATUS_FILE_SYSTEM_VIRTUALIZATION_INVALID_OPERATION                       NTStatus      = 0xC000CE05\n\tSTATUS_CLOUD_FILE_SYNC_ROOT_METADATA_CORRUPT                              NTStatus      = 0xC000CF00\n\tSTATUS_CLOUD_FILE_PROVIDER_NOT_RUNNING                                    NTStatus      = 0xC000CF01\n\tSTATUS_CLOUD_FILE_METADATA_CORRUPT                                        NTStatus      = 0xC000CF02\n\tSTATUS_CLOUD_FILE_METADATA_TOO_LARGE                                      NTStatus      = 0xC000CF03\n\tSTATUS_CLOUD_FILE_PROPERTY_BLOB_TOO_LARGE                                 NTStatus      = 0x8000CF04\n\tSTATUS_CLOUD_FILE_TOO_MANY_PROPERTY_BLOBS                                 NTStatus      = 0x8000CF05\n\tSTATUS_CLOUD_FILE_PROPERTY_VERSION_NOT_SUPPORTED                          NTStatus      = 0xC000CF06\n\tSTATUS_NOT_A_CLOUD_FILE                                                   NTStatus      = 0xC000CF07\n\tSTATUS_CLOUD_FILE_NOT_IN_SYNC                                             NTStatus      = 0xC000CF08\n\tSTATUS_CLOUD_FILE_ALREADY_CONNECTED                                       NTStatus      = 0xC000CF09\n\tSTATUS_CLOUD_FILE_NOT_SUPPORTED                                           NTStatus      = 0xC000CF0A\n\tSTATUS_CLOUD_FILE_INVALID_REQUEST                                         NTStatus      = 0xC000CF0B\n\tSTATUS_CLOUD_FILE_READ_ONLY_VOLUME                                        NTStatus      = 0xC000CF0C\n\tSTATUS_CLOUD_FILE_CONNECTED_PROVIDER_ONLY                                 NTStatus      = 0xC000CF0D\n\tSTATUS_CLOUD_FILE_VALIDATION_FAILED                                       NTStatus      = 0xC000CF0E\n\tSTATUS_CLOUD_FILE_AUTHENTICATION_FAILED                                   NTStatus      = 0xC000CF0F\n\tSTATUS_CLOUD_FILE_INSUFFICIENT_RESOURCES                                  NTStatus      = 0xC000CF10\n\tSTATUS_CLOUD_FILE_NETWORK_UNAVAILABLE                                     NTStatus      = 0xC000CF11\n\tSTATUS_CLOUD_FILE_UNSUCCESSFUL                                            NTStatus      = 0xC000CF12\n\tSTATUS_CLOUD_FILE_NOT_UNDER_SYNC_ROOT                                     NTStatus      = 0xC000CF13\n\tSTATUS_CLOUD_FILE_IN_USE                                                  NTStatus      = 0xC000CF14\n\tSTATUS_CLOUD_FILE_PINNED                                                  NTStatus      = 0xC000CF15\n\tSTATUS_CLOUD_FILE_REQUEST_ABORTED                                         NTStatus      = 0xC000CF16\n\tSTATUS_CLOUD_FILE_PROPERTY_CORRUPT                                        NTStatus      = 0xC000CF17\n\tSTATUS_CLOUD_FILE_ACCESS_DENIED                                           NTStatus      = 0xC000CF18\n\tSTATUS_CLOUD_FILE_INCOMPATIBLE_HARDLINKS                                  NTStatus      = 0xC000CF19\n\tSTATUS_CLOUD_FILE_PROPERTY_LOCK_CONFLICT                                  NTStatus      = 0xC000CF1A\n\tSTATUS_CLOUD_FILE_REQUEST_CANCELED                                        NTStatus      = 0xC000CF1B\n\tSTATUS_CLOUD_FILE_PROVIDER_TERMINATED                                     NTStatus      = 0xC000CF1D\n\tSTATUS_NOT_A_CLOUD_SYNC_ROOT                                              NTStatus      = 0xC000CF1E\n\tSTATUS_CLOUD_FILE_REQUEST_TIMEOUT                                         NTStatus      = 0xC000CF1F\n\tSTATUS_ACPI_INVALID_OPCODE                                                NTStatus      = 0xC0140001\n\tSTATUS_ACPI_STACK_OVERFLOW                                                NTStatus      = 0xC0140002\n\tSTATUS_ACPI_ASSERT_FAILED                                                 NTStatus      = 0xC0140003\n\tSTATUS_ACPI_INVALID_INDEX                                                 NTStatus      = 0xC0140004\n\tSTATUS_ACPI_INVALID_ARGUMENT                                              NTStatus      = 0xC0140005\n\tSTATUS_ACPI_FATAL                                                         NTStatus      = 0xC0140006\n\tSTATUS_ACPI_INVALID_SUPERNAME                                             NTStatus      = 0xC0140007\n\tSTATUS_ACPI_INVALID_ARGTYPE                                               NTStatus      = 0xC0140008\n\tSTATUS_ACPI_INVALID_OBJTYPE                                               NTStatus      = 0xC0140009\n\tSTATUS_ACPI_INVALID_TARGETTYPE                                            NTStatus      = 0xC014000A\n\tSTATUS_ACPI_INCORRECT_ARGUMENT_COUNT                                      NTStatus      = 0xC014000B\n\tSTATUS_ACPI_ADDRESS_NOT_MAPPED                                            NTStatus      = 0xC014000C\n\tSTATUS_ACPI_INVALID_EVENTTYPE                                             NTStatus      = 0xC014000D\n\tSTATUS_ACPI_HANDLER_COLLISION                                             NTStatus      = 0xC014000E\n\tSTATUS_ACPI_INVALID_DATA                                                  NTStatus      = 0xC014000F\n\tSTATUS_ACPI_INVALID_REGION                                                NTStatus      = 0xC0140010\n\tSTATUS_ACPI_INVALID_ACCESS_SIZE                                           NTStatus      = 0xC0140011\n\tSTATUS_ACPI_ACQUIRE_GLOBAL_LOCK                                           NTStatus      = 0xC0140012\n\tSTATUS_ACPI_ALREADY_INITIALIZED                                           NTStatus      = 0xC0140013\n\tSTATUS_ACPI_NOT_INITIALIZED                                               NTStatus      = 0xC0140014\n\tSTATUS_ACPI_INVALID_MUTEX_LEVEL                                           NTStatus      = 0xC0140015\n\tSTATUS_ACPI_MUTEX_NOT_OWNED                                               NTStatus      = 0xC0140016\n\tSTATUS_ACPI_MUTEX_NOT_OWNER                                               NTStatus      = 0xC0140017\n\tSTATUS_ACPI_RS_ACCESS                                                     NTStatus      = 0xC0140018\n\tSTATUS_ACPI_INVALID_TABLE                                                 NTStatus      = 0xC0140019\n\tSTATUS_ACPI_REG_HANDLER_FAILED                                            NTStatus      = 0xC0140020\n\tSTATUS_ACPI_POWER_REQUEST_FAILED                                          NTStatus      = 0xC0140021\n\tSTATUS_CTX_WINSTATION_NAME_INVALID                                        NTStatus      = 0xC00A0001\n\tSTATUS_CTX_INVALID_PD                                                     NTStatus      = 0xC00A0002\n\tSTATUS_CTX_PD_NOT_FOUND                                                   NTStatus      = 0xC00A0003\n\tSTATUS_CTX_CDM_CONNECT                                                    NTStatus      = 0x400A0004\n\tSTATUS_CTX_CDM_DISCONNECT                                                 NTStatus      = 0x400A0005\n\tSTATUS_CTX_CLOSE_PENDING                                                  NTStatus      = 0xC00A0006\n\tSTATUS_CTX_NO_OUTBUF                                                      NTStatus      = 0xC00A0007\n\tSTATUS_CTX_MODEM_INF_NOT_FOUND                                            NTStatus      = 0xC00A0008\n\tSTATUS_CTX_INVALID_MODEMNAME                                              NTStatus      = 0xC00A0009\n\tSTATUS_CTX_RESPONSE_ERROR                                                 NTStatus      = 0xC00A000A\n\tSTATUS_CTX_MODEM_RESPONSE_TIMEOUT                                         NTStatus      = 0xC00A000B\n\tSTATUS_CTX_MODEM_RESPONSE_NO_CARRIER                                      NTStatus      = 0xC00A000C\n\tSTATUS_CTX_MODEM_RESPONSE_NO_DIALTONE                                     NTStatus      = 0xC00A000D\n\tSTATUS_CTX_MODEM_RESPONSE_BUSY                                            NTStatus      = 0xC00A000E\n\tSTATUS_CTX_MODEM_RESPONSE_VOICE                                           NTStatus      = 0xC00A000F\n\tSTATUS_CTX_TD_ERROR                                                       NTStatus      = 0xC00A0010\n\tSTATUS_CTX_LICENSE_CLIENT_INVALID                                         NTStatus      = 0xC00A0012\n\tSTATUS_CTX_LICENSE_NOT_AVAILABLE                                          NTStatus      = 0xC00A0013\n\tSTATUS_CTX_LICENSE_EXPIRED                                                NTStatus      = 0xC00A0014\n\tSTATUS_CTX_WINSTATION_NOT_FOUND                                           NTStatus      = 0xC00A0015\n\tSTATUS_CTX_WINSTATION_NAME_COLLISION                                      NTStatus      = 0xC00A0016\n\tSTATUS_CTX_WINSTATION_BUSY                                                NTStatus      = 0xC00A0017\n\tSTATUS_CTX_BAD_VIDEO_MODE                                                 NTStatus      = 0xC00A0018\n\tSTATUS_CTX_GRAPHICS_INVALID                                               NTStatus      = 0xC00A0022\n\tSTATUS_CTX_NOT_CONSOLE                                                    NTStatus      = 0xC00A0024\n\tSTATUS_CTX_CLIENT_QUERY_TIMEOUT                                           NTStatus      = 0xC00A0026\n\tSTATUS_CTX_CONSOLE_DISCONNECT                                             NTStatus      = 0xC00A0027\n\tSTATUS_CTX_CONSOLE_CONNECT                                                NTStatus      = 0xC00A0028\n\tSTATUS_CTX_SHADOW_DENIED                                                  NTStatus      = 0xC00A002A\n\tSTATUS_CTX_WINSTATION_ACCESS_DENIED                                       NTStatus      = 0xC00A002B\n\tSTATUS_CTX_INVALID_WD                                                     NTStatus      = 0xC00A002E\n\tSTATUS_CTX_WD_NOT_FOUND                                                   NTStatus      = 0xC00A002F\n\tSTATUS_CTX_SHADOW_INVALID                                                 NTStatus      = 0xC00A0030\n\tSTATUS_CTX_SHADOW_DISABLED                                                NTStatus      = 0xC00A0031\n\tSTATUS_RDP_PROTOCOL_ERROR                                                 NTStatus      = 0xC00A0032\n\tSTATUS_CTX_CLIENT_LICENSE_NOT_SET                                         NTStatus      = 0xC00A0033\n\tSTATUS_CTX_CLIENT_LICENSE_IN_USE                                          NTStatus      = 0xC00A0034\n\tSTATUS_CTX_SHADOW_ENDED_BY_MODE_CHANGE                                    NTStatus      = 0xC00A0035\n\tSTATUS_CTX_SHADOW_NOT_RUNNING                                             NTStatus      = 0xC00A0036\n\tSTATUS_CTX_LOGON_DISABLED                                                 NTStatus      = 0xC00A0037\n\tSTATUS_CTX_SECURITY_LAYER_ERROR                                           NTStatus      = 0xC00A0038\n\tSTATUS_TS_INCOMPATIBLE_SESSIONS                                           NTStatus      = 0xC00A0039\n\tSTATUS_TS_VIDEO_SUBSYSTEM_ERROR                                           NTStatus      = 0xC00A003A\n\tSTATUS_PNP_BAD_MPS_TABLE                                                  NTStatus      = 0xC0040035\n\tSTATUS_PNP_TRANSLATION_FAILED                                             NTStatus      = 0xC0040036\n\tSTATUS_PNP_IRQ_TRANSLATION_FAILED                                         NTStatus      = 0xC0040037\n\tSTATUS_PNP_INVALID_ID                                                     NTStatus      = 0xC0040038\n\tSTATUS_IO_REISSUE_AS_CACHED                                               NTStatus      = 0xC0040039\n\tSTATUS_MUI_FILE_NOT_FOUND                                                 NTStatus      = 0xC00B0001\n\tSTATUS_MUI_INVALID_FILE                                                   NTStatus      = 0xC00B0002\n\tSTATUS_MUI_INVALID_RC_CONFIG                                              NTStatus      = 0xC00B0003\n\tSTATUS_MUI_INVALID_LOCALE_NAME                                            NTStatus      = 0xC00B0004\n\tSTATUS_MUI_INVALID_ULTIMATEFALLBACK_NAME                                  NTStatus      = 0xC00B0005\n\tSTATUS_MUI_FILE_NOT_LOADED                                                NTStatus      = 0xC00B0006\n\tSTATUS_RESOURCE_ENUM_USER_STOP                                            NTStatus      = 0xC00B0007\n\tSTATUS_FLT_NO_HANDLER_DEFINED                                             NTStatus      = 0xC01C0001\n\tSTATUS_FLT_CONTEXT_ALREADY_DEFINED                                        NTStatus      = 0xC01C0002\n\tSTATUS_FLT_INVALID_ASYNCHRONOUS_REQUEST                                   NTStatus      = 0xC01C0003\n\tSTATUS_FLT_DISALLOW_FAST_IO                                               NTStatus      = 0xC01C0004\n\tSTATUS_FLT_INVALID_NAME_REQUEST                                           NTStatus      = 0xC01C0005\n\tSTATUS_FLT_NOT_SAFE_TO_POST_OPERATION                                     NTStatus      = 0xC01C0006\n\tSTATUS_FLT_NOT_INITIALIZED                                                NTStatus      = 0xC01C0007\n\tSTATUS_FLT_FILTER_NOT_READY                                               NTStatus      = 0xC01C0008\n\tSTATUS_FLT_POST_OPERATION_CLEANUP                                         NTStatus      = 0xC01C0009\n\tSTATUS_FLT_INTERNAL_ERROR                                                 NTStatus      = 0xC01C000A\n\tSTATUS_FLT_DELETING_OBJECT                                                NTStatus      = 0xC01C000B\n\tSTATUS_FLT_MUST_BE_NONPAGED_POOL                                          NTStatus      = 0xC01C000C\n\tSTATUS_FLT_DUPLICATE_ENTRY                                                NTStatus      = 0xC01C000D\n\tSTATUS_FLT_CBDQ_DISABLED                                                  NTStatus      = 0xC01C000E\n\tSTATUS_FLT_DO_NOT_ATTACH                                                  NTStatus      = 0xC01C000F\n\tSTATUS_FLT_DO_NOT_DETACH                                                  NTStatus      = 0xC01C0010\n\tSTATUS_FLT_INSTANCE_ALTITUDE_COLLISION                                    NTStatus      = 0xC01C0011\n\tSTATUS_FLT_INSTANCE_NAME_COLLISION                                        NTStatus      = 0xC01C0012\n\tSTATUS_FLT_FILTER_NOT_FOUND                                               NTStatus      = 0xC01C0013\n\tSTATUS_FLT_VOLUME_NOT_FOUND                                               NTStatus      = 0xC01C0014\n\tSTATUS_FLT_INSTANCE_NOT_FOUND                                             NTStatus      = 0xC01C0015\n\tSTATUS_FLT_CONTEXT_ALLOCATION_NOT_FOUND                                   NTStatus      = 0xC01C0016\n\tSTATUS_FLT_INVALID_CONTEXT_REGISTRATION                                   NTStatus      = 0xC01C0017\n\tSTATUS_FLT_NAME_CACHE_MISS                                                NTStatus      = 0xC01C0018\n\tSTATUS_FLT_NO_DEVICE_OBJECT                                               NTStatus      = 0xC01C0019\n\tSTATUS_FLT_VOLUME_ALREADY_MOUNTED                                         NTStatus      = 0xC01C001A\n\tSTATUS_FLT_ALREADY_ENLISTED                                               NTStatus      = 0xC01C001B\n\tSTATUS_FLT_CONTEXT_ALREADY_LINKED                                         NTStatus      = 0xC01C001C\n\tSTATUS_FLT_NO_WAITER_FOR_REPLY                                            NTStatus      = 0xC01C0020\n\tSTATUS_FLT_REGISTRATION_BUSY                                              NTStatus      = 0xC01C0023\n\tSTATUS_SXS_SECTION_NOT_FOUND                                              NTStatus      = 0xC0150001\n\tSTATUS_SXS_CANT_GEN_ACTCTX                                                NTStatus      = 0xC0150002\n\tSTATUS_SXS_INVALID_ACTCTXDATA_FORMAT                                      NTStatus      = 0xC0150003\n\tSTATUS_SXS_ASSEMBLY_NOT_FOUND                                             NTStatus      = 0xC0150004\n\tSTATUS_SXS_MANIFEST_FORMAT_ERROR                                          NTStatus      = 0xC0150005\n\tSTATUS_SXS_MANIFEST_PARSE_ERROR                                           NTStatus      = 0xC0150006\n\tSTATUS_SXS_ACTIVATION_CONTEXT_DISABLED                                    NTStatus      = 0xC0150007\n\tSTATUS_SXS_KEY_NOT_FOUND                                                  NTStatus      = 0xC0150008\n\tSTATUS_SXS_VERSION_CONFLICT                                               NTStatus      = 0xC0150009\n\tSTATUS_SXS_WRONG_SECTION_TYPE                                             NTStatus      = 0xC015000A\n\tSTATUS_SXS_THREAD_QUERIES_DISABLED                                        NTStatus      = 0xC015000B\n\tSTATUS_SXS_ASSEMBLY_MISSING                                               NTStatus      = 0xC015000C\n\tSTATUS_SXS_RELEASE_ACTIVATION_CONTEXT                                     NTStatus      = 0x4015000D\n\tSTATUS_SXS_PROCESS_DEFAULT_ALREADY_SET                                    NTStatus      = 0xC015000E\n\tSTATUS_SXS_EARLY_DEACTIVATION                                             NTStatus      = 0xC015000F\n\tSTATUS_SXS_INVALID_DEACTIVATION                                           NTStatus      = 0xC0150010\n\tSTATUS_SXS_MULTIPLE_DEACTIVATION                                          NTStatus      = 0xC0150011\n\tSTATUS_SXS_SYSTEM_DEFAULT_ACTIVATION_CONTEXT_EMPTY                        NTStatus      = 0xC0150012\n\tSTATUS_SXS_PROCESS_TERMINATION_REQUESTED                                  NTStatus      = 0xC0150013\n\tSTATUS_SXS_CORRUPT_ACTIVATION_STACK                                       NTStatus      = 0xC0150014\n\tSTATUS_SXS_CORRUPTION                                                     NTStatus      = 0xC0150015\n\tSTATUS_SXS_INVALID_IDENTITY_ATTRIBUTE_VALUE                               NTStatus      = 0xC0150016\n\tSTATUS_SXS_INVALID_IDENTITY_ATTRIBUTE_NAME                                NTStatus      = 0xC0150017\n\tSTATUS_SXS_IDENTITY_DUPLICATE_ATTRIBUTE                                   NTStatus      = 0xC0150018\n\tSTATUS_SXS_IDENTITY_PARSE_ERROR                                           NTStatus      = 0xC0150019\n\tSTATUS_SXS_COMPONENT_STORE_CORRUPT                                        NTStatus      = 0xC015001A\n\tSTATUS_SXS_FILE_HASH_MISMATCH                                             NTStatus      = 0xC015001B\n\tSTATUS_SXS_MANIFEST_IDENTITY_SAME_BUT_CONTENTS_DIFFERENT                  NTStatus      = 0xC015001C\n\tSTATUS_SXS_IDENTITIES_DIFFERENT                                           NTStatus      = 0xC015001D\n\tSTATUS_SXS_ASSEMBLY_IS_NOT_A_DEPLOYMENT                                   NTStatus      = 0xC015001E\n\tSTATUS_SXS_FILE_NOT_PART_OF_ASSEMBLY                                      NTStatus      = 0xC015001F\n\tSTATUS_ADVANCED_INSTALLER_FAILED                                          NTStatus      = 0xC0150020\n\tSTATUS_XML_ENCODING_MISMATCH                                              NTStatus      = 0xC0150021\n\tSTATUS_SXS_MANIFEST_TOO_BIG                                               NTStatus      = 0xC0150022\n\tSTATUS_SXS_SETTING_NOT_REGISTERED                                         NTStatus      = 0xC0150023\n\tSTATUS_SXS_TRANSACTION_CLOSURE_INCOMPLETE                                 NTStatus      = 0xC0150024\n\tSTATUS_SMI_PRIMITIVE_INSTALLER_FAILED                                     NTStatus      = 0xC0150025\n\tSTATUS_GENERIC_COMMAND_FAILED                                             NTStatus      = 0xC0150026\n\tSTATUS_SXS_FILE_HASH_MISSING                                              NTStatus      = 0xC0150027\n\tSTATUS_CLUSTER_INVALID_NODE                                               NTStatus      = 0xC0130001\n\tSTATUS_CLUSTER_NODE_EXISTS                                                NTStatus      = 0xC0130002\n\tSTATUS_CLUSTER_JOIN_IN_PROGRESS                                           NTStatus      = 0xC0130003\n\tSTATUS_CLUSTER_NODE_NOT_FOUND                                             NTStatus      = 0xC0130004\n\tSTATUS_CLUSTER_LOCAL_NODE_NOT_FOUND                                       NTStatus      = 0xC0130005\n\tSTATUS_CLUSTER_NETWORK_EXISTS                                             NTStatus      = 0xC0130006\n\tSTATUS_CLUSTER_NETWORK_NOT_FOUND                                          NTStatus      = 0xC0130007\n\tSTATUS_CLUSTER_NETINTERFACE_EXISTS                                        NTStatus      = 0xC0130008\n\tSTATUS_CLUSTER_NETINTERFACE_NOT_FOUND                                     NTStatus      = 0xC0130009\n\tSTATUS_CLUSTER_INVALID_REQUEST                                            NTStatus      = 0xC013000A\n\tSTATUS_CLUSTER_INVALID_NETWORK_PROVIDER                                   NTStatus      = 0xC013000B\n\tSTATUS_CLUSTER_NODE_DOWN                                                  NTStatus      = 0xC013000C\n\tSTATUS_CLUSTER_NODE_UNREACHABLE                                           NTStatus      = 0xC013000D\n\tSTATUS_CLUSTER_NODE_NOT_MEMBER                                            NTStatus      = 0xC013000E\n\tSTATUS_CLUSTER_JOIN_NOT_IN_PROGRESS                                       NTStatus      = 0xC013000F\n\tSTATUS_CLUSTER_INVALID_NETWORK                                            NTStatus      = 0xC0130010\n\tSTATUS_CLUSTER_NO_NET_ADAPTERS                                            NTStatus      = 0xC0130011\n\tSTATUS_CLUSTER_NODE_UP                                                    NTStatus      = 0xC0130012\n\tSTATUS_CLUSTER_NODE_PAUSED                                                NTStatus      = 0xC0130013\n\tSTATUS_CLUSTER_NODE_NOT_PAUSED                                            NTStatus      = 0xC0130014\n\tSTATUS_CLUSTER_NO_SECURITY_CONTEXT                                        NTStatus      = 0xC0130015\n\tSTATUS_CLUSTER_NETWORK_NOT_INTERNAL                                       NTStatus      = 0xC0130016\n\tSTATUS_CLUSTER_POISONED                                                   NTStatus      = 0xC0130017\n\tSTATUS_CLUSTER_NON_CSV_PATH                                               NTStatus      = 0xC0130018\n\tSTATUS_CLUSTER_CSV_VOLUME_NOT_LOCAL                                       NTStatus      = 0xC0130019\n\tSTATUS_CLUSTER_CSV_READ_OPLOCK_BREAK_IN_PROGRESS                          NTStatus      = 0xC0130020\n\tSTATUS_CLUSTER_CSV_AUTO_PAUSE_ERROR                                       NTStatus      = 0xC0130021\n\tSTATUS_CLUSTER_CSV_REDIRECTED                                             NTStatus      = 0xC0130022\n\tSTATUS_CLUSTER_CSV_NOT_REDIRECTED                                         NTStatus      = 0xC0130023\n\tSTATUS_CLUSTER_CSV_VOLUME_DRAINING                                        NTStatus      = 0xC0130024\n\tSTATUS_CLUSTER_CSV_SNAPSHOT_CREATION_IN_PROGRESS                          NTStatus      = 0xC0130025\n\tSTATUS_CLUSTER_CSV_VOLUME_DRAINING_SUCCEEDED_DOWNLEVEL                    NTStatus      = 0xC0130026\n\tSTATUS_CLUSTER_CSV_NO_SNAPSHOTS                                           NTStatus      = 0xC0130027\n\tSTATUS_CSV_IO_PAUSE_TIMEOUT                                               NTStatus      = 0xC0130028\n\tSTATUS_CLUSTER_CSV_INVALID_HANDLE                                         NTStatus      = 0xC0130029\n\tSTATUS_CLUSTER_CSV_SUPPORTED_ONLY_ON_COORDINATOR                          NTStatus      = 0xC0130030\n\tSTATUS_CLUSTER_CAM_TICKET_REPLAY_DETECTED                                 NTStatus      = 0xC0130031\n\tSTATUS_TRANSACTIONAL_CONFLICT                                             NTStatus      = 0xC0190001\n\tSTATUS_INVALID_TRANSACTION                                                NTStatus      = 0xC0190002\n\tSTATUS_TRANSACTION_NOT_ACTIVE                                             NTStatus      = 0xC0190003\n\tSTATUS_TM_INITIALIZATION_FAILED                                           NTStatus      = 0xC0190004\n\tSTATUS_RM_NOT_ACTIVE                                                      NTStatus      = 0xC0190005\n\tSTATUS_RM_METADATA_CORRUPT                                                NTStatus      = 0xC0190006\n\tSTATUS_TRANSACTION_NOT_JOINED                                             NTStatus      = 0xC0190007\n\tSTATUS_DIRECTORY_NOT_RM                                                   NTStatus      = 0xC0190008\n\tSTATUS_COULD_NOT_RESIZE_LOG                                               NTStatus      = 0x80190009\n\tSTATUS_TRANSACTIONS_UNSUPPORTED_REMOTE                                    NTStatus      = 0xC019000A\n\tSTATUS_LOG_RESIZE_INVALID_SIZE                                            NTStatus      = 0xC019000B\n\tSTATUS_REMOTE_FILE_VERSION_MISMATCH                                       NTStatus      = 0xC019000C\n\tSTATUS_CRM_PROTOCOL_ALREADY_EXISTS                                        NTStatus      = 0xC019000F\n\tSTATUS_TRANSACTION_PROPAGATION_FAILED                                     NTStatus      = 0xC0190010\n\tSTATUS_CRM_PROTOCOL_NOT_FOUND                                             NTStatus      = 0xC0190011\n\tSTATUS_TRANSACTION_SUPERIOR_EXISTS                                        NTStatus      = 0xC0190012\n\tSTATUS_TRANSACTION_REQUEST_NOT_VALID                                      NTStatus      = 0xC0190013\n\tSTATUS_TRANSACTION_NOT_REQUESTED                                          NTStatus      = 0xC0190014\n\tSTATUS_TRANSACTION_ALREADY_ABORTED                                        NTStatus      = 0xC0190015\n\tSTATUS_TRANSACTION_ALREADY_COMMITTED                                      NTStatus      = 0xC0190016\n\tSTATUS_TRANSACTION_INVALID_MARSHALL_BUFFER                                NTStatus      = 0xC0190017\n\tSTATUS_CURRENT_TRANSACTION_NOT_VALID                                      NTStatus      = 0xC0190018\n\tSTATUS_LOG_GROWTH_FAILED                                                  NTStatus      = 0xC0190019\n\tSTATUS_OBJECT_NO_LONGER_EXISTS                                            NTStatus      = 0xC0190021\n\tSTATUS_STREAM_MINIVERSION_NOT_FOUND                                       NTStatus      = 0xC0190022\n\tSTATUS_STREAM_MINIVERSION_NOT_VALID                                       NTStatus      = 0xC0190023\n\tSTATUS_MINIVERSION_INACCESSIBLE_FROM_SPECIFIED_TRANSACTION                NTStatus      = 0xC0190024\n\tSTATUS_CANT_OPEN_MINIVERSION_WITH_MODIFY_INTENT                           NTStatus      = 0xC0190025\n\tSTATUS_CANT_CREATE_MORE_STREAM_MINIVERSIONS                               NTStatus      = 0xC0190026\n\tSTATUS_HANDLE_NO_LONGER_VALID                                             NTStatus      = 0xC0190028\n\tSTATUS_NO_TXF_METADATA                                                    NTStatus      = 0x80190029\n\tSTATUS_LOG_CORRUPTION_DETECTED                                            NTStatus      = 0xC0190030\n\tSTATUS_CANT_RECOVER_WITH_HANDLE_OPEN                                      NTStatus      = 0x80190031\n\tSTATUS_RM_DISCONNECTED                                                    NTStatus      = 0xC0190032\n\tSTATUS_ENLISTMENT_NOT_SUPERIOR                                            NTStatus      = 0xC0190033\n\tSTATUS_RECOVERY_NOT_NEEDED                                                NTStatus      = 0x40190034\n\tSTATUS_RM_ALREADY_STARTED                                                 NTStatus      = 0x40190035\n\tSTATUS_FILE_IDENTITY_NOT_PERSISTENT                                       NTStatus      = 0xC0190036\n\tSTATUS_CANT_BREAK_TRANSACTIONAL_DEPENDENCY                                NTStatus      = 0xC0190037\n\tSTATUS_CANT_CROSS_RM_BOUNDARY                                             NTStatus      = 0xC0190038\n\tSTATUS_TXF_DIR_NOT_EMPTY                                                  NTStatus      = 0xC0190039\n\tSTATUS_INDOUBT_TRANSACTIONS_EXIST                                         NTStatus      = 0xC019003A\n\tSTATUS_TM_VOLATILE                                                        NTStatus      = 0xC019003B\n\tSTATUS_ROLLBACK_TIMER_EXPIRED                                             NTStatus      = 0xC019003C\n\tSTATUS_TXF_ATTRIBUTE_CORRUPT                                              NTStatus      = 0xC019003D\n\tSTATUS_EFS_NOT_ALLOWED_IN_TRANSACTION                                     NTStatus      = 0xC019003E\n\tSTATUS_TRANSACTIONAL_OPEN_NOT_ALLOWED                                     NTStatus      = 0xC019003F\n\tSTATUS_TRANSACTED_MAPPING_UNSUPPORTED_REMOTE                              NTStatus      = 0xC0190040\n\tSTATUS_TXF_METADATA_ALREADY_PRESENT                                       NTStatus      = 0x80190041\n\tSTATUS_TRANSACTION_SCOPE_CALLBACKS_NOT_SET                                NTStatus      = 0x80190042\n\tSTATUS_TRANSACTION_REQUIRED_PROMOTION                                     NTStatus      = 0xC0190043\n\tSTATUS_CANNOT_EXECUTE_FILE_IN_TRANSACTION                                 NTStatus      = 0xC0190044\n\tSTATUS_TRANSACTIONS_NOT_FROZEN                                            NTStatus      = 0xC0190045\n\tSTATUS_TRANSACTION_FREEZE_IN_PROGRESS                                     NTStatus      = 0xC0190046\n\tSTATUS_NOT_SNAPSHOT_VOLUME                                                NTStatus      = 0xC0190047\n\tSTATUS_NO_SAVEPOINT_WITH_OPEN_FILES                                       NTStatus      = 0xC0190048\n\tSTATUS_SPARSE_NOT_ALLOWED_IN_TRANSACTION                                  NTStatus      = 0xC0190049\n\tSTATUS_TM_IDENTITY_MISMATCH                                               NTStatus      = 0xC019004A\n\tSTATUS_FLOATED_SECTION                                                    NTStatus      = 0xC019004B\n\tSTATUS_CANNOT_ACCEPT_TRANSACTED_WORK                                      NTStatus      = 0xC019004C\n\tSTATUS_CANNOT_ABORT_TRANSACTIONS                                          NTStatus      = 0xC019004D\n\tSTATUS_TRANSACTION_NOT_FOUND                                              NTStatus      = 0xC019004E\n\tSTATUS_RESOURCEMANAGER_NOT_FOUND                                          NTStatus      = 0xC019004F\n\tSTATUS_ENLISTMENT_NOT_FOUND                                               NTStatus      = 0xC0190050\n\tSTATUS_TRANSACTIONMANAGER_NOT_FOUND                                       NTStatus      = 0xC0190051\n\tSTATUS_TRANSACTIONMANAGER_NOT_ONLINE                                      NTStatus      = 0xC0190052\n\tSTATUS_TRANSACTIONMANAGER_RECOVERY_NAME_COLLISION                         NTStatus      = 0xC0190053\n\tSTATUS_TRANSACTION_NOT_ROOT                                               NTStatus      = 0xC0190054\n\tSTATUS_TRANSACTION_OBJECT_EXPIRED                                         NTStatus      = 0xC0190055\n\tSTATUS_COMPRESSION_NOT_ALLOWED_IN_TRANSACTION                             NTStatus      = 0xC0190056\n\tSTATUS_TRANSACTION_RESPONSE_NOT_ENLISTED                                  NTStatus      = 0xC0190057\n\tSTATUS_TRANSACTION_RECORD_TOO_LONG                                        NTStatus      = 0xC0190058\n\tSTATUS_NO_LINK_TRACKING_IN_TRANSACTION                                    NTStatus      = 0xC0190059\n\tSTATUS_OPERATION_NOT_SUPPORTED_IN_TRANSACTION                             NTStatus      = 0xC019005A\n\tSTATUS_TRANSACTION_INTEGRITY_VIOLATED                                     NTStatus      = 0xC019005B\n\tSTATUS_TRANSACTIONMANAGER_IDENTITY_MISMATCH                               NTStatus      = 0xC019005C\n\tSTATUS_RM_CANNOT_BE_FROZEN_FOR_SNAPSHOT                                   NTStatus      = 0xC019005D\n\tSTATUS_TRANSACTION_MUST_WRITETHROUGH                                      NTStatus      = 0xC019005E\n\tSTATUS_TRANSACTION_NO_SUPERIOR                                            NTStatus      = 0xC019005F\n\tSTATUS_EXPIRED_HANDLE                                                     NTStatus      = 0xC0190060\n\tSTATUS_TRANSACTION_NOT_ENLISTED                                           NTStatus      = 0xC0190061\n\tSTATUS_LOG_SECTOR_INVALID                                                 NTStatus      = 0xC01A0001\n\tSTATUS_LOG_SECTOR_PARITY_INVALID                                          NTStatus      = 0xC01A0002\n\tSTATUS_LOG_SECTOR_REMAPPED                                                NTStatus      = 0xC01A0003\n\tSTATUS_LOG_BLOCK_INCOMPLETE                                               NTStatus      = 0xC01A0004\n\tSTATUS_LOG_INVALID_RANGE                                                  NTStatus      = 0xC01A0005\n\tSTATUS_LOG_BLOCKS_EXHAUSTED                                               NTStatus      = 0xC01A0006\n\tSTATUS_LOG_READ_CONTEXT_INVALID                                           NTStatus      = 0xC01A0007\n\tSTATUS_LOG_RESTART_INVALID                                                NTStatus      = 0xC01A0008\n\tSTATUS_LOG_BLOCK_VERSION                                                  NTStatus      = 0xC01A0009\n\tSTATUS_LOG_BLOCK_INVALID                                                  NTStatus      = 0xC01A000A\n\tSTATUS_LOG_READ_MODE_INVALID                                              NTStatus      = 0xC01A000B\n\tSTATUS_LOG_NO_RESTART                                                     NTStatus      = 0x401A000C\n\tSTATUS_LOG_METADATA_CORRUPT                                               NTStatus      = 0xC01A000D\n\tSTATUS_LOG_METADATA_INVALID                                               NTStatus      = 0xC01A000E\n\tSTATUS_LOG_METADATA_INCONSISTENT                                          NTStatus      = 0xC01A000F\n\tSTATUS_LOG_RESERVATION_INVALID                                            NTStatus      = 0xC01A0010\n\tSTATUS_LOG_CANT_DELETE                                                    NTStatus      = 0xC01A0011\n\tSTATUS_LOG_CONTAINER_LIMIT_EXCEEDED                                       NTStatus      = 0xC01A0012\n\tSTATUS_LOG_START_OF_LOG                                                   NTStatus      = 0xC01A0013\n\tSTATUS_LOG_POLICY_ALREADY_INSTALLED                                       NTStatus      = 0xC01A0014\n\tSTATUS_LOG_POLICY_NOT_INSTALLED                                           NTStatus      = 0xC01A0015\n\tSTATUS_LOG_POLICY_INVALID                                                 NTStatus      = 0xC01A0016\n\tSTATUS_LOG_POLICY_CONFLICT                                                NTStatus      = 0xC01A0017\n\tSTATUS_LOG_PINNED_ARCHIVE_TAIL                                            NTStatus      = 0xC01A0018\n\tSTATUS_LOG_RECORD_NONEXISTENT                                             NTStatus      = 0xC01A0019\n\tSTATUS_LOG_RECORDS_RESERVED_INVALID                                       NTStatus      = 0xC01A001A\n\tSTATUS_LOG_SPACE_RESERVED_INVALID                                         NTStatus      = 0xC01A001B\n\tSTATUS_LOG_TAIL_INVALID                                                   NTStatus      = 0xC01A001C\n\tSTATUS_LOG_FULL                                                           NTStatus      = 0xC01A001D\n\tSTATUS_LOG_MULTIPLEXED                                                    NTStatus      = 0xC01A001E\n\tSTATUS_LOG_DEDICATED                                                      NTStatus      = 0xC01A001F\n\tSTATUS_LOG_ARCHIVE_NOT_IN_PROGRESS                                        NTStatus      = 0xC01A0020\n\tSTATUS_LOG_ARCHIVE_IN_PROGRESS                                            NTStatus      = 0xC01A0021\n\tSTATUS_LOG_EPHEMERAL                                                      NTStatus      = 0xC01A0022\n\tSTATUS_LOG_NOT_ENOUGH_CONTAINERS                                          NTStatus      = 0xC01A0023\n\tSTATUS_LOG_CLIENT_ALREADY_REGISTERED                                      NTStatus      = 0xC01A0024\n\tSTATUS_LOG_CLIENT_NOT_REGISTERED                                          NTStatus      = 0xC01A0025\n\tSTATUS_LOG_FULL_HANDLER_IN_PROGRESS                                       NTStatus      = 0xC01A0026\n\tSTATUS_LOG_CONTAINER_READ_FAILED                                          NTStatus      = 0xC01A0027\n\tSTATUS_LOG_CONTAINER_WRITE_FAILED                                         NTStatus      = 0xC01A0028\n\tSTATUS_LOG_CONTAINER_OPEN_FAILED                                          NTStatus      = 0xC01A0029\n\tSTATUS_LOG_CONTAINER_STATE_INVALID                                        NTStatus      = 0xC01A002A\n\tSTATUS_LOG_STATE_INVALID                                                  NTStatus      = 0xC01A002B\n\tSTATUS_LOG_PINNED                                                         NTStatus      = 0xC01A002C\n\tSTATUS_LOG_METADATA_FLUSH_FAILED                                          NTStatus      = 0xC01A002D\n\tSTATUS_LOG_INCONSISTENT_SECURITY                                          NTStatus      = 0xC01A002E\n\tSTATUS_LOG_APPENDED_FLUSH_FAILED                                          NTStatus      = 0xC01A002F\n\tSTATUS_LOG_PINNED_RESERVATION                                             NTStatus      = 0xC01A0030\n\tSTATUS_VIDEO_HUNG_DISPLAY_DRIVER_THREAD                                   NTStatus      = 0xC01B00EA\n\tSTATUS_VIDEO_HUNG_DISPLAY_DRIVER_THREAD_RECOVERED                         NTStatus      = 0x801B00EB\n\tSTATUS_VIDEO_DRIVER_DEBUG_REPORT_REQUEST                                  NTStatus      = 0x401B00EC\n\tSTATUS_MONITOR_NO_DESCRIPTOR                                              NTStatus      = 0xC01D0001\n\tSTATUS_MONITOR_UNKNOWN_DESCRIPTOR_FORMAT                                  NTStatus      = 0xC01D0002\n\tSTATUS_MONITOR_INVALID_DESCRIPTOR_CHECKSUM                                NTStatus      = 0xC01D0003\n\tSTATUS_MONITOR_INVALID_STANDARD_TIMING_BLOCK                              NTStatus      = 0xC01D0004\n\tSTATUS_MONITOR_WMI_DATABLOCK_REGISTRATION_FAILED                          NTStatus      = 0xC01D0005\n\tSTATUS_MONITOR_INVALID_SERIAL_NUMBER_MONDSC_BLOCK                         NTStatus      = 0xC01D0006\n\tSTATUS_MONITOR_INVALID_USER_FRIENDLY_MONDSC_BLOCK                         NTStatus      = 0xC01D0007\n\tSTATUS_MONITOR_NO_MORE_DESCRIPTOR_DATA                                    NTStatus      = 0xC01D0008\n\tSTATUS_MONITOR_INVALID_DETAILED_TIMING_BLOCK                              NTStatus      = 0xC01D0009\n\tSTATUS_MONITOR_INVALID_MANUFACTURE_DATE                                   NTStatus      = 0xC01D000A\n\tSTATUS_GRAPHICS_NOT_EXCLUSIVE_MODE_OWNER                                  NTStatus      = 0xC01E0000\n\tSTATUS_GRAPHICS_INSUFFICIENT_DMA_BUFFER                                   NTStatus      = 0xC01E0001\n\tSTATUS_GRAPHICS_INVALID_DISPLAY_ADAPTER                                   NTStatus      = 0xC01E0002\n\tSTATUS_GRAPHICS_ADAPTER_WAS_RESET                                         NTStatus      = 0xC01E0003\n\tSTATUS_GRAPHICS_INVALID_DRIVER_MODEL                                      NTStatus      = 0xC01E0004\n\tSTATUS_GRAPHICS_PRESENT_MODE_CHANGED                                      NTStatus      = 0xC01E0005\n\tSTATUS_GRAPHICS_PRESENT_OCCLUDED                                          NTStatus      = 0xC01E0006\n\tSTATUS_GRAPHICS_PRESENT_DENIED                                            NTStatus      = 0xC01E0007\n\tSTATUS_GRAPHICS_CANNOTCOLORCONVERT                                        NTStatus      = 0xC01E0008\n\tSTATUS_GRAPHICS_DRIVER_MISMATCH                                           NTStatus      = 0xC01E0009\n\tSTATUS_GRAPHICS_PARTIAL_DATA_POPULATED                                    NTStatus      = 0x401E000A\n\tSTATUS_GRAPHICS_PRESENT_REDIRECTION_DISABLED                              NTStatus      = 0xC01E000B\n\tSTATUS_GRAPHICS_PRESENT_UNOCCLUDED                                        NTStatus      = 0xC01E000C\n\tSTATUS_GRAPHICS_WINDOWDC_NOT_AVAILABLE                                    NTStatus      = 0xC01E000D\n\tSTATUS_GRAPHICS_WINDOWLESS_PRESENT_DISABLED                               NTStatus      = 0xC01E000E\n\tSTATUS_GRAPHICS_PRESENT_INVALID_WINDOW                                    NTStatus      = 0xC01E000F\n\tSTATUS_GRAPHICS_PRESENT_BUFFER_NOT_BOUND                                  NTStatus      = 0xC01E0010\n\tSTATUS_GRAPHICS_VAIL_STATE_CHANGED                                        NTStatus      = 0xC01E0011\n\tSTATUS_GRAPHICS_INDIRECT_DISPLAY_ABANDON_SWAPCHAIN                        NTStatus      = 0xC01E0012\n\tSTATUS_GRAPHICS_INDIRECT_DISPLAY_DEVICE_STOPPED                           NTStatus      = 0xC01E0013\n\tSTATUS_GRAPHICS_NO_VIDEO_MEMORY                                           NTStatus      = 0xC01E0100\n\tSTATUS_GRAPHICS_CANT_LOCK_MEMORY                                          NTStatus      = 0xC01E0101\n\tSTATUS_GRAPHICS_ALLOCATION_BUSY                                           NTStatus      = 0xC01E0102\n\tSTATUS_GRAPHICS_TOO_MANY_REFERENCES                                       NTStatus      = 0xC01E0103\n\tSTATUS_GRAPHICS_TRY_AGAIN_LATER                                           NTStatus      = 0xC01E0104\n\tSTATUS_GRAPHICS_TRY_AGAIN_NOW                                             NTStatus      = 0xC01E0105\n\tSTATUS_GRAPHICS_ALLOCATION_INVALID                                        NTStatus      = 0xC01E0106\n\tSTATUS_GRAPHICS_UNSWIZZLING_APERTURE_UNAVAILABLE                          NTStatus      = 0xC01E0107\n\tSTATUS_GRAPHICS_UNSWIZZLING_APERTURE_UNSUPPORTED                          NTStatus      = 0xC01E0108\n\tSTATUS_GRAPHICS_CANT_EVICT_PINNED_ALLOCATION                              NTStatus      = 0xC01E0109\n\tSTATUS_GRAPHICS_INVALID_ALLOCATION_USAGE                                  NTStatus      = 0xC01E0110\n\tSTATUS_GRAPHICS_CANT_RENDER_LOCKED_ALLOCATION                             NTStatus      = 0xC01E0111\n\tSTATUS_GRAPHICS_ALLOCATION_CLOSED                                         NTStatus      = 0xC01E0112\n\tSTATUS_GRAPHICS_INVALID_ALLOCATION_INSTANCE                               NTStatus      = 0xC01E0113\n\tSTATUS_GRAPHICS_INVALID_ALLOCATION_HANDLE                                 NTStatus      = 0xC01E0114\n\tSTATUS_GRAPHICS_WRONG_ALLOCATION_DEVICE                                   NTStatus      = 0xC01E0115\n\tSTATUS_GRAPHICS_ALLOCATION_CONTENT_LOST                                   NTStatus      = 0xC01E0116\n\tSTATUS_GRAPHICS_GPU_EXCEPTION_ON_DEVICE                                   NTStatus      = 0xC01E0200\n\tSTATUS_GRAPHICS_SKIP_ALLOCATION_PREPARATION                               NTStatus      = 0x401E0201\n\tSTATUS_GRAPHICS_INVALID_VIDPN_TOPOLOGY                                    NTStatus      = 0xC01E0300\n\tSTATUS_GRAPHICS_VIDPN_TOPOLOGY_NOT_SUPPORTED                              NTStatus      = 0xC01E0301\n\tSTATUS_GRAPHICS_VIDPN_TOPOLOGY_CURRENTLY_NOT_SUPPORTED                    NTStatus      = 0xC01E0302\n\tSTATUS_GRAPHICS_INVALID_VIDPN                                             NTStatus      = 0xC01E0303\n\tSTATUS_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE                              NTStatus      = 0xC01E0304\n\tSTATUS_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET                              NTStatus      = 0xC01E0305\n\tSTATUS_GRAPHICS_VIDPN_MODALITY_NOT_SUPPORTED                              NTStatus      = 0xC01E0306\n\tSTATUS_GRAPHICS_MODE_NOT_PINNED                                           NTStatus      = 0x401E0307\n\tSTATUS_GRAPHICS_INVALID_VIDPN_SOURCEMODESET                               NTStatus      = 0xC01E0308\n\tSTATUS_GRAPHICS_INVALID_VIDPN_TARGETMODESET                               NTStatus      = 0xC01E0309\n\tSTATUS_GRAPHICS_INVALID_FREQUENCY                                         NTStatus      = 0xC01E030A\n\tSTATUS_GRAPHICS_INVALID_ACTIVE_REGION                                     NTStatus      = 0xC01E030B\n\tSTATUS_GRAPHICS_INVALID_TOTAL_REGION                                      NTStatus      = 0xC01E030C\n\tSTATUS_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE_MODE                         NTStatus      = 0xC01E0310\n\tSTATUS_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET_MODE                         NTStatus      = 0xC01E0311\n\tSTATUS_GRAPHICS_PINNED_MODE_MUST_REMAIN_IN_SET                            NTStatus      = 0xC01E0312\n\tSTATUS_GRAPHICS_PATH_ALREADY_IN_TOPOLOGY                                  NTStatus      = 0xC01E0313\n\tSTATUS_GRAPHICS_MODE_ALREADY_IN_MODESET                                   NTStatus      = 0xC01E0314\n\tSTATUS_GRAPHICS_INVALID_VIDEOPRESENTSOURCESET                             NTStatus      = 0xC01E0315\n\tSTATUS_GRAPHICS_INVALID_VIDEOPRESENTTARGETSET                             NTStatus      = 0xC01E0316\n\tSTATUS_GRAPHICS_SOURCE_ALREADY_IN_SET                                     NTStatus      = 0xC01E0317\n\tSTATUS_GRAPHICS_TARGET_ALREADY_IN_SET                                     NTStatus      = 0xC01E0318\n\tSTATUS_GRAPHICS_INVALID_VIDPN_PRESENT_PATH                                NTStatus      = 0xC01E0319\n\tSTATUS_GRAPHICS_NO_RECOMMENDED_VIDPN_TOPOLOGY                             NTStatus      = 0xC01E031A\n\tSTATUS_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGESET                         NTStatus      = 0xC01E031B\n\tSTATUS_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE                            NTStatus      = 0xC01E031C\n\tSTATUS_GRAPHICS_FREQUENCYRANGE_NOT_IN_SET                                 NTStatus      = 0xC01E031D\n\tSTATUS_GRAPHICS_NO_PREFERRED_MODE                                         NTStatus      = 0x401E031E\n\tSTATUS_GRAPHICS_FREQUENCYRANGE_ALREADY_IN_SET                             NTStatus      = 0xC01E031F\n\tSTATUS_GRAPHICS_STALE_MODESET                                             NTStatus      = 0xC01E0320\n\tSTATUS_GRAPHICS_INVALID_MONITOR_SOURCEMODESET                             NTStatus      = 0xC01E0321\n\tSTATUS_GRAPHICS_INVALID_MONITOR_SOURCE_MODE                               NTStatus      = 0xC01E0322\n\tSTATUS_GRAPHICS_NO_RECOMMENDED_FUNCTIONAL_VIDPN                           NTStatus      = 0xC01E0323\n\tSTATUS_GRAPHICS_MODE_ID_MUST_BE_UNIQUE                                    NTStatus      = 0xC01E0324\n\tSTATUS_GRAPHICS_EMPTY_ADAPTER_MONITOR_MODE_SUPPORT_INTERSECTION           NTStatus      = 0xC01E0325\n\tSTATUS_GRAPHICS_VIDEO_PRESENT_TARGETS_LESS_THAN_SOURCES                   NTStatus      = 0xC01E0326\n\tSTATUS_GRAPHICS_PATH_NOT_IN_TOPOLOGY                                      NTStatus      = 0xC01E0327\n\tSTATUS_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_SOURCE                     NTStatus      = 0xC01E0328\n\tSTATUS_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_TARGET                     NTStatus      = 0xC01E0329\n\tSTATUS_GRAPHICS_INVALID_MONITORDESCRIPTORSET                              NTStatus      = 0xC01E032A\n\tSTATUS_GRAPHICS_INVALID_MONITORDESCRIPTOR                                 NTStatus      = 0xC01E032B\n\tSTATUS_GRAPHICS_MONITORDESCRIPTOR_NOT_IN_SET                              NTStatus      = 0xC01E032C\n\tSTATUS_GRAPHICS_MONITORDESCRIPTOR_ALREADY_IN_SET                          NTStatus      = 0xC01E032D\n\tSTATUS_GRAPHICS_MONITORDESCRIPTOR_ID_MUST_BE_UNIQUE                       NTStatus      = 0xC01E032E\n\tSTATUS_GRAPHICS_INVALID_VIDPN_TARGET_SUBSET_TYPE                          NTStatus      = 0xC01E032F\n\tSTATUS_GRAPHICS_RESOURCES_NOT_RELATED                                     NTStatus      = 0xC01E0330\n\tSTATUS_GRAPHICS_SOURCE_ID_MUST_BE_UNIQUE                                  NTStatus      = 0xC01E0331\n\tSTATUS_GRAPHICS_TARGET_ID_MUST_BE_UNIQUE                                  NTStatus      = 0xC01E0332\n\tSTATUS_GRAPHICS_NO_AVAILABLE_VIDPN_TARGET                                 NTStatus      = 0xC01E0333\n\tSTATUS_GRAPHICS_MONITOR_COULD_NOT_BE_ASSOCIATED_WITH_ADAPTER              NTStatus      = 0xC01E0334\n\tSTATUS_GRAPHICS_NO_VIDPNMGR                                               NTStatus      = 0xC01E0335\n\tSTATUS_GRAPHICS_NO_ACTIVE_VIDPN                                           NTStatus      = 0xC01E0336\n\tSTATUS_GRAPHICS_STALE_VIDPN_TOPOLOGY                                      NTStatus      = 0xC01E0337\n\tSTATUS_GRAPHICS_MONITOR_NOT_CONNECTED                                     NTStatus      = 0xC01E0338\n\tSTATUS_GRAPHICS_SOURCE_NOT_IN_TOPOLOGY                                    NTStatus      = 0xC01E0339\n\tSTATUS_GRAPHICS_INVALID_PRIMARYSURFACE_SIZE                               NTStatus      = 0xC01E033A\n\tSTATUS_GRAPHICS_INVALID_VISIBLEREGION_SIZE                                NTStatus      = 0xC01E033B\n\tSTATUS_GRAPHICS_INVALID_STRIDE                                            NTStatus      = 0xC01E033C\n\tSTATUS_GRAPHICS_INVALID_PIXELFORMAT                                       NTStatus      = 0xC01E033D\n\tSTATUS_GRAPHICS_INVALID_COLORBASIS                                        NTStatus      = 0xC01E033E\n\tSTATUS_GRAPHICS_INVALID_PIXELVALUEACCESSMODE                              NTStatus      = 0xC01E033F\n\tSTATUS_GRAPHICS_TARGET_NOT_IN_TOPOLOGY                                    NTStatus      = 0xC01E0340\n\tSTATUS_GRAPHICS_NO_DISPLAY_MODE_MANAGEMENT_SUPPORT                        NTStatus      = 0xC01E0341\n\tSTATUS_GRAPHICS_VIDPN_SOURCE_IN_USE                                       NTStatus      = 0xC01E0342\n\tSTATUS_GRAPHICS_CANT_ACCESS_ACTIVE_VIDPN                                  NTStatus      = 0xC01E0343\n\tSTATUS_GRAPHICS_INVALID_PATH_IMPORTANCE_ORDINAL                           NTStatus      = 0xC01E0344\n\tSTATUS_GRAPHICS_INVALID_PATH_CONTENT_GEOMETRY_TRANSFORMATION              NTStatus      = 0xC01E0345\n\tSTATUS_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_SUPPORTED        NTStatus      = 0xC01E0346\n\tSTATUS_GRAPHICS_INVALID_GAMMA_RAMP                                        NTStatus      = 0xC01E0347\n\tSTATUS_GRAPHICS_GAMMA_RAMP_NOT_SUPPORTED                                  NTStatus      = 0xC01E0348\n\tSTATUS_GRAPHICS_MULTISAMPLING_NOT_SUPPORTED                               NTStatus      = 0xC01E0349\n\tSTATUS_GRAPHICS_MODE_NOT_IN_MODESET                                       NTStatus      = 0xC01E034A\n\tSTATUS_GRAPHICS_DATASET_IS_EMPTY                                          NTStatus      = 0x401E034B\n\tSTATUS_GRAPHICS_NO_MORE_ELEMENTS_IN_DATASET                               NTStatus      = 0x401E034C\n\tSTATUS_GRAPHICS_INVALID_VIDPN_TOPOLOGY_RECOMMENDATION_REASON              NTStatus      = 0xC01E034D\n\tSTATUS_GRAPHICS_INVALID_PATH_CONTENT_TYPE                                 NTStatus      = 0xC01E034E\n\tSTATUS_GRAPHICS_INVALID_COPYPROTECTION_TYPE                               NTStatus      = 0xC01E034F\n\tSTATUS_GRAPHICS_UNASSIGNED_MODESET_ALREADY_EXISTS                         NTStatus      = 0xC01E0350\n\tSTATUS_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_PINNED           NTStatus      = 0x401E0351\n\tSTATUS_GRAPHICS_INVALID_SCANLINE_ORDERING                                 NTStatus      = 0xC01E0352\n\tSTATUS_GRAPHICS_TOPOLOGY_CHANGES_NOT_ALLOWED                              NTStatus      = 0xC01E0353\n\tSTATUS_GRAPHICS_NO_AVAILABLE_IMPORTANCE_ORDINALS                          NTStatus      = 0xC01E0354\n\tSTATUS_GRAPHICS_INCOMPATIBLE_PRIVATE_FORMAT                               NTStatus      = 0xC01E0355\n\tSTATUS_GRAPHICS_INVALID_MODE_PRUNING_ALGORITHM                            NTStatus      = 0xC01E0356\n\tSTATUS_GRAPHICS_INVALID_MONITOR_CAPABILITY_ORIGIN                         NTStatus      = 0xC01E0357\n\tSTATUS_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE_CONSTRAINT                 NTStatus      = 0xC01E0358\n\tSTATUS_GRAPHICS_MAX_NUM_PATHS_REACHED                                     NTStatus      = 0xC01E0359\n\tSTATUS_GRAPHICS_CANCEL_VIDPN_TOPOLOGY_AUGMENTATION                        NTStatus      = 0xC01E035A\n\tSTATUS_GRAPHICS_INVALID_CLIENT_TYPE                                       NTStatus      = 0xC01E035B\n\tSTATUS_GRAPHICS_CLIENTVIDPN_NOT_SET                                       NTStatus      = 0xC01E035C\n\tSTATUS_GRAPHICS_SPECIFIED_CHILD_ALREADY_CONNECTED                         NTStatus      = 0xC01E0400\n\tSTATUS_GRAPHICS_CHILD_DESCRIPTOR_NOT_SUPPORTED                            NTStatus      = 0xC01E0401\n\tSTATUS_GRAPHICS_UNKNOWN_CHILD_STATUS                                      NTStatus      = 0x401E042F\n\tSTATUS_GRAPHICS_NOT_A_LINKED_ADAPTER                                      NTStatus      = 0xC01E0430\n\tSTATUS_GRAPHICS_LEADLINK_NOT_ENUMERATED                                   NTStatus      = 0xC01E0431\n\tSTATUS_GRAPHICS_CHAINLINKS_NOT_ENUMERATED                                 NTStatus      = 0xC01E0432\n\tSTATUS_GRAPHICS_ADAPTER_CHAIN_NOT_READY                                   NTStatus      = 0xC01E0433\n\tSTATUS_GRAPHICS_CHAINLINKS_NOT_STARTED                                    NTStatus      = 0xC01E0434\n\tSTATUS_GRAPHICS_CHAINLINKS_NOT_POWERED_ON                                 NTStatus      = 0xC01E0435\n\tSTATUS_GRAPHICS_INCONSISTENT_DEVICE_LINK_STATE                            NTStatus      = 0xC01E0436\n\tSTATUS_GRAPHICS_LEADLINK_START_DEFERRED                                   NTStatus      = 0x401E0437\n\tSTATUS_GRAPHICS_NOT_POST_DEVICE_DRIVER                                    NTStatus      = 0xC01E0438\n\tSTATUS_GRAPHICS_POLLING_TOO_FREQUENTLY                                    NTStatus      = 0x401E0439\n\tSTATUS_GRAPHICS_START_DEFERRED                                            NTStatus      = 0x401E043A\n\tSTATUS_GRAPHICS_ADAPTER_ACCESS_NOT_EXCLUDED                               NTStatus      = 0xC01E043B\n\tSTATUS_GRAPHICS_DEPENDABLE_CHILD_STATUS                                   NTStatus      = 0x401E043C\n\tSTATUS_GRAPHICS_OPM_NOT_SUPPORTED                                         NTStatus      = 0xC01E0500\n\tSTATUS_GRAPHICS_COPP_NOT_SUPPORTED                                        NTStatus      = 0xC01E0501\n\tSTATUS_GRAPHICS_UAB_NOT_SUPPORTED                                         NTStatus      = 0xC01E0502\n\tSTATUS_GRAPHICS_OPM_INVALID_ENCRYPTED_PARAMETERS                          NTStatus      = 0xC01E0503\n\tSTATUS_GRAPHICS_OPM_NO_PROTECTED_OUTPUTS_EXIST                            NTStatus      = 0xC01E0505\n\tSTATUS_GRAPHICS_OPM_INTERNAL_ERROR                                        NTStatus      = 0xC01E050B\n\tSTATUS_GRAPHICS_OPM_INVALID_HANDLE                                        NTStatus      = 0xC01E050C\n\tSTATUS_GRAPHICS_PVP_INVALID_CERTIFICATE_LENGTH                            NTStatus      = 0xC01E050E\n\tSTATUS_GRAPHICS_OPM_SPANNING_MODE_ENABLED                                 NTStatus      = 0xC01E050F\n\tSTATUS_GRAPHICS_OPM_THEATER_MODE_ENABLED                                  NTStatus      = 0xC01E0510\n\tSTATUS_GRAPHICS_PVP_HFS_FAILED                                            NTStatus      = 0xC01E0511\n\tSTATUS_GRAPHICS_OPM_INVALID_SRM                                           NTStatus      = 0xC01E0512\n\tSTATUS_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_HDCP                          NTStatus      = 0xC01E0513\n\tSTATUS_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_ACP                           NTStatus      = 0xC01E0514\n\tSTATUS_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_CGMSA                         NTStatus      = 0xC01E0515\n\tSTATUS_GRAPHICS_OPM_HDCP_SRM_NEVER_SET                                    NTStatus      = 0xC01E0516\n\tSTATUS_GRAPHICS_OPM_RESOLUTION_TOO_HIGH                                   NTStatus      = 0xC01E0517\n\tSTATUS_GRAPHICS_OPM_ALL_HDCP_HARDWARE_ALREADY_IN_USE                      NTStatus      = 0xC01E0518\n\tSTATUS_GRAPHICS_OPM_PROTECTED_OUTPUT_NO_LONGER_EXISTS                     NTStatus      = 0xC01E051A\n\tSTATUS_GRAPHICS_OPM_PROTECTED_OUTPUT_DOES_NOT_HAVE_COPP_SEMANTICS         NTStatus      = 0xC01E051C\n\tSTATUS_GRAPHICS_OPM_INVALID_INFORMATION_REQUEST                           NTStatus      = 0xC01E051D\n\tSTATUS_GRAPHICS_OPM_DRIVER_INTERNAL_ERROR                                 NTStatus      = 0xC01E051E\n\tSTATUS_GRAPHICS_OPM_PROTECTED_OUTPUT_DOES_NOT_HAVE_OPM_SEMANTICS          NTStatus      = 0xC01E051F\n\tSTATUS_GRAPHICS_OPM_SIGNALING_NOT_SUPPORTED                               NTStatus      = 0xC01E0520\n\tSTATUS_GRAPHICS_OPM_INVALID_CONFIGURATION_REQUEST                         NTStatus      = 0xC01E0521\n\tSTATUS_GRAPHICS_I2C_NOT_SUPPORTED                                         NTStatus      = 0xC01E0580\n\tSTATUS_GRAPHICS_I2C_DEVICE_DOES_NOT_EXIST                                 NTStatus      = 0xC01E0581\n\tSTATUS_GRAPHICS_I2C_ERROR_TRANSMITTING_DATA                               NTStatus      = 0xC01E0582\n\tSTATUS_GRAPHICS_I2C_ERROR_RECEIVING_DATA                                  NTStatus      = 0xC01E0583\n\tSTATUS_GRAPHICS_DDCCI_VCP_NOT_SUPPORTED                                   NTStatus      = 0xC01E0584\n\tSTATUS_GRAPHICS_DDCCI_INVALID_DATA                                        NTStatus      = 0xC01E0585\n\tSTATUS_GRAPHICS_DDCCI_MONITOR_RETURNED_INVALID_TIMING_STATUS_BYTE         NTStatus      = 0xC01E0586\n\tSTATUS_GRAPHICS_DDCCI_INVALID_CAPABILITIES_STRING                         NTStatus      = 0xC01E0587\n\tSTATUS_GRAPHICS_MCA_INTERNAL_ERROR                                        NTStatus      = 0xC01E0588\n\tSTATUS_GRAPHICS_DDCCI_INVALID_MESSAGE_COMMAND                             NTStatus      = 0xC01E0589\n\tSTATUS_GRAPHICS_DDCCI_INVALID_MESSAGE_LENGTH                              NTStatus      = 0xC01E058A\n\tSTATUS_GRAPHICS_DDCCI_INVALID_MESSAGE_CHECKSUM                            NTStatus      = 0xC01E058B\n\tSTATUS_GRAPHICS_INVALID_PHYSICAL_MONITOR_HANDLE                           NTStatus      = 0xC01E058C\n\tSTATUS_GRAPHICS_MONITOR_NO_LONGER_EXISTS                                  NTStatus      = 0xC01E058D\n\tSTATUS_GRAPHICS_ONLY_CONSOLE_SESSION_SUPPORTED                            NTStatus      = 0xC01E05E0\n\tSTATUS_GRAPHICS_NO_DISPLAY_DEVICE_CORRESPONDS_TO_NAME                     NTStatus      = 0xC01E05E1\n\tSTATUS_GRAPHICS_DISPLAY_DEVICE_NOT_ATTACHED_TO_DESKTOP                    NTStatus      = 0xC01E05E2\n\tSTATUS_GRAPHICS_MIRRORING_DEVICES_NOT_SUPPORTED                           NTStatus      = 0xC01E05E3\n\tSTATUS_GRAPHICS_INVALID_POINTER                                           NTStatus      = 0xC01E05E4\n\tSTATUS_GRAPHICS_NO_MONITORS_CORRESPOND_TO_DISPLAY_DEVICE                  NTStatus      = 0xC01E05E5\n\tSTATUS_GRAPHICS_PARAMETER_ARRAY_TOO_SMALL                                 NTStatus      = 0xC01E05E6\n\tSTATUS_GRAPHICS_INTERNAL_ERROR                                            NTStatus      = 0xC01E05E7\n\tSTATUS_GRAPHICS_SESSION_TYPE_CHANGE_IN_PROGRESS                           NTStatus      = 0xC01E05E8\n\tSTATUS_FVE_LOCKED_VOLUME                                                  NTStatus      = 0xC0210000\n\tSTATUS_FVE_NOT_ENCRYPTED                                                  NTStatus      = 0xC0210001\n\tSTATUS_FVE_BAD_INFORMATION                                                NTStatus      = 0xC0210002\n\tSTATUS_FVE_TOO_SMALL                                                      NTStatus      = 0xC0210003\n\tSTATUS_FVE_FAILED_WRONG_FS                                                NTStatus      = 0xC0210004\n\tSTATUS_FVE_BAD_PARTITION_SIZE                                             NTStatus      = 0xC0210005\n\tSTATUS_FVE_FS_NOT_EXTENDED                                                NTStatus      = 0xC0210006\n\tSTATUS_FVE_FS_MOUNTED                                                     NTStatus      = 0xC0210007\n\tSTATUS_FVE_NO_LICENSE                                                     NTStatus      = 0xC0210008\n\tSTATUS_FVE_ACTION_NOT_ALLOWED                                             NTStatus      = 0xC0210009\n\tSTATUS_FVE_BAD_DATA                                                       NTStatus      = 0xC021000A\n\tSTATUS_FVE_VOLUME_NOT_BOUND                                               NTStatus      = 0xC021000B\n\tSTATUS_FVE_NOT_DATA_VOLUME                                                NTStatus      = 0xC021000C\n\tSTATUS_FVE_CONV_READ_ERROR                                                NTStatus      = 0xC021000D\n\tSTATUS_FVE_CONV_WRITE_ERROR                                               NTStatus      = 0xC021000E\n\tSTATUS_FVE_OVERLAPPED_UPDATE                                              NTStatus      = 0xC021000F\n\tSTATUS_FVE_FAILED_SECTOR_SIZE                                             NTStatus      = 0xC0210010\n\tSTATUS_FVE_FAILED_AUTHENTICATION                                          NTStatus      = 0xC0210011\n\tSTATUS_FVE_NOT_OS_VOLUME                                                  NTStatus      = 0xC0210012\n\tSTATUS_FVE_KEYFILE_NOT_FOUND                                              NTStatus      = 0xC0210013\n\tSTATUS_FVE_KEYFILE_INVALID                                                NTStatus      = 0xC0210014\n\tSTATUS_FVE_KEYFILE_NO_VMK                                                 NTStatus      = 0xC0210015\n\tSTATUS_FVE_TPM_DISABLED                                                   NTStatus      = 0xC0210016\n\tSTATUS_FVE_TPM_SRK_AUTH_NOT_ZERO                                          NTStatus      = 0xC0210017\n\tSTATUS_FVE_TPM_INVALID_PCR                                                NTStatus      = 0xC0210018\n\tSTATUS_FVE_TPM_NO_VMK                                                     NTStatus      = 0xC0210019\n\tSTATUS_FVE_PIN_INVALID                                                    NTStatus      = 0xC021001A\n\tSTATUS_FVE_AUTH_INVALID_APPLICATION                                       NTStatus      = 0xC021001B\n\tSTATUS_FVE_AUTH_INVALID_CONFIG                                            NTStatus      = 0xC021001C\n\tSTATUS_FVE_DEBUGGER_ENABLED                                               NTStatus      = 0xC021001D\n\tSTATUS_FVE_DRY_RUN_FAILED                                                 NTStatus      = 0xC021001E\n\tSTATUS_FVE_BAD_METADATA_POINTER                                           NTStatus      = 0xC021001F\n\tSTATUS_FVE_OLD_METADATA_COPY                                              NTStatus      = 0xC0210020\n\tSTATUS_FVE_REBOOT_REQUIRED                                                NTStatus      = 0xC0210021\n\tSTATUS_FVE_RAW_ACCESS                                                     NTStatus      = 0xC0210022\n\tSTATUS_FVE_RAW_BLOCKED                                                    NTStatus      = 0xC0210023\n\tSTATUS_FVE_NO_AUTOUNLOCK_MASTER_KEY                                       NTStatus      = 0xC0210024\n\tSTATUS_FVE_MOR_FAILED                                                     NTStatus      = 0xC0210025\n\tSTATUS_FVE_NO_FEATURE_LICENSE                                             NTStatus      = 0xC0210026\n\tSTATUS_FVE_POLICY_USER_DISABLE_RDV_NOT_ALLOWED                            NTStatus      = 0xC0210027\n\tSTATUS_FVE_CONV_RECOVERY_FAILED                                           NTStatus      = 0xC0210028\n\tSTATUS_FVE_VIRTUALIZED_SPACE_TOO_BIG                                      NTStatus      = 0xC0210029\n\tSTATUS_FVE_INVALID_DATUM_TYPE                                             NTStatus      = 0xC021002A\n\tSTATUS_FVE_VOLUME_TOO_SMALL                                               NTStatus      = 0xC0210030\n\tSTATUS_FVE_ENH_PIN_INVALID                                                NTStatus      = 0xC0210031\n\tSTATUS_FVE_FULL_ENCRYPTION_NOT_ALLOWED_ON_TP_STORAGE                      NTStatus      = 0xC0210032\n\tSTATUS_FVE_WIPE_NOT_ALLOWED_ON_TP_STORAGE                                 NTStatus      = 0xC0210033\n\tSTATUS_FVE_NOT_ALLOWED_ON_CSV_STACK                                       NTStatus      = 0xC0210034\n\tSTATUS_FVE_NOT_ALLOWED_ON_CLUSTER                                         NTStatus      = 0xC0210035\n\tSTATUS_FVE_NOT_ALLOWED_TO_UPGRADE_WHILE_CONVERTING                        NTStatus      = 0xC0210036\n\tSTATUS_FVE_WIPE_CANCEL_NOT_APPLICABLE                                     NTStatus      = 0xC0210037\n\tSTATUS_FVE_EDRIVE_DRY_RUN_FAILED                                          NTStatus      = 0xC0210038\n\tSTATUS_FVE_SECUREBOOT_DISABLED                                            NTStatus      = 0xC0210039\n\tSTATUS_FVE_SECUREBOOT_CONFIG_CHANGE                                       NTStatus      = 0xC021003A\n\tSTATUS_FVE_DEVICE_LOCKEDOUT                                               NTStatus      = 0xC021003B\n\tSTATUS_FVE_VOLUME_EXTEND_PREVENTS_EOW_DECRYPT                             NTStatus      = 0xC021003C\n\tSTATUS_FVE_NOT_DE_VOLUME                                                  NTStatus      = 0xC021003D\n\tSTATUS_FVE_PROTECTION_DISABLED                                            NTStatus      = 0xC021003E\n\tSTATUS_FVE_PROTECTION_CANNOT_BE_DISABLED                                  NTStatus      = 0xC021003F\n\tSTATUS_FVE_OSV_KSR_NOT_ALLOWED                                            NTStatus      = 0xC0210040\n\tSTATUS_FWP_CALLOUT_NOT_FOUND                                              NTStatus      = 0xC0220001\n\tSTATUS_FWP_CONDITION_NOT_FOUND                                            NTStatus      = 0xC0220002\n\tSTATUS_FWP_FILTER_NOT_FOUND                                               NTStatus      = 0xC0220003\n\tSTATUS_FWP_LAYER_NOT_FOUND                                                NTStatus      = 0xC0220004\n\tSTATUS_FWP_PROVIDER_NOT_FOUND                                             NTStatus      = 0xC0220005\n\tSTATUS_FWP_PROVIDER_CONTEXT_NOT_FOUND                                     NTStatus      = 0xC0220006\n\tSTATUS_FWP_SUBLAYER_NOT_FOUND                                             NTStatus      = 0xC0220007\n\tSTATUS_FWP_NOT_FOUND                                                      NTStatus      = 0xC0220008\n\tSTATUS_FWP_ALREADY_EXISTS                                                 NTStatus      = 0xC0220009\n\tSTATUS_FWP_IN_USE                                                         NTStatus      = 0xC022000A\n\tSTATUS_FWP_DYNAMIC_SESSION_IN_PROGRESS                                    NTStatus      = 0xC022000B\n\tSTATUS_FWP_WRONG_SESSION                                                  NTStatus      = 0xC022000C\n\tSTATUS_FWP_NO_TXN_IN_PROGRESS                                             NTStatus      = 0xC022000D\n\tSTATUS_FWP_TXN_IN_PROGRESS                                                NTStatus      = 0xC022000E\n\tSTATUS_FWP_TXN_ABORTED                                                    NTStatus      = 0xC022000F\n\tSTATUS_FWP_SESSION_ABORTED                                                NTStatus      = 0xC0220010\n\tSTATUS_FWP_INCOMPATIBLE_TXN                                               NTStatus      = 0xC0220011\n\tSTATUS_FWP_TIMEOUT                                                        NTStatus      = 0xC0220012\n\tSTATUS_FWP_NET_EVENTS_DISABLED                                            NTStatus      = 0xC0220013\n\tSTATUS_FWP_INCOMPATIBLE_LAYER                                             NTStatus      = 0xC0220014\n\tSTATUS_FWP_KM_CLIENTS_ONLY                                                NTStatus      = 0xC0220015\n\tSTATUS_FWP_LIFETIME_MISMATCH                                              NTStatus      = 0xC0220016\n\tSTATUS_FWP_BUILTIN_OBJECT                                                 NTStatus      = 0xC0220017\n\tSTATUS_FWP_TOO_MANY_CALLOUTS                                              NTStatus      = 0xC0220018\n\tSTATUS_FWP_NOTIFICATION_DROPPED                                           NTStatus      = 0xC0220019\n\tSTATUS_FWP_TRAFFIC_MISMATCH                                               NTStatus      = 0xC022001A\n\tSTATUS_FWP_INCOMPATIBLE_SA_STATE                                          NTStatus      = 0xC022001B\n\tSTATUS_FWP_NULL_POINTER                                                   NTStatus      = 0xC022001C\n\tSTATUS_FWP_INVALID_ENUMERATOR                                             NTStatus      = 0xC022001D\n\tSTATUS_FWP_INVALID_FLAGS                                                  NTStatus      = 0xC022001E\n\tSTATUS_FWP_INVALID_NET_MASK                                               NTStatus      = 0xC022001F\n\tSTATUS_FWP_INVALID_RANGE                                                  NTStatus      = 0xC0220020\n\tSTATUS_FWP_INVALID_INTERVAL                                               NTStatus      = 0xC0220021\n\tSTATUS_FWP_ZERO_LENGTH_ARRAY                                              NTStatus      = 0xC0220022\n\tSTATUS_FWP_NULL_DISPLAY_NAME                                              NTStatus      = 0xC0220023\n\tSTATUS_FWP_INVALID_ACTION_TYPE                                            NTStatus      = 0xC0220024\n\tSTATUS_FWP_INVALID_WEIGHT                                                 NTStatus      = 0xC0220025\n\tSTATUS_FWP_MATCH_TYPE_MISMATCH                                            NTStatus      = 0xC0220026\n\tSTATUS_FWP_TYPE_MISMATCH                                                  NTStatus      = 0xC0220027\n\tSTATUS_FWP_OUT_OF_BOUNDS                                                  NTStatus      = 0xC0220028\n\tSTATUS_FWP_RESERVED                                                       NTStatus      = 0xC0220029\n\tSTATUS_FWP_DUPLICATE_CONDITION                                            NTStatus      = 0xC022002A\n\tSTATUS_FWP_DUPLICATE_KEYMOD                                               NTStatus      = 0xC022002B\n\tSTATUS_FWP_ACTION_INCOMPATIBLE_WITH_LAYER                                 NTStatus      = 0xC022002C\n\tSTATUS_FWP_ACTION_INCOMPATIBLE_WITH_SUBLAYER                              NTStatus      = 0xC022002D\n\tSTATUS_FWP_CONTEXT_INCOMPATIBLE_WITH_LAYER                                NTStatus      = 0xC022002E\n\tSTATUS_FWP_CONTEXT_INCOMPATIBLE_WITH_CALLOUT                              NTStatus      = 0xC022002F\n\tSTATUS_FWP_INCOMPATIBLE_AUTH_METHOD                                       NTStatus      = 0xC0220030\n\tSTATUS_FWP_INCOMPATIBLE_DH_GROUP                                          NTStatus      = 0xC0220031\n\tSTATUS_FWP_EM_NOT_SUPPORTED                                               NTStatus      = 0xC0220032\n\tSTATUS_FWP_NEVER_MATCH                                                    NTStatus      = 0xC0220033\n\tSTATUS_FWP_PROVIDER_CONTEXT_MISMATCH                                      NTStatus      = 0xC0220034\n\tSTATUS_FWP_INVALID_PARAMETER                                              NTStatus      = 0xC0220035\n\tSTATUS_FWP_TOO_MANY_SUBLAYERS                                             NTStatus      = 0xC0220036\n\tSTATUS_FWP_CALLOUT_NOTIFICATION_FAILED                                    NTStatus      = 0xC0220037\n\tSTATUS_FWP_INVALID_AUTH_TRANSFORM                                         NTStatus      = 0xC0220038\n\tSTATUS_FWP_INVALID_CIPHER_TRANSFORM                                       NTStatus      = 0xC0220039\n\tSTATUS_FWP_INCOMPATIBLE_CIPHER_TRANSFORM                                  NTStatus      = 0xC022003A\n\tSTATUS_FWP_INVALID_TRANSFORM_COMBINATION                                  NTStatus      = 0xC022003B\n\tSTATUS_FWP_DUPLICATE_AUTH_METHOD                                          NTStatus      = 0xC022003C\n\tSTATUS_FWP_INVALID_TUNNEL_ENDPOINT                                        NTStatus      = 0xC022003D\n\tSTATUS_FWP_L2_DRIVER_NOT_READY                                            NTStatus      = 0xC022003E\n\tSTATUS_FWP_KEY_DICTATOR_ALREADY_REGISTERED                                NTStatus      = 0xC022003F\n\tSTATUS_FWP_KEY_DICTATION_INVALID_KEYING_MATERIAL                          NTStatus      = 0xC0220040\n\tSTATUS_FWP_CONNECTIONS_DISABLED                                           NTStatus      = 0xC0220041\n\tSTATUS_FWP_INVALID_DNS_NAME                                               NTStatus      = 0xC0220042\n\tSTATUS_FWP_STILL_ON                                                       NTStatus      = 0xC0220043\n\tSTATUS_FWP_IKEEXT_NOT_RUNNING                                             NTStatus      = 0xC0220044\n\tSTATUS_FWP_TCPIP_NOT_READY                                                NTStatus      = 0xC0220100\n\tSTATUS_FWP_INJECT_HANDLE_CLOSING                                          NTStatus      = 0xC0220101\n\tSTATUS_FWP_INJECT_HANDLE_STALE                                            NTStatus      = 0xC0220102\n\tSTATUS_FWP_CANNOT_PEND                                                    NTStatus      = 0xC0220103\n\tSTATUS_FWP_DROP_NOICMP                                                    NTStatus      = 0xC0220104\n\tSTATUS_NDIS_CLOSING                                                       NTStatus      = 0xC0230002\n\tSTATUS_NDIS_BAD_VERSION                                                   NTStatus      = 0xC0230004\n\tSTATUS_NDIS_BAD_CHARACTERISTICS                                           NTStatus      = 0xC0230005\n\tSTATUS_NDIS_ADAPTER_NOT_FOUND                                             NTStatus      = 0xC0230006\n\tSTATUS_NDIS_OPEN_FAILED                                                   NTStatus      = 0xC0230007\n\tSTATUS_NDIS_DEVICE_FAILED                                                 NTStatus      = 0xC0230008\n\tSTATUS_NDIS_MULTICAST_FULL                                                NTStatus      = 0xC0230009\n\tSTATUS_NDIS_MULTICAST_EXISTS                                              NTStatus      = 0xC023000A\n\tSTATUS_NDIS_MULTICAST_NOT_FOUND                                           NTStatus      = 0xC023000B\n\tSTATUS_NDIS_REQUEST_ABORTED                                               NTStatus      = 0xC023000C\n\tSTATUS_NDIS_RESET_IN_PROGRESS                                             NTStatus      = 0xC023000D\n\tSTATUS_NDIS_NOT_SUPPORTED                                                 NTStatus      = 0xC02300BB\n\tSTATUS_NDIS_INVALID_PACKET                                                NTStatus      = 0xC023000F\n\tSTATUS_NDIS_ADAPTER_NOT_READY                                             NTStatus      = 0xC0230011\n\tSTATUS_NDIS_INVALID_LENGTH                                                NTStatus      = 0xC0230014\n\tSTATUS_NDIS_INVALID_DATA                                                  NTStatus      = 0xC0230015\n\tSTATUS_NDIS_BUFFER_TOO_SHORT                                              NTStatus      = 0xC0230016\n\tSTATUS_NDIS_INVALID_OID                                                   NTStatus      = 0xC0230017\n\tSTATUS_NDIS_ADAPTER_REMOVED                                               NTStatus      = 0xC0230018\n\tSTATUS_NDIS_UNSUPPORTED_MEDIA                                             NTStatus      = 0xC0230019\n\tSTATUS_NDIS_GROUP_ADDRESS_IN_USE                                          NTStatus      = 0xC023001A\n\tSTATUS_NDIS_FILE_NOT_FOUND                                                NTStatus      = 0xC023001B\n\tSTATUS_NDIS_ERROR_READING_FILE                                            NTStatus      = 0xC023001C\n\tSTATUS_NDIS_ALREADY_MAPPED                                                NTStatus      = 0xC023001D\n\tSTATUS_NDIS_RESOURCE_CONFLICT                                             NTStatus      = 0xC023001E\n\tSTATUS_NDIS_MEDIA_DISCONNECTED                                            NTStatus      = 0xC023001F\n\tSTATUS_NDIS_INVALID_ADDRESS                                               NTStatus      = 0xC0230022\n\tSTATUS_NDIS_INVALID_DEVICE_REQUEST                                        NTStatus      = 0xC0230010\n\tSTATUS_NDIS_PAUSED                                                        NTStatus      = 0xC023002A\n\tSTATUS_NDIS_INTERFACE_NOT_FOUND                                           NTStatus      = 0xC023002B\n\tSTATUS_NDIS_UNSUPPORTED_REVISION                                          NTStatus      = 0xC023002C\n\tSTATUS_NDIS_INVALID_PORT                                                  NTStatus      = 0xC023002D\n\tSTATUS_NDIS_INVALID_PORT_STATE                                            NTStatus      = 0xC023002E\n\tSTATUS_NDIS_LOW_POWER_STATE                                               NTStatus      = 0xC023002F\n\tSTATUS_NDIS_REINIT_REQUIRED                                               NTStatus      = 0xC0230030\n\tSTATUS_NDIS_NO_QUEUES                                                     NTStatus      = 0xC0230031\n\tSTATUS_NDIS_DOT11_AUTO_CONFIG_ENABLED                                     NTStatus      = 0xC0232000\n\tSTATUS_NDIS_DOT11_MEDIA_IN_USE                                            NTStatus      = 0xC0232001\n\tSTATUS_NDIS_DOT11_POWER_STATE_INVALID                                     NTStatus      = 0xC0232002\n\tSTATUS_NDIS_PM_WOL_PATTERN_LIST_FULL                                      NTStatus      = 0xC0232003\n\tSTATUS_NDIS_PM_PROTOCOL_OFFLOAD_LIST_FULL                                 NTStatus      = 0xC0232004\n\tSTATUS_NDIS_DOT11_AP_CHANNEL_CURRENTLY_NOT_AVAILABLE                      NTStatus      = 0xC0232005\n\tSTATUS_NDIS_DOT11_AP_BAND_CURRENTLY_NOT_AVAILABLE                         NTStatus      = 0xC0232006\n\tSTATUS_NDIS_DOT11_AP_CHANNEL_NOT_ALLOWED                                  NTStatus      = 0xC0232007\n\tSTATUS_NDIS_DOT11_AP_BAND_NOT_ALLOWED                                     NTStatus      = 0xC0232008\n\tSTATUS_NDIS_INDICATION_REQUIRED                                           NTStatus      = 0x40230001\n\tSTATUS_NDIS_OFFLOAD_POLICY                                                NTStatus      = 0xC023100F\n\tSTATUS_NDIS_OFFLOAD_CONNECTION_REJECTED                                   NTStatus      = 0xC0231012\n\tSTATUS_NDIS_OFFLOAD_PATH_REJECTED                                         NTStatus      = 0xC0231013\n\tSTATUS_TPM_ERROR_MASK                                                     NTStatus      = 0xC0290000\n\tSTATUS_TPM_AUTHFAIL                                                       NTStatus      = 0xC0290001\n\tSTATUS_TPM_BADINDEX                                                       NTStatus      = 0xC0290002\n\tSTATUS_TPM_BAD_PARAMETER                                                  NTStatus      = 0xC0290003\n\tSTATUS_TPM_AUDITFAILURE                                                   NTStatus      = 0xC0290004\n\tSTATUS_TPM_CLEAR_DISABLED                                                 NTStatus      = 0xC0290005\n\tSTATUS_TPM_DEACTIVATED                                                    NTStatus      = 0xC0290006\n\tSTATUS_TPM_DISABLED                                                       NTStatus      = 0xC0290007\n\tSTATUS_TPM_DISABLED_CMD                                                   NTStatus      = 0xC0290008\n\tSTATUS_TPM_FAIL                                                           NTStatus      = 0xC0290009\n\tSTATUS_TPM_BAD_ORDINAL                                                    NTStatus      = 0xC029000A\n\tSTATUS_TPM_INSTALL_DISABLED                                               NTStatus      = 0xC029000B\n\tSTATUS_TPM_INVALID_KEYHANDLE                                              NTStatus      = 0xC029000C\n\tSTATUS_TPM_KEYNOTFOUND                                                    NTStatus      = 0xC029000D\n\tSTATUS_TPM_INAPPROPRIATE_ENC                                              NTStatus      = 0xC029000E\n\tSTATUS_TPM_MIGRATEFAIL                                                    NTStatus      = 0xC029000F\n\tSTATUS_TPM_INVALID_PCR_INFO                                               NTStatus      = 0xC0290010\n\tSTATUS_TPM_NOSPACE                                                        NTStatus      = 0xC0290011\n\tSTATUS_TPM_NOSRK                                                          NTStatus      = 0xC0290012\n\tSTATUS_TPM_NOTSEALED_BLOB                                                 NTStatus      = 0xC0290013\n\tSTATUS_TPM_OWNER_SET                                                      NTStatus      = 0xC0290014\n\tSTATUS_TPM_RESOURCES                                                      NTStatus      = 0xC0290015\n\tSTATUS_TPM_SHORTRANDOM                                                    NTStatus      = 0xC0290016\n\tSTATUS_TPM_SIZE                                                           NTStatus      = 0xC0290017\n\tSTATUS_TPM_WRONGPCRVAL                                                    NTStatus      = 0xC0290018\n\tSTATUS_TPM_BAD_PARAM_SIZE                                                 NTStatus      = 0xC0290019\n\tSTATUS_TPM_SHA_THREAD                                                     NTStatus      = 0xC029001A\n\tSTATUS_TPM_SHA_ERROR                                                      NTStatus      = 0xC029001B\n\tSTATUS_TPM_FAILEDSELFTEST                                                 NTStatus      = 0xC029001C\n\tSTATUS_TPM_AUTH2FAIL                                                      NTStatus      = 0xC029001D\n\tSTATUS_TPM_BADTAG                                                         NTStatus      = 0xC029001E\n\tSTATUS_TPM_IOERROR                                                        NTStatus      = 0xC029001F\n\tSTATUS_TPM_ENCRYPT_ERROR                                                  NTStatus      = 0xC0290020\n\tSTATUS_TPM_DECRYPT_ERROR                                                  NTStatus      = 0xC0290021\n\tSTATUS_TPM_INVALID_AUTHHANDLE                                             NTStatus      = 0xC0290022\n\tSTATUS_TPM_NO_ENDORSEMENT                                                 NTStatus      = 0xC0290023\n\tSTATUS_TPM_INVALID_KEYUSAGE                                               NTStatus      = 0xC0290024\n\tSTATUS_TPM_WRONG_ENTITYTYPE                                               NTStatus      = 0xC0290025\n\tSTATUS_TPM_INVALID_POSTINIT                                               NTStatus      = 0xC0290026\n\tSTATUS_TPM_INAPPROPRIATE_SIG                                              NTStatus      = 0xC0290027\n\tSTATUS_TPM_BAD_KEY_PROPERTY                                               NTStatus      = 0xC0290028\n\tSTATUS_TPM_BAD_MIGRATION                                                  NTStatus      = 0xC0290029\n\tSTATUS_TPM_BAD_SCHEME                                                     NTStatus      = 0xC029002A\n\tSTATUS_TPM_BAD_DATASIZE                                                   NTStatus      = 0xC029002B\n\tSTATUS_TPM_BAD_MODE                                                       NTStatus      = 0xC029002C\n\tSTATUS_TPM_BAD_PRESENCE                                                   NTStatus      = 0xC029002D\n\tSTATUS_TPM_BAD_VERSION                                                    NTStatus      = 0xC029002E\n\tSTATUS_TPM_NO_WRAP_TRANSPORT                                              NTStatus      = 0xC029002F\n\tSTATUS_TPM_AUDITFAIL_UNSUCCESSFUL                                         NTStatus      = 0xC0290030\n\tSTATUS_TPM_AUDITFAIL_SUCCESSFUL                                           NTStatus      = 0xC0290031\n\tSTATUS_TPM_NOTRESETABLE                                                   NTStatus      = 0xC0290032\n\tSTATUS_TPM_NOTLOCAL                                                       NTStatus      = 0xC0290033\n\tSTATUS_TPM_BAD_TYPE                                                       NTStatus      = 0xC0290034\n\tSTATUS_TPM_INVALID_RESOURCE                                               NTStatus      = 0xC0290035\n\tSTATUS_TPM_NOTFIPS                                                        NTStatus      = 0xC0290036\n\tSTATUS_TPM_INVALID_FAMILY                                                 NTStatus      = 0xC0290037\n\tSTATUS_TPM_NO_NV_PERMISSION                                               NTStatus      = 0xC0290038\n\tSTATUS_TPM_REQUIRES_SIGN                                                  NTStatus      = 0xC0290039\n\tSTATUS_TPM_KEY_NOTSUPPORTED                                               NTStatus      = 0xC029003A\n\tSTATUS_TPM_AUTH_CONFLICT                                                  NTStatus      = 0xC029003B\n\tSTATUS_TPM_AREA_LOCKED                                                    NTStatus      = 0xC029003C\n\tSTATUS_TPM_BAD_LOCALITY                                                   NTStatus      = 0xC029003D\n\tSTATUS_TPM_READ_ONLY                                                      NTStatus      = 0xC029003E\n\tSTATUS_TPM_PER_NOWRITE                                                    NTStatus      = 0xC029003F\n\tSTATUS_TPM_FAMILYCOUNT                                                    NTStatus      = 0xC0290040\n\tSTATUS_TPM_WRITE_LOCKED                                                   NTStatus      = 0xC0290041\n\tSTATUS_TPM_BAD_ATTRIBUTES                                                 NTStatus      = 0xC0290042\n\tSTATUS_TPM_INVALID_STRUCTURE                                              NTStatus      = 0xC0290043\n\tSTATUS_TPM_KEY_OWNER_CONTROL                                              NTStatus      = 0xC0290044\n\tSTATUS_TPM_BAD_COUNTER                                                    NTStatus      = 0xC0290045\n\tSTATUS_TPM_NOT_FULLWRITE                                                  NTStatus      = 0xC0290046\n\tSTATUS_TPM_CONTEXT_GAP                                                    NTStatus      = 0xC0290047\n\tSTATUS_TPM_MAXNVWRITES                                                    NTStatus      = 0xC0290048\n\tSTATUS_TPM_NOOPERATOR                                                     NTStatus      = 0xC0290049\n\tSTATUS_TPM_RESOURCEMISSING                                                NTStatus      = 0xC029004A\n\tSTATUS_TPM_DELEGATE_LOCK                                                  NTStatus      = 0xC029004B\n\tSTATUS_TPM_DELEGATE_FAMILY                                                NTStatus      = 0xC029004C\n\tSTATUS_TPM_DELEGATE_ADMIN                                                 NTStatus      = 0xC029004D\n\tSTATUS_TPM_TRANSPORT_NOTEXCLUSIVE                                         NTStatus      = 0xC029004E\n\tSTATUS_TPM_OWNER_CONTROL                                                  NTStatus      = 0xC029004F\n\tSTATUS_TPM_DAA_RESOURCES                                                  NTStatus      = 0xC0290050\n\tSTATUS_TPM_DAA_INPUT_DATA0                                                NTStatus      = 0xC0290051\n\tSTATUS_TPM_DAA_INPUT_DATA1                                                NTStatus      = 0xC0290052\n\tSTATUS_TPM_DAA_ISSUER_SETTINGS                                            NTStatus      = 0xC0290053\n\tSTATUS_TPM_DAA_TPM_SETTINGS                                               NTStatus      = 0xC0290054\n\tSTATUS_TPM_DAA_STAGE                                                      NTStatus      = 0xC0290055\n\tSTATUS_TPM_DAA_ISSUER_VALIDITY                                            NTStatus      = 0xC0290056\n\tSTATUS_TPM_DAA_WRONG_W                                                    NTStatus      = 0xC0290057\n\tSTATUS_TPM_BAD_HANDLE                                                     NTStatus      = 0xC0290058\n\tSTATUS_TPM_BAD_DELEGATE                                                   NTStatus      = 0xC0290059\n\tSTATUS_TPM_BADCONTEXT                                                     NTStatus      = 0xC029005A\n\tSTATUS_TPM_TOOMANYCONTEXTS                                                NTStatus      = 0xC029005B\n\tSTATUS_TPM_MA_TICKET_SIGNATURE                                            NTStatus      = 0xC029005C\n\tSTATUS_TPM_MA_DESTINATION                                                 NTStatus      = 0xC029005D\n\tSTATUS_TPM_MA_SOURCE                                                      NTStatus      = 0xC029005E\n\tSTATUS_TPM_MA_AUTHORITY                                                   NTStatus      = 0xC029005F\n\tSTATUS_TPM_PERMANENTEK                                                    NTStatus      = 0xC0290061\n\tSTATUS_TPM_BAD_SIGNATURE                                                  NTStatus      = 0xC0290062\n\tSTATUS_TPM_NOCONTEXTSPACE                                                 NTStatus      = 0xC0290063\n\tSTATUS_TPM_20_E_ASYMMETRIC                                                NTStatus      = 0xC0290081\n\tSTATUS_TPM_20_E_ATTRIBUTES                                                NTStatus      = 0xC0290082\n\tSTATUS_TPM_20_E_HASH                                                      NTStatus      = 0xC0290083\n\tSTATUS_TPM_20_E_VALUE                                                     NTStatus      = 0xC0290084\n\tSTATUS_TPM_20_E_HIERARCHY                                                 NTStatus      = 0xC0290085\n\tSTATUS_TPM_20_E_KEY_SIZE                                                  NTStatus      = 0xC0290087\n\tSTATUS_TPM_20_E_MGF                                                       NTStatus      = 0xC0290088\n\tSTATUS_TPM_20_E_MODE                                                      NTStatus      = 0xC0290089\n\tSTATUS_TPM_20_E_TYPE                                                      NTStatus      = 0xC029008A\n\tSTATUS_TPM_20_E_HANDLE                                                    NTStatus      = 0xC029008B\n\tSTATUS_TPM_20_E_KDF                                                       NTStatus      = 0xC029008C\n\tSTATUS_TPM_20_E_RANGE                                                     NTStatus      = 0xC029008D\n\tSTATUS_TPM_20_E_AUTH_FAIL                                                 NTStatus      = 0xC029008E\n\tSTATUS_TPM_20_E_NONCE                                                     NTStatus      = 0xC029008F\n\tSTATUS_TPM_20_E_PP                                                        NTStatus      = 0xC0290090\n\tSTATUS_TPM_20_E_SCHEME                                                    NTStatus      = 0xC0290092\n\tSTATUS_TPM_20_E_SIZE                                                      NTStatus      = 0xC0290095\n\tSTATUS_TPM_20_E_SYMMETRIC                                                 NTStatus      = 0xC0290096\n\tSTATUS_TPM_20_E_TAG                                                       NTStatus      = 0xC0290097\n\tSTATUS_TPM_20_E_SELECTOR                                                  NTStatus      = 0xC0290098\n\tSTATUS_TPM_20_E_INSUFFICIENT                                              NTStatus      = 0xC029009A\n\tSTATUS_TPM_20_E_SIGNATURE                                                 NTStatus      = 0xC029009B\n\tSTATUS_TPM_20_E_KEY                                                       NTStatus      = 0xC029009C\n\tSTATUS_TPM_20_E_POLICY_FAIL                                               NTStatus      = 0xC029009D\n\tSTATUS_TPM_20_E_INTEGRITY                                                 NTStatus      = 0xC029009F\n\tSTATUS_TPM_20_E_TICKET                                                    NTStatus      = 0xC02900A0\n\tSTATUS_TPM_20_E_RESERVED_BITS                                             NTStatus      = 0xC02900A1\n\tSTATUS_TPM_20_E_BAD_AUTH                                                  NTStatus      = 0xC02900A2\n\tSTATUS_TPM_20_E_EXPIRED                                                   NTStatus      = 0xC02900A3\n\tSTATUS_TPM_20_E_POLICY_CC                                                 NTStatus      = 0xC02900A4\n\tSTATUS_TPM_20_E_BINDING                                                   NTStatus      = 0xC02900A5\n\tSTATUS_TPM_20_E_CURVE                                                     NTStatus      = 0xC02900A6\n\tSTATUS_TPM_20_E_ECC_POINT                                                 NTStatus      = 0xC02900A7\n\tSTATUS_TPM_20_E_INITIALIZE                                                NTStatus      = 0xC0290100\n\tSTATUS_TPM_20_E_FAILURE                                                   NTStatus      = 0xC0290101\n\tSTATUS_TPM_20_E_SEQUENCE                                                  NTStatus      = 0xC0290103\n\tSTATUS_TPM_20_E_PRIVATE                                                   NTStatus      = 0xC029010B\n\tSTATUS_TPM_20_E_HMAC                                                      NTStatus      = 0xC0290119\n\tSTATUS_TPM_20_E_DISABLED                                                  NTStatus      = 0xC0290120\n\tSTATUS_TPM_20_E_EXCLUSIVE                                                 NTStatus      = 0xC0290121\n\tSTATUS_TPM_20_E_ECC_CURVE                                                 NTStatus      = 0xC0290123\n\tSTATUS_TPM_20_E_AUTH_TYPE                                                 NTStatus      = 0xC0290124\n\tSTATUS_TPM_20_E_AUTH_MISSING                                              NTStatus      = 0xC0290125\n\tSTATUS_TPM_20_E_POLICY                                                    NTStatus      = 0xC0290126\n\tSTATUS_TPM_20_E_PCR                                                       NTStatus      = 0xC0290127\n\tSTATUS_TPM_20_E_PCR_CHANGED                                               NTStatus      = 0xC0290128\n\tSTATUS_TPM_20_E_UPGRADE                                                   NTStatus      = 0xC029012D\n\tSTATUS_TPM_20_E_TOO_MANY_CONTEXTS                                         NTStatus      = 0xC029012E\n\tSTATUS_TPM_20_E_AUTH_UNAVAILABLE                                          NTStatus      = 0xC029012F\n\tSTATUS_TPM_20_E_REBOOT                                                    NTStatus      = 0xC0290130\n\tSTATUS_TPM_20_E_UNBALANCED                                                NTStatus      = 0xC0290131\n\tSTATUS_TPM_20_E_COMMAND_SIZE                                              NTStatus      = 0xC0290142\n\tSTATUS_TPM_20_E_COMMAND_CODE                                              NTStatus      = 0xC0290143\n\tSTATUS_TPM_20_E_AUTHSIZE                                                  NTStatus      = 0xC0290144\n\tSTATUS_TPM_20_E_AUTH_CONTEXT                                              NTStatus      = 0xC0290145\n\tSTATUS_TPM_20_E_NV_RANGE                                                  NTStatus      = 0xC0290146\n\tSTATUS_TPM_20_E_NV_SIZE                                                   NTStatus      = 0xC0290147\n\tSTATUS_TPM_20_E_NV_LOCKED                                                 NTStatus      = 0xC0290148\n\tSTATUS_TPM_20_E_NV_AUTHORIZATION                                          NTStatus      = 0xC0290149\n\tSTATUS_TPM_20_E_NV_UNINITIALIZED                                          NTStatus      = 0xC029014A\n\tSTATUS_TPM_20_E_NV_SPACE                                                  NTStatus      = 0xC029014B\n\tSTATUS_TPM_20_E_NV_DEFINED                                                NTStatus      = 0xC029014C\n\tSTATUS_TPM_20_E_BAD_CONTEXT                                               NTStatus      = 0xC0290150\n\tSTATUS_TPM_20_E_CPHASH                                                    NTStatus      = 0xC0290151\n\tSTATUS_TPM_20_E_PARENT                                                    NTStatus      = 0xC0290152\n\tSTATUS_TPM_20_E_NEEDS_TEST                                                NTStatus      = 0xC0290153\n\tSTATUS_TPM_20_E_NO_RESULT                                                 NTStatus      = 0xC0290154\n\tSTATUS_TPM_20_E_SENSITIVE                                                 NTStatus      = 0xC0290155\n\tSTATUS_TPM_COMMAND_BLOCKED                                                NTStatus      = 0xC0290400\n\tSTATUS_TPM_INVALID_HANDLE                                                 NTStatus      = 0xC0290401\n\tSTATUS_TPM_DUPLICATE_VHANDLE                                              NTStatus      = 0xC0290402\n\tSTATUS_TPM_EMBEDDED_COMMAND_BLOCKED                                       NTStatus      = 0xC0290403\n\tSTATUS_TPM_EMBEDDED_COMMAND_UNSUPPORTED                                   NTStatus      = 0xC0290404\n\tSTATUS_TPM_RETRY                                                          NTStatus      = 0xC0290800\n\tSTATUS_TPM_NEEDS_SELFTEST                                                 NTStatus      = 0xC0290801\n\tSTATUS_TPM_DOING_SELFTEST                                                 NTStatus      = 0xC0290802\n\tSTATUS_TPM_DEFEND_LOCK_RUNNING                                            NTStatus      = 0xC0290803\n\tSTATUS_TPM_COMMAND_CANCELED                                               NTStatus      = 0xC0291001\n\tSTATUS_TPM_TOO_MANY_CONTEXTS                                              NTStatus      = 0xC0291002\n\tSTATUS_TPM_NOT_FOUND                                                      NTStatus      = 0xC0291003\n\tSTATUS_TPM_ACCESS_DENIED                                                  NTStatus      = 0xC0291004\n\tSTATUS_TPM_INSUFFICIENT_BUFFER                                            NTStatus      = 0xC0291005\n\tSTATUS_TPM_PPI_FUNCTION_UNSUPPORTED                                       NTStatus      = 0xC0291006\n\tSTATUS_PCP_ERROR_MASK                                                     NTStatus      = 0xC0292000\n\tSTATUS_PCP_DEVICE_NOT_READY                                               NTStatus      = 0xC0292001\n\tSTATUS_PCP_INVALID_HANDLE                                                 NTStatus      = 0xC0292002\n\tSTATUS_PCP_INVALID_PARAMETER                                              NTStatus      = 0xC0292003\n\tSTATUS_PCP_FLAG_NOT_SUPPORTED                                             NTStatus      = 0xC0292004\n\tSTATUS_PCP_NOT_SUPPORTED                                                  NTStatus      = 0xC0292005\n\tSTATUS_PCP_BUFFER_TOO_SMALL                                               NTStatus      = 0xC0292006\n\tSTATUS_PCP_INTERNAL_ERROR                                                 NTStatus      = 0xC0292007\n\tSTATUS_PCP_AUTHENTICATION_FAILED                                          NTStatus      = 0xC0292008\n\tSTATUS_PCP_AUTHENTICATION_IGNORED                                         NTStatus      = 0xC0292009\n\tSTATUS_PCP_POLICY_NOT_FOUND                                               NTStatus      = 0xC029200A\n\tSTATUS_PCP_PROFILE_NOT_FOUND                                              NTStatus      = 0xC029200B\n\tSTATUS_PCP_VALIDATION_FAILED                                              NTStatus      = 0xC029200C\n\tSTATUS_PCP_DEVICE_NOT_FOUND                                               NTStatus      = 0xC029200D\n\tSTATUS_PCP_WRONG_PARENT                                                   NTStatus      = 0xC029200E\n\tSTATUS_PCP_KEY_NOT_LOADED                                                 NTStatus      = 0xC029200F\n\tSTATUS_PCP_NO_KEY_CERTIFICATION                                           NTStatus      = 0xC0292010\n\tSTATUS_PCP_KEY_NOT_FINALIZED                                              NTStatus      = 0xC0292011\n\tSTATUS_PCP_ATTESTATION_CHALLENGE_NOT_SET                                  NTStatus      = 0xC0292012\n\tSTATUS_PCP_NOT_PCR_BOUND                                                  NTStatus      = 0xC0292013\n\tSTATUS_PCP_KEY_ALREADY_FINALIZED                                          NTStatus      = 0xC0292014\n\tSTATUS_PCP_KEY_USAGE_POLICY_NOT_SUPPORTED                                 NTStatus      = 0xC0292015\n\tSTATUS_PCP_KEY_USAGE_POLICY_INVALID                                       NTStatus      = 0xC0292016\n\tSTATUS_PCP_SOFT_KEY_ERROR                                                 NTStatus      = 0xC0292017\n\tSTATUS_PCP_KEY_NOT_AUTHENTICATED                                          NTStatus      = 0xC0292018\n\tSTATUS_PCP_KEY_NOT_AIK                                                    NTStatus      = 0xC0292019\n\tSTATUS_PCP_KEY_NOT_SIGNING_KEY                                            NTStatus      = 0xC029201A\n\tSTATUS_PCP_LOCKED_OUT                                                     NTStatus      = 0xC029201B\n\tSTATUS_PCP_CLAIM_TYPE_NOT_SUPPORTED                                       NTStatus      = 0xC029201C\n\tSTATUS_PCP_TPM_VERSION_NOT_SUPPORTED                                      NTStatus      = 0xC029201D\n\tSTATUS_PCP_BUFFER_LENGTH_MISMATCH                                         NTStatus      = 0xC029201E\n\tSTATUS_PCP_IFX_RSA_KEY_CREATION_BLOCKED                                   NTStatus      = 0xC029201F\n\tSTATUS_PCP_TICKET_MISSING                                                 NTStatus      = 0xC0292020\n\tSTATUS_PCP_RAW_POLICY_NOT_SUPPORTED                                       NTStatus      = 0xC0292021\n\tSTATUS_PCP_KEY_HANDLE_INVALIDATED                                         NTStatus      = 0xC0292022\n\tSTATUS_PCP_UNSUPPORTED_PSS_SALT                                           NTStatus      = 0x40292023\n\tSTATUS_RTPM_CONTEXT_CONTINUE                                              NTStatus      = 0x00293000\n\tSTATUS_RTPM_CONTEXT_COMPLETE                                              NTStatus      = 0x00293001\n\tSTATUS_RTPM_NO_RESULT                                                     NTStatus      = 0xC0293002\n\tSTATUS_RTPM_PCR_READ_INCOMPLETE                                           NTStatus      = 0xC0293003\n\tSTATUS_RTPM_INVALID_CONTEXT                                               NTStatus      = 0xC0293004\n\tSTATUS_RTPM_UNSUPPORTED_CMD                                               NTStatus      = 0xC0293005\n\tSTATUS_TPM_ZERO_EXHAUST_ENABLED                                           NTStatus      = 0xC0294000\n\tSTATUS_HV_INVALID_HYPERCALL_CODE                                          NTStatus      = 0xC0350002\n\tSTATUS_HV_INVALID_HYPERCALL_INPUT                                         NTStatus      = 0xC0350003\n\tSTATUS_HV_INVALID_ALIGNMENT                                               NTStatus      = 0xC0350004\n\tSTATUS_HV_INVALID_PARAMETER                                               NTStatus      = 0xC0350005\n\tSTATUS_HV_ACCESS_DENIED                                                   NTStatus      = 0xC0350006\n\tSTATUS_HV_INVALID_PARTITION_STATE                                         NTStatus      = 0xC0350007\n\tSTATUS_HV_OPERATION_DENIED                                                NTStatus      = 0xC0350008\n\tSTATUS_HV_UNKNOWN_PROPERTY                                                NTStatus      = 0xC0350009\n\tSTATUS_HV_PROPERTY_VALUE_OUT_OF_RANGE                                     NTStatus      = 0xC035000A\n\tSTATUS_HV_INSUFFICIENT_MEMORY                                             NTStatus      = 0xC035000B\n\tSTATUS_HV_PARTITION_TOO_DEEP                                              NTStatus      = 0xC035000C\n\tSTATUS_HV_INVALID_PARTITION_ID                                            NTStatus      = 0xC035000D\n\tSTATUS_HV_INVALID_VP_INDEX                                                NTStatus      = 0xC035000E\n\tSTATUS_HV_INVALID_PORT_ID                                                 NTStatus      = 0xC0350011\n\tSTATUS_HV_INVALID_CONNECTION_ID                                           NTStatus      = 0xC0350012\n\tSTATUS_HV_INSUFFICIENT_BUFFERS                                            NTStatus      = 0xC0350013\n\tSTATUS_HV_NOT_ACKNOWLEDGED                                                NTStatus      = 0xC0350014\n\tSTATUS_HV_INVALID_VP_STATE                                                NTStatus      = 0xC0350015\n\tSTATUS_HV_ACKNOWLEDGED                                                    NTStatus      = 0xC0350016\n\tSTATUS_HV_INVALID_SAVE_RESTORE_STATE                                      NTStatus      = 0xC0350017\n\tSTATUS_HV_INVALID_SYNIC_STATE                                             NTStatus      = 0xC0350018\n\tSTATUS_HV_OBJECT_IN_USE                                                   NTStatus      = 0xC0350019\n\tSTATUS_HV_INVALID_PROXIMITY_DOMAIN_INFO                                   NTStatus      = 0xC035001A\n\tSTATUS_HV_NO_DATA                                                         NTStatus      = 0xC035001B\n\tSTATUS_HV_INACTIVE                                                        NTStatus      = 0xC035001C\n\tSTATUS_HV_NO_RESOURCES                                                    NTStatus      = 0xC035001D\n\tSTATUS_HV_FEATURE_UNAVAILABLE                                             NTStatus      = 0xC035001E\n\tSTATUS_HV_INSUFFICIENT_BUFFER                                             NTStatus      = 0xC0350033\n\tSTATUS_HV_INSUFFICIENT_DEVICE_DOMAINS                                     NTStatus      = 0xC0350038\n\tSTATUS_HV_CPUID_FEATURE_VALIDATION_ERROR                                  NTStatus      = 0xC035003C\n\tSTATUS_HV_CPUID_XSAVE_FEATURE_VALIDATION_ERROR                            NTStatus      = 0xC035003D\n\tSTATUS_HV_PROCESSOR_STARTUP_TIMEOUT                                       NTStatus      = 0xC035003E\n\tSTATUS_HV_SMX_ENABLED                                                     NTStatus      = 0xC035003F\n\tSTATUS_HV_INVALID_LP_INDEX                                                NTStatus      = 0xC0350041\n\tSTATUS_HV_INVALID_REGISTER_VALUE                                          NTStatus      = 0xC0350050\n\tSTATUS_HV_INVALID_VTL_STATE                                               NTStatus      = 0xC0350051\n\tSTATUS_HV_NX_NOT_DETECTED                                                 NTStatus      = 0xC0350055\n\tSTATUS_HV_INVALID_DEVICE_ID                                               NTStatus      = 0xC0350057\n\tSTATUS_HV_INVALID_DEVICE_STATE                                            NTStatus      = 0xC0350058\n\tSTATUS_HV_PENDING_PAGE_REQUESTS                                           NTStatus      = 0x00350059\n\tSTATUS_HV_PAGE_REQUEST_INVALID                                            NTStatus      = 0xC0350060\n\tSTATUS_HV_INVALID_CPU_GROUP_ID                                            NTStatus      = 0xC035006F\n\tSTATUS_HV_INVALID_CPU_GROUP_STATE                                         NTStatus      = 0xC0350070\n\tSTATUS_HV_OPERATION_FAILED                                                NTStatus      = 0xC0350071\n\tSTATUS_HV_NOT_ALLOWED_WITH_NESTED_VIRT_ACTIVE                             NTStatus      = 0xC0350072\n\tSTATUS_HV_INSUFFICIENT_ROOT_MEMORY                                        NTStatus      = 0xC0350073\n\tSTATUS_HV_NOT_PRESENT                                                     NTStatus      = 0xC0351000\n\tSTATUS_VID_DUPLICATE_HANDLER                                              NTStatus      = 0xC0370001\n\tSTATUS_VID_TOO_MANY_HANDLERS                                              NTStatus      = 0xC0370002\n\tSTATUS_VID_QUEUE_FULL                                                     NTStatus      = 0xC0370003\n\tSTATUS_VID_HANDLER_NOT_PRESENT                                            NTStatus      = 0xC0370004\n\tSTATUS_VID_INVALID_OBJECT_NAME                                            NTStatus      = 0xC0370005\n\tSTATUS_VID_PARTITION_NAME_TOO_LONG                                        NTStatus      = 0xC0370006\n\tSTATUS_VID_MESSAGE_QUEUE_NAME_TOO_LONG                                    NTStatus      = 0xC0370007\n\tSTATUS_VID_PARTITION_ALREADY_EXISTS                                       NTStatus      = 0xC0370008\n\tSTATUS_VID_PARTITION_DOES_NOT_EXIST                                       NTStatus      = 0xC0370009\n\tSTATUS_VID_PARTITION_NAME_NOT_FOUND                                       NTStatus      = 0xC037000A\n\tSTATUS_VID_MESSAGE_QUEUE_ALREADY_EXISTS                                   NTStatus      = 0xC037000B\n\tSTATUS_VID_EXCEEDED_MBP_ENTRY_MAP_LIMIT                                   NTStatus      = 0xC037000C\n\tSTATUS_VID_MB_STILL_REFERENCED                                            NTStatus      = 0xC037000D\n\tSTATUS_VID_CHILD_GPA_PAGE_SET_CORRUPTED                                   NTStatus      = 0xC037000E\n\tSTATUS_VID_INVALID_NUMA_SETTINGS                                          NTStatus      = 0xC037000F\n\tSTATUS_VID_INVALID_NUMA_NODE_INDEX                                        NTStatus      = 0xC0370010\n\tSTATUS_VID_NOTIFICATION_QUEUE_ALREADY_ASSOCIATED                          NTStatus      = 0xC0370011\n\tSTATUS_VID_INVALID_MEMORY_BLOCK_HANDLE                                    NTStatus      = 0xC0370012\n\tSTATUS_VID_PAGE_RANGE_OVERFLOW                                            NTStatus      = 0xC0370013\n\tSTATUS_VID_INVALID_MESSAGE_QUEUE_HANDLE                                   NTStatus      = 0xC0370014\n\tSTATUS_VID_INVALID_GPA_RANGE_HANDLE                                       NTStatus      = 0xC0370015\n\tSTATUS_VID_NO_MEMORY_BLOCK_NOTIFICATION_QUEUE                             NTStatus      = 0xC0370016\n\tSTATUS_VID_MEMORY_BLOCK_LOCK_COUNT_EXCEEDED                               NTStatus      = 0xC0370017\n\tSTATUS_VID_INVALID_PPM_HANDLE                                             NTStatus      = 0xC0370018\n\tSTATUS_VID_MBPS_ARE_LOCKED                                                NTStatus      = 0xC0370019\n\tSTATUS_VID_MESSAGE_QUEUE_CLOSED                                           NTStatus      = 0xC037001A\n\tSTATUS_VID_VIRTUAL_PROCESSOR_LIMIT_EXCEEDED                               NTStatus      = 0xC037001B\n\tSTATUS_VID_STOP_PENDING                                                   NTStatus      = 0xC037001C\n\tSTATUS_VID_INVALID_PROCESSOR_STATE                                        NTStatus      = 0xC037001D\n\tSTATUS_VID_EXCEEDED_KM_CONTEXT_COUNT_LIMIT                                NTStatus      = 0xC037001E\n\tSTATUS_VID_KM_INTERFACE_ALREADY_INITIALIZED                               NTStatus      = 0xC037001F\n\tSTATUS_VID_MB_PROPERTY_ALREADY_SET_RESET                                  NTStatus      = 0xC0370020\n\tSTATUS_VID_MMIO_RANGE_DESTROYED                                           NTStatus      = 0xC0370021\n\tSTATUS_VID_INVALID_CHILD_GPA_PAGE_SET                                     NTStatus      = 0xC0370022\n\tSTATUS_VID_RESERVE_PAGE_SET_IS_BEING_USED                                 NTStatus      = 0xC0370023\n\tSTATUS_VID_RESERVE_PAGE_SET_TOO_SMALL                                     NTStatus      = 0xC0370024\n\tSTATUS_VID_MBP_ALREADY_LOCKED_USING_RESERVED_PAGE                         NTStatus      = 0xC0370025\n\tSTATUS_VID_MBP_COUNT_EXCEEDED_LIMIT                                       NTStatus      = 0xC0370026\n\tSTATUS_VID_SAVED_STATE_CORRUPT                                            NTStatus      = 0xC0370027\n\tSTATUS_VID_SAVED_STATE_UNRECOGNIZED_ITEM                                  NTStatus      = 0xC0370028\n\tSTATUS_VID_SAVED_STATE_INCOMPATIBLE                                       NTStatus      = 0xC0370029\n\tSTATUS_VID_VTL_ACCESS_DENIED                                              NTStatus      = 0xC037002A\n\tSTATUS_VID_REMOTE_NODE_PARENT_GPA_PAGES_USED                              NTStatus      = 0x80370001\n\tSTATUS_IPSEC_BAD_SPI                                                      NTStatus      = 0xC0360001\n\tSTATUS_IPSEC_SA_LIFETIME_EXPIRED                                          NTStatus      = 0xC0360002\n\tSTATUS_IPSEC_WRONG_SA                                                     NTStatus      = 0xC0360003\n\tSTATUS_IPSEC_REPLAY_CHECK_FAILED                                          NTStatus      = 0xC0360004\n\tSTATUS_IPSEC_INVALID_PACKET                                               NTStatus      = 0xC0360005\n\tSTATUS_IPSEC_INTEGRITY_CHECK_FAILED                                       NTStatus      = 0xC0360006\n\tSTATUS_IPSEC_CLEAR_TEXT_DROP                                              NTStatus      = 0xC0360007\n\tSTATUS_IPSEC_AUTH_FIREWALL_DROP                                           NTStatus      = 0xC0360008\n\tSTATUS_IPSEC_THROTTLE_DROP                                                NTStatus      = 0xC0360009\n\tSTATUS_IPSEC_DOSP_BLOCK                                                   NTStatus      = 0xC0368000\n\tSTATUS_IPSEC_DOSP_RECEIVED_MULTICAST                                      NTStatus      = 0xC0368001\n\tSTATUS_IPSEC_DOSP_INVALID_PACKET                                          NTStatus      = 0xC0368002\n\tSTATUS_IPSEC_DOSP_STATE_LOOKUP_FAILED                                     NTStatus      = 0xC0368003\n\tSTATUS_IPSEC_DOSP_MAX_ENTRIES                                             NTStatus      = 0xC0368004\n\tSTATUS_IPSEC_DOSP_KEYMOD_NOT_ALLOWED                                      NTStatus      = 0xC0368005\n\tSTATUS_IPSEC_DOSP_MAX_PER_IP_RATELIMIT_QUEUES                             NTStatus      = 0xC0368006\n\tSTATUS_VOLMGR_INCOMPLETE_REGENERATION                                     NTStatus      = 0x80380001\n\tSTATUS_VOLMGR_INCOMPLETE_DISK_MIGRATION                                   NTStatus      = 0x80380002\n\tSTATUS_VOLMGR_DATABASE_FULL                                               NTStatus      = 0xC0380001\n\tSTATUS_VOLMGR_DISK_CONFIGURATION_CORRUPTED                                NTStatus      = 0xC0380002\n\tSTATUS_VOLMGR_DISK_CONFIGURATION_NOT_IN_SYNC                              NTStatus      = 0xC0380003\n\tSTATUS_VOLMGR_PACK_CONFIG_UPDATE_FAILED                                   NTStatus      = 0xC0380004\n\tSTATUS_VOLMGR_DISK_CONTAINS_NON_SIMPLE_VOLUME                             NTStatus      = 0xC0380005\n\tSTATUS_VOLMGR_DISK_DUPLICATE                                              NTStatus      = 0xC0380006\n\tSTATUS_VOLMGR_DISK_DYNAMIC                                                NTStatus      = 0xC0380007\n\tSTATUS_VOLMGR_DISK_ID_INVALID                                             NTStatus      = 0xC0380008\n\tSTATUS_VOLMGR_DISK_INVALID                                                NTStatus      = 0xC0380009\n\tSTATUS_VOLMGR_DISK_LAST_VOTER                                             NTStatus      = 0xC038000A\n\tSTATUS_VOLMGR_DISK_LAYOUT_INVALID                                         NTStatus      = 0xC038000B\n\tSTATUS_VOLMGR_DISK_LAYOUT_NON_BASIC_BETWEEN_BASIC_PARTITIONS              NTStatus      = 0xC038000C\n\tSTATUS_VOLMGR_DISK_LAYOUT_NOT_CYLINDER_ALIGNED                            NTStatus      = 0xC038000D\n\tSTATUS_VOLMGR_DISK_LAYOUT_PARTITIONS_TOO_SMALL                            NTStatus      = 0xC038000E\n\tSTATUS_VOLMGR_DISK_LAYOUT_PRIMARY_BETWEEN_LOGICAL_PARTITIONS              NTStatus      = 0xC038000F\n\tSTATUS_VOLMGR_DISK_LAYOUT_TOO_MANY_PARTITIONS                             NTStatus      = 0xC0380010\n\tSTATUS_VOLMGR_DISK_MISSING                                                NTStatus      = 0xC0380011\n\tSTATUS_VOLMGR_DISK_NOT_EMPTY                                              NTStatus      = 0xC0380012\n\tSTATUS_VOLMGR_DISK_NOT_ENOUGH_SPACE                                       NTStatus      = 0xC0380013\n\tSTATUS_VOLMGR_DISK_REVECTORING_FAILED                                     NTStatus      = 0xC0380014\n\tSTATUS_VOLMGR_DISK_SECTOR_SIZE_INVALID                                    NTStatus      = 0xC0380015\n\tSTATUS_VOLMGR_DISK_SET_NOT_CONTAINED                                      NTStatus      = 0xC0380016\n\tSTATUS_VOLMGR_DISK_USED_BY_MULTIPLE_MEMBERS                               NTStatus      = 0xC0380017\n\tSTATUS_VOLMGR_DISK_USED_BY_MULTIPLE_PLEXES                                NTStatus      = 0xC0380018\n\tSTATUS_VOLMGR_DYNAMIC_DISK_NOT_SUPPORTED                                  NTStatus      = 0xC0380019\n\tSTATUS_VOLMGR_EXTENT_ALREADY_USED                                         NTStatus      = 0xC038001A\n\tSTATUS_VOLMGR_EXTENT_NOT_CONTIGUOUS                                       NTStatus      = 0xC038001B\n\tSTATUS_VOLMGR_EXTENT_NOT_IN_PUBLIC_REGION                                 NTStatus      = 0xC038001C\n\tSTATUS_VOLMGR_EXTENT_NOT_SECTOR_ALIGNED                                   NTStatus      = 0xC038001D\n\tSTATUS_VOLMGR_EXTENT_OVERLAPS_EBR_PARTITION                               NTStatus      = 0xC038001E\n\tSTATUS_VOLMGR_EXTENT_VOLUME_LENGTHS_DO_NOT_MATCH                          NTStatus      = 0xC038001F\n\tSTATUS_VOLMGR_FAULT_TOLERANT_NOT_SUPPORTED                                NTStatus      = 0xC0380020\n\tSTATUS_VOLMGR_INTERLEAVE_LENGTH_INVALID                                   NTStatus      = 0xC0380021\n\tSTATUS_VOLMGR_MAXIMUM_REGISTERED_USERS                                    NTStatus      = 0xC0380022\n\tSTATUS_VOLMGR_MEMBER_IN_SYNC                                              NTStatus      = 0xC0380023\n\tSTATUS_VOLMGR_MEMBER_INDEX_DUPLICATE                                      NTStatus      = 0xC0380024\n\tSTATUS_VOLMGR_MEMBER_INDEX_INVALID                                        NTStatus      = 0xC0380025\n\tSTATUS_VOLMGR_MEMBER_MISSING                                              NTStatus      = 0xC0380026\n\tSTATUS_VOLMGR_MEMBER_NOT_DETACHED                                         NTStatus      = 0xC0380027\n\tSTATUS_VOLMGR_MEMBER_REGENERATING                                         NTStatus      = 0xC0380028\n\tSTATUS_VOLMGR_ALL_DISKS_FAILED                                            NTStatus      = 0xC0380029\n\tSTATUS_VOLMGR_NO_REGISTERED_USERS                                         NTStatus      = 0xC038002A\n\tSTATUS_VOLMGR_NO_SUCH_USER                                                NTStatus      = 0xC038002B\n\tSTATUS_VOLMGR_NOTIFICATION_RESET                                          NTStatus      = 0xC038002C\n\tSTATUS_VOLMGR_NUMBER_OF_MEMBERS_INVALID                                   NTStatus      = 0xC038002D\n\tSTATUS_VOLMGR_NUMBER_OF_PLEXES_INVALID                                    NTStatus      = 0xC038002E\n\tSTATUS_VOLMGR_PACK_DUPLICATE                                              NTStatus      = 0xC038002F\n\tSTATUS_VOLMGR_PACK_ID_INVALID                                             NTStatus      = 0xC0380030\n\tSTATUS_VOLMGR_PACK_INVALID                                                NTStatus      = 0xC0380031\n\tSTATUS_VOLMGR_PACK_NAME_INVALID                                           NTStatus      = 0xC0380032\n\tSTATUS_VOLMGR_PACK_OFFLINE                                                NTStatus      = 0xC0380033\n\tSTATUS_VOLMGR_PACK_HAS_QUORUM                                             NTStatus      = 0xC0380034\n\tSTATUS_VOLMGR_PACK_WITHOUT_QUORUM                                         NTStatus      = 0xC0380035\n\tSTATUS_VOLMGR_PARTITION_STYLE_INVALID                                     NTStatus      = 0xC0380036\n\tSTATUS_VOLMGR_PARTITION_UPDATE_FAILED                                     NTStatus      = 0xC0380037\n\tSTATUS_VOLMGR_PLEX_IN_SYNC                                                NTStatus      = 0xC0380038\n\tSTATUS_VOLMGR_PLEX_INDEX_DUPLICATE                                        NTStatus      = 0xC0380039\n\tSTATUS_VOLMGR_PLEX_INDEX_INVALID                                          NTStatus      = 0xC038003A\n\tSTATUS_VOLMGR_PLEX_LAST_ACTIVE                                            NTStatus      = 0xC038003B\n\tSTATUS_VOLMGR_PLEX_MISSING                                                NTStatus      = 0xC038003C\n\tSTATUS_VOLMGR_PLEX_REGENERATING                                           NTStatus      = 0xC038003D\n\tSTATUS_VOLMGR_PLEX_TYPE_INVALID                                           NTStatus      = 0xC038003E\n\tSTATUS_VOLMGR_PLEX_NOT_RAID5                                              NTStatus      = 0xC038003F\n\tSTATUS_VOLMGR_PLEX_NOT_SIMPLE                                             NTStatus      = 0xC0380040\n\tSTATUS_VOLMGR_STRUCTURE_SIZE_INVALID                                      NTStatus      = 0xC0380041\n\tSTATUS_VOLMGR_TOO_MANY_NOTIFICATION_REQUESTS                              NTStatus      = 0xC0380042\n\tSTATUS_VOLMGR_TRANSACTION_IN_PROGRESS                                     NTStatus      = 0xC0380043\n\tSTATUS_VOLMGR_UNEXPECTED_DISK_LAYOUT_CHANGE                               NTStatus      = 0xC0380044\n\tSTATUS_VOLMGR_VOLUME_CONTAINS_MISSING_DISK                                NTStatus      = 0xC0380045\n\tSTATUS_VOLMGR_VOLUME_ID_INVALID                                           NTStatus      = 0xC0380046\n\tSTATUS_VOLMGR_VOLUME_LENGTH_INVALID                                       NTStatus      = 0xC0380047\n\tSTATUS_VOLMGR_VOLUME_LENGTH_NOT_SECTOR_SIZE_MULTIPLE                      NTStatus      = 0xC0380048\n\tSTATUS_VOLMGR_VOLUME_NOT_MIRRORED                                         NTStatus      = 0xC0380049\n\tSTATUS_VOLMGR_VOLUME_NOT_RETAINED                                         NTStatus      = 0xC038004A\n\tSTATUS_VOLMGR_VOLUME_OFFLINE                                              NTStatus      = 0xC038004B\n\tSTATUS_VOLMGR_VOLUME_RETAINED                                             NTStatus      = 0xC038004C\n\tSTATUS_VOLMGR_NUMBER_OF_EXTENTS_INVALID                                   NTStatus      = 0xC038004D\n\tSTATUS_VOLMGR_DIFFERENT_SECTOR_SIZE                                       NTStatus      = 0xC038004E\n\tSTATUS_VOLMGR_BAD_BOOT_DISK                                               NTStatus      = 0xC038004F\n\tSTATUS_VOLMGR_PACK_CONFIG_OFFLINE                                         NTStatus      = 0xC0380050\n\tSTATUS_VOLMGR_PACK_CONFIG_ONLINE                                          NTStatus      = 0xC0380051\n\tSTATUS_VOLMGR_NOT_PRIMARY_PACK                                            NTStatus      = 0xC0380052\n\tSTATUS_VOLMGR_PACK_LOG_UPDATE_FAILED                                      NTStatus      = 0xC0380053\n\tSTATUS_VOLMGR_NUMBER_OF_DISKS_IN_PLEX_INVALID                             NTStatus      = 0xC0380054\n\tSTATUS_VOLMGR_NUMBER_OF_DISKS_IN_MEMBER_INVALID                           NTStatus      = 0xC0380055\n\tSTATUS_VOLMGR_VOLUME_MIRRORED                                             NTStatus      = 0xC0380056\n\tSTATUS_VOLMGR_PLEX_NOT_SIMPLE_SPANNED                                     NTStatus      = 0xC0380057\n\tSTATUS_VOLMGR_NO_VALID_LOG_COPIES                                         NTStatus      = 0xC0380058\n\tSTATUS_VOLMGR_PRIMARY_PACK_PRESENT                                        NTStatus      = 0xC0380059\n\tSTATUS_VOLMGR_NUMBER_OF_DISKS_INVALID                                     NTStatus      = 0xC038005A\n\tSTATUS_VOLMGR_MIRROR_NOT_SUPPORTED                                        NTStatus      = 0xC038005B\n\tSTATUS_VOLMGR_RAID5_NOT_SUPPORTED                                         NTStatus      = 0xC038005C\n\tSTATUS_BCD_NOT_ALL_ENTRIES_IMPORTED                                       NTStatus      = 0x80390001\n\tSTATUS_BCD_TOO_MANY_ELEMENTS                                              NTStatus      = 0xC0390002\n\tSTATUS_BCD_NOT_ALL_ENTRIES_SYNCHRONIZED                                   NTStatus      = 0x80390003\n\tSTATUS_VHD_DRIVE_FOOTER_MISSING                                           NTStatus      = 0xC03A0001\n\tSTATUS_VHD_DRIVE_FOOTER_CHECKSUM_MISMATCH                                 NTStatus      = 0xC03A0002\n\tSTATUS_VHD_DRIVE_FOOTER_CORRUPT                                           NTStatus      = 0xC03A0003\n\tSTATUS_VHD_FORMAT_UNKNOWN                                                 NTStatus      = 0xC03A0004\n\tSTATUS_VHD_FORMAT_UNSUPPORTED_VERSION                                     NTStatus      = 0xC03A0005\n\tSTATUS_VHD_SPARSE_HEADER_CHECKSUM_MISMATCH                                NTStatus      = 0xC03A0006\n\tSTATUS_VHD_SPARSE_HEADER_UNSUPPORTED_VERSION                              NTStatus      = 0xC03A0007\n\tSTATUS_VHD_SPARSE_HEADER_CORRUPT                                          NTStatus      = 0xC03A0008\n\tSTATUS_VHD_BLOCK_ALLOCATION_FAILURE                                       NTStatus      = 0xC03A0009\n\tSTATUS_VHD_BLOCK_ALLOCATION_TABLE_CORRUPT                                 NTStatus      = 0xC03A000A\n\tSTATUS_VHD_INVALID_BLOCK_SIZE                                             NTStatus      = 0xC03A000B\n\tSTATUS_VHD_BITMAP_MISMATCH                                                NTStatus      = 0xC03A000C\n\tSTATUS_VHD_PARENT_VHD_NOT_FOUND                                           NTStatus      = 0xC03A000D\n\tSTATUS_VHD_CHILD_PARENT_ID_MISMATCH                                       NTStatus      = 0xC03A000E\n\tSTATUS_VHD_CHILD_PARENT_TIMESTAMP_MISMATCH                                NTStatus      = 0xC03A000F\n\tSTATUS_VHD_METADATA_READ_FAILURE                                          NTStatus      = 0xC03A0010\n\tSTATUS_VHD_METADATA_WRITE_FAILURE                                         NTStatus      = 0xC03A0011\n\tSTATUS_VHD_INVALID_SIZE                                                   NTStatus      = 0xC03A0012\n\tSTATUS_VHD_INVALID_FILE_SIZE                                              NTStatus      = 0xC03A0013\n\tSTATUS_VIRTDISK_PROVIDER_NOT_FOUND                                        NTStatus      = 0xC03A0014\n\tSTATUS_VIRTDISK_NOT_VIRTUAL_DISK                                          NTStatus      = 0xC03A0015\n\tSTATUS_VHD_PARENT_VHD_ACCESS_DENIED                                       NTStatus      = 0xC03A0016\n\tSTATUS_VHD_CHILD_PARENT_SIZE_MISMATCH                                     NTStatus      = 0xC03A0017\n\tSTATUS_VHD_DIFFERENCING_CHAIN_CYCLE_DETECTED                              NTStatus      = 0xC03A0018\n\tSTATUS_VHD_DIFFERENCING_CHAIN_ERROR_IN_PARENT                             NTStatus      = 0xC03A0019\n\tSTATUS_VIRTUAL_DISK_LIMITATION                                            NTStatus      = 0xC03A001A\n\tSTATUS_VHD_INVALID_TYPE                                                   NTStatus      = 0xC03A001B\n\tSTATUS_VHD_INVALID_STATE                                                  NTStatus      = 0xC03A001C\n\tSTATUS_VIRTDISK_UNSUPPORTED_DISK_SECTOR_SIZE                              NTStatus      = 0xC03A001D\n\tSTATUS_VIRTDISK_DISK_ALREADY_OWNED                                        NTStatus      = 0xC03A001E\n\tSTATUS_VIRTDISK_DISK_ONLINE_AND_WRITABLE                                  NTStatus      = 0xC03A001F\n\tSTATUS_CTLOG_TRACKING_NOT_INITIALIZED                                     NTStatus      = 0xC03A0020\n\tSTATUS_CTLOG_LOGFILE_SIZE_EXCEEDED_MAXSIZE                                NTStatus      = 0xC03A0021\n\tSTATUS_CTLOG_VHD_CHANGED_OFFLINE                                          NTStatus      = 0xC03A0022\n\tSTATUS_CTLOG_INVALID_TRACKING_STATE                                       NTStatus      = 0xC03A0023\n\tSTATUS_CTLOG_INCONSISTENT_TRACKING_FILE                                   NTStatus      = 0xC03A0024\n\tSTATUS_VHD_METADATA_FULL                                                  NTStatus      = 0xC03A0028\n\tSTATUS_VHD_INVALID_CHANGE_TRACKING_ID                                     NTStatus      = 0xC03A0029\n\tSTATUS_VHD_CHANGE_TRACKING_DISABLED                                       NTStatus      = 0xC03A002A\n\tSTATUS_VHD_MISSING_CHANGE_TRACKING_INFORMATION                            NTStatus      = 0xC03A0030\n\tSTATUS_VHD_RESIZE_WOULD_TRUNCATE_DATA                                     NTStatus      = 0xC03A0031\n\tSTATUS_VHD_COULD_NOT_COMPUTE_MINIMUM_VIRTUAL_SIZE                         NTStatus      = 0xC03A0032\n\tSTATUS_VHD_ALREADY_AT_OR_BELOW_MINIMUM_VIRTUAL_SIZE                       NTStatus      = 0xC03A0033\n\tSTATUS_QUERY_STORAGE_ERROR                                                NTStatus      = 0x803A0001\n\tSTATUS_GDI_HANDLE_LEAK                                                    NTStatus      = 0x803F0001\n\tSTATUS_RKF_KEY_NOT_FOUND                                                  NTStatus      = 0xC0400001\n\tSTATUS_RKF_DUPLICATE_KEY                                                  NTStatus      = 0xC0400002\n\tSTATUS_RKF_BLOB_FULL                                                      NTStatus      = 0xC0400003\n\tSTATUS_RKF_STORE_FULL                                                     NTStatus      = 0xC0400004\n\tSTATUS_RKF_FILE_BLOCKED                                                   NTStatus      = 0xC0400005\n\tSTATUS_RKF_ACTIVE_KEY                                                     NTStatus      = 0xC0400006\n\tSTATUS_RDBSS_RESTART_OPERATION                                            NTStatus      = 0xC0410001\n\tSTATUS_RDBSS_CONTINUE_OPERATION                                           NTStatus      = 0xC0410002\n\tSTATUS_RDBSS_POST_OPERATION                                               NTStatus      = 0xC0410003\n\tSTATUS_RDBSS_RETRY_LOOKUP                                                 NTStatus      = 0xC0410004\n\tSTATUS_BTH_ATT_INVALID_HANDLE                                             NTStatus      = 0xC0420001\n\tSTATUS_BTH_ATT_READ_NOT_PERMITTED                                         NTStatus      = 0xC0420002\n\tSTATUS_BTH_ATT_WRITE_NOT_PERMITTED                                        NTStatus      = 0xC0420003\n\tSTATUS_BTH_ATT_INVALID_PDU                                                NTStatus      = 0xC0420004\n\tSTATUS_BTH_ATT_INSUFFICIENT_AUTHENTICATION                                NTStatus      = 0xC0420005\n\tSTATUS_BTH_ATT_REQUEST_NOT_SUPPORTED                                      NTStatus      = 0xC0420006\n\tSTATUS_BTH_ATT_INVALID_OFFSET                                             NTStatus      = 0xC0420007\n\tSTATUS_BTH_ATT_INSUFFICIENT_AUTHORIZATION                                 NTStatus      = 0xC0420008\n\tSTATUS_BTH_ATT_PREPARE_QUEUE_FULL                                         NTStatus      = 0xC0420009\n\tSTATUS_BTH_ATT_ATTRIBUTE_NOT_FOUND                                        NTStatus      = 0xC042000A\n\tSTATUS_BTH_ATT_ATTRIBUTE_NOT_LONG                                         NTStatus      = 0xC042000B\n\tSTATUS_BTH_ATT_INSUFFICIENT_ENCRYPTION_KEY_SIZE                           NTStatus      = 0xC042000C\n\tSTATUS_BTH_ATT_INVALID_ATTRIBUTE_VALUE_LENGTH                             NTStatus      = 0xC042000D\n\tSTATUS_BTH_ATT_UNLIKELY                                                   NTStatus      = 0xC042000E\n\tSTATUS_BTH_ATT_INSUFFICIENT_ENCRYPTION                                    NTStatus      = 0xC042000F\n\tSTATUS_BTH_ATT_UNSUPPORTED_GROUP_TYPE                                     NTStatus      = 0xC0420010\n\tSTATUS_BTH_ATT_INSUFFICIENT_RESOURCES                                     NTStatus      = 0xC0420011\n\tSTATUS_BTH_ATT_UNKNOWN_ERROR                                              NTStatus      = 0xC0421000\n\tSTATUS_SECUREBOOT_ROLLBACK_DETECTED                                       NTStatus      = 0xC0430001\n\tSTATUS_SECUREBOOT_POLICY_VIOLATION                                        NTStatus      = 0xC0430002\n\tSTATUS_SECUREBOOT_INVALID_POLICY                                          NTStatus      = 0xC0430003\n\tSTATUS_SECUREBOOT_POLICY_PUBLISHER_NOT_FOUND                              NTStatus      = 0xC0430004\n\tSTATUS_SECUREBOOT_POLICY_NOT_SIGNED                                       NTStatus      = 0xC0430005\n\tSTATUS_SECUREBOOT_NOT_ENABLED                                             NTStatus      = 0x80430006\n\tSTATUS_SECUREBOOT_FILE_REPLACED                                           NTStatus      = 0xC0430007\n\tSTATUS_SECUREBOOT_POLICY_NOT_AUTHORIZED                                   NTStatus      = 0xC0430008\n\tSTATUS_SECUREBOOT_POLICY_UNKNOWN                                          NTStatus      = 0xC0430009\n\tSTATUS_SECUREBOOT_POLICY_MISSING_ANTIROLLBACKVERSION                      NTStatus      = 0xC043000A\n\tSTATUS_SECUREBOOT_PLATFORM_ID_MISMATCH                                    NTStatus      = 0xC043000B\n\tSTATUS_SECUREBOOT_POLICY_ROLLBACK_DETECTED                                NTStatus      = 0xC043000C\n\tSTATUS_SECUREBOOT_POLICY_UPGRADE_MISMATCH                                 NTStatus      = 0xC043000D\n\tSTATUS_SECUREBOOT_REQUIRED_POLICY_FILE_MISSING                            NTStatus      = 0xC043000E\n\tSTATUS_SECUREBOOT_NOT_BASE_POLICY                                         NTStatus      = 0xC043000F\n\tSTATUS_SECUREBOOT_NOT_SUPPLEMENTAL_POLICY                                 NTStatus      = 0xC0430010\n\tSTATUS_PLATFORM_MANIFEST_NOT_AUTHORIZED                                   NTStatus      = 0xC0EB0001\n\tSTATUS_PLATFORM_MANIFEST_INVALID                                          NTStatus      = 0xC0EB0002\n\tSTATUS_PLATFORM_MANIFEST_FILE_NOT_AUTHORIZED                              NTStatus      = 0xC0EB0003\n\tSTATUS_PLATFORM_MANIFEST_CATALOG_NOT_AUTHORIZED                           NTStatus      = 0xC0EB0004\n\tSTATUS_PLATFORM_MANIFEST_BINARY_ID_NOT_FOUND                              NTStatus      = 0xC0EB0005\n\tSTATUS_PLATFORM_MANIFEST_NOT_ACTIVE                                       NTStatus      = 0xC0EB0006\n\tSTATUS_PLATFORM_MANIFEST_NOT_SIGNED                                       NTStatus      = 0xC0EB0007\n\tSTATUS_SYSTEM_INTEGRITY_ROLLBACK_DETECTED                                 NTStatus      = 0xC0E90001\n\tSTATUS_SYSTEM_INTEGRITY_POLICY_VIOLATION                                  NTStatus      = 0xC0E90002\n\tSTATUS_SYSTEM_INTEGRITY_INVALID_POLICY                                    NTStatus      = 0xC0E90003\n\tSTATUS_SYSTEM_INTEGRITY_POLICY_NOT_SIGNED                                 NTStatus      = 0xC0E90004\n\tSTATUS_SYSTEM_INTEGRITY_TOO_MANY_POLICIES                                 NTStatus      = 0xC0E90005\n\tSTATUS_SYSTEM_INTEGRITY_SUPPLEMENTAL_POLICY_NOT_AUTHORIZED                NTStatus      = 0xC0E90006\n\tSTATUS_NO_APPLICABLE_APP_LICENSES_FOUND                                   NTStatus      = 0xC0EA0001\n\tSTATUS_CLIP_LICENSE_NOT_FOUND                                             NTStatus      = 0xC0EA0002\n\tSTATUS_CLIP_DEVICE_LICENSE_MISSING                                        NTStatus      = 0xC0EA0003\n\tSTATUS_CLIP_LICENSE_INVALID_SIGNATURE                                     NTStatus      = 0xC0EA0004\n\tSTATUS_CLIP_KEYHOLDER_LICENSE_MISSING_OR_INVALID                          NTStatus      = 0xC0EA0005\n\tSTATUS_CLIP_LICENSE_EXPIRED                                               NTStatus      = 0xC0EA0006\n\tSTATUS_CLIP_LICENSE_SIGNED_BY_UNKNOWN_SOURCE                              NTStatus      = 0xC0EA0007\n\tSTATUS_CLIP_LICENSE_NOT_SIGNED                                            NTStatus      = 0xC0EA0008\n\tSTATUS_CLIP_LICENSE_HARDWARE_ID_OUT_OF_TOLERANCE                          NTStatus      = 0xC0EA0009\n\tSTATUS_CLIP_LICENSE_DEVICE_ID_MISMATCH                                    NTStatus      = 0xC0EA000A\n\tSTATUS_AUDIO_ENGINE_NODE_NOT_FOUND                                        NTStatus      = 0xC0440001\n\tSTATUS_HDAUDIO_EMPTY_CONNECTION_LIST                                      NTStatus      = 0xC0440002\n\tSTATUS_HDAUDIO_CONNECTION_LIST_NOT_SUPPORTED                              NTStatus      = 0xC0440003\n\tSTATUS_HDAUDIO_NO_LOGICAL_DEVICES_CREATED                                 NTStatus      = 0xC0440004\n\tSTATUS_HDAUDIO_NULL_LINKED_LIST_ENTRY                                     NTStatus      = 0xC0440005\n\tSTATUS_SPACES_REPAIRED                                                    NTStatus      = 0x00E70000\n\tSTATUS_SPACES_PAUSE                                                       NTStatus      = 0x00E70001\n\tSTATUS_SPACES_COMPLETE                                                    NTStatus      = 0x00E70002\n\tSTATUS_SPACES_REDIRECT                                                    NTStatus      = 0x00E70003\n\tSTATUS_SPACES_FAULT_DOMAIN_TYPE_INVALID                                   NTStatus      = 0xC0E70001\n\tSTATUS_SPACES_RESILIENCY_TYPE_INVALID                                     NTStatus      = 0xC0E70003\n\tSTATUS_SPACES_DRIVE_SECTOR_SIZE_INVALID                                   NTStatus      = 0xC0E70004\n\tSTATUS_SPACES_DRIVE_REDUNDANCY_INVALID                                    NTStatus      = 0xC0E70006\n\tSTATUS_SPACES_NUMBER_OF_DATA_COPIES_INVALID                               NTStatus      = 0xC0E70007\n\tSTATUS_SPACES_INTERLEAVE_LENGTH_INVALID                                   NTStatus      = 0xC0E70009\n\tSTATUS_SPACES_NUMBER_OF_COLUMNS_INVALID                                   NTStatus      = 0xC0E7000A\n\tSTATUS_SPACES_NOT_ENOUGH_DRIVES                                           NTStatus      = 0xC0E7000B\n\tSTATUS_SPACES_EXTENDED_ERROR                                              NTStatus      = 0xC0E7000C\n\tSTATUS_SPACES_PROVISIONING_TYPE_INVALID                                   NTStatus      = 0xC0E7000D\n\tSTATUS_SPACES_ALLOCATION_SIZE_INVALID                                     NTStatus      = 0xC0E7000E\n\tSTATUS_SPACES_ENCLOSURE_AWARE_INVALID                                     NTStatus      = 0xC0E7000F\n\tSTATUS_SPACES_WRITE_CACHE_SIZE_INVALID                                    NTStatus      = 0xC0E70010\n\tSTATUS_SPACES_NUMBER_OF_GROUPS_INVALID                                    NTStatus      = 0xC0E70011\n\tSTATUS_SPACES_DRIVE_OPERATIONAL_STATE_INVALID                             NTStatus      = 0xC0E70012\n\tSTATUS_SPACES_UPDATE_COLUMN_STATE                                         NTStatus      = 0xC0E70013\n\tSTATUS_SPACES_MAP_REQUIRED                                                NTStatus      = 0xC0E70014\n\tSTATUS_SPACES_UNSUPPORTED_VERSION                                         NTStatus      = 0xC0E70015\n\tSTATUS_SPACES_CORRUPT_METADATA                                            NTStatus      = 0xC0E70016\n\tSTATUS_SPACES_DRT_FULL                                                    NTStatus      = 0xC0E70017\n\tSTATUS_SPACES_INCONSISTENCY                                               NTStatus      = 0xC0E70018\n\tSTATUS_SPACES_LOG_NOT_READY                                               NTStatus      = 0xC0E70019\n\tSTATUS_SPACES_NO_REDUNDANCY                                               NTStatus      = 0xC0E7001A\n\tSTATUS_SPACES_DRIVE_NOT_READY                                             NTStatus      = 0xC0E7001B\n\tSTATUS_SPACES_DRIVE_SPLIT                                                 NTStatus      = 0xC0E7001C\n\tSTATUS_SPACES_DRIVE_LOST_DATA                                             NTStatus      = 0xC0E7001D\n\tSTATUS_SPACES_ENTRY_INCOMPLETE                                            NTStatus      = 0xC0E7001E\n\tSTATUS_SPACES_ENTRY_INVALID                                               NTStatus      = 0xC0E7001F\n\tSTATUS_SPACES_MARK_DIRTY                                                  NTStatus      = 0xC0E70020\n\tSTATUS_VOLSNAP_BOOTFILE_NOT_VALID                                         NTStatus      = 0xC0500003\n\tSTATUS_VOLSNAP_ACTIVATION_TIMEOUT                                         NTStatus      = 0xC0500004\n\tSTATUS_IO_PREEMPTED                                                       NTStatus      = 0xC0510001\n\tSTATUS_SVHDX_ERROR_STORED                                                 NTStatus      = 0xC05C0000\n\tSTATUS_SVHDX_ERROR_NOT_AVAILABLE                                          NTStatus      = 0xC05CFF00\n\tSTATUS_SVHDX_UNIT_ATTENTION_AVAILABLE                                     NTStatus      = 0xC05CFF01\n\tSTATUS_SVHDX_UNIT_ATTENTION_CAPACITY_DATA_CHANGED                         NTStatus      = 0xC05CFF02\n\tSTATUS_SVHDX_UNIT_ATTENTION_RESERVATIONS_PREEMPTED                        NTStatus      = 0xC05CFF03\n\tSTATUS_SVHDX_UNIT_ATTENTION_RESERVATIONS_RELEASED                         NTStatus      = 0xC05CFF04\n\tSTATUS_SVHDX_UNIT_ATTENTION_REGISTRATIONS_PREEMPTED                       NTStatus      = 0xC05CFF05\n\tSTATUS_SVHDX_UNIT_ATTENTION_OPERATING_DEFINITION_CHANGED                  NTStatus      = 0xC05CFF06\n\tSTATUS_SVHDX_RESERVATION_CONFLICT                                         NTStatus      = 0xC05CFF07\n\tSTATUS_SVHDX_WRONG_FILE_TYPE                                              NTStatus      = 0xC05CFF08\n\tSTATUS_SVHDX_VERSION_MISMATCH                                             NTStatus      = 0xC05CFF09\n\tSTATUS_VHD_SHARED                                                         NTStatus      = 0xC05CFF0A\n\tSTATUS_SVHDX_NO_INITIATOR                                                 NTStatus      = 0xC05CFF0B\n\tSTATUS_VHDSET_BACKING_STORAGE_NOT_FOUND                                   NTStatus      = 0xC05CFF0C\n\tSTATUS_SMB_NO_PREAUTH_INTEGRITY_HASH_OVERLAP                              NTStatus      = 0xC05D0000\n\tSTATUS_SMB_BAD_CLUSTER_DIALECT                                            NTStatus      = 0xC05D0001\n\tSTATUS_SMB_GUEST_LOGON_BLOCKED                                            NTStatus      = 0xC05D0002\n\tSTATUS_SECCORE_INVALID_COMMAND                                            NTStatus      = 0xC0E80000\n\tSTATUS_VSM_NOT_INITIALIZED                                                NTStatus      = 0xC0450000\n\tSTATUS_VSM_DMA_PROTECTION_NOT_IN_USE                                      NTStatus      = 0xC0450001\n\tSTATUS_APPEXEC_CONDITION_NOT_SATISFIED                                    NTStatus      = 0xC0EC0000\n\tSTATUS_APPEXEC_HANDLE_INVALIDATED                                         NTStatus      = 0xC0EC0001\n\tSTATUS_APPEXEC_INVALID_HOST_GENERATION                                    NTStatus      = 0xC0EC0002\n\tSTATUS_APPEXEC_UNEXPECTED_PROCESS_REGISTRATION                            NTStatus      = 0xC0EC0003\n\tSTATUS_APPEXEC_INVALID_HOST_STATE                                         NTStatus      = 0xC0EC0004\n\tSTATUS_APPEXEC_NO_DONOR                                                   NTStatus      = 0xC0EC0005\n\tSTATUS_APPEXEC_HOST_ID_MISMATCH                                           NTStatus      = 0xC0EC0006\n\tSTATUS_APPEXEC_UNKNOWN_USER                                               NTStatus      = 0xC0EC0007\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/zknownfolderids_windows.go",
    "content": "// Code generated by 'mkknownfolderids.bash'; DO NOT EDIT.\n\npackage windows\n\ntype KNOWNFOLDERID GUID\n\nvar (\n\tFOLDERID_NetworkFolder          = &KNOWNFOLDERID{0xd20beec4, 0x5ca8, 0x4905, [8]byte{0xae, 0x3b, 0xbf, 0x25, 0x1e, 0xa0, 0x9b, 0x53}}\n\tFOLDERID_ComputerFolder         = &KNOWNFOLDERID{0x0ac0837c, 0xbbf8, 0x452a, [8]byte{0x85, 0x0d, 0x79, 0xd0, 0x8e, 0x66, 0x7c, 0xa7}}\n\tFOLDERID_InternetFolder         = &KNOWNFOLDERID{0x4d9f7874, 0x4e0c, 0x4904, [8]byte{0x96, 0x7b, 0x40, 0xb0, 0xd2, 0x0c, 0x3e, 0x4b}}\n\tFOLDERID_ControlPanelFolder     = &KNOWNFOLDERID{0x82a74aeb, 0xaeb4, 0x465c, [8]byte{0xa0, 0x14, 0xd0, 0x97, 0xee, 0x34, 0x6d, 0x63}}\n\tFOLDERID_PrintersFolder         = &KNOWNFOLDERID{0x76fc4e2d, 0xd6ad, 0x4519, [8]byte{0xa6, 0x63, 0x37, 0xbd, 0x56, 0x06, 0x81, 0x85}}\n\tFOLDERID_SyncManagerFolder      = &KNOWNFOLDERID{0x43668bf8, 0xc14e, 0x49b2, [8]byte{0x97, 0xc9, 0x74, 0x77, 0x84, 0xd7, 0x84, 0xb7}}\n\tFOLDERID_SyncSetupFolder        = &KNOWNFOLDERID{0x0f214138, 0xb1d3, 0x4a90, [8]byte{0xbb, 0xa9, 0x27, 0xcb, 0xc0, 0xc5, 0x38, 0x9a}}\n\tFOLDERID_ConflictFolder         = &KNOWNFOLDERID{0x4bfefb45, 0x347d, 0x4006, [8]byte{0xa5, 0xbe, 0xac, 0x0c, 0xb0, 0x56, 0x71, 0x92}}\n\tFOLDERID_SyncResultsFolder      = &KNOWNFOLDERID{0x289a9a43, 0xbe44, 0x4057, [8]byte{0xa4, 0x1b, 0x58, 0x7a, 0x76, 0xd7, 0xe7, 0xf9}}\n\tFOLDERID_RecycleBinFolder       = &KNOWNFOLDERID{0xb7534046, 0x3ecb, 0x4c18, [8]byte{0xbe, 0x4e, 0x64, 0xcd, 0x4c, 0xb7, 0xd6, 0xac}}\n\tFOLDERID_ConnectionsFolder      = &KNOWNFOLDERID{0x6f0cd92b, 0x2e97, 0x45d1, [8]byte{0x88, 0xff, 0xb0, 0xd1, 0x86, 0xb8, 0xde, 0xdd}}\n\tFOLDERID_Fonts                  = &KNOWNFOLDERID{0xfd228cb7, 0xae11, 0x4ae3, [8]byte{0x86, 0x4c, 0x16, 0xf3, 0x91, 0x0a, 0xb8, 0xfe}}\n\tFOLDERID_Desktop                = &KNOWNFOLDERID{0xb4bfcc3a, 0xdb2c, 0x424c, [8]byte{0xb0, 0x29, 0x7f, 0xe9, 0x9a, 0x87, 0xc6, 0x41}}\n\tFOLDERID_Startup                = &KNOWNFOLDERID{0xb97d20bb, 0xf46a, 0x4c97, [8]byte{0xba, 0x10, 0x5e, 0x36, 0x08, 0x43, 0x08, 0x54}}\n\tFOLDERID_Programs               = &KNOWNFOLDERID{0xa77f5d77, 0x2e2b, 0x44c3, [8]byte{0xa6, 0xa2, 0xab, 0xa6, 0x01, 0x05, 0x4a, 0x51}}\n\tFOLDERID_StartMenu              = &KNOWNFOLDERID{0x625b53c3, 0xab48, 0x4ec1, [8]byte{0xba, 0x1f, 0xa1, 0xef, 0x41, 0x46, 0xfc, 0x19}}\n\tFOLDERID_Recent                 = &KNOWNFOLDERID{0xae50c081, 0xebd2, 0x438a, [8]byte{0x86, 0x55, 0x8a, 0x09, 0x2e, 0x34, 0x98, 0x7a}}\n\tFOLDERID_SendTo                 = &KNOWNFOLDERID{0x8983036c, 0x27c0, 0x404b, [8]byte{0x8f, 0x08, 0x10, 0x2d, 0x10, 0xdc, 0xfd, 0x74}}\n\tFOLDERID_Documents              = &KNOWNFOLDERID{0xfdd39ad0, 0x238f, 0x46af, [8]byte{0xad, 0xb4, 0x6c, 0x85, 0x48, 0x03, 0x69, 0xc7}}\n\tFOLDERID_Favorites              = &KNOWNFOLDERID{0x1777f761, 0x68ad, 0x4d8a, [8]byte{0x87, 0xbd, 0x30, 0xb7, 0x59, 0xfa, 0x33, 0xdd}}\n\tFOLDERID_NetHood                = &KNOWNFOLDERID{0xc5abbf53, 0xe17f, 0x4121, [8]byte{0x89, 0x00, 0x86, 0x62, 0x6f, 0xc2, 0xc9, 0x73}}\n\tFOLDERID_PrintHood              = &KNOWNFOLDERID{0x9274bd8d, 0xcfd1, 0x41c3, [8]byte{0xb3, 0x5e, 0xb1, 0x3f, 0x55, 0xa7, 0x58, 0xf4}}\n\tFOLDERID_Templates              = &KNOWNFOLDERID{0xa63293e8, 0x664e, 0x48db, [8]byte{0xa0, 0x79, 0xdf, 0x75, 0x9e, 0x05, 0x09, 0xf7}}\n\tFOLDERID_CommonStartup          = &KNOWNFOLDERID{0x82a5ea35, 0xd9cd, 0x47c5, [8]byte{0x96, 0x29, 0xe1, 0x5d, 0x2f, 0x71, 0x4e, 0x6e}}\n\tFOLDERID_CommonPrograms         = &KNOWNFOLDERID{0x0139d44e, 0x6afe, 0x49f2, [8]byte{0x86, 0x90, 0x3d, 0xaf, 0xca, 0xe6, 0xff, 0xb8}}\n\tFOLDERID_CommonStartMenu        = &KNOWNFOLDERID{0xa4115719, 0xd62e, 0x491d, [8]byte{0xaa, 0x7c, 0xe7, 0x4b, 0x8b, 0xe3, 0xb0, 0x67}}\n\tFOLDERID_PublicDesktop          = &KNOWNFOLDERID{0xc4aa340d, 0xf20f, 0x4863, [8]byte{0xaf, 0xef, 0xf8, 0x7e, 0xf2, 0xe6, 0xba, 0x25}}\n\tFOLDERID_ProgramData            = &KNOWNFOLDERID{0x62ab5d82, 0xfdc1, 0x4dc3, [8]byte{0xa9, 0xdd, 0x07, 0x0d, 0x1d, 0x49, 0x5d, 0x97}}\n\tFOLDERID_CommonTemplates        = &KNOWNFOLDERID{0xb94237e7, 0x57ac, 0x4347, [8]byte{0x91, 0x51, 0xb0, 0x8c, 0x6c, 0x32, 0xd1, 0xf7}}\n\tFOLDERID_PublicDocuments        = &KNOWNFOLDERID{0xed4824af, 0xdce4, 0x45a8, [8]byte{0x81, 0xe2, 0xfc, 0x79, 0x65, 0x08, 0x36, 0x34}}\n\tFOLDERID_RoamingAppData         = &KNOWNFOLDERID{0x3eb685db, 0x65f9, 0x4cf6, [8]byte{0xa0, 0x3a, 0xe3, 0xef, 0x65, 0x72, 0x9f, 0x3d}}\n\tFOLDERID_LocalAppData           = &KNOWNFOLDERID{0xf1b32785, 0x6fba, 0x4fcf, [8]byte{0x9d, 0x55, 0x7b, 0x8e, 0x7f, 0x15, 0x70, 0x91}}\n\tFOLDERID_LocalAppDataLow        = &KNOWNFOLDERID{0xa520a1a4, 0x1780, 0x4ff6, [8]byte{0xbd, 0x18, 0x16, 0x73, 0x43, 0xc5, 0xaf, 0x16}}\n\tFOLDERID_InternetCache          = &KNOWNFOLDERID{0x352481e8, 0x33be, 0x4251, [8]byte{0xba, 0x85, 0x60, 0x07, 0xca, 0xed, 0xcf, 0x9d}}\n\tFOLDERID_Cookies                = &KNOWNFOLDERID{0x2b0f765d, 0xc0e9, 0x4171, [8]byte{0x90, 0x8e, 0x08, 0xa6, 0x11, 0xb8, 0x4f, 0xf6}}\n\tFOLDERID_History                = &KNOWNFOLDERID{0xd9dc8a3b, 0xb784, 0x432e, [8]byte{0xa7, 0x81, 0x5a, 0x11, 0x30, 0xa7, 0x59, 0x63}}\n\tFOLDERID_System                 = &KNOWNFOLDERID{0x1ac14e77, 0x02e7, 0x4e5d, [8]byte{0xb7, 0x44, 0x2e, 0xb1, 0xae, 0x51, 0x98, 0xb7}}\n\tFOLDERID_SystemX86              = &KNOWNFOLDERID{0xd65231b0, 0xb2f1, 0x4857, [8]byte{0xa4, 0xce, 0xa8, 0xe7, 0xc6, 0xea, 0x7d, 0x27}}\n\tFOLDERID_Windows                = &KNOWNFOLDERID{0xf38bf404, 0x1d43, 0x42f2, [8]byte{0x93, 0x05, 0x67, 0xde, 0x0b, 0x28, 0xfc, 0x23}}\n\tFOLDERID_Profile                = &KNOWNFOLDERID{0x5e6c858f, 0x0e22, 0x4760, [8]byte{0x9a, 0xfe, 0xea, 0x33, 0x17, 0xb6, 0x71, 0x73}}\n\tFOLDERID_Pictures               = &KNOWNFOLDERID{0x33e28130, 0x4e1e, 0x4676, [8]byte{0x83, 0x5a, 0x98, 0x39, 0x5c, 0x3b, 0xc3, 0xbb}}\n\tFOLDERID_ProgramFilesX86        = &KNOWNFOLDERID{0x7c5a40ef, 0xa0fb, 0x4bfc, [8]byte{0x87, 0x4a, 0xc0, 0xf2, 0xe0, 0xb9, 0xfa, 0x8e}}\n\tFOLDERID_ProgramFilesCommonX86  = &KNOWNFOLDERID{0xde974d24, 0xd9c6, 0x4d3e, [8]byte{0xbf, 0x91, 0xf4, 0x45, 0x51, 0x20, 0xb9, 0x17}}\n\tFOLDERID_ProgramFilesX64        = &KNOWNFOLDERID{0x6d809377, 0x6af0, 0x444b, [8]byte{0x89, 0x57, 0xa3, 0x77, 0x3f, 0x02, 0x20, 0x0e}}\n\tFOLDERID_ProgramFilesCommonX64  = &KNOWNFOLDERID{0x6365d5a7, 0x0f0d, 0x45e5, [8]byte{0x87, 0xf6, 0x0d, 0xa5, 0x6b, 0x6a, 0x4f, 0x7d}}\n\tFOLDERID_ProgramFiles           = &KNOWNFOLDERID{0x905e63b6, 0xc1bf, 0x494e, [8]byte{0xb2, 0x9c, 0x65, 0xb7, 0x32, 0xd3, 0xd2, 0x1a}}\n\tFOLDERID_ProgramFilesCommon     = &KNOWNFOLDERID{0xf7f1ed05, 0x9f6d, 0x47a2, [8]byte{0xaa, 0xae, 0x29, 0xd3, 0x17, 0xc6, 0xf0, 0x66}}\n\tFOLDERID_UserProgramFiles       = &KNOWNFOLDERID{0x5cd7aee2, 0x2219, 0x4a67, [8]byte{0xb8, 0x5d, 0x6c, 0x9c, 0xe1, 0x56, 0x60, 0xcb}}\n\tFOLDERID_UserProgramFilesCommon = &KNOWNFOLDERID{0xbcbd3057, 0xca5c, 0x4622, [8]byte{0xb4, 0x2d, 0xbc, 0x56, 0xdb, 0x0a, 0xe5, 0x16}}\n\tFOLDERID_AdminTools             = &KNOWNFOLDERID{0x724ef170, 0xa42d, 0x4fef, [8]byte{0x9f, 0x26, 0xb6, 0x0e, 0x84, 0x6f, 0xba, 0x4f}}\n\tFOLDERID_CommonAdminTools       = &KNOWNFOLDERID{0xd0384e7d, 0xbac3, 0x4797, [8]byte{0x8f, 0x14, 0xcb, 0xa2, 0x29, 0xb3, 0x92, 0xb5}}\n\tFOLDERID_Music                  = &KNOWNFOLDERID{0x4bd8d571, 0x6d19, 0x48d3, [8]byte{0xbe, 0x97, 0x42, 0x22, 0x20, 0x08, 0x0e, 0x43}}\n\tFOLDERID_Videos                 = &KNOWNFOLDERID{0x18989b1d, 0x99b5, 0x455b, [8]byte{0x84, 0x1c, 0xab, 0x7c, 0x74, 0xe4, 0xdd, 0xfc}}\n\tFOLDERID_Ringtones              = &KNOWNFOLDERID{0xc870044b, 0xf49e, 0x4126, [8]byte{0xa9, 0xc3, 0xb5, 0x2a, 0x1f, 0xf4, 0x11, 0xe8}}\n\tFOLDERID_PublicPictures         = &KNOWNFOLDERID{0xb6ebfb86, 0x6907, 0x413c, [8]byte{0x9a, 0xf7, 0x4f, 0xc2, 0xab, 0xf0, 0x7c, 0xc5}}\n\tFOLDERID_PublicMusic            = &KNOWNFOLDERID{0x3214fab5, 0x9757, 0x4298, [8]byte{0xbb, 0x61, 0x92, 0xa9, 0xde, 0xaa, 0x44, 0xff}}\n\tFOLDERID_PublicVideos           = &KNOWNFOLDERID{0x2400183a, 0x6185, 0x49fb, [8]byte{0xa2, 0xd8, 0x4a, 0x39, 0x2a, 0x60, 0x2b, 0xa3}}\n\tFOLDERID_PublicRingtones        = &KNOWNFOLDERID{0xe555ab60, 0x153b, 0x4d17, [8]byte{0x9f, 0x04, 0xa5, 0xfe, 0x99, 0xfc, 0x15, 0xec}}\n\tFOLDERID_ResourceDir            = &KNOWNFOLDERID{0x8ad10c31, 0x2adb, 0x4296, [8]byte{0xa8, 0xf7, 0xe4, 0x70, 0x12, 0x32, 0xc9, 0x72}}\n\tFOLDERID_LocalizedResourcesDir  = &KNOWNFOLDERID{0x2a00375e, 0x224c, 0x49de, [8]byte{0xb8, 0xd1, 0x44, 0x0d, 0xf7, 0xef, 0x3d, 0xdc}}\n\tFOLDERID_CommonOEMLinks         = &KNOWNFOLDERID{0xc1bae2d0, 0x10df, 0x4334, [8]byte{0xbe, 0xdd, 0x7a, 0xa2, 0x0b, 0x22, 0x7a, 0x9d}}\n\tFOLDERID_CDBurning              = &KNOWNFOLDERID{0x9e52ab10, 0xf80d, 0x49df, [8]byte{0xac, 0xb8, 0x43, 0x30, 0xf5, 0x68, 0x78, 0x55}}\n\tFOLDERID_UserProfiles           = &KNOWNFOLDERID{0x0762d272, 0xc50a, 0x4bb0, [8]byte{0xa3, 0x82, 0x69, 0x7d, 0xcd, 0x72, 0x9b, 0x80}}\n\tFOLDERID_Playlists              = &KNOWNFOLDERID{0xde92c1c7, 0x837f, 0x4f69, [8]byte{0xa3, 0xbb, 0x86, 0xe6, 0x31, 0x20, 0x4a, 0x23}}\n\tFOLDERID_SamplePlaylists        = &KNOWNFOLDERID{0x15ca69b3, 0x30ee, 0x49c1, [8]byte{0xac, 0xe1, 0x6b, 0x5e, 0xc3, 0x72, 0xaf, 0xb5}}\n\tFOLDERID_SampleMusic            = &KNOWNFOLDERID{0xb250c668, 0xf57d, 0x4ee1, [8]byte{0xa6, 0x3c, 0x29, 0x0e, 0xe7, 0xd1, 0xaa, 0x1f}}\n\tFOLDERID_SamplePictures         = &KNOWNFOLDERID{0xc4900540, 0x2379, 0x4c75, [8]byte{0x84, 0x4b, 0x64, 0xe6, 0xfa, 0xf8, 0x71, 0x6b}}\n\tFOLDERID_SampleVideos           = &KNOWNFOLDERID{0x859ead94, 0x2e85, 0x48ad, [8]byte{0xa7, 0x1a, 0x09, 0x69, 0xcb, 0x56, 0xa6, 0xcd}}\n\tFOLDERID_PhotoAlbums            = &KNOWNFOLDERID{0x69d2cf90, 0xfc33, 0x4fb7, [8]byte{0x9a, 0x0c, 0xeb, 0xb0, 0xf0, 0xfc, 0xb4, 0x3c}}\n\tFOLDERID_Public                 = &KNOWNFOLDERID{0xdfdf76a2, 0xc82a, 0x4d63, [8]byte{0x90, 0x6a, 0x56, 0x44, 0xac, 0x45, 0x73, 0x85}}\n\tFOLDERID_ChangeRemovePrograms   = &KNOWNFOLDERID{0xdf7266ac, 0x9274, 0x4867, [8]byte{0x8d, 0x55, 0x3b, 0xd6, 0x61, 0xde, 0x87, 0x2d}}\n\tFOLDERID_AppUpdates             = &KNOWNFOLDERID{0xa305ce99, 0xf527, 0x492b, [8]byte{0x8b, 0x1a, 0x7e, 0x76, 0xfa, 0x98, 0xd6, 0xe4}}\n\tFOLDERID_AddNewPrograms         = &KNOWNFOLDERID{0xde61d971, 0x5ebc, 0x4f02, [8]byte{0xa3, 0xa9, 0x6c, 0x82, 0x89, 0x5e, 0x5c, 0x04}}\n\tFOLDERID_Downloads              = &KNOWNFOLDERID{0x374de290, 0x123f, 0x4565, [8]byte{0x91, 0x64, 0x39, 0xc4, 0x92, 0x5e, 0x46, 0x7b}}\n\tFOLDERID_PublicDownloads        = &KNOWNFOLDERID{0x3d644c9b, 0x1fb8, 0x4f30, [8]byte{0x9b, 0x45, 0xf6, 0x70, 0x23, 0x5f, 0x79, 0xc0}}\n\tFOLDERID_SavedSearches          = &KNOWNFOLDERID{0x7d1d3a04, 0xdebb, 0x4115, [8]byte{0x95, 0xcf, 0x2f, 0x29, 0xda, 0x29, 0x20, 0xda}}\n\tFOLDERID_QuickLaunch            = &KNOWNFOLDERID{0x52a4f021, 0x7b75, 0x48a9, [8]byte{0x9f, 0x6b, 0x4b, 0x87, 0xa2, 0x10, 0xbc, 0x8f}}\n\tFOLDERID_Contacts               = &KNOWNFOLDERID{0x56784854, 0xc6cb, 0x462b, [8]byte{0x81, 0x69, 0x88, 0xe3, 0x50, 0xac, 0xb8, 0x82}}\n\tFOLDERID_SidebarParts           = &KNOWNFOLDERID{0xa75d362e, 0x50fc, 0x4fb7, [8]byte{0xac, 0x2c, 0xa8, 0xbe, 0xaa, 0x31, 0x44, 0x93}}\n\tFOLDERID_SidebarDefaultParts    = &KNOWNFOLDERID{0x7b396e54, 0x9ec5, 0x4300, [8]byte{0xbe, 0x0a, 0x24, 0x82, 0xeb, 0xae, 0x1a, 0x26}}\n\tFOLDERID_PublicGameTasks        = &KNOWNFOLDERID{0xdebf2536, 0xe1a8, 0x4c59, [8]byte{0xb6, 0xa2, 0x41, 0x45, 0x86, 0x47, 0x6a, 0xea}}\n\tFOLDERID_GameTasks              = &KNOWNFOLDERID{0x054fae61, 0x4dd8, 0x4787, [8]byte{0x80, 0xb6, 0x09, 0x02, 0x20, 0xc4, 0xb7, 0x00}}\n\tFOLDERID_SavedGames             = &KNOWNFOLDERID{0x4c5c32ff, 0xbb9d, 0x43b0, [8]byte{0xb5, 0xb4, 0x2d, 0x72, 0xe5, 0x4e, 0xaa, 0xa4}}\n\tFOLDERID_Games                  = &KNOWNFOLDERID{0xcac52c1a, 0xb53d, 0x4edc, [8]byte{0x92, 0xd7, 0x6b, 0x2e, 0x8a, 0xc1, 0x94, 0x34}}\n\tFOLDERID_SEARCH_MAPI            = &KNOWNFOLDERID{0x98ec0e18, 0x2098, 0x4d44, [8]byte{0x86, 0x44, 0x66, 0x97, 0x93, 0x15, 0xa2, 0x81}}\n\tFOLDERID_SEARCH_CSC             = &KNOWNFOLDERID{0xee32e446, 0x31ca, 0x4aba, [8]byte{0x81, 0x4f, 0xa5, 0xeb, 0xd2, 0xfd, 0x6d, 0x5e}}\n\tFOLDERID_Links                  = &KNOWNFOLDERID{0xbfb9d5e0, 0xc6a9, 0x404c, [8]byte{0xb2, 0xb2, 0xae, 0x6d, 0xb6, 0xaf, 0x49, 0x68}}\n\tFOLDERID_UsersFiles             = &KNOWNFOLDERID{0xf3ce0f7c, 0x4901, 0x4acc, [8]byte{0x86, 0x48, 0xd5, 0xd4, 0x4b, 0x04, 0xef, 0x8f}}\n\tFOLDERID_UsersLibraries         = &KNOWNFOLDERID{0xa302545d, 0xdeff, 0x464b, [8]byte{0xab, 0xe8, 0x61, 0xc8, 0x64, 0x8d, 0x93, 0x9b}}\n\tFOLDERID_SearchHome             = &KNOWNFOLDERID{0x190337d1, 0xb8ca, 0x4121, [8]byte{0xa6, 0x39, 0x6d, 0x47, 0x2d, 0x16, 0x97, 0x2a}}\n\tFOLDERID_OriginalImages         = &KNOWNFOLDERID{0x2c36c0aa, 0x5812, 0x4b87, [8]byte{0xbf, 0xd0, 0x4c, 0xd0, 0xdf, 0xb1, 0x9b, 0x39}}\n\tFOLDERID_DocumentsLibrary       = &KNOWNFOLDERID{0x7b0db17d, 0x9cd2, 0x4a93, [8]byte{0x97, 0x33, 0x46, 0xcc, 0x89, 0x02, 0x2e, 0x7c}}\n\tFOLDERID_MusicLibrary           = &KNOWNFOLDERID{0x2112ab0a, 0xc86a, 0x4ffe, [8]byte{0xa3, 0x68, 0x0d, 0xe9, 0x6e, 0x47, 0x01, 0x2e}}\n\tFOLDERID_PicturesLibrary        = &KNOWNFOLDERID{0xa990ae9f, 0xa03b, 0x4e80, [8]byte{0x94, 0xbc, 0x99, 0x12, 0xd7, 0x50, 0x41, 0x04}}\n\tFOLDERID_VideosLibrary          = &KNOWNFOLDERID{0x491e922f, 0x5643, 0x4af4, [8]byte{0xa7, 0xeb, 0x4e, 0x7a, 0x13, 0x8d, 0x81, 0x74}}\n\tFOLDERID_RecordedTVLibrary      = &KNOWNFOLDERID{0x1a6fdba2, 0xf42d, 0x4358, [8]byte{0xa7, 0x98, 0xb7, 0x4d, 0x74, 0x59, 0x26, 0xc5}}\n\tFOLDERID_HomeGroup              = &KNOWNFOLDERID{0x52528a6b, 0xb9e3, 0x4add, [8]byte{0xb6, 0x0d, 0x58, 0x8c, 0x2d, 0xba, 0x84, 0x2d}}\n\tFOLDERID_HomeGroupCurrentUser   = &KNOWNFOLDERID{0x9b74b6a3, 0x0dfd, 0x4f11, [8]byte{0x9e, 0x78, 0x5f, 0x78, 0x00, 0xf2, 0xe7, 0x72}}\n\tFOLDERID_DeviceMetadataStore    = &KNOWNFOLDERID{0x5ce4a5e9, 0xe4eb, 0x479d, [8]byte{0xb8, 0x9f, 0x13, 0x0c, 0x02, 0x88, 0x61, 0x55}}\n\tFOLDERID_Libraries              = &KNOWNFOLDERID{0x1b3ea5dc, 0xb587, 0x4786, [8]byte{0xb4, 0xef, 0xbd, 0x1d, 0xc3, 0x32, 0xae, 0xae}}\n\tFOLDERID_PublicLibraries        = &KNOWNFOLDERID{0x48daf80b, 0xe6cf, 0x4f4e, [8]byte{0xb8, 0x00, 0x0e, 0x69, 0xd8, 0x4e, 0xe3, 0x84}}\n\tFOLDERID_UserPinned             = &KNOWNFOLDERID{0x9e3995ab, 0x1f9c, 0x4f13, [8]byte{0xb8, 0x27, 0x48, 0xb2, 0x4b, 0x6c, 0x71, 0x74}}\n\tFOLDERID_ImplicitAppShortcuts   = &KNOWNFOLDERID{0xbcb5256f, 0x79f6, 0x4cee, [8]byte{0xb7, 0x25, 0xdc, 0x34, 0xe4, 0x02, 0xfd, 0x46}}\n\tFOLDERID_AccountPictures        = &KNOWNFOLDERID{0x008ca0b1, 0x55b4, 0x4c56, [8]byte{0xb8, 0xa8, 0x4d, 0xe4, 0xb2, 0x99, 0xd3, 0xbe}}\n\tFOLDERID_PublicUserTiles        = &KNOWNFOLDERID{0x0482af6c, 0x08f1, 0x4c34, [8]byte{0x8c, 0x90, 0xe1, 0x7e, 0xc9, 0x8b, 0x1e, 0x17}}\n\tFOLDERID_AppsFolder             = &KNOWNFOLDERID{0x1e87508d, 0x89c2, 0x42f0, [8]byte{0x8a, 0x7e, 0x64, 0x5a, 0x0f, 0x50, 0xca, 0x58}}\n\tFOLDERID_StartMenuAllPrograms   = &KNOWNFOLDERID{0xf26305ef, 0x6948, 0x40b9, [8]byte{0xb2, 0x55, 0x81, 0x45, 0x3d, 0x09, 0xc7, 0x85}}\n\tFOLDERID_CommonStartMenuPlaces  = &KNOWNFOLDERID{0xa440879f, 0x87a0, 0x4f7d, [8]byte{0xb7, 0x00, 0x02, 0x07, 0xb9, 0x66, 0x19, 0x4a}}\n\tFOLDERID_ApplicationShortcuts   = &KNOWNFOLDERID{0xa3918781, 0xe5f2, 0x4890, [8]byte{0xb3, 0xd9, 0xa7, 0xe5, 0x43, 0x32, 0x32, 0x8c}}\n\tFOLDERID_RoamingTiles           = &KNOWNFOLDERID{0x00bcfc5a, 0xed94, 0x4e48, [8]byte{0x96, 0xa1, 0x3f, 0x62, 0x17, 0xf2, 0x19, 0x90}}\n\tFOLDERID_RoamedTileImages       = &KNOWNFOLDERID{0xaaa8d5a5, 0xf1d6, 0x4259, [8]byte{0xba, 0xa8, 0x78, 0xe7, 0xef, 0x60, 0x83, 0x5e}}\n\tFOLDERID_Screenshots            = &KNOWNFOLDERID{0xb7bede81, 0xdf94, 0x4682, [8]byte{0xa7, 0xd8, 0x57, 0xa5, 0x26, 0x20, 0xb8, 0x6f}}\n\tFOLDERID_CameraRoll             = &KNOWNFOLDERID{0xab5fb87b, 0x7ce2, 0x4f83, [8]byte{0x91, 0x5d, 0x55, 0x08, 0x46, 0xc9, 0x53, 0x7b}}\n\tFOLDERID_SkyDrive               = &KNOWNFOLDERID{0xa52bba46, 0xe9e1, 0x435f, [8]byte{0xb3, 0xd9, 0x28, 0xda, 0xa6, 0x48, 0xc0, 0xf6}}\n\tFOLDERID_OneDrive               = &KNOWNFOLDERID{0xa52bba46, 0xe9e1, 0x435f, [8]byte{0xb3, 0xd9, 0x28, 0xda, 0xa6, 0x48, 0xc0, 0xf6}}\n\tFOLDERID_SkyDriveDocuments      = &KNOWNFOLDERID{0x24d89e24, 0x2f19, 0x4534, [8]byte{0x9d, 0xde, 0x6a, 0x66, 0x71, 0xfb, 0xb8, 0xfe}}\n\tFOLDERID_SkyDrivePictures       = &KNOWNFOLDERID{0x339719b5, 0x8c47, 0x4894, [8]byte{0x94, 0xc2, 0xd8, 0xf7, 0x7a, 0xdd, 0x44, 0xa6}}\n\tFOLDERID_SkyDriveMusic          = &KNOWNFOLDERID{0xc3f2459e, 0x80d6, 0x45dc, [8]byte{0xbf, 0xef, 0x1f, 0x76, 0x9f, 0x2b, 0xe7, 0x30}}\n\tFOLDERID_SkyDriveCameraRoll     = &KNOWNFOLDERID{0x767e6811, 0x49cb, 0x4273, [8]byte{0x87, 0xc2, 0x20, 0xf3, 0x55, 0xe1, 0x08, 0x5b}}\n\tFOLDERID_SearchHistory          = &KNOWNFOLDERID{0x0d4c3db6, 0x03a3, 0x462f, [8]byte{0xa0, 0xe6, 0x08, 0x92, 0x4c, 0x41, 0xb5, 0xd4}}\n\tFOLDERID_SearchTemplates        = &KNOWNFOLDERID{0x7e636bfe, 0xdfa9, 0x4d5e, [8]byte{0xb4, 0x56, 0xd7, 0xb3, 0x98, 0x51, 0xd8, 0xa9}}\n\tFOLDERID_CameraRollLibrary      = &KNOWNFOLDERID{0x2b20df75, 0x1eda, 0x4039, [8]byte{0x80, 0x97, 0x38, 0x79, 0x82, 0x27, 0xd5, 0xb7}}\n\tFOLDERID_SavedPictures          = &KNOWNFOLDERID{0x3b193882, 0xd3ad, 0x4eab, [8]byte{0x96, 0x5a, 0x69, 0x82, 0x9d, 0x1f, 0xb5, 0x9f}}\n\tFOLDERID_SavedPicturesLibrary   = &KNOWNFOLDERID{0xe25b5812, 0xbe88, 0x4bd9, [8]byte{0x94, 0xb0, 0x29, 0x23, 0x34, 0x77, 0xb6, 0xc3}}\n\tFOLDERID_RetailDemo             = &KNOWNFOLDERID{0x12d4c69e, 0x24ad, 0x4923, [8]byte{0xbe, 0x19, 0x31, 0x32, 0x1c, 0x43, 0xa7, 0x67}}\n\tFOLDERID_Device                 = &KNOWNFOLDERID{0x1c2ac1dc, 0x4358, 0x4b6c, [8]byte{0x97, 0x33, 0xaf, 0x21, 0x15, 0x65, 0x76, 0xf0}}\n\tFOLDERID_DevelopmentFiles       = &KNOWNFOLDERID{0xdbe8e08e, 0x3053, 0x4bbc, [8]byte{0xb1, 0x83, 0x2a, 0x7b, 0x2b, 0x19, 0x1e, 0x59}}\n\tFOLDERID_Objects3D              = &KNOWNFOLDERID{0x31c0dd25, 0x9439, 0x4f12, [8]byte{0xbf, 0x41, 0x7f, 0xf4, 0xed, 0xa3, 0x87, 0x22}}\n\tFOLDERID_AppCaptures            = &KNOWNFOLDERID{0xedc0fe71, 0x98d8, 0x4f4a, [8]byte{0xb9, 0x20, 0xc8, 0xdc, 0x13, 0x3c, 0xb1, 0x65}}\n\tFOLDERID_LocalDocuments         = &KNOWNFOLDERID{0xf42ee2d3, 0x909f, 0x4907, [8]byte{0x88, 0x71, 0x4c, 0x22, 0xfc, 0x0b, 0xf7, 0x56}}\n\tFOLDERID_LocalPictures          = &KNOWNFOLDERID{0x0ddd015d, 0xb06c, 0x45d5, [8]byte{0x8c, 0x4c, 0xf5, 0x97, 0x13, 0x85, 0x46, 0x39}}\n\tFOLDERID_LocalVideos            = &KNOWNFOLDERID{0x35286a68, 0x3c57, 0x41a1, [8]byte{0xbb, 0xb1, 0x0e, 0xae, 0x73, 0xd7, 0x6c, 0x95}}\n\tFOLDERID_LocalMusic             = &KNOWNFOLDERID{0xa0c69a99, 0x21c8, 0x4671, [8]byte{0x87, 0x03, 0x79, 0x34, 0x16, 0x2f, 0xcf, 0x1d}}\n\tFOLDERID_LocalDownloads         = &KNOWNFOLDERID{0x7d83ee9b, 0x2244, 0x4e70, [8]byte{0xb1, 0xf5, 0x53, 0x93, 0x04, 0x2a, 0xf1, 0xe4}}\n\tFOLDERID_RecordedCalls          = &KNOWNFOLDERID{0x2f8b40c2, 0x83ed, 0x48ee, [8]byte{0xb3, 0x83, 0xa1, 0xf1, 0x57, 0xec, 0x6f, 0x9a}}\n\tFOLDERID_AllAppMods             = &KNOWNFOLDERID{0x7ad67899, 0x66af, 0x43ba, [8]byte{0x91, 0x56, 0x6a, 0xad, 0x42, 0xe6, 0xc5, 0x96}}\n\tFOLDERID_CurrentAppMods         = &KNOWNFOLDERID{0x3db40b20, 0x2a30, 0x4dbe, [8]byte{0x91, 0x7e, 0x77, 0x1d, 0xd2, 0x1d, 0xd0, 0x99}}\n\tFOLDERID_AppDataDesktop         = &KNOWNFOLDERID{0xb2c5e279, 0x7add, 0x439f, [8]byte{0xb2, 0x8c, 0xc4, 0x1f, 0xe1, 0xbb, 0xf6, 0x72}}\n\tFOLDERID_AppDataDocuments       = &KNOWNFOLDERID{0x7be16610, 0x1f7f, 0x44ac, [8]byte{0xbf, 0xf0, 0x83, 0xe1, 0x5f, 0x2f, 0xfc, 0xa1}}\n\tFOLDERID_AppDataFavorites       = &KNOWNFOLDERID{0x7cfbefbc, 0xde1f, 0x45aa, [8]byte{0xb8, 0x43, 0xa5, 0x42, 0xac, 0x53, 0x6c, 0xc9}}\n\tFOLDERID_AppDataProgramData     = &KNOWNFOLDERID{0x559d40a3, 0xa036, 0x40fa, [8]byte{0xaf, 0x61, 0x84, 0xcb, 0x43, 0x0a, 0x4d, 0x34}}\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/zsyscall_windows.go",
    "content": "// Code generated by 'go generate'; DO NOT EDIT.\n\npackage windows\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ unsafe.Pointer\n\n// Do the interface allocations only once for common\n// Errno values.\nconst (\n\terrnoERROR_IO_PENDING = 997\n)\n\nvar (\n\terrERROR_IO_PENDING error = syscall.Errno(errnoERROR_IO_PENDING)\n\terrERROR_EINVAL     error = syscall.EINVAL\n)\n\n// errnoErr returns common boxed Errno values, to prevent\n// allocations at runtime.\nfunc errnoErr(e syscall.Errno) error {\n\tswitch e {\n\tcase 0:\n\t\treturn errERROR_EINVAL\n\tcase errnoERROR_IO_PENDING:\n\t\treturn errERROR_IO_PENDING\n\t}\n\t// TODO: add more here, after collecting data on the common\n\t// error values see on Windows. (perhaps when running\n\t// all.bat?)\n\treturn e\n}\n\nvar (\n\tmodCfgMgr32 = NewLazySystemDLL(\"CfgMgr32.dll\")\n\tmodadvapi32 = NewLazySystemDLL(\"advapi32.dll\")\n\tmodcrypt32  = NewLazySystemDLL(\"crypt32.dll\")\n\tmoddnsapi   = NewLazySystemDLL(\"dnsapi.dll\")\n\tmoddwmapi   = NewLazySystemDLL(\"dwmapi.dll\")\n\tmodiphlpapi = NewLazySystemDLL(\"iphlpapi.dll\")\n\tmodkernel32 = NewLazySystemDLL(\"kernel32.dll\")\n\tmodmswsock  = NewLazySystemDLL(\"mswsock.dll\")\n\tmodnetapi32 = NewLazySystemDLL(\"netapi32.dll\")\n\tmodntdll    = NewLazySystemDLL(\"ntdll.dll\")\n\tmodole32    = NewLazySystemDLL(\"ole32.dll\")\n\tmodpsapi    = NewLazySystemDLL(\"psapi.dll\")\n\tmodsechost  = NewLazySystemDLL(\"sechost.dll\")\n\tmodsecur32  = NewLazySystemDLL(\"secur32.dll\")\n\tmodsetupapi = NewLazySystemDLL(\"setupapi.dll\")\n\tmodshell32  = NewLazySystemDLL(\"shell32.dll\")\n\tmoduser32   = NewLazySystemDLL(\"user32.dll\")\n\tmoduserenv  = NewLazySystemDLL(\"userenv.dll\")\n\tmodversion  = NewLazySystemDLL(\"version.dll\")\n\tmodwinmm    = NewLazySystemDLL(\"winmm.dll\")\n\tmodwintrust = NewLazySystemDLL(\"wintrust.dll\")\n\tmodws2_32   = NewLazySystemDLL(\"ws2_32.dll\")\n\tmodwtsapi32 = NewLazySystemDLL(\"wtsapi32.dll\")\n\n\tprocCM_Get_DevNode_Status                                = modCfgMgr32.NewProc(\"CM_Get_DevNode_Status\")\n\tprocCM_Get_Device_Interface_ListW                        = modCfgMgr32.NewProc(\"CM_Get_Device_Interface_ListW\")\n\tprocCM_Get_Device_Interface_List_SizeW                   = modCfgMgr32.NewProc(\"CM_Get_Device_Interface_List_SizeW\")\n\tprocCM_MapCrToWin32Err                                   = modCfgMgr32.NewProc(\"CM_MapCrToWin32Err\")\n\tprocAdjustTokenGroups                                    = modadvapi32.NewProc(\"AdjustTokenGroups\")\n\tprocAdjustTokenPrivileges                                = modadvapi32.NewProc(\"AdjustTokenPrivileges\")\n\tprocAllocateAndInitializeSid                             = modadvapi32.NewProc(\"AllocateAndInitializeSid\")\n\tprocBuildSecurityDescriptorW                             = modadvapi32.NewProc(\"BuildSecurityDescriptorW\")\n\tprocChangeServiceConfig2W                                = modadvapi32.NewProc(\"ChangeServiceConfig2W\")\n\tprocChangeServiceConfigW                                 = modadvapi32.NewProc(\"ChangeServiceConfigW\")\n\tprocCheckTokenMembership                                 = modadvapi32.NewProc(\"CheckTokenMembership\")\n\tprocCloseServiceHandle                                   = modadvapi32.NewProc(\"CloseServiceHandle\")\n\tprocControlService                                       = modadvapi32.NewProc(\"ControlService\")\n\tprocConvertSecurityDescriptorToStringSecurityDescriptorW = modadvapi32.NewProc(\"ConvertSecurityDescriptorToStringSecurityDescriptorW\")\n\tprocConvertSidToStringSidW                               = modadvapi32.NewProc(\"ConvertSidToStringSidW\")\n\tprocConvertStringSecurityDescriptorToSecurityDescriptorW = modadvapi32.NewProc(\"ConvertStringSecurityDescriptorToSecurityDescriptorW\")\n\tprocConvertStringSidToSidW                               = modadvapi32.NewProc(\"ConvertStringSidToSidW\")\n\tprocCopySid                                              = modadvapi32.NewProc(\"CopySid\")\n\tprocCreateProcessAsUserW                                 = modadvapi32.NewProc(\"CreateProcessAsUserW\")\n\tprocCreateServiceW                                       = modadvapi32.NewProc(\"CreateServiceW\")\n\tprocCreateWellKnownSid                                   = modadvapi32.NewProc(\"CreateWellKnownSid\")\n\tprocCryptAcquireContextW                                 = modadvapi32.NewProc(\"CryptAcquireContextW\")\n\tprocCryptGenRandom                                       = modadvapi32.NewProc(\"CryptGenRandom\")\n\tprocCryptReleaseContext                                  = modadvapi32.NewProc(\"CryptReleaseContext\")\n\tprocDeleteService                                        = modadvapi32.NewProc(\"DeleteService\")\n\tprocDeregisterEventSource                                = modadvapi32.NewProc(\"DeregisterEventSource\")\n\tprocDuplicateTokenEx                                     = modadvapi32.NewProc(\"DuplicateTokenEx\")\n\tprocEnumDependentServicesW                               = modadvapi32.NewProc(\"EnumDependentServicesW\")\n\tprocEnumServicesStatusExW                                = modadvapi32.NewProc(\"EnumServicesStatusExW\")\n\tprocEqualSid                                             = modadvapi32.NewProc(\"EqualSid\")\n\tprocFreeSid                                              = modadvapi32.NewProc(\"FreeSid\")\n\tprocGetAce                                               = modadvapi32.NewProc(\"GetAce\")\n\tprocGetLengthSid                                         = modadvapi32.NewProc(\"GetLengthSid\")\n\tprocGetNamedSecurityInfoW                                = modadvapi32.NewProc(\"GetNamedSecurityInfoW\")\n\tprocGetSecurityDescriptorControl                         = modadvapi32.NewProc(\"GetSecurityDescriptorControl\")\n\tprocGetSecurityDescriptorDacl                            = modadvapi32.NewProc(\"GetSecurityDescriptorDacl\")\n\tprocGetSecurityDescriptorGroup                           = modadvapi32.NewProc(\"GetSecurityDescriptorGroup\")\n\tprocGetSecurityDescriptorLength                          = modadvapi32.NewProc(\"GetSecurityDescriptorLength\")\n\tprocGetSecurityDescriptorOwner                           = modadvapi32.NewProc(\"GetSecurityDescriptorOwner\")\n\tprocGetSecurityDescriptorRMControl                       = modadvapi32.NewProc(\"GetSecurityDescriptorRMControl\")\n\tprocGetSecurityDescriptorSacl                            = modadvapi32.NewProc(\"GetSecurityDescriptorSacl\")\n\tprocGetSecurityInfo                                      = modadvapi32.NewProc(\"GetSecurityInfo\")\n\tprocGetSidIdentifierAuthority                            = modadvapi32.NewProc(\"GetSidIdentifierAuthority\")\n\tprocGetSidSubAuthority                                   = modadvapi32.NewProc(\"GetSidSubAuthority\")\n\tprocGetSidSubAuthorityCount                              = modadvapi32.NewProc(\"GetSidSubAuthorityCount\")\n\tprocGetTokenInformation                                  = modadvapi32.NewProc(\"GetTokenInformation\")\n\tprocImpersonateSelf                                      = modadvapi32.NewProc(\"ImpersonateSelf\")\n\tprocInitializeSecurityDescriptor                         = modadvapi32.NewProc(\"InitializeSecurityDescriptor\")\n\tprocInitiateSystemShutdownExW                            = modadvapi32.NewProc(\"InitiateSystemShutdownExW\")\n\tprocIsTokenRestricted                                    = modadvapi32.NewProc(\"IsTokenRestricted\")\n\tprocIsValidSecurityDescriptor                            = modadvapi32.NewProc(\"IsValidSecurityDescriptor\")\n\tprocIsValidSid                                           = modadvapi32.NewProc(\"IsValidSid\")\n\tprocIsWellKnownSid                                       = modadvapi32.NewProc(\"IsWellKnownSid\")\n\tprocLookupAccountNameW                                   = modadvapi32.NewProc(\"LookupAccountNameW\")\n\tprocLookupAccountSidW                                    = modadvapi32.NewProc(\"LookupAccountSidW\")\n\tprocLookupPrivilegeValueW                                = modadvapi32.NewProc(\"LookupPrivilegeValueW\")\n\tprocMakeAbsoluteSD                                       = modadvapi32.NewProc(\"MakeAbsoluteSD\")\n\tprocMakeSelfRelativeSD                                   = modadvapi32.NewProc(\"MakeSelfRelativeSD\")\n\tprocNotifyServiceStatusChangeW                           = modadvapi32.NewProc(\"NotifyServiceStatusChangeW\")\n\tprocOpenProcessToken                                     = modadvapi32.NewProc(\"OpenProcessToken\")\n\tprocOpenSCManagerW                                       = modadvapi32.NewProc(\"OpenSCManagerW\")\n\tprocOpenServiceW                                         = modadvapi32.NewProc(\"OpenServiceW\")\n\tprocOpenThreadToken                                      = modadvapi32.NewProc(\"OpenThreadToken\")\n\tprocQueryServiceConfig2W                                 = modadvapi32.NewProc(\"QueryServiceConfig2W\")\n\tprocQueryServiceConfigW                                  = modadvapi32.NewProc(\"QueryServiceConfigW\")\n\tprocQueryServiceDynamicInformation                       = modadvapi32.NewProc(\"QueryServiceDynamicInformation\")\n\tprocQueryServiceLockStatusW                              = modadvapi32.NewProc(\"QueryServiceLockStatusW\")\n\tprocQueryServiceStatus                                   = modadvapi32.NewProc(\"QueryServiceStatus\")\n\tprocQueryServiceStatusEx                                 = modadvapi32.NewProc(\"QueryServiceStatusEx\")\n\tprocRegCloseKey                                          = modadvapi32.NewProc(\"RegCloseKey\")\n\tprocRegEnumKeyExW                                        = modadvapi32.NewProc(\"RegEnumKeyExW\")\n\tprocRegNotifyChangeKeyValue                              = modadvapi32.NewProc(\"RegNotifyChangeKeyValue\")\n\tprocRegOpenKeyExW                                        = modadvapi32.NewProc(\"RegOpenKeyExW\")\n\tprocRegQueryInfoKeyW                                     = modadvapi32.NewProc(\"RegQueryInfoKeyW\")\n\tprocRegQueryValueExW                                     = modadvapi32.NewProc(\"RegQueryValueExW\")\n\tprocRegisterEventSourceW                                 = modadvapi32.NewProc(\"RegisterEventSourceW\")\n\tprocRegisterServiceCtrlHandlerExW                        = modadvapi32.NewProc(\"RegisterServiceCtrlHandlerExW\")\n\tprocReportEventW                                         = modadvapi32.NewProc(\"ReportEventW\")\n\tprocRevertToSelf                                         = modadvapi32.NewProc(\"RevertToSelf\")\n\tprocSetEntriesInAclW                                     = modadvapi32.NewProc(\"SetEntriesInAclW\")\n\tprocSetKernelObjectSecurity                              = modadvapi32.NewProc(\"SetKernelObjectSecurity\")\n\tprocSetNamedSecurityInfoW                                = modadvapi32.NewProc(\"SetNamedSecurityInfoW\")\n\tprocSetSecurityDescriptorControl                         = modadvapi32.NewProc(\"SetSecurityDescriptorControl\")\n\tprocSetSecurityDescriptorDacl                            = modadvapi32.NewProc(\"SetSecurityDescriptorDacl\")\n\tprocSetSecurityDescriptorGroup                           = modadvapi32.NewProc(\"SetSecurityDescriptorGroup\")\n\tprocSetSecurityDescriptorOwner                           = modadvapi32.NewProc(\"SetSecurityDescriptorOwner\")\n\tprocSetSecurityDescriptorRMControl                       = modadvapi32.NewProc(\"SetSecurityDescriptorRMControl\")\n\tprocSetSecurityDescriptorSacl                            = modadvapi32.NewProc(\"SetSecurityDescriptorSacl\")\n\tprocSetSecurityInfo                                      = modadvapi32.NewProc(\"SetSecurityInfo\")\n\tprocSetServiceStatus                                     = modadvapi32.NewProc(\"SetServiceStatus\")\n\tprocSetThreadToken                                       = modadvapi32.NewProc(\"SetThreadToken\")\n\tprocSetTokenInformation                                  = modadvapi32.NewProc(\"SetTokenInformation\")\n\tprocStartServiceCtrlDispatcherW                          = modadvapi32.NewProc(\"StartServiceCtrlDispatcherW\")\n\tprocStartServiceW                                        = modadvapi32.NewProc(\"StartServiceW\")\n\tprocCertAddCertificateContextToStore                     = modcrypt32.NewProc(\"CertAddCertificateContextToStore\")\n\tprocCertCloseStore                                       = modcrypt32.NewProc(\"CertCloseStore\")\n\tprocCertCreateCertificateContext                         = modcrypt32.NewProc(\"CertCreateCertificateContext\")\n\tprocCertDeleteCertificateFromStore                       = modcrypt32.NewProc(\"CertDeleteCertificateFromStore\")\n\tprocCertDuplicateCertificateContext                      = modcrypt32.NewProc(\"CertDuplicateCertificateContext\")\n\tprocCertEnumCertificatesInStore                          = modcrypt32.NewProc(\"CertEnumCertificatesInStore\")\n\tprocCertFindCertificateInStore                           = modcrypt32.NewProc(\"CertFindCertificateInStore\")\n\tprocCertFindChainInStore                                 = modcrypt32.NewProc(\"CertFindChainInStore\")\n\tprocCertFindExtension                                    = modcrypt32.NewProc(\"CertFindExtension\")\n\tprocCertFreeCertificateChain                             = modcrypt32.NewProc(\"CertFreeCertificateChain\")\n\tprocCertFreeCertificateContext                           = modcrypt32.NewProc(\"CertFreeCertificateContext\")\n\tprocCertGetCertificateChain                              = modcrypt32.NewProc(\"CertGetCertificateChain\")\n\tprocCertGetNameStringW                                   = modcrypt32.NewProc(\"CertGetNameStringW\")\n\tprocCertOpenStore                                        = modcrypt32.NewProc(\"CertOpenStore\")\n\tprocCertOpenSystemStoreW                                 = modcrypt32.NewProc(\"CertOpenSystemStoreW\")\n\tprocCertVerifyCertificateChainPolicy                     = modcrypt32.NewProc(\"CertVerifyCertificateChainPolicy\")\n\tprocCryptAcquireCertificatePrivateKey                    = modcrypt32.NewProc(\"CryptAcquireCertificatePrivateKey\")\n\tprocCryptDecodeObject                                    = modcrypt32.NewProc(\"CryptDecodeObject\")\n\tprocCryptProtectData                                     = modcrypt32.NewProc(\"CryptProtectData\")\n\tprocCryptQueryObject                                     = modcrypt32.NewProc(\"CryptQueryObject\")\n\tprocCryptUnprotectData                                   = modcrypt32.NewProc(\"CryptUnprotectData\")\n\tprocPFXImportCertStore                                   = modcrypt32.NewProc(\"PFXImportCertStore\")\n\tprocDnsNameCompare_W                                     = moddnsapi.NewProc(\"DnsNameCompare_W\")\n\tprocDnsQuery_W                                           = moddnsapi.NewProc(\"DnsQuery_W\")\n\tprocDnsRecordListFree                                    = moddnsapi.NewProc(\"DnsRecordListFree\")\n\tprocDwmGetWindowAttribute                                = moddwmapi.NewProc(\"DwmGetWindowAttribute\")\n\tprocDwmSetWindowAttribute                                = moddwmapi.NewProc(\"DwmSetWindowAttribute\")\n\tprocCancelMibChangeNotify2                               = modiphlpapi.NewProc(\"CancelMibChangeNotify2\")\n\tprocFreeMibTable                                         = modiphlpapi.NewProc(\"FreeMibTable\")\n\tprocGetAdaptersAddresses                                 = modiphlpapi.NewProc(\"GetAdaptersAddresses\")\n\tprocGetAdaptersInfo                                      = modiphlpapi.NewProc(\"GetAdaptersInfo\")\n\tprocGetBestInterfaceEx                                   = modiphlpapi.NewProc(\"GetBestInterfaceEx\")\n\tprocGetIfEntry                                           = modiphlpapi.NewProc(\"GetIfEntry\")\n\tprocGetIfEntry2Ex                                        = modiphlpapi.NewProc(\"GetIfEntry2Ex\")\n\tprocGetIpForwardEntry2                                   = modiphlpapi.NewProc(\"GetIpForwardEntry2\")\n\tprocGetIpForwardTable2                                   = modiphlpapi.NewProc(\"GetIpForwardTable2\")\n\tprocGetUnicastIpAddressEntry                             = modiphlpapi.NewProc(\"GetUnicastIpAddressEntry\")\n\tprocNotifyIpInterfaceChange                              = modiphlpapi.NewProc(\"NotifyIpInterfaceChange\")\n\tprocNotifyRouteChange2                                   = modiphlpapi.NewProc(\"NotifyRouteChange2\")\n\tprocNotifyUnicastIpAddressChange                         = modiphlpapi.NewProc(\"NotifyUnicastIpAddressChange\")\n\tprocAddDllDirectory                                      = modkernel32.NewProc(\"AddDllDirectory\")\n\tprocAssignProcessToJobObject                             = modkernel32.NewProc(\"AssignProcessToJobObject\")\n\tprocCancelIo                                             = modkernel32.NewProc(\"CancelIo\")\n\tprocCancelIoEx                                           = modkernel32.NewProc(\"CancelIoEx\")\n\tprocClearCommBreak                                       = modkernel32.NewProc(\"ClearCommBreak\")\n\tprocClearCommError                                       = modkernel32.NewProc(\"ClearCommError\")\n\tprocCloseHandle                                          = modkernel32.NewProc(\"CloseHandle\")\n\tprocClosePseudoConsole                                   = modkernel32.NewProc(\"ClosePseudoConsole\")\n\tprocConnectNamedPipe                                     = modkernel32.NewProc(\"ConnectNamedPipe\")\n\tprocCreateDirectoryW                                     = modkernel32.NewProc(\"CreateDirectoryW\")\n\tprocCreateEventExW                                       = modkernel32.NewProc(\"CreateEventExW\")\n\tprocCreateEventW                                         = modkernel32.NewProc(\"CreateEventW\")\n\tprocCreateFileMappingW                                   = modkernel32.NewProc(\"CreateFileMappingW\")\n\tprocCreateFileW                                          = modkernel32.NewProc(\"CreateFileW\")\n\tprocCreateHardLinkW                                      = modkernel32.NewProc(\"CreateHardLinkW\")\n\tprocCreateIoCompletionPort                               = modkernel32.NewProc(\"CreateIoCompletionPort\")\n\tprocCreateJobObjectW                                     = modkernel32.NewProc(\"CreateJobObjectW\")\n\tprocCreateMutexExW                                       = modkernel32.NewProc(\"CreateMutexExW\")\n\tprocCreateMutexW                                         = modkernel32.NewProc(\"CreateMutexW\")\n\tprocCreateNamedPipeW                                     = modkernel32.NewProc(\"CreateNamedPipeW\")\n\tprocCreatePipe                                           = modkernel32.NewProc(\"CreatePipe\")\n\tprocCreateProcessW                                       = modkernel32.NewProc(\"CreateProcessW\")\n\tprocCreatePseudoConsole                                  = modkernel32.NewProc(\"CreatePseudoConsole\")\n\tprocCreateSymbolicLinkW                                  = modkernel32.NewProc(\"CreateSymbolicLinkW\")\n\tprocCreateToolhelp32Snapshot                             = modkernel32.NewProc(\"CreateToolhelp32Snapshot\")\n\tprocDefineDosDeviceW                                     = modkernel32.NewProc(\"DefineDosDeviceW\")\n\tprocDeleteFileW                                          = modkernel32.NewProc(\"DeleteFileW\")\n\tprocDeleteProcThreadAttributeList                        = modkernel32.NewProc(\"DeleteProcThreadAttributeList\")\n\tprocDeleteVolumeMountPointW                              = modkernel32.NewProc(\"DeleteVolumeMountPointW\")\n\tprocDeviceIoControl                                      = modkernel32.NewProc(\"DeviceIoControl\")\n\tprocDisconnectNamedPipe                                  = modkernel32.NewProc(\"DisconnectNamedPipe\")\n\tprocDuplicateHandle                                      = modkernel32.NewProc(\"DuplicateHandle\")\n\tprocEscapeCommFunction                                   = modkernel32.NewProc(\"EscapeCommFunction\")\n\tprocExitProcess                                          = modkernel32.NewProc(\"ExitProcess\")\n\tprocExpandEnvironmentStringsW                            = modkernel32.NewProc(\"ExpandEnvironmentStringsW\")\n\tprocFindClose                                            = modkernel32.NewProc(\"FindClose\")\n\tprocFindCloseChangeNotification                          = modkernel32.NewProc(\"FindCloseChangeNotification\")\n\tprocFindFirstChangeNotificationW                         = modkernel32.NewProc(\"FindFirstChangeNotificationW\")\n\tprocFindFirstFileW                                       = modkernel32.NewProc(\"FindFirstFileW\")\n\tprocFindFirstVolumeMountPointW                           = modkernel32.NewProc(\"FindFirstVolumeMountPointW\")\n\tprocFindFirstVolumeW                                     = modkernel32.NewProc(\"FindFirstVolumeW\")\n\tprocFindNextChangeNotification                           = modkernel32.NewProc(\"FindNextChangeNotification\")\n\tprocFindNextFileW                                        = modkernel32.NewProc(\"FindNextFileW\")\n\tprocFindNextVolumeMountPointW                            = modkernel32.NewProc(\"FindNextVolumeMountPointW\")\n\tprocFindNextVolumeW                                      = modkernel32.NewProc(\"FindNextVolumeW\")\n\tprocFindResourceW                                        = modkernel32.NewProc(\"FindResourceW\")\n\tprocFindVolumeClose                                      = modkernel32.NewProc(\"FindVolumeClose\")\n\tprocFindVolumeMountPointClose                            = modkernel32.NewProc(\"FindVolumeMountPointClose\")\n\tprocFlushConsoleInputBuffer                              = modkernel32.NewProc(\"FlushConsoleInputBuffer\")\n\tprocFlushFileBuffers                                     = modkernel32.NewProc(\"FlushFileBuffers\")\n\tprocFlushViewOfFile                                      = modkernel32.NewProc(\"FlushViewOfFile\")\n\tprocFormatMessageW                                       = modkernel32.NewProc(\"FormatMessageW\")\n\tprocFreeEnvironmentStringsW                              = modkernel32.NewProc(\"FreeEnvironmentStringsW\")\n\tprocFreeLibrary                                          = modkernel32.NewProc(\"FreeLibrary\")\n\tprocGenerateConsoleCtrlEvent                             = modkernel32.NewProc(\"GenerateConsoleCtrlEvent\")\n\tprocGetACP                                               = modkernel32.NewProc(\"GetACP\")\n\tprocGetActiveProcessorCount                              = modkernel32.NewProc(\"GetActiveProcessorCount\")\n\tprocGetCommModemStatus                                   = modkernel32.NewProc(\"GetCommModemStatus\")\n\tprocGetCommState                                         = modkernel32.NewProc(\"GetCommState\")\n\tprocGetCommTimeouts                                      = modkernel32.NewProc(\"GetCommTimeouts\")\n\tprocGetCommandLineW                                      = modkernel32.NewProc(\"GetCommandLineW\")\n\tprocGetComputerNameExW                                   = modkernel32.NewProc(\"GetComputerNameExW\")\n\tprocGetComputerNameW                                     = modkernel32.NewProc(\"GetComputerNameW\")\n\tprocGetConsoleCP                                         = modkernel32.NewProc(\"GetConsoleCP\")\n\tprocGetConsoleMode                                       = modkernel32.NewProc(\"GetConsoleMode\")\n\tprocGetConsoleOutputCP                                   = modkernel32.NewProc(\"GetConsoleOutputCP\")\n\tprocGetConsoleScreenBufferInfo                           = modkernel32.NewProc(\"GetConsoleScreenBufferInfo\")\n\tprocGetCurrentDirectoryW                                 = modkernel32.NewProc(\"GetCurrentDirectoryW\")\n\tprocGetCurrentProcessId                                  = modkernel32.NewProc(\"GetCurrentProcessId\")\n\tprocGetCurrentThreadId                                   = modkernel32.NewProc(\"GetCurrentThreadId\")\n\tprocGetDiskFreeSpaceExW                                  = modkernel32.NewProc(\"GetDiskFreeSpaceExW\")\n\tprocGetDriveTypeW                                        = modkernel32.NewProc(\"GetDriveTypeW\")\n\tprocGetEnvironmentStringsW                               = modkernel32.NewProc(\"GetEnvironmentStringsW\")\n\tprocGetEnvironmentVariableW                              = modkernel32.NewProc(\"GetEnvironmentVariableW\")\n\tprocGetExitCodeProcess                                   = modkernel32.NewProc(\"GetExitCodeProcess\")\n\tprocGetFileAttributesExW                                 = modkernel32.NewProc(\"GetFileAttributesExW\")\n\tprocGetFileAttributesW                                   = modkernel32.NewProc(\"GetFileAttributesW\")\n\tprocGetFileInformationByHandle                           = modkernel32.NewProc(\"GetFileInformationByHandle\")\n\tprocGetFileInformationByHandleEx                         = modkernel32.NewProc(\"GetFileInformationByHandleEx\")\n\tprocGetFileTime                                          = modkernel32.NewProc(\"GetFileTime\")\n\tprocGetFileType                                          = modkernel32.NewProc(\"GetFileType\")\n\tprocGetFinalPathNameByHandleW                            = modkernel32.NewProc(\"GetFinalPathNameByHandleW\")\n\tprocGetFullPathNameW                                     = modkernel32.NewProc(\"GetFullPathNameW\")\n\tprocGetLargePageMinimum                                  = modkernel32.NewProc(\"GetLargePageMinimum\")\n\tprocGetLastError                                         = modkernel32.NewProc(\"GetLastError\")\n\tprocGetLogicalDriveStringsW                              = modkernel32.NewProc(\"GetLogicalDriveStringsW\")\n\tprocGetLogicalDrives                                     = modkernel32.NewProc(\"GetLogicalDrives\")\n\tprocGetLongPathNameW                                     = modkernel32.NewProc(\"GetLongPathNameW\")\n\tprocGetMaximumProcessorCount                             = modkernel32.NewProc(\"GetMaximumProcessorCount\")\n\tprocGetModuleFileNameW                                   = modkernel32.NewProc(\"GetModuleFileNameW\")\n\tprocGetModuleHandleExW                                   = modkernel32.NewProc(\"GetModuleHandleExW\")\n\tprocGetNamedPipeClientProcessId                          = modkernel32.NewProc(\"GetNamedPipeClientProcessId\")\n\tprocGetNamedPipeHandleStateW                             = modkernel32.NewProc(\"GetNamedPipeHandleStateW\")\n\tprocGetNamedPipeInfo                                     = modkernel32.NewProc(\"GetNamedPipeInfo\")\n\tprocGetNamedPipeServerProcessId                          = modkernel32.NewProc(\"GetNamedPipeServerProcessId\")\n\tprocGetNumberOfConsoleInputEvents                        = modkernel32.NewProc(\"GetNumberOfConsoleInputEvents\")\n\tprocGetOverlappedResult                                  = modkernel32.NewProc(\"GetOverlappedResult\")\n\tprocGetPriorityClass                                     = modkernel32.NewProc(\"GetPriorityClass\")\n\tprocGetProcAddress                                       = modkernel32.NewProc(\"GetProcAddress\")\n\tprocGetProcessId                                         = modkernel32.NewProc(\"GetProcessId\")\n\tprocGetProcessPreferredUILanguages                       = modkernel32.NewProc(\"GetProcessPreferredUILanguages\")\n\tprocGetProcessShutdownParameters                         = modkernel32.NewProc(\"GetProcessShutdownParameters\")\n\tprocGetProcessTimes                                      = modkernel32.NewProc(\"GetProcessTimes\")\n\tprocGetProcessWorkingSetSizeEx                           = modkernel32.NewProc(\"GetProcessWorkingSetSizeEx\")\n\tprocGetQueuedCompletionStatus                            = modkernel32.NewProc(\"GetQueuedCompletionStatus\")\n\tprocGetShortPathNameW                                    = modkernel32.NewProc(\"GetShortPathNameW\")\n\tprocGetStartupInfoW                                      = modkernel32.NewProc(\"GetStartupInfoW\")\n\tprocGetStdHandle                                         = modkernel32.NewProc(\"GetStdHandle\")\n\tprocGetSystemDirectoryW                                  = modkernel32.NewProc(\"GetSystemDirectoryW\")\n\tprocGetSystemPreferredUILanguages                        = modkernel32.NewProc(\"GetSystemPreferredUILanguages\")\n\tprocGetSystemTimeAsFileTime                              = modkernel32.NewProc(\"GetSystemTimeAsFileTime\")\n\tprocGetSystemTimePreciseAsFileTime                       = modkernel32.NewProc(\"GetSystemTimePreciseAsFileTime\")\n\tprocGetSystemWindowsDirectoryW                           = modkernel32.NewProc(\"GetSystemWindowsDirectoryW\")\n\tprocGetTempPathW                                         = modkernel32.NewProc(\"GetTempPathW\")\n\tprocGetThreadPreferredUILanguages                        = modkernel32.NewProc(\"GetThreadPreferredUILanguages\")\n\tprocGetTickCount64                                       = modkernel32.NewProc(\"GetTickCount64\")\n\tprocGetTimeZoneInformation                               = modkernel32.NewProc(\"GetTimeZoneInformation\")\n\tprocGetUserPreferredUILanguages                          = modkernel32.NewProc(\"GetUserPreferredUILanguages\")\n\tprocGetVersion                                           = modkernel32.NewProc(\"GetVersion\")\n\tprocGetVolumeInformationByHandleW                        = modkernel32.NewProc(\"GetVolumeInformationByHandleW\")\n\tprocGetVolumeInformationW                                = modkernel32.NewProc(\"GetVolumeInformationW\")\n\tprocGetVolumeNameForVolumeMountPointW                    = modkernel32.NewProc(\"GetVolumeNameForVolumeMountPointW\")\n\tprocGetVolumePathNameW                                   = modkernel32.NewProc(\"GetVolumePathNameW\")\n\tprocGetVolumePathNamesForVolumeNameW                     = modkernel32.NewProc(\"GetVolumePathNamesForVolumeNameW\")\n\tprocGetWindowsDirectoryW                                 = modkernel32.NewProc(\"GetWindowsDirectoryW\")\n\tprocInitializeProcThreadAttributeList                    = modkernel32.NewProc(\"InitializeProcThreadAttributeList\")\n\tprocIsProcessorFeaturePresent                            = modkernel32.NewProc(\"IsProcessorFeaturePresent\")\n\tprocIsWow64Process                                       = modkernel32.NewProc(\"IsWow64Process\")\n\tprocIsWow64Process2                                      = modkernel32.NewProc(\"IsWow64Process2\")\n\tprocLoadLibraryExW                                       = modkernel32.NewProc(\"LoadLibraryExW\")\n\tprocLoadLibraryW                                         = modkernel32.NewProc(\"LoadLibraryW\")\n\tprocLoadResource                                         = modkernel32.NewProc(\"LoadResource\")\n\tprocLocalAlloc                                           = modkernel32.NewProc(\"LocalAlloc\")\n\tprocLocalFree                                            = modkernel32.NewProc(\"LocalFree\")\n\tprocLockFileEx                                           = modkernel32.NewProc(\"LockFileEx\")\n\tprocLockResource                                         = modkernel32.NewProc(\"LockResource\")\n\tprocMapViewOfFile                                        = modkernel32.NewProc(\"MapViewOfFile\")\n\tprocModule32FirstW                                       = modkernel32.NewProc(\"Module32FirstW\")\n\tprocModule32NextW                                        = modkernel32.NewProc(\"Module32NextW\")\n\tprocMoveFileExW                                          = modkernel32.NewProc(\"MoveFileExW\")\n\tprocMoveFileW                                            = modkernel32.NewProc(\"MoveFileW\")\n\tprocMultiByteToWideChar                                  = modkernel32.NewProc(\"MultiByteToWideChar\")\n\tprocOpenEventW                                           = modkernel32.NewProc(\"OpenEventW\")\n\tprocOpenMutexW                                           = modkernel32.NewProc(\"OpenMutexW\")\n\tprocOpenProcess                                          = modkernel32.NewProc(\"OpenProcess\")\n\tprocOpenThread                                           = modkernel32.NewProc(\"OpenThread\")\n\tprocPostQueuedCompletionStatus                           = modkernel32.NewProc(\"PostQueuedCompletionStatus\")\n\tprocProcess32FirstW                                      = modkernel32.NewProc(\"Process32FirstW\")\n\tprocProcess32NextW                                       = modkernel32.NewProc(\"Process32NextW\")\n\tprocProcessIdToSessionId                                 = modkernel32.NewProc(\"ProcessIdToSessionId\")\n\tprocPulseEvent                                           = modkernel32.NewProc(\"PulseEvent\")\n\tprocPurgeComm                                            = modkernel32.NewProc(\"PurgeComm\")\n\tprocQueryDosDeviceW                                      = modkernel32.NewProc(\"QueryDosDeviceW\")\n\tprocQueryFullProcessImageNameW                           = modkernel32.NewProc(\"QueryFullProcessImageNameW\")\n\tprocQueryInformationJobObject                            = modkernel32.NewProc(\"QueryInformationJobObject\")\n\tprocReadConsoleW                                         = modkernel32.NewProc(\"ReadConsoleW\")\n\tprocReadDirectoryChangesW                                = modkernel32.NewProc(\"ReadDirectoryChangesW\")\n\tprocReadFile                                             = modkernel32.NewProc(\"ReadFile\")\n\tprocReadProcessMemory                                    = modkernel32.NewProc(\"ReadProcessMemory\")\n\tprocReleaseMutex                                         = modkernel32.NewProc(\"ReleaseMutex\")\n\tprocRemoveDirectoryW                                     = modkernel32.NewProc(\"RemoveDirectoryW\")\n\tprocRemoveDllDirectory                                   = modkernel32.NewProc(\"RemoveDllDirectory\")\n\tprocResetEvent                                           = modkernel32.NewProc(\"ResetEvent\")\n\tprocResizePseudoConsole                                  = modkernel32.NewProc(\"ResizePseudoConsole\")\n\tprocResumeThread                                         = modkernel32.NewProc(\"ResumeThread\")\n\tprocSetCommBreak                                         = modkernel32.NewProc(\"SetCommBreak\")\n\tprocSetCommMask                                          = modkernel32.NewProc(\"SetCommMask\")\n\tprocSetCommState                                         = modkernel32.NewProc(\"SetCommState\")\n\tprocSetCommTimeouts                                      = modkernel32.NewProc(\"SetCommTimeouts\")\n\tprocSetConsoleCP                                         = modkernel32.NewProc(\"SetConsoleCP\")\n\tprocSetConsoleCursorPosition                             = modkernel32.NewProc(\"SetConsoleCursorPosition\")\n\tprocSetConsoleMode                                       = modkernel32.NewProc(\"SetConsoleMode\")\n\tprocSetConsoleOutputCP                                   = modkernel32.NewProc(\"SetConsoleOutputCP\")\n\tprocSetCurrentDirectoryW                                 = modkernel32.NewProc(\"SetCurrentDirectoryW\")\n\tprocSetDefaultDllDirectories                             = modkernel32.NewProc(\"SetDefaultDllDirectories\")\n\tprocSetDllDirectoryW                                     = modkernel32.NewProc(\"SetDllDirectoryW\")\n\tprocSetEndOfFile                                         = modkernel32.NewProc(\"SetEndOfFile\")\n\tprocSetEnvironmentVariableW                              = modkernel32.NewProc(\"SetEnvironmentVariableW\")\n\tprocSetErrorMode                                         = modkernel32.NewProc(\"SetErrorMode\")\n\tprocSetEvent                                             = modkernel32.NewProc(\"SetEvent\")\n\tprocSetFileAttributesW                                   = modkernel32.NewProc(\"SetFileAttributesW\")\n\tprocSetFileCompletionNotificationModes                   = modkernel32.NewProc(\"SetFileCompletionNotificationModes\")\n\tprocSetFileInformationByHandle                           = modkernel32.NewProc(\"SetFileInformationByHandle\")\n\tprocSetFilePointer                                       = modkernel32.NewProc(\"SetFilePointer\")\n\tprocSetFileTime                                          = modkernel32.NewProc(\"SetFileTime\")\n\tprocSetFileValidData                                     = modkernel32.NewProc(\"SetFileValidData\")\n\tprocSetHandleInformation                                 = modkernel32.NewProc(\"SetHandleInformation\")\n\tprocSetInformationJobObject                              = modkernel32.NewProc(\"SetInformationJobObject\")\n\tprocSetNamedPipeHandleState                              = modkernel32.NewProc(\"SetNamedPipeHandleState\")\n\tprocSetPriorityClass                                     = modkernel32.NewProc(\"SetPriorityClass\")\n\tprocSetProcessPriorityBoost                              = modkernel32.NewProc(\"SetProcessPriorityBoost\")\n\tprocSetProcessShutdownParameters                         = modkernel32.NewProc(\"SetProcessShutdownParameters\")\n\tprocSetProcessWorkingSetSizeEx                           = modkernel32.NewProc(\"SetProcessWorkingSetSizeEx\")\n\tprocSetStdHandle                                         = modkernel32.NewProc(\"SetStdHandle\")\n\tprocSetVolumeLabelW                                      = modkernel32.NewProc(\"SetVolumeLabelW\")\n\tprocSetVolumeMountPointW                                 = modkernel32.NewProc(\"SetVolumeMountPointW\")\n\tprocSetupComm                                            = modkernel32.NewProc(\"SetupComm\")\n\tprocSizeofResource                                       = modkernel32.NewProc(\"SizeofResource\")\n\tprocSleepEx                                              = modkernel32.NewProc(\"SleepEx\")\n\tprocTerminateJobObject                                   = modkernel32.NewProc(\"TerminateJobObject\")\n\tprocTerminateProcess                                     = modkernel32.NewProc(\"TerminateProcess\")\n\tprocThread32First                                        = modkernel32.NewProc(\"Thread32First\")\n\tprocThread32Next                                         = modkernel32.NewProc(\"Thread32Next\")\n\tprocUnlockFileEx                                         = modkernel32.NewProc(\"UnlockFileEx\")\n\tprocUnmapViewOfFile                                      = modkernel32.NewProc(\"UnmapViewOfFile\")\n\tprocUpdateProcThreadAttribute                            = modkernel32.NewProc(\"UpdateProcThreadAttribute\")\n\tprocVirtualAlloc                                         = modkernel32.NewProc(\"VirtualAlloc\")\n\tprocVirtualFree                                          = modkernel32.NewProc(\"VirtualFree\")\n\tprocVirtualLock                                          = modkernel32.NewProc(\"VirtualLock\")\n\tprocVirtualProtect                                       = modkernel32.NewProc(\"VirtualProtect\")\n\tprocVirtualProtectEx                                     = modkernel32.NewProc(\"VirtualProtectEx\")\n\tprocVirtualQuery                                         = modkernel32.NewProc(\"VirtualQuery\")\n\tprocVirtualQueryEx                                       = modkernel32.NewProc(\"VirtualQueryEx\")\n\tprocVirtualUnlock                                        = modkernel32.NewProc(\"VirtualUnlock\")\n\tprocWTSGetActiveConsoleSessionId                         = modkernel32.NewProc(\"WTSGetActiveConsoleSessionId\")\n\tprocWaitCommEvent                                        = modkernel32.NewProc(\"WaitCommEvent\")\n\tprocWaitForMultipleObjects                               = modkernel32.NewProc(\"WaitForMultipleObjects\")\n\tprocWaitForSingleObject                                  = modkernel32.NewProc(\"WaitForSingleObject\")\n\tprocWriteConsoleW                                        = modkernel32.NewProc(\"WriteConsoleW\")\n\tprocWriteFile                                            = modkernel32.NewProc(\"WriteFile\")\n\tprocWriteProcessMemory                                   = modkernel32.NewProc(\"WriteProcessMemory\")\n\tprocAcceptEx                                             = modmswsock.NewProc(\"AcceptEx\")\n\tprocGetAcceptExSockaddrs                                 = modmswsock.NewProc(\"GetAcceptExSockaddrs\")\n\tprocTransmitFile                                         = modmswsock.NewProc(\"TransmitFile\")\n\tprocNetApiBufferFree                                     = modnetapi32.NewProc(\"NetApiBufferFree\")\n\tprocNetGetJoinInformation                                = modnetapi32.NewProc(\"NetGetJoinInformation\")\n\tprocNetUserEnum                                          = modnetapi32.NewProc(\"NetUserEnum\")\n\tprocNetUserGetInfo                                       = modnetapi32.NewProc(\"NetUserGetInfo\")\n\tprocNtCreateFile                                         = modntdll.NewProc(\"NtCreateFile\")\n\tprocNtCreateNamedPipeFile                                = modntdll.NewProc(\"NtCreateNamedPipeFile\")\n\tprocNtQueryInformationProcess                            = modntdll.NewProc(\"NtQueryInformationProcess\")\n\tprocNtQuerySystemInformation                             = modntdll.NewProc(\"NtQuerySystemInformation\")\n\tprocNtSetInformationFile                                 = modntdll.NewProc(\"NtSetInformationFile\")\n\tprocNtSetInformationProcess                              = modntdll.NewProc(\"NtSetInformationProcess\")\n\tprocNtSetSystemInformation                               = modntdll.NewProc(\"NtSetSystemInformation\")\n\tprocRtlAddFunctionTable                                  = modntdll.NewProc(\"RtlAddFunctionTable\")\n\tprocRtlDefaultNpAcl                                      = modntdll.NewProc(\"RtlDefaultNpAcl\")\n\tprocRtlDeleteFunctionTable                               = modntdll.NewProc(\"RtlDeleteFunctionTable\")\n\tprocRtlDosPathNameToNtPathName_U_WithStatus              = modntdll.NewProc(\"RtlDosPathNameToNtPathName_U_WithStatus\")\n\tprocRtlDosPathNameToRelativeNtPathName_U_WithStatus      = modntdll.NewProc(\"RtlDosPathNameToRelativeNtPathName_U_WithStatus\")\n\tprocRtlGetCurrentPeb                                     = modntdll.NewProc(\"RtlGetCurrentPeb\")\n\tprocRtlGetNtVersionNumbers                               = modntdll.NewProc(\"RtlGetNtVersionNumbers\")\n\tprocRtlGetVersion                                        = modntdll.NewProc(\"RtlGetVersion\")\n\tprocRtlInitString                                        = modntdll.NewProc(\"RtlInitString\")\n\tprocRtlInitUnicodeString                                 = modntdll.NewProc(\"RtlInitUnicodeString\")\n\tprocRtlNtStatusToDosErrorNoTeb                           = modntdll.NewProc(\"RtlNtStatusToDosErrorNoTeb\")\n\tprocCLSIDFromString                                      = modole32.NewProc(\"CLSIDFromString\")\n\tprocCoCreateGuid                                         = modole32.NewProc(\"CoCreateGuid\")\n\tprocCoGetObject                                          = modole32.NewProc(\"CoGetObject\")\n\tprocCoInitializeEx                                       = modole32.NewProc(\"CoInitializeEx\")\n\tprocCoTaskMemFree                                        = modole32.NewProc(\"CoTaskMemFree\")\n\tprocCoUninitialize                                       = modole32.NewProc(\"CoUninitialize\")\n\tprocStringFromGUID2                                      = modole32.NewProc(\"StringFromGUID2\")\n\tprocEnumProcessModules                                   = modpsapi.NewProc(\"EnumProcessModules\")\n\tprocEnumProcessModulesEx                                 = modpsapi.NewProc(\"EnumProcessModulesEx\")\n\tprocEnumProcesses                                        = modpsapi.NewProc(\"EnumProcesses\")\n\tprocGetModuleBaseNameW                                   = modpsapi.NewProc(\"GetModuleBaseNameW\")\n\tprocGetModuleFileNameExW                                 = modpsapi.NewProc(\"GetModuleFileNameExW\")\n\tprocGetModuleInformation                                 = modpsapi.NewProc(\"GetModuleInformation\")\n\tprocQueryWorkingSetEx                                    = modpsapi.NewProc(\"QueryWorkingSetEx\")\n\tprocSubscribeServiceChangeNotifications                  = modsechost.NewProc(\"SubscribeServiceChangeNotifications\")\n\tprocUnsubscribeServiceChangeNotifications                = modsechost.NewProc(\"UnsubscribeServiceChangeNotifications\")\n\tprocGetUserNameExW                                       = modsecur32.NewProc(\"GetUserNameExW\")\n\tprocTranslateNameW                                       = modsecur32.NewProc(\"TranslateNameW\")\n\tprocSetupDiBuildDriverInfoList                           = modsetupapi.NewProc(\"SetupDiBuildDriverInfoList\")\n\tprocSetupDiCallClassInstaller                            = modsetupapi.NewProc(\"SetupDiCallClassInstaller\")\n\tprocSetupDiCancelDriverInfoSearch                        = modsetupapi.NewProc(\"SetupDiCancelDriverInfoSearch\")\n\tprocSetupDiClassGuidsFromNameExW                         = modsetupapi.NewProc(\"SetupDiClassGuidsFromNameExW\")\n\tprocSetupDiClassNameFromGuidExW                          = modsetupapi.NewProc(\"SetupDiClassNameFromGuidExW\")\n\tprocSetupDiCreateDeviceInfoListExW                       = modsetupapi.NewProc(\"SetupDiCreateDeviceInfoListExW\")\n\tprocSetupDiCreateDeviceInfoW                             = modsetupapi.NewProc(\"SetupDiCreateDeviceInfoW\")\n\tprocSetupDiDestroyDeviceInfoList                         = modsetupapi.NewProc(\"SetupDiDestroyDeviceInfoList\")\n\tprocSetupDiDestroyDriverInfoList                         = modsetupapi.NewProc(\"SetupDiDestroyDriverInfoList\")\n\tprocSetupDiEnumDeviceInfo                                = modsetupapi.NewProc(\"SetupDiEnumDeviceInfo\")\n\tprocSetupDiEnumDriverInfoW                               = modsetupapi.NewProc(\"SetupDiEnumDriverInfoW\")\n\tprocSetupDiGetClassDevsExW                               = modsetupapi.NewProc(\"SetupDiGetClassDevsExW\")\n\tprocSetupDiGetClassInstallParamsW                        = modsetupapi.NewProc(\"SetupDiGetClassInstallParamsW\")\n\tprocSetupDiGetDeviceInfoListDetailW                      = modsetupapi.NewProc(\"SetupDiGetDeviceInfoListDetailW\")\n\tprocSetupDiGetDeviceInstallParamsW                       = modsetupapi.NewProc(\"SetupDiGetDeviceInstallParamsW\")\n\tprocSetupDiGetDeviceInstanceIdW                          = modsetupapi.NewProc(\"SetupDiGetDeviceInstanceIdW\")\n\tprocSetupDiGetDevicePropertyW                            = modsetupapi.NewProc(\"SetupDiGetDevicePropertyW\")\n\tprocSetupDiGetDeviceRegistryPropertyW                    = modsetupapi.NewProc(\"SetupDiGetDeviceRegistryPropertyW\")\n\tprocSetupDiGetDriverInfoDetailW                          = modsetupapi.NewProc(\"SetupDiGetDriverInfoDetailW\")\n\tprocSetupDiGetSelectedDevice                             = modsetupapi.NewProc(\"SetupDiGetSelectedDevice\")\n\tprocSetupDiGetSelectedDriverW                            = modsetupapi.NewProc(\"SetupDiGetSelectedDriverW\")\n\tprocSetupDiOpenDevRegKey                                 = modsetupapi.NewProc(\"SetupDiOpenDevRegKey\")\n\tprocSetupDiSetClassInstallParamsW                        = modsetupapi.NewProc(\"SetupDiSetClassInstallParamsW\")\n\tprocSetupDiSetDeviceInstallParamsW                       = modsetupapi.NewProc(\"SetupDiSetDeviceInstallParamsW\")\n\tprocSetupDiSetDeviceRegistryPropertyW                    = modsetupapi.NewProc(\"SetupDiSetDeviceRegistryPropertyW\")\n\tprocSetupDiSetSelectedDevice                             = modsetupapi.NewProc(\"SetupDiSetSelectedDevice\")\n\tprocSetupDiSetSelectedDriverW                            = modsetupapi.NewProc(\"SetupDiSetSelectedDriverW\")\n\tprocSetupUninstallOEMInfW                                = modsetupapi.NewProc(\"SetupUninstallOEMInfW\")\n\tprocCommandLineToArgvW                                   = modshell32.NewProc(\"CommandLineToArgvW\")\n\tprocSHGetKnownFolderPath                                 = modshell32.NewProc(\"SHGetKnownFolderPath\")\n\tprocShellExecuteW                                        = modshell32.NewProc(\"ShellExecuteW\")\n\tprocEnumChildWindows                                     = moduser32.NewProc(\"EnumChildWindows\")\n\tprocEnumWindows                                          = moduser32.NewProc(\"EnumWindows\")\n\tprocExitWindowsEx                                        = moduser32.NewProc(\"ExitWindowsEx\")\n\tprocGetClassNameW                                        = moduser32.NewProc(\"GetClassNameW\")\n\tprocGetDesktopWindow                                     = moduser32.NewProc(\"GetDesktopWindow\")\n\tprocGetForegroundWindow                                  = moduser32.NewProc(\"GetForegroundWindow\")\n\tprocGetGUIThreadInfo                                     = moduser32.NewProc(\"GetGUIThreadInfo\")\n\tprocGetKeyboardLayout                                    = moduser32.NewProc(\"GetKeyboardLayout\")\n\tprocGetShellWindow                                       = moduser32.NewProc(\"GetShellWindow\")\n\tprocGetWindowThreadProcessId                             = moduser32.NewProc(\"GetWindowThreadProcessId\")\n\tprocIsWindow                                             = moduser32.NewProc(\"IsWindow\")\n\tprocIsWindowUnicode                                      = moduser32.NewProc(\"IsWindowUnicode\")\n\tprocIsWindowVisible                                      = moduser32.NewProc(\"IsWindowVisible\")\n\tprocLoadKeyboardLayoutW                                  = moduser32.NewProc(\"LoadKeyboardLayoutW\")\n\tprocMessageBoxW                                          = moduser32.NewProc(\"MessageBoxW\")\n\tprocToUnicodeEx                                          = moduser32.NewProc(\"ToUnicodeEx\")\n\tprocUnloadKeyboardLayout                                 = moduser32.NewProc(\"UnloadKeyboardLayout\")\n\tprocCreateEnvironmentBlock                               = moduserenv.NewProc(\"CreateEnvironmentBlock\")\n\tprocDestroyEnvironmentBlock                              = moduserenv.NewProc(\"DestroyEnvironmentBlock\")\n\tprocGetUserProfileDirectoryW                             = moduserenv.NewProc(\"GetUserProfileDirectoryW\")\n\tprocGetFileVersionInfoSizeW                              = modversion.NewProc(\"GetFileVersionInfoSizeW\")\n\tprocGetFileVersionInfoW                                  = modversion.NewProc(\"GetFileVersionInfoW\")\n\tprocVerQueryValueW                                       = modversion.NewProc(\"VerQueryValueW\")\n\tproctimeBeginPeriod                                      = modwinmm.NewProc(\"timeBeginPeriod\")\n\tproctimeEndPeriod                                        = modwinmm.NewProc(\"timeEndPeriod\")\n\tprocWinVerifyTrustEx                                     = modwintrust.NewProc(\"WinVerifyTrustEx\")\n\tprocFreeAddrInfoW                                        = modws2_32.NewProc(\"FreeAddrInfoW\")\n\tprocGetAddrInfoW                                         = modws2_32.NewProc(\"GetAddrInfoW\")\n\tprocWSACleanup                                           = modws2_32.NewProc(\"WSACleanup\")\n\tprocWSADuplicateSocketW                                  = modws2_32.NewProc(\"WSADuplicateSocketW\")\n\tprocWSAEnumProtocolsW                                    = modws2_32.NewProc(\"WSAEnumProtocolsW\")\n\tprocWSAGetOverlappedResult                               = modws2_32.NewProc(\"WSAGetOverlappedResult\")\n\tprocWSAIoctl                                             = modws2_32.NewProc(\"WSAIoctl\")\n\tprocWSALookupServiceBeginW                               = modws2_32.NewProc(\"WSALookupServiceBeginW\")\n\tprocWSALookupServiceEnd                                  = modws2_32.NewProc(\"WSALookupServiceEnd\")\n\tprocWSALookupServiceNextW                                = modws2_32.NewProc(\"WSALookupServiceNextW\")\n\tprocWSARecv                                              = modws2_32.NewProc(\"WSARecv\")\n\tprocWSARecvFrom                                          = modws2_32.NewProc(\"WSARecvFrom\")\n\tprocWSASend                                              = modws2_32.NewProc(\"WSASend\")\n\tprocWSASendTo                                            = modws2_32.NewProc(\"WSASendTo\")\n\tprocWSASocketW                                           = modws2_32.NewProc(\"WSASocketW\")\n\tprocWSAStartup                                           = modws2_32.NewProc(\"WSAStartup\")\n\tprocbind                                                 = modws2_32.NewProc(\"bind\")\n\tprocclosesocket                                          = modws2_32.NewProc(\"closesocket\")\n\tprocconnect                                              = modws2_32.NewProc(\"connect\")\n\tprocgethostbyname                                        = modws2_32.NewProc(\"gethostbyname\")\n\tprocgetpeername                                          = modws2_32.NewProc(\"getpeername\")\n\tprocgetprotobyname                                       = modws2_32.NewProc(\"getprotobyname\")\n\tprocgetservbyname                                        = modws2_32.NewProc(\"getservbyname\")\n\tprocgetsockname                                          = modws2_32.NewProc(\"getsockname\")\n\tprocgetsockopt                                           = modws2_32.NewProc(\"getsockopt\")\n\tproclisten                                               = modws2_32.NewProc(\"listen\")\n\tprocntohs                                                = modws2_32.NewProc(\"ntohs\")\n\tprocrecvfrom                                             = modws2_32.NewProc(\"recvfrom\")\n\tprocsendto                                               = modws2_32.NewProc(\"sendto\")\n\tprocsetsockopt                                           = modws2_32.NewProc(\"setsockopt\")\n\tprocshutdown                                             = modws2_32.NewProc(\"shutdown\")\n\tprocsocket                                               = modws2_32.NewProc(\"socket\")\n\tprocWTSEnumerateSessionsW                                = modwtsapi32.NewProc(\"WTSEnumerateSessionsW\")\n\tprocWTSFreeMemory                                        = modwtsapi32.NewProc(\"WTSFreeMemory\")\n\tprocWTSQueryUserToken                                    = modwtsapi32.NewProc(\"WTSQueryUserToken\")\n)\n\nfunc cm_Get_DevNode_Status(status *uint32, problemNumber *uint32, devInst DEVINST, flags uint32) (ret CONFIGRET) {\n\tr0, _, _ := syscall.SyscallN(procCM_Get_DevNode_Status.Addr(), uintptr(unsafe.Pointer(status)), uintptr(unsafe.Pointer(problemNumber)), uintptr(devInst), uintptr(flags))\n\tret = CONFIGRET(r0)\n\treturn\n}\n\nfunc cm_Get_Device_Interface_List(interfaceClass *GUID, deviceID *uint16, buffer *uint16, bufferLen uint32, flags uint32) (ret CONFIGRET) {\n\tr0, _, _ := syscall.SyscallN(procCM_Get_Device_Interface_ListW.Addr(), uintptr(unsafe.Pointer(interfaceClass)), uintptr(unsafe.Pointer(deviceID)), uintptr(unsafe.Pointer(buffer)), uintptr(bufferLen), uintptr(flags))\n\tret = CONFIGRET(r0)\n\treturn\n}\n\nfunc cm_Get_Device_Interface_List_Size(len *uint32, interfaceClass *GUID, deviceID *uint16, flags uint32) (ret CONFIGRET) {\n\tr0, _, _ := syscall.SyscallN(procCM_Get_Device_Interface_List_SizeW.Addr(), uintptr(unsafe.Pointer(len)), uintptr(unsafe.Pointer(interfaceClass)), uintptr(unsafe.Pointer(deviceID)), uintptr(flags))\n\tret = CONFIGRET(r0)\n\treturn\n}\n\nfunc cm_MapCrToWin32Err(configRet CONFIGRET, defaultWin32Error Errno) (ret Errno) {\n\tr0, _, _ := syscall.SyscallN(procCM_MapCrToWin32Err.Addr(), uintptr(configRet), uintptr(defaultWin32Error))\n\tret = Errno(r0)\n\treturn\n}\n\nfunc AdjustTokenGroups(token Token, resetToDefault bool, newstate *Tokengroups, buflen uint32, prevstate *Tokengroups, returnlen *uint32) (err error) {\n\tvar _p0 uint32\n\tif resetToDefault {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procAdjustTokenGroups.Addr(), uintptr(token), uintptr(_p0), uintptr(unsafe.Pointer(newstate)), uintptr(buflen), uintptr(unsafe.Pointer(prevstate)), uintptr(unsafe.Pointer(returnlen)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc AdjustTokenPrivileges(token Token, disableAllPrivileges bool, newstate *Tokenprivileges, buflen uint32, prevstate *Tokenprivileges, returnlen *uint32) (err error) {\n\tvar _p0 uint32\n\tif disableAllPrivileges {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procAdjustTokenPrivileges.Addr(), uintptr(token), uintptr(_p0), uintptr(unsafe.Pointer(newstate)), uintptr(buflen), uintptr(unsafe.Pointer(prevstate)), uintptr(unsafe.Pointer(returnlen)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc AllocateAndInitializeSid(identAuth *SidIdentifierAuthority, subAuth byte, subAuth0 uint32, subAuth1 uint32, subAuth2 uint32, subAuth3 uint32, subAuth4 uint32, subAuth5 uint32, subAuth6 uint32, subAuth7 uint32, sid **SID) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procAllocateAndInitializeSid.Addr(), uintptr(unsafe.Pointer(identAuth)), uintptr(subAuth), uintptr(subAuth0), uintptr(subAuth1), uintptr(subAuth2), uintptr(subAuth3), uintptr(subAuth4), uintptr(subAuth5), uintptr(subAuth6), uintptr(subAuth7), uintptr(unsafe.Pointer(sid)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc buildSecurityDescriptor(owner *TRUSTEE, group *TRUSTEE, countAccessEntries uint32, accessEntries *EXPLICIT_ACCESS, countAuditEntries uint32, auditEntries *EXPLICIT_ACCESS, oldSecurityDescriptor *SECURITY_DESCRIPTOR, sizeNewSecurityDescriptor *uint32, newSecurityDescriptor **SECURITY_DESCRIPTOR) (ret error) {\n\tr0, _, _ := syscall.SyscallN(procBuildSecurityDescriptorW.Addr(), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(countAccessEntries), uintptr(unsafe.Pointer(accessEntries)), uintptr(countAuditEntries), uintptr(unsafe.Pointer(auditEntries)), uintptr(unsafe.Pointer(oldSecurityDescriptor)), uintptr(unsafe.Pointer(sizeNewSecurityDescriptor)), uintptr(unsafe.Pointer(newSecurityDescriptor)))\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc ChangeServiceConfig2(service Handle, infoLevel uint32, info *byte) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procChangeServiceConfig2W.Addr(), uintptr(service), uintptr(infoLevel), uintptr(unsafe.Pointer(info)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ChangeServiceConfig(service Handle, serviceType uint32, startType uint32, errorControl uint32, binaryPathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16, displayName *uint16) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procChangeServiceConfigW.Addr(), uintptr(service), uintptr(serviceType), uintptr(startType), uintptr(errorControl), uintptr(unsafe.Pointer(binaryPathName)), uintptr(unsafe.Pointer(loadOrderGroup)), uintptr(unsafe.Pointer(tagId)), uintptr(unsafe.Pointer(dependencies)), uintptr(unsafe.Pointer(serviceStartName)), uintptr(unsafe.Pointer(password)), uintptr(unsafe.Pointer(displayName)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc checkTokenMembership(tokenHandle Token, sidToCheck *SID, isMember *int32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCheckTokenMembership.Addr(), uintptr(tokenHandle), uintptr(unsafe.Pointer(sidToCheck)), uintptr(unsafe.Pointer(isMember)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CloseServiceHandle(handle Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCloseServiceHandle.Addr(), uintptr(handle))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ControlService(service Handle, control uint32, status *SERVICE_STATUS) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procControlService.Addr(), uintptr(service), uintptr(control), uintptr(unsafe.Pointer(status)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc convertSecurityDescriptorToStringSecurityDescriptor(sd *SECURITY_DESCRIPTOR, revision uint32, securityInformation SECURITY_INFORMATION, str **uint16, strLen *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procConvertSecurityDescriptorToStringSecurityDescriptorW.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(revision), uintptr(securityInformation), uintptr(unsafe.Pointer(str)), uintptr(unsafe.Pointer(strLen)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ConvertSidToStringSid(sid *SID, stringSid **uint16) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procConvertSidToStringSidW.Addr(), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(stringSid)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc convertStringSecurityDescriptorToSecurityDescriptor(str string, revision uint32, sd **SECURITY_DESCRIPTOR, size *uint32) (err error) {\n\tvar _p0 *uint16\n\t_p0, err = syscall.UTF16PtrFromString(str)\n\tif err != nil {\n\t\treturn\n\t}\n\treturn _convertStringSecurityDescriptorToSecurityDescriptor(_p0, revision, sd, size)\n}\n\nfunc _convertStringSecurityDescriptorToSecurityDescriptor(str *uint16, revision uint32, sd **SECURITY_DESCRIPTOR, size *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procConvertStringSecurityDescriptorToSecurityDescriptorW.Addr(), uintptr(unsafe.Pointer(str)), uintptr(revision), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(size)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ConvertStringSidToSid(stringSid *uint16, sid **SID) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procConvertStringSidToSidW.Addr(), uintptr(unsafe.Pointer(stringSid)), uintptr(unsafe.Pointer(sid)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CopySid(destSidLen uint32, destSid *SID, srcSid *SID) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCopySid.Addr(), uintptr(destSidLen), uintptr(unsafe.Pointer(destSid)), uintptr(unsafe.Pointer(srcSid)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateProcessAsUser(token Token, appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) {\n\tvar _p0 uint32\n\tif inheritHandles {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procCreateProcessAsUserW.Addr(), uintptr(token), uintptr(unsafe.Pointer(appName)), uintptr(unsafe.Pointer(commandLine)), uintptr(unsafe.Pointer(procSecurity)), uintptr(unsafe.Pointer(threadSecurity)), uintptr(_p0), uintptr(creationFlags), uintptr(unsafe.Pointer(env)), uintptr(unsafe.Pointer(currentDir)), uintptr(unsafe.Pointer(startupInfo)), uintptr(unsafe.Pointer(outProcInfo)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateService(mgr Handle, serviceName *uint16, displayName *uint16, access uint32, srvType uint32, startType uint32, errCtl uint32, pathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procCreateServiceW.Addr(), uintptr(mgr), uintptr(unsafe.Pointer(serviceName)), uintptr(unsafe.Pointer(displayName)), uintptr(access), uintptr(srvType), uintptr(startType), uintptr(errCtl), uintptr(unsafe.Pointer(pathName)), uintptr(unsafe.Pointer(loadOrderGroup)), uintptr(unsafe.Pointer(tagId)), uintptr(unsafe.Pointer(dependencies)), uintptr(unsafe.Pointer(serviceStartName)), uintptr(unsafe.Pointer(password)))\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc createWellKnownSid(sidType WELL_KNOWN_SID_TYPE, domainSid *SID, sid *SID, sizeSid *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCreateWellKnownSid.Addr(), uintptr(sidType), uintptr(unsafe.Pointer(domainSid)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(sizeSid)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CryptAcquireContext(provhandle *Handle, container *uint16, provider *uint16, provtype uint32, flags uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCryptAcquireContextW.Addr(), uintptr(unsafe.Pointer(provhandle)), uintptr(unsafe.Pointer(container)), uintptr(unsafe.Pointer(provider)), uintptr(provtype), uintptr(flags))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CryptGenRandom(provhandle Handle, buflen uint32, buf *byte) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCryptGenRandom.Addr(), uintptr(provhandle), uintptr(buflen), uintptr(unsafe.Pointer(buf)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CryptReleaseContext(provhandle Handle, flags uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCryptReleaseContext.Addr(), uintptr(provhandle), uintptr(flags))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc DeleteService(service Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procDeleteService.Addr(), uintptr(service))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc DeregisterEventSource(handle Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procDeregisterEventSource.Addr(), uintptr(handle))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc DuplicateTokenEx(existingToken Token, desiredAccess uint32, tokenAttributes *SecurityAttributes, impersonationLevel uint32, tokenType uint32, newToken *Token) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procDuplicateTokenEx.Addr(), uintptr(existingToken), uintptr(desiredAccess), uintptr(unsafe.Pointer(tokenAttributes)), uintptr(impersonationLevel), uintptr(tokenType), uintptr(unsafe.Pointer(newToken)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc EnumDependentServices(service Handle, activityState uint32, services *ENUM_SERVICE_STATUS, buffSize uint32, bytesNeeded *uint32, servicesReturned *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procEnumDependentServicesW.Addr(), uintptr(service), uintptr(activityState), uintptr(unsafe.Pointer(services)), uintptr(buffSize), uintptr(unsafe.Pointer(bytesNeeded)), uintptr(unsafe.Pointer(servicesReturned)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc EnumServicesStatusEx(mgr Handle, infoLevel uint32, serviceType uint32, serviceState uint32, services *byte, bufSize uint32, bytesNeeded *uint32, servicesReturned *uint32, resumeHandle *uint32, groupName *uint16) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procEnumServicesStatusExW.Addr(), uintptr(mgr), uintptr(infoLevel), uintptr(serviceType), uintptr(serviceState), uintptr(unsafe.Pointer(services)), uintptr(bufSize), uintptr(unsafe.Pointer(bytesNeeded)), uintptr(unsafe.Pointer(servicesReturned)), uintptr(unsafe.Pointer(resumeHandle)), uintptr(unsafe.Pointer(groupName)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc EqualSid(sid1 *SID, sid2 *SID) (isEqual bool) {\n\tr0, _, _ := syscall.SyscallN(procEqualSid.Addr(), uintptr(unsafe.Pointer(sid1)), uintptr(unsafe.Pointer(sid2)))\n\tisEqual = r0 != 0\n\treturn\n}\n\nfunc FreeSid(sid *SID) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procFreeSid.Addr(), uintptr(unsafe.Pointer(sid)))\n\tif r1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetAce(acl *ACL, aceIndex uint32, pAce **ACCESS_ALLOWED_ACE) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetAce.Addr(), uintptr(unsafe.Pointer(acl)), uintptr(aceIndex), uintptr(unsafe.Pointer(pAce)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetLengthSid(sid *SID) (len uint32) {\n\tr0, _, _ := syscall.SyscallN(procGetLengthSid.Addr(), uintptr(unsafe.Pointer(sid)))\n\tlen = uint32(r0)\n\treturn\n}\n\nfunc getNamedSecurityInfo(objectName string, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner **SID, group **SID, dacl **ACL, sacl **ACL, sd **SECURITY_DESCRIPTOR) (ret error) {\n\tvar _p0 *uint16\n\t_p0, ret = syscall.UTF16PtrFromString(objectName)\n\tif ret != nil {\n\t\treturn\n\t}\n\treturn _getNamedSecurityInfo(_p0, objectType, securityInformation, owner, group, dacl, sacl, sd)\n}\n\nfunc _getNamedSecurityInfo(objectName *uint16, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner **SID, group **SID, dacl **ACL, sacl **ACL, sd **SECURITY_DESCRIPTOR) (ret error) {\n\tr0, _, _ := syscall.SyscallN(procGetNamedSecurityInfoW.Addr(), uintptr(unsafe.Pointer(objectName)), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl)), uintptr(unsafe.Pointer(sd)))\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc getSecurityDescriptorControl(sd *SECURITY_DESCRIPTOR, control *SECURITY_DESCRIPTOR_CONTROL, revision *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetSecurityDescriptorControl.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(control)), uintptr(unsafe.Pointer(revision)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc getSecurityDescriptorDacl(sd *SECURITY_DESCRIPTOR, daclPresent *bool, dacl **ACL, daclDefaulted *bool) (err error) {\n\tvar _p0 uint32\n\tif *daclPresent {\n\t\t_p0 = 1\n\t}\n\tvar _p1 uint32\n\tif *daclDefaulted {\n\t\t_p1 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procGetSecurityDescriptorDacl.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(&_p0)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(&_p1)))\n\t*daclPresent = _p0 != 0\n\t*daclDefaulted = _p1 != 0\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc getSecurityDescriptorGroup(sd *SECURITY_DESCRIPTOR, group **SID, groupDefaulted *bool) (err error) {\n\tvar _p0 uint32\n\tif *groupDefaulted {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procGetSecurityDescriptorGroup.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(&_p0)))\n\t*groupDefaulted = _p0 != 0\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc getSecurityDescriptorLength(sd *SECURITY_DESCRIPTOR) (len uint32) {\n\tr0, _, _ := syscall.SyscallN(procGetSecurityDescriptorLength.Addr(), uintptr(unsafe.Pointer(sd)))\n\tlen = uint32(r0)\n\treturn\n}\n\nfunc getSecurityDescriptorOwner(sd *SECURITY_DESCRIPTOR, owner **SID, ownerDefaulted *bool) (err error) {\n\tvar _p0 uint32\n\tif *ownerDefaulted {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procGetSecurityDescriptorOwner.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(&_p0)))\n\t*ownerDefaulted = _p0 != 0\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc getSecurityDescriptorRMControl(sd *SECURITY_DESCRIPTOR, rmControl *uint8) (ret error) {\n\tr0, _, _ := syscall.SyscallN(procGetSecurityDescriptorRMControl.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(rmControl)))\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc getSecurityDescriptorSacl(sd *SECURITY_DESCRIPTOR, saclPresent *bool, sacl **ACL, saclDefaulted *bool) (err error) {\n\tvar _p0 uint32\n\tif *saclPresent {\n\t\t_p0 = 1\n\t}\n\tvar _p1 uint32\n\tif *saclDefaulted {\n\t\t_p1 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procGetSecurityDescriptorSacl.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(&_p0)), uintptr(unsafe.Pointer(sacl)), uintptr(unsafe.Pointer(&_p1)))\n\t*saclPresent = _p0 != 0\n\t*saclDefaulted = _p1 != 0\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc getSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner **SID, group **SID, dacl **ACL, sacl **ACL, sd **SECURITY_DESCRIPTOR) (ret error) {\n\tr0, _, _ := syscall.SyscallN(procGetSecurityInfo.Addr(), uintptr(handle), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl)), uintptr(unsafe.Pointer(sd)))\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc getSidIdentifierAuthority(sid *SID) (authority *SidIdentifierAuthority) {\n\tr0, _, _ := syscall.SyscallN(procGetSidIdentifierAuthority.Addr(), uintptr(unsafe.Pointer(sid)))\n\tauthority = (*SidIdentifierAuthority)(unsafe.Pointer(r0))\n\treturn\n}\n\nfunc getSidSubAuthority(sid *SID, index uint32) (subAuthority *uint32) {\n\tr0, _, _ := syscall.SyscallN(procGetSidSubAuthority.Addr(), uintptr(unsafe.Pointer(sid)), uintptr(index))\n\tsubAuthority = (*uint32)(unsafe.Pointer(r0))\n\treturn\n}\n\nfunc getSidSubAuthorityCount(sid *SID) (count *uint8) {\n\tr0, _, _ := syscall.SyscallN(procGetSidSubAuthorityCount.Addr(), uintptr(unsafe.Pointer(sid)))\n\tcount = (*uint8)(unsafe.Pointer(r0))\n\treturn\n}\n\nfunc GetTokenInformation(token Token, infoClass uint32, info *byte, infoLen uint32, returnedLen *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetTokenInformation.Addr(), uintptr(token), uintptr(infoClass), uintptr(unsafe.Pointer(info)), uintptr(infoLen), uintptr(unsafe.Pointer(returnedLen)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ImpersonateSelf(impersonationlevel uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procImpersonateSelf.Addr(), uintptr(impersonationlevel))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc initializeSecurityDescriptor(absoluteSD *SECURITY_DESCRIPTOR, revision uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procInitializeSecurityDescriptor.Addr(), uintptr(unsafe.Pointer(absoluteSD)), uintptr(revision))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc InitiateSystemShutdownEx(machineName *uint16, message *uint16, timeout uint32, forceAppsClosed bool, rebootAfterShutdown bool, reason uint32) (err error) {\n\tvar _p0 uint32\n\tif forceAppsClosed {\n\t\t_p0 = 1\n\t}\n\tvar _p1 uint32\n\tif rebootAfterShutdown {\n\t\t_p1 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procInitiateSystemShutdownExW.Addr(), uintptr(unsafe.Pointer(machineName)), uintptr(unsafe.Pointer(message)), uintptr(timeout), uintptr(_p0), uintptr(_p1), uintptr(reason))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc isTokenRestricted(tokenHandle Token) (ret bool, err error) {\n\tr0, _, e1 := syscall.SyscallN(procIsTokenRestricted.Addr(), uintptr(tokenHandle))\n\tret = r0 != 0\n\tif !ret {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc isValidSecurityDescriptor(sd *SECURITY_DESCRIPTOR) (isValid bool) {\n\tr0, _, _ := syscall.SyscallN(procIsValidSecurityDescriptor.Addr(), uintptr(unsafe.Pointer(sd)))\n\tisValid = r0 != 0\n\treturn\n}\n\nfunc isValidSid(sid *SID) (isValid bool) {\n\tr0, _, _ := syscall.SyscallN(procIsValidSid.Addr(), uintptr(unsafe.Pointer(sid)))\n\tisValid = r0 != 0\n\treturn\n}\n\nfunc isWellKnownSid(sid *SID, sidType WELL_KNOWN_SID_TYPE) (isWellKnown bool) {\n\tr0, _, _ := syscall.SyscallN(procIsWellKnownSid.Addr(), uintptr(unsafe.Pointer(sid)), uintptr(sidType))\n\tisWellKnown = r0 != 0\n\treturn\n}\n\nfunc LookupAccountName(systemName *uint16, accountName *uint16, sid *SID, sidLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procLookupAccountNameW.Addr(), uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(accountName)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(sidLen)), uintptr(unsafe.Pointer(refdDomainName)), uintptr(unsafe.Pointer(refdDomainNameLen)), uintptr(unsafe.Pointer(use)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc LookupAccountSid(systemName *uint16, sid *SID, name *uint16, nameLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procLookupAccountSidW.Addr(), uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(nameLen)), uintptr(unsafe.Pointer(refdDomainName)), uintptr(unsafe.Pointer(refdDomainNameLen)), uintptr(unsafe.Pointer(use)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc LookupPrivilegeValue(systemname *uint16, name *uint16, luid *LUID) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procLookupPrivilegeValueW.Addr(), uintptr(unsafe.Pointer(systemname)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(luid)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc makeAbsoluteSD(selfRelativeSD *SECURITY_DESCRIPTOR, absoluteSD *SECURITY_DESCRIPTOR, absoluteSDSize *uint32, dacl *ACL, daclSize *uint32, sacl *ACL, saclSize *uint32, owner *SID, ownerSize *uint32, group *SID, groupSize *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procMakeAbsoluteSD.Addr(), uintptr(unsafe.Pointer(selfRelativeSD)), uintptr(unsafe.Pointer(absoluteSD)), uintptr(unsafe.Pointer(absoluteSDSize)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(daclSize)), uintptr(unsafe.Pointer(sacl)), uintptr(unsafe.Pointer(saclSize)), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(ownerSize)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(groupSize)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc makeSelfRelativeSD(absoluteSD *SECURITY_DESCRIPTOR, selfRelativeSD *SECURITY_DESCRIPTOR, selfRelativeSDSize *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procMakeSelfRelativeSD.Addr(), uintptr(unsafe.Pointer(absoluteSD)), uintptr(unsafe.Pointer(selfRelativeSD)), uintptr(unsafe.Pointer(selfRelativeSDSize)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc NotifyServiceStatusChange(service Handle, notifyMask uint32, notifier *SERVICE_NOTIFY) (ret error) {\n\tr0, _, _ := syscall.SyscallN(procNotifyServiceStatusChangeW.Addr(), uintptr(service), uintptr(notifyMask), uintptr(unsafe.Pointer(notifier)))\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc OpenProcessToken(process Handle, access uint32, token *Token) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procOpenProcessToken.Addr(), uintptr(process), uintptr(access), uintptr(unsafe.Pointer(token)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc OpenSCManager(machineName *uint16, databaseName *uint16, access uint32) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procOpenSCManagerW.Addr(), uintptr(unsafe.Pointer(machineName)), uintptr(unsafe.Pointer(databaseName)), uintptr(access))\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc OpenService(mgr Handle, serviceName *uint16, access uint32) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procOpenServiceW.Addr(), uintptr(mgr), uintptr(unsafe.Pointer(serviceName)), uintptr(access))\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc OpenThreadToken(thread Handle, access uint32, openAsSelf bool, token *Token) (err error) {\n\tvar _p0 uint32\n\tif openAsSelf {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procOpenThreadToken.Addr(), uintptr(thread), uintptr(access), uintptr(_p0), uintptr(unsafe.Pointer(token)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc QueryServiceConfig2(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procQueryServiceConfig2W.Addr(), uintptr(service), uintptr(infoLevel), uintptr(unsafe.Pointer(buff)), uintptr(buffSize), uintptr(unsafe.Pointer(bytesNeeded)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc QueryServiceConfig(service Handle, serviceConfig *QUERY_SERVICE_CONFIG, bufSize uint32, bytesNeeded *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procQueryServiceConfigW.Addr(), uintptr(service), uintptr(unsafe.Pointer(serviceConfig)), uintptr(bufSize), uintptr(unsafe.Pointer(bytesNeeded)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc QueryServiceDynamicInformation(service Handle, infoLevel uint32, dynamicInfo unsafe.Pointer) (err error) {\n\terr = procQueryServiceDynamicInformation.Find()\n\tif err != nil {\n\t\treturn\n\t}\n\tr1, _, e1 := syscall.SyscallN(procQueryServiceDynamicInformation.Addr(), uintptr(service), uintptr(infoLevel), uintptr(dynamicInfo))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc QueryServiceLockStatus(mgr Handle, lockStatus *QUERY_SERVICE_LOCK_STATUS, bufSize uint32, bytesNeeded *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procQueryServiceLockStatusW.Addr(), uintptr(mgr), uintptr(unsafe.Pointer(lockStatus)), uintptr(bufSize), uintptr(unsafe.Pointer(bytesNeeded)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc QueryServiceStatus(service Handle, status *SERVICE_STATUS) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procQueryServiceStatus.Addr(), uintptr(service), uintptr(unsafe.Pointer(status)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc QueryServiceStatusEx(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procQueryServiceStatusEx.Addr(), uintptr(service), uintptr(infoLevel), uintptr(unsafe.Pointer(buff)), uintptr(buffSize), uintptr(unsafe.Pointer(bytesNeeded)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc RegCloseKey(key Handle) (regerrno error) {\n\tr0, _, _ := syscall.SyscallN(procRegCloseKey.Addr(), uintptr(key))\n\tif r0 != 0 {\n\t\tregerrno = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc RegEnumKeyEx(key Handle, index uint32, name *uint16, nameLen *uint32, reserved *uint32, class *uint16, classLen *uint32, lastWriteTime *Filetime) (regerrno error) {\n\tr0, _, _ := syscall.SyscallN(procRegEnumKeyExW.Addr(), uintptr(key), uintptr(index), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(nameLen)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(class)), uintptr(unsafe.Pointer(classLen)), uintptr(unsafe.Pointer(lastWriteTime)))\n\tif r0 != 0 {\n\t\tregerrno = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc RegNotifyChangeKeyValue(key Handle, watchSubtree bool, notifyFilter uint32, event Handle, asynchronous bool) (regerrno error) {\n\tvar _p0 uint32\n\tif watchSubtree {\n\t\t_p0 = 1\n\t}\n\tvar _p1 uint32\n\tif asynchronous {\n\t\t_p1 = 1\n\t}\n\tr0, _, _ := syscall.SyscallN(procRegNotifyChangeKeyValue.Addr(), uintptr(key), uintptr(_p0), uintptr(notifyFilter), uintptr(event), uintptr(_p1))\n\tif r0 != 0 {\n\t\tregerrno = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc RegOpenKeyEx(key Handle, subkey *uint16, options uint32, desiredAccess uint32, result *Handle) (regerrno error) {\n\tr0, _, _ := syscall.SyscallN(procRegOpenKeyExW.Addr(), uintptr(key), uintptr(unsafe.Pointer(subkey)), uintptr(options), uintptr(desiredAccess), uintptr(unsafe.Pointer(result)))\n\tif r0 != 0 {\n\t\tregerrno = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc RegQueryInfoKey(key Handle, class *uint16, classLen *uint32, reserved *uint32, subkeysLen *uint32, maxSubkeyLen *uint32, maxClassLen *uint32, valuesLen *uint32, maxValueNameLen *uint32, maxValueLen *uint32, saLen *uint32, lastWriteTime *Filetime) (regerrno error) {\n\tr0, _, _ := syscall.SyscallN(procRegQueryInfoKeyW.Addr(), uintptr(key), uintptr(unsafe.Pointer(class)), uintptr(unsafe.Pointer(classLen)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(subkeysLen)), uintptr(unsafe.Pointer(maxSubkeyLen)), uintptr(unsafe.Pointer(maxClassLen)), uintptr(unsafe.Pointer(valuesLen)), uintptr(unsafe.Pointer(maxValueNameLen)), uintptr(unsafe.Pointer(maxValueLen)), uintptr(unsafe.Pointer(saLen)), uintptr(unsafe.Pointer(lastWriteTime)))\n\tif r0 != 0 {\n\t\tregerrno = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc RegQueryValueEx(key Handle, name *uint16, reserved *uint32, valtype *uint32, buf *byte, buflen *uint32) (regerrno error) {\n\tr0, _, _ := syscall.SyscallN(procRegQueryValueExW.Addr(), uintptr(key), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(valtype)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(buflen)))\n\tif r0 != 0 {\n\t\tregerrno = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc RegisterEventSource(uncServerName *uint16, sourceName *uint16) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procRegisterEventSourceW.Addr(), uintptr(unsafe.Pointer(uncServerName)), uintptr(unsafe.Pointer(sourceName)))\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc RegisterServiceCtrlHandlerEx(serviceName *uint16, handlerProc uintptr, context uintptr) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procRegisterServiceCtrlHandlerExW.Addr(), uintptr(unsafe.Pointer(serviceName)), uintptr(handlerProc), uintptr(context))\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ReportEvent(log Handle, etype uint16, category uint16, eventId uint32, usrSId uintptr, numStrings uint16, dataSize uint32, strings **uint16, rawData *byte) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procReportEventW.Addr(), uintptr(log), uintptr(etype), uintptr(category), uintptr(eventId), uintptr(usrSId), uintptr(numStrings), uintptr(dataSize), uintptr(unsafe.Pointer(strings)), uintptr(unsafe.Pointer(rawData)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc RevertToSelf() (err error) {\n\tr1, _, e1 := syscall.SyscallN(procRevertToSelf.Addr())\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setEntriesInAcl(countExplicitEntries uint32, explicitEntries *EXPLICIT_ACCESS, oldACL *ACL, newACL **ACL) (ret error) {\n\tr0, _, _ := syscall.SyscallN(procSetEntriesInAclW.Addr(), uintptr(countExplicitEntries), uintptr(unsafe.Pointer(explicitEntries)), uintptr(unsafe.Pointer(oldACL)), uintptr(unsafe.Pointer(newACL)))\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc SetKernelObjectSecurity(handle Handle, securityInformation SECURITY_INFORMATION, securityDescriptor *SECURITY_DESCRIPTOR) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetKernelObjectSecurity.Addr(), uintptr(handle), uintptr(securityInformation), uintptr(unsafe.Pointer(securityDescriptor)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetNamedSecurityInfo(objectName string, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) (ret error) {\n\tvar _p0 *uint16\n\t_p0, ret = syscall.UTF16PtrFromString(objectName)\n\tif ret != nil {\n\t\treturn\n\t}\n\treturn _SetNamedSecurityInfo(_p0, objectType, securityInformation, owner, group, dacl, sacl)\n}\n\nfunc _SetNamedSecurityInfo(objectName *uint16, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) (ret error) {\n\tr0, _, _ := syscall.SyscallN(procSetNamedSecurityInfoW.Addr(), uintptr(unsafe.Pointer(objectName)), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl)))\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc setSecurityDescriptorControl(sd *SECURITY_DESCRIPTOR, controlBitsOfInterest SECURITY_DESCRIPTOR_CONTROL, controlBitsToSet SECURITY_DESCRIPTOR_CONTROL) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetSecurityDescriptorControl.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(controlBitsOfInterest), uintptr(controlBitsToSet))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setSecurityDescriptorDacl(sd *SECURITY_DESCRIPTOR, daclPresent bool, dacl *ACL, daclDefaulted bool) (err error) {\n\tvar _p0 uint32\n\tif daclPresent {\n\t\t_p0 = 1\n\t}\n\tvar _p1 uint32\n\tif daclDefaulted {\n\t\t_p1 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procSetSecurityDescriptorDacl.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(_p0), uintptr(unsafe.Pointer(dacl)), uintptr(_p1))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setSecurityDescriptorGroup(sd *SECURITY_DESCRIPTOR, group *SID, groupDefaulted bool) (err error) {\n\tvar _p0 uint32\n\tif groupDefaulted {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procSetSecurityDescriptorGroup.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(group)), uintptr(_p0))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setSecurityDescriptorOwner(sd *SECURITY_DESCRIPTOR, owner *SID, ownerDefaulted bool) (err error) {\n\tvar _p0 uint32\n\tif ownerDefaulted {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procSetSecurityDescriptorOwner.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(owner)), uintptr(_p0))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setSecurityDescriptorRMControl(sd *SECURITY_DESCRIPTOR, rmControl *uint8) {\n\tsyscall.SyscallN(procSetSecurityDescriptorRMControl.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(rmControl)))\n\treturn\n}\n\nfunc setSecurityDescriptorSacl(sd *SECURITY_DESCRIPTOR, saclPresent bool, sacl *ACL, saclDefaulted bool) (err error) {\n\tvar _p0 uint32\n\tif saclPresent {\n\t\t_p0 = 1\n\t}\n\tvar _p1 uint32\n\tif saclDefaulted {\n\t\t_p1 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procSetSecurityDescriptorSacl.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(_p0), uintptr(unsafe.Pointer(sacl)), uintptr(_p1))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) (ret error) {\n\tr0, _, _ := syscall.SyscallN(procSetSecurityInfo.Addr(), uintptr(handle), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl)))\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc SetServiceStatus(service Handle, serviceStatus *SERVICE_STATUS) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetServiceStatus.Addr(), uintptr(service), uintptr(unsafe.Pointer(serviceStatus)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetThreadToken(thread *Handle, token Token) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetThreadToken.Addr(), uintptr(unsafe.Pointer(thread)), uintptr(token))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetTokenInformation(token Token, infoClass uint32, info *byte, infoLen uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetTokenInformation.Addr(), uintptr(token), uintptr(infoClass), uintptr(unsafe.Pointer(info)), uintptr(infoLen))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc StartServiceCtrlDispatcher(serviceTable *SERVICE_TABLE_ENTRY) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procStartServiceCtrlDispatcherW.Addr(), uintptr(unsafe.Pointer(serviceTable)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc StartService(service Handle, numArgs uint32, argVectors **uint16) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procStartServiceW.Addr(), uintptr(service), uintptr(numArgs), uintptr(unsafe.Pointer(argVectors)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CertAddCertificateContextToStore(store Handle, certContext *CertContext, addDisposition uint32, storeContext **CertContext) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCertAddCertificateContextToStore.Addr(), uintptr(store), uintptr(unsafe.Pointer(certContext)), uintptr(addDisposition), uintptr(unsafe.Pointer(storeContext)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CertCloseStore(store Handle, flags uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCertCloseStore.Addr(), uintptr(store), uintptr(flags))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CertCreateCertificateContext(certEncodingType uint32, certEncoded *byte, encodedLen uint32) (context *CertContext, err error) {\n\tr0, _, e1 := syscall.SyscallN(procCertCreateCertificateContext.Addr(), uintptr(certEncodingType), uintptr(unsafe.Pointer(certEncoded)), uintptr(encodedLen))\n\tcontext = (*CertContext)(unsafe.Pointer(r0))\n\tif context == nil {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CertDeleteCertificateFromStore(certContext *CertContext) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCertDeleteCertificateFromStore.Addr(), uintptr(unsafe.Pointer(certContext)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CertDuplicateCertificateContext(certContext *CertContext) (dupContext *CertContext) {\n\tr0, _, _ := syscall.SyscallN(procCertDuplicateCertificateContext.Addr(), uintptr(unsafe.Pointer(certContext)))\n\tdupContext = (*CertContext)(unsafe.Pointer(r0))\n\treturn\n}\n\nfunc CertEnumCertificatesInStore(store Handle, prevContext *CertContext) (context *CertContext, err error) {\n\tr0, _, e1 := syscall.SyscallN(procCertEnumCertificatesInStore.Addr(), uintptr(store), uintptr(unsafe.Pointer(prevContext)))\n\tcontext = (*CertContext)(unsafe.Pointer(r0))\n\tif context == nil {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CertFindCertificateInStore(store Handle, certEncodingType uint32, findFlags uint32, findType uint32, findPara unsafe.Pointer, prevCertContext *CertContext) (cert *CertContext, err error) {\n\tr0, _, e1 := syscall.SyscallN(procCertFindCertificateInStore.Addr(), uintptr(store), uintptr(certEncodingType), uintptr(findFlags), uintptr(findType), uintptr(findPara), uintptr(unsafe.Pointer(prevCertContext)))\n\tcert = (*CertContext)(unsafe.Pointer(r0))\n\tif cert == nil {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CertFindChainInStore(store Handle, certEncodingType uint32, findFlags uint32, findType uint32, findPara unsafe.Pointer, prevChainContext *CertChainContext) (certchain *CertChainContext, err error) {\n\tr0, _, e1 := syscall.SyscallN(procCertFindChainInStore.Addr(), uintptr(store), uintptr(certEncodingType), uintptr(findFlags), uintptr(findType), uintptr(findPara), uintptr(unsafe.Pointer(prevChainContext)))\n\tcertchain = (*CertChainContext)(unsafe.Pointer(r0))\n\tif certchain == nil {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CertFindExtension(objId *byte, countExtensions uint32, extensions *CertExtension) (ret *CertExtension) {\n\tr0, _, _ := syscall.SyscallN(procCertFindExtension.Addr(), uintptr(unsafe.Pointer(objId)), uintptr(countExtensions), uintptr(unsafe.Pointer(extensions)))\n\tret = (*CertExtension)(unsafe.Pointer(r0))\n\treturn\n}\n\nfunc CertFreeCertificateChain(ctx *CertChainContext) {\n\tsyscall.SyscallN(procCertFreeCertificateChain.Addr(), uintptr(unsafe.Pointer(ctx)))\n\treturn\n}\n\nfunc CertFreeCertificateContext(ctx *CertContext) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCertFreeCertificateContext.Addr(), uintptr(unsafe.Pointer(ctx)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CertGetCertificateChain(engine Handle, leaf *CertContext, time *Filetime, additionalStore Handle, para *CertChainPara, flags uint32, reserved uintptr, chainCtx **CertChainContext) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCertGetCertificateChain.Addr(), uintptr(engine), uintptr(unsafe.Pointer(leaf)), uintptr(unsafe.Pointer(time)), uintptr(additionalStore), uintptr(unsafe.Pointer(para)), uintptr(flags), uintptr(reserved), uintptr(unsafe.Pointer(chainCtx)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CertGetNameString(certContext *CertContext, nameType uint32, flags uint32, typePara unsafe.Pointer, name *uint16, size uint32) (chars uint32) {\n\tr0, _, _ := syscall.SyscallN(procCertGetNameStringW.Addr(), uintptr(unsafe.Pointer(certContext)), uintptr(nameType), uintptr(flags), uintptr(typePara), uintptr(unsafe.Pointer(name)), uintptr(size))\n\tchars = uint32(r0)\n\treturn\n}\n\nfunc CertOpenStore(storeProvider uintptr, msgAndCertEncodingType uint32, cryptProv uintptr, flags uint32, para uintptr) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procCertOpenStore.Addr(), uintptr(storeProvider), uintptr(msgAndCertEncodingType), uintptr(cryptProv), uintptr(flags), uintptr(para))\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CertOpenSystemStore(hprov Handle, name *uint16) (store Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procCertOpenSystemStoreW.Addr(), uintptr(hprov), uintptr(unsafe.Pointer(name)))\n\tstore = Handle(r0)\n\tif store == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CertVerifyCertificateChainPolicy(policyOID uintptr, chain *CertChainContext, para *CertChainPolicyPara, status *CertChainPolicyStatus) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCertVerifyCertificateChainPolicy.Addr(), uintptr(policyOID), uintptr(unsafe.Pointer(chain)), uintptr(unsafe.Pointer(para)), uintptr(unsafe.Pointer(status)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CryptAcquireCertificatePrivateKey(cert *CertContext, flags uint32, parameters unsafe.Pointer, cryptProvOrNCryptKey *Handle, keySpec *uint32, callerFreeProvOrNCryptKey *bool) (err error) {\n\tvar _p0 uint32\n\tif *callerFreeProvOrNCryptKey {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procCryptAcquireCertificatePrivateKey.Addr(), uintptr(unsafe.Pointer(cert)), uintptr(flags), uintptr(parameters), uintptr(unsafe.Pointer(cryptProvOrNCryptKey)), uintptr(unsafe.Pointer(keySpec)), uintptr(unsafe.Pointer(&_p0)))\n\t*callerFreeProvOrNCryptKey = _p0 != 0\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CryptDecodeObject(encodingType uint32, structType *byte, encodedBytes *byte, lenEncodedBytes uint32, flags uint32, decoded unsafe.Pointer, decodedLen *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCryptDecodeObject.Addr(), uintptr(encodingType), uintptr(unsafe.Pointer(structType)), uintptr(unsafe.Pointer(encodedBytes)), uintptr(lenEncodedBytes), uintptr(flags), uintptr(decoded), uintptr(unsafe.Pointer(decodedLen)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CryptProtectData(dataIn *DataBlob, name *uint16, optionalEntropy *DataBlob, reserved uintptr, promptStruct *CryptProtectPromptStruct, flags uint32, dataOut *DataBlob) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCryptProtectData.Addr(), uintptr(unsafe.Pointer(dataIn)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(optionalEntropy)), uintptr(reserved), uintptr(unsafe.Pointer(promptStruct)), uintptr(flags), uintptr(unsafe.Pointer(dataOut)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CryptQueryObject(objectType uint32, object unsafe.Pointer, expectedContentTypeFlags uint32, expectedFormatTypeFlags uint32, flags uint32, msgAndCertEncodingType *uint32, contentType *uint32, formatType *uint32, certStore *Handle, msg *Handle, context *unsafe.Pointer) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCryptQueryObject.Addr(), uintptr(objectType), uintptr(object), uintptr(expectedContentTypeFlags), uintptr(expectedFormatTypeFlags), uintptr(flags), uintptr(unsafe.Pointer(msgAndCertEncodingType)), uintptr(unsafe.Pointer(contentType)), uintptr(unsafe.Pointer(formatType)), uintptr(unsafe.Pointer(certStore)), uintptr(unsafe.Pointer(msg)), uintptr(unsafe.Pointer(context)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CryptUnprotectData(dataIn *DataBlob, name **uint16, optionalEntropy *DataBlob, reserved uintptr, promptStruct *CryptProtectPromptStruct, flags uint32, dataOut *DataBlob) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCryptUnprotectData.Addr(), uintptr(unsafe.Pointer(dataIn)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(optionalEntropy)), uintptr(reserved), uintptr(unsafe.Pointer(promptStruct)), uintptr(flags), uintptr(unsafe.Pointer(dataOut)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc PFXImportCertStore(pfx *CryptDataBlob, password *uint16, flags uint32) (store Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procPFXImportCertStore.Addr(), uintptr(unsafe.Pointer(pfx)), uintptr(unsafe.Pointer(password)), uintptr(flags))\n\tstore = Handle(r0)\n\tif store == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc DnsNameCompare(name1 *uint16, name2 *uint16) (same bool) {\n\tr0, _, _ := syscall.SyscallN(procDnsNameCompare_W.Addr(), uintptr(unsafe.Pointer(name1)), uintptr(unsafe.Pointer(name2)))\n\tsame = r0 != 0\n\treturn\n}\n\nfunc DnsQuery(name string, qtype uint16, options uint32, extra *byte, qrs **DNSRecord, pr *byte) (status error) {\n\tvar _p0 *uint16\n\t_p0, status = syscall.UTF16PtrFromString(name)\n\tif status != nil {\n\t\treturn\n\t}\n\treturn _DnsQuery(_p0, qtype, options, extra, qrs, pr)\n}\n\nfunc _DnsQuery(name *uint16, qtype uint16, options uint32, extra *byte, qrs **DNSRecord, pr *byte) (status error) {\n\tr0, _, _ := syscall.SyscallN(procDnsQuery_W.Addr(), uintptr(unsafe.Pointer(name)), uintptr(qtype), uintptr(options), uintptr(unsafe.Pointer(extra)), uintptr(unsafe.Pointer(qrs)), uintptr(unsafe.Pointer(pr)))\n\tif r0 != 0 {\n\t\tstatus = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc DnsRecordListFree(rl *DNSRecord, freetype uint32) {\n\tsyscall.SyscallN(procDnsRecordListFree.Addr(), uintptr(unsafe.Pointer(rl)), uintptr(freetype))\n\treturn\n}\n\nfunc DwmGetWindowAttribute(hwnd HWND, attribute uint32, value unsafe.Pointer, size uint32) (ret error) {\n\tr0, _, _ := syscall.SyscallN(procDwmGetWindowAttribute.Addr(), uintptr(hwnd), uintptr(attribute), uintptr(value), uintptr(size))\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc DwmSetWindowAttribute(hwnd HWND, attribute uint32, value unsafe.Pointer, size uint32) (ret error) {\n\tr0, _, _ := syscall.SyscallN(procDwmSetWindowAttribute.Addr(), uintptr(hwnd), uintptr(attribute), uintptr(value), uintptr(size))\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc CancelMibChangeNotify2(notificationHandle Handle) (errcode error) {\n\tr0, _, _ := syscall.SyscallN(procCancelMibChangeNotify2.Addr(), uintptr(notificationHandle))\n\tif r0 != 0 {\n\t\terrcode = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc FreeMibTable(memory unsafe.Pointer) {\n\tsyscall.SyscallN(procFreeMibTable.Addr(), uintptr(memory))\n\treturn\n}\n\nfunc GetAdaptersAddresses(family uint32, flags uint32, reserved uintptr, adapterAddresses *IpAdapterAddresses, sizePointer *uint32) (errcode error) {\n\tr0, _, _ := syscall.SyscallN(procGetAdaptersAddresses.Addr(), uintptr(family), uintptr(flags), uintptr(reserved), uintptr(unsafe.Pointer(adapterAddresses)), uintptr(unsafe.Pointer(sizePointer)))\n\tif r0 != 0 {\n\t\terrcode = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc GetAdaptersInfo(ai *IpAdapterInfo, ol *uint32) (errcode error) {\n\tr0, _, _ := syscall.SyscallN(procGetAdaptersInfo.Addr(), uintptr(unsafe.Pointer(ai)), uintptr(unsafe.Pointer(ol)))\n\tif r0 != 0 {\n\t\terrcode = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc getBestInterfaceEx(sockaddr unsafe.Pointer, pdwBestIfIndex *uint32) (errcode error) {\n\tr0, _, _ := syscall.SyscallN(procGetBestInterfaceEx.Addr(), uintptr(sockaddr), uintptr(unsafe.Pointer(pdwBestIfIndex)))\n\tif r0 != 0 {\n\t\terrcode = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc GetIfEntry(pIfRow *MibIfRow) (errcode error) {\n\tr0, _, _ := syscall.SyscallN(procGetIfEntry.Addr(), uintptr(unsafe.Pointer(pIfRow)))\n\tif r0 != 0 {\n\t\terrcode = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc GetIfEntry2Ex(level uint32, row *MibIfRow2) (errcode error) {\n\tr0, _, _ := syscall.SyscallN(procGetIfEntry2Ex.Addr(), uintptr(level), uintptr(unsafe.Pointer(row)))\n\tif r0 != 0 {\n\t\terrcode = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc GetIpForwardEntry2(row *MibIpForwardRow2) (errcode error) {\n\tr0, _, _ := syscall.SyscallN(procGetIpForwardEntry2.Addr(), uintptr(unsafe.Pointer(row)))\n\tif r0 != 0 {\n\t\terrcode = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc GetIpForwardTable2(family uint16, table **MibIpForwardTable2) (errcode error) {\n\tr0, _, _ := syscall.SyscallN(procGetIpForwardTable2.Addr(), uintptr(family), uintptr(unsafe.Pointer(table)))\n\tif r0 != 0 {\n\t\terrcode = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc GetUnicastIpAddressEntry(row *MibUnicastIpAddressRow) (errcode error) {\n\tr0, _, _ := syscall.SyscallN(procGetUnicastIpAddressEntry.Addr(), uintptr(unsafe.Pointer(row)))\n\tif r0 != 0 {\n\t\terrcode = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc NotifyIpInterfaceChange(family uint16, callback uintptr, callerContext unsafe.Pointer, initialNotification bool, notificationHandle *Handle) (errcode error) {\n\tvar _p0 uint32\n\tif initialNotification {\n\t\t_p0 = 1\n\t}\n\tr0, _, _ := syscall.SyscallN(procNotifyIpInterfaceChange.Addr(), uintptr(family), uintptr(callback), uintptr(callerContext), uintptr(_p0), uintptr(unsafe.Pointer(notificationHandle)))\n\tif r0 != 0 {\n\t\terrcode = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc NotifyRouteChange2(family uint16, callback uintptr, callerContext unsafe.Pointer, initialNotification bool, notificationHandle *Handle) (errcode error) {\n\tvar _p0 uint32\n\tif initialNotification {\n\t\t_p0 = 1\n\t}\n\tr0, _, _ := syscall.SyscallN(procNotifyRouteChange2.Addr(), uintptr(family), uintptr(callback), uintptr(callerContext), uintptr(_p0), uintptr(unsafe.Pointer(notificationHandle)))\n\tif r0 != 0 {\n\t\terrcode = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc NotifyUnicastIpAddressChange(family uint16, callback uintptr, callerContext unsafe.Pointer, initialNotification bool, notificationHandle *Handle) (errcode error) {\n\tvar _p0 uint32\n\tif initialNotification {\n\t\t_p0 = 1\n\t}\n\tr0, _, _ := syscall.SyscallN(procNotifyUnicastIpAddressChange.Addr(), uintptr(family), uintptr(callback), uintptr(callerContext), uintptr(_p0), uintptr(unsafe.Pointer(notificationHandle)))\n\tif r0 != 0 {\n\t\terrcode = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc AddDllDirectory(path *uint16) (cookie uintptr, err error) {\n\tr0, _, e1 := syscall.SyscallN(procAddDllDirectory.Addr(), uintptr(unsafe.Pointer(path)))\n\tcookie = uintptr(r0)\n\tif cookie == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc AssignProcessToJobObject(job Handle, process Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procAssignProcessToJobObject.Addr(), uintptr(job), uintptr(process))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CancelIo(s Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCancelIo.Addr(), uintptr(s))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CancelIoEx(s Handle, o *Overlapped) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCancelIoEx.Addr(), uintptr(s), uintptr(unsafe.Pointer(o)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ClearCommBreak(handle Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procClearCommBreak.Addr(), uintptr(handle))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ClearCommError(handle Handle, lpErrors *uint32, lpStat *ComStat) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procClearCommError.Addr(), uintptr(handle), uintptr(unsafe.Pointer(lpErrors)), uintptr(unsafe.Pointer(lpStat)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CloseHandle(handle Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCloseHandle.Addr(), uintptr(handle))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ClosePseudoConsole(console Handle) {\n\tsyscall.SyscallN(procClosePseudoConsole.Addr(), uintptr(console))\n\treturn\n}\n\nfunc ConnectNamedPipe(pipe Handle, overlapped *Overlapped) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procConnectNamedPipe.Addr(), uintptr(pipe), uintptr(unsafe.Pointer(overlapped)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateDirectory(path *uint16, sa *SecurityAttributes) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCreateDirectoryW.Addr(), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(sa)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateEventEx(eventAttrs *SecurityAttributes, name *uint16, flags uint32, desiredAccess uint32) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procCreateEventExW.Addr(), uintptr(unsafe.Pointer(eventAttrs)), uintptr(unsafe.Pointer(name)), uintptr(flags), uintptr(desiredAccess))\n\thandle = Handle(r0)\n\tif handle == 0 || e1 == ERROR_ALREADY_EXISTS {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateEvent(eventAttrs *SecurityAttributes, manualReset uint32, initialState uint32, name *uint16) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procCreateEventW.Addr(), uintptr(unsafe.Pointer(eventAttrs)), uintptr(manualReset), uintptr(initialState), uintptr(unsafe.Pointer(name)))\n\thandle = Handle(r0)\n\tif handle == 0 || e1 == ERROR_ALREADY_EXISTS {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateFileMapping(fhandle Handle, sa *SecurityAttributes, prot uint32, maxSizeHigh uint32, maxSizeLow uint32, name *uint16) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procCreateFileMappingW.Addr(), uintptr(fhandle), uintptr(unsafe.Pointer(sa)), uintptr(prot), uintptr(maxSizeHigh), uintptr(maxSizeLow), uintptr(unsafe.Pointer(name)))\n\thandle = Handle(r0)\n\tif handle == 0 || e1 == ERROR_ALREADY_EXISTS {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateFile(name *uint16, access uint32, mode uint32, sa *SecurityAttributes, createmode uint32, attrs uint32, templatefile Handle) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procCreateFileW.Addr(), uintptr(unsafe.Pointer(name)), uintptr(access), uintptr(mode), uintptr(unsafe.Pointer(sa)), uintptr(createmode), uintptr(attrs), uintptr(templatefile))\n\thandle = Handle(r0)\n\tif handle == InvalidHandle {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateHardLink(filename *uint16, existingfilename *uint16, reserved uintptr) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCreateHardLinkW.Addr(), uintptr(unsafe.Pointer(filename)), uintptr(unsafe.Pointer(existingfilename)), uintptr(reserved))\n\tif r1&0xff == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateIoCompletionPort(filehandle Handle, cphandle Handle, key uintptr, threadcnt uint32) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procCreateIoCompletionPort.Addr(), uintptr(filehandle), uintptr(cphandle), uintptr(key), uintptr(threadcnt))\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateJobObject(jobAttr *SecurityAttributes, name *uint16) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procCreateJobObjectW.Addr(), uintptr(unsafe.Pointer(jobAttr)), uintptr(unsafe.Pointer(name)))\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateMutexEx(mutexAttrs *SecurityAttributes, name *uint16, flags uint32, desiredAccess uint32) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procCreateMutexExW.Addr(), uintptr(unsafe.Pointer(mutexAttrs)), uintptr(unsafe.Pointer(name)), uintptr(flags), uintptr(desiredAccess))\n\thandle = Handle(r0)\n\tif handle == 0 || e1 == ERROR_ALREADY_EXISTS {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateMutex(mutexAttrs *SecurityAttributes, initialOwner bool, name *uint16) (handle Handle, err error) {\n\tvar _p0 uint32\n\tif initialOwner {\n\t\t_p0 = 1\n\t}\n\tr0, _, e1 := syscall.SyscallN(procCreateMutexW.Addr(), uintptr(unsafe.Pointer(mutexAttrs)), uintptr(_p0), uintptr(unsafe.Pointer(name)))\n\thandle = Handle(r0)\n\tif handle == 0 || e1 == ERROR_ALREADY_EXISTS {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateNamedPipe(name *uint16, flags uint32, pipeMode uint32, maxInstances uint32, outSize uint32, inSize uint32, defaultTimeout uint32, sa *SecurityAttributes) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procCreateNamedPipeW.Addr(), uintptr(unsafe.Pointer(name)), uintptr(flags), uintptr(pipeMode), uintptr(maxInstances), uintptr(outSize), uintptr(inSize), uintptr(defaultTimeout), uintptr(unsafe.Pointer(sa)))\n\thandle = Handle(r0)\n\tif handle == InvalidHandle {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreatePipe(readhandle *Handle, writehandle *Handle, sa *SecurityAttributes, size uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCreatePipe.Addr(), uintptr(unsafe.Pointer(readhandle)), uintptr(unsafe.Pointer(writehandle)), uintptr(unsafe.Pointer(sa)), uintptr(size))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateProcess(appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) {\n\tvar _p0 uint32\n\tif inheritHandles {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procCreateProcessW.Addr(), uintptr(unsafe.Pointer(appName)), uintptr(unsafe.Pointer(commandLine)), uintptr(unsafe.Pointer(procSecurity)), uintptr(unsafe.Pointer(threadSecurity)), uintptr(_p0), uintptr(creationFlags), uintptr(unsafe.Pointer(env)), uintptr(unsafe.Pointer(currentDir)), uintptr(unsafe.Pointer(startupInfo)), uintptr(unsafe.Pointer(outProcInfo)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc createPseudoConsole(size uint32, in Handle, out Handle, flags uint32, pconsole *Handle) (hr error) {\n\tr0, _, _ := syscall.SyscallN(procCreatePseudoConsole.Addr(), uintptr(size), uintptr(in), uintptr(out), uintptr(flags), uintptr(unsafe.Pointer(pconsole)))\n\tif r0 != 0 {\n\t\thr = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc CreateSymbolicLink(symlinkfilename *uint16, targetfilename *uint16, flags uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procCreateSymbolicLinkW.Addr(), uintptr(unsafe.Pointer(symlinkfilename)), uintptr(unsafe.Pointer(targetfilename)), uintptr(flags))\n\tif r1&0xff == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateToolhelp32Snapshot(flags uint32, processId uint32) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procCreateToolhelp32Snapshot.Addr(), uintptr(flags), uintptr(processId))\n\thandle = Handle(r0)\n\tif handle == InvalidHandle {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc DefineDosDevice(flags uint32, deviceName *uint16, targetPath *uint16) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procDefineDosDeviceW.Addr(), uintptr(flags), uintptr(unsafe.Pointer(deviceName)), uintptr(unsafe.Pointer(targetPath)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc DeleteFile(path *uint16) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procDeleteFileW.Addr(), uintptr(unsafe.Pointer(path)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc deleteProcThreadAttributeList(attrlist *ProcThreadAttributeList) {\n\tsyscall.SyscallN(procDeleteProcThreadAttributeList.Addr(), uintptr(unsafe.Pointer(attrlist)))\n\treturn\n}\n\nfunc DeleteVolumeMountPoint(volumeMountPoint *uint16) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procDeleteVolumeMountPointW.Addr(), uintptr(unsafe.Pointer(volumeMountPoint)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc DeviceIoControl(handle Handle, ioControlCode uint32, inBuffer *byte, inBufferSize uint32, outBuffer *byte, outBufferSize uint32, bytesReturned *uint32, overlapped *Overlapped) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procDeviceIoControl.Addr(), uintptr(handle), uintptr(ioControlCode), uintptr(unsafe.Pointer(inBuffer)), uintptr(inBufferSize), uintptr(unsafe.Pointer(outBuffer)), uintptr(outBufferSize), uintptr(unsafe.Pointer(bytesReturned)), uintptr(unsafe.Pointer(overlapped)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc DisconnectNamedPipe(pipe Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procDisconnectNamedPipe.Addr(), uintptr(pipe))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc DuplicateHandle(hSourceProcessHandle Handle, hSourceHandle Handle, hTargetProcessHandle Handle, lpTargetHandle *Handle, dwDesiredAccess uint32, bInheritHandle bool, dwOptions uint32) (err error) {\n\tvar _p0 uint32\n\tif bInheritHandle {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procDuplicateHandle.Addr(), uintptr(hSourceProcessHandle), uintptr(hSourceHandle), uintptr(hTargetProcessHandle), uintptr(unsafe.Pointer(lpTargetHandle)), uintptr(dwDesiredAccess), uintptr(_p0), uintptr(dwOptions))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc EscapeCommFunction(handle Handle, dwFunc uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procEscapeCommFunction.Addr(), uintptr(handle), uintptr(dwFunc))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ExitProcess(exitcode uint32) {\n\tsyscall.SyscallN(procExitProcess.Addr(), uintptr(exitcode))\n\treturn\n}\n\nfunc ExpandEnvironmentStrings(src *uint16, dst *uint16, size uint32) (n uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procExpandEnvironmentStringsW.Addr(), uintptr(unsafe.Pointer(src)), uintptr(unsafe.Pointer(dst)), uintptr(size))\n\tn = uint32(r0)\n\tif n == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc FindClose(handle Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procFindClose.Addr(), uintptr(handle))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc FindCloseChangeNotification(handle Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procFindCloseChangeNotification.Addr(), uintptr(handle))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc FindFirstChangeNotification(path string, watchSubtree bool, notifyFilter uint32) (handle Handle, err error) {\n\tvar _p0 *uint16\n\t_p0, err = syscall.UTF16PtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\treturn _FindFirstChangeNotification(_p0, watchSubtree, notifyFilter)\n}\n\nfunc _FindFirstChangeNotification(path *uint16, watchSubtree bool, notifyFilter uint32) (handle Handle, err error) {\n\tvar _p1 uint32\n\tif watchSubtree {\n\t\t_p1 = 1\n\t}\n\tr0, _, e1 := syscall.SyscallN(procFindFirstChangeNotificationW.Addr(), uintptr(unsafe.Pointer(path)), uintptr(_p1), uintptr(notifyFilter))\n\thandle = Handle(r0)\n\tif handle == InvalidHandle {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc findFirstFile1(name *uint16, data *win32finddata1) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procFindFirstFileW.Addr(), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(data)))\n\thandle = Handle(r0)\n\tif handle == InvalidHandle {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc FindFirstVolumeMountPoint(rootPathName *uint16, volumeMountPoint *uint16, bufferLength uint32) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procFindFirstVolumeMountPointW.Addr(), uintptr(unsafe.Pointer(rootPathName)), uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(bufferLength))\n\thandle = Handle(r0)\n\tif handle == InvalidHandle {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc FindFirstVolume(volumeName *uint16, bufferLength uint32) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procFindFirstVolumeW.Addr(), uintptr(unsafe.Pointer(volumeName)), uintptr(bufferLength))\n\thandle = Handle(r0)\n\tif handle == InvalidHandle {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc FindNextChangeNotification(handle Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procFindNextChangeNotification.Addr(), uintptr(handle))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc findNextFile1(handle Handle, data *win32finddata1) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procFindNextFileW.Addr(), uintptr(handle), uintptr(unsafe.Pointer(data)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc FindNextVolumeMountPoint(findVolumeMountPoint Handle, volumeMountPoint *uint16, bufferLength uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procFindNextVolumeMountPointW.Addr(), uintptr(findVolumeMountPoint), uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(bufferLength))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc FindNextVolume(findVolume Handle, volumeName *uint16, bufferLength uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procFindNextVolumeW.Addr(), uintptr(findVolume), uintptr(unsafe.Pointer(volumeName)), uintptr(bufferLength))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc findResource(module Handle, name uintptr, resType uintptr) (resInfo Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procFindResourceW.Addr(), uintptr(module), uintptr(name), uintptr(resType))\n\tresInfo = Handle(r0)\n\tif resInfo == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc FindVolumeClose(findVolume Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procFindVolumeClose.Addr(), uintptr(findVolume))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc FindVolumeMountPointClose(findVolumeMountPoint Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procFindVolumeMountPointClose.Addr(), uintptr(findVolumeMountPoint))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc FlushConsoleInputBuffer(console Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procFlushConsoleInputBuffer.Addr(), uintptr(console))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc FlushFileBuffers(handle Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procFlushFileBuffers.Addr(), uintptr(handle))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc FlushViewOfFile(addr uintptr, length uintptr) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procFlushViewOfFile.Addr(), uintptr(addr), uintptr(length))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc FormatMessage(flags uint32, msgsrc uintptr, msgid uint32, langid uint32, buf []uint16, args *byte) (n uint32, err error) {\n\tvar _p0 *uint16\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tr0, _, e1 := syscall.SyscallN(procFormatMessageW.Addr(), uintptr(flags), uintptr(msgsrc), uintptr(msgid), uintptr(langid), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(args)))\n\tn = uint32(r0)\n\tif n == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc FreeEnvironmentStrings(envs *uint16) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procFreeEnvironmentStringsW.Addr(), uintptr(unsafe.Pointer(envs)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc FreeLibrary(handle Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procFreeLibrary.Addr(), uintptr(handle))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GenerateConsoleCtrlEvent(ctrlEvent uint32, processGroupID uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGenerateConsoleCtrlEvent.Addr(), uintptr(ctrlEvent), uintptr(processGroupID))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetACP() (acp uint32) {\n\tr0, _, _ := syscall.SyscallN(procGetACP.Addr())\n\tacp = uint32(r0)\n\treturn\n}\n\nfunc GetActiveProcessorCount(groupNumber uint16) (ret uint32) {\n\tr0, _, _ := syscall.SyscallN(procGetActiveProcessorCount.Addr(), uintptr(groupNumber))\n\tret = uint32(r0)\n\treturn\n}\n\nfunc GetCommModemStatus(handle Handle, lpModemStat *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetCommModemStatus.Addr(), uintptr(handle), uintptr(unsafe.Pointer(lpModemStat)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetCommState(handle Handle, lpDCB *DCB) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetCommState.Addr(), uintptr(handle), uintptr(unsafe.Pointer(lpDCB)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetCommTimeouts(handle Handle, timeouts *CommTimeouts) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetCommTimeouts.Addr(), uintptr(handle), uintptr(unsafe.Pointer(timeouts)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetCommandLine() (cmd *uint16) {\n\tr0, _, _ := syscall.SyscallN(procGetCommandLineW.Addr())\n\tcmd = (*uint16)(unsafe.Pointer(r0))\n\treturn\n}\n\nfunc GetComputerNameEx(nametype uint32, buf *uint16, n *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetComputerNameExW.Addr(), uintptr(nametype), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(n)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetComputerName(buf *uint16, n *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetComputerNameW.Addr(), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(n)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetConsoleCP() (cp uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetConsoleCP.Addr())\n\tcp = uint32(r0)\n\tif cp == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetConsoleMode(console Handle, mode *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetConsoleMode.Addr(), uintptr(console), uintptr(unsafe.Pointer(mode)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetConsoleOutputCP() (cp uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetConsoleOutputCP.Addr())\n\tcp = uint32(r0)\n\tif cp == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetConsoleScreenBufferInfo(console Handle, info *ConsoleScreenBufferInfo) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetConsoleScreenBufferInfo.Addr(), uintptr(console), uintptr(unsafe.Pointer(info)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetCurrentDirectory(buflen uint32, buf *uint16) (n uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetCurrentDirectoryW.Addr(), uintptr(buflen), uintptr(unsafe.Pointer(buf)))\n\tn = uint32(r0)\n\tif n == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetCurrentProcessId() (pid uint32) {\n\tr0, _, _ := syscall.SyscallN(procGetCurrentProcessId.Addr())\n\tpid = uint32(r0)\n\treturn\n}\n\nfunc GetCurrentThreadId() (id uint32) {\n\tr0, _, _ := syscall.SyscallN(procGetCurrentThreadId.Addr())\n\tid = uint32(r0)\n\treturn\n}\n\nfunc GetDiskFreeSpaceEx(directoryName *uint16, freeBytesAvailableToCaller *uint64, totalNumberOfBytes *uint64, totalNumberOfFreeBytes *uint64) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetDiskFreeSpaceExW.Addr(), uintptr(unsafe.Pointer(directoryName)), uintptr(unsafe.Pointer(freeBytesAvailableToCaller)), uintptr(unsafe.Pointer(totalNumberOfBytes)), uintptr(unsafe.Pointer(totalNumberOfFreeBytes)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetDriveType(rootPathName *uint16) (driveType uint32) {\n\tr0, _, _ := syscall.SyscallN(procGetDriveTypeW.Addr(), uintptr(unsafe.Pointer(rootPathName)))\n\tdriveType = uint32(r0)\n\treturn\n}\n\nfunc GetEnvironmentStrings() (envs *uint16, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetEnvironmentStringsW.Addr())\n\tenvs = (*uint16)(unsafe.Pointer(r0))\n\tif envs == nil {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetEnvironmentVariable(name *uint16, buffer *uint16, size uint32) (n uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetEnvironmentVariableW.Addr(), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(buffer)), uintptr(size))\n\tn = uint32(r0)\n\tif n == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetExitCodeProcess(handle Handle, exitcode *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetExitCodeProcess.Addr(), uintptr(handle), uintptr(unsafe.Pointer(exitcode)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetFileAttributesEx(name *uint16, level uint32, info *byte) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetFileAttributesExW.Addr(), uintptr(unsafe.Pointer(name)), uintptr(level), uintptr(unsafe.Pointer(info)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetFileAttributes(name *uint16) (attrs uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetFileAttributesW.Addr(), uintptr(unsafe.Pointer(name)))\n\tattrs = uint32(r0)\n\tif attrs == INVALID_FILE_ATTRIBUTES {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetFileInformationByHandle(handle Handle, data *ByHandleFileInformation) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetFileInformationByHandle.Addr(), uintptr(handle), uintptr(unsafe.Pointer(data)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetFileInformationByHandleEx(handle Handle, class uint32, outBuffer *byte, outBufferLen uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetFileInformationByHandleEx.Addr(), uintptr(handle), uintptr(class), uintptr(unsafe.Pointer(outBuffer)), uintptr(outBufferLen))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetFileTime(handle Handle, ctime *Filetime, atime *Filetime, wtime *Filetime) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetFileTime.Addr(), uintptr(handle), uintptr(unsafe.Pointer(ctime)), uintptr(unsafe.Pointer(atime)), uintptr(unsafe.Pointer(wtime)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetFileType(filehandle Handle) (n uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetFileType.Addr(), uintptr(filehandle))\n\tn = uint32(r0)\n\tif n == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetFinalPathNameByHandle(file Handle, filePath *uint16, filePathSize uint32, flags uint32) (n uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetFinalPathNameByHandleW.Addr(), uintptr(file), uintptr(unsafe.Pointer(filePath)), uintptr(filePathSize), uintptr(flags))\n\tn = uint32(r0)\n\tif n == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetFullPathName(path *uint16, buflen uint32, buf *uint16, fname **uint16) (n uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetFullPathNameW.Addr(), uintptr(unsafe.Pointer(path)), uintptr(buflen), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(fname)))\n\tn = uint32(r0)\n\tif n == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetLargePageMinimum() (size uintptr) {\n\tr0, _, _ := syscall.SyscallN(procGetLargePageMinimum.Addr())\n\tsize = uintptr(r0)\n\treturn\n}\n\nfunc GetLastError() (lasterr error) {\n\tr0, _, _ := syscall.SyscallN(procGetLastError.Addr())\n\tif r0 != 0 {\n\t\tlasterr = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc GetLogicalDriveStrings(bufferLength uint32, buffer *uint16) (n uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetLogicalDriveStringsW.Addr(), uintptr(bufferLength), uintptr(unsafe.Pointer(buffer)))\n\tn = uint32(r0)\n\tif n == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetLogicalDrives() (drivesBitMask uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetLogicalDrives.Addr())\n\tdrivesBitMask = uint32(r0)\n\tif drivesBitMask == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetLongPathName(path *uint16, buf *uint16, buflen uint32) (n uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetLongPathNameW.Addr(), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(buf)), uintptr(buflen))\n\tn = uint32(r0)\n\tif n == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetMaximumProcessorCount(groupNumber uint16) (ret uint32) {\n\tr0, _, _ := syscall.SyscallN(procGetMaximumProcessorCount.Addr(), uintptr(groupNumber))\n\tret = uint32(r0)\n\treturn\n}\n\nfunc GetModuleFileName(module Handle, filename *uint16, size uint32) (n uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetModuleFileNameW.Addr(), uintptr(module), uintptr(unsafe.Pointer(filename)), uintptr(size))\n\tn = uint32(r0)\n\tif n == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetModuleHandleEx(flags uint32, moduleName *uint16, module *Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetModuleHandleExW.Addr(), uintptr(flags), uintptr(unsafe.Pointer(moduleName)), uintptr(unsafe.Pointer(module)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetNamedPipeClientProcessId(pipe Handle, clientProcessID *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetNamedPipeClientProcessId.Addr(), uintptr(pipe), uintptr(unsafe.Pointer(clientProcessID)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetNamedPipeHandleState(pipe Handle, state *uint32, curInstances *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32, userName *uint16, maxUserNameSize uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetNamedPipeHandleStateW.Addr(), uintptr(pipe), uintptr(unsafe.Pointer(state)), uintptr(unsafe.Pointer(curInstances)), uintptr(unsafe.Pointer(maxCollectionCount)), uintptr(unsafe.Pointer(collectDataTimeout)), uintptr(unsafe.Pointer(userName)), uintptr(maxUserNameSize))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetNamedPipeInfo(pipe Handle, flags *uint32, outSize *uint32, inSize *uint32, maxInstances *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetNamedPipeInfo.Addr(), uintptr(pipe), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(outSize)), uintptr(unsafe.Pointer(inSize)), uintptr(unsafe.Pointer(maxInstances)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetNamedPipeServerProcessId(pipe Handle, serverProcessID *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetNamedPipeServerProcessId.Addr(), uintptr(pipe), uintptr(unsafe.Pointer(serverProcessID)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetNumberOfConsoleInputEvents(console Handle, numevents *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetNumberOfConsoleInputEvents.Addr(), uintptr(console), uintptr(unsafe.Pointer(numevents)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetOverlappedResult(handle Handle, overlapped *Overlapped, done *uint32, wait bool) (err error) {\n\tvar _p0 uint32\n\tif wait {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procGetOverlappedResult.Addr(), uintptr(handle), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(done)), uintptr(_p0))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetPriorityClass(process Handle) (ret uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetPriorityClass.Addr(), uintptr(process))\n\tret = uint32(r0)\n\tif ret == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetProcAddress(module Handle, procname string) (proc uintptr, err error) {\n\tvar _p0 *byte\n\t_p0, err = syscall.BytePtrFromString(procname)\n\tif err != nil {\n\t\treturn\n\t}\n\treturn _GetProcAddress(module, _p0)\n}\n\nfunc _GetProcAddress(module Handle, procname *byte) (proc uintptr, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetProcAddress.Addr(), uintptr(module), uintptr(unsafe.Pointer(procname)))\n\tproc = uintptr(r0)\n\tif proc == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetProcessId(process Handle) (id uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetProcessId.Addr(), uintptr(process))\n\tid = uint32(r0)\n\tif id == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc getProcessPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetProcessPreferredUILanguages.Addr(), uintptr(flags), uintptr(unsafe.Pointer(numLanguages)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(bufSize)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetProcessShutdownParameters(level *uint32, flags *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetProcessShutdownParameters.Addr(), uintptr(unsafe.Pointer(level)), uintptr(unsafe.Pointer(flags)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetProcessTimes(handle Handle, creationTime *Filetime, exitTime *Filetime, kernelTime *Filetime, userTime *Filetime) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetProcessTimes.Addr(), uintptr(handle), uintptr(unsafe.Pointer(creationTime)), uintptr(unsafe.Pointer(exitTime)), uintptr(unsafe.Pointer(kernelTime)), uintptr(unsafe.Pointer(userTime)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetProcessWorkingSetSizeEx(hProcess Handle, lpMinimumWorkingSetSize *uintptr, lpMaximumWorkingSetSize *uintptr, flags *uint32) {\n\tsyscall.SyscallN(procGetProcessWorkingSetSizeEx.Addr(), uintptr(hProcess), uintptr(unsafe.Pointer(lpMinimumWorkingSetSize)), uintptr(unsafe.Pointer(lpMaximumWorkingSetSize)), uintptr(unsafe.Pointer(flags)))\n\treturn\n}\n\nfunc GetQueuedCompletionStatus(cphandle Handle, qty *uint32, key *uintptr, overlapped **Overlapped, timeout uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetQueuedCompletionStatus.Addr(), uintptr(cphandle), uintptr(unsafe.Pointer(qty)), uintptr(unsafe.Pointer(key)), uintptr(unsafe.Pointer(overlapped)), uintptr(timeout))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetShortPathName(longpath *uint16, shortpath *uint16, buflen uint32) (n uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetShortPathNameW.Addr(), uintptr(unsafe.Pointer(longpath)), uintptr(unsafe.Pointer(shortpath)), uintptr(buflen))\n\tn = uint32(r0)\n\tif n == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc getStartupInfo(startupInfo *StartupInfo) {\n\tsyscall.SyscallN(procGetStartupInfoW.Addr(), uintptr(unsafe.Pointer(startupInfo)))\n\treturn\n}\n\nfunc GetStdHandle(stdhandle uint32) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetStdHandle.Addr(), uintptr(stdhandle))\n\thandle = Handle(r0)\n\tif handle == InvalidHandle {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc getSystemDirectory(dir *uint16, dirLen uint32) (len uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetSystemDirectoryW.Addr(), uintptr(unsafe.Pointer(dir)), uintptr(dirLen))\n\tlen = uint32(r0)\n\tif len == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc getSystemPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetSystemPreferredUILanguages.Addr(), uintptr(flags), uintptr(unsafe.Pointer(numLanguages)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(bufSize)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetSystemTimeAsFileTime(time *Filetime) {\n\tsyscall.SyscallN(procGetSystemTimeAsFileTime.Addr(), uintptr(unsafe.Pointer(time)))\n\treturn\n}\n\nfunc GetSystemTimePreciseAsFileTime(time *Filetime) {\n\tsyscall.SyscallN(procGetSystemTimePreciseAsFileTime.Addr(), uintptr(unsafe.Pointer(time)))\n\treturn\n}\n\nfunc getSystemWindowsDirectory(dir *uint16, dirLen uint32) (len uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetSystemWindowsDirectoryW.Addr(), uintptr(unsafe.Pointer(dir)), uintptr(dirLen))\n\tlen = uint32(r0)\n\tif len == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetTempPath(buflen uint32, buf *uint16) (n uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetTempPathW.Addr(), uintptr(buflen), uintptr(unsafe.Pointer(buf)))\n\tn = uint32(r0)\n\tif n == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc getThreadPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetThreadPreferredUILanguages.Addr(), uintptr(flags), uintptr(unsafe.Pointer(numLanguages)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(bufSize)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc getTickCount64() (ms uint64) {\n\tr0, _, _ := syscall.SyscallN(procGetTickCount64.Addr())\n\tms = uint64(r0)\n\treturn\n}\n\nfunc GetTimeZoneInformation(tzi *Timezoneinformation) (rc uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetTimeZoneInformation.Addr(), uintptr(unsafe.Pointer(tzi)))\n\trc = uint32(r0)\n\tif rc == 0xffffffff {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc getUserPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetUserPreferredUILanguages.Addr(), uintptr(flags), uintptr(unsafe.Pointer(numLanguages)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(bufSize)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetVersion() (ver uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetVersion.Addr())\n\tver = uint32(r0)\n\tif ver == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetVolumeInformationByHandle(file Handle, volumeNameBuffer *uint16, volumeNameSize uint32, volumeNameSerialNumber *uint32, maximumComponentLength *uint32, fileSystemFlags *uint32, fileSystemNameBuffer *uint16, fileSystemNameSize uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetVolumeInformationByHandleW.Addr(), uintptr(file), uintptr(unsafe.Pointer(volumeNameBuffer)), uintptr(volumeNameSize), uintptr(unsafe.Pointer(volumeNameSerialNumber)), uintptr(unsafe.Pointer(maximumComponentLength)), uintptr(unsafe.Pointer(fileSystemFlags)), uintptr(unsafe.Pointer(fileSystemNameBuffer)), uintptr(fileSystemNameSize))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetVolumeInformation(rootPathName *uint16, volumeNameBuffer *uint16, volumeNameSize uint32, volumeNameSerialNumber *uint32, maximumComponentLength *uint32, fileSystemFlags *uint32, fileSystemNameBuffer *uint16, fileSystemNameSize uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetVolumeInformationW.Addr(), uintptr(unsafe.Pointer(rootPathName)), uintptr(unsafe.Pointer(volumeNameBuffer)), uintptr(volumeNameSize), uintptr(unsafe.Pointer(volumeNameSerialNumber)), uintptr(unsafe.Pointer(maximumComponentLength)), uintptr(unsafe.Pointer(fileSystemFlags)), uintptr(unsafe.Pointer(fileSystemNameBuffer)), uintptr(fileSystemNameSize))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetVolumeNameForVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16, bufferlength uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetVolumeNameForVolumeMountPointW.Addr(), uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(unsafe.Pointer(volumeName)), uintptr(bufferlength))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetVolumePathName(fileName *uint16, volumePathName *uint16, bufferLength uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetVolumePathNameW.Addr(), uintptr(unsafe.Pointer(fileName)), uintptr(unsafe.Pointer(volumePathName)), uintptr(bufferLength))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetVolumePathNamesForVolumeName(volumeName *uint16, volumePathNames *uint16, bufferLength uint32, returnLength *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetVolumePathNamesForVolumeNameW.Addr(), uintptr(unsafe.Pointer(volumeName)), uintptr(unsafe.Pointer(volumePathNames)), uintptr(bufferLength), uintptr(unsafe.Pointer(returnLength)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc getWindowsDirectory(dir *uint16, dirLen uint32) (len uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetWindowsDirectoryW.Addr(), uintptr(unsafe.Pointer(dir)), uintptr(dirLen))\n\tlen = uint32(r0)\n\tif len == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc initializeProcThreadAttributeList(attrlist *ProcThreadAttributeList, attrcount uint32, flags uint32, size *uintptr) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procInitializeProcThreadAttributeList.Addr(), uintptr(unsafe.Pointer(attrlist)), uintptr(attrcount), uintptr(flags), uintptr(unsafe.Pointer(size)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc IsProcessorFeaturePresent(ProcessorFeature uint32) (ret bool) {\n\tr0, _, _ := syscall.SyscallN(procIsProcessorFeaturePresent.Addr(), uintptr(ProcessorFeature))\n\tret = r0 != 0\n\treturn\n}\n\nfunc IsWow64Process(handle Handle, isWow64 *bool) (err error) {\n\tvar _p0 uint32\n\tif *isWow64 {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procIsWow64Process.Addr(), uintptr(handle), uintptr(unsafe.Pointer(&_p0)))\n\t*isWow64 = _p0 != 0\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc IsWow64Process2(handle Handle, processMachine *uint16, nativeMachine *uint16) (err error) {\n\terr = procIsWow64Process2.Find()\n\tif err != nil {\n\t\treturn\n\t}\n\tr1, _, e1 := syscall.SyscallN(procIsWow64Process2.Addr(), uintptr(handle), uintptr(unsafe.Pointer(processMachine)), uintptr(unsafe.Pointer(nativeMachine)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc LoadLibraryEx(libname string, zero Handle, flags uintptr) (handle Handle, err error) {\n\tvar _p0 *uint16\n\t_p0, err = syscall.UTF16PtrFromString(libname)\n\tif err != nil {\n\t\treturn\n\t}\n\treturn _LoadLibraryEx(_p0, zero, flags)\n}\n\nfunc _LoadLibraryEx(libname *uint16, zero Handle, flags uintptr) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procLoadLibraryExW.Addr(), uintptr(unsafe.Pointer(libname)), uintptr(zero), uintptr(flags))\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc LoadLibrary(libname string) (handle Handle, err error) {\n\tvar _p0 *uint16\n\t_p0, err = syscall.UTF16PtrFromString(libname)\n\tif err != nil {\n\t\treturn\n\t}\n\treturn _LoadLibrary(_p0)\n}\n\nfunc _LoadLibrary(libname *uint16) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procLoadLibraryW.Addr(), uintptr(unsafe.Pointer(libname)))\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc LoadResource(module Handle, resInfo Handle) (resData Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procLoadResource.Addr(), uintptr(module), uintptr(resInfo))\n\tresData = Handle(r0)\n\tif resData == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc LocalAlloc(flags uint32, length uint32) (ptr uintptr, err error) {\n\tr0, _, e1 := syscall.SyscallN(procLocalAlloc.Addr(), uintptr(flags), uintptr(length))\n\tptr = uintptr(r0)\n\tif ptr == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc LocalFree(hmem Handle) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procLocalFree.Addr(), uintptr(hmem))\n\thandle = Handle(r0)\n\tif handle != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc LockFileEx(file Handle, flags uint32, reserved uint32, bytesLow uint32, bytesHigh uint32, overlapped *Overlapped) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procLockFileEx.Addr(), uintptr(file), uintptr(flags), uintptr(reserved), uintptr(bytesLow), uintptr(bytesHigh), uintptr(unsafe.Pointer(overlapped)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc LockResource(resData Handle) (addr uintptr, err error) {\n\tr0, _, e1 := syscall.SyscallN(procLockResource.Addr(), uintptr(resData))\n\taddr = uintptr(r0)\n\tif addr == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc MapViewOfFile(handle Handle, access uint32, offsetHigh uint32, offsetLow uint32, length uintptr) (addr uintptr, err error) {\n\tr0, _, e1 := syscall.SyscallN(procMapViewOfFile.Addr(), uintptr(handle), uintptr(access), uintptr(offsetHigh), uintptr(offsetLow), uintptr(length))\n\taddr = uintptr(r0)\n\tif addr == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc Module32First(snapshot Handle, moduleEntry *ModuleEntry32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procModule32FirstW.Addr(), uintptr(snapshot), uintptr(unsafe.Pointer(moduleEntry)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc Module32Next(snapshot Handle, moduleEntry *ModuleEntry32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procModule32NextW.Addr(), uintptr(snapshot), uintptr(unsafe.Pointer(moduleEntry)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc MoveFileEx(from *uint16, to *uint16, flags uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procMoveFileExW.Addr(), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(to)), uintptr(flags))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc MoveFile(from *uint16, to *uint16) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procMoveFileW.Addr(), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(to)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc MultiByteToWideChar(codePage uint32, dwFlags uint32, str *byte, nstr int32, wchar *uint16, nwchar int32) (nwrite int32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procMultiByteToWideChar.Addr(), uintptr(codePage), uintptr(dwFlags), uintptr(unsafe.Pointer(str)), uintptr(nstr), uintptr(unsafe.Pointer(wchar)), uintptr(nwchar))\n\tnwrite = int32(r0)\n\tif nwrite == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc OpenEvent(desiredAccess uint32, inheritHandle bool, name *uint16) (handle Handle, err error) {\n\tvar _p0 uint32\n\tif inheritHandle {\n\t\t_p0 = 1\n\t}\n\tr0, _, e1 := syscall.SyscallN(procOpenEventW.Addr(), uintptr(desiredAccess), uintptr(_p0), uintptr(unsafe.Pointer(name)))\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc OpenMutex(desiredAccess uint32, inheritHandle bool, name *uint16) (handle Handle, err error) {\n\tvar _p0 uint32\n\tif inheritHandle {\n\t\t_p0 = 1\n\t}\n\tr0, _, e1 := syscall.SyscallN(procOpenMutexW.Addr(), uintptr(desiredAccess), uintptr(_p0), uintptr(unsafe.Pointer(name)))\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc OpenProcess(desiredAccess uint32, inheritHandle bool, processId uint32) (handle Handle, err error) {\n\tvar _p0 uint32\n\tif inheritHandle {\n\t\t_p0 = 1\n\t}\n\tr0, _, e1 := syscall.SyscallN(procOpenProcess.Addr(), uintptr(desiredAccess), uintptr(_p0), uintptr(processId))\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc OpenThread(desiredAccess uint32, inheritHandle bool, threadId uint32) (handle Handle, err error) {\n\tvar _p0 uint32\n\tif inheritHandle {\n\t\t_p0 = 1\n\t}\n\tr0, _, e1 := syscall.SyscallN(procOpenThread.Addr(), uintptr(desiredAccess), uintptr(_p0), uintptr(threadId))\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc PostQueuedCompletionStatus(cphandle Handle, qty uint32, key uintptr, overlapped *Overlapped) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procPostQueuedCompletionStatus.Addr(), uintptr(cphandle), uintptr(qty), uintptr(key), uintptr(unsafe.Pointer(overlapped)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc Process32First(snapshot Handle, procEntry *ProcessEntry32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procProcess32FirstW.Addr(), uintptr(snapshot), uintptr(unsafe.Pointer(procEntry)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc Process32Next(snapshot Handle, procEntry *ProcessEntry32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procProcess32NextW.Addr(), uintptr(snapshot), uintptr(unsafe.Pointer(procEntry)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ProcessIdToSessionId(pid uint32, sessionid *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procProcessIdToSessionId.Addr(), uintptr(pid), uintptr(unsafe.Pointer(sessionid)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc PulseEvent(event Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procPulseEvent.Addr(), uintptr(event))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc PurgeComm(handle Handle, dwFlags uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procPurgeComm.Addr(), uintptr(handle), uintptr(dwFlags))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc QueryDosDevice(deviceName *uint16, targetPath *uint16, max uint32) (n uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procQueryDosDeviceW.Addr(), uintptr(unsafe.Pointer(deviceName)), uintptr(unsafe.Pointer(targetPath)), uintptr(max))\n\tn = uint32(r0)\n\tif n == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc QueryFullProcessImageName(proc Handle, flags uint32, exeName *uint16, size *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procQueryFullProcessImageNameW.Addr(), uintptr(proc), uintptr(flags), uintptr(unsafe.Pointer(exeName)), uintptr(unsafe.Pointer(size)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc QueryInformationJobObject(job Handle, JobObjectInformationClass int32, JobObjectInformation uintptr, JobObjectInformationLength uint32, retlen *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procQueryInformationJobObject.Addr(), uintptr(job), uintptr(JobObjectInformationClass), uintptr(JobObjectInformation), uintptr(JobObjectInformationLength), uintptr(unsafe.Pointer(retlen)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ReadConsole(console Handle, buf *uint16, toread uint32, read *uint32, inputControl *byte) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procReadConsoleW.Addr(), uintptr(console), uintptr(unsafe.Pointer(buf)), uintptr(toread), uintptr(unsafe.Pointer(read)), uintptr(unsafe.Pointer(inputControl)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ReadDirectoryChanges(handle Handle, buf *byte, buflen uint32, watchSubTree bool, mask uint32, retlen *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) {\n\tvar _p0 uint32\n\tif watchSubTree {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procReadDirectoryChangesW.Addr(), uintptr(handle), uintptr(unsafe.Pointer(buf)), uintptr(buflen), uintptr(_p0), uintptr(mask), uintptr(unsafe.Pointer(retlen)), uintptr(unsafe.Pointer(overlapped)), uintptr(completionRoutine))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc readFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tr1, _, e1 := syscall.SyscallN(procReadFile.Addr(), uintptr(handle), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(done)), uintptr(unsafe.Pointer(overlapped)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ReadProcessMemory(process Handle, baseAddress uintptr, buffer *byte, size uintptr, numberOfBytesRead *uintptr) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procReadProcessMemory.Addr(), uintptr(process), uintptr(baseAddress), uintptr(unsafe.Pointer(buffer)), uintptr(size), uintptr(unsafe.Pointer(numberOfBytesRead)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ReleaseMutex(mutex Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procReleaseMutex.Addr(), uintptr(mutex))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc RemoveDirectory(path *uint16) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procRemoveDirectoryW.Addr(), uintptr(unsafe.Pointer(path)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc RemoveDllDirectory(cookie uintptr) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procRemoveDllDirectory.Addr(), uintptr(cookie))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ResetEvent(event Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procResetEvent.Addr(), uintptr(event))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc resizePseudoConsole(pconsole Handle, size uint32) (hr error) {\n\tr0, _, _ := syscall.SyscallN(procResizePseudoConsole.Addr(), uintptr(pconsole), uintptr(size))\n\tif r0 != 0 {\n\t\thr = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc ResumeThread(thread Handle) (ret uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procResumeThread.Addr(), uintptr(thread))\n\tret = uint32(r0)\n\tif ret == 0xffffffff {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetCommBreak(handle Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetCommBreak.Addr(), uintptr(handle))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetCommMask(handle Handle, dwEvtMask uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetCommMask.Addr(), uintptr(handle), uintptr(dwEvtMask))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetCommState(handle Handle, lpDCB *DCB) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetCommState.Addr(), uintptr(handle), uintptr(unsafe.Pointer(lpDCB)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetCommTimeouts(handle Handle, timeouts *CommTimeouts) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetCommTimeouts.Addr(), uintptr(handle), uintptr(unsafe.Pointer(timeouts)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetConsoleCP(cp uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetConsoleCP.Addr(), uintptr(cp))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setConsoleCursorPosition(console Handle, position uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetConsoleCursorPosition.Addr(), uintptr(console), uintptr(position))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetConsoleMode(console Handle, mode uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetConsoleMode.Addr(), uintptr(console), uintptr(mode))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetConsoleOutputCP(cp uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetConsoleOutputCP.Addr(), uintptr(cp))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetCurrentDirectory(path *uint16) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetCurrentDirectoryW.Addr(), uintptr(unsafe.Pointer(path)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetDefaultDllDirectories(directoryFlags uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetDefaultDllDirectories.Addr(), uintptr(directoryFlags))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetDllDirectory(path string) (err error) {\n\tvar _p0 *uint16\n\t_p0, err = syscall.UTF16PtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\treturn _SetDllDirectory(_p0)\n}\n\nfunc _SetDllDirectory(path *uint16) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetDllDirectoryW.Addr(), uintptr(unsafe.Pointer(path)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetEndOfFile(handle Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetEndOfFile.Addr(), uintptr(handle))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetEnvironmentVariable(name *uint16, value *uint16) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetEnvironmentVariableW.Addr(), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(value)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetErrorMode(mode uint32) (ret uint32) {\n\tr0, _, _ := syscall.SyscallN(procSetErrorMode.Addr(), uintptr(mode))\n\tret = uint32(r0)\n\treturn\n}\n\nfunc SetEvent(event Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetEvent.Addr(), uintptr(event))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetFileAttributes(name *uint16, attrs uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetFileAttributesW.Addr(), uintptr(unsafe.Pointer(name)), uintptr(attrs))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetFileCompletionNotificationModes(handle Handle, flags uint8) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetFileCompletionNotificationModes.Addr(), uintptr(handle), uintptr(flags))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetFileInformationByHandle(handle Handle, class uint32, inBuffer *byte, inBufferLen uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetFileInformationByHandle.Addr(), uintptr(handle), uintptr(class), uintptr(unsafe.Pointer(inBuffer)), uintptr(inBufferLen))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetFilePointer(handle Handle, lowoffset int32, highoffsetptr *int32, whence uint32) (newlowoffset uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procSetFilePointer.Addr(), uintptr(handle), uintptr(lowoffset), uintptr(unsafe.Pointer(highoffsetptr)), uintptr(whence))\n\tnewlowoffset = uint32(r0)\n\tif newlowoffset == 0xffffffff {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetFileTime(handle Handle, ctime *Filetime, atime *Filetime, wtime *Filetime) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetFileTime.Addr(), uintptr(handle), uintptr(unsafe.Pointer(ctime)), uintptr(unsafe.Pointer(atime)), uintptr(unsafe.Pointer(wtime)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetFileValidData(handle Handle, validDataLength int64) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetFileValidData.Addr(), uintptr(handle), uintptr(validDataLength))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetHandleInformation(handle Handle, mask uint32, flags uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetHandleInformation.Addr(), uintptr(handle), uintptr(mask), uintptr(flags))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetInformationJobObject(job Handle, JobObjectInformationClass uint32, JobObjectInformation uintptr, JobObjectInformationLength uint32) (ret int, err error) {\n\tr0, _, e1 := syscall.SyscallN(procSetInformationJobObject.Addr(), uintptr(job), uintptr(JobObjectInformationClass), uintptr(JobObjectInformation), uintptr(JobObjectInformationLength))\n\tret = int(r0)\n\tif ret == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetNamedPipeHandleState(pipe Handle, state *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetNamedPipeHandleState.Addr(), uintptr(pipe), uintptr(unsafe.Pointer(state)), uintptr(unsafe.Pointer(maxCollectionCount)), uintptr(unsafe.Pointer(collectDataTimeout)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetPriorityClass(process Handle, priorityClass uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetPriorityClass.Addr(), uintptr(process), uintptr(priorityClass))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetProcessPriorityBoost(process Handle, disable bool) (err error) {\n\tvar _p0 uint32\n\tif disable {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procSetProcessPriorityBoost.Addr(), uintptr(process), uintptr(_p0))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetProcessShutdownParameters(level uint32, flags uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetProcessShutdownParameters.Addr(), uintptr(level), uintptr(flags))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetProcessWorkingSetSizeEx(hProcess Handle, dwMinimumWorkingSetSize uintptr, dwMaximumWorkingSetSize uintptr, flags uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetProcessWorkingSetSizeEx.Addr(), uintptr(hProcess), uintptr(dwMinimumWorkingSetSize), uintptr(dwMaximumWorkingSetSize), uintptr(flags))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetStdHandle(stdhandle uint32, handle Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetStdHandle.Addr(), uintptr(stdhandle), uintptr(handle))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetVolumeLabel(rootPathName *uint16, volumeName *uint16) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetVolumeLabelW.Addr(), uintptr(unsafe.Pointer(rootPathName)), uintptr(unsafe.Pointer(volumeName)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetVolumeMountPointW.Addr(), uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(unsafe.Pointer(volumeName)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetupComm(handle Handle, dwInQueue uint32, dwOutQueue uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupComm.Addr(), uintptr(handle), uintptr(dwInQueue), uintptr(dwOutQueue))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SizeofResource(module Handle, resInfo Handle) (size uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procSizeofResource.Addr(), uintptr(module), uintptr(resInfo))\n\tsize = uint32(r0)\n\tif size == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SleepEx(milliseconds uint32, alertable bool) (ret uint32) {\n\tvar _p0 uint32\n\tif alertable {\n\t\t_p0 = 1\n\t}\n\tr0, _, _ := syscall.SyscallN(procSleepEx.Addr(), uintptr(milliseconds), uintptr(_p0))\n\tret = uint32(r0)\n\treturn\n}\n\nfunc TerminateJobObject(job Handle, exitCode uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procTerminateJobObject.Addr(), uintptr(job), uintptr(exitCode))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc TerminateProcess(handle Handle, exitcode uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procTerminateProcess.Addr(), uintptr(handle), uintptr(exitcode))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc Thread32First(snapshot Handle, threadEntry *ThreadEntry32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procThread32First.Addr(), uintptr(snapshot), uintptr(unsafe.Pointer(threadEntry)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc Thread32Next(snapshot Handle, threadEntry *ThreadEntry32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procThread32Next.Addr(), uintptr(snapshot), uintptr(unsafe.Pointer(threadEntry)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc UnlockFileEx(file Handle, reserved uint32, bytesLow uint32, bytesHigh uint32, overlapped *Overlapped) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procUnlockFileEx.Addr(), uintptr(file), uintptr(reserved), uintptr(bytesLow), uintptr(bytesHigh), uintptr(unsafe.Pointer(overlapped)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc UnmapViewOfFile(addr uintptr) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procUnmapViewOfFile.Addr(), uintptr(addr))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc updateProcThreadAttribute(attrlist *ProcThreadAttributeList, flags uint32, attr uintptr, value unsafe.Pointer, size uintptr, prevvalue unsafe.Pointer, returnedsize *uintptr) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procUpdateProcThreadAttribute.Addr(), uintptr(unsafe.Pointer(attrlist)), uintptr(flags), uintptr(attr), uintptr(value), uintptr(size), uintptr(prevvalue), uintptr(unsafe.Pointer(returnedsize)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc VirtualAlloc(address uintptr, size uintptr, alloctype uint32, protect uint32) (value uintptr, err error) {\n\tr0, _, e1 := syscall.SyscallN(procVirtualAlloc.Addr(), uintptr(address), uintptr(size), uintptr(alloctype), uintptr(protect))\n\tvalue = uintptr(r0)\n\tif value == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc VirtualFree(address uintptr, size uintptr, freetype uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procVirtualFree.Addr(), uintptr(address), uintptr(size), uintptr(freetype))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc VirtualLock(addr uintptr, length uintptr) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procVirtualLock.Addr(), uintptr(addr), uintptr(length))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc VirtualProtect(address uintptr, size uintptr, newprotect uint32, oldprotect *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procVirtualProtect.Addr(), uintptr(address), uintptr(size), uintptr(newprotect), uintptr(unsafe.Pointer(oldprotect)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc VirtualProtectEx(process Handle, address uintptr, size uintptr, newProtect uint32, oldProtect *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procVirtualProtectEx.Addr(), uintptr(process), uintptr(address), uintptr(size), uintptr(newProtect), uintptr(unsafe.Pointer(oldProtect)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc VirtualQuery(address uintptr, buffer *MemoryBasicInformation, length uintptr) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procVirtualQuery.Addr(), uintptr(address), uintptr(unsafe.Pointer(buffer)), uintptr(length))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc VirtualQueryEx(process Handle, address uintptr, buffer *MemoryBasicInformation, length uintptr) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procVirtualQueryEx.Addr(), uintptr(process), uintptr(address), uintptr(unsafe.Pointer(buffer)), uintptr(length))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc VirtualUnlock(addr uintptr, length uintptr) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procVirtualUnlock.Addr(), uintptr(addr), uintptr(length))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WTSGetActiveConsoleSessionId() (sessionID uint32) {\n\tr0, _, _ := syscall.SyscallN(procWTSGetActiveConsoleSessionId.Addr())\n\tsessionID = uint32(r0)\n\treturn\n}\n\nfunc WaitCommEvent(handle Handle, lpEvtMask *uint32, lpOverlapped *Overlapped) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procWaitCommEvent.Addr(), uintptr(handle), uintptr(unsafe.Pointer(lpEvtMask)), uintptr(unsafe.Pointer(lpOverlapped)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc waitForMultipleObjects(count uint32, handles uintptr, waitAll bool, waitMilliseconds uint32) (event uint32, err error) {\n\tvar _p0 uint32\n\tif waitAll {\n\t\t_p0 = 1\n\t}\n\tr0, _, e1 := syscall.SyscallN(procWaitForMultipleObjects.Addr(), uintptr(count), uintptr(handles), uintptr(_p0), uintptr(waitMilliseconds))\n\tevent = uint32(r0)\n\tif event == 0xffffffff {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WaitForSingleObject(handle Handle, waitMilliseconds uint32) (event uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procWaitForSingleObject.Addr(), uintptr(handle), uintptr(waitMilliseconds))\n\tevent = uint32(r0)\n\tif event == 0xffffffff {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WriteConsole(console Handle, buf *uint16, towrite uint32, written *uint32, reserved *byte) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procWriteConsoleW.Addr(), uintptr(console), uintptr(unsafe.Pointer(buf)), uintptr(towrite), uintptr(unsafe.Pointer(written)), uintptr(unsafe.Pointer(reserved)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc writeFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tr1, _, e1 := syscall.SyscallN(procWriteFile.Addr(), uintptr(handle), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(done)), uintptr(unsafe.Pointer(overlapped)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WriteProcessMemory(process Handle, baseAddress uintptr, buffer *byte, size uintptr, numberOfBytesWritten *uintptr) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procWriteProcessMemory.Addr(), uintptr(process), uintptr(baseAddress), uintptr(unsafe.Pointer(buffer)), uintptr(size), uintptr(unsafe.Pointer(numberOfBytesWritten)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc AcceptEx(ls Handle, as Handle, buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, recvd *uint32, overlapped *Overlapped) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procAcceptEx.Addr(), uintptr(ls), uintptr(as), uintptr(unsafe.Pointer(buf)), uintptr(rxdatalen), uintptr(laddrlen), uintptr(raddrlen), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(overlapped)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetAcceptExSockaddrs(buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, lrsa **RawSockaddrAny, lrsalen *int32, rrsa **RawSockaddrAny, rrsalen *int32) {\n\tsyscall.SyscallN(procGetAcceptExSockaddrs.Addr(), uintptr(unsafe.Pointer(buf)), uintptr(rxdatalen), uintptr(laddrlen), uintptr(raddrlen), uintptr(unsafe.Pointer(lrsa)), uintptr(unsafe.Pointer(lrsalen)), uintptr(unsafe.Pointer(rrsa)), uintptr(unsafe.Pointer(rrsalen)))\n\treturn\n}\n\nfunc TransmitFile(s Handle, handle Handle, bytesToWrite uint32, bytsPerSend uint32, overlapped *Overlapped, transmitFileBuf *TransmitFileBuffers, flags uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procTransmitFile.Addr(), uintptr(s), uintptr(handle), uintptr(bytesToWrite), uintptr(bytsPerSend), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(transmitFileBuf)), uintptr(flags))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc NetApiBufferFree(buf *byte) (neterr error) {\n\tr0, _, _ := syscall.SyscallN(procNetApiBufferFree.Addr(), uintptr(unsafe.Pointer(buf)))\n\tif r0 != 0 {\n\t\tneterr = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc NetGetJoinInformation(server *uint16, name **uint16, bufType *uint32) (neterr error) {\n\tr0, _, _ := syscall.SyscallN(procNetGetJoinInformation.Addr(), uintptr(unsafe.Pointer(server)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(bufType)))\n\tif r0 != 0 {\n\t\tneterr = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc NetUserEnum(serverName *uint16, level uint32, filter uint32, buf **byte, prefMaxLen uint32, entriesRead *uint32, totalEntries *uint32, resumeHandle *uint32) (neterr error) {\n\tr0, _, _ := syscall.SyscallN(procNetUserEnum.Addr(), uintptr(unsafe.Pointer(serverName)), uintptr(level), uintptr(filter), uintptr(unsafe.Pointer(buf)), uintptr(prefMaxLen), uintptr(unsafe.Pointer(entriesRead)), uintptr(unsafe.Pointer(totalEntries)), uintptr(unsafe.Pointer(resumeHandle)))\n\tif r0 != 0 {\n\t\tneterr = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc NetUserGetInfo(serverName *uint16, userName *uint16, level uint32, buf **byte) (neterr error) {\n\tr0, _, _ := syscall.SyscallN(procNetUserGetInfo.Addr(), uintptr(unsafe.Pointer(serverName)), uintptr(unsafe.Pointer(userName)), uintptr(level), uintptr(unsafe.Pointer(buf)))\n\tif r0 != 0 {\n\t\tneterr = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc NtCreateFile(handle *Handle, access uint32, oa *OBJECT_ATTRIBUTES, iosb *IO_STATUS_BLOCK, allocationSize *int64, attributes uint32, share uint32, disposition uint32, options uint32, eabuffer uintptr, ealength uint32) (ntstatus error) {\n\tr0, _, _ := syscall.SyscallN(procNtCreateFile.Addr(), uintptr(unsafe.Pointer(handle)), uintptr(access), uintptr(unsafe.Pointer(oa)), uintptr(unsafe.Pointer(iosb)), uintptr(unsafe.Pointer(allocationSize)), uintptr(attributes), uintptr(share), uintptr(disposition), uintptr(options), uintptr(eabuffer), uintptr(ealength))\n\tif r0 != 0 {\n\t\tntstatus = NTStatus(r0)\n\t}\n\treturn\n}\n\nfunc NtCreateNamedPipeFile(pipe *Handle, access uint32, oa *OBJECT_ATTRIBUTES, iosb *IO_STATUS_BLOCK, share uint32, disposition uint32, options uint32, typ uint32, readMode uint32, completionMode uint32, maxInstances uint32, inboundQuota uint32, outputQuota uint32, timeout *int64) (ntstatus error) {\n\tr0, _, _ := syscall.SyscallN(procNtCreateNamedPipeFile.Addr(), uintptr(unsafe.Pointer(pipe)), uintptr(access), uintptr(unsafe.Pointer(oa)), uintptr(unsafe.Pointer(iosb)), uintptr(share), uintptr(disposition), uintptr(options), uintptr(typ), uintptr(readMode), uintptr(completionMode), uintptr(maxInstances), uintptr(inboundQuota), uintptr(outputQuota), uintptr(unsafe.Pointer(timeout)))\n\tif r0 != 0 {\n\t\tntstatus = NTStatus(r0)\n\t}\n\treturn\n}\n\nfunc NtQueryInformationProcess(proc Handle, procInfoClass int32, procInfo unsafe.Pointer, procInfoLen uint32, retLen *uint32) (ntstatus error) {\n\tr0, _, _ := syscall.SyscallN(procNtQueryInformationProcess.Addr(), uintptr(proc), uintptr(procInfoClass), uintptr(procInfo), uintptr(procInfoLen), uintptr(unsafe.Pointer(retLen)))\n\tif r0 != 0 {\n\t\tntstatus = NTStatus(r0)\n\t}\n\treturn\n}\n\nfunc NtQuerySystemInformation(sysInfoClass int32, sysInfo unsafe.Pointer, sysInfoLen uint32, retLen *uint32) (ntstatus error) {\n\tr0, _, _ := syscall.SyscallN(procNtQuerySystemInformation.Addr(), uintptr(sysInfoClass), uintptr(sysInfo), uintptr(sysInfoLen), uintptr(unsafe.Pointer(retLen)))\n\tif r0 != 0 {\n\t\tntstatus = NTStatus(r0)\n\t}\n\treturn\n}\n\nfunc NtSetInformationFile(handle Handle, iosb *IO_STATUS_BLOCK, inBuffer *byte, inBufferLen uint32, class uint32) (ntstatus error) {\n\tr0, _, _ := syscall.SyscallN(procNtSetInformationFile.Addr(), uintptr(handle), uintptr(unsafe.Pointer(iosb)), uintptr(unsafe.Pointer(inBuffer)), uintptr(inBufferLen), uintptr(class))\n\tif r0 != 0 {\n\t\tntstatus = NTStatus(r0)\n\t}\n\treturn\n}\n\nfunc NtSetInformationProcess(proc Handle, procInfoClass int32, procInfo unsafe.Pointer, procInfoLen uint32) (ntstatus error) {\n\tr0, _, _ := syscall.SyscallN(procNtSetInformationProcess.Addr(), uintptr(proc), uintptr(procInfoClass), uintptr(procInfo), uintptr(procInfoLen))\n\tif r0 != 0 {\n\t\tntstatus = NTStatus(r0)\n\t}\n\treturn\n}\n\nfunc NtSetSystemInformation(sysInfoClass int32, sysInfo unsafe.Pointer, sysInfoLen uint32) (ntstatus error) {\n\tr0, _, _ := syscall.SyscallN(procNtSetSystemInformation.Addr(), uintptr(sysInfoClass), uintptr(sysInfo), uintptr(sysInfoLen))\n\tif r0 != 0 {\n\t\tntstatus = NTStatus(r0)\n\t}\n\treturn\n}\n\nfunc RtlAddFunctionTable(functionTable *RUNTIME_FUNCTION, entryCount uint32, baseAddress uintptr) (ret bool) {\n\tr0, _, _ := syscall.SyscallN(procRtlAddFunctionTable.Addr(), uintptr(unsafe.Pointer(functionTable)), uintptr(entryCount), uintptr(baseAddress))\n\tret = r0 != 0\n\treturn\n}\n\nfunc RtlDefaultNpAcl(acl **ACL) (ntstatus error) {\n\tr0, _, _ := syscall.SyscallN(procRtlDefaultNpAcl.Addr(), uintptr(unsafe.Pointer(acl)))\n\tif r0 != 0 {\n\t\tntstatus = NTStatus(r0)\n\t}\n\treturn\n}\n\nfunc RtlDeleteFunctionTable(functionTable *RUNTIME_FUNCTION) (ret bool) {\n\tr0, _, _ := syscall.SyscallN(procRtlDeleteFunctionTable.Addr(), uintptr(unsafe.Pointer(functionTable)))\n\tret = r0 != 0\n\treturn\n}\n\nfunc RtlDosPathNameToNtPathName(dosName *uint16, ntName *NTUnicodeString, ntFileNamePart *uint16, relativeName *RTL_RELATIVE_NAME) (ntstatus error) {\n\tr0, _, _ := syscall.SyscallN(procRtlDosPathNameToNtPathName_U_WithStatus.Addr(), uintptr(unsafe.Pointer(dosName)), uintptr(unsafe.Pointer(ntName)), uintptr(unsafe.Pointer(ntFileNamePart)), uintptr(unsafe.Pointer(relativeName)))\n\tif r0 != 0 {\n\t\tntstatus = NTStatus(r0)\n\t}\n\treturn\n}\n\nfunc RtlDosPathNameToRelativeNtPathName(dosName *uint16, ntName *NTUnicodeString, ntFileNamePart *uint16, relativeName *RTL_RELATIVE_NAME) (ntstatus error) {\n\tr0, _, _ := syscall.SyscallN(procRtlDosPathNameToRelativeNtPathName_U_WithStatus.Addr(), uintptr(unsafe.Pointer(dosName)), uintptr(unsafe.Pointer(ntName)), uintptr(unsafe.Pointer(ntFileNamePart)), uintptr(unsafe.Pointer(relativeName)))\n\tif r0 != 0 {\n\t\tntstatus = NTStatus(r0)\n\t}\n\treturn\n}\n\nfunc RtlGetCurrentPeb() (peb *PEB) {\n\tr0, _, _ := syscall.SyscallN(procRtlGetCurrentPeb.Addr())\n\tpeb = (*PEB)(unsafe.Pointer(r0))\n\treturn\n}\n\nfunc rtlGetNtVersionNumbers(majorVersion *uint32, minorVersion *uint32, buildNumber *uint32) {\n\tsyscall.SyscallN(procRtlGetNtVersionNumbers.Addr(), uintptr(unsafe.Pointer(majorVersion)), uintptr(unsafe.Pointer(minorVersion)), uintptr(unsafe.Pointer(buildNumber)))\n\treturn\n}\n\nfunc rtlGetVersion(info *OsVersionInfoEx) (ntstatus error) {\n\tr0, _, _ := syscall.SyscallN(procRtlGetVersion.Addr(), uintptr(unsafe.Pointer(info)))\n\tif r0 != 0 {\n\t\tntstatus = NTStatus(r0)\n\t}\n\treturn\n}\n\nfunc RtlInitString(destinationString *NTString, sourceString *byte) {\n\tsyscall.SyscallN(procRtlInitString.Addr(), uintptr(unsafe.Pointer(destinationString)), uintptr(unsafe.Pointer(sourceString)))\n\treturn\n}\n\nfunc RtlInitUnicodeString(destinationString *NTUnicodeString, sourceString *uint16) {\n\tsyscall.SyscallN(procRtlInitUnicodeString.Addr(), uintptr(unsafe.Pointer(destinationString)), uintptr(unsafe.Pointer(sourceString)))\n\treturn\n}\n\nfunc rtlNtStatusToDosErrorNoTeb(ntstatus NTStatus) (ret syscall.Errno) {\n\tr0, _, _ := syscall.SyscallN(procRtlNtStatusToDosErrorNoTeb.Addr(), uintptr(ntstatus))\n\tret = syscall.Errno(r0)\n\treturn\n}\n\nfunc clsidFromString(lpsz *uint16, pclsid *GUID) (ret error) {\n\tr0, _, _ := syscall.SyscallN(procCLSIDFromString.Addr(), uintptr(unsafe.Pointer(lpsz)), uintptr(unsafe.Pointer(pclsid)))\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc coCreateGuid(pguid *GUID) (ret error) {\n\tr0, _, _ := syscall.SyscallN(procCoCreateGuid.Addr(), uintptr(unsafe.Pointer(pguid)))\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc CoGetObject(name *uint16, bindOpts *BIND_OPTS3, guid *GUID, functionTable **uintptr) (ret error) {\n\tr0, _, _ := syscall.SyscallN(procCoGetObject.Addr(), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(bindOpts)), uintptr(unsafe.Pointer(guid)), uintptr(unsafe.Pointer(functionTable)))\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc CoInitializeEx(reserved uintptr, coInit uint32) (ret error) {\n\tr0, _, _ := syscall.SyscallN(procCoInitializeEx.Addr(), uintptr(reserved), uintptr(coInit))\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc CoTaskMemFree(address unsafe.Pointer) {\n\tsyscall.SyscallN(procCoTaskMemFree.Addr(), uintptr(address))\n\treturn\n}\n\nfunc CoUninitialize() {\n\tsyscall.SyscallN(procCoUninitialize.Addr())\n\treturn\n}\n\nfunc stringFromGUID2(rguid *GUID, lpsz *uint16, cchMax int32) (chars int32) {\n\tr0, _, _ := syscall.SyscallN(procStringFromGUID2.Addr(), uintptr(unsafe.Pointer(rguid)), uintptr(unsafe.Pointer(lpsz)), uintptr(cchMax))\n\tchars = int32(r0)\n\treturn\n}\n\nfunc EnumProcessModules(process Handle, module *Handle, cb uint32, cbNeeded *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procEnumProcessModules.Addr(), uintptr(process), uintptr(unsafe.Pointer(module)), uintptr(cb), uintptr(unsafe.Pointer(cbNeeded)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc EnumProcessModulesEx(process Handle, module *Handle, cb uint32, cbNeeded *uint32, filterFlag uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procEnumProcessModulesEx.Addr(), uintptr(process), uintptr(unsafe.Pointer(module)), uintptr(cb), uintptr(unsafe.Pointer(cbNeeded)), uintptr(filterFlag))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc enumProcesses(processIds *uint32, nSize uint32, bytesReturned *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procEnumProcesses.Addr(), uintptr(unsafe.Pointer(processIds)), uintptr(nSize), uintptr(unsafe.Pointer(bytesReturned)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetModuleBaseName(process Handle, module Handle, baseName *uint16, size uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetModuleBaseNameW.Addr(), uintptr(process), uintptr(module), uintptr(unsafe.Pointer(baseName)), uintptr(size))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetModuleFileNameEx(process Handle, module Handle, filename *uint16, size uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetModuleFileNameExW.Addr(), uintptr(process), uintptr(module), uintptr(unsafe.Pointer(filename)), uintptr(size))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetModuleInformation(process Handle, module Handle, modinfo *ModuleInfo, cb uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetModuleInformation.Addr(), uintptr(process), uintptr(module), uintptr(unsafe.Pointer(modinfo)), uintptr(cb))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc QueryWorkingSetEx(process Handle, pv uintptr, cb uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procQueryWorkingSetEx.Addr(), uintptr(process), uintptr(pv), uintptr(cb))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SubscribeServiceChangeNotifications(service Handle, eventType uint32, callback uintptr, callbackCtx uintptr, subscription *uintptr) (ret error) {\n\tret = procSubscribeServiceChangeNotifications.Find()\n\tif ret != nil {\n\t\treturn\n\t}\n\tr0, _, _ := syscall.SyscallN(procSubscribeServiceChangeNotifications.Addr(), uintptr(service), uintptr(eventType), uintptr(callback), uintptr(callbackCtx), uintptr(unsafe.Pointer(subscription)))\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc UnsubscribeServiceChangeNotifications(subscription uintptr) (err error) {\n\terr = procUnsubscribeServiceChangeNotifications.Find()\n\tif err != nil {\n\t\treturn\n\t}\n\tsyscall.SyscallN(procUnsubscribeServiceChangeNotifications.Addr(), uintptr(subscription))\n\treturn\n}\n\nfunc GetUserNameEx(nameFormat uint32, nameBuffre *uint16, nSize *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetUserNameExW.Addr(), uintptr(nameFormat), uintptr(unsafe.Pointer(nameBuffre)), uintptr(unsafe.Pointer(nSize)))\n\tif r1&0xff == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc TranslateName(accName *uint16, accNameFormat uint32, desiredNameFormat uint32, translatedName *uint16, nSize *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procTranslateNameW.Addr(), uintptr(unsafe.Pointer(accName)), uintptr(accNameFormat), uintptr(desiredNameFormat), uintptr(unsafe.Pointer(translatedName)), uintptr(unsafe.Pointer(nSize)))\n\tif r1&0xff == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetupDiBuildDriverInfoList(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverType SPDIT) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiBuildDriverInfoList.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(driverType))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetupDiCallClassInstaller(installFunction DI_FUNCTION, deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiCallClassInstaller.Addr(), uintptr(installFunction), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetupDiCancelDriverInfoSearch(deviceInfoSet DevInfo) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiCancelDriverInfoSearch.Addr(), uintptr(deviceInfoSet))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiClassGuidsFromNameEx(className *uint16, classGuidList *GUID, classGuidListSize uint32, requiredSize *uint32, machineName *uint16, reserved uintptr) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiClassGuidsFromNameExW.Addr(), uintptr(unsafe.Pointer(className)), uintptr(unsafe.Pointer(classGuidList)), uintptr(classGuidListSize), uintptr(unsafe.Pointer(requiredSize)), uintptr(unsafe.Pointer(machineName)), uintptr(reserved))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiClassNameFromGuidEx(classGUID *GUID, className *uint16, classNameSize uint32, requiredSize *uint32, machineName *uint16, reserved uintptr) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiClassNameFromGuidExW.Addr(), uintptr(unsafe.Pointer(classGUID)), uintptr(unsafe.Pointer(className)), uintptr(classNameSize), uintptr(unsafe.Pointer(requiredSize)), uintptr(unsafe.Pointer(machineName)), uintptr(reserved))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiCreateDeviceInfoListEx(classGUID *GUID, hwndParent uintptr, machineName *uint16, reserved uintptr) (handle DevInfo, err error) {\n\tr0, _, e1 := syscall.SyscallN(procSetupDiCreateDeviceInfoListExW.Addr(), uintptr(unsafe.Pointer(classGUID)), uintptr(hwndParent), uintptr(unsafe.Pointer(machineName)), uintptr(reserved))\n\thandle = DevInfo(r0)\n\tif handle == DevInfo(InvalidHandle) {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiCreateDeviceInfo(deviceInfoSet DevInfo, DeviceName *uint16, classGUID *GUID, DeviceDescription *uint16, hwndParent uintptr, CreationFlags DICD, deviceInfoData *DevInfoData) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiCreateDeviceInfoW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(DeviceName)), uintptr(unsafe.Pointer(classGUID)), uintptr(unsafe.Pointer(DeviceDescription)), uintptr(hwndParent), uintptr(CreationFlags), uintptr(unsafe.Pointer(deviceInfoData)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetupDiDestroyDeviceInfoList(deviceInfoSet DevInfo) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiDestroyDeviceInfoList.Addr(), uintptr(deviceInfoSet))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetupDiDestroyDriverInfoList(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverType SPDIT) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiDestroyDriverInfoList.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(driverType))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiEnumDeviceInfo(deviceInfoSet DevInfo, memberIndex uint32, deviceInfoData *DevInfoData) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiEnumDeviceInfo.Addr(), uintptr(deviceInfoSet), uintptr(memberIndex), uintptr(unsafe.Pointer(deviceInfoData)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiEnumDriverInfo(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverType SPDIT, memberIndex uint32, driverInfoData *DrvInfoData) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiEnumDriverInfoW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(driverType), uintptr(memberIndex), uintptr(unsafe.Pointer(driverInfoData)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiGetClassDevsEx(classGUID *GUID, Enumerator *uint16, hwndParent uintptr, Flags DIGCF, deviceInfoSet DevInfo, machineName *uint16, reserved uintptr) (handle DevInfo, err error) {\n\tr0, _, e1 := syscall.SyscallN(procSetupDiGetClassDevsExW.Addr(), uintptr(unsafe.Pointer(classGUID)), uintptr(unsafe.Pointer(Enumerator)), uintptr(hwndParent), uintptr(Flags), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(machineName)), uintptr(reserved))\n\thandle = DevInfo(r0)\n\tif handle == DevInfo(InvalidHandle) {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetupDiGetClassInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, classInstallParams *ClassInstallHeader, classInstallParamsSize uint32, requiredSize *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiGetClassInstallParamsW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(classInstallParams)), uintptr(classInstallParamsSize), uintptr(unsafe.Pointer(requiredSize)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiGetDeviceInfoListDetail(deviceInfoSet DevInfo, deviceInfoSetDetailData *DevInfoListDetailData) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiGetDeviceInfoListDetailW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoSetDetailData)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiGetDeviceInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, deviceInstallParams *DevInstallParams) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiGetDeviceInstallParamsW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(deviceInstallParams)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiGetDeviceInstanceId(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, instanceId *uint16, instanceIdSize uint32, instanceIdRequiredSize *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiGetDeviceInstanceIdW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(instanceId)), uintptr(instanceIdSize), uintptr(unsafe.Pointer(instanceIdRequiredSize)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiGetDeviceProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, propertyKey *DEVPROPKEY, propertyType *DEVPROPTYPE, propertyBuffer *byte, propertyBufferSize uint32, requiredSize *uint32, flags uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiGetDevicePropertyW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(propertyKey)), uintptr(unsafe.Pointer(propertyType)), uintptr(unsafe.Pointer(propertyBuffer)), uintptr(propertyBufferSize), uintptr(unsafe.Pointer(requiredSize)), uintptr(flags))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiGetDeviceRegistryProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, property SPDRP, propertyRegDataType *uint32, propertyBuffer *byte, propertyBufferSize uint32, requiredSize *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiGetDeviceRegistryPropertyW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(property), uintptr(unsafe.Pointer(propertyRegDataType)), uintptr(unsafe.Pointer(propertyBuffer)), uintptr(propertyBufferSize), uintptr(unsafe.Pointer(requiredSize)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiGetDriverInfoDetail(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverInfoData *DrvInfoData, driverInfoDetailData *DrvInfoDetailData, driverInfoDetailDataSize uint32, requiredSize *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiGetDriverInfoDetailW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(driverInfoData)), uintptr(unsafe.Pointer(driverInfoDetailData)), uintptr(driverInfoDetailDataSize), uintptr(unsafe.Pointer(requiredSize)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiGetSelectedDevice(deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiGetSelectedDevice.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiGetSelectedDriver(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverInfoData *DrvInfoData) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiGetSelectedDriverW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(driverInfoData)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetupDiOpenDevRegKey(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, Scope DICS_FLAG, HwProfile uint32, KeyType DIREG, samDesired uint32) (key Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procSetupDiOpenDevRegKey.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(Scope), uintptr(HwProfile), uintptr(KeyType), uintptr(samDesired))\n\tkey = Handle(r0)\n\tif key == InvalidHandle {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetupDiSetClassInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, classInstallParams *ClassInstallHeader, classInstallParamsSize uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiSetClassInstallParamsW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(classInstallParams)), uintptr(classInstallParamsSize))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetupDiSetDeviceInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, deviceInstallParams *DevInstallParams) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiSetDeviceInstallParamsW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(deviceInstallParams)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiSetDeviceRegistryProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, property SPDRP, propertyBuffer *byte, propertyBufferSize uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiSetDeviceRegistryPropertyW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(property), uintptr(unsafe.Pointer(propertyBuffer)), uintptr(propertyBufferSize))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetupDiSetSelectedDevice(deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiSetSelectedDevice.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetupDiSetSelectedDriver(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverInfoData *DrvInfoData) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupDiSetSelectedDriverW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(driverInfoData)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupUninstallOEMInf(infFileName *uint16, flags SUOI, reserved uintptr) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procSetupUninstallOEMInfW.Addr(), uintptr(unsafe.Pointer(infFileName)), uintptr(flags), uintptr(reserved))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc commandLineToArgv(cmd *uint16, argc *int32) (argv **uint16, err error) {\n\tr0, _, e1 := syscall.SyscallN(procCommandLineToArgvW.Addr(), uintptr(unsafe.Pointer(cmd)), uintptr(unsafe.Pointer(argc)))\n\targv = (**uint16)(unsafe.Pointer(r0))\n\tif argv == nil {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc shGetKnownFolderPath(id *KNOWNFOLDERID, flags uint32, token Token, path **uint16) (ret error) {\n\tr0, _, _ := syscall.SyscallN(procSHGetKnownFolderPath.Addr(), uintptr(unsafe.Pointer(id)), uintptr(flags), uintptr(token), uintptr(unsafe.Pointer(path)))\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc ShellExecute(hwnd Handle, verb *uint16, file *uint16, args *uint16, cwd *uint16, showCmd int32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procShellExecuteW.Addr(), uintptr(hwnd), uintptr(unsafe.Pointer(verb)), uintptr(unsafe.Pointer(file)), uintptr(unsafe.Pointer(args)), uintptr(unsafe.Pointer(cwd)), uintptr(showCmd))\n\tif r1 <= 32 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc EnumChildWindows(hwnd HWND, enumFunc uintptr, param unsafe.Pointer) {\n\tsyscall.SyscallN(procEnumChildWindows.Addr(), uintptr(hwnd), uintptr(enumFunc), uintptr(param))\n\treturn\n}\n\nfunc EnumWindows(enumFunc uintptr, param unsafe.Pointer) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procEnumWindows.Addr(), uintptr(enumFunc), uintptr(param))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ExitWindowsEx(flags uint32, reason uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procExitWindowsEx.Addr(), uintptr(flags), uintptr(reason))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetClassName(hwnd HWND, className *uint16, maxCount int32) (copied int32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetClassNameW.Addr(), uintptr(hwnd), uintptr(unsafe.Pointer(className)), uintptr(maxCount))\n\tcopied = int32(r0)\n\tif copied == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetDesktopWindow() (hwnd HWND) {\n\tr0, _, _ := syscall.SyscallN(procGetDesktopWindow.Addr())\n\thwnd = HWND(r0)\n\treturn\n}\n\nfunc GetForegroundWindow() (hwnd HWND) {\n\tr0, _, _ := syscall.SyscallN(procGetForegroundWindow.Addr())\n\thwnd = HWND(r0)\n\treturn\n}\n\nfunc GetGUIThreadInfo(thread uint32, info *GUIThreadInfo) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetGUIThreadInfo.Addr(), uintptr(thread), uintptr(unsafe.Pointer(info)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetKeyboardLayout(tid uint32) (hkl Handle) {\n\tr0, _, _ := syscall.SyscallN(procGetKeyboardLayout.Addr(), uintptr(tid))\n\thkl = Handle(r0)\n\treturn\n}\n\nfunc GetShellWindow() (shellWindow HWND) {\n\tr0, _, _ := syscall.SyscallN(procGetShellWindow.Addr())\n\tshellWindow = HWND(r0)\n\treturn\n}\n\nfunc GetWindowThreadProcessId(hwnd HWND, pid *uint32) (tid uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetWindowThreadProcessId.Addr(), uintptr(hwnd), uintptr(unsafe.Pointer(pid)))\n\ttid = uint32(r0)\n\tif tid == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc IsWindow(hwnd HWND) (isWindow bool) {\n\tr0, _, _ := syscall.SyscallN(procIsWindow.Addr(), uintptr(hwnd))\n\tisWindow = r0 != 0\n\treturn\n}\n\nfunc IsWindowUnicode(hwnd HWND) (isUnicode bool) {\n\tr0, _, _ := syscall.SyscallN(procIsWindowUnicode.Addr(), uintptr(hwnd))\n\tisUnicode = r0 != 0\n\treturn\n}\n\nfunc IsWindowVisible(hwnd HWND) (isVisible bool) {\n\tr0, _, _ := syscall.SyscallN(procIsWindowVisible.Addr(), uintptr(hwnd))\n\tisVisible = r0 != 0\n\treturn\n}\n\nfunc LoadKeyboardLayout(name *uint16, flags uint32) (hkl Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procLoadKeyboardLayoutW.Addr(), uintptr(unsafe.Pointer(name)), uintptr(flags))\n\thkl = Handle(r0)\n\tif hkl == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc MessageBox(hwnd HWND, text *uint16, caption *uint16, boxtype uint32) (ret int32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procMessageBoxW.Addr(), uintptr(hwnd), uintptr(unsafe.Pointer(text)), uintptr(unsafe.Pointer(caption)), uintptr(boxtype))\n\tret = int32(r0)\n\tif ret == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ToUnicodeEx(vkey uint32, scancode uint32, keystate *byte, pwszBuff *uint16, cchBuff int32, flags uint32, hkl Handle) (ret int32) {\n\tr0, _, _ := syscall.SyscallN(procToUnicodeEx.Addr(), uintptr(vkey), uintptr(scancode), uintptr(unsafe.Pointer(keystate)), uintptr(unsafe.Pointer(pwszBuff)), uintptr(cchBuff), uintptr(flags), uintptr(hkl))\n\tret = int32(r0)\n\treturn\n}\n\nfunc UnloadKeyboardLayout(hkl Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procUnloadKeyboardLayout.Addr(), uintptr(hkl))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateEnvironmentBlock(block **uint16, token Token, inheritExisting bool) (err error) {\n\tvar _p0 uint32\n\tif inheritExisting {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procCreateEnvironmentBlock.Addr(), uintptr(unsafe.Pointer(block)), uintptr(token), uintptr(_p0))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc DestroyEnvironmentBlock(block *uint16) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procDestroyEnvironmentBlock.Addr(), uintptr(unsafe.Pointer(block)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetUserProfileDirectory(t Token, dir *uint16, dirLen *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetUserProfileDirectoryW.Addr(), uintptr(t), uintptr(unsafe.Pointer(dir)), uintptr(unsafe.Pointer(dirLen)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetFileVersionInfoSize(filename string, zeroHandle *Handle) (bufSize uint32, err error) {\n\tvar _p0 *uint16\n\t_p0, err = syscall.UTF16PtrFromString(filename)\n\tif err != nil {\n\t\treturn\n\t}\n\treturn _GetFileVersionInfoSize(_p0, zeroHandle)\n}\n\nfunc _GetFileVersionInfoSize(filename *uint16, zeroHandle *Handle) (bufSize uint32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procGetFileVersionInfoSizeW.Addr(), uintptr(unsafe.Pointer(filename)), uintptr(unsafe.Pointer(zeroHandle)))\n\tbufSize = uint32(r0)\n\tif bufSize == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetFileVersionInfo(filename string, handle uint32, bufSize uint32, buffer unsafe.Pointer) (err error) {\n\tvar _p0 *uint16\n\t_p0, err = syscall.UTF16PtrFromString(filename)\n\tif err != nil {\n\t\treturn\n\t}\n\treturn _GetFileVersionInfo(_p0, handle, bufSize, buffer)\n}\n\nfunc _GetFileVersionInfo(filename *uint16, handle uint32, bufSize uint32, buffer unsafe.Pointer) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procGetFileVersionInfoW.Addr(), uintptr(unsafe.Pointer(filename)), uintptr(handle), uintptr(bufSize), uintptr(buffer))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc VerQueryValue(block unsafe.Pointer, subBlock string, pointerToBufferPointer unsafe.Pointer, bufSize *uint32) (err error) {\n\tvar _p0 *uint16\n\t_p0, err = syscall.UTF16PtrFromString(subBlock)\n\tif err != nil {\n\t\treturn\n\t}\n\treturn _VerQueryValue(block, _p0, pointerToBufferPointer, bufSize)\n}\n\nfunc _VerQueryValue(block unsafe.Pointer, subBlock *uint16, pointerToBufferPointer unsafe.Pointer, bufSize *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procVerQueryValueW.Addr(), uintptr(block), uintptr(unsafe.Pointer(subBlock)), uintptr(pointerToBufferPointer), uintptr(unsafe.Pointer(bufSize)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc TimeBeginPeriod(period uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(proctimeBeginPeriod.Addr(), uintptr(period))\n\tif r1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc TimeEndPeriod(period uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(proctimeEndPeriod.Addr(), uintptr(period))\n\tif r1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WinVerifyTrustEx(hwnd HWND, actionId *GUID, data *WinTrustData) (ret error) {\n\tr0, _, _ := syscall.SyscallN(procWinVerifyTrustEx.Addr(), uintptr(hwnd), uintptr(unsafe.Pointer(actionId)), uintptr(unsafe.Pointer(data)))\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc FreeAddrInfoW(addrinfo *AddrinfoW) {\n\tsyscall.SyscallN(procFreeAddrInfoW.Addr(), uintptr(unsafe.Pointer(addrinfo)))\n\treturn\n}\n\nfunc GetAddrInfoW(nodename *uint16, servicename *uint16, hints *AddrinfoW, result **AddrinfoW) (sockerr error) {\n\tr0, _, _ := syscall.SyscallN(procGetAddrInfoW.Addr(), uintptr(unsafe.Pointer(nodename)), uintptr(unsafe.Pointer(servicename)), uintptr(unsafe.Pointer(hints)), uintptr(unsafe.Pointer(result)))\n\tif r0 != 0 {\n\t\tsockerr = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc WSACleanup() (err error) {\n\tr1, _, e1 := syscall.SyscallN(procWSACleanup.Addr())\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WSADuplicateSocket(s Handle, processID uint32, info *WSAProtocolInfo) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procWSADuplicateSocketW.Addr(), uintptr(s), uintptr(processID), uintptr(unsafe.Pointer(info)))\n\tif r1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WSAEnumProtocols(protocols *int32, protocolBuffer *WSAProtocolInfo, bufferLength *uint32) (n int32, err error) {\n\tr0, _, e1 := syscall.SyscallN(procWSAEnumProtocolsW.Addr(), uintptr(unsafe.Pointer(protocols)), uintptr(unsafe.Pointer(protocolBuffer)), uintptr(unsafe.Pointer(bufferLength)))\n\tn = int32(r0)\n\tif n == -1 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WSAGetOverlappedResult(h Handle, o *Overlapped, bytes *uint32, wait bool, flags *uint32) (err error) {\n\tvar _p0 uint32\n\tif wait {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.SyscallN(procWSAGetOverlappedResult.Addr(), uintptr(h), uintptr(unsafe.Pointer(o)), uintptr(unsafe.Pointer(bytes)), uintptr(_p0), uintptr(unsafe.Pointer(flags)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WSAIoctl(s Handle, iocc uint32, inbuf *byte, cbif uint32, outbuf *byte, cbob uint32, cbbr *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procWSAIoctl.Addr(), uintptr(s), uintptr(iocc), uintptr(unsafe.Pointer(inbuf)), uintptr(cbif), uintptr(unsafe.Pointer(outbuf)), uintptr(cbob), uintptr(unsafe.Pointer(cbbr)), uintptr(unsafe.Pointer(overlapped)), uintptr(completionRoutine))\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WSALookupServiceBegin(querySet *WSAQUERYSET, flags uint32, handle *Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procWSALookupServiceBeginW.Addr(), uintptr(unsafe.Pointer(querySet)), uintptr(flags), uintptr(unsafe.Pointer(handle)))\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WSALookupServiceEnd(handle Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procWSALookupServiceEnd.Addr(), uintptr(handle))\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WSALookupServiceNext(handle Handle, flags uint32, size *int32, querySet *WSAQUERYSET) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procWSALookupServiceNextW.Addr(), uintptr(handle), uintptr(flags), uintptr(unsafe.Pointer(size)), uintptr(unsafe.Pointer(querySet)))\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WSARecv(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, overlapped *Overlapped, croutine *byte) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procWSARecv.Addr(), uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)))\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WSARecvFrom(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, from *RawSockaddrAny, fromlen *int32, overlapped *Overlapped, croutine *byte) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procWSARecvFrom.Addr(), uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)))\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WSASend(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, overlapped *Overlapped, croutine *byte) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procWSASend.Addr(), uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(sent)), uintptr(flags), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)))\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WSASendTo(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, to *RawSockaddrAny, tolen int32, overlapped *Overlapped, croutine *byte) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procWSASendTo.Addr(), uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(sent)), uintptr(flags), uintptr(unsafe.Pointer(to)), uintptr(tolen), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)))\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WSASocket(af int32, typ int32, protocol int32, protoInfo *WSAProtocolInfo, group uint32, flags uint32) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procWSASocketW.Addr(), uintptr(af), uintptr(typ), uintptr(protocol), uintptr(unsafe.Pointer(protoInfo)), uintptr(group), uintptr(flags))\n\thandle = Handle(r0)\n\tif handle == InvalidHandle {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WSAStartup(verreq uint32, data *WSAData) (sockerr error) {\n\tr0, _, _ := syscall.SyscallN(procWSAStartup.Addr(), uintptr(verreq), uintptr(unsafe.Pointer(data)))\n\tif r0 != 0 {\n\t\tsockerr = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc bind(s Handle, name unsafe.Pointer, namelen int32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procbind.Addr(), uintptr(s), uintptr(name), uintptr(namelen))\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc Closesocket(s Handle) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procclosesocket.Addr(), uintptr(s))\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc connect(s Handle, name unsafe.Pointer, namelen int32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procconnect.Addr(), uintptr(s), uintptr(name), uintptr(namelen))\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetHostByName(name string) (h *Hostent, err error) {\n\tvar _p0 *byte\n\t_p0, err = syscall.BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\treturn _GetHostByName(_p0)\n}\n\nfunc _GetHostByName(name *byte) (h *Hostent, err error) {\n\tr0, _, e1 := syscall.SyscallN(procgethostbyname.Addr(), uintptr(unsafe.Pointer(name)))\n\th = (*Hostent)(unsafe.Pointer(r0))\n\tif h == nil {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc getpeername(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procgetpeername.Addr(), uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetProtoByName(name string) (p *Protoent, err error) {\n\tvar _p0 *byte\n\t_p0, err = syscall.BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\treturn _GetProtoByName(_p0)\n}\n\nfunc _GetProtoByName(name *byte) (p *Protoent, err error) {\n\tr0, _, e1 := syscall.SyscallN(procgetprotobyname.Addr(), uintptr(unsafe.Pointer(name)))\n\tp = (*Protoent)(unsafe.Pointer(r0))\n\tif p == nil {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetServByName(name string, proto string) (s *Servent, err error) {\n\tvar _p0 *byte\n\t_p0, err = syscall.BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = syscall.BytePtrFromString(proto)\n\tif err != nil {\n\t\treturn\n\t}\n\treturn _GetServByName(_p0, _p1)\n}\n\nfunc _GetServByName(name *byte, proto *byte) (s *Servent, err error) {\n\tr0, _, e1 := syscall.SyscallN(procgetservbyname.Addr(), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(proto)))\n\ts = (*Servent)(unsafe.Pointer(r0))\n\tif s == nil {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc getsockname(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procgetsockname.Addr(), uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc Getsockopt(s Handle, level int32, optname int32, optval *byte, optlen *int32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procgetsockopt.Addr(), uintptr(s), uintptr(level), uintptr(optname), uintptr(unsafe.Pointer(optval)), uintptr(unsafe.Pointer(optlen)))\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc listen(s Handle, backlog int32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(proclisten.Addr(), uintptr(s), uintptr(backlog))\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc Ntohs(netshort uint16) (u uint16) {\n\tr0, _, _ := syscall.SyscallN(procntohs.Addr(), uintptr(netshort))\n\tu = uint16(r0)\n\treturn\n}\n\nfunc recvfrom(s Handle, buf []byte, flags int32, from *RawSockaddrAny, fromlen *int32) (n int32, err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tr0, _, e1 := syscall.SyscallN(procrecvfrom.Addr(), uintptr(s), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int32(r0)\n\tif n == -1 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc sendto(s Handle, buf []byte, flags int32, to unsafe.Pointer, tolen int32) (err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tr1, _, e1 := syscall.SyscallN(procsendto.Addr(), uintptr(s), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(tolen))\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc Setsockopt(s Handle, level int32, optname int32, optval *byte, optlen int32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procsetsockopt.Addr(), uintptr(s), uintptr(level), uintptr(optname), uintptr(unsafe.Pointer(optval)), uintptr(optlen))\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc shutdown(s Handle, how int32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procshutdown.Addr(), uintptr(s), uintptr(how))\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc socket(af int32, typ int32, protocol int32) (handle Handle, err error) {\n\tr0, _, e1 := syscall.SyscallN(procsocket.Addr(), uintptr(af), uintptr(typ), uintptr(protocol))\n\thandle = Handle(r0)\n\tif handle == InvalidHandle {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WTSEnumerateSessions(handle Handle, reserved uint32, version uint32, sessions **WTS_SESSION_INFO, count *uint32) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procWTSEnumerateSessionsW.Addr(), uintptr(handle), uintptr(reserved), uintptr(version), uintptr(unsafe.Pointer(sessions)), uintptr(unsafe.Pointer(count)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WTSFreeMemory(ptr uintptr) {\n\tsyscall.SyscallN(procWTSFreeMemory.Addr(), uintptr(ptr))\n\treturn\n}\n\nfunc WTSQueryUserToken(session uint32, token *Token) (err error) {\n\tr1, _, e1 := syscall.SyscallN(procWTSQueryUserToken.Addr(), uintptr(session), uintptr(unsafe.Pointer(token)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/google.golang.org/genproto/googleapis/rpc/LICENSE",
    "content": "\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "vendor/google.golang.org/genproto/googleapis/rpc/status/status.pb.go",
    "content": "// Copyright 2022 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.26.0\n// \tprotoc        v3.21.9\n// source: google/rpc/status.proto\n\npackage status\n\nimport (\n\treflect \"reflect\"\n\tsync \"sync\"\n\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tanypb \"google.golang.org/protobuf/types/known/anypb\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// The `Status` type defines a logical error model that is suitable for\n// different programming environments, including REST APIs and RPC APIs. It is\n// used by [gRPC](https://github.com/grpc). Each `Status` message contains\n// three pieces of data: error code, error message, and error details.\n//\n// You can find out more about this error model and how to work with it in the\n// [API Design Guide](https://cloud.google.com/apis/design/errors).\ntype Status struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// The status code, which should be an enum value of\n\t// [google.rpc.Code][google.rpc.Code].\n\tCode int32 `protobuf:\"varint,1,opt,name=code,proto3\" json:\"code,omitempty\"`\n\t// A developer-facing error message, which should be in English. Any\n\t// user-facing error message should be localized and sent in the\n\t// [google.rpc.Status.details][google.rpc.Status.details] field, or localized\n\t// by the client.\n\tMessage string `protobuf:\"bytes,2,opt,name=message,proto3\" json:\"message,omitempty\"`\n\t// A list of messages that carry the error details.  There is a common set of\n\t// message types for APIs to use.\n\tDetails []*anypb.Any `protobuf:\"bytes,3,rep,name=details,proto3\" json:\"details,omitempty\"`\n}\n\nfunc (x *Status) Reset() {\n\t*x = Status{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_rpc_status_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Status) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Status) ProtoMessage() {}\n\nfunc (x *Status) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_rpc_status_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Status.ProtoReflect.Descriptor instead.\nfunc (*Status) Descriptor() ([]byte, []int) {\n\treturn file_google_rpc_status_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *Status) GetCode() int32 {\n\tif x != nil {\n\t\treturn x.Code\n\t}\n\treturn 0\n}\n\nfunc (x *Status) GetMessage() string {\n\tif x != nil {\n\t\treturn x.Message\n\t}\n\treturn \"\"\n}\n\nfunc (x *Status) GetDetails() []*anypb.Any {\n\tif x != nil {\n\t\treturn x.Details\n\t}\n\treturn nil\n}\n\nvar File_google_rpc_status_proto protoreflect.FileDescriptor\n\nvar file_google_rpc_status_proto_rawDesc = []byte{\n\t0x0a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x73, 0x74, 0x61,\n\t0x74, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x67, 0x6f, 0x6f, 0x67, 0x6c,\n\t0x65, 0x2e, 0x72, 0x70, 0x63, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72,\n\t0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,\n\t0x22, 0x66, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f,\n\t0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18,\n\t0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,\n\t0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2e, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61,\n\t0x69, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67,\n\t0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52,\n\t0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x42, 0x61, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x2e,\n\t0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x42, 0x0b, 0x53, 0x74, 0x61, 0x74,\n\t0x75, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x37, 0x67, 0x6f, 0x6f, 0x67, 0x6c,\n\t0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e,\n\t0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73,\n\t0x2f, 0x72, 0x70, 0x63, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x3b, 0x73, 0x74, 0x61, 0x74,\n\t0x75, 0x73, 0xf8, 0x01, 0x01, 0xa2, 0x02, 0x03, 0x52, 0x50, 0x43, 0x62, 0x06, 0x70, 0x72, 0x6f,\n\t0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_google_rpc_status_proto_rawDescOnce sync.Once\n\tfile_google_rpc_status_proto_rawDescData = file_google_rpc_status_proto_rawDesc\n)\n\nfunc file_google_rpc_status_proto_rawDescGZIP() []byte {\n\tfile_google_rpc_status_proto_rawDescOnce.Do(func() {\n\t\tfile_google_rpc_status_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_rpc_status_proto_rawDescData)\n\t})\n\treturn file_google_rpc_status_proto_rawDescData\n}\n\nvar file_google_rpc_status_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_google_rpc_status_proto_goTypes = []interface{}{\n\t(*Status)(nil),    // 0: google.rpc.Status\n\t(*anypb.Any)(nil), // 1: google.protobuf.Any\n}\nvar file_google_rpc_status_proto_depIdxs = []int32{\n\t1, // 0: google.rpc.Status.details:type_name -> google.protobuf.Any\n\t1, // [1:1] is the sub-list for method output_type\n\t1, // [1:1] is the sub-list for method input_type\n\t1, // [1:1] is the sub-list for extension type_name\n\t1, // [1:1] is the sub-list for extension extendee\n\t0, // [0:1] is the sub-list for field type_name\n}\n\nfunc init() { file_google_rpc_status_proto_init() }\nfunc file_google_rpc_status_proto_init() {\n\tif File_google_rpc_status_proto != nil {\n\t\treturn\n\t}\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_google_rpc_status_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Status); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_google_rpc_status_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_google_rpc_status_proto_goTypes,\n\t\tDependencyIndexes: file_google_rpc_status_proto_depIdxs,\n\t\tMessageInfos:      file_google_rpc_status_proto_msgTypes,\n\t}.Build()\n\tFile_google_rpc_status_proto = out.File\n\tfile_google_rpc_status_proto_rawDesc = nil\n\tfile_google_rpc_status_proto_goTypes = nil\n\tfile_google_rpc_status_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/AUTHORS",
    "content": "Google Inc.\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/LICENSE",
    "content": "\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/NOTICE.txt",
    "content": "Copyright 2014 gRPC authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/attributes/attributes.go",
    "content": "/*\n *\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package attributes defines a generic key/value store used in various gRPC\n// components.\n//\n// # Experimental\n//\n// Notice: This package is EXPERIMENTAL and may be changed or removed in a\n// later release.\npackage attributes\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n)\n\n// Attributes is an immutable struct for storing and retrieving generic\n// key/value pairs.  Keys must be hashable, and users should define their own\n// types for keys.  Values should not be modified after they are added to an\n// Attributes or if they were received from one.  If values implement 'Equal(o\n// interface{}) bool', it will be called by (*Attributes).Equal to determine\n// whether two values with the same key should be considered equal.\ntype Attributes struct {\n\tm map[interface{}]interface{}\n}\n\n// New returns a new Attributes containing the key/value pair.\nfunc New(key, value interface{}) *Attributes {\n\treturn &Attributes{m: map[interface{}]interface{}{key: value}}\n}\n\n// WithValue returns a new Attributes containing the previous keys and values\n// and the new key/value pair.  If the same key appears multiple times, the\n// last value overwrites all previous values for that key.  To remove an\n// existing key, use a nil value.  value should not be modified later.\nfunc (a *Attributes) WithValue(key, value interface{}) *Attributes {\n\tif a == nil {\n\t\treturn New(key, value)\n\t}\n\tn := &Attributes{m: make(map[interface{}]interface{}, len(a.m)+1)}\n\tfor k, v := range a.m {\n\t\tn.m[k] = v\n\t}\n\tn.m[key] = value\n\treturn n\n}\n\n// Value returns the value associated with these attributes for key, or nil if\n// no value is associated with key.  The returned value should not be modified.\nfunc (a *Attributes) Value(key interface{}) interface{} {\n\tif a == nil {\n\t\treturn nil\n\t}\n\treturn a.m[key]\n}\n\n// Equal returns whether a and o are equivalent.  If 'Equal(o interface{})\n// bool' is implemented for a value in the attributes, it is called to\n// determine if the value matches the one stored in the other attributes.  If\n// Equal is not implemented, standard equality is used to determine if the two\n// values are equal. Note that some types (e.g. maps) aren't comparable by\n// default, so they must be wrapped in a struct, or in an alias type, with Equal\n// defined.\nfunc (a *Attributes) Equal(o *Attributes) bool {\n\tif a == nil && o == nil {\n\t\treturn true\n\t}\n\tif a == nil || o == nil {\n\t\treturn false\n\t}\n\tif len(a.m) != len(o.m) {\n\t\treturn false\n\t}\n\tfor k, v := range a.m {\n\t\tov, ok := o.m[k]\n\t\tif !ok {\n\t\t\t// o missing element of a\n\t\t\treturn false\n\t\t}\n\t\tif eq, ok := v.(interface{ Equal(o interface{}) bool }); ok {\n\t\t\tif !eq.Equal(ov) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t} else if v != ov {\n\t\t\t// Fallback to a standard equality check if Value is unimplemented.\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// String prints the attribute map. If any key or values throughout the map\n// implement fmt.Stringer, it calls that method and appends.\nfunc (a *Attributes) String() string {\n\tvar sb strings.Builder\n\tsb.WriteString(\"{\")\n\tfirst := true\n\tfor k, v := range a.m {\n\t\tif !first {\n\t\t\tsb.WriteString(\", \")\n\t\t}\n\t\tsb.WriteString(fmt.Sprintf(\"%q: %q \", str(k), str(v)))\n\t\tfirst = false\n\t}\n\tsb.WriteString(\"}\")\n\treturn sb.String()\n}\n\nfunc str(x interface{}) string {\n\tif v, ok := x.(fmt.Stringer); ok {\n\t\treturn v.String()\n\t} else if v, ok := x.(string); ok {\n\t\treturn v\n\t}\n\treturn fmt.Sprintf(\"<%p>\", x)\n}\n\n// MarshalJSON helps implement the json.Marshaler interface, thereby rendering\n// the Attributes correctly when printing (via pretty.JSON) structs containing\n// Attributes as fields.\n//\n// Is it impossible to unmarshal attributes from a JSON representation and this\n// method is meant only for debugging purposes.\nfunc (a *Attributes) MarshalJSON() ([]byte, error) {\n\treturn []byte(a.String()), nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/codes/code_string.go",
    "content": "/*\n *\n * Copyright 2017 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage codes\n\nimport (\n\t\"strconv\"\n\n\t\"google.golang.org/grpc/internal\"\n)\n\nfunc init() {\n\tinternal.CanonicalString = canonicalString\n}\n\nfunc (c Code) String() string {\n\tswitch c {\n\tcase OK:\n\t\treturn \"OK\"\n\tcase Canceled:\n\t\treturn \"Canceled\"\n\tcase Unknown:\n\t\treturn \"Unknown\"\n\tcase InvalidArgument:\n\t\treturn \"InvalidArgument\"\n\tcase DeadlineExceeded:\n\t\treturn \"DeadlineExceeded\"\n\tcase NotFound:\n\t\treturn \"NotFound\"\n\tcase AlreadyExists:\n\t\treturn \"AlreadyExists\"\n\tcase PermissionDenied:\n\t\treturn \"PermissionDenied\"\n\tcase ResourceExhausted:\n\t\treturn \"ResourceExhausted\"\n\tcase FailedPrecondition:\n\t\treturn \"FailedPrecondition\"\n\tcase Aborted:\n\t\treturn \"Aborted\"\n\tcase OutOfRange:\n\t\treturn \"OutOfRange\"\n\tcase Unimplemented:\n\t\treturn \"Unimplemented\"\n\tcase Internal:\n\t\treturn \"Internal\"\n\tcase Unavailable:\n\t\treturn \"Unavailable\"\n\tcase DataLoss:\n\t\treturn \"DataLoss\"\n\tcase Unauthenticated:\n\t\treturn \"Unauthenticated\"\n\tdefault:\n\t\treturn \"Code(\" + strconv.FormatInt(int64(c), 10) + \")\"\n\t}\n}\n\nfunc canonicalString(c Code) string {\n\tswitch c {\n\tcase OK:\n\t\treturn \"OK\"\n\tcase Canceled:\n\t\treturn \"CANCELLED\"\n\tcase Unknown:\n\t\treturn \"UNKNOWN\"\n\tcase InvalidArgument:\n\t\treturn \"INVALID_ARGUMENT\"\n\tcase DeadlineExceeded:\n\t\treturn \"DEADLINE_EXCEEDED\"\n\tcase NotFound:\n\t\treturn \"NOT_FOUND\"\n\tcase AlreadyExists:\n\t\treturn \"ALREADY_EXISTS\"\n\tcase PermissionDenied:\n\t\treturn \"PERMISSION_DENIED\"\n\tcase ResourceExhausted:\n\t\treturn \"RESOURCE_EXHAUSTED\"\n\tcase FailedPrecondition:\n\t\treturn \"FAILED_PRECONDITION\"\n\tcase Aborted:\n\t\treturn \"ABORTED\"\n\tcase OutOfRange:\n\t\treturn \"OUT_OF_RANGE\"\n\tcase Unimplemented:\n\t\treturn \"UNIMPLEMENTED\"\n\tcase Internal:\n\t\treturn \"INTERNAL\"\n\tcase Unavailable:\n\t\treturn \"UNAVAILABLE\"\n\tcase DataLoss:\n\t\treturn \"DATA_LOSS\"\n\tcase Unauthenticated:\n\t\treturn \"UNAUTHENTICATED\"\n\tdefault:\n\t\treturn \"CODE(\" + strconv.FormatInt(int64(c), 10) + \")\"\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/codes/codes.go",
    "content": "/*\n *\n * Copyright 2014 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package codes defines the canonical error codes used by gRPC. It is\n// consistent across various languages.\npackage codes // import \"google.golang.org/grpc/codes\"\n\nimport (\n\t\"fmt\"\n\t\"strconv\"\n)\n\n// A Code is an unsigned 32-bit error code as defined in the gRPC spec.\ntype Code uint32\n\nconst (\n\t// OK is returned on success.\n\tOK Code = 0\n\n\t// Canceled indicates the operation was canceled (typically by the caller).\n\t//\n\t// The gRPC framework will generate this error code when cancellation\n\t// is requested.\n\tCanceled Code = 1\n\n\t// Unknown error. An example of where this error may be returned is\n\t// if a Status value received from another address space belongs to\n\t// an error-space that is not known in this address space. Also\n\t// errors raised by APIs that do not return enough error information\n\t// may be converted to this error.\n\t//\n\t// The gRPC framework will generate this error code in the above two\n\t// mentioned cases.\n\tUnknown Code = 2\n\n\t// InvalidArgument indicates client specified an invalid argument.\n\t// Note that this differs from FailedPrecondition. It indicates arguments\n\t// that are problematic regardless of the state of the system\n\t// (e.g., a malformed file name).\n\t//\n\t// This error code will not be generated by the gRPC framework.\n\tInvalidArgument Code = 3\n\n\t// DeadlineExceeded means operation expired before completion.\n\t// For operations that change the state of the system, this error may be\n\t// returned even if the operation has completed successfully. For\n\t// example, a successful response from a server could have been delayed\n\t// long enough for the deadline to expire.\n\t//\n\t// The gRPC framework will generate this error code when the deadline is\n\t// exceeded.\n\tDeadlineExceeded Code = 4\n\n\t// NotFound means some requested entity (e.g., file or directory) was\n\t// not found.\n\t//\n\t// This error code will not be generated by the gRPC framework.\n\tNotFound Code = 5\n\n\t// AlreadyExists means an attempt to create an entity failed because one\n\t// already exists.\n\t//\n\t// This error code will not be generated by the gRPC framework.\n\tAlreadyExists Code = 6\n\n\t// PermissionDenied indicates the caller does not have permission to\n\t// execute the specified operation. It must not be used for rejections\n\t// caused by exhausting some resource (use ResourceExhausted\n\t// instead for those errors). It must not be\n\t// used if the caller cannot be identified (use Unauthenticated\n\t// instead for those errors).\n\t//\n\t// This error code will not be generated by the gRPC core framework,\n\t// but expect authentication middleware to use it.\n\tPermissionDenied Code = 7\n\n\t// ResourceExhausted indicates some resource has been exhausted, perhaps\n\t// a per-user quota, or perhaps the entire file system is out of space.\n\t//\n\t// This error code will be generated by the gRPC framework in\n\t// out-of-memory and server overload situations, or when a message is\n\t// larger than the configured maximum size.\n\tResourceExhausted Code = 8\n\n\t// FailedPrecondition indicates operation was rejected because the\n\t// system is not in a state required for the operation's execution.\n\t// For example, directory to be deleted may be non-empty, an rmdir\n\t// operation is applied to a non-directory, etc.\n\t//\n\t// A litmus test that may help a service implementor in deciding\n\t// between FailedPrecondition, Aborted, and Unavailable:\n\t//  (a) Use Unavailable if the client can retry just the failing call.\n\t//  (b) Use Aborted if the client should retry at a higher-level\n\t//      (e.g., restarting a read-modify-write sequence).\n\t//  (c) Use FailedPrecondition if the client should not retry until\n\t//      the system state has been explicitly fixed. E.g., if an \"rmdir\"\n\t//      fails because the directory is non-empty, FailedPrecondition\n\t//      should be returned since the client should not retry unless\n\t//      they have first fixed up the directory by deleting files from it.\n\t//  (d) Use FailedPrecondition if the client performs conditional\n\t//      REST Get/Update/Delete on a resource and the resource on the\n\t//      server does not match the condition. E.g., conflicting\n\t//      read-modify-write on the same resource.\n\t//\n\t// This error code will not be generated by the gRPC framework.\n\tFailedPrecondition Code = 9\n\n\t// Aborted indicates the operation was aborted, typically due to a\n\t// concurrency issue like sequencer check failures, transaction aborts,\n\t// etc.\n\t//\n\t// See litmus test above for deciding between FailedPrecondition,\n\t// Aborted, and Unavailable.\n\t//\n\t// This error code will not be generated by the gRPC framework.\n\tAborted Code = 10\n\n\t// OutOfRange means operation was attempted past the valid range.\n\t// E.g., seeking or reading past end of file.\n\t//\n\t// Unlike InvalidArgument, this error indicates a problem that may\n\t// be fixed if the system state changes. For example, a 32-bit file\n\t// system will generate InvalidArgument if asked to read at an\n\t// offset that is not in the range [0,2^32-1], but it will generate\n\t// OutOfRange if asked to read from an offset past the current\n\t// file size.\n\t//\n\t// There is a fair bit of overlap between FailedPrecondition and\n\t// OutOfRange. We recommend using OutOfRange (the more specific\n\t// error) when it applies so that callers who are iterating through\n\t// a space can easily look for an OutOfRange error to detect when\n\t// they are done.\n\t//\n\t// This error code will not be generated by the gRPC framework.\n\tOutOfRange Code = 11\n\n\t// Unimplemented indicates operation is not implemented or not\n\t// supported/enabled in this service.\n\t//\n\t// This error code will be generated by the gRPC framework. Most\n\t// commonly, you will see this error code when a method implementation\n\t// is missing on the server. It can also be generated for unknown\n\t// compression algorithms or a disagreement as to whether an RPC should\n\t// be streaming.\n\tUnimplemented Code = 12\n\n\t// Internal errors. Means some invariants expected by underlying\n\t// system has been broken. If you see one of these errors,\n\t// something is very broken.\n\t//\n\t// This error code will be generated by the gRPC framework in several\n\t// internal error conditions.\n\tInternal Code = 13\n\n\t// Unavailable indicates the service is currently unavailable.\n\t// This is a most likely a transient condition and may be corrected\n\t// by retrying with a backoff. Note that it is not always safe to retry\n\t// non-idempotent operations.\n\t//\n\t// See litmus test above for deciding between FailedPrecondition,\n\t// Aborted, and Unavailable.\n\t//\n\t// This error code will be generated by the gRPC framework during\n\t// abrupt shutdown of a server process or network connection.\n\tUnavailable Code = 14\n\n\t// DataLoss indicates unrecoverable data loss or corruption.\n\t//\n\t// This error code will not be generated by the gRPC framework.\n\tDataLoss Code = 15\n\n\t// Unauthenticated indicates the request does not have valid\n\t// authentication credentials for the operation.\n\t//\n\t// The gRPC framework will generate this error code when the\n\t// authentication metadata is invalid or a Credentials callback fails,\n\t// but also expect authentication middleware to generate it.\n\tUnauthenticated Code = 16\n\n\t_maxCode = 17\n)\n\nvar strToCode = map[string]Code{\n\t`\"OK\"`: OK,\n\t`\"CANCELLED\"`:/* [sic] */ Canceled,\n\t`\"UNKNOWN\"`:             Unknown,\n\t`\"INVALID_ARGUMENT\"`:    InvalidArgument,\n\t`\"DEADLINE_EXCEEDED\"`:   DeadlineExceeded,\n\t`\"NOT_FOUND\"`:           NotFound,\n\t`\"ALREADY_EXISTS\"`:      AlreadyExists,\n\t`\"PERMISSION_DENIED\"`:   PermissionDenied,\n\t`\"RESOURCE_EXHAUSTED\"`:  ResourceExhausted,\n\t`\"FAILED_PRECONDITION\"`: FailedPrecondition,\n\t`\"ABORTED\"`:             Aborted,\n\t`\"OUT_OF_RANGE\"`:        OutOfRange,\n\t`\"UNIMPLEMENTED\"`:       Unimplemented,\n\t`\"INTERNAL\"`:            Internal,\n\t`\"UNAVAILABLE\"`:         Unavailable,\n\t`\"DATA_LOSS\"`:           DataLoss,\n\t`\"UNAUTHENTICATED\"`:     Unauthenticated,\n}\n\n// UnmarshalJSON unmarshals b into the Code.\nfunc (c *Code) UnmarshalJSON(b []byte) error {\n\t// From json.Unmarshaler: By convention, to approximate the behavior of\n\t// Unmarshal itself, Unmarshalers implement UnmarshalJSON([]byte(\"null\")) as\n\t// a no-op.\n\tif string(b) == \"null\" {\n\t\treturn nil\n\t}\n\tif c == nil {\n\t\treturn fmt.Errorf(\"nil receiver passed to UnmarshalJSON\")\n\t}\n\n\tif ci, err := strconv.ParseUint(string(b), 10, 32); err == nil {\n\t\tif ci >= _maxCode {\n\t\t\treturn fmt.Errorf(\"invalid code: %q\", ci)\n\t\t}\n\n\t\t*c = Code(ci)\n\t\treturn nil\n\t}\n\n\tif jc, ok := strToCode[string(b)]; ok {\n\t\t*c = jc\n\t\treturn nil\n\t}\n\treturn fmt.Errorf(\"invalid code: %q\", string(b))\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/connectivity/connectivity.go",
    "content": "/*\n *\n * Copyright 2017 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package connectivity defines connectivity semantics.\n// For details, see https://github.com/grpc/grpc/blob/master/doc/connectivity-semantics-and-api.md.\npackage connectivity\n\nimport (\n\t\"google.golang.org/grpc/grpclog\"\n)\n\nvar logger = grpclog.Component(\"core\")\n\n// State indicates the state of connectivity.\n// It can be the state of a ClientConn or SubConn.\ntype State int\n\nfunc (s State) String() string {\n\tswitch s {\n\tcase Idle:\n\t\treturn \"IDLE\"\n\tcase Connecting:\n\t\treturn \"CONNECTING\"\n\tcase Ready:\n\t\treturn \"READY\"\n\tcase TransientFailure:\n\t\treturn \"TRANSIENT_FAILURE\"\n\tcase Shutdown:\n\t\treturn \"SHUTDOWN\"\n\tdefault:\n\t\tlogger.Errorf(\"unknown connectivity state: %d\", s)\n\t\treturn \"INVALID_STATE\"\n\t}\n}\n\nconst (\n\t// Idle indicates the ClientConn is idle.\n\tIdle State = iota\n\t// Connecting indicates the ClientConn is connecting.\n\tConnecting\n\t// Ready indicates the ClientConn is ready for work.\n\tReady\n\t// TransientFailure indicates the ClientConn has seen a failure but expects to recover.\n\tTransientFailure\n\t// Shutdown indicates the ClientConn has started shutting down.\n\tShutdown\n)\n\n// ServingMode indicates the current mode of operation of the server.\n//\n// Only xDS enabled gRPC servers currently report their serving mode.\ntype ServingMode int\n\nconst (\n\t// ServingModeStarting indicates that the server is starting up.\n\tServingModeStarting ServingMode = iota\n\t// ServingModeServing indicates that the server contains all required\n\t// configuration and is serving RPCs.\n\tServingModeServing\n\t// ServingModeNotServing indicates that the server is not accepting new\n\t// connections. Existing connections will be closed gracefully, allowing\n\t// in-progress RPCs to complete. A server enters this mode when it does not\n\t// contain the required configuration to serve RPCs.\n\tServingModeNotServing\n)\n\nfunc (s ServingMode) String() string {\n\tswitch s {\n\tcase ServingModeStarting:\n\t\treturn \"STARTING\"\n\tcase ServingModeServing:\n\t\treturn \"SERVING\"\n\tcase ServingModeNotServing:\n\t\treturn \"NOT_SERVING\"\n\tdefault:\n\t\tlogger.Errorf(\"unknown serving mode: %d\", s)\n\t\treturn \"INVALID_MODE\"\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/credentials/credentials.go",
    "content": "/*\n *\n * Copyright 2014 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package credentials implements various credentials supported by gRPC library,\n// which encapsulate all the state needed by a client to authenticate with a\n// server and make various assertions, e.g., about the client's identity, role,\n// or whether it is authorized to make a particular call.\npackage credentials // import \"google.golang.org/grpc/credentials\"\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\n\t\"github.com/golang/protobuf/proto\"\n\t\"google.golang.org/grpc/attributes\"\n\ticredentials \"google.golang.org/grpc/internal/credentials\"\n)\n\n// PerRPCCredentials defines the common interface for the credentials which need to\n// attach security information to every RPC (e.g., oauth2).\ntype PerRPCCredentials interface {\n\t// GetRequestMetadata gets the current request metadata, refreshing tokens\n\t// if required. This should be called by the transport layer on each\n\t// request, and the data should be populated in headers or other\n\t// context. If a status code is returned, it will be used as the status for\n\t// the RPC (restricted to an allowable set of codes as defined by gRFC\n\t// A54). uri is the URI of the entry point for the request.  When supported\n\t// by the underlying implementation, ctx can be used for timeout and\n\t// cancellation. Additionally, RequestInfo data will be available via ctx\n\t// to this call.  TODO(zhaoq): Define the set of the qualified keys instead\n\t// of leaving it as an arbitrary string.\n\tGetRequestMetadata(ctx context.Context, uri ...string) (map[string]string, error)\n\t// RequireTransportSecurity indicates whether the credentials requires\n\t// transport security.\n\tRequireTransportSecurity() bool\n}\n\n// SecurityLevel defines the protection level on an established connection.\n//\n// This API is experimental.\ntype SecurityLevel int\n\nconst (\n\t// InvalidSecurityLevel indicates an invalid security level.\n\t// The zero SecurityLevel value is invalid for backward compatibility.\n\tInvalidSecurityLevel SecurityLevel = iota\n\t// NoSecurity indicates a connection is insecure.\n\tNoSecurity\n\t// IntegrityOnly indicates a connection only provides integrity protection.\n\tIntegrityOnly\n\t// PrivacyAndIntegrity indicates a connection provides both privacy and integrity protection.\n\tPrivacyAndIntegrity\n)\n\n// String returns SecurityLevel in a string format.\nfunc (s SecurityLevel) String() string {\n\tswitch s {\n\tcase NoSecurity:\n\t\treturn \"NoSecurity\"\n\tcase IntegrityOnly:\n\t\treturn \"IntegrityOnly\"\n\tcase PrivacyAndIntegrity:\n\t\treturn \"PrivacyAndIntegrity\"\n\t}\n\treturn fmt.Sprintf(\"invalid SecurityLevel: %v\", int(s))\n}\n\n// CommonAuthInfo contains authenticated information common to AuthInfo implementations.\n// It should be embedded in a struct implementing AuthInfo to provide additional information\n// about the credentials.\n//\n// This API is experimental.\ntype CommonAuthInfo struct {\n\tSecurityLevel SecurityLevel\n}\n\n// GetCommonAuthInfo returns the pointer to CommonAuthInfo struct.\nfunc (c CommonAuthInfo) GetCommonAuthInfo() CommonAuthInfo {\n\treturn c\n}\n\n// ProtocolInfo provides information regarding the gRPC wire protocol version,\n// security protocol, security protocol version in use, server name, etc.\ntype ProtocolInfo struct {\n\t// ProtocolVersion is the gRPC wire protocol version.\n\tProtocolVersion string\n\t// SecurityProtocol is the security protocol in use.\n\tSecurityProtocol string\n\t// SecurityVersion is the security protocol version.  It is a static version string from the\n\t// credentials, not a value that reflects per-connection protocol negotiation.  To retrieve\n\t// details about the credentials used for a connection, use the Peer's AuthInfo field instead.\n\t//\n\t// Deprecated: please use Peer.AuthInfo.\n\tSecurityVersion string\n\t// ServerName is the user-configured server name.\n\tServerName string\n}\n\n// AuthInfo defines the common interface for the auth information the users are interested in.\n// A struct that implements AuthInfo should embed CommonAuthInfo by including additional\n// information about the credentials in it.\ntype AuthInfo interface {\n\tAuthType() string\n}\n\n// ErrConnDispatched indicates that rawConn has been dispatched out of gRPC\n// and the caller should not close rawConn.\nvar ErrConnDispatched = errors.New(\"credentials: rawConn is dispatched out of gRPC\")\n\n// TransportCredentials defines the common interface for all the live gRPC wire\n// protocols and supported transport security protocols (e.g., TLS, SSL).\ntype TransportCredentials interface {\n\t// ClientHandshake does the authentication handshake specified by the\n\t// corresponding authentication protocol on rawConn for clients. It returns\n\t// the authenticated connection and the corresponding auth information\n\t// about the connection.  The auth information should embed CommonAuthInfo\n\t// to return additional information about the credentials. Implementations\n\t// must use the provided context to implement timely cancellation.  gRPC\n\t// will try to reconnect if the error returned is a temporary error\n\t// (io.EOF, context.DeadlineExceeded or err.Temporary() == true).  If the\n\t// returned error is a wrapper error, implementations should make sure that\n\t// the error implements Temporary() to have the correct retry behaviors.\n\t// Additionally, ClientHandshakeInfo data will be available via the context\n\t// passed to this call.\n\t//\n\t// The second argument to this method is the `:authority` header value used\n\t// while creating new streams on this connection after authentication\n\t// succeeds. Implementations must use this as the server name during the\n\t// authentication handshake.\n\t//\n\t// If the returned net.Conn is closed, it MUST close the net.Conn provided.\n\tClientHandshake(context.Context, string, net.Conn) (net.Conn, AuthInfo, error)\n\t// ServerHandshake does the authentication handshake for servers. It returns\n\t// the authenticated connection and the corresponding auth information about\n\t// the connection. The auth information should embed CommonAuthInfo to return additional information\n\t// about the credentials.\n\t//\n\t// If the returned net.Conn is closed, it MUST close the net.Conn provided.\n\tServerHandshake(net.Conn) (net.Conn, AuthInfo, error)\n\t// Info provides the ProtocolInfo of this TransportCredentials.\n\tInfo() ProtocolInfo\n\t// Clone makes a copy of this TransportCredentials.\n\tClone() TransportCredentials\n\t// OverrideServerName specifies the value used for the following:\n\t// - verifying the hostname on the returned certificates\n\t// - as SNI in the client's handshake to support virtual hosting\n\t// - as the value for `:authority` header at stream creation time\n\t//\n\t// Deprecated: use grpc.WithAuthority instead. Will be supported\n\t// throughout 1.x.\n\tOverrideServerName(string) error\n}\n\n// Bundle is a combination of TransportCredentials and PerRPCCredentials.\n//\n// It also contains a mode switching method, so it can be used as a combination\n// of different credential policies.\n//\n// Bundle cannot be used together with individual TransportCredentials.\n// PerRPCCredentials from Bundle will be appended to other PerRPCCredentials.\n//\n// This API is experimental.\ntype Bundle interface {\n\t// TransportCredentials returns the transport credentials from the Bundle.\n\t//\n\t// Implementations must return non-nil transport credentials. If transport\n\t// security is not needed by the Bundle, implementations may choose to\n\t// return insecure.NewCredentials().\n\tTransportCredentials() TransportCredentials\n\n\t// PerRPCCredentials returns the per-RPC credentials from the Bundle.\n\t//\n\t// May be nil if per-RPC credentials are not needed.\n\tPerRPCCredentials() PerRPCCredentials\n\n\t// NewWithMode should make a copy of Bundle, and switch mode. Modifying the\n\t// existing Bundle may cause races.\n\t//\n\t// NewWithMode returns nil if the requested mode is not supported.\n\tNewWithMode(mode string) (Bundle, error)\n}\n\n// RequestInfo contains request data attached to the context passed to GetRequestMetadata calls.\n//\n// This API is experimental.\ntype RequestInfo struct {\n\t// The method passed to Invoke or NewStream for this RPC. (For proto methods, this has the format \"/some.Service/Method\")\n\tMethod string\n\t// AuthInfo contains the information from a security handshake (TransportCredentials.ClientHandshake, TransportCredentials.ServerHandshake)\n\tAuthInfo AuthInfo\n}\n\n// RequestInfoFromContext extracts the RequestInfo from the context if it exists.\n//\n// This API is experimental.\nfunc RequestInfoFromContext(ctx context.Context) (ri RequestInfo, ok bool) {\n\tri, ok = icredentials.RequestInfoFromContext(ctx).(RequestInfo)\n\treturn ri, ok\n}\n\n// ClientHandshakeInfo holds data to be passed to ClientHandshake. This makes\n// it possible to pass arbitrary data to the handshaker from gRPC, resolver,\n// balancer etc. Individual credential implementations control the actual\n// format of the data that they are willing to receive.\n//\n// This API is experimental.\ntype ClientHandshakeInfo struct {\n\t// Attributes contains the attributes for the address. It could be provided\n\t// by the gRPC, resolver, balancer etc.\n\tAttributes *attributes.Attributes\n}\n\n// ClientHandshakeInfoFromContext returns the ClientHandshakeInfo struct stored\n// in ctx.\n//\n// This API is experimental.\nfunc ClientHandshakeInfoFromContext(ctx context.Context) ClientHandshakeInfo {\n\tchi, _ := icredentials.ClientHandshakeInfoFromContext(ctx).(ClientHandshakeInfo)\n\treturn chi\n}\n\n// CheckSecurityLevel checks if a connection's security level is greater than or equal to the specified one.\n// It returns success if 1) the condition is satisified or 2) AuthInfo struct does not implement GetCommonAuthInfo() method\n// or 3) CommonAuthInfo.SecurityLevel has an invalid zero value. For 2) and 3), it is for the purpose of backward-compatibility.\n//\n// This API is experimental.\nfunc CheckSecurityLevel(ai AuthInfo, level SecurityLevel) error {\n\ttype internalInfo interface {\n\t\tGetCommonAuthInfo() CommonAuthInfo\n\t}\n\tif ai == nil {\n\t\treturn errors.New(\"AuthInfo is nil\")\n\t}\n\tif ci, ok := ai.(internalInfo); ok {\n\t\t// CommonAuthInfo.SecurityLevel has an invalid value.\n\t\tif ci.GetCommonAuthInfo().SecurityLevel == InvalidSecurityLevel {\n\t\t\treturn nil\n\t\t}\n\t\tif ci.GetCommonAuthInfo().SecurityLevel < level {\n\t\t\treturn fmt.Errorf(\"requires SecurityLevel %v; connection has %v\", level, ci.GetCommonAuthInfo().SecurityLevel)\n\t\t}\n\t}\n\t// The condition is satisfied or AuthInfo struct does not implement GetCommonAuthInfo() method.\n\treturn nil\n}\n\n// ChannelzSecurityInfo defines the interface that security protocols should implement\n// in order to provide security info to channelz.\n//\n// This API is experimental.\ntype ChannelzSecurityInfo interface {\n\tGetSecurityValue() ChannelzSecurityValue\n}\n\n// ChannelzSecurityValue defines the interface that GetSecurityValue() return value\n// should satisfy. This interface should only be satisfied by *TLSChannelzSecurityValue\n// and *OtherChannelzSecurityValue.\n//\n// This API is experimental.\ntype ChannelzSecurityValue interface {\n\tisChannelzSecurityValue()\n}\n\n// OtherChannelzSecurityValue defines the struct that non-TLS protocol should return\n// from GetSecurityValue(), which contains protocol specific security info. Note\n// the Value field will be sent to users of channelz requesting channel info, and\n// thus sensitive info should better be avoided.\n//\n// This API is experimental.\ntype OtherChannelzSecurityValue struct {\n\tChannelzSecurityValue\n\tName  string\n\tValue proto.Message\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/credentials/tls.go",
    "content": "/*\n *\n * Copyright 2014 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage credentials\n\nimport (\n\t\"context\"\n\t\"crypto/tls\"\n\t\"crypto/x509\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/url\"\n\t\"os\"\n\n\tcredinternal \"google.golang.org/grpc/internal/credentials\"\n)\n\n// TLSInfo contains the auth information for a TLS authenticated connection.\n// It implements the AuthInfo interface.\ntype TLSInfo struct {\n\tState tls.ConnectionState\n\tCommonAuthInfo\n\t// This API is experimental.\n\tSPIFFEID *url.URL\n}\n\n// AuthType returns the type of TLSInfo as a string.\nfunc (t TLSInfo) AuthType() string {\n\treturn \"tls\"\n}\n\n// GetSecurityValue returns security info requested by channelz.\nfunc (t TLSInfo) GetSecurityValue() ChannelzSecurityValue {\n\tv := &TLSChannelzSecurityValue{\n\t\tStandardName: cipherSuiteLookup[t.State.CipherSuite],\n\t}\n\t// Currently there's no way to get LocalCertificate info from tls package.\n\tif len(t.State.PeerCertificates) > 0 {\n\t\tv.RemoteCertificate = t.State.PeerCertificates[0].Raw\n\t}\n\treturn v\n}\n\n// tlsCreds is the credentials required for authenticating a connection using TLS.\ntype tlsCreds struct {\n\t// TLS configuration\n\tconfig *tls.Config\n}\n\nfunc (c tlsCreds) Info() ProtocolInfo {\n\treturn ProtocolInfo{\n\t\tSecurityProtocol: \"tls\",\n\t\tSecurityVersion:  \"1.2\",\n\t\tServerName:       c.config.ServerName,\n\t}\n}\n\nfunc (c *tlsCreds) ClientHandshake(ctx context.Context, authority string, rawConn net.Conn) (_ net.Conn, _ AuthInfo, err error) {\n\t// use local cfg to avoid clobbering ServerName if using multiple endpoints\n\tcfg := credinternal.CloneTLSConfig(c.config)\n\tif cfg.ServerName == \"\" {\n\t\tserverName, _, err := net.SplitHostPort(authority)\n\t\tif err != nil {\n\t\t\t// If the authority had no host port or if the authority cannot be parsed, use it as-is.\n\t\t\tserverName = authority\n\t\t}\n\t\tcfg.ServerName = serverName\n\t}\n\tconn := tls.Client(rawConn, cfg)\n\terrChannel := make(chan error, 1)\n\tgo func() {\n\t\terrChannel <- conn.Handshake()\n\t\tclose(errChannel)\n\t}()\n\tselect {\n\tcase err := <-errChannel:\n\t\tif err != nil {\n\t\t\tconn.Close()\n\t\t\treturn nil, nil, err\n\t\t}\n\tcase <-ctx.Done():\n\t\tconn.Close()\n\t\treturn nil, nil, ctx.Err()\n\t}\n\ttlsInfo := TLSInfo{\n\t\tState: conn.ConnectionState(),\n\t\tCommonAuthInfo: CommonAuthInfo{\n\t\t\tSecurityLevel: PrivacyAndIntegrity,\n\t\t},\n\t}\n\tid := credinternal.SPIFFEIDFromState(conn.ConnectionState())\n\tif id != nil {\n\t\ttlsInfo.SPIFFEID = id\n\t}\n\treturn credinternal.WrapSyscallConn(rawConn, conn), tlsInfo, nil\n}\n\nfunc (c *tlsCreds) ServerHandshake(rawConn net.Conn) (net.Conn, AuthInfo, error) {\n\tconn := tls.Server(rawConn, c.config)\n\tif err := conn.Handshake(); err != nil {\n\t\tconn.Close()\n\t\treturn nil, nil, err\n\t}\n\ttlsInfo := TLSInfo{\n\t\tState: conn.ConnectionState(),\n\t\tCommonAuthInfo: CommonAuthInfo{\n\t\t\tSecurityLevel: PrivacyAndIntegrity,\n\t\t},\n\t}\n\tid := credinternal.SPIFFEIDFromState(conn.ConnectionState())\n\tif id != nil {\n\t\ttlsInfo.SPIFFEID = id\n\t}\n\treturn credinternal.WrapSyscallConn(rawConn, conn), tlsInfo, nil\n}\n\nfunc (c *tlsCreds) Clone() TransportCredentials {\n\treturn NewTLS(c.config)\n}\n\nfunc (c *tlsCreds) OverrideServerName(serverNameOverride string) error {\n\tc.config.ServerName = serverNameOverride\n\treturn nil\n}\n\n// NewTLS uses c to construct a TransportCredentials based on TLS.\nfunc NewTLS(c *tls.Config) TransportCredentials {\n\ttc := &tlsCreds{credinternal.CloneTLSConfig(c)}\n\ttc.config.NextProtos = credinternal.AppendH2ToNextProtos(tc.config.NextProtos)\n\treturn tc\n}\n\n// NewClientTLSFromCert constructs TLS credentials from the provided root\n// certificate authority certificate(s) to validate server connections. If\n// certificates to establish the identity of the client need to be included in\n// the credentials (eg: for mTLS), use NewTLS instead, where a complete\n// tls.Config can be specified.\n// serverNameOverride is for testing only. If set to a non empty string,\n// it will override the virtual host name of authority (e.g. :authority header\n// field) in requests.\nfunc NewClientTLSFromCert(cp *x509.CertPool, serverNameOverride string) TransportCredentials {\n\treturn NewTLS(&tls.Config{ServerName: serverNameOverride, RootCAs: cp})\n}\n\n// NewClientTLSFromFile constructs TLS credentials from the provided root\n// certificate authority certificate file(s) to validate server connections. If\n// certificates to establish the identity of the client need to be included in\n// the credentials (eg: for mTLS), use NewTLS instead, where a complete\n// tls.Config can be specified.\n// serverNameOverride is for testing only. If set to a non empty string,\n// it will override the virtual host name of authority (e.g. :authority header\n// field) in requests.\nfunc NewClientTLSFromFile(certFile, serverNameOverride string) (TransportCredentials, error) {\n\tb, err := os.ReadFile(certFile)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tcp := x509.NewCertPool()\n\tif !cp.AppendCertsFromPEM(b) {\n\t\treturn nil, fmt.Errorf(\"credentials: failed to append certificates\")\n\t}\n\treturn NewTLS(&tls.Config{ServerName: serverNameOverride, RootCAs: cp}), nil\n}\n\n// NewServerTLSFromCert constructs TLS credentials from the input certificate for server.\nfunc NewServerTLSFromCert(cert *tls.Certificate) TransportCredentials {\n\treturn NewTLS(&tls.Config{Certificates: []tls.Certificate{*cert}})\n}\n\n// NewServerTLSFromFile constructs TLS credentials from the input certificate file and key\n// file for server.\nfunc NewServerTLSFromFile(certFile, keyFile string) (TransportCredentials, error) {\n\tcert, err := tls.LoadX509KeyPair(certFile, keyFile)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn NewTLS(&tls.Config{Certificates: []tls.Certificate{cert}}), nil\n}\n\n// TLSChannelzSecurityValue defines the struct that TLS protocol should return\n// from GetSecurityValue(), containing security info like cipher and certificate used.\n//\n// # Experimental\n//\n// Notice: This type is EXPERIMENTAL and may be changed or removed in a\n// later release.\ntype TLSChannelzSecurityValue struct {\n\tChannelzSecurityValue\n\tStandardName      string\n\tLocalCertificate  []byte\n\tRemoteCertificate []byte\n}\n\nvar cipherSuiteLookup = map[uint16]string{\n\ttls.TLS_RSA_WITH_RC4_128_SHA:                \"TLS_RSA_WITH_RC4_128_SHA\",\n\ttls.TLS_RSA_WITH_3DES_EDE_CBC_SHA:           \"TLS_RSA_WITH_3DES_EDE_CBC_SHA\",\n\ttls.TLS_RSA_WITH_AES_128_CBC_SHA:            \"TLS_RSA_WITH_AES_128_CBC_SHA\",\n\ttls.TLS_RSA_WITH_AES_256_CBC_SHA:            \"TLS_RSA_WITH_AES_256_CBC_SHA\",\n\ttls.TLS_RSA_WITH_AES_128_GCM_SHA256:         \"TLS_RSA_WITH_AES_128_GCM_SHA256\",\n\ttls.TLS_RSA_WITH_AES_256_GCM_SHA384:         \"TLS_RSA_WITH_AES_256_GCM_SHA384\",\n\ttls.TLS_ECDHE_ECDSA_WITH_RC4_128_SHA:        \"TLS_ECDHE_ECDSA_WITH_RC4_128_SHA\",\n\ttls.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA:    \"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA\",\n\ttls.TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA:    \"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA\",\n\ttls.TLS_ECDHE_RSA_WITH_RC4_128_SHA:          \"TLS_ECDHE_RSA_WITH_RC4_128_SHA\",\n\ttls.TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA:     \"TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA\",\n\ttls.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA:      \"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA\",\n\ttls.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA:      \"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA\",\n\ttls.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256:   \"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256\",\n\ttls.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256: \"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256\",\n\ttls.TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384:   \"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384\",\n\ttls.TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384: \"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384\",\n\ttls.TLS_FALLBACK_SCSV:                       \"TLS_FALLBACK_SCSV\",\n\ttls.TLS_RSA_WITH_AES_128_CBC_SHA256:         \"TLS_RSA_WITH_AES_128_CBC_SHA256\",\n\ttls.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256: \"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256\",\n\ttls.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256:   \"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256\",\n\ttls.TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305:    \"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305\",\n\ttls.TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305:  \"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305\",\n\ttls.TLS_AES_128_GCM_SHA256:                  \"TLS_AES_128_GCM_SHA256\",\n\ttls.TLS_AES_256_GCM_SHA384:                  \"TLS_AES_256_GCM_SHA384\",\n\ttls.TLS_CHACHA20_POLY1305_SHA256:            \"TLS_CHACHA20_POLY1305_SHA256\",\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/grpclog/component.go",
    "content": "/*\n *\n * Copyright 2020 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage grpclog\n\nimport (\n\t\"fmt\"\n\n\t\"google.golang.org/grpc/internal/grpclog\"\n)\n\n// componentData records the settings for a component.\ntype componentData struct {\n\tname string\n}\n\nvar cache = map[string]*componentData{}\n\nfunc (c *componentData) InfoDepth(depth int, args ...interface{}) {\n\targs = append([]interface{}{\"[\" + string(c.name) + \"]\"}, args...)\n\tgrpclog.InfoDepth(depth+1, args...)\n}\n\nfunc (c *componentData) WarningDepth(depth int, args ...interface{}) {\n\targs = append([]interface{}{\"[\" + string(c.name) + \"]\"}, args...)\n\tgrpclog.WarningDepth(depth+1, args...)\n}\n\nfunc (c *componentData) ErrorDepth(depth int, args ...interface{}) {\n\targs = append([]interface{}{\"[\" + string(c.name) + \"]\"}, args...)\n\tgrpclog.ErrorDepth(depth+1, args...)\n}\n\nfunc (c *componentData) FatalDepth(depth int, args ...interface{}) {\n\targs = append([]interface{}{\"[\" + string(c.name) + \"]\"}, args...)\n\tgrpclog.FatalDepth(depth+1, args...)\n}\n\nfunc (c *componentData) Info(args ...interface{}) {\n\tc.InfoDepth(1, args...)\n}\n\nfunc (c *componentData) Warning(args ...interface{}) {\n\tc.WarningDepth(1, args...)\n}\n\nfunc (c *componentData) Error(args ...interface{}) {\n\tc.ErrorDepth(1, args...)\n}\n\nfunc (c *componentData) Fatal(args ...interface{}) {\n\tc.FatalDepth(1, args...)\n}\n\nfunc (c *componentData) Infof(format string, args ...interface{}) {\n\tc.InfoDepth(1, fmt.Sprintf(format, args...))\n}\n\nfunc (c *componentData) Warningf(format string, args ...interface{}) {\n\tc.WarningDepth(1, fmt.Sprintf(format, args...))\n}\n\nfunc (c *componentData) Errorf(format string, args ...interface{}) {\n\tc.ErrorDepth(1, fmt.Sprintf(format, args...))\n}\n\nfunc (c *componentData) Fatalf(format string, args ...interface{}) {\n\tc.FatalDepth(1, fmt.Sprintf(format, args...))\n}\n\nfunc (c *componentData) Infoln(args ...interface{}) {\n\tc.InfoDepth(1, args...)\n}\n\nfunc (c *componentData) Warningln(args ...interface{}) {\n\tc.WarningDepth(1, args...)\n}\n\nfunc (c *componentData) Errorln(args ...interface{}) {\n\tc.ErrorDepth(1, args...)\n}\n\nfunc (c *componentData) Fatalln(args ...interface{}) {\n\tc.FatalDepth(1, args...)\n}\n\nfunc (c *componentData) V(l int) bool {\n\treturn V(l)\n}\n\n// Component creates a new component and returns it for logging. If a component\n// with the name already exists, nothing will be created and it will be\n// returned. SetLoggerV2 will panic if it is called with a logger created by\n// Component.\nfunc Component(componentName string) DepthLoggerV2 {\n\tif cData, ok := cache[componentName]; ok {\n\t\treturn cData\n\t}\n\tc := &componentData{componentName}\n\tcache[componentName] = c\n\treturn c\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/grpclog/grpclog.go",
    "content": "/*\n *\n * Copyright 2017 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package grpclog defines logging for grpc.\n//\n// All logs in transport and grpclb packages only go to verbose level 2.\n// All logs in other packages in grpc are logged in spite of the verbosity level.\n//\n// In the default logger,\n// severity level can be set by environment variable GRPC_GO_LOG_SEVERITY_LEVEL,\n// verbosity level can be set by GRPC_GO_LOG_VERBOSITY_LEVEL.\npackage grpclog // import \"google.golang.org/grpc/grpclog\"\n\nimport (\n\t\"os\"\n\n\t\"google.golang.org/grpc/internal/grpclog\"\n)\n\nfunc init() {\n\tSetLoggerV2(newLoggerV2())\n}\n\n// V reports whether verbosity level l is at least the requested verbose level.\nfunc V(l int) bool {\n\treturn grpclog.Logger.V(l)\n}\n\n// Info logs to the INFO log.\nfunc Info(args ...interface{}) {\n\tgrpclog.Logger.Info(args...)\n}\n\n// Infof logs to the INFO log. Arguments are handled in the manner of fmt.Printf.\nfunc Infof(format string, args ...interface{}) {\n\tgrpclog.Logger.Infof(format, args...)\n}\n\n// Infoln logs to the INFO log. Arguments are handled in the manner of fmt.Println.\nfunc Infoln(args ...interface{}) {\n\tgrpclog.Logger.Infoln(args...)\n}\n\n// Warning logs to the WARNING log.\nfunc Warning(args ...interface{}) {\n\tgrpclog.Logger.Warning(args...)\n}\n\n// Warningf logs to the WARNING log. Arguments are handled in the manner of fmt.Printf.\nfunc Warningf(format string, args ...interface{}) {\n\tgrpclog.Logger.Warningf(format, args...)\n}\n\n// Warningln logs to the WARNING log. Arguments are handled in the manner of fmt.Println.\nfunc Warningln(args ...interface{}) {\n\tgrpclog.Logger.Warningln(args...)\n}\n\n// Error logs to the ERROR log.\nfunc Error(args ...interface{}) {\n\tgrpclog.Logger.Error(args...)\n}\n\n// Errorf logs to the ERROR log. Arguments are handled in the manner of fmt.Printf.\nfunc Errorf(format string, args ...interface{}) {\n\tgrpclog.Logger.Errorf(format, args...)\n}\n\n// Errorln logs to the ERROR log. Arguments are handled in the manner of fmt.Println.\nfunc Errorln(args ...interface{}) {\n\tgrpclog.Logger.Errorln(args...)\n}\n\n// Fatal logs to the FATAL log. Arguments are handled in the manner of fmt.Print.\n// It calls os.Exit() with exit code 1.\nfunc Fatal(args ...interface{}) {\n\tgrpclog.Logger.Fatal(args...)\n\t// Make sure fatal logs will exit.\n\tos.Exit(1)\n}\n\n// Fatalf logs to the FATAL log. Arguments are handled in the manner of fmt.Printf.\n// It calls os.Exit() with exit code 1.\nfunc Fatalf(format string, args ...interface{}) {\n\tgrpclog.Logger.Fatalf(format, args...)\n\t// Make sure fatal logs will exit.\n\tos.Exit(1)\n}\n\n// Fatalln logs to the FATAL log. Arguments are handled in the manner of fmt.Println.\n// It calle os.Exit()) with exit code 1.\nfunc Fatalln(args ...interface{}) {\n\tgrpclog.Logger.Fatalln(args...)\n\t// Make sure fatal logs will exit.\n\tos.Exit(1)\n}\n\n// Print prints to the logger. Arguments are handled in the manner of fmt.Print.\n//\n// Deprecated: use Info.\nfunc Print(args ...interface{}) {\n\tgrpclog.Logger.Info(args...)\n}\n\n// Printf prints to the logger. Arguments are handled in the manner of fmt.Printf.\n//\n// Deprecated: use Infof.\nfunc Printf(format string, args ...interface{}) {\n\tgrpclog.Logger.Infof(format, args...)\n}\n\n// Println prints to the logger. Arguments are handled in the manner of fmt.Println.\n//\n// Deprecated: use Infoln.\nfunc Println(args ...interface{}) {\n\tgrpclog.Logger.Infoln(args...)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/grpclog/logger.go",
    "content": "/*\n *\n * Copyright 2015 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage grpclog\n\nimport \"google.golang.org/grpc/internal/grpclog\"\n\n// Logger mimics golang's standard Logger as an interface.\n//\n// Deprecated: use LoggerV2.\ntype Logger interface {\n\tFatal(args ...interface{})\n\tFatalf(format string, args ...interface{})\n\tFatalln(args ...interface{})\n\tPrint(args ...interface{})\n\tPrintf(format string, args ...interface{})\n\tPrintln(args ...interface{})\n}\n\n// SetLogger sets the logger that is used in grpc. Call only from\n// init() functions.\n//\n// Deprecated: use SetLoggerV2.\nfunc SetLogger(l Logger) {\n\tgrpclog.Logger = &loggerWrapper{Logger: l}\n}\n\n// loggerWrapper wraps Logger into a LoggerV2.\ntype loggerWrapper struct {\n\tLogger\n}\n\nfunc (g *loggerWrapper) Info(args ...interface{}) {\n\tg.Logger.Print(args...)\n}\n\nfunc (g *loggerWrapper) Infoln(args ...interface{}) {\n\tg.Logger.Println(args...)\n}\n\nfunc (g *loggerWrapper) Infof(format string, args ...interface{}) {\n\tg.Logger.Printf(format, args...)\n}\n\nfunc (g *loggerWrapper) Warning(args ...interface{}) {\n\tg.Logger.Print(args...)\n}\n\nfunc (g *loggerWrapper) Warningln(args ...interface{}) {\n\tg.Logger.Println(args...)\n}\n\nfunc (g *loggerWrapper) Warningf(format string, args ...interface{}) {\n\tg.Logger.Printf(format, args...)\n}\n\nfunc (g *loggerWrapper) Error(args ...interface{}) {\n\tg.Logger.Print(args...)\n}\n\nfunc (g *loggerWrapper) Errorln(args ...interface{}) {\n\tg.Logger.Println(args...)\n}\n\nfunc (g *loggerWrapper) Errorf(format string, args ...interface{}) {\n\tg.Logger.Printf(format, args...)\n}\n\nfunc (g *loggerWrapper) V(l int) bool {\n\t// Returns true for all verbose level.\n\treturn true\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/grpclog/loggerv2.go",
    "content": "/*\n *\n * Copyright 2017 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage grpclog\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n\t\"os\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"google.golang.org/grpc/internal/grpclog\"\n)\n\n// LoggerV2 does underlying logging work for grpclog.\ntype LoggerV2 interface {\n\t// Info logs to INFO log. Arguments are handled in the manner of fmt.Print.\n\tInfo(args ...interface{})\n\t// Infoln logs to INFO log. Arguments are handled in the manner of fmt.Println.\n\tInfoln(args ...interface{})\n\t// Infof logs to INFO log. Arguments are handled in the manner of fmt.Printf.\n\tInfof(format string, args ...interface{})\n\t// Warning logs to WARNING log. Arguments are handled in the manner of fmt.Print.\n\tWarning(args ...interface{})\n\t// Warningln logs to WARNING log. Arguments are handled in the manner of fmt.Println.\n\tWarningln(args ...interface{})\n\t// Warningf logs to WARNING log. Arguments are handled in the manner of fmt.Printf.\n\tWarningf(format string, args ...interface{})\n\t// Error logs to ERROR log. Arguments are handled in the manner of fmt.Print.\n\tError(args ...interface{})\n\t// Errorln logs to ERROR log. Arguments are handled in the manner of fmt.Println.\n\tErrorln(args ...interface{})\n\t// Errorf logs to ERROR log. Arguments are handled in the manner of fmt.Printf.\n\tErrorf(format string, args ...interface{})\n\t// Fatal logs to ERROR log. Arguments are handled in the manner of fmt.Print.\n\t// gRPC ensures that all Fatal logs will exit with os.Exit(1).\n\t// Implementations may also call os.Exit() with a non-zero exit code.\n\tFatal(args ...interface{})\n\t// Fatalln logs to ERROR log. Arguments are handled in the manner of fmt.Println.\n\t// gRPC ensures that all Fatal logs will exit with os.Exit(1).\n\t// Implementations may also call os.Exit() with a non-zero exit code.\n\tFatalln(args ...interface{})\n\t// Fatalf logs to ERROR log. Arguments are handled in the manner of fmt.Printf.\n\t// gRPC ensures that all Fatal logs will exit with os.Exit(1).\n\t// Implementations may also call os.Exit() with a non-zero exit code.\n\tFatalf(format string, args ...interface{})\n\t// V reports whether verbosity level l is at least the requested verbose level.\n\tV(l int) bool\n}\n\n// SetLoggerV2 sets logger that is used in grpc to a V2 logger.\n// Not mutex-protected, should be called before any gRPC functions.\nfunc SetLoggerV2(l LoggerV2) {\n\tif _, ok := l.(*componentData); ok {\n\t\tpanic(\"cannot use component logger as grpclog logger\")\n\t}\n\tgrpclog.Logger = l\n\tgrpclog.DepthLogger, _ = l.(grpclog.DepthLoggerV2)\n}\n\nconst (\n\t// infoLog indicates Info severity.\n\tinfoLog int = iota\n\t// warningLog indicates Warning severity.\n\twarningLog\n\t// errorLog indicates Error severity.\n\terrorLog\n\t// fatalLog indicates Fatal severity.\n\tfatalLog\n)\n\n// severityName contains the string representation of each severity.\nvar severityName = []string{\n\tinfoLog:    \"INFO\",\n\twarningLog: \"WARNING\",\n\terrorLog:   \"ERROR\",\n\tfatalLog:   \"FATAL\",\n}\n\n// loggerT is the default logger used by grpclog.\ntype loggerT struct {\n\tm          []*log.Logger\n\tv          int\n\tjsonFormat bool\n}\n\n// NewLoggerV2 creates a loggerV2 with the provided writers.\n// Fatal logs will be written to errorW, warningW, infoW, followed by exit(1).\n// Error logs will be written to errorW, warningW and infoW.\n// Warning logs will be written to warningW and infoW.\n// Info logs will be written to infoW.\nfunc NewLoggerV2(infoW, warningW, errorW io.Writer) LoggerV2 {\n\treturn newLoggerV2WithConfig(infoW, warningW, errorW, loggerV2Config{})\n}\n\n// NewLoggerV2WithVerbosity creates a loggerV2 with the provided writers and\n// verbosity level.\nfunc NewLoggerV2WithVerbosity(infoW, warningW, errorW io.Writer, v int) LoggerV2 {\n\treturn newLoggerV2WithConfig(infoW, warningW, errorW, loggerV2Config{verbose: v})\n}\n\ntype loggerV2Config struct {\n\tverbose    int\n\tjsonFormat bool\n}\n\nfunc newLoggerV2WithConfig(infoW, warningW, errorW io.Writer, c loggerV2Config) LoggerV2 {\n\tvar m []*log.Logger\n\tflag := log.LstdFlags\n\tif c.jsonFormat {\n\t\tflag = 0\n\t}\n\tm = append(m, log.New(infoW, \"\", flag))\n\tm = append(m, log.New(io.MultiWriter(infoW, warningW), \"\", flag))\n\tew := io.MultiWriter(infoW, warningW, errorW) // ew will be used for error and fatal.\n\tm = append(m, log.New(ew, \"\", flag))\n\tm = append(m, log.New(ew, \"\", flag))\n\treturn &loggerT{m: m, v: c.verbose, jsonFormat: c.jsonFormat}\n}\n\n// newLoggerV2 creates a loggerV2 to be used as default logger.\n// All logs are written to stderr.\nfunc newLoggerV2() LoggerV2 {\n\terrorW := io.Discard\n\twarningW := io.Discard\n\tinfoW := io.Discard\n\n\tlogLevel := os.Getenv(\"GRPC_GO_LOG_SEVERITY_LEVEL\")\n\tswitch logLevel {\n\tcase \"\", \"ERROR\", \"error\": // If env is unset, set level to ERROR.\n\t\terrorW = os.Stderr\n\tcase \"WARNING\", \"warning\":\n\t\twarningW = os.Stderr\n\tcase \"INFO\", \"info\":\n\t\tinfoW = os.Stderr\n\t}\n\n\tvar v int\n\tvLevel := os.Getenv(\"GRPC_GO_LOG_VERBOSITY_LEVEL\")\n\tif vl, err := strconv.Atoi(vLevel); err == nil {\n\t\tv = vl\n\t}\n\n\tjsonFormat := strings.EqualFold(os.Getenv(\"GRPC_GO_LOG_FORMATTER\"), \"json\")\n\n\treturn newLoggerV2WithConfig(infoW, warningW, errorW, loggerV2Config{\n\t\tverbose:    v,\n\t\tjsonFormat: jsonFormat,\n\t})\n}\n\nfunc (g *loggerT) output(severity int, s string) {\n\tsevStr := severityName[severity]\n\tif !g.jsonFormat {\n\t\tg.m[severity].Output(2, fmt.Sprintf(\"%v: %v\", sevStr, s))\n\t\treturn\n\t}\n\t// TODO: we can also include the logging component, but that needs more\n\t// (API) changes.\n\tb, _ := json.Marshal(map[string]string{\n\t\t\"severity\": sevStr,\n\t\t\"message\":  s,\n\t})\n\tg.m[severity].Output(2, string(b))\n}\n\nfunc (g *loggerT) Info(args ...interface{}) {\n\tg.output(infoLog, fmt.Sprint(args...))\n}\n\nfunc (g *loggerT) Infoln(args ...interface{}) {\n\tg.output(infoLog, fmt.Sprintln(args...))\n}\n\nfunc (g *loggerT) Infof(format string, args ...interface{}) {\n\tg.output(infoLog, fmt.Sprintf(format, args...))\n}\n\nfunc (g *loggerT) Warning(args ...interface{}) {\n\tg.output(warningLog, fmt.Sprint(args...))\n}\n\nfunc (g *loggerT) Warningln(args ...interface{}) {\n\tg.output(warningLog, fmt.Sprintln(args...))\n}\n\nfunc (g *loggerT) Warningf(format string, args ...interface{}) {\n\tg.output(warningLog, fmt.Sprintf(format, args...))\n}\n\nfunc (g *loggerT) Error(args ...interface{}) {\n\tg.output(errorLog, fmt.Sprint(args...))\n}\n\nfunc (g *loggerT) Errorln(args ...interface{}) {\n\tg.output(errorLog, fmt.Sprintln(args...))\n}\n\nfunc (g *loggerT) Errorf(format string, args ...interface{}) {\n\tg.output(errorLog, fmt.Sprintf(format, args...))\n}\n\nfunc (g *loggerT) Fatal(args ...interface{}) {\n\tg.output(fatalLog, fmt.Sprint(args...))\n\tos.Exit(1)\n}\n\nfunc (g *loggerT) Fatalln(args ...interface{}) {\n\tg.output(fatalLog, fmt.Sprintln(args...))\n\tos.Exit(1)\n}\n\nfunc (g *loggerT) Fatalf(format string, args ...interface{}) {\n\tg.output(fatalLog, fmt.Sprintf(format, args...))\n\tos.Exit(1)\n}\n\nfunc (g *loggerT) V(l int) bool {\n\treturn l <= g.v\n}\n\n// DepthLoggerV2 logs at a specified call frame. If a LoggerV2 also implements\n// DepthLoggerV2, the below functions will be called with the appropriate stack\n// depth set for trivial functions the logger may ignore.\n//\n// # Experimental\n//\n// Notice: This type is EXPERIMENTAL and may be changed or removed in a\n// later release.\ntype DepthLoggerV2 interface {\n\tLoggerV2\n\t// InfoDepth logs to INFO log at the specified depth. Arguments are handled in the manner of fmt.Println.\n\tInfoDepth(depth int, args ...interface{})\n\t// WarningDepth logs to WARNING log at the specified depth. Arguments are handled in the manner of fmt.Println.\n\tWarningDepth(depth int, args ...interface{})\n\t// ErrorDepth logs to ERROR log at the specified depth. Arguments are handled in the manner of fmt.Println.\n\tErrorDepth(depth int, args ...interface{})\n\t// FatalDepth logs to FATAL log at the specified depth. Arguments are handled in the manner of fmt.Println.\n\tFatalDepth(depth int, args ...interface{})\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/credentials/credentials.go",
    "content": "/*\n * Copyright 2021 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage credentials\n\nimport (\n\t\"context\"\n)\n\n// requestInfoKey is a struct to be used as the key to store RequestInfo in a\n// context.\ntype requestInfoKey struct{}\n\n// NewRequestInfoContext creates a context with ri.\nfunc NewRequestInfoContext(ctx context.Context, ri interface{}) context.Context {\n\treturn context.WithValue(ctx, requestInfoKey{}, ri)\n}\n\n// RequestInfoFromContext extracts the RequestInfo from ctx.\nfunc RequestInfoFromContext(ctx context.Context) interface{} {\n\treturn ctx.Value(requestInfoKey{})\n}\n\n// clientHandshakeInfoKey is a struct used as the key to store\n// ClientHandshakeInfo in a context.\ntype clientHandshakeInfoKey struct{}\n\n// ClientHandshakeInfoFromContext extracts the ClientHandshakeInfo from ctx.\nfunc ClientHandshakeInfoFromContext(ctx context.Context) interface{} {\n\treturn ctx.Value(clientHandshakeInfoKey{})\n}\n\n// NewClientHandshakeInfoContext creates a context with chi.\nfunc NewClientHandshakeInfoContext(ctx context.Context, chi interface{}) context.Context {\n\treturn context.WithValue(ctx, clientHandshakeInfoKey{}, chi)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/credentials/spiffe.go",
    "content": "/*\n *\n * Copyright 2020 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package credentials defines APIs for parsing SPIFFE ID.\n//\n// All APIs in this package are experimental.\npackage credentials\n\nimport (\n\t\"crypto/tls\"\n\t\"crypto/x509\"\n\t\"net/url\"\n\n\t\"google.golang.org/grpc/grpclog\"\n)\n\nvar logger = grpclog.Component(\"credentials\")\n\n// SPIFFEIDFromState parses the SPIFFE ID from State. If the SPIFFE ID format\n// is invalid, return nil with warning.\nfunc SPIFFEIDFromState(state tls.ConnectionState) *url.URL {\n\tif len(state.PeerCertificates) == 0 || len(state.PeerCertificates[0].URIs) == 0 {\n\t\treturn nil\n\t}\n\treturn SPIFFEIDFromCert(state.PeerCertificates[0])\n}\n\n// SPIFFEIDFromCert parses the SPIFFE ID from x509.Certificate. If the SPIFFE\n// ID format is invalid, return nil with warning.\nfunc SPIFFEIDFromCert(cert *x509.Certificate) *url.URL {\n\tif cert == nil || cert.URIs == nil {\n\t\treturn nil\n\t}\n\tvar spiffeID *url.URL\n\tfor _, uri := range cert.URIs {\n\t\tif uri == nil || uri.Scheme != \"spiffe\" || uri.Opaque != \"\" || (uri.User != nil && uri.User.Username() != \"\") {\n\t\t\tcontinue\n\t\t}\n\t\t// From this point, we assume the uri is intended for a SPIFFE ID.\n\t\tif len(uri.String()) > 2048 {\n\t\t\tlogger.Warning(\"invalid SPIFFE ID: total ID length larger than 2048 bytes\")\n\t\t\treturn nil\n\t\t}\n\t\tif len(uri.Host) == 0 || len(uri.Path) == 0 {\n\t\t\tlogger.Warning(\"invalid SPIFFE ID: domain or workload ID is empty\")\n\t\t\treturn nil\n\t\t}\n\t\tif len(uri.Host) > 255 {\n\t\t\tlogger.Warning(\"invalid SPIFFE ID: domain length larger than 255 characters\")\n\t\t\treturn nil\n\t\t}\n\t\t// A valid SPIFFE certificate can only have exactly one URI SAN field.\n\t\tif len(cert.URIs) > 1 {\n\t\t\tlogger.Warning(\"invalid SPIFFE ID: multiple URI SANs\")\n\t\t\treturn nil\n\t\t}\n\t\tspiffeID = uri\n\t}\n\treturn spiffeID\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/credentials/syscallconn.go",
    "content": "/*\n *\n * Copyright 2018 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage credentials\n\nimport (\n\t\"net\"\n\t\"syscall\"\n)\n\ntype sysConn = syscall.Conn\n\n// syscallConn keeps reference of rawConn to support syscall.Conn for channelz.\n// SyscallConn() (the method in interface syscall.Conn) is explicitly\n// implemented on this type,\n//\n// Interface syscall.Conn is implemented by most net.Conn implementations (e.g.\n// TCPConn, UnixConn), but is not part of net.Conn interface. So wrapper conns\n// that embed net.Conn don't implement syscall.Conn. (Side note: tls.Conn\n// doesn't embed net.Conn, so even if syscall.Conn is part of net.Conn, it won't\n// help here).\ntype syscallConn struct {\n\tnet.Conn\n\t// sysConn is a type alias of syscall.Conn. It's necessary because the name\n\t// `Conn` collides with `net.Conn`.\n\tsysConn\n}\n\n// WrapSyscallConn tries to wrap rawConn and newConn into a net.Conn that\n// implements syscall.Conn. rawConn will be used to support syscall, and newConn\n// will be used for read/write.\n//\n// This function returns newConn if rawConn doesn't implement syscall.Conn.\nfunc WrapSyscallConn(rawConn, newConn net.Conn) net.Conn {\n\tsysConn, ok := rawConn.(syscall.Conn)\n\tif !ok {\n\t\treturn newConn\n\t}\n\treturn &syscallConn{\n\t\tConn:    newConn,\n\t\tsysConn: sysConn,\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/credentials/util.go",
    "content": "/*\n *\n * Copyright 2020 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage credentials\n\nimport (\n\t\"crypto/tls\"\n)\n\nconst alpnProtoStrH2 = \"h2\"\n\n// AppendH2ToNextProtos appends h2 to next protos.\nfunc AppendH2ToNextProtos(ps []string) []string {\n\tfor _, p := range ps {\n\t\tif p == alpnProtoStrH2 {\n\t\t\treturn ps\n\t\t}\n\t}\n\tret := make([]string, 0, len(ps)+1)\n\tret = append(ret, ps...)\n\treturn append(ret, alpnProtoStrH2)\n}\n\n// CloneTLSConfig returns a shallow clone of the exported\n// fields of cfg, ignoring the unexported sync.Once, which\n// contains a mutex and must not be copied.\n//\n// If cfg is nil, a new zero tls.Config is returned.\n//\n// TODO: inline this function if possible.\nfunc CloneTLSConfig(cfg *tls.Config) *tls.Config {\n\tif cfg == nil {\n\t\treturn &tls.Config{}\n\t}\n\n\treturn cfg.Clone()\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/grpclog/grpclog.go",
    "content": "/*\n *\n * Copyright 2020 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package grpclog (internal) defines depth logging for grpc.\npackage grpclog\n\nimport (\n\t\"os\"\n)\n\n// Logger is the logger used for the non-depth log functions.\nvar Logger LoggerV2\n\n// DepthLogger is the logger used for the depth log functions.\nvar DepthLogger DepthLoggerV2\n\n// InfoDepth logs to the INFO log at the specified depth.\nfunc InfoDepth(depth int, args ...interface{}) {\n\tif DepthLogger != nil {\n\t\tDepthLogger.InfoDepth(depth, args...)\n\t} else {\n\t\tLogger.Infoln(args...)\n\t}\n}\n\n// WarningDepth logs to the WARNING log at the specified depth.\nfunc WarningDepth(depth int, args ...interface{}) {\n\tif DepthLogger != nil {\n\t\tDepthLogger.WarningDepth(depth, args...)\n\t} else {\n\t\tLogger.Warningln(args...)\n\t}\n}\n\n// ErrorDepth logs to the ERROR log at the specified depth.\nfunc ErrorDepth(depth int, args ...interface{}) {\n\tif DepthLogger != nil {\n\t\tDepthLogger.ErrorDepth(depth, args...)\n\t} else {\n\t\tLogger.Errorln(args...)\n\t}\n}\n\n// FatalDepth logs to the FATAL log at the specified depth.\nfunc FatalDepth(depth int, args ...interface{}) {\n\tif DepthLogger != nil {\n\t\tDepthLogger.FatalDepth(depth, args...)\n\t} else {\n\t\tLogger.Fatalln(args...)\n\t}\n\tos.Exit(1)\n}\n\n// LoggerV2 does underlying logging work for grpclog.\n// This is a copy of the LoggerV2 defined in the external grpclog package. It\n// is defined here to avoid a circular dependency.\ntype LoggerV2 interface {\n\t// Info logs to INFO log. Arguments are handled in the manner of fmt.Print.\n\tInfo(args ...interface{})\n\t// Infoln logs to INFO log. Arguments are handled in the manner of fmt.Println.\n\tInfoln(args ...interface{})\n\t// Infof logs to INFO log. Arguments are handled in the manner of fmt.Printf.\n\tInfof(format string, args ...interface{})\n\t// Warning logs to WARNING log. Arguments are handled in the manner of fmt.Print.\n\tWarning(args ...interface{})\n\t// Warningln logs to WARNING log. Arguments are handled in the manner of fmt.Println.\n\tWarningln(args ...interface{})\n\t// Warningf logs to WARNING log. Arguments are handled in the manner of fmt.Printf.\n\tWarningf(format string, args ...interface{})\n\t// Error logs to ERROR log. Arguments are handled in the manner of fmt.Print.\n\tError(args ...interface{})\n\t// Errorln logs to ERROR log. Arguments are handled in the manner of fmt.Println.\n\tErrorln(args ...interface{})\n\t// Errorf logs to ERROR log. Arguments are handled in the manner of fmt.Printf.\n\tErrorf(format string, args ...interface{})\n\t// Fatal logs to ERROR log. Arguments are handled in the manner of fmt.Print.\n\t// gRPC ensures that all Fatal logs will exit with os.Exit(1).\n\t// Implementations may also call os.Exit() with a non-zero exit code.\n\tFatal(args ...interface{})\n\t// Fatalln logs to ERROR log. Arguments are handled in the manner of fmt.Println.\n\t// gRPC ensures that all Fatal logs will exit with os.Exit(1).\n\t// Implementations may also call os.Exit() with a non-zero exit code.\n\tFatalln(args ...interface{})\n\t// Fatalf logs to ERROR log. Arguments are handled in the manner of fmt.Printf.\n\t// gRPC ensures that all Fatal logs will exit with os.Exit(1).\n\t// Implementations may also call os.Exit() with a non-zero exit code.\n\tFatalf(format string, args ...interface{})\n\t// V reports whether verbosity level l is at least the requested verbose level.\n\tV(l int) bool\n}\n\n// DepthLoggerV2 logs at a specified call frame. If a LoggerV2 also implements\n// DepthLoggerV2, the below functions will be called with the appropriate stack\n// depth set for trivial functions the logger may ignore.\n// This is a copy of the DepthLoggerV2 defined in the external grpclog package.\n// It is defined here to avoid a circular dependency.\n//\n// # Experimental\n//\n// Notice: This type is EXPERIMENTAL and may be changed or removed in a\n// later release.\ntype DepthLoggerV2 interface {\n\t// InfoDepth logs to INFO log at the specified depth. Arguments are handled in the manner of fmt.Println.\n\tInfoDepth(depth int, args ...interface{})\n\t// WarningDepth logs to WARNING log at the specified depth. Arguments are handled in the manner of fmt.Println.\n\tWarningDepth(depth int, args ...interface{})\n\t// ErrorDepth logs to ERROR log at the specified depth. Arguments are handled in the manner of fmt.Println.\n\tErrorDepth(depth int, args ...interface{})\n\t// FatalDepth logs to FATAL log at the specified depth. Arguments are handled in the manner of fmt.Println.\n\tFatalDepth(depth int, args ...interface{})\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/grpclog/prefixLogger.go",
    "content": "/*\n *\n * Copyright 2020 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage grpclog\n\nimport (\n\t\"fmt\"\n)\n\n// PrefixLogger does logging with a prefix.\n//\n// Logging method on a nil logs without any prefix.\ntype PrefixLogger struct {\n\tlogger DepthLoggerV2\n\tprefix string\n}\n\n// Infof does info logging.\nfunc (pl *PrefixLogger) Infof(format string, args ...interface{}) {\n\tif pl != nil {\n\t\t// Handle nil, so the tests can pass in a nil logger.\n\t\tformat = pl.prefix + format\n\t\tpl.logger.InfoDepth(1, fmt.Sprintf(format, args...))\n\t\treturn\n\t}\n\tInfoDepth(1, fmt.Sprintf(format, args...))\n}\n\n// Warningf does warning logging.\nfunc (pl *PrefixLogger) Warningf(format string, args ...interface{}) {\n\tif pl != nil {\n\t\tformat = pl.prefix + format\n\t\tpl.logger.WarningDepth(1, fmt.Sprintf(format, args...))\n\t\treturn\n\t}\n\tWarningDepth(1, fmt.Sprintf(format, args...))\n}\n\n// Errorf does error logging.\nfunc (pl *PrefixLogger) Errorf(format string, args ...interface{}) {\n\tif pl != nil {\n\t\tformat = pl.prefix + format\n\t\tpl.logger.ErrorDepth(1, fmt.Sprintf(format, args...))\n\t\treturn\n\t}\n\tErrorDepth(1, fmt.Sprintf(format, args...))\n}\n\n// Debugf does info logging at verbose level 2.\nfunc (pl *PrefixLogger) Debugf(format string, args ...interface{}) {\n\t// TODO(6044): Refactor interfaces LoggerV2 and DepthLogger, and maybe\n\t// rewrite PrefixLogger a little to ensure that we don't use the global\n\t// `Logger` here, and instead use the `logger` field.\n\tif !Logger.V(2) {\n\t\treturn\n\t}\n\tif pl != nil {\n\t\t// Handle nil, so the tests can pass in a nil logger.\n\t\tformat = pl.prefix + format\n\t\tpl.logger.InfoDepth(1, fmt.Sprintf(format, args...))\n\t\treturn\n\t}\n\tInfoDepth(1, fmt.Sprintf(format, args...))\n\n}\n\n// V reports whether verbosity level l is at least the requested verbose level.\nfunc (pl *PrefixLogger) V(l int) bool {\n\t// TODO(6044): Refactor interfaces LoggerV2 and DepthLogger, and maybe\n\t// rewrite PrefixLogger a little to ensure that we don't use the global\n\t// `Logger` here, and instead use the `logger` field.\n\treturn Logger.V(l)\n}\n\n// NewPrefixLogger creates a prefix logger with the given prefix.\nfunc NewPrefixLogger(logger DepthLoggerV2, prefix string) *PrefixLogger {\n\treturn &PrefixLogger{logger: logger, prefix: prefix}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/internal.go",
    "content": "/*\n * Copyright 2016 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package internal contains gRPC-internal code, to avoid polluting\n// the godoc of the top-level grpc package.  It must not import any grpc\n// symbols to avoid circular dependencies.\npackage internal\n\nimport (\n\t\"context\"\n\t\"time\"\n\n\t\"google.golang.org/grpc/connectivity\"\n\t\"google.golang.org/grpc/serviceconfig\"\n)\n\nvar (\n\t// WithHealthCheckFunc is set by dialoptions.go\n\tWithHealthCheckFunc interface{} // func (HealthChecker) DialOption\n\t// HealthCheckFunc is used to provide client-side LB channel health checking\n\tHealthCheckFunc HealthChecker\n\t// BalancerUnregister is exported by package balancer to unregister a balancer.\n\tBalancerUnregister func(name string)\n\t// KeepaliveMinPingTime is the minimum ping interval.  This must be 10s by\n\t// default, but tests may wish to set it lower for convenience.\n\tKeepaliveMinPingTime = 10 * time.Second\n\t// ParseServiceConfig parses a JSON representation of the service config.\n\tParseServiceConfig interface{} // func(string) *serviceconfig.ParseResult\n\t// EqualServiceConfigForTesting is for testing service config generation and\n\t// parsing. Both a and b should be returned by ParseServiceConfig.\n\t// This function compares the config without rawJSON stripped, in case the\n\t// there's difference in white space.\n\tEqualServiceConfigForTesting func(a, b serviceconfig.Config) bool\n\t// GetCertificateProviderBuilder returns the registered builder for the\n\t// given name. This is set by package certprovider for use from xDS\n\t// bootstrap code while parsing certificate provider configs in the\n\t// bootstrap file.\n\tGetCertificateProviderBuilder interface{} // func(string) certprovider.Builder\n\t// GetXDSHandshakeInfoForTesting returns a pointer to the xds.HandshakeInfo\n\t// stored in the passed in attributes. This is set by\n\t// credentials/xds/xds.go.\n\tGetXDSHandshakeInfoForTesting interface{} // func (*attributes.Attributes) *xds.HandshakeInfo\n\t// GetServerCredentials returns the transport credentials configured on a\n\t// gRPC server. An xDS-enabled server needs to know what type of credentials\n\t// is configured on the underlying gRPC server. This is set by server.go.\n\tGetServerCredentials interface{} // func (*grpc.Server) credentials.TransportCredentials\n\t// CanonicalString returns the canonical string of the code defined here:\n\t// https://github.com/grpc/grpc/blob/master/doc/statuscodes.md.\n\t//\n\t// This is used in the 1.0 release of gcp/observability, and thus must not be\n\t// deleted or changed.\n\tCanonicalString interface{} // func (codes.Code) string\n\t// DrainServerTransports initiates a graceful close of existing connections\n\t// on a gRPC server accepted on the provided listener address. An\n\t// xDS-enabled server invokes this method on a grpc.Server when a particular\n\t// listener moves to \"not-serving\" mode.\n\tDrainServerTransports interface{} // func(*grpc.Server, string)\n\t// AddGlobalServerOptions adds an array of ServerOption that will be\n\t// effective globally for newly created servers. The priority will be: 1.\n\t// user-provided; 2. this method; 3. default values.\n\t//\n\t// This is used in the 1.0 release of gcp/observability, and thus must not be\n\t// deleted or changed.\n\tAddGlobalServerOptions interface{} // func(opt ...ServerOption)\n\t// ClearGlobalServerOptions clears the array of extra ServerOption. This\n\t// method is useful in testing and benchmarking.\n\t//\n\t// This is used in the 1.0 release of gcp/observability, and thus must not be\n\t// deleted or changed.\n\tClearGlobalServerOptions func()\n\t// AddGlobalDialOptions adds an array of DialOption that will be effective\n\t// globally for newly created client channels. The priority will be: 1.\n\t// user-provided; 2. this method; 3. default values.\n\t//\n\t// This is used in the 1.0 release of gcp/observability, and thus must not be\n\t// deleted or changed.\n\tAddGlobalDialOptions interface{} // func(opt ...DialOption)\n\t// DisableGlobalDialOptions returns a DialOption that prevents the\n\t// ClientConn from applying the global DialOptions (set via\n\t// AddGlobalDialOptions).\n\t//\n\t// This is used in the 1.0 release of gcp/observability, and thus must not be\n\t// deleted or changed.\n\tDisableGlobalDialOptions interface{} // func() grpc.DialOption\n\t// ClearGlobalDialOptions clears the array of extra DialOption. This\n\t// method is useful in testing and benchmarking.\n\t//\n\t// This is used in the 1.0 release of gcp/observability, and thus must not be\n\t// deleted or changed.\n\tClearGlobalDialOptions func()\n\t// JoinDialOptions combines the dial options passed as arguments into a\n\t// single dial option.\n\tJoinDialOptions interface{} // func(...grpc.DialOption) grpc.DialOption\n\t// JoinServerOptions combines the server options passed as arguments into a\n\t// single server option.\n\tJoinServerOptions interface{} // func(...grpc.ServerOption) grpc.ServerOption\n\n\t// WithBinaryLogger returns a DialOption that specifies the binary logger\n\t// for a ClientConn.\n\t//\n\t// This is used in the 1.0 release of gcp/observability, and thus must not be\n\t// deleted or changed.\n\tWithBinaryLogger interface{} // func(binarylog.Logger) grpc.DialOption\n\t// BinaryLogger returns a ServerOption that can set the binary logger for a\n\t// server.\n\t//\n\t// This is used in the 1.0 release of gcp/observability, and thus must not be\n\t// deleted or changed.\n\tBinaryLogger interface{} // func(binarylog.Logger) grpc.ServerOption\n\n\t// NewXDSResolverWithConfigForTesting creates a new xds resolver builder using\n\t// the provided xds bootstrap config instead of the global configuration from\n\t// the supported environment variables.  The resolver.Builder is meant to be\n\t// used in conjunction with the grpc.WithResolvers DialOption.\n\t//\n\t// Testing Only\n\t//\n\t// This function should ONLY be used for testing and may not work with some\n\t// other features, including the CSDS service.\n\tNewXDSResolverWithConfigForTesting interface{} // func([]byte) (resolver.Builder, error)\n\n\t// RegisterRLSClusterSpecifierPluginForTesting registers the RLS Cluster\n\t// Specifier Plugin for testing purposes, regardless of the XDSRLS environment\n\t// variable.\n\t//\n\t// TODO: Remove this function once the RLS env var is removed.\n\tRegisterRLSClusterSpecifierPluginForTesting func()\n\n\t// UnregisterRLSClusterSpecifierPluginForTesting unregisters the RLS Cluster\n\t// Specifier Plugin for testing purposes. This is needed because there is no way\n\t// to unregister the RLS Cluster Specifier Plugin after registering it solely\n\t// for testing purposes using RegisterRLSClusterSpecifierPluginForTesting().\n\t//\n\t// TODO: Remove this function once the RLS env var is removed.\n\tUnregisterRLSClusterSpecifierPluginForTesting func()\n\n\t// RegisterRBACHTTPFilterForTesting registers the RBAC HTTP Filter for testing\n\t// purposes, regardless of the RBAC environment variable.\n\t//\n\t// TODO: Remove this function once the RBAC env var is removed.\n\tRegisterRBACHTTPFilterForTesting func()\n\n\t// UnregisterRBACHTTPFilterForTesting unregisters the RBAC HTTP Filter for\n\t// testing purposes. This is needed because there is no way to unregister the\n\t// HTTP Filter after registering it solely for testing purposes using\n\t// RegisterRBACHTTPFilterForTesting().\n\t//\n\t// TODO: Remove this function once the RBAC env var is removed.\n\tUnregisterRBACHTTPFilterForTesting func()\n\n\t// ORCAAllowAnyMinReportingInterval is for examples/orca use ONLY.\n\tORCAAllowAnyMinReportingInterval interface{} // func(so *orca.ServiceOptions)\n)\n\n// HealthChecker defines the signature of the client-side LB channel health checking function.\n//\n// The implementation is expected to create a health checking RPC stream by\n// calling newStream(), watch for the health status of serviceName, and report\n// it's health back by calling setConnectivityState().\n//\n// The health checking protocol is defined at:\n// https://github.com/grpc/grpc/blob/master/doc/health-checking.md\ntype HealthChecker func(ctx context.Context, newStream func(string) (interface{}, error), setConnectivityState func(connectivity.State, error), serviceName string) error\n\nconst (\n\t// CredsBundleModeFallback switches GoogleDefaultCreds to fallback mode.\n\tCredsBundleModeFallback = \"fallback\"\n\t// CredsBundleModeBalancer switches GoogleDefaultCreds to grpclb balancer\n\t// mode.\n\tCredsBundleModeBalancer = \"balancer\"\n\t// CredsBundleModeBackendFromBalancer switches GoogleDefaultCreds to mode\n\t// that supports backend returned by grpclb balancer.\n\tCredsBundleModeBackendFromBalancer = \"backend-from-balancer\"\n)\n\n// RLSLoadBalancingPolicyName is the name of the RLS LB policy.\n//\n// It currently has an experimental suffix which would be removed once\n// end-to-end testing of the policy is completed.\nconst RLSLoadBalancingPolicyName = \"rls_experimental\"\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/status/status.go",
    "content": "/*\n *\n * Copyright 2020 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package status implements errors returned by gRPC.  These errors are\n// serialized and transmitted on the wire between server and client, and allow\n// for additional data to be transmitted via the Details field in the status\n// proto.  gRPC service handlers should return an error created by this\n// package, and gRPC clients should expect a corresponding error to be\n// returned from the RPC call.\n//\n// This package upholds the invariants that a non-nil error may not\n// contain an OK code, and an OK code must result in a nil error.\npackage status\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\n\t\"github.com/golang/protobuf/proto\"\n\t\"github.com/golang/protobuf/ptypes\"\n\tspb \"google.golang.org/genproto/googleapis/rpc/status\"\n\t\"google.golang.org/grpc/codes\"\n)\n\n// Status represents an RPC status code, message, and details.  It is immutable\n// and should be created with New, Newf, or FromProto.\ntype Status struct {\n\ts *spb.Status\n}\n\n// New returns a Status representing c and msg.\nfunc New(c codes.Code, msg string) *Status {\n\treturn &Status{s: &spb.Status{Code: int32(c), Message: msg}}\n}\n\n// Newf returns New(c, fmt.Sprintf(format, a...)).\nfunc Newf(c codes.Code, format string, a ...interface{}) *Status {\n\treturn New(c, fmt.Sprintf(format, a...))\n}\n\n// FromProto returns a Status representing s.\nfunc FromProto(s *spb.Status) *Status {\n\treturn &Status{s: proto.Clone(s).(*spb.Status)}\n}\n\n// Err returns an error representing c and msg.  If c is OK, returns nil.\nfunc Err(c codes.Code, msg string) error {\n\treturn New(c, msg).Err()\n}\n\n// Errorf returns Error(c, fmt.Sprintf(format, a...)).\nfunc Errorf(c codes.Code, format string, a ...interface{}) error {\n\treturn Err(c, fmt.Sprintf(format, a...))\n}\n\n// Code returns the status code contained in s.\nfunc (s *Status) Code() codes.Code {\n\tif s == nil || s.s == nil {\n\t\treturn codes.OK\n\t}\n\treturn codes.Code(s.s.Code)\n}\n\n// Message returns the message contained in s.\nfunc (s *Status) Message() string {\n\tif s == nil || s.s == nil {\n\t\treturn \"\"\n\t}\n\treturn s.s.Message\n}\n\n// Proto returns s's status as an spb.Status proto message.\nfunc (s *Status) Proto() *spb.Status {\n\tif s == nil {\n\t\treturn nil\n\t}\n\treturn proto.Clone(s.s).(*spb.Status)\n}\n\n// Err returns an immutable error representing s; returns nil if s.Code() is OK.\nfunc (s *Status) Err() error {\n\tif s.Code() == codes.OK {\n\t\treturn nil\n\t}\n\treturn &Error{s: s}\n}\n\n// WithDetails returns a new status with the provided details messages appended to the status.\n// If any errors are encountered, it returns nil and the first error encountered.\nfunc (s *Status) WithDetails(details ...proto.Message) (*Status, error) {\n\tif s.Code() == codes.OK {\n\t\treturn nil, errors.New(\"no error details for status with code OK\")\n\t}\n\t// s.Code() != OK implies that s.Proto() != nil.\n\tp := s.Proto()\n\tfor _, detail := range details {\n\t\tany, err := ptypes.MarshalAny(detail)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tp.Details = append(p.Details, any)\n\t}\n\treturn &Status{s: p}, nil\n}\n\n// Details returns a slice of details messages attached to the status.\n// If a detail cannot be decoded, the error is returned in place of the detail.\nfunc (s *Status) Details() []interface{} {\n\tif s == nil || s.s == nil {\n\t\treturn nil\n\t}\n\tdetails := make([]interface{}, 0, len(s.s.Details))\n\tfor _, any := range s.s.Details {\n\t\tdetail := &ptypes.DynamicAny{}\n\t\tif err := ptypes.UnmarshalAny(any, detail); err != nil {\n\t\t\tdetails = append(details, err)\n\t\t\tcontinue\n\t\t}\n\t\tdetails = append(details, detail.Message)\n\t}\n\treturn details\n}\n\nfunc (s *Status) String() string {\n\treturn fmt.Sprintf(\"rpc error: code = %s desc = %s\", s.Code(), s.Message())\n}\n\n// Error wraps a pointer of a status proto. It implements error and Status,\n// and a nil *Error should never be returned by this package.\ntype Error struct {\n\ts *Status\n}\n\nfunc (e *Error) Error() string {\n\treturn e.s.String()\n}\n\n// GRPCStatus returns the Status represented by se.\nfunc (e *Error) GRPCStatus() *Status {\n\treturn e.s\n}\n\n// Is implements future error.Is functionality.\n// A Error is equivalent if the code and message are identical.\nfunc (e *Error) Is(target error) bool {\n\ttse, ok := target.(*Error)\n\tif !ok {\n\t\treturn false\n\t}\n\treturn proto.Equal(e.s.s, tse.s.s)\n}\n\n// IsRestrictedControlPlaneCode returns whether the status includes a code\n// restricted for control plane usage as defined by gRFC A54.\nfunc IsRestrictedControlPlaneCode(s *Status) bool {\n\tswitch s.Code() {\n\tcase codes.InvalidArgument, codes.NotFound, codes.AlreadyExists, codes.FailedPrecondition, codes.Aborted, codes.OutOfRange, codes.DataLoss:\n\t\treturn true\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/xds_handshake_cluster.go",
    "content": "/*\n * Copyright 2021 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage internal\n\nimport (\n\t\"google.golang.org/grpc/attributes\"\n\t\"google.golang.org/grpc/resolver\"\n)\n\n// handshakeClusterNameKey is the type used as the key to store cluster name in\n// the Attributes field of resolver.Address.\ntype handshakeClusterNameKey struct{}\n\n// SetXDSHandshakeClusterName returns a copy of addr in which the Attributes field\n// is updated with the cluster name.\nfunc SetXDSHandshakeClusterName(addr resolver.Address, clusterName string) resolver.Address {\n\taddr.Attributes = addr.Attributes.WithValue(handshakeClusterNameKey{}, clusterName)\n\treturn addr\n}\n\n// GetXDSHandshakeClusterName returns cluster name stored in attr.\nfunc GetXDSHandshakeClusterName(attr *attributes.Attributes) (string, bool) {\n\tv := attr.Value(handshakeClusterNameKey{})\n\tname, ok := v.(string)\n\treturn name, ok\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/resolver/map.go",
    "content": "/*\n *\n * Copyright 2021 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage resolver\n\ntype addressMapEntry struct {\n\taddr  Address\n\tvalue interface{}\n}\n\n// AddressMap is a map of addresses to arbitrary values taking into account\n// Attributes.  BalancerAttributes are ignored, as are Metadata and Type.\n// Multiple accesses may not be performed concurrently.  Must be created via\n// NewAddressMap; do not construct directly.\ntype AddressMap struct {\n\t// The underlying map is keyed by an Address with fields that we don't care\n\t// about being set to their zero values. The only fields that we care about\n\t// are `Addr`, `ServerName` and `Attributes`. Since we need to be able to\n\t// distinguish between addresses with same `Addr` and `ServerName`, but\n\t// different `Attributes`, we cannot store the `Attributes` in the map key.\n\t//\n\t// The comparison operation for structs work as follows:\n\t//  Struct values are comparable if all their fields are comparable. Two\n\t//  struct values are equal if their corresponding non-blank fields are equal.\n\t//\n\t// The value type of the map contains a slice of addresses which match the key\n\t// in their `Addr` and `ServerName` fields and contain the corresponding value\n\t// associated with them.\n\tm map[Address]addressMapEntryList\n}\n\nfunc toMapKey(addr *Address) Address {\n\treturn Address{Addr: addr.Addr, ServerName: addr.ServerName}\n}\n\ntype addressMapEntryList []*addressMapEntry\n\n// NewAddressMap creates a new AddressMap.\nfunc NewAddressMap() *AddressMap {\n\treturn &AddressMap{m: make(map[Address]addressMapEntryList)}\n}\n\n// find returns the index of addr in the addressMapEntry slice, or -1 if not\n// present.\nfunc (l addressMapEntryList) find(addr Address) int {\n\tfor i, entry := range l {\n\t\t// Attributes are the only thing to match on here, since `Addr` and\n\t\t// `ServerName` are already equal.\n\t\tif entry.addr.Attributes.Equal(addr.Attributes) {\n\t\t\treturn i\n\t\t}\n\t}\n\treturn -1\n}\n\n// Get returns the value for the address in the map, if present.\nfunc (a *AddressMap) Get(addr Address) (value interface{}, ok bool) {\n\taddrKey := toMapKey(&addr)\n\tentryList := a.m[addrKey]\n\tif entry := entryList.find(addr); entry != -1 {\n\t\treturn entryList[entry].value, true\n\t}\n\treturn nil, false\n}\n\n// Set updates or adds the value to the address in the map.\nfunc (a *AddressMap) Set(addr Address, value interface{}) {\n\taddrKey := toMapKey(&addr)\n\tentryList := a.m[addrKey]\n\tif entry := entryList.find(addr); entry != -1 {\n\t\tentryList[entry].value = value\n\t\treturn\n\t}\n\ta.m[addrKey] = append(entryList, &addressMapEntry{addr: addr, value: value})\n}\n\n// Delete removes addr from the map.\nfunc (a *AddressMap) Delete(addr Address) {\n\taddrKey := toMapKey(&addr)\n\tentryList := a.m[addrKey]\n\tentry := entryList.find(addr)\n\tif entry == -1 {\n\t\treturn\n\t}\n\tif len(entryList) == 1 {\n\t\tentryList = nil\n\t} else {\n\t\tcopy(entryList[entry:], entryList[entry+1:])\n\t\tentryList = entryList[:len(entryList)-1]\n\t}\n\ta.m[addrKey] = entryList\n}\n\n// Len returns the number of entries in the map.\nfunc (a *AddressMap) Len() int {\n\tret := 0\n\tfor _, entryList := range a.m {\n\t\tret += len(entryList)\n\t}\n\treturn ret\n}\n\n// Keys returns a slice of all current map keys.\nfunc (a *AddressMap) Keys() []Address {\n\tret := make([]Address, 0, a.Len())\n\tfor _, entryList := range a.m {\n\t\tfor _, entry := range entryList {\n\t\t\tret = append(ret, entry.addr)\n\t\t}\n\t}\n\treturn ret\n}\n\n// Values returns a slice of all current map values.\nfunc (a *AddressMap) Values() []interface{} {\n\tret := make([]interface{}, 0, a.Len())\n\tfor _, entryList := range a.m {\n\t\tfor _, entry := range entryList {\n\t\t\tret = append(ret, entry.value)\n\t\t}\n\t}\n\treturn ret\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/resolver/resolver.go",
    "content": "/*\n *\n * Copyright 2017 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package resolver defines APIs for name resolution in gRPC.\n// All APIs in this package are experimental.\npackage resolver\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/url\"\n\t\"strings\"\n\n\t\"google.golang.org/grpc/attributes\"\n\t\"google.golang.org/grpc/credentials\"\n\t\"google.golang.org/grpc/serviceconfig\"\n)\n\nvar (\n\t// m is a map from scheme to resolver builder.\n\tm = make(map[string]Builder)\n\t// defaultScheme is the default scheme to use.\n\tdefaultScheme = \"passthrough\"\n)\n\n// TODO(bar) install dns resolver in init(){}.\n\n// Register registers the resolver builder to the resolver map. b.Scheme will\n// be used as the scheme registered with this builder. The registry is case\n// sensitive, and schemes should not contain any uppercase characters.\n//\n// NOTE: this function must only be called during initialization time (i.e. in\n// an init() function), and is not thread-safe. If multiple Resolvers are\n// registered with the same name, the one registered last will take effect.\nfunc Register(b Builder) {\n\tm[b.Scheme()] = b\n}\n\n// Get returns the resolver builder registered with the given scheme.\n//\n// If no builder is register with the scheme, nil will be returned.\nfunc Get(scheme string) Builder {\n\tif b, ok := m[scheme]; ok {\n\t\treturn b\n\t}\n\treturn nil\n}\n\n// SetDefaultScheme sets the default scheme that will be used. The default\n// default scheme is \"passthrough\".\n//\n// NOTE: this function must only be called during initialization time (i.e. in\n// an init() function), and is not thread-safe. The scheme set last overrides\n// previously set values.\nfunc SetDefaultScheme(scheme string) {\n\tdefaultScheme = scheme\n}\n\n// GetDefaultScheme gets the default scheme that will be used.\nfunc GetDefaultScheme() string {\n\treturn defaultScheme\n}\n\n// AddressType indicates the address type returned by name resolution.\n//\n// Deprecated: use Attributes in Address instead.\ntype AddressType uint8\n\nconst (\n\t// Backend indicates the address is for a backend server.\n\t//\n\t// Deprecated: use Attributes in Address instead.\n\tBackend AddressType = iota\n\t// GRPCLB indicates the address is for a grpclb load balancer.\n\t//\n\t// Deprecated: to select the GRPCLB load balancing policy, use a service\n\t// config with a corresponding loadBalancingConfig.  To supply balancer\n\t// addresses to the GRPCLB load balancing policy, set State.Attributes\n\t// using balancer/grpclb/state.Set.\n\tGRPCLB\n)\n\n// Address represents a server the client connects to.\n//\n// # Experimental\n//\n// Notice: This type is EXPERIMENTAL and may be changed or removed in a\n// later release.\ntype Address struct {\n\t// Addr is the server address on which a connection will be established.\n\tAddr string\n\n\t// ServerName is the name of this address.\n\t// If non-empty, the ServerName is used as the transport certification authority for\n\t// the address, instead of the hostname from the Dial target string. In most cases,\n\t// this should not be set.\n\t//\n\t// If Type is GRPCLB, ServerName should be the name of the remote load\n\t// balancer, not the name of the backend.\n\t//\n\t// WARNING: ServerName must only be populated with trusted values. It\n\t// is insecure to populate it with data from untrusted inputs since untrusted\n\t// values could be used to bypass the authority checks performed by TLS.\n\tServerName string\n\n\t// Attributes contains arbitrary data about this address intended for\n\t// consumption by the SubConn.\n\tAttributes *attributes.Attributes\n\n\t// BalancerAttributes contains arbitrary data about this address intended\n\t// for consumption by the LB policy.  These attributes do not affect SubConn\n\t// creation, connection establishment, handshaking, etc.\n\tBalancerAttributes *attributes.Attributes\n\n\t// Type is the type of this address.\n\t//\n\t// Deprecated: use Attributes instead.\n\tType AddressType\n\n\t// Metadata is the information associated with Addr, which may be used\n\t// to make load balancing decision.\n\t//\n\t// Deprecated: use Attributes instead.\n\tMetadata interface{}\n}\n\n// Equal returns whether a and o are identical.  Metadata is compared directly,\n// not with any recursive introspection.\n//\n// This method compares all fields of the address. When used to tell apart\n// addresses during subchannel creation or connection establishment, it might be\n// more appropriate for the caller to implement custom equality logic.\nfunc (a Address) Equal(o Address) bool {\n\treturn a.Addr == o.Addr && a.ServerName == o.ServerName &&\n\t\ta.Attributes.Equal(o.Attributes) &&\n\t\ta.BalancerAttributes.Equal(o.BalancerAttributes) &&\n\t\ta.Type == o.Type && a.Metadata == o.Metadata\n}\n\n// String returns JSON formatted string representation of the address.\nfunc (a Address) String() string {\n\tvar sb strings.Builder\n\tsb.WriteString(fmt.Sprintf(\"{Addr: %q, \", a.Addr))\n\tsb.WriteString(fmt.Sprintf(\"ServerName: %q, \", a.ServerName))\n\tif a.Attributes != nil {\n\t\tsb.WriteString(fmt.Sprintf(\"Attributes: %v, \", a.Attributes.String()))\n\t}\n\tif a.BalancerAttributes != nil {\n\t\tsb.WriteString(fmt.Sprintf(\"BalancerAttributes: %v\", a.BalancerAttributes.String()))\n\t}\n\tsb.WriteString(\"}\")\n\treturn sb.String()\n}\n\n// BuildOptions includes additional information for the builder to create\n// the resolver.\ntype BuildOptions struct {\n\t// DisableServiceConfig indicates whether a resolver implementation should\n\t// fetch service config data.\n\tDisableServiceConfig bool\n\t// DialCreds is the transport credentials used by the ClientConn for\n\t// communicating with the target gRPC service (set via\n\t// WithTransportCredentials). In cases where a name resolution service\n\t// requires the same credentials, the resolver may use this field. In most\n\t// cases though, it is not appropriate, and this field may be ignored.\n\tDialCreds credentials.TransportCredentials\n\t// CredsBundle is the credentials bundle used by the ClientConn for\n\t// communicating with the target gRPC service (set via\n\t// WithCredentialsBundle). In cases where a name resolution service\n\t// requires the same credentials, the resolver may use this field. In most\n\t// cases though, it is not appropriate, and this field may be ignored.\n\tCredsBundle credentials.Bundle\n\t// Dialer is the custom dialer used by the ClientConn for dialling the\n\t// target gRPC service (set via WithDialer). In cases where a name\n\t// resolution service requires the same dialer, the resolver may use this\n\t// field. In most cases though, it is not appropriate, and this field may\n\t// be ignored.\n\tDialer func(context.Context, string) (net.Conn, error)\n}\n\n// State contains the current Resolver state relevant to the ClientConn.\ntype State struct {\n\t// Addresses is the latest set of resolved addresses for the target.\n\tAddresses []Address\n\n\t// ServiceConfig contains the result from parsing the latest service\n\t// config.  If it is nil, it indicates no service config is present or the\n\t// resolver does not provide service configs.\n\tServiceConfig *serviceconfig.ParseResult\n\n\t// Attributes contains arbitrary data about the resolver intended for\n\t// consumption by the load balancing policy.\n\tAttributes *attributes.Attributes\n}\n\n// ClientConn contains the callbacks for resolver to notify any updates\n// to the gRPC ClientConn.\n//\n// This interface is to be implemented by gRPC. Users should not need a\n// brand new implementation of this interface. For the situations like\n// testing, the new implementation should embed this interface. This allows\n// gRPC to add new methods to this interface.\ntype ClientConn interface {\n\t// UpdateState updates the state of the ClientConn appropriately.\n\t//\n\t// If an error is returned, the resolver should try to resolve the\n\t// target again. The resolver should use a backoff timer to prevent\n\t// overloading the server with requests. If a resolver is certain that\n\t// reresolving will not change the result, e.g. because it is\n\t// a watch-based resolver, returned errors can be ignored.\n\t//\n\t// If the resolved State is the same as the last reported one, calling\n\t// UpdateState can be omitted.\n\tUpdateState(State) error\n\t// ReportError notifies the ClientConn that the Resolver encountered an\n\t// error.  The ClientConn will notify the load balancer and begin calling\n\t// ResolveNow on the Resolver with exponential backoff.\n\tReportError(error)\n\t// NewAddress is called by resolver to notify ClientConn a new list\n\t// of resolved addresses.\n\t// The address list should be the complete list of resolved addresses.\n\t//\n\t// Deprecated: Use UpdateState instead.\n\tNewAddress(addresses []Address)\n\t// NewServiceConfig is called by resolver to notify ClientConn a new\n\t// service config. The service config should be provided as a json string.\n\t//\n\t// Deprecated: Use UpdateState instead.\n\tNewServiceConfig(serviceConfig string)\n\t// ParseServiceConfig parses the provided service config and returns an\n\t// object that provides the parsed config.\n\tParseServiceConfig(serviceConfigJSON string) *serviceconfig.ParseResult\n}\n\n// Target represents a target for gRPC, as specified in:\n// https://github.com/grpc/grpc/blob/master/doc/naming.md.\n// It is parsed from the target string that gets passed into Dial or DialContext\n// by the user. And gRPC passes it to the resolver and the balancer.\n//\n// If the target follows the naming spec, and the parsed scheme is registered\n// with gRPC, we will parse the target string according to the spec. If the\n// target does not contain a scheme or if the parsed scheme is not registered\n// (i.e. no corresponding resolver available to resolve the endpoint), we will\n// apply the default scheme, and will attempt to reparse it.\n//\n// Examples:\n//\n//   - \"dns://some_authority/foo.bar\"\n//     Target{Scheme: \"dns\", Authority: \"some_authority\", Endpoint: \"foo.bar\"}\n//   - \"foo.bar\"\n//     Target{Scheme: resolver.GetDefaultScheme(), Endpoint: \"foo.bar\"}\n//   - \"unknown_scheme://authority/endpoint\"\n//     Target{Scheme: resolver.GetDefaultScheme(), Endpoint: \"unknown_scheme://authority/endpoint\"}\ntype Target struct {\n\t// URL contains the parsed dial target with an optional default scheme added\n\t// to it if the original dial target contained no scheme or contained an\n\t// unregistered scheme. Any query params specified in the original dial\n\t// target can be accessed from here.\n\tURL url.URL\n}\n\n// Endpoint retrieves endpoint without leading \"/\" from either `URL.Path`\n// or `URL.Opaque`. The latter is used when the former is empty.\nfunc (t Target) Endpoint() string {\n\tendpoint := t.URL.Path\n\tif endpoint == \"\" {\n\t\tendpoint = t.URL.Opaque\n\t}\n\t// For targets of the form \"[scheme]://[authority]/endpoint, the endpoint\n\t// value returned from url.Parse() contains a leading \"/\". Although this is\n\t// in accordance with RFC 3986, we do not want to break existing resolver\n\t// implementations which expect the endpoint without the leading \"/\". So, we\n\t// end up stripping the leading \"/\" here. But this will result in an\n\t// incorrect parsing for something like \"unix:///path/to/socket\". Since we\n\t// own the \"unix\" resolver, we can workaround in the unix resolver by using\n\t// the `URL` field.\n\treturn strings.TrimPrefix(endpoint, \"/\")\n}\n\n// Builder creates a resolver that will be used to watch name resolution updates.\ntype Builder interface {\n\t// Build creates a new resolver for the given target.\n\t//\n\t// gRPC dial calls Build synchronously, and fails if the returned error is\n\t// not nil.\n\tBuild(target Target, cc ClientConn, opts BuildOptions) (Resolver, error)\n\t// Scheme returns the scheme supported by this resolver.  Scheme is defined\n\t// at https://github.com/grpc/grpc/blob/master/doc/naming.md.  The returned\n\t// string should not contain uppercase characters, as they will not match\n\t// the parsed target's scheme as defined in RFC 3986.\n\tScheme() string\n}\n\n// ResolveNowOptions includes additional information for ResolveNow.\ntype ResolveNowOptions struct{}\n\n// Resolver watches for the updates on the specified target.\n// Updates include address updates and service config updates.\ntype Resolver interface {\n\t// ResolveNow will be called by gRPC to try to resolve the target name\n\t// again. It's just a hint, resolver can ignore this if it's not necessary.\n\t//\n\t// It could be called multiple times concurrently.\n\tResolveNow(ResolveNowOptions)\n\t// Close closes the resolver.\n\tClose()\n}\n\n// UnregisterForTesting removes the resolver builder with the given scheme from the\n// resolver map.\n// This function is for testing only.\nfunc UnregisterForTesting(scheme string) {\n\tdelete(m, scheme)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/serviceconfig/serviceconfig.go",
    "content": "/*\n *\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package serviceconfig defines types and methods for operating on gRPC\n// service configs.\n//\n// # Experimental\n//\n// Notice: This package is EXPERIMENTAL and may be changed or removed in a\n// later release.\npackage serviceconfig\n\n// Config represents an opaque data structure holding a service config.\ntype Config interface {\n\tisServiceConfig()\n}\n\n// LoadBalancingConfig represents an opaque data structure holding a load\n// balancing config.\ntype LoadBalancingConfig interface {\n\tisLoadBalancingConfig()\n}\n\n// ParseResult contains a service config or an error.  Exactly one must be\n// non-nil.\ntype ParseResult struct {\n\tConfig Config\n\tErr    error\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/status/status.go",
    "content": "/*\n *\n * Copyright 2017 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package status implements errors returned by gRPC.  These errors are\n// serialized and transmitted on the wire between server and client, and allow\n// for additional data to be transmitted via the Details field in the status\n// proto.  gRPC service handlers should return an error created by this\n// package, and gRPC clients should expect a corresponding error to be\n// returned from the RPC call.\n//\n// This package upholds the invariants that a non-nil error may not\n// contain an OK code, and an OK code must result in a nil error.\npackage status\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\n\tspb \"google.golang.org/genproto/googleapis/rpc/status\"\n\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/internal/status\"\n)\n\n// Status references google.golang.org/grpc/internal/status. It represents an\n// RPC status code, message, and details.  It is immutable and should be\n// created with New, Newf, or FromProto.\n// https://godoc.org/google.golang.org/grpc/internal/status\ntype Status = status.Status\n\n// New returns a Status representing c and msg.\nfunc New(c codes.Code, msg string) *Status {\n\treturn status.New(c, msg)\n}\n\n// Newf returns New(c, fmt.Sprintf(format, a...)).\nfunc Newf(c codes.Code, format string, a ...interface{}) *Status {\n\treturn New(c, fmt.Sprintf(format, a...))\n}\n\n// Error returns an error representing c and msg.  If c is OK, returns nil.\nfunc Error(c codes.Code, msg string) error {\n\treturn New(c, msg).Err()\n}\n\n// Errorf returns Error(c, fmt.Sprintf(format, a...)).\nfunc Errorf(c codes.Code, format string, a ...interface{}) error {\n\treturn Error(c, fmt.Sprintf(format, a...))\n}\n\n// ErrorProto returns an error representing s.  If s.Code is OK, returns nil.\nfunc ErrorProto(s *spb.Status) error {\n\treturn FromProto(s).Err()\n}\n\n// FromProto returns a Status representing s.\nfunc FromProto(s *spb.Status) *Status {\n\treturn status.FromProto(s)\n}\n\n// FromError returns a Status representation of err.\n//\n//   - If err was produced by this package or implements the method `GRPCStatus()\n//     *Status` and `GRPCStatus()` does not return nil, or if err wraps a type\n//     satisfying this, the Status from `GRPCStatus()` is returned.  For wrapped\n//     errors, the message returned contains the entire err.Error() text and not\n//     just the wrapped status. In that case, ok is true.\n//\n//   - If err is nil, a Status is returned with codes.OK and no message, and ok\n//     is true.\n//\n//   - If err implements the method `GRPCStatus() *Status` and `GRPCStatus()`\n//     returns nil (which maps to Codes.OK), or if err wraps a type\n//     satisfying this, a Status is returned with codes.Unknown and err's\n//     Error() message, and ok is false.\n//\n//   - Otherwise, err is an error not compatible with this package.  In this\n//     case, a Status is returned with codes.Unknown and err's Error() message,\n//     and ok is false.\nfunc FromError(err error) (s *Status, ok bool) {\n\tif err == nil {\n\t\treturn nil, true\n\t}\n\ttype grpcstatus interface{ GRPCStatus() *Status }\n\tif gs, ok := err.(grpcstatus); ok {\n\t\tif gs.GRPCStatus() == nil {\n\t\t\t// Error has status nil, which maps to codes.OK. There\n\t\t\t// is no sensible behavior for this, so we turn it into\n\t\t\t// an error with codes.Unknown and discard the existing\n\t\t\t// status.\n\t\t\treturn New(codes.Unknown, err.Error()), false\n\t\t}\n\t\treturn gs.GRPCStatus(), true\n\t}\n\tvar gs grpcstatus\n\tif errors.As(err, &gs) {\n\t\tif gs.GRPCStatus() == nil {\n\t\t\t// Error wraps an error that has status nil, which maps\n\t\t\t// to codes.OK.  There is no sensible behavior for this,\n\t\t\t// so we turn it into an error with codes.Unknown and\n\t\t\t// discard the existing status.\n\t\t\treturn New(codes.Unknown, err.Error()), false\n\t\t}\n\t\tp := gs.GRPCStatus().Proto()\n\t\tp.Message = err.Error()\n\t\treturn status.FromProto(p), true\n\t}\n\treturn New(codes.Unknown, err.Error()), false\n}\n\n// Convert is a convenience function which removes the need to handle the\n// boolean return value from FromError.\nfunc Convert(err error) *Status {\n\ts, _ := FromError(err)\n\treturn s\n}\n\n// Code returns the Code of the error if it is a Status error or if it wraps a\n// Status error. If that is not the case, it returns codes.OK if err is nil, or\n// codes.Unknown otherwise.\nfunc Code(err error) codes.Code {\n\t// Don't use FromError to avoid allocation of OK status.\n\tif err == nil {\n\t\treturn codes.OK\n\t}\n\n\treturn Convert(err).Code()\n}\n\n// FromContextError converts a context error or wrapped context error into a\n// Status.  It returns a Status with codes.OK if err is nil, or a Status with\n// codes.Unknown if err is non-nil and not a context error.\nfunc FromContextError(err error) *Status {\n\tif err == nil {\n\t\treturn nil\n\t}\n\tif errors.Is(err, context.DeadlineExceeded) {\n\t\treturn New(codes.DeadlineExceeded, err.Error())\n\t}\n\tif errors.Is(err, context.Canceled) {\n\t\treturn New(codes.Canceled, err.Error())\n\t}\n\treturn New(codes.Unknown, err.Error())\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/LICENSE",
    "content": "Copyright (c) 2018 The Go Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n   * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n   * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n   * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/PATENTS",
    "content": "Additional IP Rights Grant (Patents)\n\n\"This implementation\" means the copyrightable works distributed by\nGoogle as part of the Go project.\n\nGoogle hereby grants to You a perpetual, worldwide, non-exclusive,\nno-charge, royalty-free, irrevocable (except as stated in this section)\npatent license to make, have made, use, offer to sell, sell, import,\ntransfer and otherwise run, modify and propagate the contents of this\nimplementation of Go, where such license applies only to those patent\nclaims, both currently owned or controlled by Google and acquired in\nthe future, licensable by Google that are necessarily infringed by this\nimplementation of Go.  This grant does not include claims that would be\ninfringed only as a consequence of further modification of this\nimplementation.  If you or your agent or exclusive licensee institute or\norder or agree to the institution of patent litigation against any\nentity (including a cross-claim or counterclaim in a lawsuit) alleging\nthat this implementation of Go or any code incorporated within this\nimplementation of Go constitutes direct or contributory patent\ninfringement, or inducement of patent infringement, then any patent\nrights granted to you under this License for this implementation of Go\nshall terminate as of the date such litigation is filed.\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/encoding/prototext/decode.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage prototext\n\nimport (\n\t\"fmt\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/internal/encoding/messageset\"\n\t\"google.golang.org/protobuf/internal/encoding/text\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/internal/flags\"\n\t\"google.golang.org/protobuf/internal/genid\"\n\t\"google.golang.org/protobuf/internal/pragma\"\n\t\"google.golang.org/protobuf/internal/set\"\n\t\"google.golang.org/protobuf/internal/strs\"\n\t\"google.golang.org/protobuf/proto\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n)\n\n// Unmarshal reads the given []byte into the given [proto.Message].\n// The provided message must be mutable (e.g., a non-nil pointer to a message).\nfunc Unmarshal(b []byte, m proto.Message) error {\n\treturn UnmarshalOptions{}.Unmarshal(b, m)\n}\n\n// UnmarshalOptions is a configurable textproto format unmarshaler.\ntype UnmarshalOptions struct {\n\tpragma.NoUnkeyedLiterals\n\n\t// AllowPartial accepts input for messages that will result in missing\n\t// required fields. If AllowPartial is false (the default), Unmarshal will\n\t// return error if there are any missing required fields.\n\tAllowPartial bool\n\n\t// DiscardUnknown specifies whether to ignore unknown fields when parsing.\n\t// An unknown field is any field whose field name or field number does not\n\t// resolve to any known or extension field in the message.\n\t// By default, unmarshal rejects unknown fields as an error.\n\tDiscardUnknown bool\n\n\t// Resolver is used for looking up types when unmarshaling\n\t// google.protobuf.Any messages or extension fields.\n\t// If nil, this defaults to using protoregistry.GlobalTypes.\n\tResolver interface {\n\t\tprotoregistry.MessageTypeResolver\n\t\tprotoregistry.ExtensionTypeResolver\n\t}\n}\n\n// Unmarshal reads the given []byte and populates the given [proto.Message]\n// using options in the UnmarshalOptions object.\n// The provided message must be mutable (e.g., a non-nil pointer to a message).\nfunc (o UnmarshalOptions) Unmarshal(b []byte, m proto.Message) error {\n\treturn o.unmarshal(b, m)\n}\n\n// unmarshal is a centralized function that all unmarshal operations go through.\n// For profiling purposes, avoid changing the name of this function or\n// introducing other code paths for unmarshal that do not go through this.\nfunc (o UnmarshalOptions) unmarshal(b []byte, m proto.Message) error {\n\tproto.Reset(m)\n\n\tif o.Resolver == nil {\n\t\to.Resolver = protoregistry.GlobalTypes\n\t}\n\n\tdec := decoder{text.NewDecoder(b), o}\n\tif err := dec.unmarshalMessage(m.ProtoReflect(), false); err != nil {\n\t\treturn err\n\t}\n\tif o.AllowPartial {\n\t\treturn nil\n\t}\n\treturn proto.CheckInitialized(m)\n}\n\ntype decoder struct {\n\t*text.Decoder\n\topts UnmarshalOptions\n}\n\n// newError returns an error object with position info.\nfunc (d decoder) newError(pos int, f string, x ...any) error {\n\tline, column := d.Position(pos)\n\thead := fmt.Sprintf(\"(line %d:%d): \", line, column)\n\treturn errors.New(head+f, x...)\n}\n\n// unexpectedTokenError returns a syntax error for the given unexpected token.\nfunc (d decoder) unexpectedTokenError(tok text.Token) error {\n\treturn d.syntaxError(tok.Pos(), \"unexpected token: %s\", tok.RawString())\n}\n\n// syntaxError returns a syntax error for given position.\nfunc (d decoder) syntaxError(pos int, f string, x ...any) error {\n\tline, column := d.Position(pos)\n\thead := fmt.Sprintf(\"syntax error (line %d:%d): \", line, column)\n\treturn errors.New(head+f, x...)\n}\n\n// unmarshalMessage unmarshals into the given protoreflect.Message.\nfunc (d decoder) unmarshalMessage(m protoreflect.Message, checkDelims bool) error {\n\tmessageDesc := m.Descriptor()\n\tif !flags.ProtoLegacy && messageset.IsMessageSet(messageDesc) {\n\t\treturn errors.New(\"no support for proto1 MessageSets\")\n\t}\n\n\tif messageDesc.FullName() == genid.Any_message_fullname {\n\t\treturn d.unmarshalAny(m, checkDelims)\n\t}\n\n\tif checkDelims {\n\t\ttok, err := d.Read()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tif tok.Kind() != text.MessageOpen {\n\t\t\treturn d.unexpectedTokenError(tok)\n\t\t}\n\t}\n\n\tvar seenNums set.Ints\n\tvar seenOneofs set.Ints\n\tfieldDescs := messageDesc.Fields()\n\n\tfor {\n\t\t// Read field name.\n\t\ttok, err := d.Read()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tswitch typ := tok.Kind(); typ {\n\t\tcase text.Name:\n\t\t\t// Continue below.\n\t\tcase text.EOF:\n\t\t\tif checkDelims {\n\t\t\t\treturn text.ErrUnexpectedEOF\n\t\t\t}\n\t\t\treturn nil\n\t\tdefault:\n\t\t\tif checkDelims && typ == text.MessageClose {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t\treturn d.unexpectedTokenError(tok)\n\t\t}\n\n\t\t// Resolve the field descriptor.\n\t\tvar name protoreflect.Name\n\t\tvar fd protoreflect.FieldDescriptor\n\t\tvar xt protoreflect.ExtensionType\n\t\tvar xtErr error\n\t\tvar isFieldNumberName bool\n\n\t\tswitch tok.NameKind() {\n\t\tcase text.IdentName:\n\t\t\tname = protoreflect.Name(tok.IdentName())\n\t\t\tfd = fieldDescs.ByTextName(string(name))\n\n\t\tcase text.TypeName:\n\t\t\t// Handle extensions only. This code path is not for Any.\n\t\t\txt, xtErr = d.opts.Resolver.FindExtensionByName(protoreflect.FullName(tok.TypeName()))\n\n\t\tcase text.FieldNumber:\n\t\t\tisFieldNumberName = true\n\t\t\tnum := protoreflect.FieldNumber(tok.FieldNumber())\n\t\t\tif !num.IsValid() {\n\t\t\t\treturn d.newError(tok.Pos(), \"invalid field number: %d\", num)\n\t\t\t}\n\t\t\tfd = fieldDescs.ByNumber(num)\n\t\t\tif fd == nil {\n\t\t\t\txt, xtErr = d.opts.Resolver.FindExtensionByNumber(messageDesc.FullName(), num)\n\t\t\t}\n\t\t}\n\n\t\tif xt != nil {\n\t\t\tfd = xt.TypeDescriptor()\n\t\t\tif !messageDesc.ExtensionRanges().Has(fd.Number()) || fd.ContainingMessage().FullName() != messageDesc.FullName() {\n\t\t\t\treturn d.newError(tok.Pos(), \"message %v cannot be extended by %v\", messageDesc.FullName(), fd.FullName())\n\t\t\t}\n\t\t} else if xtErr != nil && xtErr != protoregistry.NotFound {\n\t\t\treturn d.newError(tok.Pos(), \"unable to resolve [%s]: %v\", tok.RawString(), xtErr)\n\t\t}\n\n\t\t// Handle unknown fields.\n\t\tif fd == nil {\n\t\t\tif d.opts.DiscardUnknown || messageDesc.ReservedNames().Has(name) {\n\t\t\t\td.skipValue()\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\treturn d.newError(tok.Pos(), \"unknown field: %v\", tok.RawString())\n\t\t}\n\n\t\t// Handle fields identified by field number.\n\t\tif isFieldNumberName {\n\t\t\t// TODO: Add an option to permit parsing field numbers.\n\t\t\t//\n\t\t\t// This requires careful thought as the MarshalOptions.EmitUnknown\n\t\t\t// option allows formatting unknown fields as the field number and the\n\t\t\t// best-effort textual representation of the field value.  In that case,\n\t\t\t// it may not be possible to unmarshal the value from a parser that does\n\t\t\t// have information about the unknown field.\n\t\t\treturn d.newError(tok.Pos(), \"cannot specify field by number: %v\", tok.RawString())\n\t\t}\n\n\t\tswitch {\n\t\tcase fd.IsList():\n\t\t\tkind := fd.Kind()\n\t\t\tif kind != protoreflect.MessageKind && kind != protoreflect.GroupKind && !tok.HasSeparator() {\n\t\t\t\treturn d.syntaxError(tok.Pos(), \"missing field separator :\")\n\t\t\t}\n\n\t\t\tlist := m.Mutable(fd).List()\n\t\t\tif err := d.unmarshalList(fd, list); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\tcase fd.IsMap():\n\t\t\tmmap := m.Mutable(fd).Map()\n\t\t\tif err := d.unmarshalMap(fd, mmap); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\tdefault:\n\t\t\tkind := fd.Kind()\n\t\t\tif kind != protoreflect.MessageKind && kind != protoreflect.GroupKind && !tok.HasSeparator() {\n\t\t\t\treturn d.syntaxError(tok.Pos(), \"missing field separator :\")\n\t\t\t}\n\n\t\t\t// If field is a oneof, check if it has already been set.\n\t\t\tif od := fd.ContainingOneof(); od != nil {\n\t\t\t\tidx := uint64(od.Index())\n\t\t\t\tif seenOneofs.Has(idx) {\n\t\t\t\t\treturn d.newError(tok.Pos(), \"error parsing %q, oneof %v is already set\", tok.RawString(), od.FullName())\n\t\t\t\t}\n\t\t\t\tseenOneofs.Set(idx)\n\t\t\t}\n\n\t\t\tnum := uint64(fd.Number())\n\t\t\tif seenNums.Has(num) {\n\t\t\t\treturn d.newError(tok.Pos(), \"non-repeated field %q is repeated\", tok.RawString())\n\t\t\t}\n\n\t\t\tif err := d.unmarshalSingular(fd, m); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tseenNums.Set(num)\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// unmarshalSingular unmarshals a non-repeated field value specified by the\n// given FieldDescriptor.\nfunc (d decoder) unmarshalSingular(fd protoreflect.FieldDescriptor, m protoreflect.Message) error {\n\tvar val protoreflect.Value\n\tvar err error\n\tswitch fd.Kind() {\n\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\tval = m.NewField(fd)\n\t\terr = d.unmarshalMessage(val.Message(), true)\n\tdefault:\n\t\tval, err = d.unmarshalScalar(fd)\n\t}\n\tif err == nil {\n\t\tm.Set(fd, val)\n\t}\n\treturn err\n}\n\n// unmarshalScalar unmarshals a scalar/enum protoreflect.Value specified by the\n// given FieldDescriptor.\nfunc (d decoder) unmarshalScalar(fd protoreflect.FieldDescriptor) (protoreflect.Value, error) {\n\ttok, err := d.Read()\n\tif err != nil {\n\t\treturn protoreflect.Value{}, err\n\t}\n\n\tif tok.Kind() != text.Scalar {\n\t\treturn protoreflect.Value{}, d.unexpectedTokenError(tok)\n\t}\n\n\tkind := fd.Kind()\n\tswitch kind {\n\tcase protoreflect.BoolKind:\n\t\tif b, ok := tok.Bool(); ok {\n\t\t\treturn protoreflect.ValueOfBool(b), nil\n\t\t}\n\n\tcase protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind:\n\t\tif n, ok := tok.Int32(); ok {\n\t\t\treturn protoreflect.ValueOfInt32(n), nil\n\t\t}\n\n\tcase protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind:\n\t\tif n, ok := tok.Int64(); ok {\n\t\t\treturn protoreflect.ValueOfInt64(n), nil\n\t\t}\n\n\tcase protoreflect.Uint32Kind, protoreflect.Fixed32Kind:\n\t\tif n, ok := tok.Uint32(); ok {\n\t\t\treturn protoreflect.ValueOfUint32(n), nil\n\t\t}\n\n\tcase protoreflect.Uint64Kind, protoreflect.Fixed64Kind:\n\t\tif n, ok := tok.Uint64(); ok {\n\t\t\treturn protoreflect.ValueOfUint64(n), nil\n\t\t}\n\n\tcase protoreflect.FloatKind:\n\t\tif n, ok := tok.Float32(); ok {\n\t\t\treturn protoreflect.ValueOfFloat32(n), nil\n\t\t}\n\n\tcase protoreflect.DoubleKind:\n\t\tif n, ok := tok.Float64(); ok {\n\t\t\treturn protoreflect.ValueOfFloat64(n), nil\n\t\t}\n\n\tcase protoreflect.StringKind:\n\t\tif s, ok := tok.String(); ok {\n\t\t\tif strs.EnforceUTF8(fd) && !utf8.ValidString(s) {\n\t\t\t\treturn protoreflect.Value{}, d.newError(tok.Pos(), \"contains invalid UTF-8\")\n\t\t\t}\n\t\t\treturn protoreflect.ValueOfString(s), nil\n\t\t}\n\n\tcase protoreflect.BytesKind:\n\t\tif b, ok := tok.String(); ok {\n\t\t\treturn protoreflect.ValueOfBytes([]byte(b)), nil\n\t\t}\n\n\tcase protoreflect.EnumKind:\n\t\tif lit, ok := tok.Enum(); ok {\n\t\t\t// Lookup EnumNumber based on name.\n\t\t\tif enumVal := fd.Enum().Values().ByName(protoreflect.Name(lit)); enumVal != nil {\n\t\t\t\treturn protoreflect.ValueOfEnum(enumVal.Number()), nil\n\t\t\t}\n\t\t}\n\t\tif num, ok := tok.Int32(); ok {\n\t\t\treturn protoreflect.ValueOfEnum(protoreflect.EnumNumber(num)), nil\n\t\t}\n\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"invalid scalar kind %v\", kind))\n\t}\n\n\treturn protoreflect.Value{}, d.newError(tok.Pos(), \"invalid value for %v type: %v\", kind, tok.RawString())\n}\n\n// unmarshalList unmarshals into given protoreflect.List. A list value can\n// either be in [] syntax or simply just a single scalar/message value.\nfunc (d decoder) unmarshalList(fd protoreflect.FieldDescriptor, list protoreflect.List) error {\n\ttok, err := d.Peek()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tswitch fd.Kind() {\n\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\tswitch tok.Kind() {\n\t\tcase text.ListOpen:\n\t\t\td.Read()\n\t\t\tfor {\n\t\t\t\ttok, err := d.Peek()\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\n\t\t\t\tswitch tok.Kind() {\n\t\t\t\tcase text.ListClose:\n\t\t\t\t\td.Read()\n\t\t\t\t\treturn nil\n\t\t\t\tcase text.MessageOpen:\n\t\t\t\t\tpval := list.NewElement()\n\t\t\t\t\tif err := d.unmarshalMessage(pval.Message(), true); err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t\tlist.Append(pval)\n\t\t\t\tdefault:\n\t\t\t\t\treturn d.unexpectedTokenError(tok)\n\t\t\t\t}\n\t\t\t}\n\n\t\tcase text.MessageOpen:\n\t\t\tpval := list.NewElement()\n\t\t\tif err := d.unmarshalMessage(pval.Message(), true); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tlist.Append(pval)\n\t\t\treturn nil\n\t\t}\n\n\tdefault:\n\t\tswitch tok.Kind() {\n\t\tcase text.ListOpen:\n\t\t\td.Read()\n\t\t\tfor {\n\t\t\t\ttok, err := d.Peek()\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\n\t\t\t\tswitch tok.Kind() {\n\t\t\t\tcase text.ListClose:\n\t\t\t\t\td.Read()\n\t\t\t\t\treturn nil\n\t\t\t\tcase text.Scalar:\n\t\t\t\t\tpval, err := d.unmarshalScalar(fd)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t\tlist.Append(pval)\n\t\t\t\tdefault:\n\t\t\t\t\treturn d.unexpectedTokenError(tok)\n\t\t\t\t}\n\t\t\t}\n\n\t\tcase text.Scalar:\n\t\t\tpval, err := d.unmarshalScalar(fd)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tlist.Append(pval)\n\t\t\treturn nil\n\t\t}\n\t}\n\n\treturn d.unexpectedTokenError(tok)\n}\n\n// unmarshalMap unmarshals into given protoreflect.Map. A map value is a\n// textproto message containing {key: <kvalue>, value: <mvalue>}.\nfunc (d decoder) unmarshalMap(fd protoreflect.FieldDescriptor, mmap protoreflect.Map) error {\n\t// Determine ahead whether map entry is a scalar type or a message type in\n\t// order to call the appropriate unmarshalMapValue func inside\n\t// unmarshalMapEntry.\n\tvar unmarshalMapValue func() (protoreflect.Value, error)\n\tswitch fd.MapValue().Kind() {\n\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\tunmarshalMapValue = func() (protoreflect.Value, error) {\n\t\t\tpval := mmap.NewValue()\n\t\t\tif err := d.unmarshalMessage(pval.Message(), true); err != nil {\n\t\t\t\treturn protoreflect.Value{}, err\n\t\t\t}\n\t\t\treturn pval, nil\n\t\t}\n\tdefault:\n\t\tunmarshalMapValue = func() (protoreflect.Value, error) {\n\t\t\treturn d.unmarshalScalar(fd.MapValue())\n\t\t}\n\t}\n\n\ttok, err := d.Read()\n\tif err != nil {\n\t\treturn err\n\t}\n\tswitch tok.Kind() {\n\tcase text.MessageOpen:\n\t\treturn d.unmarshalMapEntry(fd, mmap, unmarshalMapValue)\n\n\tcase text.ListOpen:\n\t\tfor {\n\t\t\ttok, err := d.Read()\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tswitch tok.Kind() {\n\t\t\tcase text.ListClose:\n\t\t\t\treturn nil\n\t\t\tcase text.MessageOpen:\n\t\t\t\tif err := d.unmarshalMapEntry(fd, mmap, unmarshalMapValue); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\treturn d.unexpectedTokenError(tok)\n\t\t\t}\n\t\t}\n\n\tdefault:\n\t\treturn d.unexpectedTokenError(tok)\n\t}\n}\n\n// unmarshalMap unmarshals into given protoreflect.Map. A map value is a\n// textproto message containing {key: <kvalue>, value: <mvalue>}.\nfunc (d decoder) unmarshalMapEntry(fd protoreflect.FieldDescriptor, mmap protoreflect.Map, unmarshalMapValue func() (protoreflect.Value, error)) error {\n\tvar key protoreflect.MapKey\n\tvar pval protoreflect.Value\nLoop:\n\tfor {\n\t\t// Read field name.\n\t\ttok, err := d.Read()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tswitch tok.Kind() {\n\t\tcase text.Name:\n\t\t\tif tok.NameKind() != text.IdentName {\n\t\t\t\tif !d.opts.DiscardUnknown {\n\t\t\t\t\treturn d.newError(tok.Pos(), \"unknown map entry field %q\", tok.RawString())\n\t\t\t\t}\n\t\t\t\td.skipValue()\n\t\t\t\tcontinue Loop\n\t\t\t}\n\t\t\t// Continue below.\n\t\tcase text.MessageClose:\n\t\t\tbreak Loop\n\t\tdefault:\n\t\t\treturn d.unexpectedTokenError(tok)\n\t\t}\n\n\t\tswitch name := protoreflect.Name(tok.IdentName()); name {\n\t\tcase genid.MapEntry_Key_field_name:\n\t\t\tif !tok.HasSeparator() {\n\t\t\t\treturn d.syntaxError(tok.Pos(), \"missing field separator :\")\n\t\t\t}\n\t\t\tif key.IsValid() {\n\t\t\t\treturn d.newError(tok.Pos(), \"map entry %q cannot be repeated\", name)\n\t\t\t}\n\t\t\tval, err := d.unmarshalScalar(fd.MapKey())\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tkey = val.MapKey()\n\n\t\tcase genid.MapEntry_Value_field_name:\n\t\t\tif kind := fd.MapValue().Kind(); (kind != protoreflect.MessageKind) && (kind != protoreflect.GroupKind) {\n\t\t\t\tif !tok.HasSeparator() {\n\t\t\t\t\treturn d.syntaxError(tok.Pos(), \"missing field separator :\")\n\t\t\t\t}\n\t\t\t}\n\t\t\tif pval.IsValid() {\n\t\t\t\treturn d.newError(tok.Pos(), \"map entry %q cannot be repeated\", name)\n\t\t\t}\n\t\t\tpval, err = unmarshalMapValue()\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\tdefault:\n\t\t\tif !d.opts.DiscardUnknown {\n\t\t\t\treturn d.newError(tok.Pos(), \"unknown map entry field %q\", name)\n\t\t\t}\n\t\t\td.skipValue()\n\t\t}\n\t}\n\n\tif !key.IsValid() {\n\t\tkey = fd.MapKey().Default().MapKey()\n\t}\n\tif !pval.IsValid() {\n\t\tswitch fd.MapValue().Kind() {\n\t\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\t\t// If value field is not set for message/group types, construct an\n\t\t\t// empty one as default.\n\t\t\tpval = mmap.NewValue()\n\t\tdefault:\n\t\t\tpval = fd.MapValue().Default()\n\t\t}\n\t}\n\tmmap.Set(key, pval)\n\treturn nil\n}\n\n// unmarshalAny unmarshals an Any textproto. It can either be in expanded form\n// or non-expanded form.\nfunc (d decoder) unmarshalAny(m protoreflect.Message, checkDelims bool) error {\n\tvar typeURL string\n\tvar bValue []byte\n\tvar seenTypeUrl bool\n\tvar seenValue bool\n\tvar isExpanded bool\n\n\tif checkDelims {\n\t\ttok, err := d.Read()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tif tok.Kind() != text.MessageOpen {\n\t\t\treturn d.unexpectedTokenError(tok)\n\t\t}\n\t}\n\nLoop:\n\tfor {\n\t\t// Read field name. Can only have 3 possible field names, i.e. type_url,\n\t\t// value and type URL name inside [].\n\t\ttok, err := d.Read()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif typ := tok.Kind(); typ != text.Name {\n\t\t\tif checkDelims {\n\t\t\t\tif typ == text.MessageClose {\n\t\t\t\t\tbreak Loop\n\t\t\t\t}\n\t\t\t} else if typ == text.EOF {\n\t\t\t\tbreak Loop\n\t\t\t}\n\t\t\treturn d.unexpectedTokenError(tok)\n\t\t}\n\n\t\tswitch tok.NameKind() {\n\t\tcase text.IdentName:\n\t\t\t// Both type_url and value fields require field separator :.\n\t\t\tif !tok.HasSeparator() {\n\t\t\t\treturn d.syntaxError(tok.Pos(), \"missing field separator :\")\n\t\t\t}\n\n\t\t\tswitch name := protoreflect.Name(tok.IdentName()); name {\n\t\t\tcase genid.Any_TypeUrl_field_name:\n\t\t\t\tif seenTypeUrl {\n\t\t\t\t\treturn d.newError(tok.Pos(), \"duplicate %v field\", genid.Any_TypeUrl_field_fullname)\n\t\t\t\t}\n\t\t\t\tif isExpanded {\n\t\t\t\t\treturn d.newError(tok.Pos(), \"conflict with [%s] field\", typeURL)\n\t\t\t\t}\n\t\t\t\ttok, err := d.Read()\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tvar ok bool\n\t\t\t\ttypeURL, ok = tok.String()\n\t\t\t\tif !ok {\n\t\t\t\t\treturn d.newError(tok.Pos(), \"invalid %v field value: %v\", genid.Any_TypeUrl_field_fullname, tok.RawString())\n\t\t\t\t}\n\t\t\t\tseenTypeUrl = true\n\n\t\t\tcase genid.Any_Value_field_name:\n\t\t\t\tif seenValue {\n\t\t\t\t\treturn d.newError(tok.Pos(), \"duplicate %v field\", genid.Any_Value_field_fullname)\n\t\t\t\t}\n\t\t\t\tif isExpanded {\n\t\t\t\t\treturn d.newError(tok.Pos(), \"conflict with [%s] field\", typeURL)\n\t\t\t\t}\n\t\t\t\ttok, err := d.Read()\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\ts, ok := tok.String()\n\t\t\t\tif !ok {\n\t\t\t\t\treturn d.newError(tok.Pos(), \"invalid %v field value: %v\", genid.Any_Value_field_fullname, tok.RawString())\n\t\t\t\t}\n\t\t\t\tbValue = []byte(s)\n\t\t\t\tseenValue = true\n\n\t\t\tdefault:\n\t\t\t\tif !d.opts.DiscardUnknown {\n\t\t\t\t\treturn d.newError(tok.Pos(), \"invalid field name %q in %v message\", tok.RawString(), genid.Any_message_fullname)\n\t\t\t\t}\n\t\t\t}\n\n\t\tcase text.TypeName:\n\t\t\tif isExpanded {\n\t\t\t\treturn d.newError(tok.Pos(), \"cannot have more than one type\")\n\t\t\t}\n\t\t\tif seenTypeUrl {\n\t\t\t\treturn d.newError(tok.Pos(), \"conflict with type_url field\")\n\t\t\t}\n\t\t\ttypeURL = tok.TypeName()\n\t\t\tvar err error\n\t\t\tbValue, err = d.unmarshalExpandedAny(typeURL, tok.Pos())\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tisExpanded = true\n\n\t\tdefault:\n\t\t\tif !d.opts.DiscardUnknown {\n\t\t\t\treturn d.newError(tok.Pos(), \"invalid field name %q in %v message\", tok.RawString(), genid.Any_message_fullname)\n\t\t\t}\n\t\t}\n\t}\n\n\tfds := m.Descriptor().Fields()\n\tif len(typeURL) > 0 {\n\t\tm.Set(fds.ByNumber(genid.Any_TypeUrl_field_number), protoreflect.ValueOfString(typeURL))\n\t}\n\tif len(bValue) > 0 {\n\t\tm.Set(fds.ByNumber(genid.Any_Value_field_number), protoreflect.ValueOfBytes(bValue))\n\t}\n\treturn nil\n}\n\nfunc (d decoder) unmarshalExpandedAny(typeURL string, pos int) ([]byte, error) {\n\tmt, err := d.opts.Resolver.FindMessageByURL(typeURL)\n\tif err != nil {\n\t\treturn nil, d.newError(pos, \"unable to resolve message [%v]: %v\", typeURL, err)\n\t}\n\t// Create new message for the embedded message type and unmarshal the value\n\t// field into it.\n\tm := mt.New()\n\tif err := d.unmarshalMessage(m, true); err != nil {\n\t\treturn nil, err\n\t}\n\t// Serialize the embedded message and return the resulting bytes.\n\tb, err := proto.MarshalOptions{\n\t\tAllowPartial:  true, // Never check required fields inside an Any.\n\t\tDeterministic: true,\n\t}.Marshal(m.Interface())\n\tif err != nil {\n\t\treturn nil, d.newError(pos, \"error in marshaling message into Any.value: %v\", err)\n\t}\n\treturn b, nil\n}\n\n// skipValue makes the decoder parse a field value in order to advance the read\n// to the next field. It relies on Read returning an error if the types are not\n// in valid sequence.\nfunc (d decoder) skipValue() error {\n\ttok, err := d.Read()\n\tif err != nil {\n\t\treturn err\n\t}\n\t// Only need to continue reading for messages and lists.\n\tswitch tok.Kind() {\n\tcase text.MessageOpen:\n\t\treturn d.skipMessageValue()\n\n\tcase text.ListOpen:\n\t\tfor {\n\t\t\ttok, err := d.Read()\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tswitch tok.Kind() {\n\t\t\tcase text.ListClose:\n\t\t\t\treturn nil\n\t\t\tcase text.MessageOpen:\n\t\t\t\tif err := d.skipMessageValue(); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\t// Skip items. This will not validate whether skipped values are\n\t\t\t\t// of the same type or not, same behavior as C++\n\t\t\t\t// TextFormat::Parser::AllowUnknownField(true) version 3.8.0.\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\n// skipMessageValue makes the decoder parse and skip over all fields in a\n// message. It assumes that the previous read type is MessageOpen.\nfunc (d decoder) skipMessageValue() error {\n\tfor {\n\t\ttok, err := d.Read()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tswitch tok.Kind() {\n\t\tcase text.MessageClose:\n\t\t\treturn nil\n\t\tcase text.Name:\n\t\t\tif err := d.skipValue(); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/encoding/prototext/doc.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package prototext marshals and unmarshals protocol buffer messages as the\n// textproto format.\npackage prototext\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/encoding/prototext/encode.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage prototext\n\nimport (\n\t\"fmt\"\n\t\"strconv\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/encoding/messageset\"\n\t\"google.golang.org/protobuf/internal/encoding/text\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/internal/flags\"\n\t\"google.golang.org/protobuf/internal/genid\"\n\t\"google.golang.org/protobuf/internal/order\"\n\t\"google.golang.org/protobuf/internal/pragma\"\n\t\"google.golang.org/protobuf/internal/strs\"\n\t\"google.golang.org/protobuf/proto\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n)\n\nconst defaultIndent = \"  \"\n\n// Format formats the message as a multiline string.\n// This function is only intended for human consumption and ignores errors.\n// Do not depend on the output being stable. Its output will change across\n// different builds of your program, even when using the same version of the\n// protobuf module.\nfunc Format(m proto.Message) string {\n\treturn MarshalOptions{Multiline: true}.Format(m)\n}\n\n// Marshal writes the given [proto.Message] in textproto format using default\n// options. Do not depend on the output being stable. Its output will change\n// across different builds of your program, even when using the same version of\n// the protobuf module.\nfunc Marshal(m proto.Message) ([]byte, error) {\n\treturn MarshalOptions{}.Marshal(m)\n}\n\n// MarshalOptions is a configurable text format marshaler.\ntype MarshalOptions struct {\n\tpragma.NoUnkeyedLiterals\n\n\t// Multiline specifies whether the marshaler should format the output in\n\t// indented-form with every textual element on a new line.\n\t// If Indent is an empty string, then an arbitrary indent is chosen.\n\tMultiline bool\n\n\t// Indent specifies the set of indentation characters to use in a multiline\n\t// formatted output such that every entry is preceded by Indent and\n\t// terminated by a newline. If non-empty, then Multiline is treated as true.\n\t// Indent can only be composed of space or tab characters.\n\tIndent string\n\n\t// EmitASCII specifies whether to format strings and bytes as ASCII only\n\t// as opposed to using UTF-8 encoding when possible.\n\tEmitASCII bool\n\n\t// allowInvalidUTF8 specifies whether to permit the encoding of strings\n\t// with invalid UTF-8. This is unexported as it is intended to only\n\t// be specified by the Format method.\n\tallowInvalidUTF8 bool\n\n\t// AllowPartial allows messages that have missing required fields to marshal\n\t// without returning an error. If AllowPartial is false (the default),\n\t// Marshal will return error if there are any missing required fields.\n\tAllowPartial bool\n\n\t// EmitUnknown specifies whether to emit unknown fields in the output.\n\t// If specified, the unmarshaler may be unable to parse the output.\n\t// The default is to exclude unknown fields.\n\tEmitUnknown bool\n\n\t// Resolver is used for looking up types when expanding google.protobuf.Any\n\t// messages. If nil, this defaults to using protoregistry.GlobalTypes.\n\tResolver interface {\n\t\tprotoregistry.ExtensionTypeResolver\n\t\tprotoregistry.MessageTypeResolver\n\t}\n}\n\n// Format formats the message as a string.\n// This method is only intended for human consumption and ignores errors.\n// Do not depend on the output being stable. Its output will change across\n// different builds of your program, even when using the same version of the\n// protobuf module.\nfunc (o MarshalOptions) Format(m proto.Message) string {\n\tif m == nil || !m.ProtoReflect().IsValid() {\n\t\treturn \"<nil>\" // invalid syntax, but okay since this is for debugging\n\t}\n\to.allowInvalidUTF8 = true\n\to.AllowPartial = true\n\to.EmitUnknown = true\n\tb, _ := o.Marshal(m)\n\treturn string(b)\n}\n\n// Marshal writes the given [proto.Message] in textproto format using options in\n// MarshalOptions object. Do not depend on the output being stable. Its output\n// will change across different builds of your program, even when using the\n// same version of the protobuf module.\nfunc (o MarshalOptions) Marshal(m proto.Message) ([]byte, error) {\n\treturn o.marshal(nil, m)\n}\n\n// MarshalAppend appends the textproto format encoding of m to b,\n// returning the result.\nfunc (o MarshalOptions) MarshalAppend(b []byte, m proto.Message) ([]byte, error) {\n\treturn o.marshal(b, m)\n}\n\n// marshal is a centralized function that all marshal operations go through.\n// For profiling purposes, avoid changing the name of this function or\n// introducing other code paths for marshal that do not go through this.\nfunc (o MarshalOptions) marshal(b []byte, m proto.Message) ([]byte, error) {\n\tvar delims = [2]byte{'{', '}'}\n\n\tif o.Multiline && o.Indent == \"\" {\n\t\to.Indent = defaultIndent\n\t}\n\tif o.Resolver == nil {\n\t\to.Resolver = protoregistry.GlobalTypes\n\t}\n\n\tinternalEnc, err := text.NewEncoder(b, o.Indent, delims, o.EmitASCII)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Treat nil message interface as an empty message,\n\t// in which case there is nothing to output.\n\tif m == nil {\n\t\treturn b, nil\n\t}\n\n\tenc := encoder{internalEnc, o}\n\terr = enc.marshalMessage(m.ProtoReflect(), false)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tout := enc.Bytes()\n\tif len(o.Indent) > 0 && len(out) > 0 {\n\t\tout = append(out, '\\n')\n\t}\n\tif o.AllowPartial {\n\t\treturn out, nil\n\t}\n\treturn out, proto.CheckInitialized(m)\n}\n\ntype encoder struct {\n\t*text.Encoder\n\topts MarshalOptions\n}\n\n// marshalMessage marshals the given protoreflect.Message.\nfunc (e encoder) marshalMessage(m protoreflect.Message, inclDelims bool) error {\n\tmessageDesc := m.Descriptor()\n\tif !flags.ProtoLegacy && messageset.IsMessageSet(messageDesc) {\n\t\treturn errors.New(\"no support for proto1 MessageSets\")\n\t}\n\n\tif inclDelims {\n\t\te.StartMessage()\n\t\tdefer e.EndMessage()\n\t}\n\n\t// Handle Any expansion.\n\tif messageDesc.FullName() == genid.Any_message_fullname {\n\t\tif e.marshalAny(m) {\n\t\t\treturn nil\n\t\t}\n\t\t// If unable to expand, continue on to marshal Any as a regular message.\n\t}\n\n\t// Marshal fields.\n\tvar err error\n\torder.RangeFields(m, order.IndexNameFieldOrder, func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool {\n\t\tif err = e.marshalField(fd.TextName(), v, fd); err != nil {\n\t\t\treturn false\n\t\t}\n\t\treturn true\n\t})\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// Marshal unknown fields.\n\tif e.opts.EmitUnknown {\n\t\te.marshalUnknown(m.GetUnknown())\n\t}\n\n\treturn nil\n}\n\n// marshalField marshals the given field with protoreflect.Value.\nfunc (e encoder) marshalField(name string, val protoreflect.Value, fd protoreflect.FieldDescriptor) error {\n\tswitch {\n\tcase fd.IsList():\n\t\treturn e.marshalList(name, val.List(), fd)\n\tcase fd.IsMap():\n\t\treturn e.marshalMap(name, val.Map(), fd)\n\tdefault:\n\t\te.WriteName(name)\n\t\treturn e.marshalSingular(val, fd)\n\t}\n}\n\n// marshalSingular marshals the given non-repeated field value. This includes\n// all scalar types, enums, messages, and groups.\nfunc (e encoder) marshalSingular(val protoreflect.Value, fd protoreflect.FieldDescriptor) error {\n\tkind := fd.Kind()\n\tswitch kind {\n\tcase protoreflect.BoolKind:\n\t\te.WriteBool(val.Bool())\n\n\tcase protoreflect.StringKind:\n\t\ts := val.String()\n\t\tif !e.opts.allowInvalidUTF8 && strs.EnforceUTF8(fd) && !utf8.ValidString(s) {\n\t\t\treturn errors.InvalidUTF8(string(fd.FullName()))\n\t\t}\n\t\te.WriteString(s)\n\n\tcase protoreflect.Int32Kind, protoreflect.Int64Kind,\n\t\tprotoreflect.Sint32Kind, protoreflect.Sint64Kind,\n\t\tprotoreflect.Sfixed32Kind, protoreflect.Sfixed64Kind:\n\t\te.WriteInt(val.Int())\n\n\tcase protoreflect.Uint32Kind, protoreflect.Uint64Kind,\n\t\tprotoreflect.Fixed32Kind, protoreflect.Fixed64Kind:\n\t\te.WriteUint(val.Uint())\n\n\tcase protoreflect.FloatKind:\n\t\t// Encoder.WriteFloat handles the special numbers NaN and infinites.\n\t\te.WriteFloat(val.Float(), 32)\n\n\tcase protoreflect.DoubleKind:\n\t\t// Encoder.WriteFloat handles the special numbers NaN and infinites.\n\t\te.WriteFloat(val.Float(), 64)\n\n\tcase protoreflect.BytesKind:\n\t\te.WriteString(string(val.Bytes()))\n\n\tcase protoreflect.EnumKind:\n\t\tnum := val.Enum()\n\t\tif desc := fd.Enum().Values().ByNumber(num); desc != nil {\n\t\t\te.WriteLiteral(string(desc.Name()))\n\t\t} else {\n\t\t\t// Use numeric value if there is no enum description.\n\t\t\te.WriteInt(int64(num))\n\t\t}\n\n\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\treturn e.marshalMessage(val.Message(), true)\n\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"%v has unknown kind: %v\", fd.FullName(), kind))\n\t}\n\treturn nil\n}\n\n// marshalList marshals the given protoreflect.List as multiple name-value fields.\nfunc (e encoder) marshalList(name string, list protoreflect.List, fd protoreflect.FieldDescriptor) error {\n\tsize := list.Len()\n\tfor i := 0; i < size; i++ {\n\t\te.WriteName(name)\n\t\tif err := e.marshalSingular(list.Get(i), fd); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\n// marshalMap marshals the given protoreflect.Map as multiple name-value fields.\nfunc (e encoder) marshalMap(name string, mmap protoreflect.Map, fd protoreflect.FieldDescriptor) error {\n\tvar err error\n\torder.RangeEntries(mmap, order.GenericKeyOrder, func(key protoreflect.MapKey, val protoreflect.Value) bool {\n\t\te.WriteName(name)\n\t\te.StartMessage()\n\t\tdefer e.EndMessage()\n\n\t\te.WriteName(string(genid.MapEntry_Key_field_name))\n\t\terr = e.marshalSingular(key.Value(), fd.MapKey())\n\t\tif err != nil {\n\t\t\treturn false\n\t\t}\n\n\t\te.WriteName(string(genid.MapEntry_Value_field_name))\n\t\terr = e.marshalSingular(val, fd.MapValue())\n\t\tif err != nil {\n\t\t\treturn false\n\t\t}\n\t\treturn true\n\t})\n\treturn err\n}\n\n// marshalUnknown parses the given []byte and marshals fields out.\n// This function assumes proper encoding in the given []byte.\nfunc (e encoder) marshalUnknown(b []byte) {\n\tconst dec = 10\n\tconst hex = 16\n\tfor len(b) > 0 {\n\t\tnum, wtype, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\te.WriteName(strconv.FormatInt(int64(num), dec))\n\n\t\tswitch wtype {\n\t\tcase protowire.VarintType:\n\t\t\tvar v uint64\n\t\t\tv, n = protowire.ConsumeVarint(b)\n\t\t\te.WriteUint(v)\n\t\tcase protowire.Fixed32Type:\n\t\t\tvar v uint32\n\t\t\tv, n = protowire.ConsumeFixed32(b)\n\t\t\te.WriteLiteral(\"0x\" + strconv.FormatUint(uint64(v), hex))\n\t\tcase protowire.Fixed64Type:\n\t\t\tvar v uint64\n\t\t\tv, n = protowire.ConsumeFixed64(b)\n\t\t\te.WriteLiteral(\"0x\" + strconv.FormatUint(v, hex))\n\t\tcase protowire.BytesType:\n\t\t\tvar v []byte\n\t\t\tv, n = protowire.ConsumeBytes(b)\n\t\t\te.WriteString(string(v))\n\t\tcase protowire.StartGroupType:\n\t\t\te.StartMessage()\n\t\t\tvar v []byte\n\t\t\tv, n = protowire.ConsumeGroup(num, b)\n\t\t\te.marshalUnknown(v)\n\t\t\te.EndMessage()\n\t\tdefault:\n\t\t\tpanic(fmt.Sprintf(\"prototext: error parsing unknown field wire type: %v\", wtype))\n\t\t}\n\n\t\tb = b[n:]\n\t}\n}\n\n// marshalAny marshals the given google.protobuf.Any message in expanded form.\n// It returns true if it was able to marshal, else false.\nfunc (e encoder) marshalAny(any protoreflect.Message) bool {\n\t// Construct the embedded message.\n\tfds := any.Descriptor().Fields()\n\tfdType := fds.ByNumber(genid.Any_TypeUrl_field_number)\n\ttypeURL := any.Get(fdType).String()\n\tmt, err := e.opts.Resolver.FindMessageByURL(typeURL)\n\tif err != nil {\n\t\treturn false\n\t}\n\tm := mt.New().Interface()\n\n\t// Unmarshal bytes into embedded message.\n\tfdValue := fds.ByNumber(genid.Any_Value_field_number)\n\tvalue := any.Get(fdValue)\n\terr = proto.UnmarshalOptions{\n\t\tAllowPartial: true,\n\t\tResolver:     e.opts.Resolver,\n\t}.Unmarshal(value.Bytes(), m)\n\tif err != nil {\n\t\treturn false\n\t}\n\n\t// Get current encoder position. If marshaling fails, reset encoder output\n\t// back to this position.\n\tpos := e.Snapshot()\n\n\t// Field name is the proto field name enclosed in [].\n\te.WriteName(\"[\" + typeURL + \"]\")\n\terr = e.marshalMessage(m.ProtoReflect(), true)\n\tif err != nil {\n\t\te.Reset(pos)\n\t\treturn false\n\t}\n\treturn true\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/encoding/protowire/wire.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package protowire parses and formats the raw wire encoding.\n// See https://protobuf.dev/programming-guides/encoding.\n//\n// For marshaling and unmarshaling entire protobuf messages,\n// use the [google.golang.org/protobuf/proto] package instead.\npackage protowire\n\nimport (\n\t\"io\"\n\t\"math\"\n\t\"math/bits\"\n\n\t\"google.golang.org/protobuf/internal/errors\"\n)\n\n// Number represents the field number.\ntype Number int32\n\nconst (\n\tMinValidNumber        Number = 1\n\tFirstReservedNumber   Number = 19000\n\tLastReservedNumber    Number = 19999\n\tMaxValidNumber        Number = 1<<29 - 1\n\tDefaultRecursionLimit        = 10000\n)\n\n// IsValid reports whether the field number is semantically valid.\nfunc (n Number) IsValid() bool {\n\treturn MinValidNumber <= n && n <= MaxValidNumber\n}\n\n// Type represents the wire type.\ntype Type int8\n\nconst (\n\tVarintType     Type = 0\n\tFixed32Type    Type = 5\n\tFixed64Type    Type = 1\n\tBytesType      Type = 2\n\tStartGroupType Type = 3\n\tEndGroupType   Type = 4\n)\n\nconst (\n\t_ = -iota\n\terrCodeTruncated\n\terrCodeFieldNumber\n\terrCodeOverflow\n\terrCodeReserved\n\terrCodeEndGroup\n\terrCodeRecursionDepth\n)\n\nvar (\n\terrFieldNumber = errors.New(\"invalid field number\")\n\terrOverflow    = errors.New(\"variable length integer overflow\")\n\terrReserved    = errors.New(\"cannot parse reserved wire type\")\n\terrEndGroup    = errors.New(\"mismatching end group marker\")\n\terrParse       = errors.New(\"parse error\")\n)\n\n// ParseError converts an error code into an error value.\n// This returns nil if n is a non-negative number.\nfunc ParseError(n int) error {\n\tif n >= 0 {\n\t\treturn nil\n\t}\n\tswitch n {\n\tcase errCodeTruncated:\n\t\treturn io.ErrUnexpectedEOF\n\tcase errCodeFieldNumber:\n\t\treturn errFieldNumber\n\tcase errCodeOverflow:\n\t\treturn errOverflow\n\tcase errCodeReserved:\n\t\treturn errReserved\n\tcase errCodeEndGroup:\n\t\treturn errEndGroup\n\tdefault:\n\t\treturn errParse\n\t}\n}\n\n// ConsumeField parses an entire field record (both tag and value) and returns\n// the field number, the wire type, and the total length.\n// This returns a negative length upon an error (see [ParseError]).\n//\n// The total length includes the tag header and the end group marker (if the\n// field is a group).\nfunc ConsumeField(b []byte) (Number, Type, int) {\n\tnum, typ, n := ConsumeTag(b)\n\tif n < 0 {\n\t\treturn 0, 0, n // forward error code\n\t}\n\tm := ConsumeFieldValue(num, typ, b[n:])\n\tif m < 0 {\n\t\treturn 0, 0, m // forward error code\n\t}\n\treturn num, typ, n + m\n}\n\n// ConsumeFieldValue parses a field value and returns its length.\n// This assumes that the field [Number] and wire [Type] have already been parsed.\n// This returns a negative length upon an error (see [ParseError]).\n//\n// When parsing a group, the length includes the end group marker and\n// the end group is verified to match the starting field number.\nfunc ConsumeFieldValue(num Number, typ Type, b []byte) (n int) {\n\treturn consumeFieldValueD(num, typ, b, DefaultRecursionLimit)\n}\n\nfunc consumeFieldValueD(num Number, typ Type, b []byte, depth int) (n int) {\n\tswitch typ {\n\tcase VarintType:\n\t\t_, n = ConsumeVarint(b)\n\t\treturn n\n\tcase Fixed32Type:\n\t\t_, n = ConsumeFixed32(b)\n\t\treturn n\n\tcase Fixed64Type:\n\t\t_, n = ConsumeFixed64(b)\n\t\treturn n\n\tcase BytesType:\n\t\t_, n = ConsumeBytes(b)\n\t\treturn n\n\tcase StartGroupType:\n\t\tif depth < 0 {\n\t\t\treturn errCodeRecursionDepth\n\t\t}\n\t\tn0 := len(b)\n\t\tfor {\n\t\t\tnum2, typ2, n := ConsumeTag(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn n // forward error code\n\t\t\t}\n\t\t\tb = b[n:]\n\t\t\tif typ2 == EndGroupType {\n\t\t\t\tif num != num2 {\n\t\t\t\t\treturn errCodeEndGroup\n\t\t\t\t}\n\t\t\t\treturn n0 - len(b)\n\t\t\t}\n\n\t\t\tn = consumeFieldValueD(num2, typ2, b, depth-1)\n\t\t\tif n < 0 {\n\t\t\t\treturn n // forward error code\n\t\t\t}\n\t\t\tb = b[n:]\n\t\t}\n\tcase EndGroupType:\n\t\treturn errCodeEndGroup\n\tdefault:\n\t\treturn errCodeReserved\n\t}\n}\n\n// AppendTag encodes num and typ as a varint-encoded tag and appends it to b.\nfunc AppendTag(b []byte, num Number, typ Type) []byte {\n\treturn AppendVarint(b, EncodeTag(num, typ))\n}\n\n// ConsumeTag parses b as a varint-encoded tag, reporting its length.\n// This returns a negative length upon an error (see [ParseError]).\nfunc ConsumeTag(b []byte) (Number, Type, int) {\n\tv, n := ConsumeVarint(b)\n\tif n < 0 {\n\t\treturn 0, 0, n // forward error code\n\t}\n\tnum, typ := DecodeTag(v)\n\tif num < MinValidNumber {\n\t\treturn 0, 0, errCodeFieldNumber\n\t}\n\treturn num, typ, n\n}\n\nfunc SizeTag(num Number) int {\n\treturn SizeVarint(EncodeTag(num, 0)) // wire type has no effect on size\n}\n\n// AppendVarint appends v to b as a varint-encoded uint64.\nfunc AppendVarint(b []byte, v uint64) []byte {\n\tswitch {\n\tcase v < 1<<7:\n\t\tb = append(b, byte(v))\n\tcase v < 1<<14:\n\t\tb = append(b,\n\t\t\tbyte((v>>0)&0x7f|0x80),\n\t\t\tbyte(v>>7))\n\tcase v < 1<<21:\n\t\tb = append(b,\n\t\t\tbyte((v>>0)&0x7f|0x80),\n\t\t\tbyte((v>>7)&0x7f|0x80),\n\t\t\tbyte(v>>14))\n\tcase v < 1<<28:\n\t\tb = append(b,\n\t\t\tbyte((v>>0)&0x7f|0x80),\n\t\t\tbyte((v>>7)&0x7f|0x80),\n\t\t\tbyte((v>>14)&0x7f|0x80),\n\t\t\tbyte(v>>21))\n\tcase v < 1<<35:\n\t\tb = append(b,\n\t\t\tbyte((v>>0)&0x7f|0x80),\n\t\t\tbyte((v>>7)&0x7f|0x80),\n\t\t\tbyte((v>>14)&0x7f|0x80),\n\t\t\tbyte((v>>21)&0x7f|0x80),\n\t\t\tbyte(v>>28))\n\tcase v < 1<<42:\n\t\tb = append(b,\n\t\t\tbyte((v>>0)&0x7f|0x80),\n\t\t\tbyte((v>>7)&0x7f|0x80),\n\t\t\tbyte((v>>14)&0x7f|0x80),\n\t\t\tbyte((v>>21)&0x7f|0x80),\n\t\t\tbyte((v>>28)&0x7f|0x80),\n\t\t\tbyte(v>>35))\n\tcase v < 1<<49:\n\t\tb = append(b,\n\t\t\tbyte((v>>0)&0x7f|0x80),\n\t\t\tbyte((v>>7)&0x7f|0x80),\n\t\t\tbyte((v>>14)&0x7f|0x80),\n\t\t\tbyte((v>>21)&0x7f|0x80),\n\t\t\tbyte((v>>28)&0x7f|0x80),\n\t\t\tbyte((v>>35)&0x7f|0x80),\n\t\t\tbyte(v>>42))\n\tcase v < 1<<56:\n\t\tb = append(b,\n\t\t\tbyte((v>>0)&0x7f|0x80),\n\t\t\tbyte((v>>7)&0x7f|0x80),\n\t\t\tbyte((v>>14)&0x7f|0x80),\n\t\t\tbyte((v>>21)&0x7f|0x80),\n\t\t\tbyte((v>>28)&0x7f|0x80),\n\t\t\tbyte((v>>35)&0x7f|0x80),\n\t\t\tbyte((v>>42)&0x7f|0x80),\n\t\t\tbyte(v>>49))\n\tcase v < 1<<63:\n\t\tb = append(b,\n\t\t\tbyte((v>>0)&0x7f|0x80),\n\t\t\tbyte((v>>7)&0x7f|0x80),\n\t\t\tbyte((v>>14)&0x7f|0x80),\n\t\t\tbyte((v>>21)&0x7f|0x80),\n\t\t\tbyte((v>>28)&0x7f|0x80),\n\t\t\tbyte((v>>35)&0x7f|0x80),\n\t\t\tbyte((v>>42)&0x7f|0x80),\n\t\t\tbyte((v>>49)&0x7f|0x80),\n\t\t\tbyte(v>>56))\n\tdefault:\n\t\tb = append(b,\n\t\t\tbyte((v>>0)&0x7f|0x80),\n\t\t\tbyte((v>>7)&0x7f|0x80),\n\t\t\tbyte((v>>14)&0x7f|0x80),\n\t\t\tbyte((v>>21)&0x7f|0x80),\n\t\t\tbyte((v>>28)&0x7f|0x80),\n\t\t\tbyte((v>>35)&0x7f|0x80),\n\t\t\tbyte((v>>42)&0x7f|0x80),\n\t\t\tbyte((v>>49)&0x7f|0x80),\n\t\t\tbyte((v>>56)&0x7f|0x80),\n\t\t\t1)\n\t}\n\treturn b\n}\n\n// ConsumeVarint parses b as a varint-encoded uint64, reporting its length.\n// This returns a negative length upon an error (see [ParseError]).\nfunc ConsumeVarint(b []byte) (v uint64, n int) {\n\tvar y uint64\n\tif len(b) <= 0 {\n\t\treturn 0, errCodeTruncated\n\t}\n\tv = uint64(b[0])\n\tif v < 0x80 {\n\t\treturn v, 1\n\t}\n\tv -= 0x80\n\n\tif len(b) <= 1 {\n\t\treturn 0, errCodeTruncated\n\t}\n\ty = uint64(b[1])\n\tv += y << 7\n\tif y < 0x80 {\n\t\treturn v, 2\n\t}\n\tv -= 0x80 << 7\n\n\tif len(b) <= 2 {\n\t\treturn 0, errCodeTruncated\n\t}\n\ty = uint64(b[2])\n\tv += y << 14\n\tif y < 0x80 {\n\t\treturn v, 3\n\t}\n\tv -= 0x80 << 14\n\n\tif len(b) <= 3 {\n\t\treturn 0, errCodeTruncated\n\t}\n\ty = uint64(b[3])\n\tv += y << 21\n\tif y < 0x80 {\n\t\treturn v, 4\n\t}\n\tv -= 0x80 << 21\n\n\tif len(b) <= 4 {\n\t\treturn 0, errCodeTruncated\n\t}\n\ty = uint64(b[4])\n\tv += y << 28\n\tif y < 0x80 {\n\t\treturn v, 5\n\t}\n\tv -= 0x80 << 28\n\n\tif len(b) <= 5 {\n\t\treturn 0, errCodeTruncated\n\t}\n\ty = uint64(b[5])\n\tv += y << 35\n\tif y < 0x80 {\n\t\treturn v, 6\n\t}\n\tv -= 0x80 << 35\n\n\tif len(b) <= 6 {\n\t\treturn 0, errCodeTruncated\n\t}\n\ty = uint64(b[6])\n\tv += y << 42\n\tif y < 0x80 {\n\t\treturn v, 7\n\t}\n\tv -= 0x80 << 42\n\n\tif len(b) <= 7 {\n\t\treturn 0, errCodeTruncated\n\t}\n\ty = uint64(b[7])\n\tv += y << 49\n\tif y < 0x80 {\n\t\treturn v, 8\n\t}\n\tv -= 0x80 << 49\n\n\tif len(b) <= 8 {\n\t\treturn 0, errCodeTruncated\n\t}\n\ty = uint64(b[8])\n\tv += y << 56\n\tif y < 0x80 {\n\t\treturn v, 9\n\t}\n\tv -= 0x80 << 56\n\n\tif len(b) <= 9 {\n\t\treturn 0, errCodeTruncated\n\t}\n\ty = uint64(b[9])\n\tv += y << 63\n\tif y < 2 {\n\t\treturn v, 10\n\t}\n\treturn 0, errCodeOverflow\n}\n\n// SizeVarint returns the encoded size of a varint.\n// The size is guaranteed to be within 1 and 10, inclusive.\nfunc SizeVarint(v uint64) int {\n\t// This computes 1 + (bits.Len64(v)-1)/7.\n\t// 9/64 is a good enough approximation of 1/7\n\t//\n\t// The Go compiler can translate the bits.LeadingZeros64 call into the LZCNT\n\t// instruction, which is very fast on CPUs from the last few years. The\n\t// specific way of expressing the calculation matches C++ Protobuf, see\n\t// https://godbolt.org/z/4P3h53oM4 for the C++ code and how gcc/clang\n\t// optimize that function for GOAMD64=v1 and GOAMD64=v3 (-march=haswell).\n\n\t// By OR'ing v with 1, we guarantee that v is never 0, without changing the\n\t// result of SizeVarint. LZCNT is not defined for 0, meaning the compiler\n\t// needs to add extra instructions to handle that case.\n\t//\n\t// The Go compiler currently (go1.24.4) does not make use of this knowledge.\n\t// This opportunity (removing the XOR instruction, which handles the 0 case)\n\t// results in a small (1%) performance win across CPU architectures.\n\t//\n\t// Independently of avoiding the 0 case, we need the v |= 1 line because\n\t// it allows the Go compiler to eliminate an extra XCHGL barrier.\n\tv |= 1\n\n\t// It would be clearer to write log2value := 63 - uint32(...), but\n\t// writing uint32(...) ^ 63 is much more efficient (-14% ARM, -20% Intel).\n\t// Proof of identity for our value range [0..63]:\n\t// https://go.dev/play/p/Pdn9hEWYakX\n\tlog2value := uint32(bits.LeadingZeros64(v)) ^ 63\n\treturn int((log2value*9 + (64 + 9)) / 64)\n}\n\n// AppendFixed32 appends v to b as a little-endian uint32.\nfunc AppendFixed32(b []byte, v uint32) []byte {\n\treturn append(b,\n\t\tbyte(v>>0),\n\t\tbyte(v>>8),\n\t\tbyte(v>>16),\n\t\tbyte(v>>24))\n}\n\n// ConsumeFixed32 parses b as a little-endian uint32, reporting its length.\n// This returns a negative length upon an error (see [ParseError]).\nfunc ConsumeFixed32(b []byte) (v uint32, n int) {\n\tif len(b) < 4 {\n\t\treturn 0, errCodeTruncated\n\t}\n\tv = uint32(b[0])<<0 | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24\n\treturn v, 4\n}\n\n// SizeFixed32 returns the encoded size of a fixed32; which is always 4.\nfunc SizeFixed32() int {\n\treturn 4\n}\n\n// AppendFixed64 appends v to b as a little-endian uint64.\nfunc AppendFixed64(b []byte, v uint64) []byte {\n\treturn append(b,\n\t\tbyte(v>>0),\n\t\tbyte(v>>8),\n\t\tbyte(v>>16),\n\t\tbyte(v>>24),\n\t\tbyte(v>>32),\n\t\tbyte(v>>40),\n\t\tbyte(v>>48),\n\t\tbyte(v>>56))\n}\n\n// ConsumeFixed64 parses b as a little-endian uint64, reporting its length.\n// This returns a negative length upon an error (see [ParseError]).\nfunc ConsumeFixed64(b []byte) (v uint64, n int) {\n\tif len(b) < 8 {\n\t\treturn 0, errCodeTruncated\n\t}\n\tv = uint64(b[0])<<0 | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56\n\treturn v, 8\n}\n\n// SizeFixed64 returns the encoded size of a fixed64; which is always 8.\nfunc SizeFixed64() int {\n\treturn 8\n}\n\n// AppendBytes appends v to b as a length-prefixed bytes value.\nfunc AppendBytes(b []byte, v []byte) []byte {\n\treturn append(AppendVarint(b, uint64(len(v))), v...)\n}\n\n// ConsumeBytes parses b as a length-prefixed bytes value, reporting its length.\n// This returns a negative length upon an error (see [ParseError]).\nfunc ConsumeBytes(b []byte) (v []byte, n int) {\n\tm, n := ConsumeVarint(b)\n\tif n < 0 {\n\t\treturn nil, n // forward error code\n\t}\n\tif m > uint64(len(b[n:])) {\n\t\treturn nil, errCodeTruncated\n\t}\n\treturn b[n:][:m], n + int(m)\n}\n\n// SizeBytes returns the encoded size of a length-prefixed bytes value,\n// given only the length.\nfunc SizeBytes(n int) int {\n\treturn SizeVarint(uint64(n)) + n\n}\n\n// AppendString appends v to b as a length-prefixed bytes value.\nfunc AppendString(b []byte, v string) []byte {\n\treturn append(AppendVarint(b, uint64(len(v))), v...)\n}\n\n// ConsumeString parses b as a length-prefixed bytes value, reporting its length.\n// This returns a negative length upon an error (see [ParseError]).\nfunc ConsumeString(b []byte) (v string, n int) {\n\tbb, n := ConsumeBytes(b)\n\treturn string(bb), n\n}\n\n// AppendGroup appends v to b as group value, with a trailing end group marker.\n// The value v must not contain the end marker.\nfunc AppendGroup(b []byte, num Number, v []byte) []byte {\n\treturn AppendVarint(append(b, v...), EncodeTag(num, EndGroupType))\n}\n\n// ConsumeGroup parses b as a group value until the trailing end group marker,\n// and verifies that the end marker matches the provided num. The value v\n// does not contain the end marker, while the length does contain the end marker.\n// This returns a negative length upon an error (see [ParseError]).\nfunc ConsumeGroup(num Number, b []byte) (v []byte, n int) {\n\tn = ConsumeFieldValue(num, StartGroupType, b)\n\tif n < 0 {\n\t\treturn nil, n // forward error code\n\t}\n\tb = b[:n]\n\n\t// Truncate off end group marker, but need to handle denormalized varints.\n\t// Assuming end marker is never 0 (which is always the case since\n\t// EndGroupType is non-zero), we can truncate all trailing bytes where the\n\t// lower 7 bits are all zero (implying that the varint is denormalized).\n\tfor len(b) > 0 && b[len(b)-1]&0x7f == 0 {\n\t\tb = b[:len(b)-1]\n\t}\n\tb = b[:len(b)-SizeTag(num)]\n\treturn b, n\n}\n\n// SizeGroup returns the encoded size of a group, given only the length.\nfunc SizeGroup(num Number, n int) int {\n\treturn n + SizeTag(num)\n}\n\n// DecodeTag decodes the field [Number] and wire [Type] from its unified form.\n// The [Number] is -1 if the decoded field number overflows int32.\n// Other than overflow, this does not check for field number validity.\nfunc DecodeTag(x uint64) (Number, Type) {\n\t// NOTE: MessageSet allows for larger field numbers than normal.\n\tif x>>3 > uint64(math.MaxInt32) {\n\t\treturn -1, 0\n\t}\n\treturn Number(x >> 3), Type(x & 7)\n}\n\n// EncodeTag encodes the field [Number] and wire [Type] into its unified form.\nfunc EncodeTag(num Number, typ Type) uint64 {\n\treturn uint64(num)<<3 | uint64(typ&7)\n}\n\n// DecodeZigZag decodes a zig-zag-encoded uint64 as an int64.\n//\n//\tInput:  {…,  5,  3,  1,  0,  2,  4,  6, …}\n//\tOutput: {…, -3, -2, -1,  0, +1, +2, +3, …}\nfunc DecodeZigZag(x uint64) int64 {\n\treturn int64(x>>1) ^ int64(x)<<63>>63\n}\n\n// EncodeZigZag encodes an int64 as a zig-zag-encoded uint64.\n//\n//\tInput:  {…, -3, -2, -1,  0, +1, +2, +3, …}\n//\tOutput: {…,  5,  3,  1,  0,  2,  4,  6, …}\nfunc EncodeZigZag(x int64) uint64 {\n\treturn uint64(x<<1) ^ uint64(x>>63)\n}\n\n// DecodeBool decodes a uint64 as a bool.\n//\n//\tInput:  {    0,    1,    2, …}\n//\tOutput: {false, true, true, …}\nfunc DecodeBool(x uint64) bool {\n\treturn x != 0\n}\n\n// EncodeBool encodes a bool as a uint64.\n//\n//\tInput:  {false, true}\n//\tOutput: {    0,    1}\nfunc EncodeBool(x bool) uint64 {\n\tif x {\n\t\treturn 1\n\t}\n\treturn 0\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/descfmt/stringer.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package descfmt provides functionality to format descriptors.\npackage descfmt\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"reflect\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"google.golang.org/protobuf/internal/detrand\"\n\t\"google.golang.org/protobuf/internal/pragma\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\ntype list interface {\n\tLen() int\n\tpragma.DoNotImplement\n}\n\nfunc FormatList(s fmt.State, r rune, vs list) {\n\tio.WriteString(s, formatListOpt(vs, true, r == 'v' && (s.Flag('+') || s.Flag('#'))))\n}\nfunc formatListOpt(vs list, isRoot, allowMulti bool) string {\n\tstart, end := \"[\", \"]\"\n\tif isRoot {\n\t\tvar name string\n\t\tswitch vs.(type) {\n\t\tcase protoreflect.Names:\n\t\t\tname = \"Names\"\n\t\tcase protoreflect.FieldNumbers:\n\t\t\tname = \"FieldNumbers\"\n\t\tcase protoreflect.FieldRanges:\n\t\t\tname = \"FieldRanges\"\n\t\tcase protoreflect.EnumRanges:\n\t\t\tname = \"EnumRanges\"\n\t\tcase protoreflect.FileImports:\n\t\t\tname = \"FileImports\"\n\t\tcase protoreflect.Descriptor:\n\t\t\tname = reflect.ValueOf(vs).MethodByName(\"Get\").Type().Out(0).Name() + \"s\"\n\t\tdefault:\n\t\t\tname = reflect.ValueOf(vs).Elem().Type().Name()\n\t\t}\n\t\tstart, end = name+\"{\", \"}\"\n\t}\n\n\tvar ss []string\n\tswitch vs := vs.(type) {\n\tcase protoreflect.Names:\n\t\tfor i := 0; i < vs.Len(); i++ {\n\t\t\tss = append(ss, fmt.Sprint(vs.Get(i)))\n\t\t}\n\t\treturn start + joinStrings(ss, false) + end\n\tcase protoreflect.FieldNumbers:\n\t\tfor i := 0; i < vs.Len(); i++ {\n\t\t\tss = append(ss, fmt.Sprint(vs.Get(i)))\n\t\t}\n\t\treturn start + joinStrings(ss, false) + end\n\tcase protoreflect.FieldRanges:\n\t\tfor i := 0; i < vs.Len(); i++ {\n\t\t\tr := vs.Get(i)\n\t\t\tif r[0]+1 == r[1] {\n\t\t\t\tss = append(ss, fmt.Sprintf(\"%d\", r[0]))\n\t\t\t} else {\n\t\t\t\tss = append(ss, fmt.Sprintf(\"%d:%d\", r[0], r[1])) // enum ranges are end exclusive\n\t\t\t}\n\t\t}\n\t\treturn start + joinStrings(ss, false) + end\n\tcase protoreflect.EnumRanges:\n\t\tfor i := 0; i < vs.Len(); i++ {\n\t\t\tr := vs.Get(i)\n\t\t\tif r[0] == r[1] {\n\t\t\t\tss = append(ss, fmt.Sprintf(\"%d\", r[0]))\n\t\t\t} else {\n\t\t\t\tss = append(ss, fmt.Sprintf(\"%d:%d\", r[0], int64(r[1])+1)) // enum ranges are end inclusive\n\t\t\t}\n\t\t}\n\t\treturn start + joinStrings(ss, false) + end\n\tcase protoreflect.FileImports:\n\t\tfor i := 0; i < vs.Len(); i++ {\n\t\t\tvar rs records\n\t\t\trv := reflect.ValueOf(vs.Get(i))\n\t\t\trs.Append(rv, []methodAndName{\n\t\t\t\t{rv.MethodByName(\"Path\"), \"Path\"},\n\t\t\t\t{rv.MethodByName(\"Package\"), \"Package\"},\n\t\t\t\t{rv.MethodByName(\"IsPublic\"), \"IsPublic\"},\n\t\t\t\t{rv.MethodByName(\"IsWeak\"), \"IsWeak\"},\n\t\t\t}...)\n\t\t\tss = append(ss, \"{\"+rs.Join()+\"}\")\n\t\t}\n\t\treturn start + joinStrings(ss, allowMulti) + end\n\tdefault:\n\t\t_, isEnumValue := vs.(protoreflect.EnumValueDescriptors)\n\t\tfor i := 0; i < vs.Len(); i++ {\n\t\t\tm := reflect.ValueOf(vs).MethodByName(\"Get\")\n\t\t\tv := m.Call([]reflect.Value{reflect.ValueOf(i)})[0].Interface()\n\t\t\tss = append(ss, formatDescOpt(v.(protoreflect.Descriptor), false, allowMulti && !isEnumValue, nil))\n\t\t}\n\t\treturn start + joinStrings(ss, allowMulti && isEnumValue) + end\n\t}\n}\n\ntype methodAndName struct {\n\tmethod reflect.Value\n\tname   string\n}\n\nfunc FormatDesc(s fmt.State, r rune, t protoreflect.Descriptor) {\n\tio.WriteString(s, formatDescOpt(t, true, r == 'v' && (s.Flag('+') || s.Flag('#')), nil))\n}\n\nfunc InternalFormatDescOptForTesting(t protoreflect.Descriptor, isRoot, allowMulti bool, record func(string)) string {\n\treturn formatDescOpt(t, isRoot, allowMulti, record)\n}\n\nfunc formatDescOpt(t protoreflect.Descriptor, isRoot, allowMulti bool, record func(string)) string {\n\trv := reflect.ValueOf(t)\n\trt := rv.MethodByName(\"ProtoType\").Type().In(0)\n\n\tstart, end := \"{\", \"}\"\n\tif isRoot {\n\t\tstart = rt.Name() + \"{\"\n\t}\n\n\t_, isFile := t.(protoreflect.FileDescriptor)\n\trs := records{\n\t\tallowMulti: allowMulti,\n\t\trecord:     record,\n\t}\n\tif t.IsPlaceholder() {\n\t\tif isFile {\n\t\t\trs.Append(rv, []methodAndName{\n\t\t\t\t{rv.MethodByName(\"Path\"), \"Path\"},\n\t\t\t\t{rv.MethodByName(\"Package\"), \"Package\"},\n\t\t\t\t{rv.MethodByName(\"IsPlaceholder\"), \"IsPlaceholder\"},\n\t\t\t}...)\n\t\t} else {\n\t\t\trs.Append(rv, []methodAndName{\n\t\t\t\t{rv.MethodByName(\"FullName\"), \"FullName\"},\n\t\t\t\t{rv.MethodByName(\"IsPlaceholder\"), \"IsPlaceholder\"},\n\t\t\t}...)\n\t\t}\n\t} else {\n\t\tswitch {\n\t\tcase isFile:\n\t\t\trs.Append(rv, methodAndName{rv.MethodByName(\"Syntax\"), \"Syntax\"})\n\t\tcase isRoot:\n\t\t\trs.Append(rv, []methodAndName{\n\t\t\t\t{rv.MethodByName(\"Syntax\"), \"Syntax\"},\n\t\t\t\t{rv.MethodByName(\"FullName\"), \"FullName\"},\n\t\t\t}...)\n\t\tdefault:\n\t\t\trs.Append(rv, methodAndName{rv.MethodByName(\"Name\"), \"Name\"})\n\t\t}\n\t\tswitch t := t.(type) {\n\t\tcase protoreflect.FieldDescriptor:\n\t\t\taccessors := []methodAndName{\n\t\t\t\t{rv.MethodByName(\"Number\"), \"Number\"},\n\t\t\t\t{rv.MethodByName(\"Cardinality\"), \"Cardinality\"},\n\t\t\t\t{rv.MethodByName(\"Kind\"), \"Kind\"},\n\t\t\t\t{rv.MethodByName(\"HasJSONName\"), \"HasJSONName\"},\n\t\t\t\t{rv.MethodByName(\"JSONName\"), \"JSONName\"},\n\t\t\t\t{rv.MethodByName(\"HasPresence\"), \"HasPresence\"},\n\t\t\t\t{rv.MethodByName(\"IsExtension\"), \"IsExtension\"},\n\t\t\t\t{rv.MethodByName(\"IsPacked\"), \"IsPacked\"},\n\t\t\t\t{rv.MethodByName(\"IsWeak\"), \"IsWeak\"},\n\t\t\t\t{rv.MethodByName(\"IsList\"), \"IsList\"},\n\t\t\t\t{rv.MethodByName(\"IsMap\"), \"IsMap\"},\n\t\t\t\t{rv.MethodByName(\"MapKey\"), \"MapKey\"},\n\t\t\t\t{rv.MethodByName(\"MapValue\"), \"MapValue\"},\n\t\t\t\t{rv.MethodByName(\"HasDefault\"), \"HasDefault\"},\n\t\t\t\t{rv.MethodByName(\"Default\"), \"Default\"},\n\t\t\t\t{rv.MethodByName(\"ContainingOneof\"), \"ContainingOneof\"},\n\t\t\t\t{rv.MethodByName(\"ContainingMessage\"), \"ContainingMessage\"},\n\t\t\t\t{rv.MethodByName(\"Message\"), \"Message\"},\n\t\t\t\t{rv.MethodByName(\"Enum\"), \"Enum\"},\n\t\t\t}\n\t\t\tfor _, s := range accessors {\n\t\t\t\tswitch s.name {\n\t\t\t\tcase \"MapKey\":\n\t\t\t\t\tif k := t.MapKey(); k != nil {\n\t\t\t\t\t\trs.recs = append(rs.recs, [2]string{\"MapKey\", k.Kind().String()})\n\t\t\t\t\t}\n\t\t\t\tcase \"MapValue\":\n\t\t\t\t\tif v := t.MapValue(); v != nil {\n\t\t\t\t\t\tswitch v.Kind() {\n\t\t\t\t\t\tcase protoreflect.EnumKind:\n\t\t\t\t\t\t\trs.AppendRecs(\"MapValue\", [2]string{\"MapValue\", string(v.Enum().FullName())})\n\t\t\t\t\t\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\t\t\t\t\t\trs.AppendRecs(\"MapValue\", [2]string{\"MapValue\", string(v.Message().FullName())})\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\trs.AppendRecs(\"MapValue\", [2]string{\"MapValue\", v.Kind().String()})\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\tcase \"ContainingOneof\":\n\t\t\t\t\tif od := t.ContainingOneof(); od != nil {\n\t\t\t\t\t\trs.AppendRecs(\"ContainingOneof\", [2]string{\"Oneof\", string(od.Name())})\n\t\t\t\t\t}\n\t\t\t\tcase \"ContainingMessage\":\n\t\t\t\t\tif t.IsExtension() {\n\t\t\t\t\t\trs.AppendRecs(\"ContainingMessage\", [2]string{\"Extendee\", string(t.ContainingMessage().FullName())})\n\t\t\t\t\t}\n\t\t\t\tcase \"Message\":\n\t\t\t\t\tif !t.IsMap() {\n\t\t\t\t\t\trs.Append(rv, s)\n\t\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\trs.Append(rv, s)\n\t\t\t\t}\n\t\t\t}\n\t\tcase protoreflect.OneofDescriptor:\n\t\t\tvar ss []string\n\t\t\tfs := t.Fields()\n\t\t\tfor i := 0; i < fs.Len(); i++ {\n\t\t\t\tss = append(ss, string(fs.Get(i).Name()))\n\t\t\t}\n\t\t\tif len(ss) > 0 {\n\t\t\t\trs.AppendRecs(\"Fields\", [2]string{\"Fields\", \"[\" + joinStrings(ss, false) + \"]\"})\n\t\t\t}\n\n\t\tcase protoreflect.FileDescriptor:\n\t\t\trs.Append(rv, []methodAndName{\n\t\t\t\t{rv.MethodByName(\"Path\"), \"Path\"},\n\t\t\t\t{rv.MethodByName(\"Package\"), \"Package\"},\n\t\t\t\t{rv.MethodByName(\"Imports\"), \"Imports\"},\n\t\t\t\t{rv.MethodByName(\"Messages\"), \"Messages\"},\n\t\t\t\t{rv.MethodByName(\"Enums\"), \"Enums\"},\n\t\t\t\t{rv.MethodByName(\"Extensions\"), \"Extensions\"},\n\t\t\t\t{rv.MethodByName(\"Services\"), \"Services\"},\n\t\t\t}...)\n\n\t\tcase protoreflect.MessageDescriptor:\n\t\t\trs.Append(rv, []methodAndName{\n\t\t\t\t{rv.MethodByName(\"IsMapEntry\"), \"IsMapEntry\"},\n\t\t\t\t{rv.MethodByName(\"Fields\"), \"Fields\"},\n\t\t\t\t{rv.MethodByName(\"Oneofs\"), \"Oneofs\"},\n\t\t\t\t{rv.MethodByName(\"ReservedNames\"), \"ReservedNames\"},\n\t\t\t\t{rv.MethodByName(\"ReservedRanges\"), \"ReservedRanges\"},\n\t\t\t\t{rv.MethodByName(\"RequiredNumbers\"), \"RequiredNumbers\"},\n\t\t\t\t{rv.MethodByName(\"ExtensionRanges\"), \"ExtensionRanges\"},\n\t\t\t\t{rv.MethodByName(\"Messages\"), \"Messages\"},\n\t\t\t\t{rv.MethodByName(\"Enums\"), \"Enums\"},\n\t\t\t\t{rv.MethodByName(\"Extensions\"), \"Extensions\"},\n\t\t\t}...)\n\n\t\tcase protoreflect.EnumDescriptor:\n\t\t\trs.Append(rv, []methodAndName{\n\t\t\t\t{rv.MethodByName(\"Values\"), \"Values\"},\n\t\t\t\t{rv.MethodByName(\"ReservedNames\"), \"ReservedNames\"},\n\t\t\t\t{rv.MethodByName(\"ReservedRanges\"), \"ReservedRanges\"},\n\t\t\t\t{rv.MethodByName(\"IsClosed\"), \"IsClosed\"},\n\t\t\t}...)\n\n\t\tcase protoreflect.EnumValueDescriptor:\n\t\t\trs.Append(rv, []methodAndName{\n\t\t\t\t{rv.MethodByName(\"Number\"), \"Number\"},\n\t\t\t}...)\n\n\t\tcase protoreflect.ServiceDescriptor:\n\t\t\trs.Append(rv, []methodAndName{\n\t\t\t\t{rv.MethodByName(\"Methods\"), \"Methods\"},\n\t\t\t}...)\n\n\t\tcase protoreflect.MethodDescriptor:\n\t\t\trs.Append(rv, []methodAndName{\n\t\t\t\t{rv.MethodByName(\"Input\"), \"Input\"},\n\t\t\t\t{rv.MethodByName(\"Output\"), \"Output\"},\n\t\t\t\t{rv.MethodByName(\"IsStreamingClient\"), \"IsStreamingClient\"},\n\t\t\t\t{rv.MethodByName(\"IsStreamingServer\"), \"IsStreamingServer\"},\n\t\t\t}...)\n\t\t}\n\t\tif m := rv.MethodByName(\"GoType\"); m.IsValid() {\n\t\t\trs.Append(rv, methodAndName{m, \"GoType\"})\n\t\t}\n\t}\n\treturn start + rs.Join() + end\n}\n\ntype records struct {\n\trecs       [][2]string\n\tallowMulti bool\n\n\t// record is a function that will be called for every Append() or\n\t// AppendRecs() call, to be used for testing with the\n\t// InternalFormatDescOptForTesting function.\n\trecord func(string)\n}\n\nfunc (rs *records) AppendRecs(fieldName string, newRecs [2]string) {\n\tif rs.record != nil {\n\t\trs.record(fieldName)\n\t}\n\trs.recs = append(rs.recs, newRecs)\n}\n\nfunc (rs *records) Append(v reflect.Value, accessors ...methodAndName) {\n\tfor _, a := range accessors {\n\t\tif rs.record != nil {\n\t\t\trs.record(a.name)\n\t\t}\n\t\tvar rv reflect.Value\n\t\tif a.method.IsValid() {\n\t\t\trv = a.method.Call(nil)[0]\n\t\t}\n\t\tif v.Kind() == reflect.Struct && !rv.IsValid() {\n\t\t\trv = v.FieldByName(a.name)\n\t\t}\n\t\tif !rv.IsValid() {\n\t\t\tpanic(fmt.Sprintf(\"unknown accessor: %v.%s\", v.Type(), a.name))\n\t\t}\n\t\tif _, ok := rv.Interface().(protoreflect.Value); ok {\n\t\t\trv = rv.MethodByName(\"Interface\").Call(nil)[0]\n\t\t\tif !rv.IsNil() {\n\t\t\t\trv = rv.Elem()\n\t\t\t}\n\t\t}\n\n\t\t// Ignore zero values.\n\t\tvar isZero bool\n\t\tswitch rv.Kind() {\n\t\tcase reflect.Interface, reflect.Slice:\n\t\t\tisZero = rv.IsNil()\n\t\tcase reflect.Bool:\n\t\t\tisZero = rv.Bool() == false\n\t\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\t\tisZero = rv.Int() == 0\n\t\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:\n\t\t\tisZero = rv.Uint() == 0\n\t\tcase reflect.String:\n\t\t\tisZero = rv.String() == \"\"\n\t\t}\n\t\tif n, ok := rv.Interface().(list); ok {\n\t\t\tisZero = n.Len() == 0\n\t\t}\n\t\tif isZero {\n\t\t\tcontinue\n\t\t}\n\n\t\t// Format the value.\n\t\tvar s string\n\t\tv := rv.Interface()\n\t\tswitch v := v.(type) {\n\t\tcase list:\n\t\t\ts = formatListOpt(v, false, rs.allowMulti)\n\t\tcase protoreflect.FieldDescriptor, protoreflect.OneofDescriptor, protoreflect.EnumValueDescriptor, protoreflect.MethodDescriptor:\n\t\t\ts = string(v.(protoreflect.Descriptor).Name())\n\t\tcase protoreflect.Descriptor:\n\t\t\ts = string(v.FullName())\n\t\tcase string:\n\t\t\ts = strconv.Quote(v)\n\t\tcase []byte:\n\t\t\ts = fmt.Sprintf(\"%q\", v)\n\t\tdefault:\n\t\t\ts = fmt.Sprint(v)\n\t\t}\n\t\trs.recs = append(rs.recs, [2]string{a.name, s})\n\t}\n}\n\nfunc (rs *records) Join() string {\n\tvar ss []string\n\n\t// In single line mode, simply join all records with commas.\n\tif !rs.allowMulti {\n\t\tfor _, r := range rs.recs {\n\t\t\tss = append(ss, r[0]+formatColon(0)+r[1])\n\t\t}\n\t\treturn joinStrings(ss, false)\n\t}\n\n\t// In allowMulti line mode, align single line records for more readable output.\n\tvar maxLen int\n\tflush := func(i int) {\n\t\tfor _, r := range rs.recs[len(ss):i] {\n\t\t\tss = append(ss, r[0]+formatColon(maxLen-len(r[0]))+r[1])\n\t\t}\n\t\tmaxLen = 0\n\t}\n\tfor i, r := range rs.recs {\n\t\tif isMulti := strings.Contains(r[1], \"\\n\"); isMulti {\n\t\t\tflush(i)\n\t\t\tss = append(ss, r[0]+formatColon(0)+strings.Join(strings.Split(r[1], \"\\n\"), \"\\n\\t\"))\n\t\t} else if maxLen < len(r[0]) {\n\t\t\tmaxLen = len(r[0])\n\t\t}\n\t}\n\tflush(len(rs.recs))\n\treturn joinStrings(ss, true)\n}\n\nfunc formatColon(padding int) string {\n\t// Deliberately introduce instability into the debug output to\n\t// discourage users from performing string comparisons.\n\t// This provides us flexibility to change the output in the future.\n\tif detrand.Bool() {\n\t\treturn \":\" + strings.Repeat(\" \", 1+padding) // use non-breaking spaces (U+00a0)\n\t} else {\n\t\treturn \":\" + strings.Repeat(\" \", 1+padding) // use regular spaces (U+0020)\n\t}\n}\n\nfunc joinStrings(ss []string, isMulti bool) string {\n\tif len(ss) == 0 {\n\t\treturn \"\"\n\t}\n\tif isMulti {\n\t\treturn \"\\n\\t\" + strings.Join(ss, \"\\n\\t\") + \"\\n\"\n\t}\n\treturn strings.Join(ss, \", \")\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/descopts/options.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package descopts contains the nil pointers to concrete descriptor options.\n//\n// This package exists as a form of reverse dependency injection so that certain\n// packages (e.g., internal/filedesc and internal/filetype can avoid a direct\n// dependency on the descriptor proto package).\npackage descopts\n\nimport \"google.golang.org/protobuf/reflect/protoreflect\"\n\n// These variables are set by the init function in descriptor.pb.go via logic\n// in internal/filetype. In other words, so long as the descriptor proto package\n// is linked in, these variables will be populated.\n//\n// Each variable is populated with a nil pointer to the options struct.\nvar (\n\tFile           protoreflect.ProtoMessage\n\tEnum           protoreflect.ProtoMessage\n\tEnumValue      protoreflect.ProtoMessage\n\tMessage        protoreflect.ProtoMessage\n\tField          protoreflect.ProtoMessage\n\tOneof          protoreflect.ProtoMessage\n\tExtensionRange protoreflect.ProtoMessage\n\tService        protoreflect.ProtoMessage\n\tMethod         protoreflect.ProtoMessage\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/detrand/rand.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package detrand provides deterministically random functionality.\n//\n// The pseudo-randomness of these functions is seeded by the program binary\n// itself and guarantees that the output does not change within a program,\n// while ensuring that the output is unstable across different builds.\npackage detrand\n\nimport (\n\t\"encoding/binary\"\n\t\"hash/fnv\"\n\t\"os\"\n)\n\n// Disable disables detrand such that all functions returns the zero value.\n// This function is not concurrent-safe and must be called during program init.\nfunc Disable() {\n\trandSeed = 0\n}\n\n// Bool returns a deterministically random boolean.\nfunc Bool() bool {\n\treturn randSeed%2 == 1\n}\n\n// Intn returns a deterministically random integer between 0 and n-1, inclusive.\nfunc Intn(n int) int {\n\tif n <= 0 {\n\t\tpanic(\"must be positive\")\n\t}\n\treturn int(randSeed % uint64(n))\n}\n\n// randSeed is a best-effort at an approximate hash of the Go binary.\nvar randSeed = binaryHash()\n\nfunc binaryHash() uint64 {\n\t// Open the Go binary.\n\ts, err := os.Executable()\n\tif err != nil {\n\t\treturn 0\n\t}\n\tf, err := os.Open(s)\n\tif err != nil {\n\t\treturn 0\n\t}\n\tdefer f.Close()\n\n\t// Hash the size and several samples of the Go binary.\n\tconst numSamples = 8\n\tvar buf [64]byte\n\th := fnv.New64()\n\tfi, err := f.Stat()\n\tif err != nil {\n\t\treturn 0\n\t}\n\tbinary.LittleEndian.PutUint64(buf[:8], uint64(fi.Size()))\n\th.Write(buf[:8])\n\tfor i := int64(0); i < numSamples; i++ {\n\t\tif _, err := f.ReadAt(buf[:], i*fi.Size()/numSamples); err != nil {\n\t\t\treturn 0\n\t\t}\n\t\th.Write(buf[:])\n\t}\n\treturn h.Sum64()\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/editiondefaults/defaults.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package editiondefaults contains the binary representation of the editions\n// defaults.\npackage editiondefaults\n\nimport _ \"embed\"\n\n//go:embed editions_defaults.binpb\nvar Defaults []byte\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/editionssupport/editions.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package editionssupport defines constants for editions that are supported.\npackage editionssupport\n\nimport \"google.golang.org/protobuf/types/descriptorpb\"\n\nconst (\n\tMinimum = descriptorpb.Edition_EDITION_PROTO2\n\tMaximum = descriptorpb.Edition_EDITION_2023\n\n\t// MaximumKnown is the maximum edition that is known to Go Protobuf, but not\n\t// declared as supported. In other words: end users cannot use it, but\n\t// testprotos inside Go Protobuf can.\n\tMaximumKnown = descriptorpb.Edition_EDITION_2024\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/encoding/defval/default.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package defval marshals and unmarshals textual forms of default values.\n//\n// This package handles both the form historically used in Go struct field tags\n// and also the form used by google.protobuf.FieldDescriptorProto.default_value\n// since they differ in superficial ways.\npackage defval\n\nimport (\n\t\"fmt\"\n\t\"math\"\n\t\"strconv\"\n\n\tptext \"google.golang.org/protobuf/internal/encoding/text\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\n// Format is the serialization format used to represent the default value.\ntype Format int\n\nconst (\n\t_ Format = iota\n\n\t// Descriptor uses the serialization format that protoc uses with the\n\t// google.protobuf.FieldDescriptorProto.default_value field.\n\tDescriptor\n\n\t// GoTag uses the historical serialization format in Go struct field tags.\n\tGoTag\n)\n\n// Unmarshal deserializes the default string s according to the given kind k.\n// When k is an enum, a list of enum value descriptors must be provided.\nfunc Unmarshal(s string, k protoreflect.Kind, evs protoreflect.EnumValueDescriptors, f Format) (protoreflect.Value, protoreflect.EnumValueDescriptor, error) {\n\tswitch k {\n\tcase protoreflect.BoolKind:\n\t\tif f == GoTag {\n\t\t\tswitch s {\n\t\t\tcase \"1\":\n\t\t\t\treturn protoreflect.ValueOfBool(true), nil, nil\n\t\t\tcase \"0\":\n\t\t\t\treturn protoreflect.ValueOfBool(false), nil, nil\n\t\t\t}\n\t\t} else {\n\t\t\tswitch s {\n\t\t\tcase \"true\":\n\t\t\t\treturn protoreflect.ValueOfBool(true), nil, nil\n\t\t\tcase \"false\":\n\t\t\t\treturn protoreflect.ValueOfBool(false), nil, nil\n\t\t\t}\n\t\t}\n\tcase protoreflect.EnumKind:\n\t\tif f == GoTag {\n\t\t\t// Go tags use the numeric form of the enum value.\n\t\t\tif n, err := strconv.ParseInt(s, 10, 32); err == nil {\n\t\t\t\tif ev := evs.ByNumber(protoreflect.EnumNumber(n)); ev != nil {\n\t\t\t\t\treturn protoreflect.ValueOfEnum(ev.Number()), ev, nil\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\t// Descriptor default_value use the enum identifier.\n\t\t\tev := evs.ByName(protoreflect.Name(s))\n\t\t\tif ev != nil {\n\t\t\t\treturn protoreflect.ValueOfEnum(ev.Number()), ev, nil\n\t\t\t}\n\t\t}\n\tcase protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind:\n\t\tif v, err := strconv.ParseInt(s, 10, 32); err == nil {\n\t\t\treturn protoreflect.ValueOfInt32(int32(v)), nil, nil\n\t\t}\n\tcase protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind:\n\t\tif v, err := strconv.ParseInt(s, 10, 64); err == nil {\n\t\t\treturn protoreflect.ValueOfInt64(int64(v)), nil, nil\n\t\t}\n\tcase protoreflect.Uint32Kind, protoreflect.Fixed32Kind:\n\t\tif v, err := strconv.ParseUint(s, 10, 32); err == nil {\n\t\t\treturn protoreflect.ValueOfUint32(uint32(v)), nil, nil\n\t\t}\n\tcase protoreflect.Uint64Kind, protoreflect.Fixed64Kind:\n\t\tif v, err := strconv.ParseUint(s, 10, 64); err == nil {\n\t\t\treturn protoreflect.ValueOfUint64(uint64(v)), nil, nil\n\t\t}\n\tcase protoreflect.FloatKind, protoreflect.DoubleKind:\n\t\tvar v float64\n\t\tvar err error\n\t\tswitch s {\n\t\tcase \"-inf\":\n\t\t\tv = math.Inf(-1)\n\t\tcase \"inf\":\n\t\t\tv = math.Inf(+1)\n\t\tcase \"nan\":\n\t\t\tv = math.NaN()\n\t\tdefault:\n\t\t\tv, err = strconv.ParseFloat(s, 64)\n\t\t}\n\t\tif err == nil {\n\t\t\tif k == protoreflect.FloatKind {\n\t\t\t\treturn protoreflect.ValueOfFloat32(float32(v)), nil, nil\n\t\t\t} else {\n\t\t\t\treturn protoreflect.ValueOfFloat64(float64(v)), nil, nil\n\t\t\t}\n\t\t}\n\tcase protoreflect.StringKind:\n\t\t// String values are already unescaped and can be used as is.\n\t\treturn protoreflect.ValueOfString(s), nil, nil\n\tcase protoreflect.BytesKind:\n\t\tif b, ok := unmarshalBytes(s); ok {\n\t\t\treturn protoreflect.ValueOfBytes(b), nil, nil\n\t\t}\n\t}\n\treturn protoreflect.Value{}, nil, errors.New(\"could not parse value for %v: %q\", k, s)\n}\n\n// Marshal serializes v as the default string according to the given kind k.\n// When specifying the Descriptor format for an enum kind, the associated\n// enum value descriptor must be provided.\nfunc Marshal(v protoreflect.Value, ev protoreflect.EnumValueDescriptor, k protoreflect.Kind, f Format) (string, error) {\n\tswitch k {\n\tcase protoreflect.BoolKind:\n\t\tif f == GoTag {\n\t\t\tif v.Bool() {\n\t\t\t\treturn \"1\", nil\n\t\t\t} else {\n\t\t\t\treturn \"0\", nil\n\t\t\t}\n\t\t} else {\n\t\t\tif v.Bool() {\n\t\t\t\treturn \"true\", nil\n\t\t\t} else {\n\t\t\t\treturn \"false\", nil\n\t\t\t}\n\t\t}\n\tcase protoreflect.EnumKind:\n\t\tif f == GoTag {\n\t\t\treturn strconv.FormatInt(int64(v.Enum()), 10), nil\n\t\t} else {\n\t\t\treturn string(ev.Name()), nil\n\t\t}\n\tcase protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind, protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind:\n\t\treturn strconv.FormatInt(v.Int(), 10), nil\n\tcase protoreflect.Uint32Kind, protoreflect.Fixed32Kind, protoreflect.Uint64Kind, protoreflect.Fixed64Kind:\n\t\treturn strconv.FormatUint(v.Uint(), 10), nil\n\tcase protoreflect.FloatKind, protoreflect.DoubleKind:\n\t\tf := v.Float()\n\t\tswitch {\n\t\tcase math.IsInf(f, -1):\n\t\t\treturn \"-inf\", nil\n\t\tcase math.IsInf(f, +1):\n\t\t\treturn \"inf\", nil\n\t\tcase math.IsNaN(f):\n\t\t\treturn \"nan\", nil\n\t\tdefault:\n\t\t\tif k == protoreflect.FloatKind {\n\t\t\t\treturn strconv.FormatFloat(f, 'g', -1, 32), nil\n\t\t\t} else {\n\t\t\t\treturn strconv.FormatFloat(f, 'g', -1, 64), nil\n\t\t\t}\n\t\t}\n\tcase protoreflect.StringKind:\n\t\t// String values are serialized as is without any escaping.\n\t\treturn v.String(), nil\n\tcase protoreflect.BytesKind:\n\t\tif s, ok := marshalBytes(v.Bytes()); ok {\n\t\t\treturn s, nil\n\t\t}\n\t}\n\treturn \"\", errors.New(\"could not format value for %v: %v\", k, v)\n}\n\n// unmarshalBytes deserializes bytes by applying C unescaping.\nfunc unmarshalBytes(s string) ([]byte, bool) {\n\t// Bytes values use the same escaping as the text format,\n\t// however they lack the surrounding double quotes.\n\tv, err := ptext.UnmarshalString(`\"` + s + `\"`)\n\tif err != nil {\n\t\treturn nil, false\n\t}\n\treturn []byte(v), true\n}\n\n// marshalBytes serializes bytes by using C escaping.\n// To match the exact output of protoc, this is identical to the\n// CEscape function in strutil.cc of the protoc source code.\nfunc marshalBytes(b []byte) (string, bool) {\n\tvar s []byte\n\tfor _, c := range b {\n\t\tswitch c {\n\t\tcase '\\n':\n\t\t\ts = append(s, `\\n`...)\n\t\tcase '\\r':\n\t\t\ts = append(s, `\\r`...)\n\t\tcase '\\t':\n\t\t\ts = append(s, `\\t`...)\n\t\tcase '\"':\n\t\t\ts = append(s, `\\\"`...)\n\t\tcase '\\'':\n\t\t\ts = append(s, `\\'`...)\n\t\tcase '\\\\':\n\t\t\ts = append(s, `\\\\`...)\n\t\tdefault:\n\t\t\tif printableASCII := c >= 0x20 && c <= 0x7e; printableASCII {\n\t\t\t\ts = append(s, c)\n\t\t\t} else {\n\t\t\t\ts = append(s, fmt.Sprintf(`\\%03o`, c)...)\n\t\t\t}\n\t\t}\n\t}\n\treturn string(s), true\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/encoding/messageset/messageset.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package messageset encodes and decodes the obsolete MessageSet wire format.\npackage messageset\n\nimport (\n\t\"math\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\n// The MessageSet wire format is equivalent to a message defined as follows,\n// where each Item defines an extension field with a field number of 'type_id'\n// and content of 'message'. MessageSet extensions must be non-repeated message\n// fields.\n//\n//\tmessage MessageSet {\n//\t\trepeated group Item = 1 {\n//\t\t\trequired int32 type_id = 2;\n//\t\t\trequired string message = 3;\n//\t\t}\n//\t}\nconst (\n\tFieldItem    = protowire.Number(1)\n\tFieldTypeID  = protowire.Number(2)\n\tFieldMessage = protowire.Number(3)\n)\n\n// ExtensionName is the field name for extensions of MessageSet.\n//\n// A valid MessageSet extension must be of the form:\n//\n//\tmessage MyMessage {\n//\t\textend proto2.bridge.MessageSet {\n//\t\t\toptional MyMessage message_set_extension = 1234;\n//\t\t}\n//\t\t...\n//\t}\nconst ExtensionName = \"message_set_extension\"\n\n// IsMessageSet returns whether the message uses the MessageSet wire format.\nfunc IsMessageSet(md protoreflect.MessageDescriptor) bool {\n\txmd, ok := md.(interface{ IsMessageSet() bool })\n\treturn ok && xmd.IsMessageSet()\n}\n\n// IsMessageSetExtension reports this field properly extends a MessageSet.\nfunc IsMessageSetExtension(fd protoreflect.FieldDescriptor) bool {\n\tswitch {\n\tcase fd.Name() != ExtensionName:\n\t\treturn false\n\tcase !IsMessageSet(fd.ContainingMessage()):\n\t\treturn false\n\tcase fd.FullName().Parent() != fd.Message().FullName():\n\t\treturn false\n\t}\n\treturn true\n}\n\n// SizeField returns the size of a MessageSet item field containing an extension\n// with the given field number, not counting the contents of the message subfield.\nfunc SizeField(num protowire.Number) int {\n\treturn 2*protowire.SizeTag(FieldItem) + protowire.SizeTag(FieldTypeID) + protowire.SizeVarint(uint64(num))\n}\n\n// Unmarshal parses a MessageSet.\n//\n// It calls fn with the type ID and value of each item in the MessageSet.\n// Unknown fields are discarded.\n//\n// If wantLen is true, the item values include the varint length prefix.\n// This is ugly, but simplifies the fast-path decoder in internal/impl.\nfunc Unmarshal(b []byte, wantLen bool, fn func(typeID protowire.Number, value []byte) error) error {\n\tfor len(b) > 0 {\n\t\tnum, wtyp, n := protowire.ConsumeTag(b)\n\t\tif n < 0 {\n\t\t\treturn protowire.ParseError(n)\n\t\t}\n\t\tb = b[n:]\n\t\tif num != FieldItem || wtyp != protowire.StartGroupType {\n\t\t\tn := protowire.ConsumeFieldValue(num, wtyp, b)\n\t\t\tif n < 0 {\n\t\t\t\treturn protowire.ParseError(n)\n\t\t\t}\n\t\t\tb = b[n:]\n\t\t\tcontinue\n\t\t}\n\t\ttypeID, value, n, err := ConsumeFieldValue(b, wantLen)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tb = b[n:]\n\t\tif typeID == 0 {\n\t\t\tcontinue\n\t\t}\n\t\tif err := fn(typeID, value); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\n// ConsumeFieldValue parses b as a MessageSet item field value until and including\n// the trailing end group marker. It assumes the start group tag has already been parsed.\n// It returns the contents of the type_id and message subfields and the total\n// item length.\n//\n// If wantLen is true, the returned message value includes the length prefix.\nfunc ConsumeFieldValue(b []byte, wantLen bool) (typeid protowire.Number, message []byte, n int, err error) {\n\tilen := len(b)\n\tfor {\n\t\tnum, wtyp, n := protowire.ConsumeTag(b)\n\t\tif n < 0 {\n\t\t\treturn 0, nil, 0, protowire.ParseError(n)\n\t\t}\n\t\tb = b[n:]\n\t\tswitch {\n\t\tcase num == FieldItem && wtyp == protowire.EndGroupType:\n\t\t\tif wantLen && len(message) == 0 {\n\t\t\t\t// The message field was missing, which should never happen.\n\t\t\t\t// Be prepared for this case anyway.\n\t\t\t\tmessage = protowire.AppendVarint(message, 0)\n\t\t\t}\n\t\t\treturn typeid, message, ilen - len(b), nil\n\t\tcase num == FieldTypeID && wtyp == protowire.VarintType:\n\t\t\tv, n := protowire.ConsumeVarint(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn 0, nil, 0, protowire.ParseError(n)\n\t\t\t}\n\t\t\tb = b[n:]\n\t\t\tif v < 1 || v > math.MaxInt32 {\n\t\t\t\treturn 0, nil, 0, errors.New(\"invalid type_id in message set\")\n\t\t\t}\n\t\t\ttypeid = protowire.Number(v)\n\t\tcase num == FieldMessage && wtyp == protowire.BytesType:\n\t\t\tm, n := protowire.ConsumeBytes(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn 0, nil, 0, protowire.ParseError(n)\n\t\t\t}\n\t\t\tif message == nil {\n\t\t\t\tif wantLen {\n\t\t\t\t\tmessage = b[:n:n]\n\t\t\t\t} else {\n\t\t\t\t\tmessage = m[:len(m):len(m)]\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// This case should never happen in practice, but handle it for\n\t\t\t\t// correctness: The MessageSet item contains multiple message\n\t\t\t\t// fields, which need to be merged.\n\t\t\t\t//\n\t\t\t\t// In the case where we're returning the length, this becomes\n\t\t\t\t// quite inefficient since we need to strip the length off\n\t\t\t\t// the existing data and reconstruct it with the combined length.\n\t\t\t\tif wantLen {\n\t\t\t\t\t_, nn := protowire.ConsumeVarint(message)\n\t\t\t\t\tm0 := message[nn:]\n\t\t\t\t\tmessage = nil\n\t\t\t\t\tmessage = protowire.AppendVarint(message, uint64(len(m0)+len(m)))\n\t\t\t\t\tmessage = append(message, m0...)\n\t\t\t\t\tmessage = append(message, m...)\n\t\t\t\t} else {\n\t\t\t\t\tmessage = append(message, m...)\n\t\t\t\t}\n\t\t\t}\n\t\t\tb = b[n:]\n\t\tdefault:\n\t\t\t// We have no place to put it, so we just ignore unknown fields.\n\t\t\tn := protowire.ConsumeFieldValue(num, wtyp, b)\n\t\t\tif n < 0 {\n\t\t\t\treturn 0, nil, 0, protowire.ParseError(n)\n\t\t\t}\n\t\t\tb = b[n:]\n\t\t}\n\t}\n}\n\n// AppendFieldStart appends the start of a MessageSet item field containing\n// an extension with the given number. The caller must add the message\n// subfield (including the tag).\nfunc AppendFieldStart(b []byte, num protowire.Number) []byte {\n\tb = protowire.AppendTag(b, FieldItem, protowire.StartGroupType)\n\tb = protowire.AppendTag(b, FieldTypeID, protowire.VarintType)\n\tb = protowire.AppendVarint(b, uint64(num))\n\treturn b\n}\n\n// AppendFieldEnd appends the trailing end group marker for a MessageSet item field.\nfunc AppendFieldEnd(b []byte) []byte {\n\treturn protowire.AppendTag(b, FieldItem, protowire.EndGroupType)\n}\n\n// SizeUnknown returns the size of an unknown fields section in MessageSet format.\n//\n// See AppendUnknown.\nfunc SizeUnknown(unknown []byte) (size int) {\n\tfor len(unknown) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(unknown)\n\t\tif n < 0 || typ != protowire.BytesType {\n\t\t\treturn 0\n\t\t}\n\t\tunknown = unknown[n:]\n\t\t_, n = protowire.ConsumeBytes(unknown)\n\t\tif n < 0 {\n\t\t\treturn 0\n\t\t}\n\t\tunknown = unknown[n:]\n\t\tsize += SizeField(num) + protowire.SizeTag(FieldMessage) + n\n\t}\n\treturn size\n}\n\n// AppendUnknown appends unknown fields to b in MessageSet format.\n//\n// For historic reasons, unresolved items in a MessageSet are stored in a\n// message's unknown fields section in non-MessageSet format. That is, an\n// unknown item with typeID T and value V appears in the unknown fields as\n// a field with number T and value V.\n//\n// This function converts the unknown fields back into MessageSet form.\nfunc AppendUnknown(b, unknown []byte) ([]byte, error) {\n\tfor len(unknown) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(unknown)\n\t\tif n < 0 || typ != protowire.BytesType {\n\t\t\treturn nil, errors.New(\"invalid data in message set unknown fields\")\n\t\t}\n\t\tunknown = unknown[n:]\n\t\t_, n = protowire.ConsumeBytes(unknown)\n\t\tif n < 0 {\n\t\t\treturn nil, errors.New(\"invalid data in message set unknown fields\")\n\t\t}\n\t\tb = AppendFieldStart(b, num)\n\t\tb = protowire.AppendTag(b, FieldMessage, protowire.BytesType)\n\t\tb = append(b, unknown[:n]...)\n\t\tb = AppendFieldEnd(b)\n\t\tunknown = unknown[n:]\n\t}\n\treturn b, nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/encoding/tag/tag.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package tag marshals and unmarshals the legacy struct tags as generated\n// by historical versions of protoc-gen-go.\npackage tag\n\nimport (\n\t\"reflect\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"google.golang.org/protobuf/internal/encoding/defval\"\n\t\"google.golang.org/protobuf/internal/filedesc\"\n\t\"google.golang.org/protobuf/internal/strs\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nvar byteType = reflect.TypeOf(byte(0))\n\n// Unmarshal decodes the tag into a prototype.Field.\n//\n// The goType is needed to determine the original protoreflect.Kind since the\n// tag does not record sufficient information to determine that.\n// The type is the underlying field type (e.g., a repeated field may be\n// represented by []T, but the Go type passed in is just T).\n// A list of enum value descriptors must be provided for enum fields.\n// This does not populate the Enum or Message.\n//\n// This function is a best effort attempt; parsing errors are ignored.\nfunc Unmarshal(tag string, goType reflect.Type, evs protoreflect.EnumValueDescriptors) protoreflect.FieldDescriptor {\n\tf := new(filedesc.Field)\n\tf.L0.ParentFile = filedesc.SurrogateProto2\n\tf.L1.EditionFeatures = f.L0.ParentFile.L1.EditionFeatures\n\tfor len(tag) > 0 {\n\t\ti := strings.IndexByte(tag, ',')\n\t\tif i < 0 {\n\t\t\ti = len(tag)\n\t\t}\n\t\tswitch s := tag[:i]; {\n\t\tcase strings.HasPrefix(s, \"name=\"):\n\t\t\tf.L0.FullName = protoreflect.FullName(s[len(\"name=\"):])\n\t\tcase strings.Trim(s, \"0123456789\") == \"\":\n\t\t\tn, _ := strconv.ParseUint(s, 10, 32)\n\t\t\tf.L1.Number = protoreflect.FieldNumber(n)\n\t\tcase s == \"opt\":\n\t\t\tf.L1.Cardinality = protoreflect.Optional\n\t\tcase s == \"req\":\n\t\t\tf.L1.Cardinality = protoreflect.Required\n\t\tcase s == \"rep\":\n\t\t\tf.L1.Cardinality = protoreflect.Repeated\n\t\tcase s == \"varint\":\n\t\t\tswitch goType.Kind() {\n\t\t\tcase reflect.Bool:\n\t\t\t\tf.L1.Kind = protoreflect.BoolKind\n\t\t\tcase reflect.Int32:\n\t\t\t\tf.L1.Kind = protoreflect.Int32Kind\n\t\t\tcase reflect.Int64:\n\t\t\t\tf.L1.Kind = protoreflect.Int64Kind\n\t\t\tcase reflect.Uint32:\n\t\t\t\tf.L1.Kind = protoreflect.Uint32Kind\n\t\t\tcase reflect.Uint64:\n\t\t\t\tf.L1.Kind = protoreflect.Uint64Kind\n\t\t\t}\n\t\tcase s == \"zigzag32\":\n\t\t\tif goType.Kind() == reflect.Int32 {\n\t\t\t\tf.L1.Kind = protoreflect.Sint32Kind\n\t\t\t}\n\t\tcase s == \"zigzag64\":\n\t\t\tif goType.Kind() == reflect.Int64 {\n\t\t\t\tf.L1.Kind = protoreflect.Sint64Kind\n\t\t\t}\n\t\tcase s == \"fixed32\":\n\t\t\tswitch goType.Kind() {\n\t\t\tcase reflect.Int32:\n\t\t\t\tf.L1.Kind = protoreflect.Sfixed32Kind\n\t\t\tcase reflect.Uint32:\n\t\t\t\tf.L1.Kind = protoreflect.Fixed32Kind\n\t\t\tcase reflect.Float32:\n\t\t\t\tf.L1.Kind = protoreflect.FloatKind\n\t\t\t}\n\t\tcase s == \"fixed64\":\n\t\t\tswitch goType.Kind() {\n\t\t\tcase reflect.Int64:\n\t\t\t\tf.L1.Kind = protoreflect.Sfixed64Kind\n\t\t\tcase reflect.Uint64:\n\t\t\t\tf.L1.Kind = protoreflect.Fixed64Kind\n\t\t\tcase reflect.Float64:\n\t\t\t\tf.L1.Kind = protoreflect.DoubleKind\n\t\t\t}\n\t\tcase s == \"bytes\":\n\t\t\tswitch {\n\t\t\tcase goType.Kind() == reflect.String:\n\t\t\t\tf.L1.Kind = protoreflect.StringKind\n\t\t\tcase goType.Kind() == reflect.Slice && goType.Elem() == byteType:\n\t\t\t\tf.L1.Kind = protoreflect.BytesKind\n\t\t\tdefault:\n\t\t\t\tf.L1.Kind = protoreflect.MessageKind\n\t\t\t}\n\t\tcase s == \"group\":\n\t\t\tf.L1.Kind = protoreflect.GroupKind\n\t\tcase strings.HasPrefix(s, \"enum=\"):\n\t\t\tf.L1.Kind = protoreflect.EnumKind\n\t\tcase strings.HasPrefix(s, \"json=\"):\n\t\t\tjsonName := s[len(\"json=\"):]\n\t\t\tif jsonName != strs.JSONCamelCase(string(f.L0.FullName.Name())) {\n\t\t\t\tf.L1.StringName.InitJSON(jsonName)\n\t\t\t}\n\t\tcase s == \"packed\":\n\t\t\tf.L1.EditionFeatures.IsPacked = true\n\t\tcase strings.HasPrefix(s, \"def=\"):\n\t\t\t// The default tag is special in that everything afterwards is the\n\t\t\t// default regardless of the presence of commas.\n\t\t\ts, i = tag[len(\"def=\"):], len(tag)\n\t\t\tv, ev, _ := defval.Unmarshal(s, f.L1.Kind, evs, defval.GoTag)\n\t\t\tf.L1.Default = filedesc.DefaultValue(v, ev)\n\t\tcase s == \"proto3\":\n\t\t\tf.L0.ParentFile = filedesc.SurrogateProto3\n\t\t}\n\t\ttag = strings.TrimPrefix(tag[i:], \",\")\n\t}\n\n\t// The generator uses the group message name instead of the field name.\n\t// We obtain the real field name by lowercasing the group name.\n\tif f.L1.Kind == protoreflect.GroupKind {\n\t\tf.L0.FullName = protoreflect.FullName(strings.ToLower(string(f.L0.FullName)))\n\t}\n\treturn f\n}\n\n// Marshal encodes the protoreflect.FieldDescriptor as a tag.\n//\n// The enumName must be provided if the kind is an enum.\n// Historically, the formulation of the enum \"name\" was the proto package\n// dot-concatenated with the generated Go identifier for the enum type.\n// Depending on the context on how Marshal is called, there are different ways\n// through which that information is determined. As such it is the caller's\n// responsibility to provide a function to obtain that information.\nfunc Marshal(fd protoreflect.FieldDescriptor, enumName string) string {\n\tvar tag []string\n\tswitch fd.Kind() {\n\tcase protoreflect.BoolKind, protoreflect.EnumKind, protoreflect.Int32Kind, protoreflect.Uint32Kind, protoreflect.Int64Kind, protoreflect.Uint64Kind:\n\t\ttag = append(tag, \"varint\")\n\tcase protoreflect.Sint32Kind:\n\t\ttag = append(tag, \"zigzag32\")\n\tcase protoreflect.Sint64Kind:\n\t\ttag = append(tag, \"zigzag64\")\n\tcase protoreflect.Sfixed32Kind, protoreflect.Fixed32Kind, protoreflect.FloatKind:\n\t\ttag = append(tag, \"fixed32\")\n\tcase protoreflect.Sfixed64Kind, protoreflect.Fixed64Kind, protoreflect.DoubleKind:\n\t\ttag = append(tag, \"fixed64\")\n\tcase protoreflect.StringKind, protoreflect.BytesKind, protoreflect.MessageKind:\n\t\ttag = append(tag, \"bytes\")\n\tcase protoreflect.GroupKind:\n\t\ttag = append(tag, \"group\")\n\t}\n\ttag = append(tag, strconv.Itoa(int(fd.Number())))\n\tswitch fd.Cardinality() {\n\tcase protoreflect.Optional:\n\t\ttag = append(tag, \"opt\")\n\tcase protoreflect.Required:\n\t\ttag = append(tag, \"req\")\n\tcase protoreflect.Repeated:\n\t\ttag = append(tag, \"rep\")\n\t}\n\tif fd.IsPacked() {\n\t\ttag = append(tag, \"packed\")\n\t}\n\tname := string(fd.Name())\n\tif fd.Kind() == protoreflect.GroupKind {\n\t\t// The name of the FieldDescriptor for a group field is\n\t\t// lowercased. To find the original capitalization, we\n\t\t// look in the field's MessageType.\n\t\tname = string(fd.Message().Name())\n\t}\n\ttag = append(tag, \"name=\"+name)\n\tif jsonName := fd.JSONName(); jsonName != \"\" && jsonName != name && !fd.IsExtension() {\n\t\t// NOTE: The jsonName != name condition is suspect, but it preserve\n\t\t// the exact same semantics from the previous generator.\n\t\ttag = append(tag, \"json=\"+jsonName)\n\t}\n\t// The previous implementation does not tag extension fields as proto3,\n\t// even when the field is defined in a proto3 file. Match that behavior\n\t// for consistency.\n\tif fd.Syntax() == protoreflect.Proto3 && !fd.IsExtension() {\n\t\ttag = append(tag, \"proto3\")\n\t}\n\tif fd.Kind() == protoreflect.EnumKind && enumName != \"\" {\n\t\ttag = append(tag, \"enum=\"+enumName)\n\t}\n\tif fd.ContainingOneof() != nil {\n\t\ttag = append(tag, \"oneof\")\n\t}\n\t// This must appear last in the tag, since commas in strings aren't escaped.\n\tif fd.HasDefault() {\n\t\tdef, _ := defval.Marshal(fd.Default(), fd.DefaultEnumValue(), fd.Kind(), defval.GoTag)\n\t\ttag = append(tag, \"def=\"+def)\n\t}\n\treturn strings.Join(tag, \",\")\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/encoding/text/decode.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage text\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"strconv\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/internal/errors\"\n)\n\n// Decoder is a token-based textproto decoder.\ntype Decoder struct {\n\t// lastCall is last method called, either readCall or peekCall.\n\t// Initial value is readCall.\n\tlastCall call\n\n\t// lastToken contains the last read token.\n\tlastToken Token\n\n\t// lastErr contains the last read error.\n\tlastErr error\n\n\t// openStack is a stack containing the byte characters for MessageOpen and\n\t// ListOpen kinds. The top of stack represents the message or the list that\n\t// the current token is nested in. An empty stack means the current token is\n\t// at the top level message. The characters '{' and '<' both represent the\n\t// MessageOpen kind.\n\topenStack []byte\n\n\t// orig is used in reporting line and column.\n\torig []byte\n\t// in contains the unconsumed input.\n\tin []byte\n}\n\n// NewDecoder returns a Decoder to read the given []byte.\nfunc NewDecoder(b []byte) *Decoder {\n\treturn &Decoder{orig: b, in: b}\n}\n\n// ErrUnexpectedEOF means that EOF was encountered in the middle of the input.\nvar ErrUnexpectedEOF = errors.New(\"%v\", io.ErrUnexpectedEOF)\n\n// call specifies which Decoder method was invoked.\ntype call uint8\n\nconst (\n\treadCall call = iota\n\tpeekCall\n)\n\n// Peek looks ahead and returns the next token and error without advancing a read.\nfunc (d *Decoder) Peek() (Token, error) {\n\tdefer func() { d.lastCall = peekCall }()\n\tif d.lastCall == readCall {\n\t\td.lastToken, d.lastErr = d.Read()\n\t}\n\treturn d.lastToken, d.lastErr\n}\n\n// Read returns the next token.\n// It will return an error if there is no valid token.\nfunc (d *Decoder) Read() (Token, error) {\n\tdefer func() { d.lastCall = readCall }()\n\tif d.lastCall == peekCall {\n\t\treturn d.lastToken, d.lastErr\n\t}\n\n\ttok, err := d.parseNext(d.lastToken.kind)\n\tif err != nil {\n\t\treturn Token{}, err\n\t}\n\n\tswitch tok.kind {\n\tcase comma, semicolon:\n\t\ttok, err = d.parseNext(tok.kind)\n\t\tif err != nil {\n\t\t\treturn Token{}, err\n\t\t}\n\t}\n\td.lastToken = tok\n\treturn tok, nil\n}\n\nconst (\n\tmismatchedFmt = \"mismatched close character %q\"\n\tunexpectedFmt = \"unexpected character %q\"\n)\n\n// parseNext parses the next Token based on given last kind.\nfunc (d *Decoder) parseNext(lastKind Kind) (Token, error) {\n\t// Trim leading spaces.\n\td.consume(0)\n\tisEOF := false\n\tif len(d.in) == 0 {\n\t\tisEOF = true\n\t}\n\n\tswitch lastKind {\n\tcase EOF:\n\t\treturn d.consumeToken(EOF, 0, 0), nil\n\n\tcase bof:\n\t\t// Start of top level message. Next token can be EOF or Name.\n\t\tif isEOF {\n\t\t\treturn d.consumeToken(EOF, 0, 0), nil\n\t\t}\n\t\treturn d.parseFieldName()\n\n\tcase Name:\n\t\t// Next token can be MessageOpen, ListOpen or Scalar.\n\t\tif isEOF {\n\t\t\treturn Token{}, ErrUnexpectedEOF\n\t\t}\n\t\tswitch ch := d.in[0]; ch {\n\t\tcase '{', '<':\n\t\t\td.pushOpenStack(ch)\n\t\t\treturn d.consumeToken(MessageOpen, 1, 0), nil\n\t\tcase '[':\n\t\t\td.pushOpenStack(ch)\n\t\t\treturn d.consumeToken(ListOpen, 1, 0), nil\n\t\tdefault:\n\t\t\treturn d.parseScalar()\n\t\t}\n\n\tcase Scalar:\n\t\topenKind, closeCh := d.currentOpenKind()\n\t\tswitch openKind {\n\t\tcase bof:\n\t\t\t// Top level message.\n\t\t\t// \tNext token can be EOF, comma, semicolon or Name.\n\t\t\tif isEOF {\n\t\t\t\treturn d.consumeToken(EOF, 0, 0), nil\n\t\t\t}\n\t\t\tswitch d.in[0] {\n\t\t\tcase ',':\n\t\t\t\treturn d.consumeToken(comma, 1, 0), nil\n\t\t\tcase ';':\n\t\t\t\treturn d.consumeToken(semicolon, 1, 0), nil\n\t\t\tdefault:\n\t\t\t\treturn d.parseFieldName()\n\t\t\t}\n\n\t\tcase MessageOpen:\n\t\t\t// Next token can be MessageClose, comma, semicolon or Name.\n\t\t\tif isEOF {\n\t\t\t\treturn Token{}, ErrUnexpectedEOF\n\t\t\t}\n\t\t\tswitch ch := d.in[0]; ch {\n\t\t\tcase closeCh:\n\t\t\t\td.popOpenStack()\n\t\t\t\treturn d.consumeToken(MessageClose, 1, 0), nil\n\t\t\tcase otherCloseChar[closeCh]:\n\t\t\t\treturn Token{}, d.newSyntaxError(mismatchedFmt, ch)\n\t\t\tcase ',':\n\t\t\t\treturn d.consumeToken(comma, 1, 0), nil\n\t\t\tcase ';':\n\t\t\t\treturn d.consumeToken(semicolon, 1, 0), nil\n\t\t\tdefault:\n\t\t\t\treturn d.parseFieldName()\n\t\t\t}\n\n\t\tcase ListOpen:\n\t\t\t// Next token can be ListClose or comma.\n\t\t\tif isEOF {\n\t\t\t\treturn Token{}, ErrUnexpectedEOF\n\t\t\t}\n\t\t\tswitch ch := d.in[0]; ch {\n\t\t\tcase ']':\n\t\t\t\td.popOpenStack()\n\t\t\t\treturn d.consumeToken(ListClose, 1, 0), nil\n\t\t\tcase ',':\n\t\t\t\treturn d.consumeToken(comma, 1, 0), nil\n\t\t\tdefault:\n\t\t\t\treturn Token{}, d.newSyntaxError(unexpectedFmt, ch)\n\t\t\t}\n\t\t}\n\n\tcase MessageOpen:\n\t\t// Next token can be MessageClose or Name.\n\t\tif isEOF {\n\t\t\treturn Token{}, ErrUnexpectedEOF\n\t\t}\n\t\t_, closeCh := d.currentOpenKind()\n\t\tswitch ch := d.in[0]; ch {\n\t\tcase closeCh:\n\t\t\td.popOpenStack()\n\t\t\treturn d.consumeToken(MessageClose, 1, 0), nil\n\t\tcase otherCloseChar[closeCh]:\n\t\t\treturn Token{}, d.newSyntaxError(mismatchedFmt, ch)\n\t\tdefault:\n\t\t\treturn d.parseFieldName()\n\t\t}\n\n\tcase MessageClose:\n\t\topenKind, closeCh := d.currentOpenKind()\n\t\tswitch openKind {\n\t\tcase bof:\n\t\t\t// Top level message.\n\t\t\t// Next token can be EOF, comma, semicolon or Name.\n\t\t\tif isEOF {\n\t\t\t\treturn d.consumeToken(EOF, 0, 0), nil\n\t\t\t}\n\t\t\tswitch ch := d.in[0]; ch {\n\t\t\tcase ',':\n\t\t\t\treturn d.consumeToken(comma, 1, 0), nil\n\t\t\tcase ';':\n\t\t\t\treturn d.consumeToken(semicolon, 1, 0), nil\n\t\t\tdefault:\n\t\t\t\treturn d.parseFieldName()\n\t\t\t}\n\n\t\tcase MessageOpen:\n\t\t\t// Next token can be MessageClose, comma, semicolon or Name.\n\t\t\tif isEOF {\n\t\t\t\treturn Token{}, ErrUnexpectedEOF\n\t\t\t}\n\t\t\tswitch ch := d.in[0]; ch {\n\t\t\tcase closeCh:\n\t\t\t\td.popOpenStack()\n\t\t\t\treturn d.consumeToken(MessageClose, 1, 0), nil\n\t\t\tcase otherCloseChar[closeCh]:\n\t\t\t\treturn Token{}, d.newSyntaxError(mismatchedFmt, ch)\n\t\t\tcase ',':\n\t\t\t\treturn d.consumeToken(comma, 1, 0), nil\n\t\t\tcase ';':\n\t\t\t\treturn d.consumeToken(semicolon, 1, 0), nil\n\t\t\tdefault:\n\t\t\t\treturn d.parseFieldName()\n\t\t\t}\n\n\t\tcase ListOpen:\n\t\t\t// Next token can be ListClose or comma\n\t\t\tif isEOF {\n\t\t\t\treturn Token{}, ErrUnexpectedEOF\n\t\t\t}\n\t\t\tswitch ch := d.in[0]; ch {\n\t\t\tcase closeCh:\n\t\t\t\td.popOpenStack()\n\t\t\t\treturn d.consumeToken(ListClose, 1, 0), nil\n\t\t\tcase ',':\n\t\t\t\treturn d.consumeToken(comma, 1, 0), nil\n\t\t\tdefault:\n\t\t\t\treturn Token{}, d.newSyntaxError(unexpectedFmt, ch)\n\t\t\t}\n\t\t}\n\n\tcase ListOpen:\n\t\t// Next token can be ListClose, MessageStart or Scalar.\n\t\tif isEOF {\n\t\t\treturn Token{}, ErrUnexpectedEOF\n\t\t}\n\t\tswitch ch := d.in[0]; ch {\n\t\tcase ']':\n\t\t\td.popOpenStack()\n\t\t\treturn d.consumeToken(ListClose, 1, 0), nil\n\t\tcase '{', '<':\n\t\t\td.pushOpenStack(ch)\n\t\t\treturn d.consumeToken(MessageOpen, 1, 0), nil\n\t\tdefault:\n\t\t\treturn d.parseScalar()\n\t\t}\n\n\tcase ListClose:\n\t\topenKind, closeCh := d.currentOpenKind()\n\t\tswitch openKind {\n\t\tcase bof:\n\t\t\t// Top level message.\n\t\t\t// Next token can be EOF, comma, semicolon or Name.\n\t\t\tif isEOF {\n\t\t\t\treturn d.consumeToken(EOF, 0, 0), nil\n\t\t\t}\n\t\t\tswitch ch := d.in[0]; ch {\n\t\t\tcase ',':\n\t\t\t\treturn d.consumeToken(comma, 1, 0), nil\n\t\t\tcase ';':\n\t\t\t\treturn d.consumeToken(semicolon, 1, 0), nil\n\t\t\tdefault:\n\t\t\t\treturn d.parseFieldName()\n\t\t\t}\n\n\t\tcase MessageOpen:\n\t\t\t// Next token can be MessageClose, comma, semicolon or Name.\n\t\t\tif isEOF {\n\t\t\t\treturn Token{}, ErrUnexpectedEOF\n\t\t\t}\n\t\t\tswitch ch := d.in[0]; ch {\n\t\t\tcase closeCh:\n\t\t\t\td.popOpenStack()\n\t\t\t\treturn d.consumeToken(MessageClose, 1, 0), nil\n\t\t\tcase otherCloseChar[closeCh]:\n\t\t\t\treturn Token{}, d.newSyntaxError(mismatchedFmt, ch)\n\t\t\tcase ',':\n\t\t\t\treturn d.consumeToken(comma, 1, 0), nil\n\t\t\tcase ';':\n\t\t\t\treturn d.consumeToken(semicolon, 1, 0), nil\n\t\t\tdefault:\n\t\t\t\treturn d.parseFieldName()\n\t\t\t}\n\n\t\tdefault:\n\t\t\t// It is not possible to have this case. Let it panic below.\n\t\t}\n\n\tcase comma, semicolon:\n\t\topenKind, closeCh := d.currentOpenKind()\n\t\tswitch openKind {\n\t\tcase bof:\n\t\t\t// Top level message. Next token can be EOF or Name.\n\t\t\tif isEOF {\n\t\t\t\treturn d.consumeToken(EOF, 0, 0), nil\n\t\t\t}\n\t\t\treturn d.parseFieldName()\n\n\t\tcase MessageOpen:\n\t\t\t// Next token can be MessageClose or Name.\n\t\t\tif isEOF {\n\t\t\t\treturn Token{}, ErrUnexpectedEOF\n\t\t\t}\n\t\t\tswitch ch := d.in[0]; ch {\n\t\t\tcase closeCh:\n\t\t\t\td.popOpenStack()\n\t\t\t\treturn d.consumeToken(MessageClose, 1, 0), nil\n\t\t\tcase otherCloseChar[closeCh]:\n\t\t\t\treturn Token{}, d.newSyntaxError(mismatchedFmt, ch)\n\t\t\tdefault:\n\t\t\t\treturn d.parseFieldName()\n\t\t\t}\n\n\t\tcase ListOpen:\n\t\t\tif lastKind == semicolon {\n\t\t\t\t// It is not be possible to have this case as logic here\n\t\t\t\t// should not have produced a semicolon Token when inside a\n\t\t\t\t// list. Let it panic below.\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// Next token can be MessageOpen or Scalar.\n\t\t\tif isEOF {\n\t\t\t\treturn Token{}, ErrUnexpectedEOF\n\t\t\t}\n\t\t\tswitch ch := d.in[0]; ch {\n\t\t\tcase '{', '<':\n\t\t\t\td.pushOpenStack(ch)\n\t\t\t\treturn d.consumeToken(MessageOpen, 1, 0), nil\n\t\t\tdefault:\n\t\t\t\treturn d.parseScalar()\n\t\t\t}\n\t\t}\n\t}\n\n\tline, column := d.Position(len(d.orig) - len(d.in))\n\tpanic(fmt.Sprintf(\"Decoder.parseNext: bug at handling line %d:%d with lastKind=%v\", line, column, lastKind))\n}\n\nvar otherCloseChar = map[byte]byte{\n\t'}': '>',\n\t'>': '}',\n}\n\n// currentOpenKind indicates whether current position is inside a message, list\n// or top-level message by returning MessageOpen, ListOpen or bof respectively.\n// If the returned kind is either a MessageOpen or ListOpen, it also returns the\n// corresponding closing character.\nfunc (d *Decoder) currentOpenKind() (Kind, byte) {\n\tif len(d.openStack) == 0 {\n\t\treturn bof, 0\n\t}\n\topenCh := d.openStack[len(d.openStack)-1]\n\tswitch openCh {\n\tcase '{':\n\t\treturn MessageOpen, '}'\n\tcase '<':\n\t\treturn MessageOpen, '>'\n\tcase '[':\n\t\treturn ListOpen, ']'\n\t}\n\tpanic(fmt.Sprintf(\"Decoder: openStack contains invalid byte %c\", openCh))\n}\n\nfunc (d *Decoder) pushOpenStack(ch byte) {\n\td.openStack = append(d.openStack, ch)\n}\n\nfunc (d *Decoder) popOpenStack() {\n\td.openStack = d.openStack[:len(d.openStack)-1]\n}\n\n// parseFieldName parses field name and separator.\nfunc (d *Decoder) parseFieldName() (tok Token, err error) {\n\tdefer func() {\n\t\tif err == nil && d.tryConsumeChar(':') {\n\t\t\ttok.attrs |= hasSeparator\n\t\t}\n\t}()\n\n\t// Extension or Any type URL.\n\tif d.in[0] == '[' {\n\t\treturn d.parseTypeName()\n\t}\n\n\t// Identifier.\n\tif size := parseIdent(d.in, false); size > 0 {\n\t\treturn d.consumeToken(Name, size, uint8(IdentName)), nil\n\t}\n\n\t// Field number. Identify if input is a valid number that is not negative\n\t// and is decimal integer within 32-bit range.\n\tif num := parseNumber(d.in); num.size > 0 {\n\t\tstr := num.string(d.in)\n\t\tif !num.neg && num.kind == numDec {\n\t\t\tif _, err := strconv.ParseInt(str, 10, 32); err == nil {\n\t\t\t\treturn d.consumeToken(Name, num.size, uint8(FieldNumber)), nil\n\t\t\t}\n\t\t}\n\t\treturn Token{}, d.newSyntaxError(\"invalid field number: %s\", str)\n\t}\n\n\treturn Token{}, d.newSyntaxError(\"invalid field name: %s\", errId(d.in))\n}\n\n// parseTypeName parses Any type URL or extension field name. The name is\n// enclosed in [ and ] characters. The C++ parser does not handle many legal URL\n// strings. This implementation is more liberal and allows for the pattern\n// ^[-_a-zA-Z0-9]+([./][-_a-zA-Z0-9]+)*`). Whitespaces and comments are allowed\n// in between [ ], '.', '/' and the sub names.\nfunc (d *Decoder) parseTypeName() (Token, error) {\n\tstartPos := len(d.orig) - len(d.in)\n\t// Use alias s to advance first in order to use d.in for error handling.\n\t// Caller already checks for [ as first character.\n\ts := consume(d.in[1:], 0)\n\tif len(s) == 0 {\n\t\treturn Token{}, ErrUnexpectedEOF\n\t}\n\n\tvar name []byte\n\tfor len(s) > 0 && isTypeNameChar(s[0]) {\n\t\tname = append(name, s[0])\n\t\ts = s[1:]\n\t}\n\ts = consume(s, 0)\n\n\tvar closed bool\n\tfor len(s) > 0 && !closed {\n\t\tswitch {\n\t\tcase s[0] == ']':\n\t\t\ts = s[1:]\n\t\t\tclosed = true\n\n\t\tcase s[0] == '/', s[0] == '.':\n\t\t\tif len(name) > 0 && (name[len(name)-1] == '/' || name[len(name)-1] == '.') {\n\t\t\t\treturn Token{}, d.newSyntaxError(\"invalid type URL/extension field name: %s\",\n\t\t\t\t\td.orig[startPos:len(d.orig)-len(s)+1])\n\t\t\t}\n\t\t\tname = append(name, s[0])\n\t\t\ts = s[1:]\n\t\t\ts = consume(s, 0)\n\t\t\tfor len(s) > 0 && isTypeNameChar(s[0]) {\n\t\t\t\tname = append(name, s[0])\n\t\t\t\ts = s[1:]\n\t\t\t}\n\t\t\ts = consume(s, 0)\n\n\t\tdefault:\n\t\t\treturn Token{}, d.newSyntaxError(\n\t\t\t\t\"invalid type URL/extension field name: %s\", d.orig[startPos:len(d.orig)-len(s)+1])\n\t\t}\n\t}\n\n\tif !closed {\n\t\treturn Token{}, ErrUnexpectedEOF\n\t}\n\n\t// First character cannot be '.'. Last character cannot be '.' or '/'.\n\tsize := len(name)\n\tif size == 0 || name[0] == '.' || name[size-1] == '.' || name[size-1] == '/' {\n\t\treturn Token{}, d.newSyntaxError(\"invalid type URL/extension field name: %s\",\n\t\t\td.orig[startPos:len(d.orig)-len(s)])\n\t}\n\n\td.in = s\n\tendPos := len(d.orig) - len(d.in)\n\td.consume(0)\n\n\treturn Token{\n\t\tkind:  Name,\n\t\tattrs: uint8(TypeName),\n\t\tpos:   startPos,\n\t\traw:   d.orig[startPos:endPos],\n\t\tstr:   string(name),\n\t}, nil\n}\n\nfunc isTypeNameChar(b byte) bool {\n\treturn (b == '-' || b == '_' ||\n\t\t('0' <= b && b <= '9') ||\n\t\t('a' <= b && b <= 'z') ||\n\t\t('A' <= b && b <= 'Z'))\n}\n\nfunc isWhiteSpace(b byte) bool {\n\tswitch b {\n\tcase ' ', '\\n', '\\r', '\\t':\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\n// parseIdent parses an unquoted proto identifier and returns size.\n// If allowNeg is true, it allows '-' to be the first character in the\n// identifier. This is used when parsing literal values like -infinity, etc.\n// Regular expression matches an identifier: `^[_a-zA-Z][_a-zA-Z0-9]*`\nfunc parseIdent(input []byte, allowNeg bool) int {\n\tvar size int\n\n\ts := input\n\tif len(s) == 0 {\n\t\treturn 0\n\t}\n\n\tif allowNeg && s[0] == '-' {\n\t\ts = s[1:]\n\t\tsize++\n\t\tif len(s) == 0 {\n\t\t\treturn 0\n\t\t}\n\t}\n\n\tswitch {\n\tcase s[0] == '_',\n\t\t'a' <= s[0] && s[0] <= 'z',\n\t\t'A' <= s[0] && s[0] <= 'Z':\n\t\ts = s[1:]\n\t\tsize++\n\tdefault:\n\t\treturn 0\n\t}\n\n\tfor len(s) > 0 && (s[0] == '_' ||\n\t\t'a' <= s[0] && s[0] <= 'z' ||\n\t\t'A' <= s[0] && s[0] <= 'Z' ||\n\t\t'0' <= s[0] && s[0] <= '9') {\n\t\ts = s[1:]\n\t\tsize++\n\t}\n\n\tif len(s) > 0 && !isDelim(s[0]) {\n\t\treturn 0\n\t}\n\n\treturn size\n}\n\n// parseScalar parses for a string, literal or number value.\nfunc (d *Decoder) parseScalar() (Token, error) {\n\tif d.in[0] == '\"' || d.in[0] == '\\'' {\n\t\treturn d.parseStringValue()\n\t}\n\n\tif tok, ok := d.parseLiteralValue(); ok {\n\t\treturn tok, nil\n\t}\n\n\tif tok, ok := d.parseNumberValue(); ok {\n\t\treturn tok, nil\n\t}\n\n\treturn Token{}, d.newSyntaxError(\"invalid scalar value: %s\", errId(d.in))\n}\n\n// parseLiteralValue parses a literal value. A literal value is used for\n// bools, special floats and enums. This function simply identifies that the\n// field value is a literal.\nfunc (d *Decoder) parseLiteralValue() (Token, bool) {\n\tsize := parseIdent(d.in, true)\n\tif size == 0 {\n\t\treturn Token{}, false\n\t}\n\treturn d.consumeToken(Scalar, size, literalValue), true\n}\n\n// consumeToken constructs a Token for given Kind from d.in and consumes given\n// size-length from it.\nfunc (d *Decoder) consumeToken(kind Kind, size int, attrs uint8) Token {\n\t// Important to compute raw and pos before consuming.\n\ttok := Token{\n\t\tkind:  kind,\n\t\tattrs: attrs,\n\t\tpos:   len(d.orig) - len(d.in),\n\t\traw:   d.in[:size],\n\t}\n\td.consume(size)\n\treturn tok\n}\n\n// newSyntaxError returns a syntax error with line and column information for\n// current position.\nfunc (d *Decoder) newSyntaxError(f string, x ...any) error {\n\te := errors.New(f, x...)\n\tline, column := d.Position(len(d.orig) - len(d.in))\n\treturn errors.New(\"syntax error (line %d:%d): %v\", line, column, e)\n}\n\n// Position returns line and column number of given index of the original input.\n// It will panic if index is out of range.\nfunc (d *Decoder) Position(idx int) (line int, column int) {\n\tb := d.orig[:idx]\n\tline = bytes.Count(b, []byte(\"\\n\")) + 1\n\tif i := bytes.LastIndexByte(b, '\\n'); i >= 0 {\n\t\tb = b[i+1:]\n\t}\n\tcolumn = utf8.RuneCount(b) + 1 // ignore multi-rune characters\n\treturn line, column\n}\n\nfunc (d *Decoder) tryConsumeChar(c byte) bool {\n\tif len(d.in) > 0 && d.in[0] == c {\n\t\td.consume(1)\n\t\treturn true\n\t}\n\treturn false\n}\n\n// consume consumes n bytes of input and any subsequent whitespace or comments.\nfunc (d *Decoder) consume(n int) {\n\td.in = consume(d.in, n)\n\treturn\n}\n\n// consume consumes n bytes of input and any subsequent whitespace or comments.\nfunc consume(b []byte, n int) []byte {\n\tb = b[n:]\n\tfor len(b) > 0 {\n\t\tswitch b[0] {\n\t\tcase ' ', '\\n', '\\r', '\\t':\n\t\t\tb = b[1:]\n\t\tcase '#':\n\t\t\tif i := bytes.IndexByte(b, '\\n'); i >= 0 {\n\t\t\t\tb = b[i+len(\"\\n\"):]\n\t\t\t} else {\n\t\t\t\tb = nil\n\t\t\t}\n\t\tdefault:\n\t\t\treturn b\n\t\t}\n\t}\n\treturn b\n}\n\n// errId extracts a byte sequence that looks like an invalid ID\n// (for the purposes of error reporting).\nfunc errId(seq []byte) []byte {\n\tconst maxLen = 32\n\tfor i := 0; i < len(seq); {\n\t\tif i > maxLen {\n\t\t\treturn append(seq[:i:i], \"…\"...)\n\t\t}\n\t\tr, size := utf8.DecodeRune(seq[i:])\n\t\tif r > utf8.RuneSelf || (r != '/' && isDelim(byte(r))) {\n\t\t\tif i == 0 {\n\t\t\t\t// Either the first byte is invalid UTF-8 or a\n\t\t\t\t// delimiter, or the first rune is non-ASCII.\n\t\t\t\t// Return it as-is.\n\t\t\t\ti = size\n\t\t\t}\n\t\t\treturn seq[:i:i]\n\t\t}\n\t\ti += size\n\t}\n\t// No delimiter found.\n\treturn seq\n}\n\n// isDelim returns true if given byte is a delimiter character.\nfunc isDelim(c byte) bool {\n\treturn !(c == '-' || c == '+' || c == '.' || c == '_' ||\n\t\t('a' <= c && c <= 'z') ||\n\t\t('A' <= c && c <= 'Z') ||\n\t\t('0' <= c && c <= '9'))\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/encoding/text/decode_number.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage text\n\n// parseNumberValue parses a number from the input and returns a Token object.\nfunc (d *Decoder) parseNumberValue() (Token, bool) {\n\tin := d.in\n\tnum := parseNumber(in)\n\tif num.size == 0 {\n\t\treturn Token{}, false\n\t}\n\tnumAttrs := num.kind\n\tif num.neg {\n\t\tnumAttrs |= isNegative\n\t}\n\ttok := Token{\n\t\tkind:     Scalar,\n\t\tattrs:    numberValue,\n\t\tpos:      len(d.orig) - len(d.in),\n\t\traw:      d.in[:num.size],\n\t\tstr:      num.string(d.in),\n\t\tnumAttrs: numAttrs,\n\t}\n\td.consume(num.size)\n\treturn tok, true\n}\n\nconst (\n\tnumDec uint8 = (1 << iota) / 2\n\tnumHex\n\tnumOct\n\tnumFloat\n)\n\n// number is the result of parsing out a valid number from parseNumber. It\n// contains data for doing float or integer conversion via the strconv package\n// in conjunction with the input bytes.\ntype number struct {\n\tkind uint8\n\tneg  bool\n\tsize int\n\t// if neg, this is the length of whitespace and comments between\n\t// the minus sign and the rest fo the number literal\n\tsep int\n}\n\nfunc (num number) string(data []byte) string {\n\tstrSize := num.size\n\tlast := num.size - 1\n\tif num.kind == numFloat && (data[last] == 'f' || data[last] == 'F') {\n\t\tstrSize = last\n\t}\n\tif num.neg && num.sep > 0 {\n\t\t// strip whitespace/comments between negative sign and the rest\n\t\tstrLen := strSize - num.sep\n\t\tstr := make([]byte, strLen)\n\t\tstr[0] = data[0]\n\t\tcopy(str[1:], data[num.sep+1:strSize])\n\t\treturn string(str)\n\t}\n\treturn string(data[:strSize])\n\n}\n\n// parseNumber constructs a number object from given input. It allows for the\n// following patterns:\n//\n//\tinteger: ^-?([1-9][0-9]*|0[xX][0-9a-fA-F]+|0[0-7]*)\n//\tfloat: ^-?((0|[1-9][0-9]*)?([.][0-9]*)?([eE][+-]?[0-9]+)?[fF]?)\n//\n// It also returns the number of parsed bytes for the given number, 0 if it is\n// not a number.\nfunc parseNumber(input []byte) number {\n\tkind := numDec\n\tvar size int\n\tvar neg bool\n\n\ts := input\n\tif len(s) == 0 {\n\t\treturn number{}\n\t}\n\n\t// Optional -\n\tvar sep int\n\tif s[0] == '-' {\n\t\tneg = true\n\t\ts = s[1:]\n\t\tsize++\n\t\t// Consume any whitespace or comments between the\n\t\t// negative sign and the rest of the number\n\t\tlenBefore := len(s)\n\t\ts = consume(s, 0)\n\t\tsep = lenBefore - len(s)\n\t\tsize += sep\n\t\tif len(s) == 0 {\n\t\t\treturn number{}\n\t\t}\n\t}\n\n\tswitch {\n\tcase s[0] == '0':\n\t\tif len(s) > 1 {\n\t\t\tswitch {\n\t\t\tcase s[1] == 'x' || s[1] == 'X':\n\t\t\t\t// Parse as hex number.\n\t\t\t\tkind = numHex\n\t\t\t\tn := 2\n\t\t\t\ts = s[2:]\n\t\t\t\tfor len(s) > 0 && (('0' <= s[0] && s[0] <= '9') ||\n\t\t\t\t\t('a' <= s[0] && s[0] <= 'f') ||\n\t\t\t\t\t('A' <= s[0] && s[0] <= 'F')) {\n\t\t\t\t\ts = s[1:]\n\t\t\t\t\tn++\n\t\t\t\t}\n\t\t\t\tif n == 2 {\n\t\t\t\t\treturn number{}\n\t\t\t\t}\n\t\t\t\tsize += n\n\n\t\t\tcase '0' <= s[1] && s[1] <= '7':\n\t\t\t\t// Parse as octal number.\n\t\t\t\tkind = numOct\n\t\t\t\tn := 2\n\t\t\t\ts = s[2:]\n\t\t\t\tfor len(s) > 0 && '0' <= s[0] && s[0] <= '7' {\n\t\t\t\t\ts = s[1:]\n\t\t\t\t\tn++\n\t\t\t\t}\n\t\t\t\tsize += n\n\t\t\t}\n\n\t\t\tif kind&(numHex|numOct) > 0 {\n\t\t\t\tif len(s) > 0 && !isDelim(s[0]) {\n\t\t\t\t\treturn number{}\n\t\t\t\t}\n\t\t\t\treturn number{kind: kind, neg: neg, size: size, sep: sep}\n\t\t\t}\n\t\t}\n\t\ts = s[1:]\n\t\tsize++\n\n\tcase '1' <= s[0] && s[0] <= '9':\n\t\tn := 1\n\t\ts = s[1:]\n\t\tfor len(s) > 0 && '0' <= s[0] && s[0] <= '9' {\n\t\t\ts = s[1:]\n\t\t\tn++\n\t\t}\n\t\tsize += n\n\n\tcase s[0] == '.':\n\t\t// Set kind to numFloat to signify the intent to parse as float. And\n\t\t// that it needs to have other digits after '.'.\n\t\tkind = numFloat\n\n\tdefault:\n\t\treturn number{}\n\t}\n\n\t// . followed by 0 or more digits.\n\tif len(s) > 0 && s[0] == '.' {\n\t\tn := 1\n\t\ts = s[1:]\n\t\t// If decimal point was before any digits, it should be followed by\n\t\t// other digits.\n\t\tif len(s) == 0 && kind == numFloat {\n\t\t\treturn number{}\n\t\t}\n\t\tfor len(s) > 0 && '0' <= s[0] && s[0] <= '9' {\n\t\t\ts = s[1:]\n\t\t\tn++\n\t\t}\n\t\tsize += n\n\t\tkind = numFloat\n\t}\n\n\t// e or E followed by an optional - or + and 1 or more digits.\n\tif len(s) >= 2 && (s[0] == 'e' || s[0] == 'E') {\n\t\tkind = numFloat\n\t\ts = s[1:]\n\t\tn := 1\n\t\tif s[0] == '+' || s[0] == '-' {\n\t\t\ts = s[1:]\n\t\t\tn++\n\t\t\tif len(s) == 0 {\n\t\t\t\treturn number{}\n\t\t\t}\n\t\t}\n\t\tfor len(s) > 0 && '0' <= s[0] && s[0] <= '9' {\n\t\t\ts = s[1:]\n\t\t\tn++\n\t\t}\n\t\tsize += n\n\t}\n\n\t// Optional suffix f or F for floats.\n\tif len(s) > 0 && (s[0] == 'f' || s[0] == 'F') {\n\t\tkind = numFloat\n\t\ts = s[1:]\n\t\tsize++\n\t}\n\n\t// Check that next byte is a delimiter or it is at the end.\n\tif len(s) > 0 && !isDelim(s[0]) {\n\t\treturn number{}\n\t}\n\n\treturn number{kind: kind, neg: neg, size: size, sep: sep}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/encoding/text/decode_string.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage text\n\nimport (\n\t\"bytes\"\n\t\"strconv\"\n\t\"strings\"\n\t\"unicode\"\n\t\"unicode/utf16\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/internal/strs\"\n)\n\n// parseStringValue parses string field token.\n// This differs from parseString since the text format allows\n// multiple back-to-back string literals where they are semantically treated\n// as a single large string with all values concatenated.\n//\n// E.g., `\"foo\" \"bar\" \"baz\"` => \"foobarbaz\"\nfunc (d *Decoder) parseStringValue() (Token, error) {\n\t// Note that the ending quote is sufficient to unambiguously mark the end\n\t// of a string. Thus, the text grammar does not require intervening\n\t// whitespace or control characters in-between strings.\n\t// Thus, the following is valid:\n\t//\t`\"foo\"'bar'\"baz\"` => \"foobarbaz\"\n\tin0 := d.in\n\tvar ss []string\n\tfor len(d.in) > 0 && (d.in[0] == '\"' || d.in[0] == '\\'') {\n\t\ts, err := d.parseString()\n\t\tif err != nil {\n\t\t\treturn Token{}, err\n\t\t}\n\t\tss = append(ss, s)\n\t}\n\t// d.in already points to the end of the value at this point.\n\treturn Token{\n\t\tkind:  Scalar,\n\t\tattrs: stringValue,\n\t\tpos:   len(d.orig) - len(in0),\n\t\traw:   in0[:len(in0)-len(d.in)],\n\t\tstr:   strings.Join(ss, \"\"),\n\t}, nil\n}\n\n// parseString parses a string value enclosed in \" or '.\nfunc (d *Decoder) parseString() (string, error) {\n\tin := d.in\n\tif len(in) == 0 {\n\t\treturn \"\", ErrUnexpectedEOF\n\t}\n\tquote := in[0]\n\tin = in[1:]\n\ti := indexNeedEscapeInBytes(in)\n\tin, out := in[i:], in[:i:i] // set cap to prevent mutations\n\tfor len(in) > 0 {\n\t\tswitch r, n := utf8.DecodeRune(in); {\n\t\tcase r == utf8.RuneError && n == 1:\n\t\t\treturn \"\", d.newSyntaxError(\"invalid UTF-8 detected\")\n\t\tcase r == 0 || r == '\\n':\n\t\t\treturn \"\", d.newSyntaxError(\"invalid character %q in string\", r)\n\t\tcase r == rune(quote):\n\t\t\tin = in[1:]\n\t\t\td.consume(len(d.in) - len(in))\n\t\t\treturn string(out), nil\n\t\tcase r == '\\\\':\n\t\t\tif len(in) < 2 {\n\t\t\t\treturn \"\", ErrUnexpectedEOF\n\t\t\t}\n\t\t\tswitch r := in[1]; r {\n\t\t\tcase '\"', '\\'', '\\\\', '?':\n\t\t\t\tin, out = in[2:], append(out, r)\n\t\t\tcase 'a':\n\t\t\t\tin, out = in[2:], append(out, '\\a')\n\t\t\tcase 'b':\n\t\t\t\tin, out = in[2:], append(out, '\\b')\n\t\t\tcase 'n':\n\t\t\t\tin, out = in[2:], append(out, '\\n')\n\t\t\tcase 'r':\n\t\t\t\tin, out = in[2:], append(out, '\\r')\n\t\t\tcase 't':\n\t\t\t\tin, out = in[2:], append(out, '\\t')\n\t\t\tcase 'v':\n\t\t\t\tin, out = in[2:], append(out, '\\v')\n\t\t\tcase 'f':\n\t\t\t\tin, out = in[2:], append(out, '\\f')\n\t\t\tcase '0', '1', '2', '3', '4', '5', '6', '7':\n\t\t\t\t// One, two, or three octal characters.\n\t\t\t\tn := len(in[1:]) - len(bytes.TrimLeft(in[1:], \"01234567\"))\n\t\t\t\tif n > 3 {\n\t\t\t\t\tn = 3\n\t\t\t\t}\n\t\t\t\tv, err := strconv.ParseUint(string(in[1:1+n]), 8, 8)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn \"\", d.newSyntaxError(\"invalid octal escape code %q in string\", in[:1+n])\n\t\t\t\t}\n\t\t\t\tin, out = in[1+n:], append(out, byte(v))\n\t\t\tcase 'x':\n\t\t\t\t// One or two hexadecimal characters.\n\t\t\t\tn := len(in[2:]) - len(bytes.TrimLeft(in[2:], \"0123456789abcdefABCDEF\"))\n\t\t\t\tif n > 2 {\n\t\t\t\t\tn = 2\n\t\t\t\t}\n\t\t\t\tv, err := strconv.ParseUint(string(in[2:2+n]), 16, 8)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn \"\", d.newSyntaxError(\"invalid hex escape code %q in string\", in[:2+n])\n\t\t\t\t}\n\t\t\t\tin, out = in[2+n:], append(out, byte(v))\n\t\t\tcase 'u', 'U':\n\t\t\t\t// Four or eight hexadecimal characters\n\t\t\t\tn := 6\n\t\t\t\tif r == 'U' {\n\t\t\t\t\tn = 10\n\t\t\t\t}\n\t\t\t\tif len(in) < n {\n\t\t\t\t\treturn \"\", ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tv, err := strconv.ParseUint(string(in[2:n]), 16, 32)\n\t\t\t\tif utf8.MaxRune < v || err != nil {\n\t\t\t\t\treturn \"\", d.newSyntaxError(\"invalid Unicode escape code %q in string\", in[:n])\n\t\t\t\t}\n\t\t\t\tin = in[n:]\n\n\t\t\t\tr := rune(v)\n\t\t\t\tif utf16.IsSurrogate(r) {\n\t\t\t\t\tif len(in) < 6 {\n\t\t\t\t\t\treturn \"\", ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tv, err := strconv.ParseUint(string(in[2:6]), 16, 16)\n\t\t\t\t\tr = utf16.DecodeRune(r, rune(v))\n\t\t\t\t\tif in[0] != '\\\\' || in[1] != 'u' || r == unicode.ReplacementChar || err != nil {\n\t\t\t\t\t\treturn \"\", d.newSyntaxError(\"invalid Unicode escape code %q in string\", in[:6])\n\t\t\t\t\t}\n\t\t\t\t\tin = in[6:]\n\t\t\t\t}\n\t\t\t\tout = append(out, string(r)...)\n\t\t\tdefault:\n\t\t\t\treturn \"\", d.newSyntaxError(\"invalid escape code %q in string\", in[:2])\n\t\t\t}\n\t\tdefault:\n\t\t\ti := indexNeedEscapeInBytes(in[n:])\n\t\t\tin, out = in[n+i:], append(out, in[:n+i]...)\n\t\t}\n\t}\n\treturn \"\", ErrUnexpectedEOF\n}\n\n// indexNeedEscapeInString returns the index of the character that needs\n// escaping. If no characters need escaping, this returns the input length.\nfunc indexNeedEscapeInBytes(b []byte) int { return indexNeedEscapeInString(strs.UnsafeString(b)) }\n\n// UnmarshalString returns an unescaped string given a textproto string value.\n// String value needs to contain single or double quotes. This is only used by\n// internal/encoding/defval package for unmarshaling bytes.\nfunc UnmarshalString(s string) (string, error) {\n\td := NewDecoder([]byte(s))\n\treturn d.parseString()\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/encoding/text/decode_token.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage text\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"math\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"google.golang.org/protobuf/internal/flags\"\n)\n\n// Kind represents a token kind expressible in the textproto format.\ntype Kind uint8\n\n// Kind values.\nconst (\n\tInvalid Kind = iota\n\tEOF\n\tName   // Name indicates the field name.\n\tScalar // Scalar are scalar values, e.g. \"string\", 47, ENUM_LITERAL, true.\n\tMessageOpen\n\tMessageClose\n\tListOpen\n\tListClose\n\n\t// comma and semi-colon are only for parsing in between values and should not be exposed.\n\tcomma\n\tsemicolon\n\n\t// bof indicates beginning of file, which is the default token\n\t// kind at the beginning of parsing.\n\tbof = Invalid\n)\n\nfunc (t Kind) String() string {\n\tswitch t {\n\tcase Invalid:\n\t\treturn \"<invalid>\"\n\tcase EOF:\n\t\treturn \"eof\"\n\tcase Scalar:\n\t\treturn \"scalar\"\n\tcase Name:\n\t\treturn \"name\"\n\tcase MessageOpen:\n\t\treturn \"{\"\n\tcase MessageClose:\n\t\treturn \"}\"\n\tcase ListOpen:\n\t\treturn \"[\"\n\tcase ListClose:\n\t\treturn \"]\"\n\tcase comma:\n\t\treturn \",\"\n\tcase semicolon:\n\t\treturn \";\"\n\tdefault:\n\t\treturn fmt.Sprintf(\"<invalid:%v>\", uint8(t))\n\t}\n}\n\n// NameKind represents different types of field names.\ntype NameKind uint8\n\n// NameKind values.\nconst (\n\tIdentName NameKind = iota + 1\n\tTypeName\n\tFieldNumber\n)\n\nfunc (t NameKind) String() string {\n\tswitch t {\n\tcase IdentName:\n\t\treturn \"IdentName\"\n\tcase TypeName:\n\t\treturn \"TypeName\"\n\tcase FieldNumber:\n\t\treturn \"FieldNumber\"\n\tdefault:\n\t\treturn fmt.Sprintf(\"<invalid:%v>\", uint8(t))\n\t}\n}\n\n// Bit mask in Token.attrs to indicate if a Name token is followed by the\n// separator char ':'. The field name separator char is optional for message\n// field or repeated message field, but required for all other types. Decoder\n// simply indicates whether a Name token is followed by separator or not.  It is\n// up to the prototext package to validate.\nconst hasSeparator = 1 << 7\n\n// Scalar value types.\nconst (\n\tnumberValue = iota + 1\n\tstringValue\n\tliteralValue\n)\n\n// Bit mask in Token.numAttrs to indicate that the number is a negative.\nconst isNegative = 1 << 7\n\n// Token provides a parsed token kind and value. Values are provided by the\n// different accessor methods.\ntype Token struct {\n\t// Kind of the Token object.\n\tkind Kind\n\t// attrs contains metadata for the following Kinds:\n\t// Name: hasSeparator bit and one of NameKind.\n\t// Scalar: one of numberValue, stringValue, literalValue.\n\tattrs uint8\n\t// numAttrs contains metadata for numberValue:\n\t// - highest bit is whether negative or positive.\n\t// - lower bits indicate one of numDec, numHex, numOct, numFloat.\n\tnumAttrs uint8\n\t// pos provides the position of the token in the original input.\n\tpos int\n\t// raw bytes of the serialized token.\n\t// This is a subslice into the original input.\n\traw []byte\n\t// str contains parsed string for the following:\n\t// - stringValue of Scalar kind\n\t// - numberValue of Scalar kind\n\t// - TypeName of Name kind\n\tstr string\n}\n\n// Kind returns the token kind.\nfunc (t Token) Kind() Kind {\n\treturn t.kind\n}\n\n// RawString returns the read value in string.\nfunc (t Token) RawString() string {\n\treturn string(t.raw)\n}\n\n// Pos returns the token position from the input.\nfunc (t Token) Pos() int {\n\treturn t.pos\n}\n\n// NameKind returns IdentName, TypeName or FieldNumber.\n// It panics if type is not Name.\nfunc (t Token) NameKind() NameKind {\n\tif t.kind == Name {\n\t\treturn NameKind(t.attrs &^ hasSeparator)\n\t}\n\tpanic(fmt.Sprintf(\"Token is not a Name type: %s\", t.kind))\n}\n\n// HasSeparator returns true if the field name is followed by the separator char\n// ':', else false. It panics if type is not Name.\nfunc (t Token) HasSeparator() bool {\n\tif t.kind == Name {\n\t\treturn t.attrs&hasSeparator != 0\n\t}\n\tpanic(fmt.Sprintf(\"Token is not a Name type: %s\", t.kind))\n}\n\n// IdentName returns the value for IdentName type.\nfunc (t Token) IdentName() string {\n\tif t.kind == Name && t.attrs&uint8(IdentName) != 0 {\n\t\treturn string(t.raw)\n\t}\n\tpanic(fmt.Sprintf(\"Token is not an IdentName: %s:%s\", t.kind, NameKind(t.attrs&^hasSeparator)))\n}\n\n// TypeName returns the value for TypeName type.\nfunc (t Token) TypeName() string {\n\tif t.kind == Name && t.attrs&uint8(TypeName) != 0 {\n\t\treturn t.str\n\t}\n\tpanic(fmt.Sprintf(\"Token is not a TypeName: %s:%s\", t.kind, NameKind(t.attrs&^hasSeparator)))\n}\n\n// FieldNumber returns the value for FieldNumber type. It returns a\n// non-negative int32 value. Caller will still need to validate for the correct\n// field number range.\nfunc (t Token) FieldNumber() int32 {\n\tif t.kind != Name || t.attrs&uint8(FieldNumber) == 0 {\n\t\tpanic(fmt.Sprintf(\"Token is not a FieldNumber: %s:%s\", t.kind, NameKind(t.attrs&^hasSeparator)))\n\t}\n\t// Following should not return an error as it had already been called right\n\t// before this Token was constructed.\n\tnum, _ := strconv.ParseInt(string(t.raw), 10, 32)\n\treturn int32(num)\n}\n\n// String returns the string value for a Scalar type.\nfunc (t Token) String() (string, bool) {\n\tif t.kind != Scalar || t.attrs != stringValue {\n\t\treturn \"\", false\n\t}\n\treturn t.str, true\n}\n\n// Enum returns the literal value for a Scalar type for use as enum literals.\nfunc (t Token) Enum() (string, bool) {\n\tif t.kind != Scalar || t.attrs != literalValue || (len(t.raw) > 0 && t.raw[0] == '-') {\n\t\treturn \"\", false\n\t}\n\treturn string(t.raw), true\n}\n\n// Bool returns the bool value for a Scalar type.\nfunc (t Token) Bool() (bool, bool) {\n\tif t.kind != Scalar {\n\t\treturn false, false\n\t}\n\tswitch t.attrs {\n\tcase literalValue:\n\t\tif b, ok := boolLits[string(t.raw)]; ok {\n\t\t\treturn b, true\n\t\t}\n\tcase numberValue:\n\t\t// Unsigned integer representation of 0 or 1 is permitted: 00, 0x0, 01,\n\t\t// 0x1, etc.\n\t\tn, err := strconv.ParseUint(t.str, 0, 64)\n\t\tif err == nil {\n\t\t\tswitch n {\n\t\t\tcase 0:\n\t\t\t\treturn false, true\n\t\t\tcase 1:\n\t\t\t\treturn true, true\n\t\t\t}\n\t\t}\n\t}\n\treturn false, false\n}\n\n// These exact boolean literals are the ones supported in C++.\nvar boolLits = map[string]bool{\n\t\"t\":     true,\n\t\"true\":  true,\n\t\"True\":  true,\n\t\"f\":     false,\n\t\"false\": false,\n\t\"False\": false,\n}\n\n// Uint64 returns the uint64 value for a Scalar type.\nfunc (t Token) Uint64() (uint64, bool) {\n\tif t.kind != Scalar || t.attrs != numberValue ||\n\t\tt.numAttrs&isNegative > 0 || t.numAttrs&numFloat > 0 {\n\t\treturn 0, false\n\t}\n\tn, err := strconv.ParseUint(t.str, 0, 64)\n\tif err != nil {\n\t\treturn 0, false\n\t}\n\treturn n, true\n}\n\n// Uint32 returns the uint32 value for a Scalar type.\nfunc (t Token) Uint32() (uint32, bool) {\n\tif t.kind != Scalar || t.attrs != numberValue ||\n\t\tt.numAttrs&isNegative > 0 || t.numAttrs&numFloat > 0 {\n\t\treturn 0, false\n\t}\n\tn, err := strconv.ParseUint(t.str, 0, 32)\n\tif err != nil {\n\t\treturn 0, false\n\t}\n\treturn uint32(n), true\n}\n\n// Int64 returns the int64 value for a Scalar type.\nfunc (t Token) Int64() (int64, bool) {\n\tif t.kind != Scalar || t.attrs != numberValue || t.numAttrs&numFloat > 0 {\n\t\treturn 0, false\n\t}\n\tif n, err := strconv.ParseInt(t.str, 0, 64); err == nil {\n\t\treturn n, true\n\t}\n\t// C++ accepts large positive hex numbers as negative values.\n\t// This feature is here for proto1 backwards compatibility purposes.\n\tif flags.ProtoLegacy && (t.numAttrs == numHex) {\n\t\tif n, err := strconv.ParseUint(t.str, 0, 64); err == nil {\n\t\t\treturn int64(n), true\n\t\t}\n\t}\n\treturn 0, false\n}\n\n// Int32 returns the int32 value for a Scalar type.\nfunc (t Token) Int32() (int32, bool) {\n\tif t.kind != Scalar || t.attrs != numberValue || t.numAttrs&numFloat > 0 {\n\t\treturn 0, false\n\t}\n\tif n, err := strconv.ParseInt(t.str, 0, 32); err == nil {\n\t\treturn int32(n), true\n\t}\n\t// C++ accepts large positive hex numbers as negative values.\n\t// This feature is here for proto1 backwards compatibility purposes.\n\tif flags.ProtoLegacy && (t.numAttrs == numHex) {\n\t\tif n, err := strconv.ParseUint(t.str, 0, 32); err == nil {\n\t\t\treturn int32(n), true\n\t\t}\n\t}\n\treturn 0, false\n}\n\n// Float64 returns the float64 value for a Scalar type.\nfunc (t Token) Float64() (float64, bool) {\n\tif t.kind != Scalar {\n\t\treturn 0, false\n\t}\n\tswitch t.attrs {\n\tcase literalValue:\n\t\tif f, ok := floatLits[strings.ToLower(string(t.raw))]; ok {\n\t\t\treturn f, true\n\t\t}\n\tcase numberValue:\n\t\tn, err := strconv.ParseFloat(t.str, 64)\n\t\tif err == nil {\n\t\t\treturn n, true\n\t\t}\n\t\tnerr := err.(*strconv.NumError)\n\t\tif nerr.Err == strconv.ErrRange {\n\t\t\treturn n, true\n\t\t}\n\t}\n\treturn 0, false\n}\n\n// Float32 returns the float32 value for a Scalar type.\nfunc (t Token) Float32() (float32, bool) {\n\tif t.kind != Scalar {\n\t\treturn 0, false\n\t}\n\tswitch t.attrs {\n\tcase literalValue:\n\t\tif f, ok := floatLits[strings.ToLower(string(t.raw))]; ok {\n\t\t\treturn float32(f), true\n\t\t}\n\tcase numberValue:\n\t\tn, err := strconv.ParseFloat(t.str, 64)\n\t\tif err == nil {\n\t\t\t// Overflows are treated as (-)infinity.\n\t\t\treturn float32(n), true\n\t\t}\n\t\tnerr := err.(*strconv.NumError)\n\t\tif nerr.Err == strconv.ErrRange {\n\t\t\treturn float32(n), true\n\t\t}\n\t}\n\treturn 0, false\n}\n\n// These are the supported float literals which C++ permits case-insensitive\n// variants of these.\nvar floatLits = map[string]float64{\n\t\"nan\":       math.NaN(),\n\t\"inf\":       math.Inf(1),\n\t\"infinity\":  math.Inf(1),\n\t\"-inf\":      math.Inf(-1),\n\t\"-infinity\": math.Inf(-1),\n}\n\n// TokenEquals returns true if given Tokens are equal, else false.\nfunc TokenEquals(x, y Token) bool {\n\treturn x.kind == y.kind &&\n\t\tx.attrs == y.attrs &&\n\t\tx.numAttrs == y.numAttrs &&\n\t\tx.pos == y.pos &&\n\t\tbytes.Equal(x.raw, y.raw) &&\n\t\tx.str == y.str\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/encoding/text/doc.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package text implements the text format for protocol buffers.\n// This package has no semantic understanding for protocol buffers and is only\n// a parser and composer for the format.\n//\n// There is no formal specification for the protobuf text format, as such the\n// C++ implementation (see google::protobuf::TextFormat) is the reference\n// implementation of the text format.\n//\n// This package is neither a superset nor a subset of the C++ implementation.\n// This implementation permits a more liberal grammar in some cases to be\n// backwards compatible with the historical Go implementation.\n// Future parsings unique to Go should not be added.\n// Some grammars allowed by the C++ implementation are deliberately\n// not implemented here because they are considered a bug by the protobuf team\n// and should not be replicated.\n//\n// The Go implementation should implement a sufficient amount of the C++\n// grammar such that the default text serialization by C++ can be parsed by Go.\n// However, just because the C++ parser accepts some input does not mean that\n// the Go implementation should as well.\n//\n// The text format is almost a superset of JSON except:\n//   - message keys are not quoted strings, but identifiers\n//   - the top-level value must be a message without the delimiters\npackage text\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/encoding/text/encode.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage text\n\nimport (\n\t\"math\"\n\t\"math/bits\"\n\t\"strconv\"\n\t\"strings\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/internal/detrand\"\n\t\"google.golang.org/protobuf/internal/errors\"\n)\n\n// encType represents an encoding type.\ntype encType uint8\n\nconst (\n\t_ encType = (1 << iota) / 2\n\tname\n\tscalar\n\tmessageOpen\n\tmessageClose\n)\n\n// Encoder provides methods to write out textproto constructs and values. The user is\n// responsible for producing valid sequences of constructs and values.\ntype Encoder struct {\n\tencoderState\n\n\tindent      string\n\tdelims      [2]byte\n\toutputASCII bool\n}\n\ntype encoderState struct {\n\tlastType encType\n\tindents  []byte\n\tout      []byte\n}\n\n// NewEncoder returns an Encoder.\n//\n// If indent is a non-empty string, it causes every entry in a List or Message\n// to be preceded by the indent and trailed by a newline.\n//\n// If delims is not the zero value, it controls the delimiter characters used\n// for messages (e.g., \"{}\" vs \"<>\").\n//\n// If outputASCII is true, strings will be serialized in such a way that\n// multi-byte UTF-8 sequences are escaped. This property ensures that the\n// overall output is ASCII (as opposed to UTF-8).\nfunc NewEncoder(buf []byte, indent string, delims [2]byte, outputASCII bool) (*Encoder, error) {\n\te := &Encoder{\n\t\tencoderState: encoderState{out: buf},\n\t}\n\tif len(indent) > 0 {\n\t\tif strings.Trim(indent, \" \\t\") != \"\" {\n\t\t\treturn nil, errors.New(\"indent may only be composed of space and tab characters\")\n\t\t}\n\t\te.indent = indent\n\t}\n\tswitch delims {\n\tcase [2]byte{0, 0}:\n\t\te.delims = [2]byte{'{', '}'}\n\tcase [2]byte{'{', '}'}, [2]byte{'<', '>'}:\n\t\te.delims = delims\n\tdefault:\n\t\treturn nil, errors.New(\"delimiters may only be \\\"{}\\\" or \\\"<>\\\"\")\n\t}\n\te.outputASCII = outputASCII\n\n\treturn e, nil\n}\n\n// Bytes returns the content of the written bytes.\nfunc (e *Encoder) Bytes() []byte {\n\treturn e.out\n}\n\n// StartMessage writes out the '{' or '<' symbol.\nfunc (e *Encoder) StartMessage() {\n\te.prepareNext(messageOpen)\n\te.out = append(e.out, e.delims[0])\n}\n\n// EndMessage writes out the '}' or '>' symbol.\nfunc (e *Encoder) EndMessage() {\n\te.prepareNext(messageClose)\n\te.out = append(e.out, e.delims[1])\n}\n\n// WriteName writes out the field name and the separator ':'.\nfunc (e *Encoder) WriteName(s string) {\n\te.prepareNext(name)\n\te.out = append(e.out, s...)\n\te.out = append(e.out, ':')\n}\n\n// WriteBool writes out the given boolean value.\nfunc (e *Encoder) WriteBool(b bool) {\n\tif b {\n\t\te.WriteLiteral(\"true\")\n\t} else {\n\t\te.WriteLiteral(\"false\")\n\t}\n}\n\n// WriteString writes out the given string value.\nfunc (e *Encoder) WriteString(s string) {\n\te.prepareNext(scalar)\n\te.out = appendString(e.out, s, e.outputASCII)\n}\n\nfunc appendString(out []byte, in string, outputASCII bool) []byte {\n\tout = append(out, '\"')\n\ti := indexNeedEscapeInString(in)\n\tin, out = in[i:], append(out, in[:i]...)\n\tfor len(in) > 0 {\n\t\tswitch r, n := utf8.DecodeRuneInString(in); {\n\t\tcase r == utf8.RuneError && n == 1:\n\t\t\t// We do not report invalid UTF-8 because strings in the text format\n\t\t\t// are used to represent both the proto string and bytes type.\n\t\t\tr = rune(in[0])\n\t\t\tfallthrough\n\t\tcase r < ' ' || r == '\"' || r == '\\\\' || r == 0x7f:\n\t\t\tout = append(out, '\\\\')\n\t\t\tswitch r {\n\t\t\tcase '\"', '\\\\':\n\t\t\t\tout = append(out, byte(r))\n\t\t\tcase '\\n':\n\t\t\t\tout = append(out, 'n')\n\t\t\tcase '\\r':\n\t\t\t\tout = append(out, 'r')\n\t\t\tcase '\\t':\n\t\t\t\tout = append(out, 't')\n\t\t\tdefault:\n\t\t\t\tout = append(out, 'x')\n\t\t\t\tout = append(out, \"00\"[1+(bits.Len32(uint32(r))-1)/4:]...)\n\t\t\t\tout = strconv.AppendUint(out, uint64(r), 16)\n\t\t\t}\n\t\t\tin = in[n:]\n\t\tcase r >= utf8.RuneSelf && (outputASCII || r <= 0x009f):\n\t\t\tout = append(out, '\\\\')\n\t\t\tif r <= math.MaxUint16 {\n\t\t\t\tout = append(out, 'u')\n\t\t\t\tout = append(out, \"0000\"[1+(bits.Len32(uint32(r))-1)/4:]...)\n\t\t\t\tout = strconv.AppendUint(out, uint64(r), 16)\n\t\t\t} else {\n\t\t\t\tout = append(out, 'U')\n\t\t\t\tout = append(out, \"00000000\"[1+(bits.Len32(uint32(r))-1)/4:]...)\n\t\t\t\tout = strconv.AppendUint(out, uint64(r), 16)\n\t\t\t}\n\t\t\tin = in[n:]\n\t\tdefault:\n\t\t\ti := indexNeedEscapeInString(in[n:])\n\t\t\tin, out = in[n+i:], append(out, in[:n+i]...)\n\t\t}\n\t}\n\tout = append(out, '\"')\n\treturn out\n}\n\n// indexNeedEscapeInString returns the index of the character that needs\n// escaping. If no characters need escaping, this returns the input length.\nfunc indexNeedEscapeInString(s string) int {\n\tfor i := 0; i < len(s); i++ {\n\t\tif c := s[i]; c < ' ' || c == '\"' || c == '\\'' || c == '\\\\' || c >= 0x7f {\n\t\t\treturn i\n\t\t}\n\t}\n\treturn len(s)\n}\n\n// WriteFloat writes out the given float value for given bitSize.\nfunc (e *Encoder) WriteFloat(n float64, bitSize int) {\n\te.prepareNext(scalar)\n\te.out = appendFloat(e.out, n, bitSize)\n}\n\nfunc appendFloat(out []byte, n float64, bitSize int) []byte {\n\tswitch {\n\tcase math.IsNaN(n):\n\t\treturn append(out, \"nan\"...)\n\tcase math.IsInf(n, +1):\n\t\treturn append(out, \"inf\"...)\n\tcase math.IsInf(n, -1):\n\t\treturn append(out, \"-inf\"...)\n\tdefault:\n\t\treturn strconv.AppendFloat(out, n, 'g', -1, bitSize)\n\t}\n}\n\n// WriteInt writes out the given signed integer value.\nfunc (e *Encoder) WriteInt(n int64) {\n\te.prepareNext(scalar)\n\te.out = strconv.AppendInt(e.out, n, 10)\n}\n\n// WriteUint writes out the given unsigned integer value.\nfunc (e *Encoder) WriteUint(n uint64) {\n\te.prepareNext(scalar)\n\te.out = strconv.AppendUint(e.out, n, 10)\n}\n\n// WriteLiteral writes out the given string as a literal value without quotes.\n// This is used for writing enum literal strings.\nfunc (e *Encoder) WriteLiteral(s string) {\n\te.prepareNext(scalar)\n\te.out = append(e.out, s...)\n}\n\n// prepareNext adds possible space and indentation for the next value based\n// on last encType and indent option. It also updates e.lastType to next.\nfunc (e *Encoder) prepareNext(next encType) {\n\tdefer func() {\n\t\te.lastType = next\n\t}()\n\n\t// Single line.\n\tif len(e.indent) == 0 {\n\t\t// Add space after each field before the next one.\n\t\tif e.lastType&(scalar|messageClose) != 0 && next == name {\n\t\t\te.out = append(e.out, ' ')\n\t\t\t// Add a random extra space to make output unstable.\n\t\t\tif detrand.Bool() {\n\t\t\t\te.out = append(e.out, ' ')\n\t\t\t}\n\t\t}\n\t\treturn\n\t}\n\n\t// Multi-line.\n\tswitch {\n\tcase e.lastType == name:\n\t\te.out = append(e.out, ' ')\n\t\t// Add a random extra space after name: to make output unstable.\n\t\tif detrand.Bool() {\n\t\t\te.out = append(e.out, ' ')\n\t\t}\n\n\tcase e.lastType == messageOpen && next != messageClose:\n\t\te.indents = append(e.indents, e.indent...)\n\t\te.out = append(e.out, '\\n')\n\t\te.out = append(e.out, e.indents...)\n\n\tcase e.lastType&(scalar|messageClose) != 0:\n\t\tif next == messageClose {\n\t\t\te.indents = e.indents[:len(e.indents)-len(e.indent)]\n\t\t}\n\t\te.out = append(e.out, '\\n')\n\t\te.out = append(e.out, e.indents...)\n\t}\n}\n\n// Snapshot returns the current snapshot for use in Reset.\nfunc (e *Encoder) Snapshot() encoderState {\n\treturn e.encoderState\n}\n\n// Reset resets the Encoder to the given encoderState from a Snapshot.\nfunc (e *Encoder) Reset(es encoderState) {\n\te.encoderState = es\n}\n\n// AppendString appends the escaped form of the input string to b.\nfunc AppendString(b []byte, s string) []byte {\n\treturn appendString(b, s, false)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/errors/errors.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package errors implements functions to manipulate errors.\npackage errors\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\n\t\"google.golang.org/protobuf/internal/detrand\"\n)\n\n// Error is a sentinel matching all errors produced by this package.\nvar Error = errors.New(\"protobuf error\")\n\n// New formats a string according to the format specifier and arguments and\n// returns an error that has a \"proto\" prefix.\nfunc New(f string, x ...any) error {\n\treturn &prefixError{s: format(f, x...)}\n}\n\ntype prefixError struct{ s string }\n\nvar prefix = func() string {\n\t// Deliberately introduce instability into the error message string to\n\t// discourage users from performing error string comparisons.\n\tif detrand.Bool() {\n\t\treturn \"proto: \" // use non-breaking spaces (U+00a0)\n\t} else {\n\t\treturn \"proto: \" // use regular spaces (U+0020)\n\t}\n}()\n\nfunc (e *prefixError) Error() string {\n\treturn prefix + e.s\n}\n\nfunc (e *prefixError) Unwrap() error {\n\treturn Error\n}\n\n// Wrap returns an error that has a \"proto\" prefix, the formatted string described\n// by the format specifier and arguments, and a suffix of err. The error wraps err.\nfunc Wrap(err error, f string, x ...any) error {\n\treturn &wrapError{\n\t\ts:   format(f, x...),\n\t\terr: err,\n\t}\n}\n\ntype wrapError struct {\n\ts   string\n\terr error\n}\n\nfunc (e *wrapError) Error() string {\n\treturn format(\"%v%v: %v\", prefix, e.s, e.err)\n}\n\nfunc (e *wrapError) Unwrap() error {\n\treturn e.err\n}\n\nfunc (e *wrapError) Is(target error) bool {\n\treturn target == Error\n}\n\nfunc format(f string, x ...any) string {\n\t// avoid \"proto: \" prefix when chaining\n\tfor i := 0; i < len(x); i++ {\n\t\tswitch e := x[i].(type) {\n\t\tcase *prefixError:\n\t\t\tx[i] = e.s\n\t\tcase *wrapError:\n\t\t\tx[i] = format(\"%v: %v\", e.s, e.err)\n\t\t}\n\t}\n\treturn fmt.Sprintf(f, x...)\n}\n\nfunc InvalidUTF8(name string) error {\n\treturn New(\"field %v contains invalid UTF-8\", name)\n}\n\nfunc RequiredNotSet(name string) error {\n\treturn New(\"required field %v not set\", name)\n}\n\ntype SizeMismatchError struct {\n\tCalculated, Measured int\n}\n\nfunc (e *SizeMismatchError) Error() string {\n\treturn fmt.Sprintf(\"size mismatch (see https://github.com/golang/protobuf/issues/1609): calculated=%d, measured=%d\", e.Calculated, e.Measured)\n}\n\nfunc MismatchedSizeCalculation(calculated, measured int) error {\n\treturn &SizeMismatchError{\n\t\tCalculated: calculated,\n\t\tMeasured:   measured,\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/filedesc/build.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package filedesc provides functionality for constructing descriptors.\n//\n// The types in this package implement interfaces in the protoreflect package\n// related to protobuf descripriptors.\npackage filedesc\n\nimport (\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/genid\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n)\n\n// Builder construct a protoreflect.FileDescriptor from the raw descriptor.\ntype Builder struct {\n\t// GoPackagePath is the Go package path that is invoking this builder.\n\tGoPackagePath string\n\n\t// RawDescriptor is the wire-encoded bytes of FileDescriptorProto\n\t// and must be populated.\n\tRawDescriptor []byte\n\n\t// NumEnums is the total number of enums declared in the file.\n\tNumEnums int32\n\t// NumMessages is the total number of messages declared in the file.\n\t// It includes the implicit message declarations for map entries.\n\tNumMessages int32\n\t// NumExtensions is the total number of extensions declared in the file.\n\tNumExtensions int32\n\t// NumServices is the total number of services declared in the file.\n\tNumServices int32\n\n\t// TypeResolver resolves extension field types for descriptor options.\n\t// If nil, it uses protoregistry.GlobalTypes.\n\tTypeResolver interface {\n\t\tprotoregistry.ExtensionTypeResolver\n\t}\n\n\t// FileRegistry is use to lookup file, enum, and message dependencies.\n\t// Once constructed, the file descriptor is registered here.\n\t// If nil, it uses protoregistry.GlobalFiles.\n\tFileRegistry interface {\n\t\tFindFileByPath(string) (protoreflect.FileDescriptor, error)\n\t\tFindDescriptorByName(protoreflect.FullName) (protoreflect.Descriptor, error)\n\t\tRegisterFile(protoreflect.FileDescriptor) error\n\t}\n}\n\n// resolverByIndex is an interface Builder.FileRegistry may implement.\n// If so, it permits looking up an enum or message dependency based on the\n// sub-list and element index into filetype.Builder.DependencyIndexes.\ntype resolverByIndex interface {\n\tFindEnumByIndex(int32, int32, []Enum, []Message) protoreflect.EnumDescriptor\n\tFindMessageByIndex(int32, int32, []Enum, []Message) protoreflect.MessageDescriptor\n}\n\n// Indexes of each sub-list in filetype.Builder.DependencyIndexes.\nconst (\n\tlistFieldDeps int32 = iota\n\tlistExtTargets\n\tlistExtDeps\n\tlistMethInDeps\n\tlistMethOutDeps\n)\n\n// Out is the output of the Builder.\ntype Out struct {\n\tFile protoreflect.FileDescriptor\n\n\t// Enums is all enum descriptors in \"flattened ordering\".\n\tEnums []Enum\n\t// Messages is all message descriptors in \"flattened ordering\".\n\t// It includes the implicit message declarations for map entries.\n\tMessages []Message\n\t// Extensions is all extension descriptors in \"flattened ordering\".\n\tExtensions []Extension\n\t// Service is all service descriptors in \"flattened ordering\".\n\tServices []Service\n}\n\n// Build constructs a FileDescriptor given the parameters set in Builder.\n// It assumes that the inputs are well-formed and panics if any inconsistencies\n// are encountered.\n//\n// If NumEnums+NumMessages+NumExtensions+NumServices is zero,\n// then Build automatically derives them from the raw descriptor.\nfunc (db Builder) Build() (out Out) {\n\t// Populate the counts if uninitialized.\n\tif db.NumEnums+db.NumMessages+db.NumExtensions+db.NumServices == 0 {\n\t\tdb.unmarshalCounts(db.RawDescriptor, true)\n\t}\n\n\t// Initialize resolvers and registries if unpopulated.\n\tif db.TypeResolver == nil {\n\t\tdb.TypeResolver = protoregistry.GlobalTypes\n\t}\n\tif db.FileRegistry == nil {\n\t\tdb.FileRegistry = protoregistry.GlobalFiles\n\t}\n\n\tfd := newRawFile(db)\n\tout.File = fd\n\tout.Enums = fd.allEnums\n\tout.Messages = fd.allMessages\n\tout.Extensions = fd.allExtensions\n\tout.Services = fd.allServices\n\n\tif err := db.FileRegistry.RegisterFile(fd); err != nil {\n\t\tpanic(err)\n\t}\n\treturn out\n}\n\n// unmarshalCounts counts the number of enum, message, extension, and service\n// declarations in the raw message, which is either a FileDescriptorProto\n// or a MessageDescriptorProto depending on whether isFile is set.\nfunc (db *Builder) unmarshalCounts(b []byte, isFile bool) {\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tif isFile {\n\t\t\t\tswitch num {\n\t\t\t\tcase genid.FileDescriptorProto_EnumType_field_number:\n\t\t\t\t\tdb.NumEnums++\n\t\t\t\tcase genid.FileDescriptorProto_MessageType_field_number:\n\t\t\t\t\tdb.unmarshalCounts(v, false)\n\t\t\t\t\tdb.NumMessages++\n\t\t\t\tcase genid.FileDescriptorProto_Extension_field_number:\n\t\t\t\t\tdb.NumExtensions++\n\t\t\t\tcase genid.FileDescriptorProto_Service_field_number:\n\t\t\t\t\tdb.NumServices++\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tswitch num {\n\t\t\t\tcase genid.DescriptorProto_EnumType_field_number:\n\t\t\t\t\tdb.NumEnums++\n\t\t\t\tcase genid.DescriptorProto_NestedType_field_number:\n\t\t\t\t\tdb.unmarshalCounts(v, false)\n\t\t\t\t\tdb.NumMessages++\n\t\t\t\tcase genid.DescriptorProto_Extension_field_number:\n\t\t\t\t\tdb.NumExtensions++\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/filedesc/desc.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage filedesc\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"strings\"\n\t\"sync\"\n\t\"sync/atomic\"\n\n\t\"google.golang.org/protobuf/internal/descfmt\"\n\t\"google.golang.org/protobuf/internal/descopts\"\n\t\"google.golang.org/protobuf/internal/encoding/defval\"\n\t\"google.golang.org/protobuf/internal/encoding/messageset\"\n\t\"google.golang.org/protobuf/internal/genid\"\n\t\"google.golang.org/protobuf/internal/pragma\"\n\t\"google.golang.org/protobuf/internal/strs\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\n// Edition is an Enum for proto2.Edition\ntype Edition int32\n\n// These values align with the value of Enum in descriptor.proto which allows\n// direct conversion between the proto enum and this enum.\nconst (\n\tEditionUnknown     Edition = 0\n\tEditionProto2      Edition = 998\n\tEditionProto3      Edition = 999\n\tEdition2023        Edition = 1000\n\tEdition2024        Edition = 1001\n\tEditionUnsupported Edition = 100000\n)\n\n// The types in this file may have a suffix:\n//\t• L0: Contains fields common to all descriptors (except File) and\n//\tmust be initialized up front.\n//\t• L1: Contains fields specific to a descriptor and\n//\tmust be initialized up front. If the associated proto uses Editions, the\n//  Editions features must always be resolved. If not explicitly set, the\n//  appropriate default must be resolved and set.\n//\t• L2: Contains fields that are lazily initialized when constructing\n//\tfrom the raw file descriptor. When constructing as a literal, the L2\n//\tfields must be initialized up front.\n//\n// The types are exported so that packages like reflect/protodesc can\n// directly construct descriptors.\n\ntype (\n\tFile struct {\n\t\tfileRaw\n\t\tL1 FileL1\n\n\t\tonce uint32     // atomically set if L2 is valid\n\t\tmu   sync.Mutex // protects L2\n\t\tL2   *FileL2\n\t}\n\tFileL1 struct {\n\t\tSyntax  protoreflect.Syntax\n\t\tEdition Edition // Only used if Syntax == Editions\n\t\tPath    string\n\t\tPackage protoreflect.FullName\n\n\t\tEnums      Enums\n\t\tMessages   Messages\n\t\tExtensions Extensions\n\t\tServices   Services\n\n\t\tEditionFeatures EditionFeatures\n\t}\n\tFileL2 struct {\n\t\tOptions   func() protoreflect.ProtoMessage\n\t\tImports   FileImports\n\t\tLocations SourceLocations\n\t}\n\n\t// EditionFeatures is a frequently-instantiated struct, so please take care\n\t// to minimize padding when adding new fields to this struct (add them in\n\t// the right place/order).\n\tEditionFeatures struct {\n\t\t// StripEnumPrefix determines if the plugin generates enum value\n\t\t// constants as-is, with their prefix stripped, or both variants.\n\t\tStripEnumPrefix int\n\n\t\t// IsFieldPresence is true if field_presence is EXPLICIT\n\t\t// https://protobuf.dev/editions/features/#field_presence\n\t\tIsFieldPresence bool\n\n\t\t// IsFieldPresence is true if field_presence is LEGACY_REQUIRED\n\t\t// https://protobuf.dev/editions/features/#field_presence\n\t\tIsLegacyRequired bool\n\n\t\t// IsOpenEnum is true if enum_type is OPEN\n\t\t// https://protobuf.dev/editions/features/#enum_type\n\t\tIsOpenEnum bool\n\n\t\t// IsPacked is true if repeated_field_encoding is PACKED\n\t\t// https://protobuf.dev/editions/features/#repeated_field_encoding\n\t\tIsPacked bool\n\n\t\t// IsUTF8Validated is true if utf_validation is VERIFY\n\t\t// https://protobuf.dev/editions/features/#utf8_validation\n\t\tIsUTF8Validated bool\n\n\t\t// IsDelimitedEncoded is true if message_encoding is DELIMITED\n\t\t// https://protobuf.dev/editions/features/#message_encoding\n\t\tIsDelimitedEncoded bool\n\n\t\t// IsJSONCompliant is true if json_format is ALLOW\n\t\t// https://protobuf.dev/editions/features/#json_format\n\t\tIsJSONCompliant bool\n\n\t\t// GenerateLegacyUnmarshalJSON determines if the plugin generates the\n\t\t// UnmarshalJSON([]byte) error method for enums.\n\t\tGenerateLegacyUnmarshalJSON bool\n\t\t// APILevel controls which API (Open, Hybrid or Opaque) should be used\n\t\t// for generated code (.pb.go files).\n\t\tAPILevel int\n\t}\n)\n\nfunc (fd *File) ParentFile() protoreflect.FileDescriptor { return fd }\nfunc (fd *File) Parent() protoreflect.Descriptor         { return nil }\nfunc (fd *File) Index() int                              { return 0 }\nfunc (fd *File) Syntax() protoreflect.Syntax             { return fd.L1.Syntax }\n\n// Not exported and just used to reconstruct the original FileDescriptor proto\nfunc (fd *File) Edition() int32                  { return int32(fd.L1.Edition) }\nfunc (fd *File) Name() protoreflect.Name         { return fd.L1.Package.Name() }\nfunc (fd *File) FullName() protoreflect.FullName { return fd.L1.Package }\nfunc (fd *File) IsPlaceholder() bool             { return false }\nfunc (fd *File) Options() protoreflect.ProtoMessage {\n\tif f := fd.lazyInit().Options; f != nil {\n\t\treturn f()\n\t}\n\treturn descopts.File\n}\nfunc (fd *File) Path() string                                  { return fd.L1.Path }\nfunc (fd *File) Package() protoreflect.FullName                { return fd.L1.Package }\nfunc (fd *File) Imports() protoreflect.FileImports             { return &fd.lazyInit().Imports }\nfunc (fd *File) Enums() protoreflect.EnumDescriptors           { return &fd.L1.Enums }\nfunc (fd *File) Messages() protoreflect.MessageDescriptors     { return &fd.L1.Messages }\nfunc (fd *File) Extensions() protoreflect.ExtensionDescriptors { return &fd.L1.Extensions }\nfunc (fd *File) Services() protoreflect.ServiceDescriptors     { return &fd.L1.Services }\nfunc (fd *File) SourceLocations() protoreflect.SourceLocations { return &fd.lazyInit().Locations }\nfunc (fd *File) Format(s fmt.State, r rune)                    { descfmt.FormatDesc(s, r, fd) }\nfunc (fd *File) ProtoType(protoreflect.FileDescriptor)         {}\nfunc (fd *File) ProtoInternal(pragma.DoNotImplement)           {}\n\nfunc (fd *File) lazyInit() *FileL2 {\n\tif atomic.LoadUint32(&fd.once) == 0 {\n\t\tfd.lazyInitOnce()\n\t}\n\treturn fd.L2\n}\n\nfunc (fd *File) lazyInitOnce() {\n\tfd.mu.Lock()\n\tif fd.L2 == nil {\n\t\tfd.lazyRawInit() // recursively initializes all L2 structures\n\t}\n\tatomic.StoreUint32(&fd.once, 1)\n\tfd.mu.Unlock()\n}\n\n// GoPackagePath is a pseudo-internal API for determining the Go package path\n// that this file descriptor is declared in.\n//\n// WARNING: This method is exempt from the compatibility promise and may be\n// removed in the future without warning.\nfunc (fd *File) GoPackagePath() string {\n\treturn fd.builder.GoPackagePath\n}\n\ntype (\n\tEnum struct {\n\t\tBase\n\t\tL1 EnumL1\n\t\tL2 *EnumL2 // protected by fileDesc.once\n\t}\n\tEnumL1 struct {\n\t\teagerValues bool // controls whether EnumL2.Values is already populated\n\n\t\tEditionFeatures EditionFeatures\n\t}\n\tEnumL2 struct {\n\t\tOptions        func() protoreflect.ProtoMessage\n\t\tValues         EnumValues\n\t\tReservedNames  Names\n\t\tReservedRanges EnumRanges\n\t}\n\n\tEnumValue struct {\n\t\tBase\n\t\tL1 EnumValueL1\n\t}\n\tEnumValueL1 struct {\n\t\tOptions func() protoreflect.ProtoMessage\n\t\tNumber  protoreflect.EnumNumber\n\t}\n)\n\nfunc (ed *Enum) Options() protoreflect.ProtoMessage {\n\tif f := ed.lazyInit().Options; f != nil {\n\t\treturn f()\n\t}\n\treturn descopts.Enum\n}\nfunc (ed *Enum) Values() protoreflect.EnumValueDescriptors {\n\tif ed.L1.eagerValues {\n\t\treturn &ed.L2.Values\n\t}\n\treturn &ed.lazyInit().Values\n}\nfunc (ed *Enum) ReservedNames() protoreflect.Names       { return &ed.lazyInit().ReservedNames }\nfunc (ed *Enum) ReservedRanges() protoreflect.EnumRanges { return &ed.lazyInit().ReservedRanges }\nfunc (ed *Enum) Format(s fmt.State, r rune)              { descfmt.FormatDesc(s, r, ed) }\nfunc (ed *Enum) ProtoType(protoreflect.EnumDescriptor)   {}\nfunc (ed *Enum) lazyInit() *EnumL2 {\n\ted.L0.ParentFile.lazyInit() // implicitly initializes L2\n\treturn ed.L2\n}\nfunc (ed *Enum) IsClosed() bool {\n\treturn !ed.L1.EditionFeatures.IsOpenEnum\n}\n\nfunc (ed *EnumValue) Options() protoreflect.ProtoMessage {\n\tif f := ed.L1.Options; f != nil {\n\t\treturn f()\n\t}\n\treturn descopts.EnumValue\n}\nfunc (ed *EnumValue) Number() protoreflect.EnumNumber            { return ed.L1.Number }\nfunc (ed *EnumValue) Format(s fmt.State, r rune)                 { descfmt.FormatDesc(s, r, ed) }\nfunc (ed *EnumValue) ProtoType(protoreflect.EnumValueDescriptor) {}\n\ntype (\n\tMessage struct {\n\t\tBase\n\t\tL1 MessageL1\n\t\tL2 *MessageL2 // protected by fileDesc.once\n\t}\n\tMessageL1 struct {\n\t\tEnums        Enums\n\t\tMessages     Messages\n\t\tExtensions   Extensions\n\t\tIsMapEntry   bool // promoted from google.protobuf.MessageOptions\n\t\tIsMessageSet bool // promoted from google.protobuf.MessageOptions\n\n\t\tEditionFeatures EditionFeatures\n\t}\n\tMessageL2 struct {\n\t\tOptions               func() protoreflect.ProtoMessage\n\t\tFields                Fields\n\t\tOneofs                Oneofs\n\t\tReservedNames         Names\n\t\tReservedRanges        FieldRanges\n\t\tRequiredNumbers       FieldNumbers // must be consistent with Fields.Cardinality\n\t\tExtensionRanges       FieldRanges\n\t\tExtensionRangeOptions []func() protoreflect.ProtoMessage // must be same length as ExtensionRanges\n\t}\n\n\tField struct {\n\t\tBase\n\t\tL1 FieldL1\n\t}\n\tFieldL1 struct {\n\t\tOptions          func() protoreflect.ProtoMessage\n\t\tNumber           protoreflect.FieldNumber\n\t\tCardinality      protoreflect.Cardinality // must be consistent with Message.RequiredNumbers\n\t\tKind             protoreflect.Kind\n\t\tStringName       stringName\n\t\tIsProto3Optional bool // promoted from google.protobuf.FieldDescriptorProto\n\t\tIsLazy           bool // promoted from google.protobuf.FieldOptions\n\t\tDefault          defaultValue\n\t\tContainingOneof  protoreflect.OneofDescriptor // must be consistent with Message.Oneofs.Fields\n\t\tEnum             protoreflect.EnumDescriptor\n\t\tMessage          protoreflect.MessageDescriptor\n\n\t\tEditionFeatures EditionFeatures\n\t}\n\n\tOneof struct {\n\t\tBase\n\t\tL1 OneofL1\n\t}\n\tOneofL1 struct {\n\t\tOptions func() protoreflect.ProtoMessage\n\t\tFields  OneofFields // must be consistent with Message.Fields.ContainingOneof\n\n\t\tEditionFeatures EditionFeatures\n\t}\n)\n\nfunc (md *Message) Options() protoreflect.ProtoMessage {\n\tif f := md.lazyInit().Options; f != nil {\n\t\treturn f()\n\t}\n\treturn descopts.Message\n}\nfunc (md *Message) IsMapEntry() bool                           { return md.L1.IsMapEntry }\nfunc (md *Message) Fields() protoreflect.FieldDescriptors      { return &md.lazyInit().Fields }\nfunc (md *Message) Oneofs() protoreflect.OneofDescriptors      { return &md.lazyInit().Oneofs }\nfunc (md *Message) ReservedNames() protoreflect.Names          { return &md.lazyInit().ReservedNames }\nfunc (md *Message) ReservedRanges() protoreflect.FieldRanges   { return &md.lazyInit().ReservedRanges }\nfunc (md *Message) RequiredNumbers() protoreflect.FieldNumbers { return &md.lazyInit().RequiredNumbers }\nfunc (md *Message) ExtensionRanges() protoreflect.FieldRanges  { return &md.lazyInit().ExtensionRanges }\nfunc (md *Message) ExtensionRangeOptions(i int) protoreflect.ProtoMessage {\n\tif f := md.lazyInit().ExtensionRangeOptions[i]; f != nil {\n\t\treturn f()\n\t}\n\treturn descopts.ExtensionRange\n}\nfunc (md *Message) Enums() protoreflect.EnumDescriptors           { return &md.L1.Enums }\nfunc (md *Message) Messages() protoreflect.MessageDescriptors     { return &md.L1.Messages }\nfunc (md *Message) Extensions() protoreflect.ExtensionDescriptors { return &md.L1.Extensions }\nfunc (md *Message) ProtoType(protoreflect.MessageDescriptor)      {}\nfunc (md *Message) Format(s fmt.State, r rune)                    { descfmt.FormatDesc(s, r, md) }\nfunc (md *Message) lazyInit() *MessageL2 {\n\tmd.L0.ParentFile.lazyInit() // implicitly initializes L2\n\treturn md.L2\n}\n\n// IsMessageSet is a pseudo-internal API for checking whether a message\n// should serialize in the proto1 message format.\n//\n// WARNING: This method is exempt from the compatibility promise and may be\n// removed in the future without warning.\nfunc (md *Message) IsMessageSet() bool {\n\treturn md.L1.IsMessageSet\n}\n\nfunc (fd *Field) Options() protoreflect.ProtoMessage {\n\tif f := fd.L1.Options; f != nil {\n\t\treturn f()\n\t}\n\treturn descopts.Field\n}\nfunc (fd *Field) Number() protoreflect.FieldNumber      { return fd.L1.Number }\nfunc (fd *Field) Cardinality() protoreflect.Cardinality { return fd.L1.Cardinality }\nfunc (fd *Field) Kind() protoreflect.Kind {\n\treturn fd.L1.Kind\n}\nfunc (fd *Field) HasJSONName() bool { return fd.L1.StringName.hasJSON }\nfunc (fd *Field) JSONName() string  { return fd.L1.StringName.getJSON(fd) }\nfunc (fd *Field) TextName() string  { return fd.L1.StringName.getText(fd) }\nfunc (fd *Field) HasPresence() bool {\n\tif fd.L1.Cardinality == protoreflect.Repeated {\n\t\treturn false\n\t}\n\treturn fd.IsExtension() || fd.L1.EditionFeatures.IsFieldPresence || fd.L1.Message != nil || fd.L1.ContainingOneof != nil\n}\nfunc (fd *Field) HasOptionalKeyword() bool {\n\treturn (fd.L0.ParentFile.L1.Syntax == protoreflect.Proto2 && fd.L1.Cardinality == protoreflect.Optional && fd.L1.ContainingOneof == nil) || fd.L1.IsProto3Optional\n}\nfunc (fd *Field) IsPacked() bool {\n\tif fd.L1.Cardinality != protoreflect.Repeated {\n\t\treturn false\n\t}\n\tswitch fd.L1.Kind {\n\tcase protoreflect.StringKind, protoreflect.BytesKind, protoreflect.MessageKind, protoreflect.GroupKind:\n\t\treturn false\n\t}\n\treturn fd.L1.EditionFeatures.IsPacked\n}\nfunc (fd *Field) IsExtension() bool { return false }\nfunc (fd *Field) IsWeak() bool      { return false }\nfunc (fd *Field) IsLazy() bool      { return fd.L1.IsLazy }\nfunc (fd *Field) IsList() bool      { return fd.Cardinality() == protoreflect.Repeated && !fd.IsMap() }\nfunc (fd *Field) IsMap() bool       { return fd.Message() != nil && fd.Message().IsMapEntry() }\nfunc (fd *Field) MapKey() protoreflect.FieldDescriptor {\n\tif !fd.IsMap() {\n\t\treturn nil\n\t}\n\treturn fd.Message().Fields().ByNumber(genid.MapEntry_Key_field_number)\n}\nfunc (fd *Field) MapValue() protoreflect.FieldDescriptor {\n\tif !fd.IsMap() {\n\t\treturn nil\n\t}\n\treturn fd.Message().Fields().ByNumber(genid.MapEntry_Value_field_number)\n}\nfunc (fd *Field) HasDefault() bool                                   { return fd.L1.Default.has }\nfunc (fd *Field) Default() protoreflect.Value                        { return fd.L1.Default.get(fd) }\nfunc (fd *Field) DefaultEnumValue() protoreflect.EnumValueDescriptor { return fd.L1.Default.enum }\nfunc (fd *Field) ContainingOneof() protoreflect.OneofDescriptor      { return fd.L1.ContainingOneof }\nfunc (fd *Field) ContainingMessage() protoreflect.MessageDescriptor {\n\treturn fd.L0.Parent.(protoreflect.MessageDescriptor)\n}\nfunc (fd *Field) Enum() protoreflect.EnumDescriptor {\n\treturn fd.L1.Enum\n}\nfunc (fd *Field) Message() protoreflect.MessageDescriptor {\n\treturn fd.L1.Message\n}\nfunc (fd *Field) IsMapEntry() bool {\n\tparent, ok := fd.L0.Parent.(protoreflect.MessageDescriptor)\n\treturn ok && parent.IsMapEntry()\n}\nfunc (fd *Field) Format(s fmt.State, r rune)             { descfmt.FormatDesc(s, r, fd) }\nfunc (fd *Field) ProtoType(protoreflect.FieldDescriptor) {}\n\n// EnforceUTF8 is a pseudo-internal API to determine whether to enforce UTF-8\n// validation for the string field. This exists for Google-internal use only\n// since proto3 did not enforce UTF-8 validity prior to the open-source release.\n// If this method does not exist, the default is to enforce valid UTF-8.\n//\n// WARNING: This method is exempt from the compatibility promise and may be\n// removed in the future without warning.\nfunc (fd *Field) EnforceUTF8() bool {\n\treturn fd.L1.EditionFeatures.IsUTF8Validated\n}\n\nfunc (od *Oneof) IsSynthetic() bool {\n\treturn od.L0.ParentFile.L1.Syntax == protoreflect.Proto3 && len(od.L1.Fields.List) == 1 && od.L1.Fields.List[0].HasOptionalKeyword()\n}\nfunc (od *Oneof) Options() protoreflect.ProtoMessage {\n\tif f := od.L1.Options; f != nil {\n\t\treturn f()\n\t}\n\treturn descopts.Oneof\n}\nfunc (od *Oneof) Fields() protoreflect.FieldDescriptors  { return &od.L1.Fields }\nfunc (od *Oneof) Format(s fmt.State, r rune)             { descfmt.FormatDesc(s, r, od) }\nfunc (od *Oneof) ProtoType(protoreflect.OneofDescriptor) {}\n\ntype (\n\tExtension struct {\n\t\tBase\n\t\tL1 ExtensionL1\n\t\tL2 *ExtensionL2 // protected by fileDesc.once\n\t}\n\tExtensionL1 struct {\n\t\tNumber          protoreflect.FieldNumber\n\t\tExtendee        protoreflect.MessageDescriptor\n\t\tCardinality     protoreflect.Cardinality\n\t\tKind            protoreflect.Kind\n\t\tIsLazy          bool\n\t\tEditionFeatures EditionFeatures\n\t}\n\tExtensionL2 struct {\n\t\tOptions          func() protoreflect.ProtoMessage\n\t\tStringName       stringName\n\t\tIsProto3Optional bool // promoted from google.protobuf.FieldDescriptorProto\n\t\tDefault          defaultValue\n\t\tEnum             protoreflect.EnumDescriptor\n\t\tMessage          protoreflect.MessageDescriptor\n\t}\n)\n\nfunc (xd *Extension) Options() protoreflect.ProtoMessage {\n\tif f := xd.lazyInit().Options; f != nil {\n\t\treturn f()\n\t}\n\treturn descopts.Field\n}\nfunc (xd *Extension) Number() protoreflect.FieldNumber      { return xd.L1.Number }\nfunc (xd *Extension) Cardinality() protoreflect.Cardinality { return xd.L1.Cardinality }\nfunc (xd *Extension) Kind() protoreflect.Kind               { return xd.L1.Kind }\nfunc (xd *Extension) HasJSONName() bool                     { return xd.lazyInit().StringName.hasJSON }\nfunc (xd *Extension) JSONName() string                      { return xd.lazyInit().StringName.getJSON(xd) }\nfunc (xd *Extension) TextName() string                      { return xd.lazyInit().StringName.getText(xd) }\nfunc (xd *Extension) HasPresence() bool                     { return xd.L1.Cardinality != protoreflect.Repeated }\nfunc (xd *Extension) HasOptionalKeyword() bool {\n\treturn (xd.L0.ParentFile.L1.Syntax == protoreflect.Proto2 && xd.L1.Cardinality == protoreflect.Optional) || xd.lazyInit().IsProto3Optional\n}\nfunc (xd *Extension) IsPacked() bool {\n\tif xd.L1.Cardinality != protoreflect.Repeated {\n\t\treturn false\n\t}\n\tswitch xd.L1.Kind {\n\tcase protoreflect.StringKind, protoreflect.BytesKind, protoreflect.MessageKind, protoreflect.GroupKind:\n\t\treturn false\n\t}\n\treturn xd.L1.EditionFeatures.IsPacked\n}\nfunc (xd *Extension) IsExtension() bool                      { return true }\nfunc (xd *Extension) IsWeak() bool                           { return false }\nfunc (xd *Extension) IsLazy() bool                           { return xd.L1.IsLazy }\nfunc (xd *Extension) IsList() bool                           { return xd.Cardinality() == protoreflect.Repeated }\nfunc (xd *Extension) IsMap() bool                            { return false }\nfunc (xd *Extension) MapKey() protoreflect.FieldDescriptor   { return nil }\nfunc (xd *Extension) MapValue() protoreflect.FieldDescriptor { return nil }\nfunc (xd *Extension) HasDefault() bool                       { return xd.lazyInit().Default.has }\nfunc (xd *Extension) Default() protoreflect.Value            { return xd.lazyInit().Default.get(xd) }\nfunc (xd *Extension) DefaultEnumValue() protoreflect.EnumValueDescriptor {\n\treturn xd.lazyInit().Default.enum\n}\nfunc (xd *Extension) ContainingOneof() protoreflect.OneofDescriptor     { return nil }\nfunc (xd *Extension) ContainingMessage() protoreflect.MessageDescriptor { return xd.L1.Extendee }\nfunc (xd *Extension) Enum() protoreflect.EnumDescriptor                 { return xd.lazyInit().Enum }\nfunc (xd *Extension) Message() protoreflect.MessageDescriptor           { return xd.lazyInit().Message }\nfunc (xd *Extension) Format(s fmt.State, r rune)                        { descfmt.FormatDesc(s, r, xd) }\nfunc (xd *Extension) ProtoType(protoreflect.FieldDescriptor)            {}\nfunc (xd *Extension) ProtoInternal(pragma.DoNotImplement)               {}\nfunc (xd *Extension) lazyInit() *ExtensionL2 {\n\txd.L0.ParentFile.lazyInit() // implicitly initializes L2\n\treturn xd.L2\n}\n\ntype (\n\tService struct {\n\t\tBase\n\t\tL1 ServiceL1\n\t\tL2 *ServiceL2 // protected by fileDesc.once\n\t}\n\tServiceL1 struct{}\n\tServiceL2 struct {\n\t\tOptions func() protoreflect.ProtoMessage\n\t\tMethods Methods\n\t}\n\n\tMethod struct {\n\t\tBase\n\t\tL1 MethodL1\n\t}\n\tMethodL1 struct {\n\t\tOptions           func() protoreflect.ProtoMessage\n\t\tInput             protoreflect.MessageDescriptor\n\t\tOutput            protoreflect.MessageDescriptor\n\t\tIsStreamingClient bool\n\t\tIsStreamingServer bool\n\t}\n)\n\nfunc (sd *Service) Options() protoreflect.ProtoMessage {\n\tif f := sd.lazyInit().Options; f != nil {\n\t\treturn f()\n\t}\n\treturn descopts.Service\n}\nfunc (sd *Service) Methods() protoreflect.MethodDescriptors  { return &sd.lazyInit().Methods }\nfunc (sd *Service) Format(s fmt.State, r rune)               { descfmt.FormatDesc(s, r, sd) }\nfunc (sd *Service) ProtoType(protoreflect.ServiceDescriptor) {}\nfunc (sd *Service) ProtoInternal(pragma.DoNotImplement)      {}\nfunc (sd *Service) lazyInit() *ServiceL2 {\n\tsd.L0.ParentFile.lazyInit() // implicitly initializes L2\n\treturn sd.L2\n}\n\nfunc (md *Method) Options() protoreflect.ProtoMessage {\n\tif f := md.L1.Options; f != nil {\n\t\treturn f()\n\t}\n\treturn descopts.Method\n}\nfunc (md *Method) Input() protoreflect.MessageDescriptor   { return md.L1.Input }\nfunc (md *Method) Output() protoreflect.MessageDescriptor  { return md.L1.Output }\nfunc (md *Method) IsStreamingClient() bool                 { return md.L1.IsStreamingClient }\nfunc (md *Method) IsStreamingServer() bool                 { return md.L1.IsStreamingServer }\nfunc (md *Method) Format(s fmt.State, r rune)              { descfmt.FormatDesc(s, r, md) }\nfunc (md *Method) ProtoType(protoreflect.MethodDescriptor) {}\nfunc (md *Method) ProtoInternal(pragma.DoNotImplement)     {}\n\n// Surrogate files are can be used to create standalone descriptors\n// where the syntax is only information derived from the parent file.\nvar (\n\tSurrogateProto2      = &File{L1: FileL1{Syntax: protoreflect.Proto2}, L2: &FileL2{}}\n\tSurrogateProto3      = &File{L1: FileL1{Syntax: protoreflect.Proto3}, L2: &FileL2{}}\n\tSurrogateEdition2023 = &File{L1: FileL1{Syntax: protoreflect.Editions, Edition: Edition2023}, L2: &FileL2{}}\n)\n\ntype (\n\tBase struct {\n\t\tL0 BaseL0\n\t}\n\tBaseL0 struct {\n\t\tFullName   protoreflect.FullName // must be populated\n\t\tParentFile *File                 // must be populated\n\t\tParent     protoreflect.Descriptor\n\t\tIndex      int\n\t}\n)\n\nfunc (d *Base) Name() protoreflect.Name         { return d.L0.FullName.Name() }\nfunc (d *Base) FullName() protoreflect.FullName { return d.L0.FullName }\nfunc (d *Base) ParentFile() protoreflect.FileDescriptor {\n\tif d.L0.ParentFile == SurrogateProto2 || d.L0.ParentFile == SurrogateProto3 {\n\t\treturn nil // surrogate files are not real parents\n\t}\n\treturn d.L0.ParentFile\n}\nfunc (d *Base) Parent() protoreflect.Descriptor     { return d.L0.Parent }\nfunc (d *Base) Index() int                          { return d.L0.Index }\nfunc (d *Base) Syntax() protoreflect.Syntax         { return d.L0.ParentFile.Syntax() }\nfunc (d *Base) IsPlaceholder() bool                 { return false }\nfunc (d *Base) ProtoInternal(pragma.DoNotImplement) {}\n\ntype stringName struct {\n\thasJSON  bool\n\tonce     sync.Once\n\tnameJSON string\n\tnameText string\n}\n\n// InitJSON initializes the name. It is exported for use by other internal packages.\nfunc (s *stringName) InitJSON(name string) {\n\ts.hasJSON = true\n\ts.nameJSON = name\n}\n\n// Returns true if this field is structured like the synthetic field of a proto2\n// group. This allows us to expand our treatment of delimited fields without\n// breaking proto2 files that have been upgraded to editions.\nfunc isGroupLike(fd protoreflect.FieldDescriptor) bool {\n\t// Groups are always group types.\n\tif fd.Kind() != protoreflect.GroupKind {\n\t\treturn false\n\t}\n\n\t// Group fields are always the lowercase type name.\n\tif strings.ToLower(string(fd.Message().Name())) != string(fd.Name()) {\n\t\treturn false\n\t}\n\n\t// Groups could only be defined in the same file they're used.\n\tif fd.Message().ParentFile() != fd.ParentFile() {\n\t\treturn false\n\t}\n\n\t// Group messages are always defined in the same scope as the field.  File\n\t// level extensions will compare NULL == NULL here, which is why the file\n\t// comparison above is necessary to ensure both come from the same file.\n\tif fd.IsExtension() {\n\t\treturn fd.Parent() == fd.Message().Parent()\n\t}\n\treturn fd.ContainingMessage() == fd.Message().Parent()\n}\n\nfunc (s *stringName) lazyInit(fd protoreflect.FieldDescriptor) *stringName {\n\ts.once.Do(func() {\n\t\tif fd.IsExtension() {\n\t\t\t// For extensions, JSON and text are formatted the same way.\n\t\t\tvar name string\n\t\t\tif messageset.IsMessageSetExtension(fd) {\n\t\t\t\tname = string(\"[\" + fd.FullName().Parent() + \"]\")\n\t\t\t} else {\n\t\t\t\tname = string(\"[\" + fd.FullName() + \"]\")\n\t\t\t}\n\t\t\ts.nameJSON = name\n\t\t\ts.nameText = name\n\t\t} else {\n\t\t\t// Format the JSON name.\n\t\t\tif !s.hasJSON {\n\t\t\t\ts.nameJSON = strs.JSONCamelCase(string(fd.Name()))\n\t\t\t}\n\n\t\t\t// Format the text name.\n\t\t\ts.nameText = string(fd.Name())\n\t\t\tif isGroupLike(fd) {\n\t\t\t\ts.nameText = string(fd.Message().Name())\n\t\t\t}\n\t\t}\n\t})\n\treturn s\n}\n\nfunc (s *stringName) getJSON(fd protoreflect.FieldDescriptor) string { return s.lazyInit(fd).nameJSON }\nfunc (s *stringName) getText(fd protoreflect.FieldDescriptor) string { return s.lazyInit(fd).nameText }\n\nfunc DefaultValue(v protoreflect.Value, ev protoreflect.EnumValueDescriptor) defaultValue {\n\tdv := defaultValue{has: v.IsValid(), val: v, enum: ev}\n\tif b, ok := v.Interface().([]byte); ok {\n\t\t// Store a copy of the default bytes, so that we can detect\n\t\t// accidental mutations of the original value.\n\t\tdv.bytes = append([]byte(nil), b...)\n\t}\n\treturn dv\n}\n\nfunc unmarshalDefault(b []byte, k protoreflect.Kind, pf *File, ed protoreflect.EnumDescriptor) defaultValue {\n\tvar evs protoreflect.EnumValueDescriptors\n\tif k == protoreflect.EnumKind {\n\t\t// If the enum is declared within the same file, be careful not to\n\t\t// blindly call the Values method, lest we bind ourselves in a deadlock.\n\t\tif e, ok := ed.(*Enum); ok && e.L0.ParentFile == pf {\n\t\t\tevs = &e.L2.Values\n\t\t} else {\n\t\t\tevs = ed.Values()\n\t\t}\n\n\t\t// If we are unable to resolve the enum dependency, use a placeholder\n\t\t// enum value since we will not be able to parse the default value.\n\t\tif ed.IsPlaceholder() && protoreflect.Name(b).IsValid() {\n\t\t\tv := protoreflect.ValueOfEnum(0)\n\t\t\tev := PlaceholderEnumValue(ed.FullName().Parent().Append(protoreflect.Name(b)))\n\t\t\treturn DefaultValue(v, ev)\n\t\t}\n\t}\n\n\tv, ev, err := defval.Unmarshal(string(b), k, evs, defval.Descriptor)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn DefaultValue(v, ev)\n}\n\ntype defaultValue struct {\n\thas   bool\n\tval   protoreflect.Value\n\tenum  protoreflect.EnumValueDescriptor\n\tbytes []byte\n}\n\nfunc (dv *defaultValue) get(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\t// Return the zero value as the default if unpopulated.\n\tif !dv.has {\n\t\tif fd.Cardinality() == protoreflect.Repeated {\n\t\t\treturn protoreflect.Value{}\n\t\t}\n\t\tswitch fd.Kind() {\n\t\tcase protoreflect.BoolKind:\n\t\t\treturn protoreflect.ValueOfBool(false)\n\t\tcase protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind:\n\t\t\treturn protoreflect.ValueOfInt32(0)\n\t\tcase protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind:\n\t\t\treturn protoreflect.ValueOfInt64(0)\n\t\tcase protoreflect.Uint32Kind, protoreflect.Fixed32Kind:\n\t\t\treturn protoreflect.ValueOfUint32(0)\n\t\tcase protoreflect.Uint64Kind, protoreflect.Fixed64Kind:\n\t\t\treturn protoreflect.ValueOfUint64(0)\n\t\tcase protoreflect.FloatKind:\n\t\t\treturn protoreflect.ValueOfFloat32(0)\n\t\tcase protoreflect.DoubleKind:\n\t\t\treturn protoreflect.ValueOfFloat64(0)\n\t\tcase protoreflect.StringKind:\n\t\t\treturn protoreflect.ValueOfString(\"\")\n\t\tcase protoreflect.BytesKind:\n\t\t\treturn protoreflect.ValueOfBytes(nil)\n\t\tcase protoreflect.EnumKind:\n\t\t\tif evs := fd.Enum().Values(); evs.Len() > 0 {\n\t\t\t\treturn protoreflect.ValueOfEnum(evs.Get(0).Number())\n\t\t\t}\n\t\t\treturn protoreflect.ValueOfEnum(0)\n\t\t}\n\t}\n\n\tif len(dv.bytes) > 0 && !bytes.Equal(dv.bytes, dv.val.Bytes()) {\n\t\t// TODO: Avoid panic if we're running with the race detector\n\t\t// and instead spawn a goroutine that periodically resets\n\t\t// this value back to the original to induce a race.\n\t\tpanic(fmt.Sprintf(\"detected mutation on the default bytes for %v\", fd.FullName()))\n\t}\n\treturn dv.val\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/filedesc/desc_init.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage filedesc\n\nimport (\n\t\"fmt\"\n\t\"sync\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/genid\"\n\t\"google.golang.org/protobuf/internal/strs\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\n// fileRaw is a data struct used when initializing a file descriptor from\n// a raw FileDescriptorProto.\ntype fileRaw struct {\n\tbuilder       Builder\n\tallEnums      []Enum\n\tallMessages   []Message\n\tallExtensions []Extension\n\tallServices   []Service\n}\n\nfunc newRawFile(db Builder) *File {\n\tfd := &File{fileRaw: fileRaw{builder: db}}\n\tfd.initDecls(db.NumEnums, db.NumMessages, db.NumExtensions, db.NumServices)\n\tfd.unmarshalSeed(db.RawDescriptor)\n\n\t// Extended message targets are eagerly resolved since registration\n\t// needs this information at program init time.\n\tfor i := range fd.allExtensions {\n\t\txd := &fd.allExtensions[i]\n\t\txd.L1.Extendee = fd.resolveMessageDependency(xd.L1.Extendee, listExtTargets, int32(i))\n\t}\n\n\tfd.checkDecls()\n\treturn fd\n}\n\n// initDecls pre-allocates slices for the exact number of enums, messages\n// (including map entries), extensions, and services declared in the proto file.\n// This is done to avoid regrowing the slice, which would change the address\n// for any previously seen declaration.\n//\n// The alloc methods \"allocates\" slices by pulling from the capacity.\nfunc (fd *File) initDecls(numEnums, numMessages, numExtensions, numServices int32) {\n\tfd.allEnums = make([]Enum, 0, numEnums)\n\tfd.allMessages = make([]Message, 0, numMessages)\n\tfd.allExtensions = make([]Extension, 0, numExtensions)\n\tfd.allServices = make([]Service, 0, numServices)\n}\n\nfunc (fd *File) allocEnums(n int) []Enum {\n\ttotal := len(fd.allEnums)\n\tes := fd.allEnums[total : total+n]\n\tfd.allEnums = fd.allEnums[:total+n]\n\treturn es\n}\nfunc (fd *File) allocMessages(n int) []Message {\n\ttotal := len(fd.allMessages)\n\tms := fd.allMessages[total : total+n]\n\tfd.allMessages = fd.allMessages[:total+n]\n\treturn ms\n}\nfunc (fd *File) allocExtensions(n int) []Extension {\n\ttotal := len(fd.allExtensions)\n\txs := fd.allExtensions[total : total+n]\n\tfd.allExtensions = fd.allExtensions[:total+n]\n\treturn xs\n}\nfunc (fd *File) allocServices(n int) []Service {\n\ttotal := len(fd.allServices)\n\txs := fd.allServices[total : total+n]\n\tfd.allServices = fd.allServices[:total+n]\n\treturn xs\n}\n\n// checkDecls performs a sanity check that the expected number of expected\n// declarations matches the number that were found in the descriptor proto.\nfunc (fd *File) checkDecls() {\n\tswitch {\n\tcase len(fd.allEnums) != cap(fd.allEnums):\n\tcase len(fd.allMessages) != cap(fd.allMessages):\n\tcase len(fd.allExtensions) != cap(fd.allExtensions):\n\tcase len(fd.allServices) != cap(fd.allServices):\n\tdefault:\n\t\treturn\n\t}\n\tpanic(\"mismatching cardinality\")\n}\n\nfunc (fd *File) unmarshalSeed(b []byte) {\n\tsb := getBuilder()\n\tdefer putBuilder(sb)\n\n\tvar prevField protoreflect.FieldNumber\n\tvar numEnums, numMessages, numExtensions, numServices int\n\tvar posEnums, posMessages, posExtensions, posServices int\n\tvar options []byte\n\tb0 := b\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.FileDescriptorProto_Syntax_field_number:\n\t\t\t\tswitch string(v) {\n\t\t\t\tcase \"proto2\":\n\t\t\t\t\tfd.L1.Syntax = protoreflect.Proto2\n\t\t\t\t\tfd.L1.Edition = EditionProto2\n\t\t\t\tcase \"proto3\":\n\t\t\t\t\tfd.L1.Syntax = protoreflect.Proto3\n\t\t\t\t\tfd.L1.Edition = EditionProto3\n\t\t\t\tcase \"editions\":\n\t\t\t\t\tfd.L1.Syntax = protoreflect.Editions\n\t\t\t\tdefault:\n\t\t\t\t\tpanic(\"invalid syntax\")\n\t\t\t\t}\n\t\t\tcase genid.FileDescriptorProto_Name_field_number:\n\t\t\t\tfd.L1.Path = sb.MakeString(v)\n\t\t\tcase genid.FileDescriptorProto_Package_field_number:\n\t\t\t\tfd.L1.Package = protoreflect.FullName(sb.MakeString(v))\n\t\t\tcase genid.FileDescriptorProto_Options_field_number:\n\t\t\t\toptions = v\n\t\t\tcase genid.FileDescriptorProto_EnumType_field_number:\n\t\t\t\tif prevField != genid.FileDescriptorProto_EnumType_field_number {\n\t\t\t\t\tif numEnums > 0 {\n\t\t\t\t\t\tpanic(\"non-contiguous repeated field\")\n\t\t\t\t\t}\n\t\t\t\t\tposEnums = len(b0) - len(b) - n - m\n\t\t\t\t}\n\t\t\t\tnumEnums++\n\t\t\tcase genid.FileDescriptorProto_MessageType_field_number:\n\t\t\t\tif prevField != genid.FileDescriptorProto_MessageType_field_number {\n\t\t\t\t\tif numMessages > 0 {\n\t\t\t\t\t\tpanic(\"non-contiguous repeated field\")\n\t\t\t\t\t}\n\t\t\t\t\tposMessages = len(b0) - len(b) - n - m\n\t\t\t\t}\n\t\t\t\tnumMessages++\n\t\t\tcase genid.FileDescriptorProto_Extension_field_number:\n\t\t\t\tif prevField != genid.FileDescriptorProto_Extension_field_number {\n\t\t\t\t\tif numExtensions > 0 {\n\t\t\t\t\t\tpanic(\"non-contiguous repeated field\")\n\t\t\t\t\t}\n\t\t\t\t\tposExtensions = len(b0) - len(b) - n - m\n\t\t\t\t}\n\t\t\t\tnumExtensions++\n\t\t\tcase genid.FileDescriptorProto_Service_field_number:\n\t\t\t\tif prevField != genid.FileDescriptorProto_Service_field_number {\n\t\t\t\t\tif numServices > 0 {\n\t\t\t\t\t\tpanic(\"non-contiguous repeated field\")\n\t\t\t\t\t}\n\t\t\t\t\tposServices = len(b0) - len(b) - n - m\n\t\t\t\t}\n\t\t\t\tnumServices++\n\t\t\t}\n\t\t\tprevField = num\n\t\tcase protowire.VarintType:\n\t\t\tv, m := protowire.ConsumeVarint(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.FileDescriptorProto_Edition_field_number:\n\t\t\t\tfd.L1.Edition = Edition(v)\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t\tprevField = -1 // ignore known field numbers of unknown wire type\n\t\t}\n\t}\n\n\t// If syntax is missing, it is assumed to be proto2.\n\tif fd.L1.Syntax == 0 {\n\t\tfd.L1.Syntax = protoreflect.Proto2\n\t\tfd.L1.Edition = EditionProto2\n\t}\n\n\tfd.L1.EditionFeatures = getFeaturesFor(fd.L1.Edition)\n\n\t// Parse editions features from options if any\n\tif options != nil {\n\t\tfd.unmarshalSeedOptions(options)\n\t}\n\n\t// Must allocate all declarations before parsing each descriptor type\n\t// to ensure we handled all descriptors in \"flattened ordering\".\n\tif numEnums > 0 {\n\t\tfd.L1.Enums.List = fd.allocEnums(numEnums)\n\t}\n\tif numMessages > 0 {\n\t\tfd.L1.Messages.List = fd.allocMessages(numMessages)\n\t}\n\tif numExtensions > 0 {\n\t\tfd.L1.Extensions.List = fd.allocExtensions(numExtensions)\n\t}\n\tif numServices > 0 {\n\t\tfd.L1.Services.List = fd.allocServices(numServices)\n\t}\n\n\tif numEnums > 0 {\n\t\tb := b0[posEnums:]\n\t\tfor i := range fd.L1.Enums.List {\n\t\t\t_, n := protowire.ConsumeVarint(b)\n\t\t\tv, m := protowire.ConsumeBytes(b[n:])\n\t\t\tfd.L1.Enums.List[i].unmarshalSeed(v, sb, fd, fd, i)\n\t\t\tb = b[n+m:]\n\t\t}\n\t}\n\tif numMessages > 0 {\n\t\tb := b0[posMessages:]\n\t\tfor i := range fd.L1.Messages.List {\n\t\t\t_, n := protowire.ConsumeVarint(b)\n\t\t\tv, m := protowire.ConsumeBytes(b[n:])\n\t\t\tfd.L1.Messages.List[i].unmarshalSeed(v, sb, fd, fd, i)\n\t\t\tb = b[n+m:]\n\t\t}\n\t}\n\tif numExtensions > 0 {\n\t\tb := b0[posExtensions:]\n\t\tfor i := range fd.L1.Extensions.List {\n\t\t\t_, n := protowire.ConsumeVarint(b)\n\t\t\tv, m := protowire.ConsumeBytes(b[n:])\n\t\t\tfd.L1.Extensions.List[i].unmarshalSeed(v, sb, fd, fd, i)\n\t\t\tb = b[n+m:]\n\t\t}\n\t}\n\tif numServices > 0 {\n\t\tb := b0[posServices:]\n\t\tfor i := range fd.L1.Services.List {\n\t\t\t_, n := protowire.ConsumeVarint(b)\n\t\t\tv, m := protowire.ConsumeBytes(b[n:])\n\t\t\tfd.L1.Services.List[i].unmarshalSeed(v, sb, fd, fd, i)\n\t\t\tb = b[n+m:]\n\t\t}\n\t}\n}\n\nfunc (fd *File) unmarshalSeedOptions(b []byte) {\n\tfor b := b; len(b) > 0; {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.FileOptions_Features_field_number:\n\t\t\t\tif fd.Syntax() != protoreflect.Editions {\n\t\t\t\t\tpanic(fmt.Sprintf(\"invalid descriptor: using edition features in a proto with syntax %s\", fd.Syntax()))\n\t\t\t\t}\n\t\t\t\tfd.L1.EditionFeatures = unmarshalFeatureSet(v, fd.L1.EditionFeatures)\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n}\n\nfunc (ed *Enum) unmarshalSeed(b []byte, sb *strs.Builder, pf *File, pd protoreflect.Descriptor, i int) {\n\ted.L0.ParentFile = pf\n\ted.L0.Parent = pd\n\ted.L0.Index = i\n\ted.L1.EditionFeatures = featuresFromParentDesc(ed.Parent())\n\n\tvar numValues int\n\tfor b := b; len(b) > 0; {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.EnumDescriptorProto_Name_field_number:\n\t\t\t\ted.L0.FullName = appendFullName(sb, pd.FullName(), v)\n\t\t\tcase genid.EnumDescriptorProto_Value_field_number:\n\t\t\t\tnumValues++\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n\n\t// Only construct enum value descriptors for top-level enums since\n\t// they are needed for registration.\n\tif pd != pf {\n\t\treturn\n\t}\n\ted.L1.eagerValues = true\n\ted.L2 = new(EnumL2)\n\ted.L2.Values.List = make([]EnumValue, numValues)\n\tfor i := 0; len(b) > 0; {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.EnumDescriptorProto_Value_field_number:\n\t\t\t\ted.L2.Values.List[i].unmarshalFull(v, sb, pf, ed, i)\n\t\t\t\ti++\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n}\n\nfunc (md *Message) unmarshalSeed(b []byte, sb *strs.Builder, pf *File, pd protoreflect.Descriptor, i int) {\n\tmd.L0.ParentFile = pf\n\tmd.L0.Parent = pd\n\tmd.L0.Index = i\n\tmd.L1.EditionFeatures = featuresFromParentDesc(md.Parent())\n\n\tvar prevField protoreflect.FieldNumber\n\tvar numEnums, numMessages, numExtensions int\n\tvar posEnums, posMessages, posExtensions int\n\tb0 := b\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.DescriptorProto_Name_field_number:\n\t\t\t\tmd.L0.FullName = appendFullName(sb, pd.FullName(), v)\n\t\t\tcase genid.DescriptorProto_EnumType_field_number:\n\t\t\t\tif prevField != genid.DescriptorProto_EnumType_field_number {\n\t\t\t\t\tif numEnums > 0 {\n\t\t\t\t\t\tpanic(\"non-contiguous repeated field\")\n\t\t\t\t\t}\n\t\t\t\t\tposEnums = len(b0) - len(b) - n - m\n\t\t\t\t}\n\t\t\t\tnumEnums++\n\t\t\tcase genid.DescriptorProto_NestedType_field_number:\n\t\t\t\tif prevField != genid.DescriptorProto_NestedType_field_number {\n\t\t\t\t\tif numMessages > 0 {\n\t\t\t\t\t\tpanic(\"non-contiguous repeated field\")\n\t\t\t\t\t}\n\t\t\t\t\tposMessages = len(b0) - len(b) - n - m\n\t\t\t\t}\n\t\t\t\tnumMessages++\n\t\t\tcase genid.DescriptorProto_Extension_field_number:\n\t\t\t\tif prevField != genid.DescriptorProto_Extension_field_number {\n\t\t\t\t\tif numExtensions > 0 {\n\t\t\t\t\t\tpanic(\"non-contiguous repeated field\")\n\t\t\t\t\t}\n\t\t\t\t\tposExtensions = len(b0) - len(b) - n - m\n\t\t\t\t}\n\t\t\t\tnumExtensions++\n\t\t\tcase genid.DescriptorProto_Options_field_number:\n\t\t\t\tmd.unmarshalSeedOptions(v)\n\t\t\t}\n\t\t\tprevField = num\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t\tprevField = -1 // ignore known field numbers of unknown wire type\n\t\t}\n\t}\n\n\t// Must allocate all declarations before parsing each descriptor type\n\t// to ensure we handled all descriptors in \"flattened ordering\".\n\tif numEnums > 0 {\n\t\tmd.L1.Enums.List = pf.allocEnums(numEnums)\n\t}\n\tif numMessages > 0 {\n\t\tmd.L1.Messages.List = pf.allocMessages(numMessages)\n\t}\n\tif numExtensions > 0 {\n\t\tmd.L1.Extensions.List = pf.allocExtensions(numExtensions)\n\t}\n\n\tif numEnums > 0 {\n\t\tb := b0[posEnums:]\n\t\tfor i := range md.L1.Enums.List {\n\t\t\t_, n := protowire.ConsumeVarint(b)\n\t\t\tv, m := protowire.ConsumeBytes(b[n:])\n\t\t\tmd.L1.Enums.List[i].unmarshalSeed(v, sb, pf, md, i)\n\t\t\tb = b[n+m:]\n\t\t}\n\t}\n\tif numMessages > 0 {\n\t\tb := b0[posMessages:]\n\t\tfor i := range md.L1.Messages.List {\n\t\t\t_, n := protowire.ConsumeVarint(b)\n\t\t\tv, m := protowire.ConsumeBytes(b[n:])\n\t\t\tmd.L1.Messages.List[i].unmarshalSeed(v, sb, pf, md, i)\n\t\t\tb = b[n+m:]\n\t\t}\n\t}\n\tif numExtensions > 0 {\n\t\tb := b0[posExtensions:]\n\t\tfor i := range md.L1.Extensions.List {\n\t\t\t_, n := protowire.ConsumeVarint(b)\n\t\t\tv, m := protowire.ConsumeBytes(b[n:])\n\t\t\tmd.L1.Extensions.List[i].unmarshalSeed(v, sb, pf, md, i)\n\t\t\tb = b[n+m:]\n\t\t}\n\t}\n}\n\nfunc (md *Message) unmarshalSeedOptions(b []byte) {\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.VarintType:\n\t\t\tv, m := protowire.ConsumeVarint(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.MessageOptions_MapEntry_field_number:\n\t\t\t\tmd.L1.IsMapEntry = protowire.DecodeBool(v)\n\t\t\tcase genid.MessageOptions_MessageSetWireFormat_field_number:\n\t\t\t\tmd.L1.IsMessageSet = protowire.DecodeBool(v)\n\t\t\t}\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.MessageOptions_Features_field_number:\n\t\t\t\tmd.L1.EditionFeatures = unmarshalFeatureSet(v, md.L1.EditionFeatures)\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n}\n\nfunc (xd *Extension) unmarshalSeed(b []byte, sb *strs.Builder, pf *File, pd protoreflect.Descriptor, i int) {\n\txd.L0.ParentFile = pf\n\txd.L0.Parent = pd\n\txd.L0.Index = i\n\txd.L1.EditionFeatures = featuresFromParentDesc(pd)\n\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.VarintType:\n\t\t\tv, m := protowire.ConsumeVarint(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.FieldDescriptorProto_Number_field_number:\n\t\t\t\txd.L1.Number = protoreflect.FieldNumber(v)\n\t\t\tcase genid.FieldDescriptorProto_Label_field_number:\n\t\t\t\txd.L1.Cardinality = protoreflect.Cardinality(v)\n\t\t\tcase genid.FieldDescriptorProto_Type_field_number:\n\t\t\t\txd.L1.Kind = protoreflect.Kind(v)\n\t\t\t}\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.FieldDescriptorProto_Name_field_number:\n\t\t\t\txd.L0.FullName = appendFullName(sb, pd.FullName(), v)\n\t\t\tcase genid.FieldDescriptorProto_Extendee_field_number:\n\t\t\t\txd.L1.Extendee = PlaceholderMessage(makeFullName(sb, v))\n\t\t\tcase genid.FieldDescriptorProto_Options_field_number:\n\t\t\t\txd.unmarshalOptions(v)\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n\n\tif xd.L1.Kind == protoreflect.MessageKind && xd.L1.EditionFeatures.IsDelimitedEncoded {\n\t\txd.L1.Kind = protoreflect.GroupKind\n\t}\n}\n\nfunc (xd *Extension) unmarshalOptions(b []byte) {\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.VarintType:\n\t\t\tv, m := protowire.ConsumeVarint(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.FieldOptions_Packed_field_number:\n\t\t\t\txd.L1.EditionFeatures.IsPacked = protowire.DecodeBool(v)\n\t\t\tcase genid.FieldOptions_Lazy_field_number:\n\t\t\t\txd.L1.IsLazy = protowire.DecodeBool(v)\n\t\t\t}\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.FieldOptions_Features_field_number:\n\t\t\t\txd.L1.EditionFeatures = unmarshalFeatureSet(v, xd.L1.EditionFeatures)\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n}\n\nfunc (sd *Service) unmarshalSeed(b []byte, sb *strs.Builder, pf *File, pd protoreflect.Descriptor, i int) {\n\tsd.L0.ParentFile = pf\n\tsd.L0.Parent = pd\n\tsd.L0.Index = i\n\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.ServiceDescriptorProto_Name_field_number:\n\t\t\t\tsd.L0.FullName = appendFullName(sb, pd.FullName(), v)\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n}\n\nvar nameBuilderPool = sync.Pool{\n\tNew: func() any { return new(strs.Builder) },\n}\n\nfunc getBuilder() *strs.Builder {\n\treturn nameBuilderPool.Get().(*strs.Builder)\n}\nfunc putBuilder(b *strs.Builder) {\n\tnameBuilderPool.Put(b)\n}\n\n// makeFullName converts b to a protoreflect.FullName,\n// where b must start with a leading dot.\nfunc makeFullName(sb *strs.Builder, b []byte) protoreflect.FullName {\n\tif len(b) == 0 || b[0] != '.' {\n\t\tpanic(\"name reference must be fully qualified\")\n\t}\n\treturn protoreflect.FullName(sb.MakeString(b[1:]))\n}\n\nfunc appendFullName(sb *strs.Builder, prefix protoreflect.FullName, suffix []byte) protoreflect.FullName {\n\treturn sb.AppendFullName(prefix, protoreflect.Name(strs.UnsafeString(suffix)))\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/filedesc/desc_lazy.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage filedesc\n\nimport (\n\t\"reflect\"\n\t\"sync\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/descopts\"\n\t\"google.golang.org/protobuf/internal/genid\"\n\t\"google.golang.org/protobuf/internal/strs\"\n\t\"google.golang.org/protobuf/proto\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nfunc (fd *File) lazyRawInit() {\n\tfd.unmarshalFull(fd.builder.RawDescriptor)\n\tfd.resolveMessages()\n\tfd.resolveExtensions()\n\tfd.resolveServices()\n}\n\nfunc (file *File) resolveMessages() {\n\tvar depIdx int32\n\tfor i := range file.allMessages {\n\t\tmd := &file.allMessages[i]\n\n\t\t// Resolve message field dependencies.\n\t\tfor j := range md.L2.Fields.List {\n\t\t\tfd := &md.L2.Fields.List[j]\n\n\t\t\t// Resolve message field dependency.\n\t\t\tswitch fd.L1.Kind {\n\t\t\tcase protoreflect.EnumKind:\n\t\t\t\tfd.L1.Enum = file.resolveEnumDependency(fd.L1.Enum, listFieldDeps, depIdx)\n\t\t\t\tdepIdx++\n\t\t\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\t\t\tfd.L1.Message = file.resolveMessageDependency(fd.L1.Message, listFieldDeps, depIdx)\n\t\t\t\tdepIdx++\n\t\t\t\tif fd.L1.Kind == protoreflect.GroupKind && (fd.IsMap() || fd.IsMapEntry()) {\n\t\t\t\t\t// A map field might inherit delimited encoding from a file-wide default feature.\n\t\t\t\t\t// But maps never actually use delimited encoding. (At least for now...)\n\t\t\t\t\tfd.L1.Kind = protoreflect.MessageKind\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Default is resolved here since it depends on Enum being resolved.\n\t\t\tif v := fd.L1.Default.val; v.IsValid() {\n\t\t\t\tfd.L1.Default = unmarshalDefault(v.Bytes(), fd.L1.Kind, file, fd.L1.Enum)\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc (file *File) resolveExtensions() {\n\tvar depIdx int32\n\tfor i := range file.allExtensions {\n\t\txd := &file.allExtensions[i]\n\n\t\t// Resolve extension field dependency.\n\t\tswitch xd.L1.Kind {\n\t\tcase protoreflect.EnumKind:\n\t\t\txd.L2.Enum = file.resolveEnumDependency(xd.L2.Enum, listExtDeps, depIdx)\n\t\t\tdepIdx++\n\t\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\t\txd.L2.Message = file.resolveMessageDependency(xd.L2.Message, listExtDeps, depIdx)\n\t\t\tdepIdx++\n\t\t}\n\n\t\t// Default is resolved here since it depends on Enum being resolved.\n\t\tif v := xd.L2.Default.val; v.IsValid() {\n\t\t\txd.L2.Default = unmarshalDefault(v.Bytes(), xd.L1.Kind, file, xd.L2.Enum)\n\t\t}\n\t}\n}\n\nfunc (file *File) resolveServices() {\n\tvar depIdx int32\n\tfor i := range file.allServices {\n\t\tsd := &file.allServices[i]\n\n\t\t// Resolve method dependencies.\n\t\tfor j := range sd.L2.Methods.List {\n\t\t\tmd := &sd.L2.Methods.List[j]\n\t\t\tmd.L1.Input = file.resolveMessageDependency(md.L1.Input, listMethInDeps, depIdx)\n\t\t\tmd.L1.Output = file.resolveMessageDependency(md.L1.Output, listMethOutDeps, depIdx)\n\t\t\tdepIdx++\n\t\t}\n\t}\n}\n\nfunc (file *File) resolveEnumDependency(ed protoreflect.EnumDescriptor, i, j int32) protoreflect.EnumDescriptor {\n\tr := file.builder.FileRegistry\n\tif r, ok := r.(resolverByIndex); ok {\n\t\tif ed2 := r.FindEnumByIndex(i, j, file.allEnums, file.allMessages); ed2 != nil {\n\t\t\treturn ed2\n\t\t}\n\t}\n\tfor i := range file.allEnums {\n\t\tif ed2 := &file.allEnums[i]; ed2.L0.FullName == ed.FullName() {\n\t\t\treturn ed2\n\t\t}\n\t}\n\tif d, _ := r.FindDescriptorByName(ed.FullName()); d != nil {\n\t\treturn d.(protoreflect.EnumDescriptor)\n\t}\n\treturn ed\n}\n\nfunc (file *File) resolveMessageDependency(md protoreflect.MessageDescriptor, i, j int32) protoreflect.MessageDescriptor {\n\tr := file.builder.FileRegistry\n\tif r, ok := r.(resolverByIndex); ok {\n\t\tif md2 := r.FindMessageByIndex(i, j, file.allEnums, file.allMessages); md2 != nil {\n\t\t\treturn md2\n\t\t}\n\t}\n\tfor i := range file.allMessages {\n\t\tif md2 := &file.allMessages[i]; md2.L0.FullName == md.FullName() {\n\t\t\treturn md2\n\t\t}\n\t}\n\tif d, _ := r.FindDescriptorByName(md.FullName()); d != nil {\n\t\treturn d.(protoreflect.MessageDescriptor)\n\t}\n\treturn md\n}\n\nfunc (fd *File) unmarshalFull(b []byte) {\n\tsb := getBuilder()\n\tdefer putBuilder(sb)\n\n\tvar enumIdx, messageIdx, extensionIdx, serviceIdx int\n\tvar rawOptions []byte\n\tfd.L2 = new(FileL2)\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.VarintType:\n\t\t\tv, m := protowire.ConsumeVarint(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.FileDescriptorProto_PublicDependency_field_number:\n\t\t\t\tfd.L2.Imports[v].IsPublic = true\n\t\t\t}\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.FileDescriptorProto_Dependency_field_number:\n\t\t\t\tpath := sb.MakeString(v)\n\t\t\t\timp, _ := fd.builder.FileRegistry.FindFileByPath(path)\n\t\t\t\tif imp == nil {\n\t\t\t\t\timp = PlaceholderFile(path)\n\t\t\t\t}\n\t\t\t\tfd.L2.Imports = append(fd.L2.Imports, protoreflect.FileImport{FileDescriptor: imp})\n\t\t\tcase genid.FileDescriptorProto_EnumType_field_number:\n\t\t\t\tfd.L1.Enums.List[enumIdx].unmarshalFull(v, sb)\n\t\t\t\tenumIdx++\n\t\t\tcase genid.FileDescriptorProto_MessageType_field_number:\n\t\t\t\tfd.L1.Messages.List[messageIdx].unmarshalFull(v, sb)\n\t\t\t\tmessageIdx++\n\t\t\tcase genid.FileDescriptorProto_Extension_field_number:\n\t\t\t\tfd.L1.Extensions.List[extensionIdx].unmarshalFull(v, sb)\n\t\t\t\textensionIdx++\n\t\t\tcase genid.FileDescriptorProto_Service_field_number:\n\t\t\t\tfd.L1.Services.List[serviceIdx].unmarshalFull(v, sb)\n\t\t\t\tserviceIdx++\n\t\t\tcase genid.FileDescriptorProto_Options_field_number:\n\t\t\t\trawOptions = appendOptions(rawOptions, v)\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n\tfd.L2.Options = fd.builder.optionsUnmarshaler(&descopts.File, rawOptions)\n}\n\nfunc (ed *Enum) unmarshalFull(b []byte, sb *strs.Builder) {\n\tvar rawValues [][]byte\n\tvar rawOptions []byte\n\tif !ed.L1.eagerValues {\n\t\ted.L2 = new(EnumL2)\n\t}\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.EnumDescriptorProto_Value_field_number:\n\t\t\t\trawValues = append(rawValues, v)\n\t\t\tcase genid.EnumDescriptorProto_ReservedName_field_number:\n\t\t\t\ted.L2.ReservedNames.List = append(ed.L2.ReservedNames.List, protoreflect.Name(sb.MakeString(v)))\n\t\t\tcase genid.EnumDescriptorProto_ReservedRange_field_number:\n\t\t\t\ted.L2.ReservedRanges.List = append(ed.L2.ReservedRanges.List, unmarshalEnumReservedRange(v))\n\t\t\tcase genid.EnumDescriptorProto_Options_field_number:\n\t\t\t\trawOptions = appendOptions(rawOptions, v)\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n\tif !ed.L1.eagerValues && len(rawValues) > 0 {\n\t\ted.L2.Values.List = make([]EnumValue, len(rawValues))\n\t\tfor i, b := range rawValues {\n\t\t\ted.L2.Values.List[i].unmarshalFull(b, sb, ed.L0.ParentFile, ed, i)\n\t\t}\n\t}\n\ted.L2.Options = ed.L0.ParentFile.builder.optionsUnmarshaler(&descopts.Enum, rawOptions)\n}\n\nfunc unmarshalEnumReservedRange(b []byte) (r [2]protoreflect.EnumNumber) {\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.VarintType:\n\t\t\tv, m := protowire.ConsumeVarint(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.EnumDescriptorProto_EnumReservedRange_Start_field_number:\n\t\t\t\tr[0] = protoreflect.EnumNumber(v)\n\t\t\tcase genid.EnumDescriptorProto_EnumReservedRange_End_field_number:\n\t\t\t\tr[1] = protoreflect.EnumNumber(v)\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n\treturn r\n}\n\nfunc (vd *EnumValue) unmarshalFull(b []byte, sb *strs.Builder, pf *File, pd protoreflect.Descriptor, i int) {\n\tvd.L0.ParentFile = pf\n\tvd.L0.Parent = pd\n\tvd.L0.Index = i\n\n\tvar rawOptions []byte\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.VarintType:\n\t\t\tv, m := protowire.ConsumeVarint(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.EnumValueDescriptorProto_Number_field_number:\n\t\t\t\tvd.L1.Number = protoreflect.EnumNumber(v)\n\t\t\t}\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.EnumValueDescriptorProto_Name_field_number:\n\t\t\t\t// NOTE: Enum values are in the same scope as the enum parent.\n\t\t\t\tvd.L0.FullName = appendFullName(sb, pd.Parent().FullName(), v)\n\t\t\tcase genid.EnumValueDescriptorProto_Options_field_number:\n\t\t\t\trawOptions = appendOptions(rawOptions, v)\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n\tvd.L1.Options = pf.builder.optionsUnmarshaler(&descopts.EnumValue, rawOptions)\n}\n\nfunc (md *Message) unmarshalFull(b []byte, sb *strs.Builder) {\n\tvar rawFields, rawOneofs [][]byte\n\tvar enumIdx, messageIdx, extensionIdx int\n\tvar rawOptions []byte\n\tmd.L2 = new(MessageL2)\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.DescriptorProto_Field_field_number:\n\t\t\t\trawFields = append(rawFields, v)\n\t\t\tcase genid.DescriptorProto_OneofDecl_field_number:\n\t\t\t\trawOneofs = append(rawOneofs, v)\n\t\t\tcase genid.DescriptorProto_ReservedName_field_number:\n\t\t\t\tmd.L2.ReservedNames.List = append(md.L2.ReservedNames.List, protoreflect.Name(sb.MakeString(v)))\n\t\t\tcase genid.DescriptorProto_ReservedRange_field_number:\n\t\t\t\tmd.L2.ReservedRanges.List = append(md.L2.ReservedRanges.List, unmarshalMessageReservedRange(v))\n\t\t\tcase genid.DescriptorProto_ExtensionRange_field_number:\n\t\t\t\tr, rawOptions := unmarshalMessageExtensionRange(v)\n\t\t\t\topts := md.L0.ParentFile.builder.optionsUnmarshaler(&descopts.ExtensionRange, rawOptions)\n\t\t\t\tmd.L2.ExtensionRanges.List = append(md.L2.ExtensionRanges.List, r)\n\t\t\t\tmd.L2.ExtensionRangeOptions = append(md.L2.ExtensionRangeOptions, opts)\n\t\t\tcase genid.DescriptorProto_EnumType_field_number:\n\t\t\t\tmd.L1.Enums.List[enumIdx].unmarshalFull(v, sb)\n\t\t\t\tenumIdx++\n\t\t\tcase genid.DescriptorProto_NestedType_field_number:\n\t\t\t\tmd.L1.Messages.List[messageIdx].unmarshalFull(v, sb)\n\t\t\t\tmessageIdx++\n\t\t\tcase genid.DescriptorProto_Extension_field_number:\n\t\t\t\tmd.L1.Extensions.List[extensionIdx].unmarshalFull(v, sb)\n\t\t\t\textensionIdx++\n\t\t\tcase genid.DescriptorProto_Options_field_number:\n\t\t\t\tmd.unmarshalOptions(v)\n\t\t\t\trawOptions = appendOptions(rawOptions, v)\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n\tif len(rawFields) > 0 || len(rawOneofs) > 0 {\n\t\tmd.L2.Fields.List = make([]Field, len(rawFields))\n\t\tmd.L2.Oneofs.List = make([]Oneof, len(rawOneofs))\n\t\tfor i, b := range rawFields {\n\t\t\tfd := &md.L2.Fields.List[i]\n\t\t\tfd.unmarshalFull(b, sb, md.L0.ParentFile, md, i)\n\t\t\tif fd.L1.Cardinality == protoreflect.Required {\n\t\t\t\tmd.L2.RequiredNumbers.List = append(md.L2.RequiredNumbers.List, fd.L1.Number)\n\t\t\t}\n\t\t}\n\t\tfor i, b := range rawOneofs {\n\t\t\tod := &md.L2.Oneofs.List[i]\n\t\t\tod.unmarshalFull(b, sb, md.L0.ParentFile, md, i)\n\t\t}\n\t}\n\tmd.L2.Options = md.L0.ParentFile.builder.optionsUnmarshaler(&descopts.Message, rawOptions)\n}\n\nfunc (md *Message) unmarshalOptions(b []byte) {\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.VarintType:\n\t\t\tv, m := protowire.ConsumeVarint(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.MessageOptions_MapEntry_field_number:\n\t\t\t\tmd.L1.IsMapEntry = protowire.DecodeBool(v)\n\t\t\tcase genid.MessageOptions_MessageSetWireFormat_field_number:\n\t\t\t\tmd.L1.IsMessageSet = protowire.DecodeBool(v)\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n}\n\nfunc unmarshalMessageReservedRange(b []byte) (r [2]protoreflect.FieldNumber) {\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.VarintType:\n\t\t\tv, m := protowire.ConsumeVarint(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.DescriptorProto_ReservedRange_Start_field_number:\n\t\t\t\tr[0] = protoreflect.FieldNumber(v)\n\t\t\tcase genid.DescriptorProto_ReservedRange_End_field_number:\n\t\t\t\tr[1] = protoreflect.FieldNumber(v)\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n\treturn r\n}\n\nfunc unmarshalMessageExtensionRange(b []byte) (r [2]protoreflect.FieldNumber, rawOptions []byte) {\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.VarintType:\n\t\t\tv, m := protowire.ConsumeVarint(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.DescriptorProto_ExtensionRange_Start_field_number:\n\t\t\t\tr[0] = protoreflect.FieldNumber(v)\n\t\t\tcase genid.DescriptorProto_ExtensionRange_End_field_number:\n\t\t\t\tr[1] = protoreflect.FieldNumber(v)\n\t\t\t}\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.DescriptorProto_ExtensionRange_Options_field_number:\n\t\t\t\trawOptions = appendOptions(rawOptions, v)\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n\treturn r, rawOptions\n}\n\nfunc (fd *Field) unmarshalFull(b []byte, sb *strs.Builder, pf *File, pd protoreflect.Descriptor, i int) {\n\tfd.L0.ParentFile = pf\n\tfd.L0.Parent = pd\n\tfd.L0.Index = i\n\tfd.L1.EditionFeatures = featuresFromParentDesc(fd.Parent())\n\n\tvar rawTypeName []byte\n\tvar rawOptions []byte\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.VarintType:\n\t\t\tv, m := protowire.ConsumeVarint(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.FieldDescriptorProto_Number_field_number:\n\t\t\t\tfd.L1.Number = protoreflect.FieldNumber(v)\n\t\t\tcase genid.FieldDescriptorProto_Label_field_number:\n\t\t\t\tfd.L1.Cardinality = protoreflect.Cardinality(v)\n\t\t\tcase genid.FieldDescriptorProto_Type_field_number:\n\t\t\t\tfd.L1.Kind = protoreflect.Kind(v)\n\t\t\tcase genid.FieldDescriptorProto_OneofIndex_field_number:\n\t\t\t\t// In Message.unmarshalFull, we allocate slices for both\n\t\t\t\t// the field and oneof descriptors before unmarshaling either\n\t\t\t\t// of them. This ensures pointers to slice elements are stable.\n\t\t\t\tod := &pd.(*Message).L2.Oneofs.List[v]\n\t\t\t\tod.L1.Fields.List = append(od.L1.Fields.List, fd)\n\t\t\t\tif fd.L1.ContainingOneof != nil {\n\t\t\t\t\tpanic(\"oneof type already set\")\n\t\t\t\t}\n\t\t\t\tfd.L1.ContainingOneof = od\n\t\t\tcase genid.FieldDescriptorProto_Proto3Optional_field_number:\n\t\t\t\tfd.L1.IsProto3Optional = protowire.DecodeBool(v)\n\t\t\t}\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.FieldDescriptorProto_Name_field_number:\n\t\t\t\tfd.L0.FullName = appendFullName(sb, pd.FullName(), v)\n\t\t\tcase genid.FieldDescriptorProto_JsonName_field_number:\n\t\t\t\tfd.L1.StringName.InitJSON(sb.MakeString(v))\n\t\t\tcase genid.FieldDescriptorProto_DefaultValue_field_number:\n\t\t\t\tfd.L1.Default.val = protoreflect.ValueOfBytes(v) // temporarily store as bytes; later resolved in resolveMessages\n\t\t\tcase genid.FieldDescriptorProto_TypeName_field_number:\n\t\t\t\trawTypeName = v\n\t\t\tcase genid.FieldDescriptorProto_Options_field_number:\n\t\t\t\tfd.unmarshalOptions(v)\n\t\t\t\trawOptions = appendOptions(rawOptions, v)\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n\tif fd.L1.Kind == protoreflect.MessageKind && fd.L1.EditionFeatures.IsDelimitedEncoded {\n\t\tfd.L1.Kind = protoreflect.GroupKind\n\t}\n\tif fd.L1.EditionFeatures.IsLegacyRequired {\n\t\tfd.L1.Cardinality = protoreflect.Required\n\t}\n\tif rawTypeName != nil {\n\t\tname := makeFullName(sb, rawTypeName)\n\t\tswitch fd.L1.Kind {\n\t\tcase protoreflect.EnumKind:\n\t\t\tfd.L1.Enum = PlaceholderEnum(name)\n\t\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\t\tfd.L1.Message = PlaceholderMessage(name)\n\t\t}\n\t}\n\tfd.L1.Options = pf.builder.optionsUnmarshaler(&descopts.Field, rawOptions)\n}\n\nfunc (fd *Field) unmarshalOptions(b []byte) {\n\tconst FieldOptions_EnforceUTF8 = 13\n\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.VarintType:\n\t\t\tv, m := protowire.ConsumeVarint(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.FieldOptions_Packed_field_number:\n\t\t\t\tfd.L1.EditionFeatures.IsPacked = protowire.DecodeBool(v)\n\t\t\tcase genid.FieldOptions_Lazy_field_number:\n\t\t\t\tfd.L1.IsLazy = protowire.DecodeBool(v)\n\t\t\tcase FieldOptions_EnforceUTF8:\n\t\t\t\tfd.L1.EditionFeatures.IsUTF8Validated = protowire.DecodeBool(v)\n\t\t\t}\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.FieldOptions_Features_field_number:\n\t\t\t\tfd.L1.EditionFeatures = unmarshalFeatureSet(v, fd.L1.EditionFeatures)\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n}\n\nfunc (od *Oneof) unmarshalFull(b []byte, sb *strs.Builder, pf *File, pd protoreflect.Descriptor, i int) {\n\tod.L0.ParentFile = pf\n\tod.L0.Parent = pd\n\tod.L0.Index = i\n\n\tvar rawOptions []byte\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.OneofDescriptorProto_Name_field_number:\n\t\t\t\tod.L0.FullName = appendFullName(sb, pd.FullName(), v)\n\t\t\tcase genid.OneofDescriptorProto_Options_field_number:\n\t\t\t\trawOptions = appendOptions(rawOptions, v)\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n\tod.L1.Options = pf.builder.optionsUnmarshaler(&descopts.Oneof, rawOptions)\n}\n\nfunc (xd *Extension) unmarshalFull(b []byte, sb *strs.Builder) {\n\tvar rawTypeName []byte\n\tvar rawOptions []byte\n\txd.L2 = new(ExtensionL2)\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.VarintType:\n\t\t\tv, m := protowire.ConsumeVarint(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.FieldDescriptorProto_Proto3Optional_field_number:\n\t\t\t\txd.L2.IsProto3Optional = protowire.DecodeBool(v)\n\t\t\t}\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.FieldDescriptorProto_JsonName_field_number:\n\t\t\t\txd.L2.StringName.InitJSON(sb.MakeString(v))\n\t\t\tcase genid.FieldDescriptorProto_DefaultValue_field_number:\n\t\t\t\txd.L2.Default.val = protoreflect.ValueOfBytes(v) // temporarily store as bytes; later resolved in resolveExtensions\n\t\t\tcase genid.FieldDescriptorProto_TypeName_field_number:\n\t\t\t\trawTypeName = v\n\t\t\tcase genid.FieldDescriptorProto_Options_field_number:\n\t\t\t\trawOptions = appendOptions(rawOptions, v)\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n\tif rawTypeName != nil {\n\t\tname := makeFullName(sb, rawTypeName)\n\t\tswitch xd.L1.Kind {\n\t\tcase protoreflect.EnumKind:\n\t\t\txd.L2.Enum = PlaceholderEnum(name)\n\t\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\t\txd.L2.Message = PlaceholderMessage(name)\n\t\t}\n\t}\n\txd.L2.Options = xd.L0.ParentFile.builder.optionsUnmarshaler(&descopts.Field, rawOptions)\n}\n\nfunc (sd *Service) unmarshalFull(b []byte, sb *strs.Builder) {\n\tvar rawMethods [][]byte\n\tvar rawOptions []byte\n\tsd.L2 = new(ServiceL2)\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.ServiceDescriptorProto_Method_field_number:\n\t\t\t\trawMethods = append(rawMethods, v)\n\t\t\tcase genid.ServiceDescriptorProto_Options_field_number:\n\t\t\t\trawOptions = appendOptions(rawOptions, v)\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n\tif len(rawMethods) > 0 {\n\t\tsd.L2.Methods.List = make([]Method, len(rawMethods))\n\t\tfor i, b := range rawMethods {\n\t\t\tsd.L2.Methods.List[i].unmarshalFull(b, sb, sd.L0.ParentFile, sd, i)\n\t\t}\n\t}\n\tsd.L2.Options = sd.L0.ParentFile.builder.optionsUnmarshaler(&descopts.Service, rawOptions)\n}\n\nfunc (md *Method) unmarshalFull(b []byte, sb *strs.Builder, pf *File, pd protoreflect.Descriptor, i int) {\n\tmd.L0.ParentFile = pf\n\tmd.L0.Parent = pd\n\tmd.L0.Index = i\n\n\tvar rawOptions []byte\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.VarintType:\n\t\t\tv, m := protowire.ConsumeVarint(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.MethodDescriptorProto_ClientStreaming_field_number:\n\t\t\t\tmd.L1.IsStreamingClient = protowire.DecodeBool(v)\n\t\t\tcase genid.MethodDescriptorProto_ServerStreaming_field_number:\n\t\t\t\tmd.L1.IsStreamingServer = protowire.DecodeBool(v)\n\t\t\t}\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.MethodDescriptorProto_Name_field_number:\n\t\t\t\tmd.L0.FullName = appendFullName(sb, pd.FullName(), v)\n\t\t\tcase genid.MethodDescriptorProto_InputType_field_number:\n\t\t\t\tmd.L1.Input = PlaceholderMessage(makeFullName(sb, v))\n\t\t\tcase genid.MethodDescriptorProto_OutputType_field_number:\n\t\t\t\tmd.L1.Output = PlaceholderMessage(makeFullName(sb, v))\n\t\t\tcase genid.MethodDescriptorProto_Options_field_number:\n\t\t\t\trawOptions = appendOptions(rawOptions, v)\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n\tmd.L1.Options = pf.builder.optionsUnmarshaler(&descopts.Method, rawOptions)\n}\n\n// appendOptions appends src to dst, where the returned slice is never nil.\n// This is necessary to distinguish between empty and unpopulated options.\nfunc appendOptions(dst, src []byte) []byte {\n\tif dst == nil {\n\t\tdst = []byte{}\n\t}\n\treturn append(dst, src...)\n}\n\n// optionsUnmarshaler constructs a lazy unmarshal function for an options message.\n//\n// The type of message to unmarshal to is passed as a pointer since the\n// vars in descopts may not yet be populated at the time this function is called.\nfunc (db *Builder) optionsUnmarshaler(p *protoreflect.ProtoMessage, b []byte) func() protoreflect.ProtoMessage {\n\tif b == nil {\n\t\treturn nil\n\t}\n\tvar opts protoreflect.ProtoMessage\n\tvar once sync.Once\n\treturn func() protoreflect.ProtoMessage {\n\t\tonce.Do(func() {\n\t\t\tif *p == nil {\n\t\t\t\tpanic(\"Descriptor.Options called without importing the descriptor package\")\n\t\t\t}\n\t\t\topts = reflect.New(reflect.TypeOf(*p).Elem()).Interface().(protoreflect.ProtoMessage)\n\t\t\tif err := (proto.UnmarshalOptions{\n\t\t\t\tAllowPartial: true,\n\t\t\t\tResolver:     db.TypeResolver,\n\t\t\t}).Unmarshal(b, opts); err != nil {\n\t\t\t\tpanic(err)\n\t\t\t}\n\t\t})\n\t\treturn opts\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/filedesc/desc_list.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage filedesc\n\nimport (\n\t\"fmt\"\n\t\"math\"\n\t\"sort\"\n\t\"sync\"\n\n\t\"google.golang.org/protobuf/internal/genid\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/descfmt\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/internal/pragma\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\ntype FileImports []protoreflect.FileImport\n\nfunc (p *FileImports) Len() int                            { return len(*p) }\nfunc (p *FileImports) Get(i int) protoreflect.FileImport   { return (*p)[i] }\nfunc (p *FileImports) Format(s fmt.State, r rune)          { descfmt.FormatList(s, r, p) }\nfunc (p *FileImports) ProtoInternal(pragma.DoNotImplement) {}\n\ntype Names struct {\n\tList []protoreflect.Name\n\tonce sync.Once\n\thas  map[protoreflect.Name]int // protected by once\n}\n\nfunc (p *Names) Len() int                            { return len(p.List) }\nfunc (p *Names) Get(i int) protoreflect.Name         { return p.List[i] }\nfunc (p *Names) Has(s protoreflect.Name) bool        { return p.lazyInit().has[s] > 0 }\nfunc (p *Names) Format(s fmt.State, r rune)          { descfmt.FormatList(s, r, p) }\nfunc (p *Names) ProtoInternal(pragma.DoNotImplement) {}\nfunc (p *Names) lazyInit() *Names {\n\tp.once.Do(func() {\n\t\tif len(p.List) > 0 {\n\t\t\tp.has = make(map[protoreflect.Name]int, len(p.List))\n\t\t\tfor _, s := range p.List {\n\t\t\t\tp.has[s] = p.has[s] + 1\n\t\t\t}\n\t\t}\n\t})\n\treturn p\n}\n\n// CheckValid reports any errors with the set of names with an error message\n// that completes the sentence: \"ranges is invalid because it has ...\"\nfunc (p *Names) CheckValid() error {\n\tfor s, n := range p.lazyInit().has {\n\t\tswitch {\n\t\tcase n > 1:\n\t\t\treturn errors.New(\"duplicate name: %q\", s)\n\t\tcase false && !s.IsValid():\n\t\t\t// NOTE: The C++ implementation does not validate the identifier.\n\t\t\t// See https://github.com/protocolbuffers/protobuf/issues/6335.\n\t\t\treturn errors.New(\"invalid name: %q\", s)\n\t\t}\n\t}\n\treturn nil\n}\n\ntype EnumRanges struct {\n\tList   [][2]protoreflect.EnumNumber // start inclusive; end inclusive\n\tonce   sync.Once\n\tsorted [][2]protoreflect.EnumNumber // protected by once\n}\n\nfunc (p *EnumRanges) Len() int                             { return len(p.List) }\nfunc (p *EnumRanges) Get(i int) [2]protoreflect.EnumNumber { return p.List[i] }\nfunc (p *EnumRanges) Has(n protoreflect.EnumNumber) bool {\n\tfor ls := p.lazyInit().sorted; len(ls) > 0; {\n\t\ti := len(ls) / 2\n\t\tswitch r := enumRange(ls[i]); {\n\t\tcase n < r.Start():\n\t\t\tls = ls[:i] // search lower\n\t\tcase n > r.End():\n\t\t\tls = ls[i+1:] // search upper\n\t\tdefault:\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\nfunc (p *EnumRanges) Format(s fmt.State, r rune)          { descfmt.FormatList(s, r, p) }\nfunc (p *EnumRanges) ProtoInternal(pragma.DoNotImplement) {}\nfunc (p *EnumRanges) lazyInit() *EnumRanges {\n\tp.once.Do(func() {\n\t\tp.sorted = append(p.sorted, p.List...)\n\t\tsort.Slice(p.sorted, func(i, j int) bool {\n\t\t\treturn p.sorted[i][0] < p.sorted[j][0]\n\t\t})\n\t})\n\treturn p\n}\n\n// CheckValid reports any errors with the set of names with an error message\n// that completes the sentence: \"ranges is invalid because it has ...\"\nfunc (p *EnumRanges) CheckValid() error {\n\tvar rp enumRange\n\tfor i, r := range p.lazyInit().sorted {\n\t\tr := enumRange(r)\n\t\tswitch {\n\t\tcase !(r.Start() <= r.End()):\n\t\t\treturn errors.New(\"invalid range: %v\", r)\n\t\tcase !(rp.End() < r.Start()) && i > 0:\n\t\t\treturn errors.New(\"overlapping ranges: %v with %v\", rp, r)\n\t\t}\n\t\trp = r\n\t}\n\treturn nil\n}\n\ntype enumRange [2]protoreflect.EnumNumber\n\nfunc (r enumRange) Start() protoreflect.EnumNumber { return r[0] } // inclusive\nfunc (r enumRange) End() protoreflect.EnumNumber   { return r[1] } // inclusive\nfunc (r enumRange) String() string {\n\tif r.Start() == r.End() {\n\t\treturn fmt.Sprintf(\"%d\", r.Start())\n\t}\n\treturn fmt.Sprintf(\"%d to %d\", r.Start(), r.End())\n}\n\ntype FieldRanges struct {\n\tList   [][2]protoreflect.FieldNumber // start inclusive; end exclusive\n\tonce   sync.Once\n\tsorted [][2]protoreflect.FieldNumber // protected by once\n}\n\nfunc (p *FieldRanges) Len() int                              { return len(p.List) }\nfunc (p *FieldRanges) Get(i int) [2]protoreflect.FieldNumber { return p.List[i] }\nfunc (p *FieldRanges) Has(n protoreflect.FieldNumber) bool {\n\tfor ls := p.lazyInit().sorted; len(ls) > 0; {\n\t\ti := len(ls) / 2\n\t\tswitch r := fieldRange(ls[i]); {\n\t\tcase n < r.Start():\n\t\t\tls = ls[:i] // search lower\n\t\tcase n > r.End():\n\t\t\tls = ls[i+1:] // search upper\n\t\tdefault:\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\nfunc (p *FieldRanges) Format(s fmt.State, r rune)          { descfmt.FormatList(s, r, p) }\nfunc (p *FieldRanges) ProtoInternal(pragma.DoNotImplement) {}\nfunc (p *FieldRanges) lazyInit() *FieldRanges {\n\tp.once.Do(func() {\n\t\tp.sorted = append(p.sorted, p.List...)\n\t\tsort.Slice(p.sorted, func(i, j int) bool {\n\t\t\treturn p.sorted[i][0] < p.sorted[j][0]\n\t\t})\n\t})\n\treturn p\n}\n\n// CheckValid reports any errors with the set of ranges with an error message\n// that completes the sentence: \"ranges is invalid because it has ...\"\nfunc (p *FieldRanges) CheckValid(isMessageSet bool) error {\n\tvar rp fieldRange\n\tfor i, r := range p.lazyInit().sorted {\n\t\tr := fieldRange(r)\n\t\tswitch {\n\t\tcase !isValidFieldNumber(r.Start(), isMessageSet):\n\t\t\treturn errors.New(\"invalid field number: %d\", r.Start())\n\t\tcase !isValidFieldNumber(r.End(), isMessageSet):\n\t\t\treturn errors.New(\"invalid field number: %d\", r.End())\n\t\tcase !(r.Start() <= r.End()):\n\t\t\treturn errors.New(\"invalid range: %v\", r)\n\t\tcase !(rp.End() < r.Start()) && i > 0:\n\t\t\treturn errors.New(\"overlapping ranges: %v with %v\", rp, r)\n\t\t}\n\t\trp = r\n\t}\n\treturn nil\n}\n\n// isValidFieldNumber reports whether the field number is valid.\n// Unlike the FieldNumber.IsValid method, it allows ranges that cover the\n// reserved number range.\nfunc isValidFieldNumber(n protoreflect.FieldNumber, isMessageSet bool) bool {\n\treturn protowire.MinValidNumber <= n && (n <= protowire.MaxValidNumber || isMessageSet)\n}\n\n// CheckOverlap reports an error if p and q overlap.\nfunc (p *FieldRanges) CheckOverlap(q *FieldRanges) error {\n\trps := p.lazyInit().sorted\n\trqs := q.lazyInit().sorted\n\tfor pi, qi := 0, 0; pi < len(rps) && qi < len(rqs); {\n\t\trp := fieldRange(rps[pi])\n\t\trq := fieldRange(rqs[qi])\n\t\tif !(rp.End() < rq.Start() || rq.End() < rp.Start()) {\n\t\t\treturn errors.New(\"overlapping ranges: %v with %v\", rp, rq)\n\t\t}\n\t\tif rp.Start() < rq.Start() {\n\t\t\tpi++\n\t\t} else {\n\t\t\tqi++\n\t\t}\n\t}\n\treturn nil\n}\n\ntype fieldRange [2]protoreflect.FieldNumber\n\nfunc (r fieldRange) Start() protoreflect.FieldNumber { return r[0] }     // inclusive\nfunc (r fieldRange) End() protoreflect.FieldNumber   { return r[1] - 1 } // inclusive\nfunc (r fieldRange) String() string {\n\tif r.Start() == r.End() {\n\t\treturn fmt.Sprintf(\"%d\", r.Start())\n\t}\n\treturn fmt.Sprintf(\"%d to %d\", r.Start(), r.End())\n}\n\ntype FieldNumbers struct {\n\tList []protoreflect.FieldNumber\n\tonce sync.Once\n\thas  map[protoreflect.FieldNumber]struct{} // protected by once\n}\n\nfunc (p *FieldNumbers) Len() int                           { return len(p.List) }\nfunc (p *FieldNumbers) Get(i int) protoreflect.FieldNumber { return p.List[i] }\nfunc (p *FieldNumbers) Has(n protoreflect.FieldNumber) bool {\n\tp.once.Do(func() {\n\t\tif len(p.List) > 0 {\n\t\t\tp.has = make(map[protoreflect.FieldNumber]struct{}, len(p.List))\n\t\t\tfor _, n := range p.List {\n\t\t\t\tp.has[n] = struct{}{}\n\t\t\t}\n\t\t}\n\t})\n\t_, ok := p.has[n]\n\treturn ok\n}\nfunc (p *FieldNumbers) Format(s fmt.State, r rune)          { descfmt.FormatList(s, r, p) }\nfunc (p *FieldNumbers) ProtoInternal(pragma.DoNotImplement) {}\n\ntype OneofFields struct {\n\tList   []protoreflect.FieldDescriptor\n\tonce   sync.Once\n\tbyName map[protoreflect.Name]protoreflect.FieldDescriptor        // protected by once\n\tbyJSON map[string]protoreflect.FieldDescriptor                   // protected by once\n\tbyText map[string]protoreflect.FieldDescriptor                   // protected by once\n\tbyNum  map[protoreflect.FieldNumber]protoreflect.FieldDescriptor // protected by once\n}\n\nfunc (p *OneofFields) Len() int                               { return len(p.List) }\nfunc (p *OneofFields) Get(i int) protoreflect.FieldDescriptor { return p.List[i] }\nfunc (p *OneofFields) ByName(s protoreflect.Name) protoreflect.FieldDescriptor {\n\treturn p.lazyInit().byName[s]\n}\nfunc (p *OneofFields) ByJSONName(s string) protoreflect.FieldDescriptor {\n\treturn p.lazyInit().byJSON[s]\n}\nfunc (p *OneofFields) ByTextName(s string) protoreflect.FieldDescriptor {\n\treturn p.lazyInit().byText[s]\n}\nfunc (p *OneofFields) ByNumber(n protoreflect.FieldNumber) protoreflect.FieldDescriptor {\n\treturn p.lazyInit().byNum[n]\n}\nfunc (p *OneofFields) Format(s fmt.State, r rune)          { descfmt.FormatList(s, r, p) }\nfunc (p *OneofFields) ProtoInternal(pragma.DoNotImplement) {}\n\nfunc (p *OneofFields) lazyInit() *OneofFields {\n\tp.once.Do(func() {\n\t\tif len(p.List) > 0 {\n\t\t\tp.byName = make(map[protoreflect.Name]protoreflect.FieldDescriptor, len(p.List))\n\t\t\tp.byJSON = make(map[string]protoreflect.FieldDescriptor, len(p.List))\n\t\t\tp.byText = make(map[string]protoreflect.FieldDescriptor, len(p.List))\n\t\t\tp.byNum = make(map[protoreflect.FieldNumber]protoreflect.FieldDescriptor, len(p.List))\n\t\t\tfor _, f := range p.List {\n\t\t\t\t// Field names and numbers are guaranteed to be unique.\n\t\t\t\tp.byName[f.Name()] = f\n\t\t\t\tp.byJSON[f.JSONName()] = f\n\t\t\t\tp.byText[f.TextName()] = f\n\t\t\t\tp.byNum[f.Number()] = f\n\t\t\t}\n\t\t}\n\t})\n\treturn p\n}\n\ntype SourceLocations struct {\n\t// List is a list of SourceLocations.\n\t// The SourceLocation.Next field does not need to be populated\n\t// as it will be lazily populated upon first need.\n\tList []protoreflect.SourceLocation\n\n\t// File is the parent file descriptor that these locations are relative to.\n\t// If non-nil, ByDescriptor verifies that the provided descriptor\n\t// is a child of this file descriptor.\n\tFile protoreflect.FileDescriptor\n\n\tonce   sync.Once\n\tbyPath map[pathKey]int\n}\n\nfunc (p *SourceLocations) Len() int                              { return len(p.List) }\nfunc (p *SourceLocations) Get(i int) protoreflect.SourceLocation { return p.lazyInit().List[i] }\nfunc (p *SourceLocations) byKey(k pathKey) protoreflect.SourceLocation {\n\tif i, ok := p.lazyInit().byPath[k]; ok {\n\t\treturn p.List[i]\n\t}\n\treturn protoreflect.SourceLocation{}\n}\nfunc (p *SourceLocations) ByPath(path protoreflect.SourcePath) protoreflect.SourceLocation {\n\treturn p.byKey(newPathKey(path))\n}\nfunc (p *SourceLocations) ByDescriptor(desc protoreflect.Descriptor) protoreflect.SourceLocation {\n\tif p.File != nil && desc != nil && p.File != desc.ParentFile() {\n\t\treturn protoreflect.SourceLocation{} // mismatching parent files\n\t}\n\tvar pathArr [16]int32\n\tpath := pathArr[:0]\n\tfor {\n\t\tswitch desc.(type) {\n\t\tcase protoreflect.FileDescriptor:\n\t\t\t// Reverse the path since it was constructed in reverse.\n\t\t\tfor i, j := 0, len(path)-1; i < j; i, j = i+1, j-1 {\n\t\t\t\tpath[i], path[j] = path[j], path[i]\n\t\t\t}\n\t\t\treturn p.byKey(newPathKey(path))\n\t\tcase protoreflect.MessageDescriptor:\n\t\t\tpath = append(path, int32(desc.Index()))\n\t\t\tdesc = desc.Parent()\n\t\t\tswitch desc.(type) {\n\t\t\tcase protoreflect.FileDescriptor:\n\t\t\t\tpath = append(path, int32(genid.FileDescriptorProto_MessageType_field_number))\n\t\t\tcase protoreflect.MessageDescriptor:\n\t\t\t\tpath = append(path, int32(genid.DescriptorProto_NestedType_field_number))\n\t\t\tdefault:\n\t\t\t\treturn protoreflect.SourceLocation{}\n\t\t\t}\n\t\tcase protoreflect.FieldDescriptor:\n\t\t\tisExtension := desc.(protoreflect.FieldDescriptor).IsExtension()\n\t\t\tpath = append(path, int32(desc.Index()))\n\t\t\tdesc = desc.Parent()\n\t\t\tif isExtension {\n\t\t\t\tswitch desc.(type) {\n\t\t\t\tcase protoreflect.FileDescriptor:\n\t\t\t\t\tpath = append(path, int32(genid.FileDescriptorProto_Extension_field_number))\n\t\t\t\tcase protoreflect.MessageDescriptor:\n\t\t\t\t\tpath = append(path, int32(genid.DescriptorProto_Extension_field_number))\n\t\t\t\tdefault:\n\t\t\t\t\treturn protoreflect.SourceLocation{}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tswitch desc.(type) {\n\t\t\t\tcase protoreflect.MessageDescriptor:\n\t\t\t\t\tpath = append(path, int32(genid.DescriptorProto_Field_field_number))\n\t\t\t\tdefault:\n\t\t\t\t\treturn protoreflect.SourceLocation{}\n\t\t\t\t}\n\t\t\t}\n\t\tcase protoreflect.OneofDescriptor:\n\t\t\tpath = append(path, int32(desc.Index()))\n\t\t\tdesc = desc.Parent()\n\t\t\tswitch desc.(type) {\n\t\t\tcase protoreflect.MessageDescriptor:\n\t\t\t\tpath = append(path, int32(genid.DescriptorProto_OneofDecl_field_number))\n\t\t\tdefault:\n\t\t\t\treturn protoreflect.SourceLocation{}\n\t\t\t}\n\t\tcase protoreflect.EnumDescriptor:\n\t\t\tpath = append(path, int32(desc.Index()))\n\t\t\tdesc = desc.Parent()\n\t\t\tswitch desc.(type) {\n\t\t\tcase protoreflect.FileDescriptor:\n\t\t\t\tpath = append(path, int32(genid.FileDescriptorProto_EnumType_field_number))\n\t\t\tcase protoreflect.MessageDescriptor:\n\t\t\t\tpath = append(path, int32(genid.DescriptorProto_EnumType_field_number))\n\t\t\tdefault:\n\t\t\t\treturn protoreflect.SourceLocation{}\n\t\t\t}\n\t\tcase protoreflect.EnumValueDescriptor:\n\t\t\tpath = append(path, int32(desc.Index()))\n\t\t\tdesc = desc.Parent()\n\t\t\tswitch desc.(type) {\n\t\t\tcase protoreflect.EnumDescriptor:\n\t\t\t\tpath = append(path, int32(genid.EnumDescriptorProto_Value_field_number))\n\t\t\tdefault:\n\t\t\t\treturn protoreflect.SourceLocation{}\n\t\t\t}\n\t\tcase protoreflect.ServiceDescriptor:\n\t\t\tpath = append(path, int32(desc.Index()))\n\t\t\tdesc = desc.Parent()\n\t\t\tswitch desc.(type) {\n\t\t\tcase protoreflect.FileDescriptor:\n\t\t\t\tpath = append(path, int32(genid.FileDescriptorProto_Service_field_number))\n\t\t\tdefault:\n\t\t\t\treturn protoreflect.SourceLocation{}\n\t\t\t}\n\t\tcase protoreflect.MethodDescriptor:\n\t\t\tpath = append(path, int32(desc.Index()))\n\t\t\tdesc = desc.Parent()\n\t\t\tswitch desc.(type) {\n\t\t\tcase protoreflect.ServiceDescriptor:\n\t\t\t\tpath = append(path, int32(genid.ServiceDescriptorProto_Method_field_number))\n\t\t\tdefault:\n\t\t\t\treturn protoreflect.SourceLocation{}\n\t\t\t}\n\t\tdefault:\n\t\t\treturn protoreflect.SourceLocation{}\n\t\t}\n\t}\n}\nfunc (p *SourceLocations) lazyInit() *SourceLocations {\n\tp.once.Do(func() {\n\t\tif len(p.List) > 0 {\n\t\t\t// Collect all the indexes for a given path.\n\t\t\tpathIdxs := make(map[pathKey][]int, len(p.List))\n\t\t\tfor i, l := range p.List {\n\t\t\t\tk := newPathKey(l.Path)\n\t\t\t\tpathIdxs[k] = append(pathIdxs[k], i)\n\t\t\t}\n\n\t\t\t// Update the next index for all locations.\n\t\t\tp.byPath = make(map[pathKey]int, len(p.List))\n\t\t\tfor k, idxs := range pathIdxs {\n\t\t\t\tfor i := 0; i < len(idxs)-1; i++ {\n\t\t\t\t\tp.List[idxs[i]].Next = idxs[i+1]\n\t\t\t\t}\n\t\t\t\tp.List[idxs[len(idxs)-1]].Next = 0\n\t\t\t\tp.byPath[k] = idxs[0] // record the first location for this path\n\t\t\t}\n\t\t}\n\t})\n\treturn p\n}\nfunc (p *SourceLocations) ProtoInternal(pragma.DoNotImplement) {}\n\n// pathKey is a comparable representation of protoreflect.SourcePath.\ntype pathKey struct {\n\tarr [16]uint8 // first n-1 path segments; last element is the length\n\tstr string    // used if the path does not fit in arr\n}\n\nfunc newPathKey(p protoreflect.SourcePath) (k pathKey) {\n\tif len(p) < len(k.arr) {\n\t\tfor i, ps := range p {\n\t\t\tif ps < 0 || math.MaxUint8 <= ps {\n\t\t\t\treturn pathKey{str: p.String()}\n\t\t\t}\n\t\t\tk.arr[i] = uint8(ps)\n\t\t}\n\t\tk.arr[len(k.arr)-1] = uint8(len(p))\n\t\treturn k\n\t}\n\treturn pathKey{str: p.String()}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/filedesc/desc_list_gen.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-types. DO NOT EDIT.\n\npackage filedesc\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"google.golang.org/protobuf/internal/descfmt\"\n\t\"google.golang.org/protobuf/internal/pragma\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\ntype Enums struct {\n\tList   []Enum\n\tonce   sync.Once\n\tbyName map[protoreflect.Name]*Enum // protected by once\n}\n\nfunc (p *Enums) Len() int {\n\treturn len(p.List)\n}\nfunc (p *Enums) Get(i int) protoreflect.EnumDescriptor {\n\treturn &p.List[i]\n}\nfunc (p *Enums) ByName(s protoreflect.Name) protoreflect.EnumDescriptor {\n\tif d := p.lazyInit().byName[s]; d != nil {\n\t\treturn d\n\t}\n\treturn nil\n}\nfunc (p *Enums) Format(s fmt.State, r rune) {\n\tdescfmt.FormatList(s, r, p)\n}\nfunc (p *Enums) ProtoInternal(pragma.DoNotImplement) {}\nfunc (p *Enums) lazyInit() *Enums {\n\tp.once.Do(func() {\n\t\tif len(p.List) > 0 {\n\t\t\tp.byName = make(map[protoreflect.Name]*Enum, len(p.List))\n\t\t\tfor i := range p.List {\n\t\t\t\td := &p.List[i]\n\t\t\t\tif _, ok := p.byName[d.Name()]; !ok {\n\t\t\t\t\tp.byName[d.Name()] = d\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t})\n\treturn p\n}\n\ntype EnumValues struct {\n\tList   []EnumValue\n\tonce   sync.Once\n\tbyName map[protoreflect.Name]*EnumValue       // protected by once\n\tbyNum  map[protoreflect.EnumNumber]*EnumValue // protected by once\n}\n\nfunc (p *EnumValues) Len() int {\n\treturn len(p.List)\n}\nfunc (p *EnumValues) Get(i int) protoreflect.EnumValueDescriptor {\n\treturn &p.List[i]\n}\nfunc (p *EnumValues) ByName(s protoreflect.Name) protoreflect.EnumValueDescriptor {\n\tif d := p.lazyInit().byName[s]; d != nil {\n\t\treturn d\n\t}\n\treturn nil\n}\nfunc (p *EnumValues) ByNumber(n protoreflect.EnumNumber) protoreflect.EnumValueDescriptor {\n\tif d := p.lazyInit().byNum[n]; d != nil {\n\t\treturn d\n\t}\n\treturn nil\n}\nfunc (p *EnumValues) Format(s fmt.State, r rune) {\n\tdescfmt.FormatList(s, r, p)\n}\nfunc (p *EnumValues) ProtoInternal(pragma.DoNotImplement) {}\nfunc (p *EnumValues) lazyInit() *EnumValues {\n\tp.once.Do(func() {\n\t\tif len(p.List) > 0 {\n\t\t\tp.byName = make(map[protoreflect.Name]*EnumValue, len(p.List))\n\t\t\tp.byNum = make(map[protoreflect.EnumNumber]*EnumValue, len(p.List))\n\t\t\tfor i := range p.List {\n\t\t\t\td := &p.List[i]\n\t\t\t\tif _, ok := p.byName[d.Name()]; !ok {\n\t\t\t\t\tp.byName[d.Name()] = d\n\t\t\t\t}\n\t\t\t\tif _, ok := p.byNum[d.Number()]; !ok {\n\t\t\t\t\tp.byNum[d.Number()] = d\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t})\n\treturn p\n}\n\ntype Messages struct {\n\tList   []Message\n\tonce   sync.Once\n\tbyName map[protoreflect.Name]*Message // protected by once\n}\n\nfunc (p *Messages) Len() int {\n\treturn len(p.List)\n}\nfunc (p *Messages) Get(i int) protoreflect.MessageDescriptor {\n\treturn &p.List[i]\n}\nfunc (p *Messages) ByName(s protoreflect.Name) protoreflect.MessageDescriptor {\n\tif d := p.lazyInit().byName[s]; d != nil {\n\t\treturn d\n\t}\n\treturn nil\n}\nfunc (p *Messages) Format(s fmt.State, r rune) {\n\tdescfmt.FormatList(s, r, p)\n}\nfunc (p *Messages) ProtoInternal(pragma.DoNotImplement) {}\nfunc (p *Messages) lazyInit() *Messages {\n\tp.once.Do(func() {\n\t\tif len(p.List) > 0 {\n\t\t\tp.byName = make(map[protoreflect.Name]*Message, len(p.List))\n\t\t\tfor i := range p.List {\n\t\t\t\td := &p.List[i]\n\t\t\t\tif _, ok := p.byName[d.Name()]; !ok {\n\t\t\t\t\tp.byName[d.Name()] = d\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t})\n\treturn p\n}\n\ntype Fields struct {\n\tList   []Field\n\tonce   sync.Once\n\tbyName map[protoreflect.Name]*Field        // protected by once\n\tbyJSON map[string]*Field                   // protected by once\n\tbyText map[string]*Field                   // protected by once\n\tbyNum  map[protoreflect.FieldNumber]*Field // protected by once\n}\n\nfunc (p *Fields) Len() int {\n\treturn len(p.List)\n}\nfunc (p *Fields) Get(i int) protoreflect.FieldDescriptor {\n\treturn &p.List[i]\n}\nfunc (p *Fields) ByName(s protoreflect.Name) protoreflect.FieldDescriptor {\n\tif d := p.lazyInit().byName[s]; d != nil {\n\t\treturn d\n\t}\n\treturn nil\n}\nfunc (p *Fields) ByJSONName(s string) protoreflect.FieldDescriptor {\n\tif d := p.lazyInit().byJSON[s]; d != nil {\n\t\treturn d\n\t}\n\treturn nil\n}\nfunc (p *Fields) ByTextName(s string) protoreflect.FieldDescriptor {\n\tif d := p.lazyInit().byText[s]; d != nil {\n\t\treturn d\n\t}\n\treturn nil\n}\nfunc (p *Fields) ByNumber(n protoreflect.FieldNumber) protoreflect.FieldDescriptor {\n\tif d := p.lazyInit().byNum[n]; d != nil {\n\t\treturn d\n\t}\n\treturn nil\n}\nfunc (p *Fields) Format(s fmt.State, r rune) {\n\tdescfmt.FormatList(s, r, p)\n}\nfunc (p *Fields) ProtoInternal(pragma.DoNotImplement) {}\nfunc (p *Fields) lazyInit() *Fields {\n\tp.once.Do(func() {\n\t\tif len(p.List) > 0 {\n\t\t\tp.byName = make(map[protoreflect.Name]*Field, len(p.List))\n\t\t\tp.byJSON = make(map[string]*Field, len(p.List))\n\t\t\tp.byText = make(map[string]*Field, len(p.List))\n\t\t\tp.byNum = make(map[protoreflect.FieldNumber]*Field, len(p.List))\n\t\t\tfor i := range p.List {\n\t\t\t\td := &p.List[i]\n\t\t\t\tif _, ok := p.byName[d.Name()]; !ok {\n\t\t\t\t\tp.byName[d.Name()] = d\n\t\t\t\t}\n\t\t\t\tif _, ok := p.byJSON[d.JSONName()]; !ok {\n\t\t\t\t\tp.byJSON[d.JSONName()] = d\n\t\t\t\t}\n\t\t\t\tif _, ok := p.byText[d.TextName()]; !ok {\n\t\t\t\t\tp.byText[d.TextName()] = d\n\t\t\t\t}\n\t\t\t\tif isGroupLike(d) {\n\t\t\t\t\tlowerJSONName := strings.ToLower(d.JSONName())\n\t\t\t\t\tif _, ok := p.byJSON[lowerJSONName]; !ok {\n\t\t\t\t\t\tp.byJSON[lowerJSONName] = d\n\t\t\t\t\t}\n\t\t\t\t\tlowerTextName := strings.ToLower(d.TextName())\n\t\t\t\t\tif _, ok := p.byText[lowerTextName]; !ok {\n\t\t\t\t\t\tp.byText[lowerTextName] = d\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif _, ok := p.byNum[d.Number()]; !ok {\n\t\t\t\t\tp.byNum[d.Number()] = d\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t})\n\treturn p\n}\n\ntype Oneofs struct {\n\tList   []Oneof\n\tonce   sync.Once\n\tbyName map[protoreflect.Name]*Oneof // protected by once\n}\n\nfunc (p *Oneofs) Len() int {\n\treturn len(p.List)\n}\nfunc (p *Oneofs) Get(i int) protoreflect.OneofDescriptor {\n\treturn &p.List[i]\n}\nfunc (p *Oneofs) ByName(s protoreflect.Name) protoreflect.OneofDescriptor {\n\tif d := p.lazyInit().byName[s]; d != nil {\n\t\treturn d\n\t}\n\treturn nil\n}\nfunc (p *Oneofs) Format(s fmt.State, r rune) {\n\tdescfmt.FormatList(s, r, p)\n}\nfunc (p *Oneofs) ProtoInternal(pragma.DoNotImplement) {}\nfunc (p *Oneofs) lazyInit() *Oneofs {\n\tp.once.Do(func() {\n\t\tif len(p.List) > 0 {\n\t\t\tp.byName = make(map[protoreflect.Name]*Oneof, len(p.List))\n\t\t\tfor i := range p.List {\n\t\t\t\td := &p.List[i]\n\t\t\t\tif _, ok := p.byName[d.Name()]; !ok {\n\t\t\t\t\tp.byName[d.Name()] = d\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t})\n\treturn p\n}\n\ntype Extensions struct {\n\tList   []Extension\n\tonce   sync.Once\n\tbyName map[protoreflect.Name]*Extension // protected by once\n}\n\nfunc (p *Extensions) Len() int {\n\treturn len(p.List)\n}\nfunc (p *Extensions) Get(i int) protoreflect.ExtensionDescriptor {\n\treturn &p.List[i]\n}\nfunc (p *Extensions) ByName(s protoreflect.Name) protoreflect.ExtensionDescriptor {\n\tif d := p.lazyInit().byName[s]; d != nil {\n\t\treturn d\n\t}\n\treturn nil\n}\nfunc (p *Extensions) Format(s fmt.State, r rune) {\n\tdescfmt.FormatList(s, r, p)\n}\nfunc (p *Extensions) ProtoInternal(pragma.DoNotImplement) {}\nfunc (p *Extensions) lazyInit() *Extensions {\n\tp.once.Do(func() {\n\t\tif len(p.List) > 0 {\n\t\t\tp.byName = make(map[protoreflect.Name]*Extension, len(p.List))\n\t\t\tfor i := range p.List {\n\t\t\t\td := &p.List[i]\n\t\t\t\tif _, ok := p.byName[d.Name()]; !ok {\n\t\t\t\t\tp.byName[d.Name()] = d\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t})\n\treturn p\n}\n\ntype Services struct {\n\tList   []Service\n\tonce   sync.Once\n\tbyName map[protoreflect.Name]*Service // protected by once\n}\n\nfunc (p *Services) Len() int {\n\treturn len(p.List)\n}\nfunc (p *Services) Get(i int) protoreflect.ServiceDescriptor {\n\treturn &p.List[i]\n}\nfunc (p *Services) ByName(s protoreflect.Name) protoreflect.ServiceDescriptor {\n\tif d := p.lazyInit().byName[s]; d != nil {\n\t\treturn d\n\t}\n\treturn nil\n}\nfunc (p *Services) Format(s fmt.State, r rune) {\n\tdescfmt.FormatList(s, r, p)\n}\nfunc (p *Services) ProtoInternal(pragma.DoNotImplement) {}\nfunc (p *Services) lazyInit() *Services {\n\tp.once.Do(func() {\n\t\tif len(p.List) > 0 {\n\t\t\tp.byName = make(map[protoreflect.Name]*Service, len(p.List))\n\t\t\tfor i := range p.List {\n\t\t\t\td := &p.List[i]\n\t\t\t\tif _, ok := p.byName[d.Name()]; !ok {\n\t\t\t\t\tp.byName[d.Name()] = d\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t})\n\treturn p\n}\n\ntype Methods struct {\n\tList   []Method\n\tonce   sync.Once\n\tbyName map[protoreflect.Name]*Method // protected by once\n}\n\nfunc (p *Methods) Len() int {\n\treturn len(p.List)\n}\nfunc (p *Methods) Get(i int) protoreflect.MethodDescriptor {\n\treturn &p.List[i]\n}\nfunc (p *Methods) ByName(s protoreflect.Name) protoreflect.MethodDescriptor {\n\tif d := p.lazyInit().byName[s]; d != nil {\n\t\treturn d\n\t}\n\treturn nil\n}\nfunc (p *Methods) Format(s fmt.State, r rune) {\n\tdescfmt.FormatList(s, r, p)\n}\nfunc (p *Methods) ProtoInternal(pragma.DoNotImplement) {}\nfunc (p *Methods) lazyInit() *Methods {\n\tp.once.Do(func() {\n\t\tif len(p.List) > 0 {\n\t\t\tp.byName = make(map[protoreflect.Name]*Method, len(p.List))\n\t\t\tfor i := range p.List {\n\t\t\t\td := &p.List[i]\n\t\t\t\tif _, ok := p.byName[d.Name()]; !ok {\n\t\t\t\t\tp.byName[d.Name()] = d\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t})\n\treturn p\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/filedesc/editions.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage filedesc\n\nimport (\n\t\"fmt\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/editiondefaults\"\n\t\"google.golang.org/protobuf/internal/genid\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nvar defaultsCache = make(map[Edition]EditionFeatures)\nvar defaultsKeys = []Edition{}\n\nfunc init() {\n\tunmarshalEditionDefaults(editiondefaults.Defaults)\n\tSurrogateProto2.L1.EditionFeatures = getFeaturesFor(EditionProto2)\n\tSurrogateProto3.L1.EditionFeatures = getFeaturesFor(EditionProto3)\n\tSurrogateEdition2023.L1.EditionFeatures = getFeaturesFor(Edition2023)\n}\n\nfunc unmarshalGoFeature(b []byte, parent EditionFeatures) EditionFeatures {\n\tfor len(b) > 0 {\n\t\tnum, _, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch num {\n\t\tcase genid.GoFeatures_LegacyUnmarshalJsonEnum_field_number:\n\t\t\tv, m := protowire.ConsumeVarint(b)\n\t\t\tb = b[m:]\n\t\t\tparent.GenerateLegacyUnmarshalJSON = protowire.DecodeBool(v)\n\t\tcase genid.GoFeatures_ApiLevel_field_number:\n\t\t\tv, m := protowire.ConsumeVarint(b)\n\t\t\tb = b[m:]\n\t\t\tparent.APILevel = int(v)\n\t\tcase genid.GoFeatures_StripEnumPrefix_field_number:\n\t\t\tv, m := protowire.ConsumeVarint(b)\n\t\t\tb = b[m:]\n\t\t\tparent.StripEnumPrefix = int(v)\n\t\tdefault:\n\t\t\tpanic(fmt.Sprintf(\"unkown field number %d while unmarshalling GoFeatures\", num))\n\t\t}\n\t}\n\treturn parent\n}\n\nfunc unmarshalFeatureSet(b []byte, parent EditionFeatures) EditionFeatures {\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.VarintType:\n\t\t\tv, m := protowire.ConsumeVarint(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.FeatureSet_FieldPresence_field_number:\n\t\t\t\tparent.IsFieldPresence = v == genid.FeatureSet_EXPLICIT_enum_value || v == genid.FeatureSet_LEGACY_REQUIRED_enum_value\n\t\t\t\tparent.IsLegacyRequired = v == genid.FeatureSet_LEGACY_REQUIRED_enum_value\n\t\t\tcase genid.FeatureSet_EnumType_field_number:\n\t\t\t\tparent.IsOpenEnum = v == genid.FeatureSet_OPEN_enum_value\n\t\t\tcase genid.FeatureSet_RepeatedFieldEncoding_field_number:\n\t\t\t\tparent.IsPacked = v == genid.FeatureSet_PACKED_enum_value\n\t\t\tcase genid.FeatureSet_Utf8Validation_field_number:\n\t\t\t\tparent.IsUTF8Validated = v == genid.FeatureSet_VERIFY_enum_value\n\t\t\tcase genid.FeatureSet_MessageEncoding_field_number:\n\t\t\t\tparent.IsDelimitedEncoded = v == genid.FeatureSet_DELIMITED_enum_value\n\t\t\tcase genid.FeatureSet_JsonFormat_field_number:\n\t\t\t\tparent.IsJSONCompliant = v == genid.FeatureSet_ALLOW_enum_value\n\t\t\tcase genid.FeatureSet_EnforceNamingStyle_field_number:\n\t\t\t\t// EnforceNamingStyle is enforced in protoc, languages other than C++\n\t\t\t\t// are not supposed to do anything with this feature.\n\t\t\tcase genid.FeatureSet_DefaultSymbolVisibility_field_number:\n\t\t\t\t// DefaultSymbolVisibility is enforced in protoc, runtimes should not\n\t\t\t\t// inspect this value.\n\t\t\tdefault:\n\t\t\t\tpanic(fmt.Sprintf(\"unkown field number %d while unmarshalling FeatureSet\", num))\n\t\t\t}\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.FeatureSet_Go_ext_number:\n\t\t\t\tparent = unmarshalGoFeature(v, parent)\n\t\t\t}\n\t\t}\n\t}\n\n\treturn parent\n}\n\nfunc featuresFromParentDesc(parentDesc protoreflect.Descriptor) EditionFeatures {\n\tvar parentFS EditionFeatures\n\tswitch p := parentDesc.(type) {\n\tcase *File:\n\t\tparentFS = p.L1.EditionFeatures\n\tcase *Message:\n\t\tparentFS = p.L1.EditionFeatures\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"unknown parent type %T\", parentDesc))\n\t}\n\treturn parentFS\n}\n\nfunc unmarshalEditionDefault(b []byte) {\n\tvar ed Edition\n\tvar fs EditionFeatures\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.VarintType:\n\t\t\tv, m := protowire.ConsumeVarint(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.FeatureSetDefaults_FeatureSetEditionDefault_Edition_field_number:\n\t\t\t\ted = Edition(v)\n\t\t\t}\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.FeatureSetDefaults_FeatureSetEditionDefault_FixedFeatures_field_number:\n\t\t\t\tfs = unmarshalFeatureSet(v, fs)\n\t\t\tcase genid.FeatureSetDefaults_FeatureSetEditionDefault_OverridableFeatures_field_number:\n\t\t\t\tfs = unmarshalFeatureSet(v, fs)\n\t\t\t}\n\t\t}\n\t}\n\tdefaultsCache[ed] = fs\n\tdefaultsKeys = append(defaultsKeys, ed)\n}\n\nfunc unmarshalEditionDefaults(b []byte) {\n\tfor len(b) > 0 {\n\t\tnum, _, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch num {\n\t\tcase genid.FeatureSetDefaults_Defaults_field_number:\n\t\t\tdef, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tunmarshalEditionDefault(def)\n\t\tcase genid.FeatureSetDefaults_MinimumEdition_field_number,\n\t\t\tgenid.FeatureSetDefaults_MaximumEdition_field_number:\n\t\t\t// We don't care about the minimum and maximum editions. If the\n\t\t\t// edition we are looking for later on is not in the cache we know\n\t\t\t// it is outside of the range between minimum and maximum edition.\n\t\t\t_, m := protowire.ConsumeVarint(b)\n\t\t\tb = b[m:]\n\t\tdefault:\n\t\t\tpanic(fmt.Sprintf(\"unkown field number %d while unmarshalling EditionDefault\", num))\n\t\t}\n\t}\n}\n\nfunc getFeaturesFor(ed Edition) EditionFeatures {\n\tmatch := EditionUnknown\n\tfor _, key := range defaultsKeys {\n\t\tif key > ed {\n\t\t\tbreak\n\t\t}\n\t\tmatch = key\n\t}\n\tif match == EditionUnknown {\n\t\tpanic(fmt.Sprintf(\"unsupported edition: %v\", ed))\n\t}\n\treturn defaultsCache[match]\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/filedesc/placeholder.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage filedesc\n\nimport (\n\t\"google.golang.org/protobuf/internal/descopts\"\n\t\"google.golang.org/protobuf/internal/pragma\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nvar (\n\temptyNames           = new(Names)\n\temptyEnumRanges      = new(EnumRanges)\n\temptyFieldRanges     = new(FieldRanges)\n\temptyFieldNumbers    = new(FieldNumbers)\n\temptySourceLocations = new(SourceLocations)\n\n\temptyFiles      = new(FileImports)\n\temptyMessages   = new(Messages)\n\temptyFields     = new(Fields)\n\temptyOneofs     = new(Oneofs)\n\temptyEnums      = new(Enums)\n\temptyEnumValues = new(EnumValues)\n\temptyExtensions = new(Extensions)\n\temptyServices   = new(Services)\n)\n\n// PlaceholderFile is a placeholder, representing only the file path.\ntype PlaceholderFile string\n\nfunc (f PlaceholderFile) ParentFile() protoreflect.FileDescriptor       { return f }\nfunc (f PlaceholderFile) Parent() protoreflect.Descriptor               { return nil }\nfunc (f PlaceholderFile) Index() int                                    { return 0 }\nfunc (f PlaceholderFile) Syntax() protoreflect.Syntax                   { return 0 }\nfunc (f PlaceholderFile) Name() protoreflect.Name                       { return \"\" }\nfunc (f PlaceholderFile) FullName() protoreflect.FullName               { return \"\" }\nfunc (f PlaceholderFile) IsPlaceholder() bool                           { return true }\nfunc (f PlaceholderFile) Options() protoreflect.ProtoMessage            { return descopts.File }\nfunc (f PlaceholderFile) Path() string                                  { return string(f) }\nfunc (f PlaceholderFile) Package() protoreflect.FullName                { return \"\" }\nfunc (f PlaceholderFile) Imports() protoreflect.FileImports             { return emptyFiles }\nfunc (f PlaceholderFile) Messages() protoreflect.MessageDescriptors     { return emptyMessages }\nfunc (f PlaceholderFile) Enums() protoreflect.EnumDescriptors           { return emptyEnums }\nfunc (f PlaceholderFile) Extensions() protoreflect.ExtensionDescriptors { return emptyExtensions }\nfunc (f PlaceholderFile) Services() protoreflect.ServiceDescriptors     { return emptyServices }\nfunc (f PlaceholderFile) SourceLocations() protoreflect.SourceLocations { return emptySourceLocations }\nfunc (f PlaceholderFile) ProtoType(protoreflect.FileDescriptor)         { return }\nfunc (f PlaceholderFile) ProtoInternal(pragma.DoNotImplement)           { return }\n\n// PlaceholderEnum is a placeholder, representing only the full name.\ntype PlaceholderEnum protoreflect.FullName\n\nfunc (e PlaceholderEnum) ParentFile() protoreflect.FileDescriptor   { return nil }\nfunc (e PlaceholderEnum) Parent() protoreflect.Descriptor           { return nil }\nfunc (e PlaceholderEnum) Index() int                                { return 0 }\nfunc (e PlaceholderEnum) Syntax() protoreflect.Syntax               { return 0 }\nfunc (e PlaceholderEnum) Name() protoreflect.Name                   { return protoreflect.FullName(e).Name() }\nfunc (e PlaceholderEnum) FullName() protoreflect.FullName           { return protoreflect.FullName(e) }\nfunc (e PlaceholderEnum) IsPlaceholder() bool                       { return true }\nfunc (e PlaceholderEnum) Options() protoreflect.ProtoMessage        { return descopts.Enum }\nfunc (e PlaceholderEnum) Values() protoreflect.EnumValueDescriptors { return emptyEnumValues }\nfunc (e PlaceholderEnum) ReservedNames() protoreflect.Names         { return emptyNames }\nfunc (e PlaceholderEnum) ReservedRanges() protoreflect.EnumRanges   { return emptyEnumRanges }\nfunc (e PlaceholderEnum) IsClosed() bool                            { return false }\nfunc (e PlaceholderEnum) ProtoType(protoreflect.EnumDescriptor)     { return }\nfunc (e PlaceholderEnum) ProtoInternal(pragma.DoNotImplement)       { return }\n\n// PlaceholderEnumValue is a placeholder, representing only the full name.\ntype PlaceholderEnumValue protoreflect.FullName\n\nfunc (e PlaceholderEnumValue) ParentFile() protoreflect.FileDescriptor    { return nil }\nfunc (e PlaceholderEnumValue) Parent() protoreflect.Descriptor            { return nil }\nfunc (e PlaceholderEnumValue) Index() int                                 { return 0 }\nfunc (e PlaceholderEnumValue) Syntax() protoreflect.Syntax                { return 0 }\nfunc (e PlaceholderEnumValue) Name() protoreflect.Name                    { return protoreflect.FullName(e).Name() }\nfunc (e PlaceholderEnumValue) FullName() protoreflect.FullName            { return protoreflect.FullName(e) }\nfunc (e PlaceholderEnumValue) IsPlaceholder() bool                        { return true }\nfunc (e PlaceholderEnumValue) Options() protoreflect.ProtoMessage         { return descopts.EnumValue }\nfunc (e PlaceholderEnumValue) Number() protoreflect.EnumNumber            { return 0 }\nfunc (e PlaceholderEnumValue) ProtoType(protoreflect.EnumValueDescriptor) { return }\nfunc (e PlaceholderEnumValue) ProtoInternal(pragma.DoNotImplement)        { return }\n\n// PlaceholderMessage is a placeholder, representing only the full name.\ntype PlaceholderMessage protoreflect.FullName\n\nfunc (m PlaceholderMessage) ParentFile() protoreflect.FileDescriptor    { return nil }\nfunc (m PlaceholderMessage) Parent() protoreflect.Descriptor            { return nil }\nfunc (m PlaceholderMessage) Index() int                                 { return 0 }\nfunc (m PlaceholderMessage) Syntax() protoreflect.Syntax                { return 0 }\nfunc (m PlaceholderMessage) Name() protoreflect.Name                    { return protoreflect.FullName(m).Name() }\nfunc (m PlaceholderMessage) FullName() protoreflect.FullName            { return protoreflect.FullName(m) }\nfunc (m PlaceholderMessage) IsPlaceholder() bool                        { return true }\nfunc (m PlaceholderMessage) Options() protoreflect.ProtoMessage         { return descopts.Message }\nfunc (m PlaceholderMessage) IsMapEntry() bool                           { return false }\nfunc (m PlaceholderMessage) Fields() protoreflect.FieldDescriptors      { return emptyFields }\nfunc (m PlaceholderMessage) Oneofs() protoreflect.OneofDescriptors      { return emptyOneofs }\nfunc (m PlaceholderMessage) ReservedNames() protoreflect.Names          { return emptyNames }\nfunc (m PlaceholderMessage) ReservedRanges() protoreflect.FieldRanges   { return emptyFieldRanges }\nfunc (m PlaceholderMessage) RequiredNumbers() protoreflect.FieldNumbers { return emptyFieldNumbers }\nfunc (m PlaceholderMessage) ExtensionRanges() protoreflect.FieldRanges  { return emptyFieldRanges }\nfunc (m PlaceholderMessage) ExtensionRangeOptions(int) protoreflect.ProtoMessage {\n\tpanic(\"index out of range\")\n}\nfunc (m PlaceholderMessage) Messages() protoreflect.MessageDescriptors     { return emptyMessages }\nfunc (m PlaceholderMessage) Enums() protoreflect.EnumDescriptors           { return emptyEnums }\nfunc (m PlaceholderMessage) Extensions() protoreflect.ExtensionDescriptors { return emptyExtensions }\nfunc (m PlaceholderMessage) ProtoType(protoreflect.MessageDescriptor)      { return }\nfunc (m PlaceholderMessage) ProtoInternal(pragma.DoNotImplement)           { return }\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/filedesc/presence.go",
    "content": "// Copyright 2025 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage filedesc\n\nimport \"google.golang.org/protobuf/reflect/protoreflect\"\n\n// UsePresenceForField reports whether the presence bitmap should be used for\n// the specified field.\nfunc UsePresenceForField(fd protoreflect.FieldDescriptor) (usePresence, canBeLazy bool) {\n\tswitch {\n\tcase fd.ContainingOneof() != nil && !fd.ContainingOneof().IsSynthetic():\n\t\t// Oneof fields never use the presence bitmap.\n\t\t//\n\t\t// Synthetic oneofs are an exception: Those are used to implement proto3\n\t\t// optional fields and hence should follow non-oneof field semantics.\n\t\treturn false, false\n\n\tcase fd.IsMap():\n\t\t// Map-typed fields never use the presence bitmap.\n\t\treturn false, false\n\n\tcase fd.Kind() == protoreflect.MessageKind || fd.Kind() == protoreflect.GroupKind:\n\t\t// Lazy fields always use the presence bitmap (only messages can be lazy).\n\t\tisLazy := fd.(interface{ IsLazy() bool }).IsLazy()\n\t\treturn isLazy, isLazy\n\n\tdefault:\n\t\t// If the field has presence, use the presence bitmap.\n\t\treturn fd.HasPresence(), false\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/filetype/build.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package filetype provides functionality for wrapping descriptors\n// with Go type information.\npackage filetype\n\nimport (\n\t\"reflect\"\n\n\t\"google.golang.org/protobuf/internal/descopts\"\n\t\"google.golang.org/protobuf/internal/filedesc\"\n\tpimpl \"google.golang.org/protobuf/internal/impl\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n)\n\n// Builder constructs type descriptors from a raw file descriptor\n// and associated Go types for each enum and message declaration.\n//\n// # Flattened Ordering\n//\n// The protobuf type system represents declarations as a tree. Certain nodes in\n// the tree require us to either associate it with a concrete Go type or to\n// resolve a dependency, which is information that must be provided separately\n// since it cannot be derived from the file descriptor alone.\n//\n// However, representing a tree as Go literals is difficult to simply do in a\n// space and time efficient way. Thus, we store them as a flattened list of\n// objects where the serialization order from the tree-based form is important.\n//\n// The \"flattened ordering\" is defined as a tree traversal of all enum, message,\n// extension, and service declarations using the following algorithm:\n//\n//\tdef VisitFileDecls(fd):\n//\t\tfor e in fd.Enums:      yield e\n//\t\tfor m in fd.Messages:   yield m\n//\t\tfor x in fd.Extensions: yield x\n//\t\tfor s in fd.Services:   yield s\n//\t\tfor m in fd.Messages:   yield from VisitMessageDecls(m)\n//\n//\tdef VisitMessageDecls(md):\n//\t\tfor e in md.Enums:      yield e\n//\t\tfor m in md.Messages:   yield m\n//\t\tfor x in md.Extensions: yield x\n//\t\tfor m in md.Messages:   yield from VisitMessageDecls(m)\n//\n// The traversal starts at the root file descriptor and yields each direct\n// declaration within each node before traversing into sub-declarations\n// that children themselves may have.\ntype Builder struct {\n\t// File is the underlying file descriptor builder.\n\tFile filedesc.Builder\n\n\t// GoTypes is a unique set of the Go types for all declarations and\n\t// dependencies. Each type is represented as a zero value of the Go type.\n\t//\n\t// Declarations are Go types generated for enums and messages directly\n\t// declared (not publicly imported) in the proto source file.\n\t// Messages for map entries are accounted for, but represented by nil.\n\t// Enum declarations in \"flattened ordering\" come first, followed by\n\t// message declarations in \"flattened ordering\".\n\t//\n\t// Dependencies are Go types for enums or messages referenced by\n\t// message fields, for parent extended messages of\n\t// extension fields, for enums or messages referenced by extension fields,\n\t// and for input and output messages referenced by service methods.\n\t// Dependencies must come after declarations, but the ordering of\n\t// dependencies themselves is unspecified.\n\tGoTypes []any\n\n\t// DependencyIndexes is an ordered list of indexes into GoTypes for the\n\t// dependencies of messages, extensions, or services.\n\t//\n\t// There are 5 sub-lists in \"flattened ordering\" concatenated back-to-back:\n\t//\t0. Message field dependencies: list of the enum or message type\n\t//\treferred to by every message field.\n\t//\t1. Extension field targets: list of the extended parent message of\n\t//\tevery extension.\n\t//\t2. Extension field dependencies: list of the enum or message type\n\t//\treferred to by every extension field.\n\t//\t3. Service method inputs: list of the input message type\n\t//\treferred to by every service method.\n\t//\t4. Service method outputs: list of the output message type\n\t//\treferred to by every service method.\n\t//\n\t// The offset into DependencyIndexes for the start of each sub-list\n\t// is appended to the end in reverse order.\n\tDependencyIndexes []int32\n\n\t// EnumInfos is a list of enum infos in \"flattened ordering\".\n\tEnumInfos []pimpl.EnumInfo\n\n\t// MessageInfos is a list of message infos in \"flattened ordering\".\n\t// If provided, the GoType and PBType for each element is populated.\n\t//\n\t// Requirement: len(MessageInfos) == len(Build.Messages)\n\tMessageInfos []pimpl.MessageInfo\n\n\t// ExtensionInfos is a list of extension infos in \"flattened ordering\".\n\t// Each element is initialized and registered with the protoregistry package.\n\t//\n\t// Requirement: len(LegacyExtensions) == len(Build.Extensions)\n\tExtensionInfos []pimpl.ExtensionInfo\n\n\t// TypeRegistry is the registry to register each type descriptor.\n\t// If nil, it uses protoregistry.GlobalTypes.\n\tTypeRegistry interface {\n\t\tRegisterMessage(protoreflect.MessageType) error\n\t\tRegisterEnum(protoreflect.EnumType) error\n\t\tRegisterExtension(protoreflect.ExtensionType) error\n\t}\n}\n\n// Out is the output of the builder.\ntype Out struct {\n\tFile protoreflect.FileDescriptor\n}\n\nfunc (tb Builder) Build() (out Out) {\n\t// Replace the resolver with one that resolves dependencies by index,\n\t// which is faster and more reliable than relying on the global registry.\n\tif tb.File.FileRegistry == nil {\n\t\ttb.File.FileRegistry = protoregistry.GlobalFiles\n\t}\n\ttb.File.FileRegistry = &resolverByIndex{\n\t\tgoTypes:      tb.GoTypes,\n\t\tdepIdxs:      tb.DependencyIndexes,\n\t\tfileRegistry: tb.File.FileRegistry,\n\t}\n\n\t// Initialize registry if unpopulated.\n\tif tb.TypeRegistry == nil {\n\t\ttb.TypeRegistry = protoregistry.GlobalTypes\n\t}\n\n\tfbOut := tb.File.Build()\n\tout.File = fbOut.File\n\n\t// Process enums.\n\tenumGoTypes := tb.GoTypes[:len(fbOut.Enums)]\n\tif len(tb.EnumInfos) != len(fbOut.Enums) {\n\t\tpanic(\"mismatching enum lengths\")\n\t}\n\tif len(fbOut.Enums) > 0 {\n\t\tfor i := range fbOut.Enums {\n\t\t\ttb.EnumInfos[i] = pimpl.EnumInfo{\n\t\t\t\tGoReflectType: reflect.TypeOf(enumGoTypes[i]),\n\t\t\t\tDesc:          &fbOut.Enums[i],\n\t\t\t}\n\t\t\t// Register enum types.\n\t\t\tif err := tb.TypeRegistry.RegisterEnum(&tb.EnumInfos[i]); err != nil {\n\t\t\t\tpanic(err)\n\t\t\t}\n\t\t}\n\t}\n\n\t// Process messages.\n\tmessageGoTypes := tb.GoTypes[len(fbOut.Enums):][:len(fbOut.Messages)]\n\tif len(tb.MessageInfos) != len(fbOut.Messages) {\n\t\tpanic(\"mismatching message lengths\")\n\t}\n\tif len(fbOut.Messages) > 0 {\n\t\tfor i := range fbOut.Messages {\n\t\t\tif messageGoTypes[i] == nil {\n\t\t\t\tcontinue // skip map entry\n\t\t\t}\n\n\t\t\ttb.MessageInfos[i].GoReflectType = reflect.TypeOf(messageGoTypes[i])\n\t\t\ttb.MessageInfos[i].Desc = &fbOut.Messages[i]\n\n\t\t\t// Register message types.\n\t\t\tif err := tb.TypeRegistry.RegisterMessage(&tb.MessageInfos[i]); err != nil {\n\t\t\t\tpanic(err)\n\t\t\t}\n\t\t}\n\n\t\t// As a special-case for descriptor.proto,\n\t\t// locally register concrete message type for the options.\n\t\tif out.File.Path() == \"google/protobuf/descriptor.proto\" && out.File.Package() == \"google.protobuf\" {\n\t\t\tfor i := range fbOut.Messages {\n\t\t\t\tswitch fbOut.Messages[i].Name() {\n\t\t\t\tcase \"FileOptions\":\n\t\t\t\t\tdescopts.File = messageGoTypes[i].(protoreflect.ProtoMessage)\n\t\t\t\tcase \"EnumOptions\":\n\t\t\t\t\tdescopts.Enum = messageGoTypes[i].(protoreflect.ProtoMessage)\n\t\t\t\tcase \"EnumValueOptions\":\n\t\t\t\t\tdescopts.EnumValue = messageGoTypes[i].(protoreflect.ProtoMessage)\n\t\t\t\tcase \"MessageOptions\":\n\t\t\t\t\tdescopts.Message = messageGoTypes[i].(protoreflect.ProtoMessage)\n\t\t\t\tcase \"FieldOptions\":\n\t\t\t\t\tdescopts.Field = messageGoTypes[i].(protoreflect.ProtoMessage)\n\t\t\t\tcase \"OneofOptions\":\n\t\t\t\t\tdescopts.Oneof = messageGoTypes[i].(protoreflect.ProtoMessage)\n\t\t\t\tcase \"ExtensionRangeOptions\":\n\t\t\t\t\tdescopts.ExtensionRange = messageGoTypes[i].(protoreflect.ProtoMessage)\n\t\t\t\tcase \"ServiceOptions\":\n\t\t\t\t\tdescopts.Service = messageGoTypes[i].(protoreflect.ProtoMessage)\n\t\t\t\tcase \"MethodOptions\":\n\t\t\t\t\tdescopts.Method = messageGoTypes[i].(protoreflect.ProtoMessage)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Process extensions.\n\tif len(tb.ExtensionInfos) != len(fbOut.Extensions) {\n\t\tpanic(\"mismatching extension lengths\")\n\t}\n\tvar depIdx int32\n\tfor i := range fbOut.Extensions {\n\t\t// For enum and message kinds, determine the referent Go type so\n\t\t// that we can construct their constructors.\n\t\tconst listExtDeps = 2\n\t\tvar goType reflect.Type\n\t\tswitch fbOut.Extensions[i].L1.Kind {\n\t\tcase protoreflect.EnumKind:\n\t\t\tj := depIdxs.Get(tb.DependencyIndexes, listExtDeps, depIdx)\n\t\t\tgoType = reflect.TypeOf(tb.GoTypes[j])\n\t\t\tdepIdx++\n\t\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\t\tj := depIdxs.Get(tb.DependencyIndexes, listExtDeps, depIdx)\n\t\t\tgoType = reflect.TypeOf(tb.GoTypes[j])\n\t\t\tdepIdx++\n\t\tdefault:\n\t\t\tgoType = goTypeForPBKind[fbOut.Extensions[i].L1.Kind]\n\t\t}\n\t\tif fbOut.Extensions[i].IsList() {\n\t\t\tgoType = reflect.SliceOf(goType)\n\t\t}\n\n\t\tpimpl.InitExtensionInfo(&tb.ExtensionInfos[i], &fbOut.Extensions[i], goType)\n\n\t\t// Register extension types.\n\t\tif err := tb.TypeRegistry.RegisterExtension(&tb.ExtensionInfos[i]); err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t}\n\n\treturn out\n}\n\nvar goTypeForPBKind = map[protoreflect.Kind]reflect.Type{\n\tprotoreflect.BoolKind:     reflect.TypeOf(bool(false)),\n\tprotoreflect.Int32Kind:    reflect.TypeOf(int32(0)),\n\tprotoreflect.Sint32Kind:   reflect.TypeOf(int32(0)),\n\tprotoreflect.Sfixed32Kind: reflect.TypeOf(int32(0)),\n\tprotoreflect.Int64Kind:    reflect.TypeOf(int64(0)),\n\tprotoreflect.Sint64Kind:   reflect.TypeOf(int64(0)),\n\tprotoreflect.Sfixed64Kind: reflect.TypeOf(int64(0)),\n\tprotoreflect.Uint32Kind:   reflect.TypeOf(uint32(0)),\n\tprotoreflect.Fixed32Kind:  reflect.TypeOf(uint32(0)),\n\tprotoreflect.Uint64Kind:   reflect.TypeOf(uint64(0)),\n\tprotoreflect.Fixed64Kind:  reflect.TypeOf(uint64(0)),\n\tprotoreflect.FloatKind:    reflect.TypeOf(float32(0)),\n\tprotoreflect.DoubleKind:   reflect.TypeOf(float64(0)),\n\tprotoreflect.StringKind:   reflect.TypeOf(string(\"\")),\n\tprotoreflect.BytesKind:    reflect.TypeOf([]byte(nil)),\n}\n\ntype depIdxs []int32\n\n// Get retrieves the jth element of the ith sub-list.\nfunc (x depIdxs) Get(i, j int32) int32 {\n\treturn x[x[int32(len(x))-i-1]+j]\n}\n\ntype (\n\tresolverByIndex struct {\n\t\tgoTypes []any\n\t\tdepIdxs depIdxs\n\t\tfileRegistry\n\t}\n\tfileRegistry interface {\n\t\tFindFileByPath(string) (protoreflect.FileDescriptor, error)\n\t\tFindDescriptorByName(protoreflect.FullName) (protoreflect.Descriptor, error)\n\t\tRegisterFile(protoreflect.FileDescriptor) error\n\t}\n)\n\nfunc (r *resolverByIndex) FindEnumByIndex(i, j int32, es []filedesc.Enum, ms []filedesc.Message) protoreflect.EnumDescriptor {\n\tif depIdx := int(r.depIdxs.Get(i, j)); int(depIdx) < len(es)+len(ms) {\n\t\treturn &es[depIdx]\n\t} else {\n\t\treturn pimpl.Export{}.EnumDescriptorOf(r.goTypes[depIdx])\n\t}\n}\n\nfunc (r *resolverByIndex) FindMessageByIndex(i, j int32, es []filedesc.Enum, ms []filedesc.Message) protoreflect.MessageDescriptor {\n\tif depIdx := int(r.depIdxs.Get(i, j)); depIdx < len(es)+len(ms) {\n\t\treturn &ms[depIdx-len(es)]\n\t} else {\n\t\treturn pimpl.Export{}.MessageDescriptorOf(r.goTypes[depIdx])\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/flags/flags.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package flags provides a set of flags controlled by build tags.\npackage flags\n\n// ProtoLegacy specifies whether to enable support for legacy functionality\n// such as MessageSets, and various other obscure behavior\n// that is necessary to maintain backwards compatibility with proto1 or\n// the pre-release variants of proto2 and proto3.\n//\n// This is disabled by default unless built with the \"protolegacy\" tag.\n//\n// WARNING: The compatibility agreement covers nothing provided by this flag.\n// As such, functionality may suddenly be removed or changed at our discretion.\nconst ProtoLegacy = protoLegacy\n\n// LazyUnmarshalExtensions specifies whether to lazily unmarshal extensions.\n//\n// Lazy extension unmarshaling validates the contents of message-valued\n// extension fields at unmarshal time, but defers creating the message\n// structure until the extension is first accessed.\nconst LazyUnmarshalExtensions = ProtoLegacy\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/flags/proto_legacy_disable.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build !protolegacy\n// +build !protolegacy\n\npackage flags\n\nconst protoLegacy = false\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/flags/proto_legacy_enable.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build protolegacy\n// +build protolegacy\n\npackage flags\n\nconst protoLegacy = true\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/genid/any_gen.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-protos. DO NOT EDIT.\n\npackage genid\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nconst File_google_protobuf_any_proto = \"google/protobuf/any.proto\"\n\n// Names for google.protobuf.Any.\nconst (\n\tAny_message_name     protoreflect.Name     = \"Any\"\n\tAny_message_fullname protoreflect.FullName = \"google.protobuf.Any\"\n)\n\n// Field names for google.protobuf.Any.\nconst (\n\tAny_TypeUrl_field_name protoreflect.Name = \"type_url\"\n\tAny_Value_field_name   protoreflect.Name = \"value\"\n\n\tAny_TypeUrl_field_fullname protoreflect.FullName = \"google.protobuf.Any.type_url\"\n\tAny_Value_field_fullname   protoreflect.FullName = \"google.protobuf.Any.value\"\n)\n\n// Field numbers for google.protobuf.Any.\nconst (\n\tAny_TypeUrl_field_number protoreflect.FieldNumber = 1\n\tAny_Value_field_number   protoreflect.FieldNumber = 2\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/genid/api_gen.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-protos. DO NOT EDIT.\n\npackage genid\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nconst File_google_protobuf_api_proto = \"google/protobuf/api.proto\"\n\n// Names for google.protobuf.Api.\nconst (\n\tApi_message_name     protoreflect.Name     = \"Api\"\n\tApi_message_fullname protoreflect.FullName = \"google.protobuf.Api\"\n)\n\n// Field names for google.protobuf.Api.\nconst (\n\tApi_Name_field_name          protoreflect.Name = \"name\"\n\tApi_Methods_field_name       protoreflect.Name = \"methods\"\n\tApi_Options_field_name       protoreflect.Name = \"options\"\n\tApi_Version_field_name       protoreflect.Name = \"version\"\n\tApi_SourceContext_field_name protoreflect.Name = \"source_context\"\n\tApi_Mixins_field_name        protoreflect.Name = \"mixins\"\n\tApi_Syntax_field_name        protoreflect.Name = \"syntax\"\n\tApi_Edition_field_name       protoreflect.Name = \"edition\"\n\n\tApi_Name_field_fullname          protoreflect.FullName = \"google.protobuf.Api.name\"\n\tApi_Methods_field_fullname       protoreflect.FullName = \"google.protobuf.Api.methods\"\n\tApi_Options_field_fullname       protoreflect.FullName = \"google.protobuf.Api.options\"\n\tApi_Version_field_fullname       protoreflect.FullName = \"google.protobuf.Api.version\"\n\tApi_SourceContext_field_fullname protoreflect.FullName = \"google.protobuf.Api.source_context\"\n\tApi_Mixins_field_fullname        protoreflect.FullName = \"google.protobuf.Api.mixins\"\n\tApi_Syntax_field_fullname        protoreflect.FullName = \"google.protobuf.Api.syntax\"\n\tApi_Edition_field_fullname       protoreflect.FullName = \"google.protobuf.Api.edition\"\n)\n\n// Field numbers for google.protobuf.Api.\nconst (\n\tApi_Name_field_number          protoreflect.FieldNumber = 1\n\tApi_Methods_field_number       protoreflect.FieldNumber = 2\n\tApi_Options_field_number       protoreflect.FieldNumber = 3\n\tApi_Version_field_number       protoreflect.FieldNumber = 4\n\tApi_SourceContext_field_number protoreflect.FieldNumber = 5\n\tApi_Mixins_field_number        protoreflect.FieldNumber = 6\n\tApi_Syntax_field_number        protoreflect.FieldNumber = 7\n\tApi_Edition_field_number       protoreflect.FieldNumber = 8\n)\n\n// Names for google.protobuf.Method.\nconst (\n\tMethod_message_name     protoreflect.Name     = \"Method\"\n\tMethod_message_fullname protoreflect.FullName = \"google.protobuf.Method\"\n)\n\n// Field names for google.protobuf.Method.\nconst (\n\tMethod_Name_field_name              protoreflect.Name = \"name\"\n\tMethod_RequestTypeUrl_field_name    protoreflect.Name = \"request_type_url\"\n\tMethod_RequestStreaming_field_name  protoreflect.Name = \"request_streaming\"\n\tMethod_ResponseTypeUrl_field_name   protoreflect.Name = \"response_type_url\"\n\tMethod_ResponseStreaming_field_name protoreflect.Name = \"response_streaming\"\n\tMethod_Options_field_name           protoreflect.Name = \"options\"\n\tMethod_Syntax_field_name            protoreflect.Name = \"syntax\"\n\tMethod_Edition_field_name           protoreflect.Name = \"edition\"\n\n\tMethod_Name_field_fullname              protoreflect.FullName = \"google.protobuf.Method.name\"\n\tMethod_RequestTypeUrl_field_fullname    protoreflect.FullName = \"google.protobuf.Method.request_type_url\"\n\tMethod_RequestStreaming_field_fullname  protoreflect.FullName = \"google.protobuf.Method.request_streaming\"\n\tMethod_ResponseTypeUrl_field_fullname   protoreflect.FullName = \"google.protobuf.Method.response_type_url\"\n\tMethod_ResponseStreaming_field_fullname protoreflect.FullName = \"google.protobuf.Method.response_streaming\"\n\tMethod_Options_field_fullname           protoreflect.FullName = \"google.protobuf.Method.options\"\n\tMethod_Syntax_field_fullname            protoreflect.FullName = \"google.protobuf.Method.syntax\"\n\tMethod_Edition_field_fullname           protoreflect.FullName = \"google.protobuf.Method.edition\"\n)\n\n// Field numbers for google.protobuf.Method.\nconst (\n\tMethod_Name_field_number              protoreflect.FieldNumber = 1\n\tMethod_RequestTypeUrl_field_number    protoreflect.FieldNumber = 2\n\tMethod_RequestStreaming_field_number  protoreflect.FieldNumber = 3\n\tMethod_ResponseTypeUrl_field_number   protoreflect.FieldNumber = 4\n\tMethod_ResponseStreaming_field_number protoreflect.FieldNumber = 5\n\tMethod_Options_field_number           protoreflect.FieldNumber = 6\n\tMethod_Syntax_field_number            protoreflect.FieldNumber = 7\n\tMethod_Edition_field_number           protoreflect.FieldNumber = 8\n)\n\n// Names for google.protobuf.Mixin.\nconst (\n\tMixin_message_name     protoreflect.Name     = \"Mixin\"\n\tMixin_message_fullname protoreflect.FullName = \"google.protobuf.Mixin\"\n)\n\n// Field names for google.protobuf.Mixin.\nconst (\n\tMixin_Name_field_name protoreflect.Name = \"name\"\n\tMixin_Root_field_name protoreflect.Name = \"root\"\n\n\tMixin_Name_field_fullname protoreflect.FullName = \"google.protobuf.Mixin.name\"\n\tMixin_Root_field_fullname protoreflect.FullName = \"google.protobuf.Mixin.root\"\n)\n\n// Field numbers for google.protobuf.Mixin.\nconst (\n\tMixin_Name_field_number protoreflect.FieldNumber = 1\n\tMixin_Root_field_number protoreflect.FieldNumber = 2\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-protos. DO NOT EDIT.\n\npackage genid\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nconst File_google_protobuf_descriptor_proto = \"google/protobuf/descriptor.proto\"\n\n// Full and short names for google.protobuf.Edition.\nconst (\n\tEdition_enum_fullname = \"google.protobuf.Edition\"\n\tEdition_enum_name     = \"Edition\"\n)\n\n// Enum values for google.protobuf.Edition.\nconst (\n\tEdition_EDITION_UNKNOWN_enum_value         = 0\n\tEdition_EDITION_LEGACY_enum_value          = 900\n\tEdition_EDITION_PROTO2_enum_value          = 998\n\tEdition_EDITION_PROTO3_enum_value          = 999\n\tEdition_EDITION_2023_enum_value            = 1000\n\tEdition_EDITION_2024_enum_value            = 1001\n\tEdition_EDITION_1_TEST_ONLY_enum_value     = 1\n\tEdition_EDITION_2_TEST_ONLY_enum_value     = 2\n\tEdition_EDITION_99997_TEST_ONLY_enum_value = 99997\n\tEdition_EDITION_99998_TEST_ONLY_enum_value = 99998\n\tEdition_EDITION_99999_TEST_ONLY_enum_value = 99999\n\tEdition_EDITION_MAX_enum_value             = 2147483647\n)\n\n// Full and short names for google.protobuf.SymbolVisibility.\nconst (\n\tSymbolVisibility_enum_fullname = \"google.protobuf.SymbolVisibility\"\n\tSymbolVisibility_enum_name     = \"SymbolVisibility\"\n)\n\n// Enum values for google.protobuf.SymbolVisibility.\nconst (\n\tSymbolVisibility_VISIBILITY_UNSET_enum_value  = 0\n\tSymbolVisibility_VISIBILITY_LOCAL_enum_value  = 1\n\tSymbolVisibility_VISIBILITY_EXPORT_enum_value = 2\n)\n\n// Names for google.protobuf.FileDescriptorSet.\nconst (\n\tFileDescriptorSet_message_name     protoreflect.Name     = \"FileDescriptorSet\"\n\tFileDescriptorSet_message_fullname protoreflect.FullName = \"google.protobuf.FileDescriptorSet\"\n)\n\n// Field names for google.protobuf.FileDescriptorSet.\nconst (\n\tFileDescriptorSet_File_field_name protoreflect.Name = \"file\"\n\n\tFileDescriptorSet_File_field_fullname protoreflect.FullName = \"google.protobuf.FileDescriptorSet.file\"\n)\n\n// Field numbers for google.protobuf.FileDescriptorSet.\nconst (\n\tFileDescriptorSet_File_field_number protoreflect.FieldNumber = 1\n)\n\n// Names for google.protobuf.FileDescriptorProto.\nconst (\n\tFileDescriptorProto_message_name     protoreflect.Name     = \"FileDescriptorProto\"\n\tFileDescriptorProto_message_fullname protoreflect.FullName = \"google.protobuf.FileDescriptorProto\"\n)\n\n// Field names for google.protobuf.FileDescriptorProto.\nconst (\n\tFileDescriptorProto_Name_field_name             protoreflect.Name = \"name\"\n\tFileDescriptorProto_Package_field_name          protoreflect.Name = \"package\"\n\tFileDescriptorProto_Dependency_field_name       protoreflect.Name = \"dependency\"\n\tFileDescriptorProto_PublicDependency_field_name protoreflect.Name = \"public_dependency\"\n\tFileDescriptorProto_WeakDependency_field_name   protoreflect.Name = \"weak_dependency\"\n\tFileDescriptorProto_OptionDependency_field_name protoreflect.Name = \"option_dependency\"\n\tFileDescriptorProto_MessageType_field_name      protoreflect.Name = \"message_type\"\n\tFileDescriptorProto_EnumType_field_name         protoreflect.Name = \"enum_type\"\n\tFileDescriptorProto_Service_field_name          protoreflect.Name = \"service\"\n\tFileDescriptorProto_Extension_field_name        protoreflect.Name = \"extension\"\n\tFileDescriptorProto_Options_field_name          protoreflect.Name = \"options\"\n\tFileDescriptorProto_SourceCodeInfo_field_name   protoreflect.Name = \"source_code_info\"\n\tFileDescriptorProto_Syntax_field_name           protoreflect.Name = \"syntax\"\n\tFileDescriptorProto_Edition_field_name          protoreflect.Name = \"edition\"\n\n\tFileDescriptorProto_Name_field_fullname             protoreflect.FullName = \"google.protobuf.FileDescriptorProto.name\"\n\tFileDescriptorProto_Package_field_fullname          protoreflect.FullName = \"google.protobuf.FileDescriptorProto.package\"\n\tFileDescriptorProto_Dependency_field_fullname       protoreflect.FullName = \"google.protobuf.FileDescriptorProto.dependency\"\n\tFileDescriptorProto_PublicDependency_field_fullname protoreflect.FullName = \"google.protobuf.FileDescriptorProto.public_dependency\"\n\tFileDescriptorProto_WeakDependency_field_fullname   protoreflect.FullName = \"google.protobuf.FileDescriptorProto.weak_dependency\"\n\tFileDescriptorProto_OptionDependency_field_fullname protoreflect.FullName = \"google.protobuf.FileDescriptorProto.option_dependency\"\n\tFileDescriptorProto_MessageType_field_fullname      protoreflect.FullName = \"google.protobuf.FileDescriptorProto.message_type\"\n\tFileDescriptorProto_EnumType_field_fullname         protoreflect.FullName = \"google.protobuf.FileDescriptorProto.enum_type\"\n\tFileDescriptorProto_Service_field_fullname          protoreflect.FullName = \"google.protobuf.FileDescriptorProto.service\"\n\tFileDescriptorProto_Extension_field_fullname        protoreflect.FullName = \"google.protobuf.FileDescriptorProto.extension\"\n\tFileDescriptorProto_Options_field_fullname          protoreflect.FullName = \"google.protobuf.FileDescriptorProto.options\"\n\tFileDescriptorProto_SourceCodeInfo_field_fullname   protoreflect.FullName = \"google.protobuf.FileDescriptorProto.source_code_info\"\n\tFileDescriptorProto_Syntax_field_fullname           protoreflect.FullName = \"google.protobuf.FileDescriptorProto.syntax\"\n\tFileDescriptorProto_Edition_field_fullname          protoreflect.FullName = \"google.protobuf.FileDescriptorProto.edition\"\n)\n\n// Field numbers for google.protobuf.FileDescriptorProto.\nconst (\n\tFileDescriptorProto_Name_field_number             protoreflect.FieldNumber = 1\n\tFileDescriptorProto_Package_field_number          protoreflect.FieldNumber = 2\n\tFileDescriptorProto_Dependency_field_number       protoreflect.FieldNumber = 3\n\tFileDescriptorProto_PublicDependency_field_number protoreflect.FieldNumber = 10\n\tFileDescriptorProto_WeakDependency_field_number   protoreflect.FieldNumber = 11\n\tFileDescriptorProto_OptionDependency_field_number protoreflect.FieldNumber = 15\n\tFileDescriptorProto_MessageType_field_number      protoreflect.FieldNumber = 4\n\tFileDescriptorProto_EnumType_field_number         protoreflect.FieldNumber = 5\n\tFileDescriptorProto_Service_field_number          protoreflect.FieldNumber = 6\n\tFileDescriptorProto_Extension_field_number        protoreflect.FieldNumber = 7\n\tFileDescriptorProto_Options_field_number          protoreflect.FieldNumber = 8\n\tFileDescriptorProto_SourceCodeInfo_field_number   protoreflect.FieldNumber = 9\n\tFileDescriptorProto_Syntax_field_number           protoreflect.FieldNumber = 12\n\tFileDescriptorProto_Edition_field_number          protoreflect.FieldNumber = 14\n)\n\n// Names for google.protobuf.DescriptorProto.\nconst (\n\tDescriptorProto_message_name     protoreflect.Name     = \"DescriptorProto\"\n\tDescriptorProto_message_fullname protoreflect.FullName = \"google.protobuf.DescriptorProto\"\n)\n\n// Field names for google.protobuf.DescriptorProto.\nconst (\n\tDescriptorProto_Name_field_name           protoreflect.Name = \"name\"\n\tDescriptorProto_Field_field_name          protoreflect.Name = \"field\"\n\tDescriptorProto_Extension_field_name      protoreflect.Name = \"extension\"\n\tDescriptorProto_NestedType_field_name     protoreflect.Name = \"nested_type\"\n\tDescriptorProto_EnumType_field_name       protoreflect.Name = \"enum_type\"\n\tDescriptorProto_ExtensionRange_field_name protoreflect.Name = \"extension_range\"\n\tDescriptorProto_OneofDecl_field_name      protoreflect.Name = \"oneof_decl\"\n\tDescriptorProto_Options_field_name        protoreflect.Name = \"options\"\n\tDescriptorProto_ReservedRange_field_name  protoreflect.Name = \"reserved_range\"\n\tDescriptorProto_ReservedName_field_name   protoreflect.Name = \"reserved_name\"\n\tDescriptorProto_Visibility_field_name     protoreflect.Name = \"visibility\"\n\n\tDescriptorProto_Name_field_fullname           protoreflect.FullName = \"google.protobuf.DescriptorProto.name\"\n\tDescriptorProto_Field_field_fullname          protoreflect.FullName = \"google.protobuf.DescriptorProto.field\"\n\tDescriptorProto_Extension_field_fullname      protoreflect.FullName = \"google.protobuf.DescriptorProto.extension\"\n\tDescriptorProto_NestedType_field_fullname     protoreflect.FullName = \"google.protobuf.DescriptorProto.nested_type\"\n\tDescriptorProto_EnumType_field_fullname       protoreflect.FullName = \"google.protobuf.DescriptorProto.enum_type\"\n\tDescriptorProto_ExtensionRange_field_fullname protoreflect.FullName = \"google.protobuf.DescriptorProto.extension_range\"\n\tDescriptorProto_OneofDecl_field_fullname      protoreflect.FullName = \"google.protobuf.DescriptorProto.oneof_decl\"\n\tDescriptorProto_Options_field_fullname        protoreflect.FullName = \"google.protobuf.DescriptorProto.options\"\n\tDescriptorProto_ReservedRange_field_fullname  protoreflect.FullName = \"google.protobuf.DescriptorProto.reserved_range\"\n\tDescriptorProto_ReservedName_field_fullname   protoreflect.FullName = \"google.protobuf.DescriptorProto.reserved_name\"\n\tDescriptorProto_Visibility_field_fullname     protoreflect.FullName = \"google.protobuf.DescriptorProto.visibility\"\n)\n\n// Field numbers for google.protobuf.DescriptorProto.\nconst (\n\tDescriptorProto_Name_field_number           protoreflect.FieldNumber = 1\n\tDescriptorProto_Field_field_number          protoreflect.FieldNumber = 2\n\tDescriptorProto_Extension_field_number      protoreflect.FieldNumber = 6\n\tDescriptorProto_NestedType_field_number     protoreflect.FieldNumber = 3\n\tDescriptorProto_EnumType_field_number       protoreflect.FieldNumber = 4\n\tDescriptorProto_ExtensionRange_field_number protoreflect.FieldNumber = 5\n\tDescriptorProto_OneofDecl_field_number      protoreflect.FieldNumber = 8\n\tDescriptorProto_Options_field_number        protoreflect.FieldNumber = 7\n\tDescriptorProto_ReservedRange_field_number  protoreflect.FieldNumber = 9\n\tDescriptorProto_ReservedName_field_number   protoreflect.FieldNumber = 10\n\tDescriptorProto_Visibility_field_number     protoreflect.FieldNumber = 11\n)\n\n// Names for google.protobuf.DescriptorProto.ExtensionRange.\nconst (\n\tDescriptorProto_ExtensionRange_message_name     protoreflect.Name     = \"ExtensionRange\"\n\tDescriptorProto_ExtensionRange_message_fullname protoreflect.FullName = \"google.protobuf.DescriptorProto.ExtensionRange\"\n)\n\n// Field names for google.protobuf.DescriptorProto.ExtensionRange.\nconst (\n\tDescriptorProto_ExtensionRange_Start_field_name   protoreflect.Name = \"start\"\n\tDescriptorProto_ExtensionRange_End_field_name     protoreflect.Name = \"end\"\n\tDescriptorProto_ExtensionRange_Options_field_name protoreflect.Name = \"options\"\n\n\tDescriptorProto_ExtensionRange_Start_field_fullname   protoreflect.FullName = \"google.protobuf.DescriptorProto.ExtensionRange.start\"\n\tDescriptorProto_ExtensionRange_End_field_fullname     protoreflect.FullName = \"google.protobuf.DescriptorProto.ExtensionRange.end\"\n\tDescriptorProto_ExtensionRange_Options_field_fullname protoreflect.FullName = \"google.protobuf.DescriptorProto.ExtensionRange.options\"\n)\n\n// Field numbers for google.protobuf.DescriptorProto.ExtensionRange.\nconst (\n\tDescriptorProto_ExtensionRange_Start_field_number   protoreflect.FieldNumber = 1\n\tDescriptorProto_ExtensionRange_End_field_number     protoreflect.FieldNumber = 2\n\tDescriptorProto_ExtensionRange_Options_field_number protoreflect.FieldNumber = 3\n)\n\n// Names for google.protobuf.DescriptorProto.ReservedRange.\nconst (\n\tDescriptorProto_ReservedRange_message_name     protoreflect.Name     = \"ReservedRange\"\n\tDescriptorProto_ReservedRange_message_fullname protoreflect.FullName = \"google.protobuf.DescriptorProto.ReservedRange\"\n)\n\n// Field names for google.protobuf.DescriptorProto.ReservedRange.\nconst (\n\tDescriptorProto_ReservedRange_Start_field_name protoreflect.Name = \"start\"\n\tDescriptorProto_ReservedRange_End_field_name   protoreflect.Name = \"end\"\n\n\tDescriptorProto_ReservedRange_Start_field_fullname protoreflect.FullName = \"google.protobuf.DescriptorProto.ReservedRange.start\"\n\tDescriptorProto_ReservedRange_End_field_fullname   protoreflect.FullName = \"google.protobuf.DescriptorProto.ReservedRange.end\"\n)\n\n// Field numbers for google.protobuf.DescriptorProto.ReservedRange.\nconst (\n\tDescriptorProto_ReservedRange_Start_field_number protoreflect.FieldNumber = 1\n\tDescriptorProto_ReservedRange_End_field_number   protoreflect.FieldNumber = 2\n)\n\n// Names for google.protobuf.ExtensionRangeOptions.\nconst (\n\tExtensionRangeOptions_message_name     protoreflect.Name     = \"ExtensionRangeOptions\"\n\tExtensionRangeOptions_message_fullname protoreflect.FullName = \"google.protobuf.ExtensionRangeOptions\"\n)\n\n// Field names for google.protobuf.ExtensionRangeOptions.\nconst (\n\tExtensionRangeOptions_UninterpretedOption_field_name protoreflect.Name = \"uninterpreted_option\"\n\tExtensionRangeOptions_Declaration_field_name         protoreflect.Name = \"declaration\"\n\tExtensionRangeOptions_Features_field_name            protoreflect.Name = \"features\"\n\tExtensionRangeOptions_Verification_field_name        protoreflect.Name = \"verification\"\n\n\tExtensionRangeOptions_UninterpretedOption_field_fullname protoreflect.FullName = \"google.protobuf.ExtensionRangeOptions.uninterpreted_option\"\n\tExtensionRangeOptions_Declaration_field_fullname         protoreflect.FullName = \"google.protobuf.ExtensionRangeOptions.declaration\"\n\tExtensionRangeOptions_Features_field_fullname            protoreflect.FullName = \"google.protobuf.ExtensionRangeOptions.features\"\n\tExtensionRangeOptions_Verification_field_fullname        protoreflect.FullName = \"google.protobuf.ExtensionRangeOptions.verification\"\n)\n\n// Field numbers for google.protobuf.ExtensionRangeOptions.\nconst (\n\tExtensionRangeOptions_UninterpretedOption_field_number protoreflect.FieldNumber = 999\n\tExtensionRangeOptions_Declaration_field_number         protoreflect.FieldNumber = 2\n\tExtensionRangeOptions_Features_field_number            protoreflect.FieldNumber = 50\n\tExtensionRangeOptions_Verification_field_number        protoreflect.FieldNumber = 3\n)\n\n// Full and short names for google.protobuf.ExtensionRangeOptions.VerificationState.\nconst (\n\tExtensionRangeOptions_VerificationState_enum_fullname = \"google.protobuf.ExtensionRangeOptions.VerificationState\"\n\tExtensionRangeOptions_VerificationState_enum_name     = \"VerificationState\"\n)\n\n// Enum values for google.protobuf.ExtensionRangeOptions.VerificationState.\nconst (\n\tExtensionRangeOptions_DECLARATION_enum_value = 0\n\tExtensionRangeOptions_UNVERIFIED_enum_value  = 1\n)\n\n// Names for google.protobuf.ExtensionRangeOptions.Declaration.\nconst (\n\tExtensionRangeOptions_Declaration_message_name     protoreflect.Name     = \"Declaration\"\n\tExtensionRangeOptions_Declaration_message_fullname protoreflect.FullName = \"google.protobuf.ExtensionRangeOptions.Declaration\"\n)\n\n// Field names for google.protobuf.ExtensionRangeOptions.Declaration.\nconst (\n\tExtensionRangeOptions_Declaration_Number_field_name   protoreflect.Name = \"number\"\n\tExtensionRangeOptions_Declaration_FullName_field_name protoreflect.Name = \"full_name\"\n\tExtensionRangeOptions_Declaration_Type_field_name     protoreflect.Name = \"type\"\n\tExtensionRangeOptions_Declaration_Reserved_field_name protoreflect.Name = \"reserved\"\n\tExtensionRangeOptions_Declaration_Repeated_field_name protoreflect.Name = \"repeated\"\n\n\tExtensionRangeOptions_Declaration_Number_field_fullname   protoreflect.FullName = \"google.protobuf.ExtensionRangeOptions.Declaration.number\"\n\tExtensionRangeOptions_Declaration_FullName_field_fullname protoreflect.FullName = \"google.protobuf.ExtensionRangeOptions.Declaration.full_name\"\n\tExtensionRangeOptions_Declaration_Type_field_fullname     protoreflect.FullName = \"google.protobuf.ExtensionRangeOptions.Declaration.type\"\n\tExtensionRangeOptions_Declaration_Reserved_field_fullname protoreflect.FullName = \"google.protobuf.ExtensionRangeOptions.Declaration.reserved\"\n\tExtensionRangeOptions_Declaration_Repeated_field_fullname protoreflect.FullName = \"google.protobuf.ExtensionRangeOptions.Declaration.repeated\"\n)\n\n// Field numbers for google.protobuf.ExtensionRangeOptions.Declaration.\nconst (\n\tExtensionRangeOptions_Declaration_Number_field_number   protoreflect.FieldNumber = 1\n\tExtensionRangeOptions_Declaration_FullName_field_number protoreflect.FieldNumber = 2\n\tExtensionRangeOptions_Declaration_Type_field_number     protoreflect.FieldNumber = 3\n\tExtensionRangeOptions_Declaration_Reserved_field_number protoreflect.FieldNumber = 5\n\tExtensionRangeOptions_Declaration_Repeated_field_number protoreflect.FieldNumber = 6\n)\n\n// Names for google.protobuf.FieldDescriptorProto.\nconst (\n\tFieldDescriptorProto_message_name     protoreflect.Name     = \"FieldDescriptorProto\"\n\tFieldDescriptorProto_message_fullname protoreflect.FullName = \"google.protobuf.FieldDescriptorProto\"\n)\n\n// Field names for google.protobuf.FieldDescriptorProto.\nconst (\n\tFieldDescriptorProto_Name_field_name           protoreflect.Name = \"name\"\n\tFieldDescriptorProto_Number_field_name         protoreflect.Name = \"number\"\n\tFieldDescriptorProto_Label_field_name          protoreflect.Name = \"label\"\n\tFieldDescriptorProto_Type_field_name           protoreflect.Name = \"type\"\n\tFieldDescriptorProto_TypeName_field_name       protoreflect.Name = \"type_name\"\n\tFieldDescriptorProto_Extendee_field_name       protoreflect.Name = \"extendee\"\n\tFieldDescriptorProto_DefaultValue_field_name   protoreflect.Name = \"default_value\"\n\tFieldDescriptorProto_OneofIndex_field_name     protoreflect.Name = \"oneof_index\"\n\tFieldDescriptorProto_JsonName_field_name       protoreflect.Name = \"json_name\"\n\tFieldDescriptorProto_Options_field_name        protoreflect.Name = \"options\"\n\tFieldDescriptorProto_Proto3Optional_field_name protoreflect.Name = \"proto3_optional\"\n\n\tFieldDescriptorProto_Name_field_fullname           protoreflect.FullName = \"google.protobuf.FieldDescriptorProto.name\"\n\tFieldDescriptorProto_Number_field_fullname         protoreflect.FullName = \"google.protobuf.FieldDescriptorProto.number\"\n\tFieldDescriptorProto_Label_field_fullname          protoreflect.FullName = \"google.protobuf.FieldDescriptorProto.label\"\n\tFieldDescriptorProto_Type_field_fullname           protoreflect.FullName = \"google.protobuf.FieldDescriptorProto.type\"\n\tFieldDescriptorProto_TypeName_field_fullname       protoreflect.FullName = \"google.protobuf.FieldDescriptorProto.type_name\"\n\tFieldDescriptorProto_Extendee_field_fullname       protoreflect.FullName = \"google.protobuf.FieldDescriptorProto.extendee\"\n\tFieldDescriptorProto_DefaultValue_field_fullname   protoreflect.FullName = \"google.protobuf.FieldDescriptorProto.default_value\"\n\tFieldDescriptorProto_OneofIndex_field_fullname     protoreflect.FullName = \"google.protobuf.FieldDescriptorProto.oneof_index\"\n\tFieldDescriptorProto_JsonName_field_fullname       protoreflect.FullName = \"google.protobuf.FieldDescriptorProto.json_name\"\n\tFieldDescriptorProto_Options_field_fullname        protoreflect.FullName = \"google.protobuf.FieldDescriptorProto.options\"\n\tFieldDescriptorProto_Proto3Optional_field_fullname protoreflect.FullName = \"google.protobuf.FieldDescriptorProto.proto3_optional\"\n)\n\n// Field numbers for google.protobuf.FieldDescriptorProto.\nconst (\n\tFieldDescriptorProto_Name_field_number           protoreflect.FieldNumber = 1\n\tFieldDescriptorProto_Number_field_number         protoreflect.FieldNumber = 3\n\tFieldDescriptorProto_Label_field_number          protoreflect.FieldNumber = 4\n\tFieldDescriptorProto_Type_field_number           protoreflect.FieldNumber = 5\n\tFieldDescriptorProto_TypeName_field_number       protoreflect.FieldNumber = 6\n\tFieldDescriptorProto_Extendee_field_number       protoreflect.FieldNumber = 2\n\tFieldDescriptorProto_DefaultValue_field_number   protoreflect.FieldNumber = 7\n\tFieldDescriptorProto_OneofIndex_field_number     protoreflect.FieldNumber = 9\n\tFieldDescriptorProto_JsonName_field_number       protoreflect.FieldNumber = 10\n\tFieldDescriptorProto_Options_field_number        protoreflect.FieldNumber = 8\n\tFieldDescriptorProto_Proto3Optional_field_number protoreflect.FieldNumber = 17\n)\n\n// Full and short names for google.protobuf.FieldDescriptorProto.Type.\nconst (\n\tFieldDescriptorProto_Type_enum_fullname = \"google.protobuf.FieldDescriptorProto.Type\"\n\tFieldDescriptorProto_Type_enum_name     = \"Type\"\n)\n\n// Enum values for google.protobuf.FieldDescriptorProto.Type.\nconst (\n\tFieldDescriptorProto_TYPE_DOUBLE_enum_value   = 1\n\tFieldDescriptorProto_TYPE_FLOAT_enum_value    = 2\n\tFieldDescriptorProto_TYPE_INT64_enum_value    = 3\n\tFieldDescriptorProto_TYPE_UINT64_enum_value   = 4\n\tFieldDescriptorProto_TYPE_INT32_enum_value    = 5\n\tFieldDescriptorProto_TYPE_FIXED64_enum_value  = 6\n\tFieldDescriptorProto_TYPE_FIXED32_enum_value  = 7\n\tFieldDescriptorProto_TYPE_BOOL_enum_value     = 8\n\tFieldDescriptorProto_TYPE_STRING_enum_value   = 9\n\tFieldDescriptorProto_TYPE_GROUP_enum_value    = 10\n\tFieldDescriptorProto_TYPE_MESSAGE_enum_value  = 11\n\tFieldDescriptorProto_TYPE_BYTES_enum_value    = 12\n\tFieldDescriptorProto_TYPE_UINT32_enum_value   = 13\n\tFieldDescriptorProto_TYPE_ENUM_enum_value     = 14\n\tFieldDescriptorProto_TYPE_SFIXED32_enum_value = 15\n\tFieldDescriptorProto_TYPE_SFIXED64_enum_value = 16\n\tFieldDescriptorProto_TYPE_SINT32_enum_value   = 17\n\tFieldDescriptorProto_TYPE_SINT64_enum_value   = 18\n)\n\n// Full and short names for google.protobuf.FieldDescriptorProto.Label.\nconst (\n\tFieldDescriptorProto_Label_enum_fullname = \"google.protobuf.FieldDescriptorProto.Label\"\n\tFieldDescriptorProto_Label_enum_name     = \"Label\"\n)\n\n// Enum values for google.protobuf.FieldDescriptorProto.Label.\nconst (\n\tFieldDescriptorProto_LABEL_OPTIONAL_enum_value = 1\n\tFieldDescriptorProto_LABEL_REPEATED_enum_value = 3\n\tFieldDescriptorProto_LABEL_REQUIRED_enum_value = 2\n)\n\n// Names for google.protobuf.OneofDescriptorProto.\nconst (\n\tOneofDescriptorProto_message_name     protoreflect.Name     = \"OneofDescriptorProto\"\n\tOneofDescriptorProto_message_fullname protoreflect.FullName = \"google.protobuf.OneofDescriptorProto\"\n)\n\n// Field names for google.protobuf.OneofDescriptorProto.\nconst (\n\tOneofDescriptorProto_Name_field_name    protoreflect.Name = \"name\"\n\tOneofDescriptorProto_Options_field_name protoreflect.Name = \"options\"\n\n\tOneofDescriptorProto_Name_field_fullname    protoreflect.FullName = \"google.protobuf.OneofDescriptorProto.name\"\n\tOneofDescriptorProto_Options_field_fullname protoreflect.FullName = \"google.protobuf.OneofDescriptorProto.options\"\n)\n\n// Field numbers for google.protobuf.OneofDescriptorProto.\nconst (\n\tOneofDescriptorProto_Name_field_number    protoreflect.FieldNumber = 1\n\tOneofDescriptorProto_Options_field_number protoreflect.FieldNumber = 2\n)\n\n// Names for google.protobuf.EnumDescriptorProto.\nconst (\n\tEnumDescriptorProto_message_name     protoreflect.Name     = \"EnumDescriptorProto\"\n\tEnumDescriptorProto_message_fullname protoreflect.FullName = \"google.protobuf.EnumDescriptorProto\"\n)\n\n// Field names for google.protobuf.EnumDescriptorProto.\nconst (\n\tEnumDescriptorProto_Name_field_name          protoreflect.Name = \"name\"\n\tEnumDescriptorProto_Value_field_name         protoreflect.Name = \"value\"\n\tEnumDescriptorProto_Options_field_name       protoreflect.Name = \"options\"\n\tEnumDescriptorProto_ReservedRange_field_name protoreflect.Name = \"reserved_range\"\n\tEnumDescriptorProto_ReservedName_field_name  protoreflect.Name = \"reserved_name\"\n\tEnumDescriptorProto_Visibility_field_name    protoreflect.Name = \"visibility\"\n\n\tEnumDescriptorProto_Name_field_fullname          protoreflect.FullName = \"google.protobuf.EnumDescriptorProto.name\"\n\tEnumDescriptorProto_Value_field_fullname         protoreflect.FullName = \"google.protobuf.EnumDescriptorProto.value\"\n\tEnumDescriptorProto_Options_field_fullname       protoreflect.FullName = \"google.protobuf.EnumDescriptorProto.options\"\n\tEnumDescriptorProto_ReservedRange_field_fullname protoreflect.FullName = \"google.protobuf.EnumDescriptorProto.reserved_range\"\n\tEnumDescriptorProto_ReservedName_field_fullname  protoreflect.FullName = \"google.protobuf.EnumDescriptorProto.reserved_name\"\n\tEnumDescriptorProto_Visibility_field_fullname    protoreflect.FullName = \"google.protobuf.EnumDescriptorProto.visibility\"\n)\n\n// Field numbers for google.protobuf.EnumDescriptorProto.\nconst (\n\tEnumDescriptorProto_Name_field_number          protoreflect.FieldNumber = 1\n\tEnumDescriptorProto_Value_field_number         protoreflect.FieldNumber = 2\n\tEnumDescriptorProto_Options_field_number       protoreflect.FieldNumber = 3\n\tEnumDescriptorProto_ReservedRange_field_number protoreflect.FieldNumber = 4\n\tEnumDescriptorProto_ReservedName_field_number  protoreflect.FieldNumber = 5\n\tEnumDescriptorProto_Visibility_field_number    protoreflect.FieldNumber = 6\n)\n\n// Names for google.protobuf.EnumDescriptorProto.EnumReservedRange.\nconst (\n\tEnumDescriptorProto_EnumReservedRange_message_name     protoreflect.Name     = \"EnumReservedRange\"\n\tEnumDescriptorProto_EnumReservedRange_message_fullname protoreflect.FullName = \"google.protobuf.EnumDescriptorProto.EnumReservedRange\"\n)\n\n// Field names for google.protobuf.EnumDescriptorProto.EnumReservedRange.\nconst (\n\tEnumDescriptorProto_EnumReservedRange_Start_field_name protoreflect.Name = \"start\"\n\tEnumDescriptorProto_EnumReservedRange_End_field_name   protoreflect.Name = \"end\"\n\n\tEnumDescriptorProto_EnumReservedRange_Start_field_fullname protoreflect.FullName = \"google.protobuf.EnumDescriptorProto.EnumReservedRange.start\"\n\tEnumDescriptorProto_EnumReservedRange_End_field_fullname   protoreflect.FullName = \"google.protobuf.EnumDescriptorProto.EnumReservedRange.end\"\n)\n\n// Field numbers for google.protobuf.EnumDescriptorProto.EnumReservedRange.\nconst (\n\tEnumDescriptorProto_EnumReservedRange_Start_field_number protoreflect.FieldNumber = 1\n\tEnumDescriptorProto_EnumReservedRange_End_field_number   protoreflect.FieldNumber = 2\n)\n\n// Names for google.protobuf.EnumValueDescriptorProto.\nconst (\n\tEnumValueDescriptorProto_message_name     protoreflect.Name     = \"EnumValueDescriptorProto\"\n\tEnumValueDescriptorProto_message_fullname protoreflect.FullName = \"google.protobuf.EnumValueDescriptorProto\"\n)\n\n// Field names for google.protobuf.EnumValueDescriptorProto.\nconst (\n\tEnumValueDescriptorProto_Name_field_name    protoreflect.Name = \"name\"\n\tEnumValueDescriptorProto_Number_field_name  protoreflect.Name = \"number\"\n\tEnumValueDescriptorProto_Options_field_name protoreflect.Name = \"options\"\n\n\tEnumValueDescriptorProto_Name_field_fullname    protoreflect.FullName = \"google.protobuf.EnumValueDescriptorProto.name\"\n\tEnumValueDescriptorProto_Number_field_fullname  protoreflect.FullName = \"google.protobuf.EnumValueDescriptorProto.number\"\n\tEnumValueDescriptorProto_Options_field_fullname protoreflect.FullName = \"google.protobuf.EnumValueDescriptorProto.options\"\n)\n\n// Field numbers for google.protobuf.EnumValueDescriptorProto.\nconst (\n\tEnumValueDescriptorProto_Name_field_number    protoreflect.FieldNumber = 1\n\tEnumValueDescriptorProto_Number_field_number  protoreflect.FieldNumber = 2\n\tEnumValueDescriptorProto_Options_field_number protoreflect.FieldNumber = 3\n)\n\n// Names for google.protobuf.ServiceDescriptorProto.\nconst (\n\tServiceDescriptorProto_message_name     protoreflect.Name     = \"ServiceDescriptorProto\"\n\tServiceDescriptorProto_message_fullname protoreflect.FullName = \"google.protobuf.ServiceDescriptorProto\"\n)\n\n// Field names for google.protobuf.ServiceDescriptorProto.\nconst (\n\tServiceDescriptorProto_Name_field_name    protoreflect.Name = \"name\"\n\tServiceDescriptorProto_Method_field_name  protoreflect.Name = \"method\"\n\tServiceDescriptorProto_Options_field_name protoreflect.Name = \"options\"\n\n\tServiceDescriptorProto_Name_field_fullname    protoreflect.FullName = \"google.protobuf.ServiceDescriptorProto.name\"\n\tServiceDescriptorProto_Method_field_fullname  protoreflect.FullName = \"google.protobuf.ServiceDescriptorProto.method\"\n\tServiceDescriptorProto_Options_field_fullname protoreflect.FullName = \"google.protobuf.ServiceDescriptorProto.options\"\n)\n\n// Field numbers for google.protobuf.ServiceDescriptorProto.\nconst (\n\tServiceDescriptorProto_Name_field_number    protoreflect.FieldNumber = 1\n\tServiceDescriptorProto_Method_field_number  protoreflect.FieldNumber = 2\n\tServiceDescriptorProto_Options_field_number protoreflect.FieldNumber = 3\n)\n\n// Names for google.protobuf.MethodDescriptorProto.\nconst (\n\tMethodDescriptorProto_message_name     protoreflect.Name     = \"MethodDescriptorProto\"\n\tMethodDescriptorProto_message_fullname protoreflect.FullName = \"google.protobuf.MethodDescriptorProto\"\n)\n\n// Field names for google.protobuf.MethodDescriptorProto.\nconst (\n\tMethodDescriptorProto_Name_field_name            protoreflect.Name = \"name\"\n\tMethodDescriptorProto_InputType_field_name       protoreflect.Name = \"input_type\"\n\tMethodDescriptorProto_OutputType_field_name      protoreflect.Name = \"output_type\"\n\tMethodDescriptorProto_Options_field_name         protoreflect.Name = \"options\"\n\tMethodDescriptorProto_ClientStreaming_field_name protoreflect.Name = \"client_streaming\"\n\tMethodDescriptorProto_ServerStreaming_field_name protoreflect.Name = \"server_streaming\"\n\n\tMethodDescriptorProto_Name_field_fullname            protoreflect.FullName = \"google.protobuf.MethodDescriptorProto.name\"\n\tMethodDescriptorProto_InputType_field_fullname       protoreflect.FullName = \"google.protobuf.MethodDescriptorProto.input_type\"\n\tMethodDescriptorProto_OutputType_field_fullname      protoreflect.FullName = \"google.protobuf.MethodDescriptorProto.output_type\"\n\tMethodDescriptorProto_Options_field_fullname         protoreflect.FullName = \"google.protobuf.MethodDescriptorProto.options\"\n\tMethodDescriptorProto_ClientStreaming_field_fullname protoreflect.FullName = \"google.protobuf.MethodDescriptorProto.client_streaming\"\n\tMethodDescriptorProto_ServerStreaming_field_fullname protoreflect.FullName = \"google.protobuf.MethodDescriptorProto.server_streaming\"\n)\n\n// Field numbers for google.protobuf.MethodDescriptorProto.\nconst (\n\tMethodDescriptorProto_Name_field_number            protoreflect.FieldNumber = 1\n\tMethodDescriptorProto_InputType_field_number       protoreflect.FieldNumber = 2\n\tMethodDescriptorProto_OutputType_field_number      protoreflect.FieldNumber = 3\n\tMethodDescriptorProto_Options_field_number         protoreflect.FieldNumber = 4\n\tMethodDescriptorProto_ClientStreaming_field_number protoreflect.FieldNumber = 5\n\tMethodDescriptorProto_ServerStreaming_field_number protoreflect.FieldNumber = 6\n)\n\n// Names for google.protobuf.FileOptions.\nconst (\n\tFileOptions_message_name     protoreflect.Name     = \"FileOptions\"\n\tFileOptions_message_fullname protoreflect.FullName = \"google.protobuf.FileOptions\"\n)\n\n// Field names for google.protobuf.FileOptions.\nconst (\n\tFileOptions_JavaPackage_field_name               protoreflect.Name = \"java_package\"\n\tFileOptions_JavaOuterClassname_field_name        protoreflect.Name = \"java_outer_classname\"\n\tFileOptions_JavaMultipleFiles_field_name         protoreflect.Name = \"java_multiple_files\"\n\tFileOptions_JavaGenerateEqualsAndHash_field_name protoreflect.Name = \"java_generate_equals_and_hash\"\n\tFileOptions_JavaStringCheckUtf8_field_name       protoreflect.Name = \"java_string_check_utf8\"\n\tFileOptions_OptimizeFor_field_name               protoreflect.Name = \"optimize_for\"\n\tFileOptions_GoPackage_field_name                 protoreflect.Name = \"go_package\"\n\tFileOptions_CcGenericServices_field_name         protoreflect.Name = \"cc_generic_services\"\n\tFileOptions_JavaGenericServices_field_name       protoreflect.Name = \"java_generic_services\"\n\tFileOptions_PyGenericServices_field_name         protoreflect.Name = \"py_generic_services\"\n\tFileOptions_Deprecated_field_name                protoreflect.Name = \"deprecated\"\n\tFileOptions_CcEnableArenas_field_name            protoreflect.Name = \"cc_enable_arenas\"\n\tFileOptions_ObjcClassPrefix_field_name           protoreflect.Name = \"objc_class_prefix\"\n\tFileOptions_CsharpNamespace_field_name           protoreflect.Name = \"csharp_namespace\"\n\tFileOptions_SwiftPrefix_field_name               protoreflect.Name = \"swift_prefix\"\n\tFileOptions_PhpClassPrefix_field_name            protoreflect.Name = \"php_class_prefix\"\n\tFileOptions_PhpNamespace_field_name              protoreflect.Name = \"php_namespace\"\n\tFileOptions_PhpMetadataNamespace_field_name      protoreflect.Name = \"php_metadata_namespace\"\n\tFileOptions_RubyPackage_field_name               protoreflect.Name = \"ruby_package\"\n\tFileOptions_Features_field_name                  protoreflect.Name = \"features\"\n\tFileOptions_UninterpretedOption_field_name       protoreflect.Name = \"uninterpreted_option\"\n\n\tFileOptions_JavaPackage_field_fullname               protoreflect.FullName = \"google.protobuf.FileOptions.java_package\"\n\tFileOptions_JavaOuterClassname_field_fullname        protoreflect.FullName = \"google.protobuf.FileOptions.java_outer_classname\"\n\tFileOptions_JavaMultipleFiles_field_fullname         protoreflect.FullName = \"google.protobuf.FileOptions.java_multiple_files\"\n\tFileOptions_JavaGenerateEqualsAndHash_field_fullname protoreflect.FullName = \"google.protobuf.FileOptions.java_generate_equals_and_hash\"\n\tFileOptions_JavaStringCheckUtf8_field_fullname       protoreflect.FullName = \"google.protobuf.FileOptions.java_string_check_utf8\"\n\tFileOptions_OptimizeFor_field_fullname               protoreflect.FullName = \"google.protobuf.FileOptions.optimize_for\"\n\tFileOptions_GoPackage_field_fullname                 protoreflect.FullName = \"google.protobuf.FileOptions.go_package\"\n\tFileOptions_CcGenericServices_field_fullname         protoreflect.FullName = \"google.protobuf.FileOptions.cc_generic_services\"\n\tFileOptions_JavaGenericServices_field_fullname       protoreflect.FullName = \"google.protobuf.FileOptions.java_generic_services\"\n\tFileOptions_PyGenericServices_field_fullname         protoreflect.FullName = \"google.protobuf.FileOptions.py_generic_services\"\n\tFileOptions_Deprecated_field_fullname                protoreflect.FullName = \"google.protobuf.FileOptions.deprecated\"\n\tFileOptions_CcEnableArenas_field_fullname            protoreflect.FullName = \"google.protobuf.FileOptions.cc_enable_arenas\"\n\tFileOptions_ObjcClassPrefix_field_fullname           protoreflect.FullName = \"google.protobuf.FileOptions.objc_class_prefix\"\n\tFileOptions_CsharpNamespace_field_fullname           protoreflect.FullName = \"google.protobuf.FileOptions.csharp_namespace\"\n\tFileOptions_SwiftPrefix_field_fullname               protoreflect.FullName = \"google.protobuf.FileOptions.swift_prefix\"\n\tFileOptions_PhpClassPrefix_field_fullname            protoreflect.FullName = \"google.protobuf.FileOptions.php_class_prefix\"\n\tFileOptions_PhpNamespace_field_fullname              protoreflect.FullName = \"google.protobuf.FileOptions.php_namespace\"\n\tFileOptions_PhpMetadataNamespace_field_fullname      protoreflect.FullName = \"google.protobuf.FileOptions.php_metadata_namespace\"\n\tFileOptions_RubyPackage_field_fullname               protoreflect.FullName = \"google.protobuf.FileOptions.ruby_package\"\n\tFileOptions_Features_field_fullname                  protoreflect.FullName = \"google.protobuf.FileOptions.features\"\n\tFileOptions_UninterpretedOption_field_fullname       protoreflect.FullName = \"google.protobuf.FileOptions.uninterpreted_option\"\n)\n\n// Field numbers for google.protobuf.FileOptions.\nconst (\n\tFileOptions_JavaPackage_field_number               protoreflect.FieldNumber = 1\n\tFileOptions_JavaOuterClassname_field_number        protoreflect.FieldNumber = 8\n\tFileOptions_JavaMultipleFiles_field_number         protoreflect.FieldNumber = 10\n\tFileOptions_JavaGenerateEqualsAndHash_field_number protoreflect.FieldNumber = 20\n\tFileOptions_JavaStringCheckUtf8_field_number       protoreflect.FieldNumber = 27\n\tFileOptions_OptimizeFor_field_number               protoreflect.FieldNumber = 9\n\tFileOptions_GoPackage_field_number                 protoreflect.FieldNumber = 11\n\tFileOptions_CcGenericServices_field_number         protoreflect.FieldNumber = 16\n\tFileOptions_JavaGenericServices_field_number       protoreflect.FieldNumber = 17\n\tFileOptions_PyGenericServices_field_number         protoreflect.FieldNumber = 18\n\tFileOptions_Deprecated_field_number                protoreflect.FieldNumber = 23\n\tFileOptions_CcEnableArenas_field_number            protoreflect.FieldNumber = 31\n\tFileOptions_ObjcClassPrefix_field_number           protoreflect.FieldNumber = 36\n\tFileOptions_CsharpNamespace_field_number           protoreflect.FieldNumber = 37\n\tFileOptions_SwiftPrefix_field_number               protoreflect.FieldNumber = 39\n\tFileOptions_PhpClassPrefix_field_number            protoreflect.FieldNumber = 40\n\tFileOptions_PhpNamespace_field_number              protoreflect.FieldNumber = 41\n\tFileOptions_PhpMetadataNamespace_field_number      protoreflect.FieldNumber = 44\n\tFileOptions_RubyPackage_field_number               protoreflect.FieldNumber = 45\n\tFileOptions_Features_field_number                  protoreflect.FieldNumber = 50\n\tFileOptions_UninterpretedOption_field_number       protoreflect.FieldNumber = 999\n)\n\n// Full and short names for google.protobuf.FileOptions.OptimizeMode.\nconst (\n\tFileOptions_OptimizeMode_enum_fullname = \"google.protobuf.FileOptions.OptimizeMode\"\n\tFileOptions_OptimizeMode_enum_name     = \"OptimizeMode\"\n)\n\n// Enum values for google.protobuf.FileOptions.OptimizeMode.\nconst (\n\tFileOptions_SPEED_enum_value        = 1\n\tFileOptions_CODE_SIZE_enum_value    = 2\n\tFileOptions_LITE_RUNTIME_enum_value = 3\n)\n\n// Names for google.protobuf.MessageOptions.\nconst (\n\tMessageOptions_message_name     protoreflect.Name     = \"MessageOptions\"\n\tMessageOptions_message_fullname protoreflect.FullName = \"google.protobuf.MessageOptions\"\n)\n\n// Field names for google.protobuf.MessageOptions.\nconst (\n\tMessageOptions_MessageSetWireFormat_field_name               protoreflect.Name = \"message_set_wire_format\"\n\tMessageOptions_NoStandardDescriptorAccessor_field_name       protoreflect.Name = \"no_standard_descriptor_accessor\"\n\tMessageOptions_Deprecated_field_name                         protoreflect.Name = \"deprecated\"\n\tMessageOptions_MapEntry_field_name                           protoreflect.Name = \"map_entry\"\n\tMessageOptions_DeprecatedLegacyJsonFieldConflicts_field_name protoreflect.Name = \"deprecated_legacy_json_field_conflicts\"\n\tMessageOptions_Features_field_name                           protoreflect.Name = \"features\"\n\tMessageOptions_UninterpretedOption_field_name                protoreflect.Name = \"uninterpreted_option\"\n\n\tMessageOptions_MessageSetWireFormat_field_fullname               protoreflect.FullName = \"google.protobuf.MessageOptions.message_set_wire_format\"\n\tMessageOptions_NoStandardDescriptorAccessor_field_fullname       protoreflect.FullName = \"google.protobuf.MessageOptions.no_standard_descriptor_accessor\"\n\tMessageOptions_Deprecated_field_fullname                         protoreflect.FullName = \"google.protobuf.MessageOptions.deprecated\"\n\tMessageOptions_MapEntry_field_fullname                           protoreflect.FullName = \"google.protobuf.MessageOptions.map_entry\"\n\tMessageOptions_DeprecatedLegacyJsonFieldConflicts_field_fullname protoreflect.FullName = \"google.protobuf.MessageOptions.deprecated_legacy_json_field_conflicts\"\n\tMessageOptions_Features_field_fullname                           protoreflect.FullName = \"google.protobuf.MessageOptions.features\"\n\tMessageOptions_UninterpretedOption_field_fullname                protoreflect.FullName = \"google.protobuf.MessageOptions.uninterpreted_option\"\n)\n\n// Field numbers for google.protobuf.MessageOptions.\nconst (\n\tMessageOptions_MessageSetWireFormat_field_number               protoreflect.FieldNumber = 1\n\tMessageOptions_NoStandardDescriptorAccessor_field_number       protoreflect.FieldNumber = 2\n\tMessageOptions_Deprecated_field_number                         protoreflect.FieldNumber = 3\n\tMessageOptions_MapEntry_field_number                           protoreflect.FieldNumber = 7\n\tMessageOptions_DeprecatedLegacyJsonFieldConflicts_field_number protoreflect.FieldNumber = 11\n\tMessageOptions_Features_field_number                           protoreflect.FieldNumber = 12\n\tMessageOptions_UninterpretedOption_field_number                protoreflect.FieldNumber = 999\n)\n\n// Names for google.protobuf.FieldOptions.\nconst (\n\tFieldOptions_message_name     protoreflect.Name     = \"FieldOptions\"\n\tFieldOptions_message_fullname protoreflect.FullName = \"google.protobuf.FieldOptions\"\n)\n\n// Field names for google.protobuf.FieldOptions.\nconst (\n\tFieldOptions_Ctype_field_name               protoreflect.Name = \"ctype\"\n\tFieldOptions_Packed_field_name              protoreflect.Name = \"packed\"\n\tFieldOptions_Jstype_field_name              protoreflect.Name = \"jstype\"\n\tFieldOptions_Lazy_field_name                protoreflect.Name = \"lazy\"\n\tFieldOptions_UnverifiedLazy_field_name      protoreflect.Name = \"unverified_lazy\"\n\tFieldOptions_Deprecated_field_name          protoreflect.Name = \"deprecated\"\n\tFieldOptions_Weak_field_name                protoreflect.Name = \"weak\"\n\tFieldOptions_DebugRedact_field_name         protoreflect.Name = \"debug_redact\"\n\tFieldOptions_Retention_field_name           protoreflect.Name = \"retention\"\n\tFieldOptions_Targets_field_name             protoreflect.Name = \"targets\"\n\tFieldOptions_EditionDefaults_field_name     protoreflect.Name = \"edition_defaults\"\n\tFieldOptions_Features_field_name            protoreflect.Name = \"features\"\n\tFieldOptions_FeatureSupport_field_name      protoreflect.Name = \"feature_support\"\n\tFieldOptions_UninterpretedOption_field_name protoreflect.Name = \"uninterpreted_option\"\n\n\tFieldOptions_Ctype_field_fullname               protoreflect.FullName = \"google.protobuf.FieldOptions.ctype\"\n\tFieldOptions_Packed_field_fullname              protoreflect.FullName = \"google.protobuf.FieldOptions.packed\"\n\tFieldOptions_Jstype_field_fullname              protoreflect.FullName = \"google.protobuf.FieldOptions.jstype\"\n\tFieldOptions_Lazy_field_fullname                protoreflect.FullName = \"google.protobuf.FieldOptions.lazy\"\n\tFieldOptions_UnverifiedLazy_field_fullname      protoreflect.FullName = \"google.protobuf.FieldOptions.unverified_lazy\"\n\tFieldOptions_Deprecated_field_fullname          protoreflect.FullName = \"google.protobuf.FieldOptions.deprecated\"\n\tFieldOptions_Weak_field_fullname                protoreflect.FullName = \"google.protobuf.FieldOptions.weak\"\n\tFieldOptions_DebugRedact_field_fullname         protoreflect.FullName = \"google.protobuf.FieldOptions.debug_redact\"\n\tFieldOptions_Retention_field_fullname           protoreflect.FullName = \"google.protobuf.FieldOptions.retention\"\n\tFieldOptions_Targets_field_fullname             protoreflect.FullName = \"google.protobuf.FieldOptions.targets\"\n\tFieldOptions_EditionDefaults_field_fullname     protoreflect.FullName = \"google.protobuf.FieldOptions.edition_defaults\"\n\tFieldOptions_Features_field_fullname            protoreflect.FullName = \"google.protobuf.FieldOptions.features\"\n\tFieldOptions_FeatureSupport_field_fullname      protoreflect.FullName = \"google.protobuf.FieldOptions.feature_support\"\n\tFieldOptions_UninterpretedOption_field_fullname protoreflect.FullName = \"google.protobuf.FieldOptions.uninterpreted_option\"\n)\n\n// Field numbers for google.protobuf.FieldOptions.\nconst (\n\tFieldOptions_Ctype_field_number               protoreflect.FieldNumber = 1\n\tFieldOptions_Packed_field_number              protoreflect.FieldNumber = 2\n\tFieldOptions_Jstype_field_number              protoreflect.FieldNumber = 6\n\tFieldOptions_Lazy_field_number                protoreflect.FieldNumber = 5\n\tFieldOptions_UnverifiedLazy_field_number      protoreflect.FieldNumber = 15\n\tFieldOptions_Deprecated_field_number          protoreflect.FieldNumber = 3\n\tFieldOptions_Weak_field_number                protoreflect.FieldNumber = 10\n\tFieldOptions_DebugRedact_field_number         protoreflect.FieldNumber = 16\n\tFieldOptions_Retention_field_number           protoreflect.FieldNumber = 17\n\tFieldOptions_Targets_field_number             protoreflect.FieldNumber = 19\n\tFieldOptions_EditionDefaults_field_number     protoreflect.FieldNumber = 20\n\tFieldOptions_Features_field_number            protoreflect.FieldNumber = 21\n\tFieldOptions_FeatureSupport_field_number      protoreflect.FieldNumber = 22\n\tFieldOptions_UninterpretedOption_field_number protoreflect.FieldNumber = 999\n)\n\n// Full and short names for google.protobuf.FieldOptions.CType.\nconst (\n\tFieldOptions_CType_enum_fullname = \"google.protobuf.FieldOptions.CType\"\n\tFieldOptions_CType_enum_name     = \"CType\"\n)\n\n// Enum values for google.protobuf.FieldOptions.CType.\nconst (\n\tFieldOptions_STRING_enum_value       = 0\n\tFieldOptions_CORD_enum_value         = 1\n\tFieldOptions_STRING_PIECE_enum_value = 2\n)\n\n// Full and short names for google.protobuf.FieldOptions.JSType.\nconst (\n\tFieldOptions_JSType_enum_fullname = \"google.protobuf.FieldOptions.JSType\"\n\tFieldOptions_JSType_enum_name     = \"JSType\"\n)\n\n// Enum values for google.protobuf.FieldOptions.JSType.\nconst (\n\tFieldOptions_JS_NORMAL_enum_value = 0\n\tFieldOptions_JS_STRING_enum_value = 1\n\tFieldOptions_JS_NUMBER_enum_value = 2\n)\n\n// Full and short names for google.protobuf.FieldOptions.OptionRetention.\nconst (\n\tFieldOptions_OptionRetention_enum_fullname = \"google.protobuf.FieldOptions.OptionRetention\"\n\tFieldOptions_OptionRetention_enum_name     = \"OptionRetention\"\n)\n\n// Enum values for google.protobuf.FieldOptions.OptionRetention.\nconst (\n\tFieldOptions_RETENTION_UNKNOWN_enum_value = 0\n\tFieldOptions_RETENTION_RUNTIME_enum_value = 1\n\tFieldOptions_RETENTION_SOURCE_enum_value  = 2\n)\n\n// Full and short names for google.protobuf.FieldOptions.OptionTargetType.\nconst (\n\tFieldOptions_OptionTargetType_enum_fullname = \"google.protobuf.FieldOptions.OptionTargetType\"\n\tFieldOptions_OptionTargetType_enum_name     = \"OptionTargetType\"\n)\n\n// Enum values for google.protobuf.FieldOptions.OptionTargetType.\nconst (\n\tFieldOptions_TARGET_TYPE_UNKNOWN_enum_value         = 0\n\tFieldOptions_TARGET_TYPE_FILE_enum_value            = 1\n\tFieldOptions_TARGET_TYPE_EXTENSION_RANGE_enum_value = 2\n\tFieldOptions_TARGET_TYPE_MESSAGE_enum_value         = 3\n\tFieldOptions_TARGET_TYPE_FIELD_enum_value           = 4\n\tFieldOptions_TARGET_TYPE_ONEOF_enum_value           = 5\n\tFieldOptions_TARGET_TYPE_ENUM_enum_value            = 6\n\tFieldOptions_TARGET_TYPE_ENUM_ENTRY_enum_value      = 7\n\tFieldOptions_TARGET_TYPE_SERVICE_enum_value         = 8\n\tFieldOptions_TARGET_TYPE_METHOD_enum_value          = 9\n)\n\n// Names for google.protobuf.FieldOptions.EditionDefault.\nconst (\n\tFieldOptions_EditionDefault_message_name     protoreflect.Name     = \"EditionDefault\"\n\tFieldOptions_EditionDefault_message_fullname protoreflect.FullName = \"google.protobuf.FieldOptions.EditionDefault\"\n)\n\n// Field names for google.protobuf.FieldOptions.EditionDefault.\nconst (\n\tFieldOptions_EditionDefault_Edition_field_name protoreflect.Name = \"edition\"\n\tFieldOptions_EditionDefault_Value_field_name   protoreflect.Name = \"value\"\n\n\tFieldOptions_EditionDefault_Edition_field_fullname protoreflect.FullName = \"google.protobuf.FieldOptions.EditionDefault.edition\"\n\tFieldOptions_EditionDefault_Value_field_fullname   protoreflect.FullName = \"google.protobuf.FieldOptions.EditionDefault.value\"\n)\n\n// Field numbers for google.protobuf.FieldOptions.EditionDefault.\nconst (\n\tFieldOptions_EditionDefault_Edition_field_number protoreflect.FieldNumber = 3\n\tFieldOptions_EditionDefault_Value_field_number   protoreflect.FieldNumber = 2\n)\n\n// Names for google.protobuf.FieldOptions.FeatureSupport.\nconst (\n\tFieldOptions_FeatureSupport_message_name     protoreflect.Name     = \"FeatureSupport\"\n\tFieldOptions_FeatureSupport_message_fullname protoreflect.FullName = \"google.protobuf.FieldOptions.FeatureSupport\"\n)\n\n// Field names for google.protobuf.FieldOptions.FeatureSupport.\nconst (\n\tFieldOptions_FeatureSupport_EditionIntroduced_field_name  protoreflect.Name = \"edition_introduced\"\n\tFieldOptions_FeatureSupport_EditionDeprecated_field_name  protoreflect.Name = \"edition_deprecated\"\n\tFieldOptions_FeatureSupport_DeprecationWarning_field_name protoreflect.Name = \"deprecation_warning\"\n\tFieldOptions_FeatureSupport_EditionRemoved_field_name     protoreflect.Name = \"edition_removed\"\n\n\tFieldOptions_FeatureSupport_EditionIntroduced_field_fullname  protoreflect.FullName = \"google.protobuf.FieldOptions.FeatureSupport.edition_introduced\"\n\tFieldOptions_FeatureSupport_EditionDeprecated_field_fullname  protoreflect.FullName = \"google.protobuf.FieldOptions.FeatureSupport.edition_deprecated\"\n\tFieldOptions_FeatureSupport_DeprecationWarning_field_fullname protoreflect.FullName = \"google.protobuf.FieldOptions.FeatureSupport.deprecation_warning\"\n\tFieldOptions_FeatureSupport_EditionRemoved_field_fullname     protoreflect.FullName = \"google.protobuf.FieldOptions.FeatureSupport.edition_removed\"\n)\n\n// Field numbers for google.protobuf.FieldOptions.FeatureSupport.\nconst (\n\tFieldOptions_FeatureSupport_EditionIntroduced_field_number  protoreflect.FieldNumber = 1\n\tFieldOptions_FeatureSupport_EditionDeprecated_field_number  protoreflect.FieldNumber = 2\n\tFieldOptions_FeatureSupport_DeprecationWarning_field_number protoreflect.FieldNumber = 3\n\tFieldOptions_FeatureSupport_EditionRemoved_field_number     protoreflect.FieldNumber = 4\n)\n\n// Names for google.protobuf.OneofOptions.\nconst (\n\tOneofOptions_message_name     protoreflect.Name     = \"OneofOptions\"\n\tOneofOptions_message_fullname protoreflect.FullName = \"google.protobuf.OneofOptions\"\n)\n\n// Field names for google.protobuf.OneofOptions.\nconst (\n\tOneofOptions_Features_field_name            protoreflect.Name = \"features\"\n\tOneofOptions_UninterpretedOption_field_name protoreflect.Name = \"uninterpreted_option\"\n\n\tOneofOptions_Features_field_fullname            protoreflect.FullName = \"google.protobuf.OneofOptions.features\"\n\tOneofOptions_UninterpretedOption_field_fullname protoreflect.FullName = \"google.protobuf.OneofOptions.uninterpreted_option\"\n)\n\n// Field numbers for google.protobuf.OneofOptions.\nconst (\n\tOneofOptions_Features_field_number            protoreflect.FieldNumber = 1\n\tOneofOptions_UninterpretedOption_field_number protoreflect.FieldNumber = 999\n)\n\n// Names for google.protobuf.EnumOptions.\nconst (\n\tEnumOptions_message_name     protoreflect.Name     = \"EnumOptions\"\n\tEnumOptions_message_fullname protoreflect.FullName = \"google.protobuf.EnumOptions\"\n)\n\n// Field names for google.protobuf.EnumOptions.\nconst (\n\tEnumOptions_AllowAlias_field_name                         protoreflect.Name = \"allow_alias\"\n\tEnumOptions_Deprecated_field_name                         protoreflect.Name = \"deprecated\"\n\tEnumOptions_DeprecatedLegacyJsonFieldConflicts_field_name protoreflect.Name = \"deprecated_legacy_json_field_conflicts\"\n\tEnumOptions_Features_field_name                           protoreflect.Name = \"features\"\n\tEnumOptions_UninterpretedOption_field_name                protoreflect.Name = \"uninterpreted_option\"\n\n\tEnumOptions_AllowAlias_field_fullname                         protoreflect.FullName = \"google.protobuf.EnumOptions.allow_alias\"\n\tEnumOptions_Deprecated_field_fullname                         protoreflect.FullName = \"google.protobuf.EnumOptions.deprecated\"\n\tEnumOptions_DeprecatedLegacyJsonFieldConflicts_field_fullname protoreflect.FullName = \"google.protobuf.EnumOptions.deprecated_legacy_json_field_conflicts\"\n\tEnumOptions_Features_field_fullname                           protoreflect.FullName = \"google.protobuf.EnumOptions.features\"\n\tEnumOptions_UninterpretedOption_field_fullname                protoreflect.FullName = \"google.protobuf.EnumOptions.uninterpreted_option\"\n)\n\n// Field numbers for google.protobuf.EnumOptions.\nconst (\n\tEnumOptions_AllowAlias_field_number                         protoreflect.FieldNumber = 2\n\tEnumOptions_Deprecated_field_number                         protoreflect.FieldNumber = 3\n\tEnumOptions_DeprecatedLegacyJsonFieldConflicts_field_number protoreflect.FieldNumber = 6\n\tEnumOptions_Features_field_number                           protoreflect.FieldNumber = 7\n\tEnumOptions_UninterpretedOption_field_number                protoreflect.FieldNumber = 999\n)\n\n// Names for google.protobuf.EnumValueOptions.\nconst (\n\tEnumValueOptions_message_name     protoreflect.Name     = \"EnumValueOptions\"\n\tEnumValueOptions_message_fullname protoreflect.FullName = \"google.protobuf.EnumValueOptions\"\n)\n\n// Field names for google.protobuf.EnumValueOptions.\nconst (\n\tEnumValueOptions_Deprecated_field_name          protoreflect.Name = \"deprecated\"\n\tEnumValueOptions_Features_field_name            protoreflect.Name = \"features\"\n\tEnumValueOptions_DebugRedact_field_name         protoreflect.Name = \"debug_redact\"\n\tEnumValueOptions_FeatureSupport_field_name      protoreflect.Name = \"feature_support\"\n\tEnumValueOptions_UninterpretedOption_field_name protoreflect.Name = \"uninterpreted_option\"\n\n\tEnumValueOptions_Deprecated_field_fullname          protoreflect.FullName = \"google.protobuf.EnumValueOptions.deprecated\"\n\tEnumValueOptions_Features_field_fullname            protoreflect.FullName = \"google.protobuf.EnumValueOptions.features\"\n\tEnumValueOptions_DebugRedact_field_fullname         protoreflect.FullName = \"google.protobuf.EnumValueOptions.debug_redact\"\n\tEnumValueOptions_FeatureSupport_field_fullname      protoreflect.FullName = \"google.protobuf.EnumValueOptions.feature_support\"\n\tEnumValueOptions_UninterpretedOption_field_fullname protoreflect.FullName = \"google.protobuf.EnumValueOptions.uninterpreted_option\"\n)\n\n// Field numbers for google.protobuf.EnumValueOptions.\nconst (\n\tEnumValueOptions_Deprecated_field_number          protoreflect.FieldNumber = 1\n\tEnumValueOptions_Features_field_number            protoreflect.FieldNumber = 2\n\tEnumValueOptions_DebugRedact_field_number         protoreflect.FieldNumber = 3\n\tEnumValueOptions_FeatureSupport_field_number      protoreflect.FieldNumber = 4\n\tEnumValueOptions_UninterpretedOption_field_number protoreflect.FieldNumber = 999\n)\n\n// Names for google.protobuf.ServiceOptions.\nconst (\n\tServiceOptions_message_name     protoreflect.Name     = \"ServiceOptions\"\n\tServiceOptions_message_fullname protoreflect.FullName = \"google.protobuf.ServiceOptions\"\n)\n\n// Field names for google.protobuf.ServiceOptions.\nconst (\n\tServiceOptions_Features_field_name            protoreflect.Name = \"features\"\n\tServiceOptions_Deprecated_field_name          protoreflect.Name = \"deprecated\"\n\tServiceOptions_UninterpretedOption_field_name protoreflect.Name = \"uninterpreted_option\"\n\n\tServiceOptions_Features_field_fullname            protoreflect.FullName = \"google.protobuf.ServiceOptions.features\"\n\tServiceOptions_Deprecated_field_fullname          protoreflect.FullName = \"google.protobuf.ServiceOptions.deprecated\"\n\tServiceOptions_UninterpretedOption_field_fullname protoreflect.FullName = \"google.protobuf.ServiceOptions.uninterpreted_option\"\n)\n\n// Field numbers for google.protobuf.ServiceOptions.\nconst (\n\tServiceOptions_Features_field_number            protoreflect.FieldNumber = 34\n\tServiceOptions_Deprecated_field_number          protoreflect.FieldNumber = 33\n\tServiceOptions_UninterpretedOption_field_number protoreflect.FieldNumber = 999\n)\n\n// Names for google.protobuf.MethodOptions.\nconst (\n\tMethodOptions_message_name     protoreflect.Name     = \"MethodOptions\"\n\tMethodOptions_message_fullname protoreflect.FullName = \"google.protobuf.MethodOptions\"\n)\n\n// Field names for google.protobuf.MethodOptions.\nconst (\n\tMethodOptions_Deprecated_field_name          protoreflect.Name = \"deprecated\"\n\tMethodOptions_IdempotencyLevel_field_name    protoreflect.Name = \"idempotency_level\"\n\tMethodOptions_Features_field_name            protoreflect.Name = \"features\"\n\tMethodOptions_UninterpretedOption_field_name protoreflect.Name = \"uninterpreted_option\"\n\n\tMethodOptions_Deprecated_field_fullname          protoreflect.FullName = \"google.protobuf.MethodOptions.deprecated\"\n\tMethodOptions_IdempotencyLevel_field_fullname    protoreflect.FullName = \"google.protobuf.MethodOptions.idempotency_level\"\n\tMethodOptions_Features_field_fullname            protoreflect.FullName = \"google.protobuf.MethodOptions.features\"\n\tMethodOptions_UninterpretedOption_field_fullname protoreflect.FullName = \"google.protobuf.MethodOptions.uninterpreted_option\"\n)\n\n// Field numbers for google.protobuf.MethodOptions.\nconst (\n\tMethodOptions_Deprecated_field_number          protoreflect.FieldNumber = 33\n\tMethodOptions_IdempotencyLevel_field_number    protoreflect.FieldNumber = 34\n\tMethodOptions_Features_field_number            protoreflect.FieldNumber = 35\n\tMethodOptions_UninterpretedOption_field_number protoreflect.FieldNumber = 999\n)\n\n// Full and short names for google.protobuf.MethodOptions.IdempotencyLevel.\nconst (\n\tMethodOptions_IdempotencyLevel_enum_fullname = \"google.protobuf.MethodOptions.IdempotencyLevel\"\n\tMethodOptions_IdempotencyLevel_enum_name     = \"IdempotencyLevel\"\n)\n\n// Enum values for google.protobuf.MethodOptions.IdempotencyLevel.\nconst (\n\tMethodOptions_IDEMPOTENCY_UNKNOWN_enum_value = 0\n\tMethodOptions_NO_SIDE_EFFECTS_enum_value     = 1\n\tMethodOptions_IDEMPOTENT_enum_value          = 2\n)\n\n// Names for google.protobuf.UninterpretedOption.\nconst (\n\tUninterpretedOption_message_name     protoreflect.Name     = \"UninterpretedOption\"\n\tUninterpretedOption_message_fullname protoreflect.FullName = \"google.protobuf.UninterpretedOption\"\n)\n\n// Field names for google.protobuf.UninterpretedOption.\nconst (\n\tUninterpretedOption_Name_field_name             protoreflect.Name = \"name\"\n\tUninterpretedOption_IdentifierValue_field_name  protoreflect.Name = \"identifier_value\"\n\tUninterpretedOption_PositiveIntValue_field_name protoreflect.Name = \"positive_int_value\"\n\tUninterpretedOption_NegativeIntValue_field_name protoreflect.Name = \"negative_int_value\"\n\tUninterpretedOption_DoubleValue_field_name      protoreflect.Name = \"double_value\"\n\tUninterpretedOption_StringValue_field_name      protoreflect.Name = \"string_value\"\n\tUninterpretedOption_AggregateValue_field_name   protoreflect.Name = \"aggregate_value\"\n\n\tUninterpretedOption_Name_field_fullname             protoreflect.FullName = \"google.protobuf.UninterpretedOption.name\"\n\tUninterpretedOption_IdentifierValue_field_fullname  protoreflect.FullName = \"google.protobuf.UninterpretedOption.identifier_value\"\n\tUninterpretedOption_PositiveIntValue_field_fullname protoreflect.FullName = \"google.protobuf.UninterpretedOption.positive_int_value\"\n\tUninterpretedOption_NegativeIntValue_field_fullname protoreflect.FullName = \"google.protobuf.UninterpretedOption.negative_int_value\"\n\tUninterpretedOption_DoubleValue_field_fullname      protoreflect.FullName = \"google.protobuf.UninterpretedOption.double_value\"\n\tUninterpretedOption_StringValue_field_fullname      protoreflect.FullName = \"google.protobuf.UninterpretedOption.string_value\"\n\tUninterpretedOption_AggregateValue_field_fullname   protoreflect.FullName = \"google.protobuf.UninterpretedOption.aggregate_value\"\n)\n\n// Field numbers for google.protobuf.UninterpretedOption.\nconst (\n\tUninterpretedOption_Name_field_number             protoreflect.FieldNumber = 2\n\tUninterpretedOption_IdentifierValue_field_number  protoreflect.FieldNumber = 3\n\tUninterpretedOption_PositiveIntValue_field_number protoreflect.FieldNumber = 4\n\tUninterpretedOption_NegativeIntValue_field_number protoreflect.FieldNumber = 5\n\tUninterpretedOption_DoubleValue_field_number      protoreflect.FieldNumber = 6\n\tUninterpretedOption_StringValue_field_number      protoreflect.FieldNumber = 7\n\tUninterpretedOption_AggregateValue_field_number   protoreflect.FieldNumber = 8\n)\n\n// Names for google.protobuf.UninterpretedOption.NamePart.\nconst (\n\tUninterpretedOption_NamePart_message_name     protoreflect.Name     = \"NamePart\"\n\tUninterpretedOption_NamePart_message_fullname protoreflect.FullName = \"google.protobuf.UninterpretedOption.NamePart\"\n)\n\n// Field names for google.protobuf.UninterpretedOption.NamePart.\nconst (\n\tUninterpretedOption_NamePart_NamePart_field_name    protoreflect.Name = \"name_part\"\n\tUninterpretedOption_NamePart_IsExtension_field_name protoreflect.Name = \"is_extension\"\n\n\tUninterpretedOption_NamePart_NamePart_field_fullname    protoreflect.FullName = \"google.protobuf.UninterpretedOption.NamePart.name_part\"\n\tUninterpretedOption_NamePart_IsExtension_field_fullname protoreflect.FullName = \"google.protobuf.UninterpretedOption.NamePart.is_extension\"\n)\n\n// Field numbers for google.protobuf.UninterpretedOption.NamePart.\nconst (\n\tUninterpretedOption_NamePart_NamePart_field_number    protoreflect.FieldNumber = 1\n\tUninterpretedOption_NamePart_IsExtension_field_number protoreflect.FieldNumber = 2\n)\n\n// Names for google.protobuf.FeatureSet.\nconst (\n\tFeatureSet_message_name     protoreflect.Name     = \"FeatureSet\"\n\tFeatureSet_message_fullname protoreflect.FullName = \"google.protobuf.FeatureSet\"\n)\n\n// Field names for google.protobuf.FeatureSet.\nconst (\n\tFeatureSet_FieldPresence_field_name           protoreflect.Name = \"field_presence\"\n\tFeatureSet_EnumType_field_name                protoreflect.Name = \"enum_type\"\n\tFeatureSet_RepeatedFieldEncoding_field_name   protoreflect.Name = \"repeated_field_encoding\"\n\tFeatureSet_Utf8Validation_field_name          protoreflect.Name = \"utf8_validation\"\n\tFeatureSet_MessageEncoding_field_name         protoreflect.Name = \"message_encoding\"\n\tFeatureSet_JsonFormat_field_name              protoreflect.Name = \"json_format\"\n\tFeatureSet_EnforceNamingStyle_field_name      protoreflect.Name = \"enforce_naming_style\"\n\tFeatureSet_DefaultSymbolVisibility_field_name protoreflect.Name = \"default_symbol_visibility\"\n\n\tFeatureSet_FieldPresence_field_fullname           protoreflect.FullName = \"google.protobuf.FeatureSet.field_presence\"\n\tFeatureSet_EnumType_field_fullname                protoreflect.FullName = \"google.protobuf.FeatureSet.enum_type\"\n\tFeatureSet_RepeatedFieldEncoding_field_fullname   protoreflect.FullName = \"google.protobuf.FeatureSet.repeated_field_encoding\"\n\tFeatureSet_Utf8Validation_field_fullname          protoreflect.FullName = \"google.protobuf.FeatureSet.utf8_validation\"\n\tFeatureSet_MessageEncoding_field_fullname         protoreflect.FullName = \"google.protobuf.FeatureSet.message_encoding\"\n\tFeatureSet_JsonFormat_field_fullname              protoreflect.FullName = \"google.protobuf.FeatureSet.json_format\"\n\tFeatureSet_EnforceNamingStyle_field_fullname      protoreflect.FullName = \"google.protobuf.FeatureSet.enforce_naming_style\"\n\tFeatureSet_DefaultSymbolVisibility_field_fullname protoreflect.FullName = \"google.protobuf.FeatureSet.default_symbol_visibility\"\n)\n\n// Field numbers for google.protobuf.FeatureSet.\nconst (\n\tFeatureSet_FieldPresence_field_number           protoreflect.FieldNumber = 1\n\tFeatureSet_EnumType_field_number                protoreflect.FieldNumber = 2\n\tFeatureSet_RepeatedFieldEncoding_field_number   protoreflect.FieldNumber = 3\n\tFeatureSet_Utf8Validation_field_number          protoreflect.FieldNumber = 4\n\tFeatureSet_MessageEncoding_field_number         protoreflect.FieldNumber = 5\n\tFeatureSet_JsonFormat_field_number              protoreflect.FieldNumber = 6\n\tFeatureSet_EnforceNamingStyle_field_number      protoreflect.FieldNumber = 7\n\tFeatureSet_DefaultSymbolVisibility_field_number protoreflect.FieldNumber = 8\n)\n\n// Full and short names for google.protobuf.FeatureSet.FieldPresence.\nconst (\n\tFeatureSet_FieldPresence_enum_fullname = \"google.protobuf.FeatureSet.FieldPresence\"\n\tFeatureSet_FieldPresence_enum_name     = \"FieldPresence\"\n)\n\n// Enum values for google.protobuf.FeatureSet.FieldPresence.\nconst (\n\tFeatureSet_FIELD_PRESENCE_UNKNOWN_enum_value = 0\n\tFeatureSet_EXPLICIT_enum_value               = 1\n\tFeatureSet_IMPLICIT_enum_value               = 2\n\tFeatureSet_LEGACY_REQUIRED_enum_value        = 3\n)\n\n// Full and short names for google.protobuf.FeatureSet.EnumType.\nconst (\n\tFeatureSet_EnumType_enum_fullname = \"google.protobuf.FeatureSet.EnumType\"\n\tFeatureSet_EnumType_enum_name     = \"EnumType\"\n)\n\n// Enum values for google.protobuf.FeatureSet.EnumType.\nconst (\n\tFeatureSet_ENUM_TYPE_UNKNOWN_enum_value = 0\n\tFeatureSet_OPEN_enum_value              = 1\n\tFeatureSet_CLOSED_enum_value            = 2\n)\n\n// Full and short names for google.protobuf.FeatureSet.RepeatedFieldEncoding.\nconst (\n\tFeatureSet_RepeatedFieldEncoding_enum_fullname = \"google.protobuf.FeatureSet.RepeatedFieldEncoding\"\n\tFeatureSet_RepeatedFieldEncoding_enum_name     = \"RepeatedFieldEncoding\"\n)\n\n// Enum values for google.protobuf.FeatureSet.RepeatedFieldEncoding.\nconst (\n\tFeatureSet_REPEATED_FIELD_ENCODING_UNKNOWN_enum_value = 0\n\tFeatureSet_PACKED_enum_value                          = 1\n\tFeatureSet_EXPANDED_enum_value                        = 2\n)\n\n// Full and short names for google.protobuf.FeatureSet.Utf8Validation.\nconst (\n\tFeatureSet_Utf8Validation_enum_fullname = \"google.protobuf.FeatureSet.Utf8Validation\"\n\tFeatureSet_Utf8Validation_enum_name     = \"Utf8Validation\"\n)\n\n// Enum values for google.protobuf.FeatureSet.Utf8Validation.\nconst (\n\tFeatureSet_UTF8_VALIDATION_UNKNOWN_enum_value = 0\n\tFeatureSet_VERIFY_enum_value                  = 2\n\tFeatureSet_NONE_enum_value                    = 3\n)\n\n// Full and short names for google.protobuf.FeatureSet.MessageEncoding.\nconst (\n\tFeatureSet_MessageEncoding_enum_fullname = \"google.protobuf.FeatureSet.MessageEncoding\"\n\tFeatureSet_MessageEncoding_enum_name     = \"MessageEncoding\"\n)\n\n// Enum values for google.protobuf.FeatureSet.MessageEncoding.\nconst (\n\tFeatureSet_MESSAGE_ENCODING_UNKNOWN_enum_value = 0\n\tFeatureSet_LENGTH_PREFIXED_enum_value          = 1\n\tFeatureSet_DELIMITED_enum_value                = 2\n)\n\n// Full and short names for google.protobuf.FeatureSet.JsonFormat.\nconst (\n\tFeatureSet_JsonFormat_enum_fullname = \"google.protobuf.FeatureSet.JsonFormat\"\n\tFeatureSet_JsonFormat_enum_name     = \"JsonFormat\"\n)\n\n// Enum values for google.protobuf.FeatureSet.JsonFormat.\nconst (\n\tFeatureSet_JSON_FORMAT_UNKNOWN_enum_value = 0\n\tFeatureSet_ALLOW_enum_value               = 1\n\tFeatureSet_LEGACY_BEST_EFFORT_enum_value  = 2\n)\n\n// Full and short names for google.protobuf.FeatureSet.EnforceNamingStyle.\nconst (\n\tFeatureSet_EnforceNamingStyle_enum_fullname = \"google.protobuf.FeatureSet.EnforceNamingStyle\"\n\tFeatureSet_EnforceNamingStyle_enum_name     = \"EnforceNamingStyle\"\n)\n\n// Enum values for google.protobuf.FeatureSet.EnforceNamingStyle.\nconst (\n\tFeatureSet_ENFORCE_NAMING_STYLE_UNKNOWN_enum_value = 0\n\tFeatureSet_STYLE2024_enum_value                    = 1\n\tFeatureSet_STYLE_LEGACY_enum_value                 = 2\n)\n\n// Names for google.protobuf.FeatureSet.VisibilityFeature.\nconst (\n\tFeatureSet_VisibilityFeature_message_name     protoreflect.Name     = \"VisibilityFeature\"\n\tFeatureSet_VisibilityFeature_message_fullname protoreflect.FullName = \"google.protobuf.FeatureSet.VisibilityFeature\"\n)\n\n// Full and short names for google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility.\nconst (\n\tFeatureSet_VisibilityFeature_DefaultSymbolVisibility_enum_fullname = \"google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility\"\n\tFeatureSet_VisibilityFeature_DefaultSymbolVisibility_enum_name     = \"DefaultSymbolVisibility\"\n)\n\n// Enum values for google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility.\nconst (\n\tFeatureSet_VisibilityFeature_DEFAULT_SYMBOL_VISIBILITY_UNKNOWN_enum_value = 0\n\tFeatureSet_VisibilityFeature_EXPORT_ALL_enum_value                        = 1\n\tFeatureSet_VisibilityFeature_EXPORT_TOP_LEVEL_enum_value                  = 2\n\tFeatureSet_VisibilityFeature_LOCAL_ALL_enum_value                         = 3\n\tFeatureSet_VisibilityFeature_STRICT_enum_value                            = 4\n)\n\n// Names for google.protobuf.FeatureSetDefaults.\nconst (\n\tFeatureSetDefaults_message_name     protoreflect.Name     = \"FeatureSetDefaults\"\n\tFeatureSetDefaults_message_fullname protoreflect.FullName = \"google.protobuf.FeatureSetDefaults\"\n)\n\n// Field names for google.protobuf.FeatureSetDefaults.\nconst (\n\tFeatureSetDefaults_Defaults_field_name       protoreflect.Name = \"defaults\"\n\tFeatureSetDefaults_MinimumEdition_field_name protoreflect.Name = \"minimum_edition\"\n\tFeatureSetDefaults_MaximumEdition_field_name protoreflect.Name = \"maximum_edition\"\n\n\tFeatureSetDefaults_Defaults_field_fullname       protoreflect.FullName = \"google.protobuf.FeatureSetDefaults.defaults\"\n\tFeatureSetDefaults_MinimumEdition_field_fullname protoreflect.FullName = \"google.protobuf.FeatureSetDefaults.minimum_edition\"\n\tFeatureSetDefaults_MaximumEdition_field_fullname protoreflect.FullName = \"google.protobuf.FeatureSetDefaults.maximum_edition\"\n)\n\n// Field numbers for google.protobuf.FeatureSetDefaults.\nconst (\n\tFeatureSetDefaults_Defaults_field_number       protoreflect.FieldNumber = 1\n\tFeatureSetDefaults_MinimumEdition_field_number protoreflect.FieldNumber = 4\n\tFeatureSetDefaults_MaximumEdition_field_number protoreflect.FieldNumber = 5\n)\n\n// Names for google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.\nconst (\n\tFeatureSetDefaults_FeatureSetEditionDefault_message_name     protoreflect.Name     = \"FeatureSetEditionDefault\"\n\tFeatureSetDefaults_FeatureSetEditionDefault_message_fullname protoreflect.FullName = \"google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault\"\n)\n\n// Field names for google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.\nconst (\n\tFeatureSetDefaults_FeatureSetEditionDefault_Edition_field_name             protoreflect.Name = \"edition\"\n\tFeatureSetDefaults_FeatureSetEditionDefault_OverridableFeatures_field_name protoreflect.Name = \"overridable_features\"\n\tFeatureSetDefaults_FeatureSetEditionDefault_FixedFeatures_field_name       protoreflect.Name = \"fixed_features\"\n\n\tFeatureSetDefaults_FeatureSetEditionDefault_Edition_field_fullname             protoreflect.FullName = \"google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.edition\"\n\tFeatureSetDefaults_FeatureSetEditionDefault_OverridableFeatures_field_fullname protoreflect.FullName = \"google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.overridable_features\"\n\tFeatureSetDefaults_FeatureSetEditionDefault_FixedFeatures_field_fullname       protoreflect.FullName = \"google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.fixed_features\"\n)\n\n// Field numbers for google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.\nconst (\n\tFeatureSetDefaults_FeatureSetEditionDefault_Edition_field_number             protoreflect.FieldNumber = 3\n\tFeatureSetDefaults_FeatureSetEditionDefault_OverridableFeatures_field_number protoreflect.FieldNumber = 4\n\tFeatureSetDefaults_FeatureSetEditionDefault_FixedFeatures_field_number       protoreflect.FieldNumber = 5\n)\n\n// Names for google.protobuf.SourceCodeInfo.\nconst (\n\tSourceCodeInfo_message_name     protoreflect.Name     = \"SourceCodeInfo\"\n\tSourceCodeInfo_message_fullname protoreflect.FullName = \"google.protobuf.SourceCodeInfo\"\n)\n\n// Field names for google.protobuf.SourceCodeInfo.\nconst (\n\tSourceCodeInfo_Location_field_name protoreflect.Name = \"location\"\n\n\tSourceCodeInfo_Location_field_fullname protoreflect.FullName = \"google.protobuf.SourceCodeInfo.location\"\n)\n\n// Field numbers for google.protobuf.SourceCodeInfo.\nconst (\n\tSourceCodeInfo_Location_field_number protoreflect.FieldNumber = 1\n)\n\n// Names for google.protobuf.SourceCodeInfo.Location.\nconst (\n\tSourceCodeInfo_Location_message_name     protoreflect.Name     = \"Location\"\n\tSourceCodeInfo_Location_message_fullname protoreflect.FullName = \"google.protobuf.SourceCodeInfo.Location\"\n)\n\n// Field names for google.protobuf.SourceCodeInfo.Location.\nconst (\n\tSourceCodeInfo_Location_Path_field_name                    protoreflect.Name = \"path\"\n\tSourceCodeInfo_Location_Span_field_name                    protoreflect.Name = \"span\"\n\tSourceCodeInfo_Location_LeadingComments_field_name         protoreflect.Name = \"leading_comments\"\n\tSourceCodeInfo_Location_TrailingComments_field_name        protoreflect.Name = \"trailing_comments\"\n\tSourceCodeInfo_Location_LeadingDetachedComments_field_name protoreflect.Name = \"leading_detached_comments\"\n\n\tSourceCodeInfo_Location_Path_field_fullname                    protoreflect.FullName = \"google.protobuf.SourceCodeInfo.Location.path\"\n\tSourceCodeInfo_Location_Span_field_fullname                    protoreflect.FullName = \"google.protobuf.SourceCodeInfo.Location.span\"\n\tSourceCodeInfo_Location_LeadingComments_field_fullname         protoreflect.FullName = \"google.protobuf.SourceCodeInfo.Location.leading_comments\"\n\tSourceCodeInfo_Location_TrailingComments_field_fullname        protoreflect.FullName = \"google.protobuf.SourceCodeInfo.Location.trailing_comments\"\n\tSourceCodeInfo_Location_LeadingDetachedComments_field_fullname protoreflect.FullName = \"google.protobuf.SourceCodeInfo.Location.leading_detached_comments\"\n)\n\n// Field numbers for google.protobuf.SourceCodeInfo.Location.\nconst (\n\tSourceCodeInfo_Location_Path_field_number                    protoreflect.FieldNumber = 1\n\tSourceCodeInfo_Location_Span_field_number                    protoreflect.FieldNumber = 2\n\tSourceCodeInfo_Location_LeadingComments_field_number         protoreflect.FieldNumber = 3\n\tSourceCodeInfo_Location_TrailingComments_field_number        protoreflect.FieldNumber = 4\n\tSourceCodeInfo_Location_LeadingDetachedComments_field_number protoreflect.FieldNumber = 6\n)\n\n// Names for google.protobuf.GeneratedCodeInfo.\nconst (\n\tGeneratedCodeInfo_message_name     protoreflect.Name     = \"GeneratedCodeInfo\"\n\tGeneratedCodeInfo_message_fullname protoreflect.FullName = \"google.protobuf.GeneratedCodeInfo\"\n)\n\n// Field names for google.protobuf.GeneratedCodeInfo.\nconst (\n\tGeneratedCodeInfo_Annotation_field_name protoreflect.Name = \"annotation\"\n\n\tGeneratedCodeInfo_Annotation_field_fullname protoreflect.FullName = \"google.protobuf.GeneratedCodeInfo.annotation\"\n)\n\n// Field numbers for google.protobuf.GeneratedCodeInfo.\nconst (\n\tGeneratedCodeInfo_Annotation_field_number protoreflect.FieldNumber = 1\n)\n\n// Names for google.protobuf.GeneratedCodeInfo.Annotation.\nconst (\n\tGeneratedCodeInfo_Annotation_message_name     protoreflect.Name     = \"Annotation\"\n\tGeneratedCodeInfo_Annotation_message_fullname protoreflect.FullName = \"google.protobuf.GeneratedCodeInfo.Annotation\"\n)\n\n// Field names for google.protobuf.GeneratedCodeInfo.Annotation.\nconst (\n\tGeneratedCodeInfo_Annotation_Path_field_name       protoreflect.Name = \"path\"\n\tGeneratedCodeInfo_Annotation_SourceFile_field_name protoreflect.Name = \"source_file\"\n\tGeneratedCodeInfo_Annotation_Begin_field_name      protoreflect.Name = \"begin\"\n\tGeneratedCodeInfo_Annotation_End_field_name        protoreflect.Name = \"end\"\n\tGeneratedCodeInfo_Annotation_Semantic_field_name   protoreflect.Name = \"semantic\"\n\n\tGeneratedCodeInfo_Annotation_Path_field_fullname       protoreflect.FullName = \"google.protobuf.GeneratedCodeInfo.Annotation.path\"\n\tGeneratedCodeInfo_Annotation_SourceFile_field_fullname protoreflect.FullName = \"google.protobuf.GeneratedCodeInfo.Annotation.source_file\"\n\tGeneratedCodeInfo_Annotation_Begin_field_fullname      protoreflect.FullName = \"google.protobuf.GeneratedCodeInfo.Annotation.begin\"\n\tGeneratedCodeInfo_Annotation_End_field_fullname        protoreflect.FullName = \"google.protobuf.GeneratedCodeInfo.Annotation.end\"\n\tGeneratedCodeInfo_Annotation_Semantic_field_fullname   protoreflect.FullName = \"google.protobuf.GeneratedCodeInfo.Annotation.semantic\"\n)\n\n// Field numbers for google.protobuf.GeneratedCodeInfo.Annotation.\nconst (\n\tGeneratedCodeInfo_Annotation_Path_field_number       protoreflect.FieldNumber = 1\n\tGeneratedCodeInfo_Annotation_SourceFile_field_number protoreflect.FieldNumber = 2\n\tGeneratedCodeInfo_Annotation_Begin_field_number      protoreflect.FieldNumber = 3\n\tGeneratedCodeInfo_Annotation_End_field_number        protoreflect.FieldNumber = 4\n\tGeneratedCodeInfo_Annotation_Semantic_field_number   protoreflect.FieldNumber = 5\n)\n\n// Full and short names for google.protobuf.GeneratedCodeInfo.Annotation.Semantic.\nconst (\n\tGeneratedCodeInfo_Annotation_Semantic_enum_fullname = \"google.protobuf.GeneratedCodeInfo.Annotation.Semantic\"\n\tGeneratedCodeInfo_Annotation_Semantic_enum_name     = \"Semantic\"\n)\n\n// Enum values for google.protobuf.GeneratedCodeInfo.Annotation.Semantic.\nconst (\n\tGeneratedCodeInfo_Annotation_NONE_enum_value  = 0\n\tGeneratedCodeInfo_Annotation_SET_enum_value   = 1\n\tGeneratedCodeInfo_Annotation_ALIAS_enum_value = 2\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/genid/doc.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package genid contains constants for declarations in descriptor.proto\n// and the well-known types.\npackage genid\n\nimport \"google.golang.org/protobuf/reflect/protoreflect\"\n\nconst GoogleProtobuf_package protoreflect.FullName = \"google.protobuf\"\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/genid/duration_gen.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-protos. DO NOT EDIT.\n\npackage genid\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nconst File_google_protobuf_duration_proto = \"google/protobuf/duration.proto\"\n\n// Names for google.protobuf.Duration.\nconst (\n\tDuration_message_name     protoreflect.Name     = \"Duration\"\n\tDuration_message_fullname protoreflect.FullName = \"google.protobuf.Duration\"\n)\n\n// Field names for google.protobuf.Duration.\nconst (\n\tDuration_Seconds_field_name protoreflect.Name = \"seconds\"\n\tDuration_Nanos_field_name   protoreflect.Name = \"nanos\"\n\n\tDuration_Seconds_field_fullname protoreflect.FullName = \"google.protobuf.Duration.seconds\"\n\tDuration_Nanos_field_fullname   protoreflect.FullName = \"google.protobuf.Duration.nanos\"\n)\n\n// Field numbers for google.protobuf.Duration.\nconst (\n\tDuration_Seconds_field_number protoreflect.FieldNumber = 1\n\tDuration_Nanos_field_number   protoreflect.FieldNumber = 2\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/genid/empty_gen.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-protos. DO NOT EDIT.\n\npackage genid\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nconst File_google_protobuf_empty_proto = \"google/protobuf/empty.proto\"\n\n// Names for google.protobuf.Empty.\nconst (\n\tEmpty_message_name     protoreflect.Name     = \"Empty\"\n\tEmpty_message_fullname protoreflect.FullName = \"google.protobuf.Empty\"\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/genid/field_mask_gen.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-protos. DO NOT EDIT.\n\npackage genid\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nconst File_google_protobuf_field_mask_proto = \"google/protobuf/field_mask.proto\"\n\n// Names for google.protobuf.FieldMask.\nconst (\n\tFieldMask_message_name     protoreflect.Name     = \"FieldMask\"\n\tFieldMask_message_fullname protoreflect.FullName = \"google.protobuf.FieldMask\"\n)\n\n// Field names for google.protobuf.FieldMask.\nconst (\n\tFieldMask_Paths_field_name protoreflect.Name = \"paths\"\n\n\tFieldMask_Paths_field_fullname protoreflect.FullName = \"google.protobuf.FieldMask.paths\"\n)\n\n// Field numbers for google.protobuf.FieldMask.\nconst (\n\tFieldMask_Paths_field_number protoreflect.FieldNumber = 1\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/genid/go_features_gen.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-protos. DO NOT EDIT.\n\npackage genid\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nconst File_google_protobuf_go_features_proto = \"google/protobuf/go_features.proto\"\n\n// Names for pb.GoFeatures.\nconst (\n\tGoFeatures_message_name     protoreflect.Name     = \"GoFeatures\"\n\tGoFeatures_message_fullname protoreflect.FullName = \"pb.GoFeatures\"\n)\n\n// Field names for pb.GoFeatures.\nconst (\n\tGoFeatures_LegacyUnmarshalJsonEnum_field_name protoreflect.Name = \"legacy_unmarshal_json_enum\"\n\tGoFeatures_ApiLevel_field_name                protoreflect.Name = \"api_level\"\n\tGoFeatures_StripEnumPrefix_field_name         protoreflect.Name = \"strip_enum_prefix\"\n\n\tGoFeatures_LegacyUnmarshalJsonEnum_field_fullname protoreflect.FullName = \"pb.GoFeatures.legacy_unmarshal_json_enum\"\n\tGoFeatures_ApiLevel_field_fullname                protoreflect.FullName = \"pb.GoFeatures.api_level\"\n\tGoFeatures_StripEnumPrefix_field_fullname         protoreflect.FullName = \"pb.GoFeatures.strip_enum_prefix\"\n)\n\n// Field numbers for pb.GoFeatures.\nconst (\n\tGoFeatures_LegacyUnmarshalJsonEnum_field_number protoreflect.FieldNumber = 1\n\tGoFeatures_ApiLevel_field_number                protoreflect.FieldNumber = 2\n\tGoFeatures_StripEnumPrefix_field_number         protoreflect.FieldNumber = 3\n)\n\n// Full and short names for pb.GoFeatures.APILevel.\nconst (\n\tGoFeatures_APILevel_enum_fullname = \"pb.GoFeatures.APILevel\"\n\tGoFeatures_APILevel_enum_name     = \"APILevel\"\n)\n\n// Enum values for pb.GoFeatures.APILevel.\nconst (\n\tGoFeatures_API_LEVEL_UNSPECIFIED_enum_value = 0\n\tGoFeatures_API_OPEN_enum_value              = 1\n\tGoFeatures_API_HYBRID_enum_value            = 2\n\tGoFeatures_API_OPAQUE_enum_value            = 3\n)\n\n// Full and short names for pb.GoFeatures.StripEnumPrefix.\nconst (\n\tGoFeatures_StripEnumPrefix_enum_fullname = \"pb.GoFeatures.StripEnumPrefix\"\n\tGoFeatures_StripEnumPrefix_enum_name     = \"StripEnumPrefix\"\n)\n\n// Enum values for pb.GoFeatures.StripEnumPrefix.\nconst (\n\tGoFeatures_STRIP_ENUM_PREFIX_UNSPECIFIED_enum_value   = 0\n\tGoFeatures_STRIP_ENUM_PREFIX_KEEP_enum_value          = 1\n\tGoFeatures_STRIP_ENUM_PREFIX_GENERATE_BOTH_enum_value = 2\n\tGoFeatures_STRIP_ENUM_PREFIX_STRIP_enum_value         = 3\n)\n\n// Extension numbers\nconst (\n\tFeatureSet_Go_ext_number protoreflect.FieldNumber = 1002\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/genid/goname.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage genid\n\n// Go names of implementation-specific struct fields in generated messages.\nconst (\n\tState_goname = \"state\"\n\n\tSizeCache_goname  = \"sizeCache\"\n\tSizeCacheA_goname = \"XXX_sizecache\"\n\n\tUnknownFields_goname  = \"unknownFields\"\n\tUnknownFieldsA_goname = \"XXX_unrecognized\"\n\n\tExtensionFields_goname  = \"extensionFields\"\n\tExtensionFieldsA_goname = \"XXX_InternalExtensions\"\n\tExtensionFieldsB_goname = \"XXX_extensions\"\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/genid/map_entry.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage genid\n\nimport \"google.golang.org/protobuf/reflect/protoreflect\"\n\n// Generic field names and numbers for synthetic map entry messages.\nconst (\n\tMapEntry_Key_field_name   protoreflect.Name = \"key\"\n\tMapEntry_Value_field_name protoreflect.Name = \"value\"\n\n\tMapEntry_Key_field_number   protoreflect.FieldNumber = 1\n\tMapEntry_Value_field_number protoreflect.FieldNumber = 2\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/genid/name.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage genid\n\nconst (\n\tNoUnkeyedLiteral_goname  = \"noUnkeyedLiteral\"\n\tNoUnkeyedLiteralA_goname = \"XXX_NoUnkeyedLiteral\"\n\n\tBuilderSuffix_goname = \"_builder\"\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/genid/source_context_gen.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-protos. DO NOT EDIT.\n\npackage genid\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nconst File_google_protobuf_source_context_proto = \"google/protobuf/source_context.proto\"\n\n// Names for google.protobuf.SourceContext.\nconst (\n\tSourceContext_message_name     protoreflect.Name     = \"SourceContext\"\n\tSourceContext_message_fullname protoreflect.FullName = \"google.protobuf.SourceContext\"\n)\n\n// Field names for google.protobuf.SourceContext.\nconst (\n\tSourceContext_FileName_field_name protoreflect.Name = \"file_name\"\n\n\tSourceContext_FileName_field_fullname protoreflect.FullName = \"google.protobuf.SourceContext.file_name\"\n)\n\n// Field numbers for google.protobuf.SourceContext.\nconst (\n\tSourceContext_FileName_field_number protoreflect.FieldNumber = 1\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/genid/struct_gen.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-protos. DO NOT EDIT.\n\npackage genid\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nconst File_google_protobuf_struct_proto = \"google/protobuf/struct.proto\"\n\n// Full and short names for google.protobuf.NullValue.\nconst (\n\tNullValue_enum_fullname = \"google.protobuf.NullValue\"\n\tNullValue_enum_name     = \"NullValue\"\n)\n\n// Enum values for google.protobuf.NullValue.\nconst (\n\tNullValue_NULL_VALUE_enum_value = 0\n)\n\n// Names for google.protobuf.Struct.\nconst (\n\tStruct_message_name     protoreflect.Name     = \"Struct\"\n\tStruct_message_fullname protoreflect.FullName = \"google.protobuf.Struct\"\n)\n\n// Field names for google.protobuf.Struct.\nconst (\n\tStruct_Fields_field_name protoreflect.Name = \"fields\"\n\n\tStruct_Fields_field_fullname protoreflect.FullName = \"google.protobuf.Struct.fields\"\n)\n\n// Field numbers for google.protobuf.Struct.\nconst (\n\tStruct_Fields_field_number protoreflect.FieldNumber = 1\n)\n\n// Names for google.protobuf.Struct.FieldsEntry.\nconst (\n\tStruct_FieldsEntry_message_name     protoreflect.Name     = \"FieldsEntry\"\n\tStruct_FieldsEntry_message_fullname protoreflect.FullName = \"google.protobuf.Struct.FieldsEntry\"\n)\n\n// Field names for google.protobuf.Struct.FieldsEntry.\nconst (\n\tStruct_FieldsEntry_Key_field_name   protoreflect.Name = \"key\"\n\tStruct_FieldsEntry_Value_field_name protoreflect.Name = \"value\"\n\n\tStruct_FieldsEntry_Key_field_fullname   protoreflect.FullName = \"google.protobuf.Struct.FieldsEntry.key\"\n\tStruct_FieldsEntry_Value_field_fullname protoreflect.FullName = \"google.protobuf.Struct.FieldsEntry.value\"\n)\n\n// Field numbers for google.protobuf.Struct.FieldsEntry.\nconst (\n\tStruct_FieldsEntry_Key_field_number   protoreflect.FieldNumber = 1\n\tStruct_FieldsEntry_Value_field_number protoreflect.FieldNumber = 2\n)\n\n// Names for google.protobuf.Value.\nconst (\n\tValue_message_name     protoreflect.Name     = \"Value\"\n\tValue_message_fullname protoreflect.FullName = \"google.protobuf.Value\"\n)\n\n// Field names for google.protobuf.Value.\nconst (\n\tValue_NullValue_field_name   protoreflect.Name = \"null_value\"\n\tValue_NumberValue_field_name protoreflect.Name = \"number_value\"\n\tValue_StringValue_field_name protoreflect.Name = \"string_value\"\n\tValue_BoolValue_field_name   protoreflect.Name = \"bool_value\"\n\tValue_StructValue_field_name protoreflect.Name = \"struct_value\"\n\tValue_ListValue_field_name   protoreflect.Name = \"list_value\"\n\n\tValue_NullValue_field_fullname   protoreflect.FullName = \"google.protobuf.Value.null_value\"\n\tValue_NumberValue_field_fullname protoreflect.FullName = \"google.protobuf.Value.number_value\"\n\tValue_StringValue_field_fullname protoreflect.FullName = \"google.protobuf.Value.string_value\"\n\tValue_BoolValue_field_fullname   protoreflect.FullName = \"google.protobuf.Value.bool_value\"\n\tValue_StructValue_field_fullname protoreflect.FullName = \"google.protobuf.Value.struct_value\"\n\tValue_ListValue_field_fullname   protoreflect.FullName = \"google.protobuf.Value.list_value\"\n)\n\n// Field numbers for google.protobuf.Value.\nconst (\n\tValue_NullValue_field_number   protoreflect.FieldNumber = 1\n\tValue_NumberValue_field_number protoreflect.FieldNumber = 2\n\tValue_StringValue_field_number protoreflect.FieldNumber = 3\n\tValue_BoolValue_field_number   protoreflect.FieldNumber = 4\n\tValue_StructValue_field_number protoreflect.FieldNumber = 5\n\tValue_ListValue_field_number   protoreflect.FieldNumber = 6\n)\n\n// Oneof names for google.protobuf.Value.\nconst (\n\tValue_Kind_oneof_name protoreflect.Name = \"kind\"\n\n\tValue_Kind_oneof_fullname protoreflect.FullName = \"google.protobuf.Value.kind\"\n)\n\n// Names for google.protobuf.ListValue.\nconst (\n\tListValue_message_name     protoreflect.Name     = \"ListValue\"\n\tListValue_message_fullname protoreflect.FullName = \"google.protobuf.ListValue\"\n)\n\n// Field names for google.protobuf.ListValue.\nconst (\n\tListValue_Values_field_name protoreflect.Name = \"values\"\n\n\tListValue_Values_field_fullname protoreflect.FullName = \"google.protobuf.ListValue.values\"\n)\n\n// Field numbers for google.protobuf.ListValue.\nconst (\n\tListValue_Values_field_number protoreflect.FieldNumber = 1\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/genid/timestamp_gen.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-protos. DO NOT EDIT.\n\npackage genid\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nconst File_google_protobuf_timestamp_proto = \"google/protobuf/timestamp.proto\"\n\n// Names for google.protobuf.Timestamp.\nconst (\n\tTimestamp_message_name     protoreflect.Name     = \"Timestamp\"\n\tTimestamp_message_fullname protoreflect.FullName = \"google.protobuf.Timestamp\"\n)\n\n// Field names for google.protobuf.Timestamp.\nconst (\n\tTimestamp_Seconds_field_name protoreflect.Name = \"seconds\"\n\tTimestamp_Nanos_field_name   protoreflect.Name = \"nanos\"\n\n\tTimestamp_Seconds_field_fullname protoreflect.FullName = \"google.protobuf.Timestamp.seconds\"\n\tTimestamp_Nanos_field_fullname   protoreflect.FullName = \"google.protobuf.Timestamp.nanos\"\n)\n\n// Field numbers for google.protobuf.Timestamp.\nconst (\n\tTimestamp_Seconds_field_number protoreflect.FieldNumber = 1\n\tTimestamp_Nanos_field_number   protoreflect.FieldNumber = 2\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/genid/type_gen.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-protos. DO NOT EDIT.\n\npackage genid\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nconst File_google_protobuf_type_proto = \"google/protobuf/type.proto\"\n\n// Full and short names for google.protobuf.Syntax.\nconst (\n\tSyntax_enum_fullname = \"google.protobuf.Syntax\"\n\tSyntax_enum_name     = \"Syntax\"\n)\n\n// Enum values for google.protobuf.Syntax.\nconst (\n\tSyntax_SYNTAX_PROTO2_enum_value   = 0\n\tSyntax_SYNTAX_PROTO3_enum_value   = 1\n\tSyntax_SYNTAX_EDITIONS_enum_value = 2\n)\n\n// Names for google.protobuf.Type.\nconst (\n\tType_message_name     protoreflect.Name     = \"Type\"\n\tType_message_fullname protoreflect.FullName = \"google.protobuf.Type\"\n)\n\n// Field names for google.protobuf.Type.\nconst (\n\tType_Name_field_name          protoreflect.Name = \"name\"\n\tType_Fields_field_name        protoreflect.Name = \"fields\"\n\tType_Oneofs_field_name        protoreflect.Name = \"oneofs\"\n\tType_Options_field_name       protoreflect.Name = \"options\"\n\tType_SourceContext_field_name protoreflect.Name = \"source_context\"\n\tType_Syntax_field_name        protoreflect.Name = \"syntax\"\n\tType_Edition_field_name       protoreflect.Name = \"edition\"\n\n\tType_Name_field_fullname          protoreflect.FullName = \"google.protobuf.Type.name\"\n\tType_Fields_field_fullname        protoreflect.FullName = \"google.protobuf.Type.fields\"\n\tType_Oneofs_field_fullname        protoreflect.FullName = \"google.protobuf.Type.oneofs\"\n\tType_Options_field_fullname       protoreflect.FullName = \"google.protobuf.Type.options\"\n\tType_SourceContext_field_fullname protoreflect.FullName = \"google.protobuf.Type.source_context\"\n\tType_Syntax_field_fullname        protoreflect.FullName = \"google.protobuf.Type.syntax\"\n\tType_Edition_field_fullname       protoreflect.FullName = \"google.protobuf.Type.edition\"\n)\n\n// Field numbers for google.protobuf.Type.\nconst (\n\tType_Name_field_number          protoreflect.FieldNumber = 1\n\tType_Fields_field_number        protoreflect.FieldNumber = 2\n\tType_Oneofs_field_number        protoreflect.FieldNumber = 3\n\tType_Options_field_number       protoreflect.FieldNumber = 4\n\tType_SourceContext_field_number protoreflect.FieldNumber = 5\n\tType_Syntax_field_number        protoreflect.FieldNumber = 6\n\tType_Edition_field_number       protoreflect.FieldNumber = 7\n)\n\n// Names for google.protobuf.Field.\nconst (\n\tField_message_name     protoreflect.Name     = \"Field\"\n\tField_message_fullname protoreflect.FullName = \"google.protobuf.Field\"\n)\n\n// Field names for google.protobuf.Field.\nconst (\n\tField_Kind_field_name         protoreflect.Name = \"kind\"\n\tField_Cardinality_field_name  protoreflect.Name = \"cardinality\"\n\tField_Number_field_name       protoreflect.Name = \"number\"\n\tField_Name_field_name         protoreflect.Name = \"name\"\n\tField_TypeUrl_field_name      protoreflect.Name = \"type_url\"\n\tField_OneofIndex_field_name   protoreflect.Name = \"oneof_index\"\n\tField_Packed_field_name       protoreflect.Name = \"packed\"\n\tField_Options_field_name      protoreflect.Name = \"options\"\n\tField_JsonName_field_name     protoreflect.Name = \"json_name\"\n\tField_DefaultValue_field_name protoreflect.Name = \"default_value\"\n\n\tField_Kind_field_fullname         protoreflect.FullName = \"google.protobuf.Field.kind\"\n\tField_Cardinality_field_fullname  protoreflect.FullName = \"google.protobuf.Field.cardinality\"\n\tField_Number_field_fullname       protoreflect.FullName = \"google.protobuf.Field.number\"\n\tField_Name_field_fullname         protoreflect.FullName = \"google.protobuf.Field.name\"\n\tField_TypeUrl_field_fullname      protoreflect.FullName = \"google.protobuf.Field.type_url\"\n\tField_OneofIndex_field_fullname   protoreflect.FullName = \"google.protobuf.Field.oneof_index\"\n\tField_Packed_field_fullname       protoreflect.FullName = \"google.protobuf.Field.packed\"\n\tField_Options_field_fullname      protoreflect.FullName = \"google.protobuf.Field.options\"\n\tField_JsonName_field_fullname     protoreflect.FullName = \"google.protobuf.Field.json_name\"\n\tField_DefaultValue_field_fullname protoreflect.FullName = \"google.protobuf.Field.default_value\"\n)\n\n// Field numbers for google.protobuf.Field.\nconst (\n\tField_Kind_field_number         protoreflect.FieldNumber = 1\n\tField_Cardinality_field_number  protoreflect.FieldNumber = 2\n\tField_Number_field_number       protoreflect.FieldNumber = 3\n\tField_Name_field_number         protoreflect.FieldNumber = 4\n\tField_TypeUrl_field_number      protoreflect.FieldNumber = 6\n\tField_OneofIndex_field_number   protoreflect.FieldNumber = 7\n\tField_Packed_field_number       protoreflect.FieldNumber = 8\n\tField_Options_field_number      protoreflect.FieldNumber = 9\n\tField_JsonName_field_number     protoreflect.FieldNumber = 10\n\tField_DefaultValue_field_number protoreflect.FieldNumber = 11\n)\n\n// Full and short names for google.protobuf.Field.Kind.\nconst (\n\tField_Kind_enum_fullname = \"google.protobuf.Field.Kind\"\n\tField_Kind_enum_name     = \"Kind\"\n)\n\n// Enum values for google.protobuf.Field.Kind.\nconst (\n\tField_TYPE_UNKNOWN_enum_value  = 0\n\tField_TYPE_DOUBLE_enum_value   = 1\n\tField_TYPE_FLOAT_enum_value    = 2\n\tField_TYPE_INT64_enum_value    = 3\n\tField_TYPE_UINT64_enum_value   = 4\n\tField_TYPE_INT32_enum_value    = 5\n\tField_TYPE_FIXED64_enum_value  = 6\n\tField_TYPE_FIXED32_enum_value  = 7\n\tField_TYPE_BOOL_enum_value     = 8\n\tField_TYPE_STRING_enum_value   = 9\n\tField_TYPE_GROUP_enum_value    = 10\n\tField_TYPE_MESSAGE_enum_value  = 11\n\tField_TYPE_BYTES_enum_value    = 12\n\tField_TYPE_UINT32_enum_value   = 13\n\tField_TYPE_ENUM_enum_value     = 14\n\tField_TYPE_SFIXED32_enum_value = 15\n\tField_TYPE_SFIXED64_enum_value = 16\n\tField_TYPE_SINT32_enum_value   = 17\n\tField_TYPE_SINT64_enum_value   = 18\n)\n\n// Full and short names for google.protobuf.Field.Cardinality.\nconst (\n\tField_Cardinality_enum_fullname = \"google.protobuf.Field.Cardinality\"\n\tField_Cardinality_enum_name     = \"Cardinality\"\n)\n\n// Enum values for google.protobuf.Field.Cardinality.\nconst (\n\tField_CARDINALITY_UNKNOWN_enum_value  = 0\n\tField_CARDINALITY_OPTIONAL_enum_value = 1\n\tField_CARDINALITY_REQUIRED_enum_value = 2\n\tField_CARDINALITY_REPEATED_enum_value = 3\n)\n\n// Names for google.protobuf.Enum.\nconst (\n\tEnum_message_name     protoreflect.Name     = \"Enum\"\n\tEnum_message_fullname protoreflect.FullName = \"google.protobuf.Enum\"\n)\n\n// Field names for google.protobuf.Enum.\nconst (\n\tEnum_Name_field_name          protoreflect.Name = \"name\"\n\tEnum_Enumvalue_field_name     protoreflect.Name = \"enumvalue\"\n\tEnum_Options_field_name       protoreflect.Name = \"options\"\n\tEnum_SourceContext_field_name protoreflect.Name = \"source_context\"\n\tEnum_Syntax_field_name        protoreflect.Name = \"syntax\"\n\tEnum_Edition_field_name       protoreflect.Name = \"edition\"\n\n\tEnum_Name_field_fullname          protoreflect.FullName = \"google.protobuf.Enum.name\"\n\tEnum_Enumvalue_field_fullname     protoreflect.FullName = \"google.protobuf.Enum.enumvalue\"\n\tEnum_Options_field_fullname       protoreflect.FullName = \"google.protobuf.Enum.options\"\n\tEnum_SourceContext_field_fullname protoreflect.FullName = \"google.protobuf.Enum.source_context\"\n\tEnum_Syntax_field_fullname        protoreflect.FullName = \"google.protobuf.Enum.syntax\"\n\tEnum_Edition_field_fullname       protoreflect.FullName = \"google.protobuf.Enum.edition\"\n)\n\n// Field numbers for google.protobuf.Enum.\nconst (\n\tEnum_Name_field_number          protoreflect.FieldNumber = 1\n\tEnum_Enumvalue_field_number     protoreflect.FieldNumber = 2\n\tEnum_Options_field_number       protoreflect.FieldNumber = 3\n\tEnum_SourceContext_field_number protoreflect.FieldNumber = 4\n\tEnum_Syntax_field_number        protoreflect.FieldNumber = 5\n\tEnum_Edition_field_number       protoreflect.FieldNumber = 6\n)\n\n// Names for google.protobuf.EnumValue.\nconst (\n\tEnumValue_message_name     protoreflect.Name     = \"EnumValue\"\n\tEnumValue_message_fullname protoreflect.FullName = \"google.protobuf.EnumValue\"\n)\n\n// Field names for google.protobuf.EnumValue.\nconst (\n\tEnumValue_Name_field_name    protoreflect.Name = \"name\"\n\tEnumValue_Number_field_name  protoreflect.Name = \"number\"\n\tEnumValue_Options_field_name protoreflect.Name = \"options\"\n\n\tEnumValue_Name_field_fullname    protoreflect.FullName = \"google.protobuf.EnumValue.name\"\n\tEnumValue_Number_field_fullname  protoreflect.FullName = \"google.protobuf.EnumValue.number\"\n\tEnumValue_Options_field_fullname protoreflect.FullName = \"google.protobuf.EnumValue.options\"\n)\n\n// Field numbers for google.protobuf.EnumValue.\nconst (\n\tEnumValue_Name_field_number    protoreflect.FieldNumber = 1\n\tEnumValue_Number_field_number  protoreflect.FieldNumber = 2\n\tEnumValue_Options_field_number protoreflect.FieldNumber = 3\n)\n\n// Names for google.protobuf.Option.\nconst (\n\tOption_message_name     protoreflect.Name     = \"Option\"\n\tOption_message_fullname protoreflect.FullName = \"google.protobuf.Option\"\n)\n\n// Field names for google.protobuf.Option.\nconst (\n\tOption_Name_field_name  protoreflect.Name = \"name\"\n\tOption_Value_field_name protoreflect.Name = \"value\"\n\n\tOption_Name_field_fullname  protoreflect.FullName = \"google.protobuf.Option.name\"\n\tOption_Value_field_fullname protoreflect.FullName = \"google.protobuf.Option.value\"\n)\n\n// Field numbers for google.protobuf.Option.\nconst (\n\tOption_Name_field_number  protoreflect.FieldNumber = 1\n\tOption_Value_field_number protoreflect.FieldNumber = 2\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/genid/wrappers.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage genid\n\nimport \"google.golang.org/protobuf/reflect/protoreflect\"\n\n// Generic field name and number for messages in wrappers.proto.\nconst (\n\tWrapperValue_Value_field_name   protoreflect.Name        = \"value\"\n\tWrapperValue_Value_field_number protoreflect.FieldNumber = 1\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/genid/wrappers_gen.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-protos. DO NOT EDIT.\n\npackage genid\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nconst File_google_protobuf_wrappers_proto = \"google/protobuf/wrappers.proto\"\n\n// Names for google.protobuf.DoubleValue.\nconst (\n\tDoubleValue_message_name     protoreflect.Name     = \"DoubleValue\"\n\tDoubleValue_message_fullname protoreflect.FullName = \"google.protobuf.DoubleValue\"\n)\n\n// Field names for google.protobuf.DoubleValue.\nconst (\n\tDoubleValue_Value_field_name protoreflect.Name = \"value\"\n\n\tDoubleValue_Value_field_fullname protoreflect.FullName = \"google.protobuf.DoubleValue.value\"\n)\n\n// Field numbers for google.protobuf.DoubleValue.\nconst (\n\tDoubleValue_Value_field_number protoreflect.FieldNumber = 1\n)\n\n// Names for google.protobuf.FloatValue.\nconst (\n\tFloatValue_message_name     protoreflect.Name     = \"FloatValue\"\n\tFloatValue_message_fullname protoreflect.FullName = \"google.protobuf.FloatValue\"\n)\n\n// Field names for google.protobuf.FloatValue.\nconst (\n\tFloatValue_Value_field_name protoreflect.Name = \"value\"\n\n\tFloatValue_Value_field_fullname protoreflect.FullName = \"google.protobuf.FloatValue.value\"\n)\n\n// Field numbers for google.protobuf.FloatValue.\nconst (\n\tFloatValue_Value_field_number protoreflect.FieldNumber = 1\n)\n\n// Names for google.protobuf.Int64Value.\nconst (\n\tInt64Value_message_name     protoreflect.Name     = \"Int64Value\"\n\tInt64Value_message_fullname protoreflect.FullName = \"google.protobuf.Int64Value\"\n)\n\n// Field names for google.protobuf.Int64Value.\nconst (\n\tInt64Value_Value_field_name protoreflect.Name = \"value\"\n\n\tInt64Value_Value_field_fullname protoreflect.FullName = \"google.protobuf.Int64Value.value\"\n)\n\n// Field numbers for google.protobuf.Int64Value.\nconst (\n\tInt64Value_Value_field_number protoreflect.FieldNumber = 1\n)\n\n// Names for google.protobuf.UInt64Value.\nconst (\n\tUInt64Value_message_name     protoreflect.Name     = \"UInt64Value\"\n\tUInt64Value_message_fullname protoreflect.FullName = \"google.protobuf.UInt64Value\"\n)\n\n// Field names for google.protobuf.UInt64Value.\nconst (\n\tUInt64Value_Value_field_name protoreflect.Name = \"value\"\n\n\tUInt64Value_Value_field_fullname protoreflect.FullName = \"google.protobuf.UInt64Value.value\"\n)\n\n// Field numbers for google.protobuf.UInt64Value.\nconst (\n\tUInt64Value_Value_field_number protoreflect.FieldNumber = 1\n)\n\n// Names for google.protobuf.Int32Value.\nconst (\n\tInt32Value_message_name     protoreflect.Name     = \"Int32Value\"\n\tInt32Value_message_fullname protoreflect.FullName = \"google.protobuf.Int32Value\"\n)\n\n// Field names for google.protobuf.Int32Value.\nconst (\n\tInt32Value_Value_field_name protoreflect.Name = \"value\"\n\n\tInt32Value_Value_field_fullname protoreflect.FullName = \"google.protobuf.Int32Value.value\"\n)\n\n// Field numbers for google.protobuf.Int32Value.\nconst (\n\tInt32Value_Value_field_number protoreflect.FieldNumber = 1\n)\n\n// Names for google.protobuf.UInt32Value.\nconst (\n\tUInt32Value_message_name     protoreflect.Name     = \"UInt32Value\"\n\tUInt32Value_message_fullname protoreflect.FullName = \"google.protobuf.UInt32Value\"\n)\n\n// Field names for google.protobuf.UInt32Value.\nconst (\n\tUInt32Value_Value_field_name protoreflect.Name = \"value\"\n\n\tUInt32Value_Value_field_fullname protoreflect.FullName = \"google.protobuf.UInt32Value.value\"\n)\n\n// Field numbers for google.protobuf.UInt32Value.\nconst (\n\tUInt32Value_Value_field_number protoreflect.FieldNumber = 1\n)\n\n// Names for google.protobuf.BoolValue.\nconst (\n\tBoolValue_message_name     protoreflect.Name     = \"BoolValue\"\n\tBoolValue_message_fullname protoreflect.FullName = \"google.protobuf.BoolValue\"\n)\n\n// Field names for google.protobuf.BoolValue.\nconst (\n\tBoolValue_Value_field_name protoreflect.Name = \"value\"\n\n\tBoolValue_Value_field_fullname protoreflect.FullName = \"google.protobuf.BoolValue.value\"\n)\n\n// Field numbers for google.protobuf.BoolValue.\nconst (\n\tBoolValue_Value_field_number protoreflect.FieldNumber = 1\n)\n\n// Names for google.protobuf.StringValue.\nconst (\n\tStringValue_message_name     protoreflect.Name     = \"StringValue\"\n\tStringValue_message_fullname protoreflect.FullName = \"google.protobuf.StringValue\"\n)\n\n// Field names for google.protobuf.StringValue.\nconst (\n\tStringValue_Value_field_name protoreflect.Name = \"value\"\n\n\tStringValue_Value_field_fullname protoreflect.FullName = \"google.protobuf.StringValue.value\"\n)\n\n// Field numbers for google.protobuf.StringValue.\nconst (\n\tStringValue_Value_field_number protoreflect.FieldNumber = 1\n)\n\n// Names for google.protobuf.BytesValue.\nconst (\n\tBytesValue_message_name     protoreflect.Name     = \"BytesValue\"\n\tBytesValue_message_fullname protoreflect.FullName = \"google.protobuf.BytesValue\"\n)\n\n// Field names for google.protobuf.BytesValue.\nconst (\n\tBytesValue_Value_field_name protoreflect.Name = \"value\"\n\n\tBytesValue_Value_field_fullname protoreflect.FullName = \"google.protobuf.BytesValue.value\"\n)\n\n// Field numbers for google.protobuf.BytesValue.\nconst (\n\tBytesValue_Value_field_number protoreflect.FieldNumber = 1\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/api_export.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"strconv\"\n\n\t\"google.golang.org/protobuf/encoding/prototext\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/proto\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n)\n\n// Export is a zero-length named type that exists only to export a set of\n// functions that we do not want to appear in godoc.\ntype Export struct{}\n\n// NewError formats a string according to the format specifier and arguments and\n// returns an error that has a \"proto\" prefix.\nfunc (Export) NewError(f string, x ...any) error {\n\treturn errors.New(f, x...)\n}\n\n// enum is any enum type generated by protoc-gen-go\n// and must be a named int32 type.\ntype enum = any\n\n// EnumOf returns the protoreflect.Enum interface over e.\n// It returns nil if e is nil.\nfunc (Export) EnumOf(e enum) protoreflect.Enum {\n\tswitch e := e.(type) {\n\tcase nil:\n\t\treturn nil\n\tcase protoreflect.Enum:\n\t\treturn e\n\tdefault:\n\t\treturn legacyWrapEnum(reflect.ValueOf(e))\n\t}\n}\n\n// EnumDescriptorOf returns the protoreflect.EnumDescriptor for e.\n// It returns nil if e is nil.\nfunc (Export) EnumDescriptorOf(e enum) protoreflect.EnumDescriptor {\n\tswitch e := e.(type) {\n\tcase nil:\n\t\treturn nil\n\tcase protoreflect.Enum:\n\t\treturn e.Descriptor()\n\tdefault:\n\t\treturn LegacyLoadEnumDesc(reflect.TypeOf(e))\n\t}\n}\n\n// EnumTypeOf returns the protoreflect.EnumType for e.\n// It returns nil if e is nil.\nfunc (Export) EnumTypeOf(e enum) protoreflect.EnumType {\n\tswitch e := e.(type) {\n\tcase nil:\n\t\treturn nil\n\tcase protoreflect.Enum:\n\t\treturn e.Type()\n\tdefault:\n\t\treturn legacyLoadEnumType(reflect.TypeOf(e))\n\t}\n}\n\n// EnumStringOf returns the enum value as a string, either as the name if\n// the number is resolvable, or the number formatted as a string.\nfunc (Export) EnumStringOf(ed protoreflect.EnumDescriptor, n protoreflect.EnumNumber) string {\n\tev := ed.Values().ByNumber(n)\n\tif ev != nil {\n\t\treturn string(ev.Name())\n\t}\n\treturn strconv.Itoa(int(n))\n}\n\n// message is any message type generated by protoc-gen-go\n// and must be a pointer to a named struct type.\ntype message = any\n\n// legacyMessageWrapper wraps a v2 message as a v1 message.\ntype legacyMessageWrapper struct{ m protoreflect.ProtoMessage }\n\nfunc (m legacyMessageWrapper) Reset()         { proto.Reset(m.m) }\nfunc (m legacyMessageWrapper) String() string { return Export{}.MessageStringOf(m.m) }\nfunc (m legacyMessageWrapper) ProtoMessage()  {}\n\n// ProtoMessageV1Of converts either a v1 or v2 message to a v1 message.\n// It returns nil if m is nil.\nfunc (Export) ProtoMessageV1Of(m message) protoiface.MessageV1 {\n\tswitch mv := m.(type) {\n\tcase nil:\n\t\treturn nil\n\tcase protoiface.MessageV1:\n\t\treturn mv\n\tcase unwrapper:\n\t\treturn Export{}.ProtoMessageV1Of(mv.protoUnwrap())\n\tcase protoreflect.ProtoMessage:\n\t\treturn legacyMessageWrapper{mv}\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"message %T is neither a v1 or v2 Message\", m))\n\t}\n}\n\nfunc (Export) protoMessageV2Of(m message) protoreflect.ProtoMessage {\n\tswitch mv := m.(type) {\n\tcase nil:\n\t\treturn nil\n\tcase protoreflect.ProtoMessage:\n\t\treturn mv\n\tcase legacyMessageWrapper:\n\t\treturn mv.m\n\tcase protoiface.MessageV1:\n\t\treturn nil\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"message %T is neither a v1 or v2 Message\", m))\n\t}\n}\n\n// ProtoMessageV2Of converts either a v1 or v2 message to a v2 message.\n// It returns nil if m is nil.\nfunc (Export) ProtoMessageV2Of(m message) protoreflect.ProtoMessage {\n\tif m == nil {\n\t\treturn nil\n\t}\n\tif mv := (Export{}).protoMessageV2Of(m); mv != nil {\n\t\treturn mv\n\t}\n\treturn legacyWrapMessage(reflect.ValueOf(m)).Interface()\n}\n\n// MessageOf returns the protoreflect.Message interface over m.\n// It returns nil if m is nil.\nfunc (Export) MessageOf(m message) protoreflect.Message {\n\tif m == nil {\n\t\treturn nil\n\t}\n\tif mv := (Export{}).protoMessageV2Of(m); mv != nil {\n\t\treturn mv.ProtoReflect()\n\t}\n\treturn legacyWrapMessage(reflect.ValueOf(m))\n}\n\n// MessageDescriptorOf returns the protoreflect.MessageDescriptor for m.\n// It returns nil if m is nil.\nfunc (Export) MessageDescriptorOf(m message) protoreflect.MessageDescriptor {\n\tif m == nil {\n\t\treturn nil\n\t}\n\tif mv := (Export{}).protoMessageV2Of(m); mv != nil {\n\t\treturn mv.ProtoReflect().Descriptor()\n\t}\n\treturn LegacyLoadMessageDesc(reflect.TypeOf(m))\n}\n\n// MessageTypeOf returns the protoreflect.MessageType for m.\n// It returns nil if m is nil.\nfunc (Export) MessageTypeOf(m message) protoreflect.MessageType {\n\tif m == nil {\n\t\treturn nil\n\t}\n\tif mv := (Export{}).protoMessageV2Of(m); mv != nil {\n\t\treturn mv.ProtoReflect().Type()\n\t}\n\treturn legacyLoadMessageType(reflect.TypeOf(m), \"\")\n}\n\n// MessageStringOf returns the message value as a string,\n// which is the message serialized in the protobuf text format.\nfunc (Export) MessageStringOf(m protoreflect.ProtoMessage) string {\n\treturn prototext.MarshalOptions{Multiline: false}.Format(m)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/api_export_opaque.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"strconv\"\n\t\"sync/atomic\"\n\t\"unsafe\"\n\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nfunc (Export) UnmarshalField(msg any, fieldNum int32) {\n\tUnmarshalField(msg.(protoreflect.ProtoMessage).ProtoReflect(), protoreflect.FieldNumber(fieldNum))\n}\n\n// Present checks the presence set for a certain field number (zero\n// based, ordered by appearance in original proto file). part is\n// a pointer to the correct element in the bitmask array, num is the\n// field number unaltered.  Example (field number 70 -> part =\n// &m.XXX_presence[1], num = 70)\nfunc (Export) Present(part *uint32, num uint32) bool {\n\t// This hook will read an unprotected shadow presence set if\n\t// we're unning under the race detector\n\traceDetectHookPresent(part, num)\n\treturn atomic.LoadUint32(part)&(1<<(num%32)) > 0\n}\n\n// SetPresent adds a field to the presence set. part is a pointer to\n// the relevant element in the array and num is the field number\n// unaltered.  size is the number of fields in the protocol\n// buffer.\nfunc (Export) SetPresent(part *uint32, num uint32, size uint32) {\n\t// This hook will mutate an unprotected shadow presence set if\n\t// we're running under the race detector\n\traceDetectHookSetPresent(part, num, presenceSize(size))\n\tfor {\n\t\told := atomic.LoadUint32(part)\n\t\tif atomic.CompareAndSwapUint32(part, old, old|(1<<(num%32))) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// SetPresentNonAtomic is like SetPresent, but operates non-atomically.\n// It is meant for use by builder methods, where the message is known not\n// to be accessible yet by other goroutines.\nfunc (Export) SetPresentNonAtomic(part *uint32, num uint32, size uint32) {\n\t// This hook will mutate an unprotected shadow presence set if\n\t// we're running under the race detector\n\traceDetectHookSetPresent(part, num, presenceSize(size))\n\t*part |= 1 << (num % 32)\n}\n\n// ClearPresence removes a field from the presence set. part is a\n// pointer to the relevant element in the presence array and num is\n// the field number unaltered.\nfunc (Export) ClearPresent(part *uint32, num uint32) {\n\t// This hook will mutate an unprotected shadow presence set if\n\t// we're running under the race detector\n\traceDetectHookClearPresent(part, num)\n\tfor {\n\t\told := atomic.LoadUint32(part)\n\t\tif atomic.CompareAndSwapUint32(part, old, old&^(1<<(num%32))) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// interfaceToPointer takes a pointer to an empty interface whose value is a\n// pointer type, and converts it into a \"pointer\" that points to the same\n// target\nfunc interfaceToPointer(i *any) pointer {\n\treturn pointer{p: (*[2]unsafe.Pointer)(unsafe.Pointer(i))[1]}\n}\n\nfunc (p pointer) atomicGetPointer() pointer {\n\treturn pointer{p: atomic.LoadPointer((*unsafe.Pointer)(p.p))}\n}\n\nfunc (p pointer) atomicSetPointer(q pointer) {\n\tatomic.StorePointer((*unsafe.Pointer)(p.p), q.p)\n}\n\n// AtomicCheckPointerIsNil takes an interface (which is a pointer to a\n// pointer) and returns true if the pointed-to pointer is nil (using an\n// atomic load).  This function is inlineable and, on x86, just becomes a\n// simple load and compare.\nfunc (Export) AtomicCheckPointerIsNil(ptr any) bool {\n\treturn interfaceToPointer(&ptr).atomicGetPointer().IsNil()\n}\n\n// AtomicSetPointer takes two interfaces (first is a pointer to a pointer,\n// second is a pointer) and atomically sets the second pointer into location\n// referenced by first pointer.  Unfortunately, atomicSetPointer() does not inline\n// (even on x86), so this does not become a simple store on x86.\nfunc (Export) AtomicSetPointer(dstPtr, valPtr any) {\n\tinterfaceToPointer(&dstPtr).atomicSetPointer(interfaceToPointer(&valPtr))\n}\n\n// AtomicLoadPointer loads the pointer at the location pointed at by src,\n// and stores that pointer value into the location pointed at by dst.\nfunc (Export) AtomicLoadPointer(ptr Pointer, dst Pointer) {\n\t*(*unsafe.Pointer)(unsafe.Pointer(dst)) = atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(ptr)))\n}\n\n// AtomicInitializePointer makes ptr and dst point to the same value.\n//\n// If *ptr is a nil pointer, it sets *ptr = *dst.\n//\n// If *ptr is a non-nil pointer, it sets *dst = *ptr.\nfunc (Export) AtomicInitializePointer(ptr Pointer, dst Pointer) {\n\tif !atomic.CompareAndSwapPointer((*unsafe.Pointer)(ptr), unsafe.Pointer(nil), *(*unsafe.Pointer)(dst)) {\n\t\t*(*unsafe.Pointer)(unsafe.Pointer(dst)) = atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(ptr)))\n\t}\n}\n\n// MessageFieldStringOf returns the field formatted as a string,\n// either as the field name if resolvable otherwise as a decimal string.\nfunc (Export) MessageFieldStringOf(md protoreflect.MessageDescriptor, n protoreflect.FieldNumber) string {\n\tfd := md.Fields().ByNumber(n)\n\tif fd != nil {\n\t\treturn string(fd.Name())\n\t}\n\treturn strconv.Itoa(int(n))\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/bitmap.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build !race\n\npackage impl\n\n// There is no additional data as we're not running under race detector.\ntype RaceDetectHookData struct{}\n\n// Empty stubs for when not using the race detector. Calls to these from index.go should be optimized away.\nfunc (presence) raceDetectHookPresent(num uint32)                       {}\nfunc (presence) raceDetectHookSetPresent(num uint32, size presenceSize) {}\nfunc (presence) raceDetectHookClearPresent(num uint32)                  {}\nfunc (presence) raceDetectHookAllocAndCopy(src presence)                {}\n\n// raceDetectHookPresent is called by the generated file interface\n// (*proto.internalFuncs) Present to optionally read an unprotected\n// shadow bitmap when race detection is enabled. In regular code it is\n// a noop.\nfunc raceDetectHookPresent(field *uint32, num uint32) {}\n\n// raceDetectHookSetPresent is called by the generated file interface\n// (*proto.internalFuncs) SetPresent to optionally write an unprotected\n// shadow bitmap when race detection is enabled. In regular code it is\n// a noop.\nfunc raceDetectHookSetPresent(field *uint32, num uint32, size presenceSize) {}\n\n// raceDetectHookClearPresent is called by the generated file interface\n// (*proto.internalFuncs) ClearPresent to optionally write an unprotected\n// shadow bitmap when race detection is enabled. In regular code it is\n// a noop.\nfunc raceDetectHookClearPresent(field *uint32, num uint32) {}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/bitmap_race.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build race\n\npackage impl\n\n// When running under race detector, we add a presence map of bytes, that we can access\n// in the hook functions so that we trigger the race detection whenever we have concurrent\n// Read-Writes or Write-Writes. The race detector does not otherwise detect invalid concurrent\n// access to lazy fields as all updates of bitmaps and pointers are done using atomic operations.\ntype RaceDetectHookData struct {\n\tshadowPresence *[]byte\n}\n\n// Hooks for presence bitmap operations that allocate, read and write the shadowPresence\n// using non-atomic operations.\nfunc (data *RaceDetectHookData) raceDetectHookAlloc(size presenceSize) {\n\tsp := make([]byte, size)\n\tatomicStoreShadowPresence(&data.shadowPresence, &sp)\n}\n\nfunc (p presence) raceDetectHookPresent(num uint32) {\n\tdata := p.toRaceDetectData()\n\tif data == nil {\n\t\treturn\n\t}\n\tsp := atomicLoadShadowPresence(&data.shadowPresence)\n\tif sp != nil {\n\t\t_ = (*sp)[num]\n\t}\n}\n\nfunc (p presence) raceDetectHookSetPresent(num uint32, size presenceSize) {\n\tdata := p.toRaceDetectData()\n\tif data == nil {\n\t\treturn\n\t}\n\tsp := atomicLoadShadowPresence(&data.shadowPresence)\n\tif sp == nil {\n\t\tdata.raceDetectHookAlloc(size)\n\t\tsp = atomicLoadShadowPresence(&data.shadowPresence)\n\t}\n\t(*sp)[num] = 1\n}\n\nfunc (p presence) raceDetectHookClearPresent(num uint32) {\n\tdata := p.toRaceDetectData()\n\tif data == nil {\n\t\treturn\n\t}\n\tsp := atomicLoadShadowPresence(&data.shadowPresence)\n\tif sp != nil {\n\t\t(*sp)[num] = 0\n\n\t}\n}\n\n// raceDetectHookAllocAndCopy allocates a new shadowPresence slice at lazy and copies\n// shadowPresence bytes from src to lazy.\nfunc (p presence) raceDetectHookAllocAndCopy(q presence) {\n\tsData := q.toRaceDetectData()\n\tdData := p.toRaceDetectData()\n\tif sData == nil {\n\t\treturn\n\t}\n\tsrcSp := atomicLoadShadowPresence(&sData.shadowPresence)\n\tif srcSp == nil {\n\t\tatomicStoreShadowPresence(&dData.shadowPresence, nil)\n\t\treturn\n\t}\n\tn := len(*srcSp)\n\tdSlice := make([]byte, n)\n\tatomicStoreShadowPresence(&dData.shadowPresence, &dSlice)\n\tfor i := 0; i < n; i++ {\n\t\tdSlice[i] = (*srcSp)[i]\n\t}\n}\n\n// raceDetectHookPresent is called by the generated file interface\n// (*proto.internalFuncs) Present to optionally read an unprotected\n// shadow bitmap when race detection is enabled. In regular code it is\n// a noop.\nfunc raceDetectHookPresent(field *uint32, num uint32) {\n\tdata := findPointerToRaceDetectData(field, num)\n\tif data == nil {\n\t\treturn\n\t}\n\tsp := atomicLoadShadowPresence(&data.shadowPresence)\n\tif sp != nil {\n\t\t_ = (*sp)[num]\n\t}\n}\n\n// raceDetectHookSetPresent is called by the generated file interface\n// (*proto.internalFuncs) SetPresent to optionally write an unprotected\n// shadow bitmap when race detection is enabled. In regular code it is\n// a noop.\nfunc raceDetectHookSetPresent(field *uint32, num uint32, size presenceSize) {\n\tdata := findPointerToRaceDetectData(field, num)\n\tif data == nil {\n\t\treturn\n\t}\n\tsp := atomicLoadShadowPresence(&data.shadowPresence)\n\tif sp == nil {\n\t\tdata.raceDetectHookAlloc(size)\n\t\tsp = atomicLoadShadowPresence(&data.shadowPresence)\n\t}\n\t(*sp)[num] = 1\n}\n\n// raceDetectHookClearPresent is called by the generated file interface\n// (*proto.internalFuncs) ClearPresent to optionally write an unprotected\n// shadow bitmap when race detection is enabled. In regular code it is\n// a noop.\nfunc raceDetectHookClearPresent(field *uint32, num uint32) {\n\tdata := findPointerToRaceDetectData(field, num)\n\tif data == nil {\n\t\treturn\n\t}\n\tsp := atomicLoadShadowPresence(&data.shadowPresence)\n\tif sp != nil {\n\t\t(*sp)[num] = 0\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/checkinit.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"sync\"\n\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n)\n\nfunc (mi *MessageInfo) checkInitialized(in protoiface.CheckInitializedInput) (protoiface.CheckInitializedOutput, error) {\n\tvar p pointer\n\tif ms, ok := in.Message.(*messageState); ok {\n\t\tp = ms.pointer()\n\t} else {\n\t\tp = in.Message.(*messageReflectWrapper).pointer()\n\t}\n\treturn protoiface.CheckInitializedOutput{}, mi.checkInitializedPointer(p)\n}\n\nfunc (mi *MessageInfo) checkInitializedPointer(p pointer) error {\n\tmi.init()\n\tif !mi.needsInitCheck {\n\t\treturn nil\n\t}\n\tif p.IsNil() {\n\t\tfor _, f := range mi.orderedCoderFields {\n\t\t\tif f.isRequired {\n\t\t\t\treturn errors.RequiredNotSet(string(mi.Desc.Fields().ByNumber(f.num).FullName()))\n\t\t\t}\n\t\t}\n\t\treturn nil\n\t}\n\n\tvar presence presence\n\tif mi.presenceOffset.IsValid() {\n\t\tpresence = p.Apply(mi.presenceOffset).PresenceInfo()\n\t}\n\n\tif mi.extensionOffset.IsValid() {\n\t\te := p.Apply(mi.extensionOffset).Extensions()\n\t\tif err := mi.isInitExtensions(e); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\tfor _, f := range mi.orderedCoderFields {\n\t\tif !f.isRequired && f.funcs.isInit == nil {\n\t\t\tcontinue\n\t\t}\n\n\t\tif f.presenceIndex != noPresence {\n\t\t\tif !presence.Present(f.presenceIndex) {\n\t\t\t\tif f.isRequired {\n\t\t\t\t\treturn errors.RequiredNotSet(string(mi.Desc.Fields().ByNumber(f.num).FullName()))\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif f.funcs.isInit != nil {\n\t\t\t\tf.mi.init()\n\t\t\t\tif f.mi.needsInitCheck {\n\t\t\t\t\tif f.isLazy && p.Apply(f.offset).AtomicGetPointer().IsNil() {\n\t\t\t\t\t\tlazy := *p.Apply(mi.lazyOffset).LazyInfoPtr()\n\t\t\t\t\t\tif !lazy.AllowedPartial() {\n\t\t\t\t\t\t\t// Nothing to see here, it was checked on unmarshal\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmi.lazyUnmarshal(p, f.num)\n\t\t\t\t\t}\n\t\t\t\t\tif err := f.funcs.isInit(p.Apply(f.offset), f); err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\tfptr := p.Apply(f.offset)\n\t\tif f.isPointer && fptr.Elem().IsNil() {\n\t\t\tif f.isRequired {\n\t\t\t\treturn errors.RequiredNotSet(string(mi.Desc.Fields().ByNumber(f.num).FullName()))\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\t\tif f.funcs.isInit == nil {\n\t\t\tcontinue\n\t\t}\n\t\tif err := f.funcs.isInit(fptr, f); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (mi *MessageInfo) isInitExtensions(ext *map[int32]ExtensionField) error {\n\tif ext == nil {\n\t\treturn nil\n\t}\n\tfor _, x := range *ext {\n\t\tei := getExtensionFieldInfo(x.Type())\n\t\tif ei.funcs.isInit == nil || x.isUnexpandedLazy() {\n\t\t\tcontinue\n\t\t}\n\t\tv := x.Value()\n\t\tif !v.IsValid() {\n\t\t\tcontinue\n\t\t}\n\t\tif err := ei.funcs.isInit(v); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nvar (\n\tneedsInitCheckMu  sync.Mutex\n\tneedsInitCheckMap sync.Map\n)\n\n// needsInitCheck reports whether a message needs to be checked for partial initialization.\n//\n// It returns true if the message transitively includes any required or extension fields.\nfunc needsInitCheck(md protoreflect.MessageDescriptor) bool {\n\tif v, ok := needsInitCheckMap.Load(md); ok {\n\t\tif has, ok := v.(bool); ok {\n\t\t\treturn has\n\t\t}\n\t}\n\tneedsInitCheckMu.Lock()\n\tdefer needsInitCheckMu.Unlock()\n\treturn needsInitCheckLocked(md)\n}\n\nfunc needsInitCheckLocked(md protoreflect.MessageDescriptor) (has bool) {\n\tif v, ok := needsInitCheckMap.Load(md); ok {\n\t\t// If has is true, we've previously determined that this message\n\t\t// needs init checks.\n\t\t//\n\t\t// If has is false, we've previously determined that it can never\n\t\t// be uninitialized.\n\t\t//\n\t\t// If has is not a bool, we've just encountered a cycle in the\n\t\t// message graph. In this case, it is safe to return false: If\n\t\t// the message does have required fields, we'll detect them later\n\t\t// in the graph traversal.\n\t\thas, ok := v.(bool)\n\t\treturn ok && has\n\t}\n\tneedsInitCheckMap.Store(md, struct{}{}) // avoid cycles while descending into this message\n\tdefer func() {\n\t\tneedsInitCheckMap.Store(md, has)\n\t}()\n\tif md.RequiredNumbers().Len() > 0 {\n\t\treturn true\n\t}\n\tif md.ExtensionRanges().Len() > 0 {\n\t\treturn true\n\t}\n\tfor i := 0; i < md.Fields().Len(); i++ {\n\t\tfd := md.Fields().Get(i)\n\t\t// Map keys are never messages, so just consider the map value.\n\t\tif fd.IsMap() {\n\t\t\tfd = fd.MapValue()\n\t\t}\n\t\tfmd := fd.Message()\n\t\tif fmd != nil && needsInitCheckLocked(fmd) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/codec_extension.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"sync\"\n\t\"sync/atomic\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\ntype extensionFieldInfo struct {\n\twiretag             uint64\n\ttagsize             int\n\tunmarshalNeedsValue bool\n\tfuncs               valueCoderFuncs\n\tvalidation          validationInfo\n}\n\nfunc getExtensionFieldInfo(xt protoreflect.ExtensionType) *extensionFieldInfo {\n\tif xi, ok := xt.(*ExtensionInfo); ok {\n\t\txi.lazyInit()\n\t\treturn xi.info\n\t}\n\t// Ideally we'd cache the resulting *extensionFieldInfo so we don't have to\n\t// recompute this metadata repeatedly. But without support for something like\n\t// weak references, such a cache would pin temporary values (like dynamic\n\t// extension types, constructed for the duration of a user request) to the\n\t// heap forever, causing memory usage of the cache to grow unbounded.\n\t// See discussion in https://github.com/golang/protobuf/issues/1521.\n\treturn makeExtensionFieldInfo(xt.TypeDescriptor())\n}\n\nfunc makeExtensionFieldInfo(xd protoreflect.ExtensionDescriptor) *extensionFieldInfo {\n\tvar wiretag uint64\n\tif !xd.IsPacked() {\n\t\twiretag = protowire.EncodeTag(xd.Number(), wireTypes[xd.Kind()])\n\t} else {\n\t\twiretag = protowire.EncodeTag(xd.Number(), protowire.BytesType)\n\t}\n\te := &extensionFieldInfo{\n\t\twiretag: wiretag,\n\t\ttagsize: protowire.SizeVarint(wiretag),\n\t\tfuncs:   encoderFuncsForValue(xd),\n\t}\n\t// Does the unmarshal function need a value passed to it?\n\t// This is true for composite types, where we pass in a message, list, or map to fill in,\n\t// and for enums, where we pass in a prototype value to specify the concrete enum type.\n\tswitch xd.Kind() {\n\tcase protoreflect.MessageKind, protoreflect.GroupKind, protoreflect.EnumKind:\n\t\te.unmarshalNeedsValue = true\n\tdefault:\n\t\tif xd.Cardinality() == protoreflect.Repeated {\n\t\t\te.unmarshalNeedsValue = true\n\t\t}\n\t}\n\treturn e\n}\n\ntype lazyExtensionValue struct {\n\tatomicOnce uint32 // atomically set if value is valid\n\tmu         sync.Mutex\n\txi         *extensionFieldInfo\n\tvalue      protoreflect.Value\n\tb          []byte\n}\n\ntype ExtensionField struct {\n\ttyp protoreflect.ExtensionType\n\n\t// value is either the value of GetValue,\n\t// or a *lazyExtensionValue that then returns the value of GetValue.\n\tvalue protoreflect.Value\n\tlazy  *lazyExtensionValue\n}\n\nfunc (f *ExtensionField) appendLazyBytes(xt protoreflect.ExtensionType, xi *extensionFieldInfo, num protowire.Number, wtyp protowire.Type, b []byte) {\n\tif f.lazy == nil {\n\t\tf.lazy = &lazyExtensionValue{xi: xi}\n\t}\n\tf.typ = xt\n\tf.lazy.xi = xi\n\tf.lazy.b = protowire.AppendTag(f.lazy.b, num, wtyp)\n\tf.lazy.b = append(f.lazy.b, b...)\n}\n\nfunc (f *ExtensionField) canLazy(xt protoreflect.ExtensionType) bool {\n\tif f.typ == nil {\n\t\treturn true\n\t}\n\tif f.typ == xt && f.lazy != nil && atomic.LoadUint32(&f.lazy.atomicOnce) == 0 {\n\t\treturn true\n\t}\n\treturn false\n}\n\n// isUnexpandedLazy returns true if the ExensionField is lazy and not\n// yet expanded, which means it's present and already checked for\n// initialized required fields.\nfunc (f *ExtensionField) isUnexpandedLazy() bool {\n\treturn f.lazy != nil && atomic.LoadUint32(&f.lazy.atomicOnce) == 0\n}\n\n// lazyBuffer retrieves the buffer for a lazy extension if it's not yet expanded.\n//\n// The returned buffer has to be kept over whatever operation we're planning,\n// as re-retrieving it will fail after the message is lazily decoded.\nfunc (f *ExtensionField) lazyBuffer() []byte {\n\t// This function might be in the critical path, so check the atomic without\n\t// taking a look first, then only take the lock if needed.\n\tif !f.isUnexpandedLazy() {\n\t\treturn nil\n\t}\n\tf.lazy.mu.Lock()\n\tdefer f.lazy.mu.Unlock()\n\treturn f.lazy.b\n}\n\nfunc (f *ExtensionField) lazyInit() {\n\tf.lazy.mu.Lock()\n\tdefer f.lazy.mu.Unlock()\n\tif atomic.LoadUint32(&f.lazy.atomicOnce) == 1 {\n\t\treturn\n\t}\n\tif f.lazy.xi != nil {\n\t\tb := f.lazy.b\n\t\tval := f.typ.New()\n\t\tfor len(b) > 0 {\n\t\t\tvar tag uint64\n\t\t\tif b[0] < 0x80 {\n\t\t\t\ttag = uint64(b[0])\n\t\t\t\tb = b[1:]\n\t\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\t\ttag = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\t\tb = b[2:]\n\t\t\t} else {\n\t\t\t\tvar n int\n\t\t\t\ttag, n = protowire.ConsumeVarint(b)\n\t\t\t\tif n < 0 {\n\t\t\t\t\tpanic(errors.New(\"bad tag in lazy extension decoding\"))\n\t\t\t\t}\n\t\t\t\tb = b[n:]\n\t\t\t}\n\t\t\tnum := protowire.Number(tag >> 3)\n\t\t\twtyp := protowire.Type(tag & 7)\n\t\t\tvar out unmarshalOutput\n\t\t\tvar err error\n\t\t\tval, out, err = f.lazy.xi.funcs.unmarshal(b, val, num, wtyp, lazyUnmarshalOptions)\n\t\t\tif err != nil {\n\t\t\t\tpanic(errors.New(\"decode failure in lazy extension decoding: %v\", err))\n\t\t\t}\n\t\t\tb = b[out.n:]\n\t\t}\n\t\tf.lazy.value = val\n\t} else {\n\t\tpanic(\"No support for lazy fns for ExtensionField\")\n\t}\n\tf.lazy.xi = nil\n\tf.lazy.b = nil\n\tatomic.StoreUint32(&f.lazy.atomicOnce, 1)\n}\n\n// Set sets the type and value of the extension field.\n// This must not be called concurrently.\nfunc (f *ExtensionField) Set(t protoreflect.ExtensionType, v protoreflect.Value) {\n\tf.typ = t\n\tf.value = v\n\tf.lazy = nil\n}\n\n// Value returns the value of the extension field.\n// This may be called concurrently.\nfunc (f *ExtensionField) Value() protoreflect.Value {\n\tif f.lazy != nil {\n\t\tif atomic.LoadUint32(&f.lazy.atomicOnce) == 0 {\n\t\t\tf.lazyInit()\n\t\t}\n\t\treturn f.lazy.value\n\t}\n\treturn f.value\n}\n\n// Type returns the type of the extension field.\n// This may be called concurrently.\nfunc (f ExtensionField) Type() protoreflect.ExtensionType {\n\treturn f.typ\n}\n\n// IsSet returns whether the extension field is set.\n// This may be called concurrently.\nfunc (f ExtensionField) IsSet() bool {\n\treturn f.typ != nil\n}\n\n// IsLazy reports whether a field is lazily encoded.\n// It is exported for testing.\nfunc IsLazy(m protoreflect.Message, fd protoreflect.FieldDescriptor) bool {\n\tvar mi *MessageInfo\n\tvar p pointer\n\tswitch m := m.(type) {\n\tcase *messageState:\n\t\tmi = m.messageInfo()\n\t\tp = m.pointer()\n\tcase *messageReflectWrapper:\n\t\tmi = m.messageInfo()\n\t\tp = m.pointer()\n\tdefault:\n\t\treturn false\n\t}\n\txd, ok := fd.(protoreflect.ExtensionTypeDescriptor)\n\tif !ok {\n\t\treturn false\n\t}\n\txt := xd.Type()\n\text := mi.extensionMap(p)\n\tif ext == nil {\n\t\treturn false\n\t}\n\tf, ok := (*ext)[int32(fd.Number())]\n\tif !ok {\n\t\treturn false\n\t}\n\treturn f.typ == xt && f.lazy != nil && atomic.LoadUint32(&f.lazy.atomicOnce) == 0\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/codec_field.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"reflect\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/proto\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n)\n\ntype errInvalidUTF8 struct{}\n\nfunc (errInvalidUTF8) Error() string     { return \"string field contains invalid UTF-8\" }\nfunc (errInvalidUTF8) InvalidUTF8() bool { return true }\nfunc (errInvalidUTF8) Unwrap() error     { return errors.Error }\n\n// initOneofFieldCoders initializes the fast-path functions for the fields in a oneof.\n//\n// For size, marshal, and isInit operations, functions are set only on the first field\n// in the oneof. The functions are called when the oneof is non-nil, and will dispatch\n// to the appropriate field-specific function as necessary.\n//\n// The unmarshal function is set on each field individually as usual.\nfunc (mi *MessageInfo) initOneofFieldCoders(od protoreflect.OneofDescriptor, si structInfo) {\n\tfs := si.oneofsByName[od.Name()]\n\tft := fs.Type\n\toneofFields := make(map[reflect.Type]*coderFieldInfo)\n\tneedIsInit := false\n\tfields := od.Fields()\n\tfor i, lim := 0, fields.Len(); i < lim; i++ {\n\t\tfd := od.Fields().Get(i)\n\t\tnum := fd.Number()\n\t\t// Make a copy of the original coderFieldInfo for use in unmarshaling.\n\t\t//\n\t\t// oneofFields[oneofType].funcs.marshal is the field-specific marshal function.\n\t\t//\n\t\t// mi.coderFields[num].marshal is set on only the first field in the oneof,\n\t\t// and dispatches to the field-specific marshaler in oneofFields.\n\t\tcf := *mi.coderFields[num]\n\t\tot := si.oneofWrappersByNumber[num]\n\t\tcf.ft = ot.Field(0).Type\n\t\tcf.mi, cf.funcs = fieldCoder(fd, cf.ft)\n\t\toneofFields[ot] = &cf\n\t\tif cf.funcs.isInit != nil {\n\t\t\tneedIsInit = true\n\t\t}\n\t\tmi.coderFields[num].funcs.unmarshal = func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) {\n\t\t\tvar vw reflect.Value         // pointer to wrapper type\n\t\t\tvi := p.AsValueOf(ft).Elem() // oneof field value of interface kind\n\t\t\tif !vi.IsNil() && !vi.Elem().IsNil() && vi.Elem().Elem().Type() == ot {\n\t\t\t\tvw = vi.Elem()\n\t\t\t} else {\n\t\t\t\tvw = reflect.New(ot)\n\t\t\t}\n\t\t\tout, err := cf.funcs.unmarshal(b, pointerOfValue(vw).Apply(zeroOffset), wtyp, &cf, opts)\n\t\t\tif err != nil {\n\t\t\t\treturn out, err\n\t\t\t}\n\t\t\tif cf.funcs.isInit == nil {\n\t\t\t\tout.initialized = true\n\t\t\t}\n\t\t\tvi.Set(vw)\n\t\t\treturn out, nil\n\t\t}\n\t}\n\tgetInfo := func(p pointer) (pointer, *coderFieldInfo) {\n\t\tv := p.AsValueOf(ft).Elem()\n\t\tif v.IsNil() {\n\t\t\treturn pointer{}, nil\n\t\t}\n\t\tv = v.Elem() // interface -> *struct\n\t\tif v.IsNil() {\n\t\t\treturn pointer{}, nil\n\t\t}\n\t\treturn pointerOfValue(v).Apply(zeroOffset), oneofFields[v.Elem().Type()]\n\t}\n\tfirst := mi.coderFields[od.Fields().Get(0).Number()]\n\tfirst.funcs.size = func(p pointer, _ *coderFieldInfo, opts marshalOptions) int {\n\t\tp, info := getInfo(p)\n\t\tif info == nil || info.funcs.size == nil {\n\t\t\treturn 0\n\t\t}\n\t\treturn info.funcs.size(p, info, opts)\n\t}\n\tfirst.funcs.marshal = func(b []byte, p pointer, _ *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\t\tp, info := getInfo(p)\n\t\tif info == nil || info.funcs.marshal == nil {\n\t\t\treturn b, nil\n\t\t}\n\t\treturn info.funcs.marshal(b, p, info, opts)\n\t}\n\tfirst.funcs.merge = func(dst, src pointer, _ *coderFieldInfo, opts mergeOptions) {\n\t\tsrcp, srcinfo := getInfo(src)\n\t\tif srcinfo == nil || srcinfo.funcs.merge == nil {\n\t\t\treturn\n\t\t}\n\t\tdstp, dstinfo := getInfo(dst)\n\t\tif dstinfo != srcinfo {\n\t\t\tdst.AsValueOf(ft).Elem().Set(reflect.New(src.AsValueOf(ft).Elem().Elem().Elem().Type()))\n\t\t\tdstp = pointerOfValue(dst.AsValueOf(ft).Elem().Elem()).Apply(zeroOffset)\n\t\t}\n\t\tsrcinfo.funcs.merge(dstp, srcp, srcinfo, opts)\n\t}\n\tif needIsInit {\n\t\tfirst.funcs.isInit = func(p pointer, _ *coderFieldInfo) error {\n\t\t\tp, info := getInfo(p)\n\t\t\tif info == nil || info.funcs.isInit == nil {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t\treturn info.funcs.isInit(p, info)\n\t\t}\n\t}\n}\n\nfunc makeMessageFieldCoder(fd protoreflect.FieldDescriptor, ft reflect.Type) pointerCoderFuncs {\n\tif mi := getMessageInfo(ft); mi != nil {\n\t\tfuncs := pointerCoderFuncs{\n\t\t\tsize:      sizeMessageInfo,\n\t\t\tmarshal:   appendMessageInfo,\n\t\t\tunmarshal: consumeMessageInfo,\n\t\t\tmerge:     mergeMessage,\n\t\t}\n\t\tif needsInitCheck(mi.Desc) {\n\t\t\tfuncs.isInit = isInitMessageInfo\n\t\t}\n\t\treturn funcs\n\t} else {\n\t\treturn pointerCoderFuncs{\n\t\t\tsize: func(p pointer, f *coderFieldInfo, opts marshalOptions) int {\n\t\t\t\tm := asMessage(p.AsValueOf(ft).Elem())\n\t\t\t\treturn sizeMessage(m, f.tagsize, opts)\n\t\t\t},\n\t\t\tmarshal: func(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\t\t\t\tm := asMessage(p.AsValueOf(ft).Elem())\n\t\t\t\treturn appendMessage(b, m, f.wiretag, opts)\n\t\t\t},\n\t\t\tunmarshal: func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) {\n\t\t\t\tmp := p.AsValueOf(ft).Elem()\n\t\t\t\tif mp.IsNil() {\n\t\t\t\t\tmp.Set(reflect.New(ft.Elem()))\n\t\t\t\t}\n\t\t\t\treturn consumeMessage(b, asMessage(mp), wtyp, opts)\n\t\t\t},\n\t\t\tisInit: func(p pointer, f *coderFieldInfo) error {\n\t\t\t\tm := asMessage(p.AsValueOf(ft).Elem())\n\t\t\t\treturn proto.CheckInitialized(m)\n\t\t\t},\n\t\t\tmerge: mergeMessage,\n\t\t}\n\t}\n}\n\nfunc sizeMessageInfo(p pointer, f *coderFieldInfo, opts marshalOptions) int {\n\treturn protowire.SizeBytes(f.mi.sizePointer(p.Elem(), opts)) + f.tagsize\n}\n\nfunc appendMessageInfo(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tcalculatedSize := f.mi.sizePointer(p.Elem(), opts)\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, uint64(calculatedSize))\n\tbefore := len(b)\n\tb, err := f.mi.marshalAppendPointer(b, p.Elem(), opts)\n\tif measuredSize := len(b) - before; calculatedSize != measuredSize && err == nil {\n\t\treturn nil, errors.MismatchedSizeCalculation(calculatedSize, measuredSize)\n\t}\n\treturn b, err\n}\n\nfunc consumeMessageInfo(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.BytesType {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tif p.Elem().IsNil() {\n\t\tp.SetPointer(pointerOfValue(reflect.New(f.mi.GoReflectType.Elem())))\n\t}\n\to, err := f.mi.unmarshalPointer(v, p.Elem(), 0, opts)\n\tif err != nil {\n\t\treturn out, err\n\t}\n\tout.n = n\n\tout.initialized = o.initialized\n\treturn out, nil\n}\n\nfunc isInitMessageInfo(p pointer, f *coderFieldInfo) error {\n\treturn f.mi.checkInitializedPointer(p.Elem())\n}\n\nfunc sizeMessage(m proto.Message, tagsize int, opts marshalOptions) int {\n\treturn protowire.SizeBytes(opts.Options().Size(m)) + tagsize\n}\n\nfunc appendMessage(b []byte, m proto.Message, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tmopts := opts.Options()\n\tcalculatedSize := mopts.Size(m)\n\tb = protowire.AppendVarint(b, wiretag)\n\tb = protowire.AppendVarint(b, uint64(calculatedSize))\n\tbefore := len(b)\n\tb, err := mopts.MarshalAppend(b, m)\n\tif measuredSize := len(b) - before; calculatedSize != measuredSize && err == nil {\n\t\treturn nil, errors.MismatchedSizeCalculation(calculatedSize, measuredSize)\n\t}\n\treturn b, err\n}\n\nfunc consumeMessage(b []byte, m proto.Message, wtyp protowire.Type, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.BytesType {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\to, err := opts.Options().UnmarshalState(protoiface.UnmarshalInput{\n\t\tBuf:     v,\n\t\tMessage: m.ProtoReflect(),\n\t})\n\tif err != nil {\n\t\treturn out, err\n\t}\n\tout.n = n\n\tout.initialized = o.Flags&protoiface.UnmarshalInitialized != 0\n\treturn out, nil\n}\n\nfunc sizeMessageValue(v protoreflect.Value, tagsize int, opts marshalOptions) int {\n\tm := v.Message().Interface()\n\treturn sizeMessage(m, tagsize, opts)\n}\n\nfunc appendMessageValue(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tm := v.Message().Interface()\n\treturn appendMessage(b, m, wiretag, opts)\n}\n\nfunc consumeMessageValue(b []byte, v protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (protoreflect.Value, unmarshalOutput, error) {\n\tm := v.Message().Interface()\n\tout, err := consumeMessage(b, m, wtyp, opts)\n\treturn v, out, err\n}\n\nfunc isInitMessageValue(v protoreflect.Value) error {\n\tm := v.Message().Interface()\n\treturn proto.CheckInitialized(m)\n}\n\nvar coderMessageValue = valueCoderFuncs{\n\tsize:      sizeMessageValue,\n\tmarshal:   appendMessageValue,\n\tunmarshal: consumeMessageValue,\n\tisInit:    isInitMessageValue,\n\tmerge:     mergeMessageValue,\n}\n\nfunc sizeGroupValue(v protoreflect.Value, tagsize int, opts marshalOptions) int {\n\tm := v.Message().Interface()\n\treturn sizeGroup(m, tagsize, opts)\n}\n\nfunc appendGroupValue(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tm := v.Message().Interface()\n\treturn appendGroup(b, m, wiretag, opts)\n}\n\nfunc consumeGroupValue(b []byte, v protoreflect.Value, num protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (protoreflect.Value, unmarshalOutput, error) {\n\tm := v.Message().Interface()\n\tout, err := consumeGroup(b, m, num, wtyp, opts)\n\treturn v, out, err\n}\n\nvar coderGroupValue = valueCoderFuncs{\n\tsize:      sizeGroupValue,\n\tmarshal:   appendGroupValue,\n\tunmarshal: consumeGroupValue,\n\tisInit:    isInitMessageValue,\n\tmerge:     mergeMessageValue,\n}\n\nfunc makeGroupFieldCoder(fd protoreflect.FieldDescriptor, ft reflect.Type) pointerCoderFuncs {\n\tnum := fd.Number()\n\tif mi := getMessageInfo(ft); mi != nil {\n\t\tfuncs := pointerCoderFuncs{\n\t\t\tsize:      sizeGroupType,\n\t\t\tmarshal:   appendGroupType,\n\t\t\tunmarshal: consumeGroupType,\n\t\t\tmerge:     mergeMessage,\n\t\t}\n\t\tif needsInitCheck(mi.Desc) {\n\t\t\tfuncs.isInit = isInitMessageInfo\n\t\t}\n\t\treturn funcs\n\t} else {\n\t\treturn pointerCoderFuncs{\n\t\t\tsize: func(p pointer, f *coderFieldInfo, opts marshalOptions) int {\n\t\t\t\tm := asMessage(p.AsValueOf(ft).Elem())\n\t\t\t\treturn sizeGroup(m, f.tagsize, opts)\n\t\t\t},\n\t\t\tmarshal: func(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\t\t\t\tm := asMessage(p.AsValueOf(ft).Elem())\n\t\t\t\treturn appendGroup(b, m, f.wiretag, opts)\n\t\t\t},\n\t\t\tunmarshal: func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) {\n\t\t\t\tmp := p.AsValueOf(ft).Elem()\n\t\t\t\tif mp.IsNil() {\n\t\t\t\t\tmp.Set(reflect.New(ft.Elem()))\n\t\t\t\t}\n\t\t\t\treturn consumeGroup(b, asMessage(mp), num, wtyp, opts)\n\t\t\t},\n\t\t\tisInit: func(p pointer, f *coderFieldInfo) error {\n\t\t\t\tm := asMessage(p.AsValueOf(ft).Elem())\n\t\t\t\treturn proto.CheckInitialized(m)\n\t\t\t},\n\t\t\tmerge: mergeMessage,\n\t\t}\n\t}\n}\n\nfunc sizeGroupType(p pointer, f *coderFieldInfo, opts marshalOptions) int {\n\treturn 2*f.tagsize + f.mi.sizePointer(p.Elem(), opts)\n}\n\nfunc appendGroupType(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tb = protowire.AppendVarint(b, f.wiretag) // start group\n\tb, err := f.mi.marshalAppendPointer(b, p.Elem(), opts)\n\tb = protowire.AppendVarint(b, f.wiretag+1) // end group\n\treturn b, err\n}\n\nfunc consumeGroupType(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.StartGroupType {\n\t\treturn out, errUnknown\n\t}\n\tif p.Elem().IsNil() {\n\t\tp.SetPointer(pointerOfValue(reflect.New(f.mi.GoReflectType.Elem())))\n\t}\n\treturn f.mi.unmarshalPointer(b, p.Elem(), f.num, opts)\n}\n\nfunc sizeGroup(m proto.Message, tagsize int, opts marshalOptions) int {\n\treturn 2*tagsize + opts.Options().Size(m)\n}\n\nfunc appendGroup(b []byte, m proto.Message, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tb = protowire.AppendVarint(b, wiretag) // start group\n\tb, err := opts.Options().MarshalAppend(b, m)\n\tb = protowire.AppendVarint(b, wiretag+1) // end group\n\treturn b, err\n}\n\nfunc consumeGroup(b []byte, m proto.Message, num protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.StartGroupType {\n\t\treturn out, errUnknown\n\t}\n\tb, n := protowire.ConsumeGroup(num, b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\to, err := opts.Options().UnmarshalState(protoiface.UnmarshalInput{\n\t\tBuf:     b,\n\t\tMessage: m.ProtoReflect(),\n\t})\n\tif err != nil {\n\t\treturn out, err\n\t}\n\tout.n = n\n\tout.initialized = o.Flags&protoiface.UnmarshalInitialized != 0\n\treturn out, nil\n}\n\nfunc makeMessageSliceFieldCoder(fd protoreflect.FieldDescriptor, ft reflect.Type) pointerCoderFuncs {\n\tif mi := getMessageInfo(ft); mi != nil {\n\t\tfuncs := pointerCoderFuncs{\n\t\t\tsize:      sizeMessageSliceInfo,\n\t\t\tmarshal:   appendMessageSliceInfo,\n\t\t\tunmarshal: consumeMessageSliceInfo,\n\t\t\tmerge:     mergeMessageSlice,\n\t\t}\n\t\tif needsInitCheck(mi.Desc) {\n\t\t\tfuncs.isInit = isInitMessageSliceInfo\n\t\t}\n\t\treturn funcs\n\t}\n\treturn pointerCoderFuncs{\n\t\tsize: func(p pointer, f *coderFieldInfo, opts marshalOptions) int {\n\t\t\treturn sizeMessageSlice(p, ft, f.tagsize, opts)\n\t\t},\n\t\tmarshal: func(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\t\t\treturn appendMessageSlice(b, p, f.wiretag, ft, opts)\n\t\t},\n\t\tunmarshal: func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) {\n\t\t\treturn consumeMessageSlice(b, p, ft, wtyp, opts)\n\t\t},\n\t\tisInit: func(p pointer, f *coderFieldInfo) error {\n\t\t\treturn isInitMessageSlice(p, ft)\n\t\t},\n\t\tmerge: mergeMessageSlice,\n\t}\n}\n\nfunc sizeMessageSliceInfo(p pointer, f *coderFieldInfo, opts marshalOptions) int {\n\ts := p.PointerSlice()\n\tn := 0\n\tfor _, v := range s {\n\t\tn += protowire.SizeBytes(f.mi.sizePointer(v, opts)) + f.tagsize\n\t}\n\treturn n\n}\n\nfunc appendMessageSliceInfo(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := p.PointerSlice()\n\tvar err error\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tsiz := f.mi.sizePointer(v, opts)\n\t\tb = protowire.AppendVarint(b, uint64(siz))\n\t\tbefore := len(b)\n\t\tb, err = f.mi.marshalAppendPointer(b, v, opts)\n\t\tif err != nil {\n\t\t\treturn b, err\n\t\t}\n\t\tif measuredSize := len(b) - before; siz != measuredSize {\n\t\t\treturn nil, errors.MismatchedSizeCalculation(siz, measuredSize)\n\t\t}\n\t}\n\treturn b, nil\n}\n\nfunc consumeMessageSliceInfo(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.BytesType {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tm := reflect.New(f.mi.GoReflectType.Elem()).Interface()\n\tmp := pointerOfIface(m)\n\to, err := f.mi.unmarshalPointer(v, mp, 0, opts)\n\tif err != nil {\n\t\treturn out, err\n\t}\n\tp.AppendPointerSlice(mp)\n\tout.n = n\n\tout.initialized = o.initialized\n\treturn out, nil\n}\n\nfunc isInitMessageSliceInfo(p pointer, f *coderFieldInfo) error {\n\ts := p.PointerSlice()\n\tfor _, v := range s {\n\t\tif err := f.mi.checkInitializedPointer(v); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc sizeMessageSlice(p pointer, goType reflect.Type, tagsize int, opts marshalOptions) int {\n\tmopts := opts.Options()\n\ts := p.PointerSlice()\n\tn := 0\n\tfor _, v := range s {\n\t\tm := asMessage(v.AsValueOf(goType.Elem()))\n\t\tn += protowire.SizeBytes(mopts.Size(m)) + tagsize\n\t}\n\treturn n\n}\n\nfunc appendMessageSlice(b []byte, p pointer, wiretag uint64, goType reflect.Type, opts marshalOptions) ([]byte, error) {\n\tmopts := opts.Options()\n\ts := p.PointerSlice()\n\tvar err error\n\tfor _, v := range s {\n\t\tm := asMessage(v.AsValueOf(goType.Elem()))\n\t\tb = protowire.AppendVarint(b, wiretag)\n\t\tsiz := mopts.Size(m)\n\t\tb = protowire.AppendVarint(b, uint64(siz))\n\t\tbefore := len(b)\n\t\tb, err = mopts.MarshalAppend(b, m)\n\t\tif err != nil {\n\t\t\treturn b, err\n\t\t}\n\t\tif measuredSize := len(b) - before; siz != measuredSize {\n\t\t\treturn nil, errors.MismatchedSizeCalculation(siz, measuredSize)\n\t\t}\n\t}\n\treturn b, nil\n}\n\nfunc consumeMessageSlice(b []byte, p pointer, goType reflect.Type, wtyp protowire.Type, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.BytesType {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tmp := reflect.New(goType.Elem())\n\to, err := opts.Options().UnmarshalState(protoiface.UnmarshalInput{\n\t\tBuf:     v,\n\t\tMessage: asMessage(mp).ProtoReflect(),\n\t})\n\tif err != nil {\n\t\treturn out, err\n\t}\n\tp.AppendPointerSlice(pointerOfValue(mp))\n\tout.n = n\n\tout.initialized = o.Flags&protoiface.UnmarshalInitialized != 0\n\treturn out, nil\n}\n\nfunc isInitMessageSlice(p pointer, goType reflect.Type) error {\n\ts := p.PointerSlice()\n\tfor _, v := range s {\n\t\tm := asMessage(v.AsValueOf(goType.Elem()))\n\t\tif err := proto.CheckInitialized(m); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\n// Slices of messages\n\nfunc sizeMessageSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) int {\n\tmopts := opts.Options()\n\tlist := listv.List()\n\tn := 0\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tm := list.Get(i).Message().Interface()\n\t\tn += protowire.SizeBytes(mopts.Size(m)) + tagsize\n\t}\n\treturn n\n}\n\nfunc appendMessageSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tmopts := opts.Options()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tm := list.Get(i).Message().Interface()\n\t\tb = protowire.AppendVarint(b, wiretag)\n\t\tsiz := mopts.Size(m)\n\t\tb = protowire.AppendVarint(b, uint64(siz))\n\t\tbefore := len(b)\n\t\tvar err error\n\t\tb, err = mopts.MarshalAppend(b, m)\n\t\tif err != nil {\n\t\t\treturn b, err\n\t\t}\n\t\tif measuredSize := len(b) - before; siz != measuredSize {\n\t\t\treturn nil, errors.MismatchedSizeCalculation(siz, measuredSize)\n\t\t}\n\t}\n\treturn b, nil\n}\n\nfunc consumeMessageSliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tlist := listv.List()\n\tif wtyp != protowire.BytesType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tm := list.NewElement()\n\to, err := opts.Options().UnmarshalState(protoiface.UnmarshalInput{\n\t\tBuf:     v,\n\t\tMessage: m.Message(),\n\t})\n\tif err != nil {\n\t\treturn protoreflect.Value{}, out, err\n\t}\n\tlist.Append(m)\n\tout.n = n\n\tout.initialized = o.Flags&protoiface.UnmarshalInitialized != 0\n\treturn listv, out, nil\n}\n\nfunc isInitMessageSliceValue(listv protoreflect.Value) error {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tm := list.Get(i).Message().Interface()\n\t\tif err := proto.CheckInitialized(m); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nvar coderMessageSliceValue = valueCoderFuncs{\n\tsize:      sizeMessageSliceValue,\n\tmarshal:   appendMessageSliceValue,\n\tunmarshal: consumeMessageSliceValue,\n\tisInit:    isInitMessageSliceValue,\n\tmerge:     mergeMessageListValue,\n}\n\nfunc sizeGroupSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) int {\n\tmopts := opts.Options()\n\tlist := listv.List()\n\tn := 0\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tm := list.Get(i).Message().Interface()\n\t\tn += 2*tagsize + mopts.Size(m)\n\t}\n\treturn n\n}\n\nfunc appendGroupSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tmopts := opts.Options()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tm := list.Get(i).Message().Interface()\n\t\tb = protowire.AppendVarint(b, wiretag) // start group\n\t\tvar err error\n\t\tb, err = mopts.MarshalAppend(b, m)\n\t\tif err != nil {\n\t\t\treturn b, err\n\t\t}\n\t\tb = protowire.AppendVarint(b, wiretag+1) // end group\n\t}\n\treturn b, nil\n}\n\nfunc consumeGroupSliceValue(b []byte, listv protoreflect.Value, num protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tlist := listv.List()\n\tif wtyp != protowire.StartGroupType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tb, n := protowire.ConsumeGroup(num, b)\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tm := list.NewElement()\n\to, err := opts.Options().UnmarshalState(protoiface.UnmarshalInput{\n\t\tBuf:     b,\n\t\tMessage: m.Message(),\n\t})\n\tif err != nil {\n\t\treturn protoreflect.Value{}, out, err\n\t}\n\tlist.Append(m)\n\tout.n = n\n\tout.initialized = o.Flags&protoiface.UnmarshalInitialized != 0\n\treturn listv, out, nil\n}\n\nvar coderGroupSliceValue = valueCoderFuncs{\n\tsize:      sizeGroupSliceValue,\n\tmarshal:   appendGroupSliceValue,\n\tunmarshal: consumeGroupSliceValue,\n\tisInit:    isInitMessageSliceValue,\n\tmerge:     mergeMessageListValue,\n}\n\nfunc makeGroupSliceFieldCoder(fd protoreflect.FieldDescriptor, ft reflect.Type) pointerCoderFuncs {\n\tnum := fd.Number()\n\tif mi := getMessageInfo(ft); mi != nil {\n\t\tfuncs := pointerCoderFuncs{\n\t\t\tsize:      sizeGroupSliceInfo,\n\t\t\tmarshal:   appendGroupSliceInfo,\n\t\t\tunmarshal: consumeGroupSliceInfo,\n\t\t\tmerge:     mergeMessageSlice,\n\t\t}\n\t\tif needsInitCheck(mi.Desc) {\n\t\t\tfuncs.isInit = isInitMessageSliceInfo\n\t\t}\n\t\treturn funcs\n\t}\n\treturn pointerCoderFuncs{\n\t\tsize: func(p pointer, f *coderFieldInfo, opts marshalOptions) int {\n\t\t\treturn sizeGroupSlice(p, ft, f.tagsize, opts)\n\t\t},\n\t\tmarshal: func(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\t\t\treturn appendGroupSlice(b, p, f.wiretag, ft, opts)\n\t\t},\n\t\tunmarshal: func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) {\n\t\t\treturn consumeGroupSlice(b, p, num, wtyp, ft, opts)\n\t\t},\n\t\tisInit: func(p pointer, f *coderFieldInfo) error {\n\t\t\treturn isInitMessageSlice(p, ft)\n\t\t},\n\t\tmerge: mergeMessageSlice,\n\t}\n}\n\nfunc sizeGroupSlice(p pointer, messageType reflect.Type, tagsize int, opts marshalOptions) int {\n\tmopts := opts.Options()\n\ts := p.PointerSlice()\n\tn := 0\n\tfor _, v := range s {\n\t\tm := asMessage(v.AsValueOf(messageType.Elem()))\n\t\tn += 2*tagsize + mopts.Size(m)\n\t}\n\treturn n\n}\n\nfunc appendGroupSlice(b []byte, p pointer, wiretag uint64, messageType reflect.Type, opts marshalOptions) ([]byte, error) {\n\ts := p.PointerSlice()\n\tvar err error\n\tfor _, v := range s {\n\t\tm := asMessage(v.AsValueOf(messageType.Elem()))\n\t\tb = protowire.AppendVarint(b, wiretag) // start group\n\t\tb, err = opts.Options().MarshalAppend(b, m)\n\t\tif err != nil {\n\t\t\treturn b, err\n\t\t}\n\t\tb = protowire.AppendVarint(b, wiretag+1) // end group\n\t}\n\treturn b, nil\n}\n\nfunc consumeGroupSlice(b []byte, p pointer, num protowire.Number, wtyp protowire.Type, goType reflect.Type, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.StartGroupType {\n\t\treturn out, errUnknown\n\t}\n\tb, n := protowire.ConsumeGroup(num, b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tmp := reflect.New(goType.Elem())\n\to, err := opts.Options().UnmarshalState(protoiface.UnmarshalInput{\n\t\tBuf:     b,\n\t\tMessage: asMessage(mp).ProtoReflect(),\n\t})\n\tif err != nil {\n\t\treturn out, err\n\t}\n\tp.AppendPointerSlice(pointerOfValue(mp))\n\tout.n = n\n\tout.initialized = o.Flags&protoiface.UnmarshalInitialized != 0\n\treturn out, nil\n}\n\nfunc sizeGroupSliceInfo(p pointer, f *coderFieldInfo, opts marshalOptions) int {\n\ts := p.PointerSlice()\n\tn := 0\n\tfor _, v := range s {\n\t\tn += 2*f.tagsize + f.mi.sizePointer(v, opts)\n\t}\n\treturn n\n}\n\nfunc appendGroupSliceInfo(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := p.PointerSlice()\n\tvar err error\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, f.wiretag) // start group\n\t\tb, err = f.mi.marshalAppendPointer(b, v, opts)\n\t\tif err != nil {\n\t\t\treturn b, err\n\t\t}\n\t\tb = protowire.AppendVarint(b, f.wiretag+1) // end group\n\t}\n\treturn b, nil\n}\n\nfunc consumeGroupSliceInfo(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) {\n\tif wtyp != protowire.StartGroupType {\n\t\treturn unmarshalOutput{}, errUnknown\n\t}\n\tm := reflect.New(f.mi.GoReflectType.Elem()).Interface()\n\tmp := pointerOfIface(m)\n\tout, err := f.mi.unmarshalPointer(b, mp, f.num, opts)\n\tif err != nil {\n\t\treturn out, err\n\t}\n\tp.AppendPointerSlice(mp)\n\treturn out, nil\n}\n\nfunc asMessage(v reflect.Value) protoreflect.ProtoMessage {\n\tif m, ok := v.Interface().(protoreflect.ProtoMessage); ok {\n\t\treturn m\n\t}\n\treturn legacyWrapMessage(v).Interface()\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/codec_field_opaque.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nfunc makeOpaqueMessageFieldCoder(fd protoreflect.FieldDescriptor, ft reflect.Type) (*MessageInfo, pointerCoderFuncs) {\n\tmi := getMessageInfo(ft)\n\tif mi == nil {\n\t\tpanic(fmt.Sprintf(\"invalid field: %v: unsupported message type %v\", fd.FullName(), ft))\n\t}\n\tswitch fd.Kind() {\n\tcase protoreflect.MessageKind:\n\t\treturn mi, pointerCoderFuncs{\n\t\t\tsize:      sizeOpaqueMessage,\n\t\t\tmarshal:   appendOpaqueMessage,\n\t\t\tunmarshal: consumeOpaqueMessage,\n\t\t\tisInit:    isInitOpaqueMessage,\n\t\t\tmerge:     mergeOpaqueMessage,\n\t\t}\n\tcase protoreflect.GroupKind:\n\t\treturn mi, pointerCoderFuncs{\n\t\t\tsize:      sizeOpaqueGroup,\n\t\t\tmarshal:   appendOpaqueGroup,\n\t\t\tunmarshal: consumeOpaqueGroup,\n\t\t\tisInit:    isInitOpaqueMessage,\n\t\t\tmerge:     mergeOpaqueMessage,\n\t\t}\n\t}\n\tpanic(\"unexpected field kind\")\n}\n\nfunc sizeOpaqueMessage(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\treturn protowire.SizeBytes(f.mi.sizePointer(p.AtomicGetPointer(), opts)) + f.tagsize\n}\n\nfunc appendOpaqueMessage(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tmp := p.AtomicGetPointer()\n\tcalculatedSize := f.mi.sizePointer(mp, opts)\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, uint64(calculatedSize))\n\tbefore := len(b)\n\tb, err := f.mi.marshalAppendPointer(b, mp, opts)\n\tif measuredSize := len(b) - before; calculatedSize != measuredSize && err == nil {\n\t\treturn nil, errors.MismatchedSizeCalculation(calculatedSize, measuredSize)\n\t}\n\treturn b, err\n}\n\nfunc consumeOpaqueMessage(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.BytesType {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tmp := p.AtomicGetPointer()\n\tif mp.IsNil() {\n\t\tmp = p.AtomicSetPointerIfNil(pointerOfValue(reflect.New(f.mi.GoReflectType.Elem())))\n\t}\n\to, err := f.mi.unmarshalPointer(v, mp, 0, opts)\n\tif err != nil {\n\t\treturn out, err\n\t}\n\tout.n = n\n\tout.initialized = o.initialized\n\treturn out, nil\n}\n\nfunc isInitOpaqueMessage(p pointer, f *coderFieldInfo) error {\n\tmp := p.AtomicGetPointer()\n\tif mp.IsNil() {\n\t\treturn nil\n\t}\n\treturn f.mi.checkInitializedPointer(mp)\n}\n\nfunc mergeOpaqueMessage(dst, src pointer, f *coderFieldInfo, opts mergeOptions) {\n\tdstmp := dst.AtomicGetPointer()\n\tif dstmp.IsNil() {\n\t\tdstmp = dst.AtomicSetPointerIfNil(pointerOfValue(reflect.New(f.mi.GoReflectType.Elem())))\n\t}\n\tf.mi.mergePointer(dstmp, src.AtomicGetPointer(), opts)\n}\n\nfunc sizeOpaqueGroup(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\treturn 2*f.tagsize + f.mi.sizePointer(p.AtomicGetPointer(), opts)\n}\n\nfunc appendOpaqueGroup(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tb = protowire.AppendVarint(b, f.wiretag) // start group\n\tb, err := f.mi.marshalAppendPointer(b, p.AtomicGetPointer(), opts)\n\tb = protowire.AppendVarint(b, f.wiretag+1) // end group\n\treturn b, err\n}\n\nfunc consumeOpaqueGroup(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.StartGroupType {\n\t\treturn out, errUnknown\n\t}\n\tmp := p.AtomicGetPointer()\n\tif mp.IsNil() {\n\t\tmp = p.AtomicSetPointerIfNil(pointerOfValue(reflect.New(f.mi.GoReflectType.Elem())))\n\t}\n\to, e := f.mi.unmarshalPointer(b, mp, f.num, opts)\n\treturn o, e\n}\n\nfunc makeOpaqueRepeatedMessageFieldCoder(fd protoreflect.FieldDescriptor, ft reflect.Type) (*MessageInfo, pointerCoderFuncs) {\n\tif ft.Kind() != reflect.Ptr || ft.Elem().Kind() != reflect.Slice {\n\t\tpanic(fmt.Sprintf(\"invalid field: %v: unsupported type for opaque repeated message: %v\", fd.FullName(), ft))\n\t}\n\tmt := ft.Elem().Elem() // *[]*T -> *T\n\tmi := getMessageInfo(mt)\n\tif mi == nil {\n\t\tpanic(fmt.Sprintf(\"invalid field: %v: unsupported message type %v\", fd.FullName(), mt))\n\t}\n\tswitch fd.Kind() {\n\tcase protoreflect.MessageKind:\n\t\treturn mi, pointerCoderFuncs{\n\t\t\tsize:      sizeOpaqueMessageSlice,\n\t\t\tmarshal:   appendOpaqueMessageSlice,\n\t\t\tunmarshal: consumeOpaqueMessageSlice,\n\t\t\tisInit:    isInitOpaqueMessageSlice,\n\t\t\tmerge:     mergeOpaqueMessageSlice,\n\t\t}\n\tcase protoreflect.GroupKind:\n\t\treturn mi, pointerCoderFuncs{\n\t\t\tsize:      sizeOpaqueGroupSlice,\n\t\t\tmarshal:   appendOpaqueGroupSlice,\n\t\t\tunmarshal: consumeOpaqueGroupSlice,\n\t\t\tisInit:    isInitOpaqueMessageSlice,\n\t\t\tmerge:     mergeOpaqueMessageSlice,\n\t\t}\n\t}\n\tpanic(\"unexpected field kind\")\n}\n\nfunc sizeOpaqueMessageSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := p.AtomicGetPointer().PointerSlice()\n\tn := 0\n\tfor _, v := range s {\n\t\tn += protowire.SizeBytes(f.mi.sizePointer(v, opts)) + f.tagsize\n\t}\n\treturn n\n}\n\nfunc appendOpaqueMessageSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := p.AtomicGetPointer().PointerSlice()\n\tvar err error\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tsiz := f.mi.sizePointer(v, opts)\n\t\tb = protowire.AppendVarint(b, uint64(siz))\n\t\tbefore := len(b)\n\t\tb, err = f.mi.marshalAppendPointer(b, v, opts)\n\t\tif err != nil {\n\t\t\treturn b, err\n\t\t}\n\t\tif measuredSize := len(b) - before; siz != measuredSize {\n\t\t\treturn nil, errors.MismatchedSizeCalculation(siz, measuredSize)\n\t\t}\n\t}\n\treturn b, nil\n}\n\nfunc consumeOpaqueMessageSlice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.BytesType {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tmp := pointerOfValue(reflect.New(f.mi.GoReflectType.Elem()))\n\to, err := f.mi.unmarshalPointer(v, mp, 0, opts)\n\tif err != nil {\n\t\treturn out, err\n\t}\n\tsp := p.AtomicGetPointer()\n\tif sp.IsNil() {\n\t\tsp = p.AtomicSetPointerIfNil(pointerOfValue(reflect.New(f.ft.Elem())))\n\t}\n\tsp.AppendPointerSlice(mp)\n\tout.n = n\n\tout.initialized = o.initialized\n\treturn out, nil\n}\n\nfunc isInitOpaqueMessageSlice(p pointer, f *coderFieldInfo) error {\n\tsp := p.AtomicGetPointer()\n\tif sp.IsNil() {\n\t\treturn nil\n\t}\n\ts := sp.PointerSlice()\n\tfor _, v := range s {\n\t\tif err := f.mi.checkInitializedPointer(v); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc mergeOpaqueMessageSlice(dst, src pointer, f *coderFieldInfo, opts mergeOptions) {\n\tds := dst.AtomicGetPointer()\n\tif ds.IsNil() {\n\t\tds = dst.AtomicSetPointerIfNil(pointerOfValue(reflect.New(f.ft.Elem())))\n\t}\n\tfor _, sp := range src.AtomicGetPointer().PointerSlice() {\n\t\tdm := pointerOfValue(reflect.New(f.mi.GoReflectType.Elem()))\n\t\tf.mi.mergePointer(dm, sp, opts)\n\t\tds.AppendPointerSlice(dm)\n\t}\n}\n\nfunc sizeOpaqueGroupSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := p.AtomicGetPointer().PointerSlice()\n\tn := 0\n\tfor _, v := range s {\n\t\tn += 2*f.tagsize + f.mi.sizePointer(v, opts)\n\t}\n\treturn n\n}\n\nfunc appendOpaqueGroupSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := p.AtomicGetPointer().PointerSlice()\n\tvar err error\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, f.wiretag) // start group\n\t\tb, err = f.mi.marshalAppendPointer(b, v, opts)\n\t\tif err != nil {\n\t\t\treturn b, err\n\t\t}\n\t\tb = protowire.AppendVarint(b, f.wiretag+1) // end group\n\t}\n\treturn b, nil\n}\n\nfunc consumeOpaqueGroupSlice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.StartGroupType {\n\t\treturn out, errUnknown\n\t}\n\tmp := pointerOfValue(reflect.New(f.mi.GoReflectType.Elem()))\n\tout, err = f.mi.unmarshalPointer(b, mp, f.num, opts)\n\tif err != nil {\n\t\treturn out, err\n\t}\n\tsp := p.AtomicGetPointer()\n\tif sp.IsNil() {\n\t\tsp = p.AtomicSetPointerIfNil(pointerOfValue(reflect.New(f.ft.Elem())))\n\t}\n\tsp.AppendPointerSlice(mp)\n\treturn out, err\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/codec_gen.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-types. DO NOT EDIT.\n\npackage impl\n\nimport (\n\t\"math\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\n// sizeBool returns the size of wire encoding a bool pointer as a Bool.\nfunc sizeBool(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Bool()\n\treturn f.tagsize + protowire.SizeVarint(protowire.EncodeBool(v))\n}\n\n// appendBool wire encodes a bool pointer as a Bool.\nfunc appendBool(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Bool()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, protowire.EncodeBool(v))\n\treturn b, nil\n}\n\n// consumeBool wire decodes a bool pointer as a Bool.\nfunc consumeBool(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*p.Bool() = protowire.DecodeBool(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderBool = pointerCoderFuncs{\n\tsize:      sizeBool,\n\tmarshal:   appendBool,\n\tunmarshal: consumeBool,\n\tmerge:     mergeBool,\n}\n\n// sizeBoolNoZero returns the size of wire encoding a bool pointer as a Bool.\n// The zero value is not encoded.\nfunc sizeBoolNoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Bool()\n\tif v == false {\n\t\treturn 0\n\t}\n\treturn f.tagsize + protowire.SizeVarint(protowire.EncodeBool(v))\n}\n\n// appendBoolNoZero wire encodes a bool pointer as a Bool.\n// The zero value is not encoded.\nfunc appendBoolNoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Bool()\n\tif v == false {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, protowire.EncodeBool(v))\n\treturn b, nil\n}\n\nvar coderBoolNoZero = pointerCoderFuncs{\n\tsize:      sizeBoolNoZero,\n\tmarshal:   appendBoolNoZero,\n\tunmarshal: consumeBool,\n\tmerge:     mergeBoolNoZero,\n}\n\n// sizeBoolPtr returns the size of wire encoding a *bool pointer as a Bool.\n// It panics if the pointer is nil.\nfunc sizeBoolPtr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := **p.BoolPtr()\n\treturn f.tagsize + protowire.SizeVarint(protowire.EncodeBool(v))\n}\n\n// appendBoolPtr wire encodes a *bool pointer as a Bool.\n// It panics if the pointer is nil.\nfunc appendBoolPtr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := **p.BoolPtr()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, protowire.EncodeBool(v))\n\treturn b, nil\n}\n\n// consumeBoolPtr wire decodes a *bool pointer as a Bool.\nfunc consumeBoolPtr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tvp := p.BoolPtr()\n\tif *vp == nil {\n\t\t*vp = new(bool)\n\t}\n\t**vp = protowire.DecodeBool(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderBoolPtr = pointerCoderFuncs{\n\tsize:      sizeBoolPtr,\n\tmarshal:   appendBoolPtr,\n\tunmarshal: consumeBoolPtr,\n\tmerge:     mergeBoolPtr,\n}\n\n// sizeBoolSlice returns the size of wire encoding a []bool pointer as a repeated Bool.\nfunc sizeBoolSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.BoolSlice()\n\tfor _, v := range s {\n\t\tsize += f.tagsize + protowire.SizeVarint(protowire.EncodeBool(v))\n\t}\n\treturn size\n}\n\n// appendBoolSlice encodes a []bool pointer as a repeated Bool.\nfunc appendBoolSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.BoolSlice()\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tb = protowire.AppendVarint(b, protowire.EncodeBool(v))\n\t}\n\treturn b, nil\n}\n\n// consumeBoolSlice wire decodes a []bool pointer as a repeated Bool.\nfunc consumeBoolSlice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tsp := p.BoolSlice()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn out, errDecode\n\t\t}\n\t\tcount := 0\n\t\tfor _, v := range b {\n\t\t\tif v < 0x80 {\n\t\t\t\tcount++\n\t\t\t}\n\t\t}\n\t\tif count > 0 {\n\t\t\tp.growBoolSlice(count)\n\t\t}\n\t\ts := *sp\n\t\tfor len(b) > 0 {\n\t\t\tvar v uint64\n\t\t\tvar n int\n\t\t\tif len(b) >= 1 && b[0] < 0x80 {\n\t\t\t\tv = uint64(b[0])\n\t\t\t\tn = 1\n\t\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\t\tn = 2\n\t\t\t} else {\n\t\t\t\tv, n = protowire.ConsumeVarint(b)\n\t\t\t}\n\t\t\tif n < 0 {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t\ts = append(s, protowire.DecodeBool(v))\n\t\t\tb = b[n:]\n\t\t}\n\t\t*sp = s\n\t\tout.n = n\n\t\treturn out, nil\n\t}\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*sp = append(*sp, protowire.DecodeBool(v))\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderBoolSlice = pointerCoderFuncs{\n\tsize:      sizeBoolSlice,\n\tmarshal:   appendBoolSlice,\n\tunmarshal: consumeBoolSlice,\n\tmerge:     mergeBoolSlice,\n}\n\n// sizeBoolPackedSlice returns the size of wire encoding a []bool pointer as a packed repeated Bool.\nfunc sizeBoolPackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.BoolSlice()\n\tif len(s) == 0 {\n\t\treturn 0\n\t}\n\tn := 0\n\tfor _, v := range s {\n\t\tn += protowire.SizeVarint(protowire.EncodeBool(v))\n\t}\n\treturn f.tagsize + protowire.SizeBytes(n)\n}\n\n// appendBoolPackedSlice encodes a []bool pointer as a packed repeated Bool.\nfunc appendBoolPackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.BoolSlice()\n\tif len(s) == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tn := 0\n\tfor _, v := range s {\n\t\tn += protowire.SizeVarint(protowire.EncodeBool(v))\n\t}\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, protowire.EncodeBool(v))\n\t}\n\treturn b, nil\n}\n\nvar coderBoolPackedSlice = pointerCoderFuncs{\n\tsize:      sizeBoolPackedSlice,\n\tmarshal:   appendBoolPackedSlice,\n\tunmarshal: consumeBoolSlice,\n\tmerge:     mergeBoolSlice,\n}\n\n// sizeBoolValue returns the size of wire encoding a bool value as a Bool.\nfunc sizeBoolValue(v protoreflect.Value, tagsize int, opts marshalOptions) int {\n\treturn tagsize + protowire.SizeVarint(protowire.EncodeBool(v.Bool()))\n}\n\n// appendBoolValue encodes a bool value as a Bool.\nfunc appendBoolValue(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tb = protowire.AppendVarint(b, wiretag)\n\tb = protowire.AppendVarint(b, protowire.EncodeBool(v.Bool()))\n\treturn b, nil\n}\n\n// consumeBoolValue decodes a bool value as a Bool.\nfunc consumeBoolValue(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tout.n = n\n\treturn protoreflect.ValueOfBool(protowire.DecodeBool(v)), out, nil\n}\n\nvar coderBoolValue = valueCoderFuncs{\n\tsize:      sizeBoolValue,\n\tmarshal:   appendBoolValue,\n\tunmarshal: consumeBoolValue,\n\tmerge:     mergeScalarValue,\n}\n\n// sizeBoolSliceValue returns the size of wire encoding a []bool value as a repeated Bool.\nfunc sizeBoolSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tsize += tagsize + protowire.SizeVarint(protowire.EncodeBool(v.Bool()))\n\t}\n\treturn size\n}\n\n// appendBoolSliceValue encodes a []bool value as a repeated Bool.\nfunc appendBoolSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, wiretag)\n\t\tb = protowire.AppendVarint(b, protowire.EncodeBool(v.Bool()))\n\t}\n\treturn b, nil\n}\n\n// consumeBoolSliceValue wire decodes a []bool value as a repeated Bool.\nfunc consumeBoolSliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tlist := listv.List()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t}\n\t\tfor len(b) > 0 {\n\t\t\tvar v uint64\n\t\t\tvar n int\n\t\t\tif len(b) >= 1 && b[0] < 0x80 {\n\t\t\t\tv = uint64(b[0])\n\t\t\t\tn = 1\n\t\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\t\tn = 2\n\t\t\t} else {\n\t\t\t\tv, n = protowire.ConsumeVarint(b)\n\t\t\t}\n\t\t\tif n < 0 {\n\t\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t\t}\n\t\t\tlist.Append(protoreflect.ValueOfBool(protowire.DecodeBool(v)))\n\t\t\tb = b[n:]\n\t\t}\n\t\tout.n = n\n\t\treturn listv, out, nil\n\t}\n\tif wtyp != protowire.VarintType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tlist.Append(protoreflect.ValueOfBool(protowire.DecodeBool(v)))\n\tout.n = n\n\treturn listv, out, nil\n}\n\nvar coderBoolSliceValue = valueCoderFuncs{\n\tsize:      sizeBoolSliceValue,\n\tmarshal:   appendBoolSliceValue,\n\tunmarshal: consumeBoolSliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeBoolPackedSliceValue returns the size of wire encoding a []bool value as a packed repeated Bool.\nfunc sizeBoolPackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn 0\n\t}\n\tn := 0\n\tfor i, llen := 0, llen; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tn += protowire.SizeVarint(protowire.EncodeBool(v.Bool()))\n\t}\n\treturn tagsize + protowire.SizeBytes(n)\n}\n\n// appendBoolPackedSliceValue encodes a []bool value as a packed repeated Bool.\nfunc appendBoolPackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, wiretag)\n\tn := 0\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tn += protowire.SizeVarint(protowire.EncodeBool(v.Bool()))\n\t}\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, protowire.EncodeBool(v.Bool()))\n\t}\n\treturn b, nil\n}\n\nvar coderBoolPackedSliceValue = valueCoderFuncs{\n\tsize:      sizeBoolPackedSliceValue,\n\tmarshal:   appendBoolPackedSliceValue,\n\tunmarshal: consumeBoolSliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeEnumValue returns the size of wire encoding a  value as a Enum.\nfunc sizeEnumValue(v protoreflect.Value, tagsize int, opts marshalOptions) int {\n\treturn tagsize + protowire.SizeVarint(uint64(v.Enum()))\n}\n\n// appendEnumValue encodes a  value as a Enum.\nfunc appendEnumValue(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tb = protowire.AppendVarint(b, wiretag)\n\tb = protowire.AppendVarint(b, uint64(v.Enum()))\n\treturn b, nil\n}\n\n// consumeEnumValue decodes a  value as a Enum.\nfunc consumeEnumValue(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tout.n = n\n\treturn protoreflect.ValueOfEnum(protoreflect.EnumNumber(v)), out, nil\n}\n\nvar coderEnumValue = valueCoderFuncs{\n\tsize:      sizeEnumValue,\n\tmarshal:   appendEnumValue,\n\tunmarshal: consumeEnumValue,\n\tmerge:     mergeScalarValue,\n}\n\n// sizeEnumSliceValue returns the size of wire encoding a [] value as a repeated Enum.\nfunc sizeEnumSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tsize += tagsize + protowire.SizeVarint(uint64(v.Enum()))\n\t}\n\treturn size\n}\n\n// appendEnumSliceValue encodes a [] value as a repeated Enum.\nfunc appendEnumSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, wiretag)\n\t\tb = protowire.AppendVarint(b, uint64(v.Enum()))\n\t}\n\treturn b, nil\n}\n\n// consumeEnumSliceValue wire decodes a [] value as a repeated Enum.\nfunc consumeEnumSliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tlist := listv.List()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t}\n\t\tfor len(b) > 0 {\n\t\t\tvar v uint64\n\t\t\tvar n int\n\t\t\tif len(b) >= 1 && b[0] < 0x80 {\n\t\t\t\tv = uint64(b[0])\n\t\t\t\tn = 1\n\t\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\t\tn = 2\n\t\t\t} else {\n\t\t\t\tv, n = protowire.ConsumeVarint(b)\n\t\t\t}\n\t\t\tif n < 0 {\n\t\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t\t}\n\t\t\tlist.Append(protoreflect.ValueOfEnum(protoreflect.EnumNumber(v)))\n\t\t\tb = b[n:]\n\t\t}\n\t\tout.n = n\n\t\treturn listv, out, nil\n\t}\n\tif wtyp != protowire.VarintType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tlist.Append(protoreflect.ValueOfEnum(protoreflect.EnumNumber(v)))\n\tout.n = n\n\treturn listv, out, nil\n}\n\nvar coderEnumSliceValue = valueCoderFuncs{\n\tsize:      sizeEnumSliceValue,\n\tmarshal:   appendEnumSliceValue,\n\tunmarshal: consumeEnumSliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeEnumPackedSliceValue returns the size of wire encoding a [] value as a packed repeated Enum.\nfunc sizeEnumPackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn 0\n\t}\n\tn := 0\n\tfor i, llen := 0, llen; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tn += protowire.SizeVarint(uint64(v.Enum()))\n\t}\n\treturn tagsize + protowire.SizeBytes(n)\n}\n\n// appendEnumPackedSliceValue encodes a [] value as a packed repeated Enum.\nfunc appendEnumPackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, wiretag)\n\tn := 0\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tn += protowire.SizeVarint(uint64(v.Enum()))\n\t}\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, uint64(v.Enum()))\n\t}\n\treturn b, nil\n}\n\nvar coderEnumPackedSliceValue = valueCoderFuncs{\n\tsize:      sizeEnumPackedSliceValue,\n\tmarshal:   appendEnumPackedSliceValue,\n\tunmarshal: consumeEnumSliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeInt32 returns the size of wire encoding a int32 pointer as a Int32.\nfunc sizeInt32(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Int32()\n\treturn f.tagsize + protowire.SizeVarint(uint64(v))\n}\n\n// appendInt32 wire encodes a int32 pointer as a Int32.\nfunc appendInt32(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Int32()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, uint64(v))\n\treturn b, nil\n}\n\n// consumeInt32 wire decodes a int32 pointer as a Int32.\nfunc consumeInt32(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*p.Int32() = int32(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderInt32 = pointerCoderFuncs{\n\tsize:      sizeInt32,\n\tmarshal:   appendInt32,\n\tunmarshal: consumeInt32,\n\tmerge:     mergeInt32,\n}\n\n// sizeInt32NoZero returns the size of wire encoding a int32 pointer as a Int32.\n// The zero value is not encoded.\nfunc sizeInt32NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Int32()\n\tif v == 0 {\n\t\treturn 0\n\t}\n\treturn f.tagsize + protowire.SizeVarint(uint64(v))\n}\n\n// appendInt32NoZero wire encodes a int32 pointer as a Int32.\n// The zero value is not encoded.\nfunc appendInt32NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Int32()\n\tif v == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, uint64(v))\n\treturn b, nil\n}\n\nvar coderInt32NoZero = pointerCoderFuncs{\n\tsize:      sizeInt32NoZero,\n\tmarshal:   appendInt32NoZero,\n\tunmarshal: consumeInt32,\n\tmerge:     mergeInt32NoZero,\n}\n\n// sizeInt32Ptr returns the size of wire encoding a *int32 pointer as a Int32.\n// It panics if the pointer is nil.\nfunc sizeInt32Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := **p.Int32Ptr()\n\treturn f.tagsize + protowire.SizeVarint(uint64(v))\n}\n\n// appendInt32Ptr wire encodes a *int32 pointer as a Int32.\n// It panics if the pointer is nil.\nfunc appendInt32Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := **p.Int32Ptr()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, uint64(v))\n\treturn b, nil\n}\n\n// consumeInt32Ptr wire decodes a *int32 pointer as a Int32.\nfunc consumeInt32Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tvp := p.Int32Ptr()\n\tif *vp == nil {\n\t\t*vp = new(int32)\n\t}\n\t**vp = int32(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderInt32Ptr = pointerCoderFuncs{\n\tsize:      sizeInt32Ptr,\n\tmarshal:   appendInt32Ptr,\n\tunmarshal: consumeInt32Ptr,\n\tmerge:     mergeInt32Ptr,\n}\n\n// sizeInt32Slice returns the size of wire encoding a []int32 pointer as a repeated Int32.\nfunc sizeInt32Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Int32Slice()\n\tfor _, v := range s {\n\t\tsize += f.tagsize + protowire.SizeVarint(uint64(v))\n\t}\n\treturn size\n}\n\n// appendInt32Slice encodes a []int32 pointer as a repeated Int32.\nfunc appendInt32Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Int32Slice()\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tb = protowire.AppendVarint(b, uint64(v))\n\t}\n\treturn b, nil\n}\n\n// consumeInt32Slice wire decodes a []int32 pointer as a repeated Int32.\nfunc consumeInt32Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tsp := p.Int32Slice()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn out, errDecode\n\t\t}\n\t\tcount := 0\n\t\tfor _, v := range b {\n\t\t\tif v < 0x80 {\n\t\t\t\tcount++\n\t\t\t}\n\t\t}\n\t\tif count > 0 {\n\t\t\tp.growInt32Slice(count)\n\t\t}\n\t\ts := *sp\n\t\tfor len(b) > 0 {\n\t\t\tvar v uint64\n\t\t\tvar n int\n\t\t\tif len(b) >= 1 && b[0] < 0x80 {\n\t\t\t\tv = uint64(b[0])\n\t\t\t\tn = 1\n\t\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\t\tn = 2\n\t\t\t} else {\n\t\t\t\tv, n = protowire.ConsumeVarint(b)\n\t\t\t}\n\t\t\tif n < 0 {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t\ts = append(s, int32(v))\n\t\t\tb = b[n:]\n\t\t}\n\t\t*sp = s\n\t\tout.n = n\n\t\treturn out, nil\n\t}\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*sp = append(*sp, int32(v))\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderInt32Slice = pointerCoderFuncs{\n\tsize:      sizeInt32Slice,\n\tmarshal:   appendInt32Slice,\n\tunmarshal: consumeInt32Slice,\n\tmerge:     mergeInt32Slice,\n}\n\n// sizeInt32PackedSlice returns the size of wire encoding a []int32 pointer as a packed repeated Int32.\nfunc sizeInt32PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Int32Slice()\n\tif len(s) == 0 {\n\t\treturn 0\n\t}\n\tn := 0\n\tfor _, v := range s {\n\t\tn += protowire.SizeVarint(uint64(v))\n\t}\n\treturn f.tagsize + protowire.SizeBytes(n)\n}\n\n// appendInt32PackedSlice encodes a []int32 pointer as a packed repeated Int32.\nfunc appendInt32PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Int32Slice()\n\tif len(s) == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tn := 0\n\tfor _, v := range s {\n\t\tn += protowire.SizeVarint(uint64(v))\n\t}\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, uint64(v))\n\t}\n\treturn b, nil\n}\n\nvar coderInt32PackedSlice = pointerCoderFuncs{\n\tsize:      sizeInt32PackedSlice,\n\tmarshal:   appendInt32PackedSlice,\n\tunmarshal: consumeInt32Slice,\n\tmerge:     mergeInt32Slice,\n}\n\n// sizeInt32Value returns the size of wire encoding a int32 value as a Int32.\nfunc sizeInt32Value(v protoreflect.Value, tagsize int, opts marshalOptions) int {\n\treturn tagsize + protowire.SizeVarint(uint64(int32(v.Int())))\n}\n\n// appendInt32Value encodes a int32 value as a Int32.\nfunc appendInt32Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tb = protowire.AppendVarint(b, wiretag)\n\tb = protowire.AppendVarint(b, uint64(int32(v.Int())))\n\treturn b, nil\n}\n\n// consumeInt32Value decodes a int32 value as a Int32.\nfunc consumeInt32Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tout.n = n\n\treturn protoreflect.ValueOfInt32(int32(v)), out, nil\n}\n\nvar coderInt32Value = valueCoderFuncs{\n\tsize:      sizeInt32Value,\n\tmarshal:   appendInt32Value,\n\tunmarshal: consumeInt32Value,\n\tmerge:     mergeScalarValue,\n}\n\n// sizeInt32SliceValue returns the size of wire encoding a []int32 value as a repeated Int32.\nfunc sizeInt32SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tsize += tagsize + protowire.SizeVarint(uint64(int32(v.Int())))\n\t}\n\treturn size\n}\n\n// appendInt32SliceValue encodes a []int32 value as a repeated Int32.\nfunc appendInt32SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, wiretag)\n\t\tb = protowire.AppendVarint(b, uint64(int32(v.Int())))\n\t}\n\treturn b, nil\n}\n\n// consumeInt32SliceValue wire decodes a []int32 value as a repeated Int32.\nfunc consumeInt32SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tlist := listv.List()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t}\n\t\tfor len(b) > 0 {\n\t\t\tvar v uint64\n\t\t\tvar n int\n\t\t\tif len(b) >= 1 && b[0] < 0x80 {\n\t\t\t\tv = uint64(b[0])\n\t\t\t\tn = 1\n\t\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\t\tn = 2\n\t\t\t} else {\n\t\t\t\tv, n = protowire.ConsumeVarint(b)\n\t\t\t}\n\t\t\tif n < 0 {\n\t\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t\t}\n\t\t\tlist.Append(protoreflect.ValueOfInt32(int32(v)))\n\t\t\tb = b[n:]\n\t\t}\n\t\tout.n = n\n\t\treturn listv, out, nil\n\t}\n\tif wtyp != protowire.VarintType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tlist.Append(protoreflect.ValueOfInt32(int32(v)))\n\tout.n = n\n\treturn listv, out, nil\n}\n\nvar coderInt32SliceValue = valueCoderFuncs{\n\tsize:      sizeInt32SliceValue,\n\tmarshal:   appendInt32SliceValue,\n\tunmarshal: consumeInt32SliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeInt32PackedSliceValue returns the size of wire encoding a []int32 value as a packed repeated Int32.\nfunc sizeInt32PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn 0\n\t}\n\tn := 0\n\tfor i, llen := 0, llen; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tn += protowire.SizeVarint(uint64(int32(v.Int())))\n\t}\n\treturn tagsize + protowire.SizeBytes(n)\n}\n\n// appendInt32PackedSliceValue encodes a []int32 value as a packed repeated Int32.\nfunc appendInt32PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, wiretag)\n\tn := 0\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tn += protowire.SizeVarint(uint64(int32(v.Int())))\n\t}\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, uint64(int32(v.Int())))\n\t}\n\treturn b, nil\n}\n\nvar coderInt32PackedSliceValue = valueCoderFuncs{\n\tsize:      sizeInt32PackedSliceValue,\n\tmarshal:   appendInt32PackedSliceValue,\n\tunmarshal: consumeInt32SliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeSint32 returns the size of wire encoding a int32 pointer as a Sint32.\nfunc sizeSint32(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Int32()\n\treturn f.tagsize + protowire.SizeVarint(protowire.EncodeZigZag(int64(v)))\n}\n\n// appendSint32 wire encodes a int32 pointer as a Sint32.\nfunc appendSint32(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Int32()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(v)))\n\treturn b, nil\n}\n\n// consumeSint32 wire decodes a int32 pointer as a Sint32.\nfunc consumeSint32(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*p.Int32() = int32(protowire.DecodeZigZag(v & math.MaxUint32))\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderSint32 = pointerCoderFuncs{\n\tsize:      sizeSint32,\n\tmarshal:   appendSint32,\n\tunmarshal: consumeSint32,\n\tmerge:     mergeInt32,\n}\n\n// sizeSint32NoZero returns the size of wire encoding a int32 pointer as a Sint32.\n// The zero value is not encoded.\nfunc sizeSint32NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Int32()\n\tif v == 0 {\n\t\treturn 0\n\t}\n\treturn f.tagsize + protowire.SizeVarint(protowire.EncodeZigZag(int64(v)))\n}\n\n// appendSint32NoZero wire encodes a int32 pointer as a Sint32.\n// The zero value is not encoded.\nfunc appendSint32NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Int32()\n\tif v == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(v)))\n\treturn b, nil\n}\n\nvar coderSint32NoZero = pointerCoderFuncs{\n\tsize:      sizeSint32NoZero,\n\tmarshal:   appendSint32NoZero,\n\tunmarshal: consumeSint32,\n\tmerge:     mergeInt32NoZero,\n}\n\n// sizeSint32Ptr returns the size of wire encoding a *int32 pointer as a Sint32.\n// It panics if the pointer is nil.\nfunc sizeSint32Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := **p.Int32Ptr()\n\treturn f.tagsize + protowire.SizeVarint(protowire.EncodeZigZag(int64(v)))\n}\n\n// appendSint32Ptr wire encodes a *int32 pointer as a Sint32.\n// It panics if the pointer is nil.\nfunc appendSint32Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := **p.Int32Ptr()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(v)))\n\treturn b, nil\n}\n\n// consumeSint32Ptr wire decodes a *int32 pointer as a Sint32.\nfunc consumeSint32Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tvp := p.Int32Ptr()\n\tif *vp == nil {\n\t\t*vp = new(int32)\n\t}\n\t**vp = int32(protowire.DecodeZigZag(v & math.MaxUint32))\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderSint32Ptr = pointerCoderFuncs{\n\tsize:      sizeSint32Ptr,\n\tmarshal:   appendSint32Ptr,\n\tunmarshal: consumeSint32Ptr,\n\tmerge:     mergeInt32Ptr,\n}\n\n// sizeSint32Slice returns the size of wire encoding a []int32 pointer as a repeated Sint32.\nfunc sizeSint32Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Int32Slice()\n\tfor _, v := range s {\n\t\tsize += f.tagsize + protowire.SizeVarint(protowire.EncodeZigZag(int64(v)))\n\t}\n\treturn size\n}\n\n// appendSint32Slice encodes a []int32 pointer as a repeated Sint32.\nfunc appendSint32Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Int32Slice()\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tb = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(v)))\n\t}\n\treturn b, nil\n}\n\n// consumeSint32Slice wire decodes a []int32 pointer as a repeated Sint32.\nfunc consumeSint32Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tsp := p.Int32Slice()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn out, errDecode\n\t\t}\n\t\tcount := 0\n\t\tfor _, v := range b {\n\t\t\tif v < 0x80 {\n\t\t\t\tcount++\n\t\t\t}\n\t\t}\n\t\tif count > 0 {\n\t\t\tp.growInt32Slice(count)\n\t\t}\n\t\ts := *sp\n\t\tfor len(b) > 0 {\n\t\t\tvar v uint64\n\t\t\tvar n int\n\t\t\tif len(b) >= 1 && b[0] < 0x80 {\n\t\t\t\tv = uint64(b[0])\n\t\t\t\tn = 1\n\t\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\t\tn = 2\n\t\t\t} else {\n\t\t\t\tv, n = protowire.ConsumeVarint(b)\n\t\t\t}\n\t\t\tif n < 0 {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t\ts = append(s, int32(protowire.DecodeZigZag(v&math.MaxUint32)))\n\t\t\tb = b[n:]\n\t\t}\n\t\t*sp = s\n\t\tout.n = n\n\t\treturn out, nil\n\t}\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*sp = append(*sp, int32(protowire.DecodeZigZag(v&math.MaxUint32)))\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderSint32Slice = pointerCoderFuncs{\n\tsize:      sizeSint32Slice,\n\tmarshal:   appendSint32Slice,\n\tunmarshal: consumeSint32Slice,\n\tmerge:     mergeInt32Slice,\n}\n\n// sizeSint32PackedSlice returns the size of wire encoding a []int32 pointer as a packed repeated Sint32.\nfunc sizeSint32PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Int32Slice()\n\tif len(s) == 0 {\n\t\treturn 0\n\t}\n\tn := 0\n\tfor _, v := range s {\n\t\tn += protowire.SizeVarint(protowire.EncodeZigZag(int64(v)))\n\t}\n\treturn f.tagsize + protowire.SizeBytes(n)\n}\n\n// appendSint32PackedSlice encodes a []int32 pointer as a packed repeated Sint32.\nfunc appendSint32PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Int32Slice()\n\tif len(s) == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tn := 0\n\tfor _, v := range s {\n\t\tn += protowire.SizeVarint(protowire.EncodeZigZag(int64(v)))\n\t}\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(v)))\n\t}\n\treturn b, nil\n}\n\nvar coderSint32PackedSlice = pointerCoderFuncs{\n\tsize:      sizeSint32PackedSlice,\n\tmarshal:   appendSint32PackedSlice,\n\tunmarshal: consumeSint32Slice,\n\tmerge:     mergeInt32Slice,\n}\n\n// sizeSint32Value returns the size of wire encoding a int32 value as a Sint32.\nfunc sizeSint32Value(v protoreflect.Value, tagsize int, opts marshalOptions) int {\n\treturn tagsize + protowire.SizeVarint(protowire.EncodeZigZag(int64(int32(v.Int()))))\n}\n\n// appendSint32Value encodes a int32 value as a Sint32.\nfunc appendSint32Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tb = protowire.AppendVarint(b, wiretag)\n\tb = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(int32(v.Int()))))\n\treturn b, nil\n}\n\n// consumeSint32Value decodes a int32 value as a Sint32.\nfunc consumeSint32Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tout.n = n\n\treturn protoreflect.ValueOfInt32(int32(protowire.DecodeZigZag(v & math.MaxUint32))), out, nil\n}\n\nvar coderSint32Value = valueCoderFuncs{\n\tsize:      sizeSint32Value,\n\tmarshal:   appendSint32Value,\n\tunmarshal: consumeSint32Value,\n\tmerge:     mergeScalarValue,\n}\n\n// sizeSint32SliceValue returns the size of wire encoding a []int32 value as a repeated Sint32.\nfunc sizeSint32SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tsize += tagsize + protowire.SizeVarint(protowire.EncodeZigZag(int64(int32(v.Int()))))\n\t}\n\treturn size\n}\n\n// appendSint32SliceValue encodes a []int32 value as a repeated Sint32.\nfunc appendSint32SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, wiretag)\n\t\tb = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(int32(v.Int()))))\n\t}\n\treturn b, nil\n}\n\n// consumeSint32SliceValue wire decodes a []int32 value as a repeated Sint32.\nfunc consumeSint32SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tlist := listv.List()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t}\n\t\tfor len(b) > 0 {\n\t\t\tvar v uint64\n\t\t\tvar n int\n\t\t\tif len(b) >= 1 && b[0] < 0x80 {\n\t\t\t\tv = uint64(b[0])\n\t\t\t\tn = 1\n\t\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\t\tn = 2\n\t\t\t} else {\n\t\t\t\tv, n = protowire.ConsumeVarint(b)\n\t\t\t}\n\t\t\tif n < 0 {\n\t\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t\t}\n\t\t\tlist.Append(protoreflect.ValueOfInt32(int32(protowire.DecodeZigZag(v & math.MaxUint32))))\n\t\t\tb = b[n:]\n\t\t}\n\t\tout.n = n\n\t\treturn listv, out, nil\n\t}\n\tif wtyp != protowire.VarintType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tlist.Append(protoreflect.ValueOfInt32(int32(protowire.DecodeZigZag(v & math.MaxUint32))))\n\tout.n = n\n\treturn listv, out, nil\n}\n\nvar coderSint32SliceValue = valueCoderFuncs{\n\tsize:      sizeSint32SliceValue,\n\tmarshal:   appendSint32SliceValue,\n\tunmarshal: consumeSint32SliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeSint32PackedSliceValue returns the size of wire encoding a []int32 value as a packed repeated Sint32.\nfunc sizeSint32PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn 0\n\t}\n\tn := 0\n\tfor i, llen := 0, llen; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tn += protowire.SizeVarint(protowire.EncodeZigZag(int64(int32(v.Int()))))\n\t}\n\treturn tagsize + protowire.SizeBytes(n)\n}\n\n// appendSint32PackedSliceValue encodes a []int32 value as a packed repeated Sint32.\nfunc appendSint32PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, wiretag)\n\tn := 0\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tn += protowire.SizeVarint(protowire.EncodeZigZag(int64(int32(v.Int()))))\n\t}\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(int32(v.Int()))))\n\t}\n\treturn b, nil\n}\n\nvar coderSint32PackedSliceValue = valueCoderFuncs{\n\tsize:      sizeSint32PackedSliceValue,\n\tmarshal:   appendSint32PackedSliceValue,\n\tunmarshal: consumeSint32SliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeUint32 returns the size of wire encoding a uint32 pointer as a Uint32.\nfunc sizeUint32(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Uint32()\n\treturn f.tagsize + protowire.SizeVarint(uint64(v))\n}\n\n// appendUint32 wire encodes a uint32 pointer as a Uint32.\nfunc appendUint32(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Uint32()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, uint64(v))\n\treturn b, nil\n}\n\n// consumeUint32 wire decodes a uint32 pointer as a Uint32.\nfunc consumeUint32(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*p.Uint32() = uint32(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderUint32 = pointerCoderFuncs{\n\tsize:      sizeUint32,\n\tmarshal:   appendUint32,\n\tunmarshal: consumeUint32,\n\tmerge:     mergeUint32,\n}\n\n// sizeUint32NoZero returns the size of wire encoding a uint32 pointer as a Uint32.\n// The zero value is not encoded.\nfunc sizeUint32NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Uint32()\n\tif v == 0 {\n\t\treturn 0\n\t}\n\treturn f.tagsize + protowire.SizeVarint(uint64(v))\n}\n\n// appendUint32NoZero wire encodes a uint32 pointer as a Uint32.\n// The zero value is not encoded.\nfunc appendUint32NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Uint32()\n\tif v == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, uint64(v))\n\treturn b, nil\n}\n\nvar coderUint32NoZero = pointerCoderFuncs{\n\tsize:      sizeUint32NoZero,\n\tmarshal:   appendUint32NoZero,\n\tunmarshal: consumeUint32,\n\tmerge:     mergeUint32NoZero,\n}\n\n// sizeUint32Ptr returns the size of wire encoding a *uint32 pointer as a Uint32.\n// It panics if the pointer is nil.\nfunc sizeUint32Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := **p.Uint32Ptr()\n\treturn f.tagsize + protowire.SizeVarint(uint64(v))\n}\n\n// appendUint32Ptr wire encodes a *uint32 pointer as a Uint32.\n// It panics if the pointer is nil.\nfunc appendUint32Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := **p.Uint32Ptr()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, uint64(v))\n\treturn b, nil\n}\n\n// consumeUint32Ptr wire decodes a *uint32 pointer as a Uint32.\nfunc consumeUint32Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tvp := p.Uint32Ptr()\n\tif *vp == nil {\n\t\t*vp = new(uint32)\n\t}\n\t**vp = uint32(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderUint32Ptr = pointerCoderFuncs{\n\tsize:      sizeUint32Ptr,\n\tmarshal:   appendUint32Ptr,\n\tunmarshal: consumeUint32Ptr,\n\tmerge:     mergeUint32Ptr,\n}\n\n// sizeUint32Slice returns the size of wire encoding a []uint32 pointer as a repeated Uint32.\nfunc sizeUint32Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Uint32Slice()\n\tfor _, v := range s {\n\t\tsize += f.tagsize + protowire.SizeVarint(uint64(v))\n\t}\n\treturn size\n}\n\n// appendUint32Slice encodes a []uint32 pointer as a repeated Uint32.\nfunc appendUint32Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Uint32Slice()\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tb = protowire.AppendVarint(b, uint64(v))\n\t}\n\treturn b, nil\n}\n\n// consumeUint32Slice wire decodes a []uint32 pointer as a repeated Uint32.\nfunc consumeUint32Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tsp := p.Uint32Slice()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn out, errDecode\n\t\t}\n\t\tcount := 0\n\t\tfor _, v := range b {\n\t\t\tif v < 0x80 {\n\t\t\t\tcount++\n\t\t\t}\n\t\t}\n\t\tif count > 0 {\n\t\t\tp.growUint32Slice(count)\n\t\t}\n\t\ts := *sp\n\t\tfor len(b) > 0 {\n\t\t\tvar v uint64\n\t\t\tvar n int\n\t\t\tif len(b) >= 1 && b[0] < 0x80 {\n\t\t\t\tv = uint64(b[0])\n\t\t\t\tn = 1\n\t\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\t\tn = 2\n\t\t\t} else {\n\t\t\t\tv, n = protowire.ConsumeVarint(b)\n\t\t\t}\n\t\t\tif n < 0 {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t\ts = append(s, uint32(v))\n\t\t\tb = b[n:]\n\t\t}\n\t\t*sp = s\n\t\tout.n = n\n\t\treturn out, nil\n\t}\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*sp = append(*sp, uint32(v))\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderUint32Slice = pointerCoderFuncs{\n\tsize:      sizeUint32Slice,\n\tmarshal:   appendUint32Slice,\n\tunmarshal: consumeUint32Slice,\n\tmerge:     mergeUint32Slice,\n}\n\n// sizeUint32PackedSlice returns the size of wire encoding a []uint32 pointer as a packed repeated Uint32.\nfunc sizeUint32PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Uint32Slice()\n\tif len(s) == 0 {\n\t\treturn 0\n\t}\n\tn := 0\n\tfor _, v := range s {\n\t\tn += protowire.SizeVarint(uint64(v))\n\t}\n\treturn f.tagsize + protowire.SizeBytes(n)\n}\n\n// appendUint32PackedSlice encodes a []uint32 pointer as a packed repeated Uint32.\nfunc appendUint32PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Uint32Slice()\n\tif len(s) == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tn := 0\n\tfor _, v := range s {\n\t\tn += protowire.SizeVarint(uint64(v))\n\t}\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, uint64(v))\n\t}\n\treturn b, nil\n}\n\nvar coderUint32PackedSlice = pointerCoderFuncs{\n\tsize:      sizeUint32PackedSlice,\n\tmarshal:   appendUint32PackedSlice,\n\tunmarshal: consumeUint32Slice,\n\tmerge:     mergeUint32Slice,\n}\n\n// sizeUint32Value returns the size of wire encoding a uint32 value as a Uint32.\nfunc sizeUint32Value(v protoreflect.Value, tagsize int, opts marshalOptions) int {\n\treturn tagsize + protowire.SizeVarint(uint64(uint32(v.Uint())))\n}\n\n// appendUint32Value encodes a uint32 value as a Uint32.\nfunc appendUint32Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tb = protowire.AppendVarint(b, wiretag)\n\tb = protowire.AppendVarint(b, uint64(uint32(v.Uint())))\n\treturn b, nil\n}\n\n// consumeUint32Value decodes a uint32 value as a Uint32.\nfunc consumeUint32Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tout.n = n\n\treturn protoreflect.ValueOfUint32(uint32(v)), out, nil\n}\n\nvar coderUint32Value = valueCoderFuncs{\n\tsize:      sizeUint32Value,\n\tmarshal:   appendUint32Value,\n\tunmarshal: consumeUint32Value,\n\tmerge:     mergeScalarValue,\n}\n\n// sizeUint32SliceValue returns the size of wire encoding a []uint32 value as a repeated Uint32.\nfunc sizeUint32SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tsize += tagsize + protowire.SizeVarint(uint64(uint32(v.Uint())))\n\t}\n\treturn size\n}\n\n// appendUint32SliceValue encodes a []uint32 value as a repeated Uint32.\nfunc appendUint32SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, wiretag)\n\t\tb = protowire.AppendVarint(b, uint64(uint32(v.Uint())))\n\t}\n\treturn b, nil\n}\n\n// consumeUint32SliceValue wire decodes a []uint32 value as a repeated Uint32.\nfunc consumeUint32SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tlist := listv.List()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t}\n\t\tfor len(b) > 0 {\n\t\t\tvar v uint64\n\t\t\tvar n int\n\t\t\tif len(b) >= 1 && b[0] < 0x80 {\n\t\t\t\tv = uint64(b[0])\n\t\t\t\tn = 1\n\t\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\t\tn = 2\n\t\t\t} else {\n\t\t\t\tv, n = protowire.ConsumeVarint(b)\n\t\t\t}\n\t\t\tif n < 0 {\n\t\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t\t}\n\t\t\tlist.Append(protoreflect.ValueOfUint32(uint32(v)))\n\t\t\tb = b[n:]\n\t\t}\n\t\tout.n = n\n\t\treturn listv, out, nil\n\t}\n\tif wtyp != protowire.VarintType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tlist.Append(protoreflect.ValueOfUint32(uint32(v)))\n\tout.n = n\n\treturn listv, out, nil\n}\n\nvar coderUint32SliceValue = valueCoderFuncs{\n\tsize:      sizeUint32SliceValue,\n\tmarshal:   appendUint32SliceValue,\n\tunmarshal: consumeUint32SliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeUint32PackedSliceValue returns the size of wire encoding a []uint32 value as a packed repeated Uint32.\nfunc sizeUint32PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn 0\n\t}\n\tn := 0\n\tfor i, llen := 0, llen; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tn += protowire.SizeVarint(uint64(uint32(v.Uint())))\n\t}\n\treturn tagsize + protowire.SizeBytes(n)\n}\n\n// appendUint32PackedSliceValue encodes a []uint32 value as a packed repeated Uint32.\nfunc appendUint32PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, wiretag)\n\tn := 0\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tn += protowire.SizeVarint(uint64(uint32(v.Uint())))\n\t}\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, uint64(uint32(v.Uint())))\n\t}\n\treturn b, nil\n}\n\nvar coderUint32PackedSliceValue = valueCoderFuncs{\n\tsize:      sizeUint32PackedSliceValue,\n\tmarshal:   appendUint32PackedSliceValue,\n\tunmarshal: consumeUint32SliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeInt64 returns the size of wire encoding a int64 pointer as a Int64.\nfunc sizeInt64(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Int64()\n\treturn f.tagsize + protowire.SizeVarint(uint64(v))\n}\n\n// appendInt64 wire encodes a int64 pointer as a Int64.\nfunc appendInt64(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Int64()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, uint64(v))\n\treturn b, nil\n}\n\n// consumeInt64 wire decodes a int64 pointer as a Int64.\nfunc consumeInt64(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*p.Int64() = int64(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderInt64 = pointerCoderFuncs{\n\tsize:      sizeInt64,\n\tmarshal:   appendInt64,\n\tunmarshal: consumeInt64,\n\tmerge:     mergeInt64,\n}\n\n// sizeInt64NoZero returns the size of wire encoding a int64 pointer as a Int64.\n// The zero value is not encoded.\nfunc sizeInt64NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Int64()\n\tif v == 0 {\n\t\treturn 0\n\t}\n\treturn f.tagsize + protowire.SizeVarint(uint64(v))\n}\n\n// appendInt64NoZero wire encodes a int64 pointer as a Int64.\n// The zero value is not encoded.\nfunc appendInt64NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Int64()\n\tif v == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, uint64(v))\n\treturn b, nil\n}\n\nvar coderInt64NoZero = pointerCoderFuncs{\n\tsize:      sizeInt64NoZero,\n\tmarshal:   appendInt64NoZero,\n\tunmarshal: consumeInt64,\n\tmerge:     mergeInt64NoZero,\n}\n\n// sizeInt64Ptr returns the size of wire encoding a *int64 pointer as a Int64.\n// It panics if the pointer is nil.\nfunc sizeInt64Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := **p.Int64Ptr()\n\treturn f.tagsize + protowire.SizeVarint(uint64(v))\n}\n\n// appendInt64Ptr wire encodes a *int64 pointer as a Int64.\n// It panics if the pointer is nil.\nfunc appendInt64Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := **p.Int64Ptr()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, uint64(v))\n\treturn b, nil\n}\n\n// consumeInt64Ptr wire decodes a *int64 pointer as a Int64.\nfunc consumeInt64Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tvp := p.Int64Ptr()\n\tif *vp == nil {\n\t\t*vp = new(int64)\n\t}\n\t**vp = int64(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderInt64Ptr = pointerCoderFuncs{\n\tsize:      sizeInt64Ptr,\n\tmarshal:   appendInt64Ptr,\n\tunmarshal: consumeInt64Ptr,\n\tmerge:     mergeInt64Ptr,\n}\n\n// sizeInt64Slice returns the size of wire encoding a []int64 pointer as a repeated Int64.\nfunc sizeInt64Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Int64Slice()\n\tfor _, v := range s {\n\t\tsize += f.tagsize + protowire.SizeVarint(uint64(v))\n\t}\n\treturn size\n}\n\n// appendInt64Slice encodes a []int64 pointer as a repeated Int64.\nfunc appendInt64Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Int64Slice()\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tb = protowire.AppendVarint(b, uint64(v))\n\t}\n\treturn b, nil\n}\n\n// consumeInt64Slice wire decodes a []int64 pointer as a repeated Int64.\nfunc consumeInt64Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tsp := p.Int64Slice()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn out, errDecode\n\t\t}\n\t\tcount := 0\n\t\tfor _, v := range b {\n\t\t\tif v < 0x80 {\n\t\t\t\tcount++\n\t\t\t}\n\t\t}\n\t\tif count > 0 {\n\t\t\tp.growInt64Slice(count)\n\t\t}\n\t\ts := *sp\n\t\tfor len(b) > 0 {\n\t\t\tvar v uint64\n\t\t\tvar n int\n\t\t\tif len(b) >= 1 && b[0] < 0x80 {\n\t\t\t\tv = uint64(b[0])\n\t\t\t\tn = 1\n\t\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\t\tn = 2\n\t\t\t} else {\n\t\t\t\tv, n = protowire.ConsumeVarint(b)\n\t\t\t}\n\t\t\tif n < 0 {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t\ts = append(s, int64(v))\n\t\t\tb = b[n:]\n\t\t}\n\t\t*sp = s\n\t\tout.n = n\n\t\treturn out, nil\n\t}\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*sp = append(*sp, int64(v))\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderInt64Slice = pointerCoderFuncs{\n\tsize:      sizeInt64Slice,\n\tmarshal:   appendInt64Slice,\n\tunmarshal: consumeInt64Slice,\n\tmerge:     mergeInt64Slice,\n}\n\n// sizeInt64PackedSlice returns the size of wire encoding a []int64 pointer as a packed repeated Int64.\nfunc sizeInt64PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Int64Slice()\n\tif len(s) == 0 {\n\t\treturn 0\n\t}\n\tn := 0\n\tfor _, v := range s {\n\t\tn += protowire.SizeVarint(uint64(v))\n\t}\n\treturn f.tagsize + protowire.SizeBytes(n)\n}\n\n// appendInt64PackedSlice encodes a []int64 pointer as a packed repeated Int64.\nfunc appendInt64PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Int64Slice()\n\tif len(s) == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tn := 0\n\tfor _, v := range s {\n\t\tn += protowire.SizeVarint(uint64(v))\n\t}\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, uint64(v))\n\t}\n\treturn b, nil\n}\n\nvar coderInt64PackedSlice = pointerCoderFuncs{\n\tsize:      sizeInt64PackedSlice,\n\tmarshal:   appendInt64PackedSlice,\n\tunmarshal: consumeInt64Slice,\n\tmerge:     mergeInt64Slice,\n}\n\n// sizeInt64Value returns the size of wire encoding a int64 value as a Int64.\nfunc sizeInt64Value(v protoreflect.Value, tagsize int, opts marshalOptions) int {\n\treturn tagsize + protowire.SizeVarint(uint64(v.Int()))\n}\n\n// appendInt64Value encodes a int64 value as a Int64.\nfunc appendInt64Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tb = protowire.AppendVarint(b, wiretag)\n\tb = protowire.AppendVarint(b, uint64(v.Int()))\n\treturn b, nil\n}\n\n// consumeInt64Value decodes a int64 value as a Int64.\nfunc consumeInt64Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tout.n = n\n\treturn protoreflect.ValueOfInt64(int64(v)), out, nil\n}\n\nvar coderInt64Value = valueCoderFuncs{\n\tsize:      sizeInt64Value,\n\tmarshal:   appendInt64Value,\n\tunmarshal: consumeInt64Value,\n\tmerge:     mergeScalarValue,\n}\n\n// sizeInt64SliceValue returns the size of wire encoding a []int64 value as a repeated Int64.\nfunc sizeInt64SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tsize += tagsize + protowire.SizeVarint(uint64(v.Int()))\n\t}\n\treturn size\n}\n\n// appendInt64SliceValue encodes a []int64 value as a repeated Int64.\nfunc appendInt64SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, wiretag)\n\t\tb = protowire.AppendVarint(b, uint64(v.Int()))\n\t}\n\treturn b, nil\n}\n\n// consumeInt64SliceValue wire decodes a []int64 value as a repeated Int64.\nfunc consumeInt64SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tlist := listv.List()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t}\n\t\tfor len(b) > 0 {\n\t\t\tvar v uint64\n\t\t\tvar n int\n\t\t\tif len(b) >= 1 && b[0] < 0x80 {\n\t\t\t\tv = uint64(b[0])\n\t\t\t\tn = 1\n\t\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\t\tn = 2\n\t\t\t} else {\n\t\t\t\tv, n = protowire.ConsumeVarint(b)\n\t\t\t}\n\t\t\tif n < 0 {\n\t\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t\t}\n\t\t\tlist.Append(protoreflect.ValueOfInt64(int64(v)))\n\t\t\tb = b[n:]\n\t\t}\n\t\tout.n = n\n\t\treturn listv, out, nil\n\t}\n\tif wtyp != protowire.VarintType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tlist.Append(protoreflect.ValueOfInt64(int64(v)))\n\tout.n = n\n\treturn listv, out, nil\n}\n\nvar coderInt64SliceValue = valueCoderFuncs{\n\tsize:      sizeInt64SliceValue,\n\tmarshal:   appendInt64SliceValue,\n\tunmarshal: consumeInt64SliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeInt64PackedSliceValue returns the size of wire encoding a []int64 value as a packed repeated Int64.\nfunc sizeInt64PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn 0\n\t}\n\tn := 0\n\tfor i, llen := 0, llen; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tn += protowire.SizeVarint(uint64(v.Int()))\n\t}\n\treturn tagsize + protowire.SizeBytes(n)\n}\n\n// appendInt64PackedSliceValue encodes a []int64 value as a packed repeated Int64.\nfunc appendInt64PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, wiretag)\n\tn := 0\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tn += protowire.SizeVarint(uint64(v.Int()))\n\t}\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, uint64(v.Int()))\n\t}\n\treturn b, nil\n}\n\nvar coderInt64PackedSliceValue = valueCoderFuncs{\n\tsize:      sizeInt64PackedSliceValue,\n\tmarshal:   appendInt64PackedSliceValue,\n\tunmarshal: consumeInt64SliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeSint64 returns the size of wire encoding a int64 pointer as a Sint64.\nfunc sizeSint64(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Int64()\n\treturn f.tagsize + protowire.SizeVarint(protowire.EncodeZigZag(v))\n}\n\n// appendSint64 wire encodes a int64 pointer as a Sint64.\nfunc appendSint64(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Int64()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, protowire.EncodeZigZag(v))\n\treturn b, nil\n}\n\n// consumeSint64 wire decodes a int64 pointer as a Sint64.\nfunc consumeSint64(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*p.Int64() = protowire.DecodeZigZag(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderSint64 = pointerCoderFuncs{\n\tsize:      sizeSint64,\n\tmarshal:   appendSint64,\n\tunmarshal: consumeSint64,\n\tmerge:     mergeInt64,\n}\n\n// sizeSint64NoZero returns the size of wire encoding a int64 pointer as a Sint64.\n// The zero value is not encoded.\nfunc sizeSint64NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Int64()\n\tif v == 0 {\n\t\treturn 0\n\t}\n\treturn f.tagsize + protowire.SizeVarint(protowire.EncodeZigZag(v))\n}\n\n// appendSint64NoZero wire encodes a int64 pointer as a Sint64.\n// The zero value is not encoded.\nfunc appendSint64NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Int64()\n\tif v == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, protowire.EncodeZigZag(v))\n\treturn b, nil\n}\n\nvar coderSint64NoZero = pointerCoderFuncs{\n\tsize:      sizeSint64NoZero,\n\tmarshal:   appendSint64NoZero,\n\tunmarshal: consumeSint64,\n\tmerge:     mergeInt64NoZero,\n}\n\n// sizeSint64Ptr returns the size of wire encoding a *int64 pointer as a Sint64.\n// It panics if the pointer is nil.\nfunc sizeSint64Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := **p.Int64Ptr()\n\treturn f.tagsize + protowire.SizeVarint(protowire.EncodeZigZag(v))\n}\n\n// appendSint64Ptr wire encodes a *int64 pointer as a Sint64.\n// It panics if the pointer is nil.\nfunc appendSint64Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := **p.Int64Ptr()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, protowire.EncodeZigZag(v))\n\treturn b, nil\n}\n\n// consumeSint64Ptr wire decodes a *int64 pointer as a Sint64.\nfunc consumeSint64Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tvp := p.Int64Ptr()\n\tif *vp == nil {\n\t\t*vp = new(int64)\n\t}\n\t**vp = protowire.DecodeZigZag(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderSint64Ptr = pointerCoderFuncs{\n\tsize:      sizeSint64Ptr,\n\tmarshal:   appendSint64Ptr,\n\tunmarshal: consumeSint64Ptr,\n\tmerge:     mergeInt64Ptr,\n}\n\n// sizeSint64Slice returns the size of wire encoding a []int64 pointer as a repeated Sint64.\nfunc sizeSint64Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Int64Slice()\n\tfor _, v := range s {\n\t\tsize += f.tagsize + protowire.SizeVarint(protowire.EncodeZigZag(v))\n\t}\n\treturn size\n}\n\n// appendSint64Slice encodes a []int64 pointer as a repeated Sint64.\nfunc appendSint64Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Int64Slice()\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tb = protowire.AppendVarint(b, protowire.EncodeZigZag(v))\n\t}\n\treturn b, nil\n}\n\n// consumeSint64Slice wire decodes a []int64 pointer as a repeated Sint64.\nfunc consumeSint64Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tsp := p.Int64Slice()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn out, errDecode\n\t\t}\n\t\tcount := 0\n\t\tfor _, v := range b {\n\t\t\tif v < 0x80 {\n\t\t\t\tcount++\n\t\t\t}\n\t\t}\n\t\tif count > 0 {\n\t\t\tp.growInt64Slice(count)\n\t\t}\n\t\ts := *sp\n\t\tfor len(b) > 0 {\n\t\t\tvar v uint64\n\t\t\tvar n int\n\t\t\tif len(b) >= 1 && b[0] < 0x80 {\n\t\t\t\tv = uint64(b[0])\n\t\t\t\tn = 1\n\t\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\t\tn = 2\n\t\t\t} else {\n\t\t\t\tv, n = protowire.ConsumeVarint(b)\n\t\t\t}\n\t\t\tif n < 0 {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t\ts = append(s, protowire.DecodeZigZag(v))\n\t\t\tb = b[n:]\n\t\t}\n\t\t*sp = s\n\t\tout.n = n\n\t\treturn out, nil\n\t}\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*sp = append(*sp, protowire.DecodeZigZag(v))\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderSint64Slice = pointerCoderFuncs{\n\tsize:      sizeSint64Slice,\n\tmarshal:   appendSint64Slice,\n\tunmarshal: consumeSint64Slice,\n\tmerge:     mergeInt64Slice,\n}\n\n// sizeSint64PackedSlice returns the size of wire encoding a []int64 pointer as a packed repeated Sint64.\nfunc sizeSint64PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Int64Slice()\n\tif len(s) == 0 {\n\t\treturn 0\n\t}\n\tn := 0\n\tfor _, v := range s {\n\t\tn += protowire.SizeVarint(protowire.EncodeZigZag(v))\n\t}\n\treturn f.tagsize + protowire.SizeBytes(n)\n}\n\n// appendSint64PackedSlice encodes a []int64 pointer as a packed repeated Sint64.\nfunc appendSint64PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Int64Slice()\n\tif len(s) == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tn := 0\n\tfor _, v := range s {\n\t\tn += protowire.SizeVarint(protowire.EncodeZigZag(v))\n\t}\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, protowire.EncodeZigZag(v))\n\t}\n\treturn b, nil\n}\n\nvar coderSint64PackedSlice = pointerCoderFuncs{\n\tsize:      sizeSint64PackedSlice,\n\tmarshal:   appendSint64PackedSlice,\n\tunmarshal: consumeSint64Slice,\n\tmerge:     mergeInt64Slice,\n}\n\n// sizeSint64Value returns the size of wire encoding a int64 value as a Sint64.\nfunc sizeSint64Value(v protoreflect.Value, tagsize int, opts marshalOptions) int {\n\treturn tagsize + protowire.SizeVarint(protowire.EncodeZigZag(v.Int()))\n}\n\n// appendSint64Value encodes a int64 value as a Sint64.\nfunc appendSint64Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tb = protowire.AppendVarint(b, wiretag)\n\tb = protowire.AppendVarint(b, protowire.EncodeZigZag(v.Int()))\n\treturn b, nil\n}\n\n// consumeSint64Value decodes a int64 value as a Sint64.\nfunc consumeSint64Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tout.n = n\n\treturn protoreflect.ValueOfInt64(protowire.DecodeZigZag(v)), out, nil\n}\n\nvar coderSint64Value = valueCoderFuncs{\n\tsize:      sizeSint64Value,\n\tmarshal:   appendSint64Value,\n\tunmarshal: consumeSint64Value,\n\tmerge:     mergeScalarValue,\n}\n\n// sizeSint64SliceValue returns the size of wire encoding a []int64 value as a repeated Sint64.\nfunc sizeSint64SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tsize += tagsize + protowire.SizeVarint(protowire.EncodeZigZag(v.Int()))\n\t}\n\treturn size\n}\n\n// appendSint64SliceValue encodes a []int64 value as a repeated Sint64.\nfunc appendSint64SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, wiretag)\n\t\tb = protowire.AppendVarint(b, protowire.EncodeZigZag(v.Int()))\n\t}\n\treturn b, nil\n}\n\n// consumeSint64SliceValue wire decodes a []int64 value as a repeated Sint64.\nfunc consumeSint64SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tlist := listv.List()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t}\n\t\tfor len(b) > 0 {\n\t\t\tvar v uint64\n\t\t\tvar n int\n\t\t\tif len(b) >= 1 && b[0] < 0x80 {\n\t\t\t\tv = uint64(b[0])\n\t\t\t\tn = 1\n\t\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\t\tn = 2\n\t\t\t} else {\n\t\t\t\tv, n = protowire.ConsumeVarint(b)\n\t\t\t}\n\t\t\tif n < 0 {\n\t\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t\t}\n\t\t\tlist.Append(protoreflect.ValueOfInt64(protowire.DecodeZigZag(v)))\n\t\t\tb = b[n:]\n\t\t}\n\t\tout.n = n\n\t\treturn listv, out, nil\n\t}\n\tif wtyp != protowire.VarintType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tlist.Append(protoreflect.ValueOfInt64(protowire.DecodeZigZag(v)))\n\tout.n = n\n\treturn listv, out, nil\n}\n\nvar coderSint64SliceValue = valueCoderFuncs{\n\tsize:      sizeSint64SliceValue,\n\tmarshal:   appendSint64SliceValue,\n\tunmarshal: consumeSint64SliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeSint64PackedSliceValue returns the size of wire encoding a []int64 value as a packed repeated Sint64.\nfunc sizeSint64PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn 0\n\t}\n\tn := 0\n\tfor i, llen := 0, llen; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tn += protowire.SizeVarint(protowire.EncodeZigZag(v.Int()))\n\t}\n\treturn tagsize + protowire.SizeBytes(n)\n}\n\n// appendSint64PackedSliceValue encodes a []int64 value as a packed repeated Sint64.\nfunc appendSint64PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, wiretag)\n\tn := 0\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tn += protowire.SizeVarint(protowire.EncodeZigZag(v.Int()))\n\t}\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, protowire.EncodeZigZag(v.Int()))\n\t}\n\treturn b, nil\n}\n\nvar coderSint64PackedSliceValue = valueCoderFuncs{\n\tsize:      sizeSint64PackedSliceValue,\n\tmarshal:   appendSint64PackedSliceValue,\n\tunmarshal: consumeSint64SliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeUint64 returns the size of wire encoding a uint64 pointer as a Uint64.\nfunc sizeUint64(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Uint64()\n\treturn f.tagsize + protowire.SizeVarint(v)\n}\n\n// appendUint64 wire encodes a uint64 pointer as a Uint64.\nfunc appendUint64(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Uint64()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, v)\n\treturn b, nil\n}\n\n// consumeUint64 wire decodes a uint64 pointer as a Uint64.\nfunc consumeUint64(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*p.Uint64() = v\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderUint64 = pointerCoderFuncs{\n\tsize:      sizeUint64,\n\tmarshal:   appendUint64,\n\tunmarshal: consumeUint64,\n\tmerge:     mergeUint64,\n}\n\n// sizeUint64NoZero returns the size of wire encoding a uint64 pointer as a Uint64.\n// The zero value is not encoded.\nfunc sizeUint64NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Uint64()\n\tif v == 0 {\n\t\treturn 0\n\t}\n\treturn f.tagsize + protowire.SizeVarint(v)\n}\n\n// appendUint64NoZero wire encodes a uint64 pointer as a Uint64.\n// The zero value is not encoded.\nfunc appendUint64NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Uint64()\n\tif v == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, v)\n\treturn b, nil\n}\n\nvar coderUint64NoZero = pointerCoderFuncs{\n\tsize:      sizeUint64NoZero,\n\tmarshal:   appendUint64NoZero,\n\tunmarshal: consumeUint64,\n\tmerge:     mergeUint64NoZero,\n}\n\n// sizeUint64Ptr returns the size of wire encoding a *uint64 pointer as a Uint64.\n// It panics if the pointer is nil.\nfunc sizeUint64Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := **p.Uint64Ptr()\n\treturn f.tagsize + protowire.SizeVarint(v)\n}\n\n// appendUint64Ptr wire encodes a *uint64 pointer as a Uint64.\n// It panics if the pointer is nil.\nfunc appendUint64Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := **p.Uint64Ptr()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, v)\n\treturn b, nil\n}\n\n// consumeUint64Ptr wire decodes a *uint64 pointer as a Uint64.\nfunc consumeUint64Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tvp := p.Uint64Ptr()\n\tif *vp == nil {\n\t\t*vp = new(uint64)\n\t}\n\t**vp = v\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderUint64Ptr = pointerCoderFuncs{\n\tsize:      sizeUint64Ptr,\n\tmarshal:   appendUint64Ptr,\n\tunmarshal: consumeUint64Ptr,\n\tmerge:     mergeUint64Ptr,\n}\n\n// sizeUint64Slice returns the size of wire encoding a []uint64 pointer as a repeated Uint64.\nfunc sizeUint64Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Uint64Slice()\n\tfor _, v := range s {\n\t\tsize += f.tagsize + protowire.SizeVarint(v)\n\t}\n\treturn size\n}\n\n// appendUint64Slice encodes a []uint64 pointer as a repeated Uint64.\nfunc appendUint64Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Uint64Slice()\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tb = protowire.AppendVarint(b, v)\n\t}\n\treturn b, nil\n}\n\n// consumeUint64Slice wire decodes a []uint64 pointer as a repeated Uint64.\nfunc consumeUint64Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tsp := p.Uint64Slice()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn out, errDecode\n\t\t}\n\t\tcount := 0\n\t\tfor _, v := range b {\n\t\t\tif v < 0x80 {\n\t\t\t\tcount++\n\t\t\t}\n\t\t}\n\t\tif count > 0 {\n\t\t\tp.growUint64Slice(count)\n\t\t}\n\t\ts := *sp\n\t\tfor len(b) > 0 {\n\t\t\tvar v uint64\n\t\t\tvar n int\n\t\t\tif len(b) >= 1 && b[0] < 0x80 {\n\t\t\t\tv = uint64(b[0])\n\t\t\t\tn = 1\n\t\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\t\tn = 2\n\t\t\t} else {\n\t\t\t\tv, n = protowire.ConsumeVarint(b)\n\t\t\t}\n\t\t\tif n < 0 {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t\ts = append(s, v)\n\t\t\tb = b[n:]\n\t\t}\n\t\t*sp = s\n\t\tout.n = n\n\t\treturn out, nil\n\t}\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*sp = append(*sp, v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderUint64Slice = pointerCoderFuncs{\n\tsize:      sizeUint64Slice,\n\tmarshal:   appendUint64Slice,\n\tunmarshal: consumeUint64Slice,\n\tmerge:     mergeUint64Slice,\n}\n\n// sizeUint64PackedSlice returns the size of wire encoding a []uint64 pointer as a packed repeated Uint64.\nfunc sizeUint64PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Uint64Slice()\n\tif len(s) == 0 {\n\t\treturn 0\n\t}\n\tn := 0\n\tfor _, v := range s {\n\t\tn += protowire.SizeVarint(v)\n\t}\n\treturn f.tagsize + protowire.SizeBytes(n)\n}\n\n// appendUint64PackedSlice encodes a []uint64 pointer as a packed repeated Uint64.\nfunc appendUint64PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Uint64Slice()\n\tif len(s) == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tn := 0\n\tfor _, v := range s {\n\t\tn += protowire.SizeVarint(v)\n\t}\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, v)\n\t}\n\treturn b, nil\n}\n\nvar coderUint64PackedSlice = pointerCoderFuncs{\n\tsize:      sizeUint64PackedSlice,\n\tmarshal:   appendUint64PackedSlice,\n\tunmarshal: consumeUint64Slice,\n\tmerge:     mergeUint64Slice,\n}\n\n// sizeUint64Value returns the size of wire encoding a uint64 value as a Uint64.\nfunc sizeUint64Value(v protoreflect.Value, tagsize int, opts marshalOptions) int {\n\treturn tagsize + protowire.SizeVarint(v.Uint())\n}\n\n// appendUint64Value encodes a uint64 value as a Uint64.\nfunc appendUint64Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tb = protowire.AppendVarint(b, wiretag)\n\tb = protowire.AppendVarint(b, v.Uint())\n\treturn b, nil\n}\n\n// consumeUint64Value decodes a uint64 value as a Uint64.\nfunc consumeUint64Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tout.n = n\n\treturn protoreflect.ValueOfUint64(v), out, nil\n}\n\nvar coderUint64Value = valueCoderFuncs{\n\tsize:      sizeUint64Value,\n\tmarshal:   appendUint64Value,\n\tunmarshal: consumeUint64Value,\n\tmerge:     mergeScalarValue,\n}\n\n// sizeUint64SliceValue returns the size of wire encoding a []uint64 value as a repeated Uint64.\nfunc sizeUint64SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tsize += tagsize + protowire.SizeVarint(v.Uint())\n\t}\n\treturn size\n}\n\n// appendUint64SliceValue encodes a []uint64 value as a repeated Uint64.\nfunc appendUint64SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, wiretag)\n\t\tb = protowire.AppendVarint(b, v.Uint())\n\t}\n\treturn b, nil\n}\n\n// consumeUint64SliceValue wire decodes a []uint64 value as a repeated Uint64.\nfunc consumeUint64SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tlist := listv.List()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t}\n\t\tfor len(b) > 0 {\n\t\t\tvar v uint64\n\t\t\tvar n int\n\t\t\tif len(b) >= 1 && b[0] < 0x80 {\n\t\t\t\tv = uint64(b[0])\n\t\t\t\tn = 1\n\t\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\t\tn = 2\n\t\t\t} else {\n\t\t\t\tv, n = protowire.ConsumeVarint(b)\n\t\t\t}\n\t\t\tif n < 0 {\n\t\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t\t}\n\t\t\tlist.Append(protoreflect.ValueOfUint64(v))\n\t\t\tb = b[n:]\n\t\t}\n\t\tout.n = n\n\t\treturn listv, out, nil\n\t}\n\tif wtyp != protowire.VarintType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tlist.Append(protoreflect.ValueOfUint64(v))\n\tout.n = n\n\treturn listv, out, nil\n}\n\nvar coderUint64SliceValue = valueCoderFuncs{\n\tsize:      sizeUint64SliceValue,\n\tmarshal:   appendUint64SliceValue,\n\tunmarshal: consumeUint64SliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeUint64PackedSliceValue returns the size of wire encoding a []uint64 value as a packed repeated Uint64.\nfunc sizeUint64PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn 0\n\t}\n\tn := 0\n\tfor i, llen := 0, llen; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tn += protowire.SizeVarint(v.Uint())\n\t}\n\treturn tagsize + protowire.SizeBytes(n)\n}\n\n// appendUint64PackedSliceValue encodes a []uint64 value as a packed repeated Uint64.\nfunc appendUint64PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, wiretag)\n\tn := 0\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tn += protowire.SizeVarint(v.Uint())\n\t}\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, v.Uint())\n\t}\n\treturn b, nil\n}\n\nvar coderUint64PackedSliceValue = valueCoderFuncs{\n\tsize:      sizeUint64PackedSliceValue,\n\tmarshal:   appendUint64PackedSliceValue,\n\tunmarshal: consumeUint64SliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeSfixed32 returns the size of wire encoding a int32 pointer as a Sfixed32.\nfunc sizeSfixed32(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\n\treturn f.tagsize + protowire.SizeFixed32()\n}\n\n// appendSfixed32 wire encodes a int32 pointer as a Sfixed32.\nfunc appendSfixed32(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Int32()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendFixed32(b, uint32(v))\n\treturn b, nil\n}\n\n// consumeSfixed32 wire decodes a int32 pointer as a Sfixed32.\nfunc consumeSfixed32(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.Fixed32Type {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed32(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*p.Int32() = int32(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderSfixed32 = pointerCoderFuncs{\n\tsize:      sizeSfixed32,\n\tmarshal:   appendSfixed32,\n\tunmarshal: consumeSfixed32,\n\tmerge:     mergeInt32,\n}\n\n// sizeSfixed32NoZero returns the size of wire encoding a int32 pointer as a Sfixed32.\n// The zero value is not encoded.\nfunc sizeSfixed32NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Int32()\n\tif v == 0 {\n\t\treturn 0\n\t}\n\treturn f.tagsize + protowire.SizeFixed32()\n}\n\n// appendSfixed32NoZero wire encodes a int32 pointer as a Sfixed32.\n// The zero value is not encoded.\nfunc appendSfixed32NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Int32()\n\tif v == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendFixed32(b, uint32(v))\n\treturn b, nil\n}\n\nvar coderSfixed32NoZero = pointerCoderFuncs{\n\tsize:      sizeSfixed32NoZero,\n\tmarshal:   appendSfixed32NoZero,\n\tunmarshal: consumeSfixed32,\n\tmerge:     mergeInt32NoZero,\n}\n\n// sizeSfixed32Ptr returns the size of wire encoding a *int32 pointer as a Sfixed32.\n// It panics if the pointer is nil.\nfunc sizeSfixed32Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\treturn f.tagsize + protowire.SizeFixed32()\n}\n\n// appendSfixed32Ptr wire encodes a *int32 pointer as a Sfixed32.\n// It panics if the pointer is nil.\nfunc appendSfixed32Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := **p.Int32Ptr()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendFixed32(b, uint32(v))\n\treturn b, nil\n}\n\n// consumeSfixed32Ptr wire decodes a *int32 pointer as a Sfixed32.\nfunc consumeSfixed32Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.Fixed32Type {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed32(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tvp := p.Int32Ptr()\n\tif *vp == nil {\n\t\t*vp = new(int32)\n\t}\n\t**vp = int32(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderSfixed32Ptr = pointerCoderFuncs{\n\tsize:      sizeSfixed32Ptr,\n\tmarshal:   appendSfixed32Ptr,\n\tunmarshal: consumeSfixed32Ptr,\n\tmerge:     mergeInt32Ptr,\n}\n\n// sizeSfixed32Slice returns the size of wire encoding a []int32 pointer as a repeated Sfixed32.\nfunc sizeSfixed32Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Int32Slice()\n\tsize = len(s) * (f.tagsize + protowire.SizeFixed32())\n\treturn size\n}\n\n// appendSfixed32Slice encodes a []int32 pointer as a repeated Sfixed32.\nfunc appendSfixed32Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Int32Slice()\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tb = protowire.AppendFixed32(b, uint32(v))\n\t}\n\treturn b, nil\n}\n\n// consumeSfixed32Slice wire decodes a []int32 pointer as a repeated Sfixed32.\nfunc consumeSfixed32Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tsp := p.Int32Slice()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn out, errDecode\n\t\t}\n\t\tcount := len(b) / protowire.SizeFixed32()\n\t\tif count > 0 {\n\t\t\tp.growInt32Slice(count)\n\t\t}\n\t\ts := *sp\n\t\tfor len(b) > 0 {\n\t\t\tv, n := protowire.ConsumeFixed32(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t\ts = append(s, int32(v))\n\t\t\tb = b[n:]\n\t\t}\n\t\t*sp = s\n\t\tout.n = n\n\t\treturn out, nil\n\t}\n\tif wtyp != protowire.Fixed32Type {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed32(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*sp = append(*sp, int32(v))\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderSfixed32Slice = pointerCoderFuncs{\n\tsize:      sizeSfixed32Slice,\n\tmarshal:   appendSfixed32Slice,\n\tunmarshal: consumeSfixed32Slice,\n\tmerge:     mergeInt32Slice,\n}\n\n// sizeSfixed32PackedSlice returns the size of wire encoding a []int32 pointer as a packed repeated Sfixed32.\nfunc sizeSfixed32PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Int32Slice()\n\tif len(s) == 0 {\n\t\treturn 0\n\t}\n\tn := len(s) * protowire.SizeFixed32()\n\treturn f.tagsize + protowire.SizeBytes(n)\n}\n\n// appendSfixed32PackedSlice encodes a []int32 pointer as a packed repeated Sfixed32.\nfunc appendSfixed32PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Int32Slice()\n\tif len(s) == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tn := len(s) * protowire.SizeFixed32()\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor _, v := range s {\n\t\tb = protowire.AppendFixed32(b, uint32(v))\n\t}\n\treturn b, nil\n}\n\nvar coderSfixed32PackedSlice = pointerCoderFuncs{\n\tsize:      sizeSfixed32PackedSlice,\n\tmarshal:   appendSfixed32PackedSlice,\n\tunmarshal: consumeSfixed32Slice,\n\tmerge:     mergeInt32Slice,\n}\n\n// sizeSfixed32Value returns the size of wire encoding a int32 value as a Sfixed32.\nfunc sizeSfixed32Value(v protoreflect.Value, tagsize int, opts marshalOptions) int {\n\treturn tagsize + protowire.SizeFixed32()\n}\n\n// appendSfixed32Value encodes a int32 value as a Sfixed32.\nfunc appendSfixed32Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tb = protowire.AppendVarint(b, wiretag)\n\tb = protowire.AppendFixed32(b, uint32(v.Int()))\n\treturn b, nil\n}\n\n// consumeSfixed32Value decodes a int32 value as a Sfixed32.\nfunc consumeSfixed32Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tif wtyp != protowire.Fixed32Type {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed32(b)\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tout.n = n\n\treturn protoreflect.ValueOfInt32(int32(v)), out, nil\n}\n\nvar coderSfixed32Value = valueCoderFuncs{\n\tsize:      sizeSfixed32Value,\n\tmarshal:   appendSfixed32Value,\n\tunmarshal: consumeSfixed32Value,\n\tmerge:     mergeScalarValue,\n}\n\n// sizeSfixed32SliceValue returns the size of wire encoding a []int32 value as a repeated Sfixed32.\nfunc sizeSfixed32SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tsize = list.Len() * (tagsize + protowire.SizeFixed32())\n\treturn size\n}\n\n// appendSfixed32SliceValue encodes a []int32 value as a repeated Sfixed32.\nfunc appendSfixed32SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, wiretag)\n\t\tb = protowire.AppendFixed32(b, uint32(v.Int()))\n\t}\n\treturn b, nil\n}\n\n// consumeSfixed32SliceValue wire decodes a []int32 value as a repeated Sfixed32.\nfunc consumeSfixed32SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tlist := listv.List()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t}\n\t\tfor len(b) > 0 {\n\t\t\tv, n := protowire.ConsumeFixed32(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t\t}\n\t\t\tlist.Append(protoreflect.ValueOfInt32(int32(v)))\n\t\t\tb = b[n:]\n\t\t}\n\t\tout.n = n\n\t\treturn listv, out, nil\n\t}\n\tif wtyp != protowire.Fixed32Type {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed32(b)\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tlist.Append(protoreflect.ValueOfInt32(int32(v)))\n\tout.n = n\n\treturn listv, out, nil\n}\n\nvar coderSfixed32SliceValue = valueCoderFuncs{\n\tsize:      sizeSfixed32SliceValue,\n\tmarshal:   appendSfixed32SliceValue,\n\tunmarshal: consumeSfixed32SliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeSfixed32PackedSliceValue returns the size of wire encoding a []int32 value as a packed repeated Sfixed32.\nfunc sizeSfixed32PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn 0\n\t}\n\tn := llen * protowire.SizeFixed32()\n\treturn tagsize + protowire.SizeBytes(n)\n}\n\n// appendSfixed32PackedSliceValue encodes a []int32 value as a packed repeated Sfixed32.\nfunc appendSfixed32PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, wiretag)\n\tn := llen * protowire.SizeFixed32()\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendFixed32(b, uint32(v.Int()))\n\t}\n\treturn b, nil\n}\n\nvar coderSfixed32PackedSliceValue = valueCoderFuncs{\n\tsize:      sizeSfixed32PackedSliceValue,\n\tmarshal:   appendSfixed32PackedSliceValue,\n\tunmarshal: consumeSfixed32SliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeFixed32 returns the size of wire encoding a uint32 pointer as a Fixed32.\nfunc sizeFixed32(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\n\treturn f.tagsize + protowire.SizeFixed32()\n}\n\n// appendFixed32 wire encodes a uint32 pointer as a Fixed32.\nfunc appendFixed32(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Uint32()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendFixed32(b, v)\n\treturn b, nil\n}\n\n// consumeFixed32 wire decodes a uint32 pointer as a Fixed32.\nfunc consumeFixed32(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.Fixed32Type {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed32(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*p.Uint32() = v\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderFixed32 = pointerCoderFuncs{\n\tsize:      sizeFixed32,\n\tmarshal:   appendFixed32,\n\tunmarshal: consumeFixed32,\n\tmerge:     mergeUint32,\n}\n\n// sizeFixed32NoZero returns the size of wire encoding a uint32 pointer as a Fixed32.\n// The zero value is not encoded.\nfunc sizeFixed32NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Uint32()\n\tif v == 0 {\n\t\treturn 0\n\t}\n\treturn f.tagsize + protowire.SizeFixed32()\n}\n\n// appendFixed32NoZero wire encodes a uint32 pointer as a Fixed32.\n// The zero value is not encoded.\nfunc appendFixed32NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Uint32()\n\tif v == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendFixed32(b, v)\n\treturn b, nil\n}\n\nvar coderFixed32NoZero = pointerCoderFuncs{\n\tsize:      sizeFixed32NoZero,\n\tmarshal:   appendFixed32NoZero,\n\tunmarshal: consumeFixed32,\n\tmerge:     mergeUint32NoZero,\n}\n\n// sizeFixed32Ptr returns the size of wire encoding a *uint32 pointer as a Fixed32.\n// It panics if the pointer is nil.\nfunc sizeFixed32Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\treturn f.tagsize + protowire.SizeFixed32()\n}\n\n// appendFixed32Ptr wire encodes a *uint32 pointer as a Fixed32.\n// It panics if the pointer is nil.\nfunc appendFixed32Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := **p.Uint32Ptr()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendFixed32(b, v)\n\treturn b, nil\n}\n\n// consumeFixed32Ptr wire decodes a *uint32 pointer as a Fixed32.\nfunc consumeFixed32Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.Fixed32Type {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed32(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tvp := p.Uint32Ptr()\n\tif *vp == nil {\n\t\t*vp = new(uint32)\n\t}\n\t**vp = v\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderFixed32Ptr = pointerCoderFuncs{\n\tsize:      sizeFixed32Ptr,\n\tmarshal:   appendFixed32Ptr,\n\tunmarshal: consumeFixed32Ptr,\n\tmerge:     mergeUint32Ptr,\n}\n\n// sizeFixed32Slice returns the size of wire encoding a []uint32 pointer as a repeated Fixed32.\nfunc sizeFixed32Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Uint32Slice()\n\tsize = len(s) * (f.tagsize + protowire.SizeFixed32())\n\treturn size\n}\n\n// appendFixed32Slice encodes a []uint32 pointer as a repeated Fixed32.\nfunc appendFixed32Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Uint32Slice()\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tb = protowire.AppendFixed32(b, v)\n\t}\n\treturn b, nil\n}\n\n// consumeFixed32Slice wire decodes a []uint32 pointer as a repeated Fixed32.\nfunc consumeFixed32Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tsp := p.Uint32Slice()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn out, errDecode\n\t\t}\n\t\tcount := len(b) / protowire.SizeFixed32()\n\t\tif count > 0 {\n\t\t\tp.growUint32Slice(count)\n\t\t}\n\t\ts := *sp\n\t\tfor len(b) > 0 {\n\t\t\tv, n := protowire.ConsumeFixed32(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t\ts = append(s, v)\n\t\t\tb = b[n:]\n\t\t}\n\t\t*sp = s\n\t\tout.n = n\n\t\treturn out, nil\n\t}\n\tif wtyp != protowire.Fixed32Type {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed32(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*sp = append(*sp, v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderFixed32Slice = pointerCoderFuncs{\n\tsize:      sizeFixed32Slice,\n\tmarshal:   appendFixed32Slice,\n\tunmarshal: consumeFixed32Slice,\n\tmerge:     mergeUint32Slice,\n}\n\n// sizeFixed32PackedSlice returns the size of wire encoding a []uint32 pointer as a packed repeated Fixed32.\nfunc sizeFixed32PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Uint32Slice()\n\tif len(s) == 0 {\n\t\treturn 0\n\t}\n\tn := len(s) * protowire.SizeFixed32()\n\treturn f.tagsize + protowire.SizeBytes(n)\n}\n\n// appendFixed32PackedSlice encodes a []uint32 pointer as a packed repeated Fixed32.\nfunc appendFixed32PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Uint32Slice()\n\tif len(s) == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tn := len(s) * protowire.SizeFixed32()\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor _, v := range s {\n\t\tb = protowire.AppendFixed32(b, v)\n\t}\n\treturn b, nil\n}\n\nvar coderFixed32PackedSlice = pointerCoderFuncs{\n\tsize:      sizeFixed32PackedSlice,\n\tmarshal:   appendFixed32PackedSlice,\n\tunmarshal: consumeFixed32Slice,\n\tmerge:     mergeUint32Slice,\n}\n\n// sizeFixed32Value returns the size of wire encoding a uint32 value as a Fixed32.\nfunc sizeFixed32Value(v protoreflect.Value, tagsize int, opts marshalOptions) int {\n\treturn tagsize + protowire.SizeFixed32()\n}\n\n// appendFixed32Value encodes a uint32 value as a Fixed32.\nfunc appendFixed32Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tb = protowire.AppendVarint(b, wiretag)\n\tb = protowire.AppendFixed32(b, uint32(v.Uint()))\n\treturn b, nil\n}\n\n// consumeFixed32Value decodes a uint32 value as a Fixed32.\nfunc consumeFixed32Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tif wtyp != protowire.Fixed32Type {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed32(b)\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tout.n = n\n\treturn protoreflect.ValueOfUint32(uint32(v)), out, nil\n}\n\nvar coderFixed32Value = valueCoderFuncs{\n\tsize:      sizeFixed32Value,\n\tmarshal:   appendFixed32Value,\n\tunmarshal: consumeFixed32Value,\n\tmerge:     mergeScalarValue,\n}\n\n// sizeFixed32SliceValue returns the size of wire encoding a []uint32 value as a repeated Fixed32.\nfunc sizeFixed32SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tsize = list.Len() * (tagsize + protowire.SizeFixed32())\n\treturn size\n}\n\n// appendFixed32SliceValue encodes a []uint32 value as a repeated Fixed32.\nfunc appendFixed32SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, wiretag)\n\t\tb = protowire.AppendFixed32(b, uint32(v.Uint()))\n\t}\n\treturn b, nil\n}\n\n// consumeFixed32SliceValue wire decodes a []uint32 value as a repeated Fixed32.\nfunc consumeFixed32SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tlist := listv.List()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t}\n\t\tfor len(b) > 0 {\n\t\t\tv, n := protowire.ConsumeFixed32(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t\t}\n\t\t\tlist.Append(protoreflect.ValueOfUint32(uint32(v)))\n\t\t\tb = b[n:]\n\t\t}\n\t\tout.n = n\n\t\treturn listv, out, nil\n\t}\n\tif wtyp != protowire.Fixed32Type {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed32(b)\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tlist.Append(protoreflect.ValueOfUint32(uint32(v)))\n\tout.n = n\n\treturn listv, out, nil\n}\n\nvar coderFixed32SliceValue = valueCoderFuncs{\n\tsize:      sizeFixed32SliceValue,\n\tmarshal:   appendFixed32SliceValue,\n\tunmarshal: consumeFixed32SliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeFixed32PackedSliceValue returns the size of wire encoding a []uint32 value as a packed repeated Fixed32.\nfunc sizeFixed32PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn 0\n\t}\n\tn := llen * protowire.SizeFixed32()\n\treturn tagsize + protowire.SizeBytes(n)\n}\n\n// appendFixed32PackedSliceValue encodes a []uint32 value as a packed repeated Fixed32.\nfunc appendFixed32PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, wiretag)\n\tn := llen * protowire.SizeFixed32()\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendFixed32(b, uint32(v.Uint()))\n\t}\n\treturn b, nil\n}\n\nvar coderFixed32PackedSliceValue = valueCoderFuncs{\n\tsize:      sizeFixed32PackedSliceValue,\n\tmarshal:   appendFixed32PackedSliceValue,\n\tunmarshal: consumeFixed32SliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeFloat returns the size of wire encoding a float32 pointer as a Float.\nfunc sizeFloat(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\n\treturn f.tagsize + protowire.SizeFixed32()\n}\n\n// appendFloat wire encodes a float32 pointer as a Float.\nfunc appendFloat(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Float32()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendFixed32(b, math.Float32bits(v))\n\treturn b, nil\n}\n\n// consumeFloat wire decodes a float32 pointer as a Float.\nfunc consumeFloat(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.Fixed32Type {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed32(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*p.Float32() = math.Float32frombits(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderFloat = pointerCoderFuncs{\n\tsize:      sizeFloat,\n\tmarshal:   appendFloat,\n\tunmarshal: consumeFloat,\n\tmerge:     mergeFloat32,\n}\n\n// sizeFloatNoZero returns the size of wire encoding a float32 pointer as a Float.\n// The zero value is not encoded.\nfunc sizeFloatNoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Float32()\n\tif v == 0 && !math.Signbit(float64(v)) {\n\t\treturn 0\n\t}\n\treturn f.tagsize + protowire.SizeFixed32()\n}\n\n// appendFloatNoZero wire encodes a float32 pointer as a Float.\n// The zero value is not encoded.\nfunc appendFloatNoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Float32()\n\tif v == 0 && !math.Signbit(float64(v)) {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendFixed32(b, math.Float32bits(v))\n\treturn b, nil\n}\n\nvar coderFloatNoZero = pointerCoderFuncs{\n\tsize:      sizeFloatNoZero,\n\tmarshal:   appendFloatNoZero,\n\tunmarshal: consumeFloat,\n\tmerge:     mergeFloat32NoZero,\n}\n\n// sizeFloatPtr returns the size of wire encoding a *float32 pointer as a Float.\n// It panics if the pointer is nil.\nfunc sizeFloatPtr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\treturn f.tagsize + protowire.SizeFixed32()\n}\n\n// appendFloatPtr wire encodes a *float32 pointer as a Float.\n// It panics if the pointer is nil.\nfunc appendFloatPtr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := **p.Float32Ptr()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendFixed32(b, math.Float32bits(v))\n\treturn b, nil\n}\n\n// consumeFloatPtr wire decodes a *float32 pointer as a Float.\nfunc consumeFloatPtr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.Fixed32Type {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed32(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tvp := p.Float32Ptr()\n\tif *vp == nil {\n\t\t*vp = new(float32)\n\t}\n\t**vp = math.Float32frombits(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderFloatPtr = pointerCoderFuncs{\n\tsize:      sizeFloatPtr,\n\tmarshal:   appendFloatPtr,\n\tunmarshal: consumeFloatPtr,\n\tmerge:     mergeFloat32Ptr,\n}\n\n// sizeFloatSlice returns the size of wire encoding a []float32 pointer as a repeated Float.\nfunc sizeFloatSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Float32Slice()\n\tsize = len(s) * (f.tagsize + protowire.SizeFixed32())\n\treturn size\n}\n\n// appendFloatSlice encodes a []float32 pointer as a repeated Float.\nfunc appendFloatSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Float32Slice()\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tb = protowire.AppendFixed32(b, math.Float32bits(v))\n\t}\n\treturn b, nil\n}\n\n// consumeFloatSlice wire decodes a []float32 pointer as a repeated Float.\nfunc consumeFloatSlice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tsp := p.Float32Slice()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn out, errDecode\n\t\t}\n\t\tcount := len(b) / protowire.SizeFixed32()\n\t\tif count > 0 {\n\t\t\tp.growFloat32Slice(count)\n\t\t}\n\t\ts := *sp\n\t\tfor len(b) > 0 {\n\t\t\tv, n := protowire.ConsumeFixed32(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t\ts = append(s, math.Float32frombits(v))\n\t\t\tb = b[n:]\n\t\t}\n\t\t*sp = s\n\t\tout.n = n\n\t\treturn out, nil\n\t}\n\tif wtyp != protowire.Fixed32Type {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed32(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*sp = append(*sp, math.Float32frombits(v))\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderFloatSlice = pointerCoderFuncs{\n\tsize:      sizeFloatSlice,\n\tmarshal:   appendFloatSlice,\n\tunmarshal: consumeFloatSlice,\n\tmerge:     mergeFloat32Slice,\n}\n\n// sizeFloatPackedSlice returns the size of wire encoding a []float32 pointer as a packed repeated Float.\nfunc sizeFloatPackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Float32Slice()\n\tif len(s) == 0 {\n\t\treturn 0\n\t}\n\tn := len(s) * protowire.SizeFixed32()\n\treturn f.tagsize + protowire.SizeBytes(n)\n}\n\n// appendFloatPackedSlice encodes a []float32 pointer as a packed repeated Float.\nfunc appendFloatPackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Float32Slice()\n\tif len(s) == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tn := len(s) * protowire.SizeFixed32()\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor _, v := range s {\n\t\tb = protowire.AppendFixed32(b, math.Float32bits(v))\n\t}\n\treturn b, nil\n}\n\nvar coderFloatPackedSlice = pointerCoderFuncs{\n\tsize:      sizeFloatPackedSlice,\n\tmarshal:   appendFloatPackedSlice,\n\tunmarshal: consumeFloatSlice,\n\tmerge:     mergeFloat32Slice,\n}\n\n// sizeFloatValue returns the size of wire encoding a float32 value as a Float.\nfunc sizeFloatValue(v protoreflect.Value, tagsize int, opts marshalOptions) int {\n\treturn tagsize + protowire.SizeFixed32()\n}\n\n// appendFloatValue encodes a float32 value as a Float.\nfunc appendFloatValue(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tb = protowire.AppendVarint(b, wiretag)\n\tb = protowire.AppendFixed32(b, math.Float32bits(float32(v.Float())))\n\treturn b, nil\n}\n\n// consumeFloatValue decodes a float32 value as a Float.\nfunc consumeFloatValue(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tif wtyp != protowire.Fixed32Type {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed32(b)\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tout.n = n\n\treturn protoreflect.ValueOfFloat32(math.Float32frombits(uint32(v))), out, nil\n}\n\nvar coderFloatValue = valueCoderFuncs{\n\tsize:      sizeFloatValue,\n\tmarshal:   appendFloatValue,\n\tunmarshal: consumeFloatValue,\n\tmerge:     mergeScalarValue,\n}\n\n// sizeFloatSliceValue returns the size of wire encoding a []float32 value as a repeated Float.\nfunc sizeFloatSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tsize = list.Len() * (tagsize + protowire.SizeFixed32())\n\treturn size\n}\n\n// appendFloatSliceValue encodes a []float32 value as a repeated Float.\nfunc appendFloatSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, wiretag)\n\t\tb = protowire.AppendFixed32(b, math.Float32bits(float32(v.Float())))\n\t}\n\treturn b, nil\n}\n\n// consumeFloatSliceValue wire decodes a []float32 value as a repeated Float.\nfunc consumeFloatSliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tlist := listv.List()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t}\n\t\tfor len(b) > 0 {\n\t\t\tv, n := protowire.ConsumeFixed32(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t\t}\n\t\t\tlist.Append(protoreflect.ValueOfFloat32(math.Float32frombits(uint32(v))))\n\t\t\tb = b[n:]\n\t\t}\n\t\tout.n = n\n\t\treturn listv, out, nil\n\t}\n\tif wtyp != protowire.Fixed32Type {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed32(b)\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tlist.Append(protoreflect.ValueOfFloat32(math.Float32frombits(uint32(v))))\n\tout.n = n\n\treturn listv, out, nil\n}\n\nvar coderFloatSliceValue = valueCoderFuncs{\n\tsize:      sizeFloatSliceValue,\n\tmarshal:   appendFloatSliceValue,\n\tunmarshal: consumeFloatSliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeFloatPackedSliceValue returns the size of wire encoding a []float32 value as a packed repeated Float.\nfunc sizeFloatPackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn 0\n\t}\n\tn := llen * protowire.SizeFixed32()\n\treturn tagsize + protowire.SizeBytes(n)\n}\n\n// appendFloatPackedSliceValue encodes a []float32 value as a packed repeated Float.\nfunc appendFloatPackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, wiretag)\n\tn := llen * protowire.SizeFixed32()\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendFixed32(b, math.Float32bits(float32(v.Float())))\n\t}\n\treturn b, nil\n}\n\nvar coderFloatPackedSliceValue = valueCoderFuncs{\n\tsize:      sizeFloatPackedSliceValue,\n\tmarshal:   appendFloatPackedSliceValue,\n\tunmarshal: consumeFloatSliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeSfixed64 returns the size of wire encoding a int64 pointer as a Sfixed64.\nfunc sizeSfixed64(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\n\treturn f.tagsize + protowire.SizeFixed64()\n}\n\n// appendSfixed64 wire encodes a int64 pointer as a Sfixed64.\nfunc appendSfixed64(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Int64()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendFixed64(b, uint64(v))\n\treturn b, nil\n}\n\n// consumeSfixed64 wire decodes a int64 pointer as a Sfixed64.\nfunc consumeSfixed64(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.Fixed64Type {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed64(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*p.Int64() = int64(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderSfixed64 = pointerCoderFuncs{\n\tsize:      sizeSfixed64,\n\tmarshal:   appendSfixed64,\n\tunmarshal: consumeSfixed64,\n\tmerge:     mergeInt64,\n}\n\n// sizeSfixed64NoZero returns the size of wire encoding a int64 pointer as a Sfixed64.\n// The zero value is not encoded.\nfunc sizeSfixed64NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Int64()\n\tif v == 0 {\n\t\treturn 0\n\t}\n\treturn f.tagsize + protowire.SizeFixed64()\n}\n\n// appendSfixed64NoZero wire encodes a int64 pointer as a Sfixed64.\n// The zero value is not encoded.\nfunc appendSfixed64NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Int64()\n\tif v == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendFixed64(b, uint64(v))\n\treturn b, nil\n}\n\nvar coderSfixed64NoZero = pointerCoderFuncs{\n\tsize:      sizeSfixed64NoZero,\n\tmarshal:   appendSfixed64NoZero,\n\tunmarshal: consumeSfixed64,\n\tmerge:     mergeInt64NoZero,\n}\n\n// sizeSfixed64Ptr returns the size of wire encoding a *int64 pointer as a Sfixed64.\n// It panics if the pointer is nil.\nfunc sizeSfixed64Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\treturn f.tagsize + protowire.SizeFixed64()\n}\n\n// appendSfixed64Ptr wire encodes a *int64 pointer as a Sfixed64.\n// It panics if the pointer is nil.\nfunc appendSfixed64Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := **p.Int64Ptr()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendFixed64(b, uint64(v))\n\treturn b, nil\n}\n\n// consumeSfixed64Ptr wire decodes a *int64 pointer as a Sfixed64.\nfunc consumeSfixed64Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.Fixed64Type {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed64(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tvp := p.Int64Ptr()\n\tif *vp == nil {\n\t\t*vp = new(int64)\n\t}\n\t**vp = int64(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderSfixed64Ptr = pointerCoderFuncs{\n\tsize:      sizeSfixed64Ptr,\n\tmarshal:   appendSfixed64Ptr,\n\tunmarshal: consumeSfixed64Ptr,\n\tmerge:     mergeInt64Ptr,\n}\n\n// sizeSfixed64Slice returns the size of wire encoding a []int64 pointer as a repeated Sfixed64.\nfunc sizeSfixed64Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Int64Slice()\n\tsize = len(s) * (f.tagsize + protowire.SizeFixed64())\n\treturn size\n}\n\n// appendSfixed64Slice encodes a []int64 pointer as a repeated Sfixed64.\nfunc appendSfixed64Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Int64Slice()\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tb = protowire.AppendFixed64(b, uint64(v))\n\t}\n\treturn b, nil\n}\n\n// consumeSfixed64Slice wire decodes a []int64 pointer as a repeated Sfixed64.\nfunc consumeSfixed64Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tsp := p.Int64Slice()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn out, errDecode\n\t\t}\n\t\tcount := len(b) / protowire.SizeFixed64()\n\t\tif count > 0 {\n\t\t\tp.growInt64Slice(count)\n\t\t}\n\t\ts := *sp\n\t\tfor len(b) > 0 {\n\t\t\tv, n := protowire.ConsumeFixed64(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t\ts = append(s, int64(v))\n\t\t\tb = b[n:]\n\t\t}\n\t\t*sp = s\n\t\tout.n = n\n\t\treturn out, nil\n\t}\n\tif wtyp != protowire.Fixed64Type {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed64(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*sp = append(*sp, int64(v))\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderSfixed64Slice = pointerCoderFuncs{\n\tsize:      sizeSfixed64Slice,\n\tmarshal:   appendSfixed64Slice,\n\tunmarshal: consumeSfixed64Slice,\n\tmerge:     mergeInt64Slice,\n}\n\n// sizeSfixed64PackedSlice returns the size of wire encoding a []int64 pointer as a packed repeated Sfixed64.\nfunc sizeSfixed64PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Int64Slice()\n\tif len(s) == 0 {\n\t\treturn 0\n\t}\n\tn := len(s) * protowire.SizeFixed64()\n\treturn f.tagsize + protowire.SizeBytes(n)\n}\n\n// appendSfixed64PackedSlice encodes a []int64 pointer as a packed repeated Sfixed64.\nfunc appendSfixed64PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Int64Slice()\n\tif len(s) == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tn := len(s) * protowire.SizeFixed64()\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor _, v := range s {\n\t\tb = protowire.AppendFixed64(b, uint64(v))\n\t}\n\treturn b, nil\n}\n\nvar coderSfixed64PackedSlice = pointerCoderFuncs{\n\tsize:      sizeSfixed64PackedSlice,\n\tmarshal:   appendSfixed64PackedSlice,\n\tunmarshal: consumeSfixed64Slice,\n\tmerge:     mergeInt64Slice,\n}\n\n// sizeSfixed64Value returns the size of wire encoding a int64 value as a Sfixed64.\nfunc sizeSfixed64Value(v protoreflect.Value, tagsize int, opts marshalOptions) int {\n\treturn tagsize + protowire.SizeFixed64()\n}\n\n// appendSfixed64Value encodes a int64 value as a Sfixed64.\nfunc appendSfixed64Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tb = protowire.AppendVarint(b, wiretag)\n\tb = protowire.AppendFixed64(b, uint64(v.Int()))\n\treturn b, nil\n}\n\n// consumeSfixed64Value decodes a int64 value as a Sfixed64.\nfunc consumeSfixed64Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tif wtyp != protowire.Fixed64Type {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed64(b)\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tout.n = n\n\treturn protoreflect.ValueOfInt64(int64(v)), out, nil\n}\n\nvar coderSfixed64Value = valueCoderFuncs{\n\tsize:      sizeSfixed64Value,\n\tmarshal:   appendSfixed64Value,\n\tunmarshal: consumeSfixed64Value,\n\tmerge:     mergeScalarValue,\n}\n\n// sizeSfixed64SliceValue returns the size of wire encoding a []int64 value as a repeated Sfixed64.\nfunc sizeSfixed64SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tsize = list.Len() * (tagsize + protowire.SizeFixed64())\n\treturn size\n}\n\n// appendSfixed64SliceValue encodes a []int64 value as a repeated Sfixed64.\nfunc appendSfixed64SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, wiretag)\n\t\tb = protowire.AppendFixed64(b, uint64(v.Int()))\n\t}\n\treturn b, nil\n}\n\n// consumeSfixed64SliceValue wire decodes a []int64 value as a repeated Sfixed64.\nfunc consumeSfixed64SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tlist := listv.List()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t}\n\t\tfor len(b) > 0 {\n\t\t\tv, n := protowire.ConsumeFixed64(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t\t}\n\t\t\tlist.Append(protoreflect.ValueOfInt64(int64(v)))\n\t\t\tb = b[n:]\n\t\t}\n\t\tout.n = n\n\t\treturn listv, out, nil\n\t}\n\tif wtyp != protowire.Fixed64Type {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed64(b)\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tlist.Append(protoreflect.ValueOfInt64(int64(v)))\n\tout.n = n\n\treturn listv, out, nil\n}\n\nvar coderSfixed64SliceValue = valueCoderFuncs{\n\tsize:      sizeSfixed64SliceValue,\n\tmarshal:   appendSfixed64SliceValue,\n\tunmarshal: consumeSfixed64SliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeSfixed64PackedSliceValue returns the size of wire encoding a []int64 value as a packed repeated Sfixed64.\nfunc sizeSfixed64PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn 0\n\t}\n\tn := llen * protowire.SizeFixed64()\n\treturn tagsize + protowire.SizeBytes(n)\n}\n\n// appendSfixed64PackedSliceValue encodes a []int64 value as a packed repeated Sfixed64.\nfunc appendSfixed64PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, wiretag)\n\tn := llen * protowire.SizeFixed64()\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendFixed64(b, uint64(v.Int()))\n\t}\n\treturn b, nil\n}\n\nvar coderSfixed64PackedSliceValue = valueCoderFuncs{\n\tsize:      sizeSfixed64PackedSliceValue,\n\tmarshal:   appendSfixed64PackedSliceValue,\n\tunmarshal: consumeSfixed64SliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeFixed64 returns the size of wire encoding a uint64 pointer as a Fixed64.\nfunc sizeFixed64(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\n\treturn f.tagsize + protowire.SizeFixed64()\n}\n\n// appendFixed64 wire encodes a uint64 pointer as a Fixed64.\nfunc appendFixed64(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Uint64()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendFixed64(b, v)\n\treturn b, nil\n}\n\n// consumeFixed64 wire decodes a uint64 pointer as a Fixed64.\nfunc consumeFixed64(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.Fixed64Type {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed64(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*p.Uint64() = v\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderFixed64 = pointerCoderFuncs{\n\tsize:      sizeFixed64,\n\tmarshal:   appendFixed64,\n\tunmarshal: consumeFixed64,\n\tmerge:     mergeUint64,\n}\n\n// sizeFixed64NoZero returns the size of wire encoding a uint64 pointer as a Fixed64.\n// The zero value is not encoded.\nfunc sizeFixed64NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Uint64()\n\tif v == 0 {\n\t\treturn 0\n\t}\n\treturn f.tagsize + protowire.SizeFixed64()\n}\n\n// appendFixed64NoZero wire encodes a uint64 pointer as a Fixed64.\n// The zero value is not encoded.\nfunc appendFixed64NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Uint64()\n\tif v == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendFixed64(b, v)\n\treturn b, nil\n}\n\nvar coderFixed64NoZero = pointerCoderFuncs{\n\tsize:      sizeFixed64NoZero,\n\tmarshal:   appendFixed64NoZero,\n\tunmarshal: consumeFixed64,\n\tmerge:     mergeUint64NoZero,\n}\n\n// sizeFixed64Ptr returns the size of wire encoding a *uint64 pointer as a Fixed64.\n// It panics if the pointer is nil.\nfunc sizeFixed64Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\treturn f.tagsize + protowire.SizeFixed64()\n}\n\n// appendFixed64Ptr wire encodes a *uint64 pointer as a Fixed64.\n// It panics if the pointer is nil.\nfunc appendFixed64Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := **p.Uint64Ptr()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendFixed64(b, v)\n\treturn b, nil\n}\n\n// consumeFixed64Ptr wire decodes a *uint64 pointer as a Fixed64.\nfunc consumeFixed64Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.Fixed64Type {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed64(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tvp := p.Uint64Ptr()\n\tif *vp == nil {\n\t\t*vp = new(uint64)\n\t}\n\t**vp = v\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderFixed64Ptr = pointerCoderFuncs{\n\tsize:      sizeFixed64Ptr,\n\tmarshal:   appendFixed64Ptr,\n\tunmarshal: consumeFixed64Ptr,\n\tmerge:     mergeUint64Ptr,\n}\n\n// sizeFixed64Slice returns the size of wire encoding a []uint64 pointer as a repeated Fixed64.\nfunc sizeFixed64Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Uint64Slice()\n\tsize = len(s) * (f.tagsize + protowire.SizeFixed64())\n\treturn size\n}\n\n// appendFixed64Slice encodes a []uint64 pointer as a repeated Fixed64.\nfunc appendFixed64Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Uint64Slice()\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tb = protowire.AppendFixed64(b, v)\n\t}\n\treturn b, nil\n}\n\n// consumeFixed64Slice wire decodes a []uint64 pointer as a repeated Fixed64.\nfunc consumeFixed64Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tsp := p.Uint64Slice()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn out, errDecode\n\t\t}\n\t\tcount := len(b) / protowire.SizeFixed64()\n\t\tif count > 0 {\n\t\t\tp.growUint64Slice(count)\n\t\t}\n\t\ts := *sp\n\t\tfor len(b) > 0 {\n\t\t\tv, n := protowire.ConsumeFixed64(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t\ts = append(s, v)\n\t\t\tb = b[n:]\n\t\t}\n\t\t*sp = s\n\t\tout.n = n\n\t\treturn out, nil\n\t}\n\tif wtyp != protowire.Fixed64Type {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed64(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*sp = append(*sp, v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderFixed64Slice = pointerCoderFuncs{\n\tsize:      sizeFixed64Slice,\n\tmarshal:   appendFixed64Slice,\n\tunmarshal: consumeFixed64Slice,\n\tmerge:     mergeUint64Slice,\n}\n\n// sizeFixed64PackedSlice returns the size of wire encoding a []uint64 pointer as a packed repeated Fixed64.\nfunc sizeFixed64PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Uint64Slice()\n\tif len(s) == 0 {\n\t\treturn 0\n\t}\n\tn := len(s) * protowire.SizeFixed64()\n\treturn f.tagsize + protowire.SizeBytes(n)\n}\n\n// appendFixed64PackedSlice encodes a []uint64 pointer as a packed repeated Fixed64.\nfunc appendFixed64PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Uint64Slice()\n\tif len(s) == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tn := len(s) * protowire.SizeFixed64()\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor _, v := range s {\n\t\tb = protowire.AppendFixed64(b, v)\n\t}\n\treturn b, nil\n}\n\nvar coderFixed64PackedSlice = pointerCoderFuncs{\n\tsize:      sizeFixed64PackedSlice,\n\tmarshal:   appendFixed64PackedSlice,\n\tunmarshal: consumeFixed64Slice,\n\tmerge:     mergeUint64Slice,\n}\n\n// sizeFixed64Value returns the size of wire encoding a uint64 value as a Fixed64.\nfunc sizeFixed64Value(v protoreflect.Value, tagsize int, opts marshalOptions) int {\n\treturn tagsize + protowire.SizeFixed64()\n}\n\n// appendFixed64Value encodes a uint64 value as a Fixed64.\nfunc appendFixed64Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tb = protowire.AppendVarint(b, wiretag)\n\tb = protowire.AppendFixed64(b, v.Uint())\n\treturn b, nil\n}\n\n// consumeFixed64Value decodes a uint64 value as a Fixed64.\nfunc consumeFixed64Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tif wtyp != protowire.Fixed64Type {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed64(b)\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tout.n = n\n\treturn protoreflect.ValueOfUint64(v), out, nil\n}\n\nvar coderFixed64Value = valueCoderFuncs{\n\tsize:      sizeFixed64Value,\n\tmarshal:   appendFixed64Value,\n\tunmarshal: consumeFixed64Value,\n\tmerge:     mergeScalarValue,\n}\n\n// sizeFixed64SliceValue returns the size of wire encoding a []uint64 value as a repeated Fixed64.\nfunc sizeFixed64SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tsize = list.Len() * (tagsize + protowire.SizeFixed64())\n\treturn size\n}\n\n// appendFixed64SliceValue encodes a []uint64 value as a repeated Fixed64.\nfunc appendFixed64SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, wiretag)\n\t\tb = protowire.AppendFixed64(b, v.Uint())\n\t}\n\treturn b, nil\n}\n\n// consumeFixed64SliceValue wire decodes a []uint64 value as a repeated Fixed64.\nfunc consumeFixed64SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tlist := listv.List()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t}\n\t\tfor len(b) > 0 {\n\t\t\tv, n := protowire.ConsumeFixed64(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t\t}\n\t\t\tlist.Append(protoreflect.ValueOfUint64(v))\n\t\t\tb = b[n:]\n\t\t}\n\t\tout.n = n\n\t\treturn listv, out, nil\n\t}\n\tif wtyp != protowire.Fixed64Type {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed64(b)\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tlist.Append(protoreflect.ValueOfUint64(v))\n\tout.n = n\n\treturn listv, out, nil\n}\n\nvar coderFixed64SliceValue = valueCoderFuncs{\n\tsize:      sizeFixed64SliceValue,\n\tmarshal:   appendFixed64SliceValue,\n\tunmarshal: consumeFixed64SliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeFixed64PackedSliceValue returns the size of wire encoding a []uint64 value as a packed repeated Fixed64.\nfunc sizeFixed64PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn 0\n\t}\n\tn := llen * protowire.SizeFixed64()\n\treturn tagsize + protowire.SizeBytes(n)\n}\n\n// appendFixed64PackedSliceValue encodes a []uint64 value as a packed repeated Fixed64.\nfunc appendFixed64PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, wiretag)\n\tn := llen * protowire.SizeFixed64()\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendFixed64(b, v.Uint())\n\t}\n\treturn b, nil\n}\n\nvar coderFixed64PackedSliceValue = valueCoderFuncs{\n\tsize:      sizeFixed64PackedSliceValue,\n\tmarshal:   appendFixed64PackedSliceValue,\n\tunmarshal: consumeFixed64SliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeDouble returns the size of wire encoding a float64 pointer as a Double.\nfunc sizeDouble(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\n\treturn f.tagsize + protowire.SizeFixed64()\n}\n\n// appendDouble wire encodes a float64 pointer as a Double.\nfunc appendDouble(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Float64()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendFixed64(b, math.Float64bits(v))\n\treturn b, nil\n}\n\n// consumeDouble wire decodes a float64 pointer as a Double.\nfunc consumeDouble(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.Fixed64Type {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed64(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*p.Float64() = math.Float64frombits(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderDouble = pointerCoderFuncs{\n\tsize:      sizeDouble,\n\tmarshal:   appendDouble,\n\tunmarshal: consumeDouble,\n\tmerge:     mergeFloat64,\n}\n\n// sizeDoubleNoZero returns the size of wire encoding a float64 pointer as a Double.\n// The zero value is not encoded.\nfunc sizeDoubleNoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Float64()\n\tif v == 0 && !math.Signbit(float64(v)) {\n\t\treturn 0\n\t}\n\treturn f.tagsize + protowire.SizeFixed64()\n}\n\n// appendDoubleNoZero wire encodes a float64 pointer as a Double.\n// The zero value is not encoded.\nfunc appendDoubleNoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Float64()\n\tif v == 0 && !math.Signbit(float64(v)) {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendFixed64(b, math.Float64bits(v))\n\treturn b, nil\n}\n\nvar coderDoubleNoZero = pointerCoderFuncs{\n\tsize:      sizeDoubleNoZero,\n\tmarshal:   appendDoubleNoZero,\n\tunmarshal: consumeDouble,\n\tmerge:     mergeFloat64NoZero,\n}\n\n// sizeDoublePtr returns the size of wire encoding a *float64 pointer as a Double.\n// It panics if the pointer is nil.\nfunc sizeDoublePtr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\treturn f.tagsize + protowire.SizeFixed64()\n}\n\n// appendDoublePtr wire encodes a *float64 pointer as a Double.\n// It panics if the pointer is nil.\nfunc appendDoublePtr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := **p.Float64Ptr()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendFixed64(b, math.Float64bits(v))\n\treturn b, nil\n}\n\n// consumeDoublePtr wire decodes a *float64 pointer as a Double.\nfunc consumeDoublePtr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.Fixed64Type {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed64(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tvp := p.Float64Ptr()\n\tif *vp == nil {\n\t\t*vp = new(float64)\n\t}\n\t**vp = math.Float64frombits(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderDoublePtr = pointerCoderFuncs{\n\tsize:      sizeDoublePtr,\n\tmarshal:   appendDoublePtr,\n\tunmarshal: consumeDoublePtr,\n\tmerge:     mergeFloat64Ptr,\n}\n\n// sizeDoubleSlice returns the size of wire encoding a []float64 pointer as a repeated Double.\nfunc sizeDoubleSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Float64Slice()\n\tsize = len(s) * (f.tagsize + protowire.SizeFixed64())\n\treturn size\n}\n\n// appendDoubleSlice encodes a []float64 pointer as a repeated Double.\nfunc appendDoubleSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Float64Slice()\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tb = protowire.AppendFixed64(b, math.Float64bits(v))\n\t}\n\treturn b, nil\n}\n\n// consumeDoubleSlice wire decodes a []float64 pointer as a repeated Double.\nfunc consumeDoubleSlice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tsp := p.Float64Slice()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn out, errDecode\n\t\t}\n\t\tcount := len(b) / protowire.SizeFixed64()\n\t\tif count > 0 {\n\t\t\tp.growFloat64Slice(count)\n\t\t}\n\t\ts := *sp\n\t\tfor len(b) > 0 {\n\t\t\tv, n := protowire.ConsumeFixed64(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t\ts = append(s, math.Float64frombits(v))\n\t\t\tb = b[n:]\n\t\t}\n\t\t*sp = s\n\t\tout.n = n\n\t\treturn out, nil\n\t}\n\tif wtyp != protowire.Fixed64Type {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed64(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*sp = append(*sp, math.Float64frombits(v))\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderDoubleSlice = pointerCoderFuncs{\n\tsize:      sizeDoubleSlice,\n\tmarshal:   appendDoubleSlice,\n\tunmarshal: consumeDoubleSlice,\n\tmerge:     mergeFloat64Slice,\n}\n\n// sizeDoublePackedSlice returns the size of wire encoding a []float64 pointer as a packed repeated Double.\nfunc sizeDoublePackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Float64Slice()\n\tif len(s) == 0 {\n\t\treturn 0\n\t}\n\tn := len(s) * protowire.SizeFixed64()\n\treturn f.tagsize + protowire.SizeBytes(n)\n}\n\n// appendDoublePackedSlice encodes a []float64 pointer as a packed repeated Double.\nfunc appendDoublePackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Float64Slice()\n\tif len(s) == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tn := len(s) * protowire.SizeFixed64()\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor _, v := range s {\n\t\tb = protowire.AppendFixed64(b, math.Float64bits(v))\n\t}\n\treturn b, nil\n}\n\nvar coderDoublePackedSlice = pointerCoderFuncs{\n\tsize:      sizeDoublePackedSlice,\n\tmarshal:   appendDoublePackedSlice,\n\tunmarshal: consumeDoubleSlice,\n\tmerge:     mergeFloat64Slice,\n}\n\n// sizeDoubleValue returns the size of wire encoding a float64 value as a Double.\nfunc sizeDoubleValue(v protoreflect.Value, tagsize int, opts marshalOptions) int {\n\treturn tagsize + protowire.SizeFixed64()\n}\n\n// appendDoubleValue encodes a float64 value as a Double.\nfunc appendDoubleValue(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tb = protowire.AppendVarint(b, wiretag)\n\tb = protowire.AppendFixed64(b, math.Float64bits(v.Float()))\n\treturn b, nil\n}\n\n// consumeDoubleValue decodes a float64 value as a Double.\nfunc consumeDoubleValue(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tif wtyp != protowire.Fixed64Type {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed64(b)\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tout.n = n\n\treturn protoreflect.ValueOfFloat64(math.Float64frombits(v)), out, nil\n}\n\nvar coderDoubleValue = valueCoderFuncs{\n\tsize:      sizeDoubleValue,\n\tmarshal:   appendDoubleValue,\n\tunmarshal: consumeDoubleValue,\n\tmerge:     mergeScalarValue,\n}\n\n// sizeDoubleSliceValue returns the size of wire encoding a []float64 value as a repeated Double.\nfunc sizeDoubleSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tsize = list.Len() * (tagsize + protowire.SizeFixed64())\n\treturn size\n}\n\n// appendDoubleSliceValue encodes a []float64 value as a repeated Double.\nfunc appendDoubleSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, wiretag)\n\t\tb = protowire.AppendFixed64(b, math.Float64bits(v.Float()))\n\t}\n\treturn b, nil\n}\n\n// consumeDoubleSliceValue wire decodes a []float64 value as a repeated Double.\nfunc consumeDoubleSliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tlist := listv.List()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t}\n\t\tfor len(b) > 0 {\n\t\t\tv, n := protowire.ConsumeFixed64(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t\t}\n\t\t\tlist.Append(protoreflect.ValueOfFloat64(math.Float64frombits(v)))\n\t\t\tb = b[n:]\n\t\t}\n\t\tout.n = n\n\t\treturn listv, out, nil\n\t}\n\tif wtyp != protowire.Fixed64Type {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed64(b)\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tlist.Append(protoreflect.ValueOfFloat64(math.Float64frombits(v)))\n\tout.n = n\n\treturn listv, out, nil\n}\n\nvar coderDoubleSliceValue = valueCoderFuncs{\n\tsize:      sizeDoubleSliceValue,\n\tmarshal:   appendDoubleSliceValue,\n\tunmarshal: consumeDoubleSliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeDoublePackedSliceValue returns the size of wire encoding a []float64 value as a packed repeated Double.\nfunc sizeDoublePackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn 0\n\t}\n\tn := llen * protowire.SizeFixed64()\n\treturn tagsize + protowire.SizeBytes(n)\n}\n\n// appendDoublePackedSliceValue encodes a []float64 value as a packed repeated Double.\nfunc appendDoublePackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, wiretag)\n\tn := llen * protowire.SizeFixed64()\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendFixed64(b, math.Float64bits(v.Float()))\n\t}\n\treturn b, nil\n}\n\nvar coderDoublePackedSliceValue = valueCoderFuncs{\n\tsize:      sizeDoublePackedSliceValue,\n\tmarshal:   appendDoublePackedSliceValue,\n\tunmarshal: consumeDoubleSliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeString returns the size of wire encoding a string pointer as a String.\nfunc sizeString(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.String()\n\treturn f.tagsize + protowire.SizeBytes(len(v))\n}\n\n// appendString wire encodes a string pointer as a String.\nfunc appendString(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.String()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendString(b, v)\n\treturn b, nil\n}\n\n// consumeString wire decodes a string pointer as a String.\nfunc consumeString(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.BytesType {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*p.String() = string(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderString = pointerCoderFuncs{\n\tsize:      sizeString,\n\tmarshal:   appendString,\n\tunmarshal: consumeString,\n\tmerge:     mergeString,\n}\n\n// appendStringValidateUTF8 wire encodes a string pointer as a String.\nfunc appendStringValidateUTF8(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.String()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendString(b, v)\n\tif !utf8.ValidString(v) {\n\t\treturn b, errInvalidUTF8{}\n\t}\n\treturn b, nil\n}\n\n// consumeStringValidateUTF8 wire decodes a string pointer as a String.\nfunc consumeStringValidateUTF8(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.BytesType {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tif !utf8.Valid(v) {\n\t\treturn out, errInvalidUTF8{}\n\t}\n\t*p.String() = string(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderStringValidateUTF8 = pointerCoderFuncs{\n\tsize:      sizeString,\n\tmarshal:   appendStringValidateUTF8,\n\tunmarshal: consumeStringValidateUTF8,\n\tmerge:     mergeString,\n}\n\n// sizeStringNoZero returns the size of wire encoding a string pointer as a String.\n// The zero value is not encoded.\nfunc sizeStringNoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.String()\n\tif len(v) == 0 {\n\t\treturn 0\n\t}\n\treturn f.tagsize + protowire.SizeBytes(len(v))\n}\n\n// appendStringNoZero wire encodes a string pointer as a String.\n// The zero value is not encoded.\nfunc appendStringNoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.String()\n\tif len(v) == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendString(b, v)\n\treturn b, nil\n}\n\nvar coderStringNoZero = pointerCoderFuncs{\n\tsize:      sizeStringNoZero,\n\tmarshal:   appendStringNoZero,\n\tunmarshal: consumeString,\n\tmerge:     mergeStringNoZero,\n}\n\n// appendStringNoZeroValidateUTF8 wire encodes a string pointer as a String.\n// The zero value is not encoded.\nfunc appendStringNoZeroValidateUTF8(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.String()\n\tif len(v) == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendString(b, v)\n\tif !utf8.ValidString(v) {\n\t\treturn b, errInvalidUTF8{}\n\t}\n\treturn b, nil\n}\n\nvar coderStringNoZeroValidateUTF8 = pointerCoderFuncs{\n\tsize:      sizeStringNoZero,\n\tmarshal:   appendStringNoZeroValidateUTF8,\n\tunmarshal: consumeStringValidateUTF8,\n\tmerge:     mergeStringNoZero,\n}\n\n// sizeStringPtr returns the size of wire encoding a *string pointer as a String.\n// It panics if the pointer is nil.\nfunc sizeStringPtr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := **p.StringPtr()\n\treturn f.tagsize + protowire.SizeBytes(len(v))\n}\n\n// appendStringPtr wire encodes a *string pointer as a String.\n// It panics if the pointer is nil.\nfunc appendStringPtr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := **p.StringPtr()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendString(b, v)\n\treturn b, nil\n}\n\n// consumeStringPtr wire decodes a *string pointer as a String.\nfunc consumeStringPtr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.BytesType {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tvp := p.StringPtr()\n\tif *vp == nil {\n\t\t*vp = new(string)\n\t}\n\t**vp = string(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderStringPtr = pointerCoderFuncs{\n\tsize:      sizeStringPtr,\n\tmarshal:   appendStringPtr,\n\tunmarshal: consumeStringPtr,\n\tmerge:     mergeStringPtr,\n}\n\n// appendStringPtrValidateUTF8 wire encodes a *string pointer as a String.\n// It panics if the pointer is nil.\nfunc appendStringPtrValidateUTF8(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := **p.StringPtr()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendString(b, v)\n\tif !utf8.ValidString(v) {\n\t\treturn b, errInvalidUTF8{}\n\t}\n\treturn b, nil\n}\n\n// consumeStringPtrValidateUTF8 wire decodes a *string pointer as a String.\nfunc consumeStringPtrValidateUTF8(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.BytesType {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tif !utf8.Valid(v) {\n\t\treturn out, errInvalidUTF8{}\n\t}\n\tvp := p.StringPtr()\n\tif *vp == nil {\n\t\t*vp = new(string)\n\t}\n\t**vp = string(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderStringPtrValidateUTF8 = pointerCoderFuncs{\n\tsize:      sizeStringPtr,\n\tmarshal:   appendStringPtrValidateUTF8,\n\tunmarshal: consumeStringPtrValidateUTF8,\n\tmerge:     mergeStringPtr,\n}\n\n// sizeStringSlice returns the size of wire encoding a []string pointer as a repeated String.\nfunc sizeStringSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.StringSlice()\n\tfor _, v := range s {\n\t\tsize += f.tagsize + protowire.SizeBytes(len(v))\n\t}\n\treturn size\n}\n\n// appendStringSlice encodes a []string pointer as a repeated String.\nfunc appendStringSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.StringSlice()\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tb = protowire.AppendString(b, v)\n\t}\n\treturn b, nil\n}\n\n// consumeStringSlice wire decodes a []string pointer as a repeated String.\nfunc consumeStringSlice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tsp := p.StringSlice()\n\tif wtyp != protowire.BytesType {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*sp = append(*sp, string(v))\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderStringSlice = pointerCoderFuncs{\n\tsize:      sizeStringSlice,\n\tmarshal:   appendStringSlice,\n\tunmarshal: consumeStringSlice,\n\tmerge:     mergeStringSlice,\n}\n\n// appendStringSliceValidateUTF8 encodes a []string pointer as a repeated String.\nfunc appendStringSliceValidateUTF8(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.StringSlice()\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tb = protowire.AppendString(b, v)\n\t\tif !utf8.ValidString(v) {\n\t\t\treturn b, errInvalidUTF8{}\n\t\t}\n\t}\n\treturn b, nil\n}\n\n// consumeStringSliceValidateUTF8 wire decodes a []string pointer as a repeated String.\nfunc consumeStringSliceValidateUTF8(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.BytesType {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tif !utf8.Valid(v) {\n\t\treturn out, errInvalidUTF8{}\n\t}\n\tsp := p.StringSlice()\n\t*sp = append(*sp, string(v))\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderStringSliceValidateUTF8 = pointerCoderFuncs{\n\tsize:      sizeStringSlice,\n\tmarshal:   appendStringSliceValidateUTF8,\n\tunmarshal: consumeStringSliceValidateUTF8,\n\tmerge:     mergeStringSlice,\n}\n\n// sizeStringValue returns the size of wire encoding a string value as a String.\nfunc sizeStringValue(v protoreflect.Value, tagsize int, opts marshalOptions) int {\n\treturn tagsize + protowire.SizeBytes(len(v.String()))\n}\n\n// appendStringValue encodes a string value as a String.\nfunc appendStringValue(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tb = protowire.AppendVarint(b, wiretag)\n\tb = protowire.AppendString(b, v.String())\n\treturn b, nil\n}\n\n// consumeStringValue decodes a string value as a String.\nfunc consumeStringValue(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tif wtyp != protowire.BytesType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tout.n = n\n\treturn protoreflect.ValueOfString(string(v)), out, nil\n}\n\nvar coderStringValue = valueCoderFuncs{\n\tsize:      sizeStringValue,\n\tmarshal:   appendStringValue,\n\tunmarshal: consumeStringValue,\n\tmerge:     mergeScalarValue,\n}\n\n// appendStringValueValidateUTF8 encodes a string value as a String.\nfunc appendStringValueValidateUTF8(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tb = protowire.AppendVarint(b, wiretag)\n\tb = protowire.AppendString(b, v.String())\n\tif !utf8.ValidString(v.String()) {\n\t\treturn b, errInvalidUTF8{}\n\t}\n\treturn b, nil\n}\n\n// consumeStringValueValidateUTF8 decodes a string value as a String.\nfunc consumeStringValueValidateUTF8(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tif wtyp != protowire.BytesType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tif !utf8.Valid(v) {\n\t\treturn protoreflect.Value{}, out, errInvalidUTF8{}\n\t}\n\tout.n = n\n\treturn protoreflect.ValueOfString(string(v)), out, nil\n}\n\nvar coderStringValueValidateUTF8 = valueCoderFuncs{\n\tsize:      sizeStringValue,\n\tmarshal:   appendStringValueValidateUTF8,\n\tunmarshal: consumeStringValueValidateUTF8,\n\tmerge:     mergeScalarValue,\n}\n\n// sizeStringSliceValue returns the size of wire encoding a []string value as a repeated String.\nfunc sizeStringSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tsize += tagsize + protowire.SizeBytes(len(v.String()))\n\t}\n\treturn size\n}\n\n// appendStringSliceValue encodes a []string value as a repeated String.\nfunc appendStringSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, wiretag)\n\t\tb = protowire.AppendString(b, v.String())\n\t}\n\treturn b, nil\n}\n\n// consumeStringSliceValue wire decodes a []string value as a repeated String.\nfunc consumeStringSliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tlist := listv.List()\n\tif wtyp != protowire.BytesType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tlist.Append(protoreflect.ValueOfString(string(v)))\n\tout.n = n\n\treturn listv, out, nil\n}\n\nvar coderStringSliceValue = valueCoderFuncs{\n\tsize:      sizeStringSliceValue,\n\tmarshal:   appendStringSliceValue,\n\tunmarshal: consumeStringSliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeBytes returns the size of wire encoding a []byte pointer as a Bytes.\nfunc sizeBytes(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Bytes()\n\treturn f.tagsize + protowire.SizeBytes(len(v))\n}\n\n// appendBytes wire encodes a []byte pointer as a Bytes.\nfunc appendBytes(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Bytes()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendBytes(b, v)\n\treturn b, nil\n}\n\n// consumeBytes wire decodes a []byte pointer as a Bytes.\nfunc consumeBytes(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.BytesType {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*p.Bytes() = append(emptyBuf[:], v...)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderBytes = pointerCoderFuncs{\n\tsize:      sizeBytes,\n\tmarshal:   appendBytes,\n\tunmarshal: consumeBytes,\n\tmerge:     mergeBytes,\n}\n\n// appendBytesValidateUTF8 wire encodes a []byte pointer as a Bytes.\nfunc appendBytesValidateUTF8(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Bytes()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendBytes(b, v)\n\tif !utf8.Valid(v) {\n\t\treturn b, errInvalidUTF8{}\n\t}\n\treturn b, nil\n}\n\n// consumeBytesValidateUTF8 wire decodes a []byte pointer as a Bytes.\nfunc consumeBytesValidateUTF8(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.BytesType {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tif !utf8.Valid(v) {\n\t\treturn out, errInvalidUTF8{}\n\t}\n\t*p.Bytes() = append(emptyBuf[:], v...)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderBytesValidateUTF8 = pointerCoderFuncs{\n\tsize:      sizeBytes,\n\tmarshal:   appendBytesValidateUTF8,\n\tunmarshal: consumeBytesValidateUTF8,\n\tmerge:     mergeBytes,\n}\n\n// sizeBytesNoZero returns the size of wire encoding a []byte pointer as a Bytes.\n// The zero value is not encoded.\nfunc sizeBytesNoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Bytes()\n\tif len(v) == 0 {\n\t\treturn 0\n\t}\n\treturn f.tagsize + protowire.SizeBytes(len(v))\n}\n\n// appendBytesNoZero wire encodes a []byte pointer as a Bytes.\n// The zero value is not encoded.\nfunc appendBytesNoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Bytes()\n\tif len(v) == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendBytes(b, v)\n\treturn b, nil\n}\n\n// consumeBytesNoZero wire decodes a []byte pointer as a Bytes.\n// The zero value is not decoded.\nfunc consumeBytesNoZero(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.BytesType {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*p.Bytes() = append(([]byte)(nil), v...)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderBytesNoZero = pointerCoderFuncs{\n\tsize:      sizeBytesNoZero,\n\tmarshal:   appendBytesNoZero,\n\tunmarshal: consumeBytesNoZero,\n\tmerge:     mergeBytesNoZero,\n}\n\n// appendBytesNoZeroValidateUTF8 wire encodes a []byte pointer as a Bytes.\n// The zero value is not encoded.\nfunc appendBytesNoZeroValidateUTF8(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Bytes()\n\tif len(v) == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendBytes(b, v)\n\tif !utf8.Valid(v) {\n\t\treturn b, errInvalidUTF8{}\n\t}\n\treturn b, nil\n}\n\n// consumeBytesNoZeroValidateUTF8 wire decodes a []byte pointer as a Bytes.\nfunc consumeBytesNoZeroValidateUTF8(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.BytesType {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tif !utf8.Valid(v) {\n\t\treturn out, errInvalidUTF8{}\n\t}\n\t*p.Bytes() = append(([]byte)(nil), v...)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderBytesNoZeroValidateUTF8 = pointerCoderFuncs{\n\tsize:      sizeBytesNoZero,\n\tmarshal:   appendBytesNoZeroValidateUTF8,\n\tunmarshal: consumeBytesNoZeroValidateUTF8,\n\tmerge:     mergeBytesNoZero,\n}\n\n// sizeBytesSlice returns the size of wire encoding a [][]byte pointer as a repeated Bytes.\nfunc sizeBytesSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.BytesSlice()\n\tfor _, v := range s {\n\t\tsize += f.tagsize + protowire.SizeBytes(len(v))\n\t}\n\treturn size\n}\n\n// appendBytesSlice encodes a [][]byte pointer as a repeated Bytes.\nfunc appendBytesSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.BytesSlice()\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tb = protowire.AppendBytes(b, v)\n\t}\n\treturn b, nil\n}\n\n// consumeBytesSlice wire decodes a [][]byte pointer as a repeated Bytes.\nfunc consumeBytesSlice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tsp := p.BytesSlice()\n\tif wtyp != protowire.BytesType {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*sp = append(*sp, append(emptyBuf[:], v...))\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderBytesSlice = pointerCoderFuncs{\n\tsize:      sizeBytesSlice,\n\tmarshal:   appendBytesSlice,\n\tunmarshal: consumeBytesSlice,\n\tmerge:     mergeBytesSlice,\n}\n\n// appendBytesSliceValidateUTF8 encodes a [][]byte pointer as a repeated Bytes.\nfunc appendBytesSliceValidateUTF8(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.BytesSlice()\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tb = protowire.AppendBytes(b, v)\n\t\tif !utf8.Valid(v) {\n\t\t\treturn b, errInvalidUTF8{}\n\t\t}\n\t}\n\treturn b, nil\n}\n\n// consumeBytesSliceValidateUTF8 wire decodes a [][]byte pointer as a repeated Bytes.\nfunc consumeBytesSliceValidateUTF8(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.BytesType {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tif !utf8.Valid(v) {\n\t\treturn out, errInvalidUTF8{}\n\t}\n\tsp := p.BytesSlice()\n\t*sp = append(*sp, append(emptyBuf[:], v...))\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderBytesSliceValidateUTF8 = pointerCoderFuncs{\n\tsize:      sizeBytesSlice,\n\tmarshal:   appendBytesSliceValidateUTF8,\n\tunmarshal: consumeBytesSliceValidateUTF8,\n\tmerge:     mergeBytesSlice,\n}\n\n// sizeBytesValue returns the size of wire encoding a []byte value as a Bytes.\nfunc sizeBytesValue(v protoreflect.Value, tagsize int, opts marshalOptions) int {\n\treturn tagsize + protowire.SizeBytes(len(v.Bytes()))\n}\n\n// appendBytesValue encodes a []byte value as a Bytes.\nfunc appendBytesValue(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tb = protowire.AppendVarint(b, wiretag)\n\tb = protowire.AppendBytes(b, v.Bytes())\n\treturn b, nil\n}\n\n// consumeBytesValue decodes a []byte value as a Bytes.\nfunc consumeBytesValue(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tif wtyp != protowire.BytesType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tout.n = n\n\treturn protoreflect.ValueOfBytes(append(emptyBuf[:], v...)), out, nil\n}\n\nvar coderBytesValue = valueCoderFuncs{\n\tsize:      sizeBytesValue,\n\tmarshal:   appendBytesValue,\n\tunmarshal: consumeBytesValue,\n\tmerge:     mergeBytesValue,\n}\n\n// sizeBytesSliceValue returns the size of wire encoding a [][]byte value as a repeated Bytes.\nfunc sizeBytesSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tsize += tagsize + protowire.SizeBytes(len(v.Bytes()))\n\t}\n\treturn size\n}\n\n// appendBytesSliceValue encodes a [][]byte value as a repeated Bytes.\nfunc appendBytesSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, wiretag)\n\t\tb = protowire.AppendBytes(b, v.Bytes())\n\t}\n\treturn b, nil\n}\n\n// consumeBytesSliceValue wire decodes a [][]byte value as a repeated Bytes.\nfunc consumeBytesSliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tlist := listv.List()\n\tif wtyp != protowire.BytesType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tlist.Append(protoreflect.ValueOfBytes(append(emptyBuf[:], v...)))\n\tout.n = n\n\treturn listv, out, nil\n}\n\nvar coderBytesSliceValue = valueCoderFuncs{\n\tsize:      sizeBytesSliceValue,\n\tmarshal:   appendBytesSliceValue,\n\tunmarshal: consumeBytesSliceValue,\n\tmerge:     mergeBytesListValue,\n}\n\n// We append to an empty array rather than a nil []byte to get non-nil zero-length byte slices.\nvar emptyBuf [0]byte\n\nvar wireTypes = map[protoreflect.Kind]protowire.Type{\n\tprotoreflect.BoolKind:     protowire.VarintType,\n\tprotoreflect.EnumKind:     protowire.VarintType,\n\tprotoreflect.Int32Kind:    protowire.VarintType,\n\tprotoreflect.Sint32Kind:   protowire.VarintType,\n\tprotoreflect.Uint32Kind:   protowire.VarintType,\n\tprotoreflect.Int64Kind:    protowire.VarintType,\n\tprotoreflect.Sint64Kind:   protowire.VarintType,\n\tprotoreflect.Uint64Kind:   protowire.VarintType,\n\tprotoreflect.Sfixed32Kind: protowire.Fixed32Type,\n\tprotoreflect.Fixed32Kind:  protowire.Fixed32Type,\n\tprotoreflect.FloatKind:    protowire.Fixed32Type,\n\tprotoreflect.Sfixed64Kind: protowire.Fixed64Type,\n\tprotoreflect.Fixed64Kind:  protowire.Fixed64Type,\n\tprotoreflect.DoubleKind:   protowire.Fixed64Type,\n\tprotoreflect.StringKind:   protowire.BytesType,\n\tprotoreflect.BytesKind:    protowire.BytesType,\n\tprotoreflect.MessageKind:  protowire.BytesType,\n\tprotoreflect.GroupKind:    protowire.StartGroupType,\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/codec_map.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"reflect\"\n\t\"sort\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/internal/genid\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\ntype mapInfo struct {\n\tgoType     reflect.Type\n\tkeyWiretag uint64\n\tvalWiretag uint64\n\tkeyFuncs   valueCoderFuncs\n\tvalFuncs   valueCoderFuncs\n\tkeyZero    protoreflect.Value\n\tkeyKind    protoreflect.Kind\n\tconv       *mapConverter\n}\n\nfunc encoderFuncsForMap(fd protoreflect.FieldDescriptor, ft reflect.Type) (valueMessage *MessageInfo, funcs pointerCoderFuncs) {\n\t// TODO: Consider generating specialized map coders.\n\tkeyField := fd.MapKey()\n\tvalField := fd.MapValue()\n\tkeyWiretag := protowire.EncodeTag(1, wireTypes[keyField.Kind()])\n\tvalWiretag := protowire.EncodeTag(2, wireTypes[valField.Kind()])\n\tkeyFuncs := encoderFuncsForValue(keyField)\n\tvalFuncs := encoderFuncsForValue(valField)\n\tconv := newMapConverter(ft, fd)\n\n\tmapi := &mapInfo{\n\t\tgoType:     ft,\n\t\tkeyWiretag: keyWiretag,\n\t\tvalWiretag: valWiretag,\n\t\tkeyFuncs:   keyFuncs,\n\t\tvalFuncs:   valFuncs,\n\t\tkeyZero:    keyField.Default(),\n\t\tkeyKind:    keyField.Kind(),\n\t\tconv:       conv,\n\t}\n\tif valField.Kind() == protoreflect.MessageKind {\n\t\tvalueMessage = getMessageInfo(ft.Elem())\n\t}\n\n\tfuncs = pointerCoderFuncs{\n\t\tsize: func(p pointer, f *coderFieldInfo, opts marshalOptions) int {\n\t\t\treturn sizeMap(p.AsValueOf(ft).Elem(), mapi, f, opts)\n\t\t},\n\t\tmarshal: func(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\t\t\treturn appendMap(b, p.AsValueOf(ft).Elem(), mapi, f, opts)\n\t\t},\n\t\tunmarshal: func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) {\n\t\t\tmp := p.AsValueOf(ft)\n\t\t\tif mp.Elem().IsNil() {\n\t\t\t\tmp.Elem().Set(reflect.MakeMap(mapi.goType))\n\t\t\t}\n\t\t\tif f.mi == nil {\n\t\t\t\treturn consumeMap(b, mp.Elem(), wtyp, mapi, f, opts)\n\t\t\t} else {\n\t\t\t\treturn consumeMapOfMessage(b, mp.Elem(), wtyp, mapi, f, opts)\n\t\t\t}\n\t\t},\n\t}\n\tswitch valField.Kind() {\n\tcase protoreflect.MessageKind:\n\t\tfuncs.merge = mergeMapOfMessage\n\tcase protoreflect.BytesKind:\n\t\tfuncs.merge = mergeMapOfBytes\n\tdefault:\n\t\tfuncs.merge = mergeMap\n\t}\n\tif valFuncs.isInit != nil {\n\t\tfuncs.isInit = func(p pointer, f *coderFieldInfo) error {\n\t\t\treturn isInitMap(p.AsValueOf(ft).Elem(), mapi, f)\n\t\t}\n\t}\n\treturn valueMessage, funcs\n}\n\nconst (\n\tmapKeyTagSize = 1 // field 1, tag size 1.\n\tmapValTagSize = 1 // field 2, tag size 2.\n)\n\nfunc sizeMap(mapv reflect.Value, mapi *mapInfo, f *coderFieldInfo, opts marshalOptions) int {\n\tif mapv.Len() == 0 {\n\t\treturn 0\n\t}\n\tn := 0\n\titer := mapv.MapRange()\n\tfor iter.Next() {\n\t\tkey := mapi.conv.keyConv.PBValueOf(iter.Key()).MapKey()\n\t\tkeySize := mapi.keyFuncs.size(key.Value(), mapKeyTagSize, opts)\n\t\tvar valSize int\n\t\tvalue := mapi.conv.valConv.PBValueOf(iter.Value())\n\t\tif f.mi == nil {\n\t\t\tvalSize = mapi.valFuncs.size(value, mapValTagSize, opts)\n\t\t} else {\n\t\t\tp := pointerOfValue(iter.Value())\n\t\t\tvalSize += mapValTagSize\n\t\t\tvalSize += protowire.SizeBytes(f.mi.sizePointer(p, opts))\n\t\t}\n\t\tn += f.tagsize + protowire.SizeBytes(keySize+valSize)\n\t}\n\treturn n\n}\n\nfunc consumeMap(b []byte, mapv reflect.Value, wtyp protowire.Type, mapi *mapInfo, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.BytesType {\n\t\treturn out, errUnknown\n\t}\n\tb, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tvar (\n\t\tkey = mapi.keyZero\n\t\tval = mapi.conv.valConv.New()\n\t)\n\tfor len(b) > 0 {\n\t\tnum, wtyp, n := protowire.ConsumeTag(b)\n\t\tif n < 0 {\n\t\t\treturn out, errDecode\n\t\t}\n\t\tif num > protowire.MaxValidNumber {\n\t\t\treturn out, errDecode\n\t\t}\n\t\tb = b[n:]\n\t\terr := errUnknown\n\t\tswitch num {\n\t\tcase genid.MapEntry_Key_field_number:\n\t\t\tvar v protoreflect.Value\n\t\t\tvar o unmarshalOutput\n\t\t\tv, o, err = mapi.keyFuncs.unmarshal(b, key, num, wtyp, opts)\n\t\t\tif err != nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tkey = v\n\t\t\tn = o.n\n\t\tcase genid.MapEntry_Value_field_number:\n\t\t\tvar v protoreflect.Value\n\t\t\tvar o unmarshalOutput\n\t\t\tv, o, err = mapi.valFuncs.unmarshal(b, val, num, wtyp, opts)\n\t\t\tif err != nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tval = v\n\t\t\tn = o.n\n\t\t}\n\t\tif err == errUnknown {\n\t\t\tn = protowire.ConsumeFieldValue(num, wtyp, b)\n\t\t\tif n < 0 {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t} else if err != nil {\n\t\t\treturn out, err\n\t\t}\n\t\tb = b[n:]\n\t}\n\tmapv.SetMapIndex(mapi.conv.keyConv.GoValueOf(key), mapi.conv.valConv.GoValueOf(val))\n\tout.n = n\n\treturn out, nil\n}\n\nfunc consumeMapOfMessage(b []byte, mapv reflect.Value, wtyp protowire.Type, mapi *mapInfo, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.BytesType {\n\t\treturn out, errUnknown\n\t}\n\tb, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tvar (\n\t\tkey = mapi.keyZero\n\t\tval = reflect.New(f.mi.GoReflectType.Elem())\n\t)\n\tfor len(b) > 0 {\n\t\tnum, wtyp, n := protowire.ConsumeTag(b)\n\t\tif n < 0 {\n\t\t\treturn out, errDecode\n\t\t}\n\t\tif num > protowire.MaxValidNumber {\n\t\t\treturn out, errDecode\n\t\t}\n\t\tb = b[n:]\n\t\terr := errUnknown\n\t\tswitch num {\n\t\tcase 1:\n\t\t\tvar v protoreflect.Value\n\t\t\tvar o unmarshalOutput\n\t\t\tv, o, err = mapi.keyFuncs.unmarshal(b, key, num, wtyp, opts)\n\t\t\tif err != nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tkey = v\n\t\t\tn = o.n\n\t\tcase 2:\n\t\t\tif wtyp != protowire.BytesType {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar v []byte\n\t\t\tv, n = protowire.ConsumeBytes(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t\tvar o unmarshalOutput\n\t\t\to, err = f.mi.unmarshalPointer(v, pointerOfValue(val), 0, opts)\n\t\t\tif o.initialized {\n\t\t\t\t// Consider this map item initialized so long as we see\n\t\t\t\t// an initialized value.\n\t\t\t\tout.initialized = true\n\t\t\t}\n\t\t}\n\t\tif err == errUnknown {\n\t\t\tn = protowire.ConsumeFieldValue(num, wtyp, b)\n\t\t\tif n < 0 {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t} else if err != nil {\n\t\t\treturn out, err\n\t\t}\n\t\tb = b[n:]\n\t}\n\tmapv.SetMapIndex(mapi.conv.keyConv.GoValueOf(key), val)\n\tout.n = n\n\treturn out, nil\n}\n\nfunc appendMapItem(b []byte, keyrv, valrv reflect.Value, mapi *mapInfo, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tif f.mi == nil {\n\t\tkey := mapi.conv.keyConv.PBValueOf(keyrv).MapKey()\n\t\tval := mapi.conv.valConv.PBValueOf(valrv)\n\t\tsize := 0\n\t\tsize += mapi.keyFuncs.size(key.Value(), mapKeyTagSize, opts)\n\t\tsize += mapi.valFuncs.size(val, mapValTagSize, opts)\n\t\tb = protowire.AppendVarint(b, uint64(size))\n\t\tbefore := len(b)\n\t\tb, err := mapi.keyFuncs.marshal(b, key.Value(), mapi.keyWiretag, opts)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tb, err = mapi.valFuncs.marshal(b, val, mapi.valWiretag, opts)\n\t\tif measuredSize := len(b) - before; size != measuredSize && err == nil {\n\t\t\treturn nil, errors.MismatchedSizeCalculation(size, measuredSize)\n\t\t}\n\t\treturn b, err\n\t} else {\n\t\tkey := mapi.conv.keyConv.PBValueOf(keyrv).MapKey()\n\t\tval := pointerOfValue(valrv)\n\t\tvalSize := f.mi.sizePointer(val, opts)\n\t\tsize := 0\n\t\tsize += mapi.keyFuncs.size(key.Value(), mapKeyTagSize, opts)\n\t\tsize += mapValTagSize + protowire.SizeBytes(valSize)\n\t\tb = protowire.AppendVarint(b, uint64(size))\n\t\tb, err := mapi.keyFuncs.marshal(b, key.Value(), mapi.keyWiretag, opts)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tb = protowire.AppendVarint(b, mapi.valWiretag)\n\t\tb = protowire.AppendVarint(b, uint64(valSize))\n\t\tbefore := len(b)\n\t\tb, err = f.mi.marshalAppendPointer(b, val, opts)\n\t\tif measuredSize := len(b) - before; valSize != measuredSize && err == nil {\n\t\t\treturn nil, errors.MismatchedSizeCalculation(valSize, measuredSize)\n\t\t}\n\t\treturn b, err\n\t}\n}\n\nfunc appendMap(b []byte, mapv reflect.Value, mapi *mapInfo, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tif mapv.Len() == 0 {\n\t\treturn b, nil\n\t}\n\tif opts.Deterministic() {\n\t\treturn appendMapDeterministic(b, mapv, mapi, f, opts)\n\t}\n\titer := mapv.MapRange()\n\tfor iter.Next() {\n\t\tvar err error\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tb, err = appendMapItem(b, iter.Key(), iter.Value(), mapi, f, opts)\n\t\tif err != nil {\n\t\t\treturn b, err\n\t\t}\n\t}\n\treturn b, nil\n}\n\nfunc appendMapDeterministic(b []byte, mapv reflect.Value, mapi *mapInfo, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tkeys := mapv.MapKeys()\n\tsort.Slice(keys, func(i, j int) bool {\n\t\tswitch keys[i].Kind() {\n\t\tcase reflect.Bool:\n\t\t\treturn !keys[i].Bool() && keys[j].Bool()\n\t\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\t\treturn keys[i].Int() < keys[j].Int()\n\t\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\t\treturn keys[i].Uint() < keys[j].Uint()\n\t\tcase reflect.Float32, reflect.Float64:\n\t\t\treturn keys[i].Float() < keys[j].Float()\n\t\tcase reflect.String:\n\t\t\treturn keys[i].String() < keys[j].String()\n\t\tdefault:\n\t\t\tpanic(\"invalid kind: \" + keys[i].Kind().String())\n\t\t}\n\t})\n\tfor _, key := range keys {\n\t\tvar err error\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tb, err = appendMapItem(b, key, mapv.MapIndex(key), mapi, f, opts)\n\t\tif err != nil {\n\t\t\treturn b, err\n\t\t}\n\t}\n\treturn b, nil\n}\n\nfunc isInitMap(mapv reflect.Value, mapi *mapInfo, f *coderFieldInfo) error {\n\tif mi := f.mi; mi != nil {\n\t\tmi.init()\n\t\tif !mi.needsInitCheck {\n\t\t\treturn nil\n\t\t}\n\t\titer := mapv.MapRange()\n\t\tfor iter.Next() {\n\t\t\tval := pointerOfValue(iter.Value())\n\t\t\tif err := mi.checkInitializedPointer(val); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t} else {\n\t\titer := mapv.MapRange()\n\t\tfor iter.Next() {\n\t\t\tval := mapi.conv.valConv.PBValueOf(iter.Value())\n\t\t\tif err := mapi.valFuncs.isInit(val); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc mergeMap(dst, src pointer, f *coderFieldInfo, opts mergeOptions) {\n\tdstm := dst.AsValueOf(f.ft).Elem()\n\tsrcm := src.AsValueOf(f.ft).Elem()\n\tif srcm.Len() == 0 {\n\t\treturn\n\t}\n\tif dstm.IsNil() {\n\t\tdstm.Set(reflect.MakeMap(f.ft))\n\t}\n\titer := srcm.MapRange()\n\tfor iter.Next() {\n\t\tdstm.SetMapIndex(iter.Key(), iter.Value())\n\t}\n}\n\nfunc mergeMapOfBytes(dst, src pointer, f *coderFieldInfo, opts mergeOptions) {\n\tdstm := dst.AsValueOf(f.ft).Elem()\n\tsrcm := src.AsValueOf(f.ft).Elem()\n\tif srcm.Len() == 0 {\n\t\treturn\n\t}\n\tif dstm.IsNil() {\n\t\tdstm.Set(reflect.MakeMap(f.ft))\n\t}\n\titer := srcm.MapRange()\n\tfor iter.Next() {\n\t\tdstm.SetMapIndex(iter.Key(), reflect.ValueOf(append(emptyBuf[:], iter.Value().Bytes()...)))\n\t}\n}\n\nfunc mergeMapOfMessage(dst, src pointer, f *coderFieldInfo, opts mergeOptions) {\n\tdstm := dst.AsValueOf(f.ft).Elem()\n\tsrcm := src.AsValueOf(f.ft).Elem()\n\tif srcm.Len() == 0 {\n\t\treturn\n\t}\n\tif dstm.IsNil() {\n\t\tdstm.Set(reflect.MakeMap(f.ft))\n\t}\n\titer := srcm.MapRange()\n\tfor iter.Next() {\n\t\tval := reflect.New(f.ft.Elem().Elem())\n\t\tif f.mi != nil {\n\t\t\tf.mi.mergePointer(pointerOfValue(val), pointerOfValue(iter.Value()), opts)\n\t\t} else {\n\t\t\topts.Merge(asMessage(val), asMessage(iter.Value()))\n\t\t}\n\t\tdstm.SetMapIndex(iter.Key(), val)\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/codec_message.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"sort\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/encoding/messageset\"\n\t\"google.golang.org/protobuf/internal/order\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n)\n\n// coderMessageInfo contains per-message information used by the fast-path functions.\n// This is a different type from MessageInfo to keep MessageInfo as general-purpose as\n// possible.\ntype coderMessageInfo struct {\n\tmethods protoiface.Methods\n\n\torderedCoderFields []*coderFieldInfo\n\tdenseCoderFields   []*coderFieldInfo\n\tcoderFields        map[protowire.Number]*coderFieldInfo\n\tsizecacheOffset    offset\n\tunknownOffset      offset\n\tunknownPtrKind     bool\n\textensionOffset    offset\n\tneedsInitCheck     bool\n\tisMessageSet       bool\n\tnumRequiredFields  uint8\n\n\tlazyOffset     offset\n\tpresenceOffset offset\n\tpresenceSize   presenceSize\n}\n\ntype coderFieldInfo struct {\n\tfuncs      pointerCoderFuncs // fast-path per-field functions\n\tmi         *MessageInfo      // field's message\n\tft         reflect.Type\n\tvalidation validationInfo           // information used by message validation\n\tnum        protoreflect.FieldNumber // field number\n\toffset     offset                   // struct field offset\n\twiretag    uint64                   // field tag (number + wire type)\n\ttagsize    int                      // size of the varint-encoded tag\n\tisPointer  bool                     // true if IsNil may be called on the struct field\n\tisRequired bool                     // true if field is required\n\n\tisLazy        bool\n\tpresenceIndex uint32\n}\n\nconst noPresence = 0xffffffff\n\nfunc (mi *MessageInfo) makeCoderMethods(t reflect.Type, si structInfo) {\n\tmi.sizecacheOffset = invalidOffset\n\tmi.unknownOffset = invalidOffset\n\tmi.extensionOffset = invalidOffset\n\tmi.lazyOffset = invalidOffset\n\tmi.presenceOffset = si.presenceOffset\n\n\tif si.sizecacheOffset.IsValid() && si.sizecacheType == sizecacheType {\n\t\tmi.sizecacheOffset = si.sizecacheOffset\n\t}\n\tif si.unknownOffset.IsValid() && (si.unknownType == unknownFieldsAType || si.unknownType == unknownFieldsBType) {\n\t\tmi.unknownOffset = si.unknownOffset\n\t\tmi.unknownPtrKind = si.unknownType.Kind() == reflect.Ptr\n\t}\n\tif si.extensionOffset.IsValid() && si.extensionType == extensionFieldsType {\n\t\tmi.extensionOffset = si.extensionOffset\n\t}\n\n\tmi.coderFields = make(map[protowire.Number]*coderFieldInfo)\n\tfields := mi.Desc.Fields()\n\tpreallocFields := make([]coderFieldInfo, fields.Len())\n\tfor i := 0; i < fields.Len(); i++ {\n\t\tfd := fields.Get(i)\n\n\t\tfs := si.fieldsByNumber[fd.Number()]\n\t\tisOneof := fd.ContainingOneof() != nil && !fd.ContainingOneof().IsSynthetic()\n\t\tif isOneof {\n\t\t\tfs = si.oneofsByName[fd.ContainingOneof().Name()]\n\t\t}\n\t\tft := fs.Type\n\t\tvar wiretag uint64\n\t\tif !fd.IsPacked() {\n\t\t\twiretag = protowire.EncodeTag(fd.Number(), wireTypes[fd.Kind()])\n\t\t} else {\n\t\t\twiretag = protowire.EncodeTag(fd.Number(), protowire.BytesType)\n\t\t}\n\t\tvar fieldOffset offset\n\t\tvar funcs pointerCoderFuncs\n\t\tvar childMessage *MessageInfo\n\t\tswitch {\n\t\tcase ft == nil:\n\t\t\t// This never occurs for generated message types.\n\t\t\t// It implies that a hand-crafted type has missing Go fields\n\t\t\t// for specific protobuf message fields.\n\t\t\tfuncs = pointerCoderFuncs{\n\t\t\t\tsize: func(p pointer, f *coderFieldInfo, opts marshalOptions) int {\n\t\t\t\t\treturn 0\n\t\t\t\t},\n\t\t\t\tmarshal: func(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\t\t\t\t\treturn nil, nil\n\t\t\t\t},\n\t\t\t\tunmarshal: func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) {\n\t\t\t\t\tpanic(\"missing Go struct field for \" + string(fd.FullName()))\n\t\t\t\t},\n\t\t\t\tisInit: func(p pointer, f *coderFieldInfo) error {\n\t\t\t\t\tpanic(\"missing Go struct field for \" + string(fd.FullName()))\n\t\t\t\t},\n\t\t\t\tmerge: func(dst, src pointer, f *coderFieldInfo, opts mergeOptions) {\n\t\t\t\t\tpanic(\"missing Go struct field for \" + string(fd.FullName()))\n\t\t\t\t},\n\t\t\t}\n\t\tcase isOneof:\n\t\t\tfieldOffset = offsetOf(fs)\n\t\tdefault:\n\t\t\tfieldOffset = offsetOf(fs)\n\t\t\tchildMessage, funcs = fieldCoder(fd, ft)\n\t\t}\n\t\tcf := &preallocFields[i]\n\t\t*cf = coderFieldInfo{\n\t\t\tnum:        fd.Number(),\n\t\t\toffset:     fieldOffset,\n\t\t\twiretag:    wiretag,\n\t\t\tft:         ft,\n\t\t\ttagsize:    protowire.SizeVarint(wiretag),\n\t\t\tfuncs:      funcs,\n\t\t\tmi:         childMessage,\n\t\t\tvalidation: newFieldValidationInfo(mi, si, fd, ft),\n\t\t\tisPointer:  fd.Cardinality() == protoreflect.Repeated || fd.HasPresence(),\n\t\t\tisRequired: fd.Cardinality() == protoreflect.Required,\n\n\t\t\tpresenceIndex: noPresence,\n\t\t}\n\t\tmi.orderedCoderFields = append(mi.orderedCoderFields, cf)\n\t\tmi.coderFields[cf.num] = cf\n\t}\n\tfor i, oneofs := 0, mi.Desc.Oneofs(); i < oneofs.Len(); i++ {\n\t\tif od := oneofs.Get(i); !od.IsSynthetic() {\n\t\t\tmi.initOneofFieldCoders(od, si)\n\t\t}\n\t}\n\tif messageset.IsMessageSet(mi.Desc) {\n\t\tif !mi.extensionOffset.IsValid() {\n\t\t\tpanic(fmt.Sprintf(\"%v: MessageSet with no extensions field\", mi.Desc.FullName()))\n\t\t}\n\t\tif !mi.unknownOffset.IsValid() {\n\t\t\tpanic(fmt.Sprintf(\"%v: MessageSet with no unknown field\", mi.Desc.FullName()))\n\t\t}\n\t\tmi.isMessageSet = true\n\t}\n\tsort.Slice(mi.orderedCoderFields, func(i, j int) bool {\n\t\treturn mi.orderedCoderFields[i].num < mi.orderedCoderFields[j].num\n\t})\n\n\tvar maxDense protoreflect.FieldNumber\n\tfor _, cf := range mi.orderedCoderFields {\n\t\tif cf.num >= 16 && cf.num >= 2*maxDense {\n\t\t\tbreak\n\t\t}\n\t\tmaxDense = cf.num\n\t}\n\tmi.denseCoderFields = make([]*coderFieldInfo, maxDense+1)\n\tfor _, cf := range mi.orderedCoderFields {\n\t\tif int(cf.num) >= len(mi.denseCoderFields) {\n\t\t\tbreak\n\t\t}\n\t\tmi.denseCoderFields[cf.num] = cf\n\t}\n\n\t// To preserve compatibility with historic wire output, marshal oneofs last.\n\tif mi.Desc.Oneofs().Len() > 0 {\n\t\tsort.Slice(mi.orderedCoderFields, func(i, j int) bool {\n\t\t\tfi := fields.ByNumber(mi.orderedCoderFields[i].num)\n\t\t\tfj := fields.ByNumber(mi.orderedCoderFields[j].num)\n\t\t\treturn order.LegacyFieldOrder(fi, fj)\n\t\t})\n\t}\n\n\tmi.needsInitCheck = needsInitCheck(mi.Desc)\n\tif mi.methods.Marshal == nil && mi.methods.Size == nil {\n\t\tmi.methods.Flags |= protoiface.SupportMarshalDeterministic\n\t\tmi.methods.Marshal = mi.marshal\n\t\tmi.methods.Size = mi.size\n\t}\n\tif mi.methods.Unmarshal == nil {\n\t\tmi.methods.Flags |= protoiface.SupportUnmarshalDiscardUnknown\n\t\tmi.methods.Unmarshal = mi.unmarshal\n\t}\n\tif mi.methods.CheckInitialized == nil {\n\t\tmi.methods.CheckInitialized = mi.checkInitialized\n\t}\n\tif mi.methods.Merge == nil {\n\t\tmi.methods.Merge = mi.merge\n\t}\n\tif mi.methods.Equal == nil {\n\t\tmi.methods.Equal = equal\n\t}\n}\n\n// getUnknownBytes returns a *[]byte for the unknown fields.\n// It is the caller's responsibility to check whether the pointer is nil.\n// This function is specially designed to be inlineable.\nfunc (mi *MessageInfo) getUnknownBytes(p pointer) *[]byte {\n\tif mi.unknownPtrKind {\n\t\treturn *p.Apply(mi.unknownOffset).BytesPtr()\n\t} else {\n\t\treturn p.Apply(mi.unknownOffset).Bytes()\n\t}\n}\n\n// mutableUnknownBytes returns a *[]byte for the unknown fields.\n// The returned pointer is guaranteed to not be nil.\nfunc (mi *MessageInfo) mutableUnknownBytes(p pointer) *[]byte {\n\tif mi.unknownPtrKind {\n\t\tbp := p.Apply(mi.unknownOffset).BytesPtr()\n\t\tif *bp == nil {\n\t\t\t*bp = new([]byte)\n\t\t}\n\t\treturn *bp\n\t} else {\n\t\treturn p.Apply(mi.unknownOffset).Bytes()\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/codec_message_opaque.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"sort\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/encoding/messageset\"\n\t\"google.golang.org/protobuf/internal/filedesc\"\n\t\"google.golang.org/protobuf/internal/order\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\tpiface \"google.golang.org/protobuf/runtime/protoiface\"\n)\n\nfunc (mi *MessageInfo) makeOpaqueCoderMethods(t reflect.Type, si opaqueStructInfo) {\n\tmi.sizecacheOffset = si.sizecacheOffset\n\tmi.unknownOffset = si.unknownOffset\n\tmi.unknownPtrKind = si.unknownType.Kind() == reflect.Ptr\n\tmi.extensionOffset = si.extensionOffset\n\tmi.lazyOffset = si.lazyOffset\n\tmi.presenceOffset = si.presenceOffset\n\n\tmi.coderFields = make(map[protowire.Number]*coderFieldInfo)\n\tfields := mi.Desc.Fields()\n\tfor i := 0; i < fields.Len(); i++ {\n\t\tfd := fields.Get(i)\n\n\t\tfs := si.fieldsByNumber[fd.Number()]\n\t\tif fd.ContainingOneof() != nil && !fd.ContainingOneof().IsSynthetic() {\n\t\t\tfs = si.oneofsByName[fd.ContainingOneof().Name()]\n\t\t}\n\t\tft := fs.Type\n\t\tvar wiretag uint64\n\t\tif !fd.IsPacked() {\n\t\t\twiretag = protowire.EncodeTag(fd.Number(), wireTypes[fd.Kind()])\n\t\t} else {\n\t\t\twiretag = protowire.EncodeTag(fd.Number(), protowire.BytesType)\n\t\t}\n\t\tvar fieldOffset offset\n\t\tvar funcs pointerCoderFuncs\n\t\tvar childMessage *MessageInfo\n\t\tswitch {\n\t\tcase fd.ContainingOneof() != nil && !fd.ContainingOneof().IsSynthetic():\n\t\t\tfieldOffset = offsetOf(fs)\n\t\tcase fd.Message() != nil && !fd.IsMap():\n\t\t\tfieldOffset = offsetOf(fs)\n\t\t\tif fd.IsList() {\n\t\t\t\tchildMessage, funcs = makeOpaqueRepeatedMessageFieldCoder(fd, ft)\n\t\t\t} else {\n\t\t\t\tchildMessage, funcs = makeOpaqueMessageFieldCoder(fd, ft)\n\t\t\t}\n\t\tdefault:\n\t\t\tfieldOffset = offsetOf(fs)\n\t\t\tchildMessage, funcs = fieldCoder(fd, ft)\n\t\t}\n\t\tcf := &coderFieldInfo{\n\t\t\tnum:        fd.Number(),\n\t\t\toffset:     fieldOffset,\n\t\t\twiretag:    wiretag,\n\t\t\tft:         ft,\n\t\t\ttagsize:    protowire.SizeVarint(wiretag),\n\t\t\tfuncs:      funcs,\n\t\t\tmi:         childMessage,\n\t\t\tvalidation: newFieldValidationInfo(mi, si.structInfo, fd, ft),\n\t\t\tisPointer: (fd.Cardinality() == protoreflect.Repeated ||\n\t\t\t\tfd.Kind() == protoreflect.MessageKind ||\n\t\t\t\tfd.Kind() == protoreflect.GroupKind),\n\t\t\tisRequired:    fd.Cardinality() == protoreflect.Required,\n\t\t\tpresenceIndex: noPresence,\n\t\t}\n\n\t\t// TODO: Use presence for all fields.\n\t\t//\n\t\t// In some cases, such as maps, presence means only \"might be set\" rather\n\t\t// than \"is definitely set\", but every field should have a presence bit to\n\t\t// permit us to skip over definitely-unset fields at marshal time.\n\n\t\tvar hasPresence bool\n\t\thasPresence, cf.isLazy = filedesc.UsePresenceForField(fd)\n\n\t\tif hasPresence {\n\t\t\tcf.presenceIndex, mi.presenceSize = presenceIndex(mi.Desc, fd)\n\t\t}\n\n\t\tmi.orderedCoderFields = append(mi.orderedCoderFields, cf)\n\t\tmi.coderFields[cf.num] = cf\n\t}\n\tfor i, oneofs := 0, mi.Desc.Oneofs(); i < oneofs.Len(); i++ {\n\t\tif od := oneofs.Get(i); !od.IsSynthetic() {\n\t\t\tmi.initOneofFieldCoders(od, si.structInfo)\n\t\t}\n\t}\n\tif messageset.IsMessageSet(mi.Desc) {\n\t\tif !mi.extensionOffset.IsValid() {\n\t\t\tpanic(fmt.Sprintf(\"%v: MessageSet with no extensions field\", mi.Desc.FullName()))\n\t\t}\n\t\tif !mi.unknownOffset.IsValid() {\n\t\t\tpanic(fmt.Sprintf(\"%v: MessageSet with no unknown field\", mi.Desc.FullName()))\n\t\t}\n\t\tmi.isMessageSet = true\n\t}\n\tsort.Slice(mi.orderedCoderFields, func(i, j int) bool {\n\t\treturn mi.orderedCoderFields[i].num < mi.orderedCoderFields[j].num\n\t})\n\n\tvar maxDense protoreflect.FieldNumber\n\tfor _, cf := range mi.orderedCoderFields {\n\t\tif cf.num >= 16 && cf.num >= 2*maxDense {\n\t\t\tbreak\n\t\t}\n\t\tmaxDense = cf.num\n\t}\n\tmi.denseCoderFields = make([]*coderFieldInfo, maxDense+1)\n\tfor _, cf := range mi.orderedCoderFields {\n\t\tif int(cf.num) > len(mi.denseCoderFields) {\n\t\t\tbreak\n\t\t}\n\t\tmi.denseCoderFields[cf.num] = cf\n\t}\n\n\t// To preserve compatibility with historic wire output, marshal oneofs last.\n\tif mi.Desc.Oneofs().Len() > 0 {\n\t\tsort.Slice(mi.orderedCoderFields, func(i, j int) bool {\n\t\t\tfi := fields.ByNumber(mi.orderedCoderFields[i].num)\n\t\t\tfj := fields.ByNumber(mi.orderedCoderFields[j].num)\n\t\t\treturn order.LegacyFieldOrder(fi, fj)\n\t\t})\n\t}\n\n\tmi.needsInitCheck = needsInitCheck(mi.Desc)\n\tif mi.methods.Marshal == nil && mi.methods.Size == nil {\n\t\tmi.methods.Flags |= piface.SupportMarshalDeterministic\n\t\tmi.methods.Marshal = mi.marshal\n\t\tmi.methods.Size = mi.size\n\t}\n\tif mi.methods.Unmarshal == nil {\n\t\tmi.methods.Flags |= piface.SupportUnmarshalDiscardUnknown\n\t\tmi.methods.Unmarshal = mi.unmarshal\n\t}\n\tif mi.methods.CheckInitialized == nil {\n\t\tmi.methods.CheckInitialized = mi.checkInitialized\n\t}\n\tif mi.methods.Merge == nil {\n\t\tmi.methods.Merge = mi.merge\n\t}\n\tif mi.methods.Equal == nil {\n\t\tmi.methods.Equal = equal\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/codec_messageset.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"sort\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/encoding/messageset\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/internal/flags\"\n)\n\nfunc sizeMessageSet(mi *MessageInfo, p pointer, opts marshalOptions) (size int) {\n\tif !flags.ProtoLegacy {\n\t\treturn 0\n\t}\n\n\text := *p.Apply(mi.extensionOffset).Extensions()\n\tfor _, x := range ext {\n\t\txi := getExtensionFieldInfo(x.Type())\n\t\tif xi.funcs.size == nil {\n\t\t\tcontinue\n\t\t}\n\t\tnum, _ := protowire.DecodeTag(xi.wiretag)\n\t\tsize += messageset.SizeField(num)\n\t\tif fullyLazyExtensions(opts) {\n\t\t\t// Don't expand the extension, instead use the buffer to calculate size\n\t\t\tif lb := x.lazyBuffer(); lb != nil {\n\t\t\t\t// We got hold of the buffer, so it's still lazy.\n\t\t\t\t// Don't count the tag size in the extension buffer, it's already added.\n\t\t\t\tsize += protowire.SizeTag(messageset.FieldMessage) + len(lb) - xi.tagsize\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\t\tsize += xi.funcs.size(x.Value(), protowire.SizeTag(messageset.FieldMessage), opts)\n\t}\n\n\tif u := mi.getUnknownBytes(p); u != nil {\n\t\tsize += messageset.SizeUnknown(*u)\n\t}\n\n\treturn size\n}\n\nfunc marshalMessageSet(mi *MessageInfo, b []byte, p pointer, opts marshalOptions) ([]byte, error) {\n\tif !flags.ProtoLegacy {\n\t\treturn b, errors.New(\"no support for message_set_wire_format\")\n\t}\n\n\text := *p.Apply(mi.extensionOffset).Extensions()\n\tswitch len(ext) {\n\tcase 0:\n\tcase 1:\n\t\t// Fast-path for one extension: Don't bother sorting the keys.\n\t\tfor _, x := range ext {\n\t\t\tvar err error\n\t\t\tb, err = marshalMessageSetField(mi, b, x, opts)\n\t\t\tif err != nil {\n\t\t\t\treturn b, err\n\t\t\t}\n\t\t}\n\tdefault:\n\t\t// Sort the keys to provide a deterministic encoding.\n\t\t// Not sure this is required, but the old code does it.\n\t\tkeys := make([]int, 0, len(ext))\n\t\tfor k := range ext {\n\t\t\tkeys = append(keys, int(k))\n\t\t}\n\t\tsort.Ints(keys)\n\t\tfor _, k := range keys {\n\t\t\tvar err error\n\t\t\tb, err = marshalMessageSetField(mi, b, ext[int32(k)], opts)\n\t\t\tif err != nil {\n\t\t\t\treturn b, err\n\t\t\t}\n\t\t}\n\t}\n\n\tif u := mi.getUnknownBytes(p); u != nil {\n\t\tvar err error\n\t\tb, err = messageset.AppendUnknown(b, *u)\n\t\tif err != nil {\n\t\t\treturn b, err\n\t\t}\n\t}\n\n\treturn b, nil\n}\n\nfunc marshalMessageSetField(mi *MessageInfo, b []byte, x ExtensionField, opts marshalOptions) ([]byte, error) {\n\txi := getExtensionFieldInfo(x.Type())\n\tnum, _ := protowire.DecodeTag(xi.wiretag)\n\tb = messageset.AppendFieldStart(b, num)\n\n\tif fullyLazyExtensions(opts) {\n\t\t// Don't expand the extension if it's still in wire format, instead use the buffer content.\n\t\tif lb := x.lazyBuffer(); lb != nil {\n\t\t\t// The tag inside the lazy buffer is a different tag (the extension\n\t\t\t// number), but what we need here is the tag for FieldMessage:\n\t\t\tb = protowire.AppendVarint(b, protowire.EncodeTag(messageset.FieldMessage, protowire.BytesType))\n\t\t\tb = append(b, lb[xi.tagsize:]...)\n\t\t\tb = messageset.AppendFieldEnd(b)\n\t\t\treturn b, nil\n\t\t}\n\t}\n\n\tb, err := xi.funcs.marshal(b, x.Value(), protowire.EncodeTag(messageset.FieldMessage, protowire.BytesType), opts)\n\tif err != nil {\n\t\treturn b, err\n\t}\n\tb = messageset.AppendFieldEnd(b)\n\treturn b, nil\n}\n\nfunc unmarshalMessageSet(mi *MessageInfo, b []byte, p pointer, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif !flags.ProtoLegacy {\n\t\treturn out, errors.New(\"no support for message_set_wire_format\")\n\t}\n\n\tep := p.Apply(mi.extensionOffset).Extensions()\n\tif *ep == nil {\n\t\t*ep = make(map[int32]ExtensionField)\n\t}\n\text := *ep\n\tinitialized := true\n\terr = messageset.Unmarshal(b, true, func(num protowire.Number, v []byte) error {\n\t\to, err := mi.unmarshalExtension(v, num, protowire.BytesType, ext, opts)\n\t\tif err == errUnknown {\n\t\t\tu := mi.mutableUnknownBytes(p)\n\t\t\t*u = protowire.AppendTag(*u, num, protowire.BytesType)\n\t\t\t*u = append(*u, v...)\n\t\t\treturn nil\n\t\t}\n\t\tif !o.initialized {\n\t\t\tinitialized = false\n\t\t}\n\t\treturn err\n\t})\n\tout.n = len(b)\n\tout.initialized = initialized\n\treturn out, err\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/codec_tables.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/strs\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\n// pointerCoderFuncs is a set of pointer encoding functions.\ntype pointerCoderFuncs struct {\n\tmi        *MessageInfo\n\tsize      func(p pointer, f *coderFieldInfo, opts marshalOptions) int\n\tmarshal   func(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error)\n\tunmarshal func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error)\n\tisInit    func(p pointer, f *coderFieldInfo) error\n\tmerge     func(dst, src pointer, f *coderFieldInfo, opts mergeOptions)\n}\n\n// valueCoderFuncs is a set of protoreflect.Value encoding functions.\ntype valueCoderFuncs struct {\n\tsize      func(v protoreflect.Value, tagsize int, opts marshalOptions) int\n\tmarshal   func(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error)\n\tunmarshal func(b []byte, v protoreflect.Value, num protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (protoreflect.Value, unmarshalOutput, error)\n\tisInit    func(v protoreflect.Value) error\n\tmerge     func(dst, src protoreflect.Value, opts mergeOptions) protoreflect.Value\n}\n\n// fieldCoder returns pointer functions for a field, used for operating on\n// struct fields.\nfunc fieldCoder(fd protoreflect.FieldDescriptor, ft reflect.Type) (*MessageInfo, pointerCoderFuncs) {\n\tswitch {\n\tcase fd.IsMap():\n\t\treturn encoderFuncsForMap(fd, ft)\n\tcase fd.Cardinality() == protoreflect.Repeated && !fd.IsPacked():\n\t\t// Repeated fields (not packed).\n\t\tif ft.Kind() != reflect.Slice {\n\t\t\tbreak\n\t\t}\n\t\tft := ft.Elem()\n\t\tswitch fd.Kind() {\n\t\tcase protoreflect.BoolKind:\n\t\t\tif ft.Kind() == reflect.Bool {\n\t\t\t\treturn nil, coderBoolSlice\n\t\t\t}\n\t\tcase protoreflect.EnumKind:\n\t\t\tif ft.Kind() == reflect.Int32 {\n\t\t\t\treturn nil, coderEnumSlice\n\t\t\t}\n\t\tcase protoreflect.Int32Kind:\n\t\t\tif ft.Kind() == reflect.Int32 {\n\t\t\t\treturn nil, coderInt32Slice\n\t\t\t}\n\t\tcase protoreflect.Sint32Kind:\n\t\t\tif ft.Kind() == reflect.Int32 {\n\t\t\t\treturn nil, coderSint32Slice\n\t\t\t}\n\t\tcase protoreflect.Uint32Kind:\n\t\t\tif ft.Kind() == reflect.Uint32 {\n\t\t\t\treturn nil, coderUint32Slice\n\t\t\t}\n\t\tcase protoreflect.Int64Kind:\n\t\t\tif ft.Kind() == reflect.Int64 {\n\t\t\t\treturn nil, coderInt64Slice\n\t\t\t}\n\t\tcase protoreflect.Sint64Kind:\n\t\t\tif ft.Kind() == reflect.Int64 {\n\t\t\t\treturn nil, coderSint64Slice\n\t\t\t}\n\t\tcase protoreflect.Uint64Kind:\n\t\t\tif ft.Kind() == reflect.Uint64 {\n\t\t\t\treturn nil, coderUint64Slice\n\t\t\t}\n\t\tcase protoreflect.Sfixed32Kind:\n\t\t\tif ft.Kind() == reflect.Int32 {\n\t\t\t\treturn nil, coderSfixed32Slice\n\t\t\t}\n\t\tcase protoreflect.Fixed32Kind:\n\t\t\tif ft.Kind() == reflect.Uint32 {\n\t\t\t\treturn nil, coderFixed32Slice\n\t\t\t}\n\t\tcase protoreflect.FloatKind:\n\t\t\tif ft.Kind() == reflect.Float32 {\n\t\t\t\treturn nil, coderFloatSlice\n\t\t\t}\n\t\tcase protoreflect.Sfixed64Kind:\n\t\t\tif ft.Kind() == reflect.Int64 {\n\t\t\t\treturn nil, coderSfixed64Slice\n\t\t\t}\n\t\tcase protoreflect.Fixed64Kind:\n\t\t\tif ft.Kind() == reflect.Uint64 {\n\t\t\t\treturn nil, coderFixed64Slice\n\t\t\t}\n\t\tcase protoreflect.DoubleKind:\n\t\t\tif ft.Kind() == reflect.Float64 {\n\t\t\t\treturn nil, coderDoubleSlice\n\t\t\t}\n\t\tcase protoreflect.StringKind:\n\t\t\tif ft.Kind() == reflect.String && strs.EnforceUTF8(fd) {\n\t\t\t\treturn nil, coderStringSliceValidateUTF8\n\t\t\t}\n\t\t\tif ft.Kind() == reflect.String {\n\t\t\t\treturn nil, coderStringSlice\n\t\t\t}\n\t\t\tif ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 && strs.EnforceUTF8(fd) {\n\t\t\t\treturn nil, coderBytesSliceValidateUTF8\n\t\t\t}\n\t\t\tif ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 {\n\t\t\t\treturn nil, coderBytesSlice\n\t\t\t}\n\t\tcase protoreflect.BytesKind:\n\t\t\tif ft.Kind() == reflect.String {\n\t\t\t\treturn nil, coderStringSlice\n\t\t\t}\n\t\t\tif ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 {\n\t\t\t\treturn nil, coderBytesSlice\n\t\t\t}\n\t\tcase protoreflect.MessageKind:\n\t\t\treturn getMessageInfo(ft), makeMessageSliceFieldCoder(fd, ft)\n\t\tcase protoreflect.GroupKind:\n\t\t\treturn getMessageInfo(ft), makeGroupSliceFieldCoder(fd, ft)\n\t\t}\n\tcase fd.Cardinality() == protoreflect.Repeated && fd.IsPacked():\n\t\t// Packed repeated fields.\n\t\t//\n\t\t// Only repeated fields of primitive numeric types\n\t\t// (Varint, Fixed32, or Fixed64 wire type) can be packed.\n\t\tif ft.Kind() != reflect.Slice {\n\t\t\tbreak\n\t\t}\n\t\tft := ft.Elem()\n\t\tswitch fd.Kind() {\n\t\tcase protoreflect.BoolKind:\n\t\t\tif ft.Kind() == reflect.Bool {\n\t\t\t\treturn nil, coderBoolPackedSlice\n\t\t\t}\n\t\tcase protoreflect.EnumKind:\n\t\t\tif ft.Kind() == reflect.Int32 {\n\t\t\t\treturn nil, coderEnumPackedSlice\n\t\t\t}\n\t\tcase protoreflect.Int32Kind:\n\t\t\tif ft.Kind() == reflect.Int32 {\n\t\t\t\treturn nil, coderInt32PackedSlice\n\t\t\t}\n\t\tcase protoreflect.Sint32Kind:\n\t\t\tif ft.Kind() == reflect.Int32 {\n\t\t\t\treturn nil, coderSint32PackedSlice\n\t\t\t}\n\t\tcase protoreflect.Uint32Kind:\n\t\t\tif ft.Kind() == reflect.Uint32 {\n\t\t\t\treturn nil, coderUint32PackedSlice\n\t\t\t}\n\t\tcase protoreflect.Int64Kind:\n\t\t\tif ft.Kind() == reflect.Int64 {\n\t\t\t\treturn nil, coderInt64PackedSlice\n\t\t\t}\n\t\tcase protoreflect.Sint64Kind:\n\t\t\tif ft.Kind() == reflect.Int64 {\n\t\t\t\treturn nil, coderSint64PackedSlice\n\t\t\t}\n\t\tcase protoreflect.Uint64Kind:\n\t\t\tif ft.Kind() == reflect.Uint64 {\n\t\t\t\treturn nil, coderUint64PackedSlice\n\t\t\t}\n\t\tcase protoreflect.Sfixed32Kind:\n\t\t\tif ft.Kind() == reflect.Int32 {\n\t\t\t\treturn nil, coderSfixed32PackedSlice\n\t\t\t}\n\t\tcase protoreflect.Fixed32Kind:\n\t\t\tif ft.Kind() == reflect.Uint32 {\n\t\t\t\treturn nil, coderFixed32PackedSlice\n\t\t\t}\n\t\tcase protoreflect.FloatKind:\n\t\t\tif ft.Kind() == reflect.Float32 {\n\t\t\t\treturn nil, coderFloatPackedSlice\n\t\t\t}\n\t\tcase protoreflect.Sfixed64Kind:\n\t\t\tif ft.Kind() == reflect.Int64 {\n\t\t\t\treturn nil, coderSfixed64PackedSlice\n\t\t\t}\n\t\tcase protoreflect.Fixed64Kind:\n\t\t\tif ft.Kind() == reflect.Uint64 {\n\t\t\t\treturn nil, coderFixed64PackedSlice\n\t\t\t}\n\t\tcase protoreflect.DoubleKind:\n\t\t\tif ft.Kind() == reflect.Float64 {\n\t\t\t\treturn nil, coderDoublePackedSlice\n\t\t\t}\n\t\t}\n\tcase fd.Kind() == protoreflect.MessageKind:\n\t\treturn getMessageInfo(ft), makeMessageFieldCoder(fd, ft)\n\tcase fd.Kind() == protoreflect.GroupKind:\n\t\treturn getMessageInfo(ft), makeGroupFieldCoder(fd, ft)\n\tcase !fd.HasPresence() && fd.ContainingOneof() == nil:\n\t\t// Populated oneof fields always encode even if set to the zero value,\n\t\t// which normally are not encoded in proto3.\n\t\tswitch fd.Kind() {\n\t\tcase protoreflect.BoolKind:\n\t\t\tif ft.Kind() == reflect.Bool {\n\t\t\t\treturn nil, coderBoolNoZero\n\t\t\t}\n\t\tcase protoreflect.EnumKind:\n\t\t\tif ft.Kind() == reflect.Int32 {\n\t\t\t\treturn nil, coderEnumNoZero\n\t\t\t}\n\t\tcase protoreflect.Int32Kind:\n\t\t\tif ft.Kind() == reflect.Int32 {\n\t\t\t\treturn nil, coderInt32NoZero\n\t\t\t}\n\t\tcase protoreflect.Sint32Kind:\n\t\t\tif ft.Kind() == reflect.Int32 {\n\t\t\t\treturn nil, coderSint32NoZero\n\t\t\t}\n\t\tcase protoreflect.Uint32Kind:\n\t\t\tif ft.Kind() == reflect.Uint32 {\n\t\t\t\treturn nil, coderUint32NoZero\n\t\t\t}\n\t\tcase protoreflect.Int64Kind:\n\t\t\tif ft.Kind() == reflect.Int64 {\n\t\t\t\treturn nil, coderInt64NoZero\n\t\t\t}\n\t\tcase protoreflect.Sint64Kind:\n\t\t\tif ft.Kind() == reflect.Int64 {\n\t\t\t\treturn nil, coderSint64NoZero\n\t\t\t}\n\t\tcase protoreflect.Uint64Kind:\n\t\t\tif ft.Kind() == reflect.Uint64 {\n\t\t\t\treturn nil, coderUint64NoZero\n\t\t\t}\n\t\tcase protoreflect.Sfixed32Kind:\n\t\t\tif ft.Kind() == reflect.Int32 {\n\t\t\t\treturn nil, coderSfixed32NoZero\n\t\t\t}\n\t\tcase protoreflect.Fixed32Kind:\n\t\t\tif ft.Kind() == reflect.Uint32 {\n\t\t\t\treturn nil, coderFixed32NoZero\n\t\t\t}\n\t\tcase protoreflect.FloatKind:\n\t\t\tif ft.Kind() == reflect.Float32 {\n\t\t\t\treturn nil, coderFloatNoZero\n\t\t\t}\n\t\tcase protoreflect.Sfixed64Kind:\n\t\t\tif ft.Kind() == reflect.Int64 {\n\t\t\t\treturn nil, coderSfixed64NoZero\n\t\t\t}\n\t\tcase protoreflect.Fixed64Kind:\n\t\t\tif ft.Kind() == reflect.Uint64 {\n\t\t\t\treturn nil, coderFixed64NoZero\n\t\t\t}\n\t\tcase protoreflect.DoubleKind:\n\t\t\tif ft.Kind() == reflect.Float64 {\n\t\t\t\treturn nil, coderDoubleNoZero\n\t\t\t}\n\t\tcase protoreflect.StringKind:\n\t\t\tif ft.Kind() == reflect.String && strs.EnforceUTF8(fd) {\n\t\t\t\treturn nil, coderStringNoZeroValidateUTF8\n\t\t\t}\n\t\t\tif ft.Kind() == reflect.String {\n\t\t\t\treturn nil, coderStringNoZero\n\t\t\t}\n\t\t\tif ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 && strs.EnforceUTF8(fd) {\n\t\t\t\treturn nil, coderBytesNoZeroValidateUTF8\n\t\t\t}\n\t\t\tif ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 {\n\t\t\t\treturn nil, coderBytesNoZero\n\t\t\t}\n\t\tcase protoreflect.BytesKind:\n\t\t\tif ft.Kind() == reflect.String {\n\t\t\t\treturn nil, coderStringNoZero\n\t\t\t}\n\t\t\tif ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 {\n\t\t\t\treturn nil, coderBytesNoZero\n\t\t\t}\n\t\t}\n\tcase ft.Kind() == reflect.Ptr:\n\t\tft := ft.Elem()\n\t\tswitch fd.Kind() {\n\t\tcase protoreflect.BoolKind:\n\t\t\tif ft.Kind() == reflect.Bool {\n\t\t\t\treturn nil, coderBoolPtr\n\t\t\t}\n\t\tcase protoreflect.EnumKind:\n\t\t\tif ft.Kind() == reflect.Int32 {\n\t\t\t\treturn nil, coderEnumPtr\n\t\t\t}\n\t\tcase protoreflect.Int32Kind:\n\t\t\tif ft.Kind() == reflect.Int32 {\n\t\t\t\treturn nil, coderInt32Ptr\n\t\t\t}\n\t\tcase protoreflect.Sint32Kind:\n\t\t\tif ft.Kind() == reflect.Int32 {\n\t\t\t\treturn nil, coderSint32Ptr\n\t\t\t}\n\t\tcase protoreflect.Uint32Kind:\n\t\t\tif ft.Kind() == reflect.Uint32 {\n\t\t\t\treturn nil, coderUint32Ptr\n\t\t\t}\n\t\tcase protoreflect.Int64Kind:\n\t\t\tif ft.Kind() == reflect.Int64 {\n\t\t\t\treturn nil, coderInt64Ptr\n\t\t\t}\n\t\tcase protoreflect.Sint64Kind:\n\t\t\tif ft.Kind() == reflect.Int64 {\n\t\t\t\treturn nil, coderSint64Ptr\n\t\t\t}\n\t\tcase protoreflect.Uint64Kind:\n\t\t\tif ft.Kind() == reflect.Uint64 {\n\t\t\t\treturn nil, coderUint64Ptr\n\t\t\t}\n\t\tcase protoreflect.Sfixed32Kind:\n\t\t\tif ft.Kind() == reflect.Int32 {\n\t\t\t\treturn nil, coderSfixed32Ptr\n\t\t\t}\n\t\tcase protoreflect.Fixed32Kind:\n\t\t\tif ft.Kind() == reflect.Uint32 {\n\t\t\t\treturn nil, coderFixed32Ptr\n\t\t\t}\n\t\tcase protoreflect.FloatKind:\n\t\t\tif ft.Kind() == reflect.Float32 {\n\t\t\t\treturn nil, coderFloatPtr\n\t\t\t}\n\t\tcase protoreflect.Sfixed64Kind:\n\t\t\tif ft.Kind() == reflect.Int64 {\n\t\t\t\treturn nil, coderSfixed64Ptr\n\t\t\t}\n\t\tcase protoreflect.Fixed64Kind:\n\t\t\tif ft.Kind() == reflect.Uint64 {\n\t\t\t\treturn nil, coderFixed64Ptr\n\t\t\t}\n\t\tcase protoreflect.DoubleKind:\n\t\t\tif ft.Kind() == reflect.Float64 {\n\t\t\t\treturn nil, coderDoublePtr\n\t\t\t}\n\t\tcase protoreflect.StringKind:\n\t\t\tif ft.Kind() == reflect.String && strs.EnforceUTF8(fd) {\n\t\t\t\treturn nil, coderStringPtrValidateUTF8\n\t\t\t}\n\t\t\tif ft.Kind() == reflect.String {\n\t\t\t\treturn nil, coderStringPtr\n\t\t\t}\n\t\tcase protoreflect.BytesKind:\n\t\t\tif ft.Kind() == reflect.String {\n\t\t\t\treturn nil, coderStringPtr\n\t\t\t}\n\t\t}\n\tdefault:\n\t\tswitch fd.Kind() {\n\t\tcase protoreflect.BoolKind:\n\t\t\tif ft.Kind() == reflect.Bool {\n\t\t\t\treturn nil, coderBool\n\t\t\t}\n\t\tcase protoreflect.EnumKind:\n\t\t\tif ft.Kind() == reflect.Int32 {\n\t\t\t\treturn nil, coderEnum\n\t\t\t}\n\t\tcase protoreflect.Int32Kind:\n\t\t\tif ft.Kind() == reflect.Int32 {\n\t\t\t\treturn nil, coderInt32\n\t\t\t}\n\t\tcase protoreflect.Sint32Kind:\n\t\t\tif ft.Kind() == reflect.Int32 {\n\t\t\t\treturn nil, coderSint32\n\t\t\t}\n\t\tcase protoreflect.Uint32Kind:\n\t\t\tif ft.Kind() == reflect.Uint32 {\n\t\t\t\treturn nil, coderUint32\n\t\t\t}\n\t\tcase protoreflect.Int64Kind:\n\t\t\tif ft.Kind() == reflect.Int64 {\n\t\t\t\treturn nil, coderInt64\n\t\t\t}\n\t\tcase protoreflect.Sint64Kind:\n\t\t\tif ft.Kind() == reflect.Int64 {\n\t\t\t\treturn nil, coderSint64\n\t\t\t}\n\t\tcase protoreflect.Uint64Kind:\n\t\t\tif ft.Kind() == reflect.Uint64 {\n\t\t\t\treturn nil, coderUint64\n\t\t\t}\n\t\tcase protoreflect.Sfixed32Kind:\n\t\t\tif ft.Kind() == reflect.Int32 {\n\t\t\t\treturn nil, coderSfixed32\n\t\t\t}\n\t\tcase protoreflect.Fixed32Kind:\n\t\t\tif ft.Kind() == reflect.Uint32 {\n\t\t\t\treturn nil, coderFixed32\n\t\t\t}\n\t\tcase protoreflect.FloatKind:\n\t\t\tif ft.Kind() == reflect.Float32 {\n\t\t\t\treturn nil, coderFloat\n\t\t\t}\n\t\tcase protoreflect.Sfixed64Kind:\n\t\t\tif ft.Kind() == reflect.Int64 {\n\t\t\t\treturn nil, coderSfixed64\n\t\t\t}\n\t\tcase protoreflect.Fixed64Kind:\n\t\t\tif ft.Kind() == reflect.Uint64 {\n\t\t\t\treturn nil, coderFixed64\n\t\t\t}\n\t\tcase protoreflect.DoubleKind:\n\t\t\tif ft.Kind() == reflect.Float64 {\n\t\t\t\treturn nil, coderDouble\n\t\t\t}\n\t\tcase protoreflect.StringKind:\n\t\t\tif ft.Kind() == reflect.String && strs.EnforceUTF8(fd) {\n\t\t\t\treturn nil, coderStringValidateUTF8\n\t\t\t}\n\t\t\tif ft.Kind() == reflect.String {\n\t\t\t\treturn nil, coderString\n\t\t\t}\n\t\t\tif ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 && strs.EnforceUTF8(fd) {\n\t\t\t\treturn nil, coderBytesValidateUTF8\n\t\t\t}\n\t\t\tif ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 {\n\t\t\t\treturn nil, coderBytes\n\t\t\t}\n\t\tcase protoreflect.BytesKind:\n\t\t\tif ft.Kind() == reflect.String {\n\t\t\t\treturn nil, coderString\n\t\t\t}\n\t\t\tif ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 {\n\t\t\t\treturn nil, coderBytes\n\t\t\t}\n\t\t}\n\t}\n\tpanic(fmt.Sprintf(\"invalid type: no encoder for %v %v %v/%v\", fd.FullName(), fd.Cardinality(), fd.Kind(), ft))\n}\n\n// encoderFuncsForValue returns value functions for a field, used for\n// extension values and map encoding.\nfunc encoderFuncsForValue(fd protoreflect.FieldDescriptor) valueCoderFuncs {\n\tswitch {\n\tcase fd.Cardinality() == protoreflect.Repeated && !fd.IsPacked():\n\t\tswitch fd.Kind() {\n\t\tcase protoreflect.BoolKind:\n\t\t\treturn coderBoolSliceValue\n\t\tcase protoreflect.EnumKind:\n\t\t\treturn coderEnumSliceValue\n\t\tcase protoreflect.Int32Kind:\n\t\t\treturn coderInt32SliceValue\n\t\tcase protoreflect.Sint32Kind:\n\t\t\treturn coderSint32SliceValue\n\t\tcase protoreflect.Uint32Kind:\n\t\t\treturn coderUint32SliceValue\n\t\tcase protoreflect.Int64Kind:\n\t\t\treturn coderInt64SliceValue\n\t\tcase protoreflect.Sint64Kind:\n\t\t\treturn coderSint64SliceValue\n\t\tcase protoreflect.Uint64Kind:\n\t\t\treturn coderUint64SliceValue\n\t\tcase protoreflect.Sfixed32Kind:\n\t\t\treturn coderSfixed32SliceValue\n\t\tcase protoreflect.Fixed32Kind:\n\t\t\treturn coderFixed32SliceValue\n\t\tcase protoreflect.FloatKind:\n\t\t\treturn coderFloatSliceValue\n\t\tcase protoreflect.Sfixed64Kind:\n\t\t\treturn coderSfixed64SliceValue\n\t\tcase protoreflect.Fixed64Kind:\n\t\t\treturn coderFixed64SliceValue\n\t\tcase protoreflect.DoubleKind:\n\t\t\treturn coderDoubleSliceValue\n\t\tcase protoreflect.StringKind:\n\t\t\t// We don't have a UTF-8 validating coder for repeated string fields.\n\t\t\t// Value coders are used for extensions and maps.\n\t\t\t// Extensions are never proto3, and maps never contain lists.\n\t\t\treturn coderStringSliceValue\n\t\tcase protoreflect.BytesKind:\n\t\t\treturn coderBytesSliceValue\n\t\tcase protoreflect.MessageKind:\n\t\t\treturn coderMessageSliceValue\n\t\tcase protoreflect.GroupKind:\n\t\t\treturn coderGroupSliceValue\n\t\t}\n\tcase fd.Cardinality() == protoreflect.Repeated && fd.IsPacked():\n\t\tswitch fd.Kind() {\n\t\tcase protoreflect.BoolKind:\n\t\t\treturn coderBoolPackedSliceValue\n\t\tcase protoreflect.EnumKind:\n\t\t\treturn coderEnumPackedSliceValue\n\t\tcase protoreflect.Int32Kind:\n\t\t\treturn coderInt32PackedSliceValue\n\t\tcase protoreflect.Sint32Kind:\n\t\t\treturn coderSint32PackedSliceValue\n\t\tcase protoreflect.Uint32Kind:\n\t\t\treturn coderUint32PackedSliceValue\n\t\tcase protoreflect.Int64Kind:\n\t\t\treturn coderInt64PackedSliceValue\n\t\tcase protoreflect.Sint64Kind:\n\t\t\treturn coderSint64PackedSliceValue\n\t\tcase protoreflect.Uint64Kind:\n\t\t\treturn coderUint64PackedSliceValue\n\t\tcase protoreflect.Sfixed32Kind:\n\t\t\treturn coderSfixed32PackedSliceValue\n\t\tcase protoreflect.Fixed32Kind:\n\t\t\treturn coderFixed32PackedSliceValue\n\t\tcase protoreflect.FloatKind:\n\t\t\treturn coderFloatPackedSliceValue\n\t\tcase protoreflect.Sfixed64Kind:\n\t\t\treturn coderSfixed64PackedSliceValue\n\t\tcase protoreflect.Fixed64Kind:\n\t\t\treturn coderFixed64PackedSliceValue\n\t\tcase protoreflect.DoubleKind:\n\t\t\treturn coderDoublePackedSliceValue\n\t\t}\n\tdefault:\n\t\tswitch fd.Kind() {\n\t\tdefault:\n\t\tcase protoreflect.BoolKind:\n\t\t\treturn coderBoolValue\n\t\tcase protoreflect.EnumKind:\n\t\t\treturn coderEnumValue\n\t\tcase protoreflect.Int32Kind:\n\t\t\treturn coderInt32Value\n\t\tcase protoreflect.Sint32Kind:\n\t\t\treturn coderSint32Value\n\t\tcase protoreflect.Uint32Kind:\n\t\t\treturn coderUint32Value\n\t\tcase protoreflect.Int64Kind:\n\t\t\treturn coderInt64Value\n\t\tcase protoreflect.Sint64Kind:\n\t\t\treturn coderSint64Value\n\t\tcase protoreflect.Uint64Kind:\n\t\t\treturn coderUint64Value\n\t\tcase protoreflect.Sfixed32Kind:\n\t\t\treturn coderSfixed32Value\n\t\tcase protoreflect.Fixed32Kind:\n\t\t\treturn coderFixed32Value\n\t\tcase protoreflect.FloatKind:\n\t\t\treturn coderFloatValue\n\t\tcase protoreflect.Sfixed64Kind:\n\t\t\treturn coderSfixed64Value\n\t\tcase protoreflect.Fixed64Kind:\n\t\t\treturn coderFixed64Value\n\t\tcase protoreflect.DoubleKind:\n\t\t\treturn coderDoubleValue\n\t\tcase protoreflect.StringKind:\n\t\t\tif strs.EnforceUTF8(fd) {\n\t\t\t\treturn coderStringValueValidateUTF8\n\t\t\t}\n\t\t\treturn coderStringValue\n\t\tcase protoreflect.BytesKind:\n\t\t\treturn coderBytesValue\n\t\tcase protoreflect.MessageKind:\n\t\t\treturn coderMessageValue\n\t\tcase protoreflect.GroupKind:\n\t\t\treturn coderGroupValue\n\t\t}\n\t}\n\tpanic(fmt.Sprintf(\"invalid field: no encoder for %v %v %v\", fd.FullName(), fd.Cardinality(), fd.Kind()))\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/codec_unsafe.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\n// When using unsafe pointers, we can just treat enum values as int32s.\n\nvar (\n\tcoderEnumNoZero      = coderInt32NoZero\n\tcoderEnum            = coderInt32\n\tcoderEnumPtr         = coderInt32Ptr\n\tcoderEnumSlice       = coderInt32Slice\n\tcoderEnumPackedSlice = coderInt32PackedSlice\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/convert.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\n// unwrapper unwraps the value to the underlying value.\n// This is implemented by List and Map.\ntype unwrapper interface {\n\tprotoUnwrap() any\n}\n\n// A Converter coverts to/from Go reflect.Value types and protobuf protoreflect.Value types.\ntype Converter interface {\n\t// PBValueOf converts a reflect.Value to a protoreflect.Value.\n\tPBValueOf(reflect.Value) protoreflect.Value\n\n\t// GoValueOf converts a protoreflect.Value to a reflect.Value.\n\tGoValueOf(protoreflect.Value) reflect.Value\n\n\t// IsValidPB returns whether a protoreflect.Value is compatible with this type.\n\tIsValidPB(protoreflect.Value) bool\n\n\t// IsValidGo returns whether a reflect.Value is compatible with this type.\n\tIsValidGo(reflect.Value) bool\n\n\t// New returns a new field value.\n\t// For scalars, it returns the default value of the field.\n\t// For composite types, it returns a new mutable value.\n\tNew() protoreflect.Value\n\n\t// Zero returns a new field value.\n\t// For scalars, it returns the default value of the field.\n\t// For composite types, it returns an immutable, empty value.\n\tZero() protoreflect.Value\n}\n\n// NewConverter matches a Go type with a protobuf field and returns a Converter\n// that converts between the two. Enums must be a named int32 kind that\n// implements protoreflect.Enum, and messages must be pointer to a named\n// struct type that implements protoreflect.ProtoMessage.\n//\n// This matcher deliberately supports a wider range of Go types than what\n// protoc-gen-go historically generated to be able to automatically wrap some\n// v1 messages generated by other forks of protoc-gen-go.\nfunc NewConverter(t reflect.Type, fd protoreflect.FieldDescriptor) Converter {\n\tswitch {\n\tcase fd.IsList():\n\t\treturn newListConverter(t, fd)\n\tcase fd.IsMap():\n\t\treturn newMapConverter(t, fd)\n\tdefault:\n\t\treturn newSingularConverter(t, fd)\n\t}\n}\n\nvar (\n\tboolType    = reflect.TypeOf(bool(false))\n\tint32Type   = reflect.TypeOf(int32(0))\n\tint64Type   = reflect.TypeOf(int64(0))\n\tuint32Type  = reflect.TypeOf(uint32(0))\n\tuint64Type  = reflect.TypeOf(uint64(0))\n\tfloat32Type = reflect.TypeOf(float32(0))\n\tfloat64Type = reflect.TypeOf(float64(0))\n\tstringType  = reflect.TypeOf(string(\"\"))\n\tbytesType   = reflect.TypeOf([]byte(nil))\n\tbyteType    = reflect.TypeOf(byte(0))\n)\n\nvar (\n\tboolZero    = protoreflect.ValueOfBool(false)\n\tint32Zero   = protoreflect.ValueOfInt32(0)\n\tint64Zero   = protoreflect.ValueOfInt64(0)\n\tuint32Zero  = protoreflect.ValueOfUint32(0)\n\tuint64Zero  = protoreflect.ValueOfUint64(0)\n\tfloat32Zero = protoreflect.ValueOfFloat32(0)\n\tfloat64Zero = protoreflect.ValueOfFloat64(0)\n\tstringZero  = protoreflect.ValueOfString(\"\")\n\tbytesZero   = protoreflect.ValueOfBytes(nil)\n)\n\nfunc newSingularConverter(t reflect.Type, fd protoreflect.FieldDescriptor) Converter {\n\tdefVal := func(fd protoreflect.FieldDescriptor, zero protoreflect.Value) protoreflect.Value {\n\t\tif fd.Cardinality() == protoreflect.Repeated {\n\t\t\t// Default isn't defined for repeated fields.\n\t\t\treturn zero\n\t\t}\n\t\treturn fd.Default()\n\t}\n\tswitch fd.Kind() {\n\tcase protoreflect.BoolKind:\n\t\tif t.Kind() == reflect.Bool {\n\t\t\treturn &boolConverter{t, defVal(fd, boolZero)}\n\t\t}\n\tcase protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind:\n\t\tif t.Kind() == reflect.Int32 {\n\t\t\treturn &int32Converter{t, defVal(fd, int32Zero)}\n\t\t}\n\tcase protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind:\n\t\tif t.Kind() == reflect.Int64 {\n\t\t\treturn &int64Converter{t, defVal(fd, int64Zero)}\n\t\t}\n\tcase protoreflect.Uint32Kind, protoreflect.Fixed32Kind:\n\t\tif t.Kind() == reflect.Uint32 {\n\t\t\treturn &uint32Converter{t, defVal(fd, uint32Zero)}\n\t\t}\n\tcase protoreflect.Uint64Kind, protoreflect.Fixed64Kind:\n\t\tif t.Kind() == reflect.Uint64 {\n\t\t\treturn &uint64Converter{t, defVal(fd, uint64Zero)}\n\t\t}\n\tcase protoreflect.FloatKind:\n\t\tif t.Kind() == reflect.Float32 {\n\t\t\treturn &float32Converter{t, defVal(fd, float32Zero)}\n\t\t}\n\tcase protoreflect.DoubleKind:\n\t\tif t.Kind() == reflect.Float64 {\n\t\t\treturn &float64Converter{t, defVal(fd, float64Zero)}\n\t\t}\n\tcase protoreflect.StringKind:\n\t\tif t.Kind() == reflect.String || (t.Kind() == reflect.Slice && t.Elem() == byteType) {\n\t\t\treturn &stringConverter{t, defVal(fd, stringZero)}\n\t\t}\n\tcase protoreflect.BytesKind:\n\t\tif t.Kind() == reflect.String || (t.Kind() == reflect.Slice && t.Elem() == byteType) {\n\t\t\treturn &bytesConverter{t, defVal(fd, bytesZero)}\n\t\t}\n\tcase protoreflect.EnumKind:\n\t\t// Handle enums, which must be a named int32 type.\n\t\tif t.Kind() == reflect.Int32 {\n\t\t\treturn newEnumConverter(t, fd)\n\t\t}\n\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\treturn newMessageConverter(t)\n\t}\n\tpanic(fmt.Sprintf(\"invalid Go type %v for field %v\", t, fd.FullName()))\n}\n\ntype boolConverter struct {\n\tgoType reflect.Type\n\tdef    protoreflect.Value\n}\n\nfunc (c *boolConverter) PBValueOf(v reflect.Value) protoreflect.Value {\n\tif v.Type() != c.goType {\n\t\tpanic(fmt.Sprintf(\"invalid type: got %v, want %v\", v.Type(), c.goType))\n\t}\n\treturn protoreflect.ValueOfBool(v.Bool())\n}\nfunc (c *boolConverter) GoValueOf(v protoreflect.Value) reflect.Value {\n\treturn reflect.ValueOf(v.Bool()).Convert(c.goType)\n}\nfunc (c *boolConverter) IsValidPB(v protoreflect.Value) bool {\n\t_, ok := v.Interface().(bool)\n\treturn ok\n}\nfunc (c *boolConverter) IsValidGo(v reflect.Value) bool {\n\treturn v.IsValid() && v.Type() == c.goType\n}\nfunc (c *boolConverter) New() protoreflect.Value  { return c.def }\nfunc (c *boolConverter) Zero() protoreflect.Value { return c.def }\n\ntype int32Converter struct {\n\tgoType reflect.Type\n\tdef    protoreflect.Value\n}\n\nfunc (c *int32Converter) PBValueOf(v reflect.Value) protoreflect.Value {\n\tif v.Type() != c.goType {\n\t\tpanic(fmt.Sprintf(\"invalid type: got %v, want %v\", v.Type(), c.goType))\n\t}\n\treturn protoreflect.ValueOfInt32(int32(v.Int()))\n}\nfunc (c *int32Converter) GoValueOf(v protoreflect.Value) reflect.Value {\n\treturn reflect.ValueOf(int32(v.Int())).Convert(c.goType)\n}\nfunc (c *int32Converter) IsValidPB(v protoreflect.Value) bool {\n\t_, ok := v.Interface().(int32)\n\treturn ok\n}\nfunc (c *int32Converter) IsValidGo(v reflect.Value) bool {\n\treturn v.IsValid() && v.Type() == c.goType\n}\nfunc (c *int32Converter) New() protoreflect.Value  { return c.def }\nfunc (c *int32Converter) Zero() protoreflect.Value { return c.def }\n\ntype int64Converter struct {\n\tgoType reflect.Type\n\tdef    protoreflect.Value\n}\n\nfunc (c *int64Converter) PBValueOf(v reflect.Value) protoreflect.Value {\n\tif v.Type() != c.goType {\n\t\tpanic(fmt.Sprintf(\"invalid type: got %v, want %v\", v.Type(), c.goType))\n\t}\n\treturn protoreflect.ValueOfInt64(int64(v.Int()))\n}\nfunc (c *int64Converter) GoValueOf(v protoreflect.Value) reflect.Value {\n\treturn reflect.ValueOf(int64(v.Int())).Convert(c.goType)\n}\nfunc (c *int64Converter) IsValidPB(v protoreflect.Value) bool {\n\t_, ok := v.Interface().(int64)\n\treturn ok\n}\nfunc (c *int64Converter) IsValidGo(v reflect.Value) bool {\n\treturn v.IsValid() && v.Type() == c.goType\n}\nfunc (c *int64Converter) New() protoreflect.Value  { return c.def }\nfunc (c *int64Converter) Zero() protoreflect.Value { return c.def }\n\ntype uint32Converter struct {\n\tgoType reflect.Type\n\tdef    protoreflect.Value\n}\n\nfunc (c *uint32Converter) PBValueOf(v reflect.Value) protoreflect.Value {\n\tif v.Type() != c.goType {\n\t\tpanic(fmt.Sprintf(\"invalid type: got %v, want %v\", v.Type(), c.goType))\n\t}\n\treturn protoreflect.ValueOfUint32(uint32(v.Uint()))\n}\nfunc (c *uint32Converter) GoValueOf(v protoreflect.Value) reflect.Value {\n\treturn reflect.ValueOf(uint32(v.Uint())).Convert(c.goType)\n}\nfunc (c *uint32Converter) IsValidPB(v protoreflect.Value) bool {\n\t_, ok := v.Interface().(uint32)\n\treturn ok\n}\nfunc (c *uint32Converter) IsValidGo(v reflect.Value) bool {\n\treturn v.IsValid() && v.Type() == c.goType\n}\nfunc (c *uint32Converter) New() protoreflect.Value  { return c.def }\nfunc (c *uint32Converter) Zero() protoreflect.Value { return c.def }\n\ntype uint64Converter struct {\n\tgoType reflect.Type\n\tdef    protoreflect.Value\n}\n\nfunc (c *uint64Converter) PBValueOf(v reflect.Value) protoreflect.Value {\n\tif v.Type() != c.goType {\n\t\tpanic(fmt.Sprintf(\"invalid type: got %v, want %v\", v.Type(), c.goType))\n\t}\n\treturn protoreflect.ValueOfUint64(uint64(v.Uint()))\n}\nfunc (c *uint64Converter) GoValueOf(v protoreflect.Value) reflect.Value {\n\treturn reflect.ValueOf(uint64(v.Uint())).Convert(c.goType)\n}\nfunc (c *uint64Converter) IsValidPB(v protoreflect.Value) bool {\n\t_, ok := v.Interface().(uint64)\n\treturn ok\n}\nfunc (c *uint64Converter) IsValidGo(v reflect.Value) bool {\n\treturn v.IsValid() && v.Type() == c.goType\n}\nfunc (c *uint64Converter) New() protoreflect.Value  { return c.def }\nfunc (c *uint64Converter) Zero() protoreflect.Value { return c.def }\n\ntype float32Converter struct {\n\tgoType reflect.Type\n\tdef    protoreflect.Value\n}\n\nfunc (c *float32Converter) PBValueOf(v reflect.Value) protoreflect.Value {\n\tif v.Type() != c.goType {\n\t\tpanic(fmt.Sprintf(\"invalid type: got %v, want %v\", v.Type(), c.goType))\n\t}\n\treturn protoreflect.ValueOfFloat32(float32(v.Float()))\n}\nfunc (c *float32Converter) GoValueOf(v protoreflect.Value) reflect.Value {\n\treturn reflect.ValueOf(float32(v.Float())).Convert(c.goType)\n}\nfunc (c *float32Converter) IsValidPB(v protoreflect.Value) bool {\n\t_, ok := v.Interface().(float32)\n\treturn ok\n}\nfunc (c *float32Converter) IsValidGo(v reflect.Value) bool {\n\treturn v.IsValid() && v.Type() == c.goType\n}\nfunc (c *float32Converter) New() protoreflect.Value  { return c.def }\nfunc (c *float32Converter) Zero() protoreflect.Value { return c.def }\n\ntype float64Converter struct {\n\tgoType reflect.Type\n\tdef    protoreflect.Value\n}\n\nfunc (c *float64Converter) PBValueOf(v reflect.Value) protoreflect.Value {\n\tif v.Type() != c.goType {\n\t\tpanic(fmt.Sprintf(\"invalid type: got %v, want %v\", v.Type(), c.goType))\n\t}\n\treturn protoreflect.ValueOfFloat64(float64(v.Float()))\n}\nfunc (c *float64Converter) GoValueOf(v protoreflect.Value) reflect.Value {\n\treturn reflect.ValueOf(float64(v.Float())).Convert(c.goType)\n}\nfunc (c *float64Converter) IsValidPB(v protoreflect.Value) bool {\n\t_, ok := v.Interface().(float64)\n\treturn ok\n}\nfunc (c *float64Converter) IsValidGo(v reflect.Value) bool {\n\treturn v.IsValid() && v.Type() == c.goType\n}\nfunc (c *float64Converter) New() protoreflect.Value  { return c.def }\nfunc (c *float64Converter) Zero() protoreflect.Value { return c.def }\n\ntype stringConverter struct {\n\tgoType reflect.Type\n\tdef    protoreflect.Value\n}\n\nfunc (c *stringConverter) PBValueOf(v reflect.Value) protoreflect.Value {\n\tif v.Type() != c.goType {\n\t\tpanic(fmt.Sprintf(\"invalid type: got %v, want %v\", v.Type(), c.goType))\n\t}\n\treturn protoreflect.ValueOfString(v.Convert(stringType).String())\n}\nfunc (c *stringConverter) GoValueOf(v protoreflect.Value) reflect.Value {\n\t// protoreflect.Value.String never panics, so we go through an interface\n\t// conversion here to check the type.\n\ts := v.Interface().(string)\n\tif c.goType.Kind() == reflect.Slice && s == \"\" {\n\t\treturn reflect.Zero(c.goType) // ensure empty string is []byte(nil)\n\t}\n\treturn reflect.ValueOf(s).Convert(c.goType)\n}\nfunc (c *stringConverter) IsValidPB(v protoreflect.Value) bool {\n\t_, ok := v.Interface().(string)\n\treturn ok\n}\nfunc (c *stringConverter) IsValidGo(v reflect.Value) bool {\n\treturn v.IsValid() && v.Type() == c.goType\n}\nfunc (c *stringConverter) New() protoreflect.Value  { return c.def }\nfunc (c *stringConverter) Zero() protoreflect.Value { return c.def }\n\ntype bytesConverter struct {\n\tgoType reflect.Type\n\tdef    protoreflect.Value\n}\n\nfunc (c *bytesConverter) PBValueOf(v reflect.Value) protoreflect.Value {\n\tif v.Type() != c.goType {\n\t\tpanic(fmt.Sprintf(\"invalid type: got %v, want %v\", v.Type(), c.goType))\n\t}\n\tif c.goType.Kind() == reflect.String && v.Len() == 0 {\n\t\treturn protoreflect.ValueOfBytes(nil) // ensure empty string is []byte(nil)\n\t}\n\treturn protoreflect.ValueOfBytes(v.Convert(bytesType).Bytes())\n}\nfunc (c *bytesConverter) GoValueOf(v protoreflect.Value) reflect.Value {\n\treturn reflect.ValueOf(v.Bytes()).Convert(c.goType)\n}\nfunc (c *bytesConverter) IsValidPB(v protoreflect.Value) bool {\n\t_, ok := v.Interface().([]byte)\n\treturn ok\n}\nfunc (c *bytesConverter) IsValidGo(v reflect.Value) bool {\n\treturn v.IsValid() && v.Type() == c.goType\n}\nfunc (c *bytesConverter) New() protoreflect.Value  { return c.def }\nfunc (c *bytesConverter) Zero() protoreflect.Value { return c.def }\n\ntype enumConverter struct {\n\tgoType reflect.Type\n\tdef    protoreflect.Value\n}\n\nfunc newEnumConverter(goType reflect.Type, fd protoreflect.FieldDescriptor) Converter {\n\tvar def protoreflect.Value\n\tif fd.Cardinality() == protoreflect.Repeated {\n\t\tdef = protoreflect.ValueOfEnum(fd.Enum().Values().Get(0).Number())\n\t} else {\n\t\tdef = fd.Default()\n\t}\n\treturn &enumConverter{goType, def}\n}\n\nfunc (c *enumConverter) PBValueOf(v reflect.Value) protoreflect.Value {\n\tif v.Type() != c.goType {\n\t\tpanic(fmt.Sprintf(\"invalid type: got %v, want %v\", v.Type(), c.goType))\n\t}\n\treturn protoreflect.ValueOfEnum(protoreflect.EnumNumber(v.Int()))\n}\n\nfunc (c *enumConverter) GoValueOf(v protoreflect.Value) reflect.Value {\n\treturn reflect.ValueOf(v.Enum()).Convert(c.goType)\n}\n\nfunc (c *enumConverter) IsValidPB(v protoreflect.Value) bool {\n\t_, ok := v.Interface().(protoreflect.EnumNumber)\n\treturn ok\n}\n\nfunc (c *enumConverter) IsValidGo(v reflect.Value) bool {\n\treturn v.IsValid() && v.Type() == c.goType\n}\n\nfunc (c *enumConverter) New() protoreflect.Value {\n\treturn c.def\n}\n\nfunc (c *enumConverter) Zero() protoreflect.Value {\n\treturn c.def\n}\n\ntype messageConverter struct {\n\tgoType reflect.Type\n}\n\nfunc newMessageConverter(goType reflect.Type) Converter {\n\treturn &messageConverter{goType}\n}\n\nfunc (c *messageConverter) PBValueOf(v reflect.Value) protoreflect.Value {\n\tif v.Type() != c.goType {\n\t\tpanic(fmt.Sprintf(\"invalid type: got %v, want %v\", v.Type(), c.goType))\n\t}\n\tif c.isNonPointer() {\n\t\tif v.CanAddr() {\n\t\t\tv = v.Addr() // T => *T\n\t\t} else {\n\t\t\tv = reflect.Zero(reflect.PtrTo(v.Type()))\n\t\t}\n\t}\n\tif m, ok := v.Interface().(protoreflect.ProtoMessage); ok {\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\t}\n\treturn protoreflect.ValueOfMessage(legacyWrapMessage(v))\n}\n\nfunc (c *messageConverter) GoValueOf(v protoreflect.Value) reflect.Value {\n\tm := v.Message()\n\tvar rv reflect.Value\n\tif u, ok := m.(unwrapper); ok {\n\t\trv = reflect.ValueOf(u.protoUnwrap())\n\t} else {\n\t\trv = reflect.ValueOf(m.Interface())\n\t}\n\tif c.isNonPointer() {\n\t\tif rv.Type() != reflect.PtrTo(c.goType) {\n\t\t\tpanic(fmt.Sprintf(\"invalid type: got %v, want %v\", rv.Type(), reflect.PtrTo(c.goType)))\n\t\t}\n\t\tif !rv.IsNil() {\n\t\t\trv = rv.Elem() // *T => T\n\t\t} else {\n\t\t\trv = reflect.Zero(rv.Type().Elem())\n\t\t}\n\t}\n\tif rv.Type() != c.goType {\n\t\tpanic(fmt.Sprintf(\"invalid type: got %v, want %v\", rv.Type(), c.goType))\n\t}\n\treturn rv\n}\n\nfunc (c *messageConverter) IsValidPB(v protoreflect.Value) bool {\n\tm := v.Message()\n\tvar rv reflect.Value\n\tif u, ok := m.(unwrapper); ok {\n\t\trv = reflect.ValueOf(u.protoUnwrap())\n\t} else {\n\t\trv = reflect.ValueOf(m.Interface())\n\t}\n\tif c.isNonPointer() {\n\t\treturn rv.Type() == reflect.PtrTo(c.goType)\n\t}\n\treturn rv.Type() == c.goType\n}\n\nfunc (c *messageConverter) IsValidGo(v reflect.Value) bool {\n\treturn v.IsValid() && v.Type() == c.goType\n}\n\nfunc (c *messageConverter) New() protoreflect.Value {\n\tif c.isNonPointer() {\n\t\treturn c.PBValueOf(reflect.New(c.goType).Elem())\n\t}\n\treturn c.PBValueOf(reflect.New(c.goType.Elem()))\n}\n\nfunc (c *messageConverter) Zero() protoreflect.Value {\n\treturn c.PBValueOf(reflect.Zero(c.goType))\n}\n\n// isNonPointer reports whether the type is a non-pointer type.\n// This never occurs for generated message types.\nfunc (c *messageConverter) isNonPointer() bool {\n\treturn c.goType.Kind() != reflect.Ptr\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/convert_list.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nfunc newListConverter(t reflect.Type, fd protoreflect.FieldDescriptor) Converter {\n\tswitch {\n\tcase t.Kind() == reflect.Ptr && t.Elem().Kind() == reflect.Slice:\n\t\treturn &listPtrConverter{t, newSingularConverter(t.Elem().Elem(), fd)}\n\tcase t.Kind() == reflect.Slice:\n\t\treturn &listConverter{t, newSingularConverter(t.Elem(), fd)}\n\t}\n\tpanic(fmt.Sprintf(\"invalid Go type %v for field %v\", t, fd.FullName()))\n}\n\ntype listConverter struct {\n\tgoType reflect.Type // []T\n\tc      Converter\n}\n\nfunc (c *listConverter) PBValueOf(v reflect.Value) protoreflect.Value {\n\tif v.Type() != c.goType {\n\t\tpanic(fmt.Sprintf(\"invalid type: got %v, want %v\", v.Type(), c.goType))\n\t}\n\tpv := reflect.New(c.goType)\n\tpv.Elem().Set(v)\n\treturn protoreflect.ValueOfList(&listReflect{pv, c.c})\n}\n\nfunc (c *listConverter) GoValueOf(v protoreflect.Value) reflect.Value {\n\trv := v.List().(*listReflect).v\n\tif rv.IsNil() {\n\t\treturn reflect.Zero(c.goType)\n\t}\n\treturn rv.Elem()\n}\n\nfunc (c *listConverter) IsValidPB(v protoreflect.Value) bool {\n\tlist, ok := v.Interface().(*listReflect)\n\tif !ok {\n\t\treturn false\n\t}\n\treturn list.v.Type().Elem() == c.goType\n}\n\nfunc (c *listConverter) IsValidGo(v reflect.Value) bool {\n\treturn v.IsValid() && v.Type() == c.goType\n}\n\nfunc (c *listConverter) New() protoreflect.Value {\n\treturn protoreflect.ValueOfList(&listReflect{reflect.New(c.goType), c.c})\n}\n\nfunc (c *listConverter) Zero() protoreflect.Value {\n\treturn protoreflect.ValueOfList(&listReflect{reflect.Zero(reflect.PtrTo(c.goType)), c.c})\n}\n\ntype listPtrConverter struct {\n\tgoType reflect.Type // *[]T\n\tc      Converter\n}\n\nfunc (c *listPtrConverter) PBValueOf(v reflect.Value) protoreflect.Value {\n\tif v.Type() != c.goType {\n\t\tpanic(fmt.Sprintf(\"invalid type: got %v, want %v\", v.Type(), c.goType))\n\t}\n\treturn protoreflect.ValueOfList(&listReflect{v, c.c})\n}\n\nfunc (c *listPtrConverter) GoValueOf(v protoreflect.Value) reflect.Value {\n\treturn v.List().(*listReflect).v\n}\n\nfunc (c *listPtrConverter) IsValidPB(v protoreflect.Value) bool {\n\tlist, ok := v.Interface().(*listReflect)\n\tif !ok {\n\t\treturn false\n\t}\n\treturn list.v.Type() == c.goType\n}\n\nfunc (c *listPtrConverter) IsValidGo(v reflect.Value) bool {\n\treturn v.IsValid() && v.Type() == c.goType\n}\n\nfunc (c *listPtrConverter) New() protoreflect.Value {\n\treturn c.PBValueOf(reflect.New(c.goType.Elem()))\n}\n\nfunc (c *listPtrConverter) Zero() protoreflect.Value {\n\treturn c.PBValueOf(reflect.Zero(c.goType))\n}\n\ntype listReflect struct {\n\tv    reflect.Value // *[]T\n\tconv Converter\n}\n\nfunc (ls *listReflect) Len() int {\n\tif ls.v.IsNil() {\n\t\treturn 0\n\t}\n\treturn ls.v.Elem().Len()\n}\nfunc (ls *listReflect) Get(i int) protoreflect.Value {\n\treturn ls.conv.PBValueOf(ls.v.Elem().Index(i))\n}\nfunc (ls *listReflect) Set(i int, v protoreflect.Value) {\n\tls.v.Elem().Index(i).Set(ls.conv.GoValueOf(v))\n}\nfunc (ls *listReflect) Append(v protoreflect.Value) {\n\tls.v.Elem().Set(reflect.Append(ls.v.Elem(), ls.conv.GoValueOf(v)))\n}\nfunc (ls *listReflect) AppendMutable() protoreflect.Value {\n\tif _, ok := ls.conv.(*messageConverter); !ok {\n\t\tpanic(\"invalid AppendMutable on list with non-message type\")\n\t}\n\tv := ls.NewElement()\n\tls.Append(v)\n\treturn v\n}\nfunc (ls *listReflect) Truncate(i int) {\n\tls.v.Elem().Set(ls.v.Elem().Slice(0, i))\n}\nfunc (ls *listReflect) NewElement() protoreflect.Value {\n\treturn ls.conv.New()\n}\nfunc (ls *listReflect) IsValid() bool {\n\treturn !ls.v.IsNil()\n}\nfunc (ls *listReflect) protoUnwrap() any {\n\treturn ls.v.Interface()\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/convert_map.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\ntype mapConverter struct {\n\tgoType           reflect.Type // map[K]V\n\tkeyConv, valConv Converter\n}\n\nfunc newMapConverter(t reflect.Type, fd protoreflect.FieldDescriptor) *mapConverter {\n\tif t.Kind() != reflect.Map {\n\t\tpanic(fmt.Sprintf(\"invalid Go type %v for field %v\", t, fd.FullName()))\n\t}\n\treturn &mapConverter{\n\t\tgoType:  t,\n\t\tkeyConv: newSingularConverter(t.Key(), fd.MapKey()),\n\t\tvalConv: newSingularConverter(t.Elem(), fd.MapValue()),\n\t}\n}\n\nfunc (c *mapConverter) PBValueOf(v reflect.Value) protoreflect.Value {\n\tif v.Type() != c.goType {\n\t\tpanic(fmt.Sprintf(\"invalid type: got %v, want %v\", v.Type(), c.goType))\n\t}\n\treturn protoreflect.ValueOfMap(&mapReflect{v, c.keyConv, c.valConv})\n}\n\nfunc (c *mapConverter) GoValueOf(v protoreflect.Value) reflect.Value {\n\treturn v.Map().(*mapReflect).v\n}\n\nfunc (c *mapConverter) IsValidPB(v protoreflect.Value) bool {\n\tmapv, ok := v.Interface().(*mapReflect)\n\tif !ok {\n\t\treturn false\n\t}\n\treturn mapv.v.Type() == c.goType\n}\n\nfunc (c *mapConverter) IsValidGo(v reflect.Value) bool {\n\treturn v.IsValid() && v.Type() == c.goType\n}\n\nfunc (c *mapConverter) New() protoreflect.Value {\n\treturn c.PBValueOf(reflect.MakeMap(c.goType))\n}\n\nfunc (c *mapConverter) Zero() protoreflect.Value {\n\treturn c.PBValueOf(reflect.Zero(c.goType))\n}\n\ntype mapReflect struct {\n\tv       reflect.Value // map[K]V\n\tkeyConv Converter\n\tvalConv Converter\n}\n\nfunc (ms *mapReflect) Len() int {\n\treturn ms.v.Len()\n}\nfunc (ms *mapReflect) Has(k protoreflect.MapKey) bool {\n\trk := ms.keyConv.GoValueOf(k.Value())\n\trv := ms.v.MapIndex(rk)\n\treturn rv.IsValid()\n}\nfunc (ms *mapReflect) Get(k protoreflect.MapKey) protoreflect.Value {\n\trk := ms.keyConv.GoValueOf(k.Value())\n\trv := ms.v.MapIndex(rk)\n\tif !rv.IsValid() {\n\t\treturn protoreflect.Value{}\n\t}\n\treturn ms.valConv.PBValueOf(rv)\n}\nfunc (ms *mapReflect) Set(k protoreflect.MapKey, v protoreflect.Value) {\n\trk := ms.keyConv.GoValueOf(k.Value())\n\trv := ms.valConv.GoValueOf(v)\n\tms.v.SetMapIndex(rk, rv)\n}\nfunc (ms *mapReflect) Clear(k protoreflect.MapKey) {\n\trk := ms.keyConv.GoValueOf(k.Value())\n\tms.v.SetMapIndex(rk, reflect.Value{})\n}\nfunc (ms *mapReflect) Mutable(k protoreflect.MapKey) protoreflect.Value {\n\tif _, ok := ms.valConv.(*messageConverter); !ok {\n\t\tpanic(\"invalid Mutable on map with non-message value type\")\n\t}\n\tv := ms.Get(k)\n\tif !v.IsValid() {\n\t\tv = ms.NewValue()\n\t\tms.Set(k, v)\n\t}\n\treturn v\n}\nfunc (ms *mapReflect) Range(f func(protoreflect.MapKey, protoreflect.Value) bool) {\n\titer := ms.v.MapRange()\n\tfor iter.Next() {\n\t\tk := ms.keyConv.PBValueOf(iter.Key()).MapKey()\n\t\tv := ms.valConv.PBValueOf(iter.Value())\n\t\tif !f(k, v) {\n\t\t\treturn\n\t\t}\n\t}\n}\nfunc (ms *mapReflect) NewValue() protoreflect.Value {\n\treturn ms.valConv.New()\n}\nfunc (ms *mapReflect) IsValid() bool {\n\treturn !ms.v.IsNil()\n}\nfunc (ms *mapReflect) protoUnwrap() any {\n\treturn ms.v.Interface()\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/decode.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"math/bits\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/internal/flags\"\n\t\"google.golang.org/protobuf/proto\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n)\n\nvar errDecode = errors.New(\"cannot parse invalid wire-format data\")\nvar errRecursionDepth = errors.New(\"exceeded maximum recursion depth\")\n\ntype unmarshalOptions struct {\n\tflags    protoiface.UnmarshalInputFlags\n\tresolver interface {\n\t\tFindExtensionByName(field protoreflect.FullName) (protoreflect.ExtensionType, error)\n\t\tFindExtensionByNumber(message protoreflect.FullName, field protoreflect.FieldNumber) (protoreflect.ExtensionType, error)\n\t}\n\tdepth int\n}\n\nfunc (o unmarshalOptions) Options() proto.UnmarshalOptions {\n\treturn proto.UnmarshalOptions{\n\t\tMerge:          true,\n\t\tAllowPartial:   true,\n\t\tDiscardUnknown: o.DiscardUnknown(),\n\t\tResolver:       o.resolver,\n\n\t\tNoLazyDecoding: o.NoLazyDecoding(),\n\t}\n}\n\nfunc (o unmarshalOptions) DiscardUnknown() bool {\n\treturn o.flags&protoiface.UnmarshalDiscardUnknown != 0\n}\n\nfunc (o unmarshalOptions) AliasBuffer() bool { return o.flags&protoiface.UnmarshalAliasBuffer != 0 }\nfunc (o unmarshalOptions) Validated() bool   { return o.flags&protoiface.UnmarshalValidated != 0 }\nfunc (o unmarshalOptions) NoLazyDecoding() bool {\n\treturn o.flags&protoiface.UnmarshalNoLazyDecoding != 0\n}\n\nfunc (o unmarshalOptions) CanBeLazy() bool {\n\tif o.resolver != protoregistry.GlobalTypes {\n\t\treturn false\n\t}\n\t// We ignore the UnmarshalInvalidateSizeCache even though it's not in the default set\n\treturn (o.flags & ^(protoiface.UnmarshalAliasBuffer | protoiface.UnmarshalValidated | protoiface.UnmarshalCheckRequired)) == 0\n}\n\nvar lazyUnmarshalOptions = unmarshalOptions{\n\tresolver: protoregistry.GlobalTypes,\n\n\tflags: protoiface.UnmarshalAliasBuffer | protoiface.UnmarshalValidated,\n\n\tdepth: protowire.DefaultRecursionLimit,\n}\n\ntype unmarshalOutput struct {\n\tn           int // number of bytes consumed\n\tinitialized bool\n}\n\n// unmarshal is protoreflect.Methods.Unmarshal.\nfunc (mi *MessageInfo) unmarshal(in protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\tvar p pointer\n\tif ms, ok := in.Message.(*messageState); ok {\n\t\tp = ms.pointer()\n\t} else {\n\t\tp = in.Message.(*messageReflectWrapper).pointer()\n\t}\n\tout, err := mi.unmarshalPointer(in.Buf, p, 0, unmarshalOptions{\n\t\tflags:    in.Flags,\n\t\tresolver: in.Resolver,\n\t\tdepth:    in.Depth,\n\t})\n\tvar flags protoiface.UnmarshalOutputFlags\n\tif out.initialized {\n\t\tflags |= protoiface.UnmarshalInitialized\n\t}\n\treturn protoiface.UnmarshalOutput{\n\t\tFlags: flags,\n\t}, err\n}\n\n// errUnknown is returned during unmarshaling to indicate a parse error that\n// should result in a field being placed in the unknown fields section (for example,\n// when the wire type doesn't match) as opposed to the entire unmarshal operation\n// failing (for example, when a field extends past the available input).\n//\n// This is a sentinel error which should never be visible to the user.\nvar errUnknown = errors.New(\"unknown\")\n\nfunc (mi *MessageInfo) unmarshalPointer(b []byte, p pointer, groupTag protowire.Number, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tmi.init()\n\topts.depth--\n\tif opts.depth < 0 {\n\t\treturn out, errRecursionDepth\n\t}\n\tif flags.ProtoLegacy && mi.isMessageSet {\n\t\treturn unmarshalMessageSet(mi, b, p, opts)\n\t}\n\n\tlazyDecoding := LazyEnabled() // default\n\tif opts.NoLazyDecoding() {\n\t\tlazyDecoding = false // explicitly disabled\n\t}\n\tif mi.lazyOffset.IsValid() && lazyDecoding {\n\t\treturn mi.unmarshalPointerLazy(b, p, groupTag, opts)\n\t}\n\treturn mi.unmarshalPointerEager(b, p, groupTag, opts)\n}\n\n// unmarshalPointerEager is the message unmarshalling function for all messages that are not lazy.\n// The corresponding function for Lazy is in google_lazy.go.\nfunc (mi *MessageInfo) unmarshalPointerEager(b []byte, p pointer, groupTag protowire.Number, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\n\tinitialized := true\n\tvar requiredMask uint64\n\tvar exts *map[int32]ExtensionField\n\n\tvar presence presence\n\tif mi.presenceOffset.IsValid() {\n\t\tpresence = p.Apply(mi.presenceOffset).PresenceInfo()\n\t}\n\n\tstart := len(b)\n\tfor len(b) > 0 {\n\t\t// Parse the tag (field number and wire type).\n\t\tvar tag uint64\n\t\tif b[0] < 0x80 {\n\t\t\ttag = uint64(b[0])\n\t\t\tb = b[1:]\n\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\ttag = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\tb = b[2:]\n\t\t} else {\n\t\t\tvar n int\n\t\t\ttag, n = protowire.ConsumeVarint(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t\tb = b[n:]\n\t\t}\n\t\tvar num protowire.Number\n\t\tif n := tag >> 3; n < uint64(protowire.MinValidNumber) || n > uint64(protowire.MaxValidNumber) {\n\t\t\treturn out, errDecode\n\t\t} else {\n\t\t\tnum = protowire.Number(n)\n\t\t}\n\t\twtyp := protowire.Type(tag & 7)\n\n\t\tif wtyp == protowire.EndGroupType {\n\t\t\tif num != groupTag {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t\tgroupTag = 0\n\t\t\tbreak\n\t\t}\n\n\t\tvar f *coderFieldInfo\n\t\tif int(num) < len(mi.denseCoderFields) {\n\t\t\tf = mi.denseCoderFields[num]\n\t\t} else {\n\t\t\tf = mi.coderFields[num]\n\t\t}\n\t\tvar n int\n\t\terr := errUnknown\n\t\tswitch {\n\t\tcase f != nil:\n\t\t\tif f.funcs.unmarshal == nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar o unmarshalOutput\n\t\t\to, err = f.funcs.unmarshal(b, p.Apply(f.offset), wtyp, f, opts)\n\t\t\tn = o.n\n\t\t\tif err != nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\trequiredMask |= f.validation.requiredBit\n\t\t\tif f.funcs.isInit != nil && !o.initialized {\n\t\t\t\tinitialized = false\n\t\t\t}\n\n\t\t\tif f.presenceIndex != noPresence {\n\t\t\t\tpresence.SetPresentUnatomic(f.presenceIndex, mi.presenceSize)\n\t\t\t}\n\n\t\tdefault:\n\t\t\t// Possible extension.\n\t\t\tif exts == nil && mi.extensionOffset.IsValid() {\n\t\t\t\texts = p.Apply(mi.extensionOffset).Extensions()\n\t\t\t\tif *exts == nil {\n\t\t\t\t\t*exts = make(map[int32]ExtensionField)\n\t\t\t\t}\n\t\t\t}\n\t\t\tif exts == nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar o unmarshalOutput\n\t\t\to, err = mi.unmarshalExtension(b, num, wtyp, *exts, opts)\n\t\t\tif err != nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tn = o.n\n\t\t\tif !o.initialized {\n\t\t\t\tinitialized = false\n\t\t\t}\n\t\t}\n\t\tif err != nil {\n\t\t\tif err != errUnknown {\n\t\t\t\treturn out, err\n\t\t\t}\n\t\t\tn = protowire.ConsumeFieldValue(num, wtyp, b)\n\t\t\tif n < 0 {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t\tif !opts.DiscardUnknown() && mi.unknownOffset.IsValid() {\n\t\t\t\tu := mi.mutableUnknownBytes(p)\n\t\t\t\t*u = protowire.AppendTag(*u, num, wtyp)\n\t\t\t\t*u = append(*u, b[:n]...)\n\t\t\t}\n\t\t}\n\t\tb = b[n:]\n\t}\n\tif groupTag != 0 {\n\t\treturn out, errDecode\n\t}\n\tif mi.numRequiredFields > 0 && bits.OnesCount64(requiredMask) != int(mi.numRequiredFields) {\n\t\tinitialized = false\n\t}\n\tif initialized {\n\t\tout.initialized = true\n\t}\n\tout.n = start - len(b)\n\treturn out, nil\n}\n\nfunc (mi *MessageInfo) unmarshalExtension(b []byte, num protowire.Number, wtyp protowire.Type, exts map[int32]ExtensionField, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tx := exts[int32(num)]\n\txt := x.Type()\n\tif xt == nil {\n\t\tvar err error\n\t\txt, err = opts.resolver.FindExtensionByNumber(mi.Desc.FullName(), num)\n\t\tif err != nil {\n\t\t\tif err == protoregistry.NotFound {\n\t\t\t\treturn out, errUnknown\n\t\t\t}\n\t\t\treturn out, errors.New(\"%v: unable to resolve extension %v: %v\", mi.Desc.FullName(), num, err)\n\t\t}\n\t}\n\txi := getExtensionFieldInfo(xt)\n\tif xi.funcs.unmarshal == nil {\n\t\treturn out, errUnknown\n\t}\n\tif flags.LazyUnmarshalExtensions {\n\t\tif opts.CanBeLazy() && x.canLazy(xt) {\n\t\t\tout, valid := skipExtension(b, xi, num, wtyp, opts)\n\t\t\tswitch valid {\n\t\t\tcase ValidationValid:\n\t\t\t\tif out.initialized {\n\t\t\t\t\tx.appendLazyBytes(xt, xi, num, wtyp, b[:out.n])\n\t\t\t\t\texts[int32(num)] = x\n\t\t\t\t\treturn out, nil\n\t\t\t\t}\n\t\t\tcase ValidationInvalid:\n\t\t\t\treturn out, errDecode\n\t\t\tcase ValidationUnknown:\n\t\t\t}\n\t\t}\n\t}\n\tival := x.Value()\n\tif !ival.IsValid() && xi.unmarshalNeedsValue {\n\t\t// Create a new message, list, or map value to fill in.\n\t\t// For enums, create a prototype value to let the unmarshal func know the\n\t\t// concrete type.\n\t\tival = xt.New()\n\t}\n\tv, out, err := xi.funcs.unmarshal(b, ival, num, wtyp, opts)\n\tif err != nil {\n\t\treturn out, err\n\t}\n\tif xi.funcs.isInit == nil {\n\t\tout.initialized = true\n\t}\n\tx.Set(xt, v)\n\texts[int32(num)] = x\n\treturn out, nil\n}\n\nfunc skipExtension(b []byte, xi *extensionFieldInfo, num protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (out unmarshalOutput, _ ValidationStatus) {\n\tif xi.validation.mi == nil {\n\t\treturn out, ValidationUnknown\n\t}\n\txi.validation.mi.init()\n\tswitch xi.validation.typ {\n\tcase validationTypeMessage:\n\t\tif wtyp != protowire.BytesType {\n\t\t\treturn out, ValidationUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn out, ValidationUnknown\n\t\t}\n\n\t\tif opts.Validated() {\n\t\t\tout.initialized = true\n\t\t\tout.n = n\n\t\t\treturn out, ValidationValid\n\t\t}\n\n\t\tout, st := xi.validation.mi.validate(v, 0, opts)\n\t\tout.n = n\n\t\treturn out, st\n\tcase validationTypeGroup:\n\t\tif wtyp != protowire.StartGroupType {\n\t\t\treturn out, ValidationUnknown\n\t\t}\n\t\tout, st := xi.validation.mi.validate(b, num, opts)\n\t\treturn out, st\n\tdefault:\n\t\treturn out, ValidationUnknown\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/encode.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"math\"\n\t\"sort\"\n\t\"sync/atomic\"\n\n\t\"google.golang.org/protobuf/internal/flags\"\n\t\"google.golang.org/protobuf/internal/protolazy\"\n\t\"google.golang.org/protobuf/proto\"\n\tpiface \"google.golang.org/protobuf/runtime/protoiface\"\n)\n\ntype marshalOptions struct {\n\tflags piface.MarshalInputFlags\n}\n\nfunc (o marshalOptions) Options() proto.MarshalOptions {\n\treturn proto.MarshalOptions{\n\t\tAllowPartial:  true,\n\t\tDeterministic: o.Deterministic(),\n\t\tUseCachedSize: o.UseCachedSize(),\n\t}\n}\n\nfunc (o marshalOptions) Deterministic() bool { return o.flags&piface.MarshalDeterministic != 0 }\nfunc (o marshalOptions) UseCachedSize() bool { return o.flags&piface.MarshalUseCachedSize != 0 }\n\n// size is protoreflect.Methods.Size.\nfunc (mi *MessageInfo) size(in piface.SizeInput) piface.SizeOutput {\n\tvar p pointer\n\tif ms, ok := in.Message.(*messageState); ok {\n\t\tp = ms.pointer()\n\t} else {\n\t\tp = in.Message.(*messageReflectWrapper).pointer()\n\t}\n\tsize := mi.sizePointer(p, marshalOptions{\n\t\tflags: in.Flags,\n\t})\n\treturn piface.SizeOutput{Size: size}\n}\n\nfunc (mi *MessageInfo) sizePointer(p pointer, opts marshalOptions) (size int) {\n\tmi.init()\n\tif p.IsNil() {\n\t\treturn 0\n\t}\n\tif opts.UseCachedSize() && mi.sizecacheOffset.IsValid() {\n\t\t// The size cache contains the size + 1, to allow the\n\t\t// zero value to be invalid, while also allowing for a\n\t\t// 0 size to be cached.\n\t\tif size := atomic.LoadInt32(p.Apply(mi.sizecacheOffset).Int32()); size > 0 {\n\t\t\treturn int(size - 1)\n\t\t}\n\t}\n\treturn mi.sizePointerSlow(p, opts)\n}\n\nfunc (mi *MessageInfo) sizePointerSlow(p pointer, opts marshalOptions) (size int) {\n\tif flags.ProtoLegacy && mi.isMessageSet {\n\t\tsize = sizeMessageSet(mi, p, opts)\n\t\tif mi.sizecacheOffset.IsValid() {\n\t\t\tatomic.StoreInt32(p.Apply(mi.sizecacheOffset).Int32(), int32(size+1))\n\t\t}\n\t\treturn size\n\t}\n\tif mi.extensionOffset.IsValid() {\n\t\te := p.Apply(mi.extensionOffset).Extensions()\n\t\tsize += mi.sizeExtensions(e, opts)\n\t}\n\n\tvar lazy **protolazy.XXX_lazyUnmarshalInfo\n\tvar presence presence\n\tif mi.presenceOffset.IsValid() {\n\t\tpresence = p.Apply(mi.presenceOffset).PresenceInfo()\n\t\tif mi.lazyOffset.IsValid() {\n\t\t\tlazy = p.Apply(mi.lazyOffset).LazyInfoPtr()\n\t\t}\n\t}\n\n\tfor _, f := range mi.orderedCoderFields {\n\t\tif f.funcs.size == nil {\n\t\t\tcontinue\n\t\t}\n\t\tfptr := p.Apply(f.offset)\n\n\t\tif f.presenceIndex != noPresence {\n\t\t\tif !presence.Present(f.presenceIndex) {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif f.isLazy && fptr.AtomicGetPointer().IsNil() {\n\t\t\t\tif lazyFields(opts) {\n\t\t\t\t\tsize += (*lazy).SizeField(uint32(f.num))\n\t\t\t\t\tcontinue\n\t\t\t\t} else {\n\t\t\t\t\tmi.lazyUnmarshal(p, f.num)\n\t\t\t\t}\n\t\t\t}\n\t\t\tsize += f.funcs.size(fptr, f, opts)\n\t\t\tcontinue\n\t\t}\n\n\t\tif f.isPointer && fptr.Elem().IsNil() {\n\t\t\tcontinue\n\t\t}\n\t\tsize += f.funcs.size(fptr, f, opts)\n\t}\n\tif mi.unknownOffset.IsValid() {\n\t\tif u := mi.getUnknownBytes(p); u != nil {\n\t\t\tsize += len(*u)\n\t\t}\n\t}\n\tif mi.sizecacheOffset.IsValid() {\n\t\tif size > (math.MaxInt32 - 1) {\n\t\t\t// The size is too large for the int32 sizecache field.\n\t\t\t// We will need to recompute the size when encoding;\n\t\t\t// unfortunately expensive, but better than invalid output.\n\t\t\tatomic.StoreInt32(p.Apply(mi.sizecacheOffset).Int32(), 0)\n\t\t} else {\n\t\t\t// The size cache contains the size + 1, to allow the\n\t\t\t// zero value to be invalid, while also allowing for a\n\t\t\t// 0 size to be cached.\n\t\t\tatomic.StoreInt32(p.Apply(mi.sizecacheOffset).Int32(), int32(size+1))\n\t\t}\n\t}\n\treturn size\n}\n\n// marshal is protoreflect.Methods.Marshal.\nfunc (mi *MessageInfo) marshal(in piface.MarshalInput) (out piface.MarshalOutput, err error) {\n\tvar p pointer\n\tif ms, ok := in.Message.(*messageState); ok {\n\t\tp = ms.pointer()\n\t} else {\n\t\tp = in.Message.(*messageReflectWrapper).pointer()\n\t}\n\tb, err := mi.marshalAppendPointer(in.Buf, p, marshalOptions{\n\t\tflags: in.Flags,\n\t})\n\treturn piface.MarshalOutput{Buf: b}, err\n}\n\nfunc (mi *MessageInfo) marshalAppendPointer(b []byte, p pointer, opts marshalOptions) ([]byte, error) {\n\tmi.init()\n\tif p.IsNil() {\n\t\treturn b, nil\n\t}\n\tif flags.ProtoLegacy && mi.isMessageSet {\n\t\treturn marshalMessageSet(mi, b, p, opts)\n\t}\n\tvar err error\n\t// The old marshaler encodes extensions at beginning.\n\tif mi.extensionOffset.IsValid() {\n\t\te := p.Apply(mi.extensionOffset).Extensions()\n\t\t// TODO: Special handling for MessageSet?\n\t\tb, err = mi.appendExtensions(b, e, opts)\n\t\tif err != nil {\n\t\t\treturn b, err\n\t\t}\n\t}\n\n\tvar lazy **protolazy.XXX_lazyUnmarshalInfo\n\tvar presence presence\n\tif mi.presenceOffset.IsValid() {\n\t\tpresence = p.Apply(mi.presenceOffset).PresenceInfo()\n\t\tif mi.lazyOffset.IsValid() {\n\t\t\tlazy = p.Apply(mi.lazyOffset).LazyInfoPtr()\n\t\t}\n\t}\n\n\tfor _, f := range mi.orderedCoderFields {\n\t\tif f.funcs.marshal == nil {\n\t\t\tcontinue\n\t\t}\n\t\tfptr := p.Apply(f.offset)\n\n\t\tif f.presenceIndex != noPresence {\n\t\t\tif !presence.Present(f.presenceIndex) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif f.isLazy {\n\t\t\t\t// Be careful, this field needs to be read atomically, like for a get\n\t\t\t\tif f.isPointer && fptr.AtomicGetPointer().IsNil() {\n\t\t\t\t\tif lazyFields(opts) {\n\t\t\t\t\t\tb, _ = (*lazy).AppendField(b, uint32(f.num))\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmi.lazyUnmarshal(p, f.num)\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tb, err = f.funcs.marshal(b, fptr, f, opts)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn b, err\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t} else if f.isPointer && fptr.Elem().IsNil() {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tb, err = f.funcs.marshal(b, fptr, f, opts)\n\t\t\tif err != nil {\n\t\t\t\treturn b, err\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\tif f.isPointer && fptr.Elem().IsNil() {\n\t\t\tcontinue\n\t\t}\n\t\tb, err = f.funcs.marshal(b, fptr, f, opts)\n\t\tif err != nil {\n\t\t\treturn b, err\n\t\t}\n\t}\n\tif mi.unknownOffset.IsValid() && !mi.isMessageSet {\n\t\tif u := mi.getUnknownBytes(p); u != nil {\n\t\t\tb = append(b, (*u)...)\n\t\t}\n\t}\n\treturn b, nil\n}\n\n// fullyLazyExtensions returns true if we should attempt to keep extensions lazy over size and marshal.\nfunc fullyLazyExtensions(opts marshalOptions) bool {\n\t// When deterministic marshaling is requested, force an unmarshal for lazy\n\t// extensions to produce a deterministic result, instead of passing through\n\t// bytes lazily that may or may not match what Go Protobuf would produce.\n\treturn opts.flags&piface.MarshalDeterministic == 0\n}\n\n// lazyFields returns true if we should attempt to keep fields lazy over size and marshal.\nfunc lazyFields(opts marshalOptions) bool {\n\t// When deterministic marshaling is requested, force an unmarshal for lazy\n\t// fields to produce a deterministic result, instead of passing through\n\t// bytes lazily that may or may not match what Go Protobuf would produce.\n\treturn opts.flags&piface.MarshalDeterministic == 0\n}\n\nfunc (mi *MessageInfo) sizeExtensions(ext *map[int32]ExtensionField, opts marshalOptions) (n int) {\n\tif ext == nil {\n\t\treturn 0\n\t}\n\tfor _, x := range *ext {\n\t\txi := getExtensionFieldInfo(x.Type())\n\t\tif xi.funcs.size == nil {\n\t\t\tcontinue\n\t\t}\n\t\tif fullyLazyExtensions(opts) {\n\t\t\t// Don't expand the extension, instead use the buffer to calculate size\n\t\t\tif lb := x.lazyBuffer(); lb != nil {\n\t\t\t\t// We got hold of the buffer, so it's still lazy.\n\t\t\t\tn += len(lb)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\t\tn += xi.funcs.size(x.Value(), xi.tagsize, opts)\n\t}\n\treturn n\n}\n\nfunc (mi *MessageInfo) appendExtensions(b []byte, ext *map[int32]ExtensionField, opts marshalOptions) ([]byte, error) {\n\tif ext == nil {\n\t\treturn b, nil\n\t}\n\n\tswitch len(*ext) {\n\tcase 0:\n\t\treturn b, nil\n\tcase 1:\n\t\t// Fast-path for one extension: Don't bother sorting the keys.\n\t\tvar err error\n\t\tfor _, x := range *ext {\n\t\t\txi := getExtensionFieldInfo(x.Type())\n\t\t\tif fullyLazyExtensions(opts) {\n\t\t\t\t// Don't expand the extension if it's still in wire format, instead use the buffer content.\n\t\t\t\tif lb := x.lazyBuffer(); lb != nil {\n\t\t\t\t\tb = append(b, lb...)\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t}\n\t\t\tb, err = xi.funcs.marshal(b, x.Value(), xi.wiretag, opts)\n\t\t}\n\t\treturn b, err\n\tdefault:\n\t\t// Sort the keys to provide a deterministic encoding.\n\t\t// Not sure this is required, but the old code does it.\n\t\tkeys := make([]int, 0, len(*ext))\n\t\tfor k := range *ext {\n\t\t\tkeys = append(keys, int(k))\n\t\t}\n\t\tsort.Ints(keys)\n\t\tvar err error\n\t\tfor _, k := range keys {\n\t\t\tx := (*ext)[int32(k)]\n\t\t\txi := getExtensionFieldInfo(x.Type())\n\t\t\tif fullyLazyExtensions(opts) {\n\t\t\t\t// Don't expand the extension if it's still in wire format, instead use the buffer content.\n\t\t\t\tif lb := x.lazyBuffer(); lb != nil {\n\t\t\t\t\tb = append(b, lb...)\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t}\n\t\t\tb, err = xi.funcs.marshal(b, x.Value(), xi.wiretag, opts)\n\t\t\tif err != nil {\n\t\t\t\treturn b, err\n\t\t\t}\n\t\t}\n\t\treturn b, nil\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/enum.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"reflect\"\n\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\ntype EnumInfo struct {\n\tGoReflectType reflect.Type // int32 kind\n\tDesc          protoreflect.EnumDescriptor\n}\n\nfunc (t *EnumInfo) New(n protoreflect.EnumNumber) protoreflect.Enum {\n\treturn reflect.ValueOf(n).Convert(t.GoReflectType).Interface().(protoreflect.Enum)\n}\nfunc (t *EnumInfo) Descriptor() protoreflect.EnumDescriptor { return t.Desc }\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/equal.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"bytes\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n)\n\nfunc equal(in protoiface.EqualInput) protoiface.EqualOutput {\n\treturn protoiface.EqualOutput{Equal: equalMessage(in.MessageA, in.MessageB)}\n}\n\n// equalMessage is a fast-path variant of protoreflect.equalMessage.\n// It takes advantage of the internal messageState type to avoid\n// unnecessary allocations, type assertions.\nfunc equalMessage(mx, my protoreflect.Message) bool {\n\tif mx == nil || my == nil {\n\t\treturn mx == my\n\t}\n\tif mx.Descriptor() != my.Descriptor() {\n\t\treturn false\n\t}\n\n\tmsx, ok := mx.(*messageState)\n\tif !ok {\n\t\treturn protoreflect.ValueOfMessage(mx).Equal(protoreflect.ValueOfMessage(my))\n\t}\n\tmsy, ok := my.(*messageState)\n\tif !ok {\n\t\treturn protoreflect.ValueOfMessage(mx).Equal(protoreflect.ValueOfMessage(my))\n\t}\n\n\tmi := msx.messageInfo()\n\tmiy := msy.messageInfo()\n\tif mi != miy {\n\t\treturn protoreflect.ValueOfMessage(mx).Equal(protoreflect.ValueOfMessage(my))\n\t}\n\tmi.init()\n\t// Compares regular fields\n\t// Modified Message.Range code that compares two messages of the same type\n\t// while going over the fields.\n\tfor _, ri := range mi.rangeInfos {\n\t\tvar fd protoreflect.FieldDescriptor\n\t\tvar vx, vy protoreflect.Value\n\n\t\tswitch ri := ri.(type) {\n\t\tcase *fieldInfo:\n\t\t\thx := ri.has(msx.pointer())\n\t\t\thy := ri.has(msy.pointer())\n\t\t\tif hx != hy {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif !hx {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tfd = ri.fieldDesc\n\t\t\tvx = ri.get(msx.pointer())\n\t\t\tvy = ri.get(msy.pointer())\n\t\tcase *oneofInfo:\n\t\t\tfnx := ri.which(msx.pointer())\n\t\t\tfny := ri.which(msy.pointer())\n\t\t\tif fnx != fny {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif fnx <= 0 {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tfi := mi.fields[fnx]\n\t\t\tfd = fi.fieldDesc\n\t\t\tvx = fi.get(msx.pointer())\n\t\t\tvy = fi.get(msy.pointer())\n\t\t}\n\n\t\tif !equalValue(fd, vx, vy) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Compare extensions.\n\t// This is more complicated because mx or my could have empty/nil extension maps,\n\t// however some populated extension map values are equal to nil extension maps.\n\temx := mi.extensionMap(msx.pointer())\n\temy := mi.extensionMap(msy.pointer())\n\tif emx != nil {\n\t\tfor k, x := range *emx {\n\t\t\txd := x.Type().TypeDescriptor()\n\t\t\txv := x.Value()\n\t\t\tvar y ExtensionField\n\t\t\tok := false\n\t\t\tif emy != nil {\n\t\t\t\ty, ok = (*emy)[k]\n\t\t\t}\n\t\t\t// We need to treat empty lists as equal to nil values\n\t\t\tif emy == nil || !ok {\n\t\t\t\tif xd.IsList() && xv.List().Len() == 0 {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\tif !equalValue(xd, xv, y.Value()) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t}\n\tif emy != nil {\n\t\t// emy may have extensions emx does not have, need to check them as well\n\t\tfor k, y := range *emy {\n\t\t\tif emx != nil {\n\t\t\t\t// emx has the field, so we already checked it\n\t\t\t\tif _, ok := (*emx)[k]; ok {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Empty lists are equal to nil\n\t\t\tif y.Type().TypeDescriptor().IsList() && y.Value().List().Len() == 0 {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// Cant be equal if the extension is populated\n\t\t\treturn false\n\t\t}\n\t}\n\n\treturn equalUnknown(mx.GetUnknown(), my.GetUnknown())\n}\n\nfunc equalValue(fd protoreflect.FieldDescriptor, vx, vy protoreflect.Value) bool {\n\t// slow path\n\tif fd.Kind() != protoreflect.MessageKind {\n\t\treturn vx.Equal(vy)\n\t}\n\n\t// fast path special cases\n\tif fd.IsMap() {\n\t\tif fd.MapValue().Kind() == protoreflect.MessageKind {\n\t\t\treturn equalMessageMap(vx.Map(), vy.Map())\n\t\t}\n\t\treturn vx.Equal(vy)\n\t}\n\n\tif fd.IsList() {\n\t\treturn equalMessageList(vx.List(), vy.List())\n\t}\n\n\treturn equalMessage(vx.Message(), vy.Message())\n}\n\n// Mostly copied from protoreflect.equalMap.\n// This variant only works for messages as map types.\n// All other map types should be handled via Value.Equal.\nfunc equalMessageMap(mx, my protoreflect.Map) bool {\n\tif mx.Len() != my.Len() {\n\t\treturn false\n\t}\n\tequal := true\n\tmx.Range(func(k protoreflect.MapKey, vx protoreflect.Value) bool {\n\t\tif !my.Has(k) {\n\t\t\tequal = false\n\t\t\treturn false\n\t\t}\n\t\tvy := my.Get(k)\n\t\tequal = equalMessage(vx.Message(), vy.Message())\n\t\treturn equal\n\t})\n\treturn equal\n}\n\n// Mostly copied from protoreflect.equalList.\n// The only change is the usage of equalImpl instead of protoreflect.equalValue.\nfunc equalMessageList(lx, ly protoreflect.List) bool {\n\tif lx.Len() != ly.Len() {\n\t\treturn false\n\t}\n\tfor i := 0; i < lx.Len(); i++ {\n\t\t// We only operate on messages here since equalImpl will not call us in any other case.\n\t\tif !equalMessage(lx.Get(i).Message(), ly.Get(i).Message()) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// equalUnknown compares unknown fields by direct comparison on the raw bytes\n// of each individual field number.\n// Copied from protoreflect.equalUnknown.\nfunc equalUnknown(x, y protoreflect.RawFields) bool {\n\tif len(x) != len(y) {\n\t\treturn false\n\t}\n\tif bytes.Equal([]byte(x), []byte(y)) {\n\t\treturn true\n\t}\n\n\tmx := make(map[protoreflect.FieldNumber]protoreflect.RawFields)\n\tmy := make(map[protoreflect.FieldNumber]protoreflect.RawFields)\n\tfor len(x) > 0 {\n\t\tfnum, _, n := protowire.ConsumeField(x)\n\t\tmx[fnum] = append(mx[fnum], x[:n]...)\n\t\tx = x[n:]\n\t}\n\tfor len(y) > 0 {\n\t\tfnum, _, n := protowire.ConsumeField(y)\n\t\tmy[fnum] = append(my[fnum], y[:n]...)\n\t\ty = y[n:]\n\t}\n\tif len(mx) != len(my) {\n\t\treturn false\n\t}\n\n\tfor k, v1 := range mx {\n\t\tif v2, ok := my[k]; !ok || !bytes.Equal([]byte(v1), []byte(v2)) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\treturn true\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/extension.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"reflect\"\n\t\"sync\"\n\t\"sync/atomic\"\n\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n)\n\n// ExtensionInfo implements ExtensionType.\n//\n// This type contains a number of exported fields for legacy compatibility.\n// The only non-deprecated use of this type is through the methods of the\n// ExtensionType interface.\ntype ExtensionInfo struct {\n\t// An ExtensionInfo may exist in several stages of initialization.\n\t//\n\t// extensionInfoUninitialized: Some or all of the legacy exported\n\t// fields may be set, but none of the unexported fields have been\n\t// initialized. This is the starting state for an ExtensionInfo\n\t// in legacy generated code.\n\t//\n\t// extensionInfoDescInit: The desc field is set, but other unexported fields\n\t// may not be initialized. Legacy exported fields may or may not be set.\n\t// This is the starting state for an ExtensionInfo in newly generated code.\n\t//\n\t// extensionInfoFullInit: The ExtensionInfo is fully initialized.\n\t// This state is only entered after lazy initialization is complete.\n\tinit uint32\n\tmu   sync.Mutex\n\n\tgoType reflect.Type\n\tdesc   extensionTypeDescriptor\n\tconv   Converter\n\tinfo   *extensionFieldInfo // for fast-path method implementations\n\n\t// ExtendedType is a typed nil-pointer to the parent message type that\n\t// is being extended. It is possible for this to be unpopulated in v2\n\t// since the message may no longer implement the MessageV1 interface.\n\t//\n\t// Deprecated: Use the ExtendedType method instead.\n\tExtendedType protoiface.MessageV1\n\n\t// ExtensionType is the zero value of the extension type.\n\t//\n\t// For historical reasons, reflect.TypeOf(ExtensionType) and the\n\t// type returned by InterfaceOf may not be identical.\n\t//\n\t// Deprecated: Use InterfaceOf(xt.Zero()) instead.\n\tExtensionType any\n\n\t// Field is the field number of the extension.\n\t//\n\t// Deprecated: Use the Descriptor().Number method instead.\n\tField int32\n\n\t// Name is the fully qualified name of extension.\n\t//\n\t// Deprecated: Use the Descriptor().FullName method instead.\n\tName string\n\n\t// Tag is the protobuf struct tag used in the v1 API.\n\t//\n\t// Deprecated: Do not use.\n\tTag string\n\n\t// Filename is the proto filename in which the extension is defined.\n\t//\n\t// Deprecated: Use Descriptor().ParentFile().Path() instead.\n\tFilename string\n}\n\n// Stages of initialization: See the ExtensionInfo.init field.\nconst (\n\textensionInfoUninitialized = 0\n\textensionInfoDescInit      = 1\n\textensionInfoFullInit      = 2\n)\n\nfunc InitExtensionInfo(xi *ExtensionInfo, xd protoreflect.ExtensionDescriptor, goType reflect.Type) {\n\txi.goType = goType\n\txi.desc = extensionTypeDescriptor{xd, xi}\n\txi.init = extensionInfoDescInit\n}\n\nfunc (xi *ExtensionInfo) New() protoreflect.Value {\n\treturn xi.lazyInit().New()\n}\nfunc (xi *ExtensionInfo) Zero() protoreflect.Value {\n\treturn xi.lazyInit().Zero()\n}\nfunc (xi *ExtensionInfo) ValueOf(v any) protoreflect.Value {\n\treturn xi.lazyInit().PBValueOf(reflect.ValueOf(v))\n}\nfunc (xi *ExtensionInfo) InterfaceOf(v protoreflect.Value) any {\n\treturn xi.lazyInit().GoValueOf(v).Interface()\n}\nfunc (xi *ExtensionInfo) IsValidValue(v protoreflect.Value) bool {\n\treturn xi.lazyInit().IsValidPB(v)\n}\nfunc (xi *ExtensionInfo) IsValidInterface(v any) bool {\n\treturn xi.lazyInit().IsValidGo(reflect.ValueOf(v))\n}\nfunc (xi *ExtensionInfo) TypeDescriptor() protoreflect.ExtensionTypeDescriptor {\n\tif atomic.LoadUint32(&xi.init) < extensionInfoDescInit {\n\t\txi.lazyInitSlow()\n\t}\n\treturn &xi.desc\n}\n\nfunc (xi *ExtensionInfo) lazyInit() Converter {\n\tif atomic.LoadUint32(&xi.init) < extensionInfoFullInit {\n\t\txi.lazyInitSlow()\n\t}\n\treturn xi.conv\n}\n\nfunc (xi *ExtensionInfo) lazyInitSlow() {\n\txi.mu.Lock()\n\tdefer xi.mu.Unlock()\n\n\tif xi.init == extensionInfoFullInit {\n\t\treturn\n\t}\n\tdefer atomic.StoreUint32(&xi.init, extensionInfoFullInit)\n\n\tif xi.desc.ExtensionDescriptor == nil {\n\t\txi.initFromLegacy()\n\t}\n\tif !xi.desc.ExtensionDescriptor.IsPlaceholder() {\n\t\tif xi.ExtensionType == nil {\n\t\t\txi.initToLegacy()\n\t\t}\n\t\txi.conv = NewConverter(xi.goType, xi.desc.ExtensionDescriptor)\n\t\txi.info = makeExtensionFieldInfo(xi.desc.ExtensionDescriptor)\n\t\txi.info.validation = newValidationInfo(xi.desc.ExtensionDescriptor, xi.goType)\n\t}\n}\n\ntype extensionTypeDescriptor struct {\n\tprotoreflect.ExtensionDescriptor\n\txi *ExtensionInfo\n}\n\nfunc (xtd *extensionTypeDescriptor) Type() protoreflect.ExtensionType {\n\treturn xtd.xi\n}\nfunc (xtd *extensionTypeDescriptor) Descriptor() protoreflect.ExtensionDescriptor {\n\treturn xtd.ExtensionDescriptor\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/lazy.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"fmt\"\n\t\"math/bits\"\n\t\"os\"\n\t\"reflect\"\n\t\"sort\"\n\t\"sync/atomic\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/internal/protolazy\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\tpreg \"google.golang.org/protobuf/reflect/protoregistry\"\n\tpiface \"google.golang.org/protobuf/runtime/protoiface\"\n)\n\nvar enableLazy int32 = func() int32 {\n\tif os.Getenv(\"GOPROTODEBUG\") == \"nolazy\" {\n\t\treturn 0\n\t}\n\treturn 1\n}()\n\n// EnableLazyUnmarshal enables lazy unmarshaling.\nfunc EnableLazyUnmarshal(enable bool) {\n\tif enable {\n\t\tatomic.StoreInt32(&enableLazy, 1)\n\t\treturn\n\t}\n\tatomic.StoreInt32(&enableLazy, 0)\n}\n\n// LazyEnabled reports whether lazy unmarshalling is currently enabled.\nfunc LazyEnabled() bool {\n\treturn atomic.LoadInt32(&enableLazy) != 0\n}\n\n// UnmarshalField unmarshals a field in a message.\nfunc UnmarshalField(m interface{}, num protowire.Number) {\n\tswitch m := m.(type) {\n\tcase *messageState:\n\t\tm.messageInfo().lazyUnmarshal(m.pointer(), num)\n\tcase *messageReflectWrapper:\n\t\tm.messageInfo().lazyUnmarshal(m.pointer(), num)\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"unsupported wrapper type %T\", m))\n\t}\n}\n\nfunc (mi *MessageInfo) lazyUnmarshal(p pointer, num protoreflect.FieldNumber) {\n\tvar f *coderFieldInfo\n\tif int(num) < len(mi.denseCoderFields) {\n\t\tf = mi.denseCoderFields[num]\n\t} else {\n\t\tf = mi.coderFields[num]\n\t}\n\tif f == nil {\n\t\tpanic(fmt.Sprintf(\"lazyUnmarshal: field info for %v.%v\", mi.Desc.FullName(), num))\n\t}\n\tlazy := *p.Apply(mi.lazyOffset).LazyInfoPtr()\n\tstart, end, found, _, multipleEntries := lazy.FindFieldInProto(uint32(num))\n\tif !found && multipleEntries == nil {\n\t\tpanic(fmt.Sprintf(\"lazyUnmarshal: can't find field data for %v.%v\", mi.Desc.FullName(), num))\n\t}\n\t// The actual pointer in the message can not be set until the whole struct is filled in, otherwise we will have races.\n\t// Create another pointer and set it atomically, if we won the race and the pointer in the original message is still nil.\n\tfp := pointerOfValue(reflect.New(f.ft))\n\tif multipleEntries != nil {\n\t\tfor _, entry := range multipleEntries {\n\t\t\tmi.unmarshalField(lazy.Buffer()[entry.Start:entry.End], fp, f, lazy, lazy.UnmarshalFlags())\n\t\t}\n\t} else {\n\t\tmi.unmarshalField(lazy.Buffer()[start:end], fp, f, lazy, lazy.UnmarshalFlags())\n\t}\n\tp.Apply(f.offset).AtomicSetPointerIfNil(fp.Elem())\n}\n\nfunc (mi *MessageInfo) unmarshalField(b []byte, p pointer, f *coderFieldInfo, lazyInfo *protolazy.XXX_lazyUnmarshalInfo, flags piface.UnmarshalInputFlags) error {\n\topts := lazyUnmarshalOptions\n\topts.flags |= flags\n\tfor len(b) > 0 {\n\t\t// Parse the tag (field number and wire type).\n\t\tvar tag uint64\n\t\tif b[0] < 0x80 {\n\t\t\ttag = uint64(b[0])\n\t\t\tb = b[1:]\n\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\ttag = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\tb = b[2:]\n\t\t} else {\n\t\t\tvar n int\n\t\t\ttag, n = protowire.ConsumeVarint(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn errors.New(\"invalid wire data\")\n\t\t\t}\n\t\t\tb = b[n:]\n\t\t}\n\t\tvar num protowire.Number\n\t\tif n := tag >> 3; n < uint64(protowire.MinValidNumber) || n > uint64(protowire.MaxValidNumber) {\n\t\t\treturn errors.New(\"invalid wire data\")\n\t\t} else {\n\t\t\tnum = protowire.Number(n)\n\t\t}\n\t\twtyp := protowire.Type(tag & 7)\n\t\tif num == f.num {\n\t\t\to, err := f.funcs.unmarshal(b, p, wtyp, f, opts)\n\t\t\tif err == nil {\n\t\t\t\tb = b[o.n:]\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err != errUnknown {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t\tn := protowire.ConsumeFieldValue(num, wtyp, b)\n\t\tif n < 0 {\n\t\t\treturn errors.New(\"invalid wire data\")\n\t\t}\n\t\tb = b[n:]\n\t}\n\treturn nil\n}\n\nfunc (mi *MessageInfo) skipField(b []byte, f *coderFieldInfo, wtyp protowire.Type, opts unmarshalOptions) (out unmarshalOutput, _ ValidationStatus) {\n\tfmi := f.validation.mi\n\tif fmi == nil {\n\t\tfd := mi.Desc.Fields().ByNumber(f.num)\n\t\tif fd == nil {\n\t\t\treturn out, ValidationUnknown\n\t\t}\n\t\tmessageName := fd.Message().FullName()\n\t\tmessageType, err := preg.GlobalTypes.FindMessageByName(messageName)\n\t\tif err != nil {\n\t\t\treturn out, ValidationUnknown\n\t\t}\n\t\tvar ok bool\n\t\tfmi, ok = messageType.(*MessageInfo)\n\t\tif !ok {\n\t\t\treturn out, ValidationUnknown\n\t\t}\n\t}\n\tfmi.init()\n\tswitch f.validation.typ {\n\tcase validationTypeMessage:\n\t\tif wtyp != protowire.BytesType {\n\t\t\treturn out, ValidationWrongWireType\n\t\t}\n\t\tv, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn out, ValidationInvalid\n\t\t}\n\t\tout, st := fmi.validate(v, 0, opts)\n\t\tout.n = n\n\t\treturn out, st\n\tcase validationTypeGroup:\n\t\tif wtyp != protowire.StartGroupType {\n\t\t\treturn out, ValidationWrongWireType\n\t\t}\n\t\tout, st := fmi.validate(b, f.num, opts)\n\t\treturn out, st\n\tdefault:\n\t\treturn out, ValidationUnknown\n\t}\n}\n\n// unmarshalPointerLazy is similar to unmarshalPointerEager, but it\n// specifically handles lazy unmarshalling.  it expects lazyOffset and\n// presenceOffset to both be valid.\nfunc (mi *MessageInfo) unmarshalPointerLazy(b []byte, p pointer, groupTag protowire.Number, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tinitialized := true\n\tvar requiredMask uint64\n\tvar lazy **protolazy.XXX_lazyUnmarshalInfo\n\tvar presence presence\n\tvar lazyIndex []protolazy.IndexEntry\n\tvar lastNum protowire.Number\n\toutOfOrder := false\n\tlazyDecode := false\n\tpresence = p.Apply(mi.presenceOffset).PresenceInfo()\n\tlazy = p.Apply(mi.lazyOffset).LazyInfoPtr()\n\tif !presence.AnyPresent(mi.presenceSize) {\n\t\tif opts.CanBeLazy() {\n\t\t\t// If the message contains existing data, we need to merge into it.\n\t\t\t// Lazy unmarshaling doesn't merge, so only enable it when the\n\t\t\t// message is empty (has no presence bitmap).\n\t\t\tlazyDecode = true\n\t\t\tif *lazy == nil {\n\t\t\t\t*lazy = &protolazy.XXX_lazyUnmarshalInfo{}\n\t\t\t}\n\t\t\t(*lazy).SetUnmarshalFlags(opts.flags)\n\t\t\tif !opts.AliasBuffer() {\n\t\t\t\t// Make a copy of the buffer for lazy unmarshaling.\n\t\t\t\t// Set the AliasBuffer flag so recursive unmarshal\n\t\t\t\t// operations reuse the copy.\n\t\t\t\tb = append([]byte{}, b...)\n\t\t\t\topts.flags |= piface.UnmarshalAliasBuffer\n\t\t\t}\n\t\t\t(*lazy).SetBuffer(b)\n\t\t}\n\t}\n\t// Track special handling of lazy fields.\n\t//\n\t// In the common case, all fields are lazyValidateOnly (and lazyFields remains nil).\n\t// In the event that validation for a field fails, this map tracks handling of the field.\n\ttype lazyAction uint8\n\tconst (\n\t\tlazyValidateOnly   lazyAction = iota // validate the field only\n\t\tlazyUnmarshalNow                     // eagerly unmarshal the field\n\t\tlazyUnmarshalLater                   // unmarshal the field after the message is fully processed\n\t)\n\tvar lazyFields map[*coderFieldInfo]lazyAction\n\tvar exts *map[int32]ExtensionField\n\tstart := len(b)\n\tpos := 0\n\tfor len(b) > 0 {\n\t\t// Parse the tag (field number and wire type).\n\t\tvar tag uint64\n\t\tif b[0] < 0x80 {\n\t\t\ttag = uint64(b[0])\n\t\t\tb = b[1:]\n\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\ttag = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\tb = b[2:]\n\t\t} else {\n\t\t\tvar n int\n\t\t\ttag, n = protowire.ConsumeVarint(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t\tb = b[n:]\n\t\t}\n\t\tvar num protowire.Number\n\t\tif n := tag >> 3; n < uint64(protowire.MinValidNumber) || n > uint64(protowire.MaxValidNumber) {\n\t\t\treturn out, errors.New(\"invalid field number\")\n\t\t} else {\n\t\t\tnum = protowire.Number(n)\n\t\t}\n\t\twtyp := protowire.Type(tag & 7)\n\n\t\tif wtyp == protowire.EndGroupType {\n\t\t\tif num != groupTag {\n\t\t\t\treturn out, errors.New(\"mismatching end group marker\")\n\t\t\t}\n\t\t\tgroupTag = 0\n\t\t\tbreak\n\t\t}\n\n\t\tvar f *coderFieldInfo\n\t\tif int(num) < len(mi.denseCoderFields) {\n\t\t\tf = mi.denseCoderFields[num]\n\t\t} else {\n\t\t\tf = mi.coderFields[num]\n\t\t}\n\t\tvar n int\n\t\terr := errUnknown\n\t\tdiscardUnknown := false\n\tField:\n\t\tswitch {\n\t\tcase f != nil:\n\t\t\tif f.funcs.unmarshal == nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tif f.isLazy && lazyDecode {\n\t\t\t\tswitch {\n\t\t\t\tcase lazyFields == nil || lazyFields[f] == lazyValidateOnly:\n\t\t\t\t\t// Attempt to validate this field and leave it for later lazy unmarshaling.\n\t\t\t\t\to, valid := mi.skipField(b, f, wtyp, opts)\n\t\t\t\t\tswitch valid {\n\t\t\t\t\tcase ValidationValid:\n\t\t\t\t\t\t// Skip over the valid field and continue.\n\t\t\t\t\t\terr = nil\n\t\t\t\t\t\tpresence.SetPresentUnatomic(f.presenceIndex, mi.presenceSize)\n\t\t\t\t\t\trequiredMask |= f.validation.requiredBit\n\t\t\t\t\t\tif !o.initialized {\n\t\t\t\t\t\t\tinitialized = false\n\t\t\t\t\t\t}\n\t\t\t\t\t\tn = o.n\n\t\t\t\t\t\tbreak Field\n\t\t\t\t\tcase ValidationInvalid:\n\t\t\t\t\t\treturn out, errors.New(\"invalid proto wire format\")\n\t\t\t\t\tcase ValidationWrongWireType:\n\t\t\t\t\t\tbreak Field\n\t\t\t\t\tcase ValidationUnknown:\n\t\t\t\t\t\tif lazyFields == nil {\n\t\t\t\t\t\t\tlazyFields = make(map[*coderFieldInfo]lazyAction)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif presence.Present(f.presenceIndex) {\n\t\t\t\t\t\t\t// We were unable to determine if the field is valid or not,\n\t\t\t\t\t\t\t// and we've already skipped over at least one instance of this\n\t\t\t\t\t\t\t// field. Clear the presence bit (so if we stop decoding early,\n\t\t\t\t\t\t\t// we don't leave a partially-initialized field around) and flag\n\t\t\t\t\t\t\t// the field for unmarshaling before we return.\n\t\t\t\t\t\t\tpresence.ClearPresent(f.presenceIndex)\n\t\t\t\t\t\t\tlazyFields[f] = lazyUnmarshalLater\n\t\t\t\t\t\t\tdiscardUnknown = true\n\t\t\t\t\t\t\tbreak Field\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// We were unable to determine if the field is valid or not,\n\t\t\t\t\t\t\t// but this is the first time we've seen it. Flag it as needing\n\t\t\t\t\t\t\t// eager unmarshaling and fall through to the eager unmarshal case below.\n\t\t\t\t\t\t\tlazyFields[f] = lazyUnmarshalNow\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\tcase lazyFields[f] == lazyUnmarshalLater:\n\t\t\t\t\t// This field will be unmarshaled in a separate pass below.\n\t\t\t\t\t// Skip over it here.\n\t\t\t\t\tdiscardUnknown = true\n\t\t\t\t\tbreak Field\n\t\t\t\tdefault:\n\t\t\t\t\t// Eagerly unmarshal the field.\n\t\t\t\t}\n\t\t\t}\n\t\t\tif f.isLazy && !lazyDecode && presence.Present(f.presenceIndex) {\n\t\t\t\tif p.Apply(f.offset).AtomicGetPointer().IsNil() {\n\t\t\t\t\tmi.lazyUnmarshal(p, f.num)\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar o unmarshalOutput\n\t\t\to, err = f.funcs.unmarshal(b, p.Apply(f.offset), wtyp, f, opts)\n\t\t\tn = o.n\n\t\t\tif err != nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\trequiredMask |= f.validation.requiredBit\n\t\t\tif f.funcs.isInit != nil && !o.initialized {\n\t\t\t\tinitialized = false\n\t\t\t}\n\t\t\tif f.presenceIndex != noPresence {\n\t\t\t\tpresence.SetPresentUnatomic(f.presenceIndex, mi.presenceSize)\n\t\t\t}\n\t\tdefault:\n\t\t\t// Possible extension.\n\t\t\tif exts == nil && mi.extensionOffset.IsValid() {\n\t\t\t\texts = p.Apply(mi.extensionOffset).Extensions()\n\t\t\t\tif *exts == nil {\n\t\t\t\t\t*exts = make(map[int32]ExtensionField)\n\t\t\t\t}\n\t\t\t}\n\t\t\tif exts == nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar o unmarshalOutput\n\t\t\to, err = mi.unmarshalExtension(b, num, wtyp, *exts, opts)\n\t\t\tif err != nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tn = o.n\n\t\t\tif !o.initialized {\n\t\t\t\tinitialized = false\n\t\t\t}\n\t\t}\n\t\tif err != nil {\n\t\t\tif err != errUnknown {\n\t\t\t\treturn out, err\n\t\t\t}\n\t\t\tn = protowire.ConsumeFieldValue(num, wtyp, b)\n\t\t\tif n < 0 {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t\tif !discardUnknown && !opts.DiscardUnknown() && mi.unknownOffset.IsValid() {\n\t\t\t\tu := mi.mutableUnknownBytes(p)\n\t\t\t\t*u = protowire.AppendTag(*u, num, wtyp)\n\t\t\t\t*u = append(*u, b[:n]...)\n\t\t\t}\n\t\t}\n\t\tb = b[n:]\n\t\tend := start - len(b)\n\t\tif lazyDecode && f != nil && f.isLazy {\n\t\t\tif num != lastNum {\n\t\t\t\tlazyIndex = append(lazyIndex, protolazy.IndexEntry{\n\t\t\t\t\tFieldNum: uint32(num),\n\t\t\t\t\tStart:    uint32(pos),\n\t\t\t\t\tEnd:      uint32(end),\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\ti := len(lazyIndex) - 1\n\t\t\t\tlazyIndex[i].End = uint32(end)\n\t\t\t\tlazyIndex[i].MultipleContiguous = true\n\t\t\t}\n\t\t}\n\t\tif num < lastNum {\n\t\t\toutOfOrder = true\n\t\t}\n\t\tpos = end\n\t\tlastNum = num\n\t}\n\tif groupTag != 0 {\n\t\treturn out, errors.New(\"missing end group marker\")\n\t}\n\tif lazyFields != nil {\n\t\t// Some fields failed validation, and now need to be unmarshaled.\n\t\tfor f, action := range lazyFields {\n\t\t\tif action != lazyUnmarshalLater {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tinitialized = false\n\t\t\tif *lazy == nil {\n\t\t\t\t*lazy = &protolazy.XXX_lazyUnmarshalInfo{}\n\t\t\t}\n\t\t\tif err := mi.unmarshalField((*lazy).Buffer(), p.Apply(f.offset), f, *lazy, opts.flags); err != nil {\n\t\t\t\treturn out, err\n\t\t\t}\n\t\t\tpresence.SetPresentUnatomic(f.presenceIndex, mi.presenceSize)\n\t\t}\n\t}\n\tif lazyDecode {\n\t\tif outOfOrder {\n\t\t\tsort.Slice(lazyIndex, func(i, j int) bool {\n\t\t\t\treturn lazyIndex[i].FieldNum < lazyIndex[j].FieldNum ||\n\t\t\t\t\t(lazyIndex[i].FieldNum == lazyIndex[j].FieldNum &&\n\t\t\t\t\t\tlazyIndex[i].Start < lazyIndex[j].Start)\n\t\t\t})\n\t\t}\n\t\tif *lazy == nil {\n\t\t\t*lazy = &protolazy.XXX_lazyUnmarshalInfo{}\n\t\t}\n\n\t\t(*lazy).SetIndex(lazyIndex)\n\t}\n\tif mi.numRequiredFields > 0 && bits.OnesCount64(requiredMask) != int(mi.numRequiredFields) {\n\t\tinitialized = false\n\t}\n\tif initialized {\n\t\tout.initialized = true\n\t}\n\tout.n = start - len(b)\n\treturn out, nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/legacy_enum.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"google.golang.org/protobuf/internal/filedesc\"\n\t\"google.golang.org/protobuf/internal/strs\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\n// legacyEnumName returns the name of enums used in legacy code.\n// It is neither the protobuf full name nor the qualified Go name,\n// but rather an odd hybrid of both.\nfunc legacyEnumName(ed protoreflect.EnumDescriptor) string {\n\tvar protoPkg string\n\tenumName := string(ed.FullName())\n\tif fd := ed.ParentFile(); fd != nil {\n\t\tprotoPkg = string(fd.Package())\n\t\tenumName = strings.TrimPrefix(enumName, protoPkg+\".\")\n\t}\n\tif protoPkg == \"\" {\n\t\treturn strs.GoCamelCase(enumName)\n\t}\n\treturn protoPkg + \".\" + strs.GoCamelCase(enumName)\n}\n\n// legacyWrapEnum wraps v as a protoreflect.Enum,\n// where v must be a int32 kind and not implement the v2 API already.\nfunc legacyWrapEnum(v reflect.Value) protoreflect.Enum {\n\tet := legacyLoadEnumType(v.Type())\n\treturn et.New(protoreflect.EnumNumber(v.Int()))\n}\n\nvar legacyEnumTypeCache sync.Map // map[reflect.Type]protoreflect.EnumType\n\n// legacyLoadEnumType dynamically loads a protoreflect.EnumType for t,\n// where t must be an int32 kind and not implement the v2 API already.\nfunc legacyLoadEnumType(t reflect.Type) protoreflect.EnumType {\n\t// Fast-path: check if a EnumType is cached for this concrete type.\n\tif et, ok := legacyEnumTypeCache.Load(t); ok {\n\t\treturn et.(protoreflect.EnumType)\n\t}\n\n\t// Slow-path: derive enum descriptor and initialize EnumType.\n\tvar et protoreflect.EnumType\n\ted := LegacyLoadEnumDesc(t)\n\tet = &legacyEnumType{\n\t\tdesc:   ed,\n\t\tgoType: t,\n\t}\n\tif et, ok := legacyEnumTypeCache.LoadOrStore(t, et); ok {\n\t\treturn et.(protoreflect.EnumType)\n\t}\n\treturn et\n}\n\ntype legacyEnumType struct {\n\tdesc   protoreflect.EnumDescriptor\n\tgoType reflect.Type\n\tm      sync.Map // map[protoreflect.EnumNumber]proto.Enum\n}\n\nfunc (t *legacyEnumType) New(n protoreflect.EnumNumber) protoreflect.Enum {\n\tif e, ok := t.m.Load(n); ok {\n\t\treturn e.(protoreflect.Enum)\n\t}\n\te := &legacyEnumWrapper{num: n, pbTyp: t, goTyp: t.goType}\n\tt.m.Store(n, e)\n\treturn e\n}\nfunc (t *legacyEnumType) Descriptor() protoreflect.EnumDescriptor {\n\treturn t.desc\n}\n\ntype legacyEnumWrapper struct {\n\tnum   protoreflect.EnumNumber\n\tpbTyp protoreflect.EnumType\n\tgoTyp reflect.Type\n}\n\nfunc (e *legacyEnumWrapper) Descriptor() protoreflect.EnumDescriptor {\n\treturn e.pbTyp.Descriptor()\n}\nfunc (e *legacyEnumWrapper) Type() protoreflect.EnumType {\n\treturn e.pbTyp\n}\nfunc (e *legacyEnumWrapper) Number() protoreflect.EnumNumber {\n\treturn e.num\n}\nfunc (e *legacyEnumWrapper) ProtoReflect() protoreflect.Enum {\n\treturn e\n}\nfunc (e *legacyEnumWrapper) protoUnwrap() any {\n\tv := reflect.New(e.goTyp).Elem()\n\tv.SetInt(int64(e.num))\n\treturn v.Interface()\n}\n\nvar (\n\t_ protoreflect.Enum = (*legacyEnumWrapper)(nil)\n\t_ unwrapper         = (*legacyEnumWrapper)(nil)\n)\n\nvar legacyEnumDescCache sync.Map // map[reflect.Type]protoreflect.EnumDescriptor\n\n// LegacyLoadEnumDesc returns an EnumDescriptor derived from the Go type,\n// which must be an int32 kind and not implement the v2 API already.\n//\n// This is exported for testing purposes.\nfunc LegacyLoadEnumDesc(t reflect.Type) protoreflect.EnumDescriptor {\n\t// Fast-path: check if an EnumDescriptor is cached for this concrete type.\n\tif ed, ok := legacyEnumDescCache.Load(t); ok {\n\t\treturn ed.(protoreflect.EnumDescriptor)\n\t}\n\n\t// Slow-path: initialize EnumDescriptor from the raw descriptor.\n\tev := reflect.Zero(t).Interface()\n\tif _, ok := ev.(protoreflect.Enum); ok {\n\t\tpanic(fmt.Sprintf(\"%v already implements proto.Enum\", t))\n\t}\n\tedV1, ok := ev.(enumV1)\n\tif !ok {\n\t\treturn aberrantLoadEnumDesc(t)\n\t}\n\tb, idxs := edV1.EnumDescriptor()\n\n\tvar ed protoreflect.EnumDescriptor\n\tif len(idxs) == 1 {\n\t\ted = legacyLoadFileDesc(b).Enums().Get(idxs[0])\n\t} else {\n\t\tmd := legacyLoadFileDesc(b).Messages().Get(idxs[0])\n\t\tfor _, i := range idxs[1 : len(idxs)-1] {\n\t\t\tmd = md.Messages().Get(i)\n\t\t}\n\t\ted = md.Enums().Get(idxs[len(idxs)-1])\n\t}\n\tif ed, ok := legacyEnumDescCache.LoadOrStore(t, ed); ok {\n\t\treturn ed.(protoreflect.EnumDescriptor)\n\t}\n\treturn ed\n}\n\nvar aberrantEnumDescCache sync.Map // map[reflect.Type]protoreflect.EnumDescriptor\n\n// aberrantLoadEnumDesc returns an EnumDescriptor derived from the Go type,\n// which must not implement protoreflect.Enum or enumV1.\n//\n// If the type does not implement enumV1, then there is no reliable\n// way to derive the original protobuf type information.\n// We are unable to use the global enum registry since it is\n// unfortunately keyed by the protobuf full name, which we also do not know.\n// Thus, this produces some bogus enum descriptor based on the Go type name.\nfunc aberrantLoadEnumDesc(t reflect.Type) protoreflect.EnumDescriptor {\n\t// Fast-path: check if an EnumDescriptor is cached for this concrete type.\n\tif ed, ok := aberrantEnumDescCache.Load(t); ok {\n\t\treturn ed.(protoreflect.EnumDescriptor)\n\t}\n\n\t// Slow-path: construct a bogus, but unique EnumDescriptor.\n\ted := &filedesc.Enum{L2: new(filedesc.EnumL2)}\n\ted.L0.FullName = AberrantDeriveFullName(t) // e.g., github_com.user.repo.MyEnum\n\ted.L0.ParentFile = filedesc.SurrogateProto3\n\ted.L1.EditionFeatures = ed.L0.ParentFile.L1.EditionFeatures\n\ted.L2.Values.List = append(ed.L2.Values.List, filedesc.EnumValue{})\n\n\t// TODO: Use the presence of a UnmarshalJSON method to determine proto2?\n\n\tvd := &ed.L2.Values.List[0]\n\tvd.L0.FullName = ed.L0.FullName + \"_UNKNOWN\" // e.g., github_com.user.repo.MyEnum_UNKNOWN\n\tvd.L0.ParentFile = ed.L0.ParentFile\n\tvd.L0.Parent = ed\n\n\t// TODO: We could use the String method to obtain some enum value names by\n\t// starting at 0 and print the enum until it produces invalid identifiers.\n\t// An exhaustive query is clearly impractical, but can be best-effort.\n\n\tif ed, ok := aberrantEnumDescCache.LoadOrStore(t, ed); ok {\n\t\treturn ed.(protoreflect.EnumDescriptor)\n\t}\n\treturn ed\n}\n\n// AberrantDeriveFullName derives a fully qualified protobuf name for the given Go type\n// The provided name is not guaranteed to be stable nor universally unique.\n// It should be sufficiently unique within a program.\n//\n// This is exported for testing purposes.\nfunc AberrantDeriveFullName(t reflect.Type) protoreflect.FullName {\n\tsanitize := func(r rune) rune {\n\t\tswitch {\n\t\tcase r == '/':\n\t\t\treturn '.'\n\t\tcase 'a' <= r && r <= 'z', 'A' <= r && r <= 'Z', '0' <= r && r <= '9':\n\t\t\treturn r\n\t\tdefault:\n\t\t\treturn '_'\n\t\t}\n\t}\n\tprefix := strings.Map(sanitize, t.PkgPath())\n\tsuffix := strings.Map(sanitize, t.Name())\n\tif suffix == \"\" {\n\t\tsuffix = fmt.Sprintf(\"UnknownX%X\", reflect.ValueOf(t).Pointer())\n\t}\n\n\tss := append(strings.Split(prefix, \".\"), suffix)\n\tfor i, s := range ss {\n\t\tif s == \"\" || ('0' <= s[0] && s[0] <= '9') {\n\t\t\tss[i] = \"x\" + s\n\t\t}\n\t}\n\treturn protoreflect.FullName(strings.Join(ss, \".\"))\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/legacy_export.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"encoding/binary\"\n\t\"encoding/json\"\n\t\"hash/crc32\"\n\t\"math\"\n\t\"reflect\"\n\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n)\n\n// These functions exist to support exported APIs in generated protobufs.\n// While these are deprecated, they cannot be removed for compatibility reasons.\n\n// LegacyEnumName returns the name of enums used in legacy code.\nfunc (Export) LegacyEnumName(ed protoreflect.EnumDescriptor) string {\n\treturn legacyEnumName(ed)\n}\n\n// LegacyMessageTypeOf returns the protoreflect.MessageType for m,\n// with name used as the message name if necessary.\nfunc (Export) LegacyMessageTypeOf(m protoiface.MessageV1, name protoreflect.FullName) protoreflect.MessageType {\n\tif mv := (Export{}).protoMessageV2Of(m); mv != nil {\n\t\treturn mv.ProtoReflect().Type()\n\t}\n\treturn legacyLoadMessageType(reflect.TypeOf(m), name)\n}\n\n// UnmarshalJSONEnum unmarshals an enum from a JSON-encoded input.\n// The input can either be a string representing the enum value by name,\n// or a number representing the enum number itself.\nfunc (Export) UnmarshalJSONEnum(ed protoreflect.EnumDescriptor, b []byte) (protoreflect.EnumNumber, error) {\n\tif b[0] == '\"' {\n\t\tvar name protoreflect.Name\n\t\tif err := json.Unmarshal(b, &name); err != nil {\n\t\t\treturn 0, errors.New(\"invalid input for enum %v: %s\", ed.FullName(), b)\n\t\t}\n\t\tev := ed.Values().ByName(name)\n\t\tif ev == nil {\n\t\t\treturn 0, errors.New(\"invalid value for enum %v: %s\", ed.FullName(), name)\n\t\t}\n\t\treturn ev.Number(), nil\n\t} else {\n\t\tvar num protoreflect.EnumNumber\n\t\tif err := json.Unmarshal(b, &num); err != nil {\n\t\t\treturn 0, errors.New(\"invalid input for enum %v: %s\", ed.FullName(), b)\n\t\t}\n\t\treturn num, nil\n\t}\n}\n\n// CompressGZIP compresses the input as a GZIP-encoded file.\n// The current implementation does no compression.\nfunc (Export) CompressGZIP(in []byte) (out []byte) {\n\t// RFC 1952, section 2.3.1.\n\tvar gzipHeader = [10]byte{0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff}\n\n\t// RFC 1951, section 3.2.4.\n\tvar blockHeader [5]byte\n\tconst maxBlockSize = math.MaxUint16\n\tnumBlocks := 1 + len(in)/maxBlockSize\n\n\t// RFC 1952, section 2.3.1.\n\tvar gzipFooter [8]byte\n\tbinary.LittleEndian.PutUint32(gzipFooter[0:4], crc32.ChecksumIEEE(in))\n\tbinary.LittleEndian.PutUint32(gzipFooter[4:8], uint32(len(in)))\n\n\t// Encode the input without compression using raw DEFLATE blocks.\n\tout = make([]byte, 0, len(gzipHeader)+len(blockHeader)*numBlocks+len(in)+len(gzipFooter))\n\tout = append(out, gzipHeader[:]...)\n\tfor blockHeader[0] == 0 {\n\t\tblockSize := maxBlockSize\n\t\tif blockSize > len(in) {\n\t\t\tblockHeader[0] = 0x01 // final bit per RFC 1951, section 3.2.3.\n\t\t\tblockSize = len(in)\n\t\t}\n\t\tbinary.LittleEndian.PutUint16(blockHeader[1:3], uint16(blockSize))\n\t\tbinary.LittleEndian.PutUint16(blockHeader[3:5], ^uint16(blockSize))\n\t\tout = append(out, blockHeader[:]...)\n\t\tout = append(out, in[:blockSize]...)\n\t\tin = in[blockSize:]\n\t}\n\tout = append(out, gzipFooter[:]...)\n\treturn out\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/legacy_extension.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"reflect\"\n\n\t\"google.golang.org/protobuf/internal/descopts\"\n\t\"google.golang.org/protobuf/internal/encoding/messageset\"\n\tptag \"google.golang.org/protobuf/internal/encoding/tag\"\n\t\"google.golang.org/protobuf/internal/filedesc\"\n\t\"google.golang.org/protobuf/internal/pragma\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n)\n\nfunc (xi *ExtensionInfo) initToLegacy() {\n\txd := xi.desc\n\tvar parent protoiface.MessageV1\n\tmessageName := xd.ContainingMessage().FullName()\n\tif mt, _ := protoregistry.GlobalTypes.FindMessageByName(messageName); mt != nil {\n\t\t// Create a new parent message and unwrap it if possible.\n\t\tmv := mt.New().Interface()\n\t\tt := reflect.TypeOf(mv)\n\t\tif mv, ok := mv.(unwrapper); ok {\n\t\t\tt = reflect.TypeOf(mv.protoUnwrap())\n\t\t}\n\n\t\t// Check whether the message implements the legacy v1 Message interface.\n\t\tmz := reflect.Zero(t).Interface()\n\t\tif mz, ok := mz.(protoiface.MessageV1); ok {\n\t\t\tparent = mz\n\t\t}\n\t}\n\n\t// Determine the v1 extension type, which is unfortunately not the same as\n\t// the v2 ExtensionType.GoType.\n\textType := xi.goType\n\tswitch extType.Kind() {\n\tcase reflect.Bool, reflect.Int32, reflect.Int64, reflect.Uint32, reflect.Uint64, reflect.Float32, reflect.Float64, reflect.String:\n\t\textType = reflect.PtrTo(extType) // T -> *T for singular scalar fields\n\t}\n\n\t// Reconstruct the legacy enum full name.\n\tvar enumName string\n\tif xd.Kind() == protoreflect.EnumKind {\n\t\tenumName = legacyEnumName(xd.Enum())\n\t}\n\n\t// Derive the proto file that the extension was declared within.\n\tvar filename string\n\tif fd := xd.ParentFile(); fd != nil {\n\t\tfilename = fd.Path()\n\t}\n\n\t// For MessageSet extensions, the name used is the parent message.\n\tname := xd.FullName()\n\tif messageset.IsMessageSetExtension(xd) {\n\t\tname = name.Parent()\n\t}\n\n\txi.ExtendedType = parent\n\txi.ExtensionType = reflect.Zero(extType).Interface()\n\txi.Field = int32(xd.Number())\n\txi.Name = string(name)\n\txi.Tag = ptag.Marshal(xd, enumName)\n\txi.Filename = filename\n}\n\n// initFromLegacy initializes an ExtensionInfo from\n// the contents of the deprecated exported fields of the type.\nfunc (xi *ExtensionInfo) initFromLegacy() {\n\t// The v1 API returns \"type incomplete\" descriptors where only the\n\t// field number is specified. In such a case, use a placeholder.\n\tif xi.ExtendedType == nil || xi.ExtensionType == nil {\n\t\txd := placeholderExtension{\n\t\t\tname:   protoreflect.FullName(xi.Name),\n\t\t\tnumber: protoreflect.FieldNumber(xi.Field),\n\t\t}\n\t\txi.desc = extensionTypeDescriptor{xd, xi}\n\t\treturn\n\t}\n\n\t// Resolve enum or message dependencies.\n\tvar ed protoreflect.EnumDescriptor\n\tvar md protoreflect.MessageDescriptor\n\tt := reflect.TypeOf(xi.ExtensionType)\n\tisOptional := t.Kind() == reflect.Ptr && t.Elem().Kind() != reflect.Struct\n\tisRepeated := t.Kind() == reflect.Slice && t.Elem().Kind() != reflect.Uint8\n\tif isOptional || isRepeated {\n\t\tt = t.Elem()\n\t}\n\tswitch v := reflect.Zero(t).Interface().(type) {\n\tcase protoreflect.Enum:\n\t\ted = v.Descriptor()\n\tcase enumV1:\n\t\ted = LegacyLoadEnumDesc(t)\n\tcase protoreflect.ProtoMessage:\n\t\tmd = v.ProtoReflect().Descriptor()\n\tcase messageV1:\n\t\tmd = LegacyLoadMessageDesc(t)\n\t}\n\n\t// Derive basic field information from the struct tag.\n\tvar evs protoreflect.EnumValueDescriptors\n\tif ed != nil {\n\t\tevs = ed.Values()\n\t}\n\tfd := ptag.Unmarshal(xi.Tag, t, evs).(*filedesc.Field)\n\n\t// Construct a v2 ExtensionType.\n\txd := &filedesc.Extension{L2: new(filedesc.ExtensionL2)}\n\txd.L0.ParentFile = filedesc.SurrogateProto2\n\txd.L0.FullName = protoreflect.FullName(xi.Name)\n\txd.L1.Number = protoreflect.FieldNumber(xi.Field)\n\txd.L1.Cardinality = fd.L1.Cardinality\n\txd.L1.Kind = fd.L1.Kind\n\txd.L1.EditionFeatures = fd.L1.EditionFeatures\n\txd.L2.Default = fd.L1.Default\n\txd.L1.Extendee = Export{}.MessageDescriptorOf(xi.ExtendedType)\n\txd.L2.Enum = ed\n\txd.L2.Message = md\n\n\t// Derive real extension field name for MessageSets.\n\tif messageset.IsMessageSet(xd.L1.Extendee) && md.FullName() == xd.L0.FullName {\n\t\txd.L0.FullName = xd.L0.FullName.Append(messageset.ExtensionName)\n\t}\n\n\ttt := reflect.TypeOf(xi.ExtensionType)\n\tif isOptional {\n\t\ttt = tt.Elem()\n\t}\n\txi.goType = tt\n\txi.desc = extensionTypeDescriptor{xd, xi}\n}\n\ntype placeholderExtension struct {\n\tname   protoreflect.FullName\n\tnumber protoreflect.FieldNumber\n}\n\nfunc (x placeholderExtension) ParentFile() protoreflect.FileDescriptor            { return nil }\nfunc (x placeholderExtension) Parent() protoreflect.Descriptor                    { return nil }\nfunc (x placeholderExtension) Index() int                                         { return 0 }\nfunc (x placeholderExtension) Syntax() protoreflect.Syntax                        { return 0 }\nfunc (x placeholderExtension) Name() protoreflect.Name                            { return x.name.Name() }\nfunc (x placeholderExtension) FullName() protoreflect.FullName                    { return x.name }\nfunc (x placeholderExtension) IsPlaceholder() bool                                { return true }\nfunc (x placeholderExtension) Options() protoreflect.ProtoMessage                 { return descopts.Field }\nfunc (x placeholderExtension) Number() protoreflect.FieldNumber                   { return x.number }\nfunc (x placeholderExtension) Cardinality() protoreflect.Cardinality              { return 0 }\nfunc (x placeholderExtension) Kind() protoreflect.Kind                            { return 0 }\nfunc (x placeholderExtension) HasJSONName() bool                                  { return false }\nfunc (x placeholderExtension) JSONName() string                                   { return \"[\" + string(x.name) + \"]\" }\nfunc (x placeholderExtension) TextName() string                                   { return \"[\" + string(x.name) + \"]\" }\nfunc (x placeholderExtension) HasPresence() bool                                  { return false }\nfunc (x placeholderExtension) HasOptionalKeyword() bool                           { return false }\nfunc (x placeholderExtension) IsExtension() bool                                  { return true }\nfunc (x placeholderExtension) IsWeak() bool                                       { return false }\nfunc (x placeholderExtension) IsLazy() bool                                       { return false }\nfunc (x placeholderExtension) IsPacked() bool                                     { return false }\nfunc (x placeholderExtension) IsList() bool                                       { return false }\nfunc (x placeholderExtension) IsMap() bool                                        { return false }\nfunc (x placeholderExtension) MapKey() protoreflect.FieldDescriptor               { return nil }\nfunc (x placeholderExtension) MapValue() protoreflect.FieldDescriptor             { return nil }\nfunc (x placeholderExtension) HasDefault() bool                                   { return false }\nfunc (x placeholderExtension) Default() protoreflect.Value                        { return protoreflect.Value{} }\nfunc (x placeholderExtension) DefaultEnumValue() protoreflect.EnumValueDescriptor { return nil }\nfunc (x placeholderExtension) ContainingOneof() protoreflect.OneofDescriptor      { return nil }\nfunc (x placeholderExtension) ContainingMessage() protoreflect.MessageDescriptor  { return nil }\nfunc (x placeholderExtension) Enum() protoreflect.EnumDescriptor                  { return nil }\nfunc (x placeholderExtension) Message() protoreflect.MessageDescriptor            { return nil }\nfunc (x placeholderExtension) ProtoType(protoreflect.FieldDescriptor)             { return }\nfunc (x placeholderExtension) ProtoInternal(pragma.DoNotImplement)                { return }\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/legacy_file.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"bytes\"\n\t\"compress/gzip\"\n\t\"io\"\n\t\"sync\"\n\n\t\"google.golang.org/protobuf/internal/filedesc\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n)\n\n// Every enum and message type generated by protoc-gen-go since commit 2fc053c5\n// on February 25th, 2016 has had a method to get the raw descriptor.\n// Types that were not generated by protoc-gen-go or were generated prior\n// to that version are not supported.\n//\n// The []byte returned is the encoded form of a FileDescriptorProto message\n// compressed using GZIP. The []int is the path from the top-level file\n// to the specific message or enum declaration.\ntype (\n\tenumV1 interface {\n\t\tEnumDescriptor() ([]byte, []int)\n\t}\n\tmessageV1 interface {\n\t\tDescriptor() ([]byte, []int)\n\t}\n)\n\nvar legacyFileDescCache sync.Map // map[*byte]protoreflect.FileDescriptor\n\n// legacyLoadFileDesc unmarshals b as a compressed FileDescriptorProto message.\n//\n// This assumes that b is immutable and that b does not refer to part of a\n// concatenated series of GZIP files (which would require shenanigans that\n// rely on the concatenation properties of both protobufs and GZIP).\n// File descriptors generated by protoc-gen-go do not rely on that property.\nfunc legacyLoadFileDesc(b []byte) protoreflect.FileDescriptor {\n\t// Fast-path: check whether we already have a cached file descriptor.\n\tif fd, ok := legacyFileDescCache.Load(&b[0]); ok {\n\t\treturn fd.(protoreflect.FileDescriptor)\n\t}\n\n\t// Slow-path: decompress and unmarshal the file descriptor proto.\n\tzr, err := gzip.NewReader(bytes.NewReader(b))\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tb2, err := io.ReadAll(zr)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tfd := filedesc.Builder{\n\t\tRawDescriptor: b2,\n\t\tFileRegistry:  resolverOnly{protoregistry.GlobalFiles}, // do not register back to global registry\n\t}.Build().File\n\tif fd, ok := legacyFileDescCache.LoadOrStore(&b[0], fd); ok {\n\t\treturn fd.(protoreflect.FileDescriptor)\n\t}\n\treturn fd\n}\n\ntype resolverOnly struct {\n\treg *protoregistry.Files\n}\n\nfunc (r resolverOnly) FindFileByPath(path string) (protoreflect.FileDescriptor, error) {\n\treturn r.reg.FindFileByPath(path)\n}\nfunc (r resolverOnly) FindDescriptorByName(name protoreflect.FullName) (protoreflect.Descriptor, error) {\n\treturn r.reg.FindDescriptorByName(name)\n}\nfunc (resolverOnly) RegisterFile(protoreflect.FileDescriptor) error {\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/legacy_message.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"google.golang.org/protobuf/internal/descopts\"\n\tptag \"google.golang.org/protobuf/internal/encoding/tag\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/internal/filedesc\"\n\t\"google.golang.org/protobuf/internal/strs\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n)\n\n// legacyWrapMessage wraps v as a protoreflect.Message,\n// where v must be a *struct kind and not implement the v2 API already.\nfunc legacyWrapMessage(v reflect.Value) protoreflect.Message {\n\tt := v.Type()\n\tif t.Kind() != reflect.Ptr || t.Elem().Kind() != reflect.Struct {\n\t\treturn aberrantMessage{v: v}\n\t}\n\tmt := legacyLoadMessageInfo(t, \"\")\n\treturn mt.MessageOf(v.Interface())\n}\n\n// legacyLoadMessageType dynamically loads a protoreflect.Type for t,\n// where t must be not implement the v2 API already.\n// The provided name is used if it cannot be determined from the message.\nfunc legacyLoadMessageType(t reflect.Type, name protoreflect.FullName) protoreflect.MessageType {\n\tif t.Kind() != reflect.Ptr || t.Elem().Kind() != reflect.Struct {\n\t\treturn aberrantMessageType{t}\n\t}\n\treturn legacyLoadMessageInfo(t, name)\n}\n\nvar legacyMessageTypeCache sync.Map // map[reflect.Type]*MessageInfo\n\n// legacyLoadMessageInfo dynamically loads a *MessageInfo for t,\n// where t must be a *struct kind and not implement the v2 API already.\n// The provided name is used if it cannot be determined from the message.\nfunc legacyLoadMessageInfo(t reflect.Type, name protoreflect.FullName) *MessageInfo {\n\t// Fast-path: check if a MessageInfo is cached for this concrete type.\n\tif mt, ok := legacyMessageTypeCache.Load(t); ok {\n\t\treturn mt.(*MessageInfo)\n\t}\n\n\t// Slow-path: derive message descriptor and initialize MessageInfo.\n\tmi := &MessageInfo{\n\t\tDesc:          legacyLoadMessageDesc(t, name),\n\t\tGoReflectType: t,\n\t}\n\n\tvar hasMarshal, hasUnmarshal bool\n\tv := reflect.Zero(t).Interface()\n\tif _, hasMarshal = v.(legacyMarshaler); hasMarshal {\n\t\tmi.methods.Marshal = legacyMarshal\n\n\t\t// We have no way to tell whether the type's Marshal method\n\t\t// supports deterministic serialization or not, but this\n\t\t// preserves the v1 implementation's behavior of always\n\t\t// calling Marshal methods when present.\n\t\tmi.methods.Flags |= protoiface.SupportMarshalDeterministic\n\t}\n\tif _, hasUnmarshal = v.(legacyUnmarshaler); hasUnmarshal {\n\t\tmi.methods.Unmarshal = legacyUnmarshal\n\t}\n\tif _, hasMerge := v.(legacyMerger); hasMerge || (hasMarshal && hasUnmarshal) {\n\t\tmi.methods.Merge = legacyMerge\n\t}\n\n\tif mi, ok := legacyMessageTypeCache.LoadOrStore(t, mi); ok {\n\t\treturn mi.(*MessageInfo)\n\t}\n\treturn mi\n}\n\nvar legacyMessageDescCache sync.Map // map[reflect.Type]protoreflect.MessageDescriptor\n\n// LegacyLoadMessageDesc returns an MessageDescriptor derived from the Go type,\n// which should be a *struct kind and must not implement the v2 API already.\n//\n// This is exported for testing purposes.\nfunc LegacyLoadMessageDesc(t reflect.Type) protoreflect.MessageDescriptor {\n\treturn legacyLoadMessageDesc(t, \"\")\n}\nfunc legacyLoadMessageDesc(t reflect.Type, name protoreflect.FullName) protoreflect.MessageDescriptor {\n\t// Fast-path: check if a MessageDescriptor is cached for this concrete type.\n\tif mi, ok := legacyMessageDescCache.Load(t); ok {\n\t\treturn mi.(protoreflect.MessageDescriptor)\n\t}\n\n\t// Slow-path: initialize MessageDescriptor from the raw descriptor.\n\tmv := reflect.Zero(t).Interface()\n\tif _, ok := mv.(protoreflect.ProtoMessage); ok {\n\t\tpanic(fmt.Sprintf(\"%v already implements proto.Message\", t))\n\t}\n\tmdV1, ok := mv.(messageV1)\n\tif !ok {\n\t\treturn aberrantLoadMessageDesc(t, name)\n\t}\n\n\t// If this is a dynamic message type where there isn't a 1-1 mapping between\n\t// Go and protobuf types, calling the Descriptor method on the zero value of\n\t// the message type isn't likely to work. If it panics, swallow the panic and\n\t// continue as if the Descriptor method wasn't present.\n\tb, idxs := func() ([]byte, []int) {\n\t\tdefer func() {\n\t\t\trecover()\n\t\t}()\n\t\treturn mdV1.Descriptor()\n\t}()\n\tif b == nil {\n\t\treturn aberrantLoadMessageDesc(t, name)\n\t}\n\n\t// If the Go type has no fields, then this might be a proto3 empty message\n\t// from before the size cache was added. If there are any fields, check to\n\t// see that at least one of them looks like something we generated.\n\tif t.Elem().Kind() == reflect.Struct {\n\t\tif nfield := t.Elem().NumField(); nfield > 0 {\n\t\t\thasProtoField := false\n\t\t\tfor i := 0; i < nfield; i++ {\n\t\t\t\tf := t.Elem().Field(i)\n\t\t\t\tif f.Tag.Get(\"protobuf\") != \"\" || f.Tag.Get(\"protobuf_oneof\") != \"\" || strings.HasPrefix(f.Name, \"XXX_\") {\n\t\t\t\t\thasProtoField = true\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !hasProtoField {\n\t\t\t\treturn aberrantLoadMessageDesc(t, name)\n\t\t\t}\n\t\t}\n\t}\n\n\tmd := legacyLoadFileDesc(b).Messages().Get(idxs[0])\n\tfor _, i := range idxs[1:] {\n\t\tmd = md.Messages().Get(i)\n\t}\n\tif name != \"\" && md.FullName() != name {\n\t\tpanic(fmt.Sprintf(\"mismatching message name: got %v, want %v\", md.FullName(), name))\n\t}\n\tif md, ok := legacyMessageDescCache.LoadOrStore(t, md); ok {\n\t\treturn md.(protoreflect.MessageDescriptor)\n\t}\n\treturn md\n}\n\nvar (\n\taberrantMessageDescLock  sync.Mutex\n\taberrantMessageDescCache map[reflect.Type]protoreflect.MessageDescriptor\n)\n\n// aberrantLoadMessageDesc returns an MessageDescriptor derived from the Go type,\n// which must not implement protoreflect.ProtoMessage or messageV1.\n//\n// This is a best-effort derivation of the message descriptor using the protobuf\n// tags on the struct fields.\nfunc aberrantLoadMessageDesc(t reflect.Type, name protoreflect.FullName) protoreflect.MessageDescriptor {\n\taberrantMessageDescLock.Lock()\n\tdefer aberrantMessageDescLock.Unlock()\n\tif aberrantMessageDescCache == nil {\n\t\taberrantMessageDescCache = make(map[reflect.Type]protoreflect.MessageDescriptor)\n\t}\n\treturn aberrantLoadMessageDescReentrant(t, name)\n}\nfunc aberrantLoadMessageDescReentrant(t reflect.Type, name protoreflect.FullName) protoreflect.MessageDescriptor {\n\t// Fast-path: check if an MessageDescriptor is cached for this concrete type.\n\tif md, ok := aberrantMessageDescCache[t]; ok {\n\t\treturn md\n\t}\n\n\t// Slow-path: construct a descriptor from the Go struct type (best-effort).\n\t// Cache the MessageDescriptor early on so that we can resolve internal\n\t// cyclic references.\n\tmd := &filedesc.Message{L2: new(filedesc.MessageL2)}\n\tmd.L0.FullName = aberrantDeriveMessageName(t, name)\n\tmd.L0.ParentFile = filedesc.SurrogateProto2\n\taberrantMessageDescCache[t] = md\n\n\tif t.Kind() != reflect.Ptr || t.Elem().Kind() != reflect.Struct {\n\t\treturn md\n\t}\n\n\t// Try to determine if the message is using proto3 by checking scalars.\n\tfor i := 0; i < t.Elem().NumField(); i++ {\n\t\tf := t.Elem().Field(i)\n\t\tif tag := f.Tag.Get(\"protobuf\"); tag != \"\" {\n\t\t\tswitch f.Type.Kind() {\n\t\t\tcase reflect.Bool, reflect.Int32, reflect.Int64, reflect.Uint32, reflect.Uint64, reflect.Float32, reflect.Float64, reflect.String:\n\t\t\t\tmd.L0.ParentFile = filedesc.SurrogateProto3\n\t\t\t}\n\t\t\tfor _, s := range strings.Split(tag, \",\") {\n\t\t\t\tif s == \"proto3\" {\n\t\t\t\t\tmd.L0.ParentFile = filedesc.SurrogateProto3\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tmd.L1.EditionFeatures = md.L0.ParentFile.L1.EditionFeatures\n\t// Obtain a list of oneof wrapper types.\n\tvar oneofWrappers []reflect.Type\n\tmethods := make([]reflect.Method, 0, 2)\n\tif m, ok := t.MethodByName(\"XXX_OneofFuncs\"); ok {\n\t\tmethods = append(methods, m)\n\t}\n\tif m, ok := t.MethodByName(\"XXX_OneofWrappers\"); ok {\n\t\tmethods = append(methods, m)\n\t}\n\tfor _, fn := range methods {\n\t\tfor _, v := range fn.Func.Call([]reflect.Value{reflect.Zero(fn.Type.In(0))}) {\n\t\t\tif vs, ok := v.Interface().([]any); ok {\n\t\t\t\tfor _, v := range vs {\n\t\t\t\t\toneofWrappers = append(oneofWrappers, reflect.TypeOf(v))\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Obtain a list of the extension ranges.\n\tif fn, ok := t.MethodByName(\"ExtensionRangeArray\"); ok {\n\t\tvs := fn.Func.Call([]reflect.Value{reflect.Zero(fn.Type.In(0))})[0]\n\t\tfor i := 0; i < vs.Len(); i++ {\n\t\t\tv := vs.Index(i)\n\t\t\tmd.L2.ExtensionRanges.List = append(md.L2.ExtensionRanges.List, [2]protoreflect.FieldNumber{\n\t\t\t\tprotoreflect.FieldNumber(v.FieldByName(\"Start\").Int()),\n\t\t\t\tprotoreflect.FieldNumber(v.FieldByName(\"End\").Int() + 1),\n\t\t\t})\n\t\t\tmd.L2.ExtensionRangeOptions = append(md.L2.ExtensionRangeOptions, nil)\n\t\t}\n\t}\n\n\t// Derive the message fields by inspecting the struct fields.\n\tfor i := 0; i < t.Elem().NumField(); i++ {\n\t\tf := t.Elem().Field(i)\n\t\tif tag := f.Tag.Get(\"protobuf\"); tag != \"\" {\n\t\t\ttagKey := f.Tag.Get(\"protobuf_key\")\n\t\t\ttagVal := f.Tag.Get(\"protobuf_val\")\n\t\t\taberrantAppendField(md, f.Type, tag, tagKey, tagVal)\n\t\t}\n\t\tif tag := f.Tag.Get(\"protobuf_oneof\"); tag != \"\" {\n\t\t\tn := len(md.L2.Oneofs.List)\n\t\t\tmd.L2.Oneofs.List = append(md.L2.Oneofs.List, filedesc.Oneof{})\n\t\t\tod := &md.L2.Oneofs.List[n]\n\t\t\tod.L0.FullName = md.FullName().Append(protoreflect.Name(tag))\n\t\t\tod.L0.ParentFile = md.L0.ParentFile\n\t\t\tod.L1.EditionFeatures = md.L1.EditionFeatures\n\t\t\tod.L0.Parent = md\n\t\t\tod.L0.Index = n\n\n\t\t\tfor _, t := range oneofWrappers {\n\t\t\t\tif t.Implements(f.Type) {\n\t\t\t\t\tf := t.Elem().Field(0)\n\t\t\t\t\tif tag := f.Tag.Get(\"protobuf\"); tag != \"\" {\n\t\t\t\t\t\taberrantAppendField(md, f.Type, tag, \"\", \"\")\n\t\t\t\t\t\tfd := &md.L2.Fields.List[len(md.L2.Fields.List)-1]\n\t\t\t\t\t\tfd.L1.ContainingOneof = od\n\t\t\t\t\t\tfd.L1.EditionFeatures = od.L1.EditionFeatures\n\t\t\t\t\t\tod.L1.Fields.List = append(od.L1.Fields.List, fd)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn md\n}\n\nfunc aberrantDeriveMessageName(t reflect.Type, name protoreflect.FullName) protoreflect.FullName {\n\tif name.IsValid() {\n\t\treturn name\n\t}\n\tfunc() {\n\t\tdefer func() { recover() }() // swallow possible nil panics\n\t\tif m, ok := reflect.Zero(t).Interface().(interface{ XXX_MessageName() string }); ok {\n\t\t\tname = protoreflect.FullName(m.XXX_MessageName())\n\t\t}\n\t}()\n\tif name.IsValid() {\n\t\treturn name\n\t}\n\tif t.Kind() == reflect.Ptr {\n\t\tt = t.Elem()\n\t}\n\treturn AberrantDeriveFullName(t)\n}\n\nfunc aberrantAppendField(md *filedesc.Message, goType reflect.Type, tag, tagKey, tagVal string) {\n\tt := goType\n\tisOptional := t.Kind() == reflect.Ptr && t.Elem().Kind() != reflect.Struct\n\tisRepeated := t.Kind() == reflect.Slice && t.Elem().Kind() != reflect.Uint8\n\tif isOptional || isRepeated {\n\t\tt = t.Elem()\n\t}\n\tfd := ptag.Unmarshal(tag, t, placeholderEnumValues{}).(*filedesc.Field)\n\n\t// Append field descriptor to the message.\n\tn := len(md.L2.Fields.List)\n\tmd.L2.Fields.List = append(md.L2.Fields.List, *fd)\n\tfd = &md.L2.Fields.List[n]\n\tfd.L0.FullName = md.FullName().Append(fd.Name())\n\tfd.L0.ParentFile = md.L0.ParentFile\n\tfd.L0.Parent = md\n\tfd.L0.Index = n\n\n\tif fd.L1.EditionFeatures.IsPacked {\n\t\tfd.L1.Options = func() protoreflect.ProtoMessage {\n\t\t\topts := descopts.Field.ProtoReflect().New()\n\t\t\tif fd.L1.EditionFeatures.IsPacked {\n\t\t\t\topts.Set(opts.Descriptor().Fields().ByName(\"packed\"), protoreflect.ValueOfBool(fd.L1.EditionFeatures.IsPacked))\n\t\t\t}\n\t\t\treturn opts.Interface()\n\t\t}\n\t}\n\n\t// Populate Enum and Message.\n\tif fd.Enum() == nil && fd.Kind() == protoreflect.EnumKind {\n\t\tswitch v := reflect.Zero(t).Interface().(type) {\n\t\tcase protoreflect.Enum:\n\t\t\tfd.L1.Enum = v.Descriptor()\n\t\tdefault:\n\t\t\tfd.L1.Enum = LegacyLoadEnumDesc(t)\n\t\t}\n\t}\n\tif fd.Message() == nil && (fd.Kind() == protoreflect.MessageKind || fd.Kind() == protoreflect.GroupKind) {\n\t\tswitch v := reflect.Zero(t).Interface().(type) {\n\t\tcase protoreflect.ProtoMessage:\n\t\t\tfd.L1.Message = v.ProtoReflect().Descriptor()\n\t\tcase messageV1:\n\t\t\tfd.L1.Message = LegacyLoadMessageDesc(t)\n\t\tdefault:\n\t\t\tif t.Kind() == reflect.Map {\n\t\t\t\tn := len(md.L1.Messages.List)\n\t\t\t\tmd.L1.Messages.List = append(md.L1.Messages.List, filedesc.Message{L2: new(filedesc.MessageL2)})\n\t\t\t\tmd2 := &md.L1.Messages.List[n]\n\t\t\t\tmd2.L0.FullName = md.FullName().Append(protoreflect.Name(strs.MapEntryName(string(fd.Name()))))\n\t\t\t\tmd2.L0.ParentFile = md.L0.ParentFile\n\t\t\t\tmd2.L0.Parent = md\n\t\t\t\tmd2.L0.Index = n\n\t\t\t\tmd2.L1.EditionFeatures = md.L1.EditionFeatures\n\n\t\t\t\tmd2.L1.IsMapEntry = true\n\t\t\t\tmd2.L2.Options = func() protoreflect.ProtoMessage {\n\t\t\t\t\topts := descopts.Message.ProtoReflect().New()\n\t\t\t\t\topts.Set(opts.Descriptor().Fields().ByName(\"map_entry\"), protoreflect.ValueOfBool(true))\n\t\t\t\t\treturn opts.Interface()\n\t\t\t\t}\n\n\t\t\t\taberrantAppendField(md2, t.Key(), tagKey, \"\", \"\")\n\t\t\t\taberrantAppendField(md2, t.Elem(), tagVal, \"\", \"\")\n\n\t\t\t\tfd.L1.Message = md2\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tfd.L1.Message = aberrantLoadMessageDescReentrant(t, \"\")\n\t\t}\n\t}\n}\n\ntype placeholderEnumValues struct {\n\tprotoreflect.EnumValueDescriptors\n}\n\nfunc (placeholderEnumValues) ByNumber(n protoreflect.EnumNumber) protoreflect.EnumValueDescriptor {\n\treturn filedesc.PlaceholderEnumValue(protoreflect.FullName(fmt.Sprintf(\"UNKNOWN_%d\", n)))\n}\n\n// legacyMarshaler is the proto.Marshaler interface superseded by protoiface.Methoder.\ntype legacyMarshaler interface {\n\tMarshal() ([]byte, error)\n}\n\n// legacyUnmarshaler is the proto.Unmarshaler interface superseded by protoiface.Methoder.\ntype legacyUnmarshaler interface {\n\tUnmarshal([]byte) error\n}\n\n// legacyMerger is the proto.Merger interface superseded by protoiface.Methoder.\ntype legacyMerger interface {\n\tMerge(protoiface.MessageV1)\n}\n\nvar aberrantProtoMethods = &protoiface.Methods{\n\tMarshal:   legacyMarshal,\n\tUnmarshal: legacyUnmarshal,\n\tMerge:     legacyMerge,\n\n\t// We have no way to tell whether the type's Marshal method\n\t// supports deterministic serialization or not, but this\n\t// preserves the v1 implementation's behavior of always\n\t// calling Marshal methods when present.\n\tFlags: protoiface.SupportMarshalDeterministic,\n}\n\nfunc legacyMarshal(in protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\tv := in.Message.(unwrapper).protoUnwrap()\n\tmarshaler, ok := v.(legacyMarshaler)\n\tif !ok {\n\t\treturn protoiface.MarshalOutput{}, errors.New(\"%T does not implement Marshal\", v)\n\t}\n\tout, err := marshaler.Marshal()\n\tif in.Buf != nil {\n\t\tout = append(in.Buf, out...)\n\t}\n\treturn protoiface.MarshalOutput{\n\t\tBuf: out,\n\t}, err\n}\n\nfunc legacyUnmarshal(in protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\tv := in.Message.(unwrapper).protoUnwrap()\n\tunmarshaler, ok := v.(legacyUnmarshaler)\n\tif !ok {\n\t\treturn protoiface.UnmarshalOutput{}, errors.New(\"%T does not implement Unmarshal\", v)\n\t}\n\treturn protoiface.UnmarshalOutput{}, unmarshaler.Unmarshal(in.Buf)\n}\n\nfunc legacyMerge(in protoiface.MergeInput) protoiface.MergeOutput {\n\t// Check whether this supports the legacy merger.\n\tdstv := in.Destination.(unwrapper).protoUnwrap()\n\tmerger, ok := dstv.(legacyMerger)\n\tif ok {\n\t\tmerger.Merge(Export{}.ProtoMessageV1Of(in.Source))\n\t\treturn protoiface.MergeOutput{Flags: protoiface.MergeComplete}\n\t}\n\n\t// If legacy merger is unavailable, implement merge in terms of\n\t// a marshal and unmarshal operation.\n\tsrcv := in.Source.(unwrapper).protoUnwrap()\n\tmarshaler, ok := srcv.(legacyMarshaler)\n\tif !ok {\n\t\treturn protoiface.MergeOutput{}\n\t}\n\tdstv = in.Destination.(unwrapper).protoUnwrap()\n\tunmarshaler, ok := dstv.(legacyUnmarshaler)\n\tif !ok {\n\t\treturn protoiface.MergeOutput{}\n\t}\n\tif !in.Source.IsValid() {\n\t\t// Legacy Marshal methods may not function on nil messages.\n\t\t// Check for a typed nil source only after we confirm that\n\t\t// legacy Marshal/Unmarshal methods are present, for\n\t\t// consistency.\n\t\treturn protoiface.MergeOutput{Flags: protoiface.MergeComplete}\n\t}\n\tb, err := marshaler.Marshal()\n\tif err != nil {\n\t\treturn protoiface.MergeOutput{}\n\t}\n\terr = unmarshaler.Unmarshal(b)\n\tif err != nil {\n\t\treturn protoiface.MergeOutput{}\n\t}\n\treturn protoiface.MergeOutput{Flags: protoiface.MergeComplete}\n}\n\n// aberrantMessageType implements MessageType for all types other than pointer-to-struct.\ntype aberrantMessageType struct {\n\tt reflect.Type\n}\n\nfunc (mt aberrantMessageType) New() protoreflect.Message {\n\tif mt.t.Kind() == reflect.Ptr {\n\t\treturn aberrantMessage{reflect.New(mt.t.Elem())}\n\t}\n\treturn aberrantMessage{reflect.Zero(mt.t)}\n}\nfunc (mt aberrantMessageType) Zero() protoreflect.Message {\n\treturn aberrantMessage{reflect.Zero(mt.t)}\n}\nfunc (mt aberrantMessageType) GoType() reflect.Type {\n\treturn mt.t\n}\nfunc (mt aberrantMessageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn LegacyLoadMessageDesc(mt.t)\n}\n\n// aberrantMessage implements Message for all types other than pointer-to-struct.\n//\n// When the underlying type implements legacyMarshaler or legacyUnmarshaler,\n// the aberrant Message can be marshaled or unmarshaled. Otherwise, there is\n// not much that can be done with values of this type.\ntype aberrantMessage struct {\n\tv reflect.Value\n}\n\n// Reset implements the v1 proto.Message.Reset method.\nfunc (m aberrantMessage) Reset() {\n\tif mr, ok := m.v.Interface().(interface{ Reset() }); ok {\n\t\tmr.Reset()\n\t\treturn\n\t}\n\tif m.v.Kind() == reflect.Ptr && !m.v.IsNil() {\n\t\tm.v.Elem().Set(reflect.Zero(m.v.Type().Elem()))\n\t}\n}\n\nfunc (m aberrantMessage) ProtoReflect() protoreflect.Message {\n\treturn m\n}\n\nfunc (m aberrantMessage) Descriptor() protoreflect.MessageDescriptor {\n\treturn LegacyLoadMessageDesc(m.v.Type())\n}\nfunc (m aberrantMessage) Type() protoreflect.MessageType {\n\treturn aberrantMessageType{m.v.Type()}\n}\nfunc (m aberrantMessage) New() protoreflect.Message {\n\tif m.v.Type().Kind() == reflect.Ptr {\n\t\treturn aberrantMessage{reflect.New(m.v.Type().Elem())}\n\t}\n\treturn aberrantMessage{reflect.Zero(m.v.Type())}\n}\nfunc (m aberrantMessage) Interface() protoreflect.ProtoMessage {\n\treturn m\n}\nfunc (m aberrantMessage) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\treturn\n}\nfunc (m aberrantMessage) Has(protoreflect.FieldDescriptor) bool {\n\treturn false\n}\nfunc (m aberrantMessage) Clear(protoreflect.FieldDescriptor) {\n\tpanic(\"invalid Message.Clear on \" + string(m.Descriptor().FullName()))\n}\nfunc (m aberrantMessage) Get(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tif fd.Default().IsValid() {\n\t\treturn fd.Default()\n\t}\n\tpanic(\"invalid Message.Get on \" + string(m.Descriptor().FullName()))\n}\nfunc (m aberrantMessage) Set(protoreflect.FieldDescriptor, protoreflect.Value) {\n\tpanic(\"invalid Message.Set on \" + string(m.Descriptor().FullName()))\n}\nfunc (m aberrantMessage) Mutable(protoreflect.FieldDescriptor) protoreflect.Value {\n\tpanic(\"invalid Message.Mutable on \" + string(m.Descriptor().FullName()))\n}\nfunc (m aberrantMessage) NewField(protoreflect.FieldDescriptor) protoreflect.Value {\n\tpanic(\"invalid Message.NewField on \" + string(m.Descriptor().FullName()))\n}\nfunc (m aberrantMessage) WhichOneof(protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tpanic(\"invalid Message.WhichOneof descriptor on \" + string(m.Descriptor().FullName()))\n}\nfunc (m aberrantMessage) GetUnknown() protoreflect.RawFields {\n\treturn nil\n}\nfunc (m aberrantMessage) SetUnknown(protoreflect.RawFields) {\n\t// SetUnknown discards its input on messages which don't support unknown field storage.\n}\nfunc (m aberrantMessage) IsValid() bool {\n\tif m.v.Kind() == reflect.Ptr {\n\t\treturn !m.v.IsNil()\n\t}\n\treturn false\n}\nfunc (m aberrantMessage) ProtoMethods() *protoiface.Methods {\n\treturn aberrantProtoMethods\n}\nfunc (m aberrantMessage) protoUnwrap() any {\n\treturn m.v.Interface()\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/merge.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\n\t\"google.golang.org/protobuf/proto\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n)\n\ntype mergeOptions struct{}\n\nfunc (o mergeOptions) Merge(dst, src proto.Message) {\n\tproto.Merge(dst, src)\n}\n\n// merge is protoreflect.Methods.Merge.\nfunc (mi *MessageInfo) merge(in protoiface.MergeInput) protoiface.MergeOutput {\n\tdp, ok := mi.getPointer(in.Destination)\n\tif !ok {\n\t\treturn protoiface.MergeOutput{}\n\t}\n\tsp, ok := mi.getPointer(in.Source)\n\tif !ok {\n\t\treturn protoiface.MergeOutput{}\n\t}\n\tmi.mergePointer(dp, sp, mergeOptions{})\n\treturn protoiface.MergeOutput{Flags: protoiface.MergeComplete}\n}\n\nfunc (mi *MessageInfo) mergePointer(dst, src pointer, opts mergeOptions) {\n\tmi.init()\n\tif dst.IsNil() {\n\t\tpanic(fmt.Sprintf(\"invalid value: merging into nil message\"))\n\t}\n\tif src.IsNil() {\n\t\treturn\n\t}\n\n\tvar presenceSrc presence\n\tvar presenceDst presence\n\tif mi.presenceOffset.IsValid() {\n\t\tpresenceSrc = src.Apply(mi.presenceOffset).PresenceInfo()\n\t\tpresenceDst = dst.Apply(mi.presenceOffset).PresenceInfo()\n\t}\n\n\tfor _, f := range mi.orderedCoderFields {\n\t\tif f.funcs.merge == nil {\n\t\t\tcontinue\n\t\t}\n\t\tsfptr := src.Apply(f.offset)\n\n\t\tif f.presenceIndex != noPresence {\n\t\t\tif !presenceSrc.Present(f.presenceIndex) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tdfptr := dst.Apply(f.offset)\n\t\t\tif f.isLazy {\n\t\t\t\tif sfptr.AtomicGetPointer().IsNil() {\n\t\t\t\t\tmi.lazyUnmarshal(src, f.num)\n\t\t\t\t}\n\t\t\t\tif presenceDst.Present(f.presenceIndex) && dfptr.AtomicGetPointer().IsNil() {\n\t\t\t\t\tmi.lazyUnmarshal(dst, f.num)\n\t\t\t\t}\n\t\t\t}\n\t\t\tf.funcs.merge(dst.Apply(f.offset), sfptr, f, opts)\n\t\t\tpresenceDst.SetPresentUnatomic(f.presenceIndex, mi.presenceSize)\n\t\t\tcontinue\n\t\t}\n\n\t\tif f.isPointer && sfptr.Elem().IsNil() {\n\t\t\tcontinue\n\t\t}\n\t\tf.funcs.merge(dst.Apply(f.offset), sfptr, f, opts)\n\t}\n\tif mi.extensionOffset.IsValid() {\n\t\tsext := src.Apply(mi.extensionOffset).Extensions()\n\t\tdext := dst.Apply(mi.extensionOffset).Extensions()\n\t\tif *dext == nil {\n\t\t\t*dext = make(map[int32]ExtensionField)\n\t\t}\n\t\tfor num, sx := range *sext {\n\t\t\txt := sx.Type()\n\t\t\txi := getExtensionFieldInfo(xt)\n\t\t\tif xi.funcs.merge == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tdx := (*dext)[num]\n\t\t\tvar dv protoreflect.Value\n\t\t\tif dx.Type() == sx.Type() {\n\t\t\t\tdv = dx.Value()\n\t\t\t}\n\t\t\tif !dv.IsValid() && xi.unmarshalNeedsValue {\n\t\t\t\tdv = xt.New()\n\t\t\t}\n\t\t\tdv = xi.funcs.merge(dv, sx.Value(), opts)\n\t\t\tdx.Set(sx.Type(), dv)\n\t\t\t(*dext)[num] = dx\n\t\t}\n\t}\n\tif mi.unknownOffset.IsValid() {\n\t\tsu := mi.getUnknownBytes(src)\n\t\tif su != nil && len(*su) > 0 {\n\t\t\tdu := mi.mutableUnknownBytes(dst)\n\t\t\t*du = append(*du, *su...)\n\t\t}\n\t}\n}\n\nfunc mergeScalarValue(dst, src protoreflect.Value, opts mergeOptions) protoreflect.Value {\n\treturn src\n}\n\nfunc mergeBytesValue(dst, src protoreflect.Value, opts mergeOptions) protoreflect.Value {\n\treturn protoreflect.ValueOfBytes(append(emptyBuf[:], src.Bytes()...))\n}\n\nfunc mergeListValue(dst, src protoreflect.Value, opts mergeOptions) protoreflect.Value {\n\tdstl := dst.List()\n\tsrcl := src.List()\n\tfor i, llen := 0, srcl.Len(); i < llen; i++ {\n\t\tdstl.Append(srcl.Get(i))\n\t}\n\treturn dst\n}\n\nfunc mergeBytesListValue(dst, src protoreflect.Value, opts mergeOptions) protoreflect.Value {\n\tdstl := dst.List()\n\tsrcl := src.List()\n\tfor i, llen := 0, srcl.Len(); i < llen; i++ {\n\t\tsb := srcl.Get(i).Bytes()\n\t\tdb := append(emptyBuf[:], sb...)\n\t\tdstl.Append(protoreflect.ValueOfBytes(db))\n\t}\n\treturn dst\n}\n\nfunc mergeMessageListValue(dst, src protoreflect.Value, opts mergeOptions) protoreflect.Value {\n\tdstl := dst.List()\n\tsrcl := src.List()\n\tfor i, llen := 0, srcl.Len(); i < llen; i++ {\n\t\tsm := srcl.Get(i).Message()\n\t\tdm := proto.Clone(sm.Interface()).ProtoReflect()\n\t\tdstl.Append(protoreflect.ValueOfMessage(dm))\n\t}\n\treturn dst\n}\n\nfunc mergeMessageValue(dst, src protoreflect.Value, opts mergeOptions) protoreflect.Value {\n\topts.Merge(dst.Message().Interface(), src.Message().Interface())\n\treturn dst\n}\n\nfunc mergeMessage(dst, src pointer, f *coderFieldInfo, opts mergeOptions) {\n\tif f.mi != nil {\n\t\tif dst.Elem().IsNil() {\n\t\t\tdst.SetPointer(pointerOfValue(reflect.New(f.mi.GoReflectType.Elem())))\n\t\t}\n\t\tf.mi.mergePointer(dst.Elem(), src.Elem(), opts)\n\t} else {\n\t\tdm := dst.AsValueOf(f.ft).Elem()\n\t\tsm := src.AsValueOf(f.ft).Elem()\n\t\tif dm.IsNil() {\n\t\t\tdm.Set(reflect.New(f.ft.Elem()))\n\t\t}\n\t\topts.Merge(asMessage(dm), asMessage(sm))\n\t}\n}\n\nfunc mergeMessageSlice(dst, src pointer, f *coderFieldInfo, opts mergeOptions) {\n\tfor _, sp := range src.PointerSlice() {\n\t\tdm := reflect.New(f.ft.Elem().Elem())\n\t\tif f.mi != nil {\n\t\t\tf.mi.mergePointer(pointerOfValue(dm), sp, opts)\n\t\t} else {\n\t\t\topts.Merge(asMessage(dm), asMessage(sp.AsValueOf(f.ft.Elem().Elem())))\n\t\t}\n\t\tdst.AppendPointerSlice(pointerOfValue(dm))\n\t}\n}\n\nfunc mergeBytes(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\t*dst.Bytes() = append(emptyBuf[:], *src.Bytes()...)\n}\n\nfunc mergeBytesNoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tv := *src.Bytes()\n\tif len(v) > 0 {\n\t\t*dst.Bytes() = append(emptyBuf[:], v...)\n\t}\n}\n\nfunc mergeBytesSlice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tds := dst.BytesSlice()\n\tfor _, v := range *src.BytesSlice() {\n\t\t*ds = append(*ds, append(emptyBuf[:], v...))\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/merge_gen.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-types. DO NOT EDIT.\n\npackage impl\n\nimport ()\n\nfunc mergeBool(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\t*dst.Bool() = *src.Bool()\n}\n\nfunc mergeBoolNoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tv := *src.Bool()\n\tif v != false {\n\t\t*dst.Bool() = v\n\t}\n}\n\nfunc mergeBoolPtr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tp := *src.BoolPtr()\n\tif p != nil {\n\t\tv := *p\n\t\t*dst.BoolPtr() = &v\n\t}\n}\n\nfunc mergeBoolSlice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tds := dst.BoolSlice()\n\tss := src.BoolSlice()\n\t*ds = append(*ds, *ss...)\n}\n\nfunc mergeInt32(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\t*dst.Int32() = *src.Int32()\n}\n\nfunc mergeInt32NoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tv := *src.Int32()\n\tif v != 0 {\n\t\t*dst.Int32() = v\n\t}\n}\n\nfunc mergeInt32Ptr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tp := *src.Int32Ptr()\n\tif p != nil {\n\t\tv := *p\n\t\t*dst.Int32Ptr() = &v\n\t}\n}\n\nfunc mergeInt32Slice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tds := dst.Int32Slice()\n\tss := src.Int32Slice()\n\t*ds = append(*ds, *ss...)\n}\n\nfunc mergeUint32(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\t*dst.Uint32() = *src.Uint32()\n}\n\nfunc mergeUint32NoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tv := *src.Uint32()\n\tif v != 0 {\n\t\t*dst.Uint32() = v\n\t}\n}\n\nfunc mergeUint32Ptr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tp := *src.Uint32Ptr()\n\tif p != nil {\n\t\tv := *p\n\t\t*dst.Uint32Ptr() = &v\n\t}\n}\n\nfunc mergeUint32Slice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tds := dst.Uint32Slice()\n\tss := src.Uint32Slice()\n\t*ds = append(*ds, *ss...)\n}\n\nfunc mergeInt64(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\t*dst.Int64() = *src.Int64()\n}\n\nfunc mergeInt64NoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tv := *src.Int64()\n\tif v != 0 {\n\t\t*dst.Int64() = v\n\t}\n}\n\nfunc mergeInt64Ptr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tp := *src.Int64Ptr()\n\tif p != nil {\n\t\tv := *p\n\t\t*dst.Int64Ptr() = &v\n\t}\n}\n\nfunc mergeInt64Slice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tds := dst.Int64Slice()\n\tss := src.Int64Slice()\n\t*ds = append(*ds, *ss...)\n}\n\nfunc mergeUint64(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\t*dst.Uint64() = *src.Uint64()\n}\n\nfunc mergeUint64NoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tv := *src.Uint64()\n\tif v != 0 {\n\t\t*dst.Uint64() = v\n\t}\n}\n\nfunc mergeUint64Ptr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tp := *src.Uint64Ptr()\n\tif p != nil {\n\t\tv := *p\n\t\t*dst.Uint64Ptr() = &v\n\t}\n}\n\nfunc mergeUint64Slice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tds := dst.Uint64Slice()\n\tss := src.Uint64Slice()\n\t*ds = append(*ds, *ss...)\n}\n\nfunc mergeFloat32(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\t*dst.Float32() = *src.Float32()\n}\n\nfunc mergeFloat32NoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tv := *src.Float32()\n\tif v != 0 {\n\t\t*dst.Float32() = v\n\t}\n}\n\nfunc mergeFloat32Ptr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tp := *src.Float32Ptr()\n\tif p != nil {\n\t\tv := *p\n\t\t*dst.Float32Ptr() = &v\n\t}\n}\n\nfunc mergeFloat32Slice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tds := dst.Float32Slice()\n\tss := src.Float32Slice()\n\t*ds = append(*ds, *ss...)\n}\n\nfunc mergeFloat64(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\t*dst.Float64() = *src.Float64()\n}\n\nfunc mergeFloat64NoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tv := *src.Float64()\n\tif v != 0 {\n\t\t*dst.Float64() = v\n\t}\n}\n\nfunc mergeFloat64Ptr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tp := *src.Float64Ptr()\n\tif p != nil {\n\t\tv := *p\n\t\t*dst.Float64Ptr() = &v\n\t}\n}\n\nfunc mergeFloat64Slice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tds := dst.Float64Slice()\n\tss := src.Float64Slice()\n\t*ds = append(*ds, *ss...)\n}\n\nfunc mergeString(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\t*dst.String() = *src.String()\n}\n\nfunc mergeStringNoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tv := *src.String()\n\tif v != \"\" {\n\t\t*dst.String() = v\n\t}\n}\n\nfunc mergeStringPtr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tp := *src.StringPtr()\n\tif p != nil {\n\t\tv := *p\n\t\t*dst.StringPtr() = &v\n\t}\n}\n\nfunc mergeStringSlice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tds := dst.StringSlice()\n\tss := src.StringSlice()\n\t*ds = append(*ds, *ss...)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/message.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\t\"sync/atomic\"\n\n\t\"google.golang.org/protobuf/internal/genid\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\n// MessageInfo provides protobuf related functionality for a given Go type\n// that represents a message. A given instance of MessageInfo is tied to\n// exactly one Go type, which must be a pointer to a struct type.\n//\n// The exported fields must be populated before any methods are called\n// and cannot be mutated after set.\ntype MessageInfo struct {\n\t// GoReflectType is the underlying message Go type and must be populated.\n\tGoReflectType reflect.Type // pointer to struct\n\n\t// Desc is the underlying message descriptor type and must be populated.\n\tDesc protoreflect.MessageDescriptor\n\n\t// Deprecated: Exporter will be removed the next time we bump\n\t// protoimpl.GenVersion. See https://github.com/golang/protobuf/issues/1640\n\tExporter exporter\n\n\t// OneofWrappers is list of pointers to oneof wrapper struct types.\n\tOneofWrappers []any\n\n\tinitMu   sync.Mutex // protects all unexported fields\n\tinitDone uint32\n\n\treflectMessageInfo // for reflection implementation\n\tcoderMessageInfo   // for fast-path method implementations\n}\n\n// exporter is a function that returns a reference to the ith field of v,\n// where v is a pointer to a struct. It returns nil if it does not support\n// exporting the requested field (e.g., already exported).\ntype exporter func(v any, i int) any\n\n// getMessageInfo returns the MessageInfo for any message type that\n// is generated by our implementation of protoc-gen-go (for v2 and on).\n// If it is unable to obtain a MessageInfo, it returns nil.\nfunc getMessageInfo(mt reflect.Type) *MessageInfo {\n\tm, ok := reflect.Zero(mt).Interface().(protoreflect.ProtoMessage)\n\tif !ok {\n\t\treturn nil\n\t}\n\tmr, ok := m.ProtoReflect().(interface{ ProtoMessageInfo() *MessageInfo })\n\tif !ok {\n\t\treturn nil\n\t}\n\treturn mr.ProtoMessageInfo()\n}\n\nfunc (mi *MessageInfo) init() {\n\t// This function is called in the hot path. Inline the sync.Once logic,\n\t// since allocating a closure for Once.Do is expensive.\n\t// Keep init small to ensure that it can be inlined.\n\tif atomic.LoadUint32(&mi.initDone) == 0 {\n\t\tmi.initOnce()\n\t}\n}\n\nfunc (mi *MessageInfo) initOnce() {\n\tmi.initMu.Lock()\n\tdefer mi.initMu.Unlock()\n\tif mi.initDone == 1 {\n\t\treturn\n\t}\n\tif opaqueInitHook(mi) {\n\t\treturn\n\t}\n\n\tt := mi.GoReflectType\n\tif t.Kind() != reflect.Ptr && t.Elem().Kind() != reflect.Struct {\n\t\tpanic(fmt.Sprintf(\"got %v, want *struct kind\", t))\n\t}\n\tt = t.Elem()\n\n\tsi := mi.makeStructInfo(t)\n\tmi.makeReflectFuncs(t, si)\n\tmi.makeCoderMethods(t, si)\n\n\tatomic.StoreUint32(&mi.initDone, 1)\n}\n\n// getPointer returns the pointer for a message, which should be of\n// the type of the MessageInfo. If the message is of a different type,\n// it returns ok==false.\nfunc (mi *MessageInfo) getPointer(m protoreflect.Message) (p pointer, ok bool) {\n\tswitch m := m.(type) {\n\tcase *messageState:\n\t\treturn m.pointer(), m.messageInfo() == mi\n\tcase *messageReflectWrapper:\n\t\treturn m.pointer(), m.messageInfo() == mi\n\t}\n\treturn pointer{}, false\n}\n\ntype (\n\tSizeCache       = int32\n\tWeakFields      = map[int32]protoreflect.ProtoMessage\n\tUnknownFields   = unknownFieldsA // TODO: switch to unknownFieldsB\n\tunknownFieldsA  = []byte\n\tunknownFieldsB  = *[]byte\n\tExtensionFields = map[int32]ExtensionField\n)\n\nvar (\n\tsizecacheType       = reflect.TypeOf(SizeCache(0))\n\tunknownFieldsAType  = reflect.TypeOf(unknownFieldsA(nil))\n\tunknownFieldsBType  = reflect.TypeOf(unknownFieldsB(nil))\n\textensionFieldsType = reflect.TypeOf(ExtensionFields(nil))\n)\n\ntype structInfo struct {\n\tsizecacheOffset offset\n\tsizecacheType   reflect.Type\n\tunknownOffset   offset\n\tunknownType     reflect.Type\n\textensionOffset offset\n\textensionType   reflect.Type\n\n\tlazyOffset     offset\n\tpresenceOffset offset\n\n\tfieldsByNumber        map[protoreflect.FieldNumber]reflect.StructField\n\toneofsByName          map[protoreflect.Name]reflect.StructField\n\toneofWrappersByType   map[reflect.Type]protoreflect.FieldNumber\n\toneofWrappersByNumber map[protoreflect.FieldNumber]reflect.Type\n}\n\nfunc (mi *MessageInfo) makeStructInfo(t reflect.Type) structInfo {\n\tsi := structInfo{\n\t\tsizecacheOffset: invalidOffset,\n\t\tunknownOffset:   invalidOffset,\n\t\textensionOffset: invalidOffset,\n\t\tlazyOffset:      invalidOffset,\n\t\tpresenceOffset:  invalidOffset,\n\n\t\tfieldsByNumber:        map[protoreflect.FieldNumber]reflect.StructField{},\n\t\toneofsByName:          map[protoreflect.Name]reflect.StructField{},\n\t\toneofWrappersByType:   map[reflect.Type]protoreflect.FieldNumber{},\n\t\toneofWrappersByNumber: map[protoreflect.FieldNumber]reflect.Type{},\n\t}\n\nfieldLoop:\n\tfor i := 0; i < t.NumField(); i++ {\n\t\tswitch f := t.Field(i); f.Name {\n\t\tcase genid.SizeCache_goname, genid.SizeCacheA_goname:\n\t\t\tif f.Type == sizecacheType {\n\t\t\t\tsi.sizecacheOffset = offsetOf(f)\n\t\t\t\tsi.sizecacheType = f.Type\n\t\t\t}\n\t\tcase genid.UnknownFields_goname, genid.UnknownFieldsA_goname:\n\t\t\tif f.Type == unknownFieldsAType || f.Type == unknownFieldsBType {\n\t\t\t\tsi.unknownOffset = offsetOf(f)\n\t\t\t\tsi.unknownType = f.Type\n\t\t\t}\n\t\tcase genid.ExtensionFields_goname, genid.ExtensionFieldsA_goname, genid.ExtensionFieldsB_goname:\n\t\t\tif f.Type == extensionFieldsType {\n\t\t\t\tsi.extensionOffset = offsetOf(f)\n\t\t\t\tsi.extensionType = f.Type\n\t\t\t}\n\t\tcase \"lazyFields\", \"XXX_lazyUnmarshalInfo\":\n\t\t\tsi.lazyOffset = offsetOf(f)\n\t\tcase \"XXX_presence\":\n\t\t\tsi.presenceOffset = offsetOf(f)\n\t\tdefault:\n\t\t\tfor _, s := range strings.Split(f.Tag.Get(\"protobuf\"), \",\") {\n\t\t\t\tif len(s) > 0 && strings.Trim(s, \"0123456789\") == \"\" {\n\t\t\t\t\tn, _ := strconv.ParseUint(s, 10, 64)\n\t\t\t\t\tsi.fieldsByNumber[protoreflect.FieldNumber(n)] = f\n\t\t\t\t\tcontinue fieldLoop\n\t\t\t\t}\n\t\t\t}\n\t\t\tif s := f.Tag.Get(\"protobuf_oneof\"); len(s) > 0 {\n\t\t\t\tsi.oneofsByName[protoreflect.Name(s)] = f\n\t\t\t\tcontinue fieldLoop\n\t\t\t}\n\t\t}\n\t}\n\n\t// Derive a mapping of oneof wrappers to fields.\n\toneofWrappers := mi.OneofWrappers\n\tmethods := make([]reflect.Method, 0, 2)\n\tif m, ok := reflect.PtrTo(t).MethodByName(\"XXX_OneofFuncs\"); ok {\n\t\tmethods = append(methods, m)\n\t}\n\tif m, ok := reflect.PtrTo(t).MethodByName(\"XXX_OneofWrappers\"); ok {\n\t\tmethods = append(methods, m)\n\t}\n\tfor _, fn := range methods {\n\t\tfor _, v := range fn.Func.Call([]reflect.Value{reflect.Zero(fn.Type.In(0))}) {\n\t\t\tif vs, ok := v.Interface().([]any); ok {\n\t\t\t\toneofWrappers = vs\n\t\t\t}\n\t\t}\n\t}\n\tfor _, v := range oneofWrappers {\n\t\ttf := reflect.TypeOf(v).Elem()\n\t\tf := tf.Field(0)\n\t\tfor _, s := range strings.Split(f.Tag.Get(\"protobuf\"), \",\") {\n\t\t\tif len(s) > 0 && strings.Trim(s, \"0123456789\") == \"\" {\n\t\t\t\tn, _ := strconv.ParseUint(s, 10, 64)\n\t\t\t\tsi.oneofWrappersByType[tf] = protoreflect.FieldNumber(n)\n\t\t\t\tsi.oneofWrappersByNumber[protoreflect.FieldNumber(n)] = tf\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\n\treturn si\n}\n\nfunc (mi *MessageInfo) New() protoreflect.Message {\n\tm := reflect.New(mi.GoReflectType.Elem()).Interface()\n\tif r, ok := m.(protoreflect.ProtoMessage); ok {\n\t\treturn r.ProtoReflect()\n\t}\n\treturn mi.MessageOf(m)\n}\nfunc (mi *MessageInfo) Zero() protoreflect.Message {\n\treturn mi.MessageOf(reflect.Zero(mi.GoReflectType).Interface())\n}\nfunc (mi *MessageInfo) Descriptor() protoreflect.MessageDescriptor {\n\treturn mi.Desc\n}\nfunc (mi *MessageInfo) Enum(i int) protoreflect.EnumType {\n\tmi.init()\n\tfd := mi.Desc.Fields().Get(i)\n\treturn Export{}.EnumTypeOf(mi.fieldTypes[fd.Number()])\n}\nfunc (mi *MessageInfo) Message(i int) protoreflect.MessageType {\n\tmi.init()\n\tfd := mi.Desc.Fields().Get(i)\n\tswitch {\n\tcase fd.IsMap():\n\t\treturn mapEntryType{fd.Message(), mi.fieldTypes[fd.Number()]}\n\tdefault:\n\t\treturn Export{}.MessageTypeOf(mi.fieldTypes[fd.Number()])\n\t}\n}\n\ntype mapEntryType struct {\n\tdesc    protoreflect.MessageDescriptor\n\tvalType any // zero value of enum or message type\n}\n\nfunc (mt mapEntryType) New() protoreflect.Message {\n\treturn nil\n}\nfunc (mt mapEntryType) Zero() protoreflect.Message {\n\treturn nil\n}\nfunc (mt mapEntryType) Descriptor() protoreflect.MessageDescriptor {\n\treturn mt.desc\n}\nfunc (mt mapEntryType) Enum(i int) protoreflect.EnumType {\n\tfd := mt.desc.Fields().Get(i)\n\tif fd.Enum() == nil {\n\t\treturn nil\n\t}\n\treturn Export{}.EnumTypeOf(mt.valType)\n}\nfunc (mt mapEntryType) Message(i int) protoreflect.MessageType {\n\tfd := mt.desc.Fields().Get(i)\n\tif fd.Message() == nil {\n\t\treturn nil\n\t}\n\treturn Export{}.MessageTypeOf(mt.valType)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/message_opaque.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"fmt\"\n\t\"math\"\n\t\"reflect\"\n\t\"strings\"\n\t\"sync/atomic\"\n\n\t\"google.golang.org/protobuf/internal/filedesc\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\ntype opaqueStructInfo struct {\n\tstructInfo\n}\n\n// isOpaque determines whether a protobuf message type is on the Opaque API.  It\n// checks whether the type is a Go struct that protoc-gen-go would generate.\n//\n// This function only detects newly generated messages from the v2\n// implementation of protoc-gen-go. It is unable to classify generated messages\n// that are too old or those that are generated by a different generator\n// such as protoc-gen-gogo.\nfunc isOpaque(t reflect.Type) bool {\n\t// The current detection mechanism is to simply check the first field\n\t// for a struct tag with the \"protogen\" key.\n\tif t.Kind() == reflect.Struct && t.NumField() > 0 {\n\t\tpgt := t.Field(0).Tag.Get(\"protogen\")\n\t\treturn strings.HasPrefix(pgt, \"opaque.\")\n\t}\n\treturn false\n}\n\nfunc opaqueInitHook(mi *MessageInfo) bool {\n\tmt := mi.GoReflectType.Elem()\n\tsi := opaqueStructInfo{\n\t\tstructInfo: mi.makeStructInfo(mt),\n\t}\n\n\tif !isOpaque(mt) {\n\t\treturn false\n\t}\n\n\tdefer atomic.StoreUint32(&mi.initDone, 1)\n\n\tmi.fields = map[protoreflect.FieldNumber]*fieldInfo{}\n\tfds := mi.Desc.Fields()\n\tfor i := 0; i < fds.Len(); i++ {\n\t\tfd := fds.Get(i)\n\t\tfs := si.fieldsByNumber[fd.Number()]\n\t\tvar fi fieldInfo\n\t\tusePresence, _ := filedesc.UsePresenceForField(fd)\n\n\t\tswitch {\n\t\tcase fd.ContainingOneof() != nil && !fd.ContainingOneof().IsSynthetic():\n\t\t\t// Oneofs are no different for opaque.\n\t\t\tfi = fieldInfoForOneof(fd, si.oneofsByName[fd.ContainingOneof().Name()], mi.Exporter, si.oneofWrappersByNumber[fd.Number()])\n\t\tcase fd.IsMap():\n\t\t\tfi = mi.fieldInfoForMapOpaque(si, fd, fs)\n\t\tcase fd.IsList() && fd.Message() == nil && usePresence:\n\t\t\tfi = mi.fieldInfoForScalarListOpaque(si, fd, fs)\n\t\tcase fd.IsList() && fd.Message() == nil:\n\t\t\t// Proto3 lists without presence can use same access methods as open\n\t\t\tfi = fieldInfoForList(fd, fs, mi.Exporter)\n\t\tcase fd.IsList() && usePresence:\n\t\t\tfi = mi.fieldInfoForMessageListOpaque(si, fd, fs)\n\t\tcase fd.IsList():\n\t\t\t// Proto3 opaque messages that does not need presence bitmap.\n\t\t\t// Different representation than open struct, but same logic\n\t\t\tfi = mi.fieldInfoForMessageListOpaqueNoPresence(si, fd, fs)\n\t\tcase fd.Message() != nil && usePresence:\n\t\t\tfi = mi.fieldInfoForMessageOpaque(si, fd, fs)\n\t\tcase fd.Message() != nil:\n\t\t\t// Proto3 messages without presence can use same access methods as open\n\t\t\tfi = fieldInfoForMessage(fd, fs, mi.Exporter)\n\t\tdefault:\n\t\t\tfi = mi.fieldInfoForScalarOpaque(si, fd, fs)\n\t\t}\n\t\tmi.fields[fd.Number()] = &fi\n\t}\n\tmi.oneofs = map[protoreflect.Name]*oneofInfo{}\n\tfor i := 0; i < mi.Desc.Oneofs().Len(); i++ {\n\t\tod := mi.Desc.Oneofs().Get(i)\n\t\tmi.oneofs[od.Name()] = makeOneofInfoOpaque(mi, od, si.structInfo, mi.Exporter)\n\t}\n\n\tmi.denseFields = make([]*fieldInfo, fds.Len()*2)\n\tfor i := 0; i < fds.Len(); i++ {\n\t\tif fd := fds.Get(i); int(fd.Number()) < len(mi.denseFields) {\n\t\t\tmi.denseFields[fd.Number()] = mi.fields[fd.Number()]\n\t\t}\n\t}\n\n\tfor i := 0; i < fds.Len(); {\n\t\tfd := fds.Get(i)\n\t\tif od := fd.ContainingOneof(); od != nil && !fd.ContainingOneof().IsSynthetic() {\n\t\t\tmi.rangeInfos = append(mi.rangeInfos, mi.oneofs[od.Name()])\n\t\t\ti += od.Fields().Len()\n\t\t} else {\n\t\t\tmi.rangeInfos = append(mi.rangeInfos, mi.fields[fd.Number()])\n\t\t\ti++\n\t\t}\n\t}\n\n\tmi.makeExtensionFieldsFunc(mt, si.structInfo)\n\tmi.makeUnknownFieldsFunc(mt, si.structInfo)\n\tmi.makeOpaqueCoderMethods(mt, si)\n\tmi.makeFieldTypes(si.structInfo)\n\n\treturn true\n}\n\nfunc makeOneofInfoOpaque(mi *MessageInfo, od protoreflect.OneofDescriptor, si structInfo, x exporter) *oneofInfo {\n\toi := &oneofInfo{oneofDesc: od}\n\tif od.IsSynthetic() {\n\t\tfd := od.Fields().Get(0)\n\t\tindex, _ := presenceIndex(mi.Desc, fd)\n\t\toi.which = func(p pointer) protoreflect.FieldNumber {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn 0\n\t\t\t}\n\t\t\tif !mi.present(p, index) {\n\t\t\t\treturn 0\n\t\t\t}\n\t\t\treturn od.Fields().Get(0).Number()\n\t\t}\n\t\treturn oi\n\t}\n\t// Dispatch to non-opaque oneof implementation for non-synthetic oneofs.\n\treturn makeOneofInfo(od, si, x)\n}\n\nfunc (mi *MessageInfo) fieldInfoForMapOpaque(si opaqueStructInfo, fd protoreflect.FieldDescriptor, fs reflect.StructField) fieldInfo {\n\tft := fs.Type\n\tif ft.Kind() != reflect.Map {\n\t\tpanic(fmt.Sprintf(\"invalid type: got %v, want map kind\", ft))\n\t}\n\tfieldOffset := offsetOf(fs)\n\tconv := NewConverter(ft, fd)\n\treturn fieldInfo{\n\t\tfieldDesc: fd,\n\t\thas: func(p pointer) bool {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\t// Don't bother checking presence bits, since we need to\n\t\t\t// look at the map length even if the presence bit is set.\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\treturn rv.Len() > 0\n\t\t},\n\t\tclear: func(p pointer) {\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\trv.Set(reflect.Zero(rv.Type()))\n\t\t},\n\t\tget: func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tif rv.Len() == 0 {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\treturn conv.PBValueOf(rv)\n\t\t},\n\t\tset: func(p pointer, v protoreflect.Value) {\n\t\t\tpv := conv.GoValueOf(v)\n\t\t\tif pv.IsNil() {\n\t\t\t\tpanic(fmt.Sprintf(\"invalid value: setting map field to read-only value\"))\n\t\t\t}\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\trv.Set(pv)\n\t\t},\n\t\tmutable: func(p pointer) protoreflect.Value {\n\t\t\tv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tif v.IsNil() {\n\t\t\t\tv.Set(reflect.MakeMap(fs.Type))\n\t\t\t}\n\t\t\treturn conv.PBValueOf(v)\n\t\t},\n\t\tnewField: func() protoreflect.Value {\n\t\t\treturn conv.New()\n\t\t},\n\t}\n}\n\nfunc (mi *MessageInfo) fieldInfoForScalarListOpaque(si opaqueStructInfo, fd protoreflect.FieldDescriptor, fs reflect.StructField) fieldInfo {\n\tft := fs.Type\n\tif ft.Kind() != reflect.Slice {\n\t\tpanic(fmt.Sprintf(\"invalid type: got %v, want slice kind\", ft))\n\t}\n\tconv := NewConverter(reflect.PtrTo(ft), fd)\n\tfieldOffset := offsetOf(fs)\n\tindex, _ := presenceIndex(mi.Desc, fd)\n\treturn fieldInfo{\n\t\tfieldDesc: fd,\n\t\thas: func(p pointer) bool {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\treturn rv.Len() > 0\n\t\t},\n\t\tclear: func(p pointer) {\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\trv.Set(reflect.Zero(rv.Type()))\n\t\t},\n\t\tget: func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type)\n\t\t\tif rv.Elem().Len() == 0 {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\treturn conv.PBValueOf(rv)\n\t\t},\n\t\tset: func(p pointer, v protoreflect.Value) {\n\t\t\tpv := conv.GoValueOf(v)\n\t\t\tif pv.IsNil() {\n\t\t\t\tpanic(fmt.Sprintf(\"invalid value: setting repeated field to read-only value\"))\n\t\t\t}\n\t\t\tmi.setPresent(p, index)\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\trv.Set(pv.Elem())\n\t\t},\n\t\tmutable: func(p pointer) protoreflect.Value {\n\t\t\tmi.setPresent(p, index)\n\t\t\treturn conv.PBValueOf(p.Apply(fieldOffset).AsValueOf(fs.Type))\n\t\t},\n\t\tnewField: func() protoreflect.Value {\n\t\t\treturn conv.New()\n\t\t},\n\t}\n}\n\nfunc (mi *MessageInfo) fieldInfoForMessageListOpaque(si opaqueStructInfo, fd protoreflect.FieldDescriptor, fs reflect.StructField) fieldInfo {\n\tft := fs.Type\n\tif ft.Kind() != reflect.Ptr || ft.Elem().Kind() != reflect.Slice {\n\t\tpanic(fmt.Sprintf(\"invalid type: got %v, want slice kind\", ft))\n\t}\n\tconv := NewConverter(ft, fd)\n\tfieldOffset := offsetOf(fs)\n\tindex, _ := presenceIndex(mi.Desc, fd)\n\tfieldNumber := fd.Number()\n\treturn fieldInfo{\n\t\tfieldDesc: fd,\n\t\thas: func(p pointer) bool {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif !mi.present(p, index) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tsp := p.Apply(fieldOffset).AtomicGetPointer()\n\t\t\tif sp.IsNil() {\n\t\t\t\t// Lazily unmarshal this field.\n\t\t\t\tmi.lazyUnmarshal(p, fieldNumber)\n\t\t\t\tsp = p.Apply(fieldOffset).AtomicGetPointer()\n\t\t\t}\n\t\t\trv := sp.AsValueOf(fs.Type.Elem())\n\t\t\treturn rv.Elem().Len() > 0\n\t\t},\n\t\tclear: func(p pointer) {\n\t\t\tfp := p.Apply(fieldOffset)\n\t\t\tsp := fp.AtomicGetPointer()\n\t\t\tif sp.IsNil() {\n\t\t\t\tsp = fp.AtomicSetPointerIfNil(pointerOfValue(reflect.New(fs.Type.Elem())))\n\t\t\t\tmi.setPresent(p, index)\n\t\t\t}\n\t\t\trv := sp.AsValueOf(fs.Type.Elem())\n\t\t\trv.Elem().Set(reflect.Zero(rv.Type().Elem()))\n\t\t},\n\t\tget: func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tif !mi.present(p, index) {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tsp := p.Apply(fieldOffset).AtomicGetPointer()\n\t\t\tif sp.IsNil() {\n\t\t\t\t// Lazily unmarshal this field.\n\t\t\t\tmi.lazyUnmarshal(p, fieldNumber)\n\t\t\t\tsp = p.Apply(fieldOffset).AtomicGetPointer()\n\t\t\t}\n\t\t\trv := sp.AsValueOf(fs.Type.Elem())\n\t\t\tif rv.Elem().Len() == 0 {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\treturn conv.PBValueOf(rv)\n\t\t},\n\t\tset: func(p pointer, v protoreflect.Value) {\n\t\t\tfp := p.Apply(fieldOffset)\n\t\t\tsp := fp.AtomicGetPointer()\n\t\t\tif sp.IsNil() {\n\t\t\t\tsp = fp.AtomicSetPointerIfNil(pointerOfValue(reflect.New(fs.Type.Elem())))\n\t\t\t\tmi.setPresent(p, index)\n\t\t\t}\n\t\t\trv := sp.AsValueOf(fs.Type.Elem())\n\t\t\tval := conv.GoValueOf(v)\n\t\t\tif val.IsNil() {\n\t\t\t\tpanic(fmt.Sprintf(\"invalid value: setting repeated field to read-only value\"))\n\t\t\t} else {\n\t\t\t\trv.Elem().Set(val.Elem())\n\t\t\t}\n\t\t},\n\t\tmutable: func(p pointer) protoreflect.Value {\n\t\t\tfp := p.Apply(fieldOffset)\n\t\t\tsp := fp.AtomicGetPointer()\n\t\t\tif sp.IsNil() {\n\t\t\t\tif mi.present(p, index) {\n\t\t\t\t\t// Lazily unmarshal this field.\n\t\t\t\t\tmi.lazyUnmarshal(p, fieldNumber)\n\t\t\t\t\tsp = p.Apply(fieldOffset).AtomicGetPointer()\n\t\t\t\t} else {\n\t\t\t\t\tsp = fp.AtomicSetPointerIfNil(pointerOfValue(reflect.New(fs.Type.Elem())))\n\t\t\t\t\tmi.setPresent(p, index)\n\t\t\t\t}\n\t\t\t}\n\t\t\trv := sp.AsValueOf(fs.Type.Elem())\n\t\t\treturn conv.PBValueOf(rv)\n\t\t},\n\t\tnewField: func() protoreflect.Value {\n\t\t\treturn conv.New()\n\t\t},\n\t}\n}\n\nfunc (mi *MessageInfo) fieldInfoForMessageListOpaqueNoPresence(si opaqueStructInfo, fd protoreflect.FieldDescriptor, fs reflect.StructField) fieldInfo {\n\tft := fs.Type\n\tif ft.Kind() != reflect.Ptr || ft.Elem().Kind() != reflect.Slice {\n\t\tpanic(fmt.Sprintf(\"invalid type: got %v, want slice kind\", ft))\n\t}\n\tconv := NewConverter(ft, fd)\n\tfieldOffset := offsetOf(fs)\n\treturn fieldInfo{\n\t\tfieldDesc: fd,\n\t\thas: func(p pointer) bool {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tif rv.IsNil() {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn rv.Elem().Len() > 0\n\t\t},\n\t\tclear: func(p pointer) {\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tif !rv.IsNil() {\n\t\t\t\trv.Elem().Set(reflect.Zero(rv.Type().Elem()))\n\t\t\t}\n\t\t},\n\t\tget: func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tif rv.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tif rv.Elem().Len() == 0 {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\treturn conv.PBValueOf(rv)\n\t\t},\n\t\tset: func(p pointer, v protoreflect.Value) {\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tif rv.IsNil() {\n\t\t\t\trv.Set(reflect.New(fs.Type.Elem()))\n\t\t\t}\n\t\t\tval := conv.GoValueOf(v)\n\t\t\tif val.IsNil() {\n\t\t\t\tpanic(fmt.Sprintf(\"invalid value: setting repeated field to read-only value\"))\n\t\t\t} else {\n\t\t\t\trv.Elem().Set(val.Elem())\n\t\t\t}\n\t\t},\n\t\tmutable: func(p pointer) protoreflect.Value {\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tif rv.IsNil() {\n\t\t\t\trv.Set(reflect.New(fs.Type.Elem()))\n\t\t\t}\n\t\t\treturn conv.PBValueOf(rv)\n\t\t},\n\t\tnewField: func() protoreflect.Value {\n\t\t\treturn conv.New()\n\t\t},\n\t}\n}\n\nfunc (mi *MessageInfo) fieldInfoForScalarOpaque(si opaqueStructInfo, fd protoreflect.FieldDescriptor, fs reflect.StructField) fieldInfo {\n\tft := fs.Type\n\tnullable := fd.HasPresence()\n\tif oneof := fd.ContainingOneof(); oneof != nil && oneof.IsSynthetic() {\n\t\tnullable = true\n\t}\n\tderef := false\n\tif nullable && ft.Kind() == reflect.Ptr {\n\t\tft = ft.Elem()\n\t\tderef = true\n\t}\n\tconv := NewConverter(ft, fd)\n\tfieldOffset := offsetOf(fs)\n\tindex, _ := presenceIndex(mi.Desc, fd)\n\tvar getter func(p pointer) protoreflect.Value\n\tif !nullable {\n\t\tgetter = getterForDirectScalar(fd, fs, conv, fieldOffset)\n\t} else {\n\t\tgetter = getterForOpaqueNullableScalar(mi, index, fd, fs, conv, fieldOffset)\n\t}\n\treturn fieldInfo{\n\t\tfieldDesc: fd,\n\t\thas: func(p pointer) bool {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif nullable {\n\t\t\t\treturn mi.present(p, index)\n\t\t\t}\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tswitch rv.Kind() {\n\t\t\tcase reflect.Bool:\n\t\t\t\treturn rv.Bool()\n\t\t\tcase reflect.Int32, reflect.Int64:\n\t\t\t\treturn rv.Int() != 0\n\t\t\tcase reflect.Uint32, reflect.Uint64:\n\t\t\t\treturn rv.Uint() != 0\n\t\t\tcase reflect.Float32, reflect.Float64:\n\t\t\t\treturn rv.Float() != 0 || math.Signbit(rv.Float())\n\t\t\tcase reflect.String, reflect.Slice:\n\t\t\t\treturn rv.Len() > 0\n\t\t\tdefault:\n\t\t\t\tpanic(fmt.Sprintf(\"invalid type: %v\", rv.Type())) // should never happen\n\t\t\t}\n\t\t},\n\t\tclear: func(p pointer) {\n\t\t\tif nullable {\n\t\t\t\tmi.clearPresent(p, index)\n\t\t\t}\n\t\t\t// This is only valuable for bytes and strings, but we do it unconditionally.\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\trv.Set(reflect.Zero(rv.Type()))\n\t\t},\n\t\tget: getter,\n\t\t// TODO: Implement unsafe fast path for set?\n\t\tset: func(p pointer, v protoreflect.Value) {\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tif deref {\n\t\t\t\tif rv.IsNil() {\n\t\t\t\t\trv.Set(reflect.New(ft))\n\t\t\t\t}\n\t\t\t\trv = rv.Elem()\n\t\t\t}\n\n\t\t\trv.Set(conv.GoValueOf(v))\n\t\t\tif nullable && rv.Kind() == reflect.Slice && rv.IsNil() {\n\t\t\t\trv.Set(emptyBytes)\n\t\t\t}\n\t\t\tif nullable {\n\t\t\t\tmi.setPresent(p, index)\n\t\t\t}\n\t\t},\n\t\tnewField: func() protoreflect.Value {\n\t\t\treturn conv.New()\n\t\t},\n\t}\n}\n\nfunc (mi *MessageInfo) fieldInfoForMessageOpaque(si opaqueStructInfo, fd protoreflect.FieldDescriptor, fs reflect.StructField) fieldInfo {\n\tft := fs.Type\n\tconv := NewConverter(ft, fd)\n\tfieldOffset := offsetOf(fs)\n\tindex, _ := presenceIndex(mi.Desc, fd)\n\tfieldNumber := fd.Number()\n\telemType := fs.Type.Elem()\n\treturn fieldInfo{\n\t\tfieldDesc: fd,\n\t\thas: func(p pointer) bool {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn mi.present(p, index)\n\t\t},\n\t\tclear: func(p pointer) {\n\t\t\tmi.clearPresent(p, index)\n\t\t\tp.Apply(fieldOffset).AtomicSetNilPointer()\n\t\t},\n\t\tget: func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() || !mi.present(p, index) {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tfp := p.Apply(fieldOffset)\n\t\t\tmp := fp.AtomicGetPointer()\n\t\t\tif mp.IsNil() {\n\t\t\t\t// Lazily unmarshal this field.\n\t\t\t\tmi.lazyUnmarshal(p, fieldNumber)\n\t\t\t\tmp = fp.AtomicGetPointer()\n\t\t\t}\n\t\t\trv := mp.AsValueOf(elemType)\n\t\t\treturn conv.PBValueOf(rv)\n\t\t},\n\t\tset: func(p pointer, v protoreflect.Value) {\n\t\t\tval := pointerOfValue(conv.GoValueOf(v))\n\t\t\tif val.IsNil() {\n\t\t\t\tpanic(\"invalid nil pointer\")\n\t\t\t}\n\t\t\tp.Apply(fieldOffset).AtomicSetPointer(val)\n\t\t\tmi.setPresent(p, index)\n\t\t},\n\t\tmutable: func(p pointer) protoreflect.Value {\n\t\t\tfp := p.Apply(fieldOffset)\n\t\t\tmp := fp.AtomicGetPointer()\n\t\t\tif mp.IsNil() {\n\t\t\t\tif mi.present(p, index) {\n\t\t\t\t\t// Lazily unmarshal this field.\n\t\t\t\t\tmi.lazyUnmarshal(p, fieldNumber)\n\t\t\t\t\tmp = fp.AtomicGetPointer()\n\t\t\t\t} else {\n\t\t\t\t\tmp = pointerOfValue(conv.GoValueOf(conv.New()))\n\t\t\t\t\tfp.AtomicSetPointer(mp)\n\t\t\t\t\tmi.setPresent(p, index)\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn conv.PBValueOf(mp.AsValueOf(fs.Type.Elem()))\n\t\t},\n\t\tnewMessage: func() protoreflect.Message {\n\t\t\treturn conv.New().Message()\n\t\t},\n\t\tnewField: func() protoreflect.Value {\n\t\t\treturn conv.New()\n\t\t},\n\t}\n}\n\n// A presenceList wraps a List, updating presence bits as necessary when the\n// list contents change.\ntype presenceList struct {\n\tpvalueList\n\tsetPresence func(bool)\n}\ntype pvalueList interface {\n\tprotoreflect.List\n\t//Unwrapper\n}\n\nfunc (list presenceList) Append(v protoreflect.Value) {\n\tlist.pvalueList.Append(v)\n\tlist.setPresence(true)\n}\nfunc (list presenceList) Truncate(i int) {\n\tlist.pvalueList.Truncate(i)\n\tlist.setPresence(i > 0)\n}\n\n// presenceIndex returns the index to pass to presence functions.\n//\n// TODO: field.Desc.Index() would be simpler, and would give space to record the presence of oneof fields.\nfunc presenceIndex(md protoreflect.MessageDescriptor, fd protoreflect.FieldDescriptor) (uint32, presenceSize) {\n\tfound := false\n\tvar index, numIndices uint32\n\tfor i := 0; i < md.Fields().Len(); i++ {\n\t\tf := md.Fields().Get(i)\n\t\tif f == fd {\n\t\t\tfound = true\n\t\t\tindex = numIndices\n\t\t}\n\t\tif f.ContainingOneof() == nil || isLastOneofField(f) {\n\t\t\tnumIndices++\n\t\t}\n\t}\n\tif !found {\n\t\tpanic(fmt.Sprintf(\"BUG: %v not in %v\", fd.Name(), md.FullName()))\n\t}\n\treturn index, presenceSize(numIndices)\n}\n\nfunc isLastOneofField(fd protoreflect.FieldDescriptor) bool {\n\tfields := fd.ContainingOneof().Fields()\n\treturn fields.Get(fields.Len()-1) == fd\n}\n\nfunc (mi *MessageInfo) setPresent(p pointer, index uint32) {\n\tp.Apply(mi.presenceOffset).PresenceInfo().SetPresent(index, mi.presenceSize)\n}\n\nfunc (mi *MessageInfo) clearPresent(p pointer, index uint32) {\n\tp.Apply(mi.presenceOffset).PresenceInfo().ClearPresent(index)\n}\n\nfunc (mi *MessageInfo) present(p pointer, index uint32) bool {\n\treturn p.Apply(mi.presenceOffset).PresenceInfo().Present(index)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/message_opaque_gen.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-types. DO NOT EDIT.\n\npackage impl\n\nimport (\n\t\"reflect\"\n\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nfunc getterForOpaqueNullableScalar(mi *MessageInfo, index uint32, fd protoreflect.FieldDescriptor, fs reflect.StructField, conv Converter, fieldOffset offset) func(p pointer) protoreflect.Value {\n\tft := fs.Type\n\tif ft.Kind() == reflect.Ptr {\n\t\tft = ft.Elem()\n\t}\n\tif fd.Kind() == protoreflect.EnumKind {\n\t\t// Enums for nullable opaque types.\n\t\treturn func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() || !mi.present(p, index) {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\treturn conv.PBValueOf(rv)\n\t\t}\n\t}\n\tswitch ft.Kind() {\n\tcase reflect.Bool:\n\t\treturn func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() || !mi.present(p, index) {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tx := p.Apply(fieldOffset).Bool()\n\t\t\treturn protoreflect.ValueOfBool(*x)\n\t\t}\n\tcase reflect.Int32:\n\t\treturn func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() || !mi.present(p, index) {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tx := p.Apply(fieldOffset).Int32()\n\t\t\treturn protoreflect.ValueOfInt32(*x)\n\t\t}\n\tcase reflect.Uint32:\n\t\treturn func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() || !mi.present(p, index) {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tx := p.Apply(fieldOffset).Uint32()\n\t\t\treturn protoreflect.ValueOfUint32(*x)\n\t\t}\n\tcase reflect.Int64:\n\t\treturn func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() || !mi.present(p, index) {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tx := p.Apply(fieldOffset).Int64()\n\t\t\treturn protoreflect.ValueOfInt64(*x)\n\t\t}\n\tcase reflect.Uint64:\n\t\treturn func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() || !mi.present(p, index) {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tx := p.Apply(fieldOffset).Uint64()\n\t\t\treturn protoreflect.ValueOfUint64(*x)\n\t\t}\n\tcase reflect.Float32:\n\t\treturn func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() || !mi.present(p, index) {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tx := p.Apply(fieldOffset).Float32()\n\t\t\treturn protoreflect.ValueOfFloat32(*x)\n\t\t}\n\tcase reflect.Float64:\n\t\treturn func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() || !mi.present(p, index) {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tx := p.Apply(fieldOffset).Float64()\n\t\t\treturn protoreflect.ValueOfFloat64(*x)\n\t\t}\n\tcase reflect.String:\n\t\tif fd.Kind() == protoreflect.BytesKind {\n\t\t\treturn func(p pointer) protoreflect.Value {\n\t\t\t\tif p.IsNil() || !mi.present(p, index) {\n\t\t\t\t\treturn conv.Zero()\n\t\t\t\t}\n\t\t\t\tx := p.Apply(fieldOffset).StringPtr()\n\t\t\t\tif *x == nil {\n\t\t\t\t\treturn conv.Zero()\n\t\t\t\t}\n\t\t\t\tif len(**x) == 0 {\n\t\t\t\t\treturn protoreflect.ValueOfBytes(nil)\n\t\t\t\t}\n\t\t\t\treturn protoreflect.ValueOfBytes([]byte(**x))\n\t\t\t}\n\t\t}\n\t\treturn func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() || !mi.present(p, index) {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tx := p.Apply(fieldOffset).StringPtr()\n\t\t\tif *x == nil {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\treturn protoreflect.ValueOfString(**x)\n\t\t}\n\tcase reflect.Slice:\n\t\tif fd.Kind() == protoreflect.StringKind {\n\t\t\treturn func(p pointer) protoreflect.Value {\n\t\t\t\tif p.IsNil() || !mi.present(p, index) {\n\t\t\t\t\treturn conv.Zero()\n\t\t\t\t}\n\t\t\t\tx := p.Apply(fieldOffset).Bytes()\n\t\t\t\treturn protoreflect.ValueOfString(string(*x))\n\t\t\t}\n\t\t}\n\t\treturn func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() || !mi.present(p, index) {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tx := p.Apply(fieldOffset).Bytes()\n\t\t\treturn protoreflect.ValueOfBytes(*x)\n\t\t}\n\t}\n\tpanic(\"unexpected protobuf kind: \" + ft.Kind().String())\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/message_reflect.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\n\t\"google.golang.org/protobuf/internal/detrand\"\n\t\"google.golang.org/protobuf/internal/pragma\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\ntype reflectMessageInfo struct {\n\tfields map[protoreflect.FieldNumber]*fieldInfo\n\toneofs map[protoreflect.Name]*oneofInfo\n\n\t// fieldTypes contains the zero value of an enum or message field.\n\t// For lists, it contains the element type.\n\t// For maps, it contains the entry value type.\n\tfieldTypes map[protoreflect.FieldNumber]any\n\n\t// denseFields is a subset of fields where:\n\t//\t0 < fieldDesc.Number() < len(denseFields)\n\t// It provides faster access to the fieldInfo, but may be incomplete.\n\tdenseFields []*fieldInfo\n\n\t// rangeInfos is a list of all fields (not belonging to a oneof) and oneofs.\n\trangeInfos []any // either *fieldInfo or *oneofInfo\n\n\tgetUnknown   func(pointer) protoreflect.RawFields\n\tsetUnknown   func(pointer, protoreflect.RawFields)\n\textensionMap func(pointer) *extensionMap\n\n\tnilMessage atomicNilMessage\n}\n\n// makeReflectFuncs generates the set of functions to support reflection.\nfunc (mi *MessageInfo) makeReflectFuncs(t reflect.Type, si structInfo) {\n\tmi.makeKnownFieldsFunc(si)\n\tmi.makeUnknownFieldsFunc(t, si)\n\tmi.makeExtensionFieldsFunc(t, si)\n\tmi.makeFieldTypes(si)\n}\n\n// makeKnownFieldsFunc generates functions for operations that can be performed\n// on each protobuf message field. It takes in a reflect.Type representing the\n// Go struct and matches message fields with struct fields.\n//\n// This code assumes that the struct is well-formed and panics if there are\n// any discrepancies.\nfunc (mi *MessageInfo) makeKnownFieldsFunc(si structInfo) {\n\tmi.fields = map[protoreflect.FieldNumber]*fieldInfo{}\n\tmd := mi.Desc\n\tfds := md.Fields()\n\tfor i := 0; i < fds.Len(); i++ {\n\t\tfd := fds.Get(i)\n\t\tfs := si.fieldsByNumber[fd.Number()]\n\t\tisOneof := fd.ContainingOneof() != nil && !fd.ContainingOneof().IsSynthetic()\n\t\tif isOneof {\n\t\t\tfs = si.oneofsByName[fd.ContainingOneof().Name()]\n\t\t}\n\t\tvar fi fieldInfo\n\t\tswitch {\n\t\tcase fs.Type == nil:\n\t\t\tfi = fieldInfoForMissing(fd) // never occurs for officially generated message types\n\t\tcase isOneof:\n\t\t\tfi = fieldInfoForOneof(fd, fs, mi.Exporter, si.oneofWrappersByNumber[fd.Number()])\n\t\tcase fd.IsMap():\n\t\t\tfi = fieldInfoForMap(fd, fs, mi.Exporter)\n\t\tcase fd.IsList():\n\t\t\tfi = fieldInfoForList(fd, fs, mi.Exporter)\n\t\tcase fd.Message() != nil:\n\t\t\tfi = fieldInfoForMessage(fd, fs, mi.Exporter)\n\t\tdefault:\n\t\t\tfi = fieldInfoForScalar(fd, fs, mi.Exporter)\n\t\t}\n\t\tmi.fields[fd.Number()] = &fi\n\t}\n\n\tmi.oneofs = map[protoreflect.Name]*oneofInfo{}\n\tfor i := 0; i < md.Oneofs().Len(); i++ {\n\t\tod := md.Oneofs().Get(i)\n\t\tmi.oneofs[od.Name()] = makeOneofInfo(od, si, mi.Exporter)\n\t}\n\n\tmi.denseFields = make([]*fieldInfo, fds.Len()*2)\n\tfor i := 0; i < fds.Len(); i++ {\n\t\tif fd := fds.Get(i); int(fd.Number()) < len(mi.denseFields) {\n\t\t\tmi.denseFields[fd.Number()] = mi.fields[fd.Number()]\n\t\t}\n\t}\n\n\tfor i := 0; i < fds.Len(); {\n\t\tfd := fds.Get(i)\n\t\tif od := fd.ContainingOneof(); od != nil && !od.IsSynthetic() {\n\t\t\tmi.rangeInfos = append(mi.rangeInfos, mi.oneofs[od.Name()])\n\t\t\ti += od.Fields().Len()\n\t\t} else {\n\t\t\tmi.rangeInfos = append(mi.rangeInfos, mi.fields[fd.Number()])\n\t\t\ti++\n\t\t}\n\t}\n\n\t// Introduce instability to iteration order, but keep it deterministic.\n\tif len(mi.rangeInfos) > 1 && detrand.Bool() {\n\t\ti := detrand.Intn(len(mi.rangeInfos) - 1)\n\t\tmi.rangeInfos[i], mi.rangeInfos[i+1] = mi.rangeInfos[i+1], mi.rangeInfos[i]\n\t}\n}\n\nfunc (mi *MessageInfo) makeUnknownFieldsFunc(t reflect.Type, si structInfo) {\n\tswitch {\n\tcase si.unknownOffset.IsValid() && si.unknownType == unknownFieldsAType:\n\t\t// Handle as []byte.\n\t\tmi.getUnknown = func(p pointer) protoreflect.RawFields {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t\treturn *p.Apply(mi.unknownOffset).Bytes()\n\t\t}\n\t\tmi.setUnknown = func(p pointer, b protoreflect.RawFields) {\n\t\t\tif p.IsNil() {\n\t\t\t\tpanic(\"invalid SetUnknown on nil Message\")\n\t\t\t}\n\t\t\t*p.Apply(mi.unknownOffset).Bytes() = b\n\t\t}\n\tcase si.unknownOffset.IsValid() && si.unknownType == unknownFieldsBType:\n\t\t// Handle as *[]byte.\n\t\tmi.getUnknown = func(p pointer) protoreflect.RawFields {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t\tbp := p.Apply(mi.unknownOffset).BytesPtr()\n\t\t\tif *bp == nil {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t\treturn **bp\n\t\t}\n\t\tmi.setUnknown = func(p pointer, b protoreflect.RawFields) {\n\t\t\tif p.IsNil() {\n\t\t\t\tpanic(\"invalid SetUnknown on nil Message\")\n\t\t\t}\n\t\t\tbp := p.Apply(mi.unknownOffset).BytesPtr()\n\t\t\tif *bp == nil {\n\t\t\t\t*bp = new([]byte)\n\t\t\t}\n\t\t\t**bp = b\n\t\t}\n\tdefault:\n\t\tmi.getUnknown = func(pointer) protoreflect.RawFields {\n\t\t\treturn nil\n\t\t}\n\t\tmi.setUnknown = func(p pointer, _ protoreflect.RawFields) {\n\t\t\tif p.IsNil() {\n\t\t\t\tpanic(\"invalid SetUnknown on nil Message\")\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc (mi *MessageInfo) makeExtensionFieldsFunc(t reflect.Type, si structInfo) {\n\tif si.extensionOffset.IsValid() {\n\t\tmi.extensionMap = func(p pointer) *extensionMap {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn (*extensionMap)(nil)\n\t\t\t}\n\t\t\tv := p.Apply(si.extensionOffset).AsValueOf(extensionFieldsType)\n\t\t\treturn (*extensionMap)(v.Interface().(*map[int32]ExtensionField))\n\t\t}\n\t} else {\n\t\tmi.extensionMap = func(pointer) *extensionMap {\n\t\t\treturn (*extensionMap)(nil)\n\t\t}\n\t}\n}\nfunc (mi *MessageInfo) makeFieldTypes(si structInfo) {\n\tmd := mi.Desc\n\tfds := md.Fields()\n\tfor i := 0; i < fds.Len(); i++ {\n\t\tvar ft reflect.Type\n\t\tfd := fds.Get(i)\n\t\tfs := si.fieldsByNumber[fd.Number()]\n\t\tisOneof := fd.ContainingOneof() != nil && !fd.ContainingOneof().IsSynthetic()\n\t\tif isOneof {\n\t\t\tfs = si.oneofsByName[fd.ContainingOneof().Name()]\n\t\t}\n\t\tvar isMessage bool\n\t\tswitch {\n\t\tcase fs.Type == nil:\n\t\t\tcontinue // never occurs for officially generated message types\n\t\tcase isOneof:\n\t\t\tif fd.Enum() != nil || fd.Message() != nil {\n\t\t\t\tft = si.oneofWrappersByNumber[fd.Number()].Field(0).Type\n\t\t\t}\n\t\tcase fd.IsMap():\n\t\t\tif fd.MapValue().Enum() != nil || fd.MapValue().Message() != nil {\n\t\t\t\tft = fs.Type.Elem()\n\t\t\t}\n\t\t\tisMessage = fd.MapValue().Message() != nil\n\t\tcase fd.IsList():\n\t\t\tif fd.Enum() != nil || fd.Message() != nil {\n\t\t\t\tft = fs.Type.Elem()\n\n\t\t\t\tif ft.Kind() == reflect.Slice {\n\t\t\t\t\tft = ft.Elem()\n\t\t\t\t}\n\n\t\t\t}\n\t\t\tisMessage = fd.Message() != nil\n\t\tcase fd.Enum() != nil:\n\t\t\tft = fs.Type\n\t\t\tif fd.HasPresence() && ft.Kind() == reflect.Ptr {\n\t\t\t\tft = ft.Elem()\n\t\t\t}\n\t\tcase fd.Message() != nil:\n\t\t\tft = fs.Type\n\t\t\tisMessage = true\n\t\t}\n\t\tif isMessage && ft != nil && ft.Kind() != reflect.Ptr {\n\t\t\tft = reflect.PtrTo(ft) // never occurs for officially generated message types\n\t\t}\n\t\tif ft != nil {\n\t\t\tif mi.fieldTypes == nil {\n\t\t\t\tmi.fieldTypes = make(map[protoreflect.FieldNumber]any)\n\t\t\t}\n\t\t\tmi.fieldTypes[fd.Number()] = reflect.Zero(ft).Interface()\n\t\t}\n\t}\n}\n\ntype extensionMap map[int32]ExtensionField\n\nfunc (m *extensionMap) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif m != nil {\n\t\tfor _, x := range *m {\n\t\t\txd := x.Type().TypeDescriptor()\n\t\t\tv := x.Value()\n\t\t\tif xd.IsList() && v.List().Len() == 0 {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif !f(xd, v) {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n}\nfunc (m *extensionMap) Has(xd protoreflect.ExtensionTypeDescriptor) (ok bool) {\n\tif m == nil {\n\t\treturn false\n\t}\n\tx, ok := (*m)[int32(xd.Number())]\n\tif !ok {\n\t\treturn false\n\t}\n\tif x.isUnexpandedLazy() {\n\t\t// Avoid calling x.Value(), which triggers a lazy unmarshal.\n\t\treturn true\n\t}\n\tswitch {\n\tcase xd.IsList():\n\t\treturn x.Value().List().Len() > 0\n\tcase xd.IsMap():\n\t\treturn x.Value().Map().Len() > 0\n\t}\n\treturn true\n}\nfunc (m *extensionMap) Clear(xd protoreflect.ExtensionTypeDescriptor) {\n\tdelete(*m, int32(xd.Number()))\n}\nfunc (m *extensionMap) Get(xd protoreflect.ExtensionTypeDescriptor) protoreflect.Value {\n\tif m != nil {\n\t\tif x, ok := (*m)[int32(xd.Number())]; ok {\n\t\t\treturn x.Value()\n\t\t}\n\t}\n\treturn xd.Type().Zero()\n}\nfunc (m *extensionMap) Set(xd protoreflect.ExtensionTypeDescriptor, v protoreflect.Value) {\n\txt := xd.Type()\n\tisValid := true\n\tswitch {\n\tcase !xt.IsValidValue(v):\n\t\tisValid = false\n\tcase xd.IsList():\n\t\tisValid = v.List().IsValid()\n\tcase xd.IsMap():\n\t\tisValid = v.Map().IsValid()\n\tcase xd.Message() != nil:\n\t\tisValid = v.Message().IsValid()\n\t}\n\tif !isValid {\n\t\tpanic(fmt.Sprintf(\"%v: assigning invalid value\", xd.FullName()))\n\t}\n\n\tif *m == nil {\n\t\t*m = make(map[int32]ExtensionField)\n\t}\n\tvar x ExtensionField\n\tx.Set(xt, v)\n\t(*m)[int32(xd.Number())] = x\n}\nfunc (m *extensionMap) Mutable(xd protoreflect.ExtensionTypeDescriptor) protoreflect.Value {\n\tif xd.Kind() != protoreflect.MessageKind && xd.Kind() != protoreflect.GroupKind && !xd.IsList() && !xd.IsMap() {\n\t\tpanic(\"invalid Mutable on field with non-composite type\")\n\t}\n\tif x, ok := (*m)[int32(xd.Number())]; ok {\n\t\treturn x.Value()\n\t}\n\tv := xd.Type().New()\n\tm.Set(xd, v)\n\treturn v\n}\n\n// MessageState is a data structure that is nested as the first field in a\n// concrete message. It provides a way to implement the ProtoReflect method\n// in an allocation-free way without needing to have a shadow Go type generated\n// for every message type. This technique only works using unsafe.\n//\n// Example generated code:\n//\n//\ttype M struct {\n//\t\tstate protoimpl.MessageState\n//\n//\t\tField1 int32\n//\t\tField2 string\n//\t\tField3 *BarMessage\n//\t\t...\n//\t}\n//\n//\tfunc (m *M) ProtoReflect() protoreflect.Message {\n//\t\tmi := &file_fizz_buzz_proto_msgInfos[5]\n//\t\tif protoimpl.UnsafeEnabled && m != nil {\n//\t\t\tms := protoimpl.X.MessageStateOf(Pointer(m))\n//\t\t\tif ms.LoadMessageInfo() == nil {\n//\t\t\t\tms.StoreMessageInfo(mi)\n//\t\t\t}\n//\t\t\treturn ms\n//\t\t}\n//\t\treturn mi.MessageOf(m)\n//\t}\n//\n// The MessageState type holds a *MessageInfo, which must be atomically set to\n// the message info associated with a given message instance.\n// By unsafely converting a *M into a *MessageState, the MessageState object\n// has access to all the information needed to implement protobuf reflection.\n// It has access to the message info as its first field, and a pointer to the\n// MessageState is identical to a pointer to the concrete message value.\n//\n// Requirements:\n//   - The type M must implement protoreflect.ProtoMessage.\n//   - The address of m must not be nil.\n//   - The address of m and the address of m.state must be equal,\n//     even though they are different Go types.\ntype MessageState struct {\n\tpragma.NoUnkeyedLiterals\n\tpragma.DoNotCompare\n\tpragma.DoNotCopy\n\n\tatomicMessageInfo *MessageInfo\n}\n\ntype messageState MessageState\n\nvar (\n\t_ protoreflect.Message = (*messageState)(nil)\n\t_ unwrapper            = (*messageState)(nil)\n)\n\n// messageDataType is a tuple of a pointer to the message data and\n// a pointer to the message type. It is a generalized way of providing a\n// reflective view over a message instance. The disadvantage of this approach\n// is the need to allocate this tuple of 16B.\ntype messageDataType struct {\n\tp  pointer\n\tmi *MessageInfo\n}\n\ntype (\n\tmessageReflectWrapper messageDataType\n\tmessageIfaceWrapper   messageDataType\n)\n\nvar (\n\t_ protoreflect.Message      = (*messageReflectWrapper)(nil)\n\t_ unwrapper                 = (*messageReflectWrapper)(nil)\n\t_ protoreflect.ProtoMessage = (*messageIfaceWrapper)(nil)\n\t_ unwrapper                 = (*messageIfaceWrapper)(nil)\n)\n\n// MessageOf returns a reflective view over a message. The input must be a\n// pointer to a named Go struct. If the provided type has a ProtoReflect method,\n// it must be implemented by calling this method.\nfunc (mi *MessageInfo) MessageOf(m any) protoreflect.Message {\n\tif reflect.TypeOf(m) != mi.GoReflectType {\n\t\tpanic(fmt.Sprintf(\"type mismatch: got %T, want %v\", m, mi.GoReflectType))\n\t}\n\tp := pointerOfIface(m)\n\tif p.IsNil() {\n\t\treturn mi.nilMessage.Init(mi)\n\t}\n\treturn &messageReflectWrapper{p, mi}\n}\n\nfunc (m *messageReflectWrapper) pointer() pointer          { return m.p }\nfunc (m *messageReflectWrapper) messageInfo() *MessageInfo { return m.mi }\n\n// Reset implements the v1 proto.Message.Reset method.\nfunc (m *messageIfaceWrapper) Reset() {\n\tif mr, ok := m.protoUnwrap().(interface{ Reset() }); ok {\n\t\tmr.Reset()\n\t\treturn\n\t}\n\trv := reflect.ValueOf(m.protoUnwrap())\n\tif rv.Kind() == reflect.Ptr && !rv.IsNil() {\n\t\trv.Elem().Set(reflect.Zero(rv.Type().Elem()))\n\t}\n}\nfunc (m *messageIfaceWrapper) ProtoReflect() protoreflect.Message {\n\treturn (*messageReflectWrapper)(m)\n}\nfunc (m *messageIfaceWrapper) protoUnwrap() any {\n\treturn m.p.AsIfaceOf(m.mi.GoReflectType.Elem())\n}\n\n// checkField verifies that the provided field descriptor is valid.\n// Exactly one of the returned values is populated.\nfunc (mi *MessageInfo) checkField(fd protoreflect.FieldDescriptor) (*fieldInfo, protoreflect.ExtensionTypeDescriptor) {\n\tvar fi *fieldInfo\n\tif n := fd.Number(); 0 < n && int(n) < len(mi.denseFields) {\n\t\tfi = mi.denseFields[n]\n\t} else {\n\t\tfi = mi.fields[n]\n\t}\n\tif fi != nil {\n\t\tif fi.fieldDesc != fd {\n\t\t\tif got, want := fd.FullName(), fi.fieldDesc.FullName(); got != want {\n\t\t\t\tpanic(fmt.Sprintf(\"mismatching field: got %v, want %v\", got, want))\n\t\t\t}\n\t\t\tpanic(fmt.Sprintf(\"mismatching field: %v\", fd.FullName()))\n\t\t}\n\t\treturn fi, nil\n\t}\n\n\tif fd.IsExtension() {\n\t\tif got, want := fd.ContainingMessage().FullName(), mi.Desc.FullName(); got != want {\n\t\t\t// TODO: Should this be exact containing message descriptor match?\n\t\t\tpanic(fmt.Sprintf(\"extension %v has mismatching containing message: got %v, want %v\", fd.FullName(), got, want))\n\t\t}\n\t\tif !mi.Desc.ExtensionRanges().Has(fd.Number()) {\n\t\t\tpanic(fmt.Sprintf(\"extension %v extends %v outside the extension range\", fd.FullName(), mi.Desc.FullName()))\n\t\t}\n\t\txtd, ok := fd.(protoreflect.ExtensionTypeDescriptor)\n\t\tif !ok {\n\t\t\tpanic(fmt.Sprintf(\"extension %v does not implement protoreflect.ExtensionTypeDescriptor\", fd.FullName()))\n\t\t}\n\t\treturn nil, xtd\n\t}\n\tpanic(fmt.Sprintf(\"field %v is invalid\", fd.FullName()))\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/message_reflect_field.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"fmt\"\n\t\"math\"\n\t\"reflect\"\n\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\ntype fieldInfo struct {\n\tfieldDesc protoreflect.FieldDescriptor\n\n\t// These fields are used for protobuf reflection support.\n\thas        func(pointer) bool\n\tclear      func(pointer)\n\tget        func(pointer) protoreflect.Value\n\tset        func(pointer, protoreflect.Value)\n\tmutable    func(pointer) protoreflect.Value\n\tnewMessage func() protoreflect.Message\n\tnewField   func() protoreflect.Value\n}\n\nfunc fieldInfoForMissing(fd protoreflect.FieldDescriptor) fieldInfo {\n\t// This never occurs for generated message types.\n\t// It implies that a hand-crafted type has missing Go fields\n\t// for specific protobuf message fields.\n\treturn fieldInfo{\n\t\tfieldDesc: fd,\n\t\thas: func(p pointer) bool {\n\t\t\treturn false\n\t\t},\n\t\tclear: func(p pointer) {\n\t\t\tpanic(\"missing Go struct field for \" + string(fd.FullName()))\n\t\t},\n\t\tget: func(p pointer) protoreflect.Value {\n\t\t\treturn fd.Default()\n\t\t},\n\t\tset: func(p pointer, v protoreflect.Value) {\n\t\t\tpanic(\"missing Go struct field for \" + string(fd.FullName()))\n\t\t},\n\t\tmutable: func(p pointer) protoreflect.Value {\n\t\t\tpanic(\"missing Go struct field for \" + string(fd.FullName()))\n\t\t},\n\t\tnewMessage: func() protoreflect.Message {\n\t\t\tpanic(\"missing Go struct field for \" + string(fd.FullName()))\n\t\t},\n\t\tnewField: func() protoreflect.Value {\n\t\t\tif v := fd.Default(); v.IsValid() {\n\t\t\t\treturn v\n\t\t\t}\n\t\t\tpanic(\"missing Go struct field for \" + string(fd.FullName()))\n\t\t},\n\t}\n}\n\nfunc fieldInfoForOneof(fd protoreflect.FieldDescriptor, fs reflect.StructField, x exporter, ot reflect.Type) fieldInfo {\n\tft := fs.Type\n\tif ft.Kind() != reflect.Interface {\n\t\tpanic(fmt.Sprintf(\"field %v has invalid type: got %v, want interface kind\", fd.FullName(), ft))\n\t}\n\tif ot.Kind() != reflect.Struct {\n\t\tpanic(fmt.Sprintf(\"field %v has invalid type: got %v, want struct kind\", fd.FullName(), ot))\n\t}\n\tif !reflect.PtrTo(ot).Implements(ft) {\n\t\tpanic(fmt.Sprintf(\"field %v has invalid type: %v does not implement %v\", fd.FullName(), ot, ft))\n\t}\n\tconv := NewConverter(ot.Field(0).Type, fd)\n\tisMessage := fd.Message() != nil\n\n\t// TODO: Implement unsafe fast path?\n\tfieldOffset := offsetOf(fs)\n\treturn fieldInfo{\n\t\t// NOTE: The logic below intentionally assumes that oneof fields are\n\t\t// well-formatted. That is, the oneof interface never contains a\n\t\t// typed nil pointer to one of the wrapper structs.\n\n\t\tfieldDesc: fd,\n\t\thas: func(p pointer) bool {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tif rv.IsNil() || rv.Elem().Type().Elem() != ot || rv.Elem().IsNil() {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn true\n\t\t},\n\t\tclear: func(p pointer) {\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tif rv.IsNil() || rv.Elem().Type().Elem() != ot {\n\t\t\t\t// NOTE: We intentionally don't check for rv.Elem().IsNil()\n\t\t\t\t// so that (*OneofWrapperType)(nil) gets cleared to nil.\n\t\t\t\treturn\n\t\t\t}\n\t\t\trv.Set(reflect.Zero(rv.Type()))\n\t\t},\n\t\tget: func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tif rv.IsNil() || rv.Elem().Type().Elem() != ot || rv.Elem().IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\trv = rv.Elem().Elem().Field(0)\n\t\t\treturn conv.PBValueOf(rv)\n\t\t},\n\t\tset: func(p pointer, v protoreflect.Value) {\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tif rv.IsNil() || rv.Elem().Type().Elem() != ot || rv.Elem().IsNil() {\n\t\t\t\trv.Set(reflect.New(ot))\n\t\t\t}\n\t\t\trv = rv.Elem().Elem().Field(0)\n\t\t\trv.Set(conv.GoValueOf(v))\n\t\t},\n\t\tmutable: func(p pointer) protoreflect.Value {\n\t\t\tif !isMessage {\n\t\t\t\tpanic(fmt.Sprintf(\"field %v with invalid Mutable call on field with non-composite type\", fd.FullName()))\n\t\t\t}\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tif rv.IsNil() || rv.Elem().Type().Elem() != ot || rv.Elem().IsNil() {\n\t\t\t\trv.Set(reflect.New(ot))\n\t\t\t}\n\t\t\trv = rv.Elem().Elem().Field(0)\n\t\t\tif rv.Kind() == reflect.Ptr && rv.IsNil() {\n\t\t\t\trv.Set(conv.GoValueOf(protoreflect.ValueOfMessage(conv.New().Message())))\n\t\t\t}\n\t\t\treturn conv.PBValueOf(rv)\n\t\t},\n\t\tnewMessage: func() protoreflect.Message {\n\t\t\treturn conv.New().Message()\n\t\t},\n\t\tnewField: func() protoreflect.Value {\n\t\t\treturn conv.New()\n\t\t},\n\t}\n}\n\nfunc fieldInfoForMap(fd protoreflect.FieldDescriptor, fs reflect.StructField, x exporter) fieldInfo {\n\tft := fs.Type\n\tif ft.Kind() != reflect.Map {\n\t\tpanic(fmt.Sprintf(\"field %v has invalid type: got %v, want map kind\", fd.FullName(), ft))\n\t}\n\tconv := NewConverter(ft, fd)\n\n\t// TODO: Implement unsafe fast path?\n\tfieldOffset := offsetOf(fs)\n\treturn fieldInfo{\n\t\tfieldDesc: fd,\n\t\thas: func(p pointer) bool {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\treturn rv.Len() > 0\n\t\t},\n\t\tclear: func(p pointer) {\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\trv.Set(reflect.Zero(rv.Type()))\n\t\t},\n\t\tget: func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tif rv.Len() == 0 {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\treturn conv.PBValueOf(rv)\n\t\t},\n\t\tset: func(p pointer, v protoreflect.Value) {\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tpv := conv.GoValueOf(v)\n\t\t\tif pv.IsNil() {\n\t\t\t\tpanic(fmt.Sprintf(\"map field %v cannot be set with read-only value\", fd.FullName()))\n\t\t\t}\n\t\t\trv.Set(pv)\n\t\t},\n\t\tmutable: func(p pointer) protoreflect.Value {\n\t\t\tv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tif v.IsNil() {\n\t\t\t\tv.Set(reflect.MakeMap(fs.Type))\n\t\t\t}\n\t\t\treturn conv.PBValueOf(v)\n\t\t},\n\t\tnewField: func() protoreflect.Value {\n\t\t\treturn conv.New()\n\t\t},\n\t}\n}\n\nfunc fieldInfoForList(fd protoreflect.FieldDescriptor, fs reflect.StructField, x exporter) fieldInfo {\n\tft := fs.Type\n\tif ft.Kind() != reflect.Slice {\n\t\tpanic(fmt.Sprintf(\"field %v has invalid type: got %v, want slice kind\", fd.FullName(), ft))\n\t}\n\tconv := NewConverter(reflect.PtrTo(ft), fd)\n\n\t// TODO: Implement unsafe fast path?\n\tfieldOffset := offsetOf(fs)\n\treturn fieldInfo{\n\t\tfieldDesc: fd,\n\t\thas: func(p pointer) bool {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\treturn rv.Len() > 0\n\t\t},\n\t\tclear: func(p pointer) {\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\trv.Set(reflect.Zero(rv.Type()))\n\t\t},\n\t\tget: func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type)\n\t\t\tif rv.Elem().Len() == 0 {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\treturn conv.PBValueOf(rv)\n\t\t},\n\t\tset: func(p pointer, v protoreflect.Value) {\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tpv := conv.GoValueOf(v)\n\t\t\tif pv.IsNil() {\n\t\t\t\tpanic(fmt.Sprintf(\"list field %v cannot be set with read-only value\", fd.FullName()))\n\t\t\t}\n\t\t\trv.Set(pv.Elem())\n\t\t},\n\t\tmutable: func(p pointer) protoreflect.Value {\n\t\t\tv := p.Apply(fieldOffset).AsValueOf(fs.Type)\n\t\t\treturn conv.PBValueOf(v)\n\t\t},\n\t\tnewField: func() protoreflect.Value {\n\t\t\treturn conv.New()\n\t\t},\n\t}\n}\n\nvar (\n\tnilBytes   = reflect.ValueOf([]byte(nil))\n\temptyBytes = reflect.ValueOf([]byte{})\n)\n\nfunc fieldInfoForScalar(fd protoreflect.FieldDescriptor, fs reflect.StructField, x exporter) fieldInfo {\n\tft := fs.Type\n\tnullable := fd.HasPresence()\n\tisBytes := ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8\n\tvar getter func(p pointer) protoreflect.Value\n\tif nullable {\n\t\tif ft.Kind() != reflect.Ptr && ft.Kind() != reflect.Slice {\n\t\t\t// This never occurs for generated message types.\n\t\t\t// Despite the protobuf type system specifying presence,\n\t\t\t// the Go field type cannot represent it.\n\t\t\tnullable = false\n\t\t}\n\t\tif ft.Kind() == reflect.Ptr {\n\t\t\tft = ft.Elem()\n\t\t}\n\t}\n\tconv := NewConverter(ft, fd)\n\tfieldOffset := offsetOf(fs)\n\n\t// Generate specialized getter functions to avoid going through reflect.Value\n\tif nullable {\n\t\tgetter = getterForNullableScalar(fd, fs, conv, fieldOffset)\n\t} else {\n\t\tgetter = getterForDirectScalar(fd, fs, conv, fieldOffset)\n\t}\n\n\treturn fieldInfo{\n\t\tfieldDesc: fd,\n\t\thas: func(p pointer) bool {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif nullable {\n\t\t\t\treturn !p.Apply(fieldOffset).Elem().IsNil()\n\t\t\t}\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tswitch rv.Kind() {\n\t\t\tcase reflect.Bool:\n\t\t\t\treturn rv.Bool()\n\t\t\tcase reflect.Int32, reflect.Int64:\n\t\t\t\treturn rv.Int() != 0\n\t\t\tcase reflect.Uint32, reflect.Uint64:\n\t\t\t\treturn rv.Uint() != 0\n\t\t\tcase reflect.Float32, reflect.Float64:\n\t\t\t\treturn rv.Float() != 0 || math.Signbit(rv.Float())\n\t\t\tcase reflect.String, reflect.Slice:\n\t\t\t\treturn rv.Len() > 0\n\t\t\tdefault:\n\t\t\t\tpanic(fmt.Sprintf(\"field %v has invalid type: %v\", fd.FullName(), rv.Type())) // should never happen\n\t\t\t}\n\t\t},\n\t\tclear: func(p pointer) {\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\trv.Set(reflect.Zero(rv.Type()))\n\t\t},\n\t\tget: getter,\n\t\t// TODO: Implement unsafe fast path for set?\n\t\tset: func(p pointer, v protoreflect.Value) {\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tif nullable && rv.Kind() == reflect.Ptr {\n\t\t\t\tif rv.IsNil() {\n\t\t\t\t\trv.Set(reflect.New(ft))\n\t\t\t\t}\n\t\t\t\trv = rv.Elem()\n\t\t\t}\n\t\t\trv.Set(conv.GoValueOf(v))\n\t\t\tif isBytes && rv.Len() == 0 {\n\t\t\t\tif nullable {\n\t\t\t\t\trv.Set(emptyBytes) // preserve presence\n\t\t\t\t} else {\n\t\t\t\t\trv.Set(nilBytes) // do not preserve presence\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tnewField: func() protoreflect.Value {\n\t\t\treturn conv.New()\n\t\t},\n\t}\n}\n\nfunc fieldInfoForMessage(fd protoreflect.FieldDescriptor, fs reflect.StructField, x exporter) fieldInfo {\n\tft := fs.Type\n\tconv := NewConverter(ft, fd)\n\n\t// TODO: Implement unsafe fast path?\n\tfieldOffset := offsetOf(fs)\n\treturn fieldInfo{\n\t\tfieldDesc: fd,\n\t\thas: func(p pointer) bool {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tif fs.Type.Kind() != reflect.Ptr {\n\t\t\t\treturn !rv.IsZero()\n\t\t\t}\n\t\t\treturn !rv.IsNil()\n\t\t},\n\t\tclear: func(p pointer) {\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\trv.Set(reflect.Zero(rv.Type()))\n\t\t},\n\t\tget: func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\treturn conv.PBValueOf(rv)\n\t\t},\n\t\tset: func(p pointer, v protoreflect.Value) {\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\trv.Set(conv.GoValueOf(v))\n\t\t\tif fs.Type.Kind() == reflect.Ptr && rv.IsNil() {\n\t\t\t\tpanic(fmt.Sprintf(\"field %v has invalid nil pointer\", fd.FullName()))\n\t\t\t}\n\t\t},\n\t\tmutable: func(p pointer) protoreflect.Value {\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tif fs.Type.Kind() == reflect.Ptr && rv.IsNil() {\n\t\t\t\trv.Set(conv.GoValueOf(conv.New()))\n\t\t\t}\n\t\t\treturn conv.PBValueOf(rv)\n\t\t},\n\t\tnewMessage: func() protoreflect.Message {\n\t\t\treturn conv.New().Message()\n\t\t},\n\t\tnewField: func() protoreflect.Value {\n\t\t\treturn conv.New()\n\t\t},\n\t}\n}\n\ntype oneofInfo struct {\n\toneofDesc protoreflect.OneofDescriptor\n\twhich     func(pointer) protoreflect.FieldNumber\n}\n\nfunc makeOneofInfo(od protoreflect.OneofDescriptor, si structInfo, x exporter) *oneofInfo {\n\toi := &oneofInfo{oneofDesc: od}\n\tif od.IsSynthetic() {\n\t\tfs := si.fieldsByNumber[od.Fields().Get(0).Number()]\n\t\tfieldOffset := offsetOf(fs)\n\t\toi.which = func(p pointer) protoreflect.FieldNumber {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn 0\n\t\t\t}\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tif rv.IsNil() { // valid on either *T or []byte\n\t\t\t\treturn 0\n\t\t\t}\n\t\t\treturn od.Fields().Get(0).Number()\n\t\t}\n\t} else {\n\t\tfs := si.oneofsByName[od.Name()]\n\t\tfieldOffset := offsetOf(fs)\n\t\toi.which = func(p pointer) protoreflect.FieldNumber {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn 0\n\t\t\t}\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tif rv.IsNil() {\n\t\t\t\treturn 0\n\t\t\t}\n\t\t\trv = rv.Elem()\n\t\t\tif rv.IsNil() {\n\t\t\t\treturn 0\n\t\t\t}\n\t\t\treturn si.oneofWrappersByType[rv.Type().Elem()]\n\t\t}\n\t}\n\treturn oi\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/message_reflect_field_gen.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-types. DO NOT EDIT.\n\npackage impl\n\nimport (\n\t\"reflect\"\n\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nfunc getterForNullableScalar(fd protoreflect.FieldDescriptor, fs reflect.StructField, conv Converter, fieldOffset offset) func(p pointer) protoreflect.Value {\n\tft := fs.Type\n\tif ft.Kind() == reflect.Ptr {\n\t\tft = ft.Elem()\n\t}\n\tif fd.Kind() == protoreflect.EnumKind {\n\t\telemType := fs.Type.Elem()\n\t\t// Enums for nullable types.\n\t\treturn func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\trv := p.Apply(fieldOffset).Elem().AsValueOf(elemType)\n\t\t\tif rv.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\treturn conv.PBValueOf(rv.Elem())\n\t\t}\n\t}\n\tswitch ft.Kind() {\n\tcase reflect.Bool:\n\t\treturn func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tx := p.Apply(fieldOffset).BoolPtr()\n\t\t\tif *x == nil {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\treturn protoreflect.ValueOfBool(**x)\n\t\t}\n\tcase reflect.Int32:\n\t\treturn func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tx := p.Apply(fieldOffset).Int32Ptr()\n\t\t\tif *x == nil {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\treturn protoreflect.ValueOfInt32(**x)\n\t\t}\n\tcase reflect.Uint32:\n\t\treturn func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tx := p.Apply(fieldOffset).Uint32Ptr()\n\t\t\tif *x == nil {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\treturn protoreflect.ValueOfUint32(**x)\n\t\t}\n\tcase reflect.Int64:\n\t\treturn func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tx := p.Apply(fieldOffset).Int64Ptr()\n\t\t\tif *x == nil {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\treturn protoreflect.ValueOfInt64(**x)\n\t\t}\n\tcase reflect.Uint64:\n\t\treturn func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tx := p.Apply(fieldOffset).Uint64Ptr()\n\t\t\tif *x == nil {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\treturn protoreflect.ValueOfUint64(**x)\n\t\t}\n\tcase reflect.Float32:\n\t\treturn func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tx := p.Apply(fieldOffset).Float32Ptr()\n\t\t\tif *x == nil {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\treturn protoreflect.ValueOfFloat32(**x)\n\t\t}\n\tcase reflect.Float64:\n\t\treturn func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tx := p.Apply(fieldOffset).Float64Ptr()\n\t\t\tif *x == nil {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\treturn protoreflect.ValueOfFloat64(**x)\n\t\t}\n\tcase reflect.String:\n\t\tif fd.Kind() == protoreflect.BytesKind {\n\t\t\treturn func(p pointer) protoreflect.Value {\n\t\t\t\tif p.IsNil() {\n\t\t\t\t\treturn conv.Zero()\n\t\t\t\t}\n\t\t\t\tx := p.Apply(fieldOffset).StringPtr()\n\t\t\t\tif *x == nil {\n\t\t\t\t\treturn conv.Zero()\n\t\t\t\t}\n\t\t\t\tif len(**x) == 0 {\n\t\t\t\t\treturn protoreflect.ValueOfBytes(nil)\n\t\t\t\t}\n\t\t\t\treturn protoreflect.ValueOfBytes([]byte(**x))\n\t\t\t}\n\t\t}\n\t\treturn func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tx := p.Apply(fieldOffset).StringPtr()\n\t\t\tif *x == nil {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\treturn protoreflect.ValueOfString(**x)\n\t\t}\n\tcase reflect.Slice:\n\t\tif fd.Kind() == protoreflect.StringKind {\n\t\t\treturn func(p pointer) protoreflect.Value {\n\t\t\t\tif p.IsNil() {\n\t\t\t\t\treturn conv.Zero()\n\t\t\t\t}\n\t\t\t\tx := p.Apply(fieldOffset).Bytes()\n\t\t\t\tif len(*x) == 0 {\n\t\t\t\t\treturn conv.Zero()\n\t\t\t\t}\n\t\t\t\treturn protoreflect.ValueOfString(string(*x))\n\t\t\t}\n\t\t}\n\t\treturn func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tx := p.Apply(fieldOffset).Bytes()\n\t\t\tif *x == nil {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\treturn protoreflect.ValueOfBytes(*x)\n\t\t}\n\t}\n\tpanic(\"unexpected protobuf kind: \" + ft.Kind().String())\n}\n\nfunc getterForDirectScalar(fd protoreflect.FieldDescriptor, fs reflect.StructField, conv Converter, fieldOffset offset) func(p pointer) protoreflect.Value {\n\tft := fs.Type\n\tif fd.Kind() == protoreflect.EnumKind {\n\t\t// Enums for non nullable types.\n\t\treturn func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\treturn conv.PBValueOf(rv)\n\t\t}\n\t}\n\tswitch ft.Kind() {\n\tcase reflect.Bool:\n\t\treturn func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tx := p.Apply(fieldOffset).Bool()\n\t\t\treturn protoreflect.ValueOfBool(*x)\n\t\t}\n\tcase reflect.Int32:\n\t\treturn func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tx := p.Apply(fieldOffset).Int32()\n\t\t\treturn protoreflect.ValueOfInt32(*x)\n\t\t}\n\tcase reflect.Uint32:\n\t\treturn func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tx := p.Apply(fieldOffset).Uint32()\n\t\t\treturn protoreflect.ValueOfUint32(*x)\n\t\t}\n\tcase reflect.Int64:\n\t\treturn func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tx := p.Apply(fieldOffset).Int64()\n\t\t\treturn protoreflect.ValueOfInt64(*x)\n\t\t}\n\tcase reflect.Uint64:\n\t\treturn func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tx := p.Apply(fieldOffset).Uint64()\n\t\t\treturn protoreflect.ValueOfUint64(*x)\n\t\t}\n\tcase reflect.Float32:\n\t\treturn func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tx := p.Apply(fieldOffset).Float32()\n\t\t\treturn protoreflect.ValueOfFloat32(*x)\n\t\t}\n\tcase reflect.Float64:\n\t\treturn func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tx := p.Apply(fieldOffset).Float64()\n\t\t\treturn protoreflect.ValueOfFloat64(*x)\n\t\t}\n\tcase reflect.String:\n\t\tif fd.Kind() == protoreflect.BytesKind {\n\t\t\treturn func(p pointer) protoreflect.Value {\n\t\t\t\tif p.IsNil() {\n\t\t\t\t\treturn conv.Zero()\n\t\t\t\t}\n\t\t\t\tx := p.Apply(fieldOffset).String()\n\t\t\t\tif len(*x) == 0 {\n\t\t\t\t\treturn protoreflect.ValueOfBytes(nil)\n\t\t\t\t}\n\t\t\t\treturn protoreflect.ValueOfBytes([]byte(*x))\n\t\t\t}\n\t\t}\n\t\treturn func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tx := p.Apply(fieldOffset).String()\n\t\t\treturn protoreflect.ValueOfString(*x)\n\t\t}\n\tcase reflect.Slice:\n\t\tif fd.Kind() == protoreflect.StringKind {\n\t\t\treturn func(p pointer) protoreflect.Value {\n\t\t\t\tif p.IsNil() {\n\t\t\t\t\treturn conv.Zero()\n\t\t\t\t}\n\t\t\t\tx := p.Apply(fieldOffset).Bytes()\n\t\t\t\treturn protoreflect.ValueOfString(string(*x))\n\t\t\t}\n\t\t}\n\t\treturn func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\tx := p.Apply(fieldOffset).Bytes()\n\t\t\treturn protoreflect.ValueOfBytes(*x)\n\t\t}\n\t}\n\tpanic(\"unexpected protobuf kind: \" + ft.Kind().String())\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/message_reflect_gen.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-types. DO NOT EDIT.\n\npackage impl\n\nimport (\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n)\n\nfunc (m *messageState) Descriptor() protoreflect.MessageDescriptor {\n\treturn m.messageInfo().Desc\n}\nfunc (m *messageState) Type() protoreflect.MessageType {\n\treturn m.messageInfo()\n}\nfunc (m *messageState) New() protoreflect.Message {\n\treturn m.messageInfo().New()\n}\nfunc (m *messageState) Interface() protoreflect.ProtoMessage {\n\treturn m.protoUnwrap().(protoreflect.ProtoMessage)\n}\nfunc (m *messageState) protoUnwrap() any {\n\treturn m.pointer().AsIfaceOf(m.messageInfo().GoReflectType.Elem())\n}\nfunc (m *messageState) ProtoMethods() *protoiface.Methods {\n\tmi := m.messageInfo()\n\tmi.init()\n\treturn &mi.methods\n}\n\n// ProtoMessageInfo is a pseudo-internal API for allowing the v1 code\n// to be able to retrieve a v2 MessageInfo struct.\n//\n// WARNING: This method is exempt from the compatibility promise and\n// may be removed in the future without warning.\nfunc (m *messageState) ProtoMessageInfo() *MessageInfo {\n\treturn m.messageInfo()\n}\n\nfunc (m *messageState) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tmi := m.messageInfo()\n\tmi.init()\n\tfor _, ri := range mi.rangeInfos {\n\t\tswitch ri := ri.(type) {\n\t\tcase *fieldInfo:\n\t\t\tif ri.has(m.pointer()) {\n\t\t\t\tif !f(ri.fieldDesc, ri.get(m.pointer())) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\t\tcase *oneofInfo:\n\t\t\tif n := ri.which(m.pointer()); n > 0 {\n\t\t\t\tfi := mi.fields[n]\n\t\t\t\tif !f(fi.fieldDesc, fi.get(m.pointer())) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tmi.extensionMap(m.pointer()).Range(f)\n}\nfunc (m *messageState) Has(fd protoreflect.FieldDescriptor) bool {\n\tmi := m.messageInfo()\n\tmi.init()\n\tif fi, xd := mi.checkField(fd); fi != nil {\n\t\treturn fi.has(m.pointer())\n\t} else {\n\t\treturn mi.extensionMap(m.pointer()).Has(xd)\n\t}\n}\nfunc (m *messageState) Clear(fd protoreflect.FieldDescriptor) {\n\tmi := m.messageInfo()\n\tmi.init()\n\tif fi, xd := mi.checkField(fd); fi != nil {\n\t\tfi.clear(m.pointer())\n\t} else {\n\t\tmi.extensionMap(m.pointer()).Clear(xd)\n\t}\n}\nfunc (m *messageState) Get(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tmi := m.messageInfo()\n\tmi.init()\n\tif fi, xd := mi.checkField(fd); fi != nil {\n\t\treturn fi.get(m.pointer())\n\t} else {\n\t\treturn mi.extensionMap(m.pointer()).Get(xd)\n\t}\n}\nfunc (m *messageState) Set(fd protoreflect.FieldDescriptor, v protoreflect.Value) {\n\tmi := m.messageInfo()\n\tmi.init()\n\tif fi, xd := mi.checkField(fd); fi != nil {\n\t\tfi.set(m.pointer(), v)\n\t} else {\n\t\tmi.extensionMap(m.pointer()).Set(xd, v)\n\t}\n}\nfunc (m *messageState) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tmi := m.messageInfo()\n\tmi.init()\n\tif fi, xd := mi.checkField(fd); fi != nil {\n\t\treturn fi.mutable(m.pointer())\n\t} else {\n\t\treturn mi.extensionMap(m.pointer()).Mutable(xd)\n\t}\n}\nfunc (m *messageState) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tmi := m.messageInfo()\n\tmi.init()\n\tif fi, xd := mi.checkField(fd); fi != nil {\n\t\treturn fi.newField()\n\t} else {\n\t\treturn xd.Type().New()\n\t}\n}\nfunc (m *messageState) WhichOneof(od protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tmi := m.messageInfo()\n\tmi.init()\n\tif oi := mi.oneofs[od.Name()]; oi != nil && oi.oneofDesc == od {\n\t\treturn od.Fields().ByNumber(oi.which(m.pointer()))\n\t}\n\tpanic(\"invalid oneof descriptor \" + string(od.FullName()) + \" for message \" + string(m.Descriptor().FullName()))\n}\nfunc (m *messageState) GetUnknown() protoreflect.RawFields {\n\tmi := m.messageInfo()\n\tmi.init()\n\treturn mi.getUnknown(m.pointer())\n}\nfunc (m *messageState) SetUnknown(b protoreflect.RawFields) {\n\tmi := m.messageInfo()\n\tmi.init()\n\tmi.setUnknown(m.pointer(), b)\n}\nfunc (m *messageState) IsValid() bool {\n\treturn !m.pointer().IsNil()\n}\n\nfunc (m *messageReflectWrapper) Descriptor() protoreflect.MessageDescriptor {\n\treturn m.messageInfo().Desc\n}\nfunc (m *messageReflectWrapper) Type() protoreflect.MessageType {\n\treturn m.messageInfo()\n}\nfunc (m *messageReflectWrapper) New() protoreflect.Message {\n\treturn m.messageInfo().New()\n}\nfunc (m *messageReflectWrapper) Interface() protoreflect.ProtoMessage {\n\tif m, ok := m.protoUnwrap().(protoreflect.ProtoMessage); ok {\n\t\treturn m\n\t}\n\treturn (*messageIfaceWrapper)(m)\n}\nfunc (m *messageReflectWrapper) protoUnwrap() any {\n\treturn m.pointer().AsIfaceOf(m.messageInfo().GoReflectType.Elem())\n}\nfunc (m *messageReflectWrapper) ProtoMethods() *protoiface.Methods {\n\tmi := m.messageInfo()\n\tmi.init()\n\treturn &mi.methods\n}\n\n// ProtoMessageInfo is a pseudo-internal API for allowing the v1 code\n// to be able to retrieve a v2 MessageInfo struct.\n//\n// WARNING: This method is exempt from the compatibility promise and\n// may be removed in the future without warning.\nfunc (m *messageReflectWrapper) ProtoMessageInfo() *MessageInfo {\n\treturn m.messageInfo()\n}\n\nfunc (m *messageReflectWrapper) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tmi := m.messageInfo()\n\tmi.init()\n\tfor _, ri := range mi.rangeInfos {\n\t\tswitch ri := ri.(type) {\n\t\tcase *fieldInfo:\n\t\t\tif ri.has(m.pointer()) {\n\t\t\t\tif !f(ri.fieldDesc, ri.get(m.pointer())) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\t\tcase *oneofInfo:\n\t\t\tif n := ri.which(m.pointer()); n > 0 {\n\t\t\t\tfi := mi.fields[n]\n\t\t\t\tif !f(fi.fieldDesc, fi.get(m.pointer())) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tmi.extensionMap(m.pointer()).Range(f)\n}\nfunc (m *messageReflectWrapper) Has(fd protoreflect.FieldDescriptor) bool {\n\tmi := m.messageInfo()\n\tmi.init()\n\tif fi, xd := mi.checkField(fd); fi != nil {\n\t\treturn fi.has(m.pointer())\n\t} else {\n\t\treturn mi.extensionMap(m.pointer()).Has(xd)\n\t}\n}\nfunc (m *messageReflectWrapper) Clear(fd protoreflect.FieldDescriptor) {\n\tmi := m.messageInfo()\n\tmi.init()\n\tif fi, xd := mi.checkField(fd); fi != nil {\n\t\tfi.clear(m.pointer())\n\t} else {\n\t\tmi.extensionMap(m.pointer()).Clear(xd)\n\t}\n}\nfunc (m *messageReflectWrapper) Get(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tmi := m.messageInfo()\n\tmi.init()\n\tif fi, xd := mi.checkField(fd); fi != nil {\n\t\treturn fi.get(m.pointer())\n\t} else {\n\t\treturn mi.extensionMap(m.pointer()).Get(xd)\n\t}\n}\nfunc (m *messageReflectWrapper) Set(fd protoreflect.FieldDescriptor, v protoreflect.Value) {\n\tmi := m.messageInfo()\n\tmi.init()\n\tif fi, xd := mi.checkField(fd); fi != nil {\n\t\tfi.set(m.pointer(), v)\n\t} else {\n\t\tmi.extensionMap(m.pointer()).Set(xd, v)\n\t}\n}\nfunc (m *messageReflectWrapper) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tmi := m.messageInfo()\n\tmi.init()\n\tif fi, xd := mi.checkField(fd); fi != nil {\n\t\treturn fi.mutable(m.pointer())\n\t} else {\n\t\treturn mi.extensionMap(m.pointer()).Mutable(xd)\n\t}\n}\nfunc (m *messageReflectWrapper) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tmi := m.messageInfo()\n\tmi.init()\n\tif fi, xd := mi.checkField(fd); fi != nil {\n\t\treturn fi.newField()\n\t} else {\n\t\treturn xd.Type().New()\n\t}\n}\nfunc (m *messageReflectWrapper) WhichOneof(od protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tmi := m.messageInfo()\n\tmi.init()\n\tif oi := mi.oneofs[od.Name()]; oi != nil && oi.oneofDesc == od {\n\t\treturn od.Fields().ByNumber(oi.which(m.pointer()))\n\t}\n\tpanic(\"invalid oneof descriptor \" + string(od.FullName()) + \" for message \" + string(m.Descriptor().FullName()))\n}\nfunc (m *messageReflectWrapper) GetUnknown() protoreflect.RawFields {\n\tmi := m.messageInfo()\n\tmi.init()\n\treturn mi.getUnknown(m.pointer())\n}\nfunc (m *messageReflectWrapper) SetUnknown(b protoreflect.RawFields) {\n\tmi := m.messageInfo()\n\tmi.init()\n\tmi.setUnknown(m.pointer(), b)\n}\nfunc (m *messageReflectWrapper) IsValid() bool {\n\treturn !m.pointer().IsNil()\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"reflect\"\n\t\"sync/atomic\"\n\t\"unsafe\"\n\n\t\"google.golang.org/protobuf/internal/protolazy\"\n)\n\nconst UnsafeEnabled = true\n\n// Pointer is an opaque pointer type.\ntype Pointer unsafe.Pointer\n\n// offset represents the offset to a struct field, accessible from a pointer.\n// The offset is the byte offset to the field from the start of the struct.\ntype offset uintptr\n\n// offsetOf returns a field offset for the struct field.\nfunc offsetOf(f reflect.StructField) offset {\n\treturn offset(f.Offset)\n}\n\n// IsValid reports whether the offset is valid.\nfunc (f offset) IsValid() bool { return f != invalidOffset }\n\n// invalidOffset is an invalid field offset.\nvar invalidOffset = ^offset(0)\n\n// zeroOffset is a noop when calling pointer.Apply.\nvar zeroOffset = offset(0)\n\n// pointer is a pointer to a message struct or field.\ntype pointer struct{ p unsafe.Pointer }\n\n// pointerOf returns p as a pointer.\nfunc pointerOf(p Pointer) pointer {\n\treturn pointer{p: unsafe.Pointer(p)}\n}\n\n// pointerOfValue returns v as a pointer.\nfunc pointerOfValue(v reflect.Value) pointer {\n\treturn pointer{p: unsafe.Pointer(v.Pointer())}\n}\n\n// pointerOfIface returns the pointer portion of an interface.\nfunc pointerOfIface(v any) pointer {\n\ttype ifaceHeader struct {\n\t\tType unsafe.Pointer\n\t\tData unsafe.Pointer\n\t}\n\treturn pointer{p: (*ifaceHeader)(unsafe.Pointer(&v)).Data}\n}\n\n// IsNil reports whether the pointer is nil.\nfunc (p pointer) IsNil() bool {\n\treturn p.p == nil\n}\n\n// Apply adds an offset to the pointer to derive a new pointer\n// to a specified field. The pointer must be valid and pointing at a struct.\nfunc (p pointer) Apply(f offset) pointer {\n\tif p.IsNil() {\n\t\tpanic(\"invalid nil pointer\")\n\t}\n\treturn pointer{p: unsafe.Pointer(uintptr(p.p) + uintptr(f))}\n}\n\n// AsValueOf treats p as a pointer to an object of type t and returns the value.\n// It is equivalent to reflect.ValueOf(p.AsIfaceOf(t))\nfunc (p pointer) AsValueOf(t reflect.Type) reflect.Value {\n\treturn reflect.NewAt(t, p.p)\n}\n\n// AsIfaceOf treats p as a pointer to an object of type t and returns the value.\n// It is equivalent to p.AsValueOf(t).Interface()\nfunc (p pointer) AsIfaceOf(t reflect.Type) any {\n\t// TODO: Use tricky unsafe magic to directly create ifaceHeader.\n\treturn p.AsValueOf(t).Interface()\n}\n\nfunc (p pointer) Bool() *bool                           { return (*bool)(p.p) }\nfunc (p pointer) BoolPtr() **bool                       { return (**bool)(p.p) }\nfunc (p pointer) BoolSlice() *[]bool                    { return (*[]bool)(p.p) }\nfunc (p pointer) Int32() *int32                         { return (*int32)(p.p) }\nfunc (p pointer) Int32Ptr() **int32                     { return (**int32)(p.p) }\nfunc (p pointer) Int32Slice() *[]int32                  { return (*[]int32)(p.p) }\nfunc (p pointer) Int64() *int64                         { return (*int64)(p.p) }\nfunc (p pointer) Int64Ptr() **int64                     { return (**int64)(p.p) }\nfunc (p pointer) Int64Slice() *[]int64                  { return (*[]int64)(p.p) }\nfunc (p pointer) Uint32() *uint32                       { return (*uint32)(p.p) }\nfunc (p pointer) Uint32Ptr() **uint32                   { return (**uint32)(p.p) }\nfunc (p pointer) Uint32Slice() *[]uint32                { return (*[]uint32)(p.p) }\nfunc (p pointer) Uint64() *uint64                       { return (*uint64)(p.p) }\nfunc (p pointer) Uint64Ptr() **uint64                   { return (**uint64)(p.p) }\nfunc (p pointer) Uint64Slice() *[]uint64                { return (*[]uint64)(p.p) }\nfunc (p pointer) Float32() *float32                     { return (*float32)(p.p) }\nfunc (p pointer) Float32Ptr() **float32                 { return (**float32)(p.p) }\nfunc (p pointer) Float32Slice() *[]float32              { return (*[]float32)(p.p) }\nfunc (p pointer) Float64() *float64                     { return (*float64)(p.p) }\nfunc (p pointer) Float64Ptr() **float64                 { return (**float64)(p.p) }\nfunc (p pointer) Float64Slice() *[]float64              { return (*[]float64)(p.p) }\nfunc (p pointer) String() *string                       { return (*string)(p.p) }\nfunc (p pointer) StringPtr() **string                   { return (**string)(p.p) }\nfunc (p pointer) StringSlice() *[]string                { return (*[]string)(p.p) }\nfunc (p pointer) Bytes() *[]byte                        { return (*[]byte)(p.p) }\nfunc (p pointer) BytesPtr() **[]byte                    { return (**[]byte)(p.p) }\nfunc (p pointer) BytesSlice() *[][]byte                 { return (*[][]byte)(p.p) }\nfunc (p pointer) Extensions() *map[int32]ExtensionField { return (*map[int32]ExtensionField)(p.p) }\nfunc (p pointer) LazyInfoPtr() **protolazy.XXX_lazyUnmarshalInfo {\n\treturn (**protolazy.XXX_lazyUnmarshalInfo)(p.p)\n}\n\nfunc (p pointer) PresenceInfo() presence {\n\treturn presence{P: p.p}\n}\n\nfunc (p pointer) Elem() pointer {\n\treturn pointer{p: *(*unsafe.Pointer)(p.p)}\n}\n\n// PointerSlice loads []*T from p as a []pointer.\n// The value returned is aliased with the original slice.\n// This behavior differs from the implementation in pointer_reflect.go.\nfunc (p pointer) PointerSlice() []pointer {\n\t// Super-tricky - p should point to a []*T where T is a\n\t// message type. We load it as []pointer.\n\treturn *(*[]pointer)(p.p)\n}\n\n// AppendPointerSlice appends v to p, which must be a []*T.\nfunc (p pointer) AppendPointerSlice(v pointer) {\n\t*(*[]pointer)(p.p) = append(*(*[]pointer)(p.p), v)\n}\n\n// SetPointer sets *p to v.\nfunc (p pointer) SetPointer(v pointer) {\n\t*(*unsafe.Pointer)(p.p) = (unsafe.Pointer)(v.p)\n}\n\nfunc (p pointer) growBoolSlice(addCap int) {\n\tsp := p.BoolSlice()\n\ts := make([]bool, 0, addCap+len(*sp))\n\ts = s[:len(*sp)]\n\tcopy(s, *sp)\n\t*sp = s\n}\n\nfunc (p pointer) growInt32Slice(addCap int) {\n\tsp := p.Int32Slice()\n\ts := make([]int32, 0, addCap+len(*sp))\n\ts = s[:len(*sp)]\n\tcopy(s, *sp)\n\t*sp = s\n}\n\nfunc (p pointer) growUint32Slice(addCap int) {\n\tp.growInt32Slice(addCap)\n}\n\nfunc (p pointer) growFloat32Slice(addCap int) {\n\tp.growInt32Slice(addCap)\n}\n\nfunc (p pointer) growInt64Slice(addCap int) {\n\tsp := p.Int64Slice()\n\ts := make([]int64, 0, addCap+len(*sp))\n\ts = s[:len(*sp)]\n\tcopy(s, *sp)\n\t*sp = s\n}\n\nfunc (p pointer) growUint64Slice(addCap int) {\n\tp.growInt64Slice(addCap)\n}\n\nfunc (p pointer) growFloat64Slice(addCap int) {\n\tp.growInt64Slice(addCap)\n}\n\n// Static check that MessageState does not exceed the size of a pointer.\nconst _ = uint(unsafe.Sizeof(unsafe.Pointer(nil)) - unsafe.Sizeof(MessageState{}))\n\nfunc (Export) MessageStateOf(p Pointer) *messageState {\n\t// Super-tricky - see documentation on MessageState.\n\treturn (*messageState)(unsafe.Pointer(p))\n}\nfunc (ms *messageState) pointer() pointer {\n\t// Super-tricky - see documentation on MessageState.\n\treturn pointer{p: unsafe.Pointer(ms)}\n}\nfunc (ms *messageState) messageInfo() *MessageInfo {\n\tmi := ms.LoadMessageInfo()\n\tif mi == nil {\n\t\tpanic(\"invalid nil message info; this suggests memory corruption due to a race or shallow copy on the message struct\")\n\t}\n\treturn mi\n}\nfunc (ms *messageState) LoadMessageInfo() *MessageInfo {\n\treturn (*MessageInfo)(atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(&ms.atomicMessageInfo))))\n}\nfunc (ms *messageState) StoreMessageInfo(mi *MessageInfo) {\n\tatomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(&ms.atomicMessageInfo)), unsafe.Pointer(mi))\n}\n\ntype atomicNilMessage struct{ p unsafe.Pointer } // p is a *messageReflectWrapper\n\nfunc (m *atomicNilMessage) Init(mi *MessageInfo) *messageReflectWrapper {\n\tif p := atomic.LoadPointer(&m.p); p != nil {\n\t\treturn (*messageReflectWrapper)(p)\n\t}\n\tw := &messageReflectWrapper{mi: mi}\n\tatomic.CompareAndSwapPointer(&m.p, nil, (unsafe.Pointer)(w))\n\treturn (*messageReflectWrapper)(atomic.LoadPointer(&m.p))\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe_opaque.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"sync/atomic\"\n\t\"unsafe\"\n)\n\nfunc (p pointer) AtomicGetPointer() pointer {\n\treturn pointer{p: atomic.LoadPointer((*unsafe.Pointer)(p.p))}\n}\n\nfunc (p pointer) AtomicSetPointer(v pointer) {\n\tatomic.StorePointer((*unsafe.Pointer)(p.p), v.p)\n}\n\nfunc (p pointer) AtomicSetNilPointer() {\n\tatomic.StorePointer((*unsafe.Pointer)(p.p), unsafe.Pointer(nil))\n}\n\nfunc (p pointer) AtomicSetPointerIfNil(v pointer) pointer {\n\tif atomic.CompareAndSwapPointer((*unsafe.Pointer)(p.p), unsafe.Pointer(nil), v.p) {\n\t\treturn v\n\t}\n\treturn pointer{p: atomic.LoadPointer((*unsafe.Pointer)(p.p))}\n}\n\ntype atomicV1MessageInfo struct{ p Pointer }\n\nfunc (mi *atomicV1MessageInfo) Get() Pointer {\n\treturn Pointer(atomic.LoadPointer((*unsafe.Pointer)(&mi.p)))\n}\n\nfunc (mi *atomicV1MessageInfo) SetIfNil(p Pointer) Pointer {\n\tif atomic.CompareAndSwapPointer((*unsafe.Pointer)(&mi.p), nil, unsafe.Pointer(p)) {\n\t\treturn p\n\t}\n\treturn mi.Get()\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/presence.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"sync/atomic\"\n\t\"unsafe\"\n)\n\n// presenceSize represents the size of a presence set, which should be the largest index of the set+1\ntype presenceSize uint32\n\n// presence is the internal representation of the bitmap array in a generated protobuf\ntype presence struct {\n\t// This is a pointer to the beginning of an array of uint32\n\tP unsafe.Pointer\n}\n\nfunc (p presence) toElem(num uint32) (ret *uint32) {\n\tconst (\n\t\tbitsPerByte = 8\n\t\tsiz         = unsafe.Sizeof(*ret)\n\t)\n\t// p.P points to an array of uint32, num is the bit in this array that the\n\t// caller wants to check/manipulate. Calculate the index in the array that\n\t// contains this specific bit. E.g.: 76 / 32 = 2 (integer division).\n\toffset := uintptr(num) / (siz * bitsPerByte) * siz\n\treturn (*uint32)(unsafe.Pointer(uintptr(p.P) + offset))\n}\n\n// Present checks for the presence of a specific field number in a presence set.\nfunc (p presence) Present(num uint32) bool {\n\treturn Export{}.Present(p.toElem(num), num)\n}\n\n// SetPresent adds presence for a specific field number in a presence set.\nfunc (p presence) SetPresent(num uint32, size presenceSize) {\n\tExport{}.SetPresent(p.toElem(num), num, uint32(size))\n}\n\n// SetPresentUnatomic adds presence for a specific field number in a presence set without using\n// atomic operations. Only to be called during unmarshaling.\nfunc (p presence) SetPresentUnatomic(num uint32, size presenceSize) {\n\tExport{}.SetPresentNonAtomic(p.toElem(num), num, uint32(size))\n}\n\n// ClearPresent removes presence for a specific field number in a presence set.\nfunc (p presence) ClearPresent(num uint32) {\n\tExport{}.ClearPresent(p.toElem(num), num)\n}\n\n// LoadPresenceCache (together with PresentInCache) allows for a\n// cached version of checking for presence without re-reading the word\n// for every field. It is optimized for efficiency and assumes no\n// simltaneous mutation of the presence set (or at least does not have\n// a problem with simultaneous mutation giving inconsistent results).\nfunc (p presence) LoadPresenceCache() (current uint32) {\n\tif p.P == nil {\n\t\treturn 0\n\t}\n\treturn atomic.LoadUint32((*uint32)(p.P))\n}\n\n// PresentInCache reads presence from a cached word in the presence\n// bitmap. It caches up a new word if the bit is outside the\n// word. This is for really fast iteration through bitmaps in cases\n// where we either know that the bitmap will not be altered, or we\n// don't care about inconsistencies caused by simultaneous writes.\nfunc (p presence) PresentInCache(num uint32, cachedElement *uint32, current *uint32) bool {\n\tif num/32 != *cachedElement {\n\t\to := uintptr(num/32) * unsafe.Sizeof(uint32(0))\n\t\tq := (*uint32)(unsafe.Pointer(uintptr(p.P) + o))\n\t\t*current = atomic.LoadUint32(q)\n\t\t*cachedElement = num / 32\n\t}\n\treturn (*current & (1 << (num % 32))) > 0\n}\n\n// AnyPresent checks if any field is marked as present in the bitmap.\nfunc (p presence) AnyPresent(size presenceSize) bool {\n\tn := uintptr((size + 31) / 32)\n\tfor j := uintptr(0); j < n; j++ {\n\t\to := j * unsafe.Sizeof(uint32(0))\n\t\tq := (*uint32)(unsafe.Pointer(uintptr(p.P) + o))\n\t\tb := atomic.LoadUint32(q)\n\t\tif b > 0 {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// toRaceDetectData finds the preceding RaceDetectHookData in a\n// message by using pointer arithmetic. As the type of the presence\n// set (bitmap) varies with the number of fields in the protobuf, we\n// can not have a struct type containing the array and the\n// RaceDetectHookData.  instead the RaceDetectHookData is placed\n// immediately before the bitmap array, and we find it by walking\n// backwards in the struct.\n//\n// This method is only called from the race-detect version of the code,\n// so RaceDetectHookData is never an empty struct.\nfunc (p presence) toRaceDetectData() *RaceDetectHookData {\n\tvar template struct {\n\t\td RaceDetectHookData\n\t\ta [1]uint32\n\t}\n\to := (uintptr(unsafe.Pointer(&template.a)) - uintptr(unsafe.Pointer(&template.d)))\n\treturn (*RaceDetectHookData)(unsafe.Pointer(uintptr(p.P) - o))\n}\n\nfunc atomicLoadShadowPresence(p **[]byte) *[]byte {\n\treturn (*[]byte)(atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(p))))\n}\nfunc atomicStoreShadowPresence(p **[]byte, v *[]byte) {\n\tatomic.CompareAndSwapPointer((*unsafe.Pointer)(unsafe.Pointer(p)), nil, unsafe.Pointer(v))\n}\n\n// findPointerToRaceDetectData finds the preceding RaceDetectHookData\n// in a message by using pointer arithmetic. For the methods called\n// directy from generated code, we don't have a pointer to the\n// beginning of the presence set, but a pointer inside the array. As\n// we know the index of the bit we're manipulating (num), we can\n// calculate which element of the array ptr is pointing to. With that\n// information we find the preceding RaceDetectHookData and can\n// manipulate the shadow bitmap.\n//\n// This method is only called from the race-detect version of the\n// code, so RaceDetectHookData is never an empty struct.\nfunc findPointerToRaceDetectData(ptr *uint32, num uint32) *RaceDetectHookData {\n\tvar template struct {\n\t\td RaceDetectHookData\n\t\ta [1]uint32\n\t}\n\to := (uintptr(unsafe.Pointer(&template.a)) - uintptr(unsafe.Pointer(&template.d))) + uintptr(num/32)*unsafe.Sizeof(uint32(0))\n\treturn (*RaceDetectHookData)(unsafe.Pointer(uintptr(unsafe.Pointer(ptr)) - o))\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/validate.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"fmt\"\n\t\"math\"\n\t\"math/bits\"\n\t\"reflect\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/encoding/messageset\"\n\t\"google.golang.org/protobuf/internal/flags\"\n\t\"google.golang.org/protobuf/internal/genid\"\n\t\"google.golang.org/protobuf/internal/strs\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n)\n\n// ValidationStatus is the result of validating the wire-format encoding of a message.\ntype ValidationStatus int\n\nconst (\n\t// ValidationUnknown indicates that unmarshaling the message might succeed or fail.\n\t// The validator was unable to render a judgement.\n\t//\n\t// The only causes of this status are an aberrant message type appearing somewhere\n\t// in the message or a failure in the extension resolver.\n\tValidationUnknown ValidationStatus = iota + 1\n\n\t// ValidationInvalid indicates that unmarshaling the message will fail.\n\tValidationInvalid\n\n\t// ValidationValid indicates that unmarshaling the message will succeed.\n\tValidationValid\n\n\t// ValidationWrongWireType indicates that a validated field does not have\n\t// the expected wire type.\n\tValidationWrongWireType\n)\n\nfunc (v ValidationStatus) String() string {\n\tswitch v {\n\tcase ValidationUnknown:\n\t\treturn \"ValidationUnknown\"\n\tcase ValidationInvalid:\n\t\treturn \"ValidationInvalid\"\n\tcase ValidationValid:\n\t\treturn \"ValidationValid\"\n\tdefault:\n\t\treturn fmt.Sprintf(\"ValidationStatus(%d)\", int(v))\n\t}\n}\n\n// Validate determines whether the contents of the buffer are a valid wire encoding\n// of the message type.\n//\n// This function is exposed for testing.\nfunc Validate(mt protoreflect.MessageType, in protoiface.UnmarshalInput) (out protoiface.UnmarshalOutput, _ ValidationStatus) {\n\tmi, ok := mt.(*MessageInfo)\n\tif !ok {\n\t\treturn out, ValidationUnknown\n\t}\n\tif in.Resolver == nil {\n\t\tin.Resolver = protoregistry.GlobalTypes\n\t}\n\to, st := mi.validate(in.Buf, 0, unmarshalOptions{\n\t\tflags:    in.Flags,\n\t\tresolver: in.Resolver,\n\t})\n\tif o.initialized {\n\t\tout.Flags |= protoiface.UnmarshalInitialized\n\t}\n\treturn out, st\n}\n\ntype validationInfo struct {\n\tmi               *MessageInfo\n\ttyp              validationType\n\tkeyType, valType validationType\n\n\t// For non-required fields, requiredBit is 0.\n\t//\n\t// For required fields, requiredBit's nth bit is set, where n is a\n\t// unique index in the range [0, MessageInfo.numRequiredFields).\n\t//\n\t// If there are more than 64 required fields, requiredBit is 0.\n\trequiredBit uint64\n}\n\ntype validationType uint8\n\nconst (\n\tvalidationTypeOther validationType = iota\n\tvalidationTypeMessage\n\tvalidationTypeGroup\n\tvalidationTypeMap\n\tvalidationTypeRepeatedVarint\n\tvalidationTypeRepeatedFixed32\n\tvalidationTypeRepeatedFixed64\n\tvalidationTypeVarint\n\tvalidationTypeFixed32\n\tvalidationTypeFixed64\n\tvalidationTypeBytes\n\tvalidationTypeUTF8String\n\tvalidationTypeMessageSetItem\n)\n\nfunc newFieldValidationInfo(mi *MessageInfo, si structInfo, fd protoreflect.FieldDescriptor, ft reflect.Type) validationInfo {\n\tvar vi validationInfo\n\tswitch {\n\tcase fd.ContainingOneof() != nil && !fd.ContainingOneof().IsSynthetic():\n\t\tswitch fd.Kind() {\n\t\tcase protoreflect.MessageKind:\n\t\t\tvi.typ = validationTypeMessage\n\t\t\tif ot, ok := si.oneofWrappersByNumber[fd.Number()]; ok {\n\t\t\t\tvi.mi = getMessageInfo(ot.Field(0).Type)\n\t\t\t}\n\t\tcase protoreflect.GroupKind:\n\t\t\tvi.typ = validationTypeGroup\n\t\t\tif ot, ok := si.oneofWrappersByNumber[fd.Number()]; ok {\n\t\t\t\tvi.mi = getMessageInfo(ot.Field(0).Type)\n\t\t\t}\n\t\tcase protoreflect.StringKind:\n\t\t\tif strs.EnforceUTF8(fd) {\n\t\t\t\tvi.typ = validationTypeUTF8String\n\t\t\t}\n\t\t}\n\tdefault:\n\t\tvi = newValidationInfo(fd, ft)\n\t}\n\tif fd.Cardinality() == protoreflect.Required {\n\t\t// Avoid overflow. The required field check is done with a 64-bit mask, with\n\t\t// any message containing more than 64 required fields always reported as\n\t\t// potentially uninitialized, so it is not important to get a precise count\n\t\t// of the required fields past 64.\n\t\tif mi.numRequiredFields < math.MaxUint8 {\n\t\t\tmi.numRequiredFields++\n\t\t\tvi.requiredBit = 1 << (mi.numRequiredFields - 1)\n\t\t}\n\t}\n\treturn vi\n}\n\nfunc newValidationInfo(fd protoreflect.FieldDescriptor, ft reflect.Type) validationInfo {\n\tvar vi validationInfo\n\tswitch {\n\tcase fd.IsList():\n\t\tswitch fd.Kind() {\n\t\tcase protoreflect.MessageKind:\n\t\t\tvi.typ = validationTypeMessage\n\n\t\t\tif ft.Kind() == reflect.Ptr {\n\t\t\t\t// Repeated opaque message fields are *[]*T.\n\t\t\t\tft = ft.Elem()\n\t\t\t}\n\n\t\t\tif ft.Kind() == reflect.Slice {\n\t\t\t\tvi.mi = getMessageInfo(ft.Elem())\n\t\t\t}\n\t\tcase protoreflect.GroupKind:\n\t\t\tvi.typ = validationTypeGroup\n\n\t\t\tif ft.Kind() == reflect.Ptr {\n\t\t\t\t// Repeated opaque message fields are *[]*T.\n\t\t\t\tft = ft.Elem()\n\t\t\t}\n\n\t\t\tif ft.Kind() == reflect.Slice {\n\t\t\t\tvi.mi = getMessageInfo(ft.Elem())\n\t\t\t}\n\t\tcase protoreflect.StringKind:\n\t\t\tvi.typ = validationTypeBytes\n\t\t\tif strs.EnforceUTF8(fd) {\n\t\t\t\tvi.typ = validationTypeUTF8String\n\t\t\t}\n\t\tdefault:\n\t\t\tswitch wireTypes[fd.Kind()] {\n\t\t\tcase protowire.VarintType:\n\t\t\t\tvi.typ = validationTypeRepeatedVarint\n\t\t\tcase protowire.Fixed32Type:\n\t\t\t\tvi.typ = validationTypeRepeatedFixed32\n\t\t\tcase protowire.Fixed64Type:\n\t\t\t\tvi.typ = validationTypeRepeatedFixed64\n\t\t\t}\n\t\t}\n\tcase fd.IsMap():\n\t\tvi.typ = validationTypeMap\n\t\tswitch fd.MapKey().Kind() {\n\t\tcase protoreflect.StringKind:\n\t\t\tif strs.EnforceUTF8(fd) {\n\t\t\t\tvi.keyType = validationTypeUTF8String\n\t\t\t}\n\t\t}\n\t\tswitch fd.MapValue().Kind() {\n\t\tcase protoreflect.MessageKind:\n\t\t\tvi.valType = validationTypeMessage\n\t\t\tif ft.Kind() == reflect.Map {\n\t\t\t\tvi.mi = getMessageInfo(ft.Elem())\n\t\t\t}\n\t\tcase protoreflect.StringKind:\n\t\t\tif strs.EnforceUTF8(fd) {\n\t\t\t\tvi.valType = validationTypeUTF8String\n\t\t\t}\n\t\t}\n\tdefault:\n\t\tswitch fd.Kind() {\n\t\tcase protoreflect.MessageKind:\n\t\t\tvi.typ = validationTypeMessage\n\t\t\tvi.mi = getMessageInfo(ft)\n\t\tcase protoreflect.GroupKind:\n\t\t\tvi.typ = validationTypeGroup\n\t\t\tvi.mi = getMessageInfo(ft)\n\t\tcase protoreflect.StringKind:\n\t\t\tvi.typ = validationTypeBytes\n\t\t\tif strs.EnforceUTF8(fd) {\n\t\t\t\tvi.typ = validationTypeUTF8String\n\t\t\t}\n\t\tdefault:\n\t\t\tswitch wireTypes[fd.Kind()] {\n\t\t\tcase protowire.VarintType:\n\t\t\t\tvi.typ = validationTypeVarint\n\t\t\tcase protowire.Fixed32Type:\n\t\t\t\tvi.typ = validationTypeFixed32\n\t\t\tcase protowire.Fixed64Type:\n\t\t\t\tvi.typ = validationTypeFixed64\n\t\t\tcase protowire.BytesType:\n\t\t\t\tvi.typ = validationTypeBytes\n\t\t\t}\n\t\t}\n\t}\n\treturn vi\n}\n\nfunc (mi *MessageInfo) validate(b []byte, groupTag protowire.Number, opts unmarshalOptions) (out unmarshalOutput, result ValidationStatus) {\n\tmi.init()\n\ttype validationState struct {\n\t\ttyp              validationType\n\t\tkeyType, valType validationType\n\t\tendGroup         protowire.Number\n\t\tmi               *MessageInfo\n\t\ttail             []byte\n\t\trequiredMask     uint64\n\t}\n\n\t// Pre-allocate some slots to avoid repeated slice reallocation.\n\tstates := make([]validationState, 0, 16)\n\tstates = append(states, validationState{\n\t\ttyp: validationTypeMessage,\n\t\tmi:  mi,\n\t})\n\tif groupTag > 0 {\n\t\tstates[0].typ = validationTypeGroup\n\t\tstates[0].endGroup = groupTag\n\t}\n\tinitialized := true\n\tstart := len(b)\nState:\n\tfor len(states) > 0 {\n\t\tst := &states[len(states)-1]\n\t\tfor len(b) > 0 {\n\t\t\t// Parse the tag (field number and wire type).\n\t\t\tvar tag uint64\n\t\t\tif b[0] < 0x80 {\n\t\t\t\ttag = uint64(b[0])\n\t\t\t\tb = b[1:]\n\t\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\t\ttag = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\t\tb = b[2:]\n\t\t\t} else {\n\t\t\t\tvar n int\n\t\t\t\ttag, n = protowire.ConsumeVarint(b)\n\t\t\t\tif n < 0 {\n\t\t\t\t\treturn out, ValidationInvalid\n\t\t\t\t}\n\t\t\t\tb = b[n:]\n\t\t\t}\n\t\t\tvar num protowire.Number\n\t\t\tif n := tag >> 3; n < uint64(protowire.MinValidNumber) || n > uint64(protowire.MaxValidNumber) {\n\t\t\t\treturn out, ValidationInvalid\n\t\t\t} else {\n\t\t\t\tnum = protowire.Number(n)\n\t\t\t}\n\t\t\twtyp := protowire.Type(tag & 7)\n\n\t\t\tif wtyp == protowire.EndGroupType {\n\t\t\t\tif st.endGroup == num {\n\t\t\t\t\tgoto PopState\n\t\t\t\t}\n\t\t\t\treturn out, ValidationInvalid\n\t\t\t}\n\t\t\tvar vi validationInfo\n\t\t\tswitch {\n\t\t\tcase st.typ == validationTypeMap:\n\t\t\t\tswitch num {\n\t\t\t\tcase genid.MapEntry_Key_field_number:\n\t\t\t\t\tvi.typ = st.keyType\n\t\t\t\tcase genid.MapEntry_Value_field_number:\n\t\t\t\t\tvi.typ = st.valType\n\t\t\t\t\tvi.mi = st.mi\n\t\t\t\t\tvi.requiredBit = 1\n\t\t\t\t}\n\t\t\tcase flags.ProtoLegacy && st.mi.isMessageSet:\n\t\t\t\tswitch num {\n\t\t\t\tcase messageset.FieldItem:\n\t\t\t\t\tvi.typ = validationTypeMessageSetItem\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tvar f *coderFieldInfo\n\t\t\t\tif int(num) < len(st.mi.denseCoderFields) {\n\t\t\t\t\tf = st.mi.denseCoderFields[num]\n\t\t\t\t} else {\n\t\t\t\t\tf = st.mi.coderFields[num]\n\t\t\t\t}\n\t\t\t\tif f != nil {\n\t\t\t\t\tvi = f.validation\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\t// Possible extension field.\n\t\t\t\t//\n\t\t\t\t// TODO: We should return ValidationUnknown when:\n\t\t\t\t//   1. The resolver is not frozen. (More extensions may be added to it.)\n\t\t\t\t//   2. The resolver returns preg.NotFound.\n\t\t\t\t// In this case, a type added to the resolver in the future could cause\n\t\t\t\t// unmarshaling to begin failing. Supporting this requires some way to\n\t\t\t\t// determine if the resolver is frozen.\n\t\t\t\txt, err := opts.resolver.FindExtensionByNumber(st.mi.Desc.FullName(), num)\n\t\t\t\tif err != nil && err != protoregistry.NotFound {\n\t\t\t\t\treturn out, ValidationUnknown\n\t\t\t\t}\n\t\t\t\tif err == nil {\n\t\t\t\t\tvi = getExtensionFieldInfo(xt).validation\n\t\t\t\t}\n\t\t\t}\n\t\t\tif vi.requiredBit != 0 {\n\t\t\t\t// Check that the field has a compatible wire type.\n\t\t\t\t// We only need to consider non-repeated field types,\n\t\t\t\t// since repeated fields (and maps) can never be required.\n\t\t\t\tok := false\n\t\t\t\tswitch vi.typ {\n\t\t\t\tcase validationTypeVarint:\n\t\t\t\t\tok = wtyp == protowire.VarintType\n\t\t\t\tcase validationTypeFixed32:\n\t\t\t\t\tok = wtyp == protowire.Fixed32Type\n\t\t\t\tcase validationTypeFixed64:\n\t\t\t\t\tok = wtyp == protowire.Fixed64Type\n\t\t\t\tcase validationTypeBytes, validationTypeUTF8String, validationTypeMessage:\n\t\t\t\t\tok = wtyp == protowire.BytesType\n\t\t\t\tcase validationTypeGroup:\n\t\t\t\t\tok = wtyp == protowire.StartGroupType\n\t\t\t\t}\n\t\t\t\tif ok {\n\t\t\t\t\tst.requiredMask |= vi.requiredBit\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tswitch wtyp {\n\t\t\tcase protowire.VarintType:\n\t\t\t\tif len(b) >= 10 {\n\t\t\t\t\tswitch {\n\t\t\t\t\tcase b[0] < 0x80:\n\t\t\t\t\t\tb = b[1:]\n\t\t\t\t\tcase b[1] < 0x80:\n\t\t\t\t\t\tb = b[2:]\n\t\t\t\t\tcase b[2] < 0x80:\n\t\t\t\t\t\tb = b[3:]\n\t\t\t\t\tcase b[3] < 0x80:\n\t\t\t\t\t\tb = b[4:]\n\t\t\t\t\tcase b[4] < 0x80:\n\t\t\t\t\t\tb = b[5:]\n\t\t\t\t\tcase b[5] < 0x80:\n\t\t\t\t\t\tb = b[6:]\n\t\t\t\t\tcase b[6] < 0x80:\n\t\t\t\t\t\tb = b[7:]\n\t\t\t\t\tcase b[7] < 0x80:\n\t\t\t\t\t\tb = b[8:]\n\t\t\t\t\tcase b[8] < 0x80:\n\t\t\t\t\t\tb = b[9:]\n\t\t\t\t\tcase b[9] < 0x80 && b[9] < 2:\n\t\t\t\t\t\tb = b[10:]\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn out, ValidationInvalid\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tswitch {\n\t\t\t\t\tcase len(b) > 0 && b[0] < 0x80:\n\t\t\t\t\t\tb = b[1:]\n\t\t\t\t\tcase len(b) > 1 && b[1] < 0x80:\n\t\t\t\t\t\tb = b[2:]\n\t\t\t\t\tcase len(b) > 2 && b[2] < 0x80:\n\t\t\t\t\t\tb = b[3:]\n\t\t\t\t\tcase len(b) > 3 && b[3] < 0x80:\n\t\t\t\t\t\tb = b[4:]\n\t\t\t\t\tcase len(b) > 4 && b[4] < 0x80:\n\t\t\t\t\t\tb = b[5:]\n\t\t\t\t\tcase len(b) > 5 && b[5] < 0x80:\n\t\t\t\t\t\tb = b[6:]\n\t\t\t\t\tcase len(b) > 6 && b[6] < 0x80:\n\t\t\t\t\t\tb = b[7:]\n\t\t\t\t\tcase len(b) > 7 && b[7] < 0x80:\n\t\t\t\t\t\tb = b[8:]\n\t\t\t\t\tcase len(b) > 8 && b[8] < 0x80:\n\t\t\t\t\t\tb = b[9:]\n\t\t\t\t\tcase len(b) > 9 && b[9] < 2:\n\t\t\t\t\t\tb = b[10:]\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn out, ValidationInvalid\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcontinue State\n\t\t\tcase protowire.BytesType:\n\t\t\t\tvar size uint64\n\t\t\t\tif len(b) >= 1 && b[0] < 0x80 {\n\t\t\t\t\tsize = uint64(b[0])\n\t\t\t\t\tb = b[1:]\n\t\t\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\t\t\tsize = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\t\t\tb = b[2:]\n\t\t\t\t} else {\n\t\t\t\t\tvar n int\n\t\t\t\t\tsize, n = protowire.ConsumeVarint(b)\n\t\t\t\t\tif n < 0 {\n\t\t\t\t\t\treturn out, ValidationInvalid\n\t\t\t\t\t}\n\t\t\t\t\tb = b[n:]\n\t\t\t\t}\n\t\t\t\tif size > uint64(len(b)) {\n\t\t\t\t\treturn out, ValidationInvalid\n\t\t\t\t}\n\t\t\t\tv := b[:size]\n\t\t\t\tb = b[size:]\n\t\t\t\tswitch vi.typ {\n\t\t\t\tcase validationTypeMessage:\n\t\t\t\t\tif vi.mi == nil {\n\t\t\t\t\t\treturn out, ValidationUnknown\n\t\t\t\t\t}\n\t\t\t\t\tvi.mi.init()\n\t\t\t\t\tfallthrough\n\t\t\t\tcase validationTypeMap:\n\t\t\t\t\tif vi.mi != nil {\n\t\t\t\t\t\tvi.mi.init()\n\t\t\t\t\t}\n\t\t\t\t\tstates = append(states, validationState{\n\t\t\t\t\t\ttyp:     vi.typ,\n\t\t\t\t\t\tkeyType: vi.keyType,\n\t\t\t\t\t\tvalType: vi.valType,\n\t\t\t\t\t\tmi:      vi.mi,\n\t\t\t\t\t\ttail:    b,\n\t\t\t\t\t})\n\t\t\t\t\tb = v\n\t\t\t\t\tcontinue State\n\t\t\t\tcase validationTypeRepeatedVarint:\n\t\t\t\t\t// Packed field.\n\t\t\t\t\tfor len(v) > 0 {\n\t\t\t\t\t\t_, n := protowire.ConsumeVarint(v)\n\t\t\t\t\t\tif n < 0 {\n\t\t\t\t\t\t\treturn out, ValidationInvalid\n\t\t\t\t\t\t}\n\t\t\t\t\t\tv = v[n:]\n\t\t\t\t\t}\n\t\t\t\tcase validationTypeRepeatedFixed32:\n\t\t\t\t\t// Packed field.\n\t\t\t\t\tif len(v)%4 != 0 {\n\t\t\t\t\t\treturn out, ValidationInvalid\n\t\t\t\t\t}\n\t\t\t\tcase validationTypeRepeatedFixed64:\n\t\t\t\t\t// Packed field.\n\t\t\t\t\tif len(v)%8 != 0 {\n\t\t\t\t\t\treturn out, ValidationInvalid\n\t\t\t\t\t}\n\t\t\t\tcase validationTypeUTF8String:\n\t\t\t\t\tif !utf8.Valid(v) {\n\t\t\t\t\t\treturn out, ValidationInvalid\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase protowire.Fixed32Type:\n\t\t\t\tif len(b) < 4 {\n\t\t\t\t\treturn out, ValidationInvalid\n\t\t\t\t}\n\t\t\t\tb = b[4:]\n\t\t\tcase protowire.Fixed64Type:\n\t\t\t\tif len(b) < 8 {\n\t\t\t\t\treturn out, ValidationInvalid\n\t\t\t\t}\n\t\t\t\tb = b[8:]\n\t\t\tcase protowire.StartGroupType:\n\t\t\t\tswitch {\n\t\t\t\tcase vi.typ == validationTypeGroup:\n\t\t\t\t\tif vi.mi == nil {\n\t\t\t\t\t\treturn out, ValidationUnknown\n\t\t\t\t\t}\n\t\t\t\t\tvi.mi.init()\n\t\t\t\t\tstates = append(states, validationState{\n\t\t\t\t\t\ttyp:      validationTypeGroup,\n\t\t\t\t\t\tmi:       vi.mi,\n\t\t\t\t\t\tendGroup: num,\n\t\t\t\t\t})\n\t\t\t\t\tcontinue State\n\t\t\t\tcase flags.ProtoLegacy && vi.typ == validationTypeMessageSetItem:\n\t\t\t\t\ttypeid, v, n, err := messageset.ConsumeFieldValue(b, false)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn out, ValidationInvalid\n\t\t\t\t\t}\n\t\t\t\t\txt, err := opts.resolver.FindExtensionByNumber(st.mi.Desc.FullName(), typeid)\n\t\t\t\t\tswitch {\n\t\t\t\t\tcase err == protoregistry.NotFound:\n\t\t\t\t\t\tb = b[n:]\n\t\t\t\t\tcase err != nil:\n\t\t\t\t\t\treturn out, ValidationUnknown\n\t\t\t\t\tdefault:\n\t\t\t\t\t\txvi := getExtensionFieldInfo(xt).validation\n\t\t\t\t\t\tif xvi.mi != nil {\n\t\t\t\t\t\t\txvi.mi.init()\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstates = append(states, validationState{\n\t\t\t\t\t\t\ttyp:  xvi.typ,\n\t\t\t\t\t\t\tmi:   xvi.mi,\n\t\t\t\t\t\t\ttail: b[n:],\n\t\t\t\t\t\t})\n\t\t\t\t\t\tb = v\n\t\t\t\t\t\tcontinue State\n\t\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\tn := protowire.ConsumeFieldValue(num, wtyp, b)\n\t\t\t\t\tif n < 0 {\n\t\t\t\t\t\treturn out, ValidationInvalid\n\t\t\t\t\t}\n\t\t\t\t\tb = b[n:]\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\treturn out, ValidationInvalid\n\t\t\t}\n\t\t}\n\t\tif st.endGroup != 0 {\n\t\t\treturn out, ValidationInvalid\n\t\t}\n\t\tif len(b) != 0 {\n\t\t\treturn out, ValidationInvalid\n\t\t}\n\t\tb = st.tail\n\tPopState:\n\t\tnumRequiredFields := 0\n\t\tswitch st.typ {\n\t\tcase validationTypeMessage, validationTypeGroup:\n\t\t\tnumRequiredFields = int(st.mi.numRequiredFields)\n\t\tcase validationTypeMap:\n\t\t\t// If this is a map field with a message value that contains\n\t\t\t// required fields, require that the value be present.\n\t\t\tif st.mi != nil && st.mi.numRequiredFields > 0 {\n\t\t\t\tnumRequiredFields = 1\n\t\t\t}\n\t\t}\n\t\t// If there are more than 64 required fields, this check will\n\t\t// always fail and we will report that the message is potentially\n\t\t// uninitialized.\n\t\tif numRequiredFields > 0 && bits.OnesCount64(st.requiredMask) != numRequiredFields {\n\t\t\tinitialized = false\n\t\t}\n\t\tstates = states[:len(states)-1]\n\t}\n\tout.n = start - len(b)\n\tif initialized {\n\t\tout.initialized = true\n\t}\n\treturn out, ValidationValid\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/order/order.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage order\n\nimport (\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\n// FieldOrder specifies the ordering to visit message fields.\n// It is a function that reports whether x is ordered before y.\ntype FieldOrder func(x, y protoreflect.FieldDescriptor) bool\n\nvar (\n\t// AnyFieldOrder specifies no specific field ordering.\n\tAnyFieldOrder FieldOrder = nil\n\n\t// LegacyFieldOrder sorts fields in the same ordering as emitted by\n\t// wire serialization in the github.com/golang/protobuf implementation.\n\tLegacyFieldOrder FieldOrder = func(x, y protoreflect.FieldDescriptor) bool {\n\t\tox, oy := x.ContainingOneof(), y.ContainingOneof()\n\t\tinOneof := func(od protoreflect.OneofDescriptor) bool {\n\t\t\treturn od != nil && !od.IsSynthetic()\n\t\t}\n\n\t\t// Extension fields sort before non-extension fields.\n\t\tif x.IsExtension() != y.IsExtension() {\n\t\t\treturn x.IsExtension() && !y.IsExtension()\n\t\t}\n\t\t// Fields not within a oneof sort before those within a oneof.\n\t\tif inOneof(ox) != inOneof(oy) {\n\t\t\treturn !inOneof(ox) && inOneof(oy)\n\t\t}\n\t\t// Fields in disjoint oneof sets are sorted by declaration index.\n\t\tif inOneof(ox) && inOneof(oy) && ox != oy {\n\t\t\treturn ox.Index() < oy.Index()\n\t\t}\n\t\t// Fields sorted by field number.\n\t\treturn x.Number() < y.Number()\n\t}\n\n\t// NumberFieldOrder sorts fields by their field number.\n\tNumberFieldOrder FieldOrder = func(x, y protoreflect.FieldDescriptor) bool {\n\t\treturn x.Number() < y.Number()\n\t}\n\n\t// IndexNameFieldOrder sorts non-extension fields before extension fields.\n\t// Non-extensions are sorted according to their declaration index.\n\t// Extensions are sorted according to their full name.\n\tIndexNameFieldOrder FieldOrder = func(x, y protoreflect.FieldDescriptor) bool {\n\t\t// Non-extension fields sort before extension fields.\n\t\tif x.IsExtension() != y.IsExtension() {\n\t\t\treturn !x.IsExtension() && y.IsExtension()\n\t\t}\n\t\t// Extensions sorted by fullname.\n\t\tif x.IsExtension() && y.IsExtension() {\n\t\t\treturn x.FullName() < y.FullName()\n\t\t}\n\t\t// Non-extensions sorted by declaration index.\n\t\treturn x.Index() < y.Index()\n\t}\n)\n\n// KeyOrder specifies the ordering to visit map entries.\n// It is a function that reports whether x is ordered before y.\ntype KeyOrder func(x, y protoreflect.MapKey) bool\n\nvar (\n\t// AnyKeyOrder specifies no specific key ordering.\n\tAnyKeyOrder KeyOrder = nil\n\n\t// GenericKeyOrder sorts false before true, numeric keys in ascending order,\n\t// and strings in lexicographical ordering according to UTF-8 codepoints.\n\tGenericKeyOrder KeyOrder = func(x, y protoreflect.MapKey) bool {\n\t\tswitch x.Interface().(type) {\n\t\tcase bool:\n\t\t\treturn !x.Bool() && y.Bool()\n\t\tcase int32, int64:\n\t\t\treturn x.Int() < y.Int()\n\t\tcase uint32, uint64:\n\t\t\treturn x.Uint() < y.Uint()\n\t\tcase string:\n\t\t\treturn x.String() < y.String()\n\t\tdefault:\n\t\t\tpanic(\"invalid map key type\")\n\t\t}\n\t}\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/order/range.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package order provides ordered access to messages and maps.\npackage order\n\nimport (\n\t\"sort\"\n\t\"sync\"\n\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\ntype messageField struct {\n\tfd protoreflect.FieldDescriptor\n\tv  protoreflect.Value\n}\n\nvar messageFieldPool = sync.Pool{\n\tNew: func() any { return new([]messageField) },\n}\n\ntype (\n\t// FieldRnger is an interface for visiting all fields in a message.\n\t// The protoreflect.Message type implements this interface.\n\tFieldRanger interface{ Range(VisitField) }\n\t// VisitField is called every time a message field is visited.\n\tVisitField = func(protoreflect.FieldDescriptor, protoreflect.Value) bool\n)\n\n// RangeFields iterates over the fields of fs according to the specified order.\nfunc RangeFields(fs FieldRanger, less FieldOrder, fn VisitField) {\n\tif less == nil {\n\t\tfs.Range(fn)\n\t\treturn\n\t}\n\n\t// Obtain a pre-allocated scratch buffer.\n\tp := messageFieldPool.Get().(*[]messageField)\n\tfields := (*p)[:0]\n\tdefer func() {\n\t\tif cap(fields) < 1024 {\n\t\t\t*p = fields\n\t\t\tmessageFieldPool.Put(p)\n\t\t}\n\t}()\n\n\t// Collect all fields in the message and sort them.\n\tfs.Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool {\n\t\tfields = append(fields, messageField{fd, v})\n\t\treturn true\n\t})\n\tsort.Slice(fields, func(i, j int) bool {\n\t\treturn less(fields[i].fd, fields[j].fd)\n\t})\n\n\t// Visit the fields in the specified ordering.\n\tfor _, f := range fields {\n\t\tif !fn(f.fd, f.v) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\ntype mapEntry struct {\n\tk protoreflect.MapKey\n\tv protoreflect.Value\n}\n\nvar mapEntryPool = sync.Pool{\n\tNew: func() any { return new([]mapEntry) },\n}\n\ntype (\n\t// EntryRanger is an interface for visiting all fields in a message.\n\t// The protoreflect.Map type implements this interface.\n\tEntryRanger interface{ Range(VisitEntry) }\n\t// VisitEntry is called every time a map entry is visited.\n\tVisitEntry = func(protoreflect.MapKey, protoreflect.Value) bool\n)\n\n// RangeEntries iterates over the entries of es according to the specified order.\nfunc RangeEntries(es EntryRanger, less KeyOrder, fn VisitEntry) {\n\tif less == nil {\n\t\tes.Range(fn)\n\t\treturn\n\t}\n\n\t// Obtain a pre-allocated scratch buffer.\n\tp := mapEntryPool.Get().(*[]mapEntry)\n\tentries := (*p)[:0]\n\tdefer func() {\n\t\tif cap(entries) < 1024 {\n\t\t\t*p = entries\n\t\t\tmapEntryPool.Put(p)\n\t\t}\n\t}()\n\n\t// Collect all entries in the map and sort them.\n\tes.Range(func(k protoreflect.MapKey, v protoreflect.Value) bool {\n\t\tentries = append(entries, mapEntry{k, v})\n\t\treturn true\n\t})\n\tsort.Slice(entries, func(i, j int) bool {\n\t\treturn less(entries[i].k, entries[j].k)\n\t})\n\n\t// Visit the entries in the specified ordering.\n\tfor _, e := range entries {\n\t\tif !fn(e.k, e.v) {\n\t\t\treturn\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/pragma/pragma.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package pragma provides types that can be embedded into a struct to\n// statically enforce or prevent certain language properties.\npackage pragma\n\nimport \"sync\"\n\n// NoUnkeyedLiterals can be embedded in a struct to prevent unkeyed literals.\ntype NoUnkeyedLiterals struct{}\n\n// DoNotImplement can be embedded in an interface to prevent trivial\n// implementations of the interface.\n//\n// This is useful to prevent unauthorized implementations of an interface\n// so that it can be extended in the future for any protobuf language changes.\ntype DoNotImplement interface{ ProtoInternal(DoNotImplement) }\n\n// DoNotCompare can be embedded in a struct to prevent comparability.\ntype DoNotCompare [0]func()\n\n// DoNotCopy can be embedded in a struct to help prevent shallow copies.\n// This does not rely on a Go language feature, but rather a special case\n// within the vet checker.\n//\n// See https://golang.org/issues/8005.\ntype DoNotCopy [0]sync.Mutex\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/protolazy/bufferreader.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Helper code for parsing a protocol buffer\n\npackage protolazy\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n)\n\n// BufferReader is a structure encapsulating a protobuf and a current position\ntype BufferReader struct {\n\tBuf []byte\n\tPos int\n}\n\n// NewBufferReader creates a new BufferRead from a protobuf\nfunc NewBufferReader(buf []byte) BufferReader {\n\treturn BufferReader{Buf: buf, Pos: 0}\n}\n\nvar errOutOfBounds = errors.New(\"protobuf decoding: out of bounds\")\nvar errOverflow = errors.New(\"proto: integer overflow\")\n\nfunc (b *BufferReader) DecodeVarintSlow() (x uint64, err error) {\n\ti := b.Pos\n\tl := len(b.Buf)\n\n\tfor shift := uint(0); shift < 64; shift += 7 {\n\t\tif i >= l {\n\t\t\terr = io.ErrUnexpectedEOF\n\t\t\treturn\n\t\t}\n\t\tv := b.Buf[i]\n\t\ti++\n\t\tx |= (uint64(v) & 0x7F) << shift\n\t\tif v < 0x80 {\n\t\t\tb.Pos = i\n\t\t\treturn\n\t\t}\n\t}\n\n\t// The number is too large to represent in a 64-bit value.\n\terr = errOverflow\n\treturn\n}\n\n// decodeVarint decodes a varint at the current position\nfunc (b *BufferReader) DecodeVarint() (x uint64, err error) {\n\ti := b.Pos\n\tbuf := b.Buf\n\n\tif i >= len(buf) {\n\t\treturn 0, io.ErrUnexpectedEOF\n\t} else if buf[i] < 0x80 {\n\t\tb.Pos++\n\t\treturn uint64(buf[i]), nil\n\t} else if len(buf)-i < 10 {\n\t\treturn b.DecodeVarintSlow()\n\t}\n\n\tvar v uint64\n\t// we already checked the first byte\n\tx = uint64(buf[i]) & 127\n\ti++\n\n\tv = uint64(buf[i])\n\ti++\n\tx |= (v & 127) << 7\n\tif v < 128 {\n\t\tgoto done\n\t}\n\n\tv = uint64(buf[i])\n\ti++\n\tx |= (v & 127) << 14\n\tif v < 128 {\n\t\tgoto done\n\t}\n\n\tv = uint64(buf[i])\n\ti++\n\tx |= (v & 127) << 21\n\tif v < 128 {\n\t\tgoto done\n\t}\n\n\tv = uint64(buf[i])\n\ti++\n\tx |= (v & 127) << 28\n\tif v < 128 {\n\t\tgoto done\n\t}\n\n\tv = uint64(buf[i])\n\ti++\n\tx |= (v & 127) << 35\n\tif v < 128 {\n\t\tgoto done\n\t}\n\n\tv = uint64(buf[i])\n\ti++\n\tx |= (v & 127) << 42\n\tif v < 128 {\n\t\tgoto done\n\t}\n\n\tv = uint64(buf[i])\n\ti++\n\tx |= (v & 127) << 49\n\tif v < 128 {\n\t\tgoto done\n\t}\n\n\tv = uint64(buf[i])\n\ti++\n\tx |= (v & 127) << 56\n\tif v < 128 {\n\t\tgoto done\n\t}\n\n\tv = uint64(buf[i])\n\ti++\n\tx |= (v & 127) << 63\n\tif v < 128 {\n\t\tgoto done\n\t}\n\n\treturn 0, errOverflow\n\ndone:\n\tb.Pos = i\n\treturn\n}\n\n// decodeVarint32 decodes a varint32 at the current position\nfunc (b *BufferReader) DecodeVarint32() (x uint32, err error) {\n\ti := b.Pos\n\tbuf := b.Buf\n\n\tif i >= len(buf) {\n\t\treturn 0, io.ErrUnexpectedEOF\n\t} else if buf[i] < 0x80 {\n\t\tb.Pos++\n\t\treturn uint32(buf[i]), nil\n\t} else if len(buf)-i < 5 {\n\t\tv, err := b.DecodeVarintSlow()\n\t\treturn uint32(v), err\n\t}\n\n\tvar v uint32\n\t// we already checked the first byte\n\tx = uint32(buf[i]) & 127\n\ti++\n\n\tv = uint32(buf[i])\n\ti++\n\tx |= (v & 127) << 7\n\tif v < 128 {\n\t\tgoto done\n\t}\n\n\tv = uint32(buf[i])\n\ti++\n\tx |= (v & 127) << 14\n\tif v < 128 {\n\t\tgoto done\n\t}\n\n\tv = uint32(buf[i])\n\ti++\n\tx |= (v & 127) << 21\n\tif v < 128 {\n\t\tgoto done\n\t}\n\n\tv = uint32(buf[i])\n\ti++\n\tx |= (v & 127) << 28\n\tif v < 128 {\n\t\tgoto done\n\t}\n\n\treturn 0, errOverflow\n\ndone:\n\tb.Pos = i\n\treturn\n}\n\n// skipValue skips a value in the protobuf, based on the specified tag\nfunc (b *BufferReader) SkipValue(tag uint32) (err error) {\n\twireType := tag & 0x7\n\tswitch protowire.Type(wireType) {\n\tcase protowire.VarintType:\n\t\terr = b.SkipVarint()\n\tcase protowire.Fixed64Type:\n\t\terr = b.SkipFixed64()\n\tcase protowire.BytesType:\n\t\tvar n uint32\n\t\tn, err = b.DecodeVarint32()\n\t\tif err == nil {\n\t\t\terr = b.Skip(int(n))\n\t\t}\n\tcase protowire.StartGroupType:\n\t\terr = b.SkipGroup(tag)\n\tcase protowire.Fixed32Type:\n\t\terr = b.SkipFixed32()\n\tdefault:\n\t\terr = fmt.Errorf(\"Unexpected wire type (%d)\", wireType)\n\t}\n\treturn\n}\n\n// skipGroup skips a group with the specified tag.  It executes efficiently using a tag stack\nfunc (b *BufferReader) SkipGroup(tag uint32) (err error) {\n\ttagStack := make([]uint32, 0, 16)\n\ttagStack = append(tagStack, tag)\n\tvar n uint32\n\tfor len(tagStack) > 0 {\n\t\ttag, err = b.DecodeVarint32()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tswitch protowire.Type(tag & 0x7) {\n\t\tcase protowire.VarintType:\n\t\t\terr = b.SkipVarint()\n\t\tcase protowire.Fixed64Type:\n\t\t\terr = b.Skip(8)\n\t\tcase protowire.BytesType:\n\t\t\tn, err = b.DecodeVarint32()\n\t\t\tif err == nil {\n\t\t\t\terr = b.Skip(int(n))\n\t\t\t}\n\t\tcase protowire.StartGroupType:\n\t\t\ttagStack = append(tagStack, tag)\n\t\tcase protowire.Fixed32Type:\n\t\t\terr = b.SkipFixed32()\n\t\tcase protowire.EndGroupType:\n\t\t\tif protoFieldNumber(tagStack[len(tagStack)-1]) == protoFieldNumber(tag) {\n\t\t\t\ttagStack = tagStack[:len(tagStack)-1]\n\t\t\t} else {\n\t\t\t\terr = fmt.Errorf(\"end group tag %d does not match begin group tag %d at pos %d\",\n\t\t\t\t\tprotoFieldNumber(tag), protoFieldNumber(tagStack[len(tagStack)-1]), b.Pos)\n\t\t\t}\n\t\t}\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\n// skipVarint effiently skips a varint\nfunc (b *BufferReader) SkipVarint() (err error) {\n\ti := b.Pos\n\n\tif len(b.Buf)-i < 10 {\n\t\t// Use DecodeVarintSlow() to check for buffer overflow, but ignore result\n\t\tif _, err := b.DecodeVarintSlow(); err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t}\n\n\tif b.Buf[i] < 0x80 {\n\t\tgoto out\n\t}\n\ti++\n\n\tif b.Buf[i] < 0x80 {\n\t\tgoto out\n\t}\n\ti++\n\n\tif b.Buf[i] < 0x80 {\n\t\tgoto out\n\t}\n\ti++\n\n\tif b.Buf[i] < 0x80 {\n\t\tgoto out\n\t}\n\ti++\n\n\tif b.Buf[i] < 0x80 {\n\t\tgoto out\n\t}\n\ti++\n\n\tif b.Buf[i] < 0x80 {\n\t\tgoto out\n\t}\n\ti++\n\n\tif b.Buf[i] < 0x80 {\n\t\tgoto out\n\t}\n\ti++\n\n\tif b.Buf[i] < 0x80 {\n\t\tgoto out\n\t}\n\ti++\n\n\tif b.Buf[i] < 0x80 {\n\t\tgoto out\n\t}\n\ti++\n\n\tif b.Buf[i] < 0x80 {\n\t\tgoto out\n\t}\n\treturn errOverflow\n\nout:\n\tb.Pos = i + 1\n\treturn nil\n}\n\n// skip skips the specified number of bytes\nfunc (b *BufferReader) Skip(n int) (err error) {\n\tif len(b.Buf) < b.Pos+n {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\tb.Pos += n\n\treturn\n}\n\n// skipFixed64 skips a fixed64\nfunc (b *BufferReader) SkipFixed64() (err error) {\n\treturn b.Skip(8)\n}\n\n// skipFixed32 skips a fixed32\nfunc (b *BufferReader) SkipFixed32() (err error) {\n\treturn b.Skip(4)\n}\n\n// skipBytes skips a set of bytes\nfunc (b *BufferReader) SkipBytes() (err error) {\n\tn, err := b.DecodeVarint32()\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn b.Skip(int(n))\n}\n\n// Done returns whether we are at the end of the protobuf\nfunc (b *BufferReader) Done() bool {\n\treturn b.Pos == len(b.Buf)\n}\n\n// Remaining returns how many bytes remain\nfunc (b *BufferReader) Remaining() int {\n\treturn len(b.Buf) - b.Pos\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/protolazy/lazy.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package protolazy contains internal data structures for lazy message decoding.\npackage protolazy\n\nimport (\n\t\"fmt\"\n\t\"sort\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\tpiface \"google.golang.org/protobuf/runtime/protoiface\"\n)\n\n// IndexEntry is the structure for an index of the fields in a message of a\n// proto (not descending to sub-messages)\ntype IndexEntry struct {\n\tFieldNum uint32\n\t// first byte of this tag/field\n\tStart uint32\n\t// first byte after a contiguous sequence of bytes for this tag/field, which could\n\t// include a single encoding of the field, or multiple encodings for the field\n\tEnd uint32\n\t// True if this protobuf segment includes multiple encodings of the field\n\tMultipleContiguous bool\n}\n\n// XXX_lazyUnmarshalInfo has information about a particular lazily decoded message\n//\n// Deprecated: Do not use. This will be deleted in the near future.\ntype XXX_lazyUnmarshalInfo struct {\n\t// Index of fields and their positions in the protobuf for this\n\t// message.  Make index be a pointer to a slice so it can be updated\n\t// atomically.  The index pointer is only set once (lazily when/if\n\t// the index is first needed), and must always be SET and LOADED\n\t// ATOMICALLY.\n\tindex *[]IndexEntry\n\t// The protobuf associated with this lazily decoded message.  It is\n\t// only set during proto.Unmarshal().  It doesn't need to be set and\n\t// loaded atomically, since any simultaneous set (Unmarshal) and read\n\t// (during a get) would already be a race in the app code.\n\tProtobuf []byte\n\t// The flags present when Unmarshal was originally called for this particular message\n\tunmarshalFlags piface.UnmarshalInputFlags\n}\n\n// The Buffer and SetBuffer methods let v2/internal/impl interact with\n// XXX_lazyUnmarshalInfo via an interface, to avoid an import cycle.\n\n// Buffer returns the lazy unmarshal buffer.\n//\n// Deprecated: Do not use. This will be deleted in the near future.\nfunc (lazy *XXX_lazyUnmarshalInfo) Buffer() []byte {\n\treturn lazy.Protobuf\n}\n\n// SetBuffer sets the lazy unmarshal buffer.\n//\n// Deprecated: Do not use. This will be deleted in the near future.\nfunc (lazy *XXX_lazyUnmarshalInfo) SetBuffer(b []byte) {\n\tlazy.Protobuf = b\n}\n\n// SetUnmarshalFlags is called to set a copy of the original unmarshalInputFlags.\n// The flags should reflect how Unmarshal was called.\nfunc (lazy *XXX_lazyUnmarshalInfo) SetUnmarshalFlags(f piface.UnmarshalInputFlags) {\n\tlazy.unmarshalFlags = f\n}\n\n// UnmarshalFlags returns the original unmarshalInputFlags.\nfunc (lazy *XXX_lazyUnmarshalInfo) UnmarshalFlags() piface.UnmarshalInputFlags {\n\treturn lazy.unmarshalFlags\n}\n\n// AllowedPartial returns true if the user originally unmarshalled this message with\n// AllowPartial set to true\nfunc (lazy *XXX_lazyUnmarshalInfo) AllowedPartial() bool {\n\treturn (lazy.unmarshalFlags & piface.UnmarshalCheckRequired) == 0\n}\n\nfunc protoFieldNumber(tag uint32) uint32 {\n\treturn tag >> 3\n}\n\n// buildIndex builds an index of the specified protobuf, return the index\n// array and an error.\nfunc buildIndex(buf []byte) ([]IndexEntry, error) {\n\tindex := make([]IndexEntry, 0, 16)\n\tvar lastProtoFieldNum uint32\n\tvar outOfOrder bool\n\n\tvar r BufferReader = NewBufferReader(buf)\n\n\tfor !r.Done() {\n\t\tvar tag uint32\n\t\tvar err error\n\t\tvar curPos = r.Pos\n\t\t// INLINED: tag, err = r.DecodeVarint32()\n\t\t{\n\t\t\ti := r.Pos\n\t\t\tbuf := r.Buf\n\n\t\t\tif i >= len(buf) {\n\t\t\t\treturn nil, errOutOfBounds\n\t\t\t} else if buf[i] < 0x80 {\n\t\t\t\tr.Pos++\n\t\t\t\ttag = uint32(buf[i])\n\t\t\t} else if r.Remaining() < 5 {\n\t\t\t\tvar v uint64\n\t\t\t\tv, err = r.DecodeVarintSlow()\n\t\t\t\ttag = uint32(v)\n\t\t\t} else {\n\t\t\t\tvar v uint32\n\t\t\t\t// we already checked the first byte\n\t\t\t\ttag = uint32(buf[i]) & 127\n\t\t\t\ti++\n\n\t\t\t\tv = uint32(buf[i])\n\t\t\t\ti++\n\t\t\t\ttag |= (v & 127) << 7\n\t\t\t\tif v < 128 {\n\t\t\t\t\tgoto done\n\t\t\t\t}\n\n\t\t\t\tv = uint32(buf[i])\n\t\t\t\ti++\n\t\t\t\ttag |= (v & 127) << 14\n\t\t\t\tif v < 128 {\n\t\t\t\t\tgoto done\n\t\t\t\t}\n\n\t\t\t\tv = uint32(buf[i])\n\t\t\t\ti++\n\t\t\t\ttag |= (v & 127) << 21\n\t\t\t\tif v < 128 {\n\t\t\t\t\tgoto done\n\t\t\t\t}\n\n\t\t\t\tv = uint32(buf[i])\n\t\t\t\ti++\n\t\t\t\ttag |= (v & 127) << 28\n\t\t\t\tif v < 128 {\n\t\t\t\t\tgoto done\n\t\t\t\t}\n\n\t\t\t\treturn nil, errOutOfBounds\n\n\t\t\tdone:\n\t\t\t\tr.Pos = i\n\t\t\t}\n\t\t}\n\t\t// DONE: tag, err = r.DecodeVarint32()\n\n\t\tfieldNum := protoFieldNumber(tag)\n\t\tif fieldNum < lastProtoFieldNum {\n\t\t\toutOfOrder = true\n\t\t}\n\n\t\t// Skip the current value -- will skip over an entire group as well.\n\t\t// INLINED: err = r.SkipValue(tag)\n\t\twireType := tag & 0x7\n\t\tswitch protowire.Type(wireType) {\n\t\tcase protowire.VarintType:\n\t\t\t// INLINED: err = r.SkipVarint()\n\t\t\ti := r.Pos\n\n\t\t\tif len(r.Buf)-i < 10 {\n\t\t\t\t// Use DecodeVarintSlow() to skip while\n\t\t\t\t// checking for buffer overflow, but ignore result\n\t\t\t\t_, err = r.DecodeVarintSlow()\n\t\t\t\tgoto out2\n\t\t\t}\n\t\t\tif r.Buf[i] < 0x80 {\n\t\t\t\tgoto out\n\t\t\t}\n\t\t\ti++\n\n\t\t\tif r.Buf[i] < 0x80 {\n\t\t\t\tgoto out\n\t\t\t}\n\t\t\ti++\n\n\t\t\tif r.Buf[i] < 0x80 {\n\t\t\t\tgoto out\n\t\t\t}\n\t\t\ti++\n\n\t\t\tif r.Buf[i] < 0x80 {\n\t\t\t\tgoto out\n\t\t\t}\n\t\t\ti++\n\n\t\t\tif r.Buf[i] < 0x80 {\n\t\t\t\tgoto out\n\t\t\t}\n\t\t\ti++\n\n\t\t\tif r.Buf[i] < 0x80 {\n\t\t\t\tgoto out\n\t\t\t}\n\t\t\ti++\n\n\t\t\tif r.Buf[i] < 0x80 {\n\t\t\t\tgoto out\n\t\t\t}\n\t\t\ti++\n\n\t\t\tif r.Buf[i] < 0x80 {\n\t\t\t\tgoto out\n\t\t\t}\n\t\t\ti++\n\n\t\t\tif r.Buf[i] < 0x80 {\n\t\t\t\tgoto out\n\t\t\t}\n\t\t\ti++\n\n\t\t\tif r.Buf[i] < 0x80 {\n\t\t\t\tgoto out\n\t\t\t}\n\t\t\treturn nil, errOverflow\n\t\tout:\n\t\t\tr.Pos = i + 1\n\t\t\t// DONE: err = r.SkipVarint()\n\t\tcase protowire.Fixed64Type:\n\t\t\terr = r.SkipFixed64()\n\t\tcase protowire.BytesType:\n\t\t\tvar n uint32\n\t\t\tn, err = r.DecodeVarint32()\n\t\t\tif err == nil {\n\t\t\t\terr = r.Skip(int(n))\n\t\t\t}\n\t\tcase protowire.StartGroupType:\n\t\t\terr = r.SkipGroup(tag)\n\t\tcase protowire.Fixed32Type:\n\t\t\terr = r.SkipFixed32()\n\t\tdefault:\n\t\t\terr = fmt.Errorf(\"Unexpected wire type (%d)\", wireType)\n\t\t}\n\t\t// DONE: err = r.SkipValue(tag)\n\n\tout2:\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif fieldNum != lastProtoFieldNum {\n\t\t\tindex = append(index, IndexEntry{FieldNum: fieldNum,\n\t\t\t\tStart: uint32(curPos),\n\t\t\t\tEnd:   uint32(r.Pos)},\n\t\t\t)\n\t\t} else {\n\t\t\tindex[len(index)-1].End = uint32(r.Pos)\n\t\t\tindex[len(index)-1].MultipleContiguous = true\n\t\t}\n\t\tlastProtoFieldNum = fieldNum\n\t}\n\tif outOfOrder {\n\t\tsort.Slice(index, func(i, j int) bool {\n\t\t\treturn index[i].FieldNum < index[j].FieldNum ||\n\t\t\t\t(index[i].FieldNum == index[j].FieldNum &&\n\t\t\t\t\tindex[i].Start < index[j].Start)\n\t\t})\n\t}\n\treturn index, nil\n}\n\nfunc (lazy *XXX_lazyUnmarshalInfo) SizeField(num uint32) (size int) {\n\tstart, end, found, _, multipleEntries := lazy.FindFieldInProto(num)\n\tif multipleEntries != nil {\n\t\tfor _, entry := range multipleEntries {\n\t\t\tsize += int(entry.End - entry.Start)\n\t\t}\n\t\treturn size\n\t}\n\tif !found {\n\t\treturn 0\n\t}\n\treturn int(end - start)\n}\n\nfunc (lazy *XXX_lazyUnmarshalInfo) AppendField(b []byte, num uint32) ([]byte, bool) {\n\tstart, end, found, _, multipleEntries := lazy.FindFieldInProto(num)\n\tif multipleEntries != nil {\n\t\tfor _, entry := range multipleEntries {\n\t\t\tb = append(b, lazy.Protobuf[entry.Start:entry.End]...)\n\t\t}\n\t\treturn b, true\n\t}\n\tif !found {\n\t\treturn nil, false\n\t}\n\tb = append(b, lazy.Protobuf[start:end]...)\n\treturn b, true\n}\n\nfunc (lazy *XXX_lazyUnmarshalInfo) SetIndex(index []IndexEntry) {\n\tatomicStoreIndex(&lazy.index, &index)\n}\n\n// FindFieldInProto looks for field fieldNum in lazyUnmarshalInfo information\n// (including protobuf), returns startOffset/endOffset/found.\nfunc (lazy *XXX_lazyUnmarshalInfo) FindFieldInProto(fieldNum uint32) (start, end uint32, found, multipleContiguous bool, multipleEntries []IndexEntry) {\n\tif lazy.Protobuf == nil {\n\t\t// There is no backing protobuf for this message -- it was made from a builder\n\t\treturn 0, 0, false, false, nil\n\t}\n\tindex := atomicLoadIndex(&lazy.index)\n\tif index == nil {\n\t\tr, err := buildIndex(lazy.Protobuf)\n\t\tif err != nil {\n\t\t\tpanic(fmt.Sprintf(\"findFieldInfo: error building index when looking for field %d: %v\", fieldNum, err))\n\t\t}\n\t\t// lazy.index is a pointer to the slice returned by BuildIndex\n\t\tindex = &r\n\t\tatomicStoreIndex(&lazy.index, index)\n\t}\n\treturn lookupField(index, fieldNum)\n}\n\n// lookupField returns the offset at which the indicated field starts using\n// the index, offset immediately after field ends (including all instances of\n// a repeated field), and bools indicating if field was found and if there\n// are multiple encodings of the field in the byte range.\n//\n// To hande the uncommon case where there are repeated encodings for the same\n// field which are not consecutive in the protobuf (so we need to returns\n// multiple start/end offsets), we also return a slice multipleEntries.  If\n// multipleEntries is non-nil, then multiple entries were found, and the\n// values in the slice should be used, rather than start/end/found.\nfunc lookupField(indexp *[]IndexEntry, fieldNum uint32) (start, end uint32, found bool, multipleContiguous bool, multipleEntries []IndexEntry) {\n\t// The pointer indexp to the index was already loaded atomically.\n\t// The slice is uniquely associated with the pointer, so it doesn't\n\t// need to be loaded atomically.\n\tindex := *indexp\n\tfor i, entry := range index {\n\t\tif fieldNum == entry.FieldNum {\n\t\t\tif i < len(index)-1 && entry.FieldNum == index[i+1].FieldNum {\n\t\t\t\t// Handle the uncommon case where there are\n\t\t\t\t// repeated entries for the same field which\n\t\t\t\t// are not contiguous in the protobuf.\n\t\t\t\tmultiple := make([]IndexEntry, 1, 2)\n\t\t\t\tmultiple[0] = IndexEntry{fieldNum, entry.Start, entry.End, entry.MultipleContiguous}\n\t\t\t\ti++\n\t\t\t\tfor i < len(index) && index[i].FieldNum == fieldNum {\n\t\t\t\t\tmultiple = append(multiple, IndexEntry{fieldNum, index[i].Start, index[i].End, index[i].MultipleContiguous})\n\t\t\t\t\ti++\n\t\t\t\t}\n\t\t\t\treturn 0, 0, false, false, multiple\n\n\t\t\t}\n\t\t\treturn entry.Start, entry.End, true, entry.MultipleContiguous, nil\n\t\t}\n\t\tif fieldNum < entry.FieldNum {\n\t\t\treturn 0, 0, false, false, nil\n\t\t}\n\t}\n\treturn 0, 0, false, false, nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/protolazy/pointer_unsafe.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage protolazy\n\nimport (\n\t\"sync/atomic\"\n\t\"unsafe\"\n)\n\nfunc atomicLoadIndex(p **[]IndexEntry) *[]IndexEntry {\n\treturn (*[]IndexEntry)(atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(p))))\n}\nfunc atomicStoreIndex(p **[]IndexEntry, v *[]IndexEntry) {\n\tatomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(p)), unsafe.Pointer(v))\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/set/ints.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package set provides simple set data structures for uint64s.\npackage set\n\nimport \"math/bits\"\n\n// int64s represents a set of integers within the range of 0..63.\ntype int64s uint64\n\nfunc (bs *int64s) Len() int {\n\treturn bits.OnesCount64(uint64(*bs))\n}\nfunc (bs *int64s) Has(n uint64) bool {\n\treturn uint64(*bs)&(uint64(1)<<n) > 0\n}\nfunc (bs *int64s) Set(n uint64) {\n\t*(*uint64)(bs) |= uint64(1) << n\n}\nfunc (bs *int64s) Clear(n uint64) {\n\t*(*uint64)(bs) &^= uint64(1) << n\n}\n\n// Ints represents a set of integers within the range of 0..math.MaxUint64.\ntype Ints struct {\n\tlo int64s\n\thi map[uint64]struct{}\n}\n\nfunc (bs *Ints) Len() int {\n\treturn bs.lo.Len() + len(bs.hi)\n}\nfunc (bs *Ints) Has(n uint64) bool {\n\tif n < 64 {\n\t\treturn bs.lo.Has(n)\n\t}\n\t_, ok := bs.hi[n]\n\treturn ok\n}\nfunc (bs *Ints) Set(n uint64) {\n\tif n < 64 {\n\t\tbs.lo.Set(n)\n\t\treturn\n\t}\n\tif bs.hi == nil {\n\t\tbs.hi = make(map[uint64]struct{})\n\t}\n\tbs.hi[n] = struct{}{}\n}\nfunc (bs *Ints) Clear(n uint64) {\n\tif n < 64 {\n\t\tbs.lo.Clear(n)\n\t\treturn\n\t}\n\tdelete(bs.hi, n)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/strs/strings.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package strs provides string manipulation functionality specific to protobuf.\npackage strs\n\nimport (\n\t\"go/token\"\n\t\"strings\"\n\t\"unicode\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/internal/flags\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\n// EnforceUTF8 reports whether to enforce strict UTF-8 validation.\nfunc EnforceUTF8(fd protoreflect.FieldDescriptor) bool {\n\tif flags.ProtoLegacy || fd.Syntax() == protoreflect.Editions {\n\t\tif fd, ok := fd.(interface{ EnforceUTF8() bool }); ok {\n\t\t\treturn fd.EnforceUTF8()\n\t\t}\n\t}\n\treturn fd.Syntax() == protoreflect.Proto3\n}\n\n// GoCamelCase camel-cases a protobuf name for use as a Go identifier.\n//\n// If there is an interior underscore followed by a lower case letter,\n// drop the underscore and convert the letter to upper case.\nfunc GoCamelCase(s string) string {\n\t// Invariant: if the next letter is lower case, it must be converted\n\t// to upper case.\n\t// That is, we process a word at a time, where words are marked by _ or\n\t// upper case letter. Digits are treated as words.\n\tvar b []byte\n\tfor i := 0; i < len(s); i++ {\n\t\tc := s[i]\n\t\tswitch {\n\t\tcase c == '.' && i+1 < len(s) && isASCIILower(s[i+1]):\n\t\t\t// Skip over '.' in \".{{lowercase}}\".\n\t\tcase c == '.':\n\t\t\tb = append(b, '_') // convert '.' to '_'\n\t\tcase c == '_' && (i == 0 || s[i-1] == '.'):\n\t\t\t// Convert initial '_' to ensure we start with a capital letter.\n\t\t\t// Do the same for '_' after '.' to match historic behavior.\n\t\t\tb = append(b, 'X') // convert '_' to 'X'\n\t\tcase c == '_' && i+1 < len(s) && isASCIILower(s[i+1]):\n\t\t\t// Skip over '_' in \"_{{lowercase}}\".\n\t\tcase isASCIIDigit(c):\n\t\t\tb = append(b, c)\n\t\tdefault:\n\t\t\t// Assume we have a letter now - if not, it's a bogus identifier.\n\t\t\t// The next word is a sequence of characters that must start upper case.\n\t\t\tif isASCIILower(c) {\n\t\t\t\tc -= 'a' - 'A' // convert lowercase to uppercase\n\t\t\t}\n\t\t\tb = append(b, c)\n\n\t\t\t// Accept lower case sequence that follows.\n\t\t\tfor ; i+1 < len(s) && isASCIILower(s[i+1]); i++ {\n\t\t\t\tb = append(b, s[i+1])\n\t\t\t}\n\t\t}\n\t}\n\treturn string(b)\n}\n\n// GoSanitized converts a string to a valid Go identifier.\nfunc GoSanitized(s string) string {\n\t// Sanitize the input to the set of valid characters,\n\t// which must be '_' or be in the Unicode L or N categories.\n\ts = strings.Map(func(r rune) rune {\n\t\tif unicode.IsLetter(r) || unicode.IsDigit(r) {\n\t\t\treturn r\n\t\t}\n\t\treturn '_'\n\t}, s)\n\n\t// Prepend '_' in the event of a Go keyword conflict or if\n\t// the identifier is invalid (does not start in the Unicode L category).\n\tr, _ := utf8.DecodeRuneInString(s)\n\tif token.Lookup(s).IsKeyword() || !unicode.IsLetter(r) {\n\t\treturn \"_\" + s\n\t}\n\treturn s\n}\n\n// JSONCamelCase converts a snake_case identifier to a camelCase identifier,\n// according to the protobuf JSON specification.\nfunc JSONCamelCase(s string) string {\n\tvar b []byte\n\tvar wasUnderscore bool\n\tfor i := 0; i < len(s); i++ { // proto identifiers are always ASCII\n\t\tc := s[i]\n\t\tif c != '_' {\n\t\t\tif wasUnderscore && isASCIILower(c) {\n\t\t\t\tc -= 'a' - 'A' // convert to uppercase\n\t\t\t}\n\t\t\tb = append(b, c)\n\t\t}\n\t\twasUnderscore = c == '_'\n\t}\n\treturn string(b)\n}\n\n// JSONSnakeCase converts a camelCase identifier to a snake_case identifier,\n// according to the protobuf JSON specification.\nfunc JSONSnakeCase(s string) string {\n\tvar b []byte\n\tfor i := 0; i < len(s); i++ { // proto identifiers are always ASCII\n\t\tc := s[i]\n\t\tif isASCIIUpper(c) {\n\t\t\tb = append(b, '_')\n\t\t\tc += 'a' - 'A' // convert to lowercase\n\t\t}\n\t\tb = append(b, c)\n\t}\n\treturn string(b)\n}\n\n// MapEntryName derives the name of the map entry message given the field name.\n// See protoc v3.8.0: src/google/protobuf/descriptor.cc:254-276,6057\nfunc MapEntryName(s string) string {\n\tvar b []byte\n\tupperNext := true\n\tfor _, c := range s {\n\t\tswitch {\n\t\tcase c == '_':\n\t\t\tupperNext = true\n\t\tcase upperNext:\n\t\t\tb = append(b, byte(unicode.ToUpper(c)))\n\t\t\tupperNext = false\n\t\tdefault:\n\t\t\tb = append(b, byte(c))\n\t\t}\n\t}\n\tb = append(b, \"Entry\"...)\n\treturn string(b)\n}\n\n// EnumValueName derives the camel-cased enum value name.\n// See protoc v3.8.0: src/google/protobuf/descriptor.cc:297-313\nfunc EnumValueName(s string) string {\n\tvar b []byte\n\tupperNext := true\n\tfor _, c := range s {\n\t\tswitch {\n\t\tcase c == '_':\n\t\t\tupperNext = true\n\t\tcase upperNext:\n\t\t\tb = append(b, byte(unicode.ToUpper(c)))\n\t\t\tupperNext = false\n\t\tdefault:\n\t\t\tb = append(b, byte(unicode.ToLower(c)))\n\t\t\tupperNext = false\n\t\t}\n\t}\n\treturn string(b)\n}\n\n// TrimEnumPrefix trims the enum name prefix from an enum value name,\n// where the prefix is all lowercase without underscores.\n// See protoc v3.8.0: src/google/protobuf/descriptor.cc:330-375\nfunc TrimEnumPrefix(s, prefix string) string {\n\ts0 := s // original input\n\tfor len(s) > 0 && len(prefix) > 0 {\n\t\tif s[0] == '_' {\n\t\t\ts = s[1:]\n\t\t\tcontinue\n\t\t}\n\t\tif unicode.ToLower(rune(s[0])) != rune(prefix[0]) {\n\t\t\treturn s0 // no prefix match\n\t\t}\n\t\ts, prefix = s[1:], prefix[1:]\n\t}\n\tif len(prefix) > 0 {\n\t\treturn s0 // no prefix match\n\t}\n\ts = strings.TrimLeft(s, \"_\")\n\tif len(s) == 0 {\n\t\treturn s0 // avoid returning empty string\n\t}\n\treturn s\n}\n\nfunc isASCIILower(c byte) bool {\n\treturn 'a' <= c && c <= 'z'\n}\nfunc isASCIIUpper(c byte) bool {\n\treturn 'A' <= c && c <= 'Z'\n}\nfunc isASCIIDigit(c byte) bool {\n\treturn '0' <= c && c <= '9'\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/strs/strings_unsafe.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage strs\n\nimport (\n\t\"unsafe\"\n\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\n// UnsafeString returns an unsafe string reference of b.\n// The caller must treat the input slice as immutable.\n//\n// WARNING: Use carefully. The returned result must not leak to the end user\n// unless the input slice is provably immutable.\nfunc UnsafeString(b []byte) string {\n\treturn unsafe.String(unsafe.SliceData(b), len(b))\n}\n\n// UnsafeBytes returns an unsafe bytes slice reference of s.\n// The caller must treat returned slice as immutable.\n//\n// WARNING: Use carefully. The returned result must not leak to the end user.\nfunc UnsafeBytes(s string) []byte {\n\treturn unsafe.Slice(unsafe.StringData(s), len(s))\n}\n\n// Builder builds a set of strings with shared lifetime.\n// This differs from strings.Builder, which is for building a single string.\ntype Builder struct {\n\tbuf []byte\n}\n\n// AppendFullName is equivalent to protoreflect.FullName.Append,\n// but optimized for large batches where each name has a shared lifetime.\nfunc (sb *Builder) AppendFullName(prefix protoreflect.FullName, name protoreflect.Name) protoreflect.FullName {\n\tn := len(prefix) + len(\".\") + len(name)\n\tif len(prefix) == 0 {\n\t\tn -= len(\".\")\n\t}\n\tsb.grow(n)\n\tsb.buf = append(sb.buf, prefix...)\n\tsb.buf = append(sb.buf, '.')\n\tsb.buf = append(sb.buf, name...)\n\treturn protoreflect.FullName(sb.last(n))\n}\n\n// MakeString is equivalent to string(b), but optimized for large batches\n// with a shared lifetime.\nfunc (sb *Builder) MakeString(b []byte) string {\n\tsb.grow(len(b))\n\tsb.buf = append(sb.buf, b...)\n\treturn sb.last(len(b))\n}\n\nfunc (sb *Builder) grow(n int) {\n\tif cap(sb.buf)-len(sb.buf) >= n {\n\t\treturn\n\t}\n\n\t// Unlike strings.Builder, we do not need to copy over the contents\n\t// of the old buffer since our builder provides no API for\n\t// retrieving previously created strings.\n\tsb.buf = make([]byte, 0, 2*(cap(sb.buf)+n))\n}\n\nfunc (sb *Builder) last(n int) string {\n\treturn UnsafeString(sb.buf[len(sb.buf)-n:])\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/version/version.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package version records versioning information about this module.\npackage version\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n)\n\n// These constants determine the current version of this module.\n//\n// For our release process, we enforce the following rules:\n//   - Tagged releases use a tag that is identical to String.\n//   - Tagged releases never reference a commit where the String\n//     contains \"devel\".\n//   - The set of all commits in this repository where String\n//     does not contain \"devel\" must have a unique String.\n//\n// Steps for tagging a new release:\n//\n//  1. Create a new CL.\n//\n//  2. Update Minor, Patch, and/or PreRelease as necessary.\n//     PreRelease must not contain the string \"devel\".\n//\n//  3. Since the last released minor version, have there been any changes to\n//     generator that relies on new functionality in the runtime?\n//     If yes, then increment RequiredGenerated.\n//\n//  4. Since the last released minor version, have there been any changes to\n//     the runtime that removes support for old .pb.go source code?\n//     If yes, then increment SupportMinimum.\n//\n//  5. Send out the CL for review and submit it.\n//     Note that the next CL in step 8 must be submitted after this CL\n//     without any other CLs in-between.\n//\n//  6. Tag a new version, where the tag is is the current String.\n//\n//  7. Write release notes for all notable changes\n//     between this release and the last release.\n//\n//  8. Create a new CL.\n//\n//  9. Update PreRelease to include the string \"devel\".\n//     For example: \"\" -> \"devel\" or \"rc.1\" -> \"rc.1.devel\"\n//\n//  10. Send out the CL for review and submit it.\nconst (\n\tMajor      = 1\n\tMinor      = 36\n\tPatch      = 8\n\tPreRelease = \"\"\n)\n\n// String formats the version string for this module in semver format.\n//\n// Examples:\n//\n//\tv1.20.1\n//\tv1.21.0-rc.1\nfunc String() string {\n\tv := fmt.Sprintf(\"v%d.%d.%d\", Major, Minor, Patch)\n\tif PreRelease != \"\" {\n\t\tv += \"-\" + PreRelease\n\n\t\t// TODO: Add metadata about the commit or build hash.\n\t\t// See https://golang.org/issue/29814\n\t\t// See https://golang.org/issue/33533\n\t\tvar metadata string\n\t\tif strings.Contains(PreRelease, \"devel\") && metadata != \"\" {\n\t\t\tv += \"+\" + metadata\n\t\t}\n\t}\n\treturn v\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/proto/checkinit.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage proto\n\nimport (\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n)\n\n// CheckInitialized returns an error if any required fields in m are not set.\nfunc CheckInitialized(m Message) error {\n\t// Treat a nil message interface as an \"untyped\" empty message,\n\t// which we assume to have no required fields.\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\treturn checkInitialized(m.ProtoReflect())\n}\n\n// CheckInitialized returns an error if any required fields in m are not set.\nfunc checkInitialized(m protoreflect.Message) error {\n\tif methods := protoMethods(m); methods != nil && methods.CheckInitialized != nil {\n\t\t_, err := methods.CheckInitialized(protoiface.CheckInitializedInput{\n\t\t\tMessage: m,\n\t\t})\n\t\treturn err\n\t}\n\treturn checkInitializedSlow(m)\n}\n\nfunc checkInitializedSlow(m protoreflect.Message) error {\n\tmd := m.Descriptor()\n\tfds := md.Fields()\n\tfor i, nums := 0, md.RequiredNumbers(); i < nums.Len(); i++ {\n\t\tfd := fds.ByNumber(nums.Get(i))\n\t\tif !m.Has(fd) {\n\t\t\treturn errors.RequiredNotSet(string(fd.FullName()))\n\t\t}\n\t}\n\tvar err error\n\tm.Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool {\n\t\tswitch {\n\t\tcase fd.IsList():\n\t\t\tif fd.Message() == nil {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tfor i, list := 0, v.List(); i < list.Len() && err == nil; i++ {\n\t\t\t\terr = checkInitialized(list.Get(i).Message())\n\t\t\t}\n\t\tcase fd.IsMap():\n\t\t\tif fd.MapValue().Message() == nil {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tv.Map().Range(func(key protoreflect.MapKey, v protoreflect.Value) bool {\n\t\t\t\terr = checkInitialized(v.Message())\n\t\t\t\treturn err == nil\n\t\t\t})\n\t\tdefault:\n\t\t\tif fd.Message() == nil {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\terr = checkInitialized(v.Message())\n\t\t}\n\t\treturn err == nil\n\t})\n\treturn err\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/proto/decode.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage proto\n\nimport (\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/encoding/messageset\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/internal/genid\"\n\t\"google.golang.org/protobuf/internal/pragma\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n)\n\n// UnmarshalOptions configures the unmarshaler.\n//\n// Example usage:\n//\n//\terr := UnmarshalOptions{DiscardUnknown: true}.Unmarshal(b, m)\ntype UnmarshalOptions struct {\n\tpragma.NoUnkeyedLiterals\n\n\t// Merge merges the input into the destination message.\n\t// The default behavior is to always reset the message before unmarshaling,\n\t// unless Merge is specified.\n\tMerge bool\n\n\t// AllowPartial accepts input for messages that will result in missing\n\t// required fields. If AllowPartial is false (the default), Unmarshal will\n\t// return an error if there are any missing required fields.\n\tAllowPartial bool\n\n\t// If DiscardUnknown is set, unknown fields are ignored.\n\tDiscardUnknown bool\n\n\t// Resolver is used for looking up types when unmarshaling extension fields.\n\t// If nil, this defaults to using protoregistry.GlobalTypes.\n\tResolver interface {\n\t\tFindExtensionByName(field protoreflect.FullName) (protoreflect.ExtensionType, error)\n\t\tFindExtensionByNumber(message protoreflect.FullName, field protoreflect.FieldNumber) (protoreflect.ExtensionType, error)\n\t}\n\n\t// RecursionLimit limits how deeply messages may be nested.\n\t// If zero, a default limit is applied.\n\tRecursionLimit int\n\n\t//\n\t// NoLazyDecoding turns off lazy decoding, which otherwise is enabled by\n\t// default. Lazy decoding only affects submessages (annotated with [lazy =\n\t// true] in the .proto file) within messages that use the Opaque API.\n\tNoLazyDecoding bool\n}\n\n// Unmarshal parses the wire-format message in b and places the result in m.\n// The provided message must be mutable (e.g., a non-nil pointer to a message).\n//\n// See the [UnmarshalOptions] type if you need more control.\nfunc Unmarshal(b []byte, m Message) error {\n\t_, err := UnmarshalOptions{RecursionLimit: protowire.DefaultRecursionLimit}.unmarshal(b, m.ProtoReflect())\n\treturn err\n}\n\n// Unmarshal parses the wire-format message in b and places the result in m.\n// The provided message must be mutable (e.g., a non-nil pointer to a message).\nfunc (o UnmarshalOptions) Unmarshal(b []byte, m Message) error {\n\tif o.RecursionLimit == 0 {\n\t\to.RecursionLimit = protowire.DefaultRecursionLimit\n\t}\n\t_, err := o.unmarshal(b, m.ProtoReflect())\n\treturn err\n}\n\n// UnmarshalState parses a wire-format message and places the result in m.\n//\n// This method permits fine-grained control over the unmarshaler.\n// Most users should use [Unmarshal] instead.\nfunc (o UnmarshalOptions) UnmarshalState(in protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\tif o.RecursionLimit == 0 {\n\t\to.RecursionLimit = protowire.DefaultRecursionLimit\n\t}\n\treturn o.unmarshal(in.Buf, in.Message)\n}\n\n// unmarshal is a centralized function that all unmarshal operations go through.\n// For profiling purposes, avoid changing the name of this function or\n// introducing other code paths for unmarshal that do not go through this.\nfunc (o UnmarshalOptions) unmarshal(b []byte, m protoreflect.Message) (out protoiface.UnmarshalOutput, err error) {\n\tif o.Resolver == nil {\n\t\to.Resolver = protoregistry.GlobalTypes\n\t}\n\tif !o.Merge {\n\t\tReset(m.Interface())\n\t}\n\tallowPartial := o.AllowPartial\n\to.Merge = true\n\to.AllowPartial = true\n\tmethods := protoMethods(m)\n\tif methods != nil && methods.Unmarshal != nil &&\n\t\t!(o.DiscardUnknown && methods.Flags&protoiface.SupportUnmarshalDiscardUnknown == 0) {\n\t\tin := protoiface.UnmarshalInput{\n\t\t\tMessage:  m,\n\t\t\tBuf:      b,\n\t\t\tResolver: o.Resolver,\n\t\t\tDepth:    o.RecursionLimit,\n\t\t}\n\t\tif o.DiscardUnknown {\n\t\t\tin.Flags |= protoiface.UnmarshalDiscardUnknown\n\t\t}\n\n\t\tif !allowPartial {\n\t\t\t// This does not affect how current unmarshal functions work, it just allows them\n\t\t\t// to record this for lazy the decoding case.\n\t\t\tin.Flags |= protoiface.UnmarshalCheckRequired\n\t\t}\n\t\tif o.NoLazyDecoding {\n\t\t\tin.Flags |= protoiface.UnmarshalNoLazyDecoding\n\t\t}\n\n\t\tout, err = methods.Unmarshal(in)\n\t} else {\n\t\to.RecursionLimit--\n\t\tif o.RecursionLimit < 0 {\n\t\t\treturn out, errors.New(\"exceeded max recursion depth\")\n\t\t}\n\t\terr = o.unmarshalMessageSlow(b, m)\n\t}\n\tif err != nil {\n\t\treturn out, err\n\t}\n\tif allowPartial || (out.Flags&protoiface.UnmarshalInitialized != 0) {\n\t\treturn out, nil\n\t}\n\treturn out, checkInitialized(m)\n}\n\nfunc (o UnmarshalOptions) unmarshalMessage(b []byte, m protoreflect.Message) error {\n\t_, err := o.unmarshal(b, m)\n\treturn err\n}\n\nfunc (o UnmarshalOptions) unmarshalMessageSlow(b []byte, m protoreflect.Message) error {\n\tmd := m.Descriptor()\n\tif messageset.IsMessageSet(md) {\n\t\treturn o.unmarshalMessageSet(b, m)\n\t}\n\tfields := md.Fields()\n\tfor len(b) > 0 {\n\t\t// Parse the tag (field number and wire type).\n\t\tnum, wtyp, tagLen := protowire.ConsumeTag(b)\n\t\tif tagLen < 0 {\n\t\t\treturn errDecode\n\t\t}\n\t\tif num > protowire.MaxValidNumber {\n\t\t\treturn errDecode\n\t\t}\n\n\t\t// Find the field descriptor for this field number.\n\t\tfd := fields.ByNumber(num)\n\t\tif fd == nil && md.ExtensionRanges().Has(num) {\n\t\t\textType, err := o.Resolver.FindExtensionByNumber(md.FullName(), num)\n\t\t\tif err != nil && err != protoregistry.NotFound {\n\t\t\t\treturn errors.New(\"%v: unable to resolve extension %v: %v\", md.FullName(), num, err)\n\t\t\t}\n\t\t\tif extType != nil {\n\t\t\t\tfd = extType.TypeDescriptor()\n\t\t\t}\n\t\t}\n\t\tvar err error\n\t\tif fd == nil {\n\t\t\terr = errUnknown\n\t\t}\n\n\t\t// Parse the field value.\n\t\tvar valLen int\n\t\tswitch {\n\t\tcase err != nil:\n\t\tcase fd.IsList():\n\t\t\tvalLen, err = o.unmarshalList(b[tagLen:], wtyp, m.Mutable(fd).List(), fd)\n\t\tcase fd.IsMap():\n\t\t\tvalLen, err = o.unmarshalMap(b[tagLen:], wtyp, m.Mutable(fd).Map(), fd)\n\t\tdefault:\n\t\t\tvalLen, err = o.unmarshalSingular(b[tagLen:], wtyp, m, fd)\n\t\t}\n\t\tif err != nil {\n\t\t\tif err != errUnknown {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tvalLen = protowire.ConsumeFieldValue(num, wtyp, b[tagLen:])\n\t\t\tif valLen < 0 {\n\t\t\t\treturn errDecode\n\t\t\t}\n\t\t\tif !o.DiscardUnknown {\n\t\t\t\tm.SetUnknown(append(m.GetUnknown(), b[:tagLen+valLen]...))\n\t\t\t}\n\t\t}\n\t\tb = b[tagLen+valLen:]\n\t}\n\treturn nil\n}\n\nfunc (o UnmarshalOptions) unmarshalSingular(b []byte, wtyp protowire.Type, m protoreflect.Message, fd protoreflect.FieldDescriptor) (n int, err error) {\n\tv, n, err := o.unmarshalScalar(b, wtyp, fd)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tswitch fd.Kind() {\n\tcase protoreflect.GroupKind, protoreflect.MessageKind:\n\t\tm2 := m.Mutable(fd).Message()\n\t\tif err := o.unmarshalMessage(v.Bytes(), m2); err != nil {\n\t\t\treturn n, err\n\t\t}\n\tdefault:\n\t\t// Non-message scalars replace the previous value.\n\t\tm.Set(fd, v)\n\t}\n\treturn n, nil\n}\n\nfunc (o UnmarshalOptions) unmarshalMap(b []byte, wtyp protowire.Type, mapv protoreflect.Map, fd protoreflect.FieldDescriptor) (n int, err error) {\n\tif wtyp != protowire.BytesType {\n\t\treturn 0, errUnknown\n\t}\n\tb, n = protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn 0, errDecode\n\t}\n\tvar (\n\t\tkeyField = fd.MapKey()\n\t\tvalField = fd.MapValue()\n\t\tkey      protoreflect.Value\n\t\tval      protoreflect.Value\n\t\thaveKey  bool\n\t\thaveVal  bool\n\t)\n\tswitch valField.Kind() {\n\tcase protoreflect.GroupKind, protoreflect.MessageKind:\n\t\tval = mapv.NewValue()\n\t}\n\t// Map entries are represented as a two-element message with fields\n\t// containing the key and value.\n\tfor len(b) > 0 {\n\t\tnum, wtyp, n := protowire.ConsumeTag(b)\n\t\tif n < 0 {\n\t\t\treturn 0, errDecode\n\t\t}\n\t\tif num > protowire.MaxValidNumber {\n\t\t\treturn 0, errDecode\n\t\t}\n\t\tb = b[n:]\n\t\terr = errUnknown\n\t\tswitch num {\n\t\tcase genid.MapEntry_Key_field_number:\n\t\t\tkey, n, err = o.unmarshalScalar(b, wtyp, keyField)\n\t\t\tif err != nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\thaveKey = true\n\t\tcase genid.MapEntry_Value_field_number:\n\t\t\tvar v protoreflect.Value\n\t\t\tv, n, err = o.unmarshalScalar(b, wtyp, valField)\n\t\t\tif err != nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tswitch valField.Kind() {\n\t\t\tcase protoreflect.GroupKind, protoreflect.MessageKind:\n\t\t\t\tif err := o.unmarshalMessage(v.Bytes(), val.Message()); err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tval = v\n\t\t\t}\n\t\t\thaveVal = true\n\t\t}\n\t\tif err == errUnknown {\n\t\t\tn = protowire.ConsumeFieldValue(num, wtyp, b)\n\t\t\tif n < 0 {\n\t\t\t\treturn 0, errDecode\n\t\t\t}\n\t\t} else if err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\tb = b[n:]\n\t}\n\t// Every map entry should have entries for key and value, but this is not strictly required.\n\tif !haveKey {\n\t\tkey = keyField.Default()\n\t}\n\tif !haveVal {\n\t\tswitch valField.Kind() {\n\t\tcase protoreflect.GroupKind, protoreflect.MessageKind:\n\t\tdefault:\n\t\t\tval = valField.Default()\n\t\t}\n\t}\n\tmapv.Set(key.MapKey(), val)\n\treturn n, nil\n}\n\n// errUnknown is used internally to indicate fields which should be added\n// to the unknown field set of a message. It is never returned from an exported\n// function.\nvar errUnknown = errors.New(\"BUG: internal error (unknown)\")\n\nvar errDecode = errors.New(\"cannot parse invalid wire-format data\")\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/proto/decode_gen.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-types. DO NOT EDIT.\n\npackage proto\n\nimport (\n\t\"math\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/internal/strs\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\n// unmarshalScalar decodes a value of the given kind.\n//\n// Message values are decoded into a []byte which aliases the input data.\nfunc (o UnmarshalOptions) unmarshalScalar(b []byte, wtyp protowire.Type, fd protoreflect.FieldDescriptor) (val protoreflect.Value, n int, err error) {\n\tswitch fd.Kind() {\n\tcase protoreflect.BoolKind:\n\t\tif wtyp != protowire.VarintType {\n\t\t\treturn val, 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeVarint(b)\n\t\tif n < 0 {\n\t\t\treturn val, 0, errDecode\n\t\t}\n\t\treturn protoreflect.ValueOfBool(protowire.DecodeBool(v)), n, nil\n\tcase protoreflect.EnumKind:\n\t\tif wtyp != protowire.VarintType {\n\t\t\treturn val, 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeVarint(b)\n\t\tif n < 0 {\n\t\t\treturn val, 0, errDecode\n\t\t}\n\t\treturn protoreflect.ValueOfEnum(protoreflect.EnumNumber(v)), n, nil\n\tcase protoreflect.Int32Kind:\n\t\tif wtyp != protowire.VarintType {\n\t\t\treturn val, 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeVarint(b)\n\t\tif n < 0 {\n\t\t\treturn val, 0, errDecode\n\t\t}\n\t\treturn protoreflect.ValueOfInt32(int32(v)), n, nil\n\tcase protoreflect.Sint32Kind:\n\t\tif wtyp != protowire.VarintType {\n\t\t\treturn val, 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeVarint(b)\n\t\tif n < 0 {\n\t\t\treturn val, 0, errDecode\n\t\t}\n\t\treturn protoreflect.ValueOfInt32(int32(protowire.DecodeZigZag(v & math.MaxUint32))), n, nil\n\tcase protoreflect.Uint32Kind:\n\t\tif wtyp != protowire.VarintType {\n\t\t\treturn val, 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeVarint(b)\n\t\tif n < 0 {\n\t\t\treturn val, 0, errDecode\n\t\t}\n\t\treturn protoreflect.ValueOfUint32(uint32(v)), n, nil\n\tcase protoreflect.Int64Kind:\n\t\tif wtyp != protowire.VarintType {\n\t\t\treturn val, 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeVarint(b)\n\t\tif n < 0 {\n\t\t\treturn val, 0, errDecode\n\t\t}\n\t\treturn protoreflect.ValueOfInt64(int64(v)), n, nil\n\tcase protoreflect.Sint64Kind:\n\t\tif wtyp != protowire.VarintType {\n\t\t\treturn val, 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeVarint(b)\n\t\tif n < 0 {\n\t\t\treturn val, 0, errDecode\n\t\t}\n\t\treturn protoreflect.ValueOfInt64(protowire.DecodeZigZag(v)), n, nil\n\tcase protoreflect.Uint64Kind:\n\t\tif wtyp != protowire.VarintType {\n\t\t\treturn val, 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeVarint(b)\n\t\tif n < 0 {\n\t\t\treturn val, 0, errDecode\n\t\t}\n\t\treturn protoreflect.ValueOfUint64(v), n, nil\n\tcase protoreflect.Sfixed32Kind:\n\t\tif wtyp != protowire.Fixed32Type {\n\t\t\treturn val, 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeFixed32(b)\n\t\tif n < 0 {\n\t\t\treturn val, 0, errDecode\n\t\t}\n\t\treturn protoreflect.ValueOfInt32(int32(v)), n, nil\n\tcase protoreflect.Fixed32Kind:\n\t\tif wtyp != protowire.Fixed32Type {\n\t\t\treturn val, 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeFixed32(b)\n\t\tif n < 0 {\n\t\t\treturn val, 0, errDecode\n\t\t}\n\t\treturn protoreflect.ValueOfUint32(uint32(v)), n, nil\n\tcase protoreflect.FloatKind:\n\t\tif wtyp != protowire.Fixed32Type {\n\t\t\treturn val, 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeFixed32(b)\n\t\tif n < 0 {\n\t\t\treturn val, 0, errDecode\n\t\t}\n\t\treturn protoreflect.ValueOfFloat32(math.Float32frombits(uint32(v))), n, nil\n\tcase protoreflect.Sfixed64Kind:\n\t\tif wtyp != protowire.Fixed64Type {\n\t\t\treturn val, 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeFixed64(b)\n\t\tif n < 0 {\n\t\t\treturn val, 0, errDecode\n\t\t}\n\t\treturn protoreflect.ValueOfInt64(int64(v)), n, nil\n\tcase protoreflect.Fixed64Kind:\n\t\tif wtyp != protowire.Fixed64Type {\n\t\t\treturn val, 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeFixed64(b)\n\t\tif n < 0 {\n\t\t\treturn val, 0, errDecode\n\t\t}\n\t\treturn protoreflect.ValueOfUint64(v), n, nil\n\tcase protoreflect.DoubleKind:\n\t\tif wtyp != protowire.Fixed64Type {\n\t\t\treturn val, 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeFixed64(b)\n\t\tif n < 0 {\n\t\t\treturn val, 0, errDecode\n\t\t}\n\t\treturn protoreflect.ValueOfFloat64(math.Float64frombits(v)), n, nil\n\tcase protoreflect.StringKind:\n\t\tif wtyp != protowire.BytesType {\n\t\t\treturn val, 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn val, 0, errDecode\n\t\t}\n\t\tif strs.EnforceUTF8(fd) && !utf8.Valid(v) {\n\t\t\treturn protoreflect.Value{}, 0, errors.InvalidUTF8(string(fd.FullName()))\n\t\t}\n\t\treturn protoreflect.ValueOfString(string(v)), n, nil\n\tcase protoreflect.BytesKind:\n\t\tif wtyp != protowire.BytesType {\n\t\t\treturn val, 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn val, 0, errDecode\n\t\t}\n\t\treturn protoreflect.ValueOfBytes(append(emptyBuf[:], v...)), n, nil\n\tcase protoreflect.MessageKind:\n\t\tif wtyp != protowire.BytesType {\n\t\t\treturn val, 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn val, 0, errDecode\n\t\t}\n\t\treturn protoreflect.ValueOfBytes(v), n, nil\n\tcase protoreflect.GroupKind:\n\t\tif wtyp != protowire.StartGroupType {\n\t\t\treturn val, 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeGroup(fd.Number(), b)\n\t\tif n < 0 {\n\t\t\treturn val, 0, errDecode\n\t\t}\n\t\treturn protoreflect.ValueOfBytes(v), n, nil\n\tdefault:\n\t\treturn val, 0, errUnknown\n\t}\n}\n\nfunc (o UnmarshalOptions) unmarshalList(b []byte, wtyp protowire.Type, list protoreflect.List, fd protoreflect.FieldDescriptor) (n int, err error) {\n\tswitch fd.Kind() {\n\tcase protoreflect.BoolKind:\n\t\tif wtyp == protowire.BytesType {\n\t\t\tbuf, n := protowire.ConsumeBytes(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn 0, errDecode\n\t\t\t}\n\t\t\tfor len(buf) > 0 {\n\t\t\t\tv, n := protowire.ConsumeVarint(buf)\n\t\t\t\tif n < 0 {\n\t\t\t\t\treturn 0, errDecode\n\t\t\t\t}\n\t\t\t\tbuf = buf[n:]\n\t\t\t\tlist.Append(protoreflect.ValueOfBool(protowire.DecodeBool(v)))\n\t\t\t}\n\t\t\treturn n, nil\n\t\t}\n\t\tif wtyp != protowire.VarintType {\n\t\t\treturn 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeVarint(b)\n\t\tif n < 0 {\n\t\t\treturn 0, errDecode\n\t\t}\n\t\tlist.Append(protoreflect.ValueOfBool(protowire.DecodeBool(v)))\n\t\treturn n, nil\n\tcase protoreflect.EnumKind:\n\t\tif wtyp == protowire.BytesType {\n\t\t\tbuf, n := protowire.ConsumeBytes(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn 0, errDecode\n\t\t\t}\n\t\t\tfor len(buf) > 0 {\n\t\t\t\tv, n := protowire.ConsumeVarint(buf)\n\t\t\t\tif n < 0 {\n\t\t\t\t\treturn 0, errDecode\n\t\t\t\t}\n\t\t\t\tbuf = buf[n:]\n\t\t\t\tlist.Append(protoreflect.ValueOfEnum(protoreflect.EnumNumber(v)))\n\t\t\t}\n\t\t\treturn n, nil\n\t\t}\n\t\tif wtyp != protowire.VarintType {\n\t\t\treturn 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeVarint(b)\n\t\tif n < 0 {\n\t\t\treturn 0, errDecode\n\t\t}\n\t\tlist.Append(protoreflect.ValueOfEnum(protoreflect.EnumNumber(v)))\n\t\treturn n, nil\n\tcase protoreflect.Int32Kind:\n\t\tif wtyp == protowire.BytesType {\n\t\t\tbuf, n := protowire.ConsumeBytes(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn 0, errDecode\n\t\t\t}\n\t\t\tfor len(buf) > 0 {\n\t\t\t\tv, n := protowire.ConsumeVarint(buf)\n\t\t\t\tif n < 0 {\n\t\t\t\t\treturn 0, errDecode\n\t\t\t\t}\n\t\t\t\tbuf = buf[n:]\n\t\t\t\tlist.Append(protoreflect.ValueOfInt32(int32(v)))\n\t\t\t}\n\t\t\treturn n, nil\n\t\t}\n\t\tif wtyp != protowire.VarintType {\n\t\t\treturn 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeVarint(b)\n\t\tif n < 0 {\n\t\t\treturn 0, errDecode\n\t\t}\n\t\tlist.Append(protoreflect.ValueOfInt32(int32(v)))\n\t\treturn n, nil\n\tcase protoreflect.Sint32Kind:\n\t\tif wtyp == protowire.BytesType {\n\t\t\tbuf, n := protowire.ConsumeBytes(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn 0, errDecode\n\t\t\t}\n\t\t\tfor len(buf) > 0 {\n\t\t\t\tv, n := protowire.ConsumeVarint(buf)\n\t\t\t\tif n < 0 {\n\t\t\t\t\treturn 0, errDecode\n\t\t\t\t}\n\t\t\t\tbuf = buf[n:]\n\t\t\t\tlist.Append(protoreflect.ValueOfInt32(int32(protowire.DecodeZigZag(v & math.MaxUint32))))\n\t\t\t}\n\t\t\treturn n, nil\n\t\t}\n\t\tif wtyp != protowire.VarintType {\n\t\t\treturn 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeVarint(b)\n\t\tif n < 0 {\n\t\t\treturn 0, errDecode\n\t\t}\n\t\tlist.Append(protoreflect.ValueOfInt32(int32(protowire.DecodeZigZag(v & math.MaxUint32))))\n\t\treturn n, nil\n\tcase protoreflect.Uint32Kind:\n\t\tif wtyp == protowire.BytesType {\n\t\t\tbuf, n := protowire.ConsumeBytes(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn 0, errDecode\n\t\t\t}\n\t\t\tfor len(buf) > 0 {\n\t\t\t\tv, n := protowire.ConsumeVarint(buf)\n\t\t\t\tif n < 0 {\n\t\t\t\t\treturn 0, errDecode\n\t\t\t\t}\n\t\t\t\tbuf = buf[n:]\n\t\t\t\tlist.Append(protoreflect.ValueOfUint32(uint32(v)))\n\t\t\t}\n\t\t\treturn n, nil\n\t\t}\n\t\tif wtyp != protowire.VarintType {\n\t\t\treturn 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeVarint(b)\n\t\tif n < 0 {\n\t\t\treturn 0, errDecode\n\t\t}\n\t\tlist.Append(protoreflect.ValueOfUint32(uint32(v)))\n\t\treturn n, nil\n\tcase protoreflect.Int64Kind:\n\t\tif wtyp == protowire.BytesType {\n\t\t\tbuf, n := protowire.ConsumeBytes(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn 0, errDecode\n\t\t\t}\n\t\t\tfor len(buf) > 0 {\n\t\t\t\tv, n := protowire.ConsumeVarint(buf)\n\t\t\t\tif n < 0 {\n\t\t\t\t\treturn 0, errDecode\n\t\t\t\t}\n\t\t\t\tbuf = buf[n:]\n\t\t\t\tlist.Append(protoreflect.ValueOfInt64(int64(v)))\n\t\t\t}\n\t\t\treturn n, nil\n\t\t}\n\t\tif wtyp != protowire.VarintType {\n\t\t\treturn 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeVarint(b)\n\t\tif n < 0 {\n\t\t\treturn 0, errDecode\n\t\t}\n\t\tlist.Append(protoreflect.ValueOfInt64(int64(v)))\n\t\treturn n, nil\n\tcase protoreflect.Sint64Kind:\n\t\tif wtyp == protowire.BytesType {\n\t\t\tbuf, n := protowire.ConsumeBytes(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn 0, errDecode\n\t\t\t}\n\t\t\tfor len(buf) > 0 {\n\t\t\t\tv, n := protowire.ConsumeVarint(buf)\n\t\t\t\tif n < 0 {\n\t\t\t\t\treturn 0, errDecode\n\t\t\t\t}\n\t\t\t\tbuf = buf[n:]\n\t\t\t\tlist.Append(protoreflect.ValueOfInt64(protowire.DecodeZigZag(v)))\n\t\t\t}\n\t\t\treturn n, nil\n\t\t}\n\t\tif wtyp != protowire.VarintType {\n\t\t\treturn 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeVarint(b)\n\t\tif n < 0 {\n\t\t\treturn 0, errDecode\n\t\t}\n\t\tlist.Append(protoreflect.ValueOfInt64(protowire.DecodeZigZag(v)))\n\t\treturn n, nil\n\tcase protoreflect.Uint64Kind:\n\t\tif wtyp == protowire.BytesType {\n\t\t\tbuf, n := protowire.ConsumeBytes(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn 0, errDecode\n\t\t\t}\n\t\t\tfor len(buf) > 0 {\n\t\t\t\tv, n := protowire.ConsumeVarint(buf)\n\t\t\t\tif n < 0 {\n\t\t\t\t\treturn 0, errDecode\n\t\t\t\t}\n\t\t\t\tbuf = buf[n:]\n\t\t\t\tlist.Append(protoreflect.ValueOfUint64(v))\n\t\t\t}\n\t\t\treturn n, nil\n\t\t}\n\t\tif wtyp != protowire.VarintType {\n\t\t\treturn 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeVarint(b)\n\t\tif n < 0 {\n\t\t\treturn 0, errDecode\n\t\t}\n\t\tlist.Append(protoreflect.ValueOfUint64(v))\n\t\treturn n, nil\n\tcase protoreflect.Sfixed32Kind:\n\t\tif wtyp == protowire.BytesType {\n\t\t\tbuf, n := protowire.ConsumeBytes(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn 0, errDecode\n\t\t\t}\n\t\t\tfor len(buf) > 0 {\n\t\t\t\tv, n := protowire.ConsumeFixed32(buf)\n\t\t\t\tif n < 0 {\n\t\t\t\t\treturn 0, errDecode\n\t\t\t\t}\n\t\t\t\tbuf = buf[n:]\n\t\t\t\tlist.Append(protoreflect.ValueOfInt32(int32(v)))\n\t\t\t}\n\t\t\treturn n, nil\n\t\t}\n\t\tif wtyp != protowire.Fixed32Type {\n\t\t\treturn 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeFixed32(b)\n\t\tif n < 0 {\n\t\t\treturn 0, errDecode\n\t\t}\n\t\tlist.Append(protoreflect.ValueOfInt32(int32(v)))\n\t\treturn n, nil\n\tcase protoreflect.Fixed32Kind:\n\t\tif wtyp == protowire.BytesType {\n\t\t\tbuf, n := protowire.ConsumeBytes(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn 0, errDecode\n\t\t\t}\n\t\t\tfor len(buf) > 0 {\n\t\t\t\tv, n := protowire.ConsumeFixed32(buf)\n\t\t\t\tif n < 0 {\n\t\t\t\t\treturn 0, errDecode\n\t\t\t\t}\n\t\t\t\tbuf = buf[n:]\n\t\t\t\tlist.Append(protoreflect.ValueOfUint32(uint32(v)))\n\t\t\t}\n\t\t\treturn n, nil\n\t\t}\n\t\tif wtyp != protowire.Fixed32Type {\n\t\t\treturn 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeFixed32(b)\n\t\tif n < 0 {\n\t\t\treturn 0, errDecode\n\t\t}\n\t\tlist.Append(protoreflect.ValueOfUint32(uint32(v)))\n\t\treturn n, nil\n\tcase protoreflect.FloatKind:\n\t\tif wtyp == protowire.BytesType {\n\t\t\tbuf, n := protowire.ConsumeBytes(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn 0, errDecode\n\t\t\t}\n\t\t\tfor len(buf) > 0 {\n\t\t\t\tv, n := protowire.ConsumeFixed32(buf)\n\t\t\t\tif n < 0 {\n\t\t\t\t\treturn 0, errDecode\n\t\t\t\t}\n\t\t\t\tbuf = buf[n:]\n\t\t\t\tlist.Append(protoreflect.ValueOfFloat32(math.Float32frombits(uint32(v))))\n\t\t\t}\n\t\t\treturn n, nil\n\t\t}\n\t\tif wtyp != protowire.Fixed32Type {\n\t\t\treturn 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeFixed32(b)\n\t\tif n < 0 {\n\t\t\treturn 0, errDecode\n\t\t}\n\t\tlist.Append(protoreflect.ValueOfFloat32(math.Float32frombits(uint32(v))))\n\t\treturn n, nil\n\tcase protoreflect.Sfixed64Kind:\n\t\tif wtyp == protowire.BytesType {\n\t\t\tbuf, n := protowire.ConsumeBytes(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn 0, errDecode\n\t\t\t}\n\t\t\tfor len(buf) > 0 {\n\t\t\t\tv, n := protowire.ConsumeFixed64(buf)\n\t\t\t\tif n < 0 {\n\t\t\t\t\treturn 0, errDecode\n\t\t\t\t}\n\t\t\t\tbuf = buf[n:]\n\t\t\t\tlist.Append(protoreflect.ValueOfInt64(int64(v)))\n\t\t\t}\n\t\t\treturn n, nil\n\t\t}\n\t\tif wtyp != protowire.Fixed64Type {\n\t\t\treturn 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeFixed64(b)\n\t\tif n < 0 {\n\t\t\treturn 0, errDecode\n\t\t}\n\t\tlist.Append(protoreflect.ValueOfInt64(int64(v)))\n\t\treturn n, nil\n\tcase protoreflect.Fixed64Kind:\n\t\tif wtyp == protowire.BytesType {\n\t\t\tbuf, n := protowire.ConsumeBytes(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn 0, errDecode\n\t\t\t}\n\t\t\tfor len(buf) > 0 {\n\t\t\t\tv, n := protowire.ConsumeFixed64(buf)\n\t\t\t\tif n < 0 {\n\t\t\t\t\treturn 0, errDecode\n\t\t\t\t}\n\t\t\t\tbuf = buf[n:]\n\t\t\t\tlist.Append(protoreflect.ValueOfUint64(v))\n\t\t\t}\n\t\t\treturn n, nil\n\t\t}\n\t\tif wtyp != protowire.Fixed64Type {\n\t\t\treturn 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeFixed64(b)\n\t\tif n < 0 {\n\t\t\treturn 0, errDecode\n\t\t}\n\t\tlist.Append(protoreflect.ValueOfUint64(v))\n\t\treturn n, nil\n\tcase protoreflect.DoubleKind:\n\t\tif wtyp == protowire.BytesType {\n\t\t\tbuf, n := protowire.ConsumeBytes(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn 0, errDecode\n\t\t\t}\n\t\t\tfor len(buf) > 0 {\n\t\t\t\tv, n := protowire.ConsumeFixed64(buf)\n\t\t\t\tif n < 0 {\n\t\t\t\t\treturn 0, errDecode\n\t\t\t\t}\n\t\t\t\tbuf = buf[n:]\n\t\t\t\tlist.Append(protoreflect.ValueOfFloat64(math.Float64frombits(v)))\n\t\t\t}\n\t\t\treturn n, nil\n\t\t}\n\t\tif wtyp != protowire.Fixed64Type {\n\t\t\treturn 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeFixed64(b)\n\t\tif n < 0 {\n\t\t\treturn 0, errDecode\n\t\t}\n\t\tlist.Append(protoreflect.ValueOfFloat64(math.Float64frombits(v)))\n\t\treturn n, nil\n\tcase protoreflect.StringKind:\n\t\tif wtyp != protowire.BytesType {\n\t\t\treturn 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn 0, errDecode\n\t\t}\n\t\tif strs.EnforceUTF8(fd) && !utf8.Valid(v) {\n\t\t\treturn 0, errors.InvalidUTF8(string(fd.FullName()))\n\t\t}\n\t\tlist.Append(protoreflect.ValueOfString(string(v)))\n\t\treturn n, nil\n\tcase protoreflect.BytesKind:\n\t\tif wtyp != protowire.BytesType {\n\t\t\treturn 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn 0, errDecode\n\t\t}\n\t\tlist.Append(protoreflect.ValueOfBytes(append(emptyBuf[:], v...)))\n\t\treturn n, nil\n\tcase protoreflect.MessageKind:\n\t\tif wtyp != protowire.BytesType {\n\t\t\treturn 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn 0, errDecode\n\t\t}\n\t\tm := list.NewElement()\n\t\tif err := o.unmarshalMessage(v, m.Message()); err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\tlist.Append(m)\n\t\treturn n, nil\n\tcase protoreflect.GroupKind:\n\t\tif wtyp != protowire.StartGroupType {\n\t\t\treturn 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeGroup(fd.Number(), b)\n\t\tif n < 0 {\n\t\t\treturn 0, errDecode\n\t\t}\n\t\tm := list.NewElement()\n\t\tif err := o.unmarshalMessage(v, m.Message()); err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\tlist.Append(m)\n\t\treturn n, nil\n\tdefault:\n\t\treturn 0, errUnknown\n\t}\n}\n\n// We append to an empty array rather than a nil []byte to get non-nil zero-length byte slices.\nvar emptyBuf [0]byte\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/proto/doc.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package proto provides functions operating on protocol buffer messages.\n//\n// For documentation on protocol buffers in general, see:\n// https://protobuf.dev.\n//\n// For a tutorial on using protocol buffers with Go, see:\n// https://protobuf.dev/getting-started/gotutorial.\n//\n// For a guide to generated Go protocol buffer code, see:\n// https://protobuf.dev/reference/go/go-generated.\n//\n// # Binary serialization\n//\n// This package contains functions to convert to and from the wire format,\n// an efficient binary serialization of protocol buffers.\n//\n//   - [Size] reports the size of a message in the wire format.\n//\n//   - [Marshal] converts a message to the wire format.\n//     The [MarshalOptions] type provides more control over wire marshaling.\n//\n//   - [Unmarshal] converts a message from the wire format.\n//     The [UnmarshalOptions] type provides more control over wire unmarshaling.\n//\n// # Basic message operations\n//\n//   - [Clone] makes a deep copy of a message.\n//\n//   - [Merge] merges the content of a message into another.\n//\n//   - [Equal] compares two messages. For more control over comparisons\n//     and detailed reporting of differences, see package\n//     [google.golang.org/protobuf/testing/protocmp].\n//\n//   - [Reset] clears the content of a message.\n//\n//   - [CheckInitialized] reports whether all required fields in a message are set.\n//\n// # Optional scalar constructors\n//\n// The API for some generated messages represents optional scalar fields\n// as pointers to a value. For example, an optional string field has the\n// Go type *string.\n//\n//   - [Bool], [Int32], [Int64], [Uint32], [Uint64], [Float32], [Float64], and [String]\n//     take a value and return a pointer to a new instance of it,\n//     to simplify construction of optional field values.\n//\n// Generated enum types usually have an Enum method which performs the\n// same operation.\n//\n// Optional scalar fields are only supported in proto2.\n//\n// # Extension accessors\n//\n//   - [HasExtension], [GetExtension], [SetExtension], and [ClearExtension]\n//     access extension field values in a protocol buffer message.\n//\n// Extension fields are only supported in proto2.\n//\n// # Related packages\n//\n//   - Package [google.golang.org/protobuf/encoding/protojson] converts messages to\n//     and from JSON.\n//\n//   - Package [google.golang.org/protobuf/encoding/prototext] converts messages to\n//     and from the text format.\n//\n//   - Package [google.golang.org/protobuf/reflect/protoreflect] provides a\n//     reflection interface for protocol buffer data types.\n//\n//   - Package [google.golang.org/protobuf/testing/protocmp] provides features\n//     to compare protocol buffer messages with the [github.com/google/go-cmp/cmp]\n//     package.\n//\n//   - Package [google.golang.org/protobuf/types/dynamicpb] provides a dynamic\n//     message type, suitable for working with messages where the protocol buffer\n//     type is only known at runtime.\n//\n// This module contains additional packages for more specialized use cases.\n// Consult the individual package documentation for details.\npackage proto\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/proto/encode.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage proto\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/encoding/messageset\"\n\t\"google.golang.org/protobuf/internal/order\"\n\t\"google.golang.org/protobuf/internal/pragma\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n\n\tprotoerrors \"google.golang.org/protobuf/internal/errors\"\n)\n\n// MarshalOptions configures the marshaler.\n//\n// Example usage:\n//\n//\tb, err := MarshalOptions{Deterministic: true}.Marshal(m)\ntype MarshalOptions struct {\n\tpragma.NoUnkeyedLiterals\n\n\t// AllowPartial allows messages that have missing required fields to marshal\n\t// without returning an error. If AllowPartial is false (the default),\n\t// Marshal will return an error if there are any missing required fields.\n\tAllowPartial bool\n\n\t// Deterministic controls whether the same message will always be\n\t// serialized to the same bytes within the same binary.\n\t//\n\t// Setting this option guarantees that repeated serialization of\n\t// the same message will return the same bytes, and that different\n\t// processes of the same binary (which may be executing on different\n\t// machines) will serialize equal messages to the same bytes.\n\t// It has no effect on the resulting size of the encoded message compared\n\t// to a non-deterministic marshal.\n\t//\n\t// Note that the deterministic serialization is NOT canonical across\n\t// languages. It is not guaranteed to remain stable over time. It is\n\t// unstable across different builds with schema changes due to unknown\n\t// fields. Users who need canonical serialization (e.g., persistent\n\t// storage in a canonical form, fingerprinting, etc.) must define\n\t// their own canonicalization specification and implement their own\n\t// serializer rather than relying on this API.\n\t//\n\t// If deterministic serialization is requested, map entries will be\n\t// sorted by keys in lexographical order. This is an implementation\n\t// detail and subject to change.\n\tDeterministic bool\n\n\t// UseCachedSize indicates that the result of a previous Size call\n\t// may be reused.\n\t//\n\t// Setting this option asserts that:\n\t//\n\t// 1. Size has previously been called on this message with identical\n\t// options (except for UseCachedSize itself).\n\t//\n\t// 2. The message and all its submessages have not changed in any\n\t// way since the Size call. For lazily decoded messages, accessing\n\t// a message results in decoding the message, which is a change.\n\t//\n\t// If either of these invariants is violated,\n\t// the results are undefined and may include panics or corrupted output.\n\t//\n\t// Implementations MAY take this option into account to provide\n\t// better performance, but there is no guarantee that they will do so.\n\t// There is absolutely no guarantee that Size followed by Marshal with\n\t// UseCachedSize set will perform equivalently to Marshal alone.\n\tUseCachedSize bool\n}\n\n// flags turns the specified MarshalOptions (user-facing) into\n// protoiface.MarshalInputFlags (used internally by the marshaler).\n//\n// See impl.marshalOptions.Options for the inverse operation.\nfunc (o MarshalOptions) flags() protoiface.MarshalInputFlags {\n\tvar flags protoiface.MarshalInputFlags\n\n\t// Note: o.AllowPartial is always forced to true by MarshalOptions.marshal,\n\t// which is why it is not a part of MarshalInputFlags.\n\n\tif o.Deterministic {\n\t\tflags |= protoiface.MarshalDeterministic\n\t}\n\n\tif o.UseCachedSize {\n\t\tflags |= protoiface.MarshalUseCachedSize\n\t}\n\n\treturn flags\n}\n\n// Marshal returns the wire-format encoding of m.\n//\n// This is the most common entry point for encoding a Protobuf message.\n//\n// See the [MarshalOptions] type if you need more control.\nfunc Marshal(m Message) ([]byte, error) {\n\t// Treat nil message interface as an empty message; nothing to output.\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\n\tout, err := MarshalOptions{}.marshal(nil, m.ProtoReflect())\n\tif len(out.Buf) == 0 && err == nil {\n\t\tout.Buf = emptyBytesForMessage(m)\n\t}\n\treturn out.Buf, err\n}\n\n// Marshal returns the wire-format encoding of m.\nfunc (o MarshalOptions) Marshal(m Message) ([]byte, error) {\n\t// Treat nil message interface as an empty message; nothing to output.\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\n\tout, err := o.marshal(nil, m.ProtoReflect())\n\tif len(out.Buf) == 0 && err == nil {\n\t\tout.Buf = emptyBytesForMessage(m)\n\t}\n\treturn out.Buf, err\n}\n\n// emptyBytesForMessage returns a nil buffer if and only if m is invalid,\n// otherwise it returns a non-nil empty buffer.\n//\n// This is to assist the edge-case where user-code does the following:\n//\n//\tm1.OptionalBytes, _ = proto.Marshal(m2)\n//\n// where they expect the proto2 \"optional_bytes\" field to be populated\n// if any only if m2 is a valid message.\nfunc emptyBytesForMessage(m Message) []byte {\n\tif m == nil || !m.ProtoReflect().IsValid() {\n\t\treturn nil\n\t}\n\treturn emptyBuf[:]\n}\n\n// MarshalAppend appends the wire-format encoding of m to b,\n// returning the result.\n//\n// This is a less common entry point than [Marshal], which is only needed if you\n// need to supply your own buffers for performance reasons.\nfunc (o MarshalOptions) MarshalAppend(b []byte, m Message) ([]byte, error) {\n\t// Treat nil message interface as an empty message; nothing to append.\n\tif m == nil {\n\t\treturn b, nil\n\t}\n\n\tout, err := o.marshal(b, m.ProtoReflect())\n\treturn out.Buf, err\n}\n\n// MarshalState returns the wire-format encoding of a message.\n//\n// This method permits fine-grained control over the marshaler.\n// Most users should use [Marshal] instead.\nfunc (o MarshalOptions) MarshalState(in protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\treturn o.marshal(in.Buf, in.Message)\n}\n\n// marshal is a centralized function that all marshal operations go through.\n// For profiling purposes, avoid changing the name of this function or\n// introducing other code paths for marshal that do not go through this.\nfunc (o MarshalOptions) marshal(b []byte, m protoreflect.Message) (out protoiface.MarshalOutput, err error) {\n\tallowPartial := o.AllowPartial\n\to.AllowPartial = true\n\tif methods := protoMethods(m); methods != nil && methods.Marshal != nil &&\n\t\t!(o.Deterministic && methods.Flags&protoiface.SupportMarshalDeterministic == 0) {\n\t\tin := protoiface.MarshalInput{\n\t\t\tMessage: m,\n\t\t\tBuf:     b,\n\t\t\tFlags:   o.flags(),\n\t\t}\n\t\tif methods.Size != nil {\n\t\t\tsout := methods.Size(protoiface.SizeInput{\n\t\t\t\tMessage: m,\n\t\t\t\tFlags:   in.Flags,\n\t\t\t})\n\t\t\tif cap(b) < len(b)+sout.Size {\n\t\t\t\tin.Buf = make([]byte, len(b), growcap(cap(b), len(b)+sout.Size))\n\t\t\t\tcopy(in.Buf, b)\n\t\t\t}\n\t\t\tin.Flags |= protoiface.MarshalUseCachedSize\n\t\t}\n\t\tout, err = methods.Marshal(in)\n\t} else {\n\t\tout.Buf, err = o.marshalMessageSlow(b, m)\n\t}\n\tif err != nil {\n\t\tvar mismatch *protoerrors.SizeMismatchError\n\t\tif errors.As(err, &mismatch) {\n\t\t\treturn out, fmt.Errorf(\"marshaling %s: %v\", string(m.Descriptor().FullName()), err)\n\t\t}\n\t\treturn out, err\n\t}\n\tif allowPartial {\n\t\treturn out, nil\n\t}\n\treturn out, checkInitialized(m)\n}\n\nfunc (o MarshalOptions) marshalMessage(b []byte, m protoreflect.Message) ([]byte, error) {\n\tout, err := o.marshal(b, m)\n\treturn out.Buf, err\n}\n\n// growcap scales up the capacity of a slice.\n//\n// Given a slice with a current capacity of oldcap and a desired\n// capacity of wantcap, growcap returns a new capacity >= wantcap.\n//\n// The algorithm is mostly identical to the one used by append as of Go 1.14.\nfunc growcap(oldcap, wantcap int) (newcap int) {\n\tif wantcap > oldcap*2 {\n\t\tnewcap = wantcap\n\t} else if oldcap < 1024 {\n\t\t// The Go 1.14 runtime takes this case when len(s) < 1024,\n\t\t// not when cap(s) < 1024. The difference doesn't seem\n\t\t// significant here.\n\t\tnewcap = oldcap * 2\n\t} else {\n\t\tnewcap = oldcap\n\t\tfor 0 < newcap && newcap < wantcap {\n\t\t\tnewcap += newcap / 4\n\t\t}\n\t\tif newcap <= 0 {\n\t\t\tnewcap = wantcap\n\t\t}\n\t}\n\treturn newcap\n}\n\nfunc (o MarshalOptions) marshalMessageSlow(b []byte, m protoreflect.Message) ([]byte, error) {\n\tif messageset.IsMessageSet(m.Descriptor()) {\n\t\treturn o.marshalMessageSet(b, m)\n\t}\n\tfieldOrder := order.AnyFieldOrder\n\tif o.Deterministic {\n\t\t// TODO: This should use a more natural ordering like NumberFieldOrder,\n\t\t// but doing so breaks golden tests that make invalid assumption about\n\t\t// output stability of this implementation.\n\t\tfieldOrder = order.LegacyFieldOrder\n\t}\n\tvar err error\n\torder.RangeFields(m, fieldOrder, func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool {\n\t\tb, err = o.marshalField(b, fd, v)\n\t\treturn err == nil\n\t})\n\tif err != nil {\n\t\treturn b, err\n\t}\n\tb = append(b, m.GetUnknown()...)\n\treturn b, nil\n}\n\nfunc (o MarshalOptions) marshalField(b []byte, fd protoreflect.FieldDescriptor, value protoreflect.Value) ([]byte, error) {\n\tswitch {\n\tcase fd.IsList():\n\t\treturn o.marshalList(b, fd, value.List())\n\tcase fd.IsMap():\n\t\treturn o.marshalMap(b, fd, value.Map())\n\tdefault:\n\t\tb = protowire.AppendTag(b, fd.Number(), wireTypes[fd.Kind()])\n\t\treturn o.marshalSingular(b, fd, value)\n\t}\n}\n\nfunc (o MarshalOptions) marshalList(b []byte, fd protoreflect.FieldDescriptor, list protoreflect.List) ([]byte, error) {\n\tif fd.IsPacked() && list.Len() > 0 {\n\t\tb = protowire.AppendTag(b, fd.Number(), protowire.BytesType)\n\t\tb, pos := appendSpeculativeLength(b)\n\t\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\t\tvar err error\n\t\t\tb, err = o.marshalSingular(b, fd, list.Get(i))\n\t\t\tif err != nil {\n\t\t\t\treturn b, err\n\t\t\t}\n\t\t}\n\t\tb = finishSpeculativeLength(b, pos)\n\t\treturn b, nil\n\t}\n\n\tkind := fd.Kind()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tvar err error\n\t\tb = protowire.AppendTag(b, fd.Number(), wireTypes[kind])\n\t\tb, err = o.marshalSingular(b, fd, list.Get(i))\n\t\tif err != nil {\n\t\t\treturn b, err\n\t\t}\n\t}\n\treturn b, nil\n}\n\nfunc (o MarshalOptions) marshalMap(b []byte, fd protoreflect.FieldDescriptor, mapv protoreflect.Map) ([]byte, error) {\n\tkeyf := fd.MapKey()\n\tvalf := fd.MapValue()\n\tkeyOrder := order.AnyKeyOrder\n\tif o.Deterministic {\n\t\tkeyOrder = order.GenericKeyOrder\n\t}\n\tvar err error\n\torder.RangeEntries(mapv, keyOrder, func(key protoreflect.MapKey, value protoreflect.Value) bool {\n\t\tb = protowire.AppendTag(b, fd.Number(), protowire.BytesType)\n\t\tvar pos int\n\t\tb, pos = appendSpeculativeLength(b)\n\n\t\tb, err = o.marshalField(b, keyf, key.Value())\n\t\tif err != nil {\n\t\t\treturn false\n\t\t}\n\t\tb, err = o.marshalField(b, valf, value)\n\t\tif err != nil {\n\t\t\treturn false\n\t\t}\n\t\tb = finishSpeculativeLength(b, pos)\n\t\treturn true\n\t})\n\treturn b, err\n}\n\n// When encoding length-prefixed fields, we speculatively set aside some number of bytes\n// for the length, encode the data, and then encode the length (shifting the data if necessary\n// to make room).\nconst speculativeLength = 1\n\nfunc appendSpeculativeLength(b []byte) ([]byte, int) {\n\tpos := len(b)\n\tb = append(b, \"\\x00\\x00\\x00\\x00\"[:speculativeLength]...)\n\treturn b, pos\n}\n\nfunc finishSpeculativeLength(b []byte, pos int) []byte {\n\tmlen := len(b) - pos - speculativeLength\n\tmsiz := protowire.SizeVarint(uint64(mlen))\n\tif msiz != speculativeLength {\n\t\tfor i := 0; i < msiz-speculativeLength; i++ {\n\t\t\tb = append(b, 0)\n\t\t}\n\t\tcopy(b[pos+msiz:], b[pos+speculativeLength:])\n\t\tb = b[:pos+msiz+mlen]\n\t}\n\tprotowire.AppendVarint(b[:pos], uint64(mlen))\n\treturn b\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/proto/encode_gen.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-types. DO NOT EDIT.\n\npackage proto\n\nimport (\n\t\"math\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/internal/strs\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nvar wireTypes = map[protoreflect.Kind]protowire.Type{\n\tprotoreflect.BoolKind:     protowire.VarintType,\n\tprotoreflect.EnumKind:     protowire.VarintType,\n\tprotoreflect.Int32Kind:    protowire.VarintType,\n\tprotoreflect.Sint32Kind:   protowire.VarintType,\n\tprotoreflect.Uint32Kind:   protowire.VarintType,\n\tprotoreflect.Int64Kind:    protowire.VarintType,\n\tprotoreflect.Sint64Kind:   protowire.VarintType,\n\tprotoreflect.Uint64Kind:   protowire.VarintType,\n\tprotoreflect.Sfixed32Kind: protowire.Fixed32Type,\n\tprotoreflect.Fixed32Kind:  protowire.Fixed32Type,\n\tprotoreflect.FloatKind:    protowire.Fixed32Type,\n\tprotoreflect.Sfixed64Kind: protowire.Fixed64Type,\n\tprotoreflect.Fixed64Kind:  protowire.Fixed64Type,\n\tprotoreflect.DoubleKind:   protowire.Fixed64Type,\n\tprotoreflect.StringKind:   protowire.BytesType,\n\tprotoreflect.BytesKind:    protowire.BytesType,\n\tprotoreflect.MessageKind:  protowire.BytesType,\n\tprotoreflect.GroupKind:    protowire.StartGroupType,\n}\n\nfunc (o MarshalOptions) marshalSingular(b []byte, fd protoreflect.FieldDescriptor, v protoreflect.Value) ([]byte, error) {\n\tswitch fd.Kind() {\n\tcase protoreflect.BoolKind:\n\t\tb = protowire.AppendVarint(b, protowire.EncodeBool(v.Bool()))\n\tcase protoreflect.EnumKind:\n\t\tb = protowire.AppendVarint(b, uint64(v.Enum()))\n\tcase protoreflect.Int32Kind:\n\t\tb = protowire.AppendVarint(b, uint64(int32(v.Int())))\n\tcase protoreflect.Sint32Kind:\n\t\tb = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(int32(v.Int()))))\n\tcase protoreflect.Uint32Kind:\n\t\tb = protowire.AppendVarint(b, uint64(uint32(v.Uint())))\n\tcase protoreflect.Int64Kind:\n\t\tb = protowire.AppendVarint(b, uint64(v.Int()))\n\tcase protoreflect.Sint64Kind:\n\t\tb = protowire.AppendVarint(b, protowire.EncodeZigZag(v.Int()))\n\tcase protoreflect.Uint64Kind:\n\t\tb = protowire.AppendVarint(b, v.Uint())\n\tcase protoreflect.Sfixed32Kind:\n\t\tb = protowire.AppendFixed32(b, uint32(v.Int()))\n\tcase protoreflect.Fixed32Kind:\n\t\tb = protowire.AppendFixed32(b, uint32(v.Uint()))\n\tcase protoreflect.FloatKind:\n\t\tb = protowire.AppendFixed32(b, math.Float32bits(float32(v.Float())))\n\tcase protoreflect.Sfixed64Kind:\n\t\tb = protowire.AppendFixed64(b, uint64(v.Int()))\n\tcase protoreflect.Fixed64Kind:\n\t\tb = protowire.AppendFixed64(b, v.Uint())\n\tcase protoreflect.DoubleKind:\n\t\tb = protowire.AppendFixed64(b, math.Float64bits(v.Float()))\n\tcase protoreflect.StringKind:\n\t\tif strs.EnforceUTF8(fd) && !utf8.ValidString(v.String()) {\n\t\t\treturn b, errors.InvalidUTF8(string(fd.FullName()))\n\t\t}\n\t\tb = protowire.AppendString(b, v.String())\n\tcase protoreflect.BytesKind:\n\t\tb = protowire.AppendBytes(b, v.Bytes())\n\tcase protoreflect.MessageKind:\n\t\tvar pos int\n\t\tvar err error\n\t\tb, pos = appendSpeculativeLength(b)\n\t\tb, err = o.marshalMessage(b, v.Message())\n\t\tif err != nil {\n\t\t\treturn b, err\n\t\t}\n\t\tb = finishSpeculativeLength(b, pos)\n\tcase protoreflect.GroupKind:\n\t\tvar err error\n\t\tb, err = o.marshalMessage(b, v.Message())\n\t\tif err != nil {\n\t\t\treturn b, err\n\t\t}\n\t\tb = protowire.AppendVarint(b, protowire.EncodeTag(fd.Number(), protowire.EndGroupType))\n\tdefault:\n\t\treturn b, errors.New(\"invalid kind %v\", fd.Kind())\n\t}\n\treturn b, nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/proto/equal.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage proto\n\nimport (\n\t\"reflect\"\n\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n)\n\n// Equal reports whether two messages are equal,\n// by recursively comparing the fields of the message.\n//\n//   - Bytes fields are equal if they contain identical bytes.\n//     Empty bytes (regardless of nil-ness) are considered equal.\n//\n//   - Floating-point fields are equal if they contain the same value.\n//     Unlike the == operator, a NaN is equal to another NaN.\n//\n//   - Other scalar fields are equal if they contain the same value.\n//\n//   - Message fields are equal if they have\n//     the same set of populated known and extension field values, and\n//     the same set of unknown fields values.\n//\n//   - Lists are equal if they are the same length and\n//     each corresponding element is equal.\n//\n//   - Maps are equal if they have the same set of keys and\n//     the corresponding value for each key is equal.\n//\n// An invalid message is not equal to a valid message.\n// An invalid message is only equal to another invalid message of the\n// same type. An invalid message often corresponds to a nil pointer\n// of the concrete message type. For example, (*pb.M)(nil) is not equal\n// to &pb.M{}.\n// If two valid messages marshal to the same bytes under deterministic\n// serialization, then Equal is guaranteed to report true.\nfunc Equal(x, y Message) bool {\n\tif x == nil || y == nil {\n\t\treturn x == nil && y == nil\n\t}\n\tif reflect.TypeOf(x).Kind() == reflect.Ptr && x == y {\n\t\t// Avoid an expensive comparison if both inputs are identical pointers.\n\t\treturn true\n\t}\n\tmx := x.ProtoReflect()\n\tmy := y.ProtoReflect()\n\tif mx.IsValid() != my.IsValid() {\n\t\treturn false\n\t}\n\n\t// Only one of the messages needs to implement the fast-path for it to work.\n\tpmx := protoMethods(mx)\n\tpmy := protoMethods(my)\n\tif pmx != nil && pmy != nil && pmx.Equal != nil && pmy.Equal != nil {\n\t\treturn pmx.Equal(protoiface.EqualInput{MessageA: mx, MessageB: my}).Equal\n\t}\n\n\tvx := protoreflect.ValueOfMessage(mx)\n\tvy := protoreflect.ValueOfMessage(my)\n\treturn vx.Equal(vy)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/proto/extension.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage proto\n\nimport (\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\n// HasExtension reports whether an extension field is populated.\n// It returns false if m is invalid or if xt does not extend m.\nfunc HasExtension(m Message, xt protoreflect.ExtensionType) bool {\n\t// Treat nil message interface or descriptor as an empty message; no populated\n\t// fields.\n\tif m == nil || xt == nil {\n\t\treturn false\n\t}\n\n\t// As a special-case, we reports invalid or mismatching descriptors\n\t// as always not being populated (since they aren't).\n\tmr := m.ProtoReflect()\n\txd := xt.TypeDescriptor()\n\tif mr.Descriptor() != xd.ContainingMessage() {\n\t\treturn false\n\t}\n\n\treturn mr.Has(xd)\n}\n\n// ClearExtension clears an extension field such that subsequent\n// [HasExtension] calls return false.\n// It panics if m is invalid or if xt does not extend m.\nfunc ClearExtension(m Message, xt protoreflect.ExtensionType) {\n\tm.ProtoReflect().Clear(xt.TypeDescriptor())\n}\n\n// GetExtension retrieves the value for an extension field.\n// If the field is unpopulated, it returns the default value for\n// scalars and an immutable, empty value for lists or messages.\n// It panics if xt does not extend m.\n//\n// The type of the value is dependent on the field type of the extension.\n// For extensions generated by protoc-gen-go, the Go type is as follows:\n//\n//\t╔═══════════════════╤═════════════════════════╗\n//\t║ Go type           │ Protobuf kind           ║\n//\t╠═══════════════════╪═════════════════════════╣\n//\t║ bool              │ bool                    ║\n//\t║ int32             │ int32, sint32, sfixed32 ║\n//\t║ int64             │ int64, sint64, sfixed64 ║\n//\t║ uint32            │ uint32, fixed32         ║\n//\t║ uint64            │ uint64, fixed64         ║\n//\t║ float32           │ float                   ║\n//\t║ float64           │ double                  ║\n//\t║ string            │ string                  ║\n//\t║ []byte            │ bytes                   ║\n//\t║ protoreflect.Enum │ enum                    ║\n//\t║ proto.Message     │ message, group          ║\n//\t╚═══════════════════╧═════════════════════════╝\n//\n// The protoreflect.Enum and proto.Message types are the concrete Go type\n// associated with the named enum or message. Repeated fields are represented\n// using a Go slice of the base element type.\n//\n// If a generated extension descriptor variable is directly passed to\n// GetExtension, then the call should be followed immediately by a\n// type assertion to the expected output value. For example:\n//\n//\tmm := proto.GetExtension(m, foopb.E_MyExtension).(*foopb.MyMessage)\n//\n// This pattern enables static analysis tools to verify that the asserted type\n// matches the Go type associated with the extension field and\n// also enables a possible future migration to a type-safe extension API.\n//\n// Since singular messages are the most common extension type, the pattern of\n// calling HasExtension followed by GetExtension may be simplified to:\n//\n//\tif mm := proto.GetExtension(m, foopb.E_MyExtension).(*foopb.MyMessage); mm != nil {\n//\t    ... // make use of mm\n//\t}\n//\n// The mm variable is non-nil if and only if HasExtension reports true.\nfunc GetExtension(m Message, xt protoreflect.ExtensionType) any {\n\t// Treat nil message interface as an empty message; return the default.\n\tif m == nil {\n\t\treturn xt.InterfaceOf(xt.Zero())\n\t}\n\n\treturn xt.InterfaceOf(m.ProtoReflect().Get(xt.TypeDescriptor()))\n}\n\n// SetExtension stores the value of an extension field.\n// It panics if m is invalid, xt does not extend m, or if type of v\n// is invalid for the specified extension field.\n//\n// The type of the value is dependent on the field type of the extension.\n// For extensions generated by protoc-gen-go, the Go type is as follows:\n//\n//\t╔═══════════════════╤═════════════════════════╗\n//\t║ Go type           │ Protobuf kind           ║\n//\t╠═══════════════════╪═════════════════════════╣\n//\t║ bool              │ bool                    ║\n//\t║ int32             │ int32, sint32, sfixed32 ║\n//\t║ int64             │ int64, sint64, sfixed64 ║\n//\t║ uint32            │ uint32, fixed32         ║\n//\t║ uint64            │ uint64, fixed64         ║\n//\t║ float32           │ float                   ║\n//\t║ float64           │ double                  ║\n//\t║ string            │ string                  ║\n//\t║ []byte            │ bytes                   ║\n//\t║ protoreflect.Enum │ enum                    ║\n//\t║ proto.Message     │ message, group          ║\n//\t╚═══════════════════╧═════════════════════════╝\n//\n// The protoreflect.Enum and proto.Message types are the concrete Go type\n// associated with the named enum or message. Repeated fields are represented\n// using a Go slice of the base element type.\n//\n// If a generated extension descriptor variable is directly passed to\n// SetExtension (e.g., foopb.E_MyExtension), then the value should be a\n// concrete type that matches the expected Go type for the extension descriptor\n// so that static analysis tools can verify type correctness.\n// This also enables a possible future migration to a type-safe extension API.\nfunc SetExtension(m Message, xt protoreflect.ExtensionType, v any) {\n\txd := xt.TypeDescriptor()\n\tpv := xt.ValueOf(v)\n\n\t// Specially treat an invalid list, map, or message as clear.\n\tisValid := true\n\tswitch {\n\tcase xd.IsList():\n\t\tisValid = pv.List().IsValid()\n\tcase xd.IsMap():\n\t\tisValid = pv.Map().IsValid()\n\tcase xd.Message() != nil:\n\t\tisValid = pv.Message().IsValid()\n\t}\n\tif !isValid {\n\t\tm.ProtoReflect().Clear(xd)\n\t\treturn\n\t}\n\n\tm.ProtoReflect().Set(xd, pv)\n}\n\n// RangeExtensions iterates over every populated extension field in m in an\n// undefined order, calling f for each extension type and value encountered.\n// It returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current extension field.\nfunc RangeExtensions(m Message, f func(protoreflect.ExtensionType, any) bool) {\n\t// Treat nil message interface as an empty message; nothing to range over.\n\tif m == nil {\n\t\treturn\n\t}\n\n\tm.ProtoReflect().Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool {\n\t\tif fd.IsExtension() {\n\t\t\txt := fd.(protoreflect.ExtensionTypeDescriptor).Type()\n\t\t\tvi := xt.InterfaceOf(v)\n\t\t\treturn f(xt, vi)\n\t\t}\n\t\treturn true\n\t})\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/proto/merge.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage proto\n\nimport (\n\t\"fmt\"\n\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n)\n\n// Merge merges src into dst, which must be a message with the same descriptor.\n//\n// Populated scalar fields in src are copied to dst, while populated\n// singular messages in src are merged into dst by recursively calling Merge.\n// The elements of every list field in src is appended to the corresponded\n// list fields in dst. The entries of every map field in src is copied into\n// the corresponding map field in dst, possibly replacing existing entries.\n// The unknown fields of src are appended to the unknown fields of dst.\n//\n// It is semantically equivalent to unmarshaling the encoded form of src\n// into dst with the [UnmarshalOptions.Merge] option specified.\nfunc Merge(dst, src Message) {\n\t// TODO: Should nil src be treated as semantically equivalent to a\n\t// untyped, read-only, empty message? What about a nil dst?\n\n\tdstMsg, srcMsg := dst.ProtoReflect(), src.ProtoReflect()\n\tif dstMsg.Descriptor() != srcMsg.Descriptor() {\n\t\tif got, want := dstMsg.Descriptor().FullName(), srcMsg.Descriptor().FullName(); got != want {\n\t\t\tpanic(fmt.Sprintf(\"descriptor mismatch: %v != %v\", got, want))\n\t\t}\n\t\tpanic(\"descriptor mismatch\")\n\t}\n\tmergeOptions{}.mergeMessage(dstMsg, srcMsg)\n}\n\n// Clone returns a deep copy of m.\n// If the top-level message is invalid, it returns an invalid message as well.\nfunc Clone(m Message) Message {\n\t// NOTE: Most usages of Clone assume the following properties:\n\t//\tt := reflect.TypeOf(m)\n\t//\tt == reflect.TypeOf(m.ProtoReflect().New().Interface())\n\t//\tt == reflect.TypeOf(m.ProtoReflect().Type().Zero().Interface())\n\t//\n\t// Embedding protobuf messages breaks this since the parent type will have\n\t// a forwarded ProtoReflect method, but the Interface method will return\n\t// the underlying embedded message type.\n\tif m == nil {\n\t\treturn nil\n\t}\n\tsrc := m.ProtoReflect()\n\tif !src.IsValid() {\n\t\treturn src.Type().Zero().Interface()\n\t}\n\tdst := src.New()\n\tmergeOptions{}.mergeMessage(dst, src)\n\treturn dst.Interface()\n}\n\n// CloneOf returns a deep copy of m. If the top-level message is invalid,\n// it returns an invalid message as well.\nfunc CloneOf[M Message](m M) M {\n\treturn Clone(m).(M)\n}\n\n// mergeOptions provides a namespace for merge functions, and can be\n// exported in the future if we add user-visible merge options.\ntype mergeOptions struct{}\n\nfunc (o mergeOptions) mergeMessage(dst, src protoreflect.Message) {\n\tmethods := protoMethods(dst)\n\tif methods != nil && methods.Merge != nil {\n\t\tin := protoiface.MergeInput{\n\t\t\tDestination: dst,\n\t\t\tSource:      src,\n\t\t}\n\t\tout := methods.Merge(in)\n\t\tif out.Flags&protoiface.MergeComplete != 0 {\n\t\t\treturn\n\t\t}\n\t}\n\n\tif !dst.IsValid() {\n\t\tpanic(fmt.Sprintf(\"cannot merge into invalid %v message\", dst.Descriptor().FullName()))\n\t}\n\n\tsrc.Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool {\n\t\tswitch {\n\t\tcase fd.IsList():\n\t\t\to.mergeList(dst.Mutable(fd).List(), v.List(), fd)\n\t\tcase fd.IsMap():\n\t\t\to.mergeMap(dst.Mutable(fd).Map(), v.Map(), fd.MapValue())\n\t\tcase fd.Message() != nil:\n\t\t\to.mergeMessage(dst.Mutable(fd).Message(), v.Message())\n\t\tcase fd.Kind() == protoreflect.BytesKind:\n\t\t\tdst.Set(fd, o.cloneBytes(v))\n\t\tdefault:\n\t\t\tdst.Set(fd, v)\n\t\t}\n\t\treturn true\n\t})\n\n\tif len(src.GetUnknown()) > 0 {\n\t\tdst.SetUnknown(append(dst.GetUnknown(), src.GetUnknown()...))\n\t}\n}\n\nfunc (o mergeOptions) mergeList(dst, src protoreflect.List, fd protoreflect.FieldDescriptor) {\n\t// Merge semantics appends to the end of the existing list.\n\tfor i, n := 0, src.Len(); i < n; i++ {\n\t\tswitch v := src.Get(i); {\n\t\tcase fd.Message() != nil:\n\t\t\tdstv := dst.NewElement()\n\t\t\to.mergeMessage(dstv.Message(), v.Message())\n\t\t\tdst.Append(dstv)\n\t\tcase fd.Kind() == protoreflect.BytesKind:\n\t\t\tdst.Append(o.cloneBytes(v))\n\t\tdefault:\n\t\t\tdst.Append(v)\n\t\t}\n\t}\n}\n\nfunc (o mergeOptions) mergeMap(dst, src protoreflect.Map, fd protoreflect.FieldDescriptor) {\n\t// Merge semantics replaces, rather than merges into existing entries.\n\tsrc.Range(func(k protoreflect.MapKey, v protoreflect.Value) bool {\n\t\tswitch {\n\t\tcase fd.Message() != nil:\n\t\t\tdstv := dst.NewValue()\n\t\t\to.mergeMessage(dstv.Message(), v.Message())\n\t\t\tdst.Set(k, dstv)\n\t\tcase fd.Kind() == protoreflect.BytesKind:\n\t\t\tdst.Set(k, o.cloneBytes(v))\n\t\tdefault:\n\t\t\tdst.Set(k, v)\n\t\t}\n\t\treturn true\n\t})\n}\n\nfunc (o mergeOptions) cloneBytes(v protoreflect.Value) protoreflect.Value {\n\treturn protoreflect.ValueOfBytes(append([]byte{}, v.Bytes()...))\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/proto/messageset.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage proto\n\nimport (\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/encoding/messageset\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/internal/flags\"\n\t\"google.golang.org/protobuf/internal/order\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n)\n\nfunc (o MarshalOptions) sizeMessageSet(m protoreflect.Message) (size int) {\n\tm.Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool {\n\t\tsize += messageset.SizeField(fd.Number())\n\t\tsize += protowire.SizeTag(messageset.FieldMessage)\n\t\tsize += protowire.SizeBytes(o.size(v.Message()))\n\t\treturn true\n\t})\n\tsize += messageset.SizeUnknown(m.GetUnknown())\n\treturn size\n}\n\nfunc (o MarshalOptions) marshalMessageSet(b []byte, m protoreflect.Message) ([]byte, error) {\n\tif !flags.ProtoLegacy {\n\t\treturn b, errors.New(\"no support for message_set_wire_format\")\n\t}\n\tfieldOrder := order.AnyFieldOrder\n\tif o.Deterministic {\n\t\tfieldOrder = order.NumberFieldOrder\n\t}\n\tvar err error\n\torder.RangeFields(m, fieldOrder, func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool {\n\t\tb, err = o.marshalMessageSetField(b, fd, v)\n\t\treturn err == nil\n\t})\n\tif err != nil {\n\t\treturn b, err\n\t}\n\treturn messageset.AppendUnknown(b, m.GetUnknown())\n}\n\nfunc (o MarshalOptions) marshalMessageSetField(b []byte, fd protoreflect.FieldDescriptor, value protoreflect.Value) ([]byte, error) {\n\tb = messageset.AppendFieldStart(b, fd.Number())\n\tb = protowire.AppendTag(b, messageset.FieldMessage, protowire.BytesType)\n\tcalculatedSize := o.Size(value.Message().Interface())\n\tb = protowire.AppendVarint(b, uint64(calculatedSize))\n\tbefore := len(b)\n\tb, err := o.marshalMessage(b, value.Message())\n\tif err != nil {\n\t\treturn b, err\n\t}\n\tif measuredSize := len(b) - before; calculatedSize != measuredSize {\n\t\treturn nil, errors.MismatchedSizeCalculation(calculatedSize, measuredSize)\n\t}\n\tb = messageset.AppendFieldEnd(b)\n\treturn b, nil\n}\n\nfunc (o UnmarshalOptions) unmarshalMessageSet(b []byte, m protoreflect.Message) error {\n\tif !flags.ProtoLegacy {\n\t\treturn errors.New(\"no support for message_set_wire_format\")\n\t}\n\treturn messageset.Unmarshal(b, false, func(num protowire.Number, v []byte) error {\n\t\terr := o.unmarshalMessageSetField(m, num, v)\n\t\tif err == errUnknown {\n\t\t\tunknown := m.GetUnknown()\n\t\t\tunknown = protowire.AppendTag(unknown, num, protowire.BytesType)\n\t\t\tunknown = protowire.AppendBytes(unknown, v)\n\t\t\tm.SetUnknown(unknown)\n\t\t\treturn nil\n\t\t}\n\t\treturn err\n\t})\n}\n\nfunc (o UnmarshalOptions) unmarshalMessageSetField(m protoreflect.Message, num protowire.Number, v []byte) error {\n\tmd := m.Descriptor()\n\tif !md.ExtensionRanges().Has(num) {\n\t\treturn errUnknown\n\t}\n\txt, err := o.Resolver.FindExtensionByNumber(md.FullName(), num)\n\tif err == protoregistry.NotFound {\n\t\treturn errUnknown\n\t}\n\tif err != nil {\n\t\treturn errors.New(\"%v: unable to resolve extension %v: %v\", md.FullName(), num, err)\n\t}\n\txd := xt.TypeDescriptor()\n\tif err := o.unmarshalMessage(v, m.Mutable(xd).Message()); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/proto/proto.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage proto\n\nimport (\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\n// Message is the top-level interface that all messages must implement.\n// It provides access to a reflective view of a message.\n// Any implementation of this interface may be used with all functions in the\n// protobuf module that accept a Message, except where otherwise specified.\n//\n// This is the v2 interface definition for protobuf messages.\n// The v1 interface definition is [github.com/golang/protobuf/proto.Message].\n//\n//   - To convert a v1 message to a v2 message,\n//     use [google.golang.org/protobuf/protoadapt.MessageV2Of].\n//   - To convert a v2 message to a v1 message,\n//     use [google.golang.org/protobuf/protoadapt.MessageV1Of].\ntype Message = protoreflect.ProtoMessage\n\n// Error matches all errors produced by packages in the protobuf module\n// according to [errors.Is].\n//\n// Example usage:\n//\n//\tif errors.Is(err, proto.Error) { ... }\nvar Error error\n\nfunc init() {\n\tError = errors.Error\n}\n\n// MessageName returns the full name of m.\n// If m is nil, it returns an empty string.\nfunc MessageName(m Message) protoreflect.FullName {\n\tif m == nil {\n\t\treturn \"\"\n\t}\n\treturn m.ProtoReflect().Descriptor().FullName()\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/proto/proto_methods.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// The protoreflect build tag disables use of fast-path methods.\n//go:build !protoreflect\n// +build !protoreflect\n\npackage proto\n\nimport (\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n)\n\nconst hasProtoMethods = true\n\nfunc protoMethods(m protoreflect.Message) *protoiface.Methods {\n\treturn m.ProtoMethods()\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/proto/proto_reflect.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// The protoreflect build tag disables use of fast-path methods.\n//go:build protoreflect\n// +build protoreflect\n\npackage proto\n\nimport (\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n)\n\nconst hasProtoMethods = false\n\nfunc protoMethods(m protoreflect.Message) *protoiface.Methods {\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/proto/reset.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage proto\n\nimport (\n\t\"fmt\"\n\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\n// Reset clears every field in the message.\n// The resulting message shares no observable memory with its previous state\n// other than the memory for the message itself.\nfunc Reset(m Message) {\n\tif mr, ok := m.(interface{ Reset() }); ok && hasProtoMethods {\n\t\tmr.Reset()\n\t\treturn\n\t}\n\tresetMessage(m.ProtoReflect())\n}\n\nfunc resetMessage(m protoreflect.Message) {\n\tif !m.IsValid() {\n\t\tpanic(fmt.Sprintf(\"cannot reset invalid %v message\", m.Descriptor().FullName()))\n\t}\n\n\t// Clear all known fields.\n\tfds := m.Descriptor().Fields()\n\tfor i := 0; i < fds.Len(); i++ {\n\t\tm.Clear(fds.Get(i))\n\t}\n\n\t// Clear extension fields.\n\tm.Range(func(fd protoreflect.FieldDescriptor, _ protoreflect.Value) bool {\n\t\tm.Clear(fd)\n\t\treturn true\n\t})\n\n\t// Clear unknown fields.\n\tm.SetUnknown(nil)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/proto/size.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage proto\n\nimport (\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/encoding/messageset\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n)\n\n// Size returns the size in bytes of the wire-format encoding of m.\n//\n// Note that Size might return more bytes than Marshal will write in the case of\n// lazily decoded messages that arrive in non-minimal wire format: see\n// https://protobuf.dev/reference/go/size/ for more details.\nfunc Size(m Message) int {\n\treturn MarshalOptions{}.Size(m)\n}\n\n// Size returns the size in bytes of the wire-format encoding of m.\n//\n// Note that Size might return more bytes than Marshal will write in the case of\n// lazily decoded messages that arrive in non-minimal wire format: see\n// https://protobuf.dev/reference/go/size/ for more details.\nfunc (o MarshalOptions) Size(m Message) int {\n\t// Treat a nil message interface as an empty message; nothing to output.\n\tif m == nil {\n\t\treturn 0\n\t}\n\n\treturn o.size(m.ProtoReflect())\n}\n\n// size is a centralized function that all size operations go through.\n// For profiling purposes, avoid changing the name of this function or\n// introducing other code paths for size that do not go through this.\nfunc (o MarshalOptions) size(m protoreflect.Message) (size int) {\n\tmethods := protoMethods(m)\n\tif methods != nil && methods.Size != nil {\n\t\tout := methods.Size(protoiface.SizeInput{\n\t\t\tMessage: m,\n\t\t\tFlags:   o.flags(),\n\t\t})\n\t\treturn out.Size\n\t}\n\tif methods != nil && methods.Marshal != nil {\n\t\t// This is not efficient, but we don't have any choice.\n\t\t// This case is mainly used for legacy types with a Marshal method.\n\t\tout, _ := methods.Marshal(protoiface.MarshalInput{\n\t\t\tMessage: m,\n\t\t\tFlags:   o.flags(),\n\t\t})\n\t\treturn len(out.Buf)\n\t}\n\treturn o.sizeMessageSlow(m)\n}\n\nfunc (o MarshalOptions) sizeMessageSlow(m protoreflect.Message) (size int) {\n\tif messageset.IsMessageSet(m.Descriptor()) {\n\t\treturn o.sizeMessageSet(m)\n\t}\n\tm.Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool {\n\t\tsize += o.sizeField(fd, v)\n\t\treturn true\n\t})\n\tsize += len(m.GetUnknown())\n\treturn size\n}\n\nfunc (o MarshalOptions) sizeField(fd protoreflect.FieldDescriptor, value protoreflect.Value) (size int) {\n\tnum := fd.Number()\n\tswitch {\n\tcase fd.IsList():\n\t\treturn o.sizeList(num, fd, value.List())\n\tcase fd.IsMap():\n\t\treturn o.sizeMap(num, fd, value.Map())\n\tdefault:\n\t\treturn protowire.SizeTag(num) + o.sizeSingular(num, fd.Kind(), value)\n\t}\n}\n\nfunc (o MarshalOptions) sizeList(num protowire.Number, fd protoreflect.FieldDescriptor, list protoreflect.List) (size int) {\n\tsizeTag := protowire.SizeTag(num)\n\n\tif fd.IsPacked() && list.Len() > 0 {\n\t\tcontent := 0\n\t\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\t\tcontent += o.sizeSingular(num, fd.Kind(), list.Get(i))\n\t\t}\n\t\treturn sizeTag + protowire.SizeBytes(content)\n\t}\n\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tsize += sizeTag + o.sizeSingular(num, fd.Kind(), list.Get(i))\n\t}\n\treturn size\n}\n\nfunc (o MarshalOptions) sizeMap(num protowire.Number, fd protoreflect.FieldDescriptor, mapv protoreflect.Map) (size int) {\n\tsizeTag := protowire.SizeTag(num)\n\n\tmapv.Range(func(key protoreflect.MapKey, value protoreflect.Value) bool {\n\t\tsize += sizeTag\n\t\tsize += protowire.SizeBytes(o.sizeField(fd.MapKey(), key.Value()) + o.sizeField(fd.MapValue(), value))\n\t\treturn true\n\t})\n\treturn size\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/proto/size_gen.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-types. DO NOT EDIT.\n\npackage proto\n\nimport (\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nfunc (o MarshalOptions) sizeSingular(num protowire.Number, kind protoreflect.Kind, v protoreflect.Value) int {\n\tswitch kind {\n\tcase protoreflect.BoolKind:\n\t\treturn protowire.SizeVarint(protowire.EncodeBool(v.Bool()))\n\tcase protoreflect.EnumKind:\n\t\treturn protowire.SizeVarint(uint64(v.Enum()))\n\tcase protoreflect.Int32Kind:\n\t\treturn protowire.SizeVarint(uint64(int32(v.Int())))\n\tcase protoreflect.Sint32Kind:\n\t\treturn protowire.SizeVarint(protowire.EncodeZigZag(int64(int32(v.Int()))))\n\tcase protoreflect.Uint32Kind:\n\t\treturn protowire.SizeVarint(uint64(uint32(v.Uint())))\n\tcase protoreflect.Int64Kind:\n\t\treturn protowire.SizeVarint(uint64(v.Int()))\n\tcase protoreflect.Sint64Kind:\n\t\treturn protowire.SizeVarint(protowire.EncodeZigZag(v.Int()))\n\tcase protoreflect.Uint64Kind:\n\t\treturn protowire.SizeVarint(v.Uint())\n\tcase protoreflect.Sfixed32Kind:\n\t\treturn protowire.SizeFixed32()\n\tcase protoreflect.Fixed32Kind:\n\t\treturn protowire.SizeFixed32()\n\tcase protoreflect.FloatKind:\n\t\treturn protowire.SizeFixed32()\n\tcase protoreflect.Sfixed64Kind:\n\t\treturn protowire.SizeFixed64()\n\tcase protoreflect.Fixed64Kind:\n\t\treturn protowire.SizeFixed64()\n\tcase protoreflect.DoubleKind:\n\t\treturn protowire.SizeFixed64()\n\tcase protoreflect.StringKind:\n\t\treturn protowire.SizeBytes(len(v.String()))\n\tcase protoreflect.BytesKind:\n\t\treturn protowire.SizeBytes(len(v.Bytes()))\n\tcase protoreflect.MessageKind:\n\t\treturn protowire.SizeBytes(o.size(v.Message()))\n\tcase protoreflect.GroupKind:\n\t\treturn protowire.SizeGroup(num, o.size(v.Message()))\n\tdefault:\n\t\treturn 0\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/proto/wrapperopaque.go",
    "content": "// Copyright 2024 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage proto\n\n// ValueOrNil returns nil if has is false, or a pointer to a new variable\n// containing the value returned by the specified getter.\n//\n// This function is similar to the wrappers (proto.Int32(), proto.String(),\n// etc.), but is generic (works for any field type) and works with the hasser\n// and getter of a field, as opposed to a value.\n//\n// This is convenient when populating builder fields.\n//\n// Example:\n//\n//\thop := attr.GetDirectHop()\n//\tinjectedRoute := ripb.InjectedRoute_builder{\n//\t  Prefixes: route.GetPrefixes(),\n//\t  NextHop:  proto.ValueOrNil(hop.HasAddress(), hop.GetAddress),\n//\t}\nfunc ValueOrNil[T any](has bool, getter func() T) *T {\n\tif !has {\n\t\treturn nil\n\t}\n\tv := getter()\n\treturn &v\n}\n\n// ValueOrDefault returns the protobuf message val if val is not nil, otherwise\n// it returns a pointer to an empty val message.\n//\n// This function allows for translating code from the old Open Struct API to the\n// new Opaque API.\n//\n// The old Open Struct API represented oneof fields with a wrapper struct:\n//\n//\tvar signedImg *accountpb.SignedImage\n//\tprofile := &accountpb.Profile{\n//\t\t// The Avatar oneof will be set, with an empty SignedImage.\n//\t\tAvatar: &accountpb.Profile_SignedImage{signedImg},\n//\t}\n//\n// The new Opaque API treats oneof fields like regular fields, there are no more\n// wrapper structs:\n//\n//\tvar signedImg *accountpb.SignedImage\n//\tprofile := &accountpb.Profile{}\n//\tprofile.SetSignedImage(signedImg)\n//\n// For convenience, the Opaque API also offers Builders, which allow for a\n// direct translation of struct initialization. However, because Builders use\n// nilness to represent field presence (but there is no non-nil wrapper struct\n// anymore), Builders cannot distinguish between an unset oneof and a set oneof\n// with nil message. The above code would need to be translated with help of the\n// ValueOrDefault function to retain the same behavior:\n//\n//\tvar signedImg *accountpb.SignedImage\n//\treturn &accountpb.Profile_builder{\n//\t\tSignedImage: proto.ValueOrDefault(signedImg),\n//\t}.Build()\nfunc ValueOrDefault[T interface {\n\t*P\n\tMessage\n}, P any](val T) T {\n\tif val == nil {\n\t\treturn T(new(P))\n\t}\n\treturn val\n}\n\n// ValueOrDefaultBytes is like ValueOrDefault but for working with fields of\n// type []byte.\nfunc ValueOrDefaultBytes(val []byte) []byte {\n\tif val == nil {\n\t\treturn []byte{}\n\t}\n\treturn val\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/proto/wrappers.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage proto\n\n// Bool stores v in a new bool value and returns a pointer to it.\nfunc Bool(v bool) *bool { return &v }\n\n// Int32 stores v in a new int32 value and returns a pointer to it.\nfunc Int32(v int32) *int32 { return &v }\n\n// Int64 stores v in a new int64 value and returns a pointer to it.\nfunc Int64(v int64) *int64 { return &v }\n\n// Float32 stores v in a new float32 value and returns a pointer to it.\nfunc Float32(v float32) *float32 { return &v }\n\n// Float64 stores v in a new float64 value and returns a pointer to it.\nfunc Float64(v float64) *float64 { return &v }\n\n// Uint32 stores v in a new uint32 value and returns a pointer to it.\nfunc Uint32(v uint32) *uint32 { return &v }\n\n// Uint64 stores v in a new uint64 value and returns a pointer to it.\nfunc Uint64(v uint64) *uint64 { return &v }\n\n// String stores v in a new string value and returns a pointer to it.\nfunc String(v string) *string { return &v }\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/reflect/protodesc/desc.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package protodesc provides functionality for converting\n// FileDescriptorProto messages to/from [protoreflect.FileDescriptor] values.\n//\n// The google.protobuf.FileDescriptorProto is a protobuf message that describes\n// the type information for a .proto file in a form that is easily serializable.\n// The [protoreflect.FileDescriptor] is a more structured representation of\n// the FileDescriptorProto message where references and remote dependencies\n// can be directly followed.\npackage protodesc\n\nimport (\n\t\"strings\"\n\n\t\"google.golang.org/protobuf/internal/editionssupport\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/internal/filedesc\"\n\t\"google.golang.org/protobuf/internal/pragma\"\n\t\"google.golang.org/protobuf/internal/strs\"\n\t\"google.golang.org/protobuf/proto\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n\n\t\"google.golang.org/protobuf/types/descriptorpb\"\n)\n\n// Resolver is the resolver used by [NewFile] to resolve dependencies.\n// The enums and messages provided must belong to some parent file,\n// which is also registered.\n//\n// It is implemented by [protoregistry.Files].\ntype Resolver interface {\n\tFindFileByPath(string) (protoreflect.FileDescriptor, error)\n\tFindDescriptorByName(protoreflect.FullName) (protoreflect.Descriptor, error)\n}\n\n// FileOptions configures the construction of file descriptors.\ntype FileOptions struct {\n\tpragma.NoUnkeyedLiterals\n\n\t// AllowUnresolvable configures New to permissively allow unresolvable\n\t// file, enum, or message dependencies. Unresolved dependencies are replaced\n\t// by placeholder equivalents.\n\t//\n\t// The following dependencies may be left unresolved:\n\t//\t• Resolving an imported file.\n\t//\t• Resolving the type for a message field or extension field.\n\t//\tIf the kind of the field is unknown, then a placeholder is used for both\n\t//\tthe Enum and Message accessors on the protoreflect.FieldDescriptor.\n\t//\t• Resolving an enum value set as the default for an optional enum field.\n\t//\tIf unresolvable, the protoreflect.FieldDescriptor.Default is set to the\n\t//\tfirst value in the associated enum (or zero if the also enum dependency\n\t//\tis also unresolvable). The protoreflect.FieldDescriptor.DefaultEnumValue\n\t//\tis populated with a placeholder.\n\t//\t• Resolving the extended message type for an extension field.\n\t//\t• Resolving the input or output message type for a service method.\n\t//\n\t// If the unresolved dependency uses a relative name,\n\t// then the placeholder will contain an invalid FullName with a \"*.\" prefix,\n\t// indicating that the starting prefix of the full name is unknown.\n\tAllowUnresolvable bool\n}\n\n// NewFile creates a new [protoreflect.FileDescriptor] from the provided\n// file descriptor message. See [FileOptions.New] for more information.\nfunc NewFile(fd *descriptorpb.FileDescriptorProto, r Resolver) (protoreflect.FileDescriptor, error) {\n\treturn FileOptions{}.New(fd, r)\n}\n\n// NewFiles creates a new [protoregistry.Files] from the provided\n// FileDescriptorSet message. See [FileOptions.NewFiles] for more information.\nfunc NewFiles(fd *descriptorpb.FileDescriptorSet) (*protoregistry.Files, error) {\n\treturn FileOptions{}.NewFiles(fd)\n}\n\n// New creates a new [protoreflect.FileDescriptor] from the provided\n// file descriptor message. The file must represent a valid proto file according\n// to protobuf semantics. The returned descriptor is a deep copy of the input.\n//\n// Any imported files, enum types, or message types referenced in the file are\n// resolved using the provided registry. When looking up an import file path,\n// the path must be unique. The newly created file descriptor is not registered\n// back into the provided file registry.\nfunc (o FileOptions) New(fd *descriptorpb.FileDescriptorProto, r Resolver) (protoreflect.FileDescriptor, error) {\n\tif r == nil {\n\t\tr = (*protoregistry.Files)(nil) // empty resolver\n\t}\n\n\t// Handle the file descriptor content.\n\tf := &filedesc.File{L2: &filedesc.FileL2{}}\n\tswitch fd.GetSyntax() {\n\tcase \"proto2\", \"\":\n\t\tf.L1.Syntax = protoreflect.Proto2\n\t\tf.L1.Edition = filedesc.EditionProto2\n\tcase \"proto3\":\n\t\tf.L1.Syntax = protoreflect.Proto3\n\t\tf.L1.Edition = filedesc.EditionProto3\n\tcase \"editions\":\n\t\tf.L1.Syntax = protoreflect.Editions\n\t\tf.L1.Edition = fromEditionProto(fd.GetEdition())\n\tdefault:\n\t\treturn nil, errors.New(\"invalid syntax: %q\", fd.GetSyntax())\n\t}\n\tf.L1.Path = fd.GetName()\n\tif f.L1.Path == \"\" {\n\t\treturn nil, errors.New(\"file path must be populated\")\n\t}\n\tif f.L1.Syntax == protoreflect.Editions && (fd.GetEdition() < editionssupport.Minimum || fd.GetEdition() > editionssupport.Maximum) {\n\t\t// Allow cmd/protoc-gen-go/testdata to use any edition for easier\n\t\t// testing of upcoming edition features.\n\t\tif !strings.HasPrefix(fd.GetName(), \"cmd/protoc-gen-go/testdata/\") {\n\t\t\treturn nil, errors.New(\"use of edition %v not yet supported by the Go Protobuf runtime\", fd.GetEdition())\n\t\t}\n\t}\n\tf.L1.Package = protoreflect.FullName(fd.GetPackage())\n\tif !f.L1.Package.IsValid() && f.L1.Package != \"\" {\n\t\treturn nil, errors.New(\"invalid package: %q\", f.L1.Package)\n\t}\n\tif opts := fd.GetOptions(); opts != nil {\n\t\topts = proto.Clone(opts).(*descriptorpb.FileOptions)\n\t\tf.L2.Options = func() protoreflect.ProtoMessage { return opts }\n\t}\n\tinitFileDescFromFeatureSet(f, fd.GetOptions().GetFeatures())\n\n\tf.L2.Imports = make(filedesc.FileImports, len(fd.GetDependency()))\n\tfor _, i := range fd.GetPublicDependency() {\n\t\tif !(0 <= i && int(i) < len(f.L2.Imports)) || f.L2.Imports[i].IsPublic {\n\t\t\treturn nil, errors.New(\"invalid or duplicate public import index: %d\", i)\n\t\t}\n\t\tf.L2.Imports[i].IsPublic = true\n\t}\n\timps := importSet{f.Path(): true}\n\tfor i, path := range fd.GetDependency() {\n\t\timp := &f.L2.Imports[i]\n\t\tf, err := r.FindFileByPath(path)\n\t\tif err == protoregistry.NotFound && o.AllowUnresolvable {\n\t\t\tf = filedesc.PlaceholderFile(path)\n\t\t} else if err != nil {\n\t\t\treturn nil, errors.New(\"could not resolve import %q: %v\", path, err)\n\t\t}\n\t\timp.FileDescriptor = f\n\n\t\tif imps[imp.Path()] {\n\t\t\treturn nil, errors.New(\"already imported %q\", path)\n\t\t}\n\t\timps[imp.Path()] = true\n\t}\n\tfor i := range fd.GetDependency() {\n\t\timp := &f.L2.Imports[i]\n\t\timps.importPublic(imp.Imports())\n\t}\n\n\t// Handle source locations.\n\tf.L2.Locations.File = f\n\tfor _, loc := range fd.GetSourceCodeInfo().GetLocation() {\n\t\tvar l protoreflect.SourceLocation\n\t\t// TODO: Validate that the path points to an actual declaration?\n\t\tl.Path = protoreflect.SourcePath(loc.GetPath())\n\t\ts := loc.GetSpan()\n\t\tswitch len(s) {\n\t\tcase 3:\n\t\t\tl.StartLine, l.StartColumn, l.EndLine, l.EndColumn = int(s[0]), int(s[1]), int(s[0]), int(s[2])\n\t\tcase 4:\n\t\t\tl.StartLine, l.StartColumn, l.EndLine, l.EndColumn = int(s[0]), int(s[1]), int(s[2]), int(s[3])\n\t\tdefault:\n\t\t\treturn nil, errors.New(\"invalid span: %v\", s)\n\t\t}\n\t\t// TODO: Validate that the span information is sensible?\n\t\t// See https://github.com/protocolbuffers/protobuf/issues/6378.\n\t\tif false && (l.EndLine < l.StartLine || l.StartLine < 0 || l.StartColumn < 0 || l.EndColumn < 0 ||\n\t\t\t(l.StartLine == l.EndLine && l.EndColumn <= l.StartColumn)) {\n\t\t\treturn nil, errors.New(\"invalid span: %v\", s)\n\t\t}\n\t\tl.LeadingDetachedComments = loc.GetLeadingDetachedComments()\n\t\tl.LeadingComments = loc.GetLeadingComments()\n\t\tl.TrailingComments = loc.GetTrailingComments()\n\t\tf.L2.Locations.List = append(f.L2.Locations.List, l)\n\t}\n\n\t// Step 1: Allocate and derive the names for all declarations.\n\t// This copies all fields from the descriptor proto except:\n\t//\tgoogle.protobuf.FieldDescriptorProto.type_name\n\t//\tgoogle.protobuf.FieldDescriptorProto.default_value\n\t//\tgoogle.protobuf.FieldDescriptorProto.oneof_index\n\t//\tgoogle.protobuf.FieldDescriptorProto.extendee\n\t//\tgoogle.protobuf.MethodDescriptorProto.input\n\t//\tgoogle.protobuf.MethodDescriptorProto.output\n\tvar err error\n\tsb := new(strs.Builder)\n\tr1 := make(descsByName)\n\tif f.L1.Enums.List, err = r1.initEnumDeclarations(fd.GetEnumType(), f, sb); err != nil {\n\t\treturn nil, err\n\t}\n\tif f.L1.Messages.List, err = r1.initMessagesDeclarations(fd.GetMessageType(), f, sb); err != nil {\n\t\treturn nil, err\n\t}\n\tif f.L1.Extensions.List, err = r1.initExtensionDeclarations(fd.GetExtension(), f, sb); err != nil {\n\t\treturn nil, err\n\t}\n\tif f.L1.Services.List, err = r1.initServiceDeclarations(fd.GetService(), f, sb); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Step 2: Resolve every dependency reference not handled by step 1.\n\tr2 := &resolver{local: r1, remote: r, imports: imps, allowUnresolvable: o.AllowUnresolvable}\n\tif err := r2.resolveMessageDependencies(f.L1.Messages.List, fd.GetMessageType()); err != nil {\n\t\treturn nil, err\n\t}\n\tif err := r2.resolveExtensionDependencies(f.L1.Extensions.List, fd.GetExtension()); err != nil {\n\t\treturn nil, err\n\t}\n\tif err := r2.resolveServiceDependencies(f.L1.Services.List, fd.GetService()); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Step 3: Validate every enum, message, and extension declaration.\n\tif err := validateEnumDeclarations(f.L1.Enums.List, fd.GetEnumType()); err != nil {\n\t\treturn nil, err\n\t}\n\tif err := validateMessageDeclarations(f, f.L1.Messages.List, fd.GetMessageType()); err != nil {\n\t\treturn nil, err\n\t}\n\tif err := validateExtensionDeclarations(f, f.L1.Extensions.List, fd.GetExtension()); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn f, nil\n}\n\ntype importSet map[string]bool\n\nfunc (is importSet) importPublic(imps protoreflect.FileImports) {\n\tfor i := 0; i < imps.Len(); i++ {\n\t\tif imp := imps.Get(i); imp.IsPublic {\n\t\t\tis[imp.Path()] = true\n\t\t\tis.importPublic(imp.Imports())\n\t\t}\n\t}\n}\n\n// NewFiles creates a new [protoregistry.Files] from the provided\n// FileDescriptorSet message. The descriptor set must include only\n// valid files according to protobuf semantics. The returned descriptors\n// are a deep copy of the input.\nfunc (o FileOptions) NewFiles(fds *descriptorpb.FileDescriptorSet) (*protoregistry.Files, error) {\n\tfiles := make(map[string]*descriptorpb.FileDescriptorProto)\n\tfor _, fd := range fds.File {\n\t\tif _, ok := files[fd.GetName()]; ok {\n\t\t\treturn nil, errors.New(\"file appears multiple times: %q\", fd.GetName())\n\t\t}\n\t\tfiles[fd.GetName()] = fd\n\t}\n\tr := &protoregistry.Files{}\n\tfor _, fd := range files {\n\t\tif err := o.addFileDeps(r, fd, files); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\treturn r, nil\n}\nfunc (o FileOptions) addFileDeps(r *protoregistry.Files, fd *descriptorpb.FileDescriptorProto, files map[string]*descriptorpb.FileDescriptorProto) error {\n\t// Set the entry to nil while descending into a file's dependencies to detect cycles.\n\tfiles[fd.GetName()] = nil\n\tfor _, dep := range fd.Dependency {\n\t\tdepfd, ok := files[dep]\n\t\tif depfd == nil {\n\t\t\tif ok {\n\t\t\t\treturn errors.New(\"import cycle in file: %q\", dep)\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\t\tif err := o.addFileDeps(r, depfd, files); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\t// Delete the entry once dependencies are processed.\n\tdelete(files, fd.GetName())\n\tf, err := o.New(fd, r)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn r.RegisterFile(f)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/reflect/protodesc/desc_init.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage protodesc\n\nimport (\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/internal/filedesc\"\n\t\"google.golang.org/protobuf/internal/strs\"\n\t\"google.golang.org/protobuf/proto\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\n\t\"google.golang.org/protobuf/types/descriptorpb\"\n)\n\ntype descsByName map[protoreflect.FullName]protoreflect.Descriptor\n\nfunc (r descsByName) initEnumDeclarations(eds []*descriptorpb.EnumDescriptorProto, parent protoreflect.Descriptor, sb *strs.Builder) (es []filedesc.Enum, err error) {\n\tes = make([]filedesc.Enum, len(eds)) // allocate up-front to ensure stable pointers\n\tfor i, ed := range eds {\n\t\te := &es[i]\n\t\te.L2 = new(filedesc.EnumL2)\n\t\tif e.L0, err = r.makeBase(e, parent, ed.GetName(), i, sb); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif opts := ed.GetOptions(); opts != nil {\n\t\t\topts = proto.Clone(opts).(*descriptorpb.EnumOptions)\n\t\t\te.L2.Options = func() protoreflect.ProtoMessage { return opts }\n\t\t}\n\t\te.L1.EditionFeatures = mergeEditionFeatures(parent, ed.GetOptions().GetFeatures())\n\t\tfor _, s := range ed.GetReservedName() {\n\t\t\te.L2.ReservedNames.List = append(e.L2.ReservedNames.List, protoreflect.Name(s))\n\t\t}\n\t\tfor _, rr := range ed.GetReservedRange() {\n\t\t\te.L2.ReservedRanges.List = append(e.L2.ReservedRanges.List, [2]protoreflect.EnumNumber{\n\t\t\t\tprotoreflect.EnumNumber(rr.GetStart()),\n\t\t\t\tprotoreflect.EnumNumber(rr.GetEnd()),\n\t\t\t})\n\t\t}\n\t\tif e.L2.Values.List, err = r.initEnumValuesFromDescriptorProto(ed.GetValue(), e, sb); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\treturn es, nil\n}\n\nfunc (r descsByName) initEnumValuesFromDescriptorProto(vds []*descriptorpb.EnumValueDescriptorProto, parent protoreflect.Descriptor, sb *strs.Builder) (vs []filedesc.EnumValue, err error) {\n\tvs = make([]filedesc.EnumValue, len(vds)) // allocate up-front to ensure stable pointers\n\tfor i, vd := range vds {\n\t\tv := &vs[i]\n\t\tif v.L0, err = r.makeBase(v, parent, vd.GetName(), i, sb); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif opts := vd.GetOptions(); opts != nil {\n\t\t\topts = proto.Clone(opts).(*descriptorpb.EnumValueOptions)\n\t\t\tv.L1.Options = func() protoreflect.ProtoMessage { return opts }\n\t\t}\n\t\tv.L1.Number = protoreflect.EnumNumber(vd.GetNumber())\n\t}\n\treturn vs, nil\n}\n\nfunc (r descsByName) initMessagesDeclarations(mds []*descriptorpb.DescriptorProto, parent protoreflect.Descriptor, sb *strs.Builder) (ms []filedesc.Message, err error) {\n\tms = make([]filedesc.Message, len(mds)) // allocate up-front to ensure stable pointers\n\tfor i, md := range mds {\n\t\tm := &ms[i]\n\t\tm.L2 = new(filedesc.MessageL2)\n\t\tif m.L0, err = r.makeBase(m, parent, md.GetName(), i, sb); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tm.L1.EditionFeatures = mergeEditionFeatures(parent, md.GetOptions().GetFeatures())\n\t\tif opts := md.GetOptions(); opts != nil {\n\t\t\topts = proto.Clone(opts).(*descriptorpb.MessageOptions)\n\t\t\tm.L2.Options = func() protoreflect.ProtoMessage { return opts }\n\t\t\tm.L1.IsMapEntry = opts.GetMapEntry()\n\t\t\tm.L1.IsMessageSet = opts.GetMessageSetWireFormat()\n\t\t}\n\t\tfor _, s := range md.GetReservedName() {\n\t\t\tm.L2.ReservedNames.List = append(m.L2.ReservedNames.List, protoreflect.Name(s))\n\t\t}\n\t\tfor _, rr := range md.GetReservedRange() {\n\t\t\tm.L2.ReservedRanges.List = append(m.L2.ReservedRanges.List, [2]protoreflect.FieldNumber{\n\t\t\t\tprotoreflect.FieldNumber(rr.GetStart()),\n\t\t\t\tprotoreflect.FieldNumber(rr.GetEnd()),\n\t\t\t})\n\t\t}\n\t\tfor _, xr := range md.GetExtensionRange() {\n\t\t\tm.L2.ExtensionRanges.List = append(m.L2.ExtensionRanges.List, [2]protoreflect.FieldNumber{\n\t\t\t\tprotoreflect.FieldNumber(xr.GetStart()),\n\t\t\t\tprotoreflect.FieldNumber(xr.GetEnd()),\n\t\t\t})\n\t\t\tvar optsFunc func() protoreflect.ProtoMessage\n\t\t\tif opts := xr.GetOptions(); opts != nil {\n\t\t\t\topts = proto.Clone(opts).(*descriptorpb.ExtensionRangeOptions)\n\t\t\t\toptsFunc = func() protoreflect.ProtoMessage { return opts }\n\t\t\t}\n\t\t\tm.L2.ExtensionRangeOptions = append(m.L2.ExtensionRangeOptions, optsFunc)\n\t\t}\n\t\tif m.L2.Fields.List, err = r.initFieldsFromDescriptorProto(md.GetField(), m, sb); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif m.L2.Oneofs.List, err = r.initOneofsFromDescriptorProto(md.GetOneofDecl(), m, sb); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif m.L1.Enums.List, err = r.initEnumDeclarations(md.GetEnumType(), m, sb); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif m.L1.Messages.List, err = r.initMessagesDeclarations(md.GetNestedType(), m, sb); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif m.L1.Extensions.List, err = r.initExtensionDeclarations(md.GetExtension(), m, sb); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\treturn ms, nil\n}\n\n// canBePacked returns whether the field can use packed encoding:\n// https://protobuf.dev/programming-guides/encoding/#packed\nfunc canBePacked(fd *descriptorpb.FieldDescriptorProto) bool {\n\tif fd.GetLabel() != descriptorpb.FieldDescriptorProto_LABEL_REPEATED {\n\t\treturn false // not a repeated field\n\t}\n\n\tswitch protoreflect.Kind(fd.GetType()) {\n\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\treturn false // not a scalar type field\n\n\tcase protoreflect.StringKind, protoreflect.BytesKind:\n\t\t// string and bytes can explicitly not be declared as packed,\n\t\t// see https://protobuf.dev/programming-guides/encoding/#packed\n\t\treturn false\n\n\tdefault:\n\t\treturn true\n\t}\n}\n\nfunc (r descsByName) initFieldsFromDescriptorProto(fds []*descriptorpb.FieldDescriptorProto, parent protoreflect.Descriptor, sb *strs.Builder) (fs []filedesc.Field, err error) {\n\tfs = make([]filedesc.Field, len(fds)) // allocate up-front to ensure stable pointers\n\tfor i, fd := range fds {\n\t\tf := &fs[i]\n\t\tif f.L0, err = r.makeBase(f, parent, fd.GetName(), i, sb); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tf.L1.EditionFeatures = mergeEditionFeatures(parent, fd.GetOptions().GetFeatures())\n\t\tf.L1.IsProto3Optional = fd.GetProto3Optional()\n\t\tif opts := fd.GetOptions(); opts != nil {\n\t\t\topts = proto.Clone(opts).(*descriptorpb.FieldOptions)\n\t\t\tf.L1.Options = func() protoreflect.ProtoMessage { return opts }\n\t\t\tf.L1.IsLazy = opts.GetLazy()\n\t\t\tif opts.Packed != nil {\n\t\t\t\tf.L1.EditionFeatures.IsPacked = opts.GetPacked()\n\t\t\t}\n\t\t}\n\t\tf.L1.Number = protoreflect.FieldNumber(fd.GetNumber())\n\t\tf.L1.Cardinality = protoreflect.Cardinality(fd.GetLabel())\n\t\tif fd.Type != nil {\n\t\t\tf.L1.Kind = protoreflect.Kind(fd.GetType())\n\t\t}\n\t\tif fd.JsonName != nil {\n\t\t\tf.L1.StringName.InitJSON(fd.GetJsonName())\n\t\t}\n\n\t\tif f.L1.EditionFeatures.IsLegacyRequired {\n\t\t\tf.L1.Cardinality = protoreflect.Required\n\t\t}\n\n\t\tif f.L1.Kind == protoreflect.MessageKind && f.L1.EditionFeatures.IsDelimitedEncoded {\n\t\t\tf.L1.Kind = protoreflect.GroupKind\n\t\t}\n\t}\n\treturn fs, nil\n}\n\nfunc (r descsByName) initOneofsFromDescriptorProto(ods []*descriptorpb.OneofDescriptorProto, parent protoreflect.Descriptor, sb *strs.Builder) (os []filedesc.Oneof, err error) {\n\tos = make([]filedesc.Oneof, len(ods)) // allocate up-front to ensure stable pointers\n\tfor i, od := range ods {\n\t\to := &os[i]\n\t\tif o.L0, err = r.makeBase(o, parent, od.GetName(), i, sb); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\to.L1.EditionFeatures = mergeEditionFeatures(parent, od.GetOptions().GetFeatures())\n\t\tif opts := od.GetOptions(); opts != nil {\n\t\t\topts = proto.Clone(opts).(*descriptorpb.OneofOptions)\n\t\t\to.L1.Options = func() protoreflect.ProtoMessage { return opts }\n\t\t}\n\t}\n\treturn os, nil\n}\n\nfunc (r descsByName) initExtensionDeclarations(xds []*descriptorpb.FieldDescriptorProto, parent protoreflect.Descriptor, sb *strs.Builder) (xs []filedesc.Extension, err error) {\n\txs = make([]filedesc.Extension, len(xds)) // allocate up-front to ensure stable pointers\n\tfor i, xd := range xds {\n\t\tx := &xs[i]\n\t\tx.L2 = new(filedesc.ExtensionL2)\n\t\tif x.L0, err = r.makeBase(x, parent, xd.GetName(), i, sb); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tx.L1.EditionFeatures = mergeEditionFeatures(parent, xd.GetOptions().GetFeatures())\n\t\tif opts := xd.GetOptions(); opts != nil {\n\t\t\topts = proto.Clone(opts).(*descriptorpb.FieldOptions)\n\t\t\tx.L2.Options = func() protoreflect.ProtoMessage { return opts }\n\t\t\tif opts.Packed != nil {\n\t\t\t\tx.L1.EditionFeatures.IsPacked = opts.GetPacked()\n\t\t\t}\n\t\t}\n\t\tx.L1.Number = protoreflect.FieldNumber(xd.GetNumber())\n\t\tx.L1.Cardinality = protoreflect.Cardinality(xd.GetLabel())\n\t\tif xd.Type != nil {\n\t\t\tx.L1.Kind = protoreflect.Kind(xd.GetType())\n\t\t}\n\t\tif xd.JsonName != nil {\n\t\t\tx.L2.StringName.InitJSON(xd.GetJsonName())\n\t\t}\n\t\tif x.L1.Kind == protoreflect.MessageKind && x.L1.EditionFeatures.IsDelimitedEncoded {\n\t\t\tx.L1.Kind = protoreflect.GroupKind\n\t\t}\n\t}\n\treturn xs, nil\n}\n\nfunc (r descsByName) initServiceDeclarations(sds []*descriptorpb.ServiceDescriptorProto, parent protoreflect.Descriptor, sb *strs.Builder) (ss []filedesc.Service, err error) {\n\tss = make([]filedesc.Service, len(sds)) // allocate up-front to ensure stable pointers\n\tfor i, sd := range sds {\n\t\ts := &ss[i]\n\t\ts.L2 = new(filedesc.ServiceL2)\n\t\tif s.L0, err = r.makeBase(s, parent, sd.GetName(), i, sb); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif opts := sd.GetOptions(); opts != nil {\n\t\t\topts = proto.Clone(opts).(*descriptorpb.ServiceOptions)\n\t\t\ts.L2.Options = func() protoreflect.ProtoMessage { return opts }\n\t\t}\n\t\tif s.L2.Methods.List, err = r.initMethodsFromDescriptorProto(sd.GetMethod(), s, sb); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\treturn ss, nil\n}\n\nfunc (r descsByName) initMethodsFromDescriptorProto(mds []*descriptorpb.MethodDescriptorProto, parent protoreflect.Descriptor, sb *strs.Builder) (ms []filedesc.Method, err error) {\n\tms = make([]filedesc.Method, len(mds)) // allocate up-front to ensure stable pointers\n\tfor i, md := range mds {\n\t\tm := &ms[i]\n\t\tif m.L0, err = r.makeBase(m, parent, md.GetName(), i, sb); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif opts := md.GetOptions(); opts != nil {\n\t\t\topts = proto.Clone(opts).(*descriptorpb.MethodOptions)\n\t\t\tm.L1.Options = func() protoreflect.ProtoMessage { return opts }\n\t\t}\n\t\tm.L1.IsStreamingClient = md.GetClientStreaming()\n\t\tm.L1.IsStreamingServer = md.GetServerStreaming()\n\t}\n\treturn ms, nil\n}\n\nfunc (r descsByName) makeBase(child, parent protoreflect.Descriptor, name string, idx int, sb *strs.Builder) (filedesc.BaseL0, error) {\n\tif !protoreflect.Name(name).IsValid() {\n\t\treturn filedesc.BaseL0{}, errors.New(\"descriptor %q has an invalid nested name: %q\", parent.FullName(), name)\n\t}\n\n\t// Derive the full name of the child.\n\t// Note that enum values are a sibling to the enum parent in the namespace.\n\tvar fullName protoreflect.FullName\n\tif _, ok := parent.(protoreflect.EnumDescriptor); ok {\n\t\tfullName = sb.AppendFullName(parent.FullName().Parent(), protoreflect.Name(name))\n\t} else {\n\t\tfullName = sb.AppendFullName(parent.FullName(), protoreflect.Name(name))\n\t}\n\tif _, ok := r[fullName]; ok {\n\t\treturn filedesc.BaseL0{}, errors.New(\"descriptor %q already declared\", fullName)\n\t}\n\tr[fullName] = child\n\n\t// TODO: Verify that the full name does not already exist in the resolver?\n\t// This is not as critical since most usages of NewFile will register\n\t// the created file back into the registry, which will perform this check.\n\n\treturn filedesc.BaseL0{\n\t\tFullName:   fullName,\n\t\tParentFile: parent.ParentFile().(*filedesc.File),\n\t\tParent:     parent,\n\t\tIndex:      idx,\n\t}, nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/reflect/protodesc/desc_resolve.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage protodesc\n\nimport (\n\t\"google.golang.org/protobuf/internal/encoding/defval\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/internal/filedesc\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n\n\t\"google.golang.org/protobuf/types/descriptorpb\"\n)\n\n// resolver is a wrapper around a local registry of declarations within the file\n// and the remote resolver. The remote resolver is restricted to only return\n// descriptors that have been imported.\ntype resolver struct {\n\tlocal   descsByName\n\tremote  Resolver\n\timports importSet\n\n\tallowUnresolvable bool\n}\n\nfunc (r *resolver) resolveMessageDependencies(ms []filedesc.Message, mds []*descriptorpb.DescriptorProto) (err error) {\n\tfor i, md := range mds {\n\t\tm := &ms[i]\n\t\tfor j, fd := range md.GetField() {\n\t\t\tf := &m.L2.Fields.List[j]\n\t\t\tif f.L1.Cardinality == protoreflect.Required {\n\t\t\t\tm.L2.RequiredNumbers.List = append(m.L2.RequiredNumbers.List, f.L1.Number)\n\t\t\t}\n\t\t\tif fd.OneofIndex != nil {\n\t\t\t\tk := int(fd.GetOneofIndex())\n\t\t\t\tif !(0 <= k && k < len(md.GetOneofDecl())) {\n\t\t\t\t\treturn errors.New(\"message field %q has an invalid oneof index: %d\", f.FullName(), k)\n\t\t\t\t}\n\t\t\t\to := &m.L2.Oneofs.List[k]\n\t\t\t\tf.L1.ContainingOneof = o\n\t\t\t\to.L1.Fields.List = append(o.L1.Fields.List, f)\n\t\t\t}\n\n\t\t\tif f.L1.Kind, f.L1.Enum, f.L1.Message, err = r.findTarget(f.Kind(), f.Parent().FullName(), partialName(fd.GetTypeName())); err != nil {\n\t\t\t\treturn errors.New(\"message field %q cannot resolve type: %v\", f.FullName(), err)\n\t\t\t}\n\t\t\tif f.L1.Kind == protoreflect.GroupKind && (f.IsMap() || f.IsMapEntry()) {\n\t\t\t\t// A map field might inherit delimited encoding from a file-wide default feature.\n\t\t\t\t// But maps never actually use delimited encoding. (At least for now...)\n\t\t\t\tf.L1.Kind = protoreflect.MessageKind\n\t\t\t}\n\t\t\tif fd.DefaultValue != nil {\n\t\t\t\tv, ev, err := unmarshalDefault(fd.GetDefaultValue(), f, r.allowUnresolvable)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn errors.New(\"message field %q has invalid default: %v\", f.FullName(), err)\n\t\t\t\t}\n\t\t\t\tf.L1.Default = filedesc.DefaultValue(v, ev)\n\t\t\t}\n\t\t}\n\n\t\tif err := r.resolveMessageDependencies(m.L1.Messages.List, md.GetNestedType()); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif err := r.resolveExtensionDependencies(m.L1.Extensions.List, md.GetExtension()); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (r *resolver) resolveExtensionDependencies(xs []filedesc.Extension, xds []*descriptorpb.FieldDescriptorProto) (err error) {\n\tfor i, xd := range xds {\n\t\tx := &xs[i]\n\t\tif x.L1.Extendee, err = r.findMessageDescriptor(x.Parent().FullName(), partialName(xd.GetExtendee())); err != nil {\n\t\t\treturn errors.New(\"extension field %q cannot resolve extendee: %v\", x.FullName(), err)\n\t\t}\n\t\tif x.L1.Kind, x.L2.Enum, x.L2.Message, err = r.findTarget(x.Kind(), x.Parent().FullName(), partialName(xd.GetTypeName())); err != nil {\n\t\t\treturn errors.New(\"extension field %q cannot resolve type: %v\", x.FullName(), err)\n\t\t}\n\t\tif xd.DefaultValue != nil {\n\t\t\tv, ev, err := unmarshalDefault(xd.GetDefaultValue(), x, r.allowUnresolvable)\n\t\t\tif err != nil {\n\t\t\t\treturn errors.New(\"extension field %q has invalid default: %v\", x.FullName(), err)\n\t\t\t}\n\t\t\tx.L2.Default = filedesc.DefaultValue(v, ev)\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (r *resolver) resolveServiceDependencies(ss []filedesc.Service, sds []*descriptorpb.ServiceDescriptorProto) (err error) {\n\tfor i, sd := range sds {\n\t\ts := &ss[i]\n\t\tfor j, md := range sd.GetMethod() {\n\t\t\tm := &s.L2.Methods.List[j]\n\t\t\tm.L1.Input, err = r.findMessageDescriptor(m.Parent().FullName(), partialName(md.GetInputType()))\n\t\t\tif err != nil {\n\t\t\t\treturn errors.New(\"service method %q cannot resolve input: %v\", m.FullName(), err)\n\t\t\t}\n\t\t\tm.L1.Output, err = r.findMessageDescriptor(s.FullName(), partialName(md.GetOutputType()))\n\t\t\tif err != nil {\n\t\t\t\treturn errors.New(\"service method %q cannot resolve output: %v\", m.FullName(), err)\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\n// findTarget finds an enum or message descriptor if k is an enum, message,\n// group, or unknown. If unknown, and the name could be resolved, the kind\n// returned kind is set based on the type of the resolved descriptor.\nfunc (r *resolver) findTarget(k protoreflect.Kind, scope protoreflect.FullName, ref partialName) (protoreflect.Kind, protoreflect.EnumDescriptor, protoreflect.MessageDescriptor, error) {\n\tswitch k {\n\tcase protoreflect.EnumKind:\n\t\ted, err := r.findEnumDescriptor(scope, ref)\n\t\tif err != nil {\n\t\t\treturn 0, nil, nil, err\n\t\t}\n\t\treturn k, ed, nil, nil\n\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\tmd, err := r.findMessageDescriptor(scope, ref)\n\t\tif err != nil {\n\t\t\treturn 0, nil, nil, err\n\t\t}\n\t\treturn k, nil, md, nil\n\tcase 0:\n\t\t// Handle unspecified kinds (possible with parsers that operate\n\t\t// on a per-file basis without knowledge of dependencies).\n\t\td, err := r.findDescriptor(scope, ref)\n\t\tif err == protoregistry.NotFound && r.allowUnresolvable {\n\t\t\treturn k, filedesc.PlaceholderEnum(ref.FullName()), filedesc.PlaceholderMessage(ref.FullName()), nil\n\t\t} else if err == protoregistry.NotFound {\n\t\t\treturn 0, nil, nil, errors.New(\"%q not found\", ref.FullName())\n\t\t} else if err != nil {\n\t\t\treturn 0, nil, nil, err\n\t\t}\n\t\tswitch d := d.(type) {\n\t\tcase protoreflect.EnumDescriptor:\n\t\t\treturn protoreflect.EnumKind, d, nil, nil\n\t\tcase protoreflect.MessageDescriptor:\n\t\t\treturn protoreflect.MessageKind, nil, d, nil\n\t\tdefault:\n\t\t\treturn 0, nil, nil, errors.New(\"unknown kind\")\n\t\t}\n\tdefault:\n\t\tif ref != \"\" {\n\t\t\treturn 0, nil, nil, errors.New(\"target name cannot be specified for %v\", k)\n\t\t}\n\t\tif !k.IsValid() {\n\t\t\treturn 0, nil, nil, errors.New(\"invalid kind: %d\", k)\n\t\t}\n\t\treturn k, nil, nil, nil\n\t}\n}\n\n// findDescriptor finds the descriptor by name,\n// which may be a relative name within some scope.\n//\n// Suppose the scope was \"fizz.buzz\" and the reference was \"Foo.Bar\",\n// then the following full names are searched:\n//   - fizz.buzz.Foo.Bar\n//   - fizz.Foo.Bar\n//   - Foo.Bar\nfunc (r *resolver) findDescriptor(scope protoreflect.FullName, ref partialName) (protoreflect.Descriptor, error) {\n\tif !ref.IsValid() {\n\t\treturn nil, errors.New(\"invalid name reference: %q\", ref)\n\t}\n\tif ref.IsFull() {\n\t\tscope, ref = \"\", ref[1:]\n\t}\n\tvar foundButNotImported protoreflect.Descriptor\n\tfor {\n\t\t// Derive the full name to search.\n\t\ts := protoreflect.FullName(ref)\n\t\tif scope != \"\" {\n\t\t\ts = scope + \".\" + s\n\t\t}\n\n\t\t// Check the current file for the descriptor.\n\t\tif d, ok := r.local[s]; ok {\n\t\t\treturn d, nil\n\t\t}\n\n\t\t// Check the remote registry for the descriptor.\n\t\td, err := r.remote.FindDescriptorByName(s)\n\t\tif err == nil {\n\t\t\t// Only allow descriptors covered by one of the imports.\n\t\t\tif r.imports[d.ParentFile().Path()] {\n\t\t\t\treturn d, nil\n\t\t\t}\n\t\t\tfoundButNotImported = d\n\t\t} else if err != protoregistry.NotFound {\n\t\t\treturn nil, errors.Wrap(err, \"%q\", s)\n\t\t}\n\n\t\t// Continue on at a higher level of scoping.\n\t\tif scope == \"\" {\n\t\t\tif d := foundButNotImported; d != nil {\n\t\t\t\treturn nil, errors.New(\"resolved %q, but %q is not imported\", d.FullName(), d.ParentFile().Path())\n\t\t\t}\n\t\t\treturn nil, protoregistry.NotFound\n\t\t}\n\t\tscope = scope.Parent()\n\t}\n}\n\nfunc (r *resolver) findEnumDescriptor(scope protoreflect.FullName, ref partialName) (protoreflect.EnumDescriptor, error) {\n\td, err := r.findDescriptor(scope, ref)\n\tif err == protoregistry.NotFound && r.allowUnresolvable {\n\t\treturn filedesc.PlaceholderEnum(ref.FullName()), nil\n\t} else if err == protoregistry.NotFound {\n\t\treturn nil, errors.New(\"%q not found\", ref.FullName())\n\t} else if err != nil {\n\t\treturn nil, err\n\t}\n\ted, ok := d.(protoreflect.EnumDescriptor)\n\tif !ok {\n\t\treturn nil, errors.New(\"resolved %q, but it is not an enum\", d.FullName())\n\t}\n\treturn ed, nil\n}\n\nfunc (r *resolver) findMessageDescriptor(scope protoreflect.FullName, ref partialName) (protoreflect.MessageDescriptor, error) {\n\td, err := r.findDescriptor(scope, ref)\n\tif err == protoregistry.NotFound && r.allowUnresolvable {\n\t\treturn filedesc.PlaceholderMessage(ref.FullName()), nil\n\t} else if err == protoregistry.NotFound {\n\t\treturn nil, errors.New(\"%q not found\", ref.FullName())\n\t} else if err != nil {\n\t\treturn nil, err\n\t}\n\tmd, ok := d.(protoreflect.MessageDescriptor)\n\tif !ok {\n\t\treturn nil, errors.New(\"resolved %q, but it is not an message\", d.FullName())\n\t}\n\treturn md, nil\n}\n\n// partialName is the partial name. A leading dot means that the name is full,\n// otherwise the name is relative to some current scope.\n// See google.protobuf.FieldDescriptorProto.type_name.\ntype partialName string\n\nfunc (s partialName) IsFull() bool {\n\treturn len(s) > 0 && s[0] == '.'\n}\n\nfunc (s partialName) IsValid() bool {\n\tif s.IsFull() {\n\t\treturn protoreflect.FullName(s[1:]).IsValid()\n\t}\n\treturn protoreflect.FullName(s).IsValid()\n}\n\nconst unknownPrefix = \"*.\"\n\n// FullName converts the partial name to a full name on a best-effort basis.\n// If relative, it creates an invalid full name, using a \"*.\" prefix\n// to indicate that the start of the full name is unknown.\nfunc (s partialName) FullName() protoreflect.FullName {\n\tif s.IsFull() {\n\t\treturn protoreflect.FullName(s[1:])\n\t}\n\treturn protoreflect.FullName(unknownPrefix + s)\n}\n\nfunc unmarshalDefault(s string, fd protoreflect.FieldDescriptor, allowUnresolvable bool) (protoreflect.Value, protoreflect.EnumValueDescriptor, error) {\n\tvar evs protoreflect.EnumValueDescriptors\n\tif fd.Enum() != nil {\n\t\tevs = fd.Enum().Values()\n\t}\n\tv, ev, err := defval.Unmarshal(s, fd.Kind(), evs, defval.Descriptor)\n\tif err != nil && allowUnresolvable && evs != nil && protoreflect.Name(s).IsValid() {\n\t\tv = protoreflect.ValueOfEnum(0)\n\t\tif evs.Len() > 0 {\n\t\t\tv = protoreflect.ValueOfEnum(evs.Get(0).Number())\n\t\t}\n\t\tev = filedesc.PlaceholderEnumValue(fd.Enum().FullName().Parent().Append(protoreflect.Name(s)))\n\t} else if err != nil {\n\t\treturn v, ev, err\n\t}\n\tif !fd.HasPresence() {\n\t\treturn v, ev, errors.New(\"cannot be specified with implicit field presence\")\n\t}\n\tif fd.Kind() == protoreflect.MessageKind || fd.Kind() == protoreflect.GroupKind || fd.Cardinality() == protoreflect.Repeated {\n\t\treturn v, ev, errors.New(\"cannot be specified on composite types\")\n\t}\n\treturn v, ev, nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/reflect/protodesc/desc_validate.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage protodesc\n\nimport (\n\t\"strings\"\n\t\"unicode\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/internal/filedesc\"\n\t\"google.golang.org/protobuf/internal/flags\"\n\t\"google.golang.org/protobuf/internal/genid\"\n\t\"google.golang.org/protobuf/internal/strs\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\n\t\"google.golang.org/protobuf/types/descriptorpb\"\n)\n\nfunc validateEnumDeclarations(es []filedesc.Enum, eds []*descriptorpb.EnumDescriptorProto) error {\n\tfor i, ed := range eds {\n\t\te := &es[i]\n\t\tif err := e.L2.ReservedNames.CheckValid(); err != nil {\n\t\t\treturn errors.New(\"enum %q reserved names has %v\", e.FullName(), err)\n\t\t}\n\t\tif err := e.L2.ReservedRanges.CheckValid(); err != nil {\n\t\t\treturn errors.New(\"enum %q reserved ranges has %v\", e.FullName(), err)\n\t\t}\n\t\tif len(ed.GetValue()) == 0 {\n\t\t\treturn errors.New(\"enum %q must contain at least one value declaration\", e.FullName())\n\t\t}\n\t\tallowAlias := ed.GetOptions().GetAllowAlias()\n\t\tfoundAlias := false\n\t\tfor i := 0; i < e.Values().Len(); i++ {\n\t\t\tv1 := e.Values().Get(i)\n\t\t\tif v2 := e.Values().ByNumber(v1.Number()); v1 != v2 {\n\t\t\t\tfoundAlias = true\n\t\t\t\tif !allowAlias {\n\t\t\t\t\treturn errors.New(\"enum %q has conflicting non-aliased values on number %d: %q with %q\", e.FullName(), v1.Number(), v1.Name(), v2.Name())\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif allowAlias && !foundAlias {\n\t\t\treturn errors.New(\"enum %q allows aliases, but none were found\", e.FullName())\n\t\t}\n\t\tif !e.IsClosed() {\n\t\t\tif v := e.Values().Get(0); v.Number() != 0 {\n\t\t\t\treturn errors.New(\"enum %q using open semantics must have zero number for the first value\", v.FullName())\n\t\t\t}\n\t\t\t// Verify that value names in open enums do not conflict if the\n\t\t\t// case-insensitive prefix is removed.\n\t\t\t// See protoc v3.8.0: src/google/protobuf/descriptor.cc:4991-5055\n\t\t\tnames := map[string]protoreflect.EnumValueDescriptor{}\n\t\t\tprefix := strings.Replace(strings.ToLower(string(e.Name())), \"_\", \"\", -1)\n\t\t\tfor i := 0; i < e.Values().Len(); i++ {\n\t\t\t\tv1 := e.Values().Get(i)\n\t\t\t\ts := strs.EnumValueName(strs.TrimEnumPrefix(string(v1.Name()), prefix))\n\t\t\t\tif v2, ok := names[s]; ok && v1.Number() != v2.Number() {\n\t\t\t\t\treturn errors.New(\"enum %q using open semantics has conflict: %q with %q\", e.FullName(), v1.Name(), v2.Name())\n\t\t\t\t}\n\t\t\t\tnames[s] = v1\n\t\t\t}\n\t\t}\n\n\t\tfor j, vd := range ed.GetValue() {\n\t\t\tv := &e.L2.Values.List[j]\n\t\t\tif vd.Number == nil {\n\t\t\t\treturn errors.New(\"enum value %q must have a specified number\", v.FullName())\n\t\t\t}\n\t\t\tif e.L2.ReservedNames.Has(v.Name()) {\n\t\t\t\treturn errors.New(\"enum value %q must not use reserved name\", v.FullName())\n\t\t\t}\n\t\t\tif e.L2.ReservedRanges.Has(v.Number()) {\n\t\t\t\treturn errors.New(\"enum value %q must not use reserved number %d\", v.FullName(), v.Number())\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc validateMessageDeclarations(file *filedesc.File, ms []filedesc.Message, mds []*descriptorpb.DescriptorProto) error {\n\t// There are a few limited exceptions only for proto3\n\tisProto3 := file.L1.Edition == fromEditionProto(descriptorpb.Edition_EDITION_PROTO3)\n\tfor i, md := range mds {\n\t\tm := &ms[i]\n\n\t\t// Handle the message descriptor itself.\n\t\tisMessageSet := md.GetOptions().GetMessageSetWireFormat()\n\t\tif err := m.L2.ReservedNames.CheckValid(); err != nil {\n\t\t\treturn errors.New(\"message %q reserved names has %v\", m.FullName(), err)\n\t\t}\n\t\tif err := m.L2.ReservedRanges.CheckValid(isMessageSet); err != nil {\n\t\t\treturn errors.New(\"message %q reserved ranges has %v\", m.FullName(), err)\n\t\t}\n\t\tif err := m.L2.ExtensionRanges.CheckValid(isMessageSet); err != nil {\n\t\t\treturn errors.New(\"message %q extension ranges has %v\", m.FullName(), err)\n\t\t}\n\t\tif err := (*filedesc.FieldRanges).CheckOverlap(&m.L2.ReservedRanges, &m.L2.ExtensionRanges); err != nil {\n\t\t\treturn errors.New(\"message %q reserved and extension ranges has %v\", m.FullName(), err)\n\t\t}\n\t\tfor i := 0; i < m.Fields().Len(); i++ {\n\t\t\tf1 := m.Fields().Get(i)\n\t\t\tif f2 := m.Fields().ByNumber(f1.Number()); f1 != f2 {\n\t\t\t\treturn errors.New(\"message %q has conflicting fields: %q with %q\", m.FullName(), f1.Name(), f2.Name())\n\t\t\t}\n\t\t}\n\t\tif isMessageSet && !flags.ProtoLegacy {\n\t\t\treturn errors.New(\"message %q is a MessageSet, which is a legacy proto1 feature that is no longer supported\", m.FullName())\n\t\t}\n\t\tif isMessageSet && (isProto3 || m.Fields().Len() > 0 || m.ExtensionRanges().Len() == 0) {\n\t\t\treturn errors.New(\"message %q is an invalid proto1 MessageSet\", m.FullName())\n\t\t}\n\t\tif isProto3 {\n\t\t\tif m.ExtensionRanges().Len() > 0 {\n\t\t\t\treturn errors.New(\"message %q using proto3 semantics cannot have extension ranges\", m.FullName())\n\t\t\t}\n\t\t}\n\n\t\tfor j, fd := range md.GetField() {\n\t\t\tf := &m.L2.Fields.List[j]\n\t\t\tif m.L2.ReservedNames.Has(f.Name()) {\n\t\t\t\treturn errors.New(\"message field %q must not use reserved name\", f.FullName())\n\t\t\t}\n\t\t\tif !f.Number().IsValid() {\n\t\t\t\treturn errors.New(\"message field %q has an invalid number: %d\", f.FullName(), f.Number())\n\t\t\t}\n\t\t\tif !f.Cardinality().IsValid() {\n\t\t\t\treturn errors.New(\"message field %q has an invalid cardinality: %d\", f.FullName(), f.Cardinality())\n\t\t\t}\n\t\t\tif m.L2.ReservedRanges.Has(f.Number()) {\n\t\t\t\treturn errors.New(\"message field %q must not use reserved number %d\", f.FullName(), f.Number())\n\t\t\t}\n\t\t\tif m.L2.ExtensionRanges.Has(f.Number()) {\n\t\t\t\treturn errors.New(\"message field %q with number %d in extension range\", f.FullName(), f.Number())\n\t\t\t}\n\t\t\tif fd.Extendee != nil {\n\t\t\t\treturn errors.New(\"message field %q may not have extendee: %q\", f.FullName(), fd.GetExtendee())\n\t\t\t}\n\t\t\tif f.L1.IsProto3Optional {\n\t\t\t\tif !isProto3 {\n\t\t\t\t\treturn errors.New(\"message field %q under proto3 optional semantics must be specified in the proto3 syntax\", f.FullName())\n\t\t\t\t}\n\t\t\t\tif f.Cardinality() != protoreflect.Optional {\n\t\t\t\t\treturn errors.New(\"message field %q under proto3 optional semantics must have optional cardinality\", f.FullName())\n\t\t\t\t}\n\t\t\t\tif f.ContainingOneof() != nil && f.ContainingOneof().Fields().Len() != 1 {\n\t\t\t\t\treturn errors.New(\"message field %q under proto3 optional semantics must be within a single element oneof\", f.FullName())\n\t\t\t\t}\n\t\t\t}\n\t\t\tif f.IsPacked() && !isPackable(f) {\n\t\t\t\treturn errors.New(\"message field %q is not packable\", f.FullName())\n\t\t\t}\n\t\t\tif err := checkValidGroup(file, f); err != nil {\n\t\t\t\treturn errors.New(\"message field %q is an invalid group: %v\", f.FullName(), err)\n\t\t\t}\n\t\t\tif err := checkValidMap(f); err != nil {\n\t\t\t\treturn errors.New(\"message field %q is an invalid map: %v\", f.FullName(), err)\n\t\t\t}\n\t\t\tif isProto3 {\n\t\t\t\tif f.Cardinality() == protoreflect.Required {\n\t\t\t\t\treturn errors.New(\"message field %q using proto3 semantics cannot be required\", f.FullName())\n\t\t\t\t}\n\t\t\t\tif f.Enum() != nil && !f.Enum().IsPlaceholder() && f.Enum().IsClosed() {\n\t\t\t\t\treturn errors.New(\"message field %q using proto3 semantics may only depend on open enums\", f.FullName())\n\t\t\t\t}\n\t\t\t}\n\t\t\tif f.Cardinality() == protoreflect.Optional && !f.HasPresence() && f.Enum() != nil && !f.Enum().IsPlaceholder() && f.Enum().IsClosed() {\n\t\t\t\treturn errors.New(\"message field %q with implicit presence may only use open enums\", f.FullName())\n\t\t\t}\n\t\t}\n\t\tseenSynthetic := false // synthetic oneofs for proto3 optional must come after real oneofs\n\t\tfor j := range md.GetOneofDecl() {\n\t\t\to := &m.L2.Oneofs.List[j]\n\t\t\tif o.Fields().Len() == 0 {\n\t\t\t\treturn errors.New(\"message oneof %q must contain at least one field declaration\", o.FullName())\n\t\t\t}\n\t\t\tif n := o.Fields().Len(); n-1 != (o.Fields().Get(n-1).Index() - o.Fields().Get(0).Index()) {\n\t\t\t\treturn errors.New(\"message oneof %q must have consecutively declared fields\", o.FullName())\n\t\t\t}\n\n\t\t\tif o.IsSynthetic() {\n\t\t\t\tseenSynthetic = true\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif !o.IsSynthetic() && seenSynthetic {\n\t\t\t\treturn errors.New(\"message oneof %q must be declared before synthetic oneofs\", o.FullName())\n\t\t\t}\n\n\t\t\tfor i := 0; i < o.Fields().Len(); i++ {\n\t\t\t\tf := o.Fields().Get(i)\n\t\t\t\tif f.Cardinality() != protoreflect.Optional {\n\t\t\t\t\treturn errors.New(\"message field %q belongs in a oneof and must be optional\", f.FullName())\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif err := validateEnumDeclarations(m.L1.Enums.List, md.GetEnumType()); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif err := validateMessageDeclarations(file, m.L1.Messages.List, md.GetNestedType()); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif err := validateExtensionDeclarations(file, m.L1.Extensions.List, md.GetExtension()); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc validateExtensionDeclarations(f *filedesc.File, xs []filedesc.Extension, xds []*descriptorpb.FieldDescriptorProto) error {\n\tfor i, xd := range xds {\n\t\tx := &xs[i]\n\t\t// NOTE: Avoid using the IsValid method since extensions to MessageSet\n\t\t// may have a field number higher than normal. This check only verifies\n\t\t// that the number is not negative or reserved. We check again later\n\t\t// if we know that the extendee is definitely not a MessageSet.\n\t\tif n := x.Number(); n < 0 || (protowire.FirstReservedNumber <= n && n <= protowire.LastReservedNumber) {\n\t\t\treturn errors.New(\"extension field %q has an invalid number: %d\", x.FullName(), x.Number())\n\t\t}\n\t\tif !x.Cardinality().IsValid() || x.Cardinality() == protoreflect.Required {\n\t\t\treturn errors.New(\"extension field %q has an invalid cardinality: %d\", x.FullName(), x.Cardinality())\n\t\t}\n\t\tif xd.JsonName != nil {\n\t\t\t// A bug in older versions of protoc would always populate the\n\t\t\t// \"json_name\" option for extensions when it is meaningless.\n\t\t\t// When it did so, it would always use the camel-cased field name.\n\t\t\tif xd.GetJsonName() != strs.JSONCamelCase(string(x.Name())) {\n\t\t\t\treturn errors.New(\"extension field %q may not have an explicitly set JSON name: %q\", x.FullName(), xd.GetJsonName())\n\t\t\t}\n\t\t}\n\t\tif xd.OneofIndex != nil {\n\t\t\treturn errors.New(\"extension field %q may not be part of a oneof\", x.FullName())\n\t\t}\n\t\tif md := x.ContainingMessage(); !md.IsPlaceholder() {\n\t\t\tif !md.ExtensionRanges().Has(x.Number()) {\n\t\t\t\treturn errors.New(\"extension field %q extends %q with non-extension field number: %d\", x.FullName(), md.FullName(), x.Number())\n\t\t\t}\n\t\t\tisMessageSet := md.Options().(*descriptorpb.MessageOptions).GetMessageSetWireFormat()\n\t\t\tif isMessageSet && !isOptionalMessage(x) {\n\t\t\t\treturn errors.New(\"extension field %q extends MessageSet and must be an optional message\", x.FullName())\n\t\t\t}\n\t\t\tif !isMessageSet && !x.Number().IsValid() {\n\t\t\t\treturn errors.New(\"extension field %q has an invalid number: %d\", x.FullName(), x.Number())\n\t\t\t}\n\t\t}\n\t\tif x.IsPacked() && !isPackable(x) {\n\t\t\treturn errors.New(\"extension field %q is not packable\", x.FullName())\n\t\t}\n\t\tif err := checkValidGroup(f, x); err != nil {\n\t\t\treturn errors.New(\"extension field %q is an invalid group: %v\", x.FullName(), err)\n\t\t}\n\t\tif md := x.Message(); md != nil && md.IsMapEntry() {\n\t\t\treturn errors.New(\"extension field %q cannot be a map entry\", x.FullName())\n\t\t}\n\t\tif f.L1.Edition == fromEditionProto(descriptorpb.Edition_EDITION_PROTO3) {\n\t\t\tswitch x.ContainingMessage().FullName() {\n\t\t\tcase (*descriptorpb.FileOptions)(nil).ProtoReflect().Descriptor().FullName():\n\t\t\tcase (*descriptorpb.EnumOptions)(nil).ProtoReflect().Descriptor().FullName():\n\t\t\tcase (*descriptorpb.EnumValueOptions)(nil).ProtoReflect().Descriptor().FullName():\n\t\t\tcase (*descriptorpb.MessageOptions)(nil).ProtoReflect().Descriptor().FullName():\n\t\t\tcase (*descriptorpb.FieldOptions)(nil).ProtoReflect().Descriptor().FullName():\n\t\t\tcase (*descriptorpb.OneofOptions)(nil).ProtoReflect().Descriptor().FullName():\n\t\t\tcase (*descriptorpb.ExtensionRangeOptions)(nil).ProtoReflect().Descriptor().FullName():\n\t\t\tcase (*descriptorpb.ServiceOptions)(nil).ProtoReflect().Descriptor().FullName():\n\t\t\tcase (*descriptorpb.MethodOptions)(nil).ProtoReflect().Descriptor().FullName():\n\t\t\tdefault:\n\t\t\t\treturn errors.New(\"extension field %q cannot be declared in proto3 unless extended descriptor options\", x.FullName())\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\n// isOptionalMessage reports whether this is an optional message.\n// If the kind is unknown, it is assumed to be a message.\nfunc isOptionalMessage(fd protoreflect.FieldDescriptor) bool {\n\treturn (fd.Kind() == 0 || fd.Kind() == protoreflect.MessageKind) && fd.Cardinality() == protoreflect.Optional\n}\n\n// isPackable checks whether the pack option can be specified.\nfunc isPackable(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.Kind() {\n\tcase protoreflect.StringKind, protoreflect.BytesKind, protoreflect.MessageKind, protoreflect.GroupKind:\n\t\treturn false\n\t}\n\treturn fd.IsList()\n}\n\n// checkValidGroup reports whether fd is a valid group according to the same\n// rules that protoc imposes.\nfunc checkValidGroup(f *filedesc.File, fd protoreflect.FieldDescriptor) error {\n\tmd := fd.Message()\n\tswitch {\n\tcase fd.Kind() != protoreflect.GroupKind:\n\t\treturn nil\n\tcase f.L1.Edition == fromEditionProto(descriptorpb.Edition_EDITION_PROTO3):\n\t\treturn errors.New(\"invalid under proto3 semantics\")\n\tcase md == nil || md.IsPlaceholder():\n\t\treturn errors.New(\"message must be resolvable\")\n\t}\n\tif f.L1.Edition < fromEditionProto(descriptorpb.Edition_EDITION_2023) {\n\t\tswitch {\n\t\tcase fd.FullName().Parent() != md.FullName().Parent():\n\t\t\treturn errors.New(\"message and field must be declared in the same scope\")\n\t\tcase !unicode.IsUpper(rune(md.Name()[0])):\n\t\t\treturn errors.New(\"message name must start with an uppercase\")\n\t\tcase fd.Name() != protoreflect.Name(strings.ToLower(string(md.Name()))):\n\t\t\treturn errors.New(\"field name must be lowercased form of the message name\")\n\t\t}\n\t}\n\treturn nil\n}\n\n// checkValidMap checks whether the field is a valid map according to the same\n// rules that protoc imposes.\n// See protoc v3.8.0: src/google/protobuf/descriptor.cc:6045-6115\nfunc checkValidMap(fd protoreflect.FieldDescriptor) error {\n\tmd := fd.Message()\n\tswitch {\n\tcase md == nil || !md.IsMapEntry():\n\t\treturn nil\n\tcase fd.FullName().Parent() != md.FullName().Parent():\n\t\treturn errors.New(\"message and field must be declared in the same scope\")\n\tcase md.Name() != protoreflect.Name(strs.MapEntryName(string(fd.Name()))):\n\t\treturn errors.New(\"incorrect implicit map entry name\")\n\tcase fd.Cardinality() != protoreflect.Repeated:\n\t\treturn errors.New(\"field must be repeated\")\n\tcase md.Fields().Len() != 2:\n\t\treturn errors.New(\"message must have exactly two fields\")\n\tcase md.ExtensionRanges().Len() > 0:\n\t\treturn errors.New(\"message must not have any extension ranges\")\n\tcase md.Enums().Len()+md.Messages().Len()+md.Extensions().Len() > 0:\n\t\treturn errors.New(\"message must not have any nested declarations\")\n\t}\n\tkf := md.Fields().Get(0)\n\tvf := md.Fields().Get(1)\n\tswitch {\n\tcase kf.Name() != genid.MapEntry_Key_field_name || kf.Number() != genid.MapEntry_Key_field_number || kf.Cardinality() != protoreflect.Optional || kf.ContainingOneof() != nil || kf.HasDefault():\n\t\treturn errors.New(\"invalid key field\")\n\tcase vf.Name() != genid.MapEntry_Value_field_name || vf.Number() != genid.MapEntry_Value_field_number || vf.Cardinality() != protoreflect.Optional || vf.ContainingOneof() != nil || vf.HasDefault():\n\t\treturn errors.New(\"invalid value field\")\n\t}\n\tswitch kf.Kind() {\n\tcase protoreflect.BoolKind: // bool\n\tcase protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind: // int32\n\tcase protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind: // int64\n\tcase protoreflect.Uint32Kind, protoreflect.Fixed32Kind: // uint32\n\tcase protoreflect.Uint64Kind, protoreflect.Fixed64Kind: // uint64\n\tcase protoreflect.StringKind: // string\n\tdefault:\n\t\treturn errors.New(\"invalid key kind: %v\", kf.Kind())\n\t}\n\tif e := vf.Enum(); e != nil && e.Values().Len() > 0 && e.Values().Get(0).Number() != 0 {\n\t\treturn errors.New(\"map enum value must have zero number for the first value\")\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/reflect/protodesc/editions.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage protodesc\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"sync\"\n\n\t\"google.golang.org/protobuf/internal/editiondefaults\"\n\t\"google.golang.org/protobuf/internal/filedesc\"\n\t\"google.golang.org/protobuf/internal/genid\"\n\t\"google.golang.org/protobuf/proto\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/types/descriptorpb\"\n\t\"google.golang.org/protobuf/types/gofeaturespb\"\n)\n\nvar defaults = &descriptorpb.FeatureSetDefaults{}\nvar defaultsCacheMu sync.Mutex\nvar defaultsCache = make(map[filedesc.Edition]*descriptorpb.FeatureSet)\n\nfunc init() {\n\terr := proto.Unmarshal(editiondefaults.Defaults, defaults)\n\tif err != nil {\n\t\tfmt.Fprintf(os.Stderr, \"unmarshal editions defaults: %v\\n\", err)\n\t\tos.Exit(1)\n\t}\n}\n\nfunc fromEditionProto(epb descriptorpb.Edition) filedesc.Edition {\n\treturn filedesc.Edition(epb)\n}\n\nfunc toEditionProto(ed filedesc.Edition) descriptorpb.Edition {\n\tswitch ed {\n\tcase filedesc.EditionUnknown:\n\t\treturn descriptorpb.Edition_EDITION_UNKNOWN\n\tcase filedesc.EditionProto2:\n\t\treturn descriptorpb.Edition_EDITION_PROTO2\n\tcase filedesc.EditionProto3:\n\t\treturn descriptorpb.Edition_EDITION_PROTO3\n\tcase filedesc.Edition2023:\n\t\treturn descriptorpb.Edition_EDITION_2023\n\tcase filedesc.Edition2024:\n\t\treturn descriptorpb.Edition_EDITION_2024\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"unknown value for edition: %v\", ed))\n\t}\n}\n\nfunc getFeatureSetFor(ed filedesc.Edition) *descriptorpb.FeatureSet {\n\tdefaultsCacheMu.Lock()\n\tdefer defaultsCacheMu.Unlock()\n\tif def, ok := defaultsCache[ed]; ok {\n\t\treturn def\n\t}\n\tedpb := toEditionProto(ed)\n\tif defaults.GetMinimumEdition() > edpb || defaults.GetMaximumEdition() < edpb {\n\t\t// This should never happen protodesc.(FileOptions).New would fail when\n\t\t// initializing the file descriptor.\n\t\t// This most likely means the embedded defaults were not updated.\n\t\tfmt.Fprintf(os.Stderr, \"internal error: unsupported edition %v (did you forget to update the embedded defaults (i.e. the bootstrap descriptor proto)?)\\n\", edpb)\n\t\tos.Exit(1)\n\t}\n\tfsed := defaults.GetDefaults()[0]\n\t// Using a linear search for now.\n\t// Editions are guaranteed to be sorted and thus we could use a binary search.\n\t// Given that there are only a handful of editions (with one more per year)\n\t// there is not much reason to use a binary search.\n\tfor _, def := range defaults.GetDefaults() {\n\t\tif def.GetEdition() <= edpb {\n\t\t\tfsed = def\n\t\t} else {\n\t\t\tbreak\n\t\t}\n\t}\n\tfs := proto.Clone(fsed.GetFixedFeatures()).(*descriptorpb.FeatureSet)\n\tproto.Merge(fs, fsed.GetOverridableFeatures())\n\tdefaultsCache[ed] = fs\n\treturn fs\n}\n\n// mergeEditionFeatures merges the parent and child feature sets. This function\n// should be used when initializing Go descriptors from descriptor protos which\n// is why the parent is a filedesc.EditionsFeatures (Go representation) while\n// the child is a descriptorproto.FeatureSet (protoc representation).\n// Any feature set by the child overwrites what is set by the parent.\nfunc mergeEditionFeatures(parentDesc protoreflect.Descriptor, child *descriptorpb.FeatureSet) filedesc.EditionFeatures {\n\tvar parentFS filedesc.EditionFeatures\n\tswitch p := parentDesc.(type) {\n\tcase *filedesc.File:\n\t\tparentFS = p.L1.EditionFeatures\n\tcase *filedesc.Message:\n\t\tparentFS = p.L1.EditionFeatures\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"unknown parent type %T\", parentDesc))\n\t}\n\tif child == nil {\n\t\treturn parentFS\n\t}\n\tif fp := child.FieldPresence; fp != nil {\n\t\tparentFS.IsFieldPresence = *fp == descriptorpb.FeatureSet_LEGACY_REQUIRED ||\n\t\t\t*fp == descriptorpb.FeatureSet_EXPLICIT\n\t\tparentFS.IsLegacyRequired = *fp == descriptorpb.FeatureSet_LEGACY_REQUIRED\n\t}\n\tif et := child.EnumType; et != nil {\n\t\tparentFS.IsOpenEnum = *et == descriptorpb.FeatureSet_OPEN\n\t}\n\n\tif rfe := child.RepeatedFieldEncoding; rfe != nil {\n\t\tparentFS.IsPacked = *rfe == descriptorpb.FeatureSet_PACKED\n\t}\n\n\tif utf8val := child.Utf8Validation; utf8val != nil {\n\t\tparentFS.IsUTF8Validated = *utf8val == descriptorpb.FeatureSet_VERIFY\n\t}\n\n\tif me := child.MessageEncoding; me != nil {\n\t\tparentFS.IsDelimitedEncoded = *me == descriptorpb.FeatureSet_DELIMITED\n\t}\n\n\tif jf := child.JsonFormat; jf != nil {\n\t\tparentFS.IsJSONCompliant = *jf == descriptorpb.FeatureSet_ALLOW\n\t}\n\n\t// We must not use proto.GetExtension(child, gofeaturespb.E_Go)\n\t// because that only works for messages we generated, but not for\n\t// dynamicpb messages. See golang/protobuf#1669.\n\t//\n\t// Further, we harden this code against adversarial inputs: a\n\t// service which accepts descriptors from a possibly malicious\n\t// source shouldn't crash.\n\tgoFeatures := child.ProtoReflect().Get(gofeaturespb.E_Go.TypeDescriptor())\n\tif !goFeatures.IsValid() {\n\t\treturn parentFS\n\t}\n\tgf, ok := goFeatures.Interface().(protoreflect.Message)\n\tif !ok {\n\t\treturn parentFS\n\t}\n\t// gf.Interface() could be *dynamicpb.Message or *gofeaturespb.GoFeatures.\n\tfields := gf.Descriptor().Fields()\n\n\tif fd := fields.ByNumber(genid.GoFeatures_LegacyUnmarshalJsonEnum_field_number); fd != nil &&\n\t\t!fd.IsList() &&\n\t\tfd.Kind() == protoreflect.BoolKind &&\n\t\tgf.Has(fd) {\n\t\tparentFS.GenerateLegacyUnmarshalJSON = gf.Get(fd).Bool()\n\t}\n\n\tif fd := fields.ByNumber(genid.GoFeatures_StripEnumPrefix_field_number); fd != nil &&\n\t\t!fd.IsList() &&\n\t\tfd.Kind() == protoreflect.EnumKind &&\n\t\tgf.Has(fd) {\n\t\tparentFS.StripEnumPrefix = int(gf.Get(fd).Enum())\n\t}\n\n\tif fd := fields.ByNumber(genid.GoFeatures_ApiLevel_field_number); fd != nil &&\n\t\t!fd.IsList() &&\n\t\tfd.Kind() == protoreflect.EnumKind &&\n\t\tgf.Has(fd) {\n\t\tparentFS.APILevel = int(gf.Get(fd).Enum())\n\t}\n\n\treturn parentFS\n}\n\n// initFileDescFromFeatureSet initializes editions related fields in fd based\n// on fs. If fs is nil it is assumed to be an empty featureset and all fields\n// will be initialized with the appropriate default. fd.L1.Edition must be set\n// before calling this function.\nfunc initFileDescFromFeatureSet(fd *filedesc.File, fs *descriptorpb.FeatureSet) {\n\tdfs := getFeatureSetFor(fd.L1.Edition)\n\t// initialize the featureset with the defaults\n\tfd.L1.EditionFeatures = mergeEditionFeatures(fd, dfs)\n\t// overwrite any options explicitly specified\n\tfd.L1.EditionFeatures = mergeEditionFeatures(fd, fs)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/reflect/protodesc/proto.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage protodesc\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\t\"google.golang.org/protobuf/internal/encoding/defval\"\n\t\"google.golang.org/protobuf/internal/strs\"\n\t\"google.golang.org/protobuf/proto\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\n\t\"google.golang.org/protobuf/types/descriptorpb\"\n)\n\n// ToFileDescriptorProto copies a [protoreflect.FileDescriptor] into a\n// google.protobuf.FileDescriptorProto message.\nfunc ToFileDescriptorProto(file protoreflect.FileDescriptor) *descriptorpb.FileDescriptorProto {\n\tp := &descriptorpb.FileDescriptorProto{\n\t\tName:    proto.String(file.Path()),\n\t\tOptions: proto.Clone(file.Options()).(*descriptorpb.FileOptions),\n\t}\n\tif file.Package() != \"\" {\n\t\tp.Package = proto.String(string(file.Package()))\n\t}\n\tfor i, imports := 0, file.Imports(); i < imports.Len(); i++ {\n\t\timp := imports.Get(i)\n\t\tp.Dependency = append(p.Dependency, imp.Path())\n\t\tif imp.IsPublic {\n\t\t\tp.PublicDependency = append(p.PublicDependency, int32(i))\n\t\t}\n\t}\n\tfor i, locs := 0, file.SourceLocations(); i < locs.Len(); i++ {\n\t\tloc := locs.Get(i)\n\t\tl := &descriptorpb.SourceCodeInfo_Location{}\n\t\tl.Path = append(l.Path, loc.Path...)\n\t\tif loc.StartLine == loc.EndLine {\n\t\t\tl.Span = []int32{int32(loc.StartLine), int32(loc.StartColumn), int32(loc.EndColumn)}\n\t\t} else {\n\t\t\tl.Span = []int32{int32(loc.StartLine), int32(loc.StartColumn), int32(loc.EndLine), int32(loc.EndColumn)}\n\t\t}\n\t\tl.LeadingDetachedComments = append([]string(nil), loc.LeadingDetachedComments...)\n\t\tif loc.LeadingComments != \"\" {\n\t\t\tl.LeadingComments = proto.String(loc.LeadingComments)\n\t\t}\n\t\tif loc.TrailingComments != \"\" {\n\t\t\tl.TrailingComments = proto.String(loc.TrailingComments)\n\t\t}\n\t\tif p.SourceCodeInfo == nil {\n\t\t\tp.SourceCodeInfo = &descriptorpb.SourceCodeInfo{}\n\t\t}\n\t\tp.SourceCodeInfo.Location = append(p.SourceCodeInfo.Location, l)\n\n\t}\n\tfor i, messages := 0, file.Messages(); i < messages.Len(); i++ {\n\t\tp.MessageType = append(p.MessageType, ToDescriptorProto(messages.Get(i)))\n\t}\n\tfor i, enums := 0, file.Enums(); i < enums.Len(); i++ {\n\t\tp.EnumType = append(p.EnumType, ToEnumDescriptorProto(enums.Get(i)))\n\t}\n\tfor i, services := 0, file.Services(); i < services.Len(); i++ {\n\t\tp.Service = append(p.Service, ToServiceDescriptorProto(services.Get(i)))\n\t}\n\tfor i, exts := 0, file.Extensions(); i < exts.Len(); i++ {\n\t\tp.Extension = append(p.Extension, ToFieldDescriptorProto(exts.Get(i)))\n\t}\n\tif syntax := file.Syntax(); syntax != protoreflect.Proto2 && syntax.IsValid() {\n\t\tp.Syntax = proto.String(file.Syntax().String())\n\t}\n\tif file.Syntax() == protoreflect.Editions {\n\t\tdesc := file\n\t\tif fileImportDesc, ok := file.(protoreflect.FileImport); ok {\n\t\t\tdesc = fileImportDesc.FileDescriptor\n\t\t}\n\n\t\tif editionsInterface, ok := desc.(interface{ Edition() int32 }); ok {\n\t\t\tp.Edition = descriptorpb.Edition(editionsInterface.Edition()).Enum()\n\t\t}\n\t}\n\treturn p\n}\n\n// ToDescriptorProto copies a [protoreflect.MessageDescriptor] into a\n// google.protobuf.DescriptorProto message.\nfunc ToDescriptorProto(message protoreflect.MessageDescriptor) *descriptorpb.DescriptorProto {\n\tp := &descriptorpb.DescriptorProto{\n\t\tName:    proto.String(string(message.Name())),\n\t\tOptions: proto.Clone(message.Options()).(*descriptorpb.MessageOptions),\n\t}\n\tfor i, fields := 0, message.Fields(); i < fields.Len(); i++ {\n\t\tp.Field = append(p.Field, ToFieldDescriptorProto(fields.Get(i)))\n\t}\n\tfor i, exts := 0, message.Extensions(); i < exts.Len(); i++ {\n\t\tp.Extension = append(p.Extension, ToFieldDescriptorProto(exts.Get(i)))\n\t}\n\tfor i, messages := 0, message.Messages(); i < messages.Len(); i++ {\n\t\tp.NestedType = append(p.NestedType, ToDescriptorProto(messages.Get(i)))\n\t}\n\tfor i, enums := 0, message.Enums(); i < enums.Len(); i++ {\n\t\tp.EnumType = append(p.EnumType, ToEnumDescriptorProto(enums.Get(i)))\n\t}\n\tfor i, xranges := 0, message.ExtensionRanges(); i < xranges.Len(); i++ {\n\t\txrange := xranges.Get(i)\n\t\tp.ExtensionRange = append(p.ExtensionRange, &descriptorpb.DescriptorProto_ExtensionRange{\n\t\t\tStart:   proto.Int32(int32(xrange[0])),\n\t\t\tEnd:     proto.Int32(int32(xrange[1])),\n\t\t\tOptions: proto.Clone(message.ExtensionRangeOptions(i)).(*descriptorpb.ExtensionRangeOptions),\n\t\t})\n\t}\n\tfor i, oneofs := 0, message.Oneofs(); i < oneofs.Len(); i++ {\n\t\tp.OneofDecl = append(p.OneofDecl, ToOneofDescriptorProto(oneofs.Get(i)))\n\t}\n\tfor i, ranges := 0, message.ReservedRanges(); i < ranges.Len(); i++ {\n\t\trrange := ranges.Get(i)\n\t\tp.ReservedRange = append(p.ReservedRange, &descriptorpb.DescriptorProto_ReservedRange{\n\t\t\tStart: proto.Int32(int32(rrange[0])),\n\t\t\tEnd:   proto.Int32(int32(rrange[1])),\n\t\t})\n\t}\n\tfor i, names := 0, message.ReservedNames(); i < names.Len(); i++ {\n\t\tp.ReservedName = append(p.ReservedName, string(names.Get(i)))\n\t}\n\treturn p\n}\n\n// ToFieldDescriptorProto copies a [protoreflect.FieldDescriptor] into a\n// google.protobuf.FieldDescriptorProto message.\nfunc ToFieldDescriptorProto(field protoreflect.FieldDescriptor) *descriptorpb.FieldDescriptorProto {\n\tp := &descriptorpb.FieldDescriptorProto{\n\t\tName:    proto.String(string(field.Name())),\n\t\tNumber:  proto.Int32(int32(field.Number())),\n\t\tLabel:   descriptorpb.FieldDescriptorProto_Label(field.Cardinality()).Enum(),\n\t\tOptions: proto.Clone(field.Options()).(*descriptorpb.FieldOptions),\n\t}\n\tif field.IsExtension() {\n\t\tp.Extendee = fullNameOf(field.ContainingMessage())\n\t}\n\tif field.Kind().IsValid() {\n\t\tp.Type = descriptorpb.FieldDescriptorProto_Type(field.Kind()).Enum()\n\t}\n\tif field.Enum() != nil {\n\t\tp.TypeName = fullNameOf(field.Enum())\n\t}\n\tif field.Message() != nil {\n\t\tp.TypeName = fullNameOf(field.Message())\n\t}\n\tif field.HasJSONName() {\n\t\t// A bug in older versions of protoc would always populate the\n\t\t// \"json_name\" option for extensions when it is meaningless.\n\t\t// When it did so, it would always use the camel-cased field name.\n\t\tif field.IsExtension() {\n\t\t\tp.JsonName = proto.String(strs.JSONCamelCase(string(field.Name())))\n\t\t} else {\n\t\t\tp.JsonName = proto.String(field.JSONName())\n\t\t}\n\t}\n\tif field.Syntax() == protoreflect.Proto3 && field.HasOptionalKeyword() {\n\t\tp.Proto3Optional = proto.Bool(true)\n\t}\n\tif field.Syntax() == protoreflect.Editions {\n\t\t// Editions have no group keyword, this type is only set so that downstream users continue\n\t\t// treating this as delimited encoding.\n\t\tif p.GetType() == descriptorpb.FieldDescriptorProto_TYPE_GROUP {\n\t\t\tp.Type = descriptorpb.FieldDescriptorProto_TYPE_MESSAGE.Enum()\n\t\t}\n\t\t// Editions have no required keyword, this label is only set so that downstream users continue\n\t\t// treating it as required.\n\t\tif p.GetLabel() == descriptorpb.FieldDescriptorProto_LABEL_REQUIRED {\n\t\t\tp.Label = descriptorpb.FieldDescriptorProto_LABEL_OPTIONAL.Enum()\n\t\t}\n\t}\n\tif field.HasDefault() {\n\t\tdef, err := defval.Marshal(field.Default(), field.DefaultEnumValue(), field.Kind(), defval.Descriptor)\n\t\tif err != nil && field.DefaultEnumValue() != nil {\n\t\t\tdef = string(field.DefaultEnumValue().Name()) // occurs for unresolved enum values\n\t\t} else if err != nil {\n\t\t\tpanic(fmt.Sprintf(\"%v: %v\", field.FullName(), err))\n\t\t}\n\t\tp.DefaultValue = proto.String(def)\n\t}\n\tif oneof := field.ContainingOneof(); oneof != nil {\n\t\tp.OneofIndex = proto.Int32(int32(oneof.Index()))\n\t}\n\treturn p\n}\n\n// ToOneofDescriptorProto copies a [protoreflect.OneofDescriptor] into a\n// google.protobuf.OneofDescriptorProto message.\nfunc ToOneofDescriptorProto(oneof protoreflect.OneofDescriptor) *descriptorpb.OneofDescriptorProto {\n\treturn &descriptorpb.OneofDescriptorProto{\n\t\tName:    proto.String(string(oneof.Name())),\n\t\tOptions: proto.Clone(oneof.Options()).(*descriptorpb.OneofOptions),\n\t}\n}\n\n// ToEnumDescriptorProto copies a [protoreflect.EnumDescriptor] into a\n// google.protobuf.EnumDescriptorProto message.\nfunc ToEnumDescriptorProto(enum protoreflect.EnumDescriptor) *descriptorpb.EnumDescriptorProto {\n\tp := &descriptorpb.EnumDescriptorProto{\n\t\tName:    proto.String(string(enum.Name())),\n\t\tOptions: proto.Clone(enum.Options()).(*descriptorpb.EnumOptions),\n\t}\n\tfor i, values := 0, enum.Values(); i < values.Len(); i++ {\n\t\tp.Value = append(p.Value, ToEnumValueDescriptorProto(values.Get(i)))\n\t}\n\tfor i, ranges := 0, enum.ReservedRanges(); i < ranges.Len(); i++ {\n\t\trrange := ranges.Get(i)\n\t\tp.ReservedRange = append(p.ReservedRange, &descriptorpb.EnumDescriptorProto_EnumReservedRange{\n\t\t\tStart: proto.Int32(int32(rrange[0])),\n\t\t\tEnd:   proto.Int32(int32(rrange[1])),\n\t\t})\n\t}\n\tfor i, names := 0, enum.ReservedNames(); i < names.Len(); i++ {\n\t\tp.ReservedName = append(p.ReservedName, string(names.Get(i)))\n\t}\n\treturn p\n}\n\n// ToEnumValueDescriptorProto copies a [protoreflect.EnumValueDescriptor] into a\n// google.protobuf.EnumValueDescriptorProto message.\nfunc ToEnumValueDescriptorProto(value protoreflect.EnumValueDescriptor) *descriptorpb.EnumValueDescriptorProto {\n\treturn &descriptorpb.EnumValueDescriptorProto{\n\t\tName:    proto.String(string(value.Name())),\n\t\tNumber:  proto.Int32(int32(value.Number())),\n\t\tOptions: proto.Clone(value.Options()).(*descriptorpb.EnumValueOptions),\n\t}\n}\n\n// ToServiceDescriptorProto copies a [protoreflect.ServiceDescriptor] into a\n// google.protobuf.ServiceDescriptorProto message.\nfunc ToServiceDescriptorProto(service protoreflect.ServiceDescriptor) *descriptorpb.ServiceDescriptorProto {\n\tp := &descriptorpb.ServiceDescriptorProto{\n\t\tName:    proto.String(string(service.Name())),\n\t\tOptions: proto.Clone(service.Options()).(*descriptorpb.ServiceOptions),\n\t}\n\tfor i, methods := 0, service.Methods(); i < methods.Len(); i++ {\n\t\tp.Method = append(p.Method, ToMethodDescriptorProto(methods.Get(i)))\n\t}\n\treturn p\n}\n\n// ToMethodDescriptorProto copies a [protoreflect.MethodDescriptor] into a\n// google.protobuf.MethodDescriptorProto message.\nfunc ToMethodDescriptorProto(method protoreflect.MethodDescriptor) *descriptorpb.MethodDescriptorProto {\n\tp := &descriptorpb.MethodDescriptorProto{\n\t\tName:       proto.String(string(method.Name())),\n\t\tInputType:  fullNameOf(method.Input()),\n\t\tOutputType: fullNameOf(method.Output()),\n\t\tOptions:    proto.Clone(method.Options()).(*descriptorpb.MethodOptions),\n\t}\n\tif method.IsStreamingClient() {\n\t\tp.ClientStreaming = proto.Bool(true)\n\t}\n\tif method.IsStreamingServer() {\n\t\tp.ServerStreaming = proto.Bool(true)\n\t}\n\treturn p\n}\n\nfunc fullNameOf(d protoreflect.Descriptor) *string {\n\tif d == nil {\n\t\treturn nil\n\t}\n\tif strings.HasPrefix(string(d.FullName()), unknownPrefix) {\n\t\treturn proto.String(string(d.FullName()[len(unknownPrefix):]))\n\t}\n\treturn proto.String(\".\" + string(d.FullName()))\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/reflect/protoreflect/methods.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage protoreflect\n\nimport (\n\t\"google.golang.org/protobuf/internal/pragma\"\n)\n\n// The following types are used by the fast-path Message.ProtoMethods method.\n//\n// To avoid polluting the public protoreflect API with types used only by\n// low-level implementations, the canonical definitions of these types are\n// in the runtime/protoiface package. The definitions here and in protoiface\n// must be kept in sync.\ntype (\n\tmethods = struct {\n\t\tpragma.NoUnkeyedLiterals\n\t\tFlags            supportFlags\n\t\tSize             func(sizeInput) sizeOutput\n\t\tMarshal          func(marshalInput) (marshalOutput, error)\n\t\tUnmarshal        func(unmarshalInput) (unmarshalOutput, error)\n\t\tMerge            func(mergeInput) mergeOutput\n\t\tCheckInitialized func(checkInitializedInput) (checkInitializedOutput, error)\n\t\tEqual            func(equalInput) equalOutput\n\t}\n\tsupportFlags = uint64\n\tsizeInput    = struct {\n\t\tpragma.NoUnkeyedLiterals\n\t\tMessage Message\n\t\tFlags   uint8\n\t}\n\tsizeOutput = struct {\n\t\tpragma.NoUnkeyedLiterals\n\t\tSize int\n\t}\n\tmarshalInput = struct {\n\t\tpragma.NoUnkeyedLiterals\n\t\tMessage Message\n\t\tBuf     []byte\n\t\tFlags   uint8\n\t}\n\tmarshalOutput = struct {\n\t\tpragma.NoUnkeyedLiterals\n\t\tBuf []byte\n\t}\n\tunmarshalInput = struct {\n\t\tpragma.NoUnkeyedLiterals\n\t\tMessage  Message\n\t\tBuf      []byte\n\t\tFlags    uint8\n\t\tResolver interface {\n\t\t\tFindExtensionByName(field FullName) (ExtensionType, error)\n\t\t\tFindExtensionByNumber(message FullName, field FieldNumber) (ExtensionType, error)\n\t\t}\n\t\tDepth int\n\t}\n\tunmarshalOutput = struct {\n\t\tpragma.NoUnkeyedLiterals\n\t\tFlags uint8\n\t}\n\tmergeInput = struct {\n\t\tpragma.NoUnkeyedLiterals\n\t\tSource      Message\n\t\tDestination Message\n\t}\n\tmergeOutput = struct {\n\t\tpragma.NoUnkeyedLiterals\n\t\tFlags uint8\n\t}\n\tcheckInitializedInput = struct {\n\t\tpragma.NoUnkeyedLiterals\n\t\tMessage Message\n\t}\n\tcheckInitializedOutput = struct {\n\t\tpragma.NoUnkeyedLiterals\n\t}\n\tequalInput = struct {\n\t\tpragma.NoUnkeyedLiterals\n\t\tMessageA Message\n\t\tMessageB Message\n\t}\n\tequalOutput = struct {\n\t\tpragma.NoUnkeyedLiterals\n\t\tEqual bool\n\t}\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/reflect/protoreflect/proto.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package protoreflect provides interfaces to dynamically manipulate messages.\n//\n// This package includes type descriptors which describe the structure of types\n// defined in proto source files and value interfaces which provide the\n// ability to examine and manipulate the contents of messages.\n//\n// # Protocol Buffer Descriptors\n//\n// Protobuf descriptors (e.g., [EnumDescriptor] or [MessageDescriptor])\n// are immutable objects that represent protobuf type information.\n// They are wrappers around the messages declared in descriptor.proto.\n// Protobuf descriptors alone lack any information regarding Go types.\n//\n// Enums and messages generated by this module implement [Enum] and [ProtoMessage],\n// where the Descriptor and ProtoReflect.Descriptor accessors respectively\n// return the protobuf descriptor for the values.\n//\n// The protobuf descriptor interfaces are not meant to be implemented by\n// user code since they might need to be extended in the future to support\n// additions to the protobuf language.\n// The [google.golang.org/protobuf/reflect/protodesc] package converts between\n// google.protobuf.DescriptorProto messages and protobuf descriptors.\n//\n// # Go Type Descriptors\n//\n// A type descriptor (e.g., [EnumType] or [MessageType]) is a constructor for\n// a concrete Go type that represents the associated protobuf descriptor.\n// There is commonly a one-to-one relationship between protobuf descriptors and\n// Go type descriptors, but it can potentially be a one-to-many relationship.\n//\n// Enums and messages generated by this module implement [Enum] and [ProtoMessage],\n// where the Type and ProtoReflect.Type accessors respectively\n// return the protobuf descriptor for the values.\n//\n// The [google.golang.org/protobuf/types/dynamicpb] package can be used to\n// create Go type descriptors from protobuf descriptors.\n//\n// # Value Interfaces\n//\n// The [Enum] and [Message] interfaces provide a reflective view over an\n// enum or message instance. For enums, it provides the ability to retrieve\n// the enum value number for any concrete enum type. For messages, it provides\n// the ability to access or manipulate fields of the message.\n//\n// To convert a [google.golang.org/protobuf/proto.Message] to a [protoreflect.Message], use the\n// former's ProtoReflect method. Since the ProtoReflect method is new to the\n// v2 message interface, it may not be present on older message implementations.\n// The [github.com/golang/protobuf/proto.MessageReflect] function can be used\n// to obtain a reflective view on older messages.\n//\n// # Relationships\n//\n// The following diagrams demonstrate the relationships between\n// various types declared in this package.\n//\n//\t                       ┌───────────────────────────────────┐\n//\t                       V                                   │\n//\t   ┌────────────── New(n) ─────────────┐                   │\n//\t   │                                   │                   │\n//\t   │      ┌──── Descriptor() ──┐       │  ┌── Number() ──┐ │\n//\t   │      │                    V       V  │              V │\n//\t╔════════════╗  ╔════════════════╗  ╔════════╗  ╔════════════╗\n//\t║  EnumType  ║  ║ EnumDescriptor ║  ║  Enum  ║  ║ EnumNumber ║\n//\t╚════════════╝  ╚════════════════╝  ╚════════╝  ╚════════════╝\n//\t      Λ           Λ                   │ │\n//\t      │           └─── Descriptor() ──┘ │\n//\t      │                                 │\n//\t      └────────────────── Type() ───────┘\n//\n// • An [EnumType] describes a concrete Go enum type.\n// It has an EnumDescriptor and can construct an Enum instance.\n//\n// • An [EnumDescriptor] describes an abstract protobuf enum type.\n//\n// • An [Enum] is a concrete enum instance. Generated enums implement Enum.\n//\n//\t  ┌──────────────── New() ─────────────────┐\n//\t  │                                        │\n//\t  │         ┌─── Descriptor() ─────┐       │   ┌── Interface() ───┐\n//\t  │         │                      V       V   │                  V\n//\t╔═════════════╗  ╔═══════════════════╗  ╔═════════╗  ╔══════════════╗\n//\t║ MessageType ║  ║ MessageDescriptor ║  ║ Message ║  ║ ProtoMessage ║\n//\t╚═════════════╝  ╚═══════════════════╝  ╚═════════╝  ╚══════════════╝\n//\t       Λ           Λ                      │ │  Λ                  │\n//\t       │           └──── Descriptor() ────┘ │  └─ ProtoReflect() ─┘\n//\t       │                                    │\n//\t       └─────────────────── Type() ─────────┘\n//\n// • A [MessageType] describes a concrete Go message type.\n// It has a [MessageDescriptor] and can construct a [Message] instance.\n// Just as how Go's [reflect.Type] is a reflective description of a Go type,\n// a [MessageType] is a reflective description of a Go type for a protobuf message.\n//\n// • A [MessageDescriptor] describes an abstract protobuf message type.\n// It has no understanding of Go types. In order to construct a [MessageType]\n// from just a [MessageDescriptor], you can consider looking up the message type\n// in the global registry using the FindMessageByName method on\n// [google.golang.org/protobuf/reflect/protoregistry.GlobalTypes]\n// or constructing a dynamic [MessageType] using\n// [google.golang.org/protobuf/types/dynamicpb.NewMessageType].\n//\n// • A [Message] is a reflective view over a concrete message instance.\n// Generated messages implement [ProtoMessage], which can convert to a [Message].\n// Just as how Go's [reflect.Value] is a reflective view over a Go value,\n// a [Message] is a reflective view over a concrete protobuf message instance.\n// Using Go reflection as an analogy, the [ProtoMessage.ProtoReflect] method is similar to\n// calling [reflect.ValueOf], and the [Message.Interface] method is similar to\n// calling [reflect.Value.Interface].\n//\n//\t      ┌── TypeDescriptor() ──┐    ┌───── Descriptor() ─────┐\n//\t      │                      V    │                        V\n//\t╔═══════════════╗  ╔═════════════════════════╗  ╔═════════════════════╗\n//\t║ ExtensionType ║  ║ ExtensionTypeDescriptor ║  ║ ExtensionDescriptor ║\n//\t╚═══════════════╝  ╚═════════════════════════╝  ╚═════════════════════╝\n//\t      Λ                      │   │ Λ                      │ Λ\n//\t      └─────── Type() ───────┘   │ └─── may implement ────┘ │\n//\t                                 │                          │\n//\t                                 └────── implements ────────┘\n//\n// • An [ExtensionType] describes a concrete Go implementation of an extension.\n// It has an [ExtensionTypeDescriptor] and can convert to/from\n// an abstract [Value] and a Go value.\n//\n// • An [ExtensionTypeDescriptor] is an [ExtensionDescriptor]\n// which also has an [ExtensionType].\n//\n// • An [ExtensionDescriptor] describes an abstract protobuf extension field and\n// may not always be an [ExtensionTypeDescriptor].\npackage protoreflect\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/pragma\"\n)\n\ntype doNotImplement pragma.DoNotImplement\n\n// ProtoMessage is the top-level interface that all proto messages implement.\n// This is declared in the protoreflect package to avoid a cyclic dependency;\n// use the [google.golang.org/protobuf/proto.Message] type instead, which aliases this type.\ntype ProtoMessage interface{ ProtoReflect() Message }\n\n// Syntax is the language version of the proto file.\ntype Syntax syntax\n\ntype syntax int8 // keep exact type opaque as the int type may change\n\nconst (\n\tProto2   Syntax = 2\n\tProto3   Syntax = 3\n\tEditions Syntax = 4\n)\n\n// IsValid reports whether the syntax is valid.\nfunc (s Syntax) IsValid() bool {\n\tswitch s {\n\tcase Proto2, Proto3, Editions:\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\n// String returns s as a proto source identifier (e.g., \"proto2\").\nfunc (s Syntax) String() string {\n\tswitch s {\n\tcase Proto2:\n\t\treturn \"proto2\"\n\tcase Proto3:\n\t\treturn \"proto3\"\n\tcase Editions:\n\t\treturn \"editions\"\n\tdefault:\n\t\treturn fmt.Sprintf(\"<unknown:%d>\", s)\n\t}\n}\n\n// GoString returns s as a Go source identifier (e.g., \"Proto2\").\nfunc (s Syntax) GoString() string {\n\tswitch s {\n\tcase Proto2:\n\t\treturn \"Proto2\"\n\tcase Proto3:\n\t\treturn \"Proto3\"\n\tdefault:\n\t\treturn fmt.Sprintf(\"Syntax(%d)\", s)\n\t}\n}\n\n// Cardinality determines whether a field is optional, required, or repeated.\ntype Cardinality cardinality\n\ntype cardinality int8 // keep exact type opaque as the int type may change\n\n// Constants as defined by the google.protobuf.Cardinality enumeration.\nconst (\n\tOptional Cardinality = 1 // appears zero or one times\n\tRequired Cardinality = 2 // appears exactly one time; invalid with Proto3\n\tRepeated Cardinality = 3 // appears zero or more times\n)\n\n// IsValid reports whether the cardinality is valid.\nfunc (c Cardinality) IsValid() bool {\n\tswitch c {\n\tcase Optional, Required, Repeated:\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\n// String returns c as a proto source identifier (e.g., \"optional\").\nfunc (c Cardinality) String() string {\n\tswitch c {\n\tcase Optional:\n\t\treturn \"optional\"\n\tcase Required:\n\t\treturn \"required\"\n\tcase Repeated:\n\t\treturn \"repeated\"\n\tdefault:\n\t\treturn fmt.Sprintf(\"<unknown:%d>\", c)\n\t}\n}\n\n// GoString returns c as a Go source identifier (e.g., \"Optional\").\nfunc (c Cardinality) GoString() string {\n\tswitch c {\n\tcase Optional:\n\t\treturn \"Optional\"\n\tcase Required:\n\t\treturn \"Required\"\n\tcase Repeated:\n\t\treturn \"Repeated\"\n\tdefault:\n\t\treturn fmt.Sprintf(\"Cardinality(%d)\", c)\n\t}\n}\n\n// Kind indicates the basic proto kind of a field.\ntype Kind kind\n\ntype kind int8 // keep exact type opaque as the int type may change\n\n// Constants as defined by the google.protobuf.Field.Kind enumeration.\nconst (\n\tBoolKind     Kind = 8\n\tEnumKind     Kind = 14\n\tInt32Kind    Kind = 5\n\tSint32Kind   Kind = 17\n\tUint32Kind   Kind = 13\n\tInt64Kind    Kind = 3\n\tSint64Kind   Kind = 18\n\tUint64Kind   Kind = 4\n\tSfixed32Kind Kind = 15\n\tFixed32Kind  Kind = 7\n\tFloatKind    Kind = 2\n\tSfixed64Kind Kind = 16\n\tFixed64Kind  Kind = 6\n\tDoubleKind   Kind = 1\n\tStringKind   Kind = 9\n\tBytesKind    Kind = 12\n\tMessageKind  Kind = 11\n\tGroupKind    Kind = 10\n)\n\n// IsValid reports whether the kind is valid.\nfunc (k Kind) IsValid() bool {\n\tswitch k {\n\tcase BoolKind, EnumKind,\n\t\tInt32Kind, Sint32Kind, Uint32Kind,\n\t\tInt64Kind, Sint64Kind, Uint64Kind,\n\t\tSfixed32Kind, Fixed32Kind, FloatKind,\n\t\tSfixed64Kind, Fixed64Kind, DoubleKind,\n\t\tStringKind, BytesKind, MessageKind, GroupKind:\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\n// String returns k as a proto source identifier (e.g., \"bool\").\nfunc (k Kind) String() string {\n\tswitch k {\n\tcase BoolKind:\n\t\treturn \"bool\"\n\tcase EnumKind:\n\t\treturn \"enum\"\n\tcase Int32Kind:\n\t\treturn \"int32\"\n\tcase Sint32Kind:\n\t\treturn \"sint32\"\n\tcase Uint32Kind:\n\t\treturn \"uint32\"\n\tcase Int64Kind:\n\t\treturn \"int64\"\n\tcase Sint64Kind:\n\t\treturn \"sint64\"\n\tcase Uint64Kind:\n\t\treturn \"uint64\"\n\tcase Sfixed32Kind:\n\t\treturn \"sfixed32\"\n\tcase Fixed32Kind:\n\t\treturn \"fixed32\"\n\tcase FloatKind:\n\t\treturn \"float\"\n\tcase Sfixed64Kind:\n\t\treturn \"sfixed64\"\n\tcase Fixed64Kind:\n\t\treturn \"fixed64\"\n\tcase DoubleKind:\n\t\treturn \"double\"\n\tcase StringKind:\n\t\treturn \"string\"\n\tcase BytesKind:\n\t\treturn \"bytes\"\n\tcase MessageKind:\n\t\treturn \"message\"\n\tcase GroupKind:\n\t\treturn \"group\"\n\tdefault:\n\t\treturn fmt.Sprintf(\"<unknown:%d>\", k)\n\t}\n}\n\n// GoString returns k as a Go source identifier (e.g., \"BoolKind\").\nfunc (k Kind) GoString() string {\n\tswitch k {\n\tcase BoolKind:\n\t\treturn \"BoolKind\"\n\tcase EnumKind:\n\t\treturn \"EnumKind\"\n\tcase Int32Kind:\n\t\treturn \"Int32Kind\"\n\tcase Sint32Kind:\n\t\treturn \"Sint32Kind\"\n\tcase Uint32Kind:\n\t\treturn \"Uint32Kind\"\n\tcase Int64Kind:\n\t\treturn \"Int64Kind\"\n\tcase Sint64Kind:\n\t\treturn \"Sint64Kind\"\n\tcase Uint64Kind:\n\t\treturn \"Uint64Kind\"\n\tcase Sfixed32Kind:\n\t\treturn \"Sfixed32Kind\"\n\tcase Fixed32Kind:\n\t\treturn \"Fixed32Kind\"\n\tcase FloatKind:\n\t\treturn \"FloatKind\"\n\tcase Sfixed64Kind:\n\t\treturn \"Sfixed64Kind\"\n\tcase Fixed64Kind:\n\t\treturn \"Fixed64Kind\"\n\tcase DoubleKind:\n\t\treturn \"DoubleKind\"\n\tcase StringKind:\n\t\treturn \"StringKind\"\n\tcase BytesKind:\n\t\treturn \"BytesKind\"\n\tcase MessageKind:\n\t\treturn \"MessageKind\"\n\tcase GroupKind:\n\t\treturn \"GroupKind\"\n\tdefault:\n\t\treturn fmt.Sprintf(\"Kind(%d)\", k)\n\t}\n}\n\n// FieldNumber is the field number in a message.\ntype FieldNumber = protowire.Number\n\n// FieldNumbers represent a list of field numbers.\ntype FieldNumbers interface {\n\t// Len reports the number of fields in the list.\n\tLen() int\n\t// Get returns the ith field number. It panics if out of bounds.\n\tGet(i int) FieldNumber\n\t// Has reports whether n is within the list of fields.\n\tHas(n FieldNumber) bool\n\n\tdoNotImplement\n}\n\n// FieldRanges represent a list of field number ranges.\ntype FieldRanges interface {\n\t// Len reports the number of ranges in the list.\n\tLen() int\n\t// Get returns the ith range. It panics if out of bounds.\n\tGet(i int) [2]FieldNumber // start inclusive; end exclusive\n\t// Has reports whether n is within any of the ranges.\n\tHas(n FieldNumber) bool\n\n\tdoNotImplement\n}\n\n// EnumNumber is the numeric value for an enum.\ntype EnumNumber int32\n\n// EnumRanges represent a list of enum number ranges.\ntype EnumRanges interface {\n\t// Len reports the number of ranges in the list.\n\tLen() int\n\t// Get returns the ith range. It panics if out of bounds.\n\tGet(i int) [2]EnumNumber // start inclusive; end inclusive\n\t// Has reports whether n is within any of the ranges.\n\tHas(n EnumNumber) bool\n\n\tdoNotImplement\n}\n\n// Name is the short name for a proto declaration. This is not the name\n// as used in Go source code, which might not be identical to the proto name.\ntype Name string // e.g., \"Kind\"\n\n// IsValid reports whether s is a syntactically valid name.\n// An empty name is invalid.\nfunc (s Name) IsValid() bool {\n\treturn consumeIdent(string(s)) == len(s)\n}\n\n// Names represent a list of names.\ntype Names interface {\n\t// Len reports the number of names in the list.\n\tLen() int\n\t// Get returns the ith name. It panics if out of bounds.\n\tGet(i int) Name\n\t// Has reports whether s matches any names in the list.\n\tHas(s Name) bool\n\n\tdoNotImplement\n}\n\n// FullName is a qualified name that uniquely identifies a proto declaration.\n// A qualified name is the concatenation of the proto package along with the\n// fully-declared name (i.e., name of parent preceding the name of the child),\n// with a '.' delimiter placed between each [Name].\n//\n// This should not have any leading or trailing dots.\ntype FullName string // e.g., \"google.protobuf.Field.Kind\"\n\n// IsValid reports whether s is a syntactically valid full name.\n// An empty full name is invalid.\nfunc (s FullName) IsValid() bool {\n\ti := consumeIdent(string(s))\n\tif i < 0 {\n\t\treturn false\n\t}\n\tfor len(s) > i {\n\t\tif s[i] != '.' {\n\t\t\treturn false\n\t\t}\n\t\ti++\n\t\tn := consumeIdent(string(s[i:]))\n\t\tif n < 0 {\n\t\t\treturn false\n\t\t}\n\t\ti += n\n\t}\n\treturn true\n}\n\nfunc consumeIdent(s string) (i int) {\n\tif len(s) == 0 || !isLetter(s[i]) {\n\t\treturn -1\n\t}\n\ti++\n\tfor len(s) > i && isLetterDigit(s[i]) {\n\t\ti++\n\t}\n\treturn i\n}\nfunc isLetter(c byte) bool {\n\treturn c == '_' || ('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z')\n}\nfunc isLetterDigit(c byte) bool {\n\treturn isLetter(c) || ('0' <= c && c <= '9')\n}\n\n// Name returns the short name, which is the last identifier segment.\n// A single segment FullName is the [Name] itself.\nfunc (n FullName) Name() Name {\n\tif i := strings.LastIndexByte(string(n), '.'); i >= 0 {\n\t\treturn Name(n[i+1:])\n\t}\n\treturn Name(n)\n}\n\n// Parent returns the full name with the trailing identifier removed.\n// A single segment FullName has no parent.\nfunc (n FullName) Parent() FullName {\n\tif i := strings.LastIndexByte(string(n), '.'); i >= 0 {\n\t\treturn n[:i]\n\t}\n\treturn \"\"\n}\n\n// Append returns the qualified name appended with the provided short name.\n//\n// Invariant: n == n.Parent().Append(n.Name()) // assuming n is valid\nfunc (n FullName) Append(s Name) FullName {\n\tif n == \"\" {\n\t\treturn FullName(s)\n\t}\n\treturn n + \".\" + FullName(s)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/reflect/protoreflect/source.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage protoreflect\n\nimport (\n\t\"strconv\"\n)\n\n// SourceLocations is a list of source locations.\ntype SourceLocations interface {\n\t// Len reports the number of source locations in the proto file.\n\tLen() int\n\t// Get returns the ith SourceLocation. It panics if out of bounds.\n\tGet(int) SourceLocation\n\n\t// ByPath returns the SourceLocation for the given path,\n\t// returning the first location if multiple exist for the same path.\n\t// If multiple locations exist for the same path,\n\t// then SourceLocation.Next index can be used to identify the\n\t// index of the next SourceLocation.\n\t// If no location exists for this path, it returns the zero value.\n\tByPath(path SourcePath) SourceLocation\n\n\t// ByDescriptor returns the SourceLocation for the given descriptor,\n\t// returning the first location if multiple exist for the same path.\n\t// If no location exists for this descriptor, it returns the zero value.\n\tByDescriptor(desc Descriptor) SourceLocation\n\n\tdoNotImplement\n}\n\n// SourceLocation describes a source location and\n// corresponds with the google.protobuf.SourceCodeInfo.Location message.\ntype SourceLocation struct {\n\t// Path is the path to the declaration from the root file descriptor.\n\t// The contents of this slice must not be mutated.\n\tPath SourcePath\n\n\t// StartLine and StartColumn are the zero-indexed starting location\n\t// in the source file for the declaration.\n\tStartLine, StartColumn int\n\t// EndLine and EndColumn are the zero-indexed ending location\n\t// in the source file for the declaration.\n\t// In the descriptor.proto, the end line may be omitted if it is identical\n\t// to the start line. Here, it is always populated.\n\tEndLine, EndColumn int\n\n\t// LeadingDetachedComments are the leading detached comments\n\t// for the declaration. The contents of this slice must not be mutated.\n\tLeadingDetachedComments []string\n\t// LeadingComments is the leading attached comment for the declaration.\n\tLeadingComments string\n\t// TrailingComments is the trailing attached comment for the declaration.\n\tTrailingComments string\n\n\t// Next is an index into SourceLocations for the next source location that\n\t// has the same Path. It is zero if there is no next location.\n\tNext int\n}\n\n// SourcePath identifies part of a file descriptor for a source location.\n// The SourcePath is a sequence of either field numbers or indexes into\n// a repeated field that form a path starting from the root file descriptor.\n//\n// See google.protobuf.SourceCodeInfo.Location.path.\ntype SourcePath []int32\n\n// Equal reports whether p1 equals p2.\nfunc (p1 SourcePath) Equal(p2 SourcePath) bool {\n\tif len(p1) != len(p2) {\n\t\treturn false\n\t}\n\tfor i := range p1 {\n\t\tif p1[i] != p2[i] {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// String formats the path in a humanly readable manner.\n// The output is guaranteed to be deterministic,\n// making it suitable for use as a key into a Go map.\n// It is not guaranteed to be stable as the exact output could change\n// in a future version of this module.\n//\n// Example output:\n//\n//\t.message_type[6].nested_type[15].field[3]\nfunc (p SourcePath) String() string {\n\tb := p.appendFileDescriptorProto(nil)\n\tfor _, i := range p {\n\t\tb = append(b, '.')\n\t\tb = strconv.AppendInt(b, int64(i), 10)\n\t}\n\treturn string(b)\n}\n\ntype appendFunc func(*SourcePath, []byte) []byte\n\nfunc (p *SourcePath) appendSingularField(b []byte, name string, f appendFunc) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tb = append(b, '.')\n\tb = append(b, name...)\n\t*p = (*p)[1:]\n\tif f != nil {\n\t\tb = f(p, b)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendRepeatedField(b []byte, name string, f appendFunc) []byte {\n\tb = p.appendSingularField(b, name, nil)\n\tif len(*p) == 0 || (*p)[0] < 0 {\n\t\treturn b\n\t}\n\tb = append(b, '[')\n\tb = strconv.AppendUint(b, uint64((*p)[0]), 10)\n\tb = append(b, ']')\n\t*p = (*p)[1:]\n\tif f != nil {\n\t\tb = f(p, b)\n\t}\n\treturn b\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-protos. DO NOT EDIT.\n\npackage protoreflect\n\nfunc (p *SourcePath) appendFileDescriptorProto(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendSingularField(b, \"name\", nil)\n\tcase 2:\n\t\tb = p.appendSingularField(b, \"package\", nil)\n\tcase 3:\n\t\tb = p.appendRepeatedField(b, \"dependency\", nil)\n\tcase 10:\n\t\tb = p.appendRepeatedField(b, \"public_dependency\", nil)\n\tcase 11:\n\t\tb = p.appendRepeatedField(b, \"weak_dependency\", nil)\n\tcase 15:\n\t\tb = p.appendRepeatedField(b, \"option_dependency\", nil)\n\tcase 4:\n\t\tb = p.appendRepeatedField(b, \"message_type\", (*SourcePath).appendDescriptorProto)\n\tcase 5:\n\t\tb = p.appendRepeatedField(b, \"enum_type\", (*SourcePath).appendEnumDescriptorProto)\n\tcase 6:\n\t\tb = p.appendRepeatedField(b, \"service\", (*SourcePath).appendServiceDescriptorProto)\n\tcase 7:\n\t\tb = p.appendRepeatedField(b, \"extension\", (*SourcePath).appendFieldDescriptorProto)\n\tcase 8:\n\t\tb = p.appendSingularField(b, \"options\", (*SourcePath).appendFileOptions)\n\tcase 9:\n\t\tb = p.appendSingularField(b, \"source_code_info\", (*SourcePath).appendSourceCodeInfo)\n\tcase 12:\n\t\tb = p.appendSingularField(b, \"syntax\", nil)\n\tcase 14:\n\t\tb = p.appendSingularField(b, \"edition\", nil)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendDescriptorProto(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendSingularField(b, \"name\", nil)\n\tcase 2:\n\t\tb = p.appendRepeatedField(b, \"field\", (*SourcePath).appendFieldDescriptorProto)\n\tcase 6:\n\t\tb = p.appendRepeatedField(b, \"extension\", (*SourcePath).appendFieldDescriptorProto)\n\tcase 3:\n\t\tb = p.appendRepeatedField(b, \"nested_type\", (*SourcePath).appendDescriptorProto)\n\tcase 4:\n\t\tb = p.appendRepeatedField(b, \"enum_type\", (*SourcePath).appendEnumDescriptorProto)\n\tcase 5:\n\t\tb = p.appendRepeatedField(b, \"extension_range\", (*SourcePath).appendDescriptorProto_ExtensionRange)\n\tcase 8:\n\t\tb = p.appendRepeatedField(b, \"oneof_decl\", (*SourcePath).appendOneofDescriptorProto)\n\tcase 7:\n\t\tb = p.appendSingularField(b, \"options\", (*SourcePath).appendMessageOptions)\n\tcase 9:\n\t\tb = p.appendRepeatedField(b, \"reserved_range\", (*SourcePath).appendDescriptorProto_ReservedRange)\n\tcase 10:\n\t\tb = p.appendRepeatedField(b, \"reserved_name\", nil)\n\tcase 11:\n\t\tb = p.appendSingularField(b, \"visibility\", nil)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendEnumDescriptorProto(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendSingularField(b, \"name\", nil)\n\tcase 2:\n\t\tb = p.appendRepeatedField(b, \"value\", (*SourcePath).appendEnumValueDescriptorProto)\n\tcase 3:\n\t\tb = p.appendSingularField(b, \"options\", (*SourcePath).appendEnumOptions)\n\tcase 4:\n\t\tb = p.appendRepeatedField(b, \"reserved_range\", (*SourcePath).appendEnumDescriptorProto_EnumReservedRange)\n\tcase 5:\n\t\tb = p.appendRepeatedField(b, \"reserved_name\", nil)\n\tcase 6:\n\t\tb = p.appendSingularField(b, \"visibility\", nil)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendServiceDescriptorProto(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendSingularField(b, \"name\", nil)\n\tcase 2:\n\t\tb = p.appendRepeatedField(b, \"method\", (*SourcePath).appendMethodDescriptorProto)\n\tcase 3:\n\t\tb = p.appendSingularField(b, \"options\", (*SourcePath).appendServiceOptions)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendFieldDescriptorProto(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendSingularField(b, \"name\", nil)\n\tcase 3:\n\t\tb = p.appendSingularField(b, \"number\", nil)\n\tcase 4:\n\t\tb = p.appendSingularField(b, \"label\", nil)\n\tcase 5:\n\t\tb = p.appendSingularField(b, \"type\", nil)\n\tcase 6:\n\t\tb = p.appendSingularField(b, \"type_name\", nil)\n\tcase 2:\n\t\tb = p.appendSingularField(b, \"extendee\", nil)\n\tcase 7:\n\t\tb = p.appendSingularField(b, \"default_value\", nil)\n\tcase 9:\n\t\tb = p.appendSingularField(b, \"oneof_index\", nil)\n\tcase 10:\n\t\tb = p.appendSingularField(b, \"json_name\", nil)\n\tcase 8:\n\t\tb = p.appendSingularField(b, \"options\", (*SourcePath).appendFieldOptions)\n\tcase 17:\n\t\tb = p.appendSingularField(b, \"proto3_optional\", nil)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendFileOptions(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendSingularField(b, \"java_package\", nil)\n\tcase 8:\n\t\tb = p.appendSingularField(b, \"java_outer_classname\", nil)\n\tcase 10:\n\t\tb = p.appendSingularField(b, \"java_multiple_files\", nil)\n\tcase 20:\n\t\tb = p.appendSingularField(b, \"java_generate_equals_and_hash\", nil)\n\tcase 27:\n\t\tb = p.appendSingularField(b, \"java_string_check_utf8\", nil)\n\tcase 9:\n\t\tb = p.appendSingularField(b, \"optimize_for\", nil)\n\tcase 11:\n\t\tb = p.appendSingularField(b, \"go_package\", nil)\n\tcase 16:\n\t\tb = p.appendSingularField(b, \"cc_generic_services\", nil)\n\tcase 17:\n\t\tb = p.appendSingularField(b, \"java_generic_services\", nil)\n\tcase 18:\n\t\tb = p.appendSingularField(b, \"py_generic_services\", nil)\n\tcase 23:\n\t\tb = p.appendSingularField(b, \"deprecated\", nil)\n\tcase 31:\n\t\tb = p.appendSingularField(b, \"cc_enable_arenas\", nil)\n\tcase 36:\n\t\tb = p.appendSingularField(b, \"objc_class_prefix\", nil)\n\tcase 37:\n\t\tb = p.appendSingularField(b, \"csharp_namespace\", nil)\n\tcase 39:\n\t\tb = p.appendSingularField(b, \"swift_prefix\", nil)\n\tcase 40:\n\t\tb = p.appendSingularField(b, \"php_class_prefix\", nil)\n\tcase 41:\n\t\tb = p.appendSingularField(b, \"php_namespace\", nil)\n\tcase 44:\n\t\tb = p.appendSingularField(b, \"php_metadata_namespace\", nil)\n\tcase 45:\n\t\tb = p.appendSingularField(b, \"ruby_package\", nil)\n\tcase 50:\n\t\tb = p.appendSingularField(b, \"features\", (*SourcePath).appendFeatureSet)\n\tcase 999:\n\t\tb = p.appendRepeatedField(b, \"uninterpreted_option\", (*SourcePath).appendUninterpretedOption)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendSourceCodeInfo(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendRepeatedField(b, \"location\", (*SourcePath).appendSourceCodeInfo_Location)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendDescriptorProto_ExtensionRange(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendSingularField(b, \"start\", nil)\n\tcase 2:\n\t\tb = p.appendSingularField(b, \"end\", nil)\n\tcase 3:\n\t\tb = p.appendSingularField(b, \"options\", (*SourcePath).appendExtensionRangeOptions)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendOneofDescriptorProto(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendSingularField(b, \"name\", nil)\n\tcase 2:\n\t\tb = p.appendSingularField(b, \"options\", (*SourcePath).appendOneofOptions)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendMessageOptions(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendSingularField(b, \"message_set_wire_format\", nil)\n\tcase 2:\n\t\tb = p.appendSingularField(b, \"no_standard_descriptor_accessor\", nil)\n\tcase 3:\n\t\tb = p.appendSingularField(b, \"deprecated\", nil)\n\tcase 7:\n\t\tb = p.appendSingularField(b, \"map_entry\", nil)\n\tcase 11:\n\t\tb = p.appendSingularField(b, \"deprecated_legacy_json_field_conflicts\", nil)\n\tcase 12:\n\t\tb = p.appendSingularField(b, \"features\", (*SourcePath).appendFeatureSet)\n\tcase 999:\n\t\tb = p.appendRepeatedField(b, \"uninterpreted_option\", (*SourcePath).appendUninterpretedOption)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendDescriptorProto_ReservedRange(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendSingularField(b, \"start\", nil)\n\tcase 2:\n\t\tb = p.appendSingularField(b, \"end\", nil)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendEnumValueDescriptorProto(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendSingularField(b, \"name\", nil)\n\tcase 2:\n\t\tb = p.appendSingularField(b, \"number\", nil)\n\tcase 3:\n\t\tb = p.appendSingularField(b, \"options\", (*SourcePath).appendEnumValueOptions)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendEnumOptions(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 2:\n\t\tb = p.appendSingularField(b, \"allow_alias\", nil)\n\tcase 3:\n\t\tb = p.appendSingularField(b, \"deprecated\", nil)\n\tcase 6:\n\t\tb = p.appendSingularField(b, \"deprecated_legacy_json_field_conflicts\", nil)\n\tcase 7:\n\t\tb = p.appendSingularField(b, \"features\", (*SourcePath).appendFeatureSet)\n\tcase 999:\n\t\tb = p.appendRepeatedField(b, \"uninterpreted_option\", (*SourcePath).appendUninterpretedOption)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendEnumDescriptorProto_EnumReservedRange(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendSingularField(b, \"start\", nil)\n\tcase 2:\n\t\tb = p.appendSingularField(b, \"end\", nil)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendMethodDescriptorProto(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendSingularField(b, \"name\", nil)\n\tcase 2:\n\t\tb = p.appendSingularField(b, \"input_type\", nil)\n\tcase 3:\n\t\tb = p.appendSingularField(b, \"output_type\", nil)\n\tcase 4:\n\t\tb = p.appendSingularField(b, \"options\", (*SourcePath).appendMethodOptions)\n\tcase 5:\n\t\tb = p.appendSingularField(b, \"client_streaming\", nil)\n\tcase 6:\n\t\tb = p.appendSingularField(b, \"server_streaming\", nil)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendServiceOptions(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 34:\n\t\tb = p.appendSingularField(b, \"features\", (*SourcePath).appendFeatureSet)\n\tcase 33:\n\t\tb = p.appendSingularField(b, \"deprecated\", nil)\n\tcase 999:\n\t\tb = p.appendRepeatedField(b, \"uninterpreted_option\", (*SourcePath).appendUninterpretedOption)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendFieldOptions(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendSingularField(b, \"ctype\", nil)\n\tcase 2:\n\t\tb = p.appendSingularField(b, \"packed\", nil)\n\tcase 6:\n\t\tb = p.appendSingularField(b, \"jstype\", nil)\n\tcase 5:\n\t\tb = p.appendSingularField(b, \"lazy\", nil)\n\tcase 15:\n\t\tb = p.appendSingularField(b, \"unverified_lazy\", nil)\n\tcase 3:\n\t\tb = p.appendSingularField(b, \"deprecated\", nil)\n\tcase 10:\n\t\tb = p.appendSingularField(b, \"weak\", nil)\n\tcase 16:\n\t\tb = p.appendSingularField(b, \"debug_redact\", nil)\n\tcase 17:\n\t\tb = p.appendSingularField(b, \"retention\", nil)\n\tcase 19:\n\t\tb = p.appendRepeatedField(b, \"targets\", nil)\n\tcase 20:\n\t\tb = p.appendRepeatedField(b, \"edition_defaults\", (*SourcePath).appendFieldOptions_EditionDefault)\n\tcase 21:\n\t\tb = p.appendSingularField(b, \"features\", (*SourcePath).appendFeatureSet)\n\tcase 22:\n\t\tb = p.appendSingularField(b, \"feature_support\", (*SourcePath).appendFieldOptions_FeatureSupport)\n\tcase 999:\n\t\tb = p.appendRepeatedField(b, \"uninterpreted_option\", (*SourcePath).appendUninterpretedOption)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendFeatureSet(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendSingularField(b, \"field_presence\", nil)\n\tcase 2:\n\t\tb = p.appendSingularField(b, \"enum_type\", nil)\n\tcase 3:\n\t\tb = p.appendSingularField(b, \"repeated_field_encoding\", nil)\n\tcase 4:\n\t\tb = p.appendSingularField(b, \"utf8_validation\", nil)\n\tcase 5:\n\t\tb = p.appendSingularField(b, \"message_encoding\", nil)\n\tcase 6:\n\t\tb = p.appendSingularField(b, \"json_format\", nil)\n\tcase 7:\n\t\tb = p.appendSingularField(b, \"enforce_naming_style\", nil)\n\tcase 8:\n\t\tb = p.appendSingularField(b, \"default_symbol_visibility\", nil)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendUninterpretedOption(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 2:\n\t\tb = p.appendRepeatedField(b, \"name\", (*SourcePath).appendUninterpretedOption_NamePart)\n\tcase 3:\n\t\tb = p.appendSingularField(b, \"identifier_value\", nil)\n\tcase 4:\n\t\tb = p.appendSingularField(b, \"positive_int_value\", nil)\n\tcase 5:\n\t\tb = p.appendSingularField(b, \"negative_int_value\", nil)\n\tcase 6:\n\t\tb = p.appendSingularField(b, \"double_value\", nil)\n\tcase 7:\n\t\tb = p.appendSingularField(b, \"string_value\", nil)\n\tcase 8:\n\t\tb = p.appendSingularField(b, \"aggregate_value\", nil)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendSourceCodeInfo_Location(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendRepeatedField(b, \"path\", nil)\n\tcase 2:\n\t\tb = p.appendRepeatedField(b, \"span\", nil)\n\tcase 3:\n\t\tb = p.appendSingularField(b, \"leading_comments\", nil)\n\tcase 4:\n\t\tb = p.appendSingularField(b, \"trailing_comments\", nil)\n\tcase 6:\n\t\tb = p.appendRepeatedField(b, \"leading_detached_comments\", nil)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendExtensionRangeOptions(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 999:\n\t\tb = p.appendRepeatedField(b, \"uninterpreted_option\", (*SourcePath).appendUninterpretedOption)\n\tcase 2:\n\t\tb = p.appendRepeatedField(b, \"declaration\", (*SourcePath).appendExtensionRangeOptions_Declaration)\n\tcase 50:\n\t\tb = p.appendSingularField(b, \"features\", (*SourcePath).appendFeatureSet)\n\tcase 3:\n\t\tb = p.appendSingularField(b, \"verification\", nil)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendOneofOptions(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendSingularField(b, \"features\", (*SourcePath).appendFeatureSet)\n\tcase 999:\n\t\tb = p.appendRepeatedField(b, \"uninterpreted_option\", (*SourcePath).appendUninterpretedOption)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendEnumValueOptions(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendSingularField(b, \"deprecated\", nil)\n\tcase 2:\n\t\tb = p.appendSingularField(b, \"features\", (*SourcePath).appendFeatureSet)\n\tcase 3:\n\t\tb = p.appendSingularField(b, \"debug_redact\", nil)\n\tcase 4:\n\t\tb = p.appendSingularField(b, \"feature_support\", (*SourcePath).appendFieldOptions_FeatureSupport)\n\tcase 999:\n\t\tb = p.appendRepeatedField(b, \"uninterpreted_option\", (*SourcePath).appendUninterpretedOption)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendMethodOptions(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 33:\n\t\tb = p.appendSingularField(b, \"deprecated\", nil)\n\tcase 34:\n\t\tb = p.appendSingularField(b, \"idempotency_level\", nil)\n\tcase 35:\n\t\tb = p.appendSingularField(b, \"features\", (*SourcePath).appendFeatureSet)\n\tcase 999:\n\t\tb = p.appendRepeatedField(b, \"uninterpreted_option\", (*SourcePath).appendUninterpretedOption)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendFieldOptions_EditionDefault(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 3:\n\t\tb = p.appendSingularField(b, \"edition\", nil)\n\tcase 2:\n\t\tb = p.appendSingularField(b, \"value\", nil)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendFieldOptions_FeatureSupport(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendSingularField(b, \"edition_introduced\", nil)\n\tcase 2:\n\t\tb = p.appendSingularField(b, \"edition_deprecated\", nil)\n\tcase 3:\n\t\tb = p.appendSingularField(b, \"deprecation_warning\", nil)\n\tcase 4:\n\t\tb = p.appendSingularField(b, \"edition_removed\", nil)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendUninterpretedOption_NamePart(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendSingularField(b, \"name_part\", nil)\n\tcase 2:\n\t\tb = p.appendSingularField(b, \"is_extension\", nil)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendExtensionRangeOptions_Declaration(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendSingularField(b, \"number\", nil)\n\tcase 2:\n\t\tb = p.appendSingularField(b, \"full_name\", nil)\n\tcase 3:\n\t\tb = p.appendSingularField(b, \"type\", nil)\n\tcase 5:\n\t\tb = p.appendSingularField(b, \"reserved\", nil)\n\tcase 6:\n\t\tb = p.appendSingularField(b, \"repeated\", nil)\n\t}\n\treturn b\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/reflect/protoreflect/type.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage protoreflect\n\n// Descriptor provides a set of accessors that are common to every descriptor.\n// Each descriptor type wraps the equivalent google.protobuf.XXXDescriptorProto,\n// but provides efficient lookup and immutability.\n//\n// Each descriptor is comparable. Equality implies that the two types are\n// exactly identical. However, it is possible for the same semantically\n// identical proto type to be represented by multiple type descriptors.\n//\n// For example, suppose we have t1 and t2 which are both an [MessageDescriptor].\n// If t1 == t2, then the types are definitely equal and all accessors return\n// the same information. However, if t1 != t2, then it is still possible that\n// they still represent the same proto type (e.g., t1.FullName == t2.FullName).\n// This can occur if a descriptor type is created dynamically, or multiple\n// versions of the same proto type are accidentally linked into the Go binary.\ntype Descriptor interface {\n\t// ParentFile returns the parent file descriptor that this descriptor\n\t// is declared within. The parent file for the file descriptor is itself.\n\t//\n\t// Support for this functionality is optional and may return nil.\n\tParentFile() FileDescriptor\n\n\t// Parent returns the parent containing this descriptor declaration.\n\t// The following shows the mapping from child type to possible parent types:\n\t//\n\t//\t╔═════════════════════╤═══════════════════════════════════╗\n\t//\t║ Child type          │ Possible parent types             ║\n\t//\t╠═════════════════════╪═══════════════════════════════════╣\n\t//\t║ FileDescriptor      │ nil                               ║\n\t//\t║ MessageDescriptor   │ FileDescriptor, MessageDescriptor ║\n\t//\t║ FieldDescriptor     │ FileDescriptor, MessageDescriptor ║\n\t//\t║ OneofDescriptor     │ MessageDescriptor                 ║\n\t//\t║ EnumDescriptor      │ FileDescriptor, MessageDescriptor ║\n\t//\t║ EnumValueDescriptor │ EnumDescriptor                    ║\n\t//\t║ ServiceDescriptor   │ FileDescriptor                    ║\n\t//\t║ MethodDescriptor    │ ServiceDescriptor                 ║\n\t//\t╚═════════════════════╧═══════════════════════════════════╝\n\t//\n\t// Support for this functionality is optional and may return nil.\n\tParent() Descriptor\n\n\t// Index returns the index of this descriptor within its parent.\n\t// It returns 0 if the descriptor does not have a parent or if the parent\n\t// is unknown.\n\tIndex() int\n\n\t// Syntax is the protobuf syntax.\n\tSyntax() Syntax // e.g., Proto2 or Proto3\n\n\t// Name is the short name of the declaration (i.e., FullName.Name).\n\tName() Name // e.g., \"Any\"\n\n\t// FullName is the fully-qualified name of the declaration.\n\t//\n\t// The FullName is a concatenation of the full name of the type that this\n\t// type is declared within and the declaration name. For example,\n\t// field \"foo_field\" in message \"proto.package.MyMessage\" is\n\t// uniquely identified as \"proto.package.MyMessage.foo_field\".\n\t// Enum values are an exception to the rule (see EnumValueDescriptor).\n\tFullName() FullName // e.g., \"google.protobuf.Any\"\n\n\t// IsPlaceholder reports whether type information is missing since a\n\t// dependency is not resolved, in which case only name information is known.\n\t//\n\t// Placeholder types may only be returned by the following accessors\n\t// as a result of unresolved dependencies:\n\t//\n\t//\t╔═══════════════════════════════════╤═════════════════════╗\n\t//\t║ Accessor                          │ Descriptor          ║\n\t//\t╠═══════════════════════════════════╪═════════════════════╣\n\t//\t║ FileImports.FileDescriptor        │ FileDescriptor      ║\n\t//\t║ FieldDescriptor.Enum              │ EnumDescriptor      ║\n\t//\t║ FieldDescriptor.Message           │ MessageDescriptor   ║\n\t//\t║ FieldDescriptor.DefaultEnumValue  │ EnumValueDescriptor ║\n\t//\t║ FieldDescriptor.ContainingMessage │ MessageDescriptor   ║\n\t//\t║ MethodDescriptor.Input            │ MessageDescriptor   ║\n\t//\t║ MethodDescriptor.Output           │ MessageDescriptor   ║\n\t//\t╚═══════════════════════════════════╧═════════════════════╝\n\t//\n\t// If true, only Name and FullName are valid.\n\t// For FileDescriptor, the Path is also valid.\n\tIsPlaceholder() bool\n\n\t// Options returns the descriptor options. The caller must not modify\n\t// the returned value.\n\t//\n\t// To avoid a dependency cycle, this function returns a proto.Message value.\n\t// The proto message type returned for each descriptor type is as follows:\n\t//\t╔═════════════════════╤══════════════════════════════════════════╗\n\t//\t║ Go type             │ Protobuf message type                    ║\n\t//\t╠═════════════════════╪══════════════════════════════════════════╣\n\t//\t║ FileDescriptor      │ google.protobuf.FileOptions              ║\n\t//\t║ EnumDescriptor      │ google.protobuf.EnumOptions              ║\n\t//\t║ EnumValueDescriptor │ google.protobuf.EnumValueOptions         ║\n\t//\t║ MessageDescriptor   │ google.protobuf.MessageOptions           ║\n\t//\t║ FieldDescriptor     │ google.protobuf.FieldOptions             ║\n\t//\t║ OneofDescriptor     │ google.protobuf.OneofOptions             ║\n\t//\t║ ServiceDescriptor   │ google.protobuf.ServiceOptions           ║\n\t//\t║ MethodDescriptor    │ google.protobuf.MethodOptions            ║\n\t//\t╚═════════════════════╧══════════════════════════════════════════╝\n\t//\n\t// This method returns a typed nil-pointer if no options are present.\n\t// The caller must import the descriptorpb package to use this.\n\tOptions() ProtoMessage\n\n\tdoNotImplement\n}\n\n// FileDescriptor describes the types in a complete proto file and\n// corresponds with the google.protobuf.FileDescriptorProto message.\n//\n// Top-level declarations:\n// [EnumDescriptor], [MessageDescriptor], [FieldDescriptor], and/or [ServiceDescriptor].\ntype FileDescriptor interface {\n\tDescriptor // Descriptor.FullName is identical to Package\n\n\t// Path returns the file name, relative to the source tree root.\n\tPath() string // e.g., \"path/to/file.proto\"\n\t// Package returns the protobuf package namespace.\n\tPackage() FullName // e.g., \"google.protobuf\"\n\n\t// Imports is a list of imported proto files.\n\tImports() FileImports\n\n\t// Enums is a list of the top-level enum declarations.\n\tEnums() EnumDescriptors\n\t// Messages is a list of the top-level message declarations.\n\tMessages() MessageDescriptors\n\t// Extensions is a list of the top-level extension declarations.\n\tExtensions() ExtensionDescriptors\n\t// Services is a list of the top-level service declarations.\n\tServices() ServiceDescriptors\n\n\t// SourceLocations is a list of source locations.\n\tSourceLocations() SourceLocations\n\n\tisFileDescriptor\n}\ntype isFileDescriptor interface{ ProtoType(FileDescriptor) }\n\n// FileImports is a list of file imports.\ntype FileImports interface {\n\t// Len reports the number of files imported by this proto file.\n\tLen() int\n\t// Get returns the ith FileImport. It panics if out of bounds.\n\tGet(i int) FileImport\n\n\tdoNotImplement\n}\n\n// FileImport is the declaration for a proto file import.\ntype FileImport struct {\n\t// FileDescriptor is the file type for the given import.\n\t// It is a placeholder descriptor if IsWeak is set or if a dependency has\n\t// not been regenerated to implement the new reflection APIs.\n\tFileDescriptor\n\n\t// IsPublic reports whether this is a public import, which causes this file\n\t// to alias declarations within the imported file. The intended use cases\n\t// for this feature is the ability to move proto files without breaking\n\t// existing dependencies.\n\t//\n\t// The current file and the imported file must be within proto package.\n\tIsPublic bool\n\n\t// Deprecated: support for weak fields has been removed.\n\tIsWeak bool\n}\n\n// MessageDescriptor describes a message and\n// corresponds with the google.protobuf.DescriptorProto message.\n//\n// Nested declarations:\n// [FieldDescriptor], [OneofDescriptor], [FieldDescriptor], [EnumDescriptor],\n// and/or [MessageDescriptor].\ntype MessageDescriptor interface {\n\tDescriptor\n\n\t// IsMapEntry indicates that this is an auto-generated message type to\n\t// represent the entry type for a map field.\n\t//\n\t// Map entry messages have only two fields:\n\t//\t• a \"key\" field with a field number of 1\n\t//\t• a \"value\" field with a field number of 2\n\t// The key and value types are determined by these two fields.\n\t//\n\t// If IsMapEntry is true, it implies that FieldDescriptor.IsMap is true\n\t// for some field with this message type.\n\tIsMapEntry() bool\n\n\t// Fields is a list of nested field declarations.\n\tFields() FieldDescriptors\n\t// Oneofs is a list of nested oneof declarations.\n\tOneofs() OneofDescriptors\n\n\t// ReservedNames is a list of reserved field names.\n\tReservedNames() Names\n\t// ReservedRanges is a list of reserved ranges of field numbers.\n\tReservedRanges() FieldRanges\n\t// RequiredNumbers is a list of required field numbers.\n\t// In Proto3, it is always an empty list.\n\tRequiredNumbers() FieldNumbers\n\t// ExtensionRanges is the field ranges used for extension fields.\n\t// In Proto3, it is always an empty ranges.\n\tExtensionRanges() FieldRanges\n\t// ExtensionRangeOptions returns the ith extension range options.\n\t//\n\t// To avoid a dependency cycle, this method returns a proto.Message] value,\n\t// which always contains a google.protobuf.ExtensionRangeOptions message.\n\t// This method returns a typed nil-pointer if no options are present.\n\t// The caller must import the descriptorpb package to use this.\n\tExtensionRangeOptions(i int) ProtoMessage\n\n\t// Enums is a list of nested enum declarations.\n\tEnums() EnumDescriptors\n\t// Messages is a list of nested message declarations.\n\tMessages() MessageDescriptors\n\t// Extensions is a list of nested extension declarations.\n\tExtensions() ExtensionDescriptors\n\n\tisMessageDescriptor\n}\ntype isMessageDescriptor interface{ ProtoType(MessageDescriptor) }\n\n// MessageType encapsulates a [MessageDescriptor] with a concrete Go implementation.\n// It is recommended that implementations of this interface also implement the\n// [MessageFieldTypes] interface.\ntype MessageType interface {\n\t// New returns a newly allocated empty message.\n\t// It may return nil for synthetic messages representing a map entry.\n\tNew() Message\n\n\t// Zero returns an empty, read-only message.\n\t// It may return nil for synthetic messages representing a map entry.\n\tZero() Message\n\n\t// Descriptor returns the message descriptor.\n\t//\n\t// Invariant: t.Descriptor() == t.New().Descriptor()\n\tDescriptor() MessageDescriptor\n}\n\n// MessageFieldTypes extends a [MessageType] by providing type information\n// regarding enums and messages referenced by the message fields.\ntype MessageFieldTypes interface {\n\tMessageType\n\n\t// Enum returns the EnumType for the ith field in MessageDescriptor.Fields.\n\t// It returns nil if the ith field is not an enum kind.\n\t// It panics if out of bounds.\n\t//\n\t// Invariant: mt.Enum(i).Descriptor() == mt.Descriptor().Fields(i).Enum()\n\tEnum(i int) EnumType\n\n\t// Message returns the MessageType for the ith field in MessageDescriptor.Fields.\n\t// It returns nil if the ith field is not a message or group kind.\n\t// It panics if out of bounds.\n\t//\n\t// Invariant: mt.Message(i).Descriptor() == mt.Descriptor().Fields(i).Message()\n\tMessage(i int) MessageType\n}\n\n// MessageDescriptors is a list of message declarations.\ntype MessageDescriptors interface {\n\t// Len reports the number of messages.\n\tLen() int\n\t// Get returns the ith MessageDescriptor. It panics if out of bounds.\n\tGet(i int) MessageDescriptor\n\t// ByName returns the MessageDescriptor for a message named s.\n\t// It returns nil if not found.\n\tByName(s Name) MessageDescriptor\n\n\tdoNotImplement\n}\n\n// FieldDescriptor describes a field within a message and\n// corresponds with the google.protobuf.FieldDescriptorProto message.\n//\n// It is used for both normal fields defined within the parent message\n// (e.g., [MessageDescriptor.Fields]) and fields that extend some remote message\n// (e.g., [FileDescriptor.Extensions] or [MessageDescriptor.Extensions]).\ntype FieldDescriptor interface {\n\tDescriptor\n\n\t// Number reports the unique number for this field.\n\tNumber() FieldNumber\n\t// Cardinality reports the cardinality for this field.\n\tCardinality() Cardinality\n\t// Kind reports the basic kind for this field.\n\tKind() Kind\n\n\t// HasJSONName reports whether this field has an explicitly set JSON name.\n\tHasJSONName() bool\n\n\t// JSONName reports the name used for JSON serialization.\n\t// It is usually the camel-cased form of the field name.\n\t// Extension fields are represented by the full name surrounded by brackets.\n\tJSONName() string\n\n\t// TextName reports the name used for text serialization.\n\t// It is usually the name of the field, except that groups use the name\n\t// of the inlined message, and extension fields are represented by the\n\t// full name surrounded by brackets.\n\tTextName() string\n\n\t// HasPresence reports whether the field distinguishes between unpopulated\n\t// and default values.\n\tHasPresence() bool\n\n\t// IsExtension reports whether this is an extension field. If false,\n\t// then Parent and ContainingMessage refer to the same message.\n\t// Otherwise, ContainingMessage and Parent likely differ.\n\tIsExtension() bool\n\n\t// HasOptionalKeyword reports whether the \"optional\" keyword was explicitly\n\t// specified in the source .proto file.\n\tHasOptionalKeyword() bool\n\n\t// Deprecated: support for weak fields has been removed.\n\tIsWeak() bool\n\n\t// IsPacked reports whether repeated primitive numeric kinds should be\n\t// serialized using a packed encoding.\n\t// If true, then it implies Cardinality is Repeated.\n\tIsPacked() bool\n\n\t// IsList reports whether this field represents a list,\n\t// where the value type for the associated field is a List.\n\t// It is equivalent to checking whether Cardinality is Repeated and\n\t// that IsMap reports false.\n\tIsList() bool\n\n\t// IsMap reports whether this field represents a map,\n\t// where the value type for the associated field is a Map.\n\t// It is equivalent to checking whether Cardinality is Repeated,\n\t// that the Kind is MessageKind, and that MessageDescriptor.IsMapEntry reports true.\n\tIsMap() bool\n\n\t// MapKey returns the field descriptor for the key in the map entry.\n\t// It returns nil if IsMap reports false.\n\tMapKey() FieldDescriptor\n\n\t// MapValue returns the field descriptor for the value in the map entry.\n\t// It returns nil if IsMap reports false.\n\tMapValue() FieldDescriptor\n\n\t// HasDefault reports whether this field has a default value.\n\tHasDefault() bool\n\n\t// Default returns the default value for scalar fields.\n\t// For proto2, it is the default value as specified in the proto file,\n\t// or the zero value if unspecified.\n\t// For proto3, it is always the zero value of the scalar.\n\t// The Value type is determined by the Kind.\n\tDefault() Value\n\n\t// DefaultEnumValue returns the enum value descriptor for the default value\n\t// of an enum field, and is nil for any other kind of field.\n\tDefaultEnumValue() EnumValueDescriptor\n\n\t// ContainingOneof is the containing oneof that this field belongs to,\n\t// and is nil if this field is not part of a oneof.\n\tContainingOneof() OneofDescriptor\n\n\t// ContainingMessage is the containing message that this field belongs to.\n\t// For extension fields, this may not necessarily be the parent message\n\t// that the field is declared within.\n\tContainingMessage() MessageDescriptor\n\n\t// Enum is the enum descriptor if Kind is EnumKind.\n\t// It returns nil for any other Kind.\n\tEnum() EnumDescriptor\n\n\t// Message is the message descriptor if Kind is\n\t// MessageKind or GroupKind. It returns nil for any other Kind.\n\tMessage() MessageDescriptor\n\n\tisFieldDescriptor\n}\ntype isFieldDescriptor interface{ ProtoType(FieldDescriptor) }\n\n// FieldDescriptors is a list of field declarations.\ntype FieldDescriptors interface {\n\t// Len reports the number of fields.\n\tLen() int\n\t// Get returns the ith FieldDescriptor. It panics if out of bounds.\n\tGet(i int) FieldDescriptor\n\t// ByName returns the FieldDescriptor for a field named s.\n\t// It returns nil if not found.\n\tByName(s Name) FieldDescriptor\n\t// ByJSONName returns the FieldDescriptor for a field with s as the JSON name.\n\t// It returns nil if not found.\n\tByJSONName(s string) FieldDescriptor\n\t// ByTextName returns the FieldDescriptor for a field with s as the text name.\n\t// It returns nil if not found.\n\tByTextName(s string) FieldDescriptor\n\t// ByNumber returns the FieldDescriptor for a field numbered n.\n\t// It returns nil if not found.\n\tByNumber(n FieldNumber) FieldDescriptor\n\n\tdoNotImplement\n}\n\n// OneofDescriptor describes a oneof field set within a given message and\n// corresponds with the google.protobuf.OneofDescriptorProto message.\ntype OneofDescriptor interface {\n\tDescriptor\n\n\t// IsSynthetic reports whether this is a synthetic oneof created to support\n\t// proto3 optional semantics. If true, Fields contains exactly one field\n\t// with FieldDescriptor.HasOptionalKeyword specified.\n\tIsSynthetic() bool\n\n\t// Fields is a list of fields belonging to this oneof.\n\tFields() FieldDescriptors\n\n\tisOneofDescriptor\n}\ntype isOneofDescriptor interface{ ProtoType(OneofDescriptor) }\n\n// OneofDescriptors is a list of oneof declarations.\ntype OneofDescriptors interface {\n\t// Len reports the number of oneof fields.\n\tLen() int\n\t// Get returns the ith OneofDescriptor. It panics if out of bounds.\n\tGet(i int) OneofDescriptor\n\t// ByName returns the OneofDescriptor for a oneof named s.\n\t// It returns nil if not found.\n\tByName(s Name) OneofDescriptor\n\n\tdoNotImplement\n}\n\n// ExtensionDescriptor is an alias of [FieldDescriptor] for documentation.\ntype ExtensionDescriptor = FieldDescriptor\n\n// ExtensionTypeDescriptor is an [ExtensionDescriptor] with an associated [ExtensionType].\ntype ExtensionTypeDescriptor interface {\n\tExtensionDescriptor\n\n\t// Type returns the associated ExtensionType.\n\tType() ExtensionType\n\n\t// Descriptor returns the plain ExtensionDescriptor without the\n\t// associated ExtensionType.\n\tDescriptor() ExtensionDescriptor\n}\n\n// ExtensionDescriptors is a list of field declarations.\ntype ExtensionDescriptors interface {\n\t// Len reports the number of fields.\n\tLen() int\n\t// Get returns the ith ExtensionDescriptor. It panics if out of bounds.\n\tGet(i int) ExtensionDescriptor\n\t// ByName returns the ExtensionDescriptor for a field named s.\n\t// It returns nil if not found.\n\tByName(s Name) ExtensionDescriptor\n\n\tdoNotImplement\n}\n\n// ExtensionType encapsulates an [ExtensionDescriptor] with a concrete\n// Go implementation. The nested field descriptor must be for a extension field.\n//\n// While a normal field is a member of the parent message that it is declared\n// within (see [Descriptor.Parent]), an extension field is a member of some other\n// target message (see [FieldDescriptor.ContainingMessage]) and may have no\n// relationship with the parent. However, the full name of an extension field is\n// relative to the parent that it is declared within.\n//\n// For example:\n//\n//\tsyntax = \"proto2\";\n//\tpackage example;\n//\tmessage FooMessage {\n//\t\textensions 100 to max;\n//\t}\n//\tmessage BarMessage {\n//\t\textends FooMessage { optional BarMessage bar_field = 100; }\n//\t}\n//\n// Field \"bar_field\" is an extension of FooMessage, but its full name is\n// \"example.BarMessage.bar_field\" instead of \"example.FooMessage.bar_field\".\ntype ExtensionType interface {\n\t// New returns a new value for the field.\n\t// For scalars, this returns the default value in native Go form.\n\tNew() Value\n\n\t// Zero returns a new value for the field.\n\t// For scalars, this returns the default value in native Go form.\n\t// For composite types, this returns an empty, read-only message, list, or map.\n\tZero() Value\n\n\t// TypeDescriptor returns the extension type descriptor.\n\tTypeDescriptor() ExtensionTypeDescriptor\n\n\t// ValueOf wraps the input and returns it as a Value.\n\t// ValueOf panics if the input value is invalid or not the appropriate type.\n\t//\n\t// ValueOf is more extensive than protoreflect.ValueOf for a given field's\n\t// value as it has more type information available.\n\tValueOf(any) Value\n\n\t// InterfaceOf completely unwraps the Value to the underlying Go type.\n\t// InterfaceOf panics if the input is nil or does not represent the\n\t// appropriate underlying Go type. For composite types, it panics if the\n\t// value is not mutable.\n\t//\n\t// InterfaceOf is able to unwrap the Value further than Value.Interface\n\t// as it has more type information available.\n\tInterfaceOf(Value) any\n\n\t// IsValidValue reports whether the Value is valid to assign to the field.\n\tIsValidValue(Value) bool\n\n\t// IsValidInterface reports whether the input is valid to assign to the field.\n\tIsValidInterface(any) bool\n}\n\n// EnumDescriptor describes an enum and\n// corresponds with the google.protobuf.EnumDescriptorProto message.\n//\n// Nested declarations:\n// [EnumValueDescriptor].\ntype EnumDescriptor interface {\n\tDescriptor\n\n\t// Values is a list of nested enum value declarations.\n\tValues() EnumValueDescriptors\n\n\t// ReservedNames is a list of reserved enum names.\n\tReservedNames() Names\n\t// ReservedRanges is a list of reserved ranges of enum numbers.\n\tReservedRanges() EnumRanges\n\n\t// IsClosed reports whether this enum uses closed semantics.\n\t// See https://protobuf.dev/programming-guides/enum/#definitions.\n\t// Note: the Go protobuf implementation is not spec compliant and treats\n\t// all enums as open enums.\n\tIsClosed() bool\n\n\tisEnumDescriptor\n}\ntype isEnumDescriptor interface{ ProtoType(EnumDescriptor) }\n\n// EnumType encapsulates an [EnumDescriptor] with a concrete Go implementation.\ntype EnumType interface {\n\t// New returns an instance of this enum type with its value set to n.\n\tNew(n EnumNumber) Enum\n\n\t// Descriptor returns the enum descriptor.\n\t//\n\t// Invariant: t.Descriptor() == t.New(0).Descriptor()\n\tDescriptor() EnumDescriptor\n}\n\n// EnumDescriptors is a list of enum declarations.\ntype EnumDescriptors interface {\n\t// Len reports the number of enum types.\n\tLen() int\n\t// Get returns the ith EnumDescriptor. It panics if out of bounds.\n\tGet(i int) EnumDescriptor\n\t// ByName returns the EnumDescriptor for an enum named s.\n\t// It returns nil if not found.\n\tByName(s Name) EnumDescriptor\n\n\tdoNotImplement\n}\n\n// EnumValueDescriptor describes an enum value and\n// corresponds with the google.protobuf.EnumValueDescriptorProto message.\n//\n// All other proto declarations are in the namespace of the parent.\n// However, enum values do not follow this rule and are within the namespace\n// of the parent's parent (i.e., they are a sibling of the containing enum).\n// Thus, a value named \"FOO_VALUE\" declared within an enum uniquely identified\n// as \"proto.package.MyEnum\" has a full name of \"proto.package.FOO_VALUE\".\ntype EnumValueDescriptor interface {\n\tDescriptor\n\n\t// Number returns the enum value as an integer.\n\tNumber() EnumNumber\n\n\tisEnumValueDescriptor\n}\ntype isEnumValueDescriptor interface{ ProtoType(EnumValueDescriptor) }\n\n// EnumValueDescriptors is a list of enum value declarations.\ntype EnumValueDescriptors interface {\n\t// Len reports the number of enum values.\n\tLen() int\n\t// Get returns the ith EnumValueDescriptor. It panics if out of bounds.\n\tGet(i int) EnumValueDescriptor\n\t// ByName returns the EnumValueDescriptor for the enum value named s.\n\t// It returns nil if not found.\n\tByName(s Name) EnumValueDescriptor\n\t// ByNumber returns the EnumValueDescriptor for the enum value numbered n.\n\t// If multiple have the same number, the first one defined is returned\n\t// It returns nil if not found.\n\tByNumber(n EnumNumber) EnumValueDescriptor\n\n\tdoNotImplement\n}\n\n// ServiceDescriptor describes a service and\n// corresponds with the google.protobuf.ServiceDescriptorProto message.\n//\n// Nested declarations: [MethodDescriptor].\ntype ServiceDescriptor interface {\n\tDescriptor\n\n\t// Methods is a list of nested message declarations.\n\tMethods() MethodDescriptors\n\n\tisServiceDescriptor\n}\ntype isServiceDescriptor interface{ ProtoType(ServiceDescriptor) }\n\n// ServiceDescriptors is a list of service declarations.\ntype ServiceDescriptors interface {\n\t// Len reports the number of services.\n\tLen() int\n\t// Get returns the ith ServiceDescriptor. It panics if out of bounds.\n\tGet(i int) ServiceDescriptor\n\t// ByName returns the ServiceDescriptor for a service named s.\n\t// It returns nil if not found.\n\tByName(s Name) ServiceDescriptor\n\n\tdoNotImplement\n}\n\n// MethodDescriptor describes a method and\n// corresponds with the google.protobuf.MethodDescriptorProto message.\ntype MethodDescriptor interface {\n\tDescriptor\n\n\t// Input is the input message descriptor.\n\tInput() MessageDescriptor\n\t// Output is the output message descriptor.\n\tOutput() MessageDescriptor\n\t// IsStreamingClient reports whether the client streams multiple messages.\n\tIsStreamingClient() bool\n\t// IsStreamingServer reports whether the server streams multiple messages.\n\tIsStreamingServer() bool\n\n\tisMethodDescriptor\n}\ntype isMethodDescriptor interface{ ProtoType(MethodDescriptor) }\n\n// MethodDescriptors is a list of method declarations.\ntype MethodDescriptors interface {\n\t// Len reports the number of methods.\n\tLen() int\n\t// Get returns the ith MethodDescriptor. It panics if out of bounds.\n\tGet(i int) MethodDescriptor\n\t// ByName returns the MethodDescriptor for a service method named s.\n\t// It returns nil if not found.\n\tByName(s Name) MethodDescriptor\n\n\tdoNotImplement\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/reflect/protoreflect/value.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage protoreflect\n\nimport \"google.golang.org/protobuf/encoding/protowire\"\n\n// Enum is a reflection interface for a concrete enum value,\n// which provides type information and a getter for the enum number.\n// Enum does not provide a mutable API since enums are commonly backed by\n// Go constants, which are not addressable.\ntype Enum interface {\n\t// Descriptor returns enum descriptor, which contains only the protobuf\n\t// type information for the enum.\n\tDescriptor() EnumDescriptor\n\n\t// Type returns the enum type, which encapsulates both Go and protobuf\n\t// type information. If the Go type information is not needed,\n\t// it is recommended that the enum descriptor be used instead.\n\tType() EnumType\n\n\t// Number returns the enum value as an integer.\n\tNumber() EnumNumber\n}\n\n// Message is a reflective interface for a concrete message value,\n// encapsulating both type and value information for the message.\n//\n// Accessor/mutators for individual fields are keyed by [FieldDescriptor].\n// For non-extension fields, the descriptor must exactly match the\n// field known by the parent message.\n// For extension fields, the descriptor must implement [ExtensionTypeDescriptor],\n// extend the parent message (i.e., have the same message [FullName]), and\n// be within the parent's extension range.\n//\n// Each field [Value] can be a scalar or a composite type ([Message], [List], or [Map]).\n// See [Value] for the Go types associated with a [FieldDescriptor].\n// Providing a [Value] that is invalid or of an incorrect type panics.\ntype Message interface {\n\t// Descriptor returns message descriptor, which contains only the protobuf\n\t// type information for the message.\n\tDescriptor() MessageDescriptor\n\n\t// Type returns the message type, which encapsulates both Go and protobuf\n\t// type information. If the Go type information is not needed,\n\t// it is recommended that the message descriptor be used instead.\n\tType() MessageType\n\n\t// New returns a newly allocated and mutable empty message.\n\tNew() Message\n\n\t// Interface unwraps the message reflection interface and\n\t// returns the underlying ProtoMessage interface.\n\tInterface() ProtoMessage\n\n\t// Range iterates over every populated field in an undefined order,\n\t// calling f for each field descriptor and value encountered.\n\t// Range returns immediately if f returns false.\n\t// While iterating, mutating operations may only be performed\n\t// on the current field descriptor.\n\tRange(f func(FieldDescriptor, Value) bool)\n\n\t// Has reports whether a field is populated.\n\t//\n\t// Some fields have the property of nullability where it is possible to\n\t// distinguish between the default value of a field and whether the field\n\t// was explicitly populated with the default value. Singular message fields,\n\t// member fields of a oneof, and proto2 scalar fields are nullable. Such\n\t// fields are populated only if explicitly set.\n\t//\n\t// In other cases (aside from the nullable cases above),\n\t// a proto3 scalar field is populated if it contains a non-zero value, and\n\t// a repeated field is populated if it is non-empty.\n\tHas(FieldDescriptor) bool\n\n\t// Clear clears the field such that a subsequent Has call reports false.\n\t//\n\t// Clearing an extension field clears both the extension type and value\n\t// associated with the given field number.\n\t//\n\t// Clear is a mutating operation and unsafe for concurrent use.\n\tClear(FieldDescriptor)\n\n\t// Get retrieves the value for a field.\n\t//\n\t// For unpopulated scalars, it returns the default value, where\n\t// the default value of a bytes scalar is guaranteed to be a copy.\n\t// For unpopulated composite types, it returns an empty, read-only view\n\t// of the value; to obtain a mutable reference, use Mutable.\n\tGet(FieldDescriptor) Value\n\n\t// Set stores the value for a field.\n\t//\n\t// For a field belonging to a oneof, it implicitly clears any other field\n\t// that may be currently set within the same oneof.\n\t// For extension fields, it implicitly stores the provided ExtensionType.\n\t// When setting a composite type, it is unspecified whether the stored value\n\t// aliases the source's memory in any way. If the composite value is an\n\t// empty, read-only value, then it panics.\n\t//\n\t// Set is a mutating operation and unsafe for concurrent use.\n\tSet(FieldDescriptor, Value)\n\n\t// Mutable returns a mutable reference to a composite type.\n\t//\n\t// If the field is unpopulated, it may allocate a composite value.\n\t// For a field belonging to a oneof, it implicitly clears any other field\n\t// that may be currently set within the same oneof.\n\t// For extension fields, it implicitly stores the provided ExtensionType\n\t// if not already stored.\n\t// It panics if the field does not contain a composite type.\n\t//\n\t// Mutable is a mutating operation and unsafe for concurrent use.\n\tMutable(FieldDescriptor) Value\n\n\t// NewField returns a new value that is assignable to the field\n\t// for the given descriptor. For scalars, this returns the default value.\n\t// For lists, maps, and messages, this returns a new, empty, mutable value.\n\tNewField(FieldDescriptor) Value\n\n\t// WhichOneof reports which field within the oneof is populated,\n\t// returning nil if none are populated.\n\t// It panics if the oneof descriptor does not belong to this message.\n\tWhichOneof(OneofDescriptor) FieldDescriptor\n\n\t// GetUnknown retrieves the entire list of unknown fields.\n\t// The caller may only mutate the contents of the RawFields\n\t// if the mutated bytes are stored back into the message with SetUnknown.\n\tGetUnknown() RawFields\n\n\t// SetUnknown stores an entire list of unknown fields.\n\t// The raw fields must be syntactically valid according to the wire format.\n\t// An implementation may panic if this is not the case.\n\t// Once stored, the caller must not mutate the content of the RawFields.\n\t// An empty RawFields may be passed to clear the fields.\n\t//\n\t// SetUnknown is a mutating operation and unsafe for concurrent use.\n\tSetUnknown(RawFields)\n\n\t// IsValid reports whether the message is valid.\n\t//\n\t// An invalid message is an empty, read-only value.\n\t//\n\t// An invalid message often corresponds to a nil pointer of the concrete\n\t// message type, but the details are implementation dependent.\n\t// Validity is not part of the protobuf data model, and may not\n\t// be preserved in marshaling or other operations.\n\tIsValid() bool\n\n\t// ProtoMethods returns optional fast-path implementations of various operations.\n\t// This method may return nil.\n\t//\n\t// The returned methods type is identical to\n\t// [google.golang.org/protobuf/runtime/protoiface.Methods].\n\t// Consult the protoiface package documentation for details.\n\tProtoMethods() *methods\n}\n\n// RawFields is the raw bytes for an ordered sequence of fields.\n// Each field contains both the tag (representing field number and wire type),\n// and also the wire data itself.\ntype RawFields []byte\n\n// IsValid reports whether b is syntactically correct wire format.\nfunc (b RawFields) IsValid() bool {\n\tfor len(b) > 0 {\n\t\t_, _, n := protowire.ConsumeField(b)\n\t\tif n < 0 {\n\t\t\treturn false\n\t\t}\n\t\tb = b[n:]\n\t}\n\treturn true\n}\n\n// List is a zero-indexed, ordered list.\n// The element [Value] type is determined by [FieldDescriptor.Kind].\n// Providing a [Value] that is invalid or of an incorrect type panics.\ntype List interface {\n\t// Len reports the number of entries in the List.\n\t// Get, Set, and Truncate panic with out of bound indexes.\n\tLen() int\n\n\t// Get retrieves the value at the given index.\n\t// It never returns an invalid value.\n\tGet(int) Value\n\n\t// Set stores a value for the given index.\n\t// When setting a composite type, it is unspecified whether the set\n\t// value aliases the source's memory in any way.\n\t//\n\t// Set is a mutating operation and unsafe for concurrent use.\n\tSet(int, Value)\n\n\t// Append appends the provided value to the end of the list.\n\t// When appending a composite type, it is unspecified whether the appended\n\t// value aliases the source's memory in any way.\n\t//\n\t// Append is a mutating operation and unsafe for concurrent use.\n\tAppend(Value)\n\n\t// AppendMutable appends a new, empty, mutable message value to the end\n\t// of the list and returns it.\n\t// It panics if the list does not contain a message type.\n\tAppendMutable() Value\n\n\t// Truncate truncates the list to a smaller length.\n\t//\n\t// Truncate is a mutating operation and unsafe for concurrent use.\n\tTruncate(int)\n\n\t// NewElement returns a new value for a list element.\n\t// For enums, this returns the first enum value.\n\t// For other scalars, this returns the zero value.\n\t// For messages, this returns a new, empty, mutable value.\n\tNewElement() Value\n\n\t// IsValid reports whether the list is valid.\n\t//\n\t// An invalid list is an empty, read-only value.\n\t//\n\t// Validity is not part of the protobuf data model, and may not\n\t// be preserved in marshaling or other operations.\n\tIsValid() bool\n}\n\n// Map is an unordered, associative map.\n// The entry [MapKey] type is determined by [FieldDescriptor.MapKey].Kind.\n// The entry [Value] type is determined by [FieldDescriptor.MapValue].Kind.\n// Providing a [MapKey] or [Value] that is invalid or of an incorrect type panics.\ntype Map interface {\n\t// Len reports the number of elements in the map.\n\tLen() int\n\n\t// Range iterates over every map entry in an undefined order,\n\t// calling f for each key and value encountered.\n\t// Range calls f Len times unless f returns false, which stops iteration.\n\t// While iterating, mutating operations may only be performed\n\t// on the current map key.\n\tRange(f func(MapKey, Value) bool)\n\n\t// Has reports whether an entry with the given key is in the map.\n\tHas(MapKey) bool\n\n\t// Clear clears the entry associated with they given key.\n\t// The operation does nothing if there is no entry associated with the key.\n\t//\n\t// Clear is a mutating operation and unsafe for concurrent use.\n\tClear(MapKey)\n\n\t// Get retrieves the value for an entry with the given key.\n\t// It returns an invalid value for non-existent entries.\n\tGet(MapKey) Value\n\n\t// Set stores the value for an entry with the given key.\n\t// It panics when given a key or value that is invalid or the wrong type.\n\t// When setting a composite type, it is unspecified whether the set\n\t// value aliases the source's memory in any way.\n\t//\n\t// Set is a mutating operation and unsafe for concurrent use.\n\tSet(MapKey, Value)\n\n\t// Mutable retrieves a mutable reference to the entry for the given key.\n\t// If no entry exists for the key, it creates a new, empty, mutable value\n\t// and stores it as the entry for the key.\n\t// It panics if the map value is not a message.\n\tMutable(MapKey) Value\n\n\t// NewValue returns a new value assignable as a map value.\n\t// For enums, this returns the first enum value.\n\t// For other scalars, this returns the zero value.\n\t// For messages, this returns a new, empty, mutable value.\n\tNewValue() Value\n\n\t// IsValid reports whether the map is valid.\n\t//\n\t// An invalid map is an empty, read-only value.\n\t//\n\t// An invalid message often corresponds to a nil Go map value,\n\t// but the details are implementation dependent.\n\t// Validity is not part of the protobuf data model, and may not\n\t// be preserved in marshaling or other operations.\n\tIsValid() bool\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/reflect/protoreflect/value_equal.go",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage protoreflect\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"math\"\n\t\"reflect\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n)\n\n// Equal reports whether v1 and v2 are recursively equal.\n//\n//   - Values of different types are always unequal.\n//\n//   - Bytes values are equal if they contain identical bytes.\n//     Empty bytes (regardless of nil-ness) are considered equal.\n//\n//   - Floating point values are equal if they contain the same value.\n//     Unlike the == operator, a NaN is equal to another NaN.\n//\n//   - Enums are equal if they contain the same number.\n//     Since [Value] does not contain an enum descriptor,\n//     enum values do not consider the type of the enum.\n//\n//   - Other scalar values are equal if they contain the same value.\n//\n//   - [Message] values are equal if they belong to the same message descriptor,\n//     have the same set of populated known and extension field values,\n//     and the same set of unknown fields values.\n//\n//   - [List] values are equal if they are the same length and\n//     each corresponding element is equal.\n//\n//   - [Map] values are equal if they have the same set of keys and\n//     the corresponding value for each key is equal.\nfunc (v1 Value) Equal(v2 Value) bool {\n\treturn equalValue(v1, v2)\n}\n\nfunc equalValue(x, y Value) bool {\n\teqType := x.typ == y.typ\n\tswitch x.typ {\n\tcase nilType:\n\t\treturn eqType\n\tcase boolType:\n\t\treturn eqType && x.Bool() == y.Bool()\n\tcase int32Type, int64Type:\n\t\treturn eqType && x.Int() == y.Int()\n\tcase uint32Type, uint64Type:\n\t\treturn eqType && x.Uint() == y.Uint()\n\tcase float32Type, float64Type:\n\t\treturn eqType && equalFloat(x.Float(), y.Float())\n\tcase stringType:\n\t\treturn eqType && x.String() == y.String()\n\tcase bytesType:\n\t\treturn eqType && bytes.Equal(x.Bytes(), y.Bytes())\n\tcase enumType:\n\t\treturn eqType && x.Enum() == y.Enum()\n\tdefault:\n\t\tswitch x := x.Interface().(type) {\n\t\tcase Message:\n\t\t\ty, ok := y.Interface().(Message)\n\t\t\treturn ok && equalMessage(x, y)\n\t\tcase List:\n\t\t\ty, ok := y.Interface().(List)\n\t\t\treturn ok && equalList(x, y)\n\t\tcase Map:\n\t\t\ty, ok := y.Interface().(Map)\n\t\t\treturn ok && equalMap(x, y)\n\t\tdefault:\n\t\t\tpanic(fmt.Sprintf(\"unknown type: %T\", x))\n\t\t}\n\t}\n}\n\n// equalFloat compares two floats, where NaNs are treated as equal.\nfunc equalFloat(x, y float64) bool {\n\tif math.IsNaN(x) || math.IsNaN(y) {\n\t\treturn math.IsNaN(x) && math.IsNaN(y)\n\t}\n\treturn x == y\n}\n\n// equalMessage compares two messages.\nfunc equalMessage(mx, my Message) bool {\n\tif mx.Descriptor() != my.Descriptor() {\n\t\treturn false\n\t}\n\n\tnx := 0\n\tequal := true\n\tmx.Range(func(fd FieldDescriptor, vx Value) bool {\n\t\tnx++\n\t\tvy := my.Get(fd)\n\t\tequal = my.Has(fd) && equalValue(vx, vy)\n\t\treturn equal\n\t})\n\tif !equal {\n\t\treturn false\n\t}\n\tny := 0\n\tmy.Range(func(fd FieldDescriptor, vx Value) bool {\n\t\tny++\n\t\treturn true\n\t})\n\tif nx != ny {\n\t\treturn false\n\t}\n\n\treturn equalUnknown(mx.GetUnknown(), my.GetUnknown())\n}\n\n// equalList compares two lists.\nfunc equalList(x, y List) bool {\n\tif x.Len() != y.Len() {\n\t\treturn false\n\t}\n\tfor i := x.Len() - 1; i >= 0; i-- {\n\t\tif !equalValue(x.Get(i), y.Get(i)) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// equalMap compares two maps.\nfunc equalMap(x, y Map) bool {\n\tif x.Len() != y.Len() {\n\t\treturn false\n\t}\n\tequal := true\n\tx.Range(func(k MapKey, vx Value) bool {\n\t\tvy := y.Get(k)\n\t\tequal = y.Has(k) && equalValue(vx, vy)\n\t\treturn equal\n\t})\n\treturn equal\n}\n\n// equalUnknown compares unknown fields by direct comparison on the raw bytes\n// of each individual field number.\nfunc equalUnknown(x, y RawFields) bool {\n\tif len(x) != len(y) {\n\t\treturn false\n\t}\n\tif bytes.Equal([]byte(x), []byte(y)) {\n\t\treturn true\n\t}\n\n\tmx := make(map[FieldNumber]RawFields)\n\tmy := make(map[FieldNumber]RawFields)\n\tfor len(x) > 0 {\n\t\tfnum, _, n := protowire.ConsumeField(x)\n\t\tmx[fnum] = append(mx[fnum], x[:n]...)\n\t\tx = x[n:]\n\t}\n\tfor len(y) > 0 {\n\t\tfnum, _, n := protowire.ConsumeField(y)\n\t\tmy[fnum] = append(my[fnum], y[:n]...)\n\t\ty = y[n:]\n\t}\n\treturn reflect.DeepEqual(mx, my)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/reflect/protoreflect/value_union.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage protoreflect\n\nimport (\n\t\"fmt\"\n\t\"math\"\n)\n\n// Value is a union where only one Go type may be set at a time.\n// The Value is used to represent all possible values a field may take.\n// The following shows which Go type is used to represent each proto [Kind]:\n//\n//\t╔════════════╤═════════════════════════════════════╗\n//\t║ Go type    │ Protobuf kind                       ║\n//\t╠════════════╪═════════════════════════════════════╣\n//\t║ bool       │ BoolKind                            ║\n//\t║ int32      │ Int32Kind, Sint32Kind, Sfixed32Kind ║\n//\t║ int64      │ Int64Kind, Sint64Kind, Sfixed64Kind ║\n//\t║ uint32     │ Uint32Kind, Fixed32Kind             ║\n//\t║ uint64     │ Uint64Kind, Fixed64Kind             ║\n//\t║ float32    │ FloatKind                           ║\n//\t║ float64    │ DoubleKind                          ║\n//\t║ string     │ StringKind                          ║\n//\t║ []byte     │ BytesKind                           ║\n//\t║ EnumNumber │ EnumKind                            ║\n//\t║ Message    │ MessageKind, GroupKind              ║\n//\t╚════════════╧═════════════════════════════════════╝\n//\n// Multiple protobuf Kinds may be represented by a single Go type if the type\n// can losslessly represent the information for the proto kind. For example,\n// [Int64Kind], [Sint64Kind], and [Sfixed64Kind] are all represented by int64,\n// but use different integer encoding methods.\n//\n// The [List] or [Map] types are used if the field cardinality is repeated.\n// A field is a [List] if [FieldDescriptor.IsList] reports true.\n// A field is a [Map] if [FieldDescriptor.IsMap] reports true.\n//\n// Converting to/from a Value and a concrete Go value panics on type mismatch.\n// For example, [ValueOf](\"hello\").Int() panics because this attempts to\n// retrieve an int64 from a string.\n//\n// [List], [Map], and [Message] Values are called \"composite\" values.\n//\n// A composite Value may alias (reference) memory at some location,\n// such that changes to the Value updates the that location.\n// A composite value acquired with a Mutable method, such as [Message.Mutable],\n// always references the source object.\n//\n// For example:\n//\n//\t// Append a 0 to a \"repeated int32\" field.\n//\t// Since the Value returned by Mutable is guaranteed to alias\n//\t// the source message, modifying the Value modifies the message.\n//\tmessage.Mutable(fieldDesc).List().Append(protoreflect.ValueOfInt32(0))\n//\n//\t// Assign [0] to a \"repeated int32\" field by creating a new Value,\n//\t// modifying it, and assigning it.\n//\tlist := message.NewField(fieldDesc).List()\n//\tlist.Append(protoreflect.ValueOfInt32(0))\n//\tmessage.Set(fieldDesc, list)\n//\t// ERROR: Since it is not defined whether Set aliases the source,\n//\t// appending to the List here may or may not modify the message.\n//\tlist.Append(protoreflect.ValueOfInt32(0))\n//\n// Some operations, such as [Message.Get], may return an \"empty, read-only\"\n// composite Value. Modifying an empty, read-only value panics.\ntype Value value\n\n// The protoreflect API uses a custom Value union type instead of any\n// to keep the future open for performance optimizations. Using an any\n// always incurs an allocation for primitives (e.g., int64) since it needs to\n// be boxed on the heap (as interfaces can only contain pointers natively).\n// Instead, we represent the Value union as a flat struct that internally keeps\n// track of which type is set. Using unsafe, the Value union can be reduced\n// down to 24B, which is identical in size to a slice.\n//\n// The latest compiler (Go1.11) currently suffers from some limitations:\n//\t• With inlining, the compiler should be able to statically prove that\n//\tonly one of these switch cases are taken and inline one specific case.\n//\tSee https://golang.org/issue/22310.\n\n// ValueOf returns a Value initialized with the concrete value stored in v.\n// This panics if the type does not match one of the allowed types in the\n// Value union.\nfunc ValueOf(v any) Value {\n\tswitch v := v.(type) {\n\tcase nil:\n\t\treturn Value{}\n\tcase bool:\n\t\treturn ValueOfBool(v)\n\tcase int32:\n\t\treturn ValueOfInt32(v)\n\tcase int64:\n\t\treturn ValueOfInt64(v)\n\tcase uint32:\n\t\treturn ValueOfUint32(v)\n\tcase uint64:\n\t\treturn ValueOfUint64(v)\n\tcase float32:\n\t\treturn ValueOfFloat32(v)\n\tcase float64:\n\t\treturn ValueOfFloat64(v)\n\tcase string:\n\t\treturn ValueOfString(v)\n\tcase []byte:\n\t\treturn ValueOfBytes(v)\n\tcase EnumNumber:\n\t\treturn ValueOfEnum(v)\n\tcase Message, List, Map:\n\t\treturn valueOfIface(v)\n\tcase ProtoMessage:\n\t\tpanic(fmt.Sprintf(\"invalid proto.Message(%T) type, expected a protoreflect.Message type\", v))\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"invalid type: %T\", v))\n\t}\n}\n\n// ValueOfBool returns a new boolean value.\nfunc ValueOfBool(v bool) Value {\n\tif v {\n\t\treturn Value{typ: boolType, num: 1}\n\t} else {\n\t\treturn Value{typ: boolType, num: 0}\n\t}\n}\n\n// ValueOfInt32 returns a new int32 value.\nfunc ValueOfInt32(v int32) Value {\n\treturn Value{typ: int32Type, num: uint64(v)}\n}\n\n// ValueOfInt64 returns a new int64 value.\nfunc ValueOfInt64(v int64) Value {\n\treturn Value{typ: int64Type, num: uint64(v)}\n}\n\n// ValueOfUint32 returns a new uint32 value.\nfunc ValueOfUint32(v uint32) Value {\n\treturn Value{typ: uint32Type, num: uint64(v)}\n}\n\n// ValueOfUint64 returns a new uint64 value.\nfunc ValueOfUint64(v uint64) Value {\n\treturn Value{typ: uint64Type, num: v}\n}\n\n// ValueOfFloat32 returns a new float32 value.\nfunc ValueOfFloat32(v float32) Value {\n\treturn Value{typ: float32Type, num: uint64(math.Float64bits(float64(v)))}\n}\n\n// ValueOfFloat64 returns a new float64 value.\nfunc ValueOfFloat64(v float64) Value {\n\treturn Value{typ: float64Type, num: uint64(math.Float64bits(float64(v)))}\n}\n\n// ValueOfString returns a new string value.\nfunc ValueOfString(v string) Value {\n\treturn valueOfString(v)\n}\n\n// ValueOfBytes returns a new bytes value.\nfunc ValueOfBytes(v []byte) Value {\n\treturn valueOfBytes(v[:len(v):len(v)])\n}\n\n// ValueOfEnum returns a new enum value.\nfunc ValueOfEnum(v EnumNumber) Value {\n\treturn Value{typ: enumType, num: uint64(v)}\n}\n\n// ValueOfMessage returns a new Message value.\nfunc ValueOfMessage(v Message) Value {\n\treturn valueOfIface(v)\n}\n\n// ValueOfList returns a new List value.\nfunc ValueOfList(v List) Value {\n\treturn valueOfIface(v)\n}\n\n// ValueOfMap returns a new Map value.\nfunc ValueOfMap(v Map) Value {\n\treturn valueOfIface(v)\n}\n\n// IsValid reports whether v is populated with a value.\nfunc (v Value) IsValid() bool {\n\treturn v.typ != nilType\n}\n\n// Interface returns v as an any.\n//\n// Invariant: v == ValueOf(v).Interface()\nfunc (v Value) Interface() any {\n\tswitch v.typ {\n\tcase nilType:\n\t\treturn nil\n\tcase boolType:\n\t\treturn v.Bool()\n\tcase int32Type:\n\t\treturn int32(v.Int())\n\tcase int64Type:\n\t\treturn int64(v.Int())\n\tcase uint32Type:\n\t\treturn uint32(v.Uint())\n\tcase uint64Type:\n\t\treturn uint64(v.Uint())\n\tcase float32Type:\n\t\treturn float32(v.Float())\n\tcase float64Type:\n\t\treturn float64(v.Float())\n\tcase stringType:\n\t\treturn v.String()\n\tcase bytesType:\n\t\treturn v.Bytes()\n\tcase enumType:\n\t\treturn v.Enum()\n\tdefault:\n\t\treturn v.getIface()\n\t}\n}\n\nfunc (v Value) typeName() string {\n\tswitch v.typ {\n\tcase nilType:\n\t\treturn \"nil\"\n\tcase boolType:\n\t\treturn \"bool\"\n\tcase int32Type:\n\t\treturn \"int32\"\n\tcase int64Type:\n\t\treturn \"int64\"\n\tcase uint32Type:\n\t\treturn \"uint32\"\n\tcase uint64Type:\n\t\treturn \"uint64\"\n\tcase float32Type:\n\t\treturn \"float32\"\n\tcase float64Type:\n\t\treturn \"float64\"\n\tcase stringType:\n\t\treturn \"string\"\n\tcase bytesType:\n\t\treturn \"bytes\"\n\tcase enumType:\n\t\treturn \"enum\"\n\tdefault:\n\t\tswitch v := v.getIface().(type) {\n\t\tcase Message:\n\t\t\treturn \"message\"\n\t\tcase List:\n\t\t\treturn \"list\"\n\t\tcase Map:\n\t\t\treturn \"map\"\n\t\tdefault:\n\t\t\treturn fmt.Sprintf(\"<unknown: %T>\", v)\n\t\t}\n\t}\n}\n\nfunc (v Value) panicMessage(what string) string {\n\treturn fmt.Sprintf(\"type mismatch: cannot convert %v to %s\", v.typeName(), what)\n}\n\n// Bool returns v as a bool and panics if the type is not a bool.\nfunc (v Value) Bool() bool {\n\tswitch v.typ {\n\tcase boolType:\n\t\treturn v.num > 0\n\tdefault:\n\t\tpanic(v.panicMessage(\"bool\"))\n\t}\n}\n\n// Int returns v as a int64 and panics if the type is not a int32 or int64.\nfunc (v Value) Int() int64 {\n\tswitch v.typ {\n\tcase int32Type, int64Type:\n\t\treturn int64(v.num)\n\tdefault:\n\t\tpanic(v.panicMessage(\"int\"))\n\t}\n}\n\n// Uint returns v as a uint64 and panics if the type is not a uint32 or uint64.\nfunc (v Value) Uint() uint64 {\n\tswitch v.typ {\n\tcase uint32Type, uint64Type:\n\t\treturn uint64(v.num)\n\tdefault:\n\t\tpanic(v.panicMessage(\"uint\"))\n\t}\n}\n\n// Float returns v as a float64 and panics if the type is not a float32 or float64.\nfunc (v Value) Float() float64 {\n\tswitch v.typ {\n\tcase float32Type, float64Type:\n\t\treturn math.Float64frombits(uint64(v.num))\n\tdefault:\n\t\tpanic(v.panicMessage(\"float\"))\n\t}\n}\n\n// String returns v as a string. Since this method implements [fmt.Stringer],\n// this returns the formatted string value for any non-string type.\nfunc (v Value) String() string {\n\tswitch v.typ {\n\tcase stringType:\n\t\treturn v.getString()\n\tdefault:\n\t\treturn fmt.Sprint(v.Interface())\n\t}\n}\n\n// Bytes returns v as a []byte and panics if the type is not a []byte.\nfunc (v Value) Bytes() []byte {\n\tswitch v.typ {\n\tcase bytesType:\n\t\treturn v.getBytes()\n\tdefault:\n\t\tpanic(v.panicMessage(\"bytes\"))\n\t}\n}\n\n// Enum returns v as a [EnumNumber] and panics if the type is not a [EnumNumber].\nfunc (v Value) Enum() EnumNumber {\n\tswitch v.typ {\n\tcase enumType:\n\t\treturn EnumNumber(v.num)\n\tdefault:\n\t\tpanic(v.panicMessage(\"enum\"))\n\t}\n}\n\n// Message returns v as a [Message] and panics if the type is not a [Message].\nfunc (v Value) Message() Message {\n\tswitch vi := v.getIface().(type) {\n\tcase Message:\n\t\treturn vi\n\tdefault:\n\t\tpanic(v.panicMessage(\"message\"))\n\t}\n}\n\n// List returns v as a [List] and panics if the type is not a [List].\nfunc (v Value) List() List {\n\tswitch vi := v.getIface().(type) {\n\tcase List:\n\t\treturn vi\n\tdefault:\n\t\tpanic(v.panicMessage(\"list\"))\n\t}\n}\n\n// Map returns v as a [Map] and panics if the type is not a [Map].\nfunc (v Value) Map() Map {\n\tswitch vi := v.getIface().(type) {\n\tcase Map:\n\t\treturn vi\n\tdefault:\n\t\tpanic(v.panicMessage(\"map\"))\n\t}\n}\n\n// MapKey returns v as a [MapKey] and panics for invalid [MapKey] types.\nfunc (v Value) MapKey() MapKey {\n\tswitch v.typ {\n\tcase boolType, int32Type, int64Type, uint32Type, uint64Type, stringType:\n\t\treturn MapKey(v)\n\tdefault:\n\t\tpanic(v.panicMessage(\"map key\"))\n\t}\n}\n\n// MapKey is used to index maps, where the Go type of the MapKey must match\n// the specified key [Kind] (see [MessageDescriptor.IsMapEntry]).\n// The following shows what Go type is used to represent each proto [Kind]:\n//\n//\t╔═════════╤═════════════════════════════════════╗\n//\t║ Go type │ Protobuf kind                       ║\n//\t╠═════════╪═════════════════════════════════════╣\n//\t║ bool    │ BoolKind                            ║\n//\t║ int32   │ Int32Kind, Sint32Kind, Sfixed32Kind ║\n//\t║ int64   │ Int64Kind, Sint64Kind, Sfixed64Kind ║\n//\t║ uint32  │ Uint32Kind, Fixed32Kind             ║\n//\t║ uint64  │ Uint64Kind, Fixed64Kind             ║\n//\t║ string  │ StringKind                          ║\n//\t╚═════════╧═════════════════════════════════════╝\n//\n// A MapKey is constructed and accessed through a [Value]:\n//\n//\tk := ValueOf(\"hash\").MapKey() // convert string to MapKey\n//\ts := k.String()               // convert MapKey to string\n//\n// The MapKey is a strict subset of valid types used in [Value];\n// converting a [Value] to a MapKey with an invalid type panics.\ntype MapKey value\n\n// IsValid reports whether k is populated with a value.\nfunc (k MapKey) IsValid() bool {\n\treturn Value(k).IsValid()\n}\n\n// Interface returns k as an any.\nfunc (k MapKey) Interface() any {\n\treturn Value(k).Interface()\n}\n\n// Bool returns k as a bool and panics if the type is not a bool.\nfunc (k MapKey) Bool() bool {\n\treturn Value(k).Bool()\n}\n\n// Int returns k as a int64 and panics if the type is not a int32 or int64.\nfunc (k MapKey) Int() int64 {\n\treturn Value(k).Int()\n}\n\n// Uint returns k as a uint64 and panics if the type is not a uint32 or uint64.\nfunc (k MapKey) Uint() uint64 {\n\treturn Value(k).Uint()\n}\n\n// String returns k as a string. Since this method implements [fmt.Stringer],\n// this returns the formatted string value for any non-string type.\nfunc (k MapKey) String() string {\n\treturn Value(k).String()\n}\n\n// Value returns k as a [Value].\nfunc (k MapKey) Value() Value {\n\treturn Value(k)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage protoreflect\n\nimport (\n\t\"unsafe\"\n\n\t\"google.golang.org/protobuf/internal/pragma\"\n)\n\ntype (\n\tifaceHeader struct {\n\t\t_    [0]any // if interfaces have greater alignment than unsafe.Pointer, this will enforce it.\n\t\tType unsafe.Pointer\n\t\tData unsafe.Pointer\n\t}\n)\n\nvar (\n\tnilType     = typeOf(nil)\n\tboolType    = typeOf(*new(bool))\n\tint32Type   = typeOf(*new(int32))\n\tint64Type   = typeOf(*new(int64))\n\tuint32Type  = typeOf(*new(uint32))\n\tuint64Type  = typeOf(*new(uint64))\n\tfloat32Type = typeOf(*new(float32))\n\tfloat64Type = typeOf(*new(float64))\n\tstringType  = typeOf(*new(string))\n\tbytesType   = typeOf(*new([]byte))\n\tenumType    = typeOf(*new(EnumNumber))\n)\n\n// typeOf returns a pointer to the Go type information.\n// The pointer is comparable and equal if and only if the types are identical.\nfunc typeOf(t any) unsafe.Pointer {\n\treturn (*ifaceHeader)(unsafe.Pointer(&t)).Type\n}\n\n// value is a union where only one type can be represented at a time.\n// The struct is 24B large on 64-bit systems and requires the minimum storage\n// necessary to represent each possible type.\n//\n// The Go GC needs to be able to scan variables containing pointers.\n// As such, pointers and non-pointers cannot be intermixed.\ntype value struct {\n\tpragma.DoNotCompare // 0B\n\n\t// typ stores the type of the value as a pointer to the Go type.\n\ttyp unsafe.Pointer // 8B\n\n\t// ptr stores the data pointer for a String, Bytes, or interface value.\n\tptr unsafe.Pointer // 8B\n\n\t// num stores a Bool, Int32, Int64, Uint32, Uint64, Float32, Float64, or\n\t// Enum value as a raw uint64.\n\t//\n\t// It is also used to store the length of a String or Bytes value;\n\t// the capacity is ignored.\n\tnum uint64 // 8B\n}\n\nfunc valueOfString(v string) Value {\n\treturn Value{typ: stringType, ptr: unsafe.Pointer(unsafe.StringData(v)), num: uint64(len(v))}\n}\nfunc valueOfBytes(v []byte) Value {\n\treturn Value{typ: bytesType, ptr: unsafe.Pointer(unsafe.SliceData(v)), num: uint64(len(v))}\n}\nfunc valueOfIface(v any) Value {\n\tp := (*ifaceHeader)(unsafe.Pointer(&v))\n\treturn Value{typ: p.Type, ptr: p.Data}\n}\n\nfunc (v Value) getString() string {\n\treturn unsafe.String((*byte)(v.ptr), v.num)\n}\nfunc (v Value) getBytes() []byte {\n\treturn unsafe.Slice((*byte)(v.ptr), v.num)\n}\nfunc (v Value) getIface() (x any) {\n\t*(*ifaceHeader)(unsafe.Pointer(&x)) = ifaceHeader{Type: v.typ, Data: v.ptr}\n\treturn x\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/reflect/protoregistry/registry.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package protoregistry provides data structures to register and lookup\n// protobuf descriptor types.\n//\n// The [Files] registry contains file descriptors and provides the ability\n// to iterate over the files or lookup a specific descriptor within the files.\n// [Files] only contains protobuf descriptors and has no understanding of Go\n// type information that may be associated with each descriptor.\n//\n// The [Types] registry contains descriptor types for which there is a known\n// Go type associated with that descriptor. It provides the ability to iterate\n// over the registered types or lookup a type by name.\npackage protoregistry\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"google.golang.org/protobuf/internal/encoding/messageset\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/internal/flags\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\n// conflictPolicy configures the policy for handling registration conflicts.\n//\n// It can be over-written at compile time with a linker-initialized variable:\n//\n//\tgo build -ldflags \"-X google.golang.org/protobuf/reflect/protoregistry.conflictPolicy=warn\"\n//\n// It can be over-written at program execution with an environment variable:\n//\n//\tGOLANG_PROTOBUF_REGISTRATION_CONFLICT=warn ./main\n//\n// Neither of the above are covered by the compatibility promise and\n// may be removed in a future release of this module.\nvar conflictPolicy = \"panic\" // \"panic\" | \"warn\" | \"ignore\"\n\n// ignoreConflict reports whether to ignore a registration conflict\n// given the descriptor being registered and the error.\n// It is a variable so that the behavior is easily overridden in another file.\nvar ignoreConflict = func(d protoreflect.Descriptor, err error) bool {\n\tconst env = \"GOLANG_PROTOBUF_REGISTRATION_CONFLICT\"\n\tconst faq = \"https://protobuf.dev/reference/go/faq#namespace-conflict\"\n\tpolicy := conflictPolicy\n\tif v := os.Getenv(env); v != \"\" {\n\t\tpolicy = v\n\t}\n\tswitch policy {\n\tcase \"panic\":\n\t\tpanic(fmt.Sprintf(\"%v\\nSee %v\\n\", err, faq))\n\tcase \"warn\":\n\t\tfmt.Fprintf(os.Stderr, \"WARNING: %v\\nSee %v\\n\\n\", err, faq)\n\t\treturn true\n\tcase \"ignore\":\n\t\treturn true\n\tdefault:\n\t\tpanic(\"invalid \" + env + \" value: \" + os.Getenv(env))\n\t}\n}\n\nvar globalMutex sync.RWMutex\n\n// GlobalFiles is a global registry of file descriptors.\nvar GlobalFiles *Files = new(Files)\n\n// GlobalTypes is the registry used by default for type lookups\n// unless a local registry is provided by the user.\nvar GlobalTypes *Types = new(Types)\n\n// NotFound is a sentinel error value to indicate that the type was not found.\n//\n// Since registry lookup can happen in the critical performance path, resolvers\n// must return this exact error value, not an error wrapping it.\nvar NotFound = errors.New(\"not found\")\n\n// Files is a registry for looking up or iterating over files and the\n// descriptors contained within them.\n// The Find and Range methods are safe for concurrent use.\ntype Files struct {\n\t// The map of descsByName contains:\n\t//\tEnumDescriptor\n\t//\tEnumValueDescriptor\n\t//\tMessageDescriptor\n\t//\tExtensionDescriptor\n\t//\tServiceDescriptor\n\t//\t*packageDescriptor\n\t//\n\t// Note that files are stored as a slice, since a package may contain\n\t// multiple files. Only top-level declarations are registered.\n\t// Note that enum values are in the top-level since that are in the same\n\t// scope as the parent enum.\n\tdescsByName map[protoreflect.FullName]any\n\tfilesByPath map[string][]protoreflect.FileDescriptor\n\tnumFiles    int\n}\n\ntype packageDescriptor struct {\n\tfiles []protoreflect.FileDescriptor\n}\n\n// RegisterFile registers the provided file descriptor.\n//\n// If any descriptor within the file conflicts with the descriptor of any\n// previously registered file (e.g., two enums with the same full name),\n// then the file is not registered and an error is returned.\n//\n// It is permitted for multiple files to have the same file path.\nfunc (r *Files) RegisterFile(file protoreflect.FileDescriptor) error {\n\tif r == GlobalFiles {\n\t\tglobalMutex.Lock()\n\t\tdefer globalMutex.Unlock()\n\t}\n\tif r.descsByName == nil {\n\t\tr.descsByName = map[protoreflect.FullName]any{\n\t\t\t\"\": &packageDescriptor{},\n\t\t}\n\t\tr.filesByPath = make(map[string][]protoreflect.FileDescriptor)\n\t}\n\tpath := file.Path()\n\tif prev := r.filesByPath[path]; len(prev) > 0 {\n\t\tr.checkGenProtoConflict(path)\n\t\terr := errors.New(\"file %q is already registered\", file.Path())\n\t\terr = amendErrorWithCaller(err, prev[0], file)\n\t\tif !(r == GlobalFiles && ignoreConflict(file, err)) {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tfor name := file.Package(); name != \"\"; name = name.Parent() {\n\t\tswitch prev := r.descsByName[name]; prev.(type) {\n\t\tcase nil, *packageDescriptor:\n\t\tdefault:\n\t\t\terr := errors.New(\"file %q has a package name conflict over %v\", file.Path(), name)\n\t\t\terr = amendErrorWithCaller(err, prev, file)\n\t\t\tif r == GlobalFiles && ignoreConflict(file, err) {\n\t\t\t\terr = nil\n\t\t\t}\n\t\t\treturn err\n\t\t}\n\t}\n\tvar err error\n\tvar hasConflict bool\n\trangeTopLevelDescriptors(file, func(d protoreflect.Descriptor) {\n\t\tif prev := r.descsByName[d.FullName()]; prev != nil {\n\t\t\thasConflict = true\n\t\t\terr = errors.New(\"file %q has a name conflict over %v\", file.Path(), d.FullName())\n\t\t\terr = amendErrorWithCaller(err, prev, file)\n\t\t\tif r == GlobalFiles && ignoreConflict(d, err) {\n\t\t\t\terr = nil\n\t\t\t}\n\t\t}\n\t})\n\tif hasConflict {\n\t\treturn err\n\t}\n\n\tfor name := file.Package(); name != \"\"; name = name.Parent() {\n\t\tif r.descsByName[name] == nil {\n\t\t\tr.descsByName[name] = &packageDescriptor{}\n\t\t}\n\t}\n\tp := r.descsByName[file.Package()].(*packageDescriptor)\n\tp.files = append(p.files, file)\n\trangeTopLevelDescriptors(file, func(d protoreflect.Descriptor) {\n\t\tr.descsByName[d.FullName()] = d\n\t})\n\tr.filesByPath[path] = append(r.filesByPath[path], file)\n\tr.numFiles++\n\treturn nil\n}\n\n// Several well-known types were hosted in the google.golang.org/genproto module\n// but were later moved to this module. To avoid a weak dependency on the\n// genproto module (and its relatively large set of transitive dependencies),\n// we rely on a registration conflict to determine whether the genproto version\n// is too old (i.e., does not contain aliases to the new type declarations).\nfunc (r *Files) checkGenProtoConflict(path string) {\n\tif r != GlobalFiles {\n\t\treturn\n\t}\n\tvar prevPath string\n\tconst prevModule = \"google.golang.org/genproto\"\n\tconst prevVersion = \"cb27e3aa (May 26th, 2020)\"\n\tswitch path {\n\tcase \"google/protobuf/field_mask.proto\":\n\t\tprevPath = prevModule + \"/protobuf/field_mask\"\n\tcase \"google/protobuf/api.proto\":\n\t\tprevPath = prevModule + \"/protobuf/api\"\n\tcase \"google/protobuf/type.proto\":\n\t\tprevPath = prevModule + \"/protobuf/ptype\"\n\tcase \"google/protobuf/source_context.proto\":\n\t\tprevPath = prevModule + \"/protobuf/source_context\"\n\tdefault:\n\t\treturn\n\t}\n\tpkgName := strings.TrimSuffix(strings.TrimPrefix(path, \"google/protobuf/\"), \".proto\")\n\tpkgName = strings.Replace(pkgName, \"_\", \"\", -1) + \"pb\" // e.g., \"field_mask\" => \"fieldmaskpb\"\n\tcurrPath := \"google.golang.org/protobuf/types/known/\" + pkgName\n\tpanic(fmt.Sprintf(\"\"+\n\t\t\"duplicate registration of %q\\n\"+\n\t\t\"\\n\"+\n\t\t\"The generated definition for this file has moved:\\n\"+\n\t\t\"\\tfrom: %q\\n\"+\n\t\t\"\\tto:   %q\\n\"+\n\t\t\"A dependency on the %q module must\\n\"+\n\t\t\"be at version %v or higher.\\n\"+\n\t\t\"\\n\"+\n\t\t\"Upgrade the dependency by running:\\n\"+\n\t\t\"\\tgo get -u %v\\n\",\n\t\tpath, prevPath, currPath, prevModule, prevVersion, prevPath))\n}\n\n// FindDescriptorByName looks up a descriptor by the full name.\n//\n// This returns (nil, [NotFound]) if not found.\nfunc (r *Files) FindDescriptorByName(name protoreflect.FullName) (protoreflect.Descriptor, error) {\n\tif r == nil {\n\t\treturn nil, NotFound\n\t}\n\tif r == GlobalFiles {\n\t\tglobalMutex.RLock()\n\t\tdefer globalMutex.RUnlock()\n\t}\n\tprefix := name\n\tsuffix := nameSuffix(\"\")\n\tfor prefix != \"\" {\n\t\tif d, ok := r.descsByName[prefix]; ok {\n\t\t\tswitch d := d.(type) {\n\t\t\tcase protoreflect.EnumDescriptor:\n\t\t\t\tif d.FullName() == name {\n\t\t\t\t\treturn d, nil\n\t\t\t\t}\n\t\t\tcase protoreflect.EnumValueDescriptor:\n\t\t\t\tif d.FullName() == name {\n\t\t\t\t\treturn d, nil\n\t\t\t\t}\n\t\t\tcase protoreflect.MessageDescriptor:\n\t\t\t\tif d.FullName() == name {\n\t\t\t\t\treturn d, nil\n\t\t\t\t}\n\t\t\t\tif d := findDescriptorInMessage(d, suffix); d != nil && d.FullName() == name {\n\t\t\t\t\treturn d, nil\n\t\t\t\t}\n\t\t\tcase protoreflect.ExtensionDescriptor:\n\t\t\t\tif d.FullName() == name {\n\t\t\t\t\treturn d, nil\n\t\t\t\t}\n\t\t\tcase protoreflect.ServiceDescriptor:\n\t\t\t\tif d.FullName() == name {\n\t\t\t\t\treturn d, nil\n\t\t\t\t}\n\t\t\t\tif d := d.Methods().ByName(suffix.Pop()); d != nil && d.FullName() == name {\n\t\t\t\t\treturn d, nil\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn nil, NotFound\n\t\t}\n\t\tprefix = prefix.Parent()\n\t\tsuffix = nameSuffix(name[len(prefix)+len(\".\"):])\n\t}\n\treturn nil, NotFound\n}\n\nfunc findDescriptorInMessage(md protoreflect.MessageDescriptor, suffix nameSuffix) protoreflect.Descriptor {\n\tname := suffix.Pop()\n\tif suffix == \"\" {\n\t\tif ed := md.Enums().ByName(name); ed != nil {\n\t\t\treturn ed\n\t\t}\n\t\tfor i := md.Enums().Len() - 1; i >= 0; i-- {\n\t\t\tif vd := md.Enums().Get(i).Values().ByName(name); vd != nil {\n\t\t\t\treturn vd\n\t\t\t}\n\t\t}\n\t\tif xd := md.Extensions().ByName(name); xd != nil {\n\t\t\treturn xd\n\t\t}\n\t\tif fd := md.Fields().ByName(name); fd != nil {\n\t\t\treturn fd\n\t\t}\n\t\tif od := md.Oneofs().ByName(name); od != nil {\n\t\t\treturn od\n\t\t}\n\t}\n\tif md := md.Messages().ByName(name); md != nil {\n\t\tif suffix == \"\" {\n\t\t\treturn md\n\t\t}\n\t\treturn findDescriptorInMessage(md, suffix)\n\t}\n\treturn nil\n}\n\ntype nameSuffix string\n\nfunc (s *nameSuffix) Pop() (name protoreflect.Name) {\n\tif i := strings.IndexByte(string(*s), '.'); i >= 0 {\n\t\tname, *s = protoreflect.Name((*s)[:i]), (*s)[i+1:]\n\t} else {\n\t\tname, *s = protoreflect.Name((*s)), \"\"\n\t}\n\treturn name\n}\n\n// FindFileByPath looks up a file by the path.\n//\n// This returns (nil, [NotFound]) if not found.\n// This returns an error if multiple files have the same path.\nfunc (r *Files) FindFileByPath(path string) (protoreflect.FileDescriptor, error) {\n\tif r == nil {\n\t\treturn nil, NotFound\n\t}\n\tif r == GlobalFiles {\n\t\tglobalMutex.RLock()\n\t\tdefer globalMutex.RUnlock()\n\t}\n\tfds := r.filesByPath[path]\n\tswitch len(fds) {\n\tcase 0:\n\t\treturn nil, NotFound\n\tcase 1:\n\t\treturn fds[0], nil\n\tdefault:\n\t\treturn nil, errors.New(\"multiple files named %q\", path)\n\t}\n}\n\n// NumFiles reports the number of registered files,\n// including duplicate files with the same name.\nfunc (r *Files) NumFiles() int {\n\tif r == nil {\n\t\treturn 0\n\t}\n\tif r == GlobalFiles {\n\t\tglobalMutex.RLock()\n\t\tdefer globalMutex.RUnlock()\n\t}\n\treturn r.numFiles\n}\n\n// RangeFiles iterates over all registered files while f returns true.\n// If multiple files have the same name, RangeFiles iterates over all of them.\n// The iteration order is undefined.\nfunc (r *Files) RangeFiles(f func(protoreflect.FileDescriptor) bool) {\n\tif r == nil {\n\t\treturn\n\t}\n\tif r == GlobalFiles {\n\t\tglobalMutex.RLock()\n\t\tdefer globalMutex.RUnlock()\n\t}\n\tfor _, files := range r.filesByPath {\n\t\tfor _, file := range files {\n\t\t\tif !f(file) {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n}\n\n// NumFilesByPackage reports the number of registered files in a proto package.\nfunc (r *Files) NumFilesByPackage(name protoreflect.FullName) int {\n\tif r == nil {\n\t\treturn 0\n\t}\n\tif r == GlobalFiles {\n\t\tglobalMutex.RLock()\n\t\tdefer globalMutex.RUnlock()\n\t}\n\tp, ok := r.descsByName[name].(*packageDescriptor)\n\tif !ok {\n\t\treturn 0\n\t}\n\treturn len(p.files)\n}\n\n// RangeFilesByPackage iterates over all registered files in a given proto package\n// while f returns true. The iteration order is undefined.\nfunc (r *Files) RangeFilesByPackage(name protoreflect.FullName, f func(protoreflect.FileDescriptor) bool) {\n\tif r == nil {\n\t\treturn\n\t}\n\tif r == GlobalFiles {\n\t\tglobalMutex.RLock()\n\t\tdefer globalMutex.RUnlock()\n\t}\n\tp, ok := r.descsByName[name].(*packageDescriptor)\n\tif !ok {\n\t\treturn\n\t}\n\tfor _, file := range p.files {\n\t\tif !f(file) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// rangeTopLevelDescriptors iterates over all top-level descriptors in a file\n// which will be directly entered into the registry.\nfunc rangeTopLevelDescriptors(fd protoreflect.FileDescriptor, f func(protoreflect.Descriptor)) {\n\teds := fd.Enums()\n\tfor i := eds.Len() - 1; i >= 0; i-- {\n\t\tf(eds.Get(i))\n\t\tvds := eds.Get(i).Values()\n\t\tfor i := vds.Len() - 1; i >= 0; i-- {\n\t\t\tf(vds.Get(i))\n\t\t}\n\t}\n\tmds := fd.Messages()\n\tfor i := mds.Len() - 1; i >= 0; i-- {\n\t\tf(mds.Get(i))\n\t}\n\txds := fd.Extensions()\n\tfor i := xds.Len() - 1; i >= 0; i-- {\n\t\tf(xds.Get(i))\n\t}\n\tsds := fd.Services()\n\tfor i := sds.Len() - 1; i >= 0; i-- {\n\t\tf(sds.Get(i))\n\t}\n}\n\n// MessageTypeResolver is an interface for looking up messages.\n//\n// A compliant implementation must deterministically return the same type\n// if no error is encountered.\n//\n// The [Types] type implements this interface.\ntype MessageTypeResolver interface {\n\t// FindMessageByName looks up a message by its full name.\n\t// E.g., \"google.protobuf.Any\"\n\t//\n\t// This return (nil, NotFound) if not found.\n\tFindMessageByName(message protoreflect.FullName) (protoreflect.MessageType, error)\n\n\t// FindMessageByURL looks up a message by a URL identifier.\n\t// See documentation on google.protobuf.Any.type_url for the URL format.\n\t//\n\t// This returns (nil, NotFound) if not found.\n\tFindMessageByURL(url string) (protoreflect.MessageType, error)\n}\n\n// ExtensionTypeResolver is an interface for looking up extensions.\n//\n// A compliant implementation must deterministically return the same type\n// if no error is encountered.\n//\n// The [Types] type implements this interface.\ntype ExtensionTypeResolver interface {\n\t// FindExtensionByName looks up a extension field by the field's full name.\n\t// Note that this is the full name of the field as determined by\n\t// where the extension is declared and is unrelated to the full name of the\n\t// message being extended.\n\t//\n\t// This returns (nil, NotFound) if not found.\n\tFindExtensionByName(field protoreflect.FullName) (protoreflect.ExtensionType, error)\n\n\t// FindExtensionByNumber looks up a extension field by the field number\n\t// within some parent message, identified by full name.\n\t//\n\t// This returns (nil, NotFound) if not found.\n\tFindExtensionByNumber(message protoreflect.FullName, field protoreflect.FieldNumber) (protoreflect.ExtensionType, error)\n}\n\nvar (\n\t_ MessageTypeResolver   = (*Types)(nil)\n\t_ ExtensionTypeResolver = (*Types)(nil)\n)\n\n// Types is a registry for looking up or iterating over descriptor types.\n// The Find and Range methods are safe for concurrent use.\ntype Types struct {\n\ttypesByName         typesByName\n\textensionsByMessage extensionsByMessage\n\n\tnumEnums      int\n\tnumMessages   int\n\tnumExtensions int\n}\n\ntype (\n\ttypesByName         map[protoreflect.FullName]any\n\textensionsByMessage map[protoreflect.FullName]extensionsByNumber\n\textensionsByNumber  map[protoreflect.FieldNumber]protoreflect.ExtensionType\n)\n\n// RegisterMessage registers the provided message type.\n//\n// If a naming conflict occurs, the type is not registered and an error is returned.\nfunc (r *Types) RegisterMessage(mt protoreflect.MessageType) error {\n\t// Under rare circumstances getting the descriptor might recursively\n\t// examine the registry, so fetch it before locking.\n\tmd := mt.Descriptor()\n\n\tif r == GlobalTypes {\n\t\tglobalMutex.Lock()\n\t\tdefer globalMutex.Unlock()\n\t}\n\n\tif err := r.register(\"message\", md, mt); err != nil {\n\t\treturn err\n\t}\n\tr.numMessages++\n\treturn nil\n}\n\n// RegisterEnum registers the provided enum type.\n//\n// If a naming conflict occurs, the type is not registered and an error is returned.\nfunc (r *Types) RegisterEnum(et protoreflect.EnumType) error {\n\t// Under rare circumstances getting the descriptor might recursively\n\t// examine the registry, so fetch it before locking.\n\ted := et.Descriptor()\n\n\tif r == GlobalTypes {\n\t\tglobalMutex.Lock()\n\t\tdefer globalMutex.Unlock()\n\t}\n\n\tif err := r.register(\"enum\", ed, et); err != nil {\n\t\treturn err\n\t}\n\tr.numEnums++\n\treturn nil\n}\n\n// RegisterExtension registers the provided extension type.\n//\n// If a naming conflict occurs, the type is not registered and an error is returned.\nfunc (r *Types) RegisterExtension(xt protoreflect.ExtensionType) error {\n\t// Under rare circumstances getting the descriptor might recursively\n\t// examine the registry, so fetch it before locking.\n\t//\n\t// A known case where this can happen: Fetching the TypeDescriptor for a\n\t// legacy ExtensionDesc can consult the global registry.\n\txd := xt.TypeDescriptor()\n\n\tif r == GlobalTypes {\n\t\tglobalMutex.Lock()\n\t\tdefer globalMutex.Unlock()\n\t}\n\n\tfield := xd.Number()\n\tmessage := xd.ContainingMessage().FullName()\n\tif prev := r.extensionsByMessage[message][field]; prev != nil {\n\t\terr := errors.New(\"extension number %d is already registered on message %v\", field, message)\n\t\terr = amendErrorWithCaller(err, prev, xt)\n\t\tif !(r == GlobalTypes && ignoreConflict(xd, err)) {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tif err := r.register(\"extension\", xd, xt); err != nil {\n\t\treturn err\n\t}\n\tif r.extensionsByMessage == nil {\n\t\tr.extensionsByMessage = make(extensionsByMessage)\n\t}\n\tif r.extensionsByMessage[message] == nil {\n\t\tr.extensionsByMessage[message] = make(extensionsByNumber)\n\t}\n\tr.extensionsByMessage[message][field] = xt\n\tr.numExtensions++\n\treturn nil\n}\n\nfunc (r *Types) register(kind string, desc protoreflect.Descriptor, typ any) error {\n\tname := desc.FullName()\n\tprev := r.typesByName[name]\n\tif prev != nil {\n\t\terr := errors.New(\"%v %v is already registered\", kind, name)\n\t\terr = amendErrorWithCaller(err, prev, typ)\n\t\tif !(r == GlobalTypes && ignoreConflict(desc, err)) {\n\t\t\treturn err\n\t\t}\n\t}\n\tif r.typesByName == nil {\n\t\tr.typesByName = make(typesByName)\n\t}\n\tr.typesByName[name] = typ\n\treturn nil\n}\n\n// FindEnumByName looks up an enum by its full name.\n// E.g., \"google.protobuf.Field.Kind\".\n//\n// This returns (nil, [NotFound]) if not found.\nfunc (r *Types) FindEnumByName(enum protoreflect.FullName) (protoreflect.EnumType, error) {\n\tif r == nil {\n\t\treturn nil, NotFound\n\t}\n\tif r == GlobalTypes {\n\t\tglobalMutex.RLock()\n\t\tdefer globalMutex.RUnlock()\n\t}\n\tif v := r.typesByName[enum]; v != nil {\n\t\tif et, _ := v.(protoreflect.EnumType); et != nil {\n\t\t\treturn et, nil\n\t\t}\n\t\treturn nil, errors.New(\"found wrong type: got %v, want enum\", typeName(v))\n\t}\n\treturn nil, NotFound\n}\n\n// FindMessageByName looks up a message by its full name,\n// e.g. \"google.protobuf.Any\".\n//\n// This returns (nil, [NotFound]) if not found.\nfunc (r *Types) FindMessageByName(message protoreflect.FullName) (protoreflect.MessageType, error) {\n\tif r == nil {\n\t\treturn nil, NotFound\n\t}\n\tif r == GlobalTypes {\n\t\tglobalMutex.RLock()\n\t\tdefer globalMutex.RUnlock()\n\t}\n\tif v := r.typesByName[message]; v != nil {\n\t\tif mt, _ := v.(protoreflect.MessageType); mt != nil {\n\t\t\treturn mt, nil\n\t\t}\n\t\treturn nil, errors.New(\"found wrong type: got %v, want message\", typeName(v))\n\t}\n\treturn nil, NotFound\n}\n\n// FindMessageByURL looks up a message by a URL identifier.\n// See documentation on google.protobuf.Any.type_url for the URL format.\n//\n// This returns (nil, [NotFound]) if not found.\nfunc (r *Types) FindMessageByURL(url string) (protoreflect.MessageType, error) {\n\t// This function is similar to FindMessageByName but\n\t// truncates anything before and including '/' in the URL.\n\tif r == nil {\n\t\treturn nil, NotFound\n\t}\n\tif r == GlobalTypes {\n\t\tglobalMutex.RLock()\n\t\tdefer globalMutex.RUnlock()\n\t}\n\tmessage := protoreflect.FullName(url)\n\tif i := strings.LastIndexByte(url, '/'); i >= 0 {\n\t\tmessage = message[i+len(\"/\"):]\n\t}\n\n\tif v := r.typesByName[message]; v != nil {\n\t\tif mt, _ := v.(protoreflect.MessageType); mt != nil {\n\t\t\treturn mt, nil\n\t\t}\n\t\treturn nil, errors.New(\"found wrong type: got %v, want message\", typeName(v))\n\t}\n\treturn nil, NotFound\n}\n\n// FindExtensionByName looks up a extension field by the field's full name.\n// Note that this is the full name of the field as determined by\n// where the extension is declared and is unrelated to the full name of the\n// message being extended.\n//\n// This returns (nil, [NotFound]) if not found.\nfunc (r *Types) FindExtensionByName(field protoreflect.FullName) (protoreflect.ExtensionType, error) {\n\tif r == nil {\n\t\treturn nil, NotFound\n\t}\n\tif r == GlobalTypes {\n\t\tglobalMutex.RLock()\n\t\tdefer globalMutex.RUnlock()\n\t}\n\tif v := r.typesByName[field]; v != nil {\n\t\tif xt, _ := v.(protoreflect.ExtensionType); xt != nil {\n\t\t\treturn xt, nil\n\t\t}\n\n\t\t// MessageSet extensions are special in that the name of the extension\n\t\t// is the name of the message type used to extend the MessageSet.\n\t\t// This naming scheme is used by text and JSON serialization.\n\t\t//\n\t\t// This feature is protected by the ProtoLegacy flag since MessageSets\n\t\t// are a proto1 feature that is long deprecated.\n\t\tif flags.ProtoLegacy {\n\t\t\tif _, ok := v.(protoreflect.MessageType); ok {\n\t\t\t\tfield := field.Append(messageset.ExtensionName)\n\t\t\t\tif v := r.typesByName[field]; v != nil {\n\t\t\t\t\tif xt, _ := v.(protoreflect.ExtensionType); xt != nil {\n\t\t\t\t\t\tif messageset.IsMessageSetExtension(xt.TypeDescriptor()) {\n\t\t\t\t\t\t\treturn xt, nil\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn nil, errors.New(\"found wrong type: got %v, want extension\", typeName(v))\n\t}\n\treturn nil, NotFound\n}\n\n// FindExtensionByNumber looks up a extension field by the field number\n// within some parent message, identified by full name.\n//\n// This returns (nil, [NotFound]) if not found.\nfunc (r *Types) FindExtensionByNumber(message protoreflect.FullName, field protoreflect.FieldNumber) (protoreflect.ExtensionType, error) {\n\tif r == nil {\n\t\treturn nil, NotFound\n\t}\n\tif r == GlobalTypes {\n\t\tglobalMutex.RLock()\n\t\tdefer globalMutex.RUnlock()\n\t}\n\tif xt, ok := r.extensionsByMessage[message][field]; ok {\n\t\treturn xt, nil\n\t}\n\treturn nil, NotFound\n}\n\n// NumEnums reports the number of registered enums.\nfunc (r *Types) NumEnums() int {\n\tif r == nil {\n\t\treturn 0\n\t}\n\tif r == GlobalTypes {\n\t\tglobalMutex.RLock()\n\t\tdefer globalMutex.RUnlock()\n\t}\n\treturn r.numEnums\n}\n\n// RangeEnums iterates over all registered enums while f returns true.\n// Iteration order is undefined.\nfunc (r *Types) RangeEnums(f func(protoreflect.EnumType) bool) {\n\tif r == nil {\n\t\treturn\n\t}\n\tif r == GlobalTypes {\n\t\tglobalMutex.RLock()\n\t\tdefer globalMutex.RUnlock()\n\t}\n\tfor _, typ := range r.typesByName {\n\t\tif et, ok := typ.(protoreflect.EnumType); ok {\n\t\t\tif !f(et) {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n}\n\n// NumMessages reports the number of registered messages.\nfunc (r *Types) NumMessages() int {\n\tif r == nil {\n\t\treturn 0\n\t}\n\tif r == GlobalTypes {\n\t\tglobalMutex.RLock()\n\t\tdefer globalMutex.RUnlock()\n\t}\n\treturn r.numMessages\n}\n\n// RangeMessages iterates over all registered messages while f returns true.\n// Iteration order is undefined.\nfunc (r *Types) RangeMessages(f func(protoreflect.MessageType) bool) {\n\tif r == nil {\n\t\treturn\n\t}\n\tif r == GlobalTypes {\n\t\tglobalMutex.RLock()\n\t\tdefer globalMutex.RUnlock()\n\t}\n\tfor _, typ := range r.typesByName {\n\t\tif mt, ok := typ.(protoreflect.MessageType); ok {\n\t\t\tif !f(mt) {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n}\n\n// NumExtensions reports the number of registered extensions.\nfunc (r *Types) NumExtensions() int {\n\tif r == nil {\n\t\treturn 0\n\t}\n\tif r == GlobalTypes {\n\t\tglobalMutex.RLock()\n\t\tdefer globalMutex.RUnlock()\n\t}\n\treturn r.numExtensions\n}\n\n// RangeExtensions iterates over all registered extensions while f returns true.\n// Iteration order is undefined.\nfunc (r *Types) RangeExtensions(f func(protoreflect.ExtensionType) bool) {\n\tif r == nil {\n\t\treturn\n\t}\n\tif r == GlobalTypes {\n\t\tglobalMutex.RLock()\n\t\tdefer globalMutex.RUnlock()\n\t}\n\tfor _, typ := range r.typesByName {\n\t\tif xt, ok := typ.(protoreflect.ExtensionType); ok {\n\t\t\tif !f(xt) {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n}\n\n// NumExtensionsByMessage reports the number of registered extensions for\n// a given message type.\nfunc (r *Types) NumExtensionsByMessage(message protoreflect.FullName) int {\n\tif r == nil {\n\t\treturn 0\n\t}\n\tif r == GlobalTypes {\n\t\tglobalMutex.RLock()\n\t\tdefer globalMutex.RUnlock()\n\t}\n\treturn len(r.extensionsByMessage[message])\n}\n\n// RangeExtensionsByMessage iterates over all registered extensions filtered\n// by a given message type while f returns true. Iteration order is undefined.\nfunc (r *Types) RangeExtensionsByMessage(message protoreflect.FullName, f func(protoreflect.ExtensionType) bool) {\n\tif r == nil {\n\t\treturn\n\t}\n\tif r == GlobalTypes {\n\t\tglobalMutex.RLock()\n\t\tdefer globalMutex.RUnlock()\n\t}\n\tfor _, xt := range r.extensionsByMessage[message] {\n\t\tif !f(xt) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\nfunc typeName(t any) string {\n\tswitch t.(type) {\n\tcase protoreflect.EnumType:\n\t\treturn \"enum\"\n\tcase protoreflect.MessageType:\n\t\treturn \"message\"\n\tcase protoreflect.ExtensionType:\n\t\treturn \"extension\"\n\tdefault:\n\t\treturn fmt.Sprintf(\"%T\", t)\n\t}\n}\n\nfunc amendErrorWithCaller(err error, prev, curr any) error {\n\tprevPkg := goPackage(prev)\n\tcurrPkg := goPackage(curr)\n\tif prevPkg == \"\" || currPkg == \"\" || prevPkg == currPkg {\n\t\treturn err\n\t}\n\treturn errors.New(\"%s\\n\\tpreviously from: %q\\n\\tcurrently from:  %q\", err, prevPkg, currPkg)\n}\n\nfunc goPackage(v any) string {\n\tswitch d := v.(type) {\n\tcase protoreflect.EnumType:\n\t\tv = d.Descriptor()\n\tcase protoreflect.MessageType:\n\t\tv = d.Descriptor()\n\tcase protoreflect.ExtensionType:\n\t\tv = d.TypeDescriptor()\n\t}\n\tif d, ok := v.(protoreflect.Descriptor); ok {\n\t\tv = d.ParentFile()\n\t}\n\tif d, ok := v.(interface{ GoPackagePath() string }); ok {\n\t\treturn d.GoPackagePath()\n\t}\n\treturn \"\"\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/runtime/protoiface/legacy.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage protoiface\n\ntype MessageV1 interface {\n\tReset()\n\tString() string\n\tProtoMessage()\n}\n\ntype ExtensionRangeV1 struct {\n\tStart, End int32 // both inclusive\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/runtime/protoiface/methods.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package protoiface contains types referenced or implemented by messages.\n//\n// WARNING: This package should only be imported by message implementations.\n// The functionality found in this package should be accessed through\n// higher-level abstractions provided by the proto package.\npackage protoiface\n\nimport (\n\t\"google.golang.org/protobuf/internal/pragma\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\n// Methods is a set of optional fast-path implementations of various operations.\ntype Methods = struct {\n\tpragma.NoUnkeyedLiterals\n\n\t// Flags indicate support for optional features.\n\tFlags SupportFlags\n\n\t// Size returns the size in bytes of the wire-format encoding of a message.\n\t// Marshal must be provided if a custom Size is provided.\n\tSize func(SizeInput) SizeOutput\n\n\t// Marshal formats a message in the wire-format encoding to the provided buffer.\n\t// Size should be provided if a custom Marshal is provided.\n\t// It must not return an error for a partial message.\n\tMarshal func(MarshalInput) (MarshalOutput, error)\n\n\t// Unmarshal parses the wire-format encoding and merges the result into a message.\n\t// It must not reset the target message or return an error for a partial message.\n\tUnmarshal func(UnmarshalInput) (UnmarshalOutput, error)\n\n\t// Merge merges the contents of a source message into a destination message.\n\tMerge func(MergeInput) MergeOutput\n\n\t// CheckInitialized returns an error if any required fields in the message are not set.\n\tCheckInitialized func(CheckInitializedInput) (CheckInitializedOutput, error)\n\n\t// Equal compares two messages and returns EqualOutput.Equal == true if they are equal.\n\tEqual func(EqualInput) EqualOutput\n}\n\n// SupportFlags indicate support for optional features.\ntype SupportFlags = uint64\n\nconst (\n\t// SupportMarshalDeterministic reports whether MarshalOptions.Deterministic is supported.\n\tSupportMarshalDeterministic SupportFlags = 1 << iota\n\n\t// SupportUnmarshalDiscardUnknown reports whether UnmarshalOptions.DiscardUnknown is supported.\n\tSupportUnmarshalDiscardUnknown\n)\n\n// SizeInput is input to the Size method.\ntype SizeInput = struct {\n\tpragma.NoUnkeyedLiterals\n\n\tMessage protoreflect.Message\n\tFlags   MarshalInputFlags\n}\n\n// SizeOutput is output from the Size method.\ntype SizeOutput = struct {\n\tpragma.NoUnkeyedLiterals\n\n\tSize int\n}\n\n// MarshalInput is input to the Marshal method.\ntype MarshalInput = struct {\n\tpragma.NoUnkeyedLiterals\n\n\tMessage protoreflect.Message\n\tBuf     []byte // output is appended to this buffer\n\tFlags   MarshalInputFlags\n}\n\n// MarshalOutput is output from the Marshal method.\ntype MarshalOutput = struct {\n\tpragma.NoUnkeyedLiterals\n\n\tBuf []byte // contains marshaled message\n}\n\n// MarshalInputFlags configure the marshaler.\n// Most flags correspond to fields in proto.MarshalOptions.\ntype MarshalInputFlags = uint8\n\nconst (\n\tMarshalDeterministic MarshalInputFlags = 1 << iota\n\tMarshalUseCachedSize\n)\n\n// UnmarshalInput is input to the Unmarshal method.\ntype UnmarshalInput = struct {\n\tpragma.NoUnkeyedLiterals\n\n\tMessage  protoreflect.Message\n\tBuf      []byte // input buffer\n\tFlags    UnmarshalInputFlags\n\tResolver interface {\n\t\tFindExtensionByName(field protoreflect.FullName) (protoreflect.ExtensionType, error)\n\t\tFindExtensionByNumber(message protoreflect.FullName, field protoreflect.FieldNumber) (protoreflect.ExtensionType, error)\n\t}\n\tDepth int\n}\n\n// UnmarshalOutput is output from the Unmarshal method.\ntype UnmarshalOutput = struct {\n\tpragma.NoUnkeyedLiterals\n\n\tFlags UnmarshalOutputFlags\n}\n\n// UnmarshalInputFlags configure the unmarshaler.\n// Most flags correspond to fields in proto.UnmarshalOptions.\ntype UnmarshalInputFlags = uint8\n\nconst (\n\tUnmarshalDiscardUnknown UnmarshalInputFlags = 1 << iota\n\n\t// UnmarshalAliasBuffer permits unmarshal operations to alias the input buffer.\n\t// The unmarshaller must not modify the contents of the buffer.\n\tUnmarshalAliasBuffer\n\n\t// UnmarshalValidated indicates that validation has already been\n\t// performed on the input buffer.\n\tUnmarshalValidated\n\n\t// UnmarshalCheckRequired is set if this unmarshal operation ultimately will care if required fields are\n\t// initialized.\n\tUnmarshalCheckRequired\n\n\t// UnmarshalNoLazyDecoding is set if this unmarshal operation should not use\n\t// lazy decoding, even when otherwise available.\n\tUnmarshalNoLazyDecoding\n)\n\n// UnmarshalOutputFlags are output from the Unmarshal method.\ntype UnmarshalOutputFlags = uint8\n\nconst (\n\t// UnmarshalInitialized may be set on return if all required fields are known to be set.\n\t// If unset, then it does not necessarily indicate that the message is uninitialized,\n\t// only that its status could not be confirmed.\n\tUnmarshalInitialized UnmarshalOutputFlags = 1 << iota\n)\n\n// MergeInput is input to the Merge method.\ntype MergeInput = struct {\n\tpragma.NoUnkeyedLiterals\n\n\tSource      protoreflect.Message\n\tDestination protoreflect.Message\n}\n\n// MergeOutput is output from the Merge method.\ntype MergeOutput = struct {\n\tpragma.NoUnkeyedLiterals\n\n\tFlags MergeOutputFlags\n}\n\n// MergeOutputFlags are output from the Merge method.\ntype MergeOutputFlags = uint8\n\nconst (\n\t// MergeComplete reports whether the merge was performed.\n\t// If unset, the merger must have made no changes to the destination.\n\tMergeComplete MergeOutputFlags = 1 << iota\n)\n\n// CheckInitializedInput is input to the CheckInitialized method.\ntype CheckInitializedInput = struct {\n\tpragma.NoUnkeyedLiterals\n\n\tMessage protoreflect.Message\n}\n\n// CheckInitializedOutput is output from the CheckInitialized method.\ntype CheckInitializedOutput = struct {\n\tpragma.NoUnkeyedLiterals\n}\n\n// EqualInput is input to the Equal method.\ntype EqualInput = struct {\n\tpragma.NoUnkeyedLiterals\n\n\tMessageA protoreflect.Message\n\tMessageB protoreflect.Message\n}\n\n// EqualOutput is output from the Equal method.\ntype EqualOutput = struct {\n\tpragma.NoUnkeyedLiterals\n\n\tEqual bool\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/runtime/protoimpl/impl.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package protoimpl contains the default implementation for messages\n// generated by protoc-gen-go.\n//\n// WARNING: This package should only ever be imported by generated messages.\n// The compatibility agreement covers nothing except for functionality needed\n// to keep existing generated messages operational. Breakages that occur due\n// to unauthorized usages of this package are not the author's responsibility.\npackage protoimpl\n\nimport (\n\t\"google.golang.org/protobuf/internal/filedesc\"\n\t\"google.golang.org/protobuf/internal/filetype\"\n\t\"google.golang.org/protobuf/internal/impl\"\n\t\"google.golang.org/protobuf/internal/protolazy\"\n)\n\n// UnsafeEnabled specifies whether package unsafe can be used.\nconst UnsafeEnabled = impl.UnsafeEnabled\n\ntype (\n\t// Types used by generated code in init functions.\n\tDescBuilder = filedesc.Builder\n\tTypeBuilder = filetype.Builder\n\n\t// Types used by generated code to implement EnumType, MessageType, and ExtensionType.\n\tEnumInfo      = impl.EnumInfo\n\tMessageInfo   = impl.MessageInfo\n\tExtensionInfo = impl.ExtensionInfo\n\n\t// Types embedded in generated messages.\n\tMessageState     = impl.MessageState\n\tSizeCache        = impl.SizeCache\n\tWeakFields       = impl.WeakFields\n\tUnknownFields    = impl.UnknownFields\n\tExtensionFields  = impl.ExtensionFields\n\tExtensionFieldV1 = impl.ExtensionField\n\n\tPointer = impl.Pointer\n\n\tLazyUnmarshalInfo  = *protolazy.XXX_lazyUnmarshalInfo\n\tRaceDetectHookData = impl.RaceDetectHookData\n)\n\nvar X impl.Export\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/runtime/protoimpl/version.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage protoimpl\n\nimport (\n\t\"google.golang.org/protobuf/internal/version\"\n)\n\nconst (\n\t// MaxVersion is the maximum supported version for generated .pb.go files.\n\t// It is always the current version of the module.\n\tMaxVersion = version.Minor\n\n\t// GenVersion is the runtime version required by generated .pb.go files.\n\t// This is incremented when generated code relies on new functionality\n\t// in the runtime.\n\tGenVersion = 20\n\n\t// MinVersion is the minimum supported version for generated .pb.go files.\n\t// This is incremented when the runtime drops support for old code.\n\tMinVersion = 0\n)\n\n// EnforceVersion is used by code generated by protoc-gen-go\n// to statically enforce minimum and maximum versions of this package.\n// A compilation failure implies either that:\n//   - the runtime package is too old and needs to be updated OR\n//   - the generated code is too old and needs to be regenerated.\n//\n// The runtime package can be upgraded by running:\n//\n//\tgo get google.golang.org/protobuf\n//\n// The generated code can be regenerated by running:\n//\n//\tprotoc --go_out=${PROTOC_GEN_GO_ARGS} ${PROTO_FILES}\n//\n// Example usage by generated code:\n//\n//\tconst (\n//\t\t// Verify that this generated code is sufficiently up-to-date.\n//\t\t_ = protoimpl.EnforceVersion(genVersion - protoimpl.MinVersion)\n//\t\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n//\t\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - genVersion)\n//\t)\n//\n// The genVersion is the current minor version used to generated the code.\n// This compile-time check relies on negative integer overflow of a uint\n// being a compilation failure (guaranteed by the Go specification).\ntype EnforceVersion uint\n\n// This enforces the following invariant:\n//\n//\tMinVersion ≤ GenVersion ≤ MaxVersion\nconst (\n\t_ = EnforceVersion(GenVersion - MinVersion)\n\t_ = EnforceVersion(MaxVersion - GenVersion)\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/types/descriptorpb/descriptor.pb.go",
    "content": "// Protocol Buffers - Google's data interchange format\n// Copyright 2008 Google Inc.  All rights reserved.\n// https://developers.google.com/protocol-buffers/\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 Google Inc. 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\n// Author: kenton@google.com (Kenton Varda)\n//  Based on original Protocol Buffers design by\n//  Sanjay Ghemawat, Jeff Dean, and others.\n//\n// The messages in this file describe the definitions found in .proto files.\n// A valid .proto file can be translated directly to a FileDescriptorProto\n// without any other information (e.g. without reading its imports).\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// source: google/protobuf/descriptor.proto\n\npackage descriptorpb\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\n// The full set of known editions.\ntype Edition int32\n\nconst (\n\t// A placeholder for an unknown edition value.\n\tEdition_EDITION_UNKNOWN Edition = 0\n\t// A placeholder edition for specifying default behaviors *before* a feature\n\t// was first introduced.  This is effectively an \"infinite past\".\n\tEdition_EDITION_LEGACY Edition = 900\n\t// Legacy syntax \"editions\".  These pre-date editions, but behave much like\n\t// distinct editions.  These can't be used to specify the edition of proto\n\t// files, but feature definitions must supply proto2/proto3 defaults for\n\t// backwards compatibility.\n\tEdition_EDITION_PROTO2 Edition = 998\n\tEdition_EDITION_PROTO3 Edition = 999\n\t// Editions that have been released.  The specific values are arbitrary and\n\t// should not be depended on, but they will always be time-ordered for easy\n\t// comparison.\n\tEdition_EDITION_2023 Edition = 1000\n\tEdition_EDITION_2024 Edition = 1001\n\t// Placeholder editions for testing feature resolution.  These should not be\n\t// used or relied on outside of tests.\n\tEdition_EDITION_1_TEST_ONLY     Edition = 1\n\tEdition_EDITION_2_TEST_ONLY     Edition = 2\n\tEdition_EDITION_99997_TEST_ONLY Edition = 99997\n\tEdition_EDITION_99998_TEST_ONLY Edition = 99998\n\tEdition_EDITION_99999_TEST_ONLY Edition = 99999\n\t// Placeholder for specifying unbounded edition support.  This should only\n\t// ever be used by plugins that can expect to never require any changes to\n\t// support a new edition.\n\tEdition_EDITION_MAX Edition = 2147483647\n)\n\n// Enum value maps for Edition.\nvar (\n\tEdition_name = map[int32]string{\n\t\t0:          \"EDITION_UNKNOWN\",\n\t\t900:        \"EDITION_LEGACY\",\n\t\t998:        \"EDITION_PROTO2\",\n\t\t999:        \"EDITION_PROTO3\",\n\t\t1000:       \"EDITION_2023\",\n\t\t1001:       \"EDITION_2024\",\n\t\t1:          \"EDITION_1_TEST_ONLY\",\n\t\t2:          \"EDITION_2_TEST_ONLY\",\n\t\t99997:      \"EDITION_99997_TEST_ONLY\",\n\t\t99998:      \"EDITION_99998_TEST_ONLY\",\n\t\t99999:      \"EDITION_99999_TEST_ONLY\",\n\t\t2147483647: \"EDITION_MAX\",\n\t}\n\tEdition_value = map[string]int32{\n\t\t\"EDITION_UNKNOWN\":         0,\n\t\t\"EDITION_LEGACY\":          900,\n\t\t\"EDITION_PROTO2\":          998,\n\t\t\"EDITION_PROTO3\":          999,\n\t\t\"EDITION_2023\":            1000,\n\t\t\"EDITION_2024\":            1001,\n\t\t\"EDITION_1_TEST_ONLY\":     1,\n\t\t\"EDITION_2_TEST_ONLY\":     2,\n\t\t\"EDITION_99997_TEST_ONLY\": 99997,\n\t\t\"EDITION_99998_TEST_ONLY\": 99998,\n\t\t\"EDITION_99999_TEST_ONLY\": 99999,\n\t\t\"EDITION_MAX\":             2147483647,\n\t}\n)\n\nfunc (x Edition) Enum() *Edition {\n\tp := new(Edition)\n\t*p = x\n\treturn p\n}\n\nfunc (x Edition) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (Edition) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_protobuf_descriptor_proto_enumTypes[0].Descriptor()\n}\n\nfunc (Edition) Type() protoreflect.EnumType {\n\treturn &file_google_protobuf_descriptor_proto_enumTypes[0]\n}\n\nfunc (x Edition) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Do not use.\nfunc (x *Edition) UnmarshalJSON(b []byte) error {\n\tnum, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = Edition(num)\n\treturn nil\n}\n\n// Deprecated: Use Edition.Descriptor instead.\nfunc (Edition) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{0}\n}\n\n// Describes the 'visibility' of a symbol with respect to the proto import\n// system. Symbols can only be imported when the visibility rules do not prevent\n// it (ex: local symbols cannot be imported).  Visibility modifiers can only set\n// on `message` and `enum` as they are the only types available to be referenced\n// from other files.\ntype SymbolVisibility int32\n\nconst (\n\tSymbolVisibility_VISIBILITY_UNSET  SymbolVisibility = 0\n\tSymbolVisibility_VISIBILITY_LOCAL  SymbolVisibility = 1\n\tSymbolVisibility_VISIBILITY_EXPORT SymbolVisibility = 2\n)\n\n// Enum value maps for SymbolVisibility.\nvar (\n\tSymbolVisibility_name = map[int32]string{\n\t\t0: \"VISIBILITY_UNSET\",\n\t\t1: \"VISIBILITY_LOCAL\",\n\t\t2: \"VISIBILITY_EXPORT\",\n\t}\n\tSymbolVisibility_value = map[string]int32{\n\t\t\"VISIBILITY_UNSET\":  0,\n\t\t\"VISIBILITY_LOCAL\":  1,\n\t\t\"VISIBILITY_EXPORT\": 2,\n\t}\n)\n\nfunc (x SymbolVisibility) Enum() *SymbolVisibility {\n\tp := new(SymbolVisibility)\n\t*p = x\n\treturn p\n}\n\nfunc (x SymbolVisibility) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (SymbolVisibility) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_protobuf_descriptor_proto_enumTypes[1].Descriptor()\n}\n\nfunc (SymbolVisibility) Type() protoreflect.EnumType {\n\treturn &file_google_protobuf_descriptor_proto_enumTypes[1]\n}\n\nfunc (x SymbolVisibility) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Do not use.\nfunc (x *SymbolVisibility) UnmarshalJSON(b []byte) error {\n\tnum, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = SymbolVisibility(num)\n\treturn nil\n}\n\n// Deprecated: Use SymbolVisibility.Descriptor instead.\nfunc (SymbolVisibility) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{1}\n}\n\n// The verification state of the extension range.\ntype ExtensionRangeOptions_VerificationState int32\n\nconst (\n\t// All the extensions of the range must be declared.\n\tExtensionRangeOptions_DECLARATION ExtensionRangeOptions_VerificationState = 0\n\tExtensionRangeOptions_UNVERIFIED  ExtensionRangeOptions_VerificationState = 1\n)\n\n// Enum value maps for ExtensionRangeOptions_VerificationState.\nvar (\n\tExtensionRangeOptions_VerificationState_name = map[int32]string{\n\t\t0: \"DECLARATION\",\n\t\t1: \"UNVERIFIED\",\n\t}\n\tExtensionRangeOptions_VerificationState_value = map[string]int32{\n\t\t\"DECLARATION\": 0,\n\t\t\"UNVERIFIED\":  1,\n\t}\n)\n\nfunc (x ExtensionRangeOptions_VerificationState) Enum() *ExtensionRangeOptions_VerificationState {\n\tp := new(ExtensionRangeOptions_VerificationState)\n\t*p = x\n\treturn p\n}\n\nfunc (x ExtensionRangeOptions_VerificationState) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (ExtensionRangeOptions_VerificationState) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_protobuf_descriptor_proto_enumTypes[2].Descriptor()\n}\n\nfunc (ExtensionRangeOptions_VerificationState) Type() protoreflect.EnumType {\n\treturn &file_google_protobuf_descriptor_proto_enumTypes[2]\n}\n\nfunc (x ExtensionRangeOptions_VerificationState) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Do not use.\nfunc (x *ExtensionRangeOptions_VerificationState) UnmarshalJSON(b []byte) error {\n\tnum, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = ExtensionRangeOptions_VerificationState(num)\n\treturn nil\n}\n\n// Deprecated: Use ExtensionRangeOptions_VerificationState.Descriptor instead.\nfunc (ExtensionRangeOptions_VerificationState) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{3, 0}\n}\n\ntype FieldDescriptorProto_Type int32\n\nconst (\n\t// 0 is reserved for errors.\n\t// Order is weird for historical reasons.\n\tFieldDescriptorProto_TYPE_DOUBLE FieldDescriptorProto_Type = 1\n\tFieldDescriptorProto_TYPE_FLOAT  FieldDescriptorProto_Type = 2\n\t// Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT64 if\n\t// negative values are likely.\n\tFieldDescriptorProto_TYPE_INT64  FieldDescriptorProto_Type = 3\n\tFieldDescriptorProto_TYPE_UINT64 FieldDescriptorProto_Type = 4\n\t// Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT32 if\n\t// negative values are likely.\n\tFieldDescriptorProto_TYPE_INT32   FieldDescriptorProto_Type = 5\n\tFieldDescriptorProto_TYPE_FIXED64 FieldDescriptorProto_Type = 6\n\tFieldDescriptorProto_TYPE_FIXED32 FieldDescriptorProto_Type = 7\n\tFieldDescriptorProto_TYPE_BOOL    FieldDescriptorProto_Type = 8\n\tFieldDescriptorProto_TYPE_STRING  FieldDescriptorProto_Type = 9\n\t// Tag-delimited aggregate.\n\t// Group type is deprecated and not supported after google.protobuf. However, Proto3\n\t// implementations should still be able to parse the group wire format and\n\t// treat group fields as unknown fields.  In Editions, the group wire format\n\t// can be enabled via the `message_encoding` feature.\n\tFieldDescriptorProto_TYPE_GROUP   FieldDescriptorProto_Type = 10\n\tFieldDescriptorProto_TYPE_MESSAGE FieldDescriptorProto_Type = 11 // Length-delimited aggregate.\n\t// New in version 2.\n\tFieldDescriptorProto_TYPE_BYTES    FieldDescriptorProto_Type = 12\n\tFieldDescriptorProto_TYPE_UINT32   FieldDescriptorProto_Type = 13\n\tFieldDescriptorProto_TYPE_ENUM     FieldDescriptorProto_Type = 14\n\tFieldDescriptorProto_TYPE_SFIXED32 FieldDescriptorProto_Type = 15\n\tFieldDescriptorProto_TYPE_SFIXED64 FieldDescriptorProto_Type = 16\n\tFieldDescriptorProto_TYPE_SINT32   FieldDescriptorProto_Type = 17 // Uses ZigZag encoding.\n\tFieldDescriptorProto_TYPE_SINT64   FieldDescriptorProto_Type = 18 // Uses ZigZag encoding.\n)\n\n// Enum value maps for FieldDescriptorProto_Type.\nvar (\n\tFieldDescriptorProto_Type_name = map[int32]string{\n\t\t1:  \"TYPE_DOUBLE\",\n\t\t2:  \"TYPE_FLOAT\",\n\t\t3:  \"TYPE_INT64\",\n\t\t4:  \"TYPE_UINT64\",\n\t\t5:  \"TYPE_INT32\",\n\t\t6:  \"TYPE_FIXED64\",\n\t\t7:  \"TYPE_FIXED32\",\n\t\t8:  \"TYPE_BOOL\",\n\t\t9:  \"TYPE_STRING\",\n\t\t10: \"TYPE_GROUP\",\n\t\t11: \"TYPE_MESSAGE\",\n\t\t12: \"TYPE_BYTES\",\n\t\t13: \"TYPE_UINT32\",\n\t\t14: \"TYPE_ENUM\",\n\t\t15: \"TYPE_SFIXED32\",\n\t\t16: \"TYPE_SFIXED64\",\n\t\t17: \"TYPE_SINT32\",\n\t\t18: \"TYPE_SINT64\",\n\t}\n\tFieldDescriptorProto_Type_value = map[string]int32{\n\t\t\"TYPE_DOUBLE\":   1,\n\t\t\"TYPE_FLOAT\":    2,\n\t\t\"TYPE_INT64\":    3,\n\t\t\"TYPE_UINT64\":   4,\n\t\t\"TYPE_INT32\":    5,\n\t\t\"TYPE_FIXED64\":  6,\n\t\t\"TYPE_FIXED32\":  7,\n\t\t\"TYPE_BOOL\":     8,\n\t\t\"TYPE_STRING\":   9,\n\t\t\"TYPE_GROUP\":    10,\n\t\t\"TYPE_MESSAGE\":  11,\n\t\t\"TYPE_BYTES\":    12,\n\t\t\"TYPE_UINT32\":   13,\n\t\t\"TYPE_ENUM\":     14,\n\t\t\"TYPE_SFIXED32\": 15,\n\t\t\"TYPE_SFIXED64\": 16,\n\t\t\"TYPE_SINT32\":   17,\n\t\t\"TYPE_SINT64\":   18,\n\t}\n)\n\nfunc (x FieldDescriptorProto_Type) Enum() *FieldDescriptorProto_Type {\n\tp := new(FieldDescriptorProto_Type)\n\t*p = x\n\treturn p\n}\n\nfunc (x FieldDescriptorProto_Type) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (FieldDescriptorProto_Type) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_protobuf_descriptor_proto_enumTypes[3].Descriptor()\n}\n\nfunc (FieldDescriptorProto_Type) Type() protoreflect.EnumType {\n\treturn &file_google_protobuf_descriptor_proto_enumTypes[3]\n}\n\nfunc (x FieldDescriptorProto_Type) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Do not use.\nfunc (x *FieldDescriptorProto_Type) UnmarshalJSON(b []byte) error {\n\tnum, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = FieldDescriptorProto_Type(num)\n\treturn nil\n}\n\n// Deprecated: Use FieldDescriptorProto_Type.Descriptor instead.\nfunc (FieldDescriptorProto_Type) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{4, 0}\n}\n\ntype FieldDescriptorProto_Label int32\n\nconst (\n\t// 0 is reserved for errors\n\tFieldDescriptorProto_LABEL_OPTIONAL FieldDescriptorProto_Label = 1\n\tFieldDescriptorProto_LABEL_REPEATED FieldDescriptorProto_Label = 3\n\t// The required label is only allowed in google.protobuf.  In proto3 and Editions\n\t// it's explicitly prohibited.  In Editions, the `field_presence` feature\n\t// can be used to get this behavior.\n\tFieldDescriptorProto_LABEL_REQUIRED FieldDescriptorProto_Label = 2\n)\n\n// Enum value maps for FieldDescriptorProto_Label.\nvar (\n\tFieldDescriptorProto_Label_name = map[int32]string{\n\t\t1: \"LABEL_OPTIONAL\",\n\t\t3: \"LABEL_REPEATED\",\n\t\t2: \"LABEL_REQUIRED\",\n\t}\n\tFieldDescriptorProto_Label_value = map[string]int32{\n\t\t\"LABEL_OPTIONAL\": 1,\n\t\t\"LABEL_REPEATED\": 3,\n\t\t\"LABEL_REQUIRED\": 2,\n\t}\n)\n\nfunc (x FieldDescriptorProto_Label) Enum() *FieldDescriptorProto_Label {\n\tp := new(FieldDescriptorProto_Label)\n\t*p = x\n\treturn p\n}\n\nfunc (x FieldDescriptorProto_Label) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (FieldDescriptorProto_Label) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_protobuf_descriptor_proto_enumTypes[4].Descriptor()\n}\n\nfunc (FieldDescriptorProto_Label) Type() protoreflect.EnumType {\n\treturn &file_google_protobuf_descriptor_proto_enumTypes[4]\n}\n\nfunc (x FieldDescriptorProto_Label) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Do not use.\nfunc (x *FieldDescriptorProto_Label) UnmarshalJSON(b []byte) error {\n\tnum, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = FieldDescriptorProto_Label(num)\n\treturn nil\n}\n\n// Deprecated: Use FieldDescriptorProto_Label.Descriptor instead.\nfunc (FieldDescriptorProto_Label) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{4, 1}\n}\n\n// Generated classes can be optimized for speed or code size.\ntype FileOptions_OptimizeMode int32\n\nconst (\n\tFileOptions_SPEED FileOptions_OptimizeMode = 1 // Generate complete code for parsing, serialization,\n\t// etc.\n\tFileOptions_CODE_SIZE    FileOptions_OptimizeMode = 2 // Use ReflectionOps to implement these methods.\n\tFileOptions_LITE_RUNTIME FileOptions_OptimizeMode = 3 // Generate code using MessageLite and the lite runtime.\n)\n\n// Enum value maps for FileOptions_OptimizeMode.\nvar (\n\tFileOptions_OptimizeMode_name = map[int32]string{\n\t\t1: \"SPEED\",\n\t\t2: \"CODE_SIZE\",\n\t\t3: \"LITE_RUNTIME\",\n\t}\n\tFileOptions_OptimizeMode_value = map[string]int32{\n\t\t\"SPEED\":        1,\n\t\t\"CODE_SIZE\":    2,\n\t\t\"LITE_RUNTIME\": 3,\n\t}\n)\n\nfunc (x FileOptions_OptimizeMode) Enum() *FileOptions_OptimizeMode {\n\tp := new(FileOptions_OptimizeMode)\n\t*p = x\n\treturn p\n}\n\nfunc (x FileOptions_OptimizeMode) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (FileOptions_OptimizeMode) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_protobuf_descriptor_proto_enumTypes[5].Descriptor()\n}\n\nfunc (FileOptions_OptimizeMode) Type() protoreflect.EnumType {\n\treturn &file_google_protobuf_descriptor_proto_enumTypes[5]\n}\n\nfunc (x FileOptions_OptimizeMode) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Do not use.\nfunc (x *FileOptions_OptimizeMode) UnmarshalJSON(b []byte) error {\n\tnum, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = FileOptions_OptimizeMode(num)\n\treturn nil\n}\n\n// Deprecated: Use FileOptions_OptimizeMode.Descriptor instead.\nfunc (FileOptions_OptimizeMode) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{10, 0}\n}\n\ntype FieldOptions_CType int32\n\nconst (\n\t// Default mode.\n\tFieldOptions_STRING FieldOptions_CType = 0\n\t// The option [ctype=CORD] may be applied to a non-repeated field of type\n\t// \"bytes\". It indicates that in C++, the data should be stored in a Cord\n\t// instead of a string.  For very large strings, this may reduce memory\n\t// fragmentation. It may also allow better performance when parsing from a\n\t// Cord, or when parsing with aliasing enabled, as the parsed Cord may then\n\t// alias the original buffer.\n\tFieldOptions_CORD         FieldOptions_CType = 1\n\tFieldOptions_STRING_PIECE FieldOptions_CType = 2\n)\n\n// Enum value maps for FieldOptions_CType.\nvar (\n\tFieldOptions_CType_name = map[int32]string{\n\t\t0: \"STRING\",\n\t\t1: \"CORD\",\n\t\t2: \"STRING_PIECE\",\n\t}\n\tFieldOptions_CType_value = map[string]int32{\n\t\t\"STRING\":       0,\n\t\t\"CORD\":         1,\n\t\t\"STRING_PIECE\": 2,\n\t}\n)\n\nfunc (x FieldOptions_CType) Enum() *FieldOptions_CType {\n\tp := new(FieldOptions_CType)\n\t*p = x\n\treturn p\n}\n\nfunc (x FieldOptions_CType) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (FieldOptions_CType) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_protobuf_descriptor_proto_enumTypes[6].Descriptor()\n}\n\nfunc (FieldOptions_CType) Type() protoreflect.EnumType {\n\treturn &file_google_protobuf_descriptor_proto_enumTypes[6]\n}\n\nfunc (x FieldOptions_CType) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Do not use.\nfunc (x *FieldOptions_CType) UnmarshalJSON(b []byte) error {\n\tnum, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = FieldOptions_CType(num)\n\treturn nil\n}\n\n// Deprecated: Use FieldOptions_CType.Descriptor instead.\nfunc (FieldOptions_CType) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{12, 0}\n}\n\ntype FieldOptions_JSType int32\n\nconst (\n\t// Use the default type.\n\tFieldOptions_JS_NORMAL FieldOptions_JSType = 0\n\t// Use JavaScript strings.\n\tFieldOptions_JS_STRING FieldOptions_JSType = 1\n\t// Use JavaScript numbers.\n\tFieldOptions_JS_NUMBER FieldOptions_JSType = 2\n)\n\n// Enum value maps for FieldOptions_JSType.\nvar (\n\tFieldOptions_JSType_name = map[int32]string{\n\t\t0: \"JS_NORMAL\",\n\t\t1: \"JS_STRING\",\n\t\t2: \"JS_NUMBER\",\n\t}\n\tFieldOptions_JSType_value = map[string]int32{\n\t\t\"JS_NORMAL\": 0,\n\t\t\"JS_STRING\": 1,\n\t\t\"JS_NUMBER\": 2,\n\t}\n)\n\nfunc (x FieldOptions_JSType) Enum() *FieldOptions_JSType {\n\tp := new(FieldOptions_JSType)\n\t*p = x\n\treturn p\n}\n\nfunc (x FieldOptions_JSType) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (FieldOptions_JSType) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_protobuf_descriptor_proto_enumTypes[7].Descriptor()\n}\n\nfunc (FieldOptions_JSType) Type() protoreflect.EnumType {\n\treturn &file_google_protobuf_descriptor_proto_enumTypes[7]\n}\n\nfunc (x FieldOptions_JSType) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Do not use.\nfunc (x *FieldOptions_JSType) UnmarshalJSON(b []byte) error {\n\tnum, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = FieldOptions_JSType(num)\n\treturn nil\n}\n\n// Deprecated: Use FieldOptions_JSType.Descriptor instead.\nfunc (FieldOptions_JSType) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{12, 1}\n}\n\n// If set to RETENTION_SOURCE, the option will be omitted from the binary.\ntype FieldOptions_OptionRetention int32\n\nconst (\n\tFieldOptions_RETENTION_UNKNOWN FieldOptions_OptionRetention = 0\n\tFieldOptions_RETENTION_RUNTIME FieldOptions_OptionRetention = 1\n\tFieldOptions_RETENTION_SOURCE  FieldOptions_OptionRetention = 2\n)\n\n// Enum value maps for FieldOptions_OptionRetention.\nvar (\n\tFieldOptions_OptionRetention_name = map[int32]string{\n\t\t0: \"RETENTION_UNKNOWN\",\n\t\t1: \"RETENTION_RUNTIME\",\n\t\t2: \"RETENTION_SOURCE\",\n\t}\n\tFieldOptions_OptionRetention_value = map[string]int32{\n\t\t\"RETENTION_UNKNOWN\": 0,\n\t\t\"RETENTION_RUNTIME\": 1,\n\t\t\"RETENTION_SOURCE\":  2,\n\t}\n)\n\nfunc (x FieldOptions_OptionRetention) Enum() *FieldOptions_OptionRetention {\n\tp := new(FieldOptions_OptionRetention)\n\t*p = x\n\treturn p\n}\n\nfunc (x FieldOptions_OptionRetention) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (FieldOptions_OptionRetention) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_protobuf_descriptor_proto_enumTypes[8].Descriptor()\n}\n\nfunc (FieldOptions_OptionRetention) Type() protoreflect.EnumType {\n\treturn &file_google_protobuf_descriptor_proto_enumTypes[8]\n}\n\nfunc (x FieldOptions_OptionRetention) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Do not use.\nfunc (x *FieldOptions_OptionRetention) UnmarshalJSON(b []byte) error {\n\tnum, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = FieldOptions_OptionRetention(num)\n\treturn nil\n}\n\n// Deprecated: Use FieldOptions_OptionRetention.Descriptor instead.\nfunc (FieldOptions_OptionRetention) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{12, 2}\n}\n\n// This indicates the types of entities that the field may apply to when used\n// as an option. If it is unset, then the field may be freely used as an\n// option on any kind of entity.\ntype FieldOptions_OptionTargetType int32\n\nconst (\n\tFieldOptions_TARGET_TYPE_UNKNOWN         FieldOptions_OptionTargetType = 0\n\tFieldOptions_TARGET_TYPE_FILE            FieldOptions_OptionTargetType = 1\n\tFieldOptions_TARGET_TYPE_EXTENSION_RANGE FieldOptions_OptionTargetType = 2\n\tFieldOptions_TARGET_TYPE_MESSAGE         FieldOptions_OptionTargetType = 3\n\tFieldOptions_TARGET_TYPE_FIELD           FieldOptions_OptionTargetType = 4\n\tFieldOptions_TARGET_TYPE_ONEOF           FieldOptions_OptionTargetType = 5\n\tFieldOptions_TARGET_TYPE_ENUM            FieldOptions_OptionTargetType = 6\n\tFieldOptions_TARGET_TYPE_ENUM_ENTRY      FieldOptions_OptionTargetType = 7\n\tFieldOptions_TARGET_TYPE_SERVICE         FieldOptions_OptionTargetType = 8\n\tFieldOptions_TARGET_TYPE_METHOD          FieldOptions_OptionTargetType = 9\n)\n\n// Enum value maps for FieldOptions_OptionTargetType.\nvar (\n\tFieldOptions_OptionTargetType_name = map[int32]string{\n\t\t0: \"TARGET_TYPE_UNKNOWN\",\n\t\t1: \"TARGET_TYPE_FILE\",\n\t\t2: \"TARGET_TYPE_EXTENSION_RANGE\",\n\t\t3: \"TARGET_TYPE_MESSAGE\",\n\t\t4: \"TARGET_TYPE_FIELD\",\n\t\t5: \"TARGET_TYPE_ONEOF\",\n\t\t6: \"TARGET_TYPE_ENUM\",\n\t\t7: \"TARGET_TYPE_ENUM_ENTRY\",\n\t\t8: \"TARGET_TYPE_SERVICE\",\n\t\t9: \"TARGET_TYPE_METHOD\",\n\t}\n\tFieldOptions_OptionTargetType_value = map[string]int32{\n\t\t\"TARGET_TYPE_UNKNOWN\":         0,\n\t\t\"TARGET_TYPE_FILE\":            1,\n\t\t\"TARGET_TYPE_EXTENSION_RANGE\": 2,\n\t\t\"TARGET_TYPE_MESSAGE\":         3,\n\t\t\"TARGET_TYPE_FIELD\":           4,\n\t\t\"TARGET_TYPE_ONEOF\":           5,\n\t\t\"TARGET_TYPE_ENUM\":            6,\n\t\t\"TARGET_TYPE_ENUM_ENTRY\":      7,\n\t\t\"TARGET_TYPE_SERVICE\":         8,\n\t\t\"TARGET_TYPE_METHOD\":          9,\n\t}\n)\n\nfunc (x FieldOptions_OptionTargetType) Enum() *FieldOptions_OptionTargetType {\n\tp := new(FieldOptions_OptionTargetType)\n\t*p = x\n\treturn p\n}\n\nfunc (x FieldOptions_OptionTargetType) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (FieldOptions_OptionTargetType) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_protobuf_descriptor_proto_enumTypes[9].Descriptor()\n}\n\nfunc (FieldOptions_OptionTargetType) Type() protoreflect.EnumType {\n\treturn &file_google_protobuf_descriptor_proto_enumTypes[9]\n}\n\nfunc (x FieldOptions_OptionTargetType) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Do not use.\nfunc (x *FieldOptions_OptionTargetType) UnmarshalJSON(b []byte) error {\n\tnum, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = FieldOptions_OptionTargetType(num)\n\treturn nil\n}\n\n// Deprecated: Use FieldOptions_OptionTargetType.Descriptor instead.\nfunc (FieldOptions_OptionTargetType) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{12, 3}\n}\n\n// Is this method side-effect-free (or safe in HTTP parlance), or idempotent,\n// or neither? HTTP based RPC implementation may choose GET verb for safe\n// methods, and PUT verb for idempotent methods instead of the default POST.\ntype MethodOptions_IdempotencyLevel int32\n\nconst (\n\tMethodOptions_IDEMPOTENCY_UNKNOWN MethodOptions_IdempotencyLevel = 0\n\tMethodOptions_NO_SIDE_EFFECTS     MethodOptions_IdempotencyLevel = 1 // implies idempotent\n\tMethodOptions_IDEMPOTENT          MethodOptions_IdempotencyLevel = 2 // idempotent, but may have side effects\n)\n\n// Enum value maps for MethodOptions_IdempotencyLevel.\nvar (\n\tMethodOptions_IdempotencyLevel_name = map[int32]string{\n\t\t0: \"IDEMPOTENCY_UNKNOWN\",\n\t\t1: \"NO_SIDE_EFFECTS\",\n\t\t2: \"IDEMPOTENT\",\n\t}\n\tMethodOptions_IdempotencyLevel_value = map[string]int32{\n\t\t\"IDEMPOTENCY_UNKNOWN\": 0,\n\t\t\"NO_SIDE_EFFECTS\":     1,\n\t\t\"IDEMPOTENT\":          2,\n\t}\n)\n\nfunc (x MethodOptions_IdempotencyLevel) Enum() *MethodOptions_IdempotencyLevel {\n\tp := new(MethodOptions_IdempotencyLevel)\n\t*p = x\n\treturn p\n}\n\nfunc (x MethodOptions_IdempotencyLevel) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (MethodOptions_IdempotencyLevel) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_protobuf_descriptor_proto_enumTypes[10].Descriptor()\n}\n\nfunc (MethodOptions_IdempotencyLevel) Type() protoreflect.EnumType {\n\treturn &file_google_protobuf_descriptor_proto_enumTypes[10]\n}\n\nfunc (x MethodOptions_IdempotencyLevel) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Do not use.\nfunc (x *MethodOptions_IdempotencyLevel) UnmarshalJSON(b []byte) error {\n\tnum, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = MethodOptions_IdempotencyLevel(num)\n\treturn nil\n}\n\n// Deprecated: Use MethodOptions_IdempotencyLevel.Descriptor instead.\nfunc (MethodOptions_IdempotencyLevel) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{17, 0}\n}\n\ntype FeatureSet_FieldPresence int32\n\nconst (\n\tFeatureSet_FIELD_PRESENCE_UNKNOWN FeatureSet_FieldPresence = 0\n\tFeatureSet_EXPLICIT               FeatureSet_FieldPresence = 1\n\tFeatureSet_IMPLICIT               FeatureSet_FieldPresence = 2\n\tFeatureSet_LEGACY_REQUIRED        FeatureSet_FieldPresence = 3\n)\n\n// Enum value maps for FeatureSet_FieldPresence.\nvar (\n\tFeatureSet_FieldPresence_name = map[int32]string{\n\t\t0: \"FIELD_PRESENCE_UNKNOWN\",\n\t\t1: \"EXPLICIT\",\n\t\t2: \"IMPLICIT\",\n\t\t3: \"LEGACY_REQUIRED\",\n\t}\n\tFeatureSet_FieldPresence_value = map[string]int32{\n\t\t\"FIELD_PRESENCE_UNKNOWN\": 0,\n\t\t\"EXPLICIT\":               1,\n\t\t\"IMPLICIT\":               2,\n\t\t\"LEGACY_REQUIRED\":        3,\n\t}\n)\n\nfunc (x FeatureSet_FieldPresence) Enum() *FeatureSet_FieldPresence {\n\tp := new(FeatureSet_FieldPresence)\n\t*p = x\n\treturn p\n}\n\nfunc (x FeatureSet_FieldPresence) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (FeatureSet_FieldPresence) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_protobuf_descriptor_proto_enumTypes[11].Descriptor()\n}\n\nfunc (FeatureSet_FieldPresence) Type() protoreflect.EnumType {\n\treturn &file_google_protobuf_descriptor_proto_enumTypes[11]\n}\n\nfunc (x FeatureSet_FieldPresence) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Do not use.\nfunc (x *FeatureSet_FieldPresence) UnmarshalJSON(b []byte) error {\n\tnum, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = FeatureSet_FieldPresence(num)\n\treturn nil\n}\n\n// Deprecated: Use FeatureSet_FieldPresence.Descriptor instead.\nfunc (FeatureSet_FieldPresence) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{19, 0}\n}\n\ntype FeatureSet_EnumType int32\n\nconst (\n\tFeatureSet_ENUM_TYPE_UNKNOWN FeatureSet_EnumType = 0\n\tFeatureSet_OPEN              FeatureSet_EnumType = 1\n\tFeatureSet_CLOSED            FeatureSet_EnumType = 2\n)\n\n// Enum value maps for FeatureSet_EnumType.\nvar (\n\tFeatureSet_EnumType_name = map[int32]string{\n\t\t0: \"ENUM_TYPE_UNKNOWN\",\n\t\t1: \"OPEN\",\n\t\t2: \"CLOSED\",\n\t}\n\tFeatureSet_EnumType_value = map[string]int32{\n\t\t\"ENUM_TYPE_UNKNOWN\": 0,\n\t\t\"OPEN\":              1,\n\t\t\"CLOSED\":            2,\n\t}\n)\n\nfunc (x FeatureSet_EnumType) Enum() *FeatureSet_EnumType {\n\tp := new(FeatureSet_EnumType)\n\t*p = x\n\treturn p\n}\n\nfunc (x FeatureSet_EnumType) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (FeatureSet_EnumType) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_protobuf_descriptor_proto_enumTypes[12].Descriptor()\n}\n\nfunc (FeatureSet_EnumType) Type() protoreflect.EnumType {\n\treturn &file_google_protobuf_descriptor_proto_enumTypes[12]\n}\n\nfunc (x FeatureSet_EnumType) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Do not use.\nfunc (x *FeatureSet_EnumType) UnmarshalJSON(b []byte) error {\n\tnum, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = FeatureSet_EnumType(num)\n\treturn nil\n}\n\n// Deprecated: Use FeatureSet_EnumType.Descriptor instead.\nfunc (FeatureSet_EnumType) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{19, 1}\n}\n\ntype FeatureSet_RepeatedFieldEncoding int32\n\nconst (\n\tFeatureSet_REPEATED_FIELD_ENCODING_UNKNOWN FeatureSet_RepeatedFieldEncoding = 0\n\tFeatureSet_PACKED                          FeatureSet_RepeatedFieldEncoding = 1\n\tFeatureSet_EXPANDED                        FeatureSet_RepeatedFieldEncoding = 2\n)\n\n// Enum value maps for FeatureSet_RepeatedFieldEncoding.\nvar (\n\tFeatureSet_RepeatedFieldEncoding_name = map[int32]string{\n\t\t0: \"REPEATED_FIELD_ENCODING_UNKNOWN\",\n\t\t1: \"PACKED\",\n\t\t2: \"EXPANDED\",\n\t}\n\tFeatureSet_RepeatedFieldEncoding_value = map[string]int32{\n\t\t\"REPEATED_FIELD_ENCODING_UNKNOWN\": 0,\n\t\t\"PACKED\":                          1,\n\t\t\"EXPANDED\":                        2,\n\t}\n)\n\nfunc (x FeatureSet_RepeatedFieldEncoding) Enum() *FeatureSet_RepeatedFieldEncoding {\n\tp := new(FeatureSet_RepeatedFieldEncoding)\n\t*p = x\n\treturn p\n}\n\nfunc (x FeatureSet_RepeatedFieldEncoding) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (FeatureSet_RepeatedFieldEncoding) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_protobuf_descriptor_proto_enumTypes[13].Descriptor()\n}\n\nfunc (FeatureSet_RepeatedFieldEncoding) Type() protoreflect.EnumType {\n\treturn &file_google_protobuf_descriptor_proto_enumTypes[13]\n}\n\nfunc (x FeatureSet_RepeatedFieldEncoding) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Do not use.\nfunc (x *FeatureSet_RepeatedFieldEncoding) UnmarshalJSON(b []byte) error {\n\tnum, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = FeatureSet_RepeatedFieldEncoding(num)\n\treturn nil\n}\n\n// Deprecated: Use FeatureSet_RepeatedFieldEncoding.Descriptor instead.\nfunc (FeatureSet_RepeatedFieldEncoding) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{19, 2}\n}\n\ntype FeatureSet_Utf8Validation int32\n\nconst (\n\tFeatureSet_UTF8_VALIDATION_UNKNOWN FeatureSet_Utf8Validation = 0\n\tFeatureSet_VERIFY                  FeatureSet_Utf8Validation = 2\n\tFeatureSet_NONE                    FeatureSet_Utf8Validation = 3\n)\n\n// Enum value maps for FeatureSet_Utf8Validation.\nvar (\n\tFeatureSet_Utf8Validation_name = map[int32]string{\n\t\t0: \"UTF8_VALIDATION_UNKNOWN\",\n\t\t2: \"VERIFY\",\n\t\t3: \"NONE\",\n\t}\n\tFeatureSet_Utf8Validation_value = map[string]int32{\n\t\t\"UTF8_VALIDATION_UNKNOWN\": 0,\n\t\t\"VERIFY\":                  2,\n\t\t\"NONE\":                    3,\n\t}\n)\n\nfunc (x FeatureSet_Utf8Validation) Enum() *FeatureSet_Utf8Validation {\n\tp := new(FeatureSet_Utf8Validation)\n\t*p = x\n\treturn p\n}\n\nfunc (x FeatureSet_Utf8Validation) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (FeatureSet_Utf8Validation) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_protobuf_descriptor_proto_enumTypes[14].Descriptor()\n}\n\nfunc (FeatureSet_Utf8Validation) Type() protoreflect.EnumType {\n\treturn &file_google_protobuf_descriptor_proto_enumTypes[14]\n}\n\nfunc (x FeatureSet_Utf8Validation) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Do not use.\nfunc (x *FeatureSet_Utf8Validation) UnmarshalJSON(b []byte) error {\n\tnum, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = FeatureSet_Utf8Validation(num)\n\treturn nil\n}\n\n// Deprecated: Use FeatureSet_Utf8Validation.Descriptor instead.\nfunc (FeatureSet_Utf8Validation) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{19, 3}\n}\n\ntype FeatureSet_MessageEncoding int32\n\nconst (\n\tFeatureSet_MESSAGE_ENCODING_UNKNOWN FeatureSet_MessageEncoding = 0\n\tFeatureSet_LENGTH_PREFIXED          FeatureSet_MessageEncoding = 1\n\tFeatureSet_DELIMITED                FeatureSet_MessageEncoding = 2\n)\n\n// Enum value maps for FeatureSet_MessageEncoding.\nvar (\n\tFeatureSet_MessageEncoding_name = map[int32]string{\n\t\t0: \"MESSAGE_ENCODING_UNKNOWN\",\n\t\t1: \"LENGTH_PREFIXED\",\n\t\t2: \"DELIMITED\",\n\t}\n\tFeatureSet_MessageEncoding_value = map[string]int32{\n\t\t\"MESSAGE_ENCODING_UNKNOWN\": 0,\n\t\t\"LENGTH_PREFIXED\":          1,\n\t\t\"DELIMITED\":                2,\n\t}\n)\n\nfunc (x FeatureSet_MessageEncoding) Enum() *FeatureSet_MessageEncoding {\n\tp := new(FeatureSet_MessageEncoding)\n\t*p = x\n\treturn p\n}\n\nfunc (x FeatureSet_MessageEncoding) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (FeatureSet_MessageEncoding) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_protobuf_descriptor_proto_enumTypes[15].Descriptor()\n}\n\nfunc (FeatureSet_MessageEncoding) Type() protoreflect.EnumType {\n\treturn &file_google_protobuf_descriptor_proto_enumTypes[15]\n}\n\nfunc (x FeatureSet_MessageEncoding) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Do not use.\nfunc (x *FeatureSet_MessageEncoding) UnmarshalJSON(b []byte) error {\n\tnum, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = FeatureSet_MessageEncoding(num)\n\treturn nil\n}\n\n// Deprecated: Use FeatureSet_MessageEncoding.Descriptor instead.\nfunc (FeatureSet_MessageEncoding) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{19, 4}\n}\n\ntype FeatureSet_JsonFormat int32\n\nconst (\n\tFeatureSet_JSON_FORMAT_UNKNOWN FeatureSet_JsonFormat = 0\n\tFeatureSet_ALLOW               FeatureSet_JsonFormat = 1\n\tFeatureSet_LEGACY_BEST_EFFORT  FeatureSet_JsonFormat = 2\n)\n\n// Enum value maps for FeatureSet_JsonFormat.\nvar (\n\tFeatureSet_JsonFormat_name = map[int32]string{\n\t\t0: \"JSON_FORMAT_UNKNOWN\",\n\t\t1: \"ALLOW\",\n\t\t2: \"LEGACY_BEST_EFFORT\",\n\t}\n\tFeatureSet_JsonFormat_value = map[string]int32{\n\t\t\"JSON_FORMAT_UNKNOWN\": 0,\n\t\t\"ALLOW\":               1,\n\t\t\"LEGACY_BEST_EFFORT\":  2,\n\t}\n)\n\nfunc (x FeatureSet_JsonFormat) Enum() *FeatureSet_JsonFormat {\n\tp := new(FeatureSet_JsonFormat)\n\t*p = x\n\treturn p\n}\n\nfunc (x FeatureSet_JsonFormat) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (FeatureSet_JsonFormat) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_protobuf_descriptor_proto_enumTypes[16].Descriptor()\n}\n\nfunc (FeatureSet_JsonFormat) Type() protoreflect.EnumType {\n\treturn &file_google_protobuf_descriptor_proto_enumTypes[16]\n}\n\nfunc (x FeatureSet_JsonFormat) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Do not use.\nfunc (x *FeatureSet_JsonFormat) UnmarshalJSON(b []byte) error {\n\tnum, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = FeatureSet_JsonFormat(num)\n\treturn nil\n}\n\n// Deprecated: Use FeatureSet_JsonFormat.Descriptor instead.\nfunc (FeatureSet_JsonFormat) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{19, 5}\n}\n\ntype FeatureSet_EnforceNamingStyle int32\n\nconst (\n\tFeatureSet_ENFORCE_NAMING_STYLE_UNKNOWN FeatureSet_EnforceNamingStyle = 0\n\tFeatureSet_STYLE2024                    FeatureSet_EnforceNamingStyle = 1\n\tFeatureSet_STYLE_LEGACY                 FeatureSet_EnforceNamingStyle = 2\n)\n\n// Enum value maps for FeatureSet_EnforceNamingStyle.\nvar (\n\tFeatureSet_EnforceNamingStyle_name = map[int32]string{\n\t\t0: \"ENFORCE_NAMING_STYLE_UNKNOWN\",\n\t\t1: \"STYLE2024\",\n\t\t2: \"STYLE_LEGACY\",\n\t}\n\tFeatureSet_EnforceNamingStyle_value = map[string]int32{\n\t\t\"ENFORCE_NAMING_STYLE_UNKNOWN\": 0,\n\t\t\"STYLE2024\":                    1,\n\t\t\"STYLE_LEGACY\":                 2,\n\t}\n)\n\nfunc (x FeatureSet_EnforceNamingStyle) Enum() *FeatureSet_EnforceNamingStyle {\n\tp := new(FeatureSet_EnforceNamingStyle)\n\t*p = x\n\treturn p\n}\n\nfunc (x FeatureSet_EnforceNamingStyle) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (FeatureSet_EnforceNamingStyle) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_protobuf_descriptor_proto_enumTypes[17].Descriptor()\n}\n\nfunc (FeatureSet_EnforceNamingStyle) Type() protoreflect.EnumType {\n\treturn &file_google_protobuf_descriptor_proto_enumTypes[17]\n}\n\nfunc (x FeatureSet_EnforceNamingStyle) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Do not use.\nfunc (x *FeatureSet_EnforceNamingStyle) UnmarshalJSON(b []byte) error {\n\tnum, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = FeatureSet_EnforceNamingStyle(num)\n\treturn nil\n}\n\n// Deprecated: Use FeatureSet_EnforceNamingStyle.Descriptor instead.\nfunc (FeatureSet_EnforceNamingStyle) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{19, 6}\n}\n\ntype FeatureSet_VisibilityFeature_DefaultSymbolVisibility int32\n\nconst (\n\tFeatureSet_VisibilityFeature_DEFAULT_SYMBOL_VISIBILITY_UNKNOWN FeatureSet_VisibilityFeature_DefaultSymbolVisibility = 0\n\t// Default pre-EDITION_2024, all UNSET visibility are export.\n\tFeatureSet_VisibilityFeature_EXPORT_ALL FeatureSet_VisibilityFeature_DefaultSymbolVisibility = 1\n\t// All top-level symbols default to export, nested default to local.\n\tFeatureSet_VisibilityFeature_EXPORT_TOP_LEVEL FeatureSet_VisibilityFeature_DefaultSymbolVisibility = 2\n\t// All symbols default to local.\n\tFeatureSet_VisibilityFeature_LOCAL_ALL FeatureSet_VisibilityFeature_DefaultSymbolVisibility = 3\n\t// All symbols local by default. Nested types cannot be exported.\n\t// With special case caveat for message { enum {} reserved 1 to max; }\n\t// This is the recommended setting for new protos.\n\tFeatureSet_VisibilityFeature_STRICT FeatureSet_VisibilityFeature_DefaultSymbolVisibility = 4\n)\n\n// Enum value maps for FeatureSet_VisibilityFeature_DefaultSymbolVisibility.\nvar (\n\tFeatureSet_VisibilityFeature_DefaultSymbolVisibility_name = map[int32]string{\n\t\t0: \"DEFAULT_SYMBOL_VISIBILITY_UNKNOWN\",\n\t\t1: \"EXPORT_ALL\",\n\t\t2: \"EXPORT_TOP_LEVEL\",\n\t\t3: \"LOCAL_ALL\",\n\t\t4: \"STRICT\",\n\t}\n\tFeatureSet_VisibilityFeature_DefaultSymbolVisibility_value = map[string]int32{\n\t\t\"DEFAULT_SYMBOL_VISIBILITY_UNKNOWN\": 0,\n\t\t\"EXPORT_ALL\":                        1,\n\t\t\"EXPORT_TOP_LEVEL\":                  2,\n\t\t\"LOCAL_ALL\":                         3,\n\t\t\"STRICT\":                            4,\n\t}\n)\n\nfunc (x FeatureSet_VisibilityFeature_DefaultSymbolVisibility) Enum() *FeatureSet_VisibilityFeature_DefaultSymbolVisibility {\n\tp := new(FeatureSet_VisibilityFeature_DefaultSymbolVisibility)\n\t*p = x\n\treturn p\n}\n\nfunc (x FeatureSet_VisibilityFeature_DefaultSymbolVisibility) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (FeatureSet_VisibilityFeature_DefaultSymbolVisibility) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_protobuf_descriptor_proto_enumTypes[18].Descriptor()\n}\n\nfunc (FeatureSet_VisibilityFeature_DefaultSymbolVisibility) Type() protoreflect.EnumType {\n\treturn &file_google_protobuf_descriptor_proto_enumTypes[18]\n}\n\nfunc (x FeatureSet_VisibilityFeature_DefaultSymbolVisibility) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Do not use.\nfunc (x *FeatureSet_VisibilityFeature_DefaultSymbolVisibility) UnmarshalJSON(b []byte) error {\n\tnum, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = FeatureSet_VisibilityFeature_DefaultSymbolVisibility(num)\n\treturn nil\n}\n\n// Deprecated: Use FeatureSet_VisibilityFeature_DefaultSymbolVisibility.Descriptor instead.\nfunc (FeatureSet_VisibilityFeature_DefaultSymbolVisibility) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{19, 0, 0}\n}\n\n// Represents the identified object's effect on the element in the original\n// .proto file.\ntype GeneratedCodeInfo_Annotation_Semantic int32\n\nconst (\n\t// There is no effect or the effect is indescribable.\n\tGeneratedCodeInfo_Annotation_NONE GeneratedCodeInfo_Annotation_Semantic = 0\n\t// The element is set or otherwise mutated.\n\tGeneratedCodeInfo_Annotation_SET GeneratedCodeInfo_Annotation_Semantic = 1\n\t// An alias to the element is returned.\n\tGeneratedCodeInfo_Annotation_ALIAS GeneratedCodeInfo_Annotation_Semantic = 2\n)\n\n// Enum value maps for GeneratedCodeInfo_Annotation_Semantic.\nvar (\n\tGeneratedCodeInfo_Annotation_Semantic_name = map[int32]string{\n\t\t0: \"NONE\",\n\t\t1: \"SET\",\n\t\t2: \"ALIAS\",\n\t}\n\tGeneratedCodeInfo_Annotation_Semantic_value = map[string]int32{\n\t\t\"NONE\":  0,\n\t\t\"SET\":   1,\n\t\t\"ALIAS\": 2,\n\t}\n)\n\nfunc (x GeneratedCodeInfo_Annotation_Semantic) Enum() *GeneratedCodeInfo_Annotation_Semantic {\n\tp := new(GeneratedCodeInfo_Annotation_Semantic)\n\t*p = x\n\treturn p\n}\n\nfunc (x GeneratedCodeInfo_Annotation_Semantic) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (GeneratedCodeInfo_Annotation_Semantic) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_protobuf_descriptor_proto_enumTypes[19].Descriptor()\n}\n\nfunc (GeneratedCodeInfo_Annotation_Semantic) Type() protoreflect.EnumType {\n\treturn &file_google_protobuf_descriptor_proto_enumTypes[19]\n}\n\nfunc (x GeneratedCodeInfo_Annotation_Semantic) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Do not use.\nfunc (x *GeneratedCodeInfo_Annotation_Semantic) UnmarshalJSON(b []byte) error {\n\tnum, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = GeneratedCodeInfo_Annotation_Semantic(num)\n\treturn nil\n}\n\n// Deprecated: Use GeneratedCodeInfo_Annotation_Semantic.Descriptor instead.\nfunc (GeneratedCodeInfo_Annotation_Semantic) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{22, 0, 0}\n}\n\n// The protocol compiler can output a FileDescriptorSet containing the .proto\n// files it parses.\ntype FileDescriptorSet struct {\n\tstate           protoimpl.MessageState `protogen:\"open.v1\"`\n\tFile            []*FileDescriptorProto `protobuf:\"bytes,1,rep,name=file\" json:\"file,omitempty\"`\n\textensionFields protoimpl.ExtensionFields\n\tunknownFields   protoimpl.UnknownFields\n\tsizeCache       protoimpl.SizeCache\n}\n\nfunc (x *FileDescriptorSet) Reset() {\n\t*x = FileDescriptorSet{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *FileDescriptorSet) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*FileDescriptorSet) ProtoMessage() {}\n\nfunc (x *FileDescriptorSet) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use FileDescriptorSet.ProtoReflect.Descriptor instead.\nfunc (*FileDescriptorSet) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *FileDescriptorSet) GetFile() []*FileDescriptorProto {\n\tif x != nil {\n\t\treturn x.File\n\t}\n\treturn nil\n}\n\n// Describes a complete .proto file.\ntype FileDescriptorProto struct {\n\tstate   protoimpl.MessageState `protogen:\"open.v1\"`\n\tName    *string                `protobuf:\"bytes,1,opt,name=name\" json:\"name,omitempty\"`       // file name, relative to root of source tree\n\tPackage *string                `protobuf:\"bytes,2,opt,name=package\" json:\"package,omitempty\"` // e.g. \"foo\", \"foo.bar\", etc.\n\t// Names of files imported by this file.\n\tDependency []string `protobuf:\"bytes,3,rep,name=dependency\" json:\"dependency,omitempty\"`\n\t// Indexes of the public imported files in the dependency list above.\n\tPublicDependency []int32 `protobuf:\"varint,10,rep,name=public_dependency,json=publicDependency\" json:\"public_dependency,omitempty\"`\n\t// Indexes of the weak imported files in the dependency list.\n\t// For Google-internal migration only. Do not use.\n\tWeakDependency []int32 `protobuf:\"varint,11,rep,name=weak_dependency,json=weakDependency\" json:\"weak_dependency,omitempty\"`\n\t// Names of files imported by this file purely for the purpose of providing\n\t// option extensions. These are excluded from the dependency list above.\n\tOptionDependency []string `protobuf:\"bytes,15,rep,name=option_dependency,json=optionDependency\" json:\"option_dependency,omitempty\"`\n\t// All top-level definitions in this file.\n\tMessageType []*DescriptorProto        `protobuf:\"bytes,4,rep,name=message_type,json=messageType\" json:\"message_type,omitempty\"`\n\tEnumType    []*EnumDescriptorProto    `protobuf:\"bytes,5,rep,name=enum_type,json=enumType\" json:\"enum_type,omitempty\"`\n\tService     []*ServiceDescriptorProto `protobuf:\"bytes,6,rep,name=service\" json:\"service,omitempty\"`\n\tExtension   []*FieldDescriptorProto   `protobuf:\"bytes,7,rep,name=extension\" json:\"extension,omitempty\"`\n\tOptions     *FileOptions              `protobuf:\"bytes,8,opt,name=options\" json:\"options,omitempty\"`\n\t// This field contains optional information about the original source code.\n\t// You may safely remove this entire field without harming runtime\n\t// functionality of the descriptors -- the information is needed only by\n\t// development tools.\n\tSourceCodeInfo *SourceCodeInfo `protobuf:\"bytes,9,opt,name=source_code_info,json=sourceCodeInfo\" json:\"source_code_info,omitempty\"`\n\t// The syntax of the proto file.\n\t// The supported values are \"proto2\", \"proto3\", and \"editions\".\n\t//\n\t// If `edition` is present, this value must be \"editions\".\n\t// WARNING: This field should only be used by protobuf plugins or special\n\t// cases like the proto compiler. Other uses are discouraged and\n\t// developers should rely on the protoreflect APIs for their client language.\n\tSyntax *string `protobuf:\"bytes,12,opt,name=syntax\" json:\"syntax,omitempty\"`\n\t// The edition of the proto file.\n\t// WARNING: This field should only be used by protobuf plugins or special\n\t// cases like the proto compiler. Other uses are discouraged and\n\t// developers should rely on the protoreflect APIs for their client language.\n\tEdition       *Edition `protobuf:\"varint,14,opt,name=edition,enum=google.protobuf.Edition\" json:\"edition,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *FileDescriptorProto) Reset() {\n\t*x = FileDescriptorProto{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[1]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *FileDescriptorProto) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*FileDescriptorProto) ProtoMessage() {}\n\nfunc (x *FileDescriptorProto) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[1]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use FileDescriptorProto.ProtoReflect.Descriptor instead.\nfunc (*FileDescriptorProto) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *FileDescriptorProto) GetName() string {\n\tif x != nil && x.Name != nil {\n\t\treturn *x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *FileDescriptorProto) GetPackage() string {\n\tif x != nil && x.Package != nil {\n\t\treturn *x.Package\n\t}\n\treturn \"\"\n}\n\nfunc (x *FileDescriptorProto) GetDependency() []string {\n\tif x != nil {\n\t\treturn x.Dependency\n\t}\n\treturn nil\n}\n\nfunc (x *FileDescriptorProto) GetPublicDependency() []int32 {\n\tif x != nil {\n\t\treturn x.PublicDependency\n\t}\n\treturn nil\n}\n\nfunc (x *FileDescriptorProto) GetWeakDependency() []int32 {\n\tif x != nil {\n\t\treturn x.WeakDependency\n\t}\n\treturn nil\n}\n\nfunc (x *FileDescriptorProto) GetOptionDependency() []string {\n\tif x != nil {\n\t\treturn x.OptionDependency\n\t}\n\treturn nil\n}\n\nfunc (x *FileDescriptorProto) GetMessageType() []*DescriptorProto {\n\tif x != nil {\n\t\treturn x.MessageType\n\t}\n\treturn nil\n}\n\nfunc (x *FileDescriptorProto) GetEnumType() []*EnumDescriptorProto {\n\tif x != nil {\n\t\treturn x.EnumType\n\t}\n\treturn nil\n}\n\nfunc (x *FileDescriptorProto) GetService() []*ServiceDescriptorProto {\n\tif x != nil {\n\t\treturn x.Service\n\t}\n\treturn nil\n}\n\nfunc (x *FileDescriptorProto) GetExtension() []*FieldDescriptorProto {\n\tif x != nil {\n\t\treturn x.Extension\n\t}\n\treturn nil\n}\n\nfunc (x *FileDescriptorProto) GetOptions() *FileOptions {\n\tif x != nil {\n\t\treturn x.Options\n\t}\n\treturn nil\n}\n\nfunc (x *FileDescriptorProto) GetSourceCodeInfo() *SourceCodeInfo {\n\tif x != nil {\n\t\treturn x.SourceCodeInfo\n\t}\n\treturn nil\n}\n\nfunc (x *FileDescriptorProto) GetSyntax() string {\n\tif x != nil && x.Syntax != nil {\n\t\treturn *x.Syntax\n\t}\n\treturn \"\"\n}\n\nfunc (x *FileDescriptorProto) GetEdition() Edition {\n\tif x != nil && x.Edition != nil {\n\t\treturn *x.Edition\n\t}\n\treturn Edition_EDITION_UNKNOWN\n}\n\n// Describes a message type.\ntype DescriptorProto struct {\n\tstate          protoimpl.MessageState            `protogen:\"open.v1\"`\n\tName           *string                           `protobuf:\"bytes,1,opt,name=name\" json:\"name,omitempty\"`\n\tField          []*FieldDescriptorProto           `protobuf:\"bytes,2,rep,name=field\" json:\"field,omitempty\"`\n\tExtension      []*FieldDescriptorProto           `protobuf:\"bytes,6,rep,name=extension\" json:\"extension,omitempty\"`\n\tNestedType     []*DescriptorProto                `protobuf:\"bytes,3,rep,name=nested_type,json=nestedType\" json:\"nested_type,omitempty\"`\n\tEnumType       []*EnumDescriptorProto            `protobuf:\"bytes,4,rep,name=enum_type,json=enumType\" json:\"enum_type,omitempty\"`\n\tExtensionRange []*DescriptorProto_ExtensionRange `protobuf:\"bytes,5,rep,name=extension_range,json=extensionRange\" json:\"extension_range,omitempty\"`\n\tOneofDecl      []*OneofDescriptorProto           `protobuf:\"bytes,8,rep,name=oneof_decl,json=oneofDecl\" json:\"oneof_decl,omitempty\"`\n\tOptions        *MessageOptions                   `protobuf:\"bytes,7,opt,name=options\" json:\"options,omitempty\"`\n\tReservedRange  []*DescriptorProto_ReservedRange  `protobuf:\"bytes,9,rep,name=reserved_range,json=reservedRange\" json:\"reserved_range,omitempty\"`\n\t// Reserved field names, which may not be used by fields in the same message.\n\t// A given name may only be reserved once.\n\tReservedName []string `protobuf:\"bytes,10,rep,name=reserved_name,json=reservedName\" json:\"reserved_name,omitempty\"`\n\t// Support for `export` and `local` keywords on enums.\n\tVisibility    *SymbolVisibility `protobuf:\"varint,11,opt,name=visibility,enum=google.protobuf.SymbolVisibility\" json:\"visibility,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *DescriptorProto) Reset() {\n\t*x = DescriptorProto{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[2]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *DescriptorProto) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*DescriptorProto) ProtoMessage() {}\n\nfunc (x *DescriptorProto) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[2]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use DescriptorProto.ProtoReflect.Descriptor instead.\nfunc (*DescriptorProto) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *DescriptorProto) GetName() string {\n\tif x != nil && x.Name != nil {\n\t\treturn *x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *DescriptorProto) GetField() []*FieldDescriptorProto {\n\tif x != nil {\n\t\treturn x.Field\n\t}\n\treturn nil\n}\n\nfunc (x *DescriptorProto) GetExtension() []*FieldDescriptorProto {\n\tif x != nil {\n\t\treturn x.Extension\n\t}\n\treturn nil\n}\n\nfunc (x *DescriptorProto) GetNestedType() []*DescriptorProto {\n\tif x != nil {\n\t\treturn x.NestedType\n\t}\n\treturn nil\n}\n\nfunc (x *DescriptorProto) GetEnumType() []*EnumDescriptorProto {\n\tif x != nil {\n\t\treturn x.EnumType\n\t}\n\treturn nil\n}\n\nfunc (x *DescriptorProto) GetExtensionRange() []*DescriptorProto_ExtensionRange {\n\tif x != nil {\n\t\treturn x.ExtensionRange\n\t}\n\treturn nil\n}\n\nfunc (x *DescriptorProto) GetOneofDecl() []*OneofDescriptorProto {\n\tif x != nil {\n\t\treturn x.OneofDecl\n\t}\n\treturn nil\n}\n\nfunc (x *DescriptorProto) GetOptions() *MessageOptions {\n\tif x != nil {\n\t\treturn x.Options\n\t}\n\treturn nil\n}\n\nfunc (x *DescriptorProto) GetReservedRange() []*DescriptorProto_ReservedRange {\n\tif x != nil {\n\t\treturn x.ReservedRange\n\t}\n\treturn nil\n}\n\nfunc (x *DescriptorProto) GetReservedName() []string {\n\tif x != nil {\n\t\treturn x.ReservedName\n\t}\n\treturn nil\n}\n\nfunc (x *DescriptorProto) GetVisibility() SymbolVisibility {\n\tif x != nil && x.Visibility != nil {\n\t\treturn *x.Visibility\n\t}\n\treturn SymbolVisibility_VISIBILITY_UNSET\n}\n\ntype ExtensionRangeOptions struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The parser stores options it doesn't recognize here. See above.\n\tUninterpretedOption []*UninterpretedOption `protobuf:\"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption\" json:\"uninterpreted_option,omitempty\"`\n\t// For external users: DO NOT USE. We are in the process of open sourcing\n\t// extension declaration and executing internal cleanups before it can be\n\t// used externally.\n\tDeclaration []*ExtensionRangeOptions_Declaration `protobuf:\"bytes,2,rep,name=declaration\" json:\"declaration,omitempty\"`\n\t// Any features defined in the specific edition.\n\tFeatures *FeatureSet `protobuf:\"bytes,50,opt,name=features\" json:\"features,omitempty\"`\n\t// The verification state of the range.\n\t// TODO: flip the default to DECLARATION once all empty ranges\n\t// are marked as UNVERIFIED.\n\tVerification    *ExtensionRangeOptions_VerificationState `protobuf:\"varint,3,opt,name=verification,enum=google.protobuf.ExtensionRangeOptions_VerificationState,def=1\" json:\"verification,omitempty\"`\n\textensionFields protoimpl.ExtensionFields\n\tunknownFields   protoimpl.UnknownFields\n\tsizeCache       protoimpl.SizeCache\n}\n\n// Default values for ExtensionRangeOptions fields.\nconst (\n\tDefault_ExtensionRangeOptions_Verification = ExtensionRangeOptions_UNVERIFIED\n)\n\nfunc (x *ExtensionRangeOptions) Reset() {\n\t*x = ExtensionRangeOptions{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[3]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *ExtensionRangeOptions) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ExtensionRangeOptions) ProtoMessage() {}\n\nfunc (x *ExtensionRangeOptions) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[3]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ExtensionRangeOptions.ProtoReflect.Descriptor instead.\nfunc (*ExtensionRangeOptions) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{3}\n}\n\nfunc (x *ExtensionRangeOptions) GetUninterpretedOption() []*UninterpretedOption {\n\tif x != nil {\n\t\treturn x.UninterpretedOption\n\t}\n\treturn nil\n}\n\nfunc (x *ExtensionRangeOptions) GetDeclaration() []*ExtensionRangeOptions_Declaration {\n\tif x != nil {\n\t\treturn x.Declaration\n\t}\n\treturn nil\n}\n\nfunc (x *ExtensionRangeOptions) GetFeatures() *FeatureSet {\n\tif x != nil {\n\t\treturn x.Features\n\t}\n\treturn nil\n}\n\nfunc (x *ExtensionRangeOptions) GetVerification() ExtensionRangeOptions_VerificationState {\n\tif x != nil && x.Verification != nil {\n\t\treturn *x.Verification\n\t}\n\treturn Default_ExtensionRangeOptions_Verification\n}\n\n// Describes a field within a message.\ntype FieldDescriptorProto struct {\n\tstate  protoimpl.MessageState      `protogen:\"open.v1\"`\n\tName   *string                     `protobuf:\"bytes,1,opt,name=name\" json:\"name,omitempty\"`\n\tNumber *int32                      `protobuf:\"varint,3,opt,name=number\" json:\"number,omitempty\"`\n\tLabel  *FieldDescriptorProto_Label `protobuf:\"varint,4,opt,name=label,enum=google.protobuf.FieldDescriptorProto_Label\" json:\"label,omitempty\"`\n\t// If type_name is set, this need not be set.  If both this and type_name\n\t// are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.\n\tType *FieldDescriptorProto_Type `protobuf:\"varint,5,opt,name=type,enum=google.protobuf.FieldDescriptorProto_Type\" json:\"type,omitempty\"`\n\t// For message and enum types, this is the name of the type.  If the name\n\t// starts with a '.', it is fully-qualified.  Otherwise, C++-like scoping\n\t// rules are used to find the type (i.e. first the nested types within this\n\t// message are searched, then within the parent, on up to the root\n\t// namespace).\n\tTypeName *string `protobuf:\"bytes,6,opt,name=type_name,json=typeName\" json:\"type_name,omitempty\"`\n\t// For extensions, this is the name of the type being extended.  It is\n\t// resolved in the same manner as type_name.\n\tExtendee *string `protobuf:\"bytes,2,opt,name=extendee\" json:\"extendee,omitempty\"`\n\t// For numeric types, contains the original text representation of the value.\n\t// For booleans, \"true\" or \"false\".\n\t// For strings, contains the default text contents (not escaped in any way).\n\t// For bytes, contains the C escaped value.  All bytes >= 128 are escaped.\n\tDefaultValue *string `protobuf:\"bytes,7,opt,name=default_value,json=defaultValue\" json:\"default_value,omitempty\"`\n\t// If set, gives the index of a oneof in the containing type's oneof_decl\n\t// list.  This field is a member of that oneof.\n\tOneofIndex *int32 `protobuf:\"varint,9,opt,name=oneof_index,json=oneofIndex\" json:\"oneof_index,omitempty\"`\n\t// JSON name of this field. The value is set by protocol compiler. If the\n\t// user has set a \"json_name\" option on this field, that option's value\n\t// will be used. Otherwise, it's deduced from the field's name by converting\n\t// it to camelCase.\n\tJsonName *string       `protobuf:\"bytes,10,opt,name=json_name,json=jsonName\" json:\"json_name,omitempty\"`\n\tOptions  *FieldOptions `protobuf:\"bytes,8,opt,name=options\" json:\"options,omitempty\"`\n\t// If true, this is a proto3 \"optional\". When a proto3 field is optional, it\n\t// tracks presence regardless of field type.\n\t//\n\t// When proto3_optional is true, this field must belong to a oneof to signal\n\t// to old proto3 clients that presence is tracked for this field. This oneof\n\t// is known as a \"synthetic\" oneof, and this field must be its sole member\n\t// (each proto3 optional field gets its own synthetic oneof). Synthetic oneofs\n\t// exist in the descriptor only, and do not generate any API. Synthetic oneofs\n\t// must be ordered after all \"real\" oneofs.\n\t//\n\t// For message fields, proto3_optional doesn't create any semantic change,\n\t// since non-repeated message fields always track presence. However it still\n\t// indicates the semantic detail of whether the user wrote \"optional\" or not.\n\t// This can be useful for round-tripping the .proto file. For consistency we\n\t// give message fields a synthetic oneof also, even though it is not required\n\t// to track presence. This is especially important because the parser can't\n\t// tell if a field is a message or an enum, so it must always create a\n\t// synthetic oneof.\n\t//\n\t// Proto2 optional fields do not set this flag, because they already indicate\n\t// optional with `LABEL_OPTIONAL`.\n\tProto3Optional *bool `protobuf:\"varint,17,opt,name=proto3_optional,json=proto3Optional\" json:\"proto3_optional,omitempty\"`\n\tunknownFields  protoimpl.UnknownFields\n\tsizeCache      protoimpl.SizeCache\n}\n\nfunc (x *FieldDescriptorProto) Reset() {\n\t*x = FieldDescriptorProto{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[4]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *FieldDescriptorProto) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*FieldDescriptorProto) ProtoMessage() {}\n\nfunc (x *FieldDescriptorProto) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[4]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use FieldDescriptorProto.ProtoReflect.Descriptor instead.\nfunc (*FieldDescriptorProto) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{4}\n}\n\nfunc (x *FieldDescriptorProto) GetName() string {\n\tif x != nil && x.Name != nil {\n\t\treturn *x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *FieldDescriptorProto) GetNumber() int32 {\n\tif x != nil && x.Number != nil {\n\t\treturn *x.Number\n\t}\n\treturn 0\n}\n\nfunc (x *FieldDescriptorProto) GetLabel() FieldDescriptorProto_Label {\n\tif x != nil && x.Label != nil {\n\t\treturn *x.Label\n\t}\n\treturn FieldDescriptorProto_LABEL_OPTIONAL\n}\n\nfunc (x *FieldDescriptorProto) GetType() FieldDescriptorProto_Type {\n\tif x != nil && x.Type != nil {\n\t\treturn *x.Type\n\t}\n\treturn FieldDescriptorProto_TYPE_DOUBLE\n}\n\nfunc (x *FieldDescriptorProto) GetTypeName() string {\n\tif x != nil && x.TypeName != nil {\n\t\treturn *x.TypeName\n\t}\n\treturn \"\"\n}\n\nfunc (x *FieldDescriptorProto) GetExtendee() string {\n\tif x != nil && x.Extendee != nil {\n\t\treturn *x.Extendee\n\t}\n\treturn \"\"\n}\n\nfunc (x *FieldDescriptorProto) GetDefaultValue() string {\n\tif x != nil && x.DefaultValue != nil {\n\t\treturn *x.DefaultValue\n\t}\n\treturn \"\"\n}\n\nfunc (x *FieldDescriptorProto) GetOneofIndex() int32 {\n\tif x != nil && x.OneofIndex != nil {\n\t\treturn *x.OneofIndex\n\t}\n\treturn 0\n}\n\nfunc (x *FieldDescriptorProto) GetJsonName() string {\n\tif x != nil && x.JsonName != nil {\n\t\treturn *x.JsonName\n\t}\n\treturn \"\"\n}\n\nfunc (x *FieldDescriptorProto) GetOptions() *FieldOptions {\n\tif x != nil {\n\t\treturn x.Options\n\t}\n\treturn nil\n}\n\nfunc (x *FieldDescriptorProto) GetProto3Optional() bool {\n\tif x != nil && x.Proto3Optional != nil {\n\t\treturn *x.Proto3Optional\n\t}\n\treturn false\n}\n\n// Describes a oneof.\ntype OneofDescriptorProto struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tName          *string                `protobuf:\"bytes,1,opt,name=name\" json:\"name,omitempty\"`\n\tOptions       *OneofOptions          `protobuf:\"bytes,2,opt,name=options\" json:\"options,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *OneofDescriptorProto) Reset() {\n\t*x = OneofDescriptorProto{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[5]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *OneofDescriptorProto) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*OneofDescriptorProto) ProtoMessage() {}\n\nfunc (x *OneofDescriptorProto) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[5]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use OneofDescriptorProto.ProtoReflect.Descriptor instead.\nfunc (*OneofDescriptorProto) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{5}\n}\n\nfunc (x *OneofDescriptorProto) GetName() string {\n\tif x != nil && x.Name != nil {\n\t\treturn *x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *OneofDescriptorProto) GetOptions() *OneofOptions {\n\tif x != nil {\n\t\treturn x.Options\n\t}\n\treturn nil\n}\n\n// Describes an enum type.\ntype EnumDescriptorProto struct {\n\tstate   protoimpl.MessageState      `protogen:\"open.v1\"`\n\tName    *string                     `protobuf:\"bytes,1,opt,name=name\" json:\"name,omitempty\"`\n\tValue   []*EnumValueDescriptorProto `protobuf:\"bytes,2,rep,name=value\" json:\"value,omitempty\"`\n\tOptions *EnumOptions                `protobuf:\"bytes,3,opt,name=options\" json:\"options,omitempty\"`\n\t// Range of reserved numeric values. Reserved numeric values may not be used\n\t// by enum values in the same enum declaration. Reserved ranges may not\n\t// overlap.\n\tReservedRange []*EnumDescriptorProto_EnumReservedRange `protobuf:\"bytes,4,rep,name=reserved_range,json=reservedRange\" json:\"reserved_range,omitempty\"`\n\t// Reserved enum value names, which may not be reused. A given name may only\n\t// be reserved once.\n\tReservedName []string `protobuf:\"bytes,5,rep,name=reserved_name,json=reservedName\" json:\"reserved_name,omitempty\"`\n\t// Support for `export` and `local` keywords on enums.\n\tVisibility    *SymbolVisibility `protobuf:\"varint,6,opt,name=visibility,enum=google.protobuf.SymbolVisibility\" json:\"visibility,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *EnumDescriptorProto) Reset() {\n\t*x = EnumDescriptorProto{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[6]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *EnumDescriptorProto) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*EnumDescriptorProto) ProtoMessage() {}\n\nfunc (x *EnumDescriptorProto) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[6]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use EnumDescriptorProto.ProtoReflect.Descriptor instead.\nfunc (*EnumDescriptorProto) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{6}\n}\n\nfunc (x *EnumDescriptorProto) GetName() string {\n\tif x != nil && x.Name != nil {\n\t\treturn *x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *EnumDescriptorProto) GetValue() []*EnumValueDescriptorProto {\n\tif x != nil {\n\t\treturn x.Value\n\t}\n\treturn nil\n}\n\nfunc (x *EnumDescriptorProto) GetOptions() *EnumOptions {\n\tif x != nil {\n\t\treturn x.Options\n\t}\n\treturn nil\n}\n\nfunc (x *EnumDescriptorProto) GetReservedRange() []*EnumDescriptorProto_EnumReservedRange {\n\tif x != nil {\n\t\treturn x.ReservedRange\n\t}\n\treturn nil\n}\n\nfunc (x *EnumDescriptorProto) GetReservedName() []string {\n\tif x != nil {\n\t\treturn x.ReservedName\n\t}\n\treturn nil\n}\n\nfunc (x *EnumDescriptorProto) GetVisibility() SymbolVisibility {\n\tif x != nil && x.Visibility != nil {\n\t\treturn *x.Visibility\n\t}\n\treturn SymbolVisibility_VISIBILITY_UNSET\n}\n\n// Describes a value within an enum.\ntype EnumValueDescriptorProto struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tName          *string                `protobuf:\"bytes,1,opt,name=name\" json:\"name,omitempty\"`\n\tNumber        *int32                 `protobuf:\"varint,2,opt,name=number\" json:\"number,omitempty\"`\n\tOptions       *EnumValueOptions      `protobuf:\"bytes,3,opt,name=options\" json:\"options,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *EnumValueDescriptorProto) Reset() {\n\t*x = EnumValueDescriptorProto{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[7]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *EnumValueDescriptorProto) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*EnumValueDescriptorProto) ProtoMessage() {}\n\nfunc (x *EnumValueDescriptorProto) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[7]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use EnumValueDescriptorProto.ProtoReflect.Descriptor instead.\nfunc (*EnumValueDescriptorProto) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{7}\n}\n\nfunc (x *EnumValueDescriptorProto) GetName() string {\n\tif x != nil && x.Name != nil {\n\t\treturn *x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *EnumValueDescriptorProto) GetNumber() int32 {\n\tif x != nil && x.Number != nil {\n\t\treturn *x.Number\n\t}\n\treturn 0\n}\n\nfunc (x *EnumValueDescriptorProto) GetOptions() *EnumValueOptions {\n\tif x != nil {\n\t\treturn x.Options\n\t}\n\treturn nil\n}\n\n// Describes a service.\ntype ServiceDescriptorProto struct {\n\tstate         protoimpl.MessageState   `protogen:\"open.v1\"`\n\tName          *string                  `protobuf:\"bytes,1,opt,name=name\" json:\"name,omitempty\"`\n\tMethod        []*MethodDescriptorProto `protobuf:\"bytes,2,rep,name=method\" json:\"method,omitempty\"`\n\tOptions       *ServiceOptions          `protobuf:\"bytes,3,opt,name=options\" json:\"options,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *ServiceDescriptorProto) Reset() {\n\t*x = ServiceDescriptorProto{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[8]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *ServiceDescriptorProto) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ServiceDescriptorProto) ProtoMessage() {}\n\nfunc (x *ServiceDescriptorProto) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[8]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ServiceDescriptorProto.ProtoReflect.Descriptor instead.\nfunc (*ServiceDescriptorProto) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{8}\n}\n\nfunc (x *ServiceDescriptorProto) GetName() string {\n\tif x != nil && x.Name != nil {\n\t\treturn *x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *ServiceDescriptorProto) GetMethod() []*MethodDescriptorProto {\n\tif x != nil {\n\t\treturn x.Method\n\t}\n\treturn nil\n}\n\nfunc (x *ServiceDescriptorProto) GetOptions() *ServiceOptions {\n\tif x != nil {\n\t\treturn x.Options\n\t}\n\treturn nil\n}\n\n// Describes a method of a service.\ntype MethodDescriptorProto struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\tName  *string                `protobuf:\"bytes,1,opt,name=name\" json:\"name,omitempty\"`\n\t// Input and output type names.  These are resolved in the same way as\n\t// FieldDescriptorProto.type_name, but must refer to a message type.\n\tInputType  *string        `protobuf:\"bytes,2,opt,name=input_type,json=inputType\" json:\"input_type,omitempty\"`\n\tOutputType *string        `protobuf:\"bytes,3,opt,name=output_type,json=outputType\" json:\"output_type,omitempty\"`\n\tOptions    *MethodOptions `protobuf:\"bytes,4,opt,name=options\" json:\"options,omitempty\"`\n\t// Identifies if client streams multiple client messages\n\tClientStreaming *bool `protobuf:\"varint,5,opt,name=client_streaming,json=clientStreaming,def=0\" json:\"client_streaming,omitempty\"`\n\t// Identifies if server streams multiple server messages\n\tServerStreaming *bool `protobuf:\"varint,6,opt,name=server_streaming,json=serverStreaming,def=0\" json:\"server_streaming,omitempty\"`\n\tunknownFields   protoimpl.UnknownFields\n\tsizeCache       protoimpl.SizeCache\n}\n\n// Default values for MethodDescriptorProto fields.\nconst (\n\tDefault_MethodDescriptorProto_ClientStreaming = bool(false)\n\tDefault_MethodDescriptorProto_ServerStreaming = bool(false)\n)\n\nfunc (x *MethodDescriptorProto) Reset() {\n\t*x = MethodDescriptorProto{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[9]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *MethodDescriptorProto) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MethodDescriptorProto) ProtoMessage() {}\n\nfunc (x *MethodDescriptorProto) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[9]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use MethodDescriptorProto.ProtoReflect.Descriptor instead.\nfunc (*MethodDescriptorProto) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{9}\n}\n\nfunc (x *MethodDescriptorProto) GetName() string {\n\tif x != nil && x.Name != nil {\n\t\treturn *x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *MethodDescriptorProto) GetInputType() string {\n\tif x != nil && x.InputType != nil {\n\t\treturn *x.InputType\n\t}\n\treturn \"\"\n}\n\nfunc (x *MethodDescriptorProto) GetOutputType() string {\n\tif x != nil && x.OutputType != nil {\n\t\treturn *x.OutputType\n\t}\n\treturn \"\"\n}\n\nfunc (x *MethodDescriptorProto) GetOptions() *MethodOptions {\n\tif x != nil {\n\t\treturn x.Options\n\t}\n\treturn nil\n}\n\nfunc (x *MethodDescriptorProto) GetClientStreaming() bool {\n\tif x != nil && x.ClientStreaming != nil {\n\t\treturn *x.ClientStreaming\n\t}\n\treturn Default_MethodDescriptorProto_ClientStreaming\n}\n\nfunc (x *MethodDescriptorProto) GetServerStreaming() bool {\n\tif x != nil && x.ServerStreaming != nil {\n\t\treturn *x.ServerStreaming\n\t}\n\treturn Default_MethodDescriptorProto_ServerStreaming\n}\n\ntype FileOptions struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Sets the Java package where classes generated from this .proto will be\n\t// placed.  By default, the proto package is used, but this is often\n\t// inappropriate because proto packages do not normally start with backwards\n\t// domain names.\n\tJavaPackage *string `protobuf:\"bytes,1,opt,name=java_package,json=javaPackage\" json:\"java_package,omitempty\"`\n\t// Controls the name of the wrapper Java class generated for the .proto file.\n\t// That class will always contain the .proto file's getDescriptor() method as\n\t// well as any top-level extensions defined in the .proto file.\n\t// If java_multiple_files is disabled, then all the other classes from the\n\t// .proto file will be nested inside the single wrapper outer class.\n\tJavaOuterClassname *string `protobuf:\"bytes,8,opt,name=java_outer_classname,json=javaOuterClassname\" json:\"java_outer_classname,omitempty\"`\n\t// If enabled, then the Java code generator will generate a separate .java\n\t// file for each top-level message, enum, and service defined in the .proto\n\t// file.  Thus, these types will *not* be nested inside the wrapper class\n\t// named by java_outer_classname.  However, the wrapper class will still be\n\t// generated to contain the file's getDescriptor() method as well as any\n\t// top-level extensions defined in the file.\n\tJavaMultipleFiles *bool `protobuf:\"varint,10,opt,name=java_multiple_files,json=javaMultipleFiles,def=0\" json:\"java_multiple_files,omitempty\"`\n\t// This option does nothing.\n\t//\n\t// Deprecated: Marked as deprecated in google/protobuf/descriptor.proto.\n\tJavaGenerateEqualsAndHash *bool `protobuf:\"varint,20,opt,name=java_generate_equals_and_hash,json=javaGenerateEqualsAndHash\" json:\"java_generate_equals_and_hash,omitempty\"`\n\t// A proto2 file can set this to true to opt in to UTF-8 checking for Java,\n\t// which will throw an exception if invalid UTF-8 is parsed from the wire or\n\t// assigned to a string field.\n\t//\n\t// TODO: clarify exactly what kinds of field types this option\n\t// applies to, and update these docs accordingly.\n\t//\n\t// Proto3 files already perform these checks. Setting the option explicitly to\n\t// false has no effect: it cannot be used to opt proto3 files out of UTF-8\n\t// checks.\n\tJavaStringCheckUtf8 *bool                     `protobuf:\"varint,27,opt,name=java_string_check_utf8,json=javaStringCheckUtf8,def=0\" json:\"java_string_check_utf8,omitempty\"`\n\tOptimizeFor         *FileOptions_OptimizeMode `protobuf:\"varint,9,opt,name=optimize_for,json=optimizeFor,enum=google.protobuf.FileOptions_OptimizeMode,def=1\" json:\"optimize_for,omitempty\"`\n\t// Sets the Go package where structs generated from this .proto will be\n\t// placed. If omitted, the Go package will be derived from the following:\n\t//   - The basename of the package import path, if provided.\n\t//   - Otherwise, the package statement in the .proto file, if present.\n\t//   - Otherwise, the basename of the .proto file, without extension.\n\tGoPackage *string `protobuf:\"bytes,11,opt,name=go_package,json=goPackage\" json:\"go_package,omitempty\"`\n\t// Should generic services be generated in each language?  \"Generic\" services\n\t// are not specific to any particular RPC system.  They are generated by the\n\t// main code generators in each language (without additional plugins).\n\t// Generic services were the only kind of service generation supported by\n\t// early versions of google.protobuf.\n\t//\n\t// Generic services are now considered deprecated in favor of using plugins\n\t// that generate code specific to your particular RPC system.  Therefore,\n\t// these default to false.  Old code which depends on generic services should\n\t// explicitly set them to true.\n\tCcGenericServices   *bool `protobuf:\"varint,16,opt,name=cc_generic_services,json=ccGenericServices,def=0\" json:\"cc_generic_services,omitempty\"`\n\tJavaGenericServices *bool `protobuf:\"varint,17,opt,name=java_generic_services,json=javaGenericServices,def=0\" json:\"java_generic_services,omitempty\"`\n\tPyGenericServices   *bool `protobuf:\"varint,18,opt,name=py_generic_services,json=pyGenericServices,def=0\" json:\"py_generic_services,omitempty\"`\n\t// Is this file deprecated?\n\t// Depending on the target platform, this can emit Deprecated annotations\n\t// for everything in the file, or it will be completely ignored; in the very\n\t// least, this is a formalization for deprecating files.\n\tDeprecated *bool `protobuf:\"varint,23,opt,name=deprecated,def=0\" json:\"deprecated,omitempty\"`\n\t// Enables the use of arenas for the proto messages in this file. This applies\n\t// only to generated classes for C++.\n\tCcEnableArenas *bool `protobuf:\"varint,31,opt,name=cc_enable_arenas,json=ccEnableArenas,def=1\" json:\"cc_enable_arenas,omitempty\"`\n\t// Sets the objective c class prefix which is prepended to all objective c\n\t// generated classes from this .proto. There is no default.\n\tObjcClassPrefix *string `protobuf:\"bytes,36,opt,name=objc_class_prefix,json=objcClassPrefix\" json:\"objc_class_prefix,omitempty\"`\n\t// Namespace for generated classes; defaults to the package.\n\tCsharpNamespace *string `protobuf:\"bytes,37,opt,name=csharp_namespace,json=csharpNamespace\" json:\"csharp_namespace,omitempty\"`\n\t// By default Swift generators will take the proto package and CamelCase it\n\t// replacing '.' with underscore and use that to prefix the types/symbols\n\t// defined. When this options is provided, they will use this value instead\n\t// to prefix the types/symbols defined.\n\tSwiftPrefix *string `protobuf:\"bytes,39,opt,name=swift_prefix,json=swiftPrefix\" json:\"swift_prefix,omitempty\"`\n\t// Sets the php class prefix which is prepended to all php generated classes\n\t// from this .proto. Default is empty.\n\tPhpClassPrefix *string `protobuf:\"bytes,40,opt,name=php_class_prefix,json=phpClassPrefix\" json:\"php_class_prefix,omitempty\"`\n\t// Use this option to change the namespace of php generated classes. Default\n\t// is empty. When this option is empty, the package name will be used for\n\t// determining the namespace.\n\tPhpNamespace *string `protobuf:\"bytes,41,opt,name=php_namespace,json=phpNamespace\" json:\"php_namespace,omitempty\"`\n\t// Use this option to change the namespace of php generated metadata classes.\n\t// Default is empty. When this option is empty, the proto file name will be\n\t// used for determining the namespace.\n\tPhpMetadataNamespace *string `protobuf:\"bytes,44,opt,name=php_metadata_namespace,json=phpMetadataNamespace\" json:\"php_metadata_namespace,omitempty\"`\n\t// Use this option to change the package of ruby generated classes. Default\n\t// is empty. When this option is not set, the package name will be used for\n\t// determining the ruby package.\n\tRubyPackage *string `protobuf:\"bytes,45,opt,name=ruby_package,json=rubyPackage\" json:\"ruby_package,omitempty\"`\n\t// Any features defined in the specific edition.\n\t// WARNING: This field should only be used by protobuf plugins or special\n\t// cases like the proto compiler. Other uses are discouraged and\n\t// developers should rely on the protoreflect APIs for their client language.\n\tFeatures *FeatureSet `protobuf:\"bytes,50,opt,name=features\" json:\"features,omitempty\"`\n\t// The parser stores options it doesn't recognize here.\n\t// See the documentation for the \"Options\" section above.\n\tUninterpretedOption []*UninterpretedOption `protobuf:\"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption\" json:\"uninterpreted_option,omitempty\"`\n\textensionFields     protoimpl.ExtensionFields\n\tunknownFields       protoimpl.UnknownFields\n\tsizeCache           protoimpl.SizeCache\n}\n\n// Default values for FileOptions fields.\nconst (\n\tDefault_FileOptions_JavaMultipleFiles   = bool(false)\n\tDefault_FileOptions_JavaStringCheckUtf8 = bool(false)\n\tDefault_FileOptions_OptimizeFor         = FileOptions_SPEED\n\tDefault_FileOptions_CcGenericServices   = bool(false)\n\tDefault_FileOptions_JavaGenericServices = bool(false)\n\tDefault_FileOptions_PyGenericServices   = bool(false)\n\tDefault_FileOptions_Deprecated          = bool(false)\n\tDefault_FileOptions_CcEnableArenas      = bool(true)\n)\n\nfunc (x *FileOptions) Reset() {\n\t*x = FileOptions{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[10]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *FileOptions) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*FileOptions) ProtoMessage() {}\n\nfunc (x *FileOptions) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[10]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use FileOptions.ProtoReflect.Descriptor instead.\nfunc (*FileOptions) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{10}\n}\n\nfunc (x *FileOptions) GetJavaPackage() string {\n\tif x != nil && x.JavaPackage != nil {\n\t\treturn *x.JavaPackage\n\t}\n\treturn \"\"\n}\n\nfunc (x *FileOptions) GetJavaOuterClassname() string {\n\tif x != nil && x.JavaOuterClassname != nil {\n\t\treturn *x.JavaOuterClassname\n\t}\n\treturn \"\"\n}\n\nfunc (x *FileOptions) GetJavaMultipleFiles() bool {\n\tif x != nil && x.JavaMultipleFiles != nil {\n\t\treturn *x.JavaMultipleFiles\n\t}\n\treturn Default_FileOptions_JavaMultipleFiles\n}\n\n// Deprecated: Marked as deprecated in google/protobuf/descriptor.proto.\nfunc (x *FileOptions) GetJavaGenerateEqualsAndHash() bool {\n\tif x != nil && x.JavaGenerateEqualsAndHash != nil {\n\t\treturn *x.JavaGenerateEqualsAndHash\n\t}\n\treturn false\n}\n\nfunc (x *FileOptions) GetJavaStringCheckUtf8() bool {\n\tif x != nil && x.JavaStringCheckUtf8 != nil {\n\t\treturn *x.JavaStringCheckUtf8\n\t}\n\treturn Default_FileOptions_JavaStringCheckUtf8\n}\n\nfunc (x *FileOptions) GetOptimizeFor() FileOptions_OptimizeMode {\n\tif x != nil && x.OptimizeFor != nil {\n\t\treturn *x.OptimizeFor\n\t}\n\treturn Default_FileOptions_OptimizeFor\n}\n\nfunc (x *FileOptions) GetGoPackage() string {\n\tif x != nil && x.GoPackage != nil {\n\t\treturn *x.GoPackage\n\t}\n\treturn \"\"\n}\n\nfunc (x *FileOptions) GetCcGenericServices() bool {\n\tif x != nil && x.CcGenericServices != nil {\n\t\treturn *x.CcGenericServices\n\t}\n\treturn Default_FileOptions_CcGenericServices\n}\n\nfunc (x *FileOptions) GetJavaGenericServices() bool {\n\tif x != nil && x.JavaGenericServices != nil {\n\t\treturn *x.JavaGenericServices\n\t}\n\treturn Default_FileOptions_JavaGenericServices\n}\n\nfunc (x *FileOptions) GetPyGenericServices() bool {\n\tif x != nil && x.PyGenericServices != nil {\n\t\treturn *x.PyGenericServices\n\t}\n\treturn Default_FileOptions_PyGenericServices\n}\n\nfunc (x *FileOptions) GetDeprecated() bool {\n\tif x != nil && x.Deprecated != nil {\n\t\treturn *x.Deprecated\n\t}\n\treturn Default_FileOptions_Deprecated\n}\n\nfunc (x *FileOptions) GetCcEnableArenas() bool {\n\tif x != nil && x.CcEnableArenas != nil {\n\t\treturn *x.CcEnableArenas\n\t}\n\treturn Default_FileOptions_CcEnableArenas\n}\n\nfunc (x *FileOptions) GetObjcClassPrefix() string {\n\tif x != nil && x.ObjcClassPrefix != nil {\n\t\treturn *x.ObjcClassPrefix\n\t}\n\treturn \"\"\n}\n\nfunc (x *FileOptions) GetCsharpNamespace() string {\n\tif x != nil && x.CsharpNamespace != nil {\n\t\treturn *x.CsharpNamespace\n\t}\n\treturn \"\"\n}\n\nfunc (x *FileOptions) GetSwiftPrefix() string {\n\tif x != nil && x.SwiftPrefix != nil {\n\t\treturn *x.SwiftPrefix\n\t}\n\treturn \"\"\n}\n\nfunc (x *FileOptions) GetPhpClassPrefix() string {\n\tif x != nil && x.PhpClassPrefix != nil {\n\t\treturn *x.PhpClassPrefix\n\t}\n\treturn \"\"\n}\n\nfunc (x *FileOptions) GetPhpNamespace() string {\n\tif x != nil && x.PhpNamespace != nil {\n\t\treturn *x.PhpNamespace\n\t}\n\treturn \"\"\n}\n\nfunc (x *FileOptions) GetPhpMetadataNamespace() string {\n\tif x != nil && x.PhpMetadataNamespace != nil {\n\t\treturn *x.PhpMetadataNamespace\n\t}\n\treturn \"\"\n}\n\nfunc (x *FileOptions) GetRubyPackage() string {\n\tif x != nil && x.RubyPackage != nil {\n\t\treturn *x.RubyPackage\n\t}\n\treturn \"\"\n}\n\nfunc (x *FileOptions) GetFeatures() *FeatureSet {\n\tif x != nil {\n\t\treturn x.Features\n\t}\n\treturn nil\n}\n\nfunc (x *FileOptions) GetUninterpretedOption() []*UninterpretedOption {\n\tif x != nil {\n\t\treturn x.UninterpretedOption\n\t}\n\treturn nil\n}\n\ntype MessageOptions struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Set true to use the old proto1 MessageSet wire format for extensions.\n\t// This is provided for backwards-compatibility with the MessageSet wire\n\t// format.  You should not use this for any other reason:  It's less\n\t// efficient, has fewer features, and is more complicated.\n\t//\n\t// The message must be defined exactly as follows:\n\t//\n\t//\tmessage Foo {\n\t//\t  option message_set_wire_format = true;\n\t//\t  extensions 4 to max;\n\t//\t}\n\t//\n\t// Note that the message cannot have any defined fields; MessageSets only\n\t// have extensions.\n\t//\n\t// All extensions of your type must be singular messages; e.g. they cannot\n\t// be int32s, enums, or repeated messages.\n\t//\n\t// Because this is an option, the above two restrictions are not enforced by\n\t// the protocol compiler.\n\tMessageSetWireFormat *bool `protobuf:\"varint,1,opt,name=message_set_wire_format,json=messageSetWireFormat,def=0\" json:\"message_set_wire_format,omitempty\"`\n\t// Disables the generation of the standard \"descriptor()\" accessor, which can\n\t// conflict with a field of the same name.  This is meant to make migration\n\t// from proto1 easier; new code should avoid fields named \"descriptor\".\n\tNoStandardDescriptorAccessor *bool `protobuf:\"varint,2,opt,name=no_standard_descriptor_accessor,json=noStandardDescriptorAccessor,def=0\" json:\"no_standard_descriptor_accessor,omitempty\"`\n\t// Is this message deprecated?\n\t// Depending on the target platform, this can emit Deprecated annotations\n\t// for the message, or it will be completely ignored; in the very least,\n\t// this is a formalization for deprecating messages.\n\tDeprecated *bool `protobuf:\"varint,3,opt,name=deprecated,def=0\" json:\"deprecated,omitempty\"`\n\t// Whether the message is an automatically generated map entry type for the\n\t// maps field.\n\t//\n\t// For maps fields:\n\t//\n\t//\tmap<KeyType, ValueType> map_field = 1;\n\t//\n\t// The parsed descriptor looks like:\n\t//\n\t//\tmessage MapFieldEntry {\n\t//\t    option map_entry = true;\n\t//\t    optional KeyType key = 1;\n\t//\t    optional ValueType value = 2;\n\t//\t}\n\t//\trepeated MapFieldEntry map_field = 1;\n\t//\n\t// Implementations may choose not to generate the map_entry=true message, but\n\t// use a native map in the target language to hold the keys and values.\n\t// The reflection APIs in such implementations still need to work as\n\t// if the field is a repeated message field.\n\t//\n\t// NOTE: Do not set the option in .proto files. Always use the maps syntax\n\t// instead. The option should only be implicitly set by the proto compiler\n\t// parser.\n\tMapEntry *bool `protobuf:\"varint,7,opt,name=map_entry,json=mapEntry\" json:\"map_entry,omitempty\"`\n\t// Enable the legacy handling of JSON field name conflicts.  This lowercases\n\t// and strips underscored from the fields before comparison in proto3 only.\n\t// The new behavior takes `json_name` into account and applies to proto2 as\n\t// well.\n\t//\n\t// This should only be used as a temporary measure against broken builds due\n\t// to the change in behavior for JSON field name conflicts.\n\t//\n\t// TODO This is legacy behavior we plan to remove once downstream\n\t// teams have had time to migrate.\n\t//\n\t// Deprecated: Marked as deprecated in google/protobuf/descriptor.proto.\n\tDeprecatedLegacyJsonFieldConflicts *bool `protobuf:\"varint,11,opt,name=deprecated_legacy_json_field_conflicts,json=deprecatedLegacyJsonFieldConflicts\" json:\"deprecated_legacy_json_field_conflicts,omitempty\"`\n\t// Any features defined in the specific edition.\n\t// WARNING: This field should only be used by protobuf plugins or special\n\t// cases like the proto compiler. Other uses are discouraged and\n\t// developers should rely on the protoreflect APIs for their client language.\n\tFeatures *FeatureSet `protobuf:\"bytes,12,opt,name=features\" json:\"features,omitempty\"`\n\t// The parser stores options it doesn't recognize here. See above.\n\tUninterpretedOption []*UninterpretedOption `protobuf:\"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption\" json:\"uninterpreted_option,omitempty\"`\n\textensionFields     protoimpl.ExtensionFields\n\tunknownFields       protoimpl.UnknownFields\n\tsizeCache           protoimpl.SizeCache\n}\n\n// Default values for MessageOptions fields.\nconst (\n\tDefault_MessageOptions_MessageSetWireFormat         = bool(false)\n\tDefault_MessageOptions_NoStandardDescriptorAccessor = bool(false)\n\tDefault_MessageOptions_Deprecated                   = bool(false)\n)\n\nfunc (x *MessageOptions) Reset() {\n\t*x = MessageOptions{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[11]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *MessageOptions) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MessageOptions) ProtoMessage() {}\n\nfunc (x *MessageOptions) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[11]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use MessageOptions.ProtoReflect.Descriptor instead.\nfunc (*MessageOptions) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{11}\n}\n\nfunc (x *MessageOptions) GetMessageSetWireFormat() bool {\n\tif x != nil && x.MessageSetWireFormat != nil {\n\t\treturn *x.MessageSetWireFormat\n\t}\n\treturn Default_MessageOptions_MessageSetWireFormat\n}\n\nfunc (x *MessageOptions) GetNoStandardDescriptorAccessor() bool {\n\tif x != nil && x.NoStandardDescriptorAccessor != nil {\n\t\treturn *x.NoStandardDescriptorAccessor\n\t}\n\treturn Default_MessageOptions_NoStandardDescriptorAccessor\n}\n\nfunc (x *MessageOptions) GetDeprecated() bool {\n\tif x != nil && x.Deprecated != nil {\n\t\treturn *x.Deprecated\n\t}\n\treturn Default_MessageOptions_Deprecated\n}\n\nfunc (x *MessageOptions) GetMapEntry() bool {\n\tif x != nil && x.MapEntry != nil {\n\t\treturn *x.MapEntry\n\t}\n\treturn false\n}\n\n// Deprecated: Marked as deprecated in google/protobuf/descriptor.proto.\nfunc (x *MessageOptions) GetDeprecatedLegacyJsonFieldConflicts() bool {\n\tif x != nil && x.DeprecatedLegacyJsonFieldConflicts != nil {\n\t\treturn *x.DeprecatedLegacyJsonFieldConflicts\n\t}\n\treturn false\n}\n\nfunc (x *MessageOptions) GetFeatures() *FeatureSet {\n\tif x != nil {\n\t\treturn x.Features\n\t}\n\treturn nil\n}\n\nfunc (x *MessageOptions) GetUninterpretedOption() []*UninterpretedOption {\n\tif x != nil {\n\t\treturn x.UninterpretedOption\n\t}\n\treturn nil\n}\n\ntype FieldOptions struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// NOTE: ctype is deprecated. Use `features.(pb.cpp).string_type` instead.\n\t// The ctype option instructs the C++ code generator to use a different\n\t// representation of the field than it normally would.  See the specific\n\t// options below.  This option is only implemented to support use of\n\t// [ctype=CORD] and [ctype=STRING] (the default) on non-repeated fields of\n\t// type \"bytes\" in the open source release.\n\t// TODO: make ctype actually deprecated.\n\tCtype *FieldOptions_CType `protobuf:\"varint,1,opt,name=ctype,enum=google.protobuf.FieldOptions_CType,def=0\" json:\"ctype,omitempty\"`\n\t// The packed option can be enabled for repeated primitive fields to enable\n\t// a more efficient representation on the wire. Rather than repeatedly\n\t// writing the tag and type for each element, the entire array is encoded as\n\t// a single length-delimited blob. In proto3, only explicit setting it to\n\t// false will avoid using packed encoding.  This option is prohibited in\n\t// Editions, but the `repeated_field_encoding` feature can be used to control\n\t// the behavior.\n\tPacked *bool `protobuf:\"varint,2,opt,name=packed\" json:\"packed,omitempty\"`\n\t// The jstype option determines the JavaScript type used for values of the\n\t// field.  The option is permitted only for 64 bit integral and fixed types\n\t// (int64, uint64, sint64, fixed64, sfixed64).  A field with jstype JS_STRING\n\t// is represented as JavaScript string, which avoids loss of precision that\n\t// can happen when a large value is converted to a floating point JavaScript.\n\t// Specifying JS_NUMBER for the jstype causes the generated JavaScript code to\n\t// use the JavaScript \"number\" type.  The behavior of the default option\n\t// JS_NORMAL is implementation dependent.\n\t//\n\t// This option is an enum to permit additional types to be added, e.g.\n\t// goog.math.Integer.\n\tJstype *FieldOptions_JSType `protobuf:\"varint,6,opt,name=jstype,enum=google.protobuf.FieldOptions_JSType,def=0\" json:\"jstype,omitempty\"`\n\t// Should this field be parsed lazily?  Lazy applies only to message-type\n\t// fields.  It means that when the outer message is initially parsed, the\n\t// inner message's contents will not be parsed but instead stored in encoded\n\t// form.  The inner message will actually be parsed when it is first accessed.\n\t//\n\t// This is only a hint.  Implementations are free to choose whether to use\n\t// eager or lazy parsing regardless of the value of this option.  However,\n\t// setting this option true suggests that the protocol author believes that\n\t// using lazy parsing on this field is worth the additional bookkeeping\n\t// overhead typically needed to implement it.\n\t//\n\t// This option does not affect the public interface of any generated code;\n\t// all method signatures remain the same.  Furthermore, thread-safety of the\n\t// interface is not affected by this option; const methods remain safe to\n\t// call from multiple threads concurrently, while non-const methods continue\n\t// to require exclusive access.\n\t//\n\t// Note that lazy message fields are still eagerly verified to check\n\t// ill-formed wireformat or missing required fields. Calling IsInitialized()\n\t// on the outer message would fail if the inner message has missing required\n\t// fields. Failed verification would result in parsing failure (except when\n\t// uninitialized messages are acceptable).\n\tLazy *bool `protobuf:\"varint,5,opt,name=lazy,def=0\" json:\"lazy,omitempty\"`\n\t// unverified_lazy does no correctness checks on the byte stream. This should\n\t// only be used where lazy with verification is prohibitive for performance\n\t// reasons.\n\tUnverifiedLazy *bool `protobuf:\"varint,15,opt,name=unverified_lazy,json=unverifiedLazy,def=0\" json:\"unverified_lazy,omitempty\"`\n\t// Is this field deprecated?\n\t// Depending on the target platform, this can emit Deprecated annotations\n\t// for accessors, or it will be completely ignored; in the very least, this\n\t// is a formalization for deprecating fields.\n\tDeprecated *bool `protobuf:\"varint,3,opt,name=deprecated,def=0\" json:\"deprecated,omitempty\"`\n\t// DEPRECATED. DO NOT USE!\n\t// For Google-internal migration only. Do not use.\n\t//\n\t// Deprecated: Marked as deprecated in google/protobuf/descriptor.proto.\n\tWeak *bool `protobuf:\"varint,10,opt,name=weak,def=0\" json:\"weak,omitempty\"`\n\t// Indicate that the field value should not be printed out when using debug\n\t// formats, e.g. when the field contains sensitive credentials.\n\tDebugRedact     *bool                           `protobuf:\"varint,16,opt,name=debug_redact,json=debugRedact,def=0\" json:\"debug_redact,omitempty\"`\n\tRetention       *FieldOptions_OptionRetention   `protobuf:\"varint,17,opt,name=retention,enum=google.protobuf.FieldOptions_OptionRetention\" json:\"retention,omitempty\"`\n\tTargets         []FieldOptions_OptionTargetType `protobuf:\"varint,19,rep,name=targets,enum=google.protobuf.FieldOptions_OptionTargetType\" json:\"targets,omitempty\"`\n\tEditionDefaults []*FieldOptions_EditionDefault  `protobuf:\"bytes,20,rep,name=edition_defaults,json=editionDefaults\" json:\"edition_defaults,omitempty\"`\n\t// Any features defined in the specific edition.\n\t// WARNING: This field should only be used by protobuf plugins or special\n\t// cases like the proto compiler. Other uses are discouraged and\n\t// developers should rely on the protoreflect APIs for their client language.\n\tFeatures       *FeatureSet                  `protobuf:\"bytes,21,opt,name=features\" json:\"features,omitempty\"`\n\tFeatureSupport *FieldOptions_FeatureSupport `protobuf:\"bytes,22,opt,name=feature_support,json=featureSupport\" json:\"feature_support,omitempty\"`\n\t// The parser stores options it doesn't recognize here. See above.\n\tUninterpretedOption []*UninterpretedOption `protobuf:\"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption\" json:\"uninterpreted_option,omitempty\"`\n\textensionFields     protoimpl.ExtensionFields\n\tunknownFields       protoimpl.UnknownFields\n\tsizeCache           protoimpl.SizeCache\n}\n\n// Default values for FieldOptions fields.\nconst (\n\tDefault_FieldOptions_Ctype          = FieldOptions_STRING\n\tDefault_FieldOptions_Jstype         = FieldOptions_JS_NORMAL\n\tDefault_FieldOptions_Lazy           = bool(false)\n\tDefault_FieldOptions_UnverifiedLazy = bool(false)\n\tDefault_FieldOptions_Deprecated     = bool(false)\n\tDefault_FieldOptions_Weak           = bool(false)\n\tDefault_FieldOptions_DebugRedact    = bool(false)\n)\n\nfunc (x *FieldOptions) Reset() {\n\t*x = FieldOptions{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[12]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *FieldOptions) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*FieldOptions) ProtoMessage() {}\n\nfunc (x *FieldOptions) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[12]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use FieldOptions.ProtoReflect.Descriptor instead.\nfunc (*FieldOptions) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{12}\n}\n\nfunc (x *FieldOptions) GetCtype() FieldOptions_CType {\n\tif x != nil && x.Ctype != nil {\n\t\treturn *x.Ctype\n\t}\n\treturn Default_FieldOptions_Ctype\n}\n\nfunc (x *FieldOptions) GetPacked() bool {\n\tif x != nil && x.Packed != nil {\n\t\treturn *x.Packed\n\t}\n\treturn false\n}\n\nfunc (x *FieldOptions) GetJstype() FieldOptions_JSType {\n\tif x != nil && x.Jstype != nil {\n\t\treturn *x.Jstype\n\t}\n\treturn Default_FieldOptions_Jstype\n}\n\nfunc (x *FieldOptions) GetLazy() bool {\n\tif x != nil && x.Lazy != nil {\n\t\treturn *x.Lazy\n\t}\n\treturn Default_FieldOptions_Lazy\n}\n\nfunc (x *FieldOptions) GetUnverifiedLazy() bool {\n\tif x != nil && x.UnverifiedLazy != nil {\n\t\treturn *x.UnverifiedLazy\n\t}\n\treturn Default_FieldOptions_UnverifiedLazy\n}\n\nfunc (x *FieldOptions) GetDeprecated() bool {\n\tif x != nil && x.Deprecated != nil {\n\t\treturn *x.Deprecated\n\t}\n\treturn Default_FieldOptions_Deprecated\n}\n\n// Deprecated: Marked as deprecated in google/protobuf/descriptor.proto.\nfunc (x *FieldOptions) GetWeak() bool {\n\tif x != nil && x.Weak != nil {\n\t\treturn *x.Weak\n\t}\n\treturn Default_FieldOptions_Weak\n}\n\nfunc (x *FieldOptions) GetDebugRedact() bool {\n\tif x != nil && x.DebugRedact != nil {\n\t\treturn *x.DebugRedact\n\t}\n\treturn Default_FieldOptions_DebugRedact\n}\n\nfunc (x *FieldOptions) GetRetention() FieldOptions_OptionRetention {\n\tif x != nil && x.Retention != nil {\n\t\treturn *x.Retention\n\t}\n\treturn FieldOptions_RETENTION_UNKNOWN\n}\n\nfunc (x *FieldOptions) GetTargets() []FieldOptions_OptionTargetType {\n\tif x != nil {\n\t\treturn x.Targets\n\t}\n\treturn nil\n}\n\nfunc (x *FieldOptions) GetEditionDefaults() []*FieldOptions_EditionDefault {\n\tif x != nil {\n\t\treturn x.EditionDefaults\n\t}\n\treturn nil\n}\n\nfunc (x *FieldOptions) GetFeatures() *FeatureSet {\n\tif x != nil {\n\t\treturn x.Features\n\t}\n\treturn nil\n}\n\nfunc (x *FieldOptions) GetFeatureSupport() *FieldOptions_FeatureSupport {\n\tif x != nil {\n\t\treturn x.FeatureSupport\n\t}\n\treturn nil\n}\n\nfunc (x *FieldOptions) GetUninterpretedOption() []*UninterpretedOption {\n\tif x != nil {\n\t\treturn x.UninterpretedOption\n\t}\n\treturn nil\n}\n\ntype OneofOptions struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Any features defined in the specific edition.\n\t// WARNING: This field should only be used by protobuf plugins or special\n\t// cases like the proto compiler. Other uses are discouraged and\n\t// developers should rely on the protoreflect APIs for their client language.\n\tFeatures *FeatureSet `protobuf:\"bytes,1,opt,name=features\" json:\"features,omitempty\"`\n\t// The parser stores options it doesn't recognize here. See above.\n\tUninterpretedOption []*UninterpretedOption `protobuf:\"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption\" json:\"uninterpreted_option,omitempty\"`\n\textensionFields     protoimpl.ExtensionFields\n\tunknownFields       protoimpl.UnknownFields\n\tsizeCache           protoimpl.SizeCache\n}\n\nfunc (x *OneofOptions) Reset() {\n\t*x = OneofOptions{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[13]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *OneofOptions) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*OneofOptions) ProtoMessage() {}\n\nfunc (x *OneofOptions) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[13]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use OneofOptions.ProtoReflect.Descriptor instead.\nfunc (*OneofOptions) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{13}\n}\n\nfunc (x *OneofOptions) GetFeatures() *FeatureSet {\n\tif x != nil {\n\t\treturn x.Features\n\t}\n\treturn nil\n}\n\nfunc (x *OneofOptions) GetUninterpretedOption() []*UninterpretedOption {\n\tif x != nil {\n\t\treturn x.UninterpretedOption\n\t}\n\treturn nil\n}\n\ntype EnumOptions struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Set this option to true to allow mapping different tag names to the same\n\t// value.\n\tAllowAlias *bool `protobuf:\"varint,2,opt,name=allow_alias,json=allowAlias\" json:\"allow_alias,omitempty\"`\n\t// Is this enum deprecated?\n\t// Depending on the target platform, this can emit Deprecated annotations\n\t// for the enum, or it will be completely ignored; in the very least, this\n\t// is a formalization for deprecating enums.\n\tDeprecated *bool `protobuf:\"varint,3,opt,name=deprecated,def=0\" json:\"deprecated,omitempty\"`\n\t// Enable the legacy handling of JSON field name conflicts.  This lowercases\n\t// and strips underscored from the fields before comparison in proto3 only.\n\t// The new behavior takes `json_name` into account and applies to proto2 as\n\t// well.\n\t// TODO Remove this legacy behavior once downstream teams have\n\t// had time to migrate.\n\t//\n\t// Deprecated: Marked as deprecated in google/protobuf/descriptor.proto.\n\tDeprecatedLegacyJsonFieldConflicts *bool `protobuf:\"varint,6,opt,name=deprecated_legacy_json_field_conflicts,json=deprecatedLegacyJsonFieldConflicts\" json:\"deprecated_legacy_json_field_conflicts,omitempty\"`\n\t// Any features defined in the specific edition.\n\t// WARNING: This field should only be used by protobuf plugins or special\n\t// cases like the proto compiler. Other uses are discouraged and\n\t// developers should rely on the protoreflect APIs for their client language.\n\tFeatures *FeatureSet `protobuf:\"bytes,7,opt,name=features\" json:\"features,omitempty\"`\n\t// The parser stores options it doesn't recognize here. See above.\n\tUninterpretedOption []*UninterpretedOption `protobuf:\"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption\" json:\"uninterpreted_option,omitempty\"`\n\textensionFields     protoimpl.ExtensionFields\n\tunknownFields       protoimpl.UnknownFields\n\tsizeCache           protoimpl.SizeCache\n}\n\n// Default values for EnumOptions fields.\nconst (\n\tDefault_EnumOptions_Deprecated = bool(false)\n)\n\nfunc (x *EnumOptions) Reset() {\n\t*x = EnumOptions{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[14]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *EnumOptions) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*EnumOptions) ProtoMessage() {}\n\nfunc (x *EnumOptions) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[14]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use EnumOptions.ProtoReflect.Descriptor instead.\nfunc (*EnumOptions) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{14}\n}\n\nfunc (x *EnumOptions) GetAllowAlias() bool {\n\tif x != nil && x.AllowAlias != nil {\n\t\treturn *x.AllowAlias\n\t}\n\treturn false\n}\n\nfunc (x *EnumOptions) GetDeprecated() bool {\n\tif x != nil && x.Deprecated != nil {\n\t\treturn *x.Deprecated\n\t}\n\treturn Default_EnumOptions_Deprecated\n}\n\n// Deprecated: Marked as deprecated in google/protobuf/descriptor.proto.\nfunc (x *EnumOptions) GetDeprecatedLegacyJsonFieldConflicts() bool {\n\tif x != nil && x.DeprecatedLegacyJsonFieldConflicts != nil {\n\t\treturn *x.DeprecatedLegacyJsonFieldConflicts\n\t}\n\treturn false\n}\n\nfunc (x *EnumOptions) GetFeatures() *FeatureSet {\n\tif x != nil {\n\t\treturn x.Features\n\t}\n\treturn nil\n}\n\nfunc (x *EnumOptions) GetUninterpretedOption() []*UninterpretedOption {\n\tif x != nil {\n\t\treturn x.UninterpretedOption\n\t}\n\treturn nil\n}\n\ntype EnumValueOptions struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Is this enum value deprecated?\n\t// Depending on the target platform, this can emit Deprecated annotations\n\t// for the enum value, or it will be completely ignored; in the very least,\n\t// this is a formalization for deprecating enum values.\n\tDeprecated *bool `protobuf:\"varint,1,opt,name=deprecated,def=0\" json:\"deprecated,omitempty\"`\n\t// Any features defined in the specific edition.\n\t// WARNING: This field should only be used by protobuf plugins or special\n\t// cases like the proto compiler. Other uses are discouraged and\n\t// developers should rely on the protoreflect APIs for their client language.\n\tFeatures *FeatureSet `protobuf:\"bytes,2,opt,name=features\" json:\"features,omitempty\"`\n\t// Indicate that fields annotated with this enum value should not be printed\n\t// out when using debug formats, e.g. when the field contains sensitive\n\t// credentials.\n\tDebugRedact *bool `protobuf:\"varint,3,opt,name=debug_redact,json=debugRedact,def=0\" json:\"debug_redact,omitempty\"`\n\t// Information about the support window of a feature value.\n\tFeatureSupport *FieldOptions_FeatureSupport `protobuf:\"bytes,4,opt,name=feature_support,json=featureSupport\" json:\"feature_support,omitempty\"`\n\t// The parser stores options it doesn't recognize here. See above.\n\tUninterpretedOption []*UninterpretedOption `protobuf:\"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption\" json:\"uninterpreted_option,omitempty\"`\n\textensionFields     protoimpl.ExtensionFields\n\tunknownFields       protoimpl.UnknownFields\n\tsizeCache           protoimpl.SizeCache\n}\n\n// Default values for EnumValueOptions fields.\nconst (\n\tDefault_EnumValueOptions_Deprecated  = bool(false)\n\tDefault_EnumValueOptions_DebugRedact = bool(false)\n)\n\nfunc (x *EnumValueOptions) Reset() {\n\t*x = EnumValueOptions{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[15]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *EnumValueOptions) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*EnumValueOptions) ProtoMessage() {}\n\nfunc (x *EnumValueOptions) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[15]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use EnumValueOptions.ProtoReflect.Descriptor instead.\nfunc (*EnumValueOptions) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{15}\n}\n\nfunc (x *EnumValueOptions) GetDeprecated() bool {\n\tif x != nil && x.Deprecated != nil {\n\t\treturn *x.Deprecated\n\t}\n\treturn Default_EnumValueOptions_Deprecated\n}\n\nfunc (x *EnumValueOptions) GetFeatures() *FeatureSet {\n\tif x != nil {\n\t\treturn x.Features\n\t}\n\treturn nil\n}\n\nfunc (x *EnumValueOptions) GetDebugRedact() bool {\n\tif x != nil && x.DebugRedact != nil {\n\t\treturn *x.DebugRedact\n\t}\n\treturn Default_EnumValueOptions_DebugRedact\n}\n\nfunc (x *EnumValueOptions) GetFeatureSupport() *FieldOptions_FeatureSupport {\n\tif x != nil {\n\t\treturn x.FeatureSupport\n\t}\n\treturn nil\n}\n\nfunc (x *EnumValueOptions) GetUninterpretedOption() []*UninterpretedOption {\n\tif x != nil {\n\t\treturn x.UninterpretedOption\n\t}\n\treturn nil\n}\n\ntype ServiceOptions struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Any features defined in the specific edition.\n\t// WARNING: This field should only be used by protobuf plugins or special\n\t// cases like the proto compiler. Other uses are discouraged and\n\t// developers should rely on the protoreflect APIs for their client language.\n\tFeatures *FeatureSet `protobuf:\"bytes,34,opt,name=features\" json:\"features,omitempty\"`\n\t// Is this service deprecated?\n\t// Depending on the target platform, this can emit Deprecated annotations\n\t// for the service, or it will be completely ignored; in the very least,\n\t// this is a formalization for deprecating services.\n\tDeprecated *bool `protobuf:\"varint,33,opt,name=deprecated,def=0\" json:\"deprecated,omitempty\"`\n\t// The parser stores options it doesn't recognize here. See above.\n\tUninterpretedOption []*UninterpretedOption `protobuf:\"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption\" json:\"uninterpreted_option,omitempty\"`\n\textensionFields     protoimpl.ExtensionFields\n\tunknownFields       protoimpl.UnknownFields\n\tsizeCache           protoimpl.SizeCache\n}\n\n// Default values for ServiceOptions fields.\nconst (\n\tDefault_ServiceOptions_Deprecated = bool(false)\n)\n\nfunc (x *ServiceOptions) Reset() {\n\t*x = ServiceOptions{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[16]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *ServiceOptions) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ServiceOptions) ProtoMessage() {}\n\nfunc (x *ServiceOptions) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[16]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ServiceOptions.ProtoReflect.Descriptor instead.\nfunc (*ServiceOptions) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{16}\n}\n\nfunc (x *ServiceOptions) GetFeatures() *FeatureSet {\n\tif x != nil {\n\t\treturn x.Features\n\t}\n\treturn nil\n}\n\nfunc (x *ServiceOptions) GetDeprecated() bool {\n\tif x != nil && x.Deprecated != nil {\n\t\treturn *x.Deprecated\n\t}\n\treturn Default_ServiceOptions_Deprecated\n}\n\nfunc (x *ServiceOptions) GetUninterpretedOption() []*UninterpretedOption {\n\tif x != nil {\n\t\treturn x.UninterpretedOption\n\t}\n\treturn nil\n}\n\ntype MethodOptions struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Is this method deprecated?\n\t// Depending on the target platform, this can emit Deprecated annotations\n\t// for the method, or it will be completely ignored; in the very least,\n\t// this is a formalization for deprecating methods.\n\tDeprecated       *bool                           `protobuf:\"varint,33,opt,name=deprecated,def=0\" json:\"deprecated,omitempty\"`\n\tIdempotencyLevel *MethodOptions_IdempotencyLevel `protobuf:\"varint,34,opt,name=idempotency_level,json=idempotencyLevel,enum=google.protobuf.MethodOptions_IdempotencyLevel,def=0\" json:\"idempotency_level,omitempty\"`\n\t// Any features defined in the specific edition.\n\t// WARNING: This field should only be used by protobuf plugins or special\n\t// cases like the proto compiler. Other uses are discouraged and\n\t// developers should rely on the protoreflect APIs for their client language.\n\tFeatures *FeatureSet `protobuf:\"bytes,35,opt,name=features\" json:\"features,omitempty\"`\n\t// The parser stores options it doesn't recognize here. See above.\n\tUninterpretedOption []*UninterpretedOption `protobuf:\"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption\" json:\"uninterpreted_option,omitempty\"`\n\textensionFields     protoimpl.ExtensionFields\n\tunknownFields       protoimpl.UnknownFields\n\tsizeCache           protoimpl.SizeCache\n}\n\n// Default values for MethodOptions fields.\nconst (\n\tDefault_MethodOptions_Deprecated       = bool(false)\n\tDefault_MethodOptions_IdempotencyLevel = MethodOptions_IDEMPOTENCY_UNKNOWN\n)\n\nfunc (x *MethodOptions) Reset() {\n\t*x = MethodOptions{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[17]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *MethodOptions) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MethodOptions) ProtoMessage() {}\n\nfunc (x *MethodOptions) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[17]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use MethodOptions.ProtoReflect.Descriptor instead.\nfunc (*MethodOptions) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{17}\n}\n\nfunc (x *MethodOptions) GetDeprecated() bool {\n\tif x != nil && x.Deprecated != nil {\n\t\treturn *x.Deprecated\n\t}\n\treturn Default_MethodOptions_Deprecated\n}\n\nfunc (x *MethodOptions) GetIdempotencyLevel() MethodOptions_IdempotencyLevel {\n\tif x != nil && x.IdempotencyLevel != nil {\n\t\treturn *x.IdempotencyLevel\n\t}\n\treturn Default_MethodOptions_IdempotencyLevel\n}\n\nfunc (x *MethodOptions) GetFeatures() *FeatureSet {\n\tif x != nil {\n\t\treturn x.Features\n\t}\n\treturn nil\n}\n\nfunc (x *MethodOptions) GetUninterpretedOption() []*UninterpretedOption {\n\tif x != nil {\n\t\treturn x.UninterpretedOption\n\t}\n\treturn nil\n}\n\n// A message representing a option the parser does not recognize. This only\n// appears in options protos created by the compiler::Parser class.\n// DescriptorPool resolves these when building Descriptor objects. Therefore,\n// options protos in descriptor objects (e.g. returned by Descriptor::options(),\n// or produced by Descriptor::CopyTo()) will never have UninterpretedOptions\n// in them.\ntype UninterpretedOption struct {\n\tstate protoimpl.MessageState          `protogen:\"open.v1\"`\n\tName  []*UninterpretedOption_NamePart `protobuf:\"bytes,2,rep,name=name\" json:\"name,omitempty\"`\n\t// The value of the uninterpreted option, in whatever type the tokenizer\n\t// identified it as during parsing. Exactly one of these should be set.\n\tIdentifierValue  *string  `protobuf:\"bytes,3,opt,name=identifier_value,json=identifierValue\" json:\"identifier_value,omitempty\"`\n\tPositiveIntValue *uint64  `protobuf:\"varint,4,opt,name=positive_int_value,json=positiveIntValue\" json:\"positive_int_value,omitempty\"`\n\tNegativeIntValue *int64   `protobuf:\"varint,5,opt,name=negative_int_value,json=negativeIntValue\" json:\"negative_int_value,omitempty\"`\n\tDoubleValue      *float64 `protobuf:\"fixed64,6,opt,name=double_value,json=doubleValue\" json:\"double_value,omitempty\"`\n\tStringValue      []byte   `protobuf:\"bytes,7,opt,name=string_value,json=stringValue\" json:\"string_value,omitempty\"`\n\tAggregateValue   *string  `protobuf:\"bytes,8,opt,name=aggregate_value,json=aggregateValue\" json:\"aggregate_value,omitempty\"`\n\tunknownFields    protoimpl.UnknownFields\n\tsizeCache        protoimpl.SizeCache\n}\n\nfunc (x *UninterpretedOption) Reset() {\n\t*x = UninterpretedOption{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[18]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *UninterpretedOption) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*UninterpretedOption) ProtoMessage() {}\n\nfunc (x *UninterpretedOption) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[18]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use UninterpretedOption.ProtoReflect.Descriptor instead.\nfunc (*UninterpretedOption) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{18}\n}\n\nfunc (x *UninterpretedOption) GetName() []*UninterpretedOption_NamePart {\n\tif x != nil {\n\t\treturn x.Name\n\t}\n\treturn nil\n}\n\nfunc (x *UninterpretedOption) GetIdentifierValue() string {\n\tif x != nil && x.IdentifierValue != nil {\n\t\treturn *x.IdentifierValue\n\t}\n\treturn \"\"\n}\n\nfunc (x *UninterpretedOption) GetPositiveIntValue() uint64 {\n\tif x != nil && x.PositiveIntValue != nil {\n\t\treturn *x.PositiveIntValue\n\t}\n\treturn 0\n}\n\nfunc (x *UninterpretedOption) GetNegativeIntValue() int64 {\n\tif x != nil && x.NegativeIntValue != nil {\n\t\treturn *x.NegativeIntValue\n\t}\n\treturn 0\n}\n\nfunc (x *UninterpretedOption) GetDoubleValue() float64 {\n\tif x != nil && x.DoubleValue != nil {\n\t\treturn *x.DoubleValue\n\t}\n\treturn 0\n}\n\nfunc (x *UninterpretedOption) GetStringValue() []byte {\n\tif x != nil {\n\t\treturn x.StringValue\n\t}\n\treturn nil\n}\n\nfunc (x *UninterpretedOption) GetAggregateValue() string {\n\tif x != nil && x.AggregateValue != nil {\n\t\treturn *x.AggregateValue\n\t}\n\treturn \"\"\n}\n\n// TODO Enums in C++ gencode (and potentially other languages) are\n// not well scoped.  This means that each of the feature enums below can clash\n// with each other.  The short names we've chosen maximize call-site\n// readability, but leave us very open to this scenario.  A future feature will\n// be designed and implemented to handle this, hopefully before we ever hit a\n// conflict here.\ntype FeatureSet struct {\n\tstate                   protoimpl.MessageState                                `protogen:\"open.v1\"`\n\tFieldPresence           *FeatureSet_FieldPresence                             `protobuf:\"varint,1,opt,name=field_presence,json=fieldPresence,enum=google.protobuf.FeatureSet_FieldPresence\" json:\"field_presence,omitempty\"`\n\tEnumType                *FeatureSet_EnumType                                  `protobuf:\"varint,2,opt,name=enum_type,json=enumType,enum=google.protobuf.FeatureSet_EnumType\" json:\"enum_type,omitempty\"`\n\tRepeatedFieldEncoding   *FeatureSet_RepeatedFieldEncoding                     `protobuf:\"varint,3,opt,name=repeated_field_encoding,json=repeatedFieldEncoding,enum=google.protobuf.FeatureSet_RepeatedFieldEncoding\" json:\"repeated_field_encoding,omitempty\"`\n\tUtf8Validation          *FeatureSet_Utf8Validation                            `protobuf:\"varint,4,opt,name=utf8_validation,json=utf8Validation,enum=google.protobuf.FeatureSet_Utf8Validation\" json:\"utf8_validation,omitempty\"`\n\tMessageEncoding         *FeatureSet_MessageEncoding                           `protobuf:\"varint,5,opt,name=message_encoding,json=messageEncoding,enum=google.protobuf.FeatureSet_MessageEncoding\" json:\"message_encoding,omitempty\"`\n\tJsonFormat              *FeatureSet_JsonFormat                                `protobuf:\"varint,6,opt,name=json_format,json=jsonFormat,enum=google.protobuf.FeatureSet_JsonFormat\" json:\"json_format,omitempty\"`\n\tEnforceNamingStyle      *FeatureSet_EnforceNamingStyle                        `protobuf:\"varint,7,opt,name=enforce_naming_style,json=enforceNamingStyle,enum=google.protobuf.FeatureSet_EnforceNamingStyle\" json:\"enforce_naming_style,omitempty\"`\n\tDefaultSymbolVisibility *FeatureSet_VisibilityFeature_DefaultSymbolVisibility `protobuf:\"varint,8,opt,name=default_symbol_visibility,json=defaultSymbolVisibility,enum=google.protobuf.FeatureSet_VisibilityFeature_DefaultSymbolVisibility\" json:\"default_symbol_visibility,omitempty\"`\n\textensionFields         protoimpl.ExtensionFields\n\tunknownFields           protoimpl.UnknownFields\n\tsizeCache               protoimpl.SizeCache\n}\n\nfunc (x *FeatureSet) Reset() {\n\t*x = FeatureSet{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[19]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *FeatureSet) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*FeatureSet) ProtoMessage() {}\n\nfunc (x *FeatureSet) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[19]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use FeatureSet.ProtoReflect.Descriptor instead.\nfunc (*FeatureSet) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{19}\n}\n\nfunc (x *FeatureSet) GetFieldPresence() FeatureSet_FieldPresence {\n\tif x != nil && x.FieldPresence != nil {\n\t\treturn *x.FieldPresence\n\t}\n\treturn FeatureSet_FIELD_PRESENCE_UNKNOWN\n}\n\nfunc (x *FeatureSet) GetEnumType() FeatureSet_EnumType {\n\tif x != nil && x.EnumType != nil {\n\t\treturn *x.EnumType\n\t}\n\treturn FeatureSet_ENUM_TYPE_UNKNOWN\n}\n\nfunc (x *FeatureSet) GetRepeatedFieldEncoding() FeatureSet_RepeatedFieldEncoding {\n\tif x != nil && x.RepeatedFieldEncoding != nil {\n\t\treturn *x.RepeatedFieldEncoding\n\t}\n\treturn FeatureSet_REPEATED_FIELD_ENCODING_UNKNOWN\n}\n\nfunc (x *FeatureSet) GetUtf8Validation() FeatureSet_Utf8Validation {\n\tif x != nil && x.Utf8Validation != nil {\n\t\treturn *x.Utf8Validation\n\t}\n\treturn FeatureSet_UTF8_VALIDATION_UNKNOWN\n}\n\nfunc (x *FeatureSet) GetMessageEncoding() FeatureSet_MessageEncoding {\n\tif x != nil && x.MessageEncoding != nil {\n\t\treturn *x.MessageEncoding\n\t}\n\treturn FeatureSet_MESSAGE_ENCODING_UNKNOWN\n}\n\nfunc (x *FeatureSet) GetJsonFormat() FeatureSet_JsonFormat {\n\tif x != nil && x.JsonFormat != nil {\n\t\treturn *x.JsonFormat\n\t}\n\treturn FeatureSet_JSON_FORMAT_UNKNOWN\n}\n\nfunc (x *FeatureSet) GetEnforceNamingStyle() FeatureSet_EnforceNamingStyle {\n\tif x != nil && x.EnforceNamingStyle != nil {\n\t\treturn *x.EnforceNamingStyle\n\t}\n\treturn FeatureSet_ENFORCE_NAMING_STYLE_UNKNOWN\n}\n\nfunc (x *FeatureSet) GetDefaultSymbolVisibility() FeatureSet_VisibilityFeature_DefaultSymbolVisibility {\n\tif x != nil && x.DefaultSymbolVisibility != nil {\n\t\treturn *x.DefaultSymbolVisibility\n\t}\n\treturn FeatureSet_VisibilityFeature_DEFAULT_SYMBOL_VISIBILITY_UNKNOWN\n}\n\n// A compiled specification for the defaults of a set of features.  These\n// messages are generated from FeatureSet extensions and can be used to seed\n// feature resolution. The resolution with this object becomes a simple search\n// for the closest matching edition, followed by proto merges.\ntype FeatureSetDefaults struct {\n\tstate    protoimpl.MessageState                         `protogen:\"open.v1\"`\n\tDefaults []*FeatureSetDefaults_FeatureSetEditionDefault `protobuf:\"bytes,1,rep,name=defaults\" json:\"defaults,omitempty\"`\n\t// The minimum supported edition (inclusive) when this was constructed.\n\t// Editions before this will not have defaults.\n\tMinimumEdition *Edition `protobuf:\"varint,4,opt,name=minimum_edition,json=minimumEdition,enum=google.protobuf.Edition\" json:\"minimum_edition,omitempty\"`\n\t// The maximum known edition (inclusive) when this was constructed. Editions\n\t// after this will not have reliable defaults.\n\tMaximumEdition *Edition `protobuf:\"varint,5,opt,name=maximum_edition,json=maximumEdition,enum=google.protobuf.Edition\" json:\"maximum_edition,omitempty\"`\n\tunknownFields  protoimpl.UnknownFields\n\tsizeCache      protoimpl.SizeCache\n}\n\nfunc (x *FeatureSetDefaults) Reset() {\n\t*x = FeatureSetDefaults{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[20]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *FeatureSetDefaults) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*FeatureSetDefaults) ProtoMessage() {}\n\nfunc (x *FeatureSetDefaults) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[20]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use FeatureSetDefaults.ProtoReflect.Descriptor instead.\nfunc (*FeatureSetDefaults) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{20}\n}\n\nfunc (x *FeatureSetDefaults) GetDefaults() []*FeatureSetDefaults_FeatureSetEditionDefault {\n\tif x != nil {\n\t\treturn x.Defaults\n\t}\n\treturn nil\n}\n\nfunc (x *FeatureSetDefaults) GetMinimumEdition() Edition {\n\tif x != nil && x.MinimumEdition != nil {\n\t\treturn *x.MinimumEdition\n\t}\n\treturn Edition_EDITION_UNKNOWN\n}\n\nfunc (x *FeatureSetDefaults) GetMaximumEdition() Edition {\n\tif x != nil && x.MaximumEdition != nil {\n\t\treturn *x.MaximumEdition\n\t}\n\treturn Edition_EDITION_UNKNOWN\n}\n\n// Encapsulates information about the original source file from which a\n// FileDescriptorProto was generated.\ntype SourceCodeInfo struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// A Location identifies a piece of source code in a .proto file which\n\t// corresponds to a particular definition.  This information is intended\n\t// to be useful to IDEs, code indexers, documentation generators, and similar\n\t// tools.\n\t//\n\t// For example, say we have a file like:\n\t//\n\t//\tmessage Foo {\n\t//\t  optional string foo = 1;\n\t//\t}\n\t//\n\t// Let's look at just the field definition:\n\t//\n\t//\toptional string foo = 1;\n\t//\t^       ^^     ^^  ^  ^^^\n\t//\ta       bc     de  f  ghi\n\t//\n\t// We have the following locations:\n\t//\n\t//\tspan   path               represents\n\t//\t[a,i)  [ 4, 0, 2, 0 ]     The whole field definition.\n\t//\t[a,b)  [ 4, 0, 2, 0, 4 ]  The label (optional).\n\t//\t[c,d)  [ 4, 0, 2, 0, 5 ]  The type (string).\n\t//\t[e,f)  [ 4, 0, 2, 0, 1 ]  The name (foo).\n\t//\t[g,h)  [ 4, 0, 2, 0, 3 ]  The number (1).\n\t//\n\t// Notes:\n\t//   - A location may refer to a repeated field itself (i.e. not to any\n\t//     particular index within it).  This is used whenever a set of elements are\n\t//     logically enclosed in a single code segment.  For example, an entire\n\t//     extend block (possibly containing multiple extension definitions) will\n\t//     have an outer location whose path refers to the \"extensions\" repeated\n\t//     field without an index.\n\t//   - Multiple locations may have the same path.  This happens when a single\n\t//     logical declaration is spread out across multiple places.  The most\n\t//     obvious example is the \"extend\" block again -- there may be multiple\n\t//     extend blocks in the same scope, each of which will have the same path.\n\t//   - A location's span is not always a subset of its parent's span.  For\n\t//     example, the \"extendee\" of an extension declaration appears at the\n\t//     beginning of the \"extend\" block and is shared by all extensions within\n\t//     the block.\n\t//   - Just because a location's span is a subset of some other location's span\n\t//     does not mean that it is a descendant.  For example, a \"group\" defines\n\t//     both a type and a field in a single declaration.  Thus, the locations\n\t//     corresponding to the type and field and their components will overlap.\n\t//   - Code which tries to interpret locations should probably be designed to\n\t//     ignore those that it doesn't understand, as more types of locations could\n\t//     be recorded in the future.\n\tLocation        []*SourceCodeInfo_Location `protobuf:\"bytes,1,rep,name=location\" json:\"location,omitempty\"`\n\textensionFields protoimpl.ExtensionFields\n\tunknownFields   protoimpl.UnknownFields\n\tsizeCache       protoimpl.SizeCache\n}\n\nfunc (x *SourceCodeInfo) Reset() {\n\t*x = SourceCodeInfo{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[21]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *SourceCodeInfo) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*SourceCodeInfo) ProtoMessage() {}\n\nfunc (x *SourceCodeInfo) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[21]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use SourceCodeInfo.ProtoReflect.Descriptor instead.\nfunc (*SourceCodeInfo) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{21}\n}\n\nfunc (x *SourceCodeInfo) GetLocation() []*SourceCodeInfo_Location {\n\tif x != nil {\n\t\treturn x.Location\n\t}\n\treturn nil\n}\n\n// Describes the relationship between generated code and its original source\n// file. A GeneratedCodeInfo message is associated with only one generated\n// source file, but may contain references to different source .proto files.\ntype GeneratedCodeInfo struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// An Annotation connects some span of text in generated code to an element\n\t// of its generating .proto file.\n\tAnnotation    []*GeneratedCodeInfo_Annotation `protobuf:\"bytes,1,rep,name=annotation\" json:\"annotation,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *GeneratedCodeInfo) Reset() {\n\t*x = GeneratedCodeInfo{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[22]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *GeneratedCodeInfo) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*GeneratedCodeInfo) ProtoMessage() {}\n\nfunc (x *GeneratedCodeInfo) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[22]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use GeneratedCodeInfo.ProtoReflect.Descriptor instead.\nfunc (*GeneratedCodeInfo) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{22}\n}\n\nfunc (x *GeneratedCodeInfo) GetAnnotation() []*GeneratedCodeInfo_Annotation {\n\tif x != nil {\n\t\treturn x.Annotation\n\t}\n\treturn nil\n}\n\ntype DescriptorProto_ExtensionRange struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tStart         *int32                 `protobuf:\"varint,1,opt,name=start\" json:\"start,omitempty\"` // Inclusive.\n\tEnd           *int32                 `protobuf:\"varint,2,opt,name=end\" json:\"end,omitempty\"`     // Exclusive.\n\tOptions       *ExtensionRangeOptions `protobuf:\"bytes,3,opt,name=options\" json:\"options,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *DescriptorProto_ExtensionRange) Reset() {\n\t*x = DescriptorProto_ExtensionRange{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[23]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *DescriptorProto_ExtensionRange) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*DescriptorProto_ExtensionRange) ProtoMessage() {}\n\nfunc (x *DescriptorProto_ExtensionRange) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[23]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use DescriptorProto_ExtensionRange.ProtoReflect.Descriptor instead.\nfunc (*DescriptorProto_ExtensionRange) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{2, 0}\n}\n\nfunc (x *DescriptorProto_ExtensionRange) GetStart() int32 {\n\tif x != nil && x.Start != nil {\n\t\treturn *x.Start\n\t}\n\treturn 0\n}\n\nfunc (x *DescriptorProto_ExtensionRange) GetEnd() int32 {\n\tif x != nil && x.End != nil {\n\t\treturn *x.End\n\t}\n\treturn 0\n}\n\nfunc (x *DescriptorProto_ExtensionRange) GetOptions() *ExtensionRangeOptions {\n\tif x != nil {\n\t\treturn x.Options\n\t}\n\treturn nil\n}\n\n// Range of reserved tag numbers. Reserved tag numbers may not be used by\n// fields or extension ranges in the same message. Reserved ranges may\n// not overlap.\ntype DescriptorProto_ReservedRange struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tStart         *int32                 `protobuf:\"varint,1,opt,name=start\" json:\"start,omitempty\"` // Inclusive.\n\tEnd           *int32                 `protobuf:\"varint,2,opt,name=end\" json:\"end,omitempty\"`     // Exclusive.\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *DescriptorProto_ReservedRange) Reset() {\n\t*x = DescriptorProto_ReservedRange{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[24]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *DescriptorProto_ReservedRange) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*DescriptorProto_ReservedRange) ProtoMessage() {}\n\nfunc (x *DescriptorProto_ReservedRange) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[24]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use DescriptorProto_ReservedRange.ProtoReflect.Descriptor instead.\nfunc (*DescriptorProto_ReservedRange) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{2, 1}\n}\n\nfunc (x *DescriptorProto_ReservedRange) GetStart() int32 {\n\tif x != nil && x.Start != nil {\n\t\treturn *x.Start\n\t}\n\treturn 0\n}\n\nfunc (x *DescriptorProto_ReservedRange) GetEnd() int32 {\n\tif x != nil && x.End != nil {\n\t\treturn *x.End\n\t}\n\treturn 0\n}\n\ntype ExtensionRangeOptions_Declaration struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The extension number declared within the extension range.\n\tNumber *int32 `protobuf:\"varint,1,opt,name=number\" json:\"number,omitempty\"`\n\t// The fully-qualified name of the extension field. There must be a leading\n\t// dot in front of the full name.\n\tFullName *string `protobuf:\"bytes,2,opt,name=full_name,json=fullName\" json:\"full_name,omitempty\"`\n\t// The fully-qualified type name of the extension field. Unlike\n\t// Metadata.type, Declaration.type must have a leading dot for messages\n\t// and enums.\n\tType *string `protobuf:\"bytes,3,opt,name=type\" json:\"type,omitempty\"`\n\t// If true, indicates that the number is reserved in the extension range,\n\t// and any extension field with the number will fail to compile. Set this\n\t// when a declared extension field is deleted.\n\tReserved *bool `protobuf:\"varint,5,opt,name=reserved\" json:\"reserved,omitempty\"`\n\t// If true, indicates that the extension must be defined as repeated.\n\t// Otherwise the extension must be defined as optional.\n\tRepeated      *bool `protobuf:\"varint,6,opt,name=repeated\" json:\"repeated,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *ExtensionRangeOptions_Declaration) Reset() {\n\t*x = ExtensionRangeOptions_Declaration{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[25]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *ExtensionRangeOptions_Declaration) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ExtensionRangeOptions_Declaration) ProtoMessage() {}\n\nfunc (x *ExtensionRangeOptions_Declaration) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[25]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ExtensionRangeOptions_Declaration.ProtoReflect.Descriptor instead.\nfunc (*ExtensionRangeOptions_Declaration) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{3, 0}\n}\n\nfunc (x *ExtensionRangeOptions_Declaration) GetNumber() int32 {\n\tif x != nil && x.Number != nil {\n\t\treturn *x.Number\n\t}\n\treturn 0\n}\n\nfunc (x *ExtensionRangeOptions_Declaration) GetFullName() string {\n\tif x != nil && x.FullName != nil {\n\t\treturn *x.FullName\n\t}\n\treturn \"\"\n}\n\nfunc (x *ExtensionRangeOptions_Declaration) GetType() string {\n\tif x != nil && x.Type != nil {\n\t\treturn *x.Type\n\t}\n\treturn \"\"\n}\n\nfunc (x *ExtensionRangeOptions_Declaration) GetReserved() bool {\n\tif x != nil && x.Reserved != nil {\n\t\treturn *x.Reserved\n\t}\n\treturn false\n}\n\nfunc (x *ExtensionRangeOptions_Declaration) GetRepeated() bool {\n\tif x != nil && x.Repeated != nil {\n\t\treturn *x.Repeated\n\t}\n\treturn false\n}\n\n// Range of reserved numeric values. Reserved values may not be used by\n// entries in the same enum. Reserved ranges may not overlap.\n//\n// Note that this is distinct from DescriptorProto.ReservedRange in that it\n// is inclusive such that it can appropriately represent the entire int32\n// domain.\ntype EnumDescriptorProto_EnumReservedRange struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tStart         *int32                 `protobuf:\"varint,1,opt,name=start\" json:\"start,omitempty\"` // Inclusive.\n\tEnd           *int32                 `protobuf:\"varint,2,opt,name=end\" json:\"end,omitempty\"`     // Inclusive.\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *EnumDescriptorProto_EnumReservedRange) Reset() {\n\t*x = EnumDescriptorProto_EnumReservedRange{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[26]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *EnumDescriptorProto_EnumReservedRange) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*EnumDescriptorProto_EnumReservedRange) ProtoMessage() {}\n\nfunc (x *EnumDescriptorProto_EnumReservedRange) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[26]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use EnumDescriptorProto_EnumReservedRange.ProtoReflect.Descriptor instead.\nfunc (*EnumDescriptorProto_EnumReservedRange) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{6, 0}\n}\n\nfunc (x *EnumDescriptorProto_EnumReservedRange) GetStart() int32 {\n\tif x != nil && x.Start != nil {\n\t\treturn *x.Start\n\t}\n\treturn 0\n}\n\nfunc (x *EnumDescriptorProto_EnumReservedRange) GetEnd() int32 {\n\tif x != nil && x.End != nil {\n\t\treturn *x.End\n\t}\n\treturn 0\n}\n\ntype FieldOptions_EditionDefault struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tEdition       *Edition               `protobuf:\"varint,3,opt,name=edition,enum=google.protobuf.Edition\" json:\"edition,omitempty\"`\n\tValue         *string                `protobuf:\"bytes,2,opt,name=value\" json:\"value,omitempty\"` // Textproto value.\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *FieldOptions_EditionDefault) Reset() {\n\t*x = FieldOptions_EditionDefault{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[27]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *FieldOptions_EditionDefault) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*FieldOptions_EditionDefault) ProtoMessage() {}\n\nfunc (x *FieldOptions_EditionDefault) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[27]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use FieldOptions_EditionDefault.ProtoReflect.Descriptor instead.\nfunc (*FieldOptions_EditionDefault) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{12, 0}\n}\n\nfunc (x *FieldOptions_EditionDefault) GetEdition() Edition {\n\tif x != nil && x.Edition != nil {\n\t\treturn *x.Edition\n\t}\n\treturn Edition_EDITION_UNKNOWN\n}\n\nfunc (x *FieldOptions_EditionDefault) GetValue() string {\n\tif x != nil && x.Value != nil {\n\t\treturn *x.Value\n\t}\n\treturn \"\"\n}\n\n// Information about the support window of a feature.\ntype FieldOptions_FeatureSupport struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// The edition that this feature was first available in.  In editions\n\t// earlier than this one, the default assigned to EDITION_LEGACY will be\n\t// used, and proto files will not be able to override it.\n\tEditionIntroduced *Edition `protobuf:\"varint,1,opt,name=edition_introduced,json=editionIntroduced,enum=google.protobuf.Edition\" json:\"edition_introduced,omitempty\"`\n\t// The edition this feature becomes deprecated in.  Using this after this\n\t// edition may trigger warnings.\n\tEditionDeprecated *Edition `protobuf:\"varint,2,opt,name=edition_deprecated,json=editionDeprecated,enum=google.protobuf.Edition\" json:\"edition_deprecated,omitempty\"`\n\t// The deprecation warning text if this feature is used after the edition it\n\t// was marked deprecated in.\n\tDeprecationWarning *string `protobuf:\"bytes,3,opt,name=deprecation_warning,json=deprecationWarning\" json:\"deprecation_warning,omitempty\"`\n\t// The edition this feature is no longer available in.  In editions after\n\t// this one, the last default assigned will be used, and proto files will\n\t// not be able to override it.\n\tEditionRemoved *Edition `protobuf:\"varint,4,opt,name=edition_removed,json=editionRemoved,enum=google.protobuf.Edition\" json:\"edition_removed,omitempty\"`\n\tunknownFields  protoimpl.UnknownFields\n\tsizeCache      protoimpl.SizeCache\n}\n\nfunc (x *FieldOptions_FeatureSupport) Reset() {\n\t*x = FieldOptions_FeatureSupport{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[28]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *FieldOptions_FeatureSupport) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*FieldOptions_FeatureSupport) ProtoMessage() {}\n\nfunc (x *FieldOptions_FeatureSupport) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[28]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use FieldOptions_FeatureSupport.ProtoReflect.Descriptor instead.\nfunc (*FieldOptions_FeatureSupport) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{12, 1}\n}\n\nfunc (x *FieldOptions_FeatureSupport) GetEditionIntroduced() Edition {\n\tif x != nil && x.EditionIntroduced != nil {\n\t\treturn *x.EditionIntroduced\n\t}\n\treturn Edition_EDITION_UNKNOWN\n}\n\nfunc (x *FieldOptions_FeatureSupport) GetEditionDeprecated() Edition {\n\tif x != nil && x.EditionDeprecated != nil {\n\t\treturn *x.EditionDeprecated\n\t}\n\treturn Edition_EDITION_UNKNOWN\n}\n\nfunc (x *FieldOptions_FeatureSupport) GetDeprecationWarning() string {\n\tif x != nil && x.DeprecationWarning != nil {\n\t\treturn *x.DeprecationWarning\n\t}\n\treturn \"\"\n}\n\nfunc (x *FieldOptions_FeatureSupport) GetEditionRemoved() Edition {\n\tif x != nil && x.EditionRemoved != nil {\n\t\treturn *x.EditionRemoved\n\t}\n\treturn Edition_EDITION_UNKNOWN\n}\n\n// The name of the uninterpreted option.  Each string represents a segment in\n// a dot-separated name.  is_extension is true iff a segment represents an\n// extension (denoted with parentheses in options specs in .proto files).\n// E.g.,{ [\"foo\", false], [\"bar.baz\", true], [\"moo\", false] } represents\n// \"foo.(bar.baz).moo\".\ntype UninterpretedOption_NamePart struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tNamePart      *string                `protobuf:\"bytes,1,req,name=name_part,json=namePart\" json:\"name_part,omitempty\"`\n\tIsExtension   *bool                  `protobuf:\"varint,2,req,name=is_extension,json=isExtension\" json:\"is_extension,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *UninterpretedOption_NamePart) Reset() {\n\t*x = UninterpretedOption_NamePart{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[29]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *UninterpretedOption_NamePart) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*UninterpretedOption_NamePart) ProtoMessage() {}\n\nfunc (x *UninterpretedOption_NamePart) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[29]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use UninterpretedOption_NamePart.ProtoReflect.Descriptor instead.\nfunc (*UninterpretedOption_NamePart) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{18, 0}\n}\n\nfunc (x *UninterpretedOption_NamePart) GetNamePart() string {\n\tif x != nil && x.NamePart != nil {\n\t\treturn *x.NamePart\n\t}\n\treturn \"\"\n}\n\nfunc (x *UninterpretedOption_NamePart) GetIsExtension() bool {\n\tif x != nil && x.IsExtension != nil {\n\t\treturn *x.IsExtension\n\t}\n\treturn false\n}\n\ntype FeatureSet_VisibilityFeature struct {\n\tstate         protoimpl.MessageState `protogen:\"open.v1\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *FeatureSet_VisibilityFeature) Reset() {\n\t*x = FeatureSet_VisibilityFeature{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[30]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *FeatureSet_VisibilityFeature) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*FeatureSet_VisibilityFeature) ProtoMessage() {}\n\nfunc (x *FeatureSet_VisibilityFeature) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[30]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use FeatureSet_VisibilityFeature.ProtoReflect.Descriptor instead.\nfunc (*FeatureSet_VisibilityFeature) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{19, 0}\n}\n\n// A map from every known edition with a unique set of defaults to its\n// defaults. Not all editions may be contained here.  For a given edition,\n// the defaults at the closest matching edition ordered at or before it should\n// be used.  This field must be in strict ascending order by edition.\ntype FeatureSetDefaults_FeatureSetEditionDefault struct {\n\tstate   protoimpl.MessageState `protogen:\"open.v1\"`\n\tEdition *Edition               `protobuf:\"varint,3,opt,name=edition,enum=google.protobuf.Edition\" json:\"edition,omitempty\"`\n\t// Defaults of features that can be overridden in this edition.\n\tOverridableFeatures *FeatureSet `protobuf:\"bytes,4,opt,name=overridable_features,json=overridableFeatures\" json:\"overridable_features,omitempty\"`\n\t// Defaults of features that can't be overridden in this edition.\n\tFixedFeatures *FeatureSet `protobuf:\"bytes,5,opt,name=fixed_features,json=fixedFeatures\" json:\"fixed_features,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *FeatureSetDefaults_FeatureSetEditionDefault) Reset() {\n\t*x = FeatureSetDefaults_FeatureSetEditionDefault{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[31]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *FeatureSetDefaults_FeatureSetEditionDefault) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*FeatureSetDefaults_FeatureSetEditionDefault) ProtoMessage() {}\n\nfunc (x *FeatureSetDefaults_FeatureSetEditionDefault) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[31]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use FeatureSetDefaults_FeatureSetEditionDefault.ProtoReflect.Descriptor instead.\nfunc (*FeatureSetDefaults_FeatureSetEditionDefault) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{20, 0}\n}\n\nfunc (x *FeatureSetDefaults_FeatureSetEditionDefault) GetEdition() Edition {\n\tif x != nil && x.Edition != nil {\n\t\treturn *x.Edition\n\t}\n\treturn Edition_EDITION_UNKNOWN\n}\n\nfunc (x *FeatureSetDefaults_FeatureSetEditionDefault) GetOverridableFeatures() *FeatureSet {\n\tif x != nil {\n\t\treturn x.OverridableFeatures\n\t}\n\treturn nil\n}\n\nfunc (x *FeatureSetDefaults_FeatureSetEditionDefault) GetFixedFeatures() *FeatureSet {\n\tif x != nil {\n\t\treturn x.FixedFeatures\n\t}\n\treturn nil\n}\n\ntype SourceCodeInfo_Location struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Identifies which part of the FileDescriptorProto was defined at this\n\t// location.\n\t//\n\t// Each element is a field number or an index.  They form a path from\n\t// the root FileDescriptorProto to the place where the definition appears.\n\t// For example, this path:\n\t//\n\t//\t[ 4, 3, 2, 7, 1 ]\n\t//\n\t// refers to:\n\t//\n\t//\tfile.message_type(3)  // 4, 3\n\t//\t    .field(7)         // 2, 7\n\t//\t    .name()           // 1\n\t//\n\t// This is because FileDescriptorProto.message_type has field number 4:\n\t//\n\t//\trepeated DescriptorProto message_type = 4;\n\t//\n\t// and DescriptorProto.field has field number 2:\n\t//\n\t//\trepeated FieldDescriptorProto field = 2;\n\t//\n\t// and FieldDescriptorProto.name has field number 1:\n\t//\n\t//\toptional string name = 1;\n\t//\n\t// Thus, the above path gives the location of a field name.  If we removed\n\t// the last element:\n\t//\n\t//\t[ 4, 3, 2, 7 ]\n\t//\n\t// this path refers to the whole field declaration (from the beginning\n\t// of the label to the terminating semicolon).\n\tPath []int32 `protobuf:\"varint,1,rep,packed,name=path\" json:\"path,omitempty\"`\n\t// Always has exactly three or four elements: start line, start column,\n\t// end line (optional, otherwise assumed same as start line), end column.\n\t// These are packed into a single field for efficiency.  Note that line\n\t// and column numbers are zero-based -- typically you will want to add\n\t// 1 to each before displaying to a user.\n\tSpan []int32 `protobuf:\"varint,2,rep,packed,name=span\" json:\"span,omitempty\"`\n\t// If this SourceCodeInfo represents a complete declaration, these are any\n\t// comments appearing before and after the declaration which appear to be\n\t// attached to the declaration.\n\t//\n\t// A series of line comments appearing on consecutive lines, with no other\n\t// tokens appearing on those lines, will be treated as a single comment.\n\t//\n\t// leading_detached_comments will keep paragraphs of comments that appear\n\t// before (but not connected to) the current element. Each paragraph,\n\t// separated by empty lines, will be one comment element in the repeated\n\t// field.\n\t//\n\t// Only the comment content is provided; comment markers (e.g. //) are\n\t// stripped out.  For block comments, leading whitespace and an asterisk\n\t// will be stripped from the beginning of each line other than the first.\n\t// Newlines are included in the output.\n\t//\n\t// Examples:\n\t//\n\t//\toptional int32 foo = 1;  // Comment attached to foo.\n\t//\t// Comment attached to bar.\n\t//\toptional int32 bar = 2;\n\t//\n\t//\toptional string baz = 3;\n\t//\t// Comment attached to baz.\n\t//\t// Another line attached to baz.\n\t//\n\t//\t// Comment attached to moo.\n\t//\t//\n\t//\t// Another line attached to moo.\n\t//\toptional double moo = 4;\n\t//\n\t//\t// Detached comment for corge. This is not leading or trailing comments\n\t//\t// to moo or corge because there are blank lines separating it from\n\t//\t// both.\n\t//\n\t//\t// Detached comment for corge paragraph 2.\n\t//\n\t//\toptional string corge = 5;\n\t//\t/* Block comment attached\n\t//\t * to corge.  Leading asterisks\n\t//\t * will be removed. */\n\t//\t/* Block comment attached to\n\t//\t * grault. */\n\t//\toptional int32 grault = 6;\n\t//\n\t//\t// ignored detached comments.\n\tLeadingComments         *string  `protobuf:\"bytes,3,opt,name=leading_comments,json=leadingComments\" json:\"leading_comments,omitempty\"`\n\tTrailingComments        *string  `protobuf:\"bytes,4,opt,name=trailing_comments,json=trailingComments\" json:\"trailing_comments,omitempty\"`\n\tLeadingDetachedComments []string `protobuf:\"bytes,6,rep,name=leading_detached_comments,json=leadingDetachedComments\" json:\"leading_detached_comments,omitempty\"`\n\tunknownFields           protoimpl.UnknownFields\n\tsizeCache               protoimpl.SizeCache\n}\n\nfunc (x *SourceCodeInfo_Location) Reset() {\n\t*x = SourceCodeInfo_Location{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[32]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *SourceCodeInfo_Location) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*SourceCodeInfo_Location) ProtoMessage() {}\n\nfunc (x *SourceCodeInfo_Location) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[32]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use SourceCodeInfo_Location.ProtoReflect.Descriptor instead.\nfunc (*SourceCodeInfo_Location) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{21, 0}\n}\n\nfunc (x *SourceCodeInfo_Location) GetPath() []int32 {\n\tif x != nil {\n\t\treturn x.Path\n\t}\n\treturn nil\n}\n\nfunc (x *SourceCodeInfo_Location) GetSpan() []int32 {\n\tif x != nil {\n\t\treturn x.Span\n\t}\n\treturn nil\n}\n\nfunc (x *SourceCodeInfo_Location) GetLeadingComments() string {\n\tif x != nil && x.LeadingComments != nil {\n\t\treturn *x.LeadingComments\n\t}\n\treturn \"\"\n}\n\nfunc (x *SourceCodeInfo_Location) GetTrailingComments() string {\n\tif x != nil && x.TrailingComments != nil {\n\t\treturn *x.TrailingComments\n\t}\n\treturn \"\"\n}\n\nfunc (x *SourceCodeInfo_Location) GetLeadingDetachedComments() []string {\n\tif x != nil {\n\t\treturn x.LeadingDetachedComments\n\t}\n\treturn nil\n}\n\ntype GeneratedCodeInfo_Annotation struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Identifies the element in the original source .proto file. This field\n\t// is formatted the same as SourceCodeInfo.Location.path.\n\tPath []int32 `protobuf:\"varint,1,rep,packed,name=path\" json:\"path,omitempty\"`\n\t// Identifies the filesystem path to the original source .proto.\n\tSourceFile *string `protobuf:\"bytes,2,opt,name=source_file,json=sourceFile\" json:\"source_file,omitempty\"`\n\t// Identifies the starting offset in bytes in the generated code\n\t// that relates to the identified object.\n\tBegin *int32 `protobuf:\"varint,3,opt,name=begin\" json:\"begin,omitempty\"`\n\t// Identifies the ending offset in bytes in the generated code that\n\t// relates to the identified object. The end offset should be one past\n\t// the last relevant byte (so the length of the text = end - begin).\n\tEnd           *int32                                 `protobuf:\"varint,4,opt,name=end\" json:\"end,omitempty\"`\n\tSemantic      *GeneratedCodeInfo_Annotation_Semantic `protobuf:\"varint,5,opt,name=semantic,enum=google.protobuf.GeneratedCodeInfo_Annotation_Semantic\" json:\"semantic,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\nfunc (x *GeneratedCodeInfo_Annotation) Reset() {\n\t*x = GeneratedCodeInfo_Annotation{}\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[33]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *GeneratedCodeInfo_Annotation) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*GeneratedCodeInfo_Annotation) ProtoMessage() {}\n\nfunc (x *GeneratedCodeInfo_Annotation) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[33]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use GeneratedCodeInfo_Annotation.ProtoReflect.Descriptor instead.\nfunc (*GeneratedCodeInfo_Annotation) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{22, 0}\n}\n\nfunc (x *GeneratedCodeInfo_Annotation) GetPath() []int32 {\n\tif x != nil {\n\t\treturn x.Path\n\t}\n\treturn nil\n}\n\nfunc (x *GeneratedCodeInfo_Annotation) GetSourceFile() string {\n\tif x != nil && x.SourceFile != nil {\n\t\treturn *x.SourceFile\n\t}\n\treturn \"\"\n}\n\nfunc (x *GeneratedCodeInfo_Annotation) GetBegin() int32 {\n\tif x != nil && x.Begin != nil {\n\t\treturn *x.Begin\n\t}\n\treturn 0\n}\n\nfunc (x *GeneratedCodeInfo_Annotation) GetEnd() int32 {\n\tif x != nil && x.End != nil {\n\t\treturn *x.End\n\t}\n\treturn 0\n}\n\nfunc (x *GeneratedCodeInfo_Annotation) GetSemantic() GeneratedCodeInfo_Annotation_Semantic {\n\tif x != nil && x.Semantic != nil {\n\t\treturn *x.Semantic\n\t}\n\treturn GeneratedCodeInfo_Annotation_NONE\n}\n\nvar File_google_protobuf_descriptor_proto protoreflect.FileDescriptor\n\nconst file_google_protobuf_descriptor_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\" google/protobuf/descriptor.proto\\x12\\x0fgoogle.protobuf\\\"[\\n\" +\n\t\"\\x11FileDescriptorSet\\x128\\n\" +\n\t\"\\x04file\\x18\\x01 \\x03(\\v2$.google.protobuf.FileDescriptorProtoR\\x04file*\\f\\b\\x80\\xec\\xca\\xff\\x01\\x10\\x81\\xec\\xca\\xff\\x01\\\"\\xc5\\x05\\n\" +\n\t\"\\x13FileDescriptorProto\\x12\\x12\\n\" +\n\t\"\\x04name\\x18\\x01 \\x01(\\tR\\x04name\\x12\\x18\\n\" +\n\t\"\\apackage\\x18\\x02 \\x01(\\tR\\apackage\\x12\\x1e\\n\" +\n\t\"\\n\" +\n\t\"dependency\\x18\\x03 \\x03(\\tR\\n\" +\n\t\"dependency\\x12+\\n\" +\n\t\"\\x11public_dependency\\x18\\n\" +\n\t\" \\x03(\\x05R\\x10publicDependency\\x12'\\n\" +\n\t\"\\x0fweak_dependency\\x18\\v \\x03(\\x05R\\x0eweakDependency\\x12+\\n\" +\n\t\"\\x11option_dependency\\x18\\x0f \\x03(\\tR\\x10optionDependency\\x12C\\n\" +\n\t\"\\fmessage_type\\x18\\x04 \\x03(\\v2 .google.protobuf.DescriptorProtoR\\vmessageType\\x12A\\n\" +\n\t\"\\tenum_type\\x18\\x05 \\x03(\\v2$.google.protobuf.EnumDescriptorProtoR\\benumType\\x12A\\n\" +\n\t\"\\aservice\\x18\\x06 \\x03(\\v2'.google.protobuf.ServiceDescriptorProtoR\\aservice\\x12C\\n\" +\n\t\"\\textension\\x18\\a \\x03(\\v2%.google.protobuf.FieldDescriptorProtoR\\textension\\x126\\n\" +\n\t\"\\aoptions\\x18\\b \\x01(\\v2\\x1c.google.protobuf.FileOptionsR\\aoptions\\x12I\\n\" +\n\t\"\\x10source_code_info\\x18\\t \\x01(\\v2\\x1f.google.protobuf.SourceCodeInfoR\\x0esourceCodeInfo\\x12\\x16\\n\" +\n\t\"\\x06syntax\\x18\\f \\x01(\\tR\\x06syntax\\x122\\n\" +\n\t\"\\aedition\\x18\\x0e \\x01(\\x0e2\\x18.google.protobuf.EditionR\\aedition\\\"\\xfc\\x06\\n\" +\n\t\"\\x0fDescriptorProto\\x12\\x12\\n\" +\n\t\"\\x04name\\x18\\x01 \\x01(\\tR\\x04name\\x12;\\n\" +\n\t\"\\x05field\\x18\\x02 \\x03(\\v2%.google.protobuf.FieldDescriptorProtoR\\x05field\\x12C\\n\" +\n\t\"\\textension\\x18\\x06 \\x03(\\v2%.google.protobuf.FieldDescriptorProtoR\\textension\\x12A\\n\" +\n\t\"\\vnested_type\\x18\\x03 \\x03(\\v2 .google.protobuf.DescriptorProtoR\\n\" +\n\t\"nestedType\\x12A\\n\" +\n\t\"\\tenum_type\\x18\\x04 \\x03(\\v2$.google.protobuf.EnumDescriptorProtoR\\benumType\\x12X\\n\" +\n\t\"\\x0fextension_range\\x18\\x05 \\x03(\\v2/.google.protobuf.DescriptorProto.ExtensionRangeR\\x0eextensionRange\\x12D\\n\" +\n\t\"\\n\" +\n\t\"oneof_decl\\x18\\b \\x03(\\v2%.google.protobuf.OneofDescriptorProtoR\\toneofDecl\\x129\\n\" +\n\t\"\\aoptions\\x18\\a \\x01(\\v2\\x1f.google.protobuf.MessageOptionsR\\aoptions\\x12U\\n\" +\n\t\"\\x0ereserved_range\\x18\\t \\x03(\\v2..google.protobuf.DescriptorProto.ReservedRangeR\\rreservedRange\\x12#\\n\" +\n\t\"\\rreserved_name\\x18\\n\" +\n\t\" \\x03(\\tR\\freservedName\\x12A\\n\" +\n\t\"\\n\" +\n\t\"visibility\\x18\\v \\x01(\\x0e2!.google.protobuf.SymbolVisibilityR\\n\" +\n\t\"visibility\\x1az\\n\" +\n\t\"\\x0eExtensionRange\\x12\\x14\\n\" +\n\t\"\\x05start\\x18\\x01 \\x01(\\x05R\\x05start\\x12\\x10\\n\" +\n\t\"\\x03end\\x18\\x02 \\x01(\\x05R\\x03end\\x12@\\n\" +\n\t\"\\aoptions\\x18\\x03 \\x01(\\v2&.google.protobuf.ExtensionRangeOptionsR\\aoptions\\x1a7\\n\" +\n\t\"\\rReservedRange\\x12\\x14\\n\" +\n\t\"\\x05start\\x18\\x01 \\x01(\\x05R\\x05start\\x12\\x10\\n\" +\n\t\"\\x03end\\x18\\x02 \\x01(\\x05R\\x03end\\\"\\xcc\\x04\\n\" +\n\t\"\\x15ExtensionRangeOptions\\x12X\\n\" +\n\t\"\\x14uninterpreted_option\\x18\\xe7\\a \\x03(\\v2$.google.protobuf.UninterpretedOptionR\\x13uninterpretedOption\\x12Y\\n\" +\n\t\"\\vdeclaration\\x18\\x02 \\x03(\\v22.google.protobuf.ExtensionRangeOptions.DeclarationB\\x03\\x88\\x01\\x02R\\vdeclaration\\x127\\n\" +\n\t\"\\bfeatures\\x182 \\x01(\\v2\\x1b.google.protobuf.FeatureSetR\\bfeatures\\x12m\\n\" +\n\t\"\\fverification\\x18\\x03 \\x01(\\x0e28.google.protobuf.ExtensionRangeOptions.VerificationState:\\n\" +\n\t\"UNVERIFIEDB\\x03\\x88\\x01\\x02R\\fverification\\x1a\\x94\\x01\\n\" +\n\t\"\\vDeclaration\\x12\\x16\\n\" +\n\t\"\\x06number\\x18\\x01 \\x01(\\x05R\\x06number\\x12\\x1b\\n\" +\n\t\"\\tfull_name\\x18\\x02 \\x01(\\tR\\bfullName\\x12\\x12\\n\" +\n\t\"\\x04type\\x18\\x03 \\x01(\\tR\\x04type\\x12\\x1a\\n\" +\n\t\"\\breserved\\x18\\x05 \\x01(\\bR\\breserved\\x12\\x1a\\n\" +\n\t\"\\brepeated\\x18\\x06 \\x01(\\bR\\brepeatedJ\\x04\\b\\x04\\x10\\x05\\\"4\\n\" +\n\t\"\\x11VerificationState\\x12\\x0f\\n\" +\n\t\"\\vDECLARATION\\x10\\x00\\x12\\x0e\\n\" +\n\t\"\\n\" +\n\t\"UNVERIFIED\\x10\\x01*\\t\\b\\xe8\\a\\x10\\x80\\x80\\x80\\x80\\x02\\\"\\xc1\\x06\\n\" +\n\t\"\\x14FieldDescriptorProto\\x12\\x12\\n\" +\n\t\"\\x04name\\x18\\x01 \\x01(\\tR\\x04name\\x12\\x16\\n\" +\n\t\"\\x06number\\x18\\x03 \\x01(\\x05R\\x06number\\x12A\\n\" +\n\t\"\\x05label\\x18\\x04 \\x01(\\x0e2+.google.protobuf.FieldDescriptorProto.LabelR\\x05label\\x12>\\n\" +\n\t\"\\x04type\\x18\\x05 \\x01(\\x0e2*.google.protobuf.FieldDescriptorProto.TypeR\\x04type\\x12\\x1b\\n\" +\n\t\"\\ttype_name\\x18\\x06 \\x01(\\tR\\btypeName\\x12\\x1a\\n\" +\n\t\"\\bextendee\\x18\\x02 \\x01(\\tR\\bextendee\\x12#\\n\" +\n\t\"\\rdefault_value\\x18\\a \\x01(\\tR\\fdefaultValue\\x12\\x1f\\n\" +\n\t\"\\voneof_index\\x18\\t \\x01(\\x05R\\n\" +\n\t\"oneofIndex\\x12\\x1b\\n\" +\n\t\"\\tjson_name\\x18\\n\" +\n\t\" \\x01(\\tR\\bjsonName\\x127\\n\" +\n\t\"\\aoptions\\x18\\b \\x01(\\v2\\x1d.google.protobuf.FieldOptionsR\\aoptions\\x12'\\n\" +\n\t\"\\x0fproto3_optional\\x18\\x11 \\x01(\\bR\\x0eproto3Optional\\\"\\xb6\\x02\\n\" +\n\t\"\\x04Type\\x12\\x0f\\n\" +\n\t\"\\vTYPE_DOUBLE\\x10\\x01\\x12\\x0e\\n\" +\n\t\"\\n\" +\n\t\"TYPE_FLOAT\\x10\\x02\\x12\\x0e\\n\" +\n\t\"\\n\" +\n\t\"TYPE_INT64\\x10\\x03\\x12\\x0f\\n\" +\n\t\"\\vTYPE_UINT64\\x10\\x04\\x12\\x0e\\n\" +\n\t\"\\n\" +\n\t\"TYPE_INT32\\x10\\x05\\x12\\x10\\n\" +\n\t\"\\fTYPE_FIXED64\\x10\\x06\\x12\\x10\\n\" +\n\t\"\\fTYPE_FIXED32\\x10\\a\\x12\\r\\n\" +\n\t\"\\tTYPE_BOOL\\x10\\b\\x12\\x0f\\n\" +\n\t\"\\vTYPE_STRING\\x10\\t\\x12\\x0e\\n\" +\n\t\"\\n\" +\n\t\"TYPE_GROUP\\x10\\n\" +\n\t\"\\x12\\x10\\n\" +\n\t\"\\fTYPE_MESSAGE\\x10\\v\\x12\\x0e\\n\" +\n\t\"\\n\" +\n\t\"TYPE_BYTES\\x10\\f\\x12\\x0f\\n\" +\n\t\"\\vTYPE_UINT32\\x10\\r\\x12\\r\\n\" +\n\t\"\\tTYPE_ENUM\\x10\\x0e\\x12\\x11\\n\" +\n\t\"\\rTYPE_SFIXED32\\x10\\x0f\\x12\\x11\\n\" +\n\t\"\\rTYPE_SFIXED64\\x10\\x10\\x12\\x0f\\n\" +\n\t\"\\vTYPE_SINT32\\x10\\x11\\x12\\x0f\\n\" +\n\t\"\\vTYPE_SINT64\\x10\\x12\\\"C\\n\" +\n\t\"\\x05Label\\x12\\x12\\n\" +\n\t\"\\x0eLABEL_OPTIONAL\\x10\\x01\\x12\\x12\\n\" +\n\t\"\\x0eLABEL_REPEATED\\x10\\x03\\x12\\x12\\n\" +\n\t\"\\x0eLABEL_REQUIRED\\x10\\x02\\\"c\\n\" +\n\t\"\\x14OneofDescriptorProto\\x12\\x12\\n\" +\n\t\"\\x04name\\x18\\x01 \\x01(\\tR\\x04name\\x127\\n\" +\n\t\"\\aoptions\\x18\\x02 \\x01(\\v2\\x1d.google.protobuf.OneofOptionsR\\aoptions\\\"\\xa6\\x03\\n\" +\n\t\"\\x13EnumDescriptorProto\\x12\\x12\\n\" +\n\t\"\\x04name\\x18\\x01 \\x01(\\tR\\x04name\\x12?\\n\" +\n\t\"\\x05value\\x18\\x02 \\x03(\\v2).google.protobuf.EnumValueDescriptorProtoR\\x05value\\x126\\n\" +\n\t\"\\aoptions\\x18\\x03 \\x01(\\v2\\x1c.google.protobuf.EnumOptionsR\\aoptions\\x12]\\n\" +\n\t\"\\x0ereserved_range\\x18\\x04 \\x03(\\v26.google.protobuf.EnumDescriptorProto.EnumReservedRangeR\\rreservedRange\\x12#\\n\" +\n\t\"\\rreserved_name\\x18\\x05 \\x03(\\tR\\freservedName\\x12A\\n\" +\n\t\"\\n\" +\n\t\"visibility\\x18\\x06 \\x01(\\x0e2!.google.protobuf.SymbolVisibilityR\\n\" +\n\t\"visibility\\x1a;\\n\" +\n\t\"\\x11EnumReservedRange\\x12\\x14\\n\" +\n\t\"\\x05start\\x18\\x01 \\x01(\\x05R\\x05start\\x12\\x10\\n\" +\n\t\"\\x03end\\x18\\x02 \\x01(\\x05R\\x03end\\\"\\x83\\x01\\n\" +\n\t\"\\x18EnumValueDescriptorProto\\x12\\x12\\n\" +\n\t\"\\x04name\\x18\\x01 \\x01(\\tR\\x04name\\x12\\x16\\n\" +\n\t\"\\x06number\\x18\\x02 \\x01(\\x05R\\x06number\\x12;\\n\" +\n\t\"\\aoptions\\x18\\x03 \\x01(\\v2!.google.protobuf.EnumValueOptionsR\\aoptions\\\"\\xa7\\x01\\n\" +\n\t\"\\x16ServiceDescriptorProto\\x12\\x12\\n\" +\n\t\"\\x04name\\x18\\x01 \\x01(\\tR\\x04name\\x12>\\n\" +\n\t\"\\x06method\\x18\\x02 \\x03(\\v2&.google.protobuf.MethodDescriptorProtoR\\x06method\\x129\\n\" +\n\t\"\\aoptions\\x18\\x03 \\x01(\\v2\\x1f.google.protobuf.ServiceOptionsR\\aoptions\\\"\\x89\\x02\\n\" +\n\t\"\\x15MethodDescriptorProto\\x12\\x12\\n\" +\n\t\"\\x04name\\x18\\x01 \\x01(\\tR\\x04name\\x12\\x1d\\n\" +\n\t\"\\n\" +\n\t\"input_type\\x18\\x02 \\x01(\\tR\\tinputType\\x12\\x1f\\n\" +\n\t\"\\voutput_type\\x18\\x03 \\x01(\\tR\\n\" +\n\t\"outputType\\x128\\n\" +\n\t\"\\aoptions\\x18\\x04 \\x01(\\v2\\x1e.google.protobuf.MethodOptionsR\\aoptions\\x120\\n\" +\n\t\"\\x10client_streaming\\x18\\x05 \\x01(\\b:\\x05falseR\\x0fclientStreaming\\x120\\n\" +\n\t\"\\x10server_streaming\\x18\\x06 \\x01(\\b:\\x05falseR\\x0fserverStreaming\\\"\\xad\\t\\n\" +\n\t\"\\vFileOptions\\x12!\\n\" +\n\t\"\\fjava_package\\x18\\x01 \\x01(\\tR\\vjavaPackage\\x120\\n\" +\n\t\"\\x14java_outer_classname\\x18\\b \\x01(\\tR\\x12javaOuterClassname\\x125\\n\" +\n\t\"\\x13java_multiple_files\\x18\\n\" +\n\t\" \\x01(\\b:\\x05falseR\\x11javaMultipleFiles\\x12D\\n\" +\n\t\"\\x1djava_generate_equals_and_hash\\x18\\x14 \\x01(\\bB\\x02\\x18\\x01R\\x19javaGenerateEqualsAndHash\\x12:\\n\" +\n\t\"\\x16java_string_check_utf8\\x18\\x1b \\x01(\\b:\\x05falseR\\x13javaStringCheckUtf8\\x12S\\n\" +\n\t\"\\foptimize_for\\x18\\t \\x01(\\x0e2).google.protobuf.FileOptions.OptimizeMode:\\x05SPEEDR\\voptimizeFor\\x12\\x1d\\n\" +\n\t\"\\n\" +\n\t\"go_package\\x18\\v \\x01(\\tR\\tgoPackage\\x125\\n\" +\n\t\"\\x13cc_generic_services\\x18\\x10 \\x01(\\b:\\x05falseR\\x11ccGenericServices\\x129\\n\" +\n\t\"\\x15java_generic_services\\x18\\x11 \\x01(\\b:\\x05falseR\\x13javaGenericServices\\x125\\n\" +\n\t\"\\x13py_generic_services\\x18\\x12 \\x01(\\b:\\x05falseR\\x11pyGenericServices\\x12%\\n\" +\n\t\"\\n\" +\n\t\"deprecated\\x18\\x17 \\x01(\\b:\\x05falseR\\n\" +\n\t\"deprecated\\x12.\\n\" +\n\t\"\\x10cc_enable_arenas\\x18\\x1f \\x01(\\b:\\x04trueR\\x0eccEnableArenas\\x12*\\n\" +\n\t\"\\x11objc_class_prefix\\x18$ \\x01(\\tR\\x0fobjcClassPrefix\\x12)\\n\" +\n\t\"\\x10csharp_namespace\\x18% \\x01(\\tR\\x0fcsharpNamespace\\x12!\\n\" +\n\t\"\\fswift_prefix\\x18' \\x01(\\tR\\vswiftPrefix\\x12(\\n\" +\n\t\"\\x10php_class_prefix\\x18( \\x01(\\tR\\x0ephpClassPrefix\\x12#\\n\" +\n\t\"\\rphp_namespace\\x18) \\x01(\\tR\\fphpNamespace\\x124\\n\" +\n\t\"\\x16php_metadata_namespace\\x18, \\x01(\\tR\\x14phpMetadataNamespace\\x12!\\n\" +\n\t\"\\fruby_package\\x18- \\x01(\\tR\\vrubyPackage\\x127\\n\" +\n\t\"\\bfeatures\\x182 \\x01(\\v2\\x1b.google.protobuf.FeatureSetR\\bfeatures\\x12X\\n\" +\n\t\"\\x14uninterpreted_option\\x18\\xe7\\a \\x03(\\v2$.google.protobuf.UninterpretedOptionR\\x13uninterpretedOption\\\":\\n\" +\n\t\"\\fOptimizeMode\\x12\\t\\n\" +\n\t\"\\x05SPEED\\x10\\x01\\x12\\r\\n\" +\n\t\"\\tCODE_SIZE\\x10\\x02\\x12\\x10\\n\" +\n\t\"\\fLITE_RUNTIME\\x10\\x03*\\t\\b\\xe8\\a\\x10\\x80\\x80\\x80\\x80\\x02J\\x04\\b*\\x10+J\\x04\\b&\\x10'R\\x14php_generic_services\\\"\\xf4\\x03\\n\" +\n\t\"\\x0eMessageOptions\\x12<\\n\" +\n\t\"\\x17message_set_wire_format\\x18\\x01 \\x01(\\b:\\x05falseR\\x14messageSetWireFormat\\x12L\\n\" +\n\t\"\\x1fno_standard_descriptor_accessor\\x18\\x02 \\x01(\\b:\\x05falseR\\x1cnoStandardDescriptorAccessor\\x12%\\n\" +\n\t\"\\n\" +\n\t\"deprecated\\x18\\x03 \\x01(\\b:\\x05falseR\\n\" +\n\t\"deprecated\\x12\\x1b\\n\" +\n\t\"\\tmap_entry\\x18\\a \\x01(\\bR\\bmapEntry\\x12V\\n\" +\n\t\"&deprecated_legacy_json_field_conflicts\\x18\\v \\x01(\\bB\\x02\\x18\\x01R\\\"deprecatedLegacyJsonFieldConflicts\\x127\\n\" +\n\t\"\\bfeatures\\x18\\f \\x01(\\v2\\x1b.google.protobuf.FeatureSetR\\bfeatures\\x12X\\n\" +\n\t\"\\x14uninterpreted_option\\x18\\xe7\\a \\x03(\\v2$.google.protobuf.UninterpretedOptionR\\x13uninterpretedOption*\\t\\b\\xe8\\a\\x10\\x80\\x80\\x80\\x80\\x02J\\x04\\b\\x04\\x10\\x05J\\x04\\b\\x05\\x10\\x06J\\x04\\b\\x06\\x10\\aJ\\x04\\b\\b\\x10\\tJ\\x04\\b\\t\\x10\\n\" +\n\t\"\\\"\\xa1\\r\\n\" +\n\t\"\\fFieldOptions\\x12A\\n\" +\n\t\"\\x05ctype\\x18\\x01 \\x01(\\x0e2#.google.protobuf.FieldOptions.CType:\\x06STRINGR\\x05ctype\\x12\\x16\\n\" +\n\t\"\\x06packed\\x18\\x02 \\x01(\\bR\\x06packed\\x12G\\n\" +\n\t\"\\x06jstype\\x18\\x06 \\x01(\\x0e2$.google.protobuf.FieldOptions.JSType:\\tJS_NORMALR\\x06jstype\\x12\\x19\\n\" +\n\t\"\\x04lazy\\x18\\x05 \\x01(\\b:\\x05falseR\\x04lazy\\x12.\\n\" +\n\t\"\\x0funverified_lazy\\x18\\x0f \\x01(\\b:\\x05falseR\\x0eunverifiedLazy\\x12%\\n\" +\n\t\"\\n\" +\n\t\"deprecated\\x18\\x03 \\x01(\\b:\\x05falseR\\n\" +\n\t\"deprecated\\x12\\x1d\\n\" +\n\t\"\\x04weak\\x18\\n\" +\n\t\" \\x01(\\b:\\x05falseB\\x02\\x18\\x01R\\x04weak\\x12(\\n\" +\n\t\"\\fdebug_redact\\x18\\x10 \\x01(\\b:\\x05falseR\\vdebugRedact\\x12K\\n\" +\n\t\"\\tretention\\x18\\x11 \\x01(\\x0e2-.google.protobuf.FieldOptions.OptionRetentionR\\tretention\\x12H\\n\" +\n\t\"\\atargets\\x18\\x13 \\x03(\\x0e2..google.protobuf.FieldOptions.OptionTargetTypeR\\atargets\\x12W\\n\" +\n\t\"\\x10edition_defaults\\x18\\x14 \\x03(\\v2,.google.protobuf.FieldOptions.EditionDefaultR\\x0feditionDefaults\\x127\\n\" +\n\t\"\\bfeatures\\x18\\x15 \\x01(\\v2\\x1b.google.protobuf.FeatureSetR\\bfeatures\\x12U\\n\" +\n\t\"\\x0ffeature_support\\x18\\x16 \\x01(\\v2,.google.protobuf.FieldOptions.FeatureSupportR\\x0efeatureSupport\\x12X\\n\" +\n\t\"\\x14uninterpreted_option\\x18\\xe7\\a \\x03(\\v2$.google.protobuf.UninterpretedOptionR\\x13uninterpretedOption\\x1aZ\\n\" +\n\t\"\\x0eEditionDefault\\x122\\n\" +\n\t\"\\aedition\\x18\\x03 \\x01(\\x0e2\\x18.google.protobuf.EditionR\\aedition\\x12\\x14\\n\" +\n\t\"\\x05value\\x18\\x02 \\x01(\\tR\\x05value\\x1a\\x96\\x02\\n\" +\n\t\"\\x0eFeatureSupport\\x12G\\n\" +\n\t\"\\x12edition_introduced\\x18\\x01 \\x01(\\x0e2\\x18.google.protobuf.EditionR\\x11editionIntroduced\\x12G\\n\" +\n\t\"\\x12edition_deprecated\\x18\\x02 \\x01(\\x0e2\\x18.google.protobuf.EditionR\\x11editionDeprecated\\x12/\\n\" +\n\t\"\\x13deprecation_warning\\x18\\x03 \\x01(\\tR\\x12deprecationWarning\\x12A\\n\" +\n\t\"\\x0fedition_removed\\x18\\x04 \\x01(\\x0e2\\x18.google.protobuf.EditionR\\x0eeditionRemoved\\\"/\\n\" +\n\t\"\\x05CType\\x12\\n\" +\n\t\"\\n\" +\n\t\"\\x06STRING\\x10\\x00\\x12\\b\\n\" +\n\t\"\\x04CORD\\x10\\x01\\x12\\x10\\n\" +\n\t\"\\fSTRING_PIECE\\x10\\x02\\\"5\\n\" +\n\t\"\\x06JSType\\x12\\r\\n\" +\n\t\"\\tJS_NORMAL\\x10\\x00\\x12\\r\\n\" +\n\t\"\\tJS_STRING\\x10\\x01\\x12\\r\\n\" +\n\t\"\\tJS_NUMBER\\x10\\x02\\\"U\\n\" +\n\t\"\\x0fOptionRetention\\x12\\x15\\n\" +\n\t\"\\x11RETENTION_UNKNOWN\\x10\\x00\\x12\\x15\\n\" +\n\t\"\\x11RETENTION_RUNTIME\\x10\\x01\\x12\\x14\\n\" +\n\t\"\\x10RETENTION_SOURCE\\x10\\x02\\\"\\x8c\\x02\\n\" +\n\t\"\\x10OptionTargetType\\x12\\x17\\n\" +\n\t\"\\x13TARGET_TYPE_UNKNOWN\\x10\\x00\\x12\\x14\\n\" +\n\t\"\\x10TARGET_TYPE_FILE\\x10\\x01\\x12\\x1f\\n\" +\n\t\"\\x1bTARGET_TYPE_EXTENSION_RANGE\\x10\\x02\\x12\\x17\\n\" +\n\t\"\\x13TARGET_TYPE_MESSAGE\\x10\\x03\\x12\\x15\\n\" +\n\t\"\\x11TARGET_TYPE_FIELD\\x10\\x04\\x12\\x15\\n\" +\n\t\"\\x11TARGET_TYPE_ONEOF\\x10\\x05\\x12\\x14\\n\" +\n\t\"\\x10TARGET_TYPE_ENUM\\x10\\x06\\x12\\x1a\\n\" +\n\t\"\\x16TARGET_TYPE_ENUM_ENTRY\\x10\\a\\x12\\x17\\n\" +\n\t\"\\x13TARGET_TYPE_SERVICE\\x10\\b\\x12\\x16\\n\" +\n\t\"\\x12TARGET_TYPE_METHOD\\x10\\t*\\t\\b\\xe8\\a\\x10\\x80\\x80\\x80\\x80\\x02J\\x04\\b\\x04\\x10\\x05J\\x04\\b\\x12\\x10\\x13\\\"\\xac\\x01\\n\" +\n\t\"\\fOneofOptions\\x127\\n\" +\n\t\"\\bfeatures\\x18\\x01 \\x01(\\v2\\x1b.google.protobuf.FeatureSetR\\bfeatures\\x12X\\n\" +\n\t\"\\x14uninterpreted_option\\x18\\xe7\\a \\x03(\\v2$.google.protobuf.UninterpretedOptionR\\x13uninterpretedOption*\\t\\b\\xe8\\a\\x10\\x80\\x80\\x80\\x80\\x02\\\"\\xd1\\x02\\n\" +\n\t\"\\vEnumOptions\\x12\\x1f\\n\" +\n\t\"\\vallow_alias\\x18\\x02 \\x01(\\bR\\n\" +\n\t\"allowAlias\\x12%\\n\" +\n\t\"\\n\" +\n\t\"deprecated\\x18\\x03 \\x01(\\b:\\x05falseR\\n\" +\n\t\"deprecated\\x12V\\n\" +\n\t\"&deprecated_legacy_json_field_conflicts\\x18\\x06 \\x01(\\bB\\x02\\x18\\x01R\\\"deprecatedLegacyJsonFieldConflicts\\x127\\n\" +\n\t\"\\bfeatures\\x18\\a \\x01(\\v2\\x1b.google.protobuf.FeatureSetR\\bfeatures\\x12X\\n\" +\n\t\"\\x14uninterpreted_option\\x18\\xe7\\a \\x03(\\v2$.google.protobuf.UninterpretedOptionR\\x13uninterpretedOption*\\t\\b\\xe8\\a\\x10\\x80\\x80\\x80\\x80\\x02J\\x04\\b\\x05\\x10\\x06\\\"\\xd8\\x02\\n\" +\n\t\"\\x10EnumValueOptions\\x12%\\n\" +\n\t\"\\n\" +\n\t\"deprecated\\x18\\x01 \\x01(\\b:\\x05falseR\\n\" +\n\t\"deprecated\\x127\\n\" +\n\t\"\\bfeatures\\x18\\x02 \\x01(\\v2\\x1b.google.protobuf.FeatureSetR\\bfeatures\\x12(\\n\" +\n\t\"\\fdebug_redact\\x18\\x03 \\x01(\\b:\\x05falseR\\vdebugRedact\\x12U\\n\" +\n\t\"\\x0ffeature_support\\x18\\x04 \\x01(\\v2,.google.protobuf.FieldOptions.FeatureSupportR\\x0efeatureSupport\\x12X\\n\" +\n\t\"\\x14uninterpreted_option\\x18\\xe7\\a \\x03(\\v2$.google.protobuf.UninterpretedOptionR\\x13uninterpretedOption*\\t\\b\\xe8\\a\\x10\\x80\\x80\\x80\\x80\\x02\\\"\\xd5\\x01\\n\" +\n\t\"\\x0eServiceOptions\\x127\\n\" +\n\t\"\\bfeatures\\x18\\\" \\x01(\\v2\\x1b.google.protobuf.FeatureSetR\\bfeatures\\x12%\\n\" +\n\t\"\\n\" +\n\t\"deprecated\\x18! \\x01(\\b:\\x05falseR\\n\" +\n\t\"deprecated\\x12X\\n\" +\n\t\"\\x14uninterpreted_option\\x18\\xe7\\a \\x03(\\v2$.google.protobuf.UninterpretedOptionR\\x13uninterpretedOption*\\t\\b\\xe8\\a\\x10\\x80\\x80\\x80\\x80\\x02\\\"\\x99\\x03\\n\" +\n\t\"\\rMethodOptions\\x12%\\n\" +\n\t\"\\n\" +\n\t\"deprecated\\x18! \\x01(\\b:\\x05falseR\\n\" +\n\t\"deprecated\\x12q\\n\" +\n\t\"\\x11idempotency_level\\x18\\\" \\x01(\\x0e2/.google.protobuf.MethodOptions.IdempotencyLevel:\\x13IDEMPOTENCY_UNKNOWNR\\x10idempotencyLevel\\x127\\n\" +\n\t\"\\bfeatures\\x18# \\x01(\\v2\\x1b.google.protobuf.FeatureSetR\\bfeatures\\x12X\\n\" +\n\t\"\\x14uninterpreted_option\\x18\\xe7\\a \\x03(\\v2$.google.protobuf.UninterpretedOptionR\\x13uninterpretedOption\\\"P\\n\" +\n\t\"\\x10IdempotencyLevel\\x12\\x17\\n\" +\n\t\"\\x13IDEMPOTENCY_UNKNOWN\\x10\\x00\\x12\\x13\\n\" +\n\t\"\\x0fNO_SIDE_EFFECTS\\x10\\x01\\x12\\x0e\\n\" +\n\t\"\\n\" +\n\t\"IDEMPOTENT\\x10\\x02*\\t\\b\\xe8\\a\\x10\\x80\\x80\\x80\\x80\\x02\\\"\\x9a\\x03\\n\" +\n\t\"\\x13UninterpretedOption\\x12A\\n\" +\n\t\"\\x04name\\x18\\x02 \\x03(\\v2-.google.protobuf.UninterpretedOption.NamePartR\\x04name\\x12)\\n\" +\n\t\"\\x10identifier_value\\x18\\x03 \\x01(\\tR\\x0fidentifierValue\\x12,\\n\" +\n\t\"\\x12positive_int_value\\x18\\x04 \\x01(\\x04R\\x10positiveIntValue\\x12,\\n\" +\n\t\"\\x12negative_int_value\\x18\\x05 \\x01(\\x03R\\x10negativeIntValue\\x12!\\n\" +\n\t\"\\fdouble_value\\x18\\x06 \\x01(\\x01R\\vdoubleValue\\x12!\\n\" +\n\t\"\\fstring_value\\x18\\a \\x01(\\fR\\vstringValue\\x12'\\n\" +\n\t\"\\x0faggregate_value\\x18\\b \\x01(\\tR\\x0eaggregateValue\\x1aJ\\n\" +\n\t\"\\bNamePart\\x12\\x1b\\n\" +\n\t\"\\tname_part\\x18\\x01 \\x02(\\tR\\bnamePart\\x12!\\n\" +\n\t\"\\fis_extension\\x18\\x02 \\x02(\\bR\\visExtension\\\"\\x8e\\x0f\\n\" +\n\t\"\\n\" +\n\t\"FeatureSet\\x12\\x91\\x01\\n\" +\n\t\"\\x0efield_presence\\x18\\x01 \\x01(\\x0e2).google.protobuf.FeatureSet.FieldPresenceB?\\x88\\x01\\x01\\x98\\x01\\x04\\x98\\x01\\x01\\xa2\\x01\\r\\x12\\bEXPLICIT\\x18\\x84\\a\\xa2\\x01\\r\\x12\\bIMPLICIT\\x18\\xe7\\a\\xa2\\x01\\r\\x12\\bEXPLICIT\\x18\\xe8\\a\\xb2\\x01\\x03\\b\\xe8\\aR\\rfieldPresence\\x12l\\n\" +\n\t\"\\tenum_type\\x18\\x02 \\x01(\\x0e2$.google.protobuf.FeatureSet.EnumTypeB)\\x88\\x01\\x01\\x98\\x01\\x06\\x98\\x01\\x01\\xa2\\x01\\v\\x12\\x06CLOSED\\x18\\x84\\a\\xa2\\x01\\t\\x12\\x04OPEN\\x18\\xe7\\a\\xb2\\x01\\x03\\b\\xe8\\aR\\benumType\\x12\\x98\\x01\\n\" +\n\t\"\\x17repeated_field_encoding\\x18\\x03 \\x01(\\x0e21.google.protobuf.FeatureSet.RepeatedFieldEncodingB-\\x88\\x01\\x01\\x98\\x01\\x04\\x98\\x01\\x01\\xa2\\x01\\r\\x12\\bEXPANDED\\x18\\x84\\a\\xa2\\x01\\v\\x12\\x06PACKED\\x18\\xe7\\a\\xb2\\x01\\x03\\b\\xe8\\aR\\x15repeatedFieldEncoding\\x12~\\n\" +\n\t\"\\x0futf8_validation\\x18\\x04 \\x01(\\x0e2*.google.protobuf.FeatureSet.Utf8ValidationB)\\x88\\x01\\x01\\x98\\x01\\x04\\x98\\x01\\x01\\xa2\\x01\\t\\x12\\x04NONE\\x18\\x84\\a\\xa2\\x01\\v\\x12\\x06VERIFY\\x18\\xe7\\a\\xb2\\x01\\x03\\b\\xe8\\aR\\x0eutf8Validation\\x12~\\n\" +\n\t\"\\x10message_encoding\\x18\\x05 \\x01(\\x0e2+.google.protobuf.FeatureSet.MessageEncodingB&\\x88\\x01\\x01\\x98\\x01\\x04\\x98\\x01\\x01\\xa2\\x01\\x14\\x12\\x0fLENGTH_PREFIXED\\x18\\x84\\a\\xb2\\x01\\x03\\b\\xe8\\aR\\x0fmessageEncoding\\x12\\x82\\x01\\n\" +\n\t\"\\vjson_format\\x18\\x06 \\x01(\\x0e2&.google.protobuf.FeatureSet.JsonFormatB9\\x88\\x01\\x01\\x98\\x01\\x03\\x98\\x01\\x06\\x98\\x01\\x01\\xa2\\x01\\x17\\x12\\x12LEGACY_BEST_EFFORT\\x18\\x84\\a\\xa2\\x01\\n\" +\n\t\"\\x12\\x05ALLOW\\x18\\xe7\\a\\xb2\\x01\\x03\\b\\xe8\\aR\\n\" +\n\t\"jsonFormat\\x12\\xab\\x01\\n\" +\n\t\"\\x14enforce_naming_style\\x18\\a \\x01(\\x0e2..google.protobuf.FeatureSet.EnforceNamingStyleBI\\x88\\x01\\x02\\x98\\x01\\x01\\x98\\x01\\x02\\x98\\x01\\x03\\x98\\x01\\x04\\x98\\x01\\x05\\x98\\x01\\x06\\x98\\x01\\a\\x98\\x01\\b\\x98\\x01\\t\\xa2\\x01\\x11\\x12\\fSTYLE_LEGACY\\x18\\x84\\a\\xa2\\x01\\x0e\\x12\\tSTYLE2024\\x18\\xe9\\a\\xb2\\x01\\x03\\b\\xe9\\aR\\x12enforceNamingStyle\\x12\\xb9\\x01\\n\" +\n\t\"\\x19default_symbol_visibility\\x18\\b \\x01(\\x0e2E.google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibilityB6\\x88\\x01\\x02\\x98\\x01\\x01\\xa2\\x01\\x0f\\x12\\n\" +\n\t\"EXPORT_ALL\\x18\\x84\\a\\xa2\\x01\\x15\\x12\\x10EXPORT_TOP_LEVEL\\x18\\xe9\\a\\xb2\\x01\\x03\\b\\xe9\\aR\\x17defaultSymbolVisibility\\x1a\\xa1\\x01\\n\" +\n\t\"\\x11VisibilityFeature\\\"\\x81\\x01\\n\" +\n\t\"\\x17DefaultSymbolVisibility\\x12%\\n\" +\n\t\"!DEFAULT_SYMBOL_VISIBILITY_UNKNOWN\\x10\\x00\\x12\\x0e\\n\" +\n\t\"\\n\" +\n\t\"EXPORT_ALL\\x10\\x01\\x12\\x14\\n\" +\n\t\"\\x10EXPORT_TOP_LEVEL\\x10\\x02\\x12\\r\\n\" +\n\t\"\\tLOCAL_ALL\\x10\\x03\\x12\\n\" +\n\t\"\\n\" +\n\t\"\\x06STRICT\\x10\\x04J\\b\\b\\x01\\x10\\x80\\x80\\x80\\x80\\x02\\\"\\\\\\n\" +\n\t\"\\rFieldPresence\\x12\\x1a\\n\" +\n\t\"\\x16FIELD_PRESENCE_UNKNOWN\\x10\\x00\\x12\\f\\n\" +\n\t\"\\bEXPLICIT\\x10\\x01\\x12\\f\\n\" +\n\t\"\\bIMPLICIT\\x10\\x02\\x12\\x13\\n\" +\n\t\"\\x0fLEGACY_REQUIRED\\x10\\x03\\\"7\\n\" +\n\t\"\\bEnumType\\x12\\x15\\n\" +\n\t\"\\x11ENUM_TYPE_UNKNOWN\\x10\\x00\\x12\\b\\n\" +\n\t\"\\x04OPEN\\x10\\x01\\x12\\n\" +\n\t\"\\n\" +\n\t\"\\x06CLOSED\\x10\\x02\\\"V\\n\" +\n\t\"\\x15RepeatedFieldEncoding\\x12#\\n\" +\n\t\"\\x1fREPEATED_FIELD_ENCODING_UNKNOWN\\x10\\x00\\x12\\n\" +\n\t\"\\n\" +\n\t\"\\x06PACKED\\x10\\x01\\x12\\f\\n\" +\n\t\"\\bEXPANDED\\x10\\x02\\\"I\\n\" +\n\t\"\\x0eUtf8Validation\\x12\\x1b\\n\" +\n\t\"\\x17UTF8_VALIDATION_UNKNOWN\\x10\\x00\\x12\\n\" +\n\t\"\\n\" +\n\t\"\\x06VERIFY\\x10\\x02\\x12\\b\\n\" +\n\t\"\\x04NONE\\x10\\x03\\\"\\x04\\b\\x01\\x10\\x01\\\"S\\n\" +\n\t\"\\x0fMessageEncoding\\x12\\x1c\\n\" +\n\t\"\\x18MESSAGE_ENCODING_UNKNOWN\\x10\\x00\\x12\\x13\\n\" +\n\t\"\\x0fLENGTH_PREFIXED\\x10\\x01\\x12\\r\\n\" +\n\t\"\\tDELIMITED\\x10\\x02\\\"H\\n\" +\n\t\"\\n\" +\n\t\"JsonFormat\\x12\\x17\\n\" +\n\t\"\\x13JSON_FORMAT_UNKNOWN\\x10\\x00\\x12\\t\\n\" +\n\t\"\\x05ALLOW\\x10\\x01\\x12\\x16\\n\" +\n\t\"\\x12LEGACY_BEST_EFFORT\\x10\\x02\\\"W\\n\" +\n\t\"\\x12EnforceNamingStyle\\x12 \\n\" +\n\t\"\\x1cENFORCE_NAMING_STYLE_UNKNOWN\\x10\\x00\\x12\\r\\n\" +\n\t\"\\tSTYLE2024\\x10\\x01\\x12\\x10\\n\" +\n\t\"\\fSTYLE_LEGACY\\x10\\x02*\\x06\\b\\xe8\\a\\x10\\x8bN*\\x06\\b\\x8bN\\x10\\x90N*\\x06\\b\\x90N\\x10\\x91NJ\\x06\\b\\xe7\\a\\x10\\xe8\\a\\\"\\xef\\x03\\n\" +\n\t\"\\x12FeatureSetDefaults\\x12X\\n\" +\n\t\"\\bdefaults\\x18\\x01 \\x03(\\v2<.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefaultR\\bdefaults\\x12A\\n\" +\n\t\"\\x0fminimum_edition\\x18\\x04 \\x01(\\x0e2\\x18.google.protobuf.EditionR\\x0eminimumEdition\\x12A\\n\" +\n\t\"\\x0fmaximum_edition\\x18\\x05 \\x01(\\x0e2\\x18.google.protobuf.EditionR\\x0emaximumEdition\\x1a\\xf8\\x01\\n\" +\n\t\"\\x18FeatureSetEditionDefault\\x122\\n\" +\n\t\"\\aedition\\x18\\x03 \\x01(\\x0e2\\x18.google.protobuf.EditionR\\aedition\\x12N\\n\" +\n\t\"\\x14overridable_features\\x18\\x04 \\x01(\\v2\\x1b.google.protobuf.FeatureSetR\\x13overridableFeatures\\x12B\\n\" +\n\t\"\\x0efixed_features\\x18\\x05 \\x01(\\v2\\x1b.google.protobuf.FeatureSetR\\rfixedFeaturesJ\\x04\\b\\x01\\x10\\x02J\\x04\\b\\x02\\x10\\x03R\\bfeatures\\\"\\xb5\\x02\\n\" +\n\t\"\\x0eSourceCodeInfo\\x12D\\n\" +\n\t\"\\blocation\\x18\\x01 \\x03(\\v2(.google.protobuf.SourceCodeInfo.LocationR\\blocation\\x1a\\xce\\x01\\n\" +\n\t\"\\bLocation\\x12\\x16\\n\" +\n\t\"\\x04path\\x18\\x01 \\x03(\\x05B\\x02\\x10\\x01R\\x04path\\x12\\x16\\n\" +\n\t\"\\x04span\\x18\\x02 \\x03(\\x05B\\x02\\x10\\x01R\\x04span\\x12)\\n\" +\n\t\"\\x10leading_comments\\x18\\x03 \\x01(\\tR\\x0fleadingComments\\x12+\\n\" +\n\t\"\\x11trailing_comments\\x18\\x04 \\x01(\\tR\\x10trailingComments\\x12:\\n\" +\n\t\"\\x19leading_detached_comments\\x18\\x06 \\x03(\\tR\\x17leadingDetachedComments*\\f\\b\\x80\\xec\\xca\\xff\\x01\\x10\\x81\\xec\\xca\\xff\\x01\\\"\\xd0\\x02\\n\" +\n\t\"\\x11GeneratedCodeInfo\\x12M\\n\" +\n\t\"\\n\" +\n\t\"annotation\\x18\\x01 \\x03(\\v2-.google.protobuf.GeneratedCodeInfo.AnnotationR\\n\" +\n\t\"annotation\\x1a\\xeb\\x01\\n\" +\n\t\"\\n\" +\n\t\"Annotation\\x12\\x16\\n\" +\n\t\"\\x04path\\x18\\x01 \\x03(\\x05B\\x02\\x10\\x01R\\x04path\\x12\\x1f\\n\" +\n\t\"\\vsource_file\\x18\\x02 \\x01(\\tR\\n\" +\n\t\"sourceFile\\x12\\x14\\n\" +\n\t\"\\x05begin\\x18\\x03 \\x01(\\x05R\\x05begin\\x12\\x10\\n\" +\n\t\"\\x03end\\x18\\x04 \\x01(\\x05R\\x03end\\x12R\\n\" +\n\t\"\\bsemantic\\x18\\x05 \\x01(\\x0e26.google.protobuf.GeneratedCodeInfo.Annotation.SemanticR\\bsemantic\\\"(\\n\" +\n\t\"\\bSemantic\\x12\\b\\n\" +\n\t\"\\x04NONE\\x10\\x00\\x12\\a\\n\" +\n\t\"\\x03SET\\x10\\x01\\x12\\t\\n\" +\n\t\"\\x05ALIAS\\x10\\x02*\\xa7\\x02\\n\" +\n\t\"\\aEdition\\x12\\x13\\n\" +\n\t\"\\x0fEDITION_UNKNOWN\\x10\\x00\\x12\\x13\\n\" +\n\t\"\\x0eEDITION_LEGACY\\x10\\x84\\a\\x12\\x13\\n\" +\n\t\"\\x0eEDITION_PROTO2\\x10\\xe6\\a\\x12\\x13\\n\" +\n\t\"\\x0eEDITION_PROTO3\\x10\\xe7\\a\\x12\\x11\\n\" +\n\t\"\\fEDITION_2023\\x10\\xe8\\a\\x12\\x11\\n\" +\n\t\"\\fEDITION_2024\\x10\\xe9\\a\\x12\\x17\\n\" +\n\t\"\\x13EDITION_1_TEST_ONLY\\x10\\x01\\x12\\x17\\n\" +\n\t\"\\x13EDITION_2_TEST_ONLY\\x10\\x02\\x12\\x1d\\n\" +\n\t\"\\x17EDITION_99997_TEST_ONLY\\x10\\x9d\\x8d\\x06\\x12\\x1d\\n\" +\n\t\"\\x17EDITION_99998_TEST_ONLY\\x10\\x9e\\x8d\\x06\\x12\\x1d\\n\" +\n\t\"\\x17EDITION_99999_TEST_ONLY\\x10\\x9f\\x8d\\x06\\x12\\x13\\n\" +\n\t\"\\vEDITION_MAX\\x10\\xff\\xff\\xff\\xff\\a*U\\n\" +\n\t\"\\x10SymbolVisibility\\x12\\x14\\n\" +\n\t\"\\x10VISIBILITY_UNSET\\x10\\x00\\x12\\x14\\n\" +\n\t\"\\x10VISIBILITY_LOCAL\\x10\\x01\\x12\\x15\\n\" +\n\t\"\\x11VISIBILITY_EXPORT\\x10\\x02B~\\n\" +\n\t\"\\x13com.google.protobufB\\x10DescriptorProtosH\\x01Z-google.golang.org/protobuf/types/descriptorpb\\xf8\\x01\\x01\\xa2\\x02\\x03GPB\\xaa\\x02\\x1aGoogle.Protobuf.Reflection\"\n\nvar (\n\tfile_google_protobuf_descriptor_proto_rawDescOnce sync.Once\n\tfile_google_protobuf_descriptor_proto_rawDescData []byte\n)\n\nfunc file_google_protobuf_descriptor_proto_rawDescGZIP() []byte {\n\tfile_google_protobuf_descriptor_proto_rawDescOnce.Do(func() {\n\t\tfile_google_protobuf_descriptor_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_google_protobuf_descriptor_proto_rawDesc), len(file_google_protobuf_descriptor_proto_rawDesc)))\n\t})\n\treturn file_google_protobuf_descriptor_proto_rawDescData\n}\n\nvar file_google_protobuf_descriptor_proto_enumTypes = make([]protoimpl.EnumInfo, 20)\nvar file_google_protobuf_descriptor_proto_msgTypes = make([]protoimpl.MessageInfo, 34)\nvar file_google_protobuf_descriptor_proto_goTypes = []any{\n\t(Edition)(0),          // 0: google.protobuf.Edition\n\t(SymbolVisibility)(0), // 1: google.protobuf.SymbolVisibility\n\t(ExtensionRangeOptions_VerificationState)(0),              // 2: google.protobuf.ExtensionRangeOptions.VerificationState\n\t(FieldDescriptorProto_Type)(0),                            // 3: google.protobuf.FieldDescriptorProto.Type\n\t(FieldDescriptorProto_Label)(0),                           // 4: google.protobuf.FieldDescriptorProto.Label\n\t(FileOptions_OptimizeMode)(0),                             // 5: google.protobuf.FileOptions.OptimizeMode\n\t(FieldOptions_CType)(0),                                   // 6: google.protobuf.FieldOptions.CType\n\t(FieldOptions_JSType)(0),                                  // 7: google.protobuf.FieldOptions.JSType\n\t(FieldOptions_OptionRetention)(0),                         // 8: google.protobuf.FieldOptions.OptionRetention\n\t(FieldOptions_OptionTargetType)(0),                        // 9: google.protobuf.FieldOptions.OptionTargetType\n\t(MethodOptions_IdempotencyLevel)(0),                       // 10: google.protobuf.MethodOptions.IdempotencyLevel\n\t(FeatureSet_FieldPresence)(0),                             // 11: google.protobuf.FeatureSet.FieldPresence\n\t(FeatureSet_EnumType)(0),                                  // 12: google.protobuf.FeatureSet.EnumType\n\t(FeatureSet_RepeatedFieldEncoding)(0),                     // 13: google.protobuf.FeatureSet.RepeatedFieldEncoding\n\t(FeatureSet_Utf8Validation)(0),                            // 14: google.protobuf.FeatureSet.Utf8Validation\n\t(FeatureSet_MessageEncoding)(0),                           // 15: google.protobuf.FeatureSet.MessageEncoding\n\t(FeatureSet_JsonFormat)(0),                                // 16: google.protobuf.FeatureSet.JsonFormat\n\t(FeatureSet_EnforceNamingStyle)(0),                        // 17: google.protobuf.FeatureSet.EnforceNamingStyle\n\t(FeatureSet_VisibilityFeature_DefaultSymbolVisibility)(0), // 18: google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility\n\t(GeneratedCodeInfo_Annotation_Semantic)(0),                // 19: google.protobuf.GeneratedCodeInfo.Annotation.Semantic\n\t(*FileDescriptorSet)(nil),                                 // 20: google.protobuf.FileDescriptorSet\n\t(*FileDescriptorProto)(nil),                               // 21: google.protobuf.FileDescriptorProto\n\t(*DescriptorProto)(nil),                                   // 22: google.protobuf.DescriptorProto\n\t(*ExtensionRangeOptions)(nil),                             // 23: google.protobuf.ExtensionRangeOptions\n\t(*FieldDescriptorProto)(nil),                              // 24: google.protobuf.FieldDescriptorProto\n\t(*OneofDescriptorProto)(nil),                              // 25: google.protobuf.OneofDescriptorProto\n\t(*EnumDescriptorProto)(nil),                               // 26: google.protobuf.EnumDescriptorProto\n\t(*EnumValueDescriptorProto)(nil),                          // 27: google.protobuf.EnumValueDescriptorProto\n\t(*ServiceDescriptorProto)(nil),                            // 28: google.protobuf.ServiceDescriptorProto\n\t(*MethodDescriptorProto)(nil),                             // 29: google.protobuf.MethodDescriptorProto\n\t(*FileOptions)(nil),                                       // 30: google.protobuf.FileOptions\n\t(*MessageOptions)(nil),                                    // 31: google.protobuf.MessageOptions\n\t(*FieldOptions)(nil),                                      // 32: google.protobuf.FieldOptions\n\t(*OneofOptions)(nil),                                      // 33: google.protobuf.OneofOptions\n\t(*EnumOptions)(nil),                                       // 34: google.protobuf.EnumOptions\n\t(*EnumValueOptions)(nil),                                  // 35: google.protobuf.EnumValueOptions\n\t(*ServiceOptions)(nil),                                    // 36: google.protobuf.ServiceOptions\n\t(*MethodOptions)(nil),                                     // 37: google.protobuf.MethodOptions\n\t(*UninterpretedOption)(nil),                               // 38: google.protobuf.UninterpretedOption\n\t(*FeatureSet)(nil),                                        // 39: google.protobuf.FeatureSet\n\t(*FeatureSetDefaults)(nil),                                // 40: google.protobuf.FeatureSetDefaults\n\t(*SourceCodeInfo)(nil),                                    // 41: google.protobuf.SourceCodeInfo\n\t(*GeneratedCodeInfo)(nil),                                 // 42: google.protobuf.GeneratedCodeInfo\n\t(*DescriptorProto_ExtensionRange)(nil),                    // 43: google.protobuf.DescriptorProto.ExtensionRange\n\t(*DescriptorProto_ReservedRange)(nil),                     // 44: google.protobuf.DescriptorProto.ReservedRange\n\t(*ExtensionRangeOptions_Declaration)(nil),                 // 45: google.protobuf.ExtensionRangeOptions.Declaration\n\t(*EnumDescriptorProto_EnumReservedRange)(nil),             // 46: google.protobuf.EnumDescriptorProto.EnumReservedRange\n\t(*FieldOptions_EditionDefault)(nil),                       // 47: google.protobuf.FieldOptions.EditionDefault\n\t(*FieldOptions_FeatureSupport)(nil),                       // 48: google.protobuf.FieldOptions.FeatureSupport\n\t(*UninterpretedOption_NamePart)(nil),                      // 49: google.protobuf.UninterpretedOption.NamePart\n\t(*FeatureSet_VisibilityFeature)(nil),                      // 50: google.protobuf.FeatureSet.VisibilityFeature\n\t(*FeatureSetDefaults_FeatureSetEditionDefault)(nil),       // 51: google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault\n\t(*SourceCodeInfo_Location)(nil),                           // 52: google.protobuf.SourceCodeInfo.Location\n\t(*GeneratedCodeInfo_Annotation)(nil),                      // 53: google.protobuf.GeneratedCodeInfo.Annotation\n}\nvar file_google_protobuf_descriptor_proto_depIdxs = []int32{\n\t21, // 0: google.protobuf.FileDescriptorSet.file:type_name -> google.protobuf.FileDescriptorProto\n\t22, // 1: google.protobuf.FileDescriptorProto.message_type:type_name -> google.protobuf.DescriptorProto\n\t26, // 2: google.protobuf.FileDescriptorProto.enum_type:type_name -> google.protobuf.EnumDescriptorProto\n\t28, // 3: google.protobuf.FileDescriptorProto.service:type_name -> google.protobuf.ServiceDescriptorProto\n\t24, // 4: google.protobuf.FileDescriptorProto.extension:type_name -> google.protobuf.FieldDescriptorProto\n\t30, // 5: google.protobuf.FileDescriptorProto.options:type_name -> google.protobuf.FileOptions\n\t41, // 6: google.protobuf.FileDescriptorProto.source_code_info:type_name -> google.protobuf.SourceCodeInfo\n\t0,  // 7: google.protobuf.FileDescriptorProto.edition:type_name -> google.protobuf.Edition\n\t24, // 8: google.protobuf.DescriptorProto.field:type_name -> google.protobuf.FieldDescriptorProto\n\t24, // 9: google.protobuf.DescriptorProto.extension:type_name -> google.protobuf.FieldDescriptorProto\n\t22, // 10: google.protobuf.DescriptorProto.nested_type:type_name -> google.protobuf.DescriptorProto\n\t26, // 11: google.protobuf.DescriptorProto.enum_type:type_name -> google.protobuf.EnumDescriptorProto\n\t43, // 12: google.protobuf.DescriptorProto.extension_range:type_name -> google.protobuf.DescriptorProto.ExtensionRange\n\t25, // 13: google.protobuf.DescriptorProto.oneof_decl:type_name -> google.protobuf.OneofDescriptorProto\n\t31, // 14: google.protobuf.DescriptorProto.options:type_name -> google.protobuf.MessageOptions\n\t44, // 15: google.protobuf.DescriptorProto.reserved_range:type_name -> google.protobuf.DescriptorProto.ReservedRange\n\t1,  // 16: google.protobuf.DescriptorProto.visibility:type_name -> google.protobuf.SymbolVisibility\n\t38, // 17: google.protobuf.ExtensionRangeOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption\n\t45, // 18: google.protobuf.ExtensionRangeOptions.declaration:type_name -> google.protobuf.ExtensionRangeOptions.Declaration\n\t39, // 19: google.protobuf.ExtensionRangeOptions.features:type_name -> google.protobuf.FeatureSet\n\t2,  // 20: google.protobuf.ExtensionRangeOptions.verification:type_name -> google.protobuf.ExtensionRangeOptions.VerificationState\n\t4,  // 21: google.protobuf.FieldDescriptorProto.label:type_name -> google.protobuf.FieldDescriptorProto.Label\n\t3,  // 22: google.protobuf.FieldDescriptorProto.type:type_name -> google.protobuf.FieldDescriptorProto.Type\n\t32, // 23: google.protobuf.FieldDescriptorProto.options:type_name -> google.protobuf.FieldOptions\n\t33, // 24: google.protobuf.OneofDescriptorProto.options:type_name -> google.protobuf.OneofOptions\n\t27, // 25: google.protobuf.EnumDescriptorProto.value:type_name -> google.protobuf.EnumValueDescriptorProto\n\t34, // 26: google.protobuf.EnumDescriptorProto.options:type_name -> google.protobuf.EnumOptions\n\t46, // 27: google.protobuf.EnumDescriptorProto.reserved_range:type_name -> google.protobuf.EnumDescriptorProto.EnumReservedRange\n\t1,  // 28: google.protobuf.EnumDescriptorProto.visibility:type_name -> google.protobuf.SymbolVisibility\n\t35, // 29: google.protobuf.EnumValueDescriptorProto.options:type_name -> google.protobuf.EnumValueOptions\n\t29, // 30: google.protobuf.ServiceDescriptorProto.method:type_name -> google.protobuf.MethodDescriptorProto\n\t36, // 31: google.protobuf.ServiceDescriptorProto.options:type_name -> google.protobuf.ServiceOptions\n\t37, // 32: google.protobuf.MethodDescriptorProto.options:type_name -> google.protobuf.MethodOptions\n\t5,  // 33: google.protobuf.FileOptions.optimize_for:type_name -> google.protobuf.FileOptions.OptimizeMode\n\t39, // 34: google.protobuf.FileOptions.features:type_name -> google.protobuf.FeatureSet\n\t38, // 35: google.protobuf.FileOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption\n\t39, // 36: google.protobuf.MessageOptions.features:type_name -> google.protobuf.FeatureSet\n\t38, // 37: google.protobuf.MessageOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption\n\t6,  // 38: google.protobuf.FieldOptions.ctype:type_name -> google.protobuf.FieldOptions.CType\n\t7,  // 39: google.protobuf.FieldOptions.jstype:type_name -> google.protobuf.FieldOptions.JSType\n\t8,  // 40: google.protobuf.FieldOptions.retention:type_name -> google.protobuf.FieldOptions.OptionRetention\n\t9,  // 41: google.protobuf.FieldOptions.targets:type_name -> google.protobuf.FieldOptions.OptionTargetType\n\t47, // 42: google.protobuf.FieldOptions.edition_defaults:type_name -> google.protobuf.FieldOptions.EditionDefault\n\t39, // 43: google.protobuf.FieldOptions.features:type_name -> google.protobuf.FeatureSet\n\t48, // 44: google.protobuf.FieldOptions.feature_support:type_name -> google.protobuf.FieldOptions.FeatureSupport\n\t38, // 45: google.protobuf.FieldOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption\n\t39, // 46: google.protobuf.OneofOptions.features:type_name -> google.protobuf.FeatureSet\n\t38, // 47: google.protobuf.OneofOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption\n\t39, // 48: google.protobuf.EnumOptions.features:type_name -> google.protobuf.FeatureSet\n\t38, // 49: google.protobuf.EnumOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption\n\t39, // 50: google.protobuf.EnumValueOptions.features:type_name -> google.protobuf.FeatureSet\n\t48, // 51: google.protobuf.EnumValueOptions.feature_support:type_name -> google.protobuf.FieldOptions.FeatureSupport\n\t38, // 52: google.protobuf.EnumValueOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption\n\t39, // 53: google.protobuf.ServiceOptions.features:type_name -> google.protobuf.FeatureSet\n\t38, // 54: google.protobuf.ServiceOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption\n\t10, // 55: google.protobuf.MethodOptions.idempotency_level:type_name -> google.protobuf.MethodOptions.IdempotencyLevel\n\t39, // 56: google.protobuf.MethodOptions.features:type_name -> google.protobuf.FeatureSet\n\t38, // 57: google.protobuf.MethodOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption\n\t49, // 58: google.protobuf.UninterpretedOption.name:type_name -> google.protobuf.UninterpretedOption.NamePart\n\t11, // 59: google.protobuf.FeatureSet.field_presence:type_name -> google.protobuf.FeatureSet.FieldPresence\n\t12, // 60: google.protobuf.FeatureSet.enum_type:type_name -> google.protobuf.FeatureSet.EnumType\n\t13, // 61: google.protobuf.FeatureSet.repeated_field_encoding:type_name -> google.protobuf.FeatureSet.RepeatedFieldEncoding\n\t14, // 62: google.protobuf.FeatureSet.utf8_validation:type_name -> google.protobuf.FeatureSet.Utf8Validation\n\t15, // 63: google.protobuf.FeatureSet.message_encoding:type_name -> google.protobuf.FeatureSet.MessageEncoding\n\t16, // 64: google.protobuf.FeatureSet.json_format:type_name -> google.protobuf.FeatureSet.JsonFormat\n\t17, // 65: google.protobuf.FeatureSet.enforce_naming_style:type_name -> google.protobuf.FeatureSet.EnforceNamingStyle\n\t18, // 66: google.protobuf.FeatureSet.default_symbol_visibility:type_name -> google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility\n\t51, // 67: google.protobuf.FeatureSetDefaults.defaults:type_name -> google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault\n\t0,  // 68: google.protobuf.FeatureSetDefaults.minimum_edition:type_name -> google.protobuf.Edition\n\t0,  // 69: google.protobuf.FeatureSetDefaults.maximum_edition:type_name -> google.protobuf.Edition\n\t52, // 70: google.protobuf.SourceCodeInfo.location:type_name -> google.protobuf.SourceCodeInfo.Location\n\t53, // 71: google.protobuf.GeneratedCodeInfo.annotation:type_name -> google.protobuf.GeneratedCodeInfo.Annotation\n\t23, // 72: google.protobuf.DescriptorProto.ExtensionRange.options:type_name -> google.protobuf.ExtensionRangeOptions\n\t0,  // 73: google.protobuf.FieldOptions.EditionDefault.edition:type_name -> google.protobuf.Edition\n\t0,  // 74: google.protobuf.FieldOptions.FeatureSupport.edition_introduced:type_name -> google.protobuf.Edition\n\t0,  // 75: google.protobuf.FieldOptions.FeatureSupport.edition_deprecated:type_name -> google.protobuf.Edition\n\t0,  // 76: google.protobuf.FieldOptions.FeatureSupport.edition_removed:type_name -> google.protobuf.Edition\n\t0,  // 77: google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.edition:type_name -> google.protobuf.Edition\n\t39, // 78: google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.overridable_features:type_name -> google.protobuf.FeatureSet\n\t39, // 79: google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.fixed_features:type_name -> google.protobuf.FeatureSet\n\t19, // 80: google.protobuf.GeneratedCodeInfo.Annotation.semantic:type_name -> google.protobuf.GeneratedCodeInfo.Annotation.Semantic\n\t81, // [81:81] is the sub-list for method output_type\n\t81, // [81:81] is the sub-list for method input_type\n\t81, // [81:81] is the sub-list for extension type_name\n\t81, // [81:81] is the sub-list for extension extendee\n\t0,  // [0:81] is the sub-list for field type_name\n}\n\nfunc init() { file_google_protobuf_descriptor_proto_init() }\nfunc file_google_protobuf_descriptor_proto_init() {\n\tif File_google_protobuf_descriptor_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_google_protobuf_descriptor_proto_rawDesc), len(file_google_protobuf_descriptor_proto_rawDesc)),\n\t\t\tNumEnums:      20,\n\t\t\tNumMessages:   34,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_google_protobuf_descriptor_proto_goTypes,\n\t\tDependencyIndexes: file_google_protobuf_descriptor_proto_depIdxs,\n\t\tEnumInfos:         file_google_protobuf_descriptor_proto_enumTypes,\n\t\tMessageInfos:      file_google_protobuf_descriptor_proto_msgTypes,\n\t}.Build()\n\tFile_google_protobuf_descriptor_proto = out.File\n\tfile_google_protobuf_descriptor_proto_goTypes = nil\n\tfile_google_protobuf_descriptor_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/types/gofeaturespb/go_features.pb.go",
    "content": "// Protocol Buffers - Google's data interchange format\n// Copyright 2023 Google Inc.  All rights reserved.\n//\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file or at\n// https://developers.google.com/open-source/licenses/bsd\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// source: google/protobuf/go_features.proto\n\npackage gofeaturespb\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tdescriptorpb \"google.golang.org/protobuf/types/descriptorpb\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\ntype GoFeatures_APILevel int32\n\nconst (\n\t// API_LEVEL_UNSPECIFIED results in selecting the OPEN API,\n\t// but needs to be a separate value to distinguish between\n\t// an explicitly set api level or a missing api level.\n\tGoFeatures_API_LEVEL_UNSPECIFIED GoFeatures_APILevel = 0\n\tGoFeatures_API_OPEN              GoFeatures_APILevel = 1\n\tGoFeatures_API_HYBRID            GoFeatures_APILevel = 2\n\tGoFeatures_API_OPAQUE            GoFeatures_APILevel = 3\n)\n\n// Enum value maps for GoFeatures_APILevel.\nvar (\n\tGoFeatures_APILevel_name = map[int32]string{\n\t\t0: \"API_LEVEL_UNSPECIFIED\",\n\t\t1: \"API_OPEN\",\n\t\t2: \"API_HYBRID\",\n\t\t3: \"API_OPAQUE\",\n\t}\n\tGoFeatures_APILevel_value = map[string]int32{\n\t\t\"API_LEVEL_UNSPECIFIED\": 0,\n\t\t\"API_OPEN\":              1,\n\t\t\"API_HYBRID\":            2,\n\t\t\"API_OPAQUE\":            3,\n\t}\n)\n\nfunc (x GoFeatures_APILevel) Enum() *GoFeatures_APILevel {\n\tp := new(GoFeatures_APILevel)\n\t*p = x\n\treturn p\n}\n\nfunc (x GoFeatures_APILevel) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (GoFeatures_APILevel) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_protobuf_go_features_proto_enumTypes[0].Descriptor()\n}\n\nfunc (GoFeatures_APILevel) Type() protoreflect.EnumType {\n\treturn &file_google_protobuf_go_features_proto_enumTypes[0]\n}\n\nfunc (x GoFeatures_APILevel) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Do not use.\nfunc (x *GoFeatures_APILevel) UnmarshalJSON(b []byte) error {\n\tnum, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = GoFeatures_APILevel(num)\n\treturn nil\n}\n\n// Deprecated: Use GoFeatures_APILevel.Descriptor instead.\nfunc (GoFeatures_APILevel) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_protobuf_go_features_proto_rawDescGZIP(), []int{0, 0}\n}\n\ntype GoFeatures_StripEnumPrefix int32\n\nconst (\n\tGoFeatures_STRIP_ENUM_PREFIX_UNSPECIFIED   GoFeatures_StripEnumPrefix = 0\n\tGoFeatures_STRIP_ENUM_PREFIX_KEEP          GoFeatures_StripEnumPrefix = 1\n\tGoFeatures_STRIP_ENUM_PREFIX_GENERATE_BOTH GoFeatures_StripEnumPrefix = 2\n\tGoFeatures_STRIP_ENUM_PREFIX_STRIP         GoFeatures_StripEnumPrefix = 3\n)\n\n// Enum value maps for GoFeatures_StripEnumPrefix.\nvar (\n\tGoFeatures_StripEnumPrefix_name = map[int32]string{\n\t\t0: \"STRIP_ENUM_PREFIX_UNSPECIFIED\",\n\t\t1: \"STRIP_ENUM_PREFIX_KEEP\",\n\t\t2: \"STRIP_ENUM_PREFIX_GENERATE_BOTH\",\n\t\t3: \"STRIP_ENUM_PREFIX_STRIP\",\n\t}\n\tGoFeatures_StripEnumPrefix_value = map[string]int32{\n\t\t\"STRIP_ENUM_PREFIX_UNSPECIFIED\":   0,\n\t\t\"STRIP_ENUM_PREFIX_KEEP\":          1,\n\t\t\"STRIP_ENUM_PREFIX_GENERATE_BOTH\": 2,\n\t\t\"STRIP_ENUM_PREFIX_STRIP\":         3,\n\t}\n)\n\nfunc (x GoFeatures_StripEnumPrefix) Enum() *GoFeatures_StripEnumPrefix {\n\tp := new(GoFeatures_StripEnumPrefix)\n\t*p = x\n\treturn p\n}\n\nfunc (x GoFeatures_StripEnumPrefix) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (GoFeatures_StripEnumPrefix) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_protobuf_go_features_proto_enumTypes[1].Descriptor()\n}\n\nfunc (GoFeatures_StripEnumPrefix) Type() protoreflect.EnumType {\n\treturn &file_google_protobuf_go_features_proto_enumTypes[1]\n}\n\nfunc (x GoFeatures_StripEnumPrefix) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Do not use.\nfunc (x *GoFeatures_StripEnumPrefix) UnmarshalJSON(b []byte) error {\n\tnum, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = GoFeatures_StripEnumPrefix(num)\n\treturn nil\n}\n\n// Deprecated: Use GoFeatures_StripEnumPrefix.Descriptor instead.\nfunc (GoFeatures_StripEnumPrefix) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_protobuf_go_features_proto_rawDescGZIP(), []int{0, 1}\n}\n\ntype GoFeatures struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Whether or not to generate the deprecated UnmarshalJSON method for enums.\n\t// Can only be true for proto using the Open Struct api.\n\tLegacyUnmarshalJsonEnum *bool `protobuf:\"varint,1,opt,name=legacy_unmarshal_json_enum,json=legacyUnmarshalJsonEnum\" json:\"legacy_unmarshal_json_enum,omitempty\"`\n\t// One of OPEN, HYBRID or OPAQUE.\n\tApiLevel        *GoFeatures_APILevel        `protobuf:\"varint,2,opt,name=api_level,json=apiLevel,enum=pb.GoFeatures_APILevel\" json:\"api_level,omitempty\"`\n\tStripEnumPrefix *GoFeatures_StripEnumPrefix `protobuf:\"varint,3,opt,name=strip_enum_prefix,json=stripEnumPrefix,enum=pb.GoFeatures_StripEnumPrefix\" json:\"strip_enum_prefix,omitempty\"`\n\tunknownFields   protoimpl.UnknownFields\n\tsizeCache       protoimpl.SizeCache\n}\n\nfunc (x *GoFeatures) Reset() {\n\t*x = GoFeatures{}\n\tmi := &file_google_protobuf_go_features_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *GoFeatures) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*GoFeatures) ProtoMessage() {}\n\nfunc (x *GoFeatures) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_go_features_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use GoFeatures.ProtoReflect.Descriptor instead.\nfunc (*GoFeatures) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_go_features_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *GoFeatures) GetLegacyUnmarshalJsonEnum() bool {\n\tif x != nil && x.LegacyUnmarshalJsonEnum != nil {\n\t\treturn *x.LegacyUnmarshalJsonEnum\n\t}\n\treturn false\n}\n\nfunc (x *GoFeatures) GetApiLevel() GoFeatures_APILevel {\n\tif x != nil && x.ApiLevel != nil {\n\t\treturn *x.ApiLevel\n\t}\n\treturn GoFeatures_API_LEVEL_UNSPECIFIED\n}\n\nfunc (x *GoFeatures) GetStripEnumPrefix() GoFeatures_StripEnumPrefix {\n\tif x != nil && x.StripEnumPrefix != nil {\n\t\treturn *x.StripEnumPrefix\n\t}\n\treturn GoFeatures_STRIP_ENUM_PREFIX_UNSPECIFIED\n}\n\nvar file_google_protobuf_go_features_proto_extTypes = []protoimpl.ExtensionInfo{\n\t{\n\t\tExtendedType:  (*descriptorpb.FeatureSet)(nil),\n\t\tExtensionType: (*GoFeatures)(nil),\n\t\tField:         1002,\n\t\tName:          \"pb.go\",\n\t\tTag:           \"bytes,1002,opt,name=go\",\n\t\tFilename:      \"google/protobuf/go_features.proto\",\n\t},\n}\n\n// Extension fields to descriptorpb.FeatureSet.\nvar (\n\t// optional pb.GoFeatures go = 1002;\n\tE_Go = &file_google_protobuf_go_features_proto_extTypes[0]\n)\n\nvar File_google_protobuf_go_features_proto protoreflect.FileDescriptor\n\nconst file_google_protobuf_go_features_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"!google/protobuf/go_features.proto\\x12\\x02pb\\x1a google/protobuf/descriptor.proto\\\"\\xab\\x05\\n\" +\n\t\"\\n\" +\n\t\"GoFeatures\\x12\\xbe\\x01\\n\" +\n\t\"\\x1alegacy_unmarshal_json_enum\\x18\\x01 \\x01(\\bB\\x80\\x01\\x88\\x01\\x01\\x98\\x01\\x06\\x98\\x01\\x01\\xa2\\x01\\t\\x12\\x04true\\x18\\x84\\a\\xa2\\x01\\n\" +\n\t\"\\x12\\x05false\\x18\\xe7\\a\\xb2\\x01[\\b\\xe8\\a\\x10\\xe8\\a\\x1aSThe legacy UnmarshalJSON API is deprecated and will be removed in a future edition.R\\x17legacyUnmarshalJsonEnum\\x12t\\n\" +\n\t\"\\tapi_level\\x18\\x02 \\x01(\\x0e2\\x17.pb.GoFeatures.APILevelB>\\x88\\x01\\x01\\x98\\x01\\x03\\x98\\x01\\x01\\xa2\\x01\\x1a\\x12\\x15API_LEVEL_UNSPECIFIED\\x18\\x84\\a\\xa2\\x01\\x0f\\x12\\n\" +\n\t\"API_OPAQUE\\x18\\xe9\\a\\xb2\\x01\\x03\\b\\xe8\\aR\\bapiLevel\\x12|\\n\" +\n\t\"\\x11strip_enum_prefix\\x18\\x03 \\x01(\\x0e2\\x1e.pb.GoFeatures.StripEnumPrefixB0\\x88\\x01\\x01\\x98\\x01\\x06\\x98\\x01\\a\\x98\\x01\\x01\\xa2\\x01\\x1b\\x12\\x16STRIP_ENUM_PREFIX_KEEP\\x18\\x84\\a\\xb2\\x01\\x03\\b\\xe9\\aR\\x0fstripEnumPrefix\\\"S\\n\" +\n\t\"\\bAPILevel\\x12\\x19\\n\" +\n\t\"\\x15API_LEVEL_UNSPECIFIED\\x10\\x00\\x12\\f\\n\" +\n\t\"\\bAPI_OPEN\\x10\\x01\\x12\\x0e\\n\" +\n\t\"\\n\" +\n\t\"API_HYBRID\\x10\\x02\\x12\\x0e\\n\" +\n\t\"\\n\" +\n\t\"API_OPAQUE\\x10\\x03\\\"\\x92\\x01\\n\" +\n\t\"\\x0fStripEnumPrefix\\x12!\\n\" +\n\t\"\\x1dSTRIP_ENUM_PREFIX_UNSPECIFIED\\x10\\x00\\x12\\x1a\\n\" +\n\t\"\\x16STRIP_ENUM_PREFIX_KEEP\\x10\\x01\\x12#\\n\" +\n\t\"\\x1fSTRIP_ENUM_PREFIX_GENERATE_BOTH\\x10\\x02\\x12\\x1b\\n\" +\n\t\"\\x17STRIP_ENUM_PREFIX_STRIP\\x10\\x03:<\\n\" +\n\t\"\\x02go\\x12\\x1b.google.protobuf.FeatureSet\\x18\\xea\\a \\x01(\\v2\\x0e.pb.GoFeaturesR\\x02goB/Z-google.golang.org/protobuf/types/gofeaturespb\"\n\nvar (\n\tfile_google_protobuf_go_features_proto_rawDescOnce sync.Once\n\tfile_google_protobuf_go_features_proto_rawDescData []byte\n)\n\nfunc file_google_protobuf_go_features_proto_rawDescGZIP() []byte {\n\tfile_google_protobuf_go_features_proto_rawDescOnce.Do(func() {\n\t\tfile_google_protobuf_go_features_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_google_protobuf_go_features_proto_rawDesc), len(file_google_protobuf_go_features_proto_rawDesc)))\n\t})\n\treturn file_google_protobuf_go_features_proto_rawDescData\n}\n\nvar file_google_protobuf_go_features_proto_enumTypes = make([]protoimpl.EnumInfo, 2)\nvar file_google_protobuf_go_features_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_google_protobuf_go_features_proto_goTypes = []any{\n\t(GoFeatures_APILevel)(0),        // 0: pb.GoFeatures.APILevel\n\t(GoFeatures_StripEnumPrefix)(0), // 1: pb.GoFeatures.StripEnumPrefix\n\t(*GoFeatures)(nil),              // 2: pb.GoFeatures\n\t(*descriptorpb.FeatureSet)(nil), // 3: google.protobuf.FeatureSet\n}\nvar file_google_protobuf_go_features_proto_depIdxs = []int32{\n\t0, // 0: pb.GoFeatures.api_level:type_name -> pb.GoFeatures.APILevel\n\t1, // 1: pb.GoFeatures.strip_enum_prefix:type_name -> pb.GoFeatures.StripEnumPrefix\n\t3, // 2: pb.go:extendee -> google.protobuf.FeatureSet\n\t2, // 3: pb.go:type_name -> pb.GoFeatures\n\t4, // [4:4] is the sub-list for method output_type\n\t4, // [4:4] is the sub-list for method input_type\n\t3, // [3:4] is the sub-list for extension type_name\n\t2, // [2:3] is the sub-list for extension extendee\n\t0, // [0:2] is the sub-list for field type_name\n}\n\nfunc init() { file_google_protobuf_go_features_proto_init() }\nfunc file_google_protobuf_go_features_proto_init() {\n\tif File_google_protobuf_go_features_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_google_protobuf_go_features_proto_rawDesc), len(file_google_protobuf_go_features_proto_rawDesc)),\n\t\t\tNumEnums:      2,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 1,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_google_protobuf_go_features_proto_goTypes,\n\t\tDependencyIndexes: file_google_protobuf_go_features_proto_depIdxs,\n\t\tEnumInfos:         file_google_protobuf_go_features_proto_enumTypes,\n\t\tMessageInfos:      file_google_protobuf_go_features_proto_msgTypes,\n\t\tExtensionInfos:    file_google_protobuf_go_features_proto_extTypes,\n\t}.Build()\n\tFile_google_protobuf_go_features_proto = out.File\n\tfile_google_protobuf_go_features_proto_goTypes = nil\n\tfile_google_protobuf_go_features_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/types/known/anypb/any.pb.go",
    "content": "// Protocol Buffers - Google's data interchange format\n// Copyright 2008 Google Inc.  All rights reserved.\n// https://developers.google.com/protocol-buffers/\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 Google Inc. 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\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// source: google/protobuf/any.proto\n\n// Package anypb contains generated types for google/protobuf/any.proto.\n//\n// The Any message is a dynamic representation of any other message value.\n// It is functionally a tuple of the full name of the remote message type and\n// the serialized bytes of the remote message value.\n//\n// # Constructing an Any\n//\n// An Any message containing another message value is constructed using New:\n//\n//\tany, err := anypb.New(m)\n//\tif err != nil {\n//\t\t... // handle error\n//\t}\n//\t... // make use of any\n//\n// # Unmarshaling an Any\n//\n// With a populated Any message, the underlying message can be serialized into\n// a remote concrete message value in a few ways.\n//\n// If the exact concrete type is known, then a new (or pre-existing) instance\n// of that message can be passed to the UnmarshalTo method:\n//\n//\tm := new(foopb.MyMessage)\n//\tif err := any.UnmarshalTo(m); err != nil {\n//\t\t... // handle error\n//\t}\n//\t... // make use of m\n//\n// If the exact concrete type is not known, then the UnmarshalNew method can be\n// used to unmarshal the contents into a new instance of the remote message type:\n//\n//\tm, err := any.UnmarshalNew()\n//\tif err != nil {\n//\t\t... // handle error\n//\t}\n//\t... // make use of m\n//\n// UnmarshalNew uses the global type registry to resolve the message type and\n// construct a new instance of that message to unmarshal into. In order for a\n// message type to appear in the global registry, the Go type representing that\n// protobuf message type must be linked into the Go binary. For messages\n// generated by protoc-gen-go, this is achieved through an import of the\n// generated Go package representing a .proto file.\n//\n// A common pattern with UnmarshalNew is to use a type switch with the resulting\n// proto.Message value:\n//\n//\tswitch m := m.(type) {\n//\tcase *foopb.MyMessage:\n//\t\t... // make use of m as a *foopb.MyMessage\n//\tcase *barpb.OtherMessage:\n//\t\t... // make use of m as a *barpb.OtherMessage\n//\tcase *bazpb.SomeMessage:\n//\t\t... // make use of m as a *bazpb.SomeMessage\n//\t}\n//\n// This pattern ensures that the generated packages containing the message types\n// listed in the case clauses are linked into the Go binary and therefore also\n// registered in the global registry.\n//\n// # Type checking an Any\n//\n// In order to type check whether an Any message represents some other message,\n// then use the MessageIs method:\n//\n//\tif any.MessageIs((*foopb.MyMessage)(nil)) {\n//\t\t... // make use of any, knowing that it contains a foopb.MyMessage\n//\t}\n//\n// The MessageIs method can also be used with an allocated instance of the target\n// message type if the intention is to unmarshal into it if the type matches:\n//\n//\tm := new(foopb.MyMessage)\n//\tif any.MessageIs(m) {\n//\t\tif err := any.UnmarshalTo(m); err != nil {\n//\t\t\t... // handle error\n//\t\t}\n//\t\t... // make use of m\n//\t}\npackage anypb\n\nimport (\n\tproto \"google.golang.org/protobuf/proto\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoregistry \"google.golang.org/protobuf/reflect/protoregistry\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tstrings \"strings\"\n\tsync \"sync\"\n\tunsafe \"unsafe\"\n)\n\n// `Any` contains an arbitrary serialized protocol buffer message along with a\n// URL that describes the type of the serialized message.\n//\n// Protobuf library provides support to pack/unpack Any values in the form\n// of utility functions or additional generated methods of the Any type.\n//\n// Example 1: Pack and unpack a message in C++.\n//\n//\tFoo foo = ...;\n//\tAny any;\n//\tany.PackFrom(foo);\n//\t...\n//\tif (any.UnpackTo(&foo)) {\n//\t  ...\n//\t}\n//\n// Example 2: Pack and unpack a message in Java.\n//\n//\t   Foo foo = ...;\n//\t   Any any = Any.pack(foo);\n//\t   ...\n//\t   if (any.is(Foo.class)) {\n//\t     foo = any.unpack(Foo.class);\n//\t   }\n//\t   // or ...\n//\t   if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n//\t     foo = any.unpack(Foo.getDefaultInstance());\n//\t   }\n//\n//\tExample 3: Pack and unpack a message in Python.\n//\n//\t   foo = Foo(...)\n//\t   any = Any()\n//\t   any.Pack(foo)\n//\t   ...\n//\t   if any.Is(Foo.DESCRIPTOR):\n//\t     any.Unpack(foo)\n//\t     ...\n//\n//\tExample 4: Pack and unpack a message in Go\n//\n//\t    foo := &pb.Foo{...}\n//\t    any, err := anypb.New(foo)\n//\t    if err != nil {\n//\t      ...\n//\t    }\n//\t    ...\n//\t    foo := &pb.Foo{}\n//\t    if err := any.UnmarshalTo(foo); err != nil {\n//\t      ...\n//\t    }\n//\n// The pack methods provided by protobuf library will by default use\n// 'type.googleapis.com/full.type.name' as the type URL and the unpack\n// methods only use the fully qualified type name after the last '/'\n// in the type URL, for example \"foo.bar.com/x/y.z\" will yield type\n// name \"y.z\".\n//\n// JSON\n// ====\n// The JSON representation of an `Any` value uses the regular\n// representation of the deserialized, embedded message, with an\n// additional field `@type` which contains the type URL. Example:\n//\n//\tpackage google.profile;\n//\tmessage Person {\n//\t  string first_name = 1;\n//\t  string last_name = 2;\n//\t}\n//\n//\t{\n//\t  \"@type\": \"type.googleapis.com/google.profile.Person\",\n//\t  \"firstName\": <string>,\n//\t  \"lastName\": <string>\n//\t}\n//\n// If the embedded message type is well-known and has a custom JSON\n// representation, that representation will be embedded adding a field\n// `value` which holds the custom JSON in addition to the `@type`\n// field. Example (for message [google.protobuf.Duration][]):\n//\n//\t{\n//\t  \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n//\t  \"value\": \"1.212s\"\n//\t}\ntype Any struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// A URL/resource name that uniquely identifies the type of the serialized\n\t// protocol buffer message. This string must contain at least\n\t// one \"/\" character. The last segment of the URL's path must represent\n\t// the fully qualified name of the type (as in\n\t// `path/google.protobuf.Duration`). The name should be in a canonical form\n\t// (e.g., leading \".\" is not accepted).\n\t//\n\t// In practice, teams usually precompile into the binary all types that they\n\t// expect it to use in the context of Any. However, for URLs which use the\n\t// scheme `http`, `https`, or no scheme, one can optionally set up a type\n\t// server that maps type URLs to message definitions as follows:\n\t//\n\t//   - If no scheme is provided, `https` is assumed.\n\t//   - An HTTP GET on the URL must yield a [google.protobuf.Type][]\n\t//     value in binary format, or produce an error.\n\t//   - Applications are allowed to cache lookup results based on the\n\t//     URL, or have them precompiled into a binary to avoid any\n\t//     lookup. Therefore, binary compatibility needs to be preserved\n\t//     on changes to types. (Use versioned type names to manage\n\t//     breaking changes.)\n\t//\n\t// Note: this functionality is not currently available in the official\n\t// protobuf release, and it is not used for type URLs beginning with\n\t// type.googleapis.com. As of May 2023, there are no widely used type server\n\t// implementations and no plans to implement one.\n\t//\n\t// Schemes other than `http`, `https` (or the empty scheme) might be\n\t// used with implementation specific semantics.\n\tTypeUrl string `protobuf:\"bytes,1,opt,name=type_url,json=typeUrl,proto3\" json:\"type_url,omitempty\"`\n\t// Must be a valid serialized protocol buffer of the above specified type.\n\tValue         []byte `protobuf:\"bytes,2,opt,name=value,proto3\" json:\"value,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\n// New marshals src into a new Any instance.\nfunc New(src proto.Message) (*Any, error) {\n\tdst := new(Any)\n\tif err := dst.MarshalFrom(src); err != nil {\n\t\treturn nil, err\n\t}\n\treturn dst, nil\n}\n\n// MarshalFrom marshals src into dst as the underlying message\n// using the provided marshal options.\n//\n// If no options are specified, call dst.MarshalFrom instead.\nfunc MarshalFrom(dst *Any, src proto.Message, opts proto.MarshalOptions) error {\n\tconst urlPrefix = \"type.googleapis.com/\"\n\tif src == nil {\n\t\treturn protoimpl.X.NewError(\"invalid nil source message\")\n\t}\n\tb, err := opts.Marshal(src)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdst.TypeUrl = urlPrefix + string(src.ProtoReflect().Descriptor().FullName())\n\tdst.Value = b\n\treturn nil\n}\n\n// UnmarshalTo unmarshals the underlying message from src into dst\n// using the provided unmarshal options.\n// It reports an error if dst is not of the right message type.\n//\n// If no options are specified, call src.UnmarshalTo instead.\nfunc UnmarshalTo(src *Any, dst proto.Message, opts proto.UnmarshalOptions) error {\n\tif src == nil {\n\t\treturn protoimpl.X.NewError(\"invalid nil source message\")\n\t}\n\tif !src.MessageIs(dst) {\n\t\tgot := dst.ProtoReflect().Descriptor().FullName()\n\t\twant := src.MessageName()\n\t\treturn protoimpl.X.NewError(\"mismatched message type: got %q, want %q\", got, want)\n\t}\n\treturn opts.Unmarshal(src.GetValue(), dst)\n}\n\n// UnmarshalNew unmarshals the underlying message from src into dst,\n// which is newly created message using a type resolved from the type URL.\n// The message type is resolved according to opt.Resolver,\n// which should implement protoregistry.MessageTypeResolver.\n// It reports an error if the underlying message type could not be resolved.\n//\n// If no options are specified, call src.UnmarshalNew instead.\nfunc UnmarshalNew(src *Any, opts proto.UnmarshalOptions) (dst proto.Message, err error) {\n\tif src.GetTypeUrl() == \"\" {\n\t\treturn nil, protoimpl.X.NewError(\"invalid empty type URL\")\n\t}\n\tif opts.Resolver == nil {\n\t\topts.Resolver = protoregistry.GlobalTypes\n\t}\n\tr, ok := opts.Resolver.(protoregistry.MessageTypeResolver)\n\tif !ok {\n\t\treturn nil, protoregistry.NotFound\n\t}\n\tmt, err := r.FindMessageByURL(src.GetTypeUrl())\n\tif err != nil {\n\t\tif err == protoregistry.NotFound {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn nil, protoimpl.X.NewError(\"could not resolve %q: %v\", src.GetTypeUrl(), err)\n\t}\n\tdst = mt.New().Interface()\n\treturn dst, opts.Unmarshal(src.GetValue(), dst)\n}\n\n// MessageIs reports whether the underlying message is of the same type as m.\nfunc (x *Any) MessageIs(m proto.Message) bool {\n\tif m == nil {\n\t\treturn false\n\t}\n\turl := x.GetTypeUrl()\n\tname := string(m.ProtoReflect().Descriptor().FullName())\n\tif !strings.HasSuffix(url, name) {\n\t\treturn false\n\t}\n\treturn len(url) == len(name) || url[len(url)-len(name)-1] == '/'\n}\n\n// MessageName reports the full name of the underlying message,\n// returning an empty string if invalid.\nfunc (x *Any) MessageName() protoreflect.FullName {\n\turl := x.GetTypeUrl()\n\tname := protoreflect.FullName(url)\n\tif i := strings.LastIndexByte(url, '/'); i >= 0 {\n\t\tname = name[i+len(\"/\"):]\n\t}\n\tif !name.IsValid() {\n\t\treturn \"\"\n\t}\n\treturn name\n}\n\n// MarshalFrom marshals m into x as the underlying message.\nfunc (x *Any) MarshalFrom(m proto.Message) error {\n\treturn MarshalFrom(x, m, proto.MarshalOptions{})\n}\n\n// UnmarshalTo unmarshals the contents of the underlying message of x into m.\n// It resets m before performing the unmarshal operation.\n// It reports an error if m is not of the right message type.\nfunc (x *Any) UnmarshalTo(m proto.Message) error {\n\treturn UnmarshalTo(x, m, proto.UnmarshalOptions{})\n}\n\n// UnmarshalNew unmarshals the contents of the underlying message of x into\n// a newly allocated message of the specified type.\n// It reports an error if the underlying message type could not be resolved.\nfunc (x *Any) UnmarshalNew() (proto.Message, error) {\n\treturn UnmarshalNew(x, proto.UnmarshalOptions{})\n}\n\nfunc (x *Any) Reset() {\n\t*x = Any{}\n\tmi := &file_google_protobuf_any_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Any) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Any) ProtoMessage() {}\n\nfunc (x *Any) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_any_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Any.ProtoReflect.Descriptor instead.\nfunc (*Any) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_any_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *Any) GetTypeUrl() string {\n\tif x != nil {\n\t\treturn x.TypeUrl\n\t}\n\treturn \"\"\n}\n\nfunc (x *Any) GetValue() []byte {\n\tif x != nil {\n\t\treturn x.Value\n\t}\n\treturn nil\n}\n\nvar File_google_protobuf_any_proto protoreflect.FileDescriptor\n\nconst file_google_protobuf_any_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"\\x19google/protobuf/any.proto\\x12\\x0fgoogle.protobuf\\\"6\\n\" +\n\t\"\\x03Any\\x12\\x19\\n\" +\n\t\"\\btype_url\\x18\\x01 \\x01(\\tR\\atypeUrl\\x12\\x14\\n\" +\n\t\"\\x05value\\x18\\x02 \\x01(\\fR\\x05valueBv\\n\" +\n\t\"\\x13com.google.protobufB\\bAnyProtoP\\x01Z,google.golang.org/protobuf/types/known/anypb\\xa2\\x02\\x03GPB\\xaa\\x02\\x1eGoogle.Protobuf.WellKnownTypesb\\x06proto3\"\n\nvar (\n\tfile_google_protobuf_any_proto_rawDescOnce sync.Once\n\tfile_google_protobuf_any_proto_rawDescData []byte\n)\n\nfunc file_google_protobuf_any_proto_rawDescGZIP() []byte {\n\tfile_google_protobuf_any_proto_rawDescOnce.Do(func() {\n\t\tfile_google_protobuf_any_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_google_protobuf_any_proto_rawDesc), len(file_google_protobuf_any_proto_rawDesc)))\n\t})\n\treturn file_google_protobuf_any_proto_rawDescData\n}\n\nvar file_google_protobuf_any_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_google_protobuf_any_proto_goTypes = []any{\n\t(*Any)(nil), // 0: google.protobuf.Any\n}\nvar file_google_protobuf_any_proto_depIdxs = []int32{\n\t0, // [0:0] is the sub-list for method output_type\n\t0, // [0:0] is the sub-list for method input_type\n\t0, // [0:0] is the sub-list for extension type_name\n\t0, // [0:0] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_google_protobuf_any_proto_init() }\nfunc file_google_protobuf_any_proto_init() {\n\tif File_google_protobuf_any_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_google_protobuf_any_proto_rawDesc), len(file_google_protobuf_any_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_google_protobuf_any_proto_goTypes,\n\t\tDependencyIndexes: file_google_protobuf_any_proto_depIdxs,\n\t\tMessageInfos:      file_google_protobuf_any_proto_msgTypes,\n\t}.Build()\n\tFile_google_protobuf_any_proto = out.File\n\tfile_google_protobuf_any_proto_goTypes = nil\n\tfile_google_protobuf_any_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/types/known/durationpb/duration.pb.go",
    "content": "// Protocol Buffers - Google's data interchange format\n// Copyright 2008 Google Inc.  All rights reserved.\n// https://developers.google.com/protocol-buffers/\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 Google Inc. 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\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// source: google/protobuf/duration.proto\n\n// Package durationpb contains generated types for google/protobuf/duration.proto.\n//\n// The Duration message represents a signed span of time.\n//\n// # Conversion to a Go Duration\n//\n// The AsDuration method can be used to convert a Duration message to a\n// standard Go time.Duration value:\n//\n//\td := dur.AsDuration()\n//\t... // make use of d as a time.Duration\n//\n// Converting to a time.Duration is a common operation so that the extensive\n// set of time-based operations provided by the time package can be leveraged.\n// See https://golang.org/pkg/time for more information.\n//\n// The AsDuration method performs the conversion on a best-effort basis.\n// Durations with denormal values (e.g., nanoseconds beyond -99999999 and\n// +99999999, inclusive; or seconds and nanoseconds with opposite signs)\n// are normalized during the conversion to a time.Duration. To manually check for\n// invalid Duration per the documented limitations in duration.proto,\n// additionally call the CheckValid method:\n//\n//\tif err := dur.CheckValid(); err != nil {\n//\t\t... // handle error\n//\t}\n//\n// Note that the documented limitations in duration.proto does not protect a\n// Duration from overflowing the representable range of a time.Duration in Go.\n// The AsDuration method uses saturation arithmetic such that an overflow clamps\n// the resulting value to the closest representable value (e.g., math.MaxInt64\n// for positive overflow and math.MinInt64 for negative overflow).\n//\n// # Conversion from a Go Duration\n//\n// The durationpb.New function can be used to construct a Duration message\n// from a standard Go time.Duration value:\n//\n//\tdur := durationpb.New(d)\n//\t... // make use of d as a *durationpb.Duration\npackage durationpb\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tmath \"math\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\ttime \"time\"\n\tunsafe \"unsafe\"\n)\n\n// A Duration represents a signed, fixed-length span of time represented\n// as a count of seconds and fractions of seconds at nanosecond\n// resolution. It is independent of any calendar and concepts like \"day\"\n// or \"month\". It is related to Timestamp in that the difference between\n// two Timestamp values is a Duration and it can be added or subtracted\n// from a Timestamp. Range is approximately +-10,000 years.\n//\n// # Examples\n//\n// Example 1: Compute Duration from two Timestamps in pseudo code.\n//\n//\tTimestamp start = ...;\n//\tTimestamp end = ...;\n//\tDuration duration = ...;\n//\n//\tduration.seconds = end.seconds - start.seconds;\n//\tduration.nanos = end.nanos - start.nanos;\n//\n//\tif (duration.seconds < 0 && duration.nanos > 0) {\n//\t  duration.seconds += 1;\n//\t  duration.nanos -= 1000000000;\n//\t} else if (duration.seconds > 0 && duration.nanos < 0) {\n//\t  duration.seconds -= 1;\n//\t  duration.nanos += 1000000000;\n//\t}\n//\n// Example 2: Compute Timestamp from Timestamp + Duration in pseudo code.\n//\n//\tTimestamp start = ...;\n//\tDuration duration = ...;\n//\tTimestamp end = ...;\n//\n//\tend.seconds = start.seconds + duration.seconds;\n//\tend.nanos = start.nanos + duration.nanos;\n//\n//\tif (end.nanos < 0) {\n//\t  end.seconds -= 1;\n//\t  end.nanos += 1000000000;\n//\t} else if (end.nanos >= 1000000000) {\n//\t  end.seconds += 1;\n//\t  end.nanos -= 1000000000;\n//\t}\n//\n// Example 3: Compute Duration from datetime.timedelta in Python.\n//\n//\ttd = datetime.timedelta(days=3, minutes=10)\n//\tduration = Duration()\n//\tduration.FromTimedelta(td)\n//\n// # JSON Mapping\n//\n// In JSON format, the Duration type is encoded as a string rather than an\n// object, where the string ends in the suffix \"s\" (indicating seconds) and\n// is preceded by the number of seconds, with nanoseconds expressed as\n// fractional seconds. For example, 3 seconds with 0 nanoseconds should be\n// encoded in JSON format as \"3s\", while 3 seconds and 1 nanosecond should\n// be expressed in JSON format as \"3.000000001s\", and 3 seconds and 1\n// microsecond should be expressed in JSON format as \"3.000001s\".\ntype Duration struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Signed seconds of the span of time. Must be from -315,576,000,000\n\t// to +315,576,000,000 inclusive. Note: these bounds are computed from:\n\t// 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years\n\tSeconds int64 `protobuf:\"varint,1,opt,name=seconds,proto3\" json:\"seconds,omitempty\"`\n\t// Signed fractions of a second at nanosecond resolution of the span\n\t// of time. Durations less than one second are represented with a 0\n\t// `seconds` field and a positive or negative `nanos` field. For durations\n\t// of one second or more, a non-zero value for the `nanos` field must be\n\t// of the same sign as the `seconds` field. Must be from -999,999,999\n\t// to +999,999,999 inclusive.\n\tNanos         int32 `protobuf:\"varint,2,opt,name=nanos,proto3\" json:\"nanos,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\n// New constructs a new Duration from the provided time.Duration.\nfunc New(d time.Duration) *Duration {\n\tnanos := d.Nanoseconds()\n\tsecs := nanos / 1e9\n\tnanos -= secs * 1e9\n\treturn &Duration{Seconds: int64(secs), Nanos: int32(nanos)}\n}\n\n// AsDuration converts x to a time.Duration,\n// returning the closest duration value in the event of overflow.\nfunc (x *Duration) AsDuration() time.Duration {\n\tsecs := x.GetSeconds()\n\tnanos := x.GetNanos()\n\td := time.Duration(secs) * time.Second\n\toverflow := d/time.Second != time.Duration(secs)\n\td += time.Duration(nanos) * time.Nanosecond\n\toverflow = overflow || (secs < 0 && nanos < 0 && d > 0)\n\toverflow = overflow || (secs > 0 && nanos > 0 && d < 0)\n\tif overflow {\n\t\tswitch {\n\t\tcase secs < 0:\n\t\t\treturn time.Duration(math.MinInt64)\n\t\tcase secs > 0:\n\t\t\treturn time.Duration(math.MaxInt64)\n\t\t}\n\t}\n\treturn d\n}\n\n// IsValid reports whether the duration is valid.\n// It is equivalent to CheckValid == nil.\nfunc (x *Duration) IsValid() bool {\n\treturn x.check() == 0\n}\n\n// CheckValid returns an error if the duration is invalid.\n// In particular, it checks whether the value is within the range of\n// -10000 years to +10000 years inclusive.\n// An error is reported for a nil Duration.\nfunc (x *Duration) CheckValid() error {\n\tswitch x.check() {\n\tcase invalidNil:\n\t\treturn protoimpl.X.NewError(\"invalid nil Duration\")\n\tcase invalidUnderflow:\n\t\treturn protoimpl.X.NewError(\"duration (%v) exceeds -10000 years\", x)\n\tcase invalidOverflow:\n\t\treturn protoimpl.X.NewError(\"duration (%v) exceeds +10000 years\", x)\n\tcase invalidNanosRange:\n\t\treturn protoimpl.X.NewError(\"duration (%v) has out-of-range nanos\", x)\n\tcase invalidNanosSign:\n\t\treturn protoimpl.X.NewError(\"duration (%v) has seconds and nanos with different signs\", x)\n\tdefault:\n\t\treturn nil\n\t}\n}\n\nconst (\n\t_ = iota\n\tinvalidNil\n\tinvalidUnderflow\n\tinvalidOverflow\n\tinvalidNanosRange\n\tinvalidNanosSign\n)\n\nfunc (x *Duration) check() uint {\n\tconst absDuration = 315576000000 // 10000yr * 365.25day/yr * 24hr/day * 60min/hr * 60sec/min\n\tsecs := x.GetSeconds()\n\tnanos := x.GetNanos()\n\tswitch {\n\tcase x == nil:\n\t\treturn invalidNil\n\tcase secs < -absDuration:\n\t\treturn invalidUnderflow\n\tcase secs > +absDuration:\n\t\treturn invalidOverflow\n\tcase nanos <= -1e9 || nanos >= +1e9:\n\t\treturn invalidNanosRange\n\tcase (secs > 0 && nanos < 0) || (secs < 0 && nanos > 0):\n\t\treturn invalidNanosSign\n\tdefault:\n\t\treturn 0\n\t}\n}\n\nfunc (x *Duration) Reset() {\n\t*x = Duration{}\n\tmi := &file_google_protobuf_duration_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Duration) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Duration) ProtoMessage() {}\n\nfunc (x *Duration) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_duration_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Duration.ProtoReflect.Descriptor instead.\nfunc (*Duration) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_duration_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *Duration) GetSeconds() int64 {\n\tif x != nil {\n\t\treturn x.Seconds\n\t}\n\treturn 0\n}\n\nfunc (x *Duration) GetNanos() int32 {\n\tif x != nil {\n\t\treturn x.Nanos\n\t}\n\treturn 0\n}\n\nvar File_google_protobuf_duration_proto protoreflect.FileDescriptor\n\nconst file_google_protobuf_duration_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"\\x1egoogle/protobuf/duration.proto\\x12\\x0fgoogle.protobuf\\\":\\n\" +\n\t\"\\bDuration\\x12\\x18\\n\" +\n\t\"\\aseconds\\x18\\x01 \\x01(\\x03R\\aseconds\\x12\\x14\\n\" +\n\t\"\\x05nanos\\x18\\x02 \\x01(\\x05R\\x05nanosB\\x83\\x01\\n\" +\n\t\"\\x13com.google.protobufB\\rDurationProtoP\\x01Z1google.golang.org/protobuf/types/known/durationpb\\xf8\\x01\\x01\\xa2\\x02\\x03GPB\\xaa\\x02\\x1eGoogle.Protobuf.WellKnownTypesb\\x06proto3\"\n\nvar (\n\tfile_google_protobuf_duration_proto_rawDescOnce sync.Once\n\tfile_google_protobuf_duration_proto_rawDescData []byte\n)\n\nfunc file_google_protobuf_duration_proto_rawDescGZIP() []byte {\n\tfile_google_protobuf_duration_proto_rawDescOnce.Do(func() {\n\t\tfile_google_protobuf_duration_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_google_protobuf_duration_proto_rawDesc), len(file_google_protobuf_duration_proto_rawDesc)))\n\t})\n\treturn file_google_protobuf_duration_proto_rawDescData\n}\n\nvar file_google_protobuf_duration_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_google_protobuf_duration_proto_goTypes = []any{\n\t(*Duration)(nil), // 0: google.protobuf.Duration\n}\nvar file_google_protobuf_duration_proto_depIdxs = []int32{\n\t0, // [0:0] is the sub-list for method output_type\n\t0, // [0:0] is the sub-list for method input_type\n\t0, // [0:0] is the sub-list for extension type_name\n\t0, // [0:0] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_google_protobuf_duration_proto_init() }\nfunc file_google_protobuf_duration_proto_init() {\n\tif File_google_protobuf_duration_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_google_protobuf_duration_proto_rawDesc), len(file_google_protobuf_duration_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_google_protobuf_duration_proto_goTypes,\n\t\tDependencyIndexes: file_google_protobuf_duration_proto_depIdxs,\n\t\tMessageInfos:      file_google_protobuf_duration_proto_msgTypes,\n\t}.Build()\n\tFile_google_protobuf_duration_proto = out.File\n\tfile_google_protobuf_duration_proto_goTypes = nil\n\tfile_google_protobuf_duration_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/types/known/timestamppb/timestamp.pb.go",
    "content": "// Protocol Buffers - Google's data interchange format\n// Copyright 2008 Google Inc.  All rights reserved.\n// https://developers.google.com/protocol-buffers/\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 Google Inc. 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\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// source: google/protobuf/timestamp.proto\n\n// Package timestamppb contains generated types for google/protobuf/timestamp.proto.\n//\n// The Timestamp message represents a timestamp,\n// an instant in time since the Unix epoch (January 1st, 1970).\n//\n// # Conversion to a Go Time\n//\n// The AsTime method can be used to convert a Timestamp message to a\n// standard Go time.Time value in UTC:\n//\n//\tt := ts.AsTime()\n//\t... // make use of t as a time.Time\n//\n// Converting to a time.Time is a common operation so that the extensive\n// set of time-based operations provided by the time package can be leveraged.\n// See https://golang.org/pkg/time for more information.\n//\n// The AsTime method performs the conversion on a best-effort basis. Timestamps\n// with denormal values (e.g., nanoseconds beyond 0 and 99999999, inclusive)\n// are normalized during the conversion to a time.Time. To manually check for\n// invalid Timestamps per the documented limitations in timestamp.proto,\n// additionally call the CheckValid method:\n//\n//\tif err := ts.CheckValid(); err != nil {\n//\t\t... // handle error\n//\t}\n//\n// # Conversion from a Go Time\n//\n// The timestamppb.New function can be used to construct a Timestamp message\n// from a standard Go time.Time value:\n//\n//\tts := timestamppb.New(t)\n//\t... // make use of ts as a *timestamppb.Timestamp\n//\n// In order to construct a Timestamp representing the current time, use Now:\n//\n//\tts := timestamppb.Now()\n//\t... // make use of ts as a *timestamppb.Timestamp\npackage timestamppb\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\ttime \"time\"\n\tunsafe \"unsafe\"\n)\n\n// A Timestamp represents a point in time independent of any time zone or local\n// calendar, encoded as a count of seconds and fractions of seconds at\n// nanosecond resolution. The count is relative to an epoch at UTC midnight on\n// January 1, 1970, in the proleptic Gregorian calendar which extends the\n// Gregorian calendar backwards to year one.\n//\n// All minutes are 60 seconds long. Leap seconds are \"smeared\" so that no leap\n// second table is needed for interpretation, using a [24-hour linear\n// smear](https://developers.google.com/time/smear).\n//\n// The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By\n// restricting to that range, we ensure that we can convert to and from [RFC\n// 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.\n//\n// # Examples\n//\n// Example 1: Compute Timestamp from POSIX `time()`.\n//\n//\tTimestamp timestamp;\n//\ttimestamp.set_seconds(time(NULL));\n//\ttimestamp.set_nanos(0);\n//\n// Example 2: Compute Timestamp from POSIX `gettimeofday()`.\n//\n//\tstruct timeval tv;\n//\tgettimeofday(&tv, NULL);\n//\n//\tTimestamp timestamp;\n//\ttimestamp.set_seconds(tv.tv_sec);\n//\ttimestamp.set_nanos(tv.tv_usec * 1000);\n//\n// Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.\n//\n//\tFILETIME ft;\n//\tGetSystemTimeAsFileTime(&ft);\n//\tUINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime;\n//\n//\t// A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z\n//\t// is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.\n//\tTimestamp timestamp;\n//\ttimestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));\n//\ttimestamp.set_nanos((INT32) ((ticks % 10000000) * 100));\n//\n// Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.\n//\n//\tlong millis = System.currentTimeMillis();\n//\n//\tTimestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)\n//\t    .setNanos((int) ((millis % 1000) * 1000000)).build();\n//\n// Example 5: Compute Timestamp from Java `Instant.now()`.\n//\n//\tInstant now = Instant.now();\n//\n//\tTimestamp timestamp =\n//\t    Timestamp.newBuilder().setSeconds(now.getEpochSecond())\n//\t        .setNanos(now.getNano()).build();\n//\n// Example 6: Compute Timestamp from current time in Python.\n//\n//\ttimestamp = Timestamp()\n//\ttimestamp.GetCurrentTime()\n//\n// # JSON Mapping\n//\n// In JSON format, the Timestamp type is encoded as a string in the\n// [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the\n// format is \"{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z\"\n// where {year} is always expressed using four digits while {month}, {day},\n// {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional\n// seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution),\n// are optional. The \"Z\" suffix indicates the timezone (\"UTC\"); the timezone\n// is required. A proto3 JSON serializer should always use UTC (as indicated by\n// \"Z\") when printing the Timestamp type and a proto3 JSON parser should be\n// able to accept both UTC and other timezones (as indicated by an offset).\n//\n// For example, \"2017-01-15T01:30:15.01Z\" encodes 15.01 seconds past\n// 01:30 UTC on January 15, 2017.\n//\n// In JavaScript, one can convert a Date object to this format using the\n// standard\n// [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString)\n// method. In Python, a standard `datetime.datetime` object can be converted\n// to this format using\n// [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with\n// the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use\n// the Joda Time's [`ISODateTimeFormat.dateTime()`](\n// http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime()\n// ) to obtain a formatter capable of generating timestamps in this format.\ntype Timestamp struct {\n\tstate protoimpl.MessageState `protogen:\"open.v1\"`\n\t// Represents seconds of UTC time since Unix epoch\n\t// 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to\n\t// 9999-12-31T23:59:59Z inclusive.\n\tSeconds int64 `protobuf:\"varint,1,opt,name=seconds,proto3\" json:\"seconds,omitempty\"`\n\t// Non-negative fractions of a second at nanosecond resolution. Negative\n\t// second values with fractions must still have non-negative nanos values\n\t// that count forward in time. Must be from 0 to 999,999,999\n\t// inclusive.\n\tNanos         int32 `protobuf:\"varint,2,opt,name=nanos,proto3\" json:\"nanos,omitempty\"`\n\tunknownFields protoimpl.UnknownFields\n\tsizeCache     protoimpl.SizeCache\n}\n\n// Now constructs a new Timestamp from the current time.\nfunc Now() *Timestamp {\n\treturn New(time.Now())\n}\n\n// New constructs a new Timestamp from the provided time.Time.\nfunc New(t time.Time) *Timestamp {\n\treturn &Timestamp{Seconds: int64(t.Unix()), Nanos: int32(t.Nanosecond())}\n}\n\n// AsTime converts x to a time.Time.\nfunc (x *Timestamp) AsTime() time.Time {\n\treturn time.Unix(int64(x.GetSeconds()), int64(x.GetNanos())).UTC()\n}\n\n// IsValid reports whether the timestamp is valid.\n// It is equivalent to CheckValid == nil.\nfunc (x *Timestamp) IsValid() bool {\n\treturn x.check() == 0\n}\n\n// CheckValid returns an error if the timestamp is invalid.\n// In particular, it checks whether the value represents a date that is\n// in the range of 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive.\n// An error is reported for a nil Timestamp.\nfunc (x *Timestamp) CheckValid() error {\n\tswitch x.check() {\n\tcase invalidNil:\n\t\treturn protoimpl.X.NewError(\"invalid nil Timestamp\")\n\tcase invalidUnderflow:\n\t\treturn protoimpl.X.NewError(\"timestamp (%v) before 0001-01-01\", x)\n\tcase invalidOverflow:\n\t\treturn protoimpl.X.NewError(\"timestamp (%v) after 9999-12-31\", x)\n\tcase invalidNanos:\n\t\treturn protoimpl.X.NewError(\"timestamp (%v) has out-of-range nanos\", x)\n\tdefault:\n\t\treturn nil\n\t}\n}\n\nconst (\n\t_ = iota\n\tinvalidNil\n\tinvalidUnderflow\n\tinvalidOverflow\n\tinvalidNanos\n)\n\nfunc (x *Timestamp) check() uint {\n\tconst minTimestamp = -62135596800  // Seconds between 1970-01-01T00:00:00Z and 0001-01-01T00:00:00Z, inclusive\n\tconst maxTimestamp = +253402300799 // Seconds between 1970-01-01T00:00:00Z and 9999-12-31T23:59:59Z, inclusive\n\tsecs := x.GetSeconds()\n\tnanos := x.GetNanos()\n\tswitch {\n\tcase x == nil:\n\t\treturn invalidNil\n\tcase secs < minTimestamp:\n\t\treturn invalidUnderflow\n\tcase secs > maxTimestamp:\n\t\treturn invalidOverflow\n\tcase nanos < 0 || nanos >= 1e9:\n\t\treturn invalidNanos\n\tdefault:\n\t\treturn 0\n\t}\n}\n\nfunc (x *Timestamp) Reset() {\n\t*x = Timestamp{}\n\tmi := &file_google_protobuf_timestamp_proto_msgTypes[0]\n\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\tms.StoreMessageInfo(mi)\n}\n\nfunc (x *Timestamp) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Timestamp) ProtoMessage() {}\n\nfunc (x *Timestamp) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_timestamp_proto_msgTypes[0]\n\tif x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Timestamp.ProtoReflect.Descriptor instead.\nfunc (*Timestamp) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_timestamp_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *Timestamp) GetSeconds() int64 {\n\tif x != nil {\n\t\treturn x.Seconds\n\t}\n\treturn 0\n}\n\nfunc (x *Timestamp) GetNanos() int32 {\n\tif x != nil {\n\t\treturn x.Nanos\n\t}\n\treturn 0\n}\n\nvar File_google_protobuf_timestamp_proto protoreflect.FileDescriptor\n\nconst file_google_protobuf_timestamp_proto_rawDesc = \"\" +\n\t\"\\n\" +\n\t\"\\x1fgoogle/protobuf/timestamp.proto\\x12\\x0fgoogle.protobuf\\\";\\n\" +\n\t\"\\tTimestamp\\x12\\x18\\n\" +\n\t\"\\aseconds\\x18\\x01 \\x01(\\x03R\\aseconds\\x12\\x14\\n\" +\n\t\"\\x05nanos\\x18\\x02 \\x01(\\x05R\\x05nanosB\\x85\\x01\\n\" +\n\t\"\\x13com.google.protobufB\\x0eTimestampProtoP\\x01Z2google.golang.org/protobuf/types/known/timestamppb\\xf8\\x01\\x01\\xa2\\x02\\x03GPB\\xaa\\x02\\x1eGoogle.Protobuf.WellKnownTypesb\\x06proto3\"\n\nvar (\n\tfile_google_protobuf_timestamp_proto_rawDescOnce sync.Once\n\tfile_google_protobuf_timestamp_proto_rawDescData []byte\n)\n\nfunc file_google_protobuf_timestamp_proto_rawDescGZIP() []byte {\n\tfile_google_protobuf_timestamp_proto_rawDescOnce.Do(func() {\n\t\tfile_google_protobuf_timestamp_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_google_protobuf_timestamp_proto_rawDesc), len(file_google_protobuf_timestamp_proto_rawDesc)))\n\t})\n\treturn file_google_protobuf_timestamp_proto_rawDescData\n}\n\nvar file_google_protobuf_timestamp_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_google_protobuf_timestamp_proto_goTypes = []any{\n\t(*Timestamp)(nil), // 0: google.protobuf.Timestamp\n}\nvar file_google_protobuf_timestamp_proto_depIdxs = []int32{\n\t0, // [0:0] is the sub-list for method output_type\n\t0, // [0:0] is the sub-list for method input_type\n\t0, // [0:0] is the sub-list for extension type_name\n\t0, // [0:0] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_google_protobuf_timestamp_proto_init() }\nfunc file_google_protobuf_timestamp_proto_init() {\n\tif File_google_protobuf_timestamp_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: unsafe.Slice(unsafe.StringData(file_google_protobuf_timestamp_proto_rawDesc), len(file_google_protobuf_timestamp_proto_rawDesc)),\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_google_protobuf_timestamp_proto_goTypes,\n\t\tDependencyIndexes: file_google_protobuf_timestamp_proto_depIdxs,\n\t\tMessageInfos:      file_google_protobuf_timestamp_proto_msgTypes,\n\t}.Build()\n\tFile_google_protobuf_timestamp_proto = out.File\n\tfile_google_protobuf_timestamp_proto_goTypes = nil\n\tfile_google_protobuf_timestamp_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/gopkg.in/yaml.v3/LICENSE",
    "content": "\nThis project is covered by two different licenses: MIT and Apache.\n\n#### MIT License ####\n\nThe following files were ported to Go from C files of libyaml, and thus\nare still covered by their original MIT license, with the additional\ncopyright staring in 2011 when the project was ported over:\n\n    apic.go emitterc.go parserc.go readerc.go scannerc.go\n    writerc.go yamlh.go yamlprivateh.go\n\nCopyright (c) 2006-2010 Kirill Simonov\nCopyright (c) 2006-2011 Kirill Simonov\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies 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 THE\nSOFTWARE.\n\n### Apache License ###\n\nAll the remaining project files are covered by the Apache license:\n\nCopyright (c) 2011-2019 Canonical Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n"
  },
  {
    "path": "vendor/gopkg.in/yaml.v3/NOTICE",
    "content": "Copyright 2011-2016 Canonical Ltd.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n"
  },
  {
    "path": "vendor/gopkg.in/yaml.v3/README.md",
    "content": "# YAML support for the Go language\n\nIntroduction\n------------\n\nThe yaml package enables Go programs to comfortably encode and decode YAML\nvalues. It was developed within [Canonical](https://www.canonical.com) as\npart of the [juju](https://juju.ubuntu.com) project, and is based on a\npure Go port of the well-known [libyaml](http://pyyaml.org/wiki/LibYAML)\nC library to parse and generate YAML data quickly and reliably.\n\nCompatibility\n-------------\n\nThe yaml package supports most of YAML 1.2, but preserves some behavior\nfrom 1.1 for backwards compatibility.\n\nSpecifically, as of v3 of the yaml package:\n\n - YAML 1.1 bools (_yes/no, on/off_) are supported as long as they are being\n   decoded into a typed bool value. Otherwise they behave as a string. Booleans\n   in YAML 1.2 are _true/false_ only.\n - Octals encode and decode as _0777_ per YAML 1.1, rather than _0o777_\n   as specified in YAML 1.2, because most parsers still use the old format.\n   Octals in the  _0o777_ format are supported though, so new files work.\n - Does not support base-60 floats. These are gone from YAML 1.2, and were\n   actually never supported by this package as it's clearly a poor choice.\n\nand offers backwards\ncompatibility with YAML 1.1 in some cases.\n1.2, including support for\nanchors, tags, map merging, etc. Multi-document unmarshalling is not yet\nimplemented, and base-60 floats from YAML 1.1 are purposefully not\nsupported since they're a poor design and are gone in YAML 1.2.\n\nInstallation and usage\n----------------------\n\nThe import path for the package is *gopkg.in/yaml.v3*.\n\nTo install it, run:\n\n    go get gopkg.in/yaml.v3\n\nAPI documentation\n-----------------\n\nIf opened in a browser, the import path itself leads to the API documentation:\n\n  - [https://gopkg.in/yaml.v3](https://gopkg.in/yaml.v3)\n\nAPI stability\n-------------\n\nThe package API for yaml v3 will remain stable as described in [gopkg.in](https://gopkg.in).\n\n\nLicense\n-------\n\nThe yaml package is licensed under the MIT and Apache License 2.0 licenses.\nPlease see the LICENSE file for details.\n\n\nExample\n-------\n\n```Go\npackage main\n\nimport (\n        \"fmt\"\n        \"log\"\n\n        \"gopkg.in/yaml.v3\"\n)\n\nvar data = `\na: Easy!\nb:\n  c: 2\n  d: [3, 4]\n`\n\n// Note: struct fields must be public in order for unmarshal to\n// correctly populate the data.\ntype T struct {\n        A string\n        B struct {\n                RenamedC int   `yaml:\"c\"`\n                D        []int `yaml:\",flow\"`\n        }\n}\n\nfunc main() {\n        t := T{}\n    \n        err := yaml.Unmarshal([]byte(data), &t)\n        if err != nil {\n                log.Fatalf(\"error: %v\", err)\n        }\n        fmt.Printf(\"--- t:\\n%v\\n\\n\", t)\n    \n        d, err := yaml.Marshal(&t)\n        if err != nil {\n                log.Fatalf(\"error: %v\", err)\n        }\n        fmt.Printf(\"--- t dump:\\n%s\\n\\n\", string(d))\n    \n        m := make(map[interface{}]interface{})\n    \n        err = yaml.Unmarshal([]byte(data), &m)\n        if err != nil {\n                log.Fatalf(\"error: %v\", err)\n        }\n        fmt.Printf(\"--- m:\\n%v\\n\\n\", m)\n    \n        d, err = yaml.Marshal(&m)\n        if err != nil {\n                log.Fatalf(\"error: %v\", err)\n        }\n        fmt.Printf(\"--- m dump:\\n%s\\n\\n\", string(d))\n}\n```\n\nThis example will generate the following output:\n\n```\n--- t:\n{Easy! {2 [3 4]}}\n\n--- t dump:\na: Easy!\nb:\n  c: 2\n  d: [3, 4]\n\n\n--- m:\nmap[a:Easy! b:map[c:2 d:[3 4]]]\n\n--- m dump:\na: Easy!\nb:\n  c: 2\n  d:\n  - 3\n  - 4\n```\n\n"
  },
  {
    "path": "vendor/gopkg.in/yaml.v3/apic.go",
    "content": "// \n// Copyright (c) 2011-2019 Canonical Ltd\n// Copyright (c) 2006-2010 Kirill Simonov\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.\n\npackage yaml\n\nimport (\n\t\"io\"\n)\n\nfunc yaml_insert_token(parser *yaml_parser_t, pos int, token *yaml_token_t) {\n\t//fmt.Println(\"yaml_insert_token\", \"pos:\", pos, \"typ:\", token.typ, \"head:\", parser.tokens_head, \"len:\", len(parser.tokens))\n\n\t// Check if we can move the queue at the beginning of the buffer.\n\tif parser.tokens_head > 0 && len(parser.tokens) == cap(parser.tokens) {\n\t\tif parser.tokens_head != len(parser.tokens) {\n\t\t\tcopy(parser.tokens, parser.tokens[parser.tokens_head:])\n\t\t}\n\t\tparser.tokens = parser.tokens[:len(parser.tokens)-parser.tokens_head]\n\t\tparser.tokens_head = 0\n\t}\n\tparser.tokens = append(parser.tokens, *token)\n\tif pos < 0 {\n\t\treturn\n\t}\n\tcopy(parser.tokens[parser.tokens_head+pos+1:], parser.tokens[parser.tokens_head+pos:])\n\tparser.tokens[parser.tokens_head+pos] = *token\n}\n\n// Create a new parser object.\nfunc yaml_parser_initialize(parser *yaml_parser_t) bool {\n\t*parser = yaml_parser_t{\n\t\traw_buffer: make([]byte, 0, input_raw_buffer_size),\n\t\tbuffer:     make([]byte, 0, input_buffer_size),\n\t}\n\treturn true\n}\n\n// Destroy a parser object.\nfunc yaml_parser_delete(parser *yaml_parser_t) {\n\t*parser = yaml_parser_t{}\n}\n\n// String read handler.\nfunc yaml_string_read_handler(parser *yaml_parser_t, buffer []byte) (n int, err error) {\n\tif parser.input_pos == len(parser.input) {\n\t\treturn 0, io.EOF\n\t}\n\tn = copy(buffer, parser.input[parser.input_pos:])\n\tparser.input_pos += n\n\treturn n, nil\n}\n\n// Reader read handler.\nfunc yaml_reader_read_handler(parser *yaml_parser_t, buffer []byte) (n int, err error) {\n\treturn parser.input_reader.Read(buffer)\n}\n\n// Set a string input.\nfunc yaml_parser_set_input_string(parser *yaml_parser_t, input []byte) {\n\tif parser.read_handler != nil {\n\t\tpanic(\"must set the input source only once\")\n\t}\n\tparser.read_handler = yaml_string_read_handler\n\tparser.input = input\n\tparser.input_pos = 0\n}\n\n// Set a file input.\nfunc yaml_parser_set_input_reader(parser *yaml_parser_t, r io.Reader) {\n\tif parser.read_handler != nil {\n\t\tpanic(\"must set the input source only once\")\n\t}\n\tparser.read_handler = yaml_reader_read_handler\n\tparser.input_reader = r\n}\n\n// Set the source encoding.\nfunc yaml_parser_set_encoding(parser *yaml_parser_t, encoding yaml_encoding_t) {\n\tif parser.encoding != yaml_ANY_ENCODING {\n\t\tpanic(\"must set the encoding only once\")\n\t}\n\tparser.encoding = encoding\n}\n\n// Create a new emitter object.\nfunc yaml_emitter_initialize(emitter *yaml_emitter_t) {\n\t*emitter = yaml_emitter_t{\n\t\tbuffer:     make([]byte, output_buffer_size),\n\t\traw_buffer: make([]byte, 0, output_raw_buffer_size),\n\t\tstates:     make([]yaml_emitter_state_t, 0, initial_stack_size),\n\t\tevents:     make([]yaml_event_t, 0, initial_queue_size),\n\t\tbest_width: -1,\n\t}\n}\n\n// Destroy an emitter object.\nfunc yaml_emitter_delete(emitter *yaml_emitter_t) {\n\t*emitter = yaml_emitter_t{}\n}\n\n// String write handler.\nfunc yaml_string_write_handler(emitter *yaml_emitter_t, buffer []byte) error {\n\t*emitter.output_buffer = append(*emitter.output_buffer, buffer...)\n\treturn nil\n}\n\n// yaml_writer_write_handler uses emitter.output_writer to write the\n// emitted text.\nfunc yaml_writer_write_handler(emitter *yaml_emitter_t, buffer []byte) error {\n\t_, err := emitter.output_writer.Write(buffer)\n\treturn err\n}\n\n// Set a string output.\nfunc yaml_emitter_set_output_string(emitter *yaml_emitter_t, output_buffer *[]byte) {\n\tif emitter.write_handler != nil {\n\t\tpanic(\"must set the output target only once\")\n\t}\n\temitter.write_handler = yaml_string_write_handler\n\temitter.output_buffer = output_buffer\n}\n\n// Set a file output.\nfunc yaml_emitter_set_output_writer(emitter *yaml_emitter_t, w io.Writer) {\n\tif emitter.write_handler != nil {\n\t\tpanic(\"must set the output target only once\")\n\t}\n\temitter.write_handler = yaml_writer_write_handler\n\temitter.output_writer = w\n}\n\n// Set the output encoding.\nfunc yaml_emitter_set_encoding(emitter *yaml_emitter_t, encoding yaml_encoding_t) {\n\tif emitter.encoding != yaml_ANY_ENCODING {\n\t\tpanic(\"must set the output encoding only once\")\n\t}\n\temitter.encoding = encoding\n}\n\n// Set the canonical output style.\nfunc yaml_emitter_set_canonical(emitter *yaml_emitter_t, canonical bool) {\n\temitter.canonical = canonical\n}\n\n// Set the indentation increment.\nfunc yaml_emitter_set_indent(emitter *yaml_emitter_t, indent int) {\n\tif indent < 2 || indent > 9 {\n\t\tindent = 2\n\t}\n\temitter.best_indent = indent\n}\n\n// Set the preferred line width.\nfunc yaml_emitter_set_width(emitter *yaml_emitter_t, width int) {\n\tif width < 0 {\n\t\twidth = -1\n\t}\n\temitter.best_width = width\n}\n\n// Set if unescaped non-ASCII characters are allowed.\nfunc yaml_emitter_set_unicode(emitter *yaml_emitter_t, unicode bool) {\n\temitter.unicode = unicode\n}\n\n// Set the preferred line break character.\nfunc yaml_emitter_set_break(emitter *yaml_emitter_t, line_break yaml_break_t) {\n\temitter.line_break = line_break\n}\n\n///*\n// * Destroy a token object.\n// */\n//\n//YAML_DECLARE(void)\n//yaml_token_delete(yaml_token_t *token)\n//{\n//    assert(token);  // Non-NULL token object expected.\n//\n//    switch (token.type)\n//    {\n//        case YAML_TAG_DIRECTIVE_TOKEN:\n//            yaml_free(token.data.tag_directive.handle);\n//            yaml_free(token.data.tag_directive.prefix);\n//            break;\n//\n//        case YAML_ALIAS_TOKEN:\n//            yaml_free(token.data.alias.value);\n//            break;\n//\n//        case YAML_ANCHOR_TOKEN:\n//            yaml_free(token.data.anchor.value);\n//            break;\n//\n//        case YAML_TAG_TOKEN:\n//            yaml_free(token.data.tag.handle);\n//            yaml_free(token.data.tag.suffix);\n//            break;\n//\n//        case YAML_SCALAR_TOKEN:\n//            yaml_free(token.data.scalar.value);\n//            break;\n//\n//        default:\n//            break;\n//    }\n//\n//    memset(token, 0, sizeof(yaml_token_t));\n//}\n//\n///*\n// * Check if a string is a valid UTF-8 sequence.\n// *\n// * Check 'reader.c' for more details on UTF-8 encoding.\n// */\n//\n//static int\n//yaml_check_utf8(yaml_char_t *start, size_t length)\n//{\n//    yaml_char_t *end = start+length;\n//    yaml_char_t *pointer = start;\n//\n//    while (pointer < end) {\n//        unsigned char octet;\n//        unsigned int width;\n//        unsigned int value;\n//        size_t k;\n//\n//        octet = pointer[0];\n//        width = (octet & 0x80) == 0x00 ? 1 :\n//                (octet & 0xE0) == 0xC0 ? 2 :\n//                (octet & 0xF0) == 0xE0 ? 3 :\n//                (octet & 0xF8) == 0xF0 ? 4 : 0;\n//        value = (octet & 0x80) == 0x00 ? octet & 0x7F :\n//                (octet & 0xE0) == 0xC0 ? octet & 0x1F :\n//                (octet & 0xF0) == 0xE0 ? octet & 0x0F :\n//                (octet & 0xF8) == 0xF0 ? octet & 0x07 : 0;\n//        if (!width) return 0;\n//        if (pointer+width > end) return 0;\n//        for (k = 1; k < width; k ++) {\n//            octet = pointer[k];\n//            if ((octet & 0xC0) != 0x80) return 0;\n//            value = (value << 6) + (octet & 0x3F);\n//        }\n//        if (!((width == 1) ||\n//            (width == 2 && value >= 0x80) ||\n//            (width == 3 && value >= 0x800) ||\n//            (width == 4 && value >= 0x10000))) return 0;\n//\n//        pointer += width;\n//    }\n//\n//    return 1;\n//}\n//\n\n// Create STREAM-START.\nfunc yaml_stream_start_event_initialize(event *yaml_event_t, encoding yaml_encoding_t) {\n\t*event = yaml_event_t{\n\t\ttyp:      yaml_STREAM_START_EVENT,\n\t\tencoding: encoding,\n\t}\n}\n\n// Create STREAM-END.\nfunc yaml_stream_end_event_initialize(event *yaml_event_t) {\n\t*event = yaml_event_t{\n\t\ttyp: yaml_STREAM_END_EVENT,\n\t}\n}\n\n// Create DOCUMENT-START.\nfunc yaml_document_start_event_initialize(\n\tevent *yaml_event_t,\n\tversion_directive *yaml_version_directive_t,\n\ttag_directives []yaml_tag_directive_t,\n\timplicit bool,\n) {\n\t*event = yaml_event_t{\n\t\ttyp:               yaml_DOCUMENT_START_EVENT,\n\t\tversion_directive: version_directive,\n\t\ttag_directives:    tag_directives,\n\t\timplicit:          implicit,\n\t}\n}\n\n// Create DOCUMENT-END.\nfunc yaml_document_end_event_initialize(event *yaml_event_t, implicit bool) {\n\t*event = yaml_event_t{\n\t\ttyp:      yaml_DOCUMENT_END_EVENT,\n\t\timplicit: implicit,\n\t}\n}\n\n// Create ALIAS.\nfunc yaml_alias_event_initialize(event *yaml_event_t, anchor []byte) bool {\n\t*event = yaml_event_t{\n\t\ttyp:    yaml_ALIAS_EVENT,\n\t\tanchor: anchor,\n\t}\n\treturn true\n}\n\n// Create SCALAR.\nfunc yaml_scalar_event_initialize(event *yaml_event_t, anchor, tag, value []byte, plain_implicit, quoted_implicit bool, style yaml_scalar_style_t) bool {\n\t*event = yaml_event_t{\n\t\ttyp:             yaml_SCALAR_EVENT,\n\t\tanchor:          anchor,\n\t\ttag:             tag,\n\t\tvalue:           value,\n\t\timplicit:        plain_implicit,\n\t\tquoted_implicit: quoted_implicit,\n\t\tstyle:           yaml_style_t(style),\n\t}\n\treturn true\n}\n\n// Create SEQUENCE-START.\nfunc yaml_sequence_start_event_initialize(event *yaml_event_t, anchor, tag []byte, implicit bool, style yaml_sequence_style_t) bool {\n\t*event = yaml_event_t{\n\t\ttyp:      yaml_SEQUENCE_START_EVENT,\n\t\tanchor:   anchor,\n\t\ttag:      tag,\n\t\timplicit: implicit,\n\t\tstyle:    yaml_style_t(style),\n\t}\n\treturn true\n}\n\n// Create SEQUENCE-END.\nfunc yaml_sequence_end_event_initialize(event *yaml_event_t) bool {\n\t*event = yaml_event_t{\n\t\ttyp: yaml_SEQUENCE_END_EVENT,\n\t}\n\treturn true\n}\n\n// Create MAPPING-START.\nfunc yaml_mapping_start_event_initialize(event *yaml_event_t, anchor, tag []byte, implicit bool, style yaml_mapping_style_t) {\n\t*event = yaml_event_t{\n\t\ttyp:      yaml_MAPPING_START_EVENT,\n\t\tanchor:   anchor,\n\t\ttag:      tag,\n\t\timplicit: implicit,\n\t\tstyle:    yaml_style_t(style),\n\t}\n}\n\n// Create MAPPING-END.\nfunc yaml_mapping_end_event_initialize(event *yaml_event_t) {\n\t*event = yaml_event_t{\n\t\ttyp: yaml_MAPPING_END_EVENT,\n\t}\n}\n\n// Destroy an event object.\nfunc yaml_event_delete(event *yaml_event_t) {\n\t*event = yaml_event_t{}\n}\n\n///*\n// * Create a document object.\n// */\n//\n//YAML_DECLARE(int)\n//yaml_document_initialize(document *yaml_document_t,\n//        version_directive *yaml_version_directive_t,\n//        tag_directives_start *yaml_tag_directive_t,\n//        tag_directives_end *yaml_tag_directive_t,\n//        start_implicit int, end_implicit int)\n//{\n//    struct {\n//        error yaml_error_type_t\n//    } context\n//    struct {\n//        start *yaml_node_t\n//        end *yaml_node_t\n//        top *yaml_node_t\n//    } nodes = { NULL, NULL, NULL }\n//    version_directive_copy *yaml_version_directive_t = NULL\n//    struct {\n//        start *yaml_tag_directive_t\n//        end *yaml_tag_directive_t\n//        top *yaml_tag_directive_t\n//    } tag_directives_copy = { NULL, NULL, NULL }\n//    value yaml_tag_directive_t = { NULL, NULL }\n//    mark yaml_mark_t = { 0, 0, 0 }\n//\n//    assert(document) // Non-NULL document object is expected.\n//    assert((tag_directives_start && tag_directives_end) ||\n//            (tag_directives_start == tag_directives_end))\n//                            // Valid tag directives are expected.\n//\n//    if (!STACK_INIT(&context, nodes, INITIAL_STACK_SIZE)) goto error\n//\n//    if (version_directive) {\n//        version_directive_copy = yaml_malloc(sizeof(yaml_version_directive_t))\n//        if (!version_directive_copy) goto error\n//        version_directive_copy.major = version_directive.major\n//        version_directive_copy.minor = version_directive.minor\n//    }\n//\n//    if (tag_directives_start != tag_directives_end) {\n//        tag_directive *yaml_tag_directive_t\n//        if (!STACK_INIT(&context, tag_directives_copy, INITIAL_STACK_SIZE))\n//            goto error\n//        for (tag_directive = tag_directives_start\n//                tag_directive != tag_directives_end; tag_directive ++) {\n//            assert(tag_directive.handle)\n//            assert(tag_directive.prefix)\n//            if (!yaml_check_utf8(tag_directive.handle,\n//                        strlen((char *)tag_directive.handle)))\n//                goto error\n//            if (!yaml_check_utf8(tag_directive.prefix,\n//                        strlen((char *)tag_directive.prefix)))\n//                goto error\n//            value.handle = yaml_strdup(tag_directive.handle)\n//            value.prefix = yaml_strdup(tag_directive.prefix)\n//            if (!value.handle || !value.prefix) goto error\n//            if (!PUSH(&context, tag_directives_copy, value))\n//                goto error\n//            value.handle = NULL\n//            value.prefix = NULL\n//        }\n//    }\n//\n//    DOCUMENT_INIT(*document, nodes.start, nodes.end, version_directive_copy,\n//            tag_directives_copy.start, tag_directives_copy.top,\n//            start_implicit, end_implicit, mark, mark)\n//\n//    return 1\n//\n//error:\n//    STACK_DEL(&context, nodes)\n//    yaml_free(version_directive_copy)\n//    while (!STACK_EMPTY(&context, tag_directives_copy)) {\n//        value yaml_tag_directive_t = POP(&context, tag_directives_copy)\n//        yaml_free(value.handle)\n//        yaml_free(value.prefix)\n//    }\n//    STACK_DEL(&context, tag_directives_copy)\n//    yaml_free(value.handle)\n//    yaml_free(value.prefix)\n//\n//    return 0\n//}\n//\n///*\n// * Destroy a document object.\n// */\n//\n//YAML_DECLARE(void)\n//yaml_document_delete(document *yaml_document_t)\n//{\n//    struct {\n//        error yaml_error_type_t\n//    } context\n//    tag_directive *yaml_tag_directive_t\n//\n//    context.error = YAML_NO_ERROR // Eliminate a compiler warning.\n//\n//    assert(document) // Non-NULL document object is expected.\n//\n//    while (!STACK_EMPTY(&context, document.nodes)) {\n//        node yaml_node_t = POP(&context, document.nodes)\n//        yaml_free(node.tag)\n//        switch (node.type) {\n//            case YAML_SCALAR_NODE:\n//                yaml_free(node.data.scalar.value)\n//                break\n//            case YAML_SEQUENCE_NODE:\n//                STACK_DEL(&context, node.data.sequence.items)\n//                break\n//            case YAML_MAPPING_NODE:\n//                STACK_DEL(&context, node.data.mapping.pairs)\n//                break\n//            default:\n//                assert(0) // Should not happen.\n//        }\n//    }\n//    STACK_DEL(&context, document.nodes)\n//\n//    yaml_free(document.version_directive)\n//    for (tag_directive = document.tag_directives.start\n//            tag_directive != document.tag_directives.end\n//            tag_directive++) {\n//        yaml_free(tag_directive.handle)\n//        yaml_free(tag_directive.prefix)\n//    }\n//    yaml_free(document.tag_directives.start)\n//\n//    memset(document, 0, sizeof(yaml_document_t))\n//}\n//\n///**\n// * Get a document node.\n// */\n//\n//YAML_DECLARE(yaml_node_t *)\n//yaml_document_get_node(document *yaml_document_t, index int)\n//{\n//    assert(document) // Non-NULL document object is expected.\n//\n//    if (index > 0 && document.nodes.start + index <= document.nodes.top) {\n//        return document.nodes.start + index - 1\n//    }\n//    return NULL\n//}\n//\n///**\n// * Get the root object.\n// */\n//\n//YAML_DECLARE(yaml_node_t *)\n//yaml_document_get_root_node(document *yaml_document_t)\n//{\n//    assert(document) // Non-NULL document object is expected.\n//\n//    if (document.nodes.top != document.nodes.start) {\n//        return document.nodes.start\n//    }\n//    return NULL\n//}\n//\n///*\n// * Add a scalar node to a document.\n// */\n//\n//YAML_DECLARE(int)\n//yaml_document_add_scalar(document *yaml_document_t,\n//        tag *yaml_char_t, value *yaml_char_t, length int,\n//        style yaml_scalar_style_t)\n//{\n//    struct {\n//        error yaml_error_type_t\n//    } context\n//    mark yaml_mark_t = { 0, 0, 0 }\n//    tag_copy *yaml_char_t = NULL\n//    value_copy *yaml_char_t = NULL\n//    node yaml_node_t\n//\n//    assert(document) // Non-NULL document object is expected.\n//    assert(value) // Non-NULL value is expected.\n//\n//    if (!tag) {\n//        tag = (yaml_char_t *)YAML_DEFAULT_SCALAR_TAG\n//    }\n//\n//    if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error\n//    tag_copy = yaml_strdup(tag)\n//    if (!tag_copy) goto error\n//\n//    if (length < 0) {\n//        length = strlen((char *)value)\n//    }\n//\n//    if (!yaml_check_utf8(value, length)) goto error\n//    value_copy = yaml_malloc(length+1)\n//    if (!value_copy) goto error\n//    memcpy(value_copy, value, length)\n//    value_copy[length] = '\\0'\n//\n//    SCALAR_NODE_INIT(node, tag_copy, value_copy, length, style, mark, mark)\n//    if (!PUSH(&context, document.nodes, node)) goto error\n//\n//    return document.nodes.top - document.nodes.start\n//\n//error:\n//    yaml_free(tag_copy)\n//    yaml_free(value_copy)\n//\n//    return 0\n//}\n//\n///*\n// * Add a sequence node to a document.\n// */\n//\n//YAML_DECLARE(int)\n//yaml_document_add_sequence(document *yaml_document_t,\n//        tag *yaml_char_t, style yaml_sequence_style_t)\n//{\n//    struct {\n//        error yaml_error_type_t\n//    } context\n//    mark yaml_mark_t = { 0, 0, 0 }\n//    tag_copy *yaml_char_t = NULL\n//    struct {\n//        start *yaml_node_item_t\n//        end *yaml_node_item_t\n//        top *yaml_node_item_t\n//    } items = { NULL, NULL, NULL }\n//    node yaml_node_t\n//\n//    assert(document) // Non-NULL document object is expected.\n//\n//    if (!tag) {\n//        tag = (yaml_char_t *)YAML_DEFAULT_SEQUENCE_TAG\n//    }\n//\n//    if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error\n//    tag_copy = yaml_strdup(tag)\n//    if (!tag_copy) goto error\n//\n//    if (!STACK_INIT(&context, items, INITIAL_STACK_SIZE)) goto error\n//\n//    SEQUENCE_NODE_INIT(node, tag_copy, items.start, items.end,\n//            style, mark, mark)\n//    if (!PUSH(&context, document.nodes, node)) goto error\n//\n//    return document.nodes.top - document.nodes.start\n//\n//error:\n//    STACK_DEL(&context, items)\n//    yaml_free(tag_copy)\n//\n//    return 0\n//}\n//\n///*\n// * Add a mapping node to a document.\n// */\n//\n//YAML_DECLARE(int)\n//yaml_document_add_mapping(document *yaml_document_t,\n//        tag *yaml_char_t, style yaml_mapping_style_t)\n//{\n//    struct {\n//        error yaml_error_type_t\n//    } context\n//    mark yaml_mark_t = { 0, 0, 0 }\n//    tag_copy *yaml_char_t = NULL\n//    struct {\n//        start *yaml_node_pair_t\n//        end *yaml_node_pair_t\n//        top *yaml_node_pair_t\n//    } pairs = { NULL, NULL, NULL }\n//    node yaml_node_t\n//\n//    assert(document) // Non-NULL document object is expected.\n//\n//    if (!tag) {\n//        tag = (yaml_char_t *)YAML_DEFAULT_MAPPING_TAG\n//    }\n//\n//    if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error\n//    tag_copy = yaml_strdup(tag)\n//    if (!tag_copy) goto error\n//\n//    if (!STACK_INIT(&context, pairs, INITIAL_STACK_SIZE)) goto error\n//\n//    MAPPING_NODE_INIT(node, tag_copy, pairs.start, pairs.end,\n//            style, mark, mark)\n//    if (!PUSH(&context, document.nodes, node)) goto error\n//\n//    return document.nodes.top - document.nodes.start\n//\n//error:\n//    STACK_DEL(&context, pairs)\n//    yaml_free(tag_copy)\n//\n//    return 0\n//}\n//\n///*\n// * Append an item to a sequence node.\n// */\n//\n//YAML_DECLARE(int)\n//yaml_document_append_sequence_item(document *yaml_document_t,\n//        sequence int, item int)\n//{\n//    struct {\n//        error yaml_error_type_t\n//    } context\n//\n//    assert(document) // Non-NULL document is required.\n//    assert(sequence > 0\n//            && document.nodes.start + sequence <= document.nodes.top)\n//                            // Valid sequence id is required.\n//    assert(document.nodes.start[sequence-1].type == YAML_SEQUENCE_NODE)\n//                            // A sequence node is required.\n//    assert(item > 0 && document.nodes.start + item <= document.nodes.top)\n//                            // Valid item id is required.\n//\n//    if (!PUSH(&context,\n//                document.nodes.start[sequence-1].data.sequence.items, item))\n//        return 0\n//\n//    return 1\n//}\n//\n///*\n// * Append a pair of a key and a value to a mapping node.\n// */\n//\n//YAML_DECLARE(int)\n//yaml_document_append_mapping_pair(document *yaml_document_t,\n//        mapping int, key int, value int)\n//{\n//    struct {\n//        error yaml_error_type_t\n//    } context\n//\n//    pair yaml_node_pair_t\n//\n//    assert(document) // Non-NULL document is required.\n//    assert(mapping > 0\n//            && document.nodes.start + mapping <= document.nodes.top)\n//                            // Valid mapping id is required.\n//    assert(document.nodes.start[mapping-1].type == YAML_MAPPING_NODE)\n//                            // A mapping node is required.\n//    assert(key > 0 && document.nodes.start + key <= document.nodes.top)\n//                            // Valid key id is required.\n//    assert(value > 0 && document.nodes.start + value <= document.nodes.top)\n//                            // Valid value id is required.\n//\n//    pair.key = key\n//    pair.value = value\n//\n//    if (!PUSH(&context,\n//                document.nodes.start[mapping-1].data.mapping.pairs, pair))\n//        return 0\n//\n//    return 1\n//}\n//\n//\n"
  },
  {
    "path": "vendor/gopkg.in/yaml.v3/decode.go",
    "content": "//\n// Copyright (c) 2011-2019 Canonical Ltd\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage yaml\n\nimport (\n\t\"encoding\"\n\t\"encoding/base64\"\n\t\"fmt\"\n\t\"io\"\n\t\"math\"\n\t\"reflect\"\n\t\"strconv\"\n\t\"time\"\n)\n\n// ----------------------------------------------------------------------------\n// Parser, produces a node tree out of a libyaml event stream.\n\ntype parser struct {\n\tparser   yaml_parser_t\n\tevent    yaml_event_t\n\tdoc      *Node\n\tanchors  map[string]*Node\n\tdoneInit bool\n\ttextless bool\n}\n\nfunc newParser(b []byte) *parser {\n\tp := parser{}\n\tif !yaml_parser_initialize(&p.parser) {\n\t\tpanic(\"failed to initialize YAML emitter\")\n\t}\n\tif len(b) == 0 {\n\t\tb = []byte{'\\n'}\n\t}\n\tyaml_parser_set_input_string(&p.parser, b)\n\treturn &p\n}\n\nfunc newParserFromReader(r io.Reader) *parser {\n\tp := parser{}\n\tif !yaml_parser_initialize(&p.parser) {\n\t\tpanic(\"failed to initialize YAML emitter\")\n\t}\n\tyaml_parser_set_input_reader(&p.parser, r)\n\treturn &p\n}\n\nfunc (p *parser) init() {\n\tif p.doneInit {\n\t\treturn\n\t}\n\tp.anchors = make(map[string]*Node)\n\tp.expect(yaml_STREAM_START_EVENT)\n\tp.doneInit = true\n}\n\nfunc (p *parser) destroy() {\n\tif p.event.typ != yaml_NO_EVENT {\n\t\tyaml_event_delete(&p.event)\n\t}\n\tyaml_parser_delete(&p.parser)\n}\n\n// expect consumes an event from the event stream and\n// checks that it's of the expected type.\nfunc (p *parser) expect(e yaml_event_type_t) {\n\tif p.event.typ == yaml_NO_EVENT {\n\t\tif !yaml_parser_parse(&p.parser, &p.event) {\n\t\t\tp.fail()\n\t\t}\n\t}\n\tif p.event.typ == yaml_STREAM_END_EVENT {\n\t\tfailf(\"attempted to go past the end of stream; corrupted value?\")\n\t}\n\tif p.event.typ != e {\n\t\tp.parser.problem = fmt.Sprintf(\"expected %s event but got %s\", e, p.event.typ)\n\t\tp.fail()\n\t}\n\tyaml_event_delete(&p.event)\n\tp.event.typ = yaml_NO_EVENT\n}\n\n// peek peeks at the next event in the event stream,\n// puts the results into p.event and returns the event type.\nfunc (p *parser) peek() yaml_event_type_t {\n\tif p.event.typ != yaml_NO_EVENT {\n\t\treturn p.event.typ\n\t}\n\t// It's curious choice from the underlying API to generally return a\n\t// positive result on success, but on this case return true in an error\n\t// scenario. This was the source of bugs in the past (issue #666).\n\tif !yaml_parser_parse(&p.parser, &p.event) || p.parser.error != yaml_NO_ERROR {\n\t\tp.fail()\n\t}\n\treturn p.event.typ\n}\n\nfunc (p *parser) fail() {\n\tvar where string\n\tvar line int\n\tif p.parser.context_mark.line != 0 {\n\t\tline = p.parser.context_mark.line\n\t\t// Scanner errors don't iterate line before returning error\n\t\tif p.parser.error == yaml_SCANNER_ERROR {\n\t\t\tline++\n\t\t}\n\t} else if p.parser.problem_mark.line != 0 {\n\t\tline = p.parser.problem_mark.line\n\t\t// Scanner errors don't iterate line before returning error\n\t\tif p.parser.error == yaml_SCANNER_ERROR {\n\t\t\tline++\n\t\t}\n\t}\n\tif line != 0 {\n\t\twhere = \"line \" + strconv.Itoa(line) + \": \"\n\t}\n\tvar msg string\n\tif len(p.parser.problem) > 0 {\n\t\tmsg = p.parser.problem\n\t} else {\n\t\tmsg = \"unknown problem parsing YAML content\"\n\t}\n\tfailf(\"%s%s\", where, msg)\n}\n\nfunc (p *parser) anchor(n *Node, anchor []byte) {\n\tif anchor != nil {\n\t\tn.Anchor = string(anchor)\n\t\tp.anchors[n.Anchor] = n\n\t}\n}\n\nfunc (p *parser) parse() *Node {\n\tp.init()\n\tswitch p.peek() {\n\tcase yaml_SCALAR_EVENT:\n\t\treturn p.scalar()\n\tcase yaml_ALIAS_EVENT:\n\t\treturn p.alias()\n\tcase yaml_MAPPING_START_EVENT:\n\t\treturn p.mapping()\n\tcase yaml_SEQUENCE_START_EVENT:\n\t\treturn p.sequence()\n\tcase yaml_DOCUMENT_START_EVENT:\n\t\treturn p.document()\n\tcase yaml_STREAM_END_EVENT:\n\t\t// Happens when attempting to decode an empty buffer.\n\t\treturn nil\n\tcase yaml_TAIL_COMMENT_EVENT:\n\t\tpanic(\"internal error: unexpected tail comment event (please report)\")\n\tdefault:\n\t\tpanic(\"internal error: attempted to parse unknown event (please report): \" + p.event.typ.String())\n\t}\n}\n\nfunc (p *parser) node(kind Kind, defaultTag, tag, value string) *Node {\n\tvar style Style\n\tif tag != \"\" && tag != \"!\" {\n\t\ttag = shortTag(tag)\n\t\tstyle = TaggedStyle\n\t} else if defaultTag != \"\" {\n\t\ttag = defaultTag\n\t} else if kind == ScalarNode {\n\t\ttag, _ = resolve(\"\", value)\n\t}\n\tn := &Node{\n\t\tKind:  kind,\n\t\tTag:   tag,\n\t\tValue: value,\n\t\tStyle: style,\n\t}\n\tif !p.textless {\n\t\tn.Line = p.event.start_mark.line + 1\n\t\tn.Column = p.event.start_mark.column + 1\n\t\tn.HeadComment = string(p.event.head_comment)\n\t\tn.LineComment = string(p.event.line_comment)\n\t\tn.FootComment = string(p.event.foot_comment)\n\t}\n\treturn n\n}\n\nfunc (p *parser) parseChild(parent *Node) *Node {\n\tchild := p.parse()\n\tparent.Content = append(parent.Content, child)\n\treturn child\n}\n\nfunc (p *parser) document() *Node {\n\tn := p.node(DocumentNode, \"\", \"\", \"\")\n\tp.doc = n\n\tp.expect(yaml_DOCUMENT_START_EVENT)\n\tp.parseChild(n)\n\tif p.peek() == yaml_DOCUMENT_END_EVENT {\n\t\tn.FootComment = string(p.event.foot_comment)\n\t}\n\tp.expect(yaml_DOCUMENT_END_EVENT)\n\treturn n\n}\n\nfunc (p *parser) alias() *Node {\n\tn := p.node(AliasNode, \"\", \"\", string(p.event.anchor))\n\tn.Alias = p.anchors[n.Value]\n\tif n.Alias == nil {\n\t\tfailf(\"unknown anchor '%s' referenced\", n.Value)\n\t}\n\tp.expect(yaml_ALIAS_EVENT)\n\treturn n\n}\n\nfunc (p *parser) scalar() *Node {\n\tvar parsedStyle = p.event.scalar_style()\n\tvar nodeStyle Style\n\tswitch {\n\tcase parsedStyle&yaml_DOUBLE_QUOTED_SCALAR_STYLE != 0:\n\t\tnodeStyle = DoubleQuotedStyle\n\tcase parsedStyle&yaml_SINGLE_QUOTED_SCALAR_STYLE != 0:\n\t\tnodeStyle = SingleQuotedStyle\n\tcase parsedStyle&yaml_LITERAL_SCALAR_STYLE != 0:\n\t\tnodeStyle = LiteralStyle\n\tcase parsedStyle&yaml_FOLDED_SCALAR_STYLE != 0:\n\t\tnodeStyle = FoldedStyle\n\t}\n\tvar nodeValue = string(p.event.value)\n\tvar nodeTag = string(p.event.tag)\n\tvar defaultTag string\n\tif nodeStyle == 0 {\n\t\tif nodeValue == \"<<\" {\n\t\t\tdefaultTag = mergeTag\n\t\t}\n\t} else {\n\t\tdefaultTag = strTag\n\t}\n\tn := p.node(ScalarNode, defaultTag, nodeTag, nodeValue)\n\tn.Style |= nodeStyle\n\tp.anchor(n, p.event.anchor)\n\tp.expect(yaml_SCALAR_EVENT)\n\treturn n\n}\n\nfunc (p *parser) sequence() *Node {\n\tn := p.node(SequenceNode, seqTag, string(p.event.tag), \"\")\n\tif p.event.sequence_style()&yaml_FLOW_SEQUENCE_STYLE != 0 {\n\t\tn.Style |= FlowStyle\n\t}\n\tp.anchor(n, p.event.anchor)\n\tp.expect(yaml_SEQUENCE_START_EVENT)\n\tfor p.peek() != yaml_SEQUENCE_END_EVENT {\n\t\tp.parseChild(n)\n\t}\n\tn.LineComment = string(p.event.line_comment)\n\tn.FootComment = string(p.event.foot_comment)\n\tp.expect(yaml_SEQUENCE_END_EVENT)\n\treturn n\n}\n\nfunc (p *parser) mapping() *Node {\n\tn := p.node(MappingNode, mapTag, string(p.event.tag), \"\")\n\tblock := true\n\tif p.event.mapping_style()&yaml_FLOW_MAPPING_STYLE != 0 {\n\t\tblock = false\n\t\tn.Style |= FlowStyle\n\t}\n\tp.anchor(n, p.event.anchor)\n\tp.expect(yaml_MAPPING_START_EVENT)\n\tfor p.peek() != yaml_MAPPING_END_EVENT {\n\t\tk := p.parseChild(n)\n\t\tif block && k.FootComment != \"\" {\n\t\t\t// Must be a foot comment for the prior value when being dedented.\n\t\t\tif len(n.Content) > 2 {\n\t\t\t\tn.Content[len(n.Content)-3].FootComment = k.FootComment\n\t\t\t\tk.FootComment = \"\"\n\t\t\t}\n\t\t}\n\t\tv := p.parseChild(n)\n\t\tif k.FootComment == \"\" && v.FootComment != \"\" {\n\t\t\tk.FootComment = v.FootComment\n\t\t\tv.FootComment = \"\"\n\t\t}\n\t\tif p.peek() == yaml_TAIL_COMMENT_EVENT {\n\t\t\tif k.FootComment == \"\" {\n\t\t\t\tk.FootComment = string(p.event.foot_comment)\n\t\t\t}\n\t\t\tp.expect(yaml_TAIL_COMMENT_EVENT)\n\t\t}\n\t}\n\tn.LineComment = string(p.event.line_comment)\n\tn.FootComment = string(p.event.foot_comment)\n\tif n.Style&FlowStyle == 0 && n.FootComment != \"\" && len(n.Content) > 1 {\n\t\tn.Content[len(n.Content)-2].FootComment = n.FootComment\n\t\tn.FootComment = \"\"\n\t}\n\tp.expect(yaml_MAPPING_END_EVENT)\n\treturn n\n}\n\n// ----------------------------------------------------------------------------\n// Decoder, unmarshals a node into a provided value.\n\ntype decoder struct {\n\tdoc     *Node\n\taliases map[*Node]bool\n\tterrors []string\n\n\tstringMapType  reflect.Type\n\tgeneralMapType reflect.Type\n\n\tknownFields bool\n\tuniqueKeys  bool\n\tdecodeCount int\n\taliasCount  int\n\taliasDepth  int\n\n\tmergedFields map[interface{}]bool\n}\n\nvar (\n\tnodeType       = reflect.TypeOf(Node{})\n\tdurationType   = reflect.TypeOf(time.Duration(0))\n\tstringMapType  = reflect.TypeOf(map[string]interface{}{})\n\tgeneralMapType = reflect.TypeOf(map[interface{}]interface{}{})\n\tifaceType      = generalMapType.Elem()\n\ttimeType       = reflect.TypeOf(time.Time{})\n\tptrTimeType    = reflect.TypeOf(&time.Time{})\n)\n\nfunc newDecoder() *decoder {\n\td := &decoder{\n\t\tstringMapType:  stringMapType,\n\t\tgeneralMapType: generalMapType,\n\t\tuniqueKeys:     true,\n\t}\n\td.aliases = make(map[*Node]bool)\n\treturn d\n}\n\nfunc (d *decoder) terror(n *Node, tag string, out reflect.Value) {\n\tif n.Tag != \"\" {\n\t\ttag = n.Tag\n\t}\n\tvalue := n.Value\n\tif tag != seqTag && tag != mapTag {\n\t\tif len(value) > 10 {\n\t\t\tvalue = \" `\" + value[:7] + \"...`\"\n\t\t} else {\n\t\t\tvalue = \" `\" + value + \"`\"\n\t\t}\n\t}\n\td.terrors = append(d.terrors, fmt.Sprintf(\"line %d: cannot unmarshal %s%s into %s\", n.Line, shortTag(tag), value, out.Type()))\n}\n\nfunc (d *decoder) callUnmarshaler(n *Node, u Unmarshaler) (good bool) {\n\terr := u.UnmarshalYAML(n)\n\tif e, ok := err.(*TypeError); ok {\n\t\td.terrors = append(d.terrors, e.Errors...)\n\t\treturn false\n\t}\n\tif err != nil {\n\t\tfail(err)\n\t}\n\treturn true\n}\n\nfunc (d *decoder) callObsoleteUnmarshaler(n *Node, u obsoleteUnmarshaler) (good bool) {\n\tterrlen := len(d.terrors)\n\terr := u.UnmarshalYAML(func(v interface{}) (err error) {\n\t\tdefer handleErr(&err)\n\t\td.unmarshal(n, reflect.ValueOf(v))\n\t\tif len(d.terrors) > terrlen {\n\t\t\tissues := d.terrors[terrlen:]\n\t\t\td.terrors = d.terrors[:terrlen]\n\t\t\treturn &TypeError{issues}\n\t\t}\n\t\treturn nil\n\t})\n\tif e, ok := err.(*TypeError); ok {\n\t\td.terrors = append(d.terrors, e.Errors...)\n\t\treturn false\n\t}\n\tif err != nil {\n\t\tfail(err)\n\t}\n\treturn true\n}\n\n// d.prepare initializes and dereferences pointers and calls UnmarshalYAML\n// if a value is found to implement it.\n// It returns the initialized and dereferenced out value, whether\n// unmarshalling was already done by UnmarshalYAML, and if so whether\n// its types unmarshalled appropriately.\n//\n// If n holds a null value, prepare returns before doing anything.\nfunc (d *decoder) prepare(n *Node, out reflect.Value) (newout reflect.Value, unmarshaled, good bool) {\n\tif n.ShortTag() == nullTag {\n\t\treturn out, false, false\n\t}\n\tagain := true\n\tfor again {\n\t\tagain = false\n\t\tif out.Kind() == reflect.Ptr {\n\t\t\tif out.IsNil() {\n\t\t\t\tout.Set(reflect.New(out.Type().Elem()))\n\t\t\t}\n\t\t\tout = out.Elem()\n\t\t\tagain = true\n\t\t}\n\t\tif out.CanAddr() {\n\t\t\touti := out.Addr().Interface()\n\t\t\tif u, ok := outi.(Unmarshaler); ok {\n\t\t\t\tgood = d.callUnmarshaler(n, u)\n\t\t\t\treturn out, true, good\n\t\t\t}\n\t\t\tif u, ok := outi.(obsoleteUnmarshaler); ok {\n\t\t\t\tgood = d.callObsoleteUnmarshaler(n, u)\n\t\t\t\treturn out, true, good\n\t\t\t}\n\t\t}\n\t}\n\treturn out, false, false\n}\n\nfunc (d *decoder) fieldByIndex(n *Node, v reflect.Value, index []int) (field reflect.Value) {\n\tif n.ShortTag() == nullTag {\n\t\treturn reflect.Value{}\n\t}\n\tfor _, num := range index {\n\t\tfor {\n\t\t\tif v.Kind() == reflect.Ptr {\n\t\t\t\tif v.IsNil() {\n\t\t\t\t\tv.Set(reflect.New(v.Type().Elem()))\n\t\t\t\t}\n\t\t\t\tv = v.Elem()\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t\tv = v.Field(num)\n\t}\n\treturn v\n}\n\nconst (\n\t// 400,000 decode operations is ~500kb of dense object declarations, or\n\t// ~5kb of dense object declarations with 10000% alias expansion\n\talias_ratio_range_low = 400000\n\n\t// 4,000,000 decode operations is ~5MB of dense object declarations, or\n\t// ~4.5MB of dense object declarations with 10% alias expansion\n\talias_ratio_range_high = 4000000\n\n\t// alias_ratio_range is the range over which we scale allowed alias ratios\n\talias_ratio_range = float64(alias_ratio_range_high - alias_ratio_range_low)\n)\n\nfunc allowedAliasRatio(decodeCount int) float64 {\n\tswitch {\n\tcase decodeCount <= alias_ratio_range_low:\n\t\t// allow 99% to come from alias expansion for small-to-medium documents\n\t\treturn 0.99\n\tcase decodeCount >= alias_ratio_range_high:\n\t\t// allow 10% to come from alias expansion for very large documents\n\t\treturn 0.10\n\tdefault:\n\t\t// scale smoothly from 99% down to 10% over the range.\n\t\t// this maps to 396,000 - 400,000 allowed alias-driven decodes over the range.\n\t\t// 400,000 decode operations is ~100MB of allocations in worst-case scenarios (single-item maps).\n\t\treturn 0.99 - 0.89*(float64(decodeCount-alias_ratio_range_low)/alias_ratio_range)\n\t}\n}\n\nfunc (d *decoder) unmarshal(n *Node, out reflect.Value) (good bool) {\n\td.decodeCount++\n\tif d.aliasDepth > 0 {\n\t\td.aliasCount++\n\t}\n\tif d.aliasCount > 100 && d.decodeCount > 1000 && float64(d.aliasCount)/float64(d.decodeCount) > allowedAliasRatio(d.decodeCount) {\n\t\tfailf(\"document contains excessive aliasing\")\n\t}\n\tif out.Type() == nodeType {\n\t\tout.Set(reflect.ValueOf(n).Elem())\n\t\treturn true\n\t}\n\tswitch n.Kind {\n\tcase DocumentNode:\n\t\treturn d.document(n, out)\n\tcase AliasNode:\n\t\treturn d.alias(n, out)\n\t}\n\tout, unmarshaled, good := d.prepare(n, out)\n\tif unmarshaled {\n\t\treturn good\n\t}\n\tswitch n.Kind {\n\tcase ScalarNode:\n\t\tgood = d.scalar(n, out)\n\tcase MappingNode:\n\t\tgood = d.mapping(n, out)\n\tcase SequenceNode:\n\t\tgood = d.sequence(n, out)\n\tcase 0:\n\t\tif n.IsZero() {\n\t\t\treturn d.null(out)\n\t\t}\n\t\tfallthrough\n\tdefault:\n\t\tfailf(\"cannot decode node with unknown kind %d\", n.Kind)\n\t}\n\treturn good\n}\n\nfunc (d *decoder) document(n *Node, out reflect.Value) (good bool) {\n\tif len(n.Content) == 1 {\n\t\td.doc = n\n\t\td.unmarshal(n.Content[0], out)\n\t\treturn true\n\t}\n\treturn false\n}\n\nfunc (d *decoder) alias(n *Node, out reflect.Value) (good bool) {\n\tif d.aliases[n] {\n\t\t// TODO this could actually be allowed in some circumstances.\n\t\tfailf(\"anchor '%s' value contains itself\", n.Value)\n\t}\n\td.aliases[n] = true\n\td.aliasDepth++\n\tgood = d.unmarshal(n.Alias, out)\n\td.aliasDepth--\n\tdelete(d.aliases, n)\n\treturn good\n}\n\nvar zeroValue reflect.Value\n\nfunc resetMap(out reflect.Value) {\n\tfor _, k := range out.MapKeys() {\n\t\tout.SetMapIndex(k, zeroValue)\n\t}\n}\n\nfunc (d *decoder) null(out reflect.Value) bool {\n\tif out.CanAddr() {\n\t\tswitch out.Kind() {\n\t\tcase reflect.Interface, reflect.Ptr, reflect.Map, reflect.Slice:\n\t\t\tout.Set(reflect.Zero(out.Type()))\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc (d *decoder) scalar(n *Node, out reflect.Value) bool {\n\tvar tag string\n\tvar resolved interface{}\n\tif n.indicatedString() {\n\t\ttag = strTag\n\t\tresolved = n.Value\n\t} else {\n\t\ttag, resolved = resolve(n.Tag, n.Value)\n\t\tif tag == binaryTag {\n\t\t\tdata, err := base64.StdEncoding.DecodeString(resolved.(string))\n\t\t\tif err != nil {\n\t\t\t\tfailf(\"!!binary value contains invalid base64 data\")\n\t\t\t}\n\t\t\tresolved = string(data)\n\t\t}\n\t}\n\tif resolved == nil {\n\t\treturn d.null(out)\n\t}\n\tif resolvedv := reflect.ValueOf(resolved); out.Type() == resolvedv.Type() {\n\t\t// We've resolved to exactly the type we want, so use that.\n\t\tout.Set(resolvedv)\n\t\treturn true\n\t}\n\t// Perhaps we can use the value as a TextUnmarshaler to\n\t// set its value.\n\tif out.CanAddr() {\n\t\tu, ok := out.Addr().Interface().(encoding.TextUnmarshaler)\n\t\tif ok {\n\t\t\tvar text []byte\n\t\t\tif tag == binaryTag {\n\t\t\t\ttext = []byte(resolved.(string))\n\t\t\t} else {\n\t\t\t\t// We let any value be unmarshaled into TextUnmarshaler.\n\t\t\t\t// That might be more lax than we'd like, but the\n\t\t\t\t// TextUnmarshaler itself should bowl out any dubious values.\n\t\t\t\ttext = []byte(n.Value)\n\t\t\t}\n\t\t\terr := u.UnmarshalText(text)\n\t\t\tif err != nil {\n\t\t\t\tfail(err)\n\t\t\t}\n\t\t\treturn true\n\t\t}\n\t}\n\tswitch out.Kind() {\n\tcase reflect.String:\n\t\tif tag == binaryTag {\n\t\t\tout.SetString(resolved.(string))\n\t\t\treturn true\n\t\t}\n\t\tout.SetString(n.Value)\n\t\treturn true\n\tcase reflect.Interface:\n\t\tout.Set(reflect.ValueOf(resolved))\n\t\treturn true\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\t// This used to work in v2, but it's very unfriendly.\n\t\tisDuration := out.Type() == durationType\n\n\t\tswitch resolved := resolved.(type) {\n\t\tcase int:\n\t\t\tif !isDuration && !out.OverflowInt(int64(resolved)) {\n\t\t\t\tout.SetInt(int64(resolved))\n\t\t\t\treturn true\n\t\t\t}\n\t\tcase int64:\n\t\t\tif !isDuration && !out.OverflowInt(resolved) {\n\t\t\t\tout.SetInt(resolved)\n\t\t\t\treturn true\n\t\t\t}\n\t\tcase uint64:\n\t\t\tif !isDuration && resolved <= math.MaxInt64 && !out.OverflowInt(int64(resolved)) {\n\t\t\t\tout.SetInt(int64(resolved))\n\t\t\t\treturn true\n\t\t\t}\n\t\tcase float64:\n\t\t\tif !isDuration && resolved <= math.MaxInt64 && !out.OverflowInt(int64(resolved)) {\n\t\t\t\tout.SetInt(int64(resolved))\n\t\t\t\treturn true\n\t\t\t}\n\t\tcase string:\n\t\t\tif out.Type() == durationType {\n\t\t\t\td, err := time.ParseDuration(resolved)\n\t\t\t\tif err == nil {\n\t\t\t\t\tout.SetInt(int64(d))\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\tswitch resolved := resolved.(type) {\n\t\tcase int:\n\t\t\tif resolved >= 0 && !out.OverflowUint(uint64(resolved)) {\n\t\t\t\tout.SetUint(uint64(resolved))\n\t\t\t\treturn true\n\t\t\t}\n\t\tcase int64:\n\t\t\tif resolved >= 0 && !out.OverflowUint(uint64(resolved)) {\n\t\t\t\tout.SetUint(uint64(resolved))\n\t\t\t\treturn true\n\t\t\t}\n\t\tcase uint64:\n\t\t\tif !out.OverflowUint(uint64(resolved)) {\n\t\t\t\tout.SetUint(uint64(resolved))\n\t\t\t\treturn true\n\t\t\t}\n\t\tcase float64:\n\t\t\tif resolved <= math.MaxUint64 && !out.OverflowUint(uint64(resolved)) {\n\t\t\t\tout.SetUint(uint64(resolved))\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\tcase reflect.Bool:\n\t\tswitch resolved := resolved.(type) {\n\t\tcase bool:\n\t\t\tout.SetBool(resolved)\n\t\t\treturn true\n\t\tcase string:\n\t\t\t// This offers some compatibility with the 1.1 spec (https://yaml.org/type/bool.html).\n\t\t\t// It only works if explicitly attempting to unmarshal into a typed bool value.\n\t\t\tswitch resolved {\n\t\t\tcase \"y\", \"Y\", \"yes\", \"Yes\", \"YES\", \"on\", \"On\", \"ON\":\n\t\t\t\tout.SetBool(true)\n\t\t\t\treturn true\n\t\t\tcase \"n\", \"N\", \"no\", \"No\", \"NO\", \"off\", \"Off\", \"OFF\":\n\t\t\t\tout.SetBool(false)\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\tcase reflect.Float32, reflect.Float64:\n\t\tswitch resolved := resolved.(type) {\n\t\tcase int:\n\t\t\tout.SetFloat(float64(resolved))\n\t\t\treturn true\n\t\tcase int64:\n\t\t\tout.SetFloat(float64(resolved))\n\t\t\treturn true\n\t\tcase uint64:\n\t\t\tout.SetFloat(float64(resolved))\n\t\t\treturn true\n\t\tcase float64:\n\t\t\tout.SetFloat(resolved)\n\t\t\treturn true\n\t\t}\n\tcase reflect.Struct:\n\t\tif resolvedv := reflect.ValueOf(resolved); out.Type() == resolvedv.Type() {\n\t\t\tout.Set(resolvedv)\n\t\t\treturn true\n\t\t}\n\tcase reflect.Ptr:\n\t\tpanic(\"yaml internal error: please report the issue\")\n\t}\n\td.terror(n, tag, out)\n\treturn false\n}\n\nfunc settableValueOf(i interface{}) reflect.Value {\n\tv := reflect.ValueOf(i)\n\tsv := reflect.New(v.Type()).Elem()\n\tsv.Set(v)\n\treturn sv\n}\n\nfunc (d *decoder) sequence(n *Node, out reflect.Value) (good bool) {\n\tl := len(n.Content)\n\n\tvar iface reflect.Value\n\tswitch out.Kind() {\n\tcase reflect.Slice:\n\t\tout.Set(reflect.MakeSlice(out.Type(), l, l))\n\tcase reflect.Array:\n\t\tif l != out.Len() {\n\t\t\tfailf(\"invalid array: want %d elements but got %d\", out.Len(), l)\n\t\t}\n\tcase reflect.Interface:\n\t\t// No type hints. Will have to use a generic sequence.\n\t\tiface = out\n\t\tout = settableValueOf(make([]interface{}, l))\n\tdefault:\n\t\td.terror(n, seqTag, out)\n\t\treturn false\n\t}\n\tet := out.Type().Elem()\n\n\tj := 0\n\tfor i := 0; i < l; i++ {\n\t\te := reflect.New(et).Elem()\n\t\tif ok := d.unmarshal(n.Content[i], e); ok {\n\t\t\tout.Index(j).Set(e)\n\t\t\tj++\n\t\t}\n\t}\n\tif out.Kind() != reflect.Array {\n\t\tout.Set(out.Slice(0, j))\n\t}\n\tif iface.IsValid() {\n\t\tiface.Set(out)\n\t}\n\treturn true\n}\n\nfunc (d *decoder) mapping(n *Node, out reflect.Value) (good bool) {\n\tl := len(n.Content)\n\tif d.uniqueKeys {\n\t\tnerrs := len(d.terrors)\n\t\tfor i := 0; i < l; i += 2 {\n\t\t\tni := n.Content[i]\n\t\t\tfor j := i + 2; j < l; j += 2 {\n\t\t\t\tnj := n.Content[j]\n\t\t\t\tif ni.Kind == nj.Kind && ni.Value == nj.Value {\n\t\t\t\t\td.terrors = append(d.terrors, fmt.Sprintf(\"line %d: mapping key %#v already defined at line %d\", nj.Line, nj.Value, ni.Line))\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif len(d.terrors) > nerrs {\n\t\t\treturn false\n\t\t}\n\t}\n\tswitch out.Kind() {\n\tcase reflect.Struct:\n\t\treturn d.mappingStruct(n, out)\n\tcase reflect.Map:\n\t\t// okay\n\tcase reflect.Interface:\n\t\tiface := out\n\t\tif isStringMap(n) {\n\t\t\tout = reflect.MakeMap(d.stringMapType)\n\t\t} else {\n\t\t\tout = reflect.MakeMap(d.generalMapType)\n\t\t}\n\t\tiface.Set(out)\n\tdefault:\n\t\td.terror(n, mapTag, out)\n\t\treturn false\n\t}\n\n\toutt := out.Type()\n\tkt := outt.Key()\n\tet := outt.Elem()\n\n\tstringMapType := d.stringMapType\n\tgeneralMapType := d.generalMapType\n\tif outt.Elem() == ifaceType {\n\t\tif outt.Key().Kind() == reflect.String {\n\t\t\td.stringMapType = outt\n\t\t} else if outt.Key() == ifaceType {\n\t\t\td.generalMapType = outt\n\t\t}\n\t}\n\n\tmergedFields := d.mergedFields\n\td.mergedFields = nil\n\n\tvar mergeNode *Node\n\n\tmapIsNew := false\n\tif out.IsNil() {\n\t\tout.Set(reflect.MakeMap(outt))\n\t\tmapIsNew = true\n\t}\n\tfor i := 0; i < l; i += 2 {\n\t\tif isMerge(n.Content[i]) {\n\t\t\tmergeNode = n.Content[i+1]\n\t\t\tcontinue\n\t\t}\n\t\tk := reflect.New(kt).Elem()\n\t\tif d.unmarshal(n.Content[i], k) {\n\t\t\tif mergedFields != nil {\n\t\t\t\tki := k.Interface()\n\t\t\t\tif mergedFields[ki] {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tmergedFields[ki] = true\n\t\t\t}\n\t\t\tkkind := k.Kind()\n\t\t\tif kkind == reflect.Interface {\n\t\t\t\tkkind = k.Elem().Kind()\n\t\t\t}\n\t\t\tif kkind == reflect.Map || kkind == reflect.Slice {\n\t\t\t\tfailf(\"invalid map key: %#v\", k.Interface())\n\t\t\t}\n\t\t\te := reflect.New(et).Elem()\n\t\t\tif d.unmarshal(n.Content[i+1], e) || n.Content[i+1].ShortTag() == nullTag && (mapIsNew || !out.MapIndex(k).IsValid()) {\n\t\t\t\tout.SetMapIndex(k, e)\n\t\t\t}\n\t\t}\n\t}\n\n\td.mergedFields = mergedFields\n\tif mergeNode != nil {\n\t\td.merge(n, mergeNode, out)\n\t}\n\n\td.stringMapType = stringMapType\n\td.generalMapType = generalMapType\n\treturn true\n}\n\nfunc isStringMap(n *Node) bool {\n\tif n.Kind != MappingNode {\n\t\treturn false\n\t}\n\tl := len(n.Content)\n\tfor i := 0; i < l; i += 2 {\n\t\tshortTag := n.Content[i].ShortTag()\n\t\tif shortTag != strTag && shortTag != mergeTag {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\nfunc (d *decoder) mappingStruct(n *Node, out reflect.Value) (good bool) {\n\tsinfo, err := getStructInfo(out.Type())\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tvar inlineMap reflect.Value\n\tvar elemType reflect.Type\n\tif sinfo.InlineMap != -1 {\n\t\tinlineMap = out.Field(sinfo.InlineMap)\n\t\telemType = inlineMap.Type().Elem()\n\t}\n\n\tfor _, index := range sinfo.InlineUnmarshalers {\n\t\tfield := d.fieldByIndex(n, out, index)\n\t\td.prepare(n, field)\n\t}\n\n\tmergedFields := d.mergedFields\n\td.mergedFields = nil\n\tvar mergeNode *Node\n\tvar doneFields []bool\n\tif d.uniqueKeys {\n\t\tdoneFields = make([]bool, len(sinfo.FieldsList))\n\t}\n\tname := settableValueOf(\"\")\n\tl := len(n.Content)\n\tfor i := 0; i < l; i += 2 {\n\t\tni := n.Content[i]\n\t\tif isMerge(ni) {\n\t\t\tmergeNode = n.Content[i+1]\n\t\t\tcontinue\n\t\t}\n\t\tif !d.unmarshal(ni, name) {\n\t\t\tcontinue\n\t\t}\n\t\tsname := name.String()\n\t\tif mergedFields != nil {\n\t\t\tif mergedFields[sname] {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tmergedFields[sname] = true\n\t\t}\n\t\tif info, ok := sinfo.FieldsMap[sname]; ok {\n\t\t\tif d.uniqueKeys {\n\t\t\t\tif doneFields[info.Id] {\n\t\t\t\t\td.terrors = append(d.terrors, fmt.Sprintf(\"line %d: field %s already set in type %s\", ni.Line, name.String(), out.Type()))\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tdoneFields[info.Id] = true\n\t\t\t}\n\t\t\tvar field reflect.Value\n\t\t\tif info.Inline == nil {\n\t\t\t\tfield = out.Field(info.Num)\n\t\t\t} else {\n\t\t\t\tfield = d.fieldByIndex(n, out, info.Inline)\n\t\t\t}\n\t\t\td.unmarshal(n.Content[i+1], field)\n\t\t} else if sinfo.InlineMap != -1 {\n\t\t\tif inlineMap.IsNil() {\n\t\t\t\tinlineMap.Set(reflect.MakeMap(inlineMap.Type()))\n\t\t\t}\n\t\t\tvalue := reflect.New(elemType).Elem()\n\t\t\td.unmarshal(n.Content[i+1], value)\n\t\t\tinlineMap.SetMapIndex(name, value)\n\t\t} else if d.knownFields {\n\t\t\td.terrors = append(d.terrors, fmt.Sprintf(\"line %d: field %s not found in type %s\", ni.Line, name.String(), out.Type()))\n\t\t}\n\t}\n\n\td.mergedFields = mergedFields\n\tif mergeNode != nil {\n\t\td.merge(n, mergeNode, out)\n\t}\n\treturn true\n}\n\nfunc failWantMap() {\n\tfailf(\"map merge requires map or sequence of maps as the value\")\n}\n\nfunc (d *decoder) merge(parent *Node, merge *Node, out reflect.Value) {\n\tmergedFields := d.mergedFields\n\tif mergedFields == nil {\n\t\td.mergedFields = make(map[interface{}]bool)\n\t\tfor i := 0; i < len(parent.Content); i += 2 {\n\t\t\tk := reflect.New(ifaceType).Elem()\n\t\t\tif d.unmarshal(parent.Content[i], k) {\n\t\t\t\td.mergedFields[k.Interface()] = true\n\t\t\t}\n\t\t}\n\t}\n\n\tswitch merge.Kind {\n\tcase MappingNode:\n\t\td.unmarshal(merge, out)\n\tcase AliasNode:\n\t\tif merge.Alias != nil && merge.Alias.Kind != MappingNode {\n\t\t\tfailWantMap()\n\t\t}\n\t\td.unmarshal(merge, out)\n\tcase SequenceNode:\n\t\tfor i := 0; i < len(merge.Content); i++ {\n\t\t\tni := merge.Content[i]\n\t\t\tif ni.Kind == AliasNode {\n\t\t\t\tif ni.Alias != nil && ni.Alias.Kind != MappingNode {\n\t\t\t\t\tfailWantMap()\n\t\t\t\t}\n\t\t\t} else if ni.Kind != MappingNode {\n\t\t\t\tfailWantMap()\n\t\t\t}\n\t\t\td.unmarshal(ni, out)\n\t\t}\n\tdefault:\n\t\tfailWantMap()\n\t}\n\n\td.mergedFields = mergedFields\n}\n\nfunc isMerge(n *Node) bool {\n\treturn n.Kind == ScalarNode && n.Value == \"<<\" && (n.Tag == \"\" || n.Tag == \"!\" || shortTag(n.Tag) == mergeTag)\n}\n"
  },
  {
    "path": "vendor/gopkg.in/yaml.v3/emitterc.go",
    "content": "//\n// Copyright (c) 2011-2019 Canonical Ltd\n// Copyright (c) 2006-2010 Kirill Simonov\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.\n\npackage yaml\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n)\n\n// Flush the buffer if needed.\nfunc flush(emitter *yaml_emitter_t) bool {\n\tif emitter.buffer_pos+5 >= len(emitter.buffer) {\n\t\treturn yaml_emitter_flush(emitter)\n\t}\n\treturn true\n}\n\n// Put a character to the output buffer.\nfunc put(emitter *yaml_emitter_t, value byte) bool {\n\tif emitter.buffer_pos+5 >= len(emitter.buffer) && !yaml_emitter_flush(emitter) {\n\t\treturn false\n\t}\n\temitter.buffer[emitter.buffer_pos] = value\n\temitter.buffer_pos++\n\temitter.column++\n\treturn true\n}\n\n// Put a line break to the output buffer.\nfunc put_break(emitter *yaml_emitter_t) bool {\n\tif emitter.buffer_pos+5 >= len(emitter.buffer) && !yaml_emitter_flush(emitter) {\n\t\treturn false\n\t}\n\tswitch emitter.line_break {\n\tcase yaml_CR_BREAK:\n\t\temitter.buffer[emitter.buffer_pos] = '\\r'\n\t\temitter.buffer_pos += 1\n\tcase yaml_LN_BREAK:\n\t\temitter.buffer[emitter.buffer_pos] = '\\n'\n\t\temitter.buffer_pos += 1\n\tcase yaml_CRLN_BREAK:\n\t\temitter.buffer[emitter.buffer_pos+0] = '\\r'\n\t\temitter.buffer[emitter.buffer_pos+1] = '\\n'\n\t\temitter.buffer_pos += 2\n\tdefault:\n\t\tpanic(\"unknown line break setting\")\n\t}\n\tif emitter.column == 0 {\n\t\temitter.space_above = true\n\t}\n\temitter.column = 0\n\temitter.line++\n\t// [Go] Do this here and below and drop from everywhere else (see commented lines).\n\temitter.indention = true\n\treturn true\n}\n\n// Copy a character from a string into buffer.\nfunc write(emitter *yaml_emitter_t, s []byte, i *int) bool {\n\tif emitter.buffer_pos+5 >= len(emitter.buffer) && !yaml_emitter_flush(emitter) {\n\t\treturn false\n\t}\n\tp := emitter.buffer_pos\n\tw := width(s[*i])\n\tswitch w {\n\tcase 4:\n\t\temitter.buffer[p+3] = s[*i+3]\n\t\tfallthrough\n\tcase 3:\n\t\temitter.buffer[p+2] = s[*i+2]\n\t\tfallthrough\n\tcase 2:\n\t\temitter.buffer[p+1] = s[*i+1]\n\t\tfallthrough\n\tcase 1:\n\t\temitter.buffer[p+0] = s[*i+0]\n\tdefault:\n\t\tpanic(\"unknown character width\")\n\t}\n\temitter.column++\n\temitter.buffer_pos += w\n\t*i += w\n\treturn true\n}\n\n// Write a whole string into buffer.\nfunc write_all(emitter *yaml_emitter_t, s []byte) bool {\n\tfor i := 0; i < len(s); {\n\t\tif !write(emitter, s, &i) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// Copy a line break character from a string into buffer.\nfunc write_break(emitter *yaml_emitter_t, s []byte, i *int) bool {\n\tif s[*i] == '\\n' {\n\t\tif !put_break(emitter) {\n\t\t\treturn false\n\t\t}\n\t\t*i++\n\t} else {\n\t\tif !write(emitter, s, i) {\n\t\t\treturn false\n\t\t}\n\t\tif emitter.column == 0 {\n\t\t\temitter.space_above = true\n\t\t}\n\t\temitter.column = 0\n\t\temitter.line++\n\t\t// [Go] Do this here and above and drop from everywhere else (see commented lines).\n\t\temitter.indention = true\n\t}\n\treturn true\n}\n\n// Set an emitter error and return false.\nfunc yaml_emitter_set_emitter_error(emitter *yaml_emitter_t, problem string) bool {\n\temitter.error = yaml_EMITTER_ERROR\n\temitter.problem = problem\n\treturn false\n}\n\n// Emit an event.\nfunc yaml_emitter_emit(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\temitter.events = append(emitter.events, *event)\n\tfor !yaml_emitter_need_more_events(emitter) {\n\t\tevent := &emitter.events[emitter.events_head]\n\t\tif !yaml_emitter_analyze_event(emitter, event) {\n\t\t\treturn false\n\t\t}\n\t\tif !yaml_emitter_state_machine(emitter, event) {\n\t\t\treturn false\n\t\t}\n\t\tyaml_event_delete(event)\n\t\temitter.events_head++\n\t}\n\treturn true\n}\n\n// Check if we need to accumulate more events before emitting.\n//\n// We accumulate extra\n//  - 1 event for DOCUMENT-START\n//  - 2 events for SEQUENCE-START\n//  - 3 events for MAPPING-START\n//\nfunc yaml_emitter_need_more_events(emitter *yaml_emitter_t) bool {\n\tif emitter.events_head == len(emitter.events) {\n\t\treturn true\n\t}\n\tvar accumulate int\n\tswitch emitter.events[emitter.events_head].typ {\n\tcase yaml_DOCUMENT_START_EVENT:\n\t\taccumulate = 1\n\t\tbreak\n\tcase yaml_SEQUENCE_START_EVENT:\n\t\taccumulate = 2\n\t\tbreak\n\tcase yaml_MAPPING_START_EVENT:\n\t\taccumulate = 3\n\t\tbreak\n\tdefault:\n\t\treturn false\n\t}\n\tif len(emitter.events)-emitter.events_head > accumulate {\n\t\treturn false\n\t}\n\tvar level int\n\tfor i := emitter.events_head; i < len(emitter.events); i++ {\n\t\tswitch emitter.events[i].typ {\n\t\tcase yaml_STREAM_START_EVENT, yaml_DOCUMENT_START_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT:\n\t\t\tlevel++\n\t\tcase yaml_STREAM_END_EVENT, yaml_DOCUMENT_END_EVENT, yaml_SEQUENCE_END_EVENT, yaml_MAPPING_END_EVENT:\n\t\t\tlevel--\n\t\t}\n\t\tif level == 0 {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// Append a directive to the directives stack.\nfunc yaml_emitter_append_tag_directive(emitter *yaml_emitter_t, value *yaml_tag_directive_t, allow_duplicates bool) bool {\n\tfor i := 0; i < len(emitter.tag_directives); i++ {\n\t\tif bytes.Equal(value.handle, emitter.tag_directives[i].handle) {\n\t\t\tif allow_duplicates {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn yaml_emitter_set_emitter_error(emitter, \"duplicate %TAG directive\")\n\t\t}\n\t}\n\n\t// [Go] Do we actually need to copy this given garbage collection\n\t// and the lack of deallocating destructors?\n\ttag_copy := yaml_tag_directive_t{\n\t\thandle: make([]byte, len(value.handle)),\n\t\tprefix: make([]byte, len(value.prefix)),\n\t}\n\tcopy(tag_copy.handle, value.handle)\n\tcopy(tag_copy.prefix, value.prefix)\n\temitter.tag_directives = append(emitter.tag_directives, tag_copy)\n\treturn true\n}\n\n// Increase the indentation level.\nfunc yaml_emitter_increase_indent(emitter *yaml_emitter_t, flow, indentless bool) bool {\n\temitter.indents = append(emitter.indents, emitter.indent)\n\tif emitter.indent < 0 {\n\t\tif flow {\n\t\t\temitter.indent = emitter.best_indent\n\t\t} else {\n\t\t\temitter.indent = 0\n\t\t}\n\t} else if !indentless {\n\t\t// [Go] This was changed so that indentations are more regular.\n\t\tif emitter.states[len(emitter.states)-1] == yaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE {\n\t\t\t// The first indent inside a sequence will just skip the \"- \" indicator.\n\t\t\temitter.indent += 2\n\t\t} else {\n\t\t\t// Everything else aligns to the chosen indentation.\n\t\t\temitter.indent = emitter.best_indent*((emitter.indent+emitter.best_indent)/emitter.best_indent)\n\t\t}\n\t}\n\treturn true\n}\n\n// State dispatcher.\nfunc yaml_emitter_state_machine(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\tswitch emitter.state {\n\tdefault:\n\tcase yaml_EMIT_STREAM_START_STATE:\n\t\treturn yaml_emitter_emit_stream_start(emitter, event)\n\n\tcase yaml_EMIT_FIRST_DOCUMENT_START_STATE:\n\t\treturn yaml_emitter_emit_document_start(emitter, event, true)\n\n\tcase yaml_EMIT_DOCUMENT_START_STATE:\n\t\treturn yaml_emitter_emit_document_start(emitter, event, false)\n\n\tcase yaml_EMIT_DOCUMENT_CONTENT_STATE:\n\t\treturn yaml_emitter_emit_document_content(emitter, event)\n\n\tcase yaml_EMIT_DOCUMENT_END_STATE:\n\t\treturn yaml_emitter_emit_document_end(emitter, event)\n\n\tcase yaml_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE:\n\t\treturn yaml_emitter_emit_flow_sequence_item(emitter, event, true, false)\n\n\tcase yaml_EMIT_FLOW_SEQUENCE_TRAIL_ITEM_STATE:\n\t\treturn yaml_emitter_emit_flow_sequence_item(emitter, event, false, true)\n\n\tcase yaml_EMIT_FLOW_SEQUENCE_ITEM_STATE:\n\t\treturn yaml_emitter_emit_flow_sequence_item(emitter, event, false, false)\n\n\tcase yaml_EMIT_FLOW_MAPPING_FIRST_KEY_STATE:\n\t\treturn yaml_emitter_emit_flow_mapping_key(emitter, event, true, false)\n\n\tcase yaml_EMIT_FLOW_MAPPING_TRAIL_KEY_STATE:\n\t\treturn yaml_emitter_emit_flow_mapping_key(emitter, event, false, true)\n\n\tcase yaml_EMIT_FLOW_MAPPING_KEY_STATE:\n\t\treturn yaml_emitter_emit_flow_mapping_key(emitter, event, false, false)\n\n\tcase yaml_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE:\n\t\treturn yaml_emitter_emit_flow_mapping_value(emitter, event, true)\n\n\tcase yaml_EMIT_FLOW_MAPPING_VALUE_STATE:\n\t\treturn yaml_emitter_emit_flow_mapping_value(emitter, event, false)\n\n\tcase yaml_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE:\n\t\treturn yaml_emitter_emit_block_sequence_item(emitter, event, true)\n\n\tcase yaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE:\n\t\treturn yaml_emitter_emit_block_sequence_item(emitter, event, false)\n\n\tcase yaml_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE:\n\t\treturn yaml_emitter_emit_block_mapping_key(emitter, event, true)\n\n\tcase yaml_EMIT_BLOCK_MAPPING_KEY_STATE:\n\t\treturn yaml_emitter_emit_block_mapping_key(emitter, event, false)\n\n\tcase yaml_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE:\n\t\treturn yaml_emitter_emit_block_mapping_value(emitter, event, true)\n\n\tcase yaml_EMIT_BLOCK_MAPPING_VALUE_STATE:\n\t\treturn yaml_emitter_emit_block_mapping_value(emitter, event, false)\n\n\tcase yaml_EMIT_END_STATE:\n\t\treturn yaml_emitter_set_emitter_error(emitter, \"expected nothing after STREAM-END\")\n\t}\n\tpanic(\"invalid emitter state\")\n}\n\n// Expect STREAM-START.\nfunc yaml_emitter_emit_stream_start(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\tif event.typ != yaml_STREAM_START_EVENT {\n\t\treturn yaml_emitter_set_emitter_error(emitter, \"expected STREAM-START\")\n\t}\n\tif emitter.encoding == yaml_ANY_ENCODING {\n\t\temitter.encoding = event.encoding\n\t\tif emitter.encoding == yaml_ANY_ENCODING {\n\t\t\temitter.encoding = yaml_UTF8_ENCODING\n\t\t}\n\t}\n\tif emitter.best_indent < 2 || emitter.best_indent > 9 {\n\t\temitter.best_indent = 2\n\t}\n\tif emitter.best_width >= 0 && emitter.best_width <= emitter.best_indent*2 {\n\t\temitter.best_width = 80\n\t}\n\tif emitter.best_width < 0 {\n\t\temitter.best_width = 1<<31 - 1\n\t}\n\tif emitter.line_break == yaml_ANY_BREAK {\n\t\temitter.line_break = yaml_LN_BREAK\n\t}\n\n\temitter.indent = -1\n\temitter.line = 0\n\temitter.column = 0\n\temitter.whitespace = true\n\temitter.indention = true\n\temitter.space_above = true\n\temitter.foot_indent = -1\n\n\tif emitter.encoding != yaml_UTF8_ENCODING {\n\t\tif !yaml_emitter_write_bom(emitter) {\n\t\t\treturn false\n\t\t}\n\t}\n\temitter.state = yaml_EMIT_FIRST_DOCUMENT_START_STATE\n\treturn true\n}\n\n// Expect DOCUMENT-START or STREAM-END.\nfunc yaml_emitter_emit_document_start(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool {\n\n\tif event.typ == yaml_DOCUMENT_START_EVENT {\n\n\t\tif event.version_directive != nil {\n\t\t\tif !yaml_emitter_analyze_version_directive(emitter, event.version_directive) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\tfor i := 0; i < len(event.tag_directives); i++ {\n\t\t\ttag_directive := &event.tag_directives[i]\n\t\t\tif !yaml_emitter_analyze_tag_directive(emitter, tag_directive) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif !yaml_emitter_append_tag_directive(emitter, tag_directive, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\tfor i := 0; i < len(default_tag_directives); i++ {\n\t\t\ttag_directive := &default_tag_directives[i]\n\t\t\tif !yaml_emitter_append_tag_directive(emitter, tag_directive, true) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\timplicit := event.implicit\n\t\tif !first || emitter.canonical {\n\t\t\timplicit = false\n\t\t}\n\n\t\tif emitter.open_ended && (event.version_directive != nil || len(event.tag_directives) > 0) {\n\t\t\tif !yaml_emitter_write_indicator(emitter, []byte(\"...\"), true, false, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\tif event.version_directive != nil {\n\t\t\timplicit = false\n\t\t\tif !yaml_emitter_write_indicator(emitter, []byte(\"%YAML\"), true, false, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif !yaml_emitter_write_indicator(emitter, []byte(\"1.1\"), true, false, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\tif len(event.tag_directives) > 0 {\n\t\t\timplicit = false\n\t\t\tfor i := 0; i < len(event.tag_directives); i++ {\n\t\t\t\ttag_directive := &event.tag_directives[i]\n\t\t\t\tif !yaml_emitter_write_indicator(emitter, []byte(\"%TAG\"), true, false, false) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tif !yaml_emitter_write_tag_handle(emitter, tag_directive.handle) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tif !yaml_emitter_write_tag_content(emitter, tag_directive.prefix, true) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif yaml_emitter_check_empty_document(emitter) {\n\t\t\timplicit = false\n\t\t}\n\t\tif !implicit {\n\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif !yaml_emitter_write_indicator(emitter, []byte(\"---\"), true, false, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif emitter.canonical || true {\n\t\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif len(emitter.head_comment) > 0 {\n\t\t\tif !yaml_emitter_process_head_comment(emitter) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif !put_break(emitter) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\temitter.state = yaml_EMIT_DOCUMENT_CONTENT_STATE\n\t\treturn true\n\t}\n\n\tif event.typ == yaml_STREAM_END_EVENT {\n\t\tif emitter.open_ended {\n\t\t\tif !yaml_emitter_write_indicator(emitter, []byte(\"...\"), true, false, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif !yaml_emitter_flush(emitter) {\n\t\t\treturn false\n\t\t}\n\t\temitter.state = yaml_EMIT_END_STATE\n\t\treturn true\n\t}\n\n\treturn yaml_emitter_set_emitter_error(emitter, \"expected DOCUMENT-START or STREAM-END\")\n}\n\n// Expect the root node.\nfunc yaml_emitter_emit_document_content(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\temitter.states = append(emitter.states, yaml_EMIT_DOCUMENT_END_STATE)\n\n\tif !yaml_emitter_process_head_comment(emitter) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_emit_node(emitter, event, true, false, false, false) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_process_line_comment(emitter) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_process_foot_comment(emitter) {\n\t\treturn false\n\t}\n\treturn true\n}\n\n// Expect DOCUMENT-END.\nfunc yaml_emitter_emit_document_end(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\tif event.typ != yaml_DOCUMENT_END_EVENT {\n\t\treturn yaml_emitter_set_emitter_error(emitter, \"expected DOCUMENT-END\")\n\t}\n\t// [Go] Force document foot separation.\n\temitter.foot_indent = 0\n\tif !yaml_emitter_process_foot_comment(emitter) {\n\t\treturn false\n\t}\n\temitter.foot_indent = -1\n\tif !yaml_emitter_write_indent(emitter) {\n\t\treturn false\n\t}\n\tif !event.implicit {\n\t\t// [Go] Allocate the slice elsewhere.\n\t\tif !yaml_emitter_write_indicator(emitter, []byte(\"...\"), true, false, false) {\n\t\t\treturn false\n\t\t}\n\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\treturn false\n\t\t}\n\t}\n\tif !yaml_emitter_flush(emitter) {\n\t\treturn false\n\t}\n\temitter.state = yaml_EMIT_DOCUMENT_START_STATE\n\temitter.tag_directives = emitter.tag_directives[:0]\n\treturn true\n}\n\n// Expect a flow item node.\nfunc yaml_emitter_emit_flow_sequence_item(emitter *yaml_emitter_t, event *yaml_event_t, first, trail bool) bool {\n\tif first {\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{'['}, true, true, false) {\n\t\t\treturn false\n\t\t}\n\t\tif !yaml_emitter_increase_indent(emitter, true, false) {\n\t\t\treturn false\n\t\t}\n\t\temitter.flow_level++\n\t}\n\n\tif event.typ == yaml_SEQUENCE_END_EVENT {\n\t\tif emitter.canonical && !first && !trail {\n\t\t\tif !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\temitter.flow_level--\n\t\temitter.indent = emitter.indents[len(emitter.indents)-1]\n\t\temitter.indents = emitter.indents[:len(emitter.indents)-1]\n\t\tif emitter.column == 0 || emitter.canonical && !first {\n\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{']'}, false, false, false) {\n\t\t\treturn false\n\t\t}\n\t\tif !yaml_emitter_process_line_comment(emitter) {\n\t\t\treturn false\n\t\t}\n\t\tif !yaml_emitter_process_foot_comment(emitter) {\n\t\t\treturn false\n\t\t}\n\t\temitter.state = emitter.states[len(emitter.states)-1]\n\t\temitter.states = emitter.states[:len(emitter.states)-1]\n\n\t\treturn true\n\t}\n\n\tif !first && !trail {\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tif !yaml_emitter_process_head_comment(emitter) {\n\t\treturn false\n\t}\n\tif emitter.column == 0 {\n\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tif emitter.canonical || emitter.column > emitter.best_width {\n\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\treturn false\n\t\t}\n\t}\n\tif len(emitter.line_comment)+len(emitter.foot_comment)+len(emitter.tail_comment) > 0 {\n\t\temitter.states = append(emitter.states, yaml_EMIT_FLOW_SEQUENCE_TRAIL_ITEM_STATE)\n\t} else {\n\t\temitter.states = append(emitter.states, yaml_EMIT_FLOW_SEQUENCE_ITEM_STATE)\n\t}\n\tif !yaml_emitter_emit_node(emitter, event, false, true, false, false) {\n\t\treturn false\n\t}\n\tif len(emitter.line_comment)+len(emitter.foot_comment)+len(emitter.tail_comment) > 0 {\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) {\n\t\t\treturn false\n\t\t}\n\t}\n\tif !yaml_emitter_process_line_comment(emitter) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_process_foot_comment(emitter) {\n\t\treturn false\n\t}\n\treturn true\n}\n\n// Expect a flow key node.\nfunc yaml_emitter_emit_flow_mapping_key(emitter *yaml_emitter_t, event *yaml_event_t, first, trail bool) bool {\n\tif first {\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{'{'}, true, true, false) {\n\t\t\treturn false\n\t\t}\n\t\tif !yaml_emitter_increase_indent(emitter, true, false) {\n\t\t\treturn false\n\t\t}\n\t\temitter.flow_level++\n\t}\n\n\tif event.typ == yaml_MAPPING_END_EVENT {\n\t\tif (emitter.canonical || len(emitter.head_comment)+len(emitter.foot_comment)+len(emitter.tail_comment) > 0) && !first && !trail {\n\t\t\tif !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif !yaml_emitter_process_head_comment(emitter) {\n\t\t\treturn false\n\t\t}\n\t\temitter.flow_level--\n\t\temitter.indent = emitter.indents[len(emitter.indents)-1]\n\t\temitter.indents = emitter.indents[:len(emitter.indents)-1]\n\t\tif emitter.canonical && !first {\n\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{'}'}, false, false, false) {\n\t\t\treturn false\n\t\t}\n\t\tif !yaml_emitter_process_line_comment(emitter) {\n\t\t\treturn false\n\t\t}\n\t\tif !yaml_emitter_process_foot_comment(emitter) {\n\t\t\treturn false\n\t\t}\n\t\temitter.state = emitter.states[len(emitter.states)-1]\n\t\temitter.states = emitter.states[:len(emitter.states)-1]\n\t\treturn true\n\t}\n\n\tif !first && !trail {\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tif !yaml_emitter_process_head_comment(emitter) {\n\t\treturn false\n\t}\n\n\tif emitter.column == 0 {\n\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tif emitter.canonical || emitter.column > emitter.best_width {\n\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tif !emitter.canonical && yaml_emitter_check_simple_key(emitter) {\n\t\temitter.states = append(emitter.states, yaml_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE)\n\t\treturn yaml_emitter_emit_node(emitter, event, false, false, true, true)\n\t}\n\tif !yaml_emitter_write_indicator(emitter, []byte{'?'}, true, false, false) {\n\t\treturn false\n\t}\n\temitter.states = append(emitter.states, yaml_EMIT_FLOW_MAPPING_VALUE_STATE)\n\treturn yaml_emitter_emit_node(emitter, event, false, false, true, false)\n}\n\n// Expect a flow value node.\nfunc yaml_emitter_emit_flow_mapping_value(emitter *yaml_emitter_t, event *yaml_event_t, simple bool) bool {\n\tif simple {\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{':'}, false, false, false) {\n\t\t\treturn false\n\t\t}\n\t} else {\n\t\tif emitter.canonical || emitter.column > emitter.best_width {\n\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{':'}, true, false, false) {\n\t\t\treturn false\n\t\t}\n\t}\n\tif len(emitter.line_comment)+len(emitter.foot_comment)+len(emitter.tail_comment) > 0 {\n\t\temitter.states = append(emitter.states, yaml_EMIT_FLOW_MAPPING_TRAIL_KEY_STATE)\n\t} else {\n\t\temitter.states = append(emitter.states, yaml_EMIT_FLOW_MAPPING_KEY_STATE)\n\t}\n\tif !yaml_emitter_emit_node(emitter, event, false, false, true, false) {\n\t\treturn false\n\t}\n\tif len(emitter.line_comment)+len(emitter.foot_comment)+len(emitter.tail_comment) > 0 {\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) {\n\t\t\treturn false\n\t\t}\n\t}\n\tif !yaml_emitter_process_line_comment(emitter) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_process_foot_comment(emitter) {\n\t\treturn false\n\t}\n\treturn true\n}\n\n// Expect a block item node.\nfunc yaml_emitter_emit_block_sequence_item(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool {\n\tif first {\n\t\tif !yaml_emitter_increase_indent(emitter, false, false) {\n\t\t\treturn false\n\t\t}\n\t}\n\tif event.typ == yaml_SEQUENCE_END_EVENT {\n\t\temitter.indent = emitter.indents[len(emitter.indents)-1]\n\t\temitter.indents = emitter.indents[:len(emitter.indents)-1]\n\t\temitter.state = emitter.states[len(emitter.states)-1]\n\t\temitter.states = emitter.states[:len(emitter.states)-1]\n\t\treturn true\n\t}\n\tif !yaml_emitter_process_head_comment(emitter) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_write_indent(emitter) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_write_indicator(emitter, []byte{'-'}, true, false, true) {\n\t\treturn false\n\t}\n\temitter.states = append(emitter.states, yaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE)\n\tif !yaml_emitter_emit_node(emitter, event, false, true, false, false) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_process_line_comment(emitter) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_process_foot_comment(emitter) {\n\t\treturn false\n\t}\n\treturn true\n}\n\n// Expect a block key node.\nfunc yaml_emitter_emit_block_mapping_key(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool {\n\tif first {\n\t\tif !yaml_emitter_increase_indent(emitter, false, false) {\n\t\t\treturn false\n\t\t}\n\t}\n\tif !yaml_emitter_process_head_comment(emitter) {\n\t\treturn false\n\t}\n\tif event.typ == yaml_MAPPING_END_EVENT {\n\t\temitter.indent = emitter.indents[len(emitter.indents)-1]\n\t\temitter.indents = emitter.indents[:len(emitter.indents)-1]\n\t\temitter.state = emitter.states[len(emitter.states)-1]\n\t\temitter.states = emitter.states[:len(emitter.states)-1]\n\t\treturn true\n\t}\n\tif !yaml_emitter_write_indent(emitter) {\n\t\treturn false\n\t}\n\tif len(emitter.line_comment) > 0 {\n\t\t// [Go] A line comment was provided for the key. That's unusual as the\n\t\t//      scanner associates line comments with the value. Either way,\n\t\t//      save the line comment and render it appropriately later.\n\t\temitter.key_line_comment = emitter.line_comment\n\t\temitter.line_comment = nil\n\t}\n\tif yaml_emitter_check_simple_key(emitter) {\n\t\temitter.states = append(emitter.states, yaml_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE)\n\t\treturn yaml_emitter_emit_node(emitter, event, false, false, true, true)\n\t}\n\tif !yaml_emitter_write_indicator(emitter, []byte{'?'}, true, false, true) {\n\t\treturn false\n\t}\n\temitter.states = append(emitter.states, yaml_EMIT_BLOCK_MAPPING_VALUE_STATE)\n\treturn yaml_emitter_emit_node(emitter, event, false, false, true, false)\n}\n\n// Expect a block value node.\nfunc yaml_emitter_emit_block_mapping_value(emitter *yaml_emitter_t, event *yaml_event_t, simple bool) bool {\n\tif simple {\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{':'}, false, false, false) {\n\t\t\treturn false\n\t\t}\n\t} else {\n\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\treturn false\n\t\t}\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{':'}, true, false, true) {\n\t\t\treturn false\n\t\t}\n\t}\n\tif len(emitter.key_line_comment) > 0 {\n\t\t// [Go] Line comments are generally associated with the value, but when there's\n\t\t//      no value on the same line as a mapping key they end up attached to the\n\t\t//      key itself.\n\t\tif event.typ == yaml_SCALAR_EVENT {\n\t\t\tif len(emitter.line_comment) == 0 {\n\t\t\t\t// A scalar is coming and it has no line comments by itself yet,\n\t\t\t\t// so just let it handle the line comment as usual. If it has a\n\t\t\t\t// line comment, we can't have both so the one from the key is lost.\n\t\t\t\temitter.line_comment = emitter.key_line_comment\n\t\t\t\temitter.key_line_comment = nil\n\t\t\t}\n\t\t} else if event.sequence_style() != yaml_FLOW_SEQUENCE_STYLE && (event.typ == yaml_MAPPING_START_EVENT || event.typ == yaml_SEQUENCE_START_EVENT) {\n\t\t\t// An indented block follows, so write the comment right now.\n\t\t\temitter.line_comment, emitter.key_line_comment = emitter.key_line_comment, emitter.line_comment\n\t\t\tif !yaml_emitter_process_line_comment(emitter) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\temitter.line_comment, emitter.key_line_comment = emitter.key_line_comment, emitter.line_comment\n\t\t}\n\t}\n\temitter.states = append(emitter.states, yaml_EMIT_BLOCK_MAPPING_KEY_STATE)\n\tif !yaml_emitter_emit_node(emitter, event, false, false, true, false) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_process_line_comment(emitter) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_process_foot_comment(emitter) {\n\t\treturn false\n\t}\n\treturn true\n}\n\nfunc yaml_emitter_silent_nil_event(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\treturn event.typ == yaml_SCALAR_EVENT && event.implicit && !emitter.canonical && len(emitter.scalar_data.value) == 0\n}\n\n// Expect a node.\nfunc yaml_emitter_emit_node(emitter *yaml_emitter_t, event *yaml_event_t,\n\troot bool, sequence bool, mapping bool, simple_key bool) bool {\n\n\temitter.root_context = root\n\temitter.sequence_context = sequence\n\temitter.mapping_context = mapping\n\temitter.simple_key_context = simple_key\n\n\tswitch event.typ {\n\tcase yaml_ALIAS_EVENT:\n\t\treturn yaml_emitter_emit_alias(emitter, event)\n\tcase yaml_SCALAR_EVENT:\n\t\treturn yaml_emitter_emit_scalar(emitter, event)\n\tcase yaml_SEQUENCE_START_EVENT:\n\t\treturn yaml_emitter_emit_sequence_start(emitter, event)\n\tcase yaml_MAPPING_START_EVENT:\n\t\treturn yaml_emitter_emit_mapping_start(emitter, event)\n\tdefault:\n\t\treturn yaml_emitter_set_emitter_error(emitter,\n\t\t\tfmt.Sprintf(\"expected SCALAR, SEQUENCE-START, MAPPING-START, or ALIAS, but got %v\", event.typ))\n\t}\n}\n\n// Expect ALIAS.\nfunc yaml_emitter_emit_alias(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\tif !yaml_emitter_process_anchor(emitter) {\n\t\treturn false\n\t}\n\temitter.state = emitter.states[len(emitter.states)-1]\n\temitter.states = emitter.states[:len(emitter.states)-1]\n\treturn true\n}\n\n// Expect SCALAR.\nfunc yaml_emitter_emit_scalar(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\tif !yaml_emitter_select_scalar_style(emitter, event) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_process_anchor(emitter) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_process_tag(emitter) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_increase_indent(emitter, true, false) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_process_scalar(emitter) {\n\t\treturn false\n\t}\n\temitter.indent = emitter.indents[len(emitter.indents)-1]\n\temitter.indents = emitter.indents[:len(emitter.indents)-1]\n\temitter.state = emitter.states[len(emitter.states)-1]\n\temitter.states = emitter.states[:len(emitter.states)-1]\n\treturn true\n}\n\n// Expect SEQUENCE-START.\nfunc yaml_emitter_emit_sequence_start(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\tif !yaml_emitter_process_anchor(emitter) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_process_tag(emitter) {\n\t\treturn false\n\t}\n\tif emitter.flow_level > 0 || emitter.canonical || event.sequence_style() == yaml_FLOW_SEQUENCE_STYLE ||\n\t\tyaml_emitter_check_empty_sequence(emitter) {\n\t\temitter.state = yaml_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE\n\t} else {\n\t\temitter.state = yaml_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE\n\t}\n\treturn true\n}\n\n// Expect MAPPING-START.\nfunc yaml_emitter_emit_mapping_start(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\tif !yaml_emitter_process_anchor(emitter) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_process_tag(emitter) {\n\t\treturn false\n\t}\n\tif emitter.flow_level > 0 || emitter.canonical || event.mapping_style() == yaml_FLOW_MAPPING_STYLE ||\n\t\tyaml_emitter_check_empty_mapping(emitter) {\n\t\temitter.state = yaml_EMIT_FLOW_MAPPING_FIRST_KEY_STATE\n\t} else {\n\t\temitter.state = yaml_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE\n\t}\n\treturn true\n}\n\n// Check if the document content is an empty scalar.\nfunc yaml_emitter_check_empty_document(emitter *yaml_emitter_t) bool {\n\treturn false // [Go] Huh?\n}\n\n// Check if the next events represent an empty sequence.\nfunc yaml_emitter_check_empty_sequence(emitter *yaml_emitter_t) bool {\n\tif len(emitter.events)-emitter.events_head < 2 {\n\t\treturn false\n\t}\n\treturn emitter.events[emitter.events_head].typ == yaml_SEQUENCE_START_EVENT &&\n\t\temitter.events[emitter.events_head+1].typ == yaml_SEQUENCE_END_EVENT\n}\n\n// Check if the next events represent an empty mapping.\nfunc yaml_emitter_check_empty_mapping(emitter *yaml_emitter_t) bool {\n\tif len(emitter.events)-emitter.events_head < 2 {\n\t\treturn false\n\t}\n\treturn emitter.events[emitter.events_head].typ == yaml_MAPPING_START_EVENT &&\n\t\temitter.events[emitter.events_head+1].typ == yaml_MAPPING_END_EVENT\n}\n\n// Check if the next node can be expressed as a simple key.\nfunc yaml_emitter_check_simple_key(emitter *yaml_emitter_t) bool {\n\tlength := 0\n\tswitch emitter.events[emitter.events_head].typ {\n\tcase yaml_ALIAS_EVENT:\n\t\tlength += len(emitter.anchor_data.anchor)\n\tcase yaml_SCALAR_EVENT:\n\t\tif emitter.scalar_data.multiline {\n\t\t\treturn false\n\t\t}\n\t\tlength += len(emitter.anchor_data.anchor) +\n\t\t\tlen(emitter.tag_data.handle) +\n\t\t\tlen(emitter.tag_data.suffix) +\n\t\t\tlen(emitter.scalar_data.value)\n\tcase yaml_SEQUENCE_START_EVENT:\n\t\tif !yaml_emitter_check_empty_sequence(emitter) {\n\t\t\treturn false\n\t\t}\n\t\tlength += len(emitter.anchor_data.anchor) +\n\t\t\tlen(emitter.tag_data.handle) +\n\t\t\tlen(emitter.tag_data.suffix)\n\tcase yaml_MAPPING_START_EVENT:\n\t\tif !yaml_emitter_check_empty_mapping(emitter) {\n\t\t\treturn false\n\t\t}\n\t\tlength += len(emitter.anchor_data.anchor) +\n\t\t\tlen(emitter.tag_data.handle) +\n\t\t\tlen(emitter.tag_data.suffix)\n\tdefault:\n\t\treturn false\n\t}\n\treturn length <= 128\n}\n\n// Determine an acceptable scalar style.\nfunc yaml_emitter_select_scalar_style(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\n\tno_tag := len(emitter.tag_data.handle) == 0 && len(emitter.tag_data.suffix) == 0\n\tif no_tag && !event.implicit && !event.quoted_implicit {\n\t\treturn yaml_emitter_set_emitter_error(emitter, \"neither tag nor implicit flags are specified\")\n\t}\n\n\tstyle := event.scalar_style()\n\tif style == yaml_ANY_SCALAR_STYLE {\n\t\tstyle = yaml_PLAIN_SCALAR_STYLE\n\t}\n\tif emitter.canonical {\n\t\tstyle = yaml_DOUBLE_QUOTED_SCALAR_STYLE\n\t}\n\tif emitter.simple_key_context && emitter.scalar_data.multiline {\n\t\tstyle = yaml_DOUBLE_QUOTED_SCALAR_STYLE\n\t}\n\n\tif style == yaml_PLAIN_SCALAR_STYLE {\n\t\tif emitter.flow_level > 0 && !emitter.scalar_data.flow_plain_allowed ||\n\t\t\temitter.flow_level == 0 && !emitter.scalar_data.block_plain_allowed {\n\t\t\tstyle = yaml_SINGLE_QUOTED_SCALAR_STYLE\n\t\t}\n\t\tif len(emitter.scalar_data.value) == 0 && (emitter.flow_level > 0 || emitter.simple_key_context) {\n\t\t\tstyle = yaml_SINGLE_QUOTED_SCALAR_STYLE\n\t\t}\n\t\tif no_tag && !event.implicit {\n\t\t\tstyle = yaml_SINGLE_QUOTED_SCALAR_STYLE\n\t\t}\n\t}\n\tif style == yaml_SINGLE_QUOTED_SCALAR_STYLE {\n\t\tif !emitter.scalar_data.single_quoted_allowed {\n\t\t\tstyle = yaml_DOUBLE_QUOTED_SCALAR_STYLE\n\t\t}\n\t}\n\tif style == yaml_LITERAL_SCALAR_STYLE || style == yaml_FOLDED_SCALAR_STYLE {\n\t\tif !emitter.scalar_data.block_allowed || emitter.flow_level > 0 || emitter.simple_key_context {\n\t\t\tstyle = yaml_DOUBLE_QUOTED_SCALAR_STYLE\n\t\t}\n\t}\n\n\tif no_tag && !event.quoted_implicit && style != yaml_PLAIN_SCALAR_STYLE {\n\t\temitter.tag_data.handle = []byte{'!'}\n\t}\n\temitter.scalar_data.style = style\n\treturn true\n}\n\n// Write an anchor.\nfunc yaml_emitter_process_anchor(emitter *yaml_emitter_t) bool {\n\tif emitter.anchor_data.anchor == nil {\n\t\treturn true\n\t}\n\tc := []byte{'&'}\n\tif emitter.anchor_data.alias {\n\t\tc[0] = '*'\n\t}\n\tif !yaml_emitter_write_indicator(emitter, c, true, false, false) {\n\t\treturn false\n\t}\n\treturn yaml_emitter_write_anchor(emitter, emitter.anchor_data.anchor)\n}\n\n// Write a tag.\nfunc yaml_emitter_process_tag(emitter *yaml_emitter_t) bool {\n\tif len(emitter.tag_data.handle) == 0 && len(emitter.tag_data.suffix) == 0 {\n\t\treturn true\n\t}\n\tif len(emitter.tag_data.handle) > 0 {\n\t\tif !yaml_emitter_write_tag_handle(emitter, emitter.tag_data.handle) {\n\t\t\treturn false\n\t\t}\n\t\tif len(emitter.tag_data.suffix) > 0 {\n\t\t\tif !yaml_emitter_write_tag_content(emitter, emitter.tag_data.suffix, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// [Go] Allocate these slices elsewhere.\n\t\tif !yaml_emitter_write_indicator(emitter, []byte(\"!<\"), true, false, false) {\n\t\t\treturn false\n\t\t}\n\t\tif !yaml_emitter_write_tag_content(emitter, emitter.tag_data.suffix, false) {\n\t\t\treturn false\n\t\t}\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{'>'}, false, false, false) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// Write a scalar.\nfunc yaml_emitter_process_scalar(emitter *yaml_emitter_t) bool {\n\tswitch emitter.scalar_data.style {\n\tcase yaml_PLAIN_SCALAR_STYLE:\n\t\treturn yaml_emitter_write_plain_scalar(emitter, emitter.scalar_data.value, !emitter.simple_key_context)\n\n\tcase yaml_SINGLE_QUOTED_SCALAR_STYLE:\n\t\treturn yaml_emitter_write_single_quoted_scalar(emitter, emitter.scalar_data.value, !emitter.simple_key_context)\n\n\tcase yaml_DOUBLE_QUOTED_SCALAR_STYLE:\n\t\treturn yaml_emitter_write_double_quoted_scalar(emitter, emitter.scalar_data.value, !emitter.simple_key_context)\n\n\tcase yaml_LITERAL_SCALAR_STYLE:\n\t\treturn yaml_emitter_write_literal_scalar(emitter, emitter.scalar_data.value)\n\n\tcase yaml_FOLDED_SCALAR_STYLE:\n\t\treturn yaml_emitter_write_folded_scalar(emitter, emitter.scalar_data.value)\n\t}\n\tpanic(\"unknown scalar style\")\n}\n\n// Write a head comment.\nfunc yaml_emitter_process_head_comment(emitter *yaml_emitter_t) bool {\n\tif len(emitter.tail_comment) > 0 {\n\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\treturn false\n\t\t}\n\t\tif !yaml_emitter_write_comment(emitter, emitter.tail_comment) {\n\t\t\treturn false\n\t\t}\n\t\temitter.tail_comment = emitter.tail_comment[:0]\n\t\temitter.foot_indent = emitter.indent\n\t\tif emitter.foot_indent < 0 {\n\t\t\temitter.foot_indent = 0\n\t\t}\n\t}\n\n\tif len(emitter.head_comment) == 0 {\n\t\treturn true\n\t}\n\tif !yaml_emitter_write_indent(emitter) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_write_comment(emitter, emitter.head_comment) {\n\t\treturn false\n\t}\n\temitter.head_comment = emitter.head_comment[:0]\n\treturn true\n}\n\n// Write an line comment.\nfunc yaml_emitter_process_line_comment(emitter *yaml_emitter_t) bool {\n\tif len(emitter.line_comment) == 0 {\n\t\treturn true\n\t}\n\tif !emitter.whitespace {\n\t\tif !put(emitter, ' ') {\n\t\t\treturn false\n\t\t}\n\t}\n\tif !yaml_emitter_write_comment(emitter, emitter.line_comment) {\n\t\treturn false\n\t}\n\temitter.line_comment = emitter.line_comment[:0]\n\treturn true\n}\n\n// Write a foot comment.\nfunc yaml_emitter_process_foot_comment(emitter *yaml_emitter_t) bool {\n\tif len(emitter.foot_comment) == 0 {\n\t\treturn true\n\t}\n\tif !yaml_emitter_write_indent(emitter) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_write_comment(emitter, emitter.foot_comment) {\n\t\treturn false\n\t}\n\temitter.foot_comment = emitter.foot_comment[:0]\n\temitter.foot_indent = emitter.indent\n\tif emitter.foot_indent < 0 {\n\t\temitter.foot_indent = 0\n\t}\n\treturn true\n}\n\n// Check if a %YAML directive is valid.\nfunc yaml_emitter_analyze_version_directive(emitter *yaml_emitter_t, version_directive *yaml_version_directive_t) bool {\n\tif version_directive.major != 1 || version_directive.minor != 1 {\n\t\treturn yaml_emitter_set_emitter_error(emitter, \"incompatible %YAML directive\")\n\t}\n\treturn true\n}\n\n// Check if a %TAG directive is valid.\nfunc yaml_emitter_analyze_tag_directive(emitter *yaml_emitter_t, tag_directive *yaml_tag_directive_t) bool {\n\thandle := tag_directive.handle\n\tprefix := tag_directive.prefix\n\tif len(handle) == 0 {\n\t\treturn yaml_emitter_set_emitter_error(emitter, \"tag handle must not be empty\")\n\t}\n\tif handle[0] != '!' {\n\t\treturn yaml_emitter_set_emitter_error(emitter, \"tag handle must start with '!'\")\n\t}\n\tif handle[len(handle)-1] != '!' {\n\t\treturn yaml_emitter_set_emitter_error(emitter, \"tag handle must end with '!'\")\n\t}\n\tfor i := 1; i < len(handle)-1; i += width(handle[i]) {\n\t\tif !is_alpha(handle, i) {\n\t\t\treturn yaml_emitter_set_emitter_error(emitter, \"tag handle must contain alphanumerical characters only\")\n\t\t}\n\t}\n\tif len(prefix) == 0 {\n\t\treturn yaml_emitter_set_emitter_error(emitter, \"tag prefix must not be empty\")\n\t}\n\treturn true\n}\n\n// Check if an anchor is valid.\nfunc yaml_emitter_analyze_anchor(emitter *yaml_emitter_t, anchor []byte, alias bool) bool {\n\tif len(anchor) == 0 {\n\t\tproblem := \"anchor value must not be empty\"\n\t\tif alias {\n\t\t\tproblem = \"alias value must not be empty\"\n\t\t}\n\t\treturn yaml_emitter_set_emitter_error(emitter, problem)\n\t}\n\tfor i := 0; i < len(anchor); i += width(anchor[i]) {\n\t\tif !is_alpha(anchor, i) {\n\t\t\tproblem := \"anchor value must contain alphanumerical characters only\"\n\t\t\tif alias {\n\t\t\t\tproblem = \"alias value must contain alphanumerical characters only\"\n\t\t\t}\n\t\t\treturn yaml_emitter_set_emitter_error(emitter, problem)\n\t\t}\n\t}\n\temitter.anchor_data.anchor = anchor\n\temitter.anchor_data.alias = alias\n\treturn true\n}\n\n// Check if a tag is valid.\nfunc yaml_emitter_analyze_tag(emitter *yaml_emitter_t, tag []byte) bool {\n\tif len(tag) == 0 {\n\t\treturn yaml_emitter_set_emitter_error(emitter, \"tag value must not be empty\")\n\t}\n\tfor i := 0; i < len(emitter.tag_directives); i++ {\n\t\ttag_directive := &emitter.tag_directives[i]\n\t\tif bytes.HasPrefix(tag, tag_directive.prefix) {\n\t\t\temitter.tag_data.handle = tag_directive.handle\n\t\t\temitter.tag_data.suffix = tag[len(tag_directive.prefix):]\n\t\t\treturn true\n\t\t}\n\t}\n\temitter.tag_data.suffix = tag\n\treturn true\n}\n\n// Check if a scalar is valid.\nfunc yaml_emitter_analyze_scalar(emitter *yaml_emitter_t, value []byte) bool {\n\tvar (\n\t\tblock_indicators   = false\n\t\tflow_indicators    = false\n\t\tline_breaks        = false\n\t\tspecial_characters = false\n\t\ttab_characters     = false\n\n\t\tleading_space  = false\n\t\tleading_break  = false\n\t\ttrailing_space = false\n\t\ttrailing_break = false\n\t\tbreak_space    = false\n\t\tspace_break    = false\n\n\t\tpreceded_by_whitespace = false\n\t\tfollowed_by_whitespace = false\n\t\tprevious_space         = false\n\t\tprevious_break         = false\n\t)\n\n\temitter.scalar_data.value = value\n\n\tif len(value) == 0 {\n\t\temitter.scalar_data.multiline = false\n\t\temitter.scalar_data.flow_plain_allowed = false\n\t\temitter.scalar_data.block_plain_allowed = true\n\t\temitter.scalar_data.single_quoted_allowed = true\n\t\temitter.scalar_data.block_allowed = false\n\t\treturn true\n\t}\n\n\tif len(value) >= 3 && ((value[0] == '-' && value[1] == '-' && value[2] == '-') || (value[0] == '.' && value[1] == '.' && value[2] == '.')) {\n\t\tblock_indicators = true\n\t\tflow_indicators = true\n\t}\n\n\tpreceded_by_whitespace = true\n\tfor i, w := 0, 0; i < len(value); i += w {\n\t\tw = width(value[i])\n\t\tfollowed_by_whitespace = i+w >= len(value) || is_blank(value, i+w)\n\n\t\tif i == 0 {\n\t\t\tswitch value[i] {\n\t\t\tcase '#', ',', '[', ']', '{', '}', '&', '*', '!', '|', '>', '\\'', '\"', '%', '@', '`':\n\t\t\t\tflow_indicators = true\n\t\t\t\tblock_indicators = true\n\t\t\tcase '?', ':':\n\t\t\t\tflow_indicators = true\n\t\t\t\tif followed_by_whitespace {\n\t\t\t\t\tblock_indicators = true\n\t\t\t\t}\n\t\t\tcase '-':\n\t\t\t\tif followed_by_whitespace {\n\t\t\t\t\tflow_indicators = true\n\t\t\t\t\tblock_indicators = true\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tswitch value[i] {\n\t\t\tcase ',', '?', '[', ']', '{', '}':\n\t\t\t\tflow_indicators = true\n\t\t\tcase ':':\n\t\t\t\tflow_indicators = true\n\t\t\t\tif followed_by_whitespace {\n\t\t\t\t\tblock_indicators = true\n\t\t\t\t}\n\t\t\tcase '#':\n\t\t\t\tif preceded_by_whitespace {\n\t\t\t\t\tflow_indicators = true\n\t\t\t\t\tblock_indicators = true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif value[i] == '\\t' {\n\t\t\ttab_characters = true\n\t\t} else if !is_printable(value, i) || !is_ascii(value, i) && !emitter.unicode {\n\t\t\tspecial_characters = true\n\t\t}\n\t\tif is_space(value, i) {\n\t\t\tif i == 0 {\n\t\t\t\tleading_space = true\n\t\t\t}\n\t\t\tif i+width(value[i]) == len(value) {\n\t\t\t\ttrailing_space = true\n\t\t\t}\n\t\t\tif previous_break {\n\t\t\t\tbreak_space = true\n\t\t\t}\n\t\t\tprevious_space = true\n\t\t\tprevious_break = false\n\t\t} else if is_break(value, i) {\n\t\t\tline_breaks = true\n\t\t\tif i == 0 {\n\t\t\t\tleading_break = true\n\t\t\t}\n\t\t\tif i+width(value[i]) == len(value) {\n\t\t\t\ttrailing_break = true\n\t\t\t}\n\t\t\tif previous_space {\n\t\t\t\tspace_break = true\n\t\t\t}\n\t\t\tprevious_space = false\n\t\t\tprevious_break = true\n\t\t} else {\n\t\t\tprevious_space = false\n\t\t\tprevious_break = false\n\t\t}\n\n\t\t// [Go]: Why 'z'? Couldn't be the end of the string as that's the loop condition.\n\t\tpreceded_by_whitespace = is_blankz(value, i)\n\t}\n\n\temitter.scalar_data.multiline = line_breaks\n\temitter.scalar_data.flow_plain_allowed = true\n\temitter.scalar_data.block_plain_allowed = true\n\temitter.scalar_data.single_quoted_allowed = true\n\temitter.scalar_data.block_allowed = true\n\n\tif leading_space || leading_break || trailing_space || trailing_break {\n\t\temitter.scalar_data.flow_plain_allowed = false\n\t\temitter.scalar_data.block_plain_allowed = false\n\t}\n\tif trailing_space {\n\t\temitter.scalar_data.block_allowed = false\n\t}\n\tif break_space {\n\t\temitter.scalar_data.flow_plain_allowed = false\n\t\temitter.scalar_data.block_plain_allowed = false\n\t\temitter.scalar_data.single_quoted_allowed = false\n\t}\n\tif space_break || tab_characters || special_characters {\n\t\temitter.scalar_data.flow_plain_allowed = false\n\t\temitter.scalar_data.block_plain_allowed = false\n\t\temitter.scalar_data.single_quoted_allowed = false\n\t}\n\tif space_break || special_characters {\n\t\temitter.scalar_data.block_allowed = false\n\t}\n\tif line_breaks {\n\t\temitter.scalar_data.flow_plain_allowed = false\n\t\temitter.scalar_data.block_plain_allowed = false\n\t}\n\tif flow_indicators {\n\t\temitter.scalar_data.flow_plain_allowed = false\n\t}\n\tif block_indicators {\n\t\temitter.scalar_data.block_plain_allowed = false\n\t}\n\treturn true\n}\n\n// Check if the event data is valid.\nfunc yaml_emitter_analyze_event(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\n\temitter.anchor_data.anchor = nil\n\temitter.tag_data.handle = nil\n\temitter.tag_data.suffix = nil\n\temitter.scalar_data.value = nil\n\n\tif len(event.head_comment) > 0 {\n\t\temitter.head_comment = event.head_comment\n\t}\n\tif len(event.line_comment) > 0 {\n\t\temitter.line_comment = event.line_comment\n\t}\n\tif len(event.foot_comment) > 0 {\n\t\temitter.foot_comment = event.foot_comment\n\t}\n\tif len(event.tail_comment) > 0 {\n\t\temitter.tail_comment = event.tail_comment\n\t}\n\n\tswitch event.typ {\n\tcase yaml_ALIAS_EVENT:\n\t\tif !yaml_emitter_analyze_anchor(emitter, event.anchor, true) {\n\t\t\treturn false\n\t\t}\n\n\tcase yaml_SCALAR_EVENT:\n\t\tif len(event.anchor) > 0 {\n\t\t\tif !yaml_emitter_analyze_anchor(emitter, event.anchor, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif len(event.tag) > 0 && (emitter.canonical || (!event.implicit && !event.quoted_implicit)) {\n\t\t\tif !yaml_emitter_analyze_tag(emitter, event.tag) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif !yaml_emitter_analyze_scalar(emitter, event.value) {\n\t\t\treturn false\n\t\t}\n\n\tcase yaml_SEQUENCE_START_EVENT:\n\t\tif len(event.anchor) > 0 {\n\t\t\tif !yaml_emitter_analyze_anchor(emitter, event.anchor, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif len(event.tag) > 0 && (emitter.canonical || !event.implicit) {\n\t\t\tif !yaml_emitter_analyze_tag(emitter, event.tag) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\tcase yaml_MAPPING_START_EVENT:\n\t\tif len(event.anchor) > 0 {\n\t\t\tif !yaml_emitter_analyze_anchor(emitter, event.anchor, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif len(event.tag) > 0 && (emitter.canonical || !event.implicit) {\n\t\t\tif !yaml_emitter_analyze_tag(emitter, event.tag) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t}\n\treturn true\n}\n\n// Write the BOM character.\nfunc yaml_emitter_write_bom(emitter *yaml_emitter_t) bool {\n\tif !flush(emitter) {\n\t\treturn false\n\t}\n\tpos := emitter.buffer_pos\n\temitter.buffer[pos+0] = '\\xEF'\n\temitter.buffer[pos+1] = '\\xBB'\n\temitter.buffer[pos+2] = '\\xBF'\n\temitter.buffer_pos += 3\n\treturn true\n}\n\nfunc yaml_emitter_write_indent(emitter *yaml_emitter_t) bool {\n\tindent := emitter.indent\n\tif indent < 0 {\n\t\tindent = 0\n\t}\n\tif !emitter.indention || emitter.column > indent || (emitter.column == indent && !emitter.whitespace) {\n\t\tif !put_break(emitter) {\n\t\t\treturn false\n\t\t}\n\t}\n\tif emitter.foot_indent == indent {\n\t\tif !put_break(emitter) {\n\t\t\treturn false\n\t\t}\n\t}\n\tfor emitter.column < indent {\n\t\tif !put(emitter, ' ') {\n\t\t\treturn false\n\t\t}\n\t}\n\temitter.whitespace = true\n\t//emitter.indention = true\n\temitter.space_above = false\n\temitter.foot_indent = -1\n\treturn true\n}\n\nfunc yaml_emitter_write_indicator(emitter *yaml_emitter_t, indicator []byte, need_whitespace, is_whitespace, is_indention bool) bool {\n\tif need_whitespace && !emitter.whitespace {\n\t\tif !put(emitter, ' ') {\n\t\t\treturn false\n\t\t}\n\t}\n\tif !write_all(emitter, indicator) {\n\t\treturn false\n\t}\n\temitter.whitespace = is_whitespace\n\temitter.indention = (emitter.indention && is_indention)\n\temitter.open_ended = false\n\treturn true\n}\n\nfunc yaml_emitter_write_anchor(emitter *yaml_emitter_t, value []byte) bool {\n\tif !write_all(emitter, value) {\n\t\treturn false\n\t}\n\temitter.whitespace = false\n\temitter.indention = false\n\treturn true\n}\n\nfunc yaml_emitter_write_tag_handle(emitter *yaml_emitter_t, value []byte) bool {\n\tif !emitter.whitespace {\n\t\tif !put(emitter, ' ') {\n\t\t\treturn false\n\t\t}\n\t}\n\tif !write_all(emitter, value) {\n\t\treturn false\n\t}\n\temitter.whitespace = false\n\temitter.indention = false\n\treturn true\n}\n\nfunc yaml_emitter_write_tag_content(emitter *yaml_emitter_t, value []byte, need_whitespace bool) bool {\n\tif need_whitespace && !emitter.whitespace {\n\t\tif !put(emitter, ' ') {\n\t\t\treturn false\n\t\t}\n\t}\n\tfor i := 0; i < len(value); {\n\t\tvar must_write bool\n\t\tswitch value[i] {\n\t\tcase ';', '/', '?', ':', '@', '&', '=', '+', '$', ',', '_', '.', '~', '*', '\\'', '(', ')', '[', ']':\n\t\t\tmust_write = true\n\t\tdefault:\n\t\t\tmust_write = is_alpha(value, i)\n\t\t}\n\t\tif must_write {\n\t\t\tif !write(emitter, value, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t} else {\n\t\t\tw := width(value[i])\n\t\t\tfor k := 0; k < w; k++ {\n\t\t\t\toctet := value[i]\n\t\t\t\ti++\n\t\t\t\tif !put(emitter, '%') {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\t\tc := octet >> 4\n\t\t\t\tif c < 10 {\n\t\t\t\t\tc += '0'\n\t\t\t\t} else {\n\t\t\t\t\tc += 'A' - 10\n\t\t\t\t}\n\t\t\t\tif !put(emitter, c) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\t\tc = octet & 0x0f\n\t\t\t\tif c < 10 {\n\t\t\t\t\tc += '0'\n\t\t\t\t} else {\n\t\t\t\t\tc += 'A' - 10\n\t\t\t\t}\n\t\t\t\tif !put(emitter, c) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\temitter.whitespace = false\n\temitter.indention = false\n\treturn true\n}\n\nfunc yaml_emitter_write_plain_scalar(emitter *yaml_emitter_t, value []byte, allow_breaks bool) bool {\n\tif len(value) > 0 && !emitter.whitespace {\n\t\tif !put(emitter, ' ') {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tspaces := false\n\tbreaks := false\n\tfor i := 0; i < len(value); {\n\t\tif is_space(value, i) {\n\t\t\tif allow_breaks && !spaces && emitter.column > emitter.best_width && !is_space(value, i+1) {\n\t\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\ti += width(value[i])\n\t\t\t} else {\n\t\t\t\tif !write(emitter, value, &i) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tspaces = true\n\t\t} else if is_break(value, i) {\n\t\t\tif !breaks && value[i] == '\\n' {\n\t\t\t\tif !put_break(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !write_break(emitter, value, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\t//emitter.indention = true\n\t\t\tbreaks = true\n\t\t} else {\n\t\t\tif breaks {\n\t\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !write(emitter, value, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\temitter.indention = false\n\t\t\tspaces = false\n\t\t\tbreaks = false\n\t\t}\n\t}\n\n\tif len(value) > 0 {\n\t\temitter.whitespace = false\n\t}\n\temitter.indention = false\n\tif emitter.root_context {\n\t\temitter.open_ended = true\n\t}\n\n\treturn true\n}\n\nfunc yaml_emitter_write_single_quoted_scalar(emitter *yaml_emitter_t, value []byte, allow_breaks bool) bool {\n\n\tif !yaml_emitter_write_indicator(emitter, []byte{'\\''}, true, false, false) {\n\t\treturn false\n\t}\n\n\tspaces := false\n\tbreaks := false\n\tfor i := 0; i < len(value); {\n\t\tif is_space(value, i) {\n\t\t\tif allow_breaks && !spaces && emitter.column > emitter.best_width && i > 0 && i < len(value)-1 && !is_space(value, i+1) {\n\t\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\ti += width(value[i])\n\t\t\t} else {\n\t\t\t\tif !write(emitter, value, &i) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tspaces = true\n\t\t} else if is_break(value, i) {\n\t\t\tif !breaks && value[i] == '\\n' {\n\t\t\t\tif !put_break(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !write_break(emitter, value, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\t//emitter.indention = true\n\t\t\tbreaks = true\n\t\t} else {\n\t\t\tif breaks {\n\t\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tif value[i] == '\\'' {\n\t\t\t\tif !put(emitter, '\\'') {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !write(emitter, value, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\temitter.indention = false\n\t\t\tspaces = false\n\t\t\tbreaks = false\n\t\t}\n\t}\n\tif !yaml_emitter_write_indicator(emitter, []byte{'\\''}, false, false, false) {\n\t\treturn false\n\t}\n\temitter.whitespace = false\n\temitter.indention = false\n\treturn true\n}\n\nfunc yaml_emitter_write_double_quoted_scalar(emitter *yaml_emitter_t, value []byte, allow_breaks bool) bool {\n\tspaces := false\n\tif !yaml_emitter_write_indicator(emitter, []byte{'\"'}, true, false, false) {\n\t\treturn false\n\t}\n\n\tfor i := 0; i < len(value); {\n\t\tif !is_printable(value, i) || (!emitter.unicode && !is_ascii(value, i)) ||\n\t\t\tis_bom(value, i) || is_break(value, i) ||\n\t\t\tvalue[i] == '\"' || value[i] == '\\\\' {\n\n\t\t\toctet := value[i]\n\n\t\t\tvar w int\n\t\t\tvar v rune\n\t\t\tswitch {\n\t\t\tcase octet&0x80 == 0x00:\n\t\t\t\tw, v = 1, rune(octet&0x7F)\n\t\t\tcase octet&0xE0 == 0xC0:\n\t\t\t\tw, v = 2, rune(octet&0x1F)\n\t\t\tcase octet&0xF0 == 0xE0:\n\t\t\t\tw, v = 3, rune(octet&0x0F)\n\t\t\tcase octet&0xF8 == 0xF0:\n\t\t\t\tw, v = 4, rune(octet&0x07)\n\t\t\t}\n\t\t\tfor k := 1; k < w; k++ {\n\t\t\t\toctet = value[i+k]\n\t\t\t\tv = (v << 6) + (rune(octet) & 0x3F)\n\t\t\t}\n\t\t\ti += w\n\n\t\t\tif !put(emitter, '\\\\') {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\tvar ok bool\n\t\t\tswitch v {\n\t\t\tcase 0x00:\n\t\t\t\tok = put(emitter, '0')\n\t\t\tcase 0x07:\n\t\t\t\tok = put(emitter, 'a')\n\t\t\tcase 0x08:\n\t\t\t\tok = put(emitter, 'b')\n\t\t\tcase 0x09:\n\t\t\t\tok = put(emitter, 't')\n\t\t\tcase 0x0A:\n\t\t\t\tok = put(emitter, 'n')\n\t\t\tcase 0x0b:\n\t\t\t\tok = put(emitter, 'v')\n\t\t\tcase 0x0c:\n\t\t\t\tok = put(emitter, 'f')\n\t\t\tcase 0x0d:\n\t\t\t\tok = put(emitter, 'r')\n\t\t\tcase 0x1b:\n\t\t\t\tok = put(emitter, 'e')\n\t\t\tcase 0x22:\n\t\t\t\tok = put(emitter, '\"')\n\t\t\tcase 0x5c:\n\t\t\t\tok = put(emitter, '\\\\')\n\t\t\tcase 0x85:\n\t\t\t\tok = put(emitter, 'N')\n\t\t\tcase 0xA0:\n\t\t\t\tok = put(emitter, '_')\n\t\t\tcase 0x2028:\n\t\t\t\tok = put(emitter, 'L')\n\t\t\tcase 0x2029:\n\t\t\t\tok = put(emitter, 'P')\n\t\t\tdefault:\n\t\t\t\tif v <= 0xFF {\n\t\t\t\t\tok = put(emitter, 'x')\n\t\t\t\t\tw = 2\n\t\t\t\t} else if v <= 0xFFFF {\n\t\t\t\t\tok = put(emitter, 'u')\n\t\t\t\t\tw = 4\n\t\t\t\t} else {\n\t\t\t\t\tok = put(emitter, 'U')\n\t\t\t\t\tw = 8\n\t\t\t\t}\n\t\t\t\tfor k := (w - 1) * 4; ok && k >= 0; k -= 4 {\n\t\t\t\t\tdigit := byte((v >> uint(k)) & 0x0F)\n\t\t\t\t\tif digit < 10 {\n\t\t\t\t\t\tok = put(emitter, digit+'0')\n\t\t\t\t\t} else {\n\t\t\t\t\t\tok = put(emitter, digit+'A'-10)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !ok {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tspaces = false\n\t\t} else if is_space(value, i) {\n\t\t\tif allow_breaks && !spaces && emitter.column > emitter.best_width && i > 0 && i < len(value)-1 {\n\t\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tif is_space(value, i+1) {\n\t\t\t\t\tif !put(emitter, '\\\\') {\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ti += width(value[i])\n\t\t\t} else if !write(emitter, value, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tspaces = true\n\t\t} else {\n\t\t\tif !write(emitter, value, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tspaces = false\n\t\t}\n\t}\n\tif !yaml_emitter_write_indicator(emitter, []byte{'\"'}, false, false, false) {\n\t\treturn false\n\t}\n\temitter.whitespace = false\n\temitter.indention = false\n\treturn true\n}\n\nfunc yaml_emitter_write_block_scalar_hints(emitter *yaml_emitter_t, value []byte) bool {\n\tif is_space(value, 0) || is_break(value, 0) {\n\t\tindent_hint := []byte{'0' + byte(emitter.best_indent)}\n\t\tif !yaml_emitter_write_indicator(emitter, indent_hint, false, false, false) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\temitter.open_ended = false\n\n\tvar chomp_hint [1]byte\n\tif len(value) == 0 {\n\t\tchomp_hint[0] = '-'\n\t} else {\n\t\ti := len(value) - 1\n\t\tfor value[i]&0xC0 == 0x80 {\n\t\t\ti--\n\t\t}\n\t\tif !is_break(value, i) {\n\t\t\tchomp_hint[0] = '-'\n\t\t} else if i == 0 {\n\t\t\tchomp_hint[0] = '+'\n\t\t\temitter.open_ended = true\n\t\t} else {\n\t\t\ti--\n\t\t\tfor value[i]&0xC0 == 0x80 {\n\t\t\t\ti--\n\t\t\t}\n\t\t\tif is_break(value, i) {\n\t\t\t\tchomp_hint[0] = '+'\n\t\t\t\temitter.open_ended = true\n\t\t\t}\n\t\t}\n\t}\n\tif chomp_hint[0] != 0 {\n\t\tif !yaml_emitter_write_indicator(emitter, chomp_hint[:], false, false, false) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\nfunc yaml_emitter_write_literal_scalar(emitter *yaml_emitter_t, value []byte) bool {\n\tif !yaml_emitter_write_indicator(emitter, []byte{'|'}, true, false, false) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_write_block_scalar_hints(emitter, value) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_process_line_comment(emitter) {\n\t\treturn false\n\t}\n\t//emitter.indention = true\n\temitter.whitespace = true\n\tbreaks := true\n\tfor i := 0; i < len(value); {\n\t\tif is_break(value, i) {\n\t\t\tif !write_break(emitter, value, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\t//emitter.indention = true\n\t\t\tbreaks = true\n\t\t} else {\n\t\t\tif breaks {\n\t\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !write(emitter, value, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\temitter.indention = false\n\t\t\tbreaks = false\n\t\t}\n\t}\n\n\treturn true\n}\n\nfunc yaml_emitter_write_folded_scalar(emitter *yaml_emitter_t, value []byte) bool {\n\tif !yaml_emitter_write_indicator(emitter, []byte{'>'}, true, false, false) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_write_block_scalar_hints(emitter, value) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_process_line_comment(emitter) {\n\t\treturn false\n\t}\n\n\t//emitter.indention = true\n\temitter.whitespace = true\n\n\tbreaks := true\n\tleading_spaces := true\n\tfor i := 0; i < len(value); {\n\t\tif is_break(value, i) {\n\t\t\tif !breaks && !leading_spaces && value[i] == '\\n' {\n\t\t\t\tk := 0\n\t\t\t\tfor is_break(value, k) {\n\t\t\t\t\tk += width(value[k])\n\t\t\t\t}\n\t\t\t\tif !is_blankz(value, k) {\n\t\t\t\t\tif !put_break(emitter) {\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !write_break(emitter, value, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\t//emitter.indention = true\n\t\t\tbreaks = true\n\t\t} else {\n\t\t\tif breaks {\n\t\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tleading_spaces = is_blank(value, i)\n\t\t\t}\n\t\t\tif !breaks && is_space(value, i) && !is_space(value, i+1) && emitter.column > emitter.best_width {\n\t\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\ti += width(value[i])\n\t\t\t} else {\n\t\t\t\tif !write(emitter, value, &i) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\temitter.indention = false\n\t\t\tbreaks = false\n\t\t}\n\t}\n\treturn true\n}\n\nfunc yaml_emitter_write_comment(emitter *yaml_emitter_t, comment []byte) bool {\n\tbreaks := false\n\tpound := false\n\tfor i := 0; i < len(comment); {\n\t\tif is_break(comment, i) {\n\t\t\tif !write_break(emitter, comment, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\t//emitter.indention = true\n\t\t\tbreaks = true\n\t\t\tpound = false\n\t\t} else {\n\t\t\tif breaks && !yaml_emitter_write_indent(emitter) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif !pound {\n\t\t\t\tif comment[i] != '#' && (!put(emitter, '#') || !put(emitter, ' ')) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tpound = true\n\t\t\t}\n\t\t\tif !write(emitter, comment, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\temitter.indention = false\n\t\t\tbreaks = false\n\t\t}\n\t}\n\tif !breaks && !put_break(emitter) {\n\t\treturn false\n\t}\n\n\temitter.whitespace = true\n\t//emitter.indention = true\n\treturn true\n}\n"
  },
  {
    "path": "vendor/gopkg.in/yaml.v3/encode.go",
    "content": "//\n// Copyright (c) 2011-2019 Canonical Ltd\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage yaml\n\nimport (\n\t\"encoding\"\n\t\"fmt\"\n\t\"io\"\n\t\"reflect\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n)\n\ntype encoder struct {\n\temitter  yaml_emitter_t\n\tevent    yaml_event_t\n\tout      []byte\n\tflow     bool\n\tindent   int\n\tdoneInit bool\n}\n\nfunc newEncoder() *encoder {\n\te := &encoder{}\n\tyaml_emitter_initialize(&e.emitter)\n\tyaml_emitter_set_output_string(&e.emitter, &e.out)\n\tyaml_emitter_set_unicode(&e.emitter, true)\n\treturn e\n}\n\nfunc newEncoderWithWriter(w io.Writer) *encoder {\n\te := &encoder{}\n\tyaml_emitter_initialize(&e.emitter)\n\tyaml_emitter_set_output_writer(&e.emitter, w)\n\tyaml_emitter_set_unicode(&e.emitter, true)\n\treturn e\n}\n\nfunc (e *encoder) init() {\n\tif e.doneInit {\n\t\treturn\n\t}\n\tif e.indent == 0 {\n\t\te.indent = 4\n\t}\n\te.emitter.best_indent = e.indent\n\tyaml_stream_start_event_initialize(&e.event, yaml_UTF8_ENCODING)\n\te.emit()\n\te.doneInit = true\n}\n\nfunc (e *encoder) finish() {\n\te.emitter.open_ended = false\n\tyaml_stream_end_event_initialize(&e.event)\n\te.emit()\n}\n\nfunc (e *encoder) destroy() {\n\tyaml_emitter_delete(&e.emitter)\n}\n\nfunc (e *encoder) emit() {\n\t// This will internally delete the e.event value.\n\te.must(yaml_emitter_emit(&e.emitter, &e.event))\n}\n\nfunc (e *encoder) must(ok bool) {\n\tif !ok {\n\t\tmsg := e.emitter.problem\n\t\tif msg == \"\" {\n\t\t\tmsg = \"unknown problem generating YAML content\"\n\t\t}\n\t\tfailf(\"%s\", msg)\n\t}\n}\n\nfunc (e *encoder) marshalDoc(tag string, in reflect.Value) {\n\te.init()\n\tvar node *Node\n\tif in.IsValid() {\n\t\tnode, _ = in.Interface().(*Node)\n\t}\n\tif node != nil && node.Kind == DocumentNode {\n\t\te.nodev(in)\n\t} else {\n\t\tyaml_document_start_event_initialize(&e.event, nil, nil, true)\n\t\te.emit()\n\t\te.marshal(tag, in)\n\t\tyaml_document_end_event_initialize(&e.event, true)\n\t\te.emit()\n\t}\n}\n\nfunc (e *encoder) marshal(tag string, in reflect.Value) {\n\ttag = shortTag(tag)\n\tif !in.IsValid() || in.Kind() == reflect.Ptr && in.IsNil() {\n\t\te.nilv()\n\t\treturn\n\t}\n\tiface := in.Interface()\n\tswitch value := iface.(type) {\n\tcase *Node:\n\t\te.nodev(in)\n\t\treturn\n\tcase Node:\n\t\tif !in.CanAddr() {\n\t\t\tvar n = reflect.New(in.Type()).Elem()\n\t\t\tn.Set(in)\n\t\t\tin = n\n\t\t}\n\t\te.nodev(in.Addr())\n\t\treturn\n\tcase time.Time:\n\t\te.timev(tag, in)\n\t\treturn\n\tcase *time.Time:\n\t\te.timev(tag, in.Elem())\n\t\treturn\n\tcase time.Duration:\n\t\te.stringv(tag, reflect.ValueOf(value.String()))\n\t\treturn\n\tcase Marshaler:\n\t\tv, err := value.MarshalYAML()\n\t\tif err != nil {\n\t\t\tfail(err)\n\t\t}\n\t\tif v == nil {\n\t\t\te.nilv()\n\t\t\treturn\n\t\t}\n\t\te.marshal(tag, reflect.ValueOf(v))\n\t\treturn\n\tcase encoding.TextMarshaler:\n\t\ttext, err := value.MarshalText()\n\t\tif err != nil {\n\t\t\tfail(err)\n\t\t}\n\t\tin = reflect.ValueOf(string(text))\n\tcase nil:\n\t\te.nilv()\n\t\treturn\n\t}\n\tswitch in.Kind() {\n\tcase reflect.Interface:\n\t\te.marshal(tag, in.Elem())\n\tcase reflect.Map:\n\t\te.mapv(tag, in)\n\tcase reflect.Ptr:\n\t\te.marshal(tag, in.Elem())\n\tcase reflect.Struct:\n\t\te.structv(tag, in)\n\tcase reflect.Slice, reflect.Array:\n\t\te.slicev(tag, in)\n\tcase reflect.String:\n\t\te.stringv(tag, in)\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\te.intv(tag, in)\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\te.uintv(tag, in)\n\tcase reflect.Float32, reflect.Float64:\n\t\te.floatv(tag, in)\n\tcase reflect.Bool:\n\t\te.boolv(tag, in)\n\tdefault:\n\t\tpanic(\"cannot marshal type: \" + in.Type().String())\n\t}\n}\n\nfunc (e *encoder) mapv(tag string, in reflect.Value) {\n\te.mappingv(tag, func() {\n\t\tkeys := keyList(in.MapKeys())\n\t\tsort.Sort(keys)\n\t\tfor _, k := range keys {\n\t\t\te.marshal(\"\", k)\n\t\t\te.marshal(\"\", in.MapIndex(k))\n\t\t}\n\t})\n}\n\nfunc (e *encoder) fieldByIndex(v reflect.Value, index []int) (field reflect.Value) {\n\tfor _, num := range index {\n\t\tfor {\n\t\t\tif v.Kind() == reflect.Ptr {\n\t\t\t\tif v.IsNil() {\n\t\t\t\t\treturn reflect.Value{}\n\t\t\t\t}\n\t\t\t\tv = v.Elem()\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t\tv = v.Field(num)\n\t}\n\treturn v\n}\n\nfunc (e *encoder) structv(tag string, in reflect.Value) {\n\tsinfo, err := getStructInfo(in.Type())\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\te.mappingv(tag, func() {\n\t\tfor _, info := range sinfo.FieldsList {\n\t\t\tvar value reflect.Value\n\t\t\tif info.Inline == nil {\n\t\t\t\tvalue = in.Field(info.Num)\n\t\t\t} else {\n\t\t\t\tvalue = e.fieldByIndex(in, info.Inline)\n\t\t\t\tif !value.IsValid() {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t}\n\t\t\tif info.OmitEmpty && isZero(value) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\te.marshal(\"\", reflect.ValueOf(info.Key))\n\t\t\te.flow = info.Flow\n\t\t\te.marshal(\"\", value)\n\t\t}\n\t\tif sinfo.InlineMap >= 0 {\n\t\t\tm := in.Field(sinfo.InlineMap)\n\t\t\tif m.Len() > 0 {\n\t\t\t\te.flow = false\n\t\t\t\tkeys := keyList(m.MapKeys())\n\t\t\t\tsort.Sort(keys)\n\t\t\t\tfor _, k := range keys {\n\t\t\t\t\tif _, found := sinfo.FieldsMap[k.String()]; found {\n\t\t\t\t\t\tpanic(fmt.Sprintf(\"cannot have key %q in inlined map: conflicts with struct field\", k.String()))\n\t\t\t\t\t}\n\t\t\t\t\te.marshal(\"\", k)\n\t\t\t\t\te.flow = false\n\t\t\t\t\te.marshal(\"\", m.MapIndex(k))\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t})\n}\n\nfunc (e *encoder) mappingv(tag string, f func()) {\n\timplicit := tag == \"\"\n\tstyle := yaml_BLOCK_MAPPING_STYLE\n\tif e.flow {\n\t\te.flow = false\n\t\tstyle = yaml_FLOW_MAPPING_STYLE\n\t}\n\tyaml_mapping_start_event_initialize(&e.event, nil, []byte(tag), implicit, style)\n\te.emit()\n\tf()\n\tyaml_mapping_end_event_initialize(&e.event)\n\te.emit()\n}\n\nfunc (e *encoder) slicev(tag string, in reflect.Value) {\n\timplicit := tag == \"\"\n\tstyle := yaml_BLOCK_SEQUENCE_STYLE\n\tif e.flow {\n\t\te.flow = false\n\t\tstyle = yaml_FLOW_SEQUENCE_STYLE\n\t}\n\te.must(yaml_sequence_start_event_initialize(&e.event, nil, []byte(tag), implicit, style))\n\te.emit()\n\tn := in.Len()\n\tfor i := 0; i < n; i++ {\n\t\te.marshal(\"\", in.Index(i))\n\t}\n\te.must(yaml_sequence_end_event_initialize(&e.event))\n\te.emit()\n}\n\n// isBase60 returns whether s is in base 60 notation as defined in YAML 1.1.\n//\n// The base 60 float notation in YAML 1.1 is a terrible idea and is unsupported\n// in YAML 1.2 and by this package, but these should be marshalled quoted for\n// the time being for compatibility with other parsers.\nfunc isBase60Float(s string) (result bool) {\n\t// Fast path.\n\tif s == \"\" {\n\t\treturn false\n\t}\n\tc := s[0]\n\tif !(c == '+' || c == '-' || c >= '0' && c <= '9') || strings.IndexByte(s, ':') < 0 {\n\t\treturn false\n\t}\n\t// Do the full match.\n\treturn base60float.MatchString(s)\n}\n\n// From http://yaml.org/type/float.html, except the regular expression there\n// is bogus. In practice parsers do not enforce the \"\\.[0-9_]*\" suffix.\nvar base60float = regexp.MustCompile(`^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+(?:\\.[0-9_]*)?$`)\n\n// isOldBool returns whether s is bool notation as defined in YAML 1.1.\n//\n// We continue to force strings that YAML 1.1 would interpret as booleans to be\n// rendered as quotes strings so that the marshalled output valid for YAML 1.1\n// parsing.\nfunc isOldBool(s string) (result bool) {\n\tswitch s {\n\tcase \"y\", \"Y\", \"yes\", \"Yes\", \"YES\", \"on\", \"On\", \"ON\",\n\t\t\"n\", \"N\", \"no\", \"No\", \"NO\", \"off\", \"Off\", \"OFF\":\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\nfunc (e *encoder) stringv(tag string, in reflect.Value) {\n\tvar style yaml_scalar_style_t\n\ts := in.String()\n\tcanUsePlain := true\n\tswitch {\n\tcase !utf8.ValidString(s):\n\t\tif tag == binaryTag {\n\t\t\tfailf(\"explicitly tagged !!binary data must be base64-encoded\")\n\t\t}\n\t\tif tag != \"\" {\n\t\t\tfailf(\"cannot marshal invalid UTF-8 data as %s\", shortTag(tag))\n\t\t}\n\t\t// It can't be encoded directly as YAML so use a binary tag\n\t\t// and encode it as base64.\n\t\ttag = binaryTag\n\t\ts = encodeBase64(s)\n\tcase tag == \"\":\n\t\t// Check to see if it would resolve to a specific\n\t\t// tag when encoded unquoted. If it doesn't,\n\t\t// there's no need to quote it.\n\t\trtag, _ := resolve(\"\", s)\n\t\tcanUsePlain = rtag == strTag && !(isBase60Float(s) || isOldBool(s))\n\t}\n\t// Note: it's possible for user code to emit invalid YAML\n\t// if they explicitly specify a tag and a string containing\n\t// text that's incompatible with that tag.\n\tswitch {\n\tcase strings.Contains(s, \"\\n\"):\n\t\tif e.flow {\n\t\t\tstyle = yaml_DOUBLE_QUOTED_SCALAR_STYLE\n\t\t} else {\n\t\t\tstyle = yaml_LITERAL_SCALAR_STYLE\n\t\t}\n\tcase canUsePlain:\n\t\tstyle = yaml_PLAIN_SCALAR_STYLE\n\tdefault:\n\t\tstyle = yaml_DOUBLE_QUOTED_SCALAR_STYLE\n\t}\n\te.emitScalar(s, \"\", tag, style, nil, nil, nil, nil)\n}\n\nfunc (e *encoder) boolv(tag string, in reflect.Value) {\n\tvar s string\n\tif in.Bool() {\n\t\ts = \"true\"\n\t} else {\n\t\ts = \"false\"\n\t}\n\te.emitScalar(s, \"\", tag, yaml_PLAIN_SCALAR_STYLE, nil, nil, nil, nil)\n}\n\nfunc (e *encoder) intv(tag string, in reflect.Value) {\n\ts := strconv.FormatInt(in.Int(), 10)\n\te.emitScalar(s, \"\", tag, yaml_PLAIN_SCALAR_STYLE, nil, nil, nil, nil)\n}\n\nfunc (e *encoder) uintv(tag string, in reflect.Value) {\n\ts := strconv.FormatUint(in.Uint(), 10)\n\te.emitScalar(s, \"\", tag, yaml_PLAIN_SCALAR_STYLE, nil, nil, nil, nil)\n}\n\nfunc (e *encoder) timev(tag string, in reflect.Value) {\n\tt := in.Interface().(time.Time)\n\ts := t.Format(time.RFC3339Nano)\n\te.emitScalar(s, \"\", tag, yaml_PLAIN_SCALAR_STYLE, nil, nil, nil, nil)\n}\n\nfunc (e *encoder) floatv(tag string, in reflect.Value) {\n\t// Issue #352: When formatting, use the precision of the underlying value\n\tprecision := 64\n\tif in.Kind() == reflect.Float32 {\n\t\tprecision = 32\n\t}\n\n\ts := strconv.FormatFloat(in.Float(), 'g', -1, precision)\n\tswitch s {\n\tcase \"+Inf\":\n\t\ts = \".inf\"\n\tcase \"-Inf\":\n\t\ts = \"-.inf\"\n\tcase \"NaN\":\n\t\ts = \".nan\"\n\t}\n\te.emitScalar(s, \"\", tag, yaml_PLAIN_SCALAR_STYLE, nil, nil, nil, nil)\n}\n\nfunc (e *encoder) nilv() {\n\te.emitScalar(\"null\", \"\", \"\", yaml_PLAIN_SCALAR_STYLE, nil, nil, nil, nil)\n}\n\nfunc (e *encoder) emitScalar(value, anchor, tag string, style yaml_scalar_style_t, head, line, foot, tail []byte) {\n\t// TODO Kill this function. Replace all initialize calls by their underlining Go literals.\n\timplicit := tag == \"\"\n\tif !implicit {\n\t\ttag = longTag(tag)\n\t}\n\te.must(yaml_scalar_event_initialize(&e.event, []byte(anchor), []byte(tag), []byte(value), implicit, implicit, style))\n\te.event.head_comment = head\n\te.event.line_comment = line\n\te.event.foot_comment = foot\n\te.event.tail_comment = tail\n\te.emit()\n}\n\nfunc (e *encoder) nodev(in reflect.Value) {\n\te.node(in.Interface().(*Node), \"\")\n}\n\nfunc (e *encoder) node(node *Node, tail string) {\n\t// Zero nodes behave as nil.\n\tif node.Kind == 0 && node.IsZero() {\n\t\te.nilv()\n\t\treturn\n\t}\n\n\t// If the tag was not explicitly requested, and dropping it won't change the\n\t// implicit tag of the value, don't include it in the presentation.\n\tvar tag = node.Tag\n\tvar stag = shortTag(tag)\n\tvar forceQuoting bool\n\tif tag != \"\" && node.Style&TaggedStyle == 0 {\n\t\tif node.Kind == ScalarNode {\n\t\t\tif stag == strTag && node.Style&(SingleQuotedStyle|DoubleQuotedStyle|LiteralStyle|FoldedStyle) != 0 {\n\t\t\t\ttag = \"\"\n\t\t\t} else {\n\t\t\t\trtag, _ := resolve(\"\", node.Value)\n\t\t\t\tif rtag == stag {\n\t\t\t\t\ttag = \"\"\n\t\t\t\t} else if stag == strTag {\n\t\t\t\t\ttag = \"\"\n\t\t\t\t\tforceQuoting = true\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tvar rtag string\n\t\t\tswitch node.Kind {\n\t\t\tcase MappingNode:\n\t\t\t\trtag = mapTag\n\t\t\tcase SequenceNode:\n\t\t\t\trtag = seqTag\n\t\t\t}\n\t\t\tif rtag == stag {\n\t\t\t\ttag = \"\"\n\t\t\t}\n\t\t}\n\t}\n\n\tswitch node.Kind {\n\tcase DocumentNode:\n\t\tyaml_document_start_event_initialize(&e.event, nil, nil, true)\n\t\te.event.head_comment = []byte(node.HeadComment)\n\t\te.emit()\n\t\tfor _, node := range node.Content {\n\t\t\te.node(node, \"\")\n\t\t}\n\t\tyaml_document_end_event_initialize(&e.event, true)\n\t\te.event.foot_comment = []byte(node.FootComment)\n\t\te.emit()\n\n\tcase SequenceNode:\n\t\tstyle := yaml_BLOCK_SEQUENCE_STYLE\n\t\tif node.Style&FlowStyle != 0 {\n\t\t\tstyle = yaml_FLOW_SEQUENCE_STYLE\n\t\t}\n\t\te.must(yaml_sequence_start_event_initialize(&e.event, []byte(node.Anchor), []byte(longTag(tag)), tag == \"\", style))\n\t\te.event.head_comment = []byte(node.HeadComment)\n\t\te.emit()\n\t\tfor _, node := range node.Content {\n\t\t\te.node(node, \"\")\n\t\t}\n\t\te.must(yaml_sequence_end_event_initialize(&e.event))\n\t\te.event.line_comment = []byte(node.LineComment)\n\t\te.event.foot_comment = []byte(node.FootComment)\n\t\te.emit()\n\n\tcase MappingNode:\n\t\tstyle := yaml_BLOCK_MAPPING_STYLE\n\t\tif node.Style&FlowStyle != 0 {\n\t\t\tstyle = yaml_FLOW_MAPPING_STYLE\n\t\t}\n\t\tyaml_mapping_start_event_initialize(&e.event, []byte(node.Anchor), []byte(longTag(tag)), tag == \"\", style)\n\t\te.event.tail_comment = []byte(tail)\n\t\te.event.head_comment = []byte(node.HeadComment)\n\t\te.emit()\n\n\t\t// The tail logic below moves the foot comment of prior keys to the following key,\n\t\t// since the value for each key may be a nested structure and the foot needs to be\n\t\t// processed only the entirety of the value is streamed. The last tail is processed\n\t\t// with the mapping end event.\n\t\tvar tail string\n\t\tfor i := 0; i+1 < len(node.Content); i += 2 {\n\t\t\tk := node.Content[i]\n\t\t\tfoot := k.FootComment\n\t\t\tif foot != \"\" {\n\t\t\t\tkopy := *k\n\t\t\t\tkopy.FootComment = \"\"\n\t\t\t\tk = &kopy\n\t\t\t}\n\t\t\te.node(k, tail)\n\t\t\ttail = foot\n\n\t\t\tv := node.Content[i+1]\n\t\t\te.node(v, \"\")\n\t\t}\n\n\t\tyaml_mapping_end_event_initialize(&e.event)\n\t\te.event.tail_comment = []byte(tail)\n\t\te.event.line_comment = []byte(node.LineComment)\n\t\te.event.foot_comment = []byte(node.FootComment)\n\t\te.emit()\n\n\tcase AliasNode:\n\t\tyaml_alias_event_initialize(&e.event, []byte(node.Value))\n\t\te.event.head_comment = []byte(node.HeadComment)\n\t\te.event.line_comment = []byte(node.LineComment)\n\t\te.event.foot_comment = []byte(node.FootComment)\n\t\te.emit()\n\n\tcase ScalarNode:\n\t\tvalue := node.Value\n\t\tif !utf8.ValidString(value) {\n\t\t\tif stag == binaryTag {\n\t\t\t\tfailf(\"explicitly tagged !!binary data must be base64-encoded\")\n\t\t\t}\n\t\t\tif stag != \"\" {\n\t\t\t\tfailf(\"cannot marshal invalid UTF-8 data as %s\", stag)\n\t\t\t}\n\t\t\t// It can't be encoded directly as YAML so use a binary tag\n\t\t\t// and encode it as base64.\n\t\t\ttag = binaryTag\n\t\t\tvalue = encodeBase64(value)\n\t\t}\n\n\t\tstyle := yaml_PLAIN_SCALAR_STYLE\n\t\tswitch {\n\t\tcase node.Style&DoubleQuotedStyle != 0:\n\t\t\tstyle = yaml_DOUBLE_QUOTED_SCALAR_STYLE\n\t\tcase node.Style&SingleQuotedStyle != 0:\n\t\t\tstyle = yaml_SINGLE_QUOTED_SCALAR_STYLE\n\t\tcase node.Style&LiteralStyle != 0:\n\t\t\tstyle = yaml_LITERAL_SCALAR_STYLE\n\t\tcase node.Style&FoldedStyle != 0:\n\t\t\tstyle = yaml_FOLDED_SCALAR_STYLE\n\t\tcase strings.Contains(value, \"\\n\"):\n\t\t\tstyle = yaml_LITERAL_SCALAR_STYLE\n\t\tcase forceQuoting:\n\t\t\tstyle = yaml_DOUBLE_QUOTED_SCALAR_STYLE\n\t\t}\n\n\t\te.emitScalar(value, node.Anchor, tag, style, []byte(node.HeadComment), []byte(node.LineComment), []byte(node.FootComment), []byte(tail))\n\tdefault:\n\t\tfailf(\"cannot encode node with unknown kind %d\", node.Kind)\n\t}\n}\n"
  },
  {
    "path": "vendor/gopkg.in/yaml.v3/parserc.go",
    "content": "//\n// Copyright (c) 2011-2019 Canonical Ltd\n// Copyright (c) 2006-2010 Kirill Simonov\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.\n\npackage yaml\n\nimport (\n\t\"bytes\"\n)\n\n// The parser implements the following grammar:\n//\n// stream               ::= STREAM-START implicit_document? explicit_document* STREAM-END\n// implicit_document    ::= block_node DOCUMENT-END*\n// explicit_document    ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END*\n// block_node_or_indentless_sequence    ::=\n//                          ALIAS\n//                          | properties (block_content | indentless_block_sequence)?\n//                          | block_content\n//                          | indentless_block_sequence\n// block_node           ::= ALIAS\n//                          | properties block_content?\n//                          | block_content\n// flow_node            ::= ALIAS\n//                          | properties flow_content?\n//                          | flow_content\n// properties           ::= TAG ANCHOR? | ANCHOR TAG?\n// block_content        ::= block_collection | flow_collection | SCALAR\n// flow_content         ::= flow_collection | SCALAR\n// block_collection     ::= block_sequence | block_mapping\n// flow_collection      ::= flow_sequence | flow_mapping\n// block_sequence       ::= BLOCK-SEQUENCE-START (BLOCK-ENTRY block_node?)* BLOCK-END\n// indentless_sequence  ::= (BLOCK-ENTRY block_node?)+\n// block_mapping        ::= BLOCK-MAPPING_START\n//                          ((KEY block_node_or_indentless_sequence?)?\n//                          (VALUE block_node_or_indentless_sequence?)?)*\n//                          BLOCK-END\n// flow_sequence        ::= FLOW-SEQUENCE-START\n//                          (flow_sequence_entry FLOW-ENTRY)*\n//                          flow_sequence_entry?\n//                          FLOW-SEQUENCE-END\n// flow_sequence_entry  ::= flow_node | KEY flow_node? (VALUE flow_node?)?\n// flow_mapping         ::= FLOW-MAPPING-START\n//                          (flow_mapping_entry FLOW-ENTRY)*\n//                          flow_mapping_entry?\n//                          FLOW-MAPPING-END\n// flow_mapping_entry   ::= flow_node | KEY flow_node? (VALUE flow_node?)?\n\n// Peek the next token in the token queue.\nfunc peek_token(parser *yaml_parser_t) *yaml_token_t {\n\tif parser.token_available || yaml_parser_fetch_more_tokens(parser) {\n\t\ttoken := &parser.tokens[parser.tokens_head]\n\t\tyaml_parser_unfold_comments(parser, token)\n\t\treturn token\n\t}\n\treturn nil\n}\n\n// yaml_parser_unfold_comments walks through the comments queue and joins all\n// comments behind the position of the provided token into the respective\n// top-level comment slices in the parser.\nfunc yaml_parser_unfold_comments(parser *yaml_parser_t, token *yaml_token_t) {\n\tfor parser.comments_head < len(parser.comments) && token.start_mark.index >= parser.comments[parser.comments_head].token_mark.index {\n\t\tcomment := &parser.comments[parser.comments_head]\n\t\tif len(comment.head) > 0 {\n\t\t\tif token.typ == yaml_BLOCK_END_TOKEN {\n\t\t\t\t// No heads on ends, so keep comment.head for a follow up token.\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tif len(parser.head_comment) > 0 {\n\t\t\t\tparser.head_comment = append(parser.head_comment, '\\n')\n\t\t\t}\n\t\t\tparser.head_comment = append(parser.head_comment, comment.head...)\n\t\t}\n\t\tif len(comment.foot) > 0 {\n\t\t\tif len(parser.foot_comment) > 0 {\n\t\t\t\tparser.foot_comment = append(parser.foot_comment, '\\n')\n\t\t\t}\n\t\t\tparser.foot_comment = append(parser.foot_comment, comment.foot...)\n\t\t}\n\t\tif len(comment.line) > 0 {\n\t\t\tif len(parser.line_comment) > 0 {\n\t\t\t\tparser.line_comment = append(parser.line_comment, '\\n')\n\t\t\t}\n\t\t\tparser.line_comment = append(parser.line_comment, comment.line...)\n\t\t}\n\t\t*comment = yaml_comment_t{}\n\t\tparser.comments_head++\n\t}\n}\n\n// Remove the next token from the queue (must be called after peek_token).\nfunc skip_token(parser *yaml_parser_t) {\n\tparser.token_available = false\n\tparser.tokens_parsed++\n\tparser.stream_end_produced = parser.tokens[parser.tokens_head].typ == yaml_STREAM_END_TOKEN\n\tparser.tokens_head++\n}\n\n// Get the next event.\nfunc yaml_parser_parse(parser *yaml_parser_t, event *yaml_event_t) bool {\n\t// Erase the event object.\n\t*event = yaml_event_t{}\n\n\t// No events after the end of the stream or error.\n\tif parser.stream_end_produced || parser.error != yaml_NO_ERROR || parser.state == yaml_PARSE_END_STATE {\n\t\treturn true\n\t}\n\n\t// Generate the next event.\n\treturn yaml_parser_state_machine(parser, event)\n}\n\n// Set parser error.\nfunc yaml_parser_set_parser_error(parser *yaml_parser_t, problem string, problem_mark yaml_mark_t) bool {\n\tparser.error = yaml_PARSER_ERROR\n\tparser.problem = problem\n\tparser.problem_mark = problem_mark\n\treturn false\n}\n\nfunc yaml_parser_set_parser_error_context(parser *yaml_parser_t, context string, context_mark yaml_mark_t, problem string, problem_mark yaml_mark_t) bool {\n\tparser.error = yaml_PARSER_ERROR\n\tparser.context = context\n\tparser.context_mark = context_mark\n\tparser.problem = problem\n\tparser.problem_mark = problem_mark\n\treturn false\n}\n\n// State dispatcher.\nfunc yaml_parser_state_machine(parser *yaml_parser_t, event *yaml_event_t) bool {\n\t//trace(\"yaml_parser_state_machine\", \"state:\", parser.state.String())\n\n\tswitch parser.state {\n\tcase yaml_PARSE_STREAM_START_STATE:\n\t\treturn yaml_parser_parse_stream_start(parser, event)\n\n\tcase yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE:\n\t\treturn yaml_parser_parse_document_start(parser, event, true)\n\n\tcase yaml_PARSE_DOCUMENT_START_STATE:\n\t\treturn yaml_parser_parse_document_start(parser, event, false)\n\n\tcase yaml_PARSE_DOCUMENT_CONTENT_STATE:\n\t\treturn yaml_parser_parse_document_content(parser, event)\n\n\tcase yaml_PARSE_DOCUMENT_END_STATE:\n\t\treturn yaml_parser_parse_document_end(parser, event)\n\n\tcase yaml_PARSE_BLOCK_NODE_STATE:\n\t\treturn yaml_parser_parse_node(parser, event, true, false)\n\n\tcase yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE:\n\t\treturn yaml_parser_parse_node(parser, event, true, true)\n\n\tcase yaml_PARSE_FLOW_NODE_STATE:\n\t\treturn yaml_parser_parse_node(parser, event, false, false)\n\n\tcase yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE:\n\t\treturn yaml_parser_parse_block_sequence_entry(parser, event, true)\n\n\tcase yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE:\n\t\treturn yaml_parser_parse_block_sequence_entry(parser, event, false)\n\n\tcase yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE:\n\t\treturn yaml_parser_parse_indentless_sequence_entry(parser, event)\n\n\tcase yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE:\n\t\treturn yaml_parser_parse_block_mapping_key(parser, event, true)\n\n\tcase yaml_PARSE_BLOCK_MAPPING_KEY_STATE:\n\t\treturn yaml_parser_parse_block_mapping_key(parser, event, false)\n\n\tcase yaml_PARSE_BLOCK_MAPPING_VALUE_STATE:\n\t\treturn yaml_parser_parse_block_mapping_value(parser, event)\n\n\tcase yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE:\n\t\treturn yaml_parser_parse_flow_sequence_entry(parser, event, true)\n\n\tcase yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE:\n\t\treturn yaml_parser_parse_flow_sequence_entry(parser, event, false)\n\n\tcase yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE:\n\t\treturn yaml_parser_parse_flow_sequence_entry_mapping_key(parser, event)\n\n\tcase yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE:\n\t\treturn yaml_parser_parse_flow_sequence_entry_mapping_value(parser, event)\n\n\tcase yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE:\n\t\treturn yaml_parser_parse_flow_sequence_entry_mapping_end(parser, event)\n\n\tcase yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE:\n\t\treturn yaml_parser_parse_flow_mapping_key(parser, event, true)\n\n\tcase yaml_PARSE_FLOW_MAPPING_KEY_STATE:\n\t\treturn yaml_parser_parse_flow_mapping_key(parser, event, false)\n\n\tcase yaml_PARSE_FLOW_MAPPING_VALUE_STATE:\n\t\treturn yaml_parser_parse_flow_mapping_value(parser, event, false)\n\n\tcase yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE:\n\t\treturn yaml_parser_parse_flow_mapping_value(parser, event, true)\n\n\tdefault:\n\t\tpanic(\"invalid parser state\")\n\t}\n}\n\n// Parse the production:\n// stream   ::= STREAM-START implicit_document? explicit_document* STREAM-END\n//              ************\nfunc yaml_parser_parse_stream_start(parser *yaml_parser_t, event *yaml_event_t) bool {\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\tif token.typ != yaml_STREAM_START_TOKEN {\n\t\treturn yaml_parser_set_parser_error(parser, \"did not find expected <stream-start>\", token.start_mark)\n\t}\n\tparser.state = yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE\n\t*event = yaml_event_t{\n\t\ttyp:        yaml_STREAM_START_EVENT,\n\t\tstart_mark: token.start_mark,\n\t\tend_mark:   token.end_mark,\n\t\tencoding:   token.encoding,\n\t}\n\tskip_token(parser)\n\treturn true\n}\n\n// Parse the productions:\n// implicit_document    ::= block_node DOCUMENT-END*\n//                          *\n// explicit_document    ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END*\n//                          *************************\nfunc yaml_parser_parse_document_start(parser *yaml_parser_t, event *yaml_event_t, implicit bool) bool {\n\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\n\t// Parse extra document end indicators.\n\tif !implicit {\n\t\tfor token.typ == yaml_DOCUMENT_END_TOKEN {\n\t\t\tskip_token(parser)\n\t\t\ttoken = peek_token(parser)\n\t\t\tif token == nil {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t}\n\n\tif implicit && token.typ != yaml_VERSION_DIRECTIVE_TOKEN &&\n\t\ttoken.typ != yaml_TAG_DIRECTIVE_TOKEN &&\n\t\ttoken.typ != yaml_DOCUMENT_START_TOKEN &&\n\t\ttoken.typ != yaml_STREAM_END_TOKEN {\n\t\t// Parse an implicit document.\n\t\tif !yaml_parser_process_directives(parser, nil, nil) {\n\t\t\treturn false\n\t\t}\n\t\tparser.states = append(parser.states, yaml_PARSE_DOCUMENT_END_STATE)\n\t\tparser.state = yaml_PARSE_BLOCK_NODE_STATE\n\n\t\tvar head_comment []byte\n\t\tif len(parser.head_comment) > 0 {\n\t\t\t// [Go] Scan the header comment backwards, and if an empty line is found, break\n\t\t\t//      the header so the part before the last empty line goes into the\n\t\t\t//      document header, while the bottom of it goes into a follow up event.\n\t\t\tfor i := len(parser.head_comment) - 1; i > 0; i-- {\n\t\t\t\tif parser.head_comment[i] == '\\n' {\n\t\t\t\t\tif i == len(parser.head_comment)-1 {\n\t\t\t\t\t\thead_comment = parser.head_comment[:i]\n\t\t\t\t\t\tparser.head_comment = parser.head_comment[i+1:]\n\t\t\t\t\t\tbreak\n\t\t\t\t\t} else if parser.head_comment[i-1] == '\\n' {\n\t\t\t\t\t\thead_comment = parser.head_comment[:i-1]\n\t\t\t\t\t\tparser.head_comment = parser.head_comment[i+1:]\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t*event = yaml_event_t{\n\t\t\ttyp:        yaml_DOCUMENT_START_EVENT,\n\t\t\tstart_mark: token.start_mark,\n\t\t\tend_mark:   token.end_mark,\n\n\t\t\thead_comment: head_comment,\n\t\t}\n\n\t} else if token.typ != yaml_STREAM_END_TOKEN {\n\t\t// Parse an explicit document.\n\t\tvar version_directive *yaml_version_directive_t\n\t\tvar tag_directives []yaml_tag_directive_t\n\t\tstart_mark := token.start_mark\n\t\tif !yaml_parser_process_directives(parser, &version_directive, &tag_directives) {\n\t\t\treturn false\n\t\t}\n\t\ttoken = peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tif token.typ != yaml_DOCUMENT_START_TOKEN {\n\t\t\tyaml_parser_set_parser_error(parser,\n\t\t\t\t\"did not find expected <document start>\", token.start_mark)\n\t\t\treturn false\n\t\t}\n\t\tparser.states = append(parser.states, yaml_PARSE_DOCUMENT_END_STATE)\n\t\tparser.state = yaml_PARSE_DOCUMENT_CONTENT_STATE\n\t\tend_mark := token.end_mark\n\n\t\t*event = yaml_event_t{\n\t\t\ttyp:               yaml_DOCUMENT_START_EVENT,\n\t\t\tstart_mark:        start_mark,\n\t\t\tend_mark:          end_mark,\n\t\t\tversion_directive: version_directive,\n\t\t\ttag_directives:    tag_directives,\n\t\t\timplicit:          false,\n\t\t}\n\t\tskip_token(parser)\n\n\t} else {\n\t\t// Parse the stream end.\n\t\tparser.state = yaml_PARSE_END_STATE\n\t\t*event = yaml_event_t{\n\t\t\ttyp:        yaml_STREAM_END_EVENT,\n\t\t\tstart_mark: token.start_mark,\n\t\t\tend_mark:   token.end_mark,\n\t\t}\n\t\tskip_token(parser)\n\t}\n\n\treturn true\n}\n\n// Parse the productions:\n// explicit_document    ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END*\n//                                                    ***********\n//\nfunc yaml_parser_parse_document_content(parser *yaml_parser_t, event *yaml_event_t) bool {\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\n\tif token.typ == yaml_VERSION_DIRECTIVE_TOKEN ||\n\t\ttoken.typ == yaml_TAG_DIRECTIVE_TOKEN ||\n\t\ttoken.typ == yaml_DOCUMENT_START_TOKEN ||\n\t\ttoken.typ == yaml_DOCUMENT_END_TOKEN ||\n\t\ttoken.typ == yaml_STREAM_END_TOKEN {\n\t\tparser.state = parser.states[len(parser.states)-1]\n\t\tparser.states = parser.states[:len(parser.states)-1]\n\t\treturn yaml_parser_process_empty_scalar(parser, event,\n\t\t\ttoken.start_mark)\n\t}\n\treturn yaml_parser_parse_node(parser, event, true, false)\n}\n\n// Parse the productions:\n// implicit_document    ::= block_node DOCUMENT-END*\n//                                     *************\n// explicit_document    ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END*\n//\nfunc yaml_parser_parse_document_end(parser *yaml_parser_t, event *yaml_event_t) bool {\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\n\tstart_mark := token.start_mark\n\tend_mark := token.start_mark\n\n\timplicit := true\n\tif token.typ == yaml_DOCUMENT_END_TOKEN {\n\t\tend_mark = token.end_mark\n\t\tskip_token(parser)\n\t\timplicit = false\n\t}\n\n\tparser.tag_directives = parser.tag_directives[:0]\n\n\tparser.state = yaml_PARSE_DOCUMENT_START_STATE\n\t*event = yaml_event_t{\n\t\ttyp:        yaml_DOCUMENT_END_EVENT,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t\timplicit:   implicit,\n\t}\n\tyaml_parser_set_event_comments(parser, event)\n\tif len(event.head_comment) > 0 && len(event.foot_comment) == 0 {\n\t\tevent.foot_comment = event.head_comment\n\t\tevent.head_comment = nil\n\t}\n\treturn true\n}\n\nfunc yaml_parser_set_event_comments(parser *yaml_parser_t, event *yaml_event_t) {\n\tevent.head_comment = parser.head_comment\n\tevent.line_comment = parser.line_comment\n\tevent.foot_comment = parser.foot_comment\n\tparser.head_comment = nil\n\tparser.line_comment = nil\n\tparser.foot_comment = nil\n\tparser.tail_comment = nil\n\tparser.stem_comment = nil\n}\n\n// Parse the productions:\n// block_node_or_indentless_sequence    ::=\n//                          ALIAS\n//                          *****\n//                          | properties (block_content | indentless_block_sequence)?\n//                            **********  *\n//                          | block_content | indentless_block_sequence\n//                            *\n// block_node           ::= ALIAS\n//                          *****\n//                          | properties block_content?\n//                            ********** *\n//                          | block_content\n//                            *\n// flow_node            ::= ALIAS\n//                          *****\n//                          | properties flow_content?\n//                            ********** *\n//                          | flow_content\n//                            *\n// properties           ::= TAG ANCHOR? | ANCHOR TAG?\n//                          *************************\n// block_content        ::= block_collection | flow_collection | SCALAR\n//                                                               ******\n// flow_content         ::= flow_collection | SCALAR\n//                                            ******\nfunc yaml_parser_parse_node(parser *yaml_parser_t, event *yaml_event_t, block, indentless_sequence bool) bool {\n\t//defer trace(\"yaml_parser_parse_node\", \"block:\", block, \"indentless_sequence:\", indentless_sequence)()\n\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\n\tif token.typ == yaml_ALIAS_TOKEN {\n\t\tparser.state = parser.states[len(parser.states)-1]\n\t\tparser.states = parser.states[:len(parser.states)-1]\n\t\t*event = yaml_event_t{\n\t\t\ttyp:        yaml_ALIAS_EVENT,\n\t\t\tstart_mark: token.start_mark,\n\t\t\tend_mark:   token.end_mark,\n\t\t\tanchor:     token.value,\n\t\t}\n\t\tyaml_parser_set_event_comments(parser, event)\n\t\tskip_token(parser)\n\t\treturn true\n\t}\n\n\tstart_mark := token.start_mark\n\tend_mark := token.start_mark\n\n\tvar tag_token bool\n\tvar tag_handle, tag_suffix, anchor []byte\n\tvar tag_mark yaml_mark_t\n\tif token.typ == yaml_ANCHOR_TOKEN {\n\t\tanchor = token.value\n\t\tstart_mark = token.start_mark\n\t\tend_mark = token.end_mark\n\t\tskip_token(parser)\n\t\ttoken = peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tif token.typ == yaml_TAG_TOKEN {\n\t\t\ttag_token = true\n\t\t\ttag_handle = token.value\n\t\t\ttag_suffix = token.suffix\n\t\t\ttag_mark = token.start_mark\n\t\t\tend_mark = token.end_mark\n\t\t\tskip_token(parser)\n\t\t\ttoken = peek_token(parser)\n\t\t\tif token == nil {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t} else if token.typ == yaml_TAG_TOKEN {\n\t\ttag_token = true\n\t\ttag_handle = token.value\n\t\ttag_suffix = token.suffix\n\t\tstart_mark = token.start_mark\n\t\ttag_mark = token.start_mark\n\t\tend_mark = token.end_mark\n\t\tskip_token(parser)\n\t\ttoken = peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tif token.typ == yaml_ANCHOR_TOKEN {\n\t\t\tanchor = token.value\n\t\t\tend_mark = token.end_mark\n\t\t\tskip_token(parser)\n\t\t\ttoken = peek_token(parser)\n\t\t\tif token == nil {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t}\n\n\tvar tag []byte\n\tif tag_token {\n\t\tif len(tag_handle) == 0 {\n\t\t\ttag = tag_suffix\n\t\t\ttag_suffix = nil\n\t\t} else {\n\t\t\tfor i := range parser.tag_directives {\n\t\t\t\tif bytes.Equal(parser.tag_directives[i].handle, tag_handle) {\n\t\t\t\t\ttag = append([]byte(nil), parser.tag_directives[i].prefix...)\n\t\t\t\t\ttag = append(tag, tag_suffix...)\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif len(tag) == 0 {\n\t\t\t\tyaml_parser_set_parser_error_context(parser,\n\t\t\t\t\t\"while parsing a node\", start_mark,\n\t\t\t\t\t\"found undefined tag handle\", tag_mark)\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t}\n\n\timplicit := len(tag) == 0\n\tif indentless_sequence && token.typ == yaml_BLOCK_ENTRY_TOKEN {\n\t\tend_mark = token.end_mark\n\t\tparser.state = yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE\n\t\t*event = yaml_event_t{\n\t\t\ttyp:        yaml_SEQUENCE_START_EVENT,\n\t\t\tstart_mark: start_mark,\n\t\t\tend_mark:   end_mark,\n\t\t\tanchor:     anchor,\n\t\t\ttag:        tag,\n\t\t\timplicit:   implicit,\n\t\t\tstyle:      yaml_style_t(yaml_BLOCK_SEQUENCE_STYLE),\n\t\t}\n\t\treturn true\n\t}\n\tif token.typ == yaml_SCALAR_TOKEN {\n\t\tvar plain_implicit, quoted_implicit bool\n\t\tend_mark = token.end_mark\n\t\tif (len(tag) == 0 && token.style == yaml_PLAIN_SCALAR_STYLE) || (len(tag) == 1 && tag[0] == '!') {\n\t\t\tplain_implicit = true\n\t\t} else if len(tag) == 0 {\n\t\t\tquoted_implicit = true\n\t\t}\n\t\tparser.state = parser.states[len(parser.states)-1]\n\t\tparser.states = parser.states[:len(parser.states)-1]\n\n\t\t*event = yaml_event_t{\n\t\t\ttyp:             yaml_SCALAR_EVENT,\n\t\t\tstart_mark:      start_mark,\n\t\t\tend_mark:        end_mark,\n\t\t\tanchor:          anchor,\n\t\t\ttag:             tag,\n\t\t\tvalue:           token.value,\n\t\t\timplicit:        plain_implicit,\n\t\t\tquoted_implicit: quoted_implicit,\n\t\t\tstyle:           yaml_style_t(token.style),\n\t\t}\n\t\tyaml_parser_set_event_comments(parser, event)\n\t\tskip_token(parser)\n\t\treturn true\n\t}\n\tif token.typ == yaml_FLOW_SEQUENCE_START_TOKEN {\n\t\t// [Go] Some of the events below can be merged as they differ only on style.\n\t\tend_mark = token.end_mark\n\t\tparser.state = yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE\n\t\t*event = yaml_event_t{\n\t\t\ttyp:        yaml_SEQUENCE_START_EVENT,\n\t\t\tstart_mark: start_mark,\n\t\t\tend_mark:   end_mark,\n\t\t\tanchor:     anchor,\n\t\t\ttag:        tag,\n\t\t\timplicit:   implicit,\n\t\t\tstyle:      yaml_style_t(yaml_FLOW_SEQUENCE_STYLE),\n\t\t}\n\t\tyaml_parser_set_event_comments(parser, event)\n\t\treturn true\n\t}\n\tif token.typ == yaml_FLOW_MAPPING_START_TOKEN {\n\t\tend_mark = token.end_mark\n\t\tparser.state = yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE\n\t\t*event = yaml_event_t{\n\t\t\ttyp:        yaml_MAPPING_START_EVENT,\n\t\t\tstart_mark: start_mark,\n\t\t\tend_mark:   end_mark,\n\t\t\tanchor:     anchor,\n\t\t\ttag:        tag,\n\t\t\timplicit:   implicit,\n\t\t\tstyle:      yaml_style_t(yaml_FLOW_MAPPING_STYLE),\n\t\t}\n\t\tyaml_parser_set_event_comments(parser, event)\n\t\treturn true\n\t}\n\tif block && token.typ == yaml_BLOCK_SEQUENCE_START_TOKEN {\n\t\tend_mark = token.end_mark\n\t\tparser.state = yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE\n\t\t*event = yaml_event_t{\n\t\t\ttyp:        yaml_SEQUENCE_START_EVENT,\n\t\t\tstart_mark: start_mark,\n\t\t\tend_mark:   end_mark,\n\t\t\tanchor:     anchor,\n\t\t\ttag:        tag,\n\t\t\timplicit:   implicit,\n\t\t\tstyle:      yaml_style_t(yaml_BLOCK_SEQUENCE_STYLE),\n\t\t}\n\t\tif parser.stem_comment != nil {\n\t\t\tevent.head_comment = parser.stem_comment\n\t\t\tparser.stem_comment = nil\n\t\t}\n\t\treturn true\n\t}\n\tif block && token.typ == yaml_BLOCK_MAPPING_START_TOKEN {\n\t\tend_mark = token.end_mark\n\t\tparser.state = yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE\n\t\t*event = yaml_event_t{\n\t\t\ttyp:        yaml_MAPPING_START_EVENT,\n\t\t\tstart_mark: start_mark,\n\t\t\tend_mark:   end_mark,\n\t\t\tanchor:     anchor,\n\t\t\ttag:        tag,\n\t\t\timplicit:   implicit,\n\t\t\tstyle:      yaml_style_t(yaml_BLOCK_MAPPING_STYLE),\n\t\t}\n\t\tif parser.stem_comment != nil {\n\t\t\tevent.head_comment = parser.stem_comment\n\t\t\tparser.stem_comment = nil\n\t\t}\n\t\treturn true\n\t}\n\tif len(anchor) > 0 || len(tag) > 0 {\n\t\tparser.state = parser.states[len(parser.states)-1]\n\t\tparser.states = parser.states[:len(parser.states)-1]\n\n\t\t*event = yaml_event_t{\n\t\t\ttyp:             yaml_SCALAR_EVENT,\n\t\t\tstart_mark:      start_mark,\n\t\t\tend_mark:        end_mark,\n\t\t\tanchor:          anchor,\n\t\t\ttag:             tag,\n\t\t\timplicit:        implicit,\n\t\t\tquoted_implicit: false,\n\t\t\tstyle:           yaml_style_t(yaml_PLAIN_SCALAR_STYLE),\n\t\t}\n\t\treturn true\n\t}\n\n\tcontext := \"while parsing a flow node\"\n\tif block {\n\t\tcontext = \"while parsing a block node\"\n\t}\n\tyaml_parser_set_parser_error_context(parser, context, start_mark,\n\t\t\"did not find expected node content\", token.start_mark)\n\treturn false\n}\n\n// Parse the productions:\n// block_sequence ::= BLOCK-SEQUENCE-START (BLOCK-ENTRY block_node?)* BLOCK-END\n//                    ********************  *********** *             *********\n//\nfunc yaml_parser_parse_block_sequence_entry(parser *yaml_parser_t, event *yaml_event_t, first bool) bool {\n\tif first {\n\t\ttoken := peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tparser.marks = append(parser.marks, token.start_mark)\n\t\tskip_token(parser)\n\t}\n\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\n\tif token.typ == yaml_BLOCK_ENTRY_TOKEN {\n\t\tmark := token.end_mark\n\t\tprior_head_len := len(parser.head_comment)\n\t\tskip_token(parser)\n\t\tyaml_parser_split_stem_comment(parser, prior_head_len)\n\t\ttoken = peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tif token.typ != yaml_BLOCK_ENTRY_TOKEN && token.typ != yaml_BLOCK_END_TOKEN {\n\t\t\tparser.states = append(parser.states, yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE)\n\t\t\treturn yaml_parser_parse_node(parser, event, true, false)\n\t\t} else {\n\t\t\tparser.state = yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE\n\t\t\treturn yaml_parser_process_empty_scalar(parser, event, mark)\n\t\t}\n\t}\n\tif token.typ == yaml_BLOCK_END_TOKEN {\n\t\tparser.state = parser.states[len(parser.states)-1]\n\t\tparser.states = parser.states[:len(parser.states)-1]\n\t\tparser.marks = parser.marks[:len(parser.marks)-1]\n\n\t\t*event = yaml_event_t{\n\t\t\ttyp:        yaml_SEQUENCE_END_EVENT,\n\t\t\tstart_mark: token.start_mark,\n\t\t\tend_mark:   token.end_mark,\n\t\t}\n\n\t\tskip_token(parser)\n\t\treturn true\n\t}\n\n\tcontext_mark := parser.marks[len(parser.marks)-1]\n\tparser.marks = parser.marks[:len(parser.marks)-1]\n\treturn yaml_parser_set_parser_error_context(parser,\n\t\t\"while parsing a block collection\", context_mark,\n\t\t\"did not find expected '-' indicator\", token.start_mark)\n}\n\n// Parse the productions:\n// indentless_sequence  ::= (BLOCK-ENTRY block_node?)+\n//                           *********** *\nfunc yaml_parser_parse_indentless_sequence_entry(parser *yaml_parser_t, event *yaml_event_t) bool {\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\n\tif token.typ == yaml_BLOCK_ENTRY_TOKEN {\n\t\tmark := token.end_mark\n\t\tprior_head_len := len(parser.head_comment)\n\t\tskip_token(parser)\n\t\tyaml_parser_split_stem_comment(parser, prior_head_len)\n\t\ttoken = peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tif token.typ != yaml_BLOCK_ENTRY_TOKEN &&\n\t\t\ttoken.typ != yaml_KEY_TOKEN &&\n\t\t\ttoken.typ != yaml_VALUE_TOKEN &&\n\t\t\ttoken.typ != yaml_BLOCK_END_TOKEN {\n\t\t\tparser.states = append(parser.states, yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE)\n\t\t\treturn yaml_parser_parse_node(parser, event, true, false)\n\t\t}\n\t\tparser.state = yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE\n\t\treturn yaml_parser_process_empty_scalar(parser, event, mark)\n\t}\n\tparser.state = parser.states[len(parser.states)-1]\n\tparser.states = parser.states[:len(parser.states)-1]\n\n\t*event = yaml_event_t{\n\t\ttyp:        yaml_SEQUENCE_END_EVENT,\n\t\tstart_mark: token.start_mark,\n\t\tend_mark:   token.start_mark, // [Go] Shouldn't this be token.end_mark?\n\t}\n\treturn true\n}\n\n// Split stem comment from head comment.\n//\n// When a sequence or map is found under a sequence entry, the former head comment\n// is assigned to the underlying sequence or map as a whole, not the individual\n// sequence or map entry as would be expected otherwise. To handle this case the\n// previous head comment is moved aside as the stem comment.\nfunc yaml_parser_split_stem_comment(parser *yaml_parser_t, stem_len int) {\n\tif stem_len == 0 {\n\t\treturn\n\t}\n\n\ttoken := peek_token(parser)\n\tif token == nil || token.typ != yaml_BLOCK_SEQUENCE_START_TOKEN && token.typ != yaml_BLOCK_MAPPING_START_TOKEN {\n\t\treturn\n\t}\n\n\tparser.stem_comment = parser.head_comment[:stem_len]\n\tif len(parser.head_comment) == stem_len {\n\t\tparser.head_comment = nil\n\t} else {\n\t\t// Copy suffix to prevent very strange bugs if someone ever appends\n\t\t// further bytes to the prefix in the stem_comment slice above.\n\t\tparser.head_comment = append([]byte(nil), parser.head_comment[stem_len+1:]...)\n\t}\n}\n\n// Parse the productions:\n// block_mapping        ::= BLOCK-MAPPING_START\n//                          *******************\n//                          ((KEY block_node_or_indentless_sequence?)?\n//                            *** *\n//                          (VALUE block_node_or_indentless_sequence?)?)*\n//\n//                          BLOCK-END\n//                          *********\n//\nfunc yaml_parser_parse_block_mapping_key(parser *yaml_parser_t, event *yaml_event_t, first bool) bool {\n\tif first {\n\t\ttoken := peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tparser.marks = append(parser.marks, token.start_mark)\n\t\tskip_token(parser)\n\t}\n\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\n\t// [Go] A tail comment was left from the prior mapping value processed. Emit an event\n\t//      as it needs to be processed with that value and not the following key.\n\tif len(parser.tail_comment) > 0 {\n\t\t*event = yaml_event_t{\n\t\t\ttyp:          yaml_TAIL_COMMENT_EVENT,\n\t\t\tstart_mark:   token.start_mark,\n\t\t\tend_mark:     token.end_mark,\n\t\t\tfoot_comment: parser.tail_comment,\n\t\t}\n\t\tparser.tail_comment = nil\n\t\treturn true\n\t}\n\n\tif token.typ == yaml_KEY_TOKEN {\n\t\tmark := token.end_mark\n\t\tskip_token(parser)\n\t\ttoken = peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tif token.typ != yaml_KEY_TOKEN &&\n\t\t\ttoken.typ != yaml_VALUE_TOKEN &&\n\t\t\ttoken.typ != yaml_BLOCK_END_TOKEN {\n\t\t\tparser.states = append(parser.states, yaml_PARSE_BLOCK_MAPPING_VALUE_STATE)\n\t\t\treturn yaml_parser_parse_node(parser, event, true, true)\n\t\t} else {\n\t\t\tparser.state = yaml_PARSE_BLOCK_MAPPING_VALUE_STATE\n\t\t\treturn yaml_parser_process_empty_scalar(parser, event, mark)\n\t\t}\n\t} else if token.typ == yaml_BLOCK_END_TOKEN {\n\t\tparser.state = parser.states[len(parser.states)-1]\n\t\tparser.states = parser.states[:len(parser.states)-1]\n\t\tparser.marks = parser.marks[:len(parser.marks)-1]\n\t\t*event = yaml_event_t{\n\t\t\ttyp:        yaml_MAPPING_END_EVENT,\n\t\t\tstart_mark: token.start_mark,\n\t\t\tend_mark:   token.end_mark,\n\t\t}\n\t\tyaml_parser_set_event_comments(parser, event)\n\t\tskip_token(parser)\n\t\treturn true\n\t}\n\n\tcontext_mark := parser.marks[len(parser.marks)-1]\n\tparser.marks = parser.marks[:len(parser.marks)-1]\n\treturn yaml_parser_set_parser_error_context(parser,\n\t\t\"while parsing a block mapping\", context_mark,\n\t\t\"did not find expected key\", token.start_mark)\n}\n\n// Parse the productions:\n// block_mapping        ::= BLOCK-MAPPING_START\n//\n//                          ((KEY block_node_or_indentless_sequence?)?\n//\n//                          (VALUE block_node_or_indentless_sequence?)?)*\n//                           ***** *\n//                          BLOCK-END\n//\n//\nfunc yaml_parser_parse_block_mapping_value(parser *yaml_parser_t, event *yaml_event_t) bool {\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\tif token.typ == yaml_VALUE_TOKEN {\n\t\tmark := token.end_mark\n\t\tskip_token(parser)\n\t\ttoken = peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tif token.typ != yaml_KEY_TOKEN &&\n\t\t\ttoken.typ != yaml_VALUE_TOKEN &&\n\t\t\ttoken.typ != yaml_BLOCK_END_TOKEN {\n\t\t\tparser.states = append(parser.states, yaml_PARSE_BLOCK_MAPPING_KEY_STATE)\n\t\t\treturn yaml_parser_parse_node(parser, event, true, true)\n\t\t}\n\t\tparser.state = yaml_PARSE_BLOCK_MAPPING_KEY_STATE\n\t\treturn yaml_parser_process_empty_scalar(parser, event, mark)\n\t}\n\tparser.state = yaml_PARSE_BLOCK_MAPPING_KEY_STATE\n\treturn yaml_parser_process_empty_scalar(parser, event, token.start_mark)\n}\n\n// Parse the productions:\n// flow_sequence        ::= FLOW-SEQUENCE-START\n//                          *******************\n//                          (flow_sequence_entry FLOW-ENTRY)*\n//                           *                   **********\n//                          flow_sequence_entry?\n//                          *\n//                          FLOW-SEQUENCE-END\n//                          *****************\n// flow_sequence_entry  ::= flow_node | KEY flow_node? (VALUE flow_node?)?\n//                          *\n//\nfunc yaml_parser_parse_flow_sequence_entry(parser *yaml_parser_t, event *yaml_event_t, first bool) bool {\n\tif first {\n\t\ttoken := peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tparser.marks = append(parser.marks, token.start_mark)\n\t\tskip_token(parser)\n\t}\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\tif token.typ != yaml_FLOW_SEQUENCE_END_TOKEN {\n\t\tif !first {\n\t\t\tif token.typ == yaml_FLOW_ENTRY_TOKEN {\n\t\t\t\tskip_token(parser)\n\t\t\t\ttoken = peek_token(parser)\n\t\t\t\tif token == nil {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcontext_mark := parser.marks[len(parser.marks)-1]\n\t\t\t\tparser.marks = parser.marks[:len(parser.marks)-1]\n\t\t\t\treturn yaml_parser_set_parser_error_context(parser,\n\t\t\t\t\t\"while parsing a flow sequence\", context_mark,\n\t\t\t\t\t\"did not find expected ',' or ']'\", token.start_mark)\n\t\t\t}\n\t\t}\n\n\t\tif token.typ == yaml_KEY_TOKEN {\n\t\t\tparser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE\n\t\t\t*event = yaml_event_t{\n\t\t\t\ttyp:        yaml_MAPPING_START_EVENT,\n\t\t\t\tstart_mark: token.start_mark,\n\t\t\t\tend_mark:   token.end_mark,\n\t\t\t\timplicit:   true,\n\t\t\t\tstyle:      yaml_style_t(yaml_FLOW_MAPPING_STYLE),\n\t\t\t}\n\t\t\tskip_token(parser)\n\t\t\treturn true\n\t\t} else if token.typ != yaml_FLOW_SEQUENCE_END_TOKEN {\n\t\t\tparser.states = append(parser.states, yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE)\n\t\t\treturn yaml_parser_parse_node(parser, event, false, false)\n\t\t}\n\t}\n\n\tparser.state = parser.states[len(parser.states)-1]\n\tparser.states = parser.states[:len(parser.states)-1]\n\tparser.marks = parser.marks[:len(parser.marks)-1]\n\n\t*event = yaml_event_t{\n\t\ttyp:        yaml_SEQUENCE_END_EVENT,\n\t\tstart_mark: token.start_mark,\n\t\tend_mark:   token.end_mark,\n\t}\n\tyaml_parser_set_event_comments(parser, event)\n\n\tskip_token(parser)\n\treturn true\n}\n\n//\n// Parse the productions:\n// flow_sequence_entry  ::= flow_node | KEY flow_node? (VALUE flow_node?)?\n//                                      *** *\n//\nfunc yaml_parser_parse_flow_sequence_entry_mapping_key(parser *yaml_parser_t, event *yaml_event_t) bool {\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\tif token.typ != yaml_VALUE_TOKEN &&\n\t\ttoken.typ != yaml_FLOW_ENTRY_TOKEN &&\n\t\ttoken.typ != yaml_FLOW_SEQUENCE_END_TOKEN {\n\t\tparser.states = append(parser.states, yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE)\n\t\treturn yaml_parser_parse_node(parser, event, false, false)\n\t}\n\tmark := token.end_mark\n\tskip_token(parser)\n\tparser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE\n\treturn yaml_parser_process_empty_scalar(parser, event, mark)\n}\n\n// Parse the productions:\n// flow_sequence_entry  ::= flow_node | KEY flow_node? (VALUE flow_node?)?\n//                                                      ***** *\n//\nfunc yaml_parser_parse_flow_sequence_entry_mapping_value(parser *yaml_parser_t, event *yaml_event_t) bool {\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\tif token.typ == yaml_VALUE_TOKEN {\n\t\tskip_token(parser)\n\t\ttoken := peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tif token.typ != yaml_FLOW_ENTRY_TOKEN && token.typ != yaml_FLOW_SEQUENCE_END_TOKEN {\n\t\t\tparser.states = append(parser.states, yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE)\n\t\t\treturn yaml_parser_parse_node(parser, event, false, false)\n\t\t}\n\t}\n\tparser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE\n\treturn yaml_parser_process_empty_scalar(parser, event, token.start_mark)\n}\n\n// Parse the productions:\n// flow_sequence_entry  ::= flow_node | KEY flow_node? (VALUE flow_node?)?\n//                                                                      *\n//\nfunc yaml_parser_parse_flow_sequence_entry_mapping_end(parser *yaml_parser_t, event *yaml_event_t) bool {\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\tparser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE\n\t*event = yaml_event_t{\n\t\ttyp:        yaml_MAPPING_END_EVENT,\n\t\tstart_mark: token.start_mark,\n\t\tend_mark:   token.start_mark, // [Go] Shouldn't this be end_mark?\n\t}\n\treturn true\n}\n\n// Parse the productions:\n// flow_mapping         ::= FLOW-MAPPING-START\n//                          ******************\n//                          (flow_mapping_entry FLOW-ENTRY)*\n//                           *                  **********\n//                          flow_mapping_entry?\n//                          ******************\n//                          FLOW-MAPPING-END\n//                          ****************\n// flow_mapping_entry   ::= flow_node | KEY flow_node? (VALUE flow_node?)?\n//                          *           *** *\n//\nfunc yaml_parser_parse_flow_mapping_key(parser *yaml_parser_t, event *yaml_event_t, first bool) bool {\n\tif first {\n\t\ttoken := peek_token(parser)\n\t\tparser.marks = append(parser.marks, token.start_mark)\n\t\tskip_token(parser)\n\t}\n\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\n\tif token.typ != yaml_FLOW_MAPPING_END_TOKEN {\n\t\tif !first {\n\t\t\tif token.typ == yaml_FLOW_ENTRY_TOKEN {\n\t\t\t\tskip_token(parser)\n\t\t\t\ttoken = peek_token(parser)\n\t\t\t\tif token == nil {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcontext_mark := parser.marks[len(parser.marks)-1]\n\t\t\t\tparser.marks = parser.marks[:len(parser.marks)-1]\n\t\t\t\treturn yaml_parser_set_parser_error_context(parser,\n\t\t\t\t\t\"while parsing a flow mapping\", context_mark,\n\t\t\t\t\t\"did not find expected ',' or '}'\", token.start_mark)\n\t\t\t}\n\t\t}\n\n\t\tif token.typ == yaml_KEY_TOKEN {\n\t\t\tskip_token(parser)\n\t\t\ttoken = peek_token(parser)\n\t\t\tif token == nil {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif token.typ != yaml_VALUE_TOKEN &&\n\t\t\t\ttoken.typ != yaml_FLOW_ENTRY_TOKEN &&\n\t\t\t\ttoken.typ != yaml_FLOW_MAPPING_END_TOKEN {\n\t\t\t\tparser.states = append(parser.states, yaml_PARSE_FLOW_MAPPING_VALUE_STATE)\n\t\t\t\treturn yaml_parser_parse_node(parser, event, false, false)\n\t\t\t} else {\n\t\t\t\tparser.state = yaml_PARSE_FLOW_MAPPING_VALUE_STATE\n\t\t\t\treturn yaml_parser_process_empty_scalar(parser, event, token.start_mark)\n\t\t\t}\n\t\t} else if token.typ != yaml_FLOW_MAPPING_END_TOKEN {\n\t\t\tparser.states = append(parser.states, yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE)\n\t\t\treturn yaml_parser_parse_node(parser, event, false, false)\n\t\t}\n\t}\n\n\tparser.state = parser.states[len(parser.states)-1]\n\tparser.states = parser.states[:len(parser.states)-1]\n\tparser.marks = parser.marks[:len(parser.marks)-1]\n\t*event = yaml_event_t{\n\t\ttyp:        yaml_MAPPING_END_EVENT,\n\t\tstart_mark: token.start_mark,\n\t\tend_mark:   token.end_mark,\n\t}\n\tyaml_parser_set_event_comments(parser, event)\n\tskip_token(parser)\n\treturn true\n}\n\n// Parse the productions:\n// flow_mapping_entry   ::= flow_node | KEY flow_node? (VALUE flow_node?)?\n//                                   *                  ***** *\n//\nfunc yaml_parser_parse_flow_mapping_value(parser *yaml_parser_t, event *yaml_event_t, empty bool) bool {\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\tif empty {\n\t\tparser.state = yaml_PARSE_FLOW_MAPPING_KEY_STATE\n\t\treturn yaml_parser_process_empty_scalar(parser, event, token.start_mark)\n\t}\n\tif token.typ == yaml_VALUE_TOKEN {\n\t\tskip_token(parser)\n\t\ttoken = peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tif token.typ != yaml_FLOW_ENTRY_TOKEN && token.typ != yaml_FLOW_MAPPING_END_TOKEN {\n\t\t\tparser.states = append(parser.states, yaml_PARSE_FLOW_MAPPING_KEY_STATE)\n\t\t\treturn yaml_parser_parse_node(parser, event, false, false)\n\t\t}\n\t}\n\tparser.state = yaml_PARSE_FLOW_MAPPING_KEY_STATE\n\treturn yaml_parser_process_empty_scalar(parser, event, token.start_mark)\n}\n\n// Generate an empty scalar event.\nfunc yaml_parser_process_empty_scalar(parser *yaml_parser_t, event *yaml_event_t, mark yaml_mark_t) bool {\n\t*event = yaml_event_t{\n\t\ttyp:        yaml_SCALAR_EVENT,\n\t\tstart_mark: mark,\n\t\tend_mark:   mark,\n\t\tvalue:      nil, // Empty\n\t\timplicit:   true,\n\t\tstyle:      yaml_style_t(yaml_PLAIN_SCALAR_STYLE),\n\t}\n\treturn true\n}\n\nvar default_tag_directives = []yaml_tag_directive_t{\n\t{[]byte(\"!\"), []byte(\"!\")},\n\t{[]byte(\"!!\"), []byte(\"tag:yaml.org,2002:\")},\n}\n\n// Parse directives.\nfunc yaml_parser_process_directives(parser *yaml_parser_t,\n\tversion_directive_ref **yaml_version_directive_t,\n\ttag_directives_ref *[]yaml_tag_directive_t) bool {\n\n\tvar version_directive *yaml_version_directive_t\n\tvar tag_directives []yaml_tag_directive_t\n\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\n\tfor token.typ == yaml_VERSION_DIRECTIVE_TOKEN || token.typ == yaml_TAG_DIRECTIVE_TOKEN {\n\t\tif token.typ == yaml_VERSION_DIRECTIVE_TOKEN {\n\t\t\tif version_directive != nil {\n\t\t\t\tyaml_parser_set_parser_error(parser,\n\t\t\t\t\t\"found duplicate %YAML directive\", token.start_mark)\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif token.major != 1 || token.minor != 1 {\n\t\t\t\tyaml_parser_set_parser_error(parser,\n\t\t\t\t\t\"found incompatible YAML document\", token.start_mark)\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tversion_directive = &yaml_version_directive_t{\n\t\t\t\tmajor: token.major,\n\t\t\t\tminor: token.minor,\n\t\t\t}\n\t\t} else if token.typ == yaml_TAG_DIRECTIVE_TOKEN {\n\t\t\tvalue := yaml_tag_directive_t{\n\t\t\t\thandle: token.value,\n\t\t\t\tprefix: token.prefix,\n\t\t\t}\n\t\t\tif !yaml_parser_append_tag_directive(parser, value, false, token.start_mark) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\ttag_directives = append(tag_directives, value)\n\t\t}\n\n\t\tskip_token(parser)\n\t\ttoken = peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tfor i := range default_tag_directives {\n\t\tif !yaml_parser_append_tag_directive(parser, default_tag_directives[i], true, token.start_mark) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tif version_directive_ref != nil {\n\t\t*version_directive_ref = version_directive\n\t}\n\tif tag_directives_ref != nil {\n\t\t*tag_directives_ref = tag_directives\n\t}\n\treturn true\n}\n\n// Append a tag directive to the directives stack.\nfunc yaml_parser_append_tag_directive(parser *yaml_parser_t, value yaml_tag_directive_t, allow_duplicates bool, mark yaml_mark_t) bool {\n\tfor i := range parser.tag_directives {\n\t\tif bytes.Equal(value.handle, parser.tag_directives[i].handle) {\n\t\t\tif allow_duplicates {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn yaml_parser_set_parser_error(parser, \"found duplicate %TAG directive\", mark)\n\t\t}\n\t}\n\n\t// [Go] I suspect the copy is unnecessary. This was likely done\n\t// because there was no way to track ownership of the data.\n\tvalue_copy := yaml_tag_directive_t{\n\t\thandle: make([]byte, len(value.handle)),\n\t\tprefix: make([]byte, len(value.prefix)),\n\t}\n\tcopy(value_copy.handle, value.handle)\n\tcopy(value_copy.prefix, value.prefix)\n\tparser.tag_directives = append(parser.tag_directives, value_copy)\n\treturn true\n}\n"
  },
  {
    "path": "vendor/gopkg.in/yaml.v3/readerc.go",
    "content": "// \n// Copyright (c) 2011-2019 Canonical Ltd\n// Copyright (c) 2006-2010 Kirill Simonov\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.\n\npackage yaml\n\nimport (\n\t\"io\"\n)\n\n// Set the reader error and return 0.\nfunc yaml_parser_set_reader_error(parser *yaml_parser_t, problem string, offset int, value int) bool {\n\tparser.error = yaml_READER_ERROR\n\tparser.problem = problem\n\tparser.problem_offset = offset\n\tparser.problem_value = value\n\treturn false\n}\n\n// Byte order marks.\nconst (\n\tbom_UTF8    = \"\\xef\\xbb\\xbf\"\n\tbom_UTF16LE = \"\\xff\\xfe\"\n\tbom_UTF16BE = \"\\xfe\\xff\"\n)\n\n// Determine the input stream encoding by checking the BOM symbol. If no BOM is\n// found, the UTF-8 encoding is assumed. Return 1 on success, 0 on failure.\nfunc yaml_parser_determine_encoding(parser *yaml_parser_t) bool {\n\t// Ensure that we had enough bytes in the raw buffer.\n\tfor !parser.eof && len(parser.raw_buffer)-parser.raw_buffer_pos < 3 {\n\t\tif !yaml_parser_update_raw_buffer(parser) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Determine the encoding.\n\tbuf := parser.raw_buffer\n\tpos := parser.raw_buffer_pos\n\tavail := len(buf) - pos\n\tif avail >= 2 && buf[pos] == bom_UTF16LE[0] && buf[pos+1] == bom_UTF16LE[1] {\n\t\tparser.encoding = yaml_UTF16LE_ENCODING\n\t\tparser.raw_buffer_pos += 2\n\t\tparser.offset += 2\n\t} else if avail >= 2 && buf[pos] == bom_UTF16BE[0] && buf[pos+1] == bom_UTF16BE[1] {\n\t\tparser.encoding = yaml_UTF16BE_ENCODING\n\t\tparser.raw_buffer_pos += 2\n\t\tparser.offset += 2\n\t} else if avail >= 3 && buf[pos] == bom_UTF8[0] && buf[pos+1] == bom_UTF8[1] && buf[pos+2] == bom_UTF8[2] {\n\t\tparser.encoding = yaml_UTF8_ENCODING\n\t\tparser.raw_buffer_pos += 3\n\t\tparser.offset += 3\n\t} else {\n\t\tparser.encoding = yaml_UTF8_ENCODING\n\t}\n\treturn true\n}\n\n// Update the raw buffer.\nfunc yaml_parser_update_raw_buffer(parser *yaml_parser_t) bool {\n\tsize_read := 0\n\n\t// Return if the raw buffer is full.\n\tif parser.raw_buffer_pos == 0 && len(parser.raw_buffer) == cap(parser.raw_buffer) {\n\t\treturn true\n\t}\n\n\t// Return on EOF.\n\tif parser.eof {\n\t\treturn true\n\t}\n\n\t// Move the remaining bytes in the raw buffer to the beginning.\n\tif parser.raw_buffer_pos > 0 && parser.raw_buffer_pos < len(parser.raw_buffer) {\n\t\tcopy(parser.raw_buffer, parser.raw_buffer[parser.raw_buffer_pos:])\n\t}\n\tparser.raw_buffer = parser.raw_buffer[:len(parser.raw_buffer)-parser.raw_buffer_pos]\n\tparser.raw_buffer_pos = 0\n\n\t// Call the read handler to fill the buffer.\n\tsize_read, err := parser.read_handler(parser, parser.raw_buffer[len(parser.raw_buffer):cap(parser.raw_buffer)])\n\tparser.raw_buffer = parser.raw_buffer[:len(parser.raw_buffer)+size_read]\n\tif err == io.EOF {\n\t\tparser.eof = true\n\t} else if err != nil {\n\t\treturn yaml_parser_set_reader_error(parser, \"input error: \"+err.Error(), parser.offset, -1)\n\t}\n\treturn true\n}\n\n// Ensure that the buffer contains at least `length` characters.\n// Return true on success, false on failure.\n//\n// The length is supposed to be significantly less that the buffer size.\nfunc yaml_parser_update_buffer(parser *yaml_parser_t, length int) bool {\n\tif parser.read_handler == nil {\n\t\tpanic(\"read handler must be set\")\n\t}\n\n\t// [Go] This function was changed to guarantee the requested length size at EOF.\n\t// The fact we need to do this is pretty awful, but the description above implies\n\t// for that to be the case, and there are tests\n\n\t// If the EOF flag is set and the raw buffer is empty, do nothing.\n\tif parser.eof && parser.raw_buffer_pos == len(parser.raw_buffer) {\n\t\t// [Go] ACTUALLY! Read the documentation of this function above.\n\t\t// This is just broken. To return true, we need to have the\n\t\t// given length in the buffer. Not doing that means every single\n\t\t// check that calls this function to make sure the buffer has a\n\t\t// given length is Go) panicking; or C) accessing invalid memory.\n\t\t//return true\n\t}\n\n\t// Return if the buffer contains enough characters.\n\tif parser.unread >= length {\n\t\treturn true\n\t}\n\n\t// Determine the input encoding if it is not known yet.\n\tif parser.encoding == yaml_ANY_ENCODING {\n\t\tif !yaml_parser_determine_encoding(parser) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Move the unread characters to the beginning of the buffer.\n\tbuffer_len := len(parser.buffer)\n\tif parser.buffer_pos > 0 && parser.buffer_pos < buffer_len {\n\t\tcopy(parser.buffer, parser.buffer[parser.buffer_pos:])\n\t\tbuffer_len -= parser.buffer_pos\n\t\tparser.buffer_pos = 0\n\t} else if parser.buffer_pos == buffer_len {\n\t\tbuffer_len = 0\n\t\tparser.buffer_pos = 0\n\t}\n\n\t// Open the whole buffer for writing, and cut it before returning.\n\tparser.buffer = parser.buffer[:cap(parser.buffer)]\n\n\t// Fill the buffer until it has enough characters.\n\tfirst := true\n\tfor parser.unread < length {\n\n\t\t// Fill the raw buffer if necessary.\n\t\tif !first || parser.raw_buffer_pos == len(parser.raw_buffer) {\n\t\t\tif !yaml_parser_update_raw_buffer(parser) {\n\t\t\t\tparser.buffer = parser.buffer[:buffer_len]\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tfirst = false\n\n\t\t// Decode the raw buffer.\n\tinner:\n\t\tfor parser.raw_buffer_pos != len(parser.raw_buffer) {\n\t\t\tvar value rune\n\t\t\tvar width int\n\n\t\t\traw_unread := len(parser.raw_buffer) - parser.raw_buffer_pos\n\n\t\t\t// Decode the next character.\n\t\t\tswitch parser.encoding {\n\t\t\tcase yaml_UTF8_ENCODING:\n\t\t\t\t// Decode a UTF-8 character.  Check RFC 3629\n\t\t\t\t// (http://www.ietf.org/rfc/rfc3629.txt) for more details.\n\t\t\t\t//\n\t\t\t\t// The following table (taken from the RFC) is used for\n\t\t\t\t// decoding.\n\t\t\t\t//\n\t\t\t\t//    Char. number range |        UTF-8 octet sequence\n\t\t\t\t//      (hexadecimal)    |              (binary)\n\t\t\t\t//   --------------------+------------------------------------\n\t\t\t\t//   0000 0000-0000 007F | 0xxxxxxx\n\t\t\t\t//   0000 0080-0000 07FF | 110xxxxx 10xxxxxx\n\t\t\t\t//   0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx\n\t\t\t\t//   0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n\t\t\t\t//\n\t\t\t\t// Additionally, the characters in the range 0xD800-0xDFFF\n\t\t\t\t// are prohibited as they are reserved for use with UTF-16\n\t\t\t\t// surrogate pairs.\n\n\t\t\t\t// Determine the length of the UTF-8 sequence.\n\t\t\t\toctet := parser.raw_buffer[parser.raw_buffer_pos]\n\t\t\t\tswitch {\n\t\t\t\tcase octet&0x80 == 0x00:\n\t\t\t\t\twidth = 1\n\t\t\t\tcase octet&0xE0 == 0xC0:\n\t\t\t\t\twidth = 2\n\t\t\t\tcase octet&0xF0 == 0xE0:\n\t\t\t\t\twidth = 3\n\t\t\t\tcase octet&0xF8 == 0xF0:\n\t\t\t\t\twidth = 4\n\t\t\t\tdefault:\n\t\t\t\t\t// The leading octet is invalid.\n\t\t\t\t\treturn yaml_parser_set_reader_error(parser,\n\t\t\t\t\t\t\"invalid leading UTF-8 octet\",\n\t\t\t\t\t\tparser.offset, int(octet))\n\t\t\t\t}\n\n\t\t\t\t// Check if the raw buffer contains an incomplete character.\n\t\t\t\tif width > raw_unread {\n\t\t\t\t\tif parser.eof {\n\t\t\t\t\t\treturn yaml_parser_set_reader_error(parser,\n\t\t\t\t\t\t\t\"incomplete UTF-8 octet sequence\",\n\t\t\t\t\t\t\tparser.offset, -1)\n\t\t\t\t\t}\n\t\t\t\t\tbreak inner\n\t\t\t\t}\n\n\t\t\t\t// Decode the leading octet.\n\t\t\t\tswitch {\n\t\t\t\tcase octet&0x80 == 0x00:\n\t\t\t\t\tvalue = rune(octet & 0x7F)\n\t\t\t\tcase octet&0xE0 == 0xC0:\n\t\t\t\t\tvalue = rune(octet & 0x1F)\n\t\t\t\tcase octet&0xF0 == 0xE0:\n\t\t\t\t\tvalue = rune(octet & 0x0F)\n\t\t\t\tcase octet&0xF8 == 0xF0:\n\t\t\t\t\tvalue = rune(octet & 0x07)\n\t\t\t\tdefault:\n\t\t\t\t\tvalue = 0\n\t\t\t\t}\n\n\t\t\t\t// Check and decode the trailing octets.\n\t\t\t\tfor k := 1; k < width; k++ {\n\t\t\t\t\toctet = parser.raw_buffer[parser.raw_buffer_pos+k]\n\n\t\t\t\t\t// Check if the octet is valid.\n\t\t\t\t\tif (octet & 0xC0) != 0x80 {\n\t\t\t\t\t\treturn yaml_parser_set_reader_error(parser,\n\t\t\t\t\t\t\t\"invalid trailing UTF-8 octet\",\n\t\t\t\t\t\t\tparser.offset+k, int(octet))\n\t\t\t\t\t}\n\n\t\t\t\t\t// Decode the octet.\n\t\t\t\t\tvalue = (value << 6) + rune(octet&0x3F)\n\t\t\t\t}\n\n\t\t\t\t// Check the length of the sequence against the value.\n\t\t\t\tswitch {\n\t\t\t\tcase width == 1:\n\t\t\t\tcase width == 2 && value >= 0x80:\n\t\t\t\tcase width == 3 && value >= 0x800:\n\t\t\t\tcase width == 4 && value >= 0x10000:\n\t\t\t\tdefault:\n\t\t\t\t\treturn yaml_parser_set_reader_error(parser,\n\t\t\t\t\t\t\"invalid length of a UTF-8 sequence\",\n\t\t\t\t\t\tparser.offset, -1)\n\t\t\t\t}\n\n\t\t\t\t// Check the range of the value.\n\t\t\t\tif value >= 0xD800 && value <= 0xDFFF || value > 0x10FFFF {\n\t\t\t\t\treturn yaml_parser_set_reader_error(parser,\n\t\t\t\t\t\t\"invalid Unicode character\",\n\t\t\t\t\t\tparser.offset, int(value))\n\t\t\t\t}\n\n\t\t\tcase yaml_UTF16LE_ENCODING, yaml_UTF16BE_ENCODING:\n\t\t\t\tvar low, high int\n\t\t\t\tif parser.encoding == yaml_UTF16LE_ENCODING {\n\t\t\t\t\tlow, high = 0, 1\n\t\t\t\t} else {\n\t\t\t\t\tlow, high = 1, 0\n\t\t\t\t}\n\n\t\t\t\t// The UTF-16 encoding is not as simple as one might\n\t\t\t\t// naively think.  Check RFC 2781\n\t\t\t\t// (http://www.ietf.org/rfc/rfc2781.txt).\n\t\t\t\t//\n\t\t\t\t// Normally, two subsequent bytes describe a Unicode\n\t\t\t\t// character.  However a special technique (called a\n\t\t\t\t// surrogate pair) is used for specifying character\n\t\t\t\t// values larger than 0xFFFF.\n\t\t\t\t//\n\t\t\t\t// A surrogate pair consists of two pseudo-characters:\n\t\t\t\t//      high surrogate area (0xD800-0xDBFF)\n\t\t\t\t//      low surrogate area (0xDC00-0xDFFF)\n\t\t\t\t//\n\t\t\t\t// The following formulas are used for decoding\n\t\t\t\t// and encoding characters using surrogate pairs:\n\t\t\t\t//\n\t\t\t\t//  U  = U' + 0x10000   (0x01 00 00 <= U <= 0x10 FF FF)\n\t\t\t\t//  U' = yyyyyyyyyyxxxxxxxxxx   (0 <= U' <= 0x0F FF FF)\n\t\t\t\t//  W1 = 110110yyyyyyyyyy\n\t\t\t\t//  W2 = 110111xxxxxxxxxx\n\t\t\t\t//\n\t\t\t\t// where U is the character value, W1 is the high surrogate\n\t\t\t\t// area, W2 is the low surrogate area.\n\n\t\t\t\t// Check for incomplete UTF-16 character.\n\t\t\t\tif raw_unread < 2 {\n\t\t\t\t\tif parser.eof {\n\t\t\t\t\t\treturn yaml_parser_set_reader_error(parser,\n\t\t\t\t\t\t\t\"incomplete UTF-16 character\",\n\t\t\t\t\t\t\tparser.offset, -1)\n\t\t\t\t\t}\n\t\t\t\t\tbreak inner\n\t\t\t\t}\n\n\t\t\t\t// Get the character.\n\t\t\t\tvalue = rune(parser.raw_buffer[parser.raw_buffer_pos+low]) +\n\t\t\t\t\t(rune(parser.raw_buffer[parser.raw_buffer_pos+high]) << 8)\n\n\t\t\t\t// Check for unexpected low surrogate area.\n\t\t\t\tif value&0xFC00 == 0xDC00 {\n\t\t\t\t\treturn yaml_parser_set_reader_error(parser,\n\t\t\t\t\t\t\"unexpected low surrogate area\",\n\t\t\t\t\t\tparser.offset, int(value))\n\t\t\t\t}\n\n\t\t\t\t// Check for a high surrogate area.\n\t\t\t\tif value&0xFC00 == 0xD800 {\n\t\t\t\t\twidth = 4\n\n\t\t\t\t\t// Check for incomplete surrogate pair.\n\t\t\t\t\tif raw_unread < 4 {\n\t\t\t\t\t\tif parser.eof {\n\t\t\t\t\t\t\treturn yaml_parser_set_reader_error(parser,\n\t\t\t\t\t\t\t\t\"incomplete UTF-16 surrogate pair\",\n\t\t\t\t\t\t\t\tparser.offset, -1)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak inner\n\t\t\t\t\t}\n\n\t\t\t\t\t// Get the next character.\n\t\t\t\t\tvalue2 := rune(parser.raw_buffer[parser.raw_buffer_pos+low+2]) +\n\t\t\t\t\t\t(rune(parser.raw_buffer[parser.raw_buffer_pos+high+2]) << 8)\n\n\t\t\t\t\t// Check for a low surrogate area.\n\t\t\t\t\tif value2&0xFC00 != 0xDC00 {\n\t\t\t\t\t\treturn yaml_parser_set_reader_error(parser,\n\t\t\t\t\t\t\t\"expected low surrogate area\",\n\t\t\t\t\t\t\tparser.offset+2, int(value2))\n\t\t\t\t\t}\n\n\t\t\t\t\t// Generate the value of the surrogate pair.\n\t\t\t\t\tvalue = 0x10000 + ((value & 0x3FF) << 10) + (value2 & 0x3FF)\n\t\t\t\t} else {\n\t\t\t\t\twidth = 2\n\t\t\t\t}\n\n\t\t\tdefault:\n\t\t\t\tpanic(\"impossible\")\n\t\t\t}\n\n\t\t\t// Check if the character is in the allowed range:\n\t\t\t//      #x9 | #xA | #xD | [#x20-#x7E]               (8 bit)\n\t\t\t//      | #x85 | [#xA0-#xD7FF] | [#xE000-#xFFFD]    (16 bit)\n\t\t\t//      | [#x10000-#x10FFFF]                        (32 bit)\n\t\t\tswitch {\n\t\t\tcase value == 0x09:\n\t\t\tcase value == 0x0A:\n\t\t\tcase value == 0x0D:\n\t\t\tcase value >= 0x20 && value <= 0x7E:\n\t\t\tcase value == 0x85:\n\t\t\tcase value >= 0xA0 && value <= 0xD7FF:\n\t\t\tcase value >= 0xE000 && value <= 0xFFFD:\n\t\t\tcase value >= 0x10000 && value <= 0x10FFFF:\n\t\t\tdefault:\n\t\t\t\treturn yaml_parser_set_reader_error(parser,\n\t\t\t\t\t\"control characters are not allowed\",\n\t\t\t\t\tparser.offset, int(value))\n\t\t\t}\n\n\t\t\t// Move the raw pointers.\n\t\t\tparser.raw_buffer_pos += width\n\t\t\tparser.offset += width\n\n\t\t\t// Finally put the character into the buffer.\n\t\t\tif value <= 0x7F {\n\t\t\t\t// 0000 0000-0000 007F . 0xxxxxxx\n\t\t\t\tparser.buffer[buffer_len+0] = byte(value)\n\t\t\t\tbuffer_len += 1\n\t\t\t} else if value <= 0x7FF {\n\t\t\t\t// 0000 0080-0000 07FF . 110xxxxx 10xxxxxx\n\t\t\t\tparser.buffer[buffer_len+0] = byte(0xC0 + (value >> 6))\n\t\t\t\tparser.buffer[buffer_len+1] = byte(0x80 + (value & 0x3F))\n\t\t\t\tbuffer_len += 2\n\t\t\t} else if value <= 0xFFFF {\n\t\t\t\t// 0000 0800-0000 FFFF . 1110xxxx 10xxxxxx 10xxxxxx\n\t\t\t\tparser.buffer[buffer_len+0] = byte(0xE0 + (value >> 12))\n\t\t\t\tparser.buffer[buffer_len+1] = byte(0x80 + ((value >> 6) & 0x3F))\n\t\t\t\tparser.buffer[buffer_len+2] = byte(0x80 + (value & 0x3F))\n\t\t\t\tbuffer_len += 3\n\t\t\t} else {\n\t\t\t\t// 0001 0000-0010 FFFF . 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n\t\t\t\tparser.buffer[buffer_len+0] = byte(0xF0 + (value >> 18))\n\t\t\t\tparser.buffer[buffer_len+1] = byte(0x80 + ((value >> 12) & 0x3F))\n\t\t\t\tparser.buffer[buffer_len+2] = byte(0x80 + ((value >> 6) & 0x3F))\n\t\t\t\tparser.buffer[buffer_len+3] = byte(0x80 + (value & 0x3F))\n\t\t\t\tbuffer_len += 4\n\t\t\t}\n\n\t\t\tparser.unread++\n\t\t}\n\n\t\t// On EOF, put NUL into the buffer and return.\n\t\tif parser.eof {\n\t\t\tparser.buffer[buffer_len] = 0\n\t\t\tbuffer_len++\n\t\t\tparser.unread++\n\t\t\tbreak\n\t\t}\n\t}\n\t// [Go] Read the documentation of this function above. To return true,\n\t// we need to have the given length in the buffer. Not doing that means\n\t// every single check that calls this function to make sure the buffer\n\t// has a given length is Go) panicking; or C) accessing invalid memory.\n\t// This happens here due to the EOF above breaking early.\n\tfor buffer_len < length {\n\t\tparser.buffer[buffer_len] = 0\n\t\tbuffer_len++\n\t}\n\tparser.buffer = parser.buffer[:buffer_len]\n\treturn true\n}\n"
  },
  {
    "path": "vendor/gopkg.in/yaml.v3/resolve.go",
    "content": "//\n// Copyright (c) 2011-2019 Canonical Ltd\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage yaml\n\nimport (\n\t\"encoding/base64\"\n\t\"math\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n)\n\ntype resolveMapItem struct {\n\tvalue interface{}\n\ttag   string\n}\n\nvar resolveTable = make([]byte, 256)\nvar resolveMap = make(map[string]resolveMapItem)\n\nfunc init() {\n\tt := resolveTable\n\tt[int('+')] = 'S' // Sign\n\tt[int('-')] = 'S'\n\tfor _, c := range \"0123456789\" {\n\t\tt[int(c)] = 'D' // Digit\n\t}\n\tfor _, c := range \"yYnNtTfFoO~\" {\n\t\tt[int(c)] = 'M' // In map\n\t}\n\tt[int('.')] = '.' // Float (potentially in map)\n\n\tvar resolveMapList = []struct {\n\t\tv   interface{}\n\t\ttag string\n\t\tl   []string\n\t}{\n\t\t{true, boolTag, []string{\"true\", \"True\", \"TRUE\"}},\n\t\t{false, boolTag, []string{\"false\", \"False\", \"FALSE\"}},\n\t\t{nil, nullTag, []string{\"\", \"~\", \"null\", \"Null\", \"NULL\"}},\n\t\t{math.NaN(), floatTag, []string{\".nan\", \".NaN\", \".NAN\"}},\n\t\t{math.Inf(+1), floatTag, []string{\".inf\", \".Inf\", \".INF\"}},\n\t\t{math.Inf(+1), floatTag, []string{\"+.inf\", \"+.Inf\", \"+.INF\"}},\n\t\t{math.Inf(-1), floatTag, []string{\"-.inf\", \"-.Inf\", \"-.INF\"}},\n\t\t{\"<<\", mergeTag, []string{\"<<\"}},\n\t}\n\n\tm := resolveMap\n\tfor _, item := range resolveMapList {\n\t\tfor _, s := range item.l {\n\t\t\tm[s] = resolveMapItem{item.v, item.tag}\n\t\t}\n\t}\n}\n\nconst (\n\tnullTag      = \"!!null\"\n\tboolTag      = \"!!bool\"\n\tstrTag       = \"!!str\"\n\tintTag       = \"!!int\"\n\tfloatTag     = \"!!float\"\n\ttimestampTag = \"!!timestamp\"\n\tseqTag       = \"!!seq\"\n\tmapTag       = \"!!map\"\n\tbinaryTag    = \"!!binary\"\n\tmergeTag     = \"!!merge\"\n)\n\nvar longTags = make(map[string]string)\nvar shortTags = make(map[string]string)\n\nfunc init() {\n\tfor _, stag := range []string{nullTag, boolTag, strTag, intTag, floatTag, timestampTag, seqTag, mapTag, binaryTag, mergeTag} {\n\t\tltag := longTag(stag)\n\t\tlongTags[stag] = ltag\n\t\tshortTags[ltag] = stag\n\t}\n}\n\nconst longTagPrefix = \"tag:yaml.org,2002:\"\n\nfunc shortTag(tag string) string {\n\tif strings.HasPrefix(tag, longTagPrefix) {\n\t\tif stag, ok := shortTags[tag]; ok {\n\t\t\treturn stag\n\t\t}\n\t\treturn \"!!\" + tag[len(longTagPrefix):]\n\t}\n\treturn tag\n}\n\nfunc longTag(tag string) string {\n\tif strings.HasPrefix(tag, \"!!\") {\n\t\tif ltag, ok := longTags[tag]; ok {\n\t\t\treturn ltag\n\t\t}\n\t\treturn longTagPrefix + tag[2:]\n\t}\n\treturn tag\n}\n\nfunc resolvableTag(tag string) bool {\n\tswitch tag {\n\tcase \"\", strTag, boolTag, intTag, floatTag, nullTag, timestampTag:\n\t\treturn true\n\t}\n\treturn false\n}\n\nvar yamlStyleFloat = regexp.MustCompile(`^[-+]?(\\.[0-9]+|[0-9]+(\\.[0-9]*)?)([eE][-+]?[0-9]+)?$`)\n\nfunc resolve(tag string, in string) (rtag string, out interface{}) {\n\ttag = shortTag(tag)\n\tif !resolvableTag(tag) {\n\t\treturn tag, in\n\t}\n\n\tdefer func() {\n\t\tswitch tag {\n\t\tcase \"\", rtag, strTag, binaryTag:\n\t\t\treturn\n\t\tcase floatTag:\n\t\t\tif rtag == intTag {\n\t\t\t\tswitch v := out.(type) {\n\t\t\t\tcase int64:\n\t\t\t\t\trtag = floatTag\n\t\t\t\t\tout = float64(v)\n\t\t\t\t\treturn\n\t\t\t\tcase int:\n\t\t\t\t\trtag = floatTag\n\t\t\t\t\tout = float64(v)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfailf(\"cannot decode %s `%s` as a %s\", shortTag(rtag), in, shortTag(tag))\n\t}()\n\n\t// Any data is accepted as a !!str or !!binary.\n\t// Otherwise, the prefix is enough of a hint about what it might be.\n\thint := byte('N')\n\tif in != \"\" {\n\t\thint = resolveTable[in[0]]\n\t}\n\tif hint != 0 && tag != strTag && tag != binaryTag {\n\t\t// Handle things we can lookup in a map.\n\t\tif item, ok := resolveMap[in]; ok {\n\t\t\treturn item.tag, item.value\n\t\t}\n\n\t\t// Base 60 floats are a bad idea, were dropped in YAML 1.2, and\n\t\t// are purposefully unsupported here. They're still quoted on\n\t\t// the way out for compatibility with other parser, though.\n\n\t\tswitch hint {\n\t\tcase 'M':\n\t\t\t// We've already checked the map above.\n\n\t\tcase '.':\n\t\t\t// Not in the map, so maybe a normal float.\n\t\t\tfloatv, err := strconv.ParseFloat(in, 64)\n\t\t\tif err == nil {\n\t\t\t\treturn floatTag, floatv\n\t\t\t}\n\n\t\tcase 'D', 'S':\n\t\t\t// Int, float, or timestamp.\n\t\t\t// Only try values as a timestamp if the value is unquoted or there's an explicit\n\t\t\t// !!timestamp tag.\n\t\t\tif tag == \"\" || tag == timestampTag {\n\t\t\t\tt, ok := parseTimestamp(in)\n\t\t\t\tif ok {\n\t\t\t\t\treturn timestampTag, t\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tplain := strings.Replace(in, \"_\", \"\", -1)\n\t\t\tintv, err := strconv.ParseInt(plain, 0, 64)\n\t\t\tif err == nil {\n\t\t\t\tif intv == int64(int(intv)) {\n\t\t\t\t\treturn intTag, int(intv)\n\t\t\t\t} else {\n\t\t\t\t\treturn intTag, intv\n\t\t\t\t}\n\t\t\t}\n\t\t\tuintv, err := strconv.ParseUint(plain, 0, 64)\n\t\t\tif err == nil {\n\t\t\t\treturn intTag, uintv\n\t\t\t}\n\t\t\tif yamlStyleFloat.MatchString(plain) {\n\t\t\t\tfloatv, err := strconv.ParseFloat(plain, 64)\n\t\t\t\tif err == nil {\n\t\t\t\t\treturn floatTag, floatv\n\t\t\t\t}\n\t\t\t}\n\t\t\tif strings.HasPrefix(plain, \"0b\") {\n\t\t\t\tintv, err := strconv.ParseInt(plain[2:], 2, 64)\n\t\t\t\tif err == nil {\n\t\t\t\t\tif intv == int64(int(intv)) {\n\t\t\t\t\t\treturn intTag, int(intv)\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn intTag, intv\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tuintv, err := strconv.ParseUint(plain[2:], 2, 64)\n\t\t\t\tif err == nil {\n\t\t\t\t\treturn intTag, uintv\n\t\t\t\t}\n\t\t\t} else if strings.HasPrefix(plain, \"-0b\") {\n\t\t\t\tintv, err := strconv.ParseInt(\"-\"+plain[3:], 2, 64)\n\t\t\t\tif err == nil {\n\t\t\t\t\tif true || intv == int64(int(intv)) {\n\t\t\t\t\t\treturn intTag, int(intv)\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn intTag, intv\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Octals as introduced in version 1.2 of the spec.\n\t\t\t// Octals from the 1.1 spec, spelled as 0777, are still\n\t\t\t// decoded by default in v3 as well for compatibility.\n\t\t\t// May be dropped in v4 depending on how usage evolves.\n\t\t\tif strings.HasPrefix(plain, \"0o\") {\n\t\t\t\tintv, err := strconv.ParseInt(plain[2:], 8, 64)\n\t\t\t\tif err == nil {\n\t\t\t\t\tif intv == int64(int(intv)) {\n\t\t\t\t\t\treturn intTag, int(intv)\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn intTag, intv\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tuintv, err := strconv.ParseUint(plain[2:], 8, 64)\n\t\t\t\tif err == nil {\n\t\t\t\t\treturn intTag, uintv\n\t\t\t\t}\n\t\t\t} else if strings.HasPrefix(plain, \"-0o\") {\n\t\t\t\tintv, err := strconv.ParseInt(\"-\"+plain[3:], 8, 64)\n\t\t\t\tif err == nil {\n\t\t\t\t\tif true || intv == int64(int(intv)) {\n\t\t\t\t\t\treturn intTag, int(intv)\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn intTag, intv\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tpanic(\"internal error: missing handler for resolver table: \" + string(rune(hint)) + \" (with \" + in + \")\")\n\t\t}\n\t}\n\treturn strTag, in\n}\n\n// encodeBase64 encodes s as base64 that is broken up into multiple lines\n// as appropriate for the resulting length.\nfunc encodeBase64(s string) string {\n\tconst lineLen = 70\n\tencLen := base64.StdEncoding.EncodedLen(len(s))\n\tlines := encLen/lineLen + 1\n\tbuf := make([]byte, encLen*2+lines)\n\tin := buf[0:encLen]\n\tout := buf[encLen:]\n\tbase64.StdEncoding.Encode(in, []byte(s))\n\tk := 0\n\tfor i := 0; i < len(in); i += lineLen {\n\t\tj := i + lineLen\n\t\tif j > len(in) {\n\t\t\tj = len(in)\n\t\t}\n\t\tk += copy(out[k:], in[i:j])\n\t\tif lines > 1 {\n\t\t\tout[k] = '\\n'\n\t\t\tk++\n\t\t}\n\t}\n\treturn string(out[:k])\n}\n\n// This is a subset of the formats allowed by the regular expression\n// defined at http://yaml.org/type/timestamp.html.\nvar allowedTimestampFormats = []string{\n\t\"2006-1-2T15:4:5.999999999Z07:00\", // RCF3339Nano with short date fields.\n\t\"2006-1-2t15:4:5.999999999Z07:00\", // RFC3339Nano with short date fields and lower-case \"t\".\n\t\"2006-1-2 15:4:5.999999999\",       // space separated with no time zone\n\t\"2006-1-2\",                        // date only\n\t// Notable exception: time.Parse cannot handle: \"2001-12-14 21:59:43.10 -5\"\n\t// from the set of examples.\n}\n\n// parseTimestamp parses s as a timestamp string and\n// returns the timestamp and reports whether it succeeded.\n// Timestamp formats are defined at http://yaml.org/type/timestamp.html\nfunc parseTimestamp(s string) (time.Time, bool) {\n\t// TODO write code to check all the formats supported by\n\t// http://yaml.org/type/timestamp.html instead of using time.Parse.\n\n\t// Quick check: all date formats start with YYYY-.\n\ti := 0\n\tfor ; i < len(s); i++ {\n\t\tif c := s[i]; c < '0' || c > '9' {\n\t\t\tbreak\n\t\t}\n\t}\n\tif i != 4 || i == len(s) || s[i] != '-' {\n\t\treturn time.Time{}, false\n\t}\n\tfor _, format := range allowedTimestampFormats {\n\t\tif t, err := time.Parse(format, s); err == nil {\n\t\t\treturn t, true\n\t\t}\n\t}\n\treturn time.Time{}, false\n}\n"
  },
  {
    "path": "vendor/gopkg.in/yaml.v3/scannerc.go",
    "content": "//\n// Copyright (c) 2011-2019 Canonical Ltd\n// Copyright (c) 2006-2010 Kirill Simonov\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.\n\npackage yaml\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n)\n\n// Introduction\n// ************\n//\n// The following notes assume that you are familiar with the YAML specification\n// (http://yaml.org/spec/1.2/spec.html).  We mostly follow it, although in\n// some cases we are less restrictive that it requires.\n//\n// The process of transforming a YAML stream into a sequence of events is\n// divided on two steps: Scanning and Parsing.\n//\n// The Scanner transforms the input stream into a sequence of tokens, while the\n// parser transform the sequence of tokens produced by the Scanner into a\n// sequence of parsing events.\n//\n// The Scanner is rather clever and complicated. The Parser, on the contrary,\n// is a straightforward implementation of a recursive-descendant parser (or,\n// LL(1) parser, as it is usually called).\n//\n// Actually there are two issues of Scanning that might be called \"clever\", the\n// rest is quite straightforward.  The issues are \"block collection start\" and\n// \"simple keys\".  Both issues are explained below in details.\n//\n// Here the Scanning step is explained and implemented.  We start with the list\n// of all the tokens produced by the Scanner together with short descriptions.\n//\n// Now, tokens:\n//\n//      STREAM-START(encoding)          # The stream start.\n//      STREAM-END                      # The stream end.\n//      VERSION-DIRECTIVE(major,minor)  # The '%YAML' directive.\n//      TAG-DIRECTIVE(handle,prefix)    # The '%TAG' directive.\n//      DOCUMENT-START                  # '---'\n//      DOCUMENT-END                    # '...'\n//      BLOCK-SEQUENCE-START            # Indentation increase denoting a block\n//      BLOCK-MAPPING-START             # sequence or a block mapping.\n//      BLOCK-END                       # Indentation decrease.\n//      FLOW-SEQUENCE-START             # '['\n//      FLOW-SEQUENCE-END               # ']'\n//      BLOCK-SEQUENCE-START            # '{'\n//      BLOCK-SEQUENCE-END              # '}'\n//      BLOCK-ENTRY                     # '-'\n//      FLOW-ENTRY                      # ','\n//      KEY                             # '?' or nothing (simple keys).\n//      VALUE                           # ':'\n//      ALIAS(anchor)                   # '*anchor'\n//      ANCHOR(anchor)                  # '&anchor'\n//      TAG(handle,suffix)              # '!handle!suffix'\n//      SCALAR(value,style)             # A scalar.\n//\n// The following two tokens are \"virtual\" tokens denoting the beginning and the\n// end of the stream:\n//\n//      STREAM-START(encoding)\n//      STREAM-END\n//\n// We pass the information about the input stream encoding with the\n// STREAM-START token.\n//\n// The next two tokens are responsible for tags:\n//\n//      VERSION-DIRECTIVE(major,minor)\n//      TAG-DIRECTIVE(handle,prefix)\n//\n// Example:\n//\n//      %YAML   1.1\n//      %TAG    !   !foo\n//      %TAG    !yaml!  tag:yaml.org,2002:\n//      ---\n//\n// The correspoding sequence of tokens:\n//\n//      STREAM-START(utf-8)\n//      VERSION-DIRECTIVE(1,1)\n//      TAG-DIRECTIVE(\"!\",\"!foo\")\n//      TAG-DIRECTIVE(\"!yaml\",\"tag:yaml.org,2002:\")\n//      DOCUMENT-START\n//      STREAM-END\n//\n// Note that the VERSION-DIRECTIVE and TAG-DIRECTIVE tokens occupy a whole\n// line.\n//\n// The document start and end indicators are represented by:\n//\n//      DOCUMENT-START\n//      DOCUMENT-END\n//\n// Note that if a YAML stream contains an implicit document (without '---'\n// and '...' indicators), no DOCUMENT-START and DOCUMENT-END tokens will be\n// produced.\n//\n// In the following examples, we present whole documents together with the\n// produced tokens.\n//\n//      1. An implicit document:\n//\n//          'a scalar'\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          SCALAR(\"a scalar\",single-quoted)\n//          STREAM-END\n//\n//      2. An explicit document:\n//\n//          ---\n//          'a scalar'\n//          ...\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          DOCUMENT-START\n//          SCALAR(\"a scalar\",single-quoted)\n//          DOCUMENT-END\n//          STREAM-END\n//\n//      3. Several documents in a stream:\n//\n//          'a scalar'\n//          ---\n//          'another scalar'\n//          ---\n//          'yet another scalar'\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          SCALAR(\"a scalar\",single-quoted)\n//          DOCUMENT-START\n//          SCALAR(\"another scalar\",single-quoted)\n//          DOCUMENT-START\n//          SCALAR(\"yet another scalar\",single-quoted)\n//          STREAM-END\n//\n// We have already introduced the SCALAR token above.  The following tokens are\n// used to describe aliases, anchors, tag, and scalars:\n//\n//      ALIAS(anchor)\n//      ANCHOR(anchor)\n//      TAG(handle,suffix)\n//      SCALAR(value,style)\n//\n// The following series of examples illustrate the usage of these tokens:\n//\n//      1. A recursive sequence:\n//\n//          &A [ *A ]\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          ANCHOR(\"A\")\n//          FLOW-SEQUENCE-START\n//          ALIAS(\"A\")\n//          FLOW-SEQUENCE-END\n//          STREAM-END\n//\n//      2. A tagged scalar:\n//\n//          !!float \"3.14\"  # A good approximation.\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          TAG(\"!!\",\"float\")\n//          SCALAR(\"3.14\",double-quoted)\n//          STREAM-END\n//\n//      3. Various scalar styles:\n//\n//          --- # Implicit empty plain scalars do not produce tokens.\n//          --- a plain scalar\n//          --- 'a single-quoted scalar'\n//          --- \"a double-quoted scalar\"\n//          --- |-\n//            a literal scalar\n//          --- >-\n//            a folded\n//            scalar\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          DOCUMENT-START\n//          DOCUMENT-START\n//          SCALAR(\"a plain scalar\",plain)\n//          DOCUMENT-START\n//          SCALAR(\"a single-quoted scalar\",single-quoted)\n//          DOCUMENT-START\n//          SCALAR(\"a double-quoted scalar\",double-quoted)\n//          DOCUMENT-START\n//          SCALAR(\"a literal scalar\",literal)\n//          DOCUMENT-START\n//          SCALAR(\"a folded scalar\",folded)\n//          STREAM-END\n//\n// Now it's time to review collection-related tokens. We will start with\n// flow collections:\n//\n//      FLOW-SEQUENCE-START\n//      FLOW-SEQUENCE-END\n//      FLOW-MAPPING-START\n//      FLOW-MAPPING-END\n//      FLOW-ENTRY\n//      KEY\n//      VALUE\n//\n// The tokens FLOW-SEQUENCE-START, FLOW-SEQUENCE-END, FLOW-MAPPING-START, and\n// FLOW-MAPPING-END represent the indicators '[', ']', '{', and '}'\n// correspondingly.  FLOW-ENTRY represent the ',' indicator.  Finally the\n// indicators '?' and ':', which are used for denoting mapping keys and values,\n// are represented by the KEY and VALUE tokens.\n//\n// The following examples show flow collections:\n//\n//      1. A flow sequence:\n//\n//          [item 1, item 2, item 3]\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          FLOW-SEQUENCE-START\n//          SCALAR(\"item 1\",plain)\n//          FLOW-ENTRY\n//          SCALAR(\"item 2\",plain)\n//          FLOW-ENTRY\n//          SCALAR(\"item 3\",plain)\n//          FLOW-SEQUENCE-END\n//          STREAM-END\n//\n//      2. A flow mapping:\n//\n//          {\n//              a simple key: a value,  # Note that the KEY token is produced.\n//              ? a complex key: another value,\n//          }\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          FLOW-MAPPING-START\n//          KEY\n//          SCALAR(\"a simple key\",plain)\n//          VALUE\n//          SCALAR(\"a value\",plain)\n//          FLOW-ENTRY\n//          KEY\n//          SCALAR(\"a complex key\",plain)\n//          VALUE\n//          SCALAR(\"another value\",plain)\n//          FLOW-ENTRY\n//          FLOW-MAPPING-END\n//          STREAM-END\n//\n// A simple key is a key which is not denoted by the '?' indicator.  Note that\n// the Scanner still produce the KEY token whenever it encounters a simple key.\n//\n// For scanning block collections, the following tokens are used (note that we\n// repeat KEY and VALUE here):\n//\n//      BLOCK-SEQUENCE-START\n//      BLOCK-MAPPING-START\n//      BLOCK-END\n//      BLOCK-ENTRY\n//      KEY\n//      VALUE\n//\n// The tokens BLOCK-SEQUENCE-START and BLOCK-MAPPING-START denote indentation\n// increase that precedes a block collection (cf. the INDENT token in Python).\n// The token BLOCK-END denote indentation decrease that ends a block collection\n// (cf. the DEDENT token in Python).  However YAML has some syntax pecularities\n// that makes detections of these tokens more complex.\n//\n// The tokens BLOCK-ENTRY, KEY, and VALUE are used to represent the indicators\n// '-', '?', and ':' correspondingly.\n//\n// The following examples show how the tokens BLOCK-SEQUENCE-START,\n// BLOCK-MAPPING-START, and BLOCK-END are emitted by the Scanner:\n//\n//      1. Block sequences:\n//\n//          - item 1\n//          - item 2\n//          -\n//            - item 3.1\n//            - item 3.2\n//          -\n//            key 1: value 1\n//            key 2: value 2\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          BLOCK-SEQUENCE-START\n//          BLOCK-ENTRY\n//          SCALAR(\"item 1\",plain)\n//          BLOCK-ENTRY\n//          SCALAR(\"item 2\",plain)\n//          BLOCK-ENTRY\n//          BLOCK-SEQUENCE-START\n//          BLOCK-ENTRY\n//          SCALAR(\"item 3.1\",plain)\n//          BLOCK-ENTRY\n//          SCALAR(\"item 3.2\",plain)\n//          BLOCK-END\n//          BLOCK-ENTRY\n//          BLOCK-MAPPING-START\n//          KEY\n//          SCALAR(\"key 1\",plain)\n//          VALUE\n//          SCALAR(\"value 1\",plain)\n//          KEY\n//          SCALAR(\"key 2\",plain)\n//          VALUE\n//          SCALAR(\"value 2\",plain)\n//          BLOCK-END\n//          BLOCK-END\n//          STREAM-END\n//\n//      2. Block mappings:\n//\n//          a simple key: a value   # The KEY token is produced here.\n//          ? a complex key\n//          : another value\n//          a mapping:\n//            key 1: value 1\n//            key 2: value 2\n//          a sequence:\n//            - item 1\n//            - item 2\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          BLOCK-MAPPING-START\n//          KEY\n//          SCALAR(\"a simple key\",plain)\n//          VALUE\n//          SCALAR(\"a value\",plain)\n//          KEY\n//          SCALAR(\"a complex key\",plain)\n//          VALUE\n//          SCALAR(\"another value\",plain)\n//          KEY\n//          SCALAR(\"a mapping\",plain)\n//          BLOCK-MAPPING-START\n//          KEY\n//          SCALAR(\"key 1\",plain)\n//          VALUE\n//          SCALAR(\"value 1\",plain)\n//          KEY\n//          SCALAR(\"key 2\",plain)\n//          VALUE\n//          SCALAR(\"value 2\",plain)\n//          BLOCK-END\n//          KEY\n//          SCALAR(\"a sequence\",plain)\n//          VALUE\n//          BLOCK-SEQUENCE-START\n//          BLOCK-ENTRY\n//          SCALAR(\"item 1\",plain)\n//          BLOCK-ENTRY\n//          SCALAR(\"item 2\",plain)\n//          BLOCK-END\n//          BLOCK-END\n//          STREAM-END\n//\n// YAML does not always require to start a new block collection from a new\n// line.  If the current line contains only '-', '?', and ':' indicators, a new\n// block collection may start at the current line.  The following examples\n// illustrate this case:\n//\n//      1. Collections in a sequence:\n//\n//          - - item 1\n//            - item 2\n//          - key 1: value 1\n//            key 2: value 2\n//          - ? complex key\n//            : complex value\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          BLOCK-SEQUENCE-START\n//          BLOCK-ENTRY\n//          BLOCK-SEQUENCE-START\n//          BLOCK-ENTRY\n//          SCALAR(\"item 1\",plain)\n//          BLOCK-ENTRY\n//          SCALAR(\"item 2\",plain)\n//          BLOCK-END\n//          BLOCK-ENTRY\n//          BLOCK-MAPPING-START\n//          KEY\n//          SCALAR(\"key 1\",plain)\n//          VALUE\n//          SCALAR(\"value 1\",plain)\n//          KEY\n//          SCALAR(\"key 2\",plain)\n//          VALUE\n//          SCALAR(\"value 2\",plain)\n//          BLOCK-END\n//          BLOCK-ENTRY\n//          BLOCK-MAPPING-START\n//          KEY\n//          SCALAR(\"complex key\")\n//          VALUE\n//          SCALAR(\"complex value\")\n//          BLOCK-END\n//          BLOCK-END\n//          STREAM-END\n//\n//      2. Collections in a mapping:\n//\n//          ? a sequence\n//          : - item 1\n//            - item 2\n//          ? a mapping\n//          : key 1: value 1\n//            key 2: value 2\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          BLOCK-MAPPING-START\n//          KEY\n//          SCALAR(\"a sequence\",plain)\n//          VALUE\n//          BLOCK-SEQUENCE-START\n//          BLOCK-ENTRY\n//          SCALAR(\"item 1\",plain)\n//          BLOCK-ENTRY\n//          SCALAR(\"item 2\",plain)\n//          BLOCK-END\n//          KEY\n//          SCALAR(\"a mapping\",plain)\n//          VALUE\n//          BLOCK-MAPPING-START\n//          KEY\n//          SCALAR(\"key 1\",plain)\n//          VALUE\n//          SCALAR(\"value 1\",plain)\n//          KEY\n//          SCALAR(\"key 2\",plain)\n//          VALUE\n//          SCALAR(\"value 2\",plain)\n//          BLOCK-END\n//          BLOCK-END\n//          STREAM-END\n//\n// YAML also permits non-indented sequences if they are included into a block\n// mapping.  In this case, the token BLOCK-SEQUENCE-START is not produced:\n//\n//      key:\n//      - item 1    # BLOCK-SEQUENCE-START is NOT produced here.\n//      - item 2\n//\n// Tokens:\n//\n//      STREAM-START(utf-8)\n//      BLOCK-MAPPING-START\n//      KEY\n//      SCALAR(\"key\",plain)\n//      VALUE\n//      BLOCK-ENTRY\n//      SCALAR(\"item 1\",plain)\n//      BLOCK-ENTRY\n//      SCALAR(\"item 2\",plain)\n//      BLOCK-END\n//\n\n// Ensure that the buffer contains the required number of characters.\n// Return true on success, false on failure (reader error or memory error).\nfunc cache(parser *yaml_parser_t, length int) bool {\n\t// [Go] This was inlined: !cache(A, B) -> unread < B && !update(A, B)\n\treturn parser.unread >= length || yaml_parser_update_buffer(parser, length)\n}\n\n// Advance the buffer pointer.\nfunc skip(parser *yaml_parser_t) {\n\tif !is_blank(parser.buffer, parser.buffer_pos) {\n\t\tparser.newlines = 0\n\t}\n\tparser.mark.index++\n\tparser.mark.column++\n\tparser.unread--\n\tparser.buffer_pos += width(parser.buffer[parser.buffer_pos])\n}\n\nfunc skip_line(parser *yaml_parser_t) {\n\tif is_crlf(parser.buffer, parser.buffer_pos) {\n\t\tparser.mark.index += 2\n\t\tparser.mark.column = 0\n\t\tparser.mark.line++\n\t\tparser.unread -= 2\n\t\tparser.buffer_pos += 2\n\t\tparser.newlines++\n\t} else if is_break(parser.buffer, parser.buffer_pos) {\n\t\tparser.mark.index++\n\t\tparser.mark.column = 0\n\t\tparser.mark.line++\n\t\tparser.unread--\n\t\tparser.buffer_pos += width(parser.buffer[parser.buffer_pos])\n\t\tparser.newlines++\n\t}\n}\n\n// Copy a character to a string buffer and advance pointers.\nfunc read(parser *yaml_parser_t, s []byte) []byte {\n\tif !is_blank(parser.buffer, parser.buffer_pos) {\n\t\tparser.newlines = 0\n\t}\n\tw := width(parser.buffer[parser.buffer_pos])\n\tif w == 0 {\n\t\tpanic(\"invalid character sequence\")\n\t}\n\tif len(s) == 0 {\n\t\ts = make([]byte, 0, 32)\n\t}\n\tif w == 1 && len(s)+w <= cap(s) {\n\t\ts = s[:len(s)+1]\n\t\ts[len(s)-1] = parser.buffer[parser.buffer_pos]\n\t\tparser.buffer_pos++\n\t} else {\n\t\ts = append(s, parser.buffer[parser.buffer_pos:parser.buffer_pos+w]...)\n\t\tparser.buffer_pos += w\n\t}\n\tparser.mark.index++\n\tparser.mark.column++\n\tparser.unread--\n\treturn s\n}\n\n// Copy a line break character to a string buffer and advance pointers.\nfunc read_line(parser *yaml_parser_t, s []byte) []byte {\n\tbuf := parser.buffer\n\tpos := parser.buffer_pos\n\tswitch {\n\tcase buf[pos] == '\\r' && buf[pos+1] == '\\n':\n\t\t// CR LF . LF\n\t\ts = append(s, '\\n')\n\t\tparser.buffer_pos += 2\n\t\tparser.mark.index++\n\t\tparser.unread--\n\tcase buf[pos] == '\\r' || buf[pos] == '\\n':\n\t\t// CR|LF . LF\n\t\ts = append(s, '\\n')\n\t\tparser.buffer_pos += 1\n\tcase buf[pos] == '\\xC2' && buf[pos+1] == '\\x85':\n\t\t// NEL . LF\n\t\ts = append(s, '\\n')\n\t\tparser.buffer_pos += 2\n\tcase buf[pos] == '\\xE2' && buf[pos+1] == '\\x80' && (buf[pos+2] == '\\xA8' || buf[pos+2] == '\\xA9'):\n\t\t// LS|PS . LS|PS\n\t\ts = append(s, buf[parser.buffer_pos:pos+3]...)\n\t\tparser.buffer_pos += 3\n\tdefault:\n\t\treturn s\n\t}\n\tparser.mark.index++\n\tparser.mark.column = 0\n\tparser.mark.line++\n\tparser.unread--\n\tparser.newlines++\n\treturn s\n}\n\n// Get the next token.\nfunc yaml_parser_scan(parser *yaml_parser_t, token *yaml_token_t) bool {\n\t// Erase the token object.\n\t*token = yaml_token_t{} // [Go] Is this necessary?\n\n\t// No tokens after STREAM-END or error.\n\tif parser.stream_end_produced || parser.error != yaml_NO_ERROR {\n\t\treturn true\n\t}\n\n\t// Ensure that the tokens queue contains enough tokens.\n\tif !parser.token_available {\n\t\tif !yaml_parser_fetch_more_tokens(parser) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Fetch the next token from the queue.\n\t*token = parser.tokens[parser.tokens_head]\n\tparser.tokens_head++\n\tparser.tokens_parsed++\n\tparser.token_available = false\n\n\tif token.typ == yaml_STREAM_END_TOKEN {\n\t\tparser.stream_end_produced = true\n\t}\n\treturn true\n}\n\n// Set the scanner error and return false.\nfunc yaml_parser_set_scanner_error(parser *yaml_parser_t, context string, context_mark yaml_mark_t, problem string) bool {\n\tparser.error = yaml_SCANNER_ERROR\n\tparser.context = context\n\tparser.context_mark = context_mark\n\tparser.problem = problem\n\tparser.problem_mark = parser.mark\n\treturn false\n}\n\nfunc yaml_parser_set_scanner_tag_error(parser *yaml_parser_t, directive bool, context_mark yaml_mark_t, problem string) bool {\n\tcontext := \"while parsing a tag\"\n\tif directive {\n\t\tcontext = \"while parsing a %TAG directive\"\n\t}\n\treturn yaml_parser_set_scanner_error(parser, context, context_mark, problem)\n}\n\nfunc trace(args ...interface{}) func() {\n\tpargs := append([]interface{}{\"+++\"}, args...)\n\tfmt.Println(pargs...)\n\tpargs = append([]interface{}{\"---\"}, args...)\n\treturn func() { fmt.Println(pargs...) }\n}\n\n// Ensure that the tokens queue contains at least one token which can be\n// returned to the Parser.\nfunc yaml_parser_fetch_more_tokens(parser *yaml_parser_t) bool {\n\t// While we need more tokens to fetch, do it.\n\tfor {\n\t\t// [Go] The comment parsing logic requires a lookahead of two tokens\n\t\t// so that foot comments may be parsed in time of associating them\n\t\t// with the tokens that are parsed before them, and also for line\n\t\t// comments to be transformed into head comments in some edge cases.\n\t\tif parser.tokens_head < len(parser.tokens)-2 {\n\t\t\t// If a potential simple key is at the head position, we need to fetch\n\t\t\t// the next token to disambiguate it.\n\t\t\thead_tok_idx, ok := parser.simple_keys_by_tok[parser.tokens_parsed]\n\t\t\tif !ok {\n\t\t\t\tbreak\n\t\t\t} else if valid, ok := yaml_simple_key_is_valid(parser, &parser.simple_keys[head_tok_idx]); !ok {\n\t\t\t\treturn false\n\t\t\t} else if !valid {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\t// Fetch the next token.\n\t\tif !yaml_parser_fetch_next_token(parser) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tparser.token_available = true\n\treturn true\n}\n\n// The dispatcher for token fetchers.\nfunc yaml_parser_fetch_next_token(parser *yaml_parser_t) (ok bool) {\n\t// Ensure that the buffer is initialized.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\n\t// Check if we just started scanning.  Fetch STREAM-START then.\n\tif !parser.stream_start_produced {\n\t\treturn yaml_parser_fetch_stream_start(parser)\n\t}\n\n\tscan_mark := parser.mark\n\n\t// Eat whitespaces and comments until we reach the next token.\n\tif !yaml_parser_scan_to_next_token(parser) {\n\t\treturn false\n\t}\n\n\t// [Go] While unrolling indents, transform the head comments of prior\n\t// indentation levels observed after scan_start into foot comments at\n\t// the respective indexes.\n\n\t// Check the indentation level against the current column.\n\tif !yaml_parser_unroll_indent(parser, parser.mark.column, scan_mark) {\n\t\treturn false\n\t}\n\n\t// Ensure that the buffer contains at least 4 characters.  4 is the length\n\t// of the longest indicators ('--- ' and '... ').\n\tif parser.unread < 4 && !yaml_parser_update_buffer(parser, 4) {\n\t\treturn false\n\t}\n\n\t// Is it the end of the stream?\n\tif is_z(parser.buffer, parser.buffer_pos) {\n\t\treturn yaml_parser_fetch_stream_end(parser)\n\t}\n\n\t// Is it a directive?\n\tif parser.mark.column == 0 && parser.buffer[parser.buffer_pos] == '%' {\n\t\treturn yaml_parser_fetch_directive(parser)\n\t}\n\n\tbuf := parser.buffer\n\tpos := parser.buffer_pos\n\n\t// Is it the document start indicator?\n\tif parser.mark.column == 0 && buf[pos] == '-' && buf[pos+1] == '-' && buf[pos+2] == '-' && is_blankz(buf, pos+3) {\n\t\treturn yaml_parser_fetch_document_indicator(parser, yaml_DOCUMENT_START_TOKEN)\n\t}\n\n\t// Is it the document end indicator?\n\tif parser.mark.column == 0 && buf[pos] == '.' && buf[pos+1] == '.' && buf[pos+2] == '.' && is_blankz(buf, pos+3) {\n\t\treturn yaml_parser_fetch_document_indicator(parser, yaml_DOCUMENT_END_TOKEN)\n\t}\n\n\tcomment_mark := parser.mark\n\tif len(parser.tokens) > 0 && (parser.flow_level == 0 && buf[pos] == ':' || parser.flow_level > 0 && buf[pos] == ',') {\n\t\t// Associate any following comments with the prior token.\n\t\tcomment_mark = parser.tokens[len(parser.tokens)-1].start_mark\n\t}\n\tdefer func() {\n\t\tif !ok {\n\t\t\treturn\n\t\t}\n\t\tif len(parser.tokens) > 0 && parser.tokens[len(parser.tokens)-1].typ == yaml_BLOCK_ENTRY_TOKEN {\n\t\t\t// Sequence indicators alone have no line comments. It becomes\n\t\t\t// a head comment for whatever follows.\n\t\t\treturn\n\t\t}\n\t\tif !yaml_parser_scan_line_comment(parser, comment_mark) {\n\t\t\tok = false\n\t\t\treturn\n\t\t}\n\t}()\n\n\t// Is it the flow sequence start indicator?\n\tif buf[pos] == '[' {\n\t\treturn yaml_parser_fetch_flow_collection_start(parser, yaml_FLOW_SEQUENCE_START_TOKEN)\n\t}\n\n\t// Is it the flow mapping start indicator?\n\tif parser.buffer[parser.buffer_pos] == '{' {\n\t\treturn yaml_parser_fetch_flow_collection_start(parser, yaml_FLOW_MAPPING_START_TOKEN)\n\t}\n\n\t// Is it the flow sequence end indicator?\n\tif parser.buffer[parser.buffer_pos] == ']' {\n\t\treturn yaml_parser_fetch_flow_collection_end(parser,\n\t\t\tyaml_FLOW_SEQUENCE_END_TOKEN)\n\t}\n\n\t// Is it the flow mapping end indicator?\n\tif parser.buffer[parser.buffer_pos] == '}' {\n\t\treturn yaml_parser_fetch_flow_collection_end(parser,\n\t\t\tyaml_FLOW_MAPPING_END_TOKEN)\n\t}\n\n\t// Is it the flow entry indicator?\n\tif parser.buffer[parser.buffer_pos] == ',' {\n\t\treturn yaml_parser_fetch_flow_entry(parser)\n\t}\n\n\t// Is it the block entry indicator?\n\tif parser.buffer[parser.buffer_pos] == '-' && is_blankz(parser.buffer, parser.buffer_pos+1) {\n\t\treturn yaml_parser_fetch_block_entry(parser)\n\t}\n\n\t// Is it the key indicator?\n\tif parser.buffer[parser.buffer_pos] == '?' && (parser.flow_level > 0 || is_blankz(parser.buffer, parser.buffer_pos+1)) {\n\t\treturn yaml_parser_fetch_key(parser)\n\t}\n\n\t// Is it the value indicator?\n\tif parser.buffer[parser.buffer_pos] == ':' && (parser.flow_level > 0 || is_blankz(parser.buffer, parser.buffer_pos+1)) {\n\t\treturn yaml_parser_fetch_value(parser)\n\t}\n\n\t// Is it an alias?\n\tif parser.buffer[parser.buffer_pos] == '*' {\n\t\treturn yaml_parser_fetch_anchor(parser, yaml_ALIAS_TOKEN)\n\t}\n\n\t// Is it an anchor?\n\tif parser.buffer[parser.buffer_pos] == '&' {\n\t\treturn yaml_parser_fetch_anchor(parser, yaml_ANCHOR_TOKEN)\n\t}\n\n\t// Is it a tag?\n\tif parser.buffer[parser.buffer_pos] == '!' {\n\t\treturn yaml_parser_fetch_tag(parser)\n\t}\n\n\t// Is it a literal scalar?\n\tif parser.buffer[parser.buffer_pos] == '|' && parser.flow_level == 0 {\n\t\treturn yaml_parser_fetch_block_scalar(parser, true)\n\t}\n\n\t// Is it a folded scalar?\n\tif parser.buffer[parser.buffer_pos] == '>' && parser.flow_level == 0 {\n\t\treturn yaml_parser_fetch_block_scalar(parser, false)\n\t}\n\n\t// Is it a single-quoted scalar?\n\tif parser.buffer[parser.buffer_pos] == '\\'' {\n\t\treturn yaml_parser_fetch_flow_scalar(parser, true)\n\t}\n\n\t// Is it a double-quoted scalar?\n\tif parser.buffer[parser.buffer_pos] == '\"' {\n\t\treturn yaml_parser_fetch_flow_scalar(parser, false)\n\t}\n\n\t// Is it a plain scalar?\n\t//\n\t// A plain scalar may start with any non-blank characters except\n\t//\n\t//      '-', '?', ':', ',', '[', ']', '{', '}',\n\t//      '#', '&', '*', '!', '|', '>', '\\'', '\\\"',\n\t//      '%', '@', '`'.\n\t//\n\t// In the block context (and, for the '-' indicator, in the flow context\n\t// too), it may also start with the characters\n\t//\n\t//      '-', '?', ':'\n\t//\n\t// if it is followed by a non-space character.\n\t//\n\t// The last rule is more restrictive than the specification requires.\n\t// [Go] TODO Make this logic more reasonable.\n\t//switch parser.buffer[parser.buffer_pos] {\n\t//case '-', '?', ':', ',', '?', '-', ',', ':', ']', '[', '}', '{', '&', '#', '!', '*', '>', '|', '\"', '\\'', '@', '%', '-', '`':\n\t//}\n\tif !(is_blankz(parser.buffer, parser.buffer_pos) || parser.buffer[parser.buffer_pos] == '-' ||\n\t\tparser.buffer[parser.buffer_pos] == '?' || parser.buffer[parser.buffer_pos] == ':' ||\n\t\tparser.buffer[parser.buffer_pos] == ',' || parser.buffer[parser.buffer_pos] == '[' ||\n\t\tparser.buffer[parser.buffer_pos] == ']' || parser.buffer[parser.buffer_pos] == '{' ||\n\t\tparser.buffer[parser.buffer_pos] == '}' || parser.buffer[parser.buffer_pos] == '#' ||\n\t\tparser.buffer[parser.buffer_pos] == '&' || parser.buffer[parser.buffer_pos] == '*' ||\n\t\tparser.buffer[parser.buffer_pos] == '!' || parser.buffer[parser.buffer_pos] == '|' ||\n\t\tparser.buffer[parser.buffer_pos] == '>' || parser.buffer[parser.buffer_pos] == '\\'' ||\n\t\tparser.buffer[parser.buffer_pos] == '\"' || parser.buffer[parser.buffer_pos] == '%' ||\n\t\tparser.buffer[parser.buffer_pos] == '@' || parser.buffer[parser.buffer_pos] == '`') ||\n\t\t(parser.buffer[parser.buffer_pos] == '-' && !is_blank(parser.buffer, parser.buffer_pos+1)) ||\n\t\t(parser.flow_level == 0 &&\n\t\t\t(parser.buffer[parser.buffer_pos] == '?' || parser.buffer[parser.buffer_pos] == ':') &&\n\t\t\t!is_blankz(parser.buffer, parser.buffer_pos+1)) {\n\t\treturn yaml_parser_fetch_plain_scalar(parser)\n\t}\n\n\t// If we don't determine the token type so far, it is an error.\n\treturn yaml_parser_set_scanner_error(parser,\n\t\t\"while scanning for the next token\", parser.mark,\n\t\t\"found character that cannot start any token\")\n}\n\nfunc yaml_simple_key_is_valid(parser *yaml_parser_t, simple_key *yaml_simple_key_t) (valid, ok bool) {\n\tif !simple_key.possible {\n\t\treturn false, true\n\t}\n\n\t// The 1.2 specification says:\n\t//\n\t//     \"If the ? indicator is omitted, parsing needs to see past the\n\t//     implicit key to recognize it as such. To limit the amount of\n\t//     lookahead required, the “:” indicator must appear at most 1024\n\t//     Unicode characters beyond the start of the key. In addition, the key\n\t//     is restricted to a single line.\"\n\t//\n\tif simple_key.mark.line < parser.mark.line || simple_key.mark.index+1024 < parser.mark.index {\n\t\t// Check if the potential simple key to be removed is required.\n\t\tif simple_key.required {\n\t\t\treturn false, yaml_parser_set_scanner_error(parser,\n\t\t\t\t\"while scanning a simple key\", simple_key.mark,\n\t\t\t\t\"could not find expected ':'\")\n\t\t}\n\t\tsimple_key.possible = false\n\t\treturn false, true\n\t}\n\treturn true, true\n}\n\n// Check if a simple key may start at the current position and add it if\n// needed.\nfunc yaml_parser_save_simple_key(parser *yaml_parser_t) bool {\n\t// A simple key is required at the current position if the scanner is in\n\t// the block context and the current column coincides with the indentation\n\t// level.\n\n\trequired := parser.flow_level == 0 && parser.indent == parser.mark.column\n\n\t//\n\t// If the current position may start a simple key, save it.\n\t//\n\tif parser.simple_key_allowed {\n\t\tsimple_key := yaml_simple_key_t{\n\t\t\tpossible:     true,\n\t\t\trequired:     required,\n\t\t\ttoken_number: parser.tokens_parsed + (len(parser.tokens) - parser.tokens_head),\n\t\t\tmark:         parser.mark,\n\t\t}\n\n\t\tif !yaml_parser_remove_simple_key(parser) {\n\t\t\treturn false\n\t\t}\n\t\tparser.simple_keys[len(parser.simple_keys)-1] = simple_key\n\t\tparser.simple_keys_by_tok[simple_key.token_number] = len(parser.simple_keys) - 1\n\t}\n\treturn true\n}\n\n// Remove a potential simple key at the current flow level.\nfunc yaml_parser_remove_simple_key(parser *yaml_parser_t) bool {\n\ti := len(parser.simple_keys) - 1\n\tif parser.simple_keys[i].possible {\n\t\t// If the key is required, it is an error.\n\t\tif parser.simple_keys[i].required {\n\t\t\treturn yaml_parser_set_scanner_error(parser,\n\t\t\t\t\"while scanning a simple key\", parser.simple_keys[i].mark,\n\t\t\t\t\"could not find expected ':'\")\n\t\t}\n\t\t// Remove the key from the stack.\n\t\tparser.simple_keys[i].possible = false\n\t\tdelete(parser.simple_keys_by_tok, parser.simple_keys[i].token_number)\n\t}\n\treturn true\n}\n\n// max_flow_level limits the flow_level\nconst max_flow_level = 10000\n\n// Increase the flow level and resize the simple key list if needed.\nfunc yaml_parser_increase_flow_level(parser *yaml_parser_t) bool {\n\t// Reset the simple key on the next level.\n\tparser.simple_keys = append(parser.simple_keys, yaml_simple_key_t{\n\t\tpossible:     false,\n\t\trequired:     false,\n\t\ttoken_number: parser.tokens_parsed + (len(parser.tokens) - parser.tokens_head),\n\t\tmark:         parser.mark,\n\t})\n\n\t// Increase the flow level.\n\tparser.flow_level++\n\tif parser.flow_level > max_flow_level {\n\t\treturn yaml_parser_set_scanner_error(parser,\n\t\t\t\"while increasing flow level\", parser.simple_keys[len(parser.simple_keys)-1].mark,\n\t\t\tfmt.Sprintf(\"exceeded max depth of %d\", max_flow_level))\n\t}\n\treturn true\n}\n\n// Decrease the flow level.\nfunc yaml_parser_decrease_flow_level(parser *yaml_parser_t) bool {\n\tif parser.flow_level > 0 {\n\t\tparser.flow_level--\n\t\tlast := len(parser.simple_keys) - 1\n\t\tdelete(parser.simple_keys_by_tok, parser.simple_keys[last].token_number)\n\t\tparser.simple_keys = parser.simple_keys[:last]\n\t}\n\treturn true\n}\n\n// max_indents limits the indents stack size\nconst max_indents = 10000\n\n// Push the current indentation level to the stack and set the new level\n// the current column is greater than the indentation level.  In this case,\n// append or insert the specified token into the token queue.\nfunc yaml_parser_roll_indent(parser *yaml_parser_t, column, number int, typ yaml_token_type_t, mark yaml_mark_t) bool {\n\t// In the flow context, do nothing.\n\tif parser.flow_level > 0 {\n\t\treturn true\n\t}\n\n\tif parser.indent < column {\n\t\t// Push the current indentation level to the stack and set the new\n\t\t// indentation level.\n\t\tparser.indents = append(parser.indents, parser.indent)\n\t\tparser.indent = column\n\t\tif len(parser.indents) > max_indents {\n\t\t\treturn yaml_parser_set_scanner_error(parser,\n\t\t\t\t\"while increasing indent level\", parser.simple_keys[len(parser.simple_keys)-1].mark,\n\t\t\t\tfmt.Sprintf(\"exceeded max depth of %d\", max_indents))\n\t\t}\n\n\t\t// Create a token and insert it into the queue.\n\t\ttoken := yaml_token_t{\n\t\t\ttyp:        typ,\n\t\t\tstart_mark: mark,\n\t\t\tend_mark:   mark,\n\t\t}\n\t\tif number > -1 {\n\t\t\tnumber -= parser.tokens_parsed\n\t\t}\n\t\tyaml_insert_token(parser, number, &token)\n\t}\n\treturn true\n}\n\n// Pop indentation levels from the indents stack until the current level\n// becomes less or equal to the column.  For each indentation level, append\n// the BLOCK-END token.\nfunc yaml_parser_unroll_indent(parser *yaml_parser_t, column int, scan_mark yaml_mark_t) bool {\n\t// In the flow context, do nothing.\n\tif parser.flow_level > 0 {\n\t\treturn true\n\t}\n\n\tblock_mark := scan_mark\n\tblock_mark.index--\n\n\t// Loop through the indentation levels in the stack.\n\tfor parser.indent > column {\n\n\t\t// [Go] Reposition the end token before potential following\n\t\t//      foot comments of parent blocks. For that, search\n\t\t//      backwards for recent comments that were at the same\n\t\t//      indent as the block that is ending now.\n\t\tstop_index := block_mark.index\n\t\tfor i := len(parser.comments) - 1; i >= 0; i-- {\n\t\t\tcomment := &parser.comments[i]\n\n\t\t\tif comment.end_mark.index < stop_index {\n\t\t\t\t// Don't go back beyond the start of the comment/whitespace scan, unless column < 0.\n\t\t\t\t// If requested indent column is < 0, then the document is over and everything else\n\t\t\t\t// is a foot anyway.\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tif comment.start_mark.column == parser.indent+1 {\n\t\t\t\t// This is a good match. But maybe there's a former comment\n\t\t\t\t// at that same indent level, so keep searching.\n\t\t\t\tblock_mark = comment.start_mark\n\t\t\t}\n\n\t\t\t// While the end of the former comment matches with\n\t\t\t// the start of the following one, we know there's\n\t\t\t// nothing in between and scanning is still safe.\n\t\t\tstop_index = comment.scan_mark.index\n\t\t}\n\n\t\t// Create a token and append it to the queue.\n\t\ttoken := yaml_token_t{\n\t\t\ttyp:        yaml_BLOCK_END_TOKEN,\n\t\t\tstart_mark: block_mark,\n\t\t\tend_mark:   block_mark,\n\t\t}\n\t\tyaml_insert_token(parser, -1, &token)\n\n\t\t// Pop the indentation level.\n\t\tparser.indent = parser.indents[len(parser.indents)-1]\n\t\tparser.indents = parser.indents[:len(parser.indents)-1]\n\t}\n\treturn true\n}\n\n// Initialize the scanner and produce the STREAM-START token.\nfunc yaml_parser_fetch_stream_start(parser *yaml_parser_t) bool {\n\n\t// Set the initial indentation.\n\tparser.indent = -1\n\n\t// Initialize the simple key stack.\n\tparser.simple_keys = append(parser.simple_keys, yaml_simple_key_t{})\n\n\tparser.simple_keys_by_tok = make(map[int]int)\n\n\t// A simple key is allowed at the beginning of the stream.\n\tparser.simple_key_allowed = true\n\n\t// We have started.\n\tparser.stream_start_produced = true\n\n\t// Create the STREAM-START token and append it to the queue.\n\ttoken := yaml_token_t{\n\t\ttyp:        yaml_STREAM_START_TOKEN,\n\t\tstart_mark: parser.mark,\n\t\tend_mark:   parser.mark,\n\t\tencoding:   parser.encoding,\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the STREAM-END token and shut down the scanner.\nfunc yaml_parser_fetch_stream_end(parser *yaml_parser_t) bool {\n\n\t// Force new line.\n\tif parser.mark.column != 0 {\n\t\tparser.mark.column = 0\n\t\tparser.mark.line++\n\t}\n\n\t// Reset the indentation level.\n\tif !yaml_parser_unroll_indent(parser, -1, parser.mark) {\n\t\treturn false\n\t}\n\n\t// Reset simple keys.\n\tif !yaml_parser_remove_simple_key(parser) {\n\t\treturn false\n\t}\n\n\tparser.simple_key_allowed = false\n\n\t// Create the STREAM-END token and append it to the queue.\n\ttoken := yaml_token_t{\n\t\ttyp:        yaml_STREAM_END_TOKEN,\n\t\tstart_mark: parser.mark,\n\t\tend_mark:   parser.mark,\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce a VERSION-DIRECTIVE or TAG-DIRECTIVE token.\nfunc yaml_parser_fetch_directive(parser *yaml_parser_t) bool {\n\t// Reset the indentation level.\n\tif !yaml_parser_unroll_indent(parser, -1, parser.mark) {\n\t\treturn false\n\t}\n\n\t// Reset simple keys.\n\tif !yaml_parser_remove_simple_key(parser) {\n\t\treturn false\n\t}\n\n\tparser.simple_key_allowed = false\n\n\t// Create the YAML-DIRECTIVE or TAG-DIRECTIVE token.\n\ttoken := yaml_token_t{}\n\tif !yaml_parser_scan_directive(parser, &token) {\n\t\treturn false\n\t}\n\t// Append the token to the queue.\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the DOCUMENT-START or DOCUMENT-END token.\nfunc yaml_parser_fetch_document_indicator(parser *yaml_parser_t, typ yaml_token_type_t) bool {\n\t// Reset the indentation level.\n\tif !yaml_parser_unroll_indent(parser, -1, parser.mark) {\n\t\treturn false\n\t}\n\n\t// Reset simple keys.\n\tif !yaml_parser_remove_simple_key(parser) {\n\t\treturn false\n\t}\n\n\tparser.simple_key_allowed = false\n\n\t// Consume the token.\n\tstart_mark := parser.mark\n\n\tskip(parser)\n\tskip(parser)\n\tskip(parser)\n\n\tend_mark := parser.mark\n\n\t// Create the DOCUMENT-START or DOCUMENT-END token.\n\ttoken := yaml_token_t{\n\t\ttyp:        typ,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t}\n\t// Append the token to the queue.\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the FLOW-SEQUENCE-START or FLOW-MAPPING-START token.\nfunc yaml_parser_fetch_flow_collection_start(parser *yaml_parser_t, typ yaml_token_type_t) bool {\n\n\t// The indicators '[' and '{' may start a simple key.\n\tif !yaml_parser_save_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t// Increase the flow level.\n\tif !yaml_parser_increase_flow_level(parser) {\n\t\treturn false\n\t}\n\n\t// A simple key may follow the indicators '[' and '{'.\n\tparser.simple_key_allowed = true\n\n\t// Consume the token.\n\tstart_mark := parser.mark\n\tskip(parser)\n\tend_mark := parser.mark\n\n\t// Create the FLOW-SEQUENCE-START of FLOW-MAPPING-START token.\n\ttoken := yaml_token_t{\n\t\ttyp:        typ,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t}\n\t// Append the token to the queue.\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the FLOW-SEQUENCE-END or FLOW-MAPPING-END token.\nfunc yaml_parser_fetch_flow_collection_end(parser *yaml_parser_t, typ yaml_token_type_t) bool {\n\t// Reset any potential simple key on the current flow level.\n\tif !yaml_parser_remove_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t// Decrease the flow level.\n\tif !yaml_parser_decrease_flow_level(parser) {\n\t\treturn false\n\t}\n\n\t// No simple keys after the indicators ']' and '}'.\n\tparser.simple_key_allowed = false\n\n\t// Consume the token.\n\n\tstart_mark := parser.mark\n\tskip(parser)\n\tend_mark := parser.mark\n\n\t// Create the FLOW-SEQUENCE-END of FLOW-MAPPING-END token.\n\ttoken := yaml_token_t{\n\t\ttyp:        typ,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t}\n\t// Append the token to the queue.\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the FLOW-ENTRY token.\nfunc yaml_parser_fetch_flow_entry(parser *yaml_parser_t) bool {\n\t// Reset any potential simple keys on the current flow level.\n\tif !yaml_parser_remove_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t// Simple keys are allowed after ','.\n\tparser.simple_key_allowed = true\n\n\t// Consume the token.\n\tstart_mark := parser.mark\n\tskip(parser)\n\tend_mark := parser.mark\n\n\t// Create the FLOW-ENTRY token and append it to the queue.\n\ttoken := yaml_token_t{\n\t\ttyp:        yaml_FLOW_ENTRY_TOKEN,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the BLOCK-ENTRY token.\nfunc yaml_parser_fetch_block_entry(parser *yaml_parser_t) bool {\n\t// Check if the scanner is in the block context.\n\tif parser.flow_level == 0 {\n\t\t// Check if we are allowed to start a new entry.\n\t\tif !parser.simple_key_allowed {\n\t\t\treturn yaml_parser_set_scanner_error(parser, \"\", parser.mark,\n\t\t\t\t\"block sequence entries are not allowed in this context\")\n\t\t}\n\t\t// Add the BLOCK-SEQUENCE-START token if needed.\n\t\tif !yaml_parser_roll_indent(parser, parser.mark.column, -1, yaml_BLOCK_SEQUENCE_START_TOKEN, parser.mark) {\n\t\t\treturn false\n\t\t}\n\t} else {\n\t\t// It is an error for the '-' indicator to occur in the flow context,\n\t\t// but we let the Parser detect and report about it because the Parser\n\t\t// is able to point to the context.\n\t}\n\n\t// Reset any potential simple keys on the current flow level.\n\tif !yaml_parser_remove_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t// Simple keys are allowed after '-'.\n\tparser.simple_key_allowed = true\n\n\t// Consume the token.\n\tstart_mark := parser.mark\n\tskip(parser)\n\tend_mark := parser.mark\n\n\t// Create the BLOCK-ENTRY token and append it to the queue.\n\ttoken := yaml_token_t{\n\t\ttyp:        yaml_BLOCK_ENTRY_TOKEN,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the KEY token.\nfunc yaml_parser_fetch_key(parser *yaml_parser_t) bool {\n\n\t// In the block context, additional checks are required.\n\tif parser.flow_level == 0 {\n\t\t// Check if we are allowed to start a new key (not nessesary simple).\n\t\tif !parser.simple_key_allowed {\n\t\t\treturn yaml_parser_set_scanner_error(parser, \"\", parser.mark,\n\t\t\t\t\"mapping keys are not allowed in this context\")\n\t\t}\n\t\t// Add the BLOCK-MAPPING-START token if needed.\n\t\tif !yaml_parser_roll_indent(parser, parser.mark.column, -1, yaml_BLOCK_MAPPING_START_TOKEN, parser.mark) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Reset any potential simple keys on the current flow level.\n\tif !yaml_parser_remove_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t// Simple keys are allowed after '?' in the block context.\n\tparser.simple_key_allowed = parser.flow_level == 0\n\n\t// Consume the token.\n\tstart_mark := parser.mark\n\tskip(parser)\n\tend_mark := parser.mark\n\n\t// Create the KEY token and append it to the queue.\n\ttoken := yaml_token_t{\n\t\ttyp:        yaml_KEY_TOKEN,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the VALUE token.\nfunc yaml_parser_fetch_value(parser *yaml_parser_t) bool {\n\n\tsimple_key := &parser.simple_keys[len(parser.simple_keys)-1]\n\n\t// Have we found a simple key?\n\tif valid, ok := yaml_simple_key_is_valid(parser, simple_key); !ok {\n\t\treturn false\n\n\t} else if valid {\n\n\t\t// Create the KEY token and insert it into the queue.\n\t\ttoken := yaml_token_t{\n\t\t\ttyp:        yaml_KEY_TOKEN,\n\t\t\tstart_mark: simple_key.mark,\n\t\t\tend_mark:   simple_key.mark,\n\t\t}\n\t\tyaml_insert_token(parser, simple_key.token_number-parser.tokens_parsed, &token)\n\n\t\t// In the block context, we may need to add the BLOCK-MAPPING-START token.\n\t\tif !yaml_parser_roll_indent(parser, simple_key.mark.column,\n\t\t\tsimple_key.token_number,\n\t\t\tyaml_BLOCK_MAPPING_START_TOKEN, simple_key.mark) {\n\t\t\treturn false\n\t\t}\n\n\t\t// Remove the simple key.\n\t\tsimple_key.possible = false\n\t\tdelete(parser.simple_keys_by_tok, simple_key.token_number)\n\n\t\t// A simple key cannot follow another simple key.\n\t\tparser.simple_key_allowed = false\n\n\t} else {\n\t\t// The ':' indicator follows a complex key.\n\n\t\t// In the block context, extra checks are required.\n\t\tif parser.flow_level == 0 {\n\n\t\t\t// Check if we are allowed to start a complex value.\n\t\t\tif !parser.simple_key_allowed {\n\t\t\t\treturn yaml_parser_set_scanner_error(parser, \"\", parser.mark,\n\t\t\t\t\t\"mapping values are not allowed in this context\")\n\t\t\t}\n\n\t\t\t// Add the BLOCK-MAPPING-START token if needed.\n\t\t\tif !yaml_parser_roll_indent(parser, parser.mark.column, -1, yaml_BLOCK_MAPPING_START_TOKEN, parser.mark) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\t// Simple keys after ':' are allowed in the block context.\n\t\tparser.simple_key_allowed = parser.flow_level == 0\n\t}\n\n\t// Consume the token.\n\tstart_mark := parser.mark\n\tskip(parser)\n\tend_mark := parser.mark\n\n\t// Create the VALUE token and append it to the queue.\n\ttoken := yaml_token_t{\n\t\ttyp:        yaml_VALUE_TOKEN,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the ALIAS or ANCHOR token.\nfunc yaml_parser_fetch_anchor(parser *yaml_parser_t, typ yaml_token_type_t) bool {\n\t// An anchor or an alias could be a simple key.\n\tif !yaml_parser_save_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t// A simple key cannot follow an anchor or an alias.\n\tparser.simple_key_allowed = false\n\n\t// Create the ALIAS or ANCHOR token and append it to the queue.\n\tvar token yaml_token_t\n\tif !yaml_parser_scan_anchor(parser, &token, typ) {\n\t\treturn false\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the TAG token.\nfunc yaml_parser_fetch_tag(parser *yaml_parser_t) bool {\n\t// A tag could be a simple key.\n\tif !yaml_parser_save_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t// A simple key cannot follow a tag.\n\tparser.simple_key_allowed = false\n\n\t// Create the TAG token and append it to the queue.\n\tvar token yaml_token_t\n\tif !yaml_parser_scan_tag(parser, &token) {\n\t\treturn false\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the SCALAR(...,literal) or SCALAR(...,folded) tokens.\nfunc yaml_parser_fetch_block_scalar(parser *yaml_parser_t, literal bool) bool {\n\t// Remove any potential simple keys.\n\tif !yaml_parser_remove_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t// A simple key may follow a block scalar.\n\tparser.simple_key_allowed = true\n\n\t// Create the SCALAR token and append it to the queue.\n\tvar token yaml_token_t\n\tif !yaml_parser_scan_block_scalar(parser, &token, literal) {\n\t\treturn false\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the SCALAR(...,single-quoted) or SCALAR(...,double-quoted) tokens.\nfunc yaml_parser_fetch_flow_scalar(parser *yaml_parser_t, single bool) bool {\n\t// A plain scalar could be a simple key.\n\tif !yaml_parser_save_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t// A simple key cannot follow a flow scalar.\n\tparser.simple_key_allowed = false\n\n\t// Create the SCALAR token and append it to the queue.\n\tvar token yaml_token_t\n\tif !yaml_parser_scan_flow_scalar(parser, &token, single) {\n\t\treturn false\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the SCALAR(...,plain) token.\nfunc yaml_parser_fetch_plain_scalar(parser *yaml_parser_t) bool {\n\t// A plain scalar could be a simple key.\n\tif !yaml_parser_save_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t// A simple key cannot follow a flow scalar.\n\tparser.simple_key_allowed = false\n\n\t// Create the SCALAR token and append it to the queue.\n\tvar token yaml_token_t\n\tif !yaml_parser_scan_plain_scalar(parser, &token) {\n\t\treturn false\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Eat whitespaces and comments until the next token is found.\nfunc yaml_parser_scan_to_next_token(parser *yaml_parser_t) bool {\n\n\tscan_mark := parser.mark\n\n\t// Until the next token is not found.\n\tfor {\n\t\t// Allow the BOM mark to start a line.\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t\tif parser.mark.column == 0 && is_bom(parser.buffer, parser.buffer_pos) {\n\t\t\tskip(parser)\n\t\t}\n\n\t\t// Eat whitespaces.\n\t\t// Tabs are allowed:\n\t\t//  - in the flow context\n\t\t//  - in the block context, but not at the beginning of the line or\n\t\t//  after '-', '?', or ':' (complex value).\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\n\t\tfor parser.buffer[parser.buffer_pos] == ' ' || ((parser.flow_level > 0 || !parser.simple_key_allowed) && parser.buffer[parser.buffer_pos] == '\\t') {\n\t\t\tskip(parser)\n\t\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\t// Check if we just had a line comment under a sequence entry that\n\t\t// looks more like a header to the following content. Similar to this:\n\t\t//\n\t\t// - # The comment\n\t\t//   - Some data\n\t\t//\n\t\t// If so, transform the line comment to a head comment and reposition.\n\t\tif len(parser.comments) > 0 && len(parser.tokens) > 1 {\n\t\t\ttokenA := parser.tokens[len(parser.tokens)-2]\n\t\t\ttokenB := parser.tokens[len(parser.tokens)-1]\n\t\t\tcomment := &parser.comments[len(parser.comments)-1]\n\t\t\tif tokenA.typ == yaml_BLOCK_SEQUENCE_START_TOKEN && tokenB.typ == yaml_BLOCK_ENTRY_TOKEN && len(comment.line) > 0 && !is_break(parser.buffer, parser.buffer_pos) {\n\t\t\t\t// If it was in the prior line, reposition so it becomes a\n\t\t\t\t// header of the follow up token. Otherwise, keep it in place\n\t\t\t\t// so it becomes a header of the former.\n\t\t\t\tcomment.head = comment.line\n\t\t\t\tcomment.line = nil\n\t\t\t\tif comment.start_mark.line == parser.mark.line-1 {\n\t\t\t\t\tcomment.token_mark = parser.mark\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Eat a comment until a line break.\n\t\tif parser.buffer[parser.buffer_pos] == '#' {\n\t\t\tif !yaml_parser_scan_comments(parser, scan_mark) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\t// If it is a line break, eat it.\n\t\tif is_break(parser.buffer, parser.buffer_pos) {\n\t\t\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tskip_line(parser)\n\n\t\t\t// In the block context, a new line may start a simple key.\n\t\t\tif parser.flow_level == 0 {\n\t\t\t\tparser.simple_key_allowed = true\n\t\t\t}\n\t\t} else {\n\t\t\tbreak // We have found a token.\n\t\t}\n\t}\n\n\treturn true\n}\n\n// Scan a YAML-DIRECTIVE or TAG-DIRECTIVE token.\n//\n// Scope:\n//      %YAML    1.1    # a comment \\n\n//      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n//      %TAG    !yaml!  tag:yaml.org,2002:  \\n\n//      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n//\nfunc yaml_parser_scan_directive(parser *yaml_parser_t, token *yaml_token_t) bool {\n\t// Eat '%'.\n\tstart_mark := parser.mark\n\tskip(parser)\n\n\t// Scan the directive name.\n\tvar name []byte\n\tif !yaml_parser_scan_directive_name(parser, start_mark, &name) {\n\t\treturn false\n\t}\n\n\t// Is it a YAML directive?\n\tif bytes.Equal(name, []byte(\"YAML\")) {\n\t\t// Scan the VERSION directive value.\n\t\tvar major, minor int8\n\t\tif !yaml_parser_scan_version_directive_value(parser, start_mark, &major, &minor) {\n\t\t\treturn false\n\t\t}\n\t\tend_mark := parser.mark\n\n\t\t// Create a VERSION-DIRECTIVE token.\n\t\t*token = yaml_token_t{\n\t\t\ttyp:        yaml_VERSION_DIRECTIVE_TOKEN,\n\t\t\tstart_mark: start_mark,\n\t\t\tend_mark:   end_mark,\n\t\t\tmajor:      major,\n\t\t\tminor:      minor,\n\t\t}\n\n\t\t// Is it a TAG directive?\n\t} else if bytes.Equal(name, []byte(\"TAG\")) {\n\t\t// Scan the TAG directive value.\n\t\tvar handle, prefix []byte\n\t\tif !yaml_parser_scan_tag_directive_value(parser, start_mark, &handle, &prefix) {\n\t\t\treturn false\n\t\t}\n\t\tend_mark := parser.mark\n\n\t\t// Create a TAG-DIRECTIVE token.\n\t\t*token = yaml_token_t{\n\t\t\ttyp:        yaml_TAG_DIRECTIVE_TOKEN,\n\t\t\tstart_mark: start_mark,\n\t\t\tend_mark:   end_mark,\n\t\t\tvalue:      handle,\n\t\t\tprefix:     prefix,\n\t\t}\n\n\t\t// Unknown directive.\n\t} else {\n\t\tyaml_parser_set_scanner_error(parser, \"while scanning a directive\",\n\t\t\tstart_mark, \"found unknown directive name\")\n\t\treturn false\n\t}\n\n\t// Eat the rest of the line including any comments.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\n\tfor is_blank(parser.buffer, parser.buffer_pos) {\n\t\tskip(parser)\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tif parser.buffer[parser.buffer_pos] == '#' {\n\t\t// [Go] Discard this inline comment for the time being.\n\t\t//if !yaml_parser_scan_line_comment(parser, start_mark) {\n\t\t//\treturn false\n\t\t//}\n\t\tfor !is_breakz(parser.buffer, parser.buffer_pos) {\n\t\t\tskip(parser)\n\t\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check if we are at the end of the line.\n\tif !is_breakz(parser.buffer, parser.buffer_pos) {\n\t\tyaml_parser_set_scanner_error(parser, \"while scanning a directive\",\n\t\t\tstart_mark, \"did not find expected comment or line break\")\n\t\treturn false\n\t}\n\n\t// Eat a line break.\n\tif is_break(parser.buffer, parser.buffer_pos) {\n\t\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\t\treturn false\n\t\t}\n\t\tskip_line(parser)\n\t}\n\n\treturn true\n}\n\n// Scan the directive name.\n//\n// Scope:\n//      %YAML   1.1     # a comment \\n\n//       ^^^^\n//      %TAG    !yaml!  tag:yaml.org,2002:  \\n\n//       ^^^\n//\nfunc yaml_parser_scan_directive_name(parser *yaml_parser_t, start_mark yaml_mark_t, name *[]byte) bool {\n\t// Consume the directive name.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\n\tvar s []byte\n\tfor is_alpha(parser.buffer, parser.buffer_pos) {\n\t\ts = read(parser, s)\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Check if the name is empty.\n\tif len(s) == 0 {\n\t\tyaml_parser_set_scanner_error(parser, \"while scanning a directive\",\n\t\t\tstart_mark, \"could not find expected directive name\")\n\t\treturn false\n\t}\n\n\t// Check for an blank character after the name.\n\tif !is_blankz(parser.buffer, parser.buffer_pos) {\n\t\tyaml_parser_set_scanner_error(parser, \"while scanning a directive\",\n\t\t\tstart_mark, \"found unexpected non-alphabetical character\")\n\t\treturn false\n\t}\n\t*name = s\n\treturn true\n}\n\n// Scan the value of VERSION-DIRECTIVE.\n//\n// Scope:\n//      %YAML   1.1     # a comment \\n\n//           ^^^^^^\nfunc yaml_parser_scan_version_directive_value(parser *yaml_parser_t, start_mark yaml_mark_t, major, minor *int8) bool {\n\t// Eat whitespaces.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\tfor is_blank(parser.buffer, parser.buffer_pos) {\n\t\tskip(parser)\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Consume the major version number.\n\tif !yaml_parser_scan_version_directive_number(parser, start_mark, major) {\n\t\treturn false\n\t}\n\n\t// Eat '.'.\n\tif parser.buffer[parser.buffer_pos] != '.' {\n\t\treturn yaml_parser_set_scanner_error(parser, \"while scanning a %YAML directive\",\n\t\t\tstart_mark, \"did not find expected digit or '.' character\")\n\t}\n\n\tskip(parser)\n\n\t// Consume the minor version number.\n\tif !yaml_parser_scan_version_directive_number(parser, start_mark, minor) {\n\t\treturn false\n\t}\n\treturn true\n}\n\nconst max_number_length = 2\n\n// Scan the version number of VERSION-DIRECTIVE.\n//\n// Scope:\n//      %YAML   1.1     # a comment \\n\n//              ^\n//      %YAML   1.1     # a comment \\n\n//                ^\nfunc yaml_parser_scan_version_directive_number(parser *yaml_parser_t, start_mark yaml_mark_t, number *int8) bool {\n\n\t// Repeat while the next character is digit.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\tvar value, length int8\n\tfor is_digit(parser.buffer, parser.buffer_pos) {\n\t\t// Check if the number is too long.\n\t\tlength++\n\t\tif length > max_number_length {\n\t\t\treturn yaml_parser_set_scanner_error(parser, \"while scanning a %YAML directive\",\n\t\t\t\tstart_mark, \"found extremely long version number\")\n\t\t}\n\t\tvalue = value*10 + int8(as_digit(parser.buffer, parser.buffer_pos))\n\t\tskip(parser)\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Check if the number was present.\n\tif length == 0 {\n\t\treturn yaml_parser_set_scanner_error(parser, \"while scanning a %YAML directive\",\n\t\t\tstart_mark, \"did not find expected version number\")\n\t}\n\t*number = value\n\treturn true\n}\n\n// Scan the value of a TAG-DIRECTIVE token.\n//\n// Scope:\n//      %TAG    !yaml!  tag:yaml.org,2002:  \\n\n//          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n//\nfunc yaml_parser_scan_tag_directive_value(parser *yaml_parser_t, start_mark yaml_mark_t, handle, prefix *[]byte) bool {\n\tvar handle_value, prefix_value []byte\n\n\t// Eat whitespaces.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\n\tfor is_blank(parser.buffer, parser.buffer_pos) {\n\t\tskip(parser)\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Scan a handle.\n\tif !yaml_parser_scan_tag_handle(parser, true, start_mark, &handle_value) {\n\t\treturn false\n\t}\n\n\t// Expect a whitespace.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\tif !is_blank(parser.buffer, parser.buffer_pos) {\n\t\tyaml_parser_set_scanner_error(parser, \"while scanning a %TAG directive\",\n\t\t\tstart_mark, \"did not find expected whitespace\")\n\t\treturn false\n\t}\n\n\t// Eat whitespaces.\n\tfor is_blank(parser.buffer, parser.buffer_pos) {\n\t\tskip(parser)\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Scan a prefix.\n\tif !yaml_parser_scan_tag_uri(parser, true, nil, start_mark, &prefix_value) {\n\t\treturn false\n\t}\n\n\t// Expect a whitespace or line break.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\tif !is_blankz(parser.buffer, parser.buffer_pos) {\n\t\tyaml_parser_set_scanner_error(parser, \"while scanning a %TAG directive\",\n\t\t\tstart_mark, \"did not find expected whitespace or line break\")\n\t\treturn false\n\t}\n\n\t*handle = handle_value\n\t*prefix = prefix_value\n\treturn true\n}\n\nfunc yaml_parser_scan_anchor(parser *yaml_parser_t, token *yaml_token_t, typ yaml_token_type_t) bool {\n\tvar s []byte\n\n\t// Eat the indicator character.\n\tstart_mark := parser.mark\n\tskip(parser)\n\n\t// Consume the value.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\n\tfor is_alpha(parser.buffer, parser.buffer_pos) {\n\t\ts = read(parser, s)\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tend_mark := parser.mark\n\n\t/*\n\t * Check if length of the anchor is greater than 0 and it is followed by\n\t * a whitespace character or one of the indicators:\n\t *\n\t *      '?', ':', ',', ']', '}', '%', '@', '`'.\n\t */\n\n\tif len(s) == 0 ||\n\t\t!(is_blankz(parser.buffer, parser.buffer_pos) || parser.buffer[parser.buffer_pos] == '?' ||\n\t\t\tparser.buffer[parser.buffer_pos] == ':' || parser.buffer[parser.buffer_pos] == ',' ||\n\t\t\tparser.buffer[parser.buffer_pos] == ']' || parser.buffer[parser.buffer_pos] == '}' ||\n\t\t\tparser.buffer[parser.buffer_pos] == '%' || parser.buffer[parser.buffer_pos] == '@' ||\n\t\t\tparser.buffer[parser.buffer_pos] == '`') {\n\t\tcontext := \"while scanning an alias\"\n\t\tif typ == yaml_ANCHOR_TOKEN {\n\t\t\tcontext = \"while scanning an anchor\"\n\t\t}\n\t\tyaml_parser_set_scanner_error(parser, context, start_mark,\n\t\t\t\"did not find expected alphabetic or numeric character\")\n\t\treturn false\n\t}\n\n\t// Create a token.\n\t*token = yaml_token_t{\n\t\ttyp:        typ,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t\tvalue:      s,\n\t}\n\n\treturn true\n}\n\n/*\n * Scan a TAG token.\n */\n\nfunc yaml_parser_scan_tag(parser *yaml_parser_t, token *yaml_token_t) bool {\n\tvar handle, suffix []byte\n\n\tstart_mark := parser.mark\n\n\t// Check if the tag is in the canonical form.\n\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\treturn false\n\t}\n\n\tif parser.buffer[parser.buffer_pos+1] == '<' {\n\t\t// Keep the handle as ''\n\n\t\t// Eat '!<'\n\t\tskip(parser)\n\t\tskip(parser)\n\n\t\t// Consume the tag value.\n\t\tif !yaml_parser_scan_tag_uri(parser, false, nil, start_mark, &suffix) {\n\t\t\treturn false\n\t\t}\n\n\t\t// Check for '>' and eat it.\n\t\tif parser.buffer[parser.buffer_pos] != '>' {\n\t\t\tyaml_parser_set_scanner_error(parser, \"while scanning a tag\",\n\t\t\t\tstart_mark, \"did not find the expected '>'\")\n\t\t\treturn false\n\t\t}\n\n\t\tskip(parser)\n\t} else {\n\t\t// The tag has either the '!suffix' or the '!handle!suffix' form.\n\n\t\t// First, try to scan a handle.\n\t\tif !yaml_parser_scan_tag_handle(parser, false, start_mark, &handle) {\n\t\t\treturn false\n\t\t}\n\n\t\t// Check if it is, indeed, handle.\n\t\tif handle[0] == '!' && len(handle) > 1 && handle[len(handle)-1] == '!' {\n\t\t\t// Scan the suffix now.\n\t\t\tif !yaml_parser_scan_tag_uri(parser, false, nil, start_mark, &suffix) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t} else {\n\t\t\t// It wasn't a handle after all.  Scan the rest of the tag.\n\t\t\tif !yaml_parser_scan_tag_uri(parser, false, handle, start_mark, &suffix) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\t// Set the handle to '!'.\n\t\t\thandle = []byte{'!'}\n\n\t\t\t// A special case: the '!' tag.  Set the handle to '' and the\n\t\t\t// suffix to '!'.\n\t\t\tif len(suffix) == 0 {\n\t\t\t\thandle, suffix = suffix, handle\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check the character which ends the tag.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\tif !is_blankz(parser.buffer, parser.buffer_pos) {\n\t\tyaml_parser_set_scanner_error(parser, \"while scanning a tag\",\n\t\t\tstart_mark, \"did not find expected whitespace or line break\")\n\t\treturn false\n\t}\n\n\tend_mark := parser.mark\n\n\t// Create a token.\n\t*token = yaml_token_t{\n\t\ttyp:        yaml_TAG_TOKEN,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t\tvalue:      handle,\n\t\tsuffix:     suffix,\n\t}\n\treturn true\n}\n\n// Scan a tag handle.\nfunc yaml_parser_scan_tag_handle(parser *yaml_parser_t, directive bool, start_mark yaml_mark_t, handle *[]byte) bool {\n\t// Check the initial '!' character.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\tif parser.buffer[parser.buffer_pos] != '!' {\n\t\tyaml_parser_set_scanner_tag_error(parser, directive,\n\t\t\tstart_mark, \"did not find expected '!'\")\n\t\treturn false\n\t}\n\n\tvar s []byte\n\n\t// Copy the '!' character.\n\ts = read(parser, s)\n\n\t// Copy all subsequent alphabetical and numerical characters.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\tfor is_alpha(parser.buffer, parser.buffer_pos) {\n\t\ts = read(parser, s)\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Check if the trailing character is '!' and copy it.\n\tif parser.buffer[parser.buffer_pos] == '!' {\n\t\ts = read(parser, s)\n\t} else {\n\t\t// It's either the '!' tag or not really a tag handle.  If it's a %TAG\n\t\t// directive, it's an error.  If it's a tag token, it must be a part of URI.\n\t\tif directive && string(s) != \"!\" {\n\t\t\tyaml_parser_set_scanner_tag_error(parser, directive,\n\t\t\t\tstart_mark, \"did not find expected '!'\")\n\t\t\treturn false\n\t\t}\n\t}\n\n\t*handle = s\n\treturn true\n}\n\n// Scan a tag.\nfunc yaml_parser_scan_tag_uri(parser *yaml_parser_t, directive bool, head []byte, start_mark yaml_mark_t, uri *[]byte) bool {\n\t//size_t length = head ? strlen((char *)head) : 0\n\tvar s []byte\n\thasTag := len(head) > 0\n\n\t// Copy the head if needed.\n\t//\n\t// Note that we don't copy the leading '!' character.\n\tif len(head) > 1 {\n\t\ts = append(s, head[1:]...)\n\t}\n\n\t// Scan the tag.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\n\t// The set of characters that may appear in URI is as follows:\n\t//\n\t//      '0'-'9', 'A'-'Z', 'a'-'z', '_', '-', ';', '/', '?', ':', '@', '&',\n\t//      '=', '+', '$', ',', '.', '!', '~', '*', '\\'', '(', ')', '[', ']',\n\t//      '%'.\n\t// [Go] TODO Convert this into more reasonable logic.\n\tfor is_alpha(parser.buffer, parser.buffer_pos) || parser.buffer[parser.buffer_pos] == ';' ||\n\t\tparser.buffer[parser.buffer_pos] == '/' || parser.buffer[parser.buffer_pos] == '?' ||\n\t\tparser.buffer[parser.buffer_pos] == ':' || parser.buffer[parser.buffer_pos] == '@' ||\n\t\tparser.buffer[parser.buffer_pos] == '&' || parser.buffer[parser.buffer_pos] == '=' ||\n\t\tparser.buffer[parser.buffer_pos] == '+' || parser.buffer[parser.buffer_pos] == '$' ||\n\t\tparser.buffer[parser.buffer_pos] == ',' || parser.buffer[parser.buffer_pos] == '.' ||\n\t\tparser.buffer[parser.buffer_pos] == '!' || parser.buffer[parser.buffer_pos] == '~' ||\n\t\tparser.buffer[parser.buffer_pos] == '*' || parser.buffer[parser.buffer_pos] == '\\'' ||\n\t\tparser.buffer[parser.buffer_pos] == '(' || parser.buffer[parser.buffer_pos] == ')' ||\n\t\tparser.buffer[parser.buffer_pos] == '[' || parser.buffer[parser.buffer_pos] == ']' ||\n\t\tparser.buffer[parser.buffer_pos] == '%' {\n\t\t// Check if it is a URI-escape sequence.\n\t\tif parser.buffer[parser.buffer_pos] == '%' {\n\t\t\tif !yaml_parser_scan_uri_escapes(parser, directive, start_mark, &s) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t} else {\n\t\t\ts = read(parser, s)\n\t\t}\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t\thasTag = true\n\t}\n\n\tif !hasTag {\n\t\tyaml_parser_set_scanner_tag_error(parser, directive,\n\t\t\tstart_mark, \"did not find expected tag URI\")\n\t\treturn false\n\t}\n\t*uri = s\n\treturn true\n}\n\n// Decode an URI-escape sequence corresponding to a single UTF-8 character.\nfunc yaml_parser_scan_uri_escapes(parser *yaml_parser_t, directive bool, start_mark yaml_mark_t, s *[]byte) bool {\n\n\t// Decode the required number of characters.\n\tw := 1024\n\tfor w > 0 {\n\t\t// Check for a URI-escaped octet.\n\t\tif parser.unread < 3 && !yaml_parser_update_buffer(parser, 3) {\n\t\t\treturn false\n\t\t}\n\n\t\tif !(parser.buffer[parser.buffer_pos] == '%' &&\n\t\t\tis_hex(parser.buffer, parser.buffer_pos+1) &&\n\t\t\tis_hex(parser.buffer, parser.buffer_pos+2)) {\n\t\t\treturn yaml_parser_set_scanner_tag_error(parser, directive,\n\t\t\t\tstart_mark, \"did not find URI escaped octet\")\n\t\t}\n\n\t\t// Get the octet.\n\t\toctet := byte((as_hex(parser.buffer, parser.buffer_pos+1) << 4) + as_hex(parser.buffer, parser.buffer_pos+2))\n\n\t\t// If it is the leading octet, determine the length of the UTF-8 sequence.\n\t\tif w == 1024 {\n\t\t\tw = width(octet)\n\t\t\tif w == 0 {\n\t\t\t\treturn yaml_parser_set_scanner_tag_error(parser, directive,\n\t\t\t\t\tstart_mark, \"found an incorrect leading UTF-8 octet\")\n\t\t\t}\n\t\t} else {\n\t\t\t// Check if the trailing octet is correct.\n\t\t\tif octet&0xC0 != 0x80 {\n\t\t\t\treturn yaml_parser_set_scanner_tag_error(parser, directive,\n\t\t\t\t\tstart_mark, \"found an incorrect trailing UTF-8 octet\")\n\t\t\t}\n\t\t}\n\n\t\t// Copy the octet and move the pointers.\n\t\t*s = append(*s, octet)\n\t\tskip(parser)\n\t\tskip(parser)\n\t\tskip(parser)\n\t\tw--\n\t}\n\treturn true\n}\n\n// Scan a block scalar.\nfunc yaml_parser_scan_block_scalar(parser *yaml_parser_t, token *yaml_token_t, literal bool) bool {\n\t// Eat the indicator '|' or '>'.\n\tstart_mark := parser.mark\n\tskip(parser)\n\n\t// Scan the additional block scalar indicators.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\n\t// Check for a chomping indicator.\n\tvar chomping, increment int\n\tif parser.buffer[parser.buffer_pos] == '+' || parser.buffer[parser.buffer_pos] == '-' {\n\t\t// Set the chomping method and eat the indicator.\n\t\tif parser.buffer[parser.buffer_pos] == '+' {\n\t\t\tchomping = +1\n\t\t} else {\n\t\t\tchomping = -1\n\t\t}\n\t\tskip(parser)\n\n\t\t// Check for an indentation indicator.\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t\tif is_digit(parser.buffer, parser.buffer_pos) {\n\t\t\t// Check that the indentation is greater than 0.\n\t\t\tif parser.buffer[parser.buffer_pos] == '0' {\n\t\t\t\tyaml_parser_set_scanner_error(parser, \"while scanning a block scalar\",\n\t\t\t\t\tstart_mark, \"found an indentation indicator equal to 0\")\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\t// Get the indentation level and eat the indicator.\n\t\t\tincrement = as_digit(parser.buffer, parser.buffer_pos)\n\t\t\tskip(parser)\n\t\t}\n\n\t} else if is_digit(parser.buffer, parser.buffer_pos) {\n\t\t// Do the same as above, but in the opposite order.\n\n\t\tif parser.buffer[parser.buffer_pos] == '0' {\n\t\t\tyaml_parser_set_scanner_error(parser, \"while scanning a block scalar\",\n\t\t\t\tstart_mark, \"found an indentation indicator equal to 0\")\n\t\t\treturn false\n\t\t}\n\t\tincrement = as_digit(parser.buffer, parser.buffer_pos)\n\t\tskip(parser)\n\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t\tif parser.buffer[parser.buffer_pos] == '+' || parser.buffer[parser.buffer_pos] == '-' {\n\t\t\tif parser.buffer[parser.buffer_pos] == '+' {\n\t\t\t\tchomping = +1\n\t\t\t} else {\n\t\t\t\tchomping = -1\n\t\t\t}\n\t\t\tskip(parser)\n\t\t}\n\t}\n\n\t// Eat whitespaces and comments to the end of the line.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\tfor is_blank(parser.buffer, parser.buffer_pos) {\n\t\tskip(parser)\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t}\n\tif parser.buffer[parser.buffer_pos] == '#' {\n\t\tif !yaml_parser_scan_line_comment(parser, start_mark) {\n\t\t\treturn false\n\t\t}\n\t\tfor !is_breakz(parser.buffer, parser.buffer_pos) {\n\t\t\tskip(parser)\n\t\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check if we are at the end of the line.\n\tif !is_breakz(parser.buffer, parser.buffer_pos) {\n\t\tyaml_parser_set_scanner_error(parser, \"while scanning a block scalar\",\n\t\t\tstart_mark, \"did not find expected comment or line break\")\n\t\treturn false\n\t}\n\n\t// Eat a line break.\n\tif is_break(parser.buffer, parser.buffer_pos) {\n\t\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\t\treturn false\n\t\t}\n\t\tskip_line(parser)\n\t}\n\n\tend_mark := parser.mark\n\n\t// Set the indentation level if it was specified.\n\tvar indent int\n\tif increment > 0 {\n\t\tif parser.indent >= 0 {\n\t\t\tindent = parser.indent + increment\n\t\t} else {\n\t\t\tindent = increment\n\t\t}\n\t}\n\n\t// Scan the leading line breaks and determine the indentation level if needed.\n\tvar s, leading_break, trailing_breaks []byte\n\tif !yaml_parser_scan_block_scalar_breaks(parser, &indent, &trailing_breaks, start_mark, &end_mark) {\n\t\treturn false\n\t}\n\n\t// Scan the block scalar content.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\tvar leading_blank, trailing_blank bool\n\tfor parser.mark.column == indent && !is_z(parser.buffer, parser.buffer_pos) {\n\t\t// We are at the beginning of a non-empty line.\n\n\t\t// Is it a trailing whitespace?\n\t\ttrailing_blank = is_blank(parser.buffer, parser.buffer_pos)\n\n\t\t// Check if we need to fold the leading line break.\n\t\tif !literal && !leading_blank && !trailing_blank && len(leading_break) > 0 && leading_break[0] == '\\n' {\n\t\t\t// Do we need to join the lines by space?\n\t\t\tif len(trailing_breaks) == 0 {\n\t\t\t\ts = append(s, ' ')\n\t\t\t}\n\t\t} else {\n\t\t\ts = append(s, leading_break...)\n\t\t}\n\t\tleading_break = leading_break[:0]\n\n\t\t// Append the remaining line breaks.\n\t\ts = append(s, trailing_breaks...)\n\t\ttrailing_breaks = trailing_breaks[:0]\n\n\t\t// Is it a leading whitespace?\n\t\tleading_blank = is_blank(parser.buffer, parser.buffer_pos)\n\n\t\t// Consume the current line.\n\t\tfor !is_breakz(parser.buffer, parser.buffer_pos) {\n\t\t\ts = read(parser, s)\n\t\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\t// Consume the line break.\n\t\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\t\treturn false\n\t\t}\n\n\t\tleading_break = read_line(parser, leading_break)\n\n\t\t// Eat the following indentation spaces and line breaks.\n\t\tif !yaml_parser_scan_block_scalar_breaks(parser, &indent, &trailing_breaks, start_mark, &end_mark) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Chomp the tail.\n\tif chomping != -1 {\n\t\ts = append(s, leading_break...)\n\t}\n\tif chomping == 1 {\n\t\ts = append(s, trailing_breaks...)\n\t}\n\n\t// Create a token.\n\t*token = yaml_token_t{\n\t\ttyp:        yaml_SCALAR_TOKEN,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t\tvalue:      s,\n\t\tstyle:      yaml_LITERAL_SCALAR_STYLE,\n\t}\n\tif !literal {\n\t\ttoken.style = yaml_FOLDED_SCALAR_STYLE\n\t}\n\treturn true\n}\n\n// Scan indentation spaces and line breaks for a block scalar.  Determine the\n// indentation level if needed.\nfunc yaml_parser_scan_block_scalar_breaks(parser *yaml_parser_t, indent *int, breaks *[]byte, start_mark yaml_mark_t, end_mark *yaml_mark_t) bool {\n\t*end_mark = parser.mark\n\n\t// Eat the indentation spaces and line breaks.\n\tmax_indent := 0\n\tfor {\n\t\t// Eat the indentation spaces.\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t\tfor (*indent == 0 || parser.mark.column < *indent) && is_space(parser.buffer, parser.buffer_pos) {\n\t\t\tskip(parser)\n\t\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif parser.mark.column > max_indent {\n\t\t\tmax_indent = parser.mark.column\n\t\t}\n\n\t\t// Check for a tab character messing the indentation.\n\t\tif (*indent == 0 || parser.mark.column < *indent) && is_tab(parser.buffer, parser.buffer_pos) {\n\t\t\treturn yaml_parser_set_scanner_error(parser, \"while scanning a block scalar\",\n\t\t\t\tstart_mark, \"found a tab character where an indentation space is expected\")\n\t\t}\n\n\t\t// Have we found a non-empty line?\n\t\tif !is_break(parser.buffer, parser.buffer_pos) {\n\t\t\tbreak\n\t\t}\n\n\t\t// Consume the line break.\n\t\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\t\treturn false\n\t\t}\n\t\t// [Go] Should really be returning breaks instead.\n\t\t*breaks = read_line(parser, *breaks)\n\t\t*end_mark = parser.mark\n\t}\n\n\t// Determine the indentation level if needed.\n\tif *indent == 0 {\n\t\t*indent = max_indent\n\t\tif *indent < parser.indent+1 {\n\t\t\t*indent = parser.indent + 1\n\t\t}\n\t\tif *indent < 1 {\n\t\t\t*indent = 1\n\t\t}\n\t}\n\treturn true\n}\n\n// Scan a quoted scalar.\nfunc yaml_parser_scan_flow_scalar(parser *yaml_parser_t, token *yaml_token_t, single bool) bool {\n\t// Eat the left quote.\n\tstart_mark := parser.mark\n\tskip(parser)\n\n\t// Consume the content of the quoted scalar.\n\tvar s, leading_break, trailing_breaks, whitespaces []byte\n\tfor {\n\t\t// Check that there are no document indicators at the beginning of the line.\n\t\tif parser.unread < 4 && !yaml_parser_update_buffer(parser, 4) {\n\t\t\treturn false\n\t\t}\n\n\t\tif parser.mark.column == 0 &&\n\t\t\t((parser.buffer[parser.buffer_pos+0] == '-' &&\n\t\t\t\tparser.buffer[parser.buffer_pos+1] == '-' &&\n\t\t\t\tparser.buffer[parser.buffer_pos+2] == '-') ||\n\t\t\t\t(parser.buffer[parser.buffer_pos+0] == '.' &&\n\t\t\t\t\tparser.buffer[parser.buffer_pos+1] == '.' &&\n\t\t\t\t\tparser.buffer[parser.buffer_pos+2] == '.')) &&\n\t\t\tis_blankz(parser.buffer, parser.buffer_pos+3) {\n\t\t\tyaml_parser_set_scanner_error(parser, \"while scanning a quoted scalar\",\n\t\t\t\tstart_mark, \"found unexpected document indicator\")\n\t\t\treturn false\n\t\t}\n\n\t\t// Check for EOF.\n\t\tif is_z(parser.buffer, parser.buffer_pos) {\n\t\t\tyaml_parser_set_scanner_error(parser, \"while scanning a quoted scalar\",\n\t\t\t\tstart_mark, \"found unexpected end of stream\")\n\t\t\treturn false\n\t\t}\n\n\t\t// Consume non-blank characters.\n\t\tleading_blanks := false\n\t\tfor !is_blankz(parser.buffer, parser.buffer_pos) {\n\t\t\tif single && parser.buffer[parser.buffer_pos] == '\\'' && parser.buffer[parser.buffer_pos+1] == '\\'' {\n\t\t\t\t// Is is an escaped single quote.\n\t\t\t\ts = append(s, '\\'')\n\t\t\t\tskip(parser)\n\t\t\t\tskip(parser)\n\n\t\t\t} else if single && parser.buffer[parser.buffer_pos] == '\\'' {\n\t\t\t\t// It is a right single quote.\n\t\t\t\tbreak\n\t\t\t} else if !single && parser.buffer[parser.buffer_pos] == '\"' {\n\t\t\t\t// It is a right double quote.\n\t\t\t\tbreak\n\n\t\t\t} else if !single && parser.buffer[parser.buffer_pos] == '\\\\' && is_break(parser.buffer, parser.buffer_pos+1) {\n\t\t\t\t// It is an escaped line break.\n\t\t\t\tif parser.unread < 3 && !yaml_parser_update_buffer(parser, 3) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tskip(parser)\n\t\t\t\tskip_line(parser)\n\t\t\t\tleading_blanks = true\n\t\t\t\tbreak\n\n\t\t\t} else if !single && parser.buffer[parser.buffer_pos] == '\\\\' {\n\t\t\t\t// It is an escape sequence.\n\t\t\t\tcode_length := 0\n\n\t\t\t\t// Check the escape character.\n\t\t\t\tswitch parser.buffer[parser.buffer_pos+1] {\n\t\t\t\tcase '0':\n\t\t\t\t\ts = append(s, 0)\n\t\t\t\tcase 'a':\n\t\t\t\t\ts = append(s, '\\x07')\n\t\t\t\tcase 'b':\n\t\t\t\t\ts = append(s, '\\x08')\n\t\t\t\tcase 't', '\\t':\n\t\t\t\t\ts = append(s, '\\x09')\n\t\t\t\tcase 'n':\n\t\t\t\t\ts = append(s, '\\x0A')\n\t\t\t\tcase 'v':\n\t\t\t\t\ts = append(s, '\\x0B')\n\t\t\t\tcase 'f':\n\t\t\t\t\ts = append(s, '\\x0C')\n\t\t\t\tcase 'r':\n\t\t\t\t\ts = append(s, '\\x0D')\n\t\t\t\tcase 'e':\n\t\t\t\t\ts = append(s, '\\x1B')\n\t\t\t\tcase ' ':\n\t\t\t\t\ts = append(s, '\\x20')\n\t\t\t\tcase '\"':\n\t\t\t\t\ts = append(s, '\"')\n\t\t\t\tcase '\\'':\n\t\t\t\t\ts = append(s, '\\'')\n\t\t\t\tcase '\\\\':\n\t\t\t\t\ts = append(s, '\\\\')\n\t\t\t\tcase 'N': // NEL (#x85)\n\t\t\t\t\ts = append(s, '\\xC2')\n\t\t\t\t\ts = append(s, '\\x85')\n\t\t\t\tcase '_': // #xA0\n\t\t\t\t\ts = append(s, '\\xC2')\n\t\t\t\t\ts = append(s, '\\xA0')\n\t\t\t\tcase 'L': // LS (#x2028)\n\t\t\t\t\ts = append(s, '\\xE2')\n\t\t\t\t\ts = append(s, '\\x80')\n\t\t\t\t\ts = append(s, '\\xA8')\n\t\t\t\tcase 'P': // PS (#x2029)\n\t\t\t\t\ts = append(s, '\\xE2')\n\t\t\t\t\ts = append(s, '\\x80')\n\t\t\t\t\ts = append(s, '\\xA9')\n\t\t\t\tcase 'x':\n\t\t\t\t\tcode_length = 2\n\t\t\t\tcase 'u':\n\t\t\t\t\tcode_length = 4\n\t\t\t\tcase 'U':\n\t\t\t\t\tcode_length = 8\n\t\t\t\tdefault:\n\t\t\t\t\tyaml_parser_set_scanner_error(parser, \"while parsing a quoted scalar\",\n\t\t\t\t\t\tstart_mark, \"found unknown escape character\")\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\t\tskip(parser)\n\t\t\t\tskip(parser)\n\n\t\t\t\t// Consume an arbitrary escape code.\n\t\t\t\tif code_length > 0 {\n\t\t\t\t\tvar value int\n\n\t\t\t\t\t// Scan the character value.\n\t\t\t\t\tif parser.unread < code_length && !yaml_parser_update_buffer(parser, code_length) {\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t\tfor k := 0; k < code_length; k++ {\n\t\t\t\t\t\tif !is_hex(parser.buffer, parser.buffer_pos+k) {\n\t\t\t\t\t\t\tyaml_parser_set_scanner_error(parser, \"while parsing a quoted scalar\",\n\t\t\t\t\t\t\t\tstart_mark, \"did not find expected hexdecimal number\")\n\t\t\t\t\t\t\treturn false\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvalue = (value << 4) + as_hex(parser.buffer, parser.buffer_pos+k)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Check the value and write the character.\n\t\t\t\t\tif (value >= 0xD800 && value <= 0xDFFF) || value > 0x10FFFF {\n\t\t\t\t\t\tyaml_parser_set_scanner_error(parser, \"while parsing a quoted scalar\",\n\t\t\t\t\t\t\tstart_mark, \"found invalid Unicode character escape code\")\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t\tif value <= 0x7F {\n\t\t\t\t\t\ts = append(s, byte(value))\n\t\t\t\t\t} else if value <= 0x7FF {\n\t\t\t\t\t\ts = append(s, byte(0xC0+(value>>6)))\n\t\t\t\t\t\ts = append(s, byte(0x80+(value&0x3F)))\n\t\t\t\t\t} else if value <= 0xFFFF {\n\t\t\t\t\t\ts = append(s, byte(0xE0+(value>>12)))\n\t\t\t\t\t\ts = append(s, byte(0x80+((value>>6)&0x3F)))\n\t\t\t\t\t\ts = append(s, byte(0x80+(value&0x3F)))\n\t\t\t\t\t} else {\n\t\t\t\t\t\ts = append(s, byte(0xF0+(value>>18)))\n\t\t\t\t\t\ts = append(s, byte(0x80+((value>>12)&0x3F)))\n\t\t\t\t\t\ts = append(s, byte(0x80+((value>>6)&0x3F)))\n\t\t\t\t\t\ts = append(s, byte(0x80+(value&0x3F)))\n\t\t\t\t\t}\n\n\t\t\t\t\t// Advance the pointer.\n\t\t\t\t\tfor k := 0; k < code_length; k++ {\n\t\t\t\t\t\tskip(parser)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// It is a non-escaped non-blank character.\n\t\t\t\ts = read(parser, s)\n\t\t\t}\n\t\t\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\n\t\t// Check if we are at the end of the scalar.\n\t\tif single {\n\t\t\tif parser.buffer[parser.buffer_pos] == '\\'' {\n\t\t\t\tbreak\n\t\t\t}\n\t\t} else {\n\t\t\tif parser.buffer[parser.buffer_pos] == '\"' {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\t\t// Consume blank characters.\n\t\tfor is_blank(parser.buffer, parser.buffer_pos) || is_break(parser.buffer, parser.buffer_pos) {\n\t\t\tif is_blank(parser.buffer, parser.buffer_pos) {\n\t\t\t\t// Consume a space or a tab character.\n\t\t\t\tif !leading_blanks {\n\t\t\t\t\twhitespaces = read(parser, whitespaces)\n\t\t\t\t} else {\n\t\t\t\t\tskip(parser)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\t\t// Check if it is a first line break.\n\t\t\t\tif !leading_blanks {\n\t\t\t\t\twhitespaces = whitespaces[:0]\n\t\t\t\t\tleading_break = read_line(parser, leading_break)\n\t\t\t\t\tleading_blanks = true\n\t\t\t\t} else {\n\t\t\t\t\ttrailing_breaks = read_line(parser, trailing_breaks)\n\t\t\t\t}\n\t\t\t}\n\t\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\t// Join the whitespaces or fold line breaks.\n\t\tif leading_blanks {\n\t\t\t// Do we need to fold line breaks?\n\t\t\tif len(leading_break) > 0 && leading_break[0] == '\\n' {\n\t\t\t\tif len(trailing_breaks) == 0 {\n\t\t\t\t\ts = append(s, ' ')\n\t\t\t\t} else {\n\t\t\t\t\ts = append(s, trailing_breaks...)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\ts = append(s, leading_break...)\n\t\t\t\ts = append(s, trailing_breaks...)\n\t\t\t}\n\t\t\ttrailing_breaks = trailing_breaks[:0]\n\t\t\tleading_break = leading_break[:0]\n\t\t} else {\n\t\t\ts = append(s, whitespaces...)\n\t\t\twhitespaces = whitespaces[:0]\n\t\t}\n\t}\n\n\t// Eat the right quote.\n\tskip(parser)\n\tend_mark := parser.mark\n\n\t// Create a token.\n\t*token = yaml_token_t{\n\t\ttyp:        yaml_SCALAR_TOKEN,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t\tvalue:      s,\n\t\tstyle:      yaml_SINGLE_QUOTED_SCALAR_STYLE,\n\t}\n\tif !single {\n\t\ttoken.style = yaml_DOUBLE_QUOTED_SCALAR_STYLE\n\t}\n\treturn true\n}\n\n// Scan a plain scalar.\nfunc yaml_parser_scan_plain_scalar(parser *yaml_parser_t, token *yaml_token_t) bool {\n\n\tvar s, leading_break, trailing_breaks, whitespaces []byte\n\tvar leading_blanks bool\n\tvar indent = parser.indent + 1\n\n\tstart_mark := parser.mark\n\tend_mark := parser.mark\n\n\t// Consume the content of the plain scalar.\n\tfor {\n\t\t// Check for a document indicator.\n\t\tif parser.unread < 4 && !yaml_parser_update_buffer(parser, 4) {\n\t\t\treturn false\n\t\t}\n\t\tif parser.mark.column == 0 &&\n\t\t\t((parser.buffer[parser.buffer_pos+0] == '-' &&\n\t\t\t\tparser.buffer[parser.buffer_pos+1] == '-' &&\n\t\t\t\tparser.buffer[parser.buffer_pos+2] == '-') ||\n\t\t\t\t(parser.buffer[parser.buffer_pos+0] == '.' &&\n\t\t\t\t\tparser.buffer[parser.buffer_pos+1] == '.' &&\n\t\t\t\t\tparser.buffer[parser.buffer_pos+2] == '.')) &&\n\t\t\tis_blankz(parser.buffer, parser.buffer_pos+3) {\n\t\t\tbreak\n\t\t}\n\n\t\t// Check for a comment.\n\t\tif parser.buffer[parser.buffer_pos] == '#' {\n\t\t\tbreak\n\t\t}\n\n\t\t// Consume non-blank characters.\n\t\tfor !is_blankz(parser.buffer, parser.buffer_pos) {\n\n\t\t\t// Check for indicators that may end a plain scalar.\n\t\t\tif (parser.buffer[parser.buffer_pos] == ':' && is_blankz(parser.buffer, parser.buffer_pos+1)) ||\n\t\t\t\t(parser.flow_level > 0 &&\n\t\t\t\t\t(parser.buffer[parser.buffer_pos] == ',' ||\n\t\t\t\t\t\tparser.buffer[parser.buffer_pos] == '?' || parser.buffer[parser.buffer_pos] == '[' ||\n\t\t\t\t\t\tparser.buffer[parser.buffer_pos] == ']' || parser.buffer[parser.buffer_pos] == '{' ||\n\t\t\t\t\t\tparser.buffer[parser.buffer_pos] == '}')) {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\t// Check if we need to join whitespaces and breaks.\n\t\t\tif leading_blanks || len(whitespaces) > 0 {\n\t\t\t\tif leading_blanks {\n\t\t\t\t\t// Do we need to fold line breaks?\n\t\t\t\t\tif leading_break[0] == '\\n' {\n\t\t\t\t\t\tif len(trailing_breaks) == 0 {\n\t\t\t\t\t\t\ts = append(s, ' ')\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ts = append(s, trailing_breaks...)\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\ts = append(s, leading_break...)\n\t\t\t\t\t\ts = append(s, trailing_breaks...)\n\t\t\t\t\t}\n\t\t\t\t\ttrailing_breaks = trailing_breaks[:0]\n\t\t\t\t\tleading_break = leading_break[:0]\n\t\t\t\t\tleading_blanks = false\n\t\t\t\t} else {\n\t\t\t\t\ts = append(s, whitespaces...)\n\t\t\t\t\twhitespaces = whitespaces[:0]\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Copy the character.\n\t\t\ts = read(parser, s)\n\n\t\t\tend_mark = parser.mark\n\t\t\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\t// Is it the end?\n\t\tif !(is_blank(parser.buffer, parser.buffer_pos) || is_break(parser.buffer, parser.buffer_pos)) {\n\t\t\tbreak\n\t\t}\n\n\t\t// Consume blank characters.\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\n\t\tfor is_blank(parser.buffer, parser.buffer_pos) || is_break(parser.buffer, parser.buffer_pos) {\n\t\t\tif is_blank(parser.buffer, parser.buffer_pos) {\n\n\t\t\t\t// Check for tab characters that abuse indentation.\n\t\t\t\tif leading_blanks && parser.mark.column < indent && is_tab(parser.buffer, parser.buffer_pos) {\n\t\t\t\t\tyaml_parser_set_scanner_error(parser, \"while scanning a plain scalar\",\n\t\t\t\t\t\tstart_mark, \"found a tab character that violates indentation\")\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\t\t// Consume a space or a tab character.\n\t\t\t\tif !leading_blanks {\n\t\t\t\t\twhitespaces = read(parser, whitespaces)\n\t\t\t\t} else {\n\t\t\t\t\tskip(parser)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\t\t// Check if it is a first line break.\n\t\t\t\tif !leading_blanks {\n\t\t\t\t\twhitespaces = whitespaces[:0]\n\t\t\t\t\tleading_break = read_line(parser, leading_break)\n\t\t\t\t\tleading_blanks = true\n\t\t\t\t} else {\n\t\t\t\t\ttrailing_breaks = read_line(parser, trailing_breaks)\n\t\t\t\t}\n\t\t\t}\n\t\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\t// Check indentation level.\n\t\tif parser.flow_level == 0 && parser.mark.column < indent {\n\t\t\tbreak\n\t\t}\n\t}\n\n\t// Create a token.\n\t*token = yaml_token_t{\n\t\ttyp:        yaml_SCALAR_TOKEN,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t\tvalue:      s,\n\t\tstyle:      yaml_PLAIN_SCALAR_STYLE,\n\t}\n\n\t// Note that we change the 'simple_key_allowed' flag.\n\tif leading_blanks {\n\t\tparser.simple_key_allowed = true\n\t}\n\treturn true\n}\n\nfunc yaml_parser_scan_line_comment(parser *yaml_parser_t, token_mark yaml_mark_t) bool {\n\tif parser.newlines > 0 {\n\t\treturn true\n\t}\n\n\tvar start_mark yaml_mark_t\n\tvar text []byte\n\n\tfor peek := 0; peek < 512; peek++ {\n\t\tif parser.unread < peek+1 && !yaml_parser_update_buffer(parser, peek+1) {\n\t\t\tbreak\n\t\t}\n\t\tif is_blank(parser.buffer, parser.buffer_pos+peek) {\n\t\t\tcontinue\n\t\t}\n\t\tif parser.buffer[parser.buffer_pos+peek] == '#' {\n\t\t\tseen := parser.mark.index+peek\n\t\t\tfor {\n\t\t\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tif is_breakz(parser.buffer, parser.buffer_pos) {\n\t\t\t\t\tif parser.mark.index >= seen {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t\tskip_line(parser)\n\t\t\t\t} else if parser.mark.index >= seen {\n\t\t\t\t\tif len(text) == 0 {\n\t\t\t\t\t\tstart_mark = parser.mark\n\t\t\t\t\t}\n\t\t\t\t\ttext = read(parser, text)\n\t\t\t\t} else {\n\t\t\t\t\tskip(parser)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tbreak\n\t}\n\tif len(text) > 0 {\n\t\tparser.comments = append(parser.comments, yaml_comment_t{\n\t\t\ttoken_mark: token_mark,\n\t\t\tstart_mark: start_mark,\n\t\t\tline: text,\n\t\t})\n\t}\n\treturn true\n}\n\nfunc yaml_parser_scan_comments(parser *yaml_parser_t, scan_mark yaml_mark_t) bool {\n\ttoken := parser.tokens[len(parser.tokens)-1]\n\n\tif token.typ == yaml_FLOW_ENTRY_TOKEN && len(parser.tokens) > 1 {\n\t\ttoken = parser.tokens[len(parser.tokens)-2]\n\t}\n\n\tvar token_mark = token.start_mark\n\tvar start_mark yaml_mark_t\n\tvar next_indent = parser.indent\n\tif next_indent < 0 {\n\t\tnext_indent = 0\n\t}\n\n\tvar recent_empty = false\n\tvar first_empty = parser.newlines <= 1\n\n\tvar line = parser.mark.line\n\tvar column = parser.mark.column\n\n\tvar text []byte\n\n\t// The foot line is the place where a comment must start to\n\t// still be considered as a foot of the prior content.\n\t// If there's some content in the currently parsed line, then\n\t// the foot is the line below it.\n\tvar foot_line = -1\n\tif scan_mark.line > 0 {\n\t\tfoot_line = parser.mark.line-parser.newlines+1\n\t\tif parser.newlines == 0 && parser.mark.column > 1 {\n\t\t\tfoot_line++\n\t\t}\n\t}\n\n\tvar peek = 0\n\tfor ; peek < 512; peek++ {\n\t\tif parser.unread < peek+1 && !yaml_parser_update_buffer(parser, peek+1) {\n\t\t\tbreak\n\t\t}\n\t\tcolumn++\n\t\tif is_blank(parser.buffer, parser.buffer_pos+peek) {\n\t\t\tcontinue\n\t\t}\n\t\tc := parser.buffer[parser.buffer_pos+peek]\n\t\tvar close_flow = parser.flow_level > 0 && (c == ']' || c == '}')\n\t\tif close_flow || is_breakz(parser.buffer, parser.buffer_pos+peek) {\n\t\t\t// Got line break or terminator.\n\t\t\tif close_flow || !recent_empty {\n\t\t\t\tif close_flow || first_empty && (start_mark.line == foot_line && token.typ != yaml_VALUE_TOKEN || start_mark.column-1 < next_indent) {\n\t\t\t\t\t// This is the first empty line and there were no empty lines before,\n\t\t\t\t\t// so this initial part of the comment is a foot of the prior token\n\t\t\t\t\t// instead of being a head for the following one. Split it up.\n\t\t\t\t\t// Alternatively, this might also be the last comment inside a flow\n\t\t\t\t\t// scope, so it must be a footer.\n\t\t\t\t\tif len(text) > 0 {\n\t\t\t\t\t\tif start_mark.column-1 < next_indent {\n\t\t\t\t\t\t\t// If dedented it's unrelated to the prior token.\n\t\t\t\t\t\t\ttoken_mark = start_mark\n\t\t\t\t\t\t}\n\t\t\t\t\t\tparser.comments = append(parser.comments, yaml_comment_t{\n\t\t\t\t\t\t\tscan_mark:  scan_mark,\n\t\t\t\t\t\t\ttoken_mark: token_mark,\n\t\t\t\t\t\t\tstart_mark: start_mark,\n\t\t\t\t\t\t\tend_mark:   yaml_mark_t{parser.mark.index + peek, line, column},\n\t\t\t\t\t\t\tfoot:       text,\n\t\t\t\t\t\t})\n\t\t\t\t\t\tscan_mark = yaml_mark_t{parser.mark.index + peek, line, column}\n\t\t\t\t\t\ttoken_mark = scan_mark\n\t\t\t\t\t\ttext = nil\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif len(text) > 0 && parser.buffer[parser.buffer_pos+peek] != 0 {\n\t\t\t\t\t\ttext = append(text, '\\n')\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !is_break(parser.buffer, parser.buffer_pos+peek) {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tfirst_empty = false\n\t\t\trecent_empty = true\n\t\t\tcolumn = 0\n\t\t\tline++\n\t\t\tcontinue\n\t\t}\n\n\t\tif len(text) > 0 && (close_flow || column-1 < next_indent && column != start_mark.column) {\n\t\t\t// The comment at the different indentation is a foot of the\n\t\t\t// preceding data rather than a head of the upcoming one.\n\t\t\tparser.comments = append(parser.comments, yaml_comment_t{\n\t\t\t\tscan_mark:  scan_mark,\n\t\t\t\ttoken_mark: token_mark,\n\t\t\t\tstart_mark: start_mark,\n\t\t\t\tend_mark:   yaml_mark_t{parser.mark.index + peek, line, column},\n\t\t\t\tfoot:       text,\n\t\t\t})\n\t\t\tscan_mark = yaml_mark_t{parser.mark.index + peek, line, column}\n\t\t\ttoken_mark = scan_mark\n\t\t\ttext = nil\n\t\t}\n\n\t\tif parser.buffer[parser.buffer_pos+peek] != '#' {\n\t\t\tbreak\n\t\t}\n\n\t\tif len(text) == 0 {\n\t\t\tstart_mark = yaml_mark_t{parser.mark.index + peek, line, column}\n\t\t} else {\n\t\t\ttext = append(text, '\\n')\n\t\t}\n\n\t\trecent_empty = false\n\n\t\t// Consume until after the consumed comment line.\n\t\tseen := parser.mark.index+peek\n\t\tfor {\n\t\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif is_breakz(parser.buffer, parser.buffer_pos) {\n\t\t\t\tif parser.mark.index >= seen {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tskip_line(parser)\n\t\t\t} else if parser.mark.index >= seen {\n\t\t\t\ttext = read(parser, text)\n\t\t\t} else {\n\t\t\t\tskip(parser)\n\t\t\t}\n\t\t}\n\n\t\tpeek = 0\n\t\tcolumn = 0\n\t\tline = parser.mark.line\n\t\tnext_indent = parser.indent\n\t\tif next_indent < 0 {\n\t\t\tnext_indent = 0\n\t\t}\n\t}\n\n\tif len(text) > 0 {\n\t\tparser.comments = append(parser.comments, yaml_comment_t{\n\t\t\tscan_mark:  scan_mark,\n\t\t\ttoken_mark: start_mark,\n\t\t\tstart_mark: start_mark,\n\t\t\tend_mark:   yaml_mark_t{parser.mark.index + peek - 1, line, column},\n\t\t\thead:       text,\n\t\t})\n\t}\n\treturn true\n}\n"
  },
  {
    "path": "vendor/gopkg.in/yaml.v3/sorter.go",
    "content": "//\n// Copyright (c) 2011-2019 Canonical Ltd\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage yaml\n\nimport (\n\t\"reflect\"\n\t\"unicode\"\n)\n\ntype keyList []reflect.Value\n\nfunc (l keyList) Len() int      { return len(l) }\nfunc (l keyList) Swap(i, j int) { l[i], l[j] = l[j], l[i] }\nfunc (l keyList) Less(i, j int) bool {\n\ta := l[i]\n\tb := l[j]\n\tak := a.Kind()\n\tbk := b.Kind()\n\tfor (ak == reflect.Interface || ak == reflect.Ptr) && !a.IsNil() {\n\t\ta = a.Elem()\n\t\tak = a.Kind()\n\t}\n\tfor (bk == reflect.Interface || bk == reflect.Ptr) && !b.IsNil() {\n\t\tb = b.Elem()\n\t\tbk = b.Kind()\n\t}\n\taf, aok := keyFloat(a)\n\tbf, bok := keyFloat(b)\n\tif aok && bok {\n\t\tif af != bf {\n\t\t\treturn af < bf\n\t\t}\n\t\tif ak != bk {\n\t\t\treturn ak < bk\n\t\t}\n\t\treturn numLess(a, b)\n\t}\n\tif ak != reflect.String || bk != reflect.String {\n\t\treturn ak < bk\n\t}\n\tar, br := []rune(a.String()), []rune(b.String())\n\tdigits := false\n\tfor i := 0; i < len(ar) && i < len(br); i++ {\n\t\tif ar[i] == br[i] {\n\t\t\tdigits = unicode.IsDigit(ar[i])\n\t\t\tcontinue\n\t\t}\n\t\tal := unicode.IsLetter(ar[i])\n\t\tbl := unicode.IsLetter(br[i])\n\t\tif al && bl {\n\t\t\treturn ar[i] < br[i]\n\t\t}\n\t\tif al || bl {\n\t\t\tif digits {\n\t\t\t\treturn al\n\t\t\t} else {\n\t\t\t\treturn bl\n\t\t\t}\n\t\t}\n\t\tvar ai, bi int\n\t\tvar an, bn int64\n\t\tif ar[i] == '0' || br[i] == '0' {\n\t\t\tfor j := i - 1; j >= 0 && unicode.IsDigit(ar[j]); j-- {\n\t\t\t\tif ar[j] != '0' {\n\t\t\t\t\tan = 1\n\t\t\t\t\tbn = 1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfor ai = i; ai < len(ar) && unicode.IsDigit(ar[ai]); ai++ {\n\t\t\tan = an*10 + int64(ar[ai]-'0')\n\t\t}\n\t\tfor bi = i; bi < len(br) && unicode.IsDigit(br[bi]); bi++ {\n\t\t\tbn = bn*10 + int64(br[bi]-'0')\n\t\t}\n\t\tif an != bn {\n\t\t\treturn an < bn\n\t\t}\n\t\tif ai != bi {\n\t\t\treturn ai < bi\n\t\t}\n\t\treturn ar[i] < br[i]\n\t}\n\treturn len(ar) < len(br)\n}\n\n// keyFloat returns a float value for v if it is a number/bool\n// and whether it is a number/bool or not.\nfunc keyFloat(v reflect.Value) (f float64, ok bool) {\n\tswitch v.Kind() {\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\treturn float64(v.Int()), true\n\tcase reflect.Float32, reflect.Float64:\n\t\treturn v.Float(), true\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\treturn float64(v.Uint()), true\n\tcase reflect.Bool:\n\t\tif v.Bool() {\n\t\t\treturn 1, true\n\t\t}\n\t\treturn 0, true\n\t}\n\treturn 0, false\n}\n\n// numLess returns whether a < b.\n// a and b must necessarily have the same kind.\nfunc numLess(a, b reflect.Value) bool {\n\tswitch a.Kind() {\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\treturn a.Int() < b.Int()\n\tcase reflect.Float32, reflect.Float64:\n\t\treturn a.Float() < b.Float()\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\treturn a.Uint() < b.Uint()\n\tcase reflect.Bool:\n\t\treturn !a.Bool() && b.Bool()\n\t}\n\tpanic(\"not a number\")\n}\n"
  },
  {
    "path": "vendor/gopkg.in/yaml.v3/writerc.go",
    "content": "// \n// Copyright (c) 2011-2019 Canonical Ltd\n// Copyright (c) 2006-2010 Kirill Simonov\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.\n\npackage yaml\n\n// Set the writer error and return false.\nfunc yaml_emitter_set_writer_error(emitter *yaml_emitter_t, problem string) bool {\n\temitter.error = yaml_WRITER_ERROR\n\temitter.problem = problem\n\treturn false\n}\n\n// Flush the output buffer.\nfunc yaml_emitter_flush(emitter *yaml_emitter_t) bool {\n\tif emitter.write_handler == nil {\n\t\tpanic(\"write handler not set\")\n\t}\n\n\t// Check if the buffer is empty.\n\tif emitter.buffer_pos == 0 {\n\t\treturn true\n\t}\n\n\tif err := emitter.write_handler(emitter, emitter.buffer[:emitter.buffer_pos]); err != nil {\n\t\treturn yaml_emitter_set_writer_error(emitter, \"write error: \"+err.Error())\n\t}\n\temitter.buffer_pos = 0\n\treturn true\n}\n"
  },
  {
    "path": "vendor/gopkg.in/yaml.v3/yaml.go",
    "content": "//\n// Copyright (c) 2011-2019 Canonical Ltd\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package yaml implements YAML support for the Go language.\n//\n// Source code and other details for the project are available at GitHub:\n//\n//   https://github.com/go-yaml/yaml\n//\npackage yaml\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"reflect\"\n\t\"strings\"\n\t\"sync\"\n\t\"unicode/utf8\"\n)\n\n// The Unmarshaler interface may be implemented by types to customize their\n// behavior when being unmarshaled from a YAML document.\ntype Unmarshaler interface {\n\tUnmarshalYAML(value *Node) error\n}\n\ntype obsoleteUnmarshaler interface {\n\tUnmarshalYAML(unmarshal func(interface{}) error) error\n}\n\n// The Marshaler interface may be implemented by types to customize their\n// behavior when being marshaled into a YAML document. The returned value\n// is marshaled in place of the original value implementing Marshaler.\n//\n// If an error is returned by MarshalYAML, the marshaling procedure stops\n// and returns with the provided error.\ntype Marshaler interface {\n\tMarshalYAML() (interface{}, error)\n}\n\n// Unmarshal decodes the first document found within the in byte slice\n// and assigns decoded values into the out value.\n//\n// Maps and pointers (to a struct, string, int, etc) are accepted as out\n// values. If an internal pointer within a struct is not initialized,\n// the yaml package will initialize it if necessary for unmarshalling\n// the provided data. The out parameter must not be nil.\n//\n// The type of the decoded values should be compatible with the respective\n// values in out. If one or more values cannot be decoded due to a type\n// mismatches, decoding continues partially until the end of the YAML\n// content, and a *yaml.TypeError is returned with details for all\n// missed values.\n//\n// Struct fields are only unmarshalled if they are exported (have an\n// upper case first letter), and are unmarshalled using the field name\n// lowercased as the default key. Custom keys may be defined via the\n// \"yaml\" name in the field tag: the content preceding the first comma\n// is used as the key, and the following comma-separated options are\n// used to tweak the marshalling process (see Marshal).\n// Conflicting names result in a runtime error.\n//\n// For example:\n//\n//     type T struct {\n//         F int `yaml:\"a,omitempty\"`\n//         B int\n//     }\n//     var t T\n//     yaml.Unmarshal([]byte(\"a: 1\\nb: 2\"), &t)\n//\n// See the documentation of Marshal for the format of tags and a list of\n// supported tag options.\n//\nfunc Unmarshal(in []byte, out interface{}) (err error) {\n\treturn unmarshal(in, out, false)\n}\n\n// A Decoder reads and decodes YAML values from an input stream.\ntype Decoder struct {\n\tparser      *parser\n\tknownFields bool\n}\n\n// NewDecoder returns a new decoder that reads from r.\n//\n// The decoder introduces its own buffering and may read\n// data from r beyond the YAML values requested.\nfunc NewDecoder(r io.Reader) *Decoder {\n\treturn &Decoder{\n\t\tparser: newParserFromReader(r),\n\t}\n}\n\n// KnownFields ensures that the keys in decoded mappings to\n// exist as fields in the struct being decoded into.\nfunc (dec *Decoder) KnownFields(enable bool) {\n\tdec.knownFields = enable\n}\n\n// Decode reads the next YAML-encoded value from its input\n// and stores it in the value pointed to by v.\n//\n// See the documentation for Unmarshal for details about the\n// conversion of YAML into a Go value.\nfunc (dec *Decoder) Decode(v interface{}) (err error) {\n\td := newDecoder()\n\td.knownFields = dec.knownFields\n\tdefer handleErr(&err)\n\tnode := dec.parser.parse()\n\tif node == nil {\n\t\treturn io.EOF\n\t}\n\tout := reflect.ValueOf(v)\n\tif out.Kind() == reflect.Ptr && !out.IsNil() {\n\t\tout = out.Elem()\n\t}\n\td.unmarshal(node, out)\n\tif len(d.terrors) > 0 {\n\t\treturn &TypeError{d.terrors}\n\t}\n\treturn nil\n}\n\n// Decode decodes the node and stores its data into the value pointed to by v.\n//\n// See the documentation for Unmarshal for details about the\n// conversion of YAML into a Go value.\nfunc (n *Node) Decode(v interface{}) (err error) {\n\td := newDecoder()\n\tdefer handleErr(&err)\n\tout := reflect.ValueOf(v)\n\tif out.Kind() == reflect.Ptr && !out.IsNil() {\n\t\tout = out.Elem()\n\t}\n\td.unmarshal(n, out)\n\tif len(d.terrors) > 0 {\n\t\treturn &TypeError{d.terrors}\n\t}\n\treturn nil\n}\n\nfunc unmarshal(in []byte, out interface{}, strict bool) (err error) {\n\tdefer handleErr(&err)\n\td := newDecoder()\n\tp := newParser(in)\n\tdefer p.destroy()\n\tnode := p.parse()\n\tif node != nil {\n\t\tv := reflect.ValueOf(out)\n\t\tif v.Kind() == reflect.Ptr && !v.IsNil() {\n\t\t\tv = v.Elem()\n\t\t}\n\t\td.unmarshal(node, v)\n\t}\n\tif len(d.terrors) > 0 {\n\t\treturn &TypeError{d.terrors}\n\t}\n\treturn nil\n}\n\n// Marshal serializes the value provided into a YAML document. The structure\n// of the generated document will reflect the structure of the value itself.\n// Maps and pointers (to struct, string, int, etc) are accepted as the in value.\n//\n// Struct fields are only marshalled if they are exported (have an upper case\n// first letter), and are marshalled using the field name lowercased as the\n// default key. Custom keys may be defined via the \"yaml\" name in the field\n// tag: the content preceding the first comma is used as the key, and the\n// following comma-separated options are used to tweak the marshalling process.\n// Conflicting names result in a runtime error.\n//\n// The field tag format accepted is:\n//\n//     `(...) yaml:\"[<key>][,<flag1>[,<flag2>]]\" (...)`\n//\n// The following flags are currently supported:\n//\n//     omitempty    Only include the field if it's not set to the zero\n//                  value for the type or to empty slices or maps.\n//                  Zero valued structs will be omitted if all their public\n//                  fields are zero, unless they implement an IsZero\n//                  method (see the IsZeroer interface type), in which\n//                  case the field will be excluded if IsZero returns true.\n//\n//     flow         Marshal using a flow style (useful for structs,\n//                  sequences and maps).\n//\n//     inline       Inline the field, which must be a struct or a map,\n//                  causing all of its fields or keys to be processed as if\n//                  they were part of the outer struct. For maps, keys must\n//                  not conflict with the yaml keys of other struct fields.\n//\n// In addition, if the key is \"-\", the field is ignored.\n//\n// For example:\n//\n//     type T struct {\n//         F int `yaml:\"a,omitempty\"`\n//         B int\n//     }\n//     yaml.Marshal(&T{B: 2}) // Returns \"b: 2\\n\"\n//     yaml.Marshal(&T{F: 1}} // Returns \"a: 1\\nb: 0\\n\"\n//\nfunc Marshal(in interface{}) (out []byte, err error) {\n\tdefer handleErr(&err)\n\te := newEncoder()\n\tdefer e.destroy()\n\te.marshalDoc(\"\", reflect.ValueOf(in))\n\te.finish()\n\tout = e.out\n\treturn\n}\n\n// An Encoder writes YAML values to an output stream.\ntype Encoder struct {\n\tencoder *encoder\n}\n\n// NewEncoder returns a new encoder that writes to w.\n// The Encoder should be closed after use to flush all data\n// to w.\nfunc NewEncoder(w io.Writer) *Encoder {\n\treturn &Encoder{\n\t\tencoder: newEncoderWithWriter(w),\n\t}\n}\n\n// Encode writes the YAML encoding of v to the stream.\n// If multiple items are encoded to the stream, the\n// second and subsequent document will be preceded\n// with a \"---\" document separator, but the first will not.\n//\n// See the documentation for Marshal for details about the conversion of Go\n// values to YAML.\nfunc (e *Encoder) Encode(v interface{}) (err error) {\n\tdefer handleErr(&err)\n\te.encoder.marshalDoc(\"\", reflect.ValueOf(v))\n\treturn nil\n}\n\n// Encode encodes value v and stores its representation in n.\n//\n// See the documentation for Marshal for details about the\n// conversion of Go values into YAML.\nfunc (n *Node) Encode(v interface{}) (err error) {\n\tdefer handleErr(&err)\n\te := newEncoder()\n\tdefer e.destroy()\n\te.marshalDoc(\"\", reflect.ValueOf(v))\n\te.finish()\n\tp := newParser(e.out)\n\tp.textless = true\n\tdefer p.destroy()\n\tdoc := p.parse()\n\t*n = *doc.Content[0]\n\treturn nil\n}\n\n// SetIndent changes the used indentation used when encoding.\nfunc (e *Encoder) SetIndent(spaces int) {\n\tif spaces < 0 {\n\t\tpanic(\"yaml: cannot indent to a negative number of spaces\")\n\t}\n\te.encoder.indent = spaces\n}\n\n// Close closes the encoder by writing any remaining data.\n// It does not write a stream terminating string \"...\".\nfunc (e *Encoder) Close() (err error) {\n\tdefer handleErr(&err)\n\te.encoder.finish()\n\treturn nil\n}\n\nfunc handleErr(err *error) {\n\tif v := recover(); v != nil {\n\t\tif e, ok := v.(yamlError); ok {\n\t\t\t*err = e.err\n\t\t} else {\n\t\t\tpanic(v)\n\t\t}\n\t}\n}\n\ntype yamlError struct {\n\terr error\n}\n\nfunc fail(err error) {\n\tpanic(yamlError{err})\n}\n\nfunc failf(format string, args ...interface{}) {\n\tpanic(yamlError{fmt.Errorf(\"yaml: \"+format, args...)})\n}\n\n// A TypeError is returned by Unmarshal when one or more fields in\n// the YAML document cannot be properly decoded into the requested\n// types. When this error is returned, the value is still\n// unmarshaled partially.\ntype TypeError struct {\n\tErrors []string\n}\n\nfunc (e *TypeError) Error() string {\n\treturn fmt.Sprintf(\"yaml: unmarshal errors:\\n  %s\", strings.Join(e.Errors, \"\\n  \"))\n}\n\ntype Kind uint32\n\nconst (\n\tDocumentNode Kind = 1 << iota\n\tSequenceNode\n\tMappingNode\n\tScalarNode\n\tAliasNode\n)\n\ntype Style uint32\n\nconst (\n\tTaggedStyle Style = 1 << iota\n\tDoubleQuotedStyle\n\tSingleQuotedStyle\n\tLiteralStyle\n\tFoldedStyle\n\tFlowStyle\n)\n\n// Node represents an element in the YAML document hierarchy. While documents\n// are typically encoded and decoded into higher level types, such as structs\n// and maps, Node is an intermediate representation that allows detailed\n// control over the content being decoded or encoded.\n//\n// It's worth noting that although Node offers access into details such as\n// line numbers, colums, and comments, the content when re-encoded will not\n// have its original textual representation preserved. An effort is made to\n// render the data plesantly, and to preserve comments near the data they\n// describe, though.\n//\n// Values that make use of the Node type interact with the yaml package in the\n// same way any other type would do, by encoding and decoding yaml data\n// directly or indirectly into them.\n//\n// For example:\n//\n//     var person struct {\n//             Name    string\n//             Address yaml.Node\n//     }\n//     err := yaml.Unmarshal(data, &person)\n// \n// Or by itself:\n//\n//     var person Node\n//     err := yaml.Unmarshal(data, &person)\n//\ntype Node struct {\n\t// Kind defines whether the node is a document, a mapping, a sequence,\n\t// a scalar value, or an alias to another node. The specific data type of\n\t// scalar nodes may be obtained via the ShortTag and LongTag methods.\n\tKind  Kind\n\n\t// Style allows customizing the apperance of the node in the tree.\n\tStyle Style\n\n\t// Tag holds the YAML tag defining the data type for the value.\n\t// When decoding, this field will always be set to the resolved tag,\n\t// even when it wasn't explicitly provided in the YAML content.\n\t// When encoding, if this field is unset the value type will be\n\t// implied from the node properties, and if it is set, it will only\n\t// be serialized into the representation if TaggedStyle is used or\n\t// the implicit tag diverges from the provided one.\n\tTag string\n\n\t// Value holds the unescaped and unquoted represenation of the value.\n\tValue string\n\n\t// Anchor holds the anchor name for this node, which allows aliases to point to it.\n\tAnchor string\n\n\t// Alias holds the node that this alias points to. Only valid when Kind is AliasNode.\n\tAlias *Node\n\n\t// Content holds contained nodes for documents, mappings, and sequences.\n\tContent []*Node\n\n\t// HeadComment holds any comments in the lines preceding the node and\n\t// not separated by an empty line.\n\tHeadComment string\n\n\t// LineComment holds any comments at the end of the line where the node is in.\n\tLineComment string\n\n\t// FootComment holds any comments following the node and before empty lines.\n\tFootComment string\n\n\t// Line and Column hold the node position in the decoded YAML text.\n\t// These fields are not respected when encoding the node.\n\tLine   int\n\tColumn int\n}\n\n// IsZero returns whether the node has all of its fields unset.\nfunc (n *Node) IsZero() bool {\n\treturn n.Kind == 0 && n.Style == 0 && n.Tag == \"\" && n.Value == \"\" && n.Anchor == \"\" && n.Alias == nil && n.Content == nil &&\n\t\tn.HeadComment == \"\" && n.LineComment == \"\" && n.FootComment == \"\" && n.Line == 0 && n.Column == 0\n}\n\n\n// LongTag returns the long form of the tag that indicates the data type for\n// the node. If the Tag field isn't explicitly defined, one will be computed\n// based on the node properties.\nfunc (n *Node) LongTag() string {\n\treturn longTag(n.ShortTag())\n}\n\n// ShortTag returns the short form of the YAML tag that indicates data type for\n// the node. If the Tag field isn't explicitly defined, one will be computed\n// based on the node properties.\nfunc (n *Node) ShortTag() string {\n\tif n.indicatedString() {\n\t\treturn strTag\n\t}\n\tif n.Tag == \"\" || n.Tag == \"!\" {\n\t\tswitch n.Kind {\n\t\tcase MappingNode:\n\t\t\treturn mapTag\n\t\tcase SequenceNode:\n\t\t\treturn seqTag\n\t\tcase AliasNode:\n\t\t\tif n.Alias != nil {\n\t\t\t\treturn n.Alias.ShortTag()\n\t\t\t}\n\t\tcase ScalarNode:\n\t\t\ttag, _ := resolve(\"\", n.Value)\n\t\t\treturn tag\n\t\tcase 0:\n\t\t\t// Special case to make the zero value convenient.\n\t\t\tif n.IsZero() {\n\t\t\t\treturn nullTag\n\t\t\t}\n\t\t}\n\t\treturn \"\"\n\t}\n\treturn shortTag(n.Tag)\n}\n\nfunc (n *Node) indicatedString() bool {\n\treturn n.Kind == ScalarNode &&\n\t\t(shortTag(n.Tag) == strTag ||\n\t\t\t(n.Tag == \"\" || n.Tag == \"!\") && n.Style&(SingleQuotedStyle|DoubleQuotedStyle|LiteralStyle|FoldedStyle) != 0)\n}\n\n// SetString is a convenience function that sets the node to a string value\n// and defines its style in a pleasant way depending on its content.\nfunc (n *Node) SetString(s string) {\n\tn.Kind = ScalarNode\n\tif utf8.ValidString(s) {\n\t\tn.Value = s\n\t\tn.Tag = strTag\n\t} else {\n\t\tn.Value = encodeBase64(s)\n\t\tn.Tag = binaryTag\n\t}\n\tif strings.Contains(n.Value, \"\\n\") {\n\t\tn.Style = LiteralStyle\n\t}\n}\n\n// --------------------------------------------------------------------------\n// Maintain a mapping of keys to structure field indexes\n\n// The code in this section was copied from mgo/bson.\n\n// structInfo holds details for the serialization of fields of\n// a given struct.\ntype structInfo struct {\n\tFieldsMap  map[string]fieldInfo\n\tFieldsList []fieldInfo\n\n\t// InlineMap is the number of the field in the struct that\n\t// contains an ,inline map, or -1 if there's none.\n\tInlineMap int\n\n\t// InlineUnmarshalers holds indexes to inlined fields that\n\t// contain unmarshaler values.\n\tInlineUnmarshalers [][]int\n}\n\ntype fieldInfo struct {\n\tKey       string\n\tNum       int\n\tOmitEmpty bool\n\tFlow      bool\n\t// Id holds the unique field identifier, so we can cheaply\n\t// check for field duplicates without maintaining an extra map.\n\tId int\n\n\t// Inline holds the field index if the field is part of an inlined struct.\n\tInline []int\n}\n\nvar structMap = make(map[reflect.Type]*structInfo)\nvar fieldMapMutex sync.RWMutex\nvar unmarshalerType reflect.Type\n\nfunc init() {\n\tvar v Unmarshaler\n\tunmarshalerType = reflect.ValueOf(&v).Elem().Type()\n}\n\nfunc getStructInfo(st reflect.Type) (*structInfo, error) {\n\tfieldMapMutex.RLock()\n\tsinfo, found := structMap[st]\n\tfieldMapMutex.RUnlock()\n\tif found {\n\t\treturn sinfo, nil\n\t}\n\n\tn := st.NumField()\n\tfieldsMap := make(map[string]fieldInfo)\n\tfieldsList := make([]fieldInfo, 0, n)\n\tinlineMap := -1\n\tinlineUnmarshalers := [][]int(nil)\n\tfor i := 0; i != n; i++ {\n\t\tfield := st.Field(i)\n\t\tif field.PkgPath != \"\" && !field.Anonymous {\n\t\t\tcontinue // Private field\n\t\t}\n\n\t\tinfo := fieldInfo{Num: i}\n\n\t\ttag := field.Tag.Get(\"yaml\")\n\t\tif tag == \"\" && strings.Index(string(field.Tag), \":\") < 0 {\n\t\t\ttag = string(field.Tag)\n\t\t}\n\t\tif tag == \"-\" {\n\t\t\tcontinue\n\t\t}\n\n\t\tinline := false\n\t\tfields := strings.Split(tag, \",\")\n\t\tif len(fields) > 1 {\n\t\t\tfor _, flag := range fields[1:] {\n\t\t\t\tswitch flag {\n\t\t\t\tcase \"omitempty\":\n\t\t\t\t\tinfo.OmitEmpty = true\n\t\t\t\tcase \"flow\":\n\t\t\t\t\tinfo.Flow = true\n\t\t\t\tcase \"inline\":\n\t\t\t\t\tinline = true\n\t\t\t\tdefault:\n\t\t\t\t\treturn nil, errors.New(fmt.Sprintf(\"unsupported flag %q in tag %q of type %s\", flag, tag, st))\n\t\t\t\t}\n\t\t\t}\n\t\t\ttag = fields[0]\n\t\t}\n\n\t\tif inline {\n\t\t\tswitch field.Type.Kind() {\n\t\t\tcase reflect.Map:\n\t\t\t\tif inlineMap >= 0 {\n\t\t\t\t\treturn nil, errors.New(\"multiple ,inline maps in struct \" + st.String())\n\t\t\t\t}\n\t\t\t\tif field.Type.Key() != reflect.TypeOf(\"\") {\n\t\t\t\t\treturn nil, errors.New(\"option ,inline needs a map with string keys in struct \" + st.String())\n\t\t\t\t}\n\t\t\t\tinlineMap = info.Num\n\t\t\tcase reflect.Struct, reflect.Ptr:\n\t\t\t\tftype := field.Type\n\t\t\t\tfor ftype.Kind() == reflect.Ptr {\n\t\t\t\t\tftype = ftype.Elem()\n\t\t\t\t}\n\t\t\t\tif ftype.Kind() != reflect.Struct {\n\t\t\t\t\treturn nil, errors.New(\"option ,inline may only be used on a struct or map field\")\n\t\t\t\t}\n\t\t\t\tif reflect.PtrTo(ftype).Implements(unmarshalerType) {\n\t\t\t\t\tinlineUnmarshalers = append(inlineUnmarshalers, []int{i})\n\t\t\t\t} else {\n\t\t\t\t\tsinfo, err := getStructInfo(ftype)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn nil, err\n\t\t\t\t\t}\n\t\t\t\t\tfor _, index := range sinfo.InlineUnmarshalers {\n\t\t\t\t\t\tinlineUnmarshalers = append(inlineUnmarshalers, append([]int{i}, index...))\n\t\t\t\t\t}\n\t\t\t\t\tfor _, finfo := range sinfo.FieldsList {\n\t\t\t\t\t\tif _, found := fieldsMap[finfo.Key]; found {\n\t\t\t\t\t\t\tmsg := \"duplicated key '\" + finfo.Key + \"' in struct \" + st.String()\n\t\t\t\t\t\t\treturn nil, errors.New(msg)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif finfo.Inline == nil {\n\t\t\t\t\t\t\tfinfo.Inline = []int{i, finfo.Num}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfinfo.Inline = append([]int{i}, finfo.Inline...)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfinfo.Id = len(fieldsList)\n\t\t\t\t\t\tfieldsMap[finfo.Key] = finfo\n\t\t\t\t\t\tfieldsList = append(fieldsList, finfo)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\treturn nil, errors.New(\"option ,inline may only be used on a struct or map field\")\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\tif tag != \"\" {\n\t\t\tinfo.Key = tag\n\t\t} else {\n\t\t\tinfo.Key = strings.ToLower(field.Name)\n\t\t}\n\n\t\tif _, found = fieldsMap[info.Key]; found {\n\t\t\tmsg := \"duplicated key '\" + info.Key + \"' in struct \" + st.String()\n\t\t\treturn nil, errors.New(msg)\n\t\t}\n\n\t\tinfo.Id = len(fieldsList)\n\t\tfieldsList = append(fieldsList, info)\n\t\tfieldsMap[info.Key] = info\n\t}\n\n\tsinfo = &structInfo{\n\t\tFieldsMap:          fieldsMap,\n\t\tFieldsList:         fieldsList,\n\t\tInlineMap:          inlineMap,\n\t\tInlineUnmarshalers: inlineUnmarshalers,\n\t}\n\n\tfieldMapMutex.Lock()\n\tstructMap[st] = sinfo\n\tfieldMapMutex.Unlock()\n\treturn sinfo, nil\n}\n\n// IsZeroer is used to check whether an object is zero to\n// determine whether it should be omitted when marshaling\n// with the omitempty flag. One notable implementation\n// is time.Time.\ntype IsZeroer interface {\n\tIsZero() bool\n}\n\nfunc isZero(v reflect.Value) bool {\n\tkind := v.Kind()\n\tif z, ok := v.Interface().(IsZeroer); ok {\n\t\tif (kind == reflect.Ptr || kind == reflect.Interface) && v.IsNil() {\n\t\t\treturn true\n\t\t}\n\t\treturn z.IsZero()\n\t}\n\tswitch kind {\n\tcase reflect.String:\n\t\treturn len(v.String()) == 0\n\tcase reflect.Interface, reflect.Ptr:\n\t\treturn v.IsNil()\n\tcase reflect.Slice:\n\t\treturn v.Len() == 0\n\tcase reflect.Map:\n\t\treturn v.Len() == 0\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\treturn v.Int() == 0\n\tcase reflect.Float32, reflect.Float64:\n\t\treturn v.Float() == 0\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\treturn v.Uint() == 0\n\tcase reflect.Bool:\n\t\treturn !v.Bool()\n\tcase reflect.Struct:\n\t\tvt := v.Type()\n\t\tfor i := v.NumField() - 1; i >= 0; i-- {\n\t\t\tif vt.Field(i).PkgPath != \"\" {\n\t\t\t\tcontinue // Private field\n\t\t\t}\n\t\t\tif !isZero(v.Field(i)) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\treturn true\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "vendor/gopkg.in/yaml.v3/yamlh.go",
    "content": "//\n// Copyright (c) 2011-2019 Canonical Ltd\n// Copyright (c) 2006-2010 Kirill Simonov\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.\n\npackage yaml\n\nimport (\n\t\"fmt\"\n\t\"io\"\n)\n\n// The version directive data.\ntype yaml_version_directive_t struct {\n\tmajor int8 // The major version number.\n\tminor int8 // The minor version number.\n}\n\n// The tag directive data.\ntype yaml_tag_directive_t struct {\n\thandle []byte // The tag handle.\n\tprefix []byte // The tag prefix.\n}\n\ntype yaml_encoding_t int\n\n// The stream encoding.\nconst (\n\t// Let the parser choose the encoding.\n\tyaml_ANY_ENCODING yaml_encoding_t = iota\n\n\tyaml_UTF8_ENCODING    // The default UTF-8 encoding.\n\tyaml_UTF16LE_ENCODING // The UTF-16-LE encoding with BOM.\n\tyaml_UTF16BE_ENCODING // The UTF-16-BE encoding with BOM.\n)\n\ntype yaml_break_t int\n\n// Line break types.\nconst (\n\t// Let the parser choose the break type.\n\tyaml_ANY_BREAK yaml_break_t = iota\n\n\tyaml_CR_BREAK   // Use CR for line breaks (Mac style).\n\tyaml_LN_BREAK   // Use LN for line breaks (Unix style).\n\tyaml_CRLN_BREAK // Use CR LN for line breaks (DOS style).\n)\n\ntype yaml_error_type_t int\n\n// Many bad things could happen with the parser and emitter.\nconst (\n\t// No error is produced.\n\tyaml_NO_ERROR yaml_error_type_t = iota\n\n\tyaml_MEMORY_ERROR   // Cannot allocate or reallocate a block of memory.\n\tyaml_READER_ERROR   // Cannot read or decode the input stream.\n\tyaml_SCANNER_ERROR  // Cannot scan the input stream.\n\tyaml_PARSER_ERROR   // Cannot parse the input stream.\n\tyaml_COMPOSER_ERROR // Cannot compose a YAML document.\n\tyaml_WRITER_ERROR   // Cannot write to the output stream.\n\tyaml_EMITTER_ERROR  // Cannot emit a YAML stream.\n)\n\n// The pointer position.\ntype yaml_mark_t struct {\n\tindex  int // The position index.\n\tline   int // The position line.\n\tcolumn int // The position column.\n}\n\n// Node Styles\n\ntype yaml_style_t int8\n\ntype yaml_scalar_style_t yaml_style_t\n\n// Scalar styles.\nconst (\n\t// Let the emitter choose the style.\n\tyaml_ANY_SCALAR_STYLE yaml_scalar_style_t = 0\n\n\tyaml_PLAIN_SCALAR_STYLE         yaml_scalar_style_t = 1 << iota // The plain scalar style.\n\tyaml_SINGLE_QUOTED_SCALAR_STYLE                                 // The single-quoted scalar style.\n\tyaml_DOUBLE_QUOTED_SCALAR_STYLE                                 // The double-quoted scalar style.\n\tyaml_LITERAL_SCALAR_STYLE                                       // The literal scalar style.\n\tyaml_FOLDED_SCALAR_STYLE                                        // The folded scalar style.\n)\n\ntype yaml_sequence_style_t yaml_style_t\n\n// Sequence styles.\nconst (\n\t// Let the emitter choose the style.\n\tyaml_ANY_SEQUENCE_STYLE yaml_sequence_style_t = iota\n\n\tyaml_BLOCK_SEQUENCE_STYLE // The block sequence style.\n\tyaml_FLOW_SEQUENCE_STYLE  // The flow sequence style.\n)\n\ntype yaml_mapping_style_t yaml_style_t\n\n// Mapping styles.\nconst (\n\t// Let the emitter choose the style.\n\tyaml_ANY_MAPPING_STYLE yaml_mapping_style_t = iota\n\n\tyaml_BLOCK_MAPPING_STYLE // The block mapping style.\n\tyaml_FLOW_MAPPING_STYLE  // The flow mapping style.\n)\n\n// Tokens\n\ntype yaml_token_type_t int\n\n// Token types.\nconst (\n\t// An empty token.\n\tyaml_NO_TOKEN yaml_token_type_t = iota\n\n\tyaml_STREAM_START_TOKEN // A STREAM-START token.\n\tyaml_STREAM_END_TOKEN   // A STREAM-END token.\n\n\tyaml_VERSION_DIRECTIVE_TOKEN // A VERSION-DIRECTIVE token.\n\tyaml_TAG_DIRECTIVE_TOKEN     // A TAG-DIRECTIVE token.\n\tyaml_DOCUMENT_START_TOKEN    // A DOCUMENT-START token.\n\tyaml_DOCUMENT_END_TOKEN      // A DOCUMENT-END token.\n\n\tyaml_BLOCK_SEQUENCE_START_TOKEN // A BLOCK-SEQUENCE-START token.\n\tyaml_BLOCK_MAPPING_START_TOKEN  // A BLOCK-SEQUENCE-END token.\n\tyaml_BLOCK_END_TOKEN            // A BLOCK-END token.\n\n\tyaml_FLOW_SEQUENCE_START_TOKEN // A FLOW-SEQUENCE-START token.\n\tyaml_FLOW_SEQUENCE_END_TOKEN   // A FLOW-SEQUENCE-END token.\n\tyaml_FLOW_MAPPING_START_TOKEN  // A FLOW-MAPPING-START token.\n\tyaml_FLOW_MAPPING_END_TOKEN    // A FLOW-MAPPING-END token.\n\n\tyaml_BLOCK_ENTRY_TOKEN // A BLOCK-ENTRY token.\n\tyaml_FLOW_ENTRY_TOKEN  // A FLOW-ENTRY token.\n\tyaml_KEY_TOKEN         // A KEY token.\n\tyaml_VALUE_TOKEN       // A VALUE token.\n\n\tyaml_ALIAS_TOKEN  // An ALIAS token.\n\tyaml_ANCHOR_TOKEN // An ANCHOR token.\n\tyaml_TAG_TOKEN    // A TAG token.\n\tyaml_SCALAR_TOKEN // A SCALAR token.\n)\n\nfunc (tt yaml_token_type_t) String() string {\n\tswitch tt {\n\tcase yaml_NO_TOKEN:\n\t\treturn \"yaml_NO_TOKEN\"\n\tcase yaml_STREAM_START_TOKEN:\n\t\treturn \"yaml_STREAM_START_TOKEN\"\n\tcase yaml_STREAM_END_TOKEN:\n\t\treturn \"yaml_STREAM_END_TOKEN\"\n\tcase yaml_VERSION_DIRECTIVE_TOKEN:\n\t\treturn \"yaml_VERSION_DIRECTIVE_TOKEN\"\n\tcase yaml_TAG_DIRECTIVE_TOKEN:\n\t\treturn \"yaml_TAG_DIRECTIVE_TOKEN\"\n\tcase yaml_DOCUMENT_START_TOKEN:\n\t\treturn \"yaml_DOCUMENT_START_TOKEN\"\n\tcase yaml_DOCUMENT_END_TOKEN:\n\t\treturn \"yaml_DOCUMENT_END_TOKEN\"\n\tcase yaml_BLOCK_SEQUENCE_START_TOKEN:\n\t\treturn \"yaml_BLOCK_SEQUENCE_START_TOKEN\"\n\tcase yaml_BLOCK_MAPPING_START_TOKEN:\n\t\treturn \"yaml_BLOCK_MAPPING_START_TOKEN\"\n\tcase yaml_BLOCK_END_TOKEN:\n\t\treturn \"yaml_BLOCK_END_TOKEN\"\n\tcase yaml_FLOW_SEQUENCE_START_TOKEN:\n\t\treturn \"yaml_FLOW_SEQUENCE_START_TOKEN\"\n\tcase yaml_FLOW_SEQUENCE_END_TOKEN:\n\t\treturn \"yaml_FLOW_SEQUENCE_END_TOKEN\"\n\tcase yaml_FLOW_MAPPING_START_TOKEN:\n\t\treturn \"yaml_FLOW_MAPPING_START_TOKEN\"\n\tcase yaml_FLOW_MAPPING_END_TOKEN:\n\t\treturn \"yaml_FLOW_MAPPING_END_TOKEN\"\n\tcase yaml_BLOCK_ENTRY_TOKEN:\n\t\treturn \"yaml_BLOCK_ENTRY_TOKEN\"\n\tcase yaml_FLOW_ENTRY_TOKEN:\n\t\treturn \"yaml_FLOW_ENTRY_TOKEN\"\n\tcase yaml_KEY_TOKEN:\n\t\treturn \"yaml_KEY_TOKEN\"\n\tcase yaml_VALUE_TOKEN:\n\t\treturn \"yaml_VALUE_TOKEN\"\n\tcase yaml_ALIAS_TOKEN:\n\t\treturn \"yaml_ALIAS_TOKEN\"\n\tcase yaml_ANCHOR_TOKEN:\n\t\treturn \"yaml_ANCHOR_TOKEN\"\n\tcase yaml_TAG_TOKEN:\n\t\treturn \"yaml_TAG_TOKEN\"\n\tcase yaml_SCALAR_TOKEN:\n\t\treturn \"yaml_SCALAR_TOKEN\"\n\t}\n\treturn \"<unknown token>\"\n}\n\n// The token structure.\ntype yaml_token_t struct {\n\t// The token type.\n\ttyp yaml_token_type_t\n\n\t// The start/end of the token.\n\tstart_mark, end_mark yaml_mark_t\n\n\t// The stream encoding (for yaml_STREAM_START_TOKEN).\n\tencoding yaml_encoding_t\n\n\t// The alias/anchor/scalar value or tag/tag directive handle\n\t// (for yaml_ALIAS_TOKEN, yaml_ANCHOR_TOKEN, yaml_SCALAR_TOKEN, yaml_TAG_TOKEN, yaml_TAG_DIRECTIVE_TOKEN).\n\tvalue []byte\n\n\t// The tag suffix (for yaml_TAG_TOKEN).\n\tsuffix []byte\n\n\t// The tag directive prefix (for yaml_TAG_DIRECTIVE_TOKEN).\n\tprefix []byte\n\n\t// The scalar style (for yaml_SCALAR_TOKEN).\n\tstyle yaml_scalar_style_t\n\n\t// The version directive major/minor (for yaml_VERSION_DIRECTIVE_TOKEN).\n\tmajor, minor int8\n}\n\n// Events\n\ntype yaml_event_type_t int8\n\n// Event types.\nconst (\n\t// An empty event.\n\tyaml_NO_EVENT yaml_event_type_t = iota\n\n\tyaml_STREAM_START_EVENT   // A STREAM-START event.\n\tyaml_STREAM_END_EVENT     // A STREAM-END event.\n\tyaml_DOCUMENT_START_EVENT // A DOCUMENT-START event.\n\tyaml_DOCUMENT_END_EVENT   // A DOCUMENT-END event.\n\tyaml_ALIAS_EVENT          // An ALIAS event.\n\tyaml_SCALAR_EVENT         // A SCALAR event.\n\tyaml_SEQUENCE_START_EVENT // A SEQUENCE-START event.\n\tyaml_SEQUENCE_END_EVENT   // A SEQUENCE-END event.\n\tyaml_MAPPING_START_EVENT  // A MAPPING-START event.\n\tyaml_MAPPING_END_EVENT    // A MAPPING-END event.\n\tyaml_TAIL_COMMENT_EVENT\n)\n\nvar eventStrings = []string{\n\tyaml_NO_EVENT:             \"none\",\n\tyaml_STREAM_START_EVENT:   \"stream start\",\n\tyaml_STREAM_END_EVENT:     \"stream end\",\n\tyaml_DOCUMENT_START_EVENT: \"document start\",\n\tyaml_DOCUMENT_END_EVENT:   \"document end\",\n\tyaml_ALIAS_EVENT:          \"alias\",\n\tyaml_SCALAR_EVENT:         \"scalar\",\n\tyaml_SEQUENCE_START_EVENT: \"sequence start\",\n\tyaml_SEQUENCE_END_EVENT:   \"sequence end\",\n\tyaml_MAPPING_START_EVENT:  \"mapping start\",\n\tyaml_MAPPING_END_EVENT:    \"mapping end\",\n\tyaml_TAIL_COMMENT_EVENT:   \"tail comment\",\n}\n\nfunc (e yaml_event_type_t) String() string {\n\tif e < 0 || int(e) >= len(eventStrings) {\n\t\treturn fmt.Sprintf(\"unknown event %d\", e)\n\t}\n\treturn eventStrings[e]\n}\n\n// The event structure.\ntype yaml_event_t struct {\n\n\t// The event type.\n\ttyp yaml_event_type_t\n\n\t// The start and end of the event.\n\tstart_mark, end_mark yaml_mark_t\n\n\t// The document encoding (for yaml_STREAM_START_EVENT).\n\tencoding yaml_encoding_t\n\n\t// The version directive (for yaml_DOCUMENT_START_EVENT).\n\tversion_directive *yaml_version_directive_t\n\n\t// The list of tag directives (for yaml_DOCUMENT_START_EVENT).\n\ttag_directives []yaml_tag_directive_t\n\n\t// The comments\n\thead_comment []byte\n\tline_comment []byte\n\tfoot_comment []byte\n\ttail_comment []byte\n\n\t// The anchor (for yaml_SCALAR_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT, yaml_ALIAS_EVENT).\n\tanchor []byte\n\n\t// The tag (for yaml_SCALAR_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT).\n\ttag []byte\n\n\t// The scalar value (for yaml_SCALAR_EVENT).\n\tvalue []byte\n\n\t// Is the document start/end indicator implicit, or the tag optional?\n\t// (for yaml_DOCUMENT_START_EVENT, yaml_DOCUMENT_END_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT, yaml_SCALAR_EVENT).\n\timplicit bool\n\n\t// Is the tag optional for any non-plain style? (for yaml_SCALAR_EVENT).\n\tquoted_implicit bool\n\n\t// The style (for yaml_SCALAR_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT).\n\tstyle yaml_style_t\n}\n\nfunc (e *yaml_event_t) scalar_style() yaml_scalar_style_t     { return yaml_scalar_style_t(e.style) }\nfunc (e *yaml_event_t) sequence_style() yaml_sequence_style_t { return yaml_sequence_style_t(e.style) }\nfunc (e *yaml_event_t) mapping_style() yaml_mapping_style_t   { return yaml_mapping_style_t(e.style) }\n\n// Nodes\n\nconst (\n\tyaml_NULL_TAG      = \"tag:yaml.org,2002:null\"      // The tag !!null with the only possible value: null.\n\tyaml_BOOL_TAG      = \"tag:yaml.org,2002:bool\"      // The tag !!bool with the values: true and false.\n\tyaml_STR_TAG       = \"tag:yaml.org,2002:str\"       // The tag !!str for string values.\n\tyaml_INT_TAG       = \"tag:yaml.org,2002:int\"       // The tag !!int for integer values.\n\tyaml_FLOAT_TAG     = \"tag:yaml.org,2002:float\"     // The tag !!float for float values.\n\tyaml_TIMESTAMP_TAG = \"tag:yaml.org,2002:timestamp\" // The tag !!timestamp for date and time values.\n\n\tyaml_SEQ_TAG = \"tag:yaml.org,2002:seq\" // The tag !!seq is used to denote sequences.\n\tyaml_MAP_TAG = \"tag:yaml.org,2002:map\" // The tag !!map is used to denote mapping.\n\n\t// Not in original libyaml.\n\tyaml_BINARY_TAG = \"tag:yaml.org,2002:binary\"\n\tyaml_MERGE_TAG  = \"tag:yaml.org,2002:merge\"\n\n\tyaml_DEFAULT_SCALAR_TAG   = yaml_STR_TAG // The default scalar tag is !!str.\n\tyaml_DEFAULT_SEQUENCE_TAG = yaml_SEQ_TAG // The default sequence tag is !!seq.\n\tyaml_DEFAULT_MAPPING_TAG  = yaml_MAP_TAG // The default mapping tag is !!map.\n)\n\ntype yaml_node_type_t int\n\n// Node types.\nconst (\n\t// An empty node.\n\tyaml_NO_NODE yaml_node_type_t = iota\n\n\tyaml_SCALAR_NODE   // A scalar node.\n\tyaml_SEQUENCE_NODE // A sequence node.\n\tyaml_MAPPING_NODE  // A mapping node.\n)\n\n// An element of a sequence node.\ntype yaml_node_item_t int\n\n// An element of a mapping node.\ntype yaml_node_pair_t struct {\n\tkey   int // The key of the element.\n\tvalue int // The value of the element.\n}\n\n// The node structure.\ntype yaml_node_t struct {\n\ttyp yaml_node_type_t // The node type.\n\ttag []byte           // The node tag.\n\n\t// The node data.\n\n\t// The scalar parameters (for yaml_SCALAR_NODE).\n\tscalar struct {\n\t\tvalue  []byte              // The scalar value.\n\t\tlength int                 // The length of the scalar value.\n\t\tstyle  yaml_scalar_style_t // The scalar style.\n\t}\n\n\t// The sequence parameters (for YAML_SEQUENCE_NODE).\n\tsequence struct {\n\t\titems_data []yaml_node_item_t    // The stack of sequence items.\n\t\tstyle      yaml_sequence_style_t // The sequence style.\n\t}\n\n\t// The mapping parameters (for yaml_MAPPING_NODE).\n\tmapping struct {\n\t\tpairs_data  []yaml_node_pair_t   // The stack of mapping pairs (key, value).\n\t\tpairs_start *yaml_node_pair_t    // The beginning of the stack.\n\t\tpairs_end   *yaml_node_pair_t    // The end of the stack.\n\t\tpairs_top   *yaml_node_pair_t    // The top of the stack.\n\t\tstyle       yaml_mapping_style_t // The mapping style.\n\t}\n\n\tstart_mark yaml_mark_t // The beginning of the node.\n\tend_mark   yaml_mark_t // The end of the node.\n\n}\n\n// The document structure.\ntype yaml_document_t struct {\n\n\t// The document nodes.\n\tnodes []yaml_node_t\n\n\t// The version directive.\n\tversion_directive *yaml_version_directive_t\n\n\t// The list of tag directives.\n\ttag_directives_data  []yaml_tag_directive_t\n\ttag_directives_start int // The beginning of the tag directives list.\n\ttag_directives_end   int // The end of the tag directives list.\n\n\tstart_implicit int // Is the document start indicator implicit?\n\tend_implicit   int // Is the document end indicator implicit?\n\n\t// The start/end of the document.\n\tstart_mark, end_mark yaml_mark_t\n}\n\n// The prototype of a read handler.\n//\n// The read handler is called when the parser needs to read more bytes from the\n// source. The handler should write not more than size bytes to the buffer.\n// The number of written bytes should be set to the size_read variable.\n//\n// [in,out]   data        A pointer to an application data specified by\n//                        yaml_parser_set_input().\n// [out]      buffer      The buffer to write the data from the source.\n// [in]       size        The size of the buffer.\n// [out]      size_read   The actual number of bytes read from the source.\n//\n// On success, the handler should return 1.  If the handler failed,\n// the returned value should be 0. On EOF, the handler should set the\n// size_read to 0 and return 1.\ntype yaml_read_handler_t func(parser *yaml_parser_t, buffer []byte) (n int, err error)\n\n// This structure holds information about a potential simple key.\ntype yaml_simple_key_t struct {\n\tpossible     bool        // Is a simple key possible?\n\trequired     bool        // Is a simple key required?\n\ttoken_number int         // The number of the token.\n\tmark         yaml_mark_t // The position mark.\n}\n\n// The states of the parser.\ntype yaml_parser_state_t int\n\nconst (\n\tyaml_PARSE_STREAM_START_STATE yaml_parser_state_t = iota\n\n\tyaml_PARSE_IMPLICIT_DOCUMENT_START_STATE           // Expect the beginning of an implicit document.\n\tyaml_PARSE_DOCUMENT_START_STATE                    // Expect DOCUMENT-START.\n\tyaml_PARSE_DOCUMENT_CONTENT_STATE                  // Expect the content of a document.\n\tyaml_PARSE_DOCUMENT_END_STATE                      // Expect DOCUMENT-END.\n\tyaml_PARSE_BLOCK_NODE_STATE                        // Expect a block node.\n\tyaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE // Expect a block node or indentless sequence.\n\tyaml_PARSE_FLOW_NODE_STATE                         // Expect a flow node.\n\tyaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE        // Expect the first entry of a block sequence.\n\tyaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE              // Expect an entry of a block sequence.\n\tyaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE         // Expect an entry of an indentless sequence.\n\tyaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE           // Expect the first key of a block mapping.\n\tyaml_PARSE_BLOCK_MAPPING_KEY_STATE                 // Expect a block mapping key.\n\tyaml_PARSE_BLOCK_MAPPING_VALUE_STATE               // Expect a block mapping value.\n\tyaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE         // Expect the first entry of a flow sequence.\n\tyaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE               // Expect an entry of a flow sequence.\n\tyaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE   // Expect a key of an ordered mapping.\n\tyaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE // Expect a value of an ordered mapping.\n\tyaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE   // Expect the and of an ordered mapping entry.\n\tyaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE            // Expect the first key of a flow mapping.\n\tyaml_PARSE_FLOW_MAPPING_KEY_STATE                  // Expect a key of a flow mapping.\n\tyaml_PARSE_FLOW_MAPPING_VALUE_STATE                // Expect a value of a flow mapping.\n\tyaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE          // Expect an empty value of a flow mapping.\n\tyaml_PARSE_END_STATE                               // Expect nothing.\n)\n\nfunc (ps yaml_parser_state_t) String() string {\n\tswitch ps {\n\tcase yaml_PARSE_STREAM_START_STATE:\n\t\treturn \"yaml_PARSE_STREAM_START_STATE\"\n\tcase yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE:\n\t\treturn \"yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE\"\n\tcase yaml_PARSE_DOCUMENT_START_STATE:\n\t\treturn \"yaml_PARSE_DOCUMENT_START_STATE\"\n\tcase yaml_PARSE_DOCUMENT_CONTENT_STATE:\n\t\treturn \"yaml_PARSE_DOCUMENT_CONTENT_STATE\"\n\tcase yaml_PARSE_DOCUMENT_END_STATE:\n\t\treturn \"yaml_PARSE_DOCUMENT_END_STATE\"\n\tcase yaml_PARSE_BLOCK_NODE_STATE:\n\t\treturn \"yaml_PARSE_BLOCK_NODE_STATE\"\n\tcase yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE:\n\t\treturn \"yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE\"\n\tcase yaml_PARSE_FLOW_NODE_STATE:\n\t\treturn \"yaml_PARSE_FLOW_NODE_STATE\"\n\tcase yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE:\n\t\treturn \"yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE\"\n\tcase yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE:\n\t\treturn \"yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE\"\n\tcase yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE:\n\t\treturn \"yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE\"\n\tcase yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE:\n\t\treturn \"yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE\"\n\tcase yaml_PARSE_BLOCK_MAPPING_KEY_STATE:\n\t\treturn \"yaml_PARSE_BLOCK_MAPPING_KEY_STATE\"\n\tcase yaml_PARSE_BLOCK_MAPPING_VALUE_STATE:\n\t\treturn \"yaml_PARSE_BLOCK_MAPPING_VALUE_STATE\"\n\tcase yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE:\n\t\treturn \"yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE\"\n\tcase yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE:\n\t\treturn \"yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE\"\n\tcase yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE:\n\t\treturn \"yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE\"\n\tcase yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE:\n\t\treturn \"yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE\"\n\tcase yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE:\n\t\treturn \"yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE\"\n\tcase yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE:\n\t\treturn \"yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE\"\n\tcase yaml_PARSE_FLOW_MAPPING_KEY_STATE:\n\t\treturn \"yaml_PARSE_FLOW_MAPPING_KEY_STATE\"\n\tcase yaml_PARSE_FLOW_MAPPING_VALUE_STATE:\n\t\treturn \"yaml_PARSE_FLOW_MAPPING_VALUE_STATE\"\n\tcase yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE:\n\t\treturn \"yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE\"\n\tcase yaml_PARSE_END_STATE:\n\t\treturn \"yaml_PARSE_END_STATE\"\n\t}\n\treturn \"<unknown parser state>\"\n}\n\n// This structure holds aliases data.\ntype yaml_alias_data_t struct {\n\tanchor []byte      // The anchor.\n\tindex  int         // The node id.\n\tmark   yaml_mark_t // The anchor mark.\n}\n\n// The parser structure.\n//\n// All members are internal. Manage the structure using the\n// yaml_parser_ family of functions.\ntype yaml_parser_t struct {\n\n\t// Error handling\n\n\terror yaml_error_type_t // Error type.\n\n\tproblem string // Error description.\n\n\t// The byte about which the problem occurred.\n\tproblem_offset int\n\tproblem_value  int\n\tproblem_mark   yaml_mark_t\n\n\t// The error context.\n\tcontext      string\n\tcontext_mark yaml_mark_t\n\n\t// Reader stuff\n\n\tread_handler yaml_read_handler_t // Read handler.\n\n\tinput_reader io.Reader // File input data.\n\tinput        []byte    // String input data.\n\tinput_pos    int\n\n\teof bool // EOF flag\n\n\tbuffer     []byte // The working buffer.\n\tbuffer_pos int    // The current position of the buffer.\n\n\tunread int // The number of unread characters in the buffer.\n\n\tnewlines int // The number of line breaks since last non-break/non-blank character\n\n\traw_buffer     []byte // The raw buffer.\n\traw_buffer_pos int    // The current position of the buffer.\n\n\tencoding yaml_encoding_t // The input encoding.\n\n\toffset int         // The offset of the current position (in bytes).\n\tmark   yaml_mark_t // The mark of the current position.\n\n\t// Comments\n\n\thead_comment []byte // The current head comments\n\tline_comment []byte // The current line comments\n\tfoot_comment []byte // The current foot comments\n\ttail_comment []byte // Foot comment that happens at the end of a block.\n\tstem_comment []byte // Comment in item preceding a nested structure (list inside list item, etc)\n\n\tcomments      []yaml_comment_t // The folded comments for all parsed tokens\n\tcomments_head int\n\n\t// Scanner stuff\n\n\tstream_start_produced bool // Have we started to scan the input stream?\n\tstream_end_produced   bool // Have we reached the end of the input stream?\n\n\tflow_level int // The number of unclosed '[' and '{' indicators.\n\n\ttokens          []yaml_token_t // The tokens queue.\n\ttokens_head     int            // The head of the tokens queue.\n\ttokens_parsed   int            // The number of tokens fetched from the queue.\n\ttoken_available bool           // Does the tokens queue contain a token ready for dequeueing.\n\n\tindent  int   // The current indentation level.\n\tindents []int // The indentation levels stack.\n\n\tsimple_key_allowed bool                // May a simple key occur at the current position?\n\tsimple_keys        []yaml_simple_key_t // The stack of simple keys.\n\tsimple_keys_by_tok map[int]int         // possible simple_key indexes indexed by token_number\n\n\t// Parser stuff\n\n\tstate          yaml_parser_state_t    // The current parser state.\n\tstates         []yaml_parser_state_t  // The parser states stack.\n\tmarks          []yaml_mark_t          // The stack of marks.\n\ttag_directives []yaml_tag_directive_t // The list of TAG directives.\n\n\t// Dumper stuff\n\n\taliases []yaml_alias_data_t // The alias data.\n\n\tdocument *yaml_document_t // The currently parsed document.\n}\n\ntype yaml_comment_t struct {\n\n\tscan_mark  yaml_mark_t // Position where scanning for comments started\n\ttoken_mark yaml_mark_t // Position after which tokens will be associated with this comment\n\tstart_mark yaml_mark_t // Position of '#' comment mark\n\tend_mark   yaml_mark_t // Position where comment terminated\n\n\thead []byte\n\tline []byte\n\tfoot []byte\n}\n\n// Emitter Definitions\n\n// The prototype of a write handler.\n//\n// The write handler is called when the emitter needs to flush the accumulated\n// characters to the output.  The handler should write @a size bytes of the\n// @a buffer to the output.\n//\n// @param[in,out]   data        A pointer to an application data specified by\n//                              yaml_emitter_set_output().\n// @param[in]       buffer      The buffer with bytes to be written.\n// @param[in]       size        The size of the buffer.\n//\n// @returns On success, the handler should return @c 1.  If the handler failed,\n// the returned value should be @c 0.\n//\ntype yaml_write_handler_t func(emitter *yaml_emitter_t, buffer []byte) error\n\ntype yaml_emitter_state_t int\n\n// The emitter states.\nconst (\n\t// Expect STREAM-START.\n\tyaml_EMIT_STREAM_START_STATE yaml_emitter_state_t = iota\n\n\tyaml_EMIT_FIRST_DOCUMENT_START_STATE       // Expect the first DOCUMENT-START or STREAM-END.\n\tyaml_EMIT_DOCUMENT_START_STATE             // Expect DOCUMENT-START or STREAM-END.\n\tyaml_EMIT_DOCUMENT_CONTENT_STATE           // Expect the content of a document.\n\tyaml_EMIT_DOCUMENT_END_STATE               // Expect DOCUMENT-END.\n\tyaml_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE   // Expect the first item of a flow sequence.\n\tyaml_EMIT_FLOW_SEQUENCE_TRAIL_ITEM_STATE   // Expect the next item of a flow sequence, with the comma already written out\n\tyaml_EMIT_FLOW_SEQUENCE_ITEM_STATE         // Expect an item of a flow sequence.\n\tyaml_EMIT_FLOW_MAPPING_FIRST_KEY_STATE     // Expect the first key of a flow mapping.\n\tyaml_EMIT_FLOW_MAPPING_TRAIL_KEY_STATE     // Expect the next key of a flow mapping, with the comma already written out\n\tyaml_EMIT_FLOW_MAPPING_KEY_STATE           // Expect a key of a flow mapping.\n\tyaml_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE  // Expect a value for a simple key of a flow mapping.\n\tyaml_EMIT_FLOW_MAPPING_VALUE_STATE         // Expect a value of a flow mapping.\n\tyaml_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE  // Expect the first item of a block sequence.\n\tyaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE        // Expect an item of a block sequence.\n\tyaml_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE    // Expect the first key of a block mapping.\n\tyaml_EMIT_BLOCK_MAPPING_KEY_STATE          // Expect the key of a block mapping.\n\tyaml_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE // Expect a value for a simple key of a block mapping.\n\tyaml_EMIT_BLOCK_MAPPING_VALUE_STATE        // Expect a value of a block mapping.\n\tyaml_EMIT_END_STATE                        // Expect nothing.\n)\n\n// The emitter structure.\n//\n// All members are internal.  Manage the structure using the @c yaml_emitter_\n// family of functions.\ntype yaml_emitter_t struct {\n\n\t// Error handling\n\n\terror   yaml_error_type_t // Error type.\n\tproblem string            // Error description.\n\n\t// Writer stuff\n\n\twrite_handler yaml_write_handler_t // Write handler.\n\n\toutput_buffer *[]byte   // String output data.\n\toutput_writer io.Writer // File output data.\n\n\tbuffer     []byte // The working buffer.\n\tbuffer_pos int    // The current position of the buffer.\n\n\traw_buffer     []byte // The raw buffer.\n\traw_buffer_pos int    // The current position of the buffer.\n\n\tencoding yaml_encoding_t // The stream encoding.\n\n\t// Emitter stuff\n\n\tcanonical   bool         // If the output is in the canonical style?\n\tbest_indent int          // The number of indentation spaces.\n\tbest_width  int          // The preferred width of the output lines.\n\tunicode     bool         // Allow unescaped non-ASCII characters?\n\tline_break  yaml_break_t // The preferred line break.\n\n\tstate  yaml_emitter_state_t   // The current emitter state.\n\tstates []yaml_emitter_state_t // The stack of states.\n\n\tevents      []yaml_event_t // The event queue.\n\tevents_head int            // The head of the event queue.\n\n\tindents []int // The stack of indentation levels.\n\n\ttag_directives []yaml_tag_directive_t // The list of tag directives.\n\n\tindent int // The current indentation level.\n\n\tflow_level int // The current flow level.\n\n\troot_context       bool // Is it the document root context?\n\tsequence_context   bool // Is it a sequence context?\n\tmapping_context    bool // Is it a mapping context?\n\tsimple_key_context bool // Is it a simple mapping key context?\n\n\tline       int  // The current line.\n\tcolumn     int  // The current column.\n\twhitespace bool // If the last character was a whitespace?\n\tindention  bool // If the last character was an indentation character (' ', '-', '?', ':')?\n\topen_ended bool // If an explicit document end is required?\n\n\tspace_above bool // Is there's an empty line above?\n\tfoot_indent int  // The indent used to write the foot comment above, or -1 if none.\n\n\t// Anchor analysis.\n\tanchor_data struct {\n\t\tanchor []byte // The anchor value.\n\t\talias  bool   // Is it an alias?\n\t}\n\n\t// Tag analysis.\n\ttag_data struct {\n\t\thandle []byte // The tag handle.\n\t\tsuffix []byte // The tag suffix.\n\t}\n\n\t// Scalar analysis.\n\tscalar_data struct {\n\t\tvalue                 []byte              // The scalar value.\n\t\tmultiline             bool                // Does the scalar contain line breaks?\n\t\tflow_plain_allowed    bool                // Can the scalar be expessed in the flow plain style?\n\t\tblock_plain_allowed   bool                // Can the scalar be expressed in the block plain style?\n\t\tsingle_quoted_allowed bool                // Can the scalar be expressed in the single quoted style?\n\t\tblock_allowed         bool                // Can the scalar be expressed in the literal or folded styles?\n\t\tstyle                 yaml_scalar_style_t // The output style.\n\t}\n\n\t// Comments\n\thead_comment []byte\n\tline_comment []byte\n\tfoot_comment []byte\n\ttail_comment []byte\n\n\tkey_line_comment []byte\n\n\t// Dumper stuff\n\n\topened bool // If the stream was already opened?\n\tclosed bool // If the stream was already closed?\n\n\t// The information associated with the document nodes.\n\tanchors *struct {\n\t\treferences int  // The number of references.\n\t\tanchor     int  // The anchor id.\n\t\tserialized bool // If the node has been emitted?\n\t}\n\n\tlast_anchor_id int // The last assigned anchor id.\n\n\tdocument *yaml_document_t // The currently emitted document.\n}\n"
  },
  {
    "path": "vendor/gopkg.in/yaml.v3/yamlprivateh.go",
    "content": "// \n// Copyright (c) 2011-2019 Canonical Ltd\n// Copyright (c) 2006-2010 Kirill Simonov\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.\n\npackage yaml\n\nconst (\n\t// The size of the input raw buffer.\n\tinput_raw_buffer_size = 512\n\n\t// The size of the input buffer.\n\t// It should be possible to decode the whole raw buffer.\n\tinput_buffer_size = input_raw_buffer_size * 3\n\n\t// The size of the output buffer.\n\toutput_buffer_size = 128\n\n\t// The size of the output raw buffer.\n\t// It should be possible to encode the whole output buffer.\n\toutput_raw_buffer_size = (output_buffer_size*2 + 2)\n\n\t// The size of other stacks and queues.\n\tinitial_stack_size  = 16\n\tinitial_queue_size  = 16\n\tinitial_string_size = 16\n)\n\n// Check if the character at the specified position is an alphabetical\n// character, a digit, '_', or '-'.\nfunc is_alpha(b []byte, i int) bool {\n\treturn b[i] >= '0' && b[i] <= '9' || b[i] >= 'A' && b[i] <= 'Z' || b[i] >= 'a' && b[i] <= 'z' || b[i] == '_' || b[i] == '-'\n}\n\n// Check if the character at the specified position is a digit.\nfunc is_digit(b []byte, i int) bool {\n\treturn b[i] >= '0' && b[i] <= '9'\n}\n\n// Get the value of a digit.\nfunc as_digit(b []byte, i int) int {\n\treturn int(b[i]) - '0'\n}\n\n// Check if the character at the specified position is a hex-digit.\nfunc is_hex(b []byte, i int) bool {\n\treturn b[i] >= '0' && b[i] <= '9' || b[i] >= 'A' && b[i] <= 'F' || b[i] >= 'a' && b[i] <= 'f'\n}\n\n// Get the value of a hex-digit.\nfunc as_hex(b []byte, i int) int {\n\tbi := b[i]\n\tif bi >= 'A' && bi <= 'F' {\n\t\treturn int(bi) - 'A' + 10\n\t}\n\tif bi >= 'a' && bi <= 'f' {\n\t\treturn int(bi) - 'a' + 10\n\t}\n\treturn int(bi) - '0'\n}\n\n// Check if the character is ASCII.\nfunc is_ascii(b []byte, i int) bool {\n\treturn b[i] <= 0x7F\n}\n\n// Check if the character at the start of the buffer can be printed unescaped.\nfunc is_printable(b []byte, i int) bool {\n\treturn ((b[i] == 0x0A) || // . == #x0A\n\t\t(b[i] >= 0x20 && b[i] <= 0x7E) || // #x20 <= . <= #x7E\n\t\t(b[i] == 0xC2 && b[i+1] >= 0xA0) || // #0xA0 <= . <= #xD7FF\n\t\t(b[i] > 0xC2 && b[i] < 0xED) ||\n\t\t(b[i] == 0xED && b[i+1] < 0xA0) ||\n\t\t(b[i] == 0xEE) ||\n\t\t(b[i] == 0xEF && // #xE000 <= . <= #xFFFD\n\t\t\t!(b[i+1] == 0xBB && b[i+2] == 0xBF) && // && . != #xFEFF\n\t\t\t!(b[i+1] == 0xBF && (b[i+2] == 0xBE || b[i+2] == 0xBF))))\n}\n\n// Check if the character at the specified position is NUL.\nfunc is_z(b []byte, i int) bool {\n\treturn b[i] == 0x00\n}\n\n// Check if the beginning of the buffer is a BOM.\nfunc is_bom(b []byte, i int) bool {\n\treturn b[0] == 0xEF && b[1] == 0xBB && b[2] == 0xBF\n}\n\n// Check if the character at the specified position is space.\nfunc is_space(b []byte, i int) bool {\n\treturn b[i] == ' '\n}\n\n// Check if the character at the specified position is tab.\nfunc is_tab(b []byte, i int) bool {\n\treturn b[i] == '\\t'\n}\n\n// Check if the character at the specified position is blank (space or tab).\nfunc is_blank(b []byte, i int) bool {\n\t//return is_space(b, i) || is_tab(b, i)\n\treturn b[i] == ' ' || b[i] == '\\t'\n}\n\n// Check if the character at the specified position is a line break.\nfunc is_break(b []byte, i int) bool {\n\treturn (b[i] == '\\r' || // CR (#xD)\n\t\tb[i] == '\\n' || // LF (#xA)\n\t\tb[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85)\n\t\tb[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028)\n\t\tb[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9) // PS (#x2029)\n}\n\nfunc is_crlf(b []byte, i int) bool {\n\treturn b[i] == '\\r' && b[i+1] == '\\n'\n}\n\n// Check if the character is a line break or NUL.\nfunc is_breakz(b []byte, i int) bool {\n\t//return is_break(b, i) || is_z(b, i)\n\treturn (\n\t\t// is_break:\n\t\tb[i] == '\\r' || // CR (#xD)\n\t\tb[i] == '\\n' || // LF (#xA)\n\t\tb[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85)\n\t\tb[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028)\n\t\tb[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9 || // PS (#x2029)\n\t\t// is_z:\n\t\tb[i] == 0)\n}\n\n// Check if the character is a line break, space, or NUL.\nfunc is_spacez(b []byte, i int) bool {\n\t//return is_space(b, i) || is_breakz(b, i)\n\treturn (\n\t\t// is_space:\n\t\tb[i] == ' ' ||\n\t\t// is_breakz:\n\t\tb[i] == '\\r' || // CR (#xD)\n\t\tb[i] == '\\n' || // LF (#xA)\n\t\tb[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85)\n\t\tb[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028)\n\t\tb[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9 || // PS (#x2029)\n\t\tb[i] == 0)\n}\n\n// Check if the character is a line break, space, tab, or NUL.\nfunc is_blankz(b []byte, i int) bool {\n\t//return is_blank(b, i) || is_breakz(b, i)\n\treturn (\n\t\t// is_blank:\n\t\tb[i] == ' ' || b[i] == '\\t' ||\n\t\t// is_breakz:\n\t\tb[i] == '\\r' || // CR (#xD)\n\t\tb[i] == '\\n' || // LF (#xA)\n\t\tb[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85)\n\t\tb[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028)\n\t\tb[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9 || // PS (#x2029)\n\t\tb[i] == 0)\n}\n\n// Determine the width of the character.\nfunc width(b byte) int {\n\t// Don't replace these by a switch without first\n\t// confirming that it is being inlined.\n\tif b&0x80 == 0x00 {\n\t\treturn 1\n\t}\n\tif b&0xE0 == 0xC0 {\n\t\treturn 2\n\t}\n\tif b&0xF0 == 0xE0 {\n\t\treturn 3\n\t}\n\tif b&0xF8 == 0xF0 {\n\t\treturn 4\n\t}\n\treturn 0\n\n}\n"
  },
  {
    "path": "vendor/modules.txt",
    "content": "# cyphar.com/go-pathrs v0.2.1\n## explicit; go 1.18\ncyphar.com/go-pathrs\ncyphar.com/go-pathrs/internal/fdutils\ncyphar.com/go-pathrs/internal/libpathrs\ncyphar.com/go-pathrs/procfs\n# github.com/NVIDIA/go-nvlib v0.9.1-0.20251202135446-d0f42ba016dd\n## explicit; go 1.20\ngithub.com/NVIDIA/go-nvlib/pkg/nvlib/device\ngithub.com/NVIDIA/go-nvlib/pkg/nvlib/info\ngithub.com/NVIDIA/go-nvlib/pkg/nvpci\ngithub.com/NVIDIA/go-nvlib/pkg/nvpci/bytes\ngithub.com/NVIDIA/go-nvlib/pkg/nvpci/mmio\ngithub.com/NVIDIA/go-nvlib/pkg/pciids\n# github.com/NVIDIA/go-nvml v0.13.0-1.0.20260212130905-92cf8c963449\n## explicit; go 1.20\ngithub.com/NVIDIA/go-nvml/pkg/dl\ngithub.com/NVIDIA/go-nvml/pkg/nvml\ngithub.com/NVIDIA/go-nvml/pkg/nvml/mock\ngithub.com/NVIDIA/go-nvml/pkg/nvml/mock/dgxa100\n# github.com/containerd/log v0.1.0\n## explicit; go 1.20\ngithub.com/containerd/log\n# github.com/containerd/nri v0.11.0\n## explicit; go 1.24.0\ngithub.com/containerd/nri/pkg/api\ngithub.com/containerd/nri/pkg/log\ngithub.com/containerd/nri/pkg/net\ngithub.com/containerd/nri/pkg/net/multiplex\ngithub.com/containerd/nri/pkg/plugin\ngithub.com/containerd/nri/pkg/stub\n# github.com/containerd/ttrpc v1.2.7\n## explicit; go 1.19\ngithub.com/containerd/ttrpc\n# github.com/cyphar/filepath-securejoin v0.6.1\n## explicit; go 1.18\ngithub.com/cyphar/filepath-securejoin\ngithub.com/cyphar/filepath-securejoin/internal/consts\ngithub.com/cyphar/filepath-securejoin/pathrs-lite\ngithub.com/cyphar/filepath-securejoin/pathrs-lite/internal\ngithub.com/cyphar/filepath-securejoin/pathrs-lite/internal/assert\ngithub.com/cyphar/filepath-securejoin/pathrs-lite/internal/fd\ngithub.com/cyphar/filepath-securejoin/pathrs-lite/internal/gocompat\ngithub.com/cyphar/filepath-securejoin/pathrs-lite/internal/gopathrs\ngithub.com/cyphar/filepath-securejoin/pathrs-lite/internal/kernelversion\ngithub.com/cyphar/filepath-securejoin/pathrs-lite/internal/linux\ngithub.com/cyphar/filepath-securejoin/pathrs-lite/internal/procfs\ngithub.com/cyphar/filepath-securejoin/pathrs-lite/procfs\n# github.com/davecgh/go-spew v1.1.1\n## explicit\ngithub.com/davecgh/go-spew/spew\n# github.com/fsnotify/fsnotify v1.7.0\n## explicit; go 1.17\ngithub.com/fsnotify/fsnotify\n# github.com/golang/protobuf v1.5.3\n## explicit; go 1.9\ngithub.com/golang/protobuf/proto\ngithub.com/golang/protobuf/ptypes\ngithub.com/golang/protobuf/ptypes/any\ngithub.com/golang/protobuf/ptypes/duration\ngithub.com/golang/protobuf/ptypes/timestamp\n# github.com/google/uuid v1.6.0\n## explicit\ngithub.com/google/uuid\n# github.com/hashicorp/errwrap v1.1.0\n## explicit\n# github.com/knqyf263/go-plugin v0.9.0\n## explicit; go 1.24.0\ngithub.com/knqyf263/go-plugin/wasm\n# github.com/kr/text v0.2.0\n## explicit\n# github.com/moby/sys/capability v0.4.0\n## explicit; go 1.21\ngithub.com/moby/sys/capability\n# github.com/moby/sys/mountinfo v0.7.2\n## explicit; go 1.17\ngithub.com/moby/sys/mountinfo\n# github.com/moby/sys/reexec v0.1.0\n## explicit; go 1.18\ngithub.com/moby/sys/reexec\n# github.com/moby/sys/symlink v0.3.0\n## explicit; go 1.17\ngithub.com/moby/sys/symlink\n# github.com/opencontainers/cgroups v0.0.6\n## explicit; go 1.23.0\ngithub.com/opencontainers/cgroups/devices/config\n# github.com/opencontainers/runc v1.4.0\n## explicit; go 1.24.0\ngithub.com/opencontainers/runc/internal/linux\ngithub.com/opencontainers/runc/internal/pathrs\ngithub.com/opencontainers/runc/libcontainer/devices\ngithub.com/opencontainers/runc/libcontainer/exeseal\ngithub.com/opencontainers/runc/libcontainer/system\ngithub.com/opencontainers/runc/libcontainer/utils\n# github.com/opencontainers/runtime-spec v1.3.0\n## explicit\ngithub.com/opencontainers/runtime-spec/specs-go\n# github.com/opencontainers/runtime-tools v0.9.1-0.20251114084447-edf4cb3d2116\n## explicit; go 1.21\ngithub.com/opencontainers/runtime-tools/generate\ngithub.com/opencontainers/runtime-tools/generate/seccomp\ngithub.com/opencontainers/runtime-tools/validate/capabilities\n# github.com/pelletier/go-toml v1.9.5\n## explicit; go 1.12\ngithub.com/pelletier/go-toml\n# github.com/pmezard/go-difflib v1.0.0\n## explicit\ngithub.com/pmezard/go-difflib/difflib\n# github.com/prometheus/procfs v0.19.2\n## explicit; go 1.24.0\ngithub.com/prometheus/procfs\ngithub.com/prometheus/procfs/internal/fs\ngithub.com/prometheus/procfs/internal/util\n# github.com/rogpeppe/go-internal v1.11.0\n## explicit; go 1.19\n# github.com/sirupsen/logrus v1.9.4\n## explicit; go 1.17\ngithub.com/sirupsen/logrus\ngithub.com/sirupsen/logrus/hooks/test\n# github.com/stretchr/testify v1.11.1\n## explicit; go 1.17\ngithub.com/stretchr/testify/assert\ngithub.com/stretchr/testify/assert/yaml\ngithub.com/stretchr/testify/require\n# github.com/tetratelabs/wazero v1.10.1\n## explicit; go 1.23.0\ngithub.com/tetratelabs/wazero\ngithub.com/tetratelabs/wazero/api\ngithub.com/tetratelabs/wazero/experimental\ngithub.com/tetratelabs/wazero/experimental/sys\ngithub.com/tetratelabs/wazero/imports/wasi_snapshot_preview1\ngithub.com/tetratelabs/wazero/internal/descriptor\ngithub.com/tetratelabs/wazero/internal/engine/interpreter\ngithub.com/tetratelabs/wazero/internal/engine/wazevo\ngithub.com/tetratelabs/wazero/internal/engine/wazevo/backend\ngithub.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/amd64\ngithub.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/arm64\ngithub.com/tetratelabs/wazero/internal/engine/wazevo/backend/regalloc\ngithub.com/tetratelabs/wazero/internal/engine/wazevo/frontend\ngithub.com/tetratelabs/wazero/internal/engine/wazevo/ssa\ngithub.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi\ngithub.com/tetratelabs/wazero/internal/expctxkeys\ngithub.com/tetratelabs/wazero/internal/filecache\ngithub.com/tetratelabs/wazero/internal/fsapi\ngithub.com/tetratelabs/wazero/internal/ieee754\ngithub.com/tetratelabs/wazero/internal/internalapi\ngithub.com/tetratelabs/wazero/internal/leb128\ngithub.com/tetratelabs/wazero/internal/moremath\ngithub.com/tetratelabs/wazero/internal/platform\ngithub.com/tetratelabs/wazero/internal/sock\ngithub.com/tetratelabs/wazero/internal/sys\ngithub.com/tetratelabs/wazero/internal/sysfs\ngithub.com/tetratelabs/wazero/internal/u32\ngithub.com/tetratelabs/wazero/internal/u64\ngithub.com/tetratelabs/wazero/internal/version\ngithub.com/tetratelabs/wazero/internal/wasip1\ngithub.com/tetratelabs/wazero/internal/wasm\ngithub.com/tetratelabs/wazero/internal/wasm/binary\ngithub.com/tetratelabs/wazero/internal/wasmdebug\ngithub.com/tetratelabs/wazero/internal/wasmruntime\ngithub.com/tetratelabs/wazero/sys\n# github.com/urfave/cli-altsrc/v3 v3.1.0\n## explicit; go 1.23.2\ngithub.com/urfave/cli-altsrc/v3\n# github.com/urfave/cli/v3 v3.6.2\n## explicit; go 1.22\ngithub.com/urfave/cli/v3\n# github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb\n## explicit\n# golang.org/x/mod v0.33.0\n## explicit; go 1.24.0\ngolang.org/x/mod/semver\n# golang.org/x/sys v0.41.0\n## explicit; go 1.24.0\ngolang.org/x/sys/unix\ngolang.org/x/sys/windows\n# google.golang.org/genproto/googleapis/rpc v0.0.0-20230731190214-cbb8c96f2d6d\n## explicit; go 1.19\ngoogle.golang.org/genproto/googleapis/rpc/status\n# google.golang.org/grpc v1.57.1\n## explicit; go 1.17\ngoogle.golang.org/grpc/attributes\ngoogle.golang.org/grpc/codes\ngoogle.golang.org/grpc/connectivity\ngoogle.golang.org/grpc/credentials\ngoogle.golang.org/grpc/grpclog\ngoogle.golang.org/grpc/internal\ngoogle.golang.org/grpc/internal/credentials\ngoogle.golang.org/grpc/internal/grpclog\ngoogle.golang.org/grpc/internal/status\ngoogle.golang.org/grpc/resolver\ngoogle.golang.org/grpc/serviceconfig\ngoogle.golang.org/grpc/status\n# google.golang.org/protobuf v1.36.8\n## explicit; go 1.23\ngoogle.golang.org/protobuf/encoding/prototext\ngoogle.golang.org/protobuf/encoding/protowire\ngoogle.golang.org/protobuf/internal/descfmt\ngoogle.golang.org/protobuf/internal/descopts\ngoogle.golang.org/protobuf/internal/detrand\ngoogle.golang.org/protobuf/internal/editiondefaults\ngoogle.golang.org/protobuf/internal/editionssupport\ngoogle.golang.org/protobuf/internal/encoding/defval\ngoogle.golang.org/protobuf/internal/encoding/messageset\ngoogle.golang.org/protobuf/internal/encoding/tag\ngoogle.golang.org/protobuf/internal/encoding/text\ngoogle.golang.org/protobuf/internal/errors\ngoogle.golang.org/protobuf/internal/filedesc\ngoogle.golang.org/protobuf/internal/filetype\ngoogle.golang.org/protobuf/internal/flags\ngoogle.golang.org/protobuf/internal/genid\ngoogle.golang.org/protobuf/internal/impl\ngoogle.golang.org/protobuf/internal/order\ngoogle.golang.org/protobuf/internal/pragma\ngoogle.golang.org/protobuf/internal/protolazy\ngoogle.golang.org/protobuf/internal/set\ngoogle.golang.org/protobuf/internal/strs\ngoogle.golang.org/protobuf/internal/version\ngoogle.golang.org/protobuf/proto\ngoogle.golang.org/protobuf/reflect/protodesc\ngoogle.golang.org/protobuf/reflect/protoreflect\ngoogle.golang.org/protobuf/reflect/protoregistry\ngoogle.golang.org/protobuf/runtime/protoiface\ngoogle.golang.org/protobuf/runtime/protoimpl\ngoogle.golang.org/protobuf/types/descriptorpb\ngoogle.golang.org/protobuf/types/gofeaturespb\ngoogle.golang.org/protobuf/types/known/anypb\ngoogle.golang.org/protobuf/types/known/durationpb\ngoogle.golang.org/protobuf/types/known/timestamppb\n# gopkg.in/yaml.v3 v3.0.1\n## explicit\ngopkg.in/yaml.v3\n# sigs.k8s.io/yaml v1.4.0\n## explicit; go 1.12\nsigs.k8s.io/yaml\nsigs.k8s.io/yaml/goyaml.v2\n# tags.cncf.io/container-device-interface v1.1.0\n## explicit; go 1.21\ntags.cncf.io/container-device-interface/internal/validation\ntags.cncf.io/container-device-interface/internal/validation/k8s\ntags.cncf.io/container-device-interface/pkg/cdi\ntags.cncf.io/container-device-interface/pkg/parser\n# tags.cncf.io/container-device-interface/specs-go v1.1.0\n## explicit; go 1.19\ntags.cncf.io/container-device-interface/specs-go\n"
  },
  {
    "path": "vendor/sigs.k8s.io/yaml/.gitignore",
    "content": "# OSX leaves these everywhere on SMB shares\n._*\n\n# Eclipse files\n.classpath\n.project\n.settings/**\n\n# Idea files\n.idea/**\n.idea/\n\n# Emacs save files\n*~\n\n# Vim-related files\n[._]*.s[a-w][a-z]\n[._]s[a-w][a-z]\n*.un~\nSession.vim\n.netrwhist\n\n# Go test binaries\n*.test\n"
  },
  {
    "path": "vendor/sigs.k8s.io/yaml/.travis.yml",
    "content": "language: go\narch: arm64\ndist: focal\ngo: 1.15.x\nscript:\n  - diff -u <(echo -n) <(gofmt -d *.go)\n  - diff -u <(echo -n) <(golint $(go list -e ./...) | grep -v YAMLToJSON)\n  - GO111MODULE=on go vet .\n  - GO111MODULE=on go test -v -race ./...\n  - git diff --exit-code\ninstall:\n  - GO111MODULE=off go get golang.org/x/lint/golint\n"
  },
  {
    "path": "vendor/sigs.k8s.io/yaml/CONTRIBUTING.md",
    "content": "# Contributing Guidelines\n\nWelcome to Kubernetes. We are excited about the prospect of you joining our [community](https://github.com/kubernetes/community)! The Kubernetes community abides by the CNCF [code of conduct](code-of-conduct.md). Here is an excerpt:\n\n_As contributors and maintainers of this project, and in the interest of fostering an open and welcoming community, we pledge to respect all people who contribute through reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other activities._\n\n## Getting Started\n\nWe have full documentation on how to get started contributing here:\n\n<!---\nIf your repo has certain guidelines for contribution, put them here ahead of the general k8s resources\n-->\n\n- [Contributor License Agreement](https://git.k8s.io/community/CLA.md) Kubernetes projects require that you sign a Contributor License Agreement (CLA) before we can accept your pull requests\n- [Kubernetes Contributor Guide](http://git.k8s.io/community/contributors/guide) - Main contributor documentation, or you can just jump directly to the [contributing section](http://git.k8s.io/community/contributors/guide#contributing)\n- [Contributor Cheat Sheet](https://git.k8s.io/community/contributors/guide/contributor-cheatsheet.md) - Common resources for existing developers\n\n## Mentorship\n\n- [Mentoring Initiatives](https://git.k8s.io/community/mentoring) - We have a diverse set of mentorship programs available that are always looking for volunteers!\n\n<!---\nCustom Information - if you're copying this template for the first time you can add custom content here, for example:\n\n## Contact Information\n\n- [Slack channel](https://kubernetes.slack.com/messages/kubernetes-users) - Replace `kubernetes-users` with your slack channel string, this will send users directly to your channel. \n- [Mailing list](URL)\n\n-->\n"
  },
  {
    "path": "vendor/sigs.k8s.io/yaml/LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2014 Sam Ghods\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 all\ncopies 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 THE\nSOFTWARE.\n\n\nCopyright (c) 2012 The Go Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n   * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n   * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n   * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n# The forked go-yaml.v3 library under this project is covered by two\ndifferent licenses (MIT and Apache):\n\n#### MIT License ####\n\nThe following files were ported to Go from C files of libyaml, and thus\nare still covered by their original MIT license, with the additional\ncopyright staring in 2011 when the project was ported over:\n\n    apic.go emitterc.go parserc.go readerc.go scannerc.go\n    writerc.go yamlh.go yamlprivateh.go\n\nCopyright (c) 2006-2010 Kirill Simonov\nCopyright (c) 2006-2011 Kirill Simonov\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies 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 THE\nSOFTWARE.\n\n### Apache License ###\n\nAll the remaining project files are covered by the Apache license:\n\nCopyright (c) 2011-2019 Canonical Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n# The forked go-yaml.v2 library under the project is covered by an\nApache license:\n\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"{}\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright {yyyy} {name of copyright owner}\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "vendor/sigs.k8s.io/yaml/OWNERS",
    "content": "# See the OWNERS docs at https://go.k8s.io/owners\n\napprovers:\n- dims\n- jpbetz\n- smarterclayton\n- deads2k\n- sttts\n- liggitt\nreviewers:\n- dims\n- thockin\n- jpbetz\n- smarterclayton\n- wojtek-t\n- deads2k\n- derekwaynecarr\n- mikedanese\n- liggitt\n- sttts\n- tallclair\nlabels:\n- sig/api-machinery\n"
  },
  {
    "path": "vendor/sigs.k8s.io/yaml/README.md",
    "content": "# YAML marshaling and unmarshaling support for Go\n\n[![Build Status](https://travis-ci.org/kubernetes-sigs/yaml.svg)](https://travis-ci.org/kubernetes-sigs/yaml)\n\nkubernetes-sigs/yaml is a permanent fork of [ghodss/yaml](https://github.com/ghodss/yaml).\n\n## Introduction\n\nA wrapper around [go-yaml](https://github.com/go-yaml/yaml) designed to enable a better way of handling YAML when marshaling to and from structs.\n\nIn short, this library first converts YAML to JSON using go-yaml and then uses `json.Marshal` and `json.Unmarshal` to convert to or from the struct. This means that it effectively reuses the JSON struct tags as well as the custom JSON methods `MarshalJSON` and `UnmarshalJSON` unlike go-yaml. For a detailed overview of the rationale behind this method, [see this blog post](http://web.archive.org/web/20190603050330/http://ghodss.com/2014/the-right-way-to-handle-yaml-in-golang/).\n\n## Compatibility\n\nThis package uses [go-yaml](https://github.com/go-yaml/yaml) and therefore supports [everything go-yaml supports](https://github.com/go-yaml/yaml#compatibility).\n\n## Caveats\n\n**Caveat #1:** When using `yaml.Marshal` and `yaml.Unmarshal`, binary data should NOT be preceded with the `!!binary` YAML tag. If you do, go-yaml will convert the binary data from base64 to native binary data, which is not compatible with JSON. You can still use binary in your YAML files though - just store them without the `!!binary` tag and decode the base64 in your code (e.g. in the custom JSON methods `MarshalJSON` and `UnmarshalJSON`). This also has the benefit that your YAML and your JSON binary data will be decoded exactly the same way. As an example:\n\n```\nBAD:\n\texampleKey: !!binary gIGC\n\nGOOD:\n\texampleKey: gIGC\n... and decode the base64 data in your code.\n```\n\n**Caveat #2:** When using `YAMLToJSON` directly, maps with keys that are maps will result in an error since this is not supported by JSON. This error will occur in `Unmarshal` as well since you can't unmarshal map keys anyways since struct fields can't be keys.\n\n## Installation and usage\n\nTo install, run:\n\n```\n$ go get sigs.k8s.io/yaml\n```\n\nAnd import using:\n\n```\nimport \"sigs.k8s.io/yaml\"\n```\n\nUsage is very similar to the JSON library:\n\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"sigs.k8s.io/yaml\"\n)\n\ntype Person struct {\n\tName string `json:\"name\"` // Affects YAML field names too.\n\tAge  int    `json:\"age\"`\n}\n\nfunc main() {\n\t// Marshal a Person struct to YAML.\n\tp := Person{\"John\", 30}\n\ty, err := yaml.Marshal(p)\n\tif err != nil {\n\t\tfmt.Printf(\"err: %v\\n\", err)\n\t\treturn\n\t}\n\tfmt.Println(string(y))\n\t/* Output:\n\tage: 30\n\tname: John\n\t*/\n\n\t// Unmarshal the YAML back into a Person struct.\n\tvar p2 Person\n\terr = yaml.Unmarshal(y, &p2)\n\tif err != nil {\n\t\tfmt.Printf(\"err: %v\\n\", err)\n\t\treturn\n\t}\n\tfmt.Println(p2)\n\t/* Output:\n\t{John 30}\n\t*/\n}\n```\n\n`yaml.YAMLToJSON` and `yaml.JSONToYAML` methods are also available:\n\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"sigs.k8s.io/yaml\"\n)\n\nfunc main() {\n\tj := []byte(`{\"name\": \"John\", \"age\": 30}`)\n\ty, err := yaml.JSONToYAML(j)\n\tif err != nil {\n\t\tfmt.Printf(\"err: %v\\n\", err)\n\t\treturn\n\t}\n\tfmt.Println(string(y))\n\t/* Output:\n\tage: 30\n\tname: John\n\t*/\n\tj2, err := yaml.YAMLToJSON(y)\n\tif err != nil {\n\t\tfmt.Printf(\"err: %v\\n\", err)\n\t\treturn\n\t}\n\tfmt.Println(string(j2))\n\t/* Output:\n\t{\"age\":30,\"name\":\"John\"}\n\t*/\n}\n```\n"
  },
  {
    "path": "vendor/sigs.k8s.io/yaml/RELEASE.md",
    "content": "# Release Process\n\nThe `yaml` Project is released on an as-needed basis. The process is as follows:\n\n1. An issue is proposing a new release with a changelog since the last release\n1. All [OWNERS](OWNERS) must LGTM this release\n1. An OWNER runs `git tag -s $VERSION` and inserts the changelog and pushes the tag with `git push $VERSION`\n1. The release issue is closed\n1. An announcement email is sent to `kubernetes-dev@googlegroups.com` with the subject `[ANNOUNCE] kubernetes-template-project $VERSION is released`\n"
  },
  {
    "path": "vendor/sigs.k8s.io/yaml/SECURITY_CONTACTS",
    "content": "# Defined below are the security contacts for this repo.\n#\n# They are the contact point for the Product Security Team to reach out\n# to for triaging and handling of incoming issues.\n#\n# The below names agree to abide by the\n# [Embargo Policy](https://github.com/kubernetes/sig-release/blob/master/security-release-process-documentation/security-release-process.md#embargo-policy)\n# and will be removed and replaced if they violate that agreement.\n#\n# DO NOT REPORT SECURITY VULNERABILITIES DIRECTLY TO THESE NAMES, FOLLOW THE\n# INSTRUCTIONS AT https://kubernetes.io/security/\n\ncjcullen\njessfraz\nliggitt\nphilips\ntallclair\n"
  },
  {
    "path": "vendor/sigs.k8s.io/yaml/code-of-conduct.md",
    "content": "# Kubernetes Community Code of Conduct\n\nPlease refer to our [Kubernetes Community Code of Conduct](https://git.k8s.io/community/code-of-conduct.md)\n"
  },
  {
    "path": "vendor/sigs.k8s.io/yaml/fields.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage yaml\n\nimport (\n\t\"bytes\"\n\t\"encoding\"\n\t\"encoding/json\"\n\t\"reflect\"\n\t\"sort\"\n\t\"strings\"\n\t\"sync\"\n\t\"unicode\"\n\t\"unicode/utf8\"\n)\n\n// indirect walks down 'value' allocating pointers as needed,\n// until it gets to a non-pointer.\n// if it encounters an Unmarshaler, indirect stops and returns that.\n// if decodingNull is true, indirect stops at the last pointer so it can be set to nil.\nfunc indirect(value reflect.Value, decodingNull bool) (json.Unmarshaler, encoding.TextUnmarshaler, reflect.Value) {\n\t// If 'value' is a named type and is addressable,\n\t// start with its address, so that if the type has pointer methods,\n\t// we find them.\n\tif value.Kind() != reflect.Ptr && value.Type().Name() != \"\" && value.CanAddr() {\n\t\tvalue = value.Addr()\n\t}\n\tfor {\n\t\t// Load value from interface, but only if the result will be\n\t\t// usefully addressable.\n\t\tif value.Kind() == reflect.Interface && !value.IsNil() {\n\t\t\telement := value.Elem()\n\t\t\tif element.Kind() == reflect.Ptr && !element.IsNil() && (!decodingNull || element.Elem().Kind() == reflect.Ptr) {\n\t\t\t\tvalue = element\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\n\t\tif value.Kind() != reflect.Ptr {\n\t\t\tbreak\n\t\t}\n\n\t\tif value.Elem().Kind() != reflect.Ptr && decodingNull && value.CanSet() {\n\t\t\tbreak\n\t\t}\n\t\tif value.IsNil() {\n\t\t\tif value.CanSet() {\n\t\t\t\tvalue.Set(reflect.New(value.Type().Elem()))\n\t\t\t} else {\n\t\t\t\tvalue = reflect.New(value.Type().Elem())\n\t\t\t}\n\t\t}\n\t\tif value.Type().NumMethod() > 0 {\n\t\t\tif u, ok := value.Interface().(json.Unmarshaler); ok {\n\t\t\t\treturn u, nil, reflect.Value{}\n\t\t\t}\n\t\t\tif u, ok := value.Interface().(encoding.TextUnmarshaler); ok {\n\t\t\t\treturn nil, u, reflect.Value{}\n\t\t\t}\n\t\t}\n\t\tvalue = value.Elem()\n\t}\n\treturn nil, nil, value\n}\n\n// A field represents a single field found in a struct.\ntype field struct {\n\tname      string\n\tnameBytes []byte                 // []byte(name)\n\tequalFold func(s, t []byte) bool // bytes.EqualFold or equivalent\n\n\ttag       bool\n\tindex     []int\n\ttyp       reflect.Type\n\tomitEmpty bool\n\tquoted    bool\n}\n\nfunc fillField(f field) field {\n\tf.nameBytes = []byte(f.name)\n\tf.equalFold = foldFunc(f.nameBytes)\n\treturn f\n}\n\n// byName sorts field by name, breaking ties with depth,\n// then breaking ties with \"name came from json tag\", then\n// breaking ties with index sequence.\ntype byName []field\n\nfunc (x byName) Len() int { return len(x) }\n\nfunc (x byName) Swap(i, j int) { x[i], x[j] = x[j], x[i] }\n\nfunc (x byName) Less(i, j int) bool {\n\tif x[i].name != x[j].name {\n\t\treturn x[i].name < x[j].name\n\t}\n\tif len(x[i].index) != len(x[j].index) {\n\t\treturn len(x[i].index) < len(x[j].index)\n\t}\n\tif x[i].tag != x[j].tag {\n\t\treturn x[i].tag\n\t}\n\treturn byIndex(x).Less(i, j)\n}\n\n// byIndex sorts field by index sequence.\ntype byIndex []field\n\nfunc (x byIndex) Len() int { return len(x) }\n\nfunc (x byIndex) Swap(i, j int) { x[i], x[j] = x[j], x[i] }\n\nfunc (x byIndex) Less(i, j int) bool {\n\tfor k, xik := range x[i].index {\n\t\tif k >= len(x[j].index) {\n\t\t\treturn false\n\t\t}\n\t\tif xik != x[j].index[k] {\n\t\t\treturn xik < x[j].index[k]\n\t\t}\n\t}\n\treturn len(x[i].index) < len(x[j].index)\n}\n\n// typeFields returns a list of fields that JSON should recognize for the given type.\n// The algorithm is breadth-first search over the set of structs to include - the top struct\n// and then any reachable anonymous structs.\nfunc typeFields(t reflect.Type) []field {\n\t// Anonymous fields to explore at the current level and the next.\n\tcurrent := []field{}\n\tnext := []field{{typ: t}}\n\n\t// Count of queued names for current level and the next.\n\tvar count map[reflect.Type]int\n\tvar nextCount map[reflect.Type]int\n\n\t// Types already visited at an earlier level.\n\tvisited := map[reflect.Type]bool{}\n\n\t// Fields found.\n\tvar fields []field\n\n\tfor len(next) > 0 {\n\t\tcurrent, next = next, current[:0]\n\t\tcount, nextCount = nextCount, map[reflect.Type]int{}\n\n\t\tfor _, f := range current {\n\t\t\tif visited[f.typ] {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tvisited[f.typ] = true\n\n\t\t\t// Scan f.typ for fields to include.\n\t\t\tfor i := 0; i < f.typ.NumField(); i++ {\n\t\t\t\tsf := f.typ.Field(i)\n\t\t\t\tif sf.PkgPath != \"\" { // unexported\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\ttag := sf.Tag.Get(\"json\")\n\t\t\t\tif tag == \"-\" {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tname, opts := parseTag(tag)\n\t\t\t\tif !isValidTag(name) {\n\t\t\t\t\tname = \"\"\n\t\t\t\t}\n\t\t\t\tindex := make([]int, len(f.index)+1)\n\t\t\t\tcopy(index, f.index)\n\t\t\t\tindex[len(f.index)] = i\n\n\t\t\t\tft := sf.Type\n\t\t\t\tif ft.Name() == \"\" && ft.Kind() == reflect.Ptr {\n\t\t\t\t\t// Follow pointer.\n\t\t\t\t\tft = ft.Elem()\n\t\t\t\t}\n\n\t\t\t\t// Record found field and index sequence.\n\t\t\t\tif name != \"\" || !sf.Anonymous || ft.Kind() != reflect.Struct {\n\t\t\t\t\ttagged := name != \"\"\n\t\t\t\t\tif name == \"\" {\n\t\t\t\t\t\tname = sf.Name\n\t\t\t\t\t}\n\t\t\t\t\tfields = append(fields, fillField(field{\n\t\t\t\t\t\tname:      name,\n\t\t\t\t\t\ttag:       tagged,\n\t\t\t\t\t\tindex:     index,\n\t\t\t\t\t\ttyp:       ft,\n\t\t\t\t\t\tomitEmpty: opts.Contains(\"omitempty\"),\n\t\t\t\t\t\tquoted:    opts.Contains(\"string\"),\n\t\t\t\t\t}))\n\t\t\t\t\tif count[f.typ] > 1 {\n\t\t\t\t\t\t// If there were multiple instances, add a second,\n\t\t\t\t\t\t// so that the annihilation code will see a duplicate.\n\t\t\t\t\t\t// It only cares about the distinction between 1 or 2,\n\t\t\t\t\t\t// so don't bother generating any more copies.\n\t\t\t\t\t\tfields = append(fields, fields[len(fields)-1])\n\t\t\t\t\t}\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\t// Record new anonymous struct to explore in next round.\n\t\t\t\tnextCount[ft]++\n\t\t\t\tif nextCount[ft] == 1 {\n\t\t\t\t\tnext = append(next, fillField(field{name: ft.Name(), index: index, typ: ft}))\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tsort.Sort(byName(fields))\n\n\t// Delete all fields that are hidden by the Go rules for embedded fields,\n\t// except that fields with JSON tags are promoted.\n\n\t// The fields are sorted in primary order of name, secondary order\n\t// of field index length. Loop over names; for each name, delete\n\t// hidden fields by choosing the one dominant field that survives.\n\tout := fields[:0]\n\tfor advance, i := 0, 0; i < len(fields); i += advance {\n\t\t// One iteration per name.\n\t\t// Find the sequence of fields with the name of this first field.\n\t\tfi := fields[i]\n\t\tname := fi.name\n\t\tfor advance = 1; i+advance < len(fields); advance++ {\n\t\t\tfj := fields[i+advance]\n\t\t\tif fj.name != name {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif advance == 1 { // Only one field with this name\n\t\t\tout = append(out, fi)\n\t\t\tcontinue\n\t\t}\n\t\tdominant, ok := dominantField(fields[i : i+advance])\n\t\tif ok {\n\t\t\tout = append(out, dominant)\n\t\t}\n\t}\n\n\tfields = out\n\tsort.Sort(byIndex(fields))\n\n\treturn fields\n}\n\n// dominantField looks through the fields, all of which are known to\n// have the same name, to find the single field that dominates the\n// others using Go's embedding rules, modified by the presence of\n// JSON tags. If there are multiple top-level fields, the boolean\n// will be false: This condition is an error in Go and we skip all\n// the fields.\nfunc dominantField(fields []field) (field, bool) {\n\t// The fields are sorted in increasing index-length order. The winner\n\t// must therefore be one with the shortest index length. Drop all\n\t// longer entries, which is easy: just truncate the slice.\n\tlength := len(fields[0].index)\n\ttagged := -1 // Index of first tagged field.\n\tfor i, f := range fields {\n\t\tif len(f.index) > length {\n\t\t\tfields = fields[:i]\n\t\t\tbreak\n\t\t}\n\t\tif f.tag {\n\t\t\tif tagged >= 0 {\n\t\t\t\t// Multiple tagged fields at the same level: conflict.\n\t\t\t\t// Return no field.\n\t\t\t\treturn field{}, false\n\t\t\t}\n\t\t\ttagged = i\n\t\t}\n\t}\n\tif tagged >= 0 {\n\t\treturn fields[tagged], true\n\t}\n\t// All remaining fields have the same length. If there's more than one,\n\t// we have a conflict (two fields named \"X\" at the same level) and we\n\t// return no field.\n\tif len(fields) > 1 {\n\t\treturn field{}, false\n\t}\n\treturn fields[0], true\n}\n\nvar fieldCache struct {\n\tsync.RWMutex\n\tm map[reflect.Type][]field\n}\n\n// cachedTypeFields is like typeFields but uses a cache to avoid repeated work.\nfunc cachedTypeFields(t reflect.Type) []field {\n\tfieldCache.RLock()\n\tf := fieldCache.m[t]\n\tfieldCache.RUnlock()\n\tif f != nil {\n\t\treturn f\n\t}\n\n\t// Compute fields without lock.\n\t// Might duplicate effort but won't hold other computations back.\n\tf = typeFields(t)\n\tif f == nil {\n\t\tf = []field{}\n\t}\n\n\tfieldCache.Lock()\n\tif fieldCache.m == nil {\n\t\tfieldCache.m = map[reflect.Type][]field{}\n\t}\n\tfieldCache.m[t] = f\n\tfieldCache.Unlock()\n\treturn f\n}\n\nfunc isValidTag(s string) bool {\n\tif s == \"\" {\n\t\treturn false\n\t}\n\tfor _, c := range s {\n\t\tswitch {\n\t\tcase strings.ContainsRune(\"!#$%&()*+-./:<=>?@[]^_{|}~ \", c):\n\t\t\t// Backslash and quote chars are reserved, but\n\t\t\t// otherwise any punctuation chars are allowed\n\t\t\t// in a tag name.\n\t\tdefault:\n\t\t\tif !unicode.IsLetter(c) && !unicode.IsDigit(c) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t}\n\treturn true\n}\n\nconst (\n\tcaseMask     = ^byte(0x20) // Mask to ignore case in ASCII.\n\tkelvin       = '\\u212a'\n\tsmallLongEss = '\\u017f'\n)\n\n// foldFunc returns one of four different case folding equivalence\n// functions, from most general (and slow) to fastest:\n//\n// 1) bytes.EqualFold, if the key s contains any non-ASCII UTF-8\n// 2) equalFoldRight, if s contains special folding ASCII ('k', 'K', 's', 'S')\n// 3) asciiEqualFold, no special, but includes non-letters (including _)\n// 4) simpleLetterEqualFold, no specials, no non-letters.\n//\n// The letters S and K are special because they map to 3 runes, not just 2:\n//   - S maps to s and to U+017F 'ſ' Latin small letter long s\n//   - k maps to K and to U+212A 'K' Kelvin sign\n//\n// See http://play.golang.org/p/tTxjOc0OGo\n//\n// The returned function is specialized for matching against s and\n// should only be given s. It's not curried for performance reasons.\nfunc foldFunc(s []byte) func(s, t []byte) bool {\n\tnonLetter := false\n\tspecial := false // special letter\n\tfor _, b := range s {\n\t\tif b >= utf8.RuneSelf {\n\t\t\treturn bytes.EqualFold\n\t\t}\n\t\tupper := b & caseMask\n\t\tif upper < 'A' || upper > 'Z' {\n\t\t\tnonLetter = true\n\t\t} else if upper == 'K' || upper == 'S' {\n\t\t\t// See above for why these letters are special.\n\t\t\tspecial = true\n\t\t}\n\t}\n\tif special {\n\t\treturn equalFoldRight\n\t}\n\tif nonLetter {\n\t\treturn asciiEqualFold\n\t}\n\treturn simpleLetterEqualFold\n}\n\n// equalFoldRight is a specialization of bytes.EqualFold when s is\n// known to be all ASCII (including punctuation), but contains an 's',\n// 'S', 'k', or 'K', requiring a Unicode fold on the bytes in t.\n// See comments on foldFunc.\nfunc equalFoldRight(s, t []byte) bool {\n\tfor _, sb := range s {\n\t\tif len(t) == 0 {\n\t\t\treturn false\n\t\t}\n\t\ttb := t[0]\n\t\tif tb < utf8.RuneSelf {\n\t\t\tif sb != tb {\n\t\t\t\tsbUpper := sb & caseMask\n\t\t\t\tif 'A' <= sbUpper && sbUpper <= 'Z' {\n\t\t\t\t\tif sbUpper != tb&caseMask {\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tt = t[1:]\n\t\t\tcontinue\n\t\t}\n\t\t// sb is ASCII and t is not. t must be either kelvin\n\t\t// sign or long s; sb must be s, S, k, or K.\n\t\ttr, size := utf8.DecodeRune(t)\n\t\tswitch sb {\n\t\tcase 's', 'S':\n\t\t\tif tr != smallLongEss {\n\t\t\t\treturn false\n\t\t\t}\n\t\tcase 'k', 'K':\n\t\t\tif tr != kelvin {\n\t\t\t\treturn false\n\t\t\t}\n\t\tdefault:\n\t\t\treturn false\n\t\t}\n\t\tt = t[size:]\n\n\t}\n\n\treturn len(t) <= 0\n}\n\n// asciiEqualFold is a specialization of bytes.EqualFold for use when\n// s is all ASCII (but may contain non-letters) and contains no\n// special-folding letters.\n// See comments on foldFunc.\nfunc asciiEqualFold(s, t []byte) bool {\n\tif len(s) != len(t) {\n\t\treturn false\n\t}\n\tfor i, sb := range s {\n\t\ttb := t[i]\n\t\tif sb == tb {\n\t\t\tcontinue\n\t\t}\n\t\tif ('a' <= sb && sb <= 'z') || ('A' <= sb && sb <= 'Z') {\n\t\t\tif sb&caseMask != tb&caseMask {\n\t\t\t\treturn false\n\t\t\t}\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// simpleLetterEqualFold is a specialization of bytes.EqualFold for\n// use when s is all ASCII letters (no underscores, etc) and also\n// doesn't contain 'k', 'K', 's', or 'S'.\n// See comments on foldFunc.\nfunc simpleLetterEqualFold(s, t []byte) bool {\n\tif len(s) != len(t) {\n\t\treturn false\n\t}\n\tfor i, b := range s {\n\t\tif b&caseMask != t[i]&caseMask {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// tagOptions is the string following a comma in a struct field's \"json\"\n// tag, or the empty string. It does not include the leading comma.\ntype tagOptions string\n\n// parseTag splits a struct field's json tag into its name and\n// comma-separated options.\nfunc parseTag(tag string) (string, tagOptions) {\n\tif idx := strings.Index(tag, \",\"); idx != -1 {\n\t\treturn tag[:idx], tagOptions(tag[idx+1:])\n\t}\n\treturn tag, tagOptions(\"\")\n}\n\n// Contains reports whether a comma-separated list of options\n// contains a particular substr flag. substr must be surrounded by a\n// string boundary or commas.\nfunc (o tagOptions) Contains(optionName string) bool {\n\tif len(o) == 0 {\n\t\treturn false\n\t}\n\ts := string(o)\n\tfor s != \"\" {\n\t\tvar next string\n\t\ti := strings.Index(s, \",\")\n\t\tif i >= 0 {\n\t\t\ts, next = s[:i], s[i+1:]\n\t\t}\n\t\tif s == optionName {\n\t\t\treturn true\n\t\t}\n\t\ts = next\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "vendor/sigs.k8s.io/yaml/goyaml.v2/LICENSE",
    "content": "                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"{}\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright {yyyy} {name of copyright owner}\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "vendor/sigs.k8s.io/yaml/goyaml.v2/LICENSE.libyaml",
    "content": "The following files were ported to Go from C files of libyaml, and thus\nare still covered by their original copyright and license:\n\n    apic.go\n    emitterc.go\n    parserc.go\n    readerc.go\n    scannerc.go\n    writerc.go\n    yamlh.go\n    yamlprivateh.go\n\nCopyright (c) 2006 Kirill Simonov\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies 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 THE\nSOFTWARE.\n"
  },
  {
    "path": "vendor/sigs.k8s.io/yaml/goyaml.v2/NOTICE",
    "content": "Copyright 2011-2016 Canonical Ltd.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n"
  },
  {
    "path": "vendor/sigs.k8s.io/yaml/goyaml.v2/OWNERS",
    "content": "# See the OWNERS docs at https://go.k8s.io/owners\n\napprovers:\n- dims\n- jpbetz\n- smarterclayton\n- deads2k\n- sttts\n- liggitt\n- natasha41575\n- knverey\nreviewers:\n- dims\n- thockin\n- jpbetz\n- smarterclayton\n- deads2k\n- derekwaynecarr\n- mikedanese\n- liggitt\n- sttts\n- tallclair\nlabels:\n- sig/api-machinery\n"
  },
  {
    "path": "vendor/sigs.k8s.io/yaml/goyaml.v2/README.md",
    "content": "# go-yaml fork\n\nThis package is a fork of the go-yaml library and is intended solely for consumption\nby kubernetes projects. In this fork, we plan to support only critical changes required for\nkubernetes, such as small bug fixes and regressions. Larger, general-purpose feature requests\nshould be made in the upstream go-yaml library, and we will reject such changes in this fork\nunless we are pulling them from upstream.\n\nThis fork is based on v2.4.0: https://github.com/go-yaml/yaml/releases/tag/v2.4.0\n\n# YAML support for the Go language\n\nIntroduction\n------------\n\nThe yaml package enables Go programs to comfortably encode and decode YAML\nvalues. It was developed within [Canonical](https://www.canonical.com) as\npart of the [juju](https://juju.ubuntu.com) project, and is based on a\npure Go port of the well-known [libyaml](http://pyyaml.org/wiki/LibYAML)\nC library to parse and generate YAML data quickly and reliably.\n\nCompatibility\n-------------\n\nThe yaml package supports most of YAML 1.1 and 1.2, including support for\nanchors, tags, map merging, etc. Multi-document unmarshalling is not yet\nimplemented, and base-60 floats from YAML 1.1 are purposefully not\nsupported since they're a poor design and are gone in YAML 1.2.\n\nInstallation and usage\n----------------------\n\nThe import path for the package is *gopkg.in/yaml.v2*.\n\nTo install it, run:\n\n    go get gopkg.in/yaml.v2\n\nAPI documentation\n-----------------\n\nIf opened in a browser, the import path itself leads to the API documentation:\n\n  * [https://gopkg.in/yaml.v2](https://gopkg.in/yaml.v2)\n\nAPI stability\n-------------\n\nThe package API for yaml v2 will remain stable as described in [gopkg.in](https://gopkg.in).\n\n\nLicense\n-------\n\nThe yaml package is licensed under the Apache License 2.0. Please see the LICENSE file for details.\n\n\nExample\n-------\n\n```Go\npackage main\n\nimport (\n        \"fmt\"\n        \"log\"\n\n        \"gopkg.in/yaml.v2\"\n)\n\nvar data = `\na: Easy!\nb:\n  c: 2\n  d: [3, 4]\n`\n\n// Note: struct fields must be public in order for unmarshal to\n// correctly populate the data.\ntype T struct {\n        A string\n        B struct {\n                RenamedC int   `yaml:\"c\"`\n                D        []int `yaml:\",flow\"`\n        }\n}\n\nfunc main() {\n        t := T{}\n    \n        err := yaml.Unmarshal([]byte(data), &t)\n        if err != nil {\n                log.Fatalf(\"error: %v\", err)\n        }\n        fmt.Printf(\"--- t:\\n%v\\n\\n\", t)\n    \n        d, err := yaml.Marshal(&t)\n        if err != nil {\n                log.Fatalf(\"error: %v\", err)\n        }\n        fmt.Printf(\"--- t dump:\\n%s\\n\\n\", string(d))\n    \n        m := make(map[interface{}]interface{})\n    \n        err = yaml.Unmarshal([]byte(data), &m)\n        if err != nil {\n                log.Fatalf(\"error: %v\", err)\n        }\n        fmt.Printf(\"--- m:\\n%v\\n\\n\", m)\n    \n        d, err = yaml.Marshal(&m)\n        if err != nil {\n                log.Fatalf(\"error: %v\", err)\n        }\n        fmt.Printf(\"--- m dump:\\n%s\\n\\n\", string(d))\n}\n```\n\nThis example will generate the following output:\n\n```\n--- t:\n{Easy! {2 [3 4]}}\n\n--- t dump:\na: Easy!\nb:\n  c: 2\n  d: [3, 4]\n\n\n--- m:\nmap[a:Easy! b:map[c:2 d:[3 4]]]\n\n--- m dump:\na: Easy!\nb:\n  c: 2\n  d:\n  - 3\n  - 4\n```\n\n"
  },
  {
    "path": "vendor/sigs.k8s.io/yaml/goyaml.v2/apic.go",
    "content": "package yaml\n\nimport (\n\t\"io\"\n)\n\nfunc yaml_insert_token(parser *yaml_parser_t, pos int, token *yaml_token_t) {\n\t//fmt.Println(\"yaml_insert_token\", \"pos:\", pos, \"typ:\", token.typ, \"head:\", parser.tokens_head, \"len:\", len(parser.tokens))\n\n\t// Check if we can move the queue at the beginning of the buffer.\n\tif parser.tokens_head > 0 && len(parser.tokens) == cap(parser.tokens) {\n\t\tif parser.tokens_head != len(parser.tokens) {\n\t\t\tcopy(parser.tokens, parser.tokens[parser.tokens_head:])\n\t\t}\n\t\tparser.tokens = parser.tokens[:len(parser.tokens)-parser.tokens_head]\n\t\tparser.tokens_head = 0\n\t}\n\tparser.tokens = append(parser.tokens, *token)\n\tif pos < 0 {\n\t\treturn\n\t}\n\tcopy(parser.tokens[parser.tokens_head+pos+1:], parser.tokens[parser.tokens_head+pos:])\n\tparser.tokens[parser.tokens_head+pos] = *token\n}\n\n// Create a new parser object.\nfunc yaml_parser_initialize(parser *yaml_parser_t) bool {\n\t*parser = yaml_parser_t{\n\t\traw_buffer: make([]byte, 0, input_raw_buffer_size),\n\t\tbuffer:     make([]byte, 0, input_buffer_size),\n\t}\n\treturn true\n}\n\n// Destroy a parser object.\nfunc yaml_parser_delete(parser *yaml_parser_t) {\n\t*parser = yaml_parser_t{}\n}\n\n// String read handler.\nfunc yaml_string_read_handler(parser *yaml_parser_t, buffer []byte) (n int, err error) {\n\tif parser.input_pos == len(parser.input) {\n\t\treturn 0, io.EOF\n\t}\n\tn = copy(buffer, parser.input[parser.input_pos:])\n\tparser.input_pos += n\n\treturn n, nil\n}\n\n// Reader read handler.\nfunc yaml_reader_read_handler(parser *yaml_parser_t, buffer []byte) (n int, err error) {\n\treturn parser.input_reader.Read(buffer)\n}\n\n// Set a string input.\nfunc yaml_parser_set_input_string(parser *yaml_parser_t, input []byte) {\n\tif parser.read_handler != nil {\n\t\tpanic(\"must set the input source only once\")\n\t}\n\tparser.read_handler = yaml_string_read_handler\n\tparser.input = input\n\tparser.input_pos = 0\n}\n\n// Set a file input.\nfunc yaml_parser_set_input_reader(parser *yaml_parser_t, r io.Reader) {\n\tif parser.read_handler != nil {\n\t\tpanic(\"must set the input source only once\")\n\t}\n\tparser.read_handler = yaml_reader_read_handler\n\tparser.input_reader = r\n}\n\n// Set the source encoding.\nfunc yaml_parser_set_encoding(parser *yaml_parser_t, encoding yaml_encoding_t) {\n\tif parser.encoding != yaml_ANY_ENCODING {\n\t\tpanic(\"must set the encoding only once\")\n\t}\n\tparser.encoding = encoding\n}\n\nvar disableLineWrapping = false\n\n// Create a new emitter object.\nfunc yaml_emitter_initialize(emitter *yaml_emitter_t) {\n\t*emitter = yaml_emitter_t{\n\t\tbuffer:     make([]byte, output_buffer_size),\n\t\traw_buffer: make([]byte, 0, output_raw_buffer_size),\n\t\tstates:     make([]yaml_emitter_state_t, 0, initial_stack_size),\n\t\tevents:     make([]yaml_event_t, 0, initial_queue_size),\n\t}\n\tif disableLineWrapping {\n\t\temitter.best_width = -1\n\t}\n}\n\n// Destroy an emitter object.\nfunc yaml_emitter_delete(emitter *yaml_emitter_t) {\n\t*emitter = yaml_emitter_t{}\n}\n\n// String write handler.\nfunc yaml_string_write_handler(emitter *yaml_emitter_t, buffer []byte) error {\n\t*emitter.output_buffer = append(*emitter.output_buffer, buffer...)\n\treturn nil\n}\n\n// yaml_writer_write_handler uses emitter.output_writer to write the\n// emitted text.\nfunc yaml_writer_write_handler(emitter *yaml_emitter_t, buffer []byte) error {\n\t_, err := emitter.output_writer.Write(buffer)\n\treturn err\n}\n\n// Set a string output.\nfunc yaml_emitter_set_output_string(emitter *yaml_emitter_t, output_buffer *[]byte) {\n\tif emitter.write_handler != nil {\n\t\tpanic(\"must set the output target only once\")\n\t}\n\temitter.write_handler = yaml_string_write_handler\n\temitter.output_buffer = output_buffer\n}\n\n// Set a file output.\nfunc yaml_emitter_set_output_writer(emitter *yaml_emitter_t, w io.Writer) {\n\tif emitter.write_handler != nil {\n\t\tpanic(\"must set the output target only once\")\n\t}\n\temitter.write_handler = yaml_writer_write_handler\n\temitter.output_writer = w\n}\n\n// Set the output encoding.\nfunc yaml_emitter_set_encoding(emitter *yaml_emitter_t, encoding yaml_encoding_t) {\n\tif emitter.encoding != yaml_ANY_ENCODING {\n\t\tpanic(\"must set the output encoding only once\")\n\t}\n\temitter.encoding = encoding\n}\n\n// Set the canonical output style.\nfunc yaml_emitter_set_canonical(emitter *yaml_emitter_t, canonical bool) {\n\temitter.canonical = canonical\n}\n\n//// Set the indentation increment.\nfunc yaml_emitter_set_indent(emitter *yaml_emitter_t, indent int) {\n\tif indent < 2 || indent > 9 {\n\t\tindent = 2\n\t}\n\temitter.best_indent = indent\n}\n\n// Set the preferred line width.\nfunc yaml_emitter_set_width(emitter *yaml_emitter_t, width int) {\n\tif width < 0 {\n\t\twidth = -1\n\t}\n\temitter.best_width = width\n}\n\n// Set if unescaped non-ASCII characters are allowed.\nfunc yaml_emitter_set_unicode(emitter *yaml_emitter_t, unicode bool) {\n\temitter.unicode = unicode\n}\n\n// Set the preferred line break character.\nfunc yaml_emitter_set_break(emitter *yaml_emitter_t, line_break yaml_break_t) {\n\temitter.line_break = line_break\n}\n\n///*\n// * Destroy a token object.\n// */\n//\n//YAML_DECLARE(void)\n//yaml_token_delete(yaml_token_t *token)\n//{\n//    assert(token);  // Non-NULL token object expected.\n//\n//    switch (token.type)\n//    {\n//        case YAML_TAG_DIRECTIVE_TOKEN:\n//            yaml_free(token.data.tag_directive.handle);\n//            yaml_free(token.data.tag_directive.prefix);\n//            break;\n//\n//        case YAML_ALIAS_TOKEN:\n//            yaml_free(token.data.alias.value);\n//            break;\n//\n//        case YAML_ANCHOR_TOKEN:\n//            yaml_free(token.data.anchor.value);\n//            break;\n//\n//        case YAML_TAG_TOKEN:\n//            yaml_free(token.data.tag.handle);\n//            yaml_free(token.data.tag.suffix);\n//            break;\n//\n//        case YAML_SCALAR_TOKEN:\n//            yaml_free(token.data.scalar.value);\n//            break;\n//\n//        default:\n//            break;\n//    }\n//\n//    memset(token, 0, sizeof(yaml_token_t));\n//}\n//\n///*\n// * Check if a string is a valid UTF-8 sequence.\n// *\n// * Check 'reader.c' for more details on UTF-8 encoding.\n// */\n//\n//static int\n//yaml_check_utf8(yaml_char_t *start, size_t length)\n//{\n//    yaml_char_t *end = start+length;\n//    yaml_char_t *pointer = start;\n//\n//    while (pointer < end) {\n//        unsigned char octet;\n//        unsigned int width;\n//        unsigned int value;\n//        size_t k;\n//\n//        octet = pointer[0];\n//        width = (octet & 0x80) == 0x00 ? 1 :\n//                (octet & 0xE0) == 0xC0 ? 2 :\n//                (octet & 0xF0) == 0xE0 ? 3 :\n//                (octet & 0xF8) == 0xF0 ? 4 : 0;\n//        value = (octet & 0x80) == 0x00 ? octet & 0x7F :\n//                (octet & 0xE0) == 0xC0 ? octet & 0x1F :\n//                (octet & 0xF0) == 0xE0 ? octet & 0x0F :\n//                (octet & 0xF8) == 0xF0 ? octet & 0x07 : 0;\n//        if (!width) return 0;\n//        if (pointer+width > end) return 0;\n//        for (k = 1; k < width; k ++) {\n//            octet = pointer[k];\n//            if ((octet & 0xC0) != 0x80) return 0;\n//            value = (value << 6) + (octet & 0x3F);\n//        }\n//        if (!((width == 1) ||\n//            (width == 2 && value >= 0x80) ||\n//            (width == 3 && value >= 0x800) ||\n//            (width == 4 && value >= 0x10000))) return 0;\n//\n//        pointer += width;\n//    }\n//\n//    return 1;\n//}\n//\n\n// Create STREAM-START.\nfunc yaml_stream_start_event_initialize(event *yaml_event_t, encoding yaml_encoding_t) {\n\t*event = yaml_event_t{\n\t\ttyp:      yaml_STREAM_START_EVENT,\n\t\tencoding: encoding,\n\t}\n}\n\n// Create STREAM-END.\nfunc yaml_stream_end_event_initialize(event *yaml_event_t) {\n\t*event = yaml_event_t{\n\t\ttyp: yaml_STREAM_END_EVENT,\n\t}\n}\n\n// Create DOCUMENT-START.\nfunc yaml_document_start_event_initialize(\n\tevent *yaml_event_t,\n\tversion_directive *yaml_version_directive_t,\n\ttag_directives []yaml_tag_directive_t,\n\timplicit bool,\n) {\n\t*event = yaml_event_t{\n\t\ttyp:               yaml_DOCUMENT_START_EVENT,\n\t\tversion_directive: version_directive,\n\t\ttag_directives:    tag_directives,\n\t\timplicit:          implicit,\n\t}\n}\n\n// Create DOCUMENT-END.\nfunc yaml_document_end_event_initialize(event *yaml_event_t, implicit bool) {\n\t*event = yaml_event_t{\n\t\ttyp:      yaml_DOCUMENT_END_EVENT,\n\t\timplicit: implicit,\n\t}\n}\n\n///*\n// * Create ALIAS.\n// */\n//\n//YAML_DECLARE(int)\n//yaml_alias_event_initialize(event *yaml_event_t, anchor *yaml_char_t)\n//{\n//    mark yaml_mark_t = { 0, 0, 0 }\n//    anchor_copy *yaml_char_t = NULL\n//\n//    assert(event) // Non-NULL event object is expected.\n//    assert(anchor) // Non-NULL anchor is expected.\n//\n//    if (!yaml_check_utf8(anchor, strlen((char *)anchor))) return 0\n//\n//    anchor_copy = yaml_strdup(anchor)\n//    if (!anchor_copy)\n//        return 0\n//\n//    ALIAS_EVENT_INIT(*event, anchor_copy, mark, mark)\n//\n//    return 1\n//}\n\n// Create SCALAR.\nfunc yaml_scalar_event_initialize(event *yaml_event_t, anchor, tag, value []byte, plain_implicit, quoted_implicit bool, style yaml_scalar_style_t) bool {\n\t*event = yaml_event_t{\n\t\ttyp:             yaml_SCALAR_EVENT,\n\t\tanchor:          anchor,\n\t\ttag:             tag,\n\t\tvalue:           value,\n\t\timplicit:        plain_implicit,\n\t\tquoted_implicit: quoted_implicit,\n\t\tstyle:           yaml_style_t(style),\n\t}\n\treturn true\n}\n\n// Create SEQUENCE-START.\nfunc yaml_sequence_start_event_initialize(event *yaml_event_t, anchor, tag []byte, implicit bool, style yaml_sequence_style_t) bool {\n\t*event = yaml_event_t{\n\t\ttyp:      yaml_SEQUENCE_START_EVENT,\n\t\tanchor:   anchor,\n\t\ttag:      tag,\n\t\timplicit: implicit,\n\t\tstyle:    yaml_style_t(style),\n\t}\n\treturn true\n}\n\n// Create SEQUENCE-END.\nfunc yaml_sequence_end_event_initialize(event *yaml_event_t) bool {\n\t*event = yaml_event_t{\n\t\ttyp: yaml_SEQUENCE_END_EVENT,\n\t}\n\treturn true\n}\n\n// Create MAPPING-START.\nfunc yaml_mapping_start_event_initialize(event *yaml_event_t, anchor, tag []byte, implicit bool, style yaml_mapping_style_t) {\n\t*event = yaml_event_t{\n\t\ttyp:      yaml_MAPPING_START_EVENT,\n\t\tanchor:   anchor,\n\t\ttag:      tag,\n\t\timplicit: implicit,\n\t\tstyle:    yaml_style_t(style),\n\t}\n}\n\n// Create MAPPING-END.\nfunc yaml_mapping_end_event_initialize(event *yaml_event_t) {\n\t*event = yaml_event_t{\n\t\ttyp: yaml_MAPPING_END_EVENT,\n\t}\n}\n\n// Destroy an event object.\nfunc yaml_event_delete(event *yaml_event_t) {\n\t*event = yaml_event_t{}\n}\n\n///*\n// * Create a document object.\n// */\n//\n//YAML_DECLARE(int)\n//yaml_document_initialize(document *yaml_document_t,\n//        version_directive *yaml_version_directive_t,\n//        tag_directives_start *yaml_tag_directive_t,\n//        tag_directives_end *yaml_tag_directive_t,\n//        start_implicit int, end_implicit int)\n//{\n//    struct {\n//        error yaml_error_type_t\n//    } context\n//    struct {\n//        start *yaml_node_t\n//        end *yaml_node_t\n//        top *yaml_node_t\n//    } nodes = { NULL, NULL, NULL }\n//    version_directive_copy *yaml_version_directive_t = NULL\n//    struct {\n//        start *yaml_tag_directive_t\n//        end *yaml_tag_directive_t\n//        top *yaml_tag_directive_t\n//    } tag_directives_copy = { NULL, NULL, NULL }\n//    value yaml_tag_directive_t = { NULL, NULL }\n//    mark yaml_mark_t = { 0, 0, 0 }\n//\n//    assert(document) // Non-NULL document object is expected.\n//    assert((tag_directives_start && tag_directives_end) ||\n//            (tag_directives_start == tag_directives_end))\n//                            // Valid tag directives are expected.\n//\n//    if (!STACK_INIT(&context, nodes, INITIAL_STACK_SIZE)) goto error\n//\n//    if (version_directive) {\n//        version_directive_copy = yaml_malloc(sizeof(yaml_version_directive_t))\n//        if (!version_directive_copy) goto error\n//        version_directive_copy.major = version_directive.major\n//        version_directive_copy.minor = version_directive.minor\n//    }\n//\n//    if (tag_directives_start != tag_directives_end) {\n//        tag_directive *yaml_tag_directive_t\n//        if (!STACK_INIT(&context, tag_directives_copy, INITIAL_STACK_SIZE))\n//            goto error\n//        for (tag_directive = tag_directives_start\n//                tag_directive != tag_directives_end; tag_directive ++) {\n//            assert(tag_directive.handle)\n//            assert(tag_directive.prefix)\n//            if (!yaml_check_utf8(tag_directive.handle,\n//                        strlen((char *)tag_directive.handle)))\n//                goto error\n//            if (!yaml_check_utf8(tag_directive.prefix,\n//                        strlen((char *)tag_directive.prefix)))\n//                goto error\n//            value.handle = yaml_strdup(tag_directive.handle)\n//            value.prefix = yaml_strdup(tag_directive.prefix)\n//            if (!value.handle || !value.prefix) goto error\n//            if (!PUSH(&context, tag_directives_copy, value))\n//                goto error\n//            value.handle = NULL\n//            value.prefix = NULL\n//        }\n//    }\n//\n//    DOCUMENT_INIT(*document, nodes.start, nodes.end, version_directive_copy,\n//            tag_directives_copy.start, tag_directives_copy.top,\n//            start_implicit, end_implicit, mark, mark)\n//\n//    return 1\n//\n//error:\n//    STACK_DEL(&context, nodes)\n//    yaml_free(version_directive_copy)\n//    while (!STACK_EMPTY(&context, tag_directives_copy)) {\n//        value yaml_tag_directive_t = POP(&context, tag_directives_copy)\n//        yaml_free(value.handle)\n//        yaml_free(value.prefix)\n//    }\n//    STACK_DEL(&context, tag_directives_copy)\n//    yaml_free(value.handle)\n//    yaml_free(value.prefix)\n//\n//    return 0\n//}\n//\n///*\n// * Destroy a document object.\n// */\n//\n//YAML_DECLARE(void)\n//yaml_document_delete(document *yaml_document_t)\n//{\n//    struct {\n//        error yaml_error_type_t\n//    } context\n//    tag_directive *yaml_tag_directive_t\n//\n//    context.error = YAML_NO_ERROR // Eliminate a compiler warning.\n//\n//    assert(document) // Non-NULL document object is expected.\n//\n//    while (!STACK_EMPTY(&context, document.nodes)) {\n//        node yaml_node_t = POP(&context, document.nodes)\n//        yaml_free(node.tag)\n//        switch (node.type) {\n//            case YAML_SCALAR_NODE:\n//                yaml_free(node.data.scalar.value)\n//                break\n//            case YAML_SEQUENCE_NODE:\n//                STACK_DEL(&context, node.data.sequence.items)\n//                break\n//            case YAML_MAPPING_NODE:\n//                STACK_DEL(&context, node.data.mapping.pairs)\n//                break\n//            default:\n//                assert(0) // Should not happen.\n//        }\n//    }\n//    STACK_DEL(&context, document.nodes)\n//\n//    yaml_free(document.version_directive)\n//    for (tag_directive = document.tag_directives.start\n//            tag_directive != document.tag_directives.end\n//            tag_directive++) {\n//        yaml_free(tag_directive.handle)\n//        yaml_free(tag_directive.prefix)\n//    }\n//    yaml_free(document.tag_directives.start)\n//\n//    memset(document, 0, sizeof(yaml_document_t))\n//}\n//\n///**\n// * Get a document node.\n// */\n//\n//YAML_DECLARE(yaml_node_t *)\n//yaml_document_get_node(document *yaml_document_t, index int)\n//{\n//    assert(document) // Non-NULL document object is expected.\n//\n//    if (index > 0 && document.nodes.start + index <= document.nodes.top) {\n//        return document.nodes.start + index - 1\n//    }\n//    return NULL\n//}\n//\n///**\n// * Get the root object.\n// */\n//\n//YAML_DECLARE(yaml_node_t *)\n//yaml_document_get_root_node(document *yaml_document_t)\n//{\n//    assert(document) // Non-NULL document object is expected.\n//\n//    if (document.nodes.top != document.nodes.start) {\n//        return document.nodes.start\n//    }\n//    return NULL\n//}\n//\n///*\n// * Add a scalar node to a document.\n// */\n//\n//YAML_DECLARE(int)\n//yaml_document_add_scalar(document *yaml_document_t,\n//        tag *yaml_char_t, value *yaml_char_t, length int,\n//        style yaml_scalar_style_t)\n//{\n//    struct {\n//        error yaml_error_type_t\n//    } context\n//    mark yaml_mark_t = { 0, 0, 0 }\n//    tag_copy *yaml_char_t = NULL\n//    value_copy *yaml_char_t = NULL\n//    node yaml_node_t\n//\n//    assert(document) // Non-NULL document object is expected.\n//    assert(value) // Non-NULL value is expected.\n//\n//    if (!tag) {\n//        tag = (yaml_char_t *)YAML_DEFAULT_SCALAR_TAG\n//    }\n//\n//    if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error\n//    tag_copy = yaml_strdup(tag)\n//    if (!tag_copy) goto error\n//\n//    if (length < 0) {\n//        length = strlen((char *)value)\n//    }\n//\n//    if (!yaml_check_utf8(value, length)) goto error\n//    value_copy = yaml_malloc(length+1)\n//    if (!value_copy) goto error\n//    memcpy(value_copy, value, length)\n//    value_copy[length] = '\\0'\n//\n//    SCALAR_NODE_INIT(node, tag_copy, value_copy, length, style, mark, mark)\n//    if (!PUSH(&context, document.nodes, node)) goto error\n//\n//    return document.nodes.top - document.nodes.start\n//\n//error:\n//    yaml_free(tag_copy)\n//    yaml_free(value_copy)\n//\n//    return 0\n//}\n//\n///*\n// * Add a sequence node to a document.\n// */\n//\n//YAML_DECLARE(int)\n//yaml_document_add_sequence(document *yaml_document_t,\n//        tag *yaml_char_t, style yaml_sequence_style_t)\n//{\n//    struct {\n//        error yaml_error_type_t\n//    } context\n//    mark yaml_mark_t = { 0, 0, 0 }\n//    tag_copy *yaml_char_t = NULL\n//    struct {\n//        start *yaml_node_item_t\n//        end *yaml_node_item_t\n//        top *yaml_node_item_t\n//    } items = { NULL, NULL, NULL }\n//    node yaml_node_t\n//\n//    assert(document) // Non-NULL document object is expected.\n//\n//    if (!tag) {\n//        tag = (yaml_char_t *)YAML_DEFAULT_SEQUENCE_TAG\n//    }\n//\n//    if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error\n//    tag_copy = yaml_strdup(tag)\n//    if (!tag_copy) goto error\n//\n//    if (!STACK_INIT(&context, items, INITIAL_STACK_SIZE)) goto error\n//\n//    SEQUENCE_NODE_INIT(node, tag_copy, items.start, items.end,\n//            style, mark, mark)\n//    if (!PUSH(&context, document.nodes, node)) goto error\n//\n//    return document.nodes.top - document.nodes.start\n//\n//error:\n//    STACK_DEL(&context, items)\n//    yaml_free(tag_copy)\n//\n//    return 0\n//}\n//\n///*\n// * Add a mapping node to a document.\n// */\n//\n//YAML_DECLARE(int)\n//yaml_document_add_mapping(document *yaml_document_t,\n//        tag *yaml_char_t, style yaml_mapping_style_t)\n//{\n//    struct {\n//        error yaml_error_type_t\n//    } context\n//    mark yaml_mark_t = { 0, 0, 0 }\n//    tag_copy *yaml_char_t = NULL\n//    struct {\n//        start *yaml_node_pair_t\n//        end *yaml_node_pair_t\n//        top *yaml_node_pair_t\n//    } pairs = { NULL, NULL, NULL }\n//    node yaml_node_t\n//\n//    assert(document) // Non-NULL document object is expected.\n//\n//    if (!tag) {\n//        tag = (yaml_char_t *)YAML_DEFAULT_MAPPING_TAG\n//    }\n//\n//    if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error\n//    tag_copy = yaml_strdup(tag)\n//    if (!tag_copy) goto error\n//\n//    if (!STACK_INIT(&context, pairs, INITIAL_STACK_SIZE)) goto error\n//\n//    MAPPING_NODE_INIT(node, tag_copy, pairs.start, pairs.end,\n//            style, mark, mark)\n//    if (!PUSH(&context, document.nodes, node)) goto error\n//\n//    return document.nodes.top - document.nodes.start\n//\n//error:\n//    STACK_DEL(&context, pairs)\n//    yaml_free(tag_copy)\n//\n//    return 0\n//}\n//\n///*\n// * Append an item to a sequence node.\n// */\n//\n//YAML_DECLARE(int)\n//yaml_document_append_sequence_item(document *yaml_document_t,\n//        sequence int, item int)\n//{\n//    struct {\n//        error yaml_error_type_t\n//    } context\n//\n//    assert(document) // Non-NULL document is required.\n//    assert(sequence > 0\n//            && document.nodes.start + sequence <= document.nodes.top)\n//                            // Valid sequence id is required.\n//    assert(document.nodes.start[sequence-1].type == YAML_SEQUENCE_NODE)\n//                            // A sequence node is required.\n//    assert(item > 0 && document.nodes.start + item <= document.nodes.top)\n//                            // Valid item id is required.\n//\n//    if (!PUSH(&context,\n//                document.nodes.start[sequence-1].data.sequence.items, item))\n//        return 0\n//\n//    return 1\n//}\n//\n///*\n// * Append a pair of a key and a value to a mapping node.\n// */\n//\n//YAML_DECLARE(int)\n//yaml_document_append_mapping_pair(document *yaml_document_t,\n//        mapping int, key int, value int)\n//{\n//    struct {\n//        error yaml_error_type_t\n//    } context\n//\n//    pair yaml_node_pair_t\n//\n//    assert(document) // Non-NULL document is required.\n//    assert(mapping > 0\n//            && document.nodes.start + mapping <= document.nodes.top)\n//                            // Valid mapping id is required.\n//    assert(document.nodes.start[mapping-1].type == YAML_MAPPING_NODE)\n//                            // A mapping node is required.\n//    assert(key > 0 && document.nodes.start + key <= document.nodes.top)\n//                            // Valid key id is required.\n//    assert(value > 0 && document.nodes.start + value <= document.nodes.top)\n//                            // Valid value id is required.\n//\n//    pair.key = key\n//    pair.value = value\n//\n//    if (!PUSH(&context,\n//                document.nodes.start[mapping-1].data.mapping.pairs, pair))\n//        return 0\n//\n//    return 1\n//}\n//\n//\n"
  },
  {
    "path": "vendor/sigs.k8s.io/yaml/goyaml.v2/decode.go",
    "content": "package yaml\n\nimport (\n\t\"encoding\"\n\t\"encoding/base64\"\n\t\"fmt\"\n\t\"io\"\n\t\"math\"\n\t\"reflect\"\n\t\"strconv\"\n\t\"time\"\n)\n\nconst (\n\tdocumentNode = 1 << iota\n\tmappingNode\n\tsequenceNode\n\tscalarNode\n\taliasNode\n)\n\ntype node struct {\n\tkind         int\n\tline, column int\n\ttag          string\n\t// For an alias node, alias holds the resolved alias.\n\talias    *node\n\tvalue    string\n\timplicit bool\n\tchildren []*node\n\tanchors  map[string]*node\n}\n\n// ----------------------------------------------------------------------------\n// Parser, produces a node tree out of a libyaml event stream.\n\ntype parser struct {\n\tparser   yaml_parser_t\n\tevent    yaml_event_t\n\tdoc      *node\n\tdoneInit bool\n}\n\nfunc newParser(b []byte) *parser {\n\tp := parser{}\n\tif !yaml_parser_initialize(&p.parser) {\n\t\tpanic(\"failed to initialize YAML emitter\")\n\t}\n\tif len(b) == 0 {\n\t\tb = []byte{'\\n'}\n\t}\n\tyaml_parser_set_input_string(&p.parser, b)\n\treturn &p\n}\n\nfunc newParserFromReader(r io.Reader) *parser {\n\tp := parser{}\n\tif !yaml_parser_initialize(&p.parser) {\n\t\tpanic(\"failed to initialize YAML emitter\")\n\t}\n\tyaml_parser_set_input_reader(&p.parser, r)\n\treturn &p\n}\n\nfunc (p *parser) init() {\n\tif p.doneInit {\n\t\treturn\n\t}\n\tp.expect(yaml_STREAM_START_EVENT)\n\tp.doneInit = true\n}\n\nfunc (p *parser) destroy() {\n\tif p.event.typ != yaml_NO_EVENT {\n\t\tyaml_event_delete(&p.event)\n\t}\n\tyaml_parser_delete(&p.parser)\n}\n\n// expect consumes an event from the event stream and\n// checks that it's of the expected type.\nfunc (p *parser) expect(e yaml_event_type_t) {\n\tif p.event.typ == yaml_NO_EVENT {\n\t\tif !yaml_parser_parse(&p.parser, &p.event) {\n\t\t\tp.fail()\n\t\t}\n\t}\n\tif p.event.typ == yaml_STREAM_END_EVENT {\n\t\tfailf(\"attempted to go past the end of stream; corrupted value?\")\n\t}\n\tif p.event.typ != e {\n\t\tp.parser.problem = fmt.Sprintf(\"expected %s event but got %s\", e, p.event.typ)\n\t\tp.fail()\n\t}\n\tyaml_event_delete(&p.event)\n\tp.event.typ = yaml_NO_EVENT\n}\n\n// peek peeks at the next event in the event stream,\n// puts the results into p.event and returns the event type.\nfunc (p *parser) peek() yaml_event_type_t {\n\tif p.event.typ != yaml_NO_EVENT {\n\t\treturn p.event.typ\n\t}\n\tif !yaml_parser_parse(&p.parser, &p.event) {\n\t\tp.fail()\n\t}\n\treturn p.event.typ\n}\n\nfunc (p *parser) fail() {\n\tvar where string\n\tvar line int\n\tif p.parser.problem_mark.line != 0 {\n\t\tline = p.parser.problem_mark.line\n\t\t// Scanner errors don't iterate line before returning error\n\t\tif p.parser.error == yaml_SCANNER_ERROR {\n\t\t\tline++\n\t\t}\n\t} else if p.parser.context_mark.line != 0 {\n\t\tline = p.parser.context_mark.line\n\t}\n\tif line != 0 {\n\t\twhere = \"line \" + strconv.Itoa(line) + \": \"\n\t}\n\tvar msg string\n\tif len(p.parser.problem) > 0 {\n\t\tmsg = p.parser.problem\n\t} else {\n\t\tmsg = \"unknown problem parsing YAML content\"\n\t}\n\tfailf(\"%s%s\", where, msg)\n}\n\nfunc (p *parser) anchor(n *node, anchor []byte) {\n\tif anchor != nil {\n\t\tp.doc.anchors[string(anchor)] = n\n\t}\n}\n\nfunc (p *parser) parse() *node {\n\tp.init()\n\tswitch p.peek() {\n\tcase yaml_SCALAR_EVENT:\n\t\treturn p.scalar()\n\tcase yaml_ALIAS_EVENT:\n\t\treturn p.alias()\n\tcase yaml_MAPPING_START_EVENT:\n\t\treturn p.mapping()\n\tcase yaml_SEQUENCE_START_EVENT:\n\t\treturn p.sequence()\n\tcase yaml_DOCUMENT_START_EVENT:\n\t\treturn p.document()\n\tcase yaml_STREAM_END_EVENT:\n\t\t// Happens when attempting to decode an empty buffer.\n\t\treturn nil\n\tdefault:\n\t\tpanic(\"attempted to parse unknown event: \" + p.event.typ.String())\n\t}\n}\n\nfunc (p *parser) node(kind int) *node {\n\treturn &node{\n\t\tkind:   kind,\n\t\tline:   p.event.start_mark.line,\n\t\tcolumn: p.event.start_mark.column,\n\t}\n}\n\nfunc (p *parser) document() *node {\n\tn := p.node(documentNode)\n\tn.anchors = make(map[string]*node)\n\tp.doc = n\n\tp.expect(yaml_DOCUMENT_START_EVENT)\n\tn.children = append(n.children, p.parse())\n\tp.expect(yaml_DOCUMENT_END_EVENT)\n\treturn n\n}\n\nfunc (p *parser) alias() *node {\n\tn := p.node(aliasNode)\n\tn.value = string(p.event.anchor)\n\tn.alias = p.doc.anchors[n.value]\n\tif n.alias == nil {\n\t\tfailf(\"unknown anchor '%s' referenced\", n.value)\n\t}\n\tp.expect(yaml_ALIAS_EVENT)\n\treturn n\n}\n\nfunc (p *parser) scalar() *node {\n\tn := p.node(scalarNode)\n\tn.value = string(p.event.value)\n\tn.tag = string(p.event.tag)\n\tn.implicit = p.event.implicit\n\tp.anchor(n, p.event.anchor)\n\tp.expect(yaml_SCALAR_EVENT)\n\treturn n\n}\n\nfunc (p *parser) sequence() *node {\n\tn := p.node(sequenceNode)\n\tp.anchor(n, p.event.anchor)\n\tp.expect(yaml_SEQUENCE_START_EVENT)\n\tfor p.peek() != yaml_SEQUENCE_END_EVENT {\n\t\tn.children = append(n.children, p.parse())\n\t}\n\tp.expect(yaml_SEQUENCE_END_EVENT)\n\treturn n\n}\n\nfunc (p *parser) mapping() *node {\n\tn := p.node(mappingNode)\n\tp.anchor(n, p.event.anchor)\n\tp.expect(yaml_MAPPING_START_EVENT)\n\tfor p.peek() != yaml_MAPPING_END_EVENT {\n\t\tn.children = append(n.children, p.parse(), p.parse())\n\t}\n\tp.expect(yaml_MAPPING_END_EVENT)\n\treturn n\n}\n\n// ----------------------------------------------------------------------------\n// Decoder, unmarshals a node into a provided value.\n\ntype decoder struct {\n\tdoc     *node\n\taliases map[*node]bool\n\tmapType reflect.Type\n\tterrors []string\n\tstrict  bool\n\n\tdecodeCount int\n\taliasCount  int\n\taliasDepth  int\n}\n\nvar (\n\tmapItemType    = reflect.TypeOf(MapItem{})\n\tdurationType   = reflect.TypeOf(time.Duration(0))\n\tdefaultMapType = reflect.TypeOf(map[interface{}]interface{}{})\n\tifaceType      = defaultMapType.Elem()\n\ttimeType       = reflect.TypeOf(time.Time{})\n\tptrTimeType    = reflect.TypeOf(&time.Time{})\n)\n\nfunc newDecoder(strict bool) *decoder {\n\td := &decoder{mapType: defaultMapType, strict: strict}\n\td.aliases = make(map[*node]bool)\n\treturn d\n}\n\nfunc (d *decoder) terror(n *node, tag string, out reflect.Value) {\n\tif n.tag != \"\" {\n\t\ttag = n.tag\n\t}\n\tvalue := n.value\n\tif tag != yaml_SEQ_TAG && tag != yaml_MAP_TAG {\n\t\tif len(value) > 10 {\n\t\t\tvalue = \" `\" + value[:7] + \"...`\"\n\t\t} else {\n\t\t\tvalue = \" `\" + value + \"`\"\n\t\t}\n\t}\n\td.terrors = append(d.terrors, fmt.Sprintf(\"line %d: cannot unmarshal %s%s into %s\", n.line+1, shortTag(tag), value, out.Type()))\n}\n\nfunc (d *decoder) callUnmarshaler(n *node, u Unmarshaler) (good bool) {\n\tterrlen := len(d.terrors)\n\terr := u.UnmarshalYAML(func(v interface{}) (err error) {\n\t\tdefer handleErr(&err)\n\t\td.unmarshal(n, reflect.ValueOf(v))\n\t\tif len(d.terrors) > terrlen {\n\t\t\tissues := d.terrors[terrlen:]\n\t\t\td.terrors = d.terrors[:terrlen]\n\t\t\treturn &TypeError{issues}\n\t\t}\n\t\treturn nil\n\t})\n\tif e, ok := err.(*TypeError); ok {\n\t\td.terrors = append(d.terrors, e.Errors...)\n\t\treturn false\n\t}\n\tif err != nil {\n\t\tfail(err)\n\t}\n\treturn true\n}\n\n// d.prepare initializes and dereferences pointers and calls UnmarshalYAML\n// if a value is found to implement it.\n// It returns the initialized and dereferenced out value, whether\n// unmarshalling was already done by UnmarshalYAML, and if so whether\n// its types unmarshalled appropriately.\n//\n// If n holds a null value, prepare returns before doing anything.\nfunc (d *decoder) prepare(n *node, out reflect.Value) (newout reflect.Value, unmarshaled, good bool) {\n\tif n.tag == yaml_NULL_TAG || n.kind == scalarNode && n.tag == \"\" && (n.value == \"null\" || n.value == \"~\" || n.value == \"\" && n.implicit) {\n\t\treturn out, false, false\n\t}\n\tagain := true\n\tfor again {\n\t\tagain = false\n\t\tif out.Kind() == reflect.Ptr {\n\t\t\tif out.IsNil() {\n\t\t\t\tout.Set(reflect.New(out.Type().Elem()))\n\t\t\t}\n\t\t\tout = out.Elem()\n\t\t\tagain = true\n\t\t}\n\t\tif out.CanAddr() {\n\t\t\tif u, ok := out.Addr().Interface().(Unmarshaler); ok {\n\t\t\t\tgood = d.callUnmarshaler(n, u)\n\t\t\t\treturn out, true, good\n\t\t\t}\n\t\t}\n\t}\n\treturn out, false, false\n}\n\nconst (\n\t// 400,000 decode operations is ~500kb of dense object declarations, or\n\t// ~5kb of dense object declarations with 10000% alias expansion\n\talias_ratio_range_low = 400000\n\n\t// 4,000,000 decode operations is ~5MB of dense object declarations, or\n\t// ~4.5MB of dense object declarations with 10% alias expansion\n\talias_ratio_range_high = 4000000\n\n\t// alias_ratio_range is the range over which we scale allowed alias ratios\n\talias_ratio_range = float64(alias_ratio_range_high - alias_ratio_range_low)\n)\n\nfunc allowedAliasRatio(decodeCount int) float64 {\n\tswitch {\n\tcase decodeCount <= alias_ratio_range_low:\n\t\t// allow 99% to come from alias expansion for small-to-medium documents\n\t\treturn 0.99\n\tcase decodeCount >= alias_ratio_range_high:\n\t\t// allow 10% to come from alias expansion for very large documents\n\t\treturn 0.10\n\tdefault:\n\t\t// scale smoothly from 99% down to 10% over the range.\n\t\t// this maps to 396,000 - 400,000 allowed alias-driven decodes over the range.\n\t\t// 400,000 decode operations is ~100MB of allocations in worst-case scenarios (single-item maps).\n\t\treturn 0.99 - 0.89*(float64(decodeCount-alias_ratio_range_low)/alias_ratio_range)\n\t}\n}\n\nfunc (d *decoder) unmarshal(n *node, out reflect.Value) (good bool) {\n\td.decodeCount++\n\tif d.aliasDepth > 0 {\n\t\td.aliasCount++\n\t}\n\tif d.aliasCount > 100 && d.decodeCount > 1000 && float64(d.aliasCount)/float64(d.decodeCount) > allowedAliasRatio(d.decodeCount) {\n\t\tfailf(\"document contains excessive aliasing\")\n\t}\n\tswitch n.kind {\n\tcase documentNode:\n\t\treturn d.document(n, out)\n\tcase aliasNode:\n\t\treturn d.alias(n, out)\n\t}\n\tout, unmarshaled, good := d.prepare(n, out)\n\tif unmarshaled {\n\t\treturn good\n\t}\n\tswitch n.kind {\n\tcase scalarNode:\n\t\tgood = d.scalar(n, out)\n\tcase mappingNode:\n\t\tgood = d.mapping(n, out)\n\tcase sequenceNode:\n\t\tgood = d.sequence(n, out)\n\tdefault:\n\t\tpanic(\"internal error: unknown node kind: \" + strconv.Itoa(n.kind))\n\t}\n\treturn good\n}\n\nfunc (d *decoder) document(n *node, out reflect.Value) (good bool) {\n\tif len(n.children) == 1 {\n\t\td.doc = n\n\t\td.unmarshal(n.children[0], out)\n\t\treturn true\n\t}\n\treturn false\n}\n\nfunc (d *decoder) alias(n *node, out reflect.Value) (good bool) {\n\tif d.aliases[n] {\n\t\t// TODO this could actually be allowed in some circumstances.\n\t\tfailf(\"anchor '%s' value contains itself\", n.value)\n\t}\n\td.aliases[n] = true\n\td.aliasDepth++\n\tgood = d.unmarshal(n.alias, out)\n\td.aliasDepth--\n\tdelete(d.aliases, n)\n\treturn good\n}\n\nvar zeroValue reflect.Value\n\nfunc resetMap(out reflect.Value) {\n\tfor _, k := range out.MapKeys() {\n\t\tout.SetMapIndex(k, zeroValue)\n\t}\n}\n\nfunc (d *decoder) scalar(n *node, out reflect.Value) bool {\n\tvar tag string\n\tvar resolved interface{}\n\tif n.tag == \"\" && !n.implicit {\n\t\ttag = yaml_STR_TAG\n\t\tresolved = n.value\n\t} else {\n\t\ttag, resolved = resolve(n.tag, n.value)\n\t\tif tag == yaml_BINARY_TAG {\n\t\t\tdata, err := base64.StdEncoding.DecodeString(resolved.(string))\n\t\t\tif err != nil {\n\t\t\t\tfailf(\"!!binary value contains invalid base64 data\")\n\t\t\t}\n\t\t\tresolved = string(data)\n\t\t}\n\t}\n\tif resolved == nil {\n\t\tif out.Kind() == reflect.Map && !out.CanAddr() {\n\t\t\tresetMap(out)\n\t\t} else {\n\t\t\tout.Set(reflect.Zero(out.Type()))\n\t\t}\n\t\treturn true\n\t}\n\tif resolvedv := reflect.ValueOf(resolved); out.Type() == resolvedv.Type() {\n\t\t// We've resolved to exactly the type we want, so use that.\n\t\tout.Set(resolvedv)\n\t\treturn true\n\t}\n\t// Perhaps we can use the value as a TextUnmarshaler to\n\t// set its value.\n\tif out.CanAddr() {\n\t\tu, ok := out.Addr().Interface().(encoding.TextUnmarshaler)\n\t\tif ok {\n\t\t\tvar text []byte\n\t\t\tif tag == yaml_BINARY_TAG {\n\t\t\t\ttext = []byte(resolved.(string))\n\t\t\t} else {\n\t\t\t\t// We let any value be unmarshaled into TextUnmarshaler.\n\t\t\t\t// That might be more lax than we'd like, but the\n\t\t\t\t// TextUnmarshaler itself should bowl out any dubious values.\n\t\t\t\ttext = []byte(n.value)\n\t\t\t}\n\t\t\terr := u.UnmarshalText(text)\n\t\t\tif err != nil {\n\t\t\t\tfail(err)\n\t\t\t}\n\t\t\treturn true\n\t\t}\n\t}\n\tswitch out.Kind() {\n\tcase reflect.String:\n\t\tif tag == yaml_BINARY_TAG {\n\t\t\tout.SetString(resolved.(string))\n\t\t\treturn true\n\t\t}\n\t\tif resolved != nil {\n\t\t\tout.SetString(n.value)\n\t\t\treturn true\n\t\t}\n\tcase reflect.Interface:\n\t\tif resolved == nil {\n\t\t\tout.Set(reflect.Zero(out.Type()))\n\t\t} else if tag == yaml_TIMESTAMP_TAG {\n\t\t\t// It looks like a timestamp but for backward compatibility\n\t\t\t// reasons we set it as a string, so that code that unmarshals\n\t\t\t// timestamp-like values into interface{} will continue to\n\t\t\t// see a string and not a time.Time.\n\t\t\t// TODO(v3) Drop this.\n\t\t\tout.Set(reflect.ValueOf(n.value))\n\t\t} else {\n\t\t\tout.Set(reflect.ValueOf(resolved))\n\t\t}\n\t\treturn true\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\tswitch resolved := resolved.(type) {\n\t\tcase int:\n\t\t\tif !out.OverflowInt(int64(resolved)) {\n\t\t\t\tout.SetInt(int64(resolved))\n\t\t\t\treturn true\n\t\t\t}\n\t\tcase int64:\n\t\t\tif !out.OverflowInt(resolved) {\n\t\t\t\tout.SetInt(resolved)\n\t\t\t\treturn true\n\t\t\t}\n\t\tcase uint64:\n\t\t\tif resolved <= math.MaxInt64 && !out.OverflowInt(int64(resolved)) {\n\t\t\t\tout.SetInt(int64(resolved))\n\t\t\t\treturn true\n\t\t\t}\n\t\tcase float64:\n\t\t\tif resolved <= math.MaxInt64 && !out.OverflowInt(int64(resolved)) {\n\t\t\t\tout.SetInt(int64(resolved))\n\t\t\t\treturn true\n\t\t\t}\n\t\tcase string:\n\t\t\tif out.Type() == durationType {\n\t\t\t\td, err := time.ParseDuration(resolved)\n\t\t\t\tif err == nil {\n\t\t\t\t\tout.SetInt(int64(d))\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\tswitch resolved := resolved.(type) {\n\t\tcase int:\n\t\t\tif resolved >= 0 && !out.OverflowUint(uint64(resolved)) {\n\t\t\t\tout.SetUint(uint64(resolved))\n\t\t\t\treturn true\n\t\t\t}\n\t\tcase int64:\n\t\t\tif resolved >= 0 && !out.OverflowUint(uint64(resolved)) {\n\t\t\t\tout.SetUint(uint64(resolved))\n\t\t\t\treturn true\n\t\t\t}\n\t\tcase uint64:\n\t\t\tif !out.OverflowUint(uint64(resolved)) {\n\t\t\t\tout.SetUint(uint64(resolved))\n\t\t\t\treturn true\n\t\t\t}\n\t\tcase float64:\n\t\t\tif resolved <= math.MaxUint64 && !out.OverflowUint(uint64(resolved)) {\n\t\t\t\tout.SetUint(uint64(resolved))\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\tcase reflect.Bool:\n\t\tswitch resolved := resolved.(type) {\n\t\tcase bool:\n\t\t\tout.SetBool(resolved)\n\t\t\treturn true\n\t\t}\n\tcase reflect.Float32, reflect.Float64:\n\t\tswitch resolved := resolved.(type) {\n\t\tcase int:\n\t\t\tout.SetFloat(float64(resolved))\n\t\t\treturn true\n\t\tcase int64:\n\t\t\tout.SetFloat(float64(resolved))\n\t\t\treturn true\n\t\tcase uint64:\n\t\t\tout.SetFloat(float64(resolved))\n\t\t\treturn true\n\t\tcase float64:\n\t\t\tout.SetFloat(resolved)\n\t\t\treturn true\n\t\t}\n\tcase reflect.Struct:\n\t\tif resolvedv := reflect.ValueOf(resolved); out.Type() == resolvedv.Type() {\n\t\t\tout.Set(resolvedv)\n\t\t\treturn true\n\t\t}\n\tcase reflect.Ptr:\n\t\tif out.Type().Elem() == reflect.TypeOf(resolved) {\n\t\t\t// TODO DOes this make sense? When is out a Ptr except when decoding a nil value?\n\t\t\telem := reflect.New(out.Type().Elem())\n\t\t\telem.Elem().Set(reflect.ValueOf(resolved))\n\t\t\tout.Set(elem)\n\t\t\treturn true\n\t\t}\n\t}\n\td.terror(n, tag, out)\n\treturn false\n}\n\nfunc settableValueOf(i interface{}) reflect.Value {\n\tv := reflect.ValueOf(i)\n\tsv := reflect.New(v.Type()).Elem()\n\tsv.Set(v)\n\treturn sv\n}\n\nfunc (d *decoder) sequence(n *node, out reflect.Value) (good bool) {\n\tl := len(n.children)\n\n\tvar iface reflect.Value\n\tswitch out.Kind() {\n\tcase reflect.Slice:\n\t\tout.Set(reflect.MakeSlice(out.Type(), l, l))\n\tcase reflect.Array:\n\t\tif l != out.Len() {\n\t\t\tfailf(\"invalid array: want %d elements but got %d\", out.Len(), l)\n\t\t}\n\tcase reflect.Interface:\n\t\t// No type hints. Will have to use a generic sequence.\n\t\tiface = out\n\t\tout = settableValueOf(make([]interface{}, l))\n\tdefault:\n\t\td.terror(n, yaml_SEQ_TAG, out)\n\t\treturn false\n\t}\n\tet := out.Type().Elem()\n\n\tj := 0\n\tfor i := 0; i < l; i++ {\n\t\te := reflect.New(et).Elem()\n\t\tif ok := d.unmarshal(n.children[i], e); ok {\n\t\t\tout.Index(j).Set(e)\n\t\t\tj++\n\t\t}\n\t}\n\tif out.Kind() != reflect.Array {\n\t\tout.Set(out.Slice(0, j))\n\t}\n\tif iface.IsValid() {\n\t\tiface.Set(out)\n\t}\n\treturn true\n}\n\nfunc (d *decoder) mapping(n *node, out reflect.Value) (good bool) {\n\tswitch out.Kind() {\n\tcase reflect.Struct:\n\t\treturn d.mappingStruct(n, out)\n\tcase reflect.Slice:\n\t\treturn d.mappingSlice(n, out)\n\tcase reflect.Map:\n\t\t// okay\n\tcase reflect.Interface:\n\t\tif d.mapType.Kind() == reflect.Map {\n\t\t\tiface := out\n\t\t\tout = reflect.MakeMap(d.mapType)\n\t\t\tiface.Set(out)\n\t\t} else {\n\t\t\tslicev := reflect.New(d.mapType).Elem()\n\t\t\tif !d.mappingSlice(n, slicev) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tout.Set(slicev)\n\t\t\treturn true\n\t\t}\n\tdefault:\n\t\td.terror(n, yaml_MAP_TAG, out)\n\t\treturn false\n\t}\n\toutt := out.Type()\n\tkt := outt.Key()\n\tet := outt.Elem()\n\n\tmapType := d.mapType\n\tif outt.Key() == ifaceType && outt.Elem() == ifaceType {\n\t\td.mapType = outt\n\t}\n\n\tif out.IsNil() {\n\t\tout.Set(reflect.MakeMap(outt))\n\t}\n\tl := len(n.children)\n\tfor i := 0; i < l; i += 2 {\n\t\tif isMerge(n.children[i]) {\n\t\t\td.merge(n.children[i+1], out)\n\t\t\tcontinue\n\t\t}\n\t\tk := reflect.New(kt).Elem()\n\t\tif d.unmarshal(n.children[i], k) {\n\t\t\tkkind := k.Kind()\n\t\t\tif kkind == reflect.Interface {\n\t\t\t\tkkind = k.Elem().Kind()\n\t\t\t}\n\t\t\tif kkind == reflect.Map || kkind == reflect.Slice {\n\t\t\t\tfailf(\"invalid map key: %#v\", k.Interface())\n\t\t\t}\n\t\t\te := reflect.New(et).Elem()\n\t\t\tif d.unmarshal(n.children[i+1], e) {\n\t\t\t\td.setMapIndex(n.children[i+1], out, k, e)\n\t\t\t}\n\t\t}\n\t}\n\td.mapType = mapType\n\treturn true\n}\n\nfunc (d *decoder) setMapIndex(n *node, out, k, v reflect.Value) {\n\tif d.strict && out.MapIndex(k) != zeroValue {\n\t\td.terrors = append(d.terrors, fmt.Sprintf(\"line %d: key %#v already set in map\", n.line+1, k.Interface()))\n\t\treturn\n\t}\n\tout.SetMapIndex(k, v)\n}\n\nfunc (d *decoder) mappingSlice(n *node, out reflect.Value) (good bool) {\n\toutt := out.Type()\n\tif outt.Elem() != mapItemType {\n\t\td.terror(n, yaml_MAP_TAG, out)\n\t\treturn false\n\t}\n\n\tmapType := d.mapType\n\td.mapType = outt\n\n\tvar slice []MapItem\n\tvar l = len(n.children)\n\tfor i := 0; i < l; i += 2 {\n\t\tif isMerge(n.children[i]) {\n\t\t\td.merge(n.children[i+1], out)\n\t\t\tcontinue\n\t\t}\n\t\titem := MapItem{}\n\t\tk := reflect.ValueOf(&item.Key).Elem()\n\t\tif d.unmarshal(n.children[i], k) {\n\t\t\tv := reflect.ValueOf(&item.Value).Elem()\n\t\t\tif d.unmarshal(n.children[i+1], v) {\n\t\t\t\tslice = append(slice, item)\n\t\t\t}\n\t\t}\n\t}\n\tout.Set(reflect.ValueOf(slice))\n\td.mapType = mapType\n\treturn true\n}\n\nfunc (d *decoder) mappingStruct(n *node, out reflect.Value) (good bool) {\n\tsinfo, err := getStructInfo(out.Type())\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tname := settableValueOf(\"\")\n\tl := len(n.children)\n\n\tvar inlineMap reflect.Value\n\tvar elemType reflect.Type\n\tif sinfo.InlineMap != -1 {\n\t\tinlineMap = out.Field(sinfo.InlineMap)\n\t\tinlineMap.Set(reflect.New(inlineMap.Type()).Elem())\n\t\telemType = inlineMap.Type().Elem()\n\t}\n\n\tvar doneFields []bool\n\tif d.strict {\n\t\tdoneFields = make([]bool, len(sinfo.FieldsList))\n\t}\n\tfor i := 0; i < l; i += 2 {\n\t\tni := n.children[i]\n\t\tif isMerge(ni) {\n\t\t\td.merge(n.children[i+1], out)\n\t\t\tcontinue\n\t\t}\n\t\tif !d.unmarshal(ni, name) {\n\t\t\tcontinue\n\t\t}\n\t\tif info, ok := sinfo.FieldsMap[name.String()]; ok {\n\t\t\tif d.strict {\n\t\t\t\tif doneFields[info.Id] {\n\t\t\t\t\td.terrors = append(d.terrors, fmt.Sprintf(\"line %d: field %s already set in type %s\", ni.line+1, name.String(), out.Type()))\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tdoneFields[info.Id] = true\n\t\t\t}\n\t\t\tvar field reflect.Value\n\t\t\tif info.Inline == nil {\n\t\t\t\tfield = out.Field(info.Num)\n\t\t\t} else {\n\t\t\t\tfield = out.FieldByIndex(info.Inline)\n\t\t\t}\n\t\t\td.unmarshal(n.children[i+1], field)\n\t\t} else if sinfo.InlineMap != -1 {\n\t\t\tif inlineMap.IsNil() {\n\t\t\t\tinlineMap.Set(reflect.MakeMap(inlineMap.Type()))\n\t\t\t}\n\t\t\tvalue := reflect.New(elemType).Elem()\n\t\t\td.unmarshal(n.children[i+1], value)\n\t\t\td.setMapIndex(n.children[i+1], inlineMap, name, value)\n\t\t} else if d.strict {\n\t\t\td.terrors = append(d.terrors, fmt.Sprintf(\"line %d: field %s not found in type %s\", ni.line+1, name.String(), out.Type()))\n\t\t}\n\t}\n\treturn true\n}\n\nfunc failWantMap() {\n\tfailf(\"map merge requires map or sequence of maps as the value\")\n}\n\nfunc (d *decoder) merge(n *node, out reflect.Value) {\n\tswitch n.kind {\n\tcase mappingNode:\n\t\td.unmarshal(n, out)\n\tcase aliasNode:\n\t\tif n.alias != nil && n.alias.kind != mappingNode {\n\t\t\tfailWantMap()\n\t\t}\n\t\td.unmarshal(n, out)\n\tcase sequenceNode:\n\t\t// Step backwards as earlier nodes take precedence.\n\t\tfor i := len(n.children) - 1; i >= 0; i-- {\n\t\t\tni := n.children[i]\n\t\t\tif ni.kind == aliasNode {\n\t\t\t\tif ni.alias != nil && ni.alias.kind != mappingNode {\n\t\t\t\t\tfailWantMap()\n\t\t\t\t}\n\t\t\t} else if ni.kind != mappingNode {\n\t\t\t\tfailWantMap()\n\t\t\t}\n\t\t\td.unmarshal(ni, out)\n\t\t}\n\tdefault:\n\t\tfailWantMap()\n\t}\n}\n\nfunc isMerge(n *node) bool {\n\treturn n.kind == scalarNode && n.value == \"<<\" && (n.implicit == true || n.tag == yaml_MERGE_TAG)\n}\n"
  },
  {
    "path": "vendor/sigs.k8s.io/yaml/goyaml.v2/emitterc.go",
    "content": "package yaml\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n)\n\n// Flush the buffer if needed.\nfunc flush(emitter *yaml_emitter_t) bool {\n\tif emitter.buffer_pos+5 >= len(emitter.buffer) {\n\t\treturn yaml_emitter_flush(emitter)\n\t}\n\treturn true\n}\n\n// Put a character to the output buffer.\nfunc put(emitter *yaml_emitter_t, value byte) bool {\n\tif emitter.buffer_pos+5 >= len(emitter.buffer) && !yaml_emitter_flush(emitter) {\n\t\treturn false\n\t}\n\temitter.buffer[emitter.buffer_pos] = value\n\temitter.buffer_pos++\n\temitter.column++\n\treturn true\n}\n\n// Put a line break to the output buffer.\nfunc put_break(emitter *yaml_emitter_t) bool {\n\tif emitter.buffer_pos+5 >= len(emitter.buffer) && !yaml_emitter_flush(emitter) {\n\t\treturn false\n\t}\n\tswitch emitter.line_break {\n\tcase yaml_CR_BREAK:\n\t\temitter.buffer[emitter.buffer_pos] = '\\r'\n\t\temitter.buffer_pos += 1\n\tcase yaml_LN_BREAK:\n\t\temitter.buffer[emitter.buffer_pos] = '\\n'\n\t\temitter.buffer_pos += 1\n\tcase yaml_CRLN_BREAK:\n\t\temitter.buffer[emitter.buffer_pos+0] = '\\r'\n\t\temitter.buffer[emitter.buffer_pos+1] = '\\n'\n\t\temitter.buffer_pos += 2\n\tdefault:\n\t\tpanic(\"unknown line break setting\")\n\t}\n\temitter.column = 0\n\temitter.line++\n\treturn true\n}\n\n// Copy a character from a string into buffer.\nfunc write(emitter *yaml_emitter_t, s []byte, i *int) bool {\n\tif emitter.buffer_pos+5 >= len(emitter.buffer) && !yaml_emitter_flush(emitter) {\n\t\treturn false\n\t}\n\tp := emitter.buffer_pos\n\tw := width(s[*i])\n\tswitch w {\n\tcase 4:\n\t\temitter.buffer[p+3] = s[*i+3]\n\t\tfallthrough\n\tcase 3:\n\t\temitter.buffer[p+2] = s[*i+2]\n\t\tfallthrough\n\tcase 2:\n\t\temitter.buffer[p+1] = s[*i+1]\n\t\tfallthrough\n\tcase 1:\n\t\temitter.buffer[p+0] = s[*i+0]\n\tdefault:\n\t\tpanic(\"unknown character width\")\n\t}\n\temitter.column++\n\temitter.buffer_pos += w\n\t*i += w\n\treturn true\n}\n\n// Write a whole string into buffer.\nfunc write_all(emitter *yaml_emitter_t, s []byte) bool {\n\tfor i := 0; i < len(s); {\n\t\tif !write(emitter, s, &i) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// Copy a line break character from a string into buffer.\nfunc write_break(emitter *yaml_emitter_t, s []byte, i *int) bool {\n\tif s[*i] == '\\n' {\n\t\tif !put_break(emitter) {\n\t\t\treturn false\n\t\t}\n\t\t*i++\n\t} else {\n\t\tif !write(emitter, s, i) {\n\t\t\treturn false\n\t\t}\n\t\temitter.column = 0\n\t\temitter.line++\n\t}\n\treturn true\n}\n\n// Set an emitter error and return false.\nfunc yaml_emitter_set_emitter_error(emitter *yaml_emitter_t, problem string) bool {\n\temitter.error = yaml_EMITTER_ERROR\n\temitter.problem = problem\n\treturn false\n}\n\n// Emit an event.\nfunc yaml_emitter_emit(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\temitter.events = append(emitter.events, *event)\n\tfor !yaml_emitter_need_more_events(emitter) {\n\t\tevent := &emitter.events[emitter.events_head]\n\t\tif !yaml_emitter_analyze_event(emitter, event) {\n\t\t\treturn false\n\t\t}\n\t\tif !yaml_emitter_state_machine(emitter, event) {\n\t\t\treturn false\n\t\t}\n\t\tyaml_event_delete(event)\n\t\temitter.events_head++\n\t}\n\treturn true\n}\n\n// Check if we need to accumulate more events before emitting.\n//\n// We accumulate extra\n//  - 1 event for DOCUMENT-START\n//  - 2 events for SEQUENCE-START\n//  - 3 events for MAPPING-START\n//\nfunc yaml_emitter_need_more_events(emitter *yaml_emitter_t) bool {\n\tif emitter.events_head == len(emitter.events) {\n\t\treturn true\n\t}\n\tvar accumulate int\n\tswitch emitter.events[emitter.events_head].typ {\n\tcase yaml_DOCUMENT_START_EVENT:\n\t\taccumulate = 1\n\t\tbreak\n\tcase yaml_SEQUENCE_START_EVENT:\n\t\taccumulate = 2\n\t\tbreak\n\tcase yaml_MAPPING_START_EVENT:\n\t\taccumulate = 3\n\t\tbreak\n\tdefault:\n\t\treturn false\n\t}\n\tif len(emitter.events)-emitter.events_head > accumulate {\n\t\treturn false\n\t}\n\tvar level int\n\tfor i := emitter.events_head; i < len(emitter.events); i++ {\n\t\tswitch emitter.events[i].typ {\n\t\tcase yaml_STREAM_START_EVENT, yaml_DOCUMENT_START_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT:\n\t\t\tlevel++\n\t\tcase yaml_STREAM_END_EVENT, yaml_DOCUMENT_END_EVENT, yaml_SEQUENCE_END_EVENT, yaml_MAPPING_END_EVENT:\n\t\t\tlevel--\n\t\t}\n\t\tif level == 0 {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// Append a directive to the directives stack.\nfunc yaml_emitter_append_tag_directive(emitter *yaml_emitter_t, value *yaml_tag_directive_t, allow_duplicates bool) bool {\n\tfor i := 0; i < len(emitter.tag_directives); i++ {\n\t\tif bytes.Equal(value.handle, emitter.tag_directives[i].handle) {\n\t\t\tif allow_duplicates {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn yaml_emitter_set_emitter_error(emitter, \"duplicate %TAG directive\")\n\t\t}\n\t}\n\n\t// [Go] Do we actually need to copy this given garbage collection\n\t// and the lack of deallocating destructors?\n\ttag_copy := yaml_tag_directive_t{\n\t\thandle: make([]byte, len(value.handle)),\n\t\tprefix: make([]byte, len(value.prefix)),\n\t}\n\tcopy(tag_copy.handle, value.handle)\n\tcopy(tag_copy.prefix, value.prefix)\n\temitter.tag_directives = append(emitter.tag_directives, tag_copy)\n\treturn true\n}\n\n// Increase the indentation level.\nfunc yaml_emitter_increase_indent(emitter *yaml_emitter_t, flow, indentless bool) bool {\n\temitter.indents = append(emitter.indents, emitter.indent)\n\tif emitter.indent < 0 {\n\t\tif flow {\n\t\t\temitter.indent = emitter.best_indent\n\t\t} else {\n\t\t\temitter.indent = 0\n\t\t}\n\t} else if !indentless {\n\t\temitter.indent += emitter.best_indent\n\t}\n\treturn true\n}\n\n// State dispatcher.\nfunc yaml_emitter_state_machine(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\tswitch emitter.state {\n\tdefault:\n\tcase yaml_EMIT_STREAM_START_STATE:\n\t\treturn yaml_emitter_emit_stream_start(emitter, event)\n\n\tcase yaml_EMIT_FIRST_DOCUMENT_START_STATE:\n\t\treturn yaml_emitter_emit_document_start(emitter, event, true)\n\n\tcase yaml_EMIT_DOCUMENT_START_STATE:\n\t\treturn yaml_emitter_emit_document_start(emitter, event, false)\n\n\tcase yaml_EMIT_DOCUMENT_CONTENT_STATE:\n\t\treturn yaml_emitter_emit_document_content(emitter, event)\n\n\tcase yaml_EMIT_DOCUMENT_END_STATE:\n\t\treturn yaml_emitter_emit_document_end(emitter, event)\n\n\tcase yaml_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE:\n\t\treturn yaml_emitter_emit_flow_sequence_item(emitter, event, true)\n\n\tcase yaml_EMIT_FLOW_SEQUENCE_ITEM_STATE:\n\t\treturn yaml_emitter_emit_flow_sequence_item(emitter, event, false)\n\n\tcase yaml_EMIT_FLOW_MAPPING_FIRST_KEY_STATE:\n\t\treturn yaml_emitter_emit_flow_mapping_key(emitter, event, true)\n\n\tcase yaml_EMIT_FLOW_MAPPING_KEY_STATE:\n\t\treturn yaml_emitter_emit_flow_mapping_key(emitter, event, false)\n\n\tcase yaml_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE:\n\t\treturn yaml_emitter_emit_flow_mapping_value(emitter, event, true)\n\n\tcase yaml_EMIT_FLOW_MAPPING_VALUE_STATE:\n\t\treturn yaml_emitter_emit_flow_mapping_value(emitter, event, false)\n\n\tcase yaml_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE:\n\t\treturn yaml_emitter_emit_block_sequence_item(emitter, event, true)\n\n\tcase yaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE:\n\t\treturn yaml_emitter_emit_block_sequence_item(emitter, event, false)\n\n\tcase yaml_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE:\n\t\treturn yaml_emitter_emit_block_mapping_key(emitter, event, true)\n\n\tcase yaml_EMIT_BLOCK_MAPPING_KEY_STATE:\n\t\treturn yaml_emitter_emit_block_mapping_key(emitter, event, false)\n\n\tcase yaml_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE:\n\t\treturn yaml_emitter_emit_block_mapping_value(emitter, event, true)\n\n\tcase yaml_EMIT_BLOCK_MAPPING_VALUE_STATE:\n\t\treturn yaml_emitter_emit_block_mapping_value(emitter, event, false)\n\n\tcase yaml_EMIT_END_STATE:\n\t\treturn yaml_emitter_set_emitter_error(emitter, \"expected nothing after STREAM-END\")\n\t}\n\tpanic(\"invalid emitter state\")\n}\n\n// Expect STREAM-START.\nfunc yaml_emitter_emit_stream_start(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\tif event.typ != yaml_STREAM_START_EVENT {\n\t\treturn yaml_emitter_set_emitter_error(emitter, \"expected STREAM-START\")\n\t}\n\tif emitter.encoding == yaml_ANY_ENCODING {\n\t\temitter.encoding = event.encoding\n\t\tif emitter.encoding == yaml_ANY_ENCODING {\n\t\t\temitter.encoding = yaml_UTF8_ENCODING\n\t\t}\n\t}\n\tif emitter.best_indent < 2 || emitter.best_indent > 9 {\n\t\temitter.best_indent = 2\n\t}\n\tif emitter.best_width >= 0 && emitter.best_width <= emitter.best_indent*2 {\n\t\temitter.best_width = 80\n\t}\n\tif emitter.best_width < 0 {\n\t\temitter.best_width = 1<<31 - 1\n\t}\n\tif emitter.line_break == yaml_ANY_BREAK {\n\t\temitter.line_break = yaml_LN_BREAK\n\t}\n\n\temitter.indent = -1\n\temitter.line = 0\n\temitter.column = 0\n\temitter.whitespace = true\n\temitter.indention = true\n\n\tif emitter.encoding != yaml_UTF8_ENCODING {\n\t\tif !yaml_emitter_write_bom(emitter) {\n\t\t\treturn false\n\t\t}\n\t}\n\temitter.state = yaml_EMIT_FIRST_DOCUMENT_START_STATE\n\treturn true\n}\n\n// Expect DOCUMENT-START or STREAM-END.\nfunc yaml_emitter_emit_document_start(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool {\n\n\tif event.typ == yaml_DOCUMENT_START_EVENT {\n\n\t\tif event.version_directive != nil {\n\t\t\tif !yaml_emitter_analyze_version_directive(emitter, event.version_directive) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\tfor i := 0; i < len(event.tag_directives); i++ {\n\t\t\ttag_directive := &event.tag_directives[i]\n\t\t\tif !yaml_emitter_analyze_tag_directive(emitter, tag_directive) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif !yaml_emitter_append_tag_directive(emitter, tag_directive, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\tfor i := 0; i < len(default_tag_directives); i++ {\n\t\t\ttag_directive := &default_tag_directives[i]\n\t\t\tif !yaml_emitter_append_tag_directive(emitter, tag_directive, true) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\timplicit := event.implicit\n\t\tif !first || emitter.canonical {\n\t\t\timplicit = false\n\t\t}\n\n\t\tif emitter.open_ended && (event.version_directive != nil || len(event.tag_directives) > 0) {\n\t\t\tif !yaml_emitter_write_indicator(emitter, []byte(\"...\"), true, false, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\tif event.version_directive != nil {\n\t\t\timplicit = false\n\t\t\tif !yaml_emitter_write_indicator(emitter, []byte(\"%YAML\"), true, false, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif !yaml_emitter_write_indicator(emitter, []byte(\"1.1\"), true, false, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\tif len(event.tag_directives) > 0 {\n\t\t\timplicit = false\n\t\t\tfor i := 0; i < len(event.tag_directives); i++ {\n\t\t\t\ttag_directive := &event.tag_directives[i]\n\t\t\t\tif !yaml_emitter_write_indicator(emitter, []byte(\"%TAG\"), true, false, false) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tif !yaml_emitter_write_tag_handle(emitter, tag_directive.handle) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tif !yaml_emitter_write_tag_content(emitter, tag_directive.prefix, true) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif yaml_emitter_check_empty_document(emitter) {\n\t\t\timplicit = false\n\t\t}\n\t\tif !implicit {\n\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif !yaml_emitter_write_indicator(emitter, []byte(\"---\"), true, false, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif emitter.canonical {\n\t\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\temitter.state = yaml_EMIT_DOCUMENT_CONTENT_STATE\n\t\treturn true\n\t}\n\n\tif event.typ == yaml_STREAM_END_EVENT {\n\t\tif emitter.open_ended {\n\t\t\tif !yaml_emitter_write_indicator(emitter, []byte(\"...\"), true, false, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif !yaml_emitter_flush(emitter) {\n\t\t\treturn false\n\t\t}\n\t\temitter.state = yaml_EMIT_END_STATE\n\t\treturn true\n\t}\n\n\treturn yaml_emitter_set_emitter_error(emitter, \"expected DOCUMENT-START or STREAM-END\")\n}\n\n// Expect the root node.\nfunc yaml_emitter_emit_document_content(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\temitter.states = append(emitter.states, yaml_EMIT_DOCUMENT_END_STATE)\n\treturn yaml_emitter_emit_node(emitter, event, true, false, false, false)\n}\n\n// Expect DOCUMENT-END.\nfunc yaml_emitter_emit_document_end(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\tif event.typ != yaml_DOCUMENT_END_EVENT {\n\t\treturn yaml_emitter_set_emitter_error(emitter, \"expected DOCUMENT-END\")\n\t}\n\tif !yaml_emitter_write_indent(emitter) {\n\t\treturn false\n\t}\n\tif !event.implicit {\n\t\t// [Go] Allocate the slice elsewhere.\n\t\tif !yaml_emitter_write_indicator(emitter, []byte(\"...\"), true, false, false) {\n\t\t\treturn false\n\t\t}\n\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\treturn false\n\t\t}\n\t}\n\tif !yaml_emitter_flush(emitter) {\n\t\treturn false\n\t}\n\temitter.state = yaml_EMIT_DOCUMENT_START_STATE\n\temitter.tag_directives = emitter.tag_directives[:0]\n\treturn true\n}\n\n// Expect a flow item node.\nfunc yaml_emitter_emit_flow_sequence_item(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool {\n\tif first {\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{'['}, true, true, false) {\n\t\t\treturn false\n\t\t}\n\t\tif !yaml_emitter_increase_indent(emitter, true, false) {\n\t\t\treturn false\n\t\t}\n\t\temitter.flow_level++\n\t}\n\n\tif event.typ == yaml_SEQUENCE_END_EVENT {\n\t\temitter.flow_level--\n\t\temitter.indent = emitter.indents[len(emitter.indents)-1]\n\t\temitter.indents = emitter.indents[:len(emitter.indents)-1]\n\t\tif emitter.canonical && !first {\n\t\t\tif !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{']'}, false, false, false) {\n\t\t\treturn false\n\t\t}\n\t\temitter.state = emitter.states[len(emitter.states)-1]\n\t\temitter.states = emitter.states[:len(emitter.states)-1]\n\n\t\treturn true\n\t}\n\n\tif !first {\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tif emitter.canonical || emitter.column > emitter.best_width {\n\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\treturn false\n\t\t}\n\t}\n\temitter.states = append(emitter.states, yaml_EMIT_FLOW_SEQUENCE_ITEM_STATE)\n\treturn yaml_emitter_emit_node(emitter, event, false, true, false, false)\n}\n\n// Expect a flow key node.\nfunc yaml_emitter_emit_flow_mapping_key(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool {\n\tif first {\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{'{'}, true, true, false) {\n\t\t\treturn false\n\t\t}\n\t\tif !yaml_emitter_increase_indent(emitter, true, false) {\n\t\t\treturn false\n\t\t}\n\t\temitter.flow_level++\n\t}\n\n\tif event.typ == yaml_MAPPING_END_EVENT {\n\t\temitter.flow_level--\n\t\temitter.indent = emitter.indents[len(emitter.indents)-1]\n\t\temitter.indents = emitter.indents[:len(emitter.indents)-1]\n\t\tif emitter.canonical && !first {\n\t\t\tif !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{'}'}, false, false, false) {\n\t\t\treturn false\n\t\t}\n\t\temitter.state = emitter.states[len(emitter.states)-1]\n\t\temitter.states = emitter.states[:len(emitter.states)-1]\n\t\treturn true\n\t}\n\n\tif !first {\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) {\n\t\t\treturn false\n\t\t}\n\t}\n\tif emitter.canonical || emitter.column > emitter.best_width {\n\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tif !emitter.canonical && yaml_emitter_check_simple_key(emitter) {\n\t\temitter.states = append(emitter.states, yaml_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE)\n\t\treturn yaml_emitter_emit_node(emitter, event, false, false, true, true)\n\t}\n\tif !yaml_emitter_write_indicator(emitter, []byte{'?'}, true, false, false) {\n\t\treturn false\n\t}\n\temitter.states = append(emitter.states, yaml_EMIT_FLOW_MAPPING_VALUE_STATE)\n\treturn yaml_emitter_emit_node(emitter, event, false, false, true, false)\n}\n\n// Expect a flow value node.\nfunc yaml_emitter_emit_flow_mapping_value(emitter *yaml_emitter_t, event *yaml_event_t, simple bool) bool {\n\tif simple {\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{':'}, false, false, false) {\n\t\t\treturn false\n\t\t}\n\t} else {\n\t\tif emitter.canonical || emitter.column > emitter.best_width {\n\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{':'}, true, false, false) {\n\t\t\treturn false\n\t\t}\n\t}\n\temitter.states = append(emitter.states, yaml_EMIT_FLOW_MAPPING_KEY_STATE)\n\treturn yaml_emitter_emit_node(emitter, event, false, false, true, false)\n}\n\n// Expect a block item node.\nfunc yaml_emitter_emit_block_sequence_item(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool {\n\tif first {\n\t\tif !yaml_emitter_increase_indent(emitter, false, emitter.mapping_context && !emitter.indention) {\n\t\t\treturn false\n\t\t}\n\t}\n\tif event.typ == yaml_SEQUENCE_END_EVENT {\n\t\temitter.indent = emitter.indents[len(emitter.indents)-1]\n\t\temitter.indents = emitter.indents[:len(emitter.indents)-1]\n\t\temitter.state = emitter.states[len(emitter.states)-1]\n\t\temitter.states = emitter.states[:len(emitter.states)-1]\n\t\treturn true\n\t}\n\tif !yaml_emitter_write_indent(emitter) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_write_indicator(emitter, []byte{'-'}, true, false, true) {\n\t\treturn false\n\t}\n\temitter.states = append(emitter.states, yaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE)\n\treturn yaml_emitter_emit_node(emitter, event, false, true, false, false)\n}\n\n// Expect a block key node.\nfunc yaml_emitter_emit_block_mapping_key(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool {\n\tif first {\n\t\tif !yaml_emitter_increase_indent(emitter, false, false) {\n\t\t\treturn false\n\t\t}\n\t}\n\tif event.typ == yaml_MAPPING_END_EVENT {\n\t\temitter.indent = emitter.indents[len(emitter.indents)-1]\n\t\temitter.indents = emitter.indents[:len(emitter.indents)-1]\n\t\temitter.state = emitter.states[len(emitter.states)-1]\n\t\temitter.states = emitter.states[:len(emitter.states)-1]\n\t\treturn true\n\t}\n\tif !yaml_emitter_write_indent(emitter) {\n\t\treturn false\n\t}\n\tif yaml_emitter_check_simple_key(emitter) {\n\t\temitter.states = append(emitter.states, yaml_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE)\n\t\treturn yaml_emitter_emit_node(emitter, event, false, false, true, true)\n\t}\n\tif !yaml_emitter_write_indicator(emitter, []byte{'?'}, true, false, true) {\n\t\treturn false\n\t}\n\temitter.states = append(emitter.states, yaml_EMIT_BLOCK_MAPPING_VALUE_STATE)\n\treturn yaml_emitter_emit_node(emitter, event, false, false, true, false)\n}\n\n// Expect a block value node.\nfunc yaml_emitter_emit_block_mapping_value(emitter *yaml_emitter_t, event *yaml_event_t, simple bool) bool {\n\tif simple {\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{':'}, false, false, false) {\n\t\t\treturn false\n\t\t}\n\t} else {\n\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\treturn false\n\t\t}\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{':'}, true, false, true) {\n\t\t\treturn false\n\t\t}\n\t}\n\temitter.states = append(emitter.states, yaml_EMIT_BLOCK_MAPPING_KEY_STATE)\n\treturn yaml_emitter_emit_node(emitter, event, false, false, true, false)\n}\n\n// Expect a node.\nfunc yaml_emitter_emit_node(emitter *yaml_emitter_t, event *yaml_event_t,\n\troot bool, sequence bool, mapping bool, simple_key bool) bool {\n\n\temitter.root_context = root\n\temitter.sequence_context = sequence\n\temitter.mapping_context = mapping\n\temitter.simple_key_context = simple_key\n\n\tswitch event.typ {\n\tcase yaml_ALIAS_EVENT:\n\t\treturn yaml_emitter_emit_alias(emitter, event)\n\tcase yaml_SCALAR_EVENT:\n\t\treturn yaml_emitter_emit_scalar(emitter, event)\n\tcase yaml_SEQUENCE_START_EVENT:\n\t\treturn yaml_emitter_emit_sequence_start(emitter, event)\n\tcase yaml_MAPPING_START_EVENT:\n\t\treturn yaml_emitter_emit_mapping_start(emitter, event)\n\tdefault:\n\t\treturn yaml_emitter_set_emitter_error(emitter,\n\t\t\tfmt.Sprintf(\"expected SCALAR, SEQUENCE-START, MAPPING-START, or ALIAS, but got %v\", event.typ))\n\t}\n}\n\n// Expect ALIAS.\nfunc yaml_emitter_emit_alias(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\tif !yaml_emitter_process_anchor(emitter) {\n\t\treturn false\n\t}\n\temitter.state = emitter.states[len(emitter.states)-1]\n\temitter.states = emitter.states[:len(emitter.states)-1]\n\treturn true\n}\n\n// Expect SCALAR.\nfunc yaml_emitter_emit_scalar(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\tif !yaml_emitter_select_scalar_style(emitter, event) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_process_anchor(emitter) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_process_tag(emitter) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_increase_indent(emitter, true, false) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_process_scalar(emitter) {\n\t\treturn false\n\t}\n\temitter.indent = emitter.indents[len(emitter.indents)-1]\n\temitter.indents = emitter.indents[:len(emitter.indents)-1]\n\temitter.state = emitter.states[len(emitter.states)-1]\n\temitter.states = emitter.states[:len(emitter.states)-1]\n\treturn true\n}\n\n// Expect SEQUENCE-START.\nfunc yaml_emitter_emit_sequence_start(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\tif !yaml_emitter_process_anchor(emitter) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_process_tag(emitter) {\n\t\treturn false\n\t}\n\tif emitter.flow_level > 0 || emitter.canonical || event.sequence_style() == yaml_FLOW_SEQUENCE_STYLE ||\n\t\tyaml_emitter_check_empty_sequence(emitter) {\n\t\temitter.state = yaml_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE\n\t} else {\n\t\temitter.state = yaml_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE\n\t}\n\treturn true\n}\n\n// Expect MAPPING-START.\nfunc yaml_emitter_emit_mapping_start(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\tif !yaml_emitter_process_anchor(emitter) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_process_tag(emitter) {\n\t\treturn false\n\t}\n\tif emitter.flow_level > 0 || emitter.canonical || event.mapping_style() == yaml_FLOW_MAPPING_STYLE ||\n\t\tyaml_emitter_check_empty_mapping(emitter) {\n\t\temitter.state = yaml_EMIT_FLOW_MAPPING_FIRST_KEY_STATE\n\t} else {\n\t\temitter.state = yaml_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE\n\t}\n\treturn true\n}\n\n// Check if the document content is an empty scalar.\nfunc yaml_emitter_check_empty_document(emitter *yaml_emitter_t) bool {\n\treturn false // [Go] Huh?\n}\n\n// Check if the next events represent an empty sequence.\nfunc yaml_emitter_check_empty_sequence(emitter *yaml_emitter_t) bool {\n\tif len(emitter.events)-emitter.events_head < 2 {\n\t\treturn false\n\t}\n\treturn emitter.events[emitter.events_head].typ == yaml_SEQUENCE_START_EVENT &&\n\t\temitter.events[emitter.events_head+1].typ == yaml_SEQUENCE_END_EVENT\n}\n\n// Check if the next events represent an empty mapping.\nfunc yaml_emitter_check_empty_mapping(emitter *yaml_emitter_t) bool {\n\tif len(emitter.events)-emitter.events_head < 2 {\n\t\treturn false\n\t}\n\treturn emitter.events[emitter.events_head].typ == yaml_MAPPING_START_EVENT &&\n\t\temitter.events[emitter.events_head+1].typ == yaml_MAPPING_END_EVENT\n}\n\n// Check if the next node can be expressed as a simple key.\nfunc yaml_emitter_check_simple_key(emitter *yaml_emitter_t) bool {\n\tlength := 0\n\tswitch emitter.events[emitter.events_head].typ {\n\tcase yaml_ALIAS_EVENT:\n\t\tlength += len(emitter.anchor_data.anchor)\n\tcase yaml_SCALAR_EVENT:\n\t\tif emitter.scalar_data.multiline {\n\t\t\treturn false\n\t\t}\n\t\tlength += len(emitter.anchor_data.anchor) +\n\t\t\tlen(emitter.tag_data.handle) +\n\t\t\tlen(emitter.tag_data.suffix) +\n\t\t\tlen(emitter.scalar_data.value)\n\tcase yaml_SEQUENCE_START_EVENT:\n\t\tif !yaml_emitter_check_empty_sequence(emitter) {\n\t\t\treturn false\n\t\t}\n\t\tlength += len(emitter.anchor_data.anchor) +\n\t\t\tlen(emitter.tag_data.handle) +\n\t\t\tlen(emitter.tag_data.suffix)\n\tcase yaml_MAPPING_START_EVENT:\n\t\tif !yaml_emitter_check_empty_mapping(emitter) {\n\t\t\treturn false\n\t\t}\n\t\tlength += len(emitter.anchor_data.anchor) +\n\t\t\tlen(emitter.tag_data.handle) +\n\t\t\tlen(emitter.tag_data.suffix)\n\tdefault:\n\t\treturn false\n\t}\n\treturn length <= 128\n}\n\n// Determine an acceptable scalar style.\nfunc yaml_emitter_select_scalar_style(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\n\tno_tag := len(emitter.tag_data.handle) == 0 && len(emitter.tag_data.suffix) == 0\n\tif no_tag && !event.implicit && !event.quoted_implicit {\n\t\treturn yaml_emitter_set_emitter_error(emitter, \"neither tag nor implicit flags are specified\")\n\t}\n\n\tstyle := event.scalar_style()\n\tif style == yaml_ANY_SCALAR_STYLE {\n\t\tstyle = yaml_PLAIN_SCALAR_STYLE\n\t}\n\tif emitter.canonical {\n\t\tstyle = yaml_DOUBLE_QUOTED_SCALAR_STYLE\n\t}\n\tif emitter.simple_key_context && emitter.scalar_data.multiline {\n\t\tstyle = yaml_DOUBLE_QUOTED_SCALAR_STYLE\n\t}\n\n\tif style == yaml_PLAIN_SCALAR_STYLE {\n\t\tif emitter.flow_level > 0 && !emitter.scalar_data.flow_plain_allowed ||\n\t\t\temitter.flow_level == 0 && !emitter.scalar_data.block_plain_allowed {\n\t\t\tstyle = yaml_SINGLE_QUOTED_SCALAR_STYLE\n\t\t}\n\t\tif len(emitter.scalar_data.value) == 0 && (emitter.flow_level > 0 || emitter.simple_key_context) {\n\t\t\tstyle = yaml_SINGLE_QUOTED_SCALAR_STYLE\n\t\t}\n\t\tif no_tag && !event.implicit {\n\t\t\tstyle = yaml_SINGLE_QUOTED_SCALAR_STYLE\n\t\t}\n\t}\n\tif style == yaml_SINGLE_QUOTED_SCALAR_STYLE {\n\t\tif !emitter.scalar_data.single_quoted_allowed {\n\t\t\tstyle = yaml_DOUBLE_QUOTED_SCALAR_STYLE\n\t\t}\n\t}\n\tif style == yaml_LITERAL_SCALAR_STYLE || style == yaml_FOLDED_SCALAR_STYLE {\n\t\tif !emitter.scalar_data.block_allowed || emitter.flow_level > 0 || emitter.simple_key_context {\n\t\t\tstyle = yaml_DOUBLE_QUOTED_SCALAR_STYLE\n\t\t}\n\t}\n\n\tif no_tag && !event.quoted_implicit && style != yaml_PLAIN_SCALAR_STYLE {\n\t\temitter.tag_data.handle = []byte{'!'}\n\t}\n\temitter.scalar_data.style = style\n\treturn true\n}\n\n// Write an anchor.\nfunc yaml_emitter_process_anchor(emitter *yaml_emitter_t) bool {\n\tif emitter.anchor_data.anchor == nil {\n\t\treturn true\n\t}\n\tc := []byte{'&'}\n\tif emitter.anchor_data.alias {\n\t\tc[0] = '*'\n\t}\n\tif !yaml_emitter_write_indicator(emitter, c, true, false, false) {\n\t\treturn false\n\t}\n\treturn yaml_emitter_write_anchor(emitter, emitter.anchor_data.anchor)\n}\n\n// Write a tag.\nfunc yaml_emitter_process_tag(emitter *yaml_emitter_t) bool {\n\tif len(emitter.tag_data.handle) == 0 && len(emitter.tag_data.suffix) == 0 {\n\t\treturn true\n\t}\n\tif len(emitter.tag_data.handle) > 0 {\n\t\tif !yaml_emitter_write_tag_handle(emitter, emitter.tag_data.handle) {\n\t\t\treturn false\n\t\t}\n\t\tif len(emitter.tag_data.suffix) > 0 {\n\t\t\tif !yaml_emitter_write_tag_content(emitter, emitter.tag_data.suffix, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// [Go] Allocate these slices elsewhere.\n\t\tif !yaml_emitter_write_indicator(emitter, []byte(\"!<\"), true, false, false) {\n\t\t\treturn false\n\t\t}\n\t\tif !yaml_emitter_write_tag_content(emitter, emitter.tag_data.suffix, false) {\n\t\t\treturn false\n\t\t}\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{'>'}, false, false, false) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// Write a scalar.\nfunc yaml_emitter_process_scalar(emitter *yaml_emitter_t) bool {\n\tswitch emitter.scalar_data.style {\n\tcase yaml_PLAIN_SCALAR_STYLE:\n\t\treturn yaml_emitter_write_plain_scalar(emitter, emitter.scalar_data.value, !emitter.simple_key_context)\n\n\tcase yaml_SINGLE_QUOTED_SCALAR_STYLE:\n\t\treturn yaml_emitter_write_single_quoted_scalar(emitter, emitter.scalar_data.value, !emitter.simple_key_context)\n\n\tcase yaml_DOUBLE_QUOTED_SCALAR_STYLE:\n\t\treturn yaml_emitter_write_double_quoted_scalar(emitter, emitter.scalar_data.value, !emitter.simple_key_context)\n\n\tcase yaml_LITERAL_SCALAR_STYLE:\n\t\treturn yaml_emitter_write_literal_scalar(emitter, emitter.scalar_data.value)\n\n\tcase yaml_FOLDED_SCALAR_STYLE:\n\t\treturn yaml_emitter_write_folded_scalar(emitter, emitter.scalar_data.value)\n\t}\n\tpanic(\"unknown scalar style\")\n}\n\n// Check if a %YAML directive is valid.\nfunc yaml_emitter_analyze_version_directive(emitter *yaml_emitter_t, version_directive *yaml_version_directive_t) bool {\n\tif version_directive.major != 1 || version_directive.minor != 1 {\n\t\treturn yaml_emitter_set_emitter_error(emitter, \"incompatible %YAML directive\")\n\t}\n\treturn true\n}\n\n// Check if a %TAG directive is valid.\nfunc yaml_emitter_analyze_tag_directive(emitter *yaml_emitter_t, tag_directive *yaml_tag_directive_t) bool {\n\thandle := tag_directive.handle\n\tprefix := tag_directive.prefix\n\tif len(handle) == 0 {\n\t\treturn yaml_emitter_set_emitter_error(emitter, \"tag handle must not be empty\")\n\t}\n\tif handle[0] != '!' {\n\t\treturn yaml_emitter_set_emitter_error(emitter, \"tag handle must start with '!'\")\n\t}\n\tif handle[len(handle)-1] != '!' {\n\t\treturn yaml_emitter_set_emitter_error(emitter, \"tag handle must end with '!'\")\n\t}\n\tfor i := 1; i < len(handle)-1; i += width(handle[i]) {\n\t\tif !is_alpha(handle, i) {\n\t\t\treturn yaml_emitter_set_emitter_error(emitter, \"tag handle must contain alphanumerical characters only\")\n\t\t}\n\t}\n\tif len(prefix) == 0 {\n\t\treturn yaml_emitter_set_emitter_error(emitter, \"tag prefix must not be empty\")\n\t}\n\treturn true\n}\n\n// Check if an anchor is valid.\nfunc yaml_emitter_analyze_anchor(emitter *yaml_emitter_t, anchor []byte, alias bool) bool {\n\tif len(anchor) == 0 {\n\t\tproblem := \"anchor value must not be empty\"\n\t\tif alias {\n\t\t\tproblem = \"alias value must not be empty\"\n\t\t}\n\t\treturn yaml_emitter_set_emitter_error(emitter, problem)\n\t}\n\tfor i := 0; i < len(anchor); i += width(anchor[i]) {\n\t\tif !is_alpha(anchor, i) {\n\t\t\tproblem := \"anchor value must contain alphanumerical characters only\"\n\t\t\tif alias {\n\t\t\t\tproblem = \"alias value must contain alphanumerical characters only\"\n\t\t\t}\n\t\t\treturn yaml_emitter_set_emitter_error(emitter, problem)\n\t\t}\n\t}\n\temitter.anchor_data.anchor = anchor\n\temitter.anchor_data.alias = alias\n\treturn true\n}\n\n// Check if a tag is valid.\nfunc yaml_emitter_analyze_tag(emitter *yaml_emitter_t, tag []byte) bool {\n\tif len(tag) == 0 {\n\t\treturn yaml_emitter_set_emitter_error(emitter, \"tag value must not be empty\")\n\t}\n\tfor i := 0; i < len(emitter.tag_directives); i++ {\n\t\ttag_directive := &emitter.tag_directives[i]\n\t\tif bytes.HasPrefix(tag, tag_directive.prefix) {\n\t\t\temitter.tag_data.handle = tag_directive.handle\n\t\t\temitter.tag_data.suffix = tag[len(tag_directive.prefix):]\n\t\t\treturn true\n\t\t}\n\t}\n\temitter.tag_data.suffix = tag\n\treturn true\n}\n\n// Check if a scalar is valid.\nfunc yaml_emitter_analyze_scalar(emitter *yaml_emitter_t, value []byte) bool {\n\tvar (\n\t\tblock_indicators   = false\n\t\tflow_indicators    = false\n\t\tline_breaks        = false\n\t\tspecial_characters = false\n\n\t\tleading_space  = false\n\t\tleading_break  = false\n\t\ttrailing_space = false\n\t\ttrailing_break = false\n\t\tbreak_space    = false\n\t\tspace_break    = false\n\n\t\tpreceded_by_whitespace = false\n\t\tfollowed_by_whitespace = false\n\t\tprevious_space         = false\n\t\tprevious_break         = false\n\t)\n\n\temitter.scalar_data.value = value\n\n\tif len(value) == 0 {\n\t\temitter.scalar_data.multiline = false\n\t\temitter.scalar_data.flow_plain_allowed = false\n\t\temitter.scalar_data.block_plain_allowed = true\n\t\temitter.scalar_data.single_quoted_allowed = true\n\t\temitter.scalar_data.block_allowed = false\n\t\treturn true\n\t}\n\n\tif len(value) >= 3 && ((value[0] == '-' && value[1] == '-' && value[2] == '-') || (value[0] == '.' && value[1] == '.' && value[2] == '.')) {\n\t\tblock_indicators = true\n\t\tflow_indicators = true\n\t}\n\n\tpreceded_by_whitespace = true\n\tfor i, w := 0, 0; i < len(value); i += w {\n\t\tw = width(value[i])\n\t\tfollowed_by_whitespace = i+w >= len(value) || is_blank(value, i+w)\n\n\t\tif i == 0 {\n\t\t\tswitch value[i] {\n\t\t\tcase '#', ',', '[', ']', '{', '}', '&', '*', '!', '|', '>', '\\'', '\"', '%', '@', '`':\n\t\t\t\tflow_indicators = true\n\t\t\t\tblock_indicators = true\n\t\t\tcase '?', ':':\n\t\t\t\tflow_indicators = true\n\t\t\t\tif followed_by_whitespace {\n\t\t\t\t\tblock_indicators = true\n\t\t\t\t}\n\t\t\tcase '-':\n\t\t\t\tif followed_by_whitespace {\n\t\t\t\t\tflow_indicators = true\n\t\t\t\t\tblock_indicators = true\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tswitch value[i] {\n\t\t\tcase ',', '?', '[', ']', '{', '}':\n\t\t\t\tflow_indicators = true\n\t\t\tcase ':':\n\t\t\t\tflow_indicators = true\n\t\t\t\tif followed_by_whitespace {\n\t\t\t\t\tblock_indicators = true\n\t\t\t\t}\n\t\t\tcase '#':\n\t\t\t\tif preceded_by_whitespace {\n\t\t\t\t\tflow_indicators = true\n\t\t\t\t\tblock_indicators = true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif !is_printable(value, i) || !is_ascii(value, i) && !emitter.unicode {\n\t\t\tspecial_characters = true\n\t\t}\n\t\tif is_space(value, i) {\n\t\t\tif i == 0 {\n\t\t\t\tleading_space = true\n\t\t\t}\n\t\t\tif i+width(value[i]) == len(value) {\n\t\t\t\ttrailing_space = true\n\t\t\t}\n\t\t\tif previous_break {\n\t\t\t\tbreak_space = true\n\t\t\t}\n\t\t\tprevious_space = true\n\t\t\tprevious_break = false\n\t\t} else if is_break(value, i) {\n\t\t\tline_breaks = true\n\t\t\tif i == 0 {\n\t\t\t\tleading_break = true\n\t\t\t}\n\t\t\tif i+width(value[i]) == len(value) {\n\t\t\t\ttrailing_break = true\n\t\t\t}\n\t\t\tif previous_space {\n\t\t\t\tspace_break = true\n\t\t\t}\n\t\t\tprevious_space = false\n\t\t\tprevious_break = true\n\t\t} else {\n\t\t\tprevious_space = false\n\t\t\tprevious_break = false\n\t\t}\n\n\t\t// [Go]: Why 'z'? Couldn't be the end of the string as that's the loop condition.\n\t\tpreceded_by_whitespace = is_blankz(value, i)\n\t}\n\n\temitter.scalar_data.multiline = line_breaks\n\temitter.scalar_data.flow_plain_allowed = true\n\temitter.scalar_data.block_plain_allowed = true\n\temitter.scalar_data.single_quoted_allowed = true\n\temitter.scalar_data.block_allowed = true\n\n\tif leading_space || leading_break || trailing_space || trailing_break {\n\t\temitter.scalar_data.flow_plain_allowed = false\n\t\temitter.scalar_data.block_plain_allowed = false\n\t}\n\tif trailing_space {\n\t\temitter.scalar_data.block_allowed = false\n\t}\n\tif break_space {\n\t\temitter.scalar_data.flow_plain_allowed = false\n\t\temitter.scalar_data.block_plain_allowed = false\n\t\temitter.scalar_data.single_quoted_allowed = false\n\t}\n\tif space_break || special_characters {\n\t\temitter.scalar_data.flow_plain_allowed = false\n\t\temitter.scalar_data.block_plain_allowed = false\n\t\temitter.scalar_data.single_quoted_allowed = false\n\t\temitter.scalar_data.block_allowed = false\n\t}\n\tif line_breaks {\n\t\temitter.scalar_data.flow_plain_allowed = false\n\t\temitter.scalar_data.block_plain_allowed = false\n\t}\n\tif flow_indicators {\n\t\temitter.scalar_data.flow_plain_allowed = false\n\t}\n\tif block_indicators {\n\t\temitter.scalar_data.block_plain_allowed = false\n\t}\n\treturn true\n}\n\n// Check if the event data is valid.\nfunc yaml_emitter_analyze_event(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\n\temitter.anchor_data.anchor = nil\n\temitter.tag_data.handle = nil\n\temitter.tag_data.suffix = nil\n\temitter.scalar_data.value = nil\n\n\tswitch event.typ {\n\tcase yaml_ALIAS_EVENT:\n\t\tif !yaml_emitter_analyze_anchor(emitter, event.anchor, true) {\n\t\t\treturn false\n\t\t}\n\n\tcase yaml_SCALAR_EVENT:\n\t\tif len(event.anchor) > 0 {\n\t\t\tif !yaml_emitter_analyze_anchor(emitter, event.anchor, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif len(event.tag) > 0 && (emitter.canonical || (!event.implicit && !event.quoted_implicit)) {\n\t\t\tif !yaml_emitter_analyze_tag(emitter, event.tag) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif !yaml_emitter_analyze_scalar(emitter, event.value) {\n\t\t\treturn false\n\t\t}\n\n\tcase yaml_SEQUENCE_START_EVENT:\n\t\tif len(event.anchor) > 0 {\n\t\t\tif !yaml_emitter_analyze_anchor(emitter, event.anchor, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif len(event.tag) > 0 && (emitter.canonical || !event.implicit) {\n\t\t\tif !yaml_emitter_analyze_tag(emitter, event.tag) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\tcase yaml_MAPPING_START_EVENT:\n\t\tif len(event.anchor) > 0 {\n\t\t\tif !yaml_emitter_analyze_anchor(emitter, event.anchor, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif len(event.tag) > 0 && (emitter.canonical || !event.implicit) {\n\t\t\tif !yaml_emitter_analyze_tag(emitter, event.tag) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t}\n\treturn true\n}\n\n// Write the BOM character.\nfunc yaml_emitter_write_bom(emitter *yaml_emitter_t) bool {\n\tif !flush(emitter) {\n\t\treturn false\n\t}\n\tpos := emitter.buffer_pos\n\temitter.buffer[pos+0] = '\\xEF'\n\temitter.buffer[pos+1] = '\\xBB'\n\temitter.buffer[pos+2] = '\\xBF'\n\temitter.buffer_pos += 3\n\treturn true\n}\n\nfunc yaml_emitter_write_indent(emitter *yaml_emitter_t) bool {\n\tindent := emitter.indent\n\tif indent < 0 {\n\t\tindent = 0\n\t}\n\tif !emitter.indention || emitter.column > indent || (emitter.column == indent && !emitter.whitespace) {\n\t\tif !put_break(emitter) {\n\t\t\treturn false\n\t\t}\n\t}\n\tfor emitter.column < indent {\n\t\tif !put(emitter, ' ') {\n\t\t\treturn false\n\t\t}\n\t}\n\temitter.whitespace = true\n\temitter.indention = true\n\treturn true\n}\n\nfunc yaml_emitter_write_indicator(emitter *yaml_emitter_t, indicator []byte, need_whitespace, is_whitespace, is_indention bool) bool {\n\tif need_whitespace && !emitter.whitespace {\n\t\tif !put(emitter, ' ') {\n\t\t\treturn false\n\t\t}\n\t}\n\tif !write_all(emitter, indicator) {\n\t\treturn false\n\t}\n\temitter.whitespace = is_whitespace\n\temitter.indention = (emitter.indention && is_indention)\n\temitter.open_ended = false\n\treturn true\n}\n\nfunc yaml_emitter_write_anchor(emitter *yaml_emitter_t, value []byte) bool {\n\tif !write_all(emitter, value) {\n\t\treturn false\n\t}\n\temitter.whitespace = false\n\temitter.indention = false\n\treturn true\n}\n\nfunc yaml_emitter_write_tag_handle(emitter *yaml_emitter_t, value []byte) bool {\n\tif !emitter.whitespace {\n\t\tif !put(emitter, ' ') {\n\t\t\treturn false\n\t\t}\n\t}\n\tif !write_all(emitter, value) {\n\t\treturn false\n\t}\n\temitter.whitespace = false\n\temitter.indention = false\n\treturn true\n}\n\nfunc yaml_emitter_write_tag_content(emitter *yaml_emitter_t, value []byte, need_whitespace bool) bool {\n\tif need_whitespace && !emitter.whitespace {\n\t\tif !put(emitter, ' ') {\n\t\t\treturn false\n\t\t}\n\t}\n\tfor i := 0; i < len(value); {\n\t\tvar must_write bool\n\t\tswitch value[i] {\n\t\tcase ';', '/', '?', ':', '@', '&', '=', '+', '$', ',', '_', '.', '~', '*', '\\'', '(', ')', '[', ']':\n\t\t\tmust_write = true\n\t\tdefault:\n\t\t\tmust_write = is_alpha(value, i)\n\t\t}\n\t\tif must_write {\n\t\t\tif !write(emitter, value, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t} else {\n\t\t\tw := width(value[i])\n\t\t\tfor k := 0; k < w; k++ {\n\t\t\t\toctet := value[i]\n\t\t\t\ti++\n\t\t\t\tif !put(emitter, '%') {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\t\tc := octet >> 4\n\t\t\t\tif c < 10 {\n\t\t\t\t\tc += '0'\n\t\t\t\t} else {\n\t\t\t\t\tc += 'A' - 10\n\t\t\t\t}\n\t\t\t\tif !put(emitter, c) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\t\tc = octet & 0x0f\n\t\t\t\tif c < 10 {\n\t\t\t\t\tc += '0'\n\t\t\t\t} else {\n\t\t\t\t\tc += 'A' - 10\n\t\t\t\t}\n\t\t\t\tif !put(emitter, c) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\temitter.whitespace = false\n\temitter.indention = false\n\treturn true\n}\n\nfunc yaml_emitter_write_plain_scalar(emitter *yaml_emitter_t, value []byte, allow_breaks bool) bool {\n\tif !emitter.whitespace {\n\t\tif !put(emitter, ' ') {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tspaces := false\n\tbreaks := false\n\tfor i := 0; i < len(value); {\n\t\tif is_space(value, i) {\n\t\t\tif allow_breaks && !spaces && emitter.column > emitter.best_width && !is_space(value, i+1) {\n\t\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\ti += width(value[i])\n\t\t\t} else {\n\t\t\t\tif !write(emitter, value, &i) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tspaces = true\n\t\t} else if is_break(value, i) {\n\t\t\tif !breaks && value[i] == '\\n' {\n\t\t\t\tif !put_break(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !write_break(emitter, value, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\temitter.indention = true\n\t\t\tbreaks = true\n\t\t} else {\n\t\t\tif breaks {\n\t\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !write(emitter, value, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\temitter.indention = false\n\t\t\tspaces = false\n\t\t\tbreaks = false\n\t\t}\n\t}\n\n\temitter.whitespace = false\n\temitter.indention = false\n\tif emitter.root_context {\n\t\temitter.open_ended = true\n\t}\n\n\treturn true\n}\n\nfunc yaml_emitter_write_single_quoted_scalar(emitter *yaml_emitter_t, value []byte, allow_breaks bool) bool {\n\n\tif !yaml_emitter_write_indicator(emitter, []byte{'\\''}, true, false, false) {\n\t\treturn false\n\t}\n\n\tspaces := false\n\tbreaks := false\n\tfor i := 0; i < len(value); {\n\t\tif is_space(value, i) {\n\t\t\tif allow_breaks && !spaces && emitter.column > emitter.best_width && i > 0 && i < len(value)-1 && !is_space(value, i+1) {\n\t\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\ti += width(value[i])\n\t\t\t} else {\n\t\t\t\tif !write(emitter, value, &i) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tspaces = true\n\t\t} else if is_break(value, i) {\n\t\t\tif !breaks && value[i] == '\\n' {\n\t\t\t\tif !put_break(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !write_break(emitter, value, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\temitter.indention = true\n\t\t\tbreaks = true\n\t\t} else {\n\t\t\tif breaks {\n\t\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tif value[i] == '\\'' {\n\t\t\t\tif !put(emitter, '\\'') {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !write(emitter, value, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\temitter.indention = false\n\t\t\tspaces = false\n\t\t\tbreaks = false\n\t\t}\n\t}\n\tif !yaml_emitter_write_indicator(emitter, []byte{'\\''}, false, false, false) {\n\t\treturn false\n\t}\n\temitter.whitespace = false\n\temitter.indention = false\n\treturn true\n}\n\nfunc yaml_emitter_write_double_quoted_scalar(emitter *yaml_emitter_t, value []byte, allow_breaks bool) bool {\n\tspaces := false\n\tif !yaml_emitter_write_indicator(emitter, []byte{'\"'}, true, false, false) {\n\t\treturn false\n\t}\n\n\tfor i := 0; i < len(value); {\n\t\tif !is_printable(value, i) || (!emitter.unicode && !is_ascii(value, i)) ||\n\t\t\tis_bom(value, i) || is_break(value, i) ||\n\t\t\tvalue[i] == '\"' || value[i] == '\\\\' {\n\n\t\t\toctet := value[i]\n\n\t\t\tvar w int\n\t\t\tvar v rune\n\t\t\tswitch {\n\t\t\tcase octet&0x80 == 0x00:\n\t\t\t\tw, v = 1, rune(octet&0x7F)\n\t\t\tcase octet&0xE0 == 0xC0:\n\t\t\t\tw, v = 2, rune(octet&0x1F)\n\t\t\tcase octet&0xF0 == 0xE0:\n\t\t\t\tw, v = 3, rune(octet&0x0F)\n\t\t\tcase octet&0xF8 == 0xF0:\n\t\t\t\tw, v = 4, rune(octet&0x07)\n\t\t\t}\n\t\t\tfor k := 1; k < w; k++ {\n\t\t\t\toctet = value[i+k]\n\t\t\t\tv = (v << 6) + (rune(octet) & 0x3F)\n\t\t\t}\n\t\t\ti += w\n\n\t\t\tif !put(emitter, '\\\\') {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\tvar ok bool\n\t\t\tswitch v {\n\t\t\tcase 0x00:\n\t\t\t\tok = put(emitter, '0')\n\t\t\tcase 0x07:\n\t\t\t\tok = put(emitter, 'a')\n\t\t\tcase 0x08:\n\t\t\t\tok = put(emitter, 'b')\n\t\t\tcase 0x09:\n\t\t\t\tok = put(emitter, 't')\n\t\t\tcase 0x0A:\n\t\t\t\tok = put(emitter, 'n')\n\t\t\tcase 0x0b:\n\t\t\t\tok = put(emitter, 'v')\n\t\t\tcase 0x0c:\n\t\t\t\tok = put(emitter, 'f')\n\t\t\tcase 0x0d:\n\t\t\t\tok = put(emitter, 'r')\n\t\t\tcase 0x1b:\n\t\t\t\tok = put(emitter, 'e')\n\t\t\tcase 0x22:\n\t\t\t\tok = put(emitter, '\"')\n\t\t\tcase 0x5c:\n\t\t\t\tok = put(emitter, '\\\\')\n\t\t\tcase 0x85:\n\t\t\t\tok = put(emitter, 'N')\n\t\t\tcase 0xA0:\n\t\t\t\tok = put(emitter, '_')\n\t\t\tcase 0x2028:\n\t\t\t\tok = put(emitter, 'L')\n\t\t\tcase 0x2029:\n\t\t\t\tok = put(emitter, 'P')\n\t\t\tdefault:\n\t\t\t\tif v <= 0xFF {\n\t\t\t\t\tok = put(emitter, 'x')\n\t\t\t\t\tw = 2\n\t\t\t\t} else if v <= 0xFFFF {\n\t\t\t\t\tok = put(emitter, 'u')\n\t\t\t\t\tw = 4\n\t\t\t\t} else {\n\t\t\t\t\tok = put(emitter, 'U')\n\t\t\t\t\tw = 8\n\t\t\t\t}\n\t\t\t\tfor k := (w - 1) * 4; ok && k >= 0; k -= 4 {\n\t\t\t\t\tdigit := byte((v >> uint(k)) & 0x0F)\n\t\t\t\t\tif digit < 10 {\n\t\t\t\t\t\tok = put(emitter, digit+'0')\n\t\t\t\t\t} else {\n\t\t\t\t\t\tok = put(emitter, digit+'A'-10)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !ok {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tspaces = false\n\t\t} else if is_space(value, i) {\n\t\t\tif allow_breaks && !spaces && emitter.column > emitter.best_width && i > 0 && i < len(value)-1 {\n\t\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tif is_space(value, i+1) {\n\t\t\t\t\tif !put(emitter, '\\\\') {\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ti += width(value[i])\n\t\t\t} else if !write(emitter, value, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tspaces = true\n\t\t} else {\n\t\t\tif !write(emitter, value, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tspaces = false\n\t\t}\n\t}\n\tif !yaml_emitter_write_indicator(emitter, []byte{'\"'}, false, false, false) {\n\t\treturn false\n\t}\n\temitter.whitespace = false\n\temitter.indention = false\n\treturn true\n}\n\nfunc yaml_emitter_write_block_scalar_hints(emitter *yaml_emitter_t, value []byte) bool {\n\tif is_space(value, 0) || is_break(value, 0) {\n\t\tindent_hint := []byte{'0' + byte(emitter.best_indent)}\n\t\tif !yaml_emitter_write_indicator(emitter, indent_hint, false, false, false) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\temitter.open_ended = false\n\n\tvar chomp_hint [1]byte\n\tif len(value) == 0 {\n\t\tchomp_hint[0] = '-'\n\t} else {\n\t\ti := len(value) - 1\n\t\tfor value[i]&0xC0 == 0x80 {\n\t\t\ti--\n\t\t}\n\t\tif !is_break(value, i) {\n\t\t\tchomp_hint[0] = '-'\n\t\t} else if i == 0 {\n\t\t\tchomp_hint[0] = '+'\n\t\t\temitter.open_ended = true\n\t\t} else {\n\t\t\ti--\n\t\t\tfor value[i]&0xC0 == 0x80 {\n\t\t\t\ti--\n\t\t\t}\n\t\t\tif is_break(value, i) {\n\t\t\t\tchomp_hint[0] = '+'\n\t\t\t\temitter.open_ended = true\n\t\t\t}\n\t\t}\n\t}\n\tif chomp_hint[0] != 0 {\n\t\tif !yaml_emitter_write_indicator(emitter, chomp_hint[:], false, false, false) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\nfunc yaml_emitter_write_literal_scalar(emitter *yaml_emitter_t, value []byte) bool {\n\tif !yaml_emitter_write_indicator(emitter, []byte{'|'}, true, false, false) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_write_block_scalar_hints(emitter, value) {\n\t\treturn false\n\t}\n\tif !put_break(emitter) {\n\t\treturn false\n\t}\n\temitter.indention = true\n\temitter.whitespace = true\n\tbreaks := true\n\tfor i := 0; i < len(value); {\n\t\tif is_break(value, i) {\n\t\t\tif !write_break(emitter, value, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\temitter.indention = true\n\t\t\tbreaks = true\n\t\t} else {\n\t\t\tif breaks {\n\t\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !write(emitter, value, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\temitter.indention = false\n\t\t\tbreaks = false\n\t\t}\n\t}\n\n\treturn true\n}\n\nfunc yaml_emitter_write_folded_scalar(emitter *yaml_emitter_t, value []byte) bool {\n\tif !yaml_emitter_write_indicator(emitter, []byte{'>'}, true, false, false) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_write_block_scalar_hints(emitter, value) {\n\t\treturn false\n\t}\n\n\tif !put_break(emitter) {\n\t\treturn false\n\t}\n\temitter.indention = true\n\temitter.whitespace = true\n\n\tbreaks := true\n\tleading_spaces := true\n\tfor i := 0; i < len(value); {\n\t\tif is_break(value, i) {\n\t\t\tif !breaks && !leading_spaces && value[i] == '\\n' {\n\t\t\t\tk := 0\n\t\t\t\tfor is_break(value, k) {\n\t\t\t\t\tk += width(value[k])\n\t\t\t\t}\n\t\t\t\tif !is_blankz(value, k) {\n\t\t\t\t\tif !put_break(emitter) {\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !write_break(emitter, value, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\temitter.indention = true\n\t\t\tbreaks = true\n\t\t} else {\n\t\t\tif breaks {\n\t\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tleading_spaces = is_blank(value, i)\n\t\t\t}\n\t\t\tif !breaks && is_space(value, i) && !is_space(value, i+1) && emitter.column > emitter.best_width {\n\t\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\ti += width(value[i])\n\t\t\t} else {\n\t\t\t\tif !write(emitter, value, &i) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\temitter.indention = false\n\t\t\tbreaks = false\n\t\t}\n\t}\n\treturn true\n}\n"
  },
  {
    "path": "vendor/sigs.k8s.io/yaml/goyaml.v2/encode.go",
    "content": "package yaml\n\nimport (\n\t\"encoding\"\n\t\"fmt\"\n\t\"io\"\n\t\"reflect\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n)\n\n// jsonNumber is the interface of the encoding/json.Number datatype.\n// Repeating the interface here avoids a dependency on encoding/json, and also\n// supports other libraries like jsoniter, which use a similar datatype with\n// the same interface. Detecting this interface is useful when dealing with\n// structures containing json.Number, which is a string under the hood. The\n// encoder should prefer the use of Int64(), Float64() and string(), in that\n// order, when encoding this type.\ntype jsonNumber interface {\n\tFloat64() (float64, error)\n\tInt64() (int64, error)\n\tString() string\n}\n\ntype encoder struct {\n\temitter yaml_emitter_t\n\tevent   yaml_event_t\n\tout     []byte\n\tflow    bool\n\t// doneInit holds whether the initial stream_start_event has been\n\t// emitted.\n\tdoneInit bool\n}\n\nfunc newEncoder() *encoder {\n\te := &encoder{}\n\tyaml_emitter_initialize(&e.emitter)\n\tyaml_emitter_set_output_string(&e.emitter, &e.out)\n\tyaml_emitter_set_unicode(&e.emitter, true)\n\treturn e\n}\n\nfunc newEncoderWithWriter(w io.Writer) *encoder {\n\te := &encoder{}\n\tyaml_emitter_initialize(&e.emitter)\n\tyaml_emitter_set_output_writer(&e.emitter, w)\n\tyaml_emitter_set_unicode(&e.emitter, true)\n\treturn e\n}\n\nfunc (e *encoder) init() {\n\tif e.doneInit {\n\t\treturn\n\t}\n\tyaml_stream_start_event_initialize(&e.event, yaml_UTF8_ENCODING)\n\te.emit()\n\te.doneInit = true\n}\n\nfunc (e *encoder) finish() {\n\te.emitter.open_ended = false\n\tyaml_stream_end_event_initialize(&e.event)\n\te.emit()\n}\n\nfunc (e *encoder) destroy() {\n\tyaml_emitter_delete(&e.emitter)\n}\n\nfunc (e *encoder) emit() {\n\t// This will internally delete the e.event value.\n\te.must(yaml_emitter_emit(&e.emitter, &e.event))\n}\n\nfunc (e *encoder) must(ok bool) {\n\tif !ok {\n\t\tmsg := e.emitter.problem\n\t\tif msg == \"\" {\n\t\t\tmsg = \"unknown problem generating YAML content\"\n\t\t}\n\t\tfailf(\"%s\", msg)\n\t}\n}\n\nfunc (e *encoder) marshalDoc(tag string, in reflect.Value) {\n\te.init()\n\tyaml_document_start_event_initialize(&e.event, nil, nil, true)\n\te.emit()\n\te.marshal(tag, in)\n\tyaml_document_end_event_initialize(&e.event, true)\n\te.emit()\n}\n\nfunc (e *encoder) marshal(tag string, in reflect.Value) {\n\tif !in.IsValid() || in.Kind() == reflect.Ptr && in.IsNil() {\n\t\te.nilv()\n\t\treturn\n\t}\n\tiface := in.Interface()\n\tswitch m := iface.(type) {\n\tcase jsonNumber:\n\t\tinteger, err := m.Int64()\n\t\tif err == nil {\n\t\t\t// In this case the json.Number is a valid int64\n\t\t\tin = reflect.ValueOf(integer)\n\t\t\tbreak\n\t\t}\n\t\tfloat, err := m.Float64()\n\t\tif err == nil {\n\t\t\t// In this case the json.Number is a valid float64\n\t\t\tin = reflect.ValueOf(float)\n\t\t\tbreak\n\t\t}\n\t\t// fallback case - no number could be obtained\n\t\tin = reflect.ValueOf(m.String())\n\tcase time.Time, *time.Time:\n\t\t// Although time.Time implements TextMarshaler,\n\t\t// we don't want to treat it as a string for YAML\n\t\t// purposes because YAML has special support for\n\t\t// timestamps.\n\tcase Marshaler:\n\t\tv, err := m.MarshalYAML()\n\t\tif err != nil {\n\t\t\tfail(err)\n\t\t}\n\t\tif v == nil {\n\t\t\te.nilv()\n\t\t\treturn\n\t\t}\n\t\tin = reflect.ValueOf(v)\n\tcase encoding.TextMarshaler:\n\t\ttext, err := m.MarshalText()\n\t\tif err != nil {\n\t\t\tfail(err)\n\t\t}\n\t\tin = reflect.ValueOf(string(text))\n\tcase nil:\n\t\te.nilv()\n\t\treturn\n\t}\n\tswitch in.Kind() {\n\tcase reflect.Interface:\n\t\te.marshal(tag, in.Elem())\n\tcase reflect.Map:\n\t\te.mapv(tag, in)\n\tcase reflect.Ptr:\n\t\tif in.Type() == ptrTimeType {\n\t\t\te.timev(tag, in.Elem())\n\t\t} else {\n\t\t\te.marshal(tag, in.Elem())\n\t\t}\n\tcase reflect.Struct:\n\t\tif in.Type() == timeType {\n\t\t\te.timev(tag, in)\n\t\t} else {\n\t\t\te.structv(tag, in)\n\t\t}\n\tcase reflect.Slice, reflect.Array:\n\t\tif in.Type().Elem() == mapItemType {\n\t\t\te.itemsv(tag, in)\n\t\t} else {\n\t\t\te.slicev(tag, in)\n\t\t}\n\tcase reflect.String:\n\t\te.stringv(tag, in)\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\tif in.Type() == durationType {\n\t\t\te.stringv(tag, reflect.ValueOf(iface.(time.Duration).String()))\n\t\t} else {\n\t\t\te.intv(tag, in)\n\t\t}\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\te.uintv(tag, in)\n\tcase reflect.Float32, reflect.Float64:\n\t\te.floatv(tag, in)\n\tcase reflect.Bool:\n\t\te.boolv(tag, in)\n\tdefault:\n\t\tpanic(\"cannot marshal type: \" + in.Type().String())\n\t}\n}\n\nfunc (e *encoder) mapv(tag string, in reflect.Value) {\n\te.mappingv(tag, func() {\n\t\tkeys := keyList(in.MapKeys())\n\t\tsort.Sort(keys)\n\t\tfor _, k := range keys {\n\t\t\te.marshal(\"\", k)\n\t\t\te.marshal(\"\", in.MapIndex(k))\n\t\t}\n\t})\n}\n\nfunc (e *encoder) itemsv(tag string, in reflect.Value) {\n\te.mappingv(tag, func() {\n\t\tslice := in.Convert(reflect.TypeOf([]MapItem{})).Interface().([]MapItem)\n\t\tfor _, item := range slice {\n\t\t\te.marshal(\"\", reflect.ValueOf(item.Key))\n\t\t\te.marshal(\"\", reflect.ValueOf(item.Value))\n\t\t}\n\t})\n}\n\nfunc (e *encoder) structv(tag string, in reflect.Value) {\n\tsinfo, err := getStructInfo(in.Type())\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\te.mappingv(tag, func() {\n\t\tfor _, info := range sinfo.FieldsList {\n\t\t\tvar value reflect.Value\n\t\t\tif info.Inline == nil {\n\t\t\t\tvalue = in.Field(info.Num)\n\t\t\t} else {\n\t\t\t\tvalue = in.FieldByIndex(info.Inline)\n\t\t\t}\n\t\t\tif info.OmitEmpty && isZero(value) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\te.marshal(\"\", reflect.ValueOf(info.Key))\n\t\t\te.flow = info.Flow\n\t\t\te.marshal(\"\", value)\n\t\t}\n\t\tif sinfo.InlineMap >= 0 {\n\t\t\tm := in.Field(sinfo.InlineMap)\n\t\t\tif m.Len() > 0 {\n\t\t\t\te.flow = false\n\t\t\t\tkeys := keyList(m.MapKeys())\n\t\t\t\tsort.Sort(keys)\n\t\t\t\tfor _, k := range keys {\n\t\t\t\t\tif _, found := sinfo.FieldsMap[k.String()]; found {\n\t\t\t\t\t\tpanic(fmt.Sprintf(\"Can't have key %q in inlined map; conflicts with struct field\", k.String()))\n\t\t\t\t\t}\n\t\t\t\t\te.marshal(\"\", k)\n\t\t\t\t\te.flow = false\n\t\t\t\t\te.marshal(\"\", m.MapIndex(k))\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t})\n}\n\nfunc (e *encoder) mappingv(tag string, f func()) {\n\timplicit := tag == \"\"\n\tstyle := yaml_BLOCK_MAPPING_STYLE\n\tif e.flow {\n\t\te.flow = false\n\t\tstyle = yaml_FLOW_MAPPING_STYLE\n\t}\n\tyaml_mapping_start_event_initialize(&e.event, nil, []byte(tag), implicit, style)\n\te.emit()\n\tf()\n\tyaml_mapping_end_event_initialize(&e.event)\n\te.emit()\n}\n\nfunc (e *encoder) slicev(tag string, in reflect.Value) {\n\timplicit := tag == \"\"\n\tstyle := yaml_BLOCK_SEQUENCE_STYLE\n\tif e.flow {\n\t\te.flow = false\n\t\tstyle = yaml_FLOW_SEQUENCE_STYLE\n\t}\n\te.must(yaml_sequence_start_event_initialize(&e.event, nil, []byte(tag), implicit, style))\n\te.emit()\n\tn := in.Len()\n\tfor i := 0; i < n; i++ {\n\t\te.marshal(\"\", in.Index(i))\n\t}\n\te.must(yaml_sequence_end_event_initialize(&e.event))\n\te.emit()\n}\n\n// isBase60 returns whether s is in base 60 notation as defined in YAML 1.1.\n//\n// The base 60 float notation in YAML 1.1 is a terrible idea and is unsupported\n// in YAML 1.2 and by this package, but these should be marshalled quoted for\n// the time being for compatibility with other parsers.\nfunc isBase60Float(s string) (result bool) {\n\t// Fast path.\n\tif s == \"\" {\n\t\treturn false\n\t}\n\tc := s[0]\n\tif !(c == '+' || c == '-' || c >= '0' && c <= '9') || strings.IndexByte(s, ':') < 0 {\n\t\treturn false\n\t}\n\t// Do the full match.\n\treturn base60float.MatchString(s)\n}\n\n// From http://yaml.org/type/float.html, except the regular expression there\n// is bogus. In practice parsers do not enforce the \"\\.[0-9_]*\" suffix.\nvar base60float = regexp.MustCompile(`^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+(?:\\.[0-9_]*)?$`)\n\nfunc (e *encoder) stringv(tag string, in reflect.Value) {\n\tvar style yaml_scalar_style_t\n\ts := in.String()\n\tcanUsePlain := true\n\tswitch {\n\tcase !utf8.ValidString(s):\n\t\tif tag == yaml_BINARY_TAG {\n\t\t\tfailf(\"explicitly tagged !!binary data must be base64-encoded\")\n\t\t}\n\t\tif tag != \"\" {\n\t\t\tfailf(\"cannot marshal invalid UTF-8 data as %s\", shortTag(tag))\n\t\t}\n\t\t// It can't be encoded directly as YAML so use a binary tag\n\t\t// and encode it as base64.\n\t\ttag = yaml_BINARY_TAG\n\t\ts = encodeBase64(s)\n\tcase tag == \"\":\n\t\t// Check to see if it would resolve to a specific\n\t\t// tag when encoded unquoted. If it doesn't,\n\t\t// there's no need to quote it.\n\t\trtag, _ := resolve(\"\", s)\n\t\tcanUsePlain = rtag == yaml_STR_TAG && !isBase60Float(s)\n\t}\n\t// Note: it's possible for user code to emit invalid YAML\n\t// if they explicitly specify a tag and a string containing\n\t// text that's incompatible with that tag.\n\tswitch {\n\tcase strings.Contains(s, \"\\n\"):\n\t\tstyle = yaml_LITERAL_SCALAR_STYLE\n\tcase canUsePlain:\n\t\tstyle = yaml_PLAIN_SCALAR_STYLE\n\tdefault:\n\t\tstyle = yaml_DOUBLE_QUOTED_SCALAR_STYLE\n\t}\n\te.emitScalar(s, \"\", tag, style)\n}\n\nfunc (e *encoder) boolv(tag string, in reflect.Value) {\n\tvar s string\n\tif in.Bool() {\n\t\ts = \"true\"\n\t} else {\n\t\ts = \"false\"\n\t}\n\te.emitScalar(s, \"\", tag, yaml_PLAIN_SCALAR_STYLE)\n}\n\nfunc (e *encoder) intv(tag string, in reflect.Value) {\n\ts := strconv.FormatInt(in.Int(), 10)\n\te.emitScalar(s, \"\", tag, yaml_PLAIN_SCALAR_STYLE)\n}\n\nfunc (e *encoder) uintv(tag string, in reflect.Value) {\n\ts := strconv.FormatUint(in.Uint(), 10)\n\te.emitScalar(s, \"\", tag, yaml_PLAIN_SCALAR_STYLE)\n}\n\nfunc (e *encoder) timev(tag string, in reflect.Value) {\n\tt := in.Interface().(time.Time)\n\ts := t.Format(time.RFC3339Nano)\n\te.emitScalar(s, \"\", tag, yaml_PLAIN_SCALAR_STYLE)\n}\n\nfunc (e *encoder) floatv(tag string, in reflect.Value) {\n\t// Issue #352: When formatting, use the precision of the underlying value\n\tprecision := 64\n\tif in.Kind() == reflect.Float32 {\n\t\tprecision = 32\n\t}\n\n\ts := strconv.FormatFloat(in.Float(), 'g', -1, precision)\n\tswitch s {\n\tcase \"+Inf\":\n\t\ts = \".inf\"\n\tcase \"-Inf\":\n\t\ts = \"-.inf\"\n\tcase \"NaN\":\n\t\ts = \".nan\"\n\t}\n\te.emitScalar(s, \"\", tag, yaml_PLAIN_SCALAR_STYLE)\n}\n\nfunc (e *encoder) nilv() {\n\te.emitScalar(\"null\", \"\", \"\", yaml_PLAIN_SCALAR_STYLE)\n}\n\nfunc (e *encoder) emitScalar(value, anchor, tag string, style yaml_scalar_style_t) {\n\timplicit := tag == \"\"\n\te.must(yaml_scalar_event_initialize(&e.event, []byte(anchor), []byte(tag), []byte(value), implicit, implicit, style))\n\te.emit()\n}\n"
  },
  {
    "path": "vendor/sigs.k8s.io/yaml/goyaml.v2/parserc.go",
    "content": "package yaml\n\nimport (\n\t\"bytes\"\n)\n\n// The parser implements the following grammar:\n//\n// stream               ::= STREAM-START implicit_document? explicit_document* STREAM-END\n// implicit_document    ::= block_node DOCUMENT-END*\n// explicit_document    ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END*\n// block_node_or_indentless_sequence    ::=\n//                          ALIAS\n//                          | properties (block_content | indentless_block_sequence)?\n//                          | block_content\n//                          | indentless_block_sequence\n// block_node           ::= ALIAS\n//                          | properties block_content?\n//                          | block_content\n// flow_node            ::= ALIAS\n//                          | properties flow_content?\n//                          | flow_content\n// properties           ::= TAG ANCHOR? | ANCHOR TAG?\n// block_content        ::= block_collection | flow_collection | SCALAR\n// flow_content         ::= flow_collection | SCALAR\n// block_collection     ::= block_sequence | block_mapping\n// flow_collection      ::= flow_sequence | flow_mapping\n// block_sequence       ::= BLOCK-SEQUENCE-START (BLOCK-ENTRY block_node?)* BLOCK-END\n// indentless_sequence  ::= (BLOCK-ENTRY block_node?)+\n// block_mapping        ::= BLOCK-MAPPING_START\n//                          ((KEY block_node_or_indentless_sequence?)?\n//                          (VALUE block_node_or_indentless_sequence?)?)*\n//                          BLOCK-END\n// flow_sequence        ::= FLOW-SEQUENCE-START\n//                          (flow_sequence_entry FLOW-ENTRY)*\n//                          flow_sequence_entry?\n//                          FLOW-SEQUENCE-END\n// flow_sequence_entry  ::= flow_node | KEY flow_node? (VALUE flow_node?)?\n// flow_mapping         ::= FLOW-MAPPING-START\n//                          (flow_mapping_entry FLOW-ENTRY)*\n//                          flow_mapping_entry?\n//                          FLOW-MAPPING-END\n// flow_mapping_entry   ::= flow_node | KEY flow_node? (VALUE flow_node?)?\n\n// Peek the next token in the token queue.\nfunc peek_token(parser *yaml_parser_t) *yaml_token_t {\n\tif parser.token_available || yaml_parser_fetch_more_tokens(parser) {\n\t\treturn &parser.tokens[parser.tokens_head]\n\t}\n\treturn nil\n}\n\n// Remove the next token from the queue (must be called after peek_token).\nfunc skip_token(parser *yaml_parser_t) {\n\tparser.token_available = false\n\tparser.tokens_parsed++\n\tparser.stream_end_produced = parser.tokens[parser.tokens_head].typ == yaml_STREAM_END_TOKEN\n\tparser.tokens_head++\n}\n\n// Get the next event.\nfunc yaml_parser_parse(parser *yaml_parser_t, event *yaml_event_t) bool {\n\t// Erase the event object.\n\t*event = yaml_event_t{}\n\n\t// No events after the end of the stream or error.\n\tif parser.stream_end_produced || parser.error != yaml_NO_ERROR || parser.state == yaml_PARSE_END_STATE {\n\t\treturn true\n\t}\n\n\t// Generate the next event.\n\treturn yaml_parser_state_machine(parser, event)\n}\n\n// Set parser error.\nfunc yaml_parser_set_parser_error(parser *yaml_parser_t, problem string, problem_mark yaml_mark_t) bool {\n\tparser.error = yaml_PARSER_ERROR\n\tparser.problem = problem\n\tparser.problem_mark = problem_mark\n\treturn false\n}\n\nfunc yaml_parser_set_parser_error_context(parser *yaml_parser_t, context string, context_mark yaml_mark_t, problem string, problem_mark yaml_mark_t) bool {\n\tparser.error = yaml_PARSER_ERROR\n\tparser.context = context\n\tparser.context_mark = context_mark\n\tparser.problem = problem\n\tparser.problem_mark = problem_mark\n\treturn false\n}\n\n// State dispatcher.\nfunc yaml_parser_state_machine(parser *yaml_parser_t, event *yaml_event_t) bool {\n\t//trace(\"yaml_parser_state_machine\", \"state:\", parser.state.String())\n\n\tswitch parser.state {\n\tcase yaml_PARSE_STREAM_START_STATE:\n\t\treturn yaml_parser_parse_stream_start(parser, event)\n\n\tcase yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE:\n\t\treturn yaml_parser_parse_document_start(parser, event, true)\n\n\tcase yaml_PARSE_DOCUMENT_START_STATE:\n\t\treturn yaml_parser_parse_document_start(parser, event, false)\n\n\tcase yaml_PARSE_DOCUMENT_CONTENT_STATE:\n\t\treturn yaml_parser_parse_document_content(parser, event)\n\n\tcase yaml_PARSE_DOCUMENT_END_STATE:\n\t\treturn yaml_parser_parse_document_end(parser, event)\n\n\tcase yaml_PARSE_BLOCK_NODE_STATE:\n\t\treturn yaml_parser_parse_node(parser, event, true, false)\n\n\tcase yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE:\n\t\treturn yaml_parser_parse_node(parser, event, true, true)\n\n\tcase yaml_PARSE_FLOW_NODE_STATE:\n\t\treturn yaml_parser_parse_node(parser, event, false, false)\n\n\tcase yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE:\n\t\treturn yaml_parser_parse_block_sequence_entry(parser, event, true)\n\n\tcase yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE:\n\t\treturn yaml_parser_parse_block_sequence_entry(parser, event, false)\n\n\tcase yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE:\n\t\treturn yaml_parser_parse_indentless_sequence_entry(parser, event)\n\n\tcase yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE:\n\t\treturn yaml_parser_parse_block_mapping_key(parser, event, true)\n\n\tcase yaml_PARSE_BLOCK_MAPPING_KEY_STATE:\n\t\treturn yaml_parser_parse_block_mapping_key(parser, event, false)\n\n\tcase yaml_PARSE_BLOCK_MAPPING_VALUE_STATE:\n\t\treturn yaml_parser_parse_block_mapping_value(parser, event)\n\n\tcase yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE:\n\t\treturn yaml_parser_parse_flow_sequence_entry(parser, event, true)\n\n\tcase yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE:\n\t\treturn yaml_parser_parse_flow_sequence_entry(parser, event, false)\n\n\tcase yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE:\n\t\treturn yaml_parser_parse_flow_sequence_entry_mapping_key(parser, event)\n\n\tcase yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE:\n\t\treturn yaml_parser_parse_flow_sequence_entry_mapping_value(parser, event)\n\n\tcase yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE:\n\t\treturn yaml_parser_parse_flow_sequence_entry_mapping_end(parser, event)\n\n\tcase yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE:\n\t\treturn yaml_parser_parse_flow_mapping_key(parser, event, true)\n\n\tcase yaml_PARSE_FLOW_MAPPING_KEY_STATE:\n\t\treturn yaml_parser_parse_flow_mapping_key(parser, event, false)\n\n\tcase yaml_PARSE_FLOW_MAPPING_VALUE_STATE:\n\t\treturn yaml_parser_parse_flow_mapping_value(parser, event, false)\n\n\tcase yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE:\n\t\treturn yaml_parser_parse_flow_mapping_value(parser, event, true)\n\n\tdefault:\n\t\tpanic(\"invalid parser state\")\n\t}\n}\n\n// Parse the production:\n// stream   ::= STREAM-START implicit_document? explicit_document* STREAM-END\n//              ************\nfunc yaml_parser_parse_stream_start(parser *yaml_parser_t, event *yaml_event_t) bool {\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\tif token.typ != yaml_STREAM_START_TOKEN {\n\t\treturn yaml_parser_set_parser_error(parser, \"did not find expected <stream-start>\", token.start_mark)\n\t}\n\tparser.state = yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE\n\t*event = yaml_event_t{\n\t\ttyp:        yaml_STREAM_START_EVENT,\n\t\tstart_mark: token.start_mark,\n\t\tend_mark:   token.end_mark,\n\t\tencoding:   token.encoding,\n\t}\n\tskip_token(parser)\n\treturn true\n}\n\n// Parse the productions:\n// implicit_document    ::= block_node DOCUMENT-END*\n//                          *\n// explicit_document    ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END*\n//                          *************************\nfunc yaml_parser_parse_document_start(parser *yaml_parser_t, event *yaml_event_t, implicit bool) bool {\n\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\n\t// Parse extra document end indicators.\n\tif !implicit {\n\t\tfor token.typ == yaml_DOCUMENT_END_TOKEN {\n\t\t\tskip_token(parser)\n\t\t\ttoken = peek_token(parser)\n\t\t\tif token == nil {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t}\n\n\tif implicit && token.typ != yaml_VERSION_DIRECTIVE_TOKEN &&\n\t\ttoken.typ != yaml_TAG_DIRECTIVE_TOKEN &&\n\t\ttoken.typ != yaml_DOCUMENT_START_TOKEN &&\n\t\ttoken.typ != yaml_STREAM_END_TOKEN {\n\t\t// Parse an implicit document.\n\t\tif !yaml_parser_process_directives(parser, nil, nil) {\n\t\t\treturn false\n\t\t}\n\t\tparser.states = append(parser.states, yaml_PARSE_DOCUMENT_END_STATE)\n\t\tparser.state = yaml_PARSE_BLOCK_NODE_STATE\n\n\t\t*event = yaml_event_t{\n\t\t\ttyp:        yaml_DOCUMENT_START_EVENT,\n\t\t\tstart_mark: token.start_mark,\n\t\t\tend_mark:   token.end_mark,\n\t\t}\n\n\t} else if token.typ != yaml_STREAM_END_TOKEN {\n\t\t// Parse an explicit document.\n\t\tvar version_directive *yaml_version_directive_t\n\t\tvar tag_directives []yaml_tag_directive_t\n\t\tstart_mark := token.start_mark\n\t\tif !yaml_parser_process_directives(parser, &version_directive, &tag_directives) {\n\t\t\treturn false\n\t\t}\n\t\ttoken = peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tif token.typ != yaml_DOCUMENT_START_TOKEN {\n\t\t\tyaml_parser_set_parser_error(parser,\n\t\t\t\t\"did not find expected <document start>\", token.start_mark)\n\t\t\treturn false\n\t\t}\n\t\tparser.states = append(parser.states, yaml_PARSE_DOCUMENT_END_STATE)\n\t\tparser.state = yaml_PARSE_DOCUMENT_CONTENT_STATE\n\t\tend_mark := token.end_mark\n\n\t\t*event = yaml_event_t{\n\t\t\ttyp:               yaml_DOCUMENT_START_EVENT,\n\t\t\tstart_mark:        start_mark,\n\t\t\tend_mark:          end_mark,\n\t\t\tversion_directive: version_directive,\n\t\t\ttag_directives:    tag_directives,\n\t\t\timplicit:          false,\n\t\t}\n\t\tskip_token(parser)\n\n\t} else {\n\t\t// Parse the stream end.\n\t\tparser.state = yaml_PARSE_END_STATE\n\t\t*event = yaml_event_t{\n\t\t\ttyp:        yaml_STREAM_END_EVENT,\n\t\t\tstart_mark: token.start_mark,\n\t\t\tend_mark:   token.end_mark,\n\t\t}\n\t\tskip_token(parser)\n\t}\n\n\treturn true\n}\n\n// Parse the productions:\n// explicit_document    ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END*\n//                                                    ***********\n//\nfunc yaml_parser_parse_document_content(parser *yaml_parser_t, event *yaml_event_t) bool {\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\tif token.typ == yaml_VERSION_DIRECTIVE_TOKEN ||\n\t\ttoken.typ == yaml_TAG_DIRECTIVE_TOKEN ||\n\t\ttoken.typ == yaml_DOCUMENT_START_TOKEN ||\n\t\ttoken.typ == yaml_DOCUMENT_END_TOKEN ||\n\t\ttoken.typ == yaml_STREAM_END_TOKEN {\n\t\tparser.state = parser.states[len(parser.states)-1]\n\t\tparser.states = parser.states[:len(parser.states)-1]\n\t\treturn yaml_parser_process_empty_scalar(parser, event,\n\t\t\ttoken.start_mark)\n\t}\n\treturn yaml_parser_parse_node(parser, event, true, false)\n}\n\n// Parse the productions:\n// implicit_document    ::= block_node DOCUMENT-END*\n//                                     *************\n// explicit_document    ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END*\n//\nfunc yaml_parser_parse_document_end(parser *yaml_parser_t, event *yaml_event_t) bool {\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\n\tstart_mark := token.start_mark\n\tend_mark := token.start_mark\n\n\timplicit := true\n\tif token.typ == yaml_DOCUMENT_END_TOKEN {\n\t\tend_mark = token.end_mark\n\t\tskip_token(parser)\n\t\timplicit = false\n\t}\n\n\tparser.tag_directives = parser.tag_directives[:0]\n\n\tparser.state = yaml_PARSE_DOCUMENT_START_STATE\n\t*event = yaml_event_t{\n\t\ttyp:        yaml_DOCUMENT_END_EVENT,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t\timplicit:   implicit,\n\t}\n\treturn true\n}\n\n// Parse the productions:\n// block_node_or_indentless_sequence    ::=\n//                          ALIAS\n//                          *****\n//                          | properties (block_content | indentless_block_sequence)?\n//                            **********  *\n//                          | block_content | indentless_block_sequence\n//                            *\n// block_node           ::= ALIAS\n//                          *****\n//                          | properties block_content?\n//                            ********** *\n//                          | block_content\n//                            *\n// flow_node            ::= ALIAS\n//                          *****\n//                          | properties flow_content?\n//                            ********** *\n//                          | flow_content\n//                            *\n// properties           ::= TAG ANCHOR? | ANCHOR TAG?\n//                          *************************\n// block_content        ::= block_collection | flow_collection | SCALAR\n//                                                               ******\n// flow_content         ::= flow_collection | SCALAR\n//                                            ******\nfunc yaml_parser_parse_node(parser *yaml_parser_t, event *yaml_event_t, block, indentless_sequence bool) bool {\n\t//defer trace(\"yaml_parser_parse_node\", \"block:\", block, \"indentless_sequence:\", indentless_sequence)()\n\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\n\tif token.typ == yaml_ALIAS_TOKEN {\n\t\tparser.state = parser.states[len(parser.states)-1]\n\t\tparser.states = parser.states[:len(parser.states)-1]\n\t\t*event = yaml_event_t{\n\t\t\ttyp:        yaml_ALIAS_EVENT,\n\t\t\tstart_mark: token.start_mark,\n\t\t\tend_mark:   token.end_mark,\n\t\t\tanchor:     token.value,\n\t\t}\n\t\tskip_token(parser)\n\t\treturn true\n\t}\n\n\tstart_mark := token.start_mark\n\tend_mark := token.start_mark\n\n\tvar tag_token bool\n\tvar tag_handle, tag_suffix, anchor []byte\n\tvar tag_mark yaml_mark_t\n\tif token.typ == yaml_ANCHOR_TOKEN {\n\t\tanchor = token.value\n\t\tstart_mark = token.start_mark\n\t\tend_mark = token.end_mark\n\t\tskip_token(parser)\n\t\ttoken = peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tif token.typ == yaml_TAG_TOKEN {\n\t\t\ttag_token = true\n\t\t\ttag_handle = token.value\n\t\t\ttag_suffix = token.suffix\n\t\t\ttag_mark = token.start_mark\n\t\t\tend_mark = token.end_mark\n\t\t\tskip_token(parser)\n\t\t\ttoken = peek_token(parser)\n\t\t\tif token == nil {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t} else if token.typ == yaml_TAG_TOKEN {\n\t\ttag_token = true\n\t\ttag_handle = token.value\n\t\ttag_suffix = token.suffix\n\t\tstart_mark = token.start_mark\n\t\ttag_mark = token.start_mark\n\t\tend_mark = token.end_mark\n\t\tskip_token(parser)\n\t\ttoken = peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tif token.typ == yaml_ANCHOR_TOKEN {\n\t\t\tanchor = token.value\n\t\t\tend_mark = token.end_mark\n\t\t\tskip_token(parser)\n\t\t\ttoken = peek_token(parser)\n\t\t\tif token == nil {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t}\n\n\tvar tag []byte\n\tif tag_token {\n\t\tif len(tag_handle) == 0 {\n\t\t\ttag = tag_suffix\n\t\t\ttag_suffix = nil\n\t\t} else {\n\t\t\tfor i := range parser.tag_directives {\n\t\t\t\tif bytes.Equal(parser.tag_directives[i].handle, tag_handle) {\n\t\t\t\t\ttag = append([]byte(nil), parser.tag_directives[i].prefix...)\n\t\t\t\t\ttag = append(tag, tag_suffix...)\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif len(tag) == 0 {\n\t\t\t\tyaml_parser_set_parser_error_context(parser,\n\t\t\t\t\t\"while parsing a node\", start_mark,\n\t\t\t\t\t\"found undefined tag handle\", tag_mark)\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t}\n\n\timplicit := len(tag) == 0\n\tif indentless_sequence && token.typ == yaml_BLOCK_ENTRY_TOKEN {\n\t\tend_mark = token.end_mark\n\t\tparser.state = yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE\n\t\t*event = yaml_event_t{\n\t\t\ttyp:        yaml_SEQUENCE_START_EVENT,\n\t\t\tstart_mark: start_mark,\n\t\t\tend_mark:   end_mark,\n\t\t\tanchor:     anchor,\n\t\t\ttag:        tag,\n\t\t\timplicit:   implicit,\n\t\t\tstyle:      yaml_style_t(yaml_BLOCK_SEQUENCE_STYLE),\n\t\t}\n\t\treturn true\n\t}\n\tif token.typ == yaml_SCALAR_TOKEN {\n\t\tvar plain_implicit, quoted_implicit bool\n\t\tend_mark = token.end_mark\n\t\tif (len(tag) == 0 && token.style == yaml_PLAIN_SCALAR_STYLE) || (len(tag) == 1 && tag[0] == '!') {\n\t\t\tplain_implicit = true\n\t\t} else if len(tag) == 0 {\n\t\t\tquoted_implicit = true\n\t\t}\n\t\tparser.state = parser.states[len(parser.states)-1]\n\t\tparser.states = parser.states[:len(parser.states)-1]\n\n\t\t*event = yaml_event_t{\n\t\t\ttyp:             yaml_SCALAR_EVENT,\n\t\t\tstart_mark:      start_mark,\n\t\t\tend_mark:        end_mark,\n\t\t\tanchor:          anchor,\n\t\t\ttag:             tag,\n\t\t\tvalue:           token.value,\n\t\t\timplicit:        plain_implicit,\n\t\t\tquoted_implicit: quoted_implicit,\n\t\t\tstyle:           yaml_style_t(token.style),\n\t\t}\n\t\tskip_token(parser)\n\t\treturn true\n\t}\n\tif token.typ == yaml_FLOW_SEQUENCE_START_TOKEN {\n\t\t// [Go] Some of the events below can be merged as they differ only on style.\n\t\tend_mark = token.end_mark\n\t\tparser.state = yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE\n\t\t*event = yaml_event_t{\n\t\t\ttyp:        yaml_SEQUENCE_START_EVENT,\n\t\t\tstart_mark: start_mark,\n\t\t\tend_mark:   end_mark,\n\t\t\tanchor:     anchor,\n\t\t\ttag:        tag,\n\t\t\timplicit:   implicit,\n\t\t\tstyle:      yaml_style_t(yaml_FLOW_SEQUENCE_STYLE),\n\t\t}\n\t\treturn true\n\t}\n\tif token.typ == yaml_FLOW_MAPPING_START_TOKEN {\n\t\tend_mark = token.end_mark\n\t\tparser.state = yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE\n\t\t*event = yaml_event_t{\n\t\t\ttyp:        yaml_MAPPING_START_EVENT,\n\t\t\tstart_mark: start_mark,\n\t\t\tend_mark:   end_mark,\n\t\t\tanchor:     anchor,\n\t\t\ttag:        tag,\n\t\t\timplicit:   implicit,\n\t\t\tstyle:      yaml_style_t(yaml_FLOW_MAPPING_STYLE),\n\t\t}\n\t\treturn true\n\t}\n\tif block && token.typ == yaml_BLOCK_SEQUENCE_START_TOKEN {\n\t\tend_mark = token.end_mark\n\t\tparser.state = yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE\n\t\t*event = yaml_event_t{\n\t\t\ttyp:        yaml_SEQUENCE_START_EVENT,\n\t\t\tstart_mark: start_mark,\n\t\t\tend_mark:   end_mark,\n\t\t\tanchor:     anchor,\n\t\t\ttag:        tag,\n\t\t\timplicit:   implicit,\n\t\t\tstyle:      yaml_style_t(yaml_BLOCK_SEQUENCE_STYLE),\n\t\t}\n\t\treturn true\n\t}\n\tif block && token.typ == yaml_BLOCK_MAPPING_START_TOKEN {\n\t\tend_mark = token.end_mark\n\t\tparser.state = yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE\n\t\t*event = yaml_event_t{\n\t\t\ttyp:        yaml_MAPPING_START_EVENT,\n\t\t\tstart_mark: start_mark,\n\t\t\tend_mark:   end_mark,\n\t\t\tanchor:     anchor,\n\t\t\ttag:        tag,\n\t\t\timplicit:   implicit,\n\t\t\tstyle:      yaml_style_t(yaml_BLOCK_MAPPING_STYLE),\n\t\t}\n\t\treturn true\n\t}\n\tif len(anchor) > 0 || len(tag) > 0 {\n\t\tparser.state = parser.states[len(parser.states)-1]\n\t\tparser.states = parser.states[:len(parser.states)-1]\n\n\t\t*event = yaml_event_t{\n\t\t\ttyp:             yaml_SCALAR_EVENT,\n\t\t\tstart_mark:      start_mark,\n\t\t\tend_mark:        end_mark,\n\t\t\tanchor:          anchor,\n\t\t\ttag:             tag,\n\t\t\timplicit:        implicit,\n\t\t\tquoted_implicit: false,\n\t\t\tstyle:           yaml_style_t(yaml_PLAIN_SCALAR_STYLE),\n\t\t}\n\t\treturn true\n\t}\n\n\tcontext := \"while parsing a flow node\"\n\tif block {\n\t\tcontext = \"while parsing a block node\"\n\t}\n\tyaml_parser_set_parser_error_context(parser, context, start_mark,\n\t\t\"did not find expected node content\", token.start_mark)\n\treturn false\n}\n\n// Parse the productions:\n// block_sequence ::= BLOCK-SEQUENCE-START (BLOCK-ENTRY block_node?)* BLOCK-END\n//                    ********************  *********** *             *********\n//\nfunc yaml_parser_parse_block_sequence_entry(parser *yaml_parser_t, event *yaml_event_t, first bool) bool {\n\tif first {\n\t\ttoken := peek_token(parser)\n\t\tparser.marks = append(parser.marks, token.start_mark)\n\t\tskip_token(parser)\n\t}\n\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\n\tif token.typ == yaml_BLOCK_ENTRY_TOKEN {\n\t\tmark := token.end_mark\n\t\tskip_token(parser)\n\t\ttoken = peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tif token.typ != yaml_BLOCK_ENTRY_TOKEN && token.typ != yaml_BLOCK_END_TOKEN {\n\t\t\tparser.states = append(parser.states, yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE)\n\t\t\treturn yaml_parser_parse_node(parser, event, true, false)\n\t\t} else {\n\t\t\tparser.state = yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE\n\t\t\treturn yaml_parser_process_empty_scalar(parser, event, mark)\n\t\t}\n\t}\n\tif token.typ == yaml_BLOCK_END_TOKEN {\n\t\tparser.state = parser.states[len(parser.states)-1]\n\t\tparser.states = parser.states[:len(parser.states)-1]\n\t\tparser.marks = parser.marks[:len(parser.marks)-1]\n\n\t\t*event = yaml_event_t{\n\t\t\ttyp:        yaml_SEQUENCE_END_EVENT,\n\t\t\tstart_mark: token.start_mark,\n\t\t\tend_mark:   token.end_mark,\n\t\t}\n\n\t\tskip_token(parser)\n\t\treturn true\n\t}\n\n\tcontext_mark := parser.marks[len(parser.marks)-1]\n\tparser.marks = parser.marks[:len(parser.marks)-1]\n\treturn yaml_parser_set_parser_error_context(parser,\n\t\t\"while parsing a block collection\", context_mark,\n\t\t\"did not find expected '-' indicator\", token.start_mark)\n}\n\n// Parse the productions:\n// indentless_sequence  ::= (BLOCK-ENTRY block_node?)+\n//                           *********** *\nfunc yaml_parser_parse_indentless_sequence_entry(parser *yaml_parser_t, event *yaml_event_t) bool {\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\n\tif token.typ == yaml_BLOCK_ENTRY_TOKEN {\n\t\tmark := token.end_mark\n\t\tskip_token(parser)\n\t\ttoken = peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tif token.typ != yaml_BLOCK_ENTRY_TOKEN &&\n\t\t\ttoken.typ != yaml_KEY_TOKEN &&\n\t\t\ttoken.typ != yaml_VALUE_TOKEN &&\n\t\t\ttoken.typ != yaml_BLOCK_END_TOKEN {\n\t\t\tparser.states = append(parser.states, yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE)\n\t\t\treturn yaml_parser_parse_node(parser, event, true, false)\n\t\t}\n\t\tparser.state = yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE\n\t\treturn yaml_parser_process_empty_scalar(parser, event, mark)\n\t}\n\tparser.state = parser.states[len(parser.states)-1]\n\tparser.states = parser.states[:len(parser.states)-1]\n\n\t*event = yaml_event_t{\n\t\ttyp:        yaml_SEQUENCE_END_EVENT,\n\t\tstart_mark: token.start_mark,\n\t\tend_mark:   token.start_mark, // [Go] Shouldn't this be token.end_mark?\n\t}\n\treturn true\n}\n\n// Parse the productions:\n// block_mapping        ::= BLOCK-MAPPING_START\n//                          *******************\n//                          ((KEY block_node_or_indentless_sequence?)?\n//                            *** *\n//                          (VALUE block_node_or_indentless_sequence?)?)*\n//\n//                          BLOCK-END\n//                          *********\n//\nfunc yaml_parser_parse_block_mapping_key(parser *yaml_parser_t, event *yaml_event_t, first bool) bool {\n\tif first {\n\t\ttoken := peek_token(parser)\n\t\tparser.marks = append(parser.marks, token.start_mark)\n\t\tskip_token(parser)\n\t}\n\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\n\tif token.typ == yaml_KEY_TOKEN {\n\t\tmark := token.end_mark\n\t\tskip_token(parser)\n\t\ttoken = peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tif token.typ != yaml_KEY_TOKEN &&\n\t\t\ttoken.typ != yaml_VALUE_TOKEN &&\n\t\t\ttoken.typ != yaml_BLOCK_END_TOKEN {\n\t\t\tparser.states = append(parser.states, yaml_PARSE_BLOCK_MAPPING_VALUE_STATE)\n\t\t\treturn yaml_parser_parse_node(parser, event, true, true)\n\t\t} else {\n\t\t\tparser.state = yaml_PARSE_BLOCK_MAPPING_VALUE_STATE\n\t\t\treturn yaml_parser_process_empty_scalar(parser, event, mark)\n\t\t}\n\t} else if token.typ == yaml_BLOCK_END_TOKEN {\n\t\tparser.state = parser.states[len(parser.states)-1]\n\t\tparser.states = parser.states[:len(parser.states)-1]\n\t\tparser.marks = parser.marks[:len(parser.marks)-1]\n\t\t*event = yaml_event_t{\n\t\t\ttyp:        yaml_MAPPING_END_EVENT,\n\t\t\tstart_mark: token.start_mark,\n\t\t\tend_mark:   token.end_mark,\n\t\t}\n\t\tskip_token(parser)\n\t\treturn true\n\t}\n\n\tcontext_mark := parser.marks[len(parser.marks)-1]\n\tparser.marks = parser.marks[:len(parser.marks)-1]\n\treturn yaml_parser_set_parser_error_context(parser,\n\t\t\"while parsing a block mapping\", context_mark,\n\t\t\"did not find expected key\", token.start_mark)\n}\n\n// Parse the productions:\n// block_mapping        ::= BLOCK-MAPPING_START\n//\n//                          ((KEY block_node_or_indentless_sequence?)?\n//\n//                          (VALUE block_node_or_indentless_sequence?)?)*\n//                           ***** *\n//                          BLOCK-END\n//\n//\nfunc yaml_parser_parse_block_mapping_value(parser *yaml_parser_t, event *yaml_event_t) bool {\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\tif token.typ == yaml_VALUE_TOKEN {\n\t\tmark := token.end_mark\n\t\tskip_token(parser)\n\t\ttoken = peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tif token.typ != yaml_KEY_TOKEN &&\n\t\t\ttoken.typ != yaml_VALUE_TOKEN &&\n\t\t\ttoken.typ != yaml_BLOCK_END_TOKEN {\n\t\t\tparser.states = append(parser.states, yaml_PARSE_BLOCK_MAPPING_KEY_STATE)\n\t\t\treturn yaml_parser_parse_node(parser, event, true, true)\n\t\t}\n\t\tparser.state = yaml_PARSE_BLOCK_MAPPING_KEY_STATE\n\t\treturn yaml_parser_process_empty_scalar(parser, event, mark)\n\t}\n\tparser.state = yaml_PARSE_BLOCK_MAPPING_KEY_STATE\n\treturn yaml_parser_process_empty_scalar(parser, event, token.start_mark)\n}\n\n// Parse the productions:\n// flow_sequence        ::= FLOW-SEQUENCE-START\n//                          *******************\n//                          (flow_sequence_entry FLOW-ENTRY)*\n//                           *                   **********\n//                          flow_sequence_entry?\n//                          *\n//                          FLOW-SEQUENCE-END\n//                          *****************\n// flow_sequence_entry  ::= flow_node | KEY flow_node? (VALUE flow_node?)?\n//                          *\n//\nfunc yaml_parser_parse_flow_sequence_entry(parser *yaml_parser_t, event *yaml_event_t, first bool) bool {\n\tif first {\n\t\ttoken := peek_token(parser)\n\t\tparser.marks = append(parser.marks, token.start_mark)\n\t\tskip_token(parser)\n\t}\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\tif token.typ != yaml_FLOW_SEQUENCE_END_TOKEN {\n\t\tif !first {\n\t\t\tif token.typ == yaml_FLOW_ENTRY_TOKEN {\n\t\t\t\tskip_token(parser)\n\t\t\t\ttoken = peek_token(parser)\n\t\t\t\tif token == nil {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcontext_mark := parser.marks[len(parser.marks)-1]\n\t\t\t\tparser.marks = parser.marks[:len(parser.marks)-1]\n\t\t\t\treturn yaml_parser_set_parser_error_context(parser,\n\t\t\t\t\t\"while parsing a flow sequence\", context_mark,\n\t\t\t\t\t\"did not find expected ',' or ']'\", token.start_mark)\n\t\t\t}\n\t\t}\n\n\t\tif token.typ == yaml_KEY_TOKEN {\n\t\t\tparser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE\n\t\t\t*event = yaml_event_t{\n\t\t\t\ttyp:        yaml_MAPPING_START_EVENT,\n\t\t\t\tstart_mark: token.start_mark,\n\t\t\t\tend_mark:   token.end_mark,\n\t\t\t\timplicit:   true,\n\t\t\t\tstyle:      yaml_style_t(yaml_FLOW_MAPPING_STYLE),\n\t\t\t}\n\t\t\tskip_token(parser)\n\t\t\treturn true\n\t\t} else if token.typ != yaml_FLOW_SEQUENCE_END_TOKEN {\n\t\t\tparser.states = append(parser.states, yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE)\n\t\t\treturn yaml_parser_parse_node(parser, event, false, false)\n\t\t}\n\t}\n\n\tparser.state = parser.states[len(parser.states)-1]\n\tparser.states = parser.states[:len(parser.states)-1]\n\tparser.marks = parser.marks[:len(parser.marks)-1]\n\n\t*event = yaml_event_t{\n\t\ttyp:        yaml_SEQUENCE_END_EVENT,\n\t\tstart_mark: token.start_mark,\n\t\tend_mark:   token.end_mark,\n\t}\n\n\tskip_token(parser)\n\treturn true\n}\n\n//\n// Parse the productions:\n// flow_sequence_entry  ::= flow_node | KEY flow_node? (VALUE flow_node?)?\n//                                      *** *\n//\nfunc yaml_parser_parse_flow_sequence_entry_mapping_key(parser *yaml_parser_t, event *yaml_event_t) bool {\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\tif token.typ != yaml_VALUE_TOKEN &&\n\t\ttoken.typ != yaml_FLOW_ENTRY_TOKEN &&\n\t\ttoken.typ != yaml_FLOW_SEQUENCE_END_TOKEN {\n\t\tparser.states = append(parser.states, yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE)\n\t\treturn yaml_parser_parse_node(parser, event, false, false)\n\t}\n\tmark := token.end_mark\n\tskip_token(parser)\n\tparser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE\n\treturn yaml_parser_process_empty_scalar(parser, event, mark)\n}\n\n// Parse the productions:\n// flow_sequence_entry  ::= flow_node | KEY flow_node? (VALUE flow_node?)?\n//                                                      ***** *\n//\nfunc yaml_parser_parse_flow_sequence_entry_mapping_value(parser *yaml_parser_t, event *yaml_event_t) bool {\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\tif token.typ == yaml_VALUE_TOKEN {\n\t\tskip_token(parser)\n\t\ttoken := peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tif token.typ != yaml_FLOW_ENTRY_TOKEN && token.typ != yaml_FLOW_SEQUENCE_END_TOKEN {\n\t\t\tparser.states = append(parser.states, yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE)\n\t\t\treturn yaml_parser_parse_node(parser, event, false, false)\n\t\t}\n\t}\n\tparser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE\n\treturn yaml_parser_process_empty_scalar(parser, event, token.start_mark)\n}\n\n// Parse the productions:\n// flow_sequence_entry  ::= flow_node | KEY flow_node? (VALUE flow_node?)?\n//                                                                      *\n//\nfunc yaml_parser_parse_flow_sequence_entry_mapping_end(parser *yaml_parser_t, event *yaml_event_t) bool {\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\tparser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE\n\t*event = yaml_event_t{\n\t\ttyp:        yaml_MAPPING_END_EVENT,\n\t\tstart_mark: token.start_mark,\n\t\tend_mark:   token.start_mark, // [Go] Shouldn't this be end_mark?\n\t}\n\treturn true\n}\n\n// Parse the productions:\n// flow_mapping         ::= FLOW-MAPPING-START\n//                          ******************\n//                          (flow_mapping_entry FLOW-ENTRY)*\n//                           *                  **********\n//                          flow_mapping_entry?\n//                          ******************\n//                          FLOW-MAPPING-END\n//                          ****************\n// flow_mapping_entry   ::= flow_node | KEY flow_node? (VALUE flow_node?)?\n//                          *           *** *\n//\nfunc yaml_parser_parse_flow_mapping_key(parser *yaml_parser_t, event *yaml_event_t, first bool) bool {\n\tif first {\n\t\ttoken := peek_token(parser)\n\t\tparser.marks = append(parser.marks, token.start_mark)\n\t\tskip_token(parser)\n\t}\n\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\n\tif token.typ != yaml_FLOW_MAPPING_END_TOKEN {\n\t\tif !first {\n\t\t\tif token.typ == yaml_FLOW_ENTRY_TOKEN {\n\t\t\t\tskip_token(parser)\n\t\t\t\ttoken = peek_token(parser)\n\t\t\t\tif token == nil {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcontext_mark := parser.marks[len(parser.marks)-1]\n\t\t\t\tparser.marks = parser.marks[:len(parser.marks)-1]\n\t\t\t\treturn yaml_parser_set_parser_error_context(parser,\n\t\t\t\t\t\"while parsing a flow mapping\", context_mark,\n\t\t\t\t\t\"did not find expected ',' or '}'\", token.start_mark)\n\t\t\t}\n\t\t}\n\n\t\tif token.typ == yaml_KEY_TOKEN {\n\t\t\tskip_token(parser)\n\t\t\ttoken = peek_token(parser)\n\t\t\tif token == nil {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif token.typ != yaml_VALUE_TOKEN &&\n\t\t\t\ttoken.typ != yaml_FLOW_ENTRY_TOKEN &&\n\t\t\t\ttoken.typ != yaml_FLOW_MAPPING_END_TOKEN {\n\t\t\t\tparser.states = append(parser.states, yaml_PARSE_FLOW_MAPPING_VALUE_STATE)\n\t\t\t\treturn yaml_parser_parse_node(parser, event, false, false)\n\t\t\t} else {\n\t\t\t\tparser.state = yaml_PARSE_FLOW_MAPPING_VALUE_STATE\n\t\t\t\treturn yaml_parser_process_empty_scalar(parser, event, token.start_mark)\n\t\t\t}\n\t\t} else if token.typ != yaml_FLOW_MAPPING_END_TOKEN {\n\t\t\tparser.states = append(parser.states, yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE)\n\t\t\treturn yaml_parser_parse_node(parser, event, false, false)\n\t\t}\n\t}\n\n\tparser.state = parser.states[len(parser.states)-1]\n\tparser.states = parser.states[:len(parser.states)-1]\n\tparser.marks = parser.marks[:len(parser.marks)-1]\n\t*event = yaml_event_t{\n\t\ttyp:        yaml_MAPPING_END_EVENT,\n\t\tstart_mark: token.start_mark,\n\t\tend_mark:   token.end_mark,\n\t}\n\tskip_token(parser)\n\treturn true\n}\n\n// Parse the productions:\n// flow_mapping_entry   ::= flow_node | KEY flow_node? (VALUE flow_node?)?\n//                                   *                  ***** *\n//\nfunc yaml_parser_parse_flow_mapping_value(parser *yaml_parser_t, event *yaml_event_t, empty bool) bool {\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\tif empty {\n\t\tparser.state = yaml_PARSE_FLOW_MAPPING_KEY_STATE\n\t\treturn yaml_parser_process_empty_scalar(parser, event, token.start_mark)\n\t}\n\tif token.typ == yaml_VALUE_TOKEN {\n\t\tskip_token(parser)\n\t\ttoken = peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tif token.typ != yaml_FLOW_ENTRY_TOKEN && token.typ != yaml_FLOW_MAPPING_END_TOKEN {\n\t\t\tparser.states = append(parser.states, yaml_PARSE_FLOW_MAPPING_KEY_STATE)\n\t\t\treturn yaml_parser_parse_node(parser, event, false, false)\n\t\t}\n\t}\n\tparser.state = yaml_PARSE_FLOW_MAPPING_KEY_STATE\n\treturn yaml_parser_process_empty_scalar(parser, event, token.start_mark)\n}\n\n// Generate an empty scalar event.\nfunc yaml_parser_process_empty_scalar(parser *yaml_parser_t, event *yaml_event_t, mark yaml_mark_t) bool {\n\t*event = yaml_event_t{\n\t\ttyp:        yaml_SCALAR_EVENT,\n\t\tstart_mark: mark,\n\t\tend_mark:   mark,\n\t\tvalue:      nil, // Empty\n\t\timplicit:   true,\n\t\tstyle:      yaml_style_t(yaml_PLAIN_SCALAR_STYLE),\n\t}\n\treturn true\n}\n\nvar default_tag_directives = []yaml_tag_directive_t{\n\t{[]byte(\"!\"), []byte(\"!\")},\n\t{[]byte(\"!!\"), []byte(\"tag:yaml.org,2002:\")},\n}\n\n// Parse directives.\nfunc yaml_parser_process_directives(parser *yaml_parser_t,\n\tversion_directive_ref **yaml_version_directive_t,\n\ttag_directives_ref *[]yaml_tag_directive_t) bool {\n\n\tvar version_directive *yaml_version_directive_t\n\tvar tag_directives []yaml_tag_directive_t\n\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\n\tfor token.typ == yaml_VERSION_DIRECTIVE_TOKEN || token.typ == yaml_TAG_DIRECTIVE_TOKEN {\n\t\tif token.typ == yaml_VERSION_DIRECTIVE_TOKEN {\n\t\t\tif version_directive != nil {\n\t\t\t\tyaml_parser_set_parser_error(parser,\n\t\t\t\t\t\"found duplicate %YAML directive\", token.start_mark)\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif token.major != 1 || token.minor != 1 {\n\t\t\t\tyaml_parser_set_parser_error(parser,\n\t\t\t\t\t\"found incompatible YAML document\", token.start_mark)\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tversion_directive = &yaml_version_directive_t{\n\t\t\t\tmajor: token.major,\n\t\t\t\tminor: token.minor,\n\t\t\t}\n\t\t} else if token.typ == yaml_TAG_DIRECTIVE_TOKEN {\n\t\t\tvalue := yaml_tag_directive_t{\n\t\t\t\thandle: token.value,\n\t\t\t\tprefix: token.prefix,\n\t\t\t}\n\t\t\tif !yaml_parser_append_tag_directive(parser, value, false, token.start_mark) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\ttag_directives = append(tag_directives, value)\n\t\t}\n\n\t\tskip_token(parser)\n\t\ttoken = peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tfor i := range default_tag_directives {\n\t\tif !yaml_parser_append_tag_directive(parser, default_tag_directives[i], true, token.start_mark) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tif version_directive_ref != nil {\n\t\t*version_directive_ref = version_directive\n\t}\n\tif tag_directives_ref != nil {\n\t\t*tag_directives_ref = tag_directives\n\t}\n\treturn true\n}\n\n// Append a tag directive to the directives stack.\nfunc yaml_parser_append_tag_directive(parser *yaml_parser_t, value yaml_tag_directive_t, allow_duplicates bool, mark yaml_mark_t) bool {\n\tfor i := range parser.tag_directives {\n\t\tif bytes.Equal(value.handle, parser.tag_directives[i].handle) {\n\t\t\tif allow_duplicates {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn yaml_parser_set_parser_error(parser, \"found duplicate %TAG directive\", mark)\n\t\t}\n\t}\n\n\t// [Go] I suspect the copy is unnecessary. This was likely done\n\t// because there was no way to track ownership of the data.\n\tvalue_copy := yaml_tag_directive_t{\n\t\thandle: make([]byte, len(value.handle)),\n\t\tprefix: make([]byte, len(value.prefix)),\n\t}\n\tcopy(value_copy.handle, value.handle)\n\tcopy(value_copy.prefix, value.prefix)\n\tparser.tag_directives = append(parser.tag_directives, value_copy)\n\treturn true\n}\n"
  },
  {
    "path": "vendor/sigs.k8s.io/yaml/goyaml.v2/readerc.go",
    "content": "package yaml\n\nimport (\n\t\"io\"\n)\n\n// Set the reader error and return 0.\nfunc yaml_parser_set_reader_error(parser *yaml_parser_t, problem string, offset int, value int) bool {\n\tparser.error = yaml_READER_ERROR\n\tparser.problem = problem\n\tparser.problem_offset = offset\n\tparser.problem_value = value\n\treturn false\n}\n\n// Byte order marks.\nconst (\n\tbom_UTF8    = \"\\xef\\xbb\\xbf\"\n\tbom_UTF16LE = \"\\xff\\xfe\"\n\tbom_UTF16BE = \"\\xfe\\xff\"\n)\n\n// Determine the input stream encoding by checking the BOM symbol. If no BOM is\n// found, the UTF-8 encoding is assumed. Return 1 on success, 0 on failure.\nfunc yaml_parser_determine_encoding(parser *yaml_parser_t) bool {\n\t// Ensure that we had enough bytes in the raw buffer.\n\tfor !parser.eof && len(parser.raw_buffer)-parser.raw_buffer_pos < 3 {\n\t\tif !yaml_parser_update_raw_buffer(parser) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Determine the encoding.\n\tbuf := parser.raw_buffer\n\tpos := parser.raw_buffer_pos\n\tavail := len(buf) - pos\n\tif avail >= 2 && buf[pos] == bom_UTF16LE[0] && buf[pos+1] == bom_UTF16LE[1] {\n\t\tparser.encoding = yaml_UTF16LE_ENCODING\n\t\tparser.raw_buffer_pos += 2\n\t\tparser.offset += 2\n\t} else if avail >= 2 && buf[pos] == bom_UTF16BE[0] && buf[pos+1] == bom_UTF16BE[1] {\n\t\tparser.encoding = yaml_UTF16BE_ENCODING\n\t\tparser.raw_buffer_pos += 2\n\t\tparser.offset += 2\n\t} else if avail >= 3 && buf[pos] == bom_UTF8[0] && buf[pos+1] == bom_UTF8[1] && buf[pos+2] == bom_UTF8[2] {\n\t\tparser.encoding = yaml_UTF8_ENCODING\n\t\tparser.raw_buffer_pos += 3\n\t\tparser.offset += 3\n\t} else {\n\t\tparser.encoding = yaml_UTF8_ENCODING\n\t}\n\treturn true\n}\n\n// Update the raw buffer.\nfunc yaml_parser_update_raw_buffer(parser *yaml_parser_t) bool {\n\tsize_read := 0\n\n\t// Return if the raw buffer is full.\n\tif parser.raw_buffer_pos == 0 && len(parser.raw_buffer) == cap(parser.raw_buffer) {\n\t\treturn true\n\t}\n\n\t// Return on EOF.\n\tif parser.eof {\n\t\treturn true\n\t}\n\n\t// Move the remaining bytes in the raw buffer to the beginning.\n\tif parser.raw_buffer_pos > 0 && parser.raw_buffer_pos < len(parser.raw_buffer) {\n\t\tcopy(parser.raw_buffer, parser.raw_buffer[parser.raw_buffer_pos:])\n\t}\n\tparser.raw_buffer = parser.raw_buffer[:len(parser.raw_buffer)-parser.raw_buffer_pos]\n\tparser.raw_buffer_pos = 0\n\n\t// Call the read handler to fill the buffer.\n\tsize_read, err := parser.read_handler(parser, parser.raw_buffer[len(parser.raw_buffer):cap(parser.raw_buffer)])\n\tparser.raw_buffer = parser.raw_buffer[:len(parser.raw_buffer)+size_read]\n\tif err == io.EOF {\n\t\tparser.eof = true\n\t} else if err != nil {\n\t\treturn yaml_parser_set_reader_error(parser, \"input error: \"+err.Error(), parser.offset, -1)\n\t}\n\treturn true\n}\n\n// Ensure that the buffer contains at least `length` characters.\n// Return true on success, false on failure.\n//\n// The length is supposed to be significantly less that the buffer size.\nfunc yaml_parser_update_buffer(parser *yaml_parser_t, length int) bool {\n\tif parser.read_handler == nil {\n\t\tpanic(\"read handler must be set\")\n\t}\n\n\t// [Go] This function was changed to guarantee the requested length size at EOF.\n\t// The fact we need to do this is pretty awful, but the description above implies\n\t// for that to be the case, and there are tests \n\n\t// If the EOF flag is set and the raw buffer is empty, do nothing.\n\tif parser.eof && parser.raw_buffer_pos == len(parser.raw_buffer) {\n\t\t// [Go] ACTUALLY! Read the documentation of this function above.\n\t\t// This is just broken. To return true, we need to have the\n\t\t// given length in the buffer. Not doing that means every single\n\t\t// check that calls this function to make sure the buffer has a\n\t\t// given length is Go) panicking; or C) accessing invalid memory.\n\t\t//return true\n\t}\n\n\t// Return if the buffer contains enough characters.\n\tif parser.unread >= length {\n\t\treturn true\n\t}\n\n\t// Determine the input encoding if it is not known yet.\n\tif parser.encoding == yaml_ANY_ENCODING {\n\t\tif !yaml_parser_determine_encoding(parser) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Move the unread characters to the beginning of the buffer.\n\tbuffer_len := len(parser.buffer)\n\tif parser.buffer_pos > 0 && parser.buffer_pos < buffer_len {\n\t\tcopy(parser.buffer, parser.buffer[parser.buffer_pos:])\n\t\tbuffer_len -= parser.buffer_pos\n\t\tparser.buffer_pos = 0\n\t} else if parser.buffer_pos == buffer_len {\n\t\tbuffer_len = 0\n\t\tparser.buffer_pos = 0\n\t}\n\n\t// Open the whole buffer for writing, and cut it before returning.\n\tparser.buffer = parser.buffer[:cap(parser.buffer)]\n\n\t// Fill the buffer until it has enough characters.\n\tfirst := true\n\tfor parser.unread < length {\n\n\t\t// Fill the raw buffer if necessary.\n\t\tif !first || parser.raw_buffer_pos == len(parser.raw_buffer) {\n\t\t\tif !yaml_parser_update_raw_buffer(parser) {\n\t\t\t\tparser.buffer = parser.buffer[:buffer_len]\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tfirst = false\n\n\t\t// Decode the raw buffer.\n\tinner:\n\t\tfor parser.raw_buffer_pos != len(parser.raw_buffer) {\n\t\t\tvar value rune\n\t\t\tvar width int\n\n\t\t\traw_unread := len(parser.raw_buffer) - parser.raw_buffer_pos\n\n\t\t\t// Decode the next character.\n\t\t\tswitch parser.encoding {\n\t\t\tcase yaml_UTF8_ENCODING:\n\t\t\t\t// Decode a UTF-8 character.  Check RFC 3629\n\t\t\t\t// (http://www.ietf.org/rfc/rfc3629.txt) for more details.\n\t\t\t\t//\n\t\t\t\t// The following table (taken from the RFC) is used for\n\t\t\t\t// decoding.\n\t\t\t\t//\n\t\t\t\t//    Char. number range |        UTF-8 octet sequence\n\t\t\t\t//      (hexadecimal)    |              (binary)\n\t\t\t\t//   --------------------+------------------------------------\n\t\t\t\t//   0000 0000-0000 007F | 0xxxxxxx\n\t\t\t\t//   0000 0080-0000 07FF | 110xxxxx 10xxxxxx\n\t\t\t\t//   0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx\n\t\t\t\t//   0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n\t\t\t\t//\n\t\t\t\t// Additionally, the characters in the range 0xD800-0xDFFF\n\t\t\t\t// are prohibited as they are reserved for use with UTF-16\n\t\t\t\t// surrogate pairs.\n\n\t\t\t\t// Determine the length of the UTF-8 sequence.\n\t\t\t\toctet := parser.raw_buffer[parser.raw_buffer_pos]\n\t\t\t\tswitch {\n\t\t\t\tcase octet&0x80 == 0x00:\n\t\t\t\t\twidth = 1\n\t\t\t\tcase octet&0xE0 == 0xC0:\n\t\t\t\t\twidth = 2\n\t\t\t\tcase octet&0xF0 == 0xE0:\n\t\t\t\t\twidth = 3\n\t\t\t\tcase octet&0xF8 == 0xF0:\n\t\t\t\t\twidth = 4\n\t\t\t\tdefault:\n\t\t\t\t\t// The leading octet is invalid.\n\t\t\t\t\treturn yaml_parser_set_reader_error(parser,\n\t\t\t\t\t\t\"invalid leading UTF-8 octet\",\n\t\t\t\t\t\tparser.offset, int(octet))\n\t\t\t\t}\n\n\t\t\t\t// Check if the raw buffer contains an incomplete character.\n\t\t\t\tif width > raw_unread {\n\t\t\t\t\tif parser.eof {\n\t\t\t\t\t\treturn yaml_parser_set_reader_error(parser,\n\t\t\t\t\t\t\t\"incomplete UTF-8 octet sequence\",\n\t\t\t\t\t\t\tparser.offset, -1)\n\t\t\t\t\t}\n\t\t\t\t\tbreak inner\n\t\t\t\t}\n\n\t\t\t\t// Decode the leading octet.\n\t\t\t\tswitch {\n\t\t\t\tcase octet&0x80 == 0x00:\n\t\t\t\t\tvalue = rune(octet & 0x7F)\n\t\t\t\tcase octet&0xE0 == 0xC0:\n\t\t\t\t\tvalue = rune(octet & 0x1F)\n\t\t\t\tcase octet&0xF0 == 0xE0:\n\t\t\t\t\tvalue = rune(octet & 0x0F)\n\t\t\t\tcase octet&0xF8 == 0xF0:\n\t\t\t\t\tvalue = rune(octet & 0x07)\n\t\t\t\tdefault:\n\t\t\t\t\tvalue = 0\n\t\t\t\t}\n\n\t\t\t\t// Check and decode the trailing octets.\n\t\t\t\tfor k := 1; k < width; k++ {\n\t\t\t\t\toctet = parser.raw_buffer[parser.raw_buffer_pos+k]\n\n\t\t\t\t\t// Check if the octet is valid.\n\t\t\t\t\tif (octet & 0xC0) != 0x80 {\n\t\t\t\t\t\treturn yaml_parser_set_reader_error(parser,\n\t\t\t\t\t\t\t\"invalid trailing UTF-8 octet\",\n\t\t\t\t\t\t\tparser.offset+k, int(octet))\n\t\t\t\t\t}\n\n\t\t\t\t\t// Decode the octet.\n\t\t\t\t\tvalue = (value << 6) + rune(octet&0x3F)\n\t\t\t\t}\n\n\t\t\t\t// Check the length of the sequence against the value.\n\t\t\t\tswitch {\n\t\t\t\tcase width == 1:\n\t\t\t\tcase width == 2 && value >= 0x80:\n\t\t\t\tcase width == 3 && value >= 0x800:\n\t\t\t\tcase width == 4 && value >= 0x10000:\n\t\t\t\tdefault:\n\t\t\t\t\treturn yaml_parser_set_reader_error(parser,\n\t\t\t\t\t\t\"invalid length of a UTF-8 sequence\",\n\t\t\t\t\t\tparser.offset, -1)\n\t\t\t\t}\n\n\t\t\t\t// Check the range of the value.\n\t\t\t\tif value >= 0xD800 && value <= 0xDFFF || value > 0x10FFFF {\n\t\t\t\t\treturn yaml_parser_set_reader_error(parser,\n\t\t\t\t\t\t\"invalid Unicode character\",\n\t\t\t\t\t\tparser.offset, int(value))\n\t\t\t\t}\n\n\t\t\tcase yaml_UTF16LE_ENCODING, yaml_UTF16BE_ENCODING:\n\t\t\t\tvar low, high int\n\t\t\t\tif parser.encoding == yaml_UTF16LE_ENCODING {\n\t\t\t\t\tlow, high = 0, 1\n\t\t\t\t} else {\n\t\t\t\t\tlow, high = 1, 0\n\t\t\t\t}\n\n\t\t\t\t// The UTF-16 encoding is not as simple as one might\n\t\t\t\t// naively think.  Check RFC 2781\n\t\t\t\t// (http://www.ietf.org/rfc/rfc2781.txt).\n\t\t\t\t//\n\t\t\t\t// Normally, two subsequent bytes describe a Unicode\n\t\t\t\t// character.  However a special technique (called a\n\t\t\t\t// surrogate pair) is used for specifying character\n\t\t\t\t// values larger than 0xFFFF.\n\t\t\t\t//\n\t\t\t\t// A surrogate pair consists of two pseudo-characters:\n\t\t\t\t//      high surrogate area (0xD800-0xDBFF)\n\t\t\t\t//      low surrogate area (0xDC00-0xDFFF)\n\t\t\t\t//\n\t\t\t\t// The following formulas are used for decoding\n\t\t\t\t// and encoding characters using surrogate pairs:\n\t\t\t\t//\n\t\t\t\t//  U  = U' + 0x10000   (0x01 00 00 <= U <= 0x10 FF FF)\n\t\t\t\t//  U' = yyyyyyyyyyxxxxxxxxxx   (0 <= U' <= 0x0F FF FF)\n\t\t\t\t//  W1 = 110110yyyyyyyyyy\n\t\t\t\t//  W2 = 110111xxxxxxxxxx\n\t\t\t\t//\n\t\t\t\t// where U is the character value, W1 is the high surrogate\n\t\t\t\t// area, W2 is the low surrogate area.\n\n\t\t\t\t// Check for incomplete UTF-16 character.\n\t\t\t\tif raw_unread < 2 {\n\t\t\t\t\tif parser.eof {\n\t\t\t\t\t\treturn yaml_parser_set_reader_error(parser,\n\t\t\t\t\t\t\t\"incomplete UTF-16 character\",\n\t\t\t\t\t\t\tparser.offset, -1)\n\t\t\t\t\t}\n\t\t\t\t\tbreak inner\n\t\t\t\t}\n\n\t\t\t\t// Get the character.\n\t\t\t\tvalue = rune(parser.raw_buffer[parser.raw_buffer_pos+low]) +\n\t\t\t\t\t(rune(parser.raw_buffer[parser.raw_buffer_pos+high]) << 8)\n\n\t\t\t\t// Check for unexpected low surrogate area.\n\t\t\t\tif value&0xFC00 == 0xDC00 {\n\t\t\t\t\treturn yaml_parser_set_reader_error(parser,\n\t\t\t\t\t\t\"unexpected low surrogate area\",\n\t\t\t\t\t\tparser.offset, int(value))\n\t\t\t\t}\n\n\t\t\t\t// Check for a high surrogate area.\n\t\t\t\tif value&0xFC00 == 0xD800 {\n\t\t\t\t\twidth = 4\n\n\t\t\t\t\t// Check for incomplete surrogate pair.\n\t\t\t\t\tif raw_unread < 4 {\n\t\t\t\t\t\tif parser.eof {\n\t\t\t\t\t\t\treturn yaml_parser_set_reader_error(parser,\n\t\t\t\t\t\t\t\t\"incomplete UTF-16 surrogate pair\",\n\t\t\t\t\t\t\t\tparser.offset, -1)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak inner\n\t\t\t\t\t}\n\n\t\t\t\t\t// Get the next character.\n\t\t\t\t\tvalue2 := rune(parser.raw_buffer[parser.raw_buffer_pos+low+2]) +\n\t\t\t\t\t\t(rune(parser.raw_buffer[parser.raw_buffer_pos+high+2]) << 8)\n\n\t\t\t\t\t// Check for a low surrogate area.\n\t\t\t\t\tif value2&0xFC00 != 0xDC00 {\n\t\t\t\t\t\treturn yaml_parser_set_reader_error(parser,\n\t\t\t\t\t\t\t\"expected low surrogate area\",\n\t\t\t\t\t\t\tparser.offset+2, int(value2))\n\t\t\t\t\t}\n\n\t\t\t\t\t// Generate the value of the surrogate pair.\n\t\t\t\t\tvalue = 0x10000 + ((value & 0x3FF) << 10) + (value2 & 0x3FF)\n\t\t\t\t} else {\n\t\t\t\t\twidth = 2\n\t\t\t\t}\n\n\t\t\tdefault:\n\t\t\t\tpanic(\"impossible\")\n\t\t\t}\n\n\t\t\t// Check if the character is in the allowed range:\n\t\t\t//      #x9 | #xA | #xD | [#x20-#x7E]               (8 bit)\n\t\t\t//      | #x85 | [#xA0-#xD7FF] | [#xE000-#xFFFD]    (16 bit)\n\t\t\t//      | [#x10000-#x10FFFF]                        (32 bit)\n\t\t\tswitch {\n\t\t\tcase value == 0x09:\n\t\t\tcase value == 0x0A:\n\t\t\tcase value == 0x0D:\n\t\t\tcase value >= 0x20 && value <= 0x7E:\n\t\t\tcase value == 0x85:\n\t\t\tcase value >= 0xA0 && value <= 0xD7FF:\n\t\t\tcase value >= 0xE000 && value <= 0xFFFD:\n\t\t\tcase value >= 0x10000 && value <= 0x10FFFF:\n\t\t\tdefault:\n\t\t\t\treturn yaml_parser_set_reader_error(parser,\n\t\t\t\t\t\"control characters are not allowed\",\n\t\t\t\t\tparser.offset, int(value))\n\t\t\t}\n\n\t\t\t// Move the raw pointers.\n\t\t\tparser.raw_buffer_pos += width\n\t\t\tparser.offset += width\n\n\t\t\t// Finally put the character into the buffer.\n\t\t\tif value <= 0x7F {\n\t\t\t\t// 0000 0000-0000 007F . 0xxxxxxx\n\t\t\t\tparser.buffer[buffer_len+0] = byte(value)\n\t\t\t\tbuffer_len += 1\n\t\t\t} else if value <= 0x7FF {\n\t\t\t\t// 0000 0080-0000 07FF . 110xxxxx 10xxxxxx\n\t\t\t\tparser.buffer[buffer_len+0] = byte(0xC0 + (value >> 6))\n\t\t\t\tparser.buffer[buffer_len+1] = byte(0x80 + (value & 0x3F))\n\t\t\t\tbuffer_len += 2\n\t\t\t} else if value <= 0xFFFF {\n\t\t\t\t// 0000 0800-0000 FFFF . 1110xxxx 10xxxxxx 10xxxxxx\n\t\t\t\tparser.buffer[buffer_len+0] = byte(0xE0 + (value >> 12))\n\t\t\t\tparser.buffer[buffer_len+1] = byte(0x80 + ((value >> 6) & 0x3F))\n\t\t\t\tparser.buffer[buffer_len+2] = byte(0x80 + (value & 0x3F))\n\t\t\t\tbuffer_len += 3\n\t\t\t} else {\n\t\t\t\t// 0001 0000-0010 FFFF . 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n\t\t\t\tparser.buffer[buffer_len+0] = byte(0xF0 + (value >> 18))\n\t\t\t\tparser.buffer[buffer_len+1] = byte(0x80 + ((value >> 12) & 0x3F))\n\t\t\t\tparser.buffer[buffer_len+2] = byte(0x80 + ((value >> 6) & 0x3F))\n\t\t\t\tparser.buffer[buffer_len+3] = byte(0x80 + (value & 0x3F))\n\t\t\t\tbuffer_len += 4\n\t\t\t}\n\n\t\t\tparser.unread++\n\t\t}\n\n\t\t// On EOF, put NUL into the buffer and return.\n\t\tif parser.eof {\n\t\t\tparser.buffer[buffer_len] = 0\n\t\t\tbuffer_len++\n\t\t\tparser.unread++\n\t\t\tbreak\n\t\t}\n\t}\n\t// [Go] Read the documentation of this function above. To return true,\n\t// we need to have the given length in the buffer. Not doing that means\n\t// every single check that calls this function to make sure the buffer\n\t// has a given length is Go) panicking; or C) accessing invalid memory.\n\t// This happens here due to the EOF above breaking early.\n\tfor buffer_len < length {\n\t\tparser.buffer[buffer_len] = 0\n\t\tbuffer_len++\n\t}\n\tparser.buffer = parser.buffer[:buffer_len]\n\treturn true\n}\n"
  },
  {
    "path": "vendor/sigs.k8s.io/yaml/goyaml.v2/resolve.go",
    "content": "package yaml\n\nimport (\n\t\"encoding/base64\"\n\t\"math\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n)\n\ntype resolveMapItem struct {\n\tvalue interface{}\n\ttag   string\n}\n\nvar resolveTable = make([]byte, 256)\nvar resolveMap = make(map[string]resolveMapItem)\n\nfunc init() {\n\tt := resolveTable\n\tt[int('+')] = 'S' // Sign\n\tt[int('-')] = 'S'\n\tfor _, c := range \"0123456789\" {\n\t\tt[int(c)] = 'D' // Digit\n\t}\n\tfor _, c := range \"yYnNtTfFoO~\" {\n\t\tt[int(c)] = 'M' // In map\n\t}\n\tt[int('.')] = '.' // Float (potentially in map)\n\n\tvar resolveMapList = []struct {\n\t\tv   interface{}\n\t\ttag string\n\t\tl   []string\n\t}{\n\t\t{true, yaml_BOOL_TAG, []string{\"y\", \"Y\", \"yes\", \"Yes\", \"YES\"}},\n\t\t{true, yaml_BOOL_TAG, []string{\"true\", \"True\", \"TRUE\"}},\n\t\t{true, yaml_BOOL_TAG, []string{\"on\", \"On\", \"ON\"}},\n\t\t{false, yaml_BOOL_TAG, []string{\"n\", \"N\", \"no\", \"No\", \"NO\"}},\n\t\t{false, yaml_BOOL_TAG, []string{\"false\", \"False\", \"FALSE\"}},\n\t\t{false, yaml_BOOL_TAG, []string{\"off\", \"Off\", \"OFF\"}},\n\t\t{nil, yaml_NULL_TAG, []string{\"\", \"~\", \"null\", \"Null\", \"NULL\"}},\n\t\t{math.NaN(), yaml_FLOAT_TAG, []string{\".nan\", \".NaN\", \".NAN\"}},\n\t\t{math.Inf(+1), yaml_FLOAT_TAG, []string{\".inf\", \".Inf\", \".INF\"}},\n\t\t{math.Inf(+1), yaml_FLOAT_TAG, []string{\"+.inf\", \"+.Inf\", \"+.INF\"}},\n\t\t{math.Inf(-1), yaml_FLOAT_TAG, []string{\"-.inf\", \"-.Inf\", \"-.INF\"}},\n\t\t{\"<<\", yaml_MERGE_TAG, []string{\"<<\"}},\n\t}\n\n\tm := resolveMap\n\tfor _, item := range resolveMapList {\n\t\tfor _, s := range item.l {\n\t\t\tm[s] = resolveMapItem{item.v, item.tag}\n\t\t}\n\t}\n}\n\nconst longTagPrefix = \"tag:yaml.org,2002:\"\n\nfunc shortTag(tag string) string {\n\t// TODO This can easily be made faster and produce less garbage.\n\tif strings.HasPrefix(tag, longTagPrefix) {\n\t\treturn \"!!\" + tag[len(longTagPrefix):]\n\t}\n\treturn tag\n}\n\nfunc longTag(tag string) string {\n\tif strings.HasPrefix(tag, \"!!\") {\n\t\treturn longTagPrefix + tag[2:]\n\t}\n\treturn tag\n}\n\nfunc resolvableTag(tag string) bool {\n\tswitch tag {\n\tcase \"\", yaml_STR_TAG, yaml_BOOL_TAG, yaml_INT_TAG, yaml_FLOAT_TAG, yaml_NULL_TAG, yaml_TIMESTAMP_TAG:\n\t\treturn true\n\t}\n\treturn false\n}\n\nvar yamlStyleFloat = regexp.MustCompile(`^[-+]?(\\.[0-9]+|[0-9]+(\\.[0-9]*)?)([eE][-+]?[0-9]+)?$`)\n\nfunc resolve(tag string, in string) (rtag string, out interface{}) {\n\tif !resolvableTag(tag) {\n\t\treturn tag, in\n\t}\n\n\tdefer func() {\n\t\tswitch tag {\n\t\tcase \"\", rtag, yaml_STR_TAG, yaml_BINARY_TAG:\n\t\t\treturn\n\t\tcase yaml_FLOAT_TAG:\n\t\t\tif rtag == yaml_INT_TAG {\n\t\t\t\tswitch v := out.(type) {\n\t\t\t\tcase int64:\n\t\t\t\t\trtag = yaml_FLOAT_TAG\n\t\t\t\t\tout = float64(v)\n\t\t\t\t\treturn\n\t\t\t\tcase int:\n\t\t\t\t\trtag = yaml_FLOAT_TAG\n\t\t\t\t\tout = float64(v)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfailf(\"cannot decode %s `%s` as a %s\", shortTag(rtag), in, shortTag(tag))\n\t}()\n\n\t// Any data is accepted as a !!str or !!binary.\n\t// Otherwise, the prefix is enough of a hint about what it might be.\n\thint := byte('N')\n\tif in != \"\" {\n\t\thint = resolveTable[in[0]]\n\t}\n\tif hint != 0 && tag != yaml_STR_TAG && tag != yaml_BINARY_TAG {\n\t\t// Handle things we can lookup in a map.\n\t\tif item, ok := resolveMap[in]; ok {\n\t\t\treturn item.tag, item.value\n\t\t}\n\n\t\t// Base 60 floats are a bad idea, were dropped in YAML 1.2, and\n\t\t// are purposefully unsupported here. They're still quoted on\n\t\t// the way out for compatibility with other parser, though.\n\n\t\tswitch hint {\n\t\tcase 'M':\n\t\t\t// We've already checked the map above.\n\n\t\tcase '.':\n\t\t\t// Not in the map, so maybe a normal float.\n\t\t\tfloatv, err := strconv.ParseFloat(in, 64)\n\t\t\tif err == nil {\n\t\t\t\treturn yaml_FLOAT_TAG, floatv\n\t\t\t}\n\n\t\tcase 'D', 'S':\n\t\t\t// Int, float, or timestamp.\n\t\t\t// Only try values as a timestamp if the value is unquoted or there's an explicit\n\t\t\t// !!timestamp tag.\n\t\t\tif tag == \"\" || tag == yaml_TIMESTAMP_TAG {\n\t\t\t\tt, ok := parseTimestamp(in)\n\t\t\t\tif ok {\n\t\t\t\t\treturn yaml_TIMESTAMP_TAG, t\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tplain := strings.Replace(in, \"_\", \"\", -1)\n\t\t\tintv, err := strconv.ParseInt(plain, 0, 64)\n\t\t\tif err == nil {\n\t\t\t\tif intv == int64(int(intv)) {\n\t\t\t\t\treturn yaml_INT_TAG, int(intv)\n\t\t\t\t} else {\n\t\t\t\t\treturn yaml_INT_TAG, intv\n\t\t\t\t}\n\t\t\t}\n\t\t\tuintv, err := strconv.ParseUint(plain, 0, 64)\n\t\t\tif err == nil {\n\t\t\t\treturn yaml_INT_TAG, uintv\n\t\t\t}\n\t\t\tif yamlStyleFloat.MatchString(plain) {\n\t\t\t\tfloatv, err := strconv.ParseFloat(plain, 64)\n\t\t\t\tif err == nil {\n\t\t\t\t\treturn yaml_FLOAT_TAG, floatv\n\t\t\t\t}\n\t\t\t}\n\t\t\tif strings.HasPrefix(plain, \"0b\") {\n\t\t\t\tintv, err := strconv.ParseInt(plain[2:], 2, 64)\n\t\t\t\tif err == nil {\n\t\t\t\t\tif intv == int64(int(intv)) {\n\t\t\t\t\t\treturn yaml_INT_TAG, int(intv)\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn yaml_INT_TAG, intv\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tuintv, err := strconv.ParseUint(plain[2:], 2, 64)\n\t\t\t\tif err == nil {\n\t\t\t\t\treturn yaml_INT_TAG, uintv\n\t\t\t\t}\n\t\t\t} else if strings.HasPrefix(plain, \"-0b\") {\n\t\t\t\tintv, err := strconv.ParseInt(\"-\" + plain[3:], 2, 64)\n\t\t\t\tif err == nil {\n\t\t\t\t\tif true || intv == int64(int(intv)) {\n\t\t\t\t\t\treturn yaml_INT_TAG, int(intv)\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn yaml_INT_TAG, intv\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tpanic(\"resolveTable item not yet handled: \" + string(rune(hint)) + \" (with \" + in + \")\")\n\t\t}\n\t}\n\treturn yaml_STR_TAG, in\n}\n\n// encodeBase64 encodes s as base64 that is broken up into multiple lines\n// as appropriate for the resulting length.\nfunc encodeBase64(s string) string {\n\tconst lineLen = 70\n\tencLen := base64.StdEncoding.EncodedLen(len(s))\n\tlines := encLen/lineLen + 1\n\tbuf := make([]byte, encLen*2+lines)\n\tin := buf[0:encLen]\n\tout := buf[encLen:]\n\tbase64.StdEncoding.Encode(in, []byte(s))\n\tk := 0\n\tfor i := 0; i < len(in); i += lineLen {\n\t\tj := i + lineLen\n\t\tif j > len(in) {\n\t\t\tj = len(in)\n\t\t}\n\t\tk += copy(out[k:], in[i:j])\n\t\tif lines > 1 {\n\t\t\tout[k] = '\\n'\n\t\t\tk++\n\t\t}\n\t}\n\treturn string(out[:k])\n}\n\n// This is a subset of the formats allowed by the regular expression\n// defined at http://yaml.org/type/timestamp.html.\nvar allowedTimestampFormats = []string{\n\t\"2006-1-2T15:4:5.999999999Z07:00\", // RCF3339Nano with short date fields.\n\t\"2006-1-2t15:4:5.999999999Z07:00\", // RFC3339Nano with short date fields and lower-case \"t\".\n\t\"2006-1-2 15:4:5.999999999\",       // space separated with no time zone\n\t\"2006-1-2\",                        // date only\n\t// Notable exception: time.Parse cannot handle: \"2001-12-14 21:59:43.10 -5\"\n\t// from the set of examples.\n}\n\n// parseTimestamp parses s as a timestamp string and\n// returns the timestamp and reports whether it succeeded.\n// Timestamp formats are defined at http://yaml.org/type/timestamp.html\nfunc parseTimestamp(s string) (time.Time, bool) {\n\t// TODO write code to check all the formats supported by\n\t// http://yaml.org/type/timestamp.html instead of using time.Parse.\n\n\t// Quick check: all date formats start with YYYY-.\n\ti := 0\n\tfor ; i < len(s); i++ {\n\t\tif c := s[i]; c < '0' || c > '9' {\n\t\t\tbreak\n\t\t}\n\t}\n\tif i != 4 || i == len(s) || s[i] != '-' {\n\t\treturn time.Time{}, false\n\t}\n\tfor _, format := range allowedTimestampFormats {\n\t\tif t, err := time.Parse(format, s); err == nil {\n\t\t\treturn t, true\n\t\t}\n\t}\n\treturn time.Time{}, false\n}\n"
  },
  {
    "path": "vendor/sigs.k8s.io/yaml/goyaml.v2/scannerc.go",
    "content": "package yaml\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n)\n\n// Introduction\n// ************\n//\n// The following notes assume that you are familiar with the YAML specification\n// (http://yaml.org/spec/1.2/spec.html).  We mostly follow it, although in\n// some cases we are less restrictive that it requires.\n//\n// The process of transforming a YAML stream into a sequence of events is\n// divided on two steps: Scanning and Parsing.\n//\n// The Scanner transforms the input stream into a sequence of tokens, while the\n// parser transform the sequence of tokens produced by the Scanner into a\n// sequence of parsing events.\n//\n// The Scanner is rather clever and complicated. The Parser, on the contrary,\n// is a straightforward implementation of a recursive-descendant parser (or,\n// LL(1) parser, as it is usually called).\n//\n// Actually there are two issues of Scanning that might be called \"clever\", the\n// rest is quite straightforward.  The issues are \"block collection start\" and\n// \"simple keys\".  Both issues are explained below in details.\n//\n// Here the Scanning step is explained and implemented.  We start with the list\n// of all the tokens produced by the Scanner together with short descriptions.\n//\n// Now, tokens:\n//\n//      STREAM-START(encoding)          # The stream start.\n//      STREAM-END                      # The stream end.\n//      VERSION-DIRECTIVE(major,minor)  # The '%YAML' directive.\n//      TAG-DIRECTIVE(handle,prefix)    # The '%TAG' directive.\n//      DOCUMENT-START                  # '---'\n//      DOCUMENT-END                    # '...'\n//      BLOCK-SEQUENCE-START            # Indentation increase denoting a block\n//      BLOCK-MAPPING-START             # sequence or a block mapping.\n//      BLOCK-END                       # Indentation decrease.\n//      FLOW-SEQUENCE-START             # '['\n//      FLOW-SEQUENCE-END               # ']'\n//      BLOCK-SEQUENCE-START            # '{'\n//      BLOCK-SEQUENCE-END              # '}'\n//      BLOCK-ENTRY                     # '-'\n//      FLOW-ENTRY                      # ','\n//      KEY                             # '?' or nothing (simple keys).\n//      VALUE                           # ':'\n//      ALIAS(anchor)                   # '*anchor'\n//      ANCHOR(anchor)                  # '&anchor'\n//      TAG(handle,suffix)              # '!handle!suffix'\n//      SCALAR(value,style)             # A scalar.\n//\n// The following two tokens are \"virtual\" tokens denoting the beginning and the\n// end of the stream:\n//\n//      STREAM-START(encoding)\n//      STREAM-END\n//\n// We pass the information about the input stream encoding with the\n// STREAM-START token.\n//\n// The next two tokens are responsible for tags:\n//\n//      VERSION-DIRECTIVE(major,minor)\n//      TAG-DIRECTIVE(handle,prefix)\n//\n// Example:\n//\n//      %YAML   1.1\n//      %TAG    !   !foo\n//      %TAG    !yaml!  tag:yaml.org,2002:\n//      ---\n//\n// The correspoding sequence of tokens:\n//\n//      STREAM-START(utf-8)\n//      VERSION-DIRECTIVE(1,1)\n//      TAG-DIRECTIVE(\"!\",\"!foo\")\n//      TAG-DIRECTIVE(\"!yaml\",\"tag:yaml.org,2002:\")\n//      DOCUMENT-START\n//      STREAM-END\n//\n// Note that the VERSION-DIRECTIVE and TAG-DIRECTIVE tokens occupy a whole\n// line.\n//\n// The document start and end indicators are represented by:\n//\n//      DOCUMENT-START\n//      DOCUMENT-END\n//\n// Note that if a YAML stream contains an implicit document (without '---'\n// and '...' indicators), no DOCUMENT-START and DOCUMENT-END tokens will be\n// produced.\n//\n// In the following examples, we present whole documents together with the\n// produced tokens.\n//\n//      1. An implicit document:\n//\n//          'a scalar'\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          SCALAR(\"a scalar\",single-quoted)\n//          STREAM-END\n//\n//      2. An explicit document:\n//\n//          ---\n//          'a scalar'\n//          ...\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          DOCUMENT-START\n//          SCALAR(\"a scalar\",single-quoted)\n//          DOCUMENT-END\n//          STREAM-END\n//\n//      3. Several documents in a stream:\n//\n//          'a scalar'\n//          ---\n//          'another scalar'\n//          ---\n//          'yet another scalar'\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          SCALAR(\"a scalar\",single-quoted)\n//          DOCUMENT-START\n//          SCALAR(\"another scalar\",single-quoted)\n//          DOCUMENT-START\n//          SCALAR(\"yet another scalar\",single-quoted)\n//          STREAM-END\n//\n// We have already introduced the SCALAR token above.  The following tokens are\n// used to describe aliases, anchors, tag, and scalars:\n//\n//      ALIAS(anchor)\n//      ANCHOR(anchor)\n//      TAG(handle,suffix)\n//      SCALAR(value,style)\n//\n// The following series of examples illustrate the usage of these tokens:\n//\n//      1. A recursive sequence:\n//\n//          &A [ *A ]\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          ANCHOR(\"A\")\n//          FLOW-SEQUENCE-START\n//          ALIAS(\"A\")\n//          FLOW-SEQUENCE-END\n//          STREAM-END\n//\n//      2. A tagged scalar:\n//\n//          !!float \"3.14\"  # A good approximation.\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          TAG(\"!!\",\"float\")\n//          SCALAR(\"3.14\",double-quoted)\n//          STREAM-END\n//\n//      3. Various scalar styles:\n//\n//          --- # Implicit empty plain scalars do not produce tokens.\n//          --- a plain scalar\n//          --- 'a single-quoted scalar'\n//          --- \"a double-quoted scalar\"\n//          --- |-\n//            a literal scalar\n//          --- >-\n//            a folded\n//            scalar\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          DOCUMENT-START\n//          DOCUMENT-START\n//          SCALAR(\"a plain scalar\",plain)\n//          DOCUMENT-START\n//          SCALAR(\"a single-quoted scalar\",single-quoted)\n//          DOCUMENT-START\n//          SCALAR(\"a double-quoted scalar\",double-quoted)\n//          DOCUMENT-START\n//          SCALAR(\"a literal scalar\",literal)\n//          DOCUMENT-START\n//          SCALAR(\"a folded scalar\",folded)\n//          STREAM-END\n//\n// Now it's time to review collection-related tokens. We will start with\n// flow collections:\n//\n//      FLOW-SEQUENCE-START\n//      FLOW-SEQUENCE-END\n//      FLOW-MAPPING-START\n//      FLOW-MAPPING-END\n//      FLOW-ENTRY\n//      KEY\n//      VALUE\n//\n// The tokens FLOW-SEQUENCE-START, FLOW-SEQUENCE-END, FLOW-MAPPING-START, and\n// FLOW-MAPPING-END represent the indicators '[', ']', '{', and '}'\n// correspondingly.  FLOW-ENTRY represent the ',' indicator.  Finally the\n// indicators '?' and ':', which are used for denoting mapping keys and values,\n// are represented by the KEY and VALUE tokens.\n//\n// The following examples show flow collections:\n//\n//      1. A flow sequence:\n//\n//          [item 1, item 2, item 3]\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          FLOW-SEQUENCE-START\n//          SCALAR(\"item 1\",plain)\n//          FLOW-ENTRY\n//          SCALAR(\"item 2\",plain)\n//          FLOW-ENTRY\n//          SCALAR(\"item 3\",plain)\n//          FLOW-SEQUENCE-END\n//          STREAM-END\n//\n//      2. A flow mapping:\n//\n//          {\n//              a simple key: a value,  # Note that the KEY token is produced.\n//              ? a complex key: another value,\n//          }\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          FLOW-MAPPING-START\n//          KEY\n//          SCALAR(\"a simple key\",plain)\n//          VALUE\n//          SCALAR(\"a value\",plain)\n//          FLOW-ENTRY\n//          KEY\n//          SCALAR(\"a complex key\",plain)\n//          VALUE\n//          SCALAR(\"another value\",plain)\n//          FLOW-ENTRY\n//          FLOW-MAPPING-END\n//          STREAM-END\n//\n// A simple key is a key which is not denoted by the '?' indicator.  Note that\n// the Scanner still produce the KEY token whenever it encounters a simple key.\n//\n// For scanning block collections, the following tokens are used (note that we\n// repeat KEY and VALUE here):\n//\n//      BLOCK-SEQUENCE-START\n//      BLOCK-MAPPING-START\n//      BLOCK-END\n//      BLOCK-ENTRY\n//      KEY\n//      VALUE\n//\n// The tokens BLOCK-SEQUENCE-START and BLOCK-MAPPING-START denote indentation\n// increase that precedes a block collection (cf. the INDENT token in Python).\n// The token BLOCK-END denote indentation decrease that ends a block collection\n// (cf. the DEDENT token in Python).  However YAML has some syntax pecularities\n// that makes detections of these tokens more complex.\n//\n// The tokens BLOCK-ENTRY, KEY, and VALUE are used to represent the indicators\n// '-', '?', and ':' correspondingly.\n//\n// The following examples show how the tokens BLOCK-SEQUENCE-START,\n// BLOCK-MAPPING-START, and BLOCK-END are emitted by the Scanner:\n//\n//      1. Block sequences:\n//\n//          - item 1\n//          - item 2\n//          -\n//            - item 3.1\n//            - item 3.2\n//          -\n//            key 1: value 1\n//            key 2: value 2\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          BLOCK-SEQUENCE-START\n//          BLOCK-ENTRY\n//          SCALAR(\"item 1\",plain)\n//          BLOCK-ENTRY\n//          SCALAR(\"item 2\",plain)\n//          BLOCK-ENTRY\n//          BLOCK-SEQUENCE-START\n//          BLOCK-ENTRY\n//          SCALAR(\"item 3.1\",plain)\n//          BLOCK-ENTRY\n//          SCALAR(\"item 3.2\",plain)\n//          BLOCK-END\n//          BLOCK-ENTRY\n//          BLOCK-MAPPING-START\n//          KEY\n//          SCALAR(\"key 1\",plain)\n//          VALUE\n//          SCALAR(\"value 1\",plain)\n//          KEY\n//          SCALAR(\"key 2\",plain)\n//          VALUE\n//          SCALAR(\"value 2\",plain)\n//          BLOCK-END\n//          BLOCK-END\n//          STREAM-END\n//\n//      2. Block mappings:\n//\n//          a simple key: a value   # The KEY token is produced here.\n//          ? a complex key\n//          : another value\n//          a mapping:\n//            key 1: value 1\n//            key 2: value 2\n//          a sequence:\n//            - item 1\n//            - item 2\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          BLOCK-MAPPING-START\n//          KEY\n//          SCALAR(\"a simple key\",plain)\n//          VALUE\n//          SCALAR(\"a value\",plain)\n//          KEY\n//          SCALAR(\"a complex key\",plain)\n//          VALUE\n//          SCALAR(\"another value\",plain)\n//          KEY\n//          SCALAR(\"a mapping\",plain)\n//          BLOCK-MAPPING-START\n//          KEY\n//          SCALAR(\"key 1\",plain)\n//          VALUE\n//          SCALAR(\"value 1\",plain)\n//          KEY\n//          SCALAR(\"key 2\",plain)\n//          VALUE\n//          SCALAR(\"value 2\",plain)\n//          BLOCK-END\n//          KEY\n//          SCALAR(\"a sequence\",plain)\n//          VALUE\n//          BLOCK-SEQUENCE-START\n//          BLOCK-ENTRY\n//          SCALAR(\"item 1\",plain)\n//          BLOCK-ENTRY\n//          SCALAR(\"item 2\",plain)\n//          BLOCK-END\n//          BLOCK-END\n//          STREAM-END\n//\n// YAML does not always require to start a new block collection from a new\n// line.  If the current line contains only '-', '?', and ':' indicators, a new\n// block collection may start at the current line.  The following examples\n// illustrate this case:\n//\n//      1. Collections in a sequence:\n//\n//          - - item 1\n//            - item 2\n//          - key 1: value 1\n//            key 2: value 2\n//          - ? complex key\n//            : complex value\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          BLOCK-SEQUENCE-START\n//          BLOCK-ENTRY\n//          BLOCK-SEQUENCE-START\n//          BLOCK-ENTRY\n//          SCALAR(\"item 1\",plain)\n//          BLOCK-ENTRY\n//          SCALAR(\"item 2\",plain)\n//          BLOCK-END\n//          BLOCK-ENTRY\n//          BLOCK-MAPPING-START\n//          KEY\n//          SCALAR(\"key 1\",plain)\n//          VALUE\n//          SCALAR(\"value 1\",plain)\n//          KEY\n//          SCALAR(\"key 2\",plain)\n//          VALUE\n//          SCALAR(\"value 2\",plain)\n//          BLOCK-END\n//          BLOCK-ENTRY\n//          BLOCK-MAPPING-START\n//          KEY\n//          SCALAR(\"complex key\")\n//          VALUE\n//          SCALAR(\"complex value\")\n//          BLOCK-END\n//          BLOCK-END\n//          STREAM-END\n//\n//      2. Collections in a mapping:\n//\n//          ? a sequence\n//          : - item 1\n//            - item 2\n//          ? a mapping\n//          : key 1: value 1\n//            key 2: value 2\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          BLOCK-MAPPING-START\n//          KEY\n//          SCALAR(\"a sequence\",plain)\n//          VALUE\n//          BLOCK-SEQUENCE-START\n//          BLOCK-ENTRY\n//          SCALAR(\"item 1\",plain)\n//          BLOCK-ENTRY\n//          SCALAR(\"item 2\",plain)\n//          BLOCK-END\n//          KEY\n//          SCALAR(\"a mapping\",plain)\n//          VALUE\n//          BLOCK-MAPPING-START\n//          KEY\n//          SCALAR(\"key 1\",plain)\n//          VALUE\n//          SCALAR(\"value 1\",plain)\n//          KEY\n//          SCALAR(\"key 2\",plain)\n//          VALUE\n//          SCALAR(\"value 2\",plain)\n//          BLOCK-END\n//          BLOCK-END\n//          STREAM-END\n//\n// YAML also permits non-indented sequences if they are included into a block\n// mapping.  In this case, the token BLOCK-SEQUENCE-START is not produced:\n//\n//      key:\n//      - item 1    # BLOCK-SEQUENCE-START is NOT produced here.\n//      - item 2\n//\n// Tokens:\n//\n//      STREAM-START(utf-8)\n//      BLOCK-MAPPING-START\n//      KEY\n//      SCALAR(\"key\",plain)\n//      VALUE\n//      BLOCK-ENTRY\n//      SCALAR(\"item 1\",plain)\n//      BLOCK-ENTRY\n//      SCALAR(\"item 2\",plain)\n//      BLOCK-END\n//\n\n// Ensure that the buffer contains the required number of characters.\n// Return true on success, false on failure (reader error or memory error).\nfunc cache(parser *yaml_parser_t, length int) bool {\n\t// [Go] This was inlined: !cache(A, B) -> unread < B && !update(A, B)\n\treturn parser.unread >= length || yaml_parser_update_buffer(parser, length)\n}\n\n// Advance the buffer pointer.\nfunc skip(parser *yaml_parser_t) {\n\tparser.mark.index++\n\tparser.mark.column++\n\tparser.unread--\n\tparser.buffer_pos += width(parser.buffer[parser.buffer_pos])\n}\n\nfunc skip_line(parser *yaml_parser_t) {\n\tif is_crlf(parser.buffer, parser.buffer_pos) {\n\t\tparser.mark.index += 2\n\t\tparser.mark.column = 0\n\t\tparser.mark.line++\n\t\tparser.unread -= 2\n\t\tparser.buffer_pos += 2\n\t} else if is_break(parser.buffer, parser.buffer_pos) {\n\t\tparser.mark.index++\n\t\tparser.mark.column = 0\n\t\tparser.mark.line++\n\t\tparser.unread--\n\t\tparser.buffer_pos += width(parser.buffer[parser.buffer_pos])\n\t}\n}\n\n// Copy a character to a string buffer and advance pointers.\nfunc read(parser *yaml_parser_t, s []byte) []byte {\n\tw := width(parser.buffer[parser.buffer_pos])\n\tif w == 0 {\n\t\tpanic(\"invalid character sequence\")\n\t}\n\tif len(s) == 0 {\n\t\ts = make([]byte, 0, 32)\n\t}\n\tif w == 1 && len(s)+w <= cap(s) {\n\t\ts = s[:len(s)+1]\n\t\ts[len(s)-1] = parser.buffer[parser.buffer_pos]\n\t\tparser.buffer_pos++\n\t} else {\n\t\ts = append(s, parser.buffer[parser.buffer_pos:parser.buffer_pos+w]...)\n\t\tparser.buffer_pos += w\n\t}\n\tparser.mark.index++\n\tparser.mark.column++\n\tparser.unread--\n\treturn s\n}\n\n// Copy a line break character to a string buffer and advance pointers.\nfunc read_line(parser *yaml_parser_t, s []byte) []byte {\n\tbuf := parser.buffer\n\tpos := parser.buffer_pos\n\tswitch {\n\tcase buf[pos] == '\\r' && buf[pos+1] == '\\n':\n\t\t// CR LF . LF\n\t\ts = append(s, '\\n')\n\t\tparser.buffer_pos += 2\n\t\tparser.mark.index++\n\t\tparser.unread--\n\tcase buf[pos] == '\\r' || buf[pos] == '\\n':\n\t\t// CR|LF . LF\n\t\ts = append(s, '\\n')\n\t\tparser.buffer_pos += 1\n\tcase buf[pos] == '\\xC2' && buf[pos+1] == '\\x85':\n\t\t// NEL . LF\n\t\ts = append(s, '\\n')\n\t\tparser.buffer_pos += 2\n\tcase buf[pos] == '\\xE2' && buf[pos+1] == '\\x80' && (buf[pos+2] == '\\xA8' || buf[pos+2] == '\\xA9'):\n\t\t// LS|PS . LS|PS\n\t\ts = append(s, buf[parser.buffer_pos:pos+3]...)\n\t\tparser.buffer_pos += 3\n\tdefault:\n\t\treturn s\n\t}\n\tparser.mark.index++\n\tparser.mark.column = 0\n\tparser.mark.line++\n\tparser.unread--\n\treturn s\n}\n\n// Get the next token.\nfunc yaml_parser_scan(parser *yaml_parser_t, token *yaml_token_t) bool {\n\t// Erase the token object.\n\t*token = yaml_token_t{} // [Go] Is this necessary?\n\n\t// No tokens after STREAM-END or error.\n\tif parser.stream_end_produced || parser.error != yaml_NO_ERROR {\n\t\treturn true\n\t}\n\n\t// Ensure that the tokens queue contains enough tokens.\n\tif !parser.token_available {\n\t\tif !yaml_parser_fetch_more_tokens(parser) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Fetch the next token from the queue.\n\t*token = parser.tokens[parser.tokens_head]\n\tparser.tokens_head++\n\tparser.tokens_parsed++\n\tparser.token_available = false\n\n\tif token.typ == yaml_STREAM_END_TOKEN {\n\t\tparser.stream_end_produced = true\n\t}\n\treturn true\n}\n\n// Set the scanner error and return false.\nfunc yaml_parser_set_scanner_error(parser *yaml_parser_t, context string, context_mark yaml_mark_t, problem string) bool {\n\tparser.error = yaml_SCANNER_ERROR\n\tparser.context = context\n\tparser.context_mark = context_mark\n\tparser.problem = problem\n\tparser.problem_mark = parser.mark\n\treturn false\n}\n\nfunc yaml_parser_set_scanner_tag_error(parser *yaml_parser_t, directive bool, context_mark yaml_mark_t, problem string) bool {\n\tcontext := \"while parsing a tag\"\n\tif directive {\n\t\tcontext = \"while parsing a %TAG directive\"\n\t}\n\treturn yaml_parser_set_scanner_error(parser, context, context_mark, problem)\n}\n\nfunc trace(args ...interface{}) func() {\n\tpargs := append([]interface{}{\"+++\"}, args...)\n\tfmt.Println(pargs...)\n\tpargs = append([]interface{}{\"---\"}, args...)\n\treturn func() { fmt.Println(pargs...) }\n}\n\n// Ensure that the tokens queue contains at least one token which can be\n// returned to the Parser.\nfunc yaml_parser_fetch_more_tokens(parser *yaml_parser_t) bool {\n\t// While we need more tokens to fetch, do it.\n\tfor {\n\t\tif parser.tokens_head != len(parser.tokens) {\n\t\t\t// If queue is non-empty, check if any potential simple key may\n\t\t\t// occupy the head position.\n\t\t\thead_tok_idx, ok := parser.simple_keys_by_tok[parser.tokens_parsed]\n\t\t\tif !ok {\n\t\t\t\tbreak\n\t\t\t} else if valid, ok := yaml_simple_key_is_valid(parser, &parser.simple_keys[head_tok_idx]); !ok {\n\t\t\t\treturn false\n\t\t\t} else if !valid {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\t// Fetch the next token.\n\t\tif !yaml_parser_fetch_next_token(parser) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tparser.token_available = true\n\treturn true\n}\n\n// The dispatcher for token fetchers.\nfunc yaml_parser_fetch_next_token(parser *yaml_parser_t) bool {\n\t// Ensure that the buffer is initialized.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\n\t// Check if we just started scanning.  Fetch STREAM-START then.\n\tif !parser.stream_start_produced {\n\t\treturn yaml_parser_fetch_stream_start(parser)\n\t}\n\n\t// Eat whitespaces and comments until we reach the next token.\n\tif !yaml_parser_scan_to_next_token(parser) {\n\t\treturn false\n\t}\n\n\t// Check the indentation level against the current column.\n\tif !yaml_parser_unroll_indent(parser, parser.mark.column) {\n\t\treturn false\n\t}\n\n\t// Ensure that the buffer contains at least 4 characters.  4 is the length\n\t// of the longest indicators ('--- ' and '... ').\n\tif parser.unread < 4 && !yaml_parser_update_buffer(parser, 4) {\n\t\treturn false\n\t}\n\n\t// Is it the end of the stream?\n\tif is_z(parser.buffer, parser.buffer_pos) {\n\t\treturn yaml_parser_fetch_stream_end(parser)\n\t}\n\n\t// Is it a directive?\n\tif parser.mark.column == 0 && parser.buffer[parser.buffer_pos] == '%' {\n\t\treturn yaml_parser_fetch_directive(parser)\n\t}\n\n\tbuf := parser.buffer\n\tpos := parser.buffer_pos\n\n\t// Is it the document start indicator?\n\tif parser.mark.column == 0 && buf[pos] == '-' && buf[pos+1] == '-' && buf[pos+2] == '-' && is_blankz(buf, pos+3) {\n\t\treturn yaml_parser_fetch_document_indicator(parser, yaml_DOCUMENT_START_TOKEN)\n\t}\n\n\t// Is it the document end indicator?\n\tif parser.mark.column == 0 && buf[pos] == '.' && buf[pos+1] == '.' && buf[pos+2] == '.' && is_blankz(buf, pos+3) {\n\t\treturn yaml_parser_fetch_document_indicator(parser, yaml_DOCUMENT_END_TOKEN)\n\t}\n\n\t// Is it the flow sequence start indicator?\n\tif buf[pos] == '[' {\n\t\treturn yaml_parser_fetch_flow_collection_start(parser, yaml_FLOW_SEQUENCE_START_TOKEN)\n\t}\n\n\t// Is it the flow mapping start indicator?\n\tif parser.buffer[parser.buffer_pos] == '{' {\n\t\treturn yaml_parser_fetch_flow_collection_start(parser, yaml_FLOW_MAPPING_START_TOKEN)\n\t}\n\n\t// Is it the flow sequence end indicator?\n\tif parser.buffer[parser.buffer_pos] == ']' {\n\t\treturn yaml_parser_fetch_flow_collection_end(parser,\n\t\t\tyaml_FLOW_SEQUENCE_END_TOKEN)\n\t}\n\n\t// Is it the flow mapping end indicator?\n\tif parser.buffer[parser.buffer_pos] == '}' {\n\t\treturn yaml_parser_fetch_flow_collection_end(parser,\n\t\t\tyaml_FLOW_MAPPING_END_TOKEN)\n\t}\n\n\t// Is it the flow entry indicator?\n\tif parser.buffer[parser.buffer_pos] == ',' {\n\t\treturn yaml_parser_fetch_flow_entry(parser)\n\t}\n\n\t// Is it the block entry indicator?\n\tif parser.buffer[parser.buffer_pos] == '-' && is_blankz(parser.buffer, parser.buffer_pos+1) {\n\t\treturn yaml_parser_fetch_block_entry(parser)\n\t}\n\n\t// Is it the key indicator?\n\tif parser.buffer[parser.buffer_pos] == '?' && (parser.flow_level > 0 || is_blankz(parser.buffer, parser.buffer_pos+1)) {\n\t\treturn yaml_parser_fetch_key(parser)\n\t}\n\n\t// Is it the value indicator?\n\tif parser.buffer[parser.buffer_pos] == ':' && (parser.flow_level > 0 || is_blankz(parser.buffer, parser.buffer_pos+1)) {\n\t\treturn yaml_parser_fetch_value(parser)\n\t}\n\n\t// Is it an alias?\n\tif parser.buffer[parser.buffer_pos] == '*' {\n\t\treturn yaml_parser_fetch_anchor(parser, yaml_ALIAS_TOKEN)\n\t}\n\n\t// Is it an anchor?\n\tif parser.buffer[parser.buffer_pos] == '&' {\n\t\treturn yaml_parser_fetch_anchor(parser, yaml_ANCHOR_TOKEN)\n\t}\n\n\t// Is it a tag?\n\tif parser.buffer[parser.buffer_pos] == '!' {\n\t\treturn yaml_parser_fetch_tag(parser)\n\t}\n\n\t// Is it a literal scalar?\n\tif parser.buffer[parser.buffer_pos] == '|' && parser.flow_level == 0 {\n\t\treturn yaml_parser_fetch_block_scalar(parser, true)\n\t}\n\n\t// Is it a folded scalar?\n\tif parser.buffer[parser.buffer_pos] == '>' && parser.flow_level == 0 {\n\t\treturn yaml_parser_fetch_block_scalar(parser, false)\n\t}\n\n\t// Is it a single-quoted scalar?\n\tif parser.buffer[parser.buffer_pos] == '\\'' {\n\t\treturn yaml_parser_fetch_flow_scalar(parser, true)\n\t}\n\n\t// Is it a double-quoted scalar?\n\tif parser.buffer[parser.buffer_pos] == '\"' {\n\t\treturn yaml_parser_fetch_flow_scalar(parser, false)\n\t}\n\n\t// Is it a plain scalar?\n\t//\n\t// A plain scalar may start with any non-blank characters except\n\t//\n\t//      '-', '?', ':', ',', '[', ']', '{', '}',\n\t//      '#', '&', '*', '!', '|', '>', '\\'', '\\\"',\n\t//      '%', '@', '`'.\n\t//\n\t// In the block context (and, for the '-' indicator, in the flow context\n\t// too), it may also start with the characters\n\t//\n\t//      '-', '?', ':'\n\t//\n\t// if it is followed by a non-space character.\n\t//\n\t// The last rule is more restrictive than the specification requires.\n\t// [Go] Make this logic more reasonable.\n\t//switch parser.buffer[parser.buffer_pos] {\n\t//case '-', '?', ':', ',', '?', '-', ',', ':', ']', '[', '}', '{', '&', '#', '!', '*', '>', '|', '\"', '\\'', '@', '%', '-', '`':\n\t//}\n\tif !(is_blankz(parser.buffer, parser.buffer_pos) || parser.buffer[parser.buffer_pos] == '-' ||\n\t\tparser.buffer[parser.buffer_pos] == '?' || parser.buffer[parser.buffer_pos] == ':' ||\n\t\tparser.buffer[parser.buffer_pos] == ',' || parser.buffer[parser.buffer_pos] == '[' ||\n\t\tparser.buffer[parser.buffer_pos] == ']' || parser.buffer[parser.buffer_pos] == '{' ||\n\t\tparser.buffer[parser.buffer_pos] == '}' || parser.buffer[parser.buffer_pos] == '#' ||\n\t\tparser.buffer[parser.buffer_pos] == '&' || parser.buffer[parser.buffer_pos] == '*' ||\n\t\tparser.buffer[parser.buffer_pos] == '!' || parser.buffer[parser.buffer_pos] == '|' ||\n\t\tparser.buffer[parser.buffer_pos] == '>' || parser.buffer[parser.buffer_pos] == '\\'' ||\n\t\tparser.buffer[parser.buffer_pos] == '\"' || parser.buffer[parser.buffer_pos] == '%' ||\n\t\tparser.buffer[parser.buffer_pos] == '@' || parser.buffer[parser.buffer_pos] == '`') ||\n\t\t(parser.buffer[parser.buffer_pos] == '-' && !is_blank(parser.buffer, parser.buffer_pos+1)) ||\n\t\t(parser.flow_level == 0 &&\n\t\t\t(parser.buffer[parser.buffer_pos] == '?' || parser.buffer[parser.buffer_pos] == ':') &&\n\t\t\t!is_blankz(parser.buffer, parser.buffer_pos+1)) {\n\t\treturn yaml_parser_fetch_plain_scalar(parser)\n\t}\n\n\t// If we don't determine the token type so far, it is an error.\n\treturn yaml_parser_set_scanner_error(parser,\n\t\t\"while scanning for the next token\", parser.mark,\n\t\t\"found character that cannot start any token\")\n}\n\nfunc yaml_simple_key_is_valid(parser *yaml_parser_t, simple_key *yaml_simple_key_t) (valid, ok bool) {\n\tif !simple_key.possible {\n\t\treturn false, true\n\t}\n\n\t// The 1.2 specification says:\n\t//\n\t//     \"If the ? indicator is omitted, parsing needs to see past the\n\t//     implicit key to recognize it as such. To limit the amount of\n\t//     lookahead required, the “:” indicator must appear at most 1024\n\t//     Unicode characters beyond the start of the key. In addition, the key\n\t//     is restricted to a single line.\"\n\t//\n\tif simple_key.mark.line < parser.mark.line || simple_key.mark.index+1024 < parser.mark.index {\n\t\t// Check if the potential simple key to be removed is required.\n\t\tif simple_key.required {\n\t\t\treturn false, yaml_parser_set_scanner_error(parser,\n\t\t\t\t\"while scanning a simple key\", simple_key.mark,\n\t\t\t\t\"could not find expected ':'\")\n\t\t}\n\t\tsimple_key.possible = false\n\t\treturn false, true\n\t}\n\treturn true, true\n}\n\n// Check if a simple key may start at the current position and add it if\n// needed.\nfunc yaml_parser_save_simple_key(parser *yaml_parser_t) bool {\n\t// A simple key is required at the current position if the scanner is in\n\t// the block context and the current column coincides with the indentation\n\t// level.\n\n\trequired := parser.flow_level == 0 && parser.indent == parser.mark.column\n\n\t//\n\t// If the current position may start a simple key, save it.\n\t//\n\tif parser.simple_key_allowed {\n\t\tsimple_key := yaml_simple_key_t{\n\t\t\tpossible:     true,\n\t\t\trequired:     required,\n\t\t\ttoken_number: parser.tokens_parsed + (len(parser.tokens) - parser.tokens_head),\n\t\t\tmark:         parser.mark,\n\t\t}\n\n\t\tif !yaml_parser_remove_simple_key(parser) {\n\t\t\treturn false\n\t\t}\n\t\tparser.simple_keys[len(parser.simple_keys)-1] = simple_key\n\t\tparser.simple_keys_by_tok[simple_key.token_number] = len(parser.simple_keys) - 1\n\t}\n\treturn true\n}\n\n// Remove a potential simple key at the current flow level.\nfunc yaml_parser_remove_simple_key(parser *yaml_parser_t) bool {\n\ti := len(parser.simple_keys) - 1\n\tif parser.simple_keys[i].possible {\n\t\t// If the key is required, it is an error.\n\t\tif parser.simple_keys[i].required {\n\t\t\treturn yaml_parser_set_scanner_error(parser,\n\t\t\t\t\"while scanning a simple key\", parser.simple_keys[i].mark,\n\t\t\t\t\"could not find expected ':'\")\n\t\t}\n\t\t// Remove the key from the stack.\n\t\tparser.simple_keys[i].possible = false\n\t\tdelete(parser.simple_keys_by_tok, parser.simple_keys[i].token_number)\n\t}\n\treturn true\n}\n\n// max_flow_level limits the flow_level\nconst max_flow_level = 10000\n\n// Increase the flow level and resize the simple key list if needed.\nfunc yaml_parser_increase_flow_level(parser *yaml_parser_t) bool {\n\t// Reset the simple key on the next level.\n\tparser.simple_keys = append(parser.simple_keys, yaml_simple_key_t{\n\t\tpossible:     false,\n\t\trequired:     false,\n\t\ttoken_number: parser.tokens_parsed + (len(parser.tokens) - parser.tokens_head),\n\t\tmark:         parser.mark,\n\t})\n\n\t// Increase the flow level.\n\tparser.flow_level++\n\tif parser.flow_level > max_flow_level {\n\t\treturn yaml_parser_set_scanner_error(parser,\n\t\t\t\"while increasing flow level\", parser.simple_keys[len(parser.simple_keys)-1].mark,\n\t\t\tfmt.Sprintf(\"exceeded max depth of %d\", max_flow_level))\n\t}\n\treturn true\n}\n\n// Decrease the flow level.\nfunc yaml_parser_decrease_flow_level(parser *yaml_parser_t) bool {\n\tif parser.flow_level > 0 {\n\t\tparser.flow_level--\n\t\tlast := len(parser.simple_keys) - 1\n\t\tdelete(parser.simple_keys_by_tok, parser.simple_keys[last].token_number)\n\t\tparser.simple_keys = parser.simple_keys[:last]\n\t}\n\treturn true\n}\n\n// max_indents limits the indents stack size\nconst max_indents = 10000\n\n// Push the current indentation level to the stack and set the new level\n// the current column is greater than the indentation level.  In this case,\n// append or insert the specified token into the token queue.\nfunc yaml_parser_roll_indent(parser *yaml_parser_t, column, number int, typ yaml_token_type_t, mark yaml_mark_t) bool {\n\t// In the flow context, do nothing.\n\tif parser.flow_level > 0 {\n\t\treturn true\n\t}\n\n\tif parser.indent < column {\n\t\t// Push the current indentation level to the stack and set the new\n\t\t// indentation level.\n\t\tparser.indents = append(parser.indents, parser.indent)\n\t\tparser.indent = column\n\t\tif len(parser.indents) > max_indents {\n\t\t\treturn yaml_parser_set_scanner_error(parser,\n\t\t\t\t\"while increasing indent level\", parser.simple_keys[len(parser.simple_keys)-1].mark,\n\t\t\t\tfmt.Sprintf(\"exceeded max depth of %d\", max_indents))\n\t\t}\n\n\t\t// Create a token and insert it into the queue.\n\t\ttoken := yaml_token_t{\n\t\t\ttyp:        typ,\n\t\t\tstart_mark: mark,\n\t\t\tend_mark:   mark,\n\t\t}\n\t\tif number > -1 {\n\t\t\tnumber -= parser.tokens_parsed\n\t\t}\n\t\tyaml_insert_token(parser, number, &token)\n\t}\n\treturn true\n}\n\n// Pop indentation levels from the indents stack until the current level\n// becomes less or equal to the column.  For each indentation level, append\n// the BLOCK-END token.\nfunc yaml_parser_unroll_indent(parser *yaml_parser_t, column int) bool {\n\t// In the flow context, do nothing.\n\tif parser.flow_level > 0 {\n\t\treturn true\n\t}\n\n\t// Loop through the indentation levels in the stack.\n\tfor parser.indent > column {\n\t\t// Create a token and append it to the queue.\n\t\ttoken := yaml_token_t{\n\t\t\ttyp:        yaml_BLOCK_END_TOKEN,\n\t\t\tstart_mark: parser.mark,\n\t\t\tend_mark:   parser.mark,\n\t\t}\n\t\tyaml_insert_token(parser, -1, &token)\n\n\t\t// Pop the indentation level.\n\t\tparser.indent = parser.indents[len(parser.indents)-1]\n\t\tparser.indents = parser.indents[:len(parser.indents)-1]\n\t}\n\treturn true\n}\n\n// Initialize the scanner and produce the STREAM-START token.\nfunc yaml_parser_fetch_stream_start(parser *yaml_parser_t) bool {\n\n\t// Set the initial indentation.\n\tparser.indent = -1\n\n\t// Initialize the simple key stack.\n\tparser.simple_keys = append(parser.simple_keys, yaml_simple_key_t{})\n\n\tparser.simple_keys_by_tok = make(map[int]int)\n\n\t// A simple key is allowed at the beginning of the stream.\n\tparser.simple_key_allowed = true\n\n\t// We have started.\n\tparser.stream_start_produced = true\n\n\t// Create the STREAM-START token and append it to the queue.\n\ttoken := yaml_token_t{\n\t\ttyp:        yaml_STREAM_START_TOKEN,\n\t\tstart_mark: parser.mark,\n\t\tend_mark:   parser.mark,\n\t\tencoding:   parser.encoding,\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the STREAM-END token and shut down the scanner.\nfunc yaml_parser_fetch_stream_end(parser *yaml_parser_t) bool {\n\n\t// Force new line.\n\tif parser.mark.column != 0 {\n\t\tparser.mark.column = 0\n\t\tparser.mark.line++\n\t}\n\n\t// Reset the indentation level.\n\tif !yaml_parser_unroll_indent(parser, -1) {\n\t\treturn false\n\t}\n\n\t// Reset simple keys.\n\tif !yaml_parser_remove_simple_key(parser) {\n\t\treturn false\n\t}\n\n\tparser.simple_key_allowed = false\n\n\t// Create the STREAM-END token and append it to the queue.\n\ttoken := yaml_token_t{\n\t\ttyp:        yaml_STREAM_END_TOKEN,\n\t\tstart_mark: parser.mark,\n\t\tend_mark:   parser.mark,\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce a VERSION-DIRECTIVE or TAG-DIRECTIVE token.\nfunc yaml_parser_fetch_directive(parser *yaml_parser_t) bool {\n\t// Reset the indentation level.\n\tif !yaml_parser_unroll_indent(parser, -1) {\n\t\treturn false\n\t}\n\n\t// Reset simple keys.\n\tif !yaml_parser_remove_simple_key(parser) {\n\t\treturn false\n\t}\n\n\tparser.simple_key_allowed = false\n\n\t// Create the YAML-DIRECTIVE or TAG-DIRECTIVE token.\n\ttoken := yaml_token_t{}\n\tif !yaml_parser_scan_directive(parser, &token) {\n\t\treturn false\n\t}\n\t// Append the token to the queue.\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the DOCUMENT-START or DOCUMENT-END token.\nfunc yaml_parser_fetch_document_indicator(parser *yaml_parser_t, typ yaml_token_type_t) bool {\n\t// Reset the indentation level.\n\tif !yaml_parser_unroll_indent(parser, -1) {\n\t\treturn false\n\t}\n\n\t// Reset simple keys.\n\tif !yaml_parser_remove_simple_key(parser) {\n\t\treturn false\n\t}\n\n\tparser.simple_key_allowed = false\n\n\t// Consume the token.\n\tstart_mark := parser.mark\n\n\tskip(parser)\n\tskip(parser)\n\tskip(parser)\n\n\tend_mark := parser.mark\n\n\t// Create the DOCUMENT-START or DOCUMENT-END token.\n\ttoken := yaml_token_t{\n\t\ttyp:        typ,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t}\n\t// Append the token to the queue.\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the FLOW-SEQUENCE-START or FLOW-MAPPING-START token.\nfunc yaml_parser_fetch_flow_collection_start(parser *yaml_parser_t, typ yaml_token_type_t) bool {\n\t// The indicators '[' and '{' may start a simple key.\n\tif !yaml_parser_save_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t// Increase the flow level.\n\tif !yaml_parser_increase_flow_level(parser) {\n\t\treturn false\n\t}\n\n\t// A simple key may follow the indicators '[' and '{'.\n\tparser.simple_key_allowed = true\n\n\t// Consume the token.\n\tstart_mark := parser.mark\n\tskip(parser)\n\tend_mark := parser.mark\n\n\t// Create the FLOW-SEQUENCE-START of FLOW-MAPPING-START token.\n\ttoken := yaml_token_t{\n\t\ttyp:        typ,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t}\n\t// Append the token to the queue.\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the FLOW-SEQUENCE-END or FLOW-MAPPING-END token.\nfunc yaml_parser_fetch_flow_collection_end(parser *yaml_parser_t, typ yaml_token_type_t) bool {\n\t// Reset any potential simple key on the current flow level.\n\tif !yaml_parser_remove_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t// Decrease the flow level.\n\tif !yaml_parser_decrease_flow_level(parser) {\n\t\treturn false\n\t}\n\n\t// No simple keys after the indicators ']' and '}'.\n\tparser.simple_key_allowed = false\n\n\t// Consume the token.\n\n\tstart_mark := parser.mark\n\tskip(parser)\n\tend_mark := parser.mark\n\n\t// Create the FLOW-SEQUENCE-END of FLOW-MAPPING-END token.\n\ttoken := yaml_token_t{\n\t\ttyp:        typ,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t}\n\t// Append the token to the queue.\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the FLOW-ENTRY token.\nfunc yaml_parser_fetch_flow_entry(parser *yaml_parser_t) bool {\n\t// Reset any potential simple keys on the current flow level.\n\tif !yaml_parser_remove_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t// Simple keys are allowed after ','.\n\tparser.simple_key_allowed = true\n\n\t// Consume the token.\n\tstart_mark := parser.mark\n\tskip(parser)\n\tend_mark := parser.mark\n\n\t// Create the FLOW-ENTRY token and append it to the queue.\n\ttoken := yaml_token_t{\n\t\ttyp:        yaml_FLOW_ENTRY_TOKEN,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the BLOCK-ENTRY token.\nfunc yaml_parser_fetch_block_entry(parser *yaml_parser_t) bool {\n\t// Check if the scanner is in the block context.\n\tif parser.flow_level == 0 {\n\t\t// Check if we are allowed to start a new entry.\n\t\tif !parser.simple_key_allowed {\n\t\t\treturn yaml_parser_set_scanner_error(parser, \"\", parser.mark,\n\t\t\t\t\"block sequence entries are not allowed in this context\")\n\t\t}\n\t\t// Add the BLOCK-SEQUENCE-START token if needed.\n\t\tif !yaml_parser_roll_indent(parser, parser.mark.column, -1, yaml_BLOCK_SEQUENCE_START_TOKEN, parser.mark) {\n\t\t\treturn false\n\t\t}\n\t} else {\n\t\t// It is an error for the '-' indicator to occur in the flow context,\n\t\t// but we let the Parser detect and report about it because the Parser\n\t\t// is able to point to the context.\n\t}\n\n\t// Reset any potential simple keys on the current flow level.\n\tif !yaml_parser_remove_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t// Simple keys are allowed after '-'.\n\tparser.simple_key_allowed = true\n\n\t// Consume the token.\n\tstart_mark := parser.mark\n\tskip(parser)\n\tend_mark := parser.mark\n\n\t// Create the BLOCK-ENTRY token and append it to the queue.\n\ttoken := yaml_token_t{\n\t\ttyp:        yaml_BLOCK_ENTRY_TOKEN,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the KEY token.\nfunc yaml_parser_fetch_key(parser *yaml_parser_t) bool {\n\n\t// In the block context, additional checks are required.\n\tif parser.flow_level == 0 {\n\t\t// Check if we are allowed to start a new key (not nessesary simple).\n\t\tif !parser.simple_key_allowed {\n\t\t\treturn yaml_parser_set_scanner_error(parser, \"\", parser.mark,\n\t\t\t\t\"mapping keys are not allowed in this context\")\n\t\t}\n\t\t// Add the BLOCK-MAPPING-START token if needed.\n\t\tif !yaml_parser_roll_indent(parser, parser.mark.column, -1, yaml_BLOCK_MAPPING_START_TOKEN, parser.mark) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Reset any potential simple keys on the current flow level.\n\tif !yaml_parser_remove_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t// Simple keys are allowed after '?' in the block context.\n\tparser.simple_key_allowed = parser.flow_level == 0\n\n\t// Consume the token.\n\tstart_mark := parser.mark\n\tskip(parser)\n\tend_mark := parser.mark\n\n\t// Create the KEY token and append it to the queue.\n\ttoken := yaml_token_t{\n\t\ttyp:        yaml_KEY_TOKEN,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the VALUE token.\nfunc yaml_parser_fetch_value(parser *yaml_parser_t) bool {\n\n\tsimple_key := &parser.simple_keys[len(parser.simple_keys)-1]\n\n\t// Have we found a simple key?\n\tif valid, ok := yaml_simple_key_is_valid(parser, simple_key); !ok {\n\t\treturn false\n\n\t} else if valid {\n\n\t\t// Create the KEY token and insert it into the queue.\n\t\ttoken := yaml_token_t{\n\t\t\ttyp:        yaml_KEY_TOKEN,\n\t\t\tstart_mark: simple_key.mark,\n\t\t\tend_mark:   simple_key.mark,\n\t\t}\n\t\tyaml_insert_token(parser, simple_key.token_number-parser.tokens_parsed, &token)\n\n\t\t// In the block context, we may need to add the BLOCK-MAPPING-START token.\n\t\tif !yaml_parser_roll_indent(parser, simple_key.mark.column,\n\t\t\tsimple_key.token_number,\n\t\t\tyaml_BLOCK_MAPPING_START_TOKEN, simple_key.mark) {\n\t\t\treturn false\n\t\t}\n\n\t\t// Remove the simple key.\n\t\tsimple_key.possible = false\n\t\tdelete(parser.simple_keys_by_tok, simple_key.token_number)\n\n\t\t// A simple key cannot follow another simple key.\n\t\tparser.simple_key_allowed = false\n\n\t} else {\n\t\t// The ':' indicator follows a complex key.\n\n\t\t// In the block context, extra checks are required.\n\t\tif parser.flow_level == 0 {\n\n\t\t\t// Check if we are allowed to start a complex value.\n\t\t\tif !parser.simple_key_allowed {\n\t\t\t\treturn yaml_parser_set_scanner_error(parser, \"\", parser.mark,\n\t\t\t\t\t\"mapping values are not allowed in this context\")\n\t\t\t}\n\n\t\t\t// Add the BLOCK-MAPPING-START token if needed.\n\t\t\tif !yaml_parser_roll_indent(parser, parser.mark.column, -1, yaml_BLOCK_MAPPING_START_TOKEN, parser.mark) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\t// Simple keys after ':' are allowed in the block context.\n\t\tparser.simple_key_allowed = parser.flow_level == 0\n\t}\n\n\t// Consume the token.\n\tstart_mark := parser.mark\n\tskip(parser)\n\tend_mark := parser.mark\n\n\t// Create the VALUE token and append it to the queue.\n\ttoken := yaml_token_t{\n\t\ttyp:        yaml_VALUE_TOKEN,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the ALIAS or ANCHOR token.\nfunc yaml_parser_fetch_anchor(parser *yaml_parser_t, typ yaml_token_type_t) bool {\n\t// An anchor or an alias could be a simple key.\n\tif !yaml_parser_save_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t// A simple key cannot follow an anchor or an alias.\n\tparser.simple_key_allowed = false\n\n\t// Create the ALIAS or ANCHOR token and append it to the queue.\n\tvar token yaml_token_t\n\tif !yaml_parser_scan_anchor(parser, &token, typ) {\n\t\treturn false\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the TAG token.\nfunc yaml_parser_fetch_tag(parser *yaml_parser_t) bool {\n\t// A tag could be a simple key.\n\tif !yaml_parser_save_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t// A simple key cannot follow a tag.\n\tparser.simple_key_allowed = false\n\n\t// Create the TAG token and append it to the queue.\n\tvar token yaml_token_t\n\tif !yaml_parser_scan_tag(parser, &token) {\n\t\treturn false\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the SCALAR(...,literal) or SCALAR(...,folded) tokens.\nfunc yaml_parser_fetch_block_scalar(parser *yaml_parser_t, literal bool) bool {\n\t// Remove any potential simple keys.\n\tif !yaml_parser_remove_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t// A simple key may follow a block scalar.\n\tparser.simple_key_allowed = true\n\n\t// Create the SCALAR token and append it to the queue.\n\tvar token yaml_token_t\n\tif !yaml_parser_scan_block_scalar(parser, &token, literal) {\n\t\treturn false\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the SCALAR(...,single-quoted) or SCALAR(...,double-quoted) tokens.\nfunc yaml_parser_fetch_flow_scalar(parser *yaml_parser_t, single bool) bool {\n\t// A plain scalar could be a simple key.\n\tif !yaml_parser_save_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t// A simple key cannot follow a flow scalar.\n\tparser.simple_key_allowed = false\n\n\t// Create the SCALAR token and append it to the queue.\n\tvar token yaml_token_t\n\tif !yaml_parser_scan_flow_scalar(parser, &token, single) {\n\t\treturn false\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the SCALAR(...,plain) token.\nfunc yaml_parser_fetch_plain_scalar(parser *yaml_parser_t) bool {\n\t// A plain scalar could be a simple key.\n\tif !yaml_parser_save_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t// A simple key cannot follow a flow scalar.\n\tparser.simple_key_allowed = false\n\n\t// Create the SCALAR token and append it to the queue.\n\tvar token yaml_token_t\n\tif !yaml_parser_scan_plain_scalar(parser, &token) {\n\t\treturn false\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Eat whitespaces and comments until the next token is found.\nfunc yaml_parser_scan_to_next_token(parser *yaml_parser_t) bool {\n\n\t// Until the next token is not found.\n\tfor {\n\t\t// Allow the BOM mark to start a line.\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t\tif parser.mark.column == 0 && is_bom(parser.buffer, parser.buffer_pos) {\n\t\t\tskip(parser)\n\t\t}\n\n\t\t// Eat whitespaces.\n\t\t// Tabs are allowed:\n\t\t//  - in the flow context\n\t\t//  - in the block context, but not at the beginning of the line or\n\t\t//  after '-', '?', or ':' (complex value).\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\n\t\tfor parser.buffer[parser.buffer_pos] == ' ' || ((parser.flow_level > 0 || !parser.simple_key_allowed) && parser.buffer[parser.buffer_pos] == '\\t') {\n\t\t\tskip(parser)\n\t\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\t// Eat a comment until a line break.\n\t\tif parser.buffer[parser.buffer_pos] == '#' {\n\t\t\tfor !is_breakz(parser.buffer, parser.buffer_pos) {\n\t\t\t\tskip(parser)\n\t\t\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// If it is a line break, eat it.\n\t\tif is_break(parser.buffer, parser.buffer_pos) {\n\t\t\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tskip_line(parser)\n\n\t\t\t// In the block context, a new line may start a simple key.\n\t\t\tif parser.flow_level == 0 {\n\t\t\t\tparser.simple_key_allowed = true\n\t\t\t}\n\t\t} else {\n\t\t\tbreak // We have found a token.\n\t\t}\n\t}\n\n\treturn true\n}\n\n// Scan a YAML-DIRECTIVE or TAG-DIRECTIVE token.\n//\n// Scope:\n//      %YAML    1.1    # a comment \\n\n//      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n//      %TAG    !yaml!  tag:yaml.org,2002:  \\n\n//      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n//\nfunc yaml_parser_scan_directive(parser *yaml_parser_t, token *yaml_token_t) bool {\n\t// Eat '%'.\n\tstart_mark := parser.mark\n\tskip(parser)\n\n\t// Scan the directive name.\n\tvar name []byte\n\tif !yaml_parser_scan_directive_name(parser, start_mark, &name) {\n\t\treturn false\n\t}\n\n\t// Is it a YAML directive?\n\tif bytes.Equal(name, []byte(\"YAML\")) {\n\t\t// Scan the VERSION directive value.\n\t\tvar major, minor int8\n\t\tif !yaml_parser_scan_version_directive_value(parser, start_mark, &major, &minor) {\n\t\t\treturn false\n\t\t}\n\t\tend_mark := parser.mark\n\n\t\t// Create a VERSION-DIRECTIVE token.\n\t\t*token = yaml_token_t{\n\t\t\ttyp:        yaml_VERSION_DIRECTIVE_TOKEN,\n\t\t\tstart_mark: start_mark,\n\t\t\tend_mark:   end_mark,\n\t\t\tmajor:      major,\n\t\t\tminor:      minor,\n\t\t}\n\n\t\t// Is it a TAG directive?\n\t} else if bytes.Equal(name, []byte(\"TAG\")) {\n\t\t// Scan the TAG directive value.\n\t\tvar handle, prefix []byte\n\t\tif !yaml_parser_scan_tag_directive_value(parser, start_mark, &handle, &prefix) {\n\t\t\treturn false\n\t\t}\n\t\tend_mark := parser.mark\n\n\t\t// Create a TAG-DIRECTIVE token.\n\t\t*token = yaml_token_t{\n\t\t\ttyp:        yaml_TAG_DIRECTIVE_TOKEN,\n\t\t\tstart_mark: start_mark,\n\t\t\tend_mark:   end_mark,\n\t\t\tvalue:      handle,\n\t\t\tprefix:     prefix,\n\t\t}\n\n\t\t// Unknown directive.\n\t} else {\n\t\tyaml_parser_set_scanner_error(parser, \"while scanning a directive\",\n\t\t\tstart_mark, \"found unknown directive name\")\n\t\treturn false\n\t}\n\n\t// Eat the rest of the line including any comments.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\n\tfor is_blank(parser.buffer, parser.buffer_pos) {\n\t\tskip(parser)\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tif parser.buffer[parser.buffer_pos] == '#' {\n\t\tfor !is_breakz(parser.buffer, parser.buffer_pos) {\n\t\t\tskip(parser)\n\t\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check if we are at the end of the line.\n\tif !is_breakz(parser.buffer, parser.buffer_pos) {\n\t\tyaml_parser_set_scanner_error(parser, \"while scanning a directive\",\n\t\t\tstart_mark, \"did not find expected comment or line break\")\n\t\treturn false\n\t}\n\n\t// Eat a line break.\n\tif is_break(parser.buffer, parser.buffer_pos) {\n\t\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\t\treturn false\n\t\t}\n\t\tskip_line(parser)\n\t}\n\n\treturn true\n}\n\n// Scan the directive name.\n//\n// Scope:\n//      %YAML   1.1     # a comment \\n\n//       ^^^^\n//      %TAG    !yaml!  tag:yaml.org,2002:  \\n\n//       ^^^\n//\nfunc yaml_parser_scan_directive_name(parser *yaml_parser_t, start_mark yaml_mark_t, name *[]byte) bool {\n\t// Consume the directive name.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\n\tvar s []byte\n\tfor is_alpha(parser.buffer, parser.buffer_pos) {\n\t\ts = read(parser, s)\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Check if the name is empty.\n\tif len(s) == 0 {\n\t\tyaml_parser_set_scanner_error(parser, \"while scanning a directive\",\n\t\t\tstart_mark, \"could not find expected directive name\")\n\t\treturn false\n\t}\n\n\t// Check for an blank character after the name.\n\tif !is_blankz(parser.buffer, parser.buffer_pos) {\n\t\tyaml_parser_set_scanner_error(parser, \"while scanning a directive\",\n\t\t\tstart_mark, \"found unexpected non-alphabetical character\")\n\t\treturn false\n\t}\n\t*name = s\n\treturn true\n}\n\n// Scan the value of VERSION-DIRECTIVE.\n//\n// Scope:\n//      %YAML   1.1     # a comment \\n\n//           ^^^^^^\nfunc yaml_parser_scan_version_directive_value(parser *yaml_parser_t, start_mark yaml_mark_t, major, minor *int8) bool {\n\t// Eat whitespaces.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\tfor is_blank(parser.buffer, parser.buffer_pos) {\n\t\tskip(parser)\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Consume the major version number.\n\tif !yaml_parser_scan_version_directive_number(parser, start_mark, major) {\n\t\treturn false\n\t}\n\n\t// Eat '.'.\n\tif parser.buffer[parser.buffer_pos] != '.' {\n\t\treturn yaml_parser_set_scanner_error(parser, \"while scanning a %YAML directive\",\n\t\t\tstart_mark, \"did not find expected digit or '.' character\")\n\t}\n\n\tskip(parser)\n\n\t// Consume the minor version number.\n\tif !yaml_parser_scan_version_directive_number(parser, start_mark, minor) {\n\t\treturn false\n\t}\n\treturn true\n}\n\nconst max_number_length = 2\n\n// Scan the version number of VERSION-DIRECTIVE.\n//\n// Scope:\n//      %YAML   1.1     # a comment \\n\n//              ^\n//      %YAML   1.1     # a comment \\n\n//                ^\nfunc yaml_parser_scan_version_directive_number(parser *yaml_parser_t, start_mark yaml_mark_t, number *int8) bool {\n\n\t// Repeat while the next character is digit.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\tvar value, length int8\n\tfor is_digit(parser.buffer, parser.buffer_pos) {\n\t\t// Check if the number is too long.\n\t\tlength++\n\t\tif length > max_number_length {\n\t\t\treturn yaml_parser_set_scanner_error(parser, \"while scanning a %YAML directive\",\n\t\t\t\tstart_mark, \"found extremely long version number\")\n\t\t}\n\t\tvalue = value*10 + int8(as_digit(parser.buffer, parser.buffer_pos))\n\t\tskip(parser)\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Check if the number was present.\n\tif length == 0 {\n\t\treturn yaml_parser_set_scanner_error(parser, \"while scanning a %YAML directive\",\n\t\t\tstart_mark, \"did not find expected version number\")\n\t}\n\t*number = value\n\treturn true\n}\n\n// Scan the value of a TAG-DIRECTIVE token.\n//\n// Scope:\n//      %TAG    !yaml!  tag:yaml.org,2002:  \\n\n//          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n//\nfunc yaml_parser_scan_tag_directive_value(parser *yaml_parser_t, start_mark yaml_mark_t, handle, prefix *[]byte) bool {\n\tvar handle_value, prefix_value []byte\n\n\t// Eat whitespaces.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\n\tfor is_blank(parser.buffer, parser.buffer_pos) {\n\t\tskip(parser)\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Scan a handle.\n\tif !yaml_parser_scan_tag_handle(parser, true, start_mark, &handle_value) {\n\t\treturn false\n\t}\n\n\t// Expect a whitespace.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\tif !is_blank(parser.buffer, parser.buffer_pos) {\n\t\tyaml_parser_set_scanner_error(parser, \"while scanning a %TAG directive\",\n\t\t\tstart_mark, \"did not find expected whitespace\")\n\t\treturn false\n\t}\n\n\t// Eat whitespaces.\n\tfor is_blank(parser.buffer, parser.buffer_pos) {\n\t\tskip(parser)\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Scan a prefix.\n\tif !yaml_parser_scan_tag_uri(parser, true, nil, start_mark, &prefix_value) {\n\t\treturn false\n\t}\n\n\t// Expect a whitespace or line break.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\tif !is_blankz(parser.buffer, parser.buffer_pos) {\n\t\tyaml_parser_set_scanner_error(parser, \"while scanning a %TAG directive\",\n\t\t\tstart_mark, \"did not find expected whitespace or line break\")\n\t\treturn false\n\t}\n\n\t*handle = handle_value\n\t*prefix = prefix_value\n\treturn true\n}\n\nfunc yaml_parser_scan_anchor(parser *yaml_parser_t, token *yaml_token_t, typ yaml_token_type_t) bool {\n\tvar s []byte\n\n\t// Eat the indicator character.\n\tstart_mark := parser.mark\n\tskip(parser)\n\n\t// Consume the value.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\n\tfor is_alpha(parser.buffer, parser.buffer_pos) {\n\t\ts = read(parser, s)\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tend_mark := parser.mark\n\n\t/*\n\t * Check if length of the anchor is greater than 0 and it is followed by\n\t * a whitespace character or one of the indicators:\n\t *\n\t *      '?', ':', ',', ']', '}', '%', '@', '`'.\n\t */\n\n\tif len(s) == 0 ||\n\t\t!(is_blankz(parser.buffer, parser.buffer_pos) || parser.buffer[parser.buffer_pos] == '?' ||\n\t\t\tparser.buffer[parser.buffer_pos] == ':' || parser.buffer[parser.buffer_pos] == ',' ||\n\t\t\tparser.buffer[parser.buffer_pos] == ']' || parser.buffer[parser.buffer_pos] == '}' ||\n\t\t\tparser.buffer[parser.buffer_pos] == '%' || parser.buffer[parser.buffer_pos] == '@' ||\n\t\t\tparser.buffer[parser.buffer_pos] == '`') {\n\t\tcontext := \"while scanning an alias\"\n\t\tif typ == yaml_ANCHOR_TOKEN {\n\t\t\tcontext = \"while scanning an anchor\"\n\t\t}\n\t\tyaml_parser_set_scanner_error(parser, context, start_mark,\n\t\t\t\"did not find expected alphabetic or numeric character\")\n\t\treturn false\n\t}\n\n\t// Create a token.\n\t*token = yaml_token_t{\n\t\ttyp:        typ,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t\tvalue:      s,\n\t}\n\n\treturn true\n}\n\n/*\n * Scan a TAG token.\n */\n\nfunc yaml_parser_scan_tag(parser *yaml_parser_t, token *yaml_token_t) bool {\n\tvar handle, suffix []byte\n\n\tstart_mark := parser.mark\n\n\t// Check if the tag is in the canonical form.\n\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\treturn false\n\t}\n\n\tif parser.buffer[parser.buffer_pos+1] == '<' {\n\t\t// Keep the handle as ''\n\n\t\t// Eat '!<'\n\t\tskip(parser)\n\t\tskip(parser)\n\n\t\t// Consume the tag value.\n\t\tif !yaml_parser_scan_tag_uri(parser, false, nil, start_mark, &suffix) {\n\t\t\treturn false\n\t\t}\n\n\t\t// Check for '>' and eat it.\n\t\tif parser.buffer[parser.buffer_pos] != '>' {\n\t\t\tyaml_parser_set_scanner_error(parser, \"while scanning a tag\",\n\t\t\t\tstart_mark, \"did not find the expected '>'\")\n\t\t\treturn false\n\t\t}\n\n\t\tskip(parser)\n\t} else {\n\t\t// The tag has either the '!suffix' or the '!handle!suffix' form.\n\n\t\t// First, try to scan a handle.\n\t\tif !yaml_parser_scan_tag_handle(parser, false, start_mark, &handle) {\n\t\t\treturn false\n\t\t}\n\n\t\t// Check if it is, indeed, handle.\n\t\tif handle[0] == '!' && len(handle) > 1 && handle[len(handle)-1] == '!' {\n\t\t\t// Scan the suffix now.\n\t\t\tif !yaml_parser_scan_tag_uri(parser, false, nil, start_mark, &suffix) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t} else {\n\t\t\t// It wasn't a handle after all.  Scan the rest of the tag.\n\t\t\tif !yaml_parser_scan_tag_uri(parser, false, handle, start_mark, &suffix) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\t// Set the handle to '!'.\n\t\t\thandle = []byte{'!'}\n\n\t\t\t// A special case: the '!' tag.  Set the handle to '' and the\n\t\t\t// suffix to '!'.\n\t\t\tif len(suffix) == 0 {\n\t\t\t\thandle, suffix = suffix, handle\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check the character which ends the tag.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\tif !is_blankz(parser.buffer, parser.buffer_pos) {\n\t\tyaml_parser_set_scanner_error(parser, \"while scanning a tag\",\n\t\t\tstart_mark, \"did not find expected whitespace or line break\")\n\t\treturn false\n\t}\n\n\tend_mark := parser.mark\n\n\t// Create a token.\n\t*token = yaml_token_t{\n\t\ttyp:        yaml_TAG_TOKEN,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t\tvalue:      handle,\n\t\tsuffix:     suffix,\n\t}\n\treturn true\n}\n\n// Scan a tag handle.\nfunc yaml_parser_scan_tag_handle(parser *yaml_parser_t, directive bool, start_mark yaml_mark_t, handle *[]byte) bool {\n\t// Check the initial '!' character.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\tif parser.buffer[parser.buffer_pos] != '!' {\n\t\tyaml_parser_set_scanner_tag_error(parser, directive,\n\t\t\tstart_mark, \"did not find expected '!'\")\n\t\treturn false\n\t}\n\n\tvar s []byte\n\n\t// Copy the '!' character.\n\ts = read(parser, s)\n\n\t// Copy all subsequent alphabetical and numerical characters.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\tfor is_alpha(parser.buffer, parser.buffer_pos) {\n\t\ts = read(parser, s)\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Check if the trailing character is '!' and copy it.\n\tif parser.buffer[parser.buffer_pos] == '!' {\n\t\ts = read(parser, s)\n\t} else {\n\t\t// It's either the '!' tag or not really a tag handle.  If it's a %TAG\n\t\t// directive, it's an error.  If it's a tag token, it must be a part of URI.\n\t\tif directive && string(s) != \"!\" {\n\t\t\tyaml_parser_set_scanner_tag_error(parser, directive,\n\t\t\t\tstart_mark, \"did not find expected '!'\")\n\t\t\treturn false\n\t\t}\n\t}\n\n\t*handle = s\n\treturn true\n}\n\n// Scan a tag.\nfunc yaml_parser_scan_tag_uri(parser *yaml_parser_t, directive bool, head []byte, start_mark yaml_mark_t, uri *[]byte) bool {\n\t//size_t length = head ? strlen((char *)head) : 0\n\tvar s []byte\n\thasTag := len(head) > 0\n\n\t// Copy the head if needed.\n\t//\n\t// Note that we don't copy the leading '!' character.\n\tif len(head) > 1 {\n\t\ts = append(s, head[1:]...)\n\t}\n\n\t// Scan the tag.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\n\t// The set of characters that may appear in URI is as follows:\n\t//\n\t//      '0'-'9', 'A'-'Z', 'a'-'z', '_', '-', ';', '/', '?', ':', '@', '&',\n\t//      '=', '+', '$', ',', '.', '!', '~', '*', '\\'', '(', ')', '[', ']',\n\t//      '%'.\n\t// [Go] Convert this into more reasonable logic.\n\tfor is_alpha(parser.buffer, parser.buffer_pos) || parser.buffer[parser.buffer_pos] == ';' ||\n\t\tparser.buffer[parser.buffer_pos] == '/' || parser.buffer[parser.buffer_pos] == '?' ||\n\t\tparser.buffer[parser.buffer_pos] == ':' || parser.buffer[parser.buffer_pos] == '@' ||\n\t\tparser.buffer[parser.buffer_pos] == '&' || parser.buffer[parser.buffer_pos] == '=' ||\n\t\tparser.buffer[parser.buffer_pos] == '+' || parser.buffer[parser.buffer_pos] == '$' ||\n\t\tparser.buffer[parser.buffer_pos] == ',' || parser.buffer[parser.buffer_pos] == '.' ||\n\t\tparser.buffer[parser.buffer_pos] == '!' || parser.buffer[parser.buffer_pos] == '~' ||\n\t\tparser.buffer[parser.buffer_pos] == '*' || parser.buffer[parser.buffer_pos] == '\\'' ||\n\t\tparser.buffer[parser.buffer_pos] == '(' || parser.buffer[parser.buffer_pos] == ')' ||\n\t\tparser.buffer[parser.buffer_pos] == '[' || parser.buffer[parser.buffer_pos] == ']' ||\n\t\tparser.buffer[parser.buffer_pos] == '%' {\n\t\t// Check if it is a URI-escape sequence.\n\t\tif parser.buffer[parser.buffer_pos] == '%' {\n\t\t\tif !yaml_parser_scan_uri_escapes(parser, directive, start_mark, &s) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t} else {\n\t\t\ts = read(parser, s)\n\t\t}\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t\thasTag = true\n\t}\n\n\tif !hasTag {\n\t\tyaml_parser_set_scanner_tag_error(parser, directive,\n\t\t\tstart_mark, \"did not find expected tag URI\")\n\t\treturn false\n\t}\n\t*uri = s\n\treturn true\n}\n\n// Decode an URI-escape sequence corresponding to a single UTF-8 character.\nfunc yaml_parser_scan_uri_escapes(parser *yaml_parser_t, directive bool, start_mark yaml_mark_t, s *[]byte) bool {\n\n\t// Decode the required number of characters.\n\tw := 1024\n\tfor w > 0 {\n\t\t// Check for a URI-escaped octet.\n\t\tif parser.unread < 3 && !yaml_parser_update_buffer(parser, 3) {\n\t\t\treturn false\n\t\t}\n\n\t\tif !(parser.buffer[parser.buffer_pos] == '%' &&\n\t\t\tis_hex(parser.buffer, parser.buffer_pos+1) &&\n\t\t\tis_hex(parser.buffer, parser.buffer_pos+2)) {\n\t\t\treturn yaml_parser_set_scanner_tag_error(parser, directive,\n\t\t\t\tstart_mark, \"did not find URI escaped octet\")\n\t\t}\n\n\t\t// Get the octet.\n\t\toctet := byte((as_hex(parser.buffer, parser.buffer_pos+1) << 4) + as_hex(parser.buffer, parser.buffer_pos+2))\n\n\t\t// If it is the leading octet, determine the length of the UTF-8 sequence.\n\t\tif w == 1024 {\n\t\t\tw = width(octet)\n\t\t\tif w == 0 {\n\t\t\t\treturn yaml_parser_set_scanner_tag_error(parser, directive,\n\t\t\t\t\tstart_mark, \"found an incorrect leading UTF-8 octet\")\n\t\t\t}\n\t\t} else {\n\t\t\t// Check if the trailing octet is correct.\n\t\t\tif octet&0xC0 != 0x80 {\n\t\t\t\treturn yaml_parser_set_scanner_tag_error(parser, directive,\n\t\t\t\t\tstart_mark, \"found an incorrect trailing UTF-8 octet\")\n\t\t\t}\n\t\t}\n\n\t\t// Copy the octet and move the pointers.\n\t\t*s = append(*s, octet)\n\t\tskip(parser)\n\t\tskip(parser)\n\t\tskip(parser)\n\t\tw--\n\t}\n\treturn true\n}\n\n// Scan a block scalar.\nfunc yaml_parser_scan_block_scalar(parser *yaml_parser_t, token *yaml_token_t, literal bool) bool {\n\t// Eat the indicator '|' or '>'.\n\tstart_mark := parser.mark\n\tskip(parser)\n\n\t// Scan the additional block scalar indicators.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\n\t// Check for a chomping indicator.\n\tvar chomping, increment int\n\tif parser.buffer[parser.buffer_pos] == '+' || parser.buffer[parser.buffer_pos] == '-' {\n\t\t// Set the chomping method and eat the indicator.\n\t\tif parser.buffer[parser.buffer_pos] == '+' {\n\t\t\tchomping = +1\n\t\t} else {\n\t\t\tchomping = -1\n\t\t}\n\t\tskip(parser)\n\n\t\t// Check for an indentation indicator.\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t\tif is_digit(parser.buffer, parser.buffer_pos) {\n\t\t\t// Check that the indentation is greater than 0.\n\t\t\tif parser.buffer[parser.buffer_pos] == '0' {\n\t\t\t\tyaml_parser_set_scanner_error(parser, \"while scanning a block scalar\",\n\t\t\t\t\tstart_mark, \"found an indentation indicator equal to 0\")\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\t// Get the indentation level and eat the indicator.\n\t\t\tincrement = as_digit(parser.buffer, parser.buffer_pos)\n\t\t\tskip(parser)\n\t\t}\n\n\t} else if is_digit(parser.buffer, parser.buffer_pos) {\n\t\t// Do the same as above, but in the opposite order.\n\n\t\tif parser.buffer[parser.buffer_pos] == '0' {\n\t\t\tyaml_parser_set_scanner_error(parser, \"while scanning a block scalar\",\n\t\t\t\tstart_mark, \"found an indentation indicator equal to 0\")\n\t\t\treturn false\n\t\t}\n\t\tincrement = as_digit(parser.buffer, parser.buffer_pos)\n\t\tskip(parser)\n\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t\tif parser.buffer[parser.buffer_pos] == '+' || parser.buffer[parser.buffer_pos] == '-' {\n\t\t\tif parser.buffer[parser.buffer_pos] == '+' {\n\t\t\t\tchomping = +1\n\t\t\t} else {\n\t\t\t\tchomping = -1\n\t\t\t}\n\t\t\tskip(parser)\n\t\t}\n\t}\n\n\t// Eat whitespaces and comments to the end of the line.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\tfor is_blank(parser.buffer, parser.buffer_pos) {\n\t\tskip(parser)\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t}\n\tif parser.buffer[parser.buffer_pos] == '#' {\n\t\tfor !is_breakz(parser.buffer, parser.buffer_pos) {\n\t\t\tskip(parser)\n\t\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check if we are at the end of the line.\n\tif !is_breakz(parser.buffer, parser.buffer_pos) {\n\t\tyaml_parser_set_scanner_error(parser, \"while scanning a block scalar\",\n\t\t\tstart_mark, \"did not find expected comment or line break\")\n\t\treturn false\n\t}\n\n\t// Eat a line break.\n\tif is_break(parser.buffer, parser.buffer_pos) {\n\t\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\t\treturn false\n\t\t}\n\t\tskip_line(parser)\n\t}\n\n\tend_mark := parser.mark\n\n\t// Set the indentation level if it was specified.\n\tvar indent int\n\tif increment > 0 {\n\t\tif parser.indent >= 0 {\n\t\t\tindent = parser.indent + increment\n\t\t} else {\n\t\t\tindent = increment\n\t\t}\n\t}\n\n\t// Scan the leading line breaks and determine the indentation level if needed.\n\tvar s, leading_break, trailing_breaks []byte\n\tif !yaml_parser_scan_block_scalar_breaks(parser, &indent, &trailing_breaks, start_mark, &end_mark) {\n\t\treturn false\n\t}\n\n\t// Scan the block scalar content.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\tvar leading_blank, trailing_blank bool\n\tfor parser.mark.column == indent && !is_z(parser.buffer, parser.buffer_pos) {\n\t\t// We are at the beginning of a non-empty line.\n\n\t\t// Is it a trailing whitespace?\n\t\ttrailing_blank = is_blank(parser.buffer, parser.buffer_pos)\n\n\t\t// Check if we need to fold the leading line break.\n\t\tif !literal && !leading_blank && !trailing_blank && len(leading_break) > 0 && leading_break[0] == '\\n' {\n\t\t\t// Do we need to join the lines by space?\n\t\t\tif len(trailing_breaks) == 0 {\n\t\t\t\ts = append(s, ' ')\n\t\t\t}\n\t\t} else {\n\t\t\ts = append(s, leading_break...)\n\t\t}\n\t\tleading_break = leading_break[:0]\n\n\t\t// Append the remaining line breaks.\n\t\ts = append(s, trailing_breaks...)\n\t\ttrailing_breaks = trailing_breaks[:0]\n\n\t\t// Is it a leading whitespace?\n\t\tleading_blank = is_blank(parser.buffer, parser.buffer_pos)\n\n\t\t// Consume the current line.\n\t\tfor !is_breakz(parser.buffer, parser.buffer_pos) {\n\t\t\ts = read(parser, s)\n\t\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\t// Consume the line break.\n\t\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\t\treturn false\n\t\t}\n\n\t\tleading_break = read_line(parser, leading_break)\n\n\t\t// Eat the following indentation spaces and line breaks.\n\t\tif !yaml_parser_scan_block_scalar_breaks(parser, &indent, &trailing_breaks, start_mark, &end_mark) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Chomp the tail.\n\tif chomping != -1 {\n\t\ts = append(s, leading_break...)\n\t}\n\tif chomping == 1 {\n\t\ts = append(s, trailing_breaks...)\n\t}\n\n\t// Create a token.\n\t*token = yaml_token_t{\n\t\ttyp:        yaml_SCALAR_TOKEN,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t\tvalue:      s,\n\t\tstyle:      yaml_LITERAL_SCALAR_STYLE,\n\t}\n\tif !literal {\n\t\ttoken.style = yaml_FOLDED_SCALAR_STYLE\n\t}\n\treturn true\n}\n\n// Scan indentation spaces and line breaks for a block scalar.  Determine the\n// indentation level if needed.\nfunc yaml_parser_scan_block_scalar_breaks(parser *yaml_parser_t, indent *int, breaks *[]byte, start_mark yaml_mark_t, end_mark *yaml_mark_t) bool {\n\t*end_mark = parser.mark\n\n\t// Eat the indentation spaces and line breaks.\n\tmax_indent := 0\n\tfor {\n\t\t// Eat the indentation spaces.\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t\tfor (*indent == 0 || parser.mark.column < *indent) && is_space(parser.buffer, parser.buffer_pos) {\n\t\t\tskip(parser)\n\t\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif parser.mark.column > max_indent {\n\t\t\tmax_indent = parser.mark.column\n\t\t}\n\n\t\t// Check for a tab character messing the indentation.\n\t\tif (*indent == 0 || parser.mark.column < *indent) && is_tab(parser.buffer, parser.buffer_pos) {\n\t\t\treturn yaml_parser_set_scanner_error(parser, \"while scanning a block scalar\",\n\t\t\t\tstart_mark, \"found a tab character where an indentation space is expected\")\n\t\t}\n\n\t\t// Have we found a non-empty line?\n\t\tif !is_break(parser.buffer, parser.buffer_pos) {\n\t\t\tbreak\n\t\t}\n\n\t\t// Consume the line break.\n\t\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\t\treturn false\n\t\t}\n\t\t// [Go] Should really be returning breaks instead.\n\t\t*breaks = read_line(parser, *breaks)\n\t\t*end_mark = parser.mark\n\t}\n\n\t// Determine the indentation level if needed.\n\tif *indent == 0 {\n\t\t*indent = max_indent\n\t\tif *indent < parser.indent+1 {\n\t\t\t*indent = parser.indent + 1\n\t\t}\n\t\tif *indent < 1 {\n\t\t\t*indent = 1\n\t\t}\n\t}\n\treturn true\n}\n\n// Scan a quoted scalar.\nfunc yaml_parser_scan_flow_scalar(parser *yaml_parser_t, token *yaml_token_t, single bool) bool {\n\t// Eat the left quote.\n\tstart_mark := parser.mark\n\tskip(parser)\n\n\t// Consume the content of the quoted scalar.\n\tvar s, leading_break, trailing_breaks, whitespaces []byte\n\tfor {\n\t\t// Check that there are no document indicators at the beginning of the line.\n\t\tif parser.unread < 4 && !yaml_parser_update_buffer(parser, 4) {\n\t\t\treturn false\n\t\t}\n\n\t\tif parser.mark.column == 0 &&\n\t\t\t((parser.buffer[parser.buffer_pos+0] == '-' &&\n\t\t\t\tparser.buffer[parser.buffer_pos+1] == '-' &&\n\t\t\t\tparser.buffer[parser.buffer_pos+2] == '-') ||\n\t\t\t\t(parser.buffer[parser.buffer_pos+0] == '.' &&\n\t\t\t\t\tparser.buffer[parser.buffer_pos+1] == '.' &&\n\t\t\t\t\tparser.buffer[parser.buffer_pos+2] == '.')) &&\n\t\t\tis_blankz(parser.buffer, parser.buffer_pos+3) {\n\t\t\tyaml_parser_set_scanner_error(parser, \"while scanning a quoted scalar\",\n\t\t\t\tstart_mark, \"found unexpected document indicator\")\n\t\t\treturn false\n\t\t}\n\n\t\t// Check for EOF.\n\t\tif is_z(parser.buffer, parser.buffer_pos) {\n\t\t\tyaml_parser_set_scanner_error(parser, \"while scanning a quoted scalar\",\n\t\t\t\tstart_mark, \"found unexpected end of stream\")\n\t\t\treturn false\n\t\t}\n\n\t\t// Consume non-blank characters.\n\t\tleading_blanks := false\n\t\tfor !is_blankz(parser.buffer, parser.buffer_pos) {\n\t\t\tif single && parser.buffer[parser.buffer_pos] == '\\'' && parser.buffer[parser.buffer_pos+1] == '\\'' {\n\t\t\t\t// Is is an escaped single quote.\n\t\t\t\ts = append(s, '\\'')\n\t\t\t\tskip(parser)\n\t\t\t\tskip(parser)\n\n\t\t\t} else if single && parser.buffer[parser.buffer_pos] == '\\'' {\n\t\t\t\t// It is a right single quote.\n\t\t\t\tbreak\n\t\t\t} else if !single && parser.buffer[parser.buffer_pos] == '\"' {\n\t\t\t\t// It is a right double quote.\n\t\t\t\tbreak\n\n\t\t\t} else if !single && parser.buffer[parser.buffer_pos] == '\\\\' && is_break(parser.buffer, parser.buffer_pos+1) {\n\t\t\t\t// It is an escaped line break.\n\t\t\t\tif parser.unread < 3 && !yaml_parser_update_buffer(parser, 3) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tskip(parser)\n\t\t\t\tskip_line(parser)\n\t\t\t\tleading_blanks = true\n\t\t\t\tbreak\n\n\t\t\t} else if !single && parser.buffer[parser.buffer_pos] == '\\\\' {\n\t\t\t\t// It is an escape sequence.\n\t\t\t\tcode_length := 0\n\n\t\t\t\t// Check the escape character.\n\t\t\t\tswitch parser.buffer[parser.buffer_pos+1] {\n\t\t\t\tcase '0':\n\t\t\t\t\ts = append(s, 0)\n\t\t\t\tcase 'a':\n\t\t\t\t\ts = append(s, '\\x07')\n\t\t\t\tcase 'b':\n\t\t\t\t\ts = append(s, '\\x08')\n\t\t\t\tcase 't', '\\t':\n\t\t\t\t\ts = append(s, '\\x09')\n\t\t\t\tcase 'n':\n\t\t\t\t\ts = append(s, '\\x0A')\n\t\t\t\tcase 'v':\n\t\t\t\t\ts = append(s, '\\x0B')\n\t\t\t\tcase 'f':\n\t\t\t\t\ts = append(s, '\\x0C')\n\t\t\t\tcase 'r':\n\t\t\t\t\ts = append(s, '\\x0D')\n\t\t\t\tcase 'e':\n\t\t\t\t\ts = append(s, '\\x1B')\n\t\t\t\tcase ' ':\n\t\t\t\t\ts = append(s, '\\x20')\n\t\t\t\tcase '\"':\n\t\t\t\t\ts = append(s, '\"')\n\t\t\t\tcase '\\'':\n\t\t\t\t\ts = append(s, '\\'')\n\t\t\t\tcase '\\\\':\n\t\t\t\t\ts = append(s, '\\\\')\n\t\t\t\tcase 'N': // NEL (#x85)\n\t\t\t\t\ts = append(s, '\\xC2')\n\t\t\t\t\ts = append(s, '\\x85')\n\t\t\t\tcase '_': // #xA0\n\t\t\t\t\ts = append(s, '\\xC2')\n\t\t\t\t\ts = append(s, '\\xA0')\n\t\t\t\tcase 'L': // LS (#x2028)\n\t\t\t\t\ts = append(s, '\\xE2')\n\t\t\t\t\ts = append(s, '\\x80')\n\t\t\t\t\ts = append(s, '\\xA8')\n\t\t\t\tcase 'P': // PS (#x2029)\n\t\t\t\t\ts = append(s, '\\xE2')\n\t\t\t\t\ts = append(s, '\\x80')\n\t\t\t\t\ts = append(s, '\\xA9')\n\t\t\t\tcase 'x':\n\t\t\t\t\tcode_length = 2\n\t\t\t\tcase 'u':\n\t\t\t\t\tcode_length = 4\n\t\t\t\tcase 'U':\n\t\t\t\t\tcode_length = 8\n\t\t\t\tdefault:\n\t\t\t\t\tyaml_parser_set_scanner_error(parser, \"while parsing a quoted scalar\",\n\t\t\t\t\t\tstart_mark, \"found unknown escape character\")\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\t\tskip(parser)\n\t\t\t\tskip(parser)\n\n\t\t\t\t// Consume an arbitrary escape code.\n\t\t\t\tif code_length > 0 {\n\t\t\t\t\tvar value int\n\n\t\t\t\t\t// Scan the character value.\n\t\t\t\t\tif parser.unread < code_length && !yaml_parser_update_buffer(parser, code_length) {\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t\tfor k := 0; k < code_length; k++ {\n\t\t\t\t\t\tif !is_hex(parser.buffer, parser.buffer_pos+k) {\n\t\t\t\t\t\t\tyaml_parser_set_scanner_error(parser, \"while parsing a quoted scalar\",\n\t\t\t\t\t\t\t\tstart_mark, \"did not find expected hexdecimal number\")\n\t\t\t\t\t\t\treturn false\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvalue = (value << 4) + as_hex(parser.buffer, parser.buffer_pos+k)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Check the value and write the character.\n\t\t\t\t\tif (value >= 0xD800 && value <= 0xDFFF) || value > 0x10FFFF {\n\t\t\t\t\t\tyaml_parser_set_scanner_error(parser, \"while parsing a quoted scalar\",\n\t\t\t\t\t\t\tstart_mark, \"found invalid Unicode character escape code\")\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t\tif value <= 0x7F {\n\t\t\t\t\t\ts = append(s, byte(value))\n\t\t\t\t\t} else if value <= 0x7FF {\n\t\t\t\t\t\ts = append(s, byte(0xC0+(value>>6)))\n\t\t\t\t\t\ts = append(s, byte(0x80+(value&0x3F)))\n\t\t\t\t\t} else if value <= 0xFFFF {\n\t\t\t\t\t\ts = append(s, byte(0xE0+(value>>12)))\n\t\t\t\t\t\ts = append(s, byte(0x80+((value>>6)&0x3F)))\n\t\t\t\t\t\ts = append(s, byte(0x80+(value&0x3F)))\n\t\t\t\t\t} else {\n\t\t\t\t\t\ts = append(s, byte(0xF0+(value>>18)))\n\t\t\t\t\t\ts = append(s, byte(0x80+((value>>12)&0x3F)))\n\t\t\t\t\t\ts = append(s, byte(0x80+((value>>6)&0x3F)))\n\t\t\t\t\t\ts = append(s, byte(0x80+(value&0x3F)))\n\t\t\t\t\t}\n\n\t\t\t\t\t// Advance the pointer.\n\t\t\t\t\tfor k := 0; k < code_length; k++ {\n\t\t\t\t\t\tskip(parser)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// It is a non-escaped non-blank character.\n\t\t\t\ts = read(parser, s)\n\t\t\t}\n\t\t\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\n\t\t// Check if we are at the end of the scalar.\n\t\tif single {\n\t\t\tif parser.buffer[parser.buffer_pos] == '\\'' {\n\t\t\t\tbreak\n\t\t\t}\n\t\t} else {\n\t\t\tif parser.buffer[parser.buffer_pos] == '\"' {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\t\t// Consume blank characters.\n\t\tfor is_blank(parser.buffer, parser.buffer_pos) || is_break(parser.buffer, parser.buffer_pos) {\n\t\t\tif is_blank(parser.buffer, parser.buffer_pos) {\n\t\t\t\t// Consume a space or a tab character.\n\t\t\t\tif !leading_blanks {\n\t\t\t\t\twhitespaces = read(parser, whitespaces)\n\t\t\t\t} else {\n\t\t\t\t\tskip(parser)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\t\t// Check if it is a first line break.\n\t\t\t\tif !leading_blanks {\n\t\t\t\t\twhitespaces = whitespaces[:0]\n\t\t\t\t\tleading_break = read_line(parser, leading_break)\n\t\t\t\t\tleading_blanks = true\n\t\t\t\t} else {\n\t\t\t\t\ttrailing_breaks = read_line(parser, trailing_breaks)\n\t\t\t\t}\n\t\t\t}\n\t\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\t// Join the whitespaces or fold line breaks.\n\t\tif leading_blanks {\n\t\t\t// Do we need to fold line breaks?\n\t\t\tif len(leading_break) > 0 && leading_break[0] == '\\n' {\n\t\t\t\tif len(trailing_breaks) == 0 {\n\t\t\t\t\ts = append(s, ' ')\n\t\t\t\t} else {\n\t\t\t\t\ts = append(s, trailing_breaks...)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\ts = append(s, leading_break...)\n\t\t\t\ts = append(s, trailing_breaks...)\n\t\t\t}\n\t\t\ttrailing_breaks = trailing_breaks[:0]\n\t\t\tleading_break = leading_break[:0]\n\t\t} else {\n\t\t\ts = append(s, whitespaces...)\n\t\t\twhitespaces = whitespaces[:0]\n\t\t}\n\t}\n\n\t// Eat the right quote.\n\tskip(parser)\n\tend_mark := parser.mark\n\n\t// Create a token.\n\t*token = yaml_token_t{\n\t\ttyp:        yaml_SCALAR_TOKEN,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t\tvalue:      s,\n\t\tstyle:      yaml_SINGLE_QUOTED_SCALAR_STYLE,\n\t}\n\tif !single {\n\t\ttoken.style = yaml_DOUBLE_QUOTED_SCALAR_STYLE\n\t}\n\treturn true\n}\n\n// Scan a plain scalar.\nfunc yaml_parser_scan_plain_scalar(parser *yaml_parser_t, token *yaml_token_t) bool {\n\n\tvar s, leading_break, trailing_breaks, whitespaces []byte\n\tvar leading_blanks bool\n\tvar indent = parser.indent + 1\n\n\tstart_mark := parser.mark\n\tend_mark := parser.mark\n\n\t// Consume the content of the plain scalar.\n\tfor {\n\t\t// Check for a document indicator.\n\t\tif parser.unread < 4 && !yaml_parser_update_buffer(parser, 4) {\n\t\t\treturn false\n\t\t}\n\t\tif parser.mark.column == 0 &&\n\t\t\t((parser.buffer[parser.buffer_pos+0] == '-' &&\n\t\t\t\tparser.buffer[parser.buffer_pos+1] == '-' &&\n\t\t\t\tparser.buffer[parser.buffer_pos+2] == '-') ||\n\t\t\t\t(parser.buffer[parser.buffer_pos+0] == '.' &&\n\t\t\t\t\tparser.buffer[parser.buffer_pos+1] == '.' &&\n\t\t\t\t\tparser.buffer[parser.buffer_pos+2] == '.')) &&\n\t\t\tis_blankz(parser.buffer, parser.buffer_pos+3) {\n\t\t\tbreak\n\t\t}\n\n\t\t// Check for a comment.\n\t\tif parser.buffer[parser.buffer_pos] == '#' {\n\t\t\tbreak\n\t\t}\n\n\t\t// Consume non-blank characters.\n\t\tfor !is_blankz(parser.buffer, parser.buffer_pos) {\n\n\t\t\t// Check for indicators that may end a plain scalar.\n\t\t\tif (parser.buffer[parser.buffer_pos] == ':' && is_blankz(parser.buffer, parser.buffer_pos+1)) ||\n\t\t\t\t(parser.flow_level > 0 &&\n\t\t\t\t\t(parser.buffer[parser.buffer_pos] == ',' ||\n\t\t\t\t\t\tparser.buffer[parser.buffer_pos] == '?' || parser.buffer[parser.buffer_pos] == '[' ||\n\t\t\t\t\t\tparser.buffer[parser.buffer_pos] == ']' || parser.buffer[parser.buffer_pos] == '{' ||\n\t\t\t\t\t\tparser.buffer[parser.buffer_pos] == '}')) {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\t// Check if we need to join whitespaces and breaks.\n\t\t\tif leading_blanks || len(whitespaces) > 0 {\n\t\t\t\tif leading_blanks {\n\t\t\t\t\t// Do we need to fold line breaks?\n\t\t\t\t\tif leading_break[0] == '\\n' {\n\t\t\t\t\t\tif len(trailing_breaks) == 0 {\n\t\t\t\t\t\t\ts = append(s, ' ')\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ts = append(s, trailing_breaks...)\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\ts = append(s, leading_break...)\n\t\t\t\t\t\ts = append(s, trailing_breaks...)\n\t\t\t\t\t}\n\t\t\t\t\ttrailing_breaks = trailing_breaks[:0]\n\t\t\t\t\tleading_break = leading_break[:0]\n\t\t\t\t\tleading_blanks = false\n\t\t\t\t} else {\n\t\t\t\t\ts = append(s, whitespaces...)\n\t\t\t\t\twhitespaces = whitespaces[:0]\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Copy the character.\n\t\t\ts = read(parser, s)\n\n\t\t\tend_mark = parser.mark\n\t\t\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\t// Is it the end?\n\t\tif !(is_blank(parser.buffer, parser.buffer_pos) || is_break(parser.buffer, parser.buffer_pos)) {\n\t\t\tbreak\n\t\t}\n\n\t\t// Consume blank characters.\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\n\t\tfor is_blank(parser.buffer, parser.buffer_pos) || is_break(parser.buffer, parser.buffer_pos) {\n\t\t\tif is_blank(parser.buffer, parser.buffer_pos) {\n\n\t\t\t\t// Check for tab characters that abuse indentation.\n\t\t\t\tif leading_blanks && parser.mark.column < indent && is_tab(parser.buffer, parser.buffer_pos) {\n\t\t\t\t\tyaml_parser_set_scanner_error(parser, \"while scanning a plain scalar\",\n\t\t\t\t\t\tstart_mark, \"found a tab character that violates indentation\")\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\t\t// Consume a space or a tab character.\n\t\t\t\tif !leading_blanks {\n\t\t\t\t\twhitespaces = read(parser, whitespaces)\n\t\t\t\t} else {\n\t\t\t\t\tskip(parser)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\t\t// Check if it is a first line break.\n\t\t\t\tif !leading_blanks {\n\t\t\t\t\twhitespaces = whitespaces[:0]\n\t\t\t\t\tleading_break = read_line(parser, leading_break)\n\t\t\t\t\tleading_blanks = true\n\t\t\t\t} else {\n\t\t\t\t\ttrailing_breaks = read_line(parser, trailing_breaks)\n\t\t\t\t}\n\t\t\t}\n\t\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\t// Check indentation level.\n\t\tif parser.flow_level == 0 && parser.mark.column < indent {\n\t\t\tbreak\n\t\t}\n\t}\n\n\t// Create a token.\n\t*token = yaml_token_t{\n\t\ttyp:        yaml_SCALAR_TOKEN,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t\tvalue:      s,\n\t\tstyle:      yaml_PLAIN_SCALAR_STYLE,\n\t}\n\n\t// Note that we change the 'simple_key_allowed' flag.\n\tif leading_blanks {\n\t\tparser.simple_key_allowed = true\n\t}\n\treturn true\n}\n"
  },
  {
    "path": "vendor/sigs.k8s.io/yaml/goyaml.v2/sorter.go",
    "content": "package yaml\n\nimport (\n\t\"reflect\"\n\t\"unicode\"\n)\n\ntype keyList []reflect.Value\n\nfunc (l keyList) Len() int      { return len(l) }\nfunc (l keyList) Swap(i, j int) { l[i], l[j] = l[j], l[i] }\nfunc (l keyList) Less(i, j int) bool {\n\ta := l[i]\n\tb := l[j]\n\tak := a.Kind()\n\tbk := b.Kind()\n\tfor (ak == reflect.Interface || ak == reflect.Ptr) && !a.IsNil() {\n\t\ta = a.Elem()\n\t\tak = a.Kind()\n\t}\n\tfor (bk == reflect.Interface || bk == reflect.Ptr) && !b.IsNil() {\n\t\tb = b.Elem()\n\t\tbk = b.Kind()\n\t}\n\taf, aok := keyFloat(a)\n\tbf, bok := keyFloat(b)\n\tif aok && bok {\n\t\tif af != bf {\n\t\t\treturn af < bf\n\t\t}\n\t\tif ak != bk {\n\t\t\treturn ak < bk\n\t\t}\n\t\treturn numLess(a, b)\n\t}\n\tif ak != reflect.String || bk != reflect.String {\n\t\treturn ak < bk\n\t}\n\tar, br := []rune(a.String()), []rune(b.String())\n\tfor i := 0; i < len(ar) && i < len(br); i++ {\n\t\tif ar[i] == br[i] {\n\t\t\tcontinue\n\t\t}\n\t\tal := unicode.IsLetter(ar[i])\n\t\tbl := unicode.IsLetter(br[i])\n\t\tif al && bl {\n\t\t\treturn ar[i] < br[i]\n\t\t}\n\t\tif al || bl {\n\t\t\treturn bl\n\t\t}\n\t\tvar ai, bi int\n\t\tvar an, bn int64\n\t\tif ar[i] == '0' || br[i] == '0' {\n\t\t\tfor j := i-1; j >= 0 && unicode.IsDigit(ar[j]); j-- {\n\t\t\t\tif ar[j] != '0' {\n\t\t\t\t\tan = 1\n\t\t\t\t\tbn = 1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfor ai = i; ai < len(ar) && unicode.IsDigit(ar[ai]); ai++ {\n\t\t\tan = an*10 + int64(ar[ai]-'0')\n\t\t}\n\t\tfor bi = i; bi < len(br) && unicode.IsDigit(br[bi]); bi++ {\n\t\t\tbn = bn*10 + int64(br[bi]-'0')\n\t\t}\n\t\tif an != bn {\n\t\t\treturn an < bn\n\t\t}\n\t\tif ai != bi {\n\t\t\treturn ai < bi\n\t\t}\n\t\treturn ar[i] < br[i]\n\t}\n\treturn len(ar) < len(br)\n}\n\n// keyFloat returns a float value for v if it is a number/bool\n// and whether it is a number/bool or not.\nfunc keyFloat(v reflect.Value) (f float64, ok bool) {\n\tswitch v.Kind() {\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\treturn float64(v.Int()), true\n\tcase reflect.Float32, reflect.Float64:\n\t\treturn v.Float(), true\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\treturn float64(v.Uint()), true\n\tcase reflect.Bool:\n\t\tif v.Bool() {\n\t\t\treturn 1, true\n\t\t}\n\t\treturn 0, true\n\t}\n\treturn 0, false\n}\n\n// numLess returns whether a < b.\n// a and b must necessarily have the same kind.\nfunc numLess(a, b reflect.Value) bool {\n\tswitch a.Kind() {\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\treturn a.Int() < b.Int()\n\tcase reflect.Float32, reflect.Float64:\n\t\treturn a.Float() < b.Float()\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\treturn a.Uint() < b.Uint()\n\tcase reflect.Bool:\n\t\treturn !a.Bool() && b.Bool()\n\t}\n\tpanic(\"not a number\")\n}\n"
  },
  {
    "path": "vendor/sigs.k8s.io/yaml/goyaml.v2/writerc.go",
    "content": "package yaml\n\n// Set the writer error and return false.\nfunc yaml_emitter_set_writer_error(emitter *yaml_emitter_t, problem string) bool {\n\temitter.error = yaml_WRITER_ERROR\n\temitter.problem = problem\n\treturn false\n}\n\n// Flush the output buffer.\nfunc yaml_emitter_flush(emitter *yaml_emitter_t) bool {\n\tif emitter.write_handler == nil {\n\t\tpanic(\"write handler not set\")\n\t}\n\n\t// Check if the buffer is empty.\n\tif emitter.buffer_pos == 0 {\n\t\treturn true\n\t}\n\n\tif err := emitter.write_handler(emitter, emitter.buffer[:emitter.buffer_pos]); err != nil {\n\t\treturn yaml_emitter_set_writer_error(emitter, \"write error: \"+err.Error())\n\t}\n\temitter.buffer_pos = 0\n\treturn true\n}\n"
  },
  {
    "path": "vendor/sigs.k8s.io/yaml/goyaml.v2/yaml.go",
    "content": "// Package yaml implements YAML support for the Go language.\n//\n// Source code and other details for the project are available at GitHub:\n//\n//   https://github.com/go-yaml/yaml\n//\npackage yaml\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"reflect\"\n\t\"strings\"\n\t\"sync\"\n)\n\n// MapSlice encodes and decodes as a YAML map.\n// The order of keys is preserved when encoding and decoding.\ntype MapSlice []MapItem\n\n// MapItem is an item in a MapSlice.\ntype MapItem struct {\n\tKey, Value interface{}\n}\n\n// The Unmarshaler interface may be implemented by types to customize their\n// behavior when being unmarshaled from a YAML document. The UnmarshalYAML\n// method receives a function that may be called to unmarshal the original\n// YAML value into a field or variable. It is safe to call the unmarshal\n// function parameter more than once if necessary.\ntype Unmarshaler interface {\n\tUnmarshalYAML(unmarshal func(interface{}) error) error\n}\n\n// The Marshaler interface may be implemented by types to customize their\n// behavior when being marshaled into a YAML document. The returned value\n// is marshaled in place of the original value implementing Marshaler.\n//\n// If an error is returned by MarshalYAML, the marshaling procedure stops\n// and returns with the provided error.\ntype Marshaler interface {\n\tMarshalYAML() (interface{}, error)\n}\n\n// Unmarshal decodes the first document found within the in byte slice\n// and assigns decoded values into the out value.\n//\n// Maps and pointers (to a struct, string, int, etc) are accepted as out\n// values. If an internal pointer within a struct is not initialized,\n// the yaml package will initialize it if necessary for unmarshalling\n// the provided data. The out parameter must not be nil.\n//\n// The type of the decoded values should be compatible with the respective\n// values in out. If one or more values cannot be decoded due to a type\n// mismatches, decoding continues partially until the end of the YAML\n// content, and a *yaml.TypeError is returned with details for all\n// missed values.\n//\n// Struct fields are only unmarshalled if they are exported (have an\n// upper case first letter), and are unmarshalled using the field name\n// lowercased as the default key. Custom keys may be defined via the\n// \"yaml\" name in the field tag: the content preceding the first comma\n// is used as the key, and the following comma-separated options are\n// used to tweak the marshalling process (see Marshal).\n// Conflicting names result in a runtime error.\n//\n// For example:\n//\n//     type T struct {\n//         F int `yaml:\"a,omitempty\"`\n//         B int\n//     }\n//     var t T\n//     yaml.Unmarshal([]byte(\"a: 1\\nb: 2\"), &t)\n//\n// See the documentation of Marshal for the format of tags and a list of\n// supported tag options.\n//\nfunc Unmarshal(in []byte, out interface{}) (err error) {\n\treturn unmarshal(in, out, false)\n}\n\n// UnmarshalStrict is like Unmarshal except that any fields that are found\n// in the data that do not have corresponding struct members, or mapping\n// keys that are duplicates, will result in\n// an error.\nfunc UnmarshalStrict(in []byte, out interface{}) (err error) {\n\treturn unmarshal(in, out, true)\n}\n\n// A Decoder reads and decodes YAML values from an input stream.\ntype Decoder struct {\n\tstrict bool\n\tparser *parser\n}\n\n// NewDecoder returns a new decoder that reads from r.\n//\n// The decoder introduces its own buffering and may read\n// data from r beyond the YAML values requested.\nfunc NewDecoder(r io.Reader) *Decoder {\n\treturn &Decoder{\n\t\tparser: newParserFromReader(r),\n\t}\n}\n\n// SetStrict sets whether strict decoding behaviour is enabled when\n// decoding items in the data (see UnmarshalStrict). By default, decoding is not strict.\nfunc (dec *Decoder) SetStrict(strict bool) {\n\tdec.strict = strict\n}\n\n// Decode reads the next YAML-encoded value from its input\n// and stores it in the value pointed to by v.\n//\n// See the documentation for Unmarshal for details about the\n// conversion of YAML into a Go value.\nfunc (dec *Decoder) Decode(v interface{}) (err error) {\n\td := newDecoder(dec.strict)\n\tdefer handleErr(&err)\n\tnode := dec.parser.parse()\n\tif node == nil {\n\t\treturn io.EOF\n\t}\n\tout := reflect.ValueOf(v)\n\tif out.Kind() == reflect.Ptr && !out.IsNil() {\n\t\tout = out.Elem()\n\t}\n\td.unmarshal(node, out)\n\tif len(d.terrors) > 0 {\n\t\treturn &TypeError{d.terrors}\n\t}\n\treturn nil\n}\n\nfunc unmarshal(in []byte, out interface{}, strict bool) (err error) {\n\tdefer handleErr(&err)\n\td := newDecoder(strict)\n\tp := newParser(in)\n\tdefer p.destroy()\n\tnode := p.parse()\n\tif node != nil {\n\t\tv := reflect.ValueOf(out)\n\t\tif v.Kind() == reflect.Ptr && !v.IsNil() {\n\t\t\tv = v.Elem()\n\t\t}\n\t\td.unmarshal(node, v)\n\t}\n\tif len(d.terrors) > 0 {\n\t\treturn &TypeError{d.terrors}\n\t}\n\treturn nil\n}\n\n// Marshal serializes the value provided into a YAML document. The structure\n// of the generated document will reflect the structure of the value itself.\n// Maps and pointers (to struct, string, int, etc) are accepted as the in value.\n//\n// Struct fields are only marshalled if they are exported (have an upper case\n// first letter), and are marshalled using the field name lowercased as the\n// default key. Custom keys may be defined via the \"yaml\" name in the field\n// tag: the content preceding the first comma is used as the key, and the\n// following comma-separated options are used to tweak the marshalling process.\n// Conflicting names result in a runtime error.\n//\n// The field tag format accepted is:\n//\n//     `(...) yaml:\"[<key>][,<flag1>[,<flag2>]]\" (...)`\n//\n// The following flags are currently supported:\n//\n//     omitempty    Only include the field if it's not set to the zero\n//                  value for the type or to empty slices or maps.\n//                  Zero valued structs will be omitted if all their public\n//                  fields are zero, unless they implement an IsZero\n//                  method (see the IsZeroer interface type), in which\n//                  case the field will be excluded if IsZero returns true.\n//\n//     flow         Marshal using a flow style (useful for structs,\n//                  sequences and maps).\n//\n//     inline       Inline the field, which must be a struct or a map,\n//                  causing all of its fields or keys to be processed as if\n//                  they were part of the outer struct. For maps, keys must\n//                  not conflict with the yaml keys of other struct fields.\n//\n// In addition, if the key is \"-\", the field is ignored.\n//\n// For example:\n//\n//     type T struct {\n//         F int `yaml:\"a,omitempty\"`\n//         B int\n//     }\n//     yaml.Marshal(&T{B: 2}) // Returns \"b: 2\\n\"\n//     yaml.Marshal(&T{F: 1}} // Returns \"a: 1\\nb: 0\\n\"\n//\nfunc Marshal(in interface{}) (out []byte, err error) {\n\tdefer handleErr(&err)\n\te := newEncoder()\n\tdefer e.destroy()\n\te.marshalDoc(\"\", reflect.ValueOf(in))\n\te.finish()\n\tout = e.out\n\treturn\n}\n\n// An Encoder writes YAML values to an output stream.\ntype Encoder struct {\n\tencoder *encoder\n}\n\n// NewEncoder returns a new encoder that writes to w.\n// The Encoder should be closed after use to flush all data\n// to w.\nfunc NewEncoder(w io.Writer) *Encoder {\n\treturn &Encoder{\n\t\tencoder: newEncoderWithWriter(w),\n\t}\n}\n\n// Encode writes the YAML encoding of v to the stream.\n// If multiple items are encoded to the stream, the\n// second and subsequent document will be preceded\n// with a \"---\" document separator, but the first will not.\n//\n// See the documentation for Marshal for details about the conversion of Go\n// values to YAML.\nfunc (e *Encoder) Encode(v interface{}) (err error) {\n\tdefer handleErr(&err)\n\te.encoder.marshalDoc(\"\", reflect.ValueOf(v))\n\treturn nil\n}\n\n// Close closes the encoder by writing any remaining data.\n// It does not write a stream terminating string \"...\".\nfunc (e *Encoder) Close() (err error) {\n\tdefer handleErr(&err)\n\te.encoder.finish()\n\treturn nil\n}\n\nfunc handleErr(err *error) {\n\tif v := recover(); v != nil {\n\t\tif e, ok := v.(yamlError); ok {\n\t\t\t*err = e.err\n\t\t} else {\n\t\t\tpanic(v)\n\t\t}\n\t}\n}\n\ntype yamlError struct {\n\terr error\n}\n\nfunc fail(err error) {\n\tpanic(yamlError{err})\n}\n\nfunc failf(format string, args ...interface{}) {\n\tpanic(yamlError{fmt.Errorf(\"yaml: \"+format, args...)})\n}\n\n// A TypeError is returned by Unmarshal when one or more fields in\n// the YAML document cannot be properly decoded into the requested\n// types. When this error is returned, the value is still\n// unmarshaled partially.\ntype TypeError struct {\n\tErrors []string\n}\n\nfunc (e *TypeError) Error() string {\n\treturn fmt.Sprintf(\"yaml: unmarshal errors:\\n  %s\", strings.Join(e.Errors, \"\\n  \"))\n}\n\n// --------------------------------------------------------------------------\n// Maintain a mapping of keys to structure field indexes\n\n// The code in this section was copied from mgo/bson.\n\n// structInfo holds details for the serialization of fields of\n// a given struct.\ntype structInfo struct {\n\tFieldsMap  map[string]fieldInfo\n\tFieldsList []fieldInfo\n\n\t// InlineMap is the number of the field in the struct that\n\t// contains an ,inline map, or -1 if there's none.\n\tInlineMap int\n}\n\ntype fieldInfo struct {\n\tKey       string\n\tNum       int\n\tOmitEmpty bool\n\tFlow      bool\n\t// Id holds the unique field identifier, so we can cheaply\n\t// check for field duplicates without maintaining an extra map.\n\tId int\n\n\t// Inline holds the field index if the field is part of an inlined struct.\n\tInline []int\n}\n\nvar structMap = make(map[reflect.Type]*structInfo)\nvar fieldMapMutex sync.RWMutex\n\nfunc getStructInfo(st reflect.Type) (*structInfo, error) {\n\tfieldMapMutex.RLock()\n\tsinfo, found := structMap[st]\n\tfieldMapMutex.RUnlock()\n\tif found {\n\t\treturn sinfo, nil\n\t}\n\n\tn := st.NumField()\n\tfieldsMap := make(map[string]fieldInfo)\n\tfieldsList := make([]fieldInfo, 0, n)\n\tinlineMap := -1\n\tfor i := 0; i != n; i++ {\n\t\tfield := st.Field(i)\n\t\tif field.PkgPath != \"\" && !field.Anonymous {\n\t\t\tcontinue // Private field\n\t\t}\n\n\t\tinfo := fieldInfo{Num: i}\n\n\t\ttag := field.Tag.Get(\"yaml\")\n\t\tif tag == \"\" && strings.Index(string(field.Tag), \":\") < 0 {\n\t\t\ttag = string(field.Tag)\n\t\t}\n\t\tif tag == \"-\" {\n\t\t\tcontinue\n\t\t}\n\n\t\tinline := false\n\t\tfields := strings.Split(tag, \",\")\n\t\tif len(fields) > 1 {\n\t\t\tfor _, flag := range fields[1:] {\n\t\t\t\tswitch flag {\n\t\t\t\tcase \"omitempty\":\n\t\t\t\t\tinfo.OmitEmpty = true\n\t\t\t\tcase \"flow\":\n\t\t\t\t\tinfo.Flow = true\n\t\t\t\tcase \"inline\":\n\t\t\t\t\tinline = true\n\t\t\t\tdefault:\n\t\t\t\t\treturn nil, errors.New(fmt.Sprintf(\"Unsupported flag %q in tag %q of type %s\", flag, tag, st))\n\t\t\t\t}\n\t\t\t}\n\t\t\ttag = fields[0]\n\t\t}\n\n\t\tif inline {\n\t\t\tswitch field.Type.Kind() {\n\t\t\tcase reflect.Map:\n\t\t\t\tif inlineMap >= 0 {\n\t\t\t\t\treturn nil, errors.New(\"Multiple ,inline maps in struct \" + st.String())\n\t\t\t\t}\n\t\t\t\tif field.Type.Key() != reflect.TypeOf(\"\") {\n\t\t\t\t\treturn nil, errors.New(\"Option ,inline needs a map with string keys in struct \" + st.String())\n\t\t\t\t}\n\t\t\t\tinlineMap = info.Num\n\t\t\tcase reflect.Struct:\n\t\t\t\tsinfo, err := getStructInfo(field.Type)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\tfor _, finfo := range sinfo.FieldsList {\n\t\t\t\t\tif _, found := fieldsMap[finfo.Key]; found {\n\t\t\t\t\t\tmsg := \"Duplicated key '\" + finfo.Key + \"' in struct \" + st.String()\n\t\t\t\t\t\treturn nil, errors.New(msg)\n\t\t\t\t\t}\n\t\t\t\t\tif finfo.Inline == nil {\n\t\t\t\t\t\tfinfo.Inline = []int{i, finfo.Num}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfinfo.Inline = append([]int{i}, finfo.Inline...)\n\t\t\t\t\t}\n\t\t\t\t\tfinfo.Id = len(fieldsList)\n\t\t\t\t\tfieldsMap[finfo.Key] = finfo\n\t\t\t\t\tfieldsList = append(fieldsList, finfo)\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\t//return nil, errors.New(\"Option ,inline needs a struct value or map field\")\n\t\t\t\treturn nil, errors.New(\"Option ,inline needs a struct value field\")\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\tif tag != \"\" {\n\t\t\tinfo.Key = tag\n\t\t} else {\n\t\t\tinfo.Key = strings.ToLower(field.Name)\n\t\t}\n\n\t\tif _, found = fieldsMap[info.Key]; found {\n\t\t\tmsg := \"Duplicated key '\" + info.Key + \"' in struct \" + st.String()\n\t\t\treturn nil, errors.New(msg)\n\t\t}\n\n\t\tinfo.Id = len(fieldsList)\n\t\tfieldsList = append(fieldsList, info)\n\t\tfieldsMap[info.Key] = info\n\t}\n\n\tsinfo = &structInfo{\n\t\tFieldsMap:  fieldsMap,\n\t\tFieldsList: fieldsList,\n\t\tInlineMap:  inlineMap,\n\t}\n\n\tfieldMapMutex.Lock()\n\tstructMap[st] = sinfo\n\tfieldMapMutex.Unlock()\n\treturn sinfo, nil\n}\n\n// IsZeroer is used to check whether an object is zero to\n// determine whether it should be omitted when marshaling\n// with the omitempty flag. One notable implementation\n// is time.Time.\ntype IsZeroer interface {\n\tIsZero() bool\n}\n\nfunc isZero(v reflect.Value) bool {\n\tkind := v.Kind()\n\tif z, ok := v.Interface().(IsZeroer); ok {\n\t\tif (kind == reflect.Ptr || kind == reflect.Interface) && v.IsNil() {\n\t\t\treturn true\n\t\t}\n\t\treturn z.IsZero()\n\t}\n\tswitch kind {\n\tcase reflect.String:\n\t\treturn len(v.String()) == 0\n\tcase reflect.Interface, reflect.Ptr:\n\t\treturn v.IsNil()\n\tcase reflect.Slice:\n\t\treturn v.Len() == 0\n\tcase reflect.Map:\n\t\treturn v.Len() == 0\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\treturn v.Int() == 0\n\tcase reflect.Float32, reflect.Float64:\n\t\treturn v.Float() == 0\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\treturn v.Uint() == 0\n\tcase reflect.Bool:\n\t\treturn !v.Bool()\n\tcase reflect.Struct:\n\t\tvt := v.Type()\n\t\tfor i := v.NumField() - 1; i >= 0; i-- {\n\t\t\tif vt.Field(i).PkgPath != \"\" {\n\t\t\t\tcontinue // Private field\n\t\t\t}\n\t\t\tif !isZero(v.Field(i)) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\treturn true\n\t}\n\treturn false\n}\n\n// FutureLineWrap globally disables line wrapping when encoding long strings.\n// This is a temporary and thus deprecated method introduced to faciliate\n// migration towards v3, which offers more control of line lengths on\n// individual encodings, and has a default matching the behavior introduced\n// by this function.\n//\n// The default formatting of v2 was erroneously changed in v2.3.0 and reverted\n// in v2.4.0, at which point this function was introduced to help migration.\nfunc FutureLineWrap() {\n\tdisableLineWrapping = true\n}\n"
  },
  {
    "path": "vendor/sigs.k8s.io/yaml/goyaml.v2/yamlh.go",
    "content": "package yaml\n\nimport (\n\t\"fmt\"\n\t\"io\"\n)\n\n// The version directive data.\ntype yaml_version_directive_t struct {\n\tmajor int8 // The major version number.\n\tminor int8 // The minor version number.\n}\n\n// The tag directive data.\ntype yaml_tag_directive_t struct {\n\thandle []byte // The tag handle.\n\tprefix []byte // The tag prefix.\n}\n\ntype yaml_encoding_t int\n\n// The stream encoding.\nconst (\n\t// Let the parser choose the encoding.\n\tyaml_ANY_ENCODING yaml_encoding_t = iota\n\n\tyaml_UTF8_ENCODING    // The default UTF-8 encoding.\n\tyaml_UTF16LE_ENCODING // The UTF-16-LE encoding with BOM.\n\tyaml_UTF16BE_ENCODING // The UTF-16-BE encoding with BOM.\n)\n\ntype yaml_break_t int\n\n// Line break types.\nconst (\n\t// Let the parser choose the break type.\n\tyaml_ANY_BREAK yaml_break_t = iota\n\n\tyaml_CR_BREAK   // Use CR for line breaks (Mac style).\n\tyaml_LN_BREAK   // Use LN for line breaks (Unix style).\n\tyaml_CRLN_BREAK // Use CR LN for line breaks (DOS style).\n)\n\ntype yaml_error_type_t int\n\n// Many bad things could happen with the parser and emitter.\nconst (\n\t// No error is produced.\n\tyaml_NO_ERROR yaml_error_type_t = iota\n\n\tyaml_MEMORY_ERROR   // Cannot allocate or reallocate a block of memory.\n\tyaml_READER_ERROR   // Cannot read or decode the input stream.\n\tyaml_SCANNER_ERROR  // Cannot scan the input stream.\n\tyaml_PARSER_ERROR   // Cannot parse the input stream.\n\tyaml_COMPOSER_ERROR // Cannot compose a YAML document.\n\tyaml_WRITER_ERROR   // Cannot write to the output stream.\n\tyaml_EMITTER_ERROR  // Cannot emit a YAML stream.\n)\n\n// The pointer position.\ntype yaml_mark_t struct {\n\tindex  int // The position index.\n\tline   int // The position line.\n\tcolumn int // The position column.\n}\n\n// Node Styles\n\ntype yaml_style_t int8\n\ntype yaml_scalar_style_t yaml_style_t\n\n// Scalar styles.\nconst (\n\t// Let the emitter choose the style.\n\tyaml_ANY_SCALAR_STYLE yaml_scalar_style_t = iota\n\n\tyaml_PLAIN_SCALAR_STYLE         // The plain scalar style.\n\tyaml_SINGLE_QUOTED_SCALAR_STYLE // The single-quoted scalar style.\n\tyaml_DOUBLE_QUOTED_SCALAR_STYLE // The double-quoted scalar style.\n\tyaml_LITERAL_SCALAR_STYLE       // The literal scalar style.\n\tyaml_FOLDED_SCALAR_STYLE        // The folded scalar style.\n)\n\ntype yaml_sequence_style_t yaml_style_t\n\n// Sequence styles.\nconst (\n\t// Let the emitter choose the style.\n\tyaml_ANY_SEQUENCE_STYLE yaml_sequence_style_t = iota\n\n\tyaml_BLOCK_SEQUENCE_STYLE // The block sequence style.\n\tyaml_FLOW_SEQUENCE_STYLE  // The flow sequence style.\n)\n\ntype yaml_mapping_style_t yaml_style_t\n\n// Mapping styles.\nconst (\n\t// Let the emitter choose the style.\n\tyaml_ANY_MAPPING_STYLE yaml_mapping_style_t = iota\n\n\tyaml_BLOCK_MAPPING_STYLE // The block mapping style.\n\tyaml_FLOW_MAPPING_STYLE  // The flow mapping style.\n)\n\n// Tokens\n\ntype yaml_token_type_t int\n\n// Token types.\nconst (\n\t// An empty token.\n\tyaml_NO_TOKEN yaml_token_type_t = iota\n\n\tyaml_STREAM_START_TOKEN // A STREAM-START token.\n\tyaml_STREAM_END_TOKEN   // A STREAM-END token.\n\n\tyaml_VERSION_DIRECTIVE_TOKEN // A VERSION-DIRECTIVE token.\n\tyaml_TAG_DIRECTIVE_TOKEN     // A TAG-DIRECTIVE token.\n\tyaml_DOCUMENT_START_TOKEN    // A DOCUMENT-START token.\n\tyaml_DOCUMENT_END_TOKEN      // A DOCUMENT-END token.\n\n\tyaml_BLOCK_SEQUENCE_START_TOKEN // A BLOCK-SEQUENCE-START token.\n\tyaml_BLOCK_MAPPING_START_TOKEN  // A BLOCK-SEQUENCE-END token.\n\tyaml_BLOCK_END_TOKEN            // A BLOCK-END token.\n\n\tyaml_FLOW_SEQUENCE_START_TOKEN // A FLOW-SEQUENCE-START token.\n\tyaml_FLOW_SEQUENCE_END_TOKEN   // A FLOW-SEQUENCE-END token.\n\tyaml_FLOW_MAPPING_START_TOKEN  // A FLOW-MAPPING-START token.\n\tyaml_FLOW_MAPPING_END_TOKEN    // A FLOW-MAPPING-END token.\n\n\tyaml_BLOCK_ENTRY_TOKEN // A BLOCK-ENTRY token.\n\tyaml_FLOW_ENTRY_TOKEN  // A FLOW-ENTRY token.\n\tyaml_KEY_TOKEN         // A KEY token.\n\tyaml_VALUE_TOKEN       // A VALUE token.\n\n\tyaml_ALIAS_TOKEN  // An ALIAS token.\n\tyaml_ANCHOR_TOKEN // An ANCHOR token.\n\tyaml_TAG_TOKEN    // A TAG token.\n\tyaml_SCALAR_TOKEN // A SCALAR token.\n)\n\nfunc (tt yaml_token_type_t) String() string {\n\tswitch tt {\n\tcase yaml_NO_TOKEN:\n\t\treturn \"yaml_NO_TOKEN\"\n\tcase yaml_STREAM_START_TOKEN:\n\t\treturn \"yaml_STREAM_START_TOKEN\"\n\tcase yaml_STREAM_END_TOKEN:\n\t\treturn \"yaml_STREAM_END_TOKEN\"\n\tcase yaml_VERSION_DIRECTIVE_TOKEN:\n\t\treturn \"yaml_VERSION_DIRECTIVE_TOKEN\"\n\tcase yaml_TAG_DIRECTIVE_TOKEN:\n\t\treturn \"yaml_TAG_DIRECTIVE_TOKEN\"\n\tcase yaml_DOCUMENT_START_TOKEN:\n\t\treturn \"yaml_DOCUMENT_START_TOKEN\"\n\tcase yaml_DOCUMENT_END_TOKEN:\n\t\treturn \"yaml_DOCUMENT_END_TOKEN\"\n\tcase yaml_BLOCK_SEQUENCE_START_TOKEN:\n\t\treturn \"yaml_BLOCK_SEQUENCE_START_TOKEN\"\n\tcase yaml_BLOCK_MAPPING_START_TOKEN:\n\t\treturn \"yaml_BLOCK_MAPPING_START_TOKEN\"\n\tcase yaml_BLOCK_END_TOKEN:\n\t\treturn \"yaml_BLOCK_END_TOKEN\"\n\tcase yaml_FLOW_SEQUENCE_START_TOKEN:\n\t\treturn \"yaml_FLOW_SEQUENCE_START_TOKEN\"\n\tcase yaml_FLOW_SEQUENCE_END_TOKEN:\n\t\treturn \"yaml_FLOW_SEQUENCE_END_TOKEN\"\n\tcase yaml_FLOW_MAPPING_START_TOKEN:\n\t\treturn \"yaml_FLOW_MAPPING_START_TOKEN\"\n\tcase yaml_FLOW_MAPPING_END_TOKEN:\n\t\treturn \"yaml_FLOW_MAPPING_END_TOKEN\"\n\tcase yaml_BLOCK_ENTRY_TOKEN:\n\t\treturn \"yaml_BLOCK_ENTRY_TOKEN\"\n\tcase yaml_FLOW_ENTRY_TOKEN:\n\t\treturn \"yaml_FLOW_ENTRY_TOKEN\"\n\tcase yaml_KEY_TOKEN:\n\t\treturn \"yaml_KEY_TOKEN\"\n\tcase yaml_VALUE_TOKEN:\n\t\treturn \"yaml_VALUE_TOKEN\"\n\tcase yaml_ALIAS_TOKEN:\n\t\treturn \"yaml_ALIAS_TOKEN\"\n\tcase yaml_ANCHOR_TOKEN:\n\t\treturn \"yaml_ANCHOR_TOKEN\"\n\tcase yaml_TAG_TOKEN:\n\t\treturn \"yaml_TAG_TOKEN\"\n\tcase yaml_SCALAR_TOKEN:\n\t\treturn \"yaml_SCALAR_TOKEN\"\n\t}\n\treturn \"<unknown token>\"\n}\n\n// The token structure.\ntype yaml_token_t struct {\n\t// The token type.\n\ttyp yaml_token_type_t\n\n\t// The start/end of the token.\n\tstart_mark, end_mark yaml_mark_t\n\n\t// The stream encoding (for yaml_STREAM_START_TOKEN).\n\tencoding yaml_encoding_t\n\n\t// The alias/anchor/scalar value or tag/tag directive handle\n\t// (for yaml_ALIAS_TOKEN, yaml_ANCHOR_TOKEN, yaml_SCALAR_TOKEN, yaml_TAG_TOKEN, yaml_TAG_DIRECTIVE_TOKEN).\n\tvalue []byte\n\n\t// The tag suffix (for yaml_TAG_TOKEN).\n\tsuffix []byte\n\n\t// The tag directive prefix (for yaml_TAG_DIRECTIVE_TOKEN).\n\tprefix []byte\n\n\t// The scalar style (for yaml_SCALAR_TOKEN).\n\tstyle yaml_scalar_style_t\n\n\t// The version directive major/minor (for yaml_VERSION_DIRECTIVE_TOKEN).\n\tmajor, minor int8\n}\n\n// Events\n\ntype yaml_event_type_t int8\n\n// Event types.\nconst (\n\t// An empty event.\n\tyaml_NO_EVENT yaml_event_type_t = iota\n\n\tyaml_STREAM_START_EVENT   // A STREAM-START event.\n\tyaml_STREAM_END_EVENT     // A STREAM-END event.\n\tyaml_DOCUMENT_START_EVENT // A DOCUMENT-START event.\n\tyaml_DOCUMENT_END_EVENT   // A DOCUMENT-END event.\n\tyaml_ALIAS_EVENT          // An ALIAS event.\n\tyaml_SCALAR_EVENT         // A SCALAR event.\n\tyaml_SEQUENCE_START_EVENT // A SEQUENCE-START event.\n\tyaml_SEQUENCE_END_EVENT   // A SEQUENCE-END event.\n\tyaml_MAPPING_START_EVENT  // A MAPPING-START event.\n\tyaml_MAPPING_END_EVENT    // A MAPPING-END event.\n)\n\nvar eventStrings = []string{\n\tyaml_NO_EVENT:             \"none\",\n\tyaml_STREAM_START_EVENT:   \"stream start\",\n\tyaml_STREAM_END_EVENT:     \"stream end\",\n\tyaml_DOCUMENT_START_EVENT: \"document start\",\n\tyaml_DOCUMENT_END_EVENT:   \"document end\",\n\tyaml_ALIAS_EVENT:          \"alias\",\n\tyaml_SCALAR_EVENT:         \"scalar\",\n\tyaml_SEQUENCE_START_EVENT: \"sequence start\",\n\tyaml_SEQUENCE_END_EVENT:   \"sequence end\",\n\tyaml_MAPPING_START_EVENT:  \"mapping start\",\n\tyaml_MAPPING_END_EVENT:    \"mapping end\",\n}\n\nfunc (e yaml_event_type_t) String() string {\n\tif e < 0 || int(e) >= len(eventStrings) {\n\t\treturn fmt.Sprintf(\"unknown event %d\", e)\n\t}\n\treturn eventStrings[e]\n}\n\n// The event structure.\ntype yaml_event_t struct {\n\n\t// The event type.\n\ttyp yaml_event_type_t\n\n\t// The start and end of the event.\n\tstart_mark, end_mark yaml_mark_t\n\n\t// The document encoding (for yaml_STREAM_START_EVENT).\n\tencoding yaml_encoding_t\n\n\t// The version directive (for yaml_DOCUMENT_START_EVENT).\n\tversion_directive *yaml_version_directive_t\n\n\t// The list of tag directives (for yaml_DOCUMENT_START_EVENT).\n\ttag_directives []yaml_tag_directive_t\n\n\t// The anchor (for yaml_SCALAR_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT, yaml_ALIAS_EVENT).\n\tanchor []byte\n\n\t// The tag (for yaml_SCALAR_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT).\n\ttag []byte\n\n\t// The scalar value (for yaml_SCALAR_EVENT).\n\tvalue []byte\n\n\t// Is the document start/end indicator implicit, or the tag optional?\n\t// (for yaml_DOCUMENT_START_EVENT, yaml_DOCUMENT_END_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT, yaml_SCALAR_EVENT).\n\timplicit bool\n\n\t// Is the tag optional for any non-plain style? (for yaml_SCALAR_EVENT).\n\tquoted_implicit bool\n\n\t// The style (for yaml_SCALAR_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT).\n\tstyle yaml_style_t\n}\n\nfunc (e *yaml_event_t) scalar_style() yaml_scalar_style_t     { return yaml_scalar_style_t(e.style) }\nfunc (e *yaml_event_t) sequence_style() yaml_sequence_style_t { return yaml_sequence_style_t(e.style) }\nfunc (e *yaml_event_t) mapping_style() yaml_mapping_style_t   { return yaml_mapping_style_t(e.style) }\n\n// Nodes\n\nconst (\n\tyaml_NULL_TAG      = \"tag:yaml.org,2002:null\"      // The tag !!null with the only possible value: null.\n\tyaml_BOOL_TAG      = \"tag:yaml.org,2002:bool\"      // The tag !!bool with the values: true and false.\n\tyaml_STR_TAG       = \"tag:yaml.org,2002:str\"       // The tag !!str for string values.\n\tyaml_INT_TAG       = \"tag:yaml.org,2002:int\"       // The tag !!int for integer values.\n\tyaml_FLOAT_TAG     = \"tag:yaml.org,2002:float\"     // The tag !!float for float values.\n\tyaml_TIMESTAMP_TAG = \"tag:yaml.org,2002:timestamp\" // The tag !!timestamp for date and time values.\n\n\tyaml_SEQ_TAG = \"tag:yaml.org,2002:seq\" // The tag !!seq is used to denote sequences.\n\tyaml_MAP_TAG = \"tag:yaml.org,2002:map\" // The tag !!map is used to denote mapping.\n\n\t// Not in original libyaml.\n\tyaml_BINARY_TAG = \"tag:yaml.org,2002:binary\"\n\tyaml_MERGE_TAG  = \"tag:yaml.org,2002:merge\"\n\n\tyaml_DEFAULT_SCALAR_TAG   = yaml_STR_TAG // The default scalar tag is !!str.\n\tyaml_DEFAULT_SEQUENCE_TAG = yaml_SEQ_TAG // The default sequence tag is !!seq.\n\tyaml_DEFAULT_MAPPING_TAG  = yaml_MAP_TAG // The default mapping tag is !!map.\n)\n\ntype yaml_node_type_t int\n\n// Node types.\nconst (\n\t// An empty node.\n\tyaml_NO_NODE yaml_node_type_t = iota\n\n\tyaml_SCALAR_NODE   // A scalar node.\n\tyaml_SEQUENCE_NODE // A sequence node.\n\tyaml_MAPPING_NODE  // A mapping node.\n)\n\n// An element of a sequence node.\ntype yaml_node_item_t int\n\n// An element of a mapping node.\ntype yaml_node_pair_t struct {\n\tkey   int // The key of the element.\n\tvalue int // The value of the element.\n}\n\n// The node structure.\ntype yaml_node_t struct {\n\ttyp yaml_node_type_t // The node type.\n\ttag []byte           // The node tag.\n\n\t// The node data.\n\n\t// The scalar parameters (for yaml_SCALAR_NODE).\n\tscalar struct {\n\t\tvalue  []byte              // The scalar value.\n\t\tlength int                 // The length of the scalar value.\n\t\tstyle  yaml_scalar_style_t // The scalar style.\n\t}\n\n\t// The sequence parameters (for YAML_SEQUENCE_NODE).\n\tsequence struct {\n\t\titems_data []yaml_node_item_t    // The stack of sequence items.\n\t\tstyle      yaml_sequence_style_t // The sequence style.\n\t}\n\n\t// The mapping parameters (for yaml_MAPPING_NODE).\n\tmapping struct {\n\t\tpairs_data  []yaml_node_pair_t   // The stack of mapping pairs (key, value).\n\t\tpairs_start *yaml_node_pair_t    // The beginning of the stack.\n\t\tpairs_end   *yaml_node_pair_t    // The end of the stack.\n\t\tpairs_top   *yaml_node_pair_t    // The top of the stack.\n\t\tstyle       yaml_mapping_style_t // The mapping style.\n\t}\n\n\tstart_mark yaml_mark_t // The beginning of the node.\n\tend_mark   yaml_mark_t // The end of the node.\n\n}\n\n// The document structure.\ntype yaml_document_t struct {\n\n\t// The document nodes.\n\tnodes []yaml_node_t\n\n\t// The version directive.\n\tversion_directive *yaml_version_directive_t\n\n\t// The list of tag directives.\n\ttag_directives_data  []yaml_tag_directive_t\n\ttag_directives_start int // The beginning of the tag directives list.\n\ttag_directives_end   int // The end of the tag directives list.\n\n\tstart_implicit int // Is the document start indicator implicit?\n\tend_implicit   int // Is the document end indicator implicit?\n\n\t// The start/end of the document.\n\tstart_mark, end_mark yaml_mark_t\n}\n\n// The prototype of a read handler.\n//\n// The read handler is called when the parser needs to read more bytes from the\n// source. The handler should write not more than size bytes to the buffer.\n// The number of written bytes should be set to the size_read variable.\n//\n// [in,out]   data        A pointer to an application data specified by\n//                        yaml_parser_set_input().\n// [out]      buffer      The buffer to write the data from the source.\n// [in]       size        The size of the buffer.\n// [out]      size_read   The actual number of bytes read from the source.\n//\n// On success, the handler should return 1.  If the handler failed,\n// the returned value should be 0. On EOF, the handler should set the\n// size_read to 0 and return 1.\ntype yaml_read_handler_t func(parser *yaml_parser_t, buffer []byte) (n int, err error)\n\n// This structure holds information about a potential simple key.\ntype yaml_simple_key_t struct {\n\tpossible     bool        // Is a simple key possible?\n\trequired     bool        // Is a simple key required?\n\ttoken_number int         // The number of the token.\n\tmark         yaml_mark_t // The position mark.\n}\n\n// The states of the parser.\ntype yaml_parser_state_t int\n\nconst (\n\tyaml_PARSE_STREAM_START_STATE yaml_parser_state_t = iota\n\n\tyaml_PARSE_IMPLICIT_DOCUMENT_START_STATE           // Expect the beginning of an implicit document.\n\tyaml_PARSE_DOCUMENT_START_STATE                    // Expect DOCUMENT-START.\n\tyaml_PARSE_DOCUMENT_CONTENT_STATE                  // Expect the content of a document.\n\tyaml_PARSE_DOCUMENT_END_STATE                      // Expect DOCUMENT-END.\n\tyaml_PARSE_BLOCK_NODE_STATE                        // Expect a block node.\n\tyaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE // Expect a block node or indentless sequence.\n\tyaml_PARSE_FLOW_NODE_STATE                         // Expect a flow node.\n\tyaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE        // Expect the first entry of a block sequence.\n\tyaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE              // Expect an entry of a block sequence.\n\tyaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE         // Expect an entry of an indentless sequence.\n\tyaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE           // Expect the first key of a block mapping.\n\tyaml_PARSE_BLOCK_MAPPING_KEY_STATE                 // Expect a block mapping key.\n\tyaml_PARSE_BLOCK_MAPPING_VALUE_STATE               // Expect a block mapping value.\n\tyaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE         // Expect the first entry of a flow sequence.\n\tyaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE               // Expect an entry of a flow sequence.\n\tyaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE   // Expect a key of an ordered mapping.\n\tyaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE // Expect a value of an ordered mapping.\n\tyaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE   // Expect the and of an ordered mapping entry.\n\tyaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE            // Expect the first key of a flow mapping.\n\tyaml_PARSE_FLOW_MAPPING_KEY_STATE                  // Expect a key of a flow mapping.\n\tyaml_PARSE_FLOW_MAPPING_VALUE_STATE                // Expect a value of a flow mapping.\n\tyaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE          // Expect an empty value of a flow mapping.\n\tyaml_PARSE_END_STATE                               // Expect nothing.\n)\n\nfunc (ps yaml_parser_state_t) String() string {\n\tswitch ps {\n\tcase yaml_PARSE_STREAM_START_STATE:\n\t\treturn \"yaml_PARSE_STREAM_START_STATE\"\n\tcase yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE:\n\t\treturn \"yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE\"\n\tcase yaml_PARSE_DOCUMENT_START_STATE:\n\t\treturn \"yaml_PARSE_DOCUMENT_START_STATE\"\n\tcase yaml_PARSE_DOCUMENT_CONTENT_STATE:\n\t\treturn \"yaml_PARSE_DOCUMENT_CONTENT_STATE\"\n\tcase yaml_PARSE_DOCUMENT_END_STATE:\n\t\treturn \"yaml_PARSE_DOCUMENT_END_STATE\"\n\tcase yaml_PARSE_BLOCK_NODE_STATE:\n\t\treturn \"yaml_PARSE_BLOCK_NODE_STATE\"\n\tcase yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE:\n\t\treturn \"yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE\"\n\tcase yaml_PARSE_FLOW_NODE_STATE:\n\t\treturn \"yaml_PARSE_FLOW_NODE_STATE\"\n\tcase yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE:\n\t\treturn \"yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE\"\n\tcase yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE:\n\t\treturn \"yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE\"\n\tcase yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE:\n\t\treturn \"yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE\"\n\tcase yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE:\n\t\treturn \"yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE\"\n\tcase yaml_PARSE_BLOCK_MAPPING_KEY_STATE:\n\t\treturn \"yaml_PARSE_BLOCK_MAPPING_KEY_STATE\"\n\tcase yaml_PARSE_BLOCK_MAPPING_VALUE_STATE:\n\t\treturn \"yaml_PARSE_BLOCK_MAPPING_VALUE_STATE\"\n\tcase yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE:\n\t\treturn \"yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE\"\n\tcase yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE:\n\t\treturn \"yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE\"\n\tcase yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE:\n\t\treturn \"yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE\"\n\tcase yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE:\n\t\treturn \"yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE\"\n\tcase yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE:\n\t\treturn \"yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE\"\n\tcase yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE:\n\t\treturn \"yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE\"\n\tcase yaml_PARSE_FLOW_MAPPING_KEY_STATE:\n\t\treturn \"yaml_PARSE_FLOW_MAPPING_KEY_STATE\"\n\tcase yaml_PARSE_FLOW_MAPPING_VALUE_STATE:\n\t\treturn \"yaml_PARSE_FLOW_MAPPING_VALUE_STATE\"\n\tcase yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE:\n\t\treturn \"yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE\"\n\tcase yaml_PARSE_END_STATE:\n\t\treturn \"yaml_PARSE_END_STATE\"\n\t}\n\treturn \"<unknown parser state>\"\n}\n\n// This structure holds aliases data.\ntype yaml_alias_data_t struct {\n\tanchor []byte      // The anchor.\n\tindex  int         // The node id.\n\tmark   yaml_mark_t // The anchor mark.\n}\n\n// The parser structure.\n//\n// All members are internal. Manage the structure using the\n// yaml_parser_ family of functions.\ntype yaml_parser_t struct {\n\n\t// Error handling\n\n\terror yaml_error_type_t // Error type.\n\n\tproblem string // Error description.\n\n\t// The byte about which the problem occurred.\n\tproblem_offset int\n\tproblem_value  int\n\tproblem_mark   yaml_mark_t\n\n\t// The error context.\n\tcontext      string\n\tcontext_mark yaml_mark_t\n\n\t// Reader stuff\n\n\tread_handler yaml_read_handler_t // Read handler.\n\n\tinput_reader io.Reader // File input data.\n\tinput        []byte    // String input data.\n\tinput_pos    int\n\n\teof bool // EOF flag\n\n\tbuffer     []byte // The working buffer.\n\tbuffer_pos int    // The current position of the buffer.\n\n\tunread int // The number of unread characters in the buffer.\n\n\traw_buffer     []byte // The raw buffer.\n\traw_buffer_pos int    // The current position of the buffer.\n\n\tencoding yaml_encoding_t // The input encoding.\n\n\toffset int         // The offset of the current position (in bytes).\n\tmark   yaml_mark_t // The mark of the current position.\n\n\t// Scanner stuff\n\n\tstream_start_produced bool // Have we started to scan the input stream?\n\tstream_end_produced   bool // Have we reached the end of the input stream?\n\n\tflow_level int // The number of unclosed '[' and '{' indicators.\n\n\ttokens          []yaml_token_t // The tokens queue.\n\ttokens_head     int            // The head of the tokens queue.\n\ttokens_parsed   int            // The number of tokens fetched from the queue.\n\ttoken_available bool           // Does the tokens queue contain a token ready for dequeueing.\n\n\tindent  int   // The current indentation level.\n\tindents []int // The indentation levels stack.\n\n\tsimple_key_allowed bool                // May a simple key occur at the current position?\n\tsimple_keys        []yaml_simple_key_t // The stack of simple keys.\n\tsimple_keys_by_tok map[int]int         // possible simple_key indexes indexed by token_number\n\n\t// Parser stuff\n\n\tstate          yaml_parser_state_t    // The current parser state.\n\tstates         []yaml_parser_state_t  // The parser states stack.\n\tmarks          []yaml_mark_t          // The stack of marks.\n\ttag_directives []yaml_tag_directive_t // The list of TAG directives.\n\n\t// Dumper stuff\n\n\taliases []yaml_alias_data_t // The alias data.\n\n\tdocument *yaml_document_t // The currently parsed document.\n}\n\n// Emitter Definitions\n\n// The prototype of a write handler.\n//\n// The write handler is called when the emitter needs to flush the accumulated\n// characters to the output.  The handler should write @a size bytes of the\n// @a buffer to the output.\n//\n// @param[in,out]   data        A pointer to an application data specified by\n//                              yaml_emitter_set_output().\n// @param[in]       buffer      The buffer with bytes to be written.\n// @param[in]       size        The size of the buffer.\n//\n// @returns On success, the handler should return @c 1.  If the handler failed,\n// the returned value should be @c 0.\n//\ntype yaml_write_handler_t func(emitter *yaml_emitter_t, buffer []byte) error\n\ntype yaml_emitter_state_t int\n\n// The emitter states.\nconst (\n\t// Expect STREAM-START.\n\tyaml_EMIT_STREAM_START_STATE yaml_emitter_state_t = iota\n\n\tyaml_EMIT_FIRST_DOCUMENT_START_STATE       // Expect the first DOCUMENT-START or STREAM-END.\n\tyaml_EMIT_DOCUMENT_START_STATE             // Expect DOCUMENT-START or STREAM-END.\n\tyaml_EMIT_DOCUMENT_CONTENT_STATE           // Expect the content of a document.\n\tyaml_EMIT_DOCUMENT_END_STATE               // Expect DOCUMENT-END.\n\tyaml_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE   // Expect the first item of a flow sequence.\n\tyaml_EMIT_FLOW_SEQUENCE_ITEM_STATE         // Expect an item of a flow sequence.\n\tyaml_EMIT_FLOW_MAPPING_FIRST_KEY_STATE     // Expect the first key of a flow mapping.\n\tyaml_EMIT_FLOW_MAPPING_KEY_STATE           // Expect a key of a flow mapping.\n\tyaml_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE  // Expect a value for a simple key of a flow mapping.\n\tyaml_EMIT_FLOW_MAPPING_VALUE_STATE         // Expect a value of a flow mapping.\n\tyaml_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE  // Expect the first item of a block sequence.\n\tyaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE        // Expect an item of a block sequence.\n\tyaml_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE    // Expect the first key of a block mapping.\n\tyaml_EMIT_BLOCK_MAPPING_KEY_STATE          // Expect the key of a block mapping.\n\tyaml_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE // Expect a value for a simple key of a block mapping.\n\tyaml_EMIT_BLOCK_MAPPING_VALUE_STATE        // Expect a value of a block mapping.\n\tyaml_EMIT_END_STATE                        // Expect nothing.\n)\n\n// The emitter structure.\n//\n// All members are internal.  Manage the structure using the @c yaml_emitter_\n// family of functions.\ntype yaml_emitter_t struct {\n\n\t// Error handling\n\n\terror   yaml_error_type_t // Error type.\n\tproblem string            // Error description.\n\n\t// Writer stuff\n\n\twrite_handler yaml_write_handler_t // Write handler.\n\n\toutput_buffer *[]byte   // String output data.\n\toutput_writer io.Writer // File output data.\n\n\tbuffer     []byte // The working buffer.\n\tbuffer_pos int    // The current position of the buffer.\n\n\traw_buffer     []byte // The raw buffer.\n\traw_buffer_pos int    // The current position of the buffer.\n\n\tencoding yaml_encoding_t // The stream encoding.\n\n\t// Emitter stuff\n\n\tcanonical   bool         // If the output is in the canonical style?\n\tbest_indent int          // The number of indentation spaces.\n\tbest_width  int          // The preferred width of the output lines.\n\tunicode     bool         // Allow unescaped non-ASCII characters?\n\tline_break  yaml_break_t // The preferred line break.\n\n\tstate  yaml_emitter_state_t   // The current emitter state.\n\tstates []yaml_emitter_state_t // The stack of states.\n\n\tevents      []yaml_event_t // The event queue.\n\tevents_head int            // The head of the event queue.\n\n\tindents []int // The stack of indentation levels.\n\n\ttag_directives []yaml_tag_directive_t // The list of tag directives.\n\n\tindent int // The current indentation level.\n\n\tflow_level int // The current flow level.\n\n\troot_context       bool // Is it the document root context?\n\tsequence_context   bool // Is it a sequence context?\n\tmapping_context    bool // Is it a mapping context?\n\tsimple_key_context bool // Is it a simple mapping key context?\n\n\tline       int  // The current line.\n\tcolumn     int  // The current column.\n\twhitespace bool // If the last character was a whitespace?\n\tindention  bool // If the last character was an indentation character (' ', '-', '?', ':')?\n\topen_ended bool // If an explicit document end is required?\n\n\t// Anchor analysis.\n\tanchor_data struct {\n\t\tanchor []byte // The anchor value.\n\t\talias  bool   // Is it an alias?\n\t}\n\n\t// Tag analysis.\n\ttag_data struct {\n\t\thandle []byte // The tag handle.\n\t\tsuffix []byte // The tag suffix.\n\t}\n\n\t// Scalar analysis.\n\tscalar_data struct {\n\t\tvalue                 []byte              // The scalar value.\n\t\tmultiline             bool                // Does the scalar contain line breaks?\n\t\tflow_plain_allowed    bool                // Can the scalar be expessed in the flow plain style?\n\t\tblock_plain_allowed   bool                // Can the scalar be expressed in the block plain style?\n\t\tsingle_quoted_allowed bool                // Can the scalar be expressed in the single quoted style?\n\t\tblock_allowed         bool                // Can the scalar be expressed in the literal or folded styles?\n\t\tstyle                 yaml_scalar_style_t // The output style.\n\t}\n\n\t// Dumper stuff\n\n\topened bool // If the stream was already opened?\n\tclosed bool // If the stream was already closed?\n\n\t// The information associated with the document nodes.\n\tanchors *struct {\n\t\treferences int  // The number of references.\n\t\tanchor     int  // The anchor id.\n\t\tserialized bool // If the node has been emitted?\n\t}\n\n\tlast_anchor_id int // The last assigned anchor id.\n\n\tdocument *yaml_document_t // The currently emitted document.\n}\n"
  },
  {
    "path": "vendor/sigs.k8s.io/yaml/goyaml.v2/yamlprivateh.go",
    "content": "package yaml\n\nconst (\n\t// The size of the input raw buffer.\n\tinput_raw_buffer_size = 512\n\n\t// The size of the input buffer.\n\t// It should be possible to decode the whole raw buffer.\n\tinput_buffer_size = input_raw_buffer_size * 3\n\n\t// The size of the output buffer.\n\toutput_buffer_size = 128\n\n\t// The size of the output raw buffer.\n\t// It should be possible to encode the whole output buffer.\n\toutput_raw_buffer_size = (output_buffer_size*2 + 2)\n\n\t// The size of other stacks and queues.\n\tinitial_stack_size  = 16\n\tinitial_queue_size  = 16\n\tinitial_string_size = 16\n)\n\n// Check if the character at the specified position is an alphabetical\n// character, a digit, '_', or '-'.\nfunc is_alpha(b []byte, i int) bool {\n\treturn b[i] >= '0' && b[i] <= '9' || b[i] >= 'A' && b[i] <= 'Z' || b[i] >= 'a' && b[i] <= 'z' || b[i] == '_' || b[i] == '-'\n}\n\n// Check if the character at the specified position is a digit.\nfunc is_digit(b []byte, i int) bool {\n\treturn b[i] >= '0' && b[i] <= '9'\n}\n\n// Get the value of a digit.\nfunc as_digit(b []byte, i int) int {\n\treturn int(b[i]) - '0'\n}\n\n// Check if the character at the specified position is a hex-digit.\nfunc is_hex(b []byte, i int) bool {\n\treturn b[i] >= '0' && b[i] <= '9' || b[i] >= 'A' && b[i] <= 'F' || b[i] >= 'a' && b[i] <= 'f'\n}\n\n// Get the value of a hex-digit.\nfunc as_hex(b []byte, i int) int {\n\tbi := b[i]\n\tif bi >= 'A' && bi <= 'F' {\n\t\treturn int(bi) - 'A' + 10\n\t}\n\tif bi >= 'a' && bi <= 'f' {\n\t\treturn int(bi) - 'a' + 10\n\t}\n\treturn int(bi) - '0'\n}\n\n// Check if the character is ASCII.\nfunc is_ascii(b []byte, i int) bool {\n\treturn b[i] <= 0x7F\n}\n\n// Check if the character at the start of the buffer can be printed unescaped.\nfunc is_printable(b []byte, i int) bool {\n\treturn ((b[i] == 0x0A) || // . == #x0A\n\t\t(b[i] >= 0x20 && b[i] <= 0x7E) || // #x20 <= . <= #x7E\n\t\t(b[i] == 0xC2 && b[i+1] >= 0xA0) || // #0xA0 <= . <= #xD7FF\n\t\t(b[i] > 0xC2 && b[i] < 0xED) ||\n\t\t(b[i] == 0xED && b[i+1] < 0xA0) ||\n\t\t(b[i] == 0xEE) ||\n\t\t(b[i] == 0xEF && // #xE000 <= . <= #xFFFD\n\t\t\t!(b[i+1] == 0xBB && b[i+2] == 0xBF) && // && . != #xFEFF\n\t\t\t!(b[i+1] == 0xBF && (b[i+2] == 0xBE || b[i+2] == 0xBF))))\n}\n\n// Check if the character at the specified position is NUL.\nfunc is_z(b []byte, i int) bool {\n\treturn b[i] == 0x00\n}\n\n// Check if the beginning of the buffer is a BOM.\nfunc is_bom(b []byte, i int) bool {\n\treturn b[0] == 0xEF && b[1] == 0xBB && b[2] == 0xBF\n}\n\n// Check if the character at the specified position is space.\nfunc is_space(b []byte, i int) bool {\n\treturn b[i] == ' '\n}\n\n// Check if the character at the specified position is tab.\nfunc is_tab(b []byte, i int) bool {\n\treturn b[i] == '\\t'\n}\n\n// Check if the character at the specified position is blank (space or tab).\nfunc is_blank(b []byte, i int) bool {\n\t//return is_space(b, i) || is_tab(b, i)\n\treturn b[i] == ' ' || b[i] == '\\t'\n}\n\n// Check if the character at the specified position is a line break.\nfunc is_break(b []byte, i int) bool {\n\treturn (b[i] == '\\r' || // CR (#xD)\n\t\tb[i] == '\\n' || // LF (#xA)\n\t\tb[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85)\n\t\tb[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028)\n\t\tb[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9) // PS (#x2029)\n}\n\nfunc is_crlf(b []byte, i int) bool {\n\treturn b[i] == '\\r' && b[i+1] == '\\n'\n}\n\n// Check if the character is a line break or NUL.\nfunc is_breakz(b []byte, i int) bool {\n\t//return is_break(b, i) || is_z(b, i)\n\treturn (        // is_break:\n\tb[i] == '\\r' || // CR (#xD)\n\t\tb[i] == '\\n' || // LF (#xA)\n\t\tb[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85)\n\t\tb[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028)\n\t\tb[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9 || // PS (#x2029)\n\t\t// is_z:\n\t\tb[i] == 0)\n}\n\n// Check if the character is a line break, space, or NUL.\nfunc is_spacez(b []byte, i int) bool {\n\t//return is_space(b, i) || is_breakz(b, i)\n\treturn ( // is_space:\n\tb[i] == ' ' ||\n\t\t// is_breakz:\n\t\tb[i] == '\\r' || // CR (#xD)\n\t\tb[i] == '\\n' || // LF (#xA)\n\t\tb[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85)\n\t\tb[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028)\n\t\tb[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9 || // PS (#x2029)\n\t\tb[i] == 0)\n}\n\n// Check if the character is a line break, space, tab, or NUL.\nfunc is_blankz(b []byte, i int) bool {\n\t//return is_blank(b, i) || is_breakz(b, i)\n\treturn ( // is_blank:\n\tb[i] == ' ' || b[i] == '\\t' ||\n\t\t// is_breakz:\n\t\tb[i] == '\\r' || // CR (#xD)\n\t\tb[i] == '\\n' || // LF (#xA)\n\t\tb[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85)\n\t\tb[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028)\n\t\tb[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9 || // PS (#x2029)\n\t\tb[i] == 0)\n}\n\n// Determine the width of the character.\nfunc width(b byte) int {\n\t// Don't replace these by a switch without first\n\t// confirming that it is being inlined.\n\tif b&0x80 == 0x00 {\n\t\treturn 1\n\t}\n\tif b&0xE0 == 0xC0 {\n\t\treturn 2\n\t}\n\tif b&0xF0 == 0xE0 {\n\t\treturn 3\n\t}\n\tif b&0xF8 == 0xF0 {\n\t\treturn 4\n\t}\n\treturn 0\n\n}\n"
  },
  {
    "path": "vendor/sigs.k8s.io/yaml/yaml.go",
    "content": "/*\nCopyright 2021 The Kubernetes Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\npackage yaml\n\nimport (\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"reflect\"\n\t\"strconv\"\n\n\t\"sigs.k8s.io/yaml/goyaml.v2\"\n)\n\n// Marshal marshals obj into JSON using stdlib json.Marshal, and then converts JSON to YAML using JSONToYAML (see that method for more reference)\nfunc Marshal(obj interface{}) ([]byte, error) {\n\tjsonBytes, err := json.Marshal(obj)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error marshaling into JSON: %w\", err)\n\t}\n\n\treturn JSONToYAML(jsonBytes)\n}\n\n// JSONOpt is a decoding option for decoding from JSON format.\ntype JSONOpt func(*json.Decoder) *json.Decoder\n\n// Unmarshal first converts the given YAML to JSON, and then unmarshals the JSON into obj. Options for the\n// standard library json.Decoder can be optionally specified, e.g. to decode untyped numbers into json.Number instead of float64, or to disallow unknown fields (but for that purpose, see also UnmarshalStrict). obj must be a non-nil pointer.\n//\n// Important notes about the Unmarshal logic:\n//\n//   - Decoding is case-insensitive, unlike the rest of Kubernetes API machinery, as this is using the stdlib json library. This might be confusing to users.\n//   - This decodes any number (although it is an integer) into a float64 if the type of obj is unknown, e.g. *map[string]interface{}, *interface{}, or *[]interface{}. This means integers above +/- 2^53 will lose precision when round-tripping. Make a JSONOpt that calls d.UseNumber() to avoid this.\n//   - Duplicate fields, including in-case-sensitive matches, are ignored in an undefined order. Note that the YAML specification forbids duplicate fields, so this logic is more permissive than it needs to. See UnmarshalStrict for an alternative.\n//   - Unknown fields, i.e. serialized data that do not map to a field in obj, are ignored. Use d.DisallowUnknownFields() or UnmarshalStrict to override.\n//   - As per the YAML 1.1 specification, which yaml.v2 used underneath implements, literal 'yes' and 'no' strings without quotation marks will be converted to true/false implicitly.\n//   - YAML non-string keys, e.g. ints, bools and floats, are converted to strings implicitly during the YAML to JSON conversion process.\n//   - There are no compatibility guarantees for returned error values.\nfunc Unmarshal(yamlBytes []byte, obj interface{}, opts ...JSONOpt) error {\n\treturn unmarshal(yamlBytes, obj, yaml.Unmarshal, opts...)\n}\n\n// UnmarshalStrict is similar to Unmarshal (please read its documentation for reference), with the following exceptions:\n//\n//   - Duplicate fields in an object yield an error. This is according to the YAML specification.\n//   - If obj, or any of its recursive children, is a struct, presence of fields in the serialized data unknown to the struct will yield an error.\nfunc UnmarshalStrict(yamlBytes []byte, obj interface{}, opts ...JSONOpt) error {\n\treturn unmarshal(yamlBytes, obj, yaml.UnmarshalStrict, append(opts, DisallowUnknownFields)...)\n}\n\n// unmarshal unmarshals the given YAML byte stream into the given interface,\n// optionally performing the unmarshalling strictly\nfunc unmarshal(yamlBytes []byte, obj interface{}, unmarshalFn func([]byte, interface{}) error, opts ...JSONOpt) error {\n\tjsonTarget := reflect.ValueOf(obj)\n\n\tjsonBytes, err := yamlToJSONTarget(yamlBytes, &jsonTarget, unmarshalFn)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"error converting YAML to JSON: %w\", err)\n\t}\n\n\terr = jsonUnmarshal(bytes.NewReader(jsonBytes), obj, opts...)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"error unmarshaling JSON: %w\", err)\n\t}\n\n\treturn nil\n}\n\n// jsonUnmarshal unmarshals the JSON byte stream from the given reader into the\n// object, optionally applying decoder options prior to decoding.  We are not\n// using json.Unmarshal directly as we want the chance to pass in non-default\n// options.\nfunc jsonUnmarshal(reader io.Reader, obj interface{}, opts ...JSONOpt) error {\n\td := json.NewDecoder(reader)\n\tfor _, opt := range opts {\n\t\td = opt(d)\n\t}\n\tif err := d.Decode(&obj); err != nil {\n\t\treturn fmt.Errorf(\"while decoding JSON: %v\", err)\n\t}\n\treturn nil\n}\n\n// JSONToYAML converts JSON to YAML. Notable implementation details:\n//\n//   - Duplicate fields, are case-sensitively ignored in an undefined order.\n//   - The sequence indentation style is compact, which means that the \"- \" marker for a YAML sequence will be on the same indentation level as the sequence field name.\n//   - Unlike Unmarshal, all integers, up to 64 bits, are preserved during this round-trip.\nfunc JSONToYAML(j []byte) ([]byte, error) {\n\t// Convert the JSON to an object.\n\tvar jsonObj interface{}\n\n\t// We are using yaml.Unmarshal here (instead of json.Unmarshal) because the\n\t// Go JSON library doesn't try to pick the right number type (int, float,\n\t// etc.) when unmarshalling to interface{}, it just picks float64\n\t// universally. go-yaml does go through the effort of picking the right\n\t// number type, so we can preserve number type throughout this process.\n\terr := yaml.Unmarshal(j, &jsonObj)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Marshal this object into YAML.\n\tyamlBytes, err := yaml.Marshal(jsonObj)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn yamlBytes, nil\n}\n\n// YAMLToJSON converts YAML to JSON. Since JSON is a subset of YAML,\n// passing JSON through this method should be a no-op.\n//\n// Some things YAML can do that are not supported by JSON:\n//   - In YAML you can have binary and null keys in your maps. These are invalid\n//     in JSON, and therefore int, bool and float keys are converted to strings implicitly.\n//   - Binary data in YAML with the !!binary tag is not supported. If you want to\n//     use binary data with this library, encode the data as base64 as usual but do\n//     not use the !!binary tag in your YAML. This will ensure the original base64\n//     encoded data makes it all the way through to the JSON.\n//   - And more... read the YAML specification for more details.\n//\n// Notable about the implementation:\n//\n// - Duplicate fields are case-sensitively ignored in an undefined order. Note that the YAML specification forbids duplicate fields, so this logic is more permissive than it needs to. See YAMLToJSONStrict for an alternative.\n// - As per the YAML 1.1 specification, which yaml.v2 used underneath implements, literal 'yes' and 'no' strings without quotation marks will be converted to true/false implicitly.\n// - Unlike Unmarshal, all integers, up to 64 bits, are preserved during this round-trip.\n// - There are no compatibility guarantees for returned error values.\nfunc YAMLToJSON(y []byte) ([]byte, error) {\n\treturn yamlToJSONTarget(y, nil, yaml.Unmarshal)\n}\n\n// YAMLToJSONStrict is like YAMLToJSON but enables strict YAML decoding,\n// returning an error on any duplicate field names.\nfunc YAMLToJSONStrict(y []byte) ([]byte, error) {\n\treturn yamlToJSONTarget(y, nil, yaml.UnmarshalStrict)\n}\n\nfunc yamlToJSONTarget(yamlBytes []byte, jsonTarget *reflect.Value, unmarshalFn func([]byte, interface{}) error) ([]byte, error) {\n\t// Convert the YAML to an object.\n\tvar yamlObj interface{}\n\terr := unmarshalFn(yamlBytes, &yamlObj)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// YAML objects are not completely compatible with JSON objects (e.g. you\n\t// can have non-string keys in YAML). So, convert the YAML-compatible object\n\t// to a JSON-compatible object, failing with an error if irrecoverable\n\t// incompatibilties happen along the way.\n\tjsonObj, err := convertToJSONableObject(yamlObj, jsonTarget)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Convert this object to JSON and return the data.\n\tjsonBytes, err := json.Marshal(jsonObj)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn jsonBytes, nil\n}\n\nfunc convertToJSONableObject(yamlObj interface{}, jsonTarget *reflect.Value) (interface{}, error) {\n\tvar err error\n\n\t// Resolve jsonTarget to a concrete value (i.e. not a pointer or an\n\t// interface). We pass decodingNull as false because we're not actually\n\t// decoding into the value, we're just checking if the ultimate target is a\n\t// string.\n\tif jsonTarget != nil {\n\t\tjsonUnmarshaler, textUnmarshaler, pointerValue := indirect(*jsonTarget, false)\n\t\t// We have a JSON or Text Umarshaler at this level, so we can't be trying\n\t\t// to decode into a string.\n\t\tif jsonUnmarshaler != nil || textUnmarshaler != nil {\n\t\t\tjsonTarget = nil\n\t\t} else {\n\t\t\tjsonTarget = &pointerValue\n\t\t}\n\t}\n\n\t// If yamlObj is a number or a boolean, check if jsonTarget is a string -\n\t// if so, coerce.  Else return normal.\n\t// If yamlObj is a map or array, find the field that each key is\n\t// unmarshaling to, and when you recurse pass the reflect.Value for that\n\t// field back into this function.\n\tswitch typedYAMLObj := yamlObj.(type) {\n\tcase map[interface{}]interface{}:\n\t\t// JSON does not support arbitrary keys in a map, so we must convert\n\t\t// these keys to strings.\n\t\t//\n\t\t// From my reading of go-yaml v2 (specifically the resolve function),\n\t\t// keys can only have the types string, int, int64, float64, binary\n\t\t// (unsupported), or null (unsupported).\n\t\tstrMap := make(map[string]interface{})\n\t\tfor k, v := range typedYAMLObj {\n\t\t\t// Resolve the key to a string first.\n\t\t\tvar keyString string\n\t\t\tswitch typedKey := k.(type) {\n\t\t\tcase string:\n\t\t\t\tkeyString = typedKey\n\t\t\tcase int:\n\t\t\t\tkeyString = strconv.Itoa(typedKey)\n\t\t\tcase int64:\n\t\t\t\t// go-yaml will only return an int64 as a key if the system\n\t\t\t\t// architecture is 32-bit and the key's value is between 32-bit\n\t\t\t\t// and 64-bit. Otherwise the key type will simply be int.\n\t\t\t\tkeyString = strconv.FormatInt(typedKey, 10)\n\t\t\tcase float64:\n\t\t\t\t// Stolen from go-yaml to use the same conversion to string as\n\t\t\t\t// the go-yaml library uses to convert float to string when\n\t\t\t\t// Marshaling.\n\t\t\t\ts := strconv.FormatFloat(typedKey, 'g', -1, 32)\n\t\t\t\tswitch s {\n\t\t\t\tcase \"+Inf\":\n\t\t\t\t\ts = \".inf\"\n\t\t\t\tcase \"-Inf\":\n\t\t\t\t\ts = \"-.inf\"\n\t\t\t\tcase \"NaN\":\n\t\t\t\t\ts = \".nan\"\n\t\t\t\t}\n\t\t\t\tkeyString = s\n\t\t\tcase bool:\n\t\t\t\tif typedKey {\n\t\t\t\t\tkeyString = \"true\"\n\t\t\t\t} else {\n\t\t\t\t\tkeyString = \"false\"\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\treturn nil, fmt.Errorf(\"unsupported map key of type: %s, key: %+#v, value: %+#v\",\n\t\t\t\t\treflect.TypeOf(k), k, v)\n\t\t\t}\n\n\t\t\t// jsonTarget should be a struct or a map. If it's a struct, find\n\t\t\t// the field it's going to map to and pass its reflect.Value. If\n\t\t\t// it's a map, find the element type of the map and pass the\n\t\t\t// reflect.Value created from that type. If it's neither, just pass\n\t\t\t// nil - JSON conversion will error for us if it's a real issue.\n\t\t\tif jsonTarget != nil {\n\t\t\t\tt := *jsonTarget\n\t\t\t\tif t.Kind() == reflect.Struct {\n\t\t\t\t\tkeyBytes := []byte(keyString)\n\t\t\t\t\t// Find the field that the JSON library would use.\n\t\t\t\t\tvar f *field\n\t\t\t\t\tfields := cachedTypeFields(t.Type())\n\t\t\t\t\tfor i := range fields {\n\t\t\t\t\t\tff := &fields[i]\n\t\t\t\t\t\tif bytes.Equal(ff.nameBytes, keyBytes) {\n\t\t\t\t\t\t\tf = ff\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Do case-insensitive comparison.\n\t\t\t\t\t\tif f == nil && ff.equalFold(ff.nameBytes, keyBytes) {\n\t\t\t\t\t\t\tf = ff\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif f != nil {\n\t\t\t\t\t\t// Find the reflect.Value of the most preferential\n\t\t\t\t\t\t// struct field.\n\t\t\t\t\t\tjtf := t.Field(f.index[0])\n\t\t\t\t\t\tstrMap[keyString], err = convertToJSONableObject(v, &jtf)\n\t\t\t\t\t\tif err != nil {\n\t\t\t\t\t\t\treturn nil, err\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t} else if t.Kind() == reflect.Map {\n\t\t\t\t\t// Create a zero value of the map's element type to use as\n\t\t\t\t\t// the JSON target.\n\t\t\t\t\tjtv := reflect.Zero(t.Type().Elem())\n\t\t\t\t\tstrMap[keyString], err = convertToJSONableObject(v, &jtv)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn nil, err\n\t\t\t\t\t}\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t}\n\t\t\tstrMap[keyString], err = convertToJSONableObject(v, nil)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\t\treturn strMap, nil\n\tcase []interface{}:\n\t\t// We need to recurse into arrays in case there are any\n\t\t// map[interface{}]interface{}'s inside and to convert any\n\t\t// numbers to strings.\n\n\t\t// If jsonTarget is a slice (which it really should be), find the\n\t\t// thing it's going to map to. If it's not a slice, just pass nil\n\t\t// - JSON conversion will error for us if it's a real issue.\n\t\tvar jsonSliceElemValue *reflect.Value\n\t\tif jsonTarget != nil {\n\t\t\tt := *jsonTarget\n\t\t\tif t.Kind() == reflect.Slice {\n\t\t\t\t// By default slices point to nil, but we need a reflect.Value\n\t\t\t\t// pointing to a value of the slice type, so we create one here.\n\t\t\t\tev := reflect.Indirect(reflect.New(t.Type().Elem()))\n\t\t\t\tjsonSliceElemValue = &ev\n\t\t\t}\n\t\t}\n\n\t\t// Make and use a new array.\n\t\tarr := make([]interface{}, len(typedYAMLObj))\n\t\tfor i, v := range typedYAMLObj {\n\t\t\tarr[i], err = convertToJSONableObject(v, jsonSliceElemValue)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\t\treturn arr, nil\n\tdefault:\n\t\t// If the target type is a string and the YAML type is a number,\n\t\t// convert the YAML type to a string.\n\t\tif jsonTarget != nil && (*jsonTarget).Kind() == reflect.String {\n\t\t\t// Based on my reading of go-yaml, it may return int, int64,\n\t\t\t// float64, or uint64.\n\t\t\tvar s string\n\t\t\tswitch typedVal := typedYAMLObj.(type) {\n\t\t\tcase int:\n\t\t\t\ts = strconv.FormatInt(int64(typedVal), 10)\n\t\t\tcase int64:\n\t\t\t\ts = strconv.FormatInt(typedVal, 10)\n\t\t\tcase float64:\n\t\t\t\ts = strconv.FormatFloat(typedVal, 'g', -1, 32)\n\t\t\tcase uint64:\n\t\t\t\ts = strconv.FormatUint(typedVal, 10)\n\t\t\tcase bool:\n\t\t\t\tif typedVal {\n\t\t\t\t\ts = \"true\"\n\t\t\t\t} else {\n\t\t\t\t\ts = \"false\"\n\t\t\t\t}\n\t\t\t}\n\t\t\tif len(s) > 0 {\n\t\t\t\tyamlObj = interface{}(s)\n\t\t\t}\n\t\t}\n\t\treturn yamlObj, nil\n\t}\n}\n\n// JSONObjectToYAMLObject converts an in-memory JSON object into a YAML in-memory MapSlice,\n// without going through a byte representation. A nil or empty map[string]interface{} input is\n// converted to an empty map, i.e. yaml.MapSlice(nil).\n//\n// interface{} slices stay interface{} slices. map[string]interface{} becomes yaml.MapSlice.\n//\n// int64 and float64 are down casted following the logic of github.com/go-yaml/yaml:\n// - float64s are down-casted as far as possible without data-loss to int, int64, uint64.\n// - int64s are down-casted to int if possible without data-loss.\n//\n// Big int/int64/uint64 do not lose precision as in the json-yaml roundtripping case.\n//\n// string, bool and any other types are unchanged.\nfunc JSONObjectToYAMLObject(j map[string]interface{}) yaml.MapSlice {\n\tif len(j) == 0 {\n\t\treturn nil\n\t}\n\tret := make(yaml.MapSlice, 0, len(j))\n\tfor k, v := range j {\n\t\tret = append(ret, yaml.MapItem{Key: k, Value: jsonToYAMLValue(v)})\n\t}\n\treturn ret\n}\n\nfunc jsonToYAMLValue(j interface{}) interface{} {\n\tswitch j := j.(type) {\n\tcase map[string]interface{}:\n\t\tif j == nil {\n\t\t\treturn interface{}(nil)\n\t\t}\n\t\treturn JSONObjectToYAMLObject(j)\n\tcase []interface{}:\n\t\tif j == nil {\n\t\t\treturn interface{}(nil)\n\t\t}\n\t\tret := make([]interface{}, len(j))\n\t\tfor i := range j {\n\t\t\tret[i] = jsonToYAMLValue(j[i])\n\t\t}\n\t\treturn ret\n\tcase float64:\n\t\t// replicate the logic in https://github.com/go-yaml/yaml/blob/51d6538a90f86fe93ac480b35f37b2be17fef232/resolve.go#L151\n\t\tif i64 := int64(j); j == float64(i64) {\n\t\t\tif i := int(i64); i64 == int64(i) {\n\t\t\t\treturn i\n\t\t\t}\n\t\t\treturn i64\n\t\t}\n\t\tif ui64 := uint64(j); j == float64(ui64) {\n\t\t\treturn ui64\n\t\t}\n\t\treturn j\n\tcase int64:\n\t\tif i := int(j); j == int64(i) {\n\t\t\treturn i\n\t\t}\n\t\treturn j\n\t}\n\treturn j\n}\n"
  },
  {
    "path": "vendor/sigs.k8s.io/yaml/yaml_go110.go",
    "content": "// This file contains changes that are only compatible with go 1.10 and onwards.\n\n//go:build go1.10\n// +build go1.10\n\n/*\nCopyright 2021 The Kubernetes Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\npackage yaml\n\nimport \"encoding/json\"\n\n// DisallowUnknownFields configures the JSON decoder to error out if unknown\n// fields come along, instead of dropping them by default.\nfunc DisallowUnknownFields(d *json.Decoder) *json.Decoder {\n\td.DisallowUnknownFields()\n\treturn d\n}\n"
  },
  {
    "path": "vendor/tags.cncf.io/container-device-interface/LICENSE",
    "content": "                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "vendor/tags.cncf.io/container-device-interface/internal/validation/k8s/objectmeta.go",
    "content": "/*\nCopyright 2014 The Kubernetes Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n// Adapted from k8s.io/apimachinery/pkg/api/validation:\n// https://github.com/kubernetes/apimachinery/blob/7687996c715ee7d5c8cf1e3215e607eb065a4221/pkg/api/validation/objectmeta.go\n\npackage k8s\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"strings\"\n)\n\n// TotalAnnotationSizeLimitB defines the maximum size of all annotations in characters.\nconst TotalAnnotationSizeLimitB int = 256 * (1 << 10) // 256 kB\n\n// ValidateAnnotations validates that a set of annotations are correctly defined.\nfunc ValidateAnnotations(annotations map[string]string, path string) error {\n\terrs := []error{}\n\tfor k := range annotations {\n\t\t// The rule is QualifiedName except that case doesn't matter, so convert to lowercase before checking.\n\t\tfor _, msg := range IsQualifiedName(strings.ToLower(k)) {\n\t\t\terrs = append(errs, fmt.Errorf(\"%v.%v is invalid: %v\", path, k, msg))\n\t\t}\n\t}\n\tif err := ValidateAnnotationsSize(annotations); err != nil {\n\t\terrs = append(errs, fmt.Errorf(\"%v is too long: %v\", path, err))\n\t}\n\treturn errors.Join(errs...)\n}\n\n// ValidateAnnotationsSize validates that a set of annotations is not too large.\nfunc ValidateAnnotationsSize(annotations map[string]string) error {\n\tvar totalSize int64\n\tfor k, v := range annotations {\n\t\ttotalSize += (int64)(len(k)) + (int64)(len(v))\n\t}\n\tif totalSize > (int64)(TotalAnnotationSizeLimitB) {\n\t\treturn fmt.Errorf(\"annotations size %d is larger than limit %d\", totalSize, TotalAnnotationSizeLimitB)\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/tags.cncf.io/container-device-interface/internal/validation/k8s/validation.go",
    "content": "/*\nCopyright 2014 The Kubernetes Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n// Adapted from k8s.io/apimachinery/pkg/util/validation:\n// https://github.com/kubernetes/apimachinery/blob/7687996c715ee7d5c8cf1e3215e607eb065a4221/pkg/util/validation/validation.go\n\npackage k8s\n\nimport (\n\t\"fmt\"\n\t\"regexp\"\n\t\"strings\"\n)\n\nconst qnameCharFmt string = \"[A-Za-z0-9]\"\nconst qnameExtCharFmt string = \"[-A-Za-z0-9_.]\"\nconst qualifiedNameFmt string = \"(\" + qnameCharFmt + qnameExtCharFmt + \"*)?\" + qnameCharFmt\nconst qualifiedNameErrMsg string = \"must consist of alphanumeric characters, '-', '_' or '.', and must start and end with an alphanumeric character\"\nconst qualifiedNameMaxLength int = 63\n\nvar qualifiedNameRegexp = regexp.MustCompile(\"^\" + qualifiedNameFmt + \"$\")\n\n// IsQualifiedName tests whether the value passed is what Kubernetes calls a\n// \"qualified name\".  This is a format used in various places throughout the\n// system.  If the value is not valid, a list of error strings is returned.\n// Otherwise an empty list (or nil) is returned.\nfunc IsQualifiedName(value string) []string {\n\tvar errs []string\n\tparts := strings.Split(value, \"/\")\n\tvar name string\n\tswitch len(parts) {\n\tcase 1:\n\t\tname = parts[0]\n\tcase 2:\n\t\tvar prefix string\n\t\tprefix, name = parts[0], parts[1]\n\t\tif len(prefix) == 0 {\n\t\t\terrs = append(errs, \"prefix part \"+EmptyError())\n\t\t} else if msgs := IsDNS1123Subdomain(prefix); len(msgs) != 0 {\n\t\t\terrs = append(errs, prefixEach(msgs, \"prefix part \")...)\n\t\t}\n\tdefault:\n\t\treturn append(errs, \"a qualified name \"+RegexError(qualifiedNameErrMsg, qualifiedNameFmt, \"MyName\", \"my.name\", \"123-abc\")+\n\t\t\t\" with an optional DNS subdomain prefix and '/' (e.g. 'example.com/MyName')\")\n\t}\n\n\tif len(name) == 0 {\n\t\terrs = append(errs, \"name part \"+EmptyError())\n\t} else if len(name) > qualifiedNameMaxLength {\n\t\terrs = append(errs, \"name part \"+MaxLenError(qualifiedNameMaxLength))\n\t}\n\tif !qualifiedNameRegexp.MatchString(name) {\n\t\terrs = append(errs, \"name part \"+RegexError(qualifiedNameErrMsg, qualifiedNameFmt, \"MyName\", \"my.name\", \"123-abc\"))\n\t}\n\treturn errs\n}\n\nconst labelValueFmt string = \"(\" + qualifiedNameFmt + \")?\"\nconst labelValueErrMsg string = \"a valid label must be an empty string or consist of alphanumeric characters, '-', '_' or '.', and must start and end with an alphanumeric character\"\n\n// LabelValueMaxLength is a label's max length\nconst LabelValueMaxLength int = 63\n\nvar labelValueRegexp = regexp.MustCompile(\"^\" + labelValueFmt + \"$\")\n\n// IsValidLabelValue tests whether the value passed is a valid label value.  If\n// the value is not valid, a list of error strings is returned.  Otherwise an\n// empty list (or nil) is returned.\nfunc IsValidLabelValue(value string) []string {\n\tvar errs []string\n\tif len(value) > LabelValueMaxLength {\n\t\terrs = append(errs, MaxLenError(LabelValueMaxLength))\n\t}\n\tif !labelValueRegexp.MatchString(value) {\n\t\terrs = append(errs, RegexError(labelValueErrMsg, labelValueFmt, \"MyValue\", \"my_value\", \"12345\"))\n\t}\n\treturn errs\n}\n\nconst dns1123LabelFmt string = \"[a-z0-9]([-a-z0-9]*[a-z0-9])?\"\nconst dns1123LabelErrMsg string = \"a lowercase RFC 1123 label must consist of lower case alphanumeric characters or '-', and must start and end with an alphanumeric character\"\n\n// DNS1123LabelMaxLength is a label's max length in DNS (RFC 1123)\nconst DNS1123LabelMaxLength int = 63\n\nvar dns1123LabelRegexp = regexp.MustCompile(\"^\" + dns1123LabelFmt + \"$\")\n\n// IsDNS1123Label tests for a string that conforms to the definition of a label in\n// DNS (RFC 1123).\nfunc IsDNS1123Label(value string) []string {\n\tvar errs []string\n\tif len(value) > DNS1123LabelMaxLength {\n\t\terrs = append(errs, MaxLenError(DNS1123LabelMaxLength))\n\t}\n\tif !dns1123LabelRegexp.MatchString(value) {\n\t\terrs = append(errs, RegexError(dns1123LabelErrMsg, dns1123LabelFmt, \"my-name\", \"123-abc\"))\n\t}\n\treturn errs\n}\n\nconst dns1123SubdomainFmt string = dns1123LabelFmt + \"(\\\\.\" + dns1123LabelFmt + \")*\"\nconst dns1123SubdomainErrorMsg string = \"a lowercase RFC 1123 subdomain must consist of lower case alphanumeric characters, '-' or '.', and must start and end with an alphanumeric character\"\n\n// DNS1123SubdomainMaxLength is a subdomain's max length in DNS (RFC 1123)\nconst DNS1123SubdomainMaxLength int = 253\n\nvar dns1123SubdomainRegexp = regexp.MustCompile(\"^\" + dns1123SubdomainFmt + \"$\")\n\n// IsDNS1123Subdomain tests for a string that conforms to the definition of a\n// subdomain in DNS (RFC 1123).\nfunc IsDNS1123Subdomain(value string) []string {\n\tvar errs []string\n\tif len(value) > DNS1123SubdomainMaxLength {\n\t\terrs = append(errs, MaxLenError(DNS1123SubdomainMaxLength))\n\t}\n\tif !dns1123SubdomainRegexp.MatchString(value) {\n\t\terrs = append(errs, RegexError(dns1123SubdomainErrorMsg, dns1123SubdomainFmt, \"example.com\"))\n\t}\n\treturn errs\n}\n\nconst dns1035LabelFmt string = \"[a-z]([-a-z0-9]*[a-z0-9])?\"\nconst dns1035LabelErrMsg string = \"a DNS-1035 label must consist of lower case alphanumeric characters or '-', start with an alphabetic character, and end with an alphanumeric character\"\n\n// DNS1035LabelMaxLength is a label's max length in DNS (RFC 1035)\nconst DNS1035LabelMaxLength int = 63\n\nvar dns1035LabelRegexp = regexp.MustCompile(\"^\" + dns1035LabelFmt + \"$\")\n\n// IsDNS1035Label tests for a string that conforms to the definition of a label in\n// DNS (RFC 1035).\nfunc IsDNS1035Label(value string) []string {\n\tvar errs []string\n\tif len(value) > DNS1035LabelMaxLength {\n\t\terrs = append(errs, MaxLenError(DNS1035LabelMaxLength))\n\t}\n\tif !dns1035LabelRegexp.MatchString(value) {\n\t\terrs = append(errs, RegexError(dns1035LabelErrMsg, dns1035LabelFmt, \"my-name\", \"abc-123\"))\n\t}\n\treturn errs\n}\n\n// wildcard definition - RFC 1034 section 4.3.3.\n// examples:\n// - valid: *.bar.com, *.foo.bar.com\n// - invalid: *.*.bar.com, *.foo.*.com, *bar.com, f*.bar.com, *\nconst wildcardDNS1123SubdomainFmt = \"\\\\*\\\\.\" + dns1123SubdomainFmt\nconst wildcardDNS1123SubdomainErrMsg = \"a wildcard DNS-1123 subdomain must start with '*.', followed by a valid DNS subdomain, which must consist of lower case alphanumeric characters, '-' or '.' and end with an alphanumeric character\"\n\n// IsWildcardDNS1123Subdomain tests for a string that conforms to the definition of a\n// wildcard subdomain in DNS (RFC 1034 section 4.3.3).\nfunc IsWildcardDNS1123Subdomain(value string) []string {\n\twildcardDNS1123SubdomainRegexp := regexp.MustCompile(\"^\" + wildcardDNS1123SubdomainFmt + \"$\")\n\n\tvar errs []string\n\tif len(value) > DNS1123SubdomainMaxLength {\n\t\terrs = append(errs, MaxLenError(DNS1123SubdomainMaxLength))\n\t}\n\tif !wildcardDNS1123SubdomainRegexp.MatchString(value) {\n\t\terrs = append(errs, RegexError(wildcardDNS1123SubdomainErrMsg, wildcardDNS1123SubdomainFmt, \"*.example.com\"))\n\t}\n\treturn errs\n}\n\n// MaxLenError returns a string explanation of a \"string too long\" validation\n// failure.\nfunc MaxLenError(length int) string {\n\treturn fmt.Sprintf(\"must be no more than %d characters\", length)\n}\n\n// RegexError returns a string explanation of a regex validation failure.\nfunc RegexError(msg string, fmt string, examples ...string) string {\n\tif len(examples) == 0 {\n\t\treturn msg + \" (regex used for validation is '\" + fmt + \"')\"\n\t}\n\tmsg += \" (e.g. \"\n\tfor i := range examples {\n\t\tif i > 0 {\n\t\t\tmsg += \" or \"\n\t\t}\n\t\tmsg += \"'\" + examples[i] + \"', \"\n\t}\n\tmsg += \"regex used for validation is '\" + fmt + \"')\"\n\treturn msg\n}\n\n// EmptyError returns a string explanation of a \"must not be empty\" validation\n// failure.\nfunc EmptyError() string {\n\treturn \"must be non-empty\"\n}\n\nfunc prefixEach(msgs []string, prefix string) []string {\n\tfor i := range msgs {\n\t\tmsgs[i] = prefix + msgs[i]\n\t}\n\treturn msgs\n}\n\n// InclusiveRangeError returns a string explanation of a numeric \"must be\n// between\" validation failure.\nfunc InclusiveRangeError(lo, hi int) string {\n\treturn fmt.Sprintf(`must be between %d and %d, inclusive`, lo, hi)\n}\n"
  },
  {
    "path": "vendor/tags.cncf.io/container-device-interface/internal/validation/validate.go",
    "content": "/*\n   Copyright © The CDI Authors\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\npackage validation\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\t\"tags.cncf.io/container-device-interface/internal/validation/k8s\"\n)\n\n// ValidateSpecAnnotations checks whether spec annotations are valid.\nfunc ValidateSpecAnnotations(name string, any interface{}) error {\n\tif any == nil {\n\t\treturn nil\n\t}\n\n\tswitch v := any.(type) {\n\tcase map[string]interface{}:\n\t\tannotations := make(map[string]string)\n\t\tfor k, v := range v {\n\t\t\tif s, ok := v.(string); ok {\n\t\t\t\tannotations[k] = s\n\t\t\t} else {\n\t\t\t\treturn fmt.Errorf(\"invalid annotation %v.%v; %v is not a string\", name, k, any)\n\t\t\t}\n\t\t}\n\t\treturn validateSpecAnnotations(name, annotations)\n\t}\n\n\treturn nil\n}\n\n// validateSpecAnnotations checks whether spec annotations are valid.\nfunc validateSpecAnnotations(name string, annotations map[string]string) error {\n\tpath := \"annotations\"\n\tif name != \"\" {\n\t\tpath = strings.Join([]string{name, path}, \".\")\n\t}\n\n\treturn k8s.ValidateAnnotations(annotations, path)\n}\n"
  },
  {
    "path": "vendor/tags.cncf.io/container-device-interface/pkg/cdi/annotations.go",
    "content": "/*\n   Copyright © 2021-2022 The CDI Authors\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\npackage cdi\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"strings\"\n\n\t\"tags.cncf.io/container-device-interface/pkg/parser\"\n)\n\nconst (\n\t// AnnotationPrefix is the prefix for CDI container annotation keys.\n\tAnnotationPrefix = \"cdi.k8s.io/\"\n)\n\n// UpdateAnnotations updates annotations with a plugin-specific CDI device\n// injection request for the given devices. Upon any error a non-nil error\n// is returned and annotations are left intact. By convention plugin should\n// be in the format of \"vendor.device-type\".\nfunc UpdateAnnotations(annotations map[string]string, plugin string, deviceID string, devices []string) (map[string]string, error) {\n\tkey, err := AnnotationKey(plugin, deviceID)\n\tif err != nil {\n\t\treturn annotations, fmt.Errorf(\"CDI annotation failed: %w\", err)\n\t}\n\tif _, ok := annotations[key]; ok {\n\t\treturn annotations, fmt.Errorf(\"CDI annotation failed, key %q used\", key)\n\t}\n\tvalue, err := AnnotationValue(devices)\n\tif err != nil {\n\t\treturn annotations, fmt.Errorf(\"CDI annotation failed: %w\", err)\n\t}\n\n\tif annotations == nil {\n\t\tannotations = make(map[string]string)\n\t}\n\tannotations[key] = value\n\n\treturn annotations, nil\n}\n\n// ParseAnnotations parses annotations for CDI device injection requests.\n// The keys and devices from all such requests are collected into slices\n// which are returned as the result. All devices are expected to be fully\n// qualified CDI device names. If any device fails this check empty slices\n// are returned along with a non-nil error. The annotations are expected\n// to be formatted by, or in a compatible fashion to UpdateAnnotations().\nfunc ParseAnnotations(annotations map[string]string) ([]string, []string, error) {\n\tvar (\n\t\tkeys    []string\n\t\tdevices []string\n\t)\n\n\tfor key, value := range annotations {\n\t\tif !strings.HasPrefix(key, AnnotationPrefix) {\n\t\t\tcontinue\n\t\t}\n\t\tfor _, d := range strings.Split(value, \",\") {\n\t\t\tif !parser.IsQualifiedName(d) {\n\t\t\t\treturn nil, nil, fmt.Errorf(\"invalid CDI device name %q\", d)\n\t\t\t}\n\t\t\tdevices = append(devices, d)\n\t\t}\n\t\tkeys = append(keys, key)\n\t}\n\n\treturn keys, devices, nil\n}\n\n// AnnotationKey returns a unique annotation key for an device allocation\n// by a K8s device plugin. pluginName should be in the format of\n// \"vendor.device-type\". deviceID is the ID of the device the plugin is\n// allocating. It is used to make sure that the generated key is unique\n// even if multiple allocations by a single plugin needs to be annotated.\nfunc AnnotationKey(pluginName, deviceID string) (string, error) {\n\tconst maxNameLen = 63\n\n\tif pluginName == \"\" {\n\t\treturn \"\", errors.New(\"invalid plugin name, empty\")\n\t}\n\tif deviceID == \"\" {\n\t\treturn \"\", errors.New(\"invalid deviceID, empty\")\n\t}\n\n\tname := pluginName + \"_\" + strings.ReplaceAll(deviceID, \"/\", \"_\")\n\n\tif len(name) > maxNameLen {\n\t\treturn \"\", fmt.Errorf(\"invalid plugin+deviceID %q, too long\", name)\n\t}\n\n\tif c := rune(name[0]); !parser.IsAlphaNumeric(c) {\n\t\treturn \"\", fmt.Errorf(\"invalid name %q, first '%c' should be alphanumeric\",\n\t\t\tname, c)\n\t}\n\tif len(name) > 2 {\n\t\tfor _, c := range name[1 : len(name)-1] {\n\t\t\tswitch {\n\t\t\tcase parser.IsAlphaNumeric(c):\n\t\t\tcase c == '_' || c == '-' || c == '.':\n\t\t\tdefault:\n\t\t\t\treturn \"\", fmt.Errorf(\"invalid name %q, invalid character '%c'\",\n\t\t\t\t\tname, c)\n\t\t\t}\n\t\t}\n\t}\n\tif c := rune(name[len(name)-1]); !parser.IsAlphaNumeric(c) {\n\t\treturn \"\", fmt.Errorf(\"invalid name %q, last '%c' should be alphanumeric\",\n\t\t\tname, c)\n\t}\n\n\treturn AnnotationPrefix + name, nil\n}\n\n// AnnotationValue returns an annotation value for the given devices.\nfunc AnnotationValue(devices []string) (string, error) {\n\tvalue, sep := \"\", \"\"\n\tfor _, d := range devices {\n\t\tif _, _, _, err := parser.ParseQualifiedName(d); err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t\tvalue += sep + d\n\t\tsep = \",\"\n\t}\n\n\treturn value, nil\n}\n"
  },
  {
    "path": "vendor/tags.cncf.io/container-device-interface/pkg/cdi/cache.go",
    "content": "/*\n   Copyright © 2021 The CDI Authors\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\npackage cdi\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"io/fs\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"runtime\"\n\t\"sort\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"github.com/fsnotify/fsnotify\"\n\toci \"github.com/opencontainers/runtime-spec/specs-go\"\n\tcdi \"tags.cncf.io/container-device-interface/specs-go\"\n)\n\n// Option is an option to change some aspect of default CDI behavior.\ntype Option func(*Cache)\n\n// Cache stores CDI Specs loaded from Spec directories.\ntype Cache struct {\n\tsync.Mutex\n\tspecDirs  []string\n\tspecs     map[string][]*Spec\n\tdevices   map[string]*Device\n\terrors    map[string][]error\n\tdirErrors map[string]error\n\n\tautoRefresh bool\n\twatch       *watch\n}\n\n// WithAutoRefresh returns an option to control automatic Cache refresh.\n// By default, auto-refresh is enabled, the list of Spec directories are\n// monitored and the Cache is automatically refreshed whenever a change\n// is detected. This option can be used to disable this behavior when a\n// manually refreshed mode is preferable.\nfunc WithAutoRefresh(autoRefresh bool) Option {\n\treturn func(c *Cache) {\n\t\tc.autoRefresh = autoRefresh\n\t}\n}\n\n// NewCache creates a new CDI Cache. The cache is populated from a set\n// of CDI Spec directories. These can be specified using a WithSpecDirs\n// option. The default set of directories is exposed in DefaultSpecDirs.\n//\n// Note:\n//\n//\tThe error returned by this function is always nil and it is only\n//\treturned to maintain API compatibility with consumers.\nfunc NewCache(options ...Option) (*Cache, error) {\n\treturn newCache(options...), nil\n}\n\n// newCache creates a CDI cache with the supplied options.\n// This function allows testing without handling the nil error returned by the\n// NewCache function.\nfunc newCache(options ...Option) *Cache {\n\tc := &Cache{\n\t\tautoRefresh: true,\n\t\twatch:       &watch{},\n\t}\n\n\tWithSpecDirs(DefaultSpecDirs...)(c)\n\tc.Lock()\n\tdefer c.Unlock()\n\n\tc.configure(options...)\n\treturn c\n}\n\n// Configure applies options to the Cache. Updates and refreshes the\n// Cache if options have changed.\nfunc (c *Cache) Configure(options ...Option) error {\n\tif len(options) == 0 {\n\t\treturn nil\n\t}\n\n\tc.Lock()\n\tdefer c.Unlock()\n\n\tc.configure(options...)\n\n\treturn nil\n}\n\n// Configure the Cache. Start/stop CDI Spec directory watch, refresh\n// the Cache if necessary.\nfunc (c *Cache) configure(options ...Option) {\n\tfor _, o := range options {\n\t\to(c)\n\t}\n\n\tc.dirErrors = make(map[string]error)\n\n\tc.watch.stop()\n\tif c.autoRefresh {\n\t\tc.watch.setup(c.specDirs, c.dirErrors)\n\t\tc.watch.start(&c.Mutex, c.refresh, c.dirErrors)\n\t}\n\t_ = c.refresh() // we record but ignore errors\n}\n\n// Refresh rescans the CDI Spec directories and refreshes the Cache.\n// In manual refresh mode the cache is always refreshed. In auto-\n// refresh mode the cache is only refreshed if it is out of date.\nfunc (c *Cache) Refresh() error {\n\tc.Lock()\n\tdefer c.Unlock()\n\n\t// force a refresh in manual mode\n\tif refreshed, err := c.refreshIfRequired(!c.autoRefresh); refreshed {\n\t\treturn err\n\t}\n\n\t// collect and return cached errors, much like refresh() does it\n\terrs := []error{}\n\tfor _, specErrs := range c.errors {\n\t\terrs = append(errs, errors.Join(specErrs...))\n\t}\n\treturn errors.Join(errs...)\n}\n\n// Refresh the Cache by rescanning CDI Spec directories and files.\nfunc (c *Cache) refresh() error {\n\tvar (\n\t\tspecs      = map[string][]*Spec{}\n\t\tdevices    = map[string]*Device{}\n\t\tconflicts  = map[string]struct{}{}\n\t\tspecErrors = map[string][]error{}\n\t)\n\n\t// collect errors per spec file path and once globally\n\tcollectError := func(err error, paths ...string) {\n\t\tfor _, path := range paths {\n\t\t\tspecErrors[path] = append(specErrors[path], err)\n\t\t}\n\t}\n\t// resolve conflicts based on device Spec priority (order of precedence)\n\tresolveConflict := func(name string, dev *Device, old *Device) bool {\n\t\tdevSpec, oldSpec := dev.GetSpec(), old.GetSpec()\n\t\tdevPrio, oldPrio := devSpec.GetPriority(), oldSpec.GetPriority()\n\t\tswitch {\n\t\tcase devPrio > oldPrio:\n\t\t\treturn false\n\t\tcase devPrio == oldPrio:\n\t\t\tdevPath, oldPath := devSpec.GetPath(), oldSpec.GetPath()\n\t\t\tcollectError(fmt.Errorf(\"conflicting device %q (specs %q, %q)\",\n\t\t\t\tname, devPath, oldPath), devPath, oldPath)\n\t\t\tconflicts[name] = struct{}{}\n\t\t}\n\t\treturn true\n\t}\n\n\t_ = scanSpecDirs(c.specDirs, func(path string, priority int, spec *Spec, err error) error {\n\t\tpath = filepath.Clean(path)\n\t\tif err != nil {\n\t\t\tcollectError(fmt.Errorf(\"failed to load CDI Spec %w\", err), path)\n\t\t\treturn nil\n\t\t}\n\n\t\tvendor := spec.GetVendor()\n\t\tspecs[vendor] = append(specs[vendor], spec)\n\n\t\tfor _, dev := range spec.devices {\n\t\t\tqualified := dev.GetQualifiedName()\n\t\t\tother, ok := devices[qualified]\n\t\t\tif ok {\n\t\t\t\tif resolveConflict(qualified, dev, other) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t}\n\t\t\tdevices[qualified] = dev\n\t\t}\n\n\t\treturn nil\n\t})\n\n\tfor conflict := range conflicts {\n\t\tdelete(devices, conflict)\n\t}\n\n\tc.specs = specs\n\tc.devices = devices\n\tc.errors = specErrors\n\n\terrs := []error{}\n\tfor _, specErrs := range specErrors {\n\t\terrs = append(errs, errors.Join(specErrs...))\n\t}\n\treturn errors.Join(errs...)\n}\n\n// RefreshIfRequired triggers a refresh if necessary.\nfunc (c *Cache) refreshIfRequired(force bool) (bool, error) {\n\t// We need to refresh if\n\t// - it's forced by an explicit call to Refresh() in manual mode\n\t// - a missing Spec dir appears (added to watch) in auto-refresh mode\n\tif force || (c.autoRefresh && c.watch.update(c.dirErrors)) {\n\t\treturn true, c.refresh()\n\t}\n\treturn false, nil\n}\n\n// InjectDevices injects the given qualified devices to an OCI Spec. It\n// returns any unresolvable devices and an error if injection fails for\n// any of the devices. Might trigger a cache refresh, in which case any\n// errors encountered can be obtained using GetErrors().\nfunc (c *Cache) InjectDevices(ociSpec *oci.Spec, devices ...string) ([]string, error) {\n\tvar unresolved []string\n\n\tif ociSpec == nil {\n\t\treturn devices, fmt.Errorf(\"can't inject devices, nil OCI Spec\")\n\t}\n\n\tc.Lock()\n\tdefer c.Unlock()\n\n\t_, _ = c.refreshIfRequired(false) // we record but ignore errors\n\n\tedits := &ContainerEdits{}\n\tspecs := map[*Spec]struct{}{}\n\n\tfor _, device := range devices {\n\t\td := c.devices[device]\n\t\tif d == nil {\n\t\t\tunresolved = append(unresolved, device)\n\t\t\tcontinue\n\t\t}\n\t\tif _, ok := specs[d.GetSpec()]; !ok {\n\t\t\tspecs[d.GetSpec()] = struct{}{}\n\t\t\tedits.Append(d.GetSpec().edits())\n\t\t}\n\t\tedits.Append(d.edits())\n\t}\n\n\tif unresolved != nil {\n\t\treturn unresolved, fmt.Errorf(\"unresolvable CDI devices %s\",\n\t\t\tstrings.Join(unresolved, \", \"))\n\t}\n\n\tif err := edits.Apply(ociSpec); err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to inject devices: %w\", err)\n\t}\n\n\treturn nil, nil\n}\n\n// highestPrioritySpecDir returns the Spec directory with highest priority\n// and its priority.\nfunc (c *Cache) highestPrioritySpecDir() (string, int) {\n\tif len(c.specDirs) == 0 {\n\t\treturn \"\", -1\n\t}\n\n\tprio := len(c.specDirs) - 1\n\tdir := c.specDirs[prio]\n\n\treturn dir, prio\n}\n\n// WriteSpec writes a Spec file with the given content into the highest\n// priority Spec directory. If name has a \"json\" or \"yaml\" extension it\n// choses the encoding. Otherwise the default YAML encoding is used.\nfunc (c *Cache) WriteSpec(raw *cdi.Spec, name string) error {\n\tvar (\n\t\tspecDir string\n\t\tpath    string\n\t\tprio    int\n\t\tspec    *Spec\n\t\terr     error\n\t)\n\n\tspecDir, prio = c.highestPrioritySpecDir()\n\tif specDir == \"\" {\n\t\treturn errors.New(\"no Spec directories to write to\")\n\t}\n\n\tpath = filepath.Join(specDir, name)\n\tif ext := filepath.Ext(path); ext != \".json\" && ext != \".yaml\" {\n\t\tpath += defaultSpecExt\n\t}\n\n\tspec, err = newSpec(raw, path, prio)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn spec.write(true)\n}\n\n// RemoveSpec removes a Spec with the given name from the highest\n// priority Spec directory. This function can be used to remove a\n// Spec previously written by WriteSpec(). If the file exists and\n// its removal fails RemoveSpec returns an error.\nfunc (c *Cache) RemoveSpec(name string) error {\n\tvar (\n\t\tspecDir string\n\t\tpath    string\n\t\terr     error\n\t)\n\n\tspecDir, _ = c.highestPrioritySpecDir()\n\tif specDir == \"\" {\n\t\treturn errors.New(\"no Spec directories to remove from\")\n\t}\n\n\tpath = filepath.Join(specDir, name)\n\tif ext := filepath.Ext(path); ext != \".json\" && ext != \".yaml\" {\n\t\tpath += defaultSpecExt\n\t}\n\n\terr = os.Remove(path)\n\tif err != nil && errors.Is(err, fs.ErrNotExist) {\n\t\terr = nil\n\t}\n\n\treturn err\n}\n\n// GetDevice returns the cached device for the given qualified name. Might trigger\n// a cache refresh, in which case any errors encountered can be obtained using\n// GetErrors().\nfunc (c *Cache) GetDevice(device string) *Device {\n\tc.Lock()\n\tdefer c.Unlock()\n\n\t_, _ = c.refreshIfRequired(false) // we record but ignore errors\n\n\treturn c.devices[device]\n}\n\n// ListDevices lists all cached devices by qualified name. Might trigger a cache\n// refresh, in which case any errors encountered can be obtained using GetErrors().\nfunc (c *Cache) ListDevices() []string {\n\tvar devices []string\n\n\tc.Lock()\n\tdefer c.Unlock()\n\n\t_, _ = c.refreshIfRequired(false) // we record but ignore errors\n\n\tfor name := range c.devices {\n\t\tdevices = append(devices, name)\n\t}\n\tsort.Strings(devices)\n\n\treturn devices\n}\n\n// ListVendors lists all vendors known to the cache. Might trigger a cache refresh,\n// in which case any errors encountered can be obtained using GetErrors().\nfunc (c *Cache) ListVendors() []string {\n\tvar vendors []string\n\n\tc.Lock()\n\tdefer c.Unlock()\n\n\t_, _ = c.refreshIfRequired(false) // we record but ignore errors\n\n\tfor vendor := range c.specs {\n\t\tvendors = append(vendors, vendor)\n\t}\n\tsort.Strings(vendors)\n\n\treturn vendors\n}\n\n// ListClasses lists all device classes known to the cache. Might trigger a cache\n// refresh, in which case any errors encountered can be obtained using GetErrors().\nfunc (c *Cache) ListClasses() []string {\n\tvar (\n\t\tcmap    = map[string]struct{}{}\n\t\tclasses []string\n\t)\n\n\tc.Lock()\n\tdefer c.Unlock()\n\n\t_, _ = c.refreshIfRequired(false) // we record but ignore errors\n\n\tfor _, specs := range c.specs {\n\t\tfor _, spec := range specs {\n\t\t\tcmap[spec.GetClass()] = struct{}{}\n\t\t}\n\t}\n\tfor class := range cmap {\n\t\tclasses = append(classes, class)\n\t}\n\tsort.Strings(classes)\n\n\treturn classes\n}\n\n// GetVendorSpecs returns all specs for the given vendor. Might trigger a cache\n// refresh, in which case any errors encountered can be obtained using GetErrors().\nfunc (c *Cache) GetVendorSpecs(vendor string) []*Spec {\n\tc.Lock()\n\tdefer c.Unlock()\n\n\t_, _ = c.refreshIfRequired(false) // we record but ignore errors\n\n\treturn c.specs[vendor]\n}\n\n// GetSpecErrors returns all errors encountered for the spec during the\n// last cache refresh.\nfunc (c *Cache) GetSpecErrors(spec *Spec) []error {\n\tvar errors []error\n\n\tc.Lock()\n\tdefer c.Unlock()\n\n\tif errs, ok := c.errors[spec.GetPath()]; ok {\n\t\terrors = make([]error, len(errs))\n\t\tcopy(errors, errs)\n\t}\n\n\treturn errors\n}\n\n// GetErrors returns all errors encountered during the last\n// cache refresh.\nfunc (c *Cache) GetErrors() map[string][]error {\n\tc.Lock()\n\tdefer c.Unlock()\n\n\terrors := map[string][]error{}\n\tfor path, errs := range c.errors {\n\t\terrors[path] = errs\n\t}\n\tfor path, err := range c.dirErrors {\n\t\terrors[path] = []error{err}\n\t}\n\n\treturn errors\n}\n\n// GetSpecDirectories returns the CDI Spec directories currently in use.\nfunc (c *Cache) GetSpecDirectories() []string {\n\tc.Lock()\n\tdefer c.Unlock()\n\n\tdirs := make([]string, len(c.specDirs))\n\tcopy(dirs, c.specDirs)\n\treturn dirs\n}\n\n// GetSpecDirErrors returns any errors related to configured Spec directories.\nfunc (c *Cache) GetSpecDirErrors() map[string]error {\n\tif c.dirErrors == nil {\n\t\treturn nil\n\t}\n\n\tc.Lock()\n\tdefer c.Unlock()\n\n\terrors := make(map[string]error)\n\tfor dir, err := range c.dirErrors {\n\t\terrors[dir] = err\n\t}\n\treturn errors\n}\n\n// Our fsnotify helper wrapper.\ntype watch struct {\n\twatcher *fsnotify.Watcher\n\ttracked map[string]bool\n}\n\n// Setup monitoring for the given Spec directories.\nfunc (w *watch) setup(dirs []string, dirErrors map[string]error) {\n\tvar (\n\t\tdir string\n\t\terr error\n\t)\n\tw.tracked = make(map[string]bool)\n\tfor _, dir = range dirs {\n\t\tw.tracked[dir] = false\n\t}\n\n\tw.watcher, err = fsnotify.NewWatcher()\n\tif err != nil {\n\t\tfor _, dir := range dirs {\n\t\t\tdirErrors[dir] = fmt.Errorf(\"failed to create watcher: %w\", err)\n\t\t}\n\t\treturn\n\t}\n\n\tw.update(dirErrors)\n}\n\n// Start watching Spec directories for relevant changes.\nfunc (w *watch) start(m *sync.Mutex, refresh func() error, dirErrors map[string]error) {\n\tgo w.watch(w.watcher, m, refresh, dirErrors)\n}\n\n// Stop watching directories.\nfunc (w *watch) stop() {\n\tif w.watcher == nil {\n\t\treturn\n\t}\n\n\t_ = w.watcher.Close()\n\tw.tracked = nil\n}\n\n// Watch Spec directory changes, triggering a refresh if necessary.\nfunc (w *watch) watch(fsw *fsnotify.Watcher, m *sync.Mutex, refresh func() error, dirErrors map[string]error) {\n\twatch := fsw\n\tif watch == nil {\n\t\treturn\n\t}\n\n\teventMask := fsnotify.Rename | fsnotify.Remove | fsnotify.Write\n\t// On macOS, we also need to watch for Create events.\n\tif runtime.GOOS == \"darwin\" {\n\t\teventMask |= fsnotify.Create\n\t}\n\n\tfor {\n\t\tselect {\n\t\tcase event, ok := <-watch.Events:\n\t\t\tif !ok {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (event.Op & eventMask) == 0 {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif event.Op == fsnotify.Write || event.Op == fsnotify.Create {\n\t\t\t\tif ext := filepath.Ext(event.Name); ext != \".json\" && ext != \".yaml\" {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tm.Lock()\n\t\t\tif event.Op == fsnotify.Remove && w.tracked[event.Name] {\n\t\t\t\tw.update(dirErrors, event.Name)\n\t\t\t} else {\n\t\t\t\tw.update(dirErrors)\n\t\t\t}\n\t\t\t_ = refresh()\n\t\t\tm.Unlock()\n\n\t\tcase _, ok := <-watch.Errors:\n\t\t\tif !ok {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n}\n\n// Update watch with pending/missing or removed directories.\nfunc (w *watch) update(dirErrors map[string]error, removed ...string) bool {\n\tvar (\n\t\tdir    string\n\t\tok     bool\n\t\terr    error\n\t\tupdate bool\n\t)\n\n\t// If we failed to create an fsnotify.Watcher we have a nil watcher here\n\t// (but with autoRefresh left on). One known case when this can happen is\n\t// if we have too many open files. In that case we always return true and\n\t// force a refresh.\n\tif w.watcher == nil {\n\t\treturn true\n\t}\n\n\tfor dir, ok = range w.tracked {\n\t\tif ok {\n\t\t\tcontinue\n\t\t}\n\n\t\terr = w.watcher.Add(dir)\n\t\tif err == nil {\n\t\t\tw.tracked[dir] = true\n\t\t\tdelete(dirErrors, dir)\n\t\t\tupdate = true\n\t\t} else {\n\t\t\tw.tracked[dir] = false\n\t\t\tdirErrors[dir] = fmt.Errorf(\"failed to monitor for changes: %w\", err)\n\t\t}\n\t}\n\n\tfor _, dir = range removed {\n\t\tw.tracked[dir] = false\n\t\tdirErrors[dir] = errors.New(\"directory removed\")\n\t\tupdate = true\n\t}\n\n\treturn update\n}\n"
  },
  {
    "path": "vendor/tags.cncf.io/container-device-interface/pkg/cdi/container-edits.go",
    "content": "/*\n   Copyright © 2021 The CDI Authors\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\npackage cdi\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"sort\"\n\t\"strings\"\n\n\toci \"github.com/opencontainers/runtime-spec/specs-go\"\n\tocigen \"github.com/opencontainers/runtime-tools/generate\"\n\tcdi \"tags.cncf.io/container-device-interface/specs-go\"\n)\n\nconst (\n\t// PrestartHook is the name of the OCI \"prestart\" hook.\n\tPrestartHook = \"prestart\"\n\t// CreateRuntimeHook is the name of the OCI \"createRuntime\" hook.\n\tCreateRuntimeHook = \"createRuntime\"\n\t// CreateContainerHook is the name of the OCI \"createContainer\" hook.\n\tCreateContainerHook = \"createContainer\"\n\t// StartContainerHook is the name of the OCI \"startContainer\" hook.\n\tStartContainerHook = \"startContainer\"\n\t// PoststartHook is the name of the OCI \"poststart\" hook.\n\tPoststartHook = \"poststart\"\n\t// PoststopHook is the name of the OCI \"poststop\" hook.\n\tPoststopHook = \"poststop\"\n)\n\nvar (\n\t// Names of recognized hooks.\n\tvalidHookNames = map[string]struct{}{\n\t\tPrestartHook:        {},\n\t\tCreateRuntimeHook:   {},\n\t\tCreateContainerHook: {},\n\t\tStartContainerHook:  {},\n\t\tPoststartHook:       {},\n\t\tPoststopHook:        {},\n\t}\n)\n\n// ContainerEdits represent updates to be applied to an OCI Spec.\n// These updates can be specific to a CDI device, or they can be\n// specific to a CDI Spec. In the former case these edits should\n// be applied to all OCI Specs where the corresponding CDI device\n// is injected. In the latter case, these edits should be applied\n// to all OCI Specs where at least one devices from the CDI Spec\n// is injected.\ntype ContainerEdits struct {\n\t*cdi.ContainerEdits\n}\n\n// Apply edits to the given OCI Spec. Updates the OCI Spec in place.\n// Returns an error if the update fails.\nfunc (e *ContainerEdits) Apply(spec *oci.Spec) error {\n\tif spec == nil {\n\t\treturn errors.New(\"can't edit nil OCI Spec\")\n\t}\n\tif e == nil || e.ContainerEdits == nil {\n\t\treturn nil\n\t}\n\n\tspecgen := ocigen.NewFromSpec(spec)\n\tif len(e.Env) > 0 {\n\t\tspecgen.AddMultipleProcessEnv(e.Env)\n\t}\n\n\tfor _, d := range e.DeviceNodes {\n\t\tdn := DeviceNode{d}\n\n\t\terr := dn.fillMissingInfo()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdev := dn.toOCI()\n\t\tif dev.UID == nil && spec.Process != nil {\n\t\t\tif uid := spec.Process.User.UID; uid > 0 {\n\t\t\t\tdev.UID = &uid\n\t\t\t}\n\t\t}\n\t\tif dev.GID == nil && spec.Process != nil {\n\t\t\tif gid := spec.Process.User.GID; gid > 0 {\n\t\t\t\tdev.GID = &gid\n\t\t\t}\n\t\t}\n\n\t\tspecgen.RemoveDevice(dev.Path)\n\t\tspecgen.AddDevice(dev)\n\n\t\tif dev.Type == \"b\" || dev.Type == \"c\" {\n\t\t\taccess := d.Permissions\n\t\t\tif access == \"\" {\n\t\t\t\taccess = \"rwm\"\n\t\t\t}\n\t\t\tspecgen.AddLinuxResourcesDevice(true, dev.Type, &dev.Major, &dev.Minor, access)\n\t\t}\n\t}\n\n\tif len(e.NetDevices) > 0 {\n\t\t// specgen is currently missing functionality to set Linux NetDevices,\n\t\t// so we use a locally rolled function for now.\n\t\tfor _, dev := range e.NetDevices {\n\t\t\tspecgenAddLinuxNetDevice(&specgen, dev.HostInterfaceName, (&LinuxNetDevice{dev}).toOCI())\n\t\t}\n\t}\n\n\tif len(e.Mounts) > 0 {\n\t\tfor _, m := range e.Mounts {\n\t\t\tspecgen.RemoveMount(m.ContainerPath)\n\t\t\tspecgen.AddMount((&Mount{m}).toOCI())\n\t\t}\n\t\tsortMounts(&specgen)\n\t}\n\n\tfor _, h := range e.Hooks {\n\t\tociHook := (&Hook{h}).toOCI()\n\t\tswitch h.HookName {\n\t\tcase PrestartHook:\n\t\t\tspecgen.AddPreStartHook(ociHook)\n\t\tcase PoststartHook:\n\t\t\tspecgen.AddPostStartHook(ociHook)\n\t\tcase PoststopHook:\n\t\t\tspecgen.AddPostStopHook(ociHook)\n\t\t\t// TODO: Maybe runtime-tools/generate should be updated with these...\n\t\tcase CreateRuntimeHook:\n\t\t\tensureOCIHooks(spec)\n\t\t\tspec.Hooks.CreateRuntime = append(spec.Hooks.CreateRuntime, ociHook)\n\t\tcase CreateContainerHook:\n\t\t\tensureOCIHooks(spec)\n\t\t\tspec.Hooks.CreateContainer = append(spec.Hooks.CreateContainer, ociHook)\n\t\tcase StartContainerHook:\n\t\t\tensureOCIHooks(spec)\n\t\t\tspec.Hooks.StartContainer = append(spec.Hooks.StartContainer, ociHook)\n\t\tdefault:\n\t\t\treturn fmt.Errorf(\"unknown hook name %q\", h.HookName)\n\t\t}\n\t}\n\n\tif e.IntelRdt != nil {\n\t\t// The specgen is missing functionality to set all parameters so we\n\t\t// just piggy-back on it to initialize all structs and the copy over.\n\t\tspecgen.SetLinuxIntelRdtClosID(e.IntelRdt.ClosID)\n\t\tspec.Linux.IntelRdt = (&IntelRdt{e.IntelRdt}).toOCI()\n\t}\n\n\tfor _, additionalGID := range e.AdditionalGIDs {\n\t\tif additionalGID == 0 {\n\t\t\tcontinue\n\t\t}\n\t\tspecgen.AddProcessAdditionalGid(additionalGID)\n\t}\n\n\treturn nil\n}\n\nfunc specgenAddLinuxNetDevice(specgen *ocigen.Generator, hostIf string, netDev *oci.LinuxNetDevice) {\n\tif specgen == nil || netDev == nil {\n\t\treturn\n\t}\n\tensureLinuxNetDevices(specgen.Config)\n\tspecgen.Config.Linux.NetDevices[hostIf] = *netDev\n}\n\n// Ensure OCI Spec Linux NetDevices map is not nil.\nfunc ensureLinuxNetDevices(spec *oci.Spec) {\n\tif spec.Linux == nil {\n\t\tspec.Linux = &oci.Linux{}\n\t}\n\tif spec.Linux.NetDevices == nil {\n\t\tspec.Linux.NetDevices = map[string]oci.LinuxNetDevice{}\n\t}\n}\n\n// Validate container edits.\nfunc (e *ContainerEdits) Validate() error {\n\tif e == nil || e.ContainerEdits == nil {\n\t\treturn nil\n\t}\n\n\tif err := ValidateEnv(e.Env); err != nil {\n\t\treturn fmt.Errorf(\"invalid container edits: %w\", err)\n\t}\n\tfor _, d := range e.DeviceNodes {\n\t\tif err := (&DeviceNode{d}).Validate(); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\tfor _, h := range e.Hooks {\n\t\tif err := (&Hook{h}).Validate(); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\tfor _, m := range e.Mounts {\n\t\tif err := (&Mount{m}).Validate(); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\tif e.IntelRdt != nil {\n\t\tif err := (&IntelRdt{e.IntelRdt}).Validate(); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\tif err := ValidateNetDevices(e.NetDevices); err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\n// Append other edits into this one. If called with a nil receiver,\n// allocates and returns newly allocated edits.\nfunc (e *ContainerEdits) Append(o *ContainerEdits) *ContainerEdits {\n\tif o == nil || o.ContainerEdits == nil {\n\t\treturn e\n\t}\n\tif e == nil {\n\t\te = &ContainerEdits{}\n\t}\n\tif e.ContainerEdits == nil {\n\t\te.ContainerEdits = &cdi.ContainerEdits{}\n\t}\n\n\te.Env = append(e.Env, o.Env...)\n\te.DeviceNodes = append(e.DeviceNodes, o.DeviceNodes...)\n\te.NetDevices = append(e.NetDevices, o.NetDevices...)\n\te.Hooks = append(e.Hooks, o.Hooks...)\n\te.Mounts = append(e.Mounts, o.Mounts...)\n\tif o.IntelRdt != nil {\n\t\te.IntelRdt = o.IntelRdt\n\t}\n\te.AdditionalGIDs = append(e.AdditionalGIDs, o.AdditionalGIDs...)\n\n\treturn e\n}\n\n// isEmpty returns true if these edits are empty. This is valid in a\n// global Spec context but invalid in a Device context.\nfunc (e *ContainerEdits) isEmpty() bool {\n\tif e == nil {\n\t\treturn false\n\t}\n\tif len(e.Env) > 0 {\n\t\treturn false\n\t}\n\tif len(e.DeviceNodes) > 0 {\n\t\treturn false\n\t}\n\tif len(e.Hooks) > 0 {\n\t\treturn false\n\t}\n\tif len(e.Mounts) > 0 {\n\t\treturn false\n\t}\n\tif len(e.AdditionalGIDs) > 0 {\n\t\treturn false\n\t}\n\tif e.IntelRdt != nil {\n\t\treturn false\n\t}\n\tif len(e.NetDevices) > 0 {\n\t\treturn false\n\t}\n\treturn true\n}\n\n// ValidateEnv validates the given environment variables.\nfunc ValidateEnv(env []string) error {\n\tfor _, v := range env {\n\t\tif strings.IndexByte(v, byte('=')) <= 0 {\n\t\t\treturn fmt.Errorf(\"invalid environment variable %q\", v)\n\t\t}\n\t}\n\treturn nil\n}\n\n// ValidateNetDevices validates the given net devices.\nfunc ValidateNetDevices(devices []*cdi.LinuxNetDevice) error {\n\tvar (\n\t\thostSeen = map[string]string{}\n\t\tnameSeen = map[string]string{}\n\t)\n\n\tfor _, dev := range devices {\n\t\tif err := (&LinuxNetDevice{dev}).Validate(); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif other, ok := hostSeen[dev.HostInterfaceName]; ok {\n\t\t\treturn fmt.Errorf(\"invalid linux net device, duplicate HostInterfaceName %q with names %q and %q\",\n\t\t\t\tdev.HostInterfaceName, dev.Name, other)\n\t\t}\n\t\thostSeen[dev.HostInterfaceName] = dev.Name\n\n\t\tif other, ok := nameSeen[dev.Name]; ok {\n\t\t\treturn fmt.Errorf(\"invalid linux net device, duplicate Name %q with HostInterfaceName %q and %q\",\n\t\t\t\tdev.Name, dev.HostInterfaceName, other)\n\t\t}\n\t\tnameSeen[dev.Name] = dev.HostInterfaceName\n\t}\n\n\treturn nil\n}\n\n// LinuxNetDevice is a CDI Spec LinuxNetDevice wrapper, used for OCI conversion and validating.\ntype LinuxNetDevice struct {\n\t*cdi.LinuxNetDevice\n}\n\n// Validate LinuxNetDevice.\nfunc (d *LinuxNetDevice) Validate() error {\n\tif d.HostInterfaceName == \"\" {\n\t\treturn errors.New(\"invalid linux net device, empty HostInterfaceName\")\n\t}\n\tif d.Name == \"\" {\n\t\treturn errors.New(\"invalid linux net device, empty Name\")\n\t}\n\treturn nil\n}\n\n// DeviceNode is a CDI Spec DeviceNode wrapper, used for validating DeviceNodes.\ntype DeviceNode struct {\n\t*cdi.DeviceNode\n}\n\n// Validate a CDI Spec DeviceNode.\nfunc (d *DeviceNode) Validate() error {\n\tvalidTypes := map[string]struct{}{\n\t\t\"\":  {},\n\t\t\"b\": {},\n\t\t\"c\": {},\n\t\t\"u\": {},\n\t\t\"p\": {},\n\t}\n\n\tif d.Path == \"\" {\n\t\treturn errors.New(\"invalid (empty) device path\")\n\t}\n\tif _, ok := validTypes[d.Type]; !ok {\n\t\treturn fmt.Errorf(\"device %q: invalid type %q\", d.Path, d.Type)\n\t}\n\tfor _, bit := range d.Permissions {\n\t\tif bit != 'r' && bit != 'w' && bit != 'm' {\n\t\t\treturn fmt.Errorf(\"device %q: invalid permissions %q\",\n\t\t\t\td.Path, d.Permissions)\n\t\t}\n\t}\n\treturn nil\n}\n\n// Hook is a CDI Spec Hook wrapper, used for validating hooks.\ntype Hook struct {\n\t*cdi.Hook\n}\n\n// Validate a hook.\nfunc (h *Hook) Validate() error {\n\tif _, ok := validHookNames[h.HookName]; !ok {\n\t\treturn fmt.Errorf(\"invalid hook name %q\", h.HookName)\n\t}\n\tif h.Path == \"\" {\n\t\treturn fmt.Errorf(\"invalid hook %q with empty path\", h.HookName)\n\t}\n\tif err := ValidateEnv(h.Env); err != nil {\n\t\treturn fmt.Errorf(\"invalid hook %q: %w\", h.HookName, err)\n\t}\n\treturn nil\n}\n\n// Mount is a CDI Mount wrapper, used for validating mounts.\ntype Mount struct {\n\t*cdi.Mount\n}\n\n// Validate a mount.\nfunc (m *Mount) Validate() error {\n\tif m.HostPath == \"\" {\n\t\treturn errors.New(\"invalid mount, empty host path\")\n\t}\n\tif m.ContainerPath == \"\" {\n\t\treturn errors.New(\"invalid mount, empty container path\")\n\t}\n\treturn nil\n}\n\n// IntelRdt is a CDI IntelRdt wrapper.\n// This is used for validation and conversion to OCI specifications.\ntype IntelRdt struct {\n\t*cdi.IntelRdt\n}\n\n// ValidateIntelRdt validates the IntelRdt configuration.\n//\n// Deprecated: ValidateIntelRdt is deprecated use IntelRdt.Validate() instead.\nfunc ValidateIntelRdt(i *cdi.IntelRdt) error {\n\treturn (&IntelRdt{i}).Validate()\n}\n\n// Validate validates the IntelRdt configuration.\nfunc (i *IntelRdt) Validate() error {\n\t// ClosID must be a valid Linux filename. Exception: \"/\" refers to the root CLOS.\n\tswitch c := i.ClosID; {\n\tcase c == \"/\":\n\tcase len(c) >= 4096, c == \".\", c == \"..\", strings.ContainsAny(c, \"/\\n\"):\n\t\treturn errors.New(\"invalid ClosID\")\n\t}\n\treturn nil\n}\n\n// Ensure OCI Spec hooks are not nil so we can add hooks.\nfunc ensureOCIHooks(spec *oci.Spec) {\n\tif spec.Hooks == nil {\n\t\tspec.Hooks = &oci.Hooks{}\n\t}\n}\n\n// sortMounts sorts the mounts in the given OCI Spec.\nfunc sortMounts(specgen *ocigen.Generator) {\n\tmounts := specgen.Mounts()\n\tspecgen.ClearMounts()\n\tsort.Stable(orderedMounts(mounts))\n\tspecgen.Config.Mounts = mounts\n}\n\n// orderedMounts defines how to sort an OCI Spec Mount slice.\n// This is the almost the same implementation sa used by CRI-O and Docker,\n// with a minor tweak for stable sorting order (easier to test):\n//\n//\thttps://github.com/moby/moby/blob/17.05.x/daemon/volumes.go#L26\ntype orderedMounts []oci.Mount\n\n// Len returns the number of mounts. Used in sorting.\nfunc (m orderedMounts) Len() int {\n\treturn len(m)\n}\n\n// Less returns true if the number of parts (a/b/c would be 3 parts) in the\n// mount indexed by parameter 1 is less than that of the mount indexed by\n// parameter 2. Used in sorting.\nfunc (m orderedMounts) Less(i, j int) bool {\n\treturn m.parts(i) < m.parts(j)\n}\n\n// Swap swaps two items in an array of mounts. Used in sorting\nfunc (m orderedMounts) Swap(i, j int) {\n\tm[i], m[j] = m[j], m[i]\n}\n\n// parts returns the number of parts in the destination of a mount. Used in sorting.\nfunc (m orderedMounts) parts(i int) int {\n\treturn strings.Count(filepath.Clean(m[i].Destination), string(os.PathSeparator))\n}\n"
  },
  {
    "path": "vendor/tags.cncf.io/container-device-interface/pkg/cdi/container-edits_unix.go",
    "content": "//go:build !windows\n\n/*\n   Copyright © 2021 The CDI Authors\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\npackage cdi\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"os\"\n\n\t\"golang.org/x/sys/unix\"\n)\n\nconst (\n\tblockDevice = \"b\"\n\tcharDevice  = \"c\" // or \"u\"\n\tfifoDevice  = \"p\"\n)\n\ntype deviceInfo struct {\n\t// cgroup properties\n\tdeviceType string\n\tmajor      int64\n\tminor      int64\n\n\t// device node properties\n\tfileMode os.FileMode\n}\n\n// deviceInfoFromPath takes the path to a device and returns its type,\n// major and minor device numbers.\n//\n// It was adapted from https://github.com/opencontainers/runc/blob/v1.1.9/libcontainer/devices/device_unix.go#L30-L69\nfunc deviceInfoFromPath(path string) (*deviceInfo, error) {\n\tvar stat unix.Stat_t\n\terr := unix.Lstat(path, &stat)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar devType string\n\tswitch stat.Mode & unix.S_IFMT {\n\tcase unix.S_IFBLK:\n\t\tdevType = blockDevice\n\tcase unix.S_IFCHR:\n\t\tdevType = charDevice\n\tcase unix.S_IFIFO:\n\t\tdevType = fifoDevice\n\tdefault:\n\t\treturn nil, errors.New(\"not a device node\")\n\t}\n\tdevNumber := uint64(stat.Rdev) //nolint:unconvert // Rdev is uint32 on e.g. MIPS.\n\n\tdi := deviceInfo{\n\t\tdeviceType: devType,\n\t\tmajor:      int64(unix.Major(devNumber)),\n\t\tminor:      int64(unix.Minor(devNumber)),\n\t\tfileMode:   os.FileMode(stat.Mode &^ unix.S_IFMT),\n\t}\n\n\treturn &di, nil\n}\n\n// fillMissingInfo fills in missing mandatory attributes from the host device.\nfunc (d *DeviceNode) fillMissingInfo() error {\n\thasMinimalSpecification := d.Type != \"\" && (d.Major != 0 || d.Type == fifoDevice)\n\n\t// Ensure that the host path and the container path match.\n\tif d.HostPath == \"\" {\n\t\td.HostPath = d.Path\n\t}\n\n\t// Try to extract the device info from the host path.\n\tdi, err := deviceInfoFromPath(d.HostPath)\n\tif err != nil {\n\t\t// The error is only considered fatal if the device is not already\n\t\t// minimally specified since it is allowed for a device vendor to fully\n\t\t// specify a device node specification.\n\t\tif !hasMinimalSpecification {\n\t\t\treturn fmt.Errorf(\"failed to stat CDI host device %q: %w\", d.HostPath, err)\n\t\t}\n\t\treturn nil\n\t}\n\n\t// Even for minimally-specified device nodes, we update the file mode if\n\t// required. This is useful for rootless containers where device node\n\t// requests may be treated as bind mounts.\n\tif d.FileMode == nil {\n\t\td.FileMode = &di.fileMode\n\t}\n\n\t// If the device is minimally specified, we make no further updates and\n\t// don't perform additional checks.\n\tif hasMinimalSpecification {\n\t\treturn nil\n\t}\n\n\tif d.Type == \"\" {\n\t\td.Type = di.deviceType\n\t}\n\tif d.Type != di.deviceType {\n\t\treturn fmt.Errorf(\"CDI device (%q, %q), host type mismatch (%s, %s)\",\n\t\t\td.Path, d.HostPath, d.Type, di.deviceType)\n\t}\n\n\t// For a fifoDevice, we do not update the major and minor number.\n\tif d.Type == fifoDevice {\n\t\treturn nil\n\t}\n\n\t// Update the major and minor number for the device node if required.\n\tif d.Major == 0 {\n\t\td.Major = di.major\n\t\td.Minor = di.minor\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/tags.cncf.io/container-device-interface/pkg/cdi/container-edits_windows.go",
    "content": "//go:build windows\n\n/*\n   Copyright © 2021 The CDI Authors\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\npackage cdi\n\nimport \"fmt\"\n\n// fillMissingInfo fills in missing mandatory attributes from the host device.\nfunc (d *DeviceNode) fillMissingInfo() error {\n\treturn fmt.Errorf(\"unimplemented\")\n}\n"
  },
  {
    "path": "vendor/tags.cncf.io/container-device-interface/pkg/cdi/default-cache.go",
    "content": "/*\n   Copyright © 2024 The CDI Authors\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\npackage cdi\n\nimport (\n\t\"sync\"\n\n\toci \"github.com/opencontainers/runtime-spec/specs-go\"\n)\n\nvar (\n\tdefaultCache   *Cache\n\tgetDefaultOnce sync.Once\n)\n\nfunc getOrCreateDefaultCache(options ...Option) (*Cache, bool) {\n\tvar created bool\n\tgetDefaultOnce.Do(func() {\n\t\tdefaultCache = newCache(options...)\n\t\tcreated = true\n\t})\n\treturn defaultCache, created\n}\n\n// GetDefaultCache returns the default CDI cache instance.\nfunc GetDefaultCache() *Cache {\n\tcache, _ := getOrCreateDefaultCache()\n\treturn cache\n}\n\n// Configure applies options to the default CDI cache. Updates and refreshes\n// the default cache if options are not empty.\nfunc Configure(options ...Option) error {\n\tcache, created := getOrCreateDefaultCache(options...)\n\tif len(options) == 0 || created {\n\t\treturn nil\n\t}\n\treturn cache.Configure(options...)\n}\n\n// Refresh explicitly refreshes the default CDI cache instance.\nfunc Refresh() error {\n\treturn GetDefaultCache().Refresh()\n}\n\n// InjectDevices injects the given qualified devices to the given OCI Spec.\n// using the default CDI cache instance to resolve devices.\nfunc InjectDevices(ociSpec *oci.Spec, devices ...string) ([]string, error) {\n\treturn GetDefaultCache().InjectDevices(ociSpec, devices...)\n}\n\n// GetErrors returns all errors encountered during the last refresh of\n// the default CDI cache instance.\nfunc GetErrors() map[string][]error {\n\treturn GetDefaultCache().GetErrors()\n}\n"
  },
  {
    "path": "vendor/tags.cncf.io/container-device-interface/pkg/cdi/device.go",
    "content": "/*\n   Copyright © 2021 The CDI Authors\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\npackage cdi\n\nimport (\n\t\"fmt\"\n\n\toci \"github.com/opencontainers/runtime-spec/specs-go\"\n\t\"tags.cncf.io/container-device-interface/internal/validation\"\n\t\"tags.cncf.io/container-device-interface/pkg/parser\"\n\tcdi \"tags.cncf.io/container-device-interface/specs-go\"\n)\n\n// Device represents a CDI device of a Spec.\ntype Device struct {\n\t*cdi.Device\n\tspec *Spec\n}\n\n// Create a new Device, associate it with the given Spec.\nfunc newDevice(spec *Spec, d cdi.Device) (*Device, error) {\n\tdev := &Device{\n\t\tDevice: &d,\n\t\tspec:   spec,\n\t}\n\n\tif err := dev.validate(); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn dev, nil\n}\n\n// GetSpec returns the Spec this device is defined in.\nfunc (d *Device) GetSpec() *Spec {\n\treturn d.spec\n}\n\n// GetQualifiedName returns the qualified name for this device.\nfunc (d *Device) GetQualifiedName() string {\n\treturn parser.QualifiedName(d.spec.GetVendor(), d.spec.GetClass(), d.Name)\n}\n\n// ApplyEdits applies the device-speific container edits to an OCI Spec.\nfunc (d *Device) ApplyEdits(ociSpec *oci.Spec) error {\n\treturn d.edits().Apply(ociSpec)\n}\n\n// edits returns the applicable container edits for this spec.\nfunc (d *Device) edits() *ContainerEdits {\n\treturn &ContainerEdits{&d.ContainerEdits}\n}\n\n// Validate the device.\nfunc (d *Device) validate() error {\n\tif err := parser.ValidateDeviceName(d.Name); err != nil {\n\t\treturn err\n\t}\n\tname := d.Name\n\tif d.spec != nil {\n\t\tname = d.GetQualifiedName()\n\t}\n\tif err := validation.ValidateSpecAnnotations(name, d.Annotations); err != nil {\n\t\treturn err\n\t}\n\tedits := d.edits()\n\tif edits.isEmpty() {\n\t\treturn fmt.Errorf(\"invalid device, empty device edits\")\n\t}\n\tif err := edits.Validate(); err != nil {\n\t\treturn fmt.Errorf(\"invalid device %q: %w\", d.Name, err)\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/tags.cncf.io/container-device-interface/pkg/cdi/doc.go",
    "content": "// Package cdi has the primary purpose of providing an API for\n// interacting with CDI and consuming CDI devices.\n//\n// For more information about Container Device Interface, please refer to\n// https://tags.cncf.io/container-device-interface\n//\n// # Container Device Interface\n//\n// Container Device Interface, or CDI for short, provides comprehensive\n// third party device support for container runtimes. CDI uses vendor\n// provided specification files, CDI Specs for short, to describe how a\n// container's runtime environment should be modified when one or more\n// of the vendor-specific devices is injected into the container. Beyond\n// describing the low level platform-specific details of how to gain\n// basic access to a device, CDI Specs allow more fine-grained device\n// initialization, and the automatic injection of any necessary vendor-\n// or device-specific software that might be required for a container\n// to use a device or take full advantage of it.\n//\n// In the CDI device model containers request access to a device using\n// fully qualified device names, qualified names for short, consisting of\n// a vendor identifier, a device class and a device name or identifier.\n// These pieces of information together uniquely identify a device among\n// all device vendors, classes and device instances.\n//\n// This package implements an API for easy consumption of CDI. The API\n// implements discovery, loading and caching of CDI Specs and injection\n// of CDI devices into containers. This is the most common functionality\n// the vast majority of CDI consumers need. The API should be usable both\n// by OCI runtime clients and runtime implementations.\n//\n// # Default CDI Cache\n//\n// There is a default CDI cache instance which is always implicitly\n// available and instantiated the first time it is referenced directly\n// or indirectly. The most frequently used cache functions are available\n// as identically named package level functions which operate on the\n// default cache instance.\n//\n// # Device Injection\n//\n// Using the Cache one can inject CDI devices into a container with code\n// similar to the following snippet:\n//\n//\timport (\n//\t    \"fmt\"\n//\t    \"strings\"\n//\n//\t    log \"github.com/sirupsen/logrus\"\n//\n//\t    \"tags.cncf.io/container-device-interface/pkg/cdi\"\n//\t    \"github.com/opencontainers/runtime-spec/specs-go\"\n//\t)\n//\n//\tfunc injectCDIDevices(spec *specs.Spec, devices []string) error {\n//\t    log.Debug(\"pristine OCI Spec: %s\", dumpSpec(spec))\n//\n//\t    cache := cdi.GetDefaultCache()\n//\t    unresolved, err := cache.InjectDevices(spec, devices)\n//\t    if err != nil {\n//\t        return fmt.Errorf(\"CDI device injection failed: %w\", err)\n//\t    }\n//\n//\t    log.Debug(\"CDI-updated OCI Spec: %s\", dumpSpec(spec))\n//\t    return nil\n//\t}\n//\n// # Cache Refresh\n//\n// By default the CDI Spec cache monitors the configured Spec directories\n// and automatically refreshes itself when necessary. This behavior can be\n// disabled using the WithAutoRefresh(false) option.\n//\n// Failure to set up monitoring for a Spec directory causes the directory to\n// get ignored and an error to be recorded among the Spec directory errors.\n// These errors can be queried using the GetSpecDirErrors() function. If the\n// error condition is transient, for instance a missing directory which later\n// gets created, the corresponding error will be removed once the condition\n// is over.\n//\n// With auto-refresh enabled injecting any CDI devices can be done without\n// an explicit call to Refresh(), using a code snippet similar to the\n// following:\n//\n// In a runtime implementation one typically wants to make sure the\n// CDI Spec cache is up to date before performing device injection.\n// A code snippet similar to the following accmplishes that:\n//\n//\timport (\n//\t    \"fmt\"\n//\t    \"strings\"\n//\n//\t    log \"github.com/sirupsen/logrus\"\n//\n//\t    \"tags.cncf.io/container-device-interface/pkg/cdi\"\n//\t    \"github.com/opencontainers/runtime-spec/specs-go\"\n//\t)\n//\n//\tfunc injectCDIDevices(spec *specs.Spec, devices []string) error {\n//\t    cache := cdi.GetDefaultCache()\n//\n//\t    if err := cache.Refresh(); err != nil {\n//\t        // Note:\n//\t        //   It is up to the implementation to decide whether\n//\t        //   to abort injection on errors. A failed Refresh()\n//\t        //   does not necessarily render the cache unusable.\n//\t        //   For instance, a parse error in a Spec file for\n//\t        //   vendor A does not have any effect on devices of\n//\t        //   vendor B...\n//\t        log.Warnf(\"pre-injection Refresh() failed: %v\", err)\n//\t    }\n//\n//\t    log.Debug(\"pristine OCI Spec: %s\", dumpSpec(spec))\n//\n//\t    unresolved, err := cache.InjectDevices(spec, devices)\n//\t    if err != nil {\n//\t        return fmt.Errorf(\"CDI device injection failed: %w\", err)\n//\t    }\n//\n//\t    log.Debug(\"CDI-updated OCI Spec: %s\", dumpSpec(spec))\n//\t    return nil\n//\t}\n//\n// # Generated Spec Files, Multiple Directories, Device Precedence\n//\n// It is often necessary to generate Spec files dynamically. On some\n// systems the available or usable set of CDI devices might change\n// dynamically which then needs to be reflected in CDI Specs. For\n// some device classes it makes sense to enumerate the available\n// devices at every boot and generate Spec file entries for each\n// device found. Some CDI devices might need special client- or\n// request-specific configuration which can only be fulfilled by\n// dynamically generated client-specific entries in transient Spec\n// files.\n//\n// CDI can collect Spec files from multiple directories. Spec files are\n// automatically assigned priorities according to which directory they\n// were loaded from. The later a directory occurs in the list of CDI\n// directories to scan, the higher priority Spec files loaded from that\n// directory are assigned to. When two or more Spec files define the\n// same device, conflict is resolved by choosing the definition from the\n// Spec file with the highest priority.\n//\n// The default CDI directory configuration is chosen to encourage\n// separating dynamically generated CDI Spec files from static ones.\n// The default directories are '/etc/cdi' and '/var/run/cdi'. By putting\n// dynamically generated Spec files under '/var/run/cdi', those take\n// precedence over static ones in '/etc/cdi'. With this scheme, static\n// Spec files, typically installed by distro-specific packages, go into\n// '/etc/cdi' while all the dynamically generated Spec files, transient\n// or other, go into '/var/run/cdi'.\n//\n// # Spec File Generation\n//\n// CDI offers two functions for writing and removing dynamically generated\n// Specs from CDI Spec directories. These functions, WriteSpec() and\n// RemoveSpec() implicitly follow the principle of separating dynamic Specs\n// from the rest and therefore always write to and remove Specs from the\n// last configured directory.\n//\n// Corresponding functions are also provided for generating names for Spec\n// files. These functions follow a simple naming convention to ensure that\n// multiple entities generating Spec files simultaneously on the same host\n// do not end up using conflicting Spec file names. GenerateSpecName(),\n// GenerateNameForSpec(), GenerateTransientSpecName(), and\n// GenerateTransientNameForSpec() all generate names which can be passed\n// as such to WriteSpec() and subsequently to RemoveSpec().\n//\n// Generating a Spec file for a vendor/device class can be done with a\n// code snippet similar to the following:\n//\n// import (\n//\n//\t\"fmt\"\n//\t...\n//\t\"tags.cncf.io/container-device-interface/specs-go\"\n//\t\"tags.cncf.io/container-device-interface/pkg/cdi\"\n//\n// )\n//\n//\tfunc generateDeviceSpecs() error {\n//\t    cache := specs.GetDefaultCache()\n//\t    spec := &specs.Spec{\n//\t        Version: specs.CurrentVersion,\n//\t        Kind:    vendor+\"/\"+class,\n//\t    }\n//\n//\t    for _, dev := range enumerateDevices() {\n//\t        spec.Devices = append(spec.Devices, specs.Device{\n//\t            Name: dev.Name,\n//\t            ContainerEdits: getContainerEditsForDevice(dev),\n//\t        })\n//\t    }\n//\n//\t    specName, err := cdi.GenerateNameForSpec(spec)\n//\t    if err != nil {\n//\t        return fmt.Errorf(\"failed to generate Spec name: %w\", err)\n//\t    }\n//\n//\t    return cache.WriteSpec(spec, specName)\n//\t}\n//\n// Similarly, generating and later cleaning up transient Spec files can be\n// done with code fragments similar to the following. These transient Spec\n// files are temporary Spec files with container-specific parametrization.\n// They are typically created before the associated container is created\n// and removed once that container is removed.\n//\n// import (\n//\n//\t\"fmt\"\n//\t...\n//\t\"tags.cncf.io/container-device-interface/specs-go\"\n//\t\"tags.cncf.io/container-device-interface/pkg/cdi\"\n//\n// )\n//\n//\tfunc generateTransientSpec(ctr Container) error {\n//\t    cache := specs.GetDefaultCache()\n//\t    devices := getContainerDevs(ctr, vendor, class)\n//\t    spec := &specs.Spec{\n//\t        Version: specs.CurrentVersion,\n//\t        Kind:    vendor+\"/\"+class,\n//\t    }\n//\n//\t    for _, dev := range devices {\n//\t        spec.Devices = append(spec.Devices, specs.Device{\n//\t            // the generated name needs to be unique within the\n//\t            // vendor/class domain on the host/node.\n//\t            Name: generateUniqueDevName(dev, ctr),\n//\t            ContainerEdits: getEditsForContainer(dev),\n//\t        })\n//\t    }\n//\n//\t    // transientID is expected to guarantee that the Spec file name\n//\t    // generated using <vendor, class, transientID> is unique within\n//\t    // the host/node. If more than one device is allocated with the\n//\t    // same vendor/class domain, either all generated Spec entries\n//\t    // should go to a single Spec file (like in this sample snippet),\n//\t    // or transientID should be unique for each generated Spec file.\n//\t    transientID := getSomeSufficientlyUniqueIDForContainer(ctr)\n//\t    specName, err := cdi.GenerateNameForTransientSpec(vendor, class, transientID)\n//\t    if err != nil {\n//\t        return fmt.Errorf(\"failed to generate Spec name: %w\", err)\n//\t    }\n//\n//\t    return cache.WriteSpec(spec, specName)\n//\t}\n//\n//\tfunc removeTransientSpec(ctr Container) error {\n//\t    cache := specs.GetDefaultCache()\n//\t    transientID := getSomeSufficientlyUniqueIDForContainer(ctr)\n//\t    specName := cdi.GenerateNameForTransientSpec(vendor, class, transientID)\n//\n//\t    return cache.RemoveSpec(specName)\n//\t}\n//\n// # CDI Spec Validation\n//\n// This package performs both syntactic and semantic validation of CDI\n// Spec file data when a Spec file is loaded via the cache or using\n// the ReadSpec API function. As part of the semantic verification, the\n// Spec file is verified against the CDI Spec JSON validation schema.\n//\n// If a valid externally provided JSON validation schema is found in\n// the filesystem at /etc/cdi/schema/schema.json it is loaded and used\n// as the default validation schema. If such a file is not found or\n// fails to load, an embedded no-op schema is used.\n//\n// The used validation schema can also be changed programmatically using\n// the SetSchema API convenience function. This function also accepts\n// the special \"builtin\" (BuiltinSchemaName) and \"none\" (NoneSchemaName)\n// schema names which switch the used schema to the in-repo validation\n// schema embedded into the binary or the now default no-op schema\n// correspondingly. Other names are interpreted as the path to the actual\n// validation schema to load and use.\npackage cdi\n"
  },
  {
    "path": "vendor/tags.cncf.io/container-device-interface/pkg/cdi/oci.go",
    "content": "/*\nCopyright © 2021 The CDI Authors\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n\thttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\npackage cdi\n\nimport (\n\tspec \"github.com/opencontainers/runtime-spec/specs-go\"\n)\n\n// toOCI returns the opencontainers runtime Spec Hook for this Hook.\nfunc (h *Hook) toOCI() spec.Hook {\n\treturn spec.Hook{\n\t\tPath:    h.Path,\n\t\tArgs:    h.Args,\n\t\tEnv:     h.Env,\n\t\tTimeout: h.Timeout,\n\t}\n}\n\n// toOCI returns the opencontainers runtime Spec Mount for this Mount.\nfunc (m *Mount) toOCI() spec.Mount {\n\treturn spec.Mount{\n\t\tSource:      m.HostPath,\n\t\tDestination: m.ContainerPath,\n\t\tOptions:     m.Options,\n\t\tType:        m.Type,\n\t}\n}\n\n// toOCI returns the opencontainers runtime Spec LinuxDevice for this DeviceNode.\nfunc (d *DeviceNode) toOCI() spec.LinuxDevice {\n\treturn spec.LinuxDevice{\n\t\tPath:     d.Path,\n\t\tType:     d.Type,\n\t\tMajor:    d.Major,\n\t\tMinor:    d.Minor,\n\t\tFileMode: d.FileMode,\n\t\tUID:      d.UID,\n\t\tGID:      d.GID,\n\t}\n}\n\n// toOCI returns the opencontainers runtime Spec LinuxIntelRdt for this IntelRdt config.\nfunc (i *IntelRdt) toOCI() *spec.LinuxIntelRdt {\n\treturn &spec.LinuxIntelRdt{\n\t\tClosID:           i.ClosID,\n\t\tL3CacheSchema:    i.L3CacheSchema,\n\t\tMemBwSchema:      i.MemBwSchema,\n\t\tSchemata:         i.Schemata,\n\t\tEnableMonitoring: i.EnableMonitoring,\n\t}\n}\n\n// toOCI returns the opencontainers runtime Spec LinuxNetDevice for this LinuxNetDevice.\nfunc (d *LinuxNetDevice) toOCI() *spec.LinuxNetDevice {\n\treturn &spec.LinuxNetDevice{\n\t\tName: d.Name,\n\t}\n}\n"
  },
  {
    "path": "vendor/tags.cncf.io/container-device-interface/pkg/cdi/spec-dirs.go",
    "content": "/*\n   Copyright © 2021 The CDI Authors\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\npackage cdi\n\nimport (\n\t\"errors\"\n\t\"io/fs\"\n\t\"os\"\n\t\"path/filepath\"\n)\n\nconst (\n\t// DefaultStaticDir is the default directory for static CDI Specs.\n\tDefaultStaticDir = \"/etc/cdi\"\n\t// DefaultDynamicDir is the default directory for generated CDI Specs\n\tDefaultDynamicDir = \"/var/run/cdi\"\n)\n\nvar (\n\t// DefaultSpecDirs is the default Spec directory configuration.\n\t// While altering this variable changes the package defaults,\n\t// the preferred way of overriding the default directories is\n\t// to use a WithSpecDirs options. Otherwise the change is only\n\t// effective if it takes place before creating the cache instance.\n\tDefaultSpecDirs = []string{DefaultStaticDir, DefaultDynamicDir}\n\t// ErrStopScan can be returned from a ScanSpecFunc to stop the scan.\n\tErrStopScan = errors.New(\"stop Spec scan\")\n)\n\n// WithSpecDirs returns an option to override the CDI Spec directories.\nfunc WithSpecDirs(dirs ...string) Option {\n\treturn func(c *Cache) {\n\t\tspecDirs := make([]string, len(dirs))\n\t\tfor i, dir := range dirs {\n\t\t\tspecDirs[i] = filepath.Clean(dir)\n\t\t}\n\t\tc.specDirs = specDirs\n\t}\n}\n\n// scanSpecFunc is a function for processing CDI Spec files.\ntype scanSpecFunc func(string, int, *Spec, error) error\n\n// ScanSpecDirs scans the given directories looking for CDI Spec files,\n// which are all files with a '.json' or '.yaml' suffix. For every Spec\n// file discovered, ScanSpecDirs loads a Spec from the file then calls\n// the scan function passing it the path to the file, the priority (the\n// index of the directory in the slice of directories given), the Spec\n// itself, and any error encountered while loading the Spec.\n//\n// Scanning stops once all files have been processed or when the scan\n// function returns an error. The result of ScanSpecDirs is the error\n// returned by the scan function, if any. The special error ErrStopScan\n// can be used to terminate the scan gracefully without ScanSpecDirs\n// returning an error. ScanSpecDirs silently skips any subdirectories.\nfunc scanSpecDirs(dirs []string, scanFn scanSpecFunc) error {\n\tvar (\n\t\tspec *Spec\n\t\terr  error\n\t)\n\n\tfor priority, dir := range dirs {\n\t\terr = filepath.Walk(dir, func(path string, info os.FileInfo, err error) error {\n\t\t\t// for initial stat failure Walk calls us with nil info\n\t\t\tif info == nil {\n\t\t\t\tif errors.Is(err, fs.ErrNotExist) {\n\t\t\t\t\treturn nil\n\t\t\t\t}\n\t\t\t\treturn err\n\t\t\t}\n\t\t\t// first call from Walk is for dir itself, others we skip\n\t\t\tif info.IsDir() {\n\t\t\t\tif path == dir {\n\t\t\t\t\treturn nil\n\t\t\t\t}\n\t\t\t\treturn filepath.SkipDir\n\t\t\t}\n\n\t\t\t// ignore obviously non-Spec files\n\t\t\tif ext := filepath.Ext(path); ext != \".json\" && ext != \".yaml\" {\n\t\t\t\treturn nil\n\t\t\t}\n\n\t\t\tif err != nil {\n\t\t\t\treturn scanFn(path, priority, nil, err)\n\t\t\t}\n\n\t\t\tspec, err = ReadSpec(path, priority)\n\t\t\treturn scanFn(path, priority, spec, err)\n\t\t})\n\n\t\tif err != nil && err != ErrStopScan {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/tags.cncf.io/container-device-interface/pkg/cdi/spec.go",
    "content": "/*\n   Copyright © 2021 The CDI Authors\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\npackage cdi\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"sync\"\n\n\toci \"github.com/opencontainers/runtime-spec/specs-go\"\n\torderedyaml \"gopkg.in/yaml.v3\"\n\t\"sigs.k8s.io/yaml\"\n\n\t\"tags.cncf.io/container-device-interface/internal/validation\"\n\t\"tags.cncf.io/container-device-interface/pkg/parser\"\n\tcdi \"tags.cncf.io/container-device-interface/specs-go\"\n)\n\nconst (\n\t// defaultSpecExt is the file extension for the default encoding.\n\tdefaultSpecExt = \".yaml\"\n)\n\ntype validator interface {\n\tValidate(*cdi.Spec) error\n}\n\nvar (\n\t// Externally set CDI Spec validation function.\n\tspecValidator validator\n\tvalidatorLock sync.RWMutex\n)\n\n// Spec represents a single CDI Spec. It is usually loaded from a\n// file and stored in a cache. The Spec has an associated priority.\n// This priority is inherited from the associated priority of the\n// CDI Spec directory that contains the CDI Spec file and is used\n// to resolve conflicts if multiple CDI Spec files contain entries\n// for the same fully qualified device.\ntype Spec struct {\n\t*cdi.Spec\n\tvendor   string\n\tclass    string\n\tpath     string\n\tpriority int\n\tdevices  map[string]*Device\n}\n\n// ReadSpec reads the given CDI Spec file. The resulting Spec is\n// assigned the given priority. If reading or parsing the Spec\n// data fails ReadSpec returns a nil Spec and an error.\nfunc ReadSpec(path string, priority int) (*Spec, error) {\n\tdata, err := os.ReadFile(path)\n\tswitch {\n\tcase os.IsNotExist(err):\n\t\treturn nil, err\n\tcase err != nil:\n\t\treturn nil, fmt.Errorf(\"failed to read CDI Spec %q: %w\", path, err)\n\t}\n\n\traw, err := ParseSpec(data)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to parse CDI Spec %q: %w\", path, err)\n\t}\n\tif raw == nil {\n\t\treturn nil, fmt.Errorf(\"failed to parse CDI Spec %q, no Spec data\", path)\n\t}\n\n\tspec, err := newSpec(raw, path, priority)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn spec, nil\n}\n\n// newSpec creates a new Spec from the given CDI Spec data. The\n// Spec is marked as loaded from the given path with the given\n// priority. If Spec data validation fails newSpec returns a nil\n// Spec and an error.\nfunc newSpec(raw *cdi.Spec, path string, priority int) (*Spec, error) {\n\terr := validateSpec(raw)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tspec := &Spec{\n\t\tSpec:     raw,\n\t\tpath:     filepath.Clean(path),\n\t\tpriority: priority,\n\t}\n\n\tif ext := filepath.Ext(spec.path); ext != \".yaml\" && ext != \".json\" {\n\t\tspec.path += defaultSpecExt\n\t}\n\n\tspec.vendor, spec.class = parser.ParseQualifier(spec.Kind)\n\n\tif spec.devices, err = spec.validate(); err != nil {\n\t\treturn nil, fmt.Errorf(\"invalid CDI Spec: %w\", err)\n\t}\n\n\treturn spec, nil\n}\n\n// Write the CDI Spec to the file associated with it during instantiation\n// by newSpec() or ReadSpec().\nfunc (s *Spec) write(overwrite bool) error {\n\tvar (\n\t\tdata []byte\n\t\tdir  string\n\t\ttmp  *os.File\n\t\terr  error\n\t)\n\n\terr = validateSpec(s.Spec)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif filepath.Ext(s.path) == \".yaml\" {\n\t\tdata, err = orderedyaml.Marshal(s.Spec)\n\t\tdata = append([]byte(\"---\\n\"), data...)\n\t} else {\n\t\tdata, err = json.Marshal(s.Spec)\n\t}\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to marshal Spec file: %w\", err)\n\t}\n\n\tdir = filepath.Dir(s.path)\n\terr = os.MkdirAll(dir, 0o755)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to create Spec dir: %w\", err)\n\t}\n\n\ttmp, err = os.CreateTemp(dir, \"spec.*.tmp\")\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to create Spec file: %w\", err)\n\t}\n\t_, err = tmp.Write(data)\n\t_ = tmp.Close()\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to write Spec file: %w\", err)\n\t}\n\n\terr = renameIn(dir, filepath.Base(tmp.Name()), filepath.Base(s.path), overwrite)\n\n\tif err != nil {\n\t\t_ = os.Remove(tmp.Name())\n\t\terr = fmt.Errorf(\"failed to write Spec file: %w\", err)\n\t}\n\n\treturn err\n}\n\n// GetVendor returns the vendor of this Spec.\nfunc (s *Spec) GetVendor() string {\n\treturn s.vendor\n}\n\n// GetClass returns the device class of this Spec.\nfunc (s *Spec) GetClass() string {\n\treturn s.class\n}\n\n// GetDevice returns the device for the given unqualified name.\nfunc (s *Spec) GetDevice(name string) *Device {\n\treturn s.devices[name]\n}\n\n// GetPath returns the filesystem path of this Spec.\nfunc (s *Spec) GetPath() string {\n\treturn s.path\n}\n\n// GetPriority returns the priority of this Spec.\nfunc (s *Spec) GetPriority() int {\n\treturn s.priority\n}\n\n// ApplyEdits applies the Spec's global-scope container edits to an OCI Spec.\nfunc (s *Spec) ApplyEdits(ociSpec *oci.Spec) error {\n\treturn s.edits().Apply(ociSpec)\n}\n\n// edits returns the applicable global container edits for this spec.\nfunc (s *Spec) edits() *ContainerEdits {\n\treturn &ContainerEdits{&s.ContainerEdits}\n}\n\n// MinimumRequiredVersion determines the minimum spec version for the input spec.\n// Deprecated: use cdi.MinimumRequiredVersion instead\nfunc MinimumRequiredVersion(spec *cdi.Spec) (string, error) {\n\treturn cdi.MinimumRequiredVersion(spec)\n}\n\n// Validate the Spec.\nfunc (s *Spec) validate() (map[string]*Device, error) {\n\tif err := cdi.ValidateVersion(s.Spec); err != nil {\n\t\treturn nil, err\n\t}\n\tif err := parser.ValidateVendorName(s.vendor); err != nil {\n\t\treturn nil, err\n\t}\n\tif err := parser.ValidateClassName(s.class); err != nil {\n\t\treturn nil, err\n\t}\n\tif err := validation.ValidateSpecAnnotations(s.Kind, s.Annotations); err != nil {\n\t\treturn nil, err\n\t}\n\tif err := s.edits().Validate(); err != nil {\n\t\treturn nil, err\n\t}\n\n\tdevices := make(map[string]*Device)\n\tfor _, d := range s.Devices {\n\t\tdev, err := newDevice(s, d)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed add device %q: %w\", d.Name, err)\n\t\t}\n\t\tif _, conflict := devices[d.Name]; conflict {\n\t\t\treturn nil, fmt.Errorf(\"invalid spec, multiple device %q\", d.Name)\n\t\t}\n\t\tdevices[d.Name] = dev\n\t}\n\tif len(devices) == 0 {\n\t\treturn nil, fmt.Errorf(\"invalid spec, no devices\")\n\t}\n\n\treturn devices, nil\n}\n\n// ParseSpec parses CDI Spec data into a raw CDI Spec.\nfunc ParseSpec(data []byte) (*cdi.Spec, error) {\n\tvar raw *cdi.Spec\n\terr := yaml.UnmarshalStrict(data, &raw)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to unmarshal CDI Spec: %w\", err)\n\t}\n\treturn raw, nil\n}\n\n// SetSpecValidator sets a CDI Spec validator function. This function\n// is used for extra CDI Spec content validation whenever a Spec file\n// loaded (using ReadSpec() or written (using WriteSpec()).\nfunc SetSpecValidator(v validator) {\n\tvalidatorLock.Lock()\n\tdefer validatorLock.Unlock()\n\tspecValidator = v\n}\n\n// validateSpec validates the Spec using the external validator.\nfunc validateSpec(raw *cdi.Spec) error {\n\tvalidatorLock.RLock()\n\tdefer validatorLock.RUnlock()\n\n\tif specValidator == nil {\n\t\treturn nil\n\t}\n\terr := specValidator.Validate(raw)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"Spec validation failed: %w\", err)\n\t}\n\treturn nil\n}\n\n// GenerateSpecName generates a vendor+class scoped Spec file name. The\n// name can be passed to WriteSpec() to write a Spec file to the file\n// system.\n//\n// vendor and class should match the vendor and class of the CDI Spec.\n// The file name is generated without a \".json\" or \".yaml\" extension.\n// The caller can append the desired extension to choose a particular\n// encoding. Otherwise WriteSpec() will use its default encoding.\n//\n// This function always returns the same name for the same vendor/class\n// combination. Therefore it cannot be used as such to generate multiple\n// Spec file names for a single vendor and class.\nfunc GenerateSpecName(vendor, class string) string {\n\treturn vendor + \"-\" + class\n}\n\n// GenerateTransientSpecName generates a vendor+class scoped transient\n// Spec file name. The name can be passed to WriteSpec() to write a Spec\n// file to the file system.\n//\n// Transient Specs are those whose lifecycle is tied to that of some\n// external entity, for instance a container. vendor and class should\n// match the vendor and class of the CDI Spec. transientID should be\n// unique among all CDI users on the same host that might generate\n// transient Spec files using the same vendor/class combination. If\n// the external entity to which the lifecycle of the transient Spec\n// is tied to has a unique ID of its own, then this is usually a\n// good choice for transientID.\n//\n// The file name is generated without a \".json\" or \".yaml\" extension.\n// The caller can append the desired extension to choose a particular\n// encoding. Otherwise WriteSpec() will use its default encoding.\nfunc GenerateTransientSpecName(vendor, class, transientID string) string {\n\ttransientID = strings.ReplaceAll(transientID, \"/\", \"_\")\n\treturn GenerateSpecName(vendor, class) + \"_\" + transientID\n}\n\n// GenerateNameForSpec generates a name for the given Spec using\n// GenerateSpecName with the vendor and class taken from the Spec.\n// On success it returns the generated name and a nil error. If\n// the Spec does not contain a valid vendor or class, it returns\n// an empty name and a non-nil error.\nfunc GenerateNameForSpec(raw *cdi.Spec) (string, error) {\n\tvendor, class := parser.ParseQualifier(raw.Kind)\n\tif vendor == \"\" {\n\t\treturn \"\", fmt.Errorf(\"invalid vendor/class %q in Spec\", raw.Kind)\n\t}\n\n\treturn GenerateSpecName(vendor, class), nil\n}\n\n// GenerateNameForTransientSpec generates a name for the given transient\n// Spec using GenerateTransientSpecName with the vendor and class taken\n// from the Spec. On success it returns the generated name and a nil error.\n// If the Spec does not contain a valid vendor or class, it returns an\n// an empty name and a non-nil error.\nfunc GenerateNameForTransientSpec(raw *cdi.Spec, transientID string) (string, error) {\n\tvendor, class := parser.ParseQualifier(raw.Kind)\n\tif vendor == \"\" {\n\t\treturn \"\", fmt.Errorf(\"invalid vendor/class %q in Spec\", raw.Kind)\n\t}\n\n\treturn GenerateTransientSpecName(vendor, class, transientID), nil\n}\n"
  },
  {
    "path": "vendor/tags.cncf.io/container-device-interface/pkg/cdi/spec_linux.go",
    "content": "/*\n   Copyright © 2022 The CDI Authors\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\npackage cdi\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\n\t\"golang.org/x/sys/unix\"\n)\n\n// Rename src to dst, both relative to the directory dir. If dst already exists\n// refuse renaming with an error unless overwrite is explicitly asked for.\nfunc renameIn(dir, src, dst string, overwrite bool) error {\n\tvar flags uint\n\n\tdirf, err := os.Open(dir)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"rename failed: %w\", err)\n\t}\n\tdefer func() {\n\t\t_ = dirf.Close()\n\t}()\n\n\tif !overwrite {\n\t\tflags = unix.RENAME_NOREPLACE\n\t}\n\n\tdirFd := int(dirf.Fd())\n\terr = unix.Renameat2(dirFd, src, dirFd, dst, flags)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"rename failed: %w\", err)\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/tags.cncf.io/container-device-interface/pkg/cdi/spec_other.go",
    "content": "//go:build !linux\n\n/*\n   Copyright © 2022 The CDI Authors\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\npackage cdi\n\nimport (\n\t\"os\"\n\t\"path/filepath\"\n)\n\n// Rename src to dst, both relative to the directory dir. If dst already exists\n// refuse renaming with an error unless overwrite is explicitly asked for.\nfunc renameIn(dir, src, dst string, overwrite bool) error {\n\tsrc = filepath.Join(dir, src)\n\tdst = filepath.Join(dir, dst)\n\n\t_, err := os.Stat(dst)\n\tif err == nil && !overwrite {\n\t\treturn os.ErrExist\n\t}\n\n\treturn os.Rename(src, dst)\n}\n"
  },
  {
    "path": "vendor/tags.cncf.io/container-device-interface/pkg/parser/parser.go",
    "content": "/*\n   Copyright © The CDI Authors\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\npackage parser\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n)\n\n// QualifiedName returns the qualified name for a device.\n// The syntax for a qualified device names is\n//\n//\t\"<vendor>/<class>=<name>\".\n//\n// A valid vendor and class name may contain the following runes:\n//\n//\t'A'-'Z', 'a'-'z', '0'-'9', '.', '-', '_'.\n//\n// A valid device name may contain the following runes:\n//\n//\t'A'-'Z', 'a'-'z', '0'-'9', '-', '_', '.', ':'\nfunc QualifiedName(vendor, class, name string) string {\n\treturn vendor + \"/\" + class + \"=\" + name\n}\n\n// IsQualifiedName tests if a device name is qualified.\nfunc IsQualifiedName(device string) bool {\n\t_, _, _, err := ParseQualifiedName(device)\n\treturn err == nil\n}\n\n// ParseQualifiedName splits a qualified name into device vendor, class,\n// and name. If the device fails to parse as a qualified name, or if any\n// of the split components fail to pass syntax validation, vendor and\n// class are returned as empty, together with the verbatim input as the\n// name and an error describing the reason for failure.\nfunc ParseQualifiedName(device string) (string, string, string, error) {\n\tvendor, class, name := ParseDevice(device)\n\n\tif vendor == \"\" {\n\t\treturn \"\", \"\", device, fmt.Errorf(\"unqualified device %q, missing vendor\", device)\n\t}\n\tif class == \"\" {\n\t\treturn \"\", \"\", device, fmt.Errorf(\"unqualified device %q, missing class\", device)\n\t}\n\tif name == \"\" {\n\t\treturn \"\", \"\", device, fmt.Errorf(\"unqualified device %q, missing device name\", device)\n\t}\n\n\tif err := ValidateVendorName(vendor); err != nil {\n\t\treturn \"\", \"\", device, fmt.Errorf(\"invalid device %q: %w\", device, err)\n\t}\n\tif err := ValidateClassName(class); err != nil {\n\t\treturn \"\", \"\", device, fmt.Errorf(\"invalid device %q: %w\", device, err)\n\t}\n\tif err := ValidateDeviceName(name); err != nil {\n\t\treturn \"\", \"\", device, fmt.Errorf(\"invalid device %q: %w\", device, err)\n\t}\n\n\treturn vendor, class, name, nil\n}\n\n// ParseDevice tries to split a device name into vendor, class, and name.\n// If this fails, for instance in the case of unqualified device names,\n// ParseDevice returns an empty vendor and class together with name set\n// to the verbatim input.\nfunc ParseDevice(device string) (string, string, string) {\n\tif device == \"\" || device[0] == '/' {\n\t\treturn \"\", \"\", device\n\t}\n\n\tparts := strings.SplitN(device, \"=\", 2)\n\tif len(parts) != 2 || parts[0] == \"\" || parts[1] == \"\" {\n\t\treturn \"\", \"\", device\n\t}\n\n\tname := parts[1]\n\tvendor, class := ParseQualifier(parts[0])\n\tif vendor == \"\" {\n\t\treturn \"\", \"\", device\n\t}\n\n\treturn vendor, class, name\n}\n\n// ParseQualifier splits a device qualifier into vendor and class.\n// The syntax for a device qualifier is\n//\n//\t\"<vendor>/<class>\"\n//\n// If parsing fails, an empty vendor and the class set to the\n// verbatim input is returned.\nfunc ParseQualifier(kind string) (string, string) {\n\tparts := strings.SplitN(kind, \"/\", 2)\n\tif len(parts) != 2 || parts[0] == \"\" || parts[1] == \"\" {\n\t\treturn \"\", kind\n\t}\n\treturn parts[0], parts[1]\n}\n\n// ValidateVendorName checks the validity of a vendor name.\n// A vendor name may contain the following ASCII characters:\n//   - upper- and lowercase letters ('A'-'Z', 'a'-'z')\n//   - digits ('0'-'9')\n//   - underscore, dash, and dot ('_', '-', and '.')\nfunc ValidateVendorName(vendor string) error {\n\terr := validateVendorOrClassName(vendor)\n\tif err != nil {\n\t\terr = fmt.Errorf(\"invalid vendor. %w\", err)\n\t}\n\treturn err\n}\n\n// ValidateClassName checks the validity of class name.\n// A class name may contain the following ASCII characters:\n//   - upper- and lowercase letters ('A'-'Z', 'a'-'z')\n//   - digits ('0'-'9')\n//   - underscore, dash, and dot ('_', '-', and '.')\nfunc ValidateClassName(class string) error {\n\terr := validateVendorOrClassName(class)\n\tif err != nil {\n\t\terr = fmt.Errorf(\"invalid class. %w\", err)\n\t}\n\treturn err\n}\n\n// validateVendorOrClassName checks the validity of vendor or class name.\n// A name may contain the following ASCII characters:\n//   - upper- and lowercase letters ('A'-'Z', 'a'-'z')\n//   - digits ('0'-'9')\n//   - underscore, dash, and dot ('_', '-', and '.')\nfunc validateVendorOrClassName(name string) error {\n\tif name == \"\" {\n\t\treturn fmt.Errorf(\"empty name\")\n\t}\n\tif !IsLetter(rune(name[0])) {\n\t\treturn fmt.Errorf(\"%q, should start with letter\", name)\n\t}\n\tfor _, c := range string(name[1 : len(name)-1]) {\n\t\tswitch {\n\t\tcase IsAlphaNumeric(c):\n\t\tcase c == '_' || c == '-' || c == '.':\n\t\tdefault:\n\t\t\treturn fmt.Errorf(\"invalid character '%c' in name %q\",\n\t\t\t\tc, name)\n\t\t}\n\t}\n\tif !IsAlphaNumeric(rune(name[len(name)-1])) {\n\t\treturn fmt.Errorf(\"%q, should end with a letter or digit\", name)\n\t}\n\n\treturn nil\n}\n\n// ValidateDeviceName checks the validity of a device name.\n// A device name may contain the following ASCII characters:\n//   - upper- and lowercase letters ('A'-'Z', 'a'-'z')\n//   - digits ('0'-'9')\n//   - underscore, dash, dot, colon ('_', '-', '.', ':')\nfunc ValidateDeviceName(name string) error {\n\tif name == \"\" {\n\t\treturn fmt.Errorf(\"invalid (empty) device name\")\n\t}\n\tif !IsAlphaNumeric(rune(name[0])) {\n\t\treturn fmt.Errorf(\"invalid class %q, should start with a letter or digit\", name)\n\t}\n\tif len(name) == 1 {\n\t\treturn nil\n\t}\n\tfor _, c := range string(name[1 : len(name)-1]) {\n\t\tswitch {\n\t\tcase IsAlphaNumeric(c):\n\t\tcase c == '_' || c == '-' || c == '.' || c == ':':\n\t\tdefault:\n\t\t\treturn fmt.Errorf(\"invalid character '%c' in device name %q\",\n\t\t\t\tc, name)\n\t\t}\n\t}\n\tif !IsAlphaNumeric(rune(name[len(name)-1])) {\n\t\treturn fmt.Errorf(\"invalid name %q, should end with a letter or digit\", name)\n\t}\n\treturn nil\n}\n\n// IsLetter reports whether the rune is a letter.\nfunc IsLetter(c rune) bool {\n\treturn ('A' <= c && c <= 'Z') || ('a' <= c && c <= 'z')\n}\n\n// IsDigit reports whether the rune is a digit.\nfunc IsDigit(c rune) bool {\n\treturn '0' <= c && c <= '9'\n}\n\n// IsAlphaNumeric reports whether the rune is a letter or digit.\nfunc IsAlphaNumeric(c rune) bool {\n\treturn IsLetter(c) || IsDigit(c)\n}\n"
  },
  {
    "path": "vendor/tags.cncf.io/container-device-interface/specs-go/LICENSE",
    "content": "                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "vendor/tags.cncf.io/container-device-interface/specs-go/config.go",
    "content": "package specs\n\nimport \"os\"\n\n// Spec is the base configuration for CDI\ntype Spec struct {\n\tVersion string `json:\"cdiVersion\" yaml:\"cdiVersion\"`\n\tKind    string `json:\"kind\"       yaml:\"kind\"`\n\t// Annotations add meta information per CDI spec. Note these are CDI-specific and do not affect container metadata.\n\t// Added in v0.6.0.\n\tAnnotations    map[string]string `json:\"annotations,omitempty\"    yaml:\"annotations,omitempty\"`\n\tDevices        []Device          `json:\"devices\"                  yaml:\"devices\"`\n\tContainerEdits ContainerEdits    `json:\"containerEdits,omitempty\" yaml:\"containerEdits,omitempty\"`\n}\n\n// Device is a \"Device\" a container runtime can add to a container\ntype Device struct {\n\tName string `json:\"name\" yaml:\"name\"`\n\t// Annotations add meta information per device. Note these are CDI-specific and do not affect container metadata.\n\t// Added in v0.6.0.\n\tAnnotations    map[string]string `json:\"annotations,omitempty\" yaml:\"annotations,omitempty\"`\n\tContainerEdits ContainerEdits    `json:\"containerEdits\"        yaml:\"containerEdits\"`\n}\n\n// ContainerEdits are edits a container runtime must make to the OCI spec to expose the device.\ntype ContainerEdits struct {\n\tEnv            []string          `json:\"env,omitempty\"            yaml:\"env,omitempty\"`\n\tDeviceNodes    []*DeviceNode     `json:\"deviceNodes,omitempty\"    yaml:\"deviceNodes,omitempty\"`\n\tNetDevices     []*LinuxNetDevice `json:\"netDevices,omitempty\"     yaml:\"netDevices,omitempty\"` // Added in v1.1.0\n\tHooks          []*Hook           `json:\"hooks,omitempty\"          yaml:\"hooks,omitempty\"`\n\tMounts         []*Mount          `json:\"mounts,omitempty\"         yaml:\"mounts,omitempty\"`\n\tIntelRdt       *IntelRdt         `json:\"intelRdt,omitempty\"       yaml:\"intelRdt,omitempty\"`       // Added in v0.7.0\n\tAdditionalGIDs []uint32          `json:\"additionalGids,omitempty\" yaml:\"additionalGids,omitempty\"` // Added in v0.7.0\n}\n\n// DeviceNode represents a device node that needs to be added to the OCI spec.\ntype DeviceNode struct {\n\tPath        string       `json:\"path\"                  yaml:\"path\"`\n\tHostPath    string       `json:\"hostPath,omitempty\"    yaml:\"hostPath,omitempty\"` // Added in v0.5.0\n\tType        string       `json:\"type,omitempty\"        yaml:\"type,omitempty\"`\n\tMajor       int64        `json:\"major,omitempty\"       yaml:\"major,omitempty\"`\n\tMinor       int64        `json:\"minor,omitempty\"       yaml:\"minor,omitempty\"`\n\tFileMode    *os.FileMode `json:\"fileMode,omitempty\"    yaml:\"fileMode,omitempty\"`\n\tPermissions string       `json:\"permissions,omitempty\" yaml:\"permissions,omitempty\"`\n\tUID         *uint32      `json:\"uid,omitempty\"         yaml:\"uid,omitempty\"`\n\tGID         *uint32      `json:\"gid,omitempty\"         yaml:\"gid,omitempty\"`\n}\n\n// Mount represents a mount that needs to be added to the OCI spec.\ntype Mount struct {\n\tHostPath      string   `json:\"hostPath\"          yaml:\"hostPath\"`\n\tContainerPath string   `json:\"containerPath\"     yaml:\"containerPath\"`\n\tOptions       []string `json:\"options,omitempty\" yaml:\"options,omitempty\"`\n\tType          string   `json:\"type,omitempty\"    yaml:\"type,omitempty\"` // Added in v0.4.0\n}\n\n// Hook represents a hook that needs to be added to the OCI spec.\ntype Hook struct {\n\tHookName string   `json:\"hookName\"          yaml:\"hookName\"`\n\tPath     string   `json:\"path\"              yaml:\"path\"`\n\tArgs     []string `json:\"args,omitempty\"    yaml:\"args,omitempty\"`\n\tEnv      []string `json:\"env,omitempty\"     yaml:\"env,omitempty\"`\n\tTimeout  *int     `json:\"timeout,omitempty\" yaml:\"timeout,omitempty\"`\n}\n\n// IntelRdt describes the Linux IntelRdt parameters to set in the OCI spec.\ntype IntelRdt struct {\n\tClosID           string   `json:\"closID,omitempty\"           yaml:\"closID,omitempty\"`\n\tL3CacheSchema    string   `json:\"l3CacheSchema,omitempty\"    yaml:\"l3CacheSchema,omitempty\"`\n\tMemBwSchema      string   `json:\"memBwSchema,omitempty\"      yaml:\"memBwSchema,omitempty\"`\n\tSchemata         []string `json:\"schemata,omitempty\"         yaml:\"schemata,omitempty\"`         // Added in v1.1.0.\n\tEnableMonitoring bool     `json:\"enableMonitoring,omitempty\" yaml:\"enableMonitoring,omitempty\"` // Added in v1.1.0.\n}\n\n// LinuxNetDevice represents an OCI LinuxNetDevice to be added to the OCI Spec.\ntype LinuxNetDevice struct {\n\tHostInterfaceName string `json:\"hostInterfaceName\" yaml:\"hostInterfaceName\"`\n\tName              string `json:\"name\"   yaml:\"name\"`\n}\n"
  },
  {
    "path": "vendor/tags.cncf.io/container-device-interface/specs-go/version.go",
    "content": "/*\n   Copyright © The CDI Authors\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\npackage specs\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\t\"golang.org/x/mod/semver\"\n)\n\nconst (\n\t// CurrentVersion is the current version of the Spec.\n\tCurrentVersion = \"1.1.0\"\n\n\t// vCurrent is the current version as a semver-comparable type\n\tvCurrent version = \"v\" + CurrentVersion\n\n\t// These represent the released versions of the CDI specification\n\tv010 version = \"v0.1.0\"\n\tv020 version = \"v0.2.0\"\n\tv030 version = \"v0.3.0\"\n\tv040 version = \"v0.4.0\"\n\tv050 version = \"v0.5.0\"\n\tv060 version = \"v0.6.0\"\n\tv070 version = \"v0.7.0\"\n\tv080 version = \"v0.8.0\"\n\tv100 version = \"v1.0.0\"\n\tv110 version = \"v1.1.0\"\n\n\t// vEarliest is the earliest supported version of the CDI specification\n\tvEarliest version = v030\n)\n\n// validSpecVersions stores a map of spec versions to functions to check the required versions.\n// Adding new fields / spec versions requires that a `requiredFunc` be implemented and\n// this map be updated.\nvar validSpecVersions = requiredVersionMap{\n\tv010: nil,\n\tv020: nil,\n\tv030: nil,\n\tv040: requiresV040,\n\tv050: requiresV050,\n\tv060: requiresV060,\n\tv070: requiresV070,\n\tv080: requiresV080,\n\tv100: requiresV100,\n\tv110: requiresV110,\n}\n\n// ValidateVersion checks whether the specified spec version is valid.\n// In addition to checking whether the spec version is in the set of known versions,\n// the spec is inspected to determine whether the features used are available in specified\n// version.\nfunc ValidateVersion(spec *Spec) error {\n\tif !validSpecVersions.isValidVersion(spec.Version) {\n\t\treturn fmt.Errorf(\"invalid version %q\", spec.Version)\n\t}\n\tminVersion, err := MinimumRequiredVersion(spec)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"could not determine minimum required version: %w\", err)\n\t}\n\tif newVersion(minVersion).isGreaterThan(newVersion(spec.Version)) {\n\t\treturn fmt.Errorf(\"the spec version must be at least v%v\", minVersion)\n\t}\n\treturn nil\n}\n\n// MinimumRequiredVersion determines the minimum spec version for the input spec.\nfunc MinimumRequiredVersion(spec *Spec) (string, error) {\n\tminVersion := validSpecVersions.requiredVersion(spec)\n\treturn minVersion.String(), nil\n}\n\n// version represents a semantic version string\ntype version string\n\n// newVersion creates a version that can be used for semantic version comparisons.\nfunc newVersion(v string) version {\n\treturn version(\"v\" + strings.TrimPrefix(v, \"v\"))\n}\n\n// String returns the string representation of the version.\n// This trims a leading v if present.\nfunc (v version) String() string {\n\treturn strings.TrimPrefix(string(v), \"v\")\n}\n\n// isGreaterThan checks with a version is greater than the specified version.\nfunc (v version) isGreaterThan(o version) bool {\n\treturn semver.Compare(string(v), string(o)) > 0\n}\n\n// isLatest checks whether the version is the latest supported version\nfunc (v version) isLatest() bool {\n\treturn v == vCurrent\n}\n\ntype requiredFunc func(*Spec) bool\n\ntype requiredVersionMap map[version]requiredFunc\n\n// isValidVersion checks whether the specified version is valid.\n// A version is valid if it is contained in the required version map.\nfunc (r requiredVersionMap) isValidVersion(specVersion string) bool {\n\t_, ok := validSpecVersions[newVersion(specVersion)]\n\n\treturn ok\n}\n\n// requiredVersion returns the minimum version required for the given spec\nfunc (r requiredVersionMap) requiredVersion(spec *Spec) version {\n\tminVersion := vEarliest\n\n\tfor v, isRequired := range validSpecVersions {\n\t\tif isRequired == nil {\n\t\t\tcontinue\n\t\t}\n\t\tif isRequired(spec) && v.isGreaterThan(minVersion) {\n\t\t\tminVersion = v\n\t\t}\n\t\t// If we have already detected the latest version then no later version could be detected\n\t\tif minVersion.isLatest() {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn minVersion\n}\n\n// requiresV110 returns true if the spec uses v1.1.0 features.\nfunc requiresV110(spec *Spec) bool {\n\tif i := spec.ContainerEdits.IntelRdt; i != nil {\n\t\tif i.Schemata != nil || i.EnableMonitoring {\n\t\t\treturn true\n\t\t}\n\t}\n\n\tif len(spec.ContainerEdits.NetDevices) > 0 {\n\t\treturn true\n\t}\n\n\tfor _, dev := range spec.Devices {\n\t\tif i := dev.ContainerEdits.IntelRdt; i != nil {\n\t\t\tif i.Schemata != nil || i.EnableMonitoring {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\n\t\tif len(dev.ContainerEdits.NetDevices) > 0 {\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn false\n}\n\n// requiresV100 returns true if the spec uses v1.0.0 features.\n// Since the v1.0.0 spec bump was due to moving the minimum version checks to\n// the spec package, there are no explicit spec changes.\nfunc requiresV100(_ *Spec) bool {\n\treturn false\n}\n\n// requiresV080 returns true if the spec uses v0.8.0 features.\n// Since the v0.8.0 spec bump was due to the removed .ToOCI functions on the\n// spec types, there are no explicit spec changes.\nfunc requiresV080(_ *Spec) bool {\n\treturn false\n}\n\n// requiresV070 returns true if the spec uses v0.7.0 features\nfunc requiresV070(spec *Spec) bool {\n\tif spec.ContainerEdits.IntelRdt != nil {\n\t\treturn true\n\t}\n\t// The v0.7.0 spec allows additional GIDs to be specified at a spec level.\n\tif len(spec.ContainerEdits.AdditionalGIDs) > 0 {\n\t\treturn true\n\t}\n\n\tfor _, d := range spec.Devices {\n\t\tif d.ContainerEdits.IntelRdt != nil {\n\t\t\treturn true\n\t\t}\n\t\t// The v0.7.0 spec allows additional GIDs to be specified at a device level.\n\t\tif len(d.ContainerEdits.AdditionalGIDs) > 0 {\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn false\n}\n\n// requiresV060 returns true if the spec uses v0.6.0 features\nfunc requiresV060(spec *Spec) bool {\n\t// The v0.6.0 spec allows annotations to be specified at a spec level\n\tfor range spec.Annotations {\n\t\treturn true\n\t}\n\n\t// The v0.6.0 spec allows annotations to be specified at a device level\n\tfor _, d := range spec.Devices {\n\t\tfor range d.Annotations {\n\t\t\treturn true\n\t\t}\n\t}\n\n\t// The v0.6.0 spec allows dots \".\" in Kind name label (class)\n\tif !strings.Contains(spec.Kind, \"/\") {\n\t\treturn false\n\t}\n\tclass := strings.SplitN(spec.Kind, \"/\", 2)[1]\n\treturn strings.Contains(class, \".\")\n}\n\n// requiresV050 returns true if the spec uses v0.5.0 features\nfunc requiresV050(spec *Spec) bool {\n\tvar edits []*ContainerEdits\n\n\tfor _, d := range spec.Devices {\n\t\t// The v0.5.0 spec allowed device name to start with a digit\n\t\tif len(d.Name) > 0 && '0' <= d.Name[0] && d.Name[0] <= '9' {\n\t\t\treturn true\n\t\t}\n\t\tedits = append(edits, &d.ContainerEdits)\n\t}\n\n\tedits = append(edits, &spec.ContainerEdits)\n\tfor _, e := range edits {\n\t\tfor _, dn := range e.DeviceNodes {\n\t\t\t// The HostPath field was added in v0.5.0\n\t\t\tif dn.HostPath != \"\" {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t}\n\treturn false\n}\n\n// requiresV040 returns true if the spec uses v0.4.0 features\nfunc requiresV040(spec *Spec) bool {\n\tvar edits []*ContainerEdits\n\n\tfor _, d := range spec.Devices {\n\t\tedits = append(edits, &d.ContainerEdits)\n\t}\n\n\tedits = append(edits, &spec.ContainerEdits)\n\tfor _, e := range edits {\n\t\tfor _, m := range e.Mounts {\n\t\t\t// The Type field was added in v0.4.0\n\t\t\tif m.Type != \"\" {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "versions.mk",
    "content": "# Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nLIB_NAME := nvidia-container-toolkit\nLIB_VERSION := 1.19.0\nLIB_TAG :=\n\n# The package version is the combination of the library version and tag.\n# If the tag is specified the two components are joined with a tilde (~).\nPACKAGE_VERSION := $(LIB_VERSION)$(if $(LIB_TAG),~$(LIB_TAG))\nPACKAGE_REVISION := 1\n\nGOLANG_VERSION := $(shell ./hack/golang-version.sh)\n\nBUILDIMAGE_TAG ?= devel-go$(GOLANG_VERSION)\nBUILDIMAGE ?=  $(LIB_NAME):$(BUILDIMAGE_TAG)\n\nGIT_COMMIT ?= $(shell git describe --match=\"\" --dirty --long --always --abbrev=40 2> /dev/null || echo \"\")\nGIT_COMMIT_SHORT ?= $(shell git rev-parse --short HEAD 2> /dev/null || echo \"\")\nGIT_BRANCH ?= $(shell git rev-parse --abbrev-ref HEAD 2> /dev/null || echo \"${GIT_COMMIT}\")\nSOURCE_DATE_EPOCH ?= $(shell git log -1 --format=%ct  2> /dev/null || echo \"\")\n\nifeq ($(IMAGE_NAME),)\nREGISTRY ?= nvidia\nIMAGE_NAME := $(REGISTRY)/container-toolkit\nendif\n\nVERSION ?= $(LIB_VERSION)$(if $(LIB_TAG),-$(LIB_TAG))\n"
  }
]